%global appLoc; /** * The appLoc represents the metadata or SAS Drive location of the app you * are about to deploy * * To set an alternative appLoc, simply populate the appLoc variable prior * to running this program, eg: * * %let apploc=/my/apploc; * %inc thisfile; * * Do NOT change compiled_apploc - it is not the deploy location, it is the * appLoc that was baked into the frontend files at build time. It is used * by the swap= parameter of %mv_createfile to rewrite that string to the * runtime appLoc when streaming web (html/css/js) files are uploaded. * Changing it breaks dynamic appLoc switching (no strings will match). * */ %let compiled_apploc=/Public/app/dcplaceholder; %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 mp_abort(mac=mp_abort.sas, 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; end; /* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES sessions provide only _METAUSER) - guard it separately or SYMGET raises "Invalid argument" and pollutes SYSERRORTEXT inside the very abort JSON we are writing here. */ if symexist('_metaperson') then do; _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(symget('syserrortext')); if findc(syserrortext,'"\'!!'0A0D09000E0F010210111A'x) then do; syserrortext='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ prxchange('s/\x0D/\r/',-1, /* carriage return */ prxchange('s/\x09/\\t/',-1, /* tab */ prxchange('s/\x00/\\u0000/',-1, /* NUL */ prxchange('s/\x0E/\\u000E/',-1, /* SS */ prxchange('s/\x0F/\\u000F/',-1, /* SF */ prxchange('s/\x01/\\u0001/',-1, /* SOH */ prxchange('s/\x02/\\u0002/',-1, /* STX */ prxchange('s/\x10/\\u0010/',-1, /* DLE */ prxchange('s/\x11/\\u0011/',-1, /* DC1 */ prxchange('s/\x1A/\\u001A/',-1, /* SUB */ prxchange('s/\\/\\\\/',-1,syserrortext) )))))))))))))!!'"'; end; else syserrortext=cats('"',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(symget('syswarningtext')); if findc(syswarningtext,'"\'!!'0A0D09000E0F010210111A'x) then do; syswarningtext='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ prxchange('s/\x0D/\r/',-1, /* carriage return */ prxchange('s/\x09/\\t/',-1, /* tab */ prxchange('s/\x00/\\u0000/',-1, /* NUL */ prxchange('s/\x0E/\\u000E/',-1, /* SS */ prxchange('s/\x0F/\\u000F/',-1, /* SF */ prxchange('s/\x01/\\u0001/',-1, /* SOH */ prxchange('s/\x02/\\u0002/',-1, /* STX */ prxchange('s/\x10/\\u0010/',-1, /* DLE */ prxchange('s/\x11/\\u0011/',-1, /* DC1 */ prxchange('s/\x1A/\\u001A/',-1, /* SUB */ prxchange('s/\\/\\\\/',-1,syswarningtext) )))))))))))))!!'"'; end; else syswarningtext=cats('"',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_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 mf_getuniquelibref(prefix=mc); %local x maxtries; %if ( %length(&prefix) gt 7 ) %then %do; %put %str(ERR)OR: The prefix parameter cannot exceed 7 characters.; 0 %return; %end; %else %if (%sysfunc(NVALID(&prefix,v7))=0) %then %do; %put %str(ERR)OR: Invalid prefix (&prefix); 0 %return; %end; /* Set maxtries equal to '10 to the power of [# unused characters] - 1' */ %let maxtries=%eval(10**(8-%length(&prefix))-1); %do x = 0 %to &maxtries; %if %sysfunc(libref(&prefix&x)) ne 0 %then %do; &prefix&x %return; %end; %let x = %eval(&x + 1); %end; %put %str(ERR)OR: No usable libref in range &prefix.0-&maxtries; %put %str(ERR)OR- Try reducing the prefix or deleting some libraries!; 0 %mend mf_getuniquelibref; %macro mf_isblank(param )/*/STORE SOURCE*/; %sysevalf(%superq(param)=,boolean) %mend mf_isblank; %macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1) )/des='ungraceful abort' /*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 mfv_getpathuri(filepath )/*/STORE SOURCE*/; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot enter &sysmacroname with syscc=&syscc ) %local fref rc path name var /* var is used to avoid delete timing issue */; %let fref=%mf_getuniquefileref(); %let name=%scan(&filepath,-1,/); %let path=%substr(&filepath,1,%length(&filepath)-%length(&name)-1); %if %sysfunc(filename(fref,,filesrvc,folderPath="&path" filename="&name"))=0 %then %do; %let var=_FILESRVC_&fref._URI; %str(&&&var) %let rc=%sysfunc(filename(fref)); %symdel &var; %end; %else %do; %put &sysmacroname: did not find &filepath; %let syscc=0; %end; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot leave &sysmacroname with syscc=&syscc ) %mend mfv_getpathuri; %macro mf_mval(var); %if %symexist(&var) %then %do; %superq(&var) %end; %mend mf_mval; %macro mf_trimstr(basestr,trimstr); %local baselen trimlen trimval; /* return if basestr is shorter than trimstr (or 0) */ %let baselen=%length(%superq(basestr)); %let trimlen=%length(%superq(trimstr)); %if &baselen < &trimlen or &baselen=0 %then %return; /* obtain the characters from the end of basestr */ %let trimval=%qsubstr(%superq(basestr) ,%length(%superq(basestr))-&trimlen+1 ,&trimlen); /* compare and if matching, chop it off! */ %if %superq(basestr)=%superq(trimstr) %then %do; %return; %end; %else %if %superq(trimval)=%superq(trimstr) %then %do; %qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen) %end; %else %do; &basestr %end; %mend mf_trimstr; %macro mf_getplatform(switch )/*/STORE SOURCE*/; %local a b c; %if &switch.NONE=NONE %then %do; %if %symexist(sasjsprocessmode) %then %do; %if &sasjsprocessmode=Stored Program %then %do; SASJS %return; %end; %end; %if %symexist(sysprocessmode) %then %do; %if "&sysprocessmode"="SAS Object Server" or "&sysprocessmode"= "SAS Compute Server" %then %do; SASVIYA %end; %else %if "&sysprocessmode"="SAS Stored Process Server" or "&sysprocessmode"="SAS Workspace Server" %then %do; SASMETA %return; %end; %else %do; BASESAS %return; %end; %end; %else %if %symexist(_metaport) or %symexist(_metauser) %then %do; SASMETA %return; %end; %else %do; BASESAS %return; %end; %end; %else %if &switch=SASSTUDIO %then %do; /* return the version of SAS Studio else 0 */ %if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do; %let a=%mf_mval(_CLIENTVERSION); %let b=%scan(&a,1,.); %if %eval(&b >2) %then %do; &b %end; %else 0; %end; %else 0; %end; %else %if &switch=VIYARESTAPI %then %do; %mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/) %end; %mend mf_getplatform; %macro mfv_existfolder(path )/*/STORE SOURCE*/; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot enter mfv_existfolder.sas with syscc=&syscc ) %local fref rc var; %let fref=%mf_getuniquefileref(); %if %sysfunc(filename(fref,,filesrvc,folderPath="&path"))=0 %then %do; 1 %let var=_FILESRVC_&fref._URI; %let rc=%sysfunc(filename(fref)); %symdel &var; %end; %else %do; 0 %let syscc=0; %end; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot leave mfv_existfolder.sas with syscc=&syscc ) %mend mfv_existfolder; %macro mv_createfolder(path= ,access_token_var=ACCESS_TOKEN ,grant_type=sas_services ,mdebug=0 ,outds=_null_ ); %local dbg; %if &mdebug=1 %then %do; %put &sysmacroname entry vars:; %put _local_; %end; %else %let dbg=*; %mp_abort( iftrue=(&syscc ne 0), msg=Cannot enter &sysmacroname with syscc=&syscc ) %if %mfv_existfolder(&path)=1 %then %do; %&dbg.put &sysmacroname: &path already exists; data &outds; self_uri="%mfv_getpathuri(&path)"; output; stop; run; %return; %end; %mp_abort(iftrue=(&syscc ne 0),msg=syscc=&syscc when folder checking) %local oauth_bearer; %if &grant_type=detect %then %do; %if %symexist(&access_token_var) %then %let grant_type=authorization_code; %else %let grant_type=sas_services; %end; %if &grant_type=sas_services %then %do; %let oauth_bearer=oauth_bearer=sas_services; %let &access_token_var=; %end; %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password and &grant_type ne sas_services ) ,mac=&sysmacroname ,msg=%str(Invalid value for grant_type: &grant_type) ) %mp_abort(iftrue=(%mf_isblank(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) %mp_abort(iftrue=(%length(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) options noquotelenmax; %local subfolder_cnt; /* determine the number of subfolders */ %let subfolder_cnt=%sysfunc(countw(&path,/)); %local base_uri; /* location of rest apis */ %let base_uri=%mf_getplatform(VIYARESTAPI); %local href; /* resource address (none for root) */ %let href="&base_uri/folders/folders?parentFolderUri=/folders/folders/none"; %local x newpath subfolder; %do x=1 %to &subfolder_cnt; %let subfolder=%scan(&path,&x,%str(/)); %let newpath=&newpath/&subfolder; %local fname1; %let fname1=%mf_getuniquefileref(); %put &sysmacroname checking to see if &newpath exists; proc http method='GET' out=&fname1 &oauth_bearer url="&base_uri/folders/folders/@item?path=&newpath"; %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %if &SYS_PROCHTTP_STATUS_CODE=401 %then %do; /* relates to: https://github.com/sasjs/core/issues/400 */ %put 401 thrown in &sysmacroname; %put sleeping: %sysfunc(sleep(12,1)) secs - will try again; proc http method='GET' out=&fname1 &oauth_bearer url="&base_uri/folders/folders/@item?path=&newpath"; %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %end; %local libref1; %let libref1=%mf_getuniquelibref(); libname &libref1 JSON fileref=&fname1; %mp_abort( iftrue=( &SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 404 ) ,mac=mv_createfolder124 ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %if &mdebug=1 %then %do; %put &sysmacroname following check to see if &newpath exists:; %put _local_; data _null_; infile &fname1; input; putlog _infile_; run; %end; %if &SYS_PROCHTTP_STATUS_CODE=200 %then %do; data _null_; set &libref1..links; if rel='createChild' then call symputx('href',quote(cats("&base_uri",href)),'l'); run; %end; %else %if &SYS_PROCHTTP_STATUS_CODE=404 %then %do; %put &sysmacroname &newpath not found - creating it now; %local fname2; %let fname2=%mf_getuniquefileref(); data _null_; length json $1000; json=cats("'" ,'{"name":' ,quote(trim(symget('subfolder'))) ,',"description":' ,quote("&subfolder, created by &sysmacroname") ,',"type":"folder"}' ,"'" ); call symputx('json',json,'l'); run; proc http method='POST' in=&json out=&fname2 &oauth_bearer url=%unquote(%superq(href)); headers %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; 'Content-Type'='application/vnd.sas.content.folder+json' 'Accept'='application/vnd.sas.content.folder+json'; run; %if &SYS_PROCHTTP_STATUS_CODE ne 201 %then %do; %put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %end; %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) ,mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %local libref2; %let libref2=%mf_getuniquelibref(); libname &libref2 JSON fileref=&fname2; %put &sysmacroname &newpath now created. Grabbing the follow on link ; data &outds; set &libref2..links; if rel='createChild' then do; call symputx('href',quote(cats("&base_uri",href)),'l'); &dbg put (_all_)(=); end; if method='GET' and rel='self' then do; self_uri=uri; output; end; keep self_uri ; run; libname &libref2 clear; filename &fname2 clear; %end; filename &fname1 clear; libname &libref1 clear; %end; %mp_abort( iftrue=(&syscc ne 0), msg=Cannot leave &sysmacroname with syscc=&syscc ) %mend mv_createfolder; %macro mv_deletejes(path= ,name= ,access_token_var=ACCESS_TOKEN ,grant_type=sas_services ); %local oauth_bearer; %if &grant_type=detect %then %do; %if %symexist(&access_token_var) %then %let grant_type=authorization_code; %else %let grant_type=sas_services; %end; %if &grant_type=sas_services %then %do; %let oauth_bearer=oauth_bearer=sas_services; %let &access_token_var=; %end; %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password and &grant_type ne sas_services ) ,mac=&sysmacroname ,msg=%str(Invalid value for grant_type: &grant_type) ) %mp_abort(iftrue=(%mf_isblank(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) %mp_abort(iftrue=(%mf_isblank(&name)=1) ,mac=&sysmacroname ,msg=%str(name value must be provided) ) %mp_abort(iftrue=(%length(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) options noquotelenmax; %local base_uri; /* location of rest apis */ %let base_uri=%mf_getplatform(VIYARESTAPI); /* fetch the members of the folder to get the uri */ %local fname1; %let fname1=%mf_getuniquefileref(); proc http method='GET' out=&fname1 &oauth_bearer url="&base_uri/folders/folders/@item?path=&path"; %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %if &SYS_PROCHTTP_STATUS_CODE=404 %then %do; %put &sysmacroname: Folder &path NOT FOUND - nothing to delete!; %return; %end; %else %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do; /*data _null_;infile &fname1;input;putlog _infile_;run;*/ %mp_abort(mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %end; /* grab the follow on link */ %local libref1; %let libref1=%mf_getuniquelibref(); libname &libref1 JSON fileref=&fname1; data _null_; set &libref1..links; if rel='members' then call symputx('mref',quote("&base_uri"!!trim(href)),'l'); run; /* get the children */ %local fname1a; %let fname1a=%mf_getuniquefileref(); proc http method='GET' out=&fname1a &oauth_bearer url=%unquote(%superq(mref)); %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do; %put &=sysmacroname &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %end; %local libref1a; %let libref1a=%mf_getuniquelibref(); libname &libref1a JSON fileref=&fname1a; %local uri found; %let found=0; /* %put Getting object uri from &libref1a..items; */ data _null_; length contenttype name uri $1000; call missing(of _all_); set &libref1a..items; if contenttype='jobDefinition' and upcase(name)="%upcase(&name)" then do; call symputx('uri',cats("&base_uri",uri),'l'); call symputx('found',1,'l'); end; run; %if &found=0 %then %do; %put NOTE:;%put NOTE- &sysmacroname: &path/&name NOT FOUND;%put NOTE- ; %return; %end; proc http method="DELETE" url="&uri" &oauth_bearer; headers %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; "Accept"="*/*";/**/ run; %if &SYS_PROCHTTP_STATUS_CODE ne 204 %then %do; data _null_; infile &fname2; input; putlog _infile_;run; %mp_abort(mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %end; %else %put &sysmacroname: &path/&name deleted; /* clear refs */ filename &fname1 clear; libname &libref1 clear; filename &fname1a clear; libname &libref1a clear; %mend mv_deletejes; %macro mf_getuniquename(prefix=MC); &prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix)) %mend mf_getuniquename; %macro mf_mimetype( ext )/*/STORE SOURCE*/ /minoperator mindelimiter=' '; %let ext=%lowcase(&ext); %if &ext in (sas txt text conf def list log) %then %do;%str(text/plain)%end; %else %if &ext=xlsx %then %do; %str(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)%end; %else %if &ext in (xls xlm xla xlc xlt xlw) %then %do;%str(application/vnd.ms-excel)%end; %else %if &ext=xlsm %then %do;%str(application/vnd.ms-excel.sheet.macroenabled.12)%end; %else %if &ext=xlsb %then %do;%str(application/vnd.ms-excel.sheet.binary.macroenabled.12)%end; %else %if &ext in (css csv html n3 sgml vcard) %then %do;%str(text/&ext)%end; %else %if &ext in (avif bmp cgm gif ief jxl ktx png sgi tiff webp) %then %do;%str(image/&ext)%end; %else %if &ext in (exi gxf ipfix json mbox mp21 mxf oda oxps pdf rtf sdp wasm xml yang zip) %then %do;%str(application/&ext)%end; %else %if &ext in (jpeg jpg jpe) %then %do;%str(image/jpeg)%end; %else %if &ext in (mp4 mp4v mpg4) %then %do;%str(video/mp4)%end; %else %if &ext in (otf ttf woff woff2) %then %do;%str(font/&ext)%end; %else %if &ext in (mpeg mpg mpe m1v m2v) %then %do;%str(video/mpeg)%end; %else %if &ext in (h261 h263 h264 jpm mj2 webm) %then %do;%str(video/&ext)%end; %else %if &ext in (f4v fli flv m4v mng smv) %then %do;%str(video/x-&ext)%end; %else %if &ext in (3ds cmx pcx rgb tga) %then %do;%str(image/x-&ext)%end; %else %if &ext in (asm nfo opml sfv) %then %do;%str(text/x-&ext)%end; %else %if &ext in (aac caf flac wav) %then %do;%str(audio/x-&ext)%end; %else %if &ext in (ts m2t m2ts mts) %then %do;%str(video/mp2t)%end; %else %if &ext in (pfa pfb pfm afm) %then %do;%str(application/x-font-type1)%end; %else %if &ext in (oga ogg spx opus) %then %do;%str(audio/ogg)%end; %else %if &ext in (mid midi kar rmi) %then %do;%str(audio/midi)%end; %else %if &ext in (onetoc onetoc2 onetmp onepkg) %then %do;%str(application/onenote)%end; %else %if &ext in (mxml xhvml xvml xvm) %then %do;%str(application/xv+xml)%end; %else %if &ext in (f for f77 f90) %then %do;%str(text/x-fortran)%end; %else %if &ext in (wmf wmz emf emz) %then %do;%str(application/x-msmetafile)%end; %else %if &ext in (exe dll com bat msi) %then %do;%str(application/x-msdownload)%end; %else %if &ext in (bin dms lrf mar so dist distz pkg bpk dump elc deploy) %then %do;%str(application/octet-stream)%end; %else %if &ext in (atom atomcat atomsvc ccxml davmount emma gml gpx inkml mads mathml metalink mets mods omdoc pls rdf rsd rss sbml shf smil sru ssdl ssml tei wsdl wspolicy xaml xenc xhtml xop xslt xspf yin) %then %do;%str(application/&ext+xml)%end; %else %if &ext in (dir dcr dxr cst cct cxt w3d fgd swa) %then %do;%str(application/x-director)%end; %else %if &ext in (z1 z2 z3 z4 z5 z6 z7 z8) %then %do;%str(application/x-zmachine)%end; %else %if &ext in (c cc cxx cpp h hh dic) %then %do;%str(text/x-c)%end; %else %if &ext in (mpga mp2 mp2a mp3 m2a m3a) %then %do;%str(audio/mpeg)%end; %else %if &ext in (t tr roff man me ms) %then %do;%str(text/troff)%end; %else %if &ext in (cbr cba cbt cbz cb7) %then %do;%str(application/x-cbr)%end; %else %if &ext in (fh fhc fh4 fh5 fh7) %then %do;%str(image/x-freehand)%end; %else %if &ext in (aab x32 u32 vox) %then %do;%str(application/x-authorware-bin)%end; %else %if &ext in (uvi uvvi uvg uvvg) %then %do;%str(image/vnd.dece.graphic)%end; %else %if &ext in (cdx cif cmdf cml csml xyz) %then %do;%str(chemical/x-&ext)%end; %else %if &ext in (aif aiff aifc) %then %do;%str(audio/x-aiff)%end; %else %if &ext in (ma nb mb) %then %do;%str(application/mathematica)%end; %else %if &ext in (mvb m13 m14) %then %do;%str(application/x-msmediaview)%end; %else %if &ext in (msh mesh silo) %then %do;%str(model/mesh)%end; %else %if &ext in (uri uris urls) %then %do;%str(text/uri-list)%end; %else %if &ext in (mkv mk3d mks) %then %do;%str(video/x-matroska)%end; %else %if &ext=ez %then %do;%str(application/andrew-inset)%end; %else %if &ext=aw %then %do;%str(application/applixware)%end; %else %if &ext=cdmia %then %do;%str(application/cdmi-capability)%end; %else %if &ext=cdmic %then %do;%str(application/cdmi-container)%end; %else %if &ext=cdmid %then %do;%str(application/cdmi-domain)%end; %else %if &ext=cdmio %then %do;%str(application/cdmi-object)%end; %else %if &ext=cdmiq %then %do;%str(application/cdmi-queue)%end; %else %if &ext=cu %then %do;%str(application/cu-seeme)%end; %else %if &ext=dssc %then %do;%str(application/dssc+der)%end; %else %if &ext=xdssc %then %do;%str(application/dssc+xml)%end; %else %if &ext=ecma %then %do;%str(application/ecmascript)%end; %else %if &ext=epub %then %do;%str(application/epub+zip)%end; %else %if &ext=pfr %then %do;%str(application/font-tdpfr)%end; %else %if &ext=stk %then %do;%str(application/hyperstudio)%end; %else %if &ext=ink %then %do;%str(application/inkml+xml)%end; %else %if &ext=jar %then %do;%str(application/java-archive)%end; %else %if &ext=ser %then %do;%str(application/java-serialized-object)%end; %else %if &ext=class %then %do;%str(application/java-vm)%end; %else %if &ext=jsonml %then %do;%str(application/jsonml+json)%end; %else %if &ext=lostxml %then %do;%str(application/lost+xml)%end; %else %if &ext=hqx %then %do;%str(application/mac-binhex40)%end; %else %if &ext=cpt %then %do;%str(application/mac-compactpro)%end; %else %if &ext=mrc %then %do;%str(application/marc)%end; %else %if &ext=mrcx %then %do;%str(application/marcxml+xml)%end; %else %if &ext=mscml %then %do;%str(application/mediaservercontrol+xml)%end; %else %if &ext=meta4 %then %do;%str(application/metalink4+xml)%end; %else %if &ext=m21 %then %do;%str(application/mp21)%end; %else %if &ext=mp4s %then %do;%str(application/mp4)%end; %else %if &ext=doc %then %do;%str(application/msword)%end; %else %if &ext=dot %then %do;%str(application/msword)%end; %else %if &ext=opf %then %do;%str(application/oebps-package+xml)%end; %else %if &ext=ogx %then %do;%str(application/ogg)%end; %else %if &ext=xer %then %do;%str(application/patch-ops-error+xml)%end; %else %if &ext=pgp %then %do;%str(application/pgp-encrypted)%end; %else %if &ext=asc %then %do;%str(application/pgp-signature)%end; %else %if &ext=sig %then %do;%str(application/pgp-signature)%end; %else %if &ext=prf %then %do;%str(application/pics-rules)%end; %else %if &ext=p10 %then %do;%str(application/pkcs10)%end; %else %if &ext=p7m %then %do;%str(application/pkcs7-mime)%end; %else %if &ext=p7c %then %do;%str(application/pkcs7-mime)%end; %else %if &ext=p7s %then %do;%str(application/pkcs7-signature)%end; %else %if &ext=p8 %then %do;%str(application/pkcs8)%end; %else %if &ext=ac %then %do;%str(application/pkix-attr-cert)%end; %else %if &ext=cer %then %do;%str(application/pkix-cert)%end; %else %if &ext=crl %then %do;%str(application/pkix-crl)%end; %else %if &ext=pkipath %then %do;%str(application/pkix-pkipath)%end; %else %if &ext=pki %then %do;%str(application/pkixcmp)%end; %else %if &ext=cww %then %do;%str(application/prs.cww)%end; %else %if &ext=pskcxml %then %do;%str(application/pskc+xml)%end; %else %if &ext=rif %then %do;%str(application/reginfo+xml)%end; %else %if &ext=rnc %then %do;%str(application/relax-ng-compact-syntax)%end; %else %if &ext=rld %then %do;%str(application/resource-lists-diff+xml)%end; %else %if &ext=rl %then %do;%str(application/resource-lists+xml)%end; %else %if &ext=gbr %then %do;%str(application/rpki-ghostbusters)%end; %else %if &ext=mft %then %do;%str(application/rpki-manifest)%end; %else %if &ext=roa %then %do;%str(application/rpki-roa)%end; %else %if &ext=scq %then %do;%str(application/scvp-cv-request)%end; %else %if &ext=scs %then %do;%str(application/scvp-cv-response)%end; %else %if &ext=spq %then %do;%str(application/scvp-vp-request)%end; %else %if &ext=spp %then %do;%str(application/scvp-vp-response)%end; %else %if &ext=setpay %then %do;%str(application/set-payment-initiation)%end; %else %if &ext=setreg %then %do;%str(application/set-registration-initiation)%end; %else %if &ext=smi %then %do;%str(application/smil+xml)%end; %else %if &ext=rq %then %do;%str(application/sparql-query)%end; %else %if &ext=srx %then %do;%str(application/sparql-results+xml)%end; %else %if &ext=gram %then %do;%str(application/srgs)%end; %else %if &ext=grxml %then %do;%str(application/srgs+xml)%end; %else %if &ext=teicorpus %then %do;%str(application/tei+xml)%end; %else %if &ext=tfi %then %do;%str(application/thraud+xml)%end; %else %if &ext=tsd %then %do;%str(application/timestamped-data)%end; %else %if &ext=vxml %then %do;%str(application/voicexml+xml)%end; %else %if &ext=wgt %then %do;%str(application/widget)%end; %else %if &ext=hlp %then %do;%str(application/winhlp)%end; %else %if &ext=7z %then %do;%str(application/x-7z-compressed)%end; %else %if &ext=abw %then %do;%str(application/x-abiword)%end; %else %if &ext=ace %then %do;%str(application/x-ace-compressed)%end; %else %if &ext=dmg %then %do;%str(application/x-apple-diskimage)%end; %else %if &ext=aam %then %do;%str(application/x-authorware-map)%end; %else %if &ext=aas %then %do;%str(application/x-authorware-seg)%end; %else %if &ext=bcpio %then %do;%str(application/x-bcpio)%end; %else %if &ext=torrent %then %do;%str(application/x-bittorrent)%end; %else %if &ext=blb %then %do;%str(application/x-blorb)%end; %else %if &ext=blorb %then %do;%str(application/x-blorb)%end; %else %if &ext=bz %then %do;%str(application/x-bzip)%end; %else %if &ext=bz2 %then %do;%str(application/x-bzip2)%end; %else %if &ext=boz %then %do;%str(application/x-bzip2)%end; %else %if &ext=vcd %then %do;%str(application/x-cdlink)%end; %else %if &ext=cfs %then %do;%str(application/x-cfs-compressed)%end; %else %if &ext=chat %then %do;%str(application/x-chat)%end; %else %if &ext=pgn %then %do;%str(application/x-chess-pgn)%end; %else %if &ext=nsc %then %do;%str(application/x-conference)%end; %else %if &ext=cpio %then %do;%str(application/x-cpio)%end; %else %if &ext=csh %then %do;%str(application/x-csh)%end; %else %if &ext=deb %then %do;%str(application/x-debian-package)%end; %else %if &ext=udeb %then %do;%str(application/x-debian-package)%end; %else %if &ext=dgc %then %do;%str(application/x-dgc-compressed)%end; %else %if &ext=wad %then %do;%str(application/x-doom)%end; %else %if &ext=ncx %then %do;%str(application/x-dtbncx+xml)%end; %else %if &ext=dtb %then %do;%str(application/x-dtbook+xml)%end; %else %if &ext=res %then %do;%str(application/x-dtbresource+xml)%end; %else %if &ext=dvi %then %do;%str(application/x-dvi)%end; %else %if &ext=evy %then %do;%str(application/x-envoy)%end; %else %if &ext=eva %then %do;%str(application/x-eva)%end; %else %if &ext=bdf %then %do;%str(application/x-font-bdf)%end; %else %if &ext=gsf %then %do;%str(application/x-font-ghostscript)%end; %else %if &ext=psf %then %do;%str(application/x-font-linux-psf)%end; %else %if &ext=pcf %then %do;%str(application/x-font-pcf)%end; %else %if &ext=snf %then %do;%str(application/x-font-snf)%end; %else %if &ext=arc %then %do;%str(application/x-freearc)%end; %else %if &ext=spl %then %do;%str(application/x-futuresplash)%end; %else %if &ext=gca %then %do;%str(application/x-gca-compressed)%end; %else %if &ext=ulx %then %do;%str(application/x-glulx)%end; %else %if &ext=gnumeric %then %do;%str(application/x-gnumeric)%end; %else %if &ext=gramps %then %do;%str(application/x-gramps-xml)%end; %else %if &ext=gtar %then %do;%str(application/x-gtar)%end; %else %if &ext=hdf %then %do;%str(application/x-hdf)%end; %else %if &ext=install %then %do;%str(application/x-install-instructions)%end; %else %if &ext=iso %then %do;%str(application/x-iso9660-image)%end; %else %if &ext=jnlp %then %do;%str(application/x-java-jnlp-file)%end; %else %if &ext=latex %then %do;%str(application/x-latex)%end; %else %if &ext=lzh %then %do;%str(application/x-lzh-compressed)%end; %else %if &ext=lha %then %do;%str(application/x-lzh-compressed)%end; %else %if &ext=mie %then %do;%str(application/x-mie)%end; %else %if &ext=prc %then %do;%str(application/x-mobipocket-ebook)%end; %else %if &ext=mobi %then %do;%str(application/x-mobipocket-ebook)%end; %else %if &ext=application %then %do;%str(application/x-ms-application)%end; %else %if &ext=lnk %then %do;%str(application/x-ms-shortcut)%end; %else %if &ext=wmd %then %do;%str(application/x-ms-wmd)%end; %else %if &ext=wmz %then %do;%str(application/x-ms-wmz)%end; %else %if &ext=xbap %then %do;%str(application/x-ms-xbap)%end; %else %if &ext=mdb %then %do;%str(application/x-msaccess)%end; %else %if &ext=obd %then %do;%str(application/x-msbinder)%end; %else %if &ext=crd %then %do;%str(application/x-mscardfile)%end; %else %if &ext=clp %then %do;%str(application/x-msclip)%end; %else %if &ext=mny %then %do;%str(application/x-msmoney)%end; %else %if &ext=pub %then %do;%str(application/x-mspublisher)%end; %else %if &ext=scd %then %do;%str(application/x-msschedule)%end; %else %if &ext=trm %then %do;%str(application/x-msterminal)%end; %else %if &ext=wri %then %do;%str(application/x-mswrite)%end; %else %if &ext=nc %then %do;%str(application/x-netcdf)%end; %else %if &ext=cdf %then %do;%str(application/x-netcdf)%end; %else %if &ext=nzb %then %do;%str(application/x-nzb)%end; %else %if &ext=p12 %then %do;%str(application/x-pkcs12)%end; %else %if &ext=pfx %then %do;%str(application/x-pkcs12)%end; %else %if &ext=p7b %then %do;%str(application/x-pkcs7-certificates)%end; %else %if &ext=spc %then %do;%str(application/x-pkcs7-certificates)%end; %else %if &ext=p7r %then %do;%str(application/x-pkcs7-certreqresp)%end; %else %if &ext=rar %then %do;%str(application/x-rar-compressed)%end; %else %if &ext=ris %then %do;%str(application/x-research-info-systems)%end; %else %if &ext=sh %then %do;%str(application/x-sh)%end; %else %if &ext=shar %then %do;%str(application/x-shar)%end; %else %if &ext=swf %then %do;%str(application/x-shockwave-flash)%end; %else %if &ext=xap %then %do;%str(application/x-silverlight-app)%end; %else %if &ext=sql %then %do;%str(application/x-sql)%end; %else %if &ext=sit %then %do;%str(application/x-stuffit)%end; %else %if &ext=sitx %then %do;%str(application/x-stuffitx)%end; %else %if &ext=srt %then %do;%str(application/x-subrip)%end; %else %if &ext=sv4cpio %then %do;%str(application/x-sv4cpio)%end; %else %if &ext=sv4crc %then %do;%str(application/x-sv4crc)%end; %else %if &ext=t3 %then %do;%str(application/x-t3vm-image)%end; %else %if &ext=gam %then %do;%str(application/x-tads)%end; %else %if &ext=tar %then %do;%str(application/x-tar)%end; %else %if &ext=tcl %then %do;%str(application/x-tcl)%end; %else %if &ext=tex %then %do;%str(application/x-tex)%end; %else %if &ext=tfm %then %do;%str(application/x-tex-tfm)%end; %else %if &ext=texinfo %then %do;%str(application/x-texinfo)%end; %else %if &ext=texi %then %do;%str(application/x-texinfo)%end; %else %if &ext=obj %then %do;%str(application/x-tgif)%end; %else %if &ext=ustar %then %do;%str(application/x-ustar)%end; %else %if &ext=src %then %do;%str(application/x-wais-source)%end; %else %if &ext=der %then %do;%str(application/x-x509-ca-cert)%end; %else %if &ext=crt %then %do;%str(application/x-x509-ca-cert)%end; %else %if &ext=fig %then %do;%str(application/x-xfig)%end; %else %if &ext=xlf %then %do;%str(application/x-xliff+xml)%end; %else %if &ext=xpi %then %do;%str(application/x-xpinstall)%end; %else %if &ext=xz %then %do;%str(application/x-xz)%end; %else %if &ext=xdf %then %do;%str(application/xcap-diff+xml)%end; %else %if &ext=xht %then %do;%str(application/xhtml+xml)%end; %else %if &ext=xsl %then %do;%str(application/xml)%end; %else %if &ext=dtd %then %do;%str(application/xml-dtd)%end; %else %if &ext=xpl %then %do;%str(application/xproc+xml)%end; %else %if &ext=adp %then %do;%str(audio/adpcm)%end; %else %if &ext=au %then %do;%str(audio/basic)%end; %else %if &ext=snd %then %do;%str(audio/basic)%end; %else %if &ext=m4a %then %do;%str(audio/mp4)%end; %else %if &ext=mp4a %then %do;%str(audio/mp4)%end; %else %if &ext=s3m %then %do;%str(audio/s3m)%end; %else %if &ext=sil %then %do;%str(audio/silk)%end; %else %if &ext=uva %then %do;%str(audio/vnd.dece.audio)%end; %else %if &ext=uvva %then %do;%str(audio/vnd.dece.audio)%end; %else %if &ext=eol %then %do;%str(audio/vnd.digital-winds)%end; %else %if &ext=dra %then %do;%str(audio/vnd.dra)%end; %else %if &ext=dts %then %do;%str(audio/vnd.dts)%end; %else %if &ext=dtshd %then %do;%str(audio/vnd.dts.hd)%end; %else %if &ext=lvp %then %do;%str(audio/vnd.lucent.voice)%end; %else %if &ext=pya %then %do;%str(audio/vnd.ms-playready.media.pya)%end; %else %if &ext=ecelp4800 %then %do;%str(audio/vnd.nuera.ecelp4800)%end; %else %if &ext=ecelp7470 %then %do;%str(audio/vnd.nuera.ecelp7470)%end; %else %if &ext=ecelp9600 %then %do;%str(audio/vnd.nuera.ecelp9600)%end; %else %if &ext=rip %then %do;%str(audio/vnd.rip)%end; %else %if &ext=weba %then %do;%str(audio/webm)%end; %else %if &ext=mka %then %do;%str(audio/x-matroska)%end; %else %if &ext=m3u %then %do;%str(audio/x-mpegurl)%end; %else %if &ext=wax %then %do;%str(audio/x-ms-wax)%end; %else %if &ext=wma %then %do;%str(audio/x-ms-wma)%end; %else %if &ext=ra %then %do;%str(audio/x-pn-realaudio)%end; %else %if &ext=ram %then %do;%str(audio/x-pn-realaudio)%end; %else %if &ext=rmp %then %do;%str(audio/x-pn-realaudio-plugin)%end; %else %if &ext=xm %then %do;%str(audio/xm)%end; %else %if &ext=ttc %then %do;%str(font/collection)%end; %else %if &ext=g3 %then %do;%str(image/g3fax)%end; %else %if &ext=btif %then %do;%str(image/prs.btif)%end; %else %if &ext=svg %then %do;%str(image/svg+xml)%end; %else %if &ext=svgz %then %do;%str(image/svg+xml)%end; %else %if &ext=tif %then %do;%str(image/tiff)%end; %else %if &ext=psd %then %do;%str(image/vnd.adobe.photoshop)%end; %else %if &ext=djv %then %do;%str(image/vnd.djvu)%end; %else %if &ext=djvu %then %do;%str(image/vnd.djvu)%end; %else %if &ext=sub %then %do;%str(image/vnd.dvb.subtitle)%end; %else %if &ext=dwg %then %do;%str(image/vnd.dwg)%end; %else %if &ext=dxf %then %do;%str(image/vnd.dxf)%end; %else %if &ext=fbs %then %do;%str(image/vnd.fastbidsheet)%end; %else %if &ext=fpx %then %do;%str(image/vnd.fpx)%end; %else %if &ext=fst %then %do;%str(image/vnd.fst)%end; %else %if &ext=mmr %then %do;%str(image/vnd.fujixerox.edmics-mmr)%end; %else %if &ext=rlc %then %do;%str(image/vnd.fujixerox.edmics-rlc)%end; %else %if &ext=mdi %then %do;%str(image/vnd.ms-modi)%end; %else %if &ext=wdp %then %do;%str(image/vnd.ms-photo)%end; %else %if &ext=npx %then %do;%str(image/vnd.net-fpx)%end; %else %if &ext=wbmp %then %do;%str(image/vnd.wap.wbmp)%end; %else %if &ext=xif %then %do;%str(image/vnd.xiff)%end; %else %if &ext=ras %then %do;%str(image/x-cmu-raster)%end; %else %if &ext=ico %then %do;%str(image/x-icon)%end; %else %if &ext=sid %then %do;%str(image/x-mrsid-image)%end; %else %if &ext=pct %then %do;%str(image/x-pict)%end; %else %if &ext=pic %then %do;%str(image/x-pict)%end; %else %if &ext=pnm %then %do;%str(image/x-portable-anymap)%end; %else %if &ext=pbm %then %do;%str(image/x-portable-bitmap)%end; %else %if &ext=pgm %then %do;%str(image/x-portable-graymap)%end; %else %if &ext=ppm %then %do;%str(image/x-portable-pixmap)%end; %else %if &ext=xbm %then %do;%str(image/x-xbitmap)%end; %else %if &ext=xpm %then %do;%str(image/x-xpixmap)%end; %else %if &ext=xwd %then %do;%str(image/x-xwindowdump)%end; %else %if &ext=eml %then %do;%str(message/rfc822)%end; %else %if &ext=mime %then %do;%str(message/rfc822)%end; %else %if &ext=iges %then %do;%str(model/iges)%end; %else %if &ext=igs %then %do;%str(model/iges)%end; %else %if &ext=dae %then %do;%str(model/vnd.collada+xml)%end; %else %if &ext=dwf %then %do;%str(model/vnd.dwf)%end; %else %if &ext=gdl %then %do;%str(model/vnd.gdl)%end; %else %if &ext=gtw %then %do;%str(model/vnd.gtw)%end; %else %if &ext=vtu %then %do;%str(model/vnd.vtu)%end; %else %if &ext=vrml %then %do;%str(model/vrml)%end; %else %if &ext=wrl %then %do;%str(model/vrml)%end; %else %if &ext=x3db %then %do;%str(model/x3d+binary)%end; %else %if &ext=x3dbz %then %do;%str(model/x3d+binary)%end; %else %if &ext=x3dv %then %do;%str(model/x3d+vrml)%end; %else %if &ext=x3dvz %then %do;%str(model/x3d+vrml)%end; %else %if &ext=x3d %then %do;%str(model/x3d+xml)%end; %else %if &ext=x3dz %then %do;%str(model/x3d+xml)%end; %else %if &ext=appcache %then %do;%str(text/cache-manifest)%end; %else %if &ext=ics %then %do;%str(text/calendar)%end; %else %if &ext=ifb %then %do;%str(text/calendar)%end; %else %if &ext=htm %then %do;%str(text/html)%end; %else %if &ext=js %then %do;%str(text/javascript)%end; %else %if &ext=mjs %then %do;%str(text/javascript)%end; %else %if &ext=dsc %then %do;%str(text/prs.lines.tag)%end; %else %if &ext=rtx %then %do;%str(text/richtext)%end; %else %if &ext=sgm %then %do;%str(text/sgml)%end; %else %if &ext=tsv %then %do;%str(text/tab-separated-values)%end; %else %if &ext=ttl %then %do;%str(text/turtle)%end; %else %if &ext=curl %then %do;%str(text/vnd.curl)%end; %else %if &ext=dcurl %then %do;%str(text/vnd.curl.dcurl)%end; %else %if &ext=mcurl %then %do;%str(text/vnd.curl.mcurl)%end; %else %if &ext=scurl %then %do;%str(text/vnd.curl.scurl)%end; %else %if &ext=sub %then %do;%str(text/vnd.dvb.subtitle)%end; %else %if &ext=fly %then %do;%str(text/vnd.fly)%end; %else %if &ext=flx %then %do;%str(text/vnd.fmi.flexstor)%end; %else %if &ext=gv %then %do;%str(text/vnd.graphviz)%end; %else %if &ext=3dml %then %do;%str(text/vnd.in3d.3dml)%end; %else %if &ext=spot %then %do;%str(text/vnd.in3d.spot)%end; %else %if &ext=jad %then %do;%str(text/vnd.sun.j2me.app-descriptor)%end; %else %if &ext=wml %then %do;%str(text/vnd.wap.wml)%end; %else %if &ext=wmls %then %do;%str(text/vnd.wap.wmlscript)%end; %else %if &ext=s %then %do;%str(text/x-asm)%end; %else %if &ext=java %then %do;%str(text/x-java-source)%end; %else %if &ext=p %then %do;%str(text/x-pascal)%end; %else %if &ext=pas %then %do;%str(text/x-pascal)%end; %else %if &ext=etx %then %do;%str(text/x-setext)%end; %else %if &ext=uu %then %do;%str(text/x-uuencode)%end; %else %if &ext=vcs %then %do;%str(text/x-vcalendar)%end; %else %if &ext=vcf %then %do;%str(text/x-vcard)%end; %else %if &ext=3gp %then %do;%str(video/3gpp)%end; %else %if &ext=3g2 %then %do;%str(video/3gpp2)%end; %else %if &ext=jpgv %then %do;%str(video/jpeg)%end; %else %if &ext=jpgm %then %do;%str(video/jpm)%end; %else %if &ext=mjp2 %then %do;%str(video/mj2)%end; %else %if &ext=ogv %then %do;%str(video/ogg)%end; %else %if &ext=mov %then %do;%str(video/quicktime)%end; %else %if &ext=qt %then %do;%str(video/quicktime)%end; %else %if &ext=uvh %then %do;%str(video/vnd.dece.hd)%end; %else %if &ext=uvvh %then %do;%str(video/vnd.dece.hd)%end; %else %if &ext=uvm %then %do;%str(video/vnd.dece.mobile)%end; %else %if &ext=uvvm %then %do;%str(video/vnd.dece.mobile)%end; %else %if &ext=uvp %then %do;%str(video/vnd.dece.pd)%end; %else %if &ext=uvvp %then %do;%str(video/vnd.dece.pd)%end; %else %if &ext=uvs %then %do;%str(video/vnd.dece.sd)%end; %else %if &ext=uvvs %then %do;%str(video/vnd.dece.sd)%end; %else %if &ext=uvv %then %do;%str(video/vnd.dece.video)%end; %else %if &ext=uvvv %then %do;%str(video/vnd.dece.video)%end; %else %if &ext=dvb %then %do;%str(video/vnd.dvb.file)%end; %else %if &ext=fvt %then %do;%str(video/vnd.fvt)%end; %else %if &ext=m4u %then %do;%str(video/vnd.mpegurl)%end; %else %if &ext=mxu %then %do;%str(video/vnd.mpegurl)%end; %else %if &ext=pyv %then %do;%str(video/vnd.ms-playready.media.pyv)%end; %else %if &ext=uvu %then %do;%str(video/vnd.uvvu.mp4)%end; %else %if &ext=uvvu %then %do;%str(video/vnd.uvvu.mp4)%end; %else %if &ext=viv %then %do;%str(video/vnd.vivo)%end; %else %if &ext=asf %then %do;%str(video/x-ms-asf)%end; %else %if &ext=asx %then %do;%str(video/x-ms-asf)%end; %else %if &ext=vob %then %do;%str(video/x-ms-vob)%end; %else %if &ext=wm %then %do;%str(video/x-ms-wm)%end; %else %if &ext=wmv %then %do;%str(video/x-ms-wmv)%end; %else %if &ext=wmx %then %do;%str(video/x-ms-wmx)%end; %else %if &ext=wvx %then %do;%str(video/x-ms-wvx)%end; %else %if &ext=avi %then %do;%str(video/x-msvideo)%end; %else %if &ext=movie %then %do;%str(video/x-sgi-movie)%end; %else %if &ext=ice %then %do;%str(x-conference/x-cooltalk)%end; %else %if "&ext"="in" %then %do;%str(text/plain)%end; %else %do;%str(application/octet-stream)%end; %mend mf_mimetype; %macro mp_base64copy( inref=0, outref=0, action=ENCODE )/*/STORE SOURCE*/; %let inref=%upcase(&inref); %let outref=%upcase(&outref); %let action=%upcase(&action); %local infound outfound; %let infound=0; %let outfound=0; data _null_; set sashelp.vextfl(where=(fileref="&inref" or fileref="&outref")); if fileref="&inref" then call symputx('infound',1,'l'); if fileref="&outref" then call symputx('outfound',1,'l'); run; %mp_abort(iftrue= (&infound=0) ,mac=&sysmacroname ,msg=%str(INREF &inref NOT FOUND!) ) %mp_abort(iftrue= (&outref=0) ,mac=&sysmacroname ,msg=%str(OUTREF NOT PROVIDED!) ) %mp_abort(iftrue= (&action ne ENCODE and &action ne DECODE) ,mac=&sysmacroname ,msg=%str(Invalid action! Should be ENCODE OR DECODE) ) %if &outfound=0 %then %do; filename &outref temp lrecl=2097088; %end; %if &action=ENCODE %then %do; data _null_; length b64 $ 76 line $ 57; retain line ""; infile &inref recfm=F lrecl= 1 end=eof; input @1 stream $char1.; file &outref recfm=N; substr(line,(_N_-(CEIL(_N_/57)-1)*57),1) = byte(rank(stream)); if mod(_N_,57)=0 or EOF then do; if eof then b64=put(trim(line),$base64X76.); else b64=put(line, $base64X76.); put b64 + (-1) @; line=""; end; run; %end; %else %if &action=DECODE %then %do; data _null_; length filein 8 fileout 8; filein = fopen("&inref",'I',4,'B'); fileout = fopen("&outref",'O',3,'B'); char= '20'x; do while(fread(filein)=0); length raw $4; do i=1 to 4; rc=fget(filein,char,1); substr(raw,i,1)=char; end; rc = fput(fileout,input(raw,$base64X4.)); rc = fwrite(fileout); end; rc = fclose(filein); rc = fclose(fileout); run; %end; %mend mp_base64copy; %macro mp_replace(infile, findvar=, replacevar=, outfile=0 )/*/STORE SOURCE*/; %local inref dttm ds1; %let inref=%mf_getuniquefileref(); %let outref=%mf_getuniquefileref(); %if &outfile=0 %then %let outfile=&infile; %let ds1=%mf_getuniquename(prefix=allchars); %let ds2=%mf_getuniquename(prefix=startmark); /* START */ %let dttm=%sysfunc(datetime()); filename &inref &infile lrecl=1 recfm=n; data &ds1; infile &inref; input sourcechar $char1. @@; format sourcechar hex2.; run; data &ds2; /* set find string to length in bytes to cover trailing spaces */ length string $ %length(%superq(&findvar)); string =symget("&findvar"); drop string; firstchar=char(string,1); findlen=lengthm(string); /* <- for trailing bytes */ do _N_=1 to nobs; set &ds1 nobs=nobs point=_N_; if sourcechar=firstchar then do; pos=1; s=0; do point=_N_ to min(_N_ + findlen -1,nobs); set &ds1 point=point; if sourcechar=char(string, pos) then s + 1; else goto _leave_; pos+1; end; _leave_: if s=findlen then do; START =_N_; _N_ =_N_+ s - 1; STOP =_N_; output; end; end; end; stop; keep START STOP; run; data &ds1; declare hash HS(dataset:"&ds2(keep=start)"); HS.defineKey("start"); HS.defineDone(); declare hash HE(dataset:"&ds2(keep=stop)"); HE.defineKey("stop"); HE.defineDone(); do until(eof); set &ds1 end=eof curobs =n; start = ^HS.check(key:n); stop = ^HE.check(key:n); length strt $ 1; strt =put(start,best. -L); retain out 1; if out then output; if start then out=0; if stop then out=1; end; stop; keep sourcechar strt; run; filename &outref &outfile recfm=n; data _null_; length replace $ %length(%superq(&replacevar)); replace=symget("&replacevar"); file &outref; do until(eof); set &ds1 end=eof; if strt ="1" then put replace char.; else put sourcechar char1.; end; stop; run; /* END */ /* %put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) secs to run; */ %mend mp_replace; %macro mf_existds(libds )/*/STORE SOURCE*/; %if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0; %else 1; %mend mf_existds; %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_getvalue(libds,variable,filter=1,fetchobs=1 )/*/STORE SOURCE*/; %local dsid; %let dsid=%sysfunc(open(&libds(where=(&filter)))); %if (&dsid) %then %do; %local rc &variable; %syscall set(dsid); %let rc = %sysfunc(fetchobs(&dsid,&fetchobs)); %if (&rc ne 0) %then %do; %put NOTE: Problem reading obs &fetchobs from &libds..; %put %sysfunc(sysmsg()); /* Coerce an rc value of -1 (read past end of data) to a 4 that, in SAS condition code terms, represents the sysmsg w@rning it generates. */ %if &rc eq -1 %then %let rc = 4; /* And update SYSCC if the &rc value is higher */ %let syscc = %sysfunc(max(&syscc,&rc)); %end; %let rc = %sysfunc(close(&dsid)); %trim(&&&variable) %end; %else %do; %put %sysfunc(sysmsg()); %let syscc = %sysfunc(max(&syscc,%sysfunc(sysrc()))); %end; %mend mf_getvalue; %macro mf_getvarlist(libds ,dlm=%str( ) ,quote=no ,typefilter=A )/*/STORE SOURCE*/; /* declare local vars */ %local outvar dsid nvars x rc dlm q var vtype; /* credit Rowland Hale - byte34 is double quote, 39 is single quote */ %if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34)); %else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39)); /* open dataset in macro */ %let dsid=%sysfunc(open(&libds)); %if &dsid %then %do; %let nvars=%sysfunc(attrn(&dsid,NVARS)); %if &nvars>0 %then %do; /* add variables with supplied delimeter */ %do x=1 %to &nvars; /* get variable type */ %let vtype=%sysfunc(vartype(&dsid,&x)); %if &vtype=&typefilter or &typefilter=A %then %do; %let var=&q.%sysfunc(varname(&dsid,&x))&q.; %if &var=&q&q %then %do; %put &sysmacroname: Empty column found in &libds!; %let var=&q. &q.; %end; %if %quote(&outvar)=%quote() %then %let outvar=&var; %else %let outvar=&outvar.&dlm.&var.; %end; %end; %end; %let rc=%sysfunc(close(&dsid)); %end; %else %do; %put &sysmacroname: Unable to open &libds (rc=&dsid); %put &sysmacroname: SYSMSG= %sysfunc(sysmsg()); %let rc=%sysfunc(close(&dsid)); %end; %do;%unquote(&outvar)%end; %mend mf_getvarlist; %macro mf_getvartype(libds /* two level name */ , var /* variable name from which to return the type */ )/*/STORE SOURCE*/; %local dsid vnum vtype rc; /* Open dataset */ %let dsid = %sysfunc(open(&libds)); %if &dsid. > 0 %then %do; /* Get variable number */ %let vnum = %sysfunc(varnum(&dsid, &var)); /* Get variable type (C/N) */ %if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.)); %else %do; %put NOTE: Variable &var does not exist in &libds; %let vtype = %str( ); %end; %end; %else %do; %put &sysmacroname: dataset &libds not opened! (rc=&dsid); %put &sysmacroname: %sysfunc(sysmsg()); %return; %end; /* Close dataset */ %let rc = %sysfunc(close(&dsid)); /* Return variable type */ &vtype %mend mf_getvartype; %macro mf_nobs(libds )/*/STORE SOURCE*/; %mf_getattrn(&libds,NLOBS) %mend mf_nobs; %macro mv_getViyaFileExtParms( ext, typeDefNameVar=, propertiesVar=, mediaTypeVar=, viyaFileExtRespLibDs=work.mv_getViyaFileExtParmsResponse, mdebug=0 ); %local base_uri; /* location of rest apis */ %local url; /* File extension info end-point */ %mp_abort( iftrue=(%mf_isBlank(&ext)) ,msg=%str(No file extension provided.) ,mac=MV_GETVIYAFILEEXTPARMS ) %mp_abort( iftrue=(%mf_isBlank(&typeDefNameVar) and %mf_isBlank(&propertiesVar) and %mf_isBlank(&mediaTypeVar)) ,msg=%str(MV_GETVIYAFILEEXTPARMS - No parameter was requested.) ,mac=MV_GETVIYAFILEEXTPARMS ) %mp_abort( iftrue=(%mf_isBlank(&viyaFileExtRespLibDs)) ,msg=%str(No dataset name provided to cache inital response.) ,mac=MV_GETVIYAFILEEXTPARMS ) /* Declare requested parameters as global macro vars and initialize blank */ %if not %mf_isBlank(&typeDefNameVar) %then %do; %global &typeDefNameVar; %let &typeDefNameVar = %str(); %end; %if not %mf_isBlank(&propertiesVar) %then %do; %global &propertiesVar; %let &propertiesVar = %str(); %end; %if not %mf_isBlank(&mediaTypeVar) %then %do; %global &mediaTypeVar; %let &mediaTypeVar = %str(); %end; %let base_uri=%mf_getplatform(VIYARESTAPI); %if &mdebug=1 %then %put DEBUG: &=base_uri; %let ext=%lowcase(&ext); /* Create a local copy of the Viya response containing all file type info, if it does not already exist. */ %if not %mf_existds(&viyaFileExtRespLibDs) %then %do; /* Create a temp file and fill with JSON that declares */ /* VIYA file-type details for the given file extension */ %local viyatypedefs; %let viyatypedefs=%mf_getuniquefileref(); filename &viyatypedefs temp; %let url = &base_uri/types/types?limit=999999; proc http oauth_bearer=sas_services out=&viyatypedefs url="&url"; run; %if &mdebug=1 %then %put DEBUG: &sysmacroname &=url &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %if (&SYS_PROCHTTP_STATUS_CODE ne 200) %then %do; /* To avoid a breaking change, exit early if the request failed. The calling process will proceed with empty macro variables. */ %put INFO: &sysmacroname File extension details were not retrieved.; filename &viyatypedefs clear; %return; %end; %if &mdebug=1 %then %do; /* Dump the response to the log */ data _null_; length line $120; null=byte(0); infile &viyatypedefs dlm=null lrecl=120 recfm=n; input line $120.; if _n_ = 1 then put "DEBUG:"; put line; run; %end; /* Convert the content of that JSON into SAS datasets */ /* First prepare a new WORK-based folder to receive the datasets */ %local jsonworkfolder jsonlib opt_dlcreatedir; %let jsonworkfolder=%sysfunc(pathname(work))/%mf_getuniquename(prefix=jsn_); %let jsonlib=%mf_getuniquelibref(prefix=json); /* And point a libname at it */ %let opt_dlcreatedir = %sysfunc(getoption(dlcreatedir)); options dlcreatedir; libname &jsonlib "&jsonworkfolder"; options &opt_dlcreatedir; /* Read the json output once and copy datasets to its work folder */ %local libref1; %let libref1=%mf_getuniquelibref(); libname &libref1 JSON fileref=&viyatypedefs automap=create; proc copy in=&libref1 out=&jsonlib; run; libname &libref1 clear; /* Now give all rows belonging to the same items array a grouping value */ data &viyaFileExtRespLibDs; length _viyaItemIdx 8; set &jsonlib..alldata; retain _viyaItemIdx 0; /* Increment the row group index when a new 'items' group is observed */ if P=1 and P1='items' then _viyaItemIdx + 1; run; %if &mdebug=0 %then %do; /* Tidy up, unless debug=1 */ proc datasets library=&jsonlib nolist kill; quit; libname &jsonlib clear; %end; filename &viyatypedefs clear; %end; /* If initial filetype query response didn't exist */ %if &mdebug %then %put DEBUG: Find the row-group for extension &ext; %local itemRowGroup; data _null_; set &viyaFileExtRespLibDs; where p1='items' and p2='extensions' and value="&ext"; call symputx('itemRowGroup',_viyaItemIdx,'l'); %if &mdebug %then %do; putlog (_all_)(=); %end; run; %if &mdebug %then %put DEBUG: &=itemRowGroup; %if %mf_isBlank(&itemRowGroup) %then %do; /* extension was not found */ %if &mdebug %then %put DEBUG: No type details found for extension "&ext"; %return; %end; /* Filter the cached response data down to the required file extension */ %local dsItems; %let dsItems = %mf_getuniquename(prefix=dsItems_); data work.&dsItems; set &viyaFileExtRespLibDs; where _viyaItemIdx = &itemRowGroup; run; /* Populate typeDefName, if requested */ %if (not %mf_isBlank(&typeDefNameVar)) %then %do; %let &typeDefNameVar = %mf_getvalue( &dsItems,value,filter=%quote(p1="items" and p2="name")); %if &mdebug %then %put DEBUG: &=typeDefNameVar &typeDefNameVar=&&&typeDefNameVar; %end; /* Populate mediaType, if requested */ %if (not %mf_isBlank(&mediaTypeVar)) %then %do; %let &mediaTypeVar = %mf_getvalue( &dsItems,value,filter=%quote(p1="items" and p2="mediaType")); %if &mdebug %then %put DEBUG: &=mediaTypeVar &mediaTypeVar=&&&mediaTypeVar; %end; /* Populate properties macro variable, if requested */ %if not %mf_isBlank(&propertiesVar) %then %do; /* Filter dsItems down to the properties */ %local dsProperties; %let dsProperties = %mf_getuniquename(prefix=dsProperties_); data work.&dsProperties ( rename=(p3 = propertyName) ); set work.&dsItems; where p2="properties" and v=1; run; /* Check for 1+ properties */ %if ( %mf_nobs(&dsProperties) = 0 ) %then %do; %let &propertiesVar = %str(); %if &mdebug %then %put DEBUG: &SYSMACRONAME - No Viya properties %trim( )found for file suffix %str(%')&ext%str(%'); %end; %else %do; /* Properties potentially span multiple rows in the input table */ data _null_; length line $32767 properties $32767 ; retain properties; set &dsProperties end=last; if _n_ = 1 then properties = '{'; line = cats(quote(trim(propertyName)),':'); /* Only strings and bools appear in properties */ if value not in ("true","false") then value = quote(trim(value)); line = catx(' ',line,value); /* Add a comma separator to all except the last line */ if not last then line = cats(line,','); /* Add this line to the output value */ properties = catx(' ',properties,line); if last then do; /* Close off the properties object and output to the macro variable */ properties=catx(' ',properties,'}'); call symputx("&propertiesVar",properties); end; run; %if &mdebug %then %put DEBUG: &=propertiesVar &propertiesVar=&&&propertiesVar; %end; %end; %mend mv_getViyaFileExtParms; /* system macro dependencies for build process end*/ /* system macros for build process */ %macro mv_createwebservice(path= ,name= ,desc=Created by the mv_createwebservice.sas macro ,precode= ,code=ft15f001 ,access_token_var=ACCESS_TOKEN ,grant_type=sas_services ,replace=YES ,adapter=sasjs ,mdebug=0 ,contextname= ,debug=0 /* @TODO - Deprecate */ ); %local dbg; %if &mdebug=1 %then %do; %put &sysmacroname entry vars:; %put _local_; %end; %else %let dbg=*; %local oauth_bearer; %if &grant_type=detect %then %do; %if %symexist(&access_token_var) %then %let grant_type=authorization_code; %else %let grant_type=sas_services; %end; %if &grant_type=sas_services %then %do; %let oauth_bearer=oauth_bearer=sas_services; %let &access_token_var=; %end; /* initial validation checking */ %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password and &grant_type ne sas_services ) ,mac=&sysmacroname ,msg=%str(Invalid value for grant_type: &grant_type) ) %mp_abort(iftrue=(%mf_isblank(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) %mp_abort(iftrue=(%length(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) %mp_abort(iftrue=(%mf_isblank(&name)=1) ,mac=&sysmacroname ,msg=%str(name value must be provided) ) options noquotelenmax; * remove any trailing slash ; %if "%substr(&path,%length(&path),1)" = "/" %then %let path=%substr(&path,1,%length(&path)-1); /* ensure folder exists */ %&dbg.put &sysmacroname: Path &path being checked / created; %mv_createfolder(path=&path) %local base_uri; /* location of rest apis */ %let base_uri=%mf_getplatform(VIYARESTAPI); /* fetching folder details for provided path */ %local fname1; %let fname1=%mf_getuniquefileref(); proc http method='GET' out=&fname1 &oauth_bearer url="&base_uri/folders/folders/@item?path=&path"; %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %if &mdebug=1 %then %do; data _null_; infile &fname1; input; putlog _infile_; run; %end; %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200) ,mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) /* path exists. Grab follow on link to check members */ %local libref1; %let libref1=%mf_getuniquelibref(); libname &libref1 JSON fileref=&fname1; data _null_; set &libref1..links; if rel='members' then call symputx('membercheck',quote("&base_uri"!!trim(href)),'l'); else if rel='self' then call symputx('parentFolderUri',href,'l'); run; data _null_; set &libref1..root; call symputx('folderid',id,'l'); run; %local fname2; %let fname2=%mf_getuniquefileref(); proc http method='GET' out=&fname2 &oauth_bearer url=%unquote(%superq(membercheck)); headers %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; 'Accept'='application/vnd.sas.collection+json' 'Accept-Language'='string'; %if &mdebug=1 %then %do; debug level = 3; %end; run; /*data _null_;infile &fname2;input;putlog _infile_;run;*/ %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200) ,mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %if %upcase(&replace)=YES %then %do; %mv_deletejes(path=&path, name=&name) %end; %else %do; /* check that job does not already exist in that folder */ %local libref2; %let libref2=%mf_getuniquelibref(); libname &libref2 JSON fileref=&fname2; %local exists; %let exists=0; data _null_; set &libref2..items; if contenttype='jobDefinition' and upcase(name)="%upcase(&name)" then call symputx('exists',1,'l'); run; %mp_abort(iftrue=(&exists=1) ,mac=&sysmacroname ,msg=%str(Job &name already exists in &path) ) libname &libref2 clear; %end; /* set up the body of the request to create the service */ %local fname3; %let fname3=%mf_getuniquefileref(); data _null_; file &fname3 TERMSTR=' '; length string $32767; string=cats('{"version": 0,"name":"' ,"&name" ,'","type":"Compute","parameters":[{"name":"_addjesbeginendmacros"' ,',"type":"CHARACTER","defaultValue":"false"}'); context=quote(cats(symget('contextname'))); if context ne '""' then do; string=cats(string,',{"version": 1,"name": "_contextName","defaultValue":' ,context,',"type":"CHARACTER","label":"Context Name","required": false}'); end; string=cats(string,'],"code":"'); put string; run; /** * Add webout macro * These put statements are auto generated - to change the macro, change the * source (mv_webout) and run `build.py` */ filename &adapter temp lrecl=3000; data _null_; file &adapter; put "/* Created on %sysfunc(datetime(),datetime19.) by &sysuserid */"; /* 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 ' /* trim (not cats) so leading blanks are retained */ '; put ' else &&name&i=''"''!!trim(&&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 mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL '; put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name '; put ' sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS; '; put '%if %index("&_debug",log) %then %let _debug=128; '; put ' '; put '%local i tempds table; '; put '%let action=%upcase(&action); '; put ' '; put '%if &action=FETCH %then %do; '; put ' %if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do; '; put ' options mprint notes mprintnest; '; put ' %end; '; put ' '; put ' %if not %symexist(_webin_fileuri1) %then %do; '; put ' %let _webin_file_count=%eval(&_webin_file_count+0); '; put ' %let _webin_fileuri1=&_webin_fileuri; '; put ' %let _webin_name1=&_webin_name; '; put ' %if &_EXECUTIONTASKS=true %then %do; '; put ' /* TODO - remove this once SAS Track CS0409737 is resolved */ '; put ' /* links: https://github.com/sasjs/adapter/issues/884 */ '; put ' %if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0; '; put ' %end; '; put ' %end; '; put ' '; put ' /* if the sasjs_tables param is passed, we expect param based upload */ '; put ' %if %length(&sasjs_tables.X)>1 %then %do; '; put ' '; put ' /* convert data from macro variables to datasets */ '; put ' %do i=1 %to %sysfunc(countw(&sasjs_tables)); '; put ' %let table=%scan(&sasjs_tables,&i,%str( )); '; put ' %if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1; '; put ' data _null_; '; put ' file "%sysfunc(pathname(work))/&table..csv" recfm=n; '; put ' retain nrflg 0; '; put ' length line $32767; '; put ' do i=1 to &&sasjs&i.data0; '; put ' if &&sasjs&i.data0=1 then line=symget("sasjs&i.data"); '; put ' else line=symget(cats("sasjs&i.data",i)); '; put ' if i=1 and substr(line,1,7)=''%nrstr('' then do; '; put ' nrflg=1; '; put ' line=substr(line,8); '; put ' end; '; put ' if i=&&sasjs&i.data0 and nrflg=1 then do; '; put ' line=substr(line,1,length(line)-1); '; put ' end; '; put ' put line +(-1) @; '; put ' end; '; put ' run; '; put ' data _null_; '; put ' infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ; '; put ' input; '; put ' /* a plain $ informat strips leading blanks - use $char instead */ '; put ' if _n_=1 then call symputx(''input_statement'' '; put ' ,prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_) '; put ' ); '; put ' list; '; put ' data work.&table; '; put ' infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd '; put ' termstr=crlf; '; put ' input &input_statement; '; put ' run; '; put ' %end; '; put ' %end; '; put ' %else %do i=1 %to &_webin_file_count; '; put ' /* read in any files that are sent */ '; put ' %if &_EXECUTIONTASKS=true %then %do; '; put ' filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999; '; put ' %end; '; put ' %else %do; '; put ' filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; '; put ' %end; '; put ' data _null_; '; put ' infile indata termstr=crlf lrecl=32767; '; put ' input; '; put ' /* a plain $ informat strips leading blanks - use $char instead */ '; put ' if _n_=1 then call symputx(''input_statement'' '; put ' ,prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_) '; put ' ); '; put ' %if %str(&_debug) ge 128 %then %do; '; put ' if _n_<20 then putlog _infile_; '; put ' else stop; '; put ' %end; '; put ' %else %do; '; put ' stop; '; put ' %end; '; put ' run; '; put ' data &&_webin_name&i; '; put ' infile indata firstobs=2 dsd termstr=crlf ; '; put ' input &input_statement; '; put ' run; '; put ' %let sasjs_tables=&sasjs_tables &&_webin_name&i; '; put ' %end; '; put '%end; '; put '%else %if &action=OPEN %then %do; '; put ' /* setup webout */ '; 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 ' '; put ' /* setup temp ref */ '; put ' %if %upcase(&fref) ne _WEBOUT %then %do; '; put ' filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---''; '; put ' %end; '; put ' '; put ' /* setup json */ '; put ' data _null_;file &fref; '; put ' %if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs '; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; put ' %if %str(&workobs) > 0 %then %do; '; put ' /* send back first XX records of each work table for debugging */ '; 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 &fref mod; put ",""WORK"":{"; '; put ' %do i=1 %to &wtcnt; '; put ' %let wt=&&wt&i; '; put ' data _null_; file &fref mod; '; 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=&fref,dslabel=first10rows,showmeta=Y '; put ' ,maxobs=&workobs '; put ' ) '; put ' data _null_; file &fref mod;put "}"; '; put ' %end; '; put ' data _null_; file &fref mod;put "}";run; '; put ' %end; '; put ' '; put ' /* close off json */ '; put ' data _null_;file &fref mod; '; put ' length SYSPROCESSNAME syserrortext syswarningtext autoexec $512; '; put ' put ",""_DEBUG"" : ""&_debug"" "; '; 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 ' SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI'')))); '; put ' put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ; '; put ' put ",""SYSJOBID"" : ""&sysjobid"" "; '; put ' put ",""SYSCC"" : ""&syscc"" "; '; put ' syserrortext=cats(symget(''syserrortext'')); '; put ' if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' syserrortext=''"''!!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,syserrortext) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else syserrortext=cats(''"'',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(symget(''syswarningtext'')); '; put ' if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' syswarningtext=''"''!!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,syswarningtext) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do; '; put ' put ''>>weboutEND<<''; '; put ' %end; '; put ' %if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do; '; put ' data _null_; rc=fcopy("&fref","_webout");run; '; put ' %end; '; put ' '; put '%end; '; put ' '; put '%mend mv_webout; '; /* WEBOUT END */ put '/* if calling viya service with _job param, _program will conflict */'; put '/* so it is provided by SASjs instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put ' '; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO'; put ' ,maxobs=MAX'; put ');'; put ' %mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt,missing=&missing'; put ' ,showmeta=&showmeta,maxobs=&maxobs'; put ' )'; put '%mend;'; run; /* insert the code, escaping double quotes and carriage returns */ %&dbg.put &sysmacroname: Creating final input file; %local x fref freflist; %let freflist= &adapter &precode &code ; %do x=1 %to %sysfunc(countw(&freflist)); %let fref=%scan(&freflist,&x); %&dbg.put &sysmacroname: adding &fref fileref; data _null_; length filein 8 fileid 8; filein = fopen("&fref","I",1,"B"); fileid = fopen("&fname3","A",1,"B"); rec = "20"x; do while(fread(filein)=0); rc = fget(filein,rec,1); if rec='"' then do; /* DOUBLE QUOTE */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'"');rc =fwrite(fileid); end; else if rec='0A'x then do; /* LF */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'n');rc =fwrite(fileid); end; else if rec='0D'x then do; /* CR */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'r');rc =fwrite(fileid); end; else if rec='09'x then do; /* TAB */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'t');rc =fwrite(fileid); end; else if rec='5C'x then do; /* BACKSLASH */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'\');rc =fwrite(fileid); end; else if rec='01'x then do; /* Unprintable */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'u');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'1');rc =fwrite(fileid); end; else if rec='07'x then do; /* Bell Char */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'u');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'7');rc =fwrite(fileid); end; else if rec='1B'x then do; /* escape char */ rc =fput(fileid,'\');rc =fwrite(fileid); rc =fput(fileid,'u');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'0');rc =fwrite(fileid); rc =fput(fileid,'1');rc =fwrite(fileid); rc =fput(fileid,'B');rc =fwrite(fileid); end; else do; rc =fput(fileid,rec); rc =fwrite(fileid); end; end; rc=fclose(filein); rc=fclose(fileid); run; %end; /* finish off the body of the code file loaded to JES */ data _null_; file &fname3 mod TERMSTR=' '; put '"}'; run; %if &mdebug=1 and &SYS_PROCHTTP_STATUS_CODE ne 201 %then %do; %put &sysmacroname: input about to be POSTed; data _null_;infile &fname3;input;putlog _infile_;run; %end; %&dbg.put &sysmacroname: Creating the actual service!; %local fname4; %let fname4=%mf_getuniquefileref(); proc http method='POST' in=&fname3 out=&fname4 &oauth_bearer url="&base_uri/jobDefinitions/definitions?parentFolderUri=&parentFolderUri"; headers 'Content-Type'='application/vnd.sas.job.definition+json' %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; "Accept"="application/vnd.sas.job.definition+json"; %if &mdebug=1 %then %do; debug level = 3; %end; run; %if &mdebug=1 and &SYS_PROCHTTP_STATUS_CODE ne 201 %then %do; %put &sysmacroname: output from POSTing job definition; data _null_;infile &fname4;input;putlog _infile_;run; %end; %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) ,mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) /* get the url so we can give a helpful log message */ %local url; data _null_; if symexist('_baseurl') then do; url=symget('_baseurl'); if subpad(url,length(url)-9,9)='SASStudio' then url=substr(url,1,length(url)-11); else url="&systcpiphostname"; end; else url="&systcpiphostname"; call symputx('url',url); run; %if &mdebug=1 %then %do; %put &sysmacroname exit vars:; %put _local_; %end; %else %do; /* clear refs */ filename &fname1 clear; filename &fname2 clear; filename &fname3 clear; filename &fname4 clear; filename &adapter clear; libname &libref1 clear; %end; %put &sysmacroname: Job &name created! Check it out:; %put &url/SASJobExecution?_PROGRAM=&path/&name; %mend mv_createwebservice; /** @file @brief Creates a file in SAS Drive using the API method @details Creates a file in SAS Drive using the API interface. If the parent folder does not exist, it is created. The API approach is more flexible than using the filesrvc engine of the filename statement, as it provides more options. SAS docs: https://developer.sas.com/rest-apis/files/createNewFile Usage: filename myfile temp; data _null_; file myfile; put 'something'; run; %mv_createfile(path=/Public/temp,name=newfile.txt,inref=myfile) The macro also supports find & replace (used by the SASjs Streaming App build program). This allows one string to be replaced by another at the point at which the file is created. This is done by passing in the NAMES of the macro variables containing the values to be swapped, eg: filename fref temp; data _null_; file fref; put 'whenever life gets you down, Mrs Brown..'; run; %let f=Mrs Brown; %let r=just remember that you're standing on a planet that's evolving; %mv_createfile(path=/Public,name=life.md,inref=fref,fin,swap=f r) @param [in] path= The parent (SAS Drive) folder in which to create the file @param [in] name= The name of the file to be created @param [in] inref= The fileref pointing to the file to be uploaded @param [in] intype= (BINARY) The type of the input data. Valid values: @li BINARY File is copied byte for byte using the mp_binarycopy.sas macro. @li BASE64 File will be first decoded using the mp_base64.sas macro, then loaded byte by byte to SAS Drive. @param [in] contentdisp= (attchment) Content Disposition. Example values: @li inline @li attachment @param [in] ctype= (0) The actual MIME type of the file (if blank will be determined based on file extension)) @param [in] access_token_var= The global macro variable to contain the access token, if using authorization_code grant type. @param [in] grant_type= (sas_services) Valid values are: @li password @li authorization_code @li sas_services @param [in] force= (YES) Will overwrite (delete / recreate) files by default. Set to NO to abort if a file already exists in that location. @param pin] swap= (0) Provide two macro variable NAMES that contain the values to be swapped, eg swap=find replace (see also the example above) @param [out] outds= (_null_) Output dataset with the uri of the new file @param [in] mdebug= (0) Set to 1 to enable DEBUG messages

SAS Macros

@li mf_getplatform.sas @li mf_getuniquefileref.sas @li mf_getuniquename.sas @li mf_isblank.sas @li mf_mimetype.sas @li mfv_getpathuri.sas @li mp_abort.sas @li mp_base64copy.sas @li mp_replace.sas @li mv_createfolder.sas @li mv_getviyafileextparms.sas

Related Macros

@li mv_createfile.sas **/ %macro mv_createfile(path= ,name= ,inref= ,intype=BINARY ,contentdisp=attachment ,ctype=0 ,access_token_var=ACCESS_TOKEN ,grant_type=sas_services ,mdebug=0 ,outds=_null_ ,force=YES ,swap=0 ); %local dbg; %if &mdebug=1 %then %do; %put &sysmacroname entry vars:; %put _local_; %end; %else %let dbg=*; %mp_abort( iftrue=(&syscc ne 0), msg=Cannot enter &sysmacroname with syscc=&syscc ) %local oauth_bearer; %if &grant_type=detect %then %do; %if %symexist(&access_token_var) %then %let grant_type=authorization_code; %else %let grant_type=sas_services; %end; %if &grant_type=sas_services %then %do; %let oauth_bearer=oauth_bearer=sas_services; %let &access_token_var=; %end; %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password and &grant_type ne sas_services ) ,mac=MV_CREATEFILE ,msg=%str(Invalid value for grant_type: &grant_type) ) %mp_abort(iftrue=(%mf_isblank(&path)=1 or %length(&path)=1) ,mac=MV_CREATEFILE ,msg=%str(path value must be provided) ) %mp_abort(iftrue=(%mf_isblank(&name)=1 or %length(&name)=1) ,mac=MV_CREATEFILE ,msg=%str(name value with length >1 must be provided) ) /* prep the source file */ %local fref; %let fref=%mf_getuniquefileref(); %if %upcase(&intype)=BINARY %then %let fref=&inref; %else %if %upcase(&intype)=BASE64 %then %do; %mp_base64copy(inref=&inref, outref=&fref, action=DECODE) %end; %else %put %str(ERR)OR: invalid value for intype: &intype; %if "&swap" ne "0" %then %do; %mp_replace("%sysfunc(pathname(&fref))" ,findvar=%scan(&swap,1,%str( )) ,replacevar=%scan(&swap,2,%str( )) ) %end; %if &mdebug=1 %then %do; data _null_; infile &fref lrecl=32767; input; put _infile_; run; %end; options noquotelenmax; %local base_uri; /* location of rest apis */ %let base_uri=%trim(%mf_getplatform(VIYARESTAPI)); /* create folder if it does not already exist */ %local folderds self_uri; %let folderds=%mf_getuniquename(prefix=folderds); %mv_createfolder(path=&path ,access_token_var=&access_token_var ,grant_type=&grant_type ,mdebug=&mdebug ,outds=&folderds ) data _null_; set &folderds; call symputx('self_uri',self_uri,'l'); run; /* abort or delete if file already exists */ %let force=%upcase(&force); %local fileuri ; %let fileuri=%trim(%mfv_getpathuri(&path/&name)); %mp_abort(iftrue=(%mf_isblank(&fileuri)=0 and &force ne YES) ,mac=MV_CREATEFILE ,msg=%str(File &path/&name already exists and force=&force) ) %mp_abort( iftrue=(&syscc ne 0), mac=MV_CREATEFILE182 msg=syscc=&syscc after mfv_getpathuri ) %if %mf_isblank(&fileuri)=0 and &force=YES %then %do; proc http method="DELETE" url="&base_uri&fileuri" &oauth_bearer; headers %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; "Accept"="*/*"; run; %put &sysmacroname DELETE &base_uri&fileuri; %if &SYS_PROCHTTP_STATUS_CODE ne 204 %then %do; %put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %end; %end; %local url mimetype ext; %let url=&base_uri/files/files?parentFolderUri=&self_uri; %let ext=%upcase(%trim(%scan(&name,-1,.))); /* Get Viya file-extension details into some macro variables */ %mv_getViyaFileExtParms(&ext ,propertiesVar=viyaProperties ,typeDefNameVar=viyaTypeDefName ,mdebug=&mdebug ) /* fetch job info */ %local fname1; %let fname1=%mf_getuniquefileref(); proc http method='POST' out=&fname1 &oauth_bearer in=&fref %if "&ctype" = "0" %then %do; %let mimetype=%mf_mimetype(&ext); ct="&mimetype" %end; %else %do; ct="&ctype" %end; /* typeDefName */ %if not %mf_isBlank(&viyaTypeDefName) %then %do; url="&url%str(&)typeDefName=&viyaTypeDefName"; %end; %else %do; %if "&ext"="HTM" or "&ext"="HTML" or "&ext"="XHTML" %then %do; url="&url%str(&)typeDefName=file_html"; %end; %else %do; %if "&ext"="CSS" or "&ext"="JS" or "&ext"="PNG" or "&ext"="SVG" %then %do; url="&url%str(&)typeDefName=file_%lowcase(&ext)"; %end; %else %do; url="&url"; %end; %end; %end; headers "Accept"="application/json" %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; "Content-Disposition"= %if "&ext"="SVG" or "&ext"="HTML" %then %do; "filename=""&name"";" %end; %else %do; "&contentdisp filename=""&name""; name=""&name"";" %end; ; run; %if &mdebug=1 %then %put &sysmacroname POST &=url &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) ,mac=MV_CREATEFILE ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %local libref2; %let libref2=%mf_getuniquelibref(); libname &libref2 JSON fileref=&fname1; /* Grab the follow on link */ data &outds; set &libref2..links end=last; if rel='createChild' then do; &dbg put (_all_)(=); end; run; /* URI of the created file */ %let fileuri=%trim(%mfv_getpathuri(&path/&name)); /* If properties were found then patch the file to include them */ %if not %mf_isBlank(%superq(viyaProperties)) %then %do; /* Wrap the properties object in a root object also containing the filename */ %local viyapatch; %let viyapatch=%sysfunc(pathname(work))/%mf_getuniquename(prefix=patch_json_); data _null_; length line $32767; file "&viyapatch" lrecl=32767; put '{ "name": "' "&name" '",'; line = cat('"properties": ',symget("viyaProperties")); put line; put '}'; stop; run; %if &mdebug=1 %then %do; data _null_; if (_n_ eq 1) then put 'DEBUG: ** PATCH JSON **'; infile "&viyapatch" end=last; input; put _infile_; run; %end; /* Apply the properties to the newly created file, using the PATCH method */ %let fref=%mf_getuniquefileref(); filename &fref "&viyapatch"; %let url=&base_uri&fileuri; proc http method='PATCH' oauth_bearer=sas_services in=&fref url="&url"; headers "Accept"="application/json" "Content-Type"="application/json" "If-Match"="*"; %if &mdebug=1 %then %do; debug level=2; %end; run; %if &mdebug=1 %then %put &sysmacroname PATCH &=url &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200) ,mac=MV_CREATEFILE ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %end; %put &sysmacroname: &base_uri&fileuri; %put /SASJobExecution?_file=&path/&name;%put; %if &mdebug=0 %then %do; /* clear refs */ filename &fname1 clear; filename &fref clear; libname &libref2 clear; %end; %mp_abort( iftrue=(&syscc ne 0), msg=Cannot leave &sysmacroname with syscc=&syscc ) %mend mv_createfile; /* system macros for build process end */ %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 mfv_getfolderpath(uri )/*/STORE SOURCE*/; %local fref rc path msg var /* var used to avoid delete timing issue */; %let fref=%mf_getuniquefileref(); %if %quote(%substr(%str(&uri),1,17)) ne %quote(/folders/folders/) %then %do; %put &sysmacroname: Invalid URI: &uri; %end; %else %if %sysfunc(filename(fref,,filesrvc,folderuri="&uri" ))=0 %then %do; %let var=_FILESRVC_&fref._URI; %local fid ; %let fid= %sysfunc(fopen(&fref,I)); %let msg=%quote(%sysfunc(sysmsg())); %unquote(%scan(&msg,2,%str(,.))) %let rc=%sysfunc(fclose(&fid)); %let rc=%sysfunc(filename(fref)); %symdel &var; %end; %else %do; %put &sysmacroname: Not Found: &uri; %let syscc=0; %end; %mend mfv_getfolderpath ; %macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1) )/des='ungraceful abort' /*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 mfv_getpathuri(filepath )/*/STORE SOURCE*/; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot enter &sysmacroname with syscc=&syscc ) %local fref rc path name var /* var is used to avoid delete timing issue */; %let fref=%mf_getuniquefileref(); %let name=%scan(&filepath,-1,/); %let path=%substr(&filepath,1,%length(&filepath)-%length(&name)-1); %if %sysfunc(filename(fref,,filesrvc,folderPath="&path" filename="&name"))=0 %then %do; %let var=_FILESRVC_&fref._URI; %str(&&&var) %let rc=%sysfunc(filename(fref)); %symdel &var; %end; %else %do; %put &sysmacroname: did not find &filepath; %let syscc=0; %end; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot leave &sysmacroname with syscc=&syscc ) %mend mfv_getpathuri; %macro mp_abort(mac=mp_abort.sas, 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; end; /* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES sessions provide only _METAUSER) - guard it separately or SYMGET raises "Invalid argument" and pollutes SYSERRORTEXT inside the very abort JSON we are writing here. */ if symexist('_metaperson') then do; _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(symget('syserrortext')); if findc(syserrortext,'"\'!!'0A0D09000E0F010210111A'x) then do; syserrortext='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ prxchange('s/\x0D/\r/',-1, /* carriage return */ prxchange('s/\x09/\\t/',-1, /* tab */ prxchange('s/\x00/\\u0000/',-1, /* NUL */ prxchange('s/\x0E/\\u000E/',-1, /* SS */ prxchange('s/\x0F/\\u000F/',-1, /* SF */ prxchange('s/\x01/\\u0001/',-1, /* SOH */ prxchange('s/\x02/\\u0002/',-1, /* STX */ prxchange('s/\x10/\\u0010/',-1, /* DLE */ prxchange('s/\x11/\\u0011/',-1, /* DC1 */ prxchange('s/\x1A/\\u001A/',-1, /* SUB */ prxchange('s/\\/\\\\/',-1,syserrortext) )))))))))))))!!'"'; end; else syserrortext=cats('"',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(symget('syswarningtext')); if findc(syswarningtext,'"\'!!'0A0D09000E0F010210111A'x) then do; syswarningtext='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ prxchange('s/\x0D/\r/',-1, /* carriage return */ prxchange('s/\x09/\\t/',-1, /* tab */ prxchange('s/\x00/\\u0000/',-1, /* NUL */ prxchange('s/\x0E/\\u000E/',-1, /* SS */ prxchange('s/\x0F/\\u000F/',-1, /* SF */ prxchange('s/\x01/\\u0001/',-1, /* SOH */ prxchange('s/\x02/\\u0002/',-1, /* STX */ prxchange('s/\x10/\\u0010/',-1, /* DLE */ prxchange('s/\x11/\\u0011/',-1, /* DC1 */ prxchange('s/\x1A/\\u001A/',-1, /* SUB */ prxchange('s/\\/\\\\/',-1,syswarningtext) )))))))))))))!!'"'; end; else syswarningtext=cats('"',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_getuniquelibref(prefix=mc); %local x maxtries; %if ( %length(&prefix) gt 7 ) %then %do; %put %str(ERR)OR: The prefix parameter cannot exceed 7 characters.; 0 %return; %end; %else %if (%sysfunc(NVALID(&prefix,v7))=0) %then %do; %put %str(ERR)OR: Invalid prefix (&prefix); 0 %return; %end; /* Set maxtries equal to '10 to the power of [# unused characters] - 1' */ %let maxtries=%eval(10**(8-%length(&prefix))-1); %do x = 0 %to &maxtries; %if %sysfunc(libref(&prefix&x)) ne 0 %then %do; &prefix&x %return; %end; %let x = %eval(&x + 1); %end; %put %str(ERR)OR: No usable libref in range &prefix.0-&maxtries; %put %str(ERR)OR- Try reducing the prefix or deleting some libraries!; 0 %mend mf_getuniquelibref; %macro mf_isblank(param )/*/STORE SOURCE*/; %sysevalf(%superq(param)=,boolean) %mend mf_isblank; %macro mf_mval(var); %if %symexist(&var) %then %do; %superq(&var) %end; %mend mf_mval; %macro mf_trimstr(basestr,trimstr); %local baselen trimlen trimval; /* return if basestr is shorter than trimstr (or 0) */ %let baselen=%length(%superq(basestr)); %let trimlen=%length(%superq(trimstr)); %if &baselen < &trimlen or &baselen=0 %then %return; /* obtain the characters from the end of basestr */ %let trimval=%qsubstr(%superq(basestr) ,%length(%superq(basestr))-&trimlen+1 ,&trimlen); /* compare and if matching, chop it off! */ %if %superq(basestr)=%superq(trimstr) %then %do; %return; %end; %else %if %superq(trimval)=%superq(trimstr) %then %do; %qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen) %end; %else %do; &basestr %end; %mend mf_trimstr; %macro mf_getplatform(switch )/*/STORE SOURCE*/; %local a b c; %if &switch.NONE=NONE %then %do; %if %symexist(sasjsprocessmode) %then %do; %if &sasjsprocessmode=Stored Program %then %do; SASJS %return; %end; %end; %if %symexist(sysprocessmode) %then %do; %if "&sysprocessmode"="SAS Object Server" or "&sysprocessmode"= "SAS Compute Server" %then %do; SASVIYA %end; %else %if "&sysprocessmode"="SAS Stored Process Server" or "&sysprocessmode"="SAS Workspace Server" %then %do; SASMETA %return; %end; %else %do; BASESAS %return; %end; %end; %else %if %symexist(_metaport) or %symexist(_metauser) %then %do; SASMETA %return; %end; %else %do; BASESAS %return; %end; %end; %else %if &switch=SASSTUDIO %then %do; /* return the version of SAS Studio else 0 */ %if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do; %let a=%mf_mval(_CLIENTVERSION); %let b=%scan(&a,1,.); %if %eval(&b >2) %then %do; &b %end; %else 0; %end; %else 0; %end; %else %if &switch=VIYARESTAPI %then %do; %mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/) %end; %mend mf_getplatform; %macro mfv_existfolder(path )/*/STORE SOURCE*/; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot enter mfv_existfolder.sas with syscc=&syscc ) %local fref rc var; %let fref=%mf_getuniquefileref(); %if %sysfunc(filename(fref,,filesrvc,folderPath="&path"))=0 %then %do; 1 %let var=_FILESRVC_&fref._URI; %let rc=%sysfunc(filename(fref)); %symdel &var; %end; %else %do; 0 %let syscc=0; %end; %mf_abort( iftrue=(&syscc ne 0), msg=Cannot leave mfv_existfolder.sas with syscc=&syscc ) %mend mfv_existfolder; %macro mv_createfolder(path= ,access_token_var=ACCESS_TOKEN ,grant_type=sas_services ,mdebug=0 ,outds=_null_ ); %local dbg; %if &mdebug=1 %then %do; %put &sysmacroname entry vars:; %put _local_; %end; %else %let dbg=*; %mp_abort( iftrue=(&syscc ne 0), msg=Cannot enter &sysmacroname with syscc=&syscc ) %if %mfv_existfolder(&path)=1 %then %do; %&dbg.put &sysmacroname: &path already exists; data &outds; self_uri="%mfv_getpathuri(&path)"; output; stop; run; %return; %end; %mp_abort(iftrue=(&syscc ne 0),msg=syscc=&syscc when folder checking) %local oauth_bearer; %if &grant_type=detect %then %do; %if %symexist(&access_token_var) %then %let grant_type=authorization_code; %else %let grant_type=sas_services; %end; %if &grant_type=sas_services %then %do; %let oauth_bearer=oauth_bearer=sas_services; %let &access_token_var=; %end; %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password and &grant_type ne sas_services ) ,mac=&sysmacroname ,msg=%str(Invalid value for grant_type: &grant_type) ) %mp_abort(iftrue=(%mf_isblank(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) %mp_abort(iftrue=(%length(&path)=1) ,mac=&sysmacroname ,msg=%str(path value must be provided) ) options noquotelenmax; %local subfolder_cnt; /* determine the number of subfolders */ %let subfolder_cnt=%sysfunc(countw(&path,/)); %local base_uri; /* location of rest apis */ %let base_uri=%mf_getplatform(VIYARESTAPI); %local href; /* resource address (none for root) */ %let href="&base_uri/folders/folders?parentFolderUri=/folders/folders/none"; %local x newpath subfolder; %do x=1 %to &subfolder_cnt; %let subfolder=%scan(&path,&x,%str(/)); %let newpath=&newpath/&subfolder; %local fname1; %let fname1=%mf_getuniquefileref(); %put &sysmacroname checking to see if &newpath exists; proc http method='GET' out=&fname1 &oauth_bearer url="&base_uri/folders/folders/@item?path=&newpath"; %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %if &SYS_PROCHTTP_STATUS_CODE=401 %then %do; /* relates to: https://github.com/sasjs/core/issues/400 */ %put 401 thrown in &sysmacroname; %put sleeping: %sysfunc(sleep(12,1)) secs - will try again; proc http method='GET' out=&fname1 &oauth_bearer url="&base_uri/folders/folders/@item?path=&newpath"; %if &grant_type=authorization_code %then %do; headers "Authorization"="Bearer &&&access_token_var"; %end; run; %end; %local libref1; %let libref1=%mf_getuniquelibref(); libname &libref1 JSON fileref=&fname1; %mp_abort( iftrue=( &SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 404 ) ,mac=mv_createfolder124 ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %if &mdebug=1 %then %do; %put &sysmacroname following check to see if &newpath exists:; %put _local_; data _null_; infile &fname1; input; putlog _infile_; run; %end; %if &SYS_PROCHTTP_STATUS_CODE=200 %then %do; data _null_; set &libref1..links; if rel='createChild' then call symputx('href',quote(cats("&base_uri",href)),'l'); run; %end; %else %if &SYS_PROCHTTP_STATUS_CODE=404 %then %do; %put &sysmacroname &newpath not found - creating it now; %local fname2; %let fname2=%mf_getuniquefileref(); data _null_; length json $1000; json=cats("'" ,'{"name":' ,quote(trim(symget('subfolder'))) ,',"description":' ,quote("&subfolder, created by &sysmacroname") ,',"type":"folder"}' ,"'" ); call symputx('json',json,'l'); run; proc http method='POST' in=&json out=&fname2 &oauth_bearer url=%unquote(%superq(href)); headers %if &grant_type=authorization_code %then %do; "Authorization"="Bearer &&&access_token_var" %end; 'Content-Type'='application/vnd.sas.content.folder+json' 'Accept'='application/vnd.sas.content.folder+json'; run; %if &SYS_PROCHTTP_STATUS_CODE ne 201 %then %do; %put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE; %end; %mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201) ,mac=&sysmacroname ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE) ) %local libref2; %let libref2=%mf_getuniquelibref(); libname &libref2 JSON fileref=&fname2; %put &sysmacroname &newpath now created. Grabbing the follow on link ; data &outds; set &libref2..links; if rel='createChild' then do; call symputx('href',quote(cats("&base_uri",href)),'l'); &dbg put (_all_)(=); end; if method='GET' and rel='self' then do; self_uri=uri; output; end; keep self_uri ; run; libname &libref2 clear; filename &fname2 clear; %end; filename &fname1 clear; libname &libref1 clear; %end; %mp_abort( iftrue=(&syscc ne 0), msg=Cannot leave &sysmacroname with syscc=&syscc ) %mend mv_createfolder; * BuildInit start; /** @file buildinitviya.sas @brief initialisation for viya build program

SAS Macros

@li mfv_getfolderpath.sas @li mfv_getpathuri.sas @li mv_createfolder.sas **/ options nonotes nomprint; /* update apploc to default to user home area if not set */ %let apploc=%sysfunc(ifc("&apploc"="/Public/app/dcplaceholder" ,/Users/&sysuserid/My Folder/Data Controller ,&apploc)); /* ensure the correct casing of appLoc */ %mv_createfolder(path=&apploc) %let apploc=%mfv_getfolderpath(%mfv_getpathuri(&apploc)); * BuildInit end; %let path=services; %let filename=DC.html; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHRpdGxlPkRhdGEgQ29udHJvbGxlcjwvdGl0bGU+CiAgICA8IS0tIDxiYXNlIGhyZWY9Ii8iPiAtLT4KCiAgICA8IS0tCiAgICAgIFNBUyBWQSBkYXRhLWRyaXZlbiBj'@; put 'b250ZW50OiBlYXJsaWVzdC1wb3NzaWJsZSBtZXNzYWdlIGNhcHR1cmUgcnVucyBiZWZvcmUKICAgICAgQW5ndWxhciBib290c3RyYXBzLiBJdCBpcyB0aGUgYHZhLWVhcmx5YCBnbG9iYWwgc2NyaXB0IGJ1bmRsZWQgdmlhCiAgICAgIGFuZ3VsYXIuanNvbiAoc3JjL2Fzc2V0cy92YS1lYXJs'@; put 'eS5qcykgYW5kIGF1dG8taW5qZWN0ZWQgaGVyZSBhdCBidWlsZCB0aW1lCiAgICAgIOKAlCBleHRlcm5hbCAobm90IGlubGluZSkgc28gaXQgcGFzc2VzIGEgc3RyaWN0IENTUCwgYW5kIGl0IHNlbGYtZ3VhcmRzIG9uCiAgICAgID9lbWJlZD12YSBzbyBpdCBpcyBpbmVydCBpbiBub3JtYWwg'@; put 'dXNlLiBTZWUKICAgICAgVmFNZXNzYWdpbmdTZXJ2aWNlLnJlcGxheUVhcmx5TWVzc2FnZXMuCiAgICAtLT4KCiAgICA8IS0tIG1ldGEgdGFncyAtLT4KICAgIDwhLS0KICAgICAgTk9URTogRGF0YSBDb250cm9sbGVyIG11c3QgcnVuIGVudGlyZWx5IG9mZmxpbmUgLyBvbi1wcmVtLiBOZXZl'@; put 'ciByZWZlcmVuY2UKICAgICAgZXh0ZXJuYWwgYXNzZXRzIChmb250cywgaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXMsIENETiBsaW5rcywgb3IgcmVtb3RlCiAgICAgIG9nOi9pdGVtcHJvcCBVUkxzKSBoZXJlIG9yIGFueXdoZXJlIGluIHRoZSBidWlsdCBwcm9kdWN0LiBBbGwgYXNzZXRzIG11'@; put 'c3QKICAgICAgYmUgYnVuZGxlZCBhbmQgc2VydmVkIGxvY2FsbHkuCiAgICAtLT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJDYXB0dXJlLCBSZXZpZXcsIGFuZCBBcHByb3ZlIj4KICAgIDxtZXRhIGl0ZW1wcm9wPSJuYW1lIiBjb250ZW50PSJEYXRhIENvbnRyb2xs'@; put 'ZXIgZm9yIFNBU8KuIj4KICAgIDxtZXRhIGl0ZW1wcm9wPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQ2FwdHVyZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUi'@; put 'IGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJDYXB0dXJlLCBSZXZpZXcsIGFuZCBBcHByb3ZlIj4KCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp'@; put 'ZHRoLCBpbml0aWFsLXNjYWxlPTEiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2Rj'@; put 'cGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2ltYWdlcy9mYXZpY29uLmljbyI+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL3N0eWxlcy4yYjU1ODZlYzUyNzlmMTFhLmNz'@; put 'cyI+PC9oZWFkPgoKICA8IS0tCiAgICAjIyBTQVNKUyBBZGFwdGVyIGNvbmZpZyBkZXRhaWxzICMjCgogICAgKiBhcHBMb2M6IFRoZSBsb2NhdGlvbiBpbiBtZXRhZGF0YSBvciBTQVMgZHJpdmUgd2hlcmUgREMgd2lsbCBiZSBkZXBsb3llZAogICAgKiBzZXJ2ZXJUeXBlOiBlaXRoZXIgU0FT'@; put 'OSwgU0FTVklZQSBvciBTQVNKUwogICAgKiBsb2dpbk1lY2hhbmlzbTogVXNlICdEZWZhdWx0JyBmb3IgcmVndWxhciAodXNlci9wYXNzKSBsb2dpbnMsIG9yICdSZWRpcmVjdGVkJyBmb3IgMkZBL1NTTwogICAgKiBkZWJ1ZzogV2hldGhlciB0byBlbmFibGUgZGVidWcgb24gc3RhcnR1cAoK'@; put 'ICAgICMjIFZpeWEgb25seSBzZXR0aW5ncyAjIwogICAgKiBhZG1pbkdyb3VwOiBUaGlzIGdyb3VwIHdpbGwgaGF2ZSB1bnJlc3RyaWN0ZWQgYWNjZXNzIChWaXlhIE9ubHkpCiAgICAqIGRjUGF0aDogVGhlIHBoeXNpY2FsIGxvY2F0aW9uIGluIHdoaWNoIHRvIGRlcGxveSB0aGUgc3RhZ2lu'@; put 'ZyBhcmVhIChWaXlhIG9ubHkpCiAgICAqIHVzZUNvbXB1dGVBcGk6IENvbm5lY3Rpb24gbWV0aG9kIChWaXlhIG9ubHkpCiAgICAqIGNvbnRleHROYW1lOiBDb21wdXRlIENvbnRleHQgKFZpeWEgb25seSkKCiAgLS0+CgogIDxib2R5IGNkcy10aGVtZT0ibGlnaHQiIGNsYXNzPSJtLTAiPjxz'@; put 'YXNqcyBzZXJ2ZXJ1cmw9IiIgYXBwbG9jPSIvUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyIiBzZXJ2ZXJ0eXBlPSJTQVNWSVlBIiBsb2dpbm1lY2hhbmlzbT0iUmVkaXJlY3RlZCIgZGVidWc9ImZhbHNlIiB1c2Vjb21wdXRlYXBpPSJudWxsIiBydW5hc3Rhc2s9InRydWUiIGNvbnRleHRuYW1l'@; put 'PSJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiIGFkbWluZ3JvdXA9IlNBU0FkbWluaXN0cmF0b3JzIiBob3RsaWNlbmNla2V5PSJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbiI+CiAgPC9zYXNqcz4KCiAgCiAgICA8bXktYXBwPjwvbXktYXBwPgogIDxzY3JpcHQgc3Jj'@; put 'PSIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL3J1bnRpbWUuYTg4ODI0MjE3ZjZkYjdjZC5qcyIgdHlwZT0ibW9kdWxlIj48L3NjcmlwdD48c2NyaXB0IHNyYz0iL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9k'@; put 'Y3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9wb2x5ZmlsbHMuMmI5NjBmMWVjYWYxN2Y4YS5qcyIgdHlwZT0ibW9kdWxlIj48L3NjcmlwdD48c2NyaXB0IHNyYz0iL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9zY3JpcHRzLjgw'@; put 'YjMzZjkxZjZmMDJiZDQuanMiIGRlZmVyPSIiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL3ZhLWVhcmx5LjhlN2ZhMzc3MjNhY2JkOWYuanMiIGRlZmVyPSIiPjwvc2NyaXB0PjxzY3Jp'@; put 'cHQgc3JjPSIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL21haW4uYzg2NTlmYWYwNzQ1ZWY1Yi5qcyIgdHlwZT0ibW9kdWxlIj48L3NjcmlwdD4KCjwvYm9keT48L2h0bWw+'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let path=services/admin; %let service=demodata; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; 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 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 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 mf_uid('; put ')/*/STORE SOURCE*/;'; put '%local today now;'; put '%let today=%sysfunc(today(),yymmddn8.);'; put '%let now=%sysfunc(compress(%sysfunc(time(),tod12.3),:.));'; put '&today._&now._&sysjobid._%sysevalf(%sysfunc(ranuni(0))*999,CEIL)'; put '%mend mf_uid;'; 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_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 mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref dttm ds1;'; put '%let inref=%mf_getuniquefileref();'; put '%let outref=%mf_getuniquefileref();'; put '%if &outfile=0 %then %let outfile=&infile;'; put '%let ds1=%mf_getuniquename(prefix=allchars);'; put '%let ds2=%mf_getuniquename(prefix=startmark);'; 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) secs to run; */'; put '%mend mp_replace;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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_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=SASjs Default 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 ',LogicalServerType=Sps'; 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 '/* check LogicalServerType validity */'; put '%mp_abort('; put 'iftrue=('; put '&LogicalServerType ne Sps'; put 'and &LogicalServerType ne Wks'; put 'and &LogicalServerType ne Any'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for LogicalServerType (&LogicalServerType))'; 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(''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 ms_deletefile(driveloc'; put ',mdebug=0'; put ');'; put '%local headref;'; put '%let headref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &headref lrecl=1000;'; put 'infile "&_sasjs_tokenfile" lrecl=1000;'; put 'input;'; put 'put _infile_;'; put 'run;'; put 'proc http method=''DELETE'' headerin=&headref'; put 'url="&_sasjs_apiserverurl/SASjsApi/drive/file?_filePath=&driveloc";'; put '%if &mdebug=1 %then %do;'; put 'debug level=2;'; put '%end;'; put 'run;'; put 'filename &headref clear;'; put '%mend ms_deletefile;'; put '%macro ms_createfile(driveloc'; put ',inref=0'; put ',mdebug=0'; put ');'; put '/* first, delete in case it exists */'; put '%ms_deletefile(&driveloc,mdebug=&mdebug)'; put '%local fname0 fname1 fname2 boundary fname statcd msg optval;'; put '%let fname0=%mf_getuniquefileref();'; put '%let fname1=%mf_getuniquefileref();'; put '%let fname2=%mf_getuniquefileref();'; put '%let boundary=%mf_getuniquename();'; put '/* avoid sending bom marker to API */'; put '%let optval=%sysfunc(getoption(bomfile));'; put 'options nobomfile;'; put 'data _null_;'; put 'file &fname0 termstr=crlf lrecl=32767;'; put 'infile &inref end=eof lrecl=32767;'; put 'if _n_ = 1 then do;'; put 'put "--&boundary.";'; put 'put ''Content-Disposition: form-data; name="filePath"'';'; put 'put ;'; put 'put "&driveloc";'; put 'put "--&boundary";'; put 'put ''Content-Disposition: form-data; name="file"; filename="ignore.sas"'';'; put 'put "Content-Type: text/plain";'; put 'put ;'; put 'end;'; put 'input;'; put 'put _infile_; /* add the actual file to be sent */'; put 'if eof then do;'; put 'put ;'; put 'put "--&boundary--";'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file &fname1 lrecl=1000;'; put 'infile "&_sasjs_tokenfile" lrecl=1000;'; put 'input;'; put 'if _n_=1 then put "Content-Type: multipart/form-data; boundary=&boundary";'; put 'put _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname0 lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'data _null_;'; put 'infile &fname1 lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'proc http method=''POST'' in=&fname0 headerin=&fname1 out=&fname2'; put 'url="&_sasjs_apiserverurl/SASjsApi/drive/file";'; put '%if &mdebug=1 %then %do;'; put 'debug level=1;'; put '%end;'; put 'run;'; put '%let statcd=0;'; put 'data _null_;'; put 'infile &fname2;'; put 'input;'; put 'putlog _infile_;'; put 'if _infile_=''{"status":"success"}'' then call symputx(''statcd'',1,''l'');'; put 'else call symputx(''msg'',_infile_,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&statcd=0)'; put ',mac=ms_createfile.sas'; put ',msg=%superq(msg)'; put ')'; put '/* reset options */'; put 'options &optval;'; put '%mend ms_createfile;'; put '%macro mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mfv_getpathuri(filepath'; put ')/*/STORE SOURCE*/;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter &sysmacroname with syscc=&syscc'; put ')'; put '%local fref rc path name var /* var is used to avoid delete timing issue */;'; put '%let fref=%mf_getuniquefileref();'; put '%let name=%scan(&filepath,-1,/);'; put '%let path=%substr(&filepath,1,%length(&filepath)-%length(&name)-1);'; put '%if %sysfunc(filename(fref,,filesrvc,folderPath="&path" filename="&name"))=0'; put '%then %do;'; put '%let var=_FILESRVC_&fref._URI;'; put '%str(&&&var)'; put '%let rc=%sysfunc(filename(fref));'; put '%symdel &var;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: did not find &filepath;'; put '%let syscc=0;'; put '%end;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave &sysmacroname with syscc=&syscc'; put ')'; put '%mend mfv_getpathuri;'; put '%macro mfv_existfolder(path'; put ')/*/STORE SOURCE*/;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter mfv_existfolder.sas with syscc=&syscc'; put ')'; put '%local fref rc var;'; put '%let fref=%mf_getuniquefileref();'; put '%if %sysfunc(filename(fref,,filesrvc,folderPath="&path"))=0 %then %do;'; put '1'; put '%let var=_FILESRVC_&fref._URI;'; put '%let rc=%sysfunc(filename(fref));'; put '%symdel &var;'; put '%end;'; put '%else %do;'; put '0'; put '%let syscc=0;'; put '%end;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave mfv_existfolder.sas with syscc=&syscc'; put ')'; put '%mend mfv_existfolder;'; put '%macro mv_createfolder(path='; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ',outds=_null_'; put ');'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter &sysmacroname with syscc=&syscc'; put ')'; put '%if %mfv_existfolder(&path)=1 %then %do;'; put '%&dbg.put &sysmacroname: &path already exists;'; put 'data &outds;'; put 'self_uri="%mfv_getpathuri(&path)";'; put 'output;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue=(&syscc ne 0),msg=syscc=&syscc when folder checking)'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%length(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local subfolder_cnt; /* determine the number of subfolders */'; put '%let subfolder_cnt=%sysfunc(countw(&path,/));'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%local href; /* resource address (none for root) */'; put '%let href="&base_uri/folders/folders?parentFolderUri=/folders/folders/none";'; put '%local x newpath subfolder;'; put '%do x=1 %to &subfolder_cnt;'; put '%let subfolder=%scan(&path,&x,%str(/));'; put '%let newpath=&newpath/&subfolder;'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%put &sysmacroname checking to see if &newpath exists;'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&newpath";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE=401 %then %do;'; put '/* relates to: https://github.com/sasjs/core/issues/400 */'; put '%put 401 thrown in &sysmacroname;'; put '%put sleeping: %sysfunc(sleep(12,1)) secs - will try again;'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&newpath";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%end;'; put '%local libref1;'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put '%mp_abort('; put 'iftrue=('; put '&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 404'; put ')'; put ',mac=mv_createfolder124'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname following check to see if &newpath exists:;'; put '%put _local_;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%if &SYS_PROCHTTP_STATUS_CODE=200 %then %do;'; put 'data _null_;'; put 'set &libref1..links;'; put 'if rel=''createChild'' then'; put 'call symputx(''href'',quote(cats("&base_uri",href)),''l'');'; put 'run;'; put '%end;'; put '%else %if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put &sysmacroname &newpath not found - creating it now;'; put '%local fname2;'; put '%let fname2=%mf_getuniquefileref();'; put 'data _null_;'; put 'length json $1000;'; put 'json=cats("''"'; put ',''{"name":'''; put ',quote(trim(symget(''subfolder'')))'; put ','',"description":'''; put ',quote("&subfolder, created by &sysmacroname")'; put ','',"type":"folder"}'''; put ',"''"'; put ');'; put 'call symputx(''json'',json,''l'');'; put 'run;'; put 'proc http method=''POST'''; put 'in=&json'; put 'out=&fname2'; put '&oauth_bearer'; put 'url=%unquote(%superq(href));'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '''Content-Type''=''application/vnd.sas.content.folder+json'''; put '''Accept''=''application/vnd.sas.content.folder+json'';'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 201 %then %do;'; put '%put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%end;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%local libref2;'; put '%let libref2=%mf_getuniquelibref();'; put 'libname &libref2 JSON fileref=&fname2;'; put '%put &sysmacroname &newpath now created. Grabbing the follow on link ;'; put 'data &outds;'; put 'set &libref2..links;'; put 'if rel=''createChild'' then do;'; put 'call symputx(''href'',quote(cats("&base_uri",href)),''l'');'; put '&dbg put (_all_)(=);'; put 'end;'; put 'if method=''GET'' and rel=''self'' then do;'; put 'self_uri=uri;'; put 'output;'; put 'end;'; put 'keep self_uri ;'; put 'run;'; put 'libname &libref2 clear;'; put 'filename &fname2 clear;'; put '%end;'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave &sysmacroname with syscc=&syscc'; put ')'; put '%mend mv_createfolder;'; put '%macro mv_deletejes(path='; put ',name='; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&name)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(name value must be provided)'; put ')'; put '%mp_abort(iftrue=(%length(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetch the members of the folder to get the uri */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&path";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put &sysmacroname: Folder &path NOT FOUND - nothing to delete!;'; put '%return;'; put '%end;'; put '%else %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%mp_abort(mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put '/* grab the follow on link */'; put '%local libref1;'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data _null_;'; put 'set &libref1..links;'; put 'if rel=''members'' then call symputx(''mref'',quote("&base_uri"!!trim(href)),''l'');'; put 'run;'; put '/* get the children */'; put '%local fname1a;'; put '%let fname1a=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1a &oauth_bearer'; put 'url=%unquote(%superq(mref));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;'; put '%put &=sysmacroname &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%end;'; put '%local libref1a;'; put '%let libref1a=%mf_getuniquelibref();'; put 'libname &libref1a JSON fileref=&fname1a;'; put '%local uri found;'; put '%let found=0;'; put '/* %put Getting object uri from &libref1a..items; */'; put 'data _null_;'; put 'length contenttype name uri $1000;'; put 'call missing(of _all_);'; put 'set &libref1a..items;'; put 'if contenttype=''jobDefinition'' and upcase(name)="%upcase(&name)" then do;'; put 'call symputx(''uri'',cats("&base_uri",uri),''l'');'; put 'call symputx(''found'',1,''l'');'; put 'end;'; put 'run;'; put '%if &found=0 %then %do;'; put '%put NOTE:;%put NOTE- &sysmacroname: &path/&name NOT FOUND;%put NOTE- ;'; put '%return;'; put '%end;'; put 'proc http method="DELETE" url="&uri" &oauth_bearer;'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="*/*";/**/'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 204 %then %do;'; put 'data _null_; infile &fname2; input; putlog _infile_;run;'; put '%mp_abort(mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put '%else %put &sysmacroname: &path/&name deleted;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put 'filename &fname1a clear;'; put 'libname &libref1a clear;'; put '%mend mv_deletejes;'; put '%macro mv_createjob(path='; put ',name='; put ',desc=Created by the mv_createjob.sas macro'; put ',precode='; put ',code=ft15f001'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',replace=YES'; put ',debug=0'; put ',contextname='; put ',addjesbeginendmacros=false'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '/* initial validation checking */'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%length(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&name)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(name value must be provided)'; put ')'; put 'options noquotelenmax;'; put '* remove any trailing slash ;'; put '%if "%substr(&path,%length(&path),1)" = "/" %then'; put '%let path=%substr(&path,1,%length(&path)-1);'; put '/* ensure folder exists */'; put '%put &sysmacroname: Path &path being checked / created;'; put '%mv_createfolder(path=&path)'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&path";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &debug %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '/* path exists. Grab follow on link to check members */'; put '%local libref1;'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data _null_;'; put 'set &libref1..links;'; put 'if rel=''members'' then call symputx(''membercheck'',quote("&base_uri"!!trim(href)),''l'');'; put 'else if rel=''self'' then call symputx(''parentFolderUri'',href,''l'');'; put 'run;'; put 'data _null_;'; put 'set &libref1..root;'; put 'call symputx(''folderid'',id,''l'');'; put 'run;'; put '%local fname2;'; put '%let fname2=%mf_getuniquefileref();'; put 'proc http method=''GET'''; put 'out=&fname2'; put '&oauth_bearer'; put 'url=%unquote(%superq(membercheck));'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '''Accept''=''application/vnd.sas.collection+json'''; put '''Accept-Language''=''string'';'; put '%if &debug=1 %then %do;'; put 'debug level = 3;'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname2;input;putlog _infile_;run;*/'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%if %upcase(&replace)=YES %then %do;'; put '%mv_deletejes(path=&path, name=&name)'; put '%end;'; put '%else %do;'; put '/* check that job does not already exist in that folder */'; put '%local libref2;'; put '%let libref2=%mf_getuniquelibref();'; put 'libname &libref2 JSON fileref=&fname2;'; put '%local exists; %let exists=0;'; put 'data _null_;'; put 'set &libref2..items;'; put 'if contenttype=''jobDefinition'' and upcase(name)="%upcase(&name)" then'; put 'call symputx(''exists'',1,''l'');'; put 'run;'; put '%mp_abort(iftrue=(&exists=1)'; put ',mac=&sysmacroname'; put ',msg=%str(Job &name already exists in &path)'; put ')'; put 'libname &libref2 clear;'; put '%end;'; put '/* set up the body of the request to create the service */'; put '%local fname3 comma;'; put '%let fname3=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fname3 TERMSTR='' '';'; put 'length string $32767;'; put 'string=cats(''{"version": 0,"name":"'''; put ',"&name"'; put ',''","type":"Compute","parameters":['''; put '%if &addjesbeginendmacros ne 0 %then %do;'; put ',''{"name":"_addjesbeginendmacros"'''; put ','',"type":"CHARACTER","defaultValue":"'''; put ',"&addjesbeginendmacros"'; put ',''"}'''; put '%let comma=%str(,);'; put '%end;'; put ');'; put 'context=quote(cats(symget(''contextname'')));'; put 'if context ne ''""'' then do;'; put 'string=cats(string'; put ',"&comma"'; put ',''{"version": 1,"name": "_contextName","defaultValue":'''; put ',context,'',"type":"CHARACTER","label":"Context Name","required": false}'''; put ');'; put 'end;'; put 'string=cats(string,''],"code":"'');'; put 'put string;'; put 'run;'; put '/* insert the code, escaping double quotes and carriage returns */'; put '%local x fref freflist;'; put '%let freflist= &precode &code ;'; put '%do x=1 %to %sysfunc(countw(&freflist));'; put '%let fref=%scan(&freflist,&x);'; put '%put &sysmacroname: adding &fref;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("&fref","I",1,"B");'; put 'fileid = fopen("&fname3","A",1,"B");'; put 'rec = "20"x;'; put 'do while(fread(filein)=0);'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then do; /* DOUBLE QUOTE */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''"'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''0A''x then do; /* LF */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''n'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''0D''x then do; /* CR */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''r'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''09''x then do; /* TAB */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''t'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''5C''x then do; /* BACKSLASH */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''01''x then do; /* Unprintable */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''u'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''1'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''07''x then do; /* Bell Char */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''u'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''7'');rc =fwrite(fileid);'; put 'end;'; put 'else if rec=''1B''x then do; /* escape char */'; put 'rc =fput(fileid,''\'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''u'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''0'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''1'');rc =fwrite(fileid);'; put 'rc =fput(fileid,''B'');rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%end;'; put '/* finish off the body of the code file loaded to JES */'; put 'data _null_;'; put 'file &fname3 mod TERMSTR='' '';'; put 'put ''"}'';'; put 'run;'; put '/* now we can create the job!! */'; put '%local fname4;'; put '%let fname4=%mf_getuniquefileref();'; put 'proc http method=''POST'''; put 'in=&fname3'; put 'out=&fname4'; put '&oauth_bearer'; put 'url="&base_uri/jobDefinitions/definitions?parentFolderUri=&parentFolderUri";'; put 'headers ''Content-Type''=''application/vnd.sas.job.definition+json'''; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/vnd.sas.job.definition+json";'; put '%if &debug=1 %then %do;'; put 'debug level = 3;'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname4;input;putlog _infile_;run;*/'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put 'filename &fname3 clear;'; put 'filename &fname4 clear;'; put 'libname &libref1 clear;'; put '/* get the url so we can give a helpful log message */'; put '%local url;'; put 'data _null_;'; 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";'; put 'end;'; put 'else url="&systcpiphostname";'; put 'call symputx(''url'',url);'; put 'run;'; put '%put &sysmacroname: Job &name successfully created in &path;'; put '%put &sysmacroname:;'; put '%put &sysmacroname: Check it out here:;'; put '%put &sysmacroname:;%put;'; put '%put &url/SASJobExecution?_PROGRAM=&path/&name;%put;'; put '%put &sysmacroname:;'; put '%put &sysmacroname:;'; put '%mend mv_createjob;'; put '%macro mx_createjob(path=HOME'; put ',name=initJob'; put ',precode='; put ',code=ft15f001'; put ',desc=This job was created by the mx_createjob macro'; put ',replace=YES'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%if &syscc ge 4 %then %do;'; put '%put syscc=&syscc - &sysmacroname will not execute in this state;'; put '%return;'; put '%end;'; put '/* combine precode and code into a single file */'; put '%local tempref x fref freflist;'; put '%let tempref=%mf_getuniquefileref();'; put '%local work tmpfile;'; put '%let work=%sysfunc(pathname(work));'; put '%let tmpfile=&tempref..sas;'; put 'filename &tempref "&work/&tmpfile";'; put '%let freflist=&precode &code ;'; put '%do x=1 %to %sysfunc(countw(&freflist));'; put '%let fref=%scan(&freflist,&x);'; put '%put &sysmacroname: adding &fref;'; put 'data _null_;'; put 'file &tempref lrecl=3000 termstr=crlf mod;'; put 'infile &fref lrecl=3000;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%local platform; %let platform=%mf_getplatform();'; put '%if &platform=SASVIYA %then %do;'; put '%if "&path"="HOME" %then %let path=/Users/&sysuserid/My Folder;'; put '%mv_createjob(path=&path'; put ',name=&name'; put ',code=&tempref'; put ',desc=&desc'; put ',replace=&replace'; put ')'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%if "&path"="HOME" %then %let path=/Users/&_sasjs_username/My Folder;'; put '%ms_createfile(&path/&name..sas'; put ',inref=&tempref'; put ',mdebug=&mdebug'; put ')'; put '%end;'; put '%else %do;'; put '%if "&path"="HOME" %then %let path=/User Folders/&_METAPERSON/My Folder;'; put '%mm_createstp(stpname=&name'; put ',filename=&tmpfile'; put ',directory=&work'; put ',tree=&path'; put ',stpdesc=&desc'; put ',mDebug=&mdebug'; put ')'; put '%end;'; put 'filename &tempref clear;'; put '%mend mx_createjob;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Creates demo tables and associated config'; put '@details Can be removed in prod installs.'; put 'To activate this job, add the following to SETTINGS:'; put '%let demolib=PUBLIC;'; put 'libname &demolib "%sysfunc(pathname(&dc_libref))/&demolib";'; put '%let joblib=HOOKLIB;'; put 'libname &joblib "%sysfunc(pathname(&dc_libref))/&joblib";'; put '%let dcdemoflag=1;'; put 'Note that this will:'; put '* REPLACE any tables named CARS_EXT or COUNTRIES in the PUBLIC library'; put '* REPLACE all DC config for libraries named PUBLIC'; put '* CREATE a folder called "demo" in the DC Apploc'; put '* CREATE two BASE libraries (HOOKLIB & PUBLIC) in the DC (physical) folder'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li mf_getengine.sas'; put '@li mf_getuser.sas'; put '@li mf_increment.sas'; put '@li mf_nobs.sas'; put '@li mf_uid.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_replace.sas'; put '@li mx_createjob.sas'; put '@author 4GL Apps Ltd'; 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 dcdemoflag=0;'; put 'options dlcreatedir;'; put '%global joblib demolib;'; put '%mpeinit()'; put '%mp_abort(iftrue= (&dcdemoflag ne 1)'; put ',mac=&_program'; put ',msg=%str(Job not configured. See comments in the code.)'; put ')'; put 'data work.cars_ext(index=(carspk=(make model PRODUCTIONDATE) /unique));'; put 'attrib'; put 'MAKE length= $13'; put 'MODEL length= $40'; put 'TYPE length= $8'; put 'ORIGIN length= $6'; put 'COUNTRY length= $30'; put 'POTENTIALBUY length= $6'; put 'COMMENT length= $30'; put 'NOTES length= $30'; put 'CHECKBOXVAR length= $3'; put 'PRODUCTIONDATE length= 8 format=DATE9.'; put ';'; put 'set sashelp.cars;'; put 'retain comment ''n/a'';'; put 'if mod(ceil(ranuni(1)*100),3)=0 then notes=catx('' '',make,type);'; put 'call missing(notes);'; put '/* random / reproducible date between 1960 and 2020 */'; put 'PRODUCTIONDATE=ceil(ranuni(1)*365*60);'; put 'if mod(ceil(ranuni(1)*1000),2)=0 then CHECKBOXVAR=''YES'';'; put 'else CHECKBOXVAR=''No'';'; put 'if mod(ceil(ranuni(1)*1000),3)=0 then POTENTIALBUY=''Maybe'';'; put 'else if mod(ceil(ranuni(1)*1000),2)=0 then POTENTIALBUY=''Yes'';'; put 'else POTENTIALBUY=''No'';'; put 'make=cats(make);'; put 'model=cats(model);'; put 'array cntrs (4) $ 60 _temporary_ ( "Germany" "France" "Poland" "Italy");'; put 'if origin=''USA'' then country=''USA'';'; put 'else if origin=''Asia'' then do;'; put 'if mod(_n_,2)=0 then country=''Japan'';'; put 'else country=''Korea'';'; put 'end;'; put 'else COUNTRY = cntrs[ ceil(dim(cntrs) * ranuni(1))];'; put '*put (_all_)(=);'; put 'run;'; put 'data work.COUNTRIES(index=(countriespk=(origin country) /unique));'; put 'attrib'; put 'ORIGIN length= $6'; put 'COUNTRY length= $30'; put ';'; put 'infile cards dsd;'; put 'input'; put 'ORIGIN :$char.'; put 'COUNTRY :$char.'; put ';'; put 'datalines4;'; put 'Europe,Germany'; put 'Europe,France'; put 'Europe,Poland'; put 'Europe,Italy'; put 'USA,USA'; put 'Asia,Japan'; put 'Asia,Korea'; put ';;;;'; put 'run;'; put 'data work.jobdata;'; put 'length message job $100;'; put 'call missing(of _all_);'; put 'stop;'; put 'run;'; put '%let engine_type=%mf_getengine(&demolib);'; put '%put &=engine_type;'; put '%if &engine_type=CAS %then %do;'; put 'proc cas;'; put 'table.tableExists result=r / name="CARS_EXT" caslib="PUBLIC";'; put 'if r.exists then'; put 'table.dropTable / name="CARS_EXT" caslib="PUBLIC" quiet=TRUE;'; put 'table.tableExists result=r2 / name="COUNTRIES" caslib="PUBLIC";'; put 'if r2.exists then'; put 'table.dropTable / name="COUNTRIES" caslib="PUBLIC" quiet=TRUE;'; put 'table.tableExists result=r2 / name="MPE_AUDIT" caslib="PUBLIC";'; put 'if r2.exists then'; put 'table.dropTable / name="MPE_AUDIT" caslib="PUBLIC" quiet=TRUE;'; put 'quit;'; put 'proc casutil;'; put 'load data=work.CARS_EXT outcaslib="PUBLIC" casout="CARS_EXT" promote;'; put 'load data=work.COUNTRIES outcaslib="PUBLIC" casout="COUNTRIES" promote;'; put 'load data=&dc_libref..MPE_AUDIT'; put 'outcaslib="PUBLIC" casout="MPE_AUDIT" promote;'; put 'run;'; put 'data &joblib..JOBDATA; set work.JOBDATA;run;'; put '%end;'; put '%else %do;'; put 'options replace;'; put 'data &demolib..CARS_EXT; set work.cars_ext;'; put 'data &demolib..COUNTRIES; set work.countries;'; put 'data &joblib..JOBDATA; set work.JOBDATA;run;'; put '%end;'; put '%let apploc=%mf_getapploc(&_program);'; put '%let demolib=%upcase(&demolib);'; put 'proc sql;'; put 'delete from &dc_libref..mpe_tables'; put 'where libref="&demolib" and dsn in (''CARS_EXT'',''COUNTRIES'');'; put 'data append;'; put 'if 0 then set &dc_libref..mpe_tables;'; put 'TX_FROM=0;'; put 'TX_TO=''31DEC9999:23:59:59''dt;'; put 'LIBREF="&demolib";'; put 'LOADTYPE=''UPDATE'';'; put 'NUM_OF_APPROVALS_REQUIRED=1;'; put 'PRE_EDIT_HOOK="&apploc/demo/PREEDIT";'; put 'POST_EDIT_HOOK="&apploc/demo/POSTEDIT";'; put 'PRE_APPROVE_HOOK="&apploc/demo/PREAPPROVE";'; put 'POST_APPROVE_HOOK="&apploc/demo/POSTAPPROVE";'; put 'DSN=''CARS_EXT''; BUSKEY=''MAKE MODEL PRODUCTIONDATE''; output;'; put 'DSN=''COUNTRIES''; BUSKEY=''ORIGIN COUNTRY''; output;'; put 'run;'; put 'proc append base=&dc_libref..MPE_TABLES data=&syslast;'; put 'run;'; put '/* hard coded values for CHECKBOXVAR */'; put '%let rk=1e6;'; put 'proc sql noprint;'; put 'delete from &dc_libref..mpe_selectbox'; put 'where select_lib="&demolib"'; put 'and select_ds in (''CARS_EXT'');'; put 'select max(selectbox_rk) into: rk'; put 'from &dc_libref..mpe_selectbox;'; put 'insert into &dc_libref..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&demolib"'; put ',select_ds="CARS_EXT"'; put ',base_column="CHECKBOXVAR"'; put ',selectbox_value=''Yes'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&demolib"'; put ',select_ds="CARS_EXT"'; put ',base_column="CHECKBOXVAR"'; put ',selectbox_value=''No'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put '/* Table driven values */'; put 'delete from &dc_libref..MPE_VALIDATIONS'; put 'where base_lib="&demolib" and base_ds="CARS_EXT";'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="MAKE"'; put ',rule_type=''HARDSELECT'''; put ',rule_value="SASHELP.CARS.MAKE"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="MODEL"'; put ',rule_type=''HARDSELECT'''; put ',rule_value="SASHELP.CARS.MODEL"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="TYPE"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="SASHELP.CARS.TYPE"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="POTENTIALBUY"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&demolib..CARS_EXT.POTENTIALBUY"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="COMMENT"'; put ',rule_type=''NOTNULL'''; put ',rule_value="n/a"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="ENGINESIZE"'; put ',rule_type=''MINVAL'''; put ',rule_value="1.3"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="ENGINESIZE"'; put ',rule_type=''MAXVAL'''; put ',rule_value="8.3"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=syscc=&syscc during param configuration)'; put ')'; put '/* programmatic values for COUNTRY (Dynamic Dropdown) */'; put 'filename vldtr temp;'; put 'data _null_;'; put 'file vldtr ;'; put 'put ''proc sql;'';'; put 'put ''create table work.vals as'';'; put 'put '' select distinct ORIGIN as raw_value'';'; put 'put " from &demolib..COUNTRIES";'; put 'put '' order by 1;'';'; put 'put ''data work.DYNAMIC_VALUES; set work.vals;display_index=_n_;run;'';'; put 'put '' '';'; put 'put ''proc sql;'';'; put 'put ''create table work.dev as '';'; put 'put '' select a.display_index, a.raw_value'';'; put 'put '' from work.DYNAMIC_VALUES as a'';'; put 'put " left join &demolib..countries as b";'; put 'put " on a.raw_value=b.origin";'; put 'put '' order by display_index;'';'; put 'put ''data work.DYNAMIC_EXTENDED_VALUES; set work.dev;by display_index;'';'; put 'put '' EXTRA_COL_NAME="COUNTRY";'';'; put 'put '' DISPLAY_TYPE="C";'';'; put 'put '' RAW_VALUE_CHAR=raw_value;'';'; put 'put '' RAW_VALUE_NUM=.;'';'; put 'put '' if first.display_index then forced_value=1;'';'; put 'put ''run;'';'; put 'run;'; put '%mx_createjob(path=&apploc/demo'; put ',name=origin,code=vldtr'; put ')'; put 'proc sql;'; put 'insert into &dc_libref..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&demolib"'; put ',base_ds="CARS_EXT"'; put ',base_col="ORIGIN"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="&apploc/demo/origin"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* PRE_EDIT JOB */'; put '%let fvar=XXXXXXXXXXX; /* cannot substitute macvars in parmcards */'; put 'filename ft15f001 temp;'; put 'parmcards4;'; put 'proc sql;'; put 'insert into XXXXXXXXXXX.JOBDATA values('; put '"&orig_libds (%mf_nobs(work.out) obs) fetched for editing %trim('; put ')by %mf_getUser() at %sysfunc(datetime(),datetime19.)","&pgmloc");'; put ';;;;'; put 'filename f1 temp;'; put '%mp_binarycopy(inref=ft15f001, outref=f1)'; put '%mp_replace("%sysfunc(pathname(f1))", findvar=fvar, replacevar=joblib)'; put '%mx_createjob(path=&apploc/demo,name=PREEDIT,code=f1)'; put 'filename ft15f001 clear;'; put '/* POST EDIT JOB */'; put 'filename ft15f001 temp;'; put 'parmcards4;'; put 'proc sql;'; put 'insert into XXXXXXXXXXX.JOBDATA values('; put '"&orig_libds staged %trim('; put ')by %mf_getUser() at %sysfunc(datetime(),datetime19.)","&pgmloc");'; put ';;;;'; put 'filename f2 temp;'; put '%mp_binarycopy(inref=ft15f001, outref=f2)'; put '%mp_replace("%sysfunc(pathname(f2))", findvar=fvar, replacevar=joblib)'; put '%mx_createjob(path=&apploc/demo,name=POSTEDIT,code=f2)'; put 'filename ft15f001 clear;'; put '/* PRE APPROVE JOB */'; put 'filename ft15f001 temp;'; put 'parmcards4;'; put 'proc sql;'; put 'insert into XXXXXXXXXXX.JOBDATA values('; put '"&orig_libds (%mf_nobs(work.staging_ds) obs) under review by %trim('; put ')by %mf_getUser() at %sysfunc(datetime(),datetime19.)","&pgmloc");'; put ';;;;'; put 'filename f3 temp;'; put '%mp_binarycopy(inref=ft15f001, outref=f3)'; put '%mp_replace("%sysfunc(pathname(f3))", findvar=fvar, replacevar=joblib)'; put '%mx_createjob(path=&apploc/demo,name=PREAPPROVE,code=f3)'; put 'filename ft15f001 clear;'; put '/* POST APPROVE JOB */'; put 'filename ft15f001 temp;'; put 'parmcards4;'; put 'proc sql;'; put 'insert into XXXXXXXXXXX.JOBDATA values('; put '"&orig_libds (%mf_nobs(work.staging_ds) obs) approved by %trim('; put ')by %mf_getUser() at %sysfunc(datetime(),datetime19.)","&pgmloc");'; put ';;;;'; put 'filename f4 temp;'; put '%mp_binarycopy(inref=ft15f001, outref=f4)'; put '%mp_replace("%sysfunc(pathname(f4))", findvar=fvar, replacevar=joblib)'; put '%mx_createjob(path=&apploc/demo,name=POSTAPPROVE,code=f4)'; put 'filename ft15f001 clear;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=dirlist; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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_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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 (_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 '* 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Fetches directories to facilitate configuration'; put '@details The service can also be invoked using the following URL param:'; put '@li &parent= (parent path)'; put 'Requires membership of the DC administrators group.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_dirlist.sas'; put '@li mpe_getgroups.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 parent;'; put '%mpeinit()'; put '/* check user is in admin group */'; put '%let cnt=0;'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'proc sql noprint;'; put 'select count(*) into:cnt'; put 'from usergroups'; put 'where groupname="&mpeadmins";'; put '%mp_abort(iftrue= (&cnt=0)'; put ',mac=&_program'; put ',msg=%str(This service is only available to &mpeadmins members)'; put ')'; put '/* if no parent is specified, default to root - read with symget'; put '* (never re-resolved) so macro content in the param cannot execute */'; put '%let is_bad=0;'; put 'data _null_;'; put 'length _parent $512;'; put '_parent=coalescec(symget(''parent''),''/'');'; put 'if index(_parent,''%'')>0 or index(_parent,''&'')>0 then do;'; put 'putlog ''ERR'' ''OR: Invalid parent:'' _parent;'; put 'call symputx(''is_bad'',1,''l'');'; put 'end;'; put 'else call symputx(''parent'',_parent,''g'');'; put 'run;'; put '%mp_abort(iftrue=(&is_bad=1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid parent)'; put ')'; put '%mp_dirlist(path=&parent,outds=dirlist, maxdepth=2)'; put '%webout(OPEN)'; put '%webout(OBJ,dirlist)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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_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_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_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 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=YES'; 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 ',''NLDATM'') 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'',''NLDATE'') 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_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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_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()'; 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 'vlen=varlen(dsid,i);'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',vlen,''.'');'; 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 '/**'; put '* there is not much point importing a short length numeric like this,'; put '* eg with best4., as the resulting variable will still be stored as'; put '* length 8. We need a length or format statement to ensure variable'; put '* is created with the smaller length...'; put '**/'; put 'else if vlen<8 then header=cats(varnm,'':best'',vlen,''.'');'; put 'else header=cats(varnm,'':best32.'');'; 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 '%local vlen&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 '%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 '%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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_ds2cards.sas'; put '@li mp_ds2csv.sas'; put '@li mp_streamfile.sas'; put '@li mp_validatecol.sas'; put '@li mpe_getgroups.sas'; put '@author 4GL Apps Ltd'; 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 dclib islib newlib;'; put '%mpeinit()'; put '/* check user is in admin group */'; put '%let cnt=0;'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'proc sql noprint;'; put 'select count(*) into:cnt'; put 'from usergroups'; put 'where groupname="&mpeadmins";'; put '%mp_abort(iftrue= (&cnt=0)'; put ',mac=&_program'; put ',msg=%str(The DC configuration can only be exported by &mpeadmins members)'; put ')'; put 'data _null_;'; put 'newlib=coalescec(symget(''dclib''),"&mpelib");'; put '%mp_validatecol(newlib,ISLIB,islib)'; put 'call symputx(''islib'',islib);'; put 'call symputx(''newlib'',upcase(newlib));'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&islib ne 1)'; put ',mac=&_program'; put ',msg=%nrstr(&newlib is not a valid libref)'; put ')'; put '%let work=%sysfunc(pathname(work));'; 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 '/* cannot use PROC EXPORT as we need to wrap all csv char values in quotes */'; put '/* cannot use excel as it does not work consistently in all SAS envs */'; put '%mp_ds2csv(&ds,outfile="&work/&newlib..&ds..csv",headerformat=NAME)'; put 'ods package(ProdOutput) add file="&work/&newlib..&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 'if alert_lib="&mpelib" then alert_lib="&newlib";'; 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 'CLS_LIBREF="&newlib";'; 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 'if var_name=''DC_MACROS'' then var_value=tranwrd(var_value,"&mpelib","&newlib");'; 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 'if xl_libref="&mpelib" then xl_libref="&newlib";'; 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 'if rls_libref="&mpelib" then rls_libref="&newlib";'; 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 'if libref="&mpelib" then libref="&newlib";'; 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 'data MPE_XLMAP_INFO;'; put 'set &mpelib..MPE_XLMAP_INFO;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'drop tx_: ;'; put 'if XLMAP_TARGETLIBDS=:"&mpelib.." then'; put 'XLMAP_TARGETLIBDS=tranwrd(XLMAP_TARGETLIBDS,"&mpelib..","&newlib..");'; put 'run;'; put '%conditional_export(MPE_XLMAP_INFO)'; put 'data MPE_XLMAP_RULES;'; put 'set &mpelib..MPE_XLMAP_RULES;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_XLMAP_RULES)'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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_ds2ddl(libref,ds,fref=getddl,flavour=SAS,showlog=YES,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 '%local constraints_used;'; put '%macro addConst();'; 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_ds2ddl;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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_ds2ddl.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'; 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_ds2ddl(&DC_LIBREF'; put ',flavour=&flavour'; put ',schema=&schema'; put ',applydttm=YES'; put ',showlog=NO'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 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_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_REQUEST_LOGS"'; put ',var_value="YES"'; put ',var_active=1'; put ',var_desc=''Setting to NO will prevent each request being logged to the'''; put '!!'' MPE_REQUESTS table Default=YES.'';'; 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 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_REVIEW"'; put ',var_name="HISTORY_ROWS"'; put ',var_value=''100'''; put ',var_active=1'; put ',var_desc=''Number of rows (or additional rows) to return in the HISTORY '''; put '!!''page'';'; 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 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_EMAIL"'; put ',var_name="SUBMITTED_TEMPLATE"'; put ',var_value=''Dear user,''!!''0A''x!!''Please be advised that a change to table'''; put '!!'' &alert_lib..&alert_ds has been proposed by &from_user on the '''; put '!!''&syshostname SAS server.''!!''0A''x!!''Reason provided: '''; put '!!''%superq(SUBMITTED_TXT)'''; put '!!''0A''x!!''This is an automated email by Data Controller for SAS. For '''; put '!!''documentation, please visit https://docs.datacontroller.io'''; put ',var_active=1'; put ',var_desc=''Template email, sent after submitting a change'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_EMAIL"'; put ',var_name="APPROVED_TEMPLATE"'; put ',var_value=''Dear user,''!!''0A''x!!''Please be advised that a change to table'''; put '!!'' &alert_lib..&alert_ds has been approved by &from_user on the '''; put '!!''&syshostname SAS server.''!!''0A''x!!''This is an automated email by Data'''; put '!!'' Controller for SAS. For documentation, please visit '''; put '!!''https://docs.datacontroller.io'''; put ',var_active=1'; put ',var_desc=''Template email, sent after approving a change'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_EMAIL"'; put ',var_name="REJECTED_TEMPLATE"'; put ',var_value=''Dear user,''!!''0A''x!!''Please be advised that a change to table'''; put '!!'' &alert_lib..&alert_ds has been rejected by &from_user on the '''; put '!!''&syshostname SAS server.''!!''0A''x!!''Reason provided: '''; put '!!''%superq(REVIEW_REASON_TXT)'''; put '!!''0A''x!!''This is an automated email by Data Controller for SAS. For '''; put '!!''documentation, please visit https://docs.datacontroller.io'''; put ',var_active=1'; put ',var_desc=''Template email, sent after rejecting a change'';'; 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_xlmap_info'; put '*/'; put 'insert into &lib..mpe_xlmap_info set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_description=''Basel 3 Key Metrics report'''; put ',XLMAP_TARGETLIBDS="&lib..MPE_XLMAP_DATA";'; put '/**'; put '* mpe_xlmap_rules'; put '*/'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:a'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:b'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:b'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:c'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:c'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:d'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:d'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:e'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:e'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:f'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:f'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[1]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/b'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[2]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/c'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[3]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/d'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[4]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/e'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[5]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/f'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[6]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1a/e'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[1]C[5]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1a/f'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[1]C[6]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''ABSOLUTE D10'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/b'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''ABSOLUTE E10'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/c'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[6]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/d'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[8]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/e'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[9]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/f'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[10]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''ABSOLUTE H11'''; put ',xlmap_finish=''RELATIVE R[0]C[1]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:3'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''RELATIVE R[12]C[4]'''; put ',xlmap_finish=''ABSOLUTE I13'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-CR2'''; put ',xlmap_range_id=''CR2-sec1'''; put ',xlmap_sheet=''CR2'''; put ',xlmap_start=''ABSOLUTE D8'''; put ',xlmap_finish=''BLANKROW'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-CR2'''; put ',xlmap_range_id=''CR2-sec2'''; put ',xlmap_sheet=''CR2'''; put ',xlmap_start=''ABSOLUTE D18'''; put ',xlmap_finish=''LASTDOWN'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''SAMPLE'''; put ',xlmap_range_id=''header'''; put ',xlmap_sheet=''/1'''; put ',xlmap_start=''ABSOLUTE B3'''; put ',xlmap_finish=''ABSOLUTE B8'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''SAMPLE'''; put ',xlmap_range_id=''data'''; put ',xlmap_sheet=''/1'''; put ',xlmap_start=''ABSOLUTE B13'''; put ',xlmap_finish=''ABSOLUTE E16'';'; 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="HARDSELECT"'; 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="HARDSELECT_HOOK"'; 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="HIDDEN"'; 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="MAXVAL"'; 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="MINVAL"'; 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_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="NOTNULL"'; 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="NUMBER_FORMAT"'; put ',selectbox_order=8'; 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="READONLY"'; put ',selectbox_order=9'; 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="ROUND"'; put ',selectbox_order=10'; 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=11'; 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=12'; 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="HARDREGEX"'; put ',selectbox_order=13'; 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="SOFTREGEX"'; put ',selectbox_order=14'; 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="HARDFORMULA"'; put ',selectbox_order=15'; 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="SOFTFORMULA"'; put ',selectbox_order=16'; 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_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_VALIDATIONS"'; put ',base_column="RULE_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_SECURITY"'; put ',base_column="DSN"'; 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_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_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_XLMAP_INFO'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''XLMAP_ID'''; put ',notes=''Docs: https://docs.datacontroller.io/complex-excel-uploads'''; put ',post_edit_hook=''services/hooks/mpe_xlmap_info_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_XLMAP_RULES'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''XLMAP_ID XLMAP_RANGE_ID'''; put ',notes=''Docs: https://docs.datacontroller.io/complex-excel-uploads'''; put ',post_edit_hook=''services/hooks/mpe_xlmap_rules_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_XLMAP_DATA'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''LOAD_REF XLMAP_ID XLMAP_RANGE_ID ROW_NO COL_NO'''; put ',notes=''Docs: https://docs.datacontroller.io/complex-excel-uploads'''; 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=''Determines which groups can view/edit/approve which tables'''; put ',post_edit_hook=''services/hooks/mpe_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_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 '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_CATALOG-FC'''; put ',num_of_approvals_required=1'; put ',loadtype=''FORMAT_CAT'''; put ',buskey=''TYPE FMTNAME FMTROW'''; put ',notes=''Sample Format Catalog'''; 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_XLMAP_INFO"'; put ',base_col="XLMAP_ID"'; 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_XLMAP_RULES"'; put ',base_col="XLMAP_ID"'; 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=''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_SECURITY"'; 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="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=''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="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_SUBGROUP_ID"'; put ',rule_type=''NOTNULL'''; 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 '/* test softselect on numeric var (should be ordered numerically) */'; 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_BESTNUM"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_X_TEST.SOME_BESTNUM"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* test hard regex - SOME_CHAR must contain "the" or "data" */'; 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_CHAR"'; put ',rule_type=''HARDREGEX'''; put ',rule_value=''/the|data/i'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* test soft regex - SOME_CHAR should contain the letter "t" */'; 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_CHAR"'; put ',rule_type=''SOFTREGEX'''; put ',rule_value=''/t/'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* test soft regex - PRIMARY_KEY_FIELD should be an integer (yellow if it'; put 'contains a decimal point). All generated keys are integers, so no'; put 'warning shows until a demo user enters a decimal. */'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_X_TEST"'; put ',base_col="PRIMARY_KEY_FIELD"'; put ',rule_type=''SOFTREGEX'''; put ',rule_value=''/^\d+$/'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* test hard regex - SOME_SHORTNUM must not be between 1 and 5. Generated'; put 'data starts at 6, so nothing is blocked until a demo user enters 1-5. */'; 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_SHORTNUM"'; put ',rule_type=''HARDREGEX'''; put ',rule_value=''/^(?![1-5](\.\d+)?$).*/'''; 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 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_XLMAP_INFO"'; put ',base_col="XLMAP_ID"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_XLMAP_RULES.XLMAP_ID"'; 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=8'; 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=8'; 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=8'; 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=8'; 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=8'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=5'; put ',some_char=''= testing the formula situation'''; put ',some_dropdown=''Option 1'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=42'; put ',some_shortnum=8'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=6'; put ',some_char="''=the formula with leading apostrophe"'; put ',some_dropdown=''Option 1'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=42'; put ',some_shortnum=8'; 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=6+round(ranuni(0)*94,1)'; put ',some_bestnum=round(ranuni(0)*100,1);'; put '%end;'; put '/* https://support.sas.com/resources/papers/proceedings/proceedings/sugi27/p056-27.pdf */'; put 'proc format library=&lib..mpe_x_catalog;'; put 'value otdate'; put '.Z = ''Some Zs'''; put '.N = ''Some 9s'''; put 'other = [date9.]'; put ';'; put 'invalue disc'; put '''ABC'' = 0.20'; put '''DEF'' = 0.25'; put '''XYZ'' = 0.00'; put 'other = 0.00'; put ';'; put 'invalue indate'; put '''00000000'' = .Z'; put '''99999999'' = .N'; put 'other = [yymmdd8.]'; put ';'; put 'value age(multilabel)'; put '20 - 29 = ''20 - 29'''; put '30 - 39 = ''30 - 39'''; put '40 - 49 = ''40 - 49'''; put '50 - 59 = ''50 - 59'''; put '60 - high = ''60 +++'''; put '20 - 35 = ''20 - 35'''; put '36 - 55 = ''36 - 55'''; put '55 - high = ''55 +++'''; put ';'; put '/* https://libguides.library.kent.edu/SAS/UserDefinedFormats */'; put 'VALUE $GENDERLABEL'; put '"M" = "Male"'; put '"F" = "Female"'; put ';'; put 'VALUE LIKERT_SEVEN'; put '1 = "Strongly Disagree"'; put '2 = "Disagree"'; put '3 = "Slightly Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5 = "Slightly Agree"'; put '6 = "Agree"'; put '7 = "Strongly Agree"'; put ';'; put 'VALUE LIKERT7_ELEVEN'; put '1,2,3 = "Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5,6,7 = "Agree"'; put ';'; put 'VALUE LIKERT7_SISTERS'; put '1-3 = "Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5-7 = "Agree"'; put ';'; put 'VALUE INCOME'; put 'LOW -< 20000 = "Low"'; put '20000 -< 60000 = "Middle"'; put '60000 - HIGH = "High"'; put ';'; put 'VALUE RACE'; put '1 = "White"'; put '2 = "Black"'; put 'OTHER = "Other"'; put ';'; put 'VALUE GENDERCODE'; put '0 = ''Male'''; put '1 = ''Female'';'; put 'VALUE ATHLETECODE'; put '0 = ''Non-athlete'''; put '1 = ''Athlete'';'; put 'VALUE SMOKINGCODE'; put '0 = ''Nonsmoker'''; put '1 = ''Past smoker'''; put '2 = ''Current smoker'';'; put '/* https://documentation.sas.com/doc/en/pgmsascdc/v_017/proc/p1upn25lbfo6mkn1wncu4dyh9q91.htm */'; put 'value $state'; put '''Delaware''=''DE'''; put '''Florida''=''FL'''; put '''Ohio''=''OH'';'; put 'value MYfmt'; put '/* Format dates prior to 31DEC2011 using only a year. */'; put 'low-''31DEC2011''d=[year4.]'; put '/* Format 2012 dates using the month and year. */'; put '''01jan2012''d-''31DEC12''d=[monyy7.]'; put '/* Format dates 01JAN2013 and beyond using the day, month, and year. */'; put '''01JAN2013''d-high=[date9.]'; put '/* Catch missing values. */'; put 'other=''n/a'';'; put 'value newfmt .=''N/A'' other=[12.1];'; put '/* https://www.lexjansen.com/nesug/nesug08/cc/cc14.pdf */'; put 'value $genderml (multilabel)'; put '''1''=''Male'''; put '''2''=''Female'''; put '''1'',''2'','' ''=''Total people'';'; put 'value agemla (multilabel)'; put '1-4=''Preschool'''; put '1-18=''Children'''; put '19-120=''Adults'';'; put 'value agemlb (multilabel)'; put '19-120=''Adults'''; put '1-18=''Children'''; put '1-4=''Preschool'';'; put 'value agemlc (multilabel notsorted)'; put '19-120=''Adults'''; put '1-18=''Children'''; put '1-4=''Preschool'';'; 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_CATS('; put 'TX_FROM float ¬null format=datetime19.,'; put 'TX_TO float format=datetime19.,'; put 'libref char(8) label=''Library Name'','; put 'memname char(64) label=''Member Name'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_CATS;'; put 'index create'; put 'pk_mpe_datacatalog_CATS=(tx_to libref memname)'; 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_OBJS('; put 'TX_FROM num ¬null format=datetime19.,'; put 'TX_TO num ¬null format=datetime19.,'; put 'libref char(8) ¬null label=''Library Name'','; put 'memname char(64) ¬null label=''Member Name'','; put 'objname char(32) ¬null label=''Object Name'','; put 'objtype char(8) ¬null label=''Object Type'','; put 'objdesc char(256) label=''Object Description'','; put 'alias char(32) label=''Object Alias'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_OBJS;'; put 'index create'; put 'pk_mpe_datacatalog_OBJS=(libref memname objname objtype 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 - in a constraint being 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_CATS('; put 'TX_FROM float format=datetime19.,'; put 'TX_TO float format=datetime19.,'; put 'libref char(8) label=''Library Name'','; put 'memname char(64) label=''Member Name'','; put 'nobjs num ¬null label=''Number of objects'','; put 'created num ¬null format=DATETIME. label=''Date Created'','; put 'modified num format=DATETIME. label=''Date Modified'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_CATS;'; put 'index create'; put 'pk_mpe_datastatus_cats=(libref memname 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 'catalog_cnt num label=''Number of Catalogs'''; 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_OBJS('; put 'TX_FROM float ¬null format=datetime19.,'; put 'TX_TO float ¬null format=datetime19.,'; put 'libref char(8) label=''Library Name'','; put 'memname char(64) label=''Member Name'','; put 'objname char(32) label=''Object Name'','; put 'objtype char(8) label=''Object Type'','; put 'created num ¬null format=DATETIME. label=''Date Created'','; put 'modified num format=DATETIME. label=''Date Modified'','; put 'level num label=''Library Concatenation Level'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_OBJS;'; put 'index create'; put 'pk_mpe_datastatus_OBJS=(libref memname objname objtype 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. label=''Date Created'','; put 'modate num format=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_XLMAP_DATA('; put 'LOAD_REF char(32) ¬null,'; put 'XLMAP_ID char(32) ¬null,'; put 'XLMAP_RANGE_ID char(32) ¬null,'; put 'ROW_NO num ¬null,'; put 'COL_NO num ¬null,'; put 'VALUE_TXT char(4000)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify MPE_XLMAP_DATA;'; put 'index create'; put 'pk_MPE_XLMAP_DATA=(load_ref xlmap_id xlmap_range_id row_no col_no)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_xlmap_info('; put 'tx_from num ¬null,'; put 'tx_to num ¬null,'; put 'XLMAP_ID char(32) ¬null,'; put 'XLMAP_DESCRIPTION char(1000) ¬null,'; put 'XLMAP_TARGETLIBDS char(41) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_xlmap_info;'; put 'index create'; put 'pk_mpe_xlmap_info=(tx_to xlmap_id)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_xlmap_rules('; put 'tx_from num ¬null,'; put 'tx_to num ¬null,'; put 'XLMAP_ID char(32) ¬null,'; put 'XLMAP_RANGE_ID char(32) ¬null,'; put 'XLMAP_SHEET char(32) ¬null,'; put 'XLMAP_START char(1000) ¬null,'; put 'XLMAP_FINISH char(1000)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_xlmap_rules;'; put 'index create'; put 'pk_mpe_xlmap_rules=(tx_to xlmap_id xlmap_range_id)'; 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 num ¬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 mpe_makesampledata(outlib=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put '%if &syssite ne 70221618 and &syssite ne 70253615 %then %do;'; put '%put syssite=&syssite, exiting &sysmacroname;'; put '%return;'; put '%end;'; put 'data &outlib..class(index=(name /unique));'; put 'set sashelp.class;'; put 'run;'; put 'data &outlib..cars(index=(carspk=(make model drivetrain) /unique));'; put 'set sashelp.cars;'; put 'run;'; put 'data &outlib..springs(index=(springspk=(name area latitude) /unique));'; put 'set sashelp.springs;'; put 'run;'; put 'data &outlib..fmt_checks;;'; put 'pk=1; E8601DA=date();'; put 'format E8601DA E8601DA10.;'; put 'run;'; put 'data append;'; put 'if 0 then set &dc_libref..mpe_tables;'; put 'TX_FROM=0;'; put 'TX_TO=''31DEC9999:23:59:59''dt;'; put 'LIBREF=%upcase("&outlib");'; put 'LOADTYPE=''UPDATE'';'; put 'NUM_OF_APPROVALS_REQUIRED=1;'; put 'DSN=''SPRINGS''; BUSKEY=''NAME AREA LATITUDE''; output;'; put 'DSN=''CARS''; BUSKEY=''MAKE MODEL DRIVETRAIN''; output;'; put 'DSN=''CLASS''; BUSKEY=''NAME''; output;'; put 'DSN=''FMT_CHECKS''; BUSKEY=''PK''; output;'; put 'run;'; put 'proc append base=&dc_libref..MPE_TABLES data=&syslast;'; put 'run;'; put '/**'; put '* DC data extra'; put '*/'; put '%local lib;'; put '%let lib=&dc_libref;'; put 'proc sql;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=4'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib."'; put ',RLS_TABLE="MPE_TABLES"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''NUM_OF_APPROVALS_REQUIRED'''; 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=5'; 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=1'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; 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=6'; 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=1'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'')"'; 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=7'; 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=2'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; 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=8'; 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=3'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; 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=9'; 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=4'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; 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=10'; 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=5'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'',''N/A4'',''N/A5'',''N/A6'',''N/A7'')"'; 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=11'; 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=6'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'',''N/A4'',''N/A5'',''N/A6'',''N/A7'')"'; 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=12'; 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=7'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'',''N/A4'',''N/A5'',''N/A6'',''N/A7'')"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=13'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=5'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=1'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=14'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=6'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=1'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'')"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=15'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=7'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=2'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=16'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=8'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=3'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=17'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=9'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=4'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'')"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=18'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=10'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=5'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'',''N/A4'',''N/A5'',''N/A6'',''N/A7'')"'; 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=19'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=6'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'',''N/A4'',''N/A5'',''N/A6'',''N/A7'')"'; 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=20'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-ext-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=7'; put ',RLS_VARIABLE_NM=''RLS_GROUP_LOGIC'''; put ',RLS_OPERATOR_NM=''NOT IN'''; put ',RLS_RAW_VALUE="(''N/A1'',''N/A2'',''N/A3'',''N/A4'',''N/A5'',''N/A6'',''N/A7'')"'; put ',RLS_ACTIVE=1;'; put '/** create excel config */'; put 'insert into &lib..MPE_EXCEL_CONFIG set'; put 'tx_from=0'; put ',xl_libref="&lib"'; put ',xl_table="MPE_DATADICTIONARY"'; put ',xl_column="DD_LONGDESC"'; put ',xl_rule="FORMULA"'; put ',xl_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/** mpe_security table */'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="303001.DataController"'; 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="303001.DataController"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'data append;'; put 'if 0 then set &dc_libref..mpe_tables;'; put 'TX_FROM=0;'; put 'TX_TO=''31DEC9999:23:59:59''dt;'; put 'LIBREF=%upcase("&dc_libref");'; put 'LOADTYPE=''UPDATE'';'; put 'NUM_OF_APPROVALS_REQUIRED=1;'; put 'DSN=''MPE_USERS''; BUSKEY=''USER_ID''; output;'; put 'run;'; put 'proc append base=&dc_libref..MPE_TABLES data=&syslast;'; put 'run;'; put '%mend mpe_makesampledata;'; 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 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_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 mf_mimetype('; put 'ext'; put ')/*/STORE SOURCE*/ /minoperator mindelimiter='' '';'; put '%let ext=%lowcase(&ext);'; put '%if &ext in (sas txt text conf def list log)'; put '%then %do;%str(text/plain)%end;'; put '%else %if &ext=xlsx %then %do;'; put '%str(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)%end;'; put '%else %if &ext in (xls xlm xla xlc xlt xlw)'; put '%then %do;%str(application/vnd.ms-excel)%end;'; put '%else %if &ext=xlsm'; put '%then %do;%str(application/vnd.ms-excel.sheet.macroenabled.12)%end;'; put '%else %if &ext=xlsb'; put '%then %do;%str(application/vnd.ms-excel.sheet.binary.macroenabled.12)%end;'; put '%else %if &ext in (css csv html n3 sgml vcard)'; put '%then %do;%str(text/&ext)%end;'; put '%else %if &ext in (avif bmp cgm gif ief jxl ktx png sgi tiff webp)'; put '%then %do;%str(image/&ext)%end;'; put '%else %if &ext in (exi gxf ipfix json mbox mp21 mxf oda oxps pdf rtf sdp wasm'; put 'xml yang zip)'; put '%then %do;%str(application/&ext)%end;'; put '%else %if &ext in (jpeg jpg jpe) %then %do;%str(image/jpeg)%end;'; put '%else %if &ext in (mp4 mp4v mpg4) %then %do;%str(video/mp4)%end;'; put '%else %if &ext in (otf ttf woff woff2) %then %do;%str(font/&ext)%end;'; put '%else %if &ext in (mpeg mpg mpe m1v m2v)'; put '%then %do;%str(video/mpeg)%end;'; put '%else %if &ext in (h261 h263 h264 jpm mj2 webm)'; put '%then %do;%str(video/&ext)%end;'; put '%else %if &ext in (f4v fli flv m4v mng smv)'; put '%then %do;%str(video/x-&ext)%end;'; put '%else %if &ext in (3ds cmx pcx rgb tga)'; put '%then %do;%str(image/x-&ext)%end;'; put '%else %if &ext in (asm nfo opml sfv)'; put '%then %do;%str(text/x-&ext)%end;'; put '%else %if &ext in (aac caf flac wav)'; put '%then %do;%str(audio/x-&ext)%end;'; put '%else %if &ext in (ts m2t m2ts mts)'; put '%then %do;%str(video/mp2t)%end;'; put '%else %if &ext in (pfa pfb pfm afm)'; put '%then %do;%str(application/x-font-type1)%end;'; put '%else %if &ext in (oga ogg spx opus)'; put '%then %do;%str(audio/ogg)%end;'; put '%else %if &ext in (mid midi kar rmi)'; put '%then %do;%str(audio/midi)%end;'; put '%else %if &ext in (onetoc onetoc2 onetmp onepkg)'; put '%then %do;%str(application/onenote)%end;'; put '%else %if &ext in (mxml xhvml xvml xvm)'; put '%then %do;%str(application/xv+xml)%end;'; put '%else %if &ext in (f for f77 f90)'; put '%then %do;%str(text/x-fortran)%end;'; put '%else %if &ext in (wmf wmz emf emz)'; put '%then %do;%str(application/x-msmetafile)%end;'; put '%else %if &ext in (exe dll com bat msi)'; put '%then %do;%str(application/x-msdownload)%end;'; put '%else %if &ext in (bin dms lrf mar so dist distz pkg bpk dump elc deploy)'; put '%then %do;%str(application/octet-stream)%end;'; put '%else %if &ext in (atom atomcat atomsvc ccxml davmount emma gml gpx inkml mads'; put 'mathml metalink mets mods omdoc pls rdf rsd rss sbml shf smil sru ssdl ssml'; put 'tei wsdl wspolicy xaml xenc xhtml xop xslt xspf yin)'; put '%then %do;%str(application/&ext+xml)%end;'; put '%else %if &ext in (dir dcr dxr cst cct cxt w3d fgd swa)'; put '%then %do;%str(application/x-director)%end;'; put '%else %if &ext in (z1 z2 z3 z4 z5 z6 z7 z8)'; put '%then %do;%str(application/x-zmachine)%end;'; put '%else %if &ext in (c cc cxx cpp h hh dic)'; put '%then %do;%str(text/x-c)%end;'; put '%else %if &ext in (mpga mp2 mp2a mp3 m2a m3a)'; put '%then %do;%str(audio/mpeg)%end;'; put '%else %if &ext in (t tr roff man me ms)'; put '%then %do;%str(text/troff)%end;'; put '%else %if &ext in (cbr cba cbt cbz cb7)'; put '%then %do;%str(application/x-cbr)%end;'; put '%else %if &ext in (fh fhc fh4 fh5 fh7)'; put '%then %do;%str(image/x-freehand)%end;'; put '%else %if &ext in (aab x32 u32 vox)'; put '%then %do;%str(application/x-authorware-bin)%end;'; put '%else %if &ext in (uvi uvvi uvg uvvg)'; put '%then %do;%str(image/vnd.dece.graphic)%end;'; put '%else %if &ext in (cdx cif cmdf cml csml xyz)'; put '%then %do;%str(chemical/x-&ext)%end;'; put '%else %if &ext in (aif aiff aifc) %then %do;%str(audio/x-aiff)%end;'; put '%else %if &ext in (ma nb mb) %then %do;%str(application/mathematica)%end;'; put '%else %if &ext in (mvb m13 m14) %then %do;%str(application/x-msmediaview)%end;'; put '%else %if &ext in (msh mesh silo) %then %do;%str(model/mesh)%end;'; put '%else %if &ext in (uri uris urls) %then %do;%str(text/uri-list)%end;'; put '%else %if &ext in (mkv mk3d mks) %then %do;%str(video/x-matroska)%end;'; put '%else %if &ext=ez %then %do;%str(application/andrew-inset)%end;'; put '%else %if &ext=aw %then %do;%str(application/applixware)%end;'; put '%else %if &ext=cdmia %then %do;%str(application/cdmi-capability)%end;'; put '%else %if &ext=cdmic %then %do;%str(application/cdmi-container)%end;'; put '%else %if &ext=cdmid %then %do;%str(application/cdmi-domain)%end;'; put '%else %if &ext=cdmio %then %do;%str(application/cdmi-object)%end;'; put '%else %if &ext=cdmiq %then %do;%str(application/cdmi-queue)%end;'; put '%else %if &ext=cu %then %do;%str(application/cu-seeme)%end;'; put '%else %if &ext=dssc %then %do;%str(application/dssc+der)%end;'; put '%else %if &ext=xdssc %then %do;%str(application/dssc+xml)%end;'; put '%else %if &ext=ecma %then %do;%str(application/ecmascript)%end;'; put '%else %if &ext=epub %then %do;%str(application/epub+zip)%end;'; put '%else %if &ext=pfr %then %do;%str(application/font-tdpfr)%end;'; put '%else %if &ext=stk %then %do;%str(application/hyperstudio)%end;'; put '%else %if &ext=ink %then %do;%str(application/inkml+xml)%end;'; put '%else %if &ext=jar %then %do;%str(application/java-archive)%end;'; put '%else %if &ext=ser %then %do;%str(application/java-serialized-object)%end;'; put '%else %if &ext=class %then %do;%str(application/java-vm)%end;'; put '%else %if &ext=jsonml %then %do;%str(application/jsonml+json)%end;'; put '%else %if &ext=lostxml %then %do;%str(application/lost+xml)%end;'; put '%else %if &ext=hqx %then %do;%str(application/mac-binhex40)%end;'; put '%else %if &ext=cpt %then %do;%str(application/mac-compactpro)%end;'; put '%else %if &ext=mrc %then %do;%str(application/marc)%end;'; put '%else %if &ext=mrcx %then %do;%str(application/marcxml+xml)%end;'; put '%else %if &ext=mscml %then %do;%str(application/mediaservercontrol+xml)%end;'; put '%else %if &ext=meta4 %then %do;%str(application/metalink4+xml)%end;'; put '%else %if &ext=m21 %then %do;%str(application/mp21)%end;'; put '%else %if &ext=mp4s %then %do;%str(application/mp4)%end;'; put '%else %if &ext=doc %then %do;%str(application/msword)%end;'; put '%else %if &ext=dot %then %do;%str(application/msword)%end;'; put '%else %if &ext=opf %then %do;%str(application/oebps-package+xml)%end;'; put '%else %if &ext=ogx %then %do;%str(application/ogg)%end;'; put '%else %if &ext=xer %then %do;%str(application/patch-ops-error+xml)%end;'; put '%else %if &ext=pgp %then %do;%str(application/pgp-encrypted)%end;'; put '%else %if &ext=asc %then %do;%str(application/pgp-signature)%end;'; put '%else %if &ext=sig %then %do;%str(application/pgp-signature)%end;'; put '%else %if &ext=prf %then %do;%str(application/pics-rules)%end;'; put '%else %if &ext=p10 %then %do;%str(application/pkcs10)%end;'; put '%else %if &ext=p7m %then %do;%str(application/pkcs7-mime)%end;'; put '%else %if &ext=p7c %then %do;%str(application/pkcs7-mime)%end;'; put '%else %if &ext=p7s %then %do;%str(application/pkcs7-signature)%end;'; put '%else %if &ext=p8 %then %do;%str(application/pkcs8)%end;'; put '%else %if &ext=ac %then %do;%str(application/pkix-attr-cert)%end;'; put '%else %if &ext=cer %then %do;%str(application/pkix-cert)%end;'; put '%else %if &ext=crl %then %do;%str(application/pkix-crl)%end;'; put '%else %if &ext=pkipath %then %do;%str(application/pkix-pkipath)%end;'; put '%else %if &ext=pki %then %do;%str(application/pkixcmp)%end;'; put '%else %if &ext=cww %then %do;%str(application/prs.cww)%end;'; put '%else %if &ext=pskcxml %then %do;%str(application/pskc+xml)%end;'; put '%else %if &ext=rif %then %do;%str(application/reginfo+xml)%end;'; put '%else %if &ext=rnc %then %do;%str(application/relax-ng-compact-syntax)%end;'; put '%else %if &ext=rld %then %do;%str(application/resource-lists-diff+xml)%end;'; put '%else %if &ext=rl %then %do;%str(application/resource-lists+xml)%end;'; put '%else %if &ext=gbr %then %do;%str(application/rpki-ghostbusters)%end;'; put '%else %if &ext=mft %then %do;%str(application/rpki-manifest)%end;'; put '%else %if &ext=roa %then %do;%str(application/rpki-roa)%end;'; put '%else %if &ext=scq %then %do;%str(application/scvp-cv-request)%end;'; put '%else %if &ext=scs %then %do;%str(application/scvp-cv-response)%end;'; put '%else %if &ext=spq %then %do;%str(application/scvp-vp-request)%end;'; put '%else %if &ext=spp %then %do;%str(application/scvp-vp-response)%end;'; put '%else %if &ext=setpay %then %do;%str(application/set-payment-initiation)%end;'; put '%else %if &ext=setreg %then %do;%str(application/set-registration-initiation)%end;'; put '%else %if &ext=smi %then %do;%str(application/smil+xml)%end;'; put '%else %if &ext=rq %then %do;%str(application/sparql-query)%end;'; put '%else %if &ext=srx %then %do;%str(application/sparql-results+xml)%end;'; put '%else %if &ext=gram %then %do;%str(application/srgs)%end;'; put '%else %if &ext=grxml %then %do;%str(application/srgs+xml)%end;'; put '%else %if &ext=teicorpus %then %do;%str(application/tei+xml)%end;'; put '%else %if &ext=tfi %then %do;%str(application/thraud+xml)%end;'; put '%else %if &ext=tsd %then %do;%str(application/timestamped-data)%end;'; put '%else %if &ext=vxml %then %do;%str(application/voicexml+xml)%end;'; put '%else %if &ext=wgt %then %do;%str(application/widget)%end;'; put '%else %if &ext=hlp %then %do;%str(application/winhlp)%end;'; put '%else %if &ext=7z %then %do;%str(application/x-7z-compressed)%end;'; put '%else %if &ext=abw %then %do;%str(application/x-abiword)%end;'; put '%else %if &ext=ace %then %do;%str(application/x-ace-compressed)%end;'; put '%else %if &ext=dmg %then %do;%str(application/x-apple-diskimage)%end;'; put '%else %if &ext=aam %then %do;%str(application/x-authorware-map)%end;'; put '%else %if &ext=aas %then %do;%str(application/x-authorware-seg)%end;'; put '%else %if &ext=bcpio %then %do;%str(application/x-bcpio)%end;'; put '%else %if &ext=torrent %then %do;%str(application/x-bittorrent)%end;'; put '%else %if &ext=blb %then %do;%str(application/x-blorb)%end;'; put '%else %if &ext=blorb %then %do;%str(application/x-blorb)%end;'; put '%else %if &ext=bz %then %do;%str(application/x-bzip)%end;'; put '%else %if &ext=bz2 %then %do;%str(application/x-bzip2)%end;'; put '%else %if &ext=boz %then %do;%str(application/x-bzip2)%end;'; put '%else %if &ext=vcd %then %do;%str(application/x-cdlink)%end;'; put '%else %if &ext=cfs %then %do;%str(application/x-cfs-compressed)%end;'; put '%else %if &ext=chat %then %do;%str(application/x-chat)%end;'; put '%else %if &ext=pgn %then %do;%str(application/x-chess-pgn)%end;'; put '%else %if &ext=nsc %then %do;%str(application/x-conference)%end;'; put '%else %if &ext=cpio %then %do;%str(application/x-cpio)%end;'; put '%else %if &ext=csh %then %do;%str(application/x-csh)%end;'; put '%else %if &ext=deb %then %do;%str(application/x-debian-package)%end;'; put '%else %if &ext=udeb %then %do;%str(application/x-debian-package)%end;'; put '%else %if &ext=dgc %then %do;%str(application/x-dgc-compressed)%end;'; put '%else %if &ext=wad %then %do;%str(application/x-doom)%end;'; put '%else %if &ext=ncx %then %do;%str(application/x-dtbncx+xml)%end;'; put '%else %if &ext=dtb %then %do;%str(application/x-dtbook+xml)%end;'; put '%else %if &ext=res %then %do;%str(application/x-dtbresource+xml)%end;'; put '%else %if &ext=dvi %then %do;%str(application/x-dvi)%end;'; put '%else %if &ext=evy %then %do;%str(application/x-envoy)%end;'; put '%else %if &ext=eva %then %do;%str(application/x-eva)%end;'; put '%else %if &ext=bdf %then %do;%str(application/x-font-bdf)%end;'; put '%else %if &ext=gsf %then %do;%str(application/x-font-ghostscript)%end;'; put '%else %if &ext=psf %then %do;%str(application/x-font-linux-psf)%end;'; put '%else %if &ext=pcf %then %do;%str(application/x-font-pcf)%end;'; put '%else %if &ext=snf %then %do;%str(application/x-font-snf)%end;'; put '%else %if &ext=arc %then %do;%str(application/x-freearc)%end;'; put '%else %if &ext=spl %then %do;%str(application/x-futuresplash)%end;'; put '%else %if &ext=gca %then %do;%str(application/x-gca-compressed)%end;'; put '%else %if &ext=ulx %then %do;%str(application/x-glulx)%end;'; put '%else %if &ext=gnumeric %then %do;%str(application/x-gnumeric)%end;'; put '%else %if &ext=gramps %then %do;%str(application/x-gramps-xml)%end;'; put '%else %if &ext=gtar %then %do;%str(application/x-gtar)%end;'; put '%else %if &ext=hdf %then %do;%str(application/x-hdf)%end;'; put '%else %if &ext=install %then %do;%str(application/x-install-instructions)%end;'; put '%else %if &ext=iso %then %do;%str(application/x-iso9660-image)%end;'; put '%else %if &ext=jnlp %then %do;%str(application/x-java-jnlp-file)%end;'; put '%else %if &ext=latex %then %do;%str(application/x-latex)%end;'; put '%else %if &ext=lzh %then %do;%str(application/x-lzh-compressed)%end;'; put '%else %if &ext=lha %then %do;%str(application/x-lzh-compressed)%end;'; put '%else %if &ext=mie %then %do;%str(application/x-mie)%end;'; put '%else %if &ext=prc %then %do;%str(application/x-mobipocket-ebook)%end;'; put '%else %if &ext=mobi %then %do;%str(application/x-mobipocket-ebook)%end;'; put '%else %if &ext=application %then %do;%str(application/x-ms-application)%end;'; put '%else %if &ext=lnk %then %do;%str(application/x-ms-shortcut)%end;'; put '%else %if &ext=wmd %then %do;%str(application/x-ms-wmd)%end;'; put '%else %if &ext=wmz %then %do;%str(application/x-ms-wmz)%end;'; put '%else %if &ext=xbap %then %do;%str(application/x-ms-xbap)%end;'; put '%else %if &ext=mdb %then %do;%str(application/x-msaccess)%end;'; put '%else %if &ext=obd %then %do;%str(application/x-msbinder)%end;'; put '%else %if &ext=crd %then %do;%str(application/x-mscardfile)%end;'; put '%else %if &ext=clp %then %do;%str(application/x-msclip)%end;'; put '%else %if &ext=mny %then %do;%str(application/x-msmoney)%end;'; put '%else %if &ext=pub %then %do;%str(application/x-mspublisher)%end;'; put '%else %if &ext=scd %then %do;%str(application/x-msschedule)%end;'; put '%else %if &ext=trm %then %do;%str(application/x-msterminal)%end;'; put '%else %if &ext=wri %then %do;%str(application/x-mswrite)%end;'; put '%else %if &ext=nc %then %do;%str(application/x-netcdf)%end;'; put '%else %if &ext=cdf %then %do;%str(application/x-netcdf)%end;'; put '%else %if &ext=nzb %then %do;%str(application/x-nzb)%end;'; put '%else %if &ext=p12 %then %do;%str(application/x-pkcs12)%end;'; put '%else %if &ext=pfx %then %do;%str(application/x-pkcs12)%end;'; put '%else %if &ext=p7b %then %do;%str(application/x-pkcs7-certificates)%end;'; put '%else %if &ext=spc %then %do;%str(application/x-pkcs7-certificates)%end;'; put '%else %if &ext=p7r %then %do;%str(application/x-pkcs7-certreqresp)%end;'; put '%else %if &ext=rar %then %do;%str(application/x-rar-compressed)%end;'; put '%else %if &ext=ris %then %do;%str(application/x-research-info-systems)%end;'; put '%else %if &ext=sh %then %do;%str(application/x-sh)%end;'; put '%else %if &ext=shar %then %do;%str(application/x-shar)%end;'; put '%else %if &ext=swf %then %do;%str(application/x-shockwave-flash)%end;'; put '%else %if &ext=xap %then %do;%str(application/x-silverlight-app)%end;'; put '%else %if &ext=sql %then %do;%str(application/x-sql)%end;'; put '%else %if &ext=sit %then %do;%str(application/x-stuffit)%end;'; put '%else %if &ext=sitx %then %do;%str(application/x-stuffitx)%end;'; put '%else %if &ext=srt %then %do;%str(application/x-subrip)%end;'; put '%else %if &ext=sv4cpio %then %do;%str(application/x-sv4cpio)%end;'; put '%else %if &ext=sv4crc %then %do;%str(application/x-sv4crc)%end;'; put '%else %if &ext=t3 %then %do;%str(application/x-t3vm-image)%end;'; put '%else %if &ext=gam %then %do;%str(application/x-tads)%end;'; put '%else %if &ext=tar %then %do;%str(application/x-tar)%end;'; put '%else %if &ext=tcl %then %do;%str(application/x-tcl)%end;'; put '%else %if &ext=tex %then %do;%str(application/x-tex)%end;'; put '%else %if &ext=tfm %then %do;%str(application/x-tex-tfm)%end;'; put '%else %if &ext=texinfo %then %do;%str(application/x-texinfo)%end;'; put '%else %if &ext=texi %then %do;%str(application/x-texinfo)%end;'; put '%else %if &ext=obj %then %do;%str(application/x-tgif)%end;'; put '%else %if &ext=ustar %then %do;%str(application/x-ustar)%end;'; put '%else %if &ext=src %then %do;%str(application/x-wais-source)%end;'; put '%else %if &ext=der %then %do;%str(application/x-x509-ca-cert)%end;'; put '%else %if &ext=crt %then %do;%str(application/x-x509-ca-cert)%end;'; put '%else %if &ext=fig %then %do;%str(application/x-xfig)%end;'; put '%else %if &ext=xlf %then %do;%str(application/x-xliff+xml)%end;'; put '%else %if &ext=xpi %then %do;%str(application/x-xpinstall)%end;'; put '%else %if &ext=xz %then %do;%str(application/x-xz)%end;'; put '%else %if &ext=xdf %then %do;%str(application/xcap-diff+xml)%end;'; put '%else %if &ext=xht %then %do;%str(application/xhtml+xml)%end;'; put '%else %if &ext=xsl %then %do;%str(application/xml)%end;'; put '%else %if &ext=dtd %then %do;%str(application/xml-dtd)%end;'; put '%else %if &ext=xpl %then %do;%str(application/xproc+xml)%end;'; put '%else %if &ext=adp %then %do;%str(audio/adpcm)%end;'; put '%else %if &ext=au %then %do;%str(audio/basic)%end;'; put '%else %if &ext=snd %then %do;%str(audio/basic)%end;'; put '%else %if &ext=m4a %then %do;%str(audio/mp4)%end;'; put '%else %if &ext=mp4a %then %do;%str(audio/mp4)%end;'; put '%else %if &ext=s3m %then %do;%str(audio/s3m)%end;'; put '%else %if &ext=sil %then %do;%str(audio/silk)%end;'; put '%else %if &ext=uva %then %do;%str(audio/vnd.dece.audio)%end;'; put '%else %if &ext=uvva %then %do;%str(audio/vnd.dece.audio)%end;'; put '%else %if &ext=eol %then %do;%str(audio/vnd.digital-winds)%end;'; put '%else %if &ext=dra %then %do;%str(audio/vnd.dra)%end;'; put '%else %if &ext=dts %then %do;%str(audio/vnd.dts)%end;'; put '%else %if &ext=dtshd %then %do;%str(audio/vnd.dts.hd)%end;'; put '%else %if &ext=lvp %then %do;%str(audio/vnd.lucent.voice)%end;'; put '%else %if &ext=pya %then %do;%str(audio/vnd.ms-playready.media.pya)%end;'; put '%else %if &ext=ecelp4800 %then %do;%str(audio/vnd.nuera.ecelp4800)%end;'; put '%else %if &ext=ecelp7470 %then %do;%str(audio/vnd.nuera.ecelp7470)%end;'; put '%else %if &ext=ecelp9600 %then %do;%str(audio/vnd.nuera.ecelp9600)%end;'; put '%else %if &ext=rip %then %do;%str(audio/vnd.rip)%end;'; put '%else %if &ext=weba %then %do;%str(audio/webm)%end;'; put '%else %if &ext=mka %then %do;%str(audio/x-matroska)%end;'; put '%else %if &ext=m3u %then %do;%str(audio/x-mpegurl)%end;'; put '%else %if &ext=wax %then %do;%str(audio/x-ms-wax)%end;'; put '%else %if &ext=wma %then %do;%str(audio/x-ms-wma)%end;'; put '%else %if &ext=ra %then %do;%str(audio/x-pn-realaudio)%end;'; put '%else %if &ext=ram %then %do;%str(audio/x-pn-realaudio)%end;'; put '%else %if &ext=rmp %then %do;%str(audio/x-pn-realaudio-plugin)%end;'; put '%else %if &ext=xm %then %do;%str(audio/xm)%end;'; put '%else %if &ext=ttc %then %do;%str(font/collection)%end;'; put '%else %if &ext=g3 %then %do;%str(image/g3fax)%end;'; put '%else %if &ext=btif %then %do;%str(image/prs.btif)%end;'; put '%else %if &ext=svg %then %do;%str(image/svg+xml)%end;'; put '%else %if &ext=svgz %then %do;%str(image/svg+xml)%end;'; put '%else %if &ext=tif %then %do;%str(image/tiff)%end;'; put '%else %if &ext=psd %then %do;%str(image/vnd.adobe.photoshop)%end;'; put '%else %if &ext=djv %then %do;%str(image/vnd.djvu)%end;'; put '%else %if &ext=djvu %then %do;%str(image/vnd.djvu)%end;'; put '%else %if &ext=sub %then %do;%str(image/vnd.dvb.subtitle)%end;'; put '%else %if &ext=dwg %then %do;%str(image/vnd.dwg)%end;'; put '%else %if &ext=dxf %then %do;%str(image/vnd.dxf)%end;'; put '%else %if &ext=fbs %then %do;%str(image/vnd.fastbidsheet)%end;'; put '%else %if &ext=fpx %then %do;%str(image/vnd.fpx)%end;'; put '%else %if &ext=fst %then %do;%str(image/vnd.fst)%end;'; put '%else %if &ext=mmr %then %do;%str(image/vnd.fujixerox.edmics-mmr)%end;'; put '%else %if &ext=rlc %then %do;%str(image/vnd.fujixerox.edmics-rlc)%end;'; put '%else %if &ext=mdi %then %do;%str(image/vnd.ms-modi)%end;'; put '%else %if &ext=wdp %then %do;%str(image/vnd.ms-photo)%end;'; put '%else %if &ext=npx %then %do;%str(image/vnd.net-fpx)%end;'; put '%else %if &ext=wbmp %then %do;%str(image/vnd.wap.wbmp)%end;'; put '%else %if &ext=xif %then %do;%str(image/vnd.xiff)%end;'; put '%else %if &ext=ras %then %do;%str(image/x-cmu-raster)%end;'; put '%else %if &ext=ico %then %do;%str(image/x-icon)%end;'; put '%else %if &ext=sid %then %do;%str(image/x-mrsid-image)%end;'; put '%else %if &ext=pct %then %do;%str(image/x-pict)%end;'; put '%else %if &ext=pic %then %do;%str(image/x-pict)%end;'; put '%else %if &ext=pnm %then %do;%str(image/x-portable-anymap)%end;'; put '%else %if &ext=pbm %then %do;%str(image/x-portable-bitmap)%end;'; put '%else %if &ext=pgm %then %do;%str(image/x-portable-graymap)%end;'; put '%else %if &ext=ppm %then %do;%str(image/x-portable-pixmap)%end;'; put '%else %if &ext=xbm %then %do;%str(image/x-xbitmap)%end;'; put '%else %if &ext=xpm %then %do;%str(image/x-xpixmap)%end;'; put '%else %if &ext=xwd %then %do;%str(image/x-xwindowdump)%end;'; put '%else %if &ext=eml %then %do;%str(message/rfc822)%end;'; put '%else %if &ext=mime %then %do;%str(message/rfc822)%end;'; put '%else %if &ext=iges %then %do;%str(model/iges)%end;'; put '%else %if &ext=igs %then %do;%str(model/iges)%end;'; put '%else %if &ext=dae %then %do;%str(model/vnd.collada+xml)%end;'; put '%else %if &ext=dwf %then %do;%str(model/vnd.dwf)%end;'; put '%else %if &ext=gdl %then %do;%str(model/vnd.gdl)%end;'; put '%else %if &ext=gtw %then %do;%str(model/vnd.gtw)%end;'; put '%else %if &ext=vtu %then %do;%str(model/vnd.vtu)%end;'; put '%else %if &ext=vrml %then %do;%str(model/vrml)%end;'; put '%else %if &ext=wrl %then %do;%str(model/vrml)%end;'; put '%else %if &ext=x3db %then %do;%str(model/x3d+binary)%end;'; put '%else %if &ext=x3dbz %then %do;%str(model/x3d+binary)%end;'; put '%else %if &ext=x3dv %then %do;%str(model/x3d+vrml)%end;'; put '%else %if &ext=x3dvz %then %do;%str(model/x3d+vrml)%end;'; put '%else %if &ext=x3d %then %do;%str(model/x3d+xml)%end;'; put '%else %if &ext=x3dz %then %do;%str(model/x3d+xml)%end;'; put '%else %if &ext=appcache %then %do;%str(text/cache-manifest)%end;'; put '%else %if &ext=ics %then %do;%str(text/calendar)%end;'; put '%else %if &ext=ifb %then %do;%str(text/calendar)%end;'; put '%else %if &ext=htm %then %do;%str(text/html)%end;'; put '%else %if &ext=js %then %do;%str(text/javascript)%end;'; put '%else %if &ext=mjs %then %do;%str(text/javascript)%end;'; put '%else %if &ext=dsc %then %do;%str(text/prs.lines.tag)%end;'; put '%else %if &ext=rtx %then %do;%str(text/richtext)%end;'; put '%else %if &ext=sgm %then %do;%str(text/sgml)%end;'; put '%else %if &ext=tsv %then %do;%str(text/tab-separated-values)%end;'; put '%else %if &ext=ttl %then %do;%str(text/turtle)%end;'; put '%else %if &ext=curl %then %do;%str(text/vnd.curl)%end;'; put '%else %if &ext=dcurl %then %do;%str(text/vnd.curl.dcurl)%end;'; put '%else %if &ext=mcurl %then %do;%str(text/vnd.curl.mcurl)%end;'; put '%else %if &ext=scurl %then %do;%str(text/vnd.curl.scurl)%end;'; put '%else %if &ext=sub %then %do;%str(text/vnd.dvb.subtitle)%end;'; put '%else %if &ext=fly %then %do;%str(text/vnd.fly)%end;'; put '%else %if &ext=flx %then %do;%str(text/vnd.fmi.flexstor)%end;'; put '%else %if &ext=gv %then %do;%str(text/vnd.graphviz)%end;'; put '%else %if &ext=3dml %then %do;%str(text/vnd.in3d.3dml)%end;'; put '%else %if &ext=spot %then %do;%str(text/vnd.in3d.spot)%end;'; put '%else %if &ext=jad %then %do;%str(text/vnd.sun.j2me.app-descriptor)%end;'; put '%else %if &ext=wml %then %do;%str(text/vnd.wap.wml)%end;'; put '%else %if &ext=wmls %then %do;%str(text/vnd.wap.wmlscript)%end;'; put '%else %if &ext=s %then %do;%str(text/x-asm)%end;'; put '%else %if &ext=java %then %do;%str(text/x-java-source)%end;'; put '%else %if &ext=p %then %do;%str(text/x-pascal)%end;'; put '%else %if &ext=pas %then %do;%str(text/x-pascal)%end;'; put '%else %if &ext=etx %then %do;%str(text/x-setext)%end;'; put '%else %if &ext=uu %then %do;%str(text/x-uuencode)%end;'; put '%else %if &ext=vcs %then %do;%str(text/x-vcalendar)%end;'; put '%else %if &ext=vcf %then %do;%str(text/x-vcard)%end;'; put '%else %if &ext=3gp %then %do;%str(video/3gpp)%end;'; put '%else %if &ext=3g2 %then %do;%str(video/3gpp2)%end;'; put '%else %if &ext=jpgv %then %do;%str(video/jpeg)%end;'; put '%else %if &ext=jpgm %then %do;%str(video/jpm)%end;'; put '%else %if &ext=mjp2 %then %do;%str(video/mj2)%end;'; put '%else %if &ext=ogv %then %do;%str(video/ogg)%end;'; put '%else %if &ext=mov %then %do;%str(video/quicktime)%end;'; put '%else %if &ext=qt %then %do;%str(video/quicktime)%end;'; put '%else %if &ext=uvh %then %do;%str(video/vnd.dece.hd)%end;'; put '%else %if &ext=uvvh %then %do;%str(video/vnd.dece.hd)%end;'; put '%else %if &ext=uvm %then %do;%str(video/vnd.dece.mobile)%end;'; put '%else %if &ext=uvvm %then %do;%str(video/vnd.dece.mobile)%end;'; put '%else %if &ext=uvp %then %do;%str(video/vnd.dece.pd)%end;'; put '%else %if &ext=uvvp %then %do;%str(video/vnd.dece.pd)%end;'; put '%else %if &ext=uvs %then %do;%str(video/vnd.dece.sd)%end;'; put '%else %if &ext=uvvs %then %do;%str(video/vnd.dece.sd)%end;'; put '%else %if &ext=uvv %then %do;%str(video/vnd.dece.video)%end;'; put '%else %if &ext=uvvv %then %do;%str(video/vnd.dece.video)%end;'; put '%else %if &ext=dvb %then %do;%str(video/vnd.dvb.file)%end;'; put '%else %if &ext=fvt %then %do;%str(video/vnd.fvt)%end;'; put '%else %if &ext=m4u %then %do;%str(video/vnd.mpegurl)%end;'; put '%else %if &ext=mxu %then %do;%str(video/vnd.mpegurl)%end;'; put '%else %if &ext=pyv %then %do;%str(video/vnd.ms-playready.media.pyv)%end;'; put '%else %if &ext=uvu %then %do;%str(video/vnd.uvvu.mp4)%end;'; put '%else %if &ext=uvvu %then %do;%str(video/vnd.uvvu.mp4)%end;'; put '%else %if &ext=viv %then %do;%str(video/vnd.vivo)%end;'; put '%else %if &ext=asf %then %do;%str(video/x-ms-asf)%end;'; put '%else %if &ext=asx %then %do;%str(video/x-ms-asf)%end;'; put '%else %if &ext=vob %then %do;%str(video/x-ms-vob)%end;'; put '%else %if &ext=wm %then %do;%str(video/x-ms-wm)%end;'; put '%else %if &ext=wmv %then %do;%str(video/x-ms-wmv)%end;'; put '%else %if &ext=wmx %then %do;%str(video/x-ms-wmx)%end;'; put '%else %if &ext=wvx %then %do;%str(video/x-ms-wvx)%end;'; put '%else %if &ext=avi %then %do;%str(video/x-msvideo)%end;'; put '%else %if &ext=movie %then %do;%str(video/x-sgi-movie)%end;'; put '%else %if &ext=ice %then %do;%str(x-conference/x-cooltalk)%end;'; put '%else %if "&ext"="in" %then %do;%str(text/plain)%end;'; put '%else %do;%str(application/octet-stream)%end;'; put '%mend mf_mimetype;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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 mfv_getpathuri(filepath'; put ')/*/STORE SOURCE*/;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter &sysmacroname with syscc=&syscc'; put ')'; put '%local fref rc path name var /* var is used to avoid delete timing issue */;'; put '%let fref=%mf_getuniquefileref();'; put '%let name=%scan(&filepath,-1,/);'; put '%let path=%substr(&filepath,1,%length(&filepath)-%length(&name)-1);'; put '%if %sysfunc(filename(fref,,filesrvc,folderPath="&path" filename="&name"))=0'; put '%then %do;'; put '%let var=_FILESRVC_&fref._URI;'; put '%str(&&&var)'; put '%let rc=%sysfunc(filename(fref));'; put '%symdel &var;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: did not find &filepath;'; put '%let syscc=0;'; put '%end;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave &sysmacroname with syscc=&syscc'; put ')'; put '%mend mfv_getpathuri;'; put '%macro mp_base64copy('; put 'inref=0,'; put 'outref=0,'; put 'action=ENCODE'; put ')/*/STORE SOURCE*/;'; put '%let inref=%upcase(&inref);'; put '%let outref=%upcase(&outref);'; put '%let action=%upcase(&action);'; put '%local infound outfound;'; put '%let infound=0;'; put '%let outfound=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="&inref" or fileref="&outref"));'; put 'if fileref="&inref" then call symputx(''infound'',1,''l'');'; put 'if fileref="&outref" then call symputx(''outfound'',1,''l'');'; put 'run;'; put '%mp_abort(iftrue= (&infound=0)'; put ',mac=&sysmacroname'; put ',msg=%str(INREF &inref NOT FOUND!)'; put ')'; put '%mp_abort(iftrue= (&outref=0)'; put ',mac=&sysmacroname'; put ',msg=%str(OUTREF NOT PROVIDED!)'; put ')'; put '%mp_abort(iftrue= (&action ne ENCODE and &action ne DECODE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action! Should be ENCODE OR DECODE)'; put ')'; put '%if &outfound=0 %then %do;'; put 'filename &outref temp lrecl=2097088;'; put '%end;'; put '%if &action=ENCODE %then %do;'; put 'data _null_;'; put 'length b64 $ 76 line $ 57;'; put 'retain line "";'; put 'infile &inref recfm=F lrecl= 1 end=eof;'; put 'input @1 stream $char1.;'; put 'file &outref recfm=N;'; put 'substr(line,(_N_-(CEIL(_N_/57)-1)*57),1) = byte(rank(stream));'; put 'if mod(_N_,57)=0 or EOF then do;'; put 'if eof then b64=put(trim(line),$base64X76.);'; put 'else b64=put(line, $base64X76.);'; put 'put b64 + (-1) @;'; put 'line="";'; put 'end;'; put 'run;'; put '%end;'; put '%else %if &action=DECODE %then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&inref",''I'',4,''B'');'; put 'fileout = fopen("&outref",''O'',3,''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 '%mend mp_base64copy;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref dttm ds1;'; put '%let inref=%mf_getuniquefileref();'; put '%let outref=%mf_getuniquefileref();'; put '%if &outfile=0 %then %let outfile=&infile;'; put '%let ds1=%mf_getuniquename(prefix=allchars);'; put '%let ds2=%mf_getuniquename(prefix=startmark);'; 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) secs to run; */'; put '%mend mp_replace;'; put '%macro mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mfv_existfolder(path'; put ')/*/STORE SOURCE*/;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter mfv_existfolder.sas with syscc=&syscc'; put ')'; put '%local fref rc var;'; put '%let fref=%mf_getuniquefileref();'; put '%if %sysfunc(filename(fref,,filesrvc,folderPath="&path"))=0 %then %do;'; put '1'; put '%let var=_FILESRVC_&fref._URI;'; put '%let rc=%sysfunc(filename(fref));'; put '%symdel &var;'; put '%end;'; put '%else %do;'; put '0'; put '%let syscc=0;'; put '%end;'; put '%mf_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave mfv_existfolder.sas with syscc=&syscc'; put ')'; put '%mend mfv_existfolder;'; put '%macro mv_createfolder(path='; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ',outds=_null_'; put ');'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter &sysmacroname with syscc=&syscc'; put ')'; put '%if %mfv_existfolder(&path)=1 %then %do;'; put '%&dbg.put &sysmacroname: &path already exists;'; put 'data &outds;'; put 'self_uri="%mfv_getpathuri(&path)";'; put 'output;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue=(&syscc ne 0),msg=syscc=&syscc when folder checking)'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%length(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local subfolder_cnt; /* determine the number of subfolders */'; put '%let subfolder_cnt=%sysfunc(countw(&path,/));'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%local href; /* resource address (none for root) */'; put '%let href="&base_uri/folders/folders?parentFolderUri=/folders/folders/none";'; put '%local x newpath subfolder;'; put '%do x=1 %to &subfolder_cnt;'; put '%let subfolder=%scan(&path,&x,%str(/));'; put '%let newpath=&newpath/&subfolder;'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%put &sysmacroname checking to see if &newpath exists;'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&newpath";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE=401 %then %do;'; put '/* relates to: https://github.com/sasjs/core/issues/400 */'; put '%put 401 thrown in &sysmacroname;'; put '%put sleeping: %sysfunc(sleep(12,1)) secs - will try again;'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&newpath";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%end;'; put '%local libref1;'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put '%mp_abort('; put 'iftrue=('; put '&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 404'; put ')'; put ',mac=mv_createfolder124'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname following check to see if &newpath exists:;'; put '%put _local_;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%if &SYS_PROCHTTP_STATUS_CODE=200 %then %do;'; put 'data _null_;'; put 'set &libref1..links;'; put 'if rel=''createChild'' then'; put 'call symputx(''href'',quote(cats("&base_uri",href)),''l'');'; put 'run;'; put '%end;'; put '%else %if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put &sysmacroname &newpath not found - creating it now;'; put '%local fname2;'; put '%let fname2=%mf_getuniquefileref();'; put 'data _null_;'; put 'length json $1000;'; put 'json=cats("''"'; put ',''{"name":'''; put ',quote(trim(symget(''subfolder'')))'; put ','',"description":'''; put ',quote("&subfolder, created by &sysmacroname")'; put ','',"type":"folder"}'''; put ',"''"'; put ');'; put 'call symputx(''json'',json,''l'');'; put 'run;'; put 'proc http method=''POST'''; put 'in=&json'; put 'out=&fname2'; put '&oauth_bearer'; put 'url=%unquote(%superq(href));'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '''Content-Type''=''application/vnd.sas.content.folder+json'''; put '''Accept''=''application/vnd.sas.content.folder+json'';'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 201 %then %do;'; put '%put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%end;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%local libref2;'; put '%let libref2=%mf_getuniquelibref();'; put 'libname &libref2 JSON fileref=&fname2;'; put '%put &sysmacroname &newpath now created. Grabbing the follow on link ;'; put 'data &outds;'; put 'set &libref2..links;'; put 'if rel=''createChild'' then do;'; put 'call symputx(''href'',quote(cats("&base_uri",href)),''l'');'; put '&dbg put (_all_)(=);'; put 'end;'; put 'if method=''GET'' and rel=''self'' then do;'; put 'self_uri=uri;'; put 'output;'; put 'end;'; put 'keep self_uri ;'; put 'run;'; put 'libname &libref2 clear;'; put 'filename &fname2 clear;'; put '%end;'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave &sysmacroname with syscc=&syscc'; put ')'; put '%mend mv_createfolder;'; 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,fetchobs=1'; put ')/*/STORE SOURCE*/;'; put '%local dsid;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%if (&dsid) %then %do;'; put '%local rc &variable;'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetchobs(&dsid,&fetchobs));'; put '%if (&rc ne 0) %then %do;'; put '%put NOTE: Problem reading obs &fetchobs from &libds..;'; put '%put %sysfunc(sysmsg());'; put '/* Coerce an rc value of -1 (read past end of data) to a 4'; put 'that, in SAS condition code terms, represents the sysmsg'; put 'w@rning it generates. */'; put '%if &rc eq -1 %then %let rc = 4;'; put '/* And update SYSCC if the &rc value is higher */'; put '%let syscc = %sysfunc(max(&syscc,&rc));'; put '%end;'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%else %do;'; put '%put %sysfunc(sysmsg());'; put '%let syscc = %sysfunc(max(&syscc,%sysfunc(sysrc())));'; put '%end;'; put '%mend mf_getvalue;'; 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 mv_getViyaFileExtParms('; put 'ext,'; put 'typeDefNameVar=,'; put 'propertiesVar=,'; put 'mediaTypeVar=,'; put 'viyaFileExtRespLibDs=work.mv_getViyaFileExtParmsResponse,'; put 'mdebug=0'; put ');'; put '%local base_uri; /* location of rest apis */'; put '%local url; /* File extension info end-point */'; put '%mp_abort('; put 'iftrue=(%mf_isBlank(&ext))'; put ',msg=%str(No file extension provided.)'; put ',mac=MV_GETVIYAFILEEXTPARMS'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_isBlank(&typeDefNameVar) and'; put '%mf_isBlank(&propertiesVar) and'; put '%mf_isBlank(&mediaTypeVar))'; put ',msg=%str(MV_GETVIYAFILEEXTPARMS - No parameter was requested.)'; put ',mac=MV_GETVIYAFILEEXTPARMS'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_isBlank(&viyaFileExtRespLibDs))'; put ',msg=%str(No dataset name provided to cache inital response.)'; put ',mac=MV_GETVIYAFILEEXTPARMS'; put ')'; put '/* Declare requested parameters as global macro vars and initialize blank */'; put '%if not %mf_isBlank(&typeDefNameVar) %then %do;'; put '%global &typeDefNameVar;'; put '%let &typeDefNameVar = %str();'; put '%end;'; put '%if not %mf_isBlank(&propertiesVar) %then %do;'; put '%global &propertiesVar;'; put '%let &propertiesVar = %str();'; put '%end;'; put '%if not %mf_isBlank(&mediaTypeVar) %then %do;'; put '%global &mediaTypeVar;'; put '%let &mediaTypeVar = %str();'; put '%end;'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if &mdebug=1 %then %put DEBUG: &=base_uri;'; put '%let ext=%lowcase(&ext);'; put '/* Create a local copy of the Viya response containing all file type info, if'; put 'it does not already exist. */'; put '%if not %mf_existds(&viyaFileExtRespLibDs) %then %do;'; put '/* Create a temp file and fill with JSON that declares */'; put '/* VIYA file-type details for the given file extension */'; put '%local viyatypedefs;'; put '%let viyatypedefs=%mf_getuniquefileref();'; put 'filename &viyatypedefs temp;'; put '%let url = &base_uri/types/types?limit=999999;'; put 'proc http oauth_bearer=sas_services out=&viyatypedefs'; put 'url="&url";'; put 'run;'; put '%if &mdebug=1 %then %put DEBUG: &sysmacroname &=url'; put '&=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%if (&SYS_PROCHTTP_STATUS_CODE ne 200) %then %do;'; put '/* To avoid a breaking change, exit early if the request failed.'; put 'The calling process will proceed with empty macro variables. */'; put '%put INFO: &sysmacroname File extension details were not retrieved.;'; put 'filename &viyatypedefs clear;'; put '%return;'; put '%end;'; put '%if &mdebug=1 %then %do;'; put '/* Dump the response to the log */'; put 'data _null_;'; put 'length line $120;'; put 'null=byte(0);'; put 'infile &viyatypedefs dlm=null lrecl=120 recfm=n;'; put 'input line $120.;'; put 'if _n_ = 1 then put "DEBUG:";'; put 'put line;'; put 'run;'; put '%end;'; put '/* Convert the content of that JSON into SAS datasets */'; put '/* First prepare a new WORK-based folder to receive the datasets */'; put '%local jsonworkfolder jsonlib opt_dlcreatedir;'; put '%let jsonworkfolder=%sysfunc(pathname(work))/%mf_getuniquename(prefix=jsn_);'; put '%let jsonlib=%mf_getuniquelibref(prefix=json);'; put '/* And point a libname at it */'; put '%let opt_dlcreatedir = %sysfunc(getoption(dlcreatedir));'; put 'options dlcreatedir; libname &jsonlib "&jsonworkfolder";'; put 'options &opt_dlcreatedir;'; put '/* Read the json output once and copy datasets to its work folder */'; put '%local libref1;'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&viyatypedefs automap=create;'; put 'proc copy in=&libref1 out=&jsonlib; run;'; put 'libname &libref1 clear;'; put '/* Now give all rows belonging to the same items array a grouping value */'; put 'data &viyaFileExtRespLibDs;'; put 'length _viyaItemIdx 8;'; put 'set &jsonlib..alldata;'; put 'retain _viyaItemIdx 0;'; put '/* Increment the row group index when a new ''items'' group is observed */'; put 'if P=1 and P1=''items'' then _viyaItemIdx + 1;'; put 'run;'; put '%if &mdebug=0 %then %do;'; put '/* Tidy up, unless debug=1 */'; put 'proc datasets library=&jsonlib nolist kill; quit;'; put 'libname &jsonlib clear;'; put '%end;'; put 'filename &viyatypedefs clear;'; put '%end; /* If initial filetype query response didn''t exist */'; put '%if &mdebug %then %put DEBUG: Find the row-group for extension &ext;'; put '%local itemRowGroup;'; put 'data _null_;'; put 'set &viyaFileExtRespLibDs;'; put 'where p1=''items'' and p2=''extensions'' and value="&ext";'; put 'call symputx(''itemRowGroup'',_viyaItemIdx,''l'');'; put '%if &mdebug %then %do;'; put 'putlog (_all_)(=);'; put '%end;'; put 'run;'; put '%if &mdebug %then %put DEBUG: &=itemRowGroup;'; put '%if %mf_isBlank(&itemRowGroup) %then %do;'; put '/* extension was not found */'; put '%if &mdebug %then %put DEBUG: No type details found for extension "&ext";'; put '%return;'; put '%end;'; put '/* Filter the cached response data down to the required file extension */'; put '%local dsItems;'; put '%let dsItems = %mf_getuniquename(prefix=dsItems_);'; put 'data work.&dsItems;'; put 'set &viyaFileExtRespLibDs;'; put 'where _viyaItemIdx = &itemRowGroup;'; put 'run;'; put '/* Populate typeDefName, if requested */'; put '%if (not %mf_isBlank(&typeDefNameVar)) %then %do;'; put '%let &typeDefNameVar = %mf_getvalue('; put '&dsItems,value,filter=%quote(p1="items" and p2="name"));'; put '%if &mdebug %then'; put '%put DEBUG: &=typeDefNameVar &typeDefNameVar=&&&typeDefNameVar;'; put '%end;'; put '/* Populate mediaType, if requested */'; put '%if (not %mf_isBlank(&mediaTypeVar)) %then %do;'; put '%let &mediaTypeVar = %mf_getvalue('; put '&dsItems,value,filter=%quote(p1="items" and p2="mediaType"));'; put '%if &mdebug %then %put DEBUG: &=mediaTypeVar &mediaTypeVar=&&&mediaTypeVar;'; put '%end;'; put '/* Populate properties macro variable, if requested */'; put '%if not %mf_isBlank(&propertiesVar) %then %do;'; put '/* Filter dsItems down to the properties */'; put '%local dsProperties;'; put '%let dsProperties = %mf_getuniquename(prefix=dsProperties_);'; put 'data work.&dsProperties ( rename=(p3 = propertyName) );'; put 'set work.&dsItems;'; put 'where p2="properties" and v=1;'; put 'run;'; put '/* Check for 1+ properties */'; put '%if ( %mf_nobs(&dsProperties) = 0 ) %then %do;'; put '%let &propertiesVar = %str();'; put '%if &mdebug %then %put DEBUG: &SYSMACRONAME - No Viya properties %trim('; put ')found for file suffix %str(%'')&ext%str(%'');'; put '%end;'; put '%else %do;'; put '/* Properties potentially span multiple rows in the input table */'; put 'data _null_;'; put 'length'; put 'line $32767'; put 'properties $32767'; put ';'; put 'retain properties;'; put 'set &dsProperties end=last;'; put 'if _n_ = 1 then properties = ''{'';'; put 'line = cats(quote(trim(propertyName)),'':'');'; put '/* Only strings and bools appear in properties */'; put 'if value not in ("true","false") then value = quote(trim(value));'; put 'line = catx('' '',line,value);'; put '/* Add a comma separator to all except the last line */'; put 'if not last then line = cats(line,'','');'; put '/* Add this line to the output value */'; put 'properties = catx('' '',properties,line);'; put 'if last then do;'; put '/* Close off the properties object and output to the macro variable */'; put 'properties=catx('' '',properties,''}'');'; put 'call symputx("&propertiesVar",properties);'; put 'end;'; put 'run;'; put '%if &mdebug %then'; put '%put DEBUG: &=propertiesVar &propertiesVar=&&&propertiesVar;'; put '%end;'; put '%end;'; put '%mend mv_getViyaFileExtParms;'; put '%macro mv_createfile(path='; put ',name='; put ',inref='; put ',intype=BINARY'; put ',contentdisp=attachment'; put ',ctype=0'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ',outds=_null_'; put ',force=YES'; put ',swap=0'; put ');'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot enter &sysmacroname with syscc=&syscc'; put ')'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=MV_CREATEFILE'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&path)=1 or %length(&path)=1)'; put ',mac=MV_CREATEFILE'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&name)=1 or %length(&name)=1)'; put ',mac=MV_CREATEFILE'; put ',msg=%str(name value with length >1 must be provided)'; put ')'; put '/* prep the source file */'; put '%local fref;'; put '%let fref=%mf_getuniquefileref();'; put '%if %upcase(&intype)=BINARY %then %let fref=&inref;'; put '%else %if %upcase(&intype)=BASE64 %then %do;'; put '%mp_base64copy(inref=&inref, outref=&fref, action=DECODE)'; put '%end;'; put '%else %put %str(ERR)OR: invalid value for intype: &intype;'; put '%if "&swap" ne "0" %then %do;'; put '%mp_replace("%sysfunc(pathname(&fref))"'; put ',findvar=%scan(&swap,1,%str( ))'; put ',replacevar=%scan(&swap,2,%str( ))'; put ')'; put '%end;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%trim(%mf_getplatform(VIYARESTAPI));'; put '/* create folder if it does not already exist */'; put '%local folderds self_uri;'; put '%let folderds=%mf_getuniquename(prefix=folderds);'; put '%mv_createfolder(path=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',mdebug=&mdebug'; put ',outds=&folderds'; put ')'; put 'data _null_;'; put 'set &folderds;'; put 'call symputx(''self_uri'',self_uri,''l'');'; put 'run;'; put '/* abort or delete if file already exists */'; put '%let force=%upcase(&force);'; put '%local fileuri ;'; put '%let fileuri=%trim(%mfv_getpathuri(&path/&name));'; put '%mp_abort(iftrue=(%mf_isblank(&fileuri)=0 and &force ne YES)'; put ',mac=MV_CREATEFILE'; put ',msg=%str(File &path/&name already exists and force=&force)'; put ')'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'mac=MV_CREATEFILE182'; put 'msg=syscc=&syscc after mfv_getpathuri'; put ')'; put '%if %mf_isblank(&fileuri)=0 and &force=YES %then %do;'; put 'proc http method="DELETE" url="&base_uri&fileuri" &oauth_bearer;'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="*/*";'; put 'run;'; put '%put &sysmacroname DELETE &base_uri&fileuri;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 204 %then %do;'; put '%put &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%end;'; put '%end;'; put '%local url mimetype ext;'; put '%let url=&base_uri/files/files?parentFolderUri=&self_uri;'; put '%let ext=%upcase(%trim(%scan(&name,-1,.)));'; put '/* Get Viya file-extension details into some macro variables */'; put '%mv_getViyaFileExtParms(&ext'; put ',propertiesVar=viyaProperties'; put ',typeDefNameVar=viyaTypeDefName'; put ',mdebug=&mdebug'; put ')'; put '/* fetch job info */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''POST'' out=&fname1 &oauth_bearer in=&fref'; put '%if "&ctype" = "0" %then %do;'; put '%let mimetype=%mf_mimetype(&ext);'; put 'ct="&mimetype"'; put '%end;'; put '%else %do;'; put 'ct="&ctype"'; put '%end;'; put '/* typeDefName */'; put '%if not %mf_isBlank(&viyaTypeDefName) %then %do;'; put 'url="&url%str(&)typeDefName=&viyaTypeDefName";'; put '%end;'; put '%else %do;'; put '%if "&ext"="HTM" or "&ext"="HTML" or "&ext"="XHTML" %then %do;'; put 'url="&url%str(&)typeDefName=file_html";'; put '%end;'; put '%else %do;'; put '%if "&ext"="CSS" or "&ext"="JS" or "&ext"="PNG" or "&ext"="SVG" %then %do;'; put 'url="&url%str(&)typeDefName=file_%lowcase(&ext)";'; put '%end;'; put '%else %do;'; put 'url="&url";'; put '%end;'; put '%end;'; put '%end;'; put 'headers "Accept"="application/json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Content-Disposition"='; put '%if "&ext"="SVG" or "&ext"="HTML" %then %do;'; put '"filename=""&name"";"'; put '%end;'; put '%else %do;'; put '"&contentdisp filename=""&name""; name=""&name"";"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %put &sysmacroname POST &=url'; put '&=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=MV_CREATEFILE'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%local libref2;'; put '%let libref2=%mf_getuniquelibref();'; put 'libname &libref2 JSON fileref=&fname1;'; put '/* Grab the follow on link */'; put 'data &outds;'; put 'set &libref2..links end=last;'; put 'if rel=''createChild'' then do;'; put '&dbg put (_all_)(=);'; put 'end;'; put 'run;'; put '/* URI of the created file */'; put '%let fileuri=%trim(%mfv_getpathuri(&path/&name));'; put '/* If properties were found then patch the file to include them */'; put '%if not %mf_isBlank(%superq(viyaProperties)) %then %do;'; put '/* Wrap the properties object in a root object also containing the filename */'; put '%local viyapatch;'; put '%let viyapatch=%sysfunc(pathname(work))/%mf_getuniquename(prefix=patch_json_);'; put 'data _null_;'; put 'length line $32767;'; put 'file "&viyapatch" lrecl=32767;'; put 'put ''{ "name": "'' "&name" ''",'';'; put 'line = cat(''"properties": '',symget("viyaProperties"));'; put 'put line;'; put 'put ''}'';'; put 'stop;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'if (_n_ eq 1) then put ''DEBUG: ** PATCH JSON **'';'; put 'infile "&viyapatch" end=last;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '/* Apply the properties to the newly created file, using the PATCH method */'; put '%let fref=%mf_getuniquefileref();'; put 'filename &fref "&viyapatch";'; put '%let url=&base_uri&fileuri;'; put 'proc http method=''PATCH'' oauth_bearer=sas_services in=&fref'; put 'url="&url";'; put 'headers "Accept"="application/json"'; put '"Content-Type"="application/json"'; put '"If-Match"="*";'; put '%if &mdebug=1 %then %do;'; put 'debug level=2;'; put '%end;'; put 'run;'; put '%if &mdebug=1 %then %put &sysmacroname PATCH &=url'; put '&=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=MV_CREATEFILE'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put '%put &sysmacroname: &base_uri&fileuri;'; put '%put /SASJobExecution?_file=&path/&name;%put;'; put '%if &mdebug=0 %then %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fref clear;'; put 'libname &libref2 clear;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=Cannot leave &sysmacroname with syscc=&syscc'; put ')'; put '%mend mv_createfile;'; put '%macro mv_deletejes(path='; put ',name='; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put '%mp_abort(iftrue=(%mf_isblank(&name)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(name value must be provided)'; put ')'; put '%mp_abort(iftrue=(%length(&path)=1)'; put ',mac=&sysmacroname'; put ',msg=%str(path value must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetch the members of the folder to get the uri */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&path";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put &sysmacroname: Folder &path NOT FOUND - nothing to delete!;'; put '%return;'; put '%end;'; put '%else %if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%mp_abort(mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put '/* grab the follow on link */'; put '%local libref1;'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data _null_;'; put 'set &libref1..links;'; put 'if rel=''members'' then call symputx(''mref'',quote("&base_uri"!!trim(href)),''l'');'; put 'run;'; put '/* get the children */'; put '%local fname1a;'; put '%let fname1a=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1a &oauth_bearer'; put 'url=%unquote(%superq(mref));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 200 %then %do;'; put '%put &=sysmacroname &=SYS_PROCHTTP_STATUS_CODE &=SYS_PROCHTTP_STATUS_PHRASE;'; put '%end;'; put '%local libref1a;'; put '%let libref1a=%mf_getuniquelibref();'; put 'libname &libref1a JSON fileref=&fname1a;'; put '%local uri found;'; put '%let found=0;'; put '/* %put Getting object uri from &libref1a..items; */'; put 'data _null_;'; put 'length contenttype name uri $1000;'; put 'call missing(of _all_);'; put 'set &libref1a..items;'; put 'if contenttype=''jobDefinition'' and upcase(name)="%upcase(&name)" then do;'; put 'call symputx(''uri'',cats("&base_uri",uri),''l'');'; put 'call symputx(''found'',1,''l'');'; put 'end;'; put 'run;'; put '%if &found=0 %then %do;'; put '%put NOTE:;%put NOTE- &sysmacroname: &path/&name NOT FOUND;%put NOTE- ;'; put '%return;'; put '%end;'; put 'proc http method="DELETE" url="&uri" &oauth_bearer;'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="*/*";/**/'; put 'run;'; put '%if &SYS_PROCHTTP_STATUS_CODE ne 204 %then %do;'; put 'data _null_; infile &fname2; input; putlog _infile_;run;'; put '%mp_abort(mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put '%else %put &sysmacroname: &path/&name deleted;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put 'filename &fname1a clear;'; put 'libname &libref1a clear;'; put '%mend mv_deletejes;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief self destructing setup service'; put '@details Will create the database and perform config activities'; put '

SAS Macros

'; put '@li mf_getapploc.sas'; put '@li mf_getuniquefileref.sas'; put '@li mf_mkdir.sas'; put '@li mf_trimstr.sas'; put '@li mp_abort.sas'; put '@li mpe_getvars.sas'; put '@li mpe_makedata.sas'; put '@li mpe_makedatamodel.sas'; put '@li mpe_makesampledata.sas'; put '@li mv_createfile.sas'; put '@li mv_deletejes.sas'; put '@version 3.5'; put '@author 4GL Apps Ltd'; 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 ADMIN _contextname ;'; put '%webout(FETCH)'; put '/* enable vars to be passed as url params */'; put '%let exist=%sysfunc(exist(work.fromjs));'; put '%let inds=%sysfunc(ifc(&exist=1,fromjs,_null_));'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''dcpath'',dcpath);'; put 'call symputx(''ADMIN'',ADMIN);'; put 'call symputx(''_contextname'',_contextname);'; put 'run;'; put 'options noquotelenmax;'; put '%let dclib=%upcase(VIYA%substr(%sysevalf(%sysfunc(datetime())/60),3,4));'; put '%let dclibname=Data Controller (&dclib);'; put '%let DC_LIBREF=&dclib;'; put '%let work=%sysfunc(pathname(work));'; put '%let dcpath=%mf_trimstr(&dcpath,/)/&dclib;'; put '%put &=sysuserid;'; put '%put &=dcpath;'; put '%put &=admin;'; put '%mf_mkdir(&dcpath)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Unable to create &dcpath using &sysuserid)'; put ')'; put '%mf_mkdir(&dcpath/secret)'; put '%mf_mkdir(&dcpath/dc_staging)'; 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 to: &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 'libname &dclib "&dcpath";'; put '%global admin;'; put '%let admin=%sysfunc(coalescec(&admin,All Users));'; put '%mpe_makedatamodel(lib=&dclib)'; put '%mpe_makedata(lib=&dclib,mpeadmins=&admin,path=%str(&dcpath))'; put '%mp_abort(iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Err during &dclib build)'; put ')'; put '/* sample data library */'; put '%mf_mkdir(&dcpath/dc_demo)'; put 'libname dcdemo "&dcpath/dc_demo";'; put '%mpe_makesampledata(outlib=DCDEMO)'; put '%mp_abort(iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Err during demo data build)'; put ')'; put '/* the DC precode is stored in the root of the project */'; put '%let root=%mf_getapploc(&_program)/services;'; put '%put &=root;'; put 'filename jobout filesrvc folderpath="&root";'; put 'data _null_;'; put 'file jobout(''settings.sas'');'; put 'put ''/* these values are ignored if DC_LIBREF was declared in autoexec */'';'; put 'put '' '';'; put 'put ''%global DC_LIBREF dc_admin_group dc_staging_area ;'';'; put 'put ''/* This library (libref) contains the control datasets for DC */'';'; put 'put ''/* If a different libref must be used, configure it below */'';'; put 'put ''%let DC_LIBREF='' "&dclib;";'; put 'put '' '';'; put 'put "libname &dclib ''&dcpath'' ;";'; put 'put '' '';'; put 'put ''/* This group has unrestricted access to Data Controller */'';'; put 'put ''%let dc_admin_group='' "&admin;";'; put 'put '' '';'; put 'put ''/* This physical location is used for staging data and audit history */'';'; put 'put ''%let dc_staging_area='' "&dcpath/dc_staging;";'; put 'put '' '';'; put 'put ''cas dcsession sessopts=(caslib=casuser);'';'; put 'put ''caslib _all_ assign;'';'; put 'put '' '';'; put 'if &syssite in (70221618,70253615) then do;'; put 'put "libname dcdemo ''&dcpath/dc_demo'';";'; put 'end;'; put 'run;'; put '/* create demo data'; put 'cas dcsession;'; put 'caslib _all_ assign;'; put 'caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic GLOBAL;'; put 'proc casutil;'; put 'LOAD DATA=dcdemo.cars'; put 'CASOUT="cars"'; put 'OUTCASLIB="casmusic" PROMOTE ;'; put 'run;'; put '*/'; put '/*'; put 'cas mysess;'; put 'caslib _all_ assign;'; put 'data casmusic.artists(promote=yes);'; put 'length name varchar(30);'; put 'do tracks=1 to 100;'; put 'name=''Phil Collins''!!cats(tracks);'; put 'output;'; put 'end;'; put 'run;'; put '*/'; put '/*'; put '%let url=http://millionsongdataset.com/sites/default/files/AdditionalFiles%trim('; put ')/unique_tracks.txt;'; put 'filename test url "&url" lrecl=3000 ;'; put 'proc sql;'; put 'drop table casmusic.tunes;'; put 'data tracks;'; put 'infile test dlmstr='''' dsd end=lastobs;'; put 'input track_id:$32. song_id:$32. artist_nm:$128. title:$256.;'; put 'output;'; put 'if lastobs then do;'; put 'track_id=''dummyrecords'';'; put 'title=''none'';'; put 'artist_nm=''none'';'; put 'do x=1 to 4000000;'; put 'drop x;'; put 'song_id=cats(x);'; put 'output;'; put 'end;'; put 'stop;'; put 'end;'; put 'run;'; put 'proc casutil;'; put 'LOAD DATA=tracks'; put 'CASOUT="tunes"'; put 'OUTCASLIB="casmusic" PROMOTE ;'; put 'run;'; put '/*'; put 'data append;'; put 'if 0 then set &dclib..MPE_TABLES;'; put 'libref="CASMUSIC";'; put 'dsn=''TUNES'';'; put 'num_of_approvals_required=1;'; put 'loadtype=''UPDATE'';'; put 'buskey=''TRACK_ID SONG_ID'';'; put 'tx_from=0;'; put 'tx_to=''31DEC9999:23:59:59''dt;'; put 'output;'; put 'dsn=''ARTISTS'';'; put 'buskey=''NAME'';'; put 'output;'; put 'run;'; put 'proc append base=&dclib..MPE_tABLES data=append;'; put 'run;'; put '*/'; put '%mp_abort(iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Err during settings job creation)'; put ')'; put '/* Update the compute context in the streamed frontend (DC.html) so that'; put 'Data Controller runs under the same context that was selected when this'; put 'service was invoked. The file must be re-created using %mv_createfile'; put '(the same macro used to stream the frontend at deploy time) rather than'; put 'updated in place with a filesrvc fileref - only the Files service POST'; put 'assigns the correct mime type (text/html / file_html), without which the'; put 'frontend will not stream. This service is always invoked from a URL so'; put 'the _contextname parameter is always present. */'; put '%global _contextname;'; put '%let dchtml_in=%mf_getuniquefileref();'; put '%let dchtml_out=%mf_getuniquefileref();'; put '/* Escape regex metacharacters (\ and $) in the context name so they are'; put 'treated as literals when embedded in the prxchange replacement string.'; put 'In a Perl regex replacement, \ introduces a backreference and $ introduces'; put 'variable interpolation; prefixing each with \ quotes them as literals. */'; put 'data _null_;'; put 'length _ctxname $256 _ctxesc $512;'; put '_ctxname=symget(''_contextname'');'; put '_ctxesc=tranwrd(tranwrd(_ctxname,''\'',''\\''),''$'',''\$'');'; put 'call symputx(''_contextname_escaped'',_ctxesc);'; put 'run;'; put '/* read the existing frontend */'; put 'filename &dchtml_in filesrvc folderpath="&root" filename="DC.html"'; put 'lrecl=32767;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to open DC.html in &root)'; put ')'; put '/* write the updated html to a temporary file */'; put 'data _null_;'; put 'file &dchtml_out lrecl=32767;'; put 'infile &dchtml_in lrecl=32767 truncover;'; put 'input;'; put 'length line $32767;'; put 'line=prxchange(cats(''s|contextname="[^"]*"|contextname="'''; put ',symget(''_contextname_escaped'')'; put ',''"|'''; put '),-1,_infile_);'; put 'put line;'; put 'run;'; put 'filename &dchtml_in clear;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to update compute context in DC.html)'; put ')'; put '/* re-create DC.html via the Files service to retain the html mime type */'; put '%mv_createfile(path=&root, name=DC.html, inref=&dchtml_out)'; put 'filename &dchtml_out clear;'; put '%webout(OPEN)'; put 'data result;'; put 'dclib="&dclib";'; put 'admingroup="&admin";'; put 'dcpath="&dcpath";'; put 'run;'; put '%webout(OBJ,result)'; put '%webout(CLOSE)'; put '%mv_deletejes(path=&root/admin, name=makedata)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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 '/** @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 mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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 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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',AUDITFOLDER=0'; 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 '%mp_abort('; put 'iftrue=(%sysfunc(exist(&base_lib..&base_dsn)) ne 1),'; put 'msg=&base_lib..&base_dsn does not exist'; put ')'; put '%mp_abort('; put 'iftrue=(%sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 ),'; put 'msg=&append_lib..&append_dsn does not exist'; put ')'; 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 '%mp_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 '%mp_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/* set up folder */'; put '%local tmplib;%let tmplib=%mf_getuniquelibref();'; put '%if "&AUDITFOLDER"="0" %then %do;'; put 'filename tmp temp lrecl=10000;'; put 'libname &tmplib (work);'; put '%end;'; put '%else %do;'; put '%mf_mkdir(&AUDITFOLDER)'; put 'filename tmp "&AUDITFOLDER/deleterecords.sas" lrecl=10000;'; put 'libname &tmplib "&AUDITFOLDER";'; put '%end;'; put '/**'; put '* Create closeout statements. If UPDATE approach and CAS engine, use the'; put '* DeleteRows action (as regular SQL deletes are not supported).'; put '* Otherwise, the deletions 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 etype;'; put '%let update_cnt=0;'; put '%let etype=%mf_getengine(&base_lib);'; put '%put &=etype;'; put '%if &loadtype=UPDATE and &etype=CAS %then %do;'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds &tmplib..deleterecords;'; put 'set work.___closeout1;'; put 'keep &pk;'; put 'run;'; put '/* build the proc */'; put 'data _null_;'; put 'file tmp;'; put 'put "/* libname approve ''&AUDITFOLDER''; */";'; put 'put ''proc cas;table.deleteRows result=r/ table={'' ;'; put 'put " caslib=''&base_lib'',name=''&base_dsn'',where=''1=1'',";'; put 'put " whereTable={caslib=''CASUSER'',name=''&delds''}";'; put 'put "};";'; put 'put "call symputx(''update_cnt'',r.RowsDeleted);";'; put 'put "quit;";'; put 'put "data;set casuser.&delds;putlog (_all_)(=);run;";'; put 'put ''%put &=update_cnt;'';'; put 'put "proc sql;drop table CASUSER.&delds;";'; put 'stop;'; put 'run;'; put '%end;'; put '%else %do;'; 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 'put ''%put update_cnt=&update_cnt;'';'; put 'run;'; put '%end;'; 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_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_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 '/* sysname can be ''Schema/Owner'' or just ''Schema'' (eg snowflake) */'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=:''Schema'''; 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_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 ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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) format=32. into: maxkey trimmed'; put '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=%sysevalf(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%sysevalf(&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=%sysevalf(&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 %sysevalf(&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="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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(),8.6);'; 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 mp_rowhash('; put 'md5_col='; put ',cvars='; put ',nvars='; put ');'; put '/* DATA step temp variables use five leading underscores. The names'; put 'are generated at macro invocation to avoid clashing with data columns. */'; put '%local state digest pair numtext normal i chars nums;'; put '%let state=%mf_getuniquename(prefix=_____state_);'; put '%let digest=%mf_getuniquename(prefix=_____digest_);'; put '%let pair=%mf_getuniquename(prefix=_____pair_);'; put '%let numtext=%mf_getuniquename(prefix=_____numtext_);'; put '%let normal=%mf_getuniquename(prefix=_____normal_);'; put '%let i=%mf_getuniquename(prefix=_____i_);'; put '%let chars=%mf_getuniquename(prefix=_____chars_);'; put '%let nums=%mf_getuniquename(prefix=_____nums_);'; put 'length &state $16'; put '&digest $16'; put '&pair $32'; put '&numtext $64'; put '&normal &i 8;'; put 'if _n_=1 then call missing(&state,&digest,&pair,&numtext,&normal,&i);'; put 'drop &state &digest &pair &numtext &normal &i;'; put '/* Versioned seed prevents confusion with other hashing schemes. */'; put '&state = md5(''DC HASH v2'');'; put '%if %length(&cvars)>0 %then %do;'; put 'array &chars{*} $ &cvars;'; put 'do &i = 1 to dim(&chars);'; put '/* Leading blanks are retained. */'; put '&digest = md5(trimn(&chars[&i]));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '%if %length(&nvars)>0 %then %do;'; put 'array &nums{*} &nvars;'; put 'do &i = 1 to dim(&nums);'; put '/*'; put 'multiply-by-one for consistent cross-system precision.'; put 'Ignore null to protect SAS special missing values.'; put 'Cannot use IFN() as it evaluates both sides'; put '*/'; put 'if missing(&nums[&i]) then &normal = &nums[&i];'; put 'else &normal = &nums[&i] * 1;'; put '&numtext = put(&normal, binary64.);'; put '&digest = md5(trim(&numtext));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '&md5_col = put(&state, $hex32.);'; put '%mend mp_rowhash;'; 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=33;'; 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 %length(&CLOSE_VARS)>0 and (&engine_type=REDSHIFT or &engine_type=POSTGRES'; put 'or &engine_type=SNOW or &engine_type=SASIOSNF)'; 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 hash_char_vars hash_num_vars ;'; 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 '/* Character variables are hashed separately from numerics so that the'; put 'iterative hash can be built with arrays rather than by concatenating'; put 'hundreds of 32-byte hex strings. */'; put 'select name into: hash_char_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type in (2,6)'; put 'and upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select name into: hash_num_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type not in (2,6)'; put 'and 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 &=hash_char_vars;'; put '%put &=hash_num_vars;'; 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___) or %index(%quote(&cols),_____) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___" or "_____".%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 '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 '%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_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%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 '%let temp_table=%upcase(%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 in-db empty table with PK + MD5 only */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&temp_table'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; 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 '%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 '/* inherit remote length to handle byte expansion */'; put 'if 0 then set &base_lib..&temp_table(keep=&md5_col);'; 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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 hash_char_vars=&hash_char_vars;'; put '%put hash_num_vars=&hash_num_vars;'; put 'data work.bitemp1_current(drop=___TMP___NEW_FLG);'; put 'set work.bitemp0_base(drop=&md5_col);'; put 'if ___TMP___NEW_FLG=0;'; put 'length &md5_col $32;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; put 'run;'; 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 '/* For bitemporal we also include the business dates in the comparison hash.'; put 'The business dates are passed as prefix numerics so that both lookup and'; put 'update tables use exactly the same hashing order. */'; put 'data work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.bitemp0_base;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; 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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%then %do;'; put '%let innertable=%upcase(%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 '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&innertable'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put 'exec (create table &innertable'; put '(like &baselib_schema.&base_dsn)'; put ') by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; 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 '%put Not using passthrough for *&engine_type* engine;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 &bus_from'; 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 '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs(lib=0);'; 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 &lib ne 0 %then %do;'; put 'where upcase(libraryref)="%upcase(&lib)";'; put '%end;'; 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 '%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 '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib indexes extraction)'; put ')'; 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 work.sumcat as'; put 'select libname as libref,'; put 'count(distinct memname) as catalog_cnt'; put 'from dictionary.catalogs'; put 'where upcase(libname)="&lib"'; put 'group by 1;'; put 'create table work.sumdsn as select'; put 'libref'; put ',sum(filesize) as libsize'; put ',count(*) as table_cnt'; put 'from statustabs'; put 'group by 1;'; put 'create table work.libs as'; put 'select libref from work.sumcat'; put 'union'; put 'select libref from work.sumdsn;'; put 'create table work.statuslibs as'; put 'select a.libref,'; put 'b.libsize,'; put 'b.table_cnt,'; put 'c.catalog_cnt'; put 'from work.libs a'; put 'left join work.sumdsn b'; put 'on a.libref=b.libref'; put 'left join work.sumcat c'; put 'on a.libref=c.libref;'; 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 mpe_refreshcatalogs(lib,cat=#all);'; put '%let lib=%upcase(&lib);'; put '%let cat=%upcase(&cat);'; put '%put running &sysmacroname &lib for &cat;'; put 'proc sql;'; put 'create table work.catdata as'; put 'select libname as libref,'; put 'memname,'; put 'objname,'; put 'objtype,'; put 'objdesc,'; put 'created,'; put 'modified,'; put 'alias,'; put 'level'; put 'from dictionary.catalogs'; put 'where upcase(libname)="&lib"'; put '%if &cat ne #ALL %then %do;'; put 'and upcase(memname)="&cat"'; put '%end;'; put ';'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib objects extraction)'; put ')'; put '/* load mpe_datacatalog_CATS */'; put 'proc sql;'; put 'create table datacats as select distinct libref,memname from catdata;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_CATS'; put ',append_dsn=datacats'; put ',PK=LIBREF MEMNAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '/* load mpe_datacatalog_objsS */'; put 'proc sql;'; put 'create table dataobjs as'; put 'select distinct libref,'; put 'memname,'; put 'objname,'; put 'objtype,'; put 'objdesc,'; put 'alias'; put 'from catdata;'; put 'quit;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_OBJS'; put ',append_dsn=dataobjs'; put ',PK=LIBREF MEMNAME OBJNAME OBJTYPE'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF MEMNAME'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '%put load mpe_datastatus_OBJS;'; put 'proc sql;'; put 'create table statusobjs as'; put 'select distinct libref,'; put 'memname,'; put 'objname,'; put 'objtype,'; put 'created,'; put 'modified,'; put 'level'; put 'from catdata;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_OBJS'; put ',append_dsn=statusobjs'; put ',PK=LIBREF MEMNAME OBJNAME OBJTYPE'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF MEMNAME'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '%put load mpe_datastatus_cats;'; put 'proc sql;'; put 'create table statuscats as'; put 'select libref,'; put 'memname,'; put 'count(*) as nobjs,'; put 'min(created) as created,'; put 'max(modified) as modified'; put 'from catdata'; put 'group by 1,2;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_cats'; put ',append_dsn=statuscats'; put ',PK=LIBREF MEMNAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '%mend mpe_refreshcatalogs;'; put '%macro dc_refreshcatalog(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(lib=&libref)'; put '%mpe_refreshtables(&libref)'; put '%mpe_refreshcatalogs(&libref)'; put '%end;'; put '%else %do;'; put '%mpe_refreshlibs()'; put 'filename executor catalog ''work.code.code.source'';'; put 'data libraries;'; put 'set &mpelib..mpe_datacatalog_libs;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'file executor;'; put 'str=cats(''%mpe_refreshtables('',libref,'')'');'; put 'put str;'; put 'str=cats(''%mpe_refreshcatalogs('',libref,'')'');'; put 'put str;'; put 'putlog str;'; put 'run;'; put '%inc executor;'; put '%end;'; put '%mend dc_refreshcatalog;'; 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 'Requires membership of the DC administrators group.'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li dc_refreshcatalog.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mp_validatecol.sas'; put '@li mpeterm.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; 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 '/**'; put '* libref is a request input used in dc_assignlib and catalog queries -'; put '* it must be a well-formed libref before use. Read with symget (never'; put '* re-resolved) and validated in a data step.'; put '*/'; put '%let is_lib=0;'; put 'data _null_;'; put 'length _libref $8;'; put '_libref=coalescec(symget(''libref''),'''');'; put '/* an absent libref is a valid, full catalog refresh */'; put 'if missing(_libref) then do;'; put 'call symputx(''is_lib'',1,''l'');'; put 'call symputx(''libref'','''',''g'');'; put 'stop;'; put 'end;'; put '%mp_validatecol(_libref,ISLIB,is_lib)'; put 'if is_lib=0 then putlog ''ERR'' ''OR: Invalid libref:'' _libref;'; put 'call symputx(''is_lib'',is_lib,''l'');'; put 'if is_lib=1 then call symputx(''libref'',upcase(_libref),''g'');'; put 'run;'; put '%mp_abort(iftrue= (&is_lib ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid libref)'; put ')'; put '/* check user is in admin group */'; put '%let cnt=0;'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'proc sql noprint;'; put 'select count(*) into:cnt'; put 'from usergroups'; put 'where groupname="&mpeadmins";'; put '%mp_abort(iftrue= (&cnt=0)'; put ',mac=&_program'; put ',msg=%str(This service is only available to &mpeadmins members)'; put ')'; put '%dc_refreshcatalog(&libref)'; put 'data sasparams;'; put 'length msg $64;'; put 'msg=''Catalog Refresh Complete'';'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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 '/** @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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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 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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',AUDITFOLDER=0'; 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 '%mp_abort('; put 'iftrue=(%sysfunc(exist(&base_lib..&base_dsn)) ne 1),'; put 'msg=&base_lib..&base_dsn does not exist'; put ')'; put '%mp_abort('; put 'iftrue=(%sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 ),'; put 'msg=&append_lib..&append_dsn does not exist'; put ')'; 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 '%mp_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 '%mp_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/* set up folder */'; put '%local tmplib;%let tmplib=%mf_getuniquelibref();'; put '%if "&AUDITFOLDER"="0" %then %do;'; put 'filename tmp temp lrecl=10000;'; put 'libname &tmplib (work);'; put '%end;'; put '%else %do;'; put '%mf_mkdir(&AUDITFOLDER)'; put 'filename tmp "&AUDITFOLDER/deleterecords.sas" lrecl=10000;'; put 'libname &tmplib "&AUDITFOLDER";'; put '%end;'; put '/**'; put '* Create closeout statements. If UPDATE approach and CAS engine, use the'; put '* DeleteRows action (as regular SQL deletes are not supported).'; put '* Otherwise, the deletions 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 etype;'; put '%let update_cnt=0;'; put '%let etype=%mf_getengine(&base_lib);'; put '%put &=etype;'; put '%if &loadtype=UPDATE and &etype=CAS %then %do;'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds &tmplib..deleterecords;'; put 'set work.___closeout1;'; put 'keep &pk;'; put 'run;'; put '/* build the proc */'; put 'data _null_;'; put 'file tmp;'; put 'put "/* libname approve ''&AUDITFOLDER''; */";'; put 'put ''proc cas;table.deleteRows result=r/ table={'' ;'; put 'put " caslib=''&base_lib'',name=''&base_dsn'',where=''1=1'',";'; put 'put " whereTable={caslib=''CASUSER'',name=''&delds''}";'; put 'put "};";'; put 'put "call symputx(''update_cnt'',r.RowsDeleted);";'; put 'put "quit;";'; put 'put "data;set casuser.&delds;putlog (_all_)(=);run;";'; put 'put ''%put &=update_cnt;'';'; put 'put "proc sql;drop table CASUSER.&delds;";'; put 'stop;'; put 'run;'; put '%end;'; put '%else %do;'; 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 'put ''%put update_cnt=&update_cnt;'';'; put 'run;'; put '%end;'; 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_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_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 '/* sysname can be ''Schema/Owner'' or just ''Schema'' (eg snowflake) */'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=:''Schema'''; 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_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 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 ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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) format=32. into: maxkey trimmed'; put '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=%sysevalf(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%sysevalf(&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=%sysevalf(&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 %sysevalf(&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="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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(),8.6);'; 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 mp_rowhash('; put 'md5_col='; put ',cvars='; put ',nvars='; put ');'; put '/* DATA step temp variables use five leading underscores. The names'; put 'are generated at macro invocation to avoid clashing with data columns. */'; put '%local state digest pair numtext normal i chars nums;'; put '%let state=%mf_getuniquename(prefix=_____state_);'; put '%let digest=%mf_getuniquename(prefix=_____digest_);'; put '%let pair=%mf_getuniquename(prefix=_____pair_);'; put '%let numtext=%mf_getuniquename(prefix=_____numtext_);'; put '%let normal=%mf_getuniquename(prefix=_____normal_);'; put '%let i=%mf_getuniquename(prefix=_____i_);'; put '%let chars=%mf_getuniquename(prefix=_____chars_);'; put '%let nums=%mf_getuniquename(prefix=_____nums_);'; put 'length &state $16'; put '&digest $16'; put '&pair $32'; put '&numtext $64'; put '&normal &i 8;'; put 'if _n_=1 then call missing(&state,&digest,&pair,&numtext,&normal,&i);'; put 'drop &state &digest &pair &numtext &normal &i;'; put '/* Versioned seed prevents confusion with other hashing schemes. */'; put '&state = md5(''DC HASH v2'');'; put '%if %length(&cvars)>0 %then %do;'; put 'array &chars{*} $ &cvars;'; put 'do &i = 1 to dim(&chars);'; put '/* Leading blanks are retained. */'; put '&digest = md5(trimn(&chars[&i]));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '%if %length(&nvars)>0 %then %do;'; put 'array &nums{*} &nvars;'; put 'do &i = 1 to dim(&nums);'; put '/*'; put 'multiply-by-one for consistent cross-system precision.'; put 'Ignore null to protect SAS special missing values.'; put 'Cannot use IFN() as it evaluates both sides'; put '*/'; put 'if missing(&nums[&i]) then &normal = &nums[&i];'; put 'else &normal = &nums[&i] * 1;'; put '&numtext = put(&normal, binary64.);'; put '&digest = md5(trim(&numtext));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '&md5_col = put(&state, $hex32.);'; put '%mend mp_rowhash;'; 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=33;'; 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 %length(&CLOSE_VARS)>0 and (&engine_type=REDSHIFT or &engine_type=POSTGRES'; put 'or &engine_type=SNOW or &engine_type=SASIOSNF)'; 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 hash_char_vars hash_num_vars ;'; 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 '/* Character variables are hashed separately from numerics so that the'; put 'iterative hash can be built with arrays rather than by concatenating'; put 'hundreds of 32-byte hex strings. */'; put 'select name into: hash_char_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type in (2,6)'; put 'and upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select name into: hash_num_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type not in (2,6)'; put 'and 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 &=hash_char_vars;'; put '%put &=hash_num_vars;'; 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___) or %index(%quote(&cols),_____) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___" or "_____".%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 '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 '%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_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%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 '%let temp_table=%upcase(%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 in-db empty table with PK + MD5 only */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&temp_table'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; 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 '%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 '/* inherit remote length to handle byte expansion */'; put 'if 0 then set &base_lib..&temp_table(keep=&md5_col);'; 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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 hash_char_vars=&hash_char_vars;'; put '%put hash_num_vars=&hash_num_vars;'; put 'data work.bitemp1_current(drop=___TMP___NEW_FLG);'; put 'set work.bitemp0_base(drop=&md5_col);'; put 'if ___TMP___NEW_FLG=0;'; put 'length &md5_col $32;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; put 'run;'; 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 '/* For bitemporal we also include the business dates in the comparison hash.'; put 'The business dates are passed as prefix numerics so that both lookup and'; put 'update tables use exactly the same hashing order. */'; put 'data work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.bitemp0_base;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; 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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%then %do;'; put '%let innertable=%upcase(%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 '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&innertable'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put 'exec (create table &innertable'; put '(like &baselib_schema.&base_dsn)'; put ') by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; 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 '%put Not using passthrough for *&engine_type* engine;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 &bus_from'; 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 '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs(lib=0);'; 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 &lib ne 0 %then %do;'; put 'where upcase(libraryref)="%upcase(&lib)";'; put '%end;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshlibs.sas'; put '@brief Refreshes the library data catalog'; put '@details Requires membership of the DC administrators group.'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li mpe_refreshlibs.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; 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 '/* check user is in admin group */'; put '%let cnt=0;'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'proc sql noprint;'; put 'select count(*) into:cnt'; put 'from usergroups'; put 'where groupname="&mpeadmins";'; put '%mp_abort(iftrue= (&cnt=0)'; put ',mac=&_program'; put ',msg=%str(This service is only available to &mpeadmins members)'; put ')'; put '%mpe_refreshlibs()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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 '/** @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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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 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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',AUDITFOLDER=0'; 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 '%mp_abort('; put 'iftrue=(%sysfunc(exist(&base_lib..&base_dsn)) ne 1),'; put 'msg=&base_lib..&base_dsn does not exist'; put ')'; put '%mp_abort('; put 'iftrue=(%sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 ),'; put 'msg=&append_lib..&append_dsn does not exist'; put ')'; 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 '%mp_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 '%mp_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/* set up folder */'; put '%local tmplib;%let tmplib=%mf_getuniquelibref();'; put '%if "&AUDITFOLDER"="0" %then %do;'; put 'filename tmp temp lrecl=10000;'; put 'libname &tmplib (work);'; put '%end;'; put '%else %do;'; put '%mf_mkdir(&AUDITFOLDER)'; put 'filename tmp "&AUDITFOLDER/deleterecords.sas" lrecl=10000;'; put 'libname &tmplib "&AUDITFOLDER";'; put '%end;'; put '/**'; put '* Create closeout statements. If UPDATE approach and CAS engine, use the'; put '* DeleteRows action (as regular SQL deletes are not supported).'; put '* Otherwise, the deletions 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 etype;'; put '%let update_cnt=0;'; put '%let etype=%mf_getengine(&base_lib);'; put '%put &=etype;'; put '%if &loadtype=UPDATE and &etype=CAS %then %do;'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds &tmplib..deleterecords;'; put 'set work.___closeout1;'; put 'keep &pk;'; put 'run;'; put '/* build the proc */'; put 'data _null_;'; put 'file tmp;'; put 'put "/* libname approve ''&AUDITFOLDER''; */";'; put 'put ''proc cas;table.deleteRows result=r/ table={'' ;'; put 'put " caslib=''&base_lib'',name=''&base_dsn'',where=''1=1'',";'; put 'put " whereTable={caslib=''CASUSER'',name=''&delds''}";'; put 'put "};";'; put 'put "call symputx(''update_cnt'',r.RowsDeleted);";'; put 'put "quit;";'; put 'put "data;set casuser.&delds;putlog (_all_)(=);run;";'; put 'put ''%put &=update_cnt;'';'; put 'put "proc sql;drop table CASUSER.&delds;";'; put 'stop;'; put 'run;'; put '%end;'; put '%else %do;'; 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 'put ''%put update_cnt=&update_cnt;'';'; put 'run;'; put '%end;'; 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_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_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 '/* sysname can be ''Schema/Owner'' or just ''Schema'' (eg snowflake) */'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=:''Schema'''; 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_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 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 ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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) format=32. into: maxkey trimmed'; put '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=%sysevalf(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%sysevalf(&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=%sysevalf(&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 %sysevalf(&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="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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(),8.6);'; 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 mp_rowhash('; put 'md5_col='; put ',cvars='; put ',nvars='; put ');'; put '/* DATA step temp variables use five leading underscores. The names'; put 'are generated at macro invocation to avoid clashing with data columns. */'; put '%local state digest pair numtext normal i chars nums;'; put '%let state=%mf_getuniquename(prefix=_____state_);'; put '%let digest=%mf_getuniquename(prefix=_____digest_);'; put '%let pair=%mf_getuniquename(prefix=_____pair_);'; put '%let numtext=%mf_getuniquename(prefix=_____numtext_);'; put '%let normal=%mf_getuniquename(prefix=_____normal_);'; put '%let i=%mf_getuniquename(prefix=_____i_);'; put '%let chars=%mf_getuniquename(prefix=_____chars_);'; put '%let nums=%mf_getuniquename(prefix=_____nums_);'; put 'length &state $16'; put '&digest $16'; put '&pair $32'; put '&numtext $64'; put '&normal &i 8;'; put 'if _n_=1 then call missing(&state,&digest,&pair,&numtext,&normal,&i);'; put 'drop &state &digest &pair &numtext &normal &i;'; put '/* Versioned seed prevents confusion with other hashing schemes. */'; put '&state = md5(''DC HASH v2'');'; put '%if %length(&cvars)>0 %then %do;'; put 'array &chars{*} $ &cvars;'; put 'do &i = 1 to dim(&chars);'; put '/* Leading blanks are retained. */'; put '&digest = md5(trimn(&chars[&i]));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '%if %length(&nvars)>0 %then %do;'; put 'array &nums{*} &nvars;'; put 'do &i = 1 to dim(&nums);'; put '/*'; put 'multiply-by-one for consistent cross-system precision.'; put 'Ignore null to protect SAS special missing values.'; put 'Cannot use IFN() as it evaluates both sides'; put '*/'; put 'if missing(&nums[&i]) then &normal = &nums[&i];'; put 'else &normal = &nums[&i] * 1;'; put '&numtext = put(&normal, binary64.);'; put '&digest = md5(trim(&numtext));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '&md5_col = put(&state, $hex32.);'; put '%mend mp_rowhash;'; 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=33;'; 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 %length(&CLOSE_VARS)>0 and (&engine_type=REDSHIFT or &engine_type=POSTGRES'; put 'or &engine_type=SNOW or &engine_type=SASIOSNF)'; 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 hash_char_vars hash_num_vars ;'; 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 '/* Character variables are hashed separately from numerics so that the'; put 'iterative hash can be built with arrays rather than by concatenating'; put 'hundreds of 32-byte hex strings. */'; put 'select name into: hash_char_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type in (2,6)'; put 'and upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select name into: hash_num_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type not in (2,6)'; put 'and 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 &=hash_char_vars;'; put '%put &=hash_num_vars;'; 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___) or %index(%quote(&cols),_____) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___" or "_____".%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 '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 '%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_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%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 '%let temp_table=%upcase(%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 in-db empty table with PK + MD5 only */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&temp_table'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; 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 '%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 '/* inherit remote length to handle byte expansion */'; put 'if 0 then set &base_lib..&temp_table(keep=&md5_col);'; 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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 hash_char_vars=&hash_char_vars;'; put '%put hash_num_vars=&hash_num_vars;'; put 'data work.bitemp1_current(drop=___TMP___NEW_FLG);'; put 'set work.bitemp0_base(drop=&md5_col);'; put 'if ___TMP___NEW_FLG=0;'; put 'length &md5_col $32;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; put 'run;'; 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 '/* For bitemporal we also include the business dates in the comparison hash.'; put 'The business dates are passed as prefix numerics so that both lookup and'; put 'update tables use exactly the same hashing order. */'; put 'data work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.bitemp0_base;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; 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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%then %do;'; put '%let innertable=%upcase(%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 '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&innertable'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put 'exec (create table &innertable'; put '(like &baselib_schema.&base_dsn)'; put ') by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; 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 '%put Not using passthrough for *&engine_type* engine;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 &bus_from'; 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 '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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,missing=STRING)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Returns the list of previously approved / rejected items.'; put '@details History is taken from MPE_SUBMIT (where status_cd ne ''SUBMITTED'') and'; put 'filtered according to the groups in MPE_SECURITY (unless the user is in the'; put 'DC admin group).'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '

Service Inputs

'; put '
BROWSERPARAMS
'; put 'The following variables MAY be provided from frontend (HIST can also be set'; put 'in MPE_CONFIG):'; put '@li HIST - number of records to return'; put '@li STARTROW - the starting row (default is 1)'; put '

Service Outputs

'; put '
FROMSAS
'; put 'This table is returned, starting from &STARTROW for &HIST rows (ordered'; put 'descending on SUBMITTED datetime)'; put '@li TABLE_ID'; put '@li BASE_TABLE'; put '@li SUBMITTED'; put '@li SUBMITTED_REASON_TXT'; put '@li SUBMITTER'; put '@li REVIEWED'; put '@li STATUS'; put '@li REVIEWED_ON_DTTM'; put '@li APPROVER'; put '
HISTPARAMS
'; put '@li HIST - rows returned'; put '@li STARTROW - starting row used'; put '@li NOBS - Number of observations (rows) available'; put '@version 9.3'; put '@author 4GL Apps Ltd'; 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 '/* hard coded HIST value */'; put '%let hist=40;'; put '%let startrow=1;'; put '/* load parameters from frontend (HIST and STARTROW) */'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC_REVIEW"'; put 'and var_name=''HISTORY_ROWS'''; put 'and &dc_dttmtfmt. lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(''hist'',var_value,''G'');'; put 'putlog ''mpe_config: '' var_name "=" var_value;'; put 'run;'; put '/* load parameters (override HIST again if provided) */'; 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 distinct 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 '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 ';'; put '/* get latest reason text */'; put 'create table work.reviews as'; put 'select a.*'; put ',b.reviewed_on_dttm'; put ',b.reviewed_by_nm as approver'; put ',b.review_reason_txt'; put 'from work.submits a'; put 'left join &mpelib..mpe_review b'; put 'on a.table_id=b.table_id'; put 'order by a.table_id desc, b.reviewed_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.reviews;'; put 'by descending table_id descending reviewed_on_dttm;'; put 'if first.table_id;'; put 'if _n_ ge &startrow;'; put 'n+1;'; put 'if n>&hist then stop;'; put 'drop n;'; put 'run;'; put 'proc sql noprint;'; put 'select count(*) into: nobs from work.submits;'; put 'data work.histparams;'; put 'hist=&hist;'; put 'startrow=&startrow;'; put 'nobs=&nobs;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS,missing=STRING)'; put '%webout(OBJ,histparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 'end;'; put 'else do;'; 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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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 'data work.alertmessage;'; put 'set &mpelib..mpe_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also var_scope=''DC_EMAIL'' and var_name="&alert_event._TEMPLATE";'; put 'run;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 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 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 ')/des=''ungraceful abort'' /*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_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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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 '/* sanitise message to prevent code injection */'; put 'REVIEW_REASON_TXT=compress(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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 (_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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@li mp_validatecol.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '/**'; put '* Validate inputs before they reach executable code. libds is passed to'; put '* the access check (which interpolates it into SQL) and table is used in'; put '* the staging file path, so both must be well formed before use. Values'; put '* are re-read with symget (never re-resolved) and validated in a data'; put '* step so no macro content in the request can execute.'; put '*/'; put '%let is_libds=0;'; put '%let is_table=0;'; put '%let is_csv=0;'; put 'data _null_;'; put 'length _libds $64 _table $64 _csv $128;'; put '_libds=symget(''libds'');'; put '_table=symget(''table'');'; put '_csv=coalescec(symget(''stp_diffs_csv''),''tempDiffs.csv'');'; put '%mp_validatecol(_libds,LIBDS,is_libds)'; put '%mp_validatecol(_table,ISNAME,is_table)'; put '/* the diffs csv filename must stay inside the staging directory */'; put 'if findc(_csv,''/\'')>0 or index(_csv,''..'')>0 then do;'; put 'is_csv=0;'; put 'putlog ''ERR'' ''OR: Invalid stp_diffs_csv:'' _csv;'; put 'end;'; put 'else is_csv=1;'; put 'if is_libds=0 then putlog ''ERR'' ''OR: Invalid libds:'' _libds;'; put 'if is_table=0 then putlog ''ERR'' ''OR: Invalid table:'' _table;'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_table'',is_table,''l'');'; put 'call symputx(''is_csv'',is_csv,''l'');'; put 'if is_libds=1 then call symputx(''libds'',_libds,''g'');'; put 'if is_table=1 then call symputx(''table'',_table,''g'');'; put 'if is_csv=1 then call symputx(''stp_diffs_csv'',_csv,''g'');'; put 'run;'; put '%mp_abort(iftrue= (&is_libds ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid libds)'; put ')'; put '%mp_abort(iftrue= (&is_table ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid table)'; put ')'; put '%mp_abort(iftrue= (&is_csv ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid stp_diffs_csv)'; put ')'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 '/** @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 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 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mp_applyformats(inds,errds=0'; put ')/*/STORE SOURCE*/;'; put '%local outds liblist i engine lib msg ;'; put '/**'; put '* Validations'; put '*/'; put 'proc sort data=&inds;'; put 'by lib ds var fmt;'; put 'run;'; put '%if &errds=0 %then %let outds=%mf_getuniquename(prefix=mp_applyformats);'; put '%else %let outds=&errds;'; put 'data &outds;'; put 'set &inds;'; put 'where fmt not in ('''',''.'', ''$'', ''$CHAR.'',''8.'');'; put 'length msg $128;'; put 'by lib ds var fmt;'; put 'if libref(lib) ne 0 then do;'; put 'msg=catx('' '',''libref'',lib,''is not assigned!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put 'if exist(cats(lib,''.'',ds)) ne 1 then do;'; put 'msg=catx('' '',''libds'',lib,''.'',ds,''does not exist!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put '%mp_validatecol(fmt,FORMAT,is_fmt)'; put 'if is_fmt=0 then do;'; put 'msg=catx('' '',''format'',fmt,''on libds'',lib,''.'',ds,''.'',var,''is not valid!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put 'if first.ds then do;'; put 'retain dsid;'; put 'dsid=open(cats(lib,''.'',ds));'; put 'if dsid=0 then do;'; put 'msg=catx('' '',''libds'',lib,''.'',ds,'' could not be opened!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put 'if varnum(dsid,var)<1 then do;'; put 'msg=catx('' '',''Variable'',lib,''.'',ds,''.'',var,'' was not found!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'end;'; put 'end;'; put 'if last.ds then rc=close(dsid);'; put 'run;'; put 'proc sql noprint;'; put 'select distinct lib into: liblist separated by '' '' from &inds;'; put '%put &=liblist;'; put '%if %length(&liblist)>0 %then %do i=1 %to %sysfunc(countw(&liblist));'; put '%let lib=%scan(&liblist,1);'; put '%let engine=%mf_getengine(&lib);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put '%let msg=&lib has &engine engine - formats cannot be applied;'; put 'insert into &outds set lib="&lib",ds="_all_",var="_all", msg="&msg" ;'; put '%if &errds=0 %then %put %str(ERR)OR: &msg;'; put '%end;'; put '%end;'; put 'quit;'; put '%if %mf_nobs(&outds)>0 %then %return;'; put '/**'; put '* Validations complete - now apply the actual formats!'; put '*/'; put '%let fref=%mf_getuniquefileref();'; put 'data _null_;'; put 'set &inds;'; put 'by lib ds var fmt;'; put 'where fmt not in ('''',''.'', ''$'', ''$CHAR.'',''8.'');'; put 'file &fref;'; put 'if first.lib then put ''proc datasets nolist lib='' lib '';'';'; put 'if first.ds then put '' modify '' ds '';'';'; put 'put '' format '' var fmt '';'';'; put 'if last.ds then put '' run;'';'; put 'if last.lib then put ''quit;'';'; put 'run;'; put '%inc &fref/source2;'; put '%if &errds=0 %then %do;'; put 'proc sql;'; put 'drop table &outds;'; put '%end;'; put '%mend mp_applyformats;'; 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'' or format=:''NLDATM'''; put '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'' or format=:''NLDATE'''; 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 '* 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 Fetches the staged table (unformatted and formatted versions) for'; put 'a submitted change, given its TABLE_ID.'; put '

Service Inputs

'; put '
IWANT
'; put '|TABLE_ID:$char32.|'; put '|---|'; put '|DC20220208T142124517_124703_1184|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_existds.sas'; put '@li mp_abort.sas'; put '@li mp_applyformats.sas'; put '@li mp_getcols.sas'; put '@li mp_validatecol.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '/* table_id arrives in the web request (work.iwant) and is used in libname,'; put 'set and where statements below - so validate it strictly (must be a valid'; put 'SAS name) before ANY such use, to prevent code injection */'; put '%let table_id=0;'; put 'data _null_;'; put 'set work.iwant;'; put '%mp_validatecol(table_id,ISNAME,is_name)'; put 'if is_name=1 then call symputx(''table_id'',table_id);'; put 'else putlog ''ERR'' ''OR: Invalid table_id: '' table_id;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= ("&table_id"="0")'; put ',mac=&_program..sas'; put ',msg=%str(Invalid table_id provided)'; put ')'; put '/* whitelist check - the table_id must also exist in mpe_submit. The same'; put 'lookup provides the base library & dataset, used further down to source'; put 'the formats. These are also validated before use in code. */'; put '%let base_lib=;'; put '%let base_ds=;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where TABLE_ID="&table_id";'; put 'length base_libds $41;'; put 'base_libds=cats(base_lib,''.'',base_ds);'; put '%mp_validatecol(base_libds,LIBDS,is_base_libds)'; put 'if is_base_libds=1 then do;'; put 'call symputx(''base_lib'',base_lib);'; put 'call symputx(''base_ds'',base_ds);'; put 'end;'; put 'else putlog ''ERR'' ''OR: Invalid base libds: '' base_libds;'; put 'run;'; put '%mp_abort(iftrue= ("&base_lib"="" or "&base_ds"="")'; put ',mac=&_program..sas'; put ',msg=%str(No valid mpe_submit record found for table_id=&table_id)'; put ')'; 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 '/* the staged dataset on disk has no formats, so apply those of the base'; put 'table (sourced from mpe_submit above) to the work copy - this drives the'; put 'frontend''s Formatted/Unformatted toggle */'; put '%dc_assignlib(READ,&base_lib)'; put '%mp_getcols(&base_lib..&base_ds,outds=work.basecols)'; put 'data work.stagefmts;'; put 'set work.basecols;'; put 'length lib $8 ds $32 var $32 fmt $49;'; put 'lib=''WORK'';'; put 'ds=''STAGETABLE'';'; put 'var=name;'; put 'fmt=format;'; put 'keep lib ds var fmt;'; put 'run;'; put '%mp_applyformats(work.stagefmts)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after applying base formats)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,stagetable,missing=STRING)'; put '/* same table again with SAS formats applied */'; put '%webout(OBJ,stagetable,dslabel=fmt_stagetable,fmt=Y,missing=STRING)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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 '/** @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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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 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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',AUDITFOLDER=0'; 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 '%mp_abort('; put 'iftrue=(%sysfunc(exist(&base_lib..&base_dsn)) ne 1),'; put 'msg=&base_lib..&base_dsn does not exist'; put ')'; put '%mp_abort('; put 'iftrue=(%sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 ),'; put 'msg=&append_lib..&append_dsn does not exist'; put ')'; 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 '%mp_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 '%mp_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/* set up folder */'; put '%local tmplib;%let tmplib=%mf_getuniquelibref();'; put '%if "&AUDITFOLDER"="0" %then %do;'; put 'filename tmp temp lrecl=10000;'; put 'libname &tmplib (work);'; put '%end;'; put '%else %do;'; put '%mf_mkdir(&AUDITFOLDER)'; put 'filename tmp "&AUDITFOLDER/deleterecords.sas" lrecl=10000;'; put 'libname &tmplib "&AUDITFOLDER";'; put '%end;'; put '/**'; put '* Create closeout statements. If UPDATE approach and CAS engine, use the'; put '* DeleteRows action (as regular SQL deletes are not supported).'; put '* Otherwise, the deletions 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 etype;'; put '%let update_cnt=0;'; put '%let etype=%mf_getengine(&base_lib);'; put '%put &=etype;'; put '%if &loadtype=UPDATE and &etype=CAS %then %do;'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds &tmplib..deleterecords;'; put 'set work.___closeout1;'; put 'keep &pk;'; put 'run;'; put '/* build the proc */'; put 'data _null_;'; put 'file tmp;'; put 'put "/* libname approve ''&AUDITFOLDER''; */";'; put 'put ''proc cas;table.deleteRows result=r/ table={'' ;'; put 'put " caslib=''&base_lib'',name=''&base_dsn'',where=''1=1'',";'; put 'put " whereTable={caslib=''CASUSER'',name=''&delds''}";'; put 'put "};";'; put 'put "call symputx(''update_cnt'',r.RowsDeleted);";'; put 'put "quit;";'; put 'put "data;set casuser.&delds;putlog (_all_)(=);run;";'; put 'put ''%put &=update_cnt;'';'; put 'put "proc sql;drop table CASUSER.&delds;";'; put 'stop;'; put 'run;'; put '%end;'; put '%else %do;'; 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 'put ''%put update_cnt=&update_cnt;'';'; put 'run;'; put '%end;'; 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_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_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 '/* sysname can be ''Schema/Owner'' or just ''Schema'' (eg snowflake) */'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=:''Schema'''; 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_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 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 ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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) format=32. into: maxkey trimmed'; put '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=%sysevalf(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%sysevalf(&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=%sysevalf(&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 %sysevalf(&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="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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(),8.6);'; 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 mp_rowhash('; put 'md5_col='; put ',cvars='; put ',nvars='; put ');'; put '/* DATA step temp variables use five leading underscores. The names'; put 'are generated at macro invocation to avoid clashing with data columns. */'; put '%local state digest pair numtext normal i chars nums;'; put '%let state=%mf_getuniquename(prefix=_____state_);'; put '%let digest=%mf_getuniquename(prefix=_____digest_);'; put '%let pair=%mf_getuniquename(prefix=_____pair_);'; put '%let numtext=%mf_getuniquename(prefix=_____numtext_);'; put '%let normal=%mf_getuniquename(prefix=_____normal_);'; put '%let i=%mf_getuniquename(prefix=_____i_);'; put '%let chars=%mf_getuniquename(prefix=_____chars_);'; put '%let nums=%mf_getuniquename(prefix=_____nums_);'; put 'length &state $16'; put '&digest $16'; put '&pair $32'; put '&numtext $64'; put '&normal &i 8;'; put 'if _n_=1 then call missing(&state,&digest,&pair,&numtext,&normal,&i);'; put 'drop &state &digest &pair &numtext &normal &i;'; put '/* Versioned seed prevents confusion with other hashing schemes. */'; put '&state = md5(''DC HASH v2'');'; put '%if %length(&cvars)>0 %then %do;'; put 'array &chars{*} $ &cvars;'; put 'do &i = 1 to dim(&chars);'; put '/* Leading blanks are retained. */'; put '&digest = md5(trimn(&chars[&i]));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '%if %length(&nvars)>0 %then %do;'; put 'array &nums{*} &nvars;'; put 'do &i = 1 to dim(&nums);'; put '/*'; put 'multiply-by-one for consistent cross-system precision.'; put 'Ignore null to protect SAS special missing values.'; put 'Cannot use IFN() as it evaluates both sides'; put '*/'; put 'if missing(&nums[&i]) then &normal = &nums[&i];'; put 'else &normal = &nums[&i] * 1;'; put '&numtext = put(&normal, binary64.);'; put '&digest = md5(trim(&numtext));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '&md5_col = put(&state, $hex32.);'; put '%mend mp_rowhash;'; 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=33;'; 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 %length(&CLOSE_VARS)>0 and (&engine_type=REDSHIFT or &engine_type=POSTGRES'; put 'or &engine_type=SNOW or &engine_type=SASIOSNF)'; 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 hash_char_vars hash_num_vars ;'; 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 '/* Character variables are hashed separately from numerics so that the'; put 'iterative hash can be built with arrays rather than by concatenating'; put 'hundreds of 32-byte hex strings. */'; put 'select name into: hash_char_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type in (2,6)'; put 'and upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select name into: hash_num_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type not in (2,6)'; put 'and 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 &=hash_char_vars;'; put '%put &=hash_num_vars;'; 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___) or %index(%quote(&cols),_____) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___" or "_____".%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 '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 '%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_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%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 '%let temp_table=%upcase(%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 in-db empty table with PK + MD5 only */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&temp_table'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; 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 '%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 '/* inherit remote length to handle byte expansion */'; put 'if 0 then set &base_lib..&temp_table(keep=&md5_col);'; 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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 hash_char_vars=&hash_char_vars;'; put '%put hash_num_vars=&hash_num_vars;'; put 'data work.bitemp1_current(drop=___TMP___NEW_FLG);'; put 'set work.bitemp0_base(drop=&md5_col);'; put 'if ___TMP___NEW_FLG=0;'; put 'length &md5_col $32;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; put 'run;'; 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 '/* For bitemporal we also include the business dates in the comparison hash.'; put 'The business dates are passed as prefix numerics so that both lookup and'; put 'update tables use exactly the same hashing order. */'; put 'data work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.bitemp0_base;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; 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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%then %do;'; put '%let innertable=%upcase(%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 '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&innertable'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put 'exec (create table &innertable'; put '(like &baselib_schema.&base_dsn)'; put ') by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; 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 '%put Not using passthrough for *&engine_type* engine;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 &bus_from'; 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 '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; put '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: access_level=&access_level;'; put '%mend mpe_accesscheck;'; 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 'end;'; put 'else do;'; 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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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 'data work.alertmessage;'; put 'set &mpelib..mpe_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also var_scope=''DC_EMAIL'' and var_name="&alert_event._TEMPLATE";'; put 'run;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mv_getfoldermembers(root=/'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=mv_getfolders'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_isblank(&root)=1 %then %let root=/;'; put 'options noquotelenmax;'; put '/* request the client details */'; put '%local fname1 libref1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if "&root"="/" %then %do;'; put '/* if root just list root folders */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/rootFolders?limit=1000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* first get parent folder id */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&root";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put 'libname &libref1 JSON fileref=&fname1;'; put '/* now get the followon link to list members */'; put '%local href cnt;'; put '%let cnt=0;'; put 'data _null_;'; put 'length rel href $512;'; put 'call missing(rel,href);'; put 'set &libref1..links;'; put 'if rel=''members'' then do;'; put 'url=cats("''","&base_uri",href,"?limit=10000''");'; put 'call symputx(''href'',url,''l'');'; put 'call symputx(''cnt'',1,''l'');'; put 'end;'; put 'run;'; put '%if &cnt=0 %then %do;'; put '%put NOTE:;%put NOTE- No members found in &root!!;%put NOTE-;'; put '%return;'; put '%end;'; put '%local fname2 libref2;'; put '%let fname2=%mf_getuniquefileref();'; put '%let libref2=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname2 &oauth_bearer'; put 'url=%unquote(%superq(href));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref2 JSON fileref=&fname2;'; put 'data &outds;'; put 'length id $36 name $128 uri $64 type $32 description $256;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &libref2..items;'; put 'run;'; put 'filename &fname2 clear;'; put 'libname &libref2 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getfoldermembers;'; put '%macro mv_getjobcode(outref=0,outfile=0'; put ',name=0,path=0'; put ',contextName=SAS Job Execution compute context'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ');'; put '%local dbg bufsize varcnt fname1 fname2 errmsg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname local entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=("&path"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Path not provided)'; put ')'; put '%mp_abort(iftrue=("&name"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Name not provided)'; put ')'; put '%mp_abort(iftrue=("&outfile"="0" and "&outref"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Output destination (file or fileref) must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put 'data;run;'; put '%local foldermembers;'; put '%let foldermembers=&syslast;'; put '%mv_getfoldermembers(root=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',outds=&foldermembers'; put ')'; put '%local joburi;'; put '%let joburi=0;'; put 'data _null_;'; put 'length name uri $512;'; put 'call missing(name,uri);'; put 'set &foldermembers;'; put 'if name="&name" and uri=:''/jobDefinitions/definitions'''; put 'then call symputx(''joburi'',uri);'; put 'run;'; put '%mp_abort(iftrue=("&joburi"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job &path/&name not found)'; put ')'; put '/* prepare request*/'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri&joburi";'; put 'headers "Accept"="application/vnd.sas.job.definition+json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let fname2=%mf_getuniquefileref();'; put 'filename &fname2 temp ;'; put '/* cannot use lua IO package as not available in Viya 4 */'; put '/* so use data step to read the JSON until the string `"code":"` is found */'; put 'data _null_;'; put 'file &fname2 recfm=n;'; put 'infile &fname1 lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'retain startwrite 0;'; put 'if startwrite=0 and sourcechar=''"'' then do;'; put 'reentry:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''c'' then do;'; put 'reentry2:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''o'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''d'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''e'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar='':'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'putlog ''code found'';'; put 'startwrite=1;'; put 'input sourcechar $ 1. @@;'; put 'end;'; put 'end;'; put 'else if sourcechar=''c'' then goto reentry2;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put '/* once the `"code":"` string is found, write until unescaped `"` is found */'; put 'if startwrite=1 then do;'; put 'if sourcechar=''\'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar in (''"'',''\'') then put sourcechar char1.;'; put 'else if sourcechar=''n'' then put ''0A''x;'; put 'else if sourcechar=''r'' then put ''0D''x;'; put 'else if sourcechar=''t'' then put ''09''x;'; put 'else if sourcechar=''u'' then do;'; put 'length uni $4;'; put 'input uni $ 4. @@;'; put 'sourcechar=unicode(''\u''!!uni);'; put 'put sourcechar char1.;'; put 'end;'; put 'else do;'; put 'call symputx(''errmsg'',"Uncaught escape char: "!!sourcechar,''l'');'; put 'call symputx(''syscc'',99);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then stop;'; put 'else put sourcechar char1.;'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=("&syscc"="99")'; put ',mac=mv_getjobcode'; put ',msg=%str(&errmsg)'; put ')'; put '/* export to desired destination */'; put '%if "&outref"="0" %then %do;'; put 'data _null_;'; put 'file "&outfile" lrecl=32767;'; put '%end;'; put '%else %do;'; put 'filename &outref temp;'; put 'data _null_;'; put 'file &outref;'; put '%end;'; put 'infile &fname2;'; put 'input;'; put 'put _infile_;'; put '&dbg. putlog _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put '%end;'; put '%mend mv_getjobcode;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%local name;'; put '%let name=%scan(&loc,-1,/);'; put '%mv_getjobcode(path=%substr(&loc,1,%length(&loc)-%length(&name)-1)'; put ',name=&name'; 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 mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; 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 del1 del2;'; 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 '/* in DC, format catalogs maybe specified in the libds with a -FC extension */'; put '%let libcat=%scan(&libcat,1,-);'; put '/* perform input validations */'; put '%mp_abort('; put 'iftrue=(%mf_existds(&libds)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(&libds could not be found)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_existvar(&libds,FMTROW)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(FMTROW not found in &libds)'; put ')'; 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=:''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 'data _null_;'; put 'set &libds;'; put 'if missing(fmtrow) then do;'; put 'call symputx(''msg'',"missing fmtrow in format: "!!FMTNAME);'; 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 '%local cnt;'; put 'proc sql noprint;'; put 'select count(distinct catx(''|'',type,fmtname,fmtrow)) into: cnt from &libds;'; put '%mp_abort('; put 'iftrue=(&cnt ne %mf_nobs(&libds))'; put ',mac=&sysmacroname'; put ',msg=%str(Non-unique primary key on &libds)'; put ')'; put '/**'; put '* First, extract only relevant formats from the catalog'; put '*/'; put 'proc sql noprint;'; put 'select distinct'; put 'case'; put 'when type=''N'' then upcase(fmtname)'; put 'when type=''C'' then cats(''$'',upcase(fmtname))'; put 'when type=''I'' then cats(''@'',upcase(fmtname))'; put 'when type=''J'' then cats(''@$'',upcase(fmtname))'; put 'else "&sysmacroname:UNHANDLED"'; put 'end'; put 'into: fmtlist separated by '' '''; put 'from &libds;'; put '%mp_cntlout(libcat=&libcat,fmtlist=&fmtlist,cntlout=&base_fmts)'; put '/* get a hash of the row */'; put '%local cvars nvars;'; put '%let cvars=TYPE FMTNAME START END LABEL PREFIX FILL SEXCL EEXCL HLO DECSEP'; put 'DIG3SEP DATATYPE LANGUAGE;'; put '%let nvars=FMTROW MIN MAX DEFAULT LENGTH FUZZ MULT NOEDIT;'; put 'data &base_fmts/note2err;'; put 'set &base_fmts;'; put 'length fmthash $32;'; put '%mp_rowhash('; put 'md5_col=fmthash'; put ',cvars=&cvars'; put ',nvars=&nvars'; put ')'; put 'run;'; put '/**'; put '* Ensure input table and base_formats have consistent lengths and types'; put '*/'; put 'data &inlibds/nonote2err;'; put 'length &delete_col $3 FMTROW 8 start end label $32767 fmthash $32;'; put 'if 0 then set &base_fmts;'; put 'set &libds;'; put 'by type fmtname notsorted;'; put 'if &delete_col='''' then &delete_col=''No'';'; put 'fmtname=upcase(fmtname);'; put 'type=upcase(type);'; put 'if missing(type) then do;'; put 'if substr(fmtname,1,1)=''@'' then do;'; put 'if substr(fmtname,2,1)=''$'' then type=''J'';'; put 'else type=''I'';'; put 'end;'; put 'else do;'; put 'if substr(fmtname,1,1)=''$'' then type=''C'';'; put 'else type=''N'';'; put 'end;'; put 'end;'; put 'if type in (''N'',''I'') then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '%mp_rowhash('; put 'md5_col=fmthash'; put ',cvars=&cvars'; put ',nvars=&nvars'; put ')'; 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.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where b.fmtname is null'; put 'and upcase(a.&delete_col) ne "YES"'; put 'order by type, fmtname, fmtrow;'; 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.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where upcase(a.&delete_col) ne "YES"'; put 'and a.fmthash ne b.fmthash'; put 'order by type, fmtname, fmtrow;'; 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.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where upcase(a.&delete_col)="YES"'; put 'order by type, fmtname, fmtrow;'; put '/**'; put '* Identify fully deleted formats (where every record is removed)'; put '* These require to be explicitly deleted in proc format'; put '* del1 - identify _partial_ deletes'; put '* del2 - exclude these, and also formats that come with _additions_'; put '*/'; put 'create table &del1 as'; put 'select a.*'; put 'from &base_fmts a'; put 'left join &outds_del b'; put 'on a.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where b.fmtrow is null;'; put 'create table &del2 as'; put 'select * from &outds_del'; put 'where cats(type,fmtname) not in (select cats(type,fmtname) from &outds_add)'; put 'and cats(type,fmtname) not in (select cats(type,fmtname) from &del1);'; 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 '/* new records plus base records that are not deleted or modified */'; 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 type fmtname fmtrow;'; put 'run;'; put '/* add back the modified records */'; put 'data &stagedata;'; put 'set &ds1 &outds_mod;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; 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 and %mf_nobs(&del2)=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 '/* apply any full deletes */'; put '%if %mf_nobs(&del2)>0 %then %do;'; put '%local delfmtlist;'; put 'proc sql noprint;'; put 'select distinct case when type=''N'' then cats(fmtname,''.FORMAT'')'; put 'when type=''C'' then cats(fmtname,''.FORMATC'')'; put 'when type=''J'' then cats(fmtname,''.INFMTC'')'; put 'when type=''I'' then cats(fmtname,''.INFMT'')'; put 'else cats(fmtname,''.BADENTRY!!!'') end'; put 'into: delfmtlist'; put 'separated by '' '''; put 'from &del2;'; put 'proc catalog catalog=&libcat;'; put 'delete &delfmtlist;'; put 'quit;'; put '%end;'; 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 ',TYPE FMTNAME FMTROW'; 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=%sysfunc(datetime())'; 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 '%local engine_type;'; put '%let engine_type=%mf_getengine(&lib);'; put '%if &engine_type=CAS %then %do;'; put '/* Fixed char variables cannot be appended to CAS varchar columns, so'; put 'cast them (per the target table structure) in a CASUSER copy of the'; put 'staging table, then append via data step. Approach mirrors the CAS'; put 'append in bitemporal_dataloader.sas */'; put 'proc contents noprint data=&libds'; put 'out=work.rpl_base_cols(keep=name type);'; put 'run;'; put 'proc contents noprint data=WORK.&STAGING_DS'; put 'out=work.rpl_stag_cols(keep=name type);'; put 'run;'; put 'proc sql noprint;'; put 'create table work.rpl_vchars as'; put 'select a.name'; put 'from work.rpl_base_cols a'; put 'inner join work.rpl_stag_cols b'; put 'on upcase(a.name)=upcase(b.name)'; put 'where a.type=6; /* varchar in target */'; put 'quit;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop tmpds;'; put '%let vcfmt=;'; put '%let vcrename=;'; put '%let vcassign=;'; put '%let vcdrop=;'; put 'data _null_;'; put 'set work.rpl_vchars 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 tmpds=%mf_getuniquename();'; put 'data casuser.&tmpds;'; put '&vcfmt'; put 'set WORK.&STAGING_DS &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* exit on err condition before the destructive truncate below */'; put '%if &syscc>0 %then %do;'; put '%mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ref=&ETLSOURCE (aborted),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* ensure cleanup */'; put 'proc sql;drop table CASUSER.&tmpds;quit;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - aborting before REPLACE truncate of &libds.)'; put ')'; put '/* CAS tables do not support SQL deletes, so truncate with deleteRows.'; put 'This is deliberately the last step before the append, to minimise'; put 'the time in which the target table is empty. */'; put 'proc cas;'; put 'table.deleteRows / table={caslib="&lib",name="&ds",where="1=1"};'; put 'quit;'; put '/* load the target with varchars applied */'; put 'data &libds (append=yes) / sessref=dcsession;'; put 'set casuser.&tmpds;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmpds;'; put 'quit;'; put '%end;'; put '%else %do;'; put '/* exit on err condition before the destructive delete below */'; put '%if &syscc>0 %then %do;'; put '%mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ref=&ETLSOURCE (aborted),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - aborting before REPLACE delete of &libds.)'; put ')'; put 'proc sql;'; put 'delete * from &libds;'; put 'quit;'; put 'proc append base=&libds data=WORK.&STAGING_DS force nowarn;run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ctl_ds=&dclib..mpe_lockanytable)'; put '%end;'; put '%else %do;'; put '/* is full replace so treat all staged records as new in diff screen */'; put 'data work.outds_mod work.outds_add ;'; put 'set work.&staging_ds;'; put 'output work.outds_add;'; put 'run;'; put '/* previous table will be considered fully deleted */'; put 'data work.outds_del;'; put 'set &lib..&ds;'; put 'run;'; 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 %str(WARN)ING: 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 mfv_getcaslib(lib);'; put '%local dsid rc result;'; put '%let dsid=%sysfunc(open(sashelp.vlibnam('; put 'where=(libname="%upcase(&lib)" and sysname="Caslib")'; put ')));'; put '%if &dsid %then %do;'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%if &rc=0 %then'; put '%let result=%sysfunc('; put 'getvarc(&dsid,%sysfunc(varnum(&dsid,SYSVALUE)))'; put ');'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&result'; put '%mend mfv_getcaslib;'; put '%macro dc_cassave(libds, mdebug=0);'; put '%local lib eng caslib ds;'; put '%let lib=%scan(&libds,1,.);'; put '%let eng=%mf_getengine(&lib);'; put '%if &eng ne CAS %then %return;'; put '%let caslib=%mfv_getcaslib(lib=&lib);'; put '%let ds=%scan(&libds,2,.);'; put '%if &mdebug=1 %then %put _local_;'; put '/* ---- save to disk -------------------------------------------------- */'; put 'proc casutil;'; put 'save casdata="&ds"'; put 'incaslib="&caslib"'; put 'casout="&ds"'; put 'outcaslib="&caslib"'; put 'replace;'; put 'quit;'; put '%put NOTE: Table &caslib..&ds saved;'; put '%mend dc_cassave;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 dc_cassave.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'; 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(''LOAD_REF'',TABLE);'; put '/* DIFFTIME is when the DIFF was generated on the frontend */'; put 'call symputx(''DIFFTIME'',DIFFTIME);'; put 'putlog (_all_)(=);'; put 'run;'; put '%global action is_err err_msg 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="&LOAD_REF";'; 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 load_ref)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: difftime orig_libds libds load_ref)'; 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="&LOAD_REF" 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 %str(WARN)ING: &=authcheck &=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/&LOAD_REF/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/&LOAD_REF/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 (has same name as load_ref) */'; put '%let tmplib=%mf_getuniquelibref();'; put 'libname &tmplib "&mpelocapprovals/&LOAD_REF";'; put 'data STAGING_DS;'; put 'set &tmplib..&LOAD_REF;'; 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 - occurs both BEFORE _and_ AFTER the diff */'; 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="&LOAD_REF";'; 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(&LOAD_REF 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(&LOAD_REF 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="&LOAD_REF";'; 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=&LOAD_REF'; 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="&LOAD_REF";'; 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/&LOAD_REF/&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 "&LOAD_REF"'; 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 'data work.outds_del; run;'; put '%end;'; put 'libname approve "&mpelocapprovals/&LOAD_REF";'; 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/&LOAD_REF/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="&LOAD_REF";'; 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(&LOAD_REF 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(&LOAD_REF 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="&LOAD_REF";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* save table to disk (if viya + cas) */'; put '%dc_cassave(&libds)'; 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=&LOAD_REF'; 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 cannot exit cleanly from inside a %include, so an abort there'; put '(eg in a hook script run via mp_include) only records the error in'; put 'work.mp_abort_errds. mode=INCLUDE picks that up and aborts properly here. */'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 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 mpe_dsmeta(libds, outds=dsmeta);'; put '%local ddsd ddld notes lenstmt memname;'; put '%let lenstmt=length ods_table $18 name $100 value $1000;'; put '%let libds=%upcase(&libds);'; put '%if "%scan(&libds,2,-)" ne "FC" %then %do;'; put '%let memname=%scan(&libds,2,.);'; put '%mp_dsmeta(&libds, outds=&outds)'; put '%end;'; put '%else %do;'; put '%let memname=%scan(&libds,2,.-);'; put 'data &outds;'; put '&lenstmt;'; put 'set sashelp.vcatalg;'; put 'ods_table=cats(objtype);'; put 'name=cats(objname);'; put 'value=catx('' '',objdesc,''(modified:'',put(modified,datetime19.),'')'');'; put 'where libname="%scan(&libds,1,.)" and memname="&memname";'; put 'keep ods_table name value;'; put 'run;'; put 'proc sort; by ods_table name;run;'; put '%end;'; put 'data _null_;'; put 'set &mpelib..mpe_datadictionary;'; put 'where &dc_dttmtfmt < tx_to & dd_source="&memname" & dd_type=''TABLE'';'; put 'call symputx(''ddsd'',dd_shortdesc,''l'');'; put 'call symputx(''ddld'',dd_longdesc,''l'');'; put 'run;'; put 'data &outds;'; put '&lenstmt;'; put 'if last then do;'; put 'ODS_TABLE=''MPE_DATADICTIONARY'';'; put 'NAME=''DD_SHORTDESC'';'; put 'VALUE="&ddsd";'; put 'output;'; put 'NAME=''DD_LONGDESC'';'; put 'VALUE="&ddld";'; put 'output;'; put 'end;'; put 'set &outds end=last;'; put 'output;'; put 'run;'; put 'data _data_;'; put 'set &mpelib..mpe_tables;'; put 'where libref="%scan(&libds,1,.)"'; put '& dsn="%scan(&libds,2,.)"'; put '& &dc_dttmtfmt 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 mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mv_getfoldermembers(root=/'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=mv_getfolders'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_isblank(&root)=1 %then %let root=/;'; put 'options noquotelenmax;'; put '/* request the client details */'; put '%local fname1 libref1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if "&root"="/" %then %do;'; put '/* if root just list root folders */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/rootFolders?limit=1000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* first get parent folder id */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&root";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put 'libname &libref1 JSON fileref=&fname1;'; put '/* now get the followon link to list members */'; put '%local href cnt;'; put '%let cnt=0;'; put 'data _null_;'; put 'length rel href $512;'; put 'call missing(rel,href);'; put 'set &libref1..links;'; put 'if rel=''members'' then do;'; put 'url=cats("''","&base_uri",href,"?limit=10000''");'; put 'call symputx(''href'',url,''l'');'; put 'call symputx(''cnt'',1,''l'');'; put 'end;'; put 'run;'; put '%if &cnt=0 %then %do;'; put '%put NOTE:;%put NOTE- No members found in &root!!;%put NOTE-;'; put '%return;'; put '%end;'; put '%local fname2 libref2;'; put '%let fname2=%mf_getuniquefileref();'; put '%let libref2=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname2 &oauth_bearer'; put 'url=%unquote(%superq(href));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref2 JSON fileref=&fname2;'; put 'data &outds;'; put 'length id $36 name $128 uri $64 type $32 description $256;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &libref2..items;'; put 'run;'; put 'filename &fname2 clear;'; put 'libname &libref2 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getfoldermembers;'; put '%macro mv_getjobcode(outref=0,outfile=0'; put ',name=0,path=0'; put ',contextName=SAS Job Execution compute context'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ');'; put '%local dbg bufsize varcnt fname1 fname2 errmsg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname local entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=("&path"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Path not provided)'; put ')'; put '%mp_abort(iftrue=("&name"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Name not provided)'; put ')'; put '%mp_abort(iftrue=("&outfile"="0" and "&outref"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Output destination (file or fileref) must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put 'data;run;'; put '%local foldermembers;'; put '%let foldermembers=&syslast;'; put '%mv_getfoldermembers(root=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',outds=&foldermembers'; put ')'; put '%local joburi;'; put '%let joburi=0;'; put 'data _null_;'; put 'length name uri $512;'; put 'call missing(name,uri);'; put 'set &foldermembers;'; put 'if name="&name" and uri=:''/jobDefinitions/definitions'''; put 'then call symputx(''joburi'',uri);'; put 'run;'; put '%mp_abort(iftrue=("&joburi"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job &path/&name not found)'; put ')'; put '/* prepare request*/'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri&joburi";'; put 'headers "Accept"="application/vnd.sas.job.definition+json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let fname2=%mf_getuniquefileref();'; put 'filename &fname2 temp ;'; put '/* cannot use lua IO package as not available in Viya 4 */'; put '/* so use data step to read the JSON until the string `"code":"` is found */'; put 'data _null_;'; put 'file &fname2 recfm=n;'; put 'infile &fname1 lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'retain startwrite 0;'; put 'if startwrite=0 and sourcechar=''"'' then do;'; put 'reentry:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''c'' then do;'; put 'reentry2:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''o'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''d'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''e'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar='':'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'putlog ''code found'';'; put 'startwrite=1;'; put 'input sourcechar $ 1. @@;'; put 'end;'; put 'end;'; put 'else if sourcechar=''c'' then goto reentry2;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put '/* once the `"code":"` string is found, write until unescaped `"` is found */'; put 'if startwrite=1 then do;'; put 'if sourcechar=''\'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar in (''"'',''\'') then put sourcechar char1.;'; put 'else if sourcechar=''n'' then put ''0A''x;'; put 'else if sourcechar=''r'' then put ''0D''x;'; put 'else if sourcechar=''t'' then put ''09''x;'; put 'else if sourcechar=''u'' then do;'; put 'length uni $4;'; put 'input uni $ 4. @@;'; put 'sourcechar=unicode(''\u''!!uni);'; put 'put sourcechar char1.;'; put 'end;'; put 'else do;'; put 'call symputx(''errmsg'',"Uncaught escape char: "!!sourcechar,''l'');'; put 'call symputx(''syscc'',99);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then stop;'; put 'else put sourcechar char1.;'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=("&syscc"="99")'; put ',mac=mv_getjobcode'; put ',msg=%str(&errmsg)'; put ')'; put '/* export to desired destination */'; put '%if "&outref"="0" %then %do;'; put 'data _null_;'; put 'file "&outfile" lrecl=32767;'; put '%end;'; put '%else %do;'; put 'filename &outref temp;'; put 'data _null_;'; put 'file &outref;'; put '%end;'; put 'infile &fname2;'; put 'input;'; put 'put _infile_;'; put '&dbg. putlog _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put '%end;'; put '%mend mv_getjobcode;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%local name;'; put '%let name=%scan(&loc,-1,/);'; put '%mv_getjobcode(path=%substr(&loc,1,%length(&loc)-%length(&name)-1)'; put ',name=&name'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_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 mfv_getcaslib(lib);'; put '%local dsid rc result;'; put '%let dsid=%sysfunc(open(sashelp.vlibnam('; put 'where=(libname="%upcase(&lib)" and sysname="Caslib")'; put ')));'; put '%if &dsid %then %do;'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%if &rc=0 %then'; put '%let result=%sysfunc('; put 'getvarc(&dsid,%sysfunc(varnum(&dsid,SYSVALUE)))'; put ');'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&result'; put '%mend mfv_getcaslib;'; put '%macro dc_casload(libds, mdebug=0);'; put '%local lib eng caslib ds _exists;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=%str(syscc=&syscc on macro entry)'; put ')'; put '%let lib=%scan(&libds,1,.);'; put '%let eng=%mf_getengine(&lib);'; put '%mp_abort(iftrue= (X&eng.X=XX)'; put ',mac=&_program'; put ',msg=%str(Library &lib is not assigned)'; put ')'; put '%if &eng ne CAS %then %return;'; put '%let caslib=%mfv_getcaslib(lib=&lib);'; put '%let ds=%scan(&libds,2,.);'; put '%if &mdebug=1 %then %put _local_;'; put '/* ---- existence check ------------------------------------------------- */'; put 'proc cas;'; put 'table.tableExists result=r /'; put 'caslib="&caslib"'; put 'name="&ds";'; put '%if &mdebug=1 %then %do;'; put 'print r;'; put '%end;'; put 'if r.exists > 0 then call symputx(''_exists'', ''1'', ''L'');'; put 'else call symputx(''_exists'', ''0'', ''L'');'; put 'quit;'; put '/* ---- already loaded: skip -------------------------------------------- */'; put '%if &_exists=1 %then %do;'; put '%put NOTE: Table &caslib..&ds already loaded - skipping;'; put '%return;'; put '%end;'; put 'proc casutil;'; put 'load casdata="&ds..sashdat"'; put 'incaslib="&caslib"'; put 'casout="&ds"'; put 'outcaslib="&caslib"'; put 'promote;'; put 'quit;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=%str(Load failed for &caslib..&ds)'; put ')'; put '%put NOTE: Table &caslib..&ds loaded and promoted;'; put '%mend dc_casload;'; put '%macro mv_getgroupmembers(group'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=work.viyagroupmembers'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/groups/&group/members?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: Group &group not found!!;'; put 'data &outds;'; put 'length id name $43;'; put 'call missing(of _all_);'; put 'run;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'length id name $43;'; put 'set &libref1..items;'; put 'run;'; put 'libname &libref1 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put '%mend mv_getgroupmembers;'; put '%macro dc_getgroupmembers(group,outds=dc_getgroupmembers);'; put '%mv_getgroupmembers(%str(&group),outds=&outds)'; put 'data &outds ;'; put 'length membername $64;'; put 'set &outds(rename=(name=MemberName));'; put 'run;'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; put '%mend mf_wordsinstr1butnotstr2;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; 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'' or format=:''NLDATM'''; put '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'' or format=:''NLDATE'''; 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=YES'; 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()'; 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 '* 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 '@li CLS_FLG - set to 0 if there are no CLS rules (everything editable)'; put 'else set to 1 (CLS rules exist)'; put '@li ISMAP - set to 1 if the target DS is an excel map target, else 0'; put '
approvers
'; put '
dqrules
'; put '
dqdata
'; put '
cols
'; put 'Contains column level attributes.'; put '@li NAME - column name'; put '@li LABEL - var label. https://core.sasjs.io/mp__getcols_8sas.html'; put '@li FMTNAME - derived format. https://core.sasjs.io/mp__getcols_8sas.html'; put '@li DDTYPE - derived dropdown. C=CHARACTER, N=NUMERIC, else DATE / TIME /'; put 'DATETIME. 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 '@li coltype - front-end column formatting spec'; put '
maxvarlengths
'; put '
xl_rules
'; put '
query
'; put '
versions
'; put 'history of DC versions for this particular table'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_casload.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_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_dsmeta.sas'; put '@li mpe_getlabels.sas'; put '@li mpe_getversions.sas'; put '@li mpe_filtermaster.sas'; put '@li mpe_runhook.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '%dc_casload(&libds)'; 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 vars4;'; put 'set vars3;'; put 'length coltype $500.;'; put 'format=upcase(format);'; put 'coltype=cats(''{"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'' or format=:''NLDATM'''; put 'then do;'; put 'colType=cats(coltype,'',"type":"datetime"}'');'; 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'' or format=:''NLDATE'''; 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"}'');'; 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"}'');'; 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 'output;'; 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 cannot exit cleanly from inside a %include, so an abort there'; put '(eg in a hook script run via mp_include) only records the error in'; put 'work.mp_abort_errds. mode=INCLUDE picks that up and aborts properly here. */'; 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 - pull column names from the CLS-filtered WORK dataset but'; put 'join to mpe_datadictionary using the underlying LIB.DSN reference */'; put '%mpe_getlabels(COLUMNS,sasdata1,tgt_ds=&libds,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. Trim COLS payload in the SQL below - DDTYPE'; put 'C=CHARACTER N=NUMERIC (dates kept in full), VARNUM dropped (client'; put 'relies on column order, not position) */'; put 'proc sql;'; put 'create table work.cols as'; put 'select a.NAME'; put ',coalesce(c.desc,a.NAME) as LABEL'; put ',a.FMTNAME'; put ',case a.DDTYPE'; put 'when ''CHARACTER'' then ''C'''; put 'when ''NUMERIC'' then ''N'''; put 'else a.DDTYPE end as 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.longdesc'; put ',d.colType'; put 'from work.cols1(drop=varnum) 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 'left join work.vars4 d'; put 'on a.NAME=d.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 '%let ismap=0;'; put 'proc sql noprint;'; put 'select count(*) into: ismap from &mpelib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&orig_libds" and &dc_dttmtfmt. le TX_TO;'; 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 '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 'if "&orig_libds"="&mpelib..MPE_XLMAP_DATA" or &ismap ne 0 then ismap=1;'; put 'else ismap=0;'; 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 '%dc_casload(&lib..&ds)'; 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 ',&col as tmp_order'; put 'from &lib..&ds'; put 'order by tmp_order;'; put '/* ensure both numerics and char vals are ordered correctly */'; put 'data work.dqdata&x (drop=tmp_order);'; put 'set work.dqdata&x;'; put 'selectbox_order=_n_;'; put 'run;'; 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 '/* order by selectbox_order then the value */'; put 'by base_col selectbox_order rule_data;'; 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 '%mpe_dsmeta(&orig_libds, outds=dsmeta)'; put '%mpe_getversions(&mpelib,'; put '%scan(&orig_libds,1,.),'; put '%scan(&orig_libds,2,.),'; put 'outds=versions'; put ')'; put '/* send to the client */'; put '%webout(OPEN)'; put '%webout(OBJ,approvers)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,dqdata,missing=STRING)'; 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,versions)'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mv_getfoldermembers(root=/'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=mv_getfolders'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_isblank(&root)=1 %then %let root=/;'; put 'options noquotelenmax;'; put '/* request the client details */'; put '%local fname1 libref1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if "&root"="/" %then %do;'; put '/* if root just list root folders */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/rootFolders?limit=1000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* first get parent folder id */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&root";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put 'libname &libref1 JSON fileref=&fname1;'; put '/* now get the followon link to list members */'; put '%local href cnt;'; put '%let cnt=0;'; put 'data _null_;'; put 'length rel href $512;'; put 'call missing(rel,href);'; put 'set &libref1..links;'; put 'if rel=''members'' then do;'; put 'url=cats("''","&base_uri",href,"?limit=10000''");'; put 'call symputx(''href'',url,''l'');'; put 'call symputx(''cnt'',1,''l'');'; put 'end;'; put 'run;'; put '%if &cnt=0 %then %do;'; put '%put NOTE:;%put NOTE- No members found in &root!!;%put NOTE-;'; put '%return;'; put '%end;'; put '%local fname2 libref2;'; put '%let fname2=%mf_getuniquefileref();'; put '%let libref2=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname2 &oauth_bearer'; put 'url=%unquote(%superq(href));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref2 JSON fileref=&fname2;'; put 'data &outds;'; put 'length id $36 name $128 uri $64 type $32 description $256;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &libref2..items;'; put 'run;'; put 'filename &fname2 clear;'; put 'libname &libref2 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getfoldermembers;'; put '%macro mv_getjobcode(outref=0,outfile=0'; put ',name=0,path=0'; put ',contextName=SAS Job Execution compute context'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ');'; put '%local dbg bufsize varcnt fname1 fname2 errmsg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname local entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=("&path"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Path not provided)'; put ')'; put '%mp_abort(iftrue=("&name"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Name not provided)'; put ')'; put '%mp_abort(iftrue=("&outfile"="0" and "&outref"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Output destination (file or fileref) must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put 'data;run;'; put '%local foldermembers;'; put '%let foldermembers=&syslast;'; put '%mv_getfoldermembers(root=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',outds=&foldermembers'; put ')'; put '%local joburi;'; put '%let joburi=0;'; put 'data _null_;'; put 'length name uri $512;'; put 'call missing(name,uri);'; put 'set &foldermembers;'; put 'if name="&name" and uri=:''/jobDefinitions/definitions'''; put 'then call symputx(''joburi'',uri);'; put 'run;'; put '%mp_abort(iftrue=("&joburi"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job &path/&name not found)'; put ')'; put '/* prepare request*/'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri&joburi";'; put 'headers "Accept"="application/vnd.sas.job.definition+json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let fname2=%mf_getuniquefileref();'; put 'filename &fname2 temp ;'; put '/* cannot use lua IO package as not available in Viya 4 */'; put '/* so use data step to read the JSON until the string `"code":"` is found */'; put 'data _null_;'; put 'file &fname2 recfm=n;'; put 'infile &fname1 lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'retain startwrite 0;'; put 'if startwrite=0 and sourcechar=''"'' then do;'; put 'reentry:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''c'' then do;'; put 'reentry2:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''o'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''d'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''e'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar='':'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'putlog ''code found'';'; put 'startwrite=1;'; put 'input sourcechar $ 1. @@;'; put 'end;'; put 'end;'; put 'else if sourcechar=''c'' then goto reentry2;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put '/* once the `"code":"` string is found, write until unescaped `"` is found */'; put 'if startwrite=1 then do;'; put 'if sourcechar=''\'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar in (''"'',''\'') then put sourcechar char1.;'; put 'else if sourcechar=''n'' then put ''0A''x;'; put 'else if sourcechar=''r'' then put ''0D''x;'; put 'else if sourcechar=''t'' then put ''09''x;'; put 'else if sourcechar=''u'' then do;'; put 'length uni $4;'; put 'input uni $ 4. @@;'; put 'sourcechar=unicode(''\u''!!uni);'; put 'put sourcechar char1.;'; put 'end;'; put 'else do;'; put 'call symputx(''errmsg'',"Uncaught escape char: "!!sourcechar,''l'');'; put 'call symputx(''syscc'',99);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then stop;'; put 'else put sourcechar char1.;'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=("&syscc"="99")'; put ',mac=mv_getjobcode'; put ',msg=%str(&errmsg)'; put ')'; put '/* export to desired destination */'; put '%if "&outref"="0" %then %do;'; put 'data _null_;'; put 'file "&outfile" lrecl=32767;'; put '%end;'; put '%else %do;'; put 'filename &outref temp;'; put 'data _null_;'; put 'file &outref;'; put '%end;'; put 'infile &fname2;'; put 'input;'; put 'put _infile_;'; put '&dbg. putlog _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put '%end;'; put '%mend mv_getjobcode;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%local name;'; put '%let name=%scan(&loc,-1,/);'; put '%mv_getjobcode(path=%substr(&loc,1,%length(&loc)-%length(&name)-1)'; put ',name=&name'; 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|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'; 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 cannot exit cleanly from inside a %include, so an abort there'; put '(eg in a hook script run via mp_include) only records the error in'; put 'work.mp_abort_errds. mode=INCLUDE picks that up and aborts properly here. */'; put '%mp_abort(mode=INCLUDE)'; put '/* ensure that the DISPLAY_INDEX variable exists. */'; put 'data work.dynamic_values;'; put 'length DISPLAY_INDEX 8;'; 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 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_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(OBJ,dynamic_values,fmt=N)'; put '%webout(OBJ,dynamic_extended_values,fmt=N)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 (_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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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,missing=STRING)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=getxlmaps; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getxlmaps.sas'; put '@brief Returns a list of rules and other info for a specific xlmap_id'; put '

Service Inputs

'; put '
getxlmaps_in
'; put '|XLMAP_ID|'; put '|---|'; put '|Sample|'; put '

Service Outputs

'; put '
xlmaprules
'; put 'Filtered output of the dc.MPE_XLMAP_RULES table'; put '|XLMAP_ID|XLMAP_RANGE_ID|XLMAP_SHEET|XLMAP_START|XLMAP_FINISH|'; put '|---|---|---|---|---|'; put '|Sample|Range1|Sheet1|ABSOLUTE A1| |'; put '|Sample|Range2|Sheet1|RELATIVE R[2]C[2]|ABSOLUTE H11|'; put '
xlmapinfo
'; put 'Extra info for a map id'; put '|TARGET_DS|'; put '|---|'; put '|DCXXX.MPE_XLMAP_DATA|'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; 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 _null_;'; put 'set work.getxlmaps_in;'; put 'putlog (_all_)(=);'; put 'call symputx(''xlmap_id'',xlmap_id);'; put 'run;'; put 'proc sql noprint;'; put 'create table work.xlmaprules as'; put 'select xlmap_id'; put ',XLMAP_RANGE_ID'; put ',XLMAP_SHEET'; put ',XLMAP_START'; put ',XLMAP_FINISH'; put 'from &mpelib..MPE_XLMAP_RULES'; put 'where &dc_dttmtfmt. lt tx_to and xlmap_id="&xlmap_id"'; put 'order by xlmap_sheet, xlmap_range_id;'; put '%global target_ds;'; put 'select XLMAP_TARGETLIBDS into: target_ds'; put 'from &mpelib..MPE_XLMAP_INFO'; put 'where &dc_dttmtfmt. lt tx_to and xlmap_id="&xlmap_id";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'data work.xlmapinfo;'; put 'target_ds=coalescec("&target_ds","&mpelib..MPE_XLMAP_DATA");'; put 'output;'; put 'stop;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,xlmaprules)'; put '%webout(OBJ,xlmapinfo)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; put '%macro mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 'end;'; put 'else do;'; 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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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 'data work.alertmessage;'; put 'set &mpelib..mpe_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also var_scope=''DC_EMAIL'' and var_name="&alert_event._TEMPLATE";'; put 'run;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_xlmapvalidate(mperef,inds,dclib,tgtds);'; put '%local ismap;'; put 'proc sql noprint;'; put 'select count(*) into: ismap'; put 'from &dclib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&tgtds" and &dc_dttmtfmt. le TX_TO ;'; put '%if "&tgtds"="&dclib..MPE_XLMAP_DATA" or &ismap>0 %then %do;'; put 'data &inds;'; put 'set &inds;'; put 'LOAD_REF="&mperef";'; put 'run;'; put '%end;'; put '%mend mpe_xlmapvalidate;'; 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 mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mv_getfoldermembers(root=/'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=mv_getfolders'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_isblank(&root)=1 %then %let root=/;'; put 'options noquotelenmax;'; put '/* request the client details */'; put '%local fname1 libref1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if "&root"="/" %then %do;'; put '/* if root just list root folders */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/rootFolders?limit=1000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* first get parent folder id */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&root";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put 'libname &libref1 JSON fileref=&fname1;'; put '/* now get the followon link to list members */'; put '%local href cnt;'; put '%let cnt=0;'; put 'data _null_;'; put 'length rel href $512;'; put 'call missing(rel,href);'; put 'set &libref1..links;'; put 'if rel=''members'' then do;'; put 'url=cats("''","&base_uri",href,"?limit=10000''");'; put 'call symputx(''href'',url,''l'');'; put 'call symputx(''cnt'',1,''l'');'; put 'end;'; put 'run;'; put '%if &cnt=0 %then %do;'; put '%put NOTE:;%put NOTE- No members found in &root!!;%put NOTE-;'; put '%return;'; put '%end;'; put '%local fname2 libref2;'; put '%let fname2=%mf_getuniquefileref();'; put '%let libref2=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname2 &oauth_bearer'; put 'url=%unquote(%superq(href));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref2 JSON fileref=&fname2;'; put 'data &outds;'; put 'length id $36 name $128 uri $64 type $32 description $256;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &libref2..items;'; put 'run;'; put 'filename &fname2 clear;'; put 'libname &libref2 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getfoldermembers;'; put '%macro mv_getjobcode(outref=0,outfile=0'; put ',name=0,path=0'; put ',contextName=SAS Job Execution compute context'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ');'; put '%local dbg bufsize varcnt fname1 fname2 errmsg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname local entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=("&path"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Path not provided)'; put ')'; put '%mp_abort(iftrue=("&name"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Name not provided)'; put ')'; put '%mp_abort(iftrue=("&outfile"="0" and "&outref"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Output destination (file or fileref) must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put 'data;run;'; put '%local foldermembers;'; put '%let foldermembers=&syslast;'; put '%mv_getfoldermembers(root=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',outds=&foldermembers'; put ')'; put '%local joburi;'; put '%let joburi=0;'; put 'data _null_;'; put 'length name uri $512;'; put 'call missing(name,uri);'; put 'set &foldermembers;'; put 'if name="&name" and uri=:''/jobDefinitions/definitions'''; put 'then call symputx(''joburi'',uri);'; put 'run;'; put '%mp_abort(iftrue=("&joburi"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job &path/&name not found)'; put ')'; put '/* prepare request*/'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri&joburi";'; put 'headers "Accept"="application/vnd.sas.job.definition+json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let fname2=%mf_getuniquefileref();'; put 'filename &fname2 temp ;'; put '/* cannot use lua IO package as not available in Viya 4 */'; put '/* so use data step to read the JSON until the string `"code":"` is found */'; put 'data _null_;'; put 'file &fname2 recfm=n;'; put 'infile &fname1 lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'retain startwrite 0;'; put 'if startwrite=0 and sourcechar=''"'' then do;'; put 'reentry:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''c'' then do;'; put 'reentry2:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''o'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''d'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''e'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar='':'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'putlog ''code found'';'; put 'startwrite=1;'; put 'input sourcechar $ 1. @@;'; put 'end;'; put 'end;'; put 'else if sourcechar=''c'' then goto reentry2;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put '/* once the `"code":"` string is found, write until unescaped `"` is found */'; put 'if startwrite=1 then do;'; put 'if sourcechar=''\'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar in (''"'',''\'') then put sourcechar char1.;'; put 'else if sourcechar=''n'' then put ''0A''x;'; put 'else if sourcechar=''r'' then put ''0D''x;'; put 'else if sourcechar=''t'' then put ''09''x;'; put 'else if sourcechar=''u'' then do;'; put 'length uni $4;'; put 'input uni $ 4. @@;'; put 'sourcechar=unicode(''\u''!!uni);'; put 'put sourcechar char1.;'; put 'end;'; put 'else do;'; put 'call symputx(''errmsg'',"Uncaught escape char: "!!sourcechar,''l'');'; put 'call symputx(''syscc'',99);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then stop;'; put 'else put sourcechar char1.;'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=("&syscc"="99")'; put ',mac=mv_getjobcode'; put ',msg=%str(&errmsg)'; put ')'; put '/* export to desired destination */'; put '%if "&outref"="0" %then %do;'; put 'data _null_;'; put 'file "&outfile" lrecl=32767;'; put '%end;'; put '%else %do;'; put 'filename &outref temp;'; put 'data _null_;'; put 'file &outref;'; put '%end;'; put 'infile &fname2;'; put 'input;'; put 'put _infile_;'; put '&dbg. putlog _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put '%end;'; put '%mend mv_getjobcode;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%local name;'; put '%let name=%scan(&loc,-1,/);'; put '%mv_getjobcode(path=%substr(&loc,1,%length(&loc)-%length(&name)-1)'; put ',name=&name'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; 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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; put '%mend mf_wordsinstr1butnotstr2;'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 (_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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',reason_txt = symget(''submitted_reason_txt'');'; 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'' or format2=:''E8601DT'' or format2=:''NLDATM'''; put '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 'or format2=:''NLDATE'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; 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 '/* 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 _____DELETE__THIS__RECORD_____ length=$3 &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 warnings */'; 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="!!cats(&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 '/* If a Complex Excel Upload, needs to have the load ref added to the table */'; put '%mpe_xlmapvalidate(&mperef,work.staging_ds,&mpelib,&orig_libds)'; put '/* Run the Post Edit Hook prior to creation of staging folder */'; 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 '/* The post edit hook may have re-pointed the changeset at a different table -'; put '* that is what lets an empty mirror stand in for a real one. The target must'; put '* itself be registered in MPE_TABLES: the approval screen resolves the table''s'; put '* audit settings from that row, and a changeset whose base table has no row'; put '* cannot be reviewed. Fail here, while the submitter is still watching. */'; put '%local target_chk;'; put 'proc sql noprint;'; put 'select count(*) into: target_chk'; put 'from &mpelib..mpe_tables'; put 'where tx_from le &now and &now lt tx_to'; put 'and upcase(libref)="%upcase(&libref)"'; put 'and upcase(dsn)="%upcase(&ds)";'; put '%if &target_chk=0 %then %do;'; put '%let msg=%str(ERR)OR: target table &libref..&ds is not registered in%trim('; put ') &mpelib..mpe_tables - a post edit hook may only route a changeset to a%trim('; put ') registered table;'; put '%mpe_loadfail('; put 'status=FAILED - TARGET NOT REGISTERED'; 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_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_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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mp_validatecol.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '/* validate libds to prevent code injection */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'putlog ''ERR'' ''OR: Invalid libds:'' libds;'; put 'call symputx(''bad_libds'',1);'; put 'end;'; put 'else call symputx(''bad_libds'',0);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&bad_libds=1)'; put ',mac=&_program'; put ',msg=%str(Invalid libds supplied)'; put ')'; 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 rk;'; 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 'if not missing(RK_UNDERLYING) then call symputx(''rk'',buskey);'; put 'run;'; put '%mp_lockfilecheck(libds=&orig_libds)'; put 'data compare;'; put 'set &libds(drop=&txfrom &txto &processed &rk);'; 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 cannot exit cleanly from inside a %include, so an abort there'; put '(eg in a hook script run via mp_include) only records the error in'; put 'work.mp_abort_errds. mode=INCLUDE picks that up and aborts properly here. */'; 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 'data _null_;'; put 'if "&xlsref" ne "0" then do;'; put 'rc=fcopy("&xlsref","outref");'; put 'end;'; put 'run;'; put '/**'; put '* if running 9.3 or older, delete step above and enable macro below'; put '%mp_binarycopy(iftrue=("&xlsref" ne "0"),inref=&xlsref,outref=outref)'; put '*/'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=restore; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mpe_checkrestore(load_ref,'; put 'outresult=ALLOW_RESTORE,'; put 'outreason=REASON'; put ');'; put '%global &outresult &outreason;'; put '%let &outresult=NO;'; put '%let &outreason=NOTFOUND;'; put '%local libds;'; put 'proc sql noprint;'; put 'select upcase(cats(base_lib,''.'',base_ds)) into: libds'; put 'from &dc_libref..mpe_submit'; put 'where TABLE_ID="&load_ref";'; put '%local base_lib base_ds;'; put '%let base_lib=%scan(&libds,1,.);'; put '%let base_ds=%scan(&libds,2,.);'; put '/**'; put '* check if there is actually a version to restore'; put '*/'; put '%local audtab;'; put 'proc sql noprint;'; put 'select coalescec(audit_libds,"&dc_libref..MPE_AUDIT") into: audtab trimmed'; put 'from &dc_libref..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%if "&audtab"="0" %then %do;'; put '%let &outresult=NO;'; put '%let &outreason= &libds has no audit table configured;'; put '%return;'; put '%end;'; put '%local chk;'; put '%let chk=0;'; put 'proc sql noprint;'; put 'select count(*) into: chk from &audtab'; put 'where load_ref="&load_ref";'; put '%if &chk=0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=No entry for &load_ref in &audtab;'; put '%return;'; put '%end;'; put '/* grab user groups */'; put '%local user;'; put '%let user=%mf_getuser();'; put '%mpe_getgroups(user=&user,outds=work.groups)'; put '/* check if user is admin */'; put '%local is_admin;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from work.groups'; put 'where groupname="&dc_admin_group";'; put '%if &is_admin>0 %then %do;'; put '%let &outresult=YES;'; put '%let &outreason=IS ADMIN;'; put '%return;'; put '%end;'; put '/* check if user has basic access */'; put '%mpe_accesscheck(&libds,outds=work.access_check'; put ',user=&user'; put ',access_level=EDIT'; put ')'; put '%if %mf_nobs(access_check)=0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=No access in MPE_TABLES;'; put '%return;'; put '%end;'; put '/* check if user has column level security rules */'; put 'proc sql;'; put 'create table work.cls_rules as'; put 'select *'; put 'from &mpelib..mpe_column_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("EDIT",''ALL'')'; put 'and CLS_ACTIVE=1'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from work.groups)'; put 'and CLS_LIBREF="%upcase(&base_lib)"'; put 'and CLS_TABLE="%upcase(&base_ds)";'; put '%if %mf_nobs(work.cls_rules)>0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=User has restrictions in MPE_COLUMN_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.cls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '/* check if user has row level security rules */'; put 'proc sql;'; put 'create table work.rls_rules as'; put 'select *'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("EDIT",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="&base_lib"'; put 'and rls_table="&base_ds"'; put 'and rls_active=1;'; put '%if %mf_nobs(work.rls_rules)>0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=User has restrictions in MPE_ROW_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.rls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %do;'; put '%let &outresult=YES;'; put '%let &outreason=CHECKS PASSED;'; put '%end;'; put '%mend mpe_checkrestore;'; 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 'end;'; put 'else do;'; 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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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 'data work.alertmessage;'; put 'set &mpelib..mpe_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also var_scope=''DC_EMAIL'' and var_name="&alert_event._TEMPLATE";'; put 'run;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_xlmapvalidate(mperef,inds,dclib,tgtds);'; put '%local ismap;'; put 'proc sql noprint;'; put 'select count(*) into: ismap'; put 'from &dclib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&tgtds" and &dc_dttmtfmt. le TX_TO ;'; put '%if "&tgtds"="&dclib..MPE_XLMAP_DATA" or &ismap>0 %then %do;'; put 'data &inds;'; put 'set &inds;'; put 'LOAD_REF="&mperef";'; put 'run;'; put '%end;'; put '%mend mpe_xlmapvalidate;'; 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 mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mv_getfoldermembers(root=/'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=mv_getfolders'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_isblank(&root)=1 %then %let root=/;'; put 'options noquotelenmax;'; put '/* request the client details */'; put '%local fname1 libref1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if "&root"="/" %then %do;'; put '/* if root just list root folders */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/rootFolders?limit=1000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* first get parent folder id */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&root";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put 'libname &libref1 JSON fileref=&fname1;'; put '/* now get the followon link to list members */'; put '%local href cnt;'; put '%let cnt=0;'; put 'data _null_;'; put 'length rel href $512;'; put 'call missing(rel,href);'; put 'set &libref1..links;'; put 'if rel=''members'' then do;'; put 'url=cats("''","&base_uri",href,"?limit=10000''");'; put 'call symputx(''href'',url,''l'');'; put 'call symputx(''cnt'',1,''l'');'; put 'end;'; put 'run;'; put '%if &cnt=0 %then %do;'; put '%put NOTE:;%put NOTE- No members found in &root!!;%put NOTE-;'; put '%return;'; put '%end;'; put '%local fname2 libref2;'; put '%let fname2=%mf_getuniquefileref();'; put '%let libref2=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname2 &oauth_bearer'; put 'url=%unquote(%superq(href));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref2 JSON fileref=&fname2;'; put 'data &outds;'; put 'length id $36 name $128 uri $64 type $32 description $256;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &libref2..items;'; put 'run;'; put 'filename &fname2 clear;'; put 'libname &libref2 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getfoldermembers;'; put '%macro mv_getjobcode(outref=0,outfile=0'; put ',name=0,path=0'; put ',contextName=SAS Job Execution compute context'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ');'; put '%local dbg bufsize varcnt fname1 fname2 errmsg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname local entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=("&path"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Path not provided)'; put ')'; put '%mp_abort(iftrue=("&name"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Name not provided)'; put ')'; put '%mp_abort(iftrue=("&outfile"="0" and "&outref"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Output destination (file or fileref) must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put 'data;run;'; put '%local foldermembers;'; put '%let foldermembers=&syslast;'; put '%mv_getfoldermembers(root=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',outds=&foldermembers'; put ')'; put '%local joburi;'; put '%let joburi=0;'; put 'data _null_;'; put 'length name uri $512;'; put 'call missing(name,uri);'; put 'set &foldermembers;'; put 'if name="&name" and uri=:''/jobDefinitions/definitions'''; put 'then call symputx(''joburi'',uri);'; put 'run;'; put '%mp_abort(iftrue=("&joburi"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job &path/&name not found)'; put ')'; put '/* prepare request*/'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri&joburi";'; put 'headers "Accept"="application/vnd.sas.job.definition+json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let fname2=%mf_getuniquefileref();'; put 'filename &fname2 temp ;'; put '/* cannot use lua IO package as not available in Viya 4 */'; put '/* so use data step to read the JSON until the string `"code":"` is found */'; put 'data _null_;'; put 'file &fname2 recfm=n;'; put 'infile &fname1 lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'retain startwrite 0;'; put 'if startwrite=0 and sourcechar=''"'' then do;'; put 'reentry:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''c'' then do;'; put 'reentry2:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''o'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''d'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''e'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar='':'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'putlog ''code found'';'; put 'startwrite=1;'; put 'input sourcechar $ 1. @@;'; put 'end;'; put 'end;'; put 'else if sourcechar=''c'' then goto reentry2;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put '/* once the `"code":"` string is found, write until unescaped `"` is found */'; put 'if startwrite=1 then do;'; put 'if sourcechar=''\'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar in (''"'',''\'') then put sourcechar char1.;'; put 'else if sourcechar=''n'' then put ''0A''x;'; put 'else if sourcechar=''r'' then put ''0D''x;'; put 'else if sourcechar=''t'' then put ''09''x;'; put 'else if sourcechar=''u'' then do;'; put 'length uni $4;'; put 'input uni $ 4. @@;'; put 'sourcechar=unicode(''\u''!!uni);'; put 'put sourcechar char1.;'; put 'end;'; put 'else do;'; put 'call symputx(''errmsg'',"Uncaught escape char: "!!sourcechar,''l'');'; put 'call symputx(''syscc'',99);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then stop;'; put 'else put sourcechar char1.;'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=("&syscc"="99")'; put ',mac=mv_getjobcode'; put ',msg=%str(&errmsg)'; put ')'; put '/* export to desired destination */'; put '%if "&outref"="0" %then %do;'; put 'data _null_;'; put 'file "&outfile" lrecl=32767;'; put '%end;'; put '%else %do;'; put 'filename &outref temp;'; put 'data _null_;'; put 'file &outref;'; put '%end;'; put 'infile &fname2;'; put 'input;'; put 'put _infile_;'; put '&dbg. putlog _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put '%end;'; put '%mend mv_getjobcode;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%local name;'; put '%let name=%scan(&loc,-1,/);'; put '%mv_getjobcode(path=%substr(&loc,1,%length(&loc)-%length(&name)-1)'; put ',name=&name'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; 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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; put '%mend mf_wordsinstr1butnotstr2;'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 (_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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',reason_txt = symget(''submitted_reason_txt'');'; 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'' or format2=:''E8601DT'' or format2=:''NLDATM'''; put '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 'or format2=:''NLDATE'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; 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 '/* 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 _____DELETE__THIS__RECORD_____ length=$3 &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 warnings */'; 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="!!cats(&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 '/* If a Complex Excel Upload, needs to have the load ref added to the table */'; put '%mpe_xlmapvalidate(&mperef,work.staging_ds,&mpelib,&orig_libds)'; put '/* Run the Post Edit Hook prior to creation of staging folder */'; 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 '/* The post edit hook may have re-pointed the changeset at a different table -'; put '* that is what lets an empty mirror stand in for a real one. The target must'; put '* itself be registered in MPE_TABLES: the approval screen resolves the table''s'; put '* audit settings from that row, and a changeset whose base table has no row'; put '* cannot be reviewed. Fail here, while the submitter is still watching. */'; put '%local target_chk;'; put 'proc sql noprint;'; put 'select count(*) into: target_chk'; put 'from &mpelib..mpe_tables'; put 'where tx_from le &now and &now lt tx_to'; put 'and upcase(libref)="%upcase(&libref)"'; put 'and upcase(dsn)="%upcase(&ds)";'; put '%if &target_chk=0 %then %do;'; put '%let msg=%str(ERR)OR: target table &libref..&ds is not registered in%trim('; put ') &mpelib..mpe_tables - a post edit hook may only route a changeset to a%trim('; put ') registered table;'; put '%mpe_loadfail('; put 'status=FAILED - TARGET NOT REGISTERED'; 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 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=YES'; 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 ',''NLDATM'') 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'',''NLDATE'') 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_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 '/** @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 mp_applyformats(inds,errds=0'; put ')/*/STORE SOURCE*/;'; put '%local outds liblist i engine lib msg ;'; put '/**'; put '* Validations'; put '*/'; put 'proc sort data=&inds;'; put 'by lib ds var fmt;'; put 'run;'; put '%if &errds=0 %then %let outds=%mf_getuniquename(prefix=mp_applyformats);'; put '%else %let outds=&errds;'; put 'data &outds;'; put 'set &inds;'; put 'where fmt not in ('''',''.'', ''$'', ''$CHAR.'',''8.'');'; put 'length msg $128;'; put 'by lib ds var fmt;'; put 'if libref(lib) ne 0 then do;'; put 'msg=catx('' '',''libref'',lib,''is not assigned!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put 'if exist(cats(lib,''.'',ds)) ne 1 then do;'; put 'msg=catx('' '',''libds'',lib,''.'',ds,''does not exist!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put '%mp_validatecol(fmt,FORMAT,is_fmt)'; put 'if is_fmt=0 then do;'; put 'msg=catx('' '',''format'',fmt,''on libds'',lib,''.'',ds,''.'',var,''is not valid!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put 'if first.ds then do;'; put 'retain dsid;'; put 'dsid=open(cats(lib,''.'',ds));'; put 'if dsid=0 then do;'; put 'msg=catx('' '',''libds'',lib,''.'',ds,'' could not be opened!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'return;'; put 'end;'; put 'if varnum(dsid,var)<1 then do;'; put 'msg=catx('' '',''Variable'',lib,''.'',ds,''.'',var,'' was not found!'');'; put '%if &errds=0 %then %do;'; put 'putlog ''ERR'' +(-1) "OR: " msg;'; put '%end;'; put 'output;'; put 'end;'; put 'end;'; put 'if last.ds then rc=close(dsid);'; put 'run;'; put 'proc sql noprint;'; put 'select distinct lib into: liblist separated by '' '' from &inds;'; put '%put &=liblist;'; put '%if %length(&liblist)>0 %then %do i=1 %to %sysfunc(countw(&liblist));'; put '%let lib=%scan(&liblist,1);'; put '%let engine=%mf_getengine(&lib);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put '%let msg=&lib has &engine engine - formats cannot be applied;'; put 'insert into &outds set lib="&lib",ds="_all_",var="_all", msg="&msg" ;'; put '%if &errds=0 %then %put %str(ERR)OR: &msg;'; put '%end;'; put '%end;'; put 'quit;'; put '%if %mf_nobs(&outds)>0 %then %return;'; put '/**'; put '* Validations complete - now apply the actual formats!'; put '*/'; put '%let fref=%mf_getuniquefileref();'; put 'data _null_;'; put 'set &inds;'; put 'by lib ds var fmt;'; put 'where fmt not in ('''',''.'', ''$'', ''$CHAR.'',''8.'');'; put 'file &fref;'; put 'if first.lib then put ''proc datasets nolist lib='' lib '';'';'; put 'if first.ds then put '' modify '' ds '';'';'; put 'put '' format '' var fmt '';'';'; put 'if last.ds then put '' run;'';'; put 'if last.lib then put ''quit;'';'; put 'run;'; put '%inc &fref/source2;'; put '%if &errds=0 %then %do;'; put 'proc sql;'; put 'drop table &outds;'; put '%end;'; put '%mend mp_applyformats;'; 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()'; 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 'vlen=varlen(dsid,i);'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',vlen,''.'');'; 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 '/**'; put '* there is not much point importing a short length numeric like this,'; put '* eg with best4., as the resulting variable will still be stored as'; put '* length 8. We need a length or format statement to ensure variable'; put '* is created with the smaller length...'; put '**/'; put 'else if vlen<8 then header=cats(varnm,'':best'',vlen,''.'');'; put 'else header=cats(varnm,'':best32.'');'; 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 '%local vlen&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 '%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'' or format=:''NLDATM'''; put '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'' or format=:''NLDATE'''; 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 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_getfilesize(fpath=,libds=0,format=NO'; put ')/*/STORE SOURCE*/;'; put '%local rc fid fref bytes dsid lib vnum;'; put '%if &libds ne 0 %then %do;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put '%let dsid=%sysfunc(open('; put 'sashelp.vtable(where=(libname="&lib" and memname="%scan(&libds,-1,.)")'; put 'keep=libname memname filesize'; put ')'; put '));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,FILESIZE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let bytes=%sysfunc(getvarn(&dsid,&vnum));'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%else %put &sysmacroname: &libds could not be opened! %sysfunc(sysmsg());'; put '%end;'; put '%else %do;'; put '%let rc=%sysfunc(filename(fref,&fpath));'; put '%let fid=%sysfunc(fopen(&fref));'; put '%let bytes=%sysfunc(finfo(&fid,File Size (bytes)));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(fref));'; put '%end;'; put '%if &format=NO %then %do;'; put '&bytes'; put '%end;'; put '%else %do;'; put '%sysfunc(INPUTN(&bytes, best.),sizekmg.)'; put '%end;'; put '%mend mf_getfilesize ;'; put '%macro mcf_length(wrap=YES'; 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 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()'; 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_ds2squeeze('; put 'libds,'; put 'outds=work.mp_ds2squeeze,'; put 'mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg source;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '%let dbg=*;'; put '%let source=/source2;'; put '%end;'; put '%local optval ds fref startsize;'; put '%let ds=%mf_getuniquename();'; put '%let fref=%mf_getuniquefileref();'; put '%let startsize=%mf_getfilesize(libds=&libds,format=yes);'; put '%mp_getmaxvarlengths(&libds,outds=&ds)'; put 'data _null_;'; put 'set &ds end=last;'; put 'file &fref;'; put '/* grab the types */'; put 'retain dsid;'; put 'if _n_=1 then dsid=open("&libds",''is'');'; put 'if dsid le 0 then do;'; put 'msg=sysmsg();'; put 'put msg=;'; put 'stop;'; put 'end;'; put 'type=vartype(dsid,varnum(dsid, name));'; put 'if last then rc=close(dsid);'; put '/* write out the length statement */'; put 'if _n_=1 then put ''length '';'; put 'length len $6;'; put 'if type=''C'' then do;'; put 'if maxlen=0 then len=''$1'';'; put 'else len=cats(''$'',maxlen);'; put 'end;'; put 'else do;'; put 'if maxlen=0 then len=''3'';'; put 'else len=cats(maxlen);'; put 'end;'; put 'put '' '' name '' '' len;'; put 'if last then 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 &outds;'; put '%inc &fref &source;'; put 'set &libds;'; put 'run;'; put 'options varlenchk=&optval;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds;'; put 'filename &fref clear;'; put '%end;'; put '%put &sysmacroname: &libds was &startsize;'; put '%put &sysmacroname: &outds is %mf_getfilesize(libds=&outds,format=yes);'; put '%mend mp_ds2squeeze;'; put '/** @cond */'; put '%macro mp_stripdiffs(libds'; put ',loadref'; put ',difftable'; put ',filtervar=0'; put ',outds=work.mp_stripdiffs'; 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 '%let libds=%upcase(&libds);'; put '/* safety checks */'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc on entry. Clean session required!)'; put ')'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= (%mf_islibds(&libds)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid library.dataset reference - %superq(libds))'; put ')'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 ds5 fref1 filterstr;'; put '%let fref1=%mf_getuniquefileref();'; put '%if &filtervar ne 0 %then %let filterstr=%superq(&filtervar);'; put '%else %let filterstr=%str(1=1);'; put '/* get timestamp of the diff to be reverted */'; put '%local ts;'; put 'proc sql noprint;'; put 'select put(processed_dttm,datetime19.6) into: ts'; put 'from &difftable where load_ref="&loadref";'; put '%mp_abort(iftrue= (&sqlobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Load ref %superq(loadref) not found!)'; put ')'; put '/* extract diffs for this base table from this timestamp onwards */'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_diffs));'; put 'create table &ds1 (drop=libref dsn) as'; put 'select * from &difftable'; put 'where upcase(cats(libref))="%scan(&libds,1,.)"'; put 'and upcase(cats(dsn))="%scan(&libds,2,.)"'; put 'and processed_dttm ge "&ts"dt'; put 'order by processed_dttm desc, key_hash, is_pk;'; put '/* extract key values only */'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_pks));'; put '%local keyhash processed;'; put '%let keyhash=%upcase(%mf_getuniquename(prefix=mpsdvar_keyhash));'; put '%let processed=%upcase(%mf_getuniquename(prefix=mpsdvar_processed));'; put 'create table &ds2 as'; put 'select key_hash as &keyhash,'; put 'tgtvar_nm,'; put 'tgtvar_type,'; put 'coalescec(oldval_char,newval_char) as charval,'; put 'coalesce(oldval_num, newval_num) as numval,'; put 'processed_dttm as &processed'; put 'from &ds1'; put 'where is_pk=1'; put 'order by &keyhash, &processed;'; put '/* grab pk values */'; put '%local pk;'; put 'select distinct upcase(tgtvar_nm) into: pk separated by '' '' from &ds2;'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_keychar));'; put 'proc transpose data=&ds2(where=(tgtvar_type=''C''))'; put 'out=&ds3(drop=_name_);'; put 'by &keyhash &processed;'; put 'id TGTVAR_NM;'; put 'var charval;'; put 'run;'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_keynum));'; put 'proc transpose data=&ds2(where=(tgtvar_type=''N''))'; put 'out=&ds4(drop=_name_);'; put 'by &keyhash &processed;'; put 'id TGTVAR_NM;'; put 'var numval;'; put 'run;'; put '/* shorten the lengths */'; put '%mp_ds2squeeze(&ds3,outds=&ds3)'; put '%mp_ds2squeeze(&ds4,outds=&ds4)'; put '/* now merge to get all key values and de-dup */'; put '%let ds5=%upcase(work.%mf_getuniquename(prefix=mpsd_merged));'; put 'data &ds5;'; put 'length &keyhash $32 &processed 8;'; put 'merge &ds3 &ds4;'; put 'by &keyhash &processed;'; put 'if not missing(&keyhash);'; put 'run;'; put 'proc sort data=&ds5 nodupkey;'; put 'by &pk;'; put 'run;'; put '/* join to base table for preliminary stage DS */'; put 'proc sql;'; put 'create table &outds as select "No " as _____DELETE__THIS__RECORD_____'; put '%do x=1 %to %sysfunc(countw(&pk,%str( )));'; put ',a.%scan(&pk,&x,%str( ))'; put '%end;'; put '%local notpkcols;'; put '%let notpkcols=%upcase(%mf_getvarlist(&libds));'; put '%let notpkcols=%mf_wordsinstr1butnotstr2(str1=¬pkcols,str2=&pk);'; put '%do x=1 %to %sysfunc(countw(¬pkcols,%str( )));'; put ',b.%scan(¬pkcols,&x,%str( ))'; put '%end;'; put 'from &ds5 a'; put 'left join &libds (where=(&filterstr)) b'; put 'on 1=1'; put '%do x=1 %to %sysfunc(countw(&pk,%str( )));'; put 'and a.%scan(&pk,&x,%str( ))=b.%scan(&pk,&x,%str( ))'; put '%end;'; put ';'; put '/* create SAS code to apply to stage_ds */'; put 'data _null_;'; put 'set &ds1;'; put 'file &fref1 lrecl=33000;'; put 'length charval $32767;'; put 'if _n_=1 then put ''proc sql noprint;'';'; put 'by descending processed_dttm key_hash is_pk;'; put 'if move_type=''M'' then do;'; put 'if first.key_hash then do;'; put 'put "update &outds set " @@;'; put 'end;'; put 'if IS_PK=0 then do;'; put 'put " " tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'if not last.is_pk then put '','';'; put 'end;'; put 'else do;'; put 'if first.is_pk then put " where 1=1 " @@;'; put 'put " and " tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'end;'; put 'end;'; put 'else if move_type=''A'' then do;'; put 'if first.key_hash then do;'; put 'put "update &outds set _____DELETE__THIS__RECORD_____=''Yes'' where 1=1 "@@;'; put 'end;'; put '/* gating if - as only need PK now */'; put 'if is_pk=1;'; put 'put '' AND '' tgtvar_nm ''='' @@;'; put 'cnt=count(newval_char,''"'');'; put 'charval=quote(trim(substr(newval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put newval_num @@;'; put 'end;'; put 'else if move_type=''D'' then do;'; put 'if first.key_hash then do;'; put 'put "update &outds set _____DELETE__THIS__RECORD_____=''No'' " @@;'; put 'end;'; put 'if IS_PK=0 then do;'; put 'put " ," tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'end;'; put 'else do;'; put 'if first.is_pk then put " where 1=1 " @@;'; put 'put " and " tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'end;'; put 'end;'; put 'if last.key_hash then put '';'';'; put 'run;'; put '/* apply the modification statements */'; put '%inc &fref1/source2 lrecl=33000;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4, &ds5;'; put 'file &fref1 clear;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'infile &fref1;'; put 'input;'; put 'if _n_=1 then putlog "Contents of SQL adjustments";'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mend mp_stripdiffs;'; put '/** @endcond */'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file restore.sas'; put '@brief Restores a data version'; put '@details Only applies if the history is stored in the audit table'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mcf_getfmttype.sas'; put '@li mf_nobs.sas'; put '@li mf_mkdir.sas'; put '@li mp_abort.sas'; put '@li mp_applyformats.sas'; put '@li mp_ds2csv.sas'; put '@li mp_getcols.sas'; put '@li mp_stripdiffs.sas'; put '@li mpeinit.sas'; put '@li mpe_checkrestore.sas'; put '@li mpe_loader.sas'; put '

Service Inputs

'; put '
restore_in
'; put '|LOAD_REF:$32|'; put '|---|'; put '|DCXXXXXX|'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 loadref=;'; put 'data _null_;'; put 'set work.restore_in;'; put 'call symputx(''loadref'',load_ref);'; put 'run;'; put '/**'; put '* Check if user has basic access permission to RESTORE the table'; put '*/'; put '%put checking access;'; put '%global allow_restore reason;'; put '%mpe_checkrestore(&loadref,outresult=ALLOW_RESTORE,outreason=REASON)'; put '%mp_abort(iftrue= (&ALLOW_RESTORE ne YES)'; put ',mac=&_program..sas'; put ',msg=%str(Cannot restore because: &reason)'; put ')'; put '/* grab the base DS */'; put 'proc sql noprint;'; put 'select cats(base_lib,''.'',base_ds) into: tgtds'; put 'from &mpelib..mpe_submit'; put 'where TABLE_ID="&loadref";'; put '/* find the audit table */'; put 'select coalescec(audit_libds,"&mpelib..MPE_AUDIT"), loadtype, var_txto'; put 'into: difftable, :loadtype, :txto'; put 'from &mpelib..MPE_TABLES'; put 'where libref="%scan(&tgtds,1,.)"'; put '& dsn="%scan(&tgtds,2,.)"'; put '& &dc_dttmtfmt0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after stripdiffs)'; put ')'; put '%mp_abort(iftrue= (%mf_nobs(work.mp_stripdiffs)=0)'; put ',mac=&_program..sas'; put ',msg=%str(THERE ARE NO DIFFERENCES TO APPLY)'; put ')'; put '/* create a new load ref */'; 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 */'; put '%let dir=&mpelocapprovals/&mperef;'; put '%mf_mkdir(&dir)'; put 'options notes mprint;'; put 'libname approve "&dir";'; 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 '/* copy the diffs dataset */'; put 'data approve.jsdset;'; put 'length _____DELETE__THIS__RECORD_____ $3;'; put 'if 0 then call missing(_____DELETE__THIS__RECORD_____);'; put 'set work.mp_stripdiffs;'; put 'format _all_;'; put 'run;'; put '/* find all of the date / datetime / time vars */'; put '%mcf_getfmttype(wrap=YES)'; put '%mp_getcols(&tgtds,outds=work.cols)'; put 'data work.applydtfmts;'; put 'set work.cols;'; put 'lib="APPROVE";'; put 'ds="JSDSET";'; put 'var=name;'; put 'fmt=coalescec(format,''0'');'; put 'fmttype=mcf_getfmttype(fmt);'; put 'if fmttype in (''DATE'',''DATETIME'',''TIME'');'; put 'keep lib ds var fmt;'; put 'run;'; put '%mp_applyformats(work.applydtfmts)'; put '/* export to csv */'; put '%mp_ds2csv(approve.jsdset'; put ',dlm=COMMA'; put ',outfile="&dir/%trim(&tgtds).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=Restoring &loadref'; put ',dc_dttmtfmt=&dc_dttmtfmt'; put ')'; put '/* mp_abort cannot exit cleanly from inside a %include, so an abort there'; put '(eg in a hook script run via mp_include) only records the error in'; put 'work.mp_abort_errds. mode=INCLUDE picks that up and aborts properly here. */'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/* send relevant SUCCESS values */'; put 'data work.restore_out;'; put 'loadref="&mperef";'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,restore_out)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 'end;'; put 'else do;'; 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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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 'data work.alertmessage;'; put 'set &mpelib..mpe_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also var_scope=''DC_EMAIL'' and var_name="&alert_event._TEMPLATE";'; put 'run;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; 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 'length txt $2048;'; put '%if %mf_getattrn(alertmessage,NLOBS)=0 %then %do;'; put '/* fallback message */'; 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 '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 '%end;'; put '%else %do;'; put '/* take template from config table */'; put 'set work.alertmessage;'; put 'cnt=countw(var_value,''0A''x);'; put 'do i=1 to cnt;'; put 'txt=resolve(scan(var_value,i,''0A''x));'; put 'put txt /;'; put 'end;'; put '%end;'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_xlmapvalidate(mperef,inds,dclib,tgtds);'; put '%local ismap;'; put 'proc sql noprint;'; put 'select count(*) into: ismap'; put 'from &dclib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&tgtds" and &dc_dttmtfmt. le TX_TO ;'; put '%if "&tgtds"="&dclib..MPE_XLMAP_DATA" or &ismap>0 %then %do;'; put 'data &inds;'; put 'set &inds;'; put 'LOAD_REF="&mperef";'; put 'run;'; put '%end;'; put '%mend mpe_xlmapvalidate;'; 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 mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mv_getfoldermembers(root=/'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=mv_getfolders'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_isblank(&root)=1 %then %let root=/;'; put 'options noquotelenmax;'; put '/* request the client details */'; put '%local fname1 libref1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%if "&root"="/" %then %do;'; put '/* if root just list root folders */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/rootFolders?limit=1000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* first get parent folder id */'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/folders/folders/@item?path=&root";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put 'libname &libref1 JSON fileref=&fname1;'; put '/* now get the followon link to list members */'; put '%local href cnt;'; put '%let cnt=0;'; put 'data _null_;'; put 'length rel href $512;'; put 'call missing(rel,href);'; put 'set &libref1..links;'; put 'if rel=''members'' then do;'; put 'url=cats("''","&base_uri",href,"?limit=10000''");'; put 'call symputx(''href'',url,''l'');'; put 'call symputx(''cnt'',1,''l'');'; put 'end;'; put 'run;'; put '%if &cnt=0 %then %do;'; put '%put NOTE:;%put NOTE- No members found in &root!!;%put NOTE-;'; put '%return;'; put '%end;'; put '%local fname2 libref2;'; put '%let fname2=%mf_getuniquefileref();'; put '%let libref2=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname2 &oauth_bearer'; put 'url=%unquote(%superq(href));'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var";'; put '%end;'; put 'run;'; put 'libname &libref2 JSON fileref=&fname2;'; put 'data &outds;'; put 'length id $36 name $128 uri $64 type $32 description $256;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &libref2..items;'; put 'run;'; put 'filename &fname2 clear;'; put 'libname &libref2 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getfoldermembers;'; put '%macro mv_getjobcode(outref=0,outfile=0'; put ',name=0,path=0'; put ',contextName=SAS Job Execution compute context'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',mdebug=0'; put ');'; put '%local dbg bufsize varcnt fname1 fname2 errmsg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname local entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort(iftrue=("&path"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Path not provided)'; put ')'; put '%mp_abort(iftrue=("&name"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job Name not provided)'; put ')'; put '%mp_abort(iftrue=("&outfile"="0" and "&outref"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Output destination (file or fileref) must be provided)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put 'data;run;'; put '%local foldermembers;'; put '%let foldermembers=&syslast;'; put '%mv_getfoldermembers(root=&path'; put ',access_token_var=&access_token_var'; put ',grant_type=&grant_type'; put ',outds=&foldermembers'; put ')'; put '%local joburi;'; put '%let joburi=0;'; put 'data _null_;'; put 'length name uri $512;'; put 'call missing(name,uri);'; put 'set &foldermembers;'; put 'if name="&name" and uri=:''/jobDefinitions/definitions'''; put 'then call symputx(''joburi'',uri);'; put 'run;'; put '%mp_abort(iftrue=("&joburi"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(Job &path/&name not found)'; put ')'; put '/* prepare request*/'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri&joburi";'; put 'headers "Accept"="application/vnd.sas.job.definition+json"'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put ';'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &fname1;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let fname2=%mf_getuniquefileref();'; put 'filename &fname2 temp ;'; put '/* cannot use lua IO package as not available in Viya 4 */'; put '/* so use data step to read the JSON until the string `"code":"` is found */'; put 'data _null_;'; put 'file &fname2 recfm=n;'; put 'infile &fname1 lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'retain startwrite 0;'; put 'if startwrite=0 and sourcechar=''"'' then do;'; put 'reentry:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''c'' then do;'; put 'reentry2:'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''o'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''d'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''e'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar='':'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar=''"'' then do;'; put 'putlog ''code found'';'; put 'startwrite=1;'; put 'input sourcechar $ 1. @@;'; put 'end;'; put 'end;'; put 'else if sourcechar=''c'' then goto reentry2;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put 'else if sourcechar=''"'' then goto reentry;'; put 'end;'; put '/* once the `"code":"` string is found, write until unescaped `"` is found */'; put 'if startwrite=1 then do;'; put 'if sourcechar=''\'' then do;'; put 'input sourcechar $ 1. @@;'; put 'if sourcechar in (''"'',''\'') then put sourcechar char1.;'; put 'else if sourcechar=''n'' then put ''0A''x;'; put 'else if sourcechar=''r'' then put ''0D''x;'; put 'else if sourcechar=''t'' then put ''09''x;'; put 'else if sourcechar=''u'' then do;'; put 'length uni $4;'; put 'input uni $ 4. @@;'; put 'sourcechar=unicode(''\u''!!uni);'; put 'put sourcechar char1.;'; put 'end;'; put 'else do;'; put 'call symputx(''errmsg'',"Uncaught escape char: "!!sourcechar,''l'');'; put 'call symputx(''syscc'',99);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if sourcechar=''"'' then stop;'; put 'else put sourcechar char1.;'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=("&syscc"="99")'; put ',mac=mv_getjobcode'; put ',msg=%str(&errmsg)'; put ')'; put '/* export to desired destination */'; put '%if "&outref"="0" %then %do;'; put 'data _null_;'; put 'file "&outfile" lrecl=32767;'; put '%end;'; put '%else %do;'; put 'filename &outref temp;'; put 'data _null_;'; put 'file &outref;'; put '%end;'; put 'infile &fname2;'; put 'input;'; put 'put _infile_;'; put '&dbg. putlog _infile_;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%else %do;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'filename &fname2 clear;'; put '%end;'; put '%mend mv_getjobcode;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%local name;'; put '%let name=%scan(&loc,-1,/);'; put '%mv_getjobcode(path=%substr(&loc,1,%length(&loc)-%length(&name)-1)'; put ',name=&name'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; 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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; put '%mend mf_wordsinstr1butnotstr2;'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 (_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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',reason_txt = symget(''submitted_reason_txt'');'; 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'' or format2=:''E8601DT'' or format2=:''NLDATM'''; put '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 'or format2=:''NLDATE'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; 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 '/* 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 _____DELETE__THIS__RECORD_____ length=$3 &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 warnings */'; 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="!!cats(&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 '/* If a Complex Excel Upload, needs to have the load ref added to the table */'; put '%mpe_xlmapvalidate(&mperef,work.staging_ds,&mpelib,&orig_libds)'; put '/* Run the Post Edit Hook prior to creation of staging folder */'; 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 '/* The post edit hook may have re-pointed the changeset at a different table -'; put '* that is what lets an empty mirror stand in for a real one. The target must'; put '* itself be registered in MPE_TABLES: the approval screen resolves the table''s'; put '* audit settings from that row, and a changeset whose base table has no row'; put '* cannot be reviewed. Fail here, while the submitter is still watching. */'; put '%local target_chk;'; put 'proc sql noprint;'; put 'select count(*) into: target_chk'; put 'from &mpelib..mpe_tables'; put 'where tx_from le &now and &now lt tx_to'; put 'and upcase(libref)="%upcase(&libref)"'; put 'and upcase(dsn)="%upcase(&ds)";'; put '%if &target_chk=0 %then %do;'; put '%let msg=%str(ERR)OR: target table &libref..&ds is not registered in%trim('; put ') &mpelib..mpe_tables - a post edit hook may only route a changeset to a%trim('; put ') registered table;'; put '%mpe_loadfail('; put 'status=FAILED - TARGET NOT REGISTERED'; 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 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_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=YES'; 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 ',''NLDATM'') 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'',''NLDATE'') 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()'; 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 'vlen=varlen(dsid,i);'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',vlen,''.'');'; 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 '/**'; put '* there is not much point importing a short length numeric like this,'; put '* eg with best4., as the resulting variable will still be stored as'; put '* length 8. We need a length or format statement to ensure variable'; put '* is created with the smaller length...'; put '**/'; put 'else if vlen<8 then header=cats(varnm,'':best'',vlen,''.'');'; put 'else header=cats(varnm,'':best32.'');'; 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 '%local vlen&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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mp_validatecol.sas'; put '@li mf_getplatform.sas'; put '@li removecolsfromwork.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '/* sanitise message to prevent code injection */'; put 'message=compress(message, ''&%;'');'; 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 '/* validate libds to prevent code injection */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'putlog ''ERR'' ''OR: Invalid libds:'' libds;'; put 'call symputx(''bad_libds'',1);'; put 'end;'; put 'else call symputx(''bad_libds'',0);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&bad_libds=1)'; put ',mac=&_program'; put ',msg=%str(Invalid libds supplied)'; put ')'; 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'') then ref=symget(''_WEBIN_FILEREF1'');'; put 'else if symexist(''sasjs_tables'') then ref=''0ref''; /* no fileref created */'; put 'else ref=''indata1'';'; put 'call symputx(''ref'',ref);'; put 'putlog ref=;'; put 'run;'; put '%mp_binarycopy(inref=&ref,outloc="&dir/_WEBIN_FILEREF1.txt",iftrue=&ref ne 0ref)'; 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 cannot exit cleanly from inside a %include, so an abort there'; put '(eg in a hook script run via mp_include) only records the error in'; put 'work.mp_abort_errds. mode=INCLUDE picks that up and aborts properly here. */'; put '%mp_abort(mode=INCLUDE)'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; 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 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 '*/'; 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 end=last;'; put 'length reason_cd $4032 vtype vtype2 $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 'retain dsid;'; put 'if _n_=1 then 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 'goto endstep;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Could not open &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'stop;'; 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'' & OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'') then do;'; put 'if 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 'else if subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if OPERATOR_NM =''BETWEEN'' and subpad(upcase(tmp),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put '/* is not valid syntax for IN or NOT IN */'; put 'vnum=varnum(dsid,subpad(tmp,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if vtype=''C'' and subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Char Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog (_all_)(=);'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'endstep:'; put 'if last then rc=close(dsid);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 'It also checks that EDIT scope security is not being applied to tables'; put 'with a REPLACE loadtype (these are incompatible - see issue #211).'; put '

SAS Macros

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

Related Macros

'; put '@li mpe_loader.sas'; put '**/'; put '/* REPLACE loadtype is incompatible with row level EDIT security (#211) */'; put 'proc sql noprint;'; put 'create table work.badloadtypes as'; put 'select distinct cats(upcase(a.rls_libref),''.'',upcase(a.rls_table)) as libds'; put 'from work.staging_ds(where=(rls_active=1'; put 'and upcase(rls_scope) in (''EDIT'',''ALL'')'; put 'and upcase(_____DELETE__THIS__RECORD_____) ne ''YES'')) a'; put 'inner join &dc_libref..mpe_tables(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(a.rls_libref)=upcase(b.libref)'; put 'and upcase(a.rls_table)=upcase(b.dsn)'; put 'where upcase(b.loadtype)=''REPLACE'';'; put '%let badloadtypes=0;'; put '%let badloadtype=;'; put 'data _null_;'; put 'set work.badloadtypes;'; put 'call symputx(''badloadtypes'',_n_);'; put 'call symputx(''badloadtype'',libds);'; put 'run;'; put '%mp_abort(iftrue=(&badloadtypes ne 0)'; put ',mac=mpe_row_level_security_postedit'; put ',msg=%str(Row level EDIT security cannot be applied to table(s) with a%trim('; put ') REPLACE loadtype, eg: &badloadtype. Remove the security rule(s) or%trim('; put ') change the loadtype.)'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=mpe_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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_SECURITY table'; put '@details Post edit hooks provide additional backend validation against'; put 'user-sourced data. The incoming dataset is always `work.staging_ds` and this'; put 'file is included from the mpe_loader.sas macro.'; put 'Available (at runtime) macro variables:'; put '@li DC_LIBREF - The DC control library for your site'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put '**/'; put '/* ensure upcase and check access level values*/'; put '%let errval=0;'; put '%let errmsg=;'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'LIBREF=upcase(LIBREF);'; put 'if LIBREF in (''WORK'',''CASUSER'',''SASUSER'') then do;'; put 'putlog "ERR" +(-1) "OR: invalid LIBREF - " LIBREF;'; put 'call symputx(''errval'',1);'; put 'call symputx(''errmsg'',"Invalid LIBREF: "!!LIBREF);'; put 'end;'; put 'DSN=upcase(DSN);'; put 'ACCESS_LEVEL=upcase(ACCESS_LEVEL);'; put 'if ACCESS_LEVEL not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'putlog "ERR" +(-1) "OR: invalid ACCESS_LEVEL - " access_level;'; put 'call symputx(''errval'',1);'; put 'call symputx(''errmsg'',"Invalid ACCESS_LEVEL: "!!access_level);'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&errval=1)'; put ',mac=mpe_security_postedit.sas'; put ',msg=%str(&errmsg)'; put ')'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 '/* PK fields should not be upcased if we are trying to delete records */'; put 'if upcase(_____DELETE__THIS__RECORD_____) ne "YES" then do;'; put 'LIBREF=upcase(LIBREF);'; put 'DSN=upcase(DSN);'; put 'end;'; 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 'rk_underlying=upcase(rk_underlying);'; put '/* do not accept certain librefs */'; put 'if LIBREF in (''WORK'',''CASUSER'',''SASUSER'')'; put 'then do;'; put 'call symputx(''errmsg'',"Invalid LIBREF: "!!LIBREF);'; put 'call symputx(''errflag'',1);'; put 'end;'; 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 and DSN when loading format catalogs */'; put 'if LOADTYPE=''FORMAT_CAT'' then do;'; put 'BUSKEY=''TYPE FMTNAME FMTROW'';'; put 'DSN=scan(dsn,1,''-'')!!''-FC'';'; put 'end;'; put '/* convert tabs into spaces */'; put 'buskey=translate(buskey," ","09"x);'; put 'rk_underlying=translate(rk_underlying," ","09"x);'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_tables_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '/* REPLACE loadtype is incompatible with row level EDIT security (#211) */'; put 'proc sql noprint;'; put 'create table work.badloadtypes as'; put 'select distinct cats(upcase(a.libref),''.'',upcase(a.dsn)) as libds'; put 'from work.staging_ds(where=(loadtype=''REPLACE'''; put 'and upcase(_____DELETE__THIS__RECORD_____) ne ''YES'')) a'; put 'inner join &dc_libref..mpe_row_level_security(where=('; put 'rls_active=1 and &dc_dttmtfmt. lt tx_to'; put 'and upcase(rls_scope) in (''EDIT'',''ALL''))) b'; put 'on upcase(a.libref)=upcase(b.rls_libref)'; put 'and upcase(a.dsn)=upcase(b.rls_table);'; put '%let badloadtypes=0;'; put '%let badloadtype=;'; put 'data _null_;'; put 'set work.badloadtypes;'; put 'call symputx(''badloadtypes'',_n_);'; put 'call symputx(''badloadtype'',libds);'; put 'run;'; put '%mp_abort(iftrue=(&badloadtypes ne 0)'; put ',mac=mpe_tables_postedit'; put ',msg=%str(REPLACE loadtype cannot be applied to table(s) with row level%trim('; put ') EDIT security, eg: &badloadtype. Remove the security rule(s) or change%trim('; put ') the loadtype.)'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 '/** check that any supplied HARDREGEX / SOFTREGEX rules contain a valid'; put 'regex pattern. The frontend evaluates these as JavaScript regexes'; put '(invalid ones are silently ignored there), so prxparse is used here as'; put 'a best-effort syntax check to catch typos at config time.'; put 'An empty pattern is treated as valid (matches everything in JS). */'; put 'data work.regex_check;'; put 'length source $74;'; put 'set work.staging_ds('; put 'where=(rule_type in (''HARDREGEX'',''SOFTREGEX'')'; put 'and upcase(_____DELETE__THIS__RECORD_____) ne "YES")'; put ');'; put 'keep source rule_value;'; put 'if rule_value ne '' '' then do;'; put 'rx=prxparse(strip(rule_value));'; put 'if missing(rx) then do;'; put 'source=catx(''.'',base_lib,base_ds,base_col);'; put 'output;'; put 'end;'; put 'else call prxfree(rx);'; put 'end;'; put 'run;'; put '%global src_list3;'; put '%let src_list3='''';'; put 'proc sql noprint;'; put 'select distinct quote(cats(source)) into: src_list3 separated by '','''; put 'from work.regex_check;'; put 'quit;'; put '%mp_abort(iftrue= (%mf_nobs(work.regex_check)>0)'; put ',mac=mpe_validations_postedit'; put ',msg=%str(The following vars have invalid REGEX patterns: &src_list3)'; put ')'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=mpe_xlmap_info_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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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_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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; put '%mend mf_wordsinstr1butnotstr2;'; 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_XLMAP_INFO 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 '

SAS Macros

'; put '@li mf_existds.sas'; put '@li mf_getvarlist.sas'; put '@li mf_wordsinstr1butnotstr2.sas'; put '@li dc_assignlib.sas'; put '@li mp_validatecol.sas'; put '**/'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put '/* apply the first excel map to all cells */'; put 'length tgtds $41;'; put 'retain tgtds;'; put 'drop tgtds is_libds;'; put 'if _n_=1 then do;'; put 'if missing(XLMAP_TARGETLIBDS) then tgtds="&dc_libref..MPE_XLMAP_DATA";'; put 'else tgtds=upcase(XLMAP_TARGETLIBDS);'; put '%mp_validatecol(XLMAP_TARGETLIBDS,LIBDS,is_libds)'; put 'call symputx(''tgtds'',tgtds);'; put 'call symputx(''is_libds'',is_libds);'; put 'end;'; put 'XLMAP_TARGETLIBDS=tgtds;'; put 'run;'; put '%mp_abort(iftrue=(&is_libds ne 1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=Invalid target dataset (&tgtds)'; put ')'; put '/**'; put '* make sure that the supplied target dataset exists and'; put '* has the necessary columns'; put '*/'; put '%dc_assignlib(READ,%scan(&tgtds,1,.))'; put '%mp_abort(iftrue=(%mf_existds(libds=&tgtds) ne 1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=Target dataset (&tgtds) could not be opened'; put ')'; put '%let tgtvars=%upcase(%mf_getvarlist(&tgtds));'; put '%let srcvars=%upcase(%mf_getvarlist(&dc_libref..MPE_XLMAP_DATA));'; put '%let badvars1=%mf_wordsInStr1ButNotStr2(Str1=&srcvars,Str2=&tgtvars);'; put '%let badvars2=%mf_wordsInStr1ButNotStr2(Str1=&tgtvars,Str2=&srcvars);'; put '%mp_abort(iftrue=(%length(&badvars1.X)>1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=%str(Target dataset (&tgtds) has missing vars: &badvars1)'; put ')'; put '%mp_abort(iftrue=(%length(&badvars2.X)>1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=%str(Target dataset (&tgtds) has unrecognised vars: &badvars2)'; put ')'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=mpe_xlmap_rules_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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_XLMAP_RULES 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 '**/'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put '/* ensure uppercasing */'; put 'XLMAP_ID=upcase(XLMAP_ID);'; put 'run;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=sample_xlmap_data_postapprove; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Sample XLMAP Data hook program (sample_xlmap_data_postapprove)'; put '@details This hook script should NOT be modified in place, as the changes'; put 'would be lost in your next Data Controller deployment.'; put 'Instead, create a copy of this hook script and place it OUTSIDE the'; put 'Data Controller metadata folder.'; put 'Available macro variables:'; put '@li LOAD_REF - The Load Reference (unique upload id)'; put '@li ORIG_LIBDS - The target library.dataset that was just loaded'; put '**/'; put 'data _null_;'; put 'set work.staging_ds;'; put 'putlog ''load ref is in the staged data: '' load_ref;'; put 'stop;'; put 'run;'; put '%put the unique identifier (LOAD_REF) is also a macro variable: &LOAD_REF;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=sample_xlmap_data_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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Sample XLMAP Data hook program'; put '@details This hook script should NOT be modified in place, as the changes'; put 'would be lost in your next Data Controller deployment.'; put 'Instead, create a copy of this hook script and place it OUTSIDE the'; put 'Data Controller metadata folder.'; 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 target dataset being loaded'; put '**/'; put '%let abort=0;'; put '%let errmsg=;'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'length errmsg $1000;'; put 'drop err:;'; put '/* KM1 validations */'; put 'if XLMAP_ID=''BASEL-KM1'' then do;'; put 'if XLMAP_RANGE_ID=''KM1:a'' & input(value_txt,8.)<100 then do;'; put 'errmsg=''Should be greater than 100'';'; put 'err=1;'; put 'end;'; put 'end;'; put '/* CR2 Validations */'; put 'if XLMAP_ID=''BASEL-CR2'' then do;'; put 'if XLMAP_RANGE_ID=''CR2-sec1'' & row_no=3 & input(value_txt,8.)>0 then do;'; put 'errmsg=''Should be negative'';'; put 'err=1;'; put 'end;'; put 'end;'; put '/* publish error message */'; put 'if err=1 then do;'; put 'errmsg=catx('' '',xlmap_range_id,'':'',value_txt,''->'',errmsg);'; put 'call symputx(''errmsg'',errmsg);'; put 'call symputx(''abort'',1);'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&abort ne 0)'; put ',mac=xlmap_data_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '/**'; put '* Validate inputs before they reach executable code. base_table is'; put '* interpolated into a SQL where clause (and callers may pass raw request'; put '* input), so it must be a well-formed LIBREF.DATASET (or the'; put '* LIBREF.CATALOGNAME-FC form of a format catalog) and access_level must'; put '* be one of the known levels - anything else aborts before the query is'; put '* built. Values are read with symget (never re-resolved) and scanned in'; put '* a data step so no macro content in the input can execute.'; put '*/'; put '%local is_libds is_level;'; put '%let is_libds=0;'; put '%let is_level=0;'; put 'data _null_;'; put 'length _bt $64 _lvl $16;'; put '_bt=symget(''base_table'');'; put '_lvl=upcase(symget(''access_level''));'; put '%mpe_validatecol(_bt,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'call symputx(''is_libds'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid base_table:'' _bt;'; put 'stop;'; put 'end;'; put 'if _lvl not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'call symputx(''is_level'',0,''l'');'; put 'putlog ''ERR'' ''OR: Invalid access_level:'' _lvl;'; put 'stop;'; put 'end;'; put '/* escape any embedded quotes so the value cannot break out of the'; put '* double-quoted SQL literals below (defence in depth - the LIBDS'; put '* check above already rejects quotes) */'; put '_bt=tranwrd(_bt,''"'','''');'; put 'call symputx(''base_table'',_bt,''l'');'; put 'call symputx(''access_level'',_lvl,''l'');'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_level'',1,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue=(&is_libds ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(&is_level ne 1)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Invalid access_level)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mpe_checkrestore(load_ref,'; put 'outresult=ALLOW_RESTORE,'; put 'outreason=REASON'; put ');'; put '%global &outresult &outreason;'; put '%let &outresult=NO;'; put '%let &outreason=NOTFOUND;'; put '%local libds;'; put 'proc sql noprint;'; put 'select upcase(cats(base_lib,''.'',base_ds)) into: libds'; put 'from &dc_libref..mpe_submit'; put 'where TABLE_ID="&load_ref";'; put '%local base_lib base_ds;'; put '%let base_lib=%scan(&libds,1,.);'; put '%let base_ds=%scan(&libds,2,.);'; put '/**'; put '* check if there is actually a version to restore'; put '*/'; put '%local audtab;'; put 'proc sql noprint;'; put 'select coalescec(audit_libds,"&dc_libref..MPE_AUDIT") into: audtab trimmed'; put 'from &dc_libref..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%if "&audtab"="0" %then %do;'; put '%let &outresult=NO;'; put '%let &outreason= &libds has no audit table configured;'; put '%return;'; put '%end;'; put '%local chk;'; put '%let chk=0;'; put 'proc sql noprint;'; put 'select count(*) into: chk from &audtab'; put 'where load_ref="&load_ref";'; put '%if &chk=0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=No entry for &load_ref in &audtab;'; put '%return;'; put '%end;'; put '/* grab user groups */'; put '%local user;'; put '%let user=%mf_getuser();'; put '%mpe_getgroups(user=&user,outds=work.groups)'; put '/* check if user is admin */'; put '%local is_admin;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from work.groups'; put 'where groupname="&dc_admin_group";'; put '%if &is_admin>0 %then %do;'; put '%let &outresult=YES;'; put '%let &outreason=IS ADMIN;'; put '%return;'; put '%end;'; put '/* check if user has basic access */'; put '%mpe_accesscheck(&libds,outds=work.access_check'; put ',user=&user'; put ',access_level=EDIT'; put ')'; put '%if %mf_nobs(access_check)=0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=No access in MPE_TABLES;'; put '%return;'; put '%end;'; put '/* check if user has column level security rules */'; put 'proc sql;'; put 'create table work.cls_rules as'; put 'select *'; put 'from &mpelib..mpe_column_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("EDIT",''ALL'')'; put 'and CLS_ACTIVE=1'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from work.groups)'; put 'and CLS_LIBREF="%upcase(&base_lib)"'; put 'and CLS_TABLE="%upcase(&base_ds)";'; put '%if %mf_nobs(work.cls_rules)>0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=User has restrictions in MPE_COLUMN_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.cls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '/* check if user has row level security rules */'; put 'proc sql;'; put 'create table work.rls_rules as'; put 'select *'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("EDIT",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="&base_lib"'; put 'and rls_table="&base_ds"'; put 'and rls_active=1;'; put '%if %mf_nobs(work.rls_rules)>0 %then %do;'; put '%let &outresult=NO;'; put '%let &outreason=User has restrictions in MPE_ROW_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.rls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %do;'; put '%let &outresult=YES;'; put '%let &outreason=CHECKS PASSED;'; put '%end;'; put '%mend mpe_checkrestore;'; 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 '* 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mp_abort.sas'; put '@li mpe_checkrestore.sas'; put '

Service Inputs

'; put '
sascontroltable
'; put '@li table table ID or LOAD_REF used to uniquely identify a staged change'; put '

Service Outputs

'; put '
work.jsparams
'; put 'Mainly sourced from MPE_SUBMIT plus some extra cols:'; put '@li LIB_ENGINE Library engine'; put '@li allow_restore YES if a user can restore, else NO'; put '@li REASON reason why a restore is / is no possible'; put '

Data Inputs

'; put '@li MPE_AUDIT'; put '@li MPE_COLUMN_LEVEL_SECURITY'; put '@li MPE_ROW_LEVEL_SECURITY'; put '@li MPE_SUBMIT'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '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 '/**'; put '* Check if user has basic access permission to RESTORE the table'; put '*/'; put '%put checking access;'; put '%global allow_restore reason;'; put '%mpe_checkrestore(&table,outresult=ALLOW_RESTORE,outreason=REASON)'; put 'data work.jsParams;'; put 'set approve1;'; put 'LIB_ENGINE="%mf_getEngine(&base_lib)";'; put 'allow_restore="&allow_restore";'; put 'REASON="&reason";'; 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,missing=STRING)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mp_abort.sas'; put '@li mp_validatecol.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '* The libds is read from the IWANT input table. Reading it with'; put '* mf_getvalue would re-resolve any macro content in the value, so it is'; put '* read with symget in a data step and validated (LIBREF.DATASET) before'; put '* it is used in proc contents.'; put '*/'; put '%let is_libds=0;'; put 'data _null_;'; put 'length _libds $64;'; put 'set work.iwant;'; put '_libds=libds;'; put '%mp_validatecol(_libds,LIBDS,is_libds)'; put 'if is_libds=0 then putlog ''ERR'' ''OR: Invalid libds:'' _libds;'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'if is_libds=1 then call symputx(''ds'',upcase(_libds),''l'');'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&is_libds ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid libds)'; put ')'; 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=''C'';'; 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=''N'';'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*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 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; 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 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 '*/'; 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 end=last;'; put 'length reason_cd $4032 vtype vtype2 $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 'retain dsid;'; put 'if _n_=1 then 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 'goto endstep;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Could not open &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'stop;'; 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'' & OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'') then do;'; put 'if 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 'else if subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if OPERATOR_NM =''BETWEEN'' and subpad(upcase(tmp),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put '/* is not valid syntax for IN or NOT IN */'; put 'vnum=varnum(dsid,subpad(tmp,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if vtype=''C'' and subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Char Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog (_all_)(=);'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'endstep:'; put 'if last then rc=close(dsid);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 'The STARTROW and ROWS variables are used to fetch additional values beyond'; put 'the initial default (4000).'; put '|libds:$19.|col:$9.|STARTROW:8.|ROWS:8.|'; put '|---|---|---|---|'; put '|DC258467.MPE_X_TEST|SOME_TIME|4001|1000'; 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.|STARTROW:8.|ROWS:8.|'; put '|---|---|---|---|'; put '|COL_NAME|DOLLAR8.2|4001|1000'; put '

SAS Macros

'; put '@li mf_existds.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 '@li mp_validatecol.sas'; put '@li mpe_validatecol.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd.'; 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 '/**'; put '* libds and col are request inputs that flow into executable positions'; put '* (set &libds, proc sql select &col2). They are read from the IWANT'; put '* table with symget in a data step (never re-resolved) and validated'; put '* here before use - mf_getvalue would re-resolve any macro content in'; put '* the value before this code ran.'; put '*/'; put '%let libds=;'; put '%let col2=;'; put '%let is_libds=0;'; put '%let is_col=0;'; put 'data _null_;'; put 'length _libds $64 _col $32;'; put 'set work.iwant;'; put '_libds=libds;'; put '_col=col;'; put '%mpe_validatecol(_libds,LIBDS,is_libds)'; put '%mp_validatecol(_col,ISNAME,is_col)'; put 'if is_libds=0 then putlog ''ERR'' ''OR: Invalid libds:'' _libds;'; put 'if is_col=0 then putlog ''ERR'' ''OR: Invalid col:'' _col;'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_col'',is_col,''l'');'; put 'if is_libds=1 then call symputx(''libds'',upcase(_libds),''l'');'; put 'if is_col=1 then call symputx(''col2'',upcase(_col),''l'');'; put 'stop;'; put 'run;'; put '%let is_fmt=0;'; put '%let startrow=1;'; put '%let rows=4000;'; put '%mp_abort(iftrue= (%mf_verifymacvars(libds col2)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Missing inputs from iwant)'; put ')'; put '%mp_abort(iftrue= (&is_libds ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid libds)'; put ')'; put '%mp_abort(iftrue= (&is_col ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid col)'; put ')'; put '%dc_assignlib(WRITE,%scan(&libds,1,.))'; put 'data _null_;'; put 'call missing(startrow,rows);'; 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 'call symputx(''startrow'',coalesce(startrow,&startrow));'; put 'call symputx(''rows'',coalesce(rows,&rows));'; 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 'proc sql;'; put 'create view work.vw_vals_sorted as'; put 'select distinct'; put 'put(&col2,%mf_getVarFormat(&libds,&col2,force=1)) as formatted,'; put '&col2 as unformatted'; put 'from work.vw_vals;'; put '/* restrict num of output values */'; put 'data work.vals;'; put 'set work.vw_vals_sorted;'; put 'if _n_ ge &startrow;'; put 'x+1;'; put 'if x>&rows then stop;'; put 'drop x;'; put 'run;'; 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 'proc sql noprint;'; put 'select count(*) into: nobs from work.vw_vals_sorted;'; put 'data meta;'; put 'column="&col2";'; put 'sasformat="%mf_getVarFormat(&libds,&col2)";'; put 'startrow=&startrow;'; put 'rows=&rows;'; put 'nobs=&nobs;'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; 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_ds2ddl(libref,ds,fref=getddl,flavour=SAS,showlog=YES,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 '%local constraints_used;'; put '%macro addConst();'; 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_ds2ddl;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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_ds2ddl.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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_ds2ddl(&libref,&ds,flavour=&flavour, fref=tmp, applydttm=YES, showlog=NO)'; put '%mp_streamfile(contenttype=TEXT'; put ',inloc=%str(&tmploc)'; put ',outname=&libref._&ds..ddl'; put ')'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getgroups(access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=work.viyagroups'; put ');'; put '%local oauth_bearer base_uri fname1 libref1;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '/* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/groups?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getgroups;'; put '%macro dc_getgroups(outds=mm_getgroups);'; put '%mv_getgroups(outds=&outds)'; put 'proc sort'; put 'data=&outds(rename=(id=groupuri name=groupname description=groupdesc))'; put 'out=&outds (keep=groupuri groupname groupdesc);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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_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_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; 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_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 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; 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 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=YES'; 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 ',''NLDATM'') 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'',''NLDATE'') 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_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_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()'; 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 'vlen=varlen(dsid,i);'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',vlen,''.'');'; 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 '/**'; put '* there is not much point importing a short length numeric like this,'; put '* eg with best4., as the resulting variable will still be stored as'; put '* length 8. We need a length or format statement to ensure variable'; put '* is created with the smaller length...'; put '**/'; put 'else if vlen<8 then header=cats(varnm,'':best'',vlen,''.'');'; put 'else header=cats(varnm,'':best32.'');'; 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 '%local vlen&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 '%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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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_getuser.sas'; put '@li mf_existfeature.sas'; put '@li dc_assignlib.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_cntlout.sas'; put '@li mp_ds2cards.sas'; put '@li mp_ds2csv.sas'; put '@li mp_streamfile.sas'; put '@li mp_validatecol.sas'; put '@li mpe_validatecol.sas'; put '@li mpe_filtermaster.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '/**'; put '* Validate inputs before they reach executable code. table is used as a'; put '* dataset reference, in the output file path, and in the download filename,'; put '* so it must be a well-formed LIBREF.DATASET (the trailing -FC catalog'; put '* suffix is permitted); filter must be an integer. Values are read with'; put '* symget (never re-resolved) and validated in a data step so no macro'; put '* content in the input can execute.'; put '*/'; put '%let is_libds=0;'; put '%let is_int=0;'; put '%let is_type=0;'; put 'data _null_;'; put 'length _table $64 _filter $16 _type $16;'; put '_type=upcase(coalescec(symget(''type''),''''));'; put '_table=coalescec(symget(''table''),'''');'; put '_filter=coalescec(symget(''filter''),''0'');'; put 'if missing(_table) then do;'; put 'putlog ''ERR'' ''OR: Missing table'';'; put 'stop;'; put 'end;'; put '%mpe_validatecol(_table,LIBDS,is_libds)'; put '/* an absent filter is a valid, unfiltered download */'; put 'if missing(_filter) then _filter=''0'';'; put '%mp_validatecol(_filter,ISINT,is_int)'; put '/* type is validated against a fixed list of download formats */'; put 'length _types_ok 8;'; put '_types_ok=0;'; put 'if _type in (''SAS'',''CSV'',''EXCEL'',''MARKDOWN'',''WEBCSV'',''WEBTAB'')'; put 'then _types_ok=1;'; put 'else putlog ''ERR'' ''OR: Invalid type:'' _type;'; put 'if is_libds=0 then putlog ''ERR'' ''OR: Invalid table:'' _table;'; put 'if is_int=0 then putlog ''ERR'' ''OR: Invalid filter:'' _filter;'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'call symputx(''is_int'',is_int,''l'');'; put 'call symputx(''is_type'',_types_ok,''l'');'; put 'call symputx(''filter'',_filter,''l'');'; put 'if is_libds=1 then call symputx(''table'',upcase(_table),''l'');'; put 'if _types_ok=1 then call symputx(''type'',_type,''l'');'; put 'run;'; put '%mp_abort(iftrue= (&is_libds ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid table)'; put ')'; put '%mp_abort(iftrue= (&is_int ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid filter)'; put ')'; put '%mp_abort(iftrue= (&is_type ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid type)'; 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 'run;'; put '/* if a format, extract relevant info */'; put 'data _null_;'; 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 '/* cannot use PROC EXPORT as we need to wrap all char values in quotes */'; put '%mp_ds2csv(work.staged,outfile="&outfile",headerformat=NAME)'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=getversion; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '* 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getversion.sas'; put '@brief get a specific (previous) version of a particular table'; put '@details Used to fetch a version of a table as at a previous point in time'; put 'Delivered as part of this issue: https://git.datacontroller.io/dc/dc/issues/84'; put '

Service Inputs

'; put '
getversion_input
'; put '|LIBREF:$char8.|DS:$char32.|TS: 8.|'; put '|---|---|---|'; put '|SOMELIB|SOMEDS|1341344.804|'; put '

Service Outputs

'; put '
work.getversion_output
'; put 'The data for a particular version'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mpeinit.sas'; put '@li mpe_getvars.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '**/'; put '%mpeinit()'; put '%global LIBREF DS;'; put '/* load parameters */'; put '%mpe_getvars(getversion_input, getversion_input)'; put '%mp_abort(iftrue= (&syscc ne 0 )'; put ',mac=&_program'; put ',msg=%str(Issue on startup)'; put ')'; put '/* todo */'; put '%webout(OPEN)'; put '%webout(OBJ,getversion_output)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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 '/** @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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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 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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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 ',AUDITFOLDER=0'; 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 '%mp_abort('; put 'iftrue=(%sysfunc(exist(&base_lib..&base_dsn)) ne 1),'; put 'msg=&base_lib..&base_dsn does not exist'; put ')'; put '%mp_abort('; put 'iftrue=(%sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 ),'; put 'msg=&append_lib..&append_dsn does not exist'; put ')'; 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 '%mp_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 '%mp_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/* set up folder */'; put '%local tmplib;%let tmplib=%mf_getuniquelibref();'; put '%if "&AUDITFOLDER"="0" %then %do;'; put 'filename tmp temp lrecl=10000;'; put 'libname &tmplib (work);'; put '%end;'; put '%else %do;'; put '%mf_mkdir(&AUDITFOLDER)'; put 'filename tmp "&AUDITFOLDER/deleterecords.sas" lrecl=10000;'; put 'libname &tmplib "&AUDITFOLDER";'; put '%end;'; put '/**'; put '* Create closeout statements. If UPDATE approach and CAS engine, use the'; put '* DeleteRows action (as regular SQL deletes are not supported).'; put '* Otherwise, the deletions 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 etype;'; put '%let update_cnt=0;'; put '%let etype=%mf_getengine(&base_lib);'; put '%put &=etype;'; put '%if &loadtype=UPDATE and &etype=CAS %then %do;'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds &tmplib..deleterecords;'; put 'set work.___closeout1;'; put 'keep &pk;'; put 'run;'; put '/* build the proc */'; put 'data _null_;'; put 'file tmp;'; put 'put "/* libname approve ''&AUDITFOLDER''; */";'; put 'put ''proc cas;table.deleteRows result=r/ table={'' ;'; put 'put " caslib=''&base_lib'',name=''&base_dsn'',where=''1=1'',";'; put 'put " whereTable={caslib=''CASUSER'',name=''&delds''}";'; put 'put "};";'; put 'put "call symputx(''update_cnt'',r.RowsDeleted);";'; put 'put "quit;";'; put 'put "data;set casuser.&delds;putlog (_all_)(=);run;";'; put 'put ''%put &=update_cnt;'';'; put 'put "proc sql;drop table CASUSER.&delds;";'; put 'stop;'; put 'run;'; put '%end;'; put '%else %do;'; 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 'put ''%put update_cnt=&update_cnt;'';'; put 'run;'; put '%end;'; 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_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_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 '/* sysname can be ''Schema/Owner'' or just ''Schema'' (eg snowflake) */'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=:''Schema'''; 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_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 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 ')/des=''ungraceful abort'' /*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_extr i extr_word outvar;'; put '%if %length(&str1)=0 %then %do;'; put '%put &sysmacroname: str1 is empty, nothing to compare;'; put '%return;'; put '%end;'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%if %sysfunc(indexw(%superq(str2),%superq(extr_word)))=0 %then'; put '%let outvar=&outvar &extr_word;'; put '%end;'; put '/* send out the result without any surrounding whitespace */'; put '%do;&outvar%end;'; 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) format=32. into: maxkey trimmed'; put '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=%sysevalf(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%sysevalf(&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=%sysevalf(&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 %sysevalf(&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="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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(),8.6);'; 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 mp_rowhash('; put 'md5_col='; put ',cvars='; put ',nvars='; put ');'; put '/* DATA step temp variables use five leading underscores. The names'; put 'are generated at macro invocation to avoid clashing with data columns. */'; put '%local state digest pair numtext normal i chars nums;'; put '%let state=%mf_getuniquename(prefix=_____state_);'; put '%let digest=%mf_getuniquename(prefix=_____digest_);'; put '%let pair=%mf_getuniquename(prefix=_____pair_);'; put '%let numtext=%mf_getuniquename(prefix=_____numtext_);'; put '%let normal=%mf_getuniquename(prefix=_____normal_);'; put '%let i=%mf_getuniquename(prefix=_____i_);'; put '%let chars=%mf_getuniquename(prefix=_____chars_);'; put '%let nums=%mf_getuniquename(prefix=_____nums_);'; put 'length &state $16'; put '&digest $16'; put '&pair $32'; put '&numtext $64'; put '&normal &i 8;'; put 'if _n_=1 then call missing(&state,&digest,&pair,&numtext,&normal,&i);'; put 'drop &state &digest &pair &numtext &normal &i;'; put '/* Versioned seed prevents confusion with other hashing schemes. */'; put '&state = md5(''DC HASH v2'');'; put '%if %length(&cvars)>0 %then %do;'; put 'array &chars{*} $ &cvars;'; put 'do &i = 1 to dim(&chars);'; put '/* Leading blanks are retained. */'; put '&digest = md5(trimn(&chars[&i]));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '%if %length(&nvars)>0 %then %do;'; put 'array &nums{*} &nvars;'; put 'do &i = 1 to dim(&nums);'; put '/*'; put 'multiply-by-one for consistent cross-system precision.'; put 'Ignore null to protect SAS special missing values.'; put 'Cannot use IFN() as it evaluates both sides'; put '*/'; put 'if missing(&nums[&i]) then &normal = &nums[&i];'; put 'else &normal = &nums[&i] * 1;'; put '&numtext = put(&normal, binary64.);'; put '&digest = md5(trim(&numtext));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '&md5_col = put(&state, $hex32.);'; put '%mend mp_rowhash;'; 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=33;'; 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 %length(&CLOSE_VARS)>0 and (&engine_type=REDSHIFT or &engine_type=POSTGRES'; put 'or &engine_type=SNOW or &engine_type=SASIOSNF)'; 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 hash_char_vars hash_num_vars ;'; 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 '/* Character variables are hashed separately from numerics so that the'; put 'iterative hash can be built with arrays rather than by concatenating'; put 'hundreds of 32-byte hex strings. */'; put 'select name into: hash_char_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type in (2,6)'; put 'and upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select name into: hash_num_vars separated by '' '''; put 'from work.bitemp_cols'; put 'where type not in (2,6)'; put 'and 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 &=hash_char_vars;'; put '%put &=hash_num_vars;'; 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___) or %index(%quote(&cols),_____) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___" or "_____".%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 '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 ',AUDITFOLDER=&dc_staging_area/&ETLSOURCE'; 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 '%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_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%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 '%let temp_table=%upcase(%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 in-db empty table with PK + MD5 only */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&temp_table'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; 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 '%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 '/* inherit remote length to handle byte expansion */'; put 'if 0 then set &base_lib..&temp_table(keep=&md5_col);'; 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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 hash_char_vars=&hash_char_vars;'; put '%put hash_num_vars=&hash_num_vars;'; put 'data work.bitemp1_current(drop=___TMP___NEW_FLG);'; put 'set work.bitemp0_base(drop=&md5_col);'; put 'if ___TMP___NEW_FLG=0;'; put 'length &md5_col $32;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&hash_num_vars'; put ')'; put 'run;'; 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 '/* For bitemporal we also include the business dates in the comparison hash.'; put 'The business dates are passed as prefix numerics so that both lookup and'; put 'update tables use exactly the same hashing order. */'; put 'data work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.bitemp0_base;'; put '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%mp_rowhash(md5_col=&md5_col'; put ',cvars=&hash_char_vars'; put ',nvars=&bus_from &bus_to &hash_num_vars'; put ')'; 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 '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; 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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 or &engine_type=SNOW'; put 'or &engine_type=SASIOSNF'; put '%then %do;'; put '%let innertable=%upcase(%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 '%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;'; put 'exec (create transient table &baselib_schema.&innertable'; put 'like &baselib_schema.&base_dsn'; put ') by myAlias;'; put '%end;'; put '%else %do;'; put 'exec (create table &innertable'; put '(like &baselib_schema.&base_dsn)'; put ') by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; 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 '%put Not using passthrough for *&engine_type* engine;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',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 'or &engine_type=SNOW or &engine_type=SASIOSNF'; 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 &bus_from'; 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 '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; 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 '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; 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 dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs(lib=0);'; 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 &lib ne 0 %then %do;'; put 'where upcase(libraryref)="%upcase(&lib)";'; put '%end;'; 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 '%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 '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib indexes extraction)'; put ')'; 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 work.sumcat as'; put 'select libname as libref,'; put 'count(distinct memname) as catalog_cnt'; put 'from dictionary.catalogs'; put 'where upcase(libname)="&lib"'; put 'group by 1;'; put 'create table work.sumdsn as select'; put 'libref'; put ',sum(filesize) as libsize'; put ',count(*) as table_cnt'; put 'from statustabs'; put 'group by 1;'; put 'create table work.libs as'; put 'select libref from work.sumcat'; put 'union'; put 'select libref from work.sumdsn;'; put 'create table work.statuslibs as'; put 'select a.libref,'; put 'b.libsize,'; put 'b.table_cnt,'; put 'c.catalog_cnt'; put 'from work.libs a'; put 'left join work.sumdsn b'; put 'on a.libref=b.libref'; put 'left join work.sumcat c'; put 'on a.libref=c.libref;'; 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 mpe_refreshcatalogs(lib,cat=#all);'; put '%let lib=%upcase(&lib);'; put '%let cat=%upcase(&cat);'; put '%put running &sysmacroname &lib for &cat;'; put 'proc sql;'; put 'create table work.catdata as'; put 'select libname as libref,'; put 'memname,'; put 'objname,'; put 'objtype,'; put 'objdesc,'; put 'created,'; put 'modified,'; put 'alias,'; put 'level'; put 'from dictionary.catalogs'; put 'where upcase(libname)="&lib"'; put '%if &cat ne #ALL %then %do;'; put 'and upcase(memname)="&cat"'; put '%end;'; put ';'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib objects extraction)'; put ')'; put '/* load mpe_datacatalog_CATS */'; put 'proc sql;'; put 'create table datacats as select distinct libref,memname from catdata;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_CATS'; put ',append_dsn=datacats'; put ',PK=LIBREF MEMNAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '/* load mpe_datacatalog_objsS */'; put 'proc sql;'; put 'create table dataobjs as'; put 'select distinct libref,'; put 'memname,'; put 'objname,'; put 'objtype,'; put 'objdesc,'; put 'alias'; put 'from catdata;'; put 'quit;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_OBJS'; put ',append_dsn=dataobjs'; put ',PK=LIBREF MEMNAME OBJNAME OBJTYPE'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF MEMNAME'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '%put load mpe_datastatus_OBJS;'; put 'proc sql;'; put 'create table statusobjs as'; put 'select distinct libref,'; put 'memname,'; put 'objname,'; put 'objtype,'; put 'created,'; put 'modified,'; put 'level'; put 'from catdata;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_OBJS'; put ',append_dsn=statusobjs'; put ',PK=LIBREF MEMNAME OBJNAME OBJTYPE'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF MEMNAME'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '%put load mpe_datastatus_cats;'; put 'proc sql;'; put 'create table statuscats as'; put 'select libref,'; put 'memname,'; put 'count(*) as nobjs,'; put 'min(created) as created,'; put 'max(modified) as modified'; put 'from catdata'; put 'group by 1,2;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_cats'; put ',append_dsn=statuscats'; put ',PK=LIBREF MEMNAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &cat = #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '%mend mpe_refreshcatalogs;'; put '%macro dc_refreshcatalog(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(lib=&libref)'; put '%mpe_refreshtables(&libref)'; put '%mpe_refreshcatalogs(&libref)'; put '%end;'; put '%else %do;'; put '%mpe_refreshlibs()'; put 'filename executor catalog ''work.code.code.source'';'; put 'data libraries;'; put 'set &mpelib..mpe_datacatalog_libs;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'file executor;'; put 'str=cats(''%mpe_refreshtables('',libref,'')'');'; put 'put str;'; put 'str=cats(''%mpe_refreshcatalogs('',libref,'')'');'; put 'put str;'; put 'putlog str;'; put 'run;'; put '%inc executor;'; put '%end;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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 'b.catalog_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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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..mpe_security table.'; 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'; 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 an admin */'; put '%let admin_check=0;'; put 'proc sql noprint;'; put 'select count(*) into: admin_check'; put 'from groups'; put 'where groupname="&mpeadmins";'; put '/* check if user is registered or not */'; put '%let isRegistered=0;'; 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 'isadmin=&admin_check;'; 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 '/* session timezone. Blank TIMEZONE means timestamps are stamped with the'; put 'raw OS clock, which is UTC in Viya containers when the option is unset. */'; put 'length timezone systimezoneident $32;'; put 'timezone=getoption(''TIMEZONE'');'; put 'systimezoneident=symget(''SYSTIMEZONEIDENT'');'; put 'systimezoneoffset=symget(''SYSTIMEZONEOFFSET'');'; 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 all_cnt;'; 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 'union'; 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 '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.DSN=''*ALL*'''; 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 'proc sql;'; put 'create table work.xlmaps as'; put 'select distinct a.XLMAP_ID'; put ',b.XLMAP_DESCRIPTION'; put ',coalescec(b.XLMAP_TARGETLIBDS,"&mpelib..MPE_XLMAP_DATA")'; put 'as XLMAP_TARGETLIBDS'; put 'from &mpelib..MPE_XLMAP_RULES a'; put 'left join &mpelib..MPE_XLMAP_INFO(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.XLMAP_ID=b.XLMAP_ID'; put 'where &dc_dttmtfmt. lt a.tx_to;'; put '/* we don''t want the XLMAP target datasets to be directly editable */'; put 'delete from sasdatasets'; put 'where cats(libref,''.'',dsn) in (select XLMAP_TARGETLIBDS from xlmaps);'; put '%webout(OPEN)'; put '%webout(OBJ,sasDatasets)'; put '%webout(OBJ,saslibs)'; put '%webout(OBJ,globvars)'; put '%webout(ARR,xlmaps)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=tokenauth; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%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 mv_tokenauth(inds=mv_registerclient'; put ',outds=mv_tokenauth'; put ',client_id=someclient'; put ',client_secret=somesecret'; put ',grant_type=authorization_code'; put ',code='; put ',user='; put ',pass='; put ',access_token_var=ACCESS_TOKEN'; put ',refresh_token_var=REFRESH_TOKEN'; put ',base_uri=#NOTSET#'; put ');'; put '%global &access_token_var &refresh_token_var;'; put '%local fref1 fref2 libref;'; put '/* test the validity of inputs */'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%if %mf_existds(&inds) %then %do;'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''client_id'',client_id,''l'');'; put 'call symputx(''client_secret'',client_secret,''l'');'; put 'if not missing(auth_code) then call symputx(''code'',auth_code,''l'');'; put 'run;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type=authorization_code and %str(&code)=%str())'; put ',mac=&sysmacroname'; put ',msg=%str(Authorization code required)'; put ')'; put '%mp_abort(iftrue=('; put '&grant_type=password and (%str(&user)=%str() or %str(&pass)=%str()))'; put ',mac=&sysmacroname'; put ',msg=%str(username / password required)'; put ')'; put '/* prepare appropriate grant type */'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'if "&grant_type"=''authorization_code'' then string=cats('; put '''grant_type=authorization_code&code='',symget(''code''));'; put 'else string=cats(''grant_type=password&username='',symget(''user'')'; put ',''&password='',symget(pass));'; put 'call symputx(''grantstring'',cats("''",string,"''"));'; put 'run;'; put '/*data _null_;infile &fref1;input;put _infile_;run;*/'; put '/**'; put '* Request access token'; put '*/'; put '%if &base_uri=#NOTSET# %then %let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%let fref2=%mf_getuniquefileref();'; put 'proc http method=''POST'' in=&grantstring out=&fref2'; put 'url="&base_uri/SASLogon/oauth/token"'; put 'WEBUSERNAME="&client_id"'; put 'WEBPASSWORD="&client_secret"'; put 'AUTH_BASIC;'; put 'headers "Accept"="application/json"'; put '"Content-Type"="application/x-www-form-urlencoded";'; put 'run;'; put '/*data _null_;infile &fref2;input;put _infile_;run;*/'; put '/**'; put '* Extract access / refresh tokens'; put '*/'; put '%let libref=%mf_getuniquelibref();'; put 'libname &libref JSON fileref=&fref2;'; put '/* extract the tokens */'; put 'data &outds;'; put 'set &libref..root;'; put 'call symputx("&access_token_var",access_token);'; put 'call symputx("&refresh_token_var",refresh_token);'; put 'run;'; put 'libname &libref clear;'; put 'filename &fref1 clear;'; put 'filename &fref2 clear;'; put '%mend mv_tokenauth;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file tokenauth.sas'; put '@brief Get initial tokens using an auth code - DEPRECATED'; put '

SAS Macros

'; put '@li mv_tokenauth.sas'; put '@author 4GL Apps Ltd'; 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 '%webout(FETCH)'; put 'data _null_;'; put 'set work.fromjs;'; put 'call symputx(''viyasettings'',viyasettings);'; put 'call symputx(''client_id'',client_id);'; put 'call symputx(''auth_code'',auth_code);'; put 'run;'; put 'data authme;'; put '/* get client info from special location */'; put 'infile "&viyasettings" dsd;'; put 'input client_secret:$100.;'; put 'client_id="&client_id";'; put 'auth_code="&auth_code";'; put 'run;'; put '/* get tokens */'; put '%mv_tokenauth(inds=authme, outds=fromSAS(keep=access_token refresh_token))'; put '/* send back to frontend */'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let service=tokenrefresh; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%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 mv_tokenrefresh(inds=mv_registerclient'; put ',outds=mv_tokenrefresh'; put ',client_id=someclient'; put ',client_secret=somesecret'; put ',grant_type=authorization_code'; put ',user='; put ',pass='; put ',access_token_var=ACCESS_TOKEN'; put ',refresh_token_var=REFRESH_TOKEN'; put ');'; put '%global &access_token_var &refresh_token_var;'; put 'options noquotelenmax;'; put '%local fref1 libref;'; put '/* test the validity of inputs */'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put '%mp_abort('; put 'iftrue=(&grant_type=password and (%str(&user)=%str() or %str(&pass)=%str()))'; put ',mac=&sysmacroname'; put ',msg=%str(username / password required)'; put ')'; put '%if %mf_existds(&inds) %then %do;'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''client_id'',client_id,''l'');'; put 'call symputx(''client_secret'',client_secret,''l'');'; put 'call symputx("&refresh_token_var",&refresh_token_var,''l'');'; put 'run;'; put '%end;'; put '%mp_abort(iftrue=(%str(&client_id)=%str() or %str(&client_secret)=%str())'; put ',mac=&sysmacroname'; put ',msg=%str(client / secret must both be provided)'; put ')'; put '/**'; put '* Request access token'; put '*/'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '%let fref1=%mf_getuniquefileref();'; put 'proc http method=''POST'''; put 'in="grant_type=refresh_token%nrstr(&)refresh_token=&&&refresh_token_var"'; put 'out=&fref1'; put 'url="&base_uri/SASLogon/oauth/token"'; put 'WEBUSERNAME="&client_id"'; put 'WEBPASSWORD="&client_secret"'; put 'AUTH_BASIC;'; put 'headers "Accept"="application/json"'; put '"Content-Type"="application/x-www-form-urlencoded";'; put 'run;'; put '/*data _null_;infile &fref1;input;put _infile_;run;*/'; put '/**'; put '* Extract access / refresh tokens'; put '*/'; put '%let libref=%mf_getuniquelibref();'; put 'libname &libref JSON fileref=&fref1;'; put '/* extract the token */'; put 'data &outds;'; put 'set &libref..root;'; put 'call symputx("&access_token_var",access_token);'; put 'call symputx("&refresh_token_var",refresh_token);'; put 'run;'; put 'libname &libref clear;'; put 'filename &fref1 clear;'; put '%mend mv_tokenrefresh;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file tokenauth.sas'; put '@brief Get initial tokens using an auth code - DEPRECATED'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li mv_tokenrefresh.sas'; put '@author 4GL Apps Ltd'; 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 '%webout(FETCH)'; put 'data _null_;'; put 'set work.fromjs;'; put 'call symputx(''viyasettings'',viyasettings);'; put 'call symputx(''client_id'',client_id);'; put 'call symputx(''refresh_token'',refresh_token);'; put 'run;'; put 'data authme;'; put '/* get client info from special location */'; put 'infile "&viyasettings" dsd;'; put 'input client_secret:$100.;'; put 'client_id="&client_id";'; put 'refresh_token="&refresh_token";'; put 'run;'; put '/* get tokens */'; put '%mv_tokenrefresh(inds=authme, outds=fromSAS(keep=refresh_token access_token))'; put '/* send back to frontend */'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '%macro mpe_validatecol(incol,rule,outcol);'; put '%if &rule=LIBDS %then %do;'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename(prefix=cat);'; put '&tempcol=strip(&incol);'; put '/* permit the format-catalog form: LIBREF.CATALOGNAME-FC, exactly */'; put 'if length(&tempcol)>3'; put 'and upcase(substr(&tempcol,length(&tempcol)-2,3))=''-FC'''; put 'then &tempcol=substr(&tempcol,1,length(&tempcol)-3);'; put '%mp_validatecol(&tempcol,LIBDS,&outcol)'; put 'drop &tempcol;'; put '%end;'; put '%else %mp_validatecol(&incol,&rule,&outcol);'; put '%mend mpe_validatecol;'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_assignlib;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; 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,fetchobs=1'; put ')/*/STORE SOURCE*/;'; put '%local dsid;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%if (&dsid) %then %do;'; put '%local rc &variable;'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetchobs(&dsid,&fetchobs));'; put '%if (&rc ne 0) %then %do;'; put '%put NOTE: Problem reading obs &fetchobs from &libds..;'; put '%put %sysfunc(sysmsg());'; put '/* Coerce an rc value of -1 (read past end of data) to a 4'; put 'that, in SAS condition code terms, represents the sysmsg'; put 'w@rning it generates. */'; put '%if &rc eq -1 %then %let rc = 4;'; put '/* And update SYSCC if the &rc value is higher */'; put '%let syscc = %sysfunc(max(&syscc,&rc));'; put '%end;'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%else %do;'; put '%put %sysfunc(sysmsg());'; put '%let syscc = %sysfunc(max(&syscc,%sysfunc(sysrc())));'; put '%end;'; put '%mend mf_getvalue;'; 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_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 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 '*/'; 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 end=last;'; put 'length reason_cd $4032 vtype vtype2 $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 'retain dsid;'; put 'if _n_=1 then 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 'goto endstep;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Could not open &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'stop;'; 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'' & OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'') then do;'; put 'if 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 'else if subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if OPERATOR_NM =''BETWEEN'' and subpad(upcase(tmp),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put '/* is not valid syntax for IN or NOT IN */'; put 'vnum=varnum(dsid,subpad(tmp,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if vtype=''C'' and subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Char Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog (_all_)(=);'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'endstep:'; put 'if last then rc=close(dsid);'; 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_rowhash('; put 'md5_col='; put ',cvars='; put ',nvars='; put ');'; put '/* DATA step temp variables use five leading underscores. The names'; put 'are generated at macro invocation to avoid clashing with data columns. */'; put '%local state digest pair numtext normal i chars nums;'; put '%let state=%mf_getuniquename(prefix=_____state_);'; put '%let digest=%mf_getuniquename(prefix=_____digest_);'; put '%let pair=%mf_getuniquename(prefix=_____pair_);'; put '%let numtext=%mf_getuniquename(prefix=_____numtext_);'; put '%let normal=%mf_getuniquename(prefix=_____normal_);'; put '%let i=%mf_getuniquename(prefix=_____i_);'; put '%let chars=%mf_getuniquename(prefix=_____chars_);'; put '%let nums=%mf_getuniquename(prefix=_____nums_);'; put 'length &state $16'; put '&digest $16'; put '&pair $32'; put '&numtext $64'; put '&normal &i 8;'; put 'if _n_=1 then call missing(&state,&digest,&pair,&numtext,&normal,&i);'; put 'drop &state &digest &pair &numtext &normal &i;'; put '/* Versioned seed prevents confusion with other hashing schemes. */'; put '&state = md5(''DC HASH v2'');'; put '%if %length(&cvars)>0 %then %do;'; put 'array &chars{*} $ &cvars;'; put 'do &i = 1 to dim(&chars);'; put '/* Leading blanks are retained. */'; put '&digest = md5(trimn(&chars[&i]));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '%if %length(&nvars)>0 %then %do;'; put 'array &nums{*} &nvars;'; put 'do &i = 1 to dim(&nums);'; put '/*'; put 'multiply-by-one for consistent cross-system precision.'; put 'Ignore null to protect SAS special missing values.'; put 'Cannot use IFN() as it evaluates both sides'; put '*/'; put 'if missing(&nums[&i]) then &normal = &nums[&i];'; put 'else &normal = &nums[&i] * 1;'; put '&numtext = put(&normal, binary64.);'; put '&digest = md5(trim(&numtext));'; put 'substr(&pair, 1, 16) = &state;'; put 'substr(&pair, 17, 16) = &digest;'; put '&state = md5(&pair);'; put 'end;'; put '%end;'; put '&md5_col = put(&state, $hex32.);'; put '%mend mp_rowhash;'; 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 '%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 - listed first so it is hashed first */'; put '%mp_rowhash('; put 'md5_col=&keyvar'; put ',cvars=&prevkeyvar %mf_getvarlist(&libds,typefilter=C)'; 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 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; 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_secs)) 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 cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; 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 '%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) format=32. into: maxkey trimmed'; put '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=%sysevalf(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%sysevalf(&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=%sysevalf(&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 %sysevalf(&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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mp_abort.sas'; put '@li mp_filterstore.sas'; put '@li mpe_validatecol.sas'; put '@li removecolsfromwork.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '* filter_table is a request input that flows into executable positions'; put '* (mp_filterstore libds=, which interpolates it into SQL). It is read'; put '* from the IWANT table in a data step (never re-resolved) and validated'; put '* before use - mf_getvalue would re-resolve any macro content in the'; put '* value before this code ran. A format catalog is referenced as'; put '* LIBREF.CATALOGNAME-FC, so that form is accepted too.'; put '*/'; put '%let ds=;'; put '%let is_libds=0;'; put 'data _null_;'; put 'length _ds $64;'; put 'set work.iwant;'; put '_ds=filter_table;'; put '%mpe_validatecol(_ds,LIBDS,is_libds)'; put 'if is_libds=0 then putlog ''ERR'' ''OR: Invalid filter_table:'' _ds;'; put 'call symputx(''is_libds'',is_libds,''l'');'; put 'if is_libds=1 then call symputx(''ds'',upcase(_ds),''l'');'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&is_libds ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid filter_table)'; put ')'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 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 mpe_dsmeta(libds, outds=dsmeta);'; put '%local ddsd ddld notes lenstmt memname;'; put '%let lenstmt=length ods_table $18 name $100 value $1000;'; put '%let libds=%upcase(&libds);'; put '%if "%scan(&libds,2,-)" ne "FC" %then %do;'; put '%let memname=%scan(&libds,2,.);'; put '%mp_dsmeta(&libds, outds=&outds)'; put '%end;'; put '%else %do;'; put '%let memname=%scan(&libds,2,.-);'; put 'data &outds;'; put '&lenstmt;'; put 'set sashelp.vcatalg;'; put 'ods_table=cats(objtype);'; put 'name=cats(objname);'; put 'value=catx('' '',objdesc,''(modified:'',put(modified,datetime19.),'')'');'; put 'where libname="%scan(&libds,1,.)" and memname="&memname";'; put 'keep ods_table name value;'; put 'run;'; put 'proc sort; by ods_table name;run;'; put '%end;'; put 'data _null_;'; put 'set &mpelib..mpe_datadictionary;'; put 'where &dc_dttmtfmt < tx_to & dd_source="&memname" & dd_type=''TABLE'';'; put 'call symputx(''ddsd'',dd_shortdesc,''l'');'; put 'call symputx(''ddld'',dd_longdesc,''l'');'; put 'run;'; put 'data &outds;'; put '&lenstmt;'; put 'if last then do;'; put 'ODS_TABLE=''MPE_DATADICTIONARY'';'; put 'NAME=''DD_SHORTDESC'';'; put 'VALUE="&ddsd";'; put 'output;'; put 'NAME=''DD_LONGDESC'';'; put 'VALUE="&ddld";'; put 'output;'; put 'end;'; put 'set &outds end=last;'; put 'output;'; put 'run;'; put 'data _data_;'; put 'set &mpelib..mpe_tables;'; put 'where libref="%scan(&libds,1,.)"'; put '& dsn="%scan(&libds,2,.)"'; put '& &dc_dttmtfmt 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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; put '%mend dc_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 mfv_getcaslib(lib);'; put '%local dsid rc result;'; put '%let dsid=%sysfunc(open(sashelp.vlibnam('; put 'where=(libname="%upcase(&lib)" and sysname="Caslib")'; put ')));'; put '%if &dsid %then %do;'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%if &rc=0 %then'; put '%let result=%sysfunc('; put 'getvarc(&dsid,%sysfunc(varnum(&dsid,SYSVALUE)))'; put ');'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&result'; put '%mend mfv_getcaslib;'; put '%macro dc_casload(libds, mdebug=0);'; put '%local lib eng caslib ds _exists;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=%str(syscc=&syscc on macro entry)'; put ')'; put '%let lib=%scan(&libds,1,.);'; put '%let eng=%mf_getengine(&lib);'; put '%mp_abort(iftrue= (X&eng.X=XX)'; put ',mac=&_program'; put ',msg=%str(Library &lib is not assigned)'; put ')'; put '%if &eng ne CAS %then %return;'; put '%let caslib=%mfv_getcaslib(lib=&lib);'; put '%let ds=%scan(&libds,2,.);'; put '%if &mdebug=1 %then %put _local_;'; put '/* ---- existence check ------------------------------------------------- */'; put 'proc cas;'; put 'table.tableExists result=r /'; put 'caslib="&caslib"'; put 'name="&ds";'; put '%if &mdebug=1 %then %do;'; put 'print r;'; put '%end;'; put 'if r.exists > 0 then call symputx(''_exists'', ''1'', ''L'');'; put 'else call symputx(''_exists'', ''0'', ''L'');'; put 'quit;'; put '/* ---- already loaded: skip -------------------------------------------- */'; put '%if &_exists=1 %then %do;'; put '%put NOTE: Table &caslib..&ds already loaded - skipping;'; put '%return;'; put '%end;'; put 'proc casutil;'; put 'load casdata="&ds..sashdat"'; put 'incaslib="&caslib"'; put 'casout="&ds"'; put 'outcaslib="&caslib"'; put 'promote;'; put 'quit;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0),'; put 'msg=%str(Load failed for &caslib..&ds)'; put ')'; put '%put NOTE: Table &caslib..&ds loaded and promoted;'; put '%mend dc_casload;'; put '%macro dc_createdataset(libds=mm_getlibs,outds=viewdata);'; put 'data &outds;'; put 'var1=''Table'';'; put 'var2="&libds";'; put 'var3="does not exist!";'; put 'run;'; put '%mend dc_createdataset;'; put '%macro dc_gettableid(libref='; put ',ds='; put ',outds=);'; put 'data &outds;'; put 'tableuri='''';'; put 'tablename="&ds";'; put 'run;'; 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 ')/des=''ungraceful abort'' /*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 'TYPE char(1) label='; put '''Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label='; put '''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; 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 ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; 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" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=1;'; put 'else fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; 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'' or format=:''NLDATM'''; put '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'' or format=:''NLDATE'''; 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 '/* sysname can be ''Schema/Owner'' or just ''Schema'' (eg snowflake) */'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=:''Schema'''; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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:best.|SEARCHTYPE:$4|SEARCHVAL:$100|'; put '|---|---|---|---'; put '|DC258467.MPE_X_TEST|-1|CHAR|Some String|'; put 'No input column may be longer than the length declared in this service -'; put 'LIBDS 41, SEARCHTYPE 4, SEARCHVAL 100. An input column longer than the'; put 'declared length stops the step with "Multiple lengths were specified for'; put 'the variable ...", so the SASjs adapter sends the $char form (eg $char4.),'; put 'which also preserves any leading blanks.'; put '

Service Outputs

'; put '
cols
'; put '@li DDTYPE - C=CHARACTER, N=NUMERIC, else DATE / TIME / DATETIME'; put '@li FORMAT'; put '@li LABEL'; put '@li LENGTH'; put '@li NAME'; put '@li TYPE'; 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 '
versions
'; put 'history of DC versions for this particular table'; put '
viewdata
'; put 'The raw data from the target table.'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_casload.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_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_dsmeta.sas'; put '@li mpe_getversions.sas'; put '@li mpe_filtermaster.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; 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 '/* 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 'call symputx(''orig_libds'',libds);'; 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 '%dc_casload(&libds)'; 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 not %symexist(DC_MAXOBS_WEBVIEW) %then %do;'; put '%put NOTE:;%put NOTE- DC_MAXOBS_WEBVIEW not found!;'; put '%put NOTE- Please add to &mpelib..MPE_CONFIG table;'; put '%put NOTE-;%put NOTE-;'; put '%global DC_MAXOBS_WEBVIEW;'; put '%let DC_MAXOBS_WEBVIEW=500;'; put '%end;'; 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 'proc datasets lib=work noprint;'; put 'modify FMTEXTRACT;'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; 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_>&DC_MAXOBS_WEBVIEW 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=&DC_MAXOBS_WEBVIEW'; 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=&DC_MAXOBS_WEBVIEW'; 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_<=&DC_MAXOBS_WEBVIEW;'; 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 '/* make filtref / work.query / work.groups to avoid downstream issues */'; put 'filename filtref temp;'; put 'data work.query;'; put 'file filtref;'; put 'x=0;'; put 'put x;'; put 'run;'; put 'data work.groups;'; put 'length groupuri groupname $32 groupdesc $128 ;'; put 'call missing (of _all_);'; put 'output;'; put 'stop;'; 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=&DC_MAXOBS_WEBVIEW;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mp_getcols(&libds, outds=cols1)'; put '/* trim COLS payload in the SQL below - DDTYPE C=CHARACTER N=NUMERIC'; put '(dates kept in full), VARNUM dropped (client relies on column order,'; put 'not position) */'; put 'proc sql;'; put 'create table cols as'; put 'select a.name'; put ',a.type'; put ',a.length'; put ',a.format'; put ',a.fmtname'; put ',case a.ddtype'; put 'when ''CHARACTER'' then ''C'''; put 'when ''NUMERIC'' then ''N'''; put 'else a.ddtype end as ddtype'; put ',coalesce(b.dd_shortdesc,a.label,a.name) as label'; put 'from cols1 a'; put 'left join &mpelib..mpe_datadictionary'; put '(where=(&dc_dttmtfmt. < tx_to'; put 'and dd_source ? %upcase("&orig_libds")'; put 'and dd_type=''COLUMN'')) b'; put 'on scan(b.dd_source,-1,''.'')=upcase(a.name);'; put 'quit;'; put '%mpe_dsmeta(&orig_libds, outds=dsmeta)'; put '%mpe_getversions(&mpelib,'; put '%scan(&orig_libds,1,.),'; put '%scan(&orig_libds,2,.),'; put 'outds=versions'; put ')'; 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,versions)'; put '%webout(OBJ,viewData2,fmt=Y,missing=STRING,showmeta=YES,dslabel=viewdata)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; 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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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 '/* a plain $ informat strips leading blanks - use $char instead */'; put 'call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; 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'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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,missing=STRING)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusergroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%mv_getusergroups(&user,outds=&outds)'; put 'data &outds;'; put 'length groupname groupdesc $256;'; put 'set &outds(rename=(id=groupname name=groupdesc));'; put 'run;'; 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 dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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 'coalesce(b.catalog_cnt,0) as catalog_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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 SOREN 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=ISLIB %then %do;'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISLIB";'; 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=ISNAME %then %do;'; put '/* match a valid SAS name (V7 rules) */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "OR: Invalid expression for ISNAME";'; 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=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 ''ERR'' +(-1) "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 SAS format*/'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^(?:[_a-z\$]\w{0,31}|[0-9]+)\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog ''ERR'' +(-1) "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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|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=raw_value) );'; put 'run;'; put 'data work.DYNAMIC_VALUES;'; put 'set work.DYNAMIC_VALUES;'; put 'format raw_value;'; put 'raw_value=upcase(raw_value);'; put 'run;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|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 upcase(libraryref) as raw_value'; put 'from work.mm_getLibs'; put 'order by 1;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|C||"HKD"|'; put '**/'; put '/* send back the raw and formatted values */'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct upcase(libref) as raw_value'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. < tx_to'; put 'order by 1;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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. raw_value is unformatted haracter/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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|FORCED_VALUE|'; put '|---|---|---|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||.|'; put '|1|DISCOUNT_RT|N|0.4||0|'; put '|1|DISCOUNT_RT|N|0.3||1|'; put '|1|CURRENCY_SYMBOL|C||"GBP"|.|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|.|'; put '|2|DISCOUNT_RT|N|0.5||.|'; put '|2|DISCOUNT_RT|N|0.4||1|'; put '|2|CURRENCY_SYMBOL|C||"EUR"|.|'; put '|2|CURRENCY_SYMBOL|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 );'; put 'set work.source end=last;'; put 'by libref;'; put 'if last.libref then do;'; put 'display_index+1;'; put 'raw_value=libref;'; put 'output;'; put 'end;'; put 'if last then do;'; put 'display_index+1;'; put 'raw_value=''*ALL*'';'; put 'output;'; put 'end;'; put 'run;'; put 'data work.dynamic_extended_values(keep=display_index extra_col_name display_type'; put '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 'forced_value=0;'; put 'if first.libref then display_index+1;'; put 'if last.libref then do;'; put 'raw_value_char=''*ALL*'';'; put 'forced_value=1;'; put 'output;'; put 'end;'; put 'else output;'; put 'run;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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|EXTRA_COL_NAME:$32.|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|C||"HKD"|'; 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 upcase(memname) as raw_value'; put 'from work.source;'; put 'data work.DYNAMIC_VALUES;'; put 'set work.members;'; put 'display_index=_n_;'; put 'run;'; put 'proc sql;'; put 'create table work.dynamic_extended_values as'; put 'select a.display_index'; put ',a.raw_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.raw_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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put 'proc sql;'; put 'create table &outds as'; put 'select distinct libname as LibraryRef'; put ',libname as LibraryName length=256'; put ',engine'; put ','''' as libraryid length=17'; put 'from dictionary.libnames'; put 'where libname not in (''WORK'',''SASUSER'',''CASUSER'');'; put 'insert into &syslast values ("&DC_LIBREF", "&DC_LIBNAME",'''',''V9'');'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.'; put '|RAW_VALUE:??|'; put '|---|'; put '|44|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct some_num as raw_value'; put 'from &libds'; put 'order by 1;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getgroups(access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=work.viyagroups'; put ');'; put '%local oauth_bearer base_uri fname1 libref1;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '/* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/groups?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getgroups;'; put '%macro dc_getgroups(outds=mm_getgroups);'; put '%mv_getgroups(outds=&outds)'; put 'proc sort'; put 'data=&outds(rename=(id=groupuri name=groupname description=groupdesc))'; put 'out=&outds (keep=groupuri groupname groupdesc);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|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 groupuri as raw_value'; put 'from work.groups'; put 'order by 1;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%if %length(&passthru)>0 %then %do;'; put 'proc sql;'; put 'connect using &libref as &passthru;'; put '%end;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|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 cls_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 upcase(name) as raw_value'; put 'from work.members'; put 'where MemType=''DATA'''; put 'order by 1;'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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.|RAW_VALUE|'; put '|---|---|'; put '|1|77.43|'; put '|2|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_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|'; put '|1|DISCOUNT_RT|N|0.5||'; put '|1|DISCOUNT_RT|N|0.4||'; put '|1|DISCOUNT_RT|N|0.3||'; put '|1|CURRENCY_SYMBOL|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|C||"RSD"|'; put '|2|DISCOUNT_RT|N|0.5||'; put '|2|DISCOUNT_RT|N|0.4||'; put '|2|CURRENCY_SYMBOL|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|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 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let path=services/viya_users; %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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusergroups(user'; put ',outds=work.mv_getusergroups'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users/&user/memberships?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: User &user not found!!;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%end;'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 mv_getusergroups.sas'; put '@li mf_getuser.sas'; put '@version 3.4'; put '@author 4GL Apps Ltd'; put '**/'; put '%mv_getusergroups(%mf_getuser(),outds=groups)'; put 'proc sort data=groups(rename=(id=uri name=groupname providerid=groupdesc))'; put 'out=groups;'; put 'by groupname;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,groups)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getusers(outds=work.mv_getusers'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%put &sysmacroname: grant_type=&grant_type;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put '%let libref1=%mf_getuniquelibref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/users?limit=10000";'; put '%if &grant_type=authorization_code %then %do;'; put 'headers "Authorization"="Bearer &&&access_token_var"'; put '"Accept"="application/json";'; put '%end;'; put '%else %do;'; put 'headers "Accept"="application/json";'; put '%end;'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'set &libref1..items;'; put 'run;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put 'libname &libref1 clear;'; put '%mend mv_getusers;'; put '%macro dc_getusers(outds=mm_getlibs);'; put '%mv_getusers(outds=&outds)'; put 'proc sort data=&outds(rename=(id=uri)) out=&outds(keep=uri name);'; put 'by name;'; put 'run;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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'; 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; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,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 '/* trim (not cats) so leading blanks are retained */'; put 'else &&name&i=''"''!!trim(&&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'; put '@brief Send data to/from the SAS Viya Job Execution Service'; put '@details This macro should be added to the start of each Job Execution'; put 'Service, **immediately** followed by a call to:'; put '%mv_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 '%mv_webout(OPEN)'; put '%mv_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mv_webout(OBJ,datasets) * Object format, easier to work with ;'; put '%mv_webout(CLOSE)'; put '@param [in] action Either OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [in] _webout= fileref for returning the json'; put '@param [out] fref=(_mvwtemp) Temp fileref to which to write the output'; 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 [in] stream=(Y) Change to N if not streaming to _webout'; 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 output JSON'; 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 '

SAS Macros

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

Related Macros

'; put '@li ms_webout.sas'; put '@li mm_webout.sas'; put '@version Viya 3.3'; put '@author Allan Bowe, source: https://github.com/sasjs/core'; put '**/'; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name'; put 'sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;'; put '%if %index("&_debug",log) %then %let _debug=128;'; put '%local i tempds table;'; put '%let action=%upcase(&action);'; put '%if &action=FETCH %then %do;'; put '%if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 128 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%if not %symexist(_webin_fileuri1) %then %do;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_fileuri1=&_webin_fileuri;'; put '%let _webin_name1=&_webin_name;'; put '%if &_EXECUTIONTASKS=true %then %do;'; put '/* TODO - remove this once SAS Track CS0409737 is resolved */'; put '/* links: https://github.com/sasjs/adapter/issues/884 */'; put '%if %upcase(&_webin_name)=_SASJS_NOOP %then %let _webin_file_count=0;'; put '%end;'; put '%end;'; put '/* if the sasjs_tables param is passed, we expect param based upload */'; put '%if %length(&sasjs_tables.X)>1 %then %do;'; put '/* convert data from macro variables to datasets */'; put '%do i=1 %to %sysfunc(countw(&sasjs_tables));'; put '%let table=%scan(&sasjs_tables,&i,%str( ));'; put '%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;'; put 'data _null_;'; put 'file "%sysfunc(pathname(work))/&table..csv" recfm=n;'; put 'retain nrflg 0;'; put 'length line $32767;'; put 'do i=1 to &&sasjs&i.data0;'; put 'if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");'; put 'else line=symget(cats("sasjs&i.data",i));'; put 'if i=1 and substr(line,1,7)=''%nrstr('' then do;'; put 'nrflg=1;'; put 'line=substr(line,8);'; put 'end;'; put 'if i=&&sasjs&i.data0 and nrflg=1 then do;'; put 'line=substr(line,1,length(line)-1);'; put 'end;'; put 'put line +(-1) @;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put 'list;'; put 'data work.&table;'; put 'infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd'; put 'termstr=crlf;'; put 'input &input_statement;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do i=1 %to &_webin_file_count;'; put '/* read in any files that are sent */'; put '%if &_EXECUTIONTASKS=true %then %do;'; put 'filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;'; put '%end;'; put '%else %do;'; put 'filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;'; put '%end;'; put 'data _null_;'; put 'infile indata termstr=crlf lrecl=32767;'; put 'input;'; put '/* a plain $ informat strips leading blanks - use $char instead */'; put 'if _n_=1 then call symputx(''input_statement'''; put ',prxchange(''s/:\$(?=[0-9 ])/:\$char/i'',-1,_infile_)'; put ');'; put '%if %str(&_debug) ge 128 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put 'else stop;'; put '%end;'; put '%else %do;'; put 'stop;'; put '%end;'; put 'run;'; put 'data &&_webin_name&i;'; put 'infile indata firstobs=2 dsd termstr=crlf ;'; put 'input &input_statement;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* setup webout */'; 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 '/* setup temp ref */'; put '%if %upcase(&fref) ne _WEBOUT %then %do;'; put 'filename &fref temp lrecl=999999 permission=''A::u::rwx,A::g::rw-,A::o::---'';'; put '%end;'; put '/* setup json */'; put 'data _null_;file &fref;'; put '%if %str(&_debug) ge 128 and &_EXECUTIONTASKS=true %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=DATASTEP,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* send back first XX records of each work table for debugging */'; 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 &fref mod; put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file &fref mod;'; 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=&fref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file &fref mod;put "}";'; put '%end;'; put 'data _null_; file &fref mod;put "}";run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file &fref mod;'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; 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 'SYS_JES_JOB_URI=quote(trim(resolve(symget(''SYS_JES_JOB_URI''))));'; put 'put '',"SYS_JES_JOB_URI" : '' SYS_JES_JOB_URI ;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 128 and &_EXECUTIONTASKS=true %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put '%if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do;'; put 'data _null_; rc=fcopy("&fref","_webout");run;'; put '%end;'; put '%end;'; put '%mend mv_webout;'; put '/* if calling viya service with _job param, _program will conflict */'; put '/* so we provide instead as __program */'; put '%global __program _program;'; put '%let _program=%sysfunc(coalescec(&__program,&_program));'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mv_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ')'; 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 mp_abort(mac=mp_abort.sas, 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 'end;'; put '/* _METAPERSON is not always set when _METAUSER is (e.g. Viya JES'; put 'sessions provide only _METAUSER) - guard it separately or SYMGET'; put 'raises "Invalid argument" and pollutes SYSERRORTEXT inside the'; put 'very abort JSON we are writing here. */'; put 'if symexist(''_metaperson'') then do;'; 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(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!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,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',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(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!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,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',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 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 dc_getsettings();'; put '%global DC_LIBNAME DC_LIBREF;'; put '%if %symexist(_PROGRAM) %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 '/* only do this if the lib is not assigned - this is an expensive Viya call */'; put '%if x&dc_libref.x=xx %then %do;'; put '%put fetching settings from API - this is an expensive call;'; put '%put it is recommended to put these values in the autoexec;'; put 'filename __dc filesrvc folderpath="&root/services";'; put '%inc __dc(settings)/source2;'; put '%end;'; put '%let DC_LIBNAME=&dc_libref;'; put '%let mpelib=&DC_LIBREF;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; 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.PROCESSMODE &prefix._STPSRV_HEADER_LOC /* SASjs server specific vars*/'; 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 '&prefix.PROCESSMODE'; put '&prefix._STPSRV_HEADER_LOC'; 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 '/* turn off with dsoptions=nonote2err */'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; put 'sqlrc /* avoid errors when using DI jobs in HOOK scripts */'; 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 '/* `_debug` is 131 by default, but the adapter sends 128 on the Viya WEB JES'; put '* path when runAsTask is enabled (see WebJobExecutor.getRequestParams), and'; put '* 128 also arrives when a `log` debug value is requested. All of them mean'; put '* "debug on" - so all of them enable the extra logging below. */'; put '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put 'or "&_debug"="128"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; put '%if "&sasjs_mdebug"="1" %then %do;'; put '%if %sysfunc(exist(work.browser_url_vars)) %then %do;'; put 'data _null_;'; put 'length name value $1024;'; put 'set work.browser_url_vars;'; put 'putlog "NOTE: &sysmacroname: work.browser_url_vars:";'; put 'putlog name= value=;'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_url_vars on this request;'; put '%if %sysfunc(exist(work.browser_info)) %then %do;'; put 'data _null_;'; put 'set work.browser_info;'; put 'putlog "NOTE: &sysmacroname: work.browser_info:";'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%else %put NOTE: &sysmacroname: no work.browser_info on this request;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mf_getuniquelibref(prefix=mc);'; put '%local x maxtries;'; 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 '%macro mv_getgroupmembers(group'; put ',access_token_var=ACCESS_TOKEN'; put ',grant_type=sas_services'; put ',outds=work.viyagroupmembers'; put ');'; put '%local oauth_bearer;'; put '%if &grant_type=detect %then %do;'; put '%if %symexist(&access_token_var) %then %let grant_type=authorization_code;'; put '%else %let grant_type=sas_services;'; put '%end;'; put '%if &grant_type=sas_services %then %do;'; put '%let oauth_bearer=oauth_bearer=sas_services;'; put '%let &access_token_var=;'; put '%end;'; put '%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password'; put 'and &grant_type ne sas_services'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for grant_type: &grant_type)'; put ')'; put 'options noquotelenmax;'; put '%local base_uri; /* location of rest apis */'; put '%let base_uri=%mf_getplatform(VIYARESTAPI);'; put '/* fetching folder details for provided path */'; put '%local fname1;'; put '%let fname1=%mf_getuniquefileref();'; put 'proc http method=''GET'' out=&fname1 &oauth_bearer'; put 'url="&base_uri/identities/groups/&group/members?limit=10000";'; put 'headers'; put '%if &grant_type=authorization_code %then %do;'; put '"Authorization"="Bearer &&&access_token_var"'; put '%end;'; put '"Accept"="application/json";'; put 'run;'; put '/*data _null_;infile &fname1;input;putlog _infile_;run;*/'; put '%if &SYS_PROCHTTP_STATUS_CODE=404 %then %do;'; put '%put NOTE: Group &group not found!!;'; put 'data &outds;'; put 'length id name $43;'; put 'call missing(of _all_);'; put 'run;'; put '%end;'; put '%else %do;'; put '%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)'; put ',mac=&sysmacroname'; put ',msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)'; put ')'; put '%let libref1=%mf_getuniquelibref();'; put 'libname &libref1 JSON fileref=&fname1;'; put 'data &outds;'; put 'length id name $43;'; put 'set &libref1..items;'; put 'run;'; put 'libname &libref1 clear;'; put '%end;'; put '/* clear refs */'; put 'filename &fname1 clear;'; put '%mend mv_getgroupmembers;'; put '%macro dc_getgroupmembers(group,outds=dc_getgroupmembers);'; put '%mv_getgroupmembers(%str(&group),outds=&outds)'; put 'data &outds ;'; put 'length membername $64;'; put 'set &outds(rename=(name=MemberName));'; put 'run;'; put '%mend dc_getgroupmembers;'; 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 '/*caslib casmusic path=''/opt/sas/viya/cascache/tracks'' libref=casmusic ;*/'; put '%let syscc=0;'; put '%put _global_;'; 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 '@li dc_getgroupmembers.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; 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 _null_;'; put 'set iwant;'; put 'call symputx(''groupid'',groupid);'; put 'run;'; put '%dc_getgroupmembers(%str(&groupid),outds=sasMembers)'; put 'proc sort data=sasMembers;'; put 'by membername;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasMembers)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mv_createwebservice(path=&appLoc/&path, name=&service, code=sascode,replace=yes) filename sascode clear; %let path=services/web; %let filename=887.f912dabf61f5b9fe.js; filename filecode temp lrecl=1257360; data _null_; file filecode; put 'KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1s4ODddLHs5Mjg4NyhWZSxXZSxBZSl7dmFyIFp0PUFlKDI5MjkzKS5kZWZhdWx0LFVlPUFlKDUzMzQ0KS5kZWZhdWx0LHFlPUFlKDQyOTU4KS5kZWZhdWx0'@; put 'LEZlPUFlKDgyODgxKS5kZWZhdWx0O1ZlLmV4cG9ydHM9ZnVuY3Rpb24gcyhFLFMsYil7ZnVuY3Rpb24gYSh0LGUpe2lmKCFTW3RdKXtpZighRVt0XSl7aWYobylyZXR1cm4gbyh0LCEwKTt2YXIgbj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgbi5jb2Rl'@; put 'PSJNT0RVTEVfTk9UX0ZPVU5EIixufXZhciBpPVNbdF09e2V4cG9ydHM6e319O0VbdF1bMF0uY2FsbChpLmV4cG9ydHMsZnVuY3Rpb24oaCl7cmV0dXJuIGEoRVt0XVsxXVtoXXx8aCl9LGksaS5leHBvcnRzLHMsRSxTLGIpfXJldHVybiBTW3RdLmV4cG9ydHN9Zm9yKHZhciBvPXZvaWQgMCxy'@; put 'PTA7cjxiLmxlbmd0aDtyKyspYShiW3JdKTtyZXR1cm4gYX0oezE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCJmcyIpLGE9cygiZmFzdC1jc3YiKSxvPXMoImRheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCIpLHI9cygiZGF5anMvcGx1Z2luL3V0YyIpLHQ9'@; put 'cygiZGF5anMiKS5leHRlbmQobykuZXh0ZW5kKHIpLGU9cygiLi4vdXRpbHMvc3RyZWFtLWJ1ZiIpLHtmczp7ZXhpc3RzOmx9fT1zKCIuLi91dGlscy91dGlscyIpLG49e3RydWU6ITAsZmFsc2U6ITEsIiNOL0EiOntlcnJvcjoiI04vQSJ9LCIjUkVGISI6e2Vycm9yOiIjUkVGISJ9LCIjTkFN'@; put 'RT8iOntlcnJvcjoiI05BTUU/In0sIiNESVYvMCEiOntlcnJvcjoiI0RJVi8wISJ9LCIjTlVMTCEiOntlcnJvcjoiI05VTEwhIn0sIiNWQUxVRSEiOntlcnJvcjoiI1ZBTFVFISJ9LCIjTlVNISI6e2Vycm9yOiIjTlVNISJ9fTtFLmV4cG9ydHM9Y2xhc3N7Y29uc3RydWN0b3IoaSl7dGhpcy53'@; put 'b3JrYm9vaz1pLHRoaXMud29ya3NoZWV0PW51bGx9cmVhZEZpbGUoaSxoKXt2YXIgZj10aGlzO3JldHVybiBadChmdW5jdGlvbiooKXtpZihoPWh8fHt9LCEoeWllbGQgbChpKSkpdGhyb3cgbmV3IEVycm9yKCJGaWxlIG5vdCBmb3VuZDogIitpKTtjb25zdCB1PWIuY3JlYXRlUmVhZFN0cmVh'@; put 'bShpKSxwPXlpZWxkIGYucmVhZCh1LGgpO3JldHVybiB1LmNsb3NlKCkscH0pKCl9cmVhZChpLGgpe3JldHVybiBoPWh8fHt9LG5ldyBQcm9taXNlKChmLHUpPT57Y29uc3QgcD10aGlzLndvcmtib29rLmFkZFdvcmtzaGVldChoLnNoZWV0TmFtZSksZD1oLmRhdGVGb3JtYXRzfHxbIllZWVkt'@; put 'TU0tRERbVF1ISDptbTpzc1oiLCJZWVlZLU1NLUREW1RdSEg6bW06c3MiLCJNTS1ERC1ZWVlZIiwiWVlZWS1NTS1ERCJdLHY9aC5tYXB8fGZ1bmN0aW9uKEEpe2lmKCIiPT09QSlyZXR1cm4gbnVsbDtjb25zdCBJPU51bWJlcihBKTtpZighTnVtYmVyLmlzTmFOKEkpJiZJIT09MS8wKXJldHVy'@; put 'biBJO2NvbnN0IEw9ZC5yZWR1Y2UoKFAsQik9PntpZihQKXJldHVybiBQO2NvbnN0ICQ9dChBLEIsITApO3JldHVybiAkLmlzVmFsaWQoKT8kOm51bGx9LG51bGwpO2lmKEwpcmV0dXJuIG5ldyBEYXRlKEwudmFsdWVPZigpKTtjb25zdCBOPW5bQV07cmV0dXJuIHZvaWQgMCE9PU4/TjpBfSxf'@; put 'PWEucGFyc2UoaC5wYXJzZXJPcHRpb25zKS5vbigiZGF0YSIsQT0+e3AuYWRkUm93KEEubWFwKHYpKX0pLm9uKCJlbmQiLCgpPT57Xy5lbWl0KCJ3b3Jrc2hlZXQiLHApfSk7Xy5vbigid29ya3NoZWV0IixmKS5vbigiZXJyb3IiLHUpLGkucGlwZShfKX0pfWNyZWF0ZUlucHV0U3RyZWFtKCl7'@; put 'dGhyb3cgbmV3IEVycm9yKCJgQ1NWI2NyZWF0ZUlucHV0U3RyZWFtYCBpcyBkZXByZWNhdGVkLiBZb3Ugc2hvdWxkIHVzZSBgQ1NWI3JlYWRgIGluc3RlYWQuIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDUuMC4gUGxlYXNlIGZvbGxvdyB1cGdyYWRlIGluc3RydWN0'@; put 'aW9uOiBodHRwczovL2dpdGh1Yi5jb20vZXhjZWxqcy9leGNlbGpzL2Jsb2IvbWFzdGVyL1VQR1JBREUtNC4wLm1kIil9d3JpdGUoaSxoKXtyZXR1cm4gbmV3IFByb21pc2UoKGYsdSk9Pntjb25zdCBwPXRoaXMud29ya2Jvb2suZ2V0V29ya3NoZWV0KChoPWh8fHt9KS5zaGVldE5hbWV8fGgu'@; put 'c2hlZXRJZCksZD1hLmZvcm1hdChoLmZvcm1hdHRlck9wdGlvbnMpO2kub24oImZpbmlzaCIsKCk9PntmKCl9KSxkLm9uKCJlcnJvciIsdSksZC5waXBlKGkpO2NvbnN0e2RhdGVGb3JtYXQ6dixkYXRlVVRDOl99PWgsQT1oLm1hcHx8KE49PntpZihOKXtpZihOLnRleHR8fE4uaHlwZXJsaW5r'@; put 'KXJldHVybiBOLmh5cGVybGlua3x8Ti50ZXh0fHwiIjtpZihOLmZvcm11bGF8fE4ucmVzdWx0KXJldHVybiBOLnJlc3VsdHx8IiI7aWYoTiBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIHY/Xz90LnV0YyhOKS5mb3JtYXQodik6dChOKS5mb3JtYXQodik6Xz90LnV0YyhOKS5mb3JtYXQoKTp0KE4p'@; put 'LmZvcm1hdCgpO2lmKE4uZXJyb3IpcmV0dXJuIE4uZXJyb3I7aWYoIm9iamVjdCI9PXR5cGVvZiBOKXJldHVybiBKU09OLnN0cmluZ2lmeShOKX1yZXR1cm4gTn0pLEk9dm9pZCAwPT09aC5pbmNsdWRlRW1wdHlSb3dzfHxoLmluY2x1ZGVFbXB0eVJvd3M7bGV0IEw9MTtwJiZwLmVhY2hSb3co'@; put 'KE4sUCk9PntpZihJKWZvcig7TCsrPFAtMTspZC53cml0ZShbXSk7Y29uc3R7dmFsdWVzOkJ9PU47Qi5zaGlmdCgpLGQud3JpdGUoQi5tYXAoQSkpLEw9UH0pLGQuZW5kKCl9KX13cml0ZUZpbGUoaSxoKXtjb25zdCBmPXtlbmNvZGluZzooaD1ofHx7fSkuZW5jb2Rpbmd8fCJ1dGY4In0sdT1i'@; put 'LmNyZWF0ZVdyaXRlU3RyZWFtKGksZik7cmV0dXJuIHRoaXMud3JpdGUodSxoKX13cml0ZUJ1ZmZlcihpKXt2YXIgaD10aGlzO3JldHVybiBadChmdW5jdGlvbiooKXtjb25zdCBmPW5ldyBlO3JldHVybiB5aWVsZCBoLndyaXRlKGYsaSksZi5yZWFkKCl9KSgpfX19LHsiLi4vdXRpbHMvc3Ry'@; put 'ZWFtLWJ1ZiI6MjQsIi4uL3V0aWxzL3V0aWxzIjoyNyxkYXlqczozOTEsImRheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCI6MzkyLCJkYXlqcy9wbHVnaW4vdXRjIjozOTMsImZhc3QtY3N2Ijo0MjQsZnM6MjE2fV0sMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBi'@; put 'PXMoIi4uL3V0aWxzL2NvbC1jYWNoZSIpO2NsYXNzIGF7Y29uc3RydWN0b3Iocix0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MDtpZih0aGlzLndvcmtzaGVldD1yLHQpaWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBs'@; put 'PWIuZGVjb2RlQWRkcmVzcyh0KTt0aGlzLm5hdGl2ZUNvbD1sLmNvbCtlLHRoaXMubmF0aXZlQ29sT2ZmPTAsdGhpcy5uYXRpdmVSb3c9bC5yb3crZSx0aGlzLm5hdGl2ZVJvd09mZj0wfWVsc2Ugdm9pZCAwIT09dC5uYXRpdmVDb2w/KHRoaXMubmF0aXZlQ29sPXQubmF0aXZlQ29sfHwwLHRo'@; put 'aXMubmF0aXZlQ29sT2ZmPXQubmF0aXZlQ29sT2ZmfHwwLHRoaXMubmF0aXZlUm93PXQubmF0aXZlUm93fHwwLHRoaXMubmF0aXZlUm93T2ZmPXQubmF0aXZlUm93T2ZmfHwwKTp2b2lkIDAhPT10LmNvbD8odGhpcy5jb2w9dC5jb2wrZSx0aGlzLnJvdz10LnJvdytlKToodGhpcy5uYXRpdmVD'@; put 'b2w9MCx0aGlzLm5hdGl2ZUNvbE9mZj0wLHRoaXMubmF0aXZlUm93PTAsdGhpcy5uYXRpdmVSb3dPZmY9MCk7ZWxzZSB0aGlzLm5hdGl2ZUNvbD0wLHRoaXMubmF0aXZlQ29sT2ZmPTAsdGhpcy5uYXRpdmVSb3c9MCx0aGlzLm5hdGl2ZVJvd09mZj0wfXN0YXRpYyBhc0luc3RhbmNlKHIpe3Jl'@; put 'dHVybiByIGluc3RhbmNlb2YgYXx8bnVsbD09cj9yOm5ldyBhKHIpfWdldCBjb2woKXtyZXR1cm4gdGhpcy5uYXRpdmVDb2wrTWF0aC5taW4odGhpcy5jb2xXaWR0aC0xLHRoaXMubmF0aXZlQ29sT2ZmKS90aGlzLmNvbFdpZHRofXNldCBjb2wocil7dGhpcy5uYXRpdmVDb2w9TWF0aC5mbG9v'@; put 'cihyKSx0aGlzLm5hdGl2ZUNvbE9mZj1NYXRoLmZsb29yKChyLXRoaXMubmF0aXZlQ29sKSp0aGlzLmNvbFdpZHRoKX1nZXQgcm93KCl7cmV0dXJuIHRoaXMubmF0aXZlUm93K01hdGgubWluKHRoaXMucm93SGVpZ2h0LTEsdGhpcy5uYXRpdmVSb3dPZmYpL3RoaXMucm93SGVpZ2h0fXNldCBy'@; put 'b3cocil7dGhpcy5uYXRpdmVSb3c9TWF0aC5mbG9vcihyKSx0aGlzLm5hdGl2ZVJvd09mZj1NYXRoLmZsb29yKChyLXRoaXMubmF0aXZlUm93KSp0aGlzLnJvd0hlaWdodCl9Z2V0IGNvbFdpZHRoKCl7cmV0dXJuIHRoaXMud29ya3NoZWV0JiZ0aGlzLndvcmtzaGVldC5nZXRDb2x1bW4odGhp'@; put 'cy5uYXRpdmVDb2wrMSkmJnRoaXMud29ya3NoZWV0LmdldENvbHVtbih0aGlzLm5hdGl2ZUNvbCsxKS5pc0N1c3RvbVdpZHRoP01hdGguZmxvb3IoMWU0KnRoaXMud29ya3NoZWV0LmdldENvbHVtbih0aGlzLm5hdGl2ZUNvbCsxKS53aWR0aCk6NjRlNH1nZXQgcm93SGVpZ2h0KCl7cmV0dXJu'@; put 'IHRoaXMud29ya3NoZWV0JiZ0aGlzLndvcmtzaGVldC5nZXRSb3codGhpcy5uYXRpdmVSb3crMSkmJnRoaXMud29ya3NoZWV0LmdldFJvdyh0aGlzLm5hdGl2ZVJvdysxKS5oZWlnaHQ/TWF0aC5mbG9vcigxZTQqdGhpcy53b3Jrc2hlZXQuZ2V0Um93KHRoaXMubmF0aXZlUm93KzEpLmhlaWdo'@; put 'dCk6MThlNH1nZXQgbW9kZWwoKXtyZXR1cm57bmF0aXZlQ29sOnRoaXMubmF0aXZlQ29sLG5hdGl2ZUNvbE9mZjp0aGlzLm5hdGl2ZUNvbE9mZixuYXRpdmVSb3c6dGhpcy5uYXRpdmVSb3csbmF0aXZlUm93T2ZmOnRoaXMubmF0aXZlUm93T2ZmfX1zZXQgbW9kZWwocil7dGhpcy5uYXRpdmVD'@; put 'b2w9ci5uYXRpdmVDb2wsdGhpcy5uYXRpdmVDb2xPZmY9ci5uYXRpdmVDb2xPZmYsdGhpcy5uYXRpdmVSb3c9ci5uYXRpdmVSb3csdGhpcy5uYXRpdmVSb3dPZmY9ci5uYXRpdmVSb3dPZmZ9fUUuZXhwb3J0cz1hfSx7Ii4uL3V0aWxzL2NvbC1jYWNoZSI6MTl9XSwzOltmdW5jdGlvbihzLEUs'@; put 'Uyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vdXRpbHMvY29sLWNhY2hlIiksYT1zKCIuLi91dGlscy91bmRlci1kYXNoIiksbz1zKCIuL2VudW1zIikse3NsaWRlRm9ybXVsYTpyfT1zKCIuLi91dGlscy9zaGFyZWQtZm9ybXVsYSIpLHQ9cygiLi9ub3RlIik7Y2xhc3MgZXtjb25zdHJ1'@; put 'Y3RvcihpLGgsZil7aWYoIWl8fCFoKXRocm93IG5ldyBFcnJvcigiQSBDZWxsIG5lZWRzIGEgUm93Iik7dGhpcy5fcm93PWksdGhpcy5fY29sdW1uPWgsYi52YWxpZGF0ZUFkZHJlc3MoZiksdGhpcy5fYWRkcmVzcz1mLHRoaXMuX3ZhbHVlPWwuY3JlYXRlKGUuVHlwZXMuTnVsbCx0aGlzKSx0'@; put 'aGlzLnN0eWxlPXRoaXMuX21lcmdlU3R5bGUoaS5zdHlsZSxoLnN0eWxlLHt9KSx0aGlzLl9tZXJnZUNvdW50PTB9Z2V0IHdvcmtzaGVldCgpe3JldHVybiB0aGlzLl9yb3cud29ya3NoZWV0fWdldCB3b3JrYm9vaygpe3JldHVybiB0aGlzLl9yb3cud29ya3NoZWV0Lndvcmtib29rfWRlc3Ry'@; put 'b3koKXtkZWxldGUgdGhpcy5zdHlsZSxkZWxldGUgdGhpcy5fdmFsdWUsZGVsZXRlIHRoaXMuX3JvdyxkZWxldGUgdGhpcy5fY29sdW1uLGRlbGV0ZSB0aGlzLl9hZGRyZXNzfWdldCBudW1GbXQoKXtyZXR1cm4gdGhpcy5zdHlsZS5udW1GbXR9c2V0IG51bUZtdChpKXt0aGlzLnN0eWxlLm51'@; put 'bUZtdD1pfWdldCBmb250KCl7cmV0dXJuIHRoaXMuc3R5bGUuZm9udH1zZXQgZm9udChpKXt0aGlzLnN0eWxlLmZvbnQ9aX1nZXQgYWxpZ25tZW50KCl7cmV0dXJuIHRoaXMuc3R5bGUuYWxpZ25tZW50fXNldCBhbGlnbm1lbnQoaSl7dGhpcy5zdHlsZS5hbGlnbm1lbnQ9aX1nZXQgYm9yZGVy'@; put 'KCl7cmV0dXJuIHRoaXMuc3R5bGUuYm9yZGVyfXNldCBib3JkZXIoaSl7dGhpcy5zdHlsZS5ib3JkZXI9aX1nZXQgZmlsbCgpe3JldHVybiB0aGlzLnN0eWxlLmZpbGx9c2V0IGZpbGwoaSl7dGhpcy5zdHlsZS5maWxsPWl9Z2V0IHByb3RlY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZS5wcm90'@; put 'ZWN0aW9ufXNldCBwcm90ZWN0aW9uKGkpe3RoaXMuc3R5bGUucHJvdGVjdGlvbj1pfV9tZXJnZVN0eWxlKGksaCxmKXtjb25zdCB1PWkmJmkubnVtRm10fHxoJiZoLm51bUZtdDt1JiYoZi5udW1GbXQ9dSk7Y29uc3QgcD1pJiZpLmZvbnR8fGgmJmguZm9udDtwJiYoZi5mb250PXApO2NvbnN0'@; put 'IGQ9aSYmaS5hbGlnbm1lbnR8fGgmJmguYWxpZ25tZW50O2QmJihmLmFsaWdubWVudD1kKTtjb25zdCB2PWkmJmkuYm9yZGVyfHxoJiZoLmJvcmRlcjt2JiYoZi5ib3JkZXI9dik7Y29uc3QgXz1pJiZpLmZpbGx8fGgmJmguZmlsbDtfJiYoZi5maWxsPV8pO2NvbnN0IEE9aSYmaS5wcm90ZWN0'@; put 'aW9ufHxoJiZoLnByb3RlY3Rpb247cmV0dXJuIEEmJihmLnByb3RlY3Rpb249QSksZn1nZXQgYWRkcmVzcygpe3JldHVybiB0aGlzLl9hZGRyZXNzfWdldCByb3coKXtyZXR1cm4gdGhpcy5fcm93Lm51bWJlcn1nZXQgY29sKCl7cmV0dXJuIHRoaXMuX2NvbHVtbi5udW1iZXJ9Z2V0ICRjb2wk'@; put 'cm93KCl7cmV0dXJuYCQke3RoaXMuX2NvbHVtbi5sZXR0ZXJ9JCR7dGhpcy5yb3d9YH1nZXQgdHlwZSgpe3JldHVybiB0aGlzLl92YWx1ZS50eXBlfWdldCBlZmZlY3RpdmVUeXBlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlLmVmZmVjdGl2ZVR5cGV9dG9Dc3ZTdHJpbmcoKXtyZXR1cm4gdGhpcy5f'@; put 'dmFsdWUudG9Dc3ZTdHJpbmcoKX1hZGRNZXJnZVJlZigpe3RoaXMuX21lcmdlQ291bnQrK31yZWxlYXNlTWVyZ2VSZWYoKXt0aGlzLl9tZXJnZUNvdW50LS19Z2V0IGlzTWVyZ2VkKCl7cmV0dXJuIHRoaXMuX21lcmdlQ291bnQ+MHx8dGhpcy50eXBlPT09ZS5UeXBlcy5NZXJnZX1tZXJnZShp'@; put 'LGgpe3RoaXMuX3ZhbHVlLnJlbGVhc2UoKSx0aGlzLl92YWx1ZT1sLmNyZWF0ZShlLlR5cGVzLk1lcmdlLHRoaXMsaSksaHx8KHRoaXMuc3R5bGU9aS5zdHlsZSl9dW5tZXJnZSgpe3RoaXMudHlwZT09PWUuVHlwZXMuTWVyZ2UmJih0aGlzLl92YWx1ZS5yZWxlYXNlKCksdGhpcy5fdmFsdWU9'@; put 'bC5jcmVhdGUoZS5UeXBlcy5OdWxsLHRoaXMpLHRoaXMuc3R5bGU9dGhpcy5fbWVyZ2VTdHlsZSh0aGlzLl9yb3cuc3R5bGUsdGhpcy5fY29sdW1uLnN0eWxlLHt9KSl9aXNNZXJnZWRUbyhpKXtyZXR1cm4gdGhpcy5fdmFsdWUudHlwZT09PWUuVHlwZXMuTWVyZ2UmJnRoaXMuX3ZhbHVlLmlz'@; put 'TWVyZ2VkVG8oaSl9Z2V0IG1hc3Rlcigpe3JldHVybiB0aGlzLnR5cGU9PT1lLlR5cGVzLk1lcmdlP3RoaXMuX3ZhbHVlLm1hc3Rlcjp0aGlzfWdldCBpc0h5cGVybGluaygpe3JldHVybiB0aGlzLl92YWx1ZS50eXBlPT09ZS5UeXBlcy5IeXBlcmxpbmt9Z2V0IGh5cGVybGluaygpe3JldHVy'@; put 'biB0aGlzLl92YWx1ZS5oeXBlcmxpbmt9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlLnZhbHVlfXNldCB2YWx1ZShpKXt0aGlzLnR5cGUhPT1lLlR5cGVzLk1lcmdlPyh0aGlzLl92YWx1ZS5yZWxlYXNlKCksdGhpcy5fdmFsdWU9bC5jcmVhdGUobC5nZXRUeXBlKGkpLHRoaXMsaSkp'@; put 'OnRoaXMuX3ZhbHVlLm1hc3Rlci52YWx1ZT1pfWdldCBub3RlKCl7cmV0dXJuIHRoaXMuX2NvbW1lbnQmJnRoaXMuX2NvbW1lbnQubm90ZX1zZXQgbm90ZShpKXt0aGlzLl9jb21tZW50PW5ldyB0KGkpfWdldCB0ZXh0KCl7cmV0dXJuIHRoaXMuX3ZhbHVlLnRvU3RyaW5nKCl9Z2V0IGh0bWwo'@; put 'KXtyZXR1cm4gYS5lc2NhcGVIdG1sKHRoaXMudGV4dCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy50ZXh0fV91cGdyYWRlVG9IeXBlcmxpbmsoaSl7dGhpcy50eXBlPT09ZS5UeXBlcy5TdHJpbmcmJih0aGlzLl92YWx1ZT1sLmNyZWF0ZShlLlR5cGVzLkh5cGVybGluayx0aGlzLHt0ZXh0OnRo'@; put 'aXMuX3ZhbHVlLnZhbHVlLGh5cGVybGluazppfSkpfWdldCBmb3JtdWxhKCl7cmV0dXJuIHRoaXMuX3ZhbHVlLmZvcm11bGF9Z2V0IHJlc3VsdCgpe3JldHVybiB0aGlzLl92YWx1ZS5yZXN1bHR9Z2V0IGZvcm11bGFUeXBlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlLmZvcm11bGFUeXBlfWdldCBm'@; put 'dWxsQWRkcmVzcygpe2NvbnN0e3dvcmtzaGVldDppfT10aGlzLl9yb3c7cmV0dXJue3NoZWV0TmFtZTppLm5hbWUsYWRkcmVzczp0aGlzLmFkZHJlc3Mscm93OnRoaXMucm93LGNvbDp0aGlzLmNvbH19Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5uYW1lc1swXX1zZXQgbmFtZShpKXt0aGlzLm5h'@; put 'bWVzPVtpXX1nZXQgbmFtZXMoKXtyZXR1cm4gdGhpcy53b3JrYm9vay5kZWZpbmVkTmFtZXMuZ2V0TmFtZXNFeCh0aGlzLmZ1bGxBZGRyZXNzKX1zZXQgbmFtZXMoaSl7Y29uc3R7ZGVmaW5lZE5hbWVzOmh9PXRoaXMud29ya2Jvb2s7aC5yZW1vdmVBbGxOYW1lcyh0aGlzLmZ1bGxBZGRyZXNz'@; put 'KSxpLmZvckVhY2goZj0+e2guYWRkRXgodGhpcy5mdWxsQWRkcmVzcyxmKX0pfWFkZE5hbWUoaSl7dGhpcy53b3JrYm9vay5kZWZpbmVkTmFtZXMuYWRkRXgodGhpcy5mdWxsQWRkcmVzcyxpKX1yZW1vdmVOYW1lKGkpe3RoaXMud29ya2Jvb2suZGVmaW5lZE5hbWVzLnJlbW92ZUV4KHRoaXMu'@; put 'ZnVsbEFkZHJlc3MsaSl9cmVtb3ZlQWxsTmFtZXMoKXt0aGlzLndvcmtib29rLmRlZmluZWROYW1lcy5yZW1vdmVBbGxOYW1lcyh0aGlzLmZ1bGxBZGRyZXNzKX1nZXQgX2RhdGFWYWxpZGF0aW9ucygpe3JldHVybiB0aGlzLndvcmtzaGVldC5kYXRhVmFsaWRhdGlvbnN9Z2V0IGRhdGFWYWxp'@; put 'ZGF0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFWYWxpZGF0aW9ucy5maW5kKHRoaXMuYWRkcmVzcyl9c2V0IGRhdGFWYWxpZGF0aW9uKGkpe3RoaXMuX2RhdGFWYWxpZGF0aW9ucy5hZGQodGhpcy5hZGRyZXNzLGkpfWdldCBtb2RlbCgpe2NvbnN0e21vZGVsOml9PXRoaXMuX3ZhbHVlO3JldHVy'@; put 'biBpLnN0eWxlPXRoaXMuc3R5bGUsdGhpcy5fY29tbWVudCYmKGkuY29tbWVudD10aGlzLl9jb21tZW50Lm1vZGVsKSxpfXNldCBtb2RlbChpKXt0aGlzLl92YWx1ZS5yZWxlYXNlKCksdGhpcy5fdmFsdWU9bC5jcmVhdGUoaS50eXBlLHRoaXMpLHRoaXMuX3ZhbHVlLm1vZGVsPWksaS5jb21t'@; put 'ZW50JiYibm90ZSI9PT1pLmNvbW1lbnQudHlwZSYmKHRoaXMuX2NvbW1lbnQ9dC5mcm9tTW9kZWwoaS5jb21tZW50KSksdGhpcy5zdHlsZT1pLnN0eWxlP2kuc3R5bGU6e319fWUuVHlwZXM9by5WYWx1ZVR5cGU7Y29uc3QgbD17Z2V0VHlwZTpuPT5udWxsPT1uP2UuVHlwZXMuTnVsbDpuIGlu'@; put 'c3RhbmNlb2YgU3RyaW5nfHwic3RyaW5nIj09dHlwZW9mIG4/ZS5UeXBlcy5TdHJpbmc6Im51bWJlciI9PXR5cGVvZiBuP2UuVHlwZXMuTnVtYmVyOiJib29sZWFuIj09dHlwZW9mIG4/ZS5UeXBlcy5Cb29sZWFuOm4gaW5zdGFuY2VvZiBEYXRlP2UuVHlwZXMuRGF0ZTpuLnRleHQmJm4uaHlw'@; put 'ZXJsaW5rP2UuVHlwZXMuSHlwZXJsaW5rOm4uZm9ybXVsYXx8bi5zaGFyZWRGb3JtdWxhP2UuVHlwZXMuRm9ybXVsYTpuLnJpY2hUZXh0P2UuVHlwZXMuUmljaFRleHQ6bi5zaGFyZWRTdHJpbmc/ZS5UeXBlcy5TaGFyZWRTdHJpbmc6bi5lcnJvcj9lLlR5cGVzLkVycm9yOmUuVHlwZXMuSlNP'@; put 'Tix0eXBlczpbe3Q6ZS5UeXBlcy5OdWxsLGY6Y2xhc3N7Y29uc3RydWN0b3Iobil7dGhpcy5tb2RlbD17YWRkcmVzczpuLmFkZHJlc3MsdHlwZTplLlR5cGVzLk51bGx9fWdldCB2YWx1ZSgpe3JldHVybiBudWxsfXNldCB2YWx1ZShuKXt9Z2V0IHR5cGUoKXtyZXR1cm4gZS5UeXBlcy5OdWxs'@; put 'fWdldCBlZmZlY3RpdmVUeXBlKCl7cmV0dXJuIGUuVHlwZXMuTnVsbH1nZXQgYWRkcmVzcygpe3JldHVybiB0aGlzLm1vZGVsLmFkZHJlc3N9c2V0IGFkZHJlc3Mobil7dGhpcy5tb2RlbC5hZGRyZXNzPW59dG9Dc3ZTdHJpbmcoKXtyZXR1cm4iIn1yZWxlYXNlKCl7fXRvU3RyaW5nKCl7cmV0'@; put 'dXJuIiJ9fX0se3Q6ZS5UeXBlcy5OdW1iZXIsZjpjbGFzc3tjb25zdHJ1Y3RvcihuLGkpe3RoaXMubW9kZWw9e2FkZHJlc3M6bi5hZGRyZXNzLHR5cGU6ZS5UeXBlcy5OdW1iZXIsdmFsdWU6aX19Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMubW9kZWwudmFsdWV9c2V0IHZhbHVlKG4pe3RoaXMu'@; put 'bW9kZWwudmFsdWU9bn1nZXQgdHlwZSgpe3JldHVybiBlLlR5cGVzLk51bWJlcn1nZXQgZWZmZWN0aXZlVHlwZSgpe3JldHVybiBlLlR5cGVzLk51bWJlcn1nZXQgYWRkcmVzcygpe3JldHVybiB0aGlzLm1vZGVsLmFkZHJlc3N9c2V0IGFkZHJlc3Mobil7dGhpcy5tb2RlbC5hZGRyZXNzPW59'@; put 'dG9Dc3ZTdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZS50b1N0cmluZygpfXJlbGVhc2UoKXt9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZS50b1N0cmluZygpfX19LHt0OmUuVHlwZXMuU3RyaW5nLGY6Y2xhc3N7Y29uc3RydWN0b3IobixpKXt0aGlzLm1vZGVsPXth'@; put 'ZGRyZXNzOm4uYWRkcmVzcyx0eXBlOmUuVHlwZXMuU3RyaW5nLHZhbHVlOml9fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlfXNldCB2YWx1ZShuKXt0aGlzLm1vZGVsLnZhbHVlPW59Z2V0IHR5cGUoKXtyZXR1cm4gZS5UeXBlcy5TdHJpbmd9Z2V0IGVmZmVjdGl2ZVR5cGUo'@; put 'KXtyZXR1cm4gZS5UeXBlcy5TdHJpbmd9Z2V0IGFkZHJlc3MoKXtyZXR1cm4gdGhpcy5tb2RlbC5hZGRyZXNzfXNldCBhZGRyZXNzKG4pe3RoaXMubW9kZWwuYWRkcmVzcz1ufXRvQ3N2U3RyaW5nKCl7cmV0dXJuYCIke3RoaXMubW9kZWwudmFsdWUucmVwbGFjZSgvIi9nLCciIicpfSJgfXJl'@; put 'bGVhc2UoKXt9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZX19fSx7dDplLlR5cGVzLkRhdGUsZjpjbGFzc3tjb25zdHJ1Y3RvcihuLGkpe3RoaXMubW9kZWw9e2FkZHJlc3M6bi5hZGRyZXNzLHR5cGU6ZS5UeXBlcy5EYXRlLHZhbHVlOml9fWdldCB2YWx1ZSgpe3JldHVybiB0'@; put 'aGlzLm1vZGVsLnZhbHVlfXNldCB2YWx1ZShuKXt0aGlzLm1vZGVsLnZhbHVlPW59Z2V0IHR5cGUoKXtyZXR1cm4gZS5UeXBlcy5EYXRlfWdldCBlZmZlY3RpdmVUeXBlKCl7cmV0dXJuIGUuVHlwZXMuRGF0ZX1nZXQgYWRkcmVzcygpe3JldHVybiB0aGlzLm1vZGVsLmFkZHJlc3N9c2V0IGFk'@; put 'ZHJlc3Mobil7dGhpcy5tb2RlbC5hZGRyZXNzPW59dG9Dc3ZTdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZS50b0lTT1N0cmluZygpfXJlbGVhc2UoKXt9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZS50b1N0cmluZygpfX19LHt0OmUuVHlwZXMuSHlwZXJsaW5rLGY6'@; put 'Y2xhc3N7Y29uc3RydWN0b3IobixpKXt0aGlzLm1vZGVsPXthZGRyZXNzOm4uYWRkcmVzcyx0eXBlOmUuVHlwZXMuSHlwZXJsaW5rLHRleHQ6aT9pLnRleHQ6dm9pZCAwLGh5cGVybGluazppP2kuaHlwZXJsaW5rOnZvaWQgMH0saSYmaS50b29sdGlwJiYodGhpcy5tb2RlbC50b29sdGlwPWku'@; put 'dG9vbHRpcCl9Z2V0IHZhbHVlKCl7Y29uc3Qgbj17dGV4dDp0aGlzLm1vZGVsLnRleHQsaHlwZXJsaW5rOnRoaXMubW9kZWwuaHlwZXJsaW5rfTtyZXR1cm4gdGhpcy5tb2RlbC50b29sdGlwJiYobi50b29sdGlwPXRoaXMubW9kZWwudG9vbHRpcCksbn1zZXQgdmFsdWUobil7dGhpcy5tb2Rl'@; put 'bD17dGV4dDpuLnRleHQsaHlwZXJsaW5rOm4uaHlwZXJsaW5rfSxuLnRvb2x0aXAmJih0aGlzLm1vZGVsLnRvb2x0aXA9bi50b29sdGlwKX1nZXQgdGV4dCgpe3JldHVybiB0aGlzLm1vZGVsLnRleHR9c2V0IHRleHQobil7dGhpcy5tb2RlbC50ZXh0PW59Z2V0IGh5cGVybGluaygpe3JldHVy'@; put 'biB0aGlzLm1vZGVsLmh5cGVybGlua31zZXQgaHlwZXJsaW5rKG4pe3RoaXMubW9kZWwuaHlwZXJsaW5rPW59Z2V0IHR5cGUoKXtyZXR1cm4gZS5UeXBlcy5IeXBlcmxpbmt9Z2V0IGVmZmVjdGl2ZVR5cGUoKXtyZXR1cm4gZS5UeXBlcy5IeXBlcmxpbmt9Z2V0IGFkZHJlc3MoKXtyZXR1cm4g'@; put 'dGhpcy5tb2RlbC5hZGRyZXNzfXNldCBhZGRyZXNzKG4pe3RoaXMubW9kZWwuYWRkcmVzcz1ufXRvQ3N2U3RyaW5nKCl7cmV0dXJuIHRoaXMubW9kZWwuaHlwZXJsaW5rfXJlbGVhc2UoKXt9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC50ZXh0fX19LHt0OmUuVHlwZXMuRm9ybXVsYSxm'@; put 'OmNsYXNze2NvbnN0cnVjdG9yKG4saSl7dGhpcy5jZWxsPW4sdGhpcy5tb2RlbD17YWRkcmVzczpuLmFkZHJlc3MsdHlwZTplLlR5cGVzLkZvcm11bGEsc2hhcmVUeXBlOmk/aS5zaGFyZVR5cGU6dm9pZCAwLHJlZjppP2kucmVmOnZvaWQgMCxmb3JtdWxhOmk/aS5mb3JtdWxhOnZvaWQgMCxz'@; put 'aGFyZWRGb3JtdWxhOmk/aS5zaGFyZWRGb3JtdWxhOnZvaWQgMCxyZXN1bHQ6aT9pLnJlc3VsdDp2b2lkIDB9fV9jb3B5TW9kZWwobil7Y29uc3QgaT17fSxoPWY9Pntjb25zdCB1PW5bZl07dSYmKGlbZl09dSl9O3JldHVybiBoKCJmb3JtdWxhIiksaCgicmVzdWx0IiksaCgicmVmIiksaCgi'@; put 'c2hhcmVUeXBlIiksaCgic2hhcmVkRm9ybXVsYSIpLGl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX2NvcHlNb2RlbCh0aGlzLm1vZGVsKX1zZXQgdmFsdWUobil7dGhpcy5tb2RlbD10aGlzLl9jb3B5TW9kZWwobil9dmFsaWRhdGUobil7c3dpdGNoKGwuZ2V0VHlwZShuKSl7Y2FzZSBlLlR5'@; put 'cGVzLk51bGw6Y2FzZSBlLlR5cGVzLlN0cmluZzpjYXNlIGUuVHlwZXMuTnVtYmVyOmNhc2UgZS5UeXBlcy5EYXRlOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcHJvY2VzcyB0aGF0IHR5cGUgb2YgcmVzdWx0IHZhbHVlIil9fWdldCBkZXBlbmRlbmNpZXMoKXtyZXR1'@; put 'cm57cmFuZ2VzOnRoaXMuZm9ybXVsYS5tYXRjaCgvKFthLXpBLVowLTldKyEpP1tBLVpdezEsM31cZHsxLDR9OltBLVpdezEsM31cZHsxLDR9L2cpLGNlbGxzOnRoaXMuZm9ybXVsYS5yZXBsYWNlKC8oW2EtekEtWjAtOV0rISk/W0EtWl17MSwzfVxkezEsNH06W0EtWl17MSwzfVxkezEsNH0v'@; put 'ZywiIikubWF0Y2goLyhbYS16QS1aMC05XSshKT9bQS1aXXsxLDN9XGR7MSw0fS9nKX19Z2V0IGZvcm11bGEoKXtyZXR1cm4gdGhpcy5tb2RlbC5mb3JtdWxhfHx0aGlzLl9nZXRUcmFuc2xhdGVkRm9ybXVsYSgpfXNldCBmb3JtdWxhKG4pe3RoaXMubW9kZWwuZm9ybXVsYT1ufWdldCBmb3Jt'@; put 'dWxhVHlwZSgpe3JldHVybiB0aGlzLm1vZGVsLmZvcm11bGE/by5Gb3JtdWxhVHlwZS5NYXN0ZXI6dGhpcy5tb2RlbC5zaGFyZWRGb3JtdWxhP28uRm9ybXVsYVR5cGUuU2hhcmVkOm8uRm9ybXVsYVR5cGUuTm9uZX1nZXQgcmVzdWx0KCl7cmV0dXJuIHRoaXMubW9kZWwucmVzdWx0fXNldCBy'@; put 'ZXN1bHQobil7dGhpcy5tb2RlbC5yZXN1bHQ9bn1nZXQgdHlwZSgpe3JldHVybiBlLlR5cGVzLkZvcm11bGF9Z2V0IGVmZmVjdGl2ZVR5cGUoKXtjb25zdCBuPXRoaXMubW9kZWwucmVzdWx0O3JldHVybiBudWxsPT1uP28uVmFsdWVUeXBlLk51bGw6biBpbnN0YW5jZW9mIFN0cmluZ3x8InN0'@; put 'cmluZyI9PXR5cGVvZiBuP28uVmFsdWVUeXBlLlN0cmluZzoibnVtYmVyIj09dHlwZW9mIG4/by5WYWx1ZVR5cGUuTnVtYmVyOm4gaW5zdGFuY2VvZiBEYXRlP28uVmFsdWVUeXBlLkRhdGU6bi50ZXh0JiZuLmh5cGVybGluaz9vLlZhbHVlVHlwZS5IeXBlcmxpbms6bi5mb3JtdWxhP28uVmFs'@; put 'dWVUeXBlLkZvcm11bGE6by5WYWx1ZVR5cGUuTnVsbH1nZXQgYWRkcmVzcygpe3JldHVybiB0aGlzLm1vZGVsLmFkZHJlc3N9c2V0IGFkZHJlc3Mobil7dGhpcy5tb2RlbC5hZGRyZXNzPW59X2dldFRyYW5zbGF0ZWRGb3JtdWxhKCl7aWYoIXRoaXMuX3RyYW5zbGF0ZWRGb3JtdWxhJiZ0aGlz'@; put 'Lm1vZGVsLnNoYXJlZEZvcm11bGEpe2NvbnN0e3dvcmtzaGVldDpufT10aGlzLmNlbGwsaT1uLmZpbmRDZWxsKHRoaXMubW9kZWwuc2hhcmVkRm9ybXVsYSk7dGhpcy5fdHJhbnNsYXRlZEZvcm11bGE9aSYmcihpLmZvcm11bGEsaS5hZGRyZXNzLHRoaXMubW9kZWwuYWRkcmVzcyl9cmV0dXJu'@; put 'IHRoaXMuX3RyYW5zbGF0ZWRGb3JtdWxhfXRvQ3N2U3RyaW5nKCl7cmV0dXJuIiIrKHRoaXMubW9kZWwucmVzdWx0fHwiIil9cmVsZWFzZSgpe310b1N0cmluZygpe3JldHVybiB0aGlzLm1vZGVsLnJlc3VsdD90aGlzLm1vZGVsLnJlc3VsdC50b1N0cmluZygpOiIifX19LHt0OmUuVHlwZXMu'@; put 'TWVyZ2UsZjpjbGFzc3tjb25zdHJ1Y3RvcihuLGkpe3RoaXMubW9kZWw9e2FkZHJlc3M6bi5hZGRyZXNzLHR5cGU6ZS5UeXBlcy5NZXJnZSxtYXN0ZXI6aT9pLmFkZHJlc3M6dm9pZCAwfSx0aGlzLl9tYXN0ZXI9aSxpJiZpLmFkZE1lcmdlUmVmKCl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMu'@; put 'X21hc3Rlci52YWx1ZX1zZXQgdmFsdWUobil7biBpbnN0YW5jZW9mIGU/KHRoaXMuX21hc3RlciYmdGhpcy5fbWFzdGVyLnJlbGVhc2VNZXJnZVJlZigpLG4uYWRkTWVyZ2VSZWYoKSx0aGlzLl9tYXN0ZXI9bik6dGhpcy5fbWFzdGVyLnZhbHVlPW59aXNNZXJnZWRUbyhuKXtyZXR1cm4gbj09'@; put 'PXRoaXMuX21hc3Rlcn1nZXQgbWFzdGVyKCl7cmV0dXJuIHRoaXMuX21hc3Rlcn1nZXQgdHlwZSgpe3JldHVybiBlLlR5cGVzLk1lcmdlfWdldCBlZmZlY3RpdmVUeXBlKCl7cmV0dXJuIHRoaXMuX21hc3Rlci5lZmZlY3RpdmVUeXBlfWdldCBhZGRyZXNzKCl7cmV0dXJuIHRoaXMubW9kZWwu'@; put 'YWRkcmVzc31zZXQgYWRkcmVzcyhuKXt0aGlzLm1vZGVsLmFkZHJlc3M9bn10b0NzdlN0cmluZygpe3JldHVybiIifXJlbGVhc2UoKXt0aGlzLl9tYXN0ZXIucmVsZWFzZU1lcmdlUmVmKCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy52YWx1ZS50b1N0cmluZygpfX19LHt0OmUuVHlwZXMuSlNP'@; put 'TixmOmNsYXNze2NvbnN0cnVjdG9yKG4saSl7dGhpcy5tb2RlbD17YWRkcmVzczpuLmFkZHJlc3MsdHlwZTplLlR5cGVzLlN0cmluZyx2YWx1ZTpKU09OLnN0cmluZ2lmeShpKSxyYXdWYWx1ZTppfX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5tb2RlbC5yYXdWYWx1ZX1zZXQgdmFsdWUobil7'@; put 'dGhpcy5tb2RlbC5yYXdWYWx1ZT1uLHRoaXMubW9kZWwudmFsdWU9SlNPTi5zdHJpbmdpZnkobil9Z2V0IHR5cGUoKXtyZXR1cm4gZS5UeXBlcy5TdHJpbmd9Z2V0IGVmZmVjdGl2ZVR5cGUoKXtyZXR1cm4gZS5UeXBlcy5TdHJpbmd9Z2V0IGFkZHJlc3MoKXtyZXR1cm4gdGhpcy5tb2RlbC5h'@; put 'ZGRyZXNzfXNldCBhZGRyZXNzKG4pe3RoaXMubW9kZWwuYWRkcmVzcz1ufXRvQ3N2U3RyaW5nKCl7cmV0dXJuIHRoaXMubW9kZWwudmFsdWV9cmVsZWFzZSgpe310b1N0cmluZygpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlfX19LHt0OmUuVHlwZXMuU2hhcmVkU3RyaW5nLGY6Y2xhc3N7Y29u'@; put 'c3RydWN0b3IobixpKXt0aGlzLm1vZGVsPXthZGRyZXNzOm4uYWRkcmVzcyx0eXBlOmUuVHlwZXMuU2hhcmVkU3RyaW5nLHZhbHVlOml9fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlfXNldCB2YWx1ZShuKXt0aGlzLm1vZGVsLnZhbHVlPW59Z2V0IHR5cGUoKXtyZXR1cm4g'@; put 'ZS5UeXBlcy5TaGFyZWRTdHJpbmd9Z2V0IGVmZmVjdGl2ZVR5cGUoKXtyZXR1cm4gZS5UeXBlcy5TaGFyZWRTdHJpbmd9Z2V0IGFkZHJlc3MoKXtyZXR1cm4gdGhpcy5tb2RlbC5hZGRyZXNzfXNldCBhZGRyZXNzKG4pe3RoaXMubW9kZWwuYWRkcmVzcz1ufXRvQ3N2U3RyaW5nKCl7cmV0dXJu'@; put 'IHRoaXMubW9kZWwudmFsdWUudG9TdHJpbmcoKX1yZWxlYXNlKCl7fXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMubW9kZWwudmFsdWUudG9TdHJpbmcoKX19fSx7dDplLlR5cGVzLlJpY2hUZXh0LGY6Y2xhc3N7Y29uc3RydWN0b3IobixpKXt0aGlzLm1vZGVsPXthZGRyZXNzOm4uYWRkcmVzcyx0'@; put 'eXBlOmUuVHlwZXMuU3RyaW5nLHZhbHVlOml9fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlfXNldCB2YWx1ZShuKXt0aGlzLm1vZGVsLnZhbHVlPW59dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZS5yaWNoVGV4dC5tYXAobj0+bi50ZXh0KS5qb2luKCIiKX1n'@; put 'ZXQgdHlwZSgpe3JldHVybiBlLlR5cGVzLlJpY2hUZXh0fWdldCBlZmZlY3RpdmVUeXBlKCl7cmV0dXJuIGUuVHlwZXMuUmljaFRleHR9Z2V0IGFkZHJlc3MoKXtyZXR1cm4gdGhpcy5tb2RlbC5hZGRyZXNzfXNldCBhZGRyZXNzKG4pe3RoaXMubW9kZWwuYWRkcmVzcz1ufXRvQ3N2U3RyaW5n'@; put 'KCl7cmV0dXJuYCIke3RoaXMudGV4dC5yZXBsYWNlKC8iL2csJyIiJyl9ImB9cmVsZWFzZSgpe319fSx7dDplLlR5cGVzLkJvb2xlYW4sZjpjbGFzc3tjb25zdHJ1Y3RvcihuLGkpe3RoaXMubW9kZWw9e2FkZHJlc3M6bi5hZGRyZXNzLHR5cGU6ZS5UeXBlcy5Cb29sZWFuLHZhbHVlOml9fWdl'@; put 'dCB2YWx1ZSgpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlfXNldCB2YWx1ZShuKXt0aGlzLm1vZGVsLnZhbHVlPW59Z2V0IHR5cGUoKXtyZXR1cm4gZS5UeXBlcy5Cb29sZWFufWdldCBlZmZlY3RpdmVUeXBlKCl7cmV0dXJuIGUuVHlwZXMuQm9vbGVhbn1nZXQgYWRkcmVzcygpe3JldHVybiB0'@; put 'aGlzLm1vZGVsLmFkZHJlc3N9c2V0IGFkZHJlc3Mobil7dGhpcy5tb2RlbC5hZGRyZXNzPW59dG9Dc3ZTdHJpbmcoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZT8xOjB9cmVsZWFzZSgpe310b1N0cmluZygpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlLnRvU3RyaW5nKCl9fX0se3Q6ZS5UeXBl'@; put 'cy5FcnJvcixmOmNsYXNze2NvbnN0cnVjdG9yKG4saSl7dGhpcy5tb2RlbD17YWRkcmVzczpuLmFkZHJlc3MsdHlwZTplLlR5cGVzLkVycm9yLHZhbHVlOml9fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlfXNldCB2YWx1ZShuKXt0aGlzLm1vZGVsLnZhbHVlPW59Z2V0IHR5'@; put 'cGUoKXtyZXR1cm4gZS5UeXBlcy5FcnJvcn1nZXQgZWZmZWN0aXZlVHlwZSgpe3JldHVybiBlLlR5cGVzLkVycm9yfWdldCBhZGRyZXNzKCl7cmV0dXJuIHRoaXMubW9kZWwuYWRkcmVzc31zZXQgYWRkcmVzcyhuKXt0aGlzLm1vZGVsLmFkZHJlc3M9bn10b0NzdlN0cmluZygpe3JldHVybiB0'@; put 'aGlzLnRvU3RyaW5nKCl9cmVsZWFzZSgpe310b1N0cmluZygpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlLmVycm9yLnRvU3RyaW5nKCl9fX1dLnJlZHVjZSgobixpKT0+KG5baS50XT1pLmYsbiksW10pLGNyZWF0ZShuLGksaCl7Y29uc3QgZj10aGlzLnR5cGVzW25dO2lmKCFmKXRocm93IG5l'@; put 'dyBFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBWYWx1ZSBvZiB0eXBlICIrbik7cmV0dXJuIG5ldyBmKGksaCl9fTtFLmV4cG9ydHM9ZX0seyIuLi91dGlscy9jb2wtY2FjaGUiOjE5LCIuLi91dGlscy9zaGFyZWQtZm9ybXVsYSI6MjMsIi4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuL2VudW1z'@; put 'Ijo3LCIuL25vdGUiOjl9XSw0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vdXRpbHMvdW5kZXItZGFzaCIpLGE9cygiLi9lbnVtcyIpLG89cygiLi4vdXRpbHMvY29sLWNhY2hlIik7Y2xhc3Mgcntjb25zdHJ1Y3RvcihlLGwsbil7dGhpcy5fd29ya3NoZWV0'@; put 'PWUsdGhpcy5fbnVtYmVyPWwsITEhPT1uJiYodGhpcy5kZWZuPW4pfWdldCBudW1iZXIoKXtyZXR1cm4gdGhpcy5fbnVtYmVyfWdldCB3b3Jrc2hlZXQoKXtyZXR1cm4gdGhpcy5fd29ya3NoZWV0fWdldCBsZXR0ZXIoKXtyZXR1cm4gby5uMmwodGhpcy5fbnVtYmVyKX1nZXQgaXNDdXN0b21X'@; put 'aWR0aCgpe3JldHVybiB2b2lkIDAhPT10aGlzLndpZHRoJiY5IT09dGhpcy53aWR0aH1nZXQgZGVmbigpe3JldHVybntoZWFkZXI6dGhpcy5faGVhZGVyLGtleTp0aGlzLmtleSx3aWR0aDp0aGlzLndpZHRoLHN0eWxlOnRoaXMuc3R5bGUsaGlkZGVuOnRoaXMuaGlkZGVuLG91dGxpbmVMZXZl'@; put 'bDp0aGlzLm91dGxpbmVMZXZlbH19c2V0IGRlZm4oZSl7ZT8odGhpcy5rZXk9ZS5rZXksdGhpcy53aWR0aD12b2lkIDAhPT1lLndpZHRoP2Uud2lkdGg6OSx0aGlzLm91dGxpbmVMZXZlbD1lLm91dGxpbmVMZXZlbCx0aGlzLnN0eWxlPWUuc3R5bGU/ZS5zdHlsZTp7fSx0aGlzLmhlYWRlcj1l'@; put 'LmhlYWRlcix0aGlzLl9oaWRkZW49ISFlLmhpZGRlbik6KGRlbGV0ZSB0aGlzLl9oZWFkZXIsZGVsZXRlIHRoaXMuX2tleSxkZWxldGUgdGhpcy53aWR0aCx0aGlzLnN0eWxlPXt9LHRoaXMub3V0bGluZUxldmVsPTApfWdldCBoZWFkZXJzKCl7cmV0dXJuIHRoaXMuX2hlYWRlciYmdGhpcy5f'@; put 'aGVhZGVyIGluc3RhbmNlb2YgQXJyYXk/dGhpcy5faGVhZGVyOlt0aGlzLl9oZWFkZXJdfWdldCBoZWFkZXIoKXtyZXR1cm4gdGhpcy5faGVhZGVyfXNldCBoZWFkZXIoZSl7dm9pZCAwIT09ZT8odGhpcy5faGVhZGVyPWUsdGhpcy5oZWFkZXJzLmZvckVhY2goKGwsbik9Pnt0aGlzLl93b3Jr'@; put 'c2hlZXQuZ2V0Q2VsbChuKzEsdGhpcy5udW1iZXIpLnZhbHVlPWx9KSk6dGhpcy5faGVhZGVyPXZvaWQgMH1nZXQga2V5KCl7cmV0dXJuIHRoaXMuX2tleX1zZXQga2V5KGUpeyh0aGlzLl9rZXkmJnRoaXMuX3dvcmtzaGVldC5nZXRDb2x1bW5LZXkodGhpcy5fa2V5KSk9PT10aGlzJiZ0aGlz'@; put 'Ll93b3Jrc2hlZXQuZGVsZXRlQ29sdW1uS2V5KHRoaXMuX2tleSksdGhpcy5fa2V5PWUsZSYmdGhpcy5fd29ya3NoZWV0LnNldENvbHVtbktleSh0aGlzLl9rZXksdGhpcyl9Z2V0IGhpZGRlbigpe3JldHVybiEhdGhpcy5faGlkZGVufXNldCBoaWRkZW4oZSl7dGhpcy5faGlkZGVuPWV9Z2V0'@; put 'IG91dGxpbmVMZXZlbCgpe3JldHVybiB0aGlzLl9vdXRsaW5lTGV2ZWx8fDB9c2V0IG91dGxpbmVMZXZlbChlKXt0aGlzLl9vdXRsaW5lTGV2ZWw9ZX1nZXQgY29sbGFwc2VkKCl7cmV0dXJuISEodGhpcy5fb3V0bGluZUxldmVsJiZ0aGlzLl9vdXRsaW5lTGV2ZWw+PXRoaXMuX3dvcmtzaGVl'@; put 'dC5wcm9wZXJ0aWVzLm91dGxpbmVMZXZlbENvbCl9dG9TdHJpbmcoKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe2tleTp0aGlzLmtleSx3aWR0aDp0aGlzLndpZHRoLGhlYWRlcnM6dGhpcy5oZWFkZXJzLmxlbmd0aD90aGlzLmhlYWRlcnM6dm9pZCAwfSl9ZXF1aXZhbGVudFRvKGUpe3JldHVy'@; put 'biB0aGlzLndpZHRoPT09ZS53aWR0aCYmdGhpcy5oaWRkZW49PT1lLmhpZGRlbiYmdGhpcy5vdXRsaW5lTGV2ZWw9PT1lLm91dGxpbmVMZXZlbCYmYi5pc0VxdWFsKHRoaXMuc3R5bGUsZS5zdHlsZSl9Z2V0IGlzRGVmYXVsdCgpe2lmKHRoaXMuaXNDdXN0b21XaWR0aHx8dGhpcy5oaWRkZW58'@; put 'fHRoaXMub3V0bGluZUxldmVsKXJldHVybiExO2NvbnN0IGU9dGhpcy5zdHlsZTtyZXR1cm4hZXx8IShlLmZvbnR8fGUubnVtRm10fHxlLmFsaWdubWVudHx8ZS5ib3JkZXJ8fGUuZmlsbHx8ZS5wcm90ZWN0aW9uKX1nZXQgaGVhZGVyQ291bnQoKXtyZXR1cm4gdGhpcy5oZWFkZXJzLmxlbmd0'@; put 'aH1lYWNoQ2VsbChlLGwpe2NvbnN0IG49dGhpcy5udW1iZXI7bHx8KGw9ZSxlPW51bGwpLHRoaXMuX3dvcmtzaGVldC5lYWNoUm93KGUsKGksaCk9PntsKGkuZ2V0Q2VsbChuKSxoKX0pfWdldCB2YWx1ZXMoKXtjb25zdCBlPVtdO3JldHVybiB0aGlzLmVhY2hDZWxsKChsLG4pPT57bCYmbC50'@; put 'eXBlIT09YS5WYWx1ZVR5cGUuTnVsbCYmKGVbbl09bC52YWx1ZSl9KSxlfXNldCB2YWx1ZXMoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IGw9dGhpcy5udW1iZXI7bGV0IG49MDtlLmhhc093blByb3BlcnR5KCIwIikmJihuPTEpLGUuZm9yRWFjaCgoaSxoKT0+e3RoaXMuX3dvcmtzaGVldC5nZXRD'@; put 'ZWxsKGgrbixsKS52YWx1ZT1pfSl9X2FwcGx5U3R5bGUoZSxsKXtyZXR1cm4gdGhpcy5zdHlsZVtlXT1sLHRoaXMuZWFjaENlbGwobj0+e25bZV09bH0pLGx9Z2V0IG51bUZtdCgpe3JldHVybiB0aGlzLnN0eWxlLm51bUZtdH1zZXQgbnVtRm10KGUpe3RoaXMuX2FwcGx5U3R5bGUoIm51bUZt'@; put 'dCIsZSl9Z2V0IGZvbnQoKXtyZXR1cm4gdGhpcy5zdHlsZS5mb250fXNldCBmb250KGUpe3RoaXMuX2FwcGx5U3R5bGUoImZvbnQiLGUpfWdldCBhbGlnbm1lbnQoKXtyZXR1cm4gdGhpcy5zdHlsZS5hbGlnbm1lbnR9c2V0IGFsaWdubWVudChlKXt0aGlzLl9hcHBseVN0eWxlKCJhbGlnbm1l'@; put 'bnQiLGUpfWdldCBwcm90ZWN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUucHJvdGVjdGlvbn1zZXQgcHJvdGVjdGlvbihlKXt0aGlzLl9hcHBseVN0eWxlKCJwcm90ZWN0aW9uIixlKX1nZXQgYm9yZGVyKCl7cmV0dXJuIHRoaXMuc3R5bGUuYm9yZGVyfXNldCBib3JkZXIoZSl7dGhpcy5fYXBw'@; put 'bHlTdHlsZSgiYm9yZGVyIixlKX1nZXQgZmlsbCgpe3JldHVybiB0aGlzLnN0eWxlLmZpbGx9c2V0IGZpbGwoZSl7dGhpcy5fYXBwbHlTdHlsZSgiZmlsbCIsZSl9c3RhdGljIHRvTW9kZWwoZSl7Y29uc3QgbD1bXTtsZXQgbj1udWxsO3JldHVybiBlJiZlLmZvckVhY2goKGksaCk9PntpLmlz'@; put 'RGVmYXVsdD9uJiYobj1udWxsKTpuJiZpLmVxdWl2YWxlbnRUbyhuKT9uLm1heD1oKzE6KG49e21pbjpoKzEsbWF4OmgrMSx3aWR0aDp2b2lkIDAhPT1pLndpZHRoP2kud2lkdGg6OSxzdHlsZTppLnN0eWxlLGlzQ3VzdG9tV2lkdGg6aS5pc0N1c3RvbVdpZHRoLGhpZGRlbjppLmhpZGRlbixv'@; put 'dXRsaW5lTGV2ZWw6aS5vdXRsaW5lTGV2ZWwsY29sbGFwc2VkOmkuY29sbGFwc2VkfSxsLnB1c2gobikpfSksbC5sZW5ndGg/bDp2b2lkIDB9c3RhdGljIGZyb21Nb2RlbChlLGwpe2NvbnN0IG49W107bGV0IGk9MSxoPTA7Zm9yKGw9KGw9bHx8W10pLnNvcnQoZnVuY3Rpb24oZix1KXtyZXR1'@; put 'cm4gZi5taW4tdS5taW59KTtoPGwubGVuZ3RoOyl7Y29uc3QgZj1sW2grK107Zm9yKDtpPGYubWluOyluLnB1c2gobmV3IHIoZSxpKyspKTtmb3IoO2k8PWYubWF4OyluLnB1c2gobmV3IHIoZSxpKyssZikpfXJldHVybiBuLmxlbmd0aD9uOm51bGx9fUUuZXhwb3J0cz1yfSx7Ii4uL3V0aWxz'@; put 'L2NvbC1jYWNoZSI6MTksIi4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuL2VudW1zIjo3fV0sNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9Y2xhc3N7Y29uc3RydWN0b3IoYil7dGhpcy5tb2RlbD1ifHx7fX1hZGQoYixhKXtyZXR1cm4gdGhpcy5tb2RlbFtiXT1h'@; put 'fWZpbmQoYil7cmV0dXJuIHRoaXMubW9kZWxbYl19cmVtb3ZlKGIpe3RoaXMubW9kZWxbYl09dm9pZCAwfX19LHt9XSw2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vdXRpbHMvdW5kZXItZGFzaCIpLGE9cygiLi4vdXRpbHMvY29sLWNhY2hlIiksbz1zKCIu'@; put 'Li91dGlscy9jZWxsLW1hdHJpeCIpLHI9cygiLi9yYW5nZSIpLHQ9L1skXShcdyspWyRdKFxkKykoOlskXShcdyspWyRdKFxkKykpPy87RS5leHBvcnRzPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5tYXRyaXhNYXA9e319Z2V0TWF0cml4KGUpe3JldHVybiB0aGlzLm1hdHJpeE1hcFtlXXx8'@; put 'KHRoaXMubWF0cml4TWFwW2VdPW5ldyBvKX1hZGQoZSxsKXtjb25zdCBuPWEuZGVjb2RlRXgoZSk7dGhpcy5hZGRFeChuLGwpfWFkZEV4KGUsbCl7Y29uc3Qgbj10aGlzLmdldE1hdHJpeChsKTtpZihlLnRvcClmb3IobGV0IGk9ZS5sZWZ0O2k8PWUucmlnaHQ7aSsrKWZvcihsZXQgaD1lLnRv'@; put 'cDtoPD1lLmJvdHRvbTtoKyspe2NvbnN0IGY9e3NoZWV0TmFtZTplLnNoZWV0TmFtZSxhZGRyZXNzOmEubjJsKGkpK2gscm93OmgsY29sOml9O24uYWRkQ2VsbEV4KGYpfWVsc2Ugbi5hZGRDZWxsRXgoZSl9cmVtb3ZlKGUsbCl7Y29uc3Qgbj1hLmRlY29kZUV4KGUpO3RoaXMucmVtb3ZlRXgo'@; put 'bixsKX1yZW1vdmVFeChlLGwpe3RoaXMuZ2V0TWF0cml4KGwpLnJlbW92ZUNlbGxFeChlKX1yZW1vdmVBbGxOYW1lcyhlKXtiLmVhY2godGhpcy5tYXRyaXhNYXAsbD0+e2wucmVtb3ZlQ2VsbEV4KGUpfSl9Zm9yRWFjaChlKXtiLmVhY2godGhpcy5tYXRyaXhNYXAsKGwsbik9PntsLmZvckVh'@; put 'Y2goaT0+e2UobixpKX0pfSl9Z2V0TmFtZXMoZSl7cmV0dXJuIHRoaXMuZ2V0TmFtZXNFeChhLmRlY29kZUV4KGUpKX1nZXROYW1lc0V4KGUpe3JldHVybiBiLm1hcCh0aGlzLm1hdHJpeE1hcCwobCxuKT0+bC5maW5kQ2VsbEV4KGUpJiZuKS5maWx0ZXIoQm9vbGVhbil9X2V4cGxvcmUoZSxs'@; put 'KXtsLm1hcms9ITE7Y29uc3R7c2hlZXROYW1lOm59PWwsaT1uZXcgcihsLnJvdyxsLmNvbCxsLnJvdyxsLmNvbCxuKTtsZXQgaCxmO2Z1bmN0aW9uIHUoZCx2KXtjb25zdCBfPWUuZmluZENlbGxBdChuLGQsbC5jb2wpO3JldHVybiEoIV98fCFfLm1hcmt8fChpW3ZdPWQsXy5tYXJrPSExLDAp'@; put 'KX1mb3IoZj1sLnJvdy0xO3UoZiwidG9wIik7Zi0tKTtmb3IoZj1sLnJvdysxO3UoZiwiYm90dG9tIik7ZisrKTtmdW5jdGlvbiBwKGQsdil7Y29uc3QgXz1bXTtmb3IoZj1pLnRvcDtmPD1pLmJvdHRvbTtmKyspe2NvbnN0IEE9ZS5maW5kQ2VsbEF0KG4sZixkKTtpZighQXx8IUEubWFyayly'@; put 'ZXR1cm4hMTtfLnB1c2goQSl9aVt2XT1kO2ZvcihsZXQgQT0wO0E8Xy5sZW5ndGg7QSsrKV9bQV0ubWFyaz0hMTtyZXR1cm4hMH1mb3IoaD1sLmNvbC0xO3AoaCwibGVmdCIpO2gtLSk7Zm9yKGg9bC5jb2wrMTtwKGgsInJpZ2h0Iik7aCsrKTtyZXR1cm4gaX1nZXRSYW5nZXMoZSxsKXtyZXR1'@; put 'cm4obD1sfHx0aGlzLm1hdHJpeE1hcFtlXSk/KGwuZm9yRWFjaChuPT57bi5tYXJrPSEwfSkse25hbWU6ZSxyYW5nZXM6bC5tYXAobj0+bi5tYXJrJiZ0aGlzLl9leHBsb3JlKGwsbikpLmZpbHRlcihCb29sZWFuKS5tYXAobj0+bi4kc2hvcnRSYW5nZSl9KTp7bmFtZTplLHJhbmdlczpbXX19'@; put 'bm9ybWFsaXNlTWF0cml4KGUsbCl7ZS5mb3JFYWNoSW5TaGVldChsLChuLGksaCk9PntuJiYobi5yb3c9PT1pJiZuLmNvbD09PWh8fChuLnJvdz1pLG4uY29sPWgsbi5hZGRyZXNzPWEubjJsKGgpK2kpKX0pfXNwbGljZVJvd3MoZSxsLG4saSl7Yi5lYWNoKHRoaXMubWF0cml4TWFwLGg9Pnto'@; put 'LnNwbGljZVJvd3MoZSxsLG4saSksdGhpcy5ub3JtYWxpc2VNYXRyaXgoaCxlKX0pfXNwbGljZUNvbHVtbnMoZSxsLG4saSl7Yi5lYWNoKHRoaXMubWF0cml4TWFwLGg9PntoLnNwbGljZUNvbHVtbnMoZSxsLG4saSksdGhpcy5ub3JtYWxpc2VNYXRyaXgoaCxlKX0pfWdldCBtb2RlbCgpe3Jl'@; put 'dHVybiBiLm1hcCh0aGlzLm1hdHJpeE1hcCwoZSxsKT0+dGhpcy5nZXRSYW5nZXMobCxlKSkuZmlsdGVyKGU9PmUucmFuZ2VzLmxlbmd0aCl9c2V0IG1vZGVsKGUpe2NvbnN0IGw9dGhpcy5tYXRyaXhNYXA9e307ZS5mb3JFYWNoKG49Pntjb25zdCBpPWxbbi5uYW1lXT1uZXcgbztuLnJhbmdl'@; put 'cy5mb3JFYWNoKGg9Pnt0LnRlc3QoaC5zcGxpdCgiISIpLnBvcCgpfHwiIikmJmkuYWRkQ2VsbChoKX0pfSl9fX0seyIuLi91dGlscy9jZWxsLW1hdHJpeCI6MTgsIi4uL3V0aWxzL2NvbC1jYWNoZSI6MTksIi4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuL3JhbmdlIjoxMH1dLDc6W2Z1bmN0'@; put 'aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPXtWYWx1ZVR5cGU6e051bGw6MCxNZXJnZToxLE51bWJlcjoyLFN0cmluZzozLERhdGU6NCxIeXBlcmxpbms6NSxGb3JtdWxhOjYsU2hhcmVkU3RyaW5nOjcsUmljaFRleHQ6OCxCb29sZWFuOjksRXJyb3I6MTB9LEZvcm11bGFUeXBl'@; put 'OntOb25lOjAsTWFzdGVyOjEsU2hhcmVkOjJ9LFJlbGF0aW9uc2hpcFR5cGU6e05vbmU6MCxPZmZpY2VEb2N1bWVudDoxLFdvcmtzaGVldDoyLENhbGNDaGFpbjozLFNoYXJlZFN0cmluZ3M6NCxTdHlsZXM6NSxUaGVtZTo2LEh5cGVybGluazo3fSxEb2N1bWVudFR5cGU6e1hsc3g6MX0sUmVh'@; put 'ZGluZ09yZGVyOntMZWZ0VG9SaWdodDoxLFJpZ2h0VG9MZWZ0OjJ9LEVycm9yVmFsdWU6e05vdEFwcGxpY2FibGU6IiNOL0EiLFJlZjoiI1JFRiEiLE5hbWU6IiNOQU1FPyIsRGl2WmVybzoiI0RJVi8wISIsTnVsbDoiI05VTEwhIixWYWx1ZToiI1ZBTFVFISIsTnVtOiIjTlVNISJ9fX0se31d'@; put 'LDg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi91dGlscy9jb2wtY2FjaGUiKSxhPXMoIi4vYW5jaG9yIik7RS5leHBvcnRzPWNsYXNze2NvbnN0cnVjdG9yKG8scil7dGhpcy53b3Jrc2hlZXQ9byx0aGlzLm1vZGVsPXJ9Z2V0IG1vZGVsKCl7c3dpdGNoKHRo'@; put 'aXMudHlwZSl7Y2FzZSJiYWNrZ3JvdW5kIjpyZXR1cm57dHlwZTp0aGlzLnR5cGUsaW1hZ2VJZDp0aGlzLmltYWdlSWR9O2Nhc2UiaW1hZ2UiOnJldHVybnt0eXBlOnRoaXMudHlwZSxpbWFnZUlkOnRoaXMuaW1hZ2VJZCxoeXBlcmxpbmtzOnRoaXMucmFuZ2UuaHlwZXJsaW5rcyxyYW5nZTp7'@; put 'dGw6dGhpcy5yYW5nZS50bC5tb2RlbCxicjp0aGlzLnJhbmdlLmJyJiZ0aGlzLnJhbmdlLmJyLm1vZGVsLGV4dDp0aGlzLnJhbmdlLmV4dCxlZGl0QXM6dGhpcy5yYW5nZS5lZGl0QXN9fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBJbWFnZSBUeXBlIil9fXNldCBtb2RlbChv'@; put 'KXtsZXR7dHlwZTpyLGltYWdlSWQ6dCxyYW5nZTplLGh5cGVybGlua3M6bH09bztpZih0aGlzLnR5cGU9cix0aGlzLmltYWdlSWQ9dCwiaW1hZ2UiPT09cilpZigic3RyaW5nIj09dHlwZW9mIGUpe2NvbnN0IG49Yi5kZWNvZGUoZSk7dGhpcy5yYW5nZT17dGw6bmV3IGEodGhpcy53b3Jrc2hl'@; put 'ZXQse2NvbDpuLmxlZnQscm93Om4udG9wfSwtMSksYnI6bmV3IGEodGhpcy53b3Jrc2hlZXQse2NvbDpuLnJpZ2h0LHJvdzpuLmJvdHRvbX0sMCksZWRpdEFzOiJvbmVDZWxsIn19ZWxzZSB0aGlzLnJhbmdlPXt0bDpuZXcgYSh0aGlzLndvcmtzaGVldCxlLnRsLDApLGJyOmUuYnImJm5ldyBh'@; put 'KHRoaXMud29ya3NoZWV0LGUuYnIsMCksZXh0OmUuZXh0LGVkaXRBczplLmVkaXRBcyxoeXBlcmxpbmtzOmx8fGUuaHlwZXJsaW5rc319fX0seyIuLi91dGlscy9jb2wtY2FjaGUiOjE5LCIuL2FuY2hvciI6Mn1dLDk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIu'@; put 'Li91dGlscy91bmRlci1kYXNoIik7Y2xhc3MgYXtjb25zdHJ1Y3RvcihyKXt0aGlzLm5vdGU9cn1nZXQgbW9kZWwoKXtsZXQgcj1udWxsO3JldHVybiByPSJzdHJpbmciPT10eXBlb2YgdGhpcy5ub3RlP3t0eXBlOiJub3RlIixub3RlOnt0ZXh0czpbe3RleHQ6dGhpcy5ub3RlfV19fTp7dHlw'@; put 'ZToibm90ZSIsbm90ZTp0aGlzLm5vdGV9LGIuZGVlcE1lcmdlKHt9LGEuREVGQVVMVF9DT05GSUdTLHIpfXNldCBtb2RlbChyKXtjb25zdHtub3RlOnR9PXIse3RleHRzOmV9PXQ7dGhpcy5ub3RlPTE9PT1lLmxlbmd0aCYmMT09PU9iamVjdC5rZXlzKGVbMF0pLmxlbmd0aD9lWzBdLnRleHQ6'@; put 'dH1zdGF0aWMgZnJvbU1vZGVsKHIpe2NvbnN0IHQ9bmV3IGE7cmV0dXJuIHQubW9kZWw9cix0fX1hLkRFRkFVTFRfQ09ORklHUz17bm90ZTp7bWFyZ2luczp7aW5zZXRtb2RlOiJhdXRvIixpbnNldDpbLjEzLC4xMywuMjUsLjI1XX0scHJvdGVjdGlvbjp7bG9ja2VkOiJUcnVlIixsb2NrVGV4'@; put 'dDoiVHJ1ZSJ9LGVkaXRBczoiYWJzb2x1dGUifX0sRS5leHBvcnRzPWF9LHsiLi4vdXRpbHMvdW5kZXItZGFzaCI6MjZ9XSwxMDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL3V0aWxzL2NvbC1jYWNoZSIpO2NsYXNzIGF7Y29uc3RydWN0b3IoKXt0aGlzLmRl'@; put 'Y29kZShhcmd1bWVudHMpfXNldFRMQlIocix0LGUsbCxuKXtpZihhcmd1bWVudHMubGVuZ3RoPDQpe2NvbnN0IGk9Yi5kZWNvZGVBZGRyZXNzKHIpLGg9Yi5kZWNvZGVBZGRyZXNzKHQpO3RoaXMubW9kZWw9e3RvcDpNYXRoLm1pbihpLnJvdyxoLnJvdyksbGVmdDpNYXRoLm1pbihpLmNvbCxo'@; put 'LmNvbCksYm90dG9tOk1hdGgubWF4KGkucm93LGgucm93KSxyaWdodDpNYXRoLm1heChpLmNvbCxoLmNvbCksc2hlZXROYW1lOmV9LHRoaXMuc2V0VExCUihpLnJvdyxpLmNvbCxoLnJvdyxoLmNvbCxuKX1lbHNlIHRoaXMubW9kZWw9e3RvcDpNYXRoLm1pbihyLGUpLGxlZnQ6TWF0aC5taW4o'@; put 'dCxsKSxib3R0b206TWF0aC5tYXgocixlKSxyaWdodDpNYXRoLm1heCh0LGwpLHNoZWV0TmFtZTpufX1kZWNvZGUocil7c3dpdGNoKHIubGVuZ3RoKXtjYXNlIDU6dGhpcy5zZXRUTEJSKHJbMF0sclsxXSxyWzJdLHJbM10scls0XSk7YnJlYWs7Y2FzZSA0OnRoaXMuc2V0VExCUihyWzBdLHJb'@; put 'MV0sclsyXSxyWzNdKTticmVhaztjYXNlIDM6dGhpcy5zZXRUTEJSKHJbMF0sclsxXSxyWzJdKTticmVhaztjYXNlIDI6dGhpcy5zZXRUTEJSKHJbMF0sclsxXSk7YnJlYWs7Y2FzZSAxOntjb25zdCB0PXJbMF07aWYodCBpbnN0YW5jZW9mIGEpdGhpcy5tb2RlbD17dG9wOnQubW9kZWwudG9w'@; put 'LGxlZnQ6dC5tb2RlbC5sZWZ0LGJvdHRvbTp0Lm1vZGVsLmJvdHRvbSxyaWdodDp0Lm1vZGVsLnJpZ2h0LHNoZWV0TmFtZTp0LnNoZWV0TmFtZX07ZWxzZSBpZih0IGluc3RhbmNlb2YgQXJyYXkpdGhpcy5kZWNvZGUodCk7ZWxzZSBpZih0LnRvcCYmdC5sZWZ0JiZ0LmJvdHRvbSYmdC5yaWdo'@; put 'dCl0aGlzLm1vZGVsPXt0b3A6dC50b3AsbGVmdDp0LmxlZnQsYm90dG9tOnQuYm90dG9tLHJpZ2h0OnQucmlnaHQsc2hlZXROYW1lOnQuc2hlZXROYW1lfTtlbHNle2NvbnN0IGU9Yi5kZWNvZGVFeCh0KTt0aGlzLm1vZGVsPWUudG9wP3t0b3A6ZS50b3AsbGVmdDplLmxlZnQsYm90dG9tOmUu'@; put 'Ym90dG9tLHJpZ2h0OmUucmlnaHQsc2hlZXROYW1lOmUuc2hlZXROYW1lfTp7dG9wOmUucm93LGxlZnQ6ZS5jb2wsYm90dG9tOmUucm93LHJpZ2h0OmUuY29sLHNoZWV0TmFtZTplLnNoZWV0TmFtZX19YnJlYWt9Y2FzZSAwOnRoaXMubW9kZWw9e3RvcDowLGxlZnQ6MCxib3R0b206MCxyaWdo'@; put 'dDowfTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIF9nZXREaW1lbnNpb25zKCkgLSAiK3IubGVuZ3RoKX19Z2V0IHRvcCgpe3JldHVybiB0aGlzLm1vZGVsLnRvcHx8MX1zZXQgdG9wKHIpe3RoaXMubW9kZWwudG9wPXJ9Z2V0'@; put 'IGxlZnQoKXtyZXR1cm4gdGhpcy5tb2RlbC5sZWZ0fHwxfXNldCBsZWZ0KHIpe3RoaXMubW9kZWwubGVmdD1yfWdldCBib3R0b20oKXtyZXR1cm4gdGhpcy5tb2RlbC5ib3R0b218fDF9c2V0IGJvdHRvbShyKXt0aGlzLm1vZGVsLmJvdHRvbT1yfWdldCByaWdodCgpe3JldHVybiB0aGlzLm1v'@; put 'ZGVsLnJpZ2h0fHwxfXNldCByaWdodChyKXt0aGlzLm1vZGVsLnJpZ2h0PXJ9Z2V0IHNoZWV0TmFtZSgpe3JldHVybiB0aGlzLm1vZGVsLnNoZWV0TmFtZX1zZXQgc2hlZXROYW1lKHIpe3RoaXMubW9kZWwuc2hlZXROYW1lPXJ9Z2V0IF9zZXJpYWxpc2VkU2hlZXROYW1lKCl7Y29uc3R7c2hl'@; put 'ZXROYW1lOnJ9PXRoaXMubW9kZWw7cmV0dXJuIHI/L15bYS16QS1aMC05XSokLy50ZXN0KHIpP3IrIiEiOmAnJHtyfSchYDoiIn1leHBhbmQocix0LGUsbCl7KCF0aGlzLm1vZGVsLnRvcHx8cjx0aGlzLnRvcCkmJih0aGlzLnRvcD1yKSwoIXRoaXMubW9kZWwubGVmdHx8dDx0aGlzLmxlZnQp'@; put 'JiYodGhpcy5sZWZ0PXQpLCghdGhpcy5tb2RlbC5ib3R0b218fGU+dGhpcy5ib3R0b20pJiYodGhpcy5ib3R0b209ZSksKCF0aGlzLm1vZGVsLnJpZ2h0fHxsPnRoaXMucmlnaHQpJiYodGhpcy5yaWdodD1sKX1leHBhbmRSb3cocil7aWYocil7Y29uc3R7ZGltZW5zaW9uczp0LG51bWJlcjpl'@; put 'fT1yO3QmJnRoaXMuZXhwYW5kKGUsdC5taW4sZSx0Lm1heCl9fWV4cGFuZFRvQWRkcmVzcyhyKXtjb25zdCB0PWIuZGVjb2RlRXgocik7dGhpcy5leHBhbmQodC5yb3csdC5jb2wsdC5yb3csdC5jb2wpfWdldCB0bCgpe3JldHVybiBiLm4ybCh0aGlzLmxlZnQpK3RoaXMudG9wfWdldCAkdCRs'@; put 'KCl7cmV0dXJuYCQke2IubjJsKHRoaXMubGVmdCl9JCR7dGhpcy50b3B9YH1nZXQgYnIoKXtyZXR1cm4gYi5uMmwodGhpcy5yaWdodCkrdGhpcy5ib3R0b219Z2V0ICRiJHIoKXtyZXR1cm5gJCR7Yi5uMmwodGhpcy5yaWdodCl9JCR7dGhpcy5ib3R0b219YH1nZXQgcmFuZ2UoKXtyZXR1cm5g'@; put 'JHt0aGlzLl9zZXJpYWxpc2VkU2hlZXROYW1lK3RoaXMudGx9OiR7dGhpcy5icn1gfWdldCAkcmFuZ2UoKXtyZXR1cm5gJHt0aGlzLl9zZXJpYWxpc2VkU2hlZXROYW1lK3RoaXMuJHQkbH06JHt0aGlzLiRiJHJ9YH1nZXQgc2hvcnRSYW5nZSgpe3JldHVybiB0aGlzLmNvdW50PjE/dGhpcy5y'@; put 'YW5nZTp0aGlzLl9zZXJpYWxpc2VkU2hlZXROYW1lK3RoaXMudGx9Z2V0ICRzaG9ydFJhbmdlKCl7cmV0dXJuIHRoaXMuY291bnQ+MT90aGlzLiRyYW5nZTp0aGlzLl9zZXJpYWxpc2VkU2hlZXROYW1lK3RoaXMuJHQkbH1nZXQgY291bnQoKXtyZXR1cm4oMSt0aGlzLmJvdHRvbS10aGlzLnRv'@; put 'cCkqKDErdGhpcy5yaWdodC10aGlzLmxlZnQpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucmFuZ2V9aW50ZXJzZWN0cyhyKXtyZXR1cm4hKHIuc2hlZXROYW1lJiZ0aGlzLnNoZWV0TmFtZSYmci5zaGVldE5hbWUhPT10aGlzLnNoZWV0TmFtZXx8ci5ib3R0b208dGhpcy50b3B8fHIudG9wPnRo'@; put 'aXMuYm90dG9tfHxyLnJpZ2h0PHRoaXMubGVmdHx8ci5sZWZ0PnRoaXMucmlnaHQpfWNvbnRhaW5zKHIpe2NvbnN0IHQ9Yi5kZWNvZGVFeChyKTtyZXR1cm4gdGhpcy5jb250YWluc0V4KHQpfWNvbnRhaW5zRXgocil7cmV0dXJuKCFyLnNoZWV0TmFtZXx8IXRoaXMuc2hlZXROYW1lfHxyLnNo'@; put 'ZWV0TmFtZT09PXRoaXMuc2hlZXROYW1lKSYmci5yb3c+PXRoaXMudG9wJiZyLnJvdzw9dGhpcy5ib3R0b20mJnIuY29sPj10aGlzLmxlZnQmJnIuY29sPD10aGlzLnJpZ2h0fWZvckVhY2hBZGRyZXNzKHIpe2ZvcihsZXQgdD10aGlzLmxlZnQ7dDw9dGhpcy5yaWdodDt0KyspZm9yKGxldCBl'@; put 'PXRoaXMudG9wO2U8PXRoaXMuYm90dG9tO2UrKylyKGIuZW5jb2RlQWRkcmVzcyhlLHQpLGUsdCl9fUUuZXhwb3J0cz1hfSx7Ii4uL3V0aWxzL2NvbC1jYWNoZSI6MTl9XSwxMTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL3V0aWxzL3VuZGVyLWRhc2giKSxh'@; put 'PXMoIi4vZW51bXMiKSxvPXMoIi4uL3V0aWxzL2NvbC1jYWNoZSIpLHI9cygiLi9jZWxsIik7RS5leHBvcnRzPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fd29ya3NoZWV0PXQsdGhpcy5fbnVtYmVyPWUsdGhpcy5fY2VsbHM9W10sdGhpcy5zdHlsZT17fSx0aGlzLm91dGxpbmVMZXZl'@; put 'bD0wfWdldCBudW1iZXIoKXtyZXR1cm4gdGhpcy5fbnVtYmVyfWdldCB3b3Jrc2hlZXQoKXtyZXR1cm4gdGhpcy5fd29ya3NoZWV0fWNvbW1pdCgpe3RoaXMuX3dvcmtzaGVldC5fY29tbWl0Um93KHRoaXMpfWRlc3Ryb3koKXtkZWxldGUgdGhpcy5fd29ya3NoZWV0LGRlbGV0ZSB0aGlzLl9j'@; put 'ZWxscyxkZWxldGUgdGhpcy5zdHlsZX1maW5kQ2VsbCh0KXtyZXR1cm4gdGhpcy5fY2VsbHNbdC0xXX1nZXRDZWxsRXgodCl7bGV0IGU9dGhpcy5fY2VsbHNbdC5jb2wtMV07aWYoIWUpe2NvbnN0IGw9dGhpcy5fd29ya3NoZWV0LmdldENvbHVtbih0LmNvbCk7ZT1uZXcgcih0aGlzLGwsdC5h'@; put 'ZGRyZXNzKSx0aGlzLl9jZWxsc1t0LmNvbC0xXT1lfXJldHVybiBlfWdldENlbGwodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPXRoaXMuX3dvcmtzaGVldC5nZXRDb2x1bW5LZXkodCk7dD1lP2UubnVtYmVyOm8ubDJuKHQpfXJldHVybiB0aGlzLl9jZWxsc1t0LTFdfHx0aGlz'@; put 'LmdldENlbGxFeCh7YWRkcmVzczpvLmVuY29kZUFkZHJlc3ModGhpcy5fbnVtYmVyLHQpLHJvdzp0aGlzLl9udW1iZXIsY29sOnR9KX1zcGxpY2UodCxlKXtjb25zdCBsPXQrZTtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuPjI/bi0yOjApLGg9MjtoPG47aCsrKWlb'@; put 'aC0yXT1hcmd1bWVudHNbaF07Y29uc3QgZj1pLmxlbmd0aC1lLHU9dGhpcy5fY2VsbHMubGVuZ3RoO2xldCBwLGQsdjtpZihmPDApZm9yKHA9dCtpLmxlbmd0aDtwPD11O3ArKyl2PXRoaXMuX2NlbGxzW3AtMV0sZD10aGlzLl9jZWxsc1twLWYtMV0sZD8odj10aGlzLmdldENlbGwocCksdi52'@; put 'YWx1ZT1kLnZhbHVlLHYuc3R5bGU9ZC5zdHlsZSx2Ll9jb21tZW50PWQuX2NvbW1lbnQpOnYmJih2LnZhbHVlPW51bGwsdi5zdHlsZT17fSx2Ll9jb21tZW50PXZvaWQgMCk7ZWxzZSBpZihmPjApZm9yKHA9dTtwPj1sO3AtLSlkPXRoaXMuX2NlbGxzW3AtMV0sZD8odj10aGlzLmdldENlbGwo'@; put 'cCtmKSx2LnZhbHVlPWQudmFsdWUsdi5zdHlsZT1kLnN0eWxlLHYuX2NvbW1lbnQ9ZC5fY29tbWVudCk6dGhpcy5fY2VsbHNbcCtmLTFdPXZvaWQgMDtmb3IocD0wO3A8aS5sZW5ndGg7cCsrKXY9dGhpcy5nZXRDZWxsKHQrcCksdi52YWx1ZT1pW3BdLHYuc3R5bGU9e30sdi5fY29tbWVudD12'@; put 'b2lkIDB9ZWFjaENlbGwodCxlKXtpZihlfHwoZT10LHQ9bnVsbCksdCYmdC5pbmNsdWRlRW1wdHkpe2NvbnN0IGw9dGhpcy5fY2VsbHMubGVuZ3RoO2ZvcihsZXQgbj0xO248PWw7bisrKWUodGhpcy5nZXRDZWxsKG4pLG4pfWVsc2UgdGhpcy5fY2VsbHMuZm9yRWFjaCgobCxuKT0+e2wmJmwu'@; put 'dHlwZSE9PWEuVmFsdWVUeXBlLk51bGwmJmUobCxuKzEpfSl9YWRkUGFnZUJyZWFrKHQsZSl7Y29uc3QgbD10aGlzLl93b3Jrc2hlZXQsbj1NYXRoLm1heCgwLHQtMSl8fDAsaT1NYXRoLm1heCgwLGUtMSl8fDE2ODM4LGg9e2lkOnRoaXMuX251bWJlcixtYXg6aSxtYW46MX07biYmKGgubWlu'@; put 'PW4pLGwucm93QnJlYWtzLnB1c2goaCl9Z2V0IHZhbHVlcygpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuX2NlbGxzLmZvckVhY2goZT0+e2UmJmUudHlwZSE9PWEuVmFsdWVUeXBlLk51bGwmJih0W2UuY29sXT1lLnZhbHVlKX0pLHR9c2V0IHZhbHVlcyh0KXtpZih0aGlzLl9jZWxscz1bXSx0'@; put 'KWlmKHQgaW5zdGFuY2VvZiBBcnJheSl7bGV0IGU9MDt0Lmhhc093blByb3BlcnR5KCIwIikmJihlPTEpLHQuZm9yRWFjaCgobCxuKT0+e3ZvaWQgMCE9PWwmJih0aGlzLmdldENlbGxFeCh7YWRkcmVzczpvLmVuY29kZUFkZHJlc3ModGhpcy5fbnVtYmVyLG4rZSkscm93OnRoaXMuX251bWJl'@; put 'cixjb2w6bitlfSkudmFsdWU9bCl9KX1lbHNlIHRoaXMuX3dvcmtzaGVldC5lYWNoQ29sdW1uS2V5KChlLGwpPT57dm9pZCAwIT09dFtsXSYmKHRoaXMuZ2V0Q2VsbEV4KHthZGRyZXNzOm8uZW5jb2RlQWRkcmVzcyh0aGlzLl9udW1iZXIsZS5udW1iZXIpLHJvdzp0aGlzLl9udW1iZXIsY29s'@; put 'OmUubnVtYmVyfSkudmFsdWU9dFtsXSl9KX1nZXQgaGFzVmFsdWVzKCl7cmV0dXJuIGIuc29tZSh0aGlzLl9jZWxscyx0PT50JiZ0LnR5cGUhPT1hLlZhbHVlVHlwZS5OdWxsKX1nZXQgY2VsbENvdW50KCl7cmV0dXJuIHRoaXMuX2NlbGxzLmxlbmd0aH1nZXQgYWN0dWFsQ2VsbENvdW50KCl7'@; put 'bGV0IHQ9MDtyZXR1cm4gdGhpcy5lYWNoQ2VsbCgoKT0+e3QrK30pLHR9Z2V0IGRpbWVuc2lvbnMoKXtsZXQgdD0wLGU9MDtyZXR1cm4gdGhpcy5fY2VsbHMuZm9yRWFjaChsPT57bCYmbC50eXBlIT09YS5WYWx1ZVR5cGUuTnVsbCYmKCghdHx8dD5sLmNvbCkmJih0PWwuY29sKSxlPGwuY29s'@; put 'JiYoZT1sLmNvbCkpfSksdD4wP3ttaW46dCxtYXg6ZX06bnVsbH1fYXBwbHlTdHlsZSh0LGUpe3JldHVybiB0aGlzLnN0eWxlW3RdPWUsdGhpcy5fY2VsbHMuZm9yRWFjaChsPT57bCYmKGxbdF09ZSl9KSxlfWdldCBudW1GbXQoKXtyZXR1cm4gdGhpcy5zdHlsZS5udW1GbXR9c2V0IG51bUZt'@; put 'dCh0KXt0aGlzLl9hcHBseVN0eWxlKCJudW1GbXQiLHQpfWdldCBmb250KCl7cmV0dXJuIHRoaXMuc3R5bGUuZm9udH1zZXQgZm9udCh0KXt0aGlzLl9hcHBseVN0eWxlKCJmb250Iix0KX1nZXQgYWxpZ25tZW50KCl7cmV0dXJuIHRoaXMuc3R5bGUuYWxpZ25tZW50fXNldCBhbGlnbm1lbnQo'@; put 'dCl7dGhpcy5fYXBwbHlTdHlsZSgiYWxpZ25tZW50Iix0KX1nZXQgcHJvdGVjdGlvbigpe3JldHVybiB0aGlzLnN0eWxlLnByb3RlY3Rpb259c2V0IHByb3RlY3Rpb24odCl7dGhpcy5fYXBwbHlTdHlsZSgicHJvdGVjdGlvbiIsdCl9Z2V0IGJvcmRlcigpe3JldHVybiB0aGlzLnN0eWxlLmJv'@; put 'cmRlcn1zZXQgYm9yZGVyKHQpe3RoaXMuX2FwcGx5U3R5bGUoImJvcmRlciIsdCl9Z2V0IGZpbGwoKXtyZXR1cm4gdGhpcy5zdHlsZS5maWxsfXNldCBmaWxsKHQpe3RoaXMuX2FwcGx5U3R5bGUoImZpbGwiLHQpfWdldCBoaWRkZW4oKXtyZXR1cm4hIXRoaXMuX2hpZGRlbn1zZXQgaGlkZGVu'@; put 'KHQpe3RoaXMuX2hpZGRlbj10fWdldCBvdXRsaW5lTGV2ZWwoKXtyZXR1cm4gdGhpcy5fb3V0bGluZUxldmVsfHwwfXNldCBvdXRsaW5lTGV2ZWwodCl7dGhpcy5fb3V0bGluZUxldmVsPXR9Z2V0IGNvbGxhcHNlZCgpe3JldHVybiEhKHRoaXMuX291dGxpbmVMZXZlbCYmdGhpcy5fb3V0bGlu'@; put 'ZUxldmVsPj10aGlzLl93b3Jrc2hlZXQucHJvcGVydGllcy5vdXRsaW5lTGV2ZWxSb3cpfWdldCBtb2RlbCgpe2NvbnN0IHQ9W107bGV0IGU9MCxsPTA7cmV0dXJuIHRoaXMuX2NlbGxzLmZvckVhY2gobj0+e2lmKG4pe2NvbnN0IGk9bi5tb2RlbDtpJiYoKCFlfHxlPm4uY29sKSYmKGU9bi5j'@; put 'b2wpLGw8bi5jb2wmJihsPW4uY29sKSx0LnB1c2goaSkpfX0pLHRoaXMuaGVpZ2h0fHx0Lmxlbmd0aD97Y2VsbHM6dCxudW1iZXI6dGhpcy5udW1iZXIsbWluOmUsbWF4OmwsaGVpZ2h0OnRoaXMuaGVpZ2h0LHN0eWxlOnRoaXMuc3R5bGUsaGlkZGVuOnRoaXMuaGlkZGVuLG91dGxpbmVMZXZl'@; put 'bDp0aGlzLm91dGxpbmVMZXZlbCxjb2xsYXBzZWQ6dGhpcy5jb2xsYXBzZWR9Om51bGx9c2V0IG1vZGVsKHQpe2lmKHQubnVtYmVyIT09dGhpcy5fbnVtYmVyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3cgbnVtYmVyIGluIG1vZGVsIik7bGV0IGU7dGhpcy5fY2VsbHM9W10sdC5jZWxs'@; put 'cy5mb3JFYWNoKGw9Pntzd2l0Y2gobC50eXBlKXtjYXNlIHIuVHlwZXMuTWVyZ2U6YnJlYWs7ZGVmYXVsdDp7bGV0IG47aWYobC5hZGRyZXNzKW49by5kZWNvZGVBZGRyZXNzKGwuYWRkcmVzcyk7ZWxzZSBpZihlKXtjb25zdHtyb3c6aX09ZSxoPWUuY29sKzE7bj17cm93OmksY29sOmgsYWRk'@; put 'cmVzczpvLmVuY29kZUFkZHJlc3MoaSxoKSwkY29sJHJvdzpgJCR7by5uMmwoaCl9JCR7aX1gfX1lPW4sdGhpcy5nZXRDZWxsRXgobikubW9kZWw9bDticmVha319fSksdC5oZWlnaHQ/dGhpcy5oZWlnaHQ9dC5oZWlnaHQ6ZGVsZXRlIHRoaXMuaGVpZ2h0LHRoaXMuaGlkZGVuPXQuaGlkZGVu'@; put 'LHRoaXMub3V0bGluZUxldmVsPXQub3V0bGluZUxldmVsfHwwLHRoaXMuc3R5bGU9dC5zdHlsZSYmSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnN0eWxlKSl8fHt9fX19LHsiLi4vdXRpbHMvY29sLWNhY2hlIjoxOSwiLi4vdXRpbHMvdW5kZXItZGFzaCI6MjYsIi4vY2VsbCI6MywiLi9l'@; put 'bnVtcyI6N31dLDEyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vdXRpbHMvY29sLWNhY2hlIik7Y2xhc3MgYXtjb25zdHJ1Y3RvcihyLHQsZSl7dGhpcy50YWJsZT1yLHRoaXMuY29sdW1uPXQsdGhpcy5pbmRleD1lfV9zZXQocix0KXt0aGlzLnRhYmxlLmNh'@; put 'Y2hlU3RhdGUoKSx0aGlzLmNvbHVtbltyXT10fWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuY29sdW1uLm5hbWV9c2V0IG5hbWUocil7dGhpcy5fc2V0KCJuYW1lIixyKX1nZXQgZmlsdGVyQnV0dG9uKCl7cmV0dXJuIHRoaXMuY29sdW1uLmZpbHRlckJ1dHRvbn1zZXQgZmlsdGVyQnV0dG9uKHIp'@; put 'e3RoaXMuY29sdW1uLmZpbHRlckJ1dHRvbj1yfWdldCBzdHlsZSgpe3JldHVybiB0aGlzLmNvbHVtbi5zdHlsZX1zZXQgc3R5bGUocil7dGhpcy5jb2x1bW4uc3R5bGU9cn1nZXQgdG90YWxzUm93TGFiZWwoKXtyZXR1cm4gdGhpcy5jb2x1bW4udG90YWxzUm93TGFiZWx9c2V0IHRvdGFsc1Jv'@; put 'd0xhYmVsKHIpe3RoaXMuX3NldCgidG90YWxzUm93TGFiZWwiLHIpfWdldCB0b3RhbHNSb3dGdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbHVtbi50b3RhbHNSb3dGdW5jdGlvbn1zZXQgdG90YWxzUm93RnVuY3Rpb24ocil7dGhpcy5fc2V0KCJ0b3RhbHNSb3dGdW5jdGlvbiIscil9Z2V0IHRv'@; put 'dGFsc1Jvd1Jlc3VsdCgpe3JldHVybiB0aGlzLmNvbHVtbi50b3RhbHNSb3dSZXN1bHR9c2V0IHRvdGFsc1Jvd1Jlc3VsdChyKXt0aGlzLl9zZXQoInRvdGFsc1Jvd1Jlc3VsdCIscil9Z2V0IHRvdGFsc1Jvd0Zvcm11bGEoKXtyZXR1cm4gdGhpcy5jb2x1bW4udG90YWxzUm93Rm9ybXVsYX1z'@; put 'ZXQgdG90YWxzUm93Rm9ybXVsYShyKXt0aGlzLl9zZXQoInRvdGFsc1Jvd0Zvcm11bGEiLHIpfX1FLmV4cG9ydHM9Y2xhc3N7Y29uc3RydWN0b3IobyxyKXt0aGlzLndvcmtzaGVldD1vLHImJih0aGlzLnRhYmxlPXIsdGhpcy52YWxpZGF0ZSgpLHRoaXMuc3RvcmUoKSl9Z2V0Rm9ybXVsYShv'@; put 'KXtzd2l0Y2goby50b3RhbHNSb3dGdW5jdGlvbil7Y2FzZSJub25lIjpyZXR1cm4gbnVsbDtjYXNlImF2ZXJhZ2UiOnJldHVybmBTVUJUT1RBTCgxMDEsJHt0aGlzLnRhYmxlLm5hbWV9WyR7by5uYW1lfV0pYDtjYXNlImNvdW50TnVtcyI6cmV0dXJuYFNVQlRPVEFMKDEwMiwke3RoaXMudGFi'@; put 'bGUubmFtZX1bJHtvLm5hbWV9XSlgO2Nhc2UiY291bnQiOnJldHVybmBTVUJUT1RBTCgxMDMsJHt0aGlzLnRhYmxlLm5hbWV9WyR7by5uYW1lfV0pYDtjYXNlIm1heCI6cmV0dXJuYFNVQlRPVEFMKDEwNCwke3RoaXMudGFibGUubmFtZX1bJHtvLm5hbWV9XSlgO2Nhc2UibWluIjpyZXR1cm5g'@; put 'U1VCVE9UQUwoMTA1LCR7dGhpcy50YWJsZS5uYW1lfVske28ubmFtZX1dKWA7Y2FzZSJzdGREZXYiOnJldHVybmBTVUJUT1RBTCgxMDYsJHt0aGlzLnRhYmxlLm5hbWV9WyR7by5uYW1lfV0pYDtjYXNlInZhciI6cmV0dXJuYFNVQlRPVEFMKDEwNywke3RoaXMudGFibGUubmFtZX1bJHtvLm5h'@; put 'bWV9XSlgO2Nhc2Uic3VtIjpyZXR1cm5gU1VCVE9UQUwoMTA5LCR7dGhpcy50YWJsZS5uYW1lfVske28ubmFtZX1dKWA7Y2FzZSJjdXN0b20iOnJldHVybiBvLnRvdGFsc1Jvd0Zvcm11bGE7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVG90YWxzIFJvdyBGdW5jdGlvbjogIitv'@; put 'LnRvdGFsc1Jvd0Z1bmN0aW9uKX19Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMudGFibGUuY29sdW1ucy5sZW5ndGh9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnRhYmxlLnJvd3MubGVuZ3RofWdldCBmaWx0ZXJIZWlnaHQoKXtyZXR1cm4gdGhpcy5oZWlnaHQrKHRoaXMudGFibGUuaGVhZGVy'@; put 'Um93PzE6MCl9Z2V0IHRhYmxlSGVpZ2h0KCl7cmV0dXJuIHRoaXMuZmlsdGVySGVpZ2h0Kyh0aGlzLnRhYmxlLnRvdGFsc1Jvdz8xOjApfXZhbGlkYXRlKCl7Y29uc3R7dGFibGU6b309dGhpcyxyPShmLHUscCk9Pnt2b2lkIDA9PT1mW3VdJiYoZlt1XT1wKX07cihvLCJoZWFkZXJSb3ciLCEw'@; put 'KSxyKG8sInRvdGFsc1JvdyIsITEpLHIobywic3R5bGUiLHt9KSxyKG8uc3R5bGUsInRoZW1lIiwiVGFibGVTdHlsZU1lZGl1bTIiKSxyKG8uc3R5bGUsInNob3dGaXJzdENvbHVtbiIsITEpLHIoby5zdHlsZSwic2hvd0xhc3RDb2x1bW4iLCExKSxyKG8uc3R5bGUsInNob3dSb3dTdHJpcGVz'@; put 'IiwhMSkscihvLnN0eWxlLCJzaG93Q29sdW1uU3RyaXBlcyIsITEpO2NvbnN0IHQ9KGYsdSk9PntpZighZil0aHJvdyBuZXcgRXJyb3IodSl9O3Qoby5yZWYsIlRhYmxlIG11c3QgaGF2ZSByZWYiKSx0KG8uY29sdW1ucywiVGFibGUgbXVzdCBoYXZlIGNvbHVtbiBkZWZpbml0aW9ucyIpLHQo'@; put 'by5yb3dzLCJUYWJsZSBtdXN0IGhhdmUgcm93IGRlZmluaXRpb25zIiksby50bD1iLmRlY29kZUFkZHJlc3Moby5yZWYpO2NvbnN0e3JvdzplLGNvbDpsfT1vLnRsO3QoZT4wLCJUYWJsZSBtdXN0IGJlIG9uIHZhbGlkIHJvdyIpLHQobD4wLCJUYWJsZSBtdXN0IGJlIG9uIHZhbGlkIGNvbCIp'@; put 'O2NvbnN0e3dpZHRoOm4sZmlsdGVySGVpZ2h0OmksdGFibGVIZWlnaHQ6aH09dGhpcztvLmF1dG9GaWx0ZXJSZWY9Yi5lbmNvZGUoZSxsLGUraS0xLGwrbi0xKSxvLnRhYmxlUmVmPWIuZW5jb2RlKGUsbCxlK2gtMSxsK24tMSksby5jb2x1bW5zLmZvckVhY2goKGYsdSk9Pnt0KGYubmFtZSxg'@; put 'Q29sdW1uICR7dX0gbXVzdCBoYXZlIGEgbmFtZWApLDA9PT11P3IoZiwidG90YWxzUm93TGFiZWwiLCJUb3RhbCIpOihyKGYsInRvdGFsc1Jvd0Z1bmN0aW9uIiwibm9uZSIpLGYudG90YWxzUm93Rm9ybXVsYT10aGlzLmdldEZvcm11bGEoZikpfSl9c3RvcmUoKXtjb25zdCBvPShpLGgpPT57'@; put 'aCYmT2JqZWN0LmtleXMoaCkuZm9yRWFjaChmPT57aVtmXT1oW2ZdfSl9LHt3b3Jrc2hlZXQ6cix0YWJsZTp0fT10aGlzLHtyb3c6ZSxjb2w6bH09dC50bDtsZXQgbj0wO2lmKHQuaGVhZGVyUm93KXtjb25zdCBpPXIuZ2V0Um93KGUrbisrKTt0LmNvbHVtbnMuZm9yRWFjaCgoaCxmKT0+e2Nv'@; put 'bnN0e3N0eWxlOnUsbmFtZTpwfT1oLGQ9aS5nZXRDZWxsKGwrZik7ZC52YWx1ZT1wLG8oZCx1KX0pfWlmKHQucm93cy5mb3JFYWNoKGk9Pntjb25zdCBoPXIuZ2V0Um93KGUrbisrKTtpLmZvckVhY2goKGYsdSk9Pntjb25zdCBwPWguZ2V0Q2VsbChsK3UpO3AudmFsdWU9ZixvKHAsdC5jb2x1'@; put 'bW5zW3VdLnN0eWxlKX0pfSksdC50b3RhbHNSb3cpe2NvbnN0IGk9ci5nZXRSb3coZStuKyspO3QuY29sdW1ucy5mb3JFYWNoKChoLGYpPT57Y29uc3QgdT1pLmdldENlbGwobCtmKTtpZigwPT09Zil1LnZhbHVlPWgudG90YWxzUm93TGFiZWw7ZWxzZXtjb25zdCBwPXRoaXMuZ2V0Rm9ybXVs'@; put 'YShoKTt1LnZhbHVlPXA/e2Zvcm11bGE6aC50b3RhbHNSb3dGb3JtdWxhLHJlc3VsdDpoLnRvdGFsc1Jvd1Jlc3VsdH06bnVsbH1vKHUsaC5zdHlsZSl9KX19bG9hZChvKXtjb25zdHt0YWJsZTpyfT10aGlzLHtyb3c6dCxjb2w6ZX09ci50bDtsZXQgbD0wO2lmKHIuaGVhZGVyUm93KXtjb25z'@; put 'dCBuPW8uZ2V0Um93KHQrbCsrKTtyLmNvbHVtbnMuZm9yRWFjaCgoaSxoKT0+e24uZ2V0Q2VsbChlK2gpLnZhbHVlPWkubmFtZX0pfWlmKHIucm93cy5mb3JFYWNoKG49Pntjb25zdCBpPW8uZ2V0Um93KHQrbCsrKTtuLmZvckVhY2goKGgsZik9PntpLmdldENlbGwoZStmKS52YWx1ZT1ofSl9'@; put 'KSxyLnRvdGFsc1Jvdyl7Y29uc3Qgbj1vLmdldFJvdyh0K2wrKyk7ci5jb2x1bW5zLmZvckVhY2goKGksaCk9Pntjb25zdCBmPW4uZ2V0Q2VsbChlK2gpOzA9PT1oP2YudmFsdWU9aS50b3RhbHNSb3dMYWJlbDp0aGlzLmdldEZvcm11bGEoaSkmJihmLnZhbHVlPXtmb3JtdWxhOmkudG90YWxz'@; put 'Um93Rm9ybXVsYSxyZXN1bHQ6aS50b3RhbHNSb3dSZXN1bHR9KX0pfX1nZXQgbW9kZWwoKXtyZXR1cm4gdGhpcy50YWJsZX1zZXQgbW9kZWwobyl7dGhpcy50YWJsZT1vfWNhY2hlU3RhdGUoKXt0aGlzLl9jYWNoZXx8KHRoaXMuX2NhY2hlPXtyZWY6dGhpcy5yZWYsd2lkdGg6dGhpcy53aWR0'@; put 'aCx0YWJsZUhlaWdodDp0aGlzLnRhYmxlSGVpZ2h0fSl9Y29tbWl0KCl7aWYoIXRoaXMuX2NhY2hlKXJldHVybjt0aGlzLnZhbGlkYXRlKCk7Y29uc3Qgbz1iLmRlY29kZUFkZHJlc3ModGhpcy5fY2FjaGUucmVmKTtpZih0aGlzLnJlZiE9PXRoaXMuX2NhY2hlLnJlZilmb3IobGV0IHI9MDty'@; put 'PHRoaXMuX2NhY2hlLnRhYmxlSGVpZ2h0O3IrKyl7Y29uc3QgdD10aGlzLndvcmtzaGVldC5nZXRSb3coby5yb3crcik7Zm9yKGxldCBlPTA7ZTx0aGlzLl9jYWNoZS53aWR0aDtlKyspdC5nZXRDZWxsKG8uY29sK2UpLnZhbHVlPW51bGx9ZWxzZXtmb3IobGV0IHI9dGhpcy50YWJsZUhlaWdo'@; put 'dDtyPHRoaXMuX2NhY2hlLnRhYmxlSGVpZ2h0O3IrKyl7Y29uc3QgdD10aGlzLndvcmtzaGVldC5nZXRSb3coby5yb3crcik7Zm9yKGxldCBlPTA7ZTx0aGlzLl9jYWNoZS53aWR0aDtlKyspdC5nZXRDZWxsKG8uY29sK2UpLnZhbHVlPW51bGx9Zm9yKGxldCByPTA7cjx0aGlzLnRhYmxlSGVp'@; put 'Z2h0O3IrKyl7Y29uc3QgdD10aGlzLndvcmtzaGVldC5nZXRSb3coby5yb3crcik7Zm9yKGxldCBlPXRoaXMud2lkdGg7ZTx0aGlzLl9jYWNoZS53aWR0aDtlKyspdC5nZXRDZWxsKG8uY29sK2UpLnZhbHVlPW51bGx9fXRoaXMuc3RvcmUoKX1hZGRSb3cobyxyKXt0aGlzLmNhY2hlU3RhdGUo'@; put 'KSx2b2lkIDA9PT1yP3RoaXMudGFibGUucm93cy5wdXNoKG8pOnRoaXMudGFibGUucm93cy5zcGxpY2UociwwLG8pfXJlbW92ZVJvd3Mobyl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7dGhpcy5jYWNoZVN0YXRlKCksdGhp'@; put 'cy50YWJsZS5yb3dzLnNwbGljZShvLHIpfWdldENvbHVtbihvKXtyZXR1cm4gbmV3IGEodGhpcyx0aGlzLnRhYmxlLmNvbHVtbnNbb10sbyl9YWRkQ29sdW1uKG8scix0KXt0aGlzLmNhY2hlU3RhdGUoKSx2b2lkIDA9PT10Pyh0aGlzLnRhYmxlLmNvbHVtbnMucHVzaChvKSx0aGlzLnRhYmxl'@; put 'LnJvd3MuZm9yRWFjaCgoZSxsKT0+e2UucHVzaChyW2xdKX0pKToodGhpcy50YWJsZS5jb2x1bW5zLnNwbGljZSh0LDAsbyksdGhpcy50YWJsZS5yb3dzLmZvckVhY2goKGUsbCk9PntlLnNwbGljZSh0LDAscltsXSl9KSl9cmVtb3ZlQ29sdW1ucyhvKXtsZXQgcj1hcmd1bWVudHMubGVuZ3Ro'@; put 'PjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTt0aGlzLmNhY2hlU3RhdGUoKSx0aGlzLnRhYmxlLmNvbHVtbnMuc3BsaWNlKG8sciksdGhpcy50YWJsZS5yb3dzLmZvckVhY2godD0+e3Quc3BsaWNlKG8scil9KX1fYXNzaWduKG8scix0KXt0aGlzLmNhY2hlU3RhdGUo'@; put 'KSxvW3JdPXR9Z2V0IHJlZigpe3JldHVybiB0aGlzLnRhYmxlLnJlZn1zZXQgcmVmKG8pe3RoaXMuX2Fzc2lnbih0aGlzLnRhYmxlLCJyZWYiLG8pfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMudGFibGUubmFtZX1zZXQgbmFtZShvKXt0aGlzLnRhYmxlLm5hbWU9b31nZXQgZGlzcGxheU5hbWUo'@; put 'KXtyZXR1cm4gdGhpcy50YWJsZS5kaXNwbHlOYW1lfHx0aGlzLnRhYmxlLm5hbWV9c2V0IGRpc3BsYXlOYW1lbmFtZShvKXt0aGlzLnRhYmxlLmRpc3BsYXlOYW1lPW99Z2V0IGhlYWRlclJvdygpe3JldHVybiB0aGlzLnRhYmxlLmhlYWRlclJvd31zZXQgaGVhZGVyUm93KG8pe3RoaXMuX2Fz'@; put 'c2lnbih0aGlzLnRhYmxlLCJoZWFkZXJSb3ciLG8pfWdldCB0b3RhbHNSb3coKXtyZXR1cm4gdGhpcy50YWJsZS50b3RhbHNSb3d9c2V0IHRvdGFsc1JvdyhvKXt0aGlzLl9hc3NpZ24odGhpcy50YWJsZSwidG90YWxzUm93IixvKX1nZXQgdGhlbWUoKXtyZXR1cm4gdGhpcy50YWJsZS5zdHls'@; put 'ZS5uYW1lfXNldCB0aGVtZShvKXt0aGlzLnRhYmxlLnN0eWxlLm5hbWU9b31nZXQgc2hvd0ZpcnN0Q29sdW1uKCl7cmV0dXJuIHRoaXMudGFibGUuc3R5bGUuc2hvd0ZpcnN0Q29sdW1ufXNldCBzaG93Rmlyc3RDb2x1bW4obyl7dGhpcy50YWJsZS5zdHlsZS5zaG93Rmlyc3RDb2x1bW49b31n'@; put 'ZXQgc2hvd0xhc3RDb2x1bW4oKXtyZXR1cm4gdGhpcy50YWJsZS5zdHlsZS5zaG93TGFzdENvbHVtbn1zZXQgc2hvd0xhc3RDb2x1bW4obyl7dGhpcy50YWJsZS5zdHlsZS5zaG93TGFzdENvbHVtbj1vfWdldCBzaG93Um93U3RyaXBlcygpe3JldHVybiB0aGlzLnRhYmxlLnN0eWxlLnNob3dS'@; put 'b3dTdHJpcGVzfXNldCBzaG93Um93U3RyaXBlcyhvKXt0aGlzLnRhYmxlLnN0eWxlLnNob3dSb3dTdHJpcGVzPW99Z2V0IHNob3dDb2x1bW5TdHJpcGVzKCl7cmV0dXJuIHRoaXMudGFibGUuc3R5bGUuc2hvd0NvbHVtblN0cmlwZXN9c2V0IHNob3dDb2x1bW5TdHJpcGVzKG8pe3RoaXMudGFi'@; put 'bGUuc3R5bGUuc2hvd0NvbHVtblN0cmlwZXM9b319fSx7Ii4uL3V0aWxzL2NvbC1jYWNoZSI6MTl9XSwxMzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4vd29ya3NoZWV0IiksYT1zKCIuL2RlZmluZWQtbmFtZXMiKSxvPXMoIi4uL3hsc3gveGxzeCIpLHI9cygi'@; put 'Li4vY3N2L2NzdiIpO0UuZXhwb3J0cz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2F0ZWdvcnk9IiIsdGhpcy5jb21wYW55PSIiLHRoaXMuY3JlYXRlZD1uZXcgRGF0ZSx0aGlzLmRlc2NyaXB0aW9uPSIiLHRoaXMua2V5d29yZHM9IiIsdGhpcy5tYW5hZ2VyPSIiLHRoaXMubW9kaWZpZWQ9'@; put 'dGhpcy5jcmVhdGVkLHRoaXMucHJvcGVydGllcz17fSx0aGlzLmNhbGNQcm9wZXJ0aWVzPXt9LHRoaXMuX3dvcmtzaGVldHM9W10sdGhpcy5zdWJqZWN0PSIiLHRoaXMudGl0bGU9IiIsdGhpcy52aWV3cz1bXSx0aGlzLm1lZGlhPVtdLHRoaXMuX2RlZmluZWROYW1lcz1uZXcgYX1nZXQgeGxz'@; put 'eCgpe3JldHVybiB0aGlzLl94bHN4fHwodGhpcy5feGxzeD1uZXcgbyh0aGlzKSksdGhpcy5feGxzeH1nZXQgY3N2KCl7cmV0dXJuIHRoaXMuX2Nzdnx8KHRoaXMuX2Nzdj1uZXcgcih0aGlzKSksdGhpcy5fY3N2fWdldCBuZXh0SWQoKXtmb3IobGV0IHQ9MTt0PHRoaXMuX3dvcmtzaGVldHMu'@; put 'bGVuZ3RoO3QrKylpZighdGhpcy5fd29ya3NoZWV0c1t0XSlyZXR1cm4gdDtyZXR1cm4gdGhpcy5fd29ya3NoZWV0cy5sZW5ndGh8fDF9YWRkV29ya3NoZWV0KHQsZSl7Y29uc3QgbD10aGlzLm5leHRJZDtlJiYoInN0cmluZyI9PXR5cGVvZiBlPyhjb25zb2xlLnRyYWNlKCd0YWJDb2xvciBh'@; put 'cmd1bWVudCBpcyBub3cgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQobmFtZSwge3Byb3BlcnRpZXM6IHsgdGFiQ29sb3I6IHsgYXJnYjogInJiZyB2YWx1ZSIgfSB9JyksZT17cHJvcGVydGllczp7dGFiQ29sb3I6e2FyZ2I6ZX19fSk6KGUuYXJnYnx8ZS50'@; put 'aGVtZXx8ZS5pbmRleGVkKSYmKGNvbnNvbGUudHJhY2UoInRhYkNvbG9yIGFyZ3VtZW50IGlzIG5vdyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHdvcmtib29rLmFkZFdvcmtzaGVldChuYW1lLCB7cHJvcGVydGllczogeyB0YWJDb2xvcjogeyAuLi4gfSB9IiksZT17cHJvcGVydGllczp7dGFi'@; put 'Q29sb3I6ZX19KSk7Y29uc3Qgbj10aGlzLl93b3Jrc2hlZXRzLnJlZHVjZSgoZix1KT0+KHUmJnUub3JkZXJObyk+Zj91Lm9yZGVyTm86ZiwwKSxpPU9iamVjdC5hc3NpZ24oe30sZSx7aWQ6bCxuYW1lOnQsb3JkZXJObzpuKzEsd29ya2Jvb2s6dGhpc30pLGg9bmV3IGIoaSk7cmV0dXJuIHRo'@; put 'aXMuX3dvcmtzaGVldHNbbF09aCxofXJlbW92ZVdvcmtzaGVldEV4KHQpe2RlbGV0ZSB0aGlzLl93b3Jrc2hlZXRzW3QuaWRdfXJlbW92ZVdvcmtzaGVldCh0KXtjb25zdCBlPXRoaXMuZ2V0V29ya3NoZWV0KHQpO2UmJmUuZGVzdHJveSgpfWdldFdvcmtzaGVldCh0KXtyZXR1cm4gdm9pZCAw'@; put 'PT09dD90aGlzLl93b3Jrc2hlZXRzLmZpbmQoQm9vbGVhbik6Im51bWJlciI9PXR5cGVvZiB0P3RoaXMuX3dvcmtzaGVldHNbdF06InN0cmluZyI9PXR5cGVvZiB0P3RoaXMuX3dvcmtzaGVldHMuZmluZChlPT5lJiZlLm5hbWU9PT10KTp2b2lkIDB9Z2V0IHdvcmtzaGVldHMoKXtyZXR1cm4g'@; put 'dGhpcy5fd29ya3NoZWV0cy5zbGljZSgxKS5zb3J0KCh0LGUpPT50Lm9yZGVyTm8tZS5vcmRlck5vKS5maWx0ZXIoQm9vbGVhbil9ZWFjaFNoZWV0KHQpe3RoaXMud29ya3NoZWV0cy5mb3JFYWNoKGU9Pnt0KGUsZS5pZCl9KX1nZXQgZGVmaW5lZE5hbWVzKCl7cmV0dXJuIHRoaXMuX2RlZmlu'@; put 'ZWROYW1lc31jbGVhclRoZW1lcygpe3RoaXMuX3RoZW1lcz12b2lkIDB9YWRkSW1hZ2UodCl7Y29uc3QgZT10aGlzLm1lZGlhLmxlbmd0aDtyZXR1cm4gdGhpcy5tZWRpYS5wdXNoKE9iamVjdC5hc3NpZ24oe30sdCx7dHlwZToiaW1hZ2UifSkpLGV9Z2V0SW1hZ2UodCl7cmV0dXJuIHRoaXMu'@; put 'bWVkaWFbdF19Z2V0IG1vZGVsKCl7cmV0dXJue2NyZWF0b3I6dGhpcy5jcmVhdG9yfHwiVW5rbm93biIsbGFzdE1vZGlmaWVkQnk6dGhpcy5sYXN0TW9kaWZpZWRCeXx8IlVua25vd24iLGxhc3RQcmludGVkOnRoaXMubGFzdFByaW50ZWQsY3JlYXRlZDp0aGlzLmNyZWF0ZWQsbW9kaWZpZWQ6'@; put 'dGhpcy5tb2RpZmllZCxwcm9wZXJ0aWVzOnRoaXMucHJvcGVydGllcyx3b3Jrc2hlZXRzOnRoaXMud29ya3NoZWV0cy5tYXAodD0+dC5tb2RlbCksc2hlZXRzOnRoaXMud29ya3NoZWV0cy5tYXAodD0+dC5tb2RlbCkuZmlsdGVyKEJvb2xlYW4pLGRlZmluZWROYW1lczp0aGlzLl9kZWZpbmVk'@; put 'TmFtZXMubW9kZWwsdmlld3M6dGhpcy52aWV3cyxjb21wYW55OnRoaXMuY29tcGFueSxtYW5hZ2VyOnRoaXMubWFuYWdlcix0aXRsZTp0aGlzLnRpdGxlLHN1YmplY3Q6dGhpcy5zdWJqZWN0LGtleXdvcmRzOnRoaXMua2V5d29yZHMsY2F0ZWdvcnk6dGhpcy5jYXRlZ29yeSxkZXNjcmlwdGlv'@; put 'bjp0aGlzLmRlc2NyaXB0aW9uLGxhbmd1YWdlOnRoaXMubGFuZ3VhZ2UscmV2aXNpb246dGhpcy5yZXZpc2lvbixjb250ZW50U3RhdHVzOnRoaXMuY29udGVudFN0YXR1cyx0aGVtZXM6dGhpcy5fdGhlbWVzLG1lZGlhOnRoaXMubWVkaWEsY2FsY1Byb3BlcnRpZXM6dGhpcy5jYWxjUHJvcGVy'@; put 'dGllc319c2V0IG1vZGVsKHQpe3RoaXMuY3JlYXRvcj10LmNyZWF0b3IsdGhpcy5sYXN0TW9kaWZpZWRCeT10Lmxhc3RNb2RpZmllZEJ5LHRoaXMubGFzdFByaW50ZWQ9dC5sYXN0UHJpbnRlZCx0aGlzLmNyZWF0ZWQ9dC5jcmVhdGVkLHRoaXMubW9kaWZpZWQ9dC5tb2RpZmllZCx0aGlzLmNv'@; put 'bXBhbnk9dC5jb21wYW55LHRoaXMubWFuYWdlcj10Lm1hbmFnZXIsdGhpcy50aXRsZT10LnRpdGxlLHRoaXMuc3ViamVjdD10LnN1YmplY3QsdGhpcy5rZXl3b3Jkcz10LmtleXdvcmRzLHRoaXMuY2F0ZWdvcnk9dC5jYXRlZ29yeSx0aGlzLmRlc2NyaXB0aW9uPXQuZGVzY3JpcHRpb24sdGhp'@; put 'cy5sYW5ndWFnZT10Lmxhbmd1YWdlLHRoaXMucmV2aXNpb249dC5yZXZpc2lvbix0aGlzLmNvbnRlbnRTdGF0dXM9dC5jb250ZW50U3RhdHVzLHRoaXMucHJvcGVydGllcz10LnByb3BlcnRpZXMsdGhpcy5jYWxjUHJvcGVydGllcz10LmNhbGNQcm9wZXJ0aWVzLHRoaXMuX3dvcmtzaGVldHM9'@; put 'W10sdC53b3Jrc2hlZXRzLmZvckVhY2goZT0+e2NvbnN0e2lkOmwsbmFtZTpuLHN0YXRlOml9PWUsaD10LnNoZWV0cyYmdC5zaGVldHMuZmluZEluZGV4KGY9PmYuaWQ9PT1sKTsodGhpcy5fd29ya3NoZWV0c1tsXT1uZXcgYih7aWQ6bCxuYW1lOm4sb3JkZXJObzpoLHN0YXRlOmksd29ya2Jv'@; put 'b2s6dGhpc30pKS5tb2RlbD1lfSksdGhpcy5fZGVmaW5lZE5hbWVzLm1vZGVsPXQuZGVmaW5lZE5hbWVzLHRoaXMudmlld3M9dC52aWV3cyx0aGlzLl90aGVtZXM9dC50aGVtZXMsdGhpcy5tZWRpYT10Lm1lZGlhfHxbXX19fSx7Ii4uL2Nzdi9jc3YiOjEsIi4uL3hsc3gveGxzeCI6MTQ0LCIu'@; put 'L2RlZmluZWQtbmFtZXMiOjYsIi4vd29ya3NoZWV0IjoxNH1dLDE0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vdXRpbHMvdW5kZXItZGFzaCIpLGE9cygiLi4vdXRpbHMvY29sLWNhY2hlIiksbz1zKCIuL3JhbmdlIikscj1zKCIuL3JvdyIpLHQ9cygiLi9j'@; put 'b2x1bW4iKSxlPXMoIi4vZW51bXMiKSxsPXMoIi4vaW1hZ2UiKSxuPXMoIi4vdGFibGUiKSxpPXMoIi4vZGF0YS12YWxpZGF0aW9ucyIpLGg9cygiLi4vdXRpbHMvZW5jcnlwdG9yIikse2NvcHlTdHlsZTpmfT1zKCIuLi91dGlscy9jb3B5LXN0eWxlIik7RS5leHBvcnRzPWNsYXNze2NvbnN0'@; put 'cnVjdG9yKHUpe3RoaXMuX3dvcmtib29rPSh1PXV8fHt9KS53b3JrYm9vayx0aGlzLmlkPXUuaWQsdGhpcy5vcmRlck5vPXUub3JkZXJObyx0aGlzLm5hbWU9dS5uYW1lLHRoaXMuc3RhdGU9dS5zdGF0ZXx8InZpc2libGUiLHRoaXMuX3Jvd3M9W10sdGhpcy5fY29sdW1ucz1udWxsLHRoaXMu'@; put 'X2tleXM9e30sdGhpcy5fbWVyZ2VzPXt9LHRoaXMucm93QnJlYWtzPVtdLHRoaXMucHJvcGVydGllcz1PYmplY3QuYXNzaWduKHt9LHtkZWZhdWx0Um93SGVpZ2h0OjE1LGR5RGVzY2VudDo1NSxvdXRsaW5lTGV2ZWxDb2w6MCxvdXRsaW5lTGV2ZWxSb3c6MH0sdS5wcm9wZXJ0aWVzKSx0aGlz'@; put 'LnBhZ2VTZXR1cD1PYmplY3QuYXNzaWduKHt9LHttYXJnaW5zOntsZWZ0Oi43LHJpZ2h0Oi43LHRvcDouNzUsYm90dG9tOi43NSxoZWFkZXI6LjMsZm9vdGVyOi4zfSxvcmllbnRhdGlvbjoicG9ydHJhaXQiLGhvcml6b250YWxEcGk6NDI5NDk2NzI5NSx2ZXJ0aWNhbERwaTo0Mjk0OTY3Mjk1'@; put 'LGZpdFRvUGFnZTohKCF1LnBhZ2VTZXR1cHx8IXUucGFnZVNldHVwLmZpdFRvV2lkdGgmJiF1LnBhZ2VTZXR1cC5maXRUb0hlaWdodHx8dS5wYWdlU2V0dXAuc2NhbGUpLHBhZ2VPcmRlcjoiZG93blRoZW5PdmVyIixibGFja0FuZFdoaXRlOiExLGRyYWZ0OiExLGNlbGxDb21tZW50czoiTm9u'@; put 'ZSIsZXJyb3JzOiJkaXNwbGF5ZWQiLHNjYWxlOjEwMCxmaXRUb1dpZHRoOjEsZml0VG9IZWlnaHQ6MSxwYXBlclNpemU6dm9pZCAwLHNob3dSb3dDb2xIZWFkZXJzOiExLHNob3dHcmlkTGluZXM6ITEsZmlyc3RQYWdlTnVtYmVyOnZvaWQgMCxob3Jpem9udGFsQ2VudGVyZWQ6ITEsdmVydGlj'@; put 'YWxDZW50ZXJlZDohMSxyb3dCcmVha3M6bnVsbCxjb2xCcmVha3M6bnVsbH0sdS5wYWdlU2V0dXApLHRoaXMuaGVhZGVyRm9vdGVyPU9iamVjdC5hc3NpZ24oe30se2RpZmZlcmVudEZpcnN0OiExLGRpZmZlcmVudE9kZEV2ZW46ITEsb2RkSGVhZGVyOm51bGwsb2RkRm9vdGVyOm51bGwsZXZl'@; put 'bkhlYWRlcjpudWxsLGV2ZW5Gb290ZXI6bnVsbCxmaXJzdEhlYWRlcjpudWxsLGZpcnN0Rm9vdGVyOm51bGx9LHUuaGVhZGVyRm9vdGVyKSx0aGlzLmRhdGFWYWxpZGF0aW9ucz1uZXcgaSx0aGlzLnZpZXdzPXUudmlld3N8fFtdLHRoaXMuYXV0b0ZpbHRlcj11LmF1dG9GaWx0ZXJ8fG51bGws'@; put 'dGhpcy5fbWVkaWE9W10sdGhpcy5zaGVldFByb3RlY3Rpb249bnVsbCx0aGlzLnRhYmxlcz17fSx0aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3M9W119Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh1KXtpZih2b2lkIDA9PT11JiYodT0ic2hlZXQiK3RoaXMuaWQpLHRo'@; put 'aXMuX25hbWUhPT11KXtpZigic3RyaW5nIiE9dHlwZW9mIHUpdGhyb3cgbmV3IEVycm9yKCJUaGUgbmFtZSBoYXMgdG8gYmUgYSBzdHJpbmcuIik7aWYoIiI9PT11KXRocm93IG5ldyBFcnJvcigiVGhlIG5hbWUgY2FuJ3QgYmUgZW1wdHkuIik7aWYoIkhpc3RvcnkiPT09dSl0aHJvdyBuZXcg'@; put 'RXJyb3IoJ1RoZSBuYW1lICJIaXN0b3J5IiBpcyBwcm90ZWN0ZWQuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgbmFtZS4nKTtpZigvWyo/Oi9cXFtcXV0vLnRlc3QodSkpdGhyb3cgbmV3IEVycm9yKGBXb3Jrc2hlZXQgbmFtZSAke3V9IGNhbm5vdCBpbmNsdWRlIGFueSBvZiB0aGUgZm9sbG93'@; put 'aW5nIGNoYXJhY3RlcnM6ICogPyA6IFxcIC8gWyBdYCk7aWYoLyheJyl8KCckKS8udGVzdCh1KSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBmaXJzdCBvciBsYXN0IGNoYXJhY3RlciBvZiB3b3Jrc2hlZXQgbmFtZSBjYW5ub3QgYmUgYSBzaW5nbGUgcXVvdGF0aW9uIG1hcms6ICIrdSk7aWYodSYm'@; put 'dS5sZW5ndGg+MzEmJihjb25zb2xlLndhcm4oYFdvcmtzaGVldCBuYW1lICR7dX0gZXhjZWVkcyAzMSBjaGFycy4gVGhpcyB3aWxsIGJlIHRydW5jYXRlZGApLHU9dS5zdWJzdHJpbmcoMCwzMSkpLHRoaXMuX3dvcmtib29rLl93b3Jrc2hlZXRzLmZpbmQocD0+cCYmcC5uYW1lLnRvTG93ZXJD'@; put 'YXNlKCk9PT11LnRvTG93ZXJDYXNlKCkpKXRocm93IG5ldyBFcnJvcigiV29ya3NoZWV0IG5hbWUgYWxyZWFkeSBleGlzdHM6ICIrdSk7dGhpcy5fbmFtZT11fX1nZXQgd29ya2Jvb2soKXtyZXR1cm4gdGhpcy5fd29ya2Jvb2t9ZGVzdHJveSgpe3RoaXMuX3dvcmtib29rLnJlbW92ZVdvcmtz'@; put 'aGVldEV4KHRoaXMpfWdldCBkaW1lbnNpb25zKCl7Y29uc3QgdT1uZXcgbztyZXR1cm4gdGhpcy5fcm93cy5mb3JFYWNoKHA9PntpZihwKXtjb25zdCBkPXAuZGltZW5zaW9ucztkJiZ1LmV4cGFuZChwLm51bWJlcixkLm1pbixwLm51bWJlcixkLm1heCl9fSksdX1nZXQgY29sdW1ucygpe3Jl'@; put 'dHVybiB0aGlzLl9jb2x1bW5zfXNldCBjb2x1bW5zKHUpe3RoaXMuX2hlYWRlclJvd0NvdW50PXUucmVkdWNlKCh2LF8pPT5NYXRoLm1heCh2LChfLmhlYWRlcj8xOl8uaGVhZGVycyYmXy5oZWFkZXJzLmxlbmd0aCl8fDApLDApO2xldCBwPTE7Y29uc3QgZD10aGlzLl9jb2x1bW5zPVtdO3Uu'@; put 'Zm9yRWFjaCh2PT57Y29uc3QgXz1uZXcgdCh0aGlzLHArKywhMSk7ZC5wdXNoKF8pLF8uZGVmbj12fSl9Z2V0Q29sdW1uS2V5KHUpe3JldHVybiB0aGlzLl9rZXlzW3VdfXNldENvbHVtbktleSh1LHApe3RoaXMuX2tleXNbdV09cH1kZWxldGVDb2x1bW5LZXkodSl7ZGVsZXRlIHRoaXMuX2tl'@; put 'eXNbdV19ZWFjaENvbHVtbktleSh1KXtiLmVhY2godGhpcy5fa2V5cyx1KX1nZXRDb2x1bW4odSl7aWYoInN0cmluZyI9PXR5cGVvZiB1KXtjb25zdCBwPXRoaXMuX2tleXNbdV07aWYocClyZXR1cm4gcDt1PWEubDJuKHUpfWlmKHRoaXMuX2NvbHVtbnN8fCh0aGlzLl9jb2x1bW5zPVtdKSx1'@; put 'PnRoaXMuX2NvbHVtbnMubGVuZ3RoKXtsZXQgcD10aGlzLl9jb2x1bW5zLmxlbmd0aCsxO2Zvcig7cDw9dTspdGhpcy5fY29sdW1ucy5wdXNoKG5ldyB0KHRoaXMscCsrKSl9cmV0dXJuIHRoaXMuX2NvbHVtbnNbdS0xXX1zcGxpY2VDb2x1bW5zKHUscCl7Y29uc3QgZD10aGlzLl9yb3dzLmxl'@; put 'bmd0aDtmb3IodmFyIHY9YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheSh2PjI/di0yOjApLEE9MjtBPHY7QSsrKV9bQS0yXT1hcmd1bWVudHNbQV07aWYoXy5sZW5ndGg+MClmb3IobGV0IFA9MDtQPGQ7UCsrKXtjb25zdCBCPVt1LHBdO18uZm9yRWFjaChEPT57Qi5wdXNoKERbUF18fG51'@; put 'bGwpfSk7Y29uc3QgJD10aGlzLmdldFJvdyhQKzEpOyQuc3BsaWNlLmFwcGx5KCQsQil9ZWxzZSB0aGlzLl9yb3dzLmZvckVhY2goUD0+e1AmJlAuc3BsaWNlKHUscCl9KTtjb25zdCBJPV8ubGVuZ3RoLXAsTD11K3AsTj10aGlzLl9jb2x1bW5zLmxlbmd0aDtpZihJPDApZm9yKGxldCBQPXUr'@; put 'Xy5sZW5ndGg7UDw9TjtQKyspdGhpcy5nZXRDb2x1bW4oUCkuZGVmbj10aGlzLmdldENvbHVtbihQLUkpLmRlZm47ZWxzZSBpZihJPjApZm9yKGxldCBQPU47UD49TDtQLS0pdGhpcy5nZXRDb2x1bW4oUCtJKS5kZWZuPXRoaXMuZ2V0Q29sdW1uKFApLmRlZm47Zm9yKGxldCBQPXU7UDx1K18u'@; put 'bGVuZ3RoO1ArKyl0aGlzLmdldENvbHVtbihQKS5kZWZuPW51bGw7dGhpcy53b3JrYm9vay5kZWZpbmVkTmFtZXMuc3BsaWNlQ29sdW1ucyh0aGlzLm5hbWUsdSxwLF8ubGVuZ3RoKX1nZXQgbGFzdENvbHVtbigpe3JldHVybiB0aGlzLmdldENvbHVtbih0aGlzLmNvbHVtbkNvdW50KX1nZXQg'@; put 'Y29sdW1uQ291bnQoKXtsZXQgdT0wO3JldHVybiB0aGlzLmVhY2hSb3cocD0+e3U9TWF0aC5tYXgodSxwLmNlbGxDb3VudCl9KSx1fWdldCBhY3R1YWxDb2x1bW5Db3VudCgpe2NvbnN0IHU9W107bGV0IHA9MDtyZXR1cm4gdGhpcy5lYWNoUm93KGQ9PntkLmVhY2hDZWxsKHY9PntsZXR7Y29s'@; put 'Ol99PXY7dVtfXXx8KHVbX109ITAscCsrKX0pfSkscH1fY29tbWl0Um93KCl7fWdldCBfbGFzdFJvd051bWJlcigpe2NvbnN0IHU9dGhpcy5fcm93cztsZXQgcD11Lmxlbmd0aDtmb3IoO3A+MCYmdm9pZCAwPT09dVtwLTFdOylwLS07cmV0dXJuIHB9Z2V0IF9uZXh0Um93KCl7cmV0dXJuIHRo'@; put 'aXMuX2xhc3RSb3dOdW1iZXIrMX1nZXQgbGFzdFJvdygpe2lmKHRoaXMuX3Jvd3MubGVuZ3RoKXJldHVybiB0aGlzLl9yb3dzW3RoaXMuX3Jvd3MubGVuZ3RoLTFdfWZpbmRSb3codSl7cmV0dXJuIHRoaXMuX3Jvd3NbdS0xXX1maW5kUm93cyh1LHApe3JldHVybiB0aGlzLl9yb3dzLnNsaWNl'@; put 'KHUtMSx1LTErcCl9Z2V0IHJvd0NvdW50KCl7cmV0dXJuIHRoaXMuX2xhc3RSb3dOdW1iZXJ9Z2V0IGFjdHVhbFJvd0NvdW50KCl7bGV0IHU9MDtyZXR1cm4gdGhpcy5lYWNoUm93KCgpPT57dSsrfSksdX1nZXRSb3codSl7bGV0IHA9dGhpcy5fcm93c1t1LTFdO3JldHVybiBwfHwocD10aGlz'@; put 'Ll9yb3dzW3UtMV09bmV3IHIodGhpcyx1KSkscH1nZXRSb3dzKHUscCl7aWYocDwxKXJldHVybjtjb25zdCBkPVtdO2ZvcihsZXQgdj11O3Y8dStwO3YrKylkLnB1c2godGhpcy5nZXRSb3codikpO3JldHVybiBkfWFkZFJvdyh1KXtsZXQgcD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9'@; put 'PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06Im4iO2NvbnN0IGQ9dGhpcy5fbmV4dFJvdyx2PXRoaXMuZ2V0Um93KGQpO3JldHVybiB2LnZhbHVlcz11LHRoaXMuX3NldFN0eWxlT3B0aW9uKGQsImkiPT09cFswXT9wOiJuIiksdn1hZGRSb3dzKHUpe2xldCBwPWFyZ3VtZW50cy5sZW5ndGg+'@; put 'MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToibiI7Y29uc3QgZD1bXTtyZXR1cm4gdS5mb3JFYWNoKHY9PntkLnB1c2godGhpcy5hZGRSb3codixwKSl9KSxkfWluc2VydFJvdyh1LHApe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJd'@; put 'P2FyZ3VtZW50c1syXToibiI7cmV0dXJuIHRoaXMuc3BsaWNlUm93cyh1LDAscCksdGhpcy5fc2V0U3R5bGVPcHRpb24odSxkKSx0aGlzLmdldFJvdyh1KX1pbnNlcnRSb3dzKHUscCl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJd'@; put 'OiJuIjtpZih0aGlzLnNwbGljZVJvd3ModSwwLC4uLnApLCJuIiE9PWQpZm9yKGxldCB2PTA7djxwLmxlbmd0aDt2KyspIm8iPT09ZFswXSYmdm9pZCAwIT09dGhpcy5maW5kUm93KHAubGVuZ3RoK3Urdik/dGhpcy5fY29weVN0eWxlKHAubGVuZ3RoK3Urdix1K3YsIisiPT09ZFsxXSk6Imki'@; put 'PT09ZFswXSYmdm9pZCAwIT09dGhpcy5maW5kUm93KHUtMSkmJnRoaXMuX2NvcHlTdHlsZSh1LTEsdSt2LCIrIj09PWRbMV0pO3JldHVybiB0aGlzLmdldFJvd3ModSxwLmxlbmd0aCl9X3NldFN0eWxlT3B0aW9uKHUpe2xldCBwPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1l'@; put 'bnRzWzFdP2FyZ3VtZW50c1sxXToibiI7Im8iPT09cFswXSYmdm9pZCAwIT09dGhpcy5maW5kUm93KHUrMSk/dGhpcy5fY29weVN0eWxlKHUrMSx1LCIrIj09PXBbMV0pOiJpIj09PXBbMF0mJnZvaWQgMCE9PXRoaXMuZmluZFJvdyh1LTEpJiZ0aGlzLl9jb3B5U3R5bGUodS0xLHUsIisiPT09'@; put 'cFsxXSl9X2NvcHlTdHlsZSh1LHApe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Y29uc3Qgdj10aGlzLmdldFJvdyh1KSxfPXRoaXMuZ2V0Um93KHApO18uc3R5bGU9Zih2LnN0eWxlKSx2LmVhY2hDZWxsKHtpbmNsdWRlRW1w'@; put 'dHk6ZH0sKEEsSSk9PntfLmdldENlbGwoSSkuc3R5bGU9ZihBLnN0eWxlKX0pLF8uaGVpZ2h0PXYuaGVpZ2h0fWR1cGxpY2F0ZVJvdyh1LHApe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Y29uc3Qgdj10aGlzLl9yb3dzW3Ut'@; put 'MV0sXz1uZXcgQXJyYXkocCkuZmlsbCh2LnZhbHVlcyk7dGhpcy5zcGxpY2VSb3dzKHUrMSxkPzA6cCwuLi5fKTtmb3IobGV0IEE9MDtBPHA7QSsrKXtjb25zdCBJPXRoaXMuX3Jvd3NbdStBXTtJLnN0eWxlPXYuc3R5bGUsSS5oZWlnaHQ9di5oZWlnaHQsdi5lYWNoQ2VsbCh7aW5jbHVkZUVt'@; put 'cHR5OiEwfSwoTCxOKT0+e0kuZ2V0Q2VsbChOKS5zdHlsZT1MLnN0eWxlfSl9fXNwbGljZVJvd3ModSxwKXtjb25zdCBkPXUrcDtmb3IodmFyIHY9YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheSh2PjI/di0yOjApLEE9MjtBPHY7QSsrKV9bQS0yXT1hcmd1bWVudHNbQV07Y29uc3QgST1f'@; put 'Lmxlbmd0aCxMPUktcCxOPXRoaXMuX3Jvd3MubGVuZ3RoO2xldCBQLEI7aWYoTDwwKWZvcih1PT09TiYmKHRoaXMuX3Jvd3NbTi0xXT12b2lkIDApLFA9ZDtQPD1OO1ArKylpZihCPXRoaXMuX3Jvd3NbUC0xXSxCKXtjb25zdCAkPXRoaXMuZ2V0Um93KFArTCk7JC52YWx1ZXM9Qi52YWx1ZXMs'@; put 'JC5zdHlsZT1CLnN0eWxlLCQuaGVpZ2h0PUIuaGVpZ2h0LEIuZWFjaENlbGwoe2luY2x1ZGVFbXB0eTohMH0sKEQseCk9PnskLmdldENlbGwoeCkuc3R5bGU9RC5zdHlsZX0pLHRoaXMuX3Jvd3NbUC0xXT12b2lkIDB9ZWxzZSB0aGlzLl9yb3dzW1ArTC0xXT12b2lkIDA7ZWxzZSBpZihMPjAp'@; put 'Zm9yKFA9TjtQPj1kO1AtLSlpZihCPXRoaXMuX3Jvd3NbUC0xXSxCKXtjb25zdCAkPXRoaXMuZ2V0Um93KFArTCk7JC52YWx1ZXM9Qi52YWx1ZXMsJC5zdHlsZT1CLnN0eWxlLCQuaGVpZ2h0PUIuaGVpZ2h0LEIuZWFjaENlbGwoe2luY2x1ZGVFbXB0eTohMH0sKEQseCk9PntpZigkLmdldENl'@; put 'bGwoeCkuc3R5bGU9RC5zdHlsZSwiTWVyZ2VWYWx1ZSI9PT1ELl92YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKXtjb25zdCBNPXRoaXMuZ2V0Um93KEQuX3Jvdy5fbnVtYmVyK0kpLmdldENlbGwoeCksaj1ELl92YWx1ZS5fbWFzdGVyLGM9dGhpcy5nZXRSb3coai5fcm93Ll9udW1iZXIrSSkuZ2V0'@; put 'Q2VsbChqLl9jb2x1bW4uX251bWJlcik7TS5tZXJnZShjKX19KX1lbHNlIHRoaXMuX3Jvd3NbUCtMLTFdPXZvaWQgMDtmb3IoUD0wO1A8STtQKyspe2NvbnN0ICQ9dGhpcy5nZXRSb3codStQKTskLnN0eWxlPXt9LCQudmFsdWVzPV9bUF19dGhpcy53b3JrYm9vay5kZWZpbmVkTmFtZXMuc3Bs'@; put 'aWNlUm93cyh0aGlzLm5hbWUsdSxwLEkpfWVhY2hSb3codSxwKXtpZihwfHwocD11LHU9dm9pZCAwKSx1JiZ1LmluY2x1ZGVFbXB0eSl7Y29uc3QgZD10aGlzLl9yb3dzLmxlbmd0aDtmb3IobGV0IHY9MTt2PD1kO3YrKylwKHRoaXMuZ2V0Um93KHYpLHYpfWVsc2UgdGhpcy5fcm93cy5mb3JF'@; put 'YWNoKGQ9PntkJiZkLmhhc1ZhbHVlcyYmcChkLGQubnVtYmVyKX0pfWdldFNoZWV0VmFsdWVzKCl7Y29uc3QgdT1bXTtyZXR1cm4gdGhpcy5fcm93cy5mb3JFYWNoKHA9PntwJiYodVtwLm51bWJlcl09cC52YWx1ZXMpfSksdX1maW5kQ2VsbCh1LHApe2NvbnN0IGQ9YS5nZXRBZGRyZXNzKHUs'@; put 'cCksdj10aGlzLl9yb3dzW2Qucm93LTFdO3JldHVybiB2P3YuZmluZENlbGwoZC5jb2wpOnZvaWQgMH1nZXRDZWxsKHUscCl7Y29uc3QgZD1hLmdldEFkZHJlc3ModSxwKTtyZXR1cm4gdGhpcy5nZXRSb3coZC5yb3cpLmdldENlbGxFeChkKX1tZXJnZUNlbGxzKCl7Zm9yKHZhciB1PWFyZ3Vt'@; put 'ZW50cy5sZW5ndGgscD1uZXcgQXJyYXkodSksZD0wO2Q8dTtkKyspcFtkXT1hcmd1bWVudHNbZF07Y29uc3Qgdj1uZXcgbyhwKTt0aGlzLl9tZXJnZUNlbGxzSW50ZXJuYWwodil9bWVyZ2VDZWxsc1dpdGhvdXRTdHlsZSgpe2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3RoLHA9bmV3IEFycmF5'@; put 'KHUpLGQ9MDtkPHU7ZCsrKXBbZF09YXJndW1lbnRzW2RdO2NvbnN0IHY9bmV3IG8ocCk7dGhpcy5fbWVyZ2VDZWxsc0ludGVybmFsKHYsITApfV9tZXJnZUNlbGxzSW50ZXJuYWwodSxwKXtiLmVhY2godGhpcy5fbWVyZ2VzLHY9PntpZih2LmludGVyc2VjdHModSkpdGhyb3cgbmV3IEVycm9y'@; put 'KCJDYW5ub3QgbWVyZ2UgYWxyZWFkeSBtZXJnZWQgY2VsbHMiKX0pO2NvbnN0IGQ9dGhpcy5nZXRDZWxsKHUudG9wLHUubGVmdCk7Zm9yKGxldCB2PXUudG9wO3Y8PXUuYm90dG9tO3YrKylmb3IobGV0IF89dS5sZWZ0O188PXUucmlnaHQ7XysrKSh2PnUudG9wfHxfPnUubGVmdCkmJnRoaXMu'@; put 'Z2V0Q2VsbCh2LF8pLm1lcmdlKGQscCk7dGhpcy5fbWVyZ2VzW2QuYWRkcmVzc109dX1fdW5NZXJnZU1hc3Rlcih1KXtjb25zdCBwPXRoaXMuX21lcmdlc1t1LmFkZHJlc3NdO2lmKHApe2ZvcihsZXQgZD1wLnRvcDtkPD1wLmJvdHRvbTtkKyspZm9yKGxldCB2PXAubGVmdDt2PD1wLnJpZ2h0'@; put 'O3YrKyl0aGlzLmdldENlbGwoZCx2KS51bm1lcmdlKCk7ZGVsZXRlIHRoaXMuX21lcmdlc1t1LmFkZHJlc3NdfX1nZXQgaGFzTWVyZ2VzKCl7cmV0dXJuIGIuc29tZSh0aGlzLl9tZXJnZXMsQm9vbGVhbil9dW5NZXJnZUNlbGxzKCl7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscD1uZXcg'@; put 'QXJyYXkodSksZD0wO2Q8dTtkKyspcFtkXT1hcmd1bWVudHNbZF07Y29uc3Qgdj1uZXcgbyhwKTtmb3IobGV0IF89di50b3A7Xzw9di5ib3R0b207XysrKWZvcihsZXQgQT12LmxlZnQ7QTw9di5yaWdodDtBKyspe2NvbnN0IEk9dGhpcy5maW5kQ2VsbChfLEEpO0kmJihJLnR5cGU9PT1lLlZh'@; put 'bHVlVHlwZS5NZXJnZT90aGlzLl91bk1lcmdlTWFzdGVyKEkubWFzdGVyKTp0aGlzLl9tZXJnZXNbSS5hZGRyZXNzXSYmdGhpcy5fdW5NZXJnZU1hc3RlcihJKSl9fWZpbGxGb3JtdWxhKHUscCxkKXtsZXQgdj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1'@; put 'bWVudHNbM106InNoYXJlZCI7Y29uc3QgXz1hLmRlY29kZSh1KSx7dG9wOkEsbGVmdDpJLGJvdHRvbTpMLHJpZ2h0Ok59PV8sUD1OLUkrMSxCPWEuZW5jb2RlQWRkcmVzcyhBLEkpLCQ9InNoYXJlZCI9PT12O2xldCBEO0Q9ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZDpBcnJheS5pc0FycmF5KGQp'@; put 'P0FycmF5LmlzQXJyYXkoZFswXSk/KE0saik9PmRbTS1BXVtqLUldOihNLGopPT5kWyhNLUEpKlArKGotSSldOigpPT57fTtsZXQgeD0hMDtmb3IobGV0IE09QTtNPD1MO00rKylmb3IobGV0IGo9STtqPD1OO2orKyl4Pyh0aGlzLmdldENlbGwoTSxqKS52YWx1ZT17c2hhcmVUeXBlOnYsZm9y'@; put 'bXVsYTpwLHJlZjp1LHJlc3VsdDpEKE0sail9LHg9ITEpOnRoaXMuZ2V0Q2VsbChNLGopLnZhbHVlPSQ/e3NoYXJlZEZvcm11bGE6QixyZXN1bHQ6RChNLGopfTpEKE0sail9YWRkSW1hZ2UodSxwKXt0aGlzLl9tZWRpYS5wdXNoKG5ldyBsKHRoaXMse3R5cGU6ImltYWdlIixpbWFnZUlkOnUs'@; put 'cmFuZ2U6cH0pKX1nZXRJbWFnZXMoKXtyZXR1cm4gdGhpcy5fbWVkaWEuZmlsdGVyKHU9PiJpbWFnZSI9PT11LnR5cGUpfWFkZEJhY2tncm91bmRJbWFnZSh1KXt0aGlzLl9tZWRpYS5wdXNoKG5ldyBsKHRoaXMse3R5cGU6ImJhY2tncm91bmQiLGltYWdlSWQ6dX0pKX1nZXRCYWNrZ3JvdW5k'@; put 'SW1hZ2VJZCgpe2NvbnN0IHU9dGhpcy5fbWVkaWEuZmluZChwPT4iYmFja2dyb3VuZCI9PT1wLnR5cGUpO3JldHVybiB1JiZ1LmltYWdlSWR9cHJvdGVjdCh1LHApe3JldHVybiBuZXcgUHJvbWlzZShkPT57dGhpcy5zaGVldFByb3RlY3Rpb249e3NoZWV0OiEwfSxwJiYic3BpbkNvdW50Imlu'@; put 'IHAmJihwLnNwaW5Db3VudD1OdW1iZXIuaXNGaW5pdGUocC5zcGluQ291bnQpP01hdGgucm91bmQoTWF0aC5tYXgoMCxwLnNwaW5Db3VudCkpOjFlNSksdSYmKHRoaXMuc2hlZXRQcm90ZWN0aW9uLmFsZ29yaXRobU5hbWU9IlNIQS01MTIiLHRoaXMuc2hlZXRQcm90ZWN0aW9uLnNhbHRWYWx1'@; put 'ZT1oLnJhbmRvbUJ5dGVzKDE2KS50b1N0cmluZygiYmFzZTY0IiksdGhpcy5zaGVldFByb3RlY3Rpb24uc3BpbkNvdW50PXAmJiJzcGluQ291bnQiaW4gcD9wLnNwaW5Db3VudDoxZTUsdGhpcy5zaGVldFByb3RlY3Rpb24uaGFzaFZhbHVlPWguY29udmVydFBhc3N3b3JkVG9IYXNoKHUsIlNI'@; put 'QTUxMiIsdGhpcy5zaGVldFByb3RlY3Rpb24uc2FsdFZhbHVlLHRoaXMuc2hlZXRQcm90ZWN0aW9uLnNwaW5Db3VudCkpLHAmJih0aGlzLnNoZWV0UHJvdGVjdGlvbj1PYmplY3QuYXNzaWduKHRoaXMuc2hlZXRQcm90ZWN0aW9uLHApLCF1JiYic3BpbkNvdW50ImluIHAmJmRlbGV0ZSB0aGlz'@; put 'LnNoZWV0UHJvdGVjdGlvbi5zcGluQ291bnQpLGQoKX0pfXVucHJvdGVjdCgpe3RoaXMuc2hlZXRQcm90ZWN0aW9uPW51bGx9YWRkVGFibGUodSl7Y29uc3QgcD1uZXcgbih0aGlzLHUpO3JldHVybiB0aGlzLnRhYmxlc1t1Lm5hbWVdPXAscH1nZXRUYWJsZSh1KXtyZXR1cm4gdGhpcy50YWJs'@; put 'ZXNbdV19cmVtb3ZlVGFibGUodSl7ZGVsZXRlIHRoaXMudGFibGVzW3VdfWdldFRhYmxlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMudGFibGVzKX1hZGRDb25kaXRpb25hbEZvcm1hdHRpbmcodSl7dGhpcy5jb25kaXRpb25hbEZvcm1hdHRpbmdzLnB1c2godSl9cmVtb3ZlQ29uZGl0'@; put 'aW9uYWxGb3JtYXR0aW5nKHUpeyJudW1iZXIiPT10eXBlb2YgdT90aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3Muc3BsaWNlKHUsMSk6dGhpcy5jb25kaXRpb25hbEZvcm1hdHRpbmdzPXUgaW5zdGFuY2VvZiBGdW5jdGlvbj90aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3MuZmlsdGVyKHUp'@; put 'OltdfWdldCB0YWJDb2xvcigpe3JldHVybiBjb25zb2xlLnRyYWNlKCJ3b3Jrc2hlZXQudGFiQ29sb3IgcHJvcGVydHkgaXMgbm93IGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ugd29ya3NoZWV0LnByb3BlcnRpZXMudGFiQ29sb3IiKSx0aGlzLnByb3BlcnRpZXMudGFiQ29sb3J9c2V0IHRhYkNv'@; put 'bG9yKHUpe2NvbnNvbGUudHJhY2UoIndvcmtzaGVldC50YWJDb2xvciBwcm9wZXJ0eSBpcyBub3cgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB3b3Jrc2hlZXQucHJvcGVydGllcy50YWJDb2xvciIpLHRoaXMucHJvcGVydGllcy50YWJDb2xvcj11fWdldCBtb2RlbCgpe2NvbnN0IHU9e2lkOnRo'@; put 'aXMuaWQsbmFtZTp0aGlzLm5hbWUsZGF0YVZhbGlkYXRpb25zOnRoaXMuZGF0YVZhbGlkYXRpb25zLm1vZGVsLHByb3BlcnRpZXM6dGhpcy5wcm9wZXJ0aWVzLHN0YXRlOnRoaXMuc3RhdGUscGFnZVNldHVwOnRoaXMucGFnZVNldHVwLGhlYWRlckZvb3Rlcjp0aGlzLmhlYWRlckZvb3Rlcixy'@; put 'b3dCcmVha3M6dGhpcy5yb3dCcmVha3Msdmlld3M6dGhpcy52aWV3cyxhdXRvRmlsdGVyOnRoaXMuYXV0b0ZpbHRlcixtZWRpYTp0aGlzLl9tZWRpYS5tYXAodj0+di5tb2RlbCksc2hlZXRQcm90ZWN0aW9uOnRoaXMuc2hlZXRQcm90ZWN0aW9uLHRhYmxlczpPYmplY3QudmFsdWVzKHRoaXMu'@; put 'dGFibGVzKS5tYXAodj0+di5tb2RlbCksY29uZGl0aW9uYWxGb3JtYXR0aW5nczp0aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3N9O3UuY29scz10LnRvTW9kZWwodGhpcy5jb2x1bW5zKTtjb25zdCBwPXUucm93cz1bXSxkPXUuZGltZW5zaW9ucz1uZXcgbztyZXR1cm4gdGhpcy5fcm93cy5m'@; put 'b3JFYWNoKHY9Pntjb25zdCBfPXYmJnYubW9kZWw7XyYmKGQuZXhwYW5kKF8ubnVtYmVyLF8ubWluLF8ubnVtYmVyLF8ubWF4KSxwLnB1c2goXykpfSksdS5tZXJnZXM9W10sYi5lYWNoKHRoaXMuX21lcmdlcyx2PT57dS5tZXJnZXMucHVzaCh2LnJhbmdlKX0pLHV9X3BhcnNlUm93cyh1KXt0'@; put 'aGlzLl9yb3dzPVtdLHUucm93cy5mb3JFYWNoKHA9Pntjb25zdCBkPW5ldyByKHRoaXMscC5udW1iZXIpO3RoaXMuX3Jvd3NbZC5udW1iZXItMV09ZCxkLm1vZGVsPXB9KX1fcGFyc2VNZXJnZUNlbGxzKHUpe2IuZWFjaCh1Lm1lcmdlQ2VsbHMscD0+e3RoaXMubWVyZ2VDZWxsc1dpdGhvdXRT'@; put 'dHlsZShwKX0pfXNldCBtb2RlbCh1KXt0aGlzLm5hbWU9dS5uYW1lLHRoaXMuX2NvbHVtbnM9dC5mcm9tTW9kZWwodGhpcyx1LmNvbHMpLHRoaXMuX3BhcnNlUm93cyh1KSx0aGlzLl9wYXJzZU1lcmdlQ2VsbHModSksdGhpcy5kYXRhVmFsaWRhdGlvbnM9bmV3IGkodS5kYXRhVmFsaWRhdGlv'@; put 'bnMpLHRoaXMucHJvcGVydGllcz11LnByb3BlcnRpZXMsdGhpcy5wYWdlU2V0dXA9dS5wYWdlU2V0dXAsdGhpcy5oZWFkZXJGb290ZXI9dS5oZWFkZXJGb290ZXIsdGhpcy52aWV3cz11LnZpZXdzLHRoaXMuYXV0b0ZpbHRlcj11LmF1dG9GaWx0ZXIsdGhpcy5fbWVkaWE9dS5tZWRpYS5tYXAo'@; put 'cD0+bmV3IGwodGhpcyxwKSksdGhpcy5zaGVldFByb3RlY3Rpb249dS5zaGVldFByb3RlY3Rpb24sdGhpcy50YWJsZXM9dS50YWJsZXMucmVkdWNlKChwLGQpPT57Y29uc3Qgdj1uZXcgbjtyZXR1cm4gdi5tb2RlbD1kLHBbZC5uYW1lXT12LHB9LHt9KSx0aGlzLmNvbmRpdGlvbmFsRm9ybWF0'@; put 'dGluZ3M9dS5jb25kaXRpb25hbEZvcm1hdHRpbmdzfX19LHsiLi4vdXRpbHMvY29sLWNhY2hlIjoxOSwiLi4vdXRpbHMvY29weS1zdHlsZSI6MjAsIi4uL3V0aWxzL2VuY3J5cHRvciI6MjEsIi4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuL2NvbHVtbiI6NCwiLi9kYXRhLXZhbGlkYXRpb25z'@; put 'Ijo1LCIuL2VudW1zIjo3LCIuL2ltYWdlIjo4LCIuL3JhbmdlIjoxMCwiLi9yb3ciOjExLCIuL3RhYmxlIjoxMn1dLDE1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3MoImNvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlIikscygiY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuZmlu'@; put 'YWxseSIpLHMoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduIikscygiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzIikscygiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC52YWx1ZXMiKSxzKCJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sIikscygiY29yZS1qcy9tb2R1'@; put 'bGVzL2VzLnN5bWJvbC5hc3luYy1pdGVyYXRvciIpLHMoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvciIpLHMoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcyIpLHMoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWluZGV4IikscygiY29yZS1qcy9tb2R1'@; put 'bGVzL2VzLmFycmF5LmZpbmQiKSxzKCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmZyb20tY29kZS1wb2ludCIpLHMoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMiKSxzKCJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLmlzLW5hbiIpLHMoInJlZ2VuZXJhdG9yLXJ1bnRp'@; put 'bWUvcnVudGltZSIpO2NvbnN0IGI9e1dvcmtib29rOnMoIi4vZG9jL3dvcmtib29rIil9LGE9cygiLi9kb2MvZW51bXMiKTtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKG89PntiW29dPWFbb119KSxFLmV4cG9ydHM9Yn0seyIuL2RvYy9lbnVtcyI6NywiLi9kb2Mvd29ya2Jvb2siOjEzLCJjb3Jl'@; put 'LWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZCI6MzU5LCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleCI6MzU4LCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMiOjM2MCwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yIjozNjEsImNvcmUtanMvbW9k'@; put 'dWxlcy9lcy5udW1iZXIuaXMtbmFuIjozNjMsImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduIjozNjQsImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cyI6MzY2LCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnZhbHVlcyI6MzY3LCJjb3JlLWpzL21vZHVsZXMvZXMucHJv'@; put 'bWlzZSI6MzcyLCJjb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5maW5hbGx5IjozNzEsImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZnJvbS1jb2RlLXBvaW50IjozNzYsImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMiOjM3NywiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJv'@; put 'bCI6MzgxLCJjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yIjozNzgsInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZSI6NDkyfV0sMTY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj10eXBlb2YgVGV4dERlY29kZXI+InUiP251bGw6bmV3IFRl'@; put 'eHREZWNvZGVyKCJ1dGYtOCIpO1MuYnVmZmVyVG9TdHJpbmc9ZnVuY3Rpb24oYSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhP2E6Yj9iLmRlY29kZShhKTphLnRvU3RyaW5nKCl9fSx7fV0sMTc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj10eXBlb2YgVGV4dEVuY29k'@; put 'ZXI+InUiP251bGw6bmV3IFRleHRFbmNvZGVyKCJ1dGYtOCIpLHtCdWZmZXI6YX09cygiYnVmZmVyIik7Uy5zdHJpbmdUb0J1ZmZlcj1mdW5jdGlvbihvKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG8/bzphLmZyb20oYj9iLmVuY29kZShvKS5idWZmZXI6byl9fSx7YnVmZmVyOjIyMH1dLDE4'@; put 'OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi91bmRlci1kYXNoIiksYT1zKCIuL2NvbC1jYWNoZSIpO0UuZXhwb3J0cz1jbGFzc3tjb25zdHJ1Y3RvcihvKXt0aGlzLnRlbXBsYXRlPW8sdGhpcy5zaGVldHM9e319YWRkQ2VsbChvKXt0aGlzLmFkZENlbGxFeChh'@; put 'LmRlY29kZUV4KG8pKX1nZXRDZWxsKG8pe3JldHVybiB0aGlzLmZpbmRDZWxsRXgoYS5kZWNvZGVFeChvKSwhMCl9ZmluZENlbGwobyl7cmV0dXJuIHRoaXMuZmluZENlbGxFeChhLmRlY29kZUV4KG8pLCExKX1maW5kQ2VsbEF0KG8scix0KXtjb25zdCBlPXRoaXMuc2hlZXRzW29dLGw9ZSYm'@; put 'ZVtyXTtyZXR1cm4gbCYmbFt0XX1hZGRDZWxsRXgobyl7aWYoby50b3ApZm9yKGxldCByPW8udG9wO3I8PW8uYm90dG9tO3IrKylmb3IobGV0IHQ9by5sZWZ0O3Q8PW8ucmlnaHQ7dCsrKXRoaXMuZ2V0Q2VsbEF0KG8uc2hlZXROYW1lLHIsdCk7ZWxzZSB0aGlzLmZpbmRDZWxsRXgobywhMCl9'@; put 'Z2V0Q2VsbEV4KG8pe3JldHVybiB0aGlzLmZpbmRDZWxsRXgobywhMCl9ZmluZENlbGxFeChvLHIpe2NvbnN0IHQ9dGhpcy5maW5kU2hlZXQobyxyKSxlPXRoaXMuZmluZFNoZWV0Um93KHQsbyxyKTtyZXR1cm4gdGhpcy5maW5kUm93Q2VsbChlLG8scil9Z2V0Q2VsbEF0KG8scix0KXtjb25z'@; put 'dCBlPXRoaXMuc2hlZXRzW29dfHwodGhpcy5zaGVldHNbb109W10pLGw9ZVtyXXx8KGVbcl09W10pO3JldHVybiBsW3RdfHwobFt0XT17c2hlZXROYW1lOm8sYWRkcmVzczphLm4ybCh0KStyLHJvdzpyLGNvbDp0fSl9cmVtb3ZlQ2VsbEV4KG8pe2NvbnN0IHI9dGhpcy5maW5kU2hlZXQobyk7'@; put 'aWYoIXIpcmV0dXJuO2NvbnN0IHQ9dGhpcy5maW5kU2hlZXRSb3cocixvKTt0JiZkZWxldGUgdFtvLmNvbF19Zm9yRWFjaEluU2hlZXQobyxyKXtjb25zdCB0PXRoaXMuc2hlZXRzW29dO3QmJnQuZm9yRWFjaCgoZSxsKT0+e2UmJmUuZm9yRWFjaCgobixpKT0+e24mJnIobixsLGkpfSl9KX1m'@; put 'b3JFYWNoKG8pe2IuZWFjaCh0aGlzLnNoZWV0cywocix0KT0+e3RoaXMuZm9yRWFjaEluU2hlZXQodCxvKX0pfW1hcChvKXtjb25zdCByPVtdO3JldHVybiB0aGlzLmZvckVhY2godD0+e3IucHVzaChvKHQpKX0pLHJ9ZmluZFNoZWV0KG8scil7Y29uc3QgdD1vLnNoZWV0TmFtZTtyZXR1cm4g'@; put 'dGhpcy5zaGVldHNbdF0/dGhpcy5zaGVldHNbdF06cj90aGlzLnNoZWV0c1t0XT1bXTp2b2lkIDB9ZmluZFNoZWV0Um93KG8scix0KXtjb25zdHtyb3c6ZX09cjtyZXR1cm4gbyYmb1tlXT9vW2VdOnQ/b1tlXT1bXTp2b2lkIDB9ZmluZFJvd0NlbGwobyxyLHQpe2NvbnN0e2NvbDplfT1yO3Jl'@; put 'dHVybiBvJiZvW2VdP29bZV06dD9vW2VdPXRoaXMudGVtcGxhdGU/T2JqZWN0LmFzc2lnbihyLEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy50ZW1wbGF0ZSkpKTpyOnZvaWQgMH1zcGxpY2VSb3dzKG8scix0LGUpe2NvbnN0IGw9dGhpcy5zaGVldHNbb107aWYobCl7Y29uc3Qgbj1b'@; put 'XTtmb3IobGV0IGk9MDtpPGU7aSsrKW4ucHVzaChbXSk7bC5zcGxpY2Uocix0LC4uLm4pfX1zcGxpY2VDb2x1bW5zKG8scix0LGUpe2NvbnN0IGw9dGhpcy5zaGVldHNbb107aWYobCl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MDtpPGU7aSsrKW4ucHVzaChudWxsKTtiLmVhY2gobCxpPT57aS5z'@; put 'cGxpY2Uocix0LC4uLm4pfSl9fX19LHsiLi9jb2wtY2FjaGUiOjE5LCIuL3VuZGVyLWRhc2giOjI2fV0sMTk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj0vXltBLVpdK1xkKyQvLGE9e19kaWN0aW9uYXJ5OlsiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJ'@; put 'IiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiXSxfbDJuRmlsbDowLF9sMm46e30sX24ybDpbXSxfbGV2ZWw6bz0+bzw9MjY/MTpvPD02NzY/MjozLF9maWxsKG8pe2xldCByLHQsZSxsLG4saT0xO2lmKG8+PTQpdGhy'@; put 'b3cgbmV3IEVycm9yKCJPdXQgb2YgYm91bmRzLiBFeGNlbCBzdXBwb3J0cyBjb2x1bW5zIGZyb20gMSB0byAxNjM4NCIpO2lmKHRoaXMuX2wybkZpbGw8MSYmbz49MSl7Zm9yKDtpPD0yNjspcj10aGlzLl9kaWN0aW9uYXJ5W2ktMV0sdGhpcy5fbjJsW2ldPXIsdGhpcy5fbDJuW3JdPWksaSsr'@; put 'O3RoaXMuX2wybkZpbGw9MX1pZih0aGlzLl9sMm5GaWxsPDImJm8+PTIpe2ZvcihpPTI3O2k8PTcwMjspdD1pLTI3LGU9dCUyNixsPU1hdGguZmxvb3IodC8yNikscj10aGlzLl9kaWN0aW9uYXJ5W2xdK3RoaXMuX2RpY3Rpb25hcnlbZV0sdGhpcy5fbjJsW2ldPXIsdGhpcy5fbDJuW3JdPWks'@; put 'aSsrO3RoaXMuX2wybkZpbGw9Mn1pZih0aGlzLl9sMm5GaWxsPDMmJm8+PTMpe2ZvcihpPTcwMztpPD0xNjM4NDspdD1pLTcwMyxlPXQlMjYsbD1NYXRoLmZsb29yKHQvMjYpJTI2LG49TWF0aC5mbG9vcih0LzY3Nikscj10aGlzLl9kaWN0aW9uYXJ5W25dK3RoaXMuX2RpY3Rpb25hcnlbbF0r'@; put 'dGhpcy5fZGljdGlvbmFyeVtlXSx0aGlzLl9uMmxbaV09cix0aGlzLl9sMm5bcl09aSxpKys7dGhpcy5fbDJuRmlsbD0zfX0sbDJuKG8pe2lmKHRoaXMuX2wybltvXXx8dGhpcy5fZmlsbChvLmxlbmd0aCksIXRoaXMuX2wybltvXSl0aHJvdyBuZXcgRXJyb3IoIk91dCBvZiBib3VuZHMuIElu'@; put 'dmFsaWQgY29sdW1uIGxldHRlcjogIitvKTtyZXR1cm4gdGhpcy5fbDJuW29dfSxuMmwobyl7aWYobzwxfHxvPjE2Mzg0KXRocm93IG5ldyBFcnJvcihvKyIgaXMgb3V0IG9mIGJvdW5kcy4gRXhjZWwgc3VwcG9ydHMgY29sdW1ucyBmcm9tIDEgdG8gMTYzODQiKTtyZXR1cm4gdGhpcy5fbjJs'@; put 'W29dfHx0aGlzLl9maWxsKHRoaXMuX2xldmVsKG8pKSx0aGlzLl9uMmxbb119LF9oYXNoOnt9LHZhbGlkYXRlQWRkcmVzcyhvKXtpZighYi50ZXN0KG8pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBBZGRyZXNzOiAiK28pO3JldHVybiEwfSxkZWNvZGVBZGRyZXNzKG8pe2NvbnN0IHI9by5s'@; put 'ZW5ndGg8NSYmdGhpcy5faGFzaFtvXTtpZihyKXJldHVybiByO2xldCB0PSExLGU9IiIsbD0wLG49ITEsaT0iIixoPTA7Zm9yKGxldCB1LHA9MDtwPG8ubGVuZ3RoO3ArKylpZih1PW8uY2hhckNvZGVBdChwKSwhbiYmdT49NjUmJnU8PTkwKXQ9ITAsZSs9b1twXSxsPTI2KmwrdS02NDtlbHNl'@; put 'IGlmKHU+PTQ4JiZ1PD01NyluPSEwLGkrPW9bcF0saD0xMCpoK3UtNDg7ZWxzZSBpZihuJiZ0JiYzNiE9PXUpYnJlYWs7aWYodCl7aWYobD4xNjM4NCl0aHJvdyBuZXcgRXJyb3IoIk91dCBvZiBib3VuZHMuIEludmFsaWQgY29sdW1uIGxldHRlcjogIitlKX1lbHNlIGw9dm9pZCAwO258fCho'@; put 'PXZvaWQgMCk7Y29uc3QgZj17YWRkcmVzczpvPWUraSxjb2w6bCxyb3c6aCwkY29sJHJvdzpgJCR7ZX0kJHtpfWB9O3JldHVybiBsPD0xMDAmJmg8PTEwMCYmKHRoaXMuX2hhc2hbb109Zix0aGlzLl9oYXNoW2YuJGNvbCRyb3ddPWYpLGZ9LGdldEFkZHJlc3MobyxyKXtpZihyKXtjb25zdCB0'@; put 'PXRoaXMubjJsKHIpK287cmV0dXJuIHRoaXMuZGVjb2RlQWRkcmVzcyh0KX1yZXR1cm4gdGhpcy5kZWNvZGVBZGRyZXNzKG8pfSxkZWNvZGUobyl7Y29uc3Qgcj1vLnNwbGl0KCI6Iik7aWYoMj09PXIubGVuZ3RoKXtjb25zdCB0PXRoaXMuZGVjb2RlQWRkcmVzcyhyWzBdKSxlPXRoaXMuZGVj'@; put 'b2RlQWRkcmVzcyhyWzFdKSxsPXt0b3A6TWF0aC5taW4odC5yb3csZS5yb3cpLGxlZnQ6TWF0aC5taW4odC5jb2wsZS5jb2wpLGJvdHRvbTpNYXRoLm1heCh0LnJvdyxlLnJvdykscmlnaHQ6TWF0aC5tYXgodC5jb2wsZS5jb2wpfTtyZXR1cm4gbC50bD10aGlzLm4ybChsLmxlZnQpK2wudG9w'@; put 'LGwuYnI9dGhpcy5uMmwobC5yaWdodCkrbC5ib3R0b20sbC5kaW1lbnNpb25zPWAke2wudGx9OiR7bC5icn1gLGx9cmV0dXJuIHRoaXMuZGVjb2RlQWRkcmVzcyhvKX0sZGVjb2RlRXgobyl7Y29uc3Qgcj1vLm1hdGNoKC8oPzooPzooPzonKCg/OlteJ118JycpKiknKXwoW14nXiAhXSopKSEp'@; put 'PyguKikvKSx0PXJbMV18fHJbMl0sZT1yWzNdLGw9ZS5zcGxpdCgiOiIpO2lmKGwubGVuZ3RoPjEpe2xldCBpPXRoaXMuZGVjb2RlQWRkcmVzcyhsWzBdKSxoPXRoaXMuZGVjb2RlQWRkcmVzcyhsWzFdKTtjb25zdCBmPU1hdGgubWluKGkucm93LGgucm93KSx1PU1hdGgubWluKGkuY29sLGgu'@; put 'Y29sKSxwPU1hdGgubWF4KGkucm93LGgucm93KSxkPU1hdGgubWF4KGkuY29sLGguY29sKTtyZXR1cm4gaT10aGlzLm4ybCh1KStmLGg9dGhpcy5uMmwoZCkrcCx7dG9wOmYsbGVmdDp1LGJvdHRvbTpwLHJpZ2h0OmQsc2hlZXROYW1lOnQsdGw6e2FkZHJlc3M6aSxjb2w6dSxyb3c6ZiwkY29s'@; put 'JHJvdzpgJCR7dGhpcy5uMmwodSl9JCR7Zn1gLHNoZWV0TmFtZTp0fSxicjp7YWRkcmVzczpoLGNvbDpkLHJvdzpwLCRjb2wkcm93OmAkJHt0aGlzLm4ybChkKX0kJHtwfWAsc2hlZXROYW1lOnR9LGRpbWVuc2lvbnM6YCR7aX06JHtofWB9fWlmKGUuc3RhcnRzV2l0aCgiIyIpKXJldHVybiB0'@; put 'P3tzaGVldE5hbWU6dCxlcnJvcjplfTp7ZXJyb3I6ZX07Y29uc3Qgbj10aGlzLmRlY29kZUFkZHJlc3MoZSk7cmV0dXJuIHQ/e3NoZWV0TmFtZTp0LC4uLm59Om59LGVuY29kZUFkZHJlc3M6KG8scik9PmEubjJsKHIpK28sZW5jb2RlKCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2Ug'@; put 'MjpyZXR1cm4gYS5lbmNvZGVBZGRyZXNzKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgNDpyZXR1cm5gJHthLmVuY29kZUFkZHJlc3MoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSl9OiR7YS5lbmNvZGVBZGRyZXNzKGFyZ3VtZW50c1syXSxhcmd1bWVudHNbM10pfWA7ZGVmYXVs'@; put 'dDp0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IGVuY29kZSB3aXRoIDIgb3IgNCBhcmd1bWVudHMiKX19LGluUmFuZ2UobyxyKXtjb25zdFt0LGUsLGwsbl09byxbaSxoXT1yO3JldHVybiBpPj10JiZpPD1sJiZoPj1lJiZoPD1ufX07RS5leHBvcnRzPWF9LHt9XSwyMDpbZnVuY3Rpb24ocyxF'@; put 'LFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPShvLHIpPT4oey4uLm8sLi4uci5yZWR1Y2UoKHQsZSk9PihvW2VdJiYodFtlXT17Li4ub1tlXX0pLHQpLHt9KX0pLGE9ZnVuY3Rpb24obyxyLHQpe29bdF0mJihyW3RdPWIob1t0XSxhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50'@; put 'c1szXT9hcmd1bWVudHNbM106W10pKX07Uy5jb3B5U3R5bGU9bz0+e2lmKCFvKXJldHVybiBvO2lmKDA9PT1PYmplY3Qua2V5cyhvKS5sZW5ndGgpcmV0dXJue307Y29uc3QgdD17Li4ub307cmV0dXJuIGEobyx0LCJmb250IixbImNvbG9yIl0pLGEobyx0LCJhbGlnbm1lbnQiKSxhKG8sdCwi'@; put 'cHJvdGVjdGlvbiIpLG8uYm9yZGVyJiYoYShvLHQsImJvcmRlciIpLGEoby5ib3JkZXIsdC5ib3JkZXIsInRvcCIsWyJjb2xvciJdKSxhKG8uYm9yZGVyLHQuYm9yZGVyLCJsZWZ0IixbImNvbG9yIl0pLGEoby5ib3JkZXIsdC5ib3JkZXIsImJvdHRvbSIsWyJjb2xvciJdKSxhKG8uYm9yZGVy'@; put 'LHQuYm9yZGVyLCJyaWdodCIsWyJjb2xvciJdKSxhKG8uYm9yZGVyLHQuYm9yZGVyLCJkaWFnb25hbCIsWyJjb2xvciJdKSksby5maWxsJiYoYShvLHQsImZpbGwiLFsiZmdDb2xvciIsImJnQ29sb3IiLCJjZW50ZXIiXSksby5maWxsLnN0b3BzJiYodC5maWxsLnN0b3BzPW8uZmlsbC5zdG9w'@; put 'cy5tYXAoZT0+YihlLFsiY29sb3IiXSkpKSksdH19LHt9XSwyMTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgYT1zKCJjcnlwdG8iKSxvPXtoYXNoKHIpe2NvbnN0IHQ9YS5jcmVhdGVIYXNoKHIpO2Zvcih2YXIgZT1hcmd1bWVu'@; put 'dHMubGVuZ3RoLGw9bmV3IEFycmF5KGU+MT9lLTE6MCksbj0xO248ZTtuKyspbFtuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC51cGRhdGUoYi5jb25jYXQobCkpLHQuZGlnZXN0KCl9LGNvbnZlcnRQYXNzd29yZFRvSGFzaChyLHQsZSxsKXtpZih0PXQudG9Mb3dlckNhc2UoKSxhLmdldEhh'@; put 'c2hlcygpLmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoYEhhc2ggYWxnb3JpdGhtICcke3R9JyBub3Qgc3VwcG9ydGVkIWApO2NvbnN0IG49Yi5mcm9tKHIsInV0ZjE2bGUiKTtsZXQgaT10aGlzLmhhc2godCxiLmZyb20oZSwiYmFzZTY0Iiksbik7Zm9yKGxldCBoPTA7aDxsO2grKyl7'@; put 'Y29uc3QgZj1iLmFsbG9jKDQpO2Yud3JpdGVVSW50MzJMRShoLDApLGk9dGhpcy5oYXNoKHQsaSxmKX1yZXR1cm4gaS50b1N0cmluZygiYmFzZTY0Iil9LHJhbmRvbUJ5dGVzOnI9PmEucmFuZG9tQnl0ZXMocil9O0UuZXhwb3J0cz1vfSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJidWZm'@; put 'ZXIiKS5CdWZmZXIpfSx7YnVmZmVyOjIyMCxjcnlwdG86MzkwfV0sMjI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3R7U2F4ZXNQYXJzZXI6Yn09cygic2F4ZXMiKSx7UGFzc1Rocm91Z2g6YX09cygicmVhZGFibGUtc3RyZWFtIikse2J1ZmZlclRvU3RyaW5nOm99PXMoIi4v'@; put 'YnJvd3Nlci1idWZmZXItZGVjb2RlIik7RS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHI9cWUoZnVuY3Rpb24qKHQpe3QucGlwZSYmIXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdJiYodD10LnBpcGUobmV3IGEpKTtjb25zdCBlPW5ldyBiO2xldCBsO2Uub24oImVycm9yIixkPT57bD1kfSk7bGV0'@; put 'IG49W107ZS5vbigib3BlbnRhZyIsZD0+bi5wdXNoKHtldmVudFR5cGU6Im9wZW50YWciLHZhbHVlOmR9KSksZS5vbigidGV4dCIsZD0+bi5wdXNoKHtldmVudFR5cGU6InRleHQiLHZhbHVlOmR9KSksZS5vbigiY2xvc2V0YWciLGQ9Pm4ucHVzaCh7ZXZlbnRUeXBlOiJjbG9zZXRhZyIsdmFs'@; put 'dWU6ZH0pKTt2YXIgZixpPSExLGg9ITE7dHJ5e2Zvcih2YXIgcCx1PUZlKHQpO2k9IShwPXlpZWxkIFVlKHUubmV4dCgpKSkuZG9uZTtpPSExKXtpZihlLndyaXRlKG8ocC52YWx1ZSkpLGwpdGhyb3cgbDt5aWVsZCBuLG49W119fWNhdGNoKGQpe2g9ITAsZj1kfWZpbmFsbHl7dHJ5e2kmJm51'@; put 'bGwhPXUucmV0dXJuJiYoeWllbGQgVWUodS5yZXR1cm4oKSkpfWZpbmFsbHl7aWYoaCl0aHJvdyBmfX19KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0seyIuL2Jyb3dzZXItYnVmZmVyLWRlY29kZSI6MTYsInJlYWRhYmxlLXN0cmVhbSI6'@; put 'NDkxLHNheGVzOjQ5Nn1dLDIzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi9jb2wtY2FjaGUiKSxhPS8oKFthLXpfXC0wLTldKikhKT8oW2EtejAtOV8kXXsyLH0pKFsoXSk/L2dpLG89L14oWyRdKT8oW2Etel0rKShbJF0pPyhbMS05XVswLTldKikkL2k7RS5l'@; put 'eHBvcnRzPXtzbGlkZUZvcm11bGE6ZnVuY3Rpb24ocix0LGUpe2NvbnN0IGw9Yi5kZWNvZGUodCksbj1iLmRlY29kZShlKTtyZXR1cm4gci5yZXBsYWNlKGEsKGksaCxmLHUscCk9PntpZihwKXJldHVybiBpO2NvbnN0IGQ9by5leGVjKHUpO2lmKGQpe2NvbnN0IHY9ZFsxXSxfPWRbMl0udG9V'@; put 'cHBlckNhc2UoKSxBPWRbM10sST1kWzRdO2lmKF8ubGVuZ3RoPjN8fDM9PT1fLmxlbmd0aCYmXz4iWEZEIilyZXR1cm4gaTtsZXQgTD1iLmwybihfKSxOPXBhcnNlSW50KEksMTApO3JldHVybiB2fHwoTCs9bi5jb2wtbC5jb2wpLEF8fChOKz1uLnJvdy1sLnJvdyksKGh8fCIiKSsodnx8IiIp'@; put 'K2IubjJsKEwpKyhBfHwiIikrTn1yZXR1cm4gaX0pfX19LHsiLi9jb2wtY2FjaGUiOjE5fV0sMjQ6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYixhKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3Qgbz1zKCJyZWFkYWJsZS1zdHJlYW0iKSxyPXMoIi4vdXRpbHMiKSx0PXMoIi4v'@; put 'c3RyaW5nLWJ1ZiIpO2NsYXNzIGV7Y29uc3RydWN0b3IodSxwKXt0aGlzLl9kYXRhPXUsdGhpcy5fZW5jb2Rpbmc9cH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMudG9CdWZmZXIoKS5sZW5ndGh9Y29weSh1LHAsZCx2KXtyZXR1cm4gdGhpcy50b0J1ZmZlcigpLmNvcHkodSxwLGQsdil9dG9C'@; put 'dWZmZXIoKXtyZXR1cm4gdGhpcy5fYnVmZmVyfHwodGhpcy5fYnVmZmVyPWEuZnJvbSh0aGlzLl9kYXRhLHRoaXMuX2VuY29kaW5nKSksdGhpcy5fYnVmZmVyfX1jbGFzcyBse2NvbnN0cnVjdG9yKHUpe3RoaXMuX2RhdGE9dX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2RhdGEubGVuZ3Ro'@; put 'fWNvcHkodSxwLGQsdil7cmV0dXJuIHRoaXMuX2RhdGEuX2J1Zi5jb3B5KHUscCxkLHYpfXRvQnVmZmVyKCl7cmV0dXJuIHRoaXMuX2RhdGEudG9CdWZmZXIoKX19Y2xhc3Mgbntjb25zdHJ1Y3Rvcih1KXt0aGlzLl9kYXRhPXV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9kYXRhLmxlbmd0'@; put 'aH1jb3B5KHUscCxkLHYpe3RoaXMuX2RhdGEuY29weSh1LHAsZCx2KX10b0J1ZmZlcigpe3JldHVybiB0aGlzLl9kYXRhfX1jbGFzcyBpe2NvbnN0cnVjdG9yKHUpe3RoaXMuc2l6ZT11LHRoaXMuYnVmZmVyPWEuYWxsb2ModSksdGhpcy5pUmVhZD0wLHRoaXMuaVdyaXRlPTB9dG9CdWZmZXIo'@; put 'KXtpZigwPT09dGhpcy5pUmVhZCYmdGhpcy5pV3JpdGU9PT10aGlzLnNpemUpcmV0dXJuIHRoaXMuYnVmZmVyO2NvbnN0IHU9YS5hbGxvYyh0aGlzLmlXcml0ZS10aGlzLmlSZWFkKTtyZXR1cm4gdGhpcy5idWZmZXIuY29weSh1LDAsdGhpcy5pUmVhZCx0aGlzLmlXcml0ZSksdX1nZXQgbGVu'@; put 'Z3RoKCl7cmV0dXJuIHRoaXMuaVdyaXRlLXRoaXMuaVJlYWR9Z2V0IGVvZCgpe3JldHVybiB0aGlzLmlSZWFkPT09dGhpcy5pV3JpdGV9Z2V0IGZ1bGwoKXtyZXR1cm4gdGhpcy5pV3JpdGU9PT10aGlzLnNpemV9cmVhZCh1KXtsZXQgcDtyZXR1cm4gMD09PXU/bnVsbDp2b2lkIDA9PT11fHx1'@; put 'Pj10aGlzLmxlbmd0aD8ocD10aGlzLnRvQnVmZmVyKCksdGhpcy5pUmVhZD10aGlzLmlXcml0ZSxwKToocD1hLmFsbG9jKHUpLHRoaXMuYnVmZmVyLmNvcHkocCwwLHRoaXMuaVJlYWQsdSksdGhpcy5pUmVhZCs9dSxwKX13cml0ZSh1LHAsZCl7Y29uc3Qgdj1NYXRoLm1pbihkLHRoaXMuc2l6'@; put 'ZS10aGlzLmlXcml0ZSk7cmV0dXJuIHUuY29weSh0aGlzLmJ1ZmZlcix0aGlzLmlXcml0ZSxwLHArdiksdGhpcy5pV3JpdGUrPXYsdn19Y29uc3QgaD1mdW5jdGlvbihmKXt0aGlzLmJ1ZlNpemU9KGY9Znx8e30pLmJ1ZlNpemV8fDEwNDg1NzYsdGhpcy5idWZmZXJzPVtdLHRoaXMuYmF0Y2g9'@; put 'Zi5iYXRjaHx8ITEsdGhpcy5jb3JrZWQ9ITEsdGhpcy5pblBvcz0wLHRoaXMub3V0UG9zPTAsdGhpcy5waXBlcz1bXSx0aGlzLnBhdXNlZD0hMSx0aGlzLmVuY29kaW5nPW51bGx9O3IuaW5oZXJpdHMoaCxvLkR1cGxleCx7dG9CdWZmZXIoKXtzd2l0Y2godGhpcy5idWZmZXJzLmxlbmd0aCl7'@; put 'Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpyZXR1cm4gdGhpcy5idWZmZXJzWzBdLnRvQnVmZmVyKCk7ZGVmYXVsdDpyZXR1cm4gYS5jb25jYXQodGhpcy5idWZmZXJzLm1hcChmPT5mLnRvQnVmZmVyKCkpKX19LF9nZXRXcml0YWJsZUJ1ZmZlcigpe2lmKHRoaXMuYnVmZmVycy5sZW5ndGgp'@; put 'e2NvbnN0IHU9dGhpcy5idWZmZXJzW3RoaXMuYnVmZmVycy5sZW5ndGgtMV07aWYoIXUuZnVsbClyZXR1cm4gdX1jb25zdCBmPW5ldyBpKHRoaXMuYnVmU2l6ZSk7cmV0dXJuIHRoaXMuYnVmZmVycy5wdXNoKGYpLGZ9LF9waXBlKGYpe3ZhciB1PXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigp'@; put 'e3lpZWxkIFByb21pc2UuYWxsKHUucGlwZXMubWFwKGZ1bmN0aW9uKHApe3JldHVybiBuZXcgUHJvbWlzZShkPT57cC53cml0ZShmLnRvQnVmZmVyKCksKCk9PntkKCl9KX0pfSkpfSkoKX0sX3dyaXRlVG9CdWZmZXJzKGYpe2xldCB1PTA7Y29uc3QgcD1mLmxlbmd0aDtmb3IoO3U8cDspdSs9'@; put 'dGhpcy5fZ2V0V3JpdGFibGVCdWZmZXIoKS53cml0ZShmLHUscC11KX0sd3JpdGUoZix1LHApe3ZhciBkPXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2xldCB2O2lmKHUgaW5zdGFuY2VvZiBGdW5jdGlvbiYmKHA9dSx1PSJ1dGY4IikscD1wfHxyLm5vcCxmIGluc3RhbmNlb2YgdCl2PW5l'@; put 'dyBsKGYpO2Vsc2UgaWYoZiBpbnN0YW5jZW9mIGEpdj1uZXcgbihmKTtlbHNle2lmKCEoInN0cmluZyI9PXR5cGVvZiBmfHxmIGluc3RhbmNlb2YgU3RyaW5nfHxmIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiQ2h1bmsgbXVzdCBiZSBvbmUgb2YgdHlwZSBTdHJp'@; put 'bmcsIEJ1ZmZlciBvciBTdHJpbmdCdWYuIik7dj1uZXcgZShmLHUpfWlmKGQucGlwZXMubGVuZ3RoKWlmKGQuYmF0Y2gpZm9yKGQuX3dyaXRlVG9CdWZmZXJzKHYpOyFkLmNvcmtlZCYmZC5idWZmZXJzLmxlbmd0aD4xOylkLl9waXBlKGQuYnVmZmVycy5zaGlmdCgpKTtlbHNlIGQuY29ya2Vk'@; put 'PyhkLl93cml0ZVRvQnVmZmVycyh2KSxiLm5leHRUaWNrKHApKTooeWllbGQgZC5fcGlwZSh2KSxwKCkpO2Vsc2UgZC5wYXVzZWR8fGQuZW1pdCgiZGF0YSIsdi50b0J1ZmZlcigpKSxkLl93cml0ZVRvQnVmZmVycyh2KSxkLmVtaXQoInJlYWRhYmxlIik7cmV0dXJuITB9KSgpfSxjb3JrKCl7'@; put 'dGhpcy5jb3JrZWQ9ITB9LF9mbHVzaCgpe2lmKHRoaXMucGlwZXMubGVuZ3RoKWZvcig7dGhpcy5idWZmZXJzLmxlbmd0aDspdGhpcy5fcGlwZSh0aGlzLmJ1ZmZlcnMuc2hpZnQoKSl9LHVuY29yaygpe3RoaXMuY29ya2VkPSExLHRoaXMuX2ZsdXNoKCl9LGVuZChmLHUscCl7Y29uc3QgZD12'@; put 'PT57dj9wKHYpOih0aGlzLl9mbHVzaCgpLHRoaXMucGlwZXMuZm9yRWFjaChfPT57Xy5lbmQoKX0pLHRoaXMuZW1pdCgiZmluaXNoIikpfTtmP3RoaXMud3JpdGUoZix1LGQpOmQoKX0scmVhZChmKXtsZXQgdTtpZihmKXtmb3IodT1bXTtmJiZ0aGlzLmJ1ZmZlcnMubGVuZ3RoJiYhdGhpcy5i'@; put 'dWZmZXJzWzBdLmVvZDspe2NvbnN0IHA9dGhpcy5idWZmZXJzWzBdLGQ9cC5yZWFkKGYpO2YtPWQubGVuZ3RoLHUucHVzaChkKSxwLmVvZCYmcC5mdWxsJiZ0aGlzLmJ1ZmZlcnMuc2hpZnQoKX1yZXR1cm4gYS5jb25jYXQodSl9cmV0dXJuIHU9dGhpcy5idWZmZXJzLm1hcChwPT5wLnRvQnVm'@; put 'ZmVyKCkpLmZpbHRlcihCb29sZWFuKSx0aGlzLmJ1ZmZlcnM9W10sYS5jb25jYXQodSl9LHNldEVuY29kaW5nKGYpe3RoaXMuZW5jb2Rpbmc9Zn0scGF1c2UoKXt0aGlzLnBhdXNlZD0hMH0scmVzdW1lKCl7dGhpcy5wYXVzZWQ9ITF9LGlzUGF1c2VkKCl7cmV0dXJuISF0aGlzLnBhdXNlZH0s'@; put 'cGlwZShmKXt0aGlzLnBpcGVzLnB1c2goZiksIXRoaXMucGF1c2VkJiZ0aGlzLmJ1ZmZlcnMubGVuZ3RoJiZ0aGlzLmVuZCgpfSx1bnBpcGUoZil7dGhpcy5waXBlcz10aGlzLnBpcGVzLmZpbHRlcih1PT51IT09Zil9LHVuc2hpZnQoKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBJbXBsZW1lbnRl'@; put 'ZCIpfSx3cmFwKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgSW1wbGVtZW50ZWQiKX19KSxFLmV4cG9ydHM9aH0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSxzKCJidWZmZXIiKS5CdWZmZXIpfSx7Ii4vc3RyaW5nLWJ1ZiI6MjUsIi4vdXRpbHMiOjI3LF9wcm9jZXNzOjQ2'@; put 'NyxidWZmZXI6MjIwLCJyZWFkYWJsZS1zdHJlYW0iOjQ5MX1dLDI1OltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5fYnVmPWIuYWxsb2MoYSYmYS5zaXplfHwxNjM4NCksdGhp'@; put 'cy5fZW5jb2Rpbmc9YSYmYS5lbmNvZGluZ3x8InV0ZjgiLHRoaXMuX2luUG9zPTAsdGhpcy5fYnVmZmVyPXZvaWQgMH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2luUG9zfWdldCBjYXBhY2l0eSgpe3JldHVybiB0aGlzLl9idWYubGVuZ3RofWdldCBidWZmZXIoKXtyZXR1cm4gdGhpcy5f'@; put 'YnVmfXRvQnVmZmVyKCl7cmV0dXJuIHRoaXMuX2J1ZmZlcnx8KHRoaXMuX2J1ZmZlcj1iLmFsbG9jKHRoaXMubGVuZ3RoKSx0aGlzLl9idWYuY29weSh0aGlzLl9idWZmZXIsMCwwLHRoaXMubGVuZ3RoKSksdGhpcy5fYnVmZmVyfXJlc2V0KGEpe2E9YXx8MCx0aGlzLl9idWZmZXI9dm9pZCAw'@; put 'LHRoaXMuX2luUG9zPWF9X2dyb3coYSl7bGV0IG89Mip0aGlzLl9idWYubGVuZ3RoO2Zvcig7bzxhOylvKj0yO2NvbnN0IHI9Yi5hbGxvYyhvKTt0aGlzLl9idWYuY29weShyLDApLHRoaXMuX2J1Zj1yfWFkZFRleHQoYSl7dGhpcy5fYnVmZmVyPXZvaWQgMDtsZXQgbz10aGlzLl9pblBvcyt0'@; put 'aGlzLl9idWYud3JpdGUoYSx0aGlzLl9pblBvcyx0aGlzLl9lbmNvZGluZyk7Zm9yKDtvPj10aGlzLl9idWYubGVuZ3RoLTQ7KXRoaXMuX2dyb3codGhpcy5faW5Qb3MrYS5sZW5ndGgpLG89dGhpcy5faW5Qb3MrdGhpcy5fYnVmLndyaXRlKGEsdGhpcy5faW5Qb3MsdGhpcy5fZW5jb2Rpbmcp'@; put 'O3RoaXMuX2luUG9zPW99YWRkU3RyaW5nQnVmKGEpe2EubGVuZ3RoJiYodGhpcy5fYnVmZmVyPXZvaWQgMCx0aGlzLmxlbmd0aCthLmxlbmd0aD50aGlzLmNhcGFjaXR5JiZ0aGlzLl9ncm93KHRoaXMubGVuZ3RoK2EubGVuZ3RoKSxhLl9idWYuY29weSh0aGlzLl9idWYsdGhpcy5faW5Qb3Ms'@; put 'MCxhLmxlbmd0aCksdGhpcy5faW5Qb3MrPWEubGVuZ3RoKX19fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJidWZmZXIiKS5CdWZmZXIpfSx7YnVmZmVyOjIyMH1dLDI2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0e3RvU3RyaW5nOmJ9PU9iamVjdC5wcm90b3R5cGUs'@; put 'YT0vWyImPD5dLyxvPXtlYWNoOmZ1bmN0aW9uKHIsdCl7ciYmKEFycmF5LmlzQXJyYXkocik/ci5mb3JFYWNoKHQpOk9iamVjdC5rZXlzKHIpLmZvckVhY2goZT0+e3QocltlXSxlKX0pKX0sc29tZTpmdW5jdGlvbihyLHQpe3JldHVybiEhciYmKEFycmF5LmlzQXJyYXkocik/ci5zb21lKHQp'@; put 'Ok9iamVjdC5rZXlzKHIpLnNvbWUoZT0+dChyW2VdLGUpKSl9LGV2ZXJ5OmZ1bmN0aW9uKHIsdCl7cmV0dXJuIXJ8fChBcnJheS5pc0FycmF5KHIpP3IuZXZlcnkodCk6T2JqZWN0LmtleXMocikuZXZlcnkoZT0+dChyW2VdLGUpKSl9LG1hcDpmdW5jdGlvbihyLHQpe3JldHVybiByP0FycmF5'@; put 'LmlzQXJyYXkocik/ci5tYXAodCk6T2JqZWN0LmtleXMocikubWFwKGU9PnQocltlXSxlKSk6W119LGtleUJ5OihyLHQpPT5yLnJlZHVjZSgoZSxsKT0+KGVbbFt0XV09bCxlKSx7fSksaXNFcXVhbDpmdW5jdGlvbihyLHQpe2NvbnN0IGU9dHlwZW9mIHIsbD10eXBlb2YgdCxuPUFycmF5Lmlz'@; put 'QXJyYXkociksaT1BcnJheS5pc0FycmF5KHQpO2xldCBoO2lmKGUhPT1sKXJldHVybiExO2lmKCJvYmplY3QiPT10eXBlb2Ygcil7aWYobnx8aSlyZXR1cm4hKCFufHwhaSkmJnIubGVuZ3RoPT09dC5sZW5ndGgmJnIuZXZlcnkoKGYsdSk9Pm8uaXNFcXVhbChmLHRbdV0pKTtpZihudWxsPT09'@; put 'cnx8bnVsbD09PXQpcmV0dXJuIHI9PT10O2lmKGg9T2JqZWN0LmtleXMociksT2JqZWN0LmtleXModCkubGVuZ3RoIT09aC5sZW5ndGgpcmV0dXJuITE7Zm9yKGNvbnN0IGYgb2YgaClpZighdC5oYXNPd25Qcm9wZXJ0eShmKSlyZXR1cm4hMTtyZXR1cm4gby5ldmVyeShyLChmLHUpPT5vLmlz'@; put 'RXF1YWwoZix0W3VdKSl9cmV0dXJuIHI9PT10fSxlc2NhcGVIdG1sKHIpe2NvbnN0IHQ9YS5leGVjKHIpO2lmKCF0KXJldHVybiByO2xldCBlPSIiLGw9IiIsbj0wLGk9dC5pbmRleDtmb3IoO2k8ci5sZW5ndGg7aSsrKXtzd2l0Y2goci5jaGFyQXQoaSkpe2Nhc2UnIic6bD0iJnF1b3Q7Ijti'@; put 'cmVhaztjYXNlIiYiOmw9IiZhbXA7IjticmVhaztjYXNlIiciOmw9IiZhcG9zOyI7YnJlYWs7Y2FzZSI8IjpsPSImbHQ7IjticmVhaztjYXNlIj4iOmw9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9biE9PWkmJihlKz1yLnN1YnN0cmluZyhuLGkpKSxuPWkrMSxlKz1sfXJldHVybiBu'@; put 'IT09aT9lK3Iuc3Vic3RyaW5nKG4saSk6ZX0sc3RyY21wOihyLHQpPT5yPHQ/LTE6cj50PzE6MCxpc1VuZGVmaW5lZDpyPT4iW29iamVjdCBVbmRlZmluZWRdIj09PWIuY2FsbChyKSxpc09iamVjdDpyPT4iW29iamVjdCBPYmplY3RdIj09PWIuY2FsbChyKSxkZWVwTWVyZ2UoKXtjb25zdCBy'@; put 'PWFyZ3VtZW50c1swXXx8e30se2xlbmd0aDp0fT1hcmd1bWVudHM7bGV0IGUsbCxuO2Z1bmN0aW9uIGkoaCxmKXtlPXJbZl0sbj1BcnJheS5pc0FycmF5KGgpLG8uaXNPYmplY3QoaCl8fG4/KG4/KG49ITEsbD1lJiZBcnJheS5pc0FycmF5KGUpP2U6W10pOmw9ZSYmby5pc09iamVjdChlKT9l'@; put 'Ont9LHJbZl09by5kZWVwTWVyZ2UobCxoKSk6by5pc1VuZGVmaW5lZChoKXx8KHJbZl09aCl9Zm9yKGxldCBoPTA7aDx0O2grKylvLmVhY2goYXJndW1lbnRzW2hdLGkpO3JldHVybiByfX07RS5leHBvcnRzPW99LHt9XSwyNzpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiLGEpeyhmdW5j'@; put 'dGlvbigpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBvPXMoImZzIikscj0vWzw+JiciXHg3Rlx4MDAtXHgwOFx4MEItXHgwQ1x4MEUtXHgxRl0vLHQ9e25vcCgpe30scHJvbWlzZUltbWVkaWF0ZTplPT5uZXcgUHJvbWlzZShsPT57Yi5zZXRJbW1lZGlhdGU/YSgoKT0+e2woZSl9KTpzZXRUaW1lb3V0'@; put 'KCgpPT57bChlKX0sMSl9KSxpbmhlcml0czpmdW5jdGlvbihlLGwsbixpKXtlLnN1cGVyXz1sLGl8fChpPW4sbj1udWxsKSxuJiZPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGY9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixmKSl9'@; put 'KTtjb25zdCBoPXtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH19O2kmJk9iamVjdC5rZXlzKGkpLmZvckVhY2goZj0+e2hbZl09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGYpfSksZS5wcm90b3R5cGU9T2Jq'@; put 'ZWN0LmNyZWF0ZShsLnByb3RvdHlwZSxoKX0sZGF0ZVRvRXhjZWw6KGUsbCk9PjI1NTY5K2UuZ2V0VGltZSgpLzg2NGU1LShsPzE0NjI6MCksZXhjZWxUb0RhdGUoZSxsKXtjb25zdCBuPU1hdGgucm91bmQoMjQqKGUtMjU1NjkrKGw/MTQ2MjowKSkqMzYwMCoxZTMpO3JldHVybiBuZXcgRGF0'@; put 'ZShuKX0scGFyc2VQYXRoKGUpe2NvbnN0IGw9ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybntwYXRoOmUuc3Vic3RyaW5nKDAsbCksbmFtZTplLnN1YnN0cmluZyhsKzEpfX0sZ2V0UmVsc1BhdGgoZSl7Y29uc3QgbD10LnBhcnNlUGF0aChlKTtyZXR1cm5gJHtsLnBhdGh9L19yZWxzLyR7bC5u'@; put 'YW1lfS5yZWxzYH0seG1sRW5jb2RlKGUpe2NvbnN0IGw9ci5leGVjKGUpO2lmKCFsKXJldHVybiBlO2xldCBuPSIiLGk9IiIsaD0wLGY9bC5pbmRleDtmb3IoO2Y8ZS5sZW5ndGg7ZisrKXtjb25zdCB1PWUuY2hhckNvZGVBdChmKTtzd2l0Y2godSl7Y2FzZSAzNDppPSImcXVvdDsiO2JyZWFr'@; put 'O2Nhc2UgMzg6aT0iJmFtcDsiO2JyZWFrO2Nhc2UgMzk6aT0iJmFwb3M7IjticmVhaztjYXNlIDYwOmk9IiZsdDsiO2JyZWFrO2Nhc2UgNjI6aT0iJmd0OyI7YnJlYWs7Y2FzZSAxMjc6aT0iIjticmVhaztkZWZhdWx0OmlmKHU8PTMxJiYodTw9OHx8dT49MTEmJjEzIT09dSkpe2k9IiI7YnJl'@; put 'YWt9Y29udGludWV9aCE9PWYmJihuKz1lLnN1YnN0cmluZyhoLGYpKSxoPWYrMSxpJiYobis9aSl9cmV0dXJuIGghPT1mP24rZS5zdWJzdHJpbmcoaCxmKTpufSx4bWxEZWNvZGU6ZT0+ZS5yZXBsYWNlKC8mKFthLXpdKik7L2csbD0+e3N3aXRjaChsKXtjYXNlIiZsdDsiOnJldHVybiI8Ijtj'@; put 'YXNlIiZndDsiOnJldHVybiI+IjtjYXNlIiZhbXA7IjpyZXR1cm4iJiI7Y2FzZSImYXBvczsiOnJldHVybiInIjtjYXNlIiZxdW90OyI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIGx9fSksdmFsaWRJbnQoZSl7Y29uc3QgbD1wYXJzZUludChlLDEwKTtyZXR1cm4gTnVtYmVyLmlzTmFOKGwp'@; put 'PzA6bH0saXNEYXRlRm10OmU9PiEhZSYmbnVsbCE9PShlPShlPWUucmVwbGFjZSgvXFtbXlxdXSpdL2csIiIpKS5yZXBsYWNlKC8iW14iXSoiL2csIiIpKS5tYXRjaCgvW3ltZGhNc2JdKy8pLGZzOntleGlzdHM6ZT0+bmV3IFByb21pc2UobD0+e28uYWNjZXNzKGUsby5jb25zdGFudHMuRl9P'@; put 'SyxuPT57bCghbil9KX0pfSx0b0lzb0RhdGVTdHJpbmc6ZT0+ZS50b0lzb1N0cmluZygpLnN1YnNzdHIoMCwxMCkscGFyc2VCb29sZWFuOmU9PiEwPT09ZXx8InRydWUiPT09ZXx8MT09PWV8fCIxIj09PWV9O0UuZXhwb3J0cz10fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xv'@; put 'YmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9LHMoInRpbWVycyIpLnNldEltbWVkaWF0ZSl9LHtmczoyMTYsdGltZXJzOjUyM31dLDI4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi91bmRlci1k'@; put 'YXNoIiksYT1zKCIuL3V0aWxzIik7ZnVuY3Rpb24gbyhlLGwsbil7ZS5wdXNoKGAgJHtsfT0iJHthLnhtbEVuY29kZShuLnRvU3RyaW5nKCkpfSJgKX1mdW5jdGlvbiByKGUsbCl7aWYobCl7Y29uc3Qgbj1bXTtiLmVhY2gobCwoaSxoKT0+e3ZvaWQgMCE9PWkmJm8obixoLGkpfSksZS5wdXNo'@; put 'KG4uam9pbigiIikpfX1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5feG1sPVtdLHRoaXMuX3N0YWNrPVtdLHRoaXMuX3JvbGxiYWNrcz1bXX1nZXQgdG9zKCl7cmV0dXJuIHRoaXMuX3N0YWNrLmxlbmd0aD90aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV06dm9pZCAwfWdldCBj'@; put 'dXJzb3IoKXtyZXR1cm4gdGhpcy5feG1sLmxlbmd0aH1vcGVuWG1sKGwpe2NvbnN0IG49dGhpcy5feG1sO24ucHVzaCgiPD94bWwiKSxyKG4sbCksbi5wdXNoKCI/PlxuIil9b3Blbk5vZGUobCxuKXtjb25zdCBoPXRoaXMuX3htbDt0aGlzLnRvcyYmdGhpcy5vcGVuJiZoLnB1c2goIj4iKSx0'@; put 'aGlzLl9zdGFjay5wdXNoKGwpLGgucHVzaCgiPCIpLGgucHVzaChsKSxyKGgsbiksdGhpcy5sZWFmPSEwLHRoaXMub3Blbj0hMH1hZGRBdHRyaWJ1dGUobCxuKXtpZighdGhpcy5vcGVuKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIGF0dHJpYnV0ZXMgdG8gbm9kZSBpZiBpdCBpcyBu'@; put 'b3Qgb3BlbiIpO3ZvaWQgMCE9PW4mJm8odGhpcy5feG1sLGwsbil9YWRkQXR0cmlidXRlcyhsKXtpZighdGhpcy5vcGVuKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIGF0dHJpYnV0ZXMgdG8gbm9kZSBpZiBpdCBpcyBub3Qgb3BlbiIpO3IodGhpcy5feG1sLGwpfXdyaXRlVGV4dChs'@; put 'KXtjb25zdCBuPXRoaXMuX3htbDt0aGlzLm9wZW4mJihuLnB1c2goIj4iKSx0aGlzLm9wZW49ITEpLHRoaXMubGVhZj0hMSxuLnB1c2goYS54bWxFbmNvZGUobC50b1N0cmluZygpKSl9d3JpdGVYbWwobCl7dGhpcy5vcGVuJiYodGhpcy5feG1sLnB1c2goIj4iKSx0aGlzLm9wZW49ITEpLHRo'@; put 'aXMubGVhZj0hMSx0aGlzLl94bWwucHVzaChsKX1jbG9zZU5vZGUoKXtjb25zdCBsPXRoaXMuX3N0YWNrLnBvcCgpLG49dGhpcy5feG1sO3RoaXMubGVhZj9uLnB1c2goIi8+Iik6KG4ucHVzaCgiPC8iKSxuLnB1c2gobCksbi5wdXNoKCI+IikpLHRoaXMub3Blbj0hMSx0aGlzLmxlYWY9ITF9'@; put 'bGVhZk5vZGUobCxuLGkpe3RoaXMub3Blbk5vZGUobCxuKSx2b2lkIDAhPT1pJiZ0aGlzLndyaXRlVGV4dChpKSx0aGlzLmNsb3NlTm9kZSgpfWNsb3NlQWxsKCl7Zm9yKDt0aGlzLl9zdGFjay5sZW5ndGg7KXRoaXMuY2xvc2VOb2RlKCl9YWRkUm9sbGJhY2soKXtyZXR1cm4gdGhpcy5fcm9s'@; put 'bGJhY2tzLnB1c2goe3htbDp0aGlzLl94bWwubGVuZ3RoLHN0YWNrOnRoaXMuX3N0YWNrLmxlbmd0aCxsZWFmOnRoaXMubGVhZixvcGVuOnRoaXMub3Blbn0pLHRoaXMuY3Vyc29yfWNvbW1pdCgpe3RoaXMuX3JvbGxiYWNrcy5wb3AoKX1yb2xsYmFjaygpe2NvbnN0IGw9dGhpcy5fcm9sbGJh'@; put 'Y2tzLnBvcCgpO3RoaXMuX3htbC5sZW5ndGg+bC54bWwmJnRoaXMuX3htbC5zcGxpY2UobC54bWwsdGhpcy5feG1sLmxlbmd0aC1sLnhtbCksdGhpcy5fc3RhY2subGVuZ3RoPmwuc3RhY2smJnRoaXMuX3N0YWNrLnNwbGljZShsLnN0YWNrLHRoaXMuX3N0YWNrLmxlbmd0aC1sLnN0YWNrKSx0'@; put 'aGlzLmxlYWY9bC5sZWFmLHRoaXMub3Blbj1sLm9wZW59Z2V0IHhtbCgpe3JldHVybiB0aGlzLmNsb3NlQWxsKCksdGhpcy5feG1sLmpvaW4oIiIpfX10LlN0ZERvY0F0dHJpYnV0ZXM9e3ZlcnNpb246IjEuMCIsZW5jb2Rpbmc6IlVURi04IixzdGFuZGFsb25lOiJ5ZXMifSxFLmV4cG9ydHM9'@; put 'dH0seyIuL3VuZGVyLWRhc2giOjI2LCIuL3V0aWxzIjoyN31dLDI5OltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBhPXMoImV2ZW50cyIpLG89cygianN6aXAiKSxyPXMoIi4vc3RyZWFtLWJ1ZiIpLHtzdHJpbmdUb0J1ZmZlcjp0'@; put 'fT1zKCIuL2Jyb3dzZXItYnVmZmVyLWVuY29kZSIpO0UuZXhwb3J0cz17WmlwV3JpdGVyOmNsYXNzIGUgZXh0ZW5kcyBhLkV2ZW50RW1pdHRlcntjb25zdHJ1Y3RvcihuKXtzdXBlcigpLHRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHt0eXBlOiJub2RlYnVmZmVyIixjb21wcmVzc2lvbjoi'@; put 'REVGTEFURSJ9LG4pLHRoaXMuemlwPW5ldyBvLHRoaXMuc3RyZWFtPW5ldyByfWFwcGVuZChuLGkpe2kuaGFzT3duUHJvcGVydHkoImJhc2U2NCIpJiZpLmJhc2U2ND90aGlzLnppcC5maWxlKGkubmFtZSxuLHtiYXNlNjQ6ITB9KTooYi5icm93c2VyJiYic3RyaW5nIj09dHlwZW9mIG4mJihu'@; put 'PXQobikpLHRoaXMuemlwLmZpbGUoaS5uYW1lLG4pKX1maW5hbGl6ZSgpe3ZhciBuPXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IGk9eWllbGQgbi56aXAuZ2VuZXJhdGVBc3luYyhuLm9wdGlvbnMpO24uc3RyZWFtLmVuZChpKSxuLmVtaXQoImZpbmlzaCIpfSkoKX1yZWFkKG4p'@; put 'e3JldHVybiB0aGlzLnN0cmVhbS5yZWFkKG4pfXNldEVuY29kaW5nKG4pe3JldHVybiB0aGlzLnN0cmVhbS5zZXRFbmNvZGluZyhuKX1wYXVzZSgpe3JldHVybiB0aGlzLnN0cmVhbS5wYXVzZSgpfXJlc3VtZSgpe3JldHVybiB0aGlzLnN0cmVhbS5yZXN1bWUoKX1pc1BhdXNlZCgpe3JldHVy'@; put 'biB0aGlzLnN0cmVhbS5pc1BhdXNlZCgpfXBpcGUobixpKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGlwZShuLGkpfXVucGlwZShuKXtyZXR1cm4gdGhpcy5zdHJlYW0udW5waXBlKG4pfXVuc2hpZnQobil7cmV0dXJuIHRoaXMuc3RyZWFtLnVuc2hpZnQobil9d3JhcChuKXtyZXR1cm4gdGhpcy5z'@; put 'dHJlYW0ud3JhcChuKX19fX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSl9LHsiLi9icm93c2VyLWJ1ZmZlci1lbmNvZGUiOjE3LCIuL3N0cmVhbS1idWYiOjI0LF9wcm9jZXNzOjQ2NyxldmVudHM6NDIyLGpzemlwOjQ0MX1dLDMwOltmdW5jdGlvbihzLEUsUyl7InVz'@; put 'ZSBzdHJpY3QiO0UuZXhwb3J0cz17MDp7ZjoiR2VuZXJhbCJ9LDE6e2Y6IjAifSwyOntmOiIwLjAwIn0sMzp7ZjoiIywjIzAifSw0OntmOiIjLCMjMC4wMCJ9LDk6e2Y6IjAlIn0sMTA6e2Y6IjAuMDAlIn0sMTE6e2Y6IjAuMDBFKzAwIn0sMTI6e2Y6IiMgPy8/In0sMTM6e2Y6IiMgPz8vPz8i'@; put 'fSwxNDp7ZjoibW0tZGQteXkifSwxNTp7ZjoiZC1tbW0teXkifSwxNjp7ZjoiZC1tbW0ifSwxNzp7ZjoibW1tLXl5In0sMTg6e2Y6Img6bW0gQU0vUE0ifSwxOTp7ZjoiaDptbTpzcyBBTS9QTSJ9LDIwOntmOiJoOm1tIn0sMjE6e2Y6Img6bW06c3MifSwyMjp7ZjonbS9kL3l5ICJoIjptbSd9'@; put 'LDI3OnsiemgtdHciOiJbJC00MDRdZS9tL2QiLCJ6aC1jbiI6J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsImphLWpwIjoiWyQtNDExXWdlLm0uZCIsImtvLWtyIjoneXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1Iid9LDI4OnsiemgtdHciOidbJC00MDRdZSJcdTVlNzQibSJcdTY3'@; put 'MDgiZCJcdTY1ZTUiJywiemgtY24iOidtIlx1NjcwOCJkIlx1NjVlNSInLCJqYS1qcCI6J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLCJrby1rciI6Im1tLWRkIn0sMjk6eyJ6aC10dyI6J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLCJ6aC1jbiI6'@; put 'J20iXHU2NzA4ImQiXHU2NWU1IicsImphLWpwIjonWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicsImtvLWtyIjoibW0tZGQifSwzMDp7InpoLXR3IjoibS9kL3l5ICIsInpoLWNuIjoibS1kLXl5IiwiamEtanAiOiJtL2QveXkiLCJrby1rciI6Im1tLWRkLXl5In0sMzE6'@; put 'eyJ6aC10dyI6J3l5eXkiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicsInpoLWNuIjoneXl5eSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJywiamEtanAiOid5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLCJrby1rciI6J3l5eXkiXHViMTQ0IiBtbSJcdWM2ZDQiIGRkIlx1Yzc3'@; put 'YyInfSwzMjp7InpoLXR3IjonaGgiXHU2NjQyIm1tIlx1NTIwNiInLCJ6aC1jbiI6J2giXHU2NWY2Im1tIlx1NTIwNiInLCJqYS1qcCI6J2giXHU2NjQyIm1tIlx1NTIwNiInLCJrby1rciI6J2giXHVjMmRjIiBtbSJcdWJkODQiJ30sMzM6eyJ6aC10dyI6J2hoIlx1NjY0MiJtbSJcdTUyMDYi'@; put 'c3MiXHU3OWQyIicsInpoLWNuIjonaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLCJqYS1qcCI6J2giXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJywia28ta3IiOidoIlx1YzJkYyIgbW0iXHViZDg0IiBzcyJcdWNkMDgiJ30sMzQ6eyJ6aC10dyI6J1x1NGUwYVx1NTM0OC9cdTRl'@; put 'MGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLCJ6aC1jbiI6J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2IicsImphLWpwIjoneXl5eSJcdTVlNzQibSJcdTY3MDgiJywia28ta3IiOiJ5eXl5LW1tLWRkIn0sMzU6eyJ6aC10dyI6J1x1NGUwYVx1NTM0'@; put 'OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJywiemgtY24iOidcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGgiXHU2NWY2Im1tIlx1NTIwNiJzcyJcdTc5ZDIiJywiamEtanAiOidtIlx1NjcwOCJkIlx1NjVlNSInLCJrby1rciI6Inl5eXktbW0tZGQifSwz'@; put 'Njp7InpoLXR3IjoiWyQtNDA0XWUvbS9kIiwiemgtY24iOid5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLCJqYS1qcCI6IlskLTQxMV1nZS5tLmQiLCJrby1rciI6J3l5eXkiXHU1ZTc0IiBtbSJcdTY3MDgiIGRkIlx1NjVlNSInfSwzNzp7ZjoiIywjIzAgOygjLCMjMCkifSwzODp7ZjoiIywjIzAg'@; put 'O1tSZWRdKCMsIyMwKSJ9LDM5OntmOiIjLCMjMC4wMCA7KCMsIyMwLjAwKSJ9LDQwOntmOiIjLCMjMC4wMCA7W1JlZF0oIywjIzAuMDApIn0sNDU6e2Y6Im1tOnNzIn0sNDY6e2Y6IltoXTptbTpzcyJ9LDQ3OntmOiJtbXNzLjAifSw0ODp7ZjoiIyMwLjBFKzAifSw0OTp7ZjoiQCJ9LDUwOnsi'@; put 'emgtdHciOiJbJC00MDRdZS9tL2QiLCJ6aC1jbiI6J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsImphLWpwIjoiWyQtNDExXWdlLm0uZCIsImtvLWtyIjoneXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1Iid9LDUxOnsiemgtdHciOidbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJc'@; put 'dTY1ZTUiJywiemgtY24iOidtIlx1NjcwOCJkIlx1NjVlNSInLCJqYS1qcCI6J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLCJrby1rciI6Im1tLWRkIn0sNTI6eyJ6aC10dyI6J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLCJ6'@; put 'aC1jbiI6J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsImphLWpwIjoneXl5eSJcdTVlNzQibSJcdTY3MDgiJywia28ta3IiOiJ5eXl5LW1tLWRkIn0sNTM6eyJ6aC10dyI6J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJywiemgtY24iOidt'@; put 'Ilx1NjcwOCJkIlx1NjVlNSInLCJqYS1qcCI6J20iXHU2NzA4ImQiXHU2NWU1IicsImtvLWtyIjoieXl5eS1tbS1kZCJ9LDU0OnsiemgtdHciOidbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJywiemgtY24iOidtIlx1NjcwOCJkIlx1NjVlNSInLCJqYS1qcCI6J1skLTQxMV1n'@; put 'Z2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLCJrby1rciI6Im1tLWRkIn0sNTU6eyJ6aC10dyI6J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLCJ6aC1jbiI6J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2Iics'@; put 'ImphLWpwIjoneXl5eSJcdTVlNzQibSJcdTY3MDgiJywia28ta3IiOiJ5eXl5LW1tLWRkIn0sNTY6eyJ6aC10dyI6J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJywiemgtY24iOidcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGgiXHU2'@; put 'NWY2Im1tIlx1NTIwNiJzcyJcdTc5ZDIiJywiamEtanAiOidtIlx1NjcwOCJkIlx1NjVlNSInLCJrby1rciI6Inl5eXktbW0tZGQifSw1Nzp7InpoLXR3IjoiWyQtNDA0XWUvbS9kIiwiemgtY24iOid5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLCJqYS1qcCI6IlskLTQxMV1nZS5tLmQiLCJrby1r'@; put 'ciI6J3l5eXkiXHU1ZTc0IiBtbSJcdTY3MDgiIGRkIlx1NjVlNSInfSw1ODp7InpoLXR3IjonWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicsInpoLWNuIjonbSJcdTY3MDgiZCJcdTY1ZTUiJywiamEtanAiOidbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUi'@; put 'Jywia28ta3IiOiJtbS1kZCJ9LDU5OnsidGgtdGgiOiJ0MCJ9LDYwOnsidGgtdGgiOiJ0MC4wMCJ9LDYxOnsidGgtdGgiOiJ0IywjIzAifSw2Mjp7InRoLXRoIjoidCMsIyMwLjAwIn0sNjc6eyJ0aC10aCI6InQwJSJ9LDY4OnsidGgtdGgiOiJ0MC4wMCUifSw2OTp7InRoLXRoIjoidCMgPy8/'@; put 'In0sNzA6eyJ0aC10aCI6InQjID8/Lz8/In0sODE6eyJ0aC10aCI6ImQvbS9iYiJ9fX0se31dLDMxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz17T2ZmaWNlRG9jdW1lbnQ6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8y'@; put 'MDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLFdvcmtzaGVldDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiLENhbGNDaGFpbjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMu'@; put 'b3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jYWxjQ2hhaW4iLFNoYXJlZFN0cmluZ3M6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc2hhcmVkU3RyaW5ncyIsU3R5bGVzOiJodHRwOi8vc2No'@; put 'ZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlcyIsVGhlbWU6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdGhlbWUiLEh5cGVybGluazoiaHR0cDov'@; put 'L3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9oeXBlcmxpbmsiLEltYWdlOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlIixDb3JlUHJvcGVy'@; put 'dGllczoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIsRXh0ZW5kZXJQcm9wZXJ0aWVzOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAw'@; put 'Ni9yZWxhdGlvbnNoaXBzL2V4dGVuZGVkLXByb3BlcnRpZXMiLENvbW1lbnRzOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NvbW1lbnRzIixWbWxEcmF3aW5nOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0'@; put 'cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmciLFRhYmxlOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RhYmxlIn19LHt9XSwzMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ug'@; put 'c3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uL3V0aWxzL3BhcnNlLXNheCIpLGE9cygiLi4vLi4vdXRpbHMveG1sLXN0cmVhbSIpO2NsYXNzIG97cHJlcGFyZSgpe31yZW5kZXIoKXt9cGFyc2VPcGVuKHQpe31wYXJzZVRleHQodCl7fXBhcnNlQ2xvc2UodCl7fXJlY29uY2lsZSh0LGUpe31yZXNl'@; put 'dCgpe3RoaXMubW9kZWw9bnVsbCx0aGlzLm1hcCYmT2JqZWN0LnZhbHVlcyh0aGlzLm1hcCkuZm9yRWFjaCh0PT57dCBpbnN0YW5jZW9mIG8/dC5yZXNldCgpOnQueGZvcm0mJnQueGZvcm0ucmVzZXQoKX0pfW1lcmdlTW9kZWwodCl7dGhpcy5tb2RlbD1PYmplY3QuYXNzaWduKHRoaXMubW9k'@; put 'ZWx8fHt9LHQpfXBhcnNlKHQpe3ZhciBlPXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe3ZhciBpLGw9ITEsbj0hMTt0cnl7Zm9yKHZhciBmLGg9RmUodCk7bD0hKGY9eWllbGQgaC5uZXh0KCkpLmRvbmU7bD0hMSl7Y29uc3QgdT1mLnZhbHVlO2Zvcihjb25zdHtldmVudFR5cGU6cCx2YWx1'@; put 'ZTpkfW9mIHUpaWYoIm9wZW50YWciPT09cCllLnBhcnNlT3BlbihkKTtlbHNlIGlmKCJ0ZXh0Ij09PXApZS5wYXJzZVRleHQoZCk7ZWxzZSBpZigiY2xvc2V0YWciPT09cCYmIWUucGFyc2VDbG9zZShkLm5hbWUpKXJldHVybiBlLm1vZGVsfX1jYXRjaCh1KXtuPSEwLGk9dX1maW5hbGx5e3Ry'@; put 'eXtsJiZudWxsIT1oLnJldHVybiYmKHlpZWxkIGgucmV0dXJuKCkpfWZpbmFsbHl7aWYobil0aHJvdyBpfX1yZXR1cm4gZS5tb2RlbH0pKCl9cGFyc2VTdHJlYW0odCl7dmFyIGU9dGhpcztyZXR1cm4gWnQoZnVuY3Rpb24qKCl7cmV0dXJuIGUucGFyc2UoYih0KSl9KSgpfWdldCB4bWwoKXty'@; put 'ZXR1cm4gdGhpcy50b1htbCh0aGlzLm1vZGVsKX10b1htbCh0KXtjb25zdCBlPW5ldyBhO3JldHVybiB0aGlzLnJlbmRlcihlLHQpLGUueG1sfXN0YXRpYyB0b0F0dHJpYnV0ZSh0LGUpe2xldCBsPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNb'@; put 'Ml07aWYodm9pZCAwPT09dCl7aWYobClyZXR1cm4gZX1lbHNlIGlmKGx8fHQhPT1lKXJldHVybiB0LnRvU3RyaW5nKCl9c3RhdGljIHRvU3RyaW5nQXR0cmlidXRlKHQsZSl7cmV0dXJuIG8udG9BdHRyaWJ1dGUodCxlLGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJd'@; put 'JiZhcmd1bWVudHNbMl0pfXN0YXRpYyB0b1N0cmluZ1ZhbHVlKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQ/ZTp0fXN0YXRpYyB0b0Jvb2xBdHRyaWJ1dGUodCxlKXtsZXQgbD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2lmKHZvaWQgMD09'@; put 'PXQpe2lmKGwpcmV0dXJuIGV9ZWxzZSBpZihsfHx0IT09ZSlyZXR1cm4gdD8iMSI6IjAifXN0YXRpYyB0b0Jvb2xWYWx1ZSh0LGUpe3JldHVybiB2b2lkIDA9PT10P2U6IjEiPT09dH1zdGF0aWMgdG9JbnRBdHRyaWJ1dGUodCxlKXtyZXR1cm4gby50b0F0dHJpYnV0ZSh0LGUsYXJndW1lbnRz'@; put 'Lmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSl9c3RhdGljIHRvSW50VmFsdWUodCxlKXtyZXR1cm4gdm9pZCAwPT09dD9lOnBhcnNlSW50KHQsMTApfXN0YXRpYyB0b0Zsb2F0QXR0cmlidXRlKHQsZSl7cmV0dXJuIG8udG9BdHRyaWJ1dGUodCxlLGFyZ3Vt'@; put 'ZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0pfXN0YXRpYyB0b0Zsb2F0VmFsdWUodCxlKXtyZXR1cm4gdm9pZCAwPT09dD9lOnBhcnNlRmxvYXQodCl9fUUuZXhwb3J0cz1vfSx7Ii4uLy4uL3V0aWxzL3BhcnNlLXNheCI6MjIsIi4uLy4uL3V0aWxz'@; put 'L3htbC1zdHJlYW0iOjI4fV0sMzM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIiksYT1zKCIuLi8uLi8uLi91dGlscy9jb2wtY2FjaGUiKTtmdW5jdGlvbiBvKHQpe3RyeXtyZXR1cm4gYS5kZWNvZGVFeCh0KSwhMH1jYXRjaHtyZXR1cm4h'@; put 'MX19ZnVuY3Rpb24gcih0KXtjb25zdCBlPVtdO2xldCBsPSExLG49IiI7cmV0dXJuIHQuc3BsaXQoIiwiKS5mb3JFYWNoKGk9PntpZighaSlyZXR1cm47Y29uc3QgaD0oaS5tYXRjaCgvJy9nKXx8W10pLmxlbmd0aDtpZighaClyZXR1cm4gdm9pZChsP24rPWkrIiwiOm8oaSkmJmUucHVzaChp'@; put 'KSk7Y29uc3QgZj1oJTI9PTA7IWwmJmYmJm8oaSk/ZS5wdXNoKGkpOmwmJiFmPyhsPSExLG8obitpKSYmZS5wdXNoKG4raSksbj0iIik6KGw9ITAsbis9aSsiLCIpfSksZX1FLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie3JlbmRlcih0LGUpe3Qub3Blbk5vZGUoImRlZmluZWROYW1lIix7bmFt'@; put 'ZTplLm5hbWUsbG9jYWxTaGVldElkOmUubG9jYWxTaGVldElkfSksdC53cml0ZVRleHQoZS5yYW5nZXMuam9pbigiLCIpKSx0LmNsb3NlTm9kZSgpfXBhcnNlT3Blbih0KXtyZXR1cm4iZGVmaW5lZE5hbWUiPT09dC5uYW1lJiYodGhpcy5fcGFyc2VkTmFtZT10LmF0dHJpYnV0ZXMubmFtZSx0'@; put 'aGlzLl9wYXJzZWRMb2NhbFNoZWV0SWQ9dC5hdHRyaWJ1dGVzLmxvY2FsU2hlZXRJZCx0aGlzLl9wYXJzZWRUZXh0PVtdLCEwKX1wYXJzZVRleHQodCl7dGhpcy5fcGFyc2VkVGV4dC5wdXNoKHQpfXBhcnNlQ2xvc2UoKXtyZXR1cm4gdGhpcy5tb2RlbD17bmFtZTp0aGlzLl9wYXJzZWROYW1l'@; put 'LHJhbmdlczpyKHRoaXMuX3BhcnNlZFRleHQuam9pbigiIikpfSx2b2lkIDAhPT10aGlzLl9wYXJzZWRMb2NhbFNoZWV0SWQmJih0aGlzLm1vZGVsLmxvY2FsU2hlZXRJZD1wYXJzZUludCh0aGlzLl9wYXJzZWRMb2NhbFNoZWV0SWQsMTApKSwhMX19fSx7Ii4uLy4uLy4uL3V0aWxzL2NvbC1j'@; put 'YWNoZSI6MTksIi4uL2Jhc2UteGZvcm0iOjMyfV0sMzQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91dGlscy91dGlscyIpLGE9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7cmVuZGVyKG8scil7by5sZWFmTm9k'@; put 'ZSgic2hlZXQiLHtzaGVldElkOnIuaWQsbmFtZTpyLm5hbWUsc3RhdGU6ci5zdGF0ZSwicjppZCI6ci5ySWR9KX1wYXJzZU9wZW4obyl7cmV0dXJuInNoZWV0Ij09PW8ubmFtZSYmKHRoaXMubW9kZWw9e25hbWU6Yi54bWxEZWNvZGUoby5hdHRyaWJ1dGVzLm5hbWUpLGlkOnBhcnNlSW50KG8u'@; put 'YXR0cmlidXRlcy5zaGVldElkLDEwKSxzdGF0ZTpvLmF0dHJpYnV0ZXMuc3RhdGUscklkOm8uYXR0cmlidXRlc1sicjppZCJdfSwhMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uLy4uLy4uL3V0aWxzL3V0aWxzIjoyNywiLi4vYmFzZS14Zm9ybSI6MzJ9XSwz'@; put 'NTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie3JlbmRlcihhLG8pe2EubGVhZk5vZGUoImNhbGNQciIse2NhbGNJZDoxNzEwMjcsZnVsbENhbGNPbkxvYWQ6by5mdWxsQ2FsY09uTG9hZD8x'@; put 'OnZvaWQgMH0pfXBhcnNlT3BlbihhKXtyZXR1cm4iY2FsY1ByIj09PWEubmFtZSYmKHRoaXMubW9kZWw9e30sITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDM2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0'@; put 'IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7cmVuZGVyKGEsbyl7YS5sZWFmTm9kZSgid29ya2Jvb2tQciIse2RhdGUxOTA0Om8uZGF0ZTE5MDQ/MTp2b2lkIDAsZGVmYXVsdFRoZW1lVmVyc2lvbjoxNjQwMTEsZmlsdGVyUHJpdmFjeToxfSl9cGFyc2VP'@; put 'cGVuKGEpe3JldHVybiJ3b3JrYm9va1ByIj09PWEubmFtZSYmKHRoaXMubW9kZWw9e2RhdGUxOTA0OiIxIj09PWEuYXR0cmlidXRlcy5kYXRlMTkwNH0sITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDM3OltmdW5jdGlvbihz'@; put 'LEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7cmVuZGVyKGEsbyl7Y29uc3Qgcj17eFdpbmRvdzpvLnh8fDAseVdpbmRvdzpvLnl8fDAsd2luZG93V2lkdGg6by53aWR0aHx8MTJlMyx3aW5kb3dIZWlnaHQ6by5o'@; put 'ZWlnaHR8fDI0ZTMsZmlyc3RTaGVldDpvLmZpcnN0U2hlZXQsYWN0aXZlVGFiOm8uYWN0aXZlVGFifTtvLnZpc2liaWxpdHkmJiJ2aXNpYmxlIiE9PW8udmlzaWJpbGl0eSYmKHIudmlzaWJpbGl0eT1vLnZpc2liaWxpdHkpLGEubGVhZk5vZGUoIndvcmtib29rVmlldyIscil9cGFyc2VPcGVu'@; put 'KGEpe2lmKCJ3b3JrYm9va1ZpZXciPT09YS5uYW1lKXtjb25zdCBvPXRoaXMubW9kZWw9e30scj1mdW5jdGlvbihlLGwsbil7Y29uc3QgaT12b2lkIDAhPT1sP29bZV09bDpuO3ZvaWQgMCE9PWkmJihvW2VdPWkpfSx0PWZ1bmN0aW9uKGUsbCxuKXtjb25zdCBpPXZvaWQgMCE9PWw/b1tlXT1w'@; put 'YXJzZUludChsLDEwKTpuO3ZvaWQgMCE9PWkmJihvW2VdPWkpfTtyZXR1cm4gdCgieCIsYS5hdHRyaWJ1dGVzLnhXaW5kb3csMCksdCgieSIsYS5hdHRyaWJ1dGVzLnlXaW5kb3csMCksdCgid2lkdGgiLGEuYXR0cmlidXRlcy53aW5kb3dXaWR0aCwyNWUzKSx0KCJoZWlnaHQiLGEuYXR0cmli'@; put 'dXRlcy53aW5kb3dIZWlnaHQsMWU0KSxyKCJ2aXNpYmlsaXR5IixhLmF0dHJpYnV0ZXMudmlzaWJpbGl0eSwidmlzaWJsZSIpLHQoImFjdGl2ZVRhYiIsYS5hdHRyaWJ1dGVzLmFjdGl2ZVRhYix2b2lkIDApLHQoImZpcnN0U2hlZXQiLGEuYXR0cmlidXRlcy5maXJzdFNoZWV0LHZvaWQgMCks'@; put 'ITB9cmV0dXJuITF9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMzg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91dGlscy91bmRlci1kYXNoIiksYT1zKCIuLi8uLi8uLi91dGlscy9j'@; put 'b2wtY2FjaGUiKSxvPXMoIi4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iKSxyPXMoIi4uL2Jhc2UteGZvcm0iKSx0PXMoIi4uL3N0YXRpYy14Zm9ybSIpLGU9cygiLi4vbGlzdC14Zm9ybSIpLGw9cygiLi9kZWZpbmVkLW5hbWUteGZvcm0iKSxuPXMoIi4vc2hlZXQteGZvcm0iKSxpPXMoIi4v'@; put 'd29ya2Jvb2stdmlldy14Zm9ybSIpLGg9cygiLi93b3JrYm9vay1wcm9wZXJ0aWVzLXhmb3JtIiksZj1zKCIuL3dvcmtib29rLWNhbGMtcHJvcGVydGllcy14Zm9ybSIpO2NsYXNzIHUgZXh0ZW5kcyBye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17ZmlsZVZlcnNpb246dS5TVEFU'@; put 'SUNfWEZPUk1TLmZpbGVWZXJzaW9uLHdvcmtib29rUHI6bmV3IGgsYm9va1ZpZXdzOm5ldyBlKHt0YWc6ImJvb2tWaWV3cyIsY291bnQ6ITEsY2hpbGRYZm9ybTpuZXcgaX0pLHNoZWV0czpuZXcgZSh7dGFnOiJzaGVldHMiLGNvdW50OiExLGNoaWxkWGZvcm06bmV3IG59KSxkZWZpbmVkTmFt'@; put 'ZXM6bmV3IGUoe3RhZzoiZGVmaW5lZE5hbWVzIixjb3VudDohMSxjaGlsZFhmb3JtOm5ldyBsfSksY2FsY1ByOm5ldyBmfX1wcmVwYXJlKGQpe2Quc2hlZXRzPWQud29ya3NoZWV0cztjb25zdCB2PVtdO2xldCBfPTA7ZC5zaGVldHMuZm9yRWFjaChBPT57aWYoQS5wYWdlU2V0dXAmJkEucGFn'@; put 'ZVNldHVwLnByaW50QXJlYSYmQS5wYWdlU2V0dXAucHJpbnRBcmVhLnNwbGl0KCImJiIpLmZvckVhY2goST0+e2NvbnN0IEw9SS5zcGxpdCgiOiIpO3YucHVzaCh7bmFtZToiX3hsbm0uUHJpbnRfQXJlYSIscmFuZ2VzOltgJyR7QS5uYW1lfSchJCR7TFswXX06JCR7TFsxXX1gXSxsb2NhbFNo'@; put 'ZWV0SWQ6X30pfSksQS5wYWdlU2V0dXAmJihBLnBhZ2VTZXR1cC5wcmludFRpdGxlc1Jvd3x8QS5wYWdlU2V0dXAucHJpbnRUaXRsZXNDb2x1bW4pKXtjb25zdCBJPVtdO2lmKEEucGFnZVNldHVwLnByaW50VGl0bGVzQ29sdW1uKXtjb25zdCBOPUEucGFnZVNldHVwLnByaW50VGl0bGVzQ29s'@; put 'dW1uLnNwbGl0KCI6Iik7SS5wdXNoKGAnJHtBLm5hbWV9JyEkJHtOWzBdfTokJHtOWzFdfWApfWlmKEEucGFnZVNldHVwLnByaW50VGl0bGVzUm93KXtjb25zdCBOPUEucGFnZVNldHVwLnByaW50VGl0bGVzUm93LnNwbGl0KCI6Iik7SS5wdXNoKGAnJHtBLm5hbWV9JyEkJHtOWzBdfTokJHtO'@; put 'WzFdfWApfXYucHVzaCh7bmFtZToiX3hsbm0uUHJpbnRfVGl0bGVzIixyYW5nZXM6SSxsb2NhbFNoZWV0SWQ6X30pfV8rK30pLHYubGVuZ3RoJiYoZC5kZWZpbmVkTmFtZXM9ZC5kZWZpbmVkTmFtZXMuY29uY2F0KHYpKSwoZC5tZWRpYXx8W10pLmZvckVhY2goKEEsSSk9PntBLm5hbWU9QS50'@; put 'eXBlKyhJKzEpfSl9cmVuZGVyKGQsdil7ZC5vcGVuWG1sKG8uU3RkRG9jQXR0cmlidXRlcyksZC5vcGVuTm9kZSgid29ya2Jvb2siLHUuV09SS0JPT0tfQVRUUklCVVRFUyksdGhpcy5tYXAuZmlsZVZlcnNpb24ucmVuZGVyKGQpLHRoaXMubWFwLndvcmtib29rUHIucmVuZGVyKGQsdi5wcm9w'@; put 'ZXJ0aWVzKSx0aGlzLm1hcC5ib29rVmlld3MucmVuZGVyKGQsdi52aWV3cyksdGhpcy5tYXAuc2hlZXRzLnJlbmRlcihkLHYuc2hlZXRzKSx0aGlzLm1hcC5kZWZpbmVkTmFtZXMucmVuZGVyKGQsdi5kZWZpbmVkTmFtZXMpLHRoaXMubWFwLmNhbGNQci5yZW5kZXIoZCx2LmNhbGNQcm9wZXJ0'@; put 'aWVzKSxkLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihkKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihkKSwhMCk6KCJ3b3JrYm9vayI9PT1kLm5hbWV8fCh0aGlzLnBhcnNlcj10aGlzLm1hcFtkLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZU9w'@; put 'ZW4oZCkpLCEwKX1wYXJzZVRleHQoZCl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChkKX1wYXJzZUNsb3NlKGQpe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShkKXx8KHRoaXMucGFyc2VyPXZvaWQgMCksITApOiJ3b3JrYm9vayIhPT1kfHwo'@; put 'dGhpcy5tb2RlbD17c2hlZXRzOnRoaXMubWFwLnNoZWV0cy5tb2RlbCxwcm9wZXJ0aWVzOnRoaXMubWFwLndvcmtib29rUHIubW9kZWx8fHt9LHZpZXdzOnRoaXMubWFwLmJvb2tWaWV3cy5tb2RlbCxjYWxjUHJvcGVydGllczp7fX0sdGhpcy5tYXAuZGVmaW5lZE5hbWVzLm1vZGVsJiYodGhp'@; put 'cy5tb2RlbC5kZWZpbmVkTmFtZXM9dGhpcy5tYXAuZGVmaW5lZE5hbWVzLm1vZGVsKSwhMSl9cmVjb25jaWxlKGQpe2NvbnN0IHY9KGQud29ya2Jvb2tSZWxzfHxbXSkucmVkdWNlKChOLFApPT4oTltQLklkXT1QLE4pLHt9KSxfPVtdO2xldCBBLEk9MDsoZC5zaGVldHN8fFtdKS5mb3JFYWNo'@; put 'KE49Pntjb25zdCBQPXZbTi5ySWRdO1AmJihBPWQud29ya3NoZWV0SGFzaFsieGwvIitQLlRhcmdldC5yZXBsYWNlKC9eKFxzfFwveGxcLykrLywiIildLEEmJihBLm5hbWU9Ti5uYW1lLEEuaWQ9Ti5pZCxBLnN0YXRlPU4uc3RhdGUsX1tJKytdPUEpKX0pO2NvbnN0IEw9W107Yi5lYWNoKGQu'@; put 'ZGVmaW5lZE5hbWVzLE49PntpZigiX3hsbm0uUHJpbnRfQXJlYSI9PT1OLm5hbWUpe2lmKEE9X1tOLmxvY2FsU2hlZXRJZF0sQSl7QS5wYWdlU2V0dXB8fChBLnBhZ2VTZXR1cD17fSk7Y29uc3QgUD1hLmRlY29kZUV4KE4ucmFuZ2VzWzBdKTtBLnBhZ2VTZXR1cC5wcmludEFyZWE9QS5wYWdl'@; put 'U2V0dXAucHJpbnRBcmVhP2Ake0EucGFnZVNldHVwLnByaW50QXJlYX0mJiR7UC5kaW1lbnNpb25zfWA6UC5kaW1lbnNpb25zfX1lbHNlIGlmKCJfeGxubS5QcmludF9UaXRsZXMiPT09Ti5uYW1lKXtpZihBPV9bTi5sb2NhbFNoZWV0SWRdLEEpe0EucGFnZVNldHVwfHwoQS5wYWdlU2V0dXA9'@; put 'e30pO2NvbnN0IFA9Ti5yYW5nZXMuam9pbigiLCIpLEI9L1wkL2csRD1QLm1hdGNoKC9cJFxkKzpcJFxkKy8pO0QmJkQubGVuZ3RoJiYoQS5wYWdlU2V0dXAucHJpbnRUaXRsZXNSb3c9RFswXS5yZXBsYWNlKEIsIiIpKTtjb25zdCBNPVAubWF0Y2goL1wkW0EtWl0rOlwkW0EtWl0rLyk7TSYm'@; put 'TS5sZW5ndGgmJihBLnBhZ2VTZXR1cC5wcmludFRpdGxlc0NvbHVtbj1NWzBdLnJlcGxhY2UoQiwiIikpfX1lbHNlIEwucHVzaChOKX0pLGQuZGVmaW5lZE5hbWVzPUwsZC5tZWRpYS5mb3JFYWNoKChOLFApPT57Ti5pbmRleD1QfSl9fXUuV09SS0JPT0tfQVRUUklCVVRFUz17eG1sbnM6Imh0'@; put 'dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIsInhtbG5zOnIiOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiwieG1sbnM6bWMiOiJodHRwOi8vc2NoZW1hcy5v'@; put 'cGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNiIsIm1jOklnbm9yYWJsZSI6IngxNSIsInhtbG5zOngxNSI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxMC8xMS9tYWluIn0sdS5TVEFUSUNfWEZPUk1TPXtmaWxl'@; put 'VmVyc2lvbjpuZXcgdCh7dGFnOiJmaWxlVmVyc2lvbiIsJDp7YXBwTmFtZToieGwiLGxhc3RFZGl0ZWQ6NSxsb3dlc3RFZGl0ZWQ6NSxydXBCdWlsZDo5MzAzfX0pfSxFLmV4cG9ydHM9dX0seyIuLi8uLi8uLi91dGlscy9jb2wtY2FjaGUiOjE5LCIuLi8uLi8uLi91dGlscy91bmRlci1kYXNo'@; put 'IjoyNiwiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSI6MjgsIi4uL2Jhc2UteGZvcm0iOjMyLCIuLi9saXN0LXhmb3JtIjo3MSwiLi4vc3RhdGljLXhmb3JtIjoxMjAsIi4vZGVmaW5lZC1uYW1lLXhmb3JtIjozMywiLi9zaGVldC14Zm9ybSI6MzQsIi4vd29ya2Jvb2stY2FsYy1wcm9wZXJ0'@; put 'aWVzLXhmb3JtIjozNSwiLi93b3JrYm9vay1wcm9wZXJ0aWVzLXhmb3JtIjozNiwiLi93b3JrYm9vay12aWV3LXhmb3JtIjozN31dLDM5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vc3RyaW5ncy9yaWNoLXRleHQteGZvcm0iKSxhPXMoIi4uLy4uLy4uL3V0'@; put 'aWxzL3V0aWxzIiksbz1zKCIuLi9iYXNlLXhmb3JtIikscj1FLmV4cG9ydHM9ZnVuY3Rpb24odCl7dGhpcy5tb2RlbD10fTthLmluaGVyaXRzKHIsbyx7Z2V0IHRhZygpe3JldHVybiJyIn0sZ2V0IHJpY2hUZXh0WGZvcm0oKXtyZXR1cm4gdGhpcy5fcmljaFRleHRYZm9ybXx8KHRoaXMuX3Jp'@; put 'Y2hUZXh0WGZvcm09bmV3IGIpLHRoaXMuX3JpY2hUZXh0WGZvcm19LHJlbmRlcih0LGUpe3Qub3Blbk5vZGUoImNvbW1lbnQiLHtyZWY6KGU9ZXx8dGhpcy5tb2RlbCkucmVmLGF1dGhvcklkOjB9KSx0Lm9wZW5Ob2RlKCJ0ZXh0IiksZSYmZS5ub3RlJiZlLm5vdGUudGV4dHMmJmUubm90ZS50'@; put 'ZXh0cy5mb3JFYWNoKGw9Pnt0aGlzLnJpY2hUZXh0WGZvcm0ucmVuZGVyKHQsbCl9KSx0LmNsb3NlTm9kZSgpLHQuY2xvc2VOb2RlKCl9LHBhcnNlT3Blbih0KXtpZih0aGlzLnBhcnNlcilyZXR1cm4gdGhpcy5wYXJzZXIucGFyc2VPcGVuKHQpLCEwO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiY29t'@; put 'bWVudCI6cmV0dXJuIHRoaXMubW9kZWw9e3R5cGU6Im5vdGUiLG5vdGU6e3RleHRzOltdfSwuLi50LmF0dHJpYnV0ZXN9LCEwO2Nhc2UiciI6cmV0dXJuIHRoaXMucGFyc2VyPXRoaXMucmljaFRleHRYZm9ybSx0aGlzLnBhcnNlci5wYXJzZU9wZW4odCksITA7ZGVmYXVsdDpyZXR1cm4hMX19'@; put 'LHBhcnNlVGV4dCh0KXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KHQpfSxwYXJzZUNsb3NlKHQpe3N3aXRjaCh0KXtjYXNlImNvbW1lbnQiOnJldHVybiExO2Nhc2UiciI6cmV0dXJuIHRoaXMubW9kZWwubm90ZS50ZXh0cy5wdXNoKHRoaXMucGFyc2VyLm1vZGVsKSx0aGlz'@; put 'LnBhcnNlcj12b2lkIDAsITA7ZGVmYXVsdDpyZXR1cm4gdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlQ2xvc2UodCksITB9fX0pfSx7Ii4uLy4uLy4uL3V0aWxzL3V0aWxzIjoyNywiLi4vYmFzZS14Zm9ybSI6MzIsIi4uL3N0cmluZ3MvcmljaC10ZXh0LXhmb3JtIjoxMjJ9XSw0MDpb'@; put 'ZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iKSxhPXMoIi4uLy4uLy4uL3V0aWxzL3V0aWxzIiksbz1zKCIuLi9iYXNlLXhmb3JtIikscj1zKCIuL2NvbW1lbnQteGZvcm0iKSx0PUUuZXhwb3J0cz1mdW5jdGlvbigpe3Ro'@; put 'aXMubWFwPXtjb21tZW50Om5ldyByfX07YS5pbmhlcml0cyh0LG8se0NPTU1FTlRTX0FUVFJJQlVURVM6e3htbG5zOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4ifX0se3JlbmRlcihlLGwpe2w9bHx8dGhpcy5tb2RlbCxlLm9wZW5Y'@; put 'bWwoYi5TdGREb2NBdHRyaWJ1dGVzKSxlLm9wZW5Ob2RlKCJjb21tZW50cyIsdC5DT01NRU5UU19BVFRSSUJVVEVTKSxlLm9wZW5Ob2RlKCJhdXRob3JzIiksZS5sZWFmTm9kZSgiYXV0aG9yIixudWxsLCJBdXRob3IiKSxlLmNsb3NlTm9kZSgpLGUub3Blbk5vZGUoImNvbW1lbnRMaXN0Iiks'@; put 'bC5jb21tZW50cy5mb3JFYWNoKG49Pnt0aGlzLm1hcC5jb21tZW50LnJlbmRlcihlLG4pfSksZS5jbG9zZU5vZGUoKSxlLmNsb3NlTm9kZSgpfSxwYXJzZU9wZW4oZSl7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlT3BlbihlKSwhMDtzd2l0Y2goZS5uYW1lKXtjYXNl'@; put 'ImNvbW1lbnRMaXN0IjpyZXR1cm4gdGhpcy5tb2RlbD17Y29tbWVudHM6W119LCEwO2Nhc2UiY29tbWVudCI6cmV0dXJuIHRoaXMucGFyc2VyPXRoaXMubWFwLmNvbW1lbnQsdGhpcy5wYXJzZXIucGFyc2VPcGVuKGUpLCEwO2RlZmF1bHQ6cmV0dXJuITF9fSxwYXJzZVRleHQoZSl7dGhpcy5w'@; put 'YXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChlKX0scGFyc2VDbG9zZShlKXtzd2l0Y2goZSl7Y2FzZSJjb21tZW50TGlzdCI6cmV0dXJuITE7Y2FzZSJjb21tZW50IjpyZXR1cm4gdGhpcy5tb2RlbC5jb21tZW50cy5wdXNoKHRoaXMucGFyc2VyLm1vZGVsKSx0aGlzLnBhcnNlcj12b2lk'@; put 'IDAsITA7ZGVmYXVsdDpyZXR1cm4gdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlQ2xvc2UoZSksITB9fX0pfSx7Ii4uLy4uLy4uL3V0aWxzL3V0aWxzIjoyNywiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSI6MjgsIi4uL2Jhc2UteGZvcm0iOjMyLCIuL2NvbW1lbnQteGZvcm0iOjM5'@; put 'fV0sNDE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihhKXtzdXBlcigpLHRoaXMuX21vZGVsPWF9Z2V0IHRhZygpe3JldHVybiB0aGlzLl9tb2RlbCYmdGhpcy5f'@; put 'bW9kZWwudGFnfXJlbmRlcihhLG8scil7KG89PT1yWzJdfHwieDpTaXplV2l0aENlbGxzIj09PXRoaXMudGFnJiZvPT09clsxXSkmJmEubGVhZk5vZGUodGhpcy50YWcpfXBhcnNlT3BlbihhKXtyZXR1cm4gYS5uYW1lPT09dGhpcy50YWcmJih0aGlzLm1vZGVsPXt9LHRoaXMubW9kZWxbdGhp'@; put 'cy50YWddPSEwLCEwKX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX19LHsiLi4vLi4vYmFzZS14Zm9ybSI6MzJ9XSw0MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBi'@; put 'e2NvbnN0cnVjdG9yKGEpe3N1cGVyKCksdGhpcy5fbW9kZWw9YX1nZXQgdGFnKCl7cmV0dXJuIHRoaXMuX21vZGVsJiZ0aGlzLl9tb2RlbC50YWd9cmVuZGVyKGEsbyl7YS5sZWFmTm9kZSh0aGlzLnRhZyxudWxsLG8pfXBhcnNlT3BlbihhKXtyZXR1cm4gYS5uYW1lPT09dGhpcy50YWcmJih0'@; put 'aGlzLnRleHQ9IiIsITApfXBhcnNlVGV4dChhKXt0aGlzLnRleHQ9YX1wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi8uLi9iYXNlLXhmb3JtIjozMn1dLDQzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFz'@; put 'cyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJ4OkFuY2hvciJ9Z2V0QW5jaG9yUmVjdChhKXtjb25zdCBvPU1hdGguZmxvb3IoYS5sZWZ0KSxyPU1hdGguZmxvb3IoNjgqKGEubGVmdC1vKSksdD1NYXRoLmZsb29yKGEudG9wKSxlPU1hdGguZmxvb3IoMTgqKGEudG9wLXQpKSxsPU1hdGgu'@; put 'Zmxvb3IoYS5yaWdodCksbj1NYXRoLmZsb29yKDY4KihhLnJpZ2h0LWwpKSxpPU1hdGguZmxvb3IoYS5ib3R0b20pO3JldHVybltvLHIsdCxlLGwsbixpLE1hdGguZmxvb3IoMTgqKGEuYm90dG9tLWkpKV19Z2V0RGVmYXVsdFJlY3QoYSl7Y29uc3Qgbz1hLmNvbCxyPU1hdGgubWF4KGEucm93'@; put 'LTIsMCk7cmV0dXJuW28sNixyLDE0LG8rMiwyLHIrNCwxNl19cmVuZGVyKGEsbyl7Y29uc3Qgcj1vLmFuY2hvcj90aGlzLmdldEFuY2hvclJlY3Qoby5hbmNob3IpOnRoaXMuZ2V0RGVmYXVsdFJlY3Qoby5yZWZBZGRyZXNzKTthLmxlYWZOb2RlKCJ4OkFuY2hvciIsbnVsbCxyLmpvaW4oIiwg'@; put 'IikpfXBhcnNlT3BlbihhKXtyZXR1cm4gYS5uYW1lPT09dGhpcy50YWcmJih0aGlzLnRleHQ9IiIsITApfXBhcnNlVGV4dChhKXt0aGlzLnRleHQ9YX1wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDQ0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3Qi'@; put 'O2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpLGE9cygiLi92bWwtYW5jaG9yLXhmb3JtIiksbz1zKCIuL3N0eWxlL3ZtbC1wcm90ZWN0aW9uLXhmb3JtIikscj1zKCIuL3N0eWxlL3ZtbC1wb3NpdGlvbi14Zm9ybSIpLHQ9WyJ0d29DZWxscyIsIm9uZUNlbGxzIiwiYWJzb2x1dGUiXTtFLmV4'@; put 'cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17Ing6QW5jaG9yIjpuZXcgYSwieDpMb2NrZWQiOm5ldyBvKHt0YWc6Ing6TG9ja2VkIn0pLCJ4OkxvY2tUZXh0IjpuZXcgbyh7dGFnOiJ4OkxvY2tUZXh0In0pLCJ4OlNpemVXaXRoQ2VsbHMiOm5l'@; put 'dyByKHt0YWc6Ing6U2l6ZVdpdGhDZWxscyJ9KSwieDpNb3ZlV2l0aENlbGxzIjpuZXcgcih7dGFnOiJ4Ok1vdmVXaXRoQ2VsbHMifSl9fWdldCB0YWcoKXtyZXR1cm4ieDpDbGllbnREYXRhIn1yZW5kZXIoZSxsKXtjb25zdHtwcm90ZWN0aW9uOm4sZWRpdEFzOml9PWwubm90ZTtlLm9wZW5O'@; put 'b2RlKHRoaXMudGFnLHtPYmplY3RUeXBlOiJOb3RlIn0pLHRoaXMubWFwWyJ4Ok1vdmVXaXRoQ2VsbHMiXS5yZW5kZXIoZSxpLHQpLHRoaXMubWFwWyJ4OlNpemVXaXRoQ2VsbHMiXS5yZW5kZXIoZSxpLHQpLHRoaXMubWFwWyJ4OkFuY2hvciJdLnJlbmRlcihlLGwpLHRoaXMubWFwWyJ4Okxv'@; put 'Y2tlZCJdLnJlbmRlcihlLG4ubG9ja2VkKSxlLmxlYWZOb2RlKCJ4OkF1dG9GaWxsIixudWxsLCJGYWxzZSIpLHRoaXMubWFwWyJ4OkxvY2tUZXh0Il0ucmVuZGVyKGUsbi5sb2NrVGV4dCksZS5sZWFmTm9kZSgieDpSb3ciLG51bGwsbC5yZWZBZGRyZXNzLnJvdy0xKSxlLmxlYWZOb2RlKCJ4'@; put 'OkNvbHVtbiIsbnVsbCxsLnJlZkFkZHJlc3MuY29sLTEpLGUuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKGUpe3JldHVybiBlLm5hbWU9PT10aGlzLnRhZz8odGhpcy5yZXNldCgpLHRoaXMubW9kZWw9e2FuY2hvcjpbXSxwcm90ZWN0aW9uOnt9LGVkaXRBczoiIn0pOih0aGlzLnBhcnNlcj10aGlz'@; put 'Lm1hcFtlLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZU9wZW4oZSkpLCEwfXBhcnNlVGV4dChlKXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KGUpfXBhcnNlQ2xvc2UoZSl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGUp'@; put 'fHwodGhpcy5wYXJzZXI9dm9pZCAwKSwhMCk6ZSE9PXRoaXMudGFnfHwodGhpcy5ub3JtYWxpemVNb2RlbCgpLCExKX1ub3JtYWxpemVNb2RlbCgpe2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0aGlzLm1hcFsieDpNb3ZlV2l0aENlbGxzIl0ubW9kZWwsdGhpcy5tYXBbIng6U2l6ZVdpdGhD'@; put 'ZWxscyJdLm1vZGVsKSxsPU9iamVjdC5rZXlzKGUpLmxlbmd0aDt0aGlzLm1vZGVsLmVkaXRBcz10W2xdLHRoaXMubW9kZWwuYW5jaG9yPXRoaXMubWFwWyJ4OkFuY2hvciJdLnRleHQsdGhpcy5tb2RlbC5wcm90ZWN0aW9uLmxvY2tlZD10aGlzLm1hcFsieDpMb2NrZWQiXS50ZXh0LHRoaXMu'@; put 'bW9kZWwucHJvdGVjdGlvbi5sb2NrVGV4dD10aGlzLm1hcFsieDpMb2NrVGV4dCJdLnRleHR9fX0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi9zdHlsZS92bWwtcG9zaXRpb24teGZvcm0iOjQxLCIuL3N0eWxlL3ZtbC1wcm90ZWN0aW9uLXhmb3JtIjo0MiwiLi92bWwtYW5jaG9yLXhmb3JtIjo0'@; put 'M31dLDQ1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSIpLGE9cygiLi4vYmFzZS14Zm9ybSIpLG89cygiLi92bWwtc2hhcGUteGZvcm0iKTtjbGFzcyByIGV4dGVuZHMgYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhp'@; put 'cy5tYXA9eyJ2OnNoYXBlIjpuZXcgb319Z2V0IHRhZygpe3JldHVybiJ4bWwifXJlbmRlcihlLGwpe2Uub3BlblhtbChiLlN0ZERvY0F0dHJpYnV0ZXMpLGUub3Blbk5vZGUodGhpcy50YWcsci5EUkFXSU5HX0FUVFJJQlVURVMpLGUub3Blbk5vZGUoIm86c2hhcGVsYXlvdXQiLHsidjpleHQi'@; put 'OiJlZGl0In0pLGUubGVhZk5vZGUoIm86aWRtYXAiLHsidjpleHQiOiJlZGl0IixkYXRhOjF9KSxlLmNsb3NlTm9kZSgpLGUub3Blbk5vZGUoInY6c2hhcGV0eXBlIix7aWQ6Il94MDAwMF90MjAyIixjb29yZHNpemU6IjIxNjAwLDIxNjAwIiwibzpzcHQiOjIwMixwYXRoOiJtLGwsMjE2MDBy'@; put 'MjE2MDAsbDIxNjAwLHhlIn0pLGUubGVhZk5vZGUoInY6c3Ryb2tlIix7am9pbnN0eWxlOiJtaXRlciJ9KSxlLmxlYWZOb2RlKCJ2OnBhdGgiLHtncmFkaWVudHNoYXBlb2s6InQiLCJvOmNvbm5lY3R0eXBlIjoicmVjdCJ9KSxlLmNsb3NlTm9kZSgpLGwuY29tbWVudHMuZm9yRWFjaCgobixp'@; put 'KT0+e3RoaXMubWFwWyJ2OnNoYXBlIl0ucmVuZGVyKGUsbixpKX0pLGUuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKGUpe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VPcGVuKGUpLCEwKTooZS5uYW1lPT09dGhpcy50YWc/KHRoaXMucmVzZXQoKSx0aGlzLm1vZGVsPXtjb21t'@; put 'ZW50czpbXX0pOih0aGlzLnBhcnNlcj10aGlzLm1hcFtlLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZU9wZW4oZSkpLCEwKX1wYXJzZVRleHQoZSl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChlKX1wYXJzZUNsb3NlKGUpe3JldHVybiB0aGlzLnBhcnNl'@; put 'cj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShlKXx8KHRoaXMubW9kZWwuY29tbWVudHMucHVzaCh0aGlzLnBhcnNlci5tb2RlbCksdGhpcy5wYXJzZXI9dm9pZCAwKSwhMCk6ZSE9PXRoaXMudGFnfXJlY29uY2lsZShlLGwpe2UuYW5jaG9ycy5mb3JFYWNoKG49PntuLmJyP3RoaXMubWFwWyJ4'@; put 'ZHI6dHdvQ2VsbEFuY2hvciJdLnJlY29uY2lsZShuLGwpOnRoaXMubWFwWyJ4ZHI6b25lQ2VsbEFuY2hvciJdLnJlY29uY2lsZShuLGwpfSl9fXIuRFJBV0lOR19BVFRSSUJVVEVTPXsieG1sbnM6diI6InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiwieG1sbnM6byI6InVybjpzY2hl'@; put 'bWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIsInhtbG5zOngiOiJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCJ9LEUuZXhwb3J0cz1yfSx7Ii4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iOjI4LCIuLi9iYXNlLXhmb3JtIjozMiwiLi92bWwtc2hhcGUteGZv'@; put 'cm0iOjQ2fV0sNDY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIiksYT1zKCIuL3ZtbC10ZXh0Ym94LXhmb3JtIiksbz1zKCIuL3ZtbC1jbGllbnQtZGF0YS14Zm9ybSIpO2NsYXNzIHIgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIo'@; put 'KSx0aGlzLm1hcD17InY6dGV4dGJveCI6bmV3IGEsIng6Q2xpZW50RGF0YSI6bmV3IG99fWdldCB0YWcoKXtyZXR1cm4idjpzaGFwZSJ9cmVuZGVyKGUsbCxuKXtlLm9wZW5Ob2RlKCJ2OnNoYXBlIixyLlZfU0hBUEVfQVRUUklCVVRFUyhsLG4pKSxlLmxlYWZOb2RlKCJ2OmZpbGwiLHtjb2xv'@; put 'cjI6ImluZm9CYWNrZ3JvdW5kIFs4MF0ifSksZS5sZWFmTm9kZSgidjpzaGFkb3ciLHtjb2xvcjoibm9uZSBbODFdIixvYnNjdXJlZDoidCJ9KSxlLmxlYWZOb2RlKCJ2OnBhdGgiLHsibzpjb25uZWN0dHlwZSI6Im5vbmUifSksdGhpcy5tYXBbInY6dGV4dGJveCJdLnJlbmRlcihlLGwpLHRo'@; put 'aXMubWFwWyJ4OkNsaWVudERhdGEiXS5yZW5kZXIoZSxsKSxlLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihlKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihlKSwhMCk6KGUubmFtZT09PXRoaXMudGFnPyh0aGlzLnJlc2V0KCksdGhpcy5tb2RlbD17bWFyZ2luczp7'@; put 'aW5zZXRtb2RlOmUuYXR0cmlidXRlc1sibzppbnNldG1vZGUiXX0sYW5jaG9yOiIiLGVkaXRBczoiIixwcm90ZWN0aW9uOnt9fSk6KHRoaXMucGFyc2VyPXRoaXMubWFwW2UubmFtZV0sdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlT3BlbihlKSksITApfXBhcnNlVGV4dChlKXt0aGlz'@; put 'LnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KGUpfXBhcnNlQ2xvc2UoZSl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGUpfHwodGhpcy5wYXJzZXI9dm9pZCAwKSwhMCk6ZSE9PXRoaXMudGFnfHwodGhpcy5tb2RlbC5tYXJnaW5zLmluc2V0PXRoaXMu'@; put 'bWFwWyJ2OnRleHRib3giXS5tb2RlbCYmdGhpcy5tYXBbInY6dGV4dGJveCJdLm1vZGVsLmluc2V0LHRoaXMubW9kZWwucHJvdGVjdGlvbj10aGlzLm1hcFsieDpDbGllbnREYXRhIl0ubW9kZWwmJnRoaXMubWFwWyJ4OkNsaWVudERhdGEiXS5tb2RlbC5wcm90ZWN0aW9uLHRoaXMubW9kZWwu'@; put 'YW5jaG9yPXRoaXMubWFwWyJ4OkNsaWVudERhdGEiXS5tb2RlbCYmdGhpcy5tYXBbIng6Q2xpZW50RGF0YSJdLm1vZGVsLmFuY2hvcix0aGlzLm1vZGVsLmVkaXRBcz10aGlzLm1hcFsieDpDbGllbnREYXRhIl0ubW9kZWwmJnRoaXMubWFwWyJ4OkNsaWVudERhdGEiXS5tb2RlbC5lZGl0QXMs'@; put 'ITEpfX1yLlZfU0hBUEVfQVRUUklCVVRFUz0odCxlKT0+KHtpZDoiX3gwMDAwX3MiKygxMDI1K2UpLHR5cGU6IiNfeDAwMDBfdDIwMiIsc3R5bGU6InBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tbGVmdDoxMDUuM3B0O21hcmdpbi10b3A6MTAuNXB0O3dpZHRoOjk3LjhwdDtoZWlnaHQ6NTku'@; put 'MXB0O3otaW5kZXg6MTt2aXNpYmlsaXR5OmhpZGRlbiIsZmlsbGNvbG9yOiJpbmZvQmFja2dyb3VuZCBbODBdIixzdHJva2Vjb2xvcjoibm9uZSBbODFdIiwibzppbnNldG1vZGUiOnQubm90ZS5tYXJnaW5zJiZ0Lm5vdGUubWFyZ2lucy5pbnNldG1vZGV9KSxFLmV4cG9ydHM9cn0seyIuLi9i'@; put 'YXNlLXhmb3JtIjozMiwiLi92bWwtY2xpZW50LWRhdGEteGZvcm0iOjQ0LCIuL3ZtbC10ZXh0Ym94LXhmb3JtIjo0N31dLDQ3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygp'@; put 'e3JldHVybiJ2OnRleHRib3gifWNvbnZlcnNpb25Vbml0KGEsbyxyKXtyZXR1cm5gJHtwYXJzZUZsb2F0KGEpKm8udG9GaXhlZCgyKX0ke3J9YH1yZXZlcnNlQ29udmVyc2lvblVuaXQoYSl7cmV0dXJuKGF8fCIiKS5zcGxpdCgiLCIpLm1hcChvPT5OdW1iZXIocGFyc2VGbG9hdCh0aGlzLmNv'@; put 'bnZlcnNpb25Vbml0KHBhcnNlRmxvYXQobyksLjEsIiIpKS50b0ZpeGVkKDIpKSl9cmVuZGVyKGEsbyl7Y29uc3Qgcj17c3R5bGU6Im1zby1kaXJlY3Rpb24tYWx0OmF1dG8ifTtpZihvJiZvLm5vdGUpe2xldHtpbnNldDp0fT1vLm5vdGUmJm8ubm90ZS5tYXJnaW5zO0FycmF5LmlzQXJyYXko'@; put 'dCkmJih0PXQubWFwKGU9PnRoaXMuY29udmVyc2lvblVuaXQoZSwxMCwibW0iKSkuam9pbigiLCIpKSx0JiYoci5pbnNldD10KX1hLm9wZW5Ob2RlKCJ2OnRleHRib3giLHIpLGEubGVhZk5vZGUoImRpdiIse3N0eWxlOiJ0ZXh0LWFsaWduOmxlZnQifSksYS5jbG9zZU5vZGUoKX1wYXJzZU9w'@; put 'ZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17aW5zZXQ6dGhpcy5yZXZlcnNlQ29udmVyc2lvblVuaXQoYS5hdHRyaWJ1dGVzLmluc2V0KX0pLCEwfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKGEpe3JldHVybiBhIT09dGhpcy50YWd9fX0seyIuLi9iYXNlLXhm'@; put 'b3JtIjozMn1dLDQ4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjcmVhdGVOZXdNb2RlbChhKXtyZXR1cm57fX1wYXJzZU9wZW4oYSl7cmV0dXJuIHRoaXMucGFyc2VyPXRoaXMucGFyc2Vy'@; put 'fHx0aGlzLm1hcFthLm5hbWVdLHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4oYSksITApOmEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD10aGlzLmNyZWF0ZU5ld01vZGVsKGEpLCEwKX1wYXJzZVRleHQoYSl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4'@; put 'dChhKX1vblBhcnNlckNsb3NlKGEsbyl7dGhpcy5tb2RlbFthXT1vLm1vZGVsfXBhcnNlQ2xvc2UoYSl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGEpfHwodGhpcy5vblBhcnNlckNsb3NlKGEsdGhpcy5wYXJzZXIpLHRoaXMucGFyc2VyPXZvaWQgMCksITAp'@; put 'OmEhPT10aGlzLnRhZ319fSx7Ii4vYmFzZS14Zm9ybSI6MzJ9XSw0OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie3JlbmRlcihhLG8pe2Eub3Blbk5vZGUoIkhlYWRpbmdQYWlycyIpLGEu'@; put 'b3Blbk5vZGUoInZ0OnZlY3RvciIse3NpemU6MixiYXNlVHlwZToidmFyaWFudCJ9KSxhLm9wZW5Ob2RlKCJ2dDp2YXJpYW50IiksYS5sZWFmTm9kZSgidnQ6bHBzdHIiLHZvaWQgMCwiV29ya3NoZWV0cyIpLGEuY2xvc2VOb2RlKCksYS5vcGVuTm9kZSgidnQ6dmFyaWFudCIpLGEubGVhZk5v'@; put 'ZGUoInZ0Omk0Iix2b2lkIDAsby5sZW5ndGgpLGEuY2xvc2VOb2RlKCksYS5jbG9zZU5vZGUoKSxhLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihhKXtyZXR1cm4iSGVhZGluZ1BhaXJzIj09PWEubmFtZX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZShhKXtyZXR1cm4iSGVhZGluZ1BhaXJzIiE9PWF9'@; put 'fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDUwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7cmVuZGVyKGEsbyl7YS5vcGVuTm9kZSgiVGl0bGVzT2ZQYXJ0cyIpLGEub3Blbk5vZGUoInZ0'@; put 'OnZlY3RvciIse3NpemU6by5sZW5ndGgsYmFzZVR5cGU6Imxwc3RyIn0pLG8uZm9yRWFjaChyPT57YS5sZWFmTm9kZSgidnQ6bHBzdHIiLHZvaWQgMCxyLm5hbWUpfSksYS5jbG9zZU5vZGUoKSxhLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihhKXtyZXR1cm4iVGl0bGVzT2ZQYXJ0cyI9PT1hLm5h'@; put 'bWV9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoYSl7cmV0dXJuIlRpdGxlc09mUGFydHMiIT09YX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sNTE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91dGlscy94bWwtc3RyZWFtIiksYT1zKCIuLi9iYXNl'@; put 'LXhmb3JtIiksbz1zKCIuLi9zaW1wbGUvc3RyaW5nLXhmb3JtIikscj1zKCIuL2FwcC1oZWFkaW5nLXBhaXJzLXhmb3JtIiksdD1zKCIuL2FwcC10aXRsZXMtb2YtcGFydHMteGZvcm0iKTtjbGFzcyBlIGV4dGVuZHMgYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9e0NvbXBhbnk6'@; put 'bmV3IG8oe3RhZzoiQ29tcGFueSJ9KSxNYW5hZ2VyOm5ldyBvKHt0YWc6Ik1hbmFnZXIifSksSGVhZGluZ1BhaXJzOm5ldyByLFRpdGxlT2ZQYXJ0czpuZXcgdH19cmVuZGVyKG4saSl7bi5vcGVuWG1sKGIuU3RkRG9jQXR0cmlidXRlcyksbi5vcGVuTm9kZSgiUHJvcGVydGllcyIsZS5QUk9Q'@; put 'RVJUWV9BVFRSSUJVVEVTKSxuLmxlYWZOb2RlKCJBcHBsaWNhdGlvbiIsdm9pZCAwLCJNaWNyb3NvZnQgRXhjZWwiKSxuLmxlYWZOb2RlKCJEb2NTZWN1cml0eSIsdm9pZCAwLCIwIiksbi5sZWFmTm9kZSgiU2NhbGVDcm9wIix2b2lkIDAsImZhbHNlIiksdGhpcy5tYXAuSGVhZGluZ1BhaXJz'@; put 'LnJlbmRlcihuLGkud29ya3NoZWV0cyksdGhpcy5tYXAuVGl0bGVPZlBhcnRzLnJlbmRlcihuLGkud29ya3NoZWV0cyksdGhpcy5tYXAuQ29tcGFueS5yZW5kZXIobixpLmNvbXBhbnl8fCIiKSx0aGlzLm1hcC5NYW5hZ2VyLnJlbmRlcihuLGkubWFuYWdlciksbi5sZWFmTm9kZSgiTGlua3NV'@; put 'cFRvRGF0ZSIsdm9pZCAwLCJmYWxzZSIpLG4ubGVhZk5vZGUoIlNoYXJlZERvYyIsdm9pZCAwLCJmYWxzZSIpLG4ubGVhZk5vZGUoIkh5cGVybGlua3NDaGFuZ2VkIix2b2lkIDAsImZhbHNlIiksbi5sZWFmTm9kZSgiQXBwVmVyc2lvbiIsdm9pZCAwLCIxNi4wMzAwIiksbi5jbG9zZU5vZGUo'@; put 'KX1wYXJzZU9wZW4obil7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4obiksITApOiJQcm9wZXJ0aWVzIj09PW4ubmFtZXx8KHRoaXMucGFyc2VyPXRoaXMubWFwW24ubmFtZV0sISF0aGlzLnBhcnNlciYmKHRoaXMucGFyc2VyLnBhcnNlT3BlbihuKSwhMCkpfXBh'@; put 'cnNlVGV4dChuKXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KG4pfXBhcnNlQ2xvc2Uobil7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKG4pfHwodGhpcy5wYXJzZXI9dm9pZCAwKSwhMCk6IlByb3BlcnRpZXMiIT09bnx8KHRoaXMubW9kZWw9'@; put 'e3dvcmtzaGVldHM6dGhpcy5tYXAuVGl0bGVPZlBhcnRzLm1vZGVsLGNvbXBhbnk6dGhpcy5tYXAuQ29tcGFueS5tb2RlbCxtYW5hZ2VyOnRoaXMubWFwLk1hbmFnZXIubW9kZWx9LCExKX19ZS5EYXRlRm9ybWF0PWZ1bmN0aW9uKGwpe3JldHVybiBsLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgv'@; put 'Wy5dXGR7Myw2fS8sIiIpfSxlLkRhdGVBdHRycz17InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSxlLlBST1BFUlRZX0FUVFJJQlVURVM9e3htbG5zOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzIiwi'@; put 'eG1sbnM6dnQiOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9kb2NQcm9wc1ZUeXBlcyJ9LEUuZXhwb3J0cz1lfSx7Ii4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iOjI4LCIuLi9iYXNlLXhmb3JtIjozMiwiLi4vc2ltcGxlL3N0cmluZy14'@; put 'Zm9ybSI6MTE5LCIuL2FwcC1oZWFkaW5nLXBhaXJzLXhmb3JtIjo0OSwiLi9hcHAtdGl0bGVzLW9mLXBhcnRzLXhmb3JtIjo1MH1dLDUyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSIpLGE9cygiLi4vYmFzZS14Zm9y'@; put 'bSIpO2NsYXNzIG8gZXh0ZW5kcyBhe3JlbmRlcih0LGUpe3Qub3BlblhtbChiLlN0ZERvY0F0dHJpYnV0ZXMpLHQub3Blbk5vZGUoIlR5cGVzIixvLlBST1BFUlRZX0FUVFJJQlVURVMpO2NvbnN0IGw9e307KGUubWVkaWF8fFtdKS5mb3JFYWNoKG49PntpZigiaW1hZ2UiPT09bi50eXBlKXtj'@; put 'b25zdCBpPW4uZXh0ZW5zaW9uO2xbaV18fChsW2ldPSEwLHQubGVhZk5vZGUoIkRlZmF1bHQiLHtFeHRlbnNpb246aSxDb250ZW50VHlwZToiaW1hZ2UvIitpfSkpfX0pLHQubGVhZk5vZGUoIkRlZmF1bHQiLHtFeHRlbnNpb246InJlbHMiLENvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi92bmQu'@; put 'b3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCJ9KSx0LmxlYWZOb2RlKCJEZWZhdWx0Iix7RXh0ZW5zaW9uOiJ4bWwiLENvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94bWwifSksdC5sZWFmTm9kZSgiT3ZlcnJpZGUiLHtQYXJ0TmFtZToiL3hsL3dvcmtib29rLnhtbCIs'@; put 'Q29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIn0pLGUud29ya3NoZWV0cy5mb3JFYWNoKG49Pnt0LmxlYWZOb2RlKCJPdmVycmlkZSIse1BhcnROYW1lOmAveGwvd29ya3NoZWV0cy9z'@; put 'aGVldCR7bi5pZH0ueG1sYCxDb250ZW50VHlwZToiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCJ9KX0pLHQubGVhZk5vZGUoIk92ZXJyaWRlIix7UGFydE5hbWU6Ii94bC90aGVtZS90aGVtZTEueG1sIixD'@; put 'b250ZW50VHlwZToiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCJ9KSx0LmxlYWZOb2RlKCJPdmVycmlkZSIse1BhcnROYW1lOiIveGwvc3R5bGVzLnhtbCIsQ29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1v'@; put 'ZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWwifSksZS5zaGFyZWRTdHJpbmdzJiZlLnNoYXJlZFN0cmluZ3MuY291bnQmJnQubGVhZk5vZGUoIk92ZXJyaWRlIix7UGFydE5hbWU6Ii94bC9zaGFyZWRTdHJpbmdzLnhtbCIsQ29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3Zu'@; put 'ZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZFN0cmluZ3MreG1sIn0pLGUudGFibGVzJiZlLnRhYmxlcy5mb3JFYWNoKG49Pnt0LmxlYWZOb2RlKCJPdmVycmlkZSIse1BhcnROYW1lOiIveGwvdGFibGVzLyIrbi50YXJnZXQsQ29udGVudFR5cGU6'@; put 'ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlK3htbCJ9KX0pLGUuZHJhd2luZ3MmJmUuZHJhd2luZ3MuZm9yRWFjaChuPT57dC5sZWFmTm9kZSgiT3ZlcnJpZGUiLHtQYXJ0TmFtZTpgL3hsL2RyYXdpbmdzLyR7bi5uYW1l'@; put 'fS54bWxgLENvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWwifSl9KSxlLmNvbW1lbnRSZWZzJiYodC5sZWFmTm9kZSgiRGVmYXVsdCIse0V4dGVuc2lvbjoidm1sIixDb250ZW50VHlwZToiYXBwbGljYXRpb24vdm5k'@; put 'Lm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERyYXdpbmcifSksZS5jb21tZW50UmVmcy5mb3JFYWNoKG49PntsZXR7Y29tbWVudE5hbWU6aX09bjt0LmxlYWZOb2RlKCJPdmVycmlkZSIse1BhcnROYW1lOmAveGwvJHtpfS54bWxgLENvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi92'@; put 'bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb21tZW50cyt4bWwifSl9KSksdC5sZWFmTm9kZSgiT3ZlcnJpZGUiLHtQYXJ0TmFtZToiL2RvY1Byb3BzL2NvcmUueG1sIixDb250ZW50VHlwZToiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBh'@; put 'Y2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbCJ9KSx0LmxlYWZOb2RlKCJPdmVycmlkZSIse1BhcnROYW1lOiIvZG9jUHJvcHMvYXBwLnhtbCIsQ29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbCJ9'@; put 'KSx0LmNsb3NlTm9kZSgpfXBhcnNlT3Blbigpe3JldHVybiExfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fW8uUFJPUEVSVFlfQVRUUklCVVRFUz17eG1sbnM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcyJ9'@; put 'LEUuZXhwb3J0cz1vfSx7Ii4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iOjI4LCIuLi9iYXNlLXhmb3JtIjozMn1dLDUzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSIpLGE9cygiLi4vYmFzZS14Zm9ybSIpLG89cygi'@; put 'Li4vc2ltcGxlL2RhdGUteGZvcm0iKSxyPXMoIi4uL3NpbXBsZS9zdHJpbmcteGZvcm0iKSx0PXMoIi4uL3NpbXBsZS9pbnRlZ2VyLXhmb3JtIik7Y2xhc3MgZSBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXsiZGM6Y3JlYXRvciI6bmV3IHIoe3RhZzoiZGM6Y3Jl'@; put 'YXRvciJ9KSwiZGM6dGl0bGUiOm5ldyByKHt0YWc6ImRjOnRpdGxlIn0pLCJkYzpzdWJqZWN0IjpuZXcgcih7dGFnOiJkYzpzdWJqZWN0In0pLCJkYzpkZXNjcmlwdGlvbiI6bmV3IHIoe3RhZzoiZGM6ZGVzY3JpcHRpb24ifSksImRjOmlkZW50aWZpZXIiOm5ldyByKHt0YWc6ImRjOmlkZW50'@; put 'aWZpZXIifSksImRjOmxhbmd1YWdlIjpuZXcgcih7dGFnOiJkYzpsYW5ndWFnZSJ9KSwiY3A6a2V5d29yZHMiOm5ldyByKHt0YWc6ImNwOmtleXdvcmRzIn0pLCJjcDpjYXRlZ29yeSI6bmV3IHIoe3RhZzoiY3A6Y2F0ZWdvcnkifSksImNwOmxhc3RNb2RpZmllZEJ5IjpuZXcgcih7dGFnOiJj'@; put 'cDpsYXN0TW9kaWZpZWRCeSJ9KSwiY3A6bGFzdFByaW50ZWQiOm5ldyBvKHt0YWc6ImNwOmxhc3RQcmludGVkIixmb3JtYXQ6ZS5EYXRlRm9ybWF0fSksImNwOnJldmlzaW9uIjpuZXcgdCh7dGFnOiJjcDpyZXZpc2lvbiJ9KSwiY3A6dmVyc2lvbiI6bmV3IHIoe3RhZzoiY3A6dmVyc2lvbiJ9'@; put 'KSwiY3A6Y29udGVudFN0YXR1cyI6bmV3IHIoe3RhZzoiY3A6Y29udGVudFN0YXR1cyJ9KSwiY3A6Y29udGVudFR5cGUiOm5ldyByKHt0YWc6ImNwOmNvbnRlbnRUeXBlIn0pLCJkY3Rlcm1zOmNyZWF0ZWQiOm5ldyBvKHt0YWc6ImRjdGVybXM6Y3JlYXRlZCIsYXR0cnM6ZS5EYXRlQXR0cnMs'@; put 'Zm9ybWF0OmUuRGF0ZUZvcm1hdH0pLCJkY3Rlcm1zOm1vZGlmaWVkIjpuZXcgbyh7dGFnOiJkY3Rlcm1zOm1vZGlmaWVkIixhdHRyczplLkRhdGVBdHRycyxmb3JtYXQ6ZS5EYXRlRm9ybWF0fSl9fXJlbmRlcihuLGkpe24ub3BlblhtbChiLlN0ZERvY0F0dHJpYnV0ZXMpLG4ub3Blbk5vZGUo'@; put 'ImNwOmNvcmVQcm9wZXJ0aWVzIixlLkNPUkVfUFJPUEVSVFlfQVRUUklCVVRFUyksdGhpcy5tYXBbImRjOmNyZWF0b3IiXS5yZW5kZXIobixpLmNyZWF0b3IpLHRoaXMubWFwWyJkYzp0aXRsZSJdLnJlbmRlcihuLGkudGl0bGUpLHRoaXMubWFwWyJkYzpzdWJqZWN0Il0ucmVuZGVyKG4saS5z'@; put 'dWJqZWN0KSx0aGlzLm1hcFsiZGM6ZGVzY3JpcHRpb24iXS5yZW5kZXIobixpLmRlc2NyaXB0aW9uKSx0aGlzLm1hcFsiZGM6aWRlbnRpZmllciJdLnJlbmRlcihuLGkuaWRlbnRpZmllciksdGhpcy5tYXBbImRjOmxhbmd1YWdlIl0ucmVuZGVyKG4saS5sYW5ndWFnZSksdGhpcy5tYXBbImNw'@; put 'OmtleXdvcmRzIl0ucmVuZGVyKG4saS5rZXl3b3JkcyksdGhpcy5tYXBbImNwOmNhdGVnb3J5Il0ucmVuZGVyKG4saS5jYXRlZ29yeSksdGhpcy5tYXBbImNwOmxhc3RNb2RpZmllZEJ5Il0ucmVuZGVyKG4saS5sYXN0TW9kaWZpZWRCeSksdGhpcy5tYXBbImNwOmxhc3RQcmludGVkIl0ucmVu'@; put 'ZGVyKG4saS5sYXN0UHJpbnRlZCksdGhpcy5tYXBbImNwOnJldmlzaW9uIl0ucmVuZGVyKG4saS5yZXZpc2lvbiksdGhpcy5tYXBbImNwOnZlcnNpb24iXS5yZW5kZXIobixpLnZlcnNpb24pLHRoaXMubWFwWyJjcDpjb250ZW50U3RhdHVzIl0ucmVuZGVyKG4saS5jb250ZW50U3RhdHVzKSx0'@; put 'aGlzLm1hcFsiY3A6Y29udGVudFR5cGUiXS5yZW5kZXIobixpLmNvbnRlbnRUeXBlKSx0aGlzLm1hcFsiZGN0ZXJtczpjcmVhdGVkIl0ucmVuZGVyKG4saS5jcmVhdGVkKSx0aGlzLm1hcFsiZGN0ZXJtczptb2RpZmllZCJdLnJlbmRlcihuLGkubW9kaWZpZWQpLG4uY2xvc2VOb2RlKCl9cGFy'@; put 'c2VPcGVuKG4pe2lmKHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9wZW4obiksITA7c3dpdGNoKG4ubmFtZSl7Y2FzZSJjcDpjb3JlUHJvcGVydGllcyI6Y2FzZSJjb3JlUHJvcGVydGllcyI6cmV0dXJuITA7ZGVmYXVsdDppZih0aGlzLnBhcnNlcj10aGlzLm1hcFtuLm5h'@; put 'bWVdLHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9wZW4obiksITA7dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHhtbCBub2RlIGluIHBhcnNlT3BlbjogIitKU09OLnN0cmluZ2lmeShuKSl9fXBhcnNlVGV4dChuKXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFy'@; put 'c2VUZXh0KG4pfXBhcnNlQ2xvc2Uobil7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlQ2xvc2Uobil8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwO3N3aXRjaChuKXtjYXNlImNwOmNvcmVQcm9wZXJ0aWVzIjpjYXNlImNvcmVQcm9wZXJ0aWVzIjpyZXR1cm4gdGhpcy5t'@; put 'b2RlbD17Y3JlYXRvcjp0aGlzLm1hcFsiZGM6Y3JlYXRvciJdLm1vZGVsLHRpdGxlOnRoaXMubWFwWyJkYzp0aXRsZSJdLm1vZGVsLHN1YmplY3Q6dGhpcy5tYXBbImRjOnN1YmplY3QiXS5tb2RlbCxkZXNjcmlwdGlvbjp0aGlzLm1hcFsiZGM6ZGVzY3JpcHRpb24iXS5tb2RlbCxpZGVudGlm'@; put 'aWVyOnRoaXMubWFwWyJkYzppZGVudGlmaWVyIl0ubW9kZWwsbGFuZ3VhZ2U6dGhpcy5tYXBbImRjOmxhbmd1YWdlIl0ubW9kZWwsa2V5d29yZHM6dGhpcy5tYXBbImNwOmtleXdvcmRzIl0ubW9kZWwsY2F0ZWdvcnk6dGhpcy5tYXBbImNwOmNhdGVnb3J5Il0ubW9kZWwsbGFzdE1vZGlmaWVk'@; put 'Qnk6dGhpcy5tYXBbImNwOmxhc3RNb2RpZmllZEJ5Il0ubW9kZWwsbGFzdFByaW50ZWQ6dGhpcy5tYXBbImNwOmxhc3RQcmludGVkIl0ubW9kZWwscmV2aXNpb246dGhpcy5tYXBbImNwOnJldmlzaW9uIl0ubW9kZWwsY29udGVudFN0YXR1czp0aGlzLm1hcFsiY3A6Y29udGVudFN0YXR1cyJd'@; put 'Lm1vZGVsLGNvbnRlbnRUeXBlOnRoaXMubWFwWyJjcDpjb250ZW50VHlwZSJdLm1vZGVsLGNyZWF0ZWQ6dGhpcy5tYXBbImRjdGVybXM6Y3JlYXRlZCJdLm1vZGVsLG1vZGlmaWVkOnRoaXMubWFwWyJkY3Rlcm1zOm1vZGlmaWVkIl0ubW9kZWx9LCExO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9y'@; put 'KCJVbmV4cGVjdGVkIHhtbCBub2RlIGluIHBhcnNlQ2xvc2U6ICIrbil9fX1lLkRhdGVGb3JtYXQ9ZnVuY3Rpb24obCl7cmV0dXJuIGwudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9bLl1cZHszfS8sIiIpfSxlLkRhdGVBdHRycz17InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSxlLkNPUkVf'@; put 'UFJPUEVSVFlfQVRUUklCVVRFUz17InhtbG5zOmNwIjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiLCJ4bWxuczpkYyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwieG1sbnM6ZGN0ZXJt'@; put 'cyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iLCJ4bWxuczpkY21pdHlwZSI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS8iLCJ4bWxuczp4c2kiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSJ9LEUuZXhwb3J0cz1lfSx7Ii4uLy4uLy4uL3V0aWxz'@; put 'L3htbC1zdHJlYW0iOjI4LCIuLi9iYXNlLXhmb3JtIjozMiwiLi4vc2ltcGxlL2RhdGUteGZvcm0iOjExNywiLi4vc2ltcGxlL2ludGVnZXIteGZvcm0iOjExOCwiLi4vc2ltcGxlL3N0cmluZy14Zm9ybSI6MTE5fV0sNTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1z'@; put 'KCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntyZW5kZXIoYSxvKXthLmxlYWZOb2RlKCJSZWxhdGlvbnNoaXAiLG8pfXBhcnNlT3BlbihhKXtyZXR1cm4iUmVsYXRpb25zaGlwIj09PWEubmFtZSYmKHRoaXMubW9kZWw9YS5hdHRyaWJ1dGVzLCEwKX1wYXJzZVRl'@; put 'eHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX19LHsiLi4vYmFzZS14Zm9ybSI6MzJ9XSw1NTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iKSxhPXMoIi4uL2Jhc2UteGZvcm0iKSxvPXMoIi4vcmVsYXRpb25zaGlw'@; put 'LXhmb3JtIik7Y2xhc3MgciBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXtSZWxhdGlvbnNoaXA6bmV3IG99fXJlbmRlcihlLGwpe2w9bHx8dGhpcy5fdmFsdWVzLGUub3BlblhtbChiLlN0ZERvY0F0dHJpYnV0ZXMpLGUub3Blbk5vZGUoIlJlbGF0aW9uc2hpcHMi'@; put 'LHIuUkVMQVRJT05TSElQU19BVFRSSUJVVEVTKSxsLmZvckVhY2gobj0+e3RoaXMubWFwLlJlbGF0aW9uc2hpcC5yZW5kZXIoZSxuKX0pLGUuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKGUpe2lmKHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9wZW4oZSksITA7aWYoIlJlbGF0'@; put 'aW9uc2hpcHMiPT09ZS5uYW1lKXJldHVybiB0aGlzLm1vZGVsPVtdLCEwO2lmKHRoaXMucGFyc2VyPXRoaXMubWFwW2UubmFtZV0sdGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlT3BlbihlKSwhMDt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgeG1sIG5vZGUgaW4gcGFy'@; put 'c2VPcGVuOiAiK0pTT04uc3RyaW5naWZ5KGUpKX1wYXJzZVRleHQoZSl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChlKX1wYXJzZUNsb3NlKGUpe2lmKHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGUpfHwodGhpcy5tb2RlbC5wdXNoKHRoaXMu'@; put 'cGFyc2VyLm1vZGVsKSx0aGlzLnBhcnNlcj12b2lkIDApLCEwO2lmKCJSZWxhdGlvbnNoaXBzIj09PWUpcmV0dXJuITE7dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHhtbCBub2RlIGluIHBhcnNlQ2xvc2U6ICIrZSl9fXIuUkVMQVRJT05TSElQU19BVFRSSUJVVEVTPXt4bWxuczoiaHR0'@; put 'cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIn0sRS5leHBvcnRzPXJ9LHsiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSI6MjgsIi4uL2Jhc2UteGZvcm0iOjMyLCIuL3JlbGF0aW9uc2hpcC14Zm9ybSI6NTR9XSw1NjpbZnVuY3Rpb24o'@; put 'cyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie3BhcnNlT3BlbihhKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihhKSwhMCk6KGEubmFtZT09PXRoaXMudGFnPyh0aGlzLnJlc2V0'@; put 'KCksdGhpcy5tb2RlbD17cmFuZ2U6e2VkaXRBczphLmF0dHJpYnV0ZXMuZWRpdEFzfHwib25lQ2VsbCJ9fSk6KHRoaXMucGFyc2VyPXRoaXMubWFwW2EubmFtZV0sdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlT3BlbihhKSksITApfXBhcnNlVGV4dChhKXt0aGlzLnBhcnNlciYmdGhp'@; put 'cy5wYXJzZXIucGFyc2VUZXh0KGEpfXJlY29uY2lsZVBpY3R1cmUoYSxvKXtpZihhJiZhLnJJZCl7Y29uc3Qgcj1vLnJlbHNbYS5ySWRdLlRhcmdldC5tYXRjaCgvLipcL21lZGlhXC8oLitbLl1bYS16QS1aXXszLDR9KS8pO2lmKHIpcmV0dXJuIG8ubWVkaWFbby5tZWRpYUluZGV4W3JbMV1d'@; put 'XX19fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDU3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpLGE9cygiLi9ibGlwLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9'@; put 'eyJhOmJsaXAiOm5ldyBhfX1nZXQgdGFnKCl7cmV0dXJuInhkcjpibGlwRmlsbCJ9cmVuZGVyKG8scil7by5vcGVuTm9kZSh0aGlzLnRhZyksdGhpcy5tYXBbImE6YmxpcCJdLnJlbmRlcihvLHIpLG8ub3Blbk5vZGUoImE6c3RyZXRjaCIpLG8ubGVhZk5vZGUoImE6ZmlsbFJlY3QiKSxvLmNs'@; put 'b3NlTm9kZSgpLG8uY2xvc2VOb2RlKCl9cGFyc2VPcGVuKG8pe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VPcGVuKG8pLCEwKTooby5uYW1lPT09dGhpcy50YWc/dGhpcy5yZXNldCgpOih0aGlzLnBhcnNlcj10aGlzLm1hcFtvLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlz'@; put 'LnBhcnNlci5wYXJzZU9wZW4obykpLCEwKX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZShvKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlQ2xvc2Uobyl8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwKTpvIT09dGhpcy50YWd8fCh0aGlzLm1vZGVsPXRoaXMubWFwWyJhOmJs'@; put 'aXAiXS5tb2RlbCwhMSl9fX0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi9ibGlwLXhmb3JtIjo1OH1dLDU4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJhOmJs'@; put 'aXAifXJlbmRlcihhLG8pe2EubGVhZk5vZGUodGhpcy50YWcseyJ4bWxuczpyIjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIsInI6ZW1iZWQiOm8ucklkLGNzdGF0ZToicHJpbnQifSl9cGFyc2VPcGVuKGEpe3Jl'@; put 'dHVybiBhLm5hbWU9PT10aGlzLnRhZyYmKHRoaXMubW9kZWw9e3JJZDphLmF0dHJpYnV0ZXNbInI6ZW1iZWQiXX0pLCEwfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKGEpe3JldHVybiBhIT09dGhpcy50YWd9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDU5OltmdW5jdGlvbihzLEUsUyl7InVz'@; put 'ZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJ4ZHI6Y052UGljUHIifXJlbmRlcihhKXthLm9wZW5Ob2RlKHRoaXMudGFnKSxhLmxlYWZOb2RlKCJhOnBpY0xvY2tzIix7bm9DaGFuZ2VBc3BlY3Q6'@; put 'IjEifSksYS5jbG9zZU5vZGUoKX1wYXJzZU9wZW4oYSl7cmV0dXJuITB9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoYSl7cmV0dXJuIGEhPT10aGlzLnRhZ319fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sNjA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNl'@; put 'LXhmb3JtIiksYT1zKCIuL2hsaW5rLWNsaWNrLXhmb3JtIiksbz1zKCIuL2V4dC1sc3QteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17ImE6aGxpbmtDbGljayI6bmV3IGEsImE6ZXh0THN0IjpuZXcgb319Z2V0IHRhZygp'@; put 'e3JldHVybiJ4ZHI6Y052UHIifXJlbmRlcihyLHQpe3Iub3Blbk5vZGUodGhpcy50YWcse2lkOnQuaW5kZXgsbmFtZToiUGljdHVyZSAiK3QuaW5kZXh9KSx0aGlzLm1hcFsiYTpobGlua0NsaWNrIl0ucmVuZGVyKHIsdCksdGhpcy5tYXBbImE6ZXh0THN0Il0ucmVuZGVyKHIsdCksci5jbG9z'@; put 'ZU5vZGUoKX1wYXJzZU9wZW4ocil7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITApOihyLm5hbWU9PT10aGlzLnRhZz90aGlzLnJlc2V0KCk6KHRoaXMucGFyc2VyPXRoaXMubWFwW3IubmFtZV0sdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlT3Bl'@; put 'bihyKSksITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKHIpe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShyKXx8KHRoaXMucGFyc2VyPXZvaWQgMCksITApOnIhPT10aGlzLnRhZ3x8KHRoaXMubW9kZWw9dGhpcy5tYXBbImE6aGxpbmtDbGljayJdLm1vZGVs'@; put 'LCExKX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyLCIuL2V4dC1sc3QteGZvcm0iOjYzLCIuL2hsaW5rLWNsaWNrLXhmb3JtIjo2NX1dLDYxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpLGE9cygiLi4vc2ltcGxlL2ludGVnZXIteGZvcm0i'@; put 'KTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKG8pe3N1cGVyKCksdGhpcy50YWc9by50YWcsdGhpcy5tYXA9eyJ4ZHI6Y29sIjpuZXcgYSh7dGFnOiJ4ZHI6Y29sIix6ZXJvOiEwfSksInhkcjpjb2xPZmYiOm5ldyBhKHt0YWc6Inhkcjpjb2xPZmYiLHplcm86ITB9KSwi'@; put 'eGRyOnJvdyI6bmV3IGEoe3RhZzoieGRyOnJvdyIsemVybzohMH0pLCJ4ZHI6cm93T2ZmIjpuZXcgYSh7dGFnOiJ4ZHI6cm93T2ZmIix6ZXJvOiEwfSl9fXJlbmRlcihvLHIpe28ub3Blbk5vZGUodGhpcy50YWcpLHRoaXMubWFwWyJ4ZHI6Y29sIl0ucmVuZGVyKG8sci5uYXRpdmVDb2wpLHRo'@; put 'aXMubWFwWyJ4ZHI6Y29sT2ZmIl0ucmVuZGVyKG8sci5uYXRpdmVDb2xPZmYpLHRoaXMubWFwWyJ4ZHI6cm93Il0ucmVuZGVyKG8sci5uYXRpdmVSb3cpLHRoaXMubWFwWyJ4ZHI6cm93T2ZmIl0ucmVuZGVyKG8sci5uYXRpdmVSb3dPZmYpLG8uY2xvc2VOb2RlKCl9cGFyc2VPcGVuKG8pe3Jl'@; put 'dHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VPcGVuKG8pLCEwKTooby5uYW1lPT09dGhpcy50YWc/dGhpcy5yZXNldCgpOih0aGlzLnBhcnNlcj10aGlzLm1hcFtvLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZU9wZW4obykpLCEwKX1wYXJzZVRleHQobyl7'@; put 'dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChvKX1wYXJzZUNsb3NlKG8pe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShvKXx8KHRoaXMucGFyc2VyPXZvaWQgMCksITApOm8hPT10aGlzLnRhZ3x8KHRoaXMubW9kZWw9e25hdGl2ZUNvbDp0aGlz'@; put 'Lm1hcFsieGRyOmNvbCJdLm1vZGVsLG5hdGl2ZUNvbE9mZjp0aGlzLm1hcFsieGRyOmNvbE9mZiJdLm1vZGVsLG5hdGl2ZVJvdzp0aGlzLm1hcFsieGRyOnJvdyJdLm1vZGVsLG5hdGl2ZVJvd09mZjp0aGlzLm1hcFsieGRyOnJvd09mZiJdLm1vZGVsfSwhMSl9fX0seyIuLi9iYXNlLXhmb3Jt'@; put 'IjozMiwiLi4vc2ltcGxlL2ludGVnZXIteGZvcm0iOjExOH1dLDYyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMvY29sLWNhY2hlIiksYT1zKCIuLi8uLi8uLi91dGlscy94bWwtc3RyZWFtIiksbz1zKCIuLi9iYXNlLXhmb3JtIikscj1z'@; put 'KCIuL3R3by1jZWxsLWFuY2hvci14Zm9ybSIpLHQ9cygiLi9vbmUtY2VsbC1hbmNob3IteGZvcm0iKTtjbGFzcyBlIGV4dGVuZHMgb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9eyJ4ZHI6dHdvQ2VsbEFuY2hvciI6bmV3IHIsInhkcjpvbmVDZWxsQW5jaG9yIjpuZXcgdH19cHJl'@; put 'cGFyZShuKXtuLmFuY2hvcnMuZm9yRWFjaCgoaSxoKT0+e3ZhciBmO2kuYW5jaG9yVHlwZT0oInN0cmluZyI9PXR5cGVvZihmPWkpLnJhbmdlP2IuZGVjb2RlKGYucmFuZ2UpOmYucmFuZ2UpLmJyPyJ4ZHI6dHdvQ2VsbEFuY2hvciI6InhkcjpvbmVDZWxsQW5jaG9yIix0aGlzLm1hcFtpLmFu'@; put 'Y2hvclR5cGVdLnByZXBhcmUoaSx7aW5kZXg6aH0pfSl9Z2V0IHRhZygpe3JldHVybiJ4ZHI6d3NEciJ9cmVuZGVyKG4saSl7bi5vcGVuWG1sKGEuU3RkRG9jQXR0cmlidXRlcyksbi5vcGVuTm9kZSh0aGlzLnRhZyxlLkRSQVdJTkdfQVRUUklCVVRFUyksaS5hbmNob3JzLmZvckVhY2goaD0+'@; put 'e3RoaXMubWFwW2guYW5jaG9yVHlwZV0ucmVuZGVyKG4saCl9KSxuLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihuKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihuKSwhMCk6KG4ubmFtZT09PXRoaXMudGFnPyh0aGlzLnJlc2V0KCksdGhpcy5tb2RlbD17YW5jaG9y'@; put 'czpbXX0pOih0aGlzLnBhcnNlcj10aGlzLm1hcFtuLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZU9wZW4obikpLCEwKX1wYXJzZVRleHQobil7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChuKX1wYXJzZUNsb3NlKG4pe3JldHVybiB0aGlzLnBhcnNlcj8o'@; put 'dGhpcy5wYXJzZXIucGFyc2VDbG9zZShuKXx8KHRoaXMubW9kZWwuYW5jaG9ycy5wdXNoKHRoaXMucGFyc2VyLm1vZGVsKSx0aGlzLnBhcnNlcj12b2lkIDApLCEwKTpuIT09dGhpcy50YWd9cmVjb25jaWxlKG4saSl7bi5hbmNob3JzLmZvckVhY2goaD0+e2guYnI/dGhpcy5tYXBbInhkcjp0'@; put 'd29DZWxsQW5jaG9yIl0ucmVjb25jaWxlKGgsaSk6dGhpcy5tYXBbInhkcjpvbmVDZWxsQW5jaG9yIl0ucmVjb25jaWxlKGgsaSl9KX19ZS5EUkFXSU5HX0FUVFJJQlVURVM9eyJ4bWxuczp4ZHIiOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvc3By'@; put 'ZWFkc2hlZXREcmF3aW5nIiwieG1sbnM6YSI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIn0sRS5leHBvcnRzPWV9LHsiLi4vLi4vLi4vdXRpbHMvY29sLWNhY2hlIjoxOSwiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSI6MjgsIi4uL2Jh'@; put 'c2UteGZvcm0iOjMyLCIuL29uZS1jZWxsLWFuY2hvci14Zm9ybSI6NjcsIi4vdHdvLWNlbGwtYW5jaG9yLXhmb3JtIjo3MH1dLDYzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRh'@; put 'Zygpe3JldHVybiJhOmV4dExzdCJ9cmVuZGVyKGEpe2Eub3Blbk5vZGUodGhpcy50YWcpLGEub3Blbk5vZGUoImE6ZXh0Iix7dXJpOiJ7RkYyQjVFRjQtRkZGMi00MEI0LUJFNDktRjIzOEUyN0ZDMjM2fSJ9KSxhLmxlYWZOb2RlKCJhMTY6Y3JlYXRpb25JZCIseyJ4bWxuczphMTYiOiJodHRw'@; put 'Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9kcmF3aW5nLzIwMTQvbWFpbiIsaWQ6InswMDAwMDAwMC0wMDA4LTAwMDAtMDAwMC0wMDAwMDIwMDAwMDB9In0pLGEuY2xvc2VOb2RlKCksYS5jbG9zZU5vZGUoKX1wYXJzZU9wZW4oYSl7cmV0dXJuITB9cGFyc2VUZXh0KCl7fXBhcnNl'@; put 'Q2xvc2UoYSl7cmV0dXJuIGEhPT10aGlzLnRhZ319fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sNjQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihhKXtzdXBlcigpLHRo'@; put 'aXMudGFnPWEudGFnLHRoaXMubWFwPXt9fXJlbmRlcihhLG8pe2Eub3Blbk5vZGUodGhpcy50YWcpO2NvbnN0IHI9TWF0aC5mbG9vcig5NTI1Km8ud2lkdGgpLHQ9TWF0aC5mbG9vcig5NTI1Km8uaGVpZ2h0KTthLmFkZEF0dHJpYnV0ZSgiY3giLHIpLGEuYWRkQXR0cmlidXRlKCJjeSIsdCks'@; put 'YS5jbG9zZU5vZGUoKX1wYXJzZU9wZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17d2lkdGg6cGFyc2VJbnQoYS5hdHRyaWJ1dGVzLmN4fHwiMCIsMTApLzk1MjUsaGVpZ2h0OnBhcnNlSW50KGEuYXR0cmlidXRlcy5jeXx8IjAiLDEwKS85NTI1fSwhMCl9cGFy'@; put 'c2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sNjU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuImE6aGxp'@; put 'bmtDbGljayJ9cmVuZGVyKGEsbyl7by5oeXBlcmxpbmtzJiZvLmh5cGVybGlua3MucklkJiZhLmxlYWZOb2RlKHRoaXMudGFnLHsieG1sbnM6ciI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiLCJyOmlkIjpvLmh5'@; put 'cGVybGlua3MucklkLHRvb2x0aXA6by5oeXBlcmxpbmtzLnRvb2x0aXB9KX1wYXJzZU9wZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17aHlwZXJsaW5rczp7cklkOmEuYXR0cmlidXRlc1sicjppZCJdLHRvb2x0aXA6YS5hdHRyaWJ1dGVzLnRvb2x0aXB9fSks'@; put 'ITB9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sNjY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIiksYT1zKCIuL2MtbnYtcHIteGZvcm0iKSxvPXMoIi4vYy1udi1waWMtcHIt'@; put 'eGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17InhkcjpjTnZQciI6bmV3IGEsInhkcjpjTnZQaWNQciI6bmV3IG99fWdldCB0YWcoKXtyZXR1cm4ieGRyOm52UGljUHIifXJlbmRlcihyLHQpe3Iub3Blbk5vZGUodGhpcy50'@; put 'YWcpLHRoaXMubWFwWyJ4ZHI6Y052UHIiXS5yZW5kZXIocix0KSx0aGlzLm1hcFsieGRyOmNOdlBpY1ByIl0ucmVuZGVyKHIsdCksci5jbG9zZU5vZGUoKX1wYXJzZU9wZW4ocil7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITApOihyLm5hbWU9PT10aGlz'@; put 'LnRhZz90aGlzLnJlc2V0KCk6KHRoaXMucGFyc2VyPXRoaXMubWFwW3IubmFtZV0sdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlT3BlbihyKSksITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKHIpe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShyKXx8'@; put 'KHRoaXMucGFyc2VyPXZvaWQgMCksITApOnIhPT10aGlzLnRhZ3x8KHRoaXMubW9kZWw9dGhpcy5tYXBbInhkcjpjTnZQciJdLm1vZGVsLCExKX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyLCIuL2MtbnYtcGljLXByLXhmb3JtIjo1OSwiLi9jLW52LXByLXhmb3JtIjo2MH1dLDY3OltmdW5jdGlv'@; put 'bihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi9iYXNlLWNlbGwtYW5jaG9yLXhmb3JtIiksYT1zKCIuLi9zdGF0aWMteGZvcm0iKSxvPXMoIi4vY2VsbC1wb3NpdGlvbi14Zm9ybSIpLHI9cygiLi9leHQteGZvcm0iKSx0PXMoIi4vcGljLXhmb3JtIik7RS5leHBvcnRzPWNsYXNz'@; put 'IGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9eyJ4ZHI6ZnJvbSI6bmV3IG8oe3RhZzoieGRyOmZyb20ifSksInhkcjpleHQiOm5ldyByKHt0YWc6InhkcjpleHQifSksInhkcjpwaWMiOm5ldyB0LCJ4ZHI6Y2xpZW50RGF0YSI6bmV3IGEoe3RhZzoieGRyOmNsaWVu'@; put 'dERhdGEifSl9fWdldCB0YWcoKXtyZXR1cm4ieGRyOm9uZUNlbGxBbmNob3IifXByZXBhcmUoZSxsKXt0aGlzLm1hcFsieGRyOnBpYyJdLnByZXBhcmUoZS5waWN0dXJlLGwpfXJlbmRlcihlLGwpe2Uub3Blbk5vZGUodGhpcy50YWcse2VkaXRBczpsLnJhbmdlLmVkaXRBc3x8Im9uZUNlbGwi'@; put 'fSksdGhpcy5tYXBbInhkcjpmcm9tIl0ucmVuZGVyKGUsbC5yYW5nZS50bCksdGhpcy5tYXBbInhkcjpleHQiXS5yZW5kZXIoZSxsLnJhbmdlLmV4dCksdGhpcy5tYXBbInhkcjpwaWMiXS5yZW5kZXIoZSxsLnBpY3R1cmUpLHRoaXMubWFwWyJ4ZHI6Y2xpZW50RGF0YSJdLnJlbmRlcihlLHt9'@; put 'KSxlLmNsb3NlTm9kZSgpfXBhcnNlQ2xvc2UoZSl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGUpfHwodGhpcy5wYXJzZXI9dm9pZCAwKSwhMCk6ZSE9PXRoaXMudGFnfHwodGhpcy5tb2RlbC5yYW5nZS50bD10aGlzLm1hcFsieGRyOmZyb20iXS5tb2RlbCx0'@; put 'aGlzLm1vZGVsLnJhbmdlLmV4dD10aGlzLm1hcFsieGRyOmV4dCJdLm1vZGVsLHRoaXMubW9kZWwucGljdHVyZT10aGlzLm1hcFsieGRyOnBpYyJdLm1vZGVsLCExKX1yZWNvbmNpbGUoZSxsKXtlLm1lZGl1bT10aGlzLnJlY29uY2lsZVBpY3R1cmUoZS5waWN0dXJlLGwpfX19LHsiLi4vc3Rh'@; put 'dGljLXhmb3JtIjoxMjAsIi4vYmFzZS1jZWxsLWFuY2hvci14Zm9ybSI6NTYsIi4vY2VsbC1wb3NpdGlvbi14Zm9ybSI6NjEsIi4vZXh0LXhmb3JtIjo2NCwiLi9waWMteGZvcm0iOjY4fV0sNjg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3Jt'@; put 'IiksYT1zKCIuLi9zdGF0aWMteGZvcm0iKSxvPXMoIi4vYmxpcC1maWxsLXhmb3JtIikscj1zKCIuL252LXBpYy1wci14Zm9ybSIpLHQ9cygiLi9zcC1wciIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXsieGRyOm52UGljUHIiOm5l'@; put 'dyByLCJ4ZHI6YmxpcEZpbGwiOm5ldyBvLCJ4ZHI6c3BQciI6bmV3IGEodCl9fWdldCB0YWcoKXtyZXR1cm4ieGRyOnBpYyJ9cHJlcGFyZShlLGwpe2UuaW5kZXg9bC5pbmRleCsxfXJlbmRlcihlLGwpe2Uub3Blbk5vZGUodGhpcy50YWcpLHRoaXMubWFwWyJ4ZHI6bnZQaWNQciJdLnJlbmRl'@; put 'cihlLGwpLHRoaXMubWFwWyJ4ZHI6YmxpcEZpbGwiXS5yZW5kZXIoZSxsKSx0aGlzLm1hcFsieGRyOnNwUHIiXS5yZW5kZXIoZSxsKSxlLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihlKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihlKSwhMCk6KGUubmFtZT09PXRo'@; put 'aXMudGFnP3RoaXMucmVzZXQoKToodGhpcy5wYXJzZXI9dGhpcy5tYXBbZS5uYW1lXSx0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VPcGVuKGUpKSwhMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoZSl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGUp'@; put 'fHwodGhpcy5tZXJnZU1vZGVsKHRoaXMucGFyc2VyLm1vZGVsKSx0aGlzLnBhcnNlcj12b2lkIDApLCEwKTplIT09dGhpcy50YWd9fX0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi4vc3RhdGljLXhmb3JtIjoxMjAsIi4vYmxpcC1maWxsLXhmb3JtIjo1NywiLi9udi1waWMtcHIteGZvcm0iOjY2'@; put 'LCIuL3NwLXByIjo2OX1dLDY5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz17dGFnOiJ4ZHI6c3BQciIsYzpbe3RhZzoiYTp4ZnJtIixjOlt7dGFnOiJhOm9mZiIsJDp7eDoiMCIseToiMCJ9fSx7dGFnOiJhOmV4dCIsJDp7Y3g6IjAiLGN5OiIwIn19XX0se3RhZzoi'@; put 'YTpwcnN0R2VvbSIsJDp7cHJzdDoicmVjdCJ9LGM6W3t0YWc6ImE6YXZMc3QifV19XX19LHt9XSw3MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4vYmFzZS1jZWxsLWFuY2hvci14Zm9ybSIpLGE9cygiLi4vc3RhdGljLXhmb3JtIiksbz1zKCIuL2NlbGwtcG9z'@; put 'aXRpb24teGZvcm0iKSxyPXMoIi4vcGljLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9eyJ4ZHI6ZnJvbSI6bmV3IG8oe3RhZzoieGRyOmZyb20ifSksInhkcjp0byI6bmV3IG8oe3RhZzoieGRyOnRvIn0pLCJ4ZHI6cGlj'@; put 'IjpuZXcgciwieGRyOmNsaWVudERhdGEiOm5ldyBhKHt0YWc6InhkcjpjbGllbnREYXRhIn0pfX1nZXQgdGFnKCl7cmV0dXJuInhkcjp0d29DZWxsQW5jaG9yIn1wcmVwYXJlKHQsZSl7dGhpcy5tYXBbInhkcjpwaWMiXS5wcmVwYXJlKHQucGljdHVyZSxlKX1yZW5kZXIodCxlKXt0Lm9wZW5O'@; put 'b2RlKHRoaXMudGFnLHtlZGl0QXM6ZS5yYW5nZS5lZGl0QXN8fCJvbmVDZWxsIn0pLHRoaXMubWFwWyJ4ZHI6ZnJvbSJdLnJlbmRlcih0LGUucmFuZ2UudGwpLHRoaXMubWFwWyJ4ZHI6dG8iXS5yZW5kZXIodCxlLnJhbmdlLmJyKSx0aGlzLm1hcFsieGRyOnBpYyJdLnJlbmRlcih0LGUucGlj'@; put 'dHVyZSksdGhpcy5tYXBbInhkcjpjbGllbnREYXRhIl0ucmVuZGVyKHQse30pLHQuY2xvc2VOb2RlKCl9cGFyc2VDbG9zZSh0KXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlQ2xvc2UodCl8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwKTp0IT09dGhpcy50YWd8fCh0aGlz'@; put 'Lm1vZGVsLnJhbmdlLnRsPXRoaXMubWFwWyJ4ZHI6ZnJvbSJdLm1vZGVsLHRoaXMubW9kZWwucmFuZ2UuYnI9dGhpcy5tYXBbInhkcjp0byJdLm1vZGVsLHRoaXMubW9kZWwucGljdHVyZT10aGlzLm1hcFsieGRyOnBpYyJdLm1vZGVsLCExKX1yZWNvbmNpbGUodCxlKXt0Lm1lZGl1bT10aGlz'@; put 'LnJlY29uY2lsZVBpY3R1cmUodC5waWN0dXJlLGUpfX19LHsiLi4vc3RhdGljLXhmb3JtIjoxMjAsIi4vYmFzZS1jZWxsLWFuY2hvci14Zm9ybSI6NTYsIi4vY2VsbC1wb3NpdGlvbi14Zm9ybSI6NjEsIi4vcGljLXhmb3JtIjo2OH1dLDcxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3Qi'@; put 'O2NvbnN0IGI9cygiLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihhKXtzdXBlcigpLHRoaXMudGFnPWEudGFnLHRoaXMuYWx3YXlzPSEhYS5hbHdheXMsdGhpcy5jb3VudD1hLmNvdW50LHRoaXMuZW1wdHk9YS5lbXB0eSx0aGlzLiRjb3VudD1h'@; put 'LiRjb3VudHx8ImNvdW50Iix0aGlzLiQ9YS4kLHRoaXMuY2hpbGRYZm9ybT1hLmNoaWxkWGZvcm0sdGhpcy5tYXhJdGVtcz1hLm1heEl0ZW1zfXByZXBhcmUoYSxvKXtjb25zdHtjaGlsZFhmb3JtOnJ9PXRoaXM7YSYmYS5mb3JFYWNoKCh0LGUpPT57by5pbmRleD1lLHIucHJlcGFyZSh0LG8p'@; put 'fSl9cmVuZGVyKGEsbyl7aWYodGhpcy5hbHdheXN8fG8mJm8ubGVuZ3RoKXthLm9wZW5Ob2RlKHRoaXMudGFnLHRoaXMuJCksdGhpcy5jb3VudCYmYS5hZGRBdHRyaWJ1dGUodGhpcy4kY291bnQsbyYmby5sZW5ndGh8fDApO2NvbnN0e2NoaWxkWGZvcm06cn09dGhpczsob3x8W10pLmZvckVh'@; put 'Y2goKHQsZSk9PntyLnJlbmRlcihhLHQsZSl9KSxhLmNsb3NlTm9kZSgpfWVsc2UgdGhpcy5lbXB0eSYmYS5sZWFmTm9kZSh0aGlzLnRhZyl9cGFyc2VPcGVuKGEpe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VPcGVuKGEpLCEwKTphLm5hbWU9PT10aGlzLnRhZz8odGhp'@; put 'cy5tb2RlbD1bXSwhMCk6ISF0aGlzLmNoaWxkWGZvcm0ucGFyc2VPcGVuKGEpJiYodGhpcy5wYXJzZXI9dGhpcy5jaGlsZFhmb3JtLCEwKX1wYXJzZVRleHQoYSl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChhKX1wYXJzZUNsb3NlKGEpe2lmKHRoaXMucGFyc2VyKXtpZigh'@; put 'dGhpcy5wYXJzZXIucGFyc2VDbG9zZShhKSYmKHRoaXMubW9kZWwucHVzaCh0aGlzLnBhcnNlci5tb2RlbCksdGhpcy5wYXJzZXI9dm9pZCAwLHRoaXMubWF4SXRlbXMmJnRoaXMubW9kZWwubGVuZ3RoPnRoaXMubWF4SXRlbXMpKXRocm93IG5ldyBFcnJvcihgTWF4ICR7dGhpcy5jaGlsZFhm'@; put 'b3JtLnRhZ30gY291bnQgKCR7dGhpcy5tYXhJdGVtc30pIGV4Y2VlZGVkYCk7cmV0dXJuITB9cmV0dXJuITF9cmVjb25jaWxlKGEsbyl7aWYoYSl7Y29uc3R7Y2hpbGRYZm9ybTpyfT10aGlzO2EuZm9yRWFjaCh0PT57ci5yZWNvbmNpbGUodCxvKX0pfX19fSx7Ii4vYmFzZS14Zm9ybSI6MzJ9'@; put 'XSw3MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uLy4uL3V0aWxzL2NvbC1jYWNoZSIpLGE9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Z2V0IHRhZygpe3JldHVybiJhdXRvRmlsdGVyIn1yZW5kZXIobyxyKXtpZihy'@; put 'KWlmKCJzdHJpbmciPT10eXBlb2YgcilvLmxlYWZOb2RlKCJhdXRvRmlsdGVyIix7cmVmOnJ9KTtlbHNle2NvbnN0IHQ9ZnVuY3Rpb24obil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBuP246Yi5nZXRBZGRyZXNzKG4ucm93LG4uY29sdW1uKS5hZGRyZXNzfSxlPXQoci5mcm9tKSxsPXQoci50'@; put 'byk7ZSYmbCYmby5sZWFmTm9kZSgiYXV0b0ZpbHRlciIse3JlZjpgJHtlfToke2x9YH0pfX1wYXJzZU9wZW4obyl7ImF1dG9GaWx0ZXIiPT09by5uYW1lJiYodGhpcy5tb2RlbD1vLmF0dHJpYnV0ZXMucmVmKX19fSx7Ii4uLy4uLy4uL3V0aWxzL2NvbC1jYWNoZSI6MTksIi4uL2Jhc2UteGZv'@; put 'cm0iOjMyfV0sNzM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91dGlscy91dGlscyIpLGE9cygiLi4vYmFzZS14Zm9ybSIpLG89cygiLi4vLi4vLi4vZG9jL3JhbmdlIikscj1zKCIuLi8uLi8uLi9kb2MvZW51bXMiKSx0PXMoIi4uL3N0cmluZ3Mv'@; put 'cmljaC10ZXh0LXhmb3JtIik7ZnVuY3Rpb24gZShsKXtpZihudWxsPT1sKXJldHVybiByLlZhbHVlVHlwZS5OdWxsO2lmKGwgaW5zdGFuY2VvZiBTdHJpbmd8fCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gci5WYWx1ZVR5cGUuU3RyaW5nO2lmKCJudW1iZXIiPT10eXBlb2YgbClyZXR1cm4g'@; put 'ci5WYWx1ZVR5cGUuTnVtYmVyO2lmKCJib29sZWFuIj09dHlwZW9mIGwpcmV0dXJuIHIuVmFsdWVUeXBlLkJvb2xlYW47aWYobCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIHIuVmFsdWVUeXBlLkRhdGU7aWYobC50ZXh0JiZsLmh5cGVybGluaylyZXR1cm4gci5WYWx1ZVR5cGUuSHlwZXJsaW5r'@; put 'O2lmKGwuZm9ybXVsYSlyZXR1cm4gci5WYWx1ZVR5cGUuRm9ybXVsYTtpZihsLmVycm9yKXJldHVybiByLlZhbHVlVHlwZS5FcnJvcjt0aHJvdyBuZXcgRXJyb3IoIkkgY291bGQgbm90IHVuZGVyc3RhbmQgdHlwZSBvZiB2YWx1ZSIpfUUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Y29uc3Ry'@; put 'dWN0b3IoKXtzdXBlcigpLHRoaXMucmljaFRleHRYRm9ybT1uZXcgdH1nZXQgdGFnKCl7cmV0dXJuImMifXByZXBhcmUobCxuKXtjb25zdCBpPW4uc3R5bGVzLmFkZFN0eWxlTW9kZWwobC5zdHlsZXx8e30sKGg9bCkudHlwZT09PXIuVmFsdWVUeXBlLkZvcm11bGE/ZShoLnJlc3VsdCk6aC50'@; put 'eXBlKTt2YXIgaDtzd2l0Y2goaSYmKGwuc3R5bGVJZD1pKSxsLmNvbW1lbnQmJm4uY29tbWVudHMucHVzaCh7Li4ubC5jb21tZW50LHJlZjpsLmFkZHJlc3N9KSxsLnR5cGUpe2Nhc2Ugci5WYWx1ZVR5cGUuU3RyaW5nOmNhc2Ugci5WYWx1ZVR5cGUuUmljaFRleHQ6bi5zaGFyZWRTdHJpbmdz'@; put 'JiYobC5zc0lkPW4uc2hhcmVkU3RyaW5ncy5hZGQobC52YWx1ZSkpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuRGF0ZTpuLmRhdGUxOTA0JiYobC5kYXRlMTkwND0hMCk7YnJlYWs7Y2FzZSByLlZhbHVlVHlwZS5IeXBlcmxpbms6bi5zaGFyZWRTdHJpbmdzJiZudWxsIT1sLnRleHQmJihsLnNz'@; put 'SWQ9bi5zaGFyZWRTdHJpbmdzLmFkZChsLnRleHQpKSxuLmh5cGVybGlua3MucHVzaCh7YWRkcmVzczpsLmFkZHJlc3MsdGFyZ2V0OmwuaHlwZXJsaW5rLHRvb2x0aXA6bC50b29sdGlwfSk7YnJlYWs7Y2FzZSByLlZhbHVlVHlwZS5NZXJnZTpuLm1lcmdlcy5hZGQobCk7YnJlYWs7Y2FzZSBy'@; put 'LlZhbHVlVHlwZS5Gb3JtdWxhOmlmKG4uZGF0ZTE5MDQmJihsLmRhdGUxOTA0PSEwKSwic2hhcmVkIj09PWwuc2hhcmVUeXBlJiYobC5zaT1uLnNpRm9ybXVsYWUrKyksbC5mb3JtdWxhKW4uZm9ybXVsYWVbbC5hZGRyZXNzXT1sO2Vsc2UgaWYobC5zaGFyZWRGb3JtdWxhKXtjb25zdCBoPW4u'@; put 'Zm9ybXVsYWVbbC5zaGFyZWRGb3JtdWxhXTtpZighaCl0aHJvdyBuZXcgRXJyb3IoIlNoYXJlZCBGb3JtdWxhIG1hc3RlciBtdXN0IGV4aXN0IGFib3ZlIGFuZCBvciBsZWZ0IG9mIGNsb25lIGZvciBjZWxsICIrbC5hZGRyZXNzKTt2b2lkIDA9PT1oLnNpPyhoLnNoYXJlVHlwZT0ic2hhcmVk'@; put 'IixoLnNpPW4uc2lGb3JtdWxhZSsrLGgucmFuZ2U9bmV3IG8oaC5hZGRyZXNzLGwuYWRkcmVzcykpOmgucmFuZ2UmJmgucmFuZ2UuZXhwYW5kVG9BZGRyZXNzKGwuYWRkcmVzcyksbC5zaT1oLnNpfX19cmVuZGVyRm9ybXVsYShsLG4pe2xldCBpPW51bGw7c3dpdGNoKG4uc2hhcmVUeXBlKXtj'@; put 'YXNlInNoYXJlZCI6aT17dDoic2hhcmVkIixyZWY6bi5yZWZ8fG4ucmFuZ2UucmFuZ2Usc2k6bi5zaX07YnJlYWs7Y2FzZSJhcnJheSI6aT17dDoiYXJyYXkiLHJlZjpuLnJlZn07YnJlYWs7ZGVmYXVsdDp2b2lkIDAhPT1uLnNpJiYoaT17dDoic2hhcmVkIixzaTpuLnNpfSl9c3dpdGNoKGUo'@; put 'bi5yZXN1bHQpKXtjYXNlIHIuVmFsdWVUeXBlLk51bGw6bC5sZWFmTm9kZSgiZiIsaSxuLmZvcm11bGEpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuU3RyaW5nOmwuYWRkQXR0cmlidXRlKCJ0Iiwic3RyIiksbC5sZWFmTm9kZSgiZiIsaSxuLmZvcm11bGEpLGwubGVhZk5vZGUoInYiLG51bGws'@; put 'bi5yZXN1bHQpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuTnVtYmVyOmwubGVhZk5vZGUoImYiLGksbi5mb3JtdWxhKSxsLmxlYWZOb2RlKCJ2IixudWxsLG4ucmVzdWx0KTticmVhaztjYXNlIHIuVmFsdWVUeXBlLkJvb2xlYW46bC5hZGRBdHRyaWJ1dGUoInQiLCJiIiksbC5sZWFmTm9kZSgi'@; put 'ZiIsaSxuLmZvcm11bGEpLGwubGVhZk5vZGUoInYiLG51bGwsbi5yZXN1bHQ/MTowKTticmVhaztjYXNlIHIuVmFsdWVUeXBlLkVycm9yOmwuYWRkQXR0cmlidXRlKCJ0IiwiZSIpLGwubGVhZk5vZGUoImYiLGksbi5mb3JtdWxhKSxsLmxlYWZOb2RlKCJ2IixudWxsLG4ucmVzdWx0LmVycm9y'@; put 'KTticmVhaztjYXNlIHIuVmFsdWVUeXBlLkRhdGU6bC5sZWFmTm9kZSgiZiIsaSxuLmZvcm11bGEpLGwubGVhZk5vZGUoInYiLG51bGwsYi5kYXRlVG9FeGNlbChuLnJlc3VsdCxuLmRhdGUxOTA0KSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkkgY291bGQgbm90IHVuZGVyc3Rh'@; put 'bmQgdHlwZSBvZiB2YWx1ZSIpfX1yZW5kZXIobCxuKXtpZihuLnR5cGUhPT1yLlZhbHVlVHlwZS5OdWxsfHxuLnN0eWxlSWQpe3N3aXRjaChsLm9wZW5Ob2RlKCJjIiksbC5hZGRBdHRyaWJ1dGUoInIiLG4uYWRkcmVzcyksbi5zdHlsZUlkJiZsLmFkZEF0dHJpYnV0ZSgicyIsbi5zdHlsZUlk'@; put 'KSxuLnR5cGUpe2Nhc2Ugci5WYWx1ZVR5cGUuTnVsbDpicmVhaztjYXNlIHIuVmFsdWVUeXBlLk51bWJlcjpsLmxlYWZOb2RlKCJ2IixudWxsLG4udmFsdWUpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuQm9vbGVhbjpsLmFkZEF0dHJpYnV0ZSgidCIsImIiKSxsLmxlYWZOb2RlKCJ2IixudWxs'@; put 'LG4udmFsdWU/IjEiOiIwIik7YnJlYWs7Y2FzZSByLlZhbHVlVHlwZS5FcnJvcjpsLmFkZEF0dHJpYnV0ZSgidCIsImUiKSxsLmxlYWZOb2RlKCJ2IixudWxsLG4udmFsdWUuZXJyb3IpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuU3RyaW5nOmNhc2Ugci5WYWx1ZVR5cGUuUmljaFRleHQ6dm9p'@; put 'ZCAwIT09bi5zc0lkPyhsLmFkZEF0dHJpYnV0ZSgidCIsInMiKSxsLmxlYWZOb2RlKCJ2IixudWxsLG4uc3NJZCkpOm4udmFsdWUmJm4udmFsdWUucmljaFRleHQ/KGwuYWRkQXR0cmlidXRlKCJ0IiwiaW5saW5lU3RyIiksbC5vcGVuTm9kZSgiaXMiKSxuLnZhbHVlLnJpY2hUZXh0LmZvckVh'@; put 'Y2goaT0+e3RoaXMucmljaFRleHRYRm9ybS5yZW5kZXIobCxpKX0pLGwuY2xvc2VOb2RlKCJpcyIpKToobC5hZGRBdHRyaWJ1dGUoInQiLCJzdHIiKSxsLmxlYWZOb2RlKCJ2IixudWxsLG4udmFsdWUpKTticmVhaztjYXNlIHIuVmFsdWVUeXBlLkRhdGU6bC5sZWFmTm9kZSgidiIsbnVsbCxi'@; put 'LmRhdGVUb0V4Y2VsKG4udmFsdWUsbi5kYXRlMTkwNCkpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuSHlwZXJsaW5rOnZvaWQgMCE9PW4uc3NJZD8obC5hZGRBdHRyaWJ1dGUoInQiLCJzIiksbC5sZWFmTm9kZSgidiIsbnVsbCxuLnNzSWQpKToobC5hZGRBdHRyaWJ1dGUoInQiLCJzdHIiKSxs'@; put 'LmxlYWZOb2RlKCJ2IixudWxsLG4udGV4dCkpO2JyZWFrO2Nhc2Ugci5WYWx1ZVR5cGUuRm9ybXVsYTp0aGlzLnJlbmRlckZvcm11bGEobCxuKX1sLmNsb3NlTm9kZSgpfX1wYXJzZU9wZW4obCl7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlT3BlbihsKSwhMDtzd2l0'@; put 'Y2gobC5uYW1lKXtjYXNlImMiOnJldHVybiB0aGlzLm1vZGVsPXthZGRyZXNzOmwuYXR0cmlidXRlcy5yfSx0aGlzLnQ9bC5hdHRyaWJ1dGVzLnQsbC5hdHRyaWJ1dGVzLnMmJih0aGlzLm1vZGVsLnN0eWxlSWQ9cGFyc2VJbnQobC5hdHRyaWJ1dGVzLnMsMTApKSwhMDtjYXNlImYiOnJldHVy'@; put 'biB0aGlzLmN1cnJlbnROb2RlPSJmIix0aGlzLm1vZGVsLnNpPWwuYXR0cmlidXRlcy5zaSx0aGlzLm1vZGVsLnNoYXJlVHlwZT1sLmF0dHJpYnV0ZXMudCx0aGlzLm1vZGVsLnJlZj1sLmF0dHJpYnV0ZXMucmVmLCEwO2Nhc2UidiI6cmV0dXJuIHRoaXMuY3VycmVudE5vZGU9InYiLCEwO2Nh'@; put 'c2UidCI6cmV0dXJuIHRoaXMuY3VycmVudE5vZGU9InQiLCEwO2Nhc2UiciI6cmV0dXJuIHRoaXMucGFyc2VyPXRoaXMucmljaFRleHRYRm9ybSx0aGlzLnBhcnNlci5wYXJzZU9wZW4obCksITA7ZGVmYXVsdDpyZXR1cm4hMX19cGFyc2VUZXh0KGwpe2lmKHRoaXMucGFyc2VyKXRoaXMucGFy'@; put 'c2VyLnBhcnNlVGV4dChsKTtlbHNlIHN3aXRjaCh0aGlzLmN1cnJlbnROb2RlKXtjYXNlImYiOnRoaXMubW9kZWwuZm9ybXVsYT10aGlzLm1vZGVsLmZvcm11bGE/dGhpcy5tb2RlbC5mb3JtdWxhK2w6bDticmVhaztjYXNlInYiOmNhc2UidCI6dGhpcy5tb2RlbC52YWx1ZSYmdGhpcy5tb2Rl'@; put 'bC52YWx1ZS5yaWNoVGV4dD90aGlzLm1vZGVsLnZhbHVlLnJpY2hUZXh0LnRleHQ9dGhpcy5tb2RlbC52YWx1ZS5yaWNoVGV4dC50ZXh0P3RoaXMubW9kZWwudmFsdWUucmljaFRleHQudGV4dCtsOmw6dGhpcy5tb2RlbC52YWx1ZT10aGlzLm1vZGVsLnZhbHVlP3RoaXMubW9kZWwudmFsdWUr'@; put 'bDpsfX1wYXJzZUNsb3NlKGwpe3N3aXRjaChsKXtjYXNlImMiOntjb25zdHttb2RlbDpufT10aGlzO2lmKG4uZm9ybXVsYXx8bi5zaGFyZVR5cGUpbi50eXBlPXIuVmFsdWVUeXBlLkZvcm11bGEsbi52YWx1ZSYmKG4ucmVzdWx0PSJzdHIiPT09dGhpcy50P2IueG1sRGVjb2RlKG4udmFsdWUp'@; put 'OiJiIj09PXRoaXMudD8wIT09cGFyc2VJbnQobi52YWx1ZSwxMCk6ImUiPT09dGhpcy50P3tlcnJvcjpuLnZhbHVlfTpwYXJzZUZsb2F0KG4udmFsdWUpLG4udmFsdWU9dm9pZCAwKTtlbHNlIGlmKHZvaWQgMCE9PW4udmFsdWUpc3dpdGNoKHRoaXMudCl7Y2FzZSJzIjpuLnR5cGU9ci5WYWx1'@; put 'ZVR5cGUuU3RyaW5nLG4udmFsdWU9cGFyc2VJbnQobi52YWx1ZSwxMCk7YnJlYWs7Y2FzZSJzdHIiOm4udHlwZT1yLlZhbHVlVHlwZS5TdHJpbmcsbi52YWx1ZT1iLnhtbERlY29kZShuLnZhbHVlKTticmVhaztjYXNlImlubGluZVN0ciI6bi50eXBlPXIuVmFsdWVUeXBlLlN0cmluZzticmVh'@; put 'aztjYXNlImIiOm4udHlwZT1yLlZhbHVlVHlwZS5Cb29sZWFuLG4udmFsdWU9MCE9PXBhcnNlSW50KG4udmFsdWUsMTApO2JyZWFrO2Nhc2UiZSI6bi50eXBlPXIuVmFsdWVUeXBlLkVycm9yLG4udmFsdWU9e2Vycm9yOm4udmFsdWV9O2JyZWFrO2RlZmF1bHQ6bi50eXBlPXIuVmFsdWVUeXBl'@; put 'Lk51bWJlcixuLnZhbHVlPXBhcnNlRmxvYXQobi52YWx1ZSl9ZWxzZSBuLnR5cGU9bi5zdHlsZUlkP3IuVmFsdWVUeXBlLk51bGw6ci5WYWx1ZVR5cGUuTWVyZ2U7cmV0dXJuITF9Y2FzZSJmIjpjYXNlInYiOmNhc2UiaXMiOnJldHVybiB0aGlzLmN1cnJlbnROb2RlPXZvaWQgMCwhMDtjYXNl'@; put 'InQiOnJldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShsKSwhMCk6KHRoaXMuY3VycmVudE5vZGU9dm9pZCAwLCEwKTtjYXNlInIiOnJldHVybiB0aGlzLm1vZGVsLnZhbHVlPXRoaXMubW9kZWwudmFsdWV8fHt9LHRoaXMubW9kZWwudmFsdWUucmljaFRleHQ9dGhp'@; put 'cy5tb2RlbC52YWx1ZS5yaWNoVGV4dHx8W10sdGhpcy5tb2RlbC52YWx1ZS5yaWNoVGV4dC5wdXNoKHRoaXMucGFyc2VyLm1vZGVsKSx0aGlzLnBhcnNlcj12b2lkIDAsdGhpcy5jdXJyZW50Tm9kZT12b2lkIDAsITA7ZGVmYXVsdDpyZXR1cm4hIXRoaXMucGFyc2VyJiYodGhpcy5wYXJzZXIu'@; put 'cGFyc2VDbG9zZShsKSwhMCl9fXJlY29uY2lsZShsLG4pe2NvbnN0IGk9bC5zdHlsZUlkJiZuLnN0eWxlcyYmbi5zdHlsZXMuZ2V0U3R5bGVNb2RlbChsLnN0eWxlSWQpO3N3aXRjaChpJiYobC5zdHlsZT1pKSx2b2lkIDAhPT1sLnN0eWxlSWQmJihsLnN0eWxlSWQ9dm9pZCAwKSxsLnR5cGUp'@; put 'e2Nhc2Ugci5WYWx1ZVR5cGUuU3RyaW5nOiJudW1iZXIiPT10eXBlb2YgbC52YWx1ZSYmbi5zaGFyZWRTdHJpbmdzJiYobC52YWx1ZT1uLnNoYXJlZFN0cmluZ3MuZ2V0U3RyaW5nKGwudmFsdWUpKSxsLnZhbHVlLnJpY2hUZXh0JiYobC50eXBlPXIuVmFsdWVUeXBlLlJpY2hUZXh0KTticmVh'@; put 'aztjYXNlIHIuVmFsdWVUeXBlLk51bWJlcjppJiZiLmlzRGF0ZUZtdChpLm51bUZtdCkmJihsLnR5cGU9ci5WYWx1ZVR5cGUuRGF0ZSxsLnZhbHVlPWIuZXhjZWxUb0RhdGUobC52YWx1ZSxuLmRhdGUxOTA0KSk7YnJlYWs7Y2FzZSByLlZhbHVlVHlwZS5Gb3JtdWxhOnZvaWQgMCE9PWwucmVz'@; put 'dWx0JiZpJiZiLmlzRGF0ZUZtdChpLm51bUZtdCkmJihsLnJlc3VsdD1iLmV4Y2VsVG9EYXRlKGwucmVzdWx0LG4uZGF0ZTE5MDQpKSwic2hhcmVkIj09PWwuc2hhcmVUeXBlJiYobC5yZWY/bi5mb3JtdWxhZVtsLnNpXT1sLmFkZHJlc3M6KGwuc2hhcmVkRm9ybXVsYT1uLmZvcm11bGFlW2wu'@; put 'c2ldLGRlbGV0ZSBsLnNoYXJlVHlwZSksZGVsZXRlIGwuc2kpfWNvbnN0IGg9bi5oeXBlcmxpbmtNYXBbbC5hZGRyZXNzXTtoJiYobC50eXBlPT09ci5WYWx1ZVR5cGUuRm9ybXVsYT8obC50ZXh0PWwucmVzdWx0LGwucmVzdWx0PXZvaWQgMCk6KGwudGV4dD1sLnZhbHVlLGwudmFsdWU9dm9p'@; put 'ZCAwKSxsLnR5cGU9ci5WYWx1ZVR5cGUuSHlwZXJsaW5rLGwuaHlwZXJsaW5rPWgpO2NvbnN0IGY9bi5jb21tZW50c01hcCYmbi5jb21tZW50c01hcFtsLmFkZHJlc3NdO2YmJihsLmNvbW1lbnQ9Zil9fX0seyIuLi8uLi8uLi9kb2MvZW51bXMiOjcsIi4uLy4uLy4uL2RvYy9yYW5nZSI6MTAs'@; put 'Ii4uLy4uLy4uL3V0aWxzL3V0aWxzIjoyNywiLi4vYmFzZS14Zm9ybSI6MzIsIi4uL3N0cmluZ3MvcmljaC10ZXh0LXhmb3JtIjoxMjJ9XSw3NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5k'@; put 'cyBie2dldCB0YWcoKXtyZXR1cm4ieDE0OmNmSWNvbiJ9cmVuZGVyKGEsbyl7YS5sZWFmTm9kZSh0aGlzLnRhZyx7aWNvblNldDpvLmljb25TZXQsaWNvbklkOm8uaWNvbklkfSl9cGFyc2VPcGVuKGEpe2xldHthdHRyaWJ1dGVzOm99PWE7dGhpcy5tb2RlbD17aWNvblNldDpvLmljb25TZXQs'@; put 'aWNvbklkOmIudG9JbnRWYWx1ZShvLmljb25JZCl9fXBhcnNlQ2xvc2UoYSl7cmV0dXJuIGEhPT10aGlzLnRhZ319fSx7Ii4uLy4uL2Jhc2UteGZvcm0iOjMyfV0sNzU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3R7djQ6Yn09cygidXVpZCIpLGE9cygiLi4vLi4vYmFzZS14'@; put 'Zm9ybSIpLG89cygiLi4vLi4vY29tcG9zaXRlLXhmb3JtIikscj1zKCIuL2RhdGFiYXItZXh0LXhmb3JtIiksdD1zKCIuL2ljb24tc2V0LWV4dC14Zm9ybSIpLGU9eyIzVHJpYW5nbGVzIjohMCwiM1N0YXJzIjohMCwiNUJveGVzIjohMH07Y2xhc3MgbCBleHRlbmRzIG97Y29uc3RydWN0b3Io'@; put 'KXtzdXBlcigpLHRoaXMubWFwPXsieDE0OmRhdGFCYXIiOnRoaXMuZGF0YWJhclhmb3JtPW5ldyByLCJ4MTQ6aWNvblNldCI6dGhpcy5pY29uU2V0WGZvcm09bmV3IHR9fWdldCB0YWcoKXtyZXR1cm4ieDE0OmNmUnVsZSJ9c3RhdGljIGlzRXh0KGkpe3JldHVybiJkYXRhQmFyIj09PWkudHlw'@; put 'ZT9yLmlzRXh0KGkpOiEoImljb25TZXQiIT09aS50eXBlfHwhaS5jdXN0b20mJiFlW2kuaWNvblNldF0pfXByZXBhcmUoaSl7bC5pc0V4dChpKSYmKGkueDE0SWQ9YHske2IoKX19YC50b1VwcGVyQ2FzZSgpKX1yZW5kZXIoaSxoKXtpZihsLmlzRXh0KGgpKXN3aXRjaChoLnR5cGUpe2Nhc2Ui'@; put 'ZGF0YUJhciI6dGhpcy5yZW5kZXJEYXRhQmFyKGksaCk7YnJlYWs7Y2FzZSJpY29uU2V0Ijp0aGlzLnJlbmRlckljb25TZXQoaSxoKX19cmVuZGVyRGF0YUJhcihpLGgpe2kub3Blbk5vZGUodGhpcy50YWcse3R5cGU6ImRhdGFCYXIiLGlkOmgueDE0SWR9KSx0aGlzLmRhdGFiYXJYZm9ybS5y'@; put 'ZW5kZXIoaSxoKSxpLmNsb3NlTm9kZSgpfXJlbmRlckljb25TZXQoaSxoKXtpLm9wZW5Ob2RlKHRoaXMudGFnLHt0eXBlOiJpY29uU2V0Iixwcmlvcml0eTpoLnByaW9yaXR5LGlkOmgueDE0SWR8fGB7JHtiKCl9fWB9KSx0aGlzLmljb25TZXRYZm9ybS5yZW5kZXIoaSxoKSxpLmNsb3NlTm9k'@; put 'ZSgpfWNyZWF0ZU5ld01vZGVsKGkpe2xldHthdHRyaWJ1dGVzOmh9PWk7cmV0dXJue3R5cGU6aC50eXBlLHgxNElkOmguaWQscHJpb3JpdHk6YS50b0ludFZhbHVlKGgucHJpb3JpdHkpfX1vblBhcnNlckNsb3NlKGksaCl7T2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLGgubW9kZWwpfX1FLmV4'@; put 'cG9ydHM9bH0seyIuLi8uLi9iYXNlLXhmb3JtIjozMiwiLi4vLi4vY29tcG9zaXRlLXhmb3JtIjo0OCwiLi9kYXRhYmFyLWV4dC14Zm9ybSI6NzksIi4vaWNvbi1zZXQtZXh0LXhmb3JtIjo4MSx1dWlkOjUyOH1dLDc2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygi'@; put 'Li4vLi4vY29tcG9zaXRlLXhmb3JtIiksYT1zKCIuL2YtZXh0LXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9eyJ4bTpmIjp0aGlzLmZFeHRYZm9ybT1uZXcgYX19Z2V0IHRhZygpe3JldHVybiJ4MTQ6Y2Z2byJ9cmVuZGVy'@; put 'KG8scil7by5vcGVuTm9kZSh0aGlzLnRhZyx7dHlwZTpyLnR5cGV9KSx2b2lkIDAhPT1yLnZhbHVlJiZ0aGlzLmZFeHRYZm9ybS5yZW5kZXIobyxyLnZhbHVlKSxvLmNsb3NlTm9kZSgpfWNyZWF0ZU5ld01vZGVsKG8pe3JldHVybnt0eXBlOm8uYXR0cmlidXRlcy50eXBlfX1vblBhcnNlckNs'@; put 'b3NlKG8scil7InhtOmYiPT09byYmKHRoaXMubW9kZWwudmFsdWU9ci5tb2RlbD9wYXJzZUZsb2F0KHIubW9kZWwpOjApfX19LHsiLi4vLi4vY29tcG9zaXRlLXhmb3JtIjo0OCwiLi9mLWV4dC14Zm9ybSI6ODB9XSw3NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMo'@; put 'Ii4uLy4uL2NvbXBvc2l0ZS14Zm9ybSIpLGE9cygiLi9zcXJlZi1leHQteGZvcm0iKSxvPXMoIi4vY2YtcnVsZS1leHQteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17InhtOnNxcmVmIjp0aGlzLnNxUmVmPW5ldyBhLCJ4'@; put 'MTQ6Y2ZSdWxlIjp0aGlzLmNmUnVsZT1uZXcgb319Z2V0IHRhZygpe3JldHVybiJ4MTQ6Y29uZGl0aW9uYWxGb3JtYXR0aW5nIn1wcmVwYXJlKHIsdCl7ci5ydWxlcy5mb3JFYWNoKGU9Pnt0aGlzLmNmUnVsZS5wcmVwYXJlKGUsdCl9KX1yZW5kZXIocix0KXt0LnJ1bGVzLnNvbWUoby5pc0V4'@; put 'dCkmJihyLm9wZW5Ob2RlKHRoaXMudGFnLHsieG1sbnM6eG0iOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4ifSksdC5ydWxlcy5maWx0ZXIoby5pc0V4dCkuZm9yRWFjaChlPT50aGlzLmNmUnVsZS5yZW5kZXIocixlKSksdGhpcy5zcVJlZi5y'@; put 'ZW5kZXIocix0LnJlZiksci5jbG9zZU5vZGUoKSl9Y3JlYXRlTmV3TW9kZWwoKXtyZXR1cm57cnVsZXM6W119fW9uUGFyc2VyQ2xvc2Uocix0KXtzd2l0Y2gocil7Y2FzZSJ4bTpzcXJlZiI6dGhpcy5tb2RlbC5yZWY9dC5tb2RlbDticmVhaztjYXNlIngxNDpjZlJ1bGUiOnRoaXMubW9kZWwu'@; put 'cnVsZXMucHVzaCh0Lm1vZGVsKX19fX0seyIuLi8uLi9jb21wb3NpdGUteGZvcm0iOjQ4LCIuL2NmLXJ1bGUtZXh0LXhmb3JtIjo3NSwiLi9zcXJlZi1leHQteGZvcm0iOjgyfV0sNzg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9jb21wb3NpdGUteGZv'@; put 'cm0iKSxhPXMoIi4vY2YtcnVsZS1leHQteGZvcm0iKSxvPXMoIi4vY29uZGl0aW9uYWwtZm9ybWF0dGluZy1leHQteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17IngxNDpjb25kaXRpb25hbEZvcm1hdHRpbmciOnRoaXMu'@; put 'Y2ZYZm9ybT1uZXcgb319Z2V0IHRhZygpe3JldHVybiJ4MTQ6Y29uZGl0aW9uYWxGb3JtYXR0aW5ncyJ9aGFzQ29udGVudChyKXtyZXR1cm4gdm9pZCAwPT09ci5oYXNFeHRDb250ZW50JiYoci5oYXNFeHRDb250ZW50PXIuc29tZSh0PT50LnJ1bGVzLnNvbWUoYS5pc0V4dCkpKSxyLmhhc0V4'@; put 'dENvbnRlbnR9cHJlcGFyZShyLHQpe3IuZm9yRWFjaChlPT57dGhpcy5jZlhmb3JtLnByZXBhcmUoZSx0KX0pfXJlbmRlcihyLHQpe3RoaXMuaGFzQ29udGVudCh0KSYmKHIub3Blbk5vZGUodGhpcy50YWcpLHQuZm9yRWFjaChlPT50aGlzLmNmWGZvcm0ucmVuZGVyKHIsZSkpLHIuY2xvc2VO'@; put 'b2RlKCkpfWNyZWF0ZU5ld01vZGVsKCl7cmV0dXJuW119b25QYXJzZXJDbG9zZShyLHQpe3RoaXMubW9kZWwucHVzaCh0Lm1vZGVsKX19fSx7Ii4uLy4uL2NvbXBvc2l0ZS14Zm9ybSI6NDgsIi4vY2YtcnVsZS1leHQteGZvcm0iOjc1LCIuL2NvbmRpdGlvbmFsLWZvcm1hdHRpbmctZXh0LXhm'@; put 'b3JtIjo3N31dLDc5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vYmFzZS14Zm9ybSIpLGE9cygiLi4vLi4vY29tcG9zaXRlLXhmb3JtIiksbz1zKCIuLi8uLi9zdHlsZS9jb2xvci14Zm9ybSIpLHI9cygiLi9jZnZvLWV4dC14Zm9ybSIpO0UuZXhwb3J0'@; put 'cz1jbGFzcyBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXsieDE0OmNmdm8iOnRoaXMuY2Z2b1hmb3JtPW5ldyByLCJ4MTQ6Ym9yZGVyQ29sb3IiOnRoaXMuYm9yZGVyQ29sb3JYZm9ybT1uZXcgbygieDE0OmJvcmRlckNvbG9yIiksIngxNDpuZWdhdGl2ZUJvcmRl'@; put 'ckNvbG9yIjp0aGlzLm5lZ2F0aXZlQm9yZGVyQ29sb3JYZm9ybT1uZXcgbygieDE0Om5lZ2F0aXZlQm9yZGVyQ29sb3IiKSwieDE0Om5lZ2F0aXZlRmlsbENvbG9yIjp0aGlzLm5lZ2F0aXZlRmlsbENvbG9yWGZvcm09bmV3IG8oIngxNDpuZWdhdGl2ZUZpbGxDb2xvciIpLCJ4MTQ6YXhpc0Nv'@; put 'bG9yIjp0aGlzLmF4aXNDb2xvclhmb3JtPW5ldyBvKCJ4MTQ6YXhpc0NvbG9yIil9fXN0YXRpYyBpc0V4dCh0KXtyZXR1cm4hdC5ncmFkaWVudH1nZXQgdGFnKCl7cmV0dXJuIngxNDpkYXRhQmFyIn1yZW5kZXIodCxlKXt0Lm9wZW5Ob2RlKHRoaXMudGFnLHttaW5MZW5ndGg6Yi50b0ludEF0'@; put 'dHJpYnV0ZShlLm1pbkxlbmd0aCwwLCEwKSxtYXhMZW5ndGg6Yi50b0ludEF0dHJpYnV0ZShlLm1heExlbmd0aCwxMDAsITApLGJvcmRlcjpiLnRvQm9vbEF0dHJpYnV0ZShlLmJvcmRlciwhMSksZ3JhZGllbnQ6Yi50b0Jvb2xBdHRyaWJ1dGUoZS5ncmFkaWVudCwhMCksbmVnYXRpdmVCYXJD'@; put 'b2xvclNhbWVBc1Bvc2l0aXZlOmIudG9Cb29sQXR0cmlidXRlKGUubmVnYXRpdmVCYXJDb2xvclNhbWVBc1Bvc2l0aXZlLCEwKSxuZWdhdGl2ZUJhckJvcmRlckNvbG9yU2FtZUFzUG9zaXRpdmU6Yi50b0Jvb2xBdHRyaWJ1dGUoZS5uZWdhdGl2ZUJhckJvcmRlckNvbG9yU2FtZUFzUG9zaXRp'@; put 'dmUsITApLGF4aXNQb3NpdGlvbjpiLnRvQXR0cmlidXRlKGUuYXhpc1Bvc2l0aW9uLCJhdXRvIiksZGlyZWN0aW9uOmIudG9BdHRyaWJ1dGUoZS5kaXJlY3Rpb24sImxlZnRUb1JpZ2h0Iil9KSxlLmNmdm8uZm9yRWFjaChsPT57dGhpcy5jZnZvWGZvcm0ucmVuZGVyKHQsbCl9KSx0aGlzLmJv'@; put 'cmRlckNvbG9yWGZvcm0ucmVuZGVyKHQsZS5ib3JkZXJDb2xvciksdGhpcy5uZWdhdGl2ZUJvcmRlckNvbG9yWGZvcm0ucmVuZGVyKHQsZS5uZWdhdGl2ZUJvcmRlckNvbG9yKSx0aGlzLm5lZ2F0aXZlRmlsbENvbG9yWGZvcm0ucmVuZGVyKHQsZS5uZWdhdGl2ZUZpbGxDb2xvciksdGhpcy5h'@; put 'eGlzQ29sb3JYZm9ybS5yZW5kZXIodCxlLmF4aXNDb2xvciksdC5jbG9zZU5vZGUoKX1jcmVhdGVOZXdNb2RlbCh0KXtsZXR7YXR0cmlidXRlczplfT10O3JldHVybntjZnZvOltdLG1pbkxlbmd0aDpiLnRvSW50VmFsdWUoZS5taW5MZW5ndGgsMCksbWF4TGVuZ3RoOmIudG9JbnRWYWx1ZShl'@; put 'Lm1heExlbmd0aCwxMDApLGJvcmRlcjpiLnRvQm9vbFZhbHVlKGUuYm9yZGVyLCExKSxncmFkaWVudDpiLnRvQm9vbFZhbHVlKGUuZ3JhZGllbnQsITApLG5lZ2F0aXZlQmFyQ29sb3JTYW1lQXNQb3NpdGl2ZTpiLnRvQm9vbFZhbHVlKGUubmVnYXRpdmVCYXJDb2xvclNhbWVBc1Bvc2l0aXZl'@; put 'LCEwKSxuZWdhdGl2ZUJhckJvcmRlckNvbG9yU2FtZUFzUG9zaXRpdmU6Yi50b0Jvb2xWYWx1ZShlLm5lZ2F0aXZlQmFyQm9yZGVyQ29sb3JTYW1lQXNQb3NpdGl2ZSwhMCksYXhpc1Bvc2l0aW9uOmIudG9TdHJpbmdWYWx1ZShlLmF4aXNQb3NpdGlvbiwiYXV0byIpLGRpcmVjdGlvbjpiLnRv'@; put 'U3RyaW5nVmFsdWUoZS5kaXJlY3Rpb24sImxlZnRUb1JpZ2h0Iil9fW9uUGFyc2VyQ2xvc2UodCxlKXtjb25zdFssbF09dC5zcGxpdCgiOiIpOyJjZnZvIj09PWw/dGhpcy5tb2RlbC5jZnZvLnB1c2goZS5tb2RlbCk6dGhpcy5tb2RlbFtsXT1lLm1vZGVsfX19LHsiLi4vLi4vYmFzZS14Zm9y'@; put 'bSI6MzIsIi4uLy4uL2NvbXBvc2l0ZS14Zm9ybSI6NDgsIi4uLy4uL3N0eWxlL2NvbG9yLXhmb3JtIjoxMjgsIi4vY2Z2by1leHQteGZvcm0iOjc2fV0sODA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNz'@; put 'IGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuInhtOmYifXJlbmRlcihhLG8pe2EubGVhZk5vZGUodGhpcy50YWcsbnVsbCxvKX1wYXJzZU9wZW4oKXt0aGlzLm1vZGVsPSIifXBhcnNlVGV4dChhKXt0aGlzLm1vZGVsKz1hfXBhcnNlQ2xvc2UoYSl7cmV0dXJuIGEhPT10aGlzLnRhZ319fSx7'@; put 'Ii4uLy4uL2Jhc2UteGZvcm0iOjMyfV0sODE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9iYXNlLXhmb3JtIiksYT1zKCIuLi8uLi9jb21wb3NpdGUteGZvcm0iKSxvPXMoIi4vY2Z2by1leHQteGZvcm0iKSxyPXMoIi4vY2YtaWNvbi1leHQteGZvcm0i'@; put 'KTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17IngxNDpjZnZvIjp0aGlzLmNmdm9YZm9ybT1uZXcgbywieDE0OmNmSWNvbiI6dGhpcy5jZkljb25YZm9ybT1uZXcgcn19Z2V0IHRhZygpe3JldHVybiJ4MTQ6aWNvblNldCJ9cmVuZGVy'@; put 'KHQsZSl7dC5vcGVuTm9kZSh0aGlzLnRhZyx7aWNvblNldDpiLnRvU3RyaW5nQXR0cmlidXRlKGUuaWNvblNldCkscmV2ZXJzZTpiLnRvQm9vbEF0dHJpYnV0ZShlLnJldmVyc2UsITEpLHNob3dWYWx1ZTpiLnRvQm9vbEF0dHJpYnV0ZShlLnNob3dWYWx1ZSwhMCksY3VzdG9tOmIudG9Cb29s'@; put 'QXR0cmlidXRlKGUuaWNvbnMsITEpfSksZS5jZnZvLmZvckVhY2gobD0+e3RoaXMuY2Z2b1hmb3JtLnJlbmRlcih0LGwpfSksZS5pY29ucyYmZS5pY29ucy5mb3JFYWNoKChsLG4pPT57bC5pY29uSWQ9bix0aGlzLmNmSWNvblhmb3JtLnJlbmRlcih0LGwpfSksdC5jbG9zZU5vZGUoKX1jcmVh'@; put 'dGVOZXdNb2RlbCh0KXtsZXR7YXR0cmlidXRlczplfT10O3JldHVybntjZnZvOltdLGljb25TZXQ6Yi50b1N0cmluZ1ZhbHVlKGUuaWNvblNldCwiM1RyYWZmaWNMaWdodHMiKSxyZXZlcnNlOmIudG9Cb29sVmFsdWUoZS5yZXZlcnNlLCExKSxzaG93VmFsdWU6Yi50b0Jvb2xWYWx1ZShlLnNo'@; put 'b3dWYWx1ZSwhMCl9fW9uUGFyc2VyQ2xvc2UodCxlKXtjb25zdFssbF09dC5zcGxpdCgiOiIpO3N3aXRjaChsKXtjYXNlImNmdm8iOnRoaXMubW9kZWwuY2Z2by5wdXNoKGUubW9kZWwpO2JyZWFrO2Nhc2UiY2ZJY29uIjp0aGlzLm1vZGVsLmljb25zfHwodGhpcy5tb2RlbC5pY29ucz1bXSks'@; put 'dGhpcy5tb2RlbC5pY29ucy5wdXNoKGUubW9kZWwpO2JyZWFrO2RlZmF1bHQ6dGhpcy5tb2RlbFtsXT1lLm1vZGVsfX19fSx7Ii4uLy4uL2Jhc2UteGZvcm0iOjMyLCIuLi8uLi9jb21wb3NpdGUteGZvcm0iOjQ4LCIuL2NmLWljb24tZXh0LXhmb3JtIjo3NCwiLi9jZnZvLWV4dC14Zm9ybSI6'@; put 'NzZ9XSw4MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2dldCB0YWcoKXtyZXR1cm4ieG06c3FyZWYifXJlbmRlcihhLG8pe2EubGVhZk5vZGUodGhpcy50YWcsbnVsbCxvKX1wYXJz'@; put 'ZU9wZW4oKXt0aGlzLm1vZGVsPSIifXBhcnNlVGV4dChhKXt0aGlzLm1vZGVsKz1hfXBhcnNlQ2xvc2UoYSl7cmV0dXJuIGEhPT10aGlzLnRhZ319fSx7Ii4uLy4uL2Jhc2UteGZvcm0iOjMyfV0sODM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9iYXNl'@; put 'LXhmb3JtIiksYT1zKCIuLi8uLi9jb21wb3NpdGUteGZvcm0iKSxvPXMoIi4uLy4uLy4uLy4uL2RvYy9yYW5nZSIpLHI9cygiLi9kYXRhYmFyLXhmb3JtIiksdD1zKCIuL2V4dC1sc3QtcmVmLXhmb3JtIiksZT1zKCIuL2Zvcm11bGEteGZvcm0iKSxsPXMoIi4vY29sb3Itc2NhbGUteGZvcm0i'@; put 'KSxuPXMoIi4vaWNvbi1zZXQteGZvcm0iKSxpPXsiM1RyaWFuZ2xlcyI6ITAsIjNTdGFycyI6ITAsIjVCb3hlcyI6ITB9LGg9dT0+e2NvbnN0e3R5cGU6cCxvcGVyYXRvcjpkfT11O3N3aXRjaChwKXtjYXNlImNvbnRhaW5zVGV4dCI6Y2FzZSJjb250YWluc0JsYW5rcyI6Y2FzZSJub3RDb250'@; put 'YWluc0JsYW5rcyI6Y2FzZSJjb250YWluc0Vycm9ycyI6Y2FzZSJub3RDb250YWluc0Vycm9ycyI6cmV0dXJue3R5cGU6ImNvbnRhaW5zVGV4dCIsb3BlcmF0b3I6cH07ZGVmYXVsdDpyZXR1cm57dHlwZTpwLG9wZXJhdG9yOmR9fX07Y2xhc3MgZiBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtz'@; put 'dXBlcigpLHRoaXMubWFwPXtkYXRhQmFyOnRoaXMuZGF0YWJhclhmb3JtPW5ldyByLGV4dExzdDp0aGlzLmV4dExzdFJlZlhmb3JtPW5ldyB0LGZvcm11bGE6dGhpcy5mb3JtdWxhWGZvcm09bmV3IGUsY29sb3JTY2FsZTp0aGlzLmNvbG9yU2NhbGVYZm9ybT1uZXcgbCxpY29uU2V0OnRoaXMu'@; put 'aWNvblNldFhmb3JtPW5ldyBufX1nZXQgdGFnKCl7cmV0dXJuImNmUnVsZSJ9c3RhdGljIGlzUHJpbWl0aXZlKHApe3JldHVybiJpY29uU2V0IiE9PXAudHlwZXx8IXAuY3VzdG9tJiYhaVtwLmljb25TZXRdfXJlbmRlcihwLGQpe3N3aXRjaChkLnR5cGUpe2Nhc2UiZXhwcmVzc2lvbiI6dGhp'@; put 'cy5yZW5kZXJFeHByZXNzaW9uKHAsZCk7YnJlYWs7Y2FzZSJjZWxsSXMiOnRoaXMucmVuZGVyQ2VsbElzKHAsZCk7YnJlYWs7Y2FzZSJ0b3AxMCI6dGhpcy5yZW5kZXJUb3AxMChwLGQpO2JyZWFrO2Nhc2UiYWJvdmVBdmVyYWdlIjp0aGlzLnJlbmRlckFib3ZlQXZlcmFnZShwLGQpO2JyZWFr'@; put 'O2Nhc2UiZGF0YUJhciI6dGhpcy5yZW5kZXJEYXRhQmFyKHAsZCk7YnJlYWs7Y2FzZSJjb2xvclNjYWxlIjp0aGlzLnJlbmRlckNvbG9yU2NhbGUocCxkKTticmVhaztjYXNlImljb25TZXQiOnRoaXMucmVuZGVySWNvblNldChwLGQpO2JyZWFrO2Nhc2UiY29udGFpbnNUZXh0Ijp0aGlzLnJl'@; put 'bmRlclRleHQocCxkKTticmVhaztjYXNlInRpbWVQZXJpb2QiOnRoaXMucmVuZGVyVGltZVBlcmlvZChwLGQpfX1yZW5kZXJFeHByZXNzaW9uKHAsZCl7cC5vcGVuTm9kZSh0aGlzLnRhZyx7dHlwZToiZXhwcmVzc2lvbiIsZHhmSWQ6ZC5keGZJZCxwcmlvcml0eTpkLnByaW9yaXR5fSksdGhp'@; put 'cy5mb3JtdWxhWGZvcm0ucmVuZGVyKHAsZC5mb3JtdWxhZVswXSkscC5jbG9zZU5vZGUoKX1yZW5kZXJDZWxsSXMocCxkKXtwLm9wZW5Ob2RlKHRoaXMudGFnLHt0eXBlOiJjZWxsSXMiLGR4ZklkOmQuZHhmSWQscHJpb3JpdHk6ZC5wcmlvcml0eSxvcGVyYXRvcjpkLm9wZXJhdG9yfSksZC5m'@; put 'b3JtdWxhZS5mb3JFYWNoKHY9Pnt0aGlzLmZvcm11bGFYZm9ybS5yZW5kZXIocCx2KX0pLHAuY2xvc2VOb2RlKCl9cmVuZGVyVG9wMTAocCxkKXtwLmxlYWZOb2RlKHRoaXMudGFnLHt0eXBlOiJ0b3AxMCIsZHhmSWQ6ZC5keGZJZCxwcmlvcml0eTpkLnByaW9yaXR5LHBlcmNlbnQ6Yi50b0Jv'@; put 'b2xBdHRyaWJ1dGUoZC5wZXJjZW50LCExKSxib3R0b206Yi50b0Jvb2xBdHRyaWJ1dGUoZC5ib3R0b20sITEpLHJhbms6Yi50b0ludFZhbHVlKGQucmFuaywxMCwhMCl9KX1yZW5kZXJBYm92ZUF2ZXJhZ2UocCxkKXtwLmxlYWZOb2RlKHRoaXMudGFnLHt0eXBlOiJhYm92ZUF2ZXJhZ2UiLGR4'@; put 'ZklkOmQuZHhmSWQscHJpb3JpdHk6ZC5wcmlvcml0eSxhYm92ZUF2ZXJhZ2U6Yi50b0Jvb2xBdHRyaWJ1dGUoZC5hYm92ZUF2ZXJhZ2UsITApfSl9cmVuZGVyRGF0YUJhcihwLGQpe3Aub3Blbk5vZGUodGhpcy50YWcse3R5cGU6ImRhdGFCYXIiLHByaW9yaXR5OmQucHJpb3JpdHl9KSx0aGlz'@; put 'LmRhdGFiYXJYZm9ybS5yZW5kZXIocCxkKSx0aGlzLmV4dExzdFJlZlhmb3JtLnJlbmRlcihwLGQpLHAuY2xvc2VOb2RlKCl9cmVuZGVyQ29sb3JTY2FsZShwLGQpe3Aub3Blbk5vZGUodGhpcy50YWcse3R5cGU6ImNvbG9yU2NhbGUiLHByaW9yaXR5OmQucHJpb3JpdHl9KSx0aGlzLmNvbG9y'@; put 'U2NhbGVYZm9ybS5yZW5kZXIocCxkKSxwLmNsb3NlTm9kZSgpfXJlbmRlckljb25TZXQocCxkKXtmLmlzUHJpbWl0aXZlKGQpJiYocC5vcGVuTm9kZSh0aGlzLnRhZyx7dHlwZToiaWNvblNldCIscHJpb3JpdHk6ZC5wcmlvcml0eX0pLHRoaXMuaWNvblNldFhmb3JtLnJlbmRlcihwLGQpLHAu'@; put 'Y2xvc2VOb2RlKCkpfXJlbmRlclRleHQocCxkKXtwLm9wZW5Ob2RlKHRoaXMudGFnLHt0eXBlOmQub3BlcmF0b3IsZHhmSWQ6ZC5keGZJZCxwcmlvcml0eTpkLnByaW9yaXR5LG9wZXJhdG9yOmIudG9TdHJpbmdBdHRyaWJ1dGUoZC5vcGVyYXRvciwiY29udGFpbnNUZXh0Iil9KTtjb25zdCB2'@; put 'PShfPT57aWYoXy5mb3JtdWxhZSYmXy5mb3JtdWxhZVswXSlyZXR1cm4gXy5mb3JtdWxhZVswXTtjb25zdCBBPW5ldyBvKF8ucmVmKSx7dGw6SX09QTtzd2l0Y2goXy5vcGVyYXRvcil7Y2FzZSJjb250YWluc1RleHQiOnJldHVybmBOT1QoSVNFUlJPUihTRUFSQ0goIiR7Xy50ZXh0fSIsJHtJ'@; put 'fSkpKWA7Y2FzZSJjb250YWluc0JsYW5rcyI6cmV0dXJuYExFTihUUklNKCR7SX0pKT0wYDtjYXNlIm5vdENvbnRhaW5zQmxhbmtzIjpyZXR1cm5gTEVOKFRSSU0oJHtJfSkpPjBgO2Nhc2UiY29udGFpbnNFcnJvcnMiOnJldHVybmBJU0VSUk9SKCR7SX0pYDtjYXNlIm5vdENvbnRhaW5zRXJy'@; put 'b3JzIjpyZXR1cm5gTk9UKElTRVJST1IoJHtJfSkpYDtkZWZhdWx0OnJldHVybn19KShkKTt2JiZ0aGlzLmZvcm11bGFYZm9ybS5yZW5kZXIocCx2KSxwLmNsb3NlTm9kZSgpfXJlbmRlclRpbWVQZXJpb2QocCxkKXtwLm9wZW5Ob2RlKHRoaXMudGFnLHt0eXBlOiJ0aW1lUGVyaW9kIixkeGZJ'@; put 'ZDpkLmR4ZklkLHByaW9yaXR5OmQucHJpb3JpdHksdGltZVBlcmlvZDpkLnRpbWVQZXJpb2R9KTtjb25zdCB2PShfPT57aWYoXy5mb3JtdWxhZSYmXy5mb3JtdWxhZVswXSlyZXR1cm4gXy5mb3JtdWxhZVswXTtjb25zdCBBPW5ldyBvKF8ucmVmKSx7dGw6SX09QTtzd2l0Y2goXy50aW1lUGVy'@; put 'aW9kKXtjYXNlInRoaXNXZWVrIjpyZXR1cm5gQU5EKFRPREFZKCktUk9VTkRET1dOKCR7SX0sMCk8PVdFRUtEQVkoVE9EQVkoKSktMSxST1VORERPV04oJHtJfSwwKS1UT0RBWSgpPD03LVdFRUtEQVkoVE9EQVkoKSkpYDtjYXNlImxhc3RXZWVrIjpyZXR1cm5gQU5EKFRPREFZKCktUk9VTkRE'@; put 'T1dOKCR7SX0sMCk+PShXRUVLREFZKFRPREFZKCkpKSxUT0RBWSgpLVJPVU5ERE9XTigke0l9LDApPChXRUVLREFZKFRPREFZKCkpKzcpKWA7Y2FzZSJuZXh0V2VlayI6cmV0dXJuYEFORChST1VORERPV04oJHtJfSwwKS1UT0RBWSgpPig3LVdFRUtEQVkoVE9EQVkoKSkpLFJPVU5ERE9XTigk'@; put 'e0l9LDApLVRPREFZKCk8KDE1LVdFRUtEQVkoVE9EQVkoKSkpKWA7Y2FzZSJ5ZXN0ZXJkYXkiOnJldHVybmBGTE9PUigke0l9LDEpPVRPREFZKCktMWA7Y2FzZSJ0b2RheSI6cmV0dXJuYEZMT09SKCR7SX0sMSk9VE9EQVkoKWA7Y2FzZSJ0b21vcnJvdyI6cmV0dXJuYEZMT09SKCR7SX0sMSk9'@; put 'VE9EQVkoKSsxYDtjYXNlImxhc3Q3RGF5cyI6cmV0dXJuYEFORChUT0RBWSgpLUZMT09SKCR7SX0sMSk8PTYsRkxPT1IoJHtJfSwxKTw9VE9EQVkoKSlgO2Nhc2UibGFzdE1vbnRoIjpyZXR1cm5gQU5EKE1PTlRIKCR7SX0pPU1PTlRIKEVEQVRFKFRPREFZKCksMC0xKSksWUVBUigke0l9KT1Z'@; put 'RUFSKEVEQVRFKFRPREFZKCksMC0xKSkpYDtjYXNlInRoaXNNb250aCI6cmV0dXJuYEFORChNT05USCgke0l9KT1NT05USChUT0RBWSgpKSxZRUFSKCR7SX0pPVlFQVIoVE9EQVkoKSkpYDtjYXNlIm5leHRNb250aCI6cmV0dXJuYEFORChNT05USCgke0l9KT1NT05USChFREFURShUT0RBWSgp'@; put 'LDArMSkpLFlFQVIoJHtJfSk9WUVBUihFREFURShUT0RBWSgpLDArMSkpKWA7ZGVmYXVsdDpyZXR1cm59fSkoZCk7diYmdGhpcy5mb3JtdWxhWGZvcm0ucmVuZGVyKHAsdikscC5jbG9zZU5vZGUoKX1jcmVhdGVOZXdNb2RlbChwKXtsZXR7YXR0cmlidXRlczpkfT1wO3JldHVybnsuLi5oKGQp'@; put 'LGR4ZklkOmIudG9JbnRWYWx1ZShkLmR4ZklkKSxwcmlvcml0eTpiLnRvSW50VmFsdWUoZC5wcmlvcml0eSksdGltZVBlcmlvZDpkLnRpbWVQZXJpb2QscGVyY2VudDpiLnRvQm9vbFZhbHVlKGQucGVyY2VudCksYm90dG9tOmIudG9Cb29sVmFsdWUoZC5ib3R0b20pLHJhbms6Yi50b0ludFZh'@; put 'bHVlKGQucmFuayksYWJvdmVBdmVyYWdlOmIudG9Cb29sVmFsdWUoZC5hYm92ZUF2ZXJhZ2UpfX1vblBhcnNlckNsb3NlKHAsZCl7c3dpdGNoKHApe2Nhc2UiZGF0YUJhciI6Y2FzZSJleHRMc3QiOmNhc2UiY29sb3JTY2FsZSI6Y2FzZSJpY29uU2V0IjpPYmplY3QuYXNzaWduKHRoaXMubW9k'@; put 'ZWwsZC5tb2RlbCk7YnJlYWs7Y2FzZSJmb3JtdWxhIjp0aGlzLm1vZGVsLmZvcm11bGFlPXRoaXMubW9kZWwuZm9ybXVsYWV8fFtdLHRoaXMubW9kZWwuZm9ybXVsYWUucHVzaChkLm1vZGVsKX19fUUuZXhwb3J0cz1mfSx7Ii4uLy4uLy4uLy4uL2RvYy9yYW5nZSI6MTAsIi4uLy4uL2Jhc2Ut'@; put 'eGZvcm0iOjMyLCIuLi8uLi9jb21wb3NpdGUteGZvcm0iOjQ4LCIuL2NvbG9yLXNjYWxlLXhmb3JtIjo4NSwiLi9kYXRhYmFyLXhmb3JtIjo4OCwiLi9leHQtbHN0LXJlZi14Zm9ybSI6ODksIi4vZm9ybXVsYS14Zm9ybSI6OTAsIi4vaWNvbi1zZXQteGZvcm0iOjkxfV0sODQ6W2Z1bmN0aW9u'@; put 'KHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuImNmdm8ifXJlbmRlcihhLG8pe2EubGVhZk5vZGUodGhpcy50YWcse3R5cGU6by50eXBlLHZhbDpvLnZhbHVlfSl9cGFyc2VP'@; put 'cGVuKGEpe3RoaXMubW9kZWw9e3R5cGU6YS5hdHRyaWJ1dGVzLnR5cGUsdmFsdWU6Yi50b0Zsb2F0VmFsdWUoYS5hdHRyaWJ1dGVzLnZhbCl9fXBhcnNlQ2xvc2UoYSl7cmV0dXJuIGEhPT10aGlzLnRhZ319fSx7Ii4uLy4uL2Jhc2UteGZvcm0iOjMyfV0sODU6W2Z1bmN0aW9uKHMsRSxTKXsi'@; put 'dXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9jb21wb3NpdGUteGZvcm0iKSxhPXMoIi4uLy4uL3N0eWxlL2NvbG9yLXhmb3JtIiksbz1zKCIuL2Nmdm8teGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17Y2Z2bzp0aGlz'@; put 'LmNmdm9YZm9ybT1uZXcgbyxjb2xvcjp0aGlzLmNvbG9yWGZvcm09bmV3IGF9fWdldCB0YWcoKXtyZXR1cm4iY29sb3JTY2FsZSJ9cmVuZGVyKHIsdCl7ci5vcGVuTm9kZSh0aGlzLnRhZyksdC5jZnZvLmZvckVhY2goZT0+e3RoaXMuY2Z2b1hmb3JtLnJlbmRlcihyLGUpfSksdC5jb2xvci5m'@; put 'b3JFYWNoKGU9Pnt0aGlzLmNvbG9yWGZvcm0ucmVuZGVyKHIsZSl9KSxyLmNsb3NlTm9kZSgpfWNyZWF0ZU5ld01vZGVsKHIpe3JldHVybntjZnZvOltdLGNvbG9yOltdfX1vblBhcnNlckNsb3NlKHIsdCl7dGhpcy5tb2RlbFtyXS5wdXNoKHQubW9kZWwpfX19LHsiLi4vLi4vY29tcG9zaXRl'@; put 'LXhmb3JtIjo0OCwiLi4vLi4vc3R5bGUvY29sb3IteGZvcm0iOjEyOCwiLi9jZnZvLXhmb3JtIjo4NH1dLDg2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vY29tcG9zaXRlLXhmb3JtIiksYT1zKCIuL2NmLXJ1bGUteGZvcm0iKTtFLmV4cG9ydHM9Y2xh'@; put 'c3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17Y2ZSdWxlOm5ldyBhfX1nZXQgdGFnKCl7cmV0dXJuImNvbmRpdGlvbmFsRm9ybWF0dGluZyJ9cmVuZGVyKG8scil7ci5ydWxlcy5zb21lKGEuaXNQcmltaXRpdmUpJiYoby5vcGVuTm9kZSh0aGlzLnRhZyx7c3Fy'@; put 'ZWY6ci5yZWZ9KSxyLnJ1bGVzLmZvckVhY2godD0+e2EuaXNQcmltaXRpdmUodCkmJih0LnJlZj1yLnJlZix0aGlzLm1hcC5jZlJ1bGUucmVuZGVyKG8sdCkpfSksby5jbG9zZU5vZGUoKSl9Y3JlYXRlTmV3TW9kZWwobyl7bGV0e2F0dHJpYnV0ZXM6cn09bztyZXR1cm57cmVmOnIuc3FyZWYs'@; put 'cnVsZXM6W119fW9uUGFyc2VyQ2xvc2UobyxyKXt0aGlzLm1vZGVsLnJ1bGVzLnB1c2goci5tb2RlbCl9fX0seyIuLi8uLi9jb21wb3NpdGUteGZvcm0iOjQ4LCIuL2NmLXJ1bGUteGZvcm0iOjgzfV0sODc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi9i'@; put 'YXNlLXhmb3JtIiksYT1zKCIuL2NvbmRpdGlvbmFsLWZvcm1hdHRpbmcteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmNmWGZvcm09bmV3IGF9Z2V0IHRhZygpe3JldHVybiJjb25kaXRpb25hbEZvcm1hdHRpbmcifXJlc2V0KCl7'@; put 'dGhpcy5tb2RlbD1bXX1wcmVwYXJlKG8scil7bGV0IHQ9by5yZWR1Y2UoKGUsbCk9Pk1hdGgubWF4KGUsLi4ubC5ydWxlcy5tYXAobj0+bi5wcmlvcml0eXx8MCkpLDEpO28uZm9yRWFjaChlPT57ZS5ydWxlcy5mb3JFYWNoKGw9PntsLnByaW9yaXR5fHwobC5wcmlvcml0eT10KyspLGwuc3R5'@; put 'bGUmJihsLmR4ZklkPXIuc3R5bGVzLmFkZER4ZlN0eWxlKGwuc3R5bGUpKX0pfSl9cmVuZGVyKG8scil7ci5mb3JFYWNoKHQ9Pnt0aGlzLmNmWGZvcm0ucmVuZGVyKG8sdCl9KX1wYXJzZU9wZW4obyl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4obyksITApOiJj'@; put 'b25kaXRpb25hbEZvcm1hdHRpbmciPT09by5uYW1lJiYodGhpcy5wYXJzZXI9dGhpcy5jZlhmb3JtLHRoaXMucGFyc2VyLnBhcnNlT3BlbihvKSwhMCl9cGFyc2VUZXh0KG8pe3RoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQobyl9cGFyc2VDbG9zZShvKXtyZXR1cm4hKCF0aGlz'@; put 'LnBhcnNlcnx8IXRoaXMucGFyc2VyLnBhcnNlQ2xvc2UobykmJih0aGlzLm1vZGVsLnB1c2godGhpcy5wYXJzZXIubW9kZWwpLHRoaXMucGFyc2VyPXZvaWQgMCwxKSl9cmVjb25jaWxlKG8scil7by5mb3JFYWNoKHQ9Pnt0LnJ1bGVzLmZvckVhY2goZT0+e3ZvaWQgMCE9PWUuZHhmSWQmJihl'@; put 'LnN0eWxlPXIuc3R5bGVzLmdldER4ZlN0eWxlKGUuZHhmSWQpLGRlbGV0ZSBlLmR4ZklkKX0pfSl9fX0seyIuLi8uLi9iYXNlLXhmb3JtIjozMiwiLi9jb25kaXRpb25hbC1mb3JtYXR0aW5nLXhmb3JtIjo4Nn1dLDg4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygi'@; put 'Li4vLi4vY29tcG9zaXRlLXhmb3JtIiksYT1zKCIuLi8uLi9zdHlsZS9jb2xvci14Zm9ybSIpLG89cygiLi9jZnZvLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9e2Nmdm86dGhpcy5jZnZvWGZvcm09bmV3IG8sY29sb3I6'@; put 'dGhpcy5jb2xvclhmb3JtPW5ldyBhfX1nZXQgdGFnKCl7cmV0dXJuImRhdGFCYXIifXJlbmRlcihyLHQpe3Iub3Blbk5vZGUodGhpcy50YWcpLHQuY2Z2by5mb3JFYWNoKGU9Pnt0aGlzLmNmdm9YZm9ybS5yZW5kZXIocixlKX0pLHRoaXMuY29sb3JYZm9ybS5yZW5kZXIocix0LmNvbG9yKSxy'@; put 'LmNsb3NlTm9kZSgpfWNyZWF0ZU5ld01vZGVsKCl7cmV0dXJue2Nmdm86W119fW9uUGFyc2VyQ2xvc2Uocix0KXtzd2l0Y2gocil7Y2FzZSJjZnZvIjp0aGlzLm1vZGVsLmNmdm8ucHVzaCh0Lm1vZGVsKTticmVhaztjYXNlImNvbG9yIjp0aGlzLm1vZGVsLmNvbG9yPXQubW9kZWx9fX19LHsi'@; put 'Li4vLi4vY29tcG9zaXRlLXhmb3JtIjo0OCwiLi4vLi4vc3R5bGUvY29sb3IteGZvcm0iOjEyOCwiLi9jZnZvLXhmb3JtIjo4NH1dLDg5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vYmFzZS14Zm9ybSIpLGE9cygiLi4vLi4vY29tcG9zaXRlLXhmb3Jt'@; put 'Iik7Y2xhc3MgbyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJ4MTQ6aWQifXJlbmRlcihlLGwpe2UubGVhZk5vZGUodGhpcy50YWcsbnVsbCxsKX1wYXJzZU9wZW4oKXt0aGlzLm1vZGVsPSIifXBhcnNlVGV4dChlKXt0aGlzLm1vZGVsKz1lfXBhcnNlQ2xvc2UoZSl7cmV0dXJuIGUhPT10'@; put 'aGlzLnRhZ319Y2xhc3MgciBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXsieDE0OmlkIjp0aGlzLmlkWGZvcm09bmV3IG99fWdldCB0YWcoKXtyZXR1cm4iZXh0In1yZW5kZXIoZSxsKXtlLm9wZW5Ob2RlKHRoaXMudGFnLHt1cmk6IntCMDI1RjkzNy1DN0IxLTQ3'@; put 'RDMtQjY3Ri1BNjJFRkY2NjZFM0V9IiwieG1sbnM6eDE0IjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvbWFpbiJ9KSx0aGlzLmlkWGZvcm0ucmVuZGVyKGUsbC54MTRJZCksZS5jbG9zZU5vZGUoKX1jcmVhdGVOZXdNb2RlbCgpe3Jl'@; put 'dHVybnt9fW9uUGFyc2VyQ2xvc2UoZSxsKXt0aGlzLm1vZGVsLngxNElkPWwubW9kZWx9fUUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXtleHQ6bmV3IHJ9fWdldCB0YWcoKXtyZXR1cm4iZXh0THN0In1yZW5kZXIodCxlKXt0Lm9wZW5O'@; put 'b2RlKHRoaXMudGFnKSx0aGlzLm1hcC5leHQucmVuZGVyKHQsZSksdC5jbG9zZU5vZGUoKX1jcmVhdGVOZXdNb2RlbCgpe3JldHVybnt9fW9uUGFyc2VyQ2xvc2UodCxlKXtPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsZS5tb2RlbCl9fX0seyIuLi8uLi9iYXNlLXhmb3JtIjozMiwiLi4vLi4v'@; put 'Y29tcG9zaXRlLXhmb3JtIjo0OH1dLDkwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJmb3JtdWxhIn1yZW5kZXIoYSxvKXthLmxlYWZOb2RlKHRoaXMu'@; put 'dGFnLG51bGwsbyl9cGFyc2VPcGVuKCl7dGhpcy5tb2RlbD0iIn1wYXJzZVRleHQoYSl7dGhpcy5tb2RlbCs9YX1wYXJzZUNsb3NlKGEpe3JldHVybiBhIT09dGhpcy50YWd9fX0seyIuLi8uLi9iYXNlLXhmb3JtIjozMn1dLDkxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0'@; put 'IGI9cygiLi4vLi4vYmFzZS14Zm9ybSIpLGE9cygiLi4vLi4vY29tcG9zaXRlLXhmb3JtIiksbz1zKCIuL2Nmdm8teGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBhe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17Y2Z2bzp0aGlzLmNmdm9YZm9ybT1uZXcgb319Z2V0IHRh'@; put 'Zygpe3JldHVybiJpY29uU2V0In1yZW5kZXIocix0KXtyLm9wZW5Ob2RlKHRoaXMudGFnLHtpY29uU2V0OmIudG9TdHJpbmdBdHRyaWJ1dGUodC5pY29uU2V0LCIzVHJhZmZpY0xpZ2h0cyIpLHJldmVyc2U6Yi50b0Jvb2xBdHRyaWJ1dGUodC5yZXZlcnNlLCExKSxzaG93VmFsdWU6Yi50b0Jv'@; put 'b2xBdHRyaWJ1dGUodC5zaG93VmFsdWUsITApfSksdC5jZnZvLmZvckVhY2goZT0+e3RoaXMuY2Z2b1hmb3JtLnJlbmRlcihyLGUpfSksci5jbG9zZU5vZGUoKX1jcmVhdGVOZXdNb2RlbChyKXtsZXR7YXR0cmlidXRlczp0fT1yO3JldHVybntpY29uU2V0OmIudG9TdHJpbmdWYWx1ZSh0Lmlj'@; put 'b25TZXQsIjNUcmFmZmljTGlnaHRzIikscmV2ZXJzZTpiLnRvQm9vbFZhbHVlKHQucmV2ZXJzZSksc2hvd1ZhbHVlOmIudG9Cb29sVmFsdWUodC5zaG93VmFsdWUpLGNmdm86W119fW9uUGFyc2VyQ2xvc2Uocix0KXt0aGlzLm1vZGVsW3JdLnB1c2godC5tb2RlbCl9fX0seyIuLi8uLi9iYXNl'@; put 'LXhmb3JtIjozMiwiLi4vLi4vY29tcG9zaXRlLXhmb3JtIjo0OCwiLi9jZnZvLXhmb3JtIjo4NH1dLDkyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMvdXRpbHMiKSxhPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0'@; put 'ZW5kcyBhe2dldCB0YWcoKXtyZXR1cm4iY29sIn1wcmVwYXJlKG8scil7Y29uc3QgdD1yLnN0eWxlcy5hZGRTdHlsZU1vZGVsKG8uc3R5bGV8fHt9KTt0JiYoby5zdHlsZUlkPXQpfXJlbmRlcihvLHIpe28ub3Blbk5vZGUoImNvbCIpLG8uYWRkQXR0cmlidXRlKCJtaW4iLHIubWluKSxvLmFk'@; put 'ZEF0dHJpYnV0ZSgibWF4IixyLm1heCksci53aWR0aCYmby5hZGRBdHRyaWJ1dGUoIndpZHRoIixyLndpZHRoKSxyLnN0eWxlSWQmJm8uYWRkQXR0cmlidXRlKCJzdHlsZSIsci5zdHlsZUlkKSxyLmhpZGRlbiYmby5hZGRBdHRyaWJ1dGUoImhpZGRlbiIsIjEiKSxyLmJlc3RGaXQmJm8uYWRk'@; put 'QXR0cmlidXRlKCJiZXN0Rml0IiwiMSIpLHIub3V0bGluZUxldmVsJiZvLmFkZEF0dHJpYnV0ZSgib3V0bGluZUxldmVsIixyLm91dGxpbmVMZXZlbCksci5jb2xsYXBzZWQmJm8uYWRkQXR0cmlidXRlKCJjb2xsYXBzZWQiLCIxIiksby5hZGRBdHRyaWJ1dGUoImN1c3RvbVdpZHRoIiwiMSIp'@; put 'LG8uY2xvc2VOb2RlKCl9cGFyc2VPcGVuKG8pe2lmKCJjb2wiPT09by5uYW1lKXtjb25zdCByPXRoaXMubW9kZWw9e21pbjpwYXJzZUludChvLmF0dHJpYnV0ZXMubWlufHwiMCIsMTApLG1heDpwYXJzZUludChvLmF0dHJpYnV0ZXMubWF4fHwiMCIsMTApLHdpZHRoOnZvaWQgMD09PW8uYXR0'@; put 'cmlidXRlcy53aWR0aD92b2lkIDA6cGFyc2VGbG9hdChvLmF0dHJpYnV0ZXMud2lkdGh8fCIwIil9O3JldHVybiBvLmF0dHJpYnV0ZXMuc3R5bGUmJihyLnN0eWxlSWQ9cGFyc2VJbnQoby5hdHRyaWJ1dGVzLnN0eWxlLDEwKSksYi5wYXJzZUJvb2xlYW4oby5hdHRyaWJ1dGVzLmhpZGRlbikm'@; put 'JihyLmhpZGRlbj0hMCksYi5wYXJzZUJvb2xlYW4oby5hdHRyaWJ1dGVzLmJlc3RGaXQpJiYoci5iZXN0Rml0PSEwKSxvLmF0dHJpYnV0ZXMub3V0bGluZUxldmVsJiYoci5vdXRsaW5lTGV2ZWw9cGFyc2VJbnQoby5hdHRyaWJ1dGVzLm91dGxpbmVMZXZlbCwxMCkpLGIucGFyc2VCb29sZWFu'@; put 'KG8uYXR0cmlidXRlcy5jb2xsYXBzZWQpJiYoci5jb2xsYXBzZWQ9ITApLCEwfXJldHVybiExfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9cmVjb25jaWxlKG8scil7by5zdHlsZUlkJiYoby5zdHlsZT1yLnN0eWxlcy5nZXRTdHlsZU1vZGVsKG8uc3R5bGVJZCkpfX19LHsi'@; put 'Li4vLi4vLi4vdXRpbHMvdXRpbHMiOjI3LCIuLi9iYXNlLXhmb3JtIjozMn1dLDkzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCIpLGE9cygiLi4vLi4vLi4vdXRpbHMvdXRpbHMiKSxvPXMoIi4uLy4uLy4uL3V0aWxz'@; put 'L2NvbC1jYWNoZSIpLHI9cygiLi4vYmFzZS14Zm9ybSIpLHQ9cygiLi4vLi4vLi4vZG9jL3JhbmdlIik7ZnVuY3Rpb24gZShuLGksaCxmKXtjb25zdCB1PWlbaF07dm9pZCAwIT09dT9uW2hdPXU6dm9pZCAwIT09ZiYmKG5baF09Zil9ZnVuY3Rpb24gbChuLGksaCxmKXtjb25zdCB1PWlbaF07'@; put 'dm9pZCAwIT09dT9uW2hdPWEucGFyc2VCb29sZWFuKHUpOnZvaWQgMCE9PWYmJihuW2hdPWYpfUUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIHJ7Z2V0IHRhZygpe3JldHVybiJkYXRhVmFsaWRhdGlvbnMifXJlbmRlcihuLGkpe2NvbnN0IGg9ZnVuY3Rpb24oZil7Y29uc3QgdT1iLm1hcChmLCh2'@; put 'LF8pPT4oe2FkZHJlc3M6XyxkYXRhVmFsaWRhdGlvbjp2LG1hcmtlZDohMX0pKS5zb3J0KCh2LF8pPT5iLnN0cmNtcCh2LmFkZHJlc3MsXy5hZGRyZXNzKSkscD1iLmtleUJ5KHUsImFkZHJlc3MiKSxkPSh2LF8sQSk9Pntmb3IobGV0IEk9MDtJPF87SSsrKXtjb25zdCBMPW8uZW5jb2RlQWRk'@; put 'cmVzcyh2LnJvdytJLEEpO2lmKCFmW0xdfHwhYi5pc0VxdWFsKGZbdi5hZGRyZXNzXSxmW0xdKSlyZXR1cm4hMX1yZXR1cm4hMH07cmV0dXJuIHUubWFwKHY9PntpZighdi5tYXJrZWQpe2NvbnN0IF89by5kZWNvZGVFeCh2LmFkZHJlc3MpO2lmKF8uZGltZW5zaW9ucylyZXR1cm4gcFtfLmRp'@; put 'bWVuc2lvbnNdLm1hcmtlZD0hMCx7Li4udi5kYXRhVmFsaWRhdGlvbixzcXJlZjp2LmFkZHJlc3N9O2xldCBBPTEsST1vLmVuY29kZUFkZHJlc3MoXy5yb3crQSxfLmNvbCk7Zm9yKDtmW0ldJiZiLmlzRXF1YWwodi5kYXRhVmFsaWRhdGlvbixmW0ldKTspQSsrLEk9by5lbmNvZGVBZGRyZXNz'@; put 'KF8ucm93K0EsXy5jb2wpO2xldCBMPTE7Zm9yKDtkKF8sQSxfLmNvbCtMKTspTCsrO2ZvcihsZXQgTj0wO048QTtOKyspZm9yKGxldCBQPTA7UDxMO1ArKylJPW8uZW5jb2RlQWRkcmVzcyhfLnJvdytOLF8uY29sK1ApLHBbSV0ubWFya2VkPSEwO3JldHVybiBBPjF8fEw+MT97Li4udi5kYXRh'@; put 'VmFsaWRhdGlvbixzcXJlZjpgJHt2LmFkZHJlc3N9OiR7by5lbmNvZGVBZGRyZXNzKF8ucm93KyhBLTEpLF8uY29sKyhMLTEpKX1gfTp7Li4udi5kYXRhVmFsaWRhdGlvbixzcXJlZjp2LmFkZHJlc3N9fXJldHVybiBudWxsfSkuZmlsdGVyKEJvb2xlYW4pfShpKTtoLmxlbmd0aCYmKG4ub3Bl'@; put 'bk5vZGUoImRhdGFWYWxpZGF0aW9ucyIse2NvdW50OmgubGVuZ3RofSksaC5mb3JFYWNoKGY9PntuLm9wZW5Ob2RlKCJkYXRhVmFsaWRhdGlvbiIpLCJhbnkiIT09Zi50eXBlJiYobi5hZGRBdHRyaWJ1dGUoInR5cGUiLGYudHlwZSksZi5vcGVyYXRvciYmImxpc3QiIT09Zi50eXBlJiYiYmV0'@; put 'd2VlbiIhPT1mLm9wZXJhdG9yJiZuLmFkZEF0dHJpYnV0ZSgib3BlcmF0b3IiLGYub3BlcmF0b3IpLGYuYWxsb3dCbGFuayYmbi5hZGRBdHRyaWJ1dGUoImFsbG93QmxhbmsiLCIxIikpLGYuc2hvd0lucHV0TWVzc2FnZSYmbi5hZGRBdHRyaWJ1dGUoInNob3dJbnB1dE1lc3NhZ2UiLCIxIiks'@; put 'Zi5wcm9tcHRUaXRsZSYmbi5hZGRBdHRyaWJ1dGUoInByb21wdFRpdGxlIixmLnByb21wdFRpdGxlKSxmLnByb21wdCYmbi5hZGRBdHRyaWJ1dGUoInByb21wdCIsZi5wcm9tcHQpLGYuc2hvd0Vycm9yTWVzc2FnZSYmbi5hZGRBdHRyaWJ1dGUoInNob3dFcnJvck1lc3NhZ2UiLCIxIiksZi5l'@; put 'cnJvclN0eWxlJiZuLmFkZEF0dHJpYnV0ZSgiZXJyb3JTdHlsZSIsZi5lcnJvclN0eWxlKSxmLmVycm9yVGl0bGUmJm4uYWRkQXR0cmlidXRlKCJlcnJvclRpdGxlIixmLmVycm9yVGl0bGUpLGYuZXJyb3ImJm4uYWRkQXR0cmlidXRlKCJlcnJvciIsZi5lcnJvciksbi5hZGRBdHRyaWJ1dGUo'@; put 'InNxcmVmIixmLnNxcmVmKSwoZi5mb3JtdWxhZXx8W10pLmZvckVhY2goKHUscCk9PntuLm9wZW5Ob2RlKCJmb3JtdWxhIisocCsxKSksbi53cml0ZVRleHQoImRhdGUiPT09Zi50eXBlP2EuZGF0ZVRvRXhjZWwobmV3IERhdGUodSkpOnUpLG4uY2xvc2VOb2RlKCl9KSxuLmNsb3NlTm9kZSgp'@; put 'fSksbi5jbG9zZU5vZGUoKSl9cGFyc2VPcGVuKG4pe3N3aXRjaChuLm5hbWUpe2Nhc2UiZGF0YVZhbGlkYXRpb25zIjpyZXR1cm4gdGhpcy5tb2RlbD17fSwhMDtjYXNlImRhdGFWYWxpZGF0aW9uIjp7dGhpcy5fYWRkcmVzcz1uLmF0dHJpYnV0ZXMuc3FyZWY7Y29uc3QgaT17dHlwZTpuLmF0'@; put 'dHJpYnV0ZXMudHlwZXx8ImFueSIsZm9ybXVsYWU6W119O3N3aXRjaChuLmF0dHJpYnV0ZXMudHlwZSYmbChpLG4uYXR0cmlidXRlcywiYWxsb3dCbGFuayIpLGwoaSxuLmF0dHJpYnV0ZXMsInNob3dJbnB1dE1lc3NhZ2UiKSxsKGksbi5hdHRyaWJ1dGVzLCJzaG93RXJyb3JNZXNzYWdlIiks'@; put 'aS50eXBlKXtjYXNlImFueSI6Y2FzZSJsaXN0IjpjYXNlImN1c3RvbSI6YnJlYWs7ZGVmYXVsdDplKGksbi5hdHRyaWJ1dGVzLCJvcGVyYXRvciIsImJldHdlZW4iKX1yZXR1cm4gZShpLG4uYXR0cmlidXRlcywicHJvbXB0VGl0bGUiKSxlKGksbi5hdHRyaWJ1dGVzLCJwcm9tcHQiKSxlKGks'@; put 'bi5hdHRyaWJ1dGVzLCJlcnJvclN0eWxlIiksZShpLG4uYXR0cmlidXRlcywiZXJyb3JUaXRsZSIpLGUoaSxuLmF0dHJpYnV0ZXMsImVycm9yIiksdGhpcy5fZGF0YVZhbGlkYXRpb249aSwhMH1jYXNlImZvcm11bGExIjpjYXNlImZvcm11bGEyIjpyZXR1cm4gdGhpcy5fZm9ybXVsYT1bXSwh'@; put 'MDtkZWZhdWx0OnJldHVybiExfX1wYXJzZVRleHQobil7dGhpcy5fZm9ybXVsYSYmdGhpcy5fZm9ybXVsYS5wdXNoKG4pfXBhcnNlQ2xvc2Uobil7c3dpdGNoKG4pe2Nhc2UiZGF0YVZhbGlkYXRpb25zIjpyZXR1cm4hMTtjYXNlImRhdGFWYWxpZGF0aW9uIjpyZXR1cm4gdGhpcy5fZGF0YVZh'@; put 'bGlkYXRpb24uZm9ybXVsYWUmJnRoaXMuX2RhdGFWYWxpZGF0aW9uLmZvcm11bGFlLmxlbmd0aHx8KGRlbGV0ZSB0aGlzLl9kYXRhVmFsaWRhdGlvbi5mb3JtdWxhZSxkZWxldGUgdGhpcy5fZGF0YVZhbGlkYXRpb24ub3BlcmF0b3IpLCh0aGlzLl9hZGRyZXNzLnNwbGl0KC9ccysvZyl8fFtd'@; put 'KS5mb3JFYWNoKGk9PntpLmluY2x1ZGVzKCI6Iik/bmV3IHQoaSkuZm9yRWFjaEFkZHJlc3MoaD0+e3RoaXMubW9kZWxbaF09dGhpcy5fZGF0YVZhbGlkYXRpb259KTp0aGlzLm1vZGVsW2ldPXRoaXMuX2RhdGFWYWxpZGF0aW9ufSksITA7Y2FzZSJmb3JtdWxhMSI6Y2FzZSJmb3JtdWxhMiI6'@; put 'e2xldCBpPXRoaXMuX2Zvcm11bGEuam9pbigiIik7c3dpdGNoKHRoaXMuX2RhdGFWYWxpZGF0aW9uLnR5cGUpe2Nhc2Uid2hvbGUiOmNhc2UidGV4dExlbmd0aCI6aT1wYXJzZUludChpLDEwKTticmVhaztjYXNlImRlY2ltYWwiOmk9cGFyc2VGbG9hdChpKTticmVhaztjYXNlImRhdGUiOmk9'@; put 'YS5leGNlbFRvRGF0ZShwYXJzZUZsb2F0KGkpKX1yZXR1cm4gdGhpcy5fZGF0YVZhbGlkYXRpb24uZm9ybXVsYWUucHVzaChpKSx0aGlzLl9mb3JtdWxhPXZvaWQgMCwhMH1kZWZhdWx0OnJldHVybiEwfX19fSx7Ii4uLy4uLy4uL2RvYy9yYW5nZSI6MTAsIi4uLy4uLy4uL3V0aWxzL2NvbC1j'@; put 'YWNoZSI6MTksIi4uLy4uLy4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuLi8uLi8uLi91dGlscy91dGlscyI6MjcsIi4uL2Jhc2UteGZvcm0iOjMyfV0sOTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4'@; put 'dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuImRpbWVuc2lvbiJ9cmVuZGVyKGEsbyl7byYmYS5sZWFmTm9kZSgiZGltZW5zaW9uIix7cmVmOm99KX1wYXJzZU9wZW4oYSl7cmV0dXJuImRpbWVuc2lvbiI9PT1hLm5hbWUmJih0aGlzLm1vZGVsPWEuYXR0cmlidXRlcy5yZWYsITApfXBhcnNlVGV4'@; put 'dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDk1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJkcmF3aW5nIn1y'@; put 'ZW5kZXIoYSxvKXtvJiZhLmxlYWZOb2RlKHRoaXMudGFnLHsicjppZCI6by5ySWR9KX1wYXJzZU9wZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17cklkOmEuYXR0cmlidXRlc1sicjppZCJdfSwhMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4h'@; put 'MX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sOTY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9jb21wb3NpdGUteGZvcm0iKSxhPXMoIi4vY2YtZXh0L2NvbmRpdGlvbmFsLWZvcm1hdHRpbmdzLWV4dC14Zm9ybSIpO2NsYXNzIG8gZXh0ZW5kcyBie2NvbnN0'@; put 'cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17IngxNDpjb25kaXRpb25hbEZvcm1hdHRpbmdzIjp0aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3M9bmV3IGF9fWdldCB0YWcoKXtyZXR1cm4iZXh0In1oYXNDb250ZW50KHQpe3JldHVybiB0aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3MuaGFz'@; put 'Q29udGVudCh0LmNvbmRpdGlvbmFsRm9ybWF0dGluZ3MpfXByZXBhcmUodCxlKXt0aGlzLmNvbmRpdGlvbmFsRm9ybWF0dGluZ3MucHJlcGFyZSh0LmNvbmRpdGlvbmFsRm9ybWF0dGluZ3MsZSl9cmVuZGVyKHQsZSl7dC5vcGVuTm9kZSgiZXh0Iix7dXJpOiJ7NzhDMEQ5MzEtNjQzNy00MDdk'@; put 'LUE4RUUtRjBBQUQ3NTM5RTY1fSIsInhtbG5zOngxNCI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L21haW4ifSksdGhpcy5jb25kaXRpb25hbEZvcm1hdHRpbmdzLnJlbmRlcih0LGUuY29uZGl0aW9uYWxGb3JtYXR0aW5ncyksdC5j'@; put 'bG9zZU5vZGUoKX1jcmVhdGVOZXdNb2RlbCgpe3JldHVybnt9fW9uUGFyc2VyQ2xvc2UodCxlKXt0aGlzLm1vZGVsW3RdPWUubW9kZWx9fUUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXtleHQ6dGhpcy5leHQ9bmV3IG99fWdldCB0YWco'@; put 'KXtyZXR1cm4iZXh0THN0In1wcmVwYXJlKHIsdCl7dGhpcy5leHQucHJlcGFyZShyLHQpfWhhc0NvbnRlbnQocil7cmV0dXJuIHRoaXMuZXh0Lmhhc0NvbnRlbnQocil9cmVuZGVyKHIsdCl7dGhpcy5oYXNDb250ZW50KHQpJiYoci5vcGVuTm9kZSgiZXh0THN0IiksdGhpcy5leHQucmVuZGVy'@; put 'KHIsdCksci5jbG9zZU5vZGUoKSl9Y3JlYXRlTmV3TW9kZWwoKXtyZXR1cm57fX1vblBhcnNlckNsb3NlKHIsdCl7T2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLHQubW9kZWwpfX19LHsiLi4vY29tcG9zaXRlLXhmb3JtIjo0OCwiLi9jZi1leHQvY29uZGl0aW9uYWwtZm9ybWF0dGluZ3MtZXh0'@; put 'LXhmb3JtIjo3OH1dLDk3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJoZWFkZXJGb290ZXIifXJlbmRlcihhLG8pe2lmKG8pe2EuYWRkUm9sbGJhY2soKTts'@; put 'ZXQgcj0hMTthLm9wZW5Ob2RlKCJoZWFkZXJGb290ZXIiKSxvLmRpZmZlcmVudEZpcnN0JiYoYS5hZGRBdHRyaWJ1dGUoImRpZmZlcmVudEZpcnN0IiwiMSIpLHI9ITApLG8uZGlmZmVyZW50T2RkRXZlbiYmKGEuYWRkQXR0cmlidXRlKCJkaWZmZXJlbnRPZGRFdmVuIiwiMSIpLHI9ITApLG8u'@; put 'b2RkSGVhZGVyJiYic3RyaW5nIj09dHlwZW9mIG8ub2RkSGVhZGVyJiYoYS5sZWFmTm9kZSgib2RkSGVhZGVyIixudWxsLG8ub2RkSGVhZGVyKSxyPSEwKSxvLm9kZEZvb3RlciYmInN0cmluZyI9PXR5cGVvZiBvLm9kZEZvb3RlciYmKGEubGVhZk5vZGUoIm9kZEZvb3RlciIsbnVsbCxvLm9k'@; put 'ZEZvb3Rlcikscj0hMCksby5ldmVuSGVhZGVyJiYic3RyaW5nIj09dHlwZW9mIG8uZXZlbkhlYWRlciYmKGEubGVhZk5vZGUoImV2ZW5IZWFkZXIiLG51bGwsby5ldmVuSGVhZGVyKSxyPSEwKSxvLmV2ZW5Gb290ZXImJiJzdHJpbmciPT10eXBlb2Ygby5ldmVuRm9vdGVyJiYoYS5sZWFmTm9k'@; put 'ZSgiZXZlbkZvb3RlciIsbnVsbCxvLmV2ZW5Gb290ZXIpLHI9ITApLG8uZmlyc3RIZWFkZXImJiJzdHJpbmciPT10eXBlb2Ygby5maXJzdEhlYWRlciYmKGEubGVhZk5vZGUoImZpcnN0SGVhZGVyIixudWxsLG8uZmlyc3RIZWFkZXIpLHI9ITApLG8uZmlyc3RGb290ZXImJiJzdHJpbmciPT10'@; put 'eXBlb2Ygby5maXJzdEZvb3RlciYmKGEubGVhZk5vZGUoImZpcnN0Rm9vdGVyIixudWxsLG8uZmlyc3RGb290ZXIpLHI9ITApLHI/KGEuY2xvc2VOb2RlKCksYS5jb21taXQoKSk6YS5yb2xsYmFjaygpfX1wYXJzZU9wZW4oYSl7c3dpdGNoKGEubmFtZSl7Y2FzZSJoZWFkZXJGb290ZXIiOnJl'@; put 'dHVybiB0aGlzLm1vZGVsPXt9LGEuYXR0cmlidXRlcy5kaWZmZXJlbnRGaXJzdCYmKHRoaXMubW9kZWwuZGlmZmVyZW50Rmlyc3Q9MT09PXBhcnNlSW50KGEuYXR0cmlidXRlcy5kaWZmZXJlbnRGaXJzdCwwKSksYS5hdHRyaWJ1dGVzLmRpZmZlcmVudE9kZEV2ZW4mJih0aGlzLm1vZGVsLmRp'@; put 'ZmZlcmVudE9kZEV2ZW49MT09PXBhcnNlSW50KGEuYXR0cmlidXRlcy5kaWZmZXJlbnRPZGRFdmVuLDApKSwhMDtjYXNlIm9kZEhlYWRlciI6cmV0dXJuIHRoaXMuY3VycmVudE5vZGU9Im9kZEhlYWRlciIsITA7Y2FzZSJvZGRGb290ZXIiOnJldHVybiB0aGlzLmN1cnJlbnROb2RlPSJvZGRG'@; put 'b290ZXIiLCEwO2Nhc2UiZXZlbkhlYWRlciI6cmV0dXJuIHRoaXMuY3VycmVudE5vZGU9ImV2ZW5IZWFkZXIiLCEwO2Nhc2UiZXZlbkZvb3RlciI6cmV0dXJuIHRoaXMuY3VycmVudE5vZGU9ImV2ZW5Gb290ZXIiLCEwO2Nhc2UiZmlyc3RIZWFkZXIiOnJldHVybiB0aGlzLmN1cnJlbnROb2Rl'@; put 'PSJmaXJzdEhlYWRlciIsITA7Y2FzZSJmaXJzdEZvb3RlciI6cmV0dXJuIHRoaXMuY3VycmVudE5vZGU9ImZpcnN0Rm9vdGVyIiwhMDtkZWZhdWx0OnJldHVybiExfX1wYXJzZVRleHQoYSl7c3dpdGNoKHRoaXMuY3VycmVudE5vZGUpe2Nhc2Uib2RkSGVhZGVyIjp0aGlzLm1vZGVsLm9kZEhl'@; put 'YWRlcj1hO2JyZWFrO2Nhc2Uib2RkRm9vdGVyIjp0aGlzLm1vZGVsLm9kZEZvb3Rlcj1hO2JyZWFrO2Nhc2UiZXZlbkhlYWRlciI6dGhpcy5tb2RlbC5ldmVuSGVhZGVyPWE7YnJlYWs7Y2FzZSJldmVuRm9vdGVyIjp0aGlzLm1vZGVsLmV2ZW5Gb290ZXI9YTticmVhaztjYXNlImZpcnN0SGVh'@; put 'ZGVyIjp0aGlzLm1vZGVsLmZpcnN0SGVhZGVyPWE7YnJlYWs7Y2FzZSJmaXJzdEZvb3RlciI6dGhpcy5tb2RlbC5maXJzdEZvb3Rlcj1hfX1wYXJzZUNsb3NlKCl7c3dpdGNoKHRoaXMuY3VycmVudE5vZGUpe2Nhc2Uib2RkSGVhZGVyIjpjYXNlIm9kZEZvb3RlciI6Y2FzZSJldmVuSGVhZGVy'@; put 'IjpjYXNlImV2ZW5Gb290ZXIiOmNhc2UiZmlyc3RIZWFkZXIiOmNhc2UiZmlyc3RGb290ZXIiOnJldHVybiB0aGlzLmN1cnJlbnROb2RlPXZvaWQgMCwhMDtkZWZhdWx0OnJldHVybiExfX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sOTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7'@; put 'Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuImh5cGVybGluayJ9cmVuZGVyKGEsbyl7dGhpcy5pc0ludGVybmFsTGluayhvKT9hLmxlYWZOb2RlKCJoeXBlcmxpbmsiLHtyZWY6by5hZGRyZXNzLCJyOmlkIjpvLnJJ'@; put 'ZCx0b29sdGlwOm8udG9vbHRpcCxsb2NhdGlvbjpvLnRhcmdldH0pOmEubGVhZk5vZGUoImh5cGVybGluayIse3JlZjpvLmFkZHJlc3MsInI6aWQiOm8ucklkLHRvb2x0aXA6by50b29sdGlwfSl9cGFyc2VPcGVuKGEpe3JldHVybiJoeXBlcmxpbmsiPT09YS5uYW1lJiYodGhpcy5tb2RlbD17'@; put 'YWRkcmVzczphLmF0dHJpYnV0ZXMucmVmLHJJZDphLmF0dHJpYnV0ZXNbInI6aWQiXSx0b29sdGlwOmEuYXR0cmlidXRlcy50b29sdGlwfSxhLmF0dHJpYnV0ZXMubG9jYXRpb24mJih0aGlzLm1vZGVsLnRhcmdldD1hLmF0dHJpYnV0ZXMubG9jYXRpb24pLCEwKX1wYXJzZVRleHQoKXt9cGFy'@; put 'c2VDbG9zZSgpe3JldHVybiExfWlzSW50ZXJuYWxMaW5rKGEpe3JldHVybiBhLnRhcmdldCYmL15bXiFdKyFbYS16QS1aXStbXGRdKyQvLnRlc3QoYS50YXJnZXQpfX19LHsiLi4vYmFzZS14Zm9ybSI6MzJ9XSw5OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4u'@; put 'L2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2dldCB0YWcoKXtyZXR1cm4ibWVyZ2VDZWxsIn1yZW5kZXIoYSxvKXthLmxlYWZOb2RlKCJtZXJnZUNlbGwiLHtyZWY6b30pfXBhcnNlT3BlbihhKXtyZXR1cm4ibWVyZ2VDZWxsIj09PWEubmFtZSYmKHRoaXMubW9kZWw9'@; put 'YS5hdHRyaWJ1dGVzLnJlZiwhMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMTAwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCIpLGE9cygiLi4vLi4v'@; put 'Li4vZG9jL3JhbmdlIiksbz1zKCIuLi8uLi8uLi91dGlscy9jb2wtY2FjaGUiKSxyPXMoIi4uLy4uLy4uL2RvYy9lbnVtcyIpO0UuZXhwb3J0cz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMubWVyZ2VzPXt9fWFkZCh0KXt0aGlzLm1lcmdlc1t0Lm1hc3Rlcl0/dGhpcy5tZXJnZXNbdC5tYXN0'@; put 'ZXJdLmV4cGFuZFRvQWRkcmVzcyh0LmFkZHJlc3MpOnRoaXMubWVyZ2VzW3QubWFzdGVyXT1uZXcgYShgJHt0Lm1hc3Rlcn06JHt0LmFkZHJlc3N9YCl9Z2V0IG1lcmdlQ2VsbHMoKXtyZXR1cm4gYi5tYXAodGhpcy5tZXJnZXMsdD0+dC5yYW5nZSl9cmVjb25jaWxlKHQsZSl7Yi5lYWNoKHQs'@; put 'bD0+e2NvbnN0IG49by5kZWNvZGUobCk7Zm9yKGxldCBpPW4udG9wO2k8PW4uYm90dG9tO2krKyl7Y29uc3QgaD1lW2ktMV07Zm9yKGxldCBmPW4ubGVmdDtmPD1uLnJpZ2h0O2YrKyl7Y29uc3QgdT1oLmNlbGxzW2YtMV07dT91LnR5cGU9PT1yLlZhbHVlVHlwZS5NZXJnZSYmKHUubWFzdGVy'@; put 'PW4udGwpOmguY2VsbHNbZl09e3R5cGU6ci5WYWx1ZVR5cGUuTnVsbCxhZGRyZXNzOm8uZW5jb2RlQWRkcmVzcyhpLGYpfX19fSl9Z2V0TWFzdGVyQWRkcmVzcyh0KXtjb25zdCBlPXRoaXMuaGFzaFt0XTtyZXR1cm4gZSYmZS50bH19fSx7Ii4uLy4uLy4uL2RvYy9lbnVtcyI6NywiLi4vLi4v'@; put 'Li4vZG9jL3JhbmdlIjoxMCwiLi4vLi4vLi4vdXRpbHMvY29sLWNhY2hlIjoxOSwiLi4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCI6MjZ9XSwxMDE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIiksYT1vPT52b2lkIDAhPT1vO0UuZXhwb3J0'@; put 'cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJvdXRsaW5lUHIifXJlbmRlcihvLHIpe3JldHVybiEoIXJ8fCFhKHIuc3VtbWFyeUJlbG93KSYmIWEoci5zdW1tYXJ5UmlnaHQpfHwoby5sZWFmTm9kZSh0aGlzLnRhZyx7c3VtbWFyeUJlbG93OmEoci5zdW1tYXJ5QmVsb3cpP051'@; put 'bWJlcihyLnN1bW1hcnlCZWxvdyk6dm9pZCAwLHN1bW1hcnlSaWdodDphKHIuc3VtbWFyeVJpZ2h0KT9OdW1iZXIoci5zdW1tYXJ5UmlnaHQpOnZvaWQgMH0pLDApKX1wYXJzZU9wZW4obyl7cmV0dXJuIG8ubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17c3VtbWFyeUJlbG93OmEoby5h'@; put 'dHRyaWJ1dGVzLnN1bW1hcnlCZWxvdyk/ISFOdW1iZXIoby5hdHRyaWJ1dGVzLnN1bW1hcnlCZWxvdyk6dm9pZCAwLHN1bW1hcnlSaWdodDphKG8uYXR0cmlidXRlcy5zdW1tYXJ5UmlnaHQpPyEhTnVtYmVyKG8uYXR0cmlidXRlcy5zdW1tYXJ5UmlnaHQpOnZvaWQgMH0sITApfXBhcnNlVGV4'@; put 'dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDEwMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2dldCB0YWcoKXtyZXR1cm4iYnJrIn1yZW5k'@; put 'ZXIoYSxvKXthLmxlYWZOb2RlKCJicmsiLG8pfXBhcnNlT3BlbihhKXtyZXR1cm4iYnJrIj09PWEubmFtZSYmKHRoaXMubW9kZWw9YS5hdHRyaWJ1dGVzLnJlZiwhMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMTAzOltmdW5j'@; put 'dGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCIpLGE9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Z2V0IHRhZygpe3JldHVybiJwYWdlTWFyZ2lucyJ9cmVuZGVyKG8scil7aWYocil7Y29uc3Qg'@; put 'dD17bGVmdDpyLmxlZnQscmlnaHQ6ci5yaWdodCx0b3A6ci50b3AsYm90dG9tOnIuYm90dG9tLGhlYWRlcjpyLmhlYWRlcixmb290ZXI6ci5mb290ZXJ9O2Iuc29tZSh0LGU9PnZvaWQgMCE9PWUpJiZvLmxlYWZOb2RlKHRoaXMudGFnLHQpfX1wYXJzZU9wZW4obyl7cmV0dXJuIG8ubmFtZT09'@; put 'PXRoaXMudGFnJiYodGhpcy5tb2RlbD17bGVmdDpwYXJzZUZsb2F0KG8uYXR0cmlidXRlcy5sZWZ0fHwuNykscmlnaHQ6cGFyc2VGbG9hdChvLmF0dHJpYnV0ZXMucmlnaHR8fC43KSx0b3A6cGFyc2VGbG9hdChvLmF0dHJpYnV0ZXMudG9wfHwuNzUpLGJvdHRvbTpwYXJzZUZsb2F0KG8uYXR0'@; put 'cmlidXRlcy5ib3R0b218fC43NSksaGVhZGVyOnBhcnNlRmxvYXQoby5hdHRyaWJ1dGVzLmhlYWRlcnx8LjMpLGZvb3RlcjpwYXJzZUZsb2F0KG8uYXR0cmlidXRlcy5mb290ZXJ8fC4zKX0sITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi8uLi8uLi91dGls'@; put 'cy91bmRlci1kYXNoIjoyNiwiLi4vYmFzZS14Zm9ybSI6MzJ9XSwxMDQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuInBhZ2VTZXRVcFByIn1yZW5kZXIoYSxv'@; put 'KXtyZXR1cm4hKCFvfHwhby5maXRUb1BhZ2V8fChhLmxlYWZOb2RlKHRoaXMudGFnLHtmaXRUb1BhZ2U6by5maXRUb1BhZ2U/IjEiOnZvaWQgMH0pLDApKX1wYXJzZU9wZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17Zml0VG9QYWdlOiIxIj09PWEuYXR0cmli'@; put 'dXRlcy5maXRUb1BhZ2V9LCEwKX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX19LHsiLi4vYmFzZS14Zm9ybSI6MzJ9XSwxMDU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91dGlscy91bmRlci1kYXNoIiksYT1zKCIuLi9iYXNl'@; put 'LXhmb3JtIik7ZnVuY3Rpb24gbyhsKXtyZXR1cm4gbD8iMSI6dm9pZCAwfWZ1bmN0aW9uIHIobCl7aWYoIm92ZXJUaGVuRG93biI9PT1sKXJldHVybiBsfWZ1bmN0aW9uIHQobCl7c3dpdGNoKGwpe2Nhc2UiYXRFbmQiOmNhc2UiYXNEaXNwbHllZCI6cmV0dXJuIGw7ZGVmYXVsdDpyZXR1cm59'@; put 'fWZ1bmN0aW9uIGUobCl7c3dpdGNoKGwpe2Nhc2UiZGFzaCI6Y2FzZSJibGFuayI6Y2FzZSJOQSI6cmV0dXJuIGw7ZGVmYXVsdDpyZXR1cm59fUUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Z2V0IHRhZygpe3JldHVybiJwYWdlU2V0dXAifXJlbmRlcihsLG4pe2lmKG4pe2NvbnN0IGk9e3Bh'@; put 'cGVyU2l6ZTpuLnBhcGVyU2l6ZSxvcmllbnRhdGlvbjpuLm9yaWVudGF0aW9uLGhvcml6b250YWxEcGk6bi5ob3Jpem9udGFsRHBpLHZlcnRpY2FsRHBpOm4udmVydGljYWxEcGkscGFnZU9yZGVyOnIobi5wYWdlT3JkZXIpLGJsYWNrQW5kV2hpdGU6byhuLmJsYWNrQW5kV2hpdGUpLGRyYWZ0'@; put 'Om8obi5kcmFmdCksY2VsbENvbW1lbnRzOnQobi5jZWxsQ29tbWVudHMpLGVycm9yczplKG4uZXJyb3JzKSxzY2FsZTpuLnNjYWxlLGZpdFRvV2lkdGg6bi5maXRUb1dpZHRoLGZpdFRvSGVpZ2h0Om4uZml0VG9IZWlnaHQsZmlyc3RQYWdlTnVtYmVyOm4uZmlyc3RQYWdlTnVtYmVyLHVzZUZp'@; put 'cnN0UGFnZU51bWJlcjpvKG4uZmlyc3RQYWdlTnVtYmVyKSx1c2VQcmludGVyRGVmYXVsdHM6byhuLnVzZVByaW50ZXJEZWZhdWx0cyksY29waWVzOm4uY29waWVzfTtiLnNvbWUoaSxoPT52b2lkIDAhPT1oKSYmbC5sZWFmTm9kZSh0aGlzLnRhZyxpKX19cGFyc2VPcGVuKGwpe3JldHVybiBs'@; put 'Lm5hbWU9PT10aGlzLnRhZyYmKHRoaXMubW9kZWw9e3BhcGVyU2l6ZToobj1sLmF0dHJpYnV0ZXMucGFwZXJTaXplLHZvaWQgMCE9PW4/cGFyc2VJbnQobiwxMCk6dm9pZCAwKSxvcmllbnRhdGlvbjpsLmF0dHJpYnV0ZXMub3JpZW50YXRpb258fCJwb3J0cmFpdCIsaG9yaXpvbnRhbERwaTpw'@; put 'YXJzZUludChsLmF0dHJpYnV0ZXMuaG9yaXpvbnRhbERwaXx8IjQyOTQ5NjcyOTUiLDEwKSx2ZXJ0aWNhbERwaTpwYXJzZUludChsLmF0dHJpYnV0ZXMudmVydGljYWxEcGl8fCI0Mjk0OTY3Mjk1IiwxMCkscGFnZU9yZGVyOmwuYXR0cmlidXRlcy5wYWdlT3JkZXJ8fCJkb3duVGhlbk92ZXIi'@; put 'LGJsYWNrQW5kV2hpdGU6IjEiPT09bC5hdHRyaWJ1dGVzLmJsYWNrQW5kV2hpdGUsZHJhZnQ6IjEiPT09bC5hdHRyaWJ1dGVzLmRyYWZ0LGNlbGxDb21tZW50czpsLmF0dHJpYnV0ZXMuY2VsbENvbW1lbnRzfHwiTm9uZSIsZXJyb3JzOmwuYXR0cmlidXRlcy5lcnJvcnN8fCJkaXNwbGF5ZWQi'@; put 'LHNjYWxlOnBhcnNlSW50KGwuYXR0cmlidXRlcy5zY2FsZXx8IjEwMCIsMTApLGZpdFRvV2lkdGg6cGFyc2VJbnQobC5hdHRyaWJ1dGVzLmZpdFRvV2lkdGh8fCIxIiwxMCksZml0VG9IZWlnaHQ6cGFyc2VJbnQobC5hdHRyaWJ1dGVzLmZpdFRvSGVpZ2h0fHwiMSIsMTApLGZpcnN0UGFnZU51'@; put 'bWJlcjpwYXJzZUludChsLmF0dHJpYnV0ZXMuZmlyc3RQYWdlTnVtYmVyfHwiMSIsMTApLHVzZUZpcnN0UGFnZU51bWJlcjoiMSI9PT1sLmF0dHJpYnV0ZXMudXNlRmlyc3RQYWdlTnVtYmVyLHVzZVByaW50ZXJEZWZhdWx0czoiMSI9PT1sLmF0dHJpYnV0ZXMudXNlUHJpbnRlckRlZmF1bHRz'@; put 'LGNvcGllczpwYXJzZUludChsLmF0dHJpYnV0ZXMuY29waWVzfHwiMSIsMTApfSwhMCk7dmFyIG59cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uLy4uLy4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuLi9iYXNlLXhmb3JtIjozMn1dLDEwNjpbZnVuY3Rpb24ocyxF'@; put 'LFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2dldCB0YWcoKXtyZXR1cm4icGljdHVyZSJ9cmVuZGVyKGEsbyl7byYmYS5sZWFmTm9kZSh0aGlzLnRhZyx7InI6aWQiOm8ucklkfSl9cGFyc2VPcGVuKGEpe3JldHVy'@; put 'biBhLm5hbWU9PT10aGlzLnRhZyYmKHRoaXMubW9kZWw9e3JJZDphLmF0dHJpYnV0ZXNbInI6aWQiXX0sITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDEwNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBi'@; put 'PXMoIi4uLy4uLy4uL3V0aWxzL3VuZGVyLWRhc2giKSxhPXMoIi4uL2Jhc2UteGZvcm0iKTtmdW5jdGlvbiBvKHIpe3JldHVybiByPyIxIjp2b2lkIDB9RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYXtnZXQgdGFnKCl7cmV0dXJuInByaW50T3B0aW9ucyJ9cmVuZGVyKHIsdCl7aWYodCl7Y29u'@; put 'c3QgZT17aGVhZGluZ3M6byh0LnNob3dSb3dDb2xIZWFkZXJzKSxncmlkTGluZXM6byh0LnNob3dHcmlkTGluZXMpLGhvcml6b250YWxDZW50ZXJlZDpvKHQuaG9yaXpvbnRhbENlbnRlcmVkKSx2ZXJ0aWNhbENlbnRlcmVkOm8odC52ZXJ0aWNhbENlbnRlcmVkKX07Yi5zb21lKGUsbD0+dm9p'@; put 'ZCAwIT09bCkmJnIubGVhZk5vZGUodGhpcy50YWcsZSl9fXBhcnNlT3BlbihyKXtyZXR1cm4gci5uYW1lPT09dGhpcy50YWcmJih0aGlzLm1vZGVsPXtzaG93Um93Q29sSGVhZGVyczoiMSI9PT1yLmF0dHJpYnV0ZXMuaGVhZGluZ3Msc2hvd0dyaWRMaW5lczoiMSI9PT1yLmF0dHJpYnV0ZXMu'@; put 'Z3JpZExpbmVzLGhvcml6b250YWxDZW50ZXJlZDoiMSI9PT1yLmF0dHJpYnV0ZXMuaG9yaXpvbnRhbENlbnRlcmVkLHZlcnRpY2FsQ2VudGVyZWQ6IjEiPT09ci5hdHRyaWJ1dGVzLnZlcnRpY2FsQ2VudGVyZWR9LCEwKX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX19LHsi'@; put 'Li4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCI6MjYsIi4uL2Jhc2UteGZvcm0iOjMyfV0sMTA4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi9wYWdlLWJyZWFrcy14Zm9ybSIpLGE9cygiLi4vbGlzdC14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7'@; put 'Y29uc3RydWN0b3IoKXtzdXBlcih7dGFnOiJyb3dCcmVha3MiLGNvdW50OiEwLGNoaWxkWGZvcm06bmV3IGJ9KX1yZW5kZXIobyxyKXtpZihyJiZyLmxlbmd0aCl7by5vcGVuTm9kZSh0aGlzLnRhZyx0aGlzLiQpLHRoaXMuY291bnQmJihvLmFkZEF0dHJpYnV0ZSh0aGlzLiRjb3VudCxyLmxl'@; put 'bmd0aCksby5hZGRBdHRyaWJ1dGUoIm1hbnVhbEJyZWFrQ291bnQiLHIubGVuZ3RoKSk7Y29uc3R7Y2hpbGRYZm9ybTp0fT10aGlzO3IuZm9yRWFjaChlPT57dC5yZW5kZXIobyxlKX0pLG8uY2xvc2VOb2RlKCl9ZWxzZSB0aGlzLmVtcHR5JiZvLmxlYWZOb2RlKHRoaXMudGFnKX19fSx7Ii4u'@; put 'L2xpc3QteGZvcm0iOjcxLCIuL3BhZ2UtYnJlYWtzLXhmb3JtIjoxMDJ9XSwxMDk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIiksYT1zKCIuLi8uLi8uLi91dGlscy91dGlscyIpLG89cygiLi9jZWxsLXhmb3JtIik7RS5leHBvcnRzPWNs'@; put 'YXNzIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihyKXtzdXBlcigpLHRoaXMubWF4SXRlbXM9ciYmci5tYXhJdGVtcyx0aGlzLm1hcD17YzpuZXcgb319Z2V0IHRhZygpe3JldHVybiJyb3cifXByZXBhcmUocix0KXtjb25zdCBlPXQuc3R5bGVzLmFkZFN0eWxlTW9kZWwoci5zdHlsZSk7ZSYmKHIu'@; put 'c3R5bGVJZD1lKTtjb25zdCBsPXRoaXMubWFwLmM7ci5jZWxscy5mb3JFYWNoKG49PntsLnByZXBhcmUobix0KX0pfXJlbmRlcihyLHQsZSl7ci5vcGVuTm9kZSgicm93Iiksci5hZGRBdHRyaWJ1dGUoInIiLHQubnVtYmVyKSx0LmhlaWdodCYmKHIuYWRkQXR0cmlidXRlKCJodCIsdC5oZWln'@; put 'aHQpLHIuYWRkQXR0cmlidXRlKCJjdXN0b21IZWlnaHQiLCIxIikpLHQuaGlkZGVuJiZyLmFkZEF0dHJpYnV0ZSgiaGlkZGVuIiwiMSIpLHQubWluPjAmJnQubWF4PjAmJnQubWluPD10Lm1heCYmci5hZGRBdHRyaWJ1dGUoInNwYW5zIixgJHt0Lm1pbn06JHt0Lm1heH1gKSx0LnN0eWxlSWQm'@; put 'JihyLmFkZEF0dHJpYnV0ZSgicyIsdC5zdHlsZUlkKSxyLmFkZEF0dHJpYnV0ZSgiY3VzdG9tRm9ybWF0IiwiMSIpKSxyLmFkZEF0dHJpYnV0ZSgieDE0YWM6ZHlEZXNjZW50IiwiMC4yNSIpLHQub3V0bGluZUxldmVsJiZyLmFkZEF0dHJpYnV0ZSgib3V0bGluZUxldmVsIix0Lm91dGxpbmVM'@; put 'ZXZlbCksdC5jb2xsYXBzZWQmJnIuYWRkQXR0cmlidXRlKCJjb2xsYXBzZWQiLCIxIik7Y29uc3QgbD10aGlzLm1hcC5jO3QuY2VsbHMuZm9yRWFjaChuPT57bC5yZW5kZXIocixuLGUpfSksci5jbG9zZU5vZGUoKX1wYXJzZU9wZW4ocil7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFy'@; put 'c2VyLnBhcnNlT3BlbihyKSwhMDtpZigicm93Ij09PXIubmFtZSl7dGhpcy5udW1Sb3dzU2Vlbis9MTtjb25zdCB0PXIuYXR0cmlidXRlcy5zcGFucz9yLmF0dHJpYnV0ZXMuc3BhbnMuc3BsaXQoIjoiKS5tYXAobD0+cGFyc2VJbnQobCwxMCkpOlt2b2lkIDAsdm9pZCAwXSxlPXRoaXMubW9k'@; put 'ZWw9e251bWJlcjpwYXJzZUludChyLmF0dHJpYnV0ZXMuciwxMCksbWluOnRbMF0sbWF4OnRbMV0sY2VsbHM6W119O3JldHVybiByLmF0dHJpYnV0ZXMucyYmKGUuc3R5bGVJZD1wYXJzZUludChyLmF0dHJpYnV0ZXMucywxMCkpLGEucGFyc2VCb29sZWFuKHIuYXR0cmlidXRlcy5oaWRkZW4p'@; put 'JiYoZS5oaWRkZW49ITApLGEucGFyc2VCb29sZWFuKHIuYXR0cmlidXRlcy5iZXN0Rml0KSYmKGUuYmVzdEZpdD0hMCksci5hdHRyaWJ1dGVzLmh0JiYoZS5oZWlnaHQ9cGFyc2VGbG9hdChyLmF0dHJpYnV0ZXMuaHQpKSxyLmF0dHJpYnV0ZXMub3V0bGluZUxldmVsJiYoZS5vdXRsaW5lTGV2'@; put 'ZWw9cGFyc2VJbnQoci5hdHRyaWJ1dGVzLm91dGxpbmVMZXZlbCwxMCkpLGEucGFyc2VCb29sZWFuKHIuYXR0cmlidXRlcy5jb2xsYXBzZWQpJiYoZS5jb2xsYXBzZWQ9ITApLCEwfXJldHVybiB0aGlzLnBhcnNlcj10aGlzLm1hcFtyLm5hbWVdLCEhdGhpcy5wYXJzZXImJih0aGlzLnBhcnNl'@; put 'ci5wYXJzZU9wZW4ociksITApfXBhcnNlVGV4dChyKXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KHIpfXBhcnNlQ2xvc2Uocil7aWYodGhpcy5wYXJzZXIpe2lmKCF0aGlzLnBhcnNlci5wYXJzZUNsb3NlKHIpKXtpZih0aGlzLm1vZGVsLmNlbGxzLnB1c2godGhpcy5wYXJz'@; put 'ZXIubW9kZWwpLHRoaXMubWF4SXRlbXMmJnRoaXMubW9kZWwuY2VsbHMubGVuZ3RoPnRoaXMubWF4SXRlbXMpdGhyb3cgbmV3IEVycm9yKGBNYXggY29sdW1uIGNvdW50ICgke3RoaXMubWF4SXRlbXN9KSBleGNlZWRlZGApO3RoaXMucGFyc2VyPXZvaWQgMH1yZXR1cm4hMH1yZXR1cm4hMX1y'@; put 'ZWNvbmNpbGUocix0KXtyLnN0eWxlPXIuc3R5bGVJZD90LnN0eWxlcy5nZXRTdHlsZU1vZGVsKHIuc3R5bGVJZCk6e30sdm9pZCAwIT09ci5zdHlsZUlkJiYoci5zdHlsZUlkPXZvaWQgMCk7Y29uc3QgZT10aGlzLm1hcC5jO3IuY2VsbHMuZm9yRWFjaChsPT57ZS5yZWNvbmNpbGUobCx0KX0p'@; put 'fX19LHsiLi4vLi4vLi4vdXRpbHMvdXRpbHMiOjI3LCIuLi9iYXNlLXhmb3JtIjozMiwiLi9jZWxsLXhmb3JtIjo3M31dLDExMDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uLy4uL3V0aWxzL3VuZGVyLWRhc2giKSxhPXMoIi4uL2Jhc2UteGZvcm0iKTtF'@; put 'LmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBhe2dldCB0YWcoKXtyZXR1cm4ic2hlZXRGb3JtYXRQciJ9cmVuZGVyKG8scil7aWYocil7Y29uc3QgdD17ZGVmYXVsdFJvd0hlaWdodDpyLmRlZmF1bHRSb3dIZWlnaHQsb3V0bGluZUxldmVsUm93OnIub3V0bGluZUxldmVsUm93LG91dGxpbmVMZXZl'@; put 'bENvbDpyLm91dGxpbmVMZXZlbENvbCwieDE0YWM6ZHlEZXNjZW50IjpyLmR5RGVzY2VudH07ci5kZWZhdWx0Q29sV2lkdGgmJih0LmRlZmF1bHRDb2xXaWR0aD1yLmRlZmF1bHRDb2xXaWR0aCksci5kZWZhdWx0Um93SGVpZ2h0JiYxNT09PXIuZGVmYXVsdFJvd0hlaWdodHx8KHQuY3VzdG9t'@; put 'SGVpZ2h0PSIxIiksYi5zb21lKHQsZT0+dm9pZCAwIT09ZSkmJm8ubGVhZk5vZGUoInNoZWV0Rm9ybWF0UHIiLHQpfX1wYXJzZU9wZW4obyl7cmV0dXJuInNoZWV0Rm9ybWF0UHIiPT09by5uYW1lJiYodGhpcy5tb2RlbD17ZGVmYXVsdFJvd0hlaWdodDpwYXJzZUZsb2F0KG8uYXR0cmlidXRl'@; put 'cy5kZWZhdWx0Um93SGVpZ2h0fHwiMCIpLGR5RGVzY2VudDpwYXJzZUZsb2F0KG8uYXR0cmlidXRlc1sieDE0YWM6ZHlEZXNjZW50Il18fCIwIiksb3V0bGluZUxldmVsUm93OnBhcnNlSW50KG8uYXR0cmlidXRlcy5vdXRsaW5lTGV2ZWxSb3d8fCIwIiwxMCksb3V0bGluZUxldmVsQ29sOnBh'@; put 'cnNlSW50KG8uYXR0cmlidXRlcy5vdXRsaW5lTGV2ZWxDb2x8fCIwIiwxMCl9LG8uYXR0cmlidXRlcy5kZWZhdWx0Q29sV2lkdGgmJih0aGlzLm1vZGVsLmRlZmF1bHRDb2xXaWR0aD1wYXJzZUZsb2F0KG8uYXR0cmlidXRlcy5kZWZhdWx0Q29sV2lkdGgpKSwhMCl9cGFyc2VUZXh0KCl7fXBh'@; put 'cnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uLy4uLy4uL3V0aWxzL3VuZGVyLWRhc2giOjI2LCIuLi9iYXNlLXhmb3JtIjozMn1dLDExMTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKSxhPXMoIi4uL3N0eWxlL2NvbG9yLXhmb3JtIiks'@; put 'bz1zKCIuL3BhZ2Utc2V0dXAtcHJvcGVydGllcy14Zm9ybSIpLHI9cygiLi9vdXRsaW5lLXByb3BlcnRpZXMteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17dGFiQ29sb3I6bmV3IGEoInRhYkNvbG9yIikscGFnZVNldFVw'@; put 'UHI6bmV3IG8sb3V0bGluZVByOm5ldyByfX1nZXQgdGFnKCl7cmV0dXJuInNoZWV0UHIifXJlbmRlcih0LGUpe2lmKGUpe3QuYWRkUm9sbGJhY2soKSx0Lm9wZW5Ob2RlKCJzaGVldFByIik7bGV0IGw9ITE7bD10aGlzLm1hcC50YWJDb2xvci5yZW5kZXIodCxlLnRhYkNvbG9yKXx8bCxsPXRo'@; put 'aXMubWFwLnBhZ2VTZXRVcFByLnJlbmRlcih0LGUucGFnZVNldHVwKXx8bCxsPXRoaXMubWFwLm91dGxpbmVQci5yZW5kZXIodCxlLm91dGxpbmVQcm9wZXJ0aWVzKXx8bCxsPyh0LmNsb3NlTm9kZSgpLHQuY29tbWl0KCkpOnQucm9sbGJhY2soKX19cGFyc2VPcGVuKHQpe3JldHVybiB0aGlz'@; put 'LnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VPcGVuKHQpLCEwKTp0Lm5hbWU9PT10aGlzLnRhZz8odGhpcy5yZXNldCgpLCEwKTohIXRoaXMubWFwW3QubmFtZV0mJih0aGlzLnBhcnNlcj10aGlzLm1hcFt0Lm5hbWVdLHRoaXMucGFyc2VyLnBhcnNlT3Blbih0KSwhMCl9cGFyc2VUZXh0KHQp'@; put 'e3JldHVybiEhdGhpcy5wYXJzZXImJih0aGlzLnBhcnNlci5wYXJzZVRleHQodCksITApfXBhcnNlQ2xvc2UodCl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZUNsb3NlKHQpfHwodGhpcy5wYXJzZXI9dm9pZCAwKSwhMCk6KHRoaXMubWFwLnRhYkNvbG9yLm1vZGVsfHx0'@; put 'aGlzLm1hcC5wYWdlU2V0VXBQci5tb2RlbHx8dGhpcy5tYXAub3V0bGluZVByLm1vZGVsPyh0aGlzLm1vZGVsPXt9LHRoaXMubWFwLnRhYkNvbG9yLm1vZGVsJiYodGhpcy5tb2RlbC50YWJDb2xvcj10aGlzLm1hcC50YWJDb2xvci5tb2RlbCksdGhpcy5tYXAucGFnZVNldFVwUHIubW9kZWwm'@; put 'Jih0aGlzLm1vZGVsLnBhZ2VTZXR1cD10aGlzLm1hcC5wYWdlU2V0VXBQci5tb2RlbCksdGhpcy5tYXAub3V0bGluZVByLm1vZGVsJiYodGhpcy5tb2RlbC5vdXRsaW5lUHJvcGVydGllcz10aGlzLm1hcC5vdXRsaW5lUHIubW9kZWwpKTp0aGlzLm1vZGVsPW51bGwsITEpfX19LHsiLi4vYmFz'@; put 'ZS14Zm9ybSI6MzIsIi4uL3N0eWxlL2NvbG9yLXhmb3JtIjoxMjgsIi4vb3V0bGluZS1wcm9wZXJ0aWVzLXhmb3JtIjoxMDEsIi4vcGFnZS1zZXR1cC1wcm9wZXJ0aWVzLXhmb3JtIjoxMDR9XSwxMTI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91'@; put 'dGlscy91bmRlci1kYXNoIiksYT1zKCIuLi9iYXNlLXhmb3JtIik7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0P2U6dm9pZCAwfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gdD09PWV8fHZvaWQgMH1FLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBhe2dldCB0YWcoKXtyZXR1cm4ic2hlZXRQcm90ZWN0'@; put 'aW9uIn1yZW5kZXIodCxlKXtpZihlKXtjb25zdCBsPXtzaGVldDpvKGUuc2hlZXQsIjEiKSxzZWxlY3RMb2NrZWRDZWxsczohMT09PWUuc2VsZWN0TG9ja2VkQ2VsbHM/IjEiOnZvaWQgMCxzZWxlY3RVbmxvY2tlZENlbGxzOiExPT09ZS5zZWxlY3RVbmxvY2tlZENlbGxzPyIxIjp2b2lkIDAs'@; put 'Zm9ybWF0Q2VsbHM6byhlLmZvcm1hdENlbGxzLCIwIiksZm9ybWF0Q29sdW1uczpvKGUuZm9ybWF0Q29sdW1ucywiMCIpLGZvcm1hdFJvd3M6byhlLmZvcm1hdFJvd3MsIjAiKSxpbnNlcnRDb2x1bW5zOm8oZS5pbnNlcnRDb2x1bW5zLCIwIiksaW5zZXJ0Um93czpvKGUuaW5zZXJ0Um93cywi'@; put 'MCIpLGluc2VydEh5cGVybGlua3M6byhlLmluc2VydEh5cGVybGlua3MsIjAiKSxkZWxldGVDb2x1bW5zOm8oZS5kZWxldGVDb2x1bW5zLCIwIiksZGVsZXRlUm93czpvKGUuZGVsZXRlUm93cywiMCIpLHNvcnQ6byhlLnNvcnQsIjAiKSxhdXRvRmlsdGVyOm8oZS5hdXRvRmlsdGVyLCIwIiks'@; put 'cGl2b3RUYWJsZXM6byhlLnBpdm90VGFibGVzLCIwIil9O2Uuc2hlZXQmJihsLmFsZ29yaXRobU5hbWU9ZS5hbGdvcml0aG1OYW1lLGwuaGFzaFZhbHVlPWUuaGFzaFZhbHVlLGwuc2FsdFZhbHVlPWUuc2FsdFZhbHVlLGwuc3BpbkNvdW50PWUuc3BpbkNvdW50LGwub2JqZWN0cz1vKCExPT09'@; put 'ZS5vYmplY3RzLCIxIiksbC5zY2VuYXJpb3M9byghMT09PWUuc2NlbmFyaW9zLCIxIikpLGIuc29tZShsLG49PnZvaWQgMCE9PW4pJiZ0LmxlYWZOb2RlKHRoaXMudGFnLGwpfX1wYXJzZU9wZW4odCl7cmV0dXJuIHQubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17c2hlZXQ6cih0LmF0'@; put 'dHJpYnV0ZXMuc2hlZXQsIjEiKSxvYmplY3RzOiIxIiE9PXQuYXR0cmlidXRlcy5vYmplY3RzJiZ2b2lkIDAsc2NlbmFyaW9zOiIxIiE9PXQuYXR0cmlidXRlcy5zY2VuYXJpb3MmJnZvaWQgMCxzZWxlY3RMb2NrZWRDZWxsczoiMSIhPT10LmF0dHJpYnV0ZXMuc2VsZWN0TG9ja2VkQ2VsbHMm'@; put 'JnZvaWQgMCxzZWxlY3RVbmxvY2tlZENlbGxzOiIxIiE9PXQuYXR0cmlidXRlcy5zZWxlY3RVbmxvY2tlZENlbGxzJiZ2b2lkIDAsZm9ybWF0Q2VsbHM6cih0LmF0dHJpYnV0ZXMuZm9ybWF0Q2VsbHMsIjAiKSxmb3JtYXRDb2x1bW5zOnIodC5hdHRyaWJ1dGVzLmZvcm1hdENvbHVtbnMsIjAi'@; put 'KSxmb3JtYXRSb3dzOnIodC5hdHRyaWJ1dGVzLmZvcm1hdFJvd3MsIjAiKSxpbnNlcnRDb2x1bW5zOnIodC5hdHRyaWJ1dGVzLmluc2VydENvbHVtbnMsIjAiKSxpbnNlcnRSb3dzOnIodC5hdHRyaWJ1dGVzLmluc2VydFJvd3MsIjAiKSxpbnNlcnRIeXBlcmxpbmtzOnIodC5hdHRyaWJ1dGVz'@; put 'Lmluc2VydEh5cGVybGlua3MsIjAiKSxkZWxldGVDb2x1bW5zOnIodC5hdHRyaWJ1dGVzLmRlbGV0ZUNvbHVtbnMsIjAiKSxkZWxldGVSb3dzOnIodC5hdHRyaWJ1dGVzLmRlbGV0ZVJvd3MsIjAiKSxzb3J0OnIodC5hdHRyaWJ1dGVzLnNvcnQsIjAiKSxhdXRvRmlsdGVyOnIodC5hdHRyaWJ1'@; put 'dGVzLmF1dG9GaWx0ZXIsIjAiKSxwaXZvdFRhYmxlczpyKHQuYXR0cmlidXRlcy5waXZvdFRhYmxlcywiMCIpfSx0LmF0dHJpYnV0ZXMuYWxnb3JpdGhtTmFtZSYmKHRoaXMubW9kZWwuYWxnb3JpdGhtTmFtZT10LmF0dHJpYnV0ZXMuYWxnb3JpdGhtTmFtZSx0aGlzLm1vZGVsLmhhc2hWYWx1'@; put 'ZT10LmF0dHJpYnV0ZXMuaGFzaFZhbHVlLHRoaXMubW9kZWwuc2FsdFZhbHVlPXQuYXR0cmlidXRlcy5zYWx0VmFsdWUsdGhpcy5tb2RlbC5zcGluQ291bnQ9cGFyc2VJbnQodC5hdHRyaWJ1dGVzLnNwaW5Db3VudCwxMCkpLCEwKX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiEx'@; put 'fX19LHsiLi4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCI6MjYsIi4uL2Jhc2UteGZvcm0iOjMyfV0sMTEzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMvY29sLWNhY2hlIiksYT1zKCIuLi9iYXNlLXhmb3JtIiksbz17ZnJvemVuOiJmcm96'@; put 'ZW4iLGZyb3plblNwbGl0OiJmcm96ZW4iLHNwbGl0OiJzcGxpdCJ9O0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGF7Z2V0IHRhZygpe3JldHVybiJzaGVldFZpZXcifXByZXBhcmUocil7c3dpdGNoKHIuc3RhdGUpe2Nhc2UiZnJvemVuIjpjYXNlInNwbGl0IjpicmVhaztkZWZhdWx0OnIuc3Rh'@; put 'dGU9Im5vcm1hbCJ9fXJlbmRlcihyLHQpe3Iub3Blbk5vZGUoInNoZWV0VmlldyIse3dvcmtib29rVmlld0lkOnQud29ya2Jvb2tWaWV3SWR8fDB9KTtjb25zdCBlPWZ1bmN0aW9uKGYsdSxwKXtwJiZyLmFkZEF0dHJpYnV0ZShmLHUpfTtsZXQgbCxuLGksaDtzd2l0Y2goZSgicmlnaHRUb0xl'@; put 'ZnQiLCIxIiwhMD09PXQucmlnaHRUb0xlZnQpLGUoInRhYlNlbGVjdGVkIiwiMSIsdC50YWJTZWxlY3RlZCksZSgic2hvd1J1bGVyIiwiMCIsITE9PT10LnNob3dSdWxlciksZSgic2hvd1Jvd0NvbEhlYWRlcnMiLCIwIiwhMT09PXQuc2hvd1Jvd0NvbEhlYWRlcnMpLGUoInNob3dHcmlkTGlu'@; put 'ZXMiLCIwIiwhMT09PXQuc2hvd0dyaWRMaW5lcyksZSgiem9vbVNjYWxlIix0Lnpvb21TY2FsZSx0Lnpvb21TY2FsZSksZSgiem9vbVNjYWxlTm9ybWFsIix0Lnpvb21TY2FsZU5vcm1hbCx0Lnpvb21TY2FsZU5vcm1hbCksZSgidmlldyIsdC5zdHlsZSx0LnN0eWxlKSx0LnN0YXRlKXtjYXNl'@; put 'ImZyb3plbiI6bj10LnhTcGxpdHx8MCxpPXQueVNwbGl0fHwwLGw9dC50b3BMZWZ0Q2VsbHx8Yi5nZXRBZGRyZXNzKGkrMSxuKzEpLmFkZHJlc3MsaD0odC54U3BsaXQmJnQueVNwbGl0PyJib3R0b21SaWdodCI6dC54U3BsaXQmJiJ0b3BSaWdodCIpfHwiYm90dG9tTGVmdCIsci5sZWFmTm9k'@; put 'ZSgicGFuZSIse3hTcGxpdDp0LnhTcGxpdHx8dm9pZCAwLHlTcGxpdDp0LnlTcGxpdHx8dm9pZCAwLHRvcExlZnRDZWxsOmwsYWN0aXZlUGFuZTpoLHN0YXRlOiJmcm96ZW4ifSksci5sZWFmTm9kZSgic2VsZWN0aW9uIix7cGFuZTpoLGFjdGl2ZUNlbGw6dC5hY3RpdmVDZWxsLHNxcmVmOnQu'@; put 'YWN0aXZlQ2VsbH0pO2JyZWFrO2Nhc2Uic3BsaXQiOiJ0b3BMZWZ0Ij09PXQuYWN0aXZlUGFuZSYmKHQuYWN0aXZlUGFuZT12b2lkIDApLHIubGVhZk5vZGUoInBhbmUiLHt4U3BsaXQ6dC54U3BsaXR8fHZvaWQgMCx5U3BsaXQ6dC55U3BsaXR8fHZvaWQgMCx0b3BMZWZ0Q2VsbDp0LnRvcExl'@; put 'ZnRDZWxsLGFjdGl2ZVBhbmU6dC5hY3RpdmVQYW5lfSksci5sZWFmTm9kZSgic2VsZWN0aW9uIix7cGFuZTp0LmFjdGl2ZVBhbmUsYWN0aXZlQ2VsbDp0LmFjdGl2ZUNlbGwsc3FyZWY6dC5hY3RpdmVDZWxsfSk7YnJlYWs7Y2FzZSJub3JtYWwiOnQuYWN0aXZlQ2VsbCYmci5sZWFmTm9kZSgi'@; put 'c2VsZWN0aW9uIix7YWN0aXZlQ2VsbDp0LmFjdGl2ZUNlbGwsc3FyZWY6dC5hY3RpdmVDZWxsfSl9ci5jbG9zZU5vZGUoKX1wYXJzZU9wZW4ocil7c3dpdGNoKHIubmFtZSl7Y2FzZSJzaGVldFZpZXciOnJldHVybiB0aGlzLnNoZWV0Vmlldz17d29ya2Jvb2tWaWV3SWQ6cGFyc2VJbnQoci5h'@; put 'dHRyaWJ1dGVzLndvcmtib29rVmlld0lkLDEwKSxyaWdodFRvTGVmdDoiMSI9PT1yLmF0dHJpYnV0ZXMucmlnaHRUb0xlZnQsdGFiU2VsZWN0ZWQ6IjEiPT09ci5hdHRyaWJ1dGVzLnRhYlNlbGVjdGVkLHNob3dSdWxlcjoiMCIhPT1yLmF0dHJpYnV0ZXMuc2hvd1J1bGVyLHNob3dSb3dDb2xI'@; put 'ZWFkZXJzOiIwIiE9PXIuYXR0cmlidXRlcy5zaG93Um93Q29sSGVhZGVycyxzaG93R3JpZExpbmVzOiIwIiE9PXIuYXR0cmlidXRlcy5zaG93R3JpZExpbmVzLHpvb21TY2FsZTpwYXJzZUludChyLmF0dHJpYnV0ZXMuem9vbVNjYWxlfHwiMTAwIiwxMCksem9vbVNjYWxlTm9ybWFsOnBhcnNl'@; put 'SW50KHIuYXR0cmlidXRlcy56b29tU2NhbGVOb3JtYWx8fCIxMDAiLDEwKSxzdHlsZTpyLmF0dHJpYnV0ZXMudmlld30sdGhpcy5wYW5lPXZvaWQgMCx0aGlzLnNlbGVjdGlvbnM9e30sITA7Y2FzZSJwYW5lIjpyZXR1cm4gdGhpcy5wYW5lPXt4U3BsaXQ6cGFyc2VJbnQoci5hdHRyaWJ1dGVz'@; put 'LnhTcGxpdHx8IjAiLDEwKSx5U3BsaXQ6cGFyc2VJbnQoci5hdHRyaWJ1dGVzLnlTcGxpdHx8IjAiLDEwKSx0b3BMZWZ0Q2VsbDpyLmF0dHJpYnV0ZXMudG9wTGVmdENlbGwsYWN0aXZlUGFuZTpyLmF0dHJpYnV0ZXMuYWN0aXZlUGFuZXx8InRvcExlZnQiLHN0YXRlOnIuYXR0cmlidXRlcy5z'@; put 'dGF0ZX0sITA7Y2FzZSJzZWxlY3Rpb24iOntjb25zdCB0PXIuYXR0cmlidXRlcy5wYW5lfHwidG9wTGVmdCI7cmV0dXJuIHRoaXMuc2VsZWN0aW9uc1t0XT17cGFuZTp0LGFjdGl2ZUNlbGw6ci5hdHRyaWJ1dGVzLmFjdGl2ZUNlbGx9LCEwfWRlZmF1bHQ6cmV0dXJuITF9fXBhcnNlVGV4dCgp'@; put 'e31wYXJzZUNsb3NlKHIpe2xldCB0LGU7cmV0dXJuInNoZWV0VmlldyIhPT1yfHwodGhpcy5zaGVldFZpZXcmJnRoaXMucGFuZT8odD10aGlzLm1vZGVsPXt3b3JrYm9va1ZpZXdJZDp0aGlzLnNoZWV0Vmlldy53b3JrYm9va1ZpZXdJZCxyaWdodFRvTGVmdDp0aGlzLnNoZWV0Vmlldy5yaWdo'@; put 'dFRvTGVmdCxzdGF0ZTpvW3RoaXMucGFuZS5zdGF0ZV18fCJzcGxpdCIseFNwbGl0OnRoaXMucGFuZS54U3BsaXQseVNwbGl0OnRoaXMucGFuZS55U3BsaXQsdG9wTGVmdENlbGw6dGhpcy5wYW5lLnRvcExlZnRDZWxsLHNob3dSdWxlcjp0aGlzLnNoZWV0Vmlldy5zaG93UnVsZXIsc2hvd1Jv'@; put 'd0NvbEhlYWRlcnM6dGhpcy5zaGVldFZpZXcuc2hvd1Jvd0NvbEhlYWRlcnMsc2hvd0dyaWRMaW5lczp0aGlzLnNoZWV0Vmlldy5zaG93R3JpZExpbmVzLHpvb21TY2FsZTp0aGlzLnNoZWV0Vmlldy56b29tU2NhbGUsem9vbVNjYWxlTm9ybWFsOnRoaXMuc2hlZXRWaWV3Lnpvb21TY2FsZU5v'@; put 'cm1hbH0sInNwbGl0Ij09PXRoaXMubW9kZWwuc3RhdGUmJih0LmFjdGl2ZVBhbmU9dGhpcy5wYW5lLmFjdGl2ZVBhbmUpLGU9dGhpcy5zZWxlY3Rpb25zW3RoaXMucGFuZS5hY3RpdmVQYW5lXSxlJiZlLmFjdGl2ZUNlbGwmJih0LmFjdGl2ZUNlbGw9ZS5hY3RpdmVDZWxsKSx0aGlzLnNoZWV0'@; put 'Vmlldy5zdHlsZSYmKHQuc3R5bGU9dGhpcy5zaGVldFZpZXcuc3R5bGUpKToodD10aGlzLm1vZGVsPXt3b3JrYm9va1ZpZXdJZDp0aGlzLnNoZWV0Vmlldy53b3JrYm9va1ZpZXdJZCxyaWdodFRvTGVmdDp0aGlzLnNoZWV0Vmlldy5yaWdodFRvTGVmdCxzdGF0ZToibm9ybWFsIixzaG93UnVs'@; put 'ZXI6dGhpcy5zaGVldFZpZXcuc2hvd1J1bGVyLHNob3dSb3dDb2xIZWFkZXJzOnRoaXMuc2hlZXRWaWV3LnNob3dSb3dDb2xIZWFkZXJzLHNob3dHcmlkTGluZXM6dGhpcy5zaGVldFZpZXcuc2hvd0dyaWRMaW5lcyx6b29tU2NhbGU6dGhpcy5zaGVldFZpZXcuem9vbVNjYWxlLHpvb21TY2Fs'@; put 'ZU5vcm1hbDp0aGlzLnNoZWV0Vmlldy56b29tU2NhbGVOb3JtYWx9LGU9dGhpcy5zZWxlY3Rpb25zLnRvcExlZnQsZSYmZS5hY3RpdmVDZWxsJiYodC5hY3RpdmVDZWxsPWUuYWN0aXZlQ2VsbCksdGhpcy5zaGVldFZpZXcuc3R5bGUmJih0LnN0eWxlPXRoaXMuc2hlZXRWaWV3LnN0eWxlKSks'@; put 'ITEpfXJlY29uY2lsZSgpe319fSx7Ii4uLy4uLy4uL3V0aWxzL2NvbC1jYWNoZSI6MTksIi4uL2Jhc2UteGZvcm0iOjMyfV0sMTE0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRh'@; put 'Zygpe3JldHVybiJ0YWJsZVBhcnQifXJlbmRlcihhLG8pe28mJmEubGVhZk5vZGUodGhpcy50YWcseyJyOmlkIjpvLnJJZH0pfXBhcnNlT3BlbihhKXtyZXR1cm4gYS5uYW1lPT09dGhpcy50YWcmJih0aGlzLm1vZGVsPXtySWQ6YS5hdHRyaWJ1dGVzWyJyOmlkIl19LCEwKX1wYXJzZVRleHQo'@; put 'KXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX19LHsiLi4vYmFzZS14Zm9ybSI6MzJ9XSwxMTU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi8uLi8uLi91dGlscy91bmRlci1kYXNoIiksYT1zKCIuLi8uLi8uLi91dGlscy9jb2wtY2FjaGUiKSxvPXMoIi4uLy4u'@; put 'Ly4uL3V0aWxzL3htbC1zdHJlYW0iKSxyPXMoIi4uLy4uL3JlbC10eXBlIiksdD1zKCIuL21lcmdlcyIpLGU9cygiLi4vYmFzZS14Zm9ybSIpLGw9cygiLi4vbGlzdC14Zm9ybSIpLG49cygiLi9yb3cteGZvcm0iKSxpPXMoIi4vY29sLXhmb3JtIiksaD1zKCIuL2RpbWVuc2lvbi14Zm9ybSIp'@; put 'LGY9cygiLi9oeXBlcmxpbmsteGZvcm0iKSx1PXMoIi4vbWVyZ2UtY2VsbC14Zm9ybSIpLHA9cygiLi9kYXRhLXZhbGlkYXRpb25zLXhmb3JtIiksZD1zKCIuL3NoZWV0LXByb3BlcnRpZXMteGZvcm0iKSx2PXMoIi4vc2hlZXQtZm9ybWF0LXByb3BlcnRpZXMteGZvcm0iKSxfPXMoIi4vc2hl'@; put 'ZXQtdmlldy14Zm9ybSIpLEE9cygiLi9zaGVldC1wcm90ZWN0aW9uLXhmb3JtIiksST1zKCIuL3BhZ2UtbWFyZ2lucy14Zm9ybSIpLEw9cygiLi9wYWdlLXNldHVwLXhmb3JtIiksTj1zKCIuL3ByaW50LW9wdGlvbnMteGZvcm0iKSxQPXMoIi4vYXV0by1maWx0ZXIteGZvcm0iKSxCPXMoIi4v'@; put 'cGljdHVyZS14Zm9ybSIpLCQ9cygiLi9kcmF3aW5nLXhmb3JtIiksRD1zKCIuL3RhYmxlLXBhcnQteGZvcm0iKSx4PXMoIi4vcm93LWJyZWFrcy14Zm9ybSIpLE09cygiLi9oZWFkZXItZm9vdGVyLXhmb3JtIiksaj1zKCIuL2NmL2NvbmRpdGlvbmFsLWZvcm1hdHRpbmdzLXhmb3JtIiksYz1z'@; put 'KCIuL2V4dC1sc3QteGZvcm0iKTtjbGFzcyBnIGV4dGVuZHMgZXtjb25zdHJ1Y3Rvcih3KXtzdXBlcigpO2NvbnN0e21heFJvd3M6ayxtYXhDb2xzOk8saWdub3JlTm9kZXM6en09d3x8e307dGhpcy5pZ25vcmVOb2Rlcz16fHxbXSx0aGlzLm1hcD17c2hlZXRQcjpuZXcgZCxkaW1lbnNpb246'@; put 'bmV3IGgsc2hlZXRWaWV3czpuZXcgbCh7dGFnOiJzaGVldFZpZXdzIixjb3VudDohMSxjaGlsZFhmb3JtOm5ldyBffSksc2hlZXRGb3JtYXRQcjpuZXcgdixjb2xzOm5ldyBsKHt0YWc6ImNvbHMiLGNvdW50OiExLGNoaWxkWGZvcm06bmV3IGl9KSxzaGVldERhdGE6bmV3IGwoe3RhZzoic2hl'@; put 'ZXREYXRhIixjb3VudDohMSxlbXB0eTohMCxjaGlsZFhmb3JtOm5ldyBuKHttYXhJdGVtczpPfSksbWF4SXRlbXM6a30pLGF1dG9GaWx0ZXI6bmV3IFAsbWVyZ2VDZWxsczpuZXcgbCh7dGFnOiJtZXJnZUNlbGxzIixjb3VudDohMCxjaGlsZFhmb3JtOm5ldyB1fSkscm93QnJlYWtzOm5ldyB4'@; put 'LGh5cGVybGlua3M6bmV3IGwoe3RhZzoiaHlwZXJsaW5rcyIsY291bnQ6ITEsY2hpbGRYZm9ybTpuZXcgZn0pLHBhZ2VNYXJnaW5zOm5ldyBJLGRhdGFWYWxpZGF0aW9uczpuZXcgcCxwYWdlU2V0dXA6bmV3IEwsaGVhZGVyRm9vdGVyOm5ldyBNLHByaW50T3B0aW9uczpuZXcgTixwaWN0dXJl'@; put 'Om5ldyBCLGRyYXdpbmc6bmV3ICQsc2hlZXRQcm90ZWN0aW9uOm5ldyBBLHRhYmxlUGFydHM6bmV3IGwoe3RhZzoidGFibGVQYXJ0cyIsY291bnQ6ITAsY2hpbGRYZm9ybTpuZXcgRH0pLGNvbmRpdGlvbmFsRm9ybWF0dGluZzpuZXcgaixleHRMc3Q6bmV3IGN9fXByZXBhcmUodyxrKXtrLm1l'@; put 'cmdlcz1uZXcgdCx3Lmh5cGVybGlua3M9ay5oeXBlcmxpbmtzPVtdLHcuY29tbWVudHM9ay5jb21tZW50cz1bXSxrLmZvcm11bGFlPXt9LGsuc2lGb3JtdWxhZT0wLHRoaXMubWFwLmNvbHMucHJlcGFyZSh3LmNvbHMsayksdGhpcy5tYXAuc2hlZXREYXRhLnByZXBhcmUody5yb3dzLGspLHRo'@; put 'aXMubWFwLmNvbmRpdGlvbmFsRm9ybWF0dGluZy5wcmVwYXJlKHcuY29uZGl0aW9uYWxGb3JtYXR0aW5ncyxrKSx3Lm1lcmdlQ2VsbHM9ay5tZXJnZXMubWVyZ2VDZWxscztjb25zdCBPPXcucmVscz1bXTtmdW5jdGlvbiB6KFIpe3JldHVybiJySWQiKyhSLmxlbmd0aCsxKX1pZih3Lmh5cGVy'@; put 'bGlua3MuZm9yRWFjaChSPT57Y29uc3QgSD16KE8pO1IucklkPUgsTy5wdXNoKHtJZDpILFR5cGU6ci5IeXBlcmxpbmssVGFyZ2V0OlIudGFyZ2V0LFRhcmdldE1vZGU6IkV4dGVybmFsIn0pfSksdy5jb21tZW50cy5sZW5ndGg+MCl7Y29uc3QgUj17SWQ6eihPKSxUeXBlOnIuQ29tbWVudHMs'@; put 'VGFyZ2V0OmAuLi9jb21tZW50cyR7dy5pZH0ueG1sYH07Ty5wdXNoKFIpO2NvbnN0IEg9e0lkOnooTyksVHlwZTpyLlZtbERyYXdpbmcsVGFyZ2V0OmAuLi9kcmF3aW5ncy92bWxEcmF3aW5nJHt3LmlkfS52bWxgfTtPLnB1c2goSCksdy5jb21tZW50cy5mb3JFYWNoKFQ9PntULnJlZkFkZHJl'@; put 'c3M9YS5kZWNvZGVBZGRyZXNzKFQucmVmKX0pLGsuY29tbWVudFJlZnMucHVzaCh7Y29tbWVudE5hbWU6ImNvbW1lbnRzIit3LmlkLHZtbERyYXdpbmc6InZtbERyYXdpbmciK3cuaWR9KX1jb25zdCBVPVtdO2xldCBWO3cubWVkaWEuZm9yRWFjaChSPT57aWYoImJhY2tncm91bmQiPT09Ui50'@; put 'eXBlKXtjb25zdCBIPXooTyk7Vj1rLm1lZGlhW1IuaW1hZ2VJZF0sTy5wdXNoKHtJZDpILFR5cGU6ci5JbWFnZSxUYXJnZXQ6YC4uL21lZGlhLyR7Vi5uYW1lfS4ke1YuZXh0ZW5zaW9ufWB9KSx3LmJhY2tncm91bmQ9e3JJZDpIfSx3LmltYWdlPWsubWVkaWFbUi5pbWFnZUlkXX1lbHNlIGlm'@; put 'KCJpbWFnZSI9PT1SLnR5cGUpe2xldHtkcmF3aW5nOkh9PXc7Vj1rLm1lZGlhW1IuaW1hZ2VJZF0sSHx8KEg9dy5kcmF3aW5nPXtySWQ6eihPKSxuYW1lOiJkcmF3aW5nIisgKytrLmRyYXdpbmdzQ291bnQsYW5jaG9yczpbXSxyZWxzOltdfSxrLmRyYXdpbmdzLnB1c2goSCksTy5wdXNoKHtJ'@; put 'ZDpILnJJZCxUeXBlOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RyYXdpbmciLFRhcmdldDpgLi4vZHJhd2luZ3MvJHtILm5hbWV9LnhtbGB9KSk7bGV0IFQ9dGhpcy5wcmVJbWFnZUlkPT09Ui5pbWFnZUlkP1Vb'@; put 'Ui5pbWFnZUlkXTpVW0gucmVscy5sZW5ndGhdO1R8fChUPXooSC5yZWxzKSxVW0gucmVscy5sZW5ndGhdPVQsSC5yZWxzLnB1c2goe0lkOlQsVHlwZToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9pbWFnZSIsVGFy'@; put 'Z2V0OmAuLi9tZWRpYS8ke1YubmFtZX0uJHtWLmV4dGVuc2lvbn1gfSkpO2NvbnN0IEM9e3BpY3R1cmU6e3JJZDpUfSxyYW5nZTpSLnJhbmdlfTtpZihSLmh5cGVybGlua3MmJlIuaHlwZXJsaW5rcy5oeXBlcmxpbmspe2NvbnN0IEY9eihILnJlbHMpO1VbSC5yZWxzLmxlbmd0aF09RixDLnBp'@; put 'Y3R1cmUuaHlwZXJsaW5rcz17dG9vbHRpcDpSLmh5cGVybGlua3MudG9vbHRpcCxySWQ6Rn0sSC5yZWxzLnB1c2goe0lkOkYsVHlwZTpyLkh5cGVybGluayxUYXJnZXQ6Ui5oeXBlcmxpbmtzLmh5cGVybGluayxUYXJnZXRNb2RlOiJFeHRlcm5hbCJ9KX10aGlzLnByZUltYWdlSWQ9Ui5pbWFn'@; put 'ZUlkLEguYW5jaG9ycy5wdXNoKEMpfX0pLHcudGFibGVzLmZvckVhY2goUj0+e2NvbnN0IEg9eihPKTtSLnJJZD1ILE8ucHVzaCh7SWQ6SCxUeXBlOnIuVGFibGUsVGFyZ2V0OiIuLi90YWJsZXMvIitSLnRhcmdldH0pLFIuY29sdW1ucy5mb3JFYWNoKFQ9Pntjb25zdHtzdHlsZTpDfT1UO0Mm'@; put 'JihULmR4ZklkPWsuc3R5bGVzLmFkZER4ZlN0eWxlKEMpKX0pfSksdGhpcy5tYXAuZXh0THN0LnByZXBhcmUodyxrKX1yZW5kZXIodyxrKXt3Lm9wZW5YbWwoby5TdGREb2NBdHRyaWJ1dGVzKSx3Lm9wZW5Ob2RlKCJ3b3Jrc2hlZXQiLGcuV09SS1NIRUVUX0FUVFJJQlVURVMpO2NvbnN0IE89'@; put 'ay5wcm9wZXJ0aWVzP3tkZWZhdWx0Um93SGVpZ2h0OmsucHJvcGVydGllcy5kZWZhdWx0Um93SGVpZ2h0LGR5RGVzY2VudDprLnByb3BlcnRpZXMuZHlEZXNjZW50LG91dGxpbmVMZXZlbENvbDprLnByb3BlcnRpZXMub3V0bGluZUxldmVsQ29sLG91dGxpbmVMZXZlbFJvdzprLnByb3BlcnRp'@; put 'ZXMub3V0bGluZUxldmVsUm93fTp2b2lkIDA7ay5wcm9wZXJ0aWVzJiZrLnByb3BlcnRpZXMuZGVmYXVsdENvbFdpZHRoJiYoTy5kZWZhdWx0Q29sV2lkdGg9ay5wcm9wZXJ0aWVzLmRlZmF1bHRDb2xXaWR0aCk7Y29uc3QgVT1rLnBhZ2VTZXR1cCYmay5wYWdlU2V0dXAubWFyZ2lucyxWPXtz'@; put 'aG93Um93Q29sSGVhZGVyczprLnBhZ2VTZXR1cCYmay5wYWdlU2V0dXAuc2hvd1Jvd0NvbEhlYWRlcnMsc2hvd0dyaWRMaW5lczprLnBhZ2VTZXR1cCYmay5wYWdlU2V0dXAuc2hvd0dyaWRMaW5lcyxob3Jpem9udGFsQ2VudGVyZWQ6ay5wYWdlU2V0dXAmJmsucGFnZVNldHVwLmhvcml6b250'@; put 'YWxDZW50ZXJlZCx2ZXJ0aWNhbENlbnRlcmVkOmsucGFnZVNldHVwJiZrLnBhZ2VTZXR1cC52ZXJ0aWNhbENlbnRlcmVkfSxSPWsuc2hlZXRQcm90ZWN0aW9uO3RoaXMubWFwLnNoZWV0UHIucmVuZGVyKHcse291dGxpbmVQcm9wZXJ0aWVzOmsucHJvcGVydGllcyYmay5wcm9wZXJ0aWVzLm91'@; put 'dGxpbmVQcm9wZXJ0aWVzLHRhYkNvbG9yOmsucHJvcGVydGllcyYmay5wcm9wZXJ0aWVzLnRhYkNvbG9yLHBhZ2VTZXR1cDprLnBhZ2VTZXR1cCYmay5wYWdlU2V0dXAuZml0VG9QYWdlP3tmaXRUb1BhZ2U6ay5wYWdlU2V0dXAuZml0VG9QYWdlfTp2b2lkIDB9KSx0aGlzLm1hcC5kaW1lbnNp'@; put 'b24ucmVuZGVyKHcsay5kaW1lbnNpb25zKSx0aGlzLm1hcC5zaGVldFZpZXdzLnJlbmRlcih3LGsudmlld3MpLHRoaXMubWFwLnNoZWV0Rm9ybWF0UHIucmVuZGVyKHcsTyksdGhpcy5tYXAuY29scy5yZW5kZXIodyxrLmNvbHMpLHRoaXMubWFwLnNoZWV0RGF0YS5yZW5kZXIodyxrLnJvd3Mp'@; put 'LHRoaXMubWFwLnNoZWV0UHJvdGVjdGlvbi5yZW5kZXIodyxSKSx0aGlzLm1hcC5hdXRvRmlsdGVyLnJlbmRlcih3LGsuYXV0b0ZpbHRlciksdGhpcy5tYXAubWVyZ2VDZWxscy5yZW5kZXIodyxrLm1lcmdlQ2VsbHMpLHRoaXMubWFwLmNvbmRpdGlvbmFsRm9ybWF0dGluZy5yZW5kZXIodyxr'@; put 'LmNvbmRpdGlvbmFsRm9ybWF0dGluZ3MpLHRoaXMubWFwLmRhdGFWYWxpZGF0aW9ucy5yZW5kZXIodyxrLmRhdGFWYWxpZGF0aW9ucyksdGhpcy5tYXAuaHlwZXJsaW5rcy5yZW5kZXIodyxrLmh5cGVybGlua3MpLHRoaXMubWFwLnByaW50T3B0aW9ucy5yZW5kZXIodyxWKSx0aGlzLm1hcC5w'@; put 'YWdlTWFyZ2lucy5yZW5kZXIodyxVKSx0aGlzLm1hcC5wYWdlU2V0dXAucmVuZGVyKHcsay5wYWdlU2V0dXApLHRoaXMubWFwLmhlYWRlckZvb3Rlci5yZW5kZXIodyxrLmhlYWRlckZvb3RlciksdGhpcy5tYXAucm93QnJlYWtzLnJlbmRlcih3LGsucm93QnJlYWtzKSx0aGlzLm1hcC5kcmF3'@; put 'aW5nLnJlbmRlcih3LGsuZHJhd2luZyksdGhpcy5tYXAucGljdHVyZS5yZW5kZXIodyxrLmJhY2tncm91bmQpLHRoaXMubWFwLnRhYmxlUGFydHMucmVuZGVyKHcsay50YWJsZXMpLHRoaXMubWFwLmV4dExzdC5yZW5kZXIodyxrKSxrLnJlbHMmJmsucmVscy5mb3JFYWNoKEg9PntILlR5cGU9'@; put 'PT1yLlZtbERyYXdpbmcmJncubGVhZk5vZGUoImxlZ2FjeURyYXdpbmciLHsicjppZCI6SC5JZH0pfSksdy5jbG9zZU5vZGUoKX1wYXJzZU9wZW4odyl7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4odyksITApOiJ3b3Jrc2hlZXQiPT09dy5uYW1lPyhiLmVhY2go'@; put 'dGhpcy5tYXAsaz0+e2sucmVzZXQoKX0pLCEwKToodGhpcy5tYXBbdy5uYW1lXSYmIXRoaXMuaWdub3JlTm9kZXMuaW5jbHVkZXMody5uYW1lKSYmKHRoaXMucGFyc2VyPXRoaXMubWFwW3cubmFtZV0sdGhpcy5wYXJzZXIucGFyc2VPcGVuKHcpKSwhMCl9cGFyc2VUZXh0KHcpe3RoaXMucGFy'@; put 'c2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQodyl9cGFyc2VDbG9zZSh3KXtpZih0aGlzLnBhcnNlcilyZXR1cm4gdGhpcy5wYXJzZXIucGFyc2VDbG9zZSh3KXx8KHRoaXMucGFyc2VyPXZvaWQgMCksITA7aWYoIndvcmtzaGVldCI9PT13KXtjb25zdCBrPXRoaXMubWFwLnNoZWV0Rm9ybWF0'@; put 'UHIubW9kZWx8fHt9O3RoaXMubWFwLnNoZWV0UHIubW9kZWwmJnRoaXMubWFwLnNoZWV0UHIubW9kZWwudGFiQ29sb3ImJihrLnRhYkNvbG9yPXRoaXMubWFwLnNoZWV0UHIubW9kZWwudGFiQ29sb3IpLHRoaXMubWFwLnNoZWV0UHIubW9kZWwmJnRoaXMubWFwLnNoZWV0UHIubW9kZWwub3V0'@; put 'bGluZVByb3BlcnRpZXMmJihrLm91dGxpbmVQcm9wZXJ0aWVzPXRoaXMubWFwLnNoZWV0UHIubW9kZWwub3V0bGluZVByb3BlcnRpZXMpO2NvbnN0IHo9T2JqZWN0LmFzc2lnbih7Zml0VG9QYWdlOnRoaXMubWFwLnNoZWV0UHIubW9kZWwmJnRoaXMubWFwLnNoZWV0UHIubW9kZWwucGFnZVNl'@; put 'dHVwJiZ0aGlzLm1hcC5zaGVldFByLm1vZGVsLnBhZ2VTZXR1cC5maXRUb1BhZ2V8fCExLG1hcmdpbnM6dGhpcy5tYXAucGFnZU1hcmdpbnMubW9kZWx9LHRoaXMubWFwLnBhZ2VTZXR1cC5tb2RlbCx0aGlzLm1hcC5wcmludE9wdGlvbnMubW9kZWwpLFU9KCh5LHcpPT57aWYoIXd8fCF3Lmxl'@; put 'bmd0aClyZXR1cm4geTtpZigheXx8IXkubGVuZ3RoKXJldHVybiB3O2NvbnN0IGs9e30sTz17fTtyZXR1cm4geS5mb3JFYWNoKHo9PntrW3oucmVmXT16LHoucnVsZXMuZm9yRWFjaChVPT57Y29uc3R7eDE0SWQ6Vn09VTtWJiYoT1tWXT1VKX0pfSksdy5mb3JFYWNoKHo9Pnt6LnJ1bGVzLmZv'@; put 'ckVhY2goVT0+e2NvbnN0IFY9T1tVLngxNElkXTt2YXIgUixIO1Y/KFI9VixIPVUsT2JqZWN0LmtleXMoSCkuZm9yRWFjaChUPT57Y29uc3QgRj1IW1RdO3ZvaWQgMD09PVJbVF0mJnZvaWQgMCE9PUYmJihSW1RdPUYpfSkpOmtbei5yZWZdP2tbei5yZWZdLnJ1bGVzLnB1c2goVSk6eS5wdXNo'@; put 'KHtyZWY6ei5yZWYscnVsZXM6W1VdfSl9KX0pLHl9KSh0aGlzLm1hcC5jb25kaXRpb25hbEZvcm1hdHRpbmcubW9kZWwsdGhpcy5tYXAuZXh0THN0Lm1vZGVsJiZ0aGlzLm1hcC5leHRMc3QubW9kZWxbIngxNDpjb25kaXRpb25hbEZvcm1hdHRpbmdzIl0pO3JldHVybiB0aGlzLm1vZGVsPXtk'@; put 'aW1lbnNpb25zOnRoaXMubWFwLmRpbWVuc2lvbi5tb2RlbCxjb2xzOnRoaXMubWFwLmNvbHMubW9kZWwscm93czp0aGlzLm1hcC5zaGVldERhdGEubW9kZWwsbWVyZ2VDZWxsczp0aGlzLm1hcC5tZXJnZUNlbGxzLm1vZGVsLGh5cGVybGlua3M6dGhpcy5tYXAuaHlwZXJsaW5rcy5tb2RlbCxk'@; put 'YXRhVmFsaWRhdGlvbnM6dGhpcy5tYXAuZGF0YVZhbGlkYXRpb25zLm1vZGVsLHByb3BlcnRpZXM6ayx2aWV3czp0aGlzLm1hcC5zaGVldFZpZXdzLm1vZGVsLHBhZ2VTZXR1cDp6LGhlYWRlckZvb3Rlcjp0aGlzLm1hcC5oZWFkZXJGb290ZXIubW9kZWwsYmFja2dyb3VuZDp0aGlzLm1hcC5w'@; put 'aWN0dXJlLm1vZGVsLGRyYXdpbmc6dGhpcy5tYXAuZHJhd2luZy5tb2RlbCx0YWJsZXM6dGhpcy5tYXAudGFibGVQYXJ0cy5tb2RlbCxjb25kaXRpb25hbEZvcm1hdHRpbmdzOlV9LHRoaXMubWFwLmF1dG9GaWx0ZXIubW9kZWwmJih0aGlzLm1vZGVsLmF1dG9GaWx0ZXI9dGhpcy5tYXAuYXV0'@; put 'b0ZpbHRlci5tb2RlbCksdGhpcy5tYXAuc2hlZXRQcm90ZWN0aW9uLm1vZGVsJiYodGhpcy5tb2RlbC5zaGVldFByb3RlY3Rpb249dGhpcy5tYXAuc2hlZXRQcm90ZWN0aW9uLm1vZGVsKSwhMX1yZXR1cm4hMH1yZWNvbmNpbGUodyxrKXtjb25zdCBPPSh3LnJlbGF0aW9uc2hpcHN8fFtdKS5y'@; put 'ZWR1Y2UoKFUsVik9PntpZihVW1YuSWRdPVYsVi5UeXBlPT09ci5Db21tZW50cyYmKHcuY29tbWVudHM9ay5jb21tZW50c1tWLlRhcmdldF0uY29tbWVudHMpLFYuVHlwZT09PXIuVm1sRHJhd2luZyYmdy5jb21tZW50cyYmdy5jb21tZW50cy5sZW5ndGgpe2NvbnN0IFI9ay52bWxEcmF3aW5n'@; put 'c1tWLlRhcmdldF0uY29tbWVudHM7dy5jb21tZW50cy5mb3JFYWNoKChILFQpPT57SC5ub3RlPU9iamVjdC5hc3NpZ24oe30sSC5ub3RlLFJbVF0pfSl9cmV0dXJuIFV9LHt9KTtpZihrLmNvbW1lbnRzTWFwPSh3LmNvbW1lbnRzfHxbXSkucmVkdWNlKChVLFYpPT4oVi5yZWYmJihVW1YucmVm'@; put 'XT1WKSxVKSx7fSksay5oeXBlcmxpbmtNYXA9KHcuaHlwZXJsaW5rc3x8W10pLnJlZHVjZSgoVSxWKT0+KFYucklkJiYoVVtWLmFkZHJlc3NdPU9bVi5ySWRdLlRhcmdldCksVSkse30pLGsuZm9ybXVsYWU9e30sdy5yb3dzPXcucm93cyYmdy5yb3dzLmZpbHRlcihCb29sZWFuKXx8W10sdy5y'@; put 'b3dzLmZvckVhY2goVT0+e1UuY2VsbHM9VS5jZWxscyYmVS5jZWxscy5maWx0ZXIoQm9vbGVhbil8fFtdfSksdGhpcy5tYXAuY29scy5yZWNvbmNpbGUody5jb2xzLGspLHRoaXMubWFwLnNoZWV0RGF0YS5yZWNvbmNpbGUody5yb3dzLGspLHRoaXMubWFwLmNvbmRpdGlvbmFsRm9ybWF0dGlu'@; put 'Zy5yZWNvbmNpbGUody5jb25kaXRpb25hbEZvcm1hdHRpbmdzLGspLHcubWVkaWE9W10sdy5kcmF3aW5nKXtjb25zdCBVPU9bdy5kcmF3aW5nLnJJZF0uVGFyZ2V0Lm1hdGNoKC9cL2RyYXdpbmdzXC8oW2EtekEtWjAtOV0rKVsuXVthLXpBLVpdezMsNH0kLyk7VSYmay5kcmF3aW5nc1tVWzFd'@; put 'XS5hbmNob3JzLmZvckVhY2goUj0+e1IubWVkaXVtJiZ3Lm1lZGlhLnB1c2goe3R5cGU6ImltYWdlIixpbWFnZUlkOlIubWVkaXVtLmluZGV4LHJhbmdlOlIucmFuZ2UsaHlwZXJsaW5rczpSLnBpY3R1cmUuaHlwZXJsaW5rc30pfSl9Y29uc3Qgej13LmJhY2tncm91bmQmJk9bdy5iYWNrZ3Jv'@; put 'dW5kLnJJZF07aWYoeil7Y29uc3QgVT16LlRhcmdldC5zcGxpdCgiL21lZGlhLyIpWzFdLFY9ay5tZWRpYUluZGV4JiZrLm1lZGlhSW5kZXhbVV07dm9pZCAwIT09ViYmdy5tZWRpYS5wdXNoKHt0eXBlOiJiYWNrZ3JvdW5kIixpbWFnZUlkOlZ9KX13LnRhYmxlcz0ody50YWJsZXN8fFtdKS5t'@; put 'YXAoVT0+ay50YWJsZXNbT1tVLnJJZF0uVGFyZ2V0XSksZGVsZXRlIHcucmVsYXRpb25zaGlwcyxkZWxldGUgdy5oeXBlcmxpbmtzLGRlbGV0ZSB3LmNvbW1lbnRzfX1nLldPUktTSEVFVF9BVFRSSUJVVEVTPXt4bWxuczoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVh'@; put 'ZHNoZWV0bWwvMjAwNi9tYWluIiwieG1sbnM6ciI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiLCJ4bWxuczptYyI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0'@; put 'eS8yMDA2IiwibWM6SWdub3JhYmxlIjoieDE0YWMiLCJ4bWxuczp4MTRhYyI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIn0sRS5leHBvcnRzPWd9LHsiLi4vLi4vLi4vdXRpbHMvY29sLWNhY2hlIjoxOSwiLi4vLi4vLi4vdXRp'@; put 'bHMvdW5kZXItZGFzaCI6MjYsIi4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iOjI4LCIuLi8uLi9yZWwtdHlwZSI6MzEsIi4uL2Jhc2UteGZvcm0iOjMyLCIuLi9saXN0LXhmb3JtIjo3MSwiLi9hdXRvLWZpbHRlci14Zm9ybSI6NzIsIi4vY2YvY29uZGl0aW9uYWwtZm9ybWF0dGluZ3MteGZv'@; put 'cm0iOjg3LCIuL2NvbC14Zm9ybSI6OTIsIi4vZGF0YS12YWxpZGF0aW9ucy14Zm9ybSI6OTMsIi4vZGltZW5zaW9uLXhmb3JtIjo5NCwiLi9kcmF3aW5nLXhmb3JtIjo5NSwiLi9leHQtbHN0LXhmb3JtIjo5NiwiLi9oZWFkZXItZm9vdGVyLXhmb3JtIjo5NywiLi9oeXBlcmxpbmsteGZvcm0i'@; put 'Ojk4LCIuL21lcmdlLWNlbGwteGZvcm0iOjk5LCIuL21lcmdlcyI6MTAwLCIuL3BhZ2UtbWFyZ2lucy14Zm9ybSI6MTAzLCIuL3BhZ2Utc2V0dXAteGZvcm0iOjEwNSwiLi9waWN0dXJlLXhmb3JtIjoxMDYsIi4vcHJpbnQtb3B0aW9ucy14Zm9ybSI6MTA3LCIuL3Jvdy1icmVha3MteGZvcm0i'@; put 'OjEwOCwiLi9yb3cteGZvcm0iOjEwOSwiLi9zaGVldC1mb3JtYXQtcHJvcGVydGllcy14Zm9ybSI6MTEwLCIuL3NoZWV0LXByb3BlcnRpZXMteGZvcm0iOjExMSwiLi9zaGVldC1wcm90ZWN0aW9uLXhmb3JtIjoxMTIsIi4vc2hlZXQtdmlldy14Zm9ybSI6MTEzLCIuL3RhYmxlLXBhcnQteGZv'@; put 'cm0iOjExNH1dLDExNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGEpe3N1cGVyKCksdGhpcy50YWc9YS50YWcsdGhpcy5hdHRyPWEuYXR0cn1yZW5kZXIoYSxvKXtv'@; put 'JiYoYS5vcGVuTm9kZSh0aGlzLnRhZyksYS5jbG9zZU5vZGUoKSl9cGFyc2VPcGVuKGEpe2EubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD0hMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMTE3OltmdW5jdGlvbihzLEUs'@; put 'Uyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoYSl7c3VwZXIoKSx0aGlzLnRhZz1hLnRhZyx0aGlzLmF0dHI9YS5hdHRyLHRoaXMuYXR0cnM9YS5hdHRycyx0aGlzLl9mb3JtYXQ9YS5mb3JtYXR8'@; put 'fGZ1bmN0aW9uKG8pe3RyeXtyZXR1cm4gTnVtYmVyLmlzTmFOKG8uZ2V0VGltZSgpKT8iIjpvLnRvSVNPU3RyaW5nKCl9Y2F0Y2h7cmV0dXJuIiJ9fSx0aGlzLl9wYXJzZT1hLnBhcnNlfHxmdW5jdGlvbihvKXtyZXR1cm4gbmV3IERhdGUobyl9fXJlbmRlcihhLG8pe28mJihhLm9wZW5Ob2Rl'@; put 'KHRoaXMudGFnKSx0aGlzLmF0dHJzJiZhLmFkZEF0dHJpYnV0ZXModGhpcy5hdHRycyksdGhpcy5hdHRyP2EuYWRkQXR0cmlidXRlKHRoaXMuYXR0cix0aGlzLl9mb3JtYXQobykpOmEud3JpdGVUZXh0KHRoaXMuX2Zvcm1hdChvKSksYS5jbG9zZU5vZGUoKSl9cGFyc2VPcGVuKGEpe2EubmFt'@; put 'ZT09PXRoaXMudGFnJiYodGhpcy5hdHRyP3RoaXMubW9kZWw9dGhpcy5fcGFyc2UoYS5hdHRyaWJ1dGVzW3RoaXMuYXR0cl0pOnRoaXMudGV4dD1bXSl9cGFyc2VUZXh0KGEpe3RoaXMuYXR0cnx8dGhpcy50ZXh0LnB1c2goYSl9cGFyc2VDbG9zZSgpe3JldHVybiB0aGlzLmF0dHJ8fCh0aGlz'@; put 'Lm1vZGVsPXRoaXMuX3BhcnNlKHRoaXMudGV4dC5qb2luKCIiKSkpLCExfX19LHsiLi4vYmFzZS14Zm9ybSI6MzJ9XSwxMTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3Rv'@; put 'cihhKXtzdXBlcigpLHRoaXMudGFnPWEudGFnLHRoaXMuYXR0cj1hLmF0dHIsdGhpcy5hdHRycz1hLmF0dHJzLHRoaXMuemVybz1hLnplcm99cmVuZGVyKGEsbyl7KG98fHRoaXMuemVybykmJihhLm9wZW5Ob2RlKHRoaXMudGFnKSx0aGlzLmF0dHJzJiZhLmFkZEF0dHJpYnV0ZXModGhpcy5h'@; put 'dHRycyksdGhpcy5hdHRyP2EuYWRkQXR0cmlidXRlKHRoaXMuYXR0cixvKTphLndyaXRlVGV4dChvKSxhLmNsb3NlTm9kZSgpKX1wYXJzZU9wZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5hdHRyP3RoaXMubW9kZWw9cGFyc2VJbnQoYS5hdHRyaWJ1dGVzW3RoaXMuYXR0'@; put 'cl0sMTApOnRoaXMudGV4dD1bXSwhMCl9cGFyc2VUZXh0KGEpe3RoaXMuYXR0cnx8dGhpcy50ZXh0LnB1c2goYSl9cGFyc2VDbG9zZSgpe3JldHVybiB0aGlzLmF0dHJ8fCh0aGlzLm1vZGVsPXBhcnNlSW50KHRoaXMudGV4dC5qb2luKCIiKXx8MCwxMCkpLCExfX19LHsiLi4vYmFzZS14Zm9y'@; put 'bSI6MzJ9XSwxMTk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihhKXtzdXBlcigpLHRoaXMudGFnPWEudGFnLHRoaXMuYXR0cj1hLmF0dHIsdGhpcy5hdHRycz1hLmF0'@; put 'dHJzfXJlbmRlcihhLG8pe3ZvaWQgMCE9PW8mJihhLm9wZW5Ob2RlKHRoaXMudGFnKSx0aGlzLmF0dHJzJiZhLmFkZEF0dHJpYnV0ZXModGhpcy5hdHRycyksdGhpcy5hdHRyP2EuYWRkQXR0cmlidXRlKHRoaXMuYXR0cixvKTphLndyaXRlVGV4dChvKSxhLmNsb3NlTm9kZSgpKX1wYXJzZU9w'@; put 'ZW4oYSl7YS5uYW1lPT09dGhpcy50YWcmJih0aGlzLmF0dHI/dGhpcy5tb2RlbD1hLmF0dHJpYnV0ZXNbdGhpcy5hdHRyXTp0aGlzLnRleHQ9W10pfXBhcnNlVGV4dChhKXt0aGlzLmF0dHJ8fHRoaXMudGV4dC5wdXNoKGEpfXBhcnNlQ2xvc2UoKXtyZXR1cm4gdGhpcy5hdHRyfHwodGhpcy5t'@; put 'b2RlbD10aGlzLnRleHQuam9pbigiIikpLCExfX19LHsiLi4vYmFzZS14Zm9ybSI6MzJ9XSwxMjA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuL2Jhc2UteGZvcm0iKSxhPXMoIi4uLy4uL3V0aWxzL3htbC1zdHJlYW0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5k'@; put 'cyBie2NvbnN0cnVjdG9yKG8pe3N1cGVyKCksdGhpcy5fbW9kZWw9b31yZW5kZXIobyl7aWYoIXRoaXMuX3htbCl7Y29uc3Qgcj1uZXcgYTsoZnVuY3Rpb24gdChlLGwpe2Uub3Blbk5vZGUobC50YWcsbC4kKSxsLmMmJmwuYy5mb3JFYWNoKG49Pnt0KGUsbil9KSxsLnQmJmUud3JpdGVUZXh0'@; put 'KGwudCksZS5jbG9zZU5vZGUoKX0pKHIsdGhpcy5fbW9kZWwpLHRoaXMuX3htbD1yLnhtbH1vLndyaXRlWG1sKHRoaXMuX3htbCl9cGFyc2VPcGVuKCl7cmV0dXJuITB9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2Uobyl7cmV0dXJuIG8hPT10aGlzLl9tb2RlbC50YWd9fX0seyIuLi8uLi91dGls'@; put 'cy94bWwtc3RyZWFtIjoyOCwiLi9iYXNlLXhmb3JtIjozMn1dLDEyMTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4vdGV4dC14Zm9ybSIpLGE9cygiLi9yaWNoLXRleHQteGZvcm0iKSxvPXMoIi4uL2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5k'@; put 'cyBve2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17cjpuZXcgYSx0Om5ldyBifX1nZXQgdGFnKCl7cmV0dXJuInJQaCJ9cmVuZGVyKHIsdCl7aWYoci5vcGVuTm9kZSh0aGlzLnRhZyx7c2I6dC5zYnx8MCxlYjp0LmVifHwwfSksdCYmdC5oYXNPd25Qcm9wZXJ0eSgicmljaFRleHQi'@; put 'KSYmdC5yaWNoVGV4dCl7Y29uc3R7cjplfT10aGlzLm1hcDt0LnJpY2hUZXh0LmZvckVhY2gobD0+e2UucmVuZGVyKHIsbCl9KX1lbHNlIHQmJnRoaXMubWFwLnQucmVuZGVyKHIsdC50ZXh0KTtyLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihyKXtjb25zdHtuYW1lOnR9PXI7cmV0dXJuIHRoaXMu'@; put 'cGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITApOnQ9PT10aGlzLnRhZz8odGhpcy5tb2RlbD17c2I6cGFyc2VJbnQoci5hdHRyaWJ1dGVzLnNiLDEwKSxlYjpwYXJzZUludChyLmF0dHJpYnV0ZXMuZWIsMTApfSwhMCk6KHRoaXMucGFyc2VyPXRoaXMubWFwW3RdLCEhdGhpcy5w'@; put 'YXJzZXImJih0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITApKX1wYXJzZVRleHQocil7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChyKX1wYXJzZUNsb3NlKHIpe2lmKHRoaXMucGFyc2VyKXtpZighdGhpcy5wYXJzZXIucGFyc2VDbG9zZShyKSl7c3dpdGNoKHIpe2Nhc2Ui'@; put 'ciI6e2xldCB0PXRoaXMubW9kZWwucmljaFRleHQ7dHx8KHQ9dGhpcy5tb2RlbC5yaWNoVGV4dD1bXSksdC5wdXNoKHRoaXMucGFyc2VyLm1vZGVsKTticmVha31jYXNlInQiOnRoaXMubW9kZWwudGV4dD10aGlzLnBhcnNlci5tb2RlbH10aGlzLnBhcnNlcj12b2lkIDB9cmV0dXJuITB9cmV0'@; put 'dXJuIHIhPT10aGlzLnRhZ319fSx7Ii4uL2Jhc2UteGZvcm0iOjMyLCIuL3JpY2gtdGV4dC14Zm9ybSI6MTIyLCIuL3RleHQteGZvcm0iOjEyNX1dLDEyMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4vdGV4dC14Zm9ybSIpLGE9cygiLi4vc3R5bGUvZm9udC14'@; put 'Zm9ybSIpLG89cygiLi4vYmFzZS14Zm9ybSIpO2NsYXNzIHIgZXh0ZW5kcyBve2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5tb2RlbD1lfWdldCB0YWcoKXtyZXR1cm4iciJ9Z2V0IHRleHRYZm9ybSgpe3JldHVybiB0aGlzLl90ZXh0WGZvcm18fCh0aGlzLl90ZXh0WGZvcm09bmV3IGIp'@; put 'fWdldCBmb250WGZvcm0oKXtyZXR1cm4gdGhpcy5fZm9udFhmb3JtfHwodGhpcy5fZm9udFhmb3JtPW5ldyBhKHIuRk9OVF9PUFRJT05TKSl9cmVuZGVyKGUsbCl7bD1sfHx0aGlzLm1vZGVsLGUub3Blbk5vZGUoInIiKSxsLmZvbnQmJnRoaXMuZm9udFhmb3JtLnJlbmRlcihlLGwuZm9udCks'@; put 'dGhpcy50ZXh0WGZvcm0ucmVuZGVyKGUsbC50ZXh0KSxlLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihlKXtpZih0aGlzLnBhcnNlcilyZXR1cm4gdGhpcy5wYXJzZXIucGFyc2VPcGVuKGUpLCEwO3N3aXRjaChlLm5hbWUpe2Nhc2UiciI6cmV0dXJuIHRoaXMubW9kZWw9e30sITA7Y2FzZSJ0Ijpy'@; put 'ZXR1cm4gdGhpcy5wYXJzZXI9dGhpcy50ZXh0WGZvcm0sdGhpcy5wYXJzZXIucGFyc2VPcGVuKGUpLCEwO2Nhc2UiclByIjpyZXR1cm4gdGhpcy5wYXJzZXI9dGhpcy5mb250WGZvcm0sdGhpcy5wYXJzZXIucGFyc2VPcGVuKGUpLCEwO2RlZmF1bHQ6cmV0dXJuITF9fXBhcnNlVGV4dChlKXt0'@; put 'aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KGUpfXBhcnNlQ2xvc2UoZSl7c3dpdGNoKGUpe2Nhc2UiciI6cmV0dXJuITE7Y2FzZSJ0IjpyZXR1cm4gdGhpcy5tb2RlbC50ZXh0PXRoaXMucGFyc2VyLm1vZGVsLHRoaXMucGFyc2VyPXZvaWQgMCwhMDtjYXNlInJQciI6cmV0dXJu'@; put 'IHRoaXMubW9kZWwuZm9udD10aGlzLnBhcnNlci5tb2RlbCx0aGlzLnBhcnNlcj12b2lkIDAsITA7ZGVmYXVsdDpyZXR1cm4gdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlQ2xvc2UoZSksITB9fX1yLkZPTlRfT1BUSU9OUz17dGFnTmFtZToiclByIixmb250TmFtZVRhZzoickZvbnQi'@; put 'fSxFLmV4cG9ydHM9cn0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi4vc3R5bGUvZm9udC14Zm9ybSI6MTMxLCIuL3RleHQteGZvcm0iOjEyNX1dLDEyMzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4vdGV4dC14Zm9ybSIpLGE9cygiLi9yaWNoLXRleHQteGZvcm0i'@; put 'KSxvPXMoIi4vcGhvbmV0aWMtdGV4dC14Zm9ybSIpLHI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIHJ7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLm1vZGVsPXQsdGhpcy5tYXA9e3I6bmV3IGEsdDpuZXcgYixyUGg6bmV3IG99fWdldCB0YWcoKXtyZXR1'@; put 'cm4ic2kifXJlbmRlcih0LGUpe3Qub3Blbk5vZGUodGhpcy50YWcpLGUmJmUuaGFzT3duUHJvcGVydHkoInJpY2hUZXh0IikmJmUucmljaFRleHQ/ZS5yaWNoVGV4dC5sZW5ndGg/ZS5yaWNoVGV4dC5mb3JFYWNoKGw9Pnt0aGlzLm1hcC5yLnJlbmRlcih0LGwpfSk6dGhpcy5tYXAudC5yZW5k'@; put 'ZXIodCwiIik6bnVsbCE9ZSYmdGhpcy5tYXAudC5yZW5kZXIodCxlKSx0LmNsb3NlTm9kZSgpfXBhcnNlT3Blbih0KXtjb25zdHtuYW1lOmV9PXQ7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4odCksITApOmU9PT10aGlzLnRhZz8odGhpcy5tb2RlbD17fSwhMCk6'@; put 'KHRoaXMucGFyc2VyPXRoaXMubWFwW2VdLCEhdGhpcy5wYXJzZXImJih0aGlzLnBhcnNlci5wYXJzZU9wZW4odCksITApKX1wYXJzZVRleHQodCl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dCh0KX1wYXJzZUNsb3NlKHQpe2lmKHRoaXMucGFyc2VyKXtpZighdGhpcy5wYXJz'@; put 'ZXIucGFyc2VDbG9zZSh0KSl7c3dpdGNoKHQpe2Nhc2UiciI6e2xldCBlPXRoaXMubW9kZWwucmljaFRleHQ7ZXx8KGU9dGhpcy5tb2RlbC5yaWNoVGV4dD1bXSksZS5wdXNoKHRoaXMucGFyc2VyLm1vZGVsKTticmVha31jYXNlInQiOnRoaXMubW9kZWw9dGhpcy5wYXJzZXIubW9kZWx9dGhp'@; put 'cy5wYXJzZXI9dm9pZCAwfXJldHVybiEwfXJldHVybiB0IT09dGhpcy50YWd9fX0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi9waG9uZXRpYy10ZXh0LXhmb3JtIjoxMjEsIi4vcmljaC10ZXh0LXhmb3JtIjoxMjIsIi4vdGV4dC14Zm9ybSI6MTI1fV0sMTI0OltmdW5jdGlvbihzLEUsUyl7InVz'@; put 'ZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSIpLGE9cygiLi4vYmFzZS14Zm9ybSIpLG89cygiLi9zaGFyZWQtc3RyaW5nLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYXtjb25zdHJ1Y3RvcihyKXtzdXBlcigpLHRoaXMubW9kZWw9cnx8e3Zh'@; put 'bHVlczpbXSxjb3VudDowfSx0aGlzLmhhc2g9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnJpY2g9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXQgc2hhcmVkU3RyaW5nWGZvcm0oKXtyZXR1cm4gdGhpcy5fc2hhcmVkU3RyaW5nWGZvcm18fCh0aGlzLl9zaGFyZWRTdHJpbmdYZm9ybT1uZXcgbyl9'@; put 'Z2V0IHZhbHVlcygpe3JldHVybiB0aGlzLm1vZGVsLnZhbHVlc31nZXQgdW5pcXVlQ291bnQoKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZXMubGVuZ3RofWdldCBjb3VudCgpe3JldHVybiB0aGlzLm1vZGVsLmNvdW50fWdldFN0cmluZyhyKXtyZXR1cm4gdGhpcy5tb2RlbC52YWx1ZXNbcl19'@; put 'YWRkKHIpe3JldHVybiByLnJpY2hUZXh0P3RoaXMuYWRkUmljaFRleHQocik6dGhpcy5hZGRUZXh0KHIpfWFkZFRleHQocil7bGV0IHQ9dGhpcy5oYXNoW3JdO3JldHVybiB2b2lkIDA9PT10JiYodD10aGlzLmhhc2hbcl09dGhpcy5tb2RlbC52YWx1ZXMubGVuZ3RoLHRoaXMubW9kZWwudmFs'@; put 'dWVzLnB1c2gocikpLHRoaXMubW9kZWwuY291bnQrKyx0fWFkZFJpY2hUZXh0KHIpe2NvbnN0IHQ9dGhpcy5zaGFyZWRTdHJpbmdYZm9ybS50b1htbChyKTtsZXQgZT10aGlzLnJpY2hbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPXRoaXMucmljaFt0XT10aGlzLm1vZGVsLnZhbHVlcy5sZW5n'@; put 'dGgsdGhpcy5tb2RlbC52YWx1ZXMucHVzaChyKSksdGhpcy5tb2RlbC5jb3VudCsrLGV9cmVuZGVyKHIsdCl7dD10fHx0aGlzLl92YWx1ZXMsci5vcGVuWG1sKGIuU3RkRG9jQXR0cmlidXRlcyksci5vcGVuTm9kZSgic3N0Iix7eG1sbnM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRz'@; put 'Lm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIsY291bnQ6dC5jb3VudCx1bmlxdWVDb3VudDp0LnZhbHVlcy5sZW5ndGh9KTtjb25zdCBlPXRoaXMuc2hhcmVkU3RyaW5nWGZvcm07dC52YWx1ZXMuZm9yRWFjaChsPT57ZS5yZW5kZXIocixsKX0pLHIuY2xvc2VOb2RlKCl9cGFyc2VPcGVu'@; put 'KHIpe2lmKHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITA7c3dpdGNoKHIubmFtZSl7Y2FzZSJzc3QiOnJldHVybiEwO2Nhc2Uic2kiOnJldHVybiB0aGlzLnBhcnNlcj10aGlzLnNoYXJlZFN0cmluZ1hmb3JtLHRoaXMucGFyc2VyLnBhcnNlT3BlbihyKSwh'@; put 'MDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB4bWwgbm9kZSBpbiBwYXJzZU9wZW46ICIrSlNPTi5zdHJpbmdpZnkocikpfX1wYXJzZVRleHQocil7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChyKX1wYXJzZUNsb3NlKHIpe2lmKHRoaXMucGFyc2VyKXJl'@; put 'dHVybiB0aGlzLnBhcnNlci5wYXJzZUNsb3NlKHIpfHwodGhpcy5tb2RlbC52YWx1ZXMucHVzaCh0aGlzLnBhcnNlci5tb2RlbCksdGhpcy5tb2RlbC5jb3VudCsrLHRoaXMucGFyc2VyPXZvaWQgMCksITA7aWYoInNzdCI9PT1yKXJldHVybiExO3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3Rl'@; put 'ZCB4bWwgbm9kZSBpbiBwYXJzZUNsb3NlOiAiK3IpfX19LHsiLi4vLi4vLi4vdXRpbHMveG1sLXN0cmVhbSI6MjgsIi4uL2Jhc2UteGZvcm0iOjMyLCIuL3NoYXJlZC1zdHJpbmcteGZvcm0iOjEyM31dLDEyNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jh'@; put 'c2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2dldCB0YWcoKXtyZXR1cm4idCJ9cmVuZGVyKGEsbyl7YS5vcGVuTm9kZSgidCIpLC9eXHN8XG58XHMkLy50ZXN0KG8pJiZhLmFkZEF0dHJpYnV0ZSgieG1sOnNwYWNlIiwicHJlc2VydmUiKSxhLndyaXRlVGV4dChvKSxhLmNs'@; put 'b3NlTm9kZSgpfWdldCBtb2RlbCgpe3JldHVybiB0aGlzLl90ZXh0LmpvaW4oIiIpLnJlcGxhY2UoL194KFswLTlBLUZdezR9KV8vZywoYSxvKT0+U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChvLDE2KSkpfXBhcnNlT3BlbihhKXtyZXR1cm4idCI9PT1hLm5hbWUmJih0aGlzLl90ZXh0'@; put 'PVtdLCEwKX1wYXJzZVRleHQoYSl7dGhpcy5fdGV4dC5wdXNoKGEpfXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMTI2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vZG9jL2VudW1zIiksYT1zKCIuLi8uLi8u'@; put 'Li91dGlscy91dGlscyIpLG89cygiLi4vYmFzZS14Zm9ybSIpLHI9e2hvcml6b250YWxWYWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiLCJmaWxsIiwiY2VudGVyQ29udGludW91cyIsImRpc3RyaWJ1dGVkIiwianVzdGlmeSJdLnJlZHVjZSgoZSxsKT0+KGVbbF09ITAsZSkse30pLGhv'@; put 'cml6b250YWwoZSl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbFZhbHVlc1tlXT9lOnZvaWQgMH0sdmVydGljYWxWYWx1ZXM6WyJ0b3AiLCJtaWRkbGUiLCJib3R0b20iLCJkaXN0cmlidXRlZCIsImp1c3RpZnkiXS5yZWR1Y2UoKGUsbCk9PihlW2xdPSEwLGUpLHt9KSx2ZXJ0aWNhbChlKXtyZXR1'@; put 'cm4ibWlkZGxlIj09PWU/ImNlbnRlciI6dGhpcy52ZXJ0aWNhbFZhbHVlc1tlXT9lOnZvaWQgMH0sd3JhcFRleHQ6ZT0+ISFlfHx2b2lkIDAsc2hyaW5rVG9GaXQ6ZT0+ISFlfHx2b2lkIDAsdGV4dFJvdGF0aW9uOmU9PiJ2ZXJ0aWNhbCI9PT1lfHwoZT1hLnZhbGlkSW50KGUpKT49LTkwJiZl'@; put 'PD05MD9lOnZvaWQgMCxpbmRlbnQ6ZT0+KGU9YS52YWxpZEludChlKSxNYXRoLm1heCgwLGUpKSxyZWFkaW5nT3JkZXIoZSl7c3dpdGNoKGUpe2Nhc2UibHRyIjpyZXR1cm4gYi5SZWFkaW5nT3JkZXIuTGVmdFRvUmlnaHQ7Y2FzZSJydGwiOnJldHVybiBiLlJlYWRpbmdPcmRlci5SaWdodFRv'@; put 'TGVmdDtkZWZhdWx0OnJldHVybn19fSx0PXt0b1htbChlKXtpZihlPXIudGV4dFJvdGF0aW9uKGUpKXtpZigidmVydGljYWwiPT09ZSlyZXR1cm4gMjU1O2NvbnN0IGw9TWF0aC5yb3VuZChlKTtpZihsPj0wJiZsPD05MClyZXR1cm4gbDtpZihsPDAmJmw+PS05MClyZXR1cm4gOTAtbH19LHRv'@; put 'TW9kZWwoZSl7Y29uc3QgbD1hLnZhbGlkSW50KGUpO2lmKHZvaWQgMCE9PWwpe2lmKDI1NT09PWwpcmV0dXJuInZlcnRpY2FsIjtpZihsPj0wJiZsPD05MClyZXR1cm4gbDtpZihsPjkwJiZsPD0xODApcmV0dXJuIDkwLWx9fX07RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgb3tnZXQgdGFnKCl7'@; put 'cmV0dXJuImFsaWdubWVudCJ9cmVuZGVyKGUsbCl7ZS5hZGRSb2xsYmFjaygpLGUub3Blbk5vZGUoImFsaWdubWVudCIpO2xldCBuPSExO2Z1bmN0aW9uIGkoaCxmKXtmJiYoZS5hZGRBdHRyaWJ1dGUoaCxmKSxuPSEwKX1pKCJob3Jpem9udGFsIixyLmhvcml6b250YWwobC5ob3Jpem9udGFs'@; put 'KSksaSgidmVydGljYWwiLHIudmVydGljYWwobC52ZXJ0aWNhbCkpLGkoIndyYXBUZXh0IiwhIXIud3JhcFRleHQobC53cmFwVGV4dCkmJiIxIiksaSgic2hyaW5rVG9GaXQiLCEhci5zaHJpbmtUb0ZpdChsLnNocmlua1RvRml0KSYmIjEiKSxpKCJpbmRlbnQiLHIuaW5kZW50KGwuaW5kZW50'@; put 'KSksaSgidGV4dFJvdGF0aW9uIix0LnRvWG1sKGwudGV4dFJvdGF0aW9uKSksaSgicmVhZGluZ09yZGVyIixyLnJlYWRpbmdPcmRlcihsLnJlYWRpbmdPcmRlcikpLGUuY2xvc2VOb2RlKCksbj9lLmNvbW1pdCgpOmUucm9sbGJhY2soKX1wYXJzZU9wZW4oZSl7Y29uc3QgbD17fTtsZXQgbj0h'@; put 'MTtmdW5jdGlvbiBpKGgsZix1KXtoJiYobFtmXT11LG49ITApfWkoZS5hdHRyaWJ1dGVzLmhvcml6b250YWwsImhvcml6b250YWwiLGUuYXR0cmlidXRlcy5ob3Jpem9udGFsKSxpKGUuYXR0cmlidXRlcy52ZXJ0aWNhbCwidmVydGljYWwiLCJjZW50ZXIiPT09ZS5hdHRyaWJ1dGVzLnZlcnRp'@; put 'Y2FsPyJtaWRkbGUiOmUuYXR0cmlidXRlcy52ZXJ0aWNhbCksaShlLmF0dHJpYnV0ZXMud3JhcFRleHQsIndyYXBUZXh0IixhLnBhcnNlQm9vbGVhbihlLmF0dHJpYnV0ZXMud3JhcFRleHQpKSxpKGUuYXR0cmlidXRlcy5zaHJpbmtUb0ZpdCwic2hyaW5rVG9GaXQiLGEucGFyc2VCb29sZWFu'@; put 'KGUuYXR0cmlidXRlcy5zaHJpbmtUb0ZpdCkpLGkoZS5hdHRyaWJ1dGVzLmluZGVudCwiaW5kZW50IixwYXJzZUludChlLmF0dHJpYnV0ZXMuaW5kZW50LDEwKSksaShlLmF0dHJpYnV0ZXMudGV4dFJvdGF0aW9uLCJ0ZXh0Um90YXRpb24iLHQudG9Nb2RlbChlLmF0dHJpYnV0ZXMudGV4dFJv'@; put 'dGF0aW9uKSksaShlLmF0dHJpYnV0ZXMucmVhZGluZ09yZGVyLCJyZWFkaW5nT3JkZXIiLCIyIj09PWUuYXR0cmlidXRlcy5yZWFkaW5nT3JkZXI/InJ0bCI6Imx0ciIpLHRoaXMubW9kZWw9bj9sOm51bGx9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uLy4uLy4u'@; put 'L2RvYy9lbnVtcyI6NywiLi4vLi4vLi4vdXRpbHMvdXRpbHMiOjI3LCIuLi9iYXNlLXhmb3JtIjozMn1dLDEyNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKSxhPXMoIi4uLy4uLy4uL3V0aWxzL3V0aWxzIiksbz1zKCIuL2NvbG9yLXhm'@; put 'b3JtIik7Y2xhc3MgciBleHRlbmRzIGJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm5hbWU9ZSx0aGlzLm1hcD17Y29sb3I6bmV3IG99fWdldCB0YWcoKXtyZXR1cm4gdGhpcy5uYW1lfXJlbmRlcihlLGwsbil7Y29uc3QgaT1sJiZsLmNvbG9yfHxufHx0aGlzLmRlZmF1bHRDb2xvcjtl'@; put 'Lm9wZW5Ob2RlKHRoaXMubmFtZSksbCYmbC5zdHlsZSYmKGUuYWRkQXR0cmlidXRlKCJzdHlsZSIsbC5zdHlsZSksaSYmdGhpcy5tYXAuY29sb3IucmVuZGVyKGUsaSkpLGUuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKGUpe2lmKHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9w'@; put 'ZW4oZSksITA7c3dpdGNoKGUubmFtZSl7Y2FzZSB0aGlzLm5hbWU6e2NvbnN0e3N0eWxlOmx9PWUuYXR0cmlidXRlcztyZXR1cm4gdGhpcy5tb2RlbD1sP3tzdHlsZTpsfTp2b2lkIDAsITB9Y2FzZSJjb2xvciI6cmV0dXJuIHRoaXMucGFyc2VyPXRoaXMubWFwLmNvbG9yLHRoaXMucGFyc2Vy'@; put 'LnBhcnNlT3BlbihlKSwhMDtkZWZhdWx0OnJldHVybiExfX1wYXJzZVRleHQoZSl7dGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlVGV4dChlKX1wYXJzZUNsb3NlKGUpe3JldHVybiB0aGlzLnBhcnNlcj8odGhpcy5wYXJzZXIucGFyc2VDbG9zZShlKXx8KHRoaXMucGFyc2VyPXZvaWQg'@; put 'MCksITApOihlPT09dGhpcy5uYW1lJiZ0aGlzLm1hcC5jb2xvci5tb2RlbCYmKHRoaXMubW9kZWx8fCh0aGlzLm1vZGVsPXt9KSx0aGlzLm1vZGVsLmNvbG9yPXRoaXMubWFwLmNvbG9yLm1vZGVsKSwhMSl9dmFsaWRTdHlsZShlKXtyZXR1cm4gci52YWxpZFN0eWxlVmFsdWVzW2VdfX1yLnZh'@; put 'bGlkU3R5bGVWYWx1ZXM9WyJ0aGluIiwiZGFzaGVkIiwiZG90dGVkIiwiZGFzaERvdCIsImhhaXIiLCJkYXNoRG90RG90Iiwic2xhbnREYXNoRG90IiwibWVkaXVtRGFzaGVkIiwibWVkaXVtRGFzaERvdERvdCIsIm1lZGl1bURhc2hEb3QiLCJtZWRpdW0iLCJkb3VibGUiLCJ0aGljayJdLnJl'@; put 'ZHVjZSgodCxlKT0+KHRbZV09ITAsdCkse30pLEUuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXt0b3A6bmV3IHIoInRvcCIpLGxlZnQ6bmV3IHIoImxlZnQiKSxib3R0b206bmV3IHIoImJvdHRvbSIpLHJpZ2h0Om5ldyByKCJyaWdodCIp'@; put 'LGRpYWdvbmFsOm5ldyByKCJkaWFnb25hbCIpfX1yZW5kZXIodCxlKXtjb25zdHtjb2xvcjpsfT1lO2Z1bmN0aW9uIG4oaSxoKXtpJiYhaS5jb2xvciYmZS5jb2xvciYmKGk9ey4uLmksY29sb3I6ZS5jb2xvcn0pLGgucmVuZGVyKHQsaSxsKX10Lm9wZW5Ob2RlKCJib3JkZXIiKSxlLmRpYWdv'@; put 'bmFsJiZlLmRpYWdvbmFsLnN0eWxlJiYoZS5kaWFnb25hbC51cCYmdC5hZGRBdHRyaWJ1dGUoImRpYWdvbmFsVXAiLCIxIiksZS5kaWFnb25hbC5kb3duJiZ0LmFkZEF0dHJpYnV0ZSgiZGlhZ29uYWxEb3duIiwiMSIpKSxuKGUubGVmdCx0aGlzLm1hcC5sZWZ0KSxuKGUucmlnaHQsdGhpcy5t'@; put 'YXAucmlnaHQpLG4oZS50b3AsdGhpcy5tYXAudG9wKSxuKGUuYm90dG9tLHRoaXMubWFwLmJvdHRvbSksbihlLmRpYWdvbmFsLHRoaXMubWFwLmRpYWdvbmFsKSx0LmNsb3NlTm9kZSgpfXBhcnNlT3Blbih0KXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3Blbih0KSwh'@; put 'MCk6ImJvcmRlciI9PT10Lm5hbWU/KHRoaXMucmVzZXQoKSx0aGlzLmRpYWdvbmFsVXA9YS5wYXJzZUJvb2xlYW4odC5hdHRyaWJ1dGVzLmRpYWdvbmFsVXApLHRoaXMuZGlhZ29uYWxEb3duPWEucGFyc2VCb29sZWFuKHQuYXR0cmlidXRlcy5kaWFnb25hbERvd24pLCEwKToodGhpcy5wYXJz'@; put 'ZXI9dGhpcy5tYXBbdC5uYW1lXSwhIXRoaXMucGFyc2VyJiYodGhpcy5wYXJzZXIucGFyc2VPcGVuKHQpLCEwKSl9cGFyc2VUZXh0KHQpe3RoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQodCl9cGFyc2VDbG9zZSh0KXtpZih0aGlzLnBhcnNlcilyZXR1cm4gdGhpcy5wYXJzZXIu'@; put 'cGFyc2VDbG9zZSh0KXx8KHRoaXMucGFyc2VyPXZvaWQgMCksITA7aWYoImJvcmRlciI9PT10KXtjb25zdCBlPXRoaXMubW9kZWw9e30sbD1mdW5jdGlvbihuLGksaCl7aSYmKGgmJk9iamVjdC5hc3NpZ24oaSxoKSxlW25dPWkpfTtsKCJsZWZ0Iix0aGlzLm1hcC5sZWZ0Lm1vZGVsKSxsKCJy'@; put 'aWdodCIsdGhpcy5tYXAucmlnaHQubW9kZWwpLGwoInRvcCIsdGhpcy5tYXAudG9wLm1vZGVsKSxsKCJib3R0b20iLHRoaXMubWFwLmJvdHRvbS5tb2RlbCksbCgiZGlhZ29uYWwiLHRoaXMubWFwLmRpYWdvbmFsLm1vZGVsLHt1cDp0aGlzLmRpYWdvbmFsVXAsZG93bjp0aGlzLmRpYWdvbmFs'@; put 'RG93bn0pfXJldHVybiExfX19LHsiLi4vLi4vLi4vdXRpbHMvdXRpbHMiOjI3LCIuLi9iYXNlLXhmb3JtIjozMiwiLi9jb2xvci14Zm9ybSI6MTI4fV0sMTI4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBl'@; put 'eHRlbmRzIGJ7Y29uc3RydWN0b3IoYSl7c3VwZXIoKSx0aGlzLm5hbWU9YXx8ImNvbG9yIn1nZXQgdGFnKCl7cmV0dXJuIHRoaXMubmFtZX1yZW5kZXIoYSxvKXtyZXR1cm4hIW8mJihhLm9wZW5Ob2RlKHRoaXMubmFtZSksby5hcmdiP2EuYWRkQXR0cmlidXRlKCJyZ2IiLG8uYXJnYik6dm9p'@; put 'ZCAwIT09by50aGVtZT8oYS5hZGRBdHRyaWJ1dGUoInRoZW1lIixvLnRoZW1lKSx2b2lkIDAhPT1vLnRpbnQmJmEuYWRkQXR0cmlidXRlKCJ0aW50IixvLnRpbnQpKTp2b2lkIDAhPT1vLmluZGV4ZWQ/YS5hZGRBdHRyaWJ1dGUoImluZGV4ZWQiLG8uaW5kZXhlZCk6YS5hZGRBdHRyaWJ1dGUo'@; put 'ImF1dG8iLCIxIiksYS5jbG9zZU5vZGUoKSwhMCl9cGFyc2VPcGVuKGEpe3JldHVybiBhLm5hbWU9PT10aGlzLm5hbWUmJihhLmF0dHJpYnV0ZXMucmdiP3RoaXMubW9kZWw9e2FyZ2I6YS5hdHRyaWJ1dGVzLnJnYn06YS5hdHRyaWJ1dGVzLnRoZW1lPyh0aGlzLm1vZGVsPXt0aGVtZTpwYXJz'@; put 'ZUludChhLmF0dHJpYnV0ZXMudGhlbWUsMTApfSxhLmF0dHJpYnV0ZXMudGludCYmKHRoaXMubW9kZWwudGludD1wYXJzZUZsb2F0KGEuYXR0cmlidXRlcy50aW50KSkpOnRoaXMubW9kZWw9YS5hdHRyaWJ1dGVzLmluZGV4ZWQ/e2luZGV4ZWQ6cGFyc2VJbnQoYS5hdHRyaWJ1dGVzLmluZGV4'@; put 'ZWQsMTApfTp2b2lkIDAsITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDEyOTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKSxhPXMoIi4vYWxpZ25tZW50LXhmb3JtIiks'@; put 'bz1zKCIuL2JvcmRlci14Zm9ybSIpLHI9cygiLi9maWxsLXhmb3JtIiksdD1zKCIuL2ZvbnQteGZvcm0iKSxlPXMoIi4vbnVtZm10LXhmb3JtIiksbD1zKCIuL3Byb3RlY3Rpb24teGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1h'@; put 'cD17YWxpZ25tZW50Om5ldyBhLGJvcmRlcjpuZXcgbyxmaWxsOm5ldyByLGZvbnQ6bmV3IHQsbnVtRm10Om5ldyBlLHByb3RlY3Rpb246bmV3IGx9fWdldCB0YWcoKXtyZXR1cm4iZHhmIn1yZW5kZXIobixpKXtuLm9wZW5Ob2RlKHRoaXMudGFnKSxpLmZvbnQmJnRoaXMubWFwLmZvbnQucmVu'@; put 'ZGVyKG4saS5mb250KSxpLm51bUZtdCYmaS5udW1GbXRJZCYmdGhpcy5tYXAubnVtRm10LnJlbmRlcihuLHtpZDppLm51bUZtdElkLGZvcm1hdENvZGU6aS5udW1GbXR9KSxpLmZpbGwmJnRoaXMubWFwLmZpbGwucmVuZGVyKG4saS5maWxsKSxpLmFsaWdubWVudCYmdGhpcy5tYXAuYWxpZ25t'@; put 'ZW50LnJlbmRlcihuLGkuYWxpZ25tZW50KSxpLmJvcmRlciYmdGhpcy5tYXAuYm9yZGVyLnJlbmRlcihuLGkuYm9yZGVyKSxpLnByb3RlY3Rpb24mJnRoaXMubWFwLnByb3RlY3Rpb24ucmVuZGVyKG4saS5wcm90ZWN0aW9uKSxuLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihuKXtyZXR1cm4gdGhp'@; put 'cy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihuKSwhMCk6bi5uYW1lPT09dGhpcy50YWc/KHRoaXMucmVzZXQoKSwhMCk6KHRoaXMucGFyc2VyPXRoaXMubWFwW24ubmFtZV0sdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlT3BlbihuKSwhMCl9cGFyc2VUZXh0KG4pe3RoaXMu'@; put 'cGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQobil9cGFyc2VDbG9zZShuKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlQ2xvc2Uobil8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwKTpuIT09dGhpcy50YWd8fCh0aGlzLm1vZGVsPXthbGlnbm1lbnQ6dGhpcy5tYXAu'@; put 'YWxpZ25tZW50Lm1vZGVsLGJvcmRlcjp0aGlzLm1hcC5ib3JkZXIubW9kZWwsZmlsbDp0aGlzLm1hcC5maWxsLm1vZGVsLGZvbnQ6dGhpcy5tYXAuZm9udC5tb2RlbCxudW1GbXQ6dGhpcy5tYXAubnVtRm10Lm1vZGVsLHByb3RlY3Rpb246dGhpcy5tYXAucHJvdGVjdGlvbi5tb2RlbH0sITEp'@; put 'fX19LHsiLi4vYmFzZS14Zm9ybSI6MzIsIi4vYWxpZ25tZW50LXhmb3JtIjoxMjYsIi4vYm9yZGVyLXhmb3JtIjoxMjcsIi4vZmlsbC14Zm9ybSI6MTMwLCIuL2ZvbnQteGZvcm0iOjEzMSwiLi9udW1mbXQteGZvcm0iOjEzMiwiLi9wcm90ZWN0aW9uLXhmb3JtIjoxMzN9XSwxMzA6W2Z1bmN0'@; put 'aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIiksYT1zKCIuL2NvbG9yLXhmb3JtIik7Y2xhc3MgbyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXtjb2xvcjpuZXcgYX19Z2V0IHRhZygpe3JldHVybiJzdG9wIn1yZW5kZXIo'@; put 'bixpKXtuLm9wZW5Ob2RlKCJzdG9wIiksbi5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixpLnBvc2l0aW9uKSx0aGlzLm1hcC5jb2xvci5yZW5kZXIobixpLmNvbG9yKSxuLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihuKXtpZih0aGlzLnBhcnNlcilyZXR1cm4gdGhpcy5wYXJzZXIucGFyc2VPcGVu'@; put 'KG4pLCEwO3N3aXRjaChuLm5hbWUpe2Nhc2Uic3RvcCI6cmV0dXJuIHRoaXMubW9kZWw9e3Bvc2l0aW9uOnBhcnNlRmxvYXQobi5hdHRyaWJ1dGVzLnBvc2l0aW9uKX0sITA7Y2FzZSJjb2xvciI6cmV0dXJuIHRoaXMucGFyc2VyPXRoaXMubWFwLmNvbG9yLHRoaXMucGFyc2VyLnBhcnNlT3Bl'@; put 'bihuKSwhMDtkZWZhdWx0OnJldHVybiExfX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZShuKXtyZXR1cm4hIXRoaXMucGFyc2VyJiYodGhpcy5wYXJzZXIucGFyc2VDbG9zZShuKXx8KHRoaXMubW9kZWwuY29sb3I9dGhpcy5wYXJzZXIubW9kZWwsdGhpcy5wYXJzZXI9dm9pZCAwKSwhMCl9fWNs'@; put 'YXNzIHIgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17ZmdDb2xvcjpuZXcgYSgiZmdDb2xvciIpLGJnQ29sb3I6bmV3IGEoImJnQ29sb3IiKX19Z2V0IG5hbWUoKXtyZXR1cm4icGF0dGVybiJ9Z2V0IHRhZygpe3JldHVybiJwYXR0ZXJuRmlsbCJ9cmVuZGVyKG4s'@; put 'aSl7bi5vcGVuTm9kZSgicGF0dGVybkZpbGwiKSxuLmFkZEF0dHJpYnV0ZSgicGF0dGVyblR5cGUiLGkucGF0dGVybiksaS5mZ0NvbG9yJiZ0aGlzLm1hcC5mZ0NvbG9yLnJlbmRlcihuLGkuZmdDb2xvciksaS5iZ0NvbG9yJiZ0aGlzLm1hcC5iZ0NvbG9yLnJlbmRlcihuLGkuYmdDb2xvciks'@; put 'bi5jbG9zZU5vZGUoKX1wYXJzZU9wZW4obil7cmV0dXJuIHRoaXMucGFyc2VyPyh0aGlzLnBhcnNlci5wYXJzZU9wZW4obiksITApOiJwYXR0ZXJuRmlsbCI9PT1uLm5hbWU/KHRoaXMubW9kZWw9e3R5cGU6InBhdHRlcm4iLHBhdHRlcm46bi5hdHRyaWJ1dGVzLnBhdHRlcm5UeXBlfSwhMCk6'@; put 'KHRoaXMucGFyc2VyPXRoaXMubWFwW24ubmFtZV0sISF0aGlzLnBhcnNlciYmKHRoaXMucGFyc2VyLnBhcnNlT3BlbihuKSwhMCkpfXBhcnNlVGV4dChuKXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KG4pfXBhcnNlQ2xvc2Uobil7cmV0dXJuISF0aGlzLnBhcnNlciYmKHRo'@; put 'aXMucGFyc2VyLnBhcnNlQ2xvc2Uobil8fCh0aGlzLnBhcnNlci5tb2RlbCYmKHRoaXMubW9kZWxbbl09dGhpcy5wYXJzZXIubW9kZWwpLHRoaXMucGFyc2VyPXZvaWQgMCksITApfX1jbGFzcyB0IGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9e3N0b3A6bmV3IG99'@; put 'fWdldCBuYW1lKCl7cmV0dXJuImdyYWRpZW50In1nZXQgdGFnKCl7cmV0dXJuImdyYWRpZW50RmlsbCJ9cmVuZGVyKG4saSl7c3dpdGNoKG4ub3Blbk5vZGUoImdyYWRpZW50RmlsbCIpLGkuZ3JhZGllbnQpe2Nhc2UiYW5nbGUiOm4uYWRkQXR0cmlidXRlKCJkZWdyZWUiLGkuZGVncmVlKTti'@; put 'cmVhaztjYXNlInBhdGgiOm4uYWRkQXR0cmlidXRlKCJ0eXBlIiwicGF0aCIpLGkuY2VudGVyLmxlZnQmJihuLmFkZEF0dHJpYnV0ZSgibGVmdCIsaS5jZW50ZXIubGVmdCksdm9pZCAwPT09aS5jZW50ZXIucmlnaHQmJm4uYWRkQXR0cmlidXRlKCJyaWdodCIsaS5jZW50ZXIubGVmdCkpLGku'@; put 'Y2VudGVyLnJpZ2h0JiZuLmFkZEF0dHJpYnV0ZSgicmlnaHQiLGkuY2VudGVyLnJpZ2h0KSxpLmNlbnRlci50b3AmJihuLmFkZEF0dHJpYnV0ZSgidG9wIixpLmNlbnRlci50b3ApLHZvaWQgMD09PWkuY2VudGVyLmJvdHRvbSYmbi5hZGRBdHRyaWJ1dGUoImJvdHRvbSIsaS5jZW50ZXIudG9w'@; put 'KSksaS5jZW50ZXIuYm90dG9tJiZuLmFkZEF0dHJpYnV0ZSgiYm90dG9tIixpLmNlbnRlci5ib3R0b20pfWNvbnN0IGg9dGhpcy5tYXAuc3RvcDtpLnN0b3BzLmZvckVhY2goZj0+e2gucmVuZGVyKG4sZil9KSxuLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihuKXtpZih0aGlzLnBhcnNlcilyZXR1'@; put 'cm4gdGhpcy5wYXJzZXIucGFyc2VPcGVuKG4pLCEwO3N3aXRjaChuLm5hbWUpe2Nhc2UiZ3JhZGllbnRGaWxsIjp7Y29uc3QgaT10aGlzLm1vZGVsPXtzdG9wczpbXX07cmV0dXJuIG4uYXR0cmlidXRlcy5kZWdyZWU/KGkuZ3JhZGllbnQ9ImFuZ2xlIixpLmRlZ3JlZT1wYXJzZUludChuLmF0'@; put 'dHJpYnV0ZXMuZGVncmVlLDEwKSk6InBhdGgiPT09bi5hdHRyaWJ1dGVzLnR5cGUmJihpLmdyYWRpZW50PSJwYXRoIixpLmNlbnRlcj17bGVmdDpuLmF0dHJpYnV0ZXMubGVmdD9wYXJzZUZsb2F0KG4uYXR0cmlidXRlcy5sZWZ0KTowLHRvcDpuLmF0dHJpYnV0ZXMudG9wP3BhcnNlRmxvYXQo'@; put 'bi5hdHRyaWJ1dGVzLnRvcCk6MH0sbi5hdHRyaWJ1dGVzLnJpZ2h0IT09bi5hdHRyaWJ1dGVzLmxlZnQmJihpLmNlbnRlci5yaWdodD1uLmF0dHJpYnV0ZXMucmlnaHQ/cGFyc2VGbG9hdChuLmF0dHJpYnV0ZXMucmlnaHQpOjApLG4uYXR0cmlidXRlcy5ib3R0b20hPT1uLmF0dHJpYnV0ZXMu'@; put 'dG9wJiYoaS5jZW50ZXIuYm90dG9tPW4uYXR0cmlidXRlcy5ib3R0b20/cGFyc2VGbG9hdChuLmF0dHJpYnV0ZXMuYm90dG9tKTowKSksITB9Y2FzZSJzdG9wIjpyZXR1cm4gdGhpcy5wYXJzZXI9dGhpcy5tYXAuc3RvcCx0aGlzLnBhcnNlci5wYXJzZU9wZW4obiksITA7ZGVmYXVsdDpyZXR1'@; put 'cm4hMX19cGFyc2VUZXh0KG4pe3RoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQobil9cGFyc2VDbG9zZShuKXtyZXR1cm4hIXRoaXMucGFyc2VyJiYodGhpcy5wYXJzZXIucGFyc2VDbG9zZShuKXx8KHRoaXMubW9kZWwuc3RvcHMucHVzaCh0aGlzLnBhcnNlci5tb2RlbCksdGhp'@; put 'cy5wYXJzZXI9dm9pZCAwKSwhMCl9fWNsYXNzIGUgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm1hcD17cGF0dGVybkZpbGw6bmV3IHIsZ3JhZGllbnRGaWxsOm5ldyB0fX1nZXQgdGFnKCl7cmV0dXJuImZpbGwifXJlbmRlcihuLGkpe3N3aXRjaChuLmFkZFJvbGxiYWNr'@; put 'KCksbi5vcGVuTm9kZSgiZmlsbCIpLGkudHlwZSl7Y2FzZSJwYXR0ZXJuIjp0aGlzLm1hcC5wYXR0ZXJuRmlsbC5yZW5kZXIobixpKTticmVhaztjYXNlImdyYWRpZW50Ijp0aGlzLm1hcC5ncmFkaWVudEZpbGwucmVuZGVyKG4saSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdm9pZCBuLnJvbGxi'@; put 'YWNrKCl9bi5jbG9zZU5vZGUoKSxuLmNvbW1pdCgpfXBhcnNlT3BlbihuKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlT3BlbihuKSwhMCk6ImZpbGwiPT09bi5uYW1lPyh0aGlzLm1vZGVsPXt9LCEwKToodGhpcy5wYXJzZXI9dGhpcy5tYXBbbi5uYW1lXSwhIXRoaXMu'@; put 'cGFyc2VyJiYodGhpcy5wYXJzZXIucGFyc2VPcGVuKG4pLCEwKSl9cGFyc2VUZXh0KG4pe3RoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQobil9cGFyc2VDbG9zZShuKXtyZXR1cm4hIXRoaXMucGFyc2VyJiYodGhpcy5wYXJzZXIucGFyc2VDbG9zZShuKXx8KHRoaXMubW9kZWw9'@; put 'dGhpcy5wYXJzZXIubW9kZWwsdGhpcy5tb2RlbC50eXBlPXRoaXMucGFyc2VyLm5hbWUsdGhpcy5wYXJzZXI9dm9pZCAwKSwhMCl9dmFsaWRTdHlsZShuKXtyZXR1cm4gZS52YWxpZFBhdHRlcm5WYWx1ZXNbbl19fWUudmFsaWRQYXR0ZXJuVmFsdWVzPVsibm9uZSIsInNvbGlkIiwiZGFya1Zl'@; put 'cnRpY2FsIiwiZGFya0dyYXkiLCJtZWRpdW1HcmF5IiwibGlnaHRHcmF5IiwiZ3JheTEyNSIsImdyYXkwNjI1IiwiZGFya0hvcml6b250YWwiLCJkYXJrVmVydGljYWwiLCJkYXJrRG93biIsImRhcmtVcCIsImRhcmtHcmlkIiwiZGFya1RyZWxsaXMiLCJsaWdodEhvcml6b250YWwiLCJsaWdo'@; put 'dFZlcnRpY2FsIiwibGlnaHREb3duIiwibGlnaHRVcCIsImxpZ2h0R3JpZCIsImxpZ2h0VHJlbGxpcyIsImxpZ2h0R3JpZCJdLnJlZHVjZSgobCxuKT0+KGxbbl09ITAsbCkse30pLGUuU3RvcFhmb3JtPW8sZS5QYXR0ZXJuRmlsbFhmb3JtPXIsZS5HcmFkaWVudEZpbGxYZm9ybT10LEUuZXhw'@; put 'b3J0cz1lfSx7Ii4uL2Jhc2UteGZvcm0iOjMyLCIuL2NvbG9yLXhmb3JtIjoxMjh9XSwxMzE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuL2NvbG9yLXhmb3JtIiksYT1zKCIuLi9zaW1wbGUvYm9vbGVhbi14Zm9ybSIpLG89cygiLi4vc2ltcGxlL2ludGVnZXIt'@; put 'eGZvcm0iKSxyPXMoIi4uL3NpbXBsZS9zdHJpbmcteGZvcm0iKSx0PXMoIi4vdW5kZXJsaW5lLXhmb3JtIiksZT1zKCIuLi8uLi8uLi91dGlscy91bmRlci1kYXNoIiksbD1zKCIuLi9iYXNlLXhmb3JtIik7Y2xhc3MgbiBleHRlbmRzIGx7Y29uc3RydWN0b3IoaCl7c3VwZXIoKSx0aGlzLm9w'@; put 'dGlvbnM9aHx8bi5PUFRJT05TLHRoaXMubWFwPXtiOntwcm9wOiJib2xkIix4Zm9ybTpuZXcgYSh7dGFnOiJiIixhdHRyOiJ2YWwifSl9LGk6e3Byb3A6Iml0YWxpYyIseGZvcm06bmV3IGEoe3RhZzoiaSIsYXR0cjoidmFsIn0pfSx1Ontwcm9wOiJ1bmRlcmxpbmUiLHhmb3JtOm5ldyB0fSxj'@; put 'aGFyc2V0Ontwcm9wOiJjaGFyc2V0Iix4Zm9ybTpuZXcgbyh7dGFnOiJjaGFyc2V0IixhdHRyOiJ2YWwifSl9LGNvbG9yOntwcm9wOiJjb2xvciIseGZvcm06bmV3IGJ9LGNvbmRlbnNlOntwcm9wOiJjb25kZW5zZSIseGZvcm06bmV3IGEoe3RhZzoiY29uZGVuc2UiLGF0dHI6InZhbCJ9KX0s'@; put 'ZXh0ZW5kOntwcm9wOiJleHRlbmQiLHhmb3JtOm5ldyBhKHt0YWc6ImV4dGVuZCIsYXR0cjoidmFsIn0pfSxmYW1pbHk6e3Byb3A6ImZhbWlseSIseGZvcm06bmV3IG8oe3RhZzoiZmFtaWx5IixhdHRyOiJ2YWwifSl9LG91dGxpbmU6e3Byb3A6Im91dGxpbmUiLHhmb3JtOm5ldyBhKHt0YWc6'@; put 'Im91dGxpbmUiLGF0dHI6InZhbCJ9KX0sdmVydEFsaWduOntwcm9wOiJ2ZXJ0QWxpZ24iLHhmb3JtOm5ldyByKHt0YWc6InZlcnRBbGlnbiIsYXR0cjoidmFsIn0pfSxzY2hlbWU6e3Byb3A6InNjaGVtZSIseGZvcm06bmV3IHIoe3RhZzoic2NoZW1lIixhdHRyOiJ2YWwifSl9LHNoYWRvdzp7'@; put 'cHJvcDoic2hhZG93Iix4Zm9ybTpuZXcgYSh7dGFnOiJzaGFkb3ciLGF0dHI6InZhbCJ9KX0sc3RyaWtlOntwcm9wOiJzdHJpa2UiLHhmb3JtOm5ldyBhKHt0YWc6InN0cmlrZSIsYXR0cjoidmFsIn0pfSxzejp7cHJvcDoic2l6ZSIseGZvcm06bmV3IG8oe3RhZzoic3oiLGF0dHI6InZhbCJ9'@; put 'KX19LHRoaXMubWFwW3RoaXMub3B0aW9ucy5mb250TmFtZVRhZ109e3Byb3A6Im5hbWUiLHhmb3JtOm5ldyByKHt0YWc6dGhpcy5vcHRpb25zLmZvbnROYW1lVGFnLGF0dHI6InZhbCJ9KX19Z2V0IHRhZygpe3JldHVybiB0aGlzLm9wdGlvbnMudGFnTmFtZX1yZW5kZXIoaCxmKXtjb25zdHtt'@; put 'YXA6dX09dGhpcztoLm9wZW5Ob2RlKHRoaXMub3B0aW9ucy50YWdOYW1lKSxlLmVhY2godGhpcy5tYXAsKHAsZCk9Pnt1W2RdLnhmb3JtLnJlbmRlcihoLGZbcC5wcm9wXSl9KSxoLmNsb3NlTm9kZSgpfXBhcnNlT3BlbihoKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNl'@; put 'T3BlbihoKSwhMCk6dGhpcy5tYXBbaC5uYW1lXT8odGhpcy5wYXJzZXI9dGhpcy5tYXBbaC5uYW1lXS54Zm9ybSx0aGlzLnBhcnNlci5wYXJzZU9wZW4oaCkpOmgubmFtZT09PXRoaXMub3B0aW9ucy50YWdOYW1lJiYodGhpcy5tb2RlbD17fSwhMCl9cGFyc2VUZXh0KGgpe3RoaXMucGFyc2Vy'@; put 'JiZ0aGlzLnBhcnNlci5wYXJzZVRleHQoaCl9cGFyc2VDbG9zZShoKXtyZXR1cm4gdGhpcy5wYXJzZXImJiF0aGlzLnBhcnNlci5wYXJzZUNsb3NlKGgpPyh0aGlzLnBhcnNlci5tb2RlbCYmKHRoaXMubW9kZWxbdGhpcy5tYXBbaF0ucHJvcF09dGhpcy5wYXJzZXIubW9kZWwpLHRoaXMucGFy'@; put 'c2VyPXZvaWQgMCwhMCk6aCE9PXRoaXMub3B0aW9ucy50YWdOYW1lfX1uLk9QVElPTlM9e3RhZ05hbWU6ImZvbnQiLGZvbnROYW1lVGFnOiJuYW1lIn0sRS5leHBvcnRzPW59LHsiLi4vLi4vLi4vdXRpbHMvdW5kZXItZGFzaCI6MjYsIi4uL2Jhc2UteGZvcm0iOjMyLCIuLi9zaW1wbGUvYm9v'@; put 'bGVhbi14Zm9ybSI6MTE2LCIuLi9zaW1wbGUvaW50ZWdlci14Zm9ybSI6MTE4LCIuLi9zaW1wbGUvc3RyaW5nLXhmb3JtIjoxMTksIi4vY29sb3IteGZvcm0iOjEyOCwiLi91bmRlcmxpbmUteGZvcm0iOjEzNn1dLDEzMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMo'@; put 'Ii4uLy4uLy4uL3V0aWxzL3VuZGVyLWRhc2giKSxhPXMoIi4uLy4uL2RlZmF1bHRudW1mb3JtYXRzIiksbz1zKCIuLi9iYXNlLXhmb3JtIikscj1mdW5jdGlvbigpe2NvbnN0IGU9e307cmV0dXJuIGIuZWFjaChhLChsLG4pPT57bC5mJiYoZVtsLmZdPXBhcnNlSW50KG4sMTApKX0pLGV9KCk7'@; put 'Y2xhc3MgdCBleHRlbmRzIG97Y29uc3RydWN0b3IobCxuKXtzdXBlcigpLHRoaXMuaWQ9bCx0aGlzLmZvcm1hdENvZGU9bn1nZXQgdGFnKCl7cmV0dXJuIm51bUZtdCJ9cmVuZGVyKGwsbil7bC5sZWFmTm9kZSgibnVtRm10Iix7bnVtRm10SWQ6bi5pZCxmb3JtYXRDb2RlOm4uZm9ybWF0Q29k'@; put 'ZX0pfXBhcnNlT3BlbihsKXtyZXR1cm4ibnVtRm10Ij09PWwubmFtZSYmKHRoaXMubW9kZWw9e2lkOnBhcnNlSW50KGwuYXR0cmlidXRlcy5udW1GbXRJZCwxMCksZm9ybWF0Q29kZTpsLmF0dHJpYnV0ZXMuZm9ybWF0Q29kZS5yZXBsYWNlKC9bXFxdKC4pL2csIiQxIil9LCEwKX1wYXJzZVRl'@; put 'eHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX10LmdldERlZmF1bHRGbXRJZD1mdW5jdGlvbihlKXtyZXR1cm4gcltlXX0sdC5nZXREZWZhdWx0Rm10Q29kZT1mdW5jdGlvbihlKXtyZXR1cm4gYVtlXSYmYVtlXS5mfSxFLmV4cG9ydHM9dH0seyIuLi8uLi8uLi91dGlscy91bmRlci1kYXNo'@; put 'IjoyNiwiLi4vLi4vZGVmYXVsdG51bWZvcm1hdHMiOjMwLCIuLi9iYXNlLXhmb3JtIjozMn1dLDEzMzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKSxhX2Jvb2xlYW49KG8scik9PnZvaWQgMD09PW8/cjpvO0UuZXhwb3J0cz1jbGFzcyBl'@; put 'eHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJwcm90ZWN0aW9uIn1yZW5kZXIobyxyKXtvLmFkZFJvbGxiYWNrKCksby5vcGVuTm9kZSgicHJvdGVjdGlvbiIpO2xldCB0PSExO2Z1bmN0aW9uIGUobCxuKXt2b2lkIDAhPT1uJiYoby5hZGRBdHRyaWJ1dGUobCxuKSx0PSEwKX1lKCJsb2NrZWQi'@; put 'LGFfYm9vbGVhbihyLmxvY2tlZCwhMCk/dm9pZCAwOiIwIiksZSgiaGlkZGVuIixhX2Jvb2xlYW4oci5oaWRkZW4sITEpPyIxIjp2b2lkIDApLG8uY2xvc2VOb2RlKCksdD9vLmNvbW1pdCgpOm8ucm9sbGJhY2soKX1wYXJzZU9wZW4obyl7Y29uc3Qgcj17bG9ja2VkOiIwIiE9PW8uYXR0cmli'@; put 'dXRlcy5sb2NrZWQsaGlkZGVuOiIxIj09PW8uYXR0cmlidXRlcy5oaWRkZW59O3RoaXMubW9kZWw9IXIubG9ja2VkfHxyLmhpZGRlbj9yOm51bGx9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMTM0OltmdW5jdGlvbihzLEUsUyl7'@; put 'InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpLGE9cygiLi9hbGlnbm1lbnQteGZvcm0iKSxvPXMoIi4vcHJvdGVjdGlvbi14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Y29uc3RydWN0b3Iocil7c3VwZXIoKSx0aGlzLnhmSWQ9ISghcnx8IXIueGZJZCks'@; put 'dGhpcy5tYXA9e2FsaWdubWVudDpuZXcgYSxwcm90ZWN0aW9uOm5ldyBvfX1nZXQgdGFnKCl7cmV0dXJuInhmIn1yZW5kZXIocix0KXtyLm9wZW5Ob2RlKCJ4ZiIse251bUZtdElkOnQubnVtRm10SWR8fDAsZm9udElkOnQuZm9udElkfHwwLGZpbGxJZDp0LmZpbGxJZHx8MCxib3JkZXJJZDp0'@; put 'LmJvcmRlcklkfHwwfSksdGhpcy54ZklkJiZyLmFkZEF0dHJpYnV0ZSgieGZJZCIsdC54ZklkfHwwKSx0Lm51bUZtdElkJiZyLmFkZEF0dHJpYnV0ZSgiYXBwbHlOdW1iZXJGb3JtYXQiLCIxIiksdC5mb250SWQmJnIuYWRkQXR0cmlidXRlKCJhcHBseUZvbnQiLCIxIiksdC5maWxsSWQmJnIu'@; put 'YWRkQXR0cmlidXRlKCJhcHBseUZpbGwiLCIxIiksdC5ib3JkZXJJZCYmci5hZGRBdHRyaWJ1dGUoImFwcGx5Qm9yZGVyIiwiMSIpLHQuYWxpZ25tZW50JiZyLmFkZEF0dHJpYnV0ZSgiYXBwbHlBbGlnbm1lbnQiLCIxIiksdC5wcm90ZWN0aW9uJiZyLmFkZEF0dHJpYnV0ZSgiYXBwbHlQcm90'@; put 'ZWN0aW9uIiwiMSIpLHQuYWxpZ25tZW50JiZ0aGlzLm1hcC5hbGlnbm1lbnQucmVuZGVyKHIsdC5hbGlnbm1lbnQpLHQucHJvdGVjdGlvbiYmdGhpcy5tYXAucHJvdGVjdGlvbi5yZW5kZXIocix0LnByb3RlY3Rpb24pLHIuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKHIpe2lmKHRoaXMucGFyc2Vy'@; put 'KXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITA7c3dpdGNoKHIubmFtZSl7Y2FzZSJ4ZiI6cmV0dXJuIHRoaXMubW9kZWw9e251bUZtdElkOnBhcnNlSW50KHIuYXR0cmlidXRlcy5udW1GbXRJZCwxMCksZm9udElkOnBhcnNlSW50KHIuYXR0cmlidXRlcy5mb250SWQsMTApLGZp'@; put 'bGxJZDpwYXJzZUludChyLmF0dHJpYnV0ZXMuZmlsbElkLDEwKSxib3JkZXJJZDpwYXJzZUludChyLmF0dHJpYnV0ZXMuYm9yZGVySWQsMTApfSx0aGlzLnhmSWQmJih0aGlzLm1vZGVsLnhmSWQ9cGFyc2VJbnQoci5hdHRyaWJ1dGVzLnhmSWQsMTApKSwhMDtjYXNlImFsaWdubWVudCI6cmV0'@; put 'dXJuIHRoaXMucGFyc2VyPXRoaXMubWFwLmFsaWdubWVudCx0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITA7Y2FzZSJwcm90ZWN0aW9uIjpyZXR1cm4gdGhpcy5wYXJzZXI9dGhpcy5tYXAucHJvdGVjdGlvbix0aGlzLnBhcnNlci5wYXJzZU9wZW4ociksITA7ZGVmYXVsdDpyZXR1cm4hMX19'@; put 'cGFyc2VUZXh0KHIpe3RoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQocil9cGFyc2VDbG9zZShyKXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlQ2xvc2Uocil8fCh0aGlzLm1hcC5wcm90ZWN0aW9uPT09dGhpcy5wYXJzZXI/dGhpcy5tb2RlbC5wcm90ZWN0'@; put 'aW9uPXRoaXMucGFyc2VyLm1vZGVsOnRoaXMubW9kZWwuYWxpZ25tZW50PXRoaXMucGFyc2VyLm1vZGVsLHRoaXMucGFyc2VyPXZvaWQgMCksITApOiJ4ZiIhPT1yfX19LHsiLi4vYmFzZS14Zm9ybSI6MzIsIi4vYWxpZ25tZW50LXhmb3JtIjoxMjYsIi4vcHJvdGVjdGlvbi14Zm9ybSI6MTMz'@; put 'fV0sMTM1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vLi4vLi4vZG9jL2VudW1zIiksYT1zKCIuLi8uLi8uLi91dGlscy94bWwtc3RyZWFtIiksbz1zKCIuLi9iYXNlLXhmb3JtIikscj1zKCIuLi9zdGF0aWMteGZvcm0iKSx0PXMoIi4uL2xpc3QteGZvcm0i'@; put 'KSxlPXMoIi4vZm9udC14Zm9ybSIpLGw9cygiLi9maWxsLXhmb3JtIiksbj1zKCIuL2JvcmRlci14Zm9ybSIpLGk9cygiLi9udW1mbXQteGZvcm0iKSxoPXMoIi4vc3R5bGUteGZvcm0iKSxmPXMoIi4vZHhmLXhmb3JtIik7Y2xhc3MgdSBleHRlbmRzIG97Y29uc3RydWN0b3IoZCl7c3VwZXIo'@; put 'KSx0aGlzLm1hcD17bnVtRm10czpuZXcgdCh7dGFnOiJudW1GbXRzIixjb3VudDohMCxjaGlsZFhmb3JtOm5ldyBpfSksZm9udHM6bmV3IHQoe3RhZzoiZm9udHMiLGNvdW50OiEwLGNoaWxkWGZvcm06bmV3IGUsJDp7IngxNGFjOmtub3duRm9udHMiOjF9fSksZmlsbHM6bmV3IHQoe3RhZzoi'@; put 'ZmlsbHMiLGNvdW50OiEwLGNoaWxkWGZvcm06bmV3IGx9KSxib3JkZXJzOm5ldyB0KHt0YWc6ImJvcmRlcnMiLGNvdW50OiEwLGNoaWxkWGZvcm06bmV3IG59KSxjZWxsU3R5bGVYZnM6bmV3IHQoe3RhZzoiY2VsbFN0eWxlWGZzIixjb3VudDohMCxjaGlsZFhmb3JtOm5ldyBofSksY2VsbFhm'@; put 'czpuZXcgdCh7dGFnOiJjZWxsWGZzIixjb3VudDohMCxjaGlsZFhmb3JtOm5ldyBoKHt4ZklkOiEwfSl9KSxkeGZzOm5ldyB0KHt0YWc6ImR4ZnMiLGFsd2F5czohMCxjb3VudDohMCxjaGlsZFhmb3JtOm5ldyBmfSksbnVtRm10Om5ldyBpLGZvbnQ6bmV3IGUsZmlsbDpuZXcgbCxib3JkZXI6'@; put 'bmV3IG4sc3R5bGU6bmV3IGgoe3hmSWQ6ITB9KSxjZWxsU3R5bGVzOnUuU1RBVElDX1hGT1JNUy5jZWxsU3R5bGVzLHRhYmxlU3R5bGVzOnUuU1RBVElDX1hGT1JNUy50YWJsZVN0eWxlcyxleHRMc3Q6dS5TVEFUSUNfWEZPUk1TLmV4dExzdH0sZCYmdGhpcy5pbml0KCl9aW5pdEluZGV4KCl7'@; put 'dGhpcy5pbmRleD17c3R5bGU6e30sbnVtRm10Ont9LG51bUZtdE5leHRJZDoxNjQsZm9udDp7fSxib3JkZXI6e30sZmlsbDp7fX19aW5pdCgpe3RoaXMubW9kZWw9e3N0eWxlczpbXSxudW1GbXRzOltdLGZvbnRzOltdLGJvcmRlcnM6W10sZmlsbHM6W10sZHhmczpbXX0sdGhpcy5pbml0SW5k'@; put 'ZXgoKSx0aGlzLl9hZGRCb3JkZXIoe30pLHRoaXMuX2FkZFN0eWxlKHtudW1GbXRJZDowLGZvbnRJZDowLGZpbGxJZDowLGJvcmRlcklkOjAseGZJZDowfSksdGhpcy5fYWRkRmlsbCh7dHlwZToicGF0dGVybiIscGF0dGVybjoibm9uZSJ9KSx0aGlzLl9hZGRGaWxsKHt0eXBlOiJwYXR0ZXJu'@; put 'IixwYXR0ZXJuOiJncmF5MTI1In0pLHRoaXMud2Vha01hcD1uZXcgV2Vha01hcH1yZW5kZXIoZCx2KXt2PXZ8fHRoaXMubW9kZWwsZC5vcGVuWG1sKGEuU3RkRG9jQXR0cmlidXRlcyksZC5vcGVuTm9kZSgic3R5bGVTaGVldCIsdS5TVFlMRVNIRUVUX0FUVFJJQlVURVMpLHRoaXMuaW5kZXg/'@; put 'KHYubnVtRm10cyYmdi5udW1GbXRzLmxlbmd0aCYmKGQub3Blbk5vZGUoIm51bUZtdHMiLHtjb3VudDp2Lm51bUZtdHMubGVuZ3RofSksdi5udW1GbXRzLmZvckVhY2goXz0+e2Qud3JpdGVYbWwoXyl9KSxkLmNsb3NlTm9kZSgpKSx2LmZvbnRzLmxlbmd0aHx8dGhpcy5fYWRkRm9udCh7c2l6'@; put 'ZToxMSxjb2xvcjp7dGhlbWU6MX0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9KSxkLm9wZW5Ob2RlKCJmb250cyIse2NvdW50OnYuZm9udHMubGVuZ3RoLCJ4MTRhYzprbm93bkZvbnRzIjoxfSksdi5mb250cy5mb3JFYWNoKF89PntkLndyaXRlWG1sKF8pfSksZC5j'@; put 'bG9zZU5vZGUoKSxkLm9wZW5Ob2RlKCJmaWxscyIse2NvdW50OnYuZmlsbHMubGVuZ3RofSksdi5maWxscy5mb3JFYWNoKF89PntkLndyaXRlWG1sKF8pfSksZC5jbG9zZU5vZGUoKSxkLm9wZW5Ob2RlKCJib3JkZXJzIix7Y291bnQ6di5ib3JkZXJzLmxlbmd0aH0pLHYuYm9yZGVycy5mb3JF'@; put 'YWNoKF89PntkLndyaXRlWG1sKF8pfSksZC5jbG9zZU5vZGUoKSx0aGlzLm1hcC5jZWxsU3R5bGVYZnMucmVuZGVyKGQsW3tudW1GbXRJZDowLGZvbnRJZDowLGZpbGxJZDowLGJvcmRlcklkOjAseGZJZDowfV0pLGQub3Blbk5vZGUoImNlbGxYZnMiLHtjb3VudDp2LnN0eWxlcy5sZW5ndGh9'@; put 'KSx2LnN0eWxlcy5mb3JFYWNoKF89PntkLndyaXRlWG1sKF8pfSksZC5jbG9zZU5vZGUoKSk6KHRoaXMubWFwLm51bUZtdHMucmVuZGVyKGQsdi5udW1GbXRzKSx0aGlzLm1hcC5mb250cy5yZW5kZXIoZCx2LmZvbnRzKSx0aGlzLm1hcC5maWxscy5yZW5kZXIoZCx2LmZpbGxzKSx0aGlzLm1h'@; put 'cC5ib3JkZXJzLnJlbmRlcihkLHYuYm9yZGVycyksdGhpcy5tYXAuY2VsbFN0eWxlWGZzLnJlbmRlcihkLFt7bnVtRm10SWQ6MCxmb250SWQ6MCxmaWxsSWQ6MCxib3JkZXJJZDowLHhmSWQ6MH1dKSx0aGlzLm1hcC5jZWxsWGZzLnJlbmRlcihkLHYuc3R5bGVzKSksdS5TVEFUSUNfWEZPUk1T'@; put 'LmNlbGxTdHlsZXMucmVuZGVyKGQpLHRoaXMubWFwLmR4ZnMucmVuZGVyKGQsdi5keGZzKSx1LlNUQVRJQ19YRk9STVMudGFibGVTdHlsZXMucmVuZGVyKGQpLHUuU1RBVElDX1hGT1JNUy5leHRMc3QucmVuZGVyKGQpLGQuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKGQpe3JldHVybiB0aGlzLnBh'@; put 'cnNlcj8odGhpcy5wYXJzZXIucGFyc2VPcGVuKGQpLCEwKToic3R5bGVTaGVldCI9PT1kLm5hbWU/KHRoaXMuaW5pdEluZGV4KCksITApOih0aGlzLnBhcnNlcj10aGlzLm1hcFtkLm5hbWVdLHRoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZU9wZW4oZCksITApfXBhcnNlVGV4dChkKXt0'@; put 'aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KGQpfXBhcnNlQ2xvc2UoZCl7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlQ2xvc2UoZCl8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwO2lmKCJzdHlsZVNoZWV0Ij09PWQpe3RoaXMubW9kZWw9e307Y29uc3Qg'@; put 'dj0oXyxBKT0+e0EubW9kZWwmJkEubW9kZWwubGVuZ3RoJiYodGhpcy5tb2RlbFtfXT1BLm1vZGVsKX07aWYodigibnVtRm10cyIsdGhpcy5tYXAubnVtRm10cyksdigiZm9udHMiLHRoaXMubWFwLmZvbnRzKSx2KCJmaWxscyIsdGhpcy5tYXAuZmlsbHMpLHYoImJvcmRlcnMiLHRoaXMubWFw'@; put 'LmJvcmRlcnMpLHYoInN0eWxlcyIsdGhpcy5tYXAuY2VsbFhmcyksdigiZHhmcyIsdGhpcy5tYXAuZHhmcyksdGhpcy5pbmRleD17bW9kZWw6W10sbnVtRm10OltdfSx0aGlzLm1vZGVsLm51bUZtdHMpe2NvbnN0IF89dGhpcy5pbmRleC5udW1GbXQ7dGhpcy5tb2RlbC5udW1GbXRzLmZvckVh'@; put 'Y2goQT0+e19bQS5pZF09QS5mb3JtYXRDb2RlfSl9cmV0dXJuITF9cmV0dXJuITB9YWRkU3R5bGVNb2RlbChkLHYpe2lmKCFkKXJldHVybiAwO2lmKHRoaXMubW9kZWwuZm9udHMubGVuZ3RofHx0aGlzLl9hZGRGb250KHtzaXplOjExLGNvbG9yOnt0aGVtZToxfSxuYW1lOiJDYWxpYnJpIixm'@; put 'YW1pbHk6MixzY2hlbWU6Im1pbm9yIn0pLHRoaXMud2Vha01hcCYmdGhpcy53ZWFrTWFwLmhhcyhkKSlyZXR1cm4gdGhpcy53ZWFrTWFwLmdldChkKTtjb25zdCBfPXt9O2lmKHY9dnx8Yi5WYWx1ZVR5cGUuTnVtYmVyLGQubnVtRm10KV8ubnVtRm10SWQ9dGhpcy5fYWRkTnVtRm10U3RyKGQu'@; put 'bnVtRm10KTtlbHNlIHN3aXRjaCh2KXtjYXNlIGIuVmFsdWVUeXBlLk51bWJlcjpfLm51bUZtdElkPXRoaXMuX2FkZE51bUZtdFN0cigiR2VuZXJhbCIpO2JyZWFrO2Nhc2UgYi5WYWx1ZVR5cGUuRGF0ZTpfLm51bUZtdElkPXRoaXMuX2FkZE51bUZtdFN0cigibW0tZGQteXkiKX1kLmZvbnQm'@; put 'JihfLmZvbnRJZD10aGlzLl9hZGRGb250KGQuZm9udCkpLGQuYm9yZGVyJiYoXy5ib3JkZXJJZD10aGlzLl9hZGRCb3JkZXIoZC5ib3JkZXIpKSxkLmZpbGwmJihfLmZpbGxJZD10aGlzLl9hZGRGaWxsKGQuZmlsbCkpLGQuYWxpZ25tZW50JiYoXy5hbGlnbm1lbnQ9ZC5hbGlnbm1lbnQpLGQu'@; put 'cHJvdGVjdGlvbiYmKF8ucHJvdGVjdGlvbj1kLnByb3RlY3Rpb24pO2NvbnN0IEE9dGhpcy5fYWRkU3R5bGUoXyk7cmV0dXJuIHRoaXMud2Vha01hcCYmdGhpcy53ZWFrTWFwLnNldChkLEEpLEF9Z2V0U3R5bGVNb2RlbChkKXtjb25zdCB2PXRoaXMubW9kZWwuc3R5bGVzW2RdO2lmKCF2KXJl'@; put 'dHVybiBudWxsO2xldCBfPXRoaXMuaW5kZXgubW9kZWxbZF07aWYoXylyZXR1cm4gXztpZihfPXRoaXMuaW5kZXgubW9kZWxbZF09e30sdi5udW1GbXRJZCl7Y29uc3QgST10aGlzLmluZGV4Lm51bUZtdFt2Lm51bUZtdElkXXx8aS5nZXREZWZhdWx0Rm10Q29kZSh2Lm51bUZtdElkKTtJJiYo'@; put 'Xy5udW1GbXQ9SSl9ZnVuY3Rpb24gQShJLEwsTil7aWYoTnx8MD09PU4pe2NvbnN0IFA9TFtOXTtQJiYoX1tJXT1QKX19cmV0dXJuIEEoImZvbnQiLHRoaXMubW9kZWwuZm9udHMsdi5mb250SWQpLEEoImJvcmRlciIsdGhpcy5tb2RlbC5ib3JkZXJzLHYuYm9yZGVySWQpLEEoImZpbGwiLHRo'@; put 'aXMubW9kZWwuZmlsbHMsdi5maWxsSWQpLHYuYWxpZ25tZW50JiYoXy5hbGlnbm1lbnQ9di5hbGlnbm1lbnQpLHYucHJvdGVjdGlvbiYmKF8ucHJvdGVjdGlvbj12LnByb3RlY3Rpb24pLF99YWRkRHhmU3R5bGUoZCl7cmV0dXJuIGQubnVtRm10JiYoZC5udW1GbXRJZD10aGlzLl9hZGROdW1G'@; put 'bXRTdHIoZC5udW1GbXQpKSx0aGlzLm1vZGVsLmR4ZnMucHVzaChkKSx0aGlzLm1vZGVsLmR4ZnMubGVuZ3RoLTF9Z2V0RHhmU3R5bGUoZCl7cmV0dXJuIHRoaXMubW9kZWwuZHhmc1tkXX1fYWRkU3R5bGUoZCl7Y29uc3Qgdj10aGlzLm1hcC5zdHlsZS50b1htbChkKTtsZXQgXz10aGlzLmlu'@; put 'ZGV4LnN0eWxlW3ZdO3JldHVybiB2b2lkIDA9PT1fJiYoXz10aGlzLmluZGV4LnN0eWxlW3ZdPXRoaXMubW9kZWwuc3R5bGVzLmxlbmd0aCx0aGlzLm1vZGVsLnN0eWxlcy5wdXNoKHYpKSxffV9hZGROdW1GbXRTdHIoZCl7bGV0IHY9aS5nZXREZWZhdWx0Rm10SWQoZCk7aWYodm9pZCAwIT09'@; put 'dnx8KHY9dGhpcy5pbmRleC5udW1GbXRbZF0sdm9pZCAwIT09dikpcmV0dXJuIHY7dj10aGlzLmluZGV4Lm51bUZtdFtkXT0xNjQrdGhpcy5tb2RlbC5udW1GbXRzLmxlbmd0aDtjb25zdCBfPXRoaXMubWFwLm51bUZtdC50b1htbCh7aWQ6dixmb3JtYXRDb2RlOmR9KTtyZXR1cm4gdGhpcy5t'@; put 'b2RlbC5udW1GbXRzLnB1c2goXyksdn1fYWRkRm9udChkKXtjb25zdCB2PXRoaXMubWFwLmZvbnQudG9YbWwoZCk7bGV0IF89dGhpcy5pbmRleC5mb250W3ZdO3JldHVybiB2b2lkIDA9PT1fJiYoXz10aGlzLmluZGV4LmZvbnRbdl09dGhpcy5tb2RlbC5mb250cy5sZW5ndGgsdGhpcy5tb2Rl'@; put 'bC5mb250cy5wdXNoKHYpKSxffV9hZGRCb3JkZXIoZCl7Y29uc3Qgdj10aGlzLm1hcC5ib3JkZXIudG9YbWwoZCk7bGV0IF89dGhpcy5pbmRleC5ib3JkZXJbdl07cmV0dXJuIHZvaWQgMD09PV8mJihfPXRoaXMuaW5kZXguYm9yZGVyW3ZdPXRoaXMubW9kZWwuYm9yZGVycy5sZW5ndGgsdGhp'@; put 'cy5tb2RlbC5ib3JkZXJzLnB1c2godikpLF99X2FkZEZpbGwoZCl7Y29uc3Qgdj10aGlzLm1hcC5maWxsLnRvWG1sKGQpO2xldCBfPXRoaXMuaW5kZXguZmlsbFt2XTtyZXR1cm4gdm9pZCAwPT09XyYmKF89dGhpcy5pbmRleC5maWxsW3ZdPXRoaXMubW9kZWwuZmlsbHMubGVuZ3RoLHRoaXMu'@; put 'bW9kZWwuZmlsbHMucHVzaCh2KSksX319dS5TVFlMRVNIRUVUX0FUVFJJQlVURVM9e3htbG5zOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJ4bWxuczptYyI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJr'@; put 'dXAtY29tcGF0aWJpbGl0eS8yMDA2IiwibWM6SWdub3JhYmxlIjoieDE0YWMgeDE2cjIiLCJ4bWxuczp4MTRhYyI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIiwieG1sbnM6eDE2cjIiOiJodHRwOi8vc2NoZW1hcy5taWNyb3Nv'@; put 'ZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTUvMDIvbWFpbiJ9LHUuU1RBVElDX1hGT1JNUz17Y2VsbFN0eWxlczpuZXcgcih7dGFnOiJjZWxsU3R5bGVzIiwkOntjb3VudDoxfSxjOlt7dGFnOiJjZWxsU3R5bGUiLCQ6e25hbWU6Ik5vcm1hbCIseGZJZDowLGJ1aWx0aW5JZDowfX1d'@; put 'fSksZHhmczpuZXcgcih7dGFnOiJkeGZzIiwkOntjb3VudDowfX0pLHRhYmxlU3R5bGVzOm5ldyByKHt0YWc6InRhYmxlU3R5bGVzIiwkOntjb3VudDowLGRlZmF1bHRUYWJsZVN0eWxlOiJUYWJsZVN0eWxlTWVkaXVtMiIsZGVmYXVsdFBpdm90U3R5bGU6IlBpdm90U3R5bGVMaWdodDE2In19'@; put 'KSxleHRMc3Q6bmV3IHIoe3RhZzoiZXh0THN0IixjOlt7dGFnOiJleHQiLCQ6e3VyaToie0VCNzlERUYyLTgwQjgtNDNlNS05NUJELTU0Q0JEREY5MDIwQ30iLCJ4bWxuczp4MTQiOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9tYWlu'@; put 'In0sYzpbe3RhZzoieDE0OnNsaWNlclN0eWxlcyIsJDp7ZGVmYXVsdFNsaWNlclN0eWxlOiJTbGljZXJTdHlsZUxpZ2h0MSJ9fV19LHt0YWc6ImV4dCIsJDp7dXJpOiJ7OTI2MEE1MTAtRjMwMS00NmE4LTg2MzUtRjUxMkQ2NEJFNUY1fSIsInhtbG5zOngxNSI6Imh0dHA6Ly9zY2hlbWFzLm1p'@; put 'Y3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxMC8xMS9tYWluIn0sYzpbe3RhZzoieDE1OnRpbWVsaW5lU3R5bGVzIiwkOntkZWZhdWx0VGltZWxpbmVTdHlsZToiVGltZVNsaWNlclN0eWxlTGlnaHQxIn19XX1dfSl9LHUuTW9jaz1jbGFzcyBleHRlbmRzIHV7Y29uc3RydWN0'@; put 'b3IoKXtzdXBlcigpLHRoaXMubW9kZWw9e3N0eWxlczpbe251bUZtdElkOjAsZm9udElkOjAsZmlsbElkOjAsYm9yZGVySWQ6MCx4ZklkOjB9XSxudW1GbXRzOltdLGZvbnRzOlt7c2l6ZToxMSxjb2xvcjp7dGhlbWU6MX0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9'@; put 'XSxib3JkZXJzOlt7fV0sZmlsbHM6W3t0eXBlOiJwYXR0ZXJuIixwYXR0ZXJuOiJub25lIn0se3R5cGU6InBhdHRlcm4iLHBhdHRlcm46ImdyYXkxMjUifV19fXBhcnNlU3RyZWFtKHApe3JldHVybiBwLmF1dG9kcmFpbigpLFByb21pc2UucmVzb2x2ZSgpfWFkZFN0eWxlTW9kZWwocCxkKXty'@; put 'ZXR1cm4gZD09PWIuVmFsdWVUeXBlLkRhdGU/dGhpcy5kYXRlU3R5bGVJZDowfWdldCBkYXRlU3R5bGVJZCgpe2lmKCF0aGlzLl9kYXRlU3R5bGVJZCl7Y29uc3QgcD17bnVtRm10SWQ6aS5nZXREZWZhdWx0Rm10SWQoIm1tLWRkLXl5Iil9O3RoaXMuX2RhdGVTdHlsZUlkPXRoaXMubW9kZWwu'@; put 'c3R5bGVzLmxlbmd0aCx0aGlzLm1vZGVsLnN0eWxlcy5wdXNoKHApfXJldHVybiB0aGlzLl9kYXRlU3R5bGVJZH1nZXRTdHlsZU1vZGVsKCl7cmV0dXJue319fSxFLmV4cG9ydHM9dX0seyIuLi8uLi8uLi9kb2MvZW51bXMiOjcsIi4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iOjI4LCIuLi9i'@; put 'YXNlLXhmb3JtIjozMiwiLi4vbGlzdC14Zm9ybSI6NzEsIi4uL3N0YXRpYy14Zm9ybSI6MTIwLCIuL2JvcmRlci14Zm9ybSI6MTI3LCIuL2R4Zi14Zm9ybSI6MTI5LCIuL2ZpbGwteGZvcm0iOjEzMCwiLi9mb250LXhmb3JtIjoxMzEsIi4vbnVtZm10LXhmb3JtIjoxMzIsIi4vc3R5bGUteGZv'@; put 'cm0iOjEzNH1dLDEzNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uL2Jhc2UteGZvcm0iKTtjbGFzcyBhIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihyKXtzdXBlcigpLHRoaXMubW9kZWw9cn1nZXQgdGFnKCl7cmV0dXJuInUifXJlbmRlcihyLHQpe2lmKCEwPT09'@; put 'KHQ9dHx8dGhpcy5tb2RlbCkpci5sZWFmTm9kZSgidSIpO2Vsc2V7Y29uc3QgZT1hLkF0dHJpYnV0ZXNbdF07ZSYmci5sZWFmTm9kZSgidSIsZSl9fXBhcnNlT3BlbihyKXsidSI9PT1yLm5hbWUmJih0aGlzLm1vZGVsPXIuYXR0cmlidXRlcy52YWx8fCEwKX1wYXJzZVRleHQoKXt9cGFyc2VD'@; put 'bG9zZSgpe3JldHVybiExfX1hLkF0dHJpYnV0ZXM9e3NpbmdsZTp7fSxkb3VibGU6e3ZhbDoiZG91YmxlIn0sc2luZ2xlQWNjb3VudGluZzp7dmFsOiJzaW5nbGVBY2NvdW50aW5nIn0sZG91YmxlQWNjb3VudGluZzp7dmFsOiJkb3VibGVBY2NvdW50aW5nIn19LEUuZXhwb3J0cz1hfSx7Ii4u'@; put 'L2Jhc2UteGZvcm0iOjMyfV0sMTM3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpLGE9cygiLi9maWx0ZXItY29sdW1uLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9'@; put 'e2ZpbHRlckNvbHVtbjpuZXcgYX19Z2V0IHRhZygpe3JldHVybiJhdXRvRmlsdGVyIn1wcmVwYXJlKG8pe28uY29sdW1ucy5mb3JFYWNoKChyLHQpPT57dGhpcy5tYXAuZmlsdGVyQ29sdW1uLnByZXBhcmUocix7aW5kZXg6dH0pfSl9cmVuZGVyKG8scil7cmV0dXJuIG8ub3Blbk5vZGUodGhp'@; put 'cy50YWcse3JlZjpyLmF1dG9GaWx0ZXJSZWZ9KSxyLmNvbHVtbnMuZm9yRWFjaCh0PT57dGhpcy5tYXAuZmlsdGVyQ29sdW1uLnJlbmRlcihvLHQpfSksby5jbG9zZU5vZGUoKSwhMH1wYXJzZU9wZW4obyl7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlT3BlbihvKSwh'@; put 'MDtpZihvLm5hbWU9PT10aGlzLnRhZylyZXR1cm4gdGhpcy5tb2RlbD17YXV0b0ZpbHRlclJlZjpvLmF0dHJpYnV0ZXMucmVmLGNvbHVtbnM6W119LCEwO2lmKHRoaXMucGFyc2VyPXRoaXMubWFwW28ubmFtZV0sdGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2VPcGVuKG8pLCEwO3Rocm93'@; put 'IG5ldyBFcnJvcigiVW5leHBlY3RlZCB4bWwgbm9kZSBpbiBwYXJzZU9wZW46ICIrSlNPTi5zdHJpbmdpZnkobykpfXBhcnNlVGV4dChvKXt0aGlzLnBhcnNlciYmdGhpcy5wYXJzZXIucGFyc2VUZXh0KG8pfXBhcnNlQ2xvc2Uobyl7aWYodGhpcy5wYXJzZXIpcmV0dXJuIHRoaXMucGFyc2Vy'@; put 'LnBhcnNlQ2xvc2Uobyl8fCh0aGlzLm1vZGVsLmNvbHVtbnMucHVzaCh0aGlzLnBhcnNlci5tb2RlbCksdGhpcy5wYXJzZXI9dm9pZCAwKSwhMDtpZihvPT09dGhpcy50YWcpcmV0dXJuITE7dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHhtbCBub2RlIGluIHBhcnNlQ2xvc2U6ICIrbyl9'@; put 'fX0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi9maWx0ZXItY29sdW1uLXhmb3JtIjoxMzl9XSwxMzg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuImN1c3RvbUZp'@; put 'bHRlciJ9cmVuZGVyKGEsbyl7YS5sZWFmTm9kZSh0aGlzLnRhZyx7dmFsOm8udmFsLG9wZXJhdG9yOm8ub3BlcmF0b3J9KX1wYXJzZU9wZW4oYSl7cmV0dXJuIGEubmFtZT09PXRoaXMudGFnJiYodGhpcy5tb2RlbD17dmFsOmEuYXR0cmlidXRlcy52YWwsb3BlcmF0b3I6YS5hdHRyaWJ1dGVz'@; put 'Lm9wZXJhdG9yfSwhMCl9cGFyc2VUZXh0KCl7fXBhcnNlQ2xvc2UoKXtyZXR1cm4hMX19fSx7Ii4uL2Jhc2UteGZvcm0iOjMyfV0sMTM5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpLGE9cygiLi4vbGlzdC14Zm9ybSIpLG89cygiLi9j'@; put 'dXN0b20tZmlsdGVyLXhmb3JtIikscj1zKCIuL2ZpbHRlci14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMubWFwPXtjdXN0b21GaWx0ZXJzOm5ldyBhKHt0YWc6ImN1c3RvbUZpbHRlcnMiLGNvdW50OiExLGVtcHR5OiEwLGNoaWxk'@; put 'WGZvcm06bmV3IG99KSxmaWx0ZXJzOm5ldyBhKHt0YWc6ImZpbHRlcnMiLGNvdW50OiExLGVtcHR5OiEwLGNoaWxkWGZvcm06bmV3IHJ9KX19Z2V0IHRhZygpe3JldHVybiJmaWx0ZXJDb2x1bW4ifXByZXBhcmUodCxlKXt0LmNvbElkPWUuaW5kZXgudG9TdHJpbmcoKX1yZW5kZXIodCxlKXty'@; put 'ZXR1cm4gZS5jdXN0b21GaWx0ZXJzPyh0Lm9wZW5Ob2RlKHRoaXMudGFnLHtjb2xJZDplLmNvbElkLGhpZGRlbkJ1dHRvbjplLmZpbHRlckJ1dHRvbj8iMCI6IjEifSksdGhpcy5tYXAuY3VzdG9tRmlsdGVycy5yZW5kZXIodCxlLmN1c3RvbUZpbHRlcnMpLHQuY2xvc2VOb2RlKCksITApOih0'@; put 'LmxlYWZOb2RlKHRoaXMudGFnLHtjb2xJZDplLmNvbElkLGhpZGRlbkJ1dHRvbjplLmZpbHRlckJ1dHRvbj8iMCI6IjEifSksITApfXBhcnNlT3Blbih0KXtpZih0aGlzLnBhcnNlcilyZXR1cm4gdGhpcy5wYXJzZXIucGFyc2VPcGVuKHQpLCEwO2NvbnN0e2F0dHJpYnV0ZXM6ZX09dDtpZih0'@; put 'Lm5hbWU9PT10aGlzLnRhZylyZXR1cm4gdGhpcy5tb2RlbD17ZmlsdGVyQnV0dG9uOiIwIj09PWUuaGlkZGVuQnV0dG9ufSwhMDtpZih0aGlzLnBhcnNlcj10aGlzLm1hcFt0Lm5hbWVdLHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlT3Blbih0KSwhMDt0aHJvdyBuZXcgRXJyb3IoIlVu'@; put 'ZXhwZWN0ZWQgeG1sIG5vZGUgaW4gcGFyc2VPcGVuOiAiK0pTT04uc3RyaW5naWZ5KHQpKX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZSh0KXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlQ2xvc2UodCl8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwKTp0IT09dGhpcy50YWd8'@; put 'fCh0aGlzLm1vZGVsLmN1c3RvbUZpbHRlcnM9dGhpcy5tYXAuY3VzdG9tRmlsdGVycy5tb2RlbCwhMSl9fX0seyIuLi9iYXNlLXhmb3JtIjozMiwiLi4vbGlzdC14Zm9ybSI6NzEsIi4vY3VzdG9tLWZpbHRlci14Zm9ybSI6MTM4LCIuL2ZpbHRlci14Zm9ybSI6MTQwfV0sMTQwOltmdW5jdGlv'@; put 'bihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiLi4vYmFzZS14Zm9ybSIpO0UuZXhwb3J0cz1jbGFzcyBleHRlbmRzIGJ7Z2V0IHRhZygpe3JldHVybiJmaWx0ZXIifXJlbmRlcihhLG8pe2EubGVhZk5vZGUodGhpcy50YWcse3ZhbDpvLnZhbH0pfXBhcnNlT3BlbihhKXtyZXR1cm4g'@; put 'YS5uYW1lPT09dGhpcy50YWcmJih0aGlzLm1vZGVsPXt2YWw6YS5hdHRyaWJ1dGVzLnZhbH0sITApfXBhcnNlVGV4dCgpe31wYXJzZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDE0MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4u'@; put 'L2Jhc2UteGZvcm0iKTtFLmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBie2dldCB0YWcoKXtyZXR1cm4idGFibGVDb2x1bW4ifXByZXBhcmUoYSxvKXthLmlkPW8uaW5kZXgrMX1yZW5kZXIoYSxvKXtyZXR1cm4gYS5sZWFmTm9kZSh0aGlzLnRhZyx7aWQ6by5pZC50b1N0cmluZygpLG5hbWU6by5u'@; put 'YW1lLHRvdGFsc1Jvd0xhYmVsOm8udG90YWxzUm93TGFiZWwsdG90YWxzUm93RnVuY3Rpb246by50b3RhbHNSb3dGdW5jdGlvbixkeGZJZDpvLmR4ZklkfSksITB9cGFyc2VPcGVuKGEpe2lmKGEubmFtZT09PXRoaXMudGFnKXtjb25zdHthdHRyaWJ1dGVzOm99PWE7cmV0dXJuIHRoaXMubW9k'@; put 'ZWw9e25hbWU6by5uYW1lLHRvdGFsc1Jvd0xhYmVsOm8udG90YWxzUm93TGFiZWwsdG90YWxzUm93RnVuY3Rpb246by50b3RhbHNSb3dGdW5jdGlvbixkeGZJZDpvLmR4ZklkfSwhMH1yZXR1cm4hMX1wYXJzZVRleHQoKXt9cGFyc2VDbG9zZSgpe3JldHVybiExfX19LHsiLi4vYmFzZS14Zm9y'@; put 'bSI6MzJ9XSwxNDI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlLXhmb3JtIik7RS5leHBvcnRzPWNsYXNzIGV4dGVuZHMgYntnZXQgdGFnKCl7cmV0dXJuInRhYmxlU3R5bGVJbmZvIn1yZW5kZXIoYSxvKXtyZXR1cm4gYS5sZWFmTm9kZSh0aGlzLnRh'@; put 'Zyx7bmFtZTpvLnRoZW1lP28udGhlbWU6dm9pZCAwLHNob3dGaXJzdENvbHVtbjpvLnNob3dGaXJzdENvbHVtbj8iMSI6IjAiLHNob3dMYXN0Q29sdW1uOm8uc2hvd0xhc3RDb2x1bW4/IjEiOiIwIixzaG93Um93U3RyaXBlczpvLnNob3dSb3dTdHJpcGVzPyIxIjoiMCIsc2hvd0NvbHVtblN0'@; put 'cmlwZXM6by5zaG93Q29sdW1uU3RyaXBlcz8iMSI6IjAifSksITB9cGFyc2VPcGVuKGEpe2lmKGEubmFtZT09PXRoaXMudGFnKXtjb25zdHthdHRyaWJ1dGVzOm99PWE7cmV0dXJuIHRoaXMubW9kZWw9e3RoZW1lOm8ubmFtZT9vLm5hbWU6bnVsbCxzaG93Rmlyc3RDb2x1bW46IjEiPT09by5z'@; put 'aG93Rmlyc3RDb2x1bW4sc2hvd0xhc3RDb2x1bW46IjEiPT09by5zaG93TGFzdENvbHVtbixzaG93Um93U3RyaXBlczoiMSI9PT1vLnNob3dSb3dTdHJpcGVzLHNob3dDb2x1bW5TdHJpcGVzOiIxIj09PW8uc2hvd0NvbHVtblN0cmlwZXN9LCEwfXJldHVybiExfXBhcnNlVGV4dCgpe31wYXJz'@; put 'ZUNsb3NlKCl7cmV0dXJuITF9fX0seyIuLi9iYXNlLXhmb3JtIjozMn1dLDE0MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoIi4uLy4uLy4uL3V0aWxzL3htbC1zdHJlYW0iKSxhPXMoIi4uL2Jhc2UteGZvcm0iKSxvPXMoIi4uL2xpc3QteGZvcm0iKSxyPXMoIi4v'@; put 'YXV0by1maWx0ZXIteGZvcm0iKSx0PXMoIi4vdGFibGUtY29sdW1uLXhmb3JtIiksZT1zKCIuL3RhYmxlLXN0eWxlLWluZm8teGZvcm0iKTtjbGFzcyBsIGV4dGVuZHMgYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5tYXA9e2F1dG9GaWx0ZXI6bmV3IHIsdGFibGVDb2x1bW5zOm5ldyBv'@; put 'KHt0YWc6InRhYmxlQ29sdW1ucyIsY291bnQ6ITAsZW1wdHk6ITAsY2hpbGRYZm9ybTpuZXcgdH0pLHRhYmxlU3R5bGVJbmZvOm5ldyBlfX1wcmVwYXJlKGksaCl7dGhpcy5tYXAuYXV0b0ZpbHRlci5wcmVwYXJlKGkpLHRoaXMubWFwLnRhYmxlQ29sdW1ucy5wcmVwYXJlKGkuY29sdW1ucyxo'@; put 'KX1nZXQgdGFnKCl7cmV0dXJuInRhYmxlIn1yZW5kZXIoaSxoKXtpLm9wZW5YbWwoYi5TdGREb2NBdHRyaWJ1dGVzKSxpLm9wZW5Ob2RlKHRoaXMudGFnLHsuLi5sLlRBQkxFX0FUVFJJQlVURVMsaWQ6aC5pZCxuYW1lOmgubmFtZSxkaXNwbGF5TmFtZTpoLmRpc3BsYXlOYW1lfHxoLm5hbWUs'@; put 'cmVmOmgudGFibGVSZWYsdG90YWxzUm93Q291bnQ6aC50b3RhbHNSb3c/IjEiOnZvaWQgMCx0b3RhbHNSb3dTaG93bjpoLnRvdGFsc1Jvdz92b2lkIDA6IjEiLGhlYWRlclJvd0NvdW50OmguaGVhZGVyUm93PyIxIjoiMCJ9KSx0aGlzLm1hcC5hdXRvRmlsdGVyLnJlbmRlcihpLGgpLHRoaXMu'@; put 'bWFwLnRhYmxlQ29sdW1ucy5yZW5kZXIoaSxoLmNvbHVtbnMpLHRoaXMubWFwLnRhYmxlU3R5bGVJbmZvLnJlbmRlcihpLGguc3R5bGUpLGkuY2xvc2VOb2RlKCl9cGFyc2VPcGVuKGkpe2lmKHRoaXMucGFyc2VyKXJldHVybiB0aGlzLnBhcnNlci5wYXJzZU9wZW4oaSksITA7Y29uc3R7bmFt'@; put 'ZTpoLGF0dHJpYnV0ZXM6Zn09aTtyZXR1cm4gaD09PXRoaXMudGFnPyh0aGlzLnJlc2V0KCksdGhpcy5tb2RlbD17bmFtZTpmLm5hbWUsZGlzcGxheU5hbWU6Zi5kaXNwbGF5TmFtZXx8Zi5uYW1lLHRhYmxlUmVmOmYucmVmLHRvdGFsc1JvdzoiMSI9PT1mLnRvdGFsc1Jvd0NvdW50LGhlYWRl'@; put 'clJvdzoiMSI9PT1mLmhlYWRlclJvd0NvdW50fSk6KHRoaXMucGFyc2VyPXRoaXMubWFwW2kubmFtZV0sdGhpcy5wYXJzZXImJnRoaXMucGFyc2VyLnBhcnNlT3BlbihpKSksITB9cGFyc2VUZXh0KGkpe3RoaXMucGFyc2VyJiZ0aGlzLnBhcnNlci5wYXJzZVRleHQoaSl9cGFyc2VDbG9zZShp'@; put 'KXtyZXR1cm4gdGhpcy5wYXJzZXI/KHRoaXMucGFyc2VyLnBhcnNlQ2xvc2UoaSl8fCh0aGlzLnBhcnNlcj12b2lkIDApLCEwKTppIT09dGhpcy50YWd8fCh0aGlzLm1vZGVsLmNvbHVtbnM9dGhpcy5tYXAudGFibGVDb2x1bW5zLm1vZGVsLHRoaXMubWFwLmF1dG9GaWx0ZXIubW9kZWwmJih0'@; put 'aGlzLm1vZGVsLmF1dG9GaWx0ZXJSZWY9dGhpcy5tYXAuYXV0b0ZpbHRlci5tb2RlbC5hdXRvRmlsdGVyUmVmLHRoaXMubWFwLmF1dG9GaWx0ZXIubW9kZWwuY29sdW1ucy5mb3JFYWNoKChoLGYpPT57dGhpcy5tb2RlbC5jb2x1bW5zW2ZdLmZpbHRlckJ1dHRvbj1oLmZpbHRlckJ1dHRvbn0p'@; put 'KSx0aGlzLm1vZGVsLnN0eWxlPXRoaXMubWFwLnRhYmxlU3R5bGVJbmZvLm1vZGVsLCExKX1yZWNvbmNpbGUoaSxoKXtpLmNvbHVtbnMuZm9yRWFjaChmPT57dm9pZCAwIT09Zi5keGZJZCYmKGYuc3R5bGU9aC5zdHlsZXMuZ2V0RHhmU3R5bGUoZi5keGZJZCkpfSl9fWwuVEFCTEVfQVRUUklC'@; put 'VVRFUz17eG1sbnM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIsInhtbG5zOm1jIjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiLCJtYzpJZ25vcmFibGUiOiJ4ciB4'@; put 'cjMiLCJ4bWxuczp4ciI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNC9yZXZpc2lvbiIsInhtbG5zOnhyMyI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNi9yZXZpc2lvbjMifSxFLmV4'@; put 'cG9ydHM9bH0seyIuLi8uLi8uLi91dGlscy94bWwtc3RyZWFtIjoyOCwiLi4vYmFzZS14Zm9ybSI6MzIsIi4uL2xpc3QteGZvcm0iOjcxLCIuL2F1dG8tZmlsdGVyLXhmb3JtIjoxMzcsIi4vdGFibGUtY29sdW1uLXhmb3JtIjoxNDEsIi4vdGFibGUtc3R5bGUtaW5mby14Zm9ybSI6MTQyfV0s'@; put 'MTQ0OltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIsYSl7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IG89cygiZnMiKSxyPXMoImpzemlwIikse1Bhc3NUaHJvdWdoOnR9PXMoInJlYWRhYmxlLXN0cmVhbSIpLGU9cygiLi4vdXRpbHMvemlwLXN0cmVhbSIpLGw9cygiLi4vdXRp'@; put 'bHMvc3RyZWFtLWJ1ZiIpLG49cygiLi4vdXRpbHMvdXRpbHMiKSxpPXMoIi4uL3V0aWxzL3htbC1zdHJlYW0iKSx7YnVmZmVyVG9TdHJpbmc6aH09cygiLi4vdXRpbHMvYnJvd3Nlci1idWZmZXItZGVjb2RlIiksZj1zKCIuL3hmb3JtL3N0eWxlL3N0eWxlcy14Zm9ybSIpLHU9cygiLi94Zm9y'@; put 'bS9jb3JlL2NvcmUteGZvcm0iKSxwPXMoIi4veGZvcm0vc3RyaW5ncy9zaGFyZWQtc3RyaW5ncy14Zm9ybSIpLGQ9cygiLi94Zm9ybS9jb3JlL3JlbGF0aW9uc2hpcHMteGZvcm0iKSx2PXMoIi4veGZvcm0vY29yZS9jb250ZW50LXR5cGVzLXhmb3JtIiksXz1zKCIuL3hmb3JtL2NvcmUvYXBw'@; put 'LXhmb3JtIiksQT1zKCIuL3hmb3JtL2Jvb2svd29ya2Jvb2steGZvcm0iKSxJPXMoIi4veGZvcm0vc2hlZXQvd29ya3NoZWV0LXhmb3JtIiksTD1zKCIuL3hmb3JtL2RyYXdpbmcvZHJhd2luZy14Zm9ybSIpLE49cygiLi94Zm9ybS90YWJsZS90YWJsZS14Zm9ybSIpLFA9cygiLi94Zm9ybS9j'@; put 'b21tZW50L2NvbW1lbnRzLXhmb3JtIiksQj1zKCIuL3hmb3JtL2NvbW1lbnQvdm1sLW5vdGVzLXhmb3JtIiksJD1zKCIuL3htbC90aGVtZTEiKTtjbGFzcyBEe2NvbnN0cnVjdG9yKE0pe3RoaXMud29ya2Jvb2s9TX1yZWFkRmlsZShNLGope3ZhciBjPXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9u'@; put 'Kigpe2lmKCEoeWllbGQgbi5mcy5leGlzdHMoTSkpKXRocm93IG5ldyBFcnJvcigiRmlsZSBub3QgZm91bmQ6ICIrTSk7Y29uc3QgbT1vLmNyZWF0ZVJlYWRTdHJlYW0oTSk7dHJ5e2NvbnN0IGc9eWllbGQgYy5yZWFkKG0saik7cmV0dXJuIG0uY2xvc2UoKSxnfWNhdGNoKGcpe3Rocm93IG0u'@; put 'Y2xvc2UoKSxnfX0pKCl9cGFyc2VSZWxzKE0pe3JldHVybihuZXcgZCkucGFyc2VTdHJlYW0oTSl9cGFyc2VXb3JrYm9vayhNKXtyZXR1cm4obmV3IEEpLnBhcnNlU3RyZWFtKE0pfXBhcnNlU2hhcmVkU3RyaW5ncyhNKXtyZXR1cm4obmV3IHApLnBhcnNlU3RyZWFtKE0pfXJlY29uY2lsZShN'@; put 'LGope2NvbnN0IGM9bmV3IEEsbT1uZXcgSShqKSxnPW5ldyBMLHk9bmV3IE47Yy5yZWNvbmNpbGUoTSk7Y29uc3Qgdz17bWVkaWE6TS5tZWRpYSxtZWRpYUluZGV4Ok0ubWVkaWFJbmRleH07T2JqZWN0LmtleXMoTS5kcmF3aW5ncykuZm9yRWFjaCh6PT57Y29uc3QgVT1NLmRyYXdpbmdzW3pd'@; put 'LFY9TS5kcmF3aW5nUmVsc1t6XTtWJiYody5yZWxzPVYucmVkdWNlKChSLEgpPT4oUltILklkXT1ILFIpLHt9KSwoVS5hbmNob3JzfHxbXSkuZm9yRWFjaChSPT57Y29uc3QgSD1SLnBpY3R1cmUmJlIucGljdHVyZS5oeXBlcmxpbmtzO0gmJncucmVsc1tILnJJZF0mJihILmh5cGVybGluaz13'@; put 'LnJlbHNbSC5ySWRdLlRhcmdldCxkZWxldGUgSC5ySWQpfSksZy5yZWNvbmNpbGUoVSx3KSl9KTtjb25zdCBrPXtzdHlsZXM6TS5zdHlsZXN9O09iamVjdC52YWx1ZXMoTS50YWJsZXMpLmZvckVhY2goej0+e3kucmVjb25jaWxlKHosayl9KTtjb25zdCBPPXtzdHlsZXM6TS5zdHlsZXMsc2hh'@; put 'cmVkU3RyaW5nczpNLnNoYXJlZFN0cmluZ3MsbWVkaWE6TS5tZWRpYSxtZWRpYUluZGV4Ok0ubWVkaWFJbmRleCxkYXRlMTkwNDpNLnByb3BlcnRpZXMmJk0ucHJvcGVydGllcy5kYXRlMTkwNCxkcmF3aW5nczpNLmRyYXdpbmdzLGNvbW1lbnRzOk0uY29tbWVudHMsdGFibGVzOk0udGFibGVz'@; put 'LHZtbERyYXdpbmdzOk0udm1sRHJhd2luZ3N9O00ud29ya3NoZWV0cy5mb3JFYWNoKHo9Pnt6LnJlbGF0aW9uc2hpcHM9TS53b3Jrc2hlZXRSZWxzW3ouc2hlZXROb10sbS5yZWNvbmNpbGUoeixPKX0pLGRlbGV0ZSBNLndvcmtzaGVldEhhc2gsZGVsZXRlIE0ud29ya3NoZWV0UmVscyxkZWxl'@; put 'dGUgTS5nbG9iYWxSZWxzLGRlbGV0ZSBNLnNoYXJlZFN0cmluZ3MsZGVsZXRlIE0ud29ya2Jvb2tSZWxzLGRlbGV0ZSBNLnNoZWV0RGVmcyxkZWxldGUgTS5zdHlsZXMsZGVsZXRlIE0ubWVkaWFJbmRleCxkZWxldGUgTS5kcmF3aW5ncyxkZWxldGUgTS5kcmF3aW5nUmVscyxkZWxldGUgTS52'@; put 'bWxEcmF3aW5nc31fcHJvY2Vzc1dvcmtzaGVldEVudHJ5KE0saixjLG0sZyl7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IHk9bmV3IEkobSksdz15aWVsZCB5LnBhcnNlU3RyZWFtKE0pO3cuc2hlZXRObz1jLGoud29ya3NoZWV0SGFzaFtnXT13LGoud29ya3NoZWV0cy5wdXNoKHcpfSko'@; put 'KX1fcHJvY2Vzc0NvbW1lbnRFbnRyeShNLGosYyl7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IG09bmV3IFAsZz15aWVsZCBtLnBhcnNlU3RyZWFtKE0pO2ouY29tbWVudHNbYC4uLyR7Y30ueG1sYF09Z30pKCl9X3Byb2Nlc3NUYWJsZUVudHJ5KE0saixjKXtyZXR1cm4gWnQoZnVuY3Rp'@; put 'b24qKCl7Y29uc3QgbT1uZXcgTixnPXlpZWxkIG0ucGFyc2VTdHJlYW0oTSk7ai50YWJsZXNbYC4uL3RhYmxlcy8ke2N9LnhtbGBdPWd9KSgpfV9wcm9jZXNzV29ya3NoZWV0UmVsc0VudHJ5KE0saixjKXtyZXR1cm4gWnQoZnVuY3Rpb24qKCl7Y29uc3QgbT1uZXcgZCxnPXlpZWxkIG0ucGFy'@; put 'c2VTdHJlYW0oTSk7ai53b3Jrc2hlZXRSZWxzW2NdPWd9KSgpfV9wcm9jZXNzTWVkaWFFbnRyeShNLGosYyl7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IG09Yy5sYXN0SW5kZXhPZigiLiIpO2lmKG0+PTEpe2NvbnN0IGc9Yy5zdWJzdHIobSsxKSx5PWMuc3Vic3RyKDAsbSk7eWllbGQg'@; put 'bmV3IFByb21pc2UoKHcsayk9Pntjb25zdCBPPW5ldyBsO08ub24oImZpbmlzaCIsKCk9PntqLm1lZGlhSW5kZXhbY109ai5tZWRpYS5sZW5ndGgsai5tZWRpYUluZGV4W3ldPWoubWVkaWEubGVuZ3RoO2NvbnN0IHo9e3R5cGU6ImltYWdlIixuYW1lOnksZXh0ZW5zaW9uOmcsYnVmZmVyOk8u'@; put 'dG9CdWZmZXIoKX07ai5tZWRpYS5wdXNoKHopLHcoKX0pLE0ub24oImVycm9yIix6PT57ayh6KX0pLE0ucGlwZShPKX0pfX0pKCl9X3Byb2Nlc3NEcmF3aW5nRW50cnkoTSxqLGMpe3JldHVybiBadChmdW5jdGlvbiooKXtjb25zdCBtPW5ldyBMLGc9eWllbGQgbS5wYXJzZVN0cmVhbShNKTtq'@; put 'LmRyYXdpbmdzW2NdPWd9KSgpfV9wcm9jZXNzRHJhd2luZ1JlbHNFbnRyeShNLGosYyl7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IG09bmV3IGQsZz15aWVsZCBtLnBhcnNlU3RyZWFtKE0pO2ouZHJhd2luZ1JlbHNbY109Z30pKCl9X3Byb2Nlc3NWbWxEcmF3aW5nRW50cnkoTSxqLGMp'@; put 'e3JldHVybiBadChmdW5jdGlvbiooKXtjb25zdCBtPW5ldyBCLGc9eWllbGQgbS5wYXJzZVN0cmVhbShNKTtqLnZtbERyYXdpbmdzW2AuLi9kcmF3aW5ncy8ke2N9LnZtbGBdPWd9KSgpfV9wcm9jZXNzVGhlbWVFbnRyeShNLGosYyl7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe3lpZWxkIG5ldyBQ'@; put 'cm9taXNlKChtLGcpPT57Y29uc3QgeT1uZXcgbDtNLm9uKCJlcnJvciIsZykseS5vbigiZXJyb3IiLGcpLHkub24oImZpbmlzaCIsKCk9PntqLnRoZW1lc1tjXT15LnJlYWQoKS50b1N0cmluZygpLG0oKX0pLE0ucGlwZSh5KX0pfSkoKX1jcmVhdGVJbnB1dFN0cmVhbSgpe3Rocm93IG5ldyBF'@; put 'cnJvcigiYFhMU1gjY3JlYXRlSW5wdXRTdHJlYW1gIGlzIGRlcHJlY2F0ZWQuIFlvdSBzaG91bGQgdXNlIGBYTFNYI3JlYWRgIGluc3RlYWQuIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDUuMC4gUGxlYXNlIGZvbGxvdyB1cGdyYWRlIGluc3RydWN0aW9uOiBodHRw'@; put 'czovL2dpdGh1Yi5jb20vZXhjZWxqcy9leGNlbGpzL2Jsb2IvbWFzdGVyL1VQR1JBREUtNC4wLm1kIil9cmVhZChNLGope3ZhciBjPXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigpeyFNW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSYmTS5waXBlJiYoTT1NLnBpcGUobmV3IHQpKTtjb25zdCBtPVtd'@; put 'O3ZhciB3LGc9ITEseT0hMTt0cnl7Zm9yKHZhciBPLGs9RmUoTSk7Zz0hKE89eWllbGQgay5uZXh0KCkpLmRvbmU7Zz0hMSltLnB1c2goTy52YWx1ZSl9Y2F0Y2goeil7eT0hMCx3PXp9ZmluYWxseXt0cnl7ZyYmbnVsbCE9ay5yZXR1cm4mJih5aWVsZCBrLnJldHVybigpKX1maW5hbGx5e2lm'@; put 'KHkpdGhyb3cgd319cmV0dXJuIGMubG9hZChhLmNvbmNhdChtKSxqKX0pKCl9bG9hZChNLGope3ZhciBjPXRoaXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2xldCBtO209aiYmai5iYXNlNjQ/YS5mcm9tKE0udG9TdHJpbmcoKSwiYmFzZTY0Iik6TTtjb25zdCBnPXt3b3Jrc2hlZXRzOltdLHdv'@; put 'cmtzaGVldEhhc2g6e30sd29ya3NoZWV0UmVsczpbXSx0aGVtZXM6e30sbWVkaWE6W10sbWVkaWFJbmRleDp7fSxkcmF3aW5nczp7fSxkcmF3aW5nUmVsczp7fSxjb21tZW50czp7fSx0YWJsZXM6e30sdm1sRHJhd2luZ3M6e319LHk9eWllbGQgci5sb2FkQXN5bmMobSk7Zm9yKGNvbnN0IHcg'@; put 'b2YgT2JqZWN0LnZhbHVlcyh5LmZpbGVzKSlpZighdy5kaXIpe2xldCBrLE89dy5uYW1lO2lmKCIvIj09PU9bMF0mJihPPU8uc3Vic3RyKDEpKSxPLm1hdGNoKC94bFwvbWVkaWFcLy8pfHxPLm1hdGNoKC94bFwvdGhlbWVcLyhbYS16QS1aMC05XSspWy5deG1sLykpaz1uZXcgdCxrLndyaXRl'@; put 'KHlpZWxkIHcuYXN5bmMoIm5vZGVidWZmZXIiKSk7ZWxzZXtsZXQgejtrPW5ldyB0KHt3cml0YWJsZU9iamVjdE1vZGU6ITAscmVhZGFibGVPYmplY3RNb2RlOiEwfSksej1iLmJyb3dzZXI/aCh5aWVsZCB3LmFzeW5jKCJub2RlYnVmZmVyIikpOnlpZWxkIHcuYXN5bmMoInN0cmluZyIpO2Nv'@; put 'bnN0IFU9MTYzODQ7Zm9yKGxldCBWPTA7Vjx6Lmxlbmd0aDtWKz1VKWsud3JpdGUoei5zdWJzdHJpbmcoVixWK1UpKX1zd2l0Y2goay5lbmQoKSxPKXtjYXNlIl9yZWxzLy5yZWxzIjpnLmdsb2JhbFJlbHM9eWllbGQgYy5wYXJzZVJlbHMoayk7YnJlYWs7Y2FzZSJ4bC93b3JrYm9vay54bWwi'@; put 'Ontjb25zdCB6PXlpZWxkIGMucGFyc2VXb3JrYm9vayhrKTtnLnNoZWV0cz16LnNoZWV0cyxnLmRlZmluZWROYW1lcz16LmRlZmluZWROYW1lcyxnLnZpZXdzPXoudmlld3MsZy5wcm9wZXJ0aWVzPXoucHJvcGVydGllcyxnLmNhbGNQcm9wZXJ0aWVzPXouY2FsY1Byb3BlcnRpZXM7YnJlYWt9'@; put 'Y2FzZSJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyI6Zy53b3JrYm9va1JlbHM9eWllbGQgYy5wYXJzZVJlbHMoayk7YnJlYWs7Y2FzZSJ4bC9zaGFyZWRTdHJpbmdzLnhtbCI6Zy5zaGFyZWRTdHJpbmdzPW5ldyBwLHlpZWxkIGcuc2hhcmVkU3RyaW5ncy5wYXJzZVN0cmVhbShrKTticmVh'@; put 'aztjYXNlInhsL3N0eWxlcy54bWwiOmcuc3R5bGVzPW5ldyBmLHlpZWxkIGcuc3R5bGVzLnBhcnNlU3RyZWFtKGspO2JyZWFrO2Nhc2UiZG9jUHJvcHMvYXBwLnhtbCI6e2NvbnN0IHo9bmV3IF8sVT15aWVsZCB6LnBhcnNlU3RyZWFtKGspO2cuY29tcGFueT1VLmNvbXBhbnksZy5tYW5hZ2Vy'@; put 'PVUubWFuYWdlcjticmVha31jYXNlImRvY1Byb3BzL2NvcmUueG1sIjp7Y29uc3Qgej1uZXcgdSxVPXlpZWxkIHoucGFyc2VTdHJlYW0oayk7T2JqZWN0LmFzc2lnbihnLFUpO2JyZWFrfWRlZmF1bHQ6e2xldCB6PU8ubWF0Y2goL3hsXC93b3Jrc2hlZXRzXC9zaGVldChcZCspWy5deG1sLyk7'@; put 'aWYoeil7eWllbGQgYy5fcHJvY2Vzc1dvcmtzaGVldEVudHJ5KGssZyx6WzFdLGosTyk7YnJlYWt9aWYoej1PLm1hdGNoKC94bFwvd29ya3NoZWV0c1wvX3JlbHNcL3NoZWV0KFxkKylbLl14bWwucmVscy8pLHope3lpZWxkIGMuX3Byb2Nlc3NXb3Jrc2hlZXRSZWxzRW50cnkoayxnLHpbMV0p'@; put 'O2JyZWFrfWlmKHo9Ty5tYXRjaCgveGxcL3RoZW1lXC8oW2EtekEtWjAtOV0rKVsuXXhtbC8pLHope3lpZWxkIGMuX3Byb2Nlc3NUaGVtZUVudHJ5KGssZyx6WzFdKTticmVha31pZih6PU8ubWF0Y2goL3hsXC9tZWRpYVwvKFthLXpBLVowLTldK1suXVthLXpBLVowLTldezMsNH0pJC8pLHop'@; put 'e3lpZWxkIGMuX3Byb2Nlc3NNZWRpYUVudHJ5KGssZyx6WzFdKTticmVha31pZih6PU8ubWF0Y2goL3hsXC9kcmF3aW5nc1wvKFthLXpBLVowLTldKylbLl14bWwvKSx6KXt5aWVsZCBjLl9wcm9jZXNzRHJhd2luZ0VudHJ5KGssZyx6WzFdKTticmVha31pZih6PU8ubWF0Y2goL3hsXC8oY29t'@; put 'bWVudHNcZCspWy5deG1sLykseil7eWllbGQgYy5fcHJvY2Vzc0NvbW1lbnRFbnRyeShrLGcselsxXSk7YnJlYWt9aWYoej1PLm1hdGNoKC94bFwvdGFibGVzXC8odGFibGVcZCspWy5deG1sLykseil7eWllbGQgYy5fcHJvY2Vzc1RhYmxlRW50cnkoayxnLHpbMV0pO2JyZWFrfWlmKHo9Ty5t'@; put 'YXRjaCgveGxcL2RyYXdpbmdzXC9fcmVsc1wvKFthLXpBLVowLTldKylbLl14bWxbLl1yZWxzLykseil7eWllbGQgYy5fcHJvY2Vzc0RyYXdpbmdSZWxzRW50cnkoayxnLHpbMV0pO2JyZWFrfWlmKHo9Ty5tYXRjaCgveGxcL2RyYXdpbmdzXC8odm1sRHJhd2luZ1xkKylbLl12bWwvKSx6KXt5'@; put 'aWVsZCBjLl9wcm9jZXNzVm1sRHJhd2luZ0VudHJ5KGssZyx6WzFdKTticmVha319fX1yZXR1cm4gYy5yZWNvbmNpbGUoZyxqKSxjLndvcmtib29rLm1vZGVsPWcsYy53b3JrYm9va30pKCl9YWRkTWVkaWEoTSxqKXtyZXR1cm4gWnQoZnVuY3Rpb24qKCl7eWllbGQgUHJvbWlzZS5hbGwoai5t'@; put 'ZWRpYS5tYXAoZnVuY3Rpb24oKXt2YXIgYz1adChmdW5jdGlvbioobSl7aWYoImltYWdlIj09PW0udHlwZSl7Y29uc3QgZz1geGwvbWVkaWEvJHttLm5hbWV9LiR7bS5leHRlbnNpb259YDtpZihtLmZpbGVuYW1lKXtjb25zdCB5PXlpZWxkKHc9bS5maWxlbmFtZSxuZXcgUHJvbWlzZSgoTyx6'@; put 'KT0+e28ucmVhZEZpbGUodyx1bmRlZmluZWQsKFUsVik9PntVP3ooVSk6TyhWKX0pfSkpO3JldHVybiBNLmFwcGVuZCh5LHtuYW1lOmd9KX1pZihtLmJ1ZmZlcilyZXR1cm4gTS5hcHBlbmQobS5idWZmZXIse25hbWU6Z30pO2lmKG0uYmFzZTY0KXtjb25zdCB5PW0uYmFzZTY0LHc9eS5zdWJz'@; put 'dHJpbmcoeS5pbmRleE9mKCIsIikrMSk7cmV0dXJuIE0uYXBwZW5kKHcse25hbWU6ZyxiYXNlNjQ6ITB9KX19dmFyIHc7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBtZWRpYSIpfSk7cmV0dXJuIGZ1bmN0aW9uKG0pe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKX0p'@; put 'KCl9YWRkRHJhd2luZ3MoTSxqKXtjb25zdCBjPW5ldyBMLG09bmV3IGQ7ai53b3Jrc2hlZXRzLmZvckVhY2goZz0+e2NvbnN0e2RyYXdpbmc6eX09ZztpZih5KXtjLnByZXBhcmUoeSx7fSk7bGV0IHc9Yy50b1htbCh5KTtNLmFwcGVuZCh3LHtuYW1lOmB4bC9kcmF3aW5ncy8ke3kubmFtZX0u'@; put 'eG1sYH0pLHc9bS50b1htbCh5LnJlbHMpLE0uYXBwZW5kKHcse25hbWU6YHhsL2RyYXdpbmdzL19yZWxzLyR7eS5uYW1lfS54bWwucmVsc2B9KX19KX1hZGRUYWJsZXMoTSxqKXtjb25zdCBjPW5ldyBOO2oud29ya3NoZWV0cy5mb3JFYWNoKG09Pntjb25zdHt0YWJsZXM6Z309bTtnLmZvckVh'@; put 'Y2goeT0+e2MucHJlcGFyZSh5LHt9KTtjb25zdCB3PWMudG9YbWwoeSk7TS5hcHBlbmQodyx7bmFtZToieGwvdGFibGVzLyIreS50YXJnZXR9KX0pfSl9YWRkQ29udGVudFR5cGVzKE0sail7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IGM9KG5ldyB2KS50b1htbChqKTtNLmFwcGVuZChj'@; put 'LHtuYW1lOiJbQ29udGVudF9UeXBlc10ueG1sIn0pfSkoKX1hZGRBcHAoTSxqKXtyZXR1cm4gWnQoZnVuY3Rpb24qKCl7Y29uc3QgYz0obmV3IF8pLnRvWG1sKGopO00uYXBwZW5kKGMse25hbWU6ImRvY1Byb3BzL2FwcC54bWwifSl9KSgpfWFkZENvcmUoTSxqKXtyZXR1cm4gWnQoZnVuY3Rp'@; put 'b24qKCl7Y29uc3QgYz1uZXcgdTtNLmFwcGVuZChjLnRvWG1sKGopLHtuYW1lOiJkb2NQcm9wcy9jb3JlLnhtbCJ9KX0pKCl9YWRkVGhlbWVzKE0sail7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2NvbnN0IGM9ai50aGVtZXN8fHt0aGVtZTE6JH07T2JqZWN0LmtleXMoYykuZm9yRWFjaChtPT57'@; put 'TS5hcHBlbmQoY1ttXSx7bmFtZTpgeGwvdGhlbWUvJHttfS54bWxgfSl9KX0pKCl9YWRkT2ZmaWNlUmVscyhNKXtyZXR1cm4gWnQoZnVuY3Rpb24qKCl7Y29uc3Qgaj0obmV3IGQpLnRvWG1sKFt7SWQ6InJJZDEiLFR5cGU6RC5SZWxUeXBlLk9mZmljZURvY3VtZW50LFRhcmdldDoieGwvd29y'@; put 'a2Jvb2sueG1sIn0se0lkOiJySWQyIixUeXBlOkQuUmVsVHlwZS5Db3JlUHJvcGVydGllcyxUYXJnZXQ6ImRvY1Byb3BzL2NvcmUueG1sIn0se0lkOiJySWQzIixUeXBlOkQuUmVsVHlwZS5FeHRlbmRlclByb3BlcnRpZXMsVGFyZ2V0OiJkb2NQcm9wcy9hcHAueG1sIn1dKTtNLmFwcGVuZChq'@; put 'LHtuYW1lOiJfcmVscy8ucmVscyJ9KX0pKCl9YWRkV29ya2Jvb2tSZWxzKE0sail7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2xldCBjPTE7Y29uc3QgbT1be0lkOiJySWQiK2MrKyxUeXBlOkQuUmVsVHlwZS5TdHlsZXMsVGFyZ2V0OiJzdHlsZXMueG1sIn0se0lkOiJySWQiK2MrKyxUeXBlOkQu'@; put 'UmVsVHlwZS5UaGVtZSxUYXJnZXQ6InRoZW1lL3RoZW1lMS54bWwifV07ai5zaGFyZWRTdHJpbmdzLmNvdW50JiZtLnB1c2goe0lkOiJySWQiK2MrKyxUeXBlOkQuUmVsVHlwZS5TaGFyZWRTdHJpbmdzLFRhcmdldDoic2hhcmVkU3RyaW5ncy54bWwifSksai53b3Jrc2hlZXRzLmZvckVhY2go'@; put 'eT0+e3kucklkPSJySWQiK2MrKyxtLnB1c2goe0lkOnkucklkLFR5cGU6RC5SZWxUeXBlLldvcmtzaGVldCxUYXJnZXQ6YHdvcmtzaGVldHMvc2hlZXQke3kuaWR9LnhtbGB9KX0pO2NvbnN0IGc9KG5ldyBkKS50b1htbChtKTtNLmFwcGVuZChnLHtuYW1lOiJ4bC9fcmVscy93b3JrYm9vay54'@; put 'bWwucmVscyJ9KX0pKCl9YWRkU2hhcmVkU3RyaW5ncyhNLGope3JldHVybiBadChmdW5jdGlvbiooKXtqLnNoYXJlZFN0cmluZ3MmJmouc2hhcmVkU3RyaW5ncy5jb3VudCYmTS5hcHBlbmQoai5zaGFyZWRTdHJpbmdzLnhtbCx7bmFtZToieGwvc2hhcmVkU3RyaW5ncy54bWwifSl9KSgpfWFk'@; put 'ZFN0eWxlcyhNLGope3JldHVybiBadChmdW5jdGlvbiooKXtjb25zdHt4bWw6Y309ai5zdHlsZXM7YyYmTS5hcHBlbmQoYyx7bmFtZToieGwvc3R5bGVzLnhtbCJ9KX0pKCl9YWRkV29ya2Jvb2soTSxqKXtyZXR1cm4gWnQoZnVuY3Rpb24qKCl7Y29uc3QgYz1uZXcgQTtNLmFwcGVuZChjLnRv'@; put 'WG1sKGopLHtuYW1lOiJ4bC93b3JrYm9vay54bWwifSl9KSgpfWFkZFdvcmtzaGVldHMoTSxqKXtyZXR1cm4gWnQoZnVuY3Rpb24qKCl7Y29uc3QgYz1uZXcgSSxtPW5ldyBkLGc9bmV3IFAseT1uZXcgQjtqLndvcmtzaGVldHMuZm9yRWFjaCh3PT57bGV0IGs9bmV3IGk7Yy5yZW5kZXIoayx3'@; put 'KSxNLmFwcGVuZChrLnhtbCx7bmFtZTpgeGwvd29ya3NoZWV0cy9zaGVldCR7dy5pZH0ueG1sYH0pLHcucmVscyYmdy5yZWxzLmxlbmd0aCYmKGs9bmV3IGksbS5yZW5kZXIoayx3LnJlbHMpLE0uYXBwZW5kKGsueG1sLHtuYW1lOmB4bC93b3Jrc2hlZXRzL19yZWxzL3NoZWV0JHt3LmlkfS54'@; put 'bWwucmVsc2B9KSksdy5jb21tZW50cy5sZW5ndGg+MCYmKGs9bmV3IGksZy5yZW5kZXIoayx3KSxNLmFwcGVuZChrLnhtbCx7bmFtZTpgeGwvY29tbWVudHMke3cuaWR9LnhtbGB9KSxrPW5ldyBpLHkucmVuZGVyKGssdyksTS5hcHBlbmQoay54bWwse25hbWU6YHhsL2RyYXdpbmdzL3ZtbERy'@; put 'YXdpbmcke3cuaWR9LnZtbGB9KSl9KX0pKCl9X2ZpbmFsaXplKE0pe3JldHVybiBuZXcgUHJvbWlzZSgoaixjKT0+e00ub24oImZpbmlzaCIsKCk9PntqKHRoaXMpfSksTS5vbigiZXJyb3IiLGMpLE0uZmluYWxpemUoKX0pfXByZXBhcmVNb2RlbChNLGope00uY3JlYXRvcj1NLmNyZWF0b3J8'@; put 'fCJFeGNlbEpTIixNLmxhc3RNb2RpZmllZEJ5PU0ubGFzdE1vZGlmaWVkQnl8fCJFeGNlbEpTIixNLmNyZWF0ZWQ9TS5jcmVhdGVkfHxuZXcgRGF0ZSxNLm1vZGlmaWVkPU0ubW9kaWZpZWR8fG5ldyBEYXRlLE0udXNlU2hhcmVkU3RyaW5ncz12b2lkIDA9PT1qLnVzZVNoYXJlZFN0cmluZ3N8'@; put 'fGoudXNlU2hhcmVkU3RyaW5ncyxNLnVzZVN0eWxlcz12b2lkIDA9PT1qLnVzZVN0eWxlc3x8ai51c2VTdHlsZXMsTS5zaGFyZWRTdHJpbmdzPW5ldyBwLE0uc3R5bGVzPU0udXNlU3R5bGVzP25ldyBmKCEwKTpuZXcgZi5Nb2NrO2NvbnN0IGM9bmV3IEEsbT1uZXcgSTtjLnByZXBhcmUoTSk7'@; put 'Y29uc3QgZz17c2hhcmVkU3RyaW5nczpNLnNoYXJlZFN0cmluZ3Msc3R5bGVzOk0uc3R5bGVzLGRhdGUxOTA0Ok0ucHJvcGVydGllcy5kYXRlMTkwNCxkcmF3aW5nc0NvdW50OjAsbWVkaWE6TS5tZWRpYX07Zy5kcmF3aW5ncz1NLmRyYXdpbmdzPVtdLGcuY29tbWVudFJlZnM9TS5jb21tZW50'@; put 'UmVmcz1bXTtsZXQgeT0wO00udGFibGVzPVtdLE0ud29ya3NoZWV0cy5mb3JFYWNoKHc9Pnt3LnRhYmxlcy5mb3JFYWNoKGs9Pnt5Kyssay50YXJnZXQ9YHRhYmxlJHt5fS54bWxgLGsuaWQ9eSxNLnRhYmxlcy5wdXNoKGspfSksbS5wcmVwYXJlKHcsZyl9KX13cml0ZShNLGope3ZhciBjPXRo'@; put 'aXM7cmV0dXJuIFp0KGZ1bmN0aW9uKigpe2o9anx8e307Y29uc3R7bW9kZWw6bX09Yy53b3JrYm9vayxnPW5ldyBlLlppcFdyaXRlcihqLnppcCk7cmV0dXJuIGcucGlwZShNKSxjLnByZXBhcmVNb2RlbChtLGopLHlpZWxkIGMuYWRkQ29udGVudFR5cGVzKGcsbSkseWllbGQgYy5hZGRPZmZp'@; put 'Y2VSZWxzKGcsbSkseWllbGQgYy5hZGRXb3JrYm9va1JlbHMoZyxtKSx5aWVsZCBjLmFkZFdvcmtzaGVldHMoZyxtKSx5aWVsZCBjLmFkZFNoYXJlZFN0cmluZ3MoZyxtKSx5aWVsZCBjLmFkZERyYXdpbmdzKGcsbSkseWllbGQgYy5hZGRUYWJsZXMoZyxtKSx5aWVsZCBQcm9taXNlLmFsbChb'@; put 'Yy5hZGRUaGVtZXMoZyxtKSxjLmFkZFN0eWxlcyhnLG0pXSkseWllbGQgYy5hZGRNZWRpYShnLG0pLHlpZWxkIFByb21pc2UuYWxsKFtjLmFkZEFwcChnLG0pLGMuYWRkQ29yZShnLG0pXSkseWllbGQgYy5hZGRXb3JrYm9vayhnLG0pLGMuX2ZpbmFsaXplKGcpfSkoKX13cml0ZUZpbGUoTSxq'@; put 'KXtjb25zdCBjPW8uY3JlYXRlV3JpdGVTdHJlYW0oTSk7cmV0dXJuIG5ldyBQcm9taXNlKChtLGcpPT57Yy5vbigiZmluaXNoIiwoKT0+e20oKX0pLGMub24oImVycm9yIix5PT57Zyh5KX0pLHRoaXMud3JpdGUoYyxqKS50aGVuKCgpPT57Yy5lbmQoKX0pLmNhdGNoKHk9PntnKHkpfSl9KX13'@; put 'cml0ZUJ1ZmZlcihNKXt2YXIgaj10aGlzO3JldHVybiBadChmdW5jdGlvbiooKXtjb25zdCBjPW5ldyBsO3JldHVybiB5aWVsZCBqLndyaXRlKGMsTSksYy5yZWFkKCl9KSgpfX1ELlJlbFR5cGU9cygiLi9yZWwtdHlwZSIpLEUuZXhwb3J0cz1EfSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxz'@; put 'KCJfcHJvY2VzcyIpLHMoImJ1ZmZlciIpLkJ1ZmZlcil9LHsiLi4vdXRpbHMvYnJvd3Nlci1idWZmZXItZGVjb2RlIjoxNiwiLi4vdXRpbHMvc3RyZWFtLWJ1ZiI6MjQsIi4uL3V0aWxzL3V0aWxzIjoyNywiLi4vdXRpbHMveG1sLXN0cmVhbSI6MjgsIi4uL3V0aWxzL3ppcC1zdHJlYW0iOjI5'@; put 'LCIuL3JlbC10eXBlIjozMSwiLi94Zm9ybS9ib29rL3dvcmtib29rLXhmb3JtIjozOCwiLi94Zm9ybS9jb21tZW50L2NvbW1lbnRzLXhmb3JtIjo0MCwiLi94Zm9ybS9jb21tZW50L3ZtbC1ub3Rlcy14Zm9ybSI6NDUsIi4veGZvcm0vY29yZS9hcHAteGZvcm0iOjUxLCIuL3hmb3JtL2NvcmUv'@; put 'Y29udGVudC10eXBlcy14Zm9ybSI6NTIsIi4veGZvcm0vY29yZS9jb3JlLXhmb3JtIjo1MywiLi94Zm9ybS9jb3JlL3JlbGF0aW9uc2hpcHMteGZvcm0iOjU1LCIuL3hmb3JtL2RyYXdpbmcvZHJhd2luZy14Zm9ybSI6NjIsIi4veGZvcm0vc2hlZXQvd29ya3NoZWV0LXhmb3JtIjoxMTUsIi4v'@; put 'eGZvcm0vc3RyaW5ncy9zaGFyZWQtc3RyaW5ncy14Zm9ybSI6MTI0LCIuL3hmb3JtL3N0eWxlL3N0eWxlcy14Zm9ybSI6MTM1LCIuL3hmb3JtL3RhYmxlL3RhYmxlLXhmb3JtIjoxNDMsIi4veG1sL3RoZW1lMSI6MTQ1LF9wcm9jZXNzOjQ2NyxidWZmZXI6MjIwLGZzOjIxNixqc3ppcDo0NDEs'@; put 'InJlYWRhYmxlLXN0cmVhbSI6NDkxfV0sMTQ1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PlxuPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3Blbnht'@; put 'bGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+IDxhOnRoZW1lRWxlbWVudHM+IDxhOmNsclNjaGVtZSBuYW1lPSJPZmZpY2UiPiA8YTpkazE+IDxhOnN5c0NsciB2YWw9IndpbmRvd1RleHQiIGxhc3RDbHI9IjAwMDAwMCIvPiA8L2E6ZGsxPiA8'@; put 'YTpsdDE+IDxhOnN5c0NsciB2YWw9IndpbmRvdyIgbGFzdENscj0iRkZGRkZGIi8+IDwvYTpsdDE+IDxhOmRrMj4gPGE6c3JnYkNsciB2YWw9IjFGNDk3RCIvPiA8L2E6ZGsyPiA8YTpsdDI+IDxhOnNyZ2JDbHIgdmFsPSJFRUVDRTEiLz4gPC9hOmx0Mj4gPGE6YWNjZW50MT4gPGE6c3JnYkNs'@; put 'ciB2YWw9IjRGODFCRCIvPiA8L2E6YWNjZW50MT4gPGE6YWNjZW50Mj4gPGE6c3JnYkNsciB2YWw9IkMwNTA0RCIvPiA8L2E6YWNjZW50Mj4gPGE6YWNjZW50Mz4gPGE6c3JnYkNsciB2YWw9IjlCQkI1OSIvPiA8L2E6YWNjZW50Mz4gPGE6YWNjZW50ND4gPGE6c3JnYkNsciB2YWw9IjgwNjRB'@; put 'MiIvPiA8L2E6YWNjZW50ND4gPGE6YWNjZW50NT4gPGE6c3JnYkNsciB2YWw9IjRCQUNDNiIvPiA8L2E6YWNjZW50NT4gPGE6YWNjZW50Nj4gPGE6c3JnYkNsciB2YWw9IkY3OTY0NiIvPiA8L2E6YWNjZW50Nj4gPGE6aGxpbms+IDxhOnNyZ2JDbHIgdmFsPSIwMDAwRkYiLz4gPC9hOmhsaW5r'@; put 'PiA8YTpmb2xIbGluaz4gPGE6c3JnYkNsciB2YWw9IjgwMDA4MCIvPiA8L2E6Zm9sSGxpbms+IDwvYTpjbHJTY2hlbWU+IDxhOmZvbnRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4gPGE6bWFqb3JGb250PiA8YTpsYXRpbiB0eXBlZmFjZT0iQ2FtYnJpYSIvPiA8YTplYSB0eXBlZmFjZT0iIi8+IDxh'@; put 'OmNzIHR5cGVmYWNlPSIiLz4gPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSJcdWZmMmRcdWZmMzMgXHVmZjMwXHUzMGI0XHUzMGI3XHUzMGMzXHUzMGFmIi8+IDxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFjZT0iXHViOWQxXHVjNzQwIFx1YWNlMFx1YjUxNSIvPiA8YTpmb250'@; put 'IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Ilx1NWI4Ylx1NGY1MyIvPiA8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9Ilx1NjViMFx1N2QzMFx1NjYwZVx1OWFkNCIvPiA8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPiA8YTpmb250IHNjcmlw'@; put 'dD0iSGViciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPiA8YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPiA8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+IDxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+IDxh'@; put 'OmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+IDxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iTW9vbEJvcmFuIi8+IDxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz4gPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIv'@; put 'PiA8YTpmb250IHNjcmlwdD0iQ2FucyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+IDxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz4gPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4gPGE6Zm9udCBz'@; put 'Y3JpcHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4gPGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+IDxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+IDxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1'@; put 'dGFtaSIvPiA8YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+IDxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4gPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+IDxhOmZvbnQgc2NyaXB0PSJNbHlt'@; put 'IiB0eXBlZmFjZT0iS2FydGlrYSIvPiA8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPiA8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPiA8YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIv'@; put 'PiA8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPiA8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4gPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+IDwvYTptYWpvckZvbnQ+IDxh'@; put 'Om1pbm9yRm9udD4gPGE6bGF0aW4gdHlwZWZhY2U9IkNhbGlicmkiLz4gPGE6ZWEgdHlwZWZhY2U9IiIvPiA8YTpjcyB0eXBlZmFjZT0iIi8+IDxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0eXBlZmFjZT0iXHVmZjJkXHVmZjMzIFx1ZmYzMFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZiIvPiA8YTpm'@; put 'b250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9Ilx1YjlkMVx1Yzc0MCBcdWFjZTBcdWI1MTUiLz4gPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSJcdTViOGJcdTRmNTMiLz4gPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSJcdTY1YjBcdTdkMzBcdTY2MGVcdTlhZDQiLz4g'@; put 'PGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPiA8YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IkFyaWFsIi8+IDxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+IDxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz4g'@; put 'PGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4gPGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz4gPGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPiA8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdh'@; put 'Ii8+IDxhOmZvbnQgc2NyaXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4gPGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPiA8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+IDxhOmZvbnQgc2NyaXB0PSJZaWlp'@; put 'IiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+IDxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+IDxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPiA8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZhY2U9Ik1h'@; put 'bmdhbCIvPiA8YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz4gPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPiA8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+IDxhOmZvbnQgc2NyaXB0PSJPcnlh'@; put 'IiB0eXBlZmFjZT0iS2FsaW5nYSIvPiA8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4gPGE6Zm9udCBzY3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJEb2tDaGFtcGEiLz4gPGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz4gPGE6Zm9u'@; put 'dCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4gPGE6Zm9udCBzY3JpcHQ9IlZpZXQiIHR5cGVmYWNlPSJBcmlhbCIvPiA8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4gPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVm'@; put 'YWNlPSJTeWxmYWVuIi8+IDwvYTptaW5vckZvbnQ+IDwvYTpmb250U2NoZW1lPiA8YTpmbXRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4gPGE6ZmlsbFN0eWxlTHN0PiA8YTpzb2xpZEZpbGw+IDxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+IDwvYTpzb2xpZEZpbGw+IDxhOmdyYWRGaWxsIHJvdFdp'@; put 'dGhTaGFwZT0iMSI+IDxhOmdzTHN0PiA8YTpncyBwb3M9IjAiPiA8YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+IDxhOnRpbnQgdmFsPSI1MDAwMCIvPiA8YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdzPiA8YTpncyBwb3M9IjM1MDAwIj4gPGE6c2NoZW1lQ2xy'@; put 'IHZhbD0icGhDbHIiPiA8YTp0aW50IHZhbD0iMzcwMDAiLz4gPGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+IDwvYTpzY2hlbWVDbHI+IDwvYTpncz4gPGE6Z3MgcG9zPSIxMDAwMDAiPiA8YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+IDxhOnRpbnQgdmFsPSIxNTAwMCIvPiA8YTpzYXRNb2QgdmFs'@; put 'PSIzNTAwMDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdzPiA8L2E6Z3NMc3Q+IDxhOmxpbiBhbmc9IjE2MjAwMDAwIiBzY2FsZWQ9IjEiLz4gPC9hOmdyYWRGaWxsPiA8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPiA8YTpnc0xzdD4gPGE6Z3MgcG9zPSIwIj4gPGE6c2NoZW1lQ2xyIHZh'@; put 'bD0icGhDbHIiPiA8YTp0aW50IHZhbD0iMTAwMDAwIi8+IDxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+IDxhOnNhdE1vZCB2YWw9IjEzMDAwMCIvPiA8L2E6c2NoZW1lQ2xyPiA8L2E6Z3M+IDxhOmdzIHBvcz0iMTAwMDAwIj4gPGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPiA8YTp0aW50IHZhbD0i'@; put 'NTAwMDAiLz4gPGE6c2hhZGUgdmFsPSIxMDAwMDAiLz4gPGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+IDwvYTpzY2hlbWVDbHI+IDwvYTpncz4gPC9hOmdzTHN0PiA8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIwIi8+IDwvYTpncmFkRmlsbD4gPC9hOmZpbGxTdHlsZUxzdD4gPGE6bG5T'@; put 'dHlsZUxzdD4gPGE6bG4gdz0iOTUyNSIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+IDxhOnNvbGlkRmlsbD4gPGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPiA8YTpzaGFkZSB2YWw9Ijk1MDAwIi8+IDxhOnNhdE1vZCB2YWw9IjEwNTAwMCIvPiA8L2E6c2NoZW1lQ2xyPiA8L2E6'@; put 'c29saWRGaWxsPiA8YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+IDwvYTpsbj4gPGE6bG4gdz0iMjU0MDAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPiA8YTpzb2xpZEZpbGw+IDxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+IDwvYTpzb2xpZEZpbGw+IDxhOnByc3REYXNoIHZh'@; put 'bD0ic29saWQiLz4gPC9hOmxuPiA8YTpsbiB3PSIzODEwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+IDxhOnNvbGlkRmlsbD4gPGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz4gPC9hOnNvbGlkRmlsbD4gPGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPiA8L2E6bG4+IDwvYTps'@; put 'blN0eWxlTHN0PiA8YTplZmZlY3RTdHlsZUxzdD4gPGE6ZWZmZWN0U3R5bGU+IDxhOmVmZmVjdExzdD4gPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMDAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPiA8YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj4gPGE6YWxw'@; put 'aGEgdmFsPSIzODAwMCIvPiA8L2E6c3JnYkNscj4gPC9hOm91dGVyU2hkdz4gPC9hOmVmZmVjdExzdD4gPC9hOmVmZmVjdFN0eWxlPiA8YTplZmZlY3RTdHlsZT4gPGE6ZWZmZWN0THN0PiA8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJv'@; put 'dFdpdGhTaGFwZT0iMCI+IDxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPiA8YTphbHBoYSB2YWw9IjM1MDAwIi8+IDwvYTpzcmdiQ2xyPiA8L2E6b3V0ZXJTaGR3PiA8L2E6ZWZmZWN0THN0PiA8L2E6ZWZmZWN0U3R5bGU+IDxhOmVmZmVjdFN0eWxlPiA8YTplZmZlY3RMc3Q+IDxhOm91dGVyU2hk'@; put 'dyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjMwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj4gPGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+IDxhOmFscGhhIHZhbD0iMzUwMDAiLz4gPC9hOnNyZ2JDbHI+IDwvYTpvdXRlclNoZHc+IDwvYTplZmZlY3RMc3Q+IDxhOnNjZW5lM2Q+'@; put 'IDxhOmNhbWVyYSBwcnN0PSJvcnRob2dyYXBoaWNGcm9udCI+IDxhOnJvdCBsYXQ9IjAiIGxvbj0iMCIgcmV2PSIwIi8+IDwvYTpjYW1lcmE+IDxhOmxpZ2h0UmlnIHJpZz0idGhyZWVQdCIgZGlyPSJ0Ij4gPGE6cm90IGxhdD0iMCIgbG9uPSIwIiByZXY9IjEyMDAwMDAiLz4gPC9hOmxpZ2h0'@; put 'UmlnPiA8L2E6c2NlbmUzZD4gPGE6c3AzZD4gPGE6YmV2ZWxUIHc9IjYzNTAwIiBoPSIyNTQwMCIvPiA8L2E6c3AzZD4gPC9hOmVmZmVjdFN0eWxlPiA8L2E6ZWZmZWN0U3R5bGVMc3Q+IDxhOmJnRmlsbFN0eWxlTHN0PiA8YTpzb2xpZEZpbGw+IDxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+'@; put 'IDwvYTpzb2xpZEZpbGw+IDxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+IDxhOmdzTHN0PiA8YTpncyBwb3M9IjAiPiA8YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+IDxhOnRpbnQgdmFsPSI0MDAwMCIvPiA8YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdz'@; put 'PiA8YTpncyBwb3M9IjQwMDAwIj4gPGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPiA8YTp0aW50IHZhbD0iNDUwMDAiLz4gPGE6c2hhZGUgdmFsPSI5OTAwMCIvPiA8YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdzPiA8YTpncyBwb3M9IjEwMDAwMCI+IDxhOnNj'@; put 'aGVtZUNsciB2YWw9InBoQ2xyIj4gPGE6c2hhZGUgdmFsPSIyMDAwMCIvPiA8YTpzYXRNb2QgdmFsPSIyNTUwMDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdzPiA8L2E6Z3NMc3Q+IDxhOnBhdGggcGF0aD0iY2lyY2xlIj4gPGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iLTgwMDAwIiByPSI1'@; put 'MDAwMCIgYj0iMTgwMDAwIi8+IDwvYTpwYXRoPiA8L2E6Z3JhZEZpbGw+IDxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+IDxhOmdzTHN0PiA8YTpncyBwb3M9IjAiPiA8YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+IDxhOnRpbnQgdmFsPSI4MDAwMCIvPiA8YTpzYXRNb2QgdmFsPSIzMDAw'@; put 'MDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdzPiA8YTpncyBwb3M9IjEwMDAwMCI+IDxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj4gPGE6c2hhZGUgdmFsPSIzMDAwMCIvPiA8YTpzYXRNb2QgdmFsPSIyMDAwMDAiLz4gPC9hOnNjaGVtZUNscj4gPC9hOmdzPiA8L2E6Z3NMc3Q+IDxhOnBhdGgg'@; put 'cGF0aD0iY2lyY2xlIj4gPGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iNTAwMDAiIHI9IjUwMDAwIiBiPSI1MDAwMCIvPiA8L2E6cGF0aD4gPC9hOmdyYWRGaWxsPiA8L2E6YmdGaWxsU3R5bGVMc3Q+IDwvYTpmbXRTY2hlbWU+IDwvYTp0aGVtZUVsZW1lbnRzPiA8YTpvYmplY3REZWZhdWx0'@; put 'cz4gPGE6c3BEZWY+IDxhOnNwUHIvPiA8YTpib2R5UHIvPiA8YTpsc3RTdHlsZS8+IDxhOnN0eWxlPiA8YTpsblJlZiBpZHg9IjEiPiA8YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+IDwvYTpsblJlZj4gPGE6ZmlsbFJlZiBpZHg9IjMiPiA8YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+'@; put 'IDwvYTpmaWxsUmVmPiA8YTplZmZlY3RSZWYgaWR4PSIyIj4gPGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPiA8L2E6ZWZmZWN0UmVmPiA8YTpmb250UmVmIGlkeD0ibWlub3IiPiA8YTpzY2hlbWVDbHIgdmFsPSJsdDEiLz4gPC9hOmZvbnRSZWY+IDwvYTpzdHlsZT4gPC9hOnNwRGVmPiA8'@; put 'YTpsbkRlZj4gPGE6c3BQci8+IDxhOmJvZHlQci8+IDxhOmxzdFN0eWxlLz4gPGE6c3R5bGU+IDxhOmxuUmVmIGlkeD0iMiI+IDxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz4gPC9hOmxuUmVmPiA8YTpmaWxsUmVmIGlkeD0iMCI+IDxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz4gPC9h'@; put 'OmZpbGxSZWY+IDxhOmVmZmVjdFJlZiBpZHg9IjEiPiA8YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+IDwvYTplZmZlY3RSZWY+IDxhOmZvbnRSZWYgaWR4PSJtaW5vciI+IDxhOnNjaGVtZUNsciB2YWw9InR4MSIvPiA8L2E6Zm9udFJlZj4gPC9hOnN0eWxlPiA8L2E6bG5EZWY+IDwvYTpv'@; put 'YmplY3REZWZhdWx0cz4gPGE6ZXh0cmFDbHJTY2hlbWVMc3QvPiA8L2E6dGhlbWU+J30se31dLDE0NjpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMu'@; put 'Q3N2Rm9ybWF0dGVyU3RyZWFtPXZvaWQgMDtjb25zdCBhPXMoInN0cmVhbSIpLG89cygiLi9mb3JtYXR0ZXIiKTtTLkNzdkZvcm1hdHRlclN0cmVhbT1jbGFzcyByIGV4dGVuZHMgYS5UcmFuc2Zvcm17Y29uc3RydWN0b3IoZSl7c3VwZXIoe3dyaXRhYmxlT2JqZWN0TW9kZTplLm9iamVjdE1v'@; put 'ZGV9KSx0aGlzLmhhc1dyaXR0ZW5CT009ITEsdGhpcy5mb3JtYXR0ZXJPcHRpb25zPWUsdGhpcy5yb3dGb3JtYXR0ZXI9bmV3IG8uUm93Rm9ybWF0dGVyKGUpLHRoaXMuaGFzV3JpdHRlbkJPTT0hZS53cml0ZUJPTX10cmFuc2Zvcm0oZSl7cmV0dXJuIHRoaXMucm93Rm9ybWF0dGVyLnJvd1Ry'@; put 'YW5zZm9ybT1lLHRoaXN9X3RyYW5zZm9ybShlLGwsbil7bGV0IGk9ITE7dHJ5e3RoaXMuaGFzV3JpdHRlbkJPTXx8KHRoaXMucHVzaCh0aGlzLmZvcm1hdHRlck9wdGlvbnMuQk9NKSx0aGlzLmhhc1dyaXR0ZW5CT009ITApLHRoaXMucm93Rm9ybWF0dGVyLmZvcm1hdChlLChoLGYpPT5oPyhp'@; put 'PSEwLG4oaCkpOihmJiZmLmZvckVhY2godT0+e3RoaXMucHVzaChiLmZyb20odSwidXRmOCIpKX0pLGk9ITAsbigpKSl9Y2F0Y2goaCl7aWYoaSl0aHJvdyBoO24oaCl9fV9mbHVzaChlKXt0aGlzLnJvd0Zvcm1hdHRlci5maW5pc2goKGwsbik9Pmw/ZShsKToobiYmbi5mb3JFYWNoKGk9Pnt0'@; put 'aGlzLnB1c2goYi5mcm9tKGksInV0ZjgiKSl9KSxlKCkpKX19fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJidWZmZXIiKS5CdWZmZXIpfSx7Ii4vZm9ybWF0dGVyIjoxNTAsYnVmZmVyOjIyMCxzdHJlYW06NTA1fV0sMTQ3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO09iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLkZvcm1hdHRlck9wdGlvbnM9dm9pZCAwLFMuRm9ybWF0dGVyT3B0aW9ucz1jbGFzc3tjb25zdHJ1Y3Rvcigpe2xldCBiPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50'@; put 'c1swXTp7fTt2YXIgYTt0aGlzLm9iamVjdE1vZGU9ITAsdGhpcy5kZWxpbWl0ZXI9IiwiLHRoaXMucm93RGVsaW1pdGVyPSJcbiIsdGhpcy5xdW90ZT0nIicsdGhpcy5lc2NhcGU9dGhpcy5xdW90ZSx0aGlzLnF1b3RlQ29sdW1ucz0hMSx0aGlzLnF1b3RlSGVhZGVycz10aGlzLnF1b3RlQ29s'@; put 'dW1ucyx0aGlzLmhlYWRlcnM9bnVsbCx0aGlzLmluY2x1ZGVFbmRSb3dEZWxpbWl0ZXI9ITEsdGhpcy53cml0ZUJPTT0hMSx0aGlzLkJPTT0iXHVmZWZmIix0aGlzLmFsd2F5c1dyaXRlSGVhZGVycz0hMSxPYmplY3QuYXNzaWduKHRoaXMsYnx8e30pLHZvaWQgMD09PWI/LnF1b3RlSGVhZGVy'@; put 'cyYmKHRoaXMucXVvdGVIZWFkZXJzPXRoaXMucXVvdGVDb2x1bW5zKSwhMD09PWI/LnF1b3RlP3RoaXMucXVvdGU9JyInOiExPT09Yj8ucXVvdGUmJih0aGlzLnF1b3RlPSIiKSwic3RyaW5nIiE9dHlwZW9mIGI/LmVzY2FwZSYmKHRoaXMuZXNjYXBlPXRoaXMucXVvdGUpLHRoaXMuc2hvdWxk'@; put 'V3JpdGVIZWFkZXJzPSEhdGhpcy5oZWFkZXJzJiYobnVsbD09PShhPWIud3JpdGVIZWFkZXJzKXx8dm9pZCAwPT09YXx8YSksdGhpcy5oZWFkZXJzPUFycmF5LmlzQXJyYXkodGhpcy5oZWFkZXJzKT90aGlzLmhlYWRlcnM6bnVsbCx0aGlzLmVzY2FwZWRRdW90ZT1gJHt0aGlzLmVzY2FwZX0k'@; put 'e3RoaXMucXVvdGV9YH19fSx7fV0sMTQ4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuRmll'@; put 'bGRGb3JtYXR0ZXI9dm9pZCAwO2NvbnN0IGE9YihzKCJsb2Rhc2guaXNib29sZWFuIikpLG89YihzKCJsb2Rhc2guaXNuaWwiKSkscj1iKHMoImxvZGFzaC5lc2NhcGVyZWdleHAiKSk7Uy5GaWVsZEZvcm1hdHRlcj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9oZWFkZXJzPW51bGwsdGhp'@; put 'cy5mb3JtYXR0ZXJPcHRpb25zPXQsbnVsbCE9PXQuaGVhZGVycyYmKHRoaXMuaGVhZGVycz10LmhlYWRlcnMpLHRoaXMuUkVQTEFDRV9SRUdFWFA9bmV3IFJlZ0V4cCh0LnF1b3RlLCJnIik7Y29uc3QgZT1gWyR7dC5kZWxpbWl0ZXJ9JHtyLmRlZmF1bHQodC5yb3dEZWxpbWl0ZXIpfXxccnxc'@; put 'bl1gO3RoaXMuRVNDQVBFX1JFR0VYUD1uZXcgUmVnRXhwKGUpfXNldCBoZWFkZXJzKHQpe3RoaXMuX2hlYWRlcnM9dH1zaG91bGRRdW90ZSh0LGUpe2NvbnN0IGw9ZT90aGlzLmZvcm1hdHRlck9wdGlvbnMucXVvdGVIZWFkZXJzOnRoaXMuZm9ybWF0dGVyT3B0aW9ucy5xdW90ZUNvbHVtbnM7'@; put 'cmV0dXJuIGEuZGVmYXVsdChsKT9sOkFycmF5LmlzQXJyYXkobCk/bFt0XTpudWxsIT09dGhpcy5faGVhZGVycyYmbFt0aGlzLl9oZWFkZXJzW3RdXX1mb3JtYXQodCxlLGwpe2NvbnN0IG49KCIiKyhvLmRlZmF1bHQodCk/IiI6dCkpLnJlcGxhY2UoL1wwL2csIiIpLHtmb3JtYXR0ZXJPcHRp'@; put 'b25zOml9PXRoaXM7cmV0dXJuIiIhPT1pLnF1b3RlJiYtMSE9PW4uaW5kZXhPZihpLnF1b3RlKT90aGlzLnF1b3RlRmllbGQobi5yZXBsYWNlKHRoaXMuUkVQTEFDRV9SRUdFWFAsaS5lc2NhcGVkUXVvdGUpKTotMSE9PW4uc2VhcmNoKHRoaXMuRVNDQVBFX1JFR0VYUCl8fHRoaXMuc2hvdWxk'@; put 'UXVvdGUoZSxsKT90aGlzLnF1b3RlRmllbGQobik6bn1xdW90ZUZpZWxkKHQpe2NvbnN0e3F1b3RlOmV9PXRoaXMuZm9ybWF0dGVyT3B0aW9ucztyZXR1cm5gJHtlfSR7dH0ke2V9YH19fSx7ImxvZGFzaC5lc2NhcGVyZWdleHAiOjQ0MiwibG9kYXNoLmlzYm9vbGVhbiI6NDQ0LCJsb2Rhc2gu'@; put 'aXNuaWwiOjQ0N31dLDE0OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihsKXtyZXR1cm4gbCYmbC5fX2VzTW9kdWxlP2w6e2RlZmF1bHQ6bH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLlJvd0Zvcm1hdHRl'@; put 'cj12b2lkIDA7Y29uc3QgYT1iKHMoImxvZGFzaC5pc2Z1bmN0aW9uIikpLG89YihzKCJsb2Rhc2guaXNlcXVhbCIpKSxyPXMoIi4vRmllbGRGb3JtYXR0ZXIiKSx0PXMoIi4uL3R5cGVzIik7Y2xhc3MgZXtjb25zdHJ1Y3RvcihuKXt0aGlzLnJvd0NvdW50PTAsdGhpcy5mb3JtYXR0ZXJPcHRp'@; put 'b25zPW4sdGhpcy5maWVsZEZvcm1hdHRlcj1uZXcgci5GaWVsZEZvcm1hdHRlcihuKSx0aGlzLmhlYWRlcnM9bi5oZWFkZXJzLHRoaXMuc2hvdWxkV3JpdGVIZWFkZXJzPW4uc2hvdWxkV3JpdGVIZWFkZXJzLHRoaXMuaGFzV3JpdHRlbkhlYWRlcnM9ITEsbnVsbCE9PXRoaXMuaGVhZGVycyYm'@; put 'KHRoaXMuZmllbGRGb3JtYXR0ZXIuaGVhZGVycz10aGlzLmhlYWRlcnMpLG4udHJhbnNmb3JtJiYodGhpcy5yb3dUcmFuc2Zvcm09bi50cmFuc2Zvcm0pfXN0YXRpYyBpc1Jvd0hhc2hBcnJheShuKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkobikmJkFycmF5LmlzQXJyYXkoblswXSkmJjI9PT1u'@; put 'WzBdLmxlbmd0aH1zdGF0aWMgaXNSb3dBcnJheShuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKSYmIXRoaXMuaXNSb3dIYXNoQXJyYXkobil9c3RhdGljIGdhdGhlckhlYWRlcnMobil7cmV0dXJuIGUuaXNSb3dIYXNoQXJyYXkobik/bi5tYXAoaT0+aVswXSk6QXJyYXkuaXNBcnJheShuKT9u'@; put 'Ok9iamVjdC5rZXlzKG4pfXN0YXRpYyBjcmVhdGVUcmFuc2Zvcm0obil7cmV0dXJuIHQuaXNTeW5jVHJhbnNmb3JtKG4pPyhpLGgpPT57bGV0IGY9bnVsbDt0cnl7Zj1uKGkpfWNhdGNoKHUpe3JldHVybiBoKHUpfXJldHVybiBoKG51bGwsZil9OihpLGgpPT57bihpLGgpfX1zZXQgcm93VHJh'@; put 'bnNmb3JtKG4pe2lmKCFhLmRlZmF1bHQobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIHRyYW5zZm9ybSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpO3RoaXMuX3Jvd1RyYW5zZm9ybT1lLmNyZWF0ZVRyYW5zZm9ybShuKX1mb3JtYXQobixpKXt0aGlzLmNhbGxUcmFuc2Zvcm1lcihuLChoLGYp'@; put 'PT57aWYoaClyZXR1cm4gaShoKTtpZighbilyZXR1cm4gaShudWxsKTtjb25zdCB1PVtdO2lmKGYpe2NvbnN0e3Nob3VsZEZvcm1hdENvbHVtbnM6cCxoZWFkZXJzOmR9PXRoaXMuY2hlY2tIZWFkZXJzKGYpO2lmKHRoaXMuc2hvdWxkV3JpdGVIZWFkZXJzJiZkJiYhdGhpcy5oYXNXcml0dGVu'@; put 'SGVhZGVycyYmKHUucHVzaCh0aGlzLmZvcm1hdENvbHVtbnMoZCwhMCkpLHRoaXMuaGFzV3JpdHRlbkhlYWRlcnM9ITApLHApe2NvbnN0IHY9dGhpcy5nYXRoZXJDb2x1bW5zKGYpO3UucHVzaCh0aGlzLmZvcm1hdENvbHVtbnModiwhMSkpfX1yZXR1cm4gaShudWxsLHUpfSl9ZmluaXNoKG4p'@; put 'e2NvbnN0IGk9W107aWYodGhpcy5mb3JtYXR0ZXJPcHRpb25zLmFsd2F5c1dyaXRlSGVhZGVycyYmMD09PXRoaXMucm93Q291bnQpe2lmKCF0aGlzLmhlYWRlcnMpcmV0dXJuIG4obmV3IEVycm9yKCJgYWx3YXlzV3JpdGVIZWFkZXJzYCBvcHRpb24gaXMgc2V0IHRvIHRydWUgYnV0IGBoZWFk'@; put 'ZXJzYCBvcHRpb24gbm90IHByb3ZpZGVkLiIpKTtpLnB1c2godGhpcy5mb3JtYXRDb2x1bW5zKHRoaXMuaGVhZGVycywhMCkpfXJldHVybiB0aGlzLmZvcm1hdHRlck9wdGlvbnMuaW5jbHVkZUVuZFJvd0RlbGltaXRlciYmaS5wdXNoKHRoaXMuZm9ybWF0dGVyT3B0aW9ucy5yb3dEZWxpbWl0'@; put 'ZXIpLG4obnVsbCxpKX1jaGVja0hlYWRlcnMobil7aWYodGhpcy5oZWFkZXJzKXJldHVybntzaG91bGRGb3JtYXRDb2x1bW5zOiEwLGhlYWRlcnM6dGhpcy5oZWFkZXJzfTtjb25zdCBpPWUuZ2F0aGVySGVhZGVycyhuKTtyZXR1cm4gdGhpcy5oZWFkZXJzPWksdGhpcy5maWVsZEZvcm1hdHRl'@; put 'ci5oZWFkZXJzPWksdGhpcy5zaG91bGRXcml0ZUhlYWRlcnM/e3Nob3VsZEZvcm1hdENvbHVtbnM6IW8uZGVmYXVsdChpLG4pLGhlYWRlcnM6aX06e3Nob3VsZEZvcm1hdENvbHVtbnM6ITAsaGVhZGVyczpudWxsfX1nYXRoZXJDb2x1bW5zKG4pe2lmKG51bGw9PT10aGlzLmhlYWRlcnMpdGhy'@; put 'b3cgbmV3IEVycm9yKCJIZWFkZXJzIGlzIGN1cnJlbnRseSBudWxsIik7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/ZS5pc1Jvd0hhc2hBcnJheShuKT90aGlzLmhlYWRlcnMubWFwKChpLGgpPT57Y29uc3QgZj1uW2hdO3JldHVybiBmP2ZbMV06IiJ9KTplLmlzUm93QXJyYXkobikmJiF0aGlz'@; put 'LnNob3VsZFdyaXRlSGVhZGVycz9uOnRoaXMuaGVhZGVycy5tYXAoKGksaCk9Pm5baF0pOnRoaXMuaGVhZGVycy5tYXAoaT0+bltpXSl9Y2FsbFRyYW5zZm9ybWVyKG4saSl7cmV0dXJuIHRoaXMuX3Jvd1RyYW5zZm9ybT90aGlzLl9yb3dUcmFuc2Zvcm0obixpKTppKG51bGwsbil9Zm9ybWF0'@; put 'Q29sdW1ucyhuLGkpe2NvbnN0IGg9bi5tYXAoKHUscCk9PnRoaXMuZmllbGRGb3JtYXR0ZXIuZm9ybWF0KHUscCxpKSkuam9pbih0aGlzLmZvcm1hdHRlck9wdGlvbnMuZGVsaW1pdGVyKSx7cm93Q291bnQ6Zn09dGhpcztyZXR1cm4gdGhpcy5yb3dDb3VudCs9MSxmP1t0aGlzLmZvcm1hdHRl'@; put 'ck9wdGlvbnMucm93RGVsaW1pdGVyLGhdLmpvaW4oIiIpOmh9fVMuUm93Rm9ybWF0dGVyPWV9LHsiLi4vdHlwZXMiOjE1MiwiLi9GaWVsZEZvcm1hdHRlciI6MTQ4LCJsb2Rhc2guaXNlcXVhbCI6NDQ1LCJsb2Rhc2guaXNmdW5jdGlvbiI6NDQ2fV0sMTUwOltmdW5jdGlvbihzLEUsUyl7InVz'@; put 'ZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLkZpZWxkRm9ybWF0dGVyPVMuUm93Rm9ybWF0dGVyPXZvaWQgMDt2YXIgYj1zKCIuL1Jvd0Zvcm1hdHRlciIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJSb3dGb3JtYXR0ZXIiLHtl'@; put 'bnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBiLlJvd0Zvcm1hdHRlcn19KTt2YXIgYT1zKCIuL0ZpZWxkRm9ybWF0dGVyIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIkZpZWxkRm9ybWF0dGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5GaWVs'@; put 'ZEZvcm1hdHRlcn19KX0seyIuL0ZpZWxkRm9ybWF0dGVyIjoxNDgsIi4vUm93Rm9ybWF0dGVyIjoxNDl9XSwxNTE6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24ocCxkLHYsXyl7dm9pZCAw'@; put 'PT09XyYmKF89diksT2JqZWN0LmRlZmluZVByb3BlcnR5KHAsXyx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZFt2XX19KX06ZnVuY3Rpb24ocCxkLHYsXyl7dm9pZCAwPT09XyYmKF89dikscFtfXT1kW3ZdfSxvPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24ocCxkKXtPYmpl'@; put 'Y3QuZGVmaW5lUHJvcGVydHkocCwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZH0pfTpmdW5jdGlvbihwLGQpe3AuZGVmYXVsdD1kfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy53cml0ZVRvUGF0aD1TLndyaXRlVG9TdHJpbmc9Uy53'@; put 'cml0ZVRvQnVmZmVyPVMud3JpdGVUb1N0cmVhbT1TLndyaXRlPVMuZm9ybWF0PVMuRm9ybWF0dGVyT3B0aW9ucz1TLkNzdkZvcm1hdHRlclN0cmVhbT12b2lkIDA7Y29uc3QgZT1zKCJ1dGlsIiksbD1zKCJzdHJlYW0iKSxuPWZ1bmN0aW9uKHApe2lmKHAmJnAuX19lc01vZHVsZSlyZXR1cm4g'@; put 'cDt2YXIgZD17fTtpZihudWxsIT1wKWZvcih2YXIgdiBpbiBwKSJkZWZhdWx0IiE9PXYmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwLHYpJiZhKGQscCx2KTtyZXR1cm4gbyhkLHApLGR9KHMoImZzIikpLGk9cygiLi9Gb3JtYXR0ZXJPcHRpb25zIiksaD1zKCIuL0Nz'@; put 'dkZvcm1hdHRlclN0cmVhbSIpOyFmdW5jdGlvbihwLGQpe2Zvcih2YXIgdiBpbiBwKSJkZWZhdWx0Ij09PXZ8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLHYpfHxhKGQscCx2KX0ocygiLi90eXBlcyIpLFMpO3ZhciBmPXMoIi4vQ3N2Rm9ybWF0dGVyU3RyZWFtIik7'@; put 'T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIkNzdkZvcm1hdHRlclN0cmVhbSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYuQ3N2Rm9ybWF0dGVyU3RyZWFtfX0pO3ZhciB1PXMoIi4vRm9ybWF0dGVyT3B0aW9ucyIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJGb3Jt'@; put 'YXR0ZXJPcHRpb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdS5Gb3JtYXR0ZXJPcHRpb25zfX0pLFMuZm9ybWF0PXA9Pm5ldyBoLkNzdkZvcm1hdHRlclN0cmVhbShuZXcgaS5Gb3JtYXR0ZXJPcHRpb25zKHApKSxTLndyaXRlPShwLGQpPT57Y29uc3Qgdj1TLmZv'@; put 'cm1hdChkKSxfPWUucHJvbWlzaWZ5KChBLEkpPT57di53cml0ZShBLHZvaWQgMCxJKX0pO3JldHVybiBwLnJlZHVjZSgoQSxJKT0+QS50aGVuKCgpPT5fKEkpKSxQcm9taXNlLnJlc29sdmUoKSkudGhlbigoKT0+di5lbmQoKSkuY2F0Y2goQT0+e3YuZW1pdCgiZXJyb3IiLEEpfSksdn0sUy53'@; put 'cml0ZVRvU3RyZWFtPShwLGQsdik9PlMud3JpdGUoZCx2KS5waXBlKHApLFMud3JpdGVUb0J1ZmZlcj1mdW5jdGlvbihwKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307Y29uc3Qgdj1bXSxfPW5ldyBsLldyaXRhYmxlKHt3'@; put 'cml0ZShBLEksTCl7di5wdXNoKEEpLEwoKX19KTtyZXR1cm4gbmV3IFByb21pc2UoKEEsSSk9PntfLm9uKCJlcnJvciIsSSkub24oImZpbmlzaCIsKCk9PkEoYi5jb25jYXQodikpKSxTLndyaXRlKHAsZCkucGlwZShfKX0pfSxTLndyaXRlVG9TdHJpbmc9KHAsZCk9PlMud3JpdGVUb0J1ZmZl'@; put 'cihwLGQpLnRoZW4odj0+di50b1N0cmluZygpKSxTLndyaXRlVG9QYXRoPShwLGQsdik9Pntjb25zdCBfPW4uY3JlYXRlV3JpdGVTdHJlYW0ocCx7ZW5jb2Rpbmc6InV0ZjgifSk7cmV0dXJuIFMud3JpdGUoZCx2KS5waXBlKF8pfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiYnVmZmVy'@; put 'IikuQnVmZmVyKX0seyIuL0NzdkZvcm1hdHRlclN0cmVhbSI6MTQ2LCIuL0Zvcm1hdHRlck9wdGlvbnMiOjE0NywiLi90eXBlcyI6MTUyLGJ1ZmZlcjoyMjAsZnM6MjE2LHN0cmVhbTo1MDUsdXRpbDo1Mjd9XSwxNTI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu'@; put 'ZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuaXNTeW5jVHJhbnNmb3JtPXZvaWQgMCxTLmlzU3luY1RyYW5zZm9ybT1iPT4xPT09Yi5sZW5ndGh9LHt9XSwxNTM6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO09iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLkNzdlBhcnNlclN0cmVhbT12b2lkIDA7Y29uc3QgYT1zKCJzdHJpbmdfZGVjb2RlciIpLG89cygic3RyZWFtIikscj1zKCIuL3RyYW5zZm9ybXMiKSx0PXMoIi4vcGFyc2VyIik7Y2xhc3MgZSBleHRlbmRzIG8u'@; put 'VHJhbnNmb3Jte2NvbnN0cnVjdG9yKG4pe3N1cGVyKHtvYmplY3RNb2RlOm4ub2JqZWN0TW9kZX0pLHRoaXMubGluZXM9IiIsdGhpcy5yb3dDb3VudD0wLHRoaXMucGFyc2VkUm93Q291bnQ9MCx0aGlzLnBhcnNlZExpbmVDb3VudD0wLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLmhlYWRlcnNF'@; put 'bWl0dGVkPSExLHRoaXMucGFyc2VyT3B0aW9ucz1uLHRoaXMucGFyc2VyPW5ldyB0LlBhcnNlcihuKSx0aGlzLmhlYWRlclRyYW5zZm9ybWVyPW5ldyByLkhlYWRlclRyYW5zZm9ybWVyKG4pLHRoaXMuZGVjb2Rlcj1uZXcgYS5TdHJpbmdEZWNvZGVyKG4uZW5jb2RpbmcpLHRoaXMucm93VHJh'@; put 'bnNmb3JtZXJWYWxpZGF0b3I9bmV3IHIuUm93VHJhbnNmb3JtZXJWYWxpZGF0b3J9Z2V0IGhhc0hpdFJvd0xpbWl0KCl7cmV0dXJuIHRoaXMucGFyc2VyT3B0aW9ucy5saW1pdFJvd3MmJnRoaXMucm93Q291bnQ+PXRoaXMucGFyc2VyT3B0aW9ucy5tYXhSb3dzfWdldCBzaG91bGRFbWl0Um93'@; put 'cygpe3JldHVybiB0aGlzLnBhcnNlZFJvd0NvdW50PnRoaXMucGFyc2VyT3B0aW9ucy5za2lwUm93c31nZXQgc2hvdWxkU2tpcExpbmUoKXtyZXR1cm4gdGhpcy5wYXJzZWRMaW5lQ291bnQ8PXRoaXMucGFyc2VyT3B0aW9ucy5za2lwTGluZXN9dHJhbnNmb3JtKG4pe3JldHVybiB0aGlzLnJv'@; put 'd1RyYW5zZm9ybWVyVmFsaWRhdG9yLnJvd1RyYW5zZm9ybT1uLHRoaXN9dmFsaWRhdGUobil7cmV0dXJuIHRoaXMucm93VHJhbnNmb3JtZXJWYWxpZGF0b3Iucm93VmFsaWRhdG9yPW4sdGhpc31lbWl0KG4pe2lmKCJlbmQiPT09bilyZXR1cm4gdGhpcy5lbmRFbWl0dGVkfHwodGhpcy5lbmRF'@; put 'bWl0dGVkPSEwLHN1cGVyLmVtaXQoImVuZCIsdGhpcy5yb3dDb3VudCkpLCExO2Zvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGk+MT9pLTE6MCksZj0xO2Y8aTtmKyspaFtmLTFdPWFyZ3VtZW50c1tmXTtyZXR1cm4gc3VwZXIuZW1pdChuLC4uLmgpfV90cmFuc2Zvcm0o'@; put 'bixpLGgpe2lmKHRoaXMuaGFzSGl0Um93TGltaXQpcmV0dXJuIGgoKTtjb25zdCBmPWUud3JhcERvbmVDYWxsYmFjayhoKTt0cnl7Y29uc3R7bGluZXM6dX09dGhpcyxwPXUrdGhpcy5kZWNvZGVyLndyaXRlKG4pLGQ9dGhpcy5wYXJzZShwLCEwKTtyZXR1cm4gdGhpcy5wcm9jZXNzUm93cyhk'@; put 'LGYpfWNhdGNoKHUpe3JldHVybiBmKHUpfX1fZmx1c2gobil7Y29uc3QgaT1lLndyYXBEb25lQ2FsbGJhY2sobik7aWYodGhpcy5oYXNIaXRSb3dMaW1pdClyZXR1cm4gaSgpO3RyeXtjb25zdCBoPXRoaXMubGluZXMrdGhpcy5kZWNvZGVyLmVuZCgpLGY9dGhpcy5wYXJzZShoLCExKTtyZXR1'@; put 'cm4gdGhpcy5wcm9jZXNzUm93cyhmLGkpfWNhdGNoKGgpe3JldHVybiBpKGgpfX1wYXJzZShuLGkpe2lmKCFuKXJldHVybltdO2NvbnN0e2xpbmU6aCxyb3dzOmZ9PXRoaXMucGFyc2VyLnBhcnNlKG4saSk7cmV0dXJuIHRoaXMubGluZXM9aCxmfXByb2Nlc3NSb3dzKG4saSl7Y29uc3QgaD1u'@; put 'Lmxlbmd0aCxmPXU9Pntjb25zdCBwPV89Pl8/aShfKTp1JTEwMCE9MD9mKHUrMSk6dm9pZCBiKCgpPT5mKHUrMSkpO2lmKHRoaXMuY2hlY2tBbmRFbWl0SGVhZGVycygpLHU+PWh8fHRoaXMuaGFzSGl0Um93TGltaXQpcmV0dXJuIGkoKTtpZih0aGlzLnBhcnNlZExpbmVDb3VudCs9MSx0aGlz'@; put 'LnNob3VsZFNraXBMaW5lKXJldHVybiBwKCk7Y29uc3QgZD1uW3VdO3RoaXMucm93Q291bnQrPTEsdGhpcy5wYXJzZWRSb3dDb3VudCs9MTtjb25zdCB2PXRoaXMucm93Q291bnQ7cmV0dXJuIHRoaXMudHJhbnNmb3JtUm93KGQsKF8sQSk9PntpZihfKXJldHVybiB0aGlzLnJvd0NvdW50LT0x'@; put 'LHAoXyk7aWYoIUEpcmV0dXJuIHAobmV3IEVycm9yKCJleHBlY3RlZCB0cmFuc2Zvcm0gcmVzdWx0IikpO2lmKEEuaXNWYWxpZCl7aWYoQS5yb3cpcmV0dXJuIHRoaXMucHVzaFJvdyhBLnJvdyxwKX1lbHNlIHRoaXMuZW1pdCgiZGF0YS1pbnZhbGlkIixBLnJvdyx2LEEucmVhc29uKTtyZXR1'@; put 'cm4gcCgpfSl9O2YoMCl9dHJhbnNmb3JtUm93KG4saSl7dHJ5e3RoaXMuaGVhZGVyVHJhbnNmb3JtZXIudHJhbnNmb3JtKG4sKGgsZik9Pmg/aShoKTpmP2YuaXNWYWxpZD9mLnJvdz90aGlzLnNob3VsZEVtaXRSb3dzP3RoaXMucm93VHJhbnNmb3JtZXJWYWxpZGF0b3IudHJhbnNmb3JtQW5k'@; put 'VmFsaWRhdGUoZi5yb3csaSk6dGhpcy5za2lwUm93KGkpOih0aGlzLnJvd0NvdW50LT0xLHRoaXMucGFyc2VkUm93Q291bnQtPTEsaShudWxsLHtyb3c6bnVsbCxpc1ZhbGlkOiEwfSkpOnRoaXMuc2hvdWxkRW1pdFJvd3M/aShudWxsLHtpc1ZhbGlkOiExLHJvdzpufSk6dGhpcy5za2lwUm93'@; put 'KGkpOmkobmV3IEVycm9yKCJFeHBlY3RlZCByZXN1bHQgZnJvbSBoZWFkZXIgdHJhbnNmb3JtIikpKX1jYXRjaChoKXtpKGgpfX1jaGVja0FuZEVtaXRIZWFkZXJzKCl7IXRoaXMuaGVhZGVyc0VtaXR0ZWQmJnRoaXMuaGVhZGVyVHJhbnNmb3JtZXIuaGVhZGVycyYmKHRoaXMuaGVhZGVyc0Vt'@; put 'aXR0ZWQ9ITAsdGhpcy5lbWl0KCJoZWFkZXJzIix0aGlzLmhlYWRlclRyYW5zZm9ybWVyLmhlYWRlcnMpKX1za2lwUm93KG4pe3JldHVybiB0aGlzLnJvd0NvdW50LT0xLG4obnVsbCx7cm93Om51bGwsaXNWYWxpZDohMH0pfXB1c2hSb3cobixpKXt0cnl7dGhpcy5wdXNoKHRoaXMucGFyc2Vy'@; put 'T3B0aW9ucy5vYmplY3RNb2RlP246SlNPTi5zdHJpbmdpZnkobikpLGkoKX1jYXRjaChoKXtpKGgpfX1zdGF0aWMgd3JhcERvbmVDYWxsYmFjayhuKXtsZXQgaT0hMTtyZXR1cm4gZnVuY3Rpb24oaCl7aWYoaCl7aWYoaSl0aHJvdyBoO3JldHVybiBpPSEwLHZvaWQgbihoKX1mb3IodmFyIGY9'@; put 'YXJndW1lbnRzLmxlbmd0aCx1PW5ldyBBcnJheShmPjE/Zi0xOjApLHA9MTtwPGY7cCsrKXVbcC0xXT1hcmd1bWVudHNbcF07biguLi51KX19fVMuQ3N2UGFyc2VyU3RyZWFtPWV9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHMoInRpbWVycyIpLnNldEltbWVkaWF0ZSl9LHsiLi9wYXJzZXIi'@; put 'OjE2NSwiLi90cmFuc2Zvcm1zIjoxNjgsc3RyZWFtOjUwNSxzdHJpbmdfZGVjb2RlcjoyMTgsdGltZXJzOjUyM31dLDE1NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihyKXtyZXR1cm4gciYmci5fX2VzTW9kdWxlP3I6e2RlZmF1bHQ6cn19O09iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLlBhcnNlck9wdGlvbnM9dm9pZCAwO2NvbnN0IGE9YihzKCJsb2Rhc2guZXNjYXBlcmVnZXhwIikpLG89YihzKCJsb2Rhc2guaXNuaWwiKSk7Uy5QYXJzZXJPcHRpb25zPWNsYXNze2NvbnN0cnVjdG9yKHIpe3ZhciB0'@; put 'O2lmKHRoaXMub2JqZWN0TW9kZT0hMCx0aGlzLmRlbGltaXRlcj0iLCIsdGhpcy5pZ25vcmVFbXB0eT0hMSx0aGlzLnF1b3RlPSciJyx0aGlzLmVzY2FwZT1udWxsLHRoaXMuZXNjYXBlQ2hhcj10aGlzLnF1b3RlLHRoaXMuY29tbWVudD1udWxsLHRoaXMuc3VwcG9ydHNDb21tZW50cz0hMSx0'@; put 'aGlzLmx0cmltPSExLHRoaXMucnRyaW09ITEsdGhpcy50cmltPSExLHRoaXMuaGVhZGVycz1udWxsLHRoaXMucmVuYW1lSGVhZGVycz0hMSx0aGlzLnN0cmljdENvbHVtbkhhbmRsaW5nPSExLHRoaXMuZGlzY2FyZFVubWFwcGVkQ29sdW1ucz0hMSx0aGlzLmNhcnJpYWdlUmV0dXJuPSJcciIs'@; put 'dGhpcy5lbmNvZGluZz0idXRmOCIsdGhpcy5saW1pdFJvd3M9ITEsdGhpcy5tYXhSb3dzPTAsdGhpcy5za2lwTGluZXM9MCx0aGlzLnNraXBSb3dzPTAsT2JqZWN0LmFzc2lnbih0aGlzLHJ8fHt9KSx0aGlzLmRlbGltaXRlci5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoImRlbGltaXRlciBv'@; put 'cHRpb24gbXVzdCBiZSBvbmUgY2hhcmFjdGVyIGxvbmciKTt0aGlzLmVzY2FwZWREZWxpbWl0ZXI9YS5kZWZhdWx0KHRoaXMuZGVsaW1pdGVyKSx0aGlzLmVzY2FwZUNoYXI9bnVsbCE9PSh0PXRoaXMuZXNjYXBlKSYmdm9pZCAwIT09dD90OnRoaXMucXVvdGUsdGhpcy5zdXBwb3J0c0NvbW1l'@; put 'bnRzPSFvLmRlZmF1bHQodGhpcy5jb21tZW50KSx0aGlzLk5FWFRfVE9LRU5fUkVHRVhQPW5ldyBSZWdFeHAoYChbXlxcc118XFxyXFxufFxcbnxcXHJ8JHt0aGlzLmVzY2FwZWREZWxpbWl0ZXJ9KWApLHRoaXMubWF4Um93cz4wJiYodGhpcy5saW1pdFJvd3M9ITApfX19LHsibG9kYXNoLmVz'@; put 'Y2FwZXJlZ2V4cCI6NDQyLCJsb2Rhc2guaXNuaWwiOjQ0N31dLDE1NTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1PYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGYsdSxwLGQpe3ZvaWQgMD09PWQmJihkPXApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLGQse2VudW1lcmFibGU6'@; put 'ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHVbcF19fSl9OmZ1bmN0aW9uKGYsdSxwLGQpe3ZvaWQgMD09PWQmJihkPXApLGZbZF09dVtwXX0sYT1PYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGYsdSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGYsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVl'@; put 'OnV9KX06ZnVuY3Rpb24oZix1KXtmLmRlZmF1bHQ9dX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMucGFyc2VTdHJpbmc9Uy5wYXJzZUZpbGU9Uy5wYXJzZVN0cmVhbT1TLnBhcnNlPVMuUGFyc2VyT3B0aW9ucz1TLkNzdlBhcnNlclN0cmVhbT12'@; put 'b2lkIDA7Y29uc3QgdD1mdW5jdGlvbihmKXtpZihmJiZmLl9fZXNNb2R1bGUpcmV0dXJuIGY7dmFyIHU9e307aWYobnVsbCE9Zilmb3IodmFyIHAgaW4gZikiZGVmYXVsdCIhPT1wJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZixwKSYmYih1LGYscCk7cmV0dXJuIGEo'@; put 'dSxmKSx1fShzKCJmcyIpKSxlPXMoInN0cmVhbSIpLGw9cygiLi9QYXJzZXJPcHRpb25zIiksbj1zKCIuL0NzdlBhcnNlclN0cmVhbSIpOyFmdW5jdGlvbihmLHUpe2Zvcih2YXIgcCBpbiBmKSJkZWZhdWx0Ij09PXB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LHAp'@; put 'fHxiKHUsZixwKX0ocygiLi90eXBlcyIpLFMpO3ZhciBpPXMoIi4vQ3N2UGFyc2VyU3RyZWFtIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIkNzdlBhcnNlclN0cmVhbSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuQ3N2UGFyc2VyU3RyZWFtfX0pO3ZhciBoPXMo'@; put 'Ii4vUGFyc2VyT3B0aW9ucyIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJQYXJzZXJPcHRpb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5QYXJzZXJPcHRpb25zfX0pLFMucGFyc2U9Zj0+bmV3IG4uQ3N2UGFyc2VyU3RyZWFtKG5ldyBsLlBhcnNlck9wdGlv'@; put 'bnMoZikpLFMucGFyc2VTdHJlYW09KGYsdSk9PmYucGlwZShuZXcgbi5Dc3ZQYXJzZXJTdHJlYW0obmV3IGwuUGFyc2VyT3B0aW9ucyh1KSkpLFMucGFyc2VGaWxlPWZ1bmN0aW9uKGYpe2xldCB1PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sx'@; put 'XTp7fTtyZXR1cm4gdC5jcmVhdGVSZWFkU3RyZWFtKGYpLnBpcGUobmV3IG4uQ3N2UGFyc2VyU3RyZWFtKG5ldyBsLlBhcnNlck9wdGlvbnModSkpKX0sUy5wYXJzZVN0cmluZz0oZix1KT0+e2NvbnN0IHA9bmV3IGUuUmVhZGFibGU7cmV0dXJuIHAucHVzaChmKSxwLnB1c2gobnVsbCkscC5w'@; put 'aXBlKG5ldyBuLkNzdlBhcnNlclN0cmVhbShuZXcgbC5QYXJzZXJPcHRpb25zKHUpKSl9fSx7Ii4vQ3N2UGFyc2VyU3RyZWFtIjoxNTMsIi4vUGFyc2VyT3B0aW9ucyI6MTU0LCIuL3R5cGVzIjoxNjksZnM6MjE2LHN0cmVhbTo1MDV9XSwxNTY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuUGFyc2VyPXZvaWQgMDtjb25zdCBiPXMoIi4vU2Nhbm5lciIpLGE9cygiLi9Sb3dQYXJzZXIiKSxvPXMoIi4vVG9rZW4iKTtjbGFzcyBye2NvbnN0cnVjdG9yKGUpe3RoaXMucGFyc2VyT3B0aW9u'@; put 'cz1lLHRoaXMucm93UGFyc2VyPW5ldyBhLlJvd1BhcnNlcih0aGlzLnBhcnNlck9wdGlvbnMpfXN0YXRpYyByZW1vdmVCT00oZSl7cmV0dXJuIGUmJjY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApP2Uuc2xpY2UoMSk6ZX1wYXJzZShlLGwpe2NvbnN0IG49bmV3IGIuU2Nhbm5lcih7bGluZTpyLnJl'@; put 'bW92ZUJPTShlKSxwYXJzZXJPcHRpb25zOnRoaXMucGFyc2VyT3B0aW9ucyxoYXNNb3JlRGF0YTpsfSk7cmV0dXJuIHRoaXMucGFyc2VyT3B0aW9ucy5zdXBwb3J0c0NvbW1lbnRzP3RoaXMucGFyc2VXaXRoQ29tbWVudHMobik6dGhpcy5wYXJzZVdpdGhvdXRDb21tZW50cyhuKX1wYXJzZVdp'@; put 'dGhvdXRDb21tZW50cyhlKXtjb25zdCBsPVtdO2xldCBuPSEwO2Zvcig7bjspbj10aGlzLnBhcnNlUm93KGUsbCk7cmV0dXJue2xpbmU6ZS5saW5lLHJvd3M6bH19cGFyc2VXaXRoQ29tbWVudHMoZSl7Y29uc3R7cGFyc2VyT3B0aW9uczpsfT10aGlzLG49W107Zm9yKGxldCBpPWUubmV4dENo'@; put 'YXJhY3RlclRva2VuO251bGwhPT1pO2k9ZS5uZXh0Q2hhcmFjdGVyVG9rZW4paWYoby5Ub2tlbi5pc1Rva2VuQ29tbWVudChpLGwpKXtpZihudWxsPT09ZS5hZHZhbmNlUGFzdExpbmUoKSlyZXR1cm57bGluZTplLmxpbmVGcm9tQ3Vyc29yLHJvd3M6bn07aWYoIWUuaGFzTW9yZUNoYXJhY3Rl'@; put 'cnMpcmV0dXJue2xpbmU6ZS5saW5lRnJvbUN1cnNvcixyb3dzOm59O2UudHJ1bmNhdGVUb0N1cnNvcigpfWVsc2UgaWYoIXRoaXMucGFyc2VSb3coZSxuKSlicmVhaztyZXR1cm57bGluZTplLmxpbmUscm93czpufX1wYXJzZVJvdyhlLGwpe2lmKCFlLm5leHROb25TcGFjZVRva2VuKXJldHVy'@; put 'biExO2NvbnN0IG49dGhpcy5yb3dQYXJzZXIucGFyc2UoZSk7cmV0dXJuIG51bGwhPT1uJiYodGhpcy5wYXJzZXJPcHRpb25zLmlnbm9yZUVtcHR5JiZhLlJvd1BhcnNlci5pc0VtcHR5Um93KG4pfHxsLnB1c2gobiksITApfX1TLlBhcnNlcj1yfSx7Ii4vUm93UGFyc2VyIjoxNTcsIi4vU2Nh'@; put 'bm5lciI6MTU4LCIuL1Rva2VuIjoxNTl9XSwxNTc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuUm93UGFyc2VyPXZvaWQgMDtjb25zdCBiPXMoIi4vY29sdW1uIiksYT1zKCIuL1Rva2VuIik7'@; put 'Uy5Sb3dQYXJzZXI9Y2xhc3N7Y29uc3RydWN0b3Iobyl7dGhpcy5wYXJzZXJPcHRpb25zPW8sdGhpcy5jb2x1bW5QYXJzZXI9bmV3IGIuQ29sdW1uUGFyc2VyKG8pfXN0YXRpYyBpc0VtcHR5Um93KG8pe3JldHVybiIiPT09by5qb2luKCIiKS5yZXBsYWNlKC9ccysvZywiIil9cGFyc2Uobyl7'@; put 'Y29uc3R7cGFyc2VyT3B0aW9uczpyfT10aGlzLHtoYXNNb3JlRGF0YTp0fT1vLGU9byxsPVtdO2xldCBuPXRoaXMuZ2V0U3RhcnRUb2tlbihlLGwpO2Zvcig7bjspe2lmKGEuVG9rZW4uaXNUb2tlblJvd0RlbGltaXRlcihuKSlyZXR1cm4gZS5hZHZhbmNlUGFzdFRva2VuKG4pLCFlLmhhc01v'@; put 'cmVDaGFyYWN0ZXJzJiZhLlRva2VuLmlzVG9rZW5DYXJyaWFnZVJldHVybihuLHIpJiZ0P251bGw6KGUudHJ1bmNhdGVUb0N1cnNvcigpLGwpO2lmKCF0aGlzLnNob3VsZFNraXBDb2x1bW5QYXJzZShlLG4sbCkpe2NvbnN0IGk9dGhpcy5jb2x1bW5QYXJzZXIucGFyc2UoZSk7aWYobnVsbD09'@; put 'PWkpcmV0dXJuIG51bGw7bC5wdXNoKGkpfW49ZS5uZXh0Tm9uU3BhY2VUb2tlbn1yZXR1cm4gdD9udWxsOihlLnRydW5jYXRlVG9DdXJzb3IoKSxsKX1nZXRTdGFydFRva2VuKG8scil7Y29uc3QgdD1vLm5leHROb25TcGFjZVRva2VuO3JldHVybiBudWxsIT09dCYmYS5Ub2tlbi5pc1Rva2Vu'@; put 'RGVsaW1pdGVyKHQsdGhpcy5wYXJzZXJPcHRpb25zKT8oci5wdXNoKCIiKSxvLm5leHROb25TcGFjZVRva2VuKTp0fXNob3VsZFNraXBDb2x1bW5QYXJzZShvLHIsdCl7Y29uc3R7cGFyc2VyT3B0aW9uczplfT10aGlzO2lmKGEuVG9rZW4uaXNUb2tlbkRlbGltaXRlcihyLGUpKXtvLmFkdmFu'@; put 'Y2VQYXN0VG9rZW4ocik7Y29uc3QgbD1vLm5leHRDaGFyYWN0ZXJUb2tlbjtpZighby5oYXNNb3JlQ2hhcmFjdGVyc3x8bnVsbCE9PWwmJmEuVG9rZW4uaXNUb2tlblJvd0RlbGltaXRlcihsKXx8bnVsbCE9PWwmJmEuVG9rZW4uaXNUb2tlbkRlbGltaXRlcihsLGUpKXJldHVybiB0LnB1c2go'@; put 'IiIpLCEwfXJldHVybiExfX19LHsiLi9Ub2tlbiI6MTU5LCIuL2NvbHVtbiI6MTY0fV0sMTU4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLlNjYW5uZXI9dm9pZCAwO2NvbnN0IGI9cygiLi9U'@; put 'b2tlbiIpLGE9LygoPzpcclxuKXxcbnxccikvO1MuU2Nhbm5lcj1jbGFzc3tjb25zdHJ1Y3RvcihvKXt0aGlzLmN1cnNvcj0wLHRoaXMubGluZT1vLmxpbmUsdGhpcy5saW5lTGVuZ3RoPXRoaXMubGluZS5sZW5ndGgsdGhpcy5wYXJzZXJPcHRpb25zPW8ucGFyc2VyT3B0aW9ucyx0aGlzLmhh'@; put 'c01vcmVEYXRhPW8uaGFzTW9yZURhdGEsdGhpcy5jdXJzb3I9by5jdXJzb3J8fDB9Z2V0IGhhc01vcmVDaGFyYWN0ZXJzKCl7cmV0dXJuIHRoaXMubGluZUxlbmd0aD50aGlzLmN1cnNvcn1nZXQgbmV4dE5vblNwYWNlVG9rZW4oKXtjb25zdHtsaW5lRnJvbUN1cnNvcjpvfT10aGlzLHI9dGhp'@; put 'cy5wYXJzZXJPcHRpb25zLk5FWFRfVE9LRU5fUkVHRVhQO2lmKC0xPT09by5zZWFyY2gocikpcmV0dXJuIG51bGw7Y29uc3QgdD1yLmV4ZWMobyk7aWYobnVsbD09dClyZXR1cm4gbnVsbDtjb25zdCBlPXRbMV0sbD10aGlzLmN1cnNvcisodC5pbmRleHx8MCk7cmV0dXJuIG5ldyBiLlRva2Vu'@; put 'KHt0b2tlbjplLHN0YXJ0Q3Vyc29yOmwsZW5kQ3Vyc29yOmwrZS5sZW5ndGgtMX0pfWdldCBuZXh0Q2hhcmFjdGVyVG9rZW4oKXtjb25zdHtjdXJzb3I6byxsaW5lTGVuZ3RoOnJ9PXRoaXM7cmV0dXJuIHI8PW8/bnVsbDpuZXcgYi5Ub2tlbih7dG9rZW46dGhpcy5saW5lW29dLHN0YXJ0Q3Vy'@; put 'c29yOm8sZW5kQ3Vyc29yOm99KX1nZXQgbGluZUZyb21DdXJzb3IoKXtyZXR1cm4gdGhpcy5saW5lLnN1YnN0cih0aGlzLmN1cnNvcil9YWR2YW5jZVBhc3RMaW5lKCl7Y29uc3Qgbz1hLmV4ZWModGhpcy5saW5lRnJvbUN1cnNvcik7cmV0dXJuIG8/KHRoaXMuY3Vyc29yKz0oby5pbmRleHx8'@; put 'MCkrb1swXS5sZW5ndGgsdGhpcyk6dGhpcy5oYXNNb3JlRGF0YT9udWxsOih0aGlzLmN1cnNvcj10aGlzLmxpbmVMZW5ndGgsdGhpcyl9YWR2YW5jZVRvKG8pe3JldHVybiB0aGlzLmN1cnNvcj1vLHRoaXN9YWR2YW5jZVRvVG9rZW4obyl7cmV0dXJuIHRoaXMuY3Vyc29yPW8uc3RhcnRDdXJz'@; put 'b3IsdGhpc31hZHZhbmNlUGFzdFRva2VuKG8pe3JldHVybiB0aGlzLmN1cnNvcj1vLmVuZEN1cnNvcisxLHRoaXN9dHJ1bmNhdGVUb0N1cnNvcigpe3JldHVybiB0aGlzLmxpbmU9dGhpcy5saW5lRnJvbUN1cnNvcix0aGlzLmxpbmVMZW5ndGg9dGhpcy5saW5lLmxlbmd0aCx0aGlzLmN1cnNv'@; put 'cj0wLHRoaXN9fX0seyIuL1Rva2VuIjoxNTl9XSwxNTk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuVG9rZW49dm9pZCAwLFMuVG9rZW49Y2xhc3N7Y29uc3RydWN0b3IoYil7dGhpcy50b2tl'@; put 'bj1iLnRva2VuLHRoaXMuc3RhcnRDdXJzb3I9Yi5zdGFydEN1cnNvcix0aGlzLmVuZEN1cnNvcj1iLmVuZEN1cnNvcn1zdGF0aWMgaXNUb2tlblJvd0RlbGltaXRlcihiKXtjb25zdCBhPWIudG9rZW47cmV0dXJuIlxyIj09PWF8fCJcbiI9PT1hfHwiXHJcbiI9PT1hfXN0YXRpYyBpc1Rva2Vu'@; put 'Q2FycmlhZ2VSZXR1cm4oYixhKXtyZXR1cm4gYi50b2tlbj09PWEuY2FycmlhZ2VSZXR1cm59c3RhdGljIGlzVG9rZW5Db21tZW50KGIsYSl7cmV0dXJuIGEuc3VwcG9ydHNDb21tZW50cyYmISFiJiZiLnRva2VuPT09YS5jb21tZW50fXN0YXRpYyBpc1Rva2VuRXNjYXBlQ2hhcmFjdGVyKGIs'@; put 'YSl7cmV0dXJuIGIudG9rZW49PT1hLmVzY2FwZUNoYXJ9c3RhdGljIGlzVG9rZW5RdW90ZShiLGEpe3JldHVybiBiLnRva2VuPT09YS5xdW90ZX1zdGF0aWMgaXNUb2tlbkRlbGltaXRlcihiLGEpe3JldHVybiBiLnRva2VuPT09YS5kZWxpbWl0ZXJ9fX0se31dLDE2MDpbZnVuY3Rpb24ocyxF'@; put 'LFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5Db2x1bW5Gb3JtYXR0ZXI9dm9pZCAwLFMuQ29sdW1uRm9ybWF0dGVyPWNsYXNze2NvbnN0cnVjdG9yKGIpe3RoaXMuZm9ybWF0PWIudHJpbT9hPT5hLnRyaW0oKTpiLmx0'@; put 'cmltP2E9PmEudHJpbUxlZnQoKTpiLnJ0cmltP2E9PmEudHJpbVJpZ2h0KCk6YT0+YX19fSx7fV0sMTYxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLkNvbHVtblBhcnNlcj12b2lkIDA7Y29u'@; put 'c3QgYj1zKCIuL05vblF1b3RlZENvbHVtblBhcnNlciIpLGE9cygiLi9RdW90ZWRDb2x1bW5QYXJzZXIiKSxvPXMoIi4uL1Rva2VuIik7Uy5Db2x1bW5QYXJzZXI9Y2xhc3N7Y29uc3RydWN0b3Iocil7dGhpcy5wYXJzZXJPcHRpb25zPXIsdGhpcy5xdW90ZWRDb2x1bW5QYXJzZXI9bmV3IGEu'@; put 'UXVvdGVkQ29sdW1uUGFyc2VyKHIpLHRoaXMubm9uUXVvdGVkQ29sdW1uUGFyc2VyPW5ldyBiLk5vblF1b3RlZENvbHVtblBhcnNlcihyKX1wYXJzZShyKXtjb25zdHtuZXh0Tm9uU3BhY2VUb2tlbjp0fT1yO3JldHVybiBudWxsIT09dCYmby5Ub2tlbi5pc1Rva2VuUXVvdGUodCx0aGlzLnBh'@; put 'cnNlck9wdGlvbnMpPyhyLmFkdmFuY2VUb1Rva2VuKHQpLHRoaXMucXVvdGVkQ29sdW1uUGFyc2VyLnBhcnNlKHIpKTp0aGlzLm5vblF1b3RlZENvbHVtblBhcnNlci5wYXJzZShyKX19fSx7Ii4uL1Rva2VuIjoxNTksIi4vTm9uUXVvdGVkQ29sdW1uUGFyc2VyIjoxNjIsIi4vUXVvdGVkQ29s'@; put 'dW1uUGFyc2VyIjoxNjN9XSwxNjI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuTm9uUXVvdGVkQ29sdW1uUGFyc2VyPXZvaWQgMDtjb25zdCBiPXMoIi4vQ29sdW1uRm9ybWF0dGVyIiksYT1z'@; put 'KCIuLi9Ub2tlbiIpO1MuTm9uUXVvdGVkQ29sdW1uUGFyc2VyPWNsYXNze2NvbnN0cnVjdG9yKG8pe3RoaXMucGFyc2VyT3B0aW9ucz1vLHRoaXMuY29sdW1uRm9ybWF0dGVyPW5ldyBiLkNvbHVtbkZvcm1hdHRlcihvKX1wYXJzZShvKXtpZighby5oYXNNb3JlQ2hhcmFjdGVycylyZXR1cm4g'@; put 'bnVsbDtjb25zdHtwYXJzZXJPcHRpb25zOnJ9PXRoaXMsdD1bXTtsZXQgZT1vLm5leHRDaGFyYWN0ZXJUb2tlbjtmb3IoO2UmJiFhLlRva2VuLmlzVG9rZW5EZWxpbWl0ZXIoZSxyKSYmIWEuVG9rZW4uaXNUb2tlblJvd0RlbGltaXRlcihlKTtlPW8ubmV4dENoYXJhY3RlclRva2VuKXQucHVz'@; put 'aChlLnRva2VuKSxvLmFkdmFuY2VQYXN0VG9rZW4oZSk7cmV0dXJuIHRoaXMuY29sdW1uRm9ybWF0dGVyLmZvcm1hdCh0LmpvaW4oIiIpKX19fSx7Ii4uL1Rva2VuIjoxNTksIi4vQ29sdW1uRm9ybWF0dGVyIjoxNjB9XSwxNjM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0'@; put 'LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuUXVvdGVkQ29sdW1uUGFyc2VyPXZvaWQgMDtjb25zdCBiPXMoIi4vQ29sdW1uRm9ybWF0dGVyIiksYT1zKCIuLi9Ub2tlbiIpO1MuUXVvdGVkQ29sdW1uUGFyc2VyPWNsYXNze2NvbnN0cnVjdG9yKG8pe3RoaXMu'@; put 'cGFyc2VyT3B0aW9ucz1vLHRoaXMuY29sdW1uRm9ybWF0dGVyPW5ldyBiLkNvbHVtbkZvcm1hdHRlcihvKX1wYXJzZShvKXtpZighby5oYXNNb3JlQ2hhcmFjdGVycylyZXR1cm4gbnVsbDtjb25zdCByPW8uY3Vyc29yLHtmb3VuZENsb3NpbmdRdW90ZTp0LGNvbDplfT10aGlzLmdhdGhlckRh'@; put 'dGFCZXR3ZWVuUXVvdGVzKG8pO2lmKCF0KXtpZihvLmFkdmFuY2VUbyhyKSwhby5oYXNNb3JlRGF0YSl0aHJvdyBuZXcgRXJyb3IoYFBhcnNlIEVycm9yOiBtaXNzaW5nIGNsb3Npbmc6ICcke3RoaXMucGFyc2VyT3B0aW9ucy5xdW90ZXx8IiJ9JyBpbiBsaW5lOiBhdCAnJHtvLmxpbmVGcm9t'@; put 'Q3Vyc29yLnJlcGxhY2UoL1tcclxuXS9nLCJcXG4nIil9J2ApO3JldHVybiBudWxsfXJldHVybiB0aGlzLmNoZWNrRm9yTWFsZm9ybWVkQ29sdW1uKG8pLGV9Z2F0aGVyRGF0YUJldHdlZW5RdW90ZXMobyl7Y29uc3R7cGFyc2VyT3B0aW9uczpyfT10aGlzO2xldCB0PSExLGU9ITE7Y29uc3Qg'@; put 'bD1bXTtsZXQgbj1vLm5leHRDaGFyYWN0ZXJUb2tlbjtmb3IoOyFlJiZudWxsIT09bjtuPW8ubmV4dENoYXJhY3RlclRva2VuKXtjb25zdCBpPWEuVG9rZW4uaXNUb2tlblF1b3RlKG4scik7aWYoIXQmJmkpdD0hMDtlbHNlIGlmKHQpaWYoYS5Ub2tlbi5pc1Rva2VuRXNjYXBlQ2hhcmFjdGVy'@; put 'KG4scikpe28uYWR2YW5jZVBhc3RUb2tlbihuKTtjb25zdCBoPW8ubmV4dENoYXJhY3RlclRva2VuO251bGwhPT1oJiYoYS5Ub2tlbi5pc1Rva2VuUXVvdGUoaCxyKXx8YS5Ub2tlbi5pc1Rva2VuRXNjYXBlQ2hhcmFjdGVyKGgscikpPyhsLnB1c2goaC50b2tlbiksbj1oKTppP2U9ITA6bC5w'@; put 'dXNoKG4udG9rZW4pfWVsc2UgaT9lPSEwOmwucHVzaChuLnRva2VuKTtvLmFkdmFuY2VQYXN0VG9rZW4obil9cmV0dXJue2NvbDp0aGlzLmNvbHVtbkZvcm1hdHRlci5mb3JtYXQobC5qb2luKCIiKSksZm91bmRDbG9zaW5nUXVvdGU6ZX19Y2hlY2tGb3JNYWxmb3JtZWRDb2x1bW4obyl7Y29u'@; put 'c3R7cGFyc2VyT3B0aW9uczpyfT10aGlzLHtuZXh0Tm9uU3BhY2VUb2tlbjp0fT1vO2lmKHQpe2NvbnN0IGU9YS5Ub2tlbi5pc1Rva2VuRGVsaW1pdGVyKHQsciksbD1hLlRva2VuLmlzVG9rZW5Sb3dEZWxpbWl0ZXIodCk7aWYoIWUmJiFsKXtjb25zdCBuPW8ubGluZUZyb21DdXJzb3Iuc3Vi'@; put 'c3RyKDAsMTApLnJlcGxhY2UoL1tcclxuXS9nLCJcXG4nIik7dGhyb3cgbmV3IEVycm9yKGBQYXJzZSBFcnJvcjogZXhwZWN0ZWQ6ICcke3IuZXNjYXBlZERlbGltaXRlcn0nIE9SIG5ldyBsaW5lIGdvdDogJyR7dC50b2tlbn0nLiBhdCAnJHtufWApfW8uYWR2YW5jZVRvVG9rZW4odCl9ZWxz'@; put 'ZSBvLmhhc01vcmVEYXRhfHxvLmFkdmFuY2VQYXN0TGluZSgpfX19LHsiLi4vVG9rZW4iOjE1OSwiLi9Db2x1bW5Gb3JtYXR0ZXIiOjE2MH1dLDE2NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks'@; put 'Uy5Db2x1bW5Gb3JtYXR0ZXI9Uy5RdW90ZWRDb2x1bW5QYXJzZXI9Uy5Ob25RdW90ZWRDb2x1bW5QYXJzZXI9Uy5Db2x1bW5QYXJzZXI9dm9pZCAwO3ZhciBiPXMoIi4vQ29sdW1uUGFyc2VyIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIkNvbHVtblBhcnNlciIse2VudW1lcmFibGU6ITAs'@; put 'Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuQ29sdW1uUGFyc2VyfX0pO3ZhciBhPXMoIi4vTm9uUXVvdGVkQ29sdW1uUGFyc2VyIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIk5vblF1b3RlZENvbHVtblBhcnNlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuTm9u'@; put 'UXVvdGVkQ29sdW1uUGFyc2VyfX0pO3ZhciBvPXMoIi4vUXVvdGVkQ29sdW1uUGFyc2VyIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIlF1b3RlZENvbHVtblBhcnNlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uUXVvdGVkQ29sdW1uUGFyc2VyfX0pO3ZhciBy'@; put 'PXMoIi4vQ29sdW1uRm9ybWF0dGVyIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIkNvbHVtbkZvcm1hdHRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuQ29sdW1uRm9ybWF0dGVyfX0pfSx7Ii4vQ29sdW1uRm9ybWF0dGVyIjoxNjAsIi4vQ29sdW1uUGFyc2Vy'@; put 'IjoxNjEsIi4vTm9uUXVvdGVkQ29sdW1uUGFyc2VyIjoxNjIsIi4vUXVvdGVkQ29sdW1uUGFyc2VyIjoxNjN9XSwxNjU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuUXVvdGVkQ29sdW1uUGFy'@; put 'c2VyPVMuTm9uUXVvdGVkQ29sdW1uUGFyc2VyPVMuQ29sdW1uUGFyc2VyPVMuVG9rZW49Uy5TY2FubmVyPVMuUm93UGFyc2VyPVMuUGFyc2VyPXZvaWQgMDt2YXIgYj1zKCIuL1BhcnNlciIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJQYXJzZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5j'@; put 'dGlvbigpe3JldHVybiBiLlBhcnNlcn19KTt2YXIgYT1zKCIuL1Jvd1BhcnNlciIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJSb3dQYXJzZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLlJvd1BhcnNlcn19KTt2YXIgbz1zKCIuL1NjYW5uZXIiKTtPYmplY3Qu'@; put 'ZGVmaW5lUHJvcGVydHkoUywiU2Nhbm5lciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uU2Nhbm5lcn19KTt2YXIgcj1zKCIuL1Rva2VuIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIlRva2VuIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g'@; put 'ci5Ub2tlbn19KTt2YXIgdD1zKCIuL2NvbHVtbiIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJDb2x1bW5QYXJzZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LkNvbHVtblBhcnNlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiTm9uUXVvdGVkQ29sdW1u'@; put 'UGFyc2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5Ob25RdW90ZWRDb2x1bW5QYXJzZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIlF1b3RlZENvbHVtblBhcnNlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuUXVvdGVkQ29s'@; put 'dW1uUGFyc2VyfX0pfSx7Ii4vUGFyc2VyIjoxNTYsIi4vUm93UGFyc2VyIjoxNTcsIi4vU2Nhbm5lciI6MTU4LCIuL1Rva2VuIjoxNTksIi4vY29sdW1uIjoxNjR9XSwxNjY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01v'@; put 'ZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5IZWFkZXJUcmFuc2Zvcm1lcj12b2lkIDA7Y29uc3QgYT1iKHMoImxvZGFzaC5pc3VuZGVmaW5lZCIpKSxvPWIocygibG9kYXNoLmlzZnVuY3Rpb24iKSkscj1iKHMo'@; put 'ImxvZGFzaC51bmlxIikpLHQ9YihzKCJsb2Rhc2guZ3JvdXBieSIpKTtTLkhlYWRlclRyYW5zZm9ybWVyPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuaGVhZGVycz1udWxsLHRoaXMucmVjZWl2ZWRIZWFkZXJzPSExLHRoaXMuc2hvdWxkVXNlRmlyc3RSb3c9ITEsdGhpcy5wcm9jZXNzZWRG'@; put 'aXJzdFJvdz0hMSx0aGlzLmhlYWRlcnNMZW5ndGg9MCx0aGlzLnBhcnNlck9wdGlvbnM9ZSwhMD09PWUuaGVhZGVycz90aGlzLnNob3VsZFVzZUZpcnN0Um93PSEwOkFycmF5LmlzQXJyYXkoZS5oZWFkZXJzKT90aGlzLnNldEhlYWRlcnMoZS5oZWFkZXJzKTpvLmRlZmF1bHQoZS5oZWFkZXJz'@; put 'KSYmKHRoaXMuaGVhZGVyc1RyYW5zZm9ybT1lLmhlYWRlcnMpfXRyYW5zZm9ybShlLGwpe3JldHVybiB0aGlzLnNob3VsZE1hcFJvdyhlKT9sKG51bGwsdGhpcy5wcm9jZXNzUm93KGUpKTpsKG51bGwse3JvdzpudWxsLGlzVmFsaWQ6ITB9KX1zaG91bGRNYXBSb3coZSl7Y29uc3R7cGFyc2Vy'@; put 'T3B0aW9uczpsfT10aGlzO2lmKCF0aGlzLmhlYWRlcnNUcmFuc2Zvcm0mJmwucmVuYW1lSGVhZGVycyYmIXRoaXMucHJvY2Vzc2VkRmlyc3RSb3cpe2lmKCF0aGlzLnJlY2VpdmVkSGVhZGVycyl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHJlbmFtaW5nIGhlYWRlcnM6IG5ldyBoZWFkZXJzIG11'@; put 'c3QgYmUgcHJvdmlkZWQgaW4gYW4gYXJyYXkiKTtyZXR1cm4gdGhpcy5wcm9jZXNzZWRGaXJzdFJvdz0hMCwhMX1pZighdGhpcy5yZWNlaXZlZEhlYWRlcnMmJkFycmF5LmlzQXJyYXkoZSkpe2lmKHRoaXMuaGVhZGVyc1RyYW5zZm9ybSl0aGlzLnNldEhlYWRlcnModGhpcy5oZWFkZXJzVHJh'@; put 'bnNmb3JtKGUpKTtlbHNle2lmKCF0aGlzLnNob3VsZFVzZUZpcnN0Um93KXJldHVybiEwO3RoaXMuc2V0SGVhZGVycyhlKX1yZXR1cm4hMX1yZXR1cm4hMH1wcm9jZXNzUm93KGUpe2lmKCF0aGlzLmhlYWRlcnMpcmV0dXJue3JvdzplLGlzVmFsaWQ6ITB9O2NvbnN0e3BhcnNlck9wdGlvbnM6'@; put 'bH09dGhpcztpZighbC5kaXNjYXJkVW5tYXBwZWRDb2x1bW5zJiZlLmxlbmd0aD50aGlzLmhlYWRlcnNMZW5ndGgpe2lmKCFsLnN0cmljdENvbHVtbkhhbmRsaW5nKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBFcnJvcjogY29sdW1uIGhlYWRlciBtaXNtYXRjaCBleHBlY3RlZDogJHt0'@; put 'aGlzLmhlYWRlcnNMZW5ndGh9IGNvbHVtbnMgZ290OiAke2UubGVuZ3RofWApO3JldHVybntyb3c6ZSxpc1ZhbGlkOiExLHJlYXNvbjpgQ29sdW1uIGhlYWRlciBtaXNtYXRjaCBleHBlY3RlZDogJHt0aGlzLmhlYWRlcnNMZW5ndGh9IGNvbHVtbnMgZ290OiAke2UubGVuZ3RofWB9fXJldHVy'@; put 'biBsLnN0cmljdENvbHVtbkhhbmRsaW5nJiZlLmxlbmd0aDx0aGlzLmhlYWRlcnNMZW5ndGg/e3JvdzplLGlzVmFsaWQ6ITEscmVhc29uOmBDb2x1bW4gaGVhZGVyIG1pc21hdGNoIGV4cGVjdGVkOiAke3RoaXMuaGVhZGVyc0xlbmd0aH0gY29sdW1ucyBnb3Q6ICR7ZS5sZW5ndGh9YH06e3Jv'@; put 'dzp0aGlzLm1hcEhlYWRlcnMoZSksaXNWYWxpZDohMH19bWFwSGVhZGVycyhlKXtjb25zdCBsPXt9LHtoZWFkZXJzOm4saGVhZGVyc0xlbmd0aDppfT10aGlzO2ZvcihsZXQgaD0wO2g8aTtoKz0xKXtjb25zdCBmPW5baF07aWYoIWEuZGVmYXVsdChmKSl7Y29uc3QgdT1lW2hdO2xbZl09YS5k'@; put 'ZWZhdWx0KHUpPyIiOnV9fXJldHVybiBsfXNldEhlYWRlcnMoZSl7dmFyIGw7Y29uc3Qgbj1lLmZpbHRlcihpPT4hIWkpO2lmKHIuZGVmYXVsdChuKS5sZW5ndGghPT1uLmxlbmd0aCl7Y29uc3QgaT10LmRlZmF1bHQobiksaD1PYmplY3Qua2V5cyhpKS5maWx0ZXIoZj0+aVtmXS5sZW5ndGg+'@; put 'MSk7dGhyb3cgbmV3IEVycm9yKCJEdXBsaWNhdGUgaGVhZGVycyBmb3VuZCAiK0pTT04uc3RyaW5naWZ5KGgpKX10aGlzLmhlYWRlcnM9ZSx0aGlzLnJlY2VpdmVkSGVhZGVycz0hMCx0aGlzLmhlYWRlcnNMZW5ndGg9KG51bGw9PT0obD10aGlzLmhlYWRlcnMpfHx2b2lkIDA9PT1sP3ZvaWQg'@; put 'MDpsLmxlbmd0aCl8fDB9fX0seyJsb2Rhc2guZ3JvdXBieSI6NDQzLCJsb2Rhc2guaXNmdW5jdGlvbiI6NDQ2LCJsb2Rhc2guaXN1bmRlZmluZWQiOjQ0OCwibG9kYXNoLnVuaXEiOjQ0OX1dLDE2NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'UywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5Sb3dUcmFuc2Zvcm1lclZhbGlkYXRvcj12b2lkIDA7Y29uc3QgYT0odD1zKCJsb2Rhc2guaXNmdW5jdGlvbiIpKSYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH0sbz1zKCIuLi90eXBlcyIpO3ZhciB0O2NsYXNzIHJ7Y29uc3RydWN0b3Io'@; put 'KXt0aGlzLl9yb3dUcmFuc2Zvcm09bnVsbCx0aGlzLl9yb3dWYWxpZGF0b3I9bnVsbH1zdGF0aWMgY3JlYXRlVHJhbnNmb3JtKGUpe3JldHVybiBvLmlzU3luY1RyYW5zZm9ybShlKT8obCxuKT0+e2xldCBpPW51bGw7dHJ5e2k9ZShsKX1jYXRjaChoKXtyZXR1cm4gbihoKX1yZXR1cm4gbihu'@; put 'dWxsLGkpfTplfXN0YXRpYyBjcmVhdGVWYWxpZGF0b3IoZSl7cmV0dXJuIG8uaXNTeW5jVmFsaWRhdGUoZSk/KGwsbik9PntuKG51bGwse3JvdzpsLGlzVmFsaWQ6ZShsKX0pfToobCxuKT0+e2UobCwoaSxoLGYpPT5pP24oaSk6bihudWxsLGg/e3JvdzpsLGlzVmFsaWQ6aCxyZWFzb246Zn06'@; put 'e3JvdzpsLGlzVmFsaWQ6ITEscmVhc29uOmZ9KSl9fXNldCByb3dUcmFuc2Zvcm0oZSl7aWYoIWEuZGVmYXVsdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgdHJhbnNmb3JtIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7dGhpcy5fcm93VHJhbnNmb3JtPXIuY3JlYXRlVHJhbnNmb3JtKGUp'@; put 'fXNldCByb3dWYWxpZGF0b3IoZSl7aWYoIWEuZGVmYXVsdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgdmFsaWRhdGUgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTt0aGlzLl9yb3dWYWxpZGF0b3I9ci5jcmVhdGVWYWxpZGF0b3IoZSl9dHJhbnNmb3JtQW5kVmFsaWRhdGUoZSxsKXtyZXR1'@; put 'cm4gdGhpcy5jYWxsVHJhbnNmb3JtZXIoZSwobixpKT0+bj9sKG4pOmk/dGhpcy5jYWxsVmFsaWRhdG9yKGksKGgsZik9Pmg/bChoKTpsKG51bGwsZiYmIWYuaXNWYWxpZD97cm93OmksaXNWYWxpZDohMSxyZWFzb246Zi5yZWFzb259Ontyb3c6aSxpc1ZhbGlkOiEwfSkpOmwobnVsbCx7cm93'@; put 'Om51bGwsaXNWYWxpZDohMH0pKX1jYWxsVHJhbnNmb3JtZXIoZSxsKXtyZXR1cm4gdGhpcy5fcm93VHJhbnNmb3JtP3RoaXMuX3Jvd1RyYW5zZm9ybShlLGwpOmwobnVsbCxlKX1jYWxsVmFsaWRhdG9yKGUsbCl7cmV0dXJuIHRoaXMuX3Jvd1ZhbGlkYXRvcj90aGlzLl9yb3dWYWxpZGF0b3Io'@; put 'ZSxsKTpsKG51bGwse3JvdzplLGlzVmFsaWQ6ITB9KX19Uy5Sb3dUcmFuc2Zvcm1lclZhbGlkYXRvcj1yfSx7Ii4uL3R5cGVzIjoxNjksImxvZGFzaC5pc2Z1bmN0aW9uIjo0NDZ9XSwxNjg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9f'@; put 'ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuSGVhZGVyVHJhbnNmb3JtZXI9Uy5Sb3dUcmFuc2Zvcm1lclZhbGlkYXRvcj12b2lkIDA7dmFyIGI9cygiLi9Sb3dUcmFuc2Zvcm1lclZhbGlkYXRvciIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJSb3dUcmFuc2Zvcm1lclZhbGlkYXRvciIse2Vu'@; put 'dW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuUm93VHJhbnNmb3JtZXJWYWxpZGF0b3J9fSk7dmFyIGE9cygiLi9IZWFkZXJUcmFuc2Zvcm1lciIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJIZWFkZXJUcmFuc2Zvcm1lciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIGEuSGVhZGVyVHJhbnNmb3JtZXJ9fSl9LHsiLi9IZWFkZXJUcmFuc2Zvcm1lciI6MTY2LCIuL1Jvd1RyYW5zZm9ybWVyVmFsaWRhdG9yIjoxNjd9XSwxNjk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUi'@; put 'LHt2YWx1ZTohMH0pLFMuaXNTeW5jVmFsaWRhdGU9Uy5pc1N5bmNUcmFuc2Zvcm09dm9pZCAwLFMuaXNTeW5jVHJhbnNmb3JtPWI9PjE9PT1iLmxlbmd0aCxTLmlzU3luY1ZhbGlkYXRlPWI9PjE9PT1iLmxlbmd0aH0se31dLDE3MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25z'@; put 'dCBiPVM7Yi5iaWdudW09cygiYm4uanMiKSxiLmRlZmluZT1zKCIuL2FzbjEvYXBpIikuZGVmaW5lLGIuYmFzZT1zKCIuL2FzbjEvYmFzZSIpLGIuY29uc3RhbnRzPXMoIi4vYXNuMS9jb25zdGFudHMiKSxiLmRlY29kZXJzPXMoIi4vYXNuMS9kZWNvZGVycyIpLGIuZW5jb2RlcnM9cygiLi9h'@; put 'c24xL2VuY29kZXJzIil9LHsiLi9hc24xL2FwaSI6MTcxLCIuL2FzbjEvYmFzZSI6MTczLCIuL2FzbjEvY29uc3RhbnRzIjoxNzcsIi4vYXNuMS9kZWNvZGVycyI6MTc5LCIuL2FzbjEvZW5jb2RlcnMiOjE4MiwiYm4uanMiOjE4NH1dLDE3MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0'@; put 'Ijtjb25zdCBiPXMoIi4vZW5jb2RlcnMiKSxhPXMoIi4vZGVjb2RlcnMiKSxvPXMoImluaGVyaXRzIik7ZnVuY3Rpb24gcih0LGUpe3RoaXMubmFtZT10LHRoaXMuYm9keT1lLHRoaXMuZGVjb2RlcnM9e30sdGhpcy5lbmNvZGVycz17fX1TLmRlZmluZT1mdW5jdGlvbih0LGUpe3JldHVybiBu'@; put 'ZXcgcih0LGUpfSxyLnByb3RvdHlwZS5fY3JlYXRlTmFtZWQ9ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLm5hbWU7ZnVuY3Rpb24gbChuKXt0aGlzLl9pbml0TmFtZWQobixlKX1yZXR1cm4gbyhsLHQpLGwucHJvdG90eXBlLl9pbml0TmFtZWQ9ZnVuY3Rpb24obixpKXt0LmNhbGwodGhpcyxu'@; put 'LGkpfSxuZXcgbCh0aGlzKX0sci5wcm90b3R5cGUuX2dldERlY29kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkodD10fHwiZGVyIil8fCh0aGlzLmRlY29kZXJzW3RdPXRoaXMuX2NyZWF0ZU5hbWVkKGFbdF0pKSx0aGlzLmRlY29kZXJzW3RdfSxy'@; put 'LnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24odCxlLGwpe3JldHVybiB0aGlzLl9nZXREZWNvZGVyKGUpLmRlY29kZSh0LGwpfSxyLnByb3RvdHlwZS5fZ2V0RW5jb2Rlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eSh0PXR8fCJkZXIiKXx8KHRoaXMu'@; put 'ZW5jb2RlcnNbdF09dGhpcy5fY3JlYXRlTmFtZWQoYlt0XSkpLHRoaXMuZW5jb2RlcnNbdF19LHIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih0LGUsbCl7cmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZSkuZW5jb2RlKHQsbCl9fSx7Ii4vZGVjb2RlcnMiOjE3OSwiLi9lbmNvZGVycyI6MTgy'@; put 'LGluaGVyaXRzOjQ0MH1dLDE3MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoImluaGVyaXRzIiksYT1zKCIuLi9iYXNlL3JlcG9ydGVyIikuUmVwb3J0ZXIsbz1zKCJzYWZlci1idWZmZXIiKS5CdWZmZXI7ZnVuY3Rpb24gcihlLGwpe2EuY2FsbCh0aGlzLGwpLG8u'@; put 'aXNCdWZmZXIoZSk/KHRoaXMuYmFzZT1lLHRoaXMub2Zmc2V0PTAsdGhpcy5sZW5ndGg9ZS5sZW5ndGgpOnRoaXMuZXJyb3IoIklucHV0IG5vdCBCdWZmZXIiKX1mdW5jdGlvbiB0KGUsbCl7aWYoQXJyYXkuaXNBcnJheShlKSl0aGlzLmxlbmd0aD0wLHRoaXMudmFsdWU9ZS5tYXAoZnVuY3Rp'@; put 'b24obil7cmV0dXJuIHQuaXNFbmNvZGVyQnVmZmVyKG4pfHwobj1uZXcgdChuLGwpKSx0aGlzLmxlbmd0aCs9bi5sZW5ndGgsbn0sdGhpcyk7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKCEoMDw9ZSYmZTw9MjU1KSlyZXR1cm4gbC5lcnJvcigibm9uLWJ5dGUgRW5jb2RlckJ1ZmZl'@; put 'ciB2YWx1ZSIpO3RoaXMudmFsdWU9ZSx0aGlzLmxlbmd0aD0xfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXRoaXMudmFsdWU9ZSx0aGlzLmxlbmd0aD1vLmJ5dGVMZW5ndGgoZSk7ZWxzZXtpZighby5pc0J1ZmZlcihlKSlyZXR1cm4gbC5lcnJvcigiVW5zdXBwb3J0ZWQgdHlwZTogIit0'@; put 'eXBlb2YgZSk7dGhpcy52YWx1ZT1lLHRoaXMubGVuZ3RoPWUubGVuZ3RofX1iKHIsYSksUy5EZWNvZGVyQnVmZmVyPXIsci5pc0RlY29kZXJCdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiByfHwib2JqZWN0Ij09dHlwZW9mIGUmJm8uaXNCdWZmZXIoZS5iYXNlKSYmIkRl'@; put 'Y29kZXJCdWZmZXIiPT09ZS5jb25zdHJ1Y3Rvci5uYW1lJiYibnVtYmVyIj09dHlwZW9mIGUub2Zmc2V0JiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zYXZlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5yZXN0b3JlJiYiZnVuY3Rpb24iPT10eXBlb2Yg'@; put 'ZS5pc0VtcHR5JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkVUludDgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNraXAmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJhd30sci5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3JldHVybntvZmZzZXQ6dGhpcy5vZmZzZXQscmVwb3J0ZXI6YS5wcm90'@; put 'b3R5cGUuc2F2ZS5jYWxsKHRoaXMpfX0sci5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihlKXtjb25zdCBsPW5ldyByKHRoaXMuYmFzZSk7cmV0dXJuIGwub2Zmc2V0PWUub2Zmc2V0LGwubGVuZ3RoPXRoaXMub2Zmc2V0LHRoaXMub2Zmc2V0PWUub2Zmc2V0LGEucHJvdG90eXBlLnJlc3Rv'@; put 'cmUuY2FsbCh0aGlzLGUucmVwb3J0ZXIpLGx9LHIucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQ9PT10aGlzLmxlbmd0aH0sci5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9mZnNldCsxPD10aGlzLmxlbmd0aD90aGlz'@; put 'LmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssITApOnRoaXMuZXJyb3IoZXx8IkRlY29kZXJCdWZmZXIgb3ZlcnJ1biIpfSxyLnByb3RvdHlwZS5za2lwPWZ1bmN0aW9uKGUsbCl7aWYoISh0aGlzLm9mZnNldCtlPD10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXMuZXJyb3IobHx8IkRlY29k'@; put 'ZXJCdWZmZXIgb3ZlcnJ1biIpO2NvbnN0IG49bmV3IHIodGhpcy5iYXNlKTtyZXR1cm4gbi5fcmVwb3J0ZXJTdGF0ZT10aGlzLl9yZXBvcnRlclN0YXRlLG4ub2Zmc2V0PXRoaXMub2Zmc2V0LG4ubGVuZ3RoPXRoaXMub2Zmc2V0K2UsdGhpcy5vZmZzZXQrPWUsbn0sci5wcm90b3R5cGUucmF3'@; put 'PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJhc2Uuc2xpY2UoZT9lLm9mZnNldDp0aGlzLm9mZnNldCx0aGlzLmxlbmd0aCl9LFMuRW5jb2RlckJ1ZmZlcj10LHQuaXNFbmNvZGVyQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiBlJiYi'@; put 'RW5jb2RlckJ1ZmZlciI9PT1lLmNvbnN0cnVjdG9yLm5hbWUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmpvaW59LHQucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24oZSxsKXtyZXR1cm4gZXx8KGU9by5hbGxvYyh0aGlzLmxlbmd0aCkpLGx8fChsPTAp'@; put 'LDA9PT10aGlzLmxlbmd0aHx8KEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk/dGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uam9pbihlLGwpLGwrPW4ubGVuZ3RofSk6KCJudW1iZXIiPT10eXBlb2YgdGhpcy52YWx1ZT9lW2xdPXRoaXMudmFsdWU6InN0cmluZyI9PXR5cGVvZiB0'@; put 'aGlzLnZhbHVlP2Uud3JpdGUodGhpcy52YWx1ZSxsKTpvLmlzQnVmZmVyKHRoaXMudmFsdWUpJiZ0aGlzLnZhbHVlLmNvcHkoZSxsKSxsKz10aGlzLmxlbmd0aCkpLGV9fSx7Ii4uL2Jhc2UvcmVwb3J0ZXIiOjE3NSxpbmhlcml0czo0NDAsInNhZmVyLWJ1ZmZlciI6NDk1fV0sMTczOltmdW5j'@; put 'dGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9UztiLlJlcG9ydGVyPXMoIi4vcmVwb3J0ZXIiKS5SZXBvcnRlcixiLkRlY29kZXJCdWZmZXI9cygiLi9idWZmZXIiKS5EZWNvZGVyQnVmZmVyLGIuRW5jb2RlckJ1ZmZlcj1zKCIuL2J1ZmZlciIpLkVuY29kZXJCdWZmZXIsYi5Ob2Rl'@; put 'PXMoIi4vbm9kZSIpfSx7Ii4vYnVmZmVyIjoxNzIsIi4vbm9kZSI6MTc0LCIuL3JlcG9ydGVyIjoxNzV9XSwxNzQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1zKCIuLi9iYXNlL3JlcG9ydGVyIikuUmVwb3J0ZXIsYT1zKCIuLi9iYXNlL2J1ZmZlciIpLkVuY29kZXJC'@; put 'dWZmZXIsbz1zKCIuLi9iYXNlL2J1ZmZlciIpLkRlY29kZXJCdWZmZXIscj1zKCJtaW5pbWFsaXN0aWMtYXNzZXJ0IiksdD1bInNlcSIsInNlcW9mIiwic2V0Iiwic2V0b2YiLCJvYmppZCIsImJvb2wiLCJnZW50aW1lIiwidXRjdGltZSIsIm51bGxfIiwiZW51bSIsImludCIsIm9iakRlc2Mi'@; put 'LCJiaXRzdHIiLCJibXBzdHIiLCJjaGFyc3RyIiwiZ2Vuc3RyIiwiZ3JhcGhzdHIiLCJpYTVzdHIiLCJpc282NDZzdHIiLCJudW1zdHIiLCJvY3RzdHIiLCJwcmludHN0ciIsInQ2MXN0ciIsInVuaXN0ciIsInV0ZjhzdHIiLCJ2aWRlb3N0ciJdLGU9WyJrZXkiLCJvYmoiLCJ1c2UiLCJvcHRp'@; put 'b25hbCIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJkZWYiLCJjaG9pY2UiLCJhbnkiLCJjb250YWlucyJdLmNvbmNhdCh0KTtmdW5jdGlvbiBsKGksaCxmKXtjb25zdCB1PXt9O3RoaXMuX2Jhc2VTdGF0ZT11LHUubmFtZT1mLHUuZW5jPWksdS5wYXJlbnQ9aHx8bnVsbCx1LmNoaWxkcmVuPW51'@; put 'bGwsdS50YWc9bnVsbCx1LmFyZ3M9bnVsbCx1LnJldmVyc2VBcmdzPW51bGwsdS5jaG9pY2U9bnVsbCx1Lm9wdGlvbmFsPSExLHUuYW55PSExLHUub2JqPSExLHUudXNlPW51bGwsdS51c2VEZWNvZGVyPW51bGwsdS5rZXk9bnVsbCx1LmRlZmF1bHQ9bnVsbCx1LmV4cGxpY2l0PW51bGwsdS5p'@; put 'bXBsaWNpdD1udWxsLHUuY29udGFpbnM9bnVsbCx1LnBhcmVudHx8KHUuY2hpbGRyZW49W10sdGhpcy5fd3JhcCgpKX1FLmV4cG9ydHM9bDtjb25zdCBuPVsiZW5jIiwicGFyZW50IiwiY2hpbGRyZW4iLCJ0YWciLCJhcmdzIiwicmV2ZXJzZUFyZ3MiLCJjaG9pY2UiLCJvcHRpb25hbCIsImFu'@; put 'eSIsIm9iaiIsInVzZSIsImFsdGVyZWRVc2UiLCJrZXkiLCJkZWZhdWx0IiwiZXhwbGljaXQiLCJpbXBsaWNpdCIsImNvbnRhaW5zIl07bC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtjb25zdCBpPXRoaXMuX2Jhc2VTdGF0ZSxoPXt9O24uZm9yRWFjaChmdW5jdGlvbih1KXtoW3VdPWlb'@; put 'dV19KTtjb25zdCBmPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGgucGFyZW50KTtyZXR1cm4gZi5fYmFzZVN0YXRlPWgsZn0sbC5wcm90b3R5cGUuX3dyYXA9ZnVuY3Rpb24oKXtjb25zdCBpPXRoaXMuX2Jhc2VTdGF0ZTtlLmZvckVhY2goZnVuY3Rpb24oaCl7dGhpc1toXT1mdW5jdGlvbigpe2Nv'@; put 'bnN0IGY9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIGkuY2hpbGRyZW4ucHVzaChmKSxmW2hdLmFwcGx5KGYsYXJndW1lbnRzKX19LHRoaXMpfSxsLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihpKXtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZTtyKG51bGw9PT1oLnBhcmVudCks'@; put 'aS5jYWxsKHRoaXMpLGguY2hpbGRyZW49aC5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGYuX2Jhc2VTdGF0ZS5wYXJlbnQ9PT10aGlzfSx0aGlzKSxyLmVxdWFsKGguY2hpbGRyZW4ubGVuZ3RoLDEsIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCIpfSxsLnBy'@; put 'b3RvdHlwZS5fdXNlQXJncz1mdW5jdGlvbihpKXtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZSxmPWkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1IGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcn0sdGhpcyk7aT1pLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4hKHUgaW5zdGFuY2VvZiB0'@; put 'aGlzLmNvbnN0cnVjdG9yKX0sdGhpcyksMCE9PWYubGVuZ3RoJiYocihudWxsPT09aC5jaGlsZHJlbiksaC5jaGlsZHJlbj1mLGYuZm9yRWFjaChmdW5jdGlvbih1KXt1Ll9iYXNlU3RhdGUucGFyZW50PXRoaXN9LHRoaXMpKSwwIT09aS5sZW5ndGgmJihyKG51bGw9PT1oLmFyZ3MpLGguYXJn'@; put 'cz1pLGgucmV2ZXJzZUFyZ3M9aS5tYXAoZnVuY3Rpb24odSl7aWYoIm9iamVjdCIhPXR5cGVvZiB1fHx1LmNvbnN0cnVjdG9yIT09T2JqZWN0KXJldHVybiB1O2NvbnN0IHA9e307cmV0dXJuIE9iamVjdC5rZXlzKHUpLmZvckVhY2goZnVuY3Rpb24oZCl7ZD09KDB8ZCkmJihkfD0wKSxwW3Vb'@; put 'ZF1dPWR9KSxwfSkpfSxbIl9wZWVrVGFnIiwiX2RlY29kZVRhZyIsIl91c2UiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJfZGVjb2RlTnVsbCIsIl9kZWNvZGVJbnQiLCJfZGVjb2RlQm9vbCIsIl9kZWNvZGVMaXN0IiwiX2VuY29kZUNvbXBvc2l0ZSIsIl9l'@; put 'bmNvZGVTdHIiLCJfZW5jb2RlT2JqaWQiLCJfZW5jb2RlVGltZSIsIl9lbmNvZGVOdWxsIiwiX2VuY29kZUludCIsIl9lbmNvZGVCb29sIl0uZm9yRWFjaChmdW5jdGlvbihpKXtsLnByb3RvdHlwZVtpXT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihpKyIgbm90IGltcGxlbWVudGVkIGZv'@; put 'ciBlbmNvZGluZzogIit0aGlzLl9iYXNlU3RhdGUuZW5jKX19KSx0LmZvckVhY2goZnVuY3Rpb24oaSl7bC5wcm90b3R5cGVbaV09ZnVuY3Rpb24oKXtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZSxmPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHIobnVsbD09'@; put 'PWgudGFnKSxoLnRhZz1pLHRoaXMuX3VzZUFyZ3MoZiksdGhpc319KSxsLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oaSl7cihpKTtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gcihudWxsPT09aC51c2UpLGgudXNlPWksdGhpc30sbC5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gdGhpcy5fYmFzZVN0YXRlLm9wdGlvbmFsPSEwLHRoaXN9LGwucHJvdG90eXBlLmRlZj1mdW5jdGlvbihpKXtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gcihudWxsPT09aC5kZWZhdWx0KSxoLmRlZmF1bHQ9aSxoLm9wdGlvbmFsPSEwLHRoaXN9LGwucHJvdG90eXBl'@; put 'LmV4cGxpY2l0PWZ1bmN0aW9uKGkpe2NvbnN0IGg9dGhpcy5fYmFzZVN0YXRlO3JldHVybiByKG51bGw9PT1oLmV4cGxpY2l0JiZudWxsPT09aC5pbXBsaWNpdCksaC5leHBsaWNpdD1pLHRoaXN9LGwucHJvdG90eXBlLmltcGxpY2l0PWZ1bmN0aW9uKGkpe2NvbnN0IGg9dGhpcy5fYmFzZVN0'@; put 'YXRlO3JldHVybiByKG51bGw9PT1oLmV4cGxpY2l0JiZudWxsPT09aC5pbXBsaWNpdCksaC5pbXBsaWNpdD1pLHRoaXN9LGwucHJvdG90eXBlLm9iaj1mdW5jdGlvbigpe2NvbnN0IGk9dGhpcy5fYmFzZVN0YXRlLGg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1'@; put 'cm4gaS5vYmo9ITAsMCE9PWgubGVuZ3RoJiZ0aGlzLl91c2VBcmdzKGgpLHRoaXN9LGwucHJvdG90eXBlLmtleT1mdW5jdGlvbihpKXtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gcihudWxsPT09aC5rZXkpLGgua2V5PWksdGhpc30sbC5wcm90b3R5cGUuYW55PWZ1bmN0aW9uKCl7'@; put 'cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5hbnk9ITAsdGhpc30sbC5wcm90b3R5cGUuY2hvaWNlPWZ1bmN0aW9uKGkpe2NvbnN0IGg9dGhpcy5fYmFzZVN0YXRlO3JldHVybiByKG51bGw9PT1oLmNob2ljZSksaC5jaG9pY2U9aSx0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKGkpLm1hcChmdW5j'@; put 'dGlvbihmKXtyZXR1cm4gaVtmXX0pKSx0aGlzfSxsLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihpKXtjb25zdCBoPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gcihudWxsPT09aC51c2UpLGguY29udGFpbnM9aSx0aGlzfSxsLnByb3RvdHlwZS5fZGVjb2RlPWZ1bmN0aW9uKGksaCl7Y29u'@; put 'c3QgZj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PWYucGFyZW50KXJldHVybiBpLndyYXBSZXN1bHQoZi5jaGlsZHJlblswXS5fZGVjb2RlKGksaCkpO2xldCB1LHA9Zi5kZWZhdWx0LGQ9ITAsdj1udWxsO2lmKG51bGwhPT1mLmtleSYmKHY9aS5lbnRlcktleShmLmtleSkpLGYub3B0aW9u'@; put 'YWwpe2xldCBfPW51bGw7aWYobnVsbCE9PWYuZXhwbGljaXQ/Xz1mLmV4cGxpY2l0Om51bGwhPT1mLmltcGxpY2l0P189Zi5pbXBsaWNpdDpudWxsIT09Zi50YWcmJihfPWYudGFnKSxudWxsIT09X3x8Zi5hbnkpe2lmKGQ9dGhpcy5fcGVla1RhZyhpLF8sZi5hbnkpLGkuaXNFcnJvcihkKSly'@; put 'ZXR1cm4gZH1lbHNle2NvbnN0IEE9aS5zYXZlKCk7dHJ5e251bGw9PT1mLmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKGYudGFnLGksaCk6dGhpcy5fZGVjb2RlQ2hvaWNlKGksaCksZD0hMH1jYXRjaHtkPSExfWkucmVzdG9yZShBKX19aWYoZi5vYmomJmQmJih1PWkuZW50ZXJPYmplY3Qo'@; put 'KSksZCl7aWYobnVsbCE9PWYuZXhwbGljaXQpe2NvbnN0IEE9dGhpcy5fZGVjb2RlVGFnKGksZi5leHBsaWNpdCk7aWYoaS5pc0Vycm9yKEEpKXJldHVybiBBO2k9QX1jb25zdCBfPWkub2Zmc2V0O2lmKG51bGw9PT1mLnVzZSYmbnVsbD09PWYuY2hvaWNlKXtsZXQgQTtmLmFueSYmKEE9aS5z'@; put 'YXZlKCkpO2NvbnN0IEk9dGhpcy5fZGVjb2RlVGFnKGksbnVsbCE9PWYuaW1wbGljaXQ/Zi5pbXBsaWNpdDpmLnRhZyxmLmFueSk7aWYoaS5pc0Vycm9yKEkpKXJldHVybiBJO2YuYW55P3A9aS5yYXcoQSk6aT1JfWlmKGgmJmgudHJhY2smJm51bGwhPT1mLnRhZyYmaC50cmFjayhpLnBhdGgo'@; put 'KSxfLGkubGVuZ3RoLCJ0YWdnZWQiKSxoJiZoLnRyYWNrJiZudWxsIT09Zi50YWcmJmgudHJhY2soaS5wYXRoKCksaS5vZmZzZXQsaS5sZW5ndGgsImNvbnRlbnQiKSxmLmFueXx8KHA9bnVsbD09PWYuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoZi50YWcsaSxoKTp0aGlzLl9kZWNvZGVD'@; put 'aG9pY2UoaSxoKSksaS5pc0Vycm9yKHApKXJldHVybiBwO2lmKGYuYW55fHxudWxsIT09Zi5jaG9pY2V8fG51bGw9PT1mLmNoaWxkcmVufHxmLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oQSl7QS5fZGVjb2RlKGksaCl9KSxmLmNvbnRhaW5zJiYoIm9jdHN0ciI9PT1mLnRhZ3x8ImJpdHN0'@; put 'ciI9PT1mLnRhZykpe2NvbnN0IEE9bmV3IG8ocCk7cD10aGlzLl9nZXRVc2UoZi5jb250YWlucyxpLl9yZXBvcnRlclN0YXRlLm9iaikuX2RlY29kZShBLGgpfX1yZXR1cm4gZi5vYmomJmQmJihwPWkubGVhdmVPYmplY3QodSkpLG51bGw9PT1mLmtleXx8bnVsbD09PXAmJiEwIT09ZD9udWxs'@; put 'IT09diYmaS5leGl0S2V5KHYpOmkubGVhdmVLZXkodixmLmtleSxwKSxwfSxsLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYz1mdW5jdGlvbihpLGgsZil7Y29uc3QgdT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuInNlcSI9PT1pfHwic2V0Ij09PWk/bnVsbDoic2Vxb2YiPT09aXx8InNldG9mIj09'@; put 'PWk/dGhpcy5fZGVjb2RlTGlzdChoLGksdS5hcmdzWzBdLGYpOi9zdHIkLy50ZXN0KGkpP3RoaXMuX2RlY29kZVN0cihoLGksZik6Im9iamlkIj09PWkmJnUuYXJncz90aGlzLl9kZWNvZGVPYmppZChoLHUuYXJnc1swXSx1LmFyZ3NbMV0sZik6Im9iamlkIj09PWk/dGhpcy5fZGVjb2RlT2Jq'@; put 'aWQoaCxudWxsLG51bGwsZik6ImdlbnRpbWUiPT09aXx8InV0Y3RpbWUiPT09aT90aGlzLl9kZWNvZGVUaW1lKGgsaSxmKToibnVsbF8iPT09aT90aGlzLl9kZWNvZGVOdWxsKGgsZik6ImJvb2wiPT09aT90aGlzLl9kZWNvZGVCb29sKGgsZik6Im9iakRlc2MiPT09aT90aGlzLl9kZWNvZGVT'@; put 'dHIoaCxpLGYpOiJpbnQiPT09aXx8ImVudW0iPT09aT90aGlzLl9kZWNvZGVJbnQoaCx1LmFyZ3MmJnUuYXJnc1swXSxmKTpudWxsIT09dS51c2U/dGhpcy5fZ2V0VXNlKHUudXNlLGguX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKGgsZik6aC5lcnJvcigidW5rbm93biB0YWc6ICIraSl9'@; put 'LGwucHJvdG90eXBlLl9nZXRVc2U9ZnVuY3Rpb24oaSxoKXtjb25zdCBmPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZi51c2VEZWNvZGVyPXRoaXMuX3VzZShpLGgpLHIobnVsbD09PWYudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCksZi51c2VEZWNvZGVyPWYudXNlRGVjb2Rlci5fYmFz'@; put 'ZVN0YXRlLmNoaWxkcmVuWzBdLGYuaW1wbGljaXQhPT1mLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCYmKGYudXNlRGVjb2Rlcj1mLnVzZURlY29kZXIuY2xvbmUoKSxmLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdD1mLmltcGxpY2l0KSxmLnVzZURlY29kZXJ9LGwucHJv'@; put 'dG90eXBlLl9kZWNvZGVDaG9pY2U9ZnVuY3Rpb24oaSxoKXtjb25zdCBmPXRoaXMuX2Jhc2VTdGF0ZTtsZXQgdT1udWxsLHA9ITE7cmV0dXJuIE9iamVjdC5rZXlzKGYuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGQpe2NvbnN0IHY9aS5zYXZlKCksXz1mLmNob2ljZVtkXTt0cnl7Y29uc3QgQT1f'@; put 'Ll9kZWNvZGUoaSxoKTtpZihpLmlzRXJyb3IoQSkpcmV0dXJuITE7dT17dHlwZTpkLHZhbHVlOkF9LHA9ITB9Y2F0Y2h7cmV0dXJuIGkucmVzdG9yZSh2KSwhMX1yZXR1cm4hMH0sdGhpcykscD91OmkuZXJyb3IoIkNob2ljZSBub3QgbWF0Y2hlZCIpfSxsLnByb3RvdHlwZS5fY3JlYXRlRW5j'@; put 'b2RlckJ1ZmZlcj1mdW5jdGlvbihpKXtyZXR1cm4gbmV3IGEoaSx0aGlzLnJlcG9ydGVyKX0sbC5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihpLGgsZil7Y29uc3QgdT10aGlzLl9iYXNlU3RhdGU7aWYobnVsbCE9PXUuZGVmYXVsdCYmdS5kZWZhdWx0PT09aSlyZXR1cm47Y29uc3QgcD10'@; put 'aGlzLl9lbmNvZGVWYWx1ZShpLGgsZik7cmV0dXJuIHZvaWQgMD09PXB8fHRoaXMuX3NraXBEZWZhdWx0KHAsaCxmKT92b2lkIDA6cH0sbC5wcm90b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKGksaCxmKXtjb25zdCB1PXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09dS5wYXJlbnQpcmV0'@; put 'dXJuIHUuY2hpbGRyZW5bMF0uX2VuY29kZShpLGh8fG5ldyBiKTtsZXQgcD1udWxsO2lmKHRoaXMucmVwb3J0ZXI9aCx1Lm9wdGlvbmFsJiZ2b2lkIDA9PT1pKXtpZihudWxsPT09dS5kZWZhdWx0KXJldHVybjtpPXUuZGVmYXVsdH1sZXQgZD1udWxsLHY9ITE7aWYodS5hbnkpcD10aGlzLl9j'@; put 'cmVhdGVFbmNvZGVyQnVmZmVyKGkpO2Vsc2UgaWYodS5jaG9pY2UpcD10aGlzLl9lbmNvZGVDaG9pY2UoaSxoKTtlbHNlIGlmKHUuY29udGFpbnMpZD10aGlzLl9nZXRVc2UodS5jb250YWlucyxmKS5fZW5jb2RlKGksaCksdj0hMDtlbHNlIGlmKHUuY2hpbGRyZW4pZD11LmNoaWxkcmVuLm1h'@; put 'cChmdW5jdGlvbihfKXtpZigibnVsbF8iPT09Xy5fYmFzZVN0YXRlLnRhZylyZXR1cm4gXy5fZW5jb2RlKG51bGwsaCxpKTtpZihudWxsPT09Xy5fYmFzZVN0YXRlLmtleSlyZXR1cm4gaC5lcnJvcigiQ2hpbGQgc2hvdWxkIGhhdmUgYSBrZXkiKTtjb25zdCBBPWguZW50ZXJLZXkoXy5fYmFz'@; put 'ZVN0YXRlLmtleSk7aWYoIm9iamVjdCIhPXR5cGVvZiBpKXJldHVybiBoLmVycm9yKCJDaGlsZCBleHBlY3RlZCwgYnV0IGlucHV0IGlzIG5vdCBvYmplY3QiKTtjb25zdCBJPV8uX2VuY29kZShpW18uX2Jhc2VTdGF0ZS5rZXldLGgsaSk7cmV0dXJuIGgubGVhdmVLZXkoQSksSX0sdGhpcyku'@; put 'ZmlsdGVyKGZ1bmN0aW9uKF8pe3JldHVybiBffSksZD10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGQpO2Vsc2UgaWYoInNlcW9mIj09PXUudGFnfHwic2V0b2YiPT09dS50YWcpe2lmKCF1LmFyZ3N8fDEhPT11LmFyZ3MubGVuZ3RoKXJldHVybiBoLmVycm9yKCJUb28gbWFueSBhcmdzIGZv'@; put 'ciA6ICIrdS50YWcpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBoLmVycm9yKCJzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Iik7Y29uc3QgXz10aGlzLmNsb25lKCk7Xy5fYmFzZVN0YXRlLmltcGxpY2l0PW51bGwsZD10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGku'@; put 'bWFwKGZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3NbMF0saSkuX2VuY29kZShBLGgpfSxfKSl9ZWxzZSBudWxsIT09dS51c2U/cD10aGlzLl9nZXRVc2UodS51c2UsZikuX2VuY29kZShpLGgpOihkPXRoaXMuX2VuY29kZVByaW1pdGl2ZSh1LnRh'@; put 'ZyxpKSx2PSEwKTtpZighdS5hbnkmJm51bGw9PT11LmNob2ljZSl7Y29uc3QgXz1udWxsIT09dS5pbXBsaWNpdD91LmltcGxpY2l0OnUudGFnLEE9bnVsbD09PXUuaW1wbGljaXQ/InVuaXZlcnNhbCI6ImNvbnRleHQiO251bGw9PT1fP251bGw9PT11LnVzZSYmaC5lcnJvcigiVGFnIGNvdWxk'@; put 'IGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpIik6bnVsbD09PXUudXNlJiYocD10aGlzLl9lbmNvZGVDb21wb3NpdGUoXyx2LEEsZCkpfXJldHVybiBudWxsIT09dS5leHBsaWNpdCYmKHA9dGhpcy5fZW5jb2RlQ29tcG9zaXRlKHUuZXhwbGljaXQsITEsImNvbnRleHQiLHApKSxwfSxsLnBy'@; put 'b3RvdHlwZS5fZW5jb2RlQ2hvaWNlPWZ1bmN0aW9uKGksaCl7Y29uc3QgZj10aGlzLl9iYXNlU3RhdGUsdT1mLmNob2ljZVtpLnR5cGVdO3JldHVybiB1fHxyKCExLGkudHlwZSsiIG5vdCBmb3VuZCBpbiAiK0pTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKGYuY2hvaWNlKSkpLHUuX2VuY29k'@; put 'ZShpLnZhbHVlLGgpfSxsLnByb3RvdHlwZS5fZW5jb2RlUHJpbWl0aXZlPWZ1bmN0aW9uKGksaCl7Y29uc3QgZj10aGlzLl9iYXNlU3RhdGU7aWYoL3N0ciQvLnRlc3QoaSkpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihoLGkpO2lmKCJvYmppZCI9PT1pJiZmLmFyZ3MpcmV0dXJuIHRoaXMuX2Vu'@; put 'Y29kZU9iamlkKGgsZi5yZXZlcnNlQXJnc1swXSxmLmFyZ3NbMV0pO2lmKCJvYmppZCI9PT1pKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChoLG51bGwsbnVsbCk7aWYoImdlbnRpbWUiPT09aXx8InV0Y3RpbWUiPT09aSlyZXR1cm4gdGhpcy5fZW5jb2RlVGltZShoLGkpO2lmKCJudWxsXyI9'@; put 'PT1pKXJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7aWYoImludCI9PT1pfHwiZW51bSI9PT1pKXJldHVybiB0aGlzLl9lbmNvZGVJbnQoaCxmLmFyZ3MmJmYucmV2ZXJzZUFyZ3NbMF0pO2lmKCJib29sIj09PWkpcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woaCk7aWYoIm9iakRlc2MiPT09aSly'@; put 'ZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGgsaSk7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB0YWc6ICIraSl9LGwucHJvdG90eXBlLl9pc051bXN0cj1mdW5jdGlvbihpKXtyZXR1cm4vXlswLTkgXSokLy50ZXN0KGkpfSxsLnByb3RvdHlwZS5faXNQcmludHN0cj1mdW5jdGlvbihpKXty'@; put 'ZXR1cm4vXltBLVphLXowLTkgJygpKywtLi86PT9dKiQvLnRlc3QoaSl9fSx7Ii4uL2Jhc2UvYnVmZmVyIjoxNzIsIi4uL2Jhc2UvcmVwb3J0ZXIiOjE3NSwibWluaW1hbGlzdGljLWFzc2VydCI6NDUzfV0sMTc1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiaW5o'@; put 'ZXJpdHMiKTtmdW5jdGlvbiBhKHIpe3RoaXMuX3JlcG9ydGVyU3RhdGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczpyfHx7fSxlcnJvcnM6W119fWZ1bmN0aW9uIG8ocix0KXt0aGlzLnBhdGg9cix0aGlzLnJldGhyb3codCl9Uy5SZXBvcnRlcj1hLGEucHJvdG90eXBlLmlzRXJyb3I9ZnVu'@; put 'Y3Rpb24ocil7cmV0dXJuIHIgaW5zdGFuY2VvZiBvfSxhLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7Y29uc3Qgcj10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybntvYmo6ci5vYmoscGF0aExlbjpyLnBhdGgubGVuZ3RofX0sYS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihyKXtjb25z'@; put 'dCB0PXRoaXMuX3JlcG9ydGVyU3RhdGU7dC5vYmo9ci5vYmosdC5wYXRoPXQucGF0aC5zbGljZSgwLHIucGF0aExlbil9LGEucHJvdG90eXBlLmVudGVyS2V5PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaChyKX0sYS5wcm90b3R5cGUuZXhpdEtleT1m'@; put 'dW5jdGlvbihyKXtjb25zdCB0PXRoaXMuX3JlcG9ydGVyU3RhdGU7dC5wYXRoPXQucGF0aC5zbGljZSgwLHItMSl9LGEucHJvdG90eXBlLmxlYXZlS2V5PWZ1bmN0aW9uKHIsdCxlKXtjb25zdCBsPXRoaXMuX3JlcG9ydGVyU3RhdGU7dGhpcy5leGl0S2V5KHIpLG51bGwhPT1sLm9iaiYmKGwu'@; put 'b2JqW3RdPWUpfSxhLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCIvIil9LGEucHJvdG90eXBlLmVudGVyT2JqZWN0PWZ1bmN0aW9uKCl7Y29uc3Qgcj10aGlzLl9yZXBvcnRlclN0YXRlLHQ9ci5vYmo7cmV0dXJuIHIub2Jq'@; put 'PXt9LHR9LGEucHJvdG90eXBlLmxlYXZlT2JqZWN0PWZ1bmN0aW9uKHIpe2NvbnN0IHQ9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxlPXQub2JqO3JldHVybiB0Lm9iaj1yLGV9LGEucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHIpe2xldCB0O2NvbnN0IGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxsPXIg'@; put 'aW5zdGFuY2VvZiBvO2lmKHQ9bD9yOm5ldyBvKGUucGF0aC5tYXAoZnVuY3Rpb24obil7cmV0dXJuIlsiK0pTT04uc3RyaW5naWZ5KG4pKyJdIn0pLmpvaW4oIiIpLHIubWVzc2FnZXx8cixyLnN0YWNrKSwhZS5vcHRpb25zLnBhcnRpYWwpdGhyb3cgdDtyZXR1cm4gbHx8ZS5lcnJvcnMucHVz'@; put 'aCh0KSx0fSxhLnByb3RvdHlwZS53cmFwUmVzdWx0PWZ1bmN0aW9uKHIpe2NvbnN0IHQ9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtyZXR1cm4gdC5vcHRpb25zLnBhcnRpYWw/e3Jlc3VsdDp0aGlzLmlzRXJyb3Iocik/bnVsbDpyLGVycm9yczp0LmVycm9yc306cn0sYihvLEVycm9yKSxvLnByb3Rv'@; put 'dHlwZS5yZXRocm93PWZ1bmN0aW9uKHIpe2lmKHRoaXMubWVzc2FnZT1yKyIgYXQ6ICIrKHRoaXMucGF0aHx8IihzaGFsbG93KSIpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLG8pLCF0aGlzLnN0YWNrKXRyeXt0aHJvdyBuZXcgRXJyb3Io'@; put 'dGhpcy5tZXNzYWdlKX1jYXRjaCh0KXt0aGlzLnN0YWNrPXQuc3RhY2t9cmV0dXJuIHRoaXN9fSx7aW5oZXJpdHM6NDQwfV0sMTc2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSl7Y29uc3Qgbz17fTtyZXR1cm4gT2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5j'@; put 'dGlvbihyKXsoMHxyKT09ciYmKHJ8PTApLG9bYVtyXV09cn0pLG99Uy50YWdDbGFzcz17MDoidW5pdmVyc2FsIiwxOiJhcHBsaWNhdGlvbiIsMjoiY29udGV4dCIsMzoicHJpdmF0ZSJ9LFMudGFnQ2xhc3NCeU5hbWU9YihTLnRhZ0NsYXNzKSxTLnRhZz17MDoiZW5kIiwxOiJib29sIiwyOiJp'@; put 'bnQiLDM6ImJpdHN0ciIsNDoib2N0c3RyIiw1OiJudWxsXyIsNjoib2JqaWQiLDc6Im9iakRlc2MiLDg6ImV4dGVybmFsIiw5OiJyZWFsIiwxMDoiZW51bSIsMTE6ImVtYmVkIiwxMjoidXRmOHN0ciIsMTM6InJlbGF0aXZlT2lkIiwxNjoic2VxIiwxNzoic2V0IiwxODoibnVtc3RyIiwxOToi'@; put 'cHJpbnRzdHIiLDIwOiJ0NjFzdHIiLDIxOiJ2aWRlb3N0ciIsMjI6ImlhNXN0ciIsMjM6InV0Y3RpbWUiLDI0OiJnZW50aW1lIiwyNToiZ3JhcGhzdHIiLDI2OiJpc282NDZzdHIiLDI3OiJnZW5zdHIiLDI4OiJ1bmlzdHIiLDI5OiJjaGFyc3RyIiwzMDoiYm1wc3RyIn0sUy50YWdCeU5hbWU9'@; put 'YihTLnRhZyl9LHt9XSwxNzc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1TO2IuX3JldmVyc2U9ZnVuY3Rpb24oYSl7Y29uc3Qgbz17fTtyZXR1cm4gT2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihyKXsoMHxyKT09ciYmKHJ8PTApLG9bYVtyXV09cn0pLG99'@; put 'LGIuZGVyPXMoIi4vZGVyIil9LHsiLi9kZXIiOjE3Nn1dLDE3ODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoImluaGVyaXRzIiksYT1zKCJibi5qcyIpLG89cygiLi4vYmFzZS9idWZmZXIiKS5EZWNvZGVyQnVmZmVyLHI9cygiLi4vYmFzZS9ub2RlIiksdD1zKCIu'@; put 'Li9jb25zdGFudHMvZGVyIik7ZnVuY3Rpb24gZShoKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9aC5uYW1lLHRoaXMuZW50aXR5PWgsdGhpcy50cmVlPW5ldyBsLHRoaXMudHJlZS5faW5pdChoLmJvZHkpfWZ1bmN0aW9uIGwoaCl7ci5jYWxsKHRoaXMsImRlciIsaCl9ZnVuY3Rpb24gbiho'@; put 'LGYpe2xldCB1PWgucmVhZFVJbnQ4KGYpO2lmKGguaXNFcnJvcih1KSlyZXR1cm4gdTtjb25zdCBwPXQudGFnQ2xhc3NbdT4+Nl0sZD0hKDMyJnUpO2lmKDMxJn51KXUmPTMxO2Vsc2V7bGV0IHY9dTtmb3IodT0wOyEoMTI4Jn52KTspe2lmKHY9aC5yZWFkVUludDgoZiksaC5pc0Vycm9yKHYp'@; put 'KXJldHVybiB2O3U8PD03LHV8PTEyNyZ2fX1yZXR1cm57Y2xzOnAscHJpbWl0aXZlOmQsdGFnOnUsdGFnU3RyOnQudGFnW3VdfX1mdW5jdGlvbiBpKGgsZix1KXtsZXQgcD1oLnJlYWRVSW50OCh1KTtpZihoLmlzRXJyb3IocCkpcmV0dXJuIHA7aWYoIWYmJjEyOD09PXApcmV0dXJuIG51bGw7'@; put 'aWYoISgxMjgmcCkpcmV0dXJuIHA7Y29uc3QgZD0xMjcmcDtpZihkPjQpcmV0dXJuIGguZXJyb3IoImxlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmciKTtwPTA7Zm9yKGxldCB2PTA7djxkO3YrKyl7cDw8PTg7Y29uc3QgXz1oLnJlYWRVSW50OCh1KTtpZihoLmlzRXJyb3IoXykpcmV0dXJuIF87'@; put 'cHw9X31yZXR1cm4gcH1FLmV4cG9ydHM9ZSxlLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oaCxmKXtyZXR1cm4gby5pc0RlY29kZXJCdWZmZXIoaCl8fChoPW5ldyBvKGgsZikpLHRoaXMudHJlZS5fZGVjb2RlKGgsZil9LGIobCxyKSxsLnByb3RvdHlwZS5fcGVla1RhZz1mdW5jdGlvbiho'@; put 'LGYsdSl7aWYoaC5pc0VtcHR5KCkpcmV0dXJuITE7Y29uc3QgcD1oLnNhdmUoKSxkPW4oaCwnRmFpbGVkIHRvIHBlZWsgdGFnOiAiJytmKyciJyk7cmV0dXJuIGguaXNFcnJvcihkKT9kOihoLnJlc3RvcmUocCksZC50YWc9PT1mfHxkLnRhZ1N0cj09PWZ8fGQudGFnU3RyKyJvZiI9PT1mfHx1'@; put 'KX0sbC5wcm90b3R5cGUuX2RlY29kZVRhZz1mdW5jdGlvbihoLGYsdSl7Y29uc3QgcD1uKGgsJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mICInK2YrJyInKTtpZihoLmlzRXJyb3IocCkpcmV0dXJuIHA7bGV0IGQ9aShoLHAucHJpbWl0aXZlLCdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiAiJytm'@; put 'KyciJyk7aWYoaC5pc0Vycm9yKGQpKXJldHVybiBkO2lmKCF1JiZwLnRhZyE9PWYmJnAudGFnU3RyIT09ZiYmcC50YWdTdHIrIm9mIiE9PWYpcmV0dXJuIGguZXJyb3IoJ0ZhaWxlZCB0byBtYXRjaCB0YWc6ICInK2YrJyInKTtpZihwLnByaW1pdGl2ZXx8bnVsbCE9PWQpcmV0dXJuIGguc2tp'@; put 'cChkLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrZisnIicpO2NvbnN0IHY9aC5zYXZlKCksXz10aGlzLl9za2lwVW50aWxFbmQoaCwnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogIicrdGhpcy50YWcrJyInKTtyZXR1cm4gaC5pc0Vycm9yKF8pP186KGQ9aC5v'@; put 'ZmZzZXQtdi5vZmZzZXQsaC5yZXN0b3JlKHYpLGguc2tpcChkLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrZisnIicpKX0sbC5wcm90b3R5cGUuX3NraXBVbnRpbEVuZD1mdW5jdGlvbihoLGYpe2Zvcig7Oyl7Y29uc3QgdT1uKGgsZik7aWYoaC5pc0Vycm9yKHUpKXJldHVybiB1O2Nv'@; put 'bnN0IHA9aShoLHUucHJpbWl0aXZlLGYpO2lmKGguaXNFcnJvcihwKSlyZXR1cm4gcDtsZXQgZDtpZihkPXUucHJpbWl0aXZlfHxudWxsIT09cD9oLnNraXAocCk6dGhpcy5fc2tpcFVudGlsRW5kKGgsZiksaC5pc0Vycm9yKGQpKXJldHVybiBkO2lmKCJlbmQiPT09dS50YWdTdHIpYnJlYWt9'@; put 'fSxsLnByb3RvdHlwZS5fZGVjb2RlTGlzdD1mdW5jdGlvbihoLGYsdSxwKXtjb25zdCBkPVtdO2Zvcig7IWguaXNFbXB0eSgpOyl7Y29uc3Qgdj10aGlzLl9wZWVrVGFnKGgsImVuZCIpO2lmKGguaXNFcnJvcih2KSlyZXR1cm4gdjtjb25zdCBfPXUuZGVjb2RlKGgsImRlciIscCk7aWYoaC5p'@; put 'c0Vycm9yKF8pJiZ2KWJyZWFrO2QucHVzaChfKX1yZXR1cm4gZH0sbC5wcm90b3R5cGUuX2RlY29kZVN0cj1mdW5jdGlvbihoLGYpe2lmKCJiaXRzdHIiPT09Zil7Y29uc3QgdT1oLnJlYWRVSW50OCgpO3JldHVybiBoLmlzRXJyb3IodSk/dTp7dW51c2VkOnUsZGF0YTpoLnJhdygpfX1pZigi'@; put 'Ym1wc3RyIj09PWYpe2NvbnN0IHU9aC5yYXcoKTtpZih1Lmxlbmd0aCUyPT0xKXJldHVybiBoLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCIpO2xldCBwPSIiO2ZvcihsZXQgZD0wO2Q8dS5sZW5ndGgvMjtkKyspcCs9U3RyaW5nLmZyb21D'@; put 'aGFyQ29kZSh1LnJlYWRVSW50MTZCRSgyKmQpKTtyZXR1cm4gcH1pZigibnVtc3RyIj09PWYpe2NvbnN0IHU9aC5yYXcoKS50b1N0cmluZygiYXNjaWkiKTtyZXR1cm4gdGhpcy5faXNOdW1zdHIodSk/dTpoLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHVuc3VwcG9y'@; put 'dGVkIGNoYXJhY3RlcnMiKX1pZigib2N0c3RyIj09PWZ8fCJvYmpEZXNjIj09PWYpcmV0dXJuIGgucmF3KCk7aWYoInByaW50c3RyIj09PWYpe2NvbnN0IHU9aC5yYXcoKS50b1N0cmluZygiYXNjaWkiKTtyZXR1cm4gdGhpcy5faXNQcmludHN0cih1KT91OmguZXJyb3IoIkRlY29kaW5nIG9m'@; put 'IHN0cmluZyB0eXBlOiBwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIil9cmV0dXJuL3N0ciQvLnRlc3QoZik/aC5yYXcoKS50b1N0cmluZygpOmguZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAiK2YrIiB1bnN1cHBvcnRlZCIpfSxsLnByb3RvdHlwZS5fZGVjb2RlT2Jq'@; put 'aWQ9ZnVuY3Rpb24oaCxmLHUpe2xldCBwO2NvbnN0IGQ9W107bGV0IHY9MCxfPTA7Zm9yKDshaC5pc0VtcHR5KCk7KV89aC5yZWFkVUludDgoKSx2PDw9Nyx2fD0xMjcmXywhKDEyOCZfKSYmKGQucHVzaCh2KSx2PTApO2lmKDEyOCZfJiZkLnB1c2godikscD11P2Q6W2RbMF0vNDB8MCxkWzBd'@; put 'JTQwXS5jb25jYXQoZC5zbGljZSgxKSksZil7bGV0IEw9ZltwLmpvaW4oIiAiKV07dm9pZCAwPT09TCYmKEw9ZltwLmpvaW4oIi4iKV0pLHZvaWQgMCE9PUwmJihwPUwpfXJldHVybiBwfSxsLnByb3RvdHlwZS5fZGVjb2RlVGltZT1mdW5jdGlvbihoLGYpe2NvbnN0IHU9aC5yYXcoKS50b1N0'@; put 'cmluZygpO2xldCBwLGQsdixfLEEsSTtpZigiZ2VudGltZSI9PT1mKXA9MHx1LnNsaWNlKDAsNCksZD0wfHUuc2xpY2UoNCw2KSx2PTB8dS5zbGljZSg2LDgpLF89MHx1LnNsaWNlKDgsMTApLEE9MHx1LnNsaWNlKDEwLDEyKSxJPTB8dS5zbGljZSgxMiwxNCk7ZWxzZXtpZigidXRjdGltZSIh'@; put 'PT1mKXJldHVybiBoLmVycm9yKCJEZWNvZGluZyAiK2YrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7cD0wfHUuc2xpY2UoMCwyKSxkPTB8dS5zbGljZSgyLDQpLHY9MHx1LnNsaWNlKDQsNiksXz0wfHUuc2xpY2UoNiw4KSxBPTB8dS5zbGljZSg4LDEwKSxJPTB8dS5zbGljZSgxMCwx'@; put 'MikscD1wPDcwPzJlMytwOjE5MDArcH1yZXR1cm4gRGF0ZS5VVEMocCxkLTEsdixfLEEsSSwwKX0sbC5wcm90b3R5cGUuX2RlY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbC5wcm90b3R5cGUuX2RlY29kZUJvb2w9ZnVuY3Rpb24oaCl7Y29uc3QgZj1oLnJlYWRVSW50OCgpO3Jl'@; put 'dHVybiBoLmlzRXJyb3IoZik/ZjowIT09Zn0sbC5wcm90b3R5cGUuX2RlY29kZUludD1mdW5jdGlvbihoLGYpe2NvbnN0IHU9aC5yYXcoKTtsZXQgcD1uZXcgYSh1KTtyZXR1cm4gZiYmKHA9ZltwLnRvU3RyaW5nKDEwKV18fHApLHB9LGwucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oaCxmKXty'@; put 'ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgaCYmKGg9aChmKSksaC5fZ2V0RGVjb2RlcigiZGVyIikudHJlZX19LHsiLi4vYmFzZS9idWZmZXIiOjE3MiwiLi4vYmFzZS9ub2RlIjoxNzQsIi4uL2NvbnN0YW50cy9kZXIiOjE3NiwiYm4uanMiOjE4NCxpbmhlcml0czo0NDB9XSwxNzk6W2Z1bmN0'@; put 'aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Y29uc3QgYj1TO2IuZGVyPXMoIi4vZGVyIiksYi5wZW09cygiLi9wZW0iKX0seyIuL2RlciI6MTc4LCIuL3BlbSI6MTgwfV0sMTgwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9cygiaW5oZXJpdHMiKSxhPXMoInNhZmVyLWJ1'@; put 'ZmZlciIpLkJ1ZmZlcixvPXMoIi4vZGVyIik7ZnVuY3Rpb24gcih0KXtvLmNhbGwodGhpcyx0KSx0aGlzLmVuYz0icGVtIn1iKHIsbyksRS5leHBvcnRzPXIsci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHQsZSl7Y29uc3QgbD10LnRvU3RyaW5nKCkuc3BsaXQoL1tcclxuXSsvZyksbj1l'@; put 'LmxhYmVsLnRvVXBwZXJDYXNlKCksaT0vXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC87bGV0IGg9LTEsZj0tMTtmb3IobGV0IGQ9MDtkPGwubGVuZ3RoO2QrKyl7Y29uc3Qgdj1sW2RdLm1hdGNoKGkpO2lmKG51bGwhPT12JiZ2WzJdPT09bil7aWYoLTEhPT1oKXtpZigiRU5EIiE9'@; put 'PXZbMV0pYnJlYWs7Zj1kO2JyZWFrfWlmKCJCRUdJTiIhPT12WzFdKWJyZWFrO2g9ZH19aWYoLTE9PT1ofHwtMT09PWYpdGhyb3cgbmV3IEVycm9yKCJQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAiK24pO2NvbnN0IHU9bC5zbGljZShoKzEsZikuam9pbigiIik7dS5yZXBsYWNlKC9bXmEt'@; put 'ejAtOSsvPV0rL2dpLCIiKTtjb25zdCBwPWEuZnJvbSh1LCJiYXNlNjQiKTtyZXR1cm4gby5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcyxwLGUpfX0seyIuL2RlciI6MTc4LGluaGVyaXRzOjQ0MCwic2FmZXItYnVmZmVyIjo0OTV9XSwxODE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7Y29uc3QgYj1zKCJpbmhlcml0cyIpLGE9cygic2FmZXItYnVmZmVyIikuQnVmZmVyLG89cygiLi4vYmFzZS9ub2RlIikscj1zKCIuLi9jb25zdGFudHMvZGVyIik7ZnVuY3Rpb24gdChuKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9bi5uYW1lLHRoaXMuZW50aXR5PW4sdGhpcy50cmVl'@; put 'PW5ldyBlLHRoaXMudHJlZS5faW5pdChuLmJvZHkpfWZ1bmN0aW9uIGUobil7by5jYWxsKHRoaXMsImRlciIsbil9ZnVuY3Rpb24gbChuKXtyZXR1cm4gbjwxMD8iMCIrbjpufUUuZXhwb3J0cz10LHQucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihuLGkpe3JldHVybiB0aGlzLnRyZWUuX2Vu'@; put 'Y29kZShuLGkpLmpvaW4oKX0sYihlLG8pLGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGU9ZnVuY3Rpb24obixpLGgsZil7Y29uc3QgdT1mdW5jdGlvbih2LF8sQSxJKXtsZXQgTDtpZigic2Vxb2YiPT09dj92PSJzZXEiOiJzZXRvZiI9PT12JiYodj0ic2V0Iiksci50YWdCeU5hbWUuaGFz'@; put 'T3duUHJvcGVydHkodikpTD1yLnRhZ0J5TmFtZVt2XTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2Ygdnx8KDB8dikhPT12KXJldHVybiBJLmVycm9yKCJVbmtub3duIHRhZzogIit2KTtMPXZ9cmV0dXJuIEw+PTMxP0kuZXJyb3IoIk11bHRpLW9jdGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRl'@; put 'ZCIpOihffHwoTHw9MzIpLEx8PXIudGFnQ2xhc3NCeU5hbWVbQXx8InVuaXZlcnNhbCJdPDw2LEwpfShuLGksaCx0aGlzLnJlcG9ydGVyKTtpZihmLmxlbmd0aDwxMjgpe2NvbnN0IHY9YS5hbGxvYygyKTtyZXR1cm4gdlswXT11LHZbMV09Zi5sZW5ndGgsdGhpcy5fY3JlYXRlRW5jb2RlckJ1'@; put 'ZmZlcihbdixmXSl9bGV0IHA9MTtmb3IobGV0IHY9Zi5sZW5ndGg7dj49MjU2O3Y+Pj04KXArKztjb25zdCBkPWEuYWxsb2MoMitwKTtkWzBdPXUsZFsxXT0xMjh8cDtmb3IobGV0IHY9MStwLF89Zi5sZW5ndGg7Xz4wO3YtLSxfPj49OClkW3ZdPTI1NSZfO3JldHVybiB0aGlzLl9jcmVhdGVF'@; put 'bmNvZGVyQnVmZmVyKFtkLGZdKX0sZS5wcm90b3R5cGUuX2VuY29kZVN0cj1mdW5jdGlvbihuLGkpe2lmKCJiaXRzdHIiPT09aSlyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMHxuLnVudXNlZCxuLmRhdGFdKTtpZigiYm1wc3RyIj09PWkpe2NvbnN0IGg9YS5hbGxvYygyKm4u'@; put 'bGVuZ3RoKTtmb3IobGV0IGY9MDtmPG4ubGVuZ3RoO2YrKyloLndyaXRlVUludDE2QkUobi5jaGFyQ29kZUF0KGYpLDIqZik7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoaCl9cmV0dXJuIm51bXN0ciI9PT1pP3RoaXMuX2lzTnVtc3RyKG4pP3RoaXMuX2NyZWF0ZUVuY29kZXJC'@; put 'dWZmZXIobik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciBzdXBwb3J0cyBvbmx5IGRpZ2l0cyBhbmQgc3BhY2UiKToicHJpbnRzdHIiPT09aT90aGlzLl9pc1ByaW50c3RyKG4pP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobik6dGhpcy5y'@; put 'ZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzIG9ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggcGFyZW50aGVzaXMsIHBsdXMgc2lnbiwg'@; put 'Y29tbWEsIGh5cGhlbiwgZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sIHF1ZXN0aW9uIG1hcmsiKTovc3RyJC8udGVzdChpKXx8Im9iakRlc2MiPT09aT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG4pOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBl'@; put 'OiAiK2krIiB1bnN1cHBvcnRlZCIpfSxlLnByb3RvdHlwZS5fZW5jb2RlT2JqaWQ9ZnVuY3Rpb24obixpLGgpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7aWYoIWkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoInN0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQi'@; put 'KTtpZighaS5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXAiKTtuPWlbbl0uc3BsaXQoL1tccy5dKy9nKTtmb3IobGV0IGQ9MDtkPG4ubGVuZ3RoO2QrKyluW2RdfD0wfWVsc2UgaWYoQXJyYXkuaXNBcnJh'@; put 'eShuKSl7bj1uLnNsaWNlKCk7Zm9yKGxldCBkPTA7ZDxuLmxlbmd0aDtkKyspbltkXXw9MH1pZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgZ290OiAiK0pTT04uc3RyaW5naWZ5'@; put 'KG4pKTtpZighaCl7aWYoblsxXT49NDApcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlNlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQiIpO24uc3BsaWNlKDAsMiw0MCpuWzBdK25bMV0pfWxldCBmPTA7Zm9yKGxldCBkPTA7ZDxuLmxlbmd0aDtkKyspe2xldCB2PW5bZF07Zm9yKGYrKzt2'@; put 'Pj0xMjg7dj4+PTcpZisrfWNvbnN0IHU9YS5hbGxvYyhmKTtsZXQgcD11Lmxlbmd0aC0xO2ZvcihsZXQgZD1uLmxlbmd0aC0xO2Q+PTA7ZC0tKXtsZXQgdj1uW2RdO2Zvcih1W3AtLV09MTI3JnY7KHY+Pj03KT4wOyl1W3AtLV09MTI4fDEyNyZ2fXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVy'@; put 'QnVmZmVyKHUpfSxlLnByb3RvdHlwZS5fZW5jb2RlVGltZT1mdW5jdGlvbihuLGkpe2xldCBoO2NvbnN0IGY9bmV3IERhdGUobik7cmV0dXJuImdlbnRpbWUiPT09aT9oPVtsKGYuZ2V0VVRDRnVsbFllYXIoKSksbChmLmdldFVUQ01vbnRoKCkrMSksbChmLmdldFVUQ0RhdGUoKSksbChmLmdl'@; put 'dFVUQ0hvdXJzKCkpLGwoZi5nZXRVVENNaW51dGVzKCkpLGwoZi5nZXRVVENTZWNvbmRzKCkpLCJaIl0uam9pbigiIik6InV0Y3RpbWUiPT09aT9oPVtsKGYuZ2V0VVRDRnVsbFllYXIoKSUxMDApLGwoZi5nZXRVVENNb250aCgpKzEpLGwoZi5nZXRVVENEYXRlKCkpLGwoZi5nZXRVVENIb3Vy'@; put 'cygpKSxsKGYuZ2V0VVRDTWludXRlcygpKSxsKGYuZ2V0VVRDU2Vjb25kcygpKSwiWiJdLmpvaW4oIiIpOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nICIraSsiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQiKSx0aGlzLl9lbmNvZGVTdHIoaCwib2N0c3RyIil9LGUucHJvdG90eXBl'@; put 'Ll9lbmNvZGVOdWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoIiIpfSxlLnByb3RvdHlwZS5fZW5jb2RlSW50PWZ1bmN0aW9uKG4saSl7aWYoInN0cmluZyI9PXR5cGVvZiBuKXtpZighaSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiU3RyaW5nIGlu'@; put 'dCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCIpO2lmKCFpLmhhc093blByb3BlcnR5KG4pKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJWYWx1ZXMgbWFwIGRvZXNuJ3QgY29udGFpbjogIitKU09OLnN0cmluZ2lmeShuKSk7bj1pW25dfWlmKCJudW1iZXIiIT10eXBlb2Yg'@; put 'biYmIWEuaXNCdWZmZXIobikpe2NvbnN0IHU9bi50b0FycmF5KCk7IW4uc2lnbiYmMTI4JnVbMF0mJnUudW5zaGlmdCgwKSxuPWEuZnJvbSh1KX1pZihhLmlzQnVmZmVyKG4pKXtsZXQgdT1uLmxlbmd0aDswPT09bi5sZW5ndGgmJnUrKztjb25zdCBwPWEuYWxsb2ModSk7cmV0dXJuIG4uY29w'@; put 'eShwKSwwPT09bi5sZW5ndGgmJihwWzBdPTApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIocCl9aWYobjwxMjgpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobik7aWYobjwyNTYpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsbl0pO2xldCBoPTE7Zm9yKGxl'@; put 'dCB1PW47dT49MjU2O3U+Pj04KWgrKztjb25zdCBmPW5ldyBBcnJheShoKTtmb3IobGV0IHU9Zi5sZW5ndGgtMTt1Pj0wO3UtLSlmW3VdPTI1NSZuLG4+Pj04O3JldHVybiAxMjgmZlswXSYmZi51bnNoaWZ0KDApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoYS5mcm9tKGYpKX0sZS5wcm90'@; put 'b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobj8yNTU6MCl9LGUucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24obixpKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49bihpKSksbi5fZ2V0RW5jb2RlcigiZGVyIikudHJl'@; put 'ZX0sZS5wcm90b3R5cGUuX3NraXBEZWZhdWx0PWZ1bmN0aW9uKG4saSxoKXtjb25zdCBmPXRoaXMuX2Jhc2VTdGF0ZTtsZXQgdTtpZihudWxsPT09Zi5kZWZhdWx0KXJldHVybiExO2NvbnN0IHA9bi5qb2luKCk7aWYodm9pZCAwPT09Zi5kZWZhdWx0QnVmZmVyJiYoZi5kZWZhdWx0QnVmZmVy'@; put 'PXRoaXMuX2VuY29kZVZhbHVlKGYuZGVmYXVsdCxpLGgpLmpvaW4oKSkscC5sZW5ndGghPT1mLmRlZmF1bHRCdWZmZXIubGVuZ3RoKXJldHVybiExO2Zvcih1PTA7dTxwLmxlbmd0aDt1KyspaWYocFt1XSE9PWYuZGVmYXVsdEJ1ZmZlclt1XSlyZXR1cm4hMTtyZXR1cm4hMH19LHsiLi4vYmFz'@; put 'ZS9ub2RlIjoxNzQsIi4uL2NvbnN0YW50cy9kZXIiOjE3Nixpbmhlcml0czo0NDAsInNhZmVyLWJ1ZmZlciI6NDk1fV0sMTgyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2NvbnN0IGI9UztiLmRlcj1zKCIuL2RlciIpLGIucGVtPXMoIi4vcGVtIil9LHsiLi9kZXIiOjE4MSwiLi9w'@; put 'ZW0iOjE4M31dLDE4MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijtjb25zdCBiPXMoImluaGVyaXRzIiksYT1zKCIuL2RlciIpO2Z1bmN0aW9uIG8ocil7YS5jYWxsKHRoaXMsciksdGhpcy5lbmM9InBlbSJ9YihvLGEpLEUuZXhwb3J0cz1vLG8ucHJvdG90eXBlLmVuY29kZT1mdW5j'@; put 'dGlvbihyLHQpe2NvbnN0IGU9YS5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcyxyKS50b1N0cmluZygiYmFzZTY0IiksbD1bIi0tLS0tQkVHSU4gIit0LmxhYmVsKyItLS0tLSJdO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9NjQpbC5wdXNoKGUuc2xpY2UobixuKzY0KSk7cmV0dXJuIGwu'@; put 'cHVzaCgiLS0tLS1FTkQgIit0LmxhYmVsKyItLS0tLSIpLGwuam9pbigiXG4iKX19LHsiLi9kZXIiOjE4MSxpbmhlcml0czo0NDB9XSwxODQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIG8oeCxNKXtpZigheCl0aHJvdyBuZXcgRXJyb3IoTXx8'@; put 'IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiByKHgsTSl7eC5zdXBlcl89TTt2YXIgaj1mdW5jdGlvbigpe307ai5wcm90b3R5cGU9TS5wcm90b3R5cGUseC5wcm90b3R5cGU9bmV3IGoseC5wcm90b3R5cGUuY29uc3RydWN0b3I9eH1mdW5jdGlvbiB0KHgsTSxqKXtpZih0LmlzQk4oeCkp'@; put 'cmV0dXJuIHg7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PXgmJigibGUiIT09TSYmImJlIiE9PU18fChqPU0sTT0xMCksdGhpcy5faW5pdCh4fHwwLE18fDEwLGp8fCJiZSIpKX12YXIgZTsib2JqZWN0Ij09dHlwZW9m'@; put 'IGI/Yi5leHBvcnRzPXQ6KHZvaWQgMCkuQk49dCx0LkJOPXQsdC53b3JkU2l6ZT0yNjt0cnl7ZT10eXBlb2Ygd2luZG93PCJ1IiYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOnMoImJ1ZmZlciIpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gbCh4LE0pe3ZhciBqPXguY2hh'@; put 'ckNvZGVBdChNKTtyZXR1cm4gaj49NjUmJmo8PTcwP2otNTU6aj49OTcmJmo8PTEwMj9qLTg3OmotNDgmMTV9ZnVuY3Rpb24gbih4LE0sail7dmFyIGM9bCh4LGopO3JldHVybiBqLTE+PU0mJihjfD1sKHgsai0xKTw8NCksY31mdW5jdGlvbiBpKHgsTSxqLGMpe2Zvcih2YXIgbT0wLGc9TWF0'@; put 'aC5taW4oeC5sZW5ndGgsaikseT1NO3k8Zzt5Kyspe3ZhciB3PXguY2hhckNvZGVBdCh5KS00ODttKj1jLG0rPXc+PTQ5P3ctNDkrMTA6dz49MTc/dy0xNysxMDp3fXJldHVybiBtfXQuaXNCTj1mdW5jdGlvbih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIHR8fG51bGwhPT14JiYib2JqZWN0Ij09'@; put 'dHlwZW9mIHgmJnguY29uc3RydWN0b3Iud29yZFNpemU9PT10LndvcmRTaXplJiZBcnJheS5pc0FycmF5KHgud29yZHMpfSx0Lm1heD1mdW5jdGlvbih4LE0pe3JldHVybiB4LmNtcChNKT4wP3g6TX0sdC5taW49ZnVuY3Rpb24oeCxNKXtyZXR1cm4geC5jbXAoTSk8MD94Ok19LHQucHJvdG90'@; put 'eXBlLl9pbml0PWZ1bmN0aW9uKHgsTSxqKXtpZigibnVtYmVyIj09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoeCxNLGopO2lmKCJvYmplY3QiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHgsTSxqKTsiaGV4Ij09PU0mJihNPTE2KSxvKE09PT0oMHxNKSYmTT49'@; put 'MiYmTTw9MzYpO3ZhciBjPTA7Ii0iPT09KHg9eC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihjKyssdGhpcy5uZWdhdGl2ZT0xKSxjPHgubGVuZ3RoJiYoMTY9PT1NP3RoaXMuX3BhcnNlSGV4KHgsYyxqKToodGhpcy5fcGFyc2VCYXNlKHgsTSxjKSwibGUiPT09aiYmdGhp'@; put 'cy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLE0saikpKX0sdC5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oeCxNLGope3g8MCYmKHRoaXMubmVnYXRpdmU9MSx4PS14KSx4PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4XSx0aGlzLmxlbmd0aD0xKTp4PDQ1MDM1OTk2'@; put 'MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KG8oeDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PWomJnRo'@; put 'aXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxNLGopfSx0LnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHgsTSxqKXtpZihvKCJudW1iZXIiPT10eXBlb2YgeC5sZW5ndGgpLHgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5s'@; put 'ZW5ndGg9TWF0aC5jZWlsKHgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGM9MDtjPHRoaXMubGVuZ3RoO2MrKyl0aGlzLndvcmRzW2NdPTA7dmFyIG0sZyx5PTA7aWYoImJlIj09PWopZm9yKGM9eC5sZW5ndGgtMSxtPTA7Yz49MDtjLT0zKXRo'@; put 'aXMud29yZHNbbV18PShnPXhbY118eFtjLTFdPDw4fHhbYy0yXTw8MTYpPDx5JjY3MTA4ODYzLHRoaXMud29yZHNbbSsxXT1nPj4+MjYteSY2NzEwODg2MywoeSs9MjQpPj0yNiYmKHktPTI2LG0rKyk7ZWxzZSBpZigibGUiPT09ailmb3IoYz0wLG09MDtjPHgubGVuZ3RoO2MrPTMpdGhpcy53'@; put 'b3Jkc1ttXXw9KGc9eFtjXXx4W2MrMV08PDh8eFtjKzJdPDwxNik8PHkmNjcxMDg4NjMsdGhpcy53b3Jkc1ttKzFdPWc+Pj4yNi15JjY3MTA4ODYzLCh5Kz0yNCk+PTI2JiYoeS09MjYsbSsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx0LnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oeCxN'@; put 'LGope3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoeC5sZW5ndGgtTSkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgYz0wO2M8dGhpcy5sZW5ndGg7YysrKXRoaXMud29yZHNbY109MDt2YXIgbSxnPTAseT0wO2lmKCJiZSI9PT1qKWZvcihjPXgubGVuZ3RoLTE7'@; put 'Yz49TTtjLT0yKW09bih4LE0sYyk8PGcsdGhpcy53b3Jkc1t5XXw9NjcxMDg4NjMmbSxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1t5Kz0xXXw9bT4+PjI2KTpnKz04O2Vsc2UgZm9yKGM9KHgubGVuZ3RoLU0pJTI9PTA/TSsxOk07Yzx4Lmxlbmd0aDtjKz0yKW09bih4LE0sYyk8PGcsdGhpcy53'@; put 'b3Jkc1t5XXw9NjcxMDg4NjMmbSxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1t5Kz0xXXw9bT4+PjI2KTpnKz04O3RoaXMuc3RyaXAoKX0sdC5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih4LE0sail7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIGM9MCxtPTE7bTw9'@; put 'NjcxMDg4NjM7bSo9TSljKys7Yy0tLG09bS9NfDA7Zm9yKHZhciBnPXgubGVuZ3RoLWoseT1nJWMsdz1NYXRoLm1pbihnLGcteSkraixrPTAsTz1qO088dztPKz1jKWs9aSh4LE8sTytjLE0pLHRoaXMuaW11bG4obSksdGhpcy53b3Jkc1swXStrPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWs6'@; put 'dGhpcy5faWFkZG4oayk7aWYoMCE9PXkpe3ZhciB6PTE7Zm9yKGs9aSh4LE8seC5sZW5ndGgsTSksTz0wO088eTtPKyspeio9TTt0aGlzLmltdWxuKHopLHRoaXMud29yZHNbMF0razw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1rOnRoaXMuX2lhZGRuKGspfXRoaXMuc3RyaXAoKX0sdC5wcm90'@; put 'b3R5cGUuY29weT1mdW5jdGlvbih4KXt4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBNPTA7TTx0aGlzLmxlbmd0aDtNKyspeC53b3Jkc1tNXT10aGlzLndvcmRzW01dO3gubGVuZ3RoPXRoaXMubGVuZ3RoLHgubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSx4LnJlZD10aGlz'@; put 'LnJlZH0sdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgeD1uZXcgdChudWxsKTtyZXR1cm4gdGhpcy5jb3B5KHgpLHh9LHQucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Oyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRo'@; put 'aXN9LHQucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sdC5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9'@; put 'PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LHQucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIGg9WyIiLCIwIiwiMDAi'@; put 'LCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw'@; put 'MDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAw'@; put 'MDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sZj1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSx1PVswLDAsMzM1NTQ0MzIsNDMw'@; put 'NDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIs'@; put 'NjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIHAoeCxNLGope2oubmVnYXRpdmU9TS5uZWdhdGl2ZV54Lm5l'@; put 'Z2F0aXZlO3ZhciBjPXgubGVuZ3RoK00ubGVuZ3RofDA7ai5sZW5ndGg9YyxjPWMtMXwwO3ZhciBtPTB8eC53b3Jkc1swXSxnPTB8TS53b3Jkc1swXSx5PW0qZyxrPXkvNjcxMDg4NjR8MDtqLndvcmRzWzBdPTY3MTA4ODYzJnk7Zm9yKHZhciBPPTE7TzxjO08rKyl7Zm9yKHZhciB6PWs+Pj4y'@; put 'NixVPTY3MTA4ODYzJmssVj1NYXRoLm1pbihPLE0ubGVuZ3RoLTEpLFI9TWF0aC5tYXgoMCxPLXgubGVuZ3RoKzEpO1I8PVY7UisrKXorPSh5PShtPTB8eC53b3Jkc1tPLVJ8MF0pKihnPTB8TS53b3Jkc1tSXSkrVSkvNjcxMDg4NjR8MCxVPTY3MTA4ODYzJnk7ai53b3Jkc1tPXT0wfFUsaz0w'@; put 'fHp9cmV0dXJuIDAhPT1rP2oud29yZHNbT109MHxrOmoubGVuZ3RoLS0sai5zdHJpcCgpfXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHgsTSl7dmFyIGo7aWYoTT0wfE18fDEsMTY9PT0oeD14fHwxMCl8fCJoZXgiPT09eCl7aj0iIjtmb3IodmFyIGM9MCxtPTAsZz0wO2c8dGhpcy5s'@; put 'ZW5ndGg7ZysrKXt2YXIgeT10aGlzLndvcmRzW2ddLHc9KDE2Nzc3MjE1Jih5PDxjfG0pKS50b1N0cmluZygxNik7aj0wIT0obT15Pj4+MjQtYyYxNjc3NzIxNSl8fGchPT10aGlzLmxlbmd0aC0xP2hbNi13Lmxlbmd0aF0rdytqOncraiwoYys9Mik+PTI2JiYoYy09MjYsZy0tKX1mb3IoMCE9'@; put 'PW0mJihqPW0udG9TdHJpbmcoMTYpK2opO2oubGVuZ3RoJU0hPTA7KWo9IjAiK2o7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaj0iLSIraiksan1pZih4PT09KDB8eCkmJng+PTImJng8PTM2KXt2YXIgaz1mW3hdLE89dVt4XTtqPSIiO3ZhciB6PXRoaXMuY2xvbmUoKTtmb3Ioei5uZWdh'@; put 'dGl2ZT0wOyF6LmlzWmVybygpOyl7dmFyIFU9ei5tb2RuKE8pLnRvU3RyaW5nKHgpO2o9KHo9ei5pZGl2bihPKSkuaXNaZXJvKCk/VStqOmhbay1VLmxlbmd0aF0rVStqfWZvcih0aGlzLmlzWmVybygpJiYoaj0iMCIraik7ai5sZW5ndGglTSE9MDspaj0iMCIrajtyZXR1cm4gMCE9PXRoaXMu'@; put 'bmVnYXRpdmUmJihqPSItIitqKSxqfW8oITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sdC5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/eCs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXToz'@; put 'PT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP3grPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZvKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8teDp4'@; put 'fSx0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LHQucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKHgsTSl7cmV0dXJuIG8odm9pZCAwIT09ZSksdGhpcy50b0FycmF5TGlrZShlLHgsTSl9LHQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rp'@; put 'b24oeCxNKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx4LE0pfSx0LnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih4LE0sail7dmFyIGM9dGhpcy5ieXRlTGVuZ3RoKCksbT1qfHxNYXRoLm1heCgxLGMpO28oYzw9bSwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVk'@; put 'IGxlbmd0aCIpLG8obT4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIGcseSx3PSJsZSI9PT1NLGs9bmV3IHgobSksTz10aGlzLmNsb25lKCk7aWYodyl7Zm9yKHk9MDshTy5pc1plcm8oKTt5KyspZz1PLmFuZGxuKDI1NSksTy5pdXNocm4oOCksa1t5'@; put 'XT1nO2Zvcig7eTxtO3krKylrW3ldPTB9ZWxzZXtmb3IoeT0wO3k8bS1jO3krKylrW3ldPTA7Zm9yKHk9MDshTy5pc1plcm8oKTt5KyspZz1PLmFuZGxuKDI1NSksTy5pdXNocm4oOCksa1ttLXktMV09Z31yZXR1cm4ga30sdC5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0'@; put 'aW9uKHgpe3JldHVybiAzMi1NYXRoLmNsejMyKHgpfTpmdW5jdGlvbih4KXt2YXIgTT14LGo9MDtyZXR1cm4gTT49NDA5NiYmKGorPTEzLE0+Pj49MTMpLE0+PTY0JiYoais9NyxNPj4+PTcpLE0+PTgmJihqKz00LE0+Pj49NCksTT49MiYmKGorPTIsTT4+Pj0yKSxqK019LHQucHJvdG90eXBl'@; put 'Ll96ZXJvQml0cz1mdW5jdGlvbih4KXtpZigwPT09eClyZXR1cm4gMjY7dmFyIE09eCxqPTA7cmV0dXJuISg4MTkxJk0pJiYoais9MTMsTT4+Pj0xMyksISgxMjcmTSkmJihqKz03LE0+Pj49NyksISgxNSZNKSYmKGorPTQsTT4+Pj00KSwhKDMmTSkmJihqKz0yLE0+Pj49MiksISgxJk0pJiZq'@; put 'Kyssan0sdC5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIE09dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrTX0sdC5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygp'@; put 'KXJldHVybiAwO2Zvcih2YXIgeD0wLE09MDtNPHRoaXMubGVuZ3RoO00rKyl7dmFyIGo9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tNXSk7aWYoeCs9aiwyNiE9PWopYnJlYWt9cmV0dXJuIHh9LHQucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRo'@; put 'aXMuYml0TGVuZ3RoKCkvOCl9LHQucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bih4KS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LHQucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnRl'@; put 'c3RuKHgtMSk/dGhpcy5ub3RuKHgpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LHQucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSx0LnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sdC5w'@; put 'cm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sdC5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbih4KXtmb3IoO3RoaXMubGVuZ3RoPHgubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBN'@; put 'PTA7TTx4Lmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT10aGlzLndvcmRzW01dfHgud29yZHNbTV07cmV0dXJuIHRoaXMuc3RyaXAoKX0sdC5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKHgpe3JldHVybiBvKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1b3IoeCl9LHQucHJv'@; put 'dG90eXBlLm9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKHgpOnguY2xvbmUoKS5pb3IodGhpcyl9LHQucHJvdG90eXBlLnVvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3Io'@; put 'eCk6eC5jbG9uZSgpLml1b3IodGhpcyl9LHQucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKHgpe3ZhciBNO009dGhpcy5sZW5ndGg+eC5sZW5ndGg/eDp0aGlzO2Zvcih2YXIgaj0wO2o8TS5sZW5ndGg7aisrKXRoaXMud29yZHNbal09dGhpcy53b3Jkc1tqXSZ4LndvcmRzW2pdO3JldHVybiB0'@; put 'aGlzLmxlbmd0aD1NLmxlbmd0aCx0aGlzLnN0cmlwKCl9LHQucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG8oMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoeCl9LHQucHJvdG90eXBlLmFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+'@; put 'eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoeCk6eC5jbG9uZSgpLmlhbmQodGhpcyl9LHQucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh4KTp4LmNsb25lKCkuaXVhbmQodGhpcyl9LHQucHJvdG90eXBl'@; put 'Lml1eG9yPWZ1bmN0aW9uKHgpe3ZhciBNLGo7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KE09dGhpcyxqPXgpOihNPXgsaj10aGlzKTtmb3IodmFyIGM9MDtjPGoubGVuZ3RoO2MrKyl0aGlzLndvcmRzW2NdPU0ud29yZHNbY11eai53b3Jkc1tjXTtpZih0aGlzIT09TSlmb3IoO2M8TS5sZW5ndGg7'@; put 'YysrKXRoaXMud29yZHNbY109TS53b3Jkc1tjXTtyZXR1cm4gdGhpcy5sZW5ndGg9TS5sZW5ndGgsdGhpcy5zdHJpcCgpfSx0LnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKHgpe3JldHVybiBvKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1eG9yKHgpfSx0LnByb3RvdHlw'@; put 'ZS54b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKHgpOnguY2xvbmUoKS5peG9yKHRoaXMpfSx0LnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3Io'@; put 'eCk6eC5jbG9uZSgpLml1eG9yKHRoaXMpfSx0LnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbih4KXtvKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIE09MHxNYXRoLmNlaWwoeC8yNiksaj14JTI2O3RoaXMuX2V4cGFuZChNKSxqPjAmJk0tLTtmb3IodmFyIGM9MDtjPE07YysrKXRoaXMu'@; put 'd29yZHNbY109NjcxMDg4NjMmfnRoaXMud29yZHNbY107cmV0dXJuIGo+MCYmKHRoaXMud29yZHNbY109fnRoaXMud29yZHNbY10mNjcxMDg4NjM+PjI2LWopLHRoaXMuc3RyaXAoKX0sdC5wcm90b3R5cGUubm90bj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHgpfSx0'@; put 'LnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHgsTSl7bygibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBqPXgvMjZ8MCxjPXglMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChqKzEpLHRoaXMud29yZHNbal09TT90aGlzLndvcmRzW2pdfDE8PGM6dGhpcy53b3Jkc1tqXSZ+KDE8PGMpLHRoaXMu'@; put 'c3RyaXAoKX0sdC5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4KXt2YXIgTSxqLGM7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsTT10aGlzLmlzdWIoeCksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10'@; put 'aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4geC5uZWdhdGl2ZT0wLE09dGhpcy5pc3ViKHgpLHgubmVnYXRpdmU9MSxNLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPngubGVuZ3RoPyhqPXRoaXMsYz14KTooaj14LGM9dGhpcyk7Zm9yKHZhciBtPTAsZz0wO2c8Yy5sZW5ndGg7'@; put 'ZysrKXRoaXMud29yZHNbZ109NjcxMDg4NjMmKE09KDB8ai53b3Jkc1tnXSkrKDB8Yy53b3Jkc1tnXSkrbSksbT1NPj4+MjY7Zm9yKDswIT09bSYmZzxqLmxlbmd0aDtnKyspdGhpcy53b3Jkc1tnXT02NzEwODg2MyYoTT0oMHxqLndvcmRzW2ddKSttKSxtPU0+Pj4yNjtpZih0aGlzLmxlbmd0'@; put 'aD1qLmxlbmd0aCwwIT09bSl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1tLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihqIT09dGhpcylmb3IoO2c8ai5sZW5ndGg7ZysrKXRoaXMud29yZHNbZ109ai53b3Jkc1tnXTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgpe3ZhciBN'@; put 'O3JldHVybiAwIT09eC5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KHgubmVnYXRpdmU9MCxNPXRoaXMuc3ViKHgpLHgubmVnYXRpdmVePTEsTSk6MD09PXgubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsTT14LnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZl'@; put 'PTEsTSk6dGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoeCk6eC5jbG9uZSgpLmlhZGQodGhpcyl9LHQucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oeCl7aWYoMCE9PXgubmVnYXRpdmUpe3gubmVnYXRpdmU9MDt2YXIgTT10aGlzLmlhZGQoeCk7cmV0dXJuIHgubmVnYXRp'@; put 'dmU9MSxNLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBqLGMsbT10aGlzLmNtcCh4KTtpZigwPT09bSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRo'@; put 'aXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7bT4wPyhqPXRoaXMsYz14KTooaj14LGM9dGhpcyk7Zm9yKHZhciBnPTAseT0wO3k8Yy5sZW5ndGg7eSsrKWc9KE09KDB8ai53b3Jkc1t5XSktKDB8Yy53b3Jkc1t5XSkrZyk+PjI2LHRoaXMud29yZHNbeV09NjcxMDg4NjMmTTtmb3Io'@; put 'OzAhPT1nJiZ5PGoubGVuZ3RoO3krKylnPShNPSgwfGoud29yZHNbeV0pK2cpPj4yNix0aGlzLndvcmRzW3ldPTY3MTA4ODYzJk07aWYoMD09PWcmJnk8ai5sZW5ndGgmJmohPT10aGlzKWZvcig7eTxqLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT1qLndvcmRzW3ldO3JldHVybiB0aGlzLmxl'@; put 'bmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx5KSxqIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSx0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHgpfTt2YXIgZD1mdW5jdGlvbih4LE0sail7dmFyIGMsbSxnLHk9eC53'@; put 'b3Jkcyx3PU0ud29yZHMsaz1qLndvcmRzLE89MCx6PTB8eVswXSxVPTgxOTEmeixWPXo+Pj4xMyxSPTB8eVsxXSxIPTgxOTEmUixUPVI+Pj4xMyxDPTB8eVsyXSxGPTgxOTEmQyxxPUM+Pj4xMyxZPTB8eVszXSxYPTgxOTEmWSxLPVk+Pj4xMyxydD0wfHlbNF0sdHQ9ODE5MSZydCxXPXJ0Pj4+'@; put 'MTMsUT0wfHlbNV0sRz04MTkxJlEsZXQ9UT4+PjEzLG50PTB8eVs2XSxpdD04MTkxJm50LG90PW50Pj4+MTMsaHQ9MHx5WzddLGZ0PTgxOTEmaHQscHQ9aHQ+Pj4xMyxUdD0wfHlbOF0seXQ9ODE5MSZUdCx3dD1UdD4+PjEzLHF0PTB8eVs5XSxFdD04MTkxJnF0LF90PXF0Pj4+MTMsQXQ9MHx3'@; put 'WzBdLGd0PTgxOTEmQXQsbXQ9QXQ+Pj4xMyxWdD0wfHdbMV0sU3Q9ODE5MSZWdCxPdD1WdD4+PjEzLHllPTB8d1syXSxSdD04MTkxJnllLE50PXllPj4+MTMsYWU9MHx3WzNdLEx0PTgxOTEmYWUsenQ9YWU+Pj4xMyxwZT0wfHdbNF0sQnQ9ODE5MSZwZSxQdD1wZT4+PjEzLGNlPTB8d1s1XSxG'@; put 'dD04MTkxJmNlLEl0PWNlPj4+MTMsdmU9MHx3WzZdLFV0PTgxOTEmdmUsSj12ZT4+PjEzLGF0PTB8d1s3XSxsdD04MTkxJmF0LGR0PWF0Pj4+MTMsWXQ9MHx3WzhdLHZ0PTgxOTEmWXQsa3Q9WXQ+Pj4xMyx0ZT0wfHdbOV0sanQ9ODE5MSZ0ZSx4dD10ZT4+PjEzO2oubmVnYXRpdmU9eC5uZWdh'@; put 'dGl2ZV5NLm5lZ2F0aXZlLGoubGVuZ3RoPTE5O3ZhciBRdD0oTysoYz1NYXRoLmltdWwoVSxndCkpfDApKygoODE5MSYobT0obT1NYXRoLmltdWwoVSxtdCkpK01hdGguaW11bChWLGd0KXwwKSk8PDEzKXwwO089KChnPU1hdGguaW11bChWLG10KSkrKG0+Pj4xMyl8MCkrKFF0Pj4+MjYpfDAs'@; put 'UXQmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKEgsZ3QpLG09KG09TWF0aC5pbXVsKEgsbXQpKStNYXRoLmltdWwoVCxndCl8MCxnPU1hdGguaW11bChULG10KTt2YXIgV3Q9KE8rKGM9YytNYXRoLmltdWwoVSxTdCl8MCl8MCkrKCg4MTkxJihtPShtPW0rTWF0aC5pbXVsKFUsT3QpfDApK01hdGgu'@; put 'aW11bChWLFN0KXwwKSk8PDEzKXwwO089KChnPWcrTWF0aC5pbXVsKFYsT3QpfDApKyhtPj4+MTMpfDApKyhXdD4+PjI2KXwwLFd0Jj02NzEwODg2MyxjPU1hdGguaW11bChGLGd0KSxtPShtPU1hdGguaW11bChGLG10KSkrTWF0aC5pbXVsKHEsZ3QpfDAsZz1NYXRoLmltdWwocSxtdCksYz1j'@; put 'K01hdGguaW11bChILFN0KXwwLG09KG09bStNYXRoLmltdWwoSCxPdCl8MCkrTWF0aC5pbXVsKFQsU3QpfDAsZz1nK01hdGguaW11bChULE90KXwwO3ZhciBYdD0oTysoYz1jK01hdGguaW11bChVLFJ0KXwwKXwwKSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwoVSxOdCl8MCkrTWF0aC5pbXVs'@; put 'KFYsUnQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoVixOdCl8MCkrKG0+Pj4xMyl8MCkrKFh0Pj4+MjYpfDAsWHQmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKFgsZ3QpLG09KG09TWF0aC5pbXVsKFgsbXQpKStNYXRoLmltdWwoSyxndCl8MCxnPU1hdGguaW11bChLLG10KSxjPWMrTWF0'@; put 'aC5pbXVsKEYsU3QpfDAsbT0obT1tK01hdGguaW11bChGLE90KXwwKStNYXRoLmltdWwocSxTdCl8MCxnPWcrTWF0aC5pbXVsKHEsT3QpfDAsYz1jK01hdGguaW11bChILFJ0KXwwLG09KG09bStNYXRoLmltdWwoSCxOdCl8MCkrTWF0aC5pbXVsKFQsUnQpfDAsZz1nK01hdGguaW11bChULE50'@; put 'KXwwO3ZhciByZT0oTysoYz1jK01hdGguaW11bChVLEx0KXwwKXwwKSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwoVSx6dCl8MCkrTWF0aC5pbXVsKFYsTHQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoVix6dCl8MCkrKG0+Pj4xMyl8MCkrKHJlPj4+MjYpfDAscmUmPTY3MTA4ODYz'@; put 'LGM9TWF0aC5pbXVsKHR0LGd0KSxtPShtPU1hdGguaW11bCh0dCxtdCkpK01hdGguaW11bChXLGd0KXwwLGc9TWF0aC5pbXVsKFcsbXQpLGM9YytNYXRoLmltdWwoWCxTdCl8MCxtPShtPW0rTWF0aC5pbXVsKFgsT3QpfDApK01hdGguaW11bChLLFN0KXwwLGc9ZytNYXRoLmltdWwoSyxPdCl8'@; put 'MCxjPWMrTWF0aC5pbXVsKEYsUnQpfDAsbT0obT1tK01hdGguaW11bChGLE50KXwwKStNYXRoLmltdWwocSxSdCl8MCxnPWcrTWF0aC5pbXVsKHEsTnQpfDAsYz1jK01hdGguaW11bChILEx0KXwwLG09KG09bStNYXRoLmltdWwoSCx6dCl8MCkrTWF0aC5pbXVsKFQsTHQpfDAsZz1nK01hdGgu'@; put 'aW11bChULHp0KXwwO3ZhciBpZT0oTysoYz1jK01hdGguaW11bChVLEJ0KXwwKXwwKSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwoVSxQdCl8MCkrTWF0aC5pbXVsKFYsQnQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoVixQdCl8MCkrKG0+Pj4xMyl8MCkrKGllPj4+MjYpfDAsaWUm'@; put 'PTY3MTA4ODYzLGM9TWF0aC5pbXVsKEcsZ3QpLG09KG09TWF0aC5pbXVsKEcsbXQpKStNYXRoLmltdWwoZXQsZ3QpfDAsZz1NYXRoLmltdWwoZXQsbXQpLGM9YytNYXRoLmltdWwodHQsU3QpfDAsbT0obT1tK01hdGguaW11bCh0dCxPdCl8MCkrTWF0aC5pbXVsKFcsU3QpfDAsZz1nK01hdGgu'@; put 'aW11bChXLE90KXwwLGM9YytNYXRoLmltdWwoWCxSdCl8MCxtPShtPW0rTWF0aC5pbXVsKFgsTnQpfDApK01hdGguaW11bChLLFJ0KXwwLGc9ZytNYXRoLmltdWwoSyxOdCl8MCxjPWMrTWF0aC5pbXVsKEYsTHQpfDAsbT0obT1tK01hdGguaW11bChGLHp0KXwwKStNYXRoLmltdWwocSxMdCl8'@; put 'MCxnPWcrTWF0aC5pbXVsKHEsenQpfDAsYz1jK01hdGguaW11bChILEJ0KXwwLG09KG09bStNYXRoLmltdWwoSCxQdCl8MCkrTWF0aC5pbXVsKFQsQnQpfDAsZz1nK01hdGguaW11bChULFB0KXwwO3ZhciB1ZT0oTysoYz1jK01hdGguaW11bChVLEZ0KXwwKXwwKSsoKDgxOTEmKG09KG09bStN'@; put 'YXRoLmltdWwoVSxJdCl8MCkrTWF0aC5pbXVsKFYsRnQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoVixJdCl8MCkrKG0+Pj4xMyl8MCkrKHVlPj4+MjYpfDAsdWUmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKGl0LGd0KSxtPShtPU1hdGguaW11bChpdCxtdCkpK01hdGguaW11bChvdCxn'@; put 'dCl8MCxnPU1hdGguaW11bChvdCxtdCksYz1jK01hdGguaW11bChHLFN0KXwwLG09KG09bStNYXRoLmltdWwoRyxPdCl8MCkrTWF0aC5pbXVsKGV0LFN0KXwwLGc9ZytNYXRoLmltdWwoZXQsT3QpfDAsYz1jK01hdGguaW11bCh0dCxSdCl8MCxtPShtPW0rTWF0aC5pbXVsKHR0LE50KXwwKStN'@; put 'YXRoLmltdWwoVyxSdCl8MCxnPWcrTWF0aC5pbXVsKFcsTnQpfDAsYz1jK01hdGguaW11bChYLEx0KXwwLG09KG09bStNYXRoLmltdWwoWCx6dCl8MCkrTWF0aC5pbXVsKEssTHQpfDAsZz1nK01hdGguaW11bChLLHp0KXwwLGM9YytNYXRoLmltdWwoRixCdCl8MCxtPShtPW0rTWF0aC5pbXVs'@; put 'KEYsUHQpfDApK01hdGguaW11bChxLEJ0KXwwLGc9ZytNYXRoLmltdWwocSxQdCl8MCxjPWMrTWF0aC5pbXVsKEgsRnQpfDAsbT0obT1tK01hdGguaW11bChILEl0KXwwKStNYXRoLmltdWwoVCxGdCl8MCxnPWcrTWF0aC5pbXVsKFQsSXQpfDA7dmFyIGRlPShPKyhjPWMrTWF0aC5pbXVsKFUs'@; put 'VXQpfDApfDApKygoODE5MSYobT0obT1tK01hdGguaW11bChVLEopfDApK01hdGguaW11bChWLFV0KXwwKSk8PDEzKXwwO089KChnPWcrTWF0aC5pbXVsKFYsSil8MCkrKG0+Pj4xMyl8MCkrKGRlPj4+MjYpfDAsZGUmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKGZ0LGd0KSxtPShtPU1hdGguaW11'@; put 'bChmdCxtdCkpK01hdGguaW11bChwdCxndCl8MCxnPU1hdGguaW11bChwdCxtdCksYz1jK01hdGguaW11bChpdCxTdCl8MCxtPShtPW0rTWF0aC5pbXVsKGl0LE90KXwwKStNYXRoLmltdWwob3QsU3QpfDAsZz1nK01hdGguaW11bChvdCxPdCl8MCxjPWMrTWF0aC5pbXVsKEcsUnQpfDAsbT0o'@; put 'bT1tK01hdGguaW11bChHLE50KXwwKStNYXRoLmltdWwoZXQsUnQpfDAsZz1nK01hdGguaW11bChldCxOdCl8MCxjPWMrTWF0aC5pbXVsKHR0LEx0KXwwLG09KG09bStNYXRoLmltdWwodHQsenQpfDApK01hdGguaW11bChXLEx0KXwwLGc9ZytNYXRoLmltdWwoVyx6dCl8MCxjPWMrTWF0aC5p'@; put 'bXVsKFgsQnQpfDAsbT0obT1tK01hdGguaW11bChYLFB0KXwwKStNYXRoLmltdWwoSyxCdCl8MCxnPWcrTWF0aC5pbXVsKEssUHQpfDAsYz1jK01hdGguaW11bChGLEZ0KXwwLG09KG09bStNYXRoLmltdWwoRixJdCl8MCkrTWF0aC5pbXVsKHEsRnQpfDAsZz1nK01hdGguaW11bChxLEl0KXww'@; put 'LGM9YytNYXRoLmltdWwoSCxVdCl8MCxtPShtPW0rTWF0aC5pbXVsKEgsSil8MCkrTWF0aC5pbXVsKFQsVXQpfDAsZz1nK01hdGguaW11bChULEopfDA7dmFyIGxlPShPKyhjPWMrTWF0aC5pbXVsKFUsbHQpfDApfDApKygoODE5MSYobT0obT1tK01hdGguaW11bChVLGR0KXwwKStNYXRoLmlt'@; put 'dWwoVixsdCl8MCkpPDwxMyl8MDtPPSgoZz1nK01hdGguaW11bChWLGR0KXwwKSsobT4+PjEzKXwwKSsobGU+Pj4yNil8MCxsZSY9NjcxMDg4NjMsYz1NYXRoLmltdWwoeXQsZ3QpLG09KG09TWF0aC5pbXVsKHl0LG10KSkrTWF0aC5pbXVsKHd0LGd0KXwwLGc9TWF0aC5pbXVsKHd0LG10KSxj'@; put 'PWMrTWF0aC5pbXVsKGZ0LFN0KXwwLG09KG09bStNYXRoLmltdWwoZnQsT3QpfDApK01hdGguaW11bChwdCxTdCl8MCxnPWcrTWF0aC5pbXVsKHB0LE90KXwwLGM9YytNYXRoLmltdWwoaXQsUnQpfDAsbT0obT1tK01hdGguaW11bChpdCxOdCl8MCkrTWF0aC5pbXVsKG90LFJ0KXwwLGc9ZytN'@; put 'YXRoLmltdWwob3QsTnQpfDAsYz1jK01hdGguaW11bChHLEx0KXwwLG09KG09bStNYXRoLmltdWwoRyx6dCl8MCkrTWF0aC5pbXVsKGV0LEx0KXwwLGc9ZytNYXRoLmltdWwoZXQsenQpfDAsYz1jK01hdGguaW11bCh0dCxCdCl8MCxtPShtPW0rTWF0aC5pbXVsKHR0LFB0KXwwKStNYXRoLmlt'@; put 'dWwoVyxCdCl8MCxnPWcrTWF0aC5pbXVsKFcsUHQpfDAsYz1jK01hdGguaW11bChYLEZ0KXwwLG09KG09bStNYXRoLmltdWwoWCxJdCl8MCkrTWF0aC5pbXVsKEssRnQpfDAsZz1nK01hdGguaW11bChLLEl0KXwwLGM9YytNYXRoLmltdWwoRixVdCl8MCxtPShtPW0rTWF0aC5pbXVsKEYsSil8'@; put 'MCkrTWF0aC5pbXVsKHEsVXQpfDAsZz1nK01hdGguaW11bChxLEopfDAsYz1jK01hdGguaW11bChILGx0KXwwLG09KG09bStNYXRoLmltdWwoSCxkdCl8MCkrTWF0aC5pbXVsKFQsbHQpfDAsZz1nK01hdGguaW11bChULGR0KXwwO3ZhciBmZT0oTysoYz1jK01hdGguaW11bChVLHZ0KXwwKXww'@; put 'KSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwoVSxrdCl8MCkrTWF0aC5pbXVsKFYsdnQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoVixrdCl8MCkrKG0+Pj4xMyl8MCkrKGZlPj4+MjYpfDAsZmUmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKEV0LGd0KSxtPShtPU1hdGguaW11bChFdCxt'@; put 'dCkpK01hdGguaW11bChfdCxndCl8MCxnPU1hdGguaW11bChfdCxtdCksYz1jK01hdGguaW11bCh5dCxTdCl8MCxtPShtPW0rTWF0aC5pbXVsKHl0LE90KXwwKStNYXRoLmltdWwod3QsU3QpfDAsZz1nK01hdGguaW11bCh3dCxPdCl8MCxjPWMrTWF0aC5pbXVsKGZ0LFJ0KXwwLG09KG09bStN'@; put 'YXRoLmltdWwoZnQsTnQpfDApK01hdGguaW11bChwdCxSdCl8MCxnPWcrTWF0aC5pbXVsKHB0LE50KXwwLGM9YytNYXRoLmltdWwoaXQsTHQpfDAsbT0obT1tK01hdGguaW11bChpdCx6dCl8MCkrTWF0aC5pbXVsKG90LEx0KXwwLGc9ZytNYXRoLmltdWwob3QsenQpfDAsYz1jK01hdGguaW11'@; put 'bChHLEJ0KXwwLG09KG09bStNYXRoLmltdWwoRyxQdCl8MCkrTWF0aC5pbXVsKGV0LEJ0KXwwLGc9ZytNYXRoLmltdWwoZXQsUHQpfDAsYz1jK01hdGguaW11bCh0dCxGdCl8MCxtPShtPW0rTWF0aC5pbXVsKHR0LEl0KXwwKStNYXRoLmltdWwoVyxGdCl8MCxnPWcrTWF0aC5pbXVsKFcsSXQp'@; put 'fDAsYz1jK01hdGguaW11bChYLFV0KXwwLG09KG09bStNYXRoLmltdWwoWCxKKXwwKStNYXRoLmltdWwoSyxVdCl8MCxnPWcrTWF0aC5pbXVsKEssSil8MCxjPWMrTWF0aC5pbXVsKEYsbHQpfDAsbT0obT1tK01hdGguaW11bChGLGR0KXwwKStNYXRoLmltdWwocSxsdCl8MCxnPWcrTWF0aC5p'@; put 'bXVsKHEsZHQpfDAsYz1jK01hdGguaW11bChILHZ0KXwwLG09KG09bStNYXRoLmltdWwoSCxrdCl8MCkrTWF0aC5pbXVsKFQsdnQpfDAsZz1nK01hdGguaW11bChULGt0KXwwO3ZhciBaPShPKyhjPWMrTWF0aC5pbXVsKFUsanQpfDApfDApKygoODE5MSYobT0obT1tK01hdGguaW11bChVLHh0'@; put 'KXwwKStNYXRoLmltdWwoVixqdCl8MCkpPDwxMyl8MDtPPSgoZz1nK01hdGguaW11bChWLHh0KXwwKSsobT4+PjEzKXwwKSsoWj4+PjI2KXwwLFomPTY3MTA4ODYzLGM9TWF0aC5pbXVsKEV0LFN0KSxtPShtPU1hdGguaW11bChFdCxPdCkpK01hdGguaW11bChfdCxTdCl8MCxnPU1hdGguaW11'@; put 'bChfdCxPdCksYz1jK01hdGguaW11bCh5dCxSdCl8MCxtPShtPW0rTWF0aC5pbXVsKHl0LE50KXwwKStNYXRoLmltdWwod3QsUnQpfDAsZz1nK01hdGguaW11bCh3dCxOdCl8MCxjPWMrTWF0aC5pbXVsKGZ0LEx0KXwwLG09KG09bStNYXRoLmltdWwoZnQsenQpfDApK01hdGguaW11bChwdCxM'@; put 'dCl8MCxnPWcrTWF0aC5pbXVsKHB0LHp0KXwwLGM9YytNYXRoLmltdWwoaXQsQnQpfDAsbT0obT1tK01hdGguaW11bChpdCxQdCl8MCkrTWF0aC5pbXVsKG90LEJ0KXwwLGc9ZytNYXRoLmltdWwob3QsUHQpfDAsYz1jK01hdGguaW11bChHLEZ0KXwwLG09KG09bStNYXRoLmltdWwoRyxJdCl8'@; put 'MCkrTWF0aC5pbXVsKGV0LEZ0KXwwLGc9ZytNYXRoLmltdWwoZXQsSXQpfDAsYz1jK01hdGguaW11bCh0dCxVdCl8MCxtPShtPW0rTWF0aC5pbXVsKHR0LEopfDApK01hdGguaW11bChXLFV0KXwwLGc9ZytNYXRoLmltdWwoVyxKKXwwLGM9YytNYXRoLmltdWwoWCxsdCl8MCxtPShtPW0rTWF0'@; put 'aC5pbXVsKFgsZHQpfDApK01hdGguaW11bChLLGx0KXwwLGc9ZytNYXRoLmltdWwoSyxkdCl8MCxjPWMrTWF0aC5pbXVsKEYsdnQpfDAsbT0obT1tK01hdGguaW11bChGLGt0KXwwKStNYXRoLmltdWwocSx2dCl8MCxnPWcrTWF0aC5pbXVsKHEsa3QpfDA7dmFyIHN0PShPKyhjPWMrTWF0aC5p'@; put 'bXVsKEgsanQpfDApfDApKygoODE5MSYobT0obT1tK01hdGguaW11bChILHh0KXwwKStNYXRoLmltdWwoVCxqdCl8MCkpPDwxMyl8MDtPPSgoZz1nK01hdGguaW11bChULHh0KXwwKSsobT4+PjEzKXwwKSsoc3Q+Pj4yNil8MCxzdCY9NjcxMDg4NjMsYz1NYXRoLmltdWwoRXQsUnQpLG09KG09'@; put 'TWF0aC5pbXVsKEV0LE50KSkrTWF0aC5pbXVsKF90LFJ0KXwwLGc9TWF0aC5pbXVsKF90LE50KSxjPWMrTWF0aC5pbXVsKHl0LEx0KXwwLG09KG09bStNYXRoLmltdWwoeXQsenQpfDApK01hdGguaW11bCh3dCxMdCl8MCxnPWcrTWF0aC5pbXVsKHd0LHp0KXwwLGM9YytNYXRoLmltdWwoZnQs'@; put 'QnQpfDAsbT0obT1tK01hdGguaW11bChmdCxQdCl8MCkrTWF0aC5pbXVsKHB0LEJ0KXwwLGc9ZytNYXRoLmltdWwocHQsUHQpfDAsYz1jK01hdGguaW11bChpdCxGdCl8MCxtPShtPW0rTWF0aC5pbXVsKGl0LEl0KXwwKStNYXRoLmltdWwob3QsRnQpfDAsZz1nK01hdGguaW11bChvdCxJdCl8'@; put 'MCxjPWMrTWF0aC5pbXVsKEcsVXQpfDAsbT0obT1tK01hdGguaW11bChHLEopfDApK01hdGguaW11bChldCxVdCl8MCxnPWcrTWF0aC5pbXVsKGV0LEopfDAsYz1jK01hdGguaW11bCh0dCxsdCl8MCxtPShtPW0rTWF0aC5pbXVsKHR0LGR0KXwwKStNYXRoLmltdWwoVyxsdCl8MCxnPWcrTWF0'@; put 'aC5pbXVsKFcsZHQpfDAsYz1jK01hdGguaW11bChYLHZ0KXwwLG09KG09bStNYXRoLmltdWwoWCxrdCl8MCkrTWF0aC5pbXVsKEssdnQpfDAsZz1nK01hdGguaW11bChLLGt0KXwwO3ZhciBjdD0oTysoYz1jK01hdGguaW11bChGLGp0KXwwKXwwKSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwo'@; put 'Rix4dCl8MCkrTWF0aC5pbXVsKHEsanQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwocSx4dCl8MCkrKG0+Pj4xMyl8MCkrKGN0Pj4+MjYpfDAsY3QmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKEV0LEx0KSxtPShtPU1hdGguaW11bChFdCx6dCkpK01hdGguaW11bChfdCxMdCl8MCxnPU1h'@; put 'dGguaW11bChfdCx6dCksYz1jK01hdGguaW11bCh5dCxCdCl8MCxtPShtPW0rTWF0aC5pbXVsKHl0LFB0KXwwKStNYXRoLmltdWwod3QsQnQpfDAsZz1nK01hdGguaW11bCh3dCxQdCl8MCxjPWMrTWF0aC5pbXVsKGZ0LEZ0KXwwLG09KG09bStNYXRoLmltdWwoZnQsSXQpfDApK01hdGguaW11'@; put 'bChwdCxGdCl8MCxnPWcrTWF0aC5pbXVsKHB0LEl0KXwwLGM9YytNYXRoLmltdWwoaXQsVXQpfDAsbT0obT1tK01hdGguaW11bChpdCxKKXwwKStNYXRoLmltdWwob3QsVXQpfDAsZz1nK01hdGguaW11bChvdCxKKXwwLGM9YytNYXRoLmltdWwoRyxsdCl8MCxtPShtPW0rTWF0aC5pbXVsKEcs'@; put 'ZHQpfDApK01hdGguaW11bChldCxsdCl8MCxnPWcrTWF0aC5pbXVsKGV0LGR0KXwwLGM9YytNYXRoLmltdWwodHQsdnQpfDAsbT0obT1tK01hdGguaW11bCh0dCxrdCl8MCkrTWF0aC5pbXVsKFcsdnQpfDAsZz1nK01hdGguaW11bChXLGt0KXwwO3ZhciB1dD0oTysoYz1jK01hdGguaW11bChY'@; put 'LGp0KXwwKXwwKSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwoWCx4dCl8MCkrTWF0aC5pbXVsKEssanQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoSyx4dCl8MCkrKG0+Pj4xMyl8MCkrKHV0Pj4+MjYpfDAsdXQmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKEV0LEJ0KSxtPShtPU1hdGgu'@; put 'aW11bChFdCxQdCkpK01hdGguaW11bChfdCxCdCl8MCxnPU1hdGguaW11bChfdCxQdCksYz1jK01hdGguaW11bCh5dCxGdCl8MCxtPShtPW0rTWF0aC5pbXVsKHl0LEl0KXwwKStNYXRoLmltdWwod3QsRnQpfDAsZz1nK01hdGguaW11bCh3dCxJdCl8MCxjPWMrTWF0aC5pbXVsKGZ0LFV0KXww'@; put 'LG09KG09bStNYXRoLmltdWwoZnQsSil8MCkrTWF0aC5pbXVsKHB0LFV0KXwwLGc9ZytNYXRoLmltdWwocHQsSil8MCxjPWMrTWF0aC5pbXVsKGl0LGx0KXwwLG09KG09bStNYXRoLmltdWwoaXQsZHQpfDApK01hdGguaW11bChvdCxsdCl8MCxnPWcrTWF0aC5pbXVsKG90LGR0KXwwLGM9YytN'@; put 'YXRoLmltdWwoRyx2dCl8MCxtPShtPW0rTWF0aC5pbXVsKEcsa3QpfDApK01hdGguaW11bChldCx2dCl8MCxnPWcrTWF0aC5pbXVsKGV0LGt0KXwwO3ZhciBidD0oTysoYz1jK01hdGguaW11bCh0dCxqdCl8MCl8MCkrKCg4MTkxJihtPShtPW0rTWF0aC5pbXVsKHR0LHh0KXwwKStNYXRoLmlt'@; put 'dWwoVyxqdCl8MCkpPDwxMyl8MDtPPSgoZz1nK01hdGguaW11bChXLHh0KXwwKSsobT4+PjEzKXwwKSsoYnQ+Pj4yNil8MCxidCY9NjcxMDg4NjMsYz1NYXRoLmltdWwoRXQsRnQpLG09KG09TWF0aC5pbXVsKEV0LEl0KSkrTWF0aC5pbXVsKF90LEZ0KXwwLGc9TWF0aC5pbXVsKF90LEl0KSxj'@; put 'PWMrTWF0aC5pbXVsKHl0LFV0KXwwLG09KG09bStNYXRoLmltdWwoeXQsSil8MCkrTWF0aC5pbXVsKHd0LFV0KXwwLGc9ZytNYXRoLmltdWwod3QsSil8MCxjPWMrTWF0aC5pbXVsKGZ0LGx0KXwwLG09KG09bStNYXRoLmltdWwoZnQsZHQpfDApK01hdGguaW11bChwdCxsdCl8MCxnPWcrTWF0'@; put 'aC5pbXVsKHB0LGR0KXwwLGM9YytNYXRoLmltdWwoaXQsdnQpfDAsbT0obT1tK01hdGguaW11bChpdCxrdCl8MCkrTWF0aC5pbXVsKG90LHZ0KXwwLGc9ZytNYXRoLmltdWwob3Qsa3QpfDA7dmFyIEN0PShPKyhjPWMrTWF0aC5pbXVsKEcsanQpfDApfDApKygoODE5MSYobT0obT1tK01hdGgu'@; put 'aW11bChHLHh0KXwwKStNYXRoLmltdWwoZXQsanQpfDApKTw8MTMpfDA7Tz0oKGc9ZytNYXRoLmltdWwoZXQseHQpfDApKyhtPj4+MTMpfDApKyhDdD4+PjI2KXwwLEN0Jj02NzEwODg2MyxjPU1hdGguaW11bChFdCxVdCksbT0obT1NYXRoLmltdWwoRXQsSikpK01hdGguaW11bChfdCxVdCl8'@; put 'MCxnPU1hdGguaW11bChfdCxKKSxjPWMrTWF0aC5pbXVsKHl0LGx0KXwwLG09KG09bStNYXRoLmltdWwoeXQsZHQpfDApK01hdGguaW11bCh3dCxsdCl8MCxnPWcrTWF0aC5pbXVsKHd0LGR0KXwwLGM9YytNYXRoLmltdWwoZnQsdnQpfDAsbT0obT1tK01hdGguaW11bChmdCxrdCl8MCkrTWF0'@; put 'aC5pbXVsKHB0LHZ0KXwwLGc9ZytNYXRoLmltdWwocHQsa3QpfDA7dmFyIE10PShPKyhjPWMrTWF0aC5pbXVsKGl0LGp0KXwwKXwwKSsoKDgxOTEmKG09KG09bStNYXRoLmltdWwoaXQseHQpfDApK01hdGguaW11bChvdCxqdCl8MCkpPDwxMyl8MDtPPSgoZz1nK01hdGguaW11bChvdCx4dCl8'@; put 'MCkrKG0+Pj4xMyl8MCkrKE10Pj4+MjYpfDAsTXQmPTY3MTA4ODYzLGM9TWF0aC5pbXVsKEV0LGx0KSxtPShtPU1hdGguaW11bChFdCxkdCkpK01hdGguaW11bChfdCxsdCl8MCxnPU1hdGguaW11bChfdCxkdCksYz1jK01hdGguaW11bCh5dCx2dCl8MCxtPShtPW0rTWF0aC5pbXVsKHl0LGt0'@; put 'KXwwKStNYXRoLmltdWwod3QsdnQpfDAsZz1nK01hdGguaW11bCh3dCxrdCl8MDt2YXIgS3Q9KE8rKGM9YytNYXRoLmltdWwoZnQsanQpfDApfDApKygoODE5MSYobT0obT1tK01hdGguaW11bChmdCx4dCl8MCkrTWF0aC5pbXVsKHB0LGp0KXwwKSk8PDEzKXwwO089KChnPWcrTWF0aC5pbXVs'@; put 'KHB0LHh0KXwwKSsobT4+PjEzKXwwKSsoS3Q+Pj4yNil8MCxLdCY9NjcxMDg4NjMsYz1NYXRoLmltdWwoRXQsdnQpLG09KG09TWF0aC5pbXVsKEV0LGt0KSkrTWF0aC5pbXVsKF90LHZ0KXwwLGc9TWF0aC5pbXVsKF90LGt0KTt2YXIgJHQ9KE8rKGM9YytNYXRoLmltdWwoeXQsanQpfDApfDAp'@; put 'KygoODE5MSYobT0obT1tK01hdGguaW11bCh5dCx4dCl8MCkrTWF0aC5pbXVsKHd0LGp0KXwwKSk8PDEzKXwwO089KChnPWcrTWF0aC5pbXVsKHd0LHh0KXwwKSsobT4+PjEzKXwwKSsoJHQ+Pj4yNil8MCwkdCY9NjcxMDg4NjM7dmFyIER0PShPKyhjPU1hdGguaW11bChFdCxqdCkpfDApKygo'@; put 'ODE5MSYobT0obT1NYXRoLmltdWwoRXQseHQpKStNYXRoLmltdWwoX3QsanQpfDApKTw8MTMpfDA7cmV0dXJuIE89KChnPU1hdGguaW11bChfdCx4dCkpKyhtPj4+MTMpfDApKyhEdD4+PjI2KXwwLER0Jj02NzEwODg2MyxrWzBdPVF0LGtbMV09V3Qsa1syXT1YdCxrWzNdPXJlLGtbNF09aWUs'@; put 'a1s1XT11ZSxrWzZdPWRlLGtbN109bGUsa1s4XT1mZSxrWzldPVosa1sxMF09c3Qsa1sxMV09Y3Qsa1sxMl09dXQsa1sxM109YnQsa1sxNF09Q3Qsa1sxNV09TXQsa1sxNl09S3Qsa1sxN109JHQsa1sxOF09RHQsMCE9PU8mJihrWzE5XT1PLGoubGVuZ3RoKyspLGp9O2Z1bmN0aW9uIHYoeCxN'@; put 'LGope3JldHVybihuZXcgXykubXVscCh4LE0sail9ZnVuY3Rpb24gXyh4LE0pe3RoaXMueD14LHRoaXMueT1NfU1hdGguaW11bHx8KGQ9cCksdC5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeCxNKXt2YXIgaj10aGlzLmxlbmd0aCt4Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYm'@; put 'MTA9PT14Lmxlbmd0aD9kKHRoaXMseCxNKTpqPDYzP3AodGhpcyx4LE0pOmo8MTAyND9mdW5jdGlvbihjLG0sZyl7Zy5uZWdhdGl2ZT1tLm5lZ2F0aXZlXmMubmVnYXRpdmUsZy5sZW5ndGg9Yy5sZW5ndGgrbS5sZW5ndGg7Zm9yKHZhciB5PTAsdz0wLGs9MDtrPGcubGVuZ3RoLTE7aysrKXt2'@; put 'YXIgTz13O3c9MDtmb3IodmFyIHo9NjcxMDg4NjMmeSxVPU1hdGgubWluKGssbS5sZW5ndGgtMSksVj1NYXRoLm1heCgwLGstYy5sZW5ndGgrMSk7Vjw9VTtWKyspe3ZhciBIPSgwfGMud29yZHNbay1WXSkqKDB8bS53b3Jkc1tWXSksVD02NzEwODg2MyZIO3o9NjcxMDg4NjMmKFQ9VCt6fDAp'@; put 'LHcrPShPPShPPU8rKEgvNjcxMDg4NjR8MCl8MCkrKFQ+Pj4yNil8MCk+Pj4yNixPJj02NzEwODg2M31nLndvcmRzW2tdPXoseT1PLE89d31yZXR1cm4gMCE9PXk/Zy53b3Jkc1trXT15OmcubGVuZ3RoLS0sZy5zdHJpcCgpfSh0aGlzLHgsTSk6dih0aGlzLHgsTSl9LF8ucHJvdG90eXBlLm1h'@; put 'a2VSQlQ9ZnVuY3Rpb24oeCl7Zm9yKHZhciBNPW5ldyBBcnJheSh4KSxqPXQucHJvdG90eXBlLl9jb3VudEJpdHMoeCktMSxjPTA7Yzx4O2MrKylNW2NdPXRoaXMucmV2QmluKGMsaix4KTtyZXR1cm4gTX0sXy5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHgsTSxqKXtpZigwPT09eHx8eD09'@; put 'PWotMSlyZXR1cm4geDtmb3IodmFyIGM9MCxtPTA7bTxNO20rKyljfD0oMSZ4KTw8TS1tLTEseD4+PTE7cmV0dXJuIGN9LF8ucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oeCxNLGosYyxtLGcpe2Zvcih2YXIgeT0wO3k8Zzt5KyspY1t5XT1NW3hbeV1dLG1beV09alt4W3ldXX0sXy5wcm90'@; put 'b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHgsTSxqLGMsbSxnKXt0aGlzLnBlcm11dGUoZyx4LE0saixjLG0pO2Zvcih2YXIgeT0xO3k8bTt5PDw9MSlmb3IodmFyIHc9eTw8MSxrPU1hdGguY29zKDIqTWF0aC5QSS93KSxPPU1hdGguc2luKDIqTWF0aC5QSS93KSx6PTA7ejxtO3orPXcpZm9y'@; put 'KHZhciBVPWssVj1PLFI9MDtSPHk7UisrKXt2YXIgSD1qW3orUl0sVD1jW3orUl0sQz1qW3orUit5XSxGPWNbeitSK3ldLHE9VSpDLVYqRjtGPVUqRitWKkMsalt6K1JdPUgrKEM9cSksY1t6K1JdPVQrRixqW3orUit5XT1ILUMsY1t6K1IreV09VC1GLFIhPT13JiYocT1rKlUtTypWLFY9aypW'@; put 'K08qVSxVPXEpfX0sXy5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oeCxNKXt2YXIgaj0xfE1hdGgubWF4KE0seCksYz0xJmosbT0wO2ZvcihqPWovMnwwO2o7aj4+Pj0xKW0rKztyZXR1cm4gMTw8bSsxK2N9LF8ucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbih4LE0sail7aWYo'@; put 'IShqPD0xKSlmb3IodmFyIGM9MDtjPGovMjtjKyspe3ZhciBtPXhbY107eFtjXT14W2otYy0xXSx4W2otYy0xXT1tLG09TVtjXSxNW2NdPS1NW2otYy0xXSxNW2otYy0xXT0tbX19LF8ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih4LE0pe2Zvcih2YXIgaj0wLGM9MDtjPE0vMjtj'@; put 'Kyspe3ZhciBtPTgxOTIqTWF0aC5yb3VuZCh4WzIqYysxXS9NKStNYXRoLnJvdW5kKHhbMipjXS9NKStqO3hbY109NjcxMDg4NjMmbSxqPW08NjcxMDg4NjQ/MDptLzY3MTA4ODY0fDB9cmV0dXJuIHh9LF8ucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oeCxNLGosYyl7Zm9yKHZhciBt'@; put 'PTAsZz0wO2c8TTtnKyspalsyKmddPTgxOTEmKG0rPTB8eFtnXSksalsyKmcrMV09ODE5MSYobT4+Pj0xMyksbT4+Pj0xMztmb3IoZz0yKk07ZzxjOysrZylqW2ddPTA7bygwPT09bSksbyghKC04MTkyJm0pKX0sXy5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih4KXtmb3IodmFyIE09bmV3IEFy'@; put 'cmF5KHgpLGo9MDtqPHg7aisrKU1bal09MDtyZXR1cm4gTX0sXy5wcm90b3R5cGUubXVscD1mdW5jdGlvbih4LE0sail7dmFyIGM9Mip0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLE0ubGVuZ3RoKSxtPXRoaXMubWFrZVJCVChjKSxnPXRoaXMuc3R1YihjKSx5PW5ldyBBcnJheShjKSx3PW5l'@; put 'dyBBcnJheShjKSxrPW5ldyBBcnJheShjKSxPPW5ldyBBcnJheShjKSx6PW5ldyBBcnJheShjKSxVPW5ldyBBcnJheShjKSxWPWoud29yZHM7Vi5sZW5ndGg9Yyx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCx5LGMpLHRoaXMuY29udmVydDEzYihNLndvcmRzLE0ubGVuZ3RoLE8s'@; put 'YyksdGhpcy50cmFuc2Zvcm0oeSxnLHcsayxjLG0pLHRoaXMudHJhbnNmb3JtKE8sZyx6LFUsYyxtKTtmb3IodmFyIFI9MDtSPGM7UisrKXt2YXIgSD13W1JdKnpbUl0ta1tSXSpVW1JdO2tbUl09d1tSXSpVW1JdK2tbUl0qeltSXSx3W1JdPUh9cmV0dXJuIHRoaXMuY29uanVnYXRlKHcsayxj'@; put 'KSx0aGlzLnRyYW5zZm9ybSh3LGssVixnLGMsbSksdGhpcy5jb25qdWdhdGUoVixnLGMpLHRoaXMubm9ybWFsaXplMTNiKFYsYyksai5uZWdhdGl2ZT14Lm5lZ2F0aXZlXk0ubmVnYXRpdmUsai5sZW5ndGg9eC5sZW5ndGgrTS5sZW5ndGgsai5zdHJpcCgpfSx0LnByb3RvdHlwZS5tdWw9ZnVu'@; put 'Y3Rpb24oeCl7dmFyIE09bmV3IHQobnVsbCk7cmV0dXJuIE0ud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3gubGVuZ3RoKSx0aGlzLm11bFRvKHgsTSl9LHQucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oeCl7dmFyIE09bmV3IHQobnVsbCk7cmV0dXJuIE0ud29yZHM9bmV3IEFycmF5KHRo'@; put 'aXMubGVuZ3RoK3gubGVuZ3RoKSx2KHRoaXMseCxNKX0sdC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHgsdGhpcyl9LHQucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHgpe28oIm51bWJlciI9PXR5cGVvZiB4KSxvKHg8NjcxMDg4NjQpO2Zv'@; put 'cih2YXIgTT0wLGo9MDtqPHRoaXMubGVuZ3RoO2orKyl7dmFyIGM9KDB8dGhpcy53b3Jkc1tqXSkqeCxtPSg2NzEwODg2MyZjKSsoNjcxMDg4NjMmTSk7TT4+PTI2LE0rPWMvNjcxMDg4NjR8MCxNKz1tPj4+MjYsdGhpcy53b3Jkc1tqXT02NzEwODg2MyZtfXJldHVybiAwIT09TSYmKHRoaXMu'@; put 'd29yZHNbal09TSx0aGlzLmxlbmd0aCsrKSx0aGlzfSx0LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeCl9LHQucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sdC5wcm90b3R5cGUuaXNxcj1mdW5jdGlv'@; put 'bigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sdC5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgpe3ZhciBNPWZ1bmN0aW9uKGcpe2Zvcih2YXIgeT1uZXcgQXJyYXkoZy5iaXRMZW5ndGgoKSksdz0wO3c8eS5sZW5ndGg7dysrKXt2YXIgTz13JTI2O3lbd109KGcud29yZHNbdy8y'@; put 'NnwwXSYxPDxPKT4+Pk99cmV0dXJuIHl9KHgpO2lmKDA9PT1NLmxlbmd0aClyZXR1cm4gbmV3IHQoMSk7Zm9yKHZhciBqPXRoaXMsYz0wO2M8TS5sZW5ndGgmJjA9PT1NW2NdO2MrKyxqPWouc3FyKCkpO2lmKCsrYzxNLmxlbmd0aClmb3IodmFyIG09ai5zcXIoKTtjPE0ubGVuZ3RoO2MrKyxt'@; put 'PW0uc3FyKCkpMCE9PU1bY10mJihqPWoubXVsKG0pKTtyZXR1cm4gan0sdC5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHgpe28oIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgTSxqPXglMjYsYz0oeC1qKS8yNixtPTY3MTA4ODYzPj4+MjYtajw8MjYtajtpZigwIT09ail7dmFyIGc9'@; put 'MDtmb3IoTT0wO008dGhpcy5sZW5ndGg7TSsrKXt2YXIgeT10aGlzLndvcmRzW01dJm07dGhpcy53b3Jkc1tNXT0oMHx0aGlzLndvcmRzW01dKS15PDxqfGcsZz15Pj4+MjYtan1nJiYodGhpcy53b3Jkc1tNXT1nLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1jKXtmb3IoTT10aGlzLmxlbmd0aC0x'@; put 'O00+PTA7TS0tKXRoaXMud29yZHNbTStjXT10aGlzLndvcmRzW01dO2ZvcihNPTA7TTxjO00rKyl0aGlzLndvcmRzW01dPTA7dGhpcy5sZW5ndGgrPWN9cmV0dXJuIHRoaXMuc3RyaXAoKX0sdC5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIG8oMD09PXRoaXMubmVnYXRpdmUp'@; put 'LHRoaXMuaXVzaGxuKHgpfSx0LnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oeCxNLGope3ZhciBjO28oIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKSxjPU0/KE0tTSUyNikvMjY6MDt2YXIgbT14JTI2LGc9TWF0aC5taW4oKHgtbSkvMjYsdGhpcy5sZW5ndGgpLHk9NjcxMDg4NjNeNjcxMDg4'@; put 'NjM+Pj5tPDxtLHc9ajtpZihjLT1nLGM9TWF0aC5tYXgoMCxjKSx3KXtmb3IodmFyIGs9MDtrPGc7aysrKXcud29yZHNba109dGhpcy53b3Jkc1trXTt3Lmxlbmd0aD1nfWlmKDAhPT1nKWlmKHRoaXMubGVuZ3RoPmcpZm9yKHRoaXMubGVuZ3RoLT1nLGs9MDtrPHRoaXMubGVuZ3RoO2srKyl0'@; put 'aGlzLndvcmRzW2tdPXRoaXMud29yZHNbaytnXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBPPTA7Zm9yKGs9dGhpcy5sZW5ndGgtMTtrPj0wJiYoMCE9PU98fGs+PWMpO2stLSl7dmFyIHo9MHx0aGlzLndvcmRzW2tdO3RoaXMud29yZHNba109Tzw8MjYtbXx6Pj4+'@; put 'bSxPPXomeX1yZXR1cm4gdyYmMCE9PU8mJih3LndvcmRzW3cubGVuZ3RoKytdPU8pLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LHQucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKHgsTSxqKXtyZXR1cm4gbygwPT09dGhpcy5u'@; put 'ZWdhdGl2ZSksdGhpcy5pdXNocm4oeCxNLGopfSx0LnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oeCl9LHQucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKHgpfSx0LnByb3RvdHlwZS5zaHJu'@; put 'PWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oeCl9LHQucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHgpfSx0LnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih4KXtvKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFy'@; put 'IE09eCUyNixqPSh4LU0pLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWp8fCEodGhpcy53b3Jkc1tqXSYxPDxNKSl9LHQucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbih4KXtvKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIE09eCUyNixqPSh4LU0pLzI2O3JldHVybiBvKDA9PT10aGlz'@; put 'Lm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9aj90aGlzOigwIT09TSYmaisrLHRoaXMubGVuZ3RoPU1hdGgubWluKGosdGhpcy5sZW5ndGgpLDAhPT1NJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNe'@; put 'NjcxMDg4NjM+Pj5NPDxNKSx0aGlzLnN0cmlwKCkpfSx0LnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih4KX0sdC5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIG8oIm51bWJlciI9PXR5cGVvZiB4KSxvKHg8NjcxMDg4NjQp'@; put 'LHg8MD90aGlzLmlzdWJuKC14KTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPHg/KHRoaXMud29yZHNbMF09eC0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKHgpLHRo'@; put 'aXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbih4KX0sdC5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKHgpe3RoaXMud29yZHNbMF0rPXg7Zm9yKHZhciBNPTA7TTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tNXT49NjcxMDg4NjQ7TSsrKXRoaXMud29yZHNbTV0tPTY3MTA4ODY0LE09'@; put 'PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbTSsxXT0xOnRoaXMud29yZHNbTSsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxNKzEpLHRoaXN9LHQucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKHgpe2lmKG8oIm51bWJlciI9PXR5cGVvZiB4KSxvKHg8Njcx'@; put 'MDg4NjQpLHg8MClyZXR1cm4gdGhpcy5pYWRkbigteCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXgsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDAp'@; put 'dGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIE09MDtNPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW01dPDA7TSsrKXRoaXMud29yZHNbTV0rPTY3MTA4ODY0LHRoaXMud29yZHNbTSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx0LnBy'@; put 'b3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oeCl9LHQucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih4KX0sdC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAs'@; put 'dGhpc30sdC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LHQucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih4LE0sail7dmFyIGMsbTt0aGlzLl9leHBhbmQoeC5sZW5ndGgraik7dmFyIHk9MDtmb3IoYz0wO2M8eC5sZW5ndGg7Yysr'@; put 'KXttPSgwfHRoaXMud29yZHNbYytqXSkreTt2YXIgdz0oMHx4LndvcmRzW2NdKSpNO3k9KChtLT02NzEwODg2MyZ3KT4+MjYpLSh3LzY3MTA4ODY0fDApLHRoaXMud29yZHNbYytqXT02NzEwODg2MyZtfWZvcig7Yzx0aGlzLmxlbmd0aC1qO2MrKyl5PShtPSgwfHRoaXMud29yZHNbYytqXSkr'@; put 'eSk+PjI2LHRoaXMud29yZHNbYytqXT02NzEwODg2MyZtO2lmKDA9PT15KXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKG8oLTE9PT15KSx5PTAsYz0wO2M8dGhpcy5sZW5ndGg7YysrKXk9KG09LSgwfHRoaXMud29yZHNbY10pK3kpPj4yNix0aGlzLndvcmRzW2NdPTY3MTA4ODYzJm07cmV0dXJu'@; put 'IHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LHQucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKHgsTSl7dmFyIGosYz10aGlzLmNsb25lKCksbT14LGc9MHxtLndvcmRzW20ubGVuZ3RoLTFdOzAhPShqPTI2LXRoaXMuX2NvdW50Qml0cyhnKSkmJihtPW0udXNobG4oaiksYy5pdXNo'@; put 'bG4oaiksZz0wfG0ud29yZHNbbS5sZW5ndGgtMV0pO3ZhciB5LHc9Yy5sZW5ndGgtbS5sZW5ndGg7aWYoIm1vZCIhPT1NKXsoeT1uZXcgdChudWxsKSkubGVuZ3RoPXcrMSx5LndvcmRzPW5ldyBBcnJheSh5Lmxlbmd0aCk7Zm9yKHZhciBrPTA7azx5Lmxlbmd0aDtrKyspeS53b3Jkc1trXT0w'@; put 'fXZhciBPPWMuY2xvbmUoKS5faXNobG5zdWJtdWwobSwxLHcpOzA9PT1PLm5lZ2F0aXZlJiYoYz1PLHkmJih5LndvcmRzW3ddPTEpKTtmb3IodmFyIHo9dy0xO3o+PTA7ei0tKXt2YXIgVT02NzEwODg2NCooMHxjLndvcmRzW20ubGVuZ3RoK3pdKSsoMHxjLndvcmRzW20ubGVuZ3RoK3otMV0p'@; put 'O2ZvcihVPU1hdGgubWluKFUvZ3wwLDY3MTA4ODYzKSxjLl9pc2hsbnN1Ym11bChtLFUseik7MCE9PWMubmVnYXRpdmU7KVUtLSxjLm5lZ2F0aXZlPTAsYy5faXNobG5zdWJtdWwobSwxLHopLGMuaXNaZXJvKCl8fChjLm5lZ2F0aXZlXj0xKTt5JiYoeS53b3Jkc1t6XT1VKX1yZXR1cm4geSYm'@; put 'eS5zdHJpcCgpLGMuc3RyaXAoKSwiZGl2IiE9PU0mJjAhPT1qJiZjLml1c2hybihqKSx7ZGl2Onl8fG51bGwsbW9kOmN9fSx0LnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeCxNLGope3JldHVybiBvKCF4LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IHQoMCksbW9kOm5ldyB0'@; put 'KDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmU/KGc9dGhpcy5uZWcoKS5kaXZtb2QoeCxNKSwibW9kIiE9PU0mJihjPWcuZGl2Lm5lZygpKSwiZGl2IiE9PU0mJihtPWcubW9kLm5lZygpLGomJjAhPT1tLm5lZ2F0aXZlJiZtLmlhZGQoeCkpLHtkaXY6Yyxtb2Q6bX0pOjA9'@; put 'PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZT8oZz10aGlzLmRpdm1vZCh4Lm5lZygpLE0pLCJtb2QiIT09TSYmKGM9Zy5kaXYubmVnKCkpLHtkaXY6Yyxtb2Q6Zy5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZ4Lm5lZ2F0aXZlKT8oZz10aGlzLm5lZygpLmRpdm1vZCh4Lm5lZygpLE0p'@; put 'LCJkaXYiIT09TSYmKG09Zy5tb2QubmVnKCksaiYmMCE9PW0ubmVnYXRpdmUmJm0uaXN1Yih4KSkse2RpdjpnLmRpdixtb2Q6bX0pOngubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh4KTwwP3tkaXY6bmV3IHQoMCksbW9kOnRoaXN9OjE9PT14Lmxlbmd0aD8iZGl2Ij09PU0/e2Rpdjp0'@; put 'aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09TT97ZGl2Om51bGwsbW9kOm5ldyB0KHRoaXMubW9kbih4LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpuZXcgdCh0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHgsTSk7'@; put 'dmFyIGMsbSxnfSx0LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsImRpdiIsITEpLmRpdn0sdC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCExKS5tb2R9LHQucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24o'@; put 'eCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITApLm1vZH0sdC5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oeCl7dmFyIE09dGhpcy5kaXZtb2QoeCk7aWYoTS5tb2QuaXNaZXJvKCkpcmV0dXJuIE0uZGl2O3ZhciBqPTAhPT1NLmRpdi5uZWdhdGl2ZT9NLm1vZC5pc3ViKHgpOk0u'@; put 'bW9kLGM9eC51c2hybigxKSxtPXguYW5kbG4oMSksZz1qLmNtcChjKTtyZXR1cm4gZzwwfHwxPT09bSYmMD09PWc/TS5kaXY6MCE9PU0uZGl2Lm5lZ2F0aXZlP00uZGl2LmlzdWJuKDEpOk0uZGl2LmlhZGRuKDEpfSx0LnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHgpe28oeDw9NjcxMDg4NjMp'@; put 'O2Zvcih2YXIgTT0oMTw8MjYpJXgsaj0wLGM9dGhpcy5sZW5ndGgtMTtjPj0wO2MtLSlqPShNKmorKDB8dGhpcy53b3Jkc1tjXSkpJXg7cmV0dXJuIGp9LHQucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHgpe28oeDw9NjcxMDg4NjMpO2Zvcih2YXIgTT0wLGo9dGhpcy5sZW5ndGgtMTtqPj0w'@; put 'O2otLSl7dmFyIGM9KDB8dGhpcy53b3Jkc1tqXSkrNjcxMDg4NjQqTTt0aGlzLndvcmRzW2pdPWMveHwwLE09YyV4fXJldHVybiB0aGlzLnN0cmlwKCl9LHQucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih4KX0sdC5wcm90b3R5cGUuZWdjZD1m'@; put 'dW5jdGlvbih4KXtvKDA9PT14Lm5lZ2F0aXZlKSxvKCF4LmlzWmVybygpKTt2YXIgTT10aGlzLGo9eC5jbG9uZSgpO009MCE9PU0ubmVnYXRpdmU/TS51bW9kKHgpOk0uY2xvbmUoKTtmb3IodmFyIGM9bmV3IHQoMSksbT1uZXcgdCgwKSxnPW5ldyB0KDApLHk9bmV3IHQoMSksdz0wO00uaXNF'@; put 'dmVuKCkmJmouaXNFdmVuKCk7KU0uaXVzaHJuKDEpLGouaXVzaHJuKDEpLCsrdztmb3IodmFyIGs9ai5jbG9uZSgpLE89TS5jbG9uZSgpOyFNLmlzWmVybygpOyl7Zm9yKHZhciB6PTAsVT0xOzA9PShNLndvcmRzWzBdJlUpJiZ6PDI2OysreixVPDw9MSk7aWYoej4wKWZvcihNLml1c2hybih6'@; put 'KTt6LS0gPjA7KShjLmlzT2RkKCl8fG0uaXNPZGQoKSkmJihjLmlhZGQoayksbS5pc3ViKE8pKSxjLml1c2hybigxKSxtLml1c2hybigxKTtmb3IodmFyIFY9MCxSPTE7MD09KGoud29yZHNbMF0mUikmJlY8MjY7KytWLFI8PD0xKTtpZihWPjApZm9yKGouaXVzaHJuKFYpO1YtLSA+MDspKGcu'@; put 'aXNPZGQoKXx8eS5pc09kZCgpKSYmKGcuaWFkZChrKSx5LmlzdWIoTykpLGcuaXVzaHJuKDEpLHkuaXVzaHJuKDEpO00uY21wKGopPj0wPyhNLmlzdWIoaiksYy5pc3ViKGcpLG0uaXN1Yih5KSk6KGouaXN1YihNKSxnLmlzdWIoYykseS5pc3ViKG0pKX1yZXR1cm57YTpnLGI6eSxnY2Q6ai5p'@; put 'dXNobG4odyl9fSx0LnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oeCl7bygwPT09eC5uZWdhdGl2ZSksbygheC5pc1plcm8oKSk7dmFyIE09dGhpcyxqPXguY2xvbmUoKTtNPTAhPT1NLm5lZ2F0aXZlP00udW1vZCh4KTpNLmNsb25lKCk7Zm9yKHZhciBjLG09bmV3IHQoMSksZz1uZXcgdCgw'@; put 'KSx5PWouY2xvbmUoKTtNLmNtcG4oMSk+MCYmai5jbXBuKDEpPjA7KXtmb3IodmFyIHc9MCxrPTE7MD09KE0ud29yZHNbMF0maykmJnc8MjY7Kyt3LGs8PD0xKTtpZih3PjApZm9yKE0uaXVzaHJuKHcpO3ctLSA+MDspbS5pc09kZCgpJiZtLmlhZGQoeSksbS5pdXNocm4oMSk7Zm9yKHZhciBP'@; put 'PTAsej0xOzA9PShqLndvcmRzWzBdJnopJiZPPDI2OysrTyx6PDw9MSk7aWYoTz4wKWZvcihqLml1c2hybihPKTtPLS0gPjA7KWcuaXNPZGQoKSYmZy5pYWRkKHkpLGcuaXVzaHJuKDEpO00uY21wKGopPj0wPyhNLmlzdWIoaiksbS5pc3ViKGcpKTooai5pc3ViKE0pLGcuaXN1YihtKSl9cmV0'@; put 'dXJuKGM9MD09PU0uY21wbigxKT9tOmcpLmNtcG4oMCk8MCYmYy5pYWRkKHgpLGN9LHQucHJvdG90eXBlLmdjZD1mdW5jdGlvbih4KXtpZih0aGlzLmlzWmVybygpKXJldHVybiB4LmFicygpO2lmKHguaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIE09dGhpcy5jbG9uZSgpLGo9eC5j'@; put 'bG9uZSgpO00ubmVnYXRpdmU9MCxqLm5lZ2F0aXZlPTA7Zm9yKHZhciBjPTA7TS5pc0V2ZW4oKSYmai5pc0V2ZW4oKTtjKyspTS5pdXNocm4oMSksai5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO00uaXNFdmVuKCk7KU0uaXVzaHJuKDEpO2Zvcig7ai5pc0V2ZW4oKTspai5pdXNocm4oMSk7dmFy'@; put 'IG09TS5jbXAoaik7aWYobTwwKXt2YXIgZz1NO009aixqPWd9ZWxzZSBpZigwPT09bXx8MD09PWouY21wbigxKSlicmVhaztNLmlzdWIoail9cmV0dXJuIGouaXVzaGxuKGMpfSx0LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmVnY2QoeCkuYS51bW9kKHgpfSx0LnBy'@; put 'b3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LHQucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sdC5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud29yZHNbMF0meH0sdC5w'@; put 'cm90b3R5cGUuYmluY249ZnVuY3Rpb24oeCl7bygibnVtYmVyIj09dHlwZW9mIHgpO3ZhciBNPXglMjYsaj0oeC1NKS8yNixjPTE8PE07aWYodGhpcy5sZW5ndGg8PWopcmV0dXJuIHRoaXMuX2V4cGFuZChqKzEpLHRoaXMud29yZHNbal18PWMsdGhpcztmb3IodmFyIG09YyxnPWo7MCE9PW0m'@; put 'Jmc8dGhpcy5sZW5ndGg7ZysrKXt2YXIgeT0wfHRoaXMud29yZHNbZ107bT0oeSs9bSk+Pj4yNix0aGlzLndvcmRzW2ddPXkmPTY3MTA4ODYzfXJldHVybiAwIT09bSYmKHRoaXMud29yZHNbZ109bSx0aGlzLmxlbmd0aCsrKSx0aGlzfSx0LnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sdC5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih4KXt2YXIgTSxqPXg8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIWopcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmopcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgp'@; put 'LHRoaXMubGVuZ3RoPjEpTT0xO2Vsc2V7aiYmKHg9LXgpLG8oeDw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIGM9MHx0aGlzLndvcmRzWzBdO009Yz09PXg/MDpjPHg/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtTTpNfSx0LnByb3RvdHlwZS5jbXA9ZnVuY3Rp'@; put 'b24oeCl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgTT10aGlzLnVjbXAoeCk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LU06TX0sdC5wcm90b3R5cGUudWNt'@; put 'cD1mdW5jdGlvbih4KXtpZih0aGlzLmxlbmd0aD54Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx4Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIE09MCxqPXRoaXMubGVuZ3RoLTE7aj49MDtqLS0pe3ZhciBjPTB8dGhpcy53b3Jkc1tqXSxtPTB8eC53b3Jkc1tqXTtpZihjIT09bSl7'@; put 'YzxtP009LTE6Yz5tJiYoTT0xKTticmVha319cmV0dXJuIE19LHQucHJvdG90eXBlLmd0bj1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wbih4KX0sdC5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcCh4KX0sdC5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlv'@; put 'bih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPj0wfSx0LnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPj0wfSx0LnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcG4oeCl9LHQucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHgpe3JldHVy'@; put 'bi0xPT09dGhpcy5jbXAoeCl9LHQucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KTw9MH0sdC5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KTw9MH0sdC5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhp'@; put 'cy5jbXBuKHgpfSx0LnByb3RvdHlwZS5lcT1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wKHgpfSx0LnJlZD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3ICQoeCl9LHQucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHgpe3JldHVybiBvKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBp'@; put 'biByZWR1Y3Rpb24gY29udGV4dCIpLG8oMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIikseC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKHgpfSx0LnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5yZWQsImZyb21SZWQg'@; put 'd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sdC5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnJlZD14LHRoaXN9LHQucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKHgp'@; put 'e3JldHVybiBvKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKHgpfSx0LnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG8odGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi'@; put 'KSx0aGlzLnJlZC5hZGQodGhpcyx4KX0sdC5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbih4KXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMseCl9LHQucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbih4'@; put 'KXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLHgpfSx0LnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBvKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy'@; put 'cyIpLHRoaXMucmVkLmlzdWIodGhpcyx4KX0sdC5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKHgpe3JldHVybiBvKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMseCl9LHQucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih4'@; put 'KXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQubXVsKHRoaXMseCl9LHQucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIG8odGhpcy5yZWQsInJlZE11bCB3'@; put 'b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLmltdWwodGhpcyx4KX0sdC5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0'@; put 'aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LHQucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5p'@; put 'c3FyKHRoaXMpfSx0LnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sdC5wcm90b3R5cGUucmVkSW52bT1m'@; put 'dW5jdGlvbigpe3JldHVybiBvKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LHQucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBvKHRoaXMucmVkLCJyZWRO'@; put 'ZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSx0LnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oeCl7cmV0dXJuIG8odGhpcy5yZWQmJiF4LnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5f'@; put 'dmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyx4KX07dmFyIEE9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBJKHgsTSl7dGhpcy5uYW1lPXgsdGhpcy5wPW5ldyB0KE0sMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5r'@; put 'PW5ldyB0KDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBMKCl7SS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIp'@; put 'fWZ1bmN0aW9uIE4oKXtJLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gUCgpe0kuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm'@; put 'ZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBCKCl7SS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uICQoeCl7aWYoInN0cmluZyI9PXR5cGVvZiB4KXt2'@; put 'YXIgTT10Ll9wcmltZSh4KTt0aGlzLm09TS5wLHRoaXMucHJpbWU9TX1lbHNlIG8oeC5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT14LHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBEKHgpeyQuY2FsbCh0aGlzLHgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJp'@; put 'dExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IHQoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1p'@; put 'bnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9SS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB4PW5ldyB0KG51bGwpO3JldHVybiB4'@; put 'LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSkseH0sSS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih4KXt2YXIgTSxqPXg7ZG97dGhpcy5zcGxpdChqLHRoaXMudG1wKSxNPShqPShqPXRoaXMuaW11bEsoaikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGls'@; put 'ZShNPnRoaXMubik7dmFyIGM9TTx0aGlzLm4/LTE6ai51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1jPyhqLndvcmRzWzBdPTAsai5sZW5ndGg9MSk6Yz4wP2ouaXN1Yih0aGlzLnApOnZvaWQgMCE9PWouc3RyaXA/ai5zdHJpcCgpOmouX3N0cmlwKCksan0sSS5wcm90b3R5cGUuc3BsaXQ9ZnVu'@; put 'Y3Rpb24oeCxNKXt4Lml1c2hybih0aGlzLm4sMCxNKX0sSS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaW11bCh0aGlzLmspfSxyKEwsSSksTC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxNKXtmb3IodmFyIGo9TWF0aC5taW4oeC5sZW5ndGgsOSksYz0wO2M8ajtj'@; put 'KyspTS53b3Jkc1tjXT14LndvcmRzW2NdO2lmKE0ubGVuZ3RoPWoseC5sZW5ndGg8PTkpcmV0dXJuIHgud29yZHNbMF09MCx2b2lkKHgubGVuZ3RoPTEpO3ZhciBtPXgud29yZHNbOV07Zm9yKE0ud29yZHNbTS5sZW5ndGgrK109NDE5NDMwMyZtLGM9MTA7Yzx4Lmxlbmd0aDtjKyspe3ZhciBn'@; put 'PTB8eC53b3Jkc1tjXTt4LndvcmRzW2MtMTBdPSg0MTk0MzAzJmcpPDw0fG0+Pj4yMixtPWd9eC53b3Jkc1tjLTEwXT1tPj4+PTIyLHgubGVuZ3RoLT0wPT09bSYmeC5sZW5ndGg+MTA/MTA6OX0sTC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7eC53b3Jkc1t4Lmxlbmd0aF09MCx4Lndv'@; put 'cmRzW3gubGVuZ3RoKzFdPTAseC5sZW5ndGgrPTI7Zm9yKHZhciBNPTAsaj0wO2o8eC5sZW5ndGg7aisrKXt2YXIgYz0wfHgud29yZHNbal07eC53b3Jkc1tqXT02NzEwODg2MyYoTSs9OTc3KmMpLE09NjQqYysoTS82NzEwODg2NHwwKX1yZXR1cm4gMD09PXgud29yZHNbeC5sZW5ndGgtMV0m'@; put 'Jih4Lmxlbmd0aC0tLDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiZ4Lmxlbmd0aC0tKSx4fSxyKE4sSSkscihQLEkpLHIoQixJKSxCLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtmb3IodmFyIE09MCxqPTA7ajx4Lmxlbmd0aDtqKyspe3ZhciBjPTE5KigwfHgud29yZHNbal0pK00sbT02'@; put 'NzEwODg2MyZjO2M+Pj49MjYseC53b3Jkc1tqXT1tLE09Y31yZXR1cm4gMCE9PU0mJih4LndvcmRzW3gubGVuZ3RoKytdPU0pLHh9LHQuX3ByaW1lPWZ1bmN0aW9uKHgpe2lmKEFbeF0pcmV0dXJuIEFbeF07dmFyIE07aWYoImsyNTYiPT09eClNPW5ldyBMO2Vsc2UgaWYoInAyMjQiPT09eClN'@; put 'PW5ldyBOO2Vsc2UgaWYoInAxOTIiPT09eClNPW5ldyBQO2Vsc2V7aWYoInAyNTUxOSIhPT14KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK3gpO009bmV3IEJ9cmV0dXJuIEFbeF09TSxNfSwkLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih4KXtvKDA9PT14Lm5lZ2F0aXZl'@; put 'LCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG8oeC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sJC5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oeCxNKXtvKDA9PSh4Lm5lZ2F0aXZlfE0ubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBv'@; put 'c2l0aXZlcyIpLG8oeC5yZWQmJngucmVkPT09TS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sJC5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeCkuX2ZvcmNlUmVkKHRoaXMpOngudW1vZCh0aGlz'@; put 'Lm0pLl9mb3JjZVJlZCh0aGlzKX0sJC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHgpe3JldHVybiB4LmlzWmVybygpP3guY2xvbmUoKTp0aGlzLm0uc3ViKHgpLl9mb3JjZVJlZCh0aGlzKX0sJC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgsTSl7dGhpcy5fdmVyaWZ5Mih4LE0pO3ZhciBqPXgu'@; put 'YWRkKE0pO3JldHVybiBqLmNtcCh0aGlzLm0pPj0wJiZqLmlzdWIodGhpcy5tKSxqLl9mb3JjZVJlZCh0aGlzKX0sJC5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4LE0pe3RoaXMuX3ZlcmlmeTIoeCxNKTt2YXIgaj14LmlhZGQoTSk7cmV0dXJuIGouY21wKHRoaXMubSk+PTAmJmouaXN1Yih0'@; put 'aGlzLm0pLGp9LCQucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4LE0pe3RoaXMuX3ZlcmlmeTIoeCxNKTt2YXIgaj14LnN1YihNKTtyZXR1cm4gai5jbXBuKDApPDAmJmouaWFkZCh0aGlzLm0pLGouX2ZvcmNlUmVkKHRoaXMpfSwkLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgsTSl7dGhpcy5f'@; put 'dmVyaWZ5Mih4LE0pO3ZhciBqPXguaXN1YihNKTtyZXR1cm4gai5jbXBuKDApPDAmJmouaWFkZCh0aGlzLm0pLGp9LCQucHJvdG90eXBlLnNobD1mdW5jdGlvbih4LE0pe3JldHVybiB0aGlzLl92ZXJpZnkxKHgpLHRoaXMuaW1vZCh4LnVzaGxuKE0pKX0sJC5wcm90b3R5cGUuaW11bD1mdW5j'@; put 'dGlvbih4LE0pe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsTSksdGhpcy5pbW9kKHguaW11bChNKSl9LCQucHJvdG90eXBlLm11bD1mdW5jdGlvbih4LE0pe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsTSksdGhpcy5pbW9kKHgubXVsKE0pKX0sJC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih4KXty'@; put 'ZXR1cm4gdGhpcy5pbXVsKHgseC5jbG9uZSgpKX0sJC5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm11bCh4LHgpfSwkLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIHguY2xvbmUoKTt2YXIgTT10aGlzLm0uYW5kbG4oMyk7aWYo'@; put 'byhNJTI9PTEpLDM9PT1NKXt2YXIgaj10aGlzLm0uYWRkKG5ldyB0KDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KHgsail9Zm9yKHZhciBjPXRoaXMubS5zdWJuKDEpLG09MDshYy5pc1plcm8oKSYmMD09PWMuYW5kbG4oMSk7KW0rKyxjLml1c2hybigxKTtvKCFjLmlzWmVybygpKTt2'@; put 'YXIgZz1uZXcgdCgxKS50b1JlZCh0aGlzKSx5PWcucmVkTmVnKCksdz10aGlzLm0uc3VibigxKS5pdXNocm4oMSksaz10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKGs9bmV3IHQoMiprKmspLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhrLHcpLmNtcCh5KTspay5yZWRJQWRkKHkpO2Zvcih2YXIg'@; put 'Tz10aGlzLnBvdyhrLGMpLHo9dGhpcy5wb3coeCxjLmFkZG4oMSkuaXVzaHJuKDEpKSxVPXRoaXMucG93KHgsYyksVj1tOzAhPT1VLmNtcChnKTspe2Zvcih2YXIgUj1VLEg9MDswIT09Ui5jbXAoZyk7SCsrKVI9Ui5yZWRTcXIoKTtvKEg8Vik7dmFyIFQ9dGhpcy5wb3coTyxuZXcgdCgxKS5p'@; put 'dXNobG4oVi1ILTEpKTt6PXoucmVkTXVsKFQpLE89VC5yZWRTcXIoKSxVPVUucmVkTXVsKE8pLFY9SH1yZXR1cm4gen0sJC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXt2YXIgTT14Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09TS5uZWdhdGl2ZT8oTS5uZWdhdGl2ZT0wLHRoaXMuaW1v'@; put 'ZChNKS5yZWROZWcoKSk6dGhpcy5pbW9kKE0pfSwkLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCxNKXtpZihNLmlzWmVybygpKXJldHVybiBuZXcgdCgxKS50b1JlZCh0aGlzKTtpZigwPT09TS5jbXBuKDEpKXJldHVybiB4LmNsb25lKCk7dmFyIGo9bmV3IEFycmF5KDE2KTtqWzBdPW5ldyB0'@; put 'KDEpLnRvUmVkKHRoaXMpLGpbMV09eDtmb3IodmFyIGM9MjtjPGoubGVuZ3RoO2MrKylqW2NdPXRoaXMubXVsKGpbYy0xXSx4KTt2YXIgbT1qWzBdLGc9MCx5PTAsdz1NLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09dyYmKHc9MjYpLGM9TS5sZW5ndGgtMTtjPj0wO2MtLSl7Zm9yKHZhciBrPU0u'@; put 'd29yZHNbY10sTz13LTE7Tz49MDtPLS0pe3ZhciB6PWs+Pk8mMTttIT09alswXSYmKG09dGhpcy5zcXIobSkpLDAhPT16fHwwIT09Zz8oZzw8PTEsZ3w9eiwoND09PSsreXx8MD09PWMmJjA9PT1PKSYmKG09dGhpcy5tdWwobSxqW2ddKSx5PTAsZz0wKSk6eT0wfXc9MjZ9cmV0dXJuIG19LCQu'@; put 'cHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXt2YXIgTT14LnVtb2QodGhpcy5tKTtyZXR1cm4gTT09PXg/TS5jbG9uZSgpOk19LCQucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBNPXguY2xvbmUoKTtyZXR1cm4gTS5yZWQ9bnVsbCxNfSx0Lm1vbnQ9ZnVuY3Rp'@; put 'b24oeCl7cmV0dXJuIG5ldyBEKHgpfSxyKEQsJCksRC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC51c2hsbih0aGlzLnNoaWZ0KSl9LEQucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBNPXRoaXMuaW1vZCh4Lm11bCh0aGlz'@; put 'LnJpbnYpKTtyZXR1cm4gTS5yZWQ9bnVsbCxNfSxELnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsTSl7aWYoeC5pc1plcm8oKXx8TS5pc1plcm8oKSlyZXR1cm4geC53b3Jkc1swXT0wLHgubGVuZ3RoPTEseDt2YXIgaj14LmltdWwoTSksYz1qLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlz'@; put 'Lm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxtPWouaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCksZz1tO3JldHVybiBtLmNtcCh0aGlzLm0pPj0wP2c9bS5pc3ViKHRoaXMubSk6bS5jbXBuKDApPDAmJihnPW0uaWFkZCh0aGlzLm0pKSxnLl9mb3JjZVJlZCh0aGlzKX0s'@; put 'RC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsTSl7aWYoeC5pc1plcm8oKXx8TS5pc1plcm8oKSlyZXR1cm4gbmV3IHQoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBqPXgubXVsKE0pLGM9ai5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRo'@; put 'aXMubSksbT1qLmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpLGc9bTtyZXR1cm4gbS5jbXAodGhpcy5tKT49MD9nPW0uaXN1Yih0aGlzLm0pOm0uY21wbigwKTwwJiYoZz1tLmlhZGQodGhpcy5tKSksZy5fZm9yY2VSZWQodGhpcyl9LEQucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0'@; put 'dXJuIHRoaXMuaW1vZCh4Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0odm9pZCAwPT09RXx8RSl9LHtidWZmZXI6MTg4fV0sMTg1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO1MuYnl0ZUxlbmd0aD1mdW5jdGlvbihpKXt2YXIgaD1sKGkpLHU9'@; put 'aFsxXTtyZXR1cm4gMyooaFswXSt1KS80LXV9LFMudG9CeXRlQXJyYXk9ZnVuY3Rpb24oaSl7dmFyIGgsZixOLHU9bChpKSxwPXVbMF0sZD11WzFdLHY9bmV3IG8oMyoocCsoTj1kKSkvNC1OKSxfPTAsQT1kPjA/cC00OnA7Zm9yKGY9MDtmPEE7Zis9NCloPWFbaS5jaGFyQ29kZUF0KGYpXTw8'@; put 'MTh8YVtpLmNoYXJDb2RlQXQoZisxKV08PDEyfGFbaS5jaGFyQ29kZUF0KGYrMildPDw2fGFbaS5jaGFyQ29kZUF0KGYrMyldLHZbXysrXT1oPj4xNiYyNTUsdltfKytdPWg+PjgmMjU1LHZbXysrXT0yNTUmaDtyZXR1cm4gMj09PWQmJihoPWFbaS5jaGFyQ29kZUF0KGYpXTw8MnxhW2kuY2hh'@; put 'ckNvZGVBdChmKzEpXT4+NCx2W18rK109MjU1JmgpLDE9PT1kJiYoaD1hW2kuY2hhckNvZGVBdChmKV08PDEwfGFbaS5jaGFyQ29kZUF0KGYrMSldPDw0fGFbaS5jaGFyQ29kZUF0KGYrMildPj4yLHZbXysrXT1oPj44JjI1NSx2W18rK109MjU1JmgpLHZ9LFMuZnJvbUJ5dGVBcnJheT1mdW5j'@; put 'dGlvbihpKXtmb3IodmFyIGgsZj1pLmxlbmd0aCx1PWYlMyxwPVtdLGQ9MCx2PWYtdTtkPHY7ZCs9MTYzODMpcC5wdXNoKG4oaSxkLGQrMTYzODM+dj92OmQrMTYzODMpKTtyZXR1cm4gMT09PXU/cC5wdXNoKGJbKGg9aVtmLTFdKT4+Ml0rYltoPDw0JjYzXSsiPT0iKToyPT09dSYmcC5wdXNo'@; put 'KGJbKGg9KGlbZi0yXTw8OCkraVtmLTFdKT4+MTBdK2JbaD4+NCY2M10rYltoPDwyJjYzXSsiPSIpLHAuam9pbigiIil9O2Zvcih2YXIgYj1bXSxhPVtdLG89dHlwZW9mIFVpbnQ4QXJyYXk8InUiP1VpbnQ4QXJyYXk6QXJyYXkscj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZn'@; put 'aGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wO3Q8NjQ7Kyt0KWJbdF09clt0XSxhW3IuY2hhckNvZGVBdCh0KV09dDtmdW5jdGlvbiBsKGkpe3ZhciBoPWkubGVuZ3RoO2lmKGglND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEg'@; put 'bXVsdGlwbGUgb2YgNCIpO3ZhciBmPWkuaW5kZXhPZigiPSIpO3JldHVybi0xPT09ZiYmKGY9aCksW2YsZj09PWg/MDo0LWYlNF19ZnVuY3Rpb24gbihpLGgsZil7Zm9yKHZhciBwLGQ9W10sdj1oO3Y8Zjt2Kz0zKWQucHVzaChiWyhwPShpW3ZdPDwxNiYxNjcxMTY4MCkrKGlbdisxXTw8OCY2'@; put 'NTI4MCkrKDI1NSZpW3YrMl0pKT4+MTgmNjNdK2JbcD4+MTImNjNdK2JbcD4+NiY2M10rYls2MyZwXSk7cmV0dXJuIGQuam9pbigiIil9YVs0NV09NjIsYVs5NV09NjN9LHt9XSwxODY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIG8oYyxtKXtp'@; put 'ZighYyl0aHJvdyBuZXcgRXJyb3IobXx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiByKGMsbSl7Yy5zdXBlcl89bTt2YXIgZz1mdW5jdGlvbigpe307Zy5wcm90b3R5cGU9bS5wcm90b3R5cGUsYy5wcm90b3R5cGU9bmV3IGcsYy5wcm90b3R5cGUuY29uc3RydWN0b3I9Y31mdW5jdGlv'@; put 'biB0KGMsbSxnKXtpZih0LmlzQk4oYykpcmV0dXJuIGM7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWMmJigibGUiIT09bSYmImJlIiE9PW18fChnPW0sbT0xMCksdGhpcy5faW5pdChjfHwwLG18fDEwLGd8fCJiZSIp'@; put 'KX12YXIgZTsib2JqZWN0Ij09dHlwZW9mIGI/Yi5leHBvcnRzPXQ6KHZvaWQgMCkuQk49dCx0LkJOPXQsdC53b3JkU2l6ZT0yNjt0cnl7ZT10eXBlb2Ygd2luZG93PCJ1IiYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOnMoImJ1ZmZlciIpLkJ1ZmZlcn1jYXRjaHt9ZnVu'@; put 'Y3Rpb24gbChjLG0pe3ZhciBnPWMuY2hhckNvZGVBdChtKTtyZXR1cm4gZz49NDgmJmc8PTU3P2ctNDg6Zz49NjUmJmc8PTcwP2ctNTU6Zz49OTcmJmc8PTEwMj9nLTg3OnZvaWQgbyghMSwiSW52YWxpZCBjaGFyYWN0ZXIgaW4gIitjKX1mdW5jdGlvbiBuKGMsbSxnKXt2YXIgeT1sKGMsZyk7'@; put 'cmV0dXJuIGctMT49bSYmKHl8PWwoYyxnLTEpPDw0KSx5fWZ1bmN0aW9uIGkoYyxtLGcseSl7Zm9yKHZhciB3PTAsaz0wLE89TWF0aC5taW4oYy5sZW5ndGgsZyksej1tO3o8Tzt6Kyspe3ZhciBVPWMuY2hhckNvZGVBdCh6KS00ODt3Kj15LGs9VT49NDk/VS00OSsxMDpVPj0xNz9VLTE3KzEw'@; put 'OlUsbyhVPj0wJiZrPHksIkludmFsaWQgY2hhcmFjdGVyIiksdys9a31yZXR1cm4gd31mdW5jdGlvbiBoKGMsbSl7Yy53b3Jkcz1tLndvcmRzLGMubGVuZ3RoPW0ubGVuZ3RoLGMubmVnYXRpdmU9bS5uZWdhdGl2ZSxjLnJlZD1tLnJlZH1pZih0LmlzQk49ZnVuY3Rpb24oYyl7cmV0dXJuIGMg'@; put 'aW5zdGFuY2VvZiB0fHxudWxsIT09YyYmIm9iamVjdCI9PXR5cGVvZiBjJiZjLmNvbnN0cnVjdG9yLndvcmRTaXplPT09dC53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShjLndvcmRzKX0sdC5tYXg9ZnVuY3Rpb24oYyxtKXtyZXR1cm4gYy5jbXAobSk+MD9jOm19LHQubWluPWZ1bmN0aW9uKGMs'@; put 'bSl7cmV0dXJuIGMuY21wKG0pPDA/YzptfSx0LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihjLG0sZyl7aWYoIm51bWJlciI9PXR5cGVvZiBjKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKGMsbSxnKTtpZigib2JqZWN0Ij09dHlwZW9mIGMpcmV0dXJuIHRoaXMuX2luaXRBcnJheShjLG0sZyk7'@; put 'ImhleCI9PT1tJiYobT0xNiksbyhtPT09KDB8bSkmJm0+PTImJm08PTM2KTt2YXIgeT0wOyItIj09PShjPWMudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoeSsrLHRoaXMubmVnYXRpdmU9MSkseTxjLmxlbmd0aCYmKDE2PT09bT90aGlzLl9wYXJzZUhleChjLHksZyk6KHRo'@; put 'aXMuX3BhcnNlQmFzZShjLG0seSksImxlIj09PWcmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxtLGcpKSl9LHQucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGMsbSxnKXtjPDAmJih0aGlzLm5lZ2F0aXZlPTEsYz0tYyksYzw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcx'@; put 'MDg4NjMmY10sdGhpcy5sZW5ndGg9MSk6Yzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZjLGMvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihvKGM8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmYyxjLzY3MTA4ODY0JjY3MTA4'@; put 'ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1nJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksbSxnKX0sdC5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihjLG0sZyl7aWYobygibnVtYmVyIj09dHlwZW9mIGMubGVuZ3RoKSxjLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53'@; put 'b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChjLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB5PTA7eTx0aGlzLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT0wO3ZhciB3LGssTz0wO2lmKCJiZSI9PT1n'@; put 'KWZvcih5PWMubGVuZ3RoLTEsdz0wO3k+PTA7eS09Myl0aGlzLndvcmRzW3ddfD0oaz1jW3ldfGNbeS0xXTw8OHxjW3ktMl08PDE2KTw8TyY2NzEwODg2Myx0aGlzLndvcmRzW3crMV09az4+PjI2LU8mNjcxMDg4NjMsKE8rPTI0KT49MjYmJihPLT0yNix3KyspO2Vsc2UgaWYoImxlIj09PWcp'@; put 'Zm9yKHk9MCx3PTA7eTxjLmxlbmd0aDt5Kz0zKXRoaXMud29yZHNbd118PShrPWNbeV18Y1t5KzFdPDw4fGNbeSsyXTw8MTYpPDxPJjY3MTA4ODYzLHRoaXMud29yZHNbdysxXT1rPj4+MjYtTyY2NzEwODg2MywoTys9MjQpPj0yNiYmKE8tPTI2LHcrKyk7cmV0dXJuIHRoaXMuX3N0cmlwKCl9'@; put 'LHQucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihjLG0sZyl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChjLmxlbmd0aC1tKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB5PTA7eTx0aGlzLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT0wO3ZhciB3LGs9'@; put 'MCxPPTA7aWYoImJlIj09PWcpZm9yKHk9Yy5sZW5ndGgtMTt5Pj1tO3ktPTIpdz1uKGMsbSx5KTw8ayx0aGlzLndvcmRzW09dfD02NzEwODg2MyZ3LGs+PTE4PyhrLT0xOCx0aGlzLndvcmRzW08rPTFdfD13Pj4+MjYpOmsrPTg7ZWxzZSBmb3IoeT0oYy5sZW5ndGgtbSklMj09MD9tKzE6bTt5'@; put 'PGMubGVuZ3RoO3krPTIpdz1uKGMsbSx5KTw8ayx0aGlzLndvcmRzW09dfD02NzEwODg2MyZ3LGs+PTE4PyhrLT0xOCx0aGlzLndvcmRzW08rPTFdfD13Pj4+MjYpOmsrPTg7dGhpcy5fc3RyaXAoKX0sdC5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihjLG0sZyl7dGhpcy53b3Jkcz1b'@; put 'MF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHk9MCx3PTE7dzw9NjcxMDg4NjM7dyo9bSl5Kys7eS0tLHc9dy9tfDA7Zm9yKHZhciBrPWMubGVuZ3RoLWcsTz1rJXksej1NYXRoLm1pbihrLGstTykrZyxVPTAsVj1nO1Y8ejtWKz15KVU9aShjLFYsVit5LG0pLHRoaXMuaW11bG4odyksdGhpcy53'@; put 'b3Jkc1swXStVPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVU6dGhpcy5faWFkZG4oVSk7aWYoMCE9PU8pe3ZhciBSPTE7Zm9yKFU9aShjLFYsYy5sZW5ndGgsbSksVj0wO1Y8TztWKyspUio9bTt0aGlzLmltdWxuKFIpLHRoaXMud29yZHNbMF0rVTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1V'@; put 'OnRoaXMuX2lhZGRuKFUpfXRoaXMuX3N0cmlwKCl9LHQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYyl7Yy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgbT0wO208dGhpcy5sZW5ndGg7bSsrKWMud29yZHNbbV09dGhpcy53b3Jkc1ttXTtjLmxlbmd0aD10aGlzLmxlbmd0'@; put 'aCxjLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsYy5yZWQ9dGhpcy5yZWR9LHQucHJvdG90eXBlLl9tb3ZlPWZ1bmN0aW9uKGMpe2goYyx0aGlzKX0sdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYz1uZXcgdChudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGMpLGN9LHQucHJvdG90eXBl'@; put 'Ll9leHBhbmQ9ZnVuY3Rpb24oYyl7Zm9yKDt0aGlzLmxlbmd0aDxjOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLl9zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRo'@; put 'aXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LHQucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSx0eXBlb2YgU3ltYm9sPCJ1IiYmImZ1bmN0aW9u'@; put 'Ij09dHlwZW9mIFN5bWJvbC5mb3IpdHJ5e3QucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ9Y2F0Y2h7dC5wcm90b3R5cGUuaW5zcGVjdD1mfWVsc2UgdC5wcm90b3R5cGUuaW5zcGVjdD1mO2Z1bmN0aW9uIGYoKXtyZXR1cm4odGhpcy5yZWQ/'@; put 'IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In12YXIgdT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIs'@; put 'IjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAw'@; put 'MDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxwPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2'@; put 'LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLGQ9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYy'@; put 'NSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUy'@; put 'MTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdihjLG0sZyl7Zy5uZWdhdGl2ZT1tLm5lZ2F0aXZlXmMubmVnYXRpdmU7dmFyIHk9Yy5sZW5ndGgrbS5sZW5ndGh8MDtnLmxlbmd0aD15LHk9eS0xfDA7dmFyIHc9MHxjLndvcmRzWzBdLGs9MHxtLndvcmRzWzBdLE89dyprLFU9Ty82NzEwODg2NHww'@; put 'O2cud29yZHNbMF09NjcxMDg4NjMmTztmb3IodmFyIFY9MTtWPHk7VisrKXtmb3IodmFyIFI9VT4+PjI2LEg9NjcxMDg4NjMmVSxUPU1hdGgubWluKFYsbS5sZW5ndGgtMSksQz1NYXRoLm1heCgwLFYtYy5sZW5ndGgrMSk7Qzw9VDtDKyspUis9KE89KHc9MHxjLndvcmRzW1YtQ3wwXSkqKGs9'@; put 'MHxtLndvcmRzW0NdKStIKS82NzEwODg2NHwwLEg9NjcxMDg4NjMmTztnLndvcmRzW1ZdPTB8SCxVPTB8Un1yZXR1cm4gMCE9PVU/Zy53b3Jkc1tWXT0wfFU6Zy5sZW5ndGgtLSxnLl9zdHJpcCgpfXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGMsbSl7dmFyIGc7aWYobT0wfG18fDEs'@; put 'MTY9PT0oYz1jfHwxMCl8fCJoZXgiPT09Yyl7Zz0iIjtmb3IodmFyIHk9MCx3PTAsaz0wO2s8dGhpcy5sZW5ndGg7aysrKXt2YXIgTz10aGlzLndvcmRzW2tdLHo9KDE2Nzc3MjE1JihPPDx5fHcpKS50b1N0cmluZygxNik7dz1PPj4+MjQteSYxNjc3NzIxNSwoeSs9Mik+PTI2JiYoeS09MjYs'@; put 'ay0tKSxnPTAhPT13fHxrIT09dGhpcy5sZW5ndGgtMT91WzYtei5sZW5ndGhdK3orZzp6K2d9Zm9yKDAhPT13JiYoZz13LnRvU3RyaW5nKDE2KStnKTtnLmxlbmd0aCVtIT0wOylnPSIwIitnO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGc9Ii0iK2cpLGd9aWYoYz09PSgwfGMpJiZjPj0y'@; put 'JiZjPD0zNil7dmFyIFU9cFtjXSxWPWRbY107Zz0iIjt2YXIgUj10aGlzLmNsb25lKCk7Zm9yKFIubmVnYXRpdmU9MDshUi5pc1plcm8oKTspe3ZhciBIPVIubW9kcm4oVikudG9TdHJpbmcoYyk7Zz0oUj1SLmlkaXZuKFYpKS5pc1plcm8oKT9IK2c6dVtVLUgubGVuZ3RoXStIK2d9Zm9yKHRo'@; put 'aXMuaXNaZXJvKCkmJihnPSIwIitnKTtnLmxlbmd0aCVtIT0wOylnPSIwIitnO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGc9Ii0iK2cpLGd9byghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSx0LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBjPXRo'@; put 'aXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9jKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Yys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm8oITEsIk51bWJl'@; put 'ciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1jOmN9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2LDIpfSxlJiYodC5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oYyxtKXtyZXR1'@; put 'cm4gdGhpcy50b0FycmF5TGlrZShlLGMsbSl9KSx0LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGMsbSl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksYyxtKX0sdC5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oYyxtLGcpe3RoaXMuX3N0cmlwKCk7dmFyIHk9dGhpcy5i'@; put 'eXRlTGVuZ3RoKCksdz1nfHxNYXRoLm1heCgxLHkpO28oeTw9dywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLG8odz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgTyx6LGs9KHo9dywoTz1jKS5hbGxvY1Vuc2FmZT9PLmFsbG9jVW5zYWZlKHop'@; put 'Om5ldyBPKHopKTtyZXR1cm4gdGhpc1siX3RvQXJyYXlMaWtlIisoImxlIj09PW0/IkxFIjoiQkUiKV0oayx5KSxrfSx0LnByb3RvdHlwZS5fdG9BcnJheUxpa2VMRT1mdW5jdGlvbihjLG0pe2Zvcih2YXIgZz0wLHk9MCx3PTAsaz0wO3c8dGhpcy5sZW5ndGg7dysrKXt2YXIgTz10aGlzLndv'@; put 'cmRzW3ddPDxrfHk7Y1tnKytdPTI1NSZPLGc8Yy5sZW5ndGgmJihjW2crK109Tz4+OCYyNTUpLGc8Yy5sZW5ndGgmJihjW2crK109Tz4+MTYmMjU1KSw2PT09az8oZzxjLmxlbmd0aCYmKGNbZysrXT1PPj4yNCYyNTUpLHk9MCxrPTApOih5PU8+Pj4yNCxrKz0yKX1pZihnPGMubGVuZ3RoKWZv'@; put 'cihjW2crK109eTtnPGMubGVuZ3RoOyljW2crK109MH0sdC5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkU9ZnVuY3Rpb24oYyxtKXtmb3IodmFyIGc9Yy5sZW5ndGgtMSx5PTAsdz0wLGs9MDt3PHRoaXMubGVuZ3RoO3crKyl7dmFyIE89dGhpcy53b3Jkc1t3XTw8a3x5O2NbZy0tXT0yNTUmTyxn'@; put 'Pj0wJiYoY1tnLS1dPU8+PjgmMjU1KSxnPj0wJiYoY1tnLS1dPU8+PjE2JjI1NSksNj09PWs/KGc+PTAmJihjW2ctLV09Tz4+MjQmMjU1KSx5PTAsaz0wKTooeT1PPj4+MjQsays9Mil9aWYoZz49MClmb3IoY1tnLS1dPXk7Zz49MDspY1tnLS1dPTB9LHQucHJvdG90eXBlLl9jb3VudEJpdHM9'@; put 'TWF0aC5jbHozMj9mdW5jdGlvbihjKXtyZXR1cm4gMzItTWF0aC5jbHozMihjKX06ZnVuY3Rpb24oYyl7dmFyIG09YyxnPTA7cmV0dXJuIG0+PTQwOTYmJihnKz0xMyxtPj4+PTEzKSxtPj02NCYmKGcrPTcsbT4+Pj03KSxtPj04JiYoZys9NCxtPj4+PTQpLG0+PTImJihnKz0yLG0+Pj49Miks'@; put 'ZyttfSx0LnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oYyl7aWYoMD09PWMpcmV0dXJuIDI2O3ZhciBtPWMsZz0wO3JldHVybiEoODE5MSZtKSYmKGcrPTEzLG0+Pj49MTMpLCEoMTI3Jm0pJiYoZys9NyxtPj4+PTcpLCEoMTUmbSkmJihnKz00LG0+Pj49NCksISgzJm0pJiYoZys9Mixt'@; put 'Pj4+PTIpLCEoMSZtKSYmZysrLGd9LHQucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBtPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK219LHQucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7'@; put 'aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGM9MCxtPTA7bTx0aGlzLmxlbmd0aDttKyspe3ZhciBnPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbbV0pO2lmKGMrPWcsMjYhPT1nKWJyZWFrfXJldHVybiBjfSx0LnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSx0LnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oYyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oYykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSx0LnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihj'@; put 'KXtyZXR1cm4gdGhpcy50ZXN0bihjLTEpP3RoaXMubm90bihjKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSx0LnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sdC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xv'@; put 'bmUoKS5pbmVnKCl9LHQucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LHQucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oYyl7Zm9yKDt0aGlzLmxlbmd0aDxjLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0'@; put 'aCsrXT0wO2Zvcih2YXIgbT0wO208Yy5sZW5ndGg7bSsrKXRoaXMud29yZHNbbV09dGhpcy53b3Jkc1ttXXxjLndvcmRzW21dO3JldHVybiB0aGlzLl9zdHJpcCgpfSx0LnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oYyl7cmV0dXJuIG8oMD09KHRoaXMubmVnYXRpdmV8Yy5uZWdhdGl2ZSkpLHRo'@; put 'aXMuaXVvcihjKX0sdC5wcm90b3R5cGUub3I9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMubGVuZ3RoPmMubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoYyk6Yy5jbG9uZSgpLmlvcih0aGlzKX0sdC5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmxlbmd0aD5jLmxlbmd0aD90'@; put 'aGlzLmNsb25lKCkuaXVvcihjKTpjLmNsb25lKCkuaXVvcih0aGlzKX0sdC5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oYyl7dmFyIG07bT10aGlzLmxlbmd0aD5jLmxlbmd0aD9jOnRoaXM7Zm9yKHZhciBnPTA7ZzxtLmxlbmd0aDtnKyspdGhpcy53b3Jkc1tnXT10aGlzLndvcmRzW2ddJmMu'@; put 'd29yZHNbZ107cmV0dXJuIHRoaXMubGVuZ3RoPW0ubGVuZ3RoLHRoaXMuX3N0cmlwKCl9LHQucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oYyl7cmV0dXJuIG8oMD09KHRoaXMubmVnYXRpdmV8Yy5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoYyl9LHQucHJvdG90eXBlLmFuZD1mdW5jdGlvbihjKXty'@; put 'ZXR1cm4gdGhpcy5sZW5ndGg+Yy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoYyk6Yy5jbG9uZSgpLmlhbmQodGhpcyl9LHQucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMubGVuZ3RoPmMubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChjKTpjLmNsb25lKCkuaXVhbmQo'@; put 'dGhpcyl9LHQucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGMpe3ZhciBtLGc7dGhpcy5sZW5ndGg+Yy5sZW5ndGg/KG09dGhpcyxnPWMpOihtPWMsZz10aGlzKTtmb3IodmFyIHk9MDt5PGcubGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPW0ud29yZHNbeV1eZy53b3Jkc1t5XTtpZih0aGlzIT09'@; put 'bSlmb3IoO3k8bS5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09bS53b3Jkc1t5XTtyZXR1cm4gdGhpcy5sZW5ndGg9bS5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sdC5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihjKXtyZXR1cm4gbygwPT0odGhpcy5uZWdhdGl2ZXxjLm5lZ2F0aXZlKSksdGhpcy5p'@; put 'dXhvcihjKX0sdC5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmxlbmd0aD5jLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihjKTpjLmNsb25lKCkuaXhvcih0aGlzKX0sdC5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yy5sZW5ndGg/'@; put 'dGhpcy5jbG9uZSgpLml1eG9yKGMpOmMuY2xvbmUoKS5pdXhvcih0aGlzKX0sdC5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oYyl7bygibnVtYmVyIj09dHlwZW9mIGMmJmM+PTApO3ZhciBtPTB8TWF0aC5jZWlsKGMvMjYpLGc9YyUyNjt0aGlzLl9leHBhbmQobSksZz4wJiZtLS07Zm9yKHZh'@; put 'ciB5PTA7eTxtO3krKyl0aGlzLndvcmRzW3ldPTY3MTA4ODYzJn50aGlzLndvcmRzW3ldO3JldHVybiBnPjAmJih0aGlzLndvcmRzW3ldPX50aGlzLndvcmRzW3ldJjY3MTA4ODYzPj4yNi1nKSx0aGlzLl9zdHJpcCgpfSx0LnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlz'@; put 'LmNsb25lKCkuaW5vdG4oYyl9LHQucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oYyxtKXtvKCJudW1iZXIiPT10eXBlb2YgYyYmYz49MCk7dmFyIGc9Yy8yNnwwLHk9YyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGcrMSksdGhpcy53b3Jkc1tnXT1tP3RoaXMud29yZHNbZ118MTw8eTp0aGlzLndv'@; put 'cmRzW2ddJn4oMTw8eSksdGhpcy5fc3RyaXAoKX0sdC5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihjKXt2YXIgbSxnLHk7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1jLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsbT10aGlzLmlzdWIoYyksdGhpcy5uZWdhdGl2ZV49MSx0aGlz'@; put 'Ll9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yy5uZWdhdGl2ZSlyZXR1cm4gYy5uZWdhdGl2ZT0wLG09dGhpcy5pc3ViKGMpLGMubmVnYXRpdmU9MSxtLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmMubGVuZ3RoPyhnPXRoaXMseT1jKTooZz1jLHk9dGhpcyk7Zm9yKHZh'@; put 'ciB3PTAsaz0wO2s8eS5sZW5ndGg7aysrKXRoaXMud29yZHNba109NjcxMDg4NjMmKG09KDB8Zy53b3Jkc1trXSkrKDB8eS53b3Jkc1trXSkrdyksdz1tPj4+MjY7Zm9yKDswIT09dyYmazxnLmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT02NzEwODg2MyYobT0oMHxnLndvcmRzW2tdKSt3KSx3'@; put 'PW0+Pj4yNjtpZih0aGlzLmxlbmd0aD1nLmxlbmd0aCwwIT09dyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT13LHRoaXMubGVuZ3RoKys7ZWxzZSBpZihnIT09dGhpcylmb3IoO2s8Zy5sZW5ndGg7aysrKXRoaXMud29yZHNba109Zy53b3Jkc1trXTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUu'@; put 'YWRkPWZ1bmN0aW9uKGMpe3ZhciBtO3JldHVybiAwIT09Yy5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGMubmVnYXRpdmU9MCxtPXRoaXMuc3ViKGMpLGMubmVnYXRpdmVePTEsbSk6MD09PWMubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsbT1jLnN1'@; put 'Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsbSk6dGhpcy5sZW5ndGg+Yy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoYyk6Yy5jbG9uZSgpLmlhZGQodGhpcyl9LHQucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oYyl7aWYoMCE9PWMubmVnYXRpdmUpe2MubmVnYXRpdmU9MDt2YXIgbT10aGlzLmlh'@; put 'ZGQoYyk7cmV0dXJuIGMubmVnYXRpdmU9MSxtLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKGMpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBnLHksdz10aGlzLmNtcChjKTtpZigwPT09dylyZXR1'@; put 'cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7dz4wPyhnPXRoaXMseT1jKTooZz1jLHk9dGhpcyk7Zm9yKHZhciBrPTAsTz0wO088eS5sZW5ndGg7TysrKWs9KG09KDB8Zy53b3Jkc1tPXSktKDB8eS53b3Jkc1tPXSkrayk+PjI2LHRoaXMud29y'@; put 'ZHNbT109NjcxMDg4NjMmbTtmb3IoOzAhPT1rJiZPPGcubGVuZ3RoO08rKylrPShtPSgwfGcud29yZHNbT10pK2spPj4yNix0aGlzLndvcmRzW09dPTY3MTA4ODYzJm07aWYoMD09PWsmJk88Zy5sZW5ndGgmJmchPT10aGlzKWZvcig7TzxnLmxlbmd0aDtPKyspdGhpcy53b3Jkc1tPXT1nLndv'@; put 'cmRzW09dO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxPKSxnIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5fc3RyaXAoKX0sdC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihjKX07dmFyIF89ZnVuY3Rpb24o'@; put 'YyxtLGcpe3ZhciB5LHcsayxPPWMud29yZHMsej1tLndvcmRzLFU9Zy53b3JkcyxWPTAsUj0wfE9bMF0sSD04MTkxJlIsVD1SPj4+MTMsQz0wfE9bMV0sRj04MTkxJkMscT1DPj4+MTMsWT0wfE9bMl0sWD04MTkxJlksSz1ZPj4+MTMscnQ9MHxPWzNdLHR0PTgxOTEmcnQsVz1ydD4+PjEzLFE9'@; put 'MHxPWzRdLEc9ODE5MSZRLGV0PVE+Pj4xMyxudD0wfE9bNV0saXQ9ODE5MSZudCxvdD1udD4+PjEzLGh0PTB8T1s2XSxmdD04MTkxJmh0LHB0PWh0Pj4+MTMsVHQ9MHxPWzddLHl0PTgxOTEmVHQsd3Q9VHQ+Pj4xMyxxdD0wfE9bOF0sRXQ9ODE5MSZxdCxfdD1xdD4+PjEzLEF0PTB8T1s5XSxn'@; put 'dD04MTkxJkF0LG10PUF0Pj4+MTMsVnQ9MHx6WzBdLFN0PTgxOTEmVnQsT3Q9VnQ+Pj4xMyx5ZT0wfHpbMV0sUnQ9ODE5MSZ5ZSxOdD15ZT4+PjEzLGFlPTB8elsyXSxMdD04MTkxJmFlLHp0PWFlPj4+MTMscGU9MHx6WzNdLEJ0PTgxOTEmcGUsUHQ9cGU+Pj4xMyxjZT0wfHpbNF0sRnQ9ODE5'@; put 'MSZjZSxJdD1jZT4+PjEzLHZlPTB8els1XSxVdD04MTkxJnZlLEo9dmU+Pj4xMyxhdD0wfHpbNl0sbHQ9ODE5MSZhdCxkdD1hdD4+PjEzLFl0PTB8els3XSx2dD04MTkxJll0LGt0PVl0Pj4+MTMsdGU9MHx6WzhdLGp0PTgxOTEmdGUseHQ9dGU+Pj4xMyxRdD0wfHpbOV0sV3Q9ODE5MSZRdCxY'@; put 'dD1RdD4+PjEzO2cubmVnYXRpdmU9Yy5uZWdhdGl2ZV5tLm5lZ2F0aXZlLGcubGVuZ3RoPTE5O3ZhciByZT0oVisoeT1NYXRoLmltdWwoSCxTdCkpfDApKygoODE5MSYodz0odz1NYXRoLmltdWwoSCxPdCkpK01hdGguaW11bChULFN0KXwwKSk8PDEzKXwwO1Y9KChrPU1hdGguaW11bChULE90'@; put 'KSkrKHc+Pj4xMyl8MCkrKHJlPj4+MjYpfDAscmUmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEYsU3QpLHc9KHc9TWF0aC5pbXVsKEYsT3QpKStNYXRoLmltdWwocSxTdCl8MCxrPU1hdGguaW11bChxLE90KTt2YXIgaWU9KFYrKHk9eStNYXRoLmltdWwoSCxSdCl8MCl8MCkrKCg4MTkxJih3PSh3'@; put 'PXcrTWF0aC5pbXVsKEgsTnQpfDApK01hdGguaW11bChULFJ0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKFQsTnQpfDApKyh3Pj4+MTMpfDApKyhpZT4+PjI2KXwwLGllJj02NzEwODg2Myx5PU1hdGguaW11bChYLFN0KSx3PSh3PU1hdGguaW11bChYLE90KSkrTWF0aC5pbXVsKEss'@; put 'U3QpfDAsaz1NYXRoLmltdWwoSyxPdCkseT15K01hdGguaW11bChGLFJ0KXwwLHc9KHc9dytNYXRoLmltdWwoRixOdCl8MCkrTWF0aC5pbXVsKHEsUnQpfDAsaz1rK01hdGguaW11bChxLE50KXwwO3ZhciB1ZT0oVisoeT15K01hdGguaW11bChILEx0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytN'@; put 'YXRoLmltdWwoSCx6dCl8MCkrTWF0aC5pbXVsKFQsTHQpfDApKTw8MTMpfDA7Vj0oKGs9aytNYXRoLmltdWwoVCx6dCl8MCkrKHc+Pj4xMyl8MCkrKHVlPj4+MjYpfDAsdWUmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKHR0LFN0KSx3PSh3PU1hdGguaW11bCh0dCxPdCkpK01hdGguaW11bChXLFN0'@; put 'KXwwLGs9TWF0aC5pbXVsKFcsT3QpLHk9eStNYXRoLmltdWwoWCxSdCl8MCx3PSh3PXcrTWF0aC5pbXVsKFgsTnQpfDApK01hdGguaW11bChLLFJ0KXwwLGs9aytNYXRoLmltdWwoSyxOdCl8MCx5PXkrTWF0aC5pbXVsKEYsTHQpfDAsdz0odz13K01hdGguaW11bChGLHp0KXwwKStNYXRoLmlt'@; put 'dWwocSxMdCl8MCxrPWsrTWF0aC5pbXVsKHEsenQpfDA7dmFyIGRlPShWKyh5PXkrTWF0aC5pbXVsKEgsQnQpfDApfDApKygoODE5MSYodz0odz13K01hdGguaW11bChILFB0KXwwKStNYXRoLmltdWwoVCxCdCl8MCkpPDwxMyl8MDtWPSgoaz1rK01hdGguaW11bChULFB0KXwwKSsodz4+PjEz'@; put 'KXwwKSsoZGU+Pj4yNil8MCxkZSY9NjcxMDg4NjMseT1NYXRoLmltdWwoRyxTdCksdz0odz1NYXRoLmltdWwoRyxPdCkpK01hdGguaW11bChldCxTdCl8MCxrPU1hdGguaW11bChldCxPdCkseT15K01hdGguaW11bCh0dCxSdCl8MCx3PSh3PXcrTWF0aC5pbXVsKHR0LE50KXwwKStNYXRoLmlt'@; put 'dWwoVyxSdCl8MCxrPWsrTWF0aC5pbXVsKFcsTnQpfDAseT15K01hdGguaW11bChYLEx0KXwwLHc9KHc9dytNYXRoLmltdWwoWCx6dCl8MCkrTWF0aC5pbXVsKEssTHQpfDAsaz1rK01hdGguaW11bChLLHp0KXwwLHk9eStNYXRoLmltdWwoRixCdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEYsUHQp'@; put 'fDApK01hdGguaW11bChxLEJ0KXwwLGs9aytNYXRoLmltdWwocSxQdCl8MDt2YXIgbGU9KFYrKHk9eStNYXRoLmltdWwoSCxGdCl8MCl8MCkrKCg4MTkxJih3PSh3PXcrTWF0aC5pbXVsKEgsSXQpfDApK01hdGguaW11bChULEZ0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKFQsSXQp'@; put 'fDApKyh3Pj4+MTMpfDApKyhsZT4+PjI2KXwwLGxlJj02NzEwODg2Myx5PU1hdGguaW11bChpdCxTdCksdz0odz1NYXRoLmltdWwoaXQsT3QpKStNYXRoLmltdWwob3QsU3QpfDAsaz1NYXRoLmltdWwob3QsT3QpLHk9eStNYXRoLmltdWwoRyxSdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEcsTnQp'@; put 'fDApK01hdGguaW11bChldCxSdCl8MCxrPWsrTWF0aC5pbXVsKGV0LE50KXwwLHk9eStNYXRoLmltdWwodHQsTHQpfDAsdz0odz13K01hdGguaW11bCh0dCx6dCl8MCkrTWF0aC5pbXVsKFcsTHQpfDAsaz1rK01hdGguaW11bChXLHp0KXwwLHk9eStNYXRoLmltdWwoWCxCdCl8MCx3PSh3PXcr'@; put 'TWF0aC5pbXVsKFgsUHQpfDApK01hdGguaW11bChLLEJ0KXwwLGs9aytNYXRoLmltdWwoSyxQdCl8MCx5PXkrTWF0aC5pbXVsKEYsRnQpfDAsdz0odz13K01hdGguaW11bChGLEl0KXwwKStNYXRoLmltdWwocSxGdCl8MCxrPWsrTWF0aC5pbXVsKHEsSXQpfDA7dmFyIGZlPShWKyh5PXkrTWF0'@; put 'aC5pbXVsKEgsVXQpfDApfDApKygoODE5MSYodz0odz13K01hdGguaW11bChILEopfDApK01hdGguaW11bChULFV0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKFQsSil8MCkrKHc+Pj4xMyl8MCkrKGZlPj4+MjYpfDAsZmUmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGZ0LFN0KSx3PSh3'@; put 'PU1hdGguaW11bChmdCxPdCkpK01hdGguaW11bChwdCxTdCl8MCxrPU1hdGguaW11bChwdCxPdCkseT15K01hdGguaW11bChpdCxSdCl8MCx3PSh3PXcrTWF0aC5pbXVsKGl0LE50KXwwKStNYXRoLmltdWwob3QsUnQpfDAsaz1rK01hdGguaW11bChvdCxOdCl8MCx5PXkrTWF0aC5pbXVsKEcs'@; put 'THQpfDAsdz0odz13K01hdGguaW11bChHLHp0KXwwKStNYXRoLmltdWwoZXQsTHQpfDAsaz1rK01hdGguaW11bChldCx6dCl8MCx5PXkrTWF0aC5pbXVsKHR0LEJ0KXwwLHc9KHc9dytNYXRoLmltdWwodHQsUHQpfDApK01hdGguaW11bChXLEJ0KXwwLGs9aytNYXRoLmltdWwoVyxQdCl8MCx5'@; put 'PXkrTWF0aC5pbXVsKFgsRnQpfDAsdz0odz13K01hdGguaW11bChYLEl0KXwwKStNYXRoLmltdWwoSyxGdCl8MCxrPWsrTWF0aC5pbXVsKEssSXQpfDAseT15K01hdGguaW11bChGLFV0KXwwLHc9KHc9dytNYXRoLmltdWwoRixKKXwwKStNYXRoLmltdWwocSxVdCl8MCxrPWsrTWF0aC5pbXVs'@; put 'KHEsSil8MDt2YXIgWj0oVisoeT15K01hdGguaW11bChILGx0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwoSCxkdCl8MCkrTWF0aC5pbXVsKFQsbHQpfDApKTw8MTMpfDA7Vj0oKGs9aytNYXRoLmltdWwoVCxkdCl8MCkrKHc+Pj4xMyl8MCkrKFo+Pj4yNil8MCxaJj02NzEwODg2'@; put 'Myx5PU1hdGguaW11bCh5dCxTdCksdz0odz1NYXRoLmltdWwoeXQsT3QpKStNYXRoLmltdWwod3QsU3QpfDAsaz1NYXRoLmltdWwod3QsT3QpLHk9eStNYXRoLmltdWwoZnQsUnQpfDAsdz0odz13K01hdGguaW11bChmdCxOdCl8MCkrTWF0aC5pbXVsKHB0LFJ0KXwwLGs9aytNYXRoLmltdWwo'@; put 'cHQsTnQpfDAseT15K01hdGguaW11bChpdCxMdCl8MCx3PSh3PXcrTWF0aC5pbXVsKGl0LHp0KXwwKStNYXRoLmltdWwob3QsTHQpfDAsaz1rK01hdGguaW11bChvdCx6dCl8MCx5PXkrTWF0aC5pbXVsKEcsQnQpfDAsdz0odz13K01hdGguaW11bChHLFB0KXwwKStNYXRoLmltdWwoZXQsQnQp'@; put 'fDAsaz1rK01hdGguaW11bChldCxQdCl8MCx5PXkrTWF0aC5pbXVsKHR0LEZ0KXwwLHc9KHc9dytNYXRoLmltdWwodHQsSXQpfDApK01hdGguaW11bChXLEZ0KXwwLGs9aytNYXRoLmltdWwoVyxJdCl8MCx5PXkrTWF0aC5pbXVsKFgsVXQpfDAsdz0odz13K01hdGguaW11bChYLEopfDApK01h'@; put 'dGguaW11bChLLFV0KXwwLGs9aytNYXRoLmltdWwoSyxKKXwwLHk9eStNYXRoLmltdWwoRixsdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEYsZHQpfDApK01hdGguaW11bChxLGx0KXwwLGs9aytNYXRoLmltdWwocSxkdCl8MDt2YXIgc3Q9KFYrKHk9eStNYXRoLmltdWwoSCx2dCl8MCl8MCkrKCg4'@; put 'MTkxJih3PSh3PXcrTWF0aC5pbXVsKEgsa3QpfDApK01hdGguaW11bChULHZ0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKFQsa3QpfDApKyh3Pj4+MTMpfDApKyhzdD4+PjI2KXwwLHN0Jj02NzEwODg2Myx5PU1hdGguaW11bChFdCxTdCksdz0odz1NYXRoLmltdWwoRXQsT3QpKStN'@; put 'YXRoLmltdWwoX3QsU3QpfDAsaz1NYXRoLmltdWwoX3QsT3QpLHk9eStNYXRoLmltdWwoeXQsUnQpfDAsdz0odz13K01hdGguaW11bCh5dCxOdCl8MCkrTWF0aC5pbXVsKHd0LFJ0KXwwLGs9aytNYXRoLmltdWwod3QsTnQpfDAseT15K01hdGguaW11bChmdCxMdCl8MCx3PSh3PXcrTWF0aC5p'@; put 'bXVsKGZ0LHp0KXwwKStNYXRoLmltdWwocHQsTHQpfDAsaz1rK01hdGguaW11bChwdCx6dCl8MCx5PXkrTWF0aC5pbXVsKGl0LEJ0KXwwLHc9KHc9dytNYXRoLmltdWwoaXQsUHQpfDApK01hdGguaW11bChvdCxCdCl8MCxrPWsrTWF0aC5pbXVsKG90LFB0KXwwLHk9eStNYXRoLmltdWwoRyxG'@; put 'dCl8MCx3PSh3PXcrTWF0aC5pbXVsKEcsSXQpfDApK01hdGguaW11bChldCxGdCl8MCxrPWsrTWF0aC5pbXVsKGV0LEl0KXwwLHk9eStNYXRoLmltdWwodHQsVXQpfDAsdz0odz13K01hdGguaW11bCh0dCxKKXwwKStNYXRoLmltdWwoVyxVdCl8MCxrPWsrTWF0aC5pbXVsKFcsSil8MCx5PXkr'@; put 'TWF0aC5pbXVsKFgsbHQpfDAsdz0odz13K01hdGguaW11bChYLGR0KXwwKStNYXRoLmltdWwoSyxsdCl8MCxrPWsrTWF0aC5pbXVsKEssZHQpfDAseT15K01hdGguaW11bChGLHZ0KXwwLHc9KHc9dytNYXRoLmltdWwoRixrdCl8MCkrTWF0aC5pbXVsKHEsdnQpfDAsaz1rK01hdGguaW11bChx'@; put 'LGt0KXwwO3ZhciBjdD0oVisoeT15K01hdGguaW11bChILGp0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwoSCx4dCl8MCkrTWF0aC5pbXVsKFQsanQpfDApKTw8MTMpfDA7Vj0oKGs9aytNYXRoLmltdWwoVCx4dCl8MCkrKHc+Pj4xMyl8MCkrKGN0Pj4+MjYpfDAsY3QmPTY3MTA4'@; put 'ODYzLHk9TWF0aC5pbXVsKGd0LFN0KSx3PSh3PU1hdGguaW11bChndCxPdCkpK01hdGguaW11bChtdCxTdCl8MCxrPU1hdGguaW11bChtdCxPdCkseT15K01hdGguaW11bChFdCxSdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEV0LE50KXwwKStNYXRoLmltdWwoX3QsUnQpfDAsaz1rK01hdGguaW11'@; put 'bChfdCxOdCl8MCx5PXkrTWF0aC5pbXVsKHl0LEx0KXwwLHc9KHc9dytNYXRoLmltdWwoeXQsenQpfDApK01hdGguaW11bCh3dCxMdCl8MCxrPWsrTWF0aC5pbXVsKHd0LHp0KXwwLHk9eStNYXRoLmltdWwoZnQsQnQpfDAsdz0odz13K01hdGguaW11bChmdCxQdCl8MCkrTWF0aC5pbXVsKHB0'@; put 'LEJ0KXwwLGs9aytNYXRoLmltdWwocHQsUHQpfDAseT15K01hdGguaW11bChpdCxGdCl8MCx3PSh3PXcrTWF0aC5pbXVsKGl0LEl0KXwwKStNYXRoLmltdWwob3QsRnQpfDAsaz1rK01hdGguaW11bChvdCxJdCl8MCx5PXkrTWF0aC5pbXVsKEcsVXQpfDAsdz0odz13K01hdGguaW11bChHLEop'@; put 'fDApK01hdGguaW11bChldCxVdCl8MCxrPWsrTWF0aC5pbXVsKGV0LEopfDAseT15K01hdGguaW11bCh0dCxsdCl8MCx3PSh3PXcrTWF0aC5pbXVsKHR0LGR0KXwwKStNYXRoLmltdWwoVyxsdCl8MCxrPWsrTWF0aC5pbXVsKFcsZHQpfDAseT15K01hdGguaW11bChYLHZ0KXwwLHc9KHc9dytN'@; put 'YXRoLmltdWwoWCxrdCl8MCkrTWF0aC5pbXVsKEssdnQpfDAsaz1rK01hdGguaW11bChLLGt0KXwwLHk9eStNYXRoLmltdWwoRixqdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEYseHQpfDApK01hdGguaW11bChxLGp0KXwwLGs9aytNYXRoLmltdWwocSx4dCl8MDt2YXIgdXQ9KFYrKHk9eStNYXRo'@; put 'LmltdWwoSCxXdCl8MCl8MCkrKCg4MTkxJih3PSh3PXcrTWF0aC5pbXVsKEgsWHQpfDApK01hdGguaW11bChULFd0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKFQsWHQpfDApKyh3Pj4+MTMpfDApKyh1dD4+PjI2KXwwLHV0Jj02NzEwODg2Myx5PU1hdGguaW11bChndCxSdCksdz0o'@; put 'dz1NYXRoLmltdWwoZ3QsTnQpKStNYXRoLmltdWwobXQsUnQpfDAsaz1NYXRoLmltdWwobXQsTnQpLHk9eStNYXRoLmltdWwoRXQsTHQpfDAsdz0odz13K01hdGguaW11bChFdCx6dCl8MCkrTWF0aC5pbXVsKF90LEx0KXwwLGs9aytNYXRoLmltdWwoX3QsenQpfDAseT15K01hdGguaW11bCh5'@; put 'dCxCdCl8MCx3PSh3PXcrTWF0aC5pbXVsKHl0LFB0KXwwKStNYXRoLmltdWwod3QsQnQpfDAsaz1rK01hdGguaW11bCh3dCxQdCl8MCx5PXkrTWF0aC5pbXVsKGZ0LEZ0KXwwLHc9KHc9dytNYXRoLmltdWwoZnQsSXQpfDApK01hdGguaW11bChwdCxGdCl8MCxrPWsrTWF0aC5pbXVsKHB0LEl0'@; put 'KXwwLHk9eStNYXRoLmltdWwoaXQsVXQpfDAsdz0odz13K01hdGguaW11bChpdCxKKXwwKStNYXRoLmltdWwob3QsVXQpfDAsaz1rK01hdGguaW11bChvdCxKKXwwLHk9eStNYXRoLmltdWwoRyxsdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEcsZHQpfDApK01hdGguaW11bChldCxsdCl8MCxrPWsr'@; put 'TWF0aC5pbXVsKGV0LGR0KXwwLHk9eStNYXRoLmltdWwodHQsdnQpfDAsdz0odz13K01hdGguaW11bCh0dCxrdCl8MCkrTWF0aC5pbXVsKFcsdnQpfDAsaz1rK01hdGguaW11bChXLGt0KXwwLHk9eStNYXRoLmltdWwoWCxqdCl8MCx3PSh3PXcrTWF0aC5pbXVsKFgseHQpfDApK01hdGguaW11'@; put 'bChLLGp0KXwwLGs9aytNYXRoLmltdWwoSyx4dCl8MDt2YXIgYnQ9KFYrKHk9eStNYXRoLmltdWwoRixXdCl8MCl8MCkrKCg4MTkxJih3PSh3PXcrTWF0aC5pbXVsKEYsWHQpfDApK01hdGguaW11bChxLFd0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKHEsWHQpfDApKyh3Pj4+MTMp'@; put 'fDApKyhidD4+PjI2KXwwLGJ0Jj02NzEwODg2Myx5PU1hdGguaW11bChndCxMdCksdz0odz1NYXRoLmltdWwoZ3QsenQpKStNYXRoLmltdWwobXQsTHQpfDAsaz1NYXRoLmltdWwobXQsenQpLHk9eStNYXRoLmltdWwoRXQsQnQpfDAsdz0odz13K01hdGguaW11bChFdCxQdCl8MCkrTWF0aC5p'@; put 'bXVsKF90LEJ0KXwwLGs9aytNYXRoLmltdWwoX3QsUHQpfDAseT15K01hdGguaW11bCh5dCxGdCl8MCx3PSh3PXcrTWF0aC5pbXVsKHl0LEl0KXwwKStNYXRoLmltdWwod3QsRnQpfDAsaz1rK01hdGguaW11bCh3dCxJdCl8MCx5PXkrTWF0aC5pbXVsKGZ0LFV0KXwwLHc9KHc9dytNYXRoLmlt'@; put 'dWwoZnQsSil8MCkrTWF0aC5pbXVsKHB0LFV0KXwwLGs9aytNYXRoLmltdWwocHQsSil8MCx5PXkrTWF0aC5pbXVsKGl0LGx0KXwwLHc9KHc9dytNYXRoLmltdWwoaXQsZHQpfDApK01hdGguaW11bChvdCxsdCl8MCxrPWsrTWF0aC5pbXVsKG90LGR0KXwwLHk9eStNYXRoLmltdWwoRyx2dCl8'@; put 'MCx3PSh3PXcrTWF0aC5pbXVsKEcsa3QpfDApK01hdGguaW11bChldCx2dCl8MCxrPWsrTWF0aC5pbXVsKGV0LGt0KXwwLHk9eStNYXRoLmltdWwodHQsanQpfDAsdz0odz13K01hdGguaW11bCh0dCx4dCl8MCkrTWF0aC5pbXVsKFcsanQpfDAsaz1rK01hdGguaW11bChXLHh0KXwwO3ZhciBD'@; put 'dD0oVisoeT15K01hdGguaW11bChYLFd0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwoWCxYdCl8MCkrTWF0aC5pbXVsKEssV3QpfDApKTw8MTMpfDA7Vj0oKGs9aytNYXRoLmltdWwoSyxYdCl8MCkrKHc+Pj4xMyl8MCkrKEN0Pj4+MjYpfDAsQ3QmPTY3MTA4ODYzLHk9TWF0aC5p'@; put 'bXVsKGd0LEJ0KSx3PSh3PU1hdGguaW11bChndCxQdCkpK01hdGguaW11bChtdCxCdCl8MCxrPU1hdGguaW11bChtdCxQdCkseT15K01hdGguaW11bChFdCxGdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEV0LEl0KXwwKStNYXRoLmltdWwoX3QsRnQpfDAsaz1rK01hdGguaW11bChfdCxJdCl8MCx5'@; put 'PXkrTWF0aC5pbXVsKHl0LFV0KXwwLHc9KHc9dytNYXRoLmltdWwoeXQsSil8MCkrTWF0aC5pbXVsKHd0LFV0KXwwLGs9aytNYXRoLmltdWwod3QsSil8MCx5PXkrTWF0aC5pbXVsKGZ0LGx0KXwwLHc9KHc9dytNYXRoLmltdWwoZnQsZHQpfDApK01hdGguaW11bChwdCxsdCl8MCxrPWsrTWF0'@; put 'aC5pbXVsKHB0LGR0KXwwLHk9eStNYXRoLmltdWwoaXQsdnQpfDAsdz0odz13K01hdGguaW11bChpdCxrdCl8MCkrTWF0aC5pbXVsKG90LHZ0KXwwLGs9aytNYXRoLmltdWwob3Qsa3QpfDAseT15K01hdGguaW11bChHLGp0KXwwLHc9KHc9dytNYXRoLmltdWwoRyx4dCl8MCkrTWF0aC5pbXVs'@; put 'KGV0LGp0KXwwLGs9aytNYXRoLmltdWwoZXQseHQpfDA7dmFyIE10PShWKyh5PXkrTWF0aC5pbXVsKHR0LFd0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwodHQsWHQpfDApK01hdGguaW11bChXLFd0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKFcsWHQpfDApKyh3Pj4+'@; put 'MTMpfDApKyhNdD4+PjI2KXwwLE10Jj02NzEwODg2Myx5PU1hdGguaW11bChndCxGdCksdz0odz1NYXRoLmltdWwoZ3QsSXQpKStNYXRoLmltdWwobXQsRnQpfDAsaz1NYXRoLmltdWwobXQsSXQpLHk9eStNYXRoLmltdWwoRXQsVXQpfDAsdz0odz13K01hdGguaW11bChFdCxKKXwwKStNYXRo'@; put 'LmltdWwoX3QsVXQpfDAsaz1rK01hdGguaW11bChfdCxKKXwwLHk9eStNYXRoLmltdWwoeXQsbHQpfDAsdz0odz13K01hdGguaW11bCh5dCxkdCl8MCkrTWF0aC5pbXVsKHd0LGx0KXwwLGs9aytNYXRoLmltdWwod3QsZHQpfDAseT15K01hdGguaW11bChmdCx2dCl8MCx3PSh3PXcrTWF0aC5p'@; put 'bXVsKGZ0LGt0KXwwKStNYXRoLmltdWwocHQsdnQpfDAsaz1rK01hdGguaW11bChwdCxrdCl8MCx5PXkrTWF0aC5pbXVsKGl0LGp0KXwwLHc9KHc9dytNYXRoLmltdWwoaXQseHQpfDApK01hdGguaW11bChvdCxqdCl8MCxrPWsrTWF0aC5pbXVsKG90LHh0KXwwO3ZhciBLdD0oVisoeT15K01h'@; put 'dGguaW11bChHLFd0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwoRyxYdCl8MCkrTWF0aC5pbXVsKGV0LFd0KXwwKSk8PDEzKXwwO1Y9KChrPWsrTWF0aC5pbXVsKGV0LFh0KXwwKSsodz4+PjEzKXwwKSsoS3Q+Pj4yNil8MCxLdCY9NjcxMDg4NjMseT1NYXRoLmltdWwoZ3QsVXQp'@; put 'LHc9KHc9TWF0aC5pbXVsKGd0LEopKStNYXRoLmltdWwobXQsVXQpfDAsaz1NYXRoLmltdWwobXQsSikseT15K01hdGguaW11bChFdCxsdCl8MCx3PSh3PXcrTWF0aC5pbXVsKEV0LGR0KXwwKStNYXRoLmltdWwoX3QsbHQpfDAsaz1rK01hdGguaW11bChfdCxkdCl8MCx5PXkrTWF0aC5pbXVs'@; put 'KHl0LHZ0KXwwLHc9KHc9dytNYXRoLmltdWwoeXQsa3QpfDApK01hdGguaW11bCh3dCx2dCl8MCxrPWsrTWF0aC5pbXVsKHd0LGt0KXwwLHk9eStNYXRoLmltdWwoZnQsanQpfDAsdz0odz13K01hdGguaW11bChmdCx4dCl8MCkrTWF0aC5pbXVsKHB0LGp0KXwwLGs9aytNYXRoLmltdWwocHQs'@; put 'eHQpfDA7dmFyICR0PShWKyh5PXkrTWF0aC5pbXVsKGl0LFd0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwoaXQsWHQpfDApK01hdGguaW11bChvdCxXdCl8MCkpPDwxMyl8MDtWPSgoaz1rK01hdGguaW11bChvdCxYdCl8MCkrKHc+Pj4xMyl8MCkrKCR0Pj4+MjYpfDAsJHQmPTY3'@; put 'MTA4ODYzLHk9TWF0aC5pbXVsKGd0LGx0KSx3PSh3PU1hdGguaW11bChndCxkdCkpK01hdGguaW11bChtdCxsdCl8MCxrPU1hdGguaW11bChtdCxkdCkseT15K01hdGguaW11bChFdCx2dCl8MCx3PSh3PXcrTWF0aC5pbXVsKEV0LGt0KXwwKStNYXRoLmltdWwoX3QsdnQpfDAsaz1rK01hdGgu'@; put 'aW11bChfdCxrdCl8MCx5PXkrTWF0aC5pbXVsKHl0LGp0KXwwLHc9KHc9dytNYXRoLmltdWwoeXQseHQpfDApK01hdGguaW11bCh3dCxqdCl8MCxrPWsrTWF0aC5pbXVsKHd0LHh0KXwwO3ZhciBEdD0oVisoeT15K01hdGguaW11bChmdCxXdCl8MCl8MCkrKCg4MTkxJih3PSh3PXcrTWF0aC5p'@; put 'bXVsKGZ0LFh0KXwwKStNYXRoLmltdWwocHQsV3QpfDApKTw8MTMpfDA7Vj0oKGs9aytNYXRoLmltdWwocHQsWHQpfDApKyh3Pj4+MTMpfDApKyhEdD4+PjI2KXwwLER0Jj02NzEwODg2Myx5PU1hdGguaW11bChndCx2dCksdz0odz1NYXRoLmltdWwoZ3Qsa3QpKStNYXRoLmltdWwobXQsdnQp'@; put 'fDAsaz1NYXRoLmltdWwobXQsa3QpLHk9eStNYXRoLmltdWwoRXQsanQpfDAsdz0odz13K01hdGguaW11bChFdCx4dCl8MCkrTWF0aC5pbXVsKF90LGp0KXwwLGs9aytNYXRoLmltdWwoX3QseHQpfDA7dmFyIEh0PShWKyh5PXkrTWF0aC5pbXVsKHl0LFd0KXwwKXwwKSsoKDgxOTEmKHc9KHc9'@; put 'dytNYXRoLmltdWwoeXQsWHQpfDApK01hdGguaW11bCh3dCxXdCl8MCkpPDwxMyl8MDtWPSgoaz1rK01hdGguaW11bCh3dCxYdCl8MCkrKHc+Pj4xMyl8MCkrKEh0Pj4+MjYpfDAsSHQmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGd0LGp0KSx3PSh3PU1hdGguaW11bChndCx4dCkpK01hdGguaW11'@; put 'bChtdCxqdCl8MCxrPU1hdGguaW11bChtdCx4dCk7dmFyIHNlPShWKyh5PXkrTWF0aC5pbXVsKEV0LFd0KXwwKXwwKSsoKDgxOTEmKHc9KHc9dytNYXRoLmltdWwoRXQsWHQpfDApK01hdGguaW11bChfdCxXdCl8MCkpPDwxMyl8MDtWPSgoaz1rK01hdGguaW11bChfdCxYdCl8MCkrKHc+Pj4x'@; put 'Myl8MCkrKHNlPj4+MjYpfDAsc2UmPTY3MTA4ODYzO3ZhciBvZT0oVisoeT1NYXRoLmltdWwoZ3QsV3QpKXwwKSsoKDgxOTEmKHc9KHc9TWF0aC5pbXVsKGd0LFh0KSkrTWF0aC5pbXVsKG10LFd0KXwwKSk8PDEzKXwwO3JldHVybiBWPSgoaz1NYXRoLmltdWwobXQsWHQpKSsodz4+PjEzKXww'@; put 'KSsob2U+Pj4yNil8MCxvZSY9NjcxMDg4NjMsVVswXT1yZSxVWzFdPWllLFVbMl09dWUsVVszXT1kZSxVWzRdPWxlLFVbNV09ZmUsVVs2XT1aLFVbN109c3QsVVs4XT1jdCxVWzldPXV0LFVbMTBdPWJ0LFVbMTFdPUN0LFVbMTJdPU10LFVbMTNdPUt0LFVbMTRdPSR0LFVbMTVdPUR0LFVbMTZd'@; put 'PUh0LFVbMTddPXNlLFVbMThdPW9lLDAhPT1WJiYoVVsxOV09VixnLmxlbmd0aCsrKSxnfTtmdW5jdGlvbiBBKGMsbSxnKXtnLm5lZ2F0aXZlPW0ubmVnYXRpdmVeYy5uZWdhdGl2ZSxnLmxlbmd0aD1jLmxlbmd0aCttLmxlbmd0aDtmb3IodmFyIHk9MCx3PTAsaz0wO2s8Zy5sZW5ndGgtMTtr'@; put 'Kyspe3ZhciBPPXc7dz0wO2Zvcih2YXIgej02NzEwODg2MyZ5LFU9TWF0aC5taW4oayxtLmxlbmd0aC0xKSxWPU1hdGgubWF4KDAsay1jLmxlbmd0aCsxKTtWPD1VO1YrKyl7dmFyIEg9KDB8Yy53b3Jkc1trLVZdKSooMHxtLndvcmRzW1ZdKSxUPTY3MTA4ODYzJkg7ej02NzEwODg2MyYoVD1U'@; put 'K3p8MCksdys9KE89KE89TysoSC82NzEwODg2NHwwKXwwKSsoVD4+PjI2KXwwKT4+PjI2LE8mPTY3MTA4ODYzfWcud29yZHNba109eix5PU8sTz13fXJldHVybiAwIT09eT9nLndvcmRzW2tdPXk6Zy5sZW5ndGgtLSxnLl9zdHJpcCgpfWZ1bmN0aW9uIEkoYyxtLGcpe3JldHVybiBBKGMsbSxn'@; put 'KX1mdW5jdGlvbiBMKGMsbSl7dGhpcy54PWMsdGhpcy55PW19TWF0aC5pbXVsfHwoXz12KSx0LnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihjLG0pe3ZhciBnPXRoaXMubGVuZ3RoK2MubGVuZ3RoO3JldHVybiAxMD09PXRoaXMubGVuZ3RoJiYxMD09PWMubGVuZ3RoP18odGhpcyxjLG0pOmc8'@; put 'NjM/dih0aGlzLGMsbSk6ZzwxMDI0P0EodGhpcyxjLG0pOkkodGhpcyxjLG0pfSxMLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGMpe2Zvcih2YXIgbT1uZXcgQXJyYXkoYyksZz10LnByb3RvdHlwZS5fY291bnRCaXRzKGMpLTEseT0wO3k8Yzt5KyspbVt5XT10aGlzLnJldkJpbih5LGcs'@; put 'Yyk7cmV0dXJuIG19LEwucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihjLG0sZyl7aWYoMD09PWN8fGM9PT1nLTEpcmV0dXJuIGM7Zm9yKHZhciB5PTAsdz0wO3c8bTt3KyspeXw9KDEmYyk8PG0tdy0xLGM+Pj0xO3JldHVybiB5fSxMLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGMsbSxn'@; put 'LHksdyxrKXtmb3IodmFyIE89MDtPPGs7TysrKXlbT109bVtjW09dXSx3W09dPWdbY1tPXV19LEwucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihjLG0sZyx5LHcsayl7dGhpcy5wZXJtdXRlKGssYyxtLGcseSx3KTtmb3IodmFyIE89MTtPPHc7Tzw8PTEpZm9yKHZhciB6PU88PDEsVT1N'@; put 'YXRoLmNvcygyKk1hdGguUEkveiksVj1NYXRoLnNpbigyKk1hdGguUEkveiksUj0wO1I8dztSKz16KWZvcih2YXIgSD1VLFQ9VixDPTA7QzxPO0MrKyl7dmFyIEY9Z1tSK0NdLHE9eVtSK0NdLFk9Z1tSK0MrT10sWD15W1IrQytPXSxLPUgqWS1UKlg7WD1IKlgrVCpZLGdbUitDXT1GKyhZPUsp'@; put 'LHlbUitDXT1xK1gsZ1tSK0MrT109Ri1ZLHlbUitDK09dPXEtWCxDIT09eiYmKEs9VSpILVYqVCxUPVUqVCtWKkgsSD1LKX19LEwucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGMsbSl7dmFyIGc9MXxNYXRoLm1heChtLGMpLHk9MSZnLHc9MDtmb3IoZz1nLzJ8MDtnO2c+Pj49MSl3'@; put 'Kys7cmV0dXJuIDE8PHcrMSt5fSxMLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oYyxtLGcpe2lmKCEoZzw9MSkpZm9yKHZhciB5PTA7eTxnLzI7eSsrKXt2YXIgdz1jW3ldO2NbeV09Y1tnLXktMV0sY1tnLXktMV09dyx3PW1beV0sbVt5XT0tbVtnLXktMV0sbVtnLXktMV09LXd9fSxM'@; put 'LnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oYyxtKXtmb3IodmFyIGc9MCx5PTA7eTxtLzI7eSsrKXt2YXIgdz04MTkyKk1hdGgucm91bmQoY1syKnkrMV0vbSkrTWF0aC5yb3VuZChjWzIqeV0vbSkrZztjW3ldPTY3MTA4ODYzJncsZz13PDY3MTA4ODY0PzA6dy82NzEwODg2NHww'@; put 'fXJldHVybiBjfSxMLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGMsbSxnLHkpe2Zvcih2YXIgdz0wLGs9MDtrPG07aysrKWdbMiprXT04MTkxJih3Kz0wfGNba10pLGdbMiprKzFdPTgxOTEmKHc+Pj49MTMpLHc+Pj49MTM7Zm9yKGs9MiptO2s8eTsrK2spZ1trXT0wO28oMD09PXcp'@; put 'LG8oISgtODE5MiZ3KSl9LEwucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oYyl7Zm9yKHZhciBtPW5ldyBBcnJheShjKSxnPTA7ZzxjO2crKyltW2ddPTA7cmV0dXJuIG19LEwucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYyxtLGcpe3ZhciB5PTIqdGhpcy5ndWVzc0xlbjEzYihjLmxlbmd0aCxt'@; put 'Lmxlbmd0aCksdz10aGlzLm1ha2VSQlQoeSksaz10aGlzLnN0dWIoeSksTz1uZXcgQXJyYXkoeSksej1uZXcgQXJyYXkoeSksVT1uZXcgQXJyYXkoeSksVj1uZXcgQXJyYXkoeSksUj1uZXcgQXJyYXkoeSksSD1uZXcgQXJyYXkoeSksVD1nLndvcmRzO1QubGVuZ3RoPXksdGhpcy5jb252ZXJ0'@; put 'MTNiKGMud29yZHMsYy5sZW5ndGgsTyx5KSx0aGlzLmNvbnZlcnQxM2IobS53b3JkcyxtLmxlbmd0aCxWLHkpLHRoaXMudHJhbnNmb3JtKE8sayx6LFUseSx3KSx0aGlzLnRyYW5zZm9ybShWLGssUixILHksdyk7Zm9yKHZhciBDPTA7Qzx5O0MrKyl7dmFyIEY9eltDXSpSW0NdLVVbQ10qSFtD'@; put 'XTtVW0NdPXpbQ10qSFtDXStVW0NdKlJbQ10seltDXT1GfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh6LFUseSksdGhpcy50cmFuc2Zvcm0oeixVLFQsayx5LHcpLHRoaXMuY29uanVnYXRlKFQsayx5KSx0aGlzLm5vcm1hbGl6ZTEzYihULHkpLGcubmVnYXRpdmU9Yy5uZWdhdGl2ZV5tLm5lZ2F0'@; put 'aXZlLGcubGVuZ3RoPWMubGVuZ3RoK20ubGVuZ3RoLGcuX3N0cmlwKCl9LHQucHJvdG90eXBlLm11bD1mdW5jdGlvbihjKXt2YXIgbT1uZXcgdChudWxsKTtyZXR1cm4gbS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrYy5sZW5ndGgpLHRoaXMubXVsVG8oYyxtKX0sdC5wcm90b3R5cGUu'@; put 'bXVsZj1mdW5jdGlvbihjKXt2YXIgbT1uZXcgdChudWxsKTtyZXR1cm4gbS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrYy5sZW5ndGgpLEkodGhpcyxjLG0pfSx0LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oYyx0aGlzKX0sdC5wcm90'@; put 'b3R5cGUuaW11bG49ZnVuY3Rpb24oYyl7dmFyIG09YzwwO20mJihjPS1jKSxvKCJudW1iZXIiPT10eXBlb2YgYyksbyhjPDY3MTA4ODY0KTtmb3IodmFyIGc9MCx5PTA7eTx0aGlzLmxlbmd0aDt5Kyspe3ZhciB3PSgwfHRoaXMud29yZHNbeV0pKmMsaz0oNjcxMDg4NjMmdykrKDY3MTA4ODYz'@; put 'JmcpO2c+Pj0yNixnKz13LzY3MTA4ODY0fDAsZys9az4+PjI2LHRoaXMud29yZHNbeV09NjcxMDg4NjMma31yZXR1cm4gMCE9PWcmJih0aGlzLndvcmRzW3ldPWcsdGhpcy5sZW5ndGgrKyksbT90aGlzLmluZWcoKTp0aGlzfSx0LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGMpe3JldHVybiB0'@; put 'aGlzLmNsb25lKCkuaW11bG4oYyl9LHQucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sdC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sdC5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGMpe3ZhciBt'@; put 'PWZ1bmN0aW9uKGspe2Zvcih2YXIgTz1uZXcgQXJyYXkoay5iaXRMZW5ndGgoKSksej0wO3o8Ty5sZW5ndGg7eisrKU9bel09ay53b3Jkc1t6LzI2fDBdPj4+eiUyNiYxO3JldHVybiBPfShjKTtpZigwPT09bS5sZW5ndGgpcmV0dXJuIG5ldyB0KDEpO2Zvcih2YXIgZz10aGlzLHk9MDt5PG0u'@; put 'bGVuZ3RoJiYwPT09bVt5XTt5KyssZz1nLnNxcigpKTtpZigrK3k8bS5sZW5ndGgpZm9yKHZhciB3PWcuc3FyKCk7eTxtLmxlbmd0aDt5Kyssdz13LnNxcigpKTAhPT1tW3ldJiYoZz1nLm11bCh3KSk7cmV0dXJuIGd9LHQucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihjKXtvKCJudW1iZXIi'@; put 'PT10eXBlb2YgYyYmYz49MCk7dmFyIG0sZz1jJTI2LHk9KGMtZykvMjYsdz02NzEwODg2Mz4+PjI2LWc8PDI2LWc7aWYoMCE9PWcpe3ZhciBrPTA7Zm9yKG09MDttPHRoaXMubGVuZ3RoO20rKyl7dmFyIE89dGhpcy53b3Jkc1ttXSZ3O3RoaXMud29yZHNbbV09KDB8dGhpcy53b3Jkc1ttXSkt'@; put 'Tzw8Z3xrLGs9Tz4+PjI2LWd9ayYmKHRoaXMud29yZHNbbV09ayx0aGlzLmxlbmd0aCsrKX1pZigwIT09eSl7Zm9yKG09dGhpcy5sZW5ndGgtMTttPj0wO20tLSl0aGlzLndvcmRzW20reV09dGhpcy53b3Jkc1ttXTtmb3IobT0wO208eTttKyspdGhpcy53b3Jkc1ttXT0wO3RoaXMubGVuZ3Ro'@; put 'Kz15fXJldHVybiB0aGlzLl9zdHJpcCgpfSx0LnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihjKXtyZXR1cm4gbygwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oYyl9LHQucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihjLG0sZyl7dmFyIHk7bygibnVtYmVyIj09dHlwZW9mIGMmJmM+'@; put 'PTApLHk9bT8obS1tJTI2KS8yNjowO3ZhciB3PWMlMjYsaz1NYXRoLm1pbigoYy13KS8yNix0aGlzLmxlbmd0aCksTz02NzEwODg2M142NzEwODg2Mz4+Pnc8PHcsej1nO2lmKHktPWsseT1NYXRoLm1heCgwLHkpLHope2Zvcih2YXIgVT0wO1U8aztVKyspei53b3Jkc1tVXT10aGlzLndvcmRz'@; put 'W1VdO3oubGVuZ3RoPWt9aWYoMCE9PWspaWYodGhpcy5sZW5ndGg+aylmb3IodGhpcy5sZW5ndGgtPWssVT0wO1U8dGhpcy5sZW5ndGg7VSsrKXRoaXMud29yZHNbVV09dGhpcy53b3Jkc1tVK2tdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIFY9MDtmb3IoVT10aGlz'@; put 'Lmxlbmd0aC0xO1U+PTAmJigwIT09Vnx8VT49eSk7VS0tKXt2YXIgUj0wfHRoaXMud29yZHNbVV07dGhpcy53b3Jkc1tVXT1WPDwyNi13fFI+Pj53LFY9UiZPfXJldHVybiB6JiYwIT09ViYmKHoud29yZHNbei5sZW5ndGgrK109ViksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0w'@; put 'LHRoaXMubGVuZ3RoPTEpLHRoaXMuX3N0cmlwKCl9LHQucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGMsbSxnKXtyZXR1cm4gbygwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYyxtLGcpfSx0LnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNsb25lKCkuaXNo'@; put 'bG4oYyl9LHQucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGMpfSx0LnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYyl9LHQucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKGMpe3JldHVybiB0'@; put 'aGlzLmNsb25lKCkuaXVzaHJuKGMpfSx0LnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihjKXtvKCJudW1iZXIiPT10eXBlb2YgYyYmYz49MCk7dmFyIG09YyUyNixnPShjLW0pLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWd8fCEodGhpcy53b3Jkc1tnXSYxPDxtKSl9LHQucHJvdG90eXBlLmlt'@; put 'YXNrbj1mdW5jdGlvbihjKXtvKCJudW1iZXIiPT10eXBlb2YgYyYmYz49MCk7dmFyIG09YyUyNixnPShjLW0pLzI2O3JldHVybiBvKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Zz90aGlzOigwIT09bSYm'@; put 'ZysrLHRoaXMubGVuZ3RoPU1hdGgubWluKGcsdGhpcy5sZW5ndGgpLDAhPT1tJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5tPDxtKSx0aGlzLl9zdHJpcCgpKX0sdC5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY2xvbmUo'@; put 'KS5pbWFza24oYyl9LHQucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKGMpe3JldHVybiBvKCJudW1iZXIiPT10eXBlb2YgYyksbyhjPDY3MTA4ODY0KSxjPDA/dGhpcy5pc3VibigtYyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTw9Yz8odGhp'@; put 'cy53b3Jkc1swXT1jLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oYyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGMpfSx0LnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oYyl7dGhpcy53b3Jkc1sw'@; put 'XSs9Yztmb3IodmFyIG09MDttPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW21dPj02NzEwODg2NDttKyspdGhpcy53b3Jkc1ttXS09NjcxMDg4NjQsbT09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1ttKzFdPTE6dGhpcy53b3Jkc1ttKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4'@; put 'KHRoaXMubGVuZ3RoLG0rMSksdGhpc30sdC5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oYyl7aWYobygibnVtYmVyIj09dHlwZW9mIGMpLG8oYzw2NzEwODg2NCksYzwwKXJldHVybiB0aGlzLmlhZGRuKC1jKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRo'@; put 'aXMuaWFkZG4oYyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09YywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgbT0wO208dGhpcy5sZW5ndGgmJnRo'@; put 'aXMud29yZHNbbV08MDttKyspdGhpcy53b3Jkc1ttXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1ttKzFdLT0xO3JldHVybiB0aGlzLl9zdHJpcCgpfSx0LnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oYyl9LHQucHJvdG90eXBlLnN1Ym49ZnVuY3Rp'@; put 'b24oYyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihjKX0sdC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sdC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LHQucHJvdG90eXBlLl9pc2hs'@; put 'bnN1Ym11bD1mdW5jdGlvbihjLG0sZyl7dmFyIHksdzt0aGlzLl9leHBhbmQoYy5sZW5ndGgrZyk7dmFyIE89MDtmb3IoeT0wO3k8Yy5sZW5ndGg7eSsrKXt3PSgwfHRoaXMud29yZHNbeStnXSkrTzt2YXIgej0oMHxjLndvcmRzW3ldKSptO089KCh3LT02NzEwODg2MyZ6KT4+MjYpLSh6LzY3'@; put 'MTA4ODY0fDApLHRoaXMud29yZHNbeStnXT02NzEwODg2MyZ3fWZvcig7eTx0aGlzLmxlbmd0aC1nO3krKylPPSh3PSgwfHRoaXMud29yZHNbeStnXSkrTyk+PjI2LHRoaXMud29yZHNbeStnXT02NzEwODg2MyZ3O2lmKDA9PT1PKXJldHVybiB0aGlzLl9zdHJpcCgpO2ZvcihvKC0xPT09Tyks'@; put 'Tz0wLHk9MDt5PHRoaXMubGVuZ3RoO3krKylPPSh3PS0oMHx0aGlzLndvcmRzW3ldKStPKT4+MjYsdGhpcy53b3Jkc1t5XT02NzEwODg2MyZ3O3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fc3RyaXAoKX0sdC5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oYyxtKXt2YXIgZyx5PXRo'@; put 'aXMuY2xvbmUoKSx3PWMsaz0wfHcud29yZHNbdy5sZW5ndGgtMV07MCE9KGc9MjYtdGhpcy5fY291bnRCaXRzKGspKSYmKHc9dy51c2hsbihnKSx5Lml1c2hsbihnKSxrPTB8dy53b3Jkc1t3Lmxlbmd0aC0xXSk7dmFyIE8sej15Lmxlbmd0aC13Lmxlbmd0aDtpZigibW9kIiE9PW0peyhPPW5l'@; put 'dyB0KG51bGwpKS5sZW5ndGg9eisxLE8ud29yZHM9bmV3IEFycmF5KE8ubGVuZ3RoKTtmb3IodmFyIFU9MDtVPE8ubGVuZ3RoO1UrKylPLndvcmRzW1VdPTB9dmFyIFY9eS5jbG9uZSgpLl9pc2hsbnN1Ym11bCh3LDEseik7MD09PVYubmVnYXRpdmUmJih5PVYsTyYmKE8ud29yZHNbel09MSkp'@; put 'O2Zvcih2YXIgUj16LTE7Uj49MDtSLS0pe3ZhciBIPTY3MTA4ODY0KigwfHkud29yZHNbdy5sZW5ndGgrUl0pKygwfHkud29yZHNbdy5sZW5ndGgrUi0xXSk7Zm9yKEg9TWF0aC5taW4oSC9rfDAsNjcxMDg4NjMpLHkuX2lzaGxuc3VibXVsKHcsSCxSKTswIT09eS5uZWdhdGl2ZTspSC0tLHku'@; put 'bmVnYXRpdmU9MCx5Ll9pc2hsbnN1Ym11bCh3LDEsUikseS5pc1plcm8oKXx8KHkubmVnYXRpdmVePTEpO08mJihPLndvcmRzW1JdPUgpfXJldHVybiBPJiZPLl9zdHJpcCgpLHkuX3N0cmlwKCksImRpdiIhPT1tJiYwIT09ZyYmeS5pdXNocm4oZykse2RpdjpPfHxudWxsLG1vZDp5fX0sdC5w'@; put 'cm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGMsbSxnKXtyZXR1cm4gbyghYy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyB0KDApLG1vZDpuZXcgdCgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1jLm5lZ2F0aXZlPyhrPXRoaXMubmVnKCkuZGl2bW9kKGMsbSksIm1vZCIhPT1t'@; put 'JiYoeT1rLmRpdi5uZWcoKSksImRpdiIhPT1tJiYodz1rLm1vZC5uZWcoKSxnJiYwIT09dy5uZWdhdGl2ZSYmdy5pYWRkKGMpKSx7ZGl2OnksbW9kOnd9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWMubmVnYXRpdmU/KGs9dGhpcy5kaXZtb2QoYy5uZWcoKSxtKSwibW9kIiE9PW0mJih5PWsu'@; put 'ZGl2Lm5lZygpKSx7ZGl2OnksbW9kOmsubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmYy5uZWdhdGl2ZSk/KGs9dGhpcy5uZWcoKS5kaXZtb2QoYy5uZWcoKSxtKSwiZGl2IiE9PW0mJih3PWsubW9kLm5lZygpLGcmJjAhPT13Lm5lZ2F0aXZlJiZ3LmlzdWIoYykpLHtkaXY6ay5kaXYsbW9kOnd9'@; put 'KTpjLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoYyk8MD97ZGl2Om5ldyB0KDApLG1vZDp0aGlzfToxPT09Yy5sZW5ndGg/ImRpdiI9PT1tP3tkaXY6dGhpcy5kaXZuKGMud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PW0/e2RpdjpudWxsLG1vZDpuZXcgdCh0aGlzLm1vZHJuKGMu'@; put 'd29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oYy53b3Jkc1swXSksbW9kOm5ldyB0KHRoaXMubW9kcm4oYy53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGMsbSk7dmFyIHksdyxrfSx0LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZGl2bW9kKGMsImRpdiIsITEpLmRp'@; put 'dn0sdC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmRpdm1vZChjLCJtb2QiLCExKS5tb2R9LHQucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZGl2bW9kKGMsIm1vZCIsITApLm1vZH0sdC5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oYyl7'@; put 'dmFyIG09dGhpcy5kaXZtb2QoYyk7aWYobS5tb2QuaXNaZXJvKCkpcmV0dXJuIG0uZGl2O3ZhciBnPTAhPT1tLmRpdi5uZWdhdGl2ZT9tLm1vZC5pc3ViKGMpOm0ubW9kLHk9Yy51c2hybigxKSx3PWMuYW5kbG4oMSksaz1nLmNtcCh5KTtyZXR1cm4gazwwfHwxPT09dyYmMD09PWs/bS5kaXY6'@; put 'MCE9PW0uZGl2Lm5lZ2F0aXZlP20uZGl2LmlzdWJuKDEpOm0uZGl2LmlhZGRuKDEpfSx0LnByb3RvdHlwZS5tb2Rybj1mdW5jdGlvbihjKXt2YXIgbT1jPDA7bSYmKGM9LWMpLG8oYzw9NjcxMDg4NjMpO2Zvcih2YXIgZz0oMTw8MjYpJWMseT0wLHc9dGhpcy5sZW5ndGgtMTt3Pj0wO3ctLSl5'@; put 'PShnKnkrKDB8dGhpcy53b3Jkc1t3XSkpJWM7cmV0dXJuIG0/LXk6eX0sdC5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5tb2RybihjKX0sdC5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oYyl7dmFyIG09YzwwO20mJihjPS1jKSxvKGM8PTY3MTA4ODYzKTtmb3IodmFy'@; put 'IGc9MCx5PXRoaXMubGVuZ3RoLTE7eT49MDt5LS0pe3ZhciB3PSgwfHRoaXMud29yZHNbeV0pKzY3MTA4ODY0Kmc7dGhpcy53b3Jkc1t5XT13L2N8MCxnPXclY31yZXR1cm4gdGhpcy5fc3RyaXAoKSxtP3RoaXMuaW5lZygpOnRoaXN9LHQucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oYyl7cmV0'@; put 'dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihjKX0sdC5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihjKXtvKDA9PT1jLm5lZ2F0aXZlKSxvKCFjLmlzWmVybygpKTt2YXIgbT10aGlzLGc9Yy5jbG9uZSgpO209MCE9PW0ubmVnYXRpdmU/bS51bW9kKGMpOm0uY2xvbmUoKTtmb3IodmFyIHk9bmV3IHQo'@; put 'MSksdz1uZXcgdCgwKSxrPW5ldyB0KDApLE89bmV3IHQoMSksej0wO20uaXNFdmVuKCkmJmcuaXNFdmVuKCk7KW0uaXVzaHJuKDEpLGcuaXVzaHJuKDEpLCsrejtmb3IodmFyIFU9Zy5jbG9uZSgpLFY9bS5jbG9uZSgpOyFtLmlzWmVybygpOyl7Zm9yKHZhciBSPTAsSD0xOzA9PShtLndvcmRz'@; put 'WzBdJkgpJiZSPDI2OysrUixIPDw9MSk7aWYoUj4wKWZvcihtLml1c2hybihSKTtSLS0gPjA7KSh5LmlzT2RkKCl8fHcuaXNPZGQoKSkmJih5LmlhZGQoVSksdy5pc3ViKFYpKSx5Lml1c2hybigxKSx3Lml1c2hybigxKTtmb3IodmFyIFQ9MCxDPTE7MD09KGcud29yZHNbMF0mQykmJlQ8MjY7'@; put 'KytULEM8PD0xKTtpZihUPjApZm9yKGcuaXVzaHJuKFQpO1QtLSA+MDspKGsuaXNPZGQoKXx8Ty5pc09kZCgpKSYmKGsuaWFkZChVKSxPLmlzdWIoVikpLGsuaXVzaHJuKDEpLE8uaXVzaHJuKDEpO20uY21wKGcpPj0wPyhtLmlzdWIoZykseS5pc3ViKGspLHcuaXN1YihPKSk6KGcuaXN1Yiht'@; put 'KSxrLmlzdWIoeSksTy5pc3ViKHcpKX1yZXR1cm57YTprLGI6TyxnY2Q6Zy5pdXNobG4oeil9fSx0LnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oYyl7bygwPT09Yy5uZWdhdGl2ZSksbyghYy5pc1plcm8oKSk7dmFyIG09dGhpcyxnPWMuY2xvbmUoKTttPTAhPT1tLm5lZ2F0aXZlP20udW1v'@; put 'ZChjKTptLmNsb25lKCk7Zm9yKHZhciB5LHc9bmV3IHQoMSksaz1uZXcgdCgwKSxPPWcuY2xvbmUoKTttLmNtcG4oMSk+MCYmZy5jbXBuKDEpPjA7KXtmb3IodmFyIHo9MCxVPTE7MD09KG0ud29yZHNbMF0mVSkmJno8MjY7Kyt6LFU8PD0xKTtpZih6PjApZm9yKG0uaXVzaHJuKHopO3otLSA+'@; put 'MDspdy5pc09kZCgpJiZ3LmlhZGQoTyksdy5pdXNocm4oMSk7Zm9yKHZhciBWPTAsUj0xOzA9PShnLndvcmRzWzBdJlIpJiZWPDI2OysrVixSPDw9MSk7aWYoVj4wKWZvcihnLml1c2hybihWKTtWLS0gPjA7KWsuaXNPZGQoKSYmay5pYWRkKE8pLGsuaXVzaHJuKDEpO20uY21wKGcpPj0wPyht'@; put 'LmlzdWIoZyksdy5pc3ViKGspKTooZy5pc3ViKG0pLGsuaXN1Yih3KSl9cmV0dXJuKHk9MD09PW0uY21wbigxKT93OmspLmNtcG4oMCk8MCYmeS5pYWRkKGMpLHl9LHQucHJvdG90eXBlLmdjZD1mdW5jdGlvbihjKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBjLmFicygpO2lmKGMuaXNaZXJv'@; put 'KCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIG09dGhpcy5jbG9uZSgpLGc9Yy5jbG9uZSgpO20ubmVnYXRpdmU9MCxnLm5lZ2F0aXZlPTA7Zm9yKHZhciB5PTA7bS5pc0V2ZW4oKSYmZy5pc0V2ZW4oKTt5KyspbS5pdXNocm4oMSksZy5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO20uaXNFdmVuKCk7'@; put 'KW0uaXVzaHJuKDEpO2Zvcig7Zy5pc0V2ZW4oKTspZy5pdXNocm4oMSk7dmFyIHc9bS5jbXAoZyk7aWYodzwwKXt2YXIgaz1tO209ZyxnPWt9ZWxzZSBpZigwPT09d3x8MD09PWcuY21wbigxKSlicmVhazttLmlzdWIoZyl9cmV0dXJuIGcuaXVzaGxuKHkpfSx0LnByb3RvdHlwZS5pbnZtPWZ1'@; put 'bmN0aW9uKGMpe3JldHVybiB0aGlzLmVnY2QoYykuYS51bW9kKGMpfSx0LnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LHQucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sdC5wcm90b3R5cGUu'@; put 'YW5kbG49ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMud29yZHNbMF0mY30sdC5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYyl7bygibnVtYmVyIj09dHlwZW9mIGMpO3ZhciBtPWMlMjYsZz0oYy1tKS8yNix5PTE8PG07aWYodGhpcy5sZW5ndGg8PWcpcmV0dXJuIHRoaXMuX2V4cGFuZChnKzEp'@; put 'LHRoaXMud29yZHNbZ118PXksdGhpcztmb3IodmFyIHc9eSxrPWc7MCE9PXcmJms8dGhpcy5sZW5ndGg7aysrKXt2YXIgTz0wfHRoaXMud29yZHNba107dz0oTys9dyk+Pj4yNix0aGlzLndvcmRzW2tdPU8mPTY3MTA4ODYzfXJldHVybiAwIT09dyYmKHRoaXMud29yZHNba109dyx0aGlzLmxl'@; put 'bmd0aCsrKSx0aGlzfSx0LnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sdC5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihjKXt2YXIgbSxnPWM8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIWcpcmV0dXJuLTE7aWYo'@; put 'MD09PXRoaXMubmVnYXRpdmUmJmcpcmV0dXJuIDE7aWYodGhpcy5fc3RyaXAoKSx0aGlzLmxlbmd0aD4xKW09MTtlbHNle2cmJihjPS1jKSxvKGM8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciB5PTB8dGhpcy53b3Jkc1swXTttPXk9PT1jPzA6eTxjPy0xOjF9cmV0dXJuIDAh'@; put 'PT10aGlzLm5lZ2F0aXZlPzB8LW06bX0sdC5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGMpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yy5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWMubmVnYXRpdmUpcmV0dXJuIDE7dmFyIG09dGhpcy51Y21wKGMpO3Jl'@; put 'dHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1tOm19LHQucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oYyl7aWYodGhpcy5sZW5ndGg+Yy5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Yy5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBtPTAsZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXt2'@; put 'YXIgeT0wfHRoaXMud29yZHNbZ10sdz0wfGMud29yZHNbZ107aWYoeSE9PXcpe3k8dz9tPS0xOnk+dyYmKG09MSk7YnJlYWt9fXJldHVybiBtfSx0LnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oYyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oYyl9LHQucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGMpe3Jl'@; put 'dHVybiAxPT09dGhpcy5jbXAoYyl9LHQucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY21wbihjKT49MH0sdC5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNtcChjKT49MH0sdC5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGMpe3JldHVybi0xPT09'@; put 'dGhpcy5jbXBuKGMpfSx0LnByb3RvdHlwZS5sdD1mdW5jdGlvbihjKXtyZXR1cm4tMT09PXRoaXMuY21wKGMpfSx0LnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmNtcG4oYyk8PTB9LHQucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5jbXAoYyk8'@; put 'PTB9LHQucHJvdG90eXBlLmVxbj1mdW5jdGlvbihjKXtyZXR1cm4gMD09PXRoaXMuY21wbihjKX0sdC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oYyl7cmV0dXJuIDA9PT10aGlzLmNtcChjKX0sdC5yZWQ9ZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBNKGMpfSx0LnByb3RvdHlwZS50b1JlZD1mdW5j'@; put 'dGlvbihjKXtyZXR1cm4gbyghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxvKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGMuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjKX0sdC5wcm90b3R5cGUu'@; put 'ZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBvKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LHQucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihjKXtyZXR1cm4gdGhp'@; put 'cy5yZWQ9Yyx0aGlzfSx0LnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihjKXtyZXR1cm4gbyghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChjKX0sdC5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGMpe3JldHVybiBv'@; put 'KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYyl9LHQucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oYyl7cmV0dXJuIG8odGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5y'@; put 'ZWQuaWFkZCh0aGlzLGMpfSx0LnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYyl7cmV0dXJuIG8odGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxjKX0sdC5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihjKXtyZXR1cm4g'@; put 'byh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYyl9LHQucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihjKXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMu'@; put 'cmVkLnNobCh0aGlzLGMpfSx0LnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYyl7cmV0dXJuIG8odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGMpLHRoaXMucmVkLm11bCh0aGlzLGMpfSx0LnByb3RvdHlwZS5y'@; put 'ZWRJTXVsPWZ1bmN0aW9uKGMpe3JldHVybiBvKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxjKSx0aGlzLnJlZC5pbXVsKHRoaXMsYyl9LHQucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBvKHRo'@; put 'aXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSx0LnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJl'@; put 'ZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sdC5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBvKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRo'@; put 'aXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LHQucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSx0LnByb3Rv'@; put 'dHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sdC5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGMpe3JldHVybiBvKHRo'@; put 'aXMucmVkJiYhYy5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYyl9O3ZhciBOPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gUChjLG0pe3RoaXMubmFtZT1jLHRoaXMu'@; put 'cD1uZXcgdChtLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgdCgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gQigpe1AuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg'@; put 'ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiAkKCl7UC5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIEQoKXtQLmNhbGwo'@; put 'dGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24geCgpe1AuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZm'@; put 'ZmZmZWQiKX1mdW5jdGlvbiBNKGMpe2lmKCJzdHJpbmciPT10eXBlb2YgYyl7dmFyIG09dC5fcHJpbWUoYyk7dGhpcy5tPW0ucCx0aGlzLnByaW1lPW19ZWxzZSBvKGMuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Yyx0aGlzLnByaW1lPW51bGx9ZnVu'@; put 'Y3Rpb24gaihjKXtNLmNhbGwodGhpcyxjKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyB0KDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIu'@; put 'c3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVAucHJvdG90'@; put 'eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgYz1uZXcgdChudWxsKTtyZXR1cm4gYy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGN9LFAucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oYyl7dmFyIG0sZz1jO2Rve3RoaXMuc3BsaXQoZyx0aGlzLnRtcCksbT0oZz0oZz10'@; put 'aGlzLmltdWxLKGcpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUobT50aGlzLm4pO3ZhciB5PW08dGhpcy5uPy0xOmcudWNtcCh0aGlzLnApO3JldHVybiAwPT09eT8oZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEpOnk+MD9nLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1nLnN0cmlw'@; put 'P2cuc3RyaXAoKTpnLl9zdHJpcCgpLGd9LFAucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGMsbSl7Yy5pdXNocm4odGhpcy5uLDAsbSl9LFAucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGMpe3JldHVybiBjLmltdWwodGhpcy5rKX0scihCLFApLEIucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9u'@; put 'KGMsbSl7Zm9yKHZhciBnPU1hdGgubWluKGMubGVuZ3RoLDkpLHk9MDt5PGc7eSsrKW0ud29yZHNbeV09Yy53b3Jkc1t5XTtpZihtLmxlbmd0aD1nLGMubGVuZ3RoPD05KXJldHVybiBjLndvcmRzWzBdPTAsdm9pZChjLmxlbmd0aD0xKTt2YXIgdz1jLndvcmRzWzldO2ZvcihtLndvcmRzW20u'@; put 'bGVuZ3RoKytdPTQxOTQzMDMmdyx5PTEwO3k8Yy5sZW5ndGg7eSsrKXt2YXIgaz0wfGMud29yZHNbeV07Yy53b3Jkc1t5LTEwXT0oNDE5NDMwMyZrKTw8NHx3Pj4+MjIsdz1rfWMud29yZHNbeS0xMF09dz4+Pj0yMixjLmxlbmd0aC09MD09PXcmJmMubGVuZ3RoPjEwPzEwOjl9LEIucHJvdG90'@; put 'eXBlLmltdWxLPWZ1bmN0aW9uKGMpe2Mud29yZHNbYy5sZW5ndGhdPTAsYy53b3Jkc1tjLmxlbmd0aCsxXT0wLGMubGVuZ3RoKz0yO2Zvcih2YXIgbT0wLGc9MDtnPGMubGVuZ3RoO2crKyl7dmFyIHk9MHxjLndvcmRzW2ddO2Mud29yZHNbZ109NjcxMDg4NjMmKG0rPTk3Nyp5KSxtPTY0Knkr'@; put 'KG0vNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1jLndvcmRzW2MubGVuZ3RoLTFdJiYoYy5sZW5ndGgtLSwwPT09Yy53b3Jkc1tjLmxlbmd0aC0xXSYmYy5sZW5ndGgtLSksY30scigkLFApLHIoRCxQKSxyKHgsUCkseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oYyl7Zm9yKHZhciBtPTAsZz0w'@; put 'O2c8Yy5sZW5ndGg7ZysrKXt2YXIgeT0xOSooMHxjLndvcmRzW2ddKSttLHc9NjcxMDg4NjMmeTt5Pj4+PTI2LGMud29yZHNbZ109dyxtPXl9cmV0dXJuIDAhPT1tJiYoYy53b3Jkc1tjLmxlbmd0aCsrXT1tKSxjfSx0Ll9wcmltZT1mdW5jdGlvbihjKXtpZihOW2NdKXJldHVybiBOW2NdO3Zh'@; put 'ciBtO2lmKCJrMjU2Ij09PWMpbT1uZXcgQjtlbHNlIGlmKCJwMjI0Ij09PWMpbT1uZXcgJDtlbHNlIGlmKCJwMTkyIj09PWMpbT1uZXcgRDtlbHNle2lmKCJwMjU1MTkiIT09Yyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitjKTttPW5ldyB4fXJldHVybiBOW2NdPW0sbX0sTS5w'@; put 'cm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oYyl7bygwPT09Yy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxvKGMucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LE0ucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKGMsbSl7bygwPT0o'@; put 'Yy5uZWdhdGl2ZXxtLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxvKGMucmVkJiZjLnJlZD09PW0ucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LE0ucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMucHJpbWU/dGhp'@; put 'cy5wcmltZS5pcmVkdWNlKGMpLl9mb3JjZVJlZCh0aGlzKTooaChjLGMudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKSksYyl9LE0ucHJvdG90eXBlLm5lZz1mdW5jdGlvbihjKXtyZXR1cm4gYy5pc1plcm8oKT9jLmNsb25lKCk6dGhpcy5tLnN1YihjKS5fZm9yY2VSZWQodGhpcyl9LE0u'@; put 'cHJvdG90eXBlLmFkZD1mdW5jdGlvbihjLG0pe3RoaXMuX3ZlcmlmeTIoYyxtKTt2YXIgZz1jLmFkZChtKTtyZXR1cm4gZy5jbXAodGhpcy5tKT49MCYmZy5pc3ViKHRoaXMubSksZy5fZm9yY2VSZWQodGhpcyl9LE0ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYyxtKXt0aGlzLl92ZXJpZnky'@; put 'KGMsbSk7dmFyIGc9Yy5pYWRkKG0pO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wJiZnLmlzdWIodGhpcy5tKSxnfSxNLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oYyxtKXt0aGlzLl92ZXJpZnkyKGMsbSk7dmFyIGc9Yy5zdWIobSk7cmV0dXJuIGcuY21wbigwKTwwJiZnLmlhZGQodGhpcy5tKSxn'@; put 'Ll9mb3JjZVJlZCh0aGlzKX0sTS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihjLG0pe3RoaXMuX3ZlcmlmeTIoYyxtKTt2YXIgZz1jLmlzdWIobSk7cmV0dXJuIGcuY21wbigwKTwwJiZnLmlhZGQodGhpcy5tKSxnfSxNLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYyxtKXtyZXR1cm4gdGhpcy5f'@; put 'dmVyaWZ5MShjKSx0aGlzLmltb2QoYy51c2hsbihtKSl9LE0ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYyxtKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihjLG0pLHRoaXMuaW1vZChjLmltdWwobSkpfSxNLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYyxtKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mihj'@; put 'LG0pLHRoaXMuaW1vZChjLm11bChtKSl9LE0ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuaW11bChjLGMuY2xvbmUoKSl9LE0ucHJvdG90eXBlLnNxcj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5tdWwoYyxjKX0sTS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihjKXtp'@; put 'ZihjLmlzWmVybygpKXJldHVybiBjLmNsb25lKCk7dmFyIG09dGhpcy5tLmFuZGxuKDMpO2lmKG8obSUyPT0xKSwzPT09bSl7dmFyIGc9dGhpcy5tLmFkZChuZXcgdCgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhjLGcpfWZvcih2YXIgeT10aGlzLm0uc3VibigxKSx3PTA7IXkuaXNa'@; put 'ZXJvKCkmJjA9PT15LmFuZGxuKDEpOyl3KysseS5pdXNocm4oMSk7bygheS5pc1plcm8oKSk7dmFyIGs9bmV3IHQoMSkudG9SZWQodGhpcyksTz1rLnJlZE5lZygpLHo9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLFU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihVPW5ldyB0KDIqVSpVKS50b1Jl'@; put 'ZCh0aGlzKTswIT09dGhpcy5wb3coVSx6KS5jbXAoTyk7KVUucmVkSUFkZChPKTtmb3IodmFyIFY9dGhpcy5wb3coVSx5KSxSPXRoaXMucG93KGMseS5hZGRuKDEpLml1c2hybigxKSksSD10aGlzLnBvdyhjLHkpLFQ9dzswIT09SC5jbXAoayk7KXtmb3IodmFyIEM9SCxGPTA7MCE9PUMuY21w'@; put 'KGspO0YrKylDPUMucmVkU3FyKCk7byhGPFQpO3ZhciBxPXRoaXMucG93KFYsbmV3IHQoMSkuaXVzaGxuKFQtRi0xKSk7Uj1SLnJlZE11bChxKSxWPXEucmVkU3FyKCksSD1ILnJlZE11bChWKSxUPUZ9cmV0dXJuIFJ9LE0ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYyl7dmFyIG09Yy5faW52'@; put 'bXAodGhpcy5tKTtyZXR1cm4gMCE9PW0ubmVnYXRpdmU/KG0ubmVnYXRpdmU9MCx0aGlzLmltb2QobSkucmVkTmVnKCkpOnRoaXMuaW1vZChtKX0sTS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGMsbSl7aWYobS5pc1plcm8oKSlyZXR1cm4gbmV3IHQoMSkudG9SZWQodGhpcyk7aWYoMD09PW0u'@; put 'Y21wbigxKSlyZXR1cm4gYy5jbG9uZSgpO3ZhciBnPW5ldyBBcnJheSgxNik7Z1swXT1uZXcgdCgxKS50b1JlZCh0aGlzKSxnWzFdPWM7Zm9yKHZhciB5PTI7eTxnLmxlbmd0aDt5KyspZ1t5XT10aGlzLm11bChnW3ktMV0sYyk7dmFyIHc9Z1swXSxrPTAsTz0wLHo9bS5iaXRMZW5ndGgoKSUy'@; put 'Njtmb3IoMD09PXomJih6PTI2KSx5PW0ubGVuZ3RoLTE7eT49MDt5LS0pe2Zvcih2YXIgVT1tLndvcmRzW3ldLFY9ei0xO1Y+PTA7Vi0tKXt2YXIgUj1VPj5WJjE7dyE9PWdbMF0mJih3PXRoaXMuc3FyKHcpKSwwIT09Unx8MCE9PWs/KGs8PD0xLGt8PVIsKDQ9PT0rK098fDA9PT15JiYwPT09'@; put 'VikmJih3PXRoaXMubXVsKHcsZ1trXSksTz0wLGs9MCkpOk89MH16PTI2fXJldHVybiB3fSxNLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYyl7dmFyIG09Yy51bW9kKHRoaXMubSk7cmV0dXJuIG09PT1jP20uY2xvbmUoKTptfSxNLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlv'@; put 'bihjKXt2YXIgbT1jLmNsb25lKCk7cmV0dXJuIG0ucmVkPW51bGwsbX0sdC5tb250PWZ1bmN0aW9uKGMpe3JldHVybiBuZXcgaihjKX0scihqLE0pLGoucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5pbW9kKGMudXNobG4odGhpcy5zaGlmdCkpfSxqLnByb3Rv'@; put 'dHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihjKXt2YXIgbT10aGlzLmltb2QoYy5tdWwodGhpcy5yaW52KSk7cmV0dXJuIG0ucmVkPW51bGwsbX0sai5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihjLG0pe2lmKGMuaXNaZXJvKCl8fG0uaXNaZXJvKCkpcmV0dXJuIGMud29yZHNbMF09MCxjLmxl'@; put 'bmd0aD0xLGM7dmFyIGc9Yy5pbXVsKG0pLHk9Zy5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksdz1nLmlzdWIoeSkuaXVzaHJuKHRoaXMuc2hpZnQpLGs9dztyZXR1cm4gdy5jbXAodGhpcy5tKT49MD9rPXcuaXN1Yih0aGlz'@; put 'Lm0pOncuY21wbigwKTwwJiYoaz13LmlhZGQodGhpcy5tKSksay5fZm9yY2VSZWQodGhpcyl9LGoucHJvdG90eXBlLm11bD1mdW5jdGlvbihjLG0pe2lmKGMuaXNaZXJvKCl8fG0uaXNaZXJvKCkpcmV0dXJuIG5ldyB0KDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgZz1jLm11bChtKSx5PWcubWFz'@; put 'a24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHc9Zy5pc3ViKHkpLml1c2hybih0aGlzLnNoaWZ0KSxrPXc7cmV0dXJuIHcuY21wKHRoaXMubSk+PTA/az13LmlzdWIodGhpcy5tKTp3LmNtcG4oMCk8MCYmKGs9dy5pYWRkKHRoaXMu'@; put 'bSkpLGsuX2ZvcmNlUmVkKHRoaXMpfSxqLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmltb2QoYy5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KHZvaWQgMD09PUV8fEUpfSx7YnVmZmVyOjE4OH1dLDE4NzpbZnVuY3Rpb24ocyxF'@; put 'LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYjtmdW5jdGlvbiBhKHIpe3RoaXMucmFuZD1yfWlmKEUuZXhwb3J0cz1mdW5jdGlvbihyKXtyZXR1cm4gYnx8KGI9bmV3IGEobnVsbCkpLGIuZ2VuZXJhdGUocil9LEUuZXhwb3J0cy5SYW5kPWEsYS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24ocil7'@; put 'cmV0dXJuIHRoaXMuX3JhbmQocil9LGEucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHIpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKHIpO2Zvcih2YXIgdD1uZXcgVWludDhBcnJheShyKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT10aGlzLnJhbmQu'@; put 'Z2V0Qnl0ZSgpO3JldHVybiB0fSwib2JqZWN0Ij09dHlwZW9mIHNlbGYpc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9hLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihyKXt2YXIgdD1uZXcgVWludDhBcnJheShyKTtyZXR1cm4gc2VsZi5jcnlwdG8uZ2V0UmFuZG9t'@; put 'VmFsdWVzKHQpLHR9OnNlbGYubXNDcnlwdG8mJnNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP2EucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHIpe3ZhciB0PW5ldyBVaW50OEFycmF5KHIpO3JldHVybiBzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyh0KSx0fToib2JqZWN0Ij09'@; put 'dHlwZW9mIHdpbmRvdyYmKGEucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQgeWV0Iil9KTtlbHNlIHRyeXt2YXIgbz1zKCJjcnlwdG8iKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygby5yYW5kb21CeXRlcyl0aHJvdyBuZXcgRXJyb3Io'@; put 'Ik5vdCBzdXBwb3J0ZWQiKTthLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihyKXtyZXR1cm4gby5yYW5kb21CeXRlcyhyKX19Y2F0Y2h7fX0se2NyeXB0bzoxODh9XSwxODg6W2Z1bmN0aW9uKHMsRSxTKXt9LHt9XSwxODk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygi'@; put 'c2FmZS1idWZmZXIiKS5CdWZmZXI7ZnVuY3Rpb24gYShuKXtiLmlzQnVmZmVyKG4pfHwobj1iLmZyb20obikpO2Zvcih2YXIgaT1uLmxlbmd0aC80fDAsaD1uZXcgQXJyYXkoaSksZj0wO2Y8aTtmKyspaFtmXT1uLnJlYWRVSW50MzJCRSg0KmYpO3JldHVybiBofWZ1bmN0aW9uIG8obil7Zm9y'@; put 'KDswPG4ubGVuZ3RoO24rKyluWzBdPTB9ZnVuY3Rpb24gcihuLGksaCxmLHUpe2Zvcih2YXIgcCxkLHYsXyxBPWhbMF0sST1oWzFdLEw9aFsyXSxOPWhbM10sUD1uWzBdXmlbMF0sQj1uWzFdXmlbMV0sJD1uWzJdXmlbMl0sRD1uWzNdXmlbM10seD00LE09MTtNPHU7TSsrKXA9QVtQPj4+MjRd'@; put 'XklbQj4+PjE2JjI1NV1eTFskPj4+OCYyNTVdXk5bMjU1JkRdXmlbeCsrXSxkPUFbQj4+PjI0XV5JWyQ+Pj4xNiYyNTVdXkxbRD4+PjgmMjU1XV5OWzI1NSZQXV5pW3grK10sdj1BWyQ+Pj4yNF1eSVtEPj4+MTYmMjU1XV5MW1A+Pj44JjI1NV1eTlsyNTUmQl1eaVt4KytdLF89QVtEPj4+MjRd'@; put 'XklbUD4+PjE2JjI1NV1eTFtCPj4+OCYyNTVdXk5bMjU1JiRdXmlbeCsrXSxQPXAsQj1kLCQ9dixEPV87cmV0dXJuIHA9KGZbUD4+PjI0XTw8MjR8ZltCPj4+MTYmMjU1XTw8MTZ8ZlskPj4+OCYyNTVdPDw4fGZbMjU1JkRdKV5pW3grK10sZD0oZltCPj4+MjRdPDwyNHxmWyQ+Pj4xNiYyNTVd'@; put 'PDwxNnxmW0Q+Pj44JjI1NV08PDh8ZlsyNTUmUF0pXmlbeCsrXSx2PShmWyQ+Pj4yNF08PDI0fGZbRD4+PjE2JjI1NV08PDE2fGZbUD4+PjgmMjU1XTw8OHxmWzI1NSZCXSleaVt4KytdLF89KGZbRD4+PjI0XTw8MjR8ZltQPj4+MTYmMjU1XTw8MTZ8ZltCPj4+OCYyNTVdPDw4fGZbMjU1JiRd'@; put 'KV5pW3grK10sW3A+Pj49MCxkPj4+PTAsdj4+Pj0wLF8+Pj49MF19dmFyIHQ9WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdLGU9ZnVuY3Rpb24oKXtmb3IodmFyIG49bmV3IEFycmF5KDI1NiksaT0wO2k8MjU2O2krKyluW2ldPWk8MTI4P2k8PDE6aTw8MV4yODM7Zm9yKHZhciBoPVtd'@; put 'LGY9W10sdT1bW10sW10sW10sW11dLHA9W1tdLFtdLFtdLFtdXSxkPTAsdj0wLF89MDtfPDI1NjsrK18pe3ZhciBBPXZedjw8MV52PDwyXnY8PDNedjw8NDtoW2RdPUE9QT4+PjheMjU1JkFeOTksZltBXT1kO3ZhciBJPW5bZF0sTD1uW0ldLE49bltMXSxQPTI1NypuW0FdXjE2ODQzMDA4KkE7'@; put 'dVswXVtkXT1QPDwyNHxQPj4+OCx1WzFdW2RdPVA8PDE2fFA+Pj4xNix1WzJdW2RdPVA8PDh8UD4+PjI0LHVbM11bZF09UCxwWzBdW0FdPShQPTE2ODQzMDA5Kk5eNjU1MzcqTF4yNTcqSV4xNjg0MzAwOCpkKTw8MjR8UD4+PjgscFsxXVtBXT1QPDwxNnxQPj4+MTYscFsyXVtBXT1QPDw4fFA+'@; put 'Pj4yNCxwWzNdW0FdPVAsMD09PWQ/ZD12PTE6KGQ9SV5uW25bbltOXkldXV0sdl49bltuW3ZdXSl9cmV0dXJue1NCT1g6aCxJTlZfU0JPWDpmLFNVQl9NSVg6dSxJTlZfU1VCX01JWDpwfX0oKTtmdW5jdGlvbiBsKG4pe3RoaXMuX2tleT1hKG4pLHRoaXMuX3Jlc2V0KCl9bC5ibG9ja1NpemU9'@; put 'MTYsbC5rZXlTaXplPTMyLGwucHJvdG90eXBlLmJsb2NrU2l6ZT1sLmJsb2NrU2l6ZSxsLnByb3RvdHlwZS5rZXlTaXplPWwua2V5U2l6ZSxsLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIG49dGhpcy5fa2V5LGk9bi5sZW5ndGgsaD1pKzYsZj00KihoKzEpLHU9W10scD0w'@; put 'O3A8aTtwKyspdVtwXT1uW3BdO2ZvcihwPWk7cDxmO3ArKyl7dmFyIGQ9dVtwLTFdO3AlaT09MD8oZD1lLlNCT1hbKGQ9ZDw8OHxkPj4+MjQpPj4+MjRdPDwyNHxlLlNCT1hbZD4+PjE2JjI1NV08PDE2fGUuU0JPWFtkPj4+OCYyNTVdPDw4fGUuU0JPWFsyNTUmZF0sZF49dFtwL2l8MF08PDI0'@; put 'KTppPjYmJnAlaT09NCYmKGQ9ZS5TQk9YW2Q+Pj4yNF08PDI0fGUuU0JPWFtkPj4+MTYmMjU1XTw8MTZ8ZS5TQk9YW2Q+Pj44JjI1NV08PDh8ZS5TQk9YWzI1NSZkXSksdVtwXT11W3AtaV1eZH1mb3IodmFyIHY9W10sXz0wO188ZjtfKyspe3ZhciBBPWYtXyxJPXVbQS0oXyU0PzA6NCldO3Zb'@; put 'X109Xzw0fHxBPD00P0k6ZS5JTlZfU1VCX01JWFswXVtlLlNCT1hbST4+PjI0XV1eZS5JTlZfU1VCX01JWFsxXVtlLlNCT1hbST4+PjE2JjI1NV1dXmUuSU5WX1NVQl9NSVhbMl1bZS5TQk9YW0k+Pj44JjI1NV1dXmUuSU5WX1NVQl9NSVhbM11bZS5TQk9YWzI1NSZJXV19dGhpcy5fblJvdW5k'@; put 'cz1oLHRoaXMuX2tleVNjaGVkdWxlPXUsdGhpcy5faW52S2V5U2NoZWR1bGU9dn0sbC5wcm90b3R5cGUuZW5jcnlwdEJsb2NrUmF3PWZ1bmN0aW9uKG4pe3JldHVybiByKG49YShuKSx0aGlzLl9rZXlTY2hlZHVsZSxlLlNVQl9NSVgsZS5TQk9YLHRoaXMuX25Sb3VuZHMpfSxsLnByb3RvdHlw'@; put 'ZS5lbmNyeXB0QmxvY2s9ZnVuY3Rpb24obil7dmFyIGk9dGhpcy5lbmNyeXB0QmxvY2tSYXcobiksaD1iLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gaC53cml0ZVVJbnQzMkJFKGlbMF0sMCksaC53cml0ZVVJbnQzMkJFKGlbMV0sNCksaC53cml0ZVVJbnQzMkJFKGlbMl0sOCksaC53cml0ZVVJ'@; put 'bnQzMkJFKGlbM10sMTIpLGh9LGwucHJvdG90eXBlLmRlY3J5cHRCbG9jaz1mdW5jdGlvbihuKXt2YXIgaT0obj1hKG4pKVsxXTtuWzFdPW5bM10sblszXT1pO3ZhciBoPXIobix0aGlzLl9pbnZLZXlTY2hlZHVsZSxlLklOVl9TVUJfTUlYLGUuSU5WX1NCT1gsdGhpcy5fblJvdW5kcyksZj1i'@; put 'LmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gZi53cml0ZVVJbnQzMkJFKGhbMF0sMCksZi53cml0ZVVJbnQzMkJFKGhbM10sNCksZi53cml0ZVVJbnQzMkJFKGhbMl0sOCksZi53cml0ZVVJbnQzMkJFKGhbMV0sMTIpLGZ9LGwucHJvdG90eXBlLnNjcnViPWZ1bmN0aW9uKCl7byh0aGlzLl9rZXlT'@; put 'Y2hlZHVsZSksbyh0aGlzLl9pbnZLZXlTY2hlZHVsZSksbyh0aGlzLl9rZXkpfSxFLmV4cG9ydHMuQUVTPWx9LHsic2FmZS1idWZmZXIiOjQ5NH1dLDE5MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuL2FlcyIpLGE9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsbz1z'@; put 'KCJjaXBoZXItYmFzZSIpLHI9cygiaW5oZXJpdHMiKSx0PXMoIi4vZ2hhc2giKSxlPXMoImJ1ZmZlci14b3IiKSxsPXMoIi4vaW5jcjMyIik7ZnVuY3Rpb24gbihpLGgsZix1KXtvLmNhbGwodGhpcyk7dmFyIHA9YS5hbGxvYyg0LDApO3RoaXMuX2NpcGhlcj1uZXcgYi5BRVMoaCk7dmFyIGQ9'@; put 'dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayhwKTt0aGlzLl9naGFzaD1uZXcgdChkKSxmPWZ1bmN0aW9uKHYsXyxBKXtpZigxMj09PV8ubGVuZ3RoKXJldHVybiB2Ll9maW5JRD1hLmNvbmNhdChbXyxhLmZyb20oWzAsMCwwLDFdKV0pLGEuY29uY2F0KFtfLGEuZnJvbShbMCwwLDAsMl0pXSk7'@; put 'dmFyIEk9bmV3IHQoQSksTD1fLmxlbmd0aCxOPUwlMTY7SS51cGRhdGUoXyksTiYmSS51cGRhdGUoYS5hbGxvYyhOPTE2LU4sMCkpLEkudXBkYXRlKGEuYWxsb2MoOCwwKSk7dmFyIFA9OCpMLEI9YS5hbGxvYyg4KTtCLndyaXRlVUludEJFKFAsMCw4KSxJLnVwZGF0ZShCKSx2Ll9maW5JRD1J'@; put 'LnN0YXRlO3ZhciAkPWEuZnJvbSh2Ll9maW5JRCk7cmV0dXJuIGwoJCksJH0odGhpcyxmLGQpLHRoaXMuX3ByZXY9YS5mcm9tKGYpLHRoaXMuX2NhY2hlPWEuYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9YS5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PXUsdGhpcy5fYWxlbj0w'@; put 'LHRoaXMuX2xlbj0wLHRoaXMuX21vZGU9aSx0aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfXIobixvKSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGkpe2lmKCF0aGlzLl9jYWxsZWQmJnRoaXMuX2FsZW4pe3ZhciBoPTE2LXRoaXMuX2FsZW4lMTY7aDwxNiYmKGg9YS5h'@; put 'bGxvYyhoLDApLHRoaXMuX2doYXNoLnVwZGF0ZShoKSl9dGhpcy5fY2FsbGVkPSEwO3ZhciBmPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLGkpO3JldHVybiB0aGlzLl9naGFzaC51cGRhdGUodGhpcy5fZGVjcnlwdD9pOmYpLHRoaXMuX2xlbis9aS5sZW5ndGgsZn0sbi5wcm90b3R5cGUuX2Zp'@; put 'bmFsPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdCYmIXRoaXMuX2F1dGhUYWcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEiKTt2YXIgaT1lKHRoaXMuX2doYXNoLmZpbmFsKDgqdGhpcy5fYWxlbiw4KnRoaXMuX2xl'@; put 'biksdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpO2lmKHRoaXMuX2RlY3J5cHQmJmZ1bmN0aW9uKGgsZil7dmFyIHU9MDtoLmxlbmd0aCE9PWYubGVuZ3RoJiZ1Kys7Zm9yKHZhciBwPU1hdGgubWluKGgubGVuZ3RoLGYubGVuZ3RoKSxkPTA7ZDxwOysrZCl1Kz1oW2Rd'@; put 'XmZbZF07cmV0dXJuIHV9KGksdGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEiKTt0aGlzLl9hdXRoVGFnPWksdGhpcy5fY2lwaGVyLnNjcnViKCl9LG4ucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVu'@; put 'Y3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0fHwhYS5pc0J1ZmZlcih0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7cmV0dXJuIHRoaXMuX2F1dGhUYWd9LG4ucHJvdG90eXBlLnNldEF1dGhUYWc9'@; put 'ZnVuY3Rpb24oaSl7aWYoIXRoaXMuX2RlY3J5cHQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3RoaXMuX2F1dGhUYWc9aX0sbi5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKGkpe2lmKHRoaXMuX2NhbGxlZCl0aHJv'@; put 'dyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gc2V0IEFBRCBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3RoaXMuX2doYXNoLnVwZGF0ZShpKSx0aGlzLl9hbGVuKz1pLmxlbmd0aH0sRS5leHBvcnRzPW59LHsiLi9hZXMiOjE4OSwiLi9naGFzaCI6MTk0LCIuL2luY3IzMiI6MTk1LCJidWZmZXIt'@; put 'eG9yIjoyMTksImNpcGhlci1iYXNlIjoyMjEsaW5oZXJpdHM6NDQwLCJzYWZlLWJ1ZmZlciI6NDk0fV0sMTkxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4vZW5jcnlwdGVyIiksYT1zKCIuL2RlY3J5cHRlciIpLG89cygiLi9tb2Rlcy9saXN0Lmpzb24iKTtTLmNy'@; put 'ZWF0ZUNpcGhlcj1TLkNpcGhlcj1iLmNyZWF0ZUNpcGhlcixTLmNyZWF0ZUNpcGhlcml2PVMuQ2lwaGVyaXY9Yi5jcmVhdGVDaXBoZXJpdixTLmNyZWF0ZURlY2lwaGVyPVMuRGVjaXBoZXI9YS5jcmVhdGVEZWNpcGhlcixTLmNyZWF0ZURlY2lwaGVyaXY9Uy5EZWNpcGhlcml2PWEuY3JlYXRl'@; put 'RGVjaXBoZXJpdixTLmxpc3RDaXBoZXJzPVMuZ2V0Q2lwaGVycz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhvKX19LHsiLi9kZWNyeXB0ZXIiOjE5MiwiLi9lbmNyeXB0ZXIiOjE5MywiLi9tb2Rlcy9saXN0Lmpzb24iOjIwM31dLDE5MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3Ry'@; put 'aWN0Ijt2YXIgYj1zKCIuL2F1dGhDaXBoZXIiKSxhPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLG89cygiLi9tb2RlcyIpLHI9cygiLi9zdHJlYW1DaXBoZXIiKSx0PXMoImNpcGhlci1iYXNlIiksZT1zKCIuL2FlcyIpLGw9cygiZXZwX2J5dGVzdG9rZXkiKTtmdW5jdGlvbiBuKGYsdSxwKXt0'@; put 'LmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IGksdGhpcy5fbGFzdD12b2lkIDAsdGhpcy5fY2lwaGVyPW5ldyBlLkFFUyh1KSx0aGlzLl9wcmV2PWEuZnJvbShwKSx0aGlzLl9tb2RlPWYsdGhpcy5fYXV0b3BhZGRpbmc9ITB9ZnVuY3Rpb24gaSgpe3RoaXMuY2FjaGU9YS5hbGxvY1Vuc2Fm'@; put 'ZSgwKX1mdW5jdGlvbiBoKGYsdSxwKXt2YXIgZD1vW2YudG9Mb3dlckNhc2UoKV07aWYoIWQpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVvZiBwJiYocD1hLmZyb20ocCkpLCJHQ00iIT09ZC5tb2RlJiZwLmxlbmd0aCE9PWQuaXYp'@; put 'dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpdiBsZW5ndGggIitwLmxlbmd0aCk7aWYoInN0cmluZyI9PXR5cGVvZiB1JiYodT1hLmZyb20odSkpLHUubGVuZ3RoIT09ZC5rZXkvOCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGggIit1Lmxlbmd0aCk7cmV0dXJu'@; put 'InN0cmVhbSI9PT1kLnR5cGU/bmV3IHIoZC5tb2R1bGUsdSxwLCEwKToiYXV0aCI9PT1kLnR5cGU/bmV3IGIoZC5tb2R1bGUsdSxwLCEwKTpuZXcgbihkLm1vZHVsZSx1LHApfXMoImluaGVyaXRzIikobix0KSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGYpe3ZhciB1LHA7dGhpcy5f'@; put 'Y2FjaGUuYWRkKGYpO2Zvcih2YXIgZD1bXTt1PXRoaXMuX2NhY2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZyk7KXA9dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsdSksZC5wdXNoKHApO3JldHVybiBhLmNvbmNhdChkKX0sbi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5f'@; put 'Y2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gZnVuY3Rpb24odSl7dmFyIHA9dVsxNV07aWYocDwxfHxwPjE2KXRocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2Zvcih2YXIgZD0tMTsrK2Q8cDspaWYodVtkKygxNi1wKV0hPT1wKXRocm93'@; put 'IG5ldyBFcnJvcigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2lmKDE2IT09cClyZXR1cm4gdS5zbGljZSgwLDE2LXApfSh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxmKSk7aWYoZil0aHJvdyBuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxuLnByb3Rv'@; put 'dHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFmLHRoaXN9LGkucHJvdG90eXBlLmFkZD1mdW5jdGlvbihmKXt0aGlzLmNhY2hlPWEuY29uY2F0KFt0aGlzLmNhY2hlLGZdKX0saS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGYpe3ZhciB1'@; put 'O2lmKGYpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXJldHVybiB1PXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx1fWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVybiB1PXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5j'@; put 'YWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx1O3JldHVybiBudWxsfSxpLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfSxTLmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uKGYsdSl7dmFyIHA9b1tmLnRvTG93ZXJDYXNlKCld'@; put 'O2lmKCFwKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBkPWwodSwhMSxwLmtleSxwLml2KTtyZXR1cm4gaChmLGQua2V5LGQuaXYpfSxTLmNyZWF0ZURlY2lwaGVyaXY9aH0seyIuL2FlcyI6MTg5LCIuL2F1dGhDaXBoZXIiOjE5MCwiLi9tb2RlcyI6MjAy'@; put 'LCIuL3N0cmVhbUNpcGhlciI6MjA1LCJjaXBoZXItYmFzZSI6MjIxLGV2cF9ieXRlc3Rva2V5OjQyMyxpbmhlcml0czo0NDAsInNhZmUtYnVmZmVyIjo0OTR9XSwxOTM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi9tb2RlcyIpLGE9cygiLi9hdXRoQ2lwaGVyIiks'@; put 'bz1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZlcixyPXMoIi4vc3RyZWFtQ2lwaGVyIiksdD1zKCJjaXBoZXItYmFzZSIpLGU9cygiLi9hZXMiKSxsPXMoImV2cF9ieXRlc3Rva2V5Iik7ZnVuY3Rpb24gbih1LHAsZCl7dC5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBoLHRoaXMuX2NpcGhlcj1u'@; put 'ZXcgZS5BRVMocCksdGhpcy5fcHJldj1vLmZyb20oZCksdGhpcy5fbW9kZT11LHRoaXMuX2F1dG9wYWRkaW5nPSEwfXMoImluaGVyaXRzIikobix0KSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHUpe3ZhciBwLGQ7dGhpcy5fY2FjaGUuYWRkKHUpO2Zvcih2YXIgdj1bXTtwPXRoaXMu'@; put 'X2NhY2hlLmdldCgpOylkPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHApLHYucHVzaChkKTtyZXR1cm4gby5jb25jYXQodil9O3ZhciBpPW8uYWxsb2MoMTYsMTYpO2Z1bmN0aW9uIGgoKXt0aGlzLmNhY2hlPW8uYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gZih1LHAsZCl7dmFyIHY9Ylt1LnRv'@; put 'TG93ZXJDYXNlKCldO2lmKCF2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgcCYmKHA9by5mcm9tKHApKSxwLmxlbmd0aCE9PXYua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrcC5sZW5n'@; put 'dGgpO2lmKCJzdHJpbmciPT10eXBlb2YgZCYmKGQ9by5mcm9tKGQpKSwiR0NNIiE9PXYubW9kZSYmZC5sZW5ndGghPT12Lml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrZC5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09di50eXBlP25ldyByKHYubW9kdWxlLHAs'@; put 'ZCk6ImF1dGgiPT09di50eXBlP25ldyBhKHYubW9kdWxlLHAsZCk6bmV3IG4odi5tb2R1bGUscCxkKX1uLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgdT10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiB1PXRoaXMuX21vZGUuZW5jcnlwdCh0'@; put 'aGlzLHUpLHRoaXMuX2NpcGhlci5zY3J1YigpLHU7aWYoIXUuZXF1YWxzKGkpKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LG4ucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKHUpe3JldHVy'@; put 'biB0aGlzLl9hdXRvcGFkZGluZz0hIXUsdGhpc30saC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHUpe3RoaXMuY2FjaGU9by5jb25jYXQoW3RoaXMuY2FjaGUsdV0pfSxoLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIHU9dGhpcy5jYWNoZS5z'@; put 'bGljZSgwLDE2KTtyZXR1cm4gdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx1fXJldHVybiBudWxsfSxoLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgdT0xNi10aGlzLmNhY2hlLmxlbmd0aCxwPW8uYWxsb2NVbnNhZmUodSksZD0tMTsrK2Q8dTspcC53cml0ZVVJ'@; put 'bnQ4KHUsZCk7cmV0dXJuIG8uY29uY2F0KFt0aGlzLmNhY2hlLHBdKX0sUy5jcmVhdGVDaXBoZXJpdj1mLFMuY3JlYXRlQ2lwaGVyPWZ1bmN0aW9uKHUscCl7dmFyIGQ9Ylt1LnRvTG93ZXJDYXNlKCldO2lmKCFkKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3Zh'@; put 'ciB2PWwocCwhMSxkLmtleSxkLml2KTtyZXR1cm4gZih1LHYua2V5LHYuaXYpfX0seyIuL2FlcyI6MTg5LCIuL2F1dGhDaXBoZXIiOjE5MCwiLi9tb2RlcyI6MjAyLCIuL3N0cmVhbUNpcGhlciI6MjA1LCJjaXBoZXItYmFzZSI6MjIxLGV2cF9ieXRlc3Rva2V5OjQyMyxpbmhlcml0czo0NDAs'@; put 'InNhZmUtYnVmZmVyIjo0OTR9XSwxOTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsYT1iLmFsbG9jKDE2LDApO2Z1bmN0aW9uIG8odCl7dmFyIGU9Yi5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIGUud3JpdGVVSW50MzJCRSh0WzBd'@; put 'Pj4+MCwwKSxlLndyaXRlVUludDMyQkUodFsxXT4+PjAsNCksZS53cml0ZVVJbnQzMkJFKHRbMl0+Pj4wLDgpLGUud3JpdGVVSW50MzJCRSh0WzNdPj4+MCwxMiksZX1mdW5jdGlvbiByKHQpe3RoaXMuaD10LHRoaXMuc3RhdGU9Yi5hbGxvYygxNiwwKSx0aGlzLmNhY2hlPWIuYWxsb2NVbnNh'@; put 'ZmUoMCl9ci5wcm90b3R5cGUuZ2hhc2g9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPS0xOysrZTx0Lmxlbmd0aDspdGhpcy5zdGF0ZVtlXV49dFtlXTt0aGlzLl9tdWx0aXBseSgpfSxyLnByb3RvdHlwZS5fbXVsdGlwbHk9ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxsLG49Wyh0PXRoaXMuaCkucmVh'@; put 'ZFVJbnQzMkJFKDApLHQucmVhZFVJbnQzMkJFKDQpLHQucmVhZFVJbnQzMkJFKDgpLHQucmVhZFVJbnQzMkJFKDEyKV0saT1bMCwwLDAsMF0saD0tMTsrK2g8MTI4Oyl7Zm9yKCEhKHRoaXMuc3RhdGVbfn4oaC84KV0mMTw8Ny1oJTgpJiYoaVswXV49blswXSxpWzFdXj1uWzFdLGlbMl1ePW5b'@; put 'Ml0saVszXV49blszXSksbD0hISgxJm5bM10pLGU9MztlPjA7ZS0tKW5bZV09bltlXT4+PjF8KDEmbltlLTFdKTw8MzE7blswXT1uWzBdPj4+MSxsJiYoblswXT1uWzBdXjIyNTw8MjQpfXRoaXMuc3RhdGU9byhpKX0sci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0'@; put 'aGlzLmNhY2hlPWIuY29uY2F0KFt0aGlzLmNhY2hlLHRdKTt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KWU9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2goZSl9LHIucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKHQsZSl7cmV0'@; put 'dXJuIHRoaXMuY2FjaGUubGVuZ3RoJiZ0aGlzLmdoYXNoKGIuY29uY2F0KFt0aGlzLmNhY2hlLGFdLDE2KSksdGhpcy5naGFzaChvKFswLHQsMCxlXSkpLHRoaXMuc3RhdGV9LEUuZXhwb3J0cz1yfSx7InNhZmUtYnVmZmVyIjo0OTR9XSwxOTU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7RS5leHBvcnRzPWZ1bmN0aW9uKGIpe2Zvcih2YXIgYSxvPWIubGVuZ3RoO28tLTspe2lmKDI1NSE9PShhPWIucmVhZFVJbnQ4KG8pKSl7YSsrLGIud3JpdGVVSW50OChhLG8pO2JyZWFrfWIud3JpdGVVSW50OCgwLG8pfX19LHt9XSwxOTY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7dmFyIGI9cygiYnVmZmVyLXhvciIpO1MuZW5jcnlwdD1mdW5jdGlvbihhLG8pe3ZhciByPWIobyxhLl9wcmV2KTtyZXR1cm4gYS5fcHJldj1hLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHIpLGEuX3ByZXZ9LFMuZGVjcnlwdD1mdW5jdGlvbihhLG8pe3ZhciByPWEuX3ByZXY7YS5fcHJldj1v'@; put 'O3ZhciB0PWEuX2NpcGhlci5kZWNyeXB0QmxvY2sobyk7cmV0dXJuIGIodCxyKX19LHsiYnVmZmVyLXhvciI6MjE5fV0sMTk3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLGE9cygiYnVmZmVyLXhvciIpO2Z1bmN0aW9uIG8ocix0'@; put 'LGUpe3ZhciBsPXQubGVuZ3RoLG49YSh0LHIuX2NhY2hlKTtyZXR1cm4gci5fY2FjaGU9ci5fY2FjaGUuc2xpY2UobCksci5fcHJldj1iLmNvbmNhdChbci5fcHJldixlP3Q6bl0pLG59Uy5lbmNyeXB0PWZ1bmN0aW9uKHIsdCxlKXtmb3IodmFyIGwsbj1iLmFsbG9jVW5zYWZlKDApO3QubGVu'@; put 'Z3RoOyl7aWYoMD09PXIuX2NhY2hlLmxlbmd0aCYmKHIuX2NhY2hlPXIuX2NpcGhlci5lbmNyeXB0QmxvY2soci5fcHJldiksci5fcHJldj1iLmFsbG9jVW5zYWZlKDApKSwhKHIuX2NhY2hlLmxlbmd0aDw9dC5sZW5ndGgpKXtuPWIuY29uY2F0KFtuLG8ocix0LGUpXSk7YnJlYWt9bj1iLmNv'@; put 'bmNhdChbbixvKHIsdC5zbGljZSgwLGw9ci5fY2FjaGUubGVuZ3RoKSxlKV0pLHQ9dC5zbGljZShsKX1yZXR1cm4gbn19LHsiYnVmZmVyLXhvciI6MjE5LCJzYWZlLWJ1ZmZlciI6NDk0fV0sMTk4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoInNhZmUtYnVmZmVyIiku'@; put 'QnVmZmVyO2Z1bmN0aW9uIGEocix0LGUpe2Zvcih2YXIgbCxuLGk9LTEsaD0wOysraTw4OylsPXQmMTw8Ny1pPzEyODowLGgrPSgxMjgmKG49ci5fY2lwaGVyLmVuY3J5cHRCbG9jayhyLl9wcmV2KVswXV5sKSk+PmklOCxyLl9wcmV2PW8oci5fcHJldixlP2w6bik7cmV0dXJuIGh9ZnVuY3Rp'@; put 'b24gbyhyLHQpe3ZhciBlPXIubGVuZ3RoLGw9LTEsbj1iLmFsbG9jVW5zYWZlKHIubGVuZ3RoKTtmb3Iocj1iLmNvbmNhdChbcixiLmZyb20oW3RdKV0pOysrbDxlOyluW2xdPXJbbF08PDF8cltsKzFdPj43O3JldHVybiBufVMuZW5jcnlwdD1mdW5jdGlvbihyLHQsZSl7Zm9yKHZhciBsPXQu'@; put 'bGVuZ3RoLG49Yi5hbGxvY1Vuc2FmZShsKSxpPS0xOysraTxsOyluW2ldPWEocix0W2ldLGUpO3JldHVybiBufX0seyJzYWZlLWJ1ZmZlciI6NDk0fV0sMTk5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyO2Z1bmN0aW9uIGEobyxy'@; put 'LHQpe3ZhciBlPW8uX2NpcGhlci5lbmNyeXB0QmxvY2soby5fcHJldilbMF1ecjtyZXR1cm4gby5fcHJldj1iLmNvbmNhdChbby5fcHJldi5zbGljZSgxKSxiLmZyb20oW3Q/cjplXSldKSxlfVMuZW5jcnlwdD1mdW5jdGlvbihvLHIsdCl7Zm9yKHZhciBlPXIubGVuZ3RoLGw9Yi5hbGxvY1Vu'@; put 'c2FmZShlKSxuPS0xOysrbjxlOylsW25dPWEobyxyW25dLHQpO3JldHVybiBsfX0seyJzYWZlLWJ1ZmZlciI6NDk0fV0sMjAwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImJ1ZmZlci14b3IiKSxhPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLG89cygiLi4vaW5jcjMy'@; put 'Iik7ZnVuY3Rpb24gcih0KXt2YXIgZT10Ll9jaXBoZXIuZW5jcnlwdEJsb2NrUmF3KHQuX3ByZXYpO3JldHVybiBvKHQuX3ByZXYpLGV9Uy5lbmNyeXB0PWZ1bmN0aW9uKHQsZSl7dmFyIGw9TWF0aC5jZWlsKGUubGVuZ3RoLzE2KSxuPXQuX2NhY2hlLmxlbmd0aDt0Ll9jYWNoZT1hLmNvbmNh'@; put 'dChbdC5fY2FjaGUsYS5hbGxvY1Vuc2FmZSgxNipsKV0pO2Zvcih2YXIgaT0wO2k8bDtpKyspe3ZhciBoPXIodCksZj1uKzE2Kmk7dC5fY2FjaGUud3JpdGVVSW50MzJCRShoWzBdLGYrMCksdC5fY2FjaGUud3JpdGVVSW50MzJCRShoWzFdLGYrNCksdC5fY2FjaGUud3JpdGVVSW50MzJCRSho'@; put 'WzJdLGYrOCksdC5fY2FjaGUud3JpdGVVSW50MzJCRShoWzNdLGYrMTIpfXZhciB1PXQuX2NhY2hlLnNsaWNlKDAsZS5sZW5ndGgpO3JldHVybiB0Ll9jYWNoZT10Ll9jYWNoZS5zbGljZShlLmxlbmd0aCksYihlLHUpfX0seyIuLi9pbmNyMzIiOjE5NSwiYnVmZmVyLXhvciI6MjE5LCJzYWZl'@; put 'LWJ1ZmZlciI6NDk0fV0sMjAxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO1MuZW5jcnlwdD1mdW5jdGlvbihiLGEpe3JldHVybiBiLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGEpfSxTLmRlY3J5cHQ9ZnVuY3Rpb24oYixhKXtyZXR1cm4gYi5fY2lwaGVyLmRlY3J5cHRCbG9jayhhKX19'@; put 'LHt9XSwyMDI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9e0VDQjpzKCIuL2VjYiIpLENCQzpzKCIuL2NiYyIpLENGQjpzKCIuL2NmYiIpLENGQjg6cygiLi9jZmI4IiksQ0ZCMTpzKCIuL2NmYjEiKSxPRkI6cygiLi9vZmIiKSxDVFI6cygiLi9jdHIiKSxHQ006cygiLi9j'@; put 'dHIiKX0sYT1zKCIuL2xpc3QuanNvbiIpO2Zvcih2YXIgbyBpbiBhKWFbb10ubW9kdWxlPWJbYVtvXS5tb2RlXTtFLmV4cG9ydHM9YX0seyIuL2NiYyI6MTk2LCIuL2NmYiI6MTk3LCIuL2NmYjEiOjE5OCwiLi9jZmI4IjoxOTksIi4vY3RyIjoyMDAsIi4vZWNiIjoyMDEsIi4vbGlzdC5qc29u'@; put 'IjoyMDMsIi4vb2ZiIjoyMDR9XSwyMDM6W2Z1bmN0aW9uKHMsRSxTKXtFLmV4cG9ydHM9eyJhZXMtMTI4LWVjYiI6e2NpcGhlcjoiQUVTIixrZXk6MTI4LGl2OjAsbW9kZToiRUNCIix0eXBlOiJibG9jayJ9LCJhZXMtMTkyLWVjYiI6e2NpcGhlcjoiQUVTIixrZXk6MTkyLGl2OjAsbW9kZToi'@; put 'RUNCIix0eXBlOiJibG9jayJ9LCJhZXMtMjU2LWVjYiI6e2NpcGhlcjoiQUVTIixrZXk6MjU2LGl2OjAsbW9kZToiRUNCIix0eXBlOiJibG9jayJ9LCJhZXMtMTI4LWNiYyI6e2NpcGhlcjoiQUVTIixrZXk6MTI4LGl2OjE2LG1vZGU6IkNCQyIsdHlwZToiYmxvY2sifSwiYWVzLTE5Mi1jYmMi'@; put 'OntjaXBoZXI6IkFFUyIsa2V5OjE5MixpdjoxNixtb2RlOiJDQkMiLHR5cGU6ImJsb2NrIn0sImFlcy0yNTYtY2JjIjp7Y2lwaGVyOiJBRVMiLGtleToyNTYsaXY6MTYsbW9kZToiQ0JDIix0eXBlOiJibG9jayJ9LGFlczEyODp7Y2lwaGVyOiJBRVMiLGtleToxMjgsaXY6MTYsbW9kZToiQ0JD'@; put 'Iix0eXBlOiJibG9jayJ9LGFlczE5Mjp7Y2lwaGVyOiJBRVMiLGtleToxOTIsaXY6MTYsbW9kZToiQ0JDIix0eXBlOiJibG9jayJ9LGFlczI1Njp7Y2lwaGVyOiJBRVMiLGtleToyNTYsaXY6MTYsbW9kZToiQ0JDIix0eXBlOiJibG9jayJ9LCJhZXMtMTI4LWNmYiI6e2NpcGhlcjoiQUVTIixr'@; put 'ZXk6MTI4LGl2OjE2LG1vZGU6IkNGQiIsdHlwZToic3RyZWFtIn0sImFlcy0xOTItY2ZiIjp7Y2lwaGVyOiJBRVMiLGtleToxOTIsaXY6MTYsbW9kZToiQ0ZCIix0eXBlOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIiOntjaXBoZXI6IkFFUyIsa2V5OjI1NixpdjoxNixtb2RlOiJDRkIiLHR5cGU6'@; put 'InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjgiOntjaXBoZXI6IkFFUyIsa2V5OjEyOCxpdjoxNixtb2RlOiJDRkI4Iix0eXBlOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmI4Ijp7Y2lwaGVyOiJBRVMiLGtleToxOTIsaXY6MTYsbW9kZToiQ0ZCOCIsdHlwZToic3RyZWFtIn0sImFlcy0yNTYtY2ZiOCI6'@; put 'e2NpcGhlcjoiQUVTIixrZXk6MjU2LGl2OjE2LG1vZGU6IkNGQjgiLHR5cGU6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjEiOntjaXBoZXI6IkFFUyIsa2V5OjEyOCxpdjoxNixtb2RlOiJDRkIxIix0eXBlOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmIxIjp7Y2lwaGVyOiJBRVMiLGtleToxOTIsaXY6'@; put 'MTYsbW9kZToiQ0ZCMSIsdHlwZToic3RyZWFtIn0sImFlcy0yNTYtY2ZiMSI6e2NpcGhlcjoiQUVTIixrZXk6MjU2LGl2OjE2LG1vZGU6IkNGQjEiLHR5cGU6InN0cmVhbSJ9LCJhZXMtMTI4LW9mYiI6e2NpcGhlcjoiQUVTIixrZXk6MTI4LGl2OjE2LG1vZGU6Ik9GQiIsdHlwZToic3RyZWFt'@; put 'In0sImFlcy0xOTItb2ZiIjp7Y2lwaGVyOiJBRVMiLGtleToxOTIsaXY6MTYsbW9kZToiT0ZCIix0eXBlOiJzdHJlYW0ifSwiYWVzLTI1Ni1vZmIiOntjaXBoZXI6IkFFUyIsa2V5OjI1NixpdjoxNixtb2RlOiJPRkIiLHR5cGU6InN0cmVhbSJ9LCJhZXMtMTI4LWN0ciI6e2NpcGhlcjoiQUVT'@; put 'IixrZXk6MTI4LGl2OjE2LG1vZGU6IkNUUiIsdHlwZToic3RyZWFtIn0sImFlcy0xOTItY3RyIjp7Y2lwaGVyOiJBRVMiLGtleToxOTIsaXY6MTYsbW9kZToiQ1RSIix0eXBlOiJzdHJlYW0ifSwiYWVzLTI1Ni1jdHIiOntjaXBoZXI6IkFFUyIsa2V5OjI1NixpdjoxNixtb2RlOiJDVFIiLHR5'@; put 'cGU6InN0cmVhbSJ9LCJhZXMtMTI4LWdjbSI6e2NpcGhlcjoiQUVTIixrZXk6MTI4LGl2OjEyLG1vZGU6IkdDTSIsdHlwZToiYXV0aCJ9LCJhZXMtMTkyLWdjbSI6e2NpcGhlcjoiQUVTIixrZXk6MTkyLGl2OjEyLG1vZGU6IkdDTSIsdHlwZToiYXV0aCJ9LCJhZXMtMjU2LWdjbSI6e2NpcGhl'@; put 'cjoiQUVTIixrZXk6MjU2LGl2OjEyLG1vZGU6IkdDTSIsdHlwZToiYXV0aCJ9fX0se31dLDIwNDpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGE9cygiYnVmZmVyLXhvciIpO2Z1bmN0aW9uIG8ocil7cmV0dXJuIHIuX3ByZXY9ci5f'@; put 'Y2lwaGVyLmVuY3J5cHRCbG9jayhyLl9wcmV2KSxyLl9wcmV2fVMuZW5jcnlwdD1mdW5jdGlvbihyLHQpe2Zvcig7ci5fY2FjaGUubGVuZ3RoPHQubGVuZ3RoOylyLl9jYWNoZT1iLmNvbmNhdChbci5fY2FjaGUsbyhyKV0pO3ZhciBlPXIuX2NhY2hlLnNsaWNlKDAsdC5sZW5ndGgpO3JldHVy'@; put 'biByLl9jYWNoZT1yLl9jYWNoZS5zbGljZSh0Lmxlbmd0aCksYSh0LGUpfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiYnVmZmVyIikuQnVmZmVyKX0se2J1ZmZlcjoyMjAsImJ1ZmZlci14b3IiOjIxOX1dLDIwNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIu'@; put 'L2FlcyIpLGE9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsbz1zKCJjaXBoZXItYmFzZSIpO2Z1bmN0aW9uIHIodCxlLGwsbil7by5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgYi5BRVMoZSksdGhpcy5fcHJldj1hLmZyb20obCksdGhpcy5fY2FjaGU9YS5hbGxvY1Vuc2FmZSgwKSx0aGlz'@; put 'Ll9zZWNDYWNoZT1hLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9bix0aGlzLl9tb2RlPXR9cygiaW5oZXJpdHMiKShyLG8pLHIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHQsdGhpcy5fZGVjcnlwdCl9LHIucHJvdG90'@; put 'eXBlLl9maW5hbD1mdW5jdGlvbigpe3RoaXMuX2NpcGhlci5zY3J1YigpfSxFLmV4cG9ydHM9cn0seyIuL2FlcyI6MTg5LCJjaXBoZXItYmFzZSI6MjIxLGluaGVyaXRzOjQ0MCwic2FmZS1idWZmZXIiOjQ5NH1dLDIwNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJi'@; put 'cm93c2VyaWZ5LWRlcyIpLGE9cygiYnJvd3NlcmlmeS1hZXMvYnJvd3NlciIpLG89cygiYnJvd3NlcmlmeS1hZXMvbW9kZXMiKSxyPXMoImJyb3dzZXJpZnktZGVzL21vZGVzIiksdD1zKCJldnBfYnl0ZXN0b2tleSIpO2Z1bmN0aW9uIGUobixpLGgpe2lmKG49bi50b0xvd2VyQ2FzZSgpLG9b'@; put 'bl0pcmV0dXJuIGEuY3JlYXRlQ2lwaGVyaXYobixpLGgpO2lmKHJbbl0pcmV0dXJuIG5ldyBiKHtrZXk6aSxpdjpoLG1vZGU6bn0pO3Rocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpfWZ1bmN0aW9uIGwobixpLGgpe2lmKG49bi50b0xvd2VyQ2FzZSgpLG9bbl0pcmV0'@; put 'dXJuIGEuY3JlYXRlRGVjaXBoZXJpdihuLGksaCk7aWYocltuXSlyZXR1cm4gbmV3IGIoe2tleTppLGl2OmgsbW9kZTpuLGRlY3J5cHQ6ITB9KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKX1TLmNyZWF0ZUNpcGhlcj1TLkNpcGhlcj1mdW5jdGlvbihuLGkpe3Zh'@; put 'ciBoLGY7aWYobj1uLnRvTG93ZXJDYXNlKCksb1tuXSloPW9bbl0ua2V5LGY9b1tuXS5pdjtlbHNle2lmKCFyW25dKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2g9OCpyW25dLmtleSxmPXJbbl0uaXZ9dmFyIHU9dChpLCExLGgsZik7cmV0dXJuIGUobix1Lmtl'@; put 'eSx1Lml2KX0sUy5jcmVhdGVDaXBoZXJpdj1TLkNpcGhlcml2PWUsUy5jcmVhdGVEZWNpcGhlcj1TLkRlY2lwaGVyPWZ1bmN0aW9uKG4saSl7dmFyIGgsZjtpZihuPW4udG9Mb3dlckNhc2UoKSxvW25dKWg9b1tuXS5rZXksZj1vW25dLml2O2Vsc2V7aWYoIXJbbl0pdGhyb3cgbmV3IFR5cGVF'@; put 'cnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aD04KnJbbl0ua2V5LGY9cltuXS5pdn12YXIgdT10KGksITEsaCxmKTtyZXR1cm4gbChuLHUua2V5LHUuaXYpfSxTLmNyZWF0ZURlY2lwaGVyaXY9Uy5EZWNpcGhlcml2PWwsUy5saXN0Q2lwaGVycz1TLmdldENpcGhlcnM9ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gT2JqZWN0LmtleXMocikuY29uY2F0KGEuZ2V0Q2lwaGVycygpKX19LHsiYnJvd3NlcmlmeS1hZXMvYnJvd3NlciI6MTkxLCJicm93c2VyaWZ5LWFlcy9tb2RlcyI6MjAyLCJicm93c2VyaWZ5LWRlcyI6MjA3LCJicm93c2VyaWZ5LWRlcy9tb2RlcyI6MjA4LGV2cF9ieXRlc3Rva2V5'@; put 'OjQyM31dLDIwNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJjaXBoZXItYmFzZSIpLGE9cygiZGVzLmpzIiksbz1zKCJpbmhlcml0cyIpLHI9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsdD17ImRlcy1lZGUzLWNiYyI6YS5DQkMuaW5zdGFudGlhdGUoYS5FREUpLCJk'@; put 'ZXMtZWRlMyI6YS5FREUsImRlcy1lZGUtY2JjIjphLkNCQy5pbnN0YW50aWF0ZShhLkVERSksImRlcy1lZGUiOmEuRURFLCJkZXMtY2JjIjphLkNCQy5pbnN0YW50aWF0ZShhLkRFUyksImRlcy1lY2IiOmEuREVTfTtmdW5jdGlvbiBlKGwpe2IuY2FsbCh0aGlzKTt2YXIgbixpPWwubW9kZS50'@; put 'b0xvd2VyQ2FzZSgpLGg9dFtpXTtuPWwuZGVjcnlwdD8iZGVjcnlwdCI6ImVuY3J5cHQiO3ZhciBmPWwua2V5O3IuaXNCdWZmZXIoZil8fChmPXIuZnJvbShmKSksImRlcy1lZGUiIT09aSYmImRlcy1lZGUtY2JjIiE9PWl8fChmPXIuY29uY2F0KFtmLGYuc2xpY2UoMCw4KV0pKTt2YXIgdT1s'@; put 'Lml2O3IuaXNCdWZmZXIodSl8fCh1PXIuZnJvbSh1KSksdGhpcy5fZGVzPWguY3JlYXRlKHtrZXk6Zixpdjp1LHR5cGU6bn0pfXQuZGVzPXRbImRlcy1jYmMiXSx0LmRlczM9dFsiZGVzLWVkZTMtY2JjIl0sRS5leHBvcnRzPWUsbyhlLGIpLGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24o'@; put 'bCl7cmV0dXJuIHIuZnJvbSh0aGlzLl9kZXMudXBkYXRlKGwpKX0sZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHIuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSl9fSx7ImNpcGhlci1iYXNlIjoyMjEsImRlcy5qcyI6Mzk0LGluaGVyaXRzOjQ0MCwic2FmZS1idWZmZXIiOjQ5'@; put 'NH1dLDIwODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtTWyJkZXMtZWNiIl09e2tleTo4LGl2OjB9LFNbImRlcy1jYmMiXT1TLmRlcz17a2V5OjgsaXY6OH0sU1siZGVzLWVkZTMtY2JjIl09Uy5kZXMzPXtrZXk6MjQsaXY6OH0sU1siZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LFNb'@; put 'ImRlcy1lZGUtY2JjIl09e2tleToxNixpdjo4fSxTWyJkZXMtZWRlIl09e2tleToxNixpdjowfX0se31dLDIwOTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGE9cygiYm4uanMiKSxvPXMoInJhbmRvbWJ5dGVzIik7ZnVuY3Rpb24g'@; put 'cihlKXt2YXIgbCxuPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7ZG97bD1uZXcgYShvKG4pKX13aGlsZShsLmNtcChlLm1vZHVsdXMpPj0wfHwhbC51bW9kKGUucHJpbWUxKXx8IWwudW1vZChlLnByaW1lMikpO3JldHVybiBsfWZ1bmN0aW9uIHQoZSxsKXt2YXIgTCxOLG49e2JsaW5kZXI6KE49'@; put 'cihMPWwpKS50b1JlZChhLm1vbnQoTC5tb2R1bHVzKSkucmVkUG93KG5ldyBhKEwucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCksdW5ibGluZGVyOk4uaW52bShMLm1vZHVsdXMpfSxpPWwubW9kdWx1cy5ieXRlTGVuZ3RoKCksaD1uZXcgYShlKS5tdWwobi5ibGluZGVyKS51bW9kKGwubW9k'@; put 'dWx1cyksZj1oLnRvUmVkKGEubW9udChsLnByaW1lMSkpLHU9aC50b1JlZChhLm1vbnQobC5wcmltZTIpKSxwPWwuY29lZmZpY2llbnQsZD1sLnByaW1lMSx2PWwucHJpbWUyLF89Zi5yZWRQb3cobC5leHBvbmVudDEpLmZyb21SZWQoKSxBPXUucmVkUG93KGwuZXhwb25lbnQyKS5mcm9tUmVk'@; put 'KCksST1fLmlzdWIoQSkuaW11bChwKS51bW9kKGQpLmltdWwodik7cmV0dXJuIEEuaWFkZChJKS5pbXVsKG4udW5ibGluZGVyKS51bW9kKGwubW9kdWx1cykudG9BcnJheUxpa2UoYiwiYmUiLGkpfXQuZ2V0cj1yLEUuZXhwb3J0cz10fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJidWZm'@; put 'ZXIiKS5CdWZmZXIpfSx7ImJuLmpzIjoxODYsYnVmZmVyOjIyMCxyYW5kb21ieXRlczo0NzV9XSwyMTA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPXMoIi4vYnJvd3Nlci9hbGdvcml0aG1zLmpzb24iKX0seyIuL2Jyb3dzZXIvYWxnb3JpdGhtcy5qc29uIjoyMTF9'@; put 'XSwyMTE6W2Z1bmN0aW9uKHMsRSxTKXtFLmV4cG9ydHM9e3NoYTIyNFdpdGhSU0FFbmNyeXB0aW9uOntzaWduOiJyc2EiLGhhc2g6InNoYTIyNCIsaWQ6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sIlJTQS1TSEEyMjQiOntzaWduOiJlY2RzYS9yc2EiLGhhc2g6'@; put 'InNoYTIyNCIsaWQ6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sc2hhMjU2V2l0aFJTQUVuY3J5cHRpb246e3NpZ246InJzYSIsaGFzaDoic2hhMjU2IixpZDoiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAifSwiUlNBLVNIQTI1NiI6e3Np'@; put 'Z246ImVjZHNhL3JzYSIsaGFzaDoic2hhMjU2IixpZDoiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAifSxzaGEzODRXaXRoUlNBRW5jcnlwdGlvbjp7c2lnbjoicnNhIixoYXNoOiJzaGEzODQiLGlkOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQz'@; put 'MCJ9LCJSU0EtU0hBMzg0Ijp7c2lnbjoiZWNkc2EvcnNhIixoYXNoOiJzaGEzODQiLGlkOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LHNoYTUxMldpdGhSU0FFbmNyeXB0aW9uOntzaWduOiJyc2EiLGhhc2g6InNoYTUxMiIsaWQ6IjMwNTEzMDBkMDYwOTYwODY0'@; put 'ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEE1MTIiOntzaWduOiJlY2RzYS9yc2EiLGhhc2g6InNoYTUxMiIsaWQ6IjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEExIjp7c2lnbjoicnNhIixoYXNoOiJzaGExIixpZDoiMzAyMTMwMDkwNjA1'@; put 'MmIwZTAzMDIxYTA1MDAwNDE0In0sImVjZHNhLXdpdGgtU0hBMSI6e3NpZ246ImVjZHNhIixoYXNoOiJzaGExIixpZDoiIn0sc2hhMjU2OntzaWduOiJlY2RzYSIsaGFzaDoic2hhMjU2IixpZDoiIn0sc2hhMjI0OntzaWduOiJlY2RzYSIsaGFzaDoic2hhMjI0IixpZDoiIn0sc2hhMzg0Ontz'@; put 'aWduOiJlY2RzYSIsaGFzaDoic2hhMzg0IixpZDoiIn0sc2hhNTEyOntzaWduOiJlY2RzYSIsaGFzaDoic2hhNTEyIixpZDoiIn0sIkRTQS1TSEEiOntzaWduOiJkc2EiLGhhc2g6InNoYTEiLGlkOiIifSwiRFNBLVNIQTEiOntzaWduOiJkc2EiLGhhc2g6InNoYTEiLGlkOiIifSxEU0E6e3Np'@; put 'Z246ImRzYSIsaGFzaDoic2hhMSIsaWQ6IiJ9LCJEU0EtV0lUSC1TSEEyMjQiOntzaWduOiJkc2EiLGhhc2g6InNoYTIyNCIsaWQ6IiJ9LCJEU0EtU0hBMjI0Ijp7c2lnbjoiZHNhIixoYXNoOiJzaGEyMjQiLGlkOiIifSwiRFNBLVdJVEgtU0hBMjU2Ijp7c2lnbjoiZHNhIixoYXNoOiJzaGEy'@; put 'NTYiLGlkOiIifSwiRFNBLVNIQTI1NiI6e3NpZ246ImRzYSIsaGFzaDoic2hhMjU2IixpZDoiIn0sIkRTQS1XSVRILVNIQTM4NCI6e3NpZ246ImRzYSIsaGFzaDoic2hhMzg0IixpZDoiIn0sIkRTQS1TSEEzODQiOntzaWduOiJkc2EiLGhhc2g6InNoYTM4NCIsaWQ6IiJ9LCJEU0EtV0lUSC1T'@; put 'SEE1MTIiOntzaWduOiJkc2EiLGhhc2g6InNoYTUxMiIsaWQ6IiJ9LCJEU0EtU0hBNTEyIjp7c2lnbjoiZHNhIixoYXNoOiJzaGE1MTIiLGlkOiIifSwiRFNBLVJJUEVNRDE2MCI6e3NpZ246ImRzYSIsaGFzaDoicm1kMTYwIixpZDoiIn0scmlwZW1kMTYwV2l0aFJTQTp7c2lnbjoicnNhIixo'@; put 'YXNoOiJybWQxNjAiLGlkOiIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTQifSwiUlNBLVJJUEVNRDE2MCI6e3NpZ246InJzYSIsaGFzaDoicm1kMTYwIixpZDoiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0In0sbWQ1V2l0aFJTQUVuY3J5cHRpb246e3NpZ246InJzYSIsaGFz'@; put 'aDoibWQ1IixpZDoiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwIn0sIlJTQS1NRDUiOntzaWduOiJyc2EiLGhhc2g6Im1kNSIsaWQ6IjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMCJ9fX0se31dLDIxMjpbZnVuY3Rpb24ocyxFLFMpe0UuZXhwb3J0cz17'@; put 'IjEuMy4xMzIuMC4xMCI6InNlY3AyNTZrMSIsIjEuMy4xMzIuMC4zMyI6InAyMjQiLCIxLjIuODQwLjEwMDQ1LjMuMS4xIjoicDE5MiIsIjEuMi44NDAuMTAwNDUuMy4xLjciOiJwMjU2IiwiMS4zLjEzMi4wLjM0IjoicDM4NCIsIjEuMy4xMzIuMC4zNSI6InA1MjEifX0se31dLDIxMzpbZnVu'@; put 'Y3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZlcixhPXMoImNyZWF0ZS1oYXNoIiksbz1zKCJyZWFkYWJsZS1zdHJlYW0iKSxyPXMoImluaGVyaXRzIiksdD1zKCIuL3NpZ24iKSxlPXMoIi4vdmVyaWZ5IiksbD1zKCIuL2FsZ29yaXRobXMuanNv'@; put 'biIpO2Z1bmN0aW9uIG4odSl7by5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciBwPWxbdV07aWYoIXApdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaFR5cGU9cC5oYXNoLHRoaXMuX2hhc2g9YShwLmhhc2gpLHRoaXMuX3RhZz1wLmlkLHRoaXMuX3Np'@; put 'Z25UeXBlPXAuc2lnbn1mdW5jdGlvbiBpKHUpe28uV3JpdGFibGUuY2FsbCh0aGlzKTt2YXIgcD1sW3VdO2lmKCFwKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2VzdCIpO3RoaXMuX2hhc2g9YShwLmhhc2gpLHRoaXMuX3RhZz1wLmlkLHRoaXMuX3NpZ25UeXBlPXAuc2ln'@; put 'bn1mdW5jdGlvbiBoKHUpe3JldHVybiBuZXcgbih1KX1mdW5jdGlvbiBmKHUpe3JldHVybiBuZXcgaSh1KX1PYmplY3Qua2V5cyhsKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe2xbdV0uaWQ9Yi5mcm9tKGxbdV0uaWQsImhleCIpLGxbdS50b0xvd2VyQ2FzZSgpXT1sW3VdfSkscihuLG8uV3JpdGFi'@; put 'bGUpLG4ucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbih1LHAsZCl7dGhpcy5faGFzaC51cGRhdGUodSksZCgpfSxuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odSxwKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHUmJih1PWIuZnJvbSh1LHApKSx0aGlzLl9oYXNoLnVwZGF0ZSh1KSx0aGlz'@; put 'fSxuLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKHUscCl7dGhpcy5lbmQoKTt2YXIgZD10aGlzLl9oYXNoLmRpZ2VzdCgpLHY9dChkLHUsdGhpcy5faGFzaFR5cGUsdGhpcy5fc2lnblR5cGUsdGhpcy5fdGFnKTtyZXR1cm4gcD92LnRvU3RyaW5nKHApOnZ9LHIoaSxvLldyaXRhYmxlKSxpLnBy'@; put 'b3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odSxwLGQpe3RoaXMuX2hhc2gudXBkYXRlKHUpLGQoKX0saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHUscCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB1JiYodT1iLmZyb20odSxwKSksdGhpcy5faGFzaC51cGRhdGUodSksdGhpc30saS5wcm90'@; put 'b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHUscCxkKXsic3RyaW5nIj09dHlwZW9mIHAmJihwPWIuZnJvbShwLGQpKSx0aGlzLmVuZCgpO3ZhciB2PXRoaXMuX2hhc2guZGlnZXN0KCk7cmV0dXJuIGUocCx2LHUsdGhpcy5fc2lnblR5cGUsdGhpcy5fdGFnKX0sRS5leHBvcnRzPXtTaWduOmgsVmVy'@; put 'aWZ5OmYsY3JlYXRlU2lnbjpoLGNyZWF0ZVZlcmlmeTpmfX0seyIuL2FsZ29yaXRobXMuanNvbiI6MjExLCIuL3NpZ24iOjIxNCwiLi92ZXJpZnkiOjIxNSwiY3JlYXRlLWhhc2giOjM4Nixpbmhlcml0czo0NDAsInJlYWRhYmxlLXN0cmVhbSI6NDkxLCJzYWZlLWJ1ZmZlciI6NDk0fV0sMjE0'@; put 'OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLGE9cygiY3JlYXRlLWhtYWMiKSxvPXMoImJyb3dzZXJpZnktcnNhIikscj1zKCJlbGxpcHRpYyIpLmVjLHQ9cygiYm4uanMiKSxlPXMoInBhcnNlLWFzbjEiKSxsPXMoIi4vY3VydmVz'@; put 'Lmpzb24iKTtmdW5jdGlvbiBuKHUscCxkLHYpe2lmKCh1PWIuZnJvbSh1LnRvQXJyYXkoKSkpLmxlbmd0aDxwLmJ5dGVMZW5ndGgoKSl7dmFyIF89Yi5hbGxvYyhwLmJ5dGVMZW5ndGgoKS11Lmxlbmd0aCk7dT1iLmNvbmNhdChbXyx1XSl9dmFyIEE9ZC5sZW5ndGgsST1mdW5jdGlvbihQLEIp'@; put 'e1A9KFA9aShQLEIpKS5tb2QoQik7dmFyICQ9Yi5mcm9tKFAudG9BcnJheSgpKTtpZigkLmxlbmd0aDxCLmJ5dGVMZW5ndGgoKSl7dmFyIEQ9Yi5hbGxvYyhCLmJ5dGVMZW5ndGgoKS0kLmxlbmd0aCk7JD1iLmNvbmNhdChbRCwkXSl9cmV0dXJuICR9KGQscCksTD1iLmFsbG9jKEEpO0wuZmls'@; put 'bCgxKTt2YXIgTj1iLmFsbG9jKEEpO3JldHVybiBOPWEodixOKS51cGRhdGUoTCkudXBkYXRlKGIuZnJvbShbMF0pKS51cGRhdGUodSkudXBkYXRlKEkpLmRpZ2VzdCgpLEw9YSh2LE4pLnVwZGF0ZShMKS5kaWdlc3QoKSx7azpOPWEodixOKS51cGRhdGUoTCkudXBkYXRlKGIuZnJvbShbMV0p'@; put 'KS51cGRhdGUodSkudXBkYXRlKEkpLmRpZ2VzdCgpLHY6TD1hKHYsTikudXBkYXRlKEwpLmRpZ2VzdCgpfX1mdW5jdGlvbiBpKHUscCl7dmFyIGQ9bmV3IHQodSksdj0odS5sZW5ndGg8PDMpLXAuYml0TGVuZ3RoKCk7cmV0dXJuIHY+MCYmZC5pc2hybih2KSxkfWZ1bmN0aW9uIGgodSxwLGQp'@; put 'e3ZhciB2LF87ZG97Zm9yKHY9Yi5hbGxvYygwKTs4KnYubGVuZ3RoPHUuYml0TGVuZ3RoKCk7KXAudj1hKGQscC5rKS51cGRhdGUocC52KS5kaWdlc3QoKSx2PWIuY29uY2F0KFt2LHAudl0pO189aSh2LHUpLHAuaz1hKGQscC5rKS51cGRhdGUocC52KS51cGRhdGUoYi5mcm9tKFswXSkpLmRp'@; put 'Z2VzdCgpLHAudj1hKGQscC5rKS51cGRhdGUocC52KS5kaWdlc3QoKX13aGlsZSgtMSE9PV8uY21wKHUpKTtyZXR1cm4gX31mdW5jdGlvbiBmKHUscCxkLHYpe3JldHVybiB1LnRvUmVkKHQubW9udChkKSkucmVkUG93KHApLmZyb21SZWQoKS5tb2Qodil9RS5leHBvcnRzPWZ1bmN0aW9uKHUs'@; put 'cCxkLHYsXyl7dmFyIEE9ZShwKTtpZihBLmN1cnZlKXtpZigiZWNkc2EiIT09diYmImVjZHNhL3JzYSIhPT12KXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihQLEIpe3ZhciAkPWxbQi5jdXJ2ZS5qb2luKCIuIildO2lmKCEkKXRocm93'@; put 'IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK0IuY3VydmUuam9pbigiLiIpKTt2YXIgRD1uZXcgcigkKS5rZXlGcm9tUHJpdmF0ZShCLnByaXZhdGVLZXkpLnNpZ24oUCk7cmV0dXJuIGIuZnJvbShELnRvREVSKCkpfSh1LEEpfWlmKCJkc2EiPT09QS50eXBlKXtpZigiZHNhIiE9PXYpdGhy'@; put 'b3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uKFAsQiwkKXtmb3IodmFyIEQseD1CLnBhcmFtcy5wcml2X2tleSxNPUIucGFyYW1zLnAsaj1CLnBhcmFtcy5xLGM9Qi5wYXJhbXMuZyxtPW5ldyB0KDApLGc9aShQLGopLm1vZChqKSx5PSExLHc9'@; put 'bih4LGosUCwkKTshMT09PXk7KW09ZihjLEQ9aChqLHcsJCksTSxqKSwwPT09KHk9RC5pbnZtKGopLmltdWwoZy5hZGQoeC5tdWwobSkpKS5tb2QoaikpLmNtcG4oMCkmJih5PSExLG09bmV3IHQoMCkpO3JldHVybiBmdW5jdGlvbihrLE8pe2s9ay50b0FycmF5KCksTz1PLnRvQXJyYXkoKSwx'@; put 'Mjgma1swXSYmKGs9WzBdLmNvbmNhdChrKSksMTI4Jk9bMF0mJihPPVswXS5jb25jYXQoTykpO3ZhciB6PVs0OCxrLmxlbmd0aCtPLmxlbmd0aCs0LDIsay5sZW5ndGhdO3JldHVybiB6PXouY29uY2F0KGssWzIsTy5sZW5ndGhdLE8pLGIuZnJvbSh6KX0obSx5KX0odSxBLGQpfWlmKCJyc2Ei'@; put 'IT09diYmImVjZHNhL3JzYSIhPT12KXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3U9Yi5jb25jYXQoW18sdV0pO2Zvcih2YXIgST1BLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLEw9WzAsMV07dS5sZW5ndGgrTC5sZW5ndGgrMTxJOylMLnB1c2goMjU1KTtMLnB1c2go'@; put 'MCk7Zm9yKHZhciBOPS0xOysrTjx1Lmxlbmd0aDspTC5wdXNoKHVbTl0pO3JldHVybiBvKEwsQSl9LEUuZXhwb3J0cy5nZXRLZXk9bixFLmV4cG9ydHMubWFrZUtleT1ofSx7Ii4vY3VydmVzLmpzb24iOjIxMiwiYm4uanMiOjE4NiwiYnJvd3NlcmlmeS1yc2EiOjIwOSwiY3JlYXRlLWhtYWMi'@; put 'OjM4OCxlbGxpcHRpYzo0MDUsInBhcnNlLWFzbjEiOjQ1OSwic2FmZS1idWZmZXIiOjQ5NH1dLDIxNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZlcixhPXMoImJuLmpzIiksbz1zKCJlbGxpcHRpYyIpLmVjLHI9cygicGFyc2UtYXNu'@; put 'MSIpLHQ9cygiLi9jdXJ2ZXMuanNvbiIpO2Z1bmN0aW9uIGUobCxuKXtpZihsLmNtcG4oMCk8PTApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZyIpO2lmKGwuY21wKG4pPj1uKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKX1FLmV4cG9ydHM9ZnVuY3Rpb24obCxuLGksaCxmKXt2'@; put 'YXIgdT1yKGkpO2lmKCJlYyI9PT11LnR5cGUpe2lmKCJlY2RzYSIhPT1oJiYiZWNkc2EvcnNhIiE9PWgpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oTCxOLFApe3ZhciBCPXRbUC5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIild'@; put 'O2lmKCFCKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK1AuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpKTtyZXR1cm4gbmV3IG8oQikudmVyaWZ5KE4sTCxQLmRhdGEuc3ViamVjdFByaXZhdGVLZXkuZGF0YSl9KGwsbix1KX1pZigiZHNhIj09PXUudHlwZSl7aWYoImRz'@; put 'YSIhPT1oKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uKEwsTixQKXt2YXIgQj1QLmRhdGEucCwkPVAuZGF0YS5xLEQ9UC5kYXRhLmcseD1QLmRhdGEucHViX2tleSxNPXIuc2lnbmF0dXJlLmRlY29kZShMLCJkZXIiKSxqPU0ucyxjPU0u'@; put 'cjtlKGosJCksZShjLCQpO3ZhciBtPWEubW9udChCKSxnPWouaW52bSgkKTtyZXR1cm4gMD09PUQudG9SZWQobSkucmVkUG93KG5ldyBhKE4pLm11bChnKS5tb2QoJCkpLmZyb21SZWQoKS5tdWwoeC50b1JlZChtKS5yZWRQb3coYy5tdWwoZykubW9kKCQpKS5mcm9tUmVkKCkpLm1vZChCKS5t'@; put 'b2QoJCkuY21wKGMpfShsLG4sdSl9aWYoInJzYSIhPT1oJiYiZWNkc2EvcnNhIiE9PWgpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtuPWIuY29uY2F0KFtmLG5dKTtmb3IodmFyIHA9dS5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxkPVsxXSx2PTA7bi5sZW5ndGgrZC5s'@; put 'ZW5ndGgrMjxwOylkLnB1c2goMjU1KSx2Kys7ZC5wdXNoKDApO2Zvcih2YXIgXz0tMTsrK188bi5sZW5ndGg7KWQucHVzaChuW19dKTtkPWIuZnJvbShkKTt2YXIgQT1hLm1vbnQodS5tb2R1bHVzKTtsPShsPW5ldyBhKGwpLnRvUmVkKEEpKS5yZWRQb3cobmV3IGEodS5wdWJsaWNFeHBvbmVu'@; put 'dCkpLGw9Yi5mcm9tKGwuZnJvbVJlZCgpLnRvQXJyYXkoKSk7dmFyIEk9djw4PzE6MDtmb3IocD1NYXRoLm1pbihsLmxlbmd0aCxkLmxlbmd0aCksbC5sZW5ndGghPT1kLmxlbmd0aCYmKEk9MSksXz0tMTsrK188cDspSXw9bFtfXV5kW19dO3JldHVybiAwPT09SX19LHsiLi9jdXJ2ZXMuanNv'@; put 'biI6MjEyLCJibi5qcyI6MTg2LGVsbGlwdGljOjQwNSwicGFyc2UtYXNuMSI6NDU5LCJzYWZlLWJ1ZmZlciI6NDk0fV0sMjE2OltmdW5jdGlvbihzLEUsUyl7fSx7fV0sMjE3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImJ1ZmZlciIpLGE9Yi5CdWZmZXI7ZnVuY3Rp'@; put 'b24gbyh0LGUpe2Zvcih2YXIgbCBpbiB0KWVbbF09dFtsXX1mdW5jdGlvbiByKHQsZSxsKXtyZXR1cm4gYSh0LGUsbCl9YS5mcm9tJiZhLmFsbG9jJiZhLmFsbG9jVW5zYWZlJiZhLmFsbG9jVW5zYWZlU2xvdz9FLmV4cG9ydHM9YjoobyhiLFMpLFMuQnVmZmVyPXIpLG8oYSxyKSxyLmZyb209'@; put 'ZnVuY3Rpb24odCxlLGwpe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBhKHQsZSxsKX0sci5hbGxvYz1mdW5jdGlvbih0LGUsbCl7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBU'@; put 'eXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgbj1hKHQpO3JldHVybiB2b2lkIDAhPT1lPyJzdHJpbmciPT10eXBlb2YgbD9uLmZpbGwoZSxsKTpuLmZpbGwoZSk6bi5maWxsKDApLG59LHIuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVv'@; put 'ZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYSh0KX0sci5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIi'@; put 'KTtyZXR1cm4gYi5TbG93QnVmZmVyKHQpfX0se2J1ZmZlcjoyMjB9XSwyMTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsYT1iLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKHUpe3N3aXRjaCgodT0iIit1KSYmdS50b0xvd2VyQ2FzZSgp'@; put 'KXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1'@; put 'bmN0aW9uIG8odSl7dmFyIHA7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24oZCl7dmFyIHY9ZnVuY3Rpb24oXyl7aWYoIV8pcmV0dXJuInV0ZjgiO2Zvcih2YXIgQTs7KXN3aXRjaChfKXtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiJ1dGY4IjtjYXNlInVjczIiOmNhc2UidWNz'@; put 'LTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuInV0ZjE2bGUiO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuImxhdGluMSI7Y2FzZSJiYXNlNjQiOmNhc2UiYXNjaWkiOmNhc2UiaGV4IjpyZXR1cm4gXztkZWZhdWx0OmlmKEEpcmV0dXJuO189KCIiK18pLnRv'@; put 'TG93ZXJDYXNlKCksQT0hMH19KGQpO2lmKCJzdHJpbmciIT10eXBlb2YgdiYmKGIuaXNFbmNvZGluZz09PWF8fCFhKGQpKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZCk7cmV0dXJuIHZ8fGR9KHUpLHRoaXMuZW5jb2Rpbmcpe2Nhc2UidXRmMTZsZSI6dGhpcy50ZXh0'@; put 'PWUsdGhpcy5lbmQ9bCxwPTQ7YnJlYWs7Y2FzZSJ1dGY4Ijp0aGlzLmZpbGxMYXN0PXQscD00O2JyZWFrO2Nhc2UiYmFzZTY0Ijp0aGlzLnRleHQ9bix0aGlzLmVuZD1pLHA9MzticmVhaztkZWZhdWx0OnJldHVybiB0aGlzLndyaXRlPWgsdm9pZCh0aGlzLmVuZD1mKX10aGlzLmxhc3ROZWVk'@; put 'PTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPWIuYWxsb2NVbnNhZmUocCl9ZnVuY3Rpb24gcih1KXtyZXR1cm4gdTw9MTI3PzA6dT4+NT09Nj8yOnU+PjQ9PTE0PzM6dT4+Mz09MzA/NDp1Pj42PT0yPy0xOi0yfWZ1bmN0aW9uIHQodSl7dmFyIHA9dGhpcy5sYXN0VG90YWwtdGhp'@; put 'cy5sYXN0TmVlZCxkPWZ1bmN0aW9uKHYsXyl7aWYoMTI4IT0oMTkyJl9bMF0pKXJldHVybiB2Lmxhc3ROZWVkPTAsIlx1ZmZmZCI7aWYodi5sYXN0TmVlZD4xJiZfLmxlbmd0aD4xKXtpZigxMjghPSgxOTImX1sxXSkpcmV0dXJuIHYubGFzdE5lZWQ9MSwiXHVmZmZkIjtpZih2Lmxhc3ROZWVk'@; put 'PjImJl8ubGVuZ3RoPjImJjEyOCE9KDE5MiZfWzJdKSlyZXR1cm4gdi5sYXN0TmVlZD0yLCJcdWZmZmQifX0odGhpcyx1KTtyZXR1cm4gdm9pZCAwIT09ZD9kOnRoaXMubGFzdE5lZWQ8PXUubGVuZ3RoPyh1LmNvcHkodGhpcy5sYXN0Q2hhcixwLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0'@; put 'Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpKToodS5jb3B5KHRoaXMubGFzdENoYXIscCwwLHUubGVuZ3RoKSx2b2lkKHRoaXMubGFzdE5lZWQtPXUubGVuZ3RoKSl9ZnVuY3Rpb24gZSh1LHApe2lmKCh1Lmxlbmd0aC1wKSUyPT0wKXt2YXIgZD11LnRvU3Ry'@; put 'aW5nKCJ1dGYxNmxlIixwKTtpZihkKXt2YXIgdj1kLmNoYXJDb2RlQXQoZC5sZW5ndGgtMSk7aWYodj49NTUyOTYmJnY8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPXVbdS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT11'@; put 'W3UubGVuZ3RoLTFdLGQuc2xpY2UoMCwtMSl9cmV0dXJuIGR9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09dVt1Lmxlbmd0aC0xXSx1LnRvU3RyaW5nKCJ1dGYxNmxlIixwLHUubGVuZ3RoLTEpfWZ1bmN0aW9uIGwodSl7dmFyIHA9dSYm'@; put 'dS5sZW5ndGg/dGhpcy53cml0ZSh1KToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9wK3RoaXMubGFzdENoYXIudG9TdHJpbmcoInV0ZjE2bGUiLDAsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCk6cH1mdW5jdGlvbiBuKHUscCl7dmFyIGQ9KHUubGVuZ3RoLXApJTM7cmV0dXJuIDA9PT1k'@; put 'P3UudG9TdHJpbmcoImJhc2U2NCIscCk6KHRoaXMubGFzdE5lZWQ9My1kLHRoaXMubGFzdFRvdGFsPTMsMT09PWQ/dGhpcy5sYXN0Q2hhclswXT11W3UubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPXVbdS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT11W3UubGVuZ3RoLTFdKSx1LnRv'@; put 'U3RyaW5nKCJiYXNlNjQiLHAsdS5sZW5ndGgtZCkpfWZ1bmN0aW9uIGkodSl7dmFyIHA9dSYmdS5sZW5ndGg/dGhpcy53cml0ZSh1KToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9wK3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQpOnB9ZnVuY3Rpb24g'@; put 'aCh1KXtyZXR1cm4gdS50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBmKHUpe3JldHVybiB1JiZ1Lmxlbmd0aD90aGlzLndyaXRlKHUpOiIifVMuU3RyaW5nRGVjb2Rlcj1vLG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHUpe2lmKDA9PT11Lmxlbmd0aClyZXR1cm4iIjt2YXIg'@; put 'cCxkO2lmKHRoaXMubGFzdE5lZWQpe2lmKHZvaWQgMD09PShwPXRoaXMuZmlsbExhc3QodSkpKXJldHVybiIiO2Q9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSBkPTA7cmV0dXJuIGQ8dS5sZW5ndGg/cD9wK3RoaXMudGV4dCh1LGQpOnRoaXMudGV4dCh1LGQpOnB8fCIifSxv'@; put 'LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odSl7dmFyIHA9dSYmdS5sZW5ndGg/dGhpcy53cml0ZSh1KToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9wKyJcdWZmZmQiOnB9LG8ucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24odSxwKXt2YXIgZD1mdW5jdGlvbihfLEEsSSl7dmFyIEw9QS5sZW5ndGgt'@; put 'MTtpZihMPEkpcmV0dXJuIDA7dmFyIE49cihBW0xdKTtyZXR1cm4gTj49MD8oTj4wJiYoXy5sYXN0TmVlZD1OLTEpLE4pOi0tTDxJfHwtMj09PU4/MDooTj1yKEFbTF0pKT49MD8oTj4wJiYoXy5sYXN0TmVlZD1OLTIpLE4pOi0tTDxJfHwtMj09PU4/MDooTj1yKEFbTF0pKT49MD8oTj4wJiYo'@; put 'Mj09PU4/Tj0wOl8ubGFzdE5lZWQ9Ti0zKSxOKTowfSh0aGlzLHUscCk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIHUudG9TdHJpbmcoInV0ZjgiLHApO3RoaXMubGFzdFRvdGFsPWQ7dmFyIHY9dS5sZW5ndGgtKGQtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHUuY29weSh0aGlzLmxhc3RDaGFy'@; put 'LDAsdiksdS50b1N0cmluZygidXRmOCIscCx2KX0sby5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24odSl7aWYodGhpcy5sYXN0TmVlZDw9dS5sZW5ndGgpcmV0dXJuIHUuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0'@; put 'aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7dS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHUubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT11Lmxlbmd0aH19LHsic2FmZS1idWZmZXIiOjIxN31dLDIx'@; put 'OTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPWZ1bmN0aW9uKGEsbyl7Zm9yKHZhciByPU1hdGgubWluKGEubGVuZ3RoLG8ubGVuZ3RoKSx0PW5ldyBiKHIpLGU9MDtlPHI7KytlKXRbZV09YVtlXV5vW2VdO3JldHVybiB0'@; put 'fX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiYnVmZmVyIikuQnVmZmVyKX0se2J1ZmZlcjoyMjB9XSwyMjA6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPXMoImJhc2U2NC1qcyIpLG89cygiaWVlZTc1NCIpO2Z1bmN0aW9u'@; put 'IHIoVCl7aWYoVD4yMTQ3NDgzNjQ3KXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicrVCsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIEM9bmV3IFVpbnQ4QXJyYXkoVCk7cmV0dXJuIEMuX19wcm90b19fPXQucHJvdG90eXBlLEN9ZnVuY3Rpb24gdChULEMs'@; put 'Ril7aWYoIm51bWJlciI9PXR5cGVvZiBUKXtpZigic3RyaW5nIj09dHlwZW9mIEMpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIG4oVCl9cmV0dXJuIGUoVCxDLEYp'@; put 'fWZ1bmN0aW9uIGUoVCxDLEYpe2lmKCJzdHJpbmciPT10eXBlb2YgVClyZXR1cm4gZnVuY3Rpb24oWCxLKXtpZigic3RyaW5nIj09dHlwZW9mIEsmJiIiIT09S3x8KEs9InV0ZjgiKSwhdC5pc0VuY29kaW5nKEspKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrSyk7'@; put 'dmFyIHJ0PTB8ZihYLEspLHR0PXIocnQpLFc9dHQud3JpdGUoWCxLKTtyZXR1cm4gVyE9PXJ0JiYodHQ9dHQuc2xpY2UoMCxXKSksdHR9KFQsQyk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KFQpKXJldHVybiBpKFQpO2lmKG51bGw9PVQpdGhyb3cgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1l'@; put 'bnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBUKTtpZihSKFQsQXJyYXlCdWZmZXIpfHxUJiZSKFQuYnVmZmVyLEFycmF5QnVmZmVyKSlyZXR1cm4gZnVu'@; put 'Y3Rpb24oWCxLLHJ0KXtpZihLPDB8fFguYnl0ZUxlbmd0aDxLKXRocm93IG5ldyBSYW5nZUVycm9yKCcib2Zmc2V0IiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZihYLmJ5dGVMZW5ndGg8SysocnR8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRl'@; put 'IG9mIGJ1ZmZlciBib3VuZHMnKTt2YXIgdHQ7cmV0dXJuKHR0PXZvaWQgMD09PUsmJnZvaWQgMD09PXJ0P25ldyBVaW50OEFycmF5KFgpOnZvaWQgMD09PXJ0P25ldyBVaW50OEFycmF5KFgsSyk6bmV3IFVpbnQ4QXJyYXkoWCxLLHJ0KSkuX19wcm90b19fPXQucHJvdG90eXBlLHR0fShULEMs'@; put 'Rik7aWYoIm51bWJlciI9PXR5cGVvZiBUKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3ZhciBxPVQudmFsdWVPZiYmVC52YWx1ZU9mKCk7aWYobnVsbCE9cSYmcSE9PVQp'@; put 'cmV0dXJuIHQuZnJvbShxLEMsRik7dmFyIFk9ZnVuY3Rpb24oWCl7aWYodC5pc0J1ZmZlcihYKSl7dmFyIEs9MHxoKFgubGVuZ3RoKSxydD1yKEspO3JldHVybiAwPT09cnQubGVuZ3RofHxYLmNvcHkocnQsMCwwLEspLHJ0fXJldHVybiB2b2lkIDAhPT1YLmxlbmd0aD8ibnVtYmVyIiE9dHlw'@; put 'ZW9mIFgubGVuZ3RofHxIKFgubGVuZ3RoKT9yKDApOmkoWCk6IkJ1ZmZlciI9PT1YLnR5cGUmJkFycmF5LmlzQXJyYXkoWC5kYXRhKT9pKFguZGF0YSk6dm9pZCAwfShUKTtpZihZKXJldHVybiBZO2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5j'@; put 'dGlvbiI9PXR5cGVvZiBUW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIHQuZnJvbShUW1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLEMsRik7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFy'@; put 'cmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgVCl9ZnVuY3Rpb24gbChUKXtpZigibnVtYmVyIiE9dHlwZW9mIFQpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtp'@; put 'ZihUPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytUKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiBuKFQpe3JldHVybiBsKFQpLHIoVDwwPzA6MHxoKFQpKX1mdW5jdGlvbiBpKFQpe2Zvcih2YXIgQz1ULmxlbmd0aDwwPzA6MHxoKFQubGVu'@; put 'Z3RoKSxGPXIoQykscT0wO3E8QztxKz0xKUZbcV09MjU1JlRbcV07cmV0dXJuIEZ9ZnVuY3Rpb24gaChUKXtpZihUPj0yMTQ3NDgzNjQ3KXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4N2ZmZmZmZmYg'@; put 'Ynl0ZXMiKTtyZXR1cm4gMHxUfWZ1bmN0aW9uIGYoVCxDKXtpZih0LmlzQnVmZmVyKFQpKXJldHVybiBULmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoVCl8fFIoVCxBcnJheUJ1ZmZlcikpcmV0dXJuIFQuYnl0ZUxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIFQpdGhyb3cgbmV3IFR5'@; put 'cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIFQpO3ZhciBGPVQubGVuZ3RoLHE9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtp'@; put 'ZighcSYmMD09PUYpcmV0dXJuIDA7Zm9yKHZhciBZPSExOzspc3dpdGNoKEMpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIEY7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4geihUKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0'@; put 'ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKkY7Y2FzZSJoZXgiOnJldHVybiBGPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIFUoVCkubGVuZ3RoO2RlZmF1bHQ6aWYoWSlyZXR1cm4gcT8tMTp6KFQpLmxlbmd0aDtDPSgiIitDKS50b0xvd2VyQ2FzZSgpLFk9ITB9fWZ1bmN0aW9uIHUo'@; put 'VCxDLEYpe3ZhciBxPSExO2lmKCh2b2lkIDA9PT1DfHxDPDApJiYoQz0wKSxDPnRoaXMubGVuZ3RofHwoKHZvaWQgMD09PUZ8fEY+dGhpcy5sZW5ndGgpJiYoRj10aGlzLmxlbmd0aCksRjw9MCl8fChGPj4+PTApPD0oQz4+Pj0wKSlyZXR1cm4iIjtmb3IoVHx8KFQ9InV0ZjgiKTs7KXN3aXRj'@; put 'aChUKXtjYXNlImhleCI6cmV0dXJuIE0odGhpcyxDLEYpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuICQodGhpcyxDLEYpO2Nhc2UiYXNjaWkiOnJldHVybiBEKHRoaXMsQyxGKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiB4KHRoaXMsQyxGKTtjYXNlImJhc2U2NCI6'@; put 'cmV0dXJuIEIodGhpcyxDLEYpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gaih0aGlzLEMsRik7ZGVmYXVsdDppZihxKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrVCk7VD0oVCsiIikudG9Mb3dlckNh'@; put 'c2UoKSxxPSEwfX1mdW5jdGlvbiBwKFQsQyxGKXt2YXIgcT1UW0NdO1RbQ109VFtGXSxUW0ZdPXF9ZnVuY3Rpb24gZChULEMsRixxLFkpe2lmKDA9PT1ULmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIEY/KHE9RixGPTApOkY+MjE0NzQ4MzY0Nz9GPTIxNDc0ODM2NDc6Rjwt'@; put 'MjE0NzQ4MzY0OCYmKEY9LTIxNDc0ODM2NDgpLEgoRj0rRikmJihGPVk/MDpULmxlbmd0aC0xKSxGPDAmJihGPVQubGVuZ3RoK0YpLEY+PVQubGVuZ3RoKXtpZihZKXJldHVybi0xO0Y9VC5sZW5ndGgtMX1lbHNlIGlmKEY8MCl7aWYoIVkpcmV0dXJuLTE7Rj0wfWlmKCJzdHJpbmciPT10eXBl'@; put 'b2YgQyYmKEM9dC5mcm9tKEMscSkpLHQuaXNCdWZmZXIoQykpcmV0dXJuIDA9PT1DLmxlbmd0aD8tMTp2KFQsQyxGLHEsWSk7aWYoIm51bWJlciI9PXR5cGVvZiBDKXJldHVybiBDJj0yNTUsImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/WT9VaW50OEFy'@; put 'cmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoVCxDLEYpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoVCxDLEYpOnYoVCxbQ10sRixxLFkpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIHYo'@; put 'VCxDLEYscSxZKXt2YXIgWCxLPTEscnQ9VC5sZW5ndGgsdHQ9Qy5sZW5ndGg7aWYodm9pZCAwIT09cSYmKCJ1Y3MyIj09PShxPVN0cmluZyhxKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PXF8fCJ1dGYxNmxlIj09PXF8fCJ1dGYtMTZsZSI9PT1xKSl7aWYoVC5sZW5ndGg8Mnx8Qy5sZW5n'@; put 'dGg8MilyZXR1cm4tMTtLPTIscnQvPTIsdHQvPTIsRi89Mn1mdW5jdGlvbiBXKG50LGl0KXtyZXR1cm4gMT09PUs/bnRbaXRdOm50LnJlYWRVSW50MTZCRShpdCpLKX1pZihZKXt2YXIgUT0tMTtmb3IoWD1GO1g8cnQ7WCsrKWlmKFcoVCxYKT09PVcoQywtMT09PVE/MDpYLVEpKXtpZigtMT09'@; put 'PVEmJihRPVgpLFgtUSsxPT09dHQpcmV0dXJuIFEqS31lbHNlLTEhPT1RJiYoWC09WC1RKSxRPS0xfWVsc2UgZm9yKEYrdHQ+cnQmJihGPXJ0LXR0KSxYPUY7WD49MDtYLS0pe2Zvcih2YXIgRz0hMCxldD0wO2V0PHR0O2V0KyspaWYoVyhULFgrZXQpIT09VyhDLGV0KSl7Rz0hMTticmVha31p'@; put 'ZihHKXJldHVybiBYfXJldHVybi0xfWZ1bmN0aW9uIF8oVCxDLEYscSl7Rj1OdW1iZXIoRil8fDA7dmFyIFk9VC5sZW5ndGgtRjtxPyhxPU51bWJlcihxKSk+WSYmKHE9WSk6cT1ZO3ZhciBYPUMubGVuZ3RoO3E+WC8yJiYocT1YLzIpO2Zvcih2YXIgSz0wO0s8cTsrK0spe3ZhciBydD1wYXJz'@; put 'ZUludChDLnN1YnN0cigyKkssMiksMTYpO2lmKEgocnQpKXJldHVybiBLO1RbRitLXT1ydH1yZXR1cm4gS31mdW5jdGlvbiBBKFQsQyxGLHEpe3JldHVybiBWKHooQyxULmxlbmd0aC1GKSxULEYscSl9ZnVuY3Rpb24gSShULEMsRixxKXtyZXR1cm4gVihmdW5jdGlvbihZKXtmb3IodmFyIFg9'@; put 'W10sSz0wO0s8WS5sZW5ndGg7KytLKVgucHVzaCgyNTUmWS5jaGFyQ29kZUF0KEspKTtyZXR1cm4gWH0oQyksVCxGLHEpfWZ1bmN0aW9uIEwoVCxDLEYscSl7cmV0dXJuIEkoVCxDLEYscSl9ZnVuY3Rpb24gTihULEMsRixxKXtyZXR1cm4gVihVKEMpLFQsRixxKX1mdW5jdGlvbiBQKFQsQyxG'@; put 'LHEpe3JldHVybiBWKGZ1bmN0aW9uKFksWCl7Zm9yKHZhciBLLHJ0LFc9W10sUT0wO1E8WS5sZW5ndGgmJiEoKFgtPTIpPDApOysrUSlydD0oSz1ZLmNoYXJDb2RlQXQoUSkpPj44LFcucHVzaChLJTI1NiksVy5wdXNoKHJ0KTtyZXR1cm4gV30oQyxULmxlbmd0aC1GKSxULEYscSl9ZnVuY3Rp'@; put 'b24gQihULEMsRil7cmV0dXJuIGEuZnJvbUJ5dGVBcnJheSgwPT09QyYmRj09PVQubGVuZ3RoP1Q6VC5zbGljZShDLEYpKX1mdW5jdGlvbiAkKFQsQyxGKXtGPU1hdGgubWluKFQubGVuZ3RoLEYpO2Zvcih2YXIgcT1bXSxZPUM7WTxGOyl7dmFyIFgsSyxydCx0dCxXPVRbWV0sUT1udWxsLEc9'@; put 'Vz4yMzk/NDpXPjIyMz8zOlc+MTkxPzI6MTtpZihZK0c8PUYpc3dpdGNoKEcpe2Nhc2UgMTpXPDEyOCYmKFE9Vyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoWD1UW1krMV0pKSYmKHR0PSgzMSZXKTw8Nnw2MyZYKT4xMjcmJihRPXR0KTticmVhaztjYXNlIDM6Sz1UW1krMl0sMTI4PT0oMTky'@; put 'JihYPVRbWSsxXSkpJiYxMjg9PSgxOTImSykmJih0dD0oMTUmVyk8PDEyfCg2MyZYKTw8Nnw2MyZLKT4yMDQ3JiYodHQ8NTUyOTZ8fHR0PjU3MzQzKSYmKFE9dHQpO2JyZWFrO2Nhc2UgNDpLPVRbWSsyXSxydD1UW1krM10sMTI4PT0oMTkyJihYPVRbWSsxXSkpJiYxMjg9PSgxOTImSykmJjEy'@; put 'OD09KDE5MiZydCkmJih0dD0oMTUmVyk8PDE4fCg2MyZYKTw8MTJ8KDYzJkspPDw2fDYzJnJ0KT42NTUzNSYmdHQ8MTExNDExMiYmKFE9dHQpfW51bGw9PT1RPyhRPTY1NTMzLEc9MSk6UT42NTUzNSYmKHEucHVzaCgoUS09NjU1MzYpPj4+MTAmMTAyM3w1NTI5NiksUT01NjMyMHwxMDIzJlEp'@; put 'LHEucHVzaChRKSxZKz1HfXJldHVybiBmdW5jdGlvbihldCl7dmFyIG50PWV0Lmxlbmd0aDtpZihudDw9NDA5NilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZXQpO2Zvcih2YXIgaXQ9IiIsb3Q9MDtvdDxudDspaXQrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHko'@; put 'U3RyaW5nLGV0LnNsaWNlKG90LG90Kz00MDk2KSk7cmV0dXJuIGl0fShxKX1mdW5jdGlvbiBEKFQsQyxGKXt2YXIgcT0iIjtGPU1hdGgubWluKFQubGVuZ3RoLEYpO2Zvcih2YXIgWT1DO1k8RjsrK1kpcSs9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmVFtZXSk7cmV0dXJuIHF9ZnVuY3Rpb24g'@; put 'eChULEMsRil7dmFyIHE9IiI7Rj1NYXRoLm1pbihULmxlbmd0aCxGKTtmb3IodmFyIFk9QztZPEY7KytZKXErPVN0cmluZy5mcm9tQ2hhckNvZGUoVFtZXSk7cmV0dXJuIHF9ZnVuY3Rpb24gTShULEMsRil7dmFyIHE9VC5sZW5ndGg7KCFDfHxDPDApJiYoQz0wKSwoIUZ8fEY8MHx8Rj5xKSYm'@; put 'KEY9cSk7Zm9yKHZhciBZPSIiLFg9QztYPEY7KytYKVkrPU8oVFtYXSk7cmV0dXJuIFl9ZnVuY3Rpb24gaihULEMsRil7Zm9yKHZhciBxPVQuc2xpY2UoQyxGKSxZPSIiLFg9MDtYPHEubGVuZ3RoO1grPTIpWSs9U3RyaW5nLmZyb21DaGFyQ29kZShxW1hdKzI1NipxW1grMV0pO3JldHVybiBZ'@; put 'fWZ1bmN0aW9uIGMoVCxDLEYpe2lmKFQlMSE9MHx8VDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihUK0M+Ril0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIG0oVCxDLEYs'@; put 'cSxZLFgpe2lmKCF0LmlzQnVmZmVyKFQpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihDPll8fEM8WCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYo'@; put 'RitxPlQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBnKFQsQyxGLHEsWSxYKXtpZihGK3E+VC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKEY8MCl0aHJvdyBuZXcgUmFuZ2VFcnJv'@; put 'cigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24geShULEMsRixxLFkpe3JldHVybiBDPStDLEY+Pj49MCxZfHxnKFQsMCxGLDQpLG8ud3JpdGUoVCxDLEYscSwyMyw0KSxGKzR9ZnVuY3Rpb24gdyhULEMsRixxLFkpe3JldHVybiBDPStDLEY+Pj49MCxZfHxnKFQsMCxGLDgpLG8ud3Jp'@; put 'dGUoVCxDLEYscSw1Miw4KSxGKzh9Uy5CdWZmZXI9dCxTLlNsb3dCdWZmZXI9ZnVuY3Rpb24oVCl7cmV0dXJuK1QhPVQmJihUPTApLHQuYWxsb2MoK1QpfSxTLklOU1BFQ1RfTUFYX0JZVEVTPTUwLFMua01heExlbmd0aD0yMTQ3NDgzNjQ3LCh0LlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rp'@; put 'b24oKXt0cnl7dmFyIFQ9bmV3IFVpbnQ4QXJyYXkoMSk7cmV0dXJuIFQuX19wcm90b19fPXtfX3Byb3RvX186VWludDhBcnJheS5wcm90b3R5cGUsZm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX0sNDI9PT1ULmZvbygpfWNhdGNoe3JldHVybiExfX0oKSl8fHR5cGVvZiBjb25zb2xlPiJ1Inx8'@; put 'ImZ1bmN0aW9uIiE9dHlwZW9mIGNvbnNvbGUuZXJyb3J8fGNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVx'@; put 'dWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZih0LmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'dC5wcm90b3R5cGUsIm9mZnNldCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYodC5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wuc3BlY2llcyYmdFtTeW1ib2wuc3BlY2llc109PT10JiZPYmpl'@; put 'Y3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wuc3BlY2llcyx7dmFsdWU6bnVsbCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMX0pLHQucG9vbFNpemU9ODE5Mix0LmZyb209ZnVuY3Rpb24oVCxDLEYpe3JldHVybiBlKFQsQyxGKX0sdC5wcm90b3R5cGUuX19wcm90'@; put 'b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLHQuX19wcm90b19fPVVpbnQ4QXJyYXksdC5hbGxvYz1mdW5jdGlvbihULEMsRil7cmV0dXJuIFk9QyxYPUYsbChxPVQpLHE8PTA/cihxKTp2b2lkIDAhPT1ZPyJzdHJpbmciPT10eXBlb2YgWD9yKHEpLmZpbGwoWSxYKTpyKHEpLmZpbGwoWSk6cihx'@; put 'KTt2YXIgcSxZLFh9LHQuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oVCl7cmV0dXJuIG4oVCl9LHQuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKFQpe3JldHVybiBuKFQpfSx0LmlzQnVmZmVyPWZ1bmN0aW9uKFQpe3JldHVybiBudWxsIT1UJiYhMD09PVQuX2lzQnVmZmVyJiZUIT09dC5wcm90b3R5'@; put 'cGV9LHQuY29tcGFyZT1mdW5jdGlvbihULEMpe2lmKFIoVCxVaW50OEFycmF5KSYmKFQ9dC5mcm9tKFQsVC5vZmZzZXQsVC5ieXRlTGVuZ3RoKSksUihDLFVpbnQ4QXJyYXkpJiYoQz10LmZyb20oQyxDLm9mZnNldCxDLmJ5dGVMZW5ndGgpKSwhdC5pc0J1ZmZlcihUKXx8IXQuaXNCdWZmZXIo'@; put 'QykpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJidWYxIiwgImJ1ZjIiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYoVD09PUMpcmV0dXJuIDA7Zm9yKHZhciBGPVQubGVuZ3RoLHE9Qy5sZW5ndGgsWT0wLFg9TWF0aC5taW4oRixxKTtZ'@; put 'PFg7KytZKWlmKFRbWV0hPT1DW1ldKXtGPVRbWV0scT1DW1ldO2JyZWFrfXJldHVybiBGPHE/LTE6cTxGPzE6MH0sdC5pc0VuY29kaW5nPWZ1bmN0aW9uKFQpe3N3aXRjaChTdHJpbmcoVCkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2Np'@; put 'aSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSx0LmNvbmNhdD1mdW5jdGlvbihULEMpe2lmKCFBcnJheS5pc0FycmF5KFQp'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09VC5sZW5ndGgpcmV0dXJuIHQuYWxsb2MoMCk7dmFyIEY7aWYodm9pZCAwPT09Qylmb3IoQz0wLEY9MDtGPFQubGVuZ3RoOysrRilDKz1UW0ZdLmxlbmd0aDt2'@; put 'YXIgcT10LmFsbG9jVW5zYWZlKEMpLFk9MDtmb3IoRj0wO0Y8VC5sZW5ndGg7KytGKXt2YXIgWD1UW0ZdO2lmKFIoWCxVaW50OEFycmF5KSYmKFg9dC5mcm9tKFgpKSwhdC5pc0J1ZmZlcihYKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBv'@; put 'ZiBCdWZmZXJzJyk7WC5jb3B5KHEsWSksWSs9WC5sZW5ndGh9cmV0dXJuIHF9LHQuYnl0ZUxlbmd0aD1mLHQucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCx0LnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgVD10aGlzLmxlbmd0aDtpZihUJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3Io'@; put 'IkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciBDPTA7QzxUO0MrPTIpcCh0aGlzLEMsQysxKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIFQ9dGhpcy5sZW5ndGg7aWYoVCU0IT0wKXRocm93IG5ldyBSYW5n'@; put 'ZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgQz0wO0M8VDtDKz00KXAodGhpcyxDLEMrMykscCh0aGlzLEMrMSxDKzIpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgVD10aGlzLmxlbmd0aDtp'@; put 'ZihUJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciBDPTA7QzxUO0MrPTgpcCh0aGlzLEMsQys3KSxwKHRoaXMsQysxLEMrNikscCh0aGlzLEMrMixDKzUpLHAodGhpcyxDKzMsQys0KTtyZXR1cm4g'@; put 'dGhpc30sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgVD10aGlzLmxlbmd0aDtyZXR1cm4gMD09PVQ/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/JCh0aGlzLDAsVCk6dS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPXQucHJvdG90'@; put 'eXBlLnRvU3RyaW5nLHQucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihUKXtpZighdC5pc0J1ZmZlcihUKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1UfHwwPT09dC5jb21wYXJlKHRoaXMsVCl9LHQucHJvdG90eXBlLmlu'@; put 'c3BlY3Q9ZnVuY3Rpb24oKXt2YXIgVD0iIixDPVMuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIFQ9dGhpcy50b1N0cmluZygiaGV4IiwwLEMpLnJlcGxhY2UoLyguezJ9KS9nLCIkMSAiKS50cmltKCksdGhpcy5sZW5ndGg+QyYmKFQrPSIgLi4uICIpLCI8QnVmZmVyICIrVCsiPiJ9LHQucHJv'@; put 'dG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oVCxDLEYscSxZKXtpZihSKFQsVWludDhBcnJheSkmJihUPXQuZnJvbShULFQub2Zmc2V0LFQuYnl0ZUxlbmd0aCkpLCF0LmlzQnVmZmVyKFQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidGFyZ2V0IiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0'@; put 'eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIFQpO2lmKHZvaWQgMD09PUMmJihDPTApLHZvaWQgMD09PUYmJihGPVQ/VC5sZW5ndGg6MCksdm9pZCAwPT09cSYmKHE9MCksdm9pZCAwPT09WSYmKFk9dGhpcy5sZW5ndGgpLEM8MHx8Rj5ULmxlbmd0aHx8'@; put 'cTwwfHxZPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihxPj1ZJiZDPj1GKXJldHVybiAwO2lmKHE+PVkpcmV0dXJuLTE7aWYoQz49RilyZXR1cm4gMTtpZih0aGlzPT09VClyZXR1cm4gMDtmb3IodmFyIFg9KFk+Pj49MCktKHE+Pj49'@; put 'MCksSz0oRj4+Pj0wKS0oQz4+Pj0wKSxydD1NYXRoLm1pbihYLEspLHR0PXRoaXMuc2xpY2UocSxZKSxXPVQuc2xpY2UoQyxGKSxRPTA7UTxydDsrK1EpaWYodHRbUV0hPT1XW1FdKXtYPXR0W1FdLEs9V1tRXTticmVha31yZXR1cm4gWDxLPy0xOks8WD8xOjB9LHQucHJvdG90eXBlLmluY2x1'@; put 'ZGVzPWZ1bmN0aW9uKFQsQyxGKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihULEMsRil9LHQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oVCxDLEYpe3JldHVybiBkKHRoaXMsVCxDLEYsITApfSx0LnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihULEMsRil7cmV0dXJuIGQodGhp'@; put 'cyxULEMsRiwhMSl9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKFQsQyxGLHEpe2lmKHZvaWQgMD09PUMpcT0idXRmOCIsRj10aGlzLmxlbmd0aCxDPTA7ZWxzZSBpZih2b2lkIDA9PT1GJiYic3RyaW5nIj09dHlwZW9mIEMpcT1DLEY9dGhpcy5sZW5ndGgsQz0wO2Vsc2V7aWYoIWlzRmlu'@; put 'aXRlKEMpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtDPj4+PTAsaXNGaW5pdGUoRik/KEY+Pj49MCx2b2lkIDA9PT1xJiYocT0idXRmOCIpKToocT1GLEY9dm9pZCAwKX12'@; put 'YXIgWT10aGlzLmxlbmd0aC1DO2lmKCh2b2lkIDA9PT1GfHxGPlkpJiYoRj1ZKSxULmxlbmd0aD4wJiYoRjwwfHxDPDApfHxDPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO3F8fChxPSJ1dGY4Iik7Zm9y'@; put 'KHZhciBYPSExOzspc3dpdGNoKHEpe2Nhc2UiaGV4IjpyZXR1cm4gXyh0aGlzLFQsQyxGKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBBKHRoaXMsVCxDLEYpO2Nhc2UiYXNjaWkiOnJldHVybiBJKHRoaXMsVCxDLEYpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIEwo'@; put 'dGhpcyxULEMsRik7Y2FzZSJiYXNlNjQiOnJldHVybiBOKHRoaXMsVCxDLEYpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gUCh0aGlzLFQsQyxGKTtkZWZhdWx0OmlmKFgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNv'@; put 'ZGluZzogIitxKTtxPSgiIitxKS50b0xvd2VyQ2FzZSgpLFg9ITB9fSx0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19LHQucHJvdG90eXBlLnNsaWNlPWZ1'@; put 'bmN0aW9uKFQsQyl7dmFyIEY9dGhpcy5sZW5ndGg7KFQ9fn5UKTwwPyhUKz1GKTwwJiYoVD0wKTpUPkYmJihUPUYpLChDPXZvaWQgMD09PUM/Rjp+fkMpPDA/KEMrPUYpPDAmJihDPTApOkM+RiYmKEM9RiksQzxUJiYoQz1UKTt2YXIgcT10aGlzLnN1YmFycmF5KFQsQyk7cmV0dXJuIHEuX19w'@; put 'cm90b19fPXQucHJvdG90eXBlLHF9LHQucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oVCxDLEYpe1Q+Pj49MCxDPj4+PTAsRnx8YyhULEMsdGhpcy5sZW5ndGgpO2Zvcih2YXIgcT10aGlzW1RdLFk9MSxYPTA7KytYPEMmJihZKj0yNTYpOylxKz10aGlzW1QrWF0qWTtyZXR1cm4gcX0s'@; put 'dC5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihULEMsRil7VD4+Pj0wLEM+Pj49MCxGfHxjKFQsQyx0aGlzLmxlbmd0aCk7Zm9yKHZhciBxPXRoaXNbVCstLUNdLFk9MTtDPjAmJihZKj0yNTYpOylxKz10aGlzW1QrLS1DXSpZO3JldHVybiBxfSx0LnByb3RvdHlwZS5yZWFkVUludDg9'@; put 'ZnVuY3Rpb24oVCxDKXtyZXR1cm4gVD4+Pj0wLEN8fGMoVCwxLHRoaXMubGVuZ3RoKSx0aGlzW1RdfSx0LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oVCxDKXtyZXR1cm4gVD4+Pj0wLEN8fGMoVCwyLHRoaXMubGVuZ3RoKSx0aGlzW1RdfHRoaXNbVCsxXTw8OH0sdC5wcm90b3R5'@; put 'cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKFQsQyl7cmV0dXJuIFQ+Pj49MCxDfHxjKFQsMix0aGlzLmxlbmd0aCksdGhpc1tUXTw8OHx0aGlzW1QrMV19LHQucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihULEMpe3JldHVybiBUPj4+PTAsQ3x8YyhULDQsdGhpcy5sZW5ndGgpLCh0'@; put 'aGlzW1RdfHRoaXNbVCsxXTw8OHx0aGlzW1QrMl08PDE2KSsxNjc3NzIxNip0aGlzW1QrM119LHQucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihULEMpe3JldHVybiBUPj4+PTAsQ3x8YyhULDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbVF0rKHRoaXNbVCsxXTw8MTZ8dGhp'@; put 'c1tUKzJdPDw4fHRoaXNbVCszXSl9LHQucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihULEMsRil7VD4+Pj0wLEM+Pj49MCxGfHxjKFQsQyx0aGlzLmxlbmd0aCk7Zm9yKHZhciBxPXRoaXNbVF0sWT0xLFg9MDsrK1g8QyYmKFkqPTI1Nik7KXErPXRoaXNbVCtYXSpZO3JldHVybiBxPj0o'@; put 'WSo9MTI4KSYmKHEtPU1hdGgucG93KDIsOCpDKSkscX0sdC5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKFQsQyxGKXtUPj4+PTAsQz4+Pj0wLEZ8fGMoVCxDLHRoaXMubGVuZ3RoKTtmb3IodmFyIHE9QyxZPTEsWD10aGlzW1QrLS1xXTtxPjAmJihZKj0yNTYpOylYKz10aGlzW1QrLS1x'@; put 'XSpZO3JldHVybiBYPj0oWSo9MTI4KSYmKFgtPU1hdGgucG93KDIsOCpDKSksWH0sdC5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oVCxDKXtyZXR1cm4gVD4+Pj0wLEN8fGMoVCwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tUXT8tMSooMjU1LXRoaXNbVF0rMSk6dGhpc1tUXX0sdC5wcm90'@; put 'b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oVCxDKXtUPj4+PTAsQ3x8YyhULDIsdGhpcy5sZW5ndGgpO3ZhciBGPXRoaXNbVF18dGhpc1tUKzFdPDw4O3JldHVybiAzMjc2OCZGPzQyOTQ5MDE3NjB8RjpGfSx0LnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihULEMpe1Q+Pj49MCxD'@; put 'fHxjKFQsMix0aGlzLmxlbmd0aCk7dmFyIEY9dGhpc1tUKzFdfHRoaXNbVF08PDg7cmV0dXJuIDMyNzY4JkY/NDI5NDkwMTc2MHxGOkZ9LHQucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKFQsQyl7cmV0dXJuIFQ+Pj49MCxDfHxjKFQsNCx0aGlzLmxlbmd0aCksdGhpc1tUXXx0aGlz'@; put 'W1QrMV08PDh8dGhpc1tUKzJdPDwxNnx0aGlzW1QrM108PDI0fSx0LnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihULEMpe3JldHVybiBUPj4+PTAsQ3x8YyhULDQsdGhpcy5sZW5ndGgpLHRoaXNbVF08PDI0fHRoaXNbVCsxXTw8MTZ8dGhpc1tUKzJdPDw4fHRoaXNbVCszXX0sdC5w'@; put 'cm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oVCxDKXtyZXR1cm4gVD4+Pj0wLEN8fGMoVCw0LHRoaXMubGVuZ3RoKSxvLnJlYWQodGhpcyxULCEwLDIzLDQpfSx0LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihULEMpe3JldHVybiBUPj4+PTAsQ3x8YyhULDQsdGhpcy5sZW5n'@; put 'dGgpLG8ucmVhZCh0aGlzLFQsITEsMjMsNCl9LHQucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihULEMpe3JldHVybiBUPj4+PTAsQ3x8YyhULDgsdGhpcy5sZW5ndGgpLG8ucmVhZCh0aGlzLFQsITAsNTIsOCl9LHQucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihULEMp'@; put 'e3JldHVybiBUPj4+PTAsQ3x8YyhULDgsdGhpcy5sZW5ndGgpLG8ucmVhZCh0aGlzLFQsITEsNTIsOCl9LHQucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKFQsQyxGLHEpe1Q9K1QsQz4+Pj0wLEY+Pj49MCxxfHxtKHRoaXMsVCxDLEYsTWF0aC5wb3coMiw4KkYpLTEsMCk7dmFyIFk9'@; put 'MSxYPTA7Zm9yKHRoaXNbQ109MjU1JlQ7KytYPEYmJihZKj0yNTYpOyl0aGlzW0MrWF09VC9ZJjI1NTtyZXR1cm4gQytGfSx0LnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihULEMsRixxKXtUPStULEM+Pj49MCxGPj4+PTAscXx8bSh0aGlzLFQsQyxGLE1hdGgucG93KDIsOCpGKS0x'@; put 'LDApO3ZhciBZPUYtMSxYPTE7Zm9yKHRoaXNbQytZXT0yNTUmVDstLVk+PTAmJihYKj0yNTYpOyl0aGlzW0MrWV09VC9YJjI1NTtyZXR1cm4gQytGfSx0LnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKFQsQyxGKXtyZXR1cm4gVD0rVCxDPj4+PTAsRnx8bSh0aGlzLFQsQywxLDI1NSww'@; put 'KSx0aGlzW0NdPTI1NSZULEMrMX0sdC5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihULEMsRil7cmV0dXJuIFQ9K1QsQz4+Pj0wLEZ8fG0odGhpcyxULEMsMiw2NTUzNSwwKSx0aGlzW0NdPTI1NSZULHRoaXNbQysxXT1UPj4+OCxDKzJ9LHQucHJvdG90eXBlLndyaXRlVUludDE2'@; put 'QkU9ZnVuY3Rpb24oVCxDLEYpe3JldHVybiBUPStULEM+Pj49MCxGfHxtKHRoaXMsVCxDLDIsNjU1MzUsMCksdGhpc1tDXT1UPj4+OCx0aGlzW0MrMV09MjU1JlQsQysyfSx0LnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKFQsQyxGKXtyZXR1cm4gVD0rVCxDPj4+PTAsRnx8bSh0'@; put 'aGlzLFQsQyw0LDQyOTQ5NjcyOTUsMCksdGhpc1tDKzNdPVQ+Pj4yNCx0aGlzW0MrMl09VD4+PjE2LHRoaXNbQysxXT1UPj4+OCx0aGlzW0NdPTI1NSZULEMrNH0sdC5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihULEMsRil7cmV0dXJuIFQ9K1QsQz4+Pj0wLEZ8fG0odGhpcyxU'@; put 'LEMsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbQ109VD4+PjI0LHRoaXNbQysxXT1UPj4+MTYsdGhpc1tDKzJdPVQ+Pj44LHRoaXNbQyszXT0yNTUmVCxDKzR9LHQucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oVCxDLEYscSl7aWYoVD0rVCxDPj4+PTAsIXEpe3ZhciBZPU1hdGgucG93KDIs'@; put 'OCpGLTEpO20odGhpcyxULEMsRixZLTEsLVkpfXZhciBYPTAsSz0xLHJ0PTA7Zm9yKHRoaXNbQ109MjU1JlQ7KytYPEYmJihLKj0yNTYpOylUPDAmJjA9PT1ydCYmMCE9PXRoaXNbQytYLTFdJiYocnQ9MSksdGhpc1tDK1hdPShUL0t8MCktcnQmMjU1O3JldHVybiBDK0Z9LHQucHJvdG90eXBl'@; put 'LndyaXRlSW50QkU9ZnVuY3Rpb24oVCxDLEYscSl7aWYoVD0rVCxDPj4+PTAsIXEpe3ZhciBZPU1hdGgucG93KDIsOCpGLTEpO20odGhpcyxULEMsRixZLTEsLVkpfXZhciBYPUYtMSxLPTEscnQ9MDtmb3IodGhpc1tDK1hdPTI1NSZUOy0tWD49MCYmKEsqPTI1Nik7KVQ8MCYmMD09PXJ0JiYw'@; put 'IT09dGhpc1tDK1grMV0mJihydD0xKSx0aGlzW0MrWF09KFQvS3wwKS1ydCYyNTU7cmV0dXJuIEMrRn0sdC5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKFQsQyxGKXtyZXR1cm4gVD0rVCxDPj4+PTAsRnx8bSh0aGlzLFQsQywxLDEyNywtMTI4KSxUPDAmJihUPTI1NStUKzEpLHRoaXNb'@; put 'Q109MjU1JlQsQysxfSx0LnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oVCxDLEYpe3JldHVybiBUPStULEM+Pj49MCxGfHxtKHRoaXMsVCxDLDIsMzI3NjcsLTMyNzY4KSx0aGlzW0NdPTI1NSZULHRoaXNbQysxXT1UPj4+OCxDKzJ9LHQucHJvdG90eXBlLndyaXRlSW50MTZCRT1m'@; put 'dW5jdGlvbihULEMsRil7cmV0dXJuIFQ9K1QsQz4+Pj0wLEZ8fG0odGhpcyxULEMsMiwzMjc2NywtMzI3NjgpLHRoaXNbQ109VD4+PjgsdGhpc1tDKzFdPTI1NSZULEMrMn0sdC5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKFQsQyxGKXtyZXR1cm4gVD0rVCxDPj4+PTAsRnx8bSh0'@; put 'aGlzLFQsQyw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbQ109MjU1JlQsdGhpc1tDKzFdPVQ+Pj44LHRoaXNbQysyXT1UPj4+MTYsdGhpc1tDKzNdPVQ+Pj4yNCxDKzR9LHQucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihULEMsRil7cmV0dXJuIFQ9K1QsQz4+Pj0wLEZ8'@; put 'fG0odGhpcyxULEMsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxUPDAmJihUPTQyOTQ5NjcyOTUrVCsxKSx0aGlzW0NdPVQ+Pj4yNCx0aGlzW0MrMV09VD4+PjE2LHRoaXNbQysyXT1UPj4+OCx0aGlzW0MrM109MjU1JlQsQys0fSx0LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24o'@; put 'VCxDLEYpe3JldHVybiB5KHRoaXMsVCxDLCEwLEYpfSx0LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oVCxDLEYpe3JldHVybiB5KHRoaXMsVCxDLCExLEYpfSx0LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKFQsQyxGKXtyZXR1cm4gdyh0aGlzLFQsQywhMCxGKX0s'@; put 'dC5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihULEMsRil7cmV0dXJuIHcodGhpcyxULEMsITEsRil9LHQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oVCxDLEYscSl7aWYoIXQuaXNCdWZmZXIoVCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVm'@; put 'ZmVyIik7aWYoRnx8KEY9MCkscXx8MD09PXF8fChxPXRoaXMubGVuZ3RoKSxDPj1ULmxlbmd0aCYmKEM9VC5sZW5ndGgpLEN8fChDPTApLHE+MCYmcTxGJiYocT1GKSxxPT09Rnx8MD09PVQubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoQzwwKXRocm93IG5ldyBSYW5nZUVy'@; put 'cm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYoRjwwfHxGPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO3E+dGhpcy5sZW5n'@; put 'dGgmJihxPXRoaXMubGVuZ3RoKSxULmxlbmd0aC1DPHEtRiYmKHE9VC5sZW5ndGgtQytGKTt2YXIgWT1xLUY7aWYodGhpcz09PVQmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluKXRoaXMuY29weVdpdGhpbihDLEYscSk7ZWxzZSBpZih0aGlzPT09'@; put 'VCYmRjxDJiZDPHEpZm9yKHZhciBYPVktMTtYPj0wOy0tWClUW1grQ109dGhpc1tYK0ZdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoVCx0aGlzLnN1YmFycmF5KEYscSksQyk7cmV0dXJuIFl9LHQucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oVCxDLEYscSl7aWYoInN0cmlu'@; put 'ZyI9PXR5cGVvZiBUKXtpZigic3RyaW5nIj09dHlwZW9mIEM/KHE9QyxDPTAsRj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiBGJiYocT1GLEY9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PXEmJiJzdHJpbmciIT10eXBlb2YgcSl0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0'@; put 'IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBxJiYhdC5pc0VuY29kaW5nKHEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcSk7aWYoMT09PVQubGVuZ3RoKXt2YXIgWT1ULmNoYXJDb2RlQXQoMCk7KCJ1dGY4Ij09PXEmJlk8MTI4fHwibGF0aW4x'@; put 'Ij09PXEpJiYoVD1ZKX19ZWxzZSJudW1iZXIiPT10eXBlb2YgVCYmKFQmPTI1NSk7aWYoQzwwfHx0aGlzLmxlbmd0aDxDfHx0aGlzLmxlbmd0aDxGKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihGPD1DKXJldHVybiB0aGlzO3ZhciBYO2lmKEM+Pj49MCxG'@; put 'PXZvaWQgMD09PUY/dGhpcy5sZW5ndGg6Rj4+PjAsVHx8KFQ9MCksIm51bWJlciI9PXR5cGVvZiBUKWZvcihYPUM7WDxGOysrWCl0aGlzW1hdPVQ7ZWxzZXt2YXIgSz10LmlzQnVmZmVyKFQpP1Q6dC5mcm9tKFQscSkscnQ9Sy5sZW5ndGg7aWYoMD09PXJ0KXRocm93IG5ldyBUeXBlRXJyb3Io'@; put 'J1RoZSB2YWx1ZSAiJytUKyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3IoWD0wO1g8Ri1DOysrWCl0aGlzW1grQ109S1tYJXJ0XX1yZXR1cm4gdGhpc307dmFyIGs9L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiBPKFQpe3JldHVybiBUPDE2PyIwIitULnRvU3Ry'@; put 'aW5nKDE2KTpULnRvU3RyaW5nKDE2KX1mdW5jdGlvbiB6KFQsQyl7dmFyIEY7Qz1DfHwxLzA7Zm9yKHZhciBxPVQubGVuZ3RoLFk9bnVsbCxYPVtdLEs9MDtLPHE7KytLKXtpZigoRj1ULmNoYXJDb2RlQXQoSykpPjU1Mjk1JiZGPDU3MzQ0KXtpZighWSl7aWYoRj41NjMxOSl7KEMtPTMpPi0x'@; put 'JiZYLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKEsrMT09PXEpeyhDLT0zKT4tMSYmWC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1ZPUY7Y29udGludWV9aWYoRjw1NjMyMCl7KEMtPTMpPi0xJiZYLnB1c2goMjM5LDE5MSwxODkpLFk9Rjtjb250aW51ZX1GPTY1NTM2KyhZLTU1'@; put 'Mjk2PDwxMHxGLTU2MzIwKX1lbHNlIFkmJihDLT0zKT4tMSYmWC5wdXNoKDIzOSwxOTEsMTg5KTtpZihZPW51bGwsRjwxMjgpe2lmKChDLT0xKTwwKWJyZWFrO1gucHVzaChGKX1lbHNlIGlmKEY8MjA0OCl7aWYoKEMtPTIpPDApYnJlYWs7WC5wdXNoKEY+PjZ8MTkyLDYzJkZ8MTI4KX1lbHNl'@; put 'IGlmKEY8NjU1MzYpe2lmKChDLT0zKTwwKWJyZWFrO1gucHVzaChGPj4xMnwyMjQsRj4+NiY2M3wxMjgsNjMmRnwxMjgpfWVsc2V7aWYoIShGPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKEMtPTQpPDApYnJlYWs7WC5wdXNoKEY+PjE4fDI0MCxG'@; put 'Pj4xMiY2M3wxMjgsRj4+NiY2M3wxMjgsNjMmRnwxMjgpfX1yZXR1cm4gWH1mdW5jdGlvbiBVKFQpe3JldHVybiBhLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKEMpe2lmKChDPShDPUMuc3BsaXQoIj0iKVswXSkudHJpbSgpLnJlcGxhY2UoaywiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7Qy5s'@; put 'ZW5ndGglNCE9MDspQys9Ij0iO3JldHVybiBDfShUKSl9ZnVuY3Rpb24gVihULEMsRixxKXtmb3IodmFyIFk9MDtZPHEmJiEoWStGPj1DLmxlbmd0aHx8WT49VC5sZW5ndGgpOysrWSlDW1krRl09VFtZXTtyZXR1cm4gWX1mdW5jdGlvbiBSKFQsQyl7cmV0dXJuIFQgaW5zdGFuY2VvZiBDfHxu'@; put 'dWxsIT1UJiZudWxsIT1ULmNvbnN0cnVjdG9yJiZudWxsIT1ULmNvbnN0cnVjdG9yLm5hbWUmJlQuY29uc3RydWN0b3IubmFtZT09PUMubmFtZX1mdW5jdGlvbiBIKFQpe3JldHVybiBUIT1UfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiYnVmZmVyIikuQnVmZmVyKX0seyJiYXNlNjQt'@; put 'anMiOjE4NSxidWZmZXI6MjIwLGllZWU3NTQ6NDM5fV0sMjIxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLGE9cygic3RyZWFtIikuVHJhbnNmb3JtLG89cygic3RyaW5nX2RlY29kZXIiKS5TdHJpbmdEZWNvZGVyO2Z1bmN0aW9u'@; put 'IHIodCl7YS5jYWxsKHRoaXMpLHRoaXMuaGFzaE1vZGU9InN0cmluZyI9PXR5cGVvZiB0LHRoaXMuaGFzaE1vZGU/dGhpc1t0XT10aGlzLl9maW5hbE9yRGlnZXN0OnRoaXMuZmluYWw9dGhpcy5fZmluYWxPckRpZ2VzdCx0aGlzLl9maW5hbCYmKHRoaXMuX19maW5hbD10aGlzLl9maW5hbCx0'@; put 'aGlzLl9maW5hbD1udWxsKSx0aGlzLl9kZWNvZGVyPW51bGwsdGhpcy5fZW5jb2Rpbmc9bnVsbH1zKCJpbmhlcml0cyIpKHIsYSksci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxsKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PWIuZnJvbSh0LGUpKTt2YXIgbj10aGlzLl91cGRhdGUo'@; put 'dCk7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczoobCYmKG49dGhpcy5fdG9TdHJpbmcobixsKSksbil9LHIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKCl7fSxyLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gZ2V0'@; put 'IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LHIucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sci5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhy'@; put 'b3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxyLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxsKXt2YXIgbjt0cnl7dGhpcy5oYXNoTW9kZT90aGlzLl91cGRhdGUodCk6dGhpcy5wdXNoKHRoaXMuX3VwZGF0ZSh0KSl9Y2F0'@; put 'Y2goaSl7bj1pfWZpbmFsbHl7bChuKX19LHIucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7dGhpcy5wdXNoKHRoaXMuX19maW5hbCgpKX1jYXRjaChsKXtlPWx9dChlKX0sci5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2Zp'@; put 'bmFsKCl8fGIuYWxsb2MoMCk7cmV0dXJuIHQmJihlPXRoaXMuX3RvU3RyaW5nKGUsdCwhMCkpLGV9LHIucHJvdG90eXBlLl90b1N0cmluZz1mdW5jdGlvbih0LGUsbCl7aWYodGhpcy5fZGVjb2Rlcnx8KHRoaXMuX2RlY29kZXI9bmV3IG8oZSksdGhpcy5fZW5jb2Rpbmc9ZSksdGhpcy5fZW5j'@; put 'b2RpbmchPT1lKXRocm93IG5ldyBFcnJvcigiY2FuJ3Qgc3dpdGNoIGVuY29kaW5ncyIpO3ZhciBuPXRoaXMuX2RlY29kZXIud3JpdGUodCk7cmV0dXJuIGwmJihuKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxufSxFLmV4cG9ydHM9cn0se2luaGVyaXRzOjQ0MCwic2FmZS1idWZmZXIiOjQ5NCxz'@; put 'dHJlYW06NTA1LHN0cmluZ19kZWNvZGVyOjIxOH1dLDIyMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxhPXMoIi4uL2ludGVybmFscy90cnktdG8tc3RyaW5nIiksbz1UeXBlRXJyb3I7RS5leHBvcnRzPWZ1bmN0aW9u'@; put 'KHIpe2lmKGIocikpcmV0dXJuIHI7dGhyb3cgbmV3IG8oYShyKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSx7Ii4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1LCIuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZyI6MzQ5fV0sMjIzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3Zh'@; put 'ciBiPXMoIi4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvciIpLGE9cygiLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmciKSxvPVR5cGVFcnJvcjtFLmV4cG9ydHM9ZnVuY3Rpb24ocil7aWYoYihyKSlyZXR1cm4gcjt0aHJvdyBuZXcgbyhhKHIpKyIgaXMgbm90IGEgY29uc3RydWN0b3IiKX19'@; put 'LHsiLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yIjoyODYsIi4uL2ludGVybmFscy90cnktdG8tc3RyaW5nIjozNDl9XSwyMjQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIiksYT1TdHJpbmcsbz1UeXBlRXJyb3I7RS5l'@; put 'eHBvcnRzPWZ1bmN0aW9uKHIpe2lmKCJvYmplY3QiPT10eXBlb2Ygcnx8YihyKSlyZXR1cm4gcjt0aHJvdyBuZXcgbygiQ2FuJ3Qgc2V0ICIrYShyKSsiIGFzIGEgcHJvdG90eXBlIil9fSx7Ii4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1fV0sMjI1OltmdW5jdGlvbihzLEUsUyl7InVz'@; put 'ZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpLGE9cygiLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUiKSxvPXMoIi4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5IikuZixyPWIoInVuc2NvcGFibGVzIiksdD1BcnJheS5wcm90b3R5'@; put 'cGU7dm9pZCAwPT09dFtyXSYmbyh0LHIse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTphKG51bGwpfSksRS5leHBvcnRzPWZ1bmN0aW9uKGUpe3Rbcl1bZV09ITB9fSx7Ii4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlIjozMDYsIi4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Ijoz'@; put 'MDgsIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCI6MzU3fV0sMjI2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mIiksYT1UeXBlRXJyb3I7RS5leHBvcnRzPWZ1bmN0aW9uKG8scil7aWYoYihy'@; put 'LG8pKXJldHVybiBvO3Rocm93IG5ldyBhKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfX0seyIuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZiI6MzE0fV0sMjI3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9pcy1vYmplY3QiKSxh'@; put 'PVN0cmluZyxvPVR5cGVFcnJvcjtFLmV4cG9ydHM9ZnVuY3Rpb24ocil7aWYoYihyKSlyZXR1cm4gcjt0aHJvdyBuZXcgbyhhKHIpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0seyIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IjoyODl9XSwyMjg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7'@; put 'dmFyIGI9cygiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0IiksYT1zKCIuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgiKSxvPXMoIi4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSIpLHI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbCxuKXt2YXIgaSxo'@; put 'PWIoZSksZj1vKGgpLHU9YShuLGYpO2lmKHQmJmwhPWwpe2Zvcig7Zj51OylpZigoaT1oW3UrK10pIT1pKXJldHVybiEwfWVsc2UgZm9yKDtmPnU7dSsrKWlmKCh0fHx1IGluIGgpJiZoW3VdPT09bClyZXR1cm4gdHx8dXx8MDtyZXR1cm4hdCYmLTF9fTtFLmV4cG9ydHM9e2luY2x1ZGVzOnIo'@; put 'ITApLGluZGV4T2Y6cighMSl9fSx7Ii4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSI6Mjk5LCIuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgiOjM0MCwiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0IjozNDF9XSwyMjk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0'@; put 'cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCIpLGE9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLG89cygiLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Iikscj1zKCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0IiksdD1zKCIu'@; put 'Li9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UiKSxlPXMoIi4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZSIpLGw9YShbXS5wdXNoKSxuPWZ1bmN0aW9uKGkpe3ZhciBoPTE9PT1pLGY9Mj09PWksdT0zPT09aSxwPTQ9PT1pLGQ9Nj09PWksdj03PT09aSxfPTU9PT1pfHxk'@; put 'O3JldHVybiBmdW5jdGlvbihBLEksTCxOKXtmb3IodmFyIFAsQiwkPXIoQSksRD1vKCQpLHg9YihJLEwpLE09dChEKSxqPTAsYz1OfHxlLG09aD9jKEEsTSk6Znx8dj9jKEEsMCk6dm9pZCAwO00+ajtqKyspaWYoKF98fGogaW4gRCkmJihCPXgoUD1EW2pdLGosJCksaSkpaWYoaCltW2pdPUI7'@; put 'ZWxzZSBpZihCKXN3aXRjaChpKXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBQO2Nhc2UgNjpyZXR1cm4gajtjYXNlIDI6bChtLFApfWVsc2Ugc3dpdGNoKGkpe2Nhc2UgNDpyZXR1cm4hMTtjYXNlIDc6bChtLFApfXJldHVybiBkPy0xOnV8fHA/cDptfX07RS5leHBvcnRzPXtmb3JF'@; put 'YWNoOm4oMCksbWFwOm4oMSksZmlsdGVyOm4oMiksc29tZTpuKDMpLGV2ZXJ5Om4oNCksZmluZDpuKDUpLGZpbmRJbmRleDpuKDYpLGZpbHRlclJlamVjdDpuKDcpfX0seyIuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUiOjIzMywiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQt'@; put 'Y29udGV4dCI6MjYyLCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIjoyNjgsIi4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCI6MjgwLCIuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UiOjI5OSwiLi4vaW50ZXJuYWxzL3RvLW9iamVjdCI6MzQ0fV0sMjMwOltm'@; put 'dW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCIpLGE9cygiLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlIiksbz1zKCIuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Iikscj1BcnJheSx0PU1hdGgubWF4'@; put 'O0UuZXhwb3J0cz1mdW5jdGlvbihlLGwsbil7Zm9yKHZhciBpPWEoZSksaD1iKGwsaSksZj1iKHZvaWQgMD09PW4/aTpuLGkpLHU9cih0KGYtaCwwKSkscD0wO2g8ZjtoKysscCsrKW8odSxwLGVbaF0pO3JldHVybiB1Lmxlbmd0aD1wLHV9fSx7Ii4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVy'@; put 'dHkiOjI0MywiLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlIjoyOTksIi4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCI6MzQwfV0sMjMxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMi'@; put 'KTtFLmV4cG9ydHM9YihbXS5zbGljZSl9LHsiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4fV0sMjMyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9pcy1hcnJheSIpLGE9cygiLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVj'@; put 'dG9yIiksbz1zKCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Iikscj1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSgic3BlY2llcyIpLHQ9QXJyYXk7RS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciBsO3JldHVybiBiKGUpJiYoYShsPWUuY29uc3RydWN0b3IpJiYobD09PXR8fGIo'@; put 'bC5wcm90b3R5cGUpKXx8byhsKSYmbnVsbD09PShsPWxbcl0pKSYmKGw9dm9pZCAwKSx2b2lkIDA9PT1sP3Q6bH19LHsiLi4vaW50ZXJuYWxzL2lzLWFycmF5IjoyODQsIi4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvciI6Mjg2LCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IjoyODksIi4uL2lu'@; put 'dGVybmFscy93ZWxsLWtub3duLXN5bWJvbCI6MzU3fV0sMjMzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yIik7RS5leHBvcnRzPWZ1bmN0aW9uKGEsbyl7cmV0dXJuIG5ldyhiKGEpKSgwPT09bz8w'@; put 'Om8pfX0seyIuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvciI6MjMyfV0sMjM0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpKCJpdGVyYXRvciIpLGE9ITE7dHJ5e3ZhciBvPTAscj17bmV4'@; put 'dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEhbysrfX0scmV0dXJuOmZ1bmN0aW9uKCl7YT0hMH19O3JbYl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShyLGZ1bmN0aW9uKCl7dGhyb3cgMn0pfWNhdGNoe31FLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0cnl7aWYoIWUmJiFh'@; put 'KXJldHVybiExfWNhdGNoe3JldHVybiExfXZhciBsPSExO3RyeXt2YXIgbj17fTtuW2JdPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpsPSEwfX19fSx0KG4pfWNhdGNoe31yZXR1cm4gbH19LHsiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjoz'@; put 'NTd9XSwyMzU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLGE9Yih7fS50b1N0cmluZyksbz1iKCIiLnNsaWNlKTtFLmV4cG9ydHM9ZnVuY3Rpb24ocil7cmV0dXJuIG8oYShyKSw4LC0xKX19LHsiLi4v'@; put 'aW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4fV0sMjM2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQiKSxhPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLG89cygiLi4vaW50ZXJu'@; put 'YWxzL2NsYXNzb2YtcmF3Iikscj1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSgidG9TdHJpbmdUYWciKSx0PU9iamVjdCxlPSJBcmd1bWVudHMiPT09byhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO0UuZXhwb3J0cz1iP286ZnVuY3Rpb24obCl7dmFyIG4saSxo'@; put 'O3JldHVybiB2b2lkIDA9PT1sPyJVbmRlZmluZWQiOm51bGw9PT1sPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKGk9ZnVuY3Rpb24oZix1KXt0cnl7cmV0dXJuIGZbdV19Y2F0Y2h7fX0obj10KGwpLHIpKT9pOmU/byhuKToiT2JqZWN0Ij09PShoPW8obikpJiZhKG4uY2FsbGVlKT8iQXJndW1l'@; put 'bnRzIjpofX0seyIuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXciOjIzNSwiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODUsIi4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQiOjM0NywiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwyMzc6W2Z1bmN0aW9u'@; put 'KHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiKSxhPXMoIi4uL2ludGVybmFscy9vd24ta2V5cyIpLG89cygiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IiKSxyPXMoIi4uL2ludGVybmFscy9v'@; put 'YmplY3QtZGVmaW5lLXByb3BlcnR5Iik7RS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxsKXtmb3IodmFyIG49YShlKSxpPXIuZixoPW8uZixmPTA7ZjxuLmxlbmd0aDtmKyspe3ZhciB1PW5bZl07Yih0LHUpfHxsJiZiKGwsdSl8fGkodCx1LGgoZSx1KSl9fX0seyIuLi9pbnRlcm5hbHMvaGFzLW93'@; put 'bi1wcm9wZXJ0eSI6Mjc1LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSI6MzA4LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvciI6MzA5LCIuLi9pbnRlcm5hbHMvb3duLWtleXMiOjMyMX1dLDIzODpbZnVuY3Rpb24ocyxFLFMpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSgibWF0Y2giKTtFLmV4cG9ydHM9ZnVuY3Rpb24oYSl7dmFyIG89Ly4vO3RyeXsiLy4vIlthXShvKX1jYXRjaHt0cnl7cmV0dXJuIG9bYl09ITEsIi8uLyJbYV0obyl9Y2F0Y2h7fX1yZXR1cm4hMX19'@; put 'LHsiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwyMzk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2ZhaWxzIik7RS5leHBvcnRzPSFiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe31yZXR1cm4gYS5wcm90b3R5cGUuY29u'@; put 'c3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IGEpIT09YS5wcm90b3R5cGV9KX0seyIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MH1dLDI0MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9ZnVuY3Rpb24oYixhKXtyZXR1cm57dmFsdWU6Yixkb25l'@; put 'OmF9fX0se31dLDI0MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMiKSxhPXMoIi4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Iiksbz1zKCIuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0'@; put 'b3IiKTtFLmV4cG9ydHM9Yj9mdW5jdGlvbihyLHQsZSl7cmV0dXJuIGEuZihyLHQsbygxLGUpKX06ZnVuY3Rpb24ocix0LGUpe3JldHVybiByW3RdPWUscn19LHsiLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yIjoyNDIsIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyI6'@; put 'MjQ3LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSI6MzA4fV0sMjQyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz1mdW5jdGlvbihiLGEpe3JldHVybntlbnVtZXJhYmxlOiEoMSZiKSxjb25maWd1cmFibGU6ISgyJmIpLHdyaXRhYmxlOiEoNCZi'@; put 'KSx2YWx1ZTphfX19LHt9XSwyNDM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleSIpLGE9cygiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiKSxvPXMoIi4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVy'@; put 'dHktZGVzY3JpcHRvciIpO0UuZXhwb3J0cz1mdW5jdGlvbihyLHQsZSl7dmFyIGw9Yih0KTtsIGluIHI/YS5mKHIsbCxvKDAsZSkpOnJbbF09ZX19LHsiLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yIjoyNDIsIi4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3Bl'@; put 'cnR5IjozMDgsIi4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkiOjM0Nn1dLDI0NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbiIpLGE9cygiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiKTtFLmV4'@; put 'cG9ydHM9ZnVuY3Rpb24obyxyLHQpe3JldHVybiB0LmdldCYmYih0LmdldCxyLHtnZXR0ZXI6ITB9KSx0LnNldCYmYih0LnNldCxyLHtzZXR0ZXI6ITB9KSxhLmYobyxyLHQpfX0seyIuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbiI6MzAwLCIuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1w'@; put 'cm9wZXJ0eSI6MzA4fV0sMjQ1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLGE9cygiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiKSxvPXMoIi4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluIikscj1z'@; put 'KCIuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eSIpO0UuZXhwb3J0cz1mdW5jdGlvbih0LGUsbCxuKXtufHwobj17fSk7dmFyIGk9bi5lbnVtZXJhYmxlLGg9dm9pZCAwIT09bi5uYW1lP24ubmFtZTplO2lmKGIobCkmJm8obCxoLG4pLG4uZ2xvYmFsKWk/dFtlXT1sOnIoZSxs'@; put 'KTtlbHNle3RyeXtuLnVuc2FmZT90W2VdJiYoaT0hMCk6ZGVsZXRlIHRbZV19Y2F0Y2h7fWk/dFtlXT1sOmEuZih0LGUse3ZhbHVlOmwsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW4ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFuLm5vbldyaXRhYmxlfSl9cmV0dXJuIHR9fSx7Ii4u'@; put 'L2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5IjoyNDYsIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1LCIuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbiI6MzAwLCIuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSI6MzA4fV0sMjQ2OltmdW5jdGlvbihzLEUs'@; put 'Uyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtFLmV4cG9ydHM9ZnVuY3Rpb24obyxyKXt0cnl7YShiLG8se3ZhbHVlOnIsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2h7YltvXT1yfXJldHVybiBy'@; put 'fX0seyIuLi9pbnRlcm5hbHMvZ2xvYmFsIjoyNzR9XSwyNDc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2ZhaWxzIik7RS5leHBvcnRzPSFiKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1'@; put 'bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KX0seyIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MH1dLDI0ODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7RS5leHBvcnRzPXthbGw6YixJU19IVE1MRERBOnZv'@; put 'aWQgMD09PWImJnZvaWQgMCE9PWJ9fSx7fV0sMjQ5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKSxhPXMoIi4uL2ludGVybmFscy9pcy1vYmplY3QiKSxvPWIuZG9jdW1lbnQscj1hKG8pJiZhKG8uY3JlYXRlRWxlbWVudCk7RS5l'@; put 'eHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByP28uY3JlYXRlRWxlbWVudCh0KTp7fX19LHsiLi4vaW50ZXJuYWxzL2dsb2JhbCI6Mjc0LCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IjoyODl9XSwyNTA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxz'@; put 'L2VuZ2luZS1pcy1kZW5vIiksYT1zKCIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUiKTtFLmV4cG9ydHM9IWImJiFhJiYib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmIm9iamVjdCI9PXR5cGVvZiBkb2N1bWVudH0seyIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8iOjI1MSwiLi4vaW50'@; put 'ZXJuYWxzL2VuZ2luZS1pcy1ub2RlIjoyNTR9XSwyNTE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgRGVubyYmRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb259LHt9XSwyNTI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0'@; put 'cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Iik7RS5leHBvcnRzPS9pcGFkfGlwaG9uZXxpcG9kL2kudGVzdChiKSYmdHlwZW9mIFBlYmJsZTwidSJ9LHsiLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50IjoyNTZ9XSwyNTM6W2Z1bmN0aW9uKHMsRSxT'@; put 'KXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Iik7RS5leHBvcnRzPS8oPzppcGFkfGlwaG9uZXxpcG9kKS4qYXBwbGV3ZWJraXQvaS50ZXN0KGIpfSx7Ii4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCI6MjU2fV0sMjU0OltmdW5jdGlv'@; put 'bihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKSxhPXMoIi4uL2ludGVybmFscy9jbGFzc29mLXJhdyIpO0UuZXhwb3J0cz0icHJvY2VzcyI9PT1hKGIucHJvY2Vzcyl9LHsiLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3IjoyMzUsIi4uL2ludGVybmFs'@; put 'cy9nbG9iYWwiOjI3NH1dLDI1NTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQiKTtFLmV4cG9ydHM9L3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdChiKX0seyIuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQi'@; put 'OjI1Nn1dLDI1NjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9dHlwZW9mIG5hdmlnYXRvcjwidSImJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8IiJ9LHt9XSwyNTc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGIsYSxvPXMoIi4uL2ludGVy'@; put 'bmFscy9nbG9iYWwiKSxyPXMoIi4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCIpLHQ9by5wcm9jZXNzLGU9by5EZW5vLGw9dCYmdC52ZXJzaW9uc3x8ZSYmZS52ZXJzaW9uLG49bCYmbC52ODtuJiYoYT0oYj1uLnNwbGl0KCIuIikpWzBdPjAmJmJbMF08ND8xOisoYlswXStiWzFdKSks'@; put 'IWEmJnImJighKGI9ci5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fGJbMV0+PTc0KSYmKGI9ci5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKGE9K2JbMV0pLEUuZXhwb3J0cz1hfSx7Ii4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCI6MjU2LCIuLi9pbnRlcm5hbHMvZ2xvYmFsIjoyNzR9'@; put 'XSwyNTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LHt9XSwyNTk6'@; put 'W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2dsb2JhbCIpLGE9cygiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IiKS5mLG89cygiLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0'@; put 'eSIpLHI9cygiLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiIpLHQ9cygiLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkiKSxlPXMoIi4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMiKSxsPXMoIi4uL2ludGVybmFscy9pcy1mb3JjZWQiKTtFLmV4'@; put 'cG9ydHM9ZnVuY3Rpb24obixpKXt2YXIgaCxmLHUscCxkLHY9bi50YXJnZXQsXz1uLmdsb2JhbCxBPW4uc3RhdDtpZihoPV8/YjpBP2Jbdl18fHQodix7fSk6KGJbdl18fHt9KS5wcm90b3R5cGUpZm9yKGYgaW4gaSl7aWYocD1pW2ZdLHU9bi5kb250Q2FsbEdldFNldD8oZD1hKGgsZikpJiZk'@; put 'LnZhbHVlOmhbZl0sIWwoXz9mOnYrKEE/Ii4iOiIjIikrZixuLmZvcmNlZCkmJnZvaWQgMCE9PXUpe2lmKHR5cGVvZiBwPT10eXBlb2YgdSljb250aW51ZTtlKHAsdSl9KG4uc2hhbXx8dSYmdS5zaGFtKSYmbyhwLCJzaGFtIiwhMCkscihoLGYscCxuKX19fSx7Ii4uL2ludGVybmFscy9jb3B5'@; put 'LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMiOjIzNywiLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSI6MjQxLCIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIjoyNDUsIi4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5IjoyNDYsIi4uL2ludGVy'@; put 'bmFscy9nbG9iYWwiOjI3NCwiLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCI6Mjg3LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvciI6MzA5fV0sMjYwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz1mdW5jdGlvbihiKXt0cnl7cmV0'@; put 'dXJuISFiKCl9Y2F0Y2h7cmV0dXJuITB9fX0se31dLDI2MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUiKSxhPUZ1bmN0aW9uLnByb3RvdHlwZSxvPWEuYXBwbHkscj1hLmNhbGw7RS5leHBvcnRzPSJvYmpl'@; put 'Y3QiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5hcHBseXx8KGI/ci5iaW5kKG8pOmZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkobyxhcmd1bWVudHMpfSl9LHsiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlIjoyNjN9XSwyNjI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UiKSxhPXMoIi4uL2ludGVybmFscy9hLWNhbGxhYmxlIiksbz1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUiKSxyPWIoYi5iaW5kKTtFLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXty'@; put 'ZXR1cm4gYSh0KSx2b2lkIDA9PT1lP3Q6bz9yKHQsZSk6ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0seyIuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZSI6MjIyLCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUiOjI2MywiLi4vaW50ZXJuYWxzL2Z1bmN0'@; put 'aW9uLXVuY3VycnktdGhpcy1jbGF1c2UiOjI2N31dLDI2MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZmFpbHMiKTtFLmV4cG9ydHM9IWIoZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5'@; put 'cGVvZiBhfHxhLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pfSx7Ii4uL2ludGVybmFscy9mYWlscyI6MjYwfV0sMjY0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZSIpLGE9RnVuY3Rpb24ucHJvdG90'@; put 'eXBlLmNhbGw7RS5leHBvcnRzPWI/YS5iaW5kKGEpOmZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYSxhcmd1bWVudHMpfX0seyIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUiOjI2M31dLDI2NTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRl'@; put 'cm5hbHMvZGVzY3JpcHRvcnMiKSxhPXMoIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Iiksbz1GdW5jdGlvbi5wcm90b3R5cGUscj1iJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHQ9YShvLCJuYW1lIiksZT10JiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1l'@; put 'LGw9dCYmKCFifHxiJiZyKG8sIm5hbWUiKS5jb25maWd1cmFibGUpO0UuZXhwb3J0cz17RVhJU1RTOnQsUFJPUEVSOmUsQ09ORklHVVJBQkxFOmx9fSx7Ii4uL2ludGVybmFscy9kZXNjcmlwdG9ycyI6MjQ3LCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSI6Mjc1fV0sMjY2OltmdW5j'@; put 'dGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiKSxhPXMoIi4uL2ludGVybmFscy9hLWNhbGxhYmxlIik7RS5leHBvcnRzPWZ1bmN0aW9uKG8scix0KXt0cnl7cmV0dXJuIGIoYShPYmplY3QuZ2V0T3duUHJvcGVydHlE'@; put 'ZXNjcmlwdG9yKG8scilbdF0pKX1jYXRjaHt9fX0seyIuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZSI6MjIyLCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIjoyNjh9XSwyNjc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2NsYXNz'@; put 'b2YtcmF3IiksYT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIik7RS5leHBvcnRzPWZ1bmN0aW9uKG8pe2lmKCJGdW5jdGlvbiI9PT1iKG8pKXJldHVybiBhKG8pfX0seyIuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXciOjIzNSwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVu'@; put 'Y3VycnktdGhpcyI6MjY4fV0sMjY4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZSIpLGE9RnVuY3Rpb24ucHJvdG90eXBlLG89YS5jYWxsLHI9YiYmYS5iaW5kLmJpbmQobyxvKTtFLmV4cG9ydHM9Yj9yOmZ1'@; put 'bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvLmFwcGx5KHQsYXJndW1lbnRzKX19fSx7Ii4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZSI6MjYzfV0sMjY5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwi'@; put 'KSxhPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpO0UuZXhwb3J0cz1mdW5jdGlvbihyLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/ZnVuY3Rpb24ocil7cmV0dXJuIGEocik/cjp2b2lkIDB9KGJbcl0pOmJbcl0mJmJbcl1bdF19fSx7Ii4uL2ludGVybmFscy9nbG9iYWwiOjI3'@; put 'NCwiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODV9XSwyNzA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2NsYXNzb2YiKSxhPXMoIi4uL2ludGVybmFscy9nZXQtbWV0aG9kIiksbz1zKCIuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRl'@; put 'ZmluZWQiKSxyPXMoIi4uL2ludGVybmFscy9pdGVyYXRvcnMiKSx0PXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpKCJpdGVyYXRvciIpO0UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbyhlKSlyZXR1cm4gYShlLHQpfHxhKGUsIkBAaXRlcmF0b3IiKXx8cltiKGUpXX19LHsi'@; put 'Li4vaW50ZXJuYWxzL2NsYXNzb2YiOjIzNiwiLi4vaW50ZXJuYWxzL2dldC1tZXRob2QiOjI3MywiLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkIjoyODgsIi4uL2ludGVybmFscy9pdGVyYXRvcnMiOjI5OCwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwy'@; put 'NzE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiKSxhPXMoIi4uL2ludGVybmFscy9hLWNhbGxhYmxlIiksbz1zKCIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Iikscj1zKCIuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZyIp'@; put 'LHQ9cygiLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QiKSxlPVR5cGVFcnJvcjtFLmV4cG9ydHM9ZnVuY3Rpb24obCxuKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPDI/dChsKTpuO2lmKGEoaSkpcmV0dXJuIG8oYihpLGwpKTt0aHJvdyBuZXcgZShyKGwpKyIgaXMgbm90IGl0ZXJh'@; put 'YmxlIil9fSx7Ii4uL2ludGVybmFscy9hLWNhbGxhYmxlIjoyMjIsIi4uL2ludGVybmFscy9hbi1vYmplY3QiOjIyNywiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiOjI2NCwiLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QiOjI3MCwiLi4vaW50ZXJuYWxzL3RyeS10by1zdHJp'@; put 'bmciOjM0OX1dLDI3MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksYT1zKCIuLi9pbnRlcm5hbHMvaXMtYXJyYXkiKSxvPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLHI9cygiLi4vaW50ZXJu'@; put 'YWxzL2NsYXNzb2YtcmF3IiksdD1zKCIuLi9pbnRlcm5hbHMvdG8tc3RyaW5nIiksZT1iKFtdLnB1c2gpO0UuZXhwb3J0cz1mdW5jdGlvbihsKXtpZihvKGwpKXJldHVybiBsO2lmKGEobCkpe2Zvcih2YXIgbj1sLmxlbmd0aCxpPVtdLGg9MDtoPG47aCsrKXt2YXIgZj1sW2hdOyJzdHJpbmci'@; put 'PT10eXBlb2YgZj9lKGksZik6Im51bWJlciIhPXR5cGVvZiBmJiYiTnVtYmVyIiE9PXIoZikmJiJTdHJpbmciIT09cihmKXx8ZShpLHQoZikpfXZhciB1PWkubGVuZ3RoLHA9ITA7cmV0dXJuIGZ1bmN0aW9uKGQsdil7aWYocClyZXR1cm4gcD0hMSx2O2lmKGEodGhpcykpcmV0dXJuIHY7Zm9y'@; put 'KHZhciBfPTA7Xzx1O18rKylpZihpW19dPT09ZClyZXR1cm4gdn19fX0seyIuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXciOjIzNSwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4LCIuLi9pbnRlcm5hbHMvaXMtYXJyYXkiOjI4NCwiLi4vaW50ZXJuYWxzL2lzLWNhbGxh'@; put 'YmxlIjoyODUsIi4uL2ludGVybmFscy90by1zdHJpbmciOjM0OH1dLDI3MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZSIpLGE9cygiLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkIik7RS5leHBvcnRzPWZ1bmN0'@; put 'aW9uKG8scil7dmFyIHQ9b1tyXTtyZXR1cm4gYSh0KT92b2lkIDA6Yih0KX19LHsiLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUiOjIyMiwiLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkIjoyODh9XSwyNzQ6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0aW9uKCl7'@; put 'InVzZSBzdHJpY3QiO3ZhciBhPWZ1bmN0aW9uKG8pe3JldHVybiBvJiZvLk1hdGg9PT1NYXRoJiZvfTtFLmV4cG9ydHM9YSgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxhKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxhKCJvYmplY3QiPT10eXBl'@; put 'b2Ygc2VsZiYmc2VsZil8fGEoIm9iamVjdCI9PXR5cGVvZiBiJiZiKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8dGhpc3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1'@; put 'Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwyNzU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLGE9cygiLi4vaW50ZXJuYWxzL3RvLW9iamVjdCIpLG89Yih7fS5oYXNPd25Q'@; put 'cm9wZXJ0eSk7RS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKHIsdCl7cmV0dXJuIG8oYShyKSx0KX19LHsiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4LCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0IjozNDR9XSwyNzY6W2Z1bmN0aW9uKHMsRSxTKXsidXNl'@; put 'IHN0cmljdCI7RS5leHBvcnRzPXt9fSx7fV0sMjc3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz1mdW5jdGlvbihiLGEpe3RyeXsxPT09YXJndW1lbnRzLmxlbmd0aD9jb25zb2xlLmVycm9yKGIpOmNvbnNvbGUuZXJyb3IoYixhKX1jYXRjaHt9fX0se31dLDI3ODpb'@; put 'ZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIik7RS5leHBvcnRzPWIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LHsiLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiI6MjY5fV0sMjc5OltmdW5jdGlvbihzLEUsUyl7'@; put 'InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyIpLGE9cygiLi4vaW50ZXJuYWxzL2ZhaWxzIiksbz1zKCIuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQiKTtFLmV4cG9ydHM9IWImJiFhKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3Qu'@; put 'ZGVmaW5lUHJvcGVydHkobygiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LHsiLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzIjoyNDcsIi4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCI6MjQ5LCIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MH1dLDI4'@; put 'MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksYT1zKCIuLi9pbnRlcm5hbHMvZmFpbHMiKSxvPXMoIi4uL2ludGVybmFscy9jbGFzc29mLXJhdyIpLHI9T2JqZWN0LHQ9YigiIi5zcGxpdCk7RS5leHBv'@; put 'cnRzPWEoZnVuY3Rpb24oKXtyZXR1cm4hcigieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PT1vKGUpP3QoZSwiIik6cihlKX06cn0seyIuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXciOjIzNSwiLi4vaW50ZXJuYWxzL2ZhaWxzIjoyNjAs'@; put 'Ii4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiOjI2OH1dLDI4MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksYT1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxvPXMoIi4uL2lu'@; put 'dGVybmFscy9zaGFyZWQtc3RvcmUiKSxyPWIoRnVuY3Rpb24udG9TdHJpbmcpO2Eoby5pbnNwZWN0U291cmNlKXx8KG8uaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gcih0KX0pLEUuZXhwb3J0cz1vLmluc3BlY3RTb3VyY2V9LHsiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3Vy'@; put 'cnktdGhpcyI6MjY4LCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiOjI4NSwiLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZSI6MzMzfV0sMjgyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiLGEsbyxyPXMoIi4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24i'@; put 'KSx0PXMoIi4uL2ludGVybmFscy9nbG9iYWwiKSxlPXMoIi4uL2ludGVybmFscy9pcy1vYmplY3QiKSxsPXMoIi4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkiKSxuPXMoIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5IiksaT1zKCIuLi9pbnRlcm5hbHMv'@; put 'c2hhcmVkLXN0b3JlIiksaD1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSIpLGY9cygiLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzIiksdT10LlR5cGVFcnJvcjtpZihyfHxpLnN0YXRlKXt2YXIgZD1pLnN0YXRlfHwoaS5zdGF0ZT1uZXcoMCx0LldlYWtNYXApKTtkLmdldD1kLmdldCxkLmhh'@; put 'cz1kLmhhcyxkLnNldD1kLnNldCxiPWZ1bmN0aW9uKF8sQSl7aWYoZC5oYXMoXykpdGhyb3cgbmV3IHUoIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIik7cmV0dXJuIEEuZmFjYWRlPV8sZC5zZXQoXyxBKSxBfSxhPWZ1bmN0aW9uKF8pe3JldHVybiBkLmdldChfKXx8e319LG89ZnVuY3Rp'@; put 'b24oXyl7cmV0dXJuIGQuaGFzKF8pfX1lbHNle3ZhciB2PWgoInN0YXRlIik7Zlt2XT0hMCxiPWZ1bmN0aW9uKF8sQSl7aWYobihfLHYpKXRocm93IG5ldyB1KCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIpO3JldHVybiBBLmZhY2FkZT1fLGwoXyx2LEEpLEF9LGE9ZnVuY3Rpb24oXyl7'@; put 'cmV0dXJuIG4oXyx2KT9fW3ZdOnt9fSxvPWZ1bmN0aW9uKF8pe3JldHVybiBuKF8sdil9fUUuZXhwb3J0cz17c2V0OmIsZ2V0OmEsaGFzOm8sZW5mb3JjZTpmdW5jdGlvbihfKXtyZXR1cm4gbyhfKT9hKF8pOmIoXyx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihfKXtyZXR1cm4gZnVuY3Rpb24o'@; put 'QSl7dmFyIEk7aWYoIWUoQSl8fChJPWEoQSkpLnR5cGUhPT1fKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrXysiIHJlcXVpcmVkIik7cmV0dXJuIEl9fX19LHsiLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSI6MjQxLCIuLi9pbnRlcm5h'@; put 'bHMvZ2xvYmFsIjoyNzQsIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5IjoyNzUsIi4uL2ludGVybmFscy9oaWRkZW4ta2V5cyI6Mjc2LCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IjoyODksIi4uL2ludGVybmFscy9zaGFyZWQta2V5IjozMzIsIi4uL2ludGVybmFscy9zaGFyZWQtc3Rv'@; put 'cmUiOjMzMywiLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbiI6MzU0fV0sMjgzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpLGE9cygiLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyIpLG89Yigi'@; put 'aXRlcmF0b3IiKSxyPUFycmF5LnByb3RvdHlwZTtFLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihhLkFycmF5PT09dHx8cltvXT09PXQpfX0seyIuLi9pbnRlcm5hbHMvaXRlcmF0b3JzIjoyOTgsIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCI6MzU3fV0s'@; put 'Mjg0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9jbGFzc29mLXJhdyIpO0UuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iQXJyYXkiPT09YihhKX19LHsiLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3IjoyMzV9XSwy'@; put 'ODU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2RvY3VtZW50LWFsbCIpLGE9Yi5hbGw7RS5leHBvcnRzPWIuSVNfSFRNTEREQT9mdW5jdGlvbihvKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygb3x8bz09PWF9OmZ1bmN0aW9uKG8pe3JldHVy'@; put 'biJmdW5jdGlvbiI9PXR5cGVvZiBvfX0seyIuLi9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsIjoyNDh9XSwyODY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLGE9cygiLi4vaW50ZXJuYWxzL2ZhaWxzIiks'@; put 'bz1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxyPXMoIi4uL2ludGVybmFscy9jbGFzc29mIiksdD1zKCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIiksZT1zKCIuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UiKSxsPWZ1bmN0aW9uKCl7fSxuPVtdLGk9dCgiUmVmbGVjdCIsImNv'@; put 'bnN0cnVjdCIpLGg9L15ccyooPzpjbGFzc3xmdW5jdGlvbilcYi8sZj1iKGguZXhlYyksdT0haC50ZXN0KGwpLHA9ZnVuY3Rpb24odil7aWYoIW8odikpcmV0dXJuITE7dHJ5e3JldHVybiBpKGwsbix2KSwhMH1jYXRjaHtyZXR1cm4hMX19LGQ9ZnVuY3Rpb24odil7aWYoIW8odikpcmV0dXJu'@; put 'ITE7c3dpdGNoKHIodikpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1cm4hMX10cnl7cmV0dXJuIHV8fCEhZihoLGUodikpfWNhdGNoe3JldHVybiEwfX07ZC5zaGFtPSEwLEUuZXhwb3J0cz0haXx8'@; put 'YShmdW5jdGlvbigpe3ZhciB2O3JldHVybiBwKHAuY2FsbCl8fCFwKE9iamVjdCl8fCFwKGZ1bmN0aW9uKCl7dj0hMH0pfHx2fSk/ZDpwfSx7Ii4uL2ludGVybmFscy9jbGFzc29mIjoyMzYsIi4uL2ludGVybmFscy9mYWlscyI6MjYwLCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10'@; put 'aGlzIjoyNjgsIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iOjI2OSwiLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlIjoyODEsIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1fV0sMjg3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9m'@; put 'YWlscyIpLGE9cygiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIiksbz0vI3xcLnByb3RvdHlwZVwuLyxyPWZ1bmN0aW9uKGksaCl7dmFyIGY9ZVt0KGkpXTtyZXR1cm4gZj09PW58fGYhPT1sJiYoYShoKT9iKGgpOiEhaCl9LHQ9ci5ub3JtYWxpemU9ZnVuY3Rpb24oaSl7cmV0dXJuIFN0cmlu'@; put 'ZyhpKS5yZXBsYWNlKG8sIi4iKS50b0xvd2VyQ2FzZSgpfSxlPXIuZGF0YT17fSxsPXIuTkFUSVZFPSJOIixuPXIuUE9MWUZJTEw9IlAiO0UuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFscy9mYWlscyI6MjYwLCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiOjI4NX1dLDI4ODpbZnVuY3Rpb24o'@; put 'cyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9ZnVuY3Rpb24oYil7cmV0dXJuIG51bGw9PWJ9fSx7fV0sMjg5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLGE9cygiLi4vaW50ZXJuYWxzL2RvY3VtZW50LWFsbCIp'@; put 'LG89YS5hbGw7RS5leHBvcnRzPWEuSVNfSFRNTEREQT9mdW5jdGlvbihyKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHI/bnVsbCE9PXI6YihyKXx8cj09PW99OmZ1bmN0aW9uKHIpe3JldHVybiJvYmplY3QiPT10eXBlb2Ygcj9udWxsIT09cjpiKHIpfX0seyIuLi9pbnRlcm5hbHMvZG9jdW1l'@; put 'bnQtYWxsIjoyNDgsIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1fV0sMjkwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz0hMX0se31dLDI5MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Iiks'@; put 'YT1zKCIuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXciKSxvPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpKCJtYXRjaCIpO0UuZXhwb3J0cz1mdW5jdGlvbihyKXt2YXIgdDtyZXR1cm4gYihyKSYmKHZvaWQgMCE9PSh0PXJbb10pPyEhdDoiUmVnRXhwIj09PWEocikpfX0seyIu'@; put 'Li9pbnRlcm5hbHMvY2xhc3NvZi1yYXciOjIzNSwiLi4vaW50ZXJuYWxzL2lzLW9iamVjdCI6Mjg5LCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiOjM1N31dLDI5MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWlu'@; put 'IiksYT1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxvPXMoIi4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mIikscj1zKCIuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQiKSx0PU9iamVjdDtFLmV4cG9ydHM9cj9mdW5jdGlvbihlKXtyZXR1cm4ic3ltYm9sIj09'@; put 'dHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3ZhciBsPWIoIlN5bWJvbCIpO3JldHVybiBhKGwpJiZvKGwucHJvdG90eXBlLHQoZSkpfX0seyIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIjoyNjksIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXBy'@; put 'b3RvdHlwZS1vZiI6MzE0LCIuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQiOjM1MX1dLDI5MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0IiksYT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2Fs'@; put 'bCIpLG89cygiLi4vaW50ZXJuYWxzL2FuLW9iamVjdCIpLHI9cygiLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmciKSx0PXMoIi4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QiKSxlPXMoIi4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSIpLGw9cygiLi4vaW50'@; put 'ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YiKSxuPXMoIi4uL2ludGVybmFscy9nZXQtaXRlcmF0b3IiKSxpPXMoIi4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kIiksaD1zKCIuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UiKSxmPVR5cGVFcnJvcix1PWZ1bmN0aW9uKGQs'@; put 'dil7dGhpcy5zdG9wcGVkPWQsdGhpcy5yZXN1bHQ9dn0scD11LnByb3RvdHlwZTtFLmV4cG9ydHM9ZnVuY3Rpb24oZCx2LF8pe3ZhciBBLEksTCxOLFAsQiwkLHg9ISghX3x8IV8uQVNfRU5UUklFUyksTT0hKCFffHwhXy5JU19SRUNPUkQpLGo9ISghX3x8IV8uSVNfSVRFUkFUT1IpLGM9ISgh'@; put 'X3x8IV8uSU5URVJSVVBURUQpLG09Yih2LF8mJl8udGhhdCksZz1mdW5jdGlvbih3KXtyZXR1cm4gQSYmaChBLCJub3JtYWwiLHcpLG5ldyB1KCEwLHcpfSx5PWZ1bmN0aW9uKHcpe3JldHVybiB4PyhvKHcpLGM/bSh3WzBdLHdbMV0sZyk6bSh3WzBdLHdbMV0pKTpjP20odyxnKTptKHcpfTtp'@; put 'ZihNKUE9ZC5pdGVyYXRvcjtlbHNlIGlmKGopQT1kO2Vsc2V7aWYoIShJPWkoZCkpKXRocm93IG5ldyBmKHIoZCkrIiBpcyBub3QgaXRlcmFibGUiKTtpZih0KEkpKXtmb3IoTD0wLE49ZShkKTtOPkw7TCsrKWlmKChQPXkoZFtMXSkpJiZsKHAsUCkpcmV0dXJuIFA7cmV0dXJuIG5ldyB1KCEx'@; put 'KX1BPW4oZCxJKX1mb3IoQj1NP2QubmV4dDpBLm5leHQ7ISgkPWEoQixBKSkuZG9uZTspe3RyeXtQPXkoJC52YWx1ZSl9Y2F0Y2godyl7aChBLCJ0aHJvdyIsdyl9aWYoIm9iamVjdCI9PXR5cGVvZiBQJiZQJiZsKHAsUCkpcmV0dXJuIFB9cmV0dXJuIG5ldyB1KCExKX19LHsiLi4vaW50ZXJu'@; put 'YWxzL2FuLW9iamVjdCI6MjI3LCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0IjoyNjIsIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9nZXQtaXRlcmF0b3IiOjI3MSwiLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QiOjI3MCwi'@; put 'Li4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCI6MjgzLCIuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UiOjI5NCwiLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlIjoyOTksIi4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mIjozMTQsIi4uL2lu'@; put 'dGVybmFscy90cnktdG8tc3RyaW5nIjozNDl9XSwyOTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiKSxhPXMoIi4uL2ludGVybmFscy9hbi1vYmplY3QiKSxvPXMoIi4uL2ludGVybmFscy9nZXQtbWV0aG9kIik7RS5l'@; put 'eHBvcnRzPWZ1bmN0aW9uKHIsdCxlKXt2YXIgbCxuO2Eocik7dHJ5e2lmKCEobD1vKHIsInJldHVybiIpKSl7aWYoInRocm93Ij09PXQpdGhyb3cgZTtyZXR1cm4gZX1sPWIobCxyKX1jYXRjaChpKXtuPSEwLGw9aX1pZigidGhyb3ciPT09dCl0aHJvdyBlO2lmKG4pdGhyb3cgbDtyZXR1cm4g'@; put 'YShsKSxlfX0seyIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0IjoyMjcsIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9nZXQtbWV0aG9kIjoyNzN9XSwyOTU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2l0ZXJh'@; put 'dG9ycy1jb3JlIikuSXRlcmF0b3JQcm90b3R5cGUsYT1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZSIpLG89cygiLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yIikscj1zKCIuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWciKSx0PXMoIi4uL2ludGVybmFs'@; put 'cy9pdGVyYXRvcnMiKSxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O0UuZXhwb3J0cz1mdW5jdGlvbihsLG4saSxoKXt2YXIgZj1uKyIgSXRlcmF0b3IiO3JldHVybiBsLnByb3RvdHlwZT1hKGIse25leHQ6bygrIWgsaSl9KSxyKGwsZiwhMSwhMCksdFtmXT1lLGx9fSx7Ii4uL2ludGVybmFs'@; put 'cy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciI6MjQyLCIuLi9pbnRlcm5hbHMvaXRlcmF0b3JzIjoyOTgsIi4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZSI6Mjk3LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZSI6MzA2LCIuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWciOjMz'@; put 'MX1dLDI5NjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCIpLG89cygiLi4vaW50ZXJuYWxzL2lzLXB1cmUiKSxyPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lIiks'@; put 'dD1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxlPXMoIi4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3IiKSxsPXMoIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZiIpLG49cygiLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9m'@; put 'IiksaT1zKCIuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWciKSxoPXMoIi4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkiKSxmPXMoIi4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4iKSx1PXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIp'@; put 'LHA9cygiLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyIpLGQ9cygiLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlIiksdj1yLlBST1BFUixfPXIuQ09ORklHVVJBQkxFLEE9ZC5JdGVyYXRvclByb3RvdHlwZSxJPWQuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxMPXUoIml0ZXJhdG9yIiksTj1mdW5j'@; put 'dGlvbigpe3JldHVybiB0aGlzfTtFLmV4cG9ydHM9ZnVuY3Rpb24oUCxCLCQsRCx4LE0sail7ZSgkLEIsRCk7dmFyIGMsbSxnLHk9ZnVuY3Rpb24oUil7aWYoUj09PXgmJlUpcmV0dXJuIFU7aWYoIUkmJlImJlIgaW4gTylyZXR1cm4gT1tSXTtzd2l0Y2goUil7Y2FzZSJrZXlzIjpjYXNlInZh'@; put 'bHVlcyI6Y2FzZSJlbnRyaWVzIjpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3ICQodGhpcyxSKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyAkKHRoaXMpfX0sdz1CKyIgSXRlcmF0b3IiLGs9ITEsTz1QLnByb3RvdHlwZSx6PU9bTF18fE9bIkBAaXRlcmF0b3IiXXx8eCYmT1t4'@; put 'XSxVPSFJJiZ6fHx5KHgpLFY9IkFycmF5Ij09PUImJk8uZW50cmllc3x8ejtpZihWJiYoYz1sKFYuY2FsbChuZXcgUCkpKSE9PU9iamVjdC5wcm90b3R5cGUmJmMubmV4dCYmKG98fGwoYyk9PT1BfHwobj9uKGMsQSk6dChjW0xdKXx8ZihjLEwsTikpLGkoYyx3LCEwLCEwKSxvJiYocFt3XT1O'@; put 'KSksdiYmInZhbHVlcyI9PT14JiZ6JiYidmFsdWVzIiE9PXoubmFtZSYmKCFvJiZfP2goTywibmFtZSIsInZhbHVlcyIpOihrPSEwLFU9ZnVuY3Rpb24oKXtyZXR1cm4gYSh6LHRoaXMpfSkpLHgpaWYobT17dmFsdWVzOnkoInZhbHVlcyIpLGtleXM6TT9VOnkoImtleXMiKSxlbnRyaWVzOnko'@; put 'ImVudHJpZXMiKX0sailmb3IoZyBpbiBtKShJfHxrfHwhKGcgaW4gTykpJiZmKE8sZyxtW2ddKTtlbHNlIGIoe3RhcmdldDpCLHByb3RvOiEwLGZvcmNlZDpJfHxrfSxtKTtyZXR1cm4gbyYmIWp8fE9bTF09PT1VfHxmKE8sTCxVLHtuYW1lOnh9KSxwW0JdPVUsbX19LHsiLi4vaW50ZXJuYWxz'@; put 'L2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSI6MjQxLCIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIjoyNDUsIi4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiOjI2NCwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUiOjI2NSwi'@; put 'Li4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODUsIi4uL2ludGVybmFscy9pcy1wdXJlIjoyOTAsIi4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3IiOjI5NSwiLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyI6Mjk4LCIuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUiOjI5'@; put 'NywiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mIjozMTMsIi4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZiI6MzE4LCIuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWciOjMzMSwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwy'@; put 'OTc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGIsYSxvLHI9cygiLi4vaW50ZXJuYWxzL2ZhaWxzIiksdD1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxlPXMoIi4uL2ludGVybmFscy9pcy1vYmplY3QiKSxsPXMoIi4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlIiks'@; put 'bj1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YiKSxpPXMoIi4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4iKSxoPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpLGY9cygiLi4vaW50ZXJuYWxzL2lzLXB1cmUiKSx1PWgoIml0ZXJhdG9yIikscD0h'@; put 'MTtbXS5rZXlzJiYoIm5leHQiaW4obz1bXS5rZXlzKCkpPyhhPW4obihvKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGI9YSk6cD0hMCksIWUoYil8fHIoZnVuY3Rpb24oKXt2YXIgZD17fTtyZXR1cm4gYlt1XS5jYWxsKGQpIT09ZH0pP2I9e306ZiYmKGI9bChiKSksdChiW3VdKXx8aShiLHUs'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6YixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOnB9fSx7Ii4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4iOjI0NSwiLi4vaW50ZXJuYWxzL2ZhaWxzIjoyNjAsIi4uL2ludGVybmFscy9pcy1jYWxs'@; put 'YWJsZSI6Mjg1LCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IjoyODksIi4uL2ludGVybmFscy9pcy1wdXJlIjoyOTAsIi4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlIjozMDYsIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZiI6MzEzLCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93'@; put 'bi1zeW1ib2wiOjM1N31dLDI5ODpbZnVuY3Rpb24ocyxFLFMpe2FyZ3VtZW50c1s0XVsyNzZdWzBdLmFwcGx5KFMsYXJndW1lbnRzKX0se2R1cDoyNzZ9XSwyOTk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCIpO0UuZXhwb3J0'@; put 'cz1mdW5jdGlvbihhKXtyZXR1cm4gYihhLmxlbmd0aCl9fSx7Ii4uL2ludGVybmFscy90by1sZW5ndGgiOjM0M31dLDMwMDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksYT1zKCIuLi9pbnRlcm5hbHMv'@; put 'ZmFpbHMiKSxvPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLHI9cygiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiKSx0PXMoIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyIpLGU9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUiKS5DT05GSUdVUkFCTEUsbD1zKCIuLi9p'@; put 'bnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UiKSxuPXMoIi4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSIpLGk9bi5lbmZvcmNlLGg9bi5nZXQsZj1TdHJpbmcsdT1PYmplY3QuZGVmaW5lUHJvcGVydHkscD1iKCIiLnNsaWNlKSxkPWIoIiIucmVwbGFjZSksdj1iKFtdLmpvaW4pLF89dCYmIWEo'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gOCE9PXUoZnVuY3Rpb24oKXt9LCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSksQT1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksST1FLmV4cG9ydHM9ZnVuY3Rpb24oTCxOLFApeyJTeW1ib2woIj09PXAoZihOKSwwLDcpJiYoTj0iWyIrZChmKE4p'@; put 'LC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksUCYmUC5nZXR0ZXImJihOPSJnZXQgIitOKSxQJiZQLnNldHRlciYmKE49InNldCAiK04pLCghcihMLCJuYW1lIil8fGUmJkwubmFtZSE9PU4pJiYodD91KEwsIm5hbWUiLHt2YWx1ZTpOLGNvbmZpZ3VyYWJsZTohMH0pOkwubmFtZT1O'@; put 'KSxfJiZQJiZyKFAsImFyaXR5IikmJkwubGVuZ3RoIT09UC5hcml0eSYmdShMLCJsZW5ndGgiLHt2YWx1ZTpQLmFyaXR5fSk7dHJ5e1AmJnIoUCwiY29uc3RydWN0b3IiKSYmUC5jb25zdHJ1Y3Rvcj90JiZ1KEwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6TC5wcm90b3R5cGUmJihMLnBy'@; put 'b3RvdHlwZT12b2lkIDApfWNhdGNoe312YXIgQj1pKEwpO3JldHVybiByKEIsInNvdXJjZSIpfHwoQi5zb3VyY2U9dihBLCJzdHJpbmciPT10eXBlb2YgTj9OOiIiKSksTH07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPUkoZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzKSYmaCh0aGlzKS5z'@; put 'b3VyY2V8fGwodGhpcyl9LCJ0b1N0cmluZyIpfSx7Ii4uL2ludGVybmFscy9kZXNjcmlwdG9ycyI6MjQ3LCIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MCwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUiOjI2NSwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4LCIuLi9p'@; put 'bnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSI6Mjc1LCIuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UiOjI4MSwiLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlIjoyODIsIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1fV0sMzAxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3Qi'@; put 'O3ZhciBiPU1hdGguY2VpbCxhPU1hdGguZmxvb3I7RS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKG8pe3ZhciByPStvO3JldHVybihyPjA/YTpiKShyKX19LHt9XSwzMDI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGIsYSxvLHIsdCxlPXMoIi4uL2ludGVybmFscy9n'@; put 'bG9iYWwiKSxsPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQiKSxuPXMoIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yIikuZixpPXMoIi4uL2ludGVybmFscy90YXNrIikuc2V0LGg9cygiLi4vaW50ZXJuYWxzL3F1ZXVlIiksZj1z'@; put 'KCIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcyIpLHU9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MtcGViYmxlIikscD1zKCIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdCIpLGQ9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlIiksdj1lLk11dGF0aW9uT2Jz'@; put 'ZXJ2ZXJ8fGUuV2ViS2l0TXV0YXRpb25PYnNlcnZlcixfPWUuZG9jdW1lbnQsQT1lLnByb2Nlc3MsST1lLlByb21pc2UsTD1uKGUsInF1ZXVlTWljcm90YXNrIiksTj1MJiZMLnZhbHVlO2lmKCFOKXt2YXIgUD1uZXcgaCxCPWZ1bmN0aW9uKCl7dmFyICQsRDtmb3IoZCYmKCQ9QS5kb21haW4p'@; put 'JiYkLmV4aXQoKTtEPVAuZ2V0KCk7KXRyeXtEKCl9Y2F0Y2goeCl7dGhyb3cgUC5oZWFkJiZiKCkseH0kJiYkLmVudGVyKCl9O2Z8fGR8fHB8fCF2fHwhXz8hdSYmSSYmSS5yZXNvbHZlPygocj1JLnJlc29sdmUodm9pZCAwKSkuY29uc3RydWN0b3I9SSx0PWwoci50aGVuLHIpLGI9ZnVuY3Rp'@; put 'b24oKXt0KEIpfSk6ZD9iPWZ1bmN0aW9uKCl7QS5uZXh0VGljayhCKX06KGk9bChpLGUpLGI9ZnVuY3Rpb24oKXtpKEIpfSk6KGE9ITAsbz1fLmNyZWF0ZVRleHROb2RlKCIiKSxuZXcgdihCKS5vYnNlcnZlKG8se2NoYXJhY3RlckRhdGE6ITB9KSxiPWZ1bmN0aW9uKCl7by5kYXRhPWE9IWF9'@; put 'KSxOPWZ1bmN0aW9uKCQpe1AuaGVhZHx8YigpLFAuYWRkKCQpfX1FLmV4cG9ydHM9Tn0seyIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcyI6MjUzLCIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUiOjI1MiwiLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlIjoyNTQsIi4uL2lu'@; put 'dGVybmFscy9lbmdpbmUtaXMtd2Vib3Mtd2Via2l0IjoyNTUsIi4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQiOjI2MiwiLi4vaW50ZXJuYWxzL2dsb2JhbCI6Mjc0LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvciI6MzA5LCIuLi9pbnRl'@; put 'cm5hbHMvcXVldWUiOjMyOCwiLi4vaW50ZXJuYWxzL3Rhc2siOjMzOX1dLDMwMzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZSIpLGE9VHlwZUVycm9yLG89ZnVuY3Rpb24ocil7dmFyIHQsZTt0aGlzLnByb21pc2U9bmV3IHIo'@; put 'ZnVuY3Rpb24obCxuKXtpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1lKXRocm93IG5ldyBhKCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpO3Q9bCxlPW59KSx0aGlzLnJlc29sdmU9Yih0KSx0aGlzLnJlamVjdD1iKGUpfTtFLmV4cG9ydHMuZj1mdW5jdGlvbihyKXtyZXR1cm4gbmV3IG8ocil9'@; put 'fSx7Ii4uL2ludGVybmFscy9hLWNhbGxhYmxlIjoyMjJ9XSwzMDQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCIpLGE9VHlwZUVycm9yO0UuZXhwb3J0cz1mdW5jdGlvbihvKXtpZihiKG8pKXRocm93IG5ldyBhKCJUaGUgbWV0'@; put 'aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnMiKTtyZXR1cm4gb319LHsiLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCI6MjkxfV0sMzA1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyIpLGE9cygiLi4vaW50'@; put 'ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLG89cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiKSxyPXMoIi4uL2ludGVybmFscy9mYWlscyIpLHQ9cygiLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzIiksZT1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt'@; put 'c3ltYm9scyIpLGw9cygiLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlIiksbj1zKCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0IiksaT1zKCIuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QiKSxoPU9iamVjdC5hc3NpZ24sZj1PYmplY3QuZGVmaW5lUHJvcGVydHks'@; put 'dT1hKFtdLmNvbmNhdCk7RS5leHBvcnRzPSFofHxyKGZ1bmN0aW9uKCl7aWYoYiYmMSE9PWgoe2I6MX0saChmKHt9LCJhIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtmKHRoaXMsImIiLHt2YWx1ZTozLGVudW1lcmFibGU6ITF9KX19KSx7YjoyfSkpLmIpcmV0dXJuITA7dmFyIHA9'@; put 'e30sZD17fSx2PVN5bWJvbCgiYXNzaWduIGRldGVjdGlvbiIpO3JldHVybiBwW3ZdPTcsImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihfKXtkW19dPV99KSw3IT09aCh7fSxwKVt2XXx8ImFiY2RlZmdoaWprbG1ub3BxcnN0IiE9PXQoaCh7fSxkKSku'@; put 'am9pbigiIil9KT9mdW5jdGlvbihwLGQpe2Zvcih2YXIgdj1uKHApLF89YXJndW1lbnRzLmxlbmd0aCxBPTEsST1lLmYsTD1sLmY7Xz5BOylmb3IodmFyIE4sUD1pKGFyZ3VtZW50c1tBKytdKSxCPUk/dSh0KFApLEkoUCkpOnQoUCksJD1CLmxlbmd0aCxEPTA7JD5EOylOPUJbRCsrXSxiJiYh'@; put 'byhMLFAsTil8fCh2W05dPVBbTl0pO3JldHVybiB2fTpofSx7Ii4uL2ludGVybmFscy9kZXNjcmlwdG9ycyI6MjQ3LCIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MCwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiOjI2NCwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4'@; put 'LCIuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QiOjI4MCwiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMiOjMxMiwiLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzIjozMTYsIi4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZSI6MzE3'@; put 'LCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0IjozNDR9XSwzMDY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGIsYT1zKCIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Iiksbz1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzIikscj1zKCIuLi9pbnRlcm5hbHMv'@; put 'ZW51bS1idWcta2V5cyIpLHQ9cygiLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzIiksZT1zKCIuLi9pbnRlcm5hbHMvaHRtbCIpLGw9cygiLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50IiksaT1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSIpKCJJRV9QUk9UTyIpLGg9ZnVu'@; put 'Y3Rpb24oKXt9LGY9ZnVuY3Rpb24oZCl7cmV0dXJuIjxzY3JpcHQ+IitkKyI8XC9zY3JpcHQ+In0sdT1mdW5jdGlvbihkKXtkLndyaXRlKGYoIiIpKSxkLmNsb3NlKCk7dmFyIHY9ZC5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBkPW51bGwsdn0scD1mdW5jdGlvbigpe3RyeXtiPW5ldyBB'@; put 'Y3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoe312YXIgZCx2O3A9dHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudC5kb21haW4mJmI/dShiKTooKHY9bCgiaWZyYW1lIikpLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGUuYXBwZW5kQ2hpbGQodiksdi5zcmM9ImphdmFzY3JpcHQ6IiwoZD12'@; put 'LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxkLndyaXRlKGYoImRvY3VtZW50LkY9T2JqZWN0IikpLGQuY2xvc2UoKSxkLkYpOnUoYik7Zm9yKHZhciBfPXIubGVuZ3RoO18tLTspZGVsZXRlIHAucHJvdG90eXBlW3JbX11dO3JldHVybiBwKCl9O3RbaV09ITAsRS5leHBvcnRzPU9i'@; put 'amVjdC5jcmVhdGV8fGZ1bmN0aW9uKGQsdil7dmFyIF87cmV0dXJuIG51bGwhPT1kPyhoLnByb3RvdHlwZT1hKGQpLF89bmV3IGgsaC5wcm90b3R5cGU9bnVsbCxfW2ldPWQpOl89cCgpLHZvaWQgMD09PXY/XzpvLmYoXyx2KX19LHsiLi4vaW50ZXJuYWxzL2FuLW9iamVjdCI6MjI3LCIuLi9p'@; put 'bnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQiOjI0OSwiLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMiOjI1OCwiLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzIjoyNzYsIi4uL2ludGVybmFscy9odG1sIjoyNzgsIi4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMi'@; put 'OjMwNywiLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXkiOjMzMn1dLDMwNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMiKSxhPXMoIi4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZyIpLG89cygiLi4vaW50ZXJu'@; put 'YWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiKSxyPXMoIi4uL2ludGVybmFscy9hbi1vYmplY3QiKSx0PXMoIi4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCIpLGU9cygiLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzIik7Uy5mPWImJiFhP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1'@; put 'bmN0aW9uKGwsbil7cihsKTtmb3IodmFyIGksaD10KG4pLGY9ZShuKSx1PWYubGVuZ3RoLHA9MDt1PnA7KW8uZihsLGk9ZltwKytdLGhbaV0pO3JldHVybiBsfX0seyIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0IjoyMjcsIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyI6MjQ3LCIuLi9pbnRlcm5h'@; put 'bHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSI6MzA4LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMiOjMxNiwiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0IjozNDEsIi4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZyI6MzUyfV0sMzA4OltmdW5jdGlvbihzLEUsUyl7'@; put 'InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyIpLGE9cygiLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lIiksbz1zKCIuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWciKSxyPXMoIi4uL2ludGVybmFscy9hbi1vYmplY3QiKSx0PXMoIi4u'@; put 'L2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkiKSxlPVR5cGVFcnJvcixsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7Uy5mPWI/bz9mdW5jdGlvbihpLGgsZil7aWYocihpKSxoPXQoaCkscihmKSwiZnVuY3Rpb24iPT10eXBlb2YgaSYm'@; put 'InByb3RvdHlwZSI9PT1oJiYidmFsdWUiaW4gZiYmIndyaXRhYmxlImluIGYmJiFmLndyaXRhYmxlKXt2YXIgdT1uKGksaCk7dSYmdS53cml0YWJsZSYmKGlbaF09Zi52YWx1ZSxmPXtjb25maWd1cmFibGU6ImNvbmZpZ3VyYWJsZSJpbiBmP2YuY29uZmlndXJhYmxlOnUuY29uZmlndXJhYmxl'@; put 'LGVudW1lcmFibGU6ImVudW1lcmFibGUiaW4gZj9mLmVudW1lcmFibGU6dS5lbnVtZXJhYmxlLHdyaXRhYmxlOiExfSl9cmV0dXJuIGwoaSxoLGYpfTpsOmZ1bmN0aW9uKGksaCxmKXtpZihyKGkpLGg9dChoKSxyKGYpLGEpdHJ5e3JldHVybiBsKGksaCxmKX1jYXRjaHt9aWYoImdldCJpbiBm'@; put 'fHwic2V0ImluIGYpdGhyb3cgbmV3IGUoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIGYmJihpW2hdPWYudmFsdWUpLGl9fSx7Ii4uL2ludGVybmFscy9hbi1vYmplY3QiOjIyNywiLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzIjoyNDcsIi4uL2ludGVybmFscy9p'@; put 'ZTgtZG9tLWRlZmluZSI6Mjc5LCIuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5IjozNDYsIi4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZyI6MzUyfV0sMzA5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9kZXNjcmlwdG9y'@; put 'cyIpLGE9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiKSxvPXMoIi4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZSIpLHI9cygiLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yIiksdD1zKCIuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1v'@; put 'YmplY3QiKSxlPXMoIi4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkiKSxsPXMoIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Iiksbj1zKCIuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUiKSxpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7Uy5mPWI/aTpmdW5jdGlv'@; put 'bihoLGYpe2lmKGg9dChoKSxmPWUoZiksbil0cnl7cmV0dXJuIGkoaCxmKX1jYXRjaHt9aWYobChoLGYpKXJldHVybiByKCFhKG8uZixoLGYpLGhbZl0pfX0seyIuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IiOjI0MiwiLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzIjoy'@; put 'NDcsIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5IjoyNzUsIi4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZSI6Mjc5LCIuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUiOjMxNywiLi4vaW50ZXJu'@; put 'YWxzL3RvLWluZGV4ZWQtb2JqZWN0IjozNDEsIi4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkiOjM0Nn1dLDMxMDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXciKSxhPXMoIi4uL2ludGVybmFscy90by1pbmRleGVkLW9i'@; put 'amVjdCIpLG89cygiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzIikuZixyPXMoIi4uL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUiKSx0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVj'@; put 'dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107RS5leHBvcnRzLmY9ZnVuY3Rpb24oZSl7cmV0dXJuIHQmJiJXaW5kb3ciPT09YihlKT9mdW5jdGlvbihsKXt0cnl7cmV0dXJuIG8obCl9Y2F0Y2h7cmV0dXJuIHIodCl9fShlKTpvKGEoZSkpfX0seyIuLi9pbnRlcm5hbHMvYXJyYXkt'@; put 'c2xpY2Utc2ltcGxlIjoyMzAsIi4uL2ludGVybmFscy9jbGFzc29mLXJhdyI6MjM1LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMiOjMxMSwiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0IjozNDF9XSwzMTE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0'@; put 'cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsIiksYT1zKCIuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cyIpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7Uy5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihvKXtyZXR1cm4g'@; put 'YihvLGEpfX0seyIuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cyI6MjU4LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwiOjMxNX1dLDMxMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtTLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30se31dLDMxMzpbZnVu'@; put 'Y3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSIpLGE9cygiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIiksbz1zKCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Iikscj1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSIpLHQ9cygi'@; put 'Li4vaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlciIpLGU9cigiSUVfUFJPVE8iKSxsPU9iamVjdCxuPWwucHJvdG90eXBlO0UuZXhwb3J0cz10P2wuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oaSl7dmFyIGg9byhpKTtpZihiKGgsZSkpcmV0dXJuIGhbZV07dmFyIGY9aC5jb25z'@; put 'dHJ1Y3RvcjtyZXR1cm4gYShmKSYmaCBpbnN0YW5jZW9mIGY/Zi5wcm90b3R5cGU6aCBpbnN0YW5jZW9mIGw/bjpudWxsfX0seyIuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyIjoyMzksIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5IjoyNzUsIi4uL2ludGVybmFs'@; put 'cy9pcy1jYWxsYWJsZSI6Mjg1LCIuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSI6MzMyLCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0IjozNDR9XSwzMTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpO0UuZXhw'@; put 'b3J0cz1iKHt9LmlzUHJvdG90eXBlT2YpfSx7Ii4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiOjI2OH1dLDMxNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksYT1zKCIuLi9pbnRlcm5h'@; put 'bHMvaGFzLW93bi1wcm9wZXJ0eSIpLG89cygiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Iikscj1zKCIuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMiKS5pbmRleE9mLHQ9cygiLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzIiksZT1iKFtdLnB1c2gpO0UuZXhwb3J0cz1mdW5jdGlv'@; put 'bihsLG4pe3ZhciBpLGg9byhsKSxmPTAsdT1bXTtmb3IoaSBpbiBoKSFhKHQsaSkmJmEoaCxpKSYmZSh1LGkpO2Zvcig7bi5sZW5ndGg+ZjspYShoLGk9bltmKytdKSYmKH5yKHUsaSl8fGUodSxpKSk7cmV0dXJuIHV9fSx7Ii4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcyI6MjI4LCIuLi9p'@; put 'bnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIjoyNjgsIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5IjoyNzUsIi4uL2ludGVybmFscy9oaWRkZW4ta2V5cyI6Mjc2LCIuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QiOjM0MX1dLDMxNjpbZnVuY3Rpb24ocyxFLFMpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwiKSxhPXMoIi4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzIik7RS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihvKXtyZXR1cm4gYihvLGEpfX0seyIuLi9pbnRlcm5hbHMvZW51bS1idWct'@; put 'a2V5cyI6MjU4LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwiOjMxNX1dLDMxNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isbz1hJiYhYi5jYWxsKHsx'@; put 'OjJ9LDEpO1MuZj1vP2Z1bmN0aW9uKHIpe3ZhciB0PWEodGhpcyxyKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06Yn0se31dLDMxODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yIiksYT1z'@; put 'KCIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Iiksbz1zKCIuLi9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUiKTtFLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIHIsdD0hMSxlPXt9O3RyeXsocj1iKE9iamVjdC5wcm90'@; put 'b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShlLFtdKSx0PWUgaW5zdGFuY2VvZiBBcnJheX1jYXRjaHt9cmV0dXJuIGZ1bmN0aW9uKGwsbil7cmV0dXJuIGEobCksbyhuKSx0P3IobCxuKTpsLl9fcHJvdG9fXz1uLGx9fSgpOnZvaWQgMCl9LHsiLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJv'@; put 'dG90eXBlIjoyMjQsIi4uL2ludGVybmFscy9hbi1vYmplY3QiOjIyNywiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3NvciI6MjY2fV0sMzE5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9kZXNjcmlwdG9ycyIpLGE9'@; put 'cygiLi4vaW50ZXJuYWxzL2ZhaWxzIiksbz1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIikscj1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YiKSx0PXMoIi4uL2ludGVybmFscy9vYmplY3Qta2V5cyIpLGU9cygiLi4vaW50ZXJuYWxzL3RvLWlu'@; put 'ZGV4ZWQtb2JqZWN0IiksbD1vKHMoIi4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZSIpLmYpLG49byhbXS5wdXNoKSxpPWImJmEoZnVuY3Rpb24oKXt2YXIgZj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmWzJdPTIsIWwoZiwyKX0pLGg9ZnVuY3Rpb24oZil7'@; put 'cmV0dXJuIGZ1bmN0aW9uKHUpe2Zvcih2YXIgcCxkPWUodSksdj10KGQpLF89aSYmbnVsbD09PXIoZCksQT12Lmxlbmd0aCxJPTAsTD1bXTtBPkk7KXA9dltJKytdLGImJiEoXz9wIGluIGQ6bChkLHApKXx8bihMLGY/W3AsZFtwXV06ZFtwXSk7cmV0dXJuIEx9fTtFLmV4cG9ydHM9e2VudHJp'@; put 'ZXM6aCghMCksdmFsdWVzOmgoITEpfX0seyIuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMiOjI0NywiLi4vaW50ZXJuYWxzL2ZhaWxzIjoyNjAsIi4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiOjI2OCwiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mIjozMTMs'@; put 'Ii4uL2ludGVybmFscy9vYmplY3Qta2V5cyI6MzE2LCIuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUiOjMxNywiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0IjozNDF9XSwzMjA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4v'@; put 'aW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiKSxhPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLG89cygiLi4vaW50ZXJuYWxzL2lzLW9iamVjdCIpLHI9VHlwZUVycm9yO0UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBsLG47aWYoInN0cmluZyI9PT1lJiZhKGw9dC50b1N0cmluZykm'@; put 'JiFvKG49YihsLHQpKXx8YShsPXQudmFsdWVPZikmJiFvKG49YihsLHQpKXx8InN0cmluZyIhPT1lJiZhKGw9dC50b1N0cmluZykmJiFvKG49YihsLHQpKSlyZXR1cm4gbjt0aHJvdyBuZXcgcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSx7Ii4uL2ludGVy'@; put 'bmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSI6Mjg1LCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IjoyODl9XSwzMjE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiIpLGE9cygiLi4v'@; put 'aW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLG89cygiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzIikscj1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scyIpLHQ9cygiLi4vaW50ZXJuYWxzL2FuLW9iamVjdCIp'@; put 'LGU9YShbXS5jb25jYXQpO0UuZXhwb3J0cz1iKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbihsKXt2YXIgbj1vLmYodChsKSksaT1yLmY7cmV0dXJuIGk/ZShuLGkobCkpOm59fSx7Ii4uL2ludGVybmFscy9hbi1vYmplY3QiOjIyNywiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3Vy'@; put 'cnktdGhpcyI6MjY4LCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIjoyNjksIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcyI6MzExLCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scyI6MzEyfV0sMzIyOltmdW5jdGlvbihzLEUs'@; put 'Uyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKTtFLmV4cG9ydHM9Yn0seyIuLi9pbnRlcm5hbHMvZ2xvYmFsIjoyNzR9XSwzMjM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm57ZXJyb3I6ITEs'@; put 'dmFsdWU6YigpfX1jYXRjaChhKXtyZXR1cm57ZXJyb3I6ITAsdmFsdWU6YX19fX0se31dLDMyNDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZ2xvYmFsIiksYT1zKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IiKSxv'@; put 'PXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLHI9cygiLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCIpLHQ9cygiLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlIiksZT1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSxsPXMoIi4uL2ludGVybmFscy9lbmdpbmUtaXMtYnJv'@; put 'd3NlciIpLG49cygiLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1kZW5vIiksaT1zKCIuLi9pbnRlcm5hbHMvaXMtcHVyZSIpLGg9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uIiksZj1hJiZhLnByb3RvdHlwZSx1PWUoInNwZWNpZXMiKSxwPSExLGQ9byhiLlByb21pc2VSZWplY3Rp'@; put 'b25FdmVudCksdj1yKCJQcm9taXNlIixmdW5jdGlvbigpe3ZhciBfPXQoYSksQT1fIT09U3RyaW5nKGEpO2lmKCFBJiY2Nj09PWh8fGkmJighZi5jYXRjaHx8IWYuZmluYWxseSkpcmV0dXJuITA7aWYoIWh8fGg8NTF8fCEvbmF0aXZlIGNvZGUvLnRlc3QoXykpe3ZhciBJPW5ldyBhKGZ1bmN0'@; put 'aW9uKE4pe04oMSl9KSxMPWZ1bmN0aW9uKE4pe04oZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7fSl9O2lmKChJLmNvbnN0cnVjdG9yPXt9KVt1XT1MLCEocD1JLnRoZW4oZnVuY3Rpb24oKXt9KWluc3RhbmNlb2YgTCkpcmV0dXJuITB9cmV0dXJuIUEmJihsfHxuKSYmIWR9KTtFLmV4cG9ydHM9'@; put 'e0NPTlNUUlVDVE9SOnYsUkVKRUNUSU9OX0VWRU5UOmQsU1VCQ0xBU1NJTkc6cH19LHsiLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1icm93c2VyIjoyNTAsIi4uL2ludGVybmFscy9lbmdpbmUtaXMtZGVubyI6MjUxLCIuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24iOjI1NywiLi4vaW50'@; put 'ZXJuYWxzL2dsb2JhbCI6Mjc0LCIuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UiOjI4MSwiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODUsIi4uL2ludGVybmFscy9pcy1mb3JjZWQiOjI4NywiLi4vaW50ZXJuYWxzL2lzLXB1cmUiOjI5MCwiLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0'@; put 'aXZlLWNvbnN0cnVjdG9yIjozMjUsIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCI6MzU3fV0sMzI1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKTtFLmV4cG9ydHM9Yi5Qcm9taXNlfSx7Ii4uL2ludGVybmFscy9nbG9i'@; put 'YWwiOjI3NH1dLDMyNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0IiksYT1zKCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Iiksbz1zKCIuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eSIpO0UuZXhwb3J0cz1mdW5j'@; put 'dGlvbihyLHQpe2lmKGIociksYSh0KSYmdC5jb25zdHJ1Y3Rvcj09PXIpcmV0dXJuIHQ7dmFyIGU9by5mKHIpO3JldHVybigwLGUucmVzb2x2ZSkodCksZS5wcm9taXNlfX0seyIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0IjoyMjcsIi4uL2ludGVybmFscy9pcy1vYmplY3QiOjI4OSwiLi4vaW50'@; put 'ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkiOjMwM31dLDMyNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IiKSxhPXMoIi4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVy'@; put 'YXRpb24iKSxvPXMoIi4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbiIpLkNPTlNUUlVDVE9SO0UuZXhwb3J0cz1vfHwhYShmdW5jdGlvbihyKXtiLmFsbChyKS50aGVuKHZvaWQgMCxmdW5jdGlvbigpe30pfSl9LHsiLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3Ru'@; put 'ZXNzLW9mLWl0ZXJhdGlvbiI6MjM0LCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24iOjMyNCwiLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yIjozMjV9XSwzMjg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rp'@; put 'b24oKXt0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbH07Yi5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihhKXt2YXIgbz17aXRlbTphLG5leHQ6bnVsbH0scj10aGlzLnRhaWw7cj9yLm5leHQ9bzp0aGlzLmhlYWQ9byx0aGlzLnRhaWw9b30sZ2V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5o'@; put 'ZWFkO2lmKGEpcmV0dXJuIG51bGw9PT0odGhpcy5oZWFkPWEubmV4dCkmJih0aGlzLnRhaWw9bnVsbCksYS5pdGVtfX0sRS5leHBvcnRzPWJ9LHt9XSwzMjk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkIiks'@; put 'YT1UeXBlRXJyb3I7RS5leHBvcnRzPWZ1bmN0aW9uKG8pe2lmKGIobykpdGhyb3cgbmV3IGEoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrbyk7cmV0dXJuIG99fSx7Ii4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCI6Mjg4fV0sMzMwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iKSxhPXMoIi4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IiKSxvPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpLHI9cygiLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzIiksdD1vKCJzcGVj'@; put 'aWVzIik7RS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciBsPWIoZSk7ciYmbCYmIWxbdF0mJmEobCx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSx7Ii4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IiOjI0NCwiLi4vaW50ZXJuYWxz'@; put 'L2Rlc2NyaXB0b3JzIjoyNDcsIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iOjI2OSwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwzMzE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVy'@; put 'dHkiKS5mLGE9cygiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiKSxvPXMoIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCIpKCJ0b1N0cmluZ1RhZyIpO0UuZXhwb3J0cz1mdW5jdGlvbihyLHQsZSl7ciYmIWUmJihyPXIucHJvdG90eXBlKSxyJiYhYShyLG8pJiZiKHIsbyx7'@; put 'Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LHsiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiOjI3NSwiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiOjMwOCwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwzMzI6W2Z1bmN0aW9uKHMsRSxT'@; put 'KXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL3NoYXJlZCIpLGE9cygiLi4vaW50ZXJuYWxzL3VpZCIpLG89Yigia2V5cyIpO0UuZXhwb3J0cz1mdW5jdGlvbihyKXtyZXR1cm4gb1tyXXx8KG9bcl09YShyKSl9fSx7Ii4uL2ludGVybmFscy9zaGFyZWQiOjMzNCwiLi4vaW50'@; put 'ZXJuYWxzL3VpZCI6MzUwfV0sMzMzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKSxhPXMoIi4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Iiksbz1iWyJfX2NvcmUtanNfc2hhcmVkX18iXXx8YSgiX19jb3JlLWpz'@; put 'X3NoYXJlZF9fIix7fSk7RS5leHBvcnRzPW99LHsiLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkiOjI0NiwiLi4vaW50ZXJuYWxzL2dsb2JhbCI6Mjc0fV0sMzM0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9pcy1wdXJlIiks'@; put 'YT1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlIik7KEUuZXhwb3J0cz1mdW5jdGlvbihvLHIpe3JldHVybiBhW29dfHwoYVtvXT12b2lkIDAhPT1yP3I6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4zMy4wIixtb2RlOmI/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdo'@; put 'dDoiXHhhOSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkiLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzMuMC9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSx7'@; put 'Ii4uL2ludGVybmFscy9pcy1wdXJlIjoyOTAsIi4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUiOjMzM31dLDMzNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvYW4tb2JqZWN0IiksYT1zKCIuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvciIpLG89'@; put 'cygiLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkIikscj1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSgic3BlY2llcyIpO0UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBsLG49Yih0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09bnx8byhsPWIobilb'@; put 'cl0pP2U6YShsKX19LHsiLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3IiOjIyMywiLi4vaW50ZXJuYWxzL2FuLW9iamVjdCI6MjI3LCIuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQiOjI4OCwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwzMzY6W2Z1bmN0'@; put 'aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uIiksYT1zKCIuLi9pbnRlcm5hbHMvZmFpbHMiKSxvPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKS5TdHJpbmc7RS5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s'@; put 'cyYmIWEoZnVuY3Rpb24oKXt2YXIgcj1TeW1ib2woInN5bWJvbCBkZXRlY3Rpb24iKTtyZXR1cm4hbyhyKXx8IShPYmplY3QocilpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmYiYmYjw0MX0pfSx7Ii4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbiI6MjU3LCIuLi9pbnRl'@; put 'cm5hbHMvZmFpbHMiOjI2MCwiLi4vaW50ZXJuYWxzL2dsb2JhbCI6Mjc0fV0sMzM3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIiksYT1zKCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIiksbz1zKCIuLi9pbnRlcm5h'@; put 'bHMvd2VsbC1rbm93bi1zeW1ib2wiKSxyPXMoIi4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4iKTtFLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1hKCJTeW1ib2wiKSxlPXQmJnQucHJvdG90eXBlLGw9ZSYmZS52YWx1ZU9mLG49bygidG9QcmltaXRpdmUiKTtlJiYhZVtuXSYmcihlLG4s'@; put 'ZnVuY3Rpb24oaSl7cmV0dXJuIGIobCx0aGlzKX0se2FyaXR5OjF9KX19LHsiLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiI6MjQ1LCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCI6MjY0LCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIjoyNjksIi4uL2ludGVybmFscy93ZWxsLWtu'@; put 'b3duLXN5bWJvbCI6MzU3fV0sMzM4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uIik7RS5leHBvcnRzPWImJiEhU3ltYm9sLmZvciYmISFTeW1ib2wua2V5Rm9yfSx7Ii4uL2ludGVybmFscy9z'@; put 'eW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uIjozMzZ9XSwzMzk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGIsYSxvLHIsdD1zKCIuLi9pbnRlcm5hbHMvZ2xvYmFsIiksZT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkiKSxsPXMoIi4uL2ludGVybmFscy9mdW5j'@; put 'dGlvbi1iaW5kLWNvbnRleHQiKSxuPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLGk9cygiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiKSxoPXMoIi4uL2ludGVybmFscy9mYWlscyIpLGY9cygiLi4vaW50ZXJuYWxzL2h0bWwiKSx1PXMoIi4uL2ludGVybmFscy9hcnJheS1z'@; put 'bGljZSIpLHA9cygiLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50IiksZD1zKCIuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCIpLHY9cygiLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MiKSxfPXMoIi4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSIp'@; put 'LEE9dC5zZXRJbW1lZGlhdGUsST10LmNsZWFySW1tZWRpYXRlLEw9dC5wcm9jZXNzLE49dC5EaXNwYXRjaCxQPXQuRnVuY3Rpb24sQj10Lk1lc3NhZ2VDaGFubmVsLCQ9dC5TdHJpbmcsRD0wLHg9e307aChmdW5jdGlvbigpe2I9dC5sb2NhdGlvbn0pO3ZhciBNPWZ1bmN0aW9uKGcpe2lmKGko'@; put 'eCxnKSl7dmFyIHk9eFtnXTtkZWxldGUgeFtnXSx5KCl9fSxqPWZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlvbigpe00oZyl9fSxjPWZ1bmN0aW9uKGcpe00oZy5kYXRhKX0sbT1mdW5jdGlvbihnKXt0LnBvc3RNZXNzYWdlKCQoZyksYi5wcm90b2NvbCsiLy8iK2IuaG9zdCl9O0EmJkl8fChB'@; put 'PWZ1bmN0aW9uKGcpe2QoYXJndW1lbnRzLmxlbmd0aCwxKTt2YXIgeT1uKGcpP2c6UChnKSx3PXUoYXJndW1lbnRzLDEpO3JldHVybiB4WysrRF09ZnVuY3Rpb24oKXtlKHksdm9pZCAwLHcpfSxhKEQpLER9LEk9ZnVuY3Rpb24oZyl7ZGVsZXRlIHhbZ119LF8/YT1mdW5jdGlvbihnKXtMLm5l'@; put 'eHRUaWNrKGooZykpfTpOJiZOLm5vdz9hPWZ1bmN0aW9uKGcpe04ubm93KGooZykpfTpCJiYhdj8ocj0obz1uZXcgQikucG9ydDIsby5wb3J0MS5vbm1lc3NhZ2U9YyxhPWwoci5wb3N0TWVzc2FnZSxyKSk6dC5hZGRFdmVudExpc3RlbmVyJiZuKHQucG9zdE1lc3NhZ2UpJiYhdC5pbXBvcnRT'@; put 'Y3JpcHRzJiZiJiYiZmlsZToiIT09Yi5wcm90b2NvbCYmIWgobSk/KGE9bSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGMsITEpKTphPSJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gcCgic2NyaXB0Iik/ZnVuY3Rpb24oZyl7Zi5hcHBlbmRDaGlsZChwKCJzY3JpcHQiKSkub25yZWFkeXN0'@; put 'YXRlY2hhbmdlPWZ1bmN0aW9uKCl7Zi5yZW1vdmVDaGlsZCh0aGlzKSxNKGcpfX06ZnVuY3Rpb24oZyl7c2V0VGltZW91dChqKGcpLDApfSksRS5leHBvcnRzPXtzZXQ6QSxjbGVhcjpJfX0seyIuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UiOjIzMSwiLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNy'@; put 'ZWF0ZS1lbGVtZW50IjoyNDksIi4uL2ludGVybmFscy9lbmdpbmUtaXMtaW9zIjoyNTMsIi4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSI6MjU0LCIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MCwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5IjoyNjEsIi4uL2ludGVybmFscy9mdW5jdGlv'@; put 'bi1iaW5kLWNvbnRleHQiOjI2MiwiLi4vaW50ZXJuYWxzL2dsb2JhbCI6Mjc0LCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSI6Mjc1LCIuLi9pbnRlcm5hbHMvaHRtbCI6Mjc4LCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiOjI4NSwiLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3Vt'@; put 'ZW50cy1sZW5ndGgiOjM1M31dLDM0MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eSIpLGE9TWF0aC5tYXgsbz1NYXRoLm1pbjtFLmV4cG9ydHM9ZnVuY3Rpb24ocix0KXt2YXIgZT1iKHIpO3JldHVybiBl'@; put 'PDA/YShlK3QsMCk6byhlLHQpfX0seyIuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eSI6MzQyfV0sMzQxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCIpLGE9cygiLi4vaW50ZXJuYWxzL3JlcXVpcmUt'@; put 'b2JqZWN0LWNvZXJjaWJsZSIpO0UuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gYihhKG8pKX19LHsiLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0IjoyODAsIi4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUiOjMyOX1dLDM0MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ug'@; put 'c3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvbWF0aC10cnVuYyIpO0UuZXhwb3J0cz1mdW5jdGlvbihhKXt2YXIgbz0rYTtyZXR1cm4gbyE9b3x8MD09PW8/MDpiKG8pfX0seyIuLi9pbnRlcm5hbHMvbWF0aC10cnVuYyI6MzAxfV0sMzQzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5IiksYT1NYXRoLm1pbjtFLmV4cG9ydHM9ZnVuY3Rpb24obyl7cmV0dXJuIG8+MD9hKGIobyksOTAwNzE5OTI1NDc0MDk5MSk6MH19LHsiLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkiOjM0'@; put 'Mn1dLDM0NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlIiksYT1PYmplY3Q7RS5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiBhKGIobykpfX0seyIuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3Qt'@; put 'Y29lcmNpYmxlIjozMjl9XSwzNDU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiKSxhPXMoIi4uL2ludGVybmFscy9pcy1vYmplY3QiKSxvPXMoIi4uL2ludGVybmFscy9pcy1zeW1ib2wiKSxyPXMoIi4uL2ludGVybmFs'@; put 'cy9nZXQtbWV0aG9kIiksdD1zKCIuLi9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlIiksZT1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSxsPVR5cGVFcnJvcixuPWUoInRvUHJpbWl0aXZlIik7RS5leHBvcnRzPWZ1bmN0aW9uKGksaCl7aWYoIWEoaSl8fG8oaSkp'@; put 'cmV0dXJuIGk7dmFyIGYsdT1yKGksbik7aWYodSl7aWYodm9pZCAwPT09aCYmKGg9ImRlZmF1bHQiKSxmPWIodSxpLGgpLCFhKGYpfHxvKGYpKXJldHVybiBmO3Rocm93IG5ldyBsKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX1yZXR1cm4gdm9pZCAwPT09aCYm'@; put 'KGg9Im51bWJlciIpLHQoaSxoKX19LHsiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiOjI2NCwiLi4vaW50ZXJuYWxzL2dldC1tZXRob2QiOjI3MywiLi4vaW50ZXJuYWxzL2lzLW9iamVjdCI6Mjg5LCIuLi9pbnRlcm5hbHMvaXMtc3ltYm9sIjoyOTIsIi4uL2ludGVybmFscy9vcmRpbmFy'@; put 'eS10by1wcmltaXRpdmUiOjMyMCwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwzNDY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZSIpLGE9cygiLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCIpO0UuZXhw'@; put 'b3J0cz1mdW5jdGlvbihvKXt2YXIgcj1iKG8sInN0cmluZyIpO3JldHVybiBhKHIpP3I6cisiIn19LHsiLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCI6MjkyLCIuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlIjozNDV9XSwzNDc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9e307'@; put 'YltzKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSgidG9TdHJpbmdUYWciKV09InoiLEUuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcoYil9LHsiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTd9XSwzNDg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2NsYXNzb2YiKSxhPVN0cmluZztFLmV4cG9ydHM9ZnVuY3Rpb24obyl7aWYoIlN5bWJvbCI9PT1iKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIGEobyl9fSx7'@; put 'Ii4uL2ludGVybmFscy9jbGFzc29mIjoyMzZ9XSwzNDk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9U3RyaW5nO0UuZXhwb3J0cz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGIoYSl9Y2F0Y2h7cmV0dXJuIk9iamVjdCJ9fX0se31dLDM1MDpbZnVuY3Rpb24ocyxFLFMpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksYT0wLG89TWF0aC5yYW5kb20oKSxyPWIoMS4udG9TdHJpbmcpO0UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PXQ/IiI6dCkrIilfIityKCsrYStvLDM2'@; put 'KX19LHsiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4fV0sMzUxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uIik7RS5leHBvcnRzPWImJiFTeW1ib2wuc2hhbSYmInN5'@; put 'bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3J9LHsiLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24iOjMzNn1dLDM1MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMiKSxhPXMoIi4uL2ludGVy'@; put 'bmFscy9mYWlscyIpO0UuZXhwb3J0cz1iJiZhKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT09T2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KX0seyIuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMiOjI0'@; put 'NywiLi4vaW50ZXJuYWxzL2ZhaWxzIjoyNjB9XSwzNTM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9VHlwZUVycm9yO0UuZXhwb3J0cz1mdW5jdGlvbihhLG8pe2lmKGE8byl0aHJvdyBuZXcgYigiTm90IGVub3VnaCBhcmd1bWVudHMiKTtyZXR1cm4gYX19LHt9XSwzNTQ6'@; put 'W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2dsb2JhbCIpLGE9cygiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIiksbz1iLldlYWtNYXA7RS5leHBvcnRzPWEobykmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcobykpfSx7Ii4uL2ludGVybmFs'@; put 'cy9nbG9iYWwiOjI3NCwiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODV9XSwzNTU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL3BhdGgiKSxhPXMoIi4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Iiksbz1zKCIuLi9pbnRlcm5hbHMv'@; put 'd2VsbC1rbm93bi1zeW1ib2wtd3JhcHBlZCIpLHI9cygiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiKS5mO0UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1iLlN5bWJvbHx8KGIuU3ltYm9sPXt9KTthKGUsdCl8fHIoZSx0LHt2YWx1ZTpvLmYodCl9KX19LHsiLi4vaW50'@; put 'ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiOjI3NSwiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiOjMwOCwiLi4vaW50ZXJuYWxzL3BhdGgiOjMyMiwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQiOjM1Nn1dLDM1NjpbZnVuY3Rpb24ocyxFLFMpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKTtTLmY9Yn0seyIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiOjM1N31dLDM1NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZ2xvYmFsIiks'@; put 'YT1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkIiksbz1zKCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSIpLHI9cygiLi4vaW50ZXJuYWxzL3VpZCIpLHQ9cygiLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24iKSxlPXMoIi4uL2ludGVybmFscy91c2Utc3ltYm9s'@; put 'LWFzLXVpZCIpLGw9Yi5TeW1ib2wsbj1hKCJ3a3MiKSxpPWU/bC5mb3J8fGw6bCYmbC53aXRob3V0U2V0dGVyfHxyO0UuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm4gbyhuLGgpfHwobltoXT10JiZvKGwsaCk/bFtoXTppKCJTeW1ib2wuIitoKSksbltoXX19LHsiLi4vaW50ZXJuYWxzL2ds'@; put 'b2JhbCI6Mjc0LCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSI6Mjc1LCIuLi9pbnRlcm5hbHMvc2hhcmVkIjozMzQsIi4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uIjozMzYsIi4uL2ludGVybmFscy91aWQiOjM1MCwiLi4vaW50ZXJuYWxzL3VzZS1zeW1i'@; put 'b2wtYXMtdWlkIjozNTF9XSwzNTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2V4cG9ydCIpLGE9cygiLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbiIpLmZpbmRJbmRleCxvPXMoIi4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMi'@; put 'KSxyPSEwOyJmaW5kSW5kZXgiaW5bXSYmQXJyYXkoMSkuZmluZEluZGV4KGZ1bmN0aW9uKCl7cj0hMX0pLGIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpyfSx7ZmluZEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiBhKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRz'@; put 'WzFdOnZvaWQgMCl9fSksbygiZmluZEluZGV4Iil9LHsiLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcyI6MjI1LCIuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uIjoyMjksIi4uL2ludGVybmFscy9leHBvcnQiOjI1OX1dLDM1OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uIikuZmluZCxvPXMoIi4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMiKSxyPSEwOyJmaW5kImluW10mJkFycmF5KDEpLmZpbmQoZnVuY3Rpb24oKXtyPSExfSksYih7'@; put 'dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnJ9LHtmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBhKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksbygiZmluZCIpfSx7Ii4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMiOjIyNSwiLi4v'@; put 'aW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbiI6MjI5LCIuLi9pbnRlcm5hbHMvZXhwb3J0IjoyNTl9XSwzNjA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2V4cG9ydCIpLGE9cygiLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzIikuaW5jbHVk'@; put 'ZXMsbz1zKCIuLi9pbnRlcm5hbHMvZmFpbHMiKSxyPXMoIi4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMiKTtiKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6byhmdW5jdGlvbigpe3JldHVybiFBcnJheSgxKS5pbmNsdWRlcygpfSl9LHtpbmNsdWRlczpmdW5jdGlvbih0'@; put 'KXtyZXR1cm4gYSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLHIoImluY2x1ZGVzIil9LHsiLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcyI6MjI1LCIuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMiOjIyOCwiLi4vaW50ZXJuYWxzL2V4'@; put 'cG9ydCI6MjU5LCIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MH1dLDM2MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QiKSxhPXMoIi4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMiKSxvPXMoIi4uL2ludGVy'@; put 'bmFscy9pdGVyYXRvcnMiKSxyPXMoIi4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSIpLHQ9cygiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkiKS5mLGU9cygiLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWRlZmluZSIpLGw9cygiLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJl'@; put 'c3VsdC1vYmplY3QiKSxuPXMoIi4uL2ludGVybmFscy9pcy1wdXJlIiksaT1zKCIuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMiKSxoPXIuc2V0LGY9ci5nZXR0ZXJGb3IoIkFycmF5IEl0ZXJhdG9yIik7RS5leHBvcnRzPWUoQXJyYXksIkFycmF5IixmdW5jdGlvbihwLGQpe2godGhpcyx7dHlw'@; put 'ZToiQXJyYXkgSXRlcmF0b3IiLHRhcmdldDpiKHApLGluZGV4OjAsa2luZDpkfSl9LGZ1bmN0aW9uKCl7dmFyIHA9Zih0aGlzKSxkPXAudGFyZ2V0LHY9cC5raW5kLF89cC5pbmRleCsrO2lmKCFkfHxfPj1kLmxlbmd0aClyZXR1cm4gcC50YXJnZXQ9dm9pZCAwLGwodm9pZCAwLCEwKTtzd2l0'@; put 'Y2godil7Y2FzZSJrZXlzIjpyZXR1cm4gbChfLCExKTtjYXNlInZhbHVlcyI6cmV0dXJuIGwoZFtfXSwhMSl9cmV0dXJuIGwoW18sZFtfXV0sITEpfSwidmFsdWVzIik7dmFyIHU9by5Bcmd1bWVudHM9by5BcnJheTtpZihhKCJrZXlzIiksYSgidmFsdWVzIiksYSgiZW50cmllcyIpLCFuJiZp'@; put 'JiYidmFsdWVzIiE9PXUubmFtZSl0cnl7dCh1LCJuYW1lIix7dmFsdWU6InZhbHVlcyJ9KX1jYXRjaHt9fSx7Ii4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMiOjIyNSwiLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QiOjI0MCwiLi4vaW50ZXJuYWxzL2Rlc2Ny'@; put 'aXB0b3JzIjoyNDcsIi4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSI6MjgyLCIuLi9pbnRlcm5hbHMvaXMtcHVyZSI6MjkwLCIuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lIjoyOTYsIi4uL2ludGVybmFscy9pdGVyYXRvcnMiOjI5OCwiLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUt'@; put 'cHJvcGVydHkiOjMwOCwiLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0IjozNDF9XSwzNjI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2V4cG9ydCIpLGE9cygiLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiIpLG89cygiLi4vaW50ZXJu'@; put 'YWxzL2Z1bmN0aW9uLWFwcGx5Iikscj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCIpLHQ9cygiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyIpLGU9cygiLi4vaW50ZXJuYWxzL2ZhaWxzIiksbD1zKCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiKSxuPXMoIi4uL2lu'@; put 'dGVybmFscy9pcy1zeW1ib2wiKSxpPXMoIi4uL2ludGVybmFscy9hcnJheS1zbGljZSIpLGg9cygiLi4vaW50ZXJuYWxzL2dldC1qc29uLXJlcGxhY2VyLWZ1bmN0aW9uIiksZj1zKCIuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbiIpLHU9U3RyaW5nLHA9YSgiSlNP'@; put 'TiIsInN0cmluZ2lmeSIpLGQ9dCgvLi8uZXhlYyksdj10KCIiLmNoYXJBdCksXz10KCIiLmNoYXJDb2RlQXQpLEE9dCgiIi5yZXBsYWNlKSxJPXQoMS4udG9TdHJpbmcpLEw9L1tcdUQ4MDAtXHVERkZGXS9nLE49L15bXHVEODAwLVx1REJGRl0kLyxQPS9eW1x1REMwMC1cdURGRkZdJC8sQj0h'@; put 'Znx8ZShmdW5jdGlvbigpe3ZhciBNPWEoIlN5bWJvbCIpKCJzdHJpbmdpZnkgZGV0ZWN0aW9uIik7cmV0dXJuIltudWxsXSIhPT1wKFtNXSl8fCJ7fSIhPT1wKHthOk19KXx8Int9IiE9PXAoT2JqZWN0KE0pKX0pLCQ9ZShmdW5jdGlvbigpe3JldHVybiciXFx1ZGYwNlxcdWQ4MzQiJyE9PXAo'@; put 'Ilx1ZGYwNlx1ZDgzNCIpfHwnIlxcdWRlYWQiJyE9PXAoIlx1ZGVhZCIpfSksRD1mdW5jdGlvbihNLGope3ZhciBjPWkoYXJndW1lbnRzKSxtPWgoaik7aWYobChtKXx8dm9pZCAwIT09TSYmIW4oTSkpcmV0dXJuIGNbMV09ZnVuY3Rpb24oZyx5KXtpZihsKG0pJiYoeT1yKG0sdGhpcyx1KGcp'@; put 'LHkpKSwhbih5KSlyZXR1cm4geX0sbyhwLG51bGwsYyl9LHg9ZnVuY3Rpb24oTSxqLGMpe3ZhciBtPXYoYyxqLTEpLGc9dihjLGorMSk7cmV0dXJuIGQoTixNKSYmIWQoUCxnKXx8ZChQLE0pJiYhZChOLG0pPyJcXHUiK0koXyhNLDApLDE2KTpNfTtwJiZiKHt0YXJnZXQ6IkpTT04iLHN0YXQ6'@; put 'ITAsYXJpdHk6Myxmb3JjZWQ6Qnx8JH0se3N0cmluZ2lmeTpmdW5jdGlvbihNLGosYyl7dmFyIG09aShhcmd1bWVudHMpLGc9byhCP0Q6cCxudWxsLG0pO3JldHVybiAkJiYic3RyaW5nIj09dHlwZW9mIGc/QShnLEwseCk6Z319KX0seyIuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UiOjIzMSwi'@; put 'Li4vaW50ZXJuYWxzL2V4cG9ydCI6MjU5LCIuLi9pbnRlcm5hbHMvZmFpbHMiOjI2MCwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5IjoyNjEsIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiOjI2OCwiLi4vaW50'@; put 'ZXJuYWxzL2dldC1idWlsdC1pbiI6MjY5LCIuLi9pbnRlcm5hbHMvZ2V0LWpzb24tcmVwbGFjZXItZnVuY3Rpb24iOjI3MiwiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODUsIi4uL2ludGVybmFscy9pcy1zeW1ib2wiOjI5MiwiLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1k'@; put 'ZXRlY3Rpb24iOjMzNn1dLDM2MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtzKCIuLi9pbnRlcm5hbHMvZXhwb3J0Iikoe3RhcmdldDoiTnVtYmVyIixzdGF0OiEwfSx7aXNOYU46ZnVuY3Rpb24oYil7cmV0dXJuIGIhPWJ9fSl9LHsiLi4vaW50ZXJuYWxzL2V4cG9ydCI6MjU5fV0s'@; put 'MzY0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9leHBvcnQiKSxhPXMoIi4uL2ludGVybmFscy9vYmplY3QtYXNzaWduIik7Yih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsYXJpdHk6Mixmb3JjZWQ6T2JqZWN0LmFzc2lnbiE9PWF9LHthc3Np'@; put 'Z246YX0pfSx7Ii4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24iOjMwNX1dLDM2NTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0'@; put 'cnVjdG9yLWRldGVjdGlvbiIpLG89cygiLi4vaW50ZXJuYWxzL2ZhaWxzIikscj1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scyIpLHQ9cygiLi4vaW50ZXJuYWxzL3RvLW9iamVjdCIpO2Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohYXx8'@; put 'byhmdW5jdGlvbigpe3IuZigxKX0pfSx7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKGUpe3ZhciBsPXIuZjtyZXR1cm4gbD9sKHQoZSkpOltdfX0pfSx7Ii4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2ZhaWxzIjoyNjAsIi4uL2ludGVybmFscy9vYmplY3Qt'@; put 'Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzIjozMTIsIi4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uIjozMzYsIi4uL2ludGVybmFscy90by1vYmplY3QiOjM0NH1dLDM2NjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMv'@; put 'ZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Iiksbz1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMiKTtiKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6cygiLi4vaW50ZXJuYWxzL2ZhaWxzIikoZnVuY3Rpb24oKXtvKDEpfSl9LHtrZXlzOmZ1bmN0aW9uKHIp'@; put 'e3JldHVybiBvKGEocikpfX0pfSx7Ii4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2ZhaWxzIjoyNjAsIi4uL2ludGVybmFscy9vYmplY3Qta2V5cyI6MzE2LCIuLi9pbnRlcm5hbHMvdG8tb2JqZWN0IjozNDR9XSwzNjc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmlj'@; put 'dCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2V4cG9ydCIpLGE9cygiLi4vaW50ZXJuYWxzL29iamVjdC10by1hcnJheSIpLnZhbHVlcztiKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se3ZhbHVlczpmdW5jdGlvbihvKXtyZXR1cm4gYShvKX19KX0seyIuLi9pbnRlcm5hbHMvZXhwb3J0Ijoy'@; put 'NTksIi4uL2ludGVybmFscy9vYmplY3QtdG8tYXJyYXkiOjMxOX1dLDM2ODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCIpLG89cygiLi4vaW50ZXJuYWxzL2EtY2FsbGFi'@; put 'bGUiKSxyPXMoIi4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5IiksdD1zKCIuLi9pbnRlcm5hbHMvcGVyZm9ybSIpLGU9cygiLi4vaW50ZXJuYWxzL2l0ZXJhdGUiKTtiKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOnMoIi4uL2ludGVybmFscy9wcm9taXNlLXN0'@; put 'YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbiIpfSx7YWxsOmZ1bmN0aW9uKGwpe3ZhciBuPXRoaXMsaT1yLmYobiksaD1pLnJlc29sdmUsZj1pLnJlamVjdCx1PXQoZnVuY3Rpb24oKXt2YXIgcD1vKG4ucmVzb2x2ZSksZD1bXSx2PTAsXz0xO2UobCxmdW5jdGlvbihBKXt2YXIgST12KyssTD0h'@; put 'MTtfKyssYShwLG4sQSkudGhlbihmdW5jdGlvbihOKXtMfHwoTD0hMCxkW0ldPU4sLS1ffHxoKGQpKX0sZil9KSwtLV98fGgoZCl9KTtyZXR1cm4gdS5lcnJvciYmZih1LnZhbHVlKSxpLnByb21pc2V9fSl9LHsiLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUiOjIyMiwiLi4vaW50ZXJuYWxzL2V4'@; put 'cG9ydCI6MjU5LCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCI6MjY0LCIuLi9pbnRlcm5hbHMvaXRlcmF0ZSI6MjkzLCIuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eSI6MzAzLCIuLi9pbnRlcm5hbHMvcGVyZm9ybSI6MzIzLCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0'@; put 'aWNzLWluY29ycmVjdC1pdGVyYXRpb24iOjMyN31dLDM2OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvaXMtcHVyZSIpLG89cygiLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0'@; put 'ZWN0aW9uIikuQ09OU1RSVUNUT1Iscj1zKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IiKSx0PXMoIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iKSxlPXMoIi4uL2ludGVybmFscy9pcy1jYWxsYWJsZSIpLGw9cygiLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1p'@; put 'biIpLG49ciYmci5wcm90b3R5cGU7aWYoYih7dGFyZ2V0OiJQcm9taXNlIixwcm90bzohMCxmb3JjZWQ6byxyZWFsOiEwfSx7Y2F0Y2g6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsaCl9fSksIWEmJmUocikpe3ZhciBpPXQoIlByb21pc2UiKS5wcm90b3R5cGUuY2F0Y2g7'@; put 'bi5jYXRjaCE9PWkmJmwobiwiY2F0Y2giLGkse3Vuc2FmZTohMH0pfX0seyIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIjoyNDUsIi4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiI6MjY5LCIuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUiOjI4'@; put 'NSwiLi4vaW50ZXJuYWxzL2lzLXB1cmUiOjI5MCwiLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uIjozMjQsIi4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvciI6MzI1fV0sMzcwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBi'@; put 'LGEsbyxyPXMoIi4uL2ludGVybmFscy9leHBvcnQiKSx0PXMoIi4uL2ludGVybmFscy9pcy1wdXJlIiksZT1zKCIuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUiKSxsPXMoIi4uL2ludGVybmFscy9nbG9iYWwiKSxuPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIiksaT1zKCIuLi9p'@; put 'bnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIiksaD1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YiKSxmPXMoIi4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyIpLHU9cygiLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzIikscD1zKCIuLi9pbnRlcm5hbHMvYS1jYWxs'@; put 'YWJsZSIpLGQ9cygiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIiksdj1zKCIuLi9pbnRlcm5hbHMvaXMtb2JqZWN0IiksXz1zKCIuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UiKSxBPXMoIi4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yIiksST1zKCIuLi9pbnRlcm5hbHMvdGFzayIp'@; put 'LnNldCxMPXMoIi4uL2ludGVybmFscy9taWNyb3Rhc2siKSxOPXMoIi4uL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMiKSxQPXMoIi4uL2ludGVybmFscy9wZXJmb3JtIiksQj1zKCIuLi9pbnRlcm5hbHMvcXVldWUiKSwkPXMoIi4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSIpLEQ9'@; put 'cygiLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yIikseD1zKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24iKSxNPXMoIi4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Iiksaj14LkNPTlNUUlVDVE9SLGM9eC5SRUpFQ1RJ'@; put 'T05fRVZFTlQsbT14LlNVQkNMQVNTSU5HLGc9JC5nZXR0ZXJGb3IoIlByb21pc2UiKSx5PSQuc2V0LHc9RCYmRC5wcm90b3R5cGUsaz1ELE89dyx6PWwuVHlwZUVycm9yLFU9bC5kb2N1bWVudCxWPWwucHJvY2VzcyxSPU0uZixIPVIsVD0hIShVJiZVLmNyZWF0ZUV2ZW50JiZsLmRpc3BhdGNo'@; put 'RXZlbnQpLEM9ZnVuY3Rpb24oRyl7dmFyIGV0O3JldHVybiEoIXYoRyl8fCFkKGV0PUcudGhlbikpJiZldH0sRj1mdW5jdGlvbihHLGV0KXt2YXIgbnQsaXQsb3QsaHQ9ZXQudmFsdWUsZnQ9MT09PWV0LnN0YXRlLHB0PWZ0P0cub2s6Ry5mYWlsLFR0PUcucmVzb2x2ZSx5dD1HLnJlamVjdCx3'@; put 'dD1HLmRvbWFpbjt0cnl7cHQ/KGZ0fHwoMj09PWV0LnJlamVjdGlvbiYmcnQoZXQpLGV0LnJlamVjdGlvbj0xKSwhMD09PXB0P250PWh0Oih3dCYmd3QuZW50ZXIoKSxudD1wdChodCksd3QmJih3dC5leGl0KCksb3Q9ITApKSxudD09PUcucHJvbWlzZT95dChuZXcgeigiUHJvbWlzZS1jaGFp'@; put 'biBjeWNsZSIpKTooaXQ9QyhudCkpP24oaXQsbnQsVHQseXQpOlR0KG50KSk6eXQoaHQpfWNhdGNoKHF0KXt3dCYmIW90JiZ3dC5leGl0KCkseXQocXQpfX0scT1mdW5jdGlvbihHLGV0KXtHLm5vdGlmaWVkfHwoRy5ub3RpZmllZD0hMCxMKGZ1bmN0aW9uKCl7Zm9yKHZhciBudCxpdD1HLnJl'@; put 'YWN0aW9ucztudD1pdC5nZXQoKTspRihudCxHKTtHLm5vdGlmaWVkPSExLGV0JiYhRy5yZWplY3Rpb24mJlgoRyl9KSl9LFk9ZnVuY3Rpb24oRyxldCxudCl7dmFyIGl0LG90O1Q/KChpdD1VLmNyZWF0ZUV2ZW50KCJFdmVudCIpKS5wcm9taXNlPWV0LGl0LnJlYXNvbj1udCxpdC5pbml0RXZl'@; put 'bnQoRywhMSwhMCksbC5kaXNwYXRjaEV2ZW50KGl0KSk6aXQ9e3Byb21pc2U6ZXQscmVhc29uOm50fSwhYyYmKG90PWxbIm9uIitHXSk/b3QoaXQpOiJ1bmhhbmRsZWRyZWplY3Rpb24iPT09RyYmTigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixudCl9LFg9ZnVuY3Rpb24oRyl7bihJ'@; put 'LGwsZnVuY3Rpb24oKXt2YXIgZXQsbnQ9Ry5mYWNhZGUsaXQ9Ry52YWx1ZTtpZihLKEcpJiYoZXQ9UChmdW5jdGlvbigpe2U/Vi5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLGl0LG50KTpZKCJ1bmhhbmRsZWRyZWplY3Rpb24iLG50LGl0KX0pLEcucmVqZWN0aW9uPWV8fEsoRyk/MjoxLGV0'@; put 'LmVycm9yKSl0aHJvdyBldC52YWx1ZX0pfSxLPWZ1bmN0aW9uKEcpe3JldHVybiAxIT09Ry5yZWplY3Rpb24mJiFHLnBhcmVudH0scnQ9ZnVuY3Rpb24oRyl7bihJLGwsZnVuY3Rpb24oKXt2YXIgZXQ9Ry5mYWNhZGU7ZT9WLmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLGV0KTpZKCJyZWplY3Rp'@; put 'b25oYW5kbGVkIixldCxHLnZhbHVlKX0pfSx0dD1mdW5jdGlvbihHLGV0LG50KXtyZXR1cm4gZnVuY3Rpb24oaXQpe0coZXQsaXQsbnQpfX0sVz1mdW5jdGlvbihHLGV0LG50KXtHLmRvbmV8fChHLmRvbmU9ITAsbnQmJihHPW50KSxHLnZhbHVlPWV0LEcuc3RhdGU9MixxKEcsITApKX0sUT1m'@; put 'dW5jdGlvbihHLGV0LG50KXtpZighRy5kb25lKXtHLmRvbmU9ITAsbnQmJihHPW50KTt0cnl7aWYoRy5mYWNhZGU9PT1ldCl0aHJvdyBuZXcgeigiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGYiKTt2YXIgaXQ9QyhldCk7aXQ/TChmdW5jdGlvbigpe3ZhciBvdD17ZG9uZTohMX07'@; put 'dHJ5e24oaXQsZXQsdHQoUSxvdCxHKSx0dChXLG90LEcpKX1jYXRjaChodCl7VyhvdCxodCxHKX19KTooRy52YWx1ZT1ldCxHLnN0YXRlPTEscShHLCExKSl9Y2F0Y2gob3Qpe1coe2RvbmU6ITF9LG90LEcpfX19O2lmKGomJihPPShrPWZ1bmN0aW9uKEcpe18odGhpcyxPKSxwKEcpLG4oYix0'@; put 'aGlzKTt2YXIgZXQ9Zyh0aGlzKTt0cnl7Ryh0dChRLGV0KSx0dChXLGV0KSl9Y2F0Y2gobnQpe1coZXQsbnQpfX0pLnByb3RvdHlwZSwoYj1mdW5jdGlvbihHKXt5KHRoaXMse3R5cGU6IlByb21pc2UiLGRvbmU6ITEsbm90aWZpZWQ6ITEscGFyZW50OiExLHJlYWN0aW9uczpuZXcgQixyZWpl'@; put 'Y3Rpb246ITEsc3RhdGU6MCx2YWx1ZTp2b2lkIDB9KX0pLnByb3RvdHlwZT1pKE8sInRoZW4iLGZ1bmN0aW9uKEcsZXQpe3ZhciBudD1nKHRoaXMpLGl0PVIoQSh0aGlzLGspKTtyZXR1cm4gbnQucGFyZW50PSEwLGl0Lm9rPSFkKEcpfHxHLGl0LmZhaWw9ZChldCkmJmV0LGl0LmRvbWFpbj1l'@; put 'P1YuZG9tYWluOnZvaWQgMCwwPT09bnQuc3RhdGU/bnQucmVhY3Rpb25zLmFkZChpdCk6TChmdW5jdGlvbigpe0YoaXQsbnQpfSksaXQucHJvbWlzZX0pLGE9ZnVuY3Rpb24oKXt2YXIgRz1uZXcgYixldD1nKEcpO3RoaXMucHJvbWlzZT1HLHRoaXMucmVzb2x2ZT10dChRLGV0KSx0aGlzLnJl'@; put 'amVjdD10dChXLGV0KX0sTS5mPVI9ZnVuY3Rpb24oRyl7cmV0dXJuIEc9PT1rfHx2b2lkIDA9PT1HP25ldyBhKEcpOkgoRyl9LCF0JiZkKEQpJiZ3IT09T2JqZWN0LnByb3RvdHlwZSkpe289dy50aGVuLG18fGkodywidGhlbiIsZnVuY3Rpb24oRyxldCl7dmFyIG50PXRoaXM7cmV0dXJuIG5l'@; put 'dyBrKGZ1bmN0aW9uKGl0LG90KXtuKG8sbnQsaXQsb3QpfSkudGhlbihHLGV0KX0se3Vuc2FmZTohMH0pO3RyeXtkZWxldGUgdy5jb25zdHJ1Y3Rvcn1jYXRjaHt9aCYmaCh3LE8pfXIoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCx3cmFwOiEwLGZvcmNlZDpqfSx7UHJvbWlzZTprfSksZihr'@; put 'LCJQcm9taXNlIiwhMSwhMCksdSgiUHJvbWlzZSIpfSx7Ii4uL2ludGVybmFscy9hLWNhbGxhYmxlIjoyMjIsIi4uL2ludGVybmFscy9hbi1pbnN0YW5jZSI6MjI2LCIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIjoyNDUsIi4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSI6MjU0LCIu'@; put 'Li9pbnRlcm5hbHMvZXhwb3J0IjoyNTksIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9nbG9iYWwiOjI3NCwiLi4vaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycyI6Mjc3LCIuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUiOjI4MiwiLi4vaW50ZXJu'@; put 'YWxzL2lzLWNhbGxhYmxlIjoyODUsIi4uL2ludGVybmFscy9pcy1vYmplY3QiOjI4OSwiLi4vaW50ZXJuYWxzL2lzLXB1cmUiOjI5MCwiLi4vaW50ZXJuYWxzL21pY3JvdGFzayI6MzAyLCIuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eSI6MzAzLCIuLi9pbnRlcm5hbHMvb2Jq'@; put 'ZWN0LXNldC1wcm90b3R5cGUtb2YiOjMxOCwiLi4vaW50ZXJuYWxzL3BlcmZvcm0iOjMyMywiLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uIjozMjQsIi4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvciI6MzI1LCIuLi9pbnRlcm5hbHMvcXVl'@; put 'dWUiOjMyOCwiLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzIjozMzAsIi4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyI6MzMxLCIuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvciI6MzM1LCIuLi9pbnRlcm5hbHMvdGFzayI6MzM5fV0sMzcxOltmdW5jdGlvbihzLEUsUyl7InVz'@; put 'ZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9leHBvcnQiKSxhPXMoIi4uL2ludGVybmFscy9pcy1wdXJlIiksbz1zKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IiKSxyPXMoIi4uL2ludGVybmFscy9mYWlscyIpLHQ9cygiLi4vaW50ZXJuYWxzL2dldC1i'@; put 'dWlsdC1pbiIpLGU9cygiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIiksbD1zKCIuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvciIpLG49cygiLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZSIpLGk9cygiLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiIpLGg9byYmby5wcm90'@; put 'b3R5cGU7aWYoYih7dGFyZ2V0OiJQcm9taXNlIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohIW8mJnIoZnVuY3Rpb24oKXtoLmZpbmFsbHkuY2FsbCh7dGhlbjpmdW5jdGlvbigpe319LGZ1bmN0aW9uKCl7fSl9KX0se2ZpbmFsbHk6ZnVuY3Rpb24odSl7dmFyIHA9bCh0aGlzLHQoIlByb21p'@; put 'c2UiKSksZD1lKHUpO3JldHVybiB0aGlzLnRoZW4oZD9mdW5jdGlvbih2KXtyZXR1cm4gbihwLHUoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiB2fSl9OnUsZD9mdW5jdGlvbih2KXtyZXR1cm4gbihwLHUoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IHZ9KX06dSl9fSksIWEmJmUobykpe3Zh'@; put 'ciBmPXQoIlByb21pc2UiKS5wcm90b3R5cGUuZmluYWxseTtoLmZpbmFsbHkhPT1mJiZpKGgsImZpbmFsbHkiLGYse3Vuc2FmZTohMH0pfX0seyIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIjoyNDUsIi4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2ZhaWxzIjoy'@; put 'NjAsIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iOjI2OSwiLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlIjoyODUsIi4uL2ludGVybmFscy9pcy1wdXJlIjoyOTAsIi4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvciI6MzI1LCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNv'@; put 'bHZlIjozMjYsIi4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yIjozMzV9XSwzNzI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7cygiLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yIikscygiLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbCIpLHMoIi4uL21vZHVs'@; put 'ZXMvZXMucHJvbWlzZS5jYXRjaCIpLHMoIi4uL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlIikscygiLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdCIpLHMoIi4uL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlIil9LHsiLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbCI6MzY4LCIuLi9tb2R1'@; put 'bGVzL2VzLnByb21pc2UuY2F0Y2giOjM2OSwiLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yIjozNzAsIi4uL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlIjozNzMsIi4uL21vZHVsZXMvZXMucHJvbWlzZS5yZWplY3QiOjM3NCwiLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlc29sdmUi'@; put 'OjM3NX1dLDM3MzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCIpLG89cygiLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUiKSxyPXMoIi4uL2ludGVybmFscy9uZXctcHJvbWlz'@; put 'ZS1jYXBhYmlsaXR5IiksdD1zKCIuLi9pbnRlcm5hbHMvcGVyZm9ybSIpLGU9cygiLi4vaW50ZXJuYWxzL2l0ZXJhdGUiKTtiKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOnMoIi4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbiIpfSx7cmFj'@; put 'ZTpmdW5jdGlvbihsKXt2YXIgbj10aGlzLGk9ci5mKG4pLGg9aS5yZWplY3QsZj10KGZ1bmN0aW9uKCl7dmFyIHU9byhuLnJlc29sdmUpO2UobCxmdW5jdGlvbihwKXthKHUsbixwKS50aGVuKGkucmVzb2x2ZSxoKX0pfSk7cmV0dXJuIGYuZXJyb3ImJmgoZi52YWx1ZSksaS5wcm9taXNlfX0p'@; put 'fSx7Ii4uL2ludGVybmFscy9hLWNhbGxhYmxlIjoyMjIsIi4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwiOjI2NCwiLi4vaW50ZXJuYWxzL2l0ZXJhdGUiOjI5MywiLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkiOjMwMywiLi4v'@; put 'aW50ZXJuYWxzL3BlcmZvcm0iOjMyMywiLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uIjozMjd9XSwzNzQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2V4cG9ydCIpLGE9cygiLi4vaW50ZXJuYWxzL2Z1'@; put 'bmN0aW9uLWNhbGwiKSxvPXMoIi4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Iik7Yih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpzKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24iKS5DT05TVFJVQ1RPUn0se3JlamVjdDpmdW5j'@; put 'dGlvbihyKXt2YXIgdD1vLmYodGhpcyk7cmV0dXJuIGEodC5yZWplY3Qsdm9pZCAwLHIpLHQucHJvbWlzZX19KX0seyIuLi9pbnRlcm5hbHMvZXhwb3J0IjoyNTksIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Ijoz'@; put 'MDMsIi4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbiI6MzI0fV0sMzc1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9leHBvcnQiKSxhPXMoIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iKSxvPXMoIi4uL2ludGVy'@; put 'bmFscy9pcy1wdXJlIikscj1zKCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IiKSx0PXMoIi4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbiIpLkNPTlNUUlVDVE9SLGU9cygiLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZSIpLGw9YSgi'@; put 'UHJvbWlzZSIpLG49byYmIXQ7Yih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpvfHx0fSx7cmVzb2x2ZTpmdW5jdGlvbihpKXtyZXR1cm4gZShuJiZ0aGlzPT09bD9yOnRoaXMsaSl9fSl9LHsiLi4vaW50ZXJuYWxzL2V4cG9ydCI6MjU5LCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0'@; put 'LWluIjoyNjksIi4uL2ludGVybmFscy9pcy1wdXJlIjoyOTAsIi4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbiI6MzI0LCIuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IiOjMyNSwiLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZSI6MzI2'@; put 'fV0sMzc2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9leHBvcnQiKSxhPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiKSxvPXMoIi4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCIpLHI9UmFuZ2VFcnJvcix0PVN0'@; put 'cmluZy5mcm9tQ2hhckNvZGUsZT1TdHJpbmcuZnJvbUNvZGVQb2ludCxsPWEoW10uam9pbik7Yih7dGFyZ2V0OiJTdHJpbmciLHN0YXQ6ITAsYXJpdHk6MSxmb3JjZWQ6ISFlJiYxIT09ZS5sZW5ndGh9LHtmcm9tQ29kZVBvaW50OmZ1bmN0aW9uKG4pe2Zvcih2YXIgaSxoPVtdLGY9YXJndW1l'@; put 'bnRzLmxlbmd0aCx1PTA7Zj51Oyl7aWYoaT0rYXJndW1lbnRzW3UrK10sbyhpLDExMTQxMTEpIT09aSl0aHJvdyBuZXcgcihpKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO2hbdV09aTw2NTUzNj90KGkpOnQoNTUyOTYrKChpLT02NTUzNik+PjEwKSxpJTEwMjQrNTYzMjApfXJldHVy'@; put 'biBsKGgsIiIpfX0pfSx7Ii4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyI6MjY4LCIuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgiOjM0MH1dLDM3NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIu'@; put 'Li9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksbz1zKCIuLi9pbnRlcm5hbHMvbm90LWEtcmVnZXhwIikscj1zKCIuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlIiksdD1zKCIuLi9pbnRlcm5hbHMvdG8tc3Ry'@; put 'aW5nIiksZT1zKCIuLi9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMiKSxsPWEoIiIuaW5kZXhPZik7Yih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohZSgiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKG4pe3JldHVybiEhfmwodChyKHRoaXMpKSx0KG8o'@; put 'bikpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0seyIuLi9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMiOjIzOCwiLi4vaW50ZXJuYWxzL2V4cG9ydCI6MjU5LCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIjoyNjgsIi4uL2lu'@; put 'dGVybmFscy9ub3QtYS1yZWdleHAiOjMwNCwiLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSI6MzI5LCIuLi9pbnRlcm5hbHMvdG8tc3RyaW5nIjozNDh9XSwzNzg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7cygiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3lt'@; put 'Ym9sLWRlZmluZSIpKCJhc3luY0l0ZXJhdG9yIil9LHsiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLWRlZmluZSI6MzU1fV0sMzc5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL2ludGVybmFscy9leHBvcnQiKSxhPXMoIi4uL2ludGVybmFscy9nbG9i'@; put 'YWwiKSxvPXMoIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIikscj1zKCIuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzIiksdD1zKCIuLi9pbnRlcm5hbHMvaXMtcHVyZSIpLGU9cygiLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzIiksbD1zKCIuLi9pbnRlcm5hbHMvc3ltYm9s'@; put 'LWNvbnN0cnVjdG9yLWRldGVjdGlvbiIpLG49cygiLi4vaW50ZXJuYWxzL2ZhaWxzIiksaT1zKCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSIpLGg9cygiLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YiKSxmPXMoIi4uL2ludGVybmFscy9hbi1vYmplY3QiKSx1PXMo'@; put 'Ii4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCIpLHA9cygiLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleSIpLGQ9cygiLi4vaW50ZXJuYWxzL3RvLXN0cmluZyIpLHY9cygiLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yIiksXz1zKCIuLi9pbnRlcm5hbHMv'@; put 'b2JqZWN0LWNyZWF0ZSIpLEE9cygiLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzIiksST1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMiKSxMPXMoIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbCIpLE49cygiLi4v'@; put 'aW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMiKSxQPXMoIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yIiksQj1zKCIuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSIpLCQ9cygiLi4vaW50ZXJuYWxzL29iamVj'@; put 'dC1kZWZpbmUtcHJvcGVydGllcyIpLEQ9cygiLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlIikseD1zKCIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIiksTT1zKCIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yIiksaj1zKCIuLi9pbnRl'@; put 'cm5hbHMvc2hhcmVkIiksYz1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSIpLG09cygiLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzIiksZz1zKCIuLi9pbnRlcm5hbHMvdWlkIikseT1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wiKSx3PXMoIi4uL2ludGVybmFscy93ZWxsLWtu'@; put 'b3duLXN5bWJvbC13cmFwcGVkIiksaz1zKCIuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wtZGVmaW5lIiksTz1zKCIuLi9pbnRlcm5hbHMvc3ltYm9sLWRlZmluZS10by1wcmltaXRpdmUiKSx6PXMoIi4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyIpLFU9cygiLi4vaW50ZXJu'@; put 'YWxzL2ludGVybmFsLXN0YXRlIiksVj1zKCIuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uIikuZm9yRWFjaCxSPWMoImhpZGRlbiIpLEg9VS5zZXQsVD1VLmdldHRlckZvcigiU3ltYm9sIiksQz1PYmplY3QucHJvdG90eXBlLEY9YS5TeW1ib2wscT1GJiZGLnByb3RvdHlwZSxZPWEuUmFu'@; put 'Z2VFcnJvcixYPWEuVHlwZUVycm9yLEs9YS5RT2JqZWN0LHJ0PVAuZix0dD1CLmYsVz1MLmYsUT1ELmYsRz1yKFtdLnB1c2gpLGV0PWooInN5bWJvbHMiKSxudD1qKCJvcC1zeW1ib2xzIiksaXQ9aigid2tzIiksb3Q9IUt8fCFLLnByb3RvdHlwZXx8IUsucHJvdG90eXBlLmZpbmRDaGlsZCxo'@; put 'dD1mdW5jdGlvbihBdCxndCxtdCl7dmFyIFZ0PXJ0KEMsZ3QpO1Z0JiZkZWxldGUgQ1tndF0sdHQoQXQsZ3QsbXQpLFZ0JiZBdCE9PUMmJnR0KEMsZ3QsVnQpfSxmdD1lJiZuKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1fKHR0KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR0KHRoaXMs'@; put 'ImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2h0OnR0LHB0PWZ1bmN0aW9uKEF0LGd0KXt2YXIgbXQ9ZXRbQXRdPV8ocSk7cmV0dXJuIEgobXQse3R5cGU6IlN5bWJvbCIsdGFnOkF0LGRlc2NyaXB0aW9uOmd0fSksZXx8KG10LmRlc2NyaXB0aW9uPWd0KSxtdH0sVHQ9ZnVuY3Rpb24oQXQsZ3Qs'@; put 'bXQpe0F0PT09QyYmVHQobnQsZ3QsbXQpLGYoQXQpO3ZhciBWdD1wKGd0KTtyZXR1cm4gZihtdCksaShldCxWdCk/KG10LmVudW1lcmFibGU/KGkoQXQsUikmJkF0W1JdW1Z0XSYmKEF0W1JdW1Z0XT0hMSksbXQ9XyhtdCx7ZW51bWVyYWJsZTp2KDAsITEpfSkpOihpKEF0LFIpfHx0dChBdCxS'@; put 'LHYoMSx7fSkpLEF0W1JdW1Z0XT0hMCksZnQoQXQsVnQsbXQpKTp0dChBdCxWdCxtdCl9LHl0PWZ1bmN0aW9uKEF0LGd0KXtmKEF0KTt2YXIgbXQ9dShndCksVnQ9QShtdCkuY29uY2F0KF90KG10KSk7cmV0dXJuIFYoVnQsZnVuY3Rpb24oU3Qpe2UmJiFvKHd0LG10LFN0KXx8VHQoQXQsU3Qs'@; put 'bXRbU3RdKX0pLEF0fSx3dD1mdW5jdGlvbihBdCl7dmFyIGd0PXAoQXQpLG10PW8oUSx0aGlzLGd0KTtyZXR1cm4hKHRoaXM9PT1DJiZpKGV0LGd0KSYmIWkobnQsZ3QpKSYmKCEobXR8fCFpKHRoaXMsZ3QpfHwhaShldCxndCl8fGkodGhpcyxSKSYmdGhpc1tSXVtndF0pfHxtdCl9LHF0PWZ1'@; put 'bmN0aW9uKEF0LGd0KXt2YXIgbXQ9dShBdCksVnQ9cChndCk7aWYobXQhPT1DfHwhaShldCxWdCl8fGkobnQsVnQpKXt2YXIgU3Q9cnQobXQsVnQpO3JldHVybiFTdHx8IWkoZXQsVnQpfHxpKG10LFIpJiZtdFtSXVtWdF18fChTdC5lbnVtZXJhYmxlPSEwKSxTdH19LEV0PWZ1bmN0aW9uKEF0'@; put 'KXt2YXIgZ3Q9Vyh1KEF0KSksbXQ9W107cmV0dXJuIFYoZ3QsZnVuY3Rpb24oVnQpe2koZXQsVnQpfHxpKG0sVnQpfHxHKG10LFZ0KX0pLG10fSxfdD1mdW5jdGlvbihBdCl7dmFyIGd0PUF0PT09QyxtdD1XKGd0P250OnUoQXQpKSxWdD1bXTtyZXR1cm4gVihtdCxmdW5jdGlvbihTdCl7IWko'@; put 'ZXQsU3QpfHxndCYmIWkoQyxTdCl8fEcoVnQsZXRbU3RdKX0pLFZ0fTtsfHwoeChxPShGPWZ1bmN0aW9uKCl7aWYoaChxLHRoaXMpKXRocm93IG5ldyBYKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgQXQ9YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBd'@; put 'P2QoYXJndW1lbnRzWzBdKTp2b2lkIDAsZ3Q9ZyhBdCksbXQ9ZnVuY3Rpb24oVnQpe3RoaXM9PT1DJiZvKG10LG50LFZ0KSxpKHRoaXMsUikmJmkodGhpc1tSXSxndCkmJih0aGlzW1JdW2d0XT0hMSk7dmFyIFN0PXYoMSxWdCk7dHJ5e2Z0KHRoaXMsZ3QsU3QpfWNhdGNoKE90KXtpZighKE90'@; put 'IGluc3RhbmNlb2YgWSkpdGhyb3cgT3Q7aHQodGhpcyxndCxTdCl9fTtyZXR1cm4gZSYmb3QmJmZ0KEMsZ3Qse2NvbmZpZ3VyYWJsZTohMCxzZXQ6bXR9KSxwdChndCxBdCl9KS5wcm90b3R5cGUsInRvU3RyaW5nIixmdW5jdGlvbigpe3JldHVybiBUKHRoaXMpLnRhZ30pLHgoRiwid2l0aG91'@; put 'dFNldHRlciIsZnVuY3Rpb24oQXQpe3JldHVybiBwdChnKEF0KSxBdCl9KSxELmY9d3QsQi5mPVR0LCQuZj15dCxQLmY9cXQsSS5mPUwuZj1FdCxOLmY9X3Qsdy5mPWZ1bmN0aW9uKEF0KXtyZXR1cm4gcHQoeShBdCksQXQpfSxlJiYoTShxLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZToh'@; put 'MCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzKS5kZXNjcmlwdGlvbn19KSx0fHx4KEMsInByb3BlcnR5SXNFbnVtZXJhYmxlIix3dCx7dW5zYWZlOiEwfSkpKSxiKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsd3JhcDohMCxmb3JjZWQ6IWwsc2hhbTohbH0se1N5bWJvbDpGfSksVihB'@; put 'KGl0KSxmdW5jdGlvbihBdCl7ayhBdCl9KSxiKHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IWx9LHt1c2VTZXR0ZXI6ZnVuY3Rpb24oKXtvdD0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7b3Q9ITF9fSksYih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFsLHNoYW06'@; put 'IWV9LHtjcmVhdGU6ZnVuY3Rpb24oQXQsZ3Qpe3JldHVybiB2b2lkIDA9PT1ndD9fKEF0KTp5dChfKEF0KSxndCl9LGRlZmluZVByb3BlcnR5OlR0LGRlZmluZVByb3BlcnRpZXM6eXQsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnF0fSksYih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9y'@; put 'Y2VkOiFsfSx7Z2V0T3duUHJvcGVydHlOYW1lczpFdH0pLE8oKSx6KEYsIlN5bWJvbCIpLG1bUl09ITB9LHsiLi4vaW50ZXJuYWxzL2FuLW9iamVjdCI6MjI3LCIuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uIjoyMjksIi4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRv'@; put 'ciI6MjQyLCIuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluIjoyNDUsIi4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IiOjI0NCwiLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzIjoyNDcsIi4uL2ludGVybmFscy9leHBvcnQiOjI1OSwiLi4vaW50ZXJuYWxzL2ZhaWxzIjoy'@; put 'NjAsIi4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsIjoyNjQsIi4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMiOjI2OCwiLi4vaW50ZXJuYWxzL2dsb2JhbCI6Mjc0LCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSI6Mjc1LCIuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMi'@; put 'OjI3NiwiLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlIjoyODIsIi4uL2ludGVybmFscy9pcy1wdXJlIjoyOTAsIi4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlIjozMDYsIi4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMiOjMwNywiLi4vaW50ZXJuYWxzL29iamVjdC1k'@; put 'ZWZpbmUtcHJvcGVydHkiOjMwOCwiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IiOjMwOSwiLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzIjozMTEsIi4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1l'@; put 'cy1leHRlcm5hbCI6MzEwLCIuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scyI6MzEyLCIuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZiI6MzE0LCIuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMiOjMxNiwiLi4vaW50ZXJuYWxzL29iamVjdC1wcm9w'@; put 'ZXJ0eS1pcy1lbnVtZXJhYmxlIjozMTcsIi4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyI6MzMxLCIuLi9pbnRlcm5hbHMvc2hhcmVkIjozMzQsIi4uL2ludGVybmFscy9zaGFyZWQta2V5IjozMzIsIi4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uIjozMzYs'@; put 'Ii4uL2ludGVybmFscy9zeW1ib2wtZGVmaW5lLXRvLXByaW1pdGl2ZSI6MzM3LCIuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QiOjM0MSwiLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleSI6MzQ2LCIuLi9pbnRlcm5hbHMvdG8tc3RyaW5nIjozNDgsIi4uL2ludGVybmFscy91aWQi'@; put 'OjM1MCwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sIjozNTcsIi4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC1kZWZpbmUiOjM1NSwiLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLXdyYXBwZWQiOjM1Nn1dLDM4MDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgYj1zKCIuLi9pbnRlcm5hbHMvZXhwb3J0IiksYT1zKCIuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluIiksbz1zKCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSIpLHI9cygiLi4vaW50ZXJuYWxzL3RvLXN0cmluZyIpLHQ9cygiLi4vaW50ZXJuYWxzL3NoYXJlZCIpLGU9cygi'@; put 'Li4vaW50ZXJuYWxzL3N5bWJvbC1yZWdpc3RyeS1kZXRlY3Rpb24iKSxsPXQoInN0cmluZy10by1zeW1ib2wtcmVnaXN0cnkiKSxuPXQoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKTtiKHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IWV9LHtmb3I6ZnVuY3Rpb24oaSl7dmFy'@; put 'IGg9cihpKTtpZihvKGwsaCkpcmV0dXJuIGxbaF07dmFyIGY9YSgiU3ltYm9sIikoaCk7cmV0dXJuIGxbaF09ZixuW2ZdPWgsZn19KX0seyIuLi9pbnRlcm5hbHMvZXhwb3J0IjoyNTksIi4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4iOjI2OSwiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVy'@; put 'dHkiOjI3NSwiLi4vaW50ZXJuYWxzL3NoYXJlZCI6MzM0LCIuLi9pbnRlcm5hbHMvc3ltYm9sLXJlZ2lzdHJ5LWRldGVjdGlvbiI6MzM4LCIuLi9pbnRlcm5hbHMvdG8tc3RyaW5nIjozNDh9XSwzODE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7cygiLi4vbW9kdWxlcy9lcy5zeW1i'@; put 'b2wuY29uc3RydWN0b3IiKSxzKCIuLi9tb2R1bGVzL2VzLnN5bWJvbC5mb3IiKSxzKCIuLi9tb2R1bGVzL2VzLnN5bWJvbC5rZXktZm9yIikscygiLi4vbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeSIpLHMoIi4uL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktc3ltYm9scyIp'@; put 'fSx7Ii4uL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkiOjM2MiwiLi4vbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzIjozNjUsIi4uL21vZHVsZXMvZXMuc3ltYm9sLmNvbnN0cnVjdG9yIjozNzksIi4uL21vZHVsZXMvZXMuc3ltYm9sLmZvciI6MzgwLCIuLi9t'@; put 'b2R1bGVzL2VzLnN5bWJvbC5rZXktZm9yIjozODJ9XSwzODI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vaW50ZXJuYWxzL2V4cG9ydCIpLGE9cygiLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkiKSxvPXMoIi4uL2ludGVybmFscy9pcy1zeW1ib2wiKSxy'@; put 'PXMoIi4uL2ludGVybmFscy90cnktdG8tc3RyaW5nIiksdD1zKCIuLi9pbnRlcm5hbHMvc2hhcmVkIiksZT1zKCIuLi9pbnRlcm5hbHMvc3ltYm9sLXJlZ2lzdHJ5LWRldGVjdGlvbiIpLGw9dCgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpO2Ioe3RhcmdldDoiU3ltYm9sIixzdGF0OiEw'@; put 'LGZvcmNlZDohZX0se2tleUZvcjpmdW5jdGlvbihuKXtpZighbyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKHIobikrIiBpcyBub3QgYSBzeW1ib2wiKTtpZihhKGwsbikpcmV0dXJuIGxbbl19fSl9LHsiLi4vaW50ZXJuYWxzL2V4cG9ydCI6MjU5LCIuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9w'@; put 'ZXJ0eSI6Mjc1LCIuLi9pbnRlcm5hbHMvaXMtc3ltYm9sIjoyOTIsIi4uL2ludGVybmFscy9zaGFyZWQiOjMzNCwiLi4vaW50ZXJuYWxzL3N5bWJvbC1yZWdpc3RyeS1kZXRlY3Rpb24iOjMzOCwiLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmciOjM0OX1dLDM4MzpbZnVuY3Rpb24ocyxFLFMp'@; put 'eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Uy5pc0FycmF5PWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkoYSk6IltvYmplY3QgQXJyYXldIj09PWIoYSl9LFMuaXNCb29sZWFu'@; put 'PWZ1bmN0aW9uKGEpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGF9LFMuaXNOdWxsPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YX0sUy5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YX0sUy5pc051bWJlcj1mdW5jdGlvbihhKXtyZXR1cm4ibnVtYmVyIj09'@; put 'dHlwZW9mIGF9LFMuaXNTdHJpbmc9ZnVuY3Rpb24oYSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhfSxTLmlzU3ltYm9sPWZ1bmN0aW9uKGEpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgYX0sUy5pc1VuZGVmaW5lZD1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YX0sUy5pc1JlZ0V4cD1m'@; put 'dW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PWIoYSl9LFMuaXNPYmplY3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhJiZudWxsIT09YX0sUy5pc0RhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09YihhKX0sUy5pc0Vycm9yPWZ1'@; put 'bmN0aW9uKGEpe3JldHVybiJbb2JqZWN0IEVycm9yXSI9PT1iKGEpfHxhIGluc3RhbmNlb2YgRXJyb3J9LFMuaXNGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYX0sUy5pc1ByaW1pdGl2ZT1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWF8fCJib29sZWFu'@; put 'Ij09dHlwZW9mIGF8fCJudW1iZXIiPT10eXBlb2YgYXx8InN0cmluZyI9PXR5cGVvZiBhfHwic3ltYm9sIj09dHlwZW9mIGF8fHZvaWQgMD09PWF9LFMuaXNCdWZmZXI9cygiYnVmZmVyIikuQnVmZmVyLmlzQnVmZmVyfSx7YnVmZmVyOjIyMH1dLDM4NDpbZnVuY3Rpb24ocyxFLFMpeyhmdW5j'@; put 'dGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGE9cygiZWxsaXB0aWMiKSxvPXMoImJuLmpzIik7RS5leHBvcnRzPWZ1bmN0aW9uKGwpe3JldHVybiBuZXcgdChsKX07dmFyIHI9e3NlY3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6'@; put 'e25hbWU6InAyMjQiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4'@; put 'NCIsYnl0ZUxlbmd0aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gdChsKXt0aGlzLmN1cnZlVHlwZT1yW2xdLHRoaXMuY3VydmVUeXBlfHwodGhpcy5jdXJ2ZVR5cGU9e25hbWU6bH0pLHRoaXMuY3VydmU9bmV3IGEuZWModGhpcy5jdXJ2ZVR5'@; put 'cGUubmFtZSksdGhpcy5rZXlzPXZvaWQgMH1mdW5jdGlvbiBlKGwsbixpKXtBcnJheS5pc0FycmF5KGwpfHwobD1sLnRvQXJyYXkoKSk7dmFyIGg9bmV3IGIobCk7aWYoaSYmaC5sZW5ndGg8aSl7dmFyIGY9bmV3IGIoaS1oLmxlbmd0aCk7Zi5maWxsKDApLGg9Yi5jb25jYXQoW2YsaF0pfXJl'@; put 'dHVybiBuP2gudG9TdHJpbmcobik6aH1yLnAyMjQ9ci5zZWNwMjI0cjEsci5wMjU2PXIuc2VjcDI1NnIxPXIucHJpbWUyNTZ2MSxyLnAxOTI9ci5zZWNwMTkycjE9ci5wcmltZTE5MnYxLHIucDM4ND1yLnNlY3AzODRyMSxyLnA1MjE9ci5zZWNwNTIxcjEsdC5wcm90b3R5cGUuZ2VuZXJhdGVL'@; put 'ZXlzPWZ1bmN0aW9uKGwsbil7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShsLG4pfSx0LnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGwsbixpKXtyZXR1cm4gbj1ufHwidXRmOCIsYi5pc0J1ZmZlcihsKXx8KGw9bmV3'@; put 'IGIobCxuKSksZSh0aGlzLmN1cnZlLmtleUZyb21QdWJsaWMobCkuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxpLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSx0LnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24obCxuKXt2YXIgaT10aGlz'@; put 'LmtleXMuZ2V0UHVibGljKCJjb21wcmVzc2VkIj09PW4sITApO3JldHVybiJoeWJyaWQiPT09biYmKGlbMF09aVtpLmxlbmd0aC0xXSUyPzc6NiksZShpLGwpfSx0LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKGwpe3JldHVybiBlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksbCl9'@; put 'LHQucHJvdG90eXBlLnNldFB1YmxpY0tleT1mdW5jdGlvbihsLG4pe3JldHVybiBuPW58fCJ1dGY4IixiLmlzQnVmZmVyKGwpfHwobD1uZXcgYihsLG4pKSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhsKSx0aGlzfSx0LnByb3RvdHlwZS5zZXRQcml2YXRlS2V5PWZ1bmN0aW9uKGwsbil7bj1u'@; put 'fHwidXRmOCIsYi5pc0J1ZmZlcihsKXx8KGw9bmV3IGIobCxuKSk7dmFyIGk9bmV3IG8obCk7cmV0dXJuIGk9aS50b1N0cmluZygxNiksdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShpKSx0aGlzfX0pLmNhbGwodGhpcyl9KS5jYWxs'@; put 'KHRoaXMscygiYnVmZmVyIikuQnVmZmVyKX0seyJibi5qcyI6Mzg1LGJ1ZmZlcjoyMjAsZWxsaXB0aWM6NDA1fV0sMzg1OltmdW5jdGlvbihzLEUsUyl7YXJndW1lbnRzWzRdWzE4NF1bMF0uYXBwbHkoUyxhcmd1bWVudHMpfSx7YnVmZmVyOjE4OCxkdXA6MTg0fV0sMzg2OltmdW5jdGlvbihz'@; put 'LEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImluaGVyaXRzIiksYT1zKCJtZDUuanMiKSxvPXMoInJpcGVtZDE2MCIpLHI9cygic2hhLmpzIiksdD1zKCJjaXBoZXItYmFzZSIpO2Z1bmN0aW9uIGUobCl7dC5jYWxsKHRoaXMsImRpZ2VzdCIpLHRoaXMuX2hhc2g9bH1iKGUsdCksZS5wcm90'@; put 'b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihsKXt0aGlzLl9oYXNoLnVwZGF0ZShsKX0sZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9LEUuZXhwb3J0cz1mdW5jdGlvbihsKXtyZXR1cm4ibWQ1Ij09PShsPWwudG9Mb3dlckNhc2UoKSk/bmV3'@; put 'IGE6InJtZDE2MCI9PT1sfHwicmlwZW1kMTYwIj09PWw/bmV3IG86bmV3IGUocihsKSl9fSx7ImNpcGhlci1iYXNlIjoyMjEsaW5oZXJpdHM6NDQwLCJtZDUuanMiOjQ1MCxyaXBlbWQxNjA6NDkzLCJzaGEuanMiOjQ5OH1dLDM4NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'Yj1zKCJtZDUuanMiKTtFLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuKG5ldyBiKS51cGRhdGUoYSkuZGlnZXN0KCl9fSx7Im1kNS5qcyI6NDUwfV0sMzg4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImluaGVyaXRzIiksYT1zKCIuL2xlZ2FjeSIpLG89cygiY2lw'@; put 'aGVyLWJhc2UiKSxyPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLHQ9cygiY3JlYXRlLWhhc2gvbWQ1IiksZT1zKCJyaXBlbWQxNjAiKSxsPXMoInNoYS5qcyIpLG49ci5hbGxvYygxMjgpO2Z1bmN0aW9uIGkoaCxmKXtvLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBmJiYo'@; put 'Zj1yLmZyb20oZikpO3ZhciB1PSJzaGE1MTIiPT09aHx8InNoYTM4NCI9PT1oPzEyODo2NDt0aGlzLl9hbGc9aCx0aGlzLl9rZXk9ZixmLmxlbmd0aD51P2Y9KCJybWQxNjAiPT09aD9uZXcgZTpsKGgpKS51cGRhdGUoZikuZGlnZXN0KCk6Zi5sZW5ndGg8dSYmKGY9ci5jb25jYXQoW2Ysbl0s'@; put 'dSkpO2Zvcih2YXIgcD10aGlzLl9pcGFkPXIuYWxsb2NVbnNhZmUodSksZD10aGlzLl9vcGFkPXIuYWxsb2NVbnNhZmUodSksdj0wO3Y8dTt2KyspcFt2XT01NF5mW3ZdLGRbdl09OTJeZlt2XTt0aGlzLl9oYXNoPSJybWQxNjAiPT09aD9uZXcgZTpsKGgpLHRoaXMuX2hhc2gudXBkYXRlKHAp'@; put 'fWIoaSxvKSxpLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGgpe3RoaXMuX2hhc2gudXBkYXRlKGgpfSxpLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybigicm1kMTYwIj09PXRoaXMuX2FsZz9uZXcgZTpsKHRoaXMuX2FsZykp'@; put 'LnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoaCkuZGlnZXN0KCl9LEUuZXhwb3J0cz1mdW5jdGlvbihoLGYpe3JldHVybiJybWQxNjAiPT09KGg9aC50b0xvd2VyQ2FzZSgpKXx8InJpcGVtZDE2MCI9PT1oP25ldyBpKCJybWQxNjAiLGYpOiJtZDUiPT09aD9uZXcgYSh0LGYpOm5ldyBpKGgs'@; put 'Zil9fSx7Ii4vbGVnYWN5IjozODksImNpcGhlci1iYXNlIjoyMjEsImNyZWF0ZS1oYXNoL21kNSI6Mzg3LGluaGVyaXRzOjQ0MCxyaXBlbWQxNjA6NDkzLCJzYWZlLWJ1ZmZlciI6NDk0LCJzaGEuanMiOjQ5OH1dLDM4OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJp'@; put 'bmhlcml0cyIpLGE9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsbz1zKCJjaXBoZXItYmFzZSIpLHI9YS5hbGxvYygxMjgpO2Z1bmN0aW9uIHQoZSxsKXtvLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBsJiYobD1hLmZyb20obCkpLHRoaXMuX2FsZz1lLHRoaXMuX2tleT1s'@; put 'LGwubGVuZ3RoPjY0P2w9ZShsKTpsLmxlbmd0aDw2NCYmKGw9YS5jb25jYXQoW2wscl0sNjQpKTtmb3IodmFyIG49dGhpcy5faXBhZD1hLmFsbG9jVW5zYWZlKDY0KSxpPXRoaXMuX29wYWQ9YS5hbGxvY1Vuc2FmZSg2NCksaD0wO2g8NjQ7aCsrKW5baF09NTRebFtoXSxpW2hdPTkyXmxbaF07'@; put 'dGhpcy5faGFzaD1bbl19Yih0LG8pLHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy5faGFzaC5wdXNoKGUpfSx0LnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9hbGcoYS5jb25jYXQodGhpcy5faGFzaCkpO3JldHVybiB0aGlzLl9hbGcoYS5jb25j'@; put 'YXQoW3RoaXMuX29wYWQsZV0pKX0sRS5leHBvcnRzPXR9LHsiY2lwaGVyLWJhc2UiOjIyMSxpbmhlcml0czo0NDAsInNhZmUtYnVmZmVyIjo0OTR9XSwzOTA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Uy5yYW5kb21CeXRlcz1TLnJuZz1TLnBzZXVkb1JhbmRvbUJ5dGVzPVMucHJu'@; put 'Zz1zKCJyYW5kb21ieXRlcyIpLFMuY3JlYXRlSGFzaD1TLkhhc2g9cygiY3JlYXRlLWhhc2giKSxTLmNyZWF0ZUhtYWM9Uy5IbWFjPXMoImNyZWF0ZS1obWFjIik7dmFyIGI9cygiYnJvd3NlcmlmeS1zaWduL2FsZ29zIiksYT1PYmplY3Qua2V5cyhiKSxvPVsic2hhMSIsInNoYTIyNCIsInNo'@; put 'YTI1NiIsInNoYTM4NCIsInNoYTUxMiIsIm1kNSIsInJtZDE2MCJdLmNvbmNhdChhKTtTLmdldEhhc2hlcz1mdW5jdGlvbigpe3JldHVybiBvfTt2YXIgcj1zKCJwYmtkZjIiKTtTLnBia2RmMj1yLnBia2RmMixTLnBia2RmMlN5bmM9ci5wYmtkZjJTeW5jO3ZhciB0PXMoImJyb3dzZXJpZnkt'@; put 'Y2lwaGVyIik7Uy5DaXBoZXI9dC5DaXBoZXIsUy5jcmVhdGVDaXBoZXI9dC5jcmVhdGVDaXBoZXIsUy5DaXBoZXJpdj10LkNpcGhlcml2LFMuY3JlYXRlQ2lwaGVyaXY9dC5jcmVhdGVDaXBoZXJpdixTLkRlY2lwaGVyPXQuRGVjaXBoZXIsUy5jcmVhdGVEZWNpcGhlcj10LmNyZWF0ZURlY2lw'@; put 'aGVyLFMuRGVjaXBoZXJpdj10LkRlY2lwaGVyaXYsUy5jcmVhdGVEZWNpcGhlcml2PXQuY3JlYXRlRGVjaXBoZXJpdixTLmdldENpcGhlcnM9dC5nZXRDaXBoZXJzLFMubGlzdENpcGhlcnM9dC5saXN0Q2lwaGVyczt2YXIgZT1zKCJkaWZmaWUtaGVsbG1hbiIpO1MuRGlmZmllSGVsbG1hbkdy'@; put 'b3VwPWUuRGlmZmllSGVsbG1hbkdyb3VwLFMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwPWUuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwLFMuZ2V0RGlmZmllSGVsbG1hbj1lLmdldERpZmZpZUhlbGxtYW4sUy5jcmVhdGVEaWZmaWVIZWxsbWFuPWUuY3JlYXRlRGlmZmllSGVsbG1hbixTLkRp'@; put 'ZmZpZUhlbGxtYW49ZS5EaWZmaWVIZWxsbWFuO3ZhciBsPXMoImJyb3dzZXJpZnktc2lnbiIpO1MuY3JlYXRlU2lnbj1sLmNyZWF0ZVNpZ24sUy5TaWduPWwuU2lnbixTLmNyZWF0ZVZlcmlmeT1sLmNyZWF0ZVZlcmlmeSxTLlZlcmlmeT1sLlZlcmlmeSxTLmNyZWF0ZUVDREg9cygiY3JlYXRl'@; put 'LWVjZGgiKTt2YXIgbj1zKCJwdWJsaWMtZW5jcnlwdCIpO1MucHVibGljRW5jcnlwdD1uLnB1YmxpY0VuY3J5cHQsUy5wcml2YXRlRW5jcnlwdD1uLnByaXZhdGVFbmNyeXB0LFMucHVibGljRGVjcnlwdD1uLnB1YmxpY0RlY3J5cHQsUy5wcml2YXRlRGVjcnlwdD1uLnByaXZhdGVEZWNyeXB0'@; put 'O3ZhciBpPXMoInJhbmRvbWZpbGwiKTtTLnJhbmRvbUZpbGw9aS5yYW5kb21GaWxsLFMucmFuZG9tRmlsbFN5bmM9aS5yYW5kb21GaWxsU3luYyxTLmNyZWF0ZUNyZWRlbnRpYWxzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFsic29ycnksIGNyZWF0ZUNyZWRlbnRpYWxzIGlzIG5vdCBp'@; put 'bXBsZW1lbnRlZCB5ZXQiLCJ3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cyIsImh0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSJdLmpvaW4oIlxuIikpfSxTLmNvbnN0YW50cz17REhfQ0hFQ0tfUF9OT1RfU0FGRV9QUklNRToyLERIX0NIRUNLX1Bf'@; put 'Tk9UX1BSSU1FOjEsREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUjo0LERIX05PVF9TVUlUQUJMRV9HRU5FUkFUT1I6OCxOUE5fRU5BQkxFRDoxLEFMUE5fRU5BQkxFRDoxLFJTQV9QS0NTMV9QQURESU5HOjEsUlNBX1NTTFYyM19QQURESU5HOjIsUlNBX05PX1BBRERJTkc6MyxSU0FfUEtD'@; put 'UzFfT0FFUF9QQURESU5HOjQsUlNBX1g5MzFfUEFERElORzo1LFJTQV9QS0NTMV9QU1NfUEFERElORzo2LFBPSU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRDoyLFBPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEOjQsUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQ6Nn19LHsiYnJvd3NlcmlmeS1j'@; put 'aXBoZXIiOjIwNiwiYnJvd3NlcmlmeS1zaWduIjoyMTMsImJyb3dzZXJpZnktc2lnbi9hbGdvcyI6MjEwLCJjcmVhdGUtZWNkaCI6Mzg0LCJjcmVhdGUtaGFzaCI6Mzg2LCJjcmVhdGUtaG1hYyI6Mzg4LCJkaWZmaWUtaGVsbG1hbiI6NDAwLHBia2RmMjo0NjAsInB1YmxpYy1lbmNyeXB0Ijo0'@; put 'NjgscmFuZG9tYnl0ZXM6NDc1LHJhbmRvbWZpbGw6NDc2fV0sMzkxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiLGE7Yj12b2lkIDAsYT1mdW5jdGlvbigpe3ZhciBiPTZlNCxhPTM2ZTUsbz0ibWlsbGlzZWNvbmQiLHI9InNlY29uZCIsdD0ibWludXRlIixlPSJob3VyIixs'@; put 'PSJkYXkiLG49IndlZWsiLGk9Im1vbnRoIixoPSJxdWFydGVyIixmPSJ5ZWFyIix1PSJkYXRlIixwPSJJbnZhbGlkIERhdGUiLGQ9L14oXGR7NH0pWy0vXT8oXGR7MSwyfSk/Wy0vXT8oXGR7MCwyfSlbVHRcc10qKFxkezEsMn0pPzo/KFxkezEsMn0pPzo/KFxkezEsMn0pP1suOl0/KFxkKyk/'@; put 'JC8sdj0vXFsoW15cXV0rKV18WXsxLDR9fE17MSw0fXxEezEsMn18ZHsxLDR9fEh7MSwyfXxoezEsMn18YXxBfG17MSwyfXxzezEsMn18WnsxLDJ9fFNTUy9nLF89e25hbWU6ImVuIix3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0'@; put 'dXJkYXkiLnNwbGl0KCJfIiksbW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG9yZGluYWw6ZnVuY3Rpb24oYyl7dmFyIG09WyJ0aCIsInN0IiwibmQi'@; put 'LCJyZCJdLGc9YyUxMDA7cmV0dXJuIlsiK2MrKG1bKGctMjApJTEwXXx8bVtnXXx8bVswXSkrIl0ifX0sQT1mdW5jdGlvbihjLG0sZyl7dmFyIHk9U3RyaW5nKGMpO3JldHVybiF5fHx5Lmxlbmd0aD49bT9jOiIiK0FycmF5KG0rMS15Lmxlbmd0aCkuam9pbihnKStjfSxJPXtzOkEsejpmdW5j'@; put 'dGlvbihjKXt2YXIgbT0tYy51dGNPZmZzZXQoKSxnPU1hdGguYWJzKG0pLHk9TWF0aC5mbG9vcihnLzYwKSx3PWclNjA7cmV0dXJuKG08PTA/IisiOiItIikrQSh5LDIsIjAiKSsiOiIrQSh3LDIsIjAiKX0sbTpmdW5jdGlvbiBjKG0sZyl7aWYobS5kYXRlKCk8Zy5kYXRlKCkpcmV0dXJuLWMo'@; put 'ZyxtKTt2YXIgeT0xMiooZy55ZWFyKCktbS55ZWFyKCkpKyhnLm1vbnRoKCktbS5tb250aCgpKSx3PW0uY2xvbmUoKS5hZGQoeSxpKSxrPWctdzwwLE89bS5jbG9uZSgpLmFkZCh5KyhrPy0xOjEpLGkpO3JldHVybisoLSh5KyhnLXcpLyhrP3ctTzpPLXcpKXx8MCl9LGE6ZnVuY3Rpb24oYyl7'@; put 'cmV0dXJuIGM8MD9NYXRoLmNlaWwoYyl8fDA6TWF0aC5mbG9vcihjKX0scDpmdW5jdGlvbihjKXtyZXR1cm57TTppLHk6Zix3Om4sZDpsLEQ6dSxoOmUsbTp0LHM6cixtczpvLFE6aH1bY118fFN0cmluZyhjfHwiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9zJC8sIiIpfSx1OmZ1bmN0aW9u'@; put 'KGMpe3JldHVybiB2b2lkIDA9PT1jfX0sTD0iZW4iLE49e307TltMXT1fO3ZhciBQPSIkaXNEYXlqc09iamVjdCIsQj1mdW5jdGlvbihjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIE18fCEoIWN8fCFjW1BdKX0sJD1mdW5jdGlvbiBjKG0sZyx5KXt2YXIgdztpZighbSlyZXR1cm4gTDtpZigic3Ry'@; put 'aW5nIj09dHlwZW9mIG0pe3ZhciBrPW0udG9Mb3dlckNhc2UoKTtOW2tdJiYodz1rKSxnJiYoTltrXT1nLHc9ayk7dmFyIE89bS5zcGxpdCgiLSIpO2lmKCF3JiZPLmxlbmd0aD4xKXJldHVybiBjKE9bMF0pfWVsc2V7dmFyIHo9bS5uYW1lO05bel09bSx3PXp9cmV0dXJuIXkmJncmJihMPXcp'@; put 'LHd8fCF5JiZMfSxEPWZ1bmN0aW9uKGMsbSl7aWYoQihjKSlyZXR1cm4gYy5jbG9uZSgpO3ZhciBnPSJvYmplY3QiPT10eXBlb2YgbT9tOnt9O3JldHVybiBnLmRhdGU9YyxnLmFyZ3M9YXJndW1lbnRzLG5ldyBNKGcpfSx4PUk7eC5sPSQseC5pPUIseC53PWZ1bmN0aW9uKGMsbSl7cmV0dXJu'@; put 'IEQoYyx7bG9jYWxlOm0uJEwsdXRjOm0uJHUseDptLiR4LCRvZmZzZXQ6bS4kb2Zmc2V0fSl9O3ZhciBNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhnKXt0aGlzLiRMPSQoZy5sb2NhbGUsbnVsbCwhMCksdGhpcy5wYXJzZShnKSx0aGlzLiR4PXRoaXMuJHh8fGcueHx8e30sdGhpc1tQXT0hMH12'@; put 'YXIgbT1jLnByb3RvdHlwZTtyZXR1cm4gbS5wYXJzZT1mdW5jdGlvbihnKXt0aGlzLiRkPWZ1bmN0aW9uKHkpe3ZhciB3PXkuZGF0ZSxrPXkudXRjO2lmKG51bGw9PT13KXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKHgudSh3KSlyZXR1cm4gbmV3IERhdGU7aWYodyBpbnN0YW5jZW9mIERhdGUp'@; put 'cmV0dXJuIG5ldyBEYXRlKHcpO2lmKCJzdHJpbmciPT10eXBlb2YgdyYmIS9aJC9pLnRlc3Qodykpe3ZhciBPPXcubWF0Y2goZCk7aWYoTyl7dmFyIHo9T1syXS0xfHwwLFU9KE9bN118fCIwIikuc3Vic3RyaW5nKDAsMyk7cmV0dXJuIGs/bmV3IERhdGUoRGF0ZS5VVEMoT1sxXSx6LE9bM118'@; put 'fDEsT1s0XXx8MCxPWzVdfHwwLE9bNl18fDAsVSkpOm5ldyBEYXRlKE9bMV0seixPWzNdfHwxLE9bNF18fDAsT1s1XXx8MCxPWzZdfHwwLFUpfX1yZXR1cm4gbmV3IERhdGUodyl9KGcpLHRoaXMuaW5pdCgpfSxtLmluaXQ9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLiRkO3RoaXMuJHk9Zy5nZXRG'@; put 'dWxsWWVhcigpLHRoaXMuJE09Zy5nZXRNb250aCgpLHRoaXMuJEQ9Zy5nZXREYXRlKCksdGhpcy4kVz1nLmdldERheSgpLHRoaXMuJEg9Zy5nZXRIb3VycygpLHRoaXMuJG09Zy5nZXRNaW51dGVzKCksdGhpcy4kcz1nLmdldFNlY29uZHMoKSx0aGlzLiRtcz1nLmdldE1pbGxpc2Vjb25kcygp'@; put 'fSxtLiR1dGlscz1mdW5jdGlvbigpe3JldHVybiB4fSxtLmlzVmFsaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b1N0cmluZygpIT09cH0sbS5pc1NhbWU9ZnVuY3Rpb24oZyx5KXt2YXIgdz1EKGcpO3JldHVybiB0aGlzLnN0YXJ0T2YoeSk8PXcmJnc8PXRoaXMuZW5kT2YoeSl9LG0u'@; put 'aXNBZnRlcj1mdW5jdGlvbihnLHkpe3JldHVybiBEKGcpPHRoaXMuc3RhcnRPZih5KX0sbS5pc0JlZm9yZT1mdW5jdGlvbihnLHkpe3JldHVybiB0aGlzLmVuZE9mKHkpPEQoZyl9LG0uJGc9ZnVuY3Rpb24oZyx5LHcpe3JldHVybiB4LnUoZyk/dGhpc1t5XTp0aGlzLnNldCh3LGcpfSxtLnVu'@; put 'aXg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKS8xZTMpfSxtLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC5nZXRUaW1lKCl9LG0uc3RhcnRPZj1mdW5jdGlvbihnLHkpe3ZhciB3PXRoaXMsaz0hIXgudSh5KXx8eSxPPXgucChnKSx6PWZ1bmN0'@; put 'aW9uKHEsWSl7dmFyIFg9eC53KHcuJHU/RGF0ZS5VVEMody4keSxZLHEpOm5ldyBEYXRlKHcuJHksWSxxKSx3KTtyZXR1cm4gaz9YOlguZW5kT2YobCl9LFU9ZnVuY3Rpb24ocSxZKXtyZXR1cm4geC53KHcudG9EYXRlKClbcV0uYXBwbHkody50b0RhdGUoInMiKSwoaz9bMCwwLDAsMF06WzIz'@; put 'LDU5LDU5LDk5OV0pLnNsaWNlKFkpKSx3KX0sVj10aGlzLiRXLFI9dGhpcy4kTSxIPXRoaXMuJEQsVD0ic2V0IisodGhpcy4kdT8iVVRDIjoiIik7c3dpdGNoKE8pe2Nhc2UgZjpyZXR1cm4gaz96KDEsMCk6eigzMSwxMSk7Y2FzZSBpOnJldHVybiBrP3ooMSxSKTp6KDAsUisxKTtjYXNlIG46'@; put 'dmFyIEM9dGhpcy4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwLEY9KFY8Qz9WKzc6ViktQztyZXR1cm4geihrP0gtRjpIKyg2LUYpLFIpO2Nhc2UgbDpjYXNlIHU6cmV0dXJuIFUoVCsiSG91cnMiLDApO2Nhc2UgZTpyZXR1cm4gVShUKyJNaW51dGVzIiwxKTtjYXNlIHQ6cmV0dXJuIFUoVCsiU2Vj'@; put 'b25kcyIsMik7Y2FzZSByOnJldHVybiBVKFQrIk1pbGxpc2Vjb25kcyIsMyk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbG9uZSgpfX0sbS5lbmRPZj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5zdGFydE9mKGcsITEpfSxtLiRzZXQ9ZnVuY3Rpb24oZyx5KXt2YXIgdyxrPXgucChnKSxPPSJzZXQi'@; put 'Kyh0aGlzLiR1PyJVVEMiOiIiKSx6PSh3PXt9LHdbbF09TysiRGF0ZSIsd1t1XT1PKyJEYXRlIix3W2ldPU8rIk1vbnRoIix3W2ZdPU8rIkZ1bGxZZWFyIix3W2VdPU8rIkhvdXJzIix3W3RdPU8rIk1pbnV0ZXMiLHdbcl09TysiU2Vjb25kcyIsd1tvXT1PKyJNaWxsaXNlY29uZHMiLHcpW2td'@; put 'LFU9az09PWw/dGhpcy4kRCsoeS10aGlzLiRXKTp5O2lmKGs9PT1pfHxrPT09Zil7dmFyIFY9dGhpcy5jbG9uZSgpLnNldCh1LDEpO1YuJGRbel0oVSksVi5pbml0KCksdGhpcy4kZD1WLnNldCh1LE1hdGgubWluKHRoaXMuJEQsVi5kYXlzSW5Nb250aCgpKSkuJGR9ZWxzZSB6JiZ0aGlzLiRk'@; put 'W3pdKFUpO3JldHVybiB0aGlzLmluaXQoKSx0aGlzfSxtLnNldD1mdW5jdGlvbihnLHkpe3JldHVybiB0aGlzLmNsb25lKCkuJHNldChnLHkpfSxtLmdldD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpc1t4LnAoZyldKCl9LG0uYWRkPWZ1bmN0aW9uKGcseSl7dmFyIHcsaz10aGlzO2c9TnVtYmVy'@; put 'KGcpO3ZhciBPPXgucCh5KSx6PWZ1bmN0aW9uKFIpe3ZhciBIPUQoayk7cmV0dXJuIHgudyhILmRhdGUoSC5kYXRlKCkrTWF0aC5yb3VuZChSKmcpKSxrKX07aWYoTz09PWkpcmV0dXJuIHRoaXMuc2V0KGksdGhpcy4kTStnKTtpZihPPT09ZilyZXR1cm4gdGhpcy5zZXQoZix0aGlzLiR5K2cp'@; put 'O2lmKE89PT1sKXJldHVybiB6KDEpO2lmKE89PT1uKXJldHVybiB6KDcpO3ZhciBVPSh3PXt9LHdbdF09Yix3W2VdPWEsd1tyXT0xZTMsdylbT118fDEsVj10aGlzLiRkLmdldFRpbWUoKStnKlU7cmV0dXJuIHgudyhWLHRoaXMpfSxtLnN1YnRyYWN0PWZ1bmN0aW9uKGcseSl7cmV0dXJuIHRo'@; put 'aXMuYWRkKC0xKmcseSl9LG0uZm9ybWF0PWZ1bmN0aW9uKGcpe3ZhciB5PXRoaXMsdz10aGlzLiRsb2NhbGUoKTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHcuaW52YWxpZERhdGV8fHA7dmFyIGs9Z3x8IllZWVktTU0tRERUSEg6bW06c3NaIixPPXgueih0aGlzKSx6PXRoaXMuJEgsVT10'@; put 'aGlzLiRtLFY9dGhpcy4kTSxSPXcud2Vla2RheXMsSD13Lm1vbnRocyxDPWZ1bmN0aW9uKFksWCxLLHJ0KXtyZXR1cm4gWSYmKFlbWF18fFkoeSxrKSl8fEtbWF0uc2xpY2UoMCxydCl9LEY9ZnVuY3Rpb24oWSl7cmV0dXJuIHgucyh6JTEyfHwxMixZLCIwIil9LHE9dy5tZXJpZGllbXx8ZnVu'@; put 'Y3Rpb24oWSxYLEspe3ZhciBydD1ZPDEyPyJBTSI6IlBNIjtyZXR1cm4gSz9ydC50b0xvd2VyQ2FzZSgpOnJ0fTtyZXR1cm4gay5yZXBsYWNlKHYsZnVuY3Rpb24oWSxYKXtyZXR1cm4gWHx8ZnVuY3Rpb24oSyl7c3dpdGNoKEspe2Nhc2UiWVkiOnJldHVybiBTdHJpbmcoeS4keSkuc2xpY2Uo'@; put 'LTIpO2Nhc2UiWVlZWSI6cmV0dXJuIHgucyh5LiR5LDQsIjAiKTtjYXNlIk0iOnJldHVybiBWKzE7Y2FzZSJNTSI6cmV0dXJuIHgucyhWKzEsMiwiMCIpO2Nhc2UiTU1NIjpyZXR1cm4gQyh3Lm1vbnRoc1Nob3J0LFYsSCwzKTtjYXNlIk1NTU0iOnJldHVybiBDKEgsVik7Y2FzZSJEIjpyZXR1'@; put 'cm4geS4kRDtjYXNlIkREIjpyZXR1cm4geC5zKHkuJEQsMiwiMCIpO2Nhc2UiZCI6cmV0dXJuIFN0cmluZyh5LiRXKTtjYXNlImRkIjpyZXR1cm4gQyh3LndlZWtkYXlzTWluLHkuJFcsUiwyKTtjYXNlImRkZCI6cmV0dXJuIEMody53ZWVrZGF5c1Nob3J0LHkuJFcsUiwzKTtjYXNlImRkZGQi'@; put 'OnJldHVybiBSW3kuJFddO2Nhc2UiSCI6cmV0dXJuIFN0cmluZyh6KTtjYXNlIkhIIjpyZXR1cm4geC5zKHosMiwiMCIpO2Nhc2UiaCI6cmV0dXJuIEYoMSk7Y2FzZSJoaCI6cmV0dXJuIEYoMik7Y2FzZSJhIjpyZXR1cm4gcSh6LFUsITApO2Nhc2UiQSI6cmV0dXJuIHEoeixVLCExKTtjYXNl'@; put 'Im0iOnJldHVybiBTdHJpbmcoVSk7Y2FzZSJtbSI6cmV0dXJuIHgucyhVLDIsIjAiKTtjYXNlInMiOnJldHVybiBTdHJpbmcoeS4kcyk7Y2FzZSJzcyI6cmV0dXJuIHgucyh5LiRzLDIsIjAiKTtjYXNlIlNTUyI6cmV0dXJuIHgucyh5LiRtcywzLCIwIik7Y2FzZSJaIjpyZXR1cm4gT31yZXR1'@; put 'cm4gbnVsbH0oWSl8fE8ucmVwbGFjZSgiOiIsIiIpfSl9LG0udXRjT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDE1Ki1NYXRoLnJvdW5kKHRoaXMuJGQuZ2V0VGltZXpvbmVPZmZzZXQoKS8xNSl9LG0uZGlmZj1mdW5jdGlvbihnLHksdyl7dmFyIGssTz10aGlzLHo9eC5wKHkpLFU9RChnKSxW'@; put 'PShVLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpKmIsUj10aGlzLVUsSD1mdW5jdGlvbigpe3JldHVybiB4Lm0oTyxVKX07c3dpdGNoKHope2Nhc2UgZjprPUgoKS8xMjticmVhaztjYXNlIGk6az1IKCk7YnJlYWs7Y2FzZSBoOms9SCgpLzM7YnJlYWs7Y2FzZSBuOms9KFItVikvNjA0'@; put 'OGU1O2JyZWFrO2Nhc2UgbDprPShSLVYpLzg2NGU1O2JyZWFrO2Nhc2UgZTprPVIvYTticmVhaztjYXNlIHQ6az1SL2I7YnJlYWs7Y2FzZSByOms9Ui8xZTM7YnJlYWs7ZGVmYXVsdDprPVJ9cmV0dXJuIHc/azp4LmEoayl9LG0uZGF5c0luTW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5l'@; put 'bmRPZihpKS4kRH0sbS4kbG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIE5bdGhpcy4kTF19LG0ubG9jYWxlPWZ1bmN0aW9uKGcseSl7aWYoIWcpcmV0dXJuIHRoaXMuJEw7dmFyIHc9dGhpcy5jbG9uZSgpLGs9JChnLHksITApO3JldHVybiBrJiYody4kTD1rKSx3fSxtLmNsb25lPWZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHgudyh0aGlzLiRkLHRoaXMpfSxtLnRvRGF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LG0udG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMudG9JU09TdHJpbmcoKTpudWxsfSxtLnRvSVNPU3RyaW5nPWZ1'@; put 'bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9JU09TdHJpbmcoKX0sbS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvVVRDU3RyaW5nKCl9LGN9KCksaj1NLnByb3RvdHlwZTtyZXR1cm4gRC5wcm90b3R5cGU9aixbWyIkbXMiLG9dLFsiJHMiLHJdLFsiJG0iLHRdLFsiJEgi'@; put 'LGVdLFsiJFciLGxdLFsiJE0iLGldLFsiJHkiLGZdLFsiJEQiLHVdXS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2pbY1sxXV09ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuJGcobSxjWzBdLGNbMV0pfX0pLEQuZXh0ZW5kPWZ1bmN0aW9uKGMsbSl7cmV0dXJuIGMuJGl8fChjKG0sTSxEKSxjLiRpPSEw'@; put 'KSxEfSxELmxvY2FsZT0kLEQuaXNEYXlqcz1CLEQudW5peD1mdW5jdGlvbihjKXtyZXR1cm4gRCgxZTMqYyl9LEQuZW49TltMXSxELkxzPU4sRC5wPXt9LER9LCJvYmplY3QiPT10eXBlb2YgUyYmdm9pZCAwIT09RT9FLmV4cG9ydHM9YSgpOihiPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9i'@; put 'YWxUaGlzOmJ8fHNlbGYpLmRheWpzPWEoKX0se31dLDM5MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYixhO2I9dm9pZCAwLGE9ZnVuY3Rpb24oKXt2YXIgYj17TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExM'@; put 'TDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGE9LyhcW1teW10qXF0pfChbLV86Ly4sKClcc10rKXwoQXxhfFlZWVl8WVk/fE1NP00/TT98RG98REQ/fGhoP3xISD98bW0/fHNzP3xTezEsM318enxaWj8pL2csbz0vXGRcZC8scj0vXGRc'@; put 'ZD8vLHQ9L1xkKlteLV86LywoKVxzXGRdKy8sZT17fSxsPWZ1bmN0aW9uKGQpe3JldHVybihkPStkKSsoZD42OD8xOTAwOjJlMyl9LG49ZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKHYpe3RoaXNbZF09K3Z9fSxpPVsvWystXVxkXGQ6PyhcZFxkKT98Wi8sZnVuY3Rpb24oZCl7KHRoaXMu'@; put 'em9uZXx8KHRoaXMuem9uZT17fSkpLm9mZnNldD1mdW5jdGlvbih2KXtpZighdnx8IloiPT09dilyZXR1cm4gMDt2YXIgXz12Lm1hdGNoKC8oWystXXxcZFxkKS9nKSxBPTYwKl9bMV0rKCtfWzJdfHwwKTtyZXR1cm4gMD09PUE/MDoiKyI9PT1fWzBdPy1BOkF9KGQpfV0saD1mdW5jdGlvbihk'@; put 'KXt2YXIgdj1lW2RdO3JldHVybiB2JiYodi5pbmRleE9mP3Y6di5zLmNvbmNhdCh2LmYpKX0sZj1mdW5jdGlvbihkLHYpe3ZhciBfLEE9ZS5tZXJpZGllbTtpZihBKXtmb3IodmFyIEk9MTtJPD0yNDtJKz0xKWlmKGQuaW5kZXhPZihBKEksMCx2KSk+LTEpe189ST4xMjticmVha319ZWxzZSBf'@; put 'PWQ9PT0odj8icG0iOiJQTSIpO3JldHVybiBffSx1PXtBOlt0LGZ1bmN0aW9uKGQpe3RoaXMuYWZ0ZXJub29uPWYoZCwhMSl9XSxhOlt0LGZ1bmN0aW9uKGQpe3RoaXMuYWZ0ZXJub29uPWYoZCwhMCl9XSxTOlsvXGQvLGZ1bmN0aW9uKGQpe3RoaXMubWlsbGlzZWNvbmRzPTEwMCorZH1dLFNT'@; put 'OltvLGZ1bmN0aW9uKGQpe3RoaXMubWlsbGlzZWNvbmRzPTEwKitkfV0sU1NTOlsvXGR7M30vLGZ1bmN0aW9uKGQpe3RoaXMubWlsbGlzZWNvbmRzPStkfV0sczpbcixuKCJzZWNvbmRzIildLHNzOltyLG4oInNlY29uZHMiKV0sbTpbcixuKCJtaW51dGVzIildLG1tOltyLG4oIm1pbnV0ZXMi'@; put 'KV0sSDpbcixuKCJob3VycyIpXSxoOltyLG4oImhvdXJzIildLEhIOltyLG4oImhvdXJzIildLGhoOltyLG4oImhvdXJzIildLEQ6W3IsbigiZGF5IildLEREOltvLG4oImRheSIpXSxEbzpbdCxmdW5jdGlvbihkKXt2YXIgdj1lLm9yZGluYWwsXz1kLm1hdGNoKC9cZCsvKTtpZih0aGlzLmRh'@; put 'eT1fWzBdLHYpZm9yKHZhciBBPTE7QTw9MzE7QSs9MSl2KEEpLnJlcGxhY2UoL1xbfFxdL2csIiIpPT09ZCYmKHRoaXMuZGF5PUEpfV0sTTpbcixuKCJtb250aCIpXSxNTTpbbyxuKCJtb250aCIpXSxNTU06W3QsZnVuY3Rpb24oZCl7dmFyIHY9aCgibW9udGhzIiksXz0oaCgibW9udGhzU2hv'@; put 'cnQiKXx8di5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEEuc2xpY2UoMCwzKX0pKS5pbmRleE9mKGQpKzE7aWYoXzwxKXRocm93IG5ldyBFcnJvcjt0aGlzLm1vbnRoPV8lMTJ8fF99XSxNTU1NOlt0LGZ1bmN0aW9uKGQpe3ZhciB2PWgoIm1vbnRocyIpLmluZGV4T2YoZCkrMTtpZih2PDEpdGhy'@; put 'b3cgbmV3IEVycm9yO3RoaXMubW9udGg9diUxMnx8dn1dLFk6Wy9bKy1dP1xkKy8sbigieWVhciIpXSxZWTpbbyxmdW5jdGlvbihkKXt0aGlzLnllYXI9bChkKX1dLFlZWVk6Wy9cZHs0fS8sbigieWVhciIpXSxaOmksWlo6aX07cmV0dXJuIGZ1bmN0aW9uKGQsdixfKXtfLnAuY3VzdG9tUGFy'@; put 'c2VGb3JtYXQ9ITAsZCYmZC5wYXJzZVR3b0RpZ2l0WWVhciYmKGw9ZC5wYXJzZVR3b0RpZ2l0WWVhcik7dmFyIEE9di5wcm90b3R5cGUsST1BLnBhcnNlO0EucGFyc2U9ZnVuY3Rpb24oTCl7dmFyIE49TC5kYXRlLFA9TC51dGMsQj1MLmFyZ3M7dGhpcy4kdT1QO3ZhciAkPUJbMV07aWYoInN0'@; put 'cmluZyI9PXR5cGVvZiAkKXt2YXIgRD0hMD09PUJbMl0seD0hMD09PUJbM10sTT1EfHx4LGo9QlsyXTt4JiYoaj1CWzJdKSxlPXRoaXMuJGxvY2FsZSgpLCFEJiZqJiYoZT1fLkxzW2pdKSx0aGlzLiRkPWZ1bmN0aW9uKHksdyxrKXt0cnl7aWYoWyJ4IiwiWCJdLmluZGV4T2Yodyk+LTEpcmV0'@; put 'dXJuIG5ldyBEYXRlKCgiWCI9PT13PzFlMzoxKSp5KTt2YXIgTz1mdW5jdGlvbiBwKGQpe3ZhciBfO189ZSYmZS5mb3JtYXRzO2Zvcih2YXIgQT0oZD1kLnJlcGxhY2UoLyhcW1teXF1dK10pfChMVFM/fGx7MSw0fXxMezEsNH0pL2csZnVuY3Rpb24oRCx4LE0pe3ZhciBqPU0mJk0udG9VcHBl'@; put 'ckNhc2UoKTtyZXR1cm4geHx8X1tNXXx8YltNXXx8X1tqXS5yZXBsYWNlKC8oXFtbXlxdXStdKXwoTU1NTXxNTXxERHxkZGRkKS9nLGZ1bmN0aW9uKGMsbSxnKXtyZXR1cm4gbXx8Zy5zbGljZSgxKX0pfSkpLm1hdGNoKGEpLEk9QS5sZW5ndGgsTD0wO0w8STtMKz0xKXt2YXIgTj1BW0xdLFA9'@; put 'dVtOXSwkPVAmJlBbMV07QVtMXT0kP3tyZWdleDpQJiZQWzBdLHBhcnNlcjokfTpOLnJlcGxhY2UoL15cW3xcXSQvZywiIil9cmV0dXJuIGZ1bmN0aW9uKEQpe2Zvcih2YXIgeD17fSxNPTAsaj0wO008STtNKz0xKXt2YXIgYz1BW01dO2lmKCJzdHJpbmciPT10eXBlb2YgYylqKz1jLmxlbmd0'@; put 'aDtlbHNle3ZhciBtPWMucmVnZXgsZz1jLnBhcnNlcix5PUQuc2xpY2Uoaiksdz1tLmV4ZWMoeSlbMF07Zy5jYWxsKHgsdyksRD1ELnJlcGxhY2UodywiIil9fXJldHVybiBmdW5jdGlvbihrKXt2YXIgTz1rLmFmdGVybm9vbjtpZih2b2lkIDAhPT1PKXt2YXIgej1rLmhvdXJzO08/ejwxMiYm'@; put 'KGsuaG91cnMrPTEyKToxMj09PXomJihrLmhvdXJzPTApLGRlbGV0ZSBrLmFmdGVybm9vbn19KHgpLHh9fSh3KSh5KSx6PU8ueWVhcixVPU8ubW9udGgsVj1PLmRheSxSPU8uaG91cnMsSD1PLm1pbnV0ZXMsVD1PLnNlY29uZHMsQz1PLm1pbGxpc2Vjb25kcyxGPU8uem9uZSxxPW5ldyBEYXRl'@; put 'LFk9Vnx8KHp8fFU/MTpxLmdldERhdGUoKSksWD16fHxxLmdldEZ1bGxZZWFyKCksSz0wO3omJiFVfHwoSz1VPjA/VS0xOnEuZ2V0TW9udGgoKSk7dmFyIHJ0PVJ8fDAsdHQ9SHx8MCxXPVR8fDAsUT1DfHwwO3JldHVybiBGP25ldyBEYXRlKERhdGUuVVRDKFgsSyxZLHJ0LHR0LFcsUSs2MCpG'@; put 'Lm9mZnNldCoxZTMpKTprP25ldyBEYXRlKERhdGUuVVRDKFgsSyxZLHJ0LHR0LFcsUSkpOm5ldyBEYXRlKFgsSyxZLHJ0LHR0LFcsUSl9Y2F0Y2h7cmV0dXJuIG5ldyBEYXRlKCIiKX19KE4sJCxQKSx0aGlzLmluaXQoKSxqJiYhMCE9PWomJih0aGlzLiRMPXRoaXMubG9jYWxlKGopLiRMKSxN'@; put 'JiZOIT10aGlzLmZvcm1hdCgkKSYmKHRoaXMuJGQ9bmV3IERhdGUoIiIpKSxlPXt9fWVsc2UgaWYoJCBpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgYz0kLmxlbmd0aCxtPTE7bTw9YzttKz0xKXtCWzFdPSRbbS0xXTt2YXIgZz1fLmFwcGx5KHRoaXMsQik7aWYoZy5pc1ZhbGlkKCkpe3RoaXMu'@; put 'JGQ9Zy4kZCx0aGlzLiRMPWcuJEwsdGhpcy5pbml0KCk7YnJlYWt9bT09PWMmJih0aGlzLiRkPW5ldyBEYXRlKCIiKSl9ZWxzZSBJLmNhbGwodGhpcyxMKX19fSwib2JqZWN0Ij09dHlwZW9mIFMmJnZvaWQgMCE9PUU/RS5leHBvcnRzPWEoKTooYj10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xv'@; put 'YmFsVGhpczpifHxzZWxmKS5kYXlqc19wbHVnaW5fY3VzdG9tUGFyc2VGb3JtYXQ9YSgpfSx7fV0sMzkzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiLGE7Yj12b2lkIDAsYT1mdW5jdGlvbigpe3ZhciBiPSJtaW51dGUiLGE9L1srLV1cZFxkKD86Oj9cZFxkKT8vZyxvPS8o'@; put 'WystXXxcZFxkKS9nO3JldHVybiBmdW5jdGlvbihyLHQsZSl7dmFyIGw9dC5wcm90b3R5cGU7ZS51dGM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyB0KHtkYXRlOmQsdXRjOiEwLGFyZ3M6YXJndW1lbnRzfSl9LGwudXRjPWZ1bmN0aW9uKGQpe3ZhciB2PWUodGhpcy50b0RhdGUoKSx7bG9jYWxl'@; put 'OnRoaXMuJEwsdXRjOiEwfSk7cmV0dXJuIGQ/di5hZGQodGhpcy51dGNPZmZzZXQoKSxiKTp2fSxsLmxvY2FsPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcy50b0RhdGUoKSx7bG9jYWxlOnRoaXMuJEwsdXRjOiExfSl9O3ZhciBuPWwucGFyc2U7bC5wYXJzZT1mdW5jdGlvbihkKXtkLnV0YyYm'@; put 'KHRoaXMuJHU9ITApLHRoaXMuJHV0aWxzKCkudShkLiRvZmZzZXQpfHwodGhpcy4kb2Zmc2V0PWQuJG9mZnNldCksbi5jYWxsKHRoaXMsZCl9O3ZhciBpPWwuaW5pdDtsLmluaXQ9ZnVuY3Rpb24oKXtpZih0aGlzLiR1KXt2YXIgZD10aGlzLiRkO3RoaXMuJHk9ZC5nZXRVVENGdWxsWWVhcigp'@; put 'LHRoaXMuJE09ZC5nZXRVVENNb250aCgpLHRoaXMuJEQ9ZC5nZXRVVENEYXRlKCksdGhpcy4kVz1kLmdldFVUQ0RheSgpLHRoaXMuJEg9ZC5nZXRVVENIb3VycygpLHRoaXMuJG09ZC5nZXRVVENNaW51dGVzKCksdGhpcy4kcz1kLmdldFVUQ1NlY29uZHMoKSx0aGlzLiRtcz1kLmdldFVUQ01p'@; put 'bGxpc2Vjb25kcygpfWVsc2UgaS5jYWxsKHRoaXMpfTt2YXIgaD1sLnV0Y09mZnNldDtsLnV0Y09mZnNldD1mdW5jdGlvbihkLHYpe3ZhciBfPXRoaXMuJHV0aWxzKCkudTtpZihfKGQpKXJldHVybiB0aGlzLiR1PzA6Xyh0aGlzLiRvZmZzZXQpP2guY2FsbCh0aGlzKTp0aGlzLiRvZmZzZXQ7'@; put 'aWYoInN0cmluZyI9PXR5cGVvZiBkJiZudWxsPT09KGQ9ZnVuY3Rpb24oTil7dm9pZCAwPT09TiYmKE49IiIpO3ZhciBQPU4ubWF0Y2goYSk7aWYoIVApcmV0dXJuIG51bGw7dmFyIEI9KCIiK1BbMF0pLm1hdGNoKG8pfHxbIi0iLDAsMF0sRD02MCorQlsxXSsgK0JbMl07cmV0dXJuIDA9PT1E'@; put 'PzA6IisiPT09QlswXT9EOi1EfShkKSkpcmV0dXJuIHRoaXM7dmFyIEE9TWF0aC5hYnMoZCk8PTE2PzYwKmQ6ZCxJPXRoaXM7aWYodilyZXR1cm4gSS4kb2Zmc2V0PUEsSS4kdT0wPT09ZCxJO2lmKDAhPT1kKXt2YXIgTD10aGlzLiR1P3RoaXMudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQo'@; put 'KTotMSp0aGlzLnV0Y09mZnNldCgpOyhJPXRoaXMubG9jYWwoKS5hZGQoQStMLGIpKS4kb2Zmc2V0PUEsSS4keC4kbG9jYWxPZmZzZXQ9TH1lbHNlIEk9dGhpcy51dGMoKTtyZXR1cm4gSX07dmFyIGY9bC5mb3JtYXQ7bC5mb3JtYXQ9ZnVuY3Rpb24oZCl7cmV0dXJuIGYuY2FsbCh0aGlzLGR8'@; put 'fCh0aGlzLiR1PyJZWVlZLU1NLUREVEhIOm1tOnNzW1pdIjoiIikpfSxsLnZhbHVlT2Y9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLiR1dGlscygpLnUodGhpcy4kb2Zmc2V0KT8wOnRoaXMuJG9mZnNldCsodGhpcy4keC4kbG9jYWxPZmZzZXR8fHRoaXMuJGQuZ2V0VGltZXpvbmVPZmZzZXQoKSk7'@; put 'cmV0dXJuIHRoaXMuJGQudmFsdWVPZigpLTZlNCpkfSxsLmlzVVRDPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLiR1fSxsLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKX0sbC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRv'@; put 'RGF0ZSgpLnRvVVRDU3RyaW5nKCl9O3ZhciB1PWwudG9EYXRlO2wudG9EYXRlPWZ1bmN0aW9uKGQpe3JldHVybiJzIj09PWQmJnRoaXMuJG9mZnNldD9lKHRoaXMuZm9ybWF0KCJZWVlZLU1NLUREIEhIOm1tOnNzOlNTUyIpKS50b0RhdGUoKTp1LmNhbGwodGhpcyl9O3ZhciBwPWwuZGlmZjts'@; put 'LmRpZmY9ZnVuY3Rpb24oZCx2LF8pe2lmKGQmJnRoaXMuJHU9PT1kLiR1KXJldHVybiBwLmNhbGwodGhpcyxkLHYsXyk7dmFyIEE9dGhpcy5sb2NhbCgpLEk9ZShkKS5sb2NhbCgpO3JldHVybiBwLmNhbGwoQSxJLHYsXyl9fX0sIm9iamVjdCI9PXR5cGVvZiBTJiZ2b2lkIDAhPT1FP0UuZXhw'@; put 'b3J0cz1hKCk6KGI9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6Ynx8c2VsZikuZGF5anNfcGx1Z2luX3V0Yz1hKCl9LHt9XSwzOTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Uy51dGlscz1zKCIuL2Rlcy91dGlscyIpLFMuQ2lwaGVyPXMoIi4vZGVzL2NpcGhlciIp'@; put 'LFMuREVTPXMoIi4vZGVzL2RlcyIpLFMuQ0JDPXMoIi4vZGVzL2NiYyIpLFMuRURFPXMoIi4vZGVzL2VkZSIpfSx7Ii4vZGVzL2NiYyI6Mzk1LCIuL2Rlcy9jaXBoZXIiOjM5NiwiLi9kZXMvZGVzIjozOTcsIi4vZGVzL2VkZSI6Mzk4LCIuL2Rlcy91dGlscyI6Mzk5fV0sMzk1OltmdW5jdGlv'@; put 'bihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIm1pbmltYWxpc3RpYy1hc3NlcnQiKSxhPXMoImluaGVyaXRzIiksbz17fTtmdW5jdGlvbiByKHQpe2IuZXF1YWwodC5sZW5ndGgsOCwiSW52YWxpZCBJViBsZW5ndGgiKSx0aGlzLml2PW5ldyBBcnJheSg4KTtmb3IodmFyIGU9MDtlPHRo'@; put 'aXMuaXYubGVuZ3RoO2UrKyl0aGlzLml2W2VdPXRbZV19Uy5pbnN0YW50aWF0ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGgpe3QuY2FsbCh0aGlzLGgpLHRoaXMuX2NiY0luaXQoKX1hKGUsdCk7Zm9yKHZhciBsPU9iamVjdC5rZXlzKG8pLG49MDtuPGwubGVuZ3RoO24rKyl7dmFyIGk9bFtu'@; put 'XTtlLnByb3RvdHlwZVtpXT1vW2ldfXJldHVybiBlLmNyZWF0ZT1mdW5jdGlvbihoKXtyZXR1cm4gbmV3IGUoaCl9LGV9LG8uX2NiY0luaXQ9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcih0aGlzLm9wdGlvbnMuaXYpO3RoaXMuX2NiY1N0YXRlPXR9LG8uX3VwZGF0ZT1mdW5jdGlvbih0LGUsbCxu'@; put 'KXt2YXIgaD10aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGUsZj10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2YXIgdT0wO3U8dGhpcy5ibG9ja1NpemU7dSsrKWZbdV1ePXRbZSt1XTtmb3IoaC5fdXBkYXRlLmNhbGwodGhpcyxmLDAsbCxu'@; put 'KSx1PTA7dTx0aGlzLmJsb2NrU2l6ZTt1KyspZlt1XT1sW24rdV19ZWxzZXtmb3IoaC5fdXBkYXRlLmNhbGwodGhpcyx0LGUsbCxuKSx1PTA7dTx0aGlzLmJsb2NrU2l6ZTt1KyspbFtuK3VdXj1mW3VdO2Zvcih1PTA7dTx0aGlzLmJsb2NrU2l6ZTt1KyspZlt1XT10W2UrdV19fX0se2luaGVy'@; put 'aXRzOjQ0MCwibWluaW1hbGlzdGljLWFzc2VydCI6NDUzfV0sMzk2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIm1pbmltYWxpc3RpYy1hc3NlcnQiKTtmdW5jdGlvbiBhKG8pe3RoaXMub3B0aW9ucz1vLHRoaXMudHlwZT10aGlzLm9wdGlvbnMudHlwZSx0aGlzLmJs'@; put 'b2NrU2l6ZT04LHRoaXMuX2luaXQoKSx0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5wYWRkaW5nPSExIT09by5wYWRkaW5nfUUuZXhwb3J0cz1hLGEucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS51cGRh'@; put 'dGU9ZnVuY3Rpb24obyl7cmV0dXJuIDA9PT1vLmxlbmd0aD9bXToiZGVjcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fdXBkYXRlRGVjcnlwdChvKTp0aGlzLl91cGRhdGVFbmNyeXB0KG8pfSxhLnByb3RvdHlwZS5fYnVmZmVyPWZ1bmN0aW9uKG8scil7Zm9yKHZhciB0PU1hdGgubWluKHRoaXMu'@; put 'YnVmZmVyLmxlbmd0aC10aGlzLmJ1ZmZlck9mZixvLmxlbmd0aC1yKSxlPTA7ZTx0O2UrKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZitlXT1vW3IrZV07cmV0dXJuIHRoaXMuYnVmZmVyT2ZmKz10LHR9LGEucHJvdG90eXBlLl9mbHVzaEJ1ZmZlcj1mdW5jdGlvbihvLHIpe3JldHVybiB0'@; put 'aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxvLHIpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5ibG9ja1NpemV9LGEucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0PWZ1bmN0aW9uKG8pe3ZhciByPTAsdD0wLGw9bmV3IEFycmF5KCgodGhpcy5idWZmZXJPZmYrby5sZW5ndGgpL3RoaXMuYmxvY2tT'@; put 'aXplfDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJihyKz10aGlzLl9idWZmZXIobyxyKSx0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKHQrPXRoaXMuX2ZsdXNoQnVmZmVyKGwsdCkpKTtmb3IodmFyIG49by5sZW5ndGgtKG8ubGVuZ3RoLXIpJXRo'@; put 'aXMuYmxvY2tTaXplO3I8bjtyKz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUobyxyLGwsdCksdCs9dGhpcy5ibG9ja1NpemU7Zm9yKDtyPG8ubGVuZ3RoO3IrKyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1vW3JdO3JldHVybiBsfSxhLnByb3RvdHlw'@; put 'ZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihvKXtmb3IodmFyIHI9MCx0PTAsZT1NYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmK28ubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxsPW5ldyBBcnJheShlKnRoaXMuYmxvY2tTaXplKTtlPjA7ZS0tKXIrPXRoaXMuX2J1ZmZlcihvLHIpLHQrPXRo'@; put 'aXMuX2ZsdXNoQnVmZmVyKGwsdCk7cmV0dXJuIHIrPXRoaXMuX2J1ZmZlcihvLHIpLGx9LGEucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKG8pe3ZhciByLHQ7cmV0dXJuIG8mJihyPXRoaXMudXBkYXRlKG8pKSx0PSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0'@; put 'aGlzLl9maW5hbERlY3J5cHQoKSxyP3IuY29uY2F0KHQpOnR9LGEucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24obyxyKXtpZigwPT09cilyZXR1cm4hMTtmb3IoO3I8by5sZW5ndGg7KW9bcisrXT0wO3JldHVybiEwfSxhLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRo'@; put 'aXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIG89bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsbywwKSxvfSxhLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24obyl7cmV0dXJuIG99LGEucHJv'@; put 'dG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXtiLmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLCJOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBvPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKG8sMCksdGhp'@; put 'cy5fdW5wYWQobyl9fSx7Im1pbmltYWxpc3RpYy1hc3NlcnQiOjQ1M31dLDM5NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJtaW5pbWFsaXN0aWMtYXNzZXJ0IiksYT1zKCJpbmhlcml0cyIpLG89cygiLi91dGlscyIpLHI9cygiLi9jaXBoZXIiKTtmdW5jdGlvbiB0'@; put 'KCl7dGhpcy50bXA9bmV3IEFycmF5KDIpLHRoaXMua2V5cz1udWxsfWZ1bmN0aW9uIGUobil7ci5jYWxsKHRoaXMsbik7dmFyIGk9bmV3IHQ7dGhpcy5fZGVzU3RhdGU9aSx0aGlzLmRlcml2ZUtleXMoaSxuLmtleSl9YShlLHIpLEUuZXhwb3J0cz1lLGUuY3JlYXRlPWZ1bmN0aW9uKG4pe3Jl'@; put 'dHVybiBuZXcgZShuKX07dmFyIGw9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO2UucHJvdG90eXBlLmRlcml2ZUtleXM9ZnVuY3Rpb24obixpKXtuLmtleXM9bmV3IEFycmF5KDMyKSxiLmVxdWFsKGkubGVuZ3RoLHRoaXMuYmxvY2tTaXplLCJJbnZhbGlkIGtleSBsZW5ndGgi'@; put 'KTt2YXIgaD1vLnJlYWRVSW50MzJCRShpLDApLGY9by5yZWFkVUludDMyQkUoaSw0KTtvLnBjMShoLGYsbi50bXAsMCksaD1uLnRtcFswXSxmPW4udG1wWzFdO2Zvcih2YXIgdT0wO3U8bi5rZXlzLmxlbmd0aDt1Kz0yKXt2YXIgcD1sW3U+Pj4xXTtoPW8ucjI4c2hsKGgscCksZj1vLnIyOHNo'@; put 'bChmLHApLG8ucGMyKGgsZixuLmtleXMsdSl9fSxlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKG4saSxoLGYpe3ZhciB1PXRoaXMuX2Rlc1N0YXRlLHA9by5yZWFkVUludDMyQkUobixpKSxkPW8ucmVhZFVJbnQzMkJFKG4saSs0KTtvLmlwKHAsZCx1LnRtcCwwKSxwPXUudG1wWzBdLGQ9'@; put 'dS50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQodSxwLGQsdS50bXAsMCk6dGhpcy5fZGVjcnlwdCh1LHAsZCx1LnRtcCwwKSxkPXUudG1wWzFdLG8ud3JpdGVVSW50MzJCRShoLHA9dS50bXBbMF0sZiksby53cml0ZVVJbnQzMkJFKGgsZCxmKzQpfSxlLnByb3Rv'@; put 'dHlwZS5fcGFkPWZ1bmN0aW9uKG4saSl7aWYoITE9PT10aGlzLnBhZGRpbmcpcmV0dXJuITE7Zm9yKHZhciBoPW4ubGVuZ3RoLWksZj1pO2Y8bi5sZW5ndGg7ZisrKW5bZl09aDtyZXR1cm4hMH0sZS5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKG4pe2lmKCExPT09dGhpcy5wYWRkaW5nKXJl'@; put 'dHVybiBuO2Zvcih2YXIgaT1uW24ubGVuZ3RoLTFdLGg9bi5sZW5ndGgtaTtoPG4ubGVuZ3RoO2grKyliLmVxdWFsKG5baF0saSk7cmV0dXJuIG4uc2xpY2UoMCxuLmxlbmd0aC1pKX0sZS5wcm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24obixpLGgsZix1KXtmb3IodmFyIHA9aSxkPWgsdj0w'@; put 'O3Y8bi5rZXlzLmxlbmd0aDt2Kz0yKXt2YXIgXz1uLmtleXNbdl0sQT1uLmtleXNbdisxXTtvLmV4cGFuZChkLG4udG1wLDApO3ZhciBJPW8uc3Vic3RpdHV0ZShfXj1uLnRtcFswXSxBXj1uLnRtcFsxXSksTD1kO2Q9KHBeby5wZXJtdXRlKEkpKT4+PjAscD1MfW8ucmlwKGQscCxmLHUpfSxl'@; put 'LnByb3RvdHlwZS5fZGVjcnlwdD1mdW5jdGlvbihuLGksaCxmLHUpe2Zvcih2YXIgcD1oLGQ9aSx2PW4ua2V5cy5sZW5ndGgtMjt2Pj0wO3YtPTIpe3ZhciBfPW4ua2V5c1t2XSxBPW4ua2V5c1t2KzFdO28uZXhwYW5kKHAsbi50bXAsMCk7dmFyIEk9by5zdWJzdGl0dXRlKF9ePW4udG1wWzBd'@; put 'LEFePW4udG1wWzFdKSxMPXA7cD0oZF5vLnBlcm11dGUoSSkpPj4+MCxkPUx9by5yaXAocCxkLGYsdSl9fSx7Ii4vY2lwaGVyIjozOTYsIi4vdXRpbHMiOjM5OSxpbmhlcml0czo0NDAsIm1pbmltYWxpc3RpYy1hc3NlcnQiOjQ1M31dLDM5ODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgYj1zKCJtaW5pbWFsaXN0aWMtYXNzZXJ0IiksYT1zKCJpbmhlcml0cyIpLG89cygiLi9jaXBoZXIiKSxyPXMoIi4vZGVzIik7ZnVuY3Rpb24gdChsLG4pe2IuZXF1YWwobi5sZW5ndGgsMjQsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBpPW4uc2xpY2UoMCw4KSxoPW4uc2xpY2Uo'@; put 'OCwxNiksZj1uLnNsaWNlKDE2LDI0KTt0aGlzLmNpcGhlcnM9ImVuY3J5cHQiPT09bD9bci5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTppfSksci5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpofSksci5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpmfSldOltyLmNyZWF0ZSh7dHlw'@; put 'ZToiZGVjcnlwdCIsa2V5OmZ9KSxyLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Omh9KSxyLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Oml9KV19ZnVuY3Rpb24gZShsKXtvLmNhbGwodGhpcyxsKTt2YXIgbj1uZXcgdCh0aGlzLnR5cGUsdGhpcy5vcHRpb25zLmtleSk7dGhpcy5fZWRl'@; put 'U3RhdGU9bn1hKGUsbyksRS5leHBvcnRzPWUsZS5jcmVhdGU9ZnVuY3Rpb24obCl7cmV0dXJuIG5ldyBlKGwpfSxlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGwsbixpLGgpe3ZhciBmPXRoaXMuX2VkZVN0YXRlO2YuY2lwaGVyc1swXS5fdXBkYXRlKGwsbixpLGgpLGYuY2lwaGVyc1sx'@; put 'XS5fdXBkYXRlKGksaCxpLGgpLGYuY2lwaGVyc1syXS5fdXBkYXRlKGksaCxpLGgpfSxlLnByb3RvdHlwZS5fcGFkPXIucHJvdG90eXBlLl9wYWQsZS5wcm90b3R5cGUuX3VucGFkPXIucHJvdG90eXBlLl91bnBhZH0seyIuL2NpcGhlciI6Mzk2LCIuL2RlcyI6Mzk3LGluaGVyaXRzOjQ0MCwi'@; put 'bWluaW1hbGlzdGljLWFzc2VydCI6NDUzfV0sMzk5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO1MucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHIsdCl7cmV0dXJuKHJbMCt0XTw8MjR8clsxK3RdPDwxNnxyWzIrdF08PDh8clszK3RdKT4+PjB9LFMud3JpdGVVSW50MzJCRT1mdW5jdGlv'@; put 'bihyLHQsZSl7clswK2VdPXQ+Pj4yNCxyWzErZV09dD4+PjE2JjI1NSxyWzIrZV09dD4+PjgmMjU1LHJbMytlXT0yNTUmdH0sUy5pcD1mdW5jdGlvbihyLHQsZSxsKXtmb3IodmFyIG49MCxpPTAsaD02O2g+PTA7aC09Mil7Zm9yKHZhciBmPTA7Zjw9MjQ7Zis9OCluPDw9MSxufD10Pj4+Zito'@; put 'JjE7Zm9yKGY9MDtmPD0yNDtmKz04KW48PD0xLG58PXI+Pj5mK2gmMX1mb3IoaD02O2g+PTA7aC09Mil7Zm9yKGY9MTtmPD0yNTtmKz04KWk8PD0xLGl8PXQ+Pj5mK2gmMTtmb3IoZj0xO2Y8PTI1O2YrPTgpaTw8PTEsaXw9cj4+PmYraCYxfWVbbCswXT1uPj4+MCxlW2wrMV09aT4+PjB9LFMu'@; put 'cmlwPWZ1bmN0aW9uKHIsdCxlLGwpe2Zvcih2YXIgbj0wLGk9MCxoPTA7aDw0O2grKylmb3IodmFyIGY9MjQ7Zj49MDtmLT04KW48PD0xLG58PXQ+Pj5mK2gmMSxuPDw9MSxufD1yPj4+ZitoJjE7Zm9yKGg9NDtoPDg7aCsrKWZvcihmPTI0O2Y+PTA7Zi09OClpPDw9MSxpfD10Pj4+ZitoJjEs'@; put 'aTw8PTEsaXw9cj4+PmYraCYxO2VbbCswXT1uPj4+MCxlW2wrMV09aT4+PjB9LFMucGMxPWZ1bmN0aW9uKHIsdCxlLGwpe2Zvcih2YXIgbj0wLGk9MCxoPTc7aD49NTtoLS0pe2Zvcih2YXIgZj0wO2Y8PTI0O2YrPTgpbjw8PTEsbnw9dD4+ZitoJjE7Zm9yKGY9MDtmPD0yNDtmKz04KW48PD0x'@; put 'LG58PXI+PmYraCYxfWZvcihmPTA7Zjw9MjQ7Zis9OCluPDw9MSxufD10Pj5mK2gmMTtmb3IoaD0xO2g8PTM7aCsrKXtmb3IoZj0wO2Y8PTI0O2YrPTgpaTw8PTEsaXw9dD4+ZitoJjE7Zm9yKGY9MDtmPD0yNDtmKz04KWk8PD0xLGl8PXI+PmYraCYxfWZvcihmPTA7Zjw9MjQ7Zis9OClpPDw9'@; put 'MSxpfD1yPj5mK2gmMTtlW2wrMF09bj4+PjAsZVtsKzFdPWk+Pj4wfSxTLnIyOHNobD1mdW5jdGlvbihyLHQpe3JldHVybiByPDx0JjI2ODQzNTQ1NXxyPj4+MjgtdH07dmFyIGI9WzE0LDExLDE3LDQsMjcsMjMsMjUsMCwxMywyMiw3LDE4LDUsOSwxNiwyNCwyLDIwLDEyLDIxLDEsOCwxNSwy'@; put 'NiwxNSw0LDI1LDE5LDksMSwyNiwxNiw1LDExLDIzLDgsMTIsNywxNywwLDIyLDMsMTAsMTQsNiwyMCwyNywyNF07Uy5wYzI9ZnVuY3Rpb24ocix0LGUsbCl7Zm9yKHZhciBuPTAsaT0wLGg9Yi5sZW5ndGg+Pj4xLGY9MDtmPGg7ZisrKW48PD0xLG58PXI+Pj5iW2ZdJjE7Zm9yKGY9aDtmPGIu'@; put 'bGVuZ3RoO2YrKylpPDw9MSxpfD10Pj4+YltmXSYxO2VbbCswXT1uPj4+MCxlW2wrMV09aT4+PjB9LFMuZXhwYW5kPWZ1bmN0aW9uKHIsdCxlKXt2YXIgbD0wLG49MDtsPSgxJnIpPDw1fHI+Pj4yNztmb3IodmFyIGk9MjM7aT49MTU7aS09NClsPDw9NixsfD1yPj4+aSY2Mztmb3IoaT0xMTtp'@; put 'Pj0zO2ktPTQpbnw9cj4+PmkmNjMsbjw8PTY7bnw9KDMxJnIpPDwxfHI+Pj4zMSx0W2UrMF09bD4+PjAsdFtlKzFdPW4+Pj4wfTt2YXIgYT1bMTQsMCw0LDE1LDEzLDcsMSw0LDIsMTQsMTUsMiwxMSwxMyw4LDEsMywxMCwxMCw2LDYsMTIsMTIsMTEsNSw5LDksNSwwLDMsNyw4LDQsMTUsMSwx'@; put 'MiwxNCw4LDgsMiwxMyw0LDYsOSwyLDEsMTEsNywxNSw1LDEyLDExLDksMyw3LDE0LDMsMTAsMTAsMCw1LDYsMCwxMywxNSwzLDEsMTMsOCw0LDE0LDcsNiwxNSwxMSwyLDMsOCw0LDE0LDksMTIsNywwLDIsMSwxMywxMCwxMiw2LDAsOSw1LDExLDEwLDUsMCwxMywxNCw4LDcsMTAsMTEsMSwx'@; put 'MCwzLDQsMTUsMTMsNCwxLDIsNSwxMSw4LDYsMTIsNyw2LDEyLDksMCwzLDUsMiwxNCwxNSw5LDEwLDEzLDAsNyw5LDAsMTQsOSw2LDMsMyw0LDE1LDYsNSwxMCwxLDIsMTMsOCwxMiw1LDcsMTQsMTEsMTIsNCwxMSwyLDE1LDgsMSwxMywxLDYsMTAsNCwxMyw5LDAsOCw2LDE1LDksMyw4LDAs'@; put 'NywxMSw0LDEsMTUsMiwxNCwxMiwzLDUsMTEsMTAsNSwxNCwyLDcsMTIsNywxMywxMyw4LDE0LDExLDMsNSwwLDYsNiwxNSw5LDAsMTAsMywxLDQsMiw3LDgsMiw1LDEyLDExLDEsMTIsMTAsNCwxNCwxNSw5LDEwLDMsNiwxNSw5LDAsMCw2LDEyLDEwLDExLDEsNywxMywxMyw4LDE1LDksMSw0'@; put 'LDMsNSwxNCwxMSw1LDEyLDIsNyw4LDIsNCwxNCwyLDE0LDEyLDExLDQsMiwxLDEyLDcsNCwxMCw3LDExLDEzLDYsMSw4LDUsNSwwLDMsMTUsMTUsMTAsMTMsMywwLDksMTQsOCw5LDYsNCwxMSwyLDgsMSwxMiwxMSw3LDEwLDEsMTMsMTQsNywyLDgsMTMsMTUsNiw5LDE1LDEyLDAsNSw5LDYs'@; put 'MTAsMyw0LDAsNSwxNCwzLDEyLDEwLDEsMTUsMTAsNCwxNSwyLDksNywyLDEyLDYsOSw4LDUsMCw2LDEzLDEsMywxMyw0LDE0LDE0LDAsNywxMSw1LDMsMTEsOCw5LDQsMTQsMywxNSwyLDUsMTIsMiw5LDgsNSwxMiwxNSwzLDEwLDcsMTEsMCwxNCw0LDEsMTAsNywxLDYsMTMsMCwxMSw4LDYs'@; put 'MTMsNCwxMywxMSwwLDIsMTEsMTQsNywxNSw0LDAsOSw4LDEsMTMsMTAsMywxNCwxMiwzLDksNSw3LDEyLDUsMiwxMCwxNSw2LDgsMSw2LDEsNiw0LDExLDExLDEzLDEzLDgsMTIsMSwzLDQsNywxMCwxNCw3LDEwLDksMTUsNSw2LDAsOCwxNSwwLDE0LDUsMiw5LDMsMiwxMiwxMywxLDIsMTUs'@; put 'OCwxMyw0LDgsNiwxMCwxNSwzLDExLDcsMSw0LDEwLDEyLDksNSwzLDYsMTQsMTEsNSwwLDAsMTQsMTIsOSw3LDIsNywyLDExLDEsNCwxNCwxLDcsOSw0LDEyLDEwLDE0LDgsMiwxMywwLDE1LDYsMTIsMTAsOSwxMywwLDE1LDMsMyw1LDUsNiw4LDExXTtTLnN1YnN0aXR1dGU9ZnVuY3Rpb24o'@; put 'cix0KXtmb3IodmFyIGU9MCxsPTA7bDw0O2wrKyllPDw9NCxlfD1hWzY0KmwrKHI+Pj4xOC02KmwmNjMpXTtmb3IobD0wO2w8NDtsKyspZTw8PTQsZXw9YVsyNTYrNjQqbCsodD4+PjE4LTYqbCY2MyldO3JldHVybiBlPj4+MH07dmFyIG89WzE2LDI1LDEyLDExLDMsMjAsNCwxNSwzMSwxNyw5'@; put 'LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDddO1MucGVybXV0ZT1mdW5jdGlvbihyKXtmb3IodmFyIHQ9MCxlPTA7ZTxvLmxlbmd0aDtlKyspdDw8PTEsdHw9cj4+Pm9bZV0mMTtyZXR1cm4gdD4+PjB9LFMucGFkU3BsaXQ9ZnVuY3Rpb24o'@; put 'cix0LGUpe2Zvcih2YXIgbD1yLnRvU3RyaW5nKDIpO2wubGVuZ3RoPHQ7KWw9IjAiK2w7Zm9yKHZhciBuPVtdLGk9MDtpPHQ7aSs9ZSluLnB1c2gobC5zbGljZShpLGkrZSkpO3JldHVybiBuLmpvaW4oIiAiKX19LHt9XSw0MDA6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0'@; put 'aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPXMoIi4vbGliL2dlbmVyYXRlUHJpbWUiKSxvPXMoIi4vbGliL3ByaW1lcy5qc29uIikscj1zKCIuL2xpYi9kaCIpLHQ9e2JpbmFyeTohMCxoZXg6ITAsYmFzZTY0OiEwfTtTLkRpZmZpZUhlbGxtYW5Hcm91cD1TLmNyZWF0ZURpZmZpZUhlbGxtYW5H'@; put 'cm91cD1TLmdldERpZmZpZUhlbGxtYW49ZnVuY3Rpb24oZSl7dmFyIGw9bmV3IGIob1tlXS5wcmltZSwiaGV4Iiksbj1uZXcgYihvW2VdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyByKGwsbil9LFMuY3JlYXRlRGlmZmllSGVsbG1hbj1TLkRpZmZpZUhlbGxtYW49ZnVuY3Rpb24gZShsLG4saSxo'@; put 'KXtyZXR1cm4gYi5pc0J1ZmZlcihuKXx8dm9pZCAwPT09dFtuXT9lKGwsImJpbmFyeSIsbixpKToobj1ufHwiYmluYXJ5IixoPWh8fCJiaW5hcnkiLGk9aXx8bmV3IGIoWzJdKSxiLmlzQnVmZmVyKGkpfHwoaT1uZXcgYihpLGgpKSwibnVtYmVyIj09dHlwZW9mIGw/bmV3IHIoYShsLGkpLGks'@; put 'ITApOihiLmlzQnVmZmVyKGwpfHwobD1uZXcgYihsLG4pKSxuZXcgcihsLGksITApKSl9fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJidWZmZXIiKS5CdWZmZXIpfSx7Ii4vbGliL2RoIjo0MDEsIi4vbGliL2dlbmVyYXRlUHJpbWUiOjQwMiwiLi9saWIvcHJpbWVzLmpzb24iOjQwMyxi'@; put 'dWZmZXI6MjIwfV0sNDAxOltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgYT1zKCJibi5qcyIpLG89bmV3KHMoIm1pbGxlci1yYWJpbiIpKSxyPW5ldyBhKDI0KSx0PW5ldyBhKDExKSxlPW5ldyBhKDEwKSxsPW5ldyBhKDMpLG49bmV3'@; put 'IGEoNyksaT1zKCIuL2dlbmVyYXRlUHJpbWUiKSxoPXMoInJhbmRvbWJ5dGVzIik7ZnVuY3Rpb24gZihfLEEpe3JldHVybiBBPUF8fCJ1dGY4IixiLmlzQnVmZmVyKF8pfHwoXz1uZXcgYihfLEEpKSx0aGlzLl9wdWI9bmV3IGEoXyksdGhpc31mdW5jdGlvbiB1KF8sQSl7cmV0dXJuIEE9QXx8'@; put 'InV0ZjgiLGIuaXNCdWZmZXIoXyl8fChfPW5ldyBiKF8sQSkpLHRoaXMuX3ByaXY9bmV3IGEoXyksdGhpc31FLmV4cG9ydHM9ZDt2YXIgcD17fTtmdW5jdGlvbiBkKF8sQSxJKXt0aGlzLnNldEdlbmVyYXRvcihBKSx0aGlzLl9fcHJpbWU9bmV3IGEoXyksdGhpcy5fcHJpbWU9YS5tb250KHRo'@; put 'aXMuX19wcmltZSksdGhpcy5fcHJpbWVMZW49Xy5sZW5ndGgsdGhpcy5fcHViPXZvaWQgMCx0aGlzLl9wcml2PXZvaWQgMCx0aGlzLl9wcmltZUNvZGU9dm9pZCAwLEk/KHRoaXMuc2V0UHVibGljS2V5PWYsdGhpcy5zZXRQcml2YXRlS2V5PXUpOnRoaXMuX3ByaW1lQ29kZT04fWZ1bmN0aW9u'@; put 'IHYoXyxBKXt2YXIgST1uZXcgYihfLnRvQXJyYXkoKSk7cmV0dXJuIEE/SS50b1N0cmluZyhBKTpJfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLnByb3RvdHlwZSwidmVyaWZ5RXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiJudW1iZXIiIT10eXBlb2YgdGhpcy5f'@; put 'cHJpbWVDb2RlJiYodGhpcy5fcHJpbWVDb2RlPWZ1bmN0aW9uKF8sQSl7dmFyIEk9QS50b1N0cmluZygiaGV4IiksTD1bSSxfLnRvU3RyaW5nKDE2KV0uam9pbigiXyIpO2lmKEwgaW4gcClyZXR1cm4gcFtMXTt2YXIgTixQPTA7aWYoXy5pc0V2ZW4oKXx8IWkuc2ltcGxlU2lldmV8fCFpLmZl'@; put 'cm1hdFRlc3QoXyl8fCFvLnRlc3QoXykpcmV0dXJuIFArPTEscFtMXT1QKz0iMDIiPT09SXx8IjA1Ij09PUk/ODo0LFA7c3dpdGNoKG8udGVzdChfLnNocm4oMSkpfHwoUCs9MiksSSl7Y2FzZSIwMiI6Xy5tb2QocikuY21wKHQpJiYoUCs9OCk7YnJlYWs7Y2FzZSIwNSI6KE49Xy5tb2QoZSkp'@; put 'LmNtcChsKSYmTi5jbXAobikmJihQKz04KTticmVhaztkZWZhdWx0OlArPTR9cmV0dXJuIHBbTF09UCxQfSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRoaXMuX3ByaW1lQ29kZX19KSxkLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpdnx8KHRo'@; put 'aXMuX3ByaXY9bmV3IGEoaCh0aGlzLl9wcmltZUxlbikpKSx0aGlzLl9wdWI9dGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpLHRoaXMuZ2V0UHVibGljS2V5KCl9LGQucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQ9ZnVuY3Rpb24oXyl7dmFy'@; put 'IEE9KF89KF89bmV3IGEoXykpLnRvUmVkKHRoaXMuX3ByaW1lKSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSxJPW5ldyBiKEEudG9BcnJheSgpKSxMPXRoaXMuZ2V0UHJpbWUoKTtpZihJLmxlbmd0aDxMLmxlbmd0aCl7dmFyIE49bmV3IGIoTC5sZW5ndGgtSS5sZW5ndGgpO04uZmls'@; put 'bCgwKSxJPWIuY29uY2F0KFtOLEldKX1yZXR1cm4gSX0sZC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKF8pe3JldHVybiB2KHRoaXMuX3B1YixfKX0sZC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihfKXtyZXR1cm4gdih0aGlzLl9wcml2LF8pfSxkLnByb3RvdHlw'@; put 'ZS5nZXRQcmltZT1mdW5jdGlvbihfKXtyZXR1cm4gdih0aGlzLl9fcHJpbWUsXyl9LGQucHJvdG90eXBlLmdldEdlbmVyYXRvcj1mdW5jdGlvbihfKXtyZXR1cm4gdih0aGlzLl9nZW4sXyl9LGQucHJvdG90eXBlLnNldEdlbmVyYXRvcj1mdW5jdGlvbihfLEEpe3JldHVybiBBPUF8fCJ1dGY4'@; put 'IixiLmlzQnVmZmVyKF8pfHwoXz1uZXcgYihfLEEpKSx0aGlzLl9fZ2VuPV8sdGhpcy5fZ2VuPW5ldyBhKF8pLHRoaXN9fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJidWZmZXIiKS5CdWZmZXIpfSx7Ii4vZ2VuZXJhdGVQcmltZSI6NDAyLCJibi5qcyI6NDA0LGJ1ZmZlcjoyMjAsIm1p'@; put 'bGxlci1yYWJpbiI6NDUxLHJhbmRvbWJ5dGVzOjQ3NX1dLDQwMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJyYW5kb21ieXRlcyIpO0UuZXhwb3J0cz1fLF8uc2ltcGxlU2lldmU9ZCxfLmZlcm1hdFRlc3Q9djt2YXIgYT1zKCJibi5qcyIpLG89bmV3IGEoMjQpLHI9'@; put 'bmV3KHMoIm1pbGxlci1yYWJpbiIpKSx0PW5ldyBhKDEpLGU9bmV3IGEoMiksbD1uZXcgYSg1KSxuPShuZXcgYSgxNiksbmV3IGEoOCksbmV3IGEoMTApKSxpPW5ldyBhKDMpLGg9KG5ldyBhKDcpLG5ldyBhKDExKSksZj1uZXcgYSg0KSx1PShuZXcgYSgxMiksbnVsbCk7ZnVuY3Rpb24gZChB'@; put 'KXtmb3IodmFyIEk9ZnVuY3Rpb24gcCgpe2lmKG51bGwhPT11KXJldHVybiB1O3ZhciBBPVtdO0FbMF09Mjtmb3IodmFyIEk9MSxMPTM7TDwxMDQ4NTc2O0wrPTIpe2Zvcih2YXIgTj1NYXRoLmNlaWwoTWF0aC5zcXJ0KEwpKSxQPTA7UDxJJiZBW1BdPD1OJiZMJUFbUF0hPTA7UCsrKTtJIT09'@; put 'UCYmQVtQXTw9Tnx8KEFbSSsrXT1MKX1yZXR1cm4gdT1BLEF9KCksTD0wO0w8SS5sZW5ndGg7TCsrKWlmKDA9PT1BLm1vZG4oSVtMXSkpcmV0dXJuIDA9PT1BLmNtcG4oSVtMXSk7cmV0dXJuITB9ZnVuY3Rpb24gdihBKXt2YXIgST1hLm1vbnQoQSk7cmV0dXJuIDA9PT1lLnRvUmVkKEkpLnJl'@; put 'ZFBvdyhBLnN1Ym4oMSkpLmZyb21SZWQoKS5jbXBuKDEpfWZ1bmN0aW9uIF8oQSxJKXtpZihBPDE2KXJldHVybiBuZXcgYSgyPT09SXx8NT09PUk/WzE0MCwxMjNdOlsxNDAsMzldKTt2YXIgTCxOO2ZvcihJPW5ldyBhKEkpOzspe2ZvcihMPW5ldyBhKGIoTWF0aC5jZWlsKEEvOCkpKTtMLmJp'@; put 'dExlbmd0aCgpPkE7KUwuaXNocm4oMSk7aWYoTC5pc0V2ZW4oKSYmTC5pYWRkKHQpLEwudGVzdG4oMSl8fEwuaWFkZChlKSxJLmNtcChlKSl7aWYoIUkuY21wKGwpKWZvcig7TC5tb2QobikuY21wKGkpOylMLmlhZGQoZil9ZWxzZSBmb3IoO0wubW9kKG8pLmNtcChoKTspTC5pYWRkKGYpO2lm'@; put 'KGQoTj1MLnNocm4oMSkpJiZkKEwpJiZ2KE4pJiZ2KEwpJiZyLnRlc3QoTikmJnIudGVzdChMKSlyZXR1cm4gTH19fSx7ImJuLmpzIjo0MDQsIm1pbGxlci1yYWJpbiI6NDUxLHJhbmRvbWJ5dGVzOjQ3NX1dLDQwMzpbZnVuY3Rpb24ocyxFLFMpe0UuZXhwb3J0cz17bW9kcDE6e2dlbjoiMDIi'@; put 'LHByaW1lOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3'@; put 'ZWM2ZjQ0YzQyZTlhNjNhMzYyMGZmZmZmZmZmZmZmZmZmZmYifSxtb2RwMjp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIz'@; put 'Y2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U2NTM4MWZmZmZmZmZmZmZmZmZmZmYifSxtb2RwNTp7Z2Vu'@; put 'OiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2'@; put 'NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1'@; put 'MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxNDp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVh'@; put 'NjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0'@; put 'NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5'@; put 'YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhY2FhNjhmZmZmZmZmZmZmZmZmZmZmIn0sbW9kcDE1OntnZW46IjAyIixwcmltZToiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2'@; put 'OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2Vk'@; put 'ZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2'@; put 'YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRm'@; put 'MWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2'@; put 'Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkzYWQyY2FmZmZmZmZmZmZmZmZmZmZmIn0sbW9kcDE2OntnZW46IjAyIixwcmltZToiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4'@; put 'YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFm'@; put 'ZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5'@; put 'ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3'@; put 'NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVh'@; put 'YjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5'@; put 'YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxNzp7Z2VuOiIwMiIscHJp'@; put 'bWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZm'@; put 'NDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5'@; put 'MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFh'@; put 'YWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0'@; put 'NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNl'@; put 'OWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkw'@; put 'YTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIx'@; put 'YmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFk'@; put 'NDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYz'@; put 'ZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxODp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0'@; put 'YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4'@; put 'YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdh'@; put 'MjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2Fi'@; put 'ZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEy'@; put 'MGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTVi'@; put 'ZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVl'@; put 'NWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3'@; put 'Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdj'@; put 'NWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkYmUxMTU5NzRhMzkyNmYxMmZlZTVlNDM4Nzc3Y2I2YTkzMmRmOGNkOGJlYzRkMDczYjkzMWJh'@; put 'M2JjODMyYjY4ZDlkZDMwMDc0MWZhN2JmOGFmYzQ3ZWQyNTc2ZjY5MzZiYTQyNDY2M2FhYjYzOWM1YWU0ZjU2ODM0MjNiNDc0MmJmMWM5NzgyMzhmMTZjYmUzOWQ2NTJkZTNmZGI4YmVmYzg0OGFkOTIyMjIyZTA0YTQwMzdjMDcxM2ViNTdhODFhMjNmMGM3MzQ3M2ZjNjQ2Y2VhMzA2YjRiY2Jj'@; put 'ODg2MmY4Mzg1ZGRmYTlkNGI3ZmEyYzA4N2U4Nzk2ODMzMDNlZDViZGQzYTA2MmIzY2Y1YjNhMjc4YTY2ZDJhMTNmODNmNDRmODJkZGYzMTBlZTA3NGFiNmEzNjQ1OTdlODk5YTAyNTVkYzE2NGYzMWNjNTA4NDY4NTFkZjlhYjQ4MTk1ZGVkN2VhMWIxZDUxMGJkN2VlNzRkNzNmYWYzNmJjMzFl'@; put 'Y2ZhMjY4MzU5MDQ2ZjRlYjg3OWY5MjQwMDk0MzhiNDgxYzZjZDc4ODlhMDAyZWQ1ZWUzODJiYzkxOTBkYTZmYzAyNmU0Nzk1NThlNDQ3NTY3N2U5YWE5ZTMwNTBlMjc2NTY5NGRmYzgxZjU2ZTg4MGI5NmU3MTYwYzk4MGRkOThlZGQzZGZmZmZmZmZmZmZmZmZmZmZmIn19fSx7fV0sNDA0Oltm'@; put 'dW5jdGlvbihzLEUsUyl7YXJndW1lbnRzWzRdWzE4NF1bMF0uYXBwbHkoUyxhcmd1bWVudHMpfSx7YnVmZmVyOjE4OCxkdXA6MTg0fV0sNDA1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPVM7Yi52ZXJzaW9uPXMoIi4uL3BhY2thZ2UuanNvbiIpLnZlcnNpb24sYi51dGls'@; put 'cz1zKCIuL2VsbGlwdGljL3V0aWxzIiksYi5yYW5kPXMoImJyb3JhbmQiKSxiLmN1cnZlPXMoIi4vZWxsaXB0aWMvY3VydmUiKSxiLmN1cnZlcz1zKCIuL2VsbGlwdGljL2N1cnZlcyIpLGIuZWM9cygiLi9lbGxpcHRpYy9lYyIpLGIuZWRkc2E9cygiLi9lbGxpcHRpYy9lZGRzYSIpfSx7Ii4u'@; put 'L3BhY2thZ2UuanNvbiI6NDIxLCIuL2VsbGlwdGljL2N1cnZlIjo0MDgsIi4vZWxsaXB0aWMvY3VydmVzIjo0MTEsIi4vZWxsaXB0aWMvZWMiOjQxMiwiLi9lbGxpcHRpYy9lZGRzYSI6NDE1LCIuL2VsbGlwdGljL3V0aWxzIjo0MTksYnJvcmFuZDoxODd9XSw0MDY6W2Z1bmN0aW9uKHMsRSxT'@; put 'KXsidXNlIHN0cmljdCI7dmFyIGI9cygiYm4uanMiKSxhPXMoIi4uL3V0aWxzIiksbz1hLmdldE5BRixyPWEuZ2V0SlNGLHQ9YS5hc3NlcnQ7ZnVuY3Rpb24gZShuLGkpe3RoaXMudHlwZT1uLHRoaXMucD1uZXcgYihpLnAsMTYpLHRoaXMucmVkPWkucHJpbWU/Yi5yZWQoaS5wcmltZSk6Yi5t'@; put 'b250KHRoaXMucCksdGhpcy56ZXJvPW5ldyBiKDApLnRvUmVkKHRoaXMucmVkKSx0aGlzLm9uZT1uZXcgYigxKS50b1JlZCh0aGlzLnJlZCksdGhpcy50d289bmV3IGIoMikudG9SZWQodGhpcy5yZWQpLHRoaXMubj1pLm4mJm5ldyBiKGkubiwxNiksdGhpcy5nPWkuZyYmdGhpcy5wb2ludEZy'@; put 'b21KU09OKGkuZyxpLmdSZWQpLHRoaXMuX3duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQyPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDM9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUND1uZXcgQXJyYXkoNCksdGhpcy5fYml0TGVuZ3RoPXRoaXMubj90aGlzLm4uYml0TGVuZ3RoKCk6'@; put 'MDt2YXIgaD10aGlzLm4mJnRoaXMucC5kaXYodGhpcy5uKTshaHx8aC5jbXBuKDEwMCk+MD90aGlzLnJlZE49bnVsbDoodGhpcy5fbWF4d2VsbFRyaWNrPSEwLHRoaXMucmVkTj10aGlzLm4udG9SZWQodGhpcy5yZWQpKX1mdW5jdGlvbiBsKG4saSl7dGhpcy5jdXJ2ZT1uLHRoaXMudHlwZT1p'@; put 'LHRoaXMucHJlY29tcHV0ZWQ9bnVsbH1FLmV4cG9ydHM9ZSxlLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9LGUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQi'@; put 'KX0sZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsPWZ1bmN0aW9uKG4saSl7dChuLnByZWNvbXB1dGVkKTt2YXIgaD1uLl9nZXREb3VibGVzKCksZj1vKGksMSx0aGlzLl9iaXRMZW5ndGgpLHU9KDE8PGguc3RlcCsxKS0oaC5zdGVwJTI9PTA/MjoxKTt1Lz0zO3ZhciBwLGQsdj1bXTtmb3IocD0w'@; put 'O3A8Zi5sZW5ndGg7cCs9aC5zdGVwKXtkPTA7Zm9yKHZhciBfPXAraC5zdGVwLTE7Xz49cDtfLS0pZD0oZDw8MSkrZltfXTt2LnB1c2goZCl9Zm9yKHZhciBBPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxJPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxMPXU7TD4wO0wtLSl7Zm9y'@; put 'KHA9MDtwPHYubGVuZ3RoO3ArKykoZD12W3BdKT09PUw/ST1JLm1peGVkQWRkKGgucG9pbnRzW3BdKTpkPT09LUwmJihJPUkubWl4ZWRBZGQoaC5wb2ludHNbcF0ubmVnKCkpKTtBPUEuYWRkKEkpfXJldHVybiBBLnRvUCgpfSxlLnByb3RvdHlwZS5fd25hZk11bD1mdW5jdGlvbihuLGkpe2Zv'@; put 'cih2YXIgaD00LGY9bi5fZ2V0TkFGUG9pbnRzKGgpLHU9Zi5wb2ludHMscD1vKGksaD1mLnduZCx0aGlzLl9iaXRMZW5ndGgpLGQ9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHY9cC5sZW5ndGgtMTt2Pj0wO3YtLSl7Zm9yKHZhciBfPTA7dj49MCYmMD09PXBbdl07di0tKV8rKztpZih2'@; put 'Pj0wJiZfKyssZD1kLmRibHAoXyksdjwwKWJyZWFrO3ZhciBBPXBbdl07dCgwIT09QSksZD0iYWZmaW5lIj09PW4udHlwZT9kLm1peGVkQWRkKEE+MD91W0EtMT4+MV06dVstQS0xPj4xXS5uZWcoKSk6ZC5hZGQoQT4wP3VbQS0xPj4xXTp1Wy1BLTE+PjFdLm5lZygpKX1yZXR1cm4iYWZmaW5l'@; put 'Ij09PW4udHlwZT9kLnRvUCgpOmR9LGUucHJvdG90eXBlLl93bmFmTXVsQWRkPWZ1bmN0aW9uKG4saSxoLGYsdSl7dmFyIHAsZCx2LF89dGhpcy5fd25hZlQxLEE9dGhpcy5fd25hZlQyLEk9dGhpcy5fd25hZlQzLEw9MDtmb3IocD0wO3A8ZjtwKyspe3ZhciBOPSh2PWlbcF0pLl9nZXROQUZQ'@; put 'b2ludHMobik7X1twXT1OLnduZCxBW3BdPU4ucG9pbnRzfWZvcihwPWYtMTtwPj0xO3AtPTIpe3ZhciBQPXAtMSxCPXA7aWYoMT09PV9bUF0mJjE9PT1fW0JdKXt2YXIgJD1baVtQXSxudWxsLG51bGwsaVtCXV07MD09PWlbUF0ueS5jbXAoaVtCXS55KT8oJFsxXT1pW1BdLmFkZChpW0JdKSwk'@; put 'WzJdPWlbUF0udG9KKCkubWl4ZWRBZGQoaVtCXS5uZWcoKSkpOjA9PT1pW1BdLnkuY21wKGlbQl0ueS5yZWROZWcoKSk/KCRbMV09aVtQXS50b0ooKS5taXhlZEFkZChpW0JdKSwkWzJdPWlbUF0uYWRkKGlbQl0ubmVnKCkpKTooJFsxXT1pW1BdLnRvSigpLm1peGVkQWRkKGlbQl0pLCRbMl09'@; put 'aVtQXS50b0ooKS5taXhlZEFkZChpW0JdLm5lZygpKSk7dmFyIEQ9Wy0zLC0xLC01LC03LDAsNyw1LDEsM10seD1yKGhbUF0saFtCXSk7Zm9yKEw9TWF0aC5tYXgoeFswXS5sZW5ndGgsTCksSVtQXT1uZXcgQXJyYXkoTCksSVtCXT1uZXcgQXJyYXkoTCksZD0wO2Q8TDtkKyspSVtQXVtkXT1E'@; put 'WzMqKDErKDB8eFswXVtkXSkpKygxKygwfHhbMV1bZF0pKV0sSVtCXVtkXT0wLEFbUF09JH1lbHNlIElbUF09byhoW1BdLF9bUF0sdGhpcy5fYml0TGVuZ3RoKSxJW0JdPW8oaFtCXSxfW0JdLHRoaXMuX2JpdExlbmd0aCksTD1NYXRoLm1heChJW1BdLmxlbmd0aCxMKSxMPU1hdGgubWF4KElb'@; put 'Ql0ubGVuZ3RoLEwpfXZhciBjPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxtPXRoaXMuX3duYWZUNDtmb3IocD1MO3A+PTA7cC0tKXtmb3IodmFyIGc9MDtwPj0wOyl7dmFyIHk9ITA7Zm9yKGQ9MDtkPGY7ZCsrKW1bZF09MHxJW2RdW3BdLDAhPT1tW2RdJiYoeT0hMSk7aWYoIXkpYnJl'@; put 'YWs7ZysrLHAtLX1pZihwPj0wJiZnKyssYz1jLmRibHAoZykscDwwKWJyZWFrO2ZvcihkPTA7ZDxmO2QrKyl7dmFyIHc9bVtkXTswIT09dyYmKHc+MD92PUFbZF1bdy0xPj4xXTp3PDAmJih2PUFbZF1bLXctMT4+MV0ubmVnKCkpLGM9ImFmZmluZSI9PT12LnR5cGU/Yy5taXhlZEFkZCh2KTpj'@; put 'LmFkZCh2KSl9fWZvcihwPTA7cDxmO3ArKylBW3BdPW51bGw7cmV0dXJuIHU/YzpjLnRvUCgpfSxlLkJhc2VQb2ludD1sLGwucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sbC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0sZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24obixpKXtuPWEudG9BcnJheShuLGkpO3ZhciBoPXRoaXMucC5ieXRlTGVuZ3RoKCk7aWYoKDQ9PT1uWzBdfHw2PT09blswXXx8Nz09PW5bMF0pJiZuLmxlbmd0aC0xPT0yKmgp'@; put 'cmV0dXJuIDY9PT1uWzBdP3QobltuLmxlbmd0aC0xXSUyPT0wKTo3PT09blswXSYmdChuW24ubGVuZ3RoLTFdJTI9PTEpLHRoaXMucG9pbnQobi5zbGljZSgxLDEraCksbi5zbGljZSgxK2gsMSsyKmgpKTtpZigoMj09PW5bMF18fDM9PT1uWzBdKSYmbi5sZW5ndGgtMT09PWgpcmV0dXJuIHRo'@; put 'aXMucG9pbnRGcm9tWChuLnNsaWNlKDEsMStoKSwzPT09blswXSk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHBvaW50IGZvcm1hdCIpfSxsLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmVuY29kZShuLCEwKX0sbC5wcm90b3R5cGUuX2VuY29k'@; put 'ZT1mdW5jdGlvbihuKXt2YXIgaT10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLGg9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLGkpO3JldHVybiBuP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNvbmNhdChoKTpbNF0uY29uY2F0KGgsdGhpcy5nZXRZKCkudG9BcnJheSgiYmUiLGkpKX0s'@; put 'bC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKG4saSl7cmV0dXJuIGEuZW5jb2RlKHRoaXMuX2VuY29kZShpKSxuKX0sbC5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbihuKXtpZih0aGlzLnByZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciBpPXtkb3VibGVzOm51bGwsbmFmOm51bGws'@; put 'YmV0YTpudWxsfTtyZXR1cm4gaS5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpLGkuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsbiksaS5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlzLnByZWNvbXB1dGVkPWksdGhpc30sbC5wcm90b3R5cGUuX2hhc0RvdWJsZXM9ZnVuY3Rpb24obil7aWYo'@; put 'IXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuITE7dmFyIGk9dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3JldHVybiEhaSYmaS5wb2ludHMubGVuZ3RoPj1NYXRoLmNlaWwoKG4uYml0TGVuZ3RoKCkrMSkvaS5zdGVwKX0sbC5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24obixpKXtpZih0'@; put 'aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIGg9W3RoaXNdLGY9dGhpcyx1PTA7dTxpO3UrPW4pe2Zvcih2YXIgcD0wO3A8bjtwKyspZj1mLmRibCgpO2gucHVzaChmKX1yZXR1cm57c3RlcDpu'@; put 'LHBvaW50czpofX0sbC5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihuKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7Zm9yKHZhciBpPVt0aGlzXSxoPSgxPDxuKS0xLGY9MT09PWg/bnVsbDp0aGlz'@; put 'LmRibCgpLHU9MTt1PGg7dSsrKWlbdV09aVt1LTFdLmFkZChmKTtyZXR1cm57d25kOm4scG9pbnRzOml9fSxsLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe3JldHVybiBudWxsfSxsLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKG4pe2Zvcih2YXIgaT10aGlzLGg9MDtoPG47aCsrKWk9'@; put 'aS5kYmwoKTtyZXR1cm4gaX19LHsiLi4vdXRpbHMiOjQxOSwiYm4uanMiOjQyMH1dLDQwNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi91dGlscyIpLGE9cygiYm4uanMiKSxvPXMoImluaGVyaXRzIikscj1zKCIuL2Jhc2UiKSx0PWIuYXNzZXJ0O2Z1bmN0aW9u'@; put 'IGUobil7dGhpcy50d2lzdGVkPTEhPSgwfG4uYSksdGhpcy5tT25lQT10aGlzLnR3aXN0ZWQmJi0xPT0oMHxuLmEpLHRoaXMuZXh0ZW5kZWQ9dGhpcy5tT25lQSxyLmNhbGwodGhpcywiZWR3YXJkcyIsbiksdGhpcy5hPW5ldyBhKG4uYSwxNikudW1vZCh0aGlzLnJlZC5tKSx0aGlzLmE9dGhp'@; put 'cy5hLnRvUmVkKHRoaXMucmVkKSx0aGlzLmM9bmV3IGEobi5jLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5jMj10aGlzLmMucmVkU3FyKCksdGhpcy5kPW5ldyBhKG4uZCwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuZGQ9dGhpcy5kLnJlZEFkZCh0aGlzLmQpLHQoIXRoaXMudHdpc3RlZHx8'@; put 'MD09PXRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSksdGhpcy5vbmVDPTE9PSgwfG4uYyl9ZnVuY3Rpb24gbChuLGksaCxmLHUpe3IuQmFzZVBvaW50LmNhbGwodGhpcyxuLCJwcm9qZWN0aXZlIiksbnVsbD09PWkmJm51bGw9PT1oJiZudWxsPT09Zj8odGhpcy54PXRoaXMuY3VydmUuemVybyx0'@; put 'aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMudD10aGlzLmN1cnZlLnplcm8sdGhpcy56T25lPSEwKToodGhpcy54PW5ldyBhKGksMTYpLHRoaXMueT1uZXcgYShoLDE2KSx0aGlzLno9Zj9uZXcgYShmLDE2KTp0aGlzLmN1cnZlLm9uZSx0aGlzLnQ9dSYm'@; put 'bmV3IGEodSwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhp'@; put 'cy50JiYhdGhpcy50LnJlZCYmKHRoaXMudD10aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmUsdGhpcy5jdXJ2ZS5leHRlbmRlZCYmIXRoaXMudCYmKHRoaXMudD10aGlzLngucmVkTXVsKHRoaXMueSksdGhpcy56T25lfHwodGhp'@; put 'cy50PXRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSkpKSl9byhlLHIpLEUuZXhwb3J0cz1lLGUucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLm1PbmVBP24ucmVkTmVnKCk6dGhpcy5hLnJlZE11bChuKX0sZS5wcm90b3R5cGUuX211bEM9ZnVuY3Rpb24obil7'@; put 'cmV0dXJuIHRoaXMub25lQz9uOnRoaXMuYy5yZWRNdWwobil9LGUucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbihuLGksaCxmKXtyZXR1cm4gdGhpcy5wb2ludChuLGksaCxmKX0sZS5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihuLGkpeyhuPW5ldyBhKG4sMTYpKS5yZWR8fChuPW4u'@; put 'dG9SZWQodGhpcy5yZWQpKTt2YXIgaD1uLnJlZFNxcigpLGY9dGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bChoKSksdT10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoaCkpLHA9Zi5yZWRNdWwodS5yZWRJbnZtKCkpLGQ9cC5yZWRTcXJ0KCk7aWYoMCE9'@; put 'PWQucmVkU3FyKCkucmVkU3ViKHApLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciB2PWQuZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKGkmJiF2fHwhaSYmdikmJihkPWQucmVkTmVnKCkpLHRoaXMucG9pbnQobixkKX0sZS5wcm90b3R5cGUucG9p'@; put 'bnRGcm9tWT1mdW5jdGlvbihuLGkpeyhuPW5ldyBhKG4sMTYpKS5yZWR8fChuPW4udG9SZWQodGhpcy5yZWQpKTt2YXIgaD1uLnJlZFNxcigpLGY9aC5yZWRTdWIodGhpcy5jMiksdT1oLnJlZE11bCh0aGlzLmQpLnJlZE11bCh0aGlzLmMyKS5yZWRTdWIodGhpcy5hKSxwPWYucmVkTXVsKHUu'@; put 'cmVkSW52bSgpKTtpZigwPT09cC5jbXAodGhpcy56ZXJvKSl7aWYoaSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTtyZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sbil9dmFyIGQ9cC5yZWRTcXJ0KCk7aWYoMCE9PWQucmVkU3FyKCkucmVkU3ViKHApLmNtcCh0aGlzLnplcm8p'@; put 'KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiBkLmZyb21SZWQoKS5pc09kZCgpIT09aSYmKGQ9ZC5yZWROZWcoKSksdGhpcy5wb2ludChkLG4pfSxlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihuKXtpZihuLmlzSW5maW5pdHkoKSlyZXR1cm4hMDtuLm5vcm1h'@; put 'bGl6ZSgpO3ZhciBpPW4ueC5yZWRTcXIoKSxoPW4ueS5yZWRTcXIoKSxmPWkucmVkTXVsKHRoaXMuYSkucmVkQWRkKGgpLHU9dGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoaSkucmVkTXVsKGgpKSk7cmV0dXJuIDA9PT1mLmNtcCh1KX0sbyhsLHIuQmFzZVBv'@; put 'aW50KSxlLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKG4pe3JldHVybiBsLmZyb21KU09OKHRoaXMsbil9LGUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKG4saSxoLGYpe3JldHVybiBuZXcgbCh0aGlzLG4saSxoLGYpfSxsLmZyb21KU09OPWZ1bmN0aW9uKG4saSl7cmV0dXJu'@; put 'IG5ldyBsKG4saVswXSxpWzFdLGlbMl0pfSxsLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55'@; put 'LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LGwucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMueC5jbXBuKDApJiYoMD09PXRoaXMueS5jbXAodGhpcy56KXx8dGhpcy56T25l'@; put 'JiYwPT09dGhpcy55LmNtcCh0aGlzLmN1cnZlLmMpKX0sbC5wcm90b3R5cGUuX2V4dERibD1mdW5jdGlvbigpe3ZhciBuPXRoaXMueC5yZWRTcXIoKSxpPXRoaXMueS5yZWRTcXIoKSxoPXRoaXMuei5yZWRTcXIoKTtoPWgucmVkSUFkZChoKTt2YXIgZj10aGlzLmN1cnZlLl9tdWxBKG4pLHU9'@; put 'dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLnJlZElTdWIobikucmVkSVN1YihpKSxwPWYucmVkQWRkKGkpLGQ9cC5yZWRTdWIoaCksdj1mLnJlZFN1YihpKSxfPXUucmVkTXVsKGQpLEE9cC5yZWRNdWwodiksST11LnJlZE11bCh2KSxMPWQucmVkTXVsKHApO3JldHVybiB0aGlzLmN1'@; put 'cnZlLnBvaW50KF8sQSxMLEkpfSxsLnByb3RvdHlwZS5fcHJvakRibD1mdW5jdGlvbigpe3ZhciBuLGksaCxmLHUscCxkPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKSx2PXRoaXMueC5yZWRTcXIoKSxfPXRoaXMueS5yZWRTcXIoKTtpZih0aGlzLmN1cnZlLnR3aXN0ZWQpe3ZhciBB'@; put 'PShmPXRoaXMuY3VydmUuX211bEEodikpLnJlZEFkZChfKTt0aGlzLnpPbmU/KG49ZC5yZWRTdWIodikucmVkU3ViKF8pLnJlZE11bChBLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpLGk9QS5yZWRNdWwoZi5yZWRTdWIoXykpLGg9QS5yZWRTcXIoKS5yZWRTdWIoQSkucmVkU3ViKEEpKToodT10'@; put 'aGlzLnoucmVkU3FyKCkscD1BLnJlZFN1Yih1KS5yZWRJU3ViKHUpLG49ZC5yZWRTdWIodikucmVkSVN1YihfKS5yZWRNdWwocCksaT1BLnJlZE11bChmLnJlZFN1YihfKSksaD1BLnJlZE11bChwKSl9ZWxzZSBmPXYucmVkQWRkKF8pLHU9dGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLnopLnJlZFNx'@; put 'cigpLHA9Zi5yZWRTdWIodSkucmVkU3ViKHUpLG49dGhpcy5jdXJ2ZS5fbXVsQyhkLnJlZElTdWIoZikpLnJlZE11bChwKSxpPXRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKHYucmVkSVN1YihfKSksaD1mLnJlZE11bChwKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChuLGksaCl9LGwucHJv'@; put 'dG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0RGJsKCk6dGhpcy5fcHJvakRibCgpfSxsLnByb3RvdHlwZS5fZXh0QWRkPWZ1bmN0aW9uKG4pe3ZhciBpPXRoaXMueS5yZWRTdWIodGhpcy54KS5y'@; put 'ZWRNdWwobi55LnJlZFN1YihuLngpKSxoPXRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwobi55LnJlZEFkZChuLngpKSxmPXRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKG4udCksdT10aGlzLnoucmVkTXVsKG4uei5yZWRBZGQobi56KSkscD1oLnJlZFN1YihpKSxkPXUu'@; put 'cmVkU3ViKGYpLHY9dS5yZWRBZGQoZiksXz1oLnJlZEFkZChpKSxBPXAucmVkTXVsKGQpLEk9di5yZWRNdWwoXyksTD1wLnJlZE11bChfKSxOPWQucmVkTXVsKHYpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KEEsSSxOLEwpfSxsLnByb3RvdHlwZS5fcHJvakFkZD1mdW5jdGlvbihuKXt2YXIg'@; put 'aSxoLGY9dGhpcy56LnJlZE11bChuLnopLHU9Zi5yZWRTcXIoKSxwPXRoaXMueC5yZWRNdWwobi54KSxkPXRoaXMueS5yZWRNdWwobi55KSx2PXRoaXMuY3VydmUuZC5yZWRNdWwocCkucmVkTXVsKGQpLF89dS5yZWRTdWIodiksQT11LnJlZEFkZCh2KSxJPXRoaXMueC5yZWRBZGQodGhpcy55'@; put 'KS5yZWRNdWwobi54LnJlZEFkZChuLnkpKS5yZWRJU3ViKHApLnJlZElTdWIoZCksTD1mLnJlZE11bChfKS5yZWRNdWwoSSk7cmV0dXJuIHRoaXMuY3VydmUudHdpc3RlZD8oaT1mLnJlZE11bChBKS5yZWRNdWwoZC5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShwKSkpLGg9Xy5yZWRNdWwoQSkp'@; put 'OihpPWYucmVkTXVsKEEpLnJlZE11bChkLnJlZFN1YihwKSksaD10aGlzLmN1cnZlLl9tdWxDKF8pLnJlZE11bChBKSksdGhpcy5jdXJ2ZS5wb2ludChMLGksaCl9LGwucHJvdG90eXBlLmFkZD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/bjpuLmlzSW5maW5pdHkoKT90'@; put 'aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0QWRkKG4pOnRoaXMuX3Byb2pBZGQobil9LGwucHJvdG90eXBlLm11bD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5faGFzRG91YmxlcyhuKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLG4pOnRoaXMuY3VydmUuX3duYWZNdWwo'@; put 'dGhpcyxuKX0sbC5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKG4saSxoKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLGldLFtuLGhdLDIsITEpfSxsLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKG4saSxoKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgx'@; put 'LFt0aGlzLGldLFtuLGhdLDIsITApfSxsLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy56LnJlZEludm0oKTtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwobiksdGhpcy55PXRoaXMueS5yZWRNdWwobiksdGhpcy50'@; put 'JiYodGhpcy50PXRoaXMudC5yZWRNdWwobikpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnpPbmU9ITAsdGhpc30sbC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLHRoaXMueSx0aGlzLnosdGhpcy50JiZ0aGlzLnQu'@; put 'cmVkTmVnKCkpfSxsLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX0sbC5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueS5mcm9tUmVkKCl9LGwucHJvdG90eXBlLmVx'@; put 'PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzPT09bnx8MD09PXRoaXMuZ2V0WCgpLmNtcChuLmdldFgoKSkmJjA9PT10aGlzLmdldFkoKS5jbXAobi5nZXRZKCkpfSxsLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24obil7dmFyIGk9bi50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMu'@; put 'eik7aWYoMD09PXRoaXMueC5jbXAoaSkpcmV0dXJuITA7Zm9yKHZhciBoPW4uY2xvbmUoKSxmPXRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTs7KXtpZihoLmlhZGQodGhpcy5jdXJ2ZS5uKSxoLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKGkucmVkSUFkZChmKSwwPT09'@; put 'dGhpcy54LmNtcChpKSlyZXR1cm4hMH19LGwucHJvdG90eXBlLnRvUD1sLnByb3RvdHlwZS5ub3JtYWxpemUsbC5wcm90b3R5cGUubWl4ZWRBZGQ9bC5wcm90b3R5cGUuYWRkfSx7Ii4uL3V0aWxzIjo0MTksIi4vYmFzZSI6NDA2LCJibi5qcyI6NDIwLGluaGVyaXRzOjQ0MH1dLDQwODpbZnVu'@; put 'Y3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1TO2IuYmFzZT1zKCIuL2Jhc2UiKSxiLnNob3J0PXMoIi4vc2hvcnQiKSxiLm1vbnQ9cygiLi9tb250IiksYi5lZHdhcmRzPXMoIi4vZWR3YXJkcyIpfSx7Ii4vYmFzZSI6NDA2LCIuL2Vkd2FyZHMiOjQwNywiLi9tb250Ijo0MDksIi4v'@; put 'c2hvcnQiOjQxMH1dLDQwOTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJibi5qcyIpLGE9cygiaW5oZXJpdHMiKSxvPXMoIi4vYmFzZSIpLHI9cygiLi4vdXRpbHMiKTtmdW5jdGlvbiB0KGwpe28uY2FsbCh0aGlzLCJtb250IixsKSx0aGlzLmE9bmV3IGIobC5hLDE2'@; put 'KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBiKGwuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuaTQ9bmV3IGIoNCkudG9SZWQodGhpcy5yZWQpLnJlZEludm0oKSx0aGlzLnR3bz1uZXcgYigyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5hMjQ9dGhpcy5pNC5yZWRNdWwodGhpcy5hLnJl'@; put 'ZEFkZCh0aGlzLnR3bykpfWZ1bmN0aW9uIGUobCxuLGkpe28uQmFzZVBvaW50LmNhbGwodGhpcyxsLCJwcm9qZWN0aXZlIiksbnVsbD09PW4mJm51bGw9PT1pPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUuemVybyk6KHRoaXMueD1uZXcgYihuLDE2KSx0aGlzLno9'@; put 'bmV3IGIoaSwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpKX1hKHQsbyksRS5leHBvcnRzPXQsdC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24obCl7'@; put 'dmFyIG49bC5ub3JtYWxpemUoKS54LGk9bi5yZWRTcXIoKSxoPWkucmVkTXVsKG4pLnJlZEFkZChpLnJlZE11bCh0aGlzLmEpKS5yZWRBZGQobik7cmV0dXJuIDA9PT1oLnJlZFNxcnQoKS5yZWRTcXIoKS5jbXAoaCl9LGEoZSxvLkJhc2VQb2ludCksdC5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9'@; put 'ZnVuY3Rpb24obCxuKXtyZXR1cm4gdGhpcy5wb2ludChyLnRvQXJyYXkobCxuKSwxKX0sdC5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24obCxuKXtyZXR1cm4gbmV3IGUodGhpcyxsLG4pfSx0LnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKGwpe3JldHVybiBlLmZyb21KU09OKHRo'@; put 'aXMsbCl9LGUucHJvdG90eXBlLnByZWNvbXB1dGU9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCkpfSxlLmZyb21KU09OPWZ1bmN0aW9uKGwsbil7cmV0dXJu'@; put 'IG5ldyBlKGwsblswXSxuWzFdfHxsLm9uZSl9LGUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlz'@; put 'LnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sZS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LGUucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3ZhciBsPXRoaXMueC5yZWRBZGQodGhpcy56KS5yZWRTcXIoKSxuPXRoaXMu'@; put 'eC5yZWRTdWIodGhpcy56KS5yZWRTcXIoKSxpPWwucmVkU3ViKG4pLGg9bC5yZWRNdWwobiksZj1pLnJlZE11bChuLnJlZEFkZCh0aGlzLmN1cnZlLmEyNC5yZWRNdWwoaSkpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChoLGYpfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oKXt0aHJvdyBu'@; put 'ZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxlLnByb3RvdHlwZS5kaWZmQWRkPWZ1bmN0aW9uKGwsbil7dmFyIGk9dGhpcy54LnJlZEFkZCh0aGlzLnopLGg9dGhpcy54LnJlZFN1Yih0aGlzLnopLGY9bC54LnJlZEFkZChsLnopLHU9bC54LnJlZFN1Yihs'@; put 'LnopLnJlZE11bChpKSxwPWYucmVkTXVsKGgpLGQ9bi56LnJlZE11bCh1LnJlZEFkZChwKS5yZWRTcXIoKSksdj1uLngucmVkTXVsKHUucmVkSVN1YihwKS5yZWRTcXIoKSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZCx2KX0sZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGwpe2Zvcih2YXIg'@; put 'bj1sLmNsb25lKCksaT10aGlzLGg9dGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpLGY9W107MCE9PW4uY21wbigwKTtuLml1c2hybigxKSlmLnB1c2gobi5hbmRsbigxKSk7Zm9yKHZhciB1PWYubGVuZ3RoLTE7dT49MDt1LS0pMD09PWZbdV0/KGk9aS5kaWZmQWRkKGgsdGhpcyksaD1oLmRi'@; put 'bCgpKTooaD1pLmRpZmZBZGQoaCx0aGlzKSxpPWkuZGJsKCkpO3JldHVybiBofSxlLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxlLnByb3RvdHlwZS5qdW1sQWRkPWZ1bmN0aW9uKCl7dGhy'@; put 'b3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sZS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24obCl7cmV0dXJuIDA9PT10aGlzLmdldFgoKS5jbXAobC5nZXRYKCkpfSxlLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PXRo'@; put 'aXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXN9LGUucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfX0seyIuLi91dGlscyI6NDE5LCIuL2Jhc2UiOjQwNiwiYm4uanMi'@; put 'OjQyMCxpbmhlcml0czo0NDB9XSw0MTA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vdXRpbHMiKSxhPXMoImJuLmpzIiksbz1zKCJpbmhlcml0cyIpLHI9cygiLi9iYXNlIiksdD1iLmFzc2VydDtmdW5jdGlvbiBlKGkpe3IuY2FsbCh0aGlzLCJzaG9ydCIsaSks'@; put 'dGhpcy5hPW5ldyBhKGkuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgYShpLmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnRpbnY9dGhpcy50d28ucmVkSW52bSgpLHRoaXMuemVyb0E9MD09PXRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSx0aGlzLnRocmVlQT0wPT09dGhpcy5h'@; put 'LmZyb21SZWQoKS5zdWIodGhpcy5wKS5jbXBuKC0zKSx0aGlzLmVuZG89dGhpcy5fZ2V0RW5kb21vcnBoaXNtKGkpLHRoaXMuX2VuZG9XbmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX2VuZG9XbmFmVDI9bmV3IEFycmF5KDQpfWZ1bmN0aW9uIGwoaSxoLGYsdSl7ci5CYXNlUG9pbnQuY2FsbCh0'@; put 'aGlzLGksImFmZmluZSIpLG51bGw9PT1oJiZudWxsPT09Zj8odGhpcy54PW51bGwsdGhpcy55PW51bGwsdGhpcy5pbmY9ITApOih0aGlzLng9bmV3IGEoaCwxNiksdGhpcy55PW5ldyBhKGYsMTYpLHUmJih0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpLHRoaXMueS5mb3JjZVJlZCh0'@; put 'aGlzLmN1cnZlLnJlZCkpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLmluZj0hMSl9ZnVuY3Rpb24gbihpLGgsZix1KXtyLkJhc2VQb2ludC5jYWxs'@; put 'KHRoaXMsaSwiamFjb2JpYW4iKSxudWxsPT09aCYmbnVsbD09PWYmJm51bGw9PT11Pyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej1uZXcgYSgwKSk6KHRoaXMueD1uZXcgYShoLDE2KSx0aGlzLnk9bmV3IGEoZiwxNiksdGhpcy56PW5ldyBhKHUs'@; put 'MTYpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9'@; put 'dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmV9byhlLHIpLEUuZXhwb3J0cz1lLGUucHJvdG90eXBlLl9nZXRFbmRvbW9ycGhpc209ZnVuY3Rpb24oaSl7aWYodGhpcy56ZXJvQSYmdGhpcy5nJiZ0aGlzLm4mJjE9PT10aGlzLnAubW9kbigzKSl7dmFyIGgsZjtpZihpLmJldGEpaD1uZXcgYShpLmJl'@; put 'dGEsMTYpLnRvUmVkKHRoaXMucmVkKTtlbHNle3ZhciB1PXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO2g9KGg9dVswXS5jbXAodVsxXSk8MD91WzBdOnVbMV0pLnRvUmVkKHRoaXMucmVkKX1pZihpLmxhbWJkYSlmPW5ldyBhKGkubGFtYmRhLDE2KTtlbHNle3ZhciBwPXRoaXMuX2dldEVu'@; put 'ZG9Sb290cyh0aGlzLm4pOzA9PT10aGlzLmcubXVsKHBbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChoKSk/Zj1wWzBdOnQoMD09PXRoaXMuZy5tdWwoZj1wWzFdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoaCkpKX1yZXR1cm57YmV0YTpoLGxhbWJkYTpmLGJhc2lzOmkuYmFzaXM/aS5iYXNp'@; put 'cy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJue2E6bmV3IGEoZC5hLDE2KSxiOm5ldyBhKGQuYiwxNil9fSk6dGhpcy5fZ2V0RW5kb0Jhc2lzKGYpfX19LGUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHM9ZnVuY3Rpb24oaSl7dmFyIGg9aT09PXRoaXMucD90aGlzLnJlZDphLm1vbnQoaSksZj1uZXcg'@; put 'YSgyKS50b1JlZChoKS5yZWRJbnZtKCksdT1mLnJlZE5lZygpLHA9bmV3IGEoMykudG9SZWQoaCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bChmKTtyZXR1cm5bdS5yZWRBZGQocCkuZnJvbVJlZCgpLHUucmVkU3ViKHApLmZyb21SZWQoKV19LGUucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9'@; put 'ZnVuY3Rpb24oaSl7Zm9yKHZhciBoLGYsdSxwLGQsdixfLEEsSSxMPXRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKS8yKSksTj1pLFA9dGhpcy5uLmNsb25lKCksQj1uZXcgYSgxKSwkPW5ldyBhKDApLEQ9bmV3IGEoMCkseD1uZXcgYSgxKSxNPTA7MCE9PU4uY21w'@; put 'bigwKTspe3ZhciBqPVAuZGl2KE4pO0E9UC5zdWIoai5tdWwoTikpLEk9RC5zdWIoai5tdWwoQikpO3ZhciBjPXguc3ViKGoubXVsKCQpKTtpZighdSYmQS5jbXAoTCk8MCloPV8ubmVnKCksZj1CLHU9QS5uZWcoKSxwPUk7ZWxzZSBpZih1JiYyPT0rK00pYnJlYWs7Xz1BLFA9TixOPUEsRD1C'@; put 'LEI9SSx4PSQsJD1jfWQ9QS5uZWcoKSx2PUk7dmFyIG09dS5zcXIoKS5hZGQocC5zcXIoKSk7cmV0dXJuIGQuc3FyKCkuYWRkKHYuc3FyKCkpLmNtcChtKT49MCYmKGQ9aCx2PWYpLHUubmVnYXRpdmUmJih1PXUubmVnKCkscD1wLm5lZygpKSxkLm5lZ2F0aXZlJiYoZD1kLm5lZygpLHY9di5u'@; put 'ZWcoKSksW3thOnUsYjpwfSx7YTpkLGI6dn1dfSxlLnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uKGkpe3ZhciBoPXRoaXMuZW5kby5iYXNpcyxmPWhbMF0sdT1oWzFdLHA9dS5iLm11bChpKS5kaXZSb3VuZCh0aGlzLm4pLGQ9Zi5iLm5lZygpLm11bChpKS5kaXZSb3VuZCh0aGlzLm4p'@; put 'LHY9cC5tdWwoZi5hKSxfPWQubXVsKHUuYSksQT1wLm11bChmLmIpLEk9ZC5tdWwodS5iKTtyZXR1cm57azE6aS5zdWIodikuc3ViKF8pLGsyOkEuYWRkKEkpLm5lZygpfX0sZS5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihpLGgpeyhpPW5ldyBhKGksMTYpKS5yZWR8fChpPWkudG9S'@; put 'ZWQodGhpcy5yZWQpKTt2YXIgZj1pLnJlZFNxcigpLnJlZE11bChpKS5yZWRJQWRkKGkucmVkTXVsKHRoaXMuYSkpLnJlZElBZGQodGhpcy5iKSx1PWYucmVkU3FydCgpO2lmKDAhPT11LnJlZFNxcigpLnJlZFN1YihmKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQg'@; put 'cG9pbnQiKTt2YXIgcD11LmZyb21SZWQoKS5pc09kZCgpO3JldHVybihoJiYhcHx8IWgmJnApJiYodT11LnJlZE5lZygpKSx0aGlzLnBvaW50KGksdSl9LGUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKGkpe2lmKGkuaW5mKXJldHVybiEwO3ZhciBoPWkueCxmPWkueSx1PXRoaXMuYS5y'@; put 'ZWRNdWwoaCkscD1oLnJlZFNxcigpLnJlZE11bChoKS5yZWRJQWRkKHUpLnJlZElBZGQodGhpcy5iKTtyZXR1cm4gMD09PWYucmVkU3FyKCkucmVkSVN1YihwKS5jbXBuKDApfSxlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQ9ZnVuY3Rpb24oaSxoLGYpe2Zvcih2YXIgdT10aGlzLl9lbmRv'@; put 'V25hZlQxLHA9dGhpcy5fZW5kb1duYWZUMixkPTA7ZDxpLmxlbmd0aDtkKyspe3ZhciB2PXRoaXMuX2VuZG9TcGxpdChoW2RdKSxfPWlbZF0sQT1fLl9nZXRCZXRhKCk7di5rMS5uZWdhdGl2ZSYmKHYuazEuaW5lZygpLF89Xy5uZWcoITApKSx2LmsyLm5lZ2F0aXZlJiYodi5rMi5pbmVnKCks'@; put 'QT1BLm5lZyghMCkpLHVbMipkXT1fLHVbMipkKzFdPUEscFsyKmRdPXYuazEscFsyKmQrMV09di5rMn1mb3IodmFyIEk9dGhpcy5fd25hZk11bEFkZCgxLHUscCwyKmQsZiksTD0wO0w8MipkO0wrKyl1W0xdPW51bGwscFtMXT1udWxsO3JldHVybiBJfSxvKGwsci5CYXNlUG9pbnQpLGUucHJv'@; put 'dG90eXBlLnBvaW50PWZ1bmN0aW9uKGksaCxmKXtyZXR1cm4gbmV3IGwodGhpcyxpLGgsZil9LGUucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oaSxoKXtyZXR1cm4gbC5mcm9tSlNPTih0aGlzLGksaCl9LGwucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7aWYodGhpcy5j'@; put 'dXJ2ZS5lbmRvKXt2YXIgaT10aGlzLnByZWNvbXB1dGVkO2lmKGkmJmkuYmV0YSlyZXR1cm4gaS5iZXRhO3ZhciBoPXRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZihpKXt2YXIgZj10aGlzLmN1cnZlLHU9ZnVuY3Rpb24ocCl7'@; put 'cmV0dXJuIGYucG9pbnQocC54LnJlZE11bChmLmVuZG8uYmV0YSkscC55KX07aS5iZXRhPWgsaC5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjppLm5hZiYme3duZDppLm5hZi53bmQscG9pbnRzOmkubmFmLnBvaW50cy5tYXAodSl9LGRvdWJsZXM6aS5kb3VibGVzJiZ7c3RlcDppLmRvdWJs'@; put 'ZXMuc3RlcCxwb2ludHM6aS5kb3VibGVzLnBvaW50cy5tYXAodSl9fX1yZXR1cm4gaH19LGwucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZWNvbXB1dGVkP1t0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRoaXMucHJlY29tcHV0ZWQu'@; put 'ZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5hZjp0aGlzLnByZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQscG9pbnRzOnRoaXMucHJl'@; put 'Y29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XTpbdGhpcy54LHRoaXMueV19LGwuZnJvbUpTT049ZnVuY3Rpb24oaSxoLGYpeyJzdHJpbmciPT10eXBlb2YgaCYmKGg9SlNPTi5wYXJzZShoKSk7dmFyIHU9aS5wb2ludChoWzBdLGhbMV0sZik7aWYoIWhbMl0pcmV0dXJuIHU7ZnVuY3Rp'@; put 'b24gcCh2KXtyZXR1cm4gaS5wb2ludCh2WzBdLHZbMV0sZil9dmFyIGQ9aFsyXTtyZXR1cm4gdS5wcmVjb21wdXRlZD17YmV0YTpudWxsLGRvdWJsZXM6ZC5kb3VibGVzJiZ7c3RlcDpkLmRvdWJsZXMuc3RlcCxwb2ludHM6W3VdLmNvbmNhdChkLmRvdWJsZXMucG9pbnRzLm1hcChwKSl9LG5h'@; put 'ZjpkLm5hZiYme3duZDpkLm5hZi53bmQscG9pbnRzOlt1XS5jb25jYXQoZC5uYWYucG9pbnRzLm1hcChwKSl9fSx1fSxsLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50IHg6ICIrdGhp'@; put 'cy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LGwucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmZ9LGwucHJvdG90eXBlLmFkZD1mdW5jdGlvbihpKXtpZih0aGlzLmluZily'@; put 'ZXR1cm4gaTtpZihpLmluZilyZXR1cm4gdGhpcztpZih0aGlzLmVxKGkpKXJldHVybiB0aGlzLmRibCgpO2lmKHRoaXMubmVnKCkuZXEoaSkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTtpZigwPT09dGhpcy54LmNtcChpLngpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51'@; put 'bGwsbnVsbCk7dmFyIGg9dGhpcy55LnJlZFN1YihpLnkpOzAhPT1oLmNtcG4oMCkmJihoPWgucmVkTXVsKHRoaXMueC5yZWRTdWIoaS54KS5yZWRJbnZtKCkpKTt2YXIgZj1oLnJlZFNxcigpLnJlZElTdWIodGhpcy54KS5yZWRJU3ViKGkueCksdT1oLnJlZE11bCh0aGlzLngucmVkU3ViKGYp'@; put 'KS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZix1KX0sbC5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIGk9dGhpcy55LnJlZEFkZCh0aGlzLnkpO2lmKDA9PT1pLmNtcG4oMCkpcmV0dXJuIHRoaXMuY3VydmUucG9p'@; put 'bnQobnVsbCxudWxsKTt2YXIgaD10aGlzLmN1cnZlLmEsZj10aGlzLngucmVkU3FyKCksdT1pLnJlZEludm0oKSxwPWYucmVkQWRkKGYpLnJlZElBZGQoZikucmVkSUFkZChoKS5yZWRNdWwodSksZD1wLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKSx2PXAucmVkTXVs'@; put 'KHRoaXMueC5yZWRTdWIoZCkpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChkLHYpfSxsLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9LGwucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55LmZyb21S'@; put 'ZWQoKX0sbC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGkpe3JldHVybiBpPW5ldyBhKGksMTYpLHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5faGFzRG91YmxlcyhpKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLGkpOnRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25h'@; put 'Zk11bEFkZChbdGhpc10sW2ldKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsaSl9LGwucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihpLGgsZil7dmFyIHU9W3RoaXMsaF0scD1baSxmXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHUscCk6dGhp'@; put 'cy5jdXJ2ZS5fd25hZk11bEFkZCgxLHUscCwyKX0sbC5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbihpLGgsZil7dmFyIHU9W3RoaXMsaF0scD1baSxmXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHUscCwhMCk6dGhpcy5jdXJ2ZS5fd25hZk11'@; put 'bEFkZCgxLHUscCwyLCEwKX0sbC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oaSl7cmV0dXJuIHRoaXM9PT1pfHx0aGlzLmluZj09PWkuaW5mJiYodGhpcy5pbmZ8fDA9PT10aGlzLnguY21wKGkueCkmJjA9PT10aGlzLnkuY21wKGkueSkpfSxsLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oaSl7aWYo'@; put 'dGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIGg9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihpJiZ0aGlzLnByZWNvbXB1dGVkKXt2YXIgZj10aGlzLnByZWNvbXB1dGVkLHU9ZnVuY3Rpb24ocCl7cmV0dXJuIHAubmVnKCl9O2gucHJlY29tcHV0ZWQ9e25hZjpm'@; put 'Lm5hZiYme3duZDpmLm5hZi53bmQscG9pbnRzOmYubmFmLnBvaW50cy5tYXAodSl9LGRvdWJsZXM6Zi5kb3VibGVzJiZ7c3RlcDpmLmRvdWJsZXMuc3RlcCxwb2ludHM6Zi5kb3VibGVzLnBvaW50cy5tYXAodSl9fX1yZXR1cm4gaH0sbC5wcm90b3R5cGUudG9KPWZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IHRoaXMuaW5mP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25lKX0sbyhuLHIuQmFzZVBvaW50KSxlLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oaSxoLGYpe3JldHVybiBuZXcgbih0aGlzLGks'@; put 'aCxmKX0sbi5wcm90b3R5cGUudG9QPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgaT10aGlzLnoucmVkSW52bSgpLGg9aS5yZWRTcXIoKSxmPXRoaXMueC5yZWRNdWwoaCksdT10aGlzLnkucmVkTXVsKGgpLnJl'@; put 'ZE11bChpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChmLHUpfSxuLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LHRoaXMueS5yZWROZWcoKSx0aGlzLnopfSxuLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oaSl7aWYodGhpcy5pc0luZmlu'@; put 'aXR5KCkpcmV0dXJuIGk7aWYoaS5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIGg9aS56LnJlZFNxcigpLGY9dGhpcy56LnJlZFNxcigpLHU9dGhpcy54LnJlZE11bChoKSxwPWkueC5yZWRNdWwoZiksZD10aGlzLnkucmVkTXVsKGgucmVkTXVsKGkueikpLHY9aS55LnJlZE11bChmLnJl'@; put 'ZE11bCh0aGlzLnopKSxfPXUucmVkU3ViKHApLEE9ZC5yZWRTdWIodik7aWYoMD09PV8uY21wbigwKSlyZXR1cm4gMCE9PUEuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgST1fLnJlZFNxcigpLEw9SS5yZWRNdWwoXyksTj11LnJlZE11'@; put 'bChJKSxQPUEucmVkU3FyKCkucmVkSUFkZChMKS5yZWRJU3ViKE4pLnJlZElTdWIoTiksQj1BLnJlZE11bChOLnJlZElTdWIoUCkpLnJlZElTdWIoZC5yZWRNdWwoTCkpLCQ9dGhpcy56LnJlZE11bChpLnopLnJlZE11bChfKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoUCxCLCQpfSxuLnBy'@; put 'b3RvdHlwZS5taXhlZEFkZD1mdW5jdGlvbihpKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gaS50b0ooKTtpZihpLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgaD10aGlzLnoucmVkU3FyKCksZj10aGlzLngsdT1pLngucmVkTXVsKGgpLHA9dGhpcy55LGQ9aS55LnJlZE11bCho'@; put 'KS5yZWRNdWwodGhpcy56KSx2PWYucmVkU3ViKHUpLF89cC5yZWRTdWIoZCk7aWYoMD09PXYuY21wbigwKSlyZXR1cm4gMCE9PV8uY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgQT12LnJlZFNxcigpLEk9QS5yZWRNdWwodiksTD1mLnJl'@; put 'ZE11bChBKSxOPV8ucmVkU3FyKCkucmVkSUFkZChJKS5yZWRJU3ViKEwpLnJlZElTdWIoTCksUD1fLnJlZE11bChMLnJlZElTdWIoTikpLnJlZElTdWIocC5yZWRNdWwoSSkpLEI9dGhpcy56LnJlZE11bCh2KTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoTixQLEIpfSxuLnByb3RvdHlwZS5k'@; put 'YmxwPWZ1bmN0aW9uKGkpe2lmKDA9PT1pKXJldHVybiB0aGlzO2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO2lmKCFpKXJldHVybiB0aGlzLmRibCgpO3ZhciBoO2lmKHRoaXMuY3VydmUuemVyb0F8fHRoaXMuY3VydmUudGhyZWVBKXt2YXIgZj10aGlzO2ZvcihoPTA7aDxpO2gr'@; put 'KylmPWYuZGJsKCk7cmV0dXJuIGZ9dmFyIHU9dGhpcy5jdXJ2ZS5hLHA9dGhpcy5jdXJ2ZS50aW52LGQ9dGhpcy54LHY9dGhpcy55LF89dGhpcy56LEE9Xy5yZWRTcXIoKS5yZWRTcXIoKSxJPXYucmVkQWRkKHYpO2ZvcihoPTA7aDxpO2grKyl7dmFyIEw9ZC5yZWRTcXIoKSxOPUkucmVkU3Fy'@; put 'KCksUD1OLnJlZFNxcigpLEI9TC5yZWRBZGQoTCkucmVkSUFkZChMKS5yZWRJQWRkKHUucmVkTXVsKEEpKSwkPWQucmVkTXVsKE4pLEQ9Qi5yZWRTcXIoKS5yZWRJU3ViKCQucmVkQWRkKCQpKSx4PSQucmVkSVN1YihEKSxNPUIucmVkTXVsKHgpO009TS5yZWRJQWRkKE0pLnJlZElTdWIoUCk7'@; put 'dmFyIGo9SS5yZWRNdWwoXyk7aCsxPGkmJihBPUEucmVkTXVsKFApKSxkPUQsXz1qLEk9TX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoZCxJLnJlZE11bChwKSxfKX0sbi5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS56'@; put 'ZXJvQT90aGlzLl96ZXJvRGJsKCk6dGhpcy5jdXJ2ZS50aHJlZUE/dGhpcy5fdGhyZWVEYmwoKTp0aGlzLl9kYmwoKX0sbi5wcm90b3R5cGUuX3plcm9EYmw9ZnVuY3Rpb24oKXt2YXIgaSxoLGY7aWYodGhpcy56T25lKXt2YXIgdT10aGlzLngucmVkU3FyKCkscD10aGlzLnkucmVkU3FyKCks'@; put 'ZD1wLnJlZFNxcigpLHY9dGhpcy54LnJlZEFkZChwKS5yZWRTcXIoKS5yZWRJU3ViKHUpLnJlZElTdWIoZCk7dj12LnJlZElBZGQodik7dmFyIF89dS5yZWRBZGQodSkucmVkSUFkZCh1KSxBPV8ucmVkU3FyKCkucmVkSVN1Yih2KS5yZWRJU3ViKHYpLEk9ZC5yZWRJQWRkKGQpO0k9KEk9SS5y'@; put 'ZWRJQWRkKEkpKS5yZWRJQWRkKEkpLGk9QSxoPV8ucmVkTXVsKHYucmVkSVN1YihBKSkucmVkSVN1YihJKSxmPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBMPXRoaXMueC5yZWRTcXIoKSxOPXRoaXMueS5yZWRTcXIoKSxQPU4ucmVkU3FyKCksQj10aGlzLngucmVkQWRkKE4pLnJl'@; put 'ZFNxcigpLnJlZElTdWIoTCkucmVkSVN1YihQKTtCPUIucmVkSUFkZChCKTt2YXIgJD1MLnJlZEFkZChMKS5yZWRJQWRkKEwpLEQ9JC5yZWRTcXIoKSx4PVAucmVkSUFkZChQKTt4PSh4PXgucmVkSUFkZCh4KSkucmVkSUFkZCh4KSxpPUQucmVkSVN1YihCKS5yZWRJU3ViKEIpLGg9JC5yZWRN'@; put 'dWwoQi5yZWRJU3ViKGkpKS5yZWRJU3ViKHgpLGY9KGY9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKGYpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChpLGgsZil9LG4ucHJvdG90eXBlLl90aHJlZURibD1mdW5jdGlvbigpe3ZhciBpLGgsZjtpZih0aGlzLnpPbmUpe3ZhciB1PXRo'@; put 'aXMueC5yZWRTcXIoKSxwPXRoaXMueS5yZWRTcXIoKSxkPXAucmVkU3FyKCksdj10aGlzLngucmVkQWRkKHApLnJlZFNxcigpLnJlZElTdWIodSkucmVkSVN1YihkKTt2PXYucmVkSUFkZCh2KTt2YXIgXz11LnJlZEFkZCh1KS5yZWRJQWRkKHUpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKSxBPV8u'@; put 'cmVkU3FyKCkucmVkSVN1Yih2KS5yZWRJU3ViKHYpO2k9QTt2YXIgST1kLnJlZElBZGQoZCk7ST0oST1JLnJlZElBZGQoSSkpLnJlZElBZGQoSSksaD1fLnJlZE11bCh2LnJlZElTdWIoQSkpLnJlZElTdWIoSSksZj10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgTD10aGlzLnoucmVk'@; put 'U3FyKCksTj10aGlzLnkucmVkU3FyKCksUD10aGlzLngucmVkTXVsKE4pLEI9dGhpcy54LnJlZFN1YihMKS5yZWRNdWwodGhpcy54LnJlZEFkZChMKSk7Qj1CLnJlZEFkZChCKS5yZWRJQWRkKEIpO3ZhciAkPVAucmVkSUFkZChQKSxEPSgkPSQucmVkSUFkZCgkKSkucmVkQWRkKCQpO2k9Qi5y'@; put 'ZWRTcXIoKS5yZWRJU3ViKEQpLGY9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoTikucmVkSVN1YihMKTt2YXIgeD1OLnJlZFNxcigpO3g9KHg9KHg9eC5yZWRJQWRkKHgpKS5yZWRJQWRkKHgpKS5yZWRJQWRkKHgpLGg9Qi5yZWRNdWwoJC5yZWRJU3ViKGkpKS5yZWRJ'@; put 'U3ViKHgpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChpLGgsZil9LG4ucHJvdG90eXBlLl9kYmw9ZnVuY3Rpb24oKXt2YXIgaT10aGlzLmN1cnZlLmEsaD10aGlzLngsZj10aGlzLnksdT10aGlzLnoscD11LnJlZFNxcigpLnJlZFNxcigpLGQ9aC5yZWRTcXIoKSx2PWYucmVkU3FyKCksXz1k'@; put 'LnJlZEFkZChkKS5yZWRJQWRkKGQpLnJlZElBZGQoaS5yZWRNdWwocCkpLEE9aC5yZWRBZGQoaCksST0oQT1BLnJlZElBZGQoQSkpLnJlZE11bCh2KSxMPV8ucmVkU3FyKCkucmVkSVN1YihJLnJlZEFkZChJKSksTj1JLnJlZElTdWIoTCksUD12LnJlZFNxcigpO1A9KFA9KFA9UC5yZWRJQWRk'@; put 'KFApKS5yZWRJQWRkKFApKS5yZWRJQWRkKFApO3ZhciBCPV8ucmVkTXVsKE4pLnJlZElTdWIoUCksJD1mLnJlZEFkZChmKS5yZWRNdWwodSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KEwsQiwkKX0sbi5wcm90b3R5cGUudHJwbD1mdW5jdGlvbigpe2lmKCF0aGlzLmN1cnZlLnplcm9BKXJl'@; put 'dHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgaT10aGlzLngucmVkU3FyKCksaD10aGlzLnkucmVkU3FyKCksZj10aGlzLnoucmVkU3FyKCksdT1oLnJlZFNxcigpLHA9aS5yZWRBZGQoaSkucmVkSUFkZChpKSxkPXAucmVkU3FyKCksdj10aGlzLngucmVkQWRkKGgpLnJlZFNxcigpLnJl'@; put 'ZElTdWIoaSkucmVkSVN1Yih1KSxfPSh2PSh2PSh2PXYucmVkSUFkZCh2KSkucmVkQWRkKHYpLnJlZElBZGQodikpLnJlZElTdWIoZCkpLnJlZFNxcigpLEE9dS5yZWRJQWRkKHUpO0E9KEE9KEE9QS5yZWRJQWRkKEEpKS5yZWRJQWRkKEEpKS5yZWRJQWRkKEEpO3ZhciBJPXAucmVkSUFkZCh2'@; put 'KS5yZWRTcXIoKS5yZWRJU3ViKGQpLnJlZElTdWIoXykucmVkSVN1YihBKSxMPWgucmVkTXVsKEkpO0w9KEw9TC5yZWRJQWRkKEwpKS5yZWRJQWRkKEwpO3ZhciBOPXRoaXMueC5yZWRNdWwoXykucmVkSVN1YihMKTtOPShOPU4ucmVkSUFkZChOKSkucmVkSUFkZChOKTt2YXIgUD10aGlzLnku'@; put 'cmVkTXVsKEkucmVkTXVsKEEucmVkSVN1YihJKSkucmVkSVN1Yih2LnJlZE11bChfKSkpO1A9KFA9KFA9UC5yZWRJQWRkKFApKS5yZWRJQWRkKFApKS5yZWRJQWRkKFApO3ZhciBCPXRoaXMuei5yZWRBZGQodikucmVkU3FyKCkucmVkSVN1YihmKS5yZWRJU3ViKF8pO3JldHVybiB0aGlzLmN1'@; put 'cnZlLmpwb2ludChOLFAsQil9LG4ucHJvdG90eXBlLm11bD1mdW5jdGlvbihpLGgpe3JldHVybiBpPW5ldyBhKGksaCksdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGkpfSxuLnByb3RvdHlwZS5lcT1mdW5jdGlvbihpKXtpZigiYWZmaW5lIj09PWkudHlwZSlyZXR1cm4gdGhpcy5lcShpLnRv'@; put 'SigpKTtpZih0aGlzPT09aSlyZXR1cm4hMDt2YXIgaD10aGlzLnoucmVkU3FyKCksZj1pLnoucmVkU3FyKCk7aWYoMCE9PXRoaXMueC5yZWRNdWwoZikucmVkSVN1YihpLngucmVkTXVsKGgpKS5jbXBuKDApKXJldHVybiExO3ZhciB1PWgucmVkTXVsKHRoaXMueikscD1mLnJlZE11bChpLnop'@; put 'O3JldHVybiAwPT09dGhpcy55LnJlZE11bChwKS5yZWRJU3ViKGkueS5yZWRNdWwodSkpLmNtcG4oMCl9LG4ucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihpKXt2YXIgaD10aGlzLnoucmVkU3FyKCksZj1pLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoaCk7aWYoMD09PXRoaXMueC5j'@; put 'bXAoZikpcmV0dXJuITA7Zm9yKHZhciB1PWkuY2xvbmUoKSxwPXRoaXMuY3VydmUucmVkTi5yZWRNdWwoaCk7Oyl7aWYodS5pYWRkKHRoaXMuY3VydmUubiksdS5jbXAodGhpcy5jdXJ2ZS5wKT49MClyZXR1cm4hMTtpZihmLnJlZElBZGQocCksMD09PXRoaXMueC5jbXAoZikpcmV0dXJuITB9'@; put 'fSxuLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgSlBvaW50IEluZmluaXR5PiI6IjxFQyBKUG9pbnQgeDogIit0aGlzLngudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LnRv'@; put 'U3RyaW5nKDE2LDIpKyI+In0sbi5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9fSx7Ii4uL3V0aWxzIjo0MTksIi4vYmFzZSI6NDA2LCJibi5qcyI6NDIwLGluaGVyaXRzOjQ0MH1dLDQxMTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3Ry'@; put 'aWN0Ijt2YXIgYixhPVMsbz1zKCJoYXNoLmpzIikscj1zKCIuL2N1cnZlIiksdD1zKCIuL3V0aWxzIikuYXNzZXJ0O2Z1bmN0aW9uIGUobil7dGhpcy5jdXJ2ZT0ic2hvcnQiPT09bi50eXBlP25ldyByLnNob3J0KG4pOiJlZHdhcmRzIj09PW4udHlwZT9uZXcgci5lZHdhcmRzKG4pOm5ldyBy'@; put 'Lm1vbnQobiksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMuaGFzaD1uLmhhc2gsdCh0aGlzLmcudmFsaWRhdGUoKSwiSW52YWxpZCBjdXJ2ZSIpLHQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwiSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8iKX1m'@; put 'dW5jdGlvbiBsKG4saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsbix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIGg9bmV3IGUoaSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEw'@; put 'LHZhbHVlOmh9KSxofX0pfWEuUHJlc2V0Q3VydmU9ZSxsKCJwMTkyIix7dHlwZToic2hvcnQiLHByaW1lOiJwMTkyIixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUg'@; put 'ZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjY0MjEwNTE5IGU1OWM4MGU3IDBmYTdlOWFiIDcyMjQzMDQ5IGZlYjhkZWVjIGMxNDZiOWIxIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMSIsaGFzaDpvLnNoYTI1NixnUmVkOiExLGc6WyIxODhk'@; put 'YTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMiIsIjA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExIl19KSxsKCJwMjI0Iix7dHlwZToic2hvcnQiLHByaW1lOiJwMjI0IixwOiJmZmZmZmZmZiBmZmZmZmZm'@; put 'ZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUiLGI6ImI0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3'@; put 'MGIzOTQzIDIzNTVmZmI0IixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCIsaGFzaDpvLnNoYTI1NixnUmVkOiExLGc6WyJiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAx'@; put 'MTVjMWQyMSIsImJkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0Il19KSxsKCJwMjU2Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZm'@; put 'ZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAy'@; put 'N2QyNjA0YiIsbjoiZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEiLGhhc2g6by5zaGEyNTYsZ1JlZDohMSxnOlsiNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAg'@; put 'ZjRhMTM5NDUgZDg5OGMyOTYiLCI0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSJdfSksbCgicDM4NCIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm'@; put 'ZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAw'@; put 'MDAwMCAwMDAwMDAwMCBmZmZmZmZmYyIsYjoiYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWYiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm'@; put 'IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxIGY0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczIixoYXNoOm8uc2hhMzg0LGdSZWQ6ITEsZzpbImFhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5'@; put 'Zjc0MWUwIDgyNTQyYTM4IDU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3IiwiMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgMGE2MGIxY2UgMWQ3ZTgxOWQgN2E0MzFkN2MgOTBlYTBlNWYiXX0p'@; put 'LGwoInA1MjEiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBm'@; put 'ZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg'@; put 'ZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViIDk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkIDNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0'@; put 'IDZiNTAzZjAwIixuOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCBmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQw'@; put 'OSIsaGFzaDpvLnNoYTUxMixnUmVkOiExLGc6WyIwMDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyBhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBm'@; put 'OTdlN2UzMSBjMmU1YmQ2NiIsIjAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5IDU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxIDNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlm'@; put 'ZDE2NjUwIl19KSxsKCJjdXJ2ZTI1NTE5Iix7dHlwZToibW9udCIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiNzZkMDYiLGI6IjEiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAw'@; put 'MDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6by5zaGEyNTYsZ1JlZDohMSxnOlsiOSJdfSksbCgiZWQyNTUxOSIse3R5cGU6ImVkd2FyZHMiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZm'@; put 'ZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiLGE6Ii0xIixjOiIxIixkOiI1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3'@; put 'OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOm8uc2hhMjU2LGdSZWQ6ITEsZzpbIjIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWEiLCI2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2'@; put 'NjY2NjY2NjY2NjY2NjU4Il19KTt0cnl7Yj1zKCIuL3ByZWNvbXB1dGVkL3NlY3AyNTZrMSIpfWNhdGNoe2I9dm9pZCAwfWwoInNlY3AyNTZrMSIse3R5cGU6InNob3J0IixwcmltZToiazI1NiIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm'@; put 'ZmYgZmZmZmZmZmUgZmZmZmZjMmYiLGE6IjAiLGI6IjciLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxIixoOiIxIixoYXNoOm8uc2hhMjU2LGJldGE6IjdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQz'@; put 'NGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiLGxhbWJkYToiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MiIsYmFzaXM6W3thOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSIsYjoiLWU0NDM3'@; put 'ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIn0se2E6IjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIsYjoiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUifV0sZ1JlZDohMSxnOlsiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2Uy'@; put 'OGQ5NTlmMjgxNWIxNmY4MTc5OCIsIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgiLGJdfSl9LHsiLi9jdXJ2ZSI6NDA4LCIuL3ByZWNvbXB1dGVkL3NlY3AyNTZrMSI6NDE4LCIuL3V0aWxzIjo0MTksImhhc2guanMiOjQy'@; put 'Nn1dLDQxMjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJibi5qcyIpLGE9cygiaG1hYy1kcmJnIiksbz1zKCIuLi91dGlscyIpLHI9cygiLi4vY3VydmVzIiksdD1zKCJicm9yYW5kIiksZT1vLmFzc2VydCxsPXMoIi4va2V5Iiksbj1zKCIuL3NpZ25hdHVyZSIpO2Z1'@; put 'bmN0aW9uIGkoaCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaSkpcmV0dXJuIG5ldyBpKGgpOyJzdHJpbmciPT10eXBlb2YgaCYmKGUoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsaCksIlVua25vd24gY3VydmUgIitoKSxoPXJbaF0pLGggaW5zdGFuY2VvZiByLlByZXNl'@; put 'dEN1cnZlJiYoaD17Y3VydmU6aH0pLHRoaXMuY3VydmU9aC5jdXJ2ZS5jdXJ2ZSx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMubmg9dGhpcy5uLnVzaHJuKDEpLHRoaXMuZz10aGlzLmN1cnZlLmcsdGhpcy5nPWguY3VydmUuZyx0aGlzLmcucHJlY29tcHV0ZShoLmN1cnZlLm4uYml0TGVuZ3Ro'@; put 'KCkrMSksdGhpcy5oYXNoPWguaGFzaHx8aC5jdXJ2ZS5oYXNofUUuZXhwb3J0cz1pLGkucHJvdG90eXBlLmtleVBhaXI9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyBsKHRoaXMsaCl9LGkucHJvdG90eXBlLmtleUZyb21Qcml2YXRlPWZ1bmN0aW9uKGgsZil7cmV0dXJuIGwuZnJvbVByaXZhdGUo'@; put 'dGhpcyxoLGYpfSxpLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKGgsZil7cmV0dXJuIGwuZnJvbVB1YmxpYyh0aGlzLGgsZil9LGkucHJvdG90eXBlLmdlbktleVBhaXI9ZnVuY3Rpb24oaCl7aHx8KGg9e30pO2Zvcih2YXIgZj1uZXcgYSh7aGFzaDp0aGlzLmhhc2gscGVyczpo'@; put 'LnBlcnMscGVyc0VuYzpoLnBlcnNFbmN8fCJ1dGY4IixlbnRyb3B5OmguZW50cm9weXx8dCh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxlbnRyb3B5RW5jOmguZW50cm9weSYmaC5lbnRyb3B5RW5jfHwidXRmOCIsbm9uY2U6dGhpcy5uLnRvQXJyYXkoKX0pLHU9dGhpcy5uLmJ5dGVMZW5ndGgo'@; put 'KSxwPXRoaXMubi5zdWIobmV3IGIoMikpOzspe3ZhciBkPW5ldyBiKGYuZ2VuZXJhdGUodSkpO2lmKCEoZC5jbXAocCk+MCkpcmV0dXJuIGQuaWFkZG4oMSksdGhpcy5rZXlGcm9tUHJpdmF0ZShkKX19LGkucHJvdG90eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbihoLGYpe3ZhciB1PTgqaC5i'@; put 'eXRlTGVuZ3RoKCktdGhpcy5uLmJpdExlbmd0aCgpO3JldHVybiB1PjAmJihoPWgudXNocm4odSkpLCFmJiZoLmNtcCh0aGlzLm4pPj0wP2guc3ViKHRoaXMubik6aH0saS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihoLGYsdSxwKXsib2JqZWN0Ij09dHlwZW9mIHUmJihwPXUsdT1udWxsKSxw'@; put 'fHwocD17fSksZj10aGlzLmtleUZyb21Qcml2YXRlKGYsdSksaD10aGlzLl90cnVuY2F0ZVRvTihuZXcgYihoLDE2KSk7Zm9yKHZhciBkPXRoaXMubi5ieXRlTGVuZ3RoKCksdj1mLmdldFByaXZhdGUoKS50b0FycmF5KCJiZSIsZCksXz1oLnRvQXJyYXkoImJlIixkKSxBPW5ldyBhKHtoYXNo'@; put 'OnRoaXMuaGFzaCxlbnRyb3B5OnYsbm9uY2U6XyxwZXJzOnAucGVycyxwZXJzRW5jOnAucGVyc0VuY3x8InV0ZjgifSksST10aGlzLm4uc3ViKG5ldyBiKDEpKSxMPTA7O0wrKyl7dmFyIE49cC5rP3AuayhMKTpuZXcgYihBLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtpZighKChO'@; put 'PXRoaXMuX3RydW5jYXRlVG9OKE4sITApKS5jbXBuKDEpPD0wfHxOLmNtcChJKT49MCkpe3ZhciBQPXRoaXMuZy5tdWwoTik7aWYoIVAuaXNJbmZpbml0eSgpKXt2YXIgQj1QLmdldFgoKSwkPUIudW1vZCh0aGlzLm4pO2lmKDAhPT0kLmNtcG4oMCkpe3ZhciBEPU4uaW52bSh0aGlzLm4pLm11'@; put 'bCgkLm11bChmLmdldFByaXZhdGUoKSkuaWFkZChoKSk7aWYoMCE9PShEPUQudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgeD0oUC5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09Qi5jbXAoJCk/MjowKTtyZXR1cm4gcC5jYW5vbmljYWwmJkQuY21wKHRoaXMubmgpPjAmJihEPXRoaXMubi5z'@; put 'dWIoRCkseF49MSksbmV3IG4oe3I6JCxzOkQscmVjb3ZlcnlQYXJhbTp4fSl9fX19fX0saS5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGgsZix1LHApe2g9dGhpcy5fdHJ1bmNhdGVUb04obmV3IGIoaCwxNikpLHU9dGhpcy5rZXlGcm9tUHVibGljKHUscCk7dmFyIGQ9KGY9bmV3IG4oZiwi'@; put 'aGV4IikpLnIsdj1mLnM7aWYoZC5jbXBuKDEpPDB8fGQuY21wKHRoaXMubik+PTB8fHYuY21wbigxKTwwfHx2LmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3ZhciBfLEE9di5pbnZtKHRoaXMubiksST1BLm11bChoKS51bW9kKHRoaXMubiksTD1BLm11bChkKS51bW9kKHRoaXMubik7cmV0dXJu'@; put 'IHRoaXMuY3VydmUuX21heHdlbGxUcmljaz8hKF89dGhpcy5nLmptdWxBZGQoSSx1LmdldFB1YmxpYygpLEwpKS5pc0luZmluaXR5KCkmJl8uZXFYVG9QKGQpOiEoXz10aGlzLmcubXVsQWRkKEksdS5nZXRQdWJsaWMoKSxMKSkuaXNJbmZpbml0eSgpJiYwPT09Xy5nZXRYKCkudW1vZCh0aGlz'@; put 'Lm4pLmNtcChkKX0saS5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihoLGYsdSxwKXtlKCgzJnUpPT09dSwiVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cyIpLGY9bmV3IG4oZixwKTt2YXIgZD10aGlzLm4sdj1uZXcgYihoKSxfPWYucixBPWYucyxJPTEm'@; put 'dSxMPXU+PjE7aWYoXy5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJkwpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUiKTtfPXRoaXMuY3VydmUucG9pbnRGcm9tWChMP18uYWRkKHRoaXMuY3VydmUubik6XyxJKTt2'@; put 'YXIgTj1mLnIuaW52bShkKSxQPWQuc3ViKHYpLm11bChOKS51bW9kKGQpLEI9QS5tdWwoTikudW1vZChkKTtyZXR1cm4gdGhpcy5nLm11bEFkZChQLF8sQil9LGkucHJvdG90eXBlLmdldEtleVJlY292ZXJ5UGFyYW09ZnVuY3Rpb24oaCxmLHUscCl7aWYobnVsbCE9PShmPW5ldyBuKGYscCkp'@; put 'LnJlY292ZXJ5UGFyYW0pcmV0dXJuIGYucmVjb3ZlcnlQYXJhbTtmb3IodmFyIGQ9MDtkPDQ7ZCsrKXt2YXIgdjt0cnl7dj10aGlzLnJlY292ZXJQdWJLZXkoaCxmLGQpfWNhdGNoe2NvbnRpbnVlfWlmKHYuZXEodSkpcmV0dXJuIGR9dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB2'@; put 'YWxpZCByZWNvdmVyeSBmYWN0b3IiKX19LHsiLi4vY3VydmVzIjo0MTEsIi4uL3V0aWxzIjo0MTksIi4va2V5Ijo0MTMsIi4vc2lnbmF0dXJlIjo0MTQsImJuLmpzIjo0MjAsYnJvcmFuZDoxODcsImhtYWMtZHJiZyI6NDM4fV0sNDEzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3Zh'@; put 'ciBiPXMoImJuLmpzIiksYT1zKCIuLi91dGlscyIpLmFzc2VydDtmdW5jdGlvbiBvKHIsdCl7dGhpcy5lYz1yLHRoaXMucHJpdj1udWxsLHRoaXMucHViPW51bGwsdC5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKHQucHJpdix0LnByaXZFbmMpLHQucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWMo'@; put 'dC5wdWIsdC5wdWJFbmMpfUUuZXhwb3J0cz1vLG8uZnJvbVB1YmxpYz1mdW5jdGlvbihyLHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBvP3Q6bmV3IG8ocix7cHViOnQscHViRW5jOmV9KX0sby5mcm9tUHJpdmF0ZT1mdW5jdGlvbihyLHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBvP3Q6bmV3'@; put 'IG8ocix7cHJpdjp0LHByaXZFbmM6ZX0pfSxvLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciByPXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIHIuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVhc29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTpyLnZhbGlkYXRlKCk/ci5tdWwodGhp'@; put 'cy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDohMSxyZWFzb246IlB1YmxpYyBrZXkgKiBOICE9IE8ifTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSBpcyBub3QgYSBwb2ludCJ9fSxvLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVu'@; put 'Y3Rpb24ocix0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHImJih0PXIscj1udWxsKSx0aGlzLnB1Ynx8KHRoaXMucHViPXRoaXMuZWMuZy5tdWwodGhpcy5wcml2KSksdD90aGlzLnB1Yi5lbmNvZGUodCxyKTp0aGlzLnB1Yn0sby5wcm90b3R5cGUuZ2V0UHJpdmF0ZT1mdW5jdGlvbihyKXty'@; put 'ZXR1cm4iaGV4Ij09PXI/dGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpOnRoaXMucHJpdn0sby5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24ocix0KXt0aGlzLnByaXY9bmV3IGIocix0fHwxNiksdGhpcy5wcml2PXRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubil9LG8ucHJv'@; put 'dG90eXBlLl9pbXBvcnRQdWJsaWM9ZnVuY3Rpb24ocix0KXtpZihyLnh8fHIueSlyZXR1cm4ibW9udCI9PT10aGlzLmVjLmN1cnZlLnR5cGU/YShyLngsIk5lZWQgeCBjb29yZGluYXRlIik6InNob3J0IiE9PXRoaXMuZWMuY3VydmUudHlwZSYmImVkd2FyZHMiIT09dGhpcy5lYy5jdXJ2ZS50'@; put 'eXBlfHxhKHIueCYmci55LCJOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlIiksdm9pZCh0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLnBvaW50KHIueCxyLnkpKTt0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KHIsdCl9LG8ucHJvdG90eXBlLmRlcml2ZT1mdW5jdGlvbihyKXty'@; put 'ZXR1cm4gci52YWxpZGF0ZSgpfHxhKHIudmFsaWRhdGUoKSwicHVibGljIHBvaW50IG5vdCB2YWxpZGF0ZWQiKSxyLm11bCh0aGlzLnByaXYpLmdldFgoKX0sby5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihyLHQsZSl7cmV0dXJuIHRoaXMuZWMuc2lnbihyLHRoaXMsdCxlKX0sby5wcm90b3R5'@; put 'cGUudmVyaWZ5PWZ1bmN0aW9uKHIsdCl7cmV0dXJuIHRoaXMuZWMudmVyaWZ5KHIsdCx0aGlzKX0sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiI8S2V5IHByaXY6ICIrKHRoaXMucHJpdiYmdGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpKSsiIHB1YjogIisodGhpcy5wdWIm'@; put 'JnRoaXMucHViLmluc3BlY3QoKSkrIiA+In19LHsiLi4vdXRpbHMiOjQxOSwiYm4uanMiOjQyMH1dLDQxNDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJibi5qcyIpLGE9cygiLi4vdXRpbHMiKSxvPWEuYXNzZXJ0O2Z1bmN0aW9uIHIoaSxoKXtpZihpIGluc3RhbmNl'@; put 'b2YgcilyZXR1cm4gaTt0aGlzLl9pbXBvcnRERVIoaSxoKXx8KG8oaS5yJiZpLnMsIlNpZ25hdHVyZSB3aXRob3V0IHIgb3IgcyIpLHRoaXMucj1uZXcgYihpLnIsMTYpLHRoaXMucz1uZXcgYihpLnMsMTYpLHRoaXMucmVjb3ZlcnlQYXJhbT12b2lkIDA9PT1pLnJlY292ZXJ5UGFyYW0/bnVs'@; put 'bDppLnJlY292ZXJ5UGFyYW0pfWZ1bmN0aW9uIHQoKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gZShpLGgpe3ZhciBmPWlbaC5wbGFjZSsrXTtpZighKDEyOCZmKSlyZXR1cm4gZjt2YXIgdT0xNSZmO2lmKDA9PT11fHx1PjQpcmV0dXJuITE7Zm9yKHZhciBwPTAsZD0wLHY9aC5wbGFjZTtkPHU7'@; put 'ZCsrLHYrKylwPDw9OCxwfD1pW3ZdLHA+Pj49MDtyZXR1cm4hKHA8PTEyNykmJihoLnBsYWNlPXYscCl9ZnVuY3Rpb24gbChpKXtmb3IodmFyIGg9MCxmPWkubGVuZ3RoLTE7IWlbaF0mJiEoMTI4JmlbaCsxXSkmJmg8ZjspaCsrO3JldHVybiAwPT09aD9pOmkuc2xpY2UoaCl9ZnVuY3Rpb24g'@; put 'bihpLGgpe2lmKGg8MTI4KWkucHVzaChoKTtlbHNle3ZhciBmPTErKE1hdGgubG9nKGgpL01hdGguTE4yPj4+Myk7Zm9yKGkucHVzaCgxMjh8Zik7LS1mOylpLnB1c2goaD4+PihmPDwzKSYyNTUpO2kucHVzaChoKX19RS5leHBvcnRzPXIsci5wcm90b3R5cGUuX2ltcG9ydERFUj1mdW5jdGlv'@; put 'bihpLGgpe2k9YS50b0FycmF5KGksaCk7dmFyIGY9bmV3IHQ7aWYoNDghPT1pW2YucGxhY2UrK10pcmV0dXJuITE7dmFyIHU9ZShpLGYpO2lmKCExPT09dXx8dStmLnBsYWNlIT09aS5sZW5ndGh8fDIhPT1pW2YucGxhY2UrK10pcmV0dXJuITE7dmFyIHA9ZShpLGYpO2lmKCExPT09cClyZXR1'@; put 'cm4hMTt2YXIgZD1pLnNsaWNlKGYucGxhY2UscCtmLnBsYWNlKTtpZihmLnBsYWNlKz1wLDIhPT1pW2YucGxhY2UrK10pcmV0dXJuITE7dmFyIHY9ZShpLGYpO2lmKCExPT09dnx8aS5sZW5ndGghPT12K2YucGxhY2UpcmV0dXJuITE7dmFyIF89aS5zbGljZShmLnBsYWNlLHYrZi5wbGFjZSk7'@; put 'aWYoMD09PWRbMF0pe2lmKCEoMTI4JmRbMV0pKXJldHVybiExO2Q9ZC5zbGljZSgxKX1pZigwPT09X1swXSl7aWYoISgxMjgmX1sxXSkpcmV0dXJuITE7Xz1fLnNsaWNlKDEpfXJldHVybiB0aGlzLnI9bmV3IGIoZCksdGhpcy5zPW5ldyBiKF8pLHRoaXMucmVjb3ZlcnlQYXJhbT1udWxsLCEw'@; put 'fSxyLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbihpKXt2YXIgaD10aGlzLnIudG9BcnJheSgpLGY9dGhpcy5zLnRvQXJyYXkoKTtmb3IoMTI4JmhbMF0mJihoPVswXS5jb25jYXQoaCkpLDEyOCZmWzBdJiYoZj1bMF0uY29uY2F0KGYpKSxoPWwoaCksZj1sKGYpOyEoZlswXXx8MTI4JmZbMV0p'@; put 'OylmPWYuc2xpY2UoMSk7dmFyIHU9WzJdO24odSxoLmxlbmd0aCksKHU9dS5jb25jYXQoaCkpLnB1c2goMiksbih1LGYubGVuZ3RoKTt2YXIgcD11LmNvbmNhdChmKSxkPVs0OF07cmV0dXJuIG4oZCxwLmxlbmd0aCksZD1kLmNvbmNhdChwKSxhLmVuY29kZShkLGkpfX0seyIuLi91dGlscyI6'@; put 'NDE5LCJibi5qcyI6NDIwfV0sNDE1OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImhhc2guanMiKSxhPXMoIi4uL2N1cnZlcyIpLG89cygiLi4vdXRpbHMiKSxyPW8uYXNzZXJ0LHQ9by5wYXJzZUJ5dGVzLGU9cygiLi9rZXkiKSxsPXMoIi4vc2lnbmF0dXJlIik7ZnVu'@; put 'Y3Rpb24gbihpKXtpZihyKCJlZDI1NTE5Ij09PWksIm9ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXIiKSwhKHRoaXMgaW5zdGFuY2VvZiBuKSlyZXR1cm4gbmV3IG4oaSk7dGhpcy5jdXJ2ZT1pPWFbaV0uY3VydmUsdGhpcy5nPWkuZyx0aGlzLmcucHJlY29tcHV0ZShpLm4uYml0TGVu'@; put 'Z3RoKCkrMSksdGhpcy5wb2ludENsYXNzPWkucG9pbnQoKS5jb25zdHJ1Y3Rvcix0aGlzLmVuY29kaW5nTGVuZ3RoPU1hdGguY2VpbChpLm4uYml0TGVuZ3RoKCkvOCksdGhpcy5oYXNoPWIuc2hhNTEyfUUuZXhwb3J0cz1uLG4ucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oaSxoKXtpPXQoaSk7'@; put 'dmFyIGY9dGhpcy5rZXlGcm9tU2VjcmV0KGgpLHU9dGhpcy5oYXNoSW50KGYubWVzc2FnZVByZWZpeCgpLGkpLHA9dGhpcy5nLm11bCh1KSxkPXRoaXMuZW5jb2RlUG9pbnQocCksdj10aGlzLmhhc2hJbnQoZCxmLnB1YkJ5dGVzKCksaSkubXVsKGYucHJpdigpKSxfPXUuYWRkKHYpLnVtb2Qo'@; put 'dGhpcy5jdXJ2ZS5uKTtyZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOnAsUzpfLFJlbmNvZGVkOmR9KX0sbi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGksaCxmKXtpPXQoaSksaD10aGlzLm1ha2VTaWduYXR1cmUoaCk7dmFyIHU9dGhpcy5rZXlGcm9tUHVibGljKGYpLHA9dGhpcy5o'@; put 'YXNoSW50KGguUmVuY29kZWQoKSx1LnB1YkJ5dGVzKCksaSksZD10aGlzLmcubXVsKGguUygpKTtyZXR1cm4gaC5SKCkuYWRkKHUucHViKCkubXVsKHApKS5lcShkKX0sbi5wcm90b3R5cGUuaGFzaEludD1mdW5jdGlvbigpe2Zvcih2YXIgaT10aGlzLmhhc2goKSxoPTA7aDxhcmd1bWVudHMu'@; put 'bGVuZ3RoO2grKylpLnVwZGF0ZShhcmd1bWVudHNbaF0pO3JldHVybiBvLmludEZyb21MRShpLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LG4ucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oaSl7cmV0dXJuIGUuZnJvbVB1YmxpYyh0aGlzLGkpfSxuLnByb3RvdHlwZS5r'@; put 'ZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKGkpe3JldHVybiBlLmZyb21TZWNyZXQodGhpcyxpKX0sbi5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbihpKXtyZXR1cm4gaSBpbnN0YW5jZW9mIGw/aTpuZXcgbCh0aGlzLGkpfSxuLnByb3RvdHlwZS5lbmNvZGVQb2ludD1mdW5jdGlvbihp'@; put 'KXt2YXIgaD1pLmdldFkoKS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIGhbdGhpcy5lbmNvZGluZ0xlbmd0aC0xXXw9aS5nZXRYKCkuaXNPZGQoKT8xMjg6MCxofSxuLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihpKXt2YXIgaD0oaT1vLnBhcnNlQnl0'@; put 'ZXMoaSkpLmxlbmd0aC0xLGY9aS5zbGljZSgwLGgpLmNvbmNhdCgtMTI5JmlbaF0pLHU9ISEoMTI4JmlbaF0pLHA9by5pbnRGcm9tTEUoZik7cmV0dXJuIHRoaXMuY3VydmUucG9pbnRGcm9tWShwLHUpfSxuLnByb3RvdHlwZS5lbmNvZGVJbnQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGkudG9BcnJh'@; put 'eSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpfSxuLnByb3RvdHlwZS5kZWNvZGVJbnQ9ZnVuY3Rpb24oaSl7cmV0dXJuIG8uaW50RnJvbUxFKGkpfSxuLnByb3RvdHlwZS5pc1BvaW50PWZ1bmN0aW9uKGkpe3JldHVybiBpIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzfX0seyIuLi9jdXJ2'@; put 'ZXMiOjQxMSwiLi4vdXRpbHMiOjQxOSwiLi9rZXkiOjQxNiwiLi9zaWduYXR1cmUiOjQxNywiaGFzaC5qcyI6NDI2fV0sNDE2OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL3V0aWxzIiksYT1iLmFzc2VydCxvPWIucGFyc2VCeXRlcyxyPWIuY2FjaGVkUHJvcGVy'@; put 'dHk7ZnVuY3Rpb24gdChlLGwpe3RoaXMuZWRkc2E9ZSx0aGlzLl9zZWNyZXQ9byhsLnNlY3JldCksZS5pc1BvaW50KGwucHViKT90aGlzLl9wdWI9bC5wdWI6dGhpcy5fcHViQnl0ZXM9byhsLnB1Yil9dC5mcm9tUHVibGljPWZ1bmN0aW9uKGUsbCl7cmV0dXJuIGwgaW5zdGFuY2VvZiB0P2w6'@; put 'bmV3IHQoZSx7cHViOmx9KX0sdC5mcm9tU2VjcmV0PWZ1bmN0aW9uKGUsbCl7cmV0dXJuIGwgaW5zdGFuY2VvZiB0P2w6bmV3IHQoZSx7c2VjcmV0Omx9KX0sdC5wcm90b3R5cGUuc2VjcmV0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlY3JldH0scih0LCJwdWJCeXRlcyIsZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKX0pLHIodCwicHViIixmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wdWJCeXRlcz90aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTp0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKX0pLHIodCwi'@; put 'cHJpdkJ5dGVzIixmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWRkc2EsbD10aGlzLmhhc2goKSxuPWUuZW5jb2RpbmdMZW5ndGgtMSxpPWwuc2xpY2UoMCxlLmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gaVswXSY9MjQ4LGlbbl0mPTEyNyxpW25dfD02NCxpfSkscih0LCJwcml2IixmdW5jdGlvbigp'@; put 'e3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKX0pLHIodCwiaGFzaCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpfSkscih0LCJtZXNzYWdlUHJlZml4IixmdW5jdGlvbigpe3JldHVy'@; put 'biB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pLHQucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcy5fc2VjcmV0LCJLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeSIpLHRoaXMuZWRkc2Euc2lnbihlLHRoaXMpfSx0LnByb3RvdHlwZS52'@; put 'ZXJpZnk9ZnVuY3Rpb24oZSxsKXtyZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkoZSxsLHRoaXMpfSx0LnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcy5fc2VjcmV0LCJLZXlQYWlyIGlzIHB1YmxpYyBvbmx5IiksYi5lbmNvZGUodGhpcy5zZWNyZXQoKSxlKX0s'@; put 'dC5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKGUpe3JldHVybiBiLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksZSl9LEUuZXhwb3J0cz10fSx7Ii4uL3V0aWxzIjo0MTl9XSw0MTc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiYm4uanMiKSxhPXMoIi4uL3V0aWxz'@; put 'Iiksbz1hLmFzc2VydCxyPWEuY2FjaGVkUHJvcGVydHksdD1hLnBhcnNlQnl0ZXM7ZnVuY3Rpb24gZShsLG4pe3RoaXMuZWRkc2E9bCwib2JqZWN0IiE9dHlwZW9mIG4mJihuPXQobikpLEFycmF5LmlzQXJyYXkobikmJihuPXtSOm4uc2xpY2UoMCxsLmVuY29kaW5nTGVuZ3RoKSxTOm4uc2xp'@; put 'Y2UobC5lbmNvZGluZ0xlbmd0aCl9KSxvKG4uUiYmbi5TLCJTaWduYXR1cmUgd2l0aG91dCBSIG9yIFMiKSxsLmlzUG9pbnQobi5SKSYmKHRoaXMuX1I9bi5SKSxuLlMgaW5zdGFuY2VvZiBiJiYodGhpcy5fUz1uLlMpLHRoaXMuX1JlbmNvZGVkPUFycmF5LmlzQXJyYXkobi5SKT9uLlI6bi5S'@; put 'ZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KG4uUyk/bi5TOm4uU2VuY29kZWR9cihlLCJTIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpfSkscihlLCJSIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29k'@; put 'ZVBvaW50KHRoaXMuUmVuY29kZWQoKSl9KSxyKGUsIlJlbmNvZGVkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKX0pLHIoZSwiU2VuY29kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlSW50KHRoaXMuUygpKX0pLGUucHJv'@; put 'dG90eXBlLnRvQnl0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SZW5jb2RlZCgpLmNvbmNhdCh0aGlzLlNlbmNvZGVkKCkpfSxlLnByb3RvdHlwZS50b0hleD1mdW5jdGlvbigpe3JldHVybiBhLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwiaGV4IikudG9VcHBlckNhc2UoKX0sRS5leHBvcnRz'@; put 'PWV9LHsiLi4vdXRpbHMiOjQxOSwiYm4uanMiOjQyMH1dLDQxODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9e2RvdWJsZXM6e3N0ZXA6NCxwb2ludHM6W1siZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUyYTZk'@; put 'ZWMwYSIsImY3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEiXSxbIjgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDgiLCIxMWY4YTgwOTg1NTdkZmU0NWU4MjU2'@; put 'ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmIl0sWyIxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5IiwiZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVm'@; put 'YTZmZmVlOWZlZDY5NSJdLFsiMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MCIsIjRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSJdLFsiOGI0YjVmMTY1ZGYz'@; put 'YzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwYyIsIjRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYiXSxbIjcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRiZmZh'@; put 'NmMwZTc3YmNiNjExNTkyNTIzMmZjZGEiLCI5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmIl0sWyJlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhIiwiNWQ5'@; put 'YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSJdLFsiMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMCIsImNkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2'@; put 'YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDkiXSxbImUxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQiLCI5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZh'@; put 'MDBkIl0sWyJmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkIiwiZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCJdLFsiZGE2N2E5MWQ5MTA0OWNkY2IzNjdi'@; put 'ZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMSIsIjliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQiXSxbIjUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5ZjU3'@; put 'NTQ1Y2NjMWEzN2I3YzAiLCI1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4Il0sWyI4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3IiwiMTBiNzc3MGIyYTNk'@; put 'YTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSJdLFsiMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MiIsIjI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMy'@; put 'MDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMiXSxbIjZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNyIsIjdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAiXSxbIjMz'@; put 'MjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmQiLCI1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwIl0sWyI4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2NTg2'@; put 'ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzIiwiN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNiJdLFsiOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYwYzgy'@; put 'YTBhIiwiNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSJdLFsiNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOCIsImJjMmRhODJiNmZhNWI1NzFhN2YwOTA0'@; put 'OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTciXSxbImU1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmQiLCI0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1'@; put 'ZGM4NDFkNzU1YmRhIl0sWyJlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1IiwiN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCJdLFsiMjEzYzdhNzE1Y2Q1'@; put 'ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NCIsIjRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjIiXSxbIjRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4MzhjNzBh'@; put 'ZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2MiLCIxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2Il0sWyJmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2IiwiNmUw'@; put 'NTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZiJdLFsiNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOSIsImM5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQz'@; put 'NWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEiXSxbImM3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTEiLCI4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4'@; put 'NGMzIl0sWyJkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiIiwiZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZiJdLFsiYjhkYTk0MDMyYTk1NzUxOGViMGY2'@; put 'NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwMyIsIjI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTciXSxbImU4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5MmYx'@; put 'YTExNzc4ZTNjMGRmNWQiLCJlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4Il0sWyJhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwIiwiNzM3MGY5MWNmYjY3'@; put 'ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSJdLFsiOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNCIsImU1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1'@; put 'ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCJdLFsiOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYSIsIjY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODIiXSxbImU0'@; put 'ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEiLCIxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjIl0sWyI4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVhNDI2'@; put 'NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllIiwiZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YiJdLFsiZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2MGNi'@; put 'M2U0MSIsIjJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEiXSxbImI2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYiLCI2N2M4NzZkMDZmM2UwNmRlMWRhZGYx'@; put 'NmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUiXSxbImQ2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZTgiLCJkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRj'@; put 'ODQyNjZiMTMzMTIwIl0sWyIzMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkIiwiNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCJdLFsiNGRmOWMxNDkxOWNk'@; put 'ZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NiIsIjM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkIl0sWyI5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1NGQ3'@; put 'ZjAzMDhjYmZjOTljOGFjMWY5OGNkIiwiZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCJdLFsiNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNSIsIjlhMWFm'@; put 'MGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgiXSxbImE1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYiLCI0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQz'@; put 'MmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4Il0sWyI3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxIiwiMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNh'@; put 'YyJdLFsiOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjIiwiYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZiJdLFsiODVkMGZlZjNlYzZkYjEwOTM5OTA2NGYz'@; put 'YTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MSIsIjFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjIiXSxbImZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhmNTQw'@; put 'NDgyNDUyNjA4N2UiLCI0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3Il0sWyI4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxIiwiYzYwZjljOTIzYzcyN2Iw'@; put 'YjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYyJdLFsiZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMyIsImJlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNm'@; put 'N2U1OWQ0N2E1MzA1YmE1YWQ5M2QiXSxbImU0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGYiLCI0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0Il0sWyIxZWM4'@; put 'MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5IiwiYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCJdLFsiMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZhOGJj'@; put 'ZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZSIsImIzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAiXSxbImZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4MGVl'@; put 'ZjkiLCI2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExIl0sWyJkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyIiwiODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYx'@; put 'NjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSJdLFsiYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMyIsIjdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdj'@; put 'NzMxMTFmNGNjMGMiXSxbIjE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2MiLCJjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczIl0sWyI5NTkzOTY5ODE5NDM3'@; put 'ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhIiwiMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCJdLFsiZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQzZDU2'@; put 'MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MSIsImU4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUiXSxbIjY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzMiLCJkOTlm'@; put 'Y2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5Il0sWyI4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4IiwiMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5'@; put 'MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSJdLFsiMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YiIsIjY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNj'@; put 'MjciXSxbImJjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjYiLCJkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEiXSxbIjhjMjhhOTdiZjgyOThiYzBkMjNkOGM3'@; put 'NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWEiLCI0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyIl0sWyI4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4YzRi'@; put 'YTExMWZhY2NhZTAiLCI2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1Il0sWyJkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3IiwiN2ExODhmYTM1MjBlMzBk'@; put 'NDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MyJdLFsiZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZSIsImVhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUx'@; put 'NjE3NTI2YWU0N2E5Yzc3YmZjODIiXV19LG5hZjp7d25kOjcscG9pbnRzOltbImY5MzA4YTAxOTI1OGMzMTA0OTM0NGY4NWY4OWQ1MjI5YjUzMWM4NDU4MzZmOTliMDg2MDFmMTEzYmNlMDM2ZjkiLCIzODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2Y2I5'@; put 'ZmQ3NTg0YjhlNjcyIl0sWyIyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0IiwiZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNiJdLFsiNWNiZGYwNjQ2ZTVk'@; put 'YjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliYyIsIjZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGEiXSxbImFjZDQ4NGUyZjBjN2Y2NTMwOWFkMTc4YTlmNTU5YWJkZTA5Nzk2OTc0'@; put 'YzU3ZTcxNGMzNWYxMTBkZmMyN2NjYmUiLCJjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3Il0sWyI3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiIiwiZDk4'@; put 'NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYiJdLFsiZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOCIsImFiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFmNDcz'@; put 'YTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MSJdLFsiZDc5MjRkNGY3ZDQzZWE5NjVhNDY1YWUzMDk1ZmY0MTEzMWU1OTQ2ZjNjODVmNzllNDRhZGJjZjhlMjdlMDgwZSIsIjU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZhMjZi'@; put 'NTgiXSxbImRlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzQiLCI0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3Il0sWyIyYjRlYTBhNzk3YTQ0M2QyOTNlZjVj'@; put 'ZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjIiwiODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YSJdLFsiMzUyYmJmNGE0Y2RkMTI1NjRmOTNmYTMzMmNlMzMzMzAxZDlhZDQwMjcxZjgxMDcxODEz'@; put 'NDBhZWYyNWJlNTlkNSIsIjMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGMiXSxbIjJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2YiLCIyZGUxMDY4Mjk1ZGQ4'@; put 'NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjciXSxbIjkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTQiLCI3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJhODg3'@; put 'OTEyZmZlNTRhMzJjZTk3Y2IzNDAyIl0sWyJkYWVkNGYyYmUzYThiZjI3OGU3MDEzMmZiMGJlYjc1MjJmNTcwZTE0NGJmNjE1YzA3ZTk5NmQ0NDNkZWU4NzI5IiwiYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NSJdLFsiYzQ0'@; put 'ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYiIsIjIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODIiXSxbIjZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYwODUz'@; put 'MTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjQiLCJlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyIl0sWyIxNjk3ZmZhNmZkOWRlNjI3YzA3N2UzZDJmZTU0MTA4NGNlMTMzMDBiMGJlYzExNDZmOTVhZTU3ZjBkMGJk'@; put 'NmE1IiwiYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NiJdLFsiNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OSIsIjI5NzJkMmRlNGY4ZDIwNjgxYTc4ZDkz'@; put 'ZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OSJdLFsiNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZCIsIjgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1ZjU2'@; put 'NDI0ODNiMjVlYWYiXSxbIjgwYzYwYWQwMDQwZjI3ZGFkZTViNGIwNmM0MDhlNTZiMmM1MGU5ZjU2YjliOGI0MjVlNTU1YzJmODYzMDhiNmYiLCIxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhIl0sWyI3YTkzNzVhZDYxNjdh'@; put 'ZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiIiwiZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3Il0sWyJkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMzOWI2'@; put 'OGRmNTA0YmI1MWY0NTliYzNmZmM5IiwiZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzMyJdLFsiNDkzNzBhNGI1ZjQzNDEyZWEyNWY1MTRlOGVjZGFkMDUyNjYxMTVlNGE3ZWNiMTM4NzIzMTgwOGY4YjQ1OTYzIiwiNzU4ZjNm'@; put 'NDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YSJdLFsiNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NCIsIjk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4OTZj'@; put 'OTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYiXSxbImYyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzAiLCJlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2EzYzM3'@; put 'Il0sWyI0NjNiM2Q5ZjY2MjYyMWZiMWI0YmU4ZmJiZTI1MjAxMjVhMjE2Y2RmYzlkYWUzZGViY2JhNDg1MGM2OTBkNDViIiwiNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZSJdLFsiZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRh'@; put 'ZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0NyIsImNlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYiXSxbImNhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2OWUx'@; put 'NWY3MTUxZDQxZDEiLCJjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2Il0sWyIyNjAwY2E0YjI4MmNiOTg2Zjg1ZDBmMTcwOTk3OWQ4YjQ0YTA5YzA3Y2I4NmQ3YzEyNDQ5N2JjODZmMDgyMTIwIiwiNDExOWI4ODc1M2MxNWJk'@; put 'NmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MCJdLFsiNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNSIsIjkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1NzA0'@; put 'OGJhZDllNzZmMzAyYzViOWM2MSJdLFsiNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOCIsIjY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4MyJdLFsiZTNlNmJk'@; put 'MTA3MWExZTk2YWZmNTc4NTljODJkNTcwZjAzMzA4MDA2NjFkMWM5NTJmOWZlMjY5NDY5MWQ5YjllOCIsIjU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjUiXSxbIjE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRj'@; put 'Y2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWIiLCIzYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiIl0sWyJkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5NjNm'@; put 'IiwiNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxNyJdLFsiNWVkZDVjYzIzYzUxZTg3YTQ5N2NhODE1ZDVkY2UwZjhhYjUyNTU0Zjg0OWVkODk5NWRlNjRjNWYzNGNlNzE0MyIsImVmYWU5YzhkYmMxNDEzMDY2MWU4Y2VjMDMw'@; put 'Yzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjgiXSxbIjI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmEiLCJlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAwM2Fm'@; put 'ZDQxOTQzZTdhIl0sWyJhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1IiwiZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNiJdLFsiNzY2ZGJiMjRkMTM0ZTc0'@; put 'NWNjY2FhMjhjOTliZjI3NDkwNmJiNjZiMjZkY2Y5OGRmOGQyZmVkNTBkODg0MjQ5YSIsIjc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTYiXSxbIjU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5'@; put 'NmE1OGNlOTJlNjY2MTkxYWJlM2UiLCJjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlIl0sWyJmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4IiwiZTEzODE3'@; put 'YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZCJdLFsiNzc1NGI0ZmEwZThhY2VkMDZkNDE2N2EyYzU5Y2NhNGNkYTE4NjljMDZlYmFkZmI2NDg4NTUwMDE1YTg4NTIyYyIsIjMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZhOGQx'@; put 'ZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTIiXSxbIjk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTkiLCJlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdkNTdl'@; put 'Il0sWyI3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiIiwiMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzNyJdLFsiMzUxNDA4NzgzNDk2NGI1NGIxNWIxNjA2'@; put 'NDRkOTE1NDg1YTE2OTc3MjI1Yjg4NDdiYjBkZDA4NTEzN2VjNDdjYSIsImVmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTEiXSxbImQzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQz'@; put 'ZDNmN2I1MjdlYWYiLCI4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0Il0sWyIxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwIiwiNjg2NTFjZjliNmRhOTAz'@; put 'ZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NSJdLFsiNzMzY2U4MGRhOTU1YThhMjY5MDJjOTU2MzNlNjJhOTg1MTkyNDc0YjVhZjIwN2RhNmRmN2I0ZmQ1ZmM2MWNkNCIsImY1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAyMDFl'@; put 'NDU3OGM1NDY3M2JjMWRjNWVhMWQiXSxbIjE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWMiLCJkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkIl0sWyJhMWQw'@; put 'ZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwIiwiZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOSJdLFsiZTIyZmJlMTVjMGFmOGNjYzU3ODBjMDczNWY4NGRiZTlh'@; put 'NzkwYmFkZWU4MjQ1YzA2YzdjYTM3MzMxY2IzNjk4MCIsImE4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNiJdLFsiMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTli'@; put 'MyIsIjY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQiXSxbIjM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGYiLCI5NDE0Njg1ZTk3YjFiNTk1NGJkNDZmNzMw'@; put 'MTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWUiXSxbImYyMTllYTVkNmI1NDcwMWMxYzE0ZGU1YjU1N2ViNDJhOGQxM2YzYWJiY2QwOGFmZmNjMmE1ZTZiMDQ5YjhkNjMiLCI0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMyOTYy'@; put 'YTQwMDc2NmQxIl0sWyJkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4IiwiZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYiJdLFsiMzJkMzFjMjIyZjhmNmYw'@; put 'ZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZiIsIjVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjEiXSxbIjc0NjFmMzcxOTE0YWIzMjY3MTA0NWExNTVkOTgzMWVhODc5M2Q3N2NkNTk1'@; put 'OTJjNDM0MGY4NmNiYzE4MzQ3YjUiLCI4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2Il0sWyJlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2IiwiOGRjMjQx'@; put 'MmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZSJdLFsiMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNSIsIjVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEzOWQ1'@; put 'ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGQiXSxbImVhYTVmOTgwYzI0NWY2ZjAzODk3ODI5MGFmYTcwYjZiZDg4NTU4OTdmOThiNmFhNDg1Yjk2MDY1ZDUzN2JkOTkiLCJmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMwN2Rj'@; put 'Il0sWyI3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTEiLCJmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0Il0sWyI0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4Mzg0'@; put 'MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1IiwiNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyYyJdLFsiYTU5OGE4MDMwZGE2ZDg2YzZiYzdmMmY1MTQ0ZWE1NDlkMjgyMTFlYTU4ZmFhNzBlYmY0YzFl'@; put 'NjY1YzFmZTliNSIsIjIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmIiXSxbImM0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTciLCI0ZjE0MzUxZDAwODdlZmE0'@; put 'OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMiXSxbIjg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODEiLCI3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRjMTY5'@; put 'Y2U3YTM2ZGUwMWE4ZDYxNTQiXSxbIjVlOTViYjM5OWE2OTcxZDM3NjAyNjk0N2Y4OWJkZTJmMjgyYjMzODEwOTI4YmU0ZGVkMTEyYWM0ZDcwZTIwZDUiLCIzOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1Il0sWyIzNmU0NjQx'@; put 'YTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2IiwiZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYyJdLFsiMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1NjQz'@; put 'ODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2IiwiZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNCJdLFsiOGFiODk4MTZkYWRmZDZiNmExZjI2MzRmY2YwMGVjODQwMzc4MTAyNWVkNjg5MGM0ODQ5NzQyNzA2YmQ0M2VkZSIs'@; put 'IjZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGUiXSxbIjFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTQiLCI2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThkMjRl'@; put 'ZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYiXSxbIjg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzEiLCIzZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNjMzVl'@; put 'OTk5NTExIl0sWyIyOWRmOWZiZDhkOWU0NjUwOTI3NWY0YjEyNWQ2ZDQ1ZDdmYmU5YTNiODc4YTdhZjg3MmEyODAwNjYxYWM1ZjUxIiwiYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiIl0sWyJhMGIxY2FlMDZiMGE4NDdhM2Zl'@; put 'YTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyIiwiYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMiJdLFsiNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNlNGJh'@; put 'MTEzZjJlNGMwZTEyMWU1IiwiY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzYyJdLFsiZDI0YTQ0ZTA0N2UxOWI2ZjVhZmI4MWM3Y2EyZjY5MDgwYTUwNzY2ODlhMDEwOTE5ZjQyNzI1YzJiNzg5YTMzYiIsIjZmYjhkNTU5MWI0'@; put 'NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTMiXSxbImVhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDQiLCIzMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0OTRi'@; put 'YzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkIl0sWyJhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmIiwiNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMCJdLFsi'@; put 'ZTNhZTE5NzQ1NjZjYTA2Y2M1MTZkNDdlMGZiMTY1YTY3NGEzZGFiY2ZjYTE1ZTcyMmYwZTM0NTBmNDU4ODkiLCIyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0Il0sWyI1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNl'@; put 'MzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2IiwiYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NiJdLFsiMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1NWI1'@; put 'Mjk4NCIsIjk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTQiXSxbIjNjNWQyYTFiYTM5YzVhMTc5MDAwMDczOGM5ZTBjNDBiOGRjZGZkNTQ2ODc1NGI2NDA1NTQwMTU3ZTAxN2FhN2EiLCJiMjI4NDI3OTk5NWEzNGUyZjlkNGRl'@; put 'NzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3Il0sWyJjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwIiwiYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRlOTQw'@; put 'Yjc0ZTNhYzFmMWIxMyJdLFsiYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5NyIsIjZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTYiXSxbImMxNGY4ZjJjY2Iy'@; put 'N2Q2ZjEwOWY2ZDA4ZDAzY2M5NmE2OWJhOGMzNGVlYzA3YmJjZjU2NmQ0OGUzM2RhNjU5MyIsImMzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzgiXSxbImE2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3'@; put 'NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWYiLCIyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYiXSxbIjM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzgiLCI2MGVh'@; put 'N2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4Il0sWyJkYTY1NDVkMjE4MWRiOGQ5ODNmN2RjYjM3NWVmNTg2NmQ0N2M2N2IxYmYzMWM4Y2Y4NTVlZjc0MzdiNzI2NTZhIiwiNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBjNWQ2'@; put 'NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YSJdLFsiYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMSIsIjVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2UwZmEy'@; put 'ZDQiXSxbIjRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDIiLCI3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3Il0sWyIzNzc1YWI3MDg5YmM2YWY4MjNhYmEy'@; put 'ZTFhZjcwYjIzNmQyNTFjYWRiMGM4Njc0MzI4NzUyMmExYjNiMGRlZGVhIiwiYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmNyJdLFsiY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5'@; put 'NTllM2U4MmY3NGUyNiIsIjhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQiXSxbImI0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODYiLCIzOWU1Yzk5MjViNWE1'@; put 'NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhIl0sWyJkNDI2M2RmYzNkMmRmOTIzYTAxNzlhNDg5NjZkMzBjZTg0ZTI1MTVhZmMzZGNjYzFiNzc5MDc3OTJlYmNjNjBlIiwiNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3NjBh'@; put 'ZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NCJdLFsiNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNCIsIjI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzciXSxbImRm'@; put 'ZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGEiLCJlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3Il0sWyI2ZDdlZjZiMTc1NDNmODM3M2M1NzNmNDRlMWYzODk4'@; put 'MzVkODliY2JjNjA2MmNlZDM2YzgyZGY4M2I4ZmFlODU5IiwiY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMCJdLFsiZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0'@; put 'NTQxZiIsImY1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUiXSxbImViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGMiLCI2Y2I5YTg4NzZkOWNiODUyMDYwOWFm'@; put 'M2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlIl0sWyIxM2U4N2IwMjdkODUxNGQzNTkzOWYyZTY4OTJiMTk5MjIxNTQ1OTY5NDE4ODgzMzZkYzM1NjNlM2I4ZGJhOTQyIiwiZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmViMjU3'@; put 'MGQ1NTY0NmI4YWRmMSJdLFsiZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YSIsIjFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjIiXSxbImIyNjhmNWVmOWFk'@; put 'NTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODAiLCI1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzIl0sWyJmZjA3ZjMxMThhOWRmMDM1ZTlmYWQ4NWViNmM3YmZlNDJiMDJmMDFj'@; put 'YTk5Y2VlYTNiZjdmZmRiYTkzYzQ3NTBkIiwiNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOCJdLFsiOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMSIsImNk'@; put 'YjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgiXSxbIjUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjMiLCJjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5ZjU3'@; put 'YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzUiXSxbImU2MmY5NDkwZDNkNTFkYTYzOTVlZmQyNGU4MDkxOWNjN2QwZjI5YzNmM2ZhNDhjNmZmZjU0M2JlY2JkNDMzNTIiLCI2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDljY2Fm'@; put 'YTdkIl0sWyI3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzIiwiY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYyJdLFsiNTA5OGZmMWUxZDlmMTRmYjQ2YTIx'@; put 'MGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMCIsIjk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMCJdLFsiMzJiNzhjN2RlOWVlNTEyYTcyODk1YmU2YjljYmVmYTZlMmYzYzRjY2NlNDQ1Yzk2Yjlm'@; put 'MmM4MWUyNzc4YWQ1OCIsImVlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2MiXSxbImUyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjciLCJkM2FhMmVkNzFjOWRk'@; put 'MjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0Il0sWyI4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4IiwiYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3OTA2'@; put 'NjMxYzRmMjM5MDQyNmIyZWRkNzkxZiJdLFsiNDE2MmQ0ODhiODk0MDIwMzliNTg0YzZmYzZjMzA4ODcwNTg3ZDljNDZmNjYwYjg3OGFiNjVjODJjNzExZDY3ZSIsIjY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDkiXSxbIjNm'@; put 'YWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2QiLCJjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYiXSxbIjY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQwODE2'@; put 'YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmIiLCIyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1Il0sWyJkMzJmNGRhNTRhZGU3NGFiYjgxYjgxNWFkMWZiM2IyNjNkODJkNmM2OTI3MTRiY2ZmODdkMjliZDVlZTlm'@; put 'MDhmIiwiZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4NyJdLFsiMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNiIsIjQ2MmY5YmNlNjE5ODk4NjM4NDk5MzUw'@; put 'MTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2IiXSxbImJlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTciLCI2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBkNTU1'@; put 'OGVkNzJkY2NiOWJjIl0sWyI5MzE0NDQyM2FjZTM0NTFlZDI5ZTBmYjlhYzJhZjIxMWNiNmU4NGE2MDFkZjU5OTNjNDE5ODU5ZmZmNWRmMDRhIiwiN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3YyJdLFsiYjAxNWY4MDQ0ZjVm'@; put 'Y2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyYyIsImFiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYiXSxbImQ1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4ZGU1'@; put 'N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTIiLCI0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhIl0sWyJkM2FlNDEwNDdkZDdjYTA2NWRiZjhlZDc3Yjk5MjQzOTk4MzAwNWNkNzJlMTZkNmY5OTZhNTMxNmQzNjk2NmJiIiwiYmQx'@; put 'YWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NiJdLFsiNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NSIsImJmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUwNjJi'@; put 'MjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YiXSxbIjc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTciLCI2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1NjdmMzJl'@; put 'ZDAzIl0sWyI3NGExYWQ2YjVmNzZlMzlkYjJkZDI0OTQxMGVhYzdmOTllNzRjNTljYjgzZDJkMGVkNWZmMTU0M2RhNzcwM2U5IiwiY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOCJdLFsiMzA2ODJhNTA3MDMzNzVmNjAyZDQx'@; put 'NjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhMyIsIjU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgiXSxbIjllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUyYjFl'@; put 'ZTZjMTM0Nzc2OWVmNTciLCI3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzMiXSxbIjE3NmUyNjk4OWE0M2M5Y2ZlYmE0MDI5YzIwMjUzOGMyODE3MmU1NjZlM2M0ZmNlNzMyMjg1N2YzYmUzMjdkNjYiLCJlZDhjYzlkMDRiMjll'@; put 'Yjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzIl0sWyI3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4IiwiOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIyMTUx'@; put 'MzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCJdLFsiODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMSIsIjllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzEiXSxbIjFi'@; put 'Mzg5MDNhNDNmN2YxMTRlZDQ1MDBiNGVhYzcwODNmZGVmZWNlMWNmMjljNjM1MjhkNTYzNDQ2Zjk3MmMxODAiLCI0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5Il1dfX19LHt9XSw0MTk6W2Z1bmN0aW9uKHMsRSxTKXsidXNl'@; put 'IHN0cmljdCI7dmFyIGI9UyxhPXMoImJuLmpzIiksbz1zKCJtaW5pbWFsaXN0aWMtYXNzZXJ0Iikscj1zKCJtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzIik7Yi5hc3NlcnQ9byxiLnRvQXJyYXk9ci50b0FycmF5LGIuemVybzI9ci56ZXJvMixiLnRvSGV4PXIudG9IZXgsYi5lbmNvZGU9ci5l'@; put 'bmNvZGUsYi5nZXROQUY9ZnVuY3Rpb24odCxlLGwpe3ZhciBuPW5ldyBBcnJheShNYXRoLm1heCh0LmJpdExlbmd0aCgpLGwpKzEpO24uZmlsbCgwKTtmb3IodmFyIGk9MTw8ZSsxLGg9dC5jbG9uZSgpLGY9MDtmPG4ubGVuZ3RoO2YrKyl7dmFyIHUscD1oLmFuZGxuKGktMSk7aC5pc09kZCgp'@; put 'P2guaXN1Ym4odT1wPihpPj4xKS0xPyhpPj4xKS1wOnApOnU9MCxuW2ZdPXUsaC5pdXNocm4oMSl9cmV0dXJuIG59LGIuZ2V0SlNGPWZ1bmN0aW9uKHQsZSl7dmFyIGw9W1tdLFtdXTt0PXQuY2xvbmUoKSxlPWUuY2xvbmUoKTtmb3IodmFyIG4saT0wLGg9MDt0LmNtcG4oLWkpPjB8fGUuY21w'@; put 'bigtaCk+MDspe3ZhciBmLHUscD10LmFuZGxuKDMpK2kmMyxkPWUuYW5kbG4oMykraCYzOzM9PT1wJiYocD0tMSksMz09PWQmJihkPS0xKSxmPTEmcD8zIT0obj10LmFuZGxuKDcpK2kmNykmJjUhPT1ufHwyIT09ZD9wOi1wOjAsbFswXS5wdXNoKGYpLHU9MSZkPzMhPShuPWUuYW5kbG4oNykr'@; put 'aCY3KSYmNSE9PW58fDIhPT1wP2Q6LWQ6MCxsWzFdLnB1c2godSksMippPT09ZisxJiYoaT0xLWkpLDIqaD09PXUrMSYmKGg9MS1oKSx0Lml1c2hybigxKSxlLml1c2hybigxKX1yZXR1cm4gbH0sYi5jYWNoZWRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbCl7dmFyIG49Il8iK2U7dC5wcm90b3R5'@; put 'cGVbZV09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpc1tuXT90aGlzW25dOnRoaXNbbl09bC5jYWxsKHRoaXMpfX0sYi5wYXJzZUJ5dGVzPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9iLnRvQXJyYXkodCwiaGV4Iik6dH0sYi5pbnRGcm9tTEU9ZnVuY3Rpb24o'@; put 'dCl7cmV0dXJuIG5ldyBhKHQsImhleCIsImxlIil9fSx7ImJuLmpzIjo0MjAsIm1pbmltYWxpc3RpYy1hc3NlcnQiOjQ1MywibWluaW1hbGlzdGljLWNyeXB0by11dGlscyI6NDU0fV0sNDIwOltmdW5jdGlvbihzLEUsUyl7YXJndW1lbnRzWzRdWzE4NF1bMF0uYXBwbHkoUyxhcmd1bWVudHMp'@; put 'fSx7YnVmZmVyOjE4OCxkdXA6MTg0fV0sNDIxOltmdW5jdGlvbihzLEUsUyl7RS5leHBvcnRzPXtuYW1lOiJlbGxpcHRpYyIsdmVyc2lvbjoiNi41LjQiLGRlc2NyaXB0aW9uOiJFQyBjcnlwdG9ncmFwaHkiLG1haW46ImxpYi9lbGxpcHRpYy5qcyIsZmlsZXM6WyJsaWIiXSxzY3JpcHRzOnts'@; put 'aW50OiJlc2xpbnQgbGliIHRlc3QiLCJsaW50OmZpeCI6Im5wbSBydW4gbGludCAtLSAtLWZpeCIsdW5pdDoiaXN0YW5idWwgdGVzdCBfbW9jaGEgLS1yZXBvcnRlcj1zcGVjIHRlc3QvaW5kZXguanMiLHRlc3Q6Im5wbSBydW4gbGludCAmJiBucG0gcnVuIHVuaXQiLHZlcnNpb246ImdydW50'@; put 'IGRpc3QgJiYgZ2l0IGFkZCBkaXN0LyJ9LHJlcG9zaXRvcnk6e3R5cGU6ImdpdCIsdXJsOiJnaXRAZ2l0aHViLmNvbTppbmR1dG55L2VsbGlwdGljIn0sa2V5d29yZHM6WyJFQyIsIkVsbGlwdGljIiwiY3VydmUiLCJDcnlwdG9ncmFwaHkiXSxhdXRob3I6IkZlZG9yIEluZHV0bnkgPGZlZG9y'@; put 'QGluZHV0bnkuY29tPiIsbGljZW5zZToiTUlUIixidWdzOnt1cmw6Imh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljL2lzc3VlcyJ9LGhvbWVwYWdlOiJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYyIsZGV2RGVwZW5kZW5jaWVzOnticmZzOiJeMi4wLjIiLGNv'@; put 'dmVyYWxsczoiXjMuMS4wIixlc2xpbnQ6Il43LjYuMCIsZ3J1bnQ6Il4xLjIuMSIsImdydW50LWJyb3dzZXJpZnkiOiJeNS4zLjAiLCJncnVudC1jbGkiOiJeMS4zLjIiLCJncnVudC1jb250cmliLWNvbm5lY3QiOiJeMy4wLjAiLCJncnVudC1jb250cmliLWNvcHkiOiJeMS4wLjAiLCJncnVu'@; put 'dC1jb250cmliLXVnbGlmeSI6Il41LjAuMCIsImdydW50LW1vY2hhLWlzdGFuYnVsIjoiXjUuMC4yIiwiZ3J1bnQtc2F1Y2VsYWJzIjoiXjkuMC4xIixpc3RhbmJ1bDoiXjAuNC41Iixtb2NoYToiXjguMC4xIn0sZGVwZW5kZW5jaWVzOnsiYm4uanMiOiJeNC4xMS45Iixicm9yYW5kOiJeMS4x'@; put 'LjAiLCJoYXNoLmpzIjoiXjEuMC4wIiwiaG1hYy1kcmJnIjoiXjEuMC4xIixpbmhlcml0czoiXjIuMC40IiwibWluaW1hbGlzdGljLWFzc2VydCI6Il4xLjAuMSIsIm1pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMiOiJeMS4wLjEifX19LHt9XSw0MjI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0'@; put 'cmljdCI7dmFyIGI9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oTil7dmFyIFA9ZnVuY3Rpb24oKXt9O3JldHVybiBQLnByb3RvdHlwZT1OLG5ldyBQfSxhPU9iamVjdC5rZXlzfHxmdW5jdGlvbihOKXt2YXIgUD1bXTtmb3IodmFyIEIgaW4gTilPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl'@; put 'cnR5LmNhbGwoTixCKSYmUC5wdXNoKEIpO3JldHVybiBCfSxvPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHxmdW5jdGlvbihOKXt2YXIgUD10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBQLmFwcGx5KE4sYXJndW1lbnRzKX19O2Z1bmN0aW9uIHIoKXt0aGlzLl9ldmVudHMmJk9iamVj'@; put 'dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLCJfZXZlbnRzIil8fCh0aGlzLl9ldmVudHM9YihudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9RS5leHBvcnRzPXIsci5FdmVudEVtaXR0ZXI9'@; put 'cixyLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgdCxlPTEwO3RyeXt2YXIgbD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJ4Iix7dmFsdWU6MH0pLHQ9MD09PWwueH1jYXRjaHt0'@; put 'PSExfWZ1bmN0aW9uIG4oTil7cmV0dXJuIHZvaWQgMD09PU4uX21heExpc3RlbmVycz9yLmRlZmF1bHRNYXhMaXN0ZW5lcnM6Ti5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIGQoTixQLEIsJCl7dmFyIEQseCxNO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBCKXRocm93IG5ldyBUeXBlRXJyb3IoJyJs'@; put 'aXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7aWYoKHg9Ti5fZXZlbnRzKT8oeC5uZXdMaXN0ZW5lciYmKE4uZW1pdCgibmV3TGlzdGVuZXIiLFAsQi5saXN0ZW5lcj9CLmxpc3RlbmVyOkIpLHg9Ti5fZXZlbnRzKSxNPXhbUF0pOih4PU4uX2V2ZW50cz1iKG51bGwpLE4u'@; put 'X2V2ZW50c0NvdW50PTApLE0pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBNP009eFtQXT0kP1tCLE1dOltNLEJdOiQ/TS51bnNoaWZ0KEIpOk0ucHVzaChCKSwhTS53YXJuZWQmJihEPW4oTikpJiZEPjAmJk0ubGVuZ3RoPkQpe00ud2FybmVkPSEwO3ZhciBqPW5ldyBFcnJvcigiUG9zc2libGUg'@; put 'RXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK00ubGVuZ3RoKycgIicrU3RyaW5nKFApKyciIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuJyk7ai5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5p'@; put 'bmciLGouZW1pdHRlcj1OLGoudHlwZT1QLGouY291bnQ9TS5sZW5ndGgsIm9iamVjdCI9PXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiJXM6ICVzIixqLm5hbWUsai5tZXNzYWdlKX19ZWxzZSBNPXhbUF09QiwrK04uX2V2ZW50c0NvdW50O3JldHVybiBOfWZ1'@; put 'bmN0aW9uIHYoKXtpZighdGhpcy5maXJlZClzd2l0Y2godGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtjYXNl'@; put 'IDE6cmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCxhcmd1bWVudHNbMF0pO2Nhc2UgMjpyZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0LGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMu'@; put 'dGFyZ2V0LGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTtkZWZhdWx0OmZvcih2YXIgTj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksUD0wO1A8Ti5sZW5ndGg7KytQKU5bUF09YXJndW1lbnRzW1BdO3RoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsTil9'@; put 'fWZ1bmN0aW9uIF8oTixQLEIpe3ZhciAkPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDpOLHR5cGU6UCxsaXN0ZW5lcjpCfSxEPW8uY2FsbCh2LCQpO3JldHVybiBELmxpc3RlbmVyPUIsJC53cmFwRm49RCxEfWZ1bmN0aW9uIEEoTixQLEIpe3ZhciAkPU4uX2V2ZW50cztpZighJCly'@; put 'ZXR1cm5bXTt2YXIgRD0kW1BdO3JldHVybiBEPyJmdW5jdGlvbiI9PXR5cGVvZiBEP0I/W0QubGlzdGVuZXJ8fERdOltEXTpCP2Z1bmN0aW9uKHgpe2Zvcih2YXIgTT1uZXcgQXJyYXkoeC5sZW5ndGgpLGo9MDtqPE0ubGVuZ3RoOysrailNW2pdPXhbal0ubGlzdGVuZXJ8fHhbal07cmV0dXJu'@; put 'IE19KEQpOkwoRCxELmxlbmd0aCk6W119ZnVuY3Rpb24gSShOKXt2YXIgUD10aGlzLl9ldmVudHM7aWYoUCl7dmFyIEI9UFtOXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgQilyZXR1cm4gMTtpZihCKXJldHVybiBCLmxlbmd0aH1yZXR1cm4gMH1mdW5jdGlvbiBMKE4sUCl7Zm9yKHZhciBCPW5l'@; put 'dyBBcnJheShQKSwkPTA7JDxQOysrJClCWyRdPU5bJF07cmV0dXJuIEJ9dD9PYmplY3QuZGVmaW5lUHJvcGVydHkociwiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNldDpmdW5jdGlvbihOKXtpZigibnVtYmVyIiE9dHlwZW9m'@; put 'IE58fE48MHx8TiE9Til0aHJvdyBuZXcgVHlwZUVycm9yKCciZGVmYXVsdE1heExpc3RlbmVycyIgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO2U9Tn19KTpyLmRlZmF1bHRNYXhMaXN0ZW5lcnM9ZSxyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oTil7aWYoIm51bWJl'@; put 'ciIhPXR5cGVvZiBOfHxOPDB8fGlzTmFOKE4pKXRocm93IG5ldyBUeXBlRXJyb3IoJyJuIiBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1OLHRoaXN9LHIucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3Jl'@; put 'dHVybiBuKHRoaXMpfSxyLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKE4pe3ZhciBQLEIsJCxELHgsTSxqPSJlcnJvciI9PT1OO2lmKE09dGhpcy5fZXZlbnRzKWo9aiYmbnVsbD09TS5lcnJvcjtlbHNlIGlmKCFqKXJldHVybiExO2lmKGope2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmKFA9YXJn'@; put 'dW1lbnRzWzFdKSxQIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgUDt2YXIgYz1uZXcgRXJyb3IoJ1VuaGFuZGxlZCAiZXJyb3IiIGV2ZW50LiAoJytQKyIpIik7dGhyb3cgYy5jb250ZXh0PVAsY31pZighKEI9TVtOXSkpcmV0dXJuITE7dmFyIG09ImZ1bmN0aW9uIj09dHlwZW9mIEI7c3dpdGNo'@; put 'KCQ9YXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOiFmdW5jdGlvbiBpKE4sUCxCKXtpZihQKU4uY2FsbChCKTtlbHNlIGZvcih2YXIgJD1OLmxlbmd0aCxEPUwoTiwkKSx4PTA7eDwkOysreClEW3hdLmNhbGwoQil9KEIsbSx0aGlzKTticmVhaztjYXNlIDI6IWZ1bmN0aW9uIGgoTixQLEIsJCl7'@; put 'aWYoUClOLmNhbGwoQiwkKTtlbHNlIGZvcih2YXIgRD1OLmxlbmd0aCx4PUwoTixEKSxNPTA7TTxEOysrTSl4W01dLmNhbGwoQiwkKX0oQixtLHRoaXMsYXJndW1lbnRzWzFdKTticmVhaztjYXNlIDM6IWZ1bmN0aW9uIGYoTixQLEIsJCxEKXtpZihQKU4uY2FsbChCLCQsRCk7ZWxzZSBmb3Io'@; put 'dmFyIHg9Ti5sZW5ndGgsTT1MKE4seCksaj0wO2o8eDsrK2opTVtqXS5jYWxsKEIsJCxEKX0oQixtLHRoaXMsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7YnJlYWs7Y2FzZSA0OiFmdW5jdGlvbiB1KE4sUCxCLCQsRCx4KXtpZihQKU4uY2FsbChCLCQsRCx4KTtlbHNlIGZvcih2YXIgTT1O'@; put 'Lmxlbmd0aCxqPUwoTixNKSxjPTA7YzxNOysrYylqW2NdLmNhbGwoQiwkLEQseCl9KEIsbSx0aGlzLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdKTticmVhaztkZWZhdWx0OmZvcihEPW5ldyBBcnJheSgkLTEpLHg9MTt4PCQ7eCsrKURbeC0xXT1hcmd1bWVudHNbeF07'@; put 'IWZ1bmN0aW9uIHAoTixQLEIsJCl7aWYoUClOLmFwcGx5KEIsJCk7ZWxzZSBmb3IodmFyIEQ9Ti5sZW5ndGgseD1MKE4sRCksTT0wO008RDsrK00peFtNXS5hcHBseShCLCQpfShCLG0sdGhpcyxEKX1yZXR1cm4hMH0sci5wcm90b3R5cGUub249ci5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVu'@; put 'Y3Rpb24oTixQKXtyZXR1cm4gZCh0aGlzLE4sUCwhMSl9LHIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbihOLFApe3JldHVybiBkKHRoaXMsTixQLCEwKX0sci5wcm90b3R5cGUub25jZT1mdW5jdGlvbihOLFApe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBQKXRocm93IG5ldyBU'@; put 'eXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7cmV0dXJuIHRoaXMub24oTixfKHRoaXMsTixQKSksdGhpc30sci5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbihOLFApe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBQKXRocm93IG5l'@; put 'dyBUeXBlRXJyb3IoJyJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7cmV0dXJuIHRoaXMucHJlcGVuZExpc3RlbmVyKE4sXyh0aGlzLE4sUCkpLHRoaXN9LHIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKE4sUCl7dmFyIEIsJCxELHgsTTtpZigiZnVu'@; put 'Y3Rpb24iIT10eXBlb2YgUCl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO2lmKCEoJD10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKCEoQj0kW05dKSlyZXR1cm4gdGhpcztpZihCPT09UHx8Qi5saXN0ZW5lcj09PVApMD09'@; put 'LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9YihudWxsKTooZGVsZXRlICRbTl0sJC5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsTixCLmxpc3RlbmVyfHxQKSk7ZWxzZSBpZigiZnVuY3Rpb24iIT10eXBlb2YgQil7Zm9yKEQ9LTEseD1CLmxlbmd0'@; put 'aC0xO3g+PTA7eC0tKWlmKEJbeF09PT1QfHxCW3hdLmxpc3RlbmVyPT09UCl7TT1CW3hdLmxpc3RlbmVyLEQ9eDticmVha31pZihEPDApcmV0dXJuIHRoaXM7MD09PUQ/Qi5zaGlmdCgpOmZ1bmN0aW9uKGosYyl7Zm9yKHZhciBtPWMsZz1tKzEseT1qLmxlbmd0aDtnPHk7bSs9MSxnKz0xKWpb'@; put 'bV09altnXTtqLnBvcCgpfShCLEQpLDE9PT1CLmxlbmd0aCYmKCRbTl09QlswXSksJC5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsTixNfHxQKX1yZXR1cm4gdGhpc30sci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKE4pe3ZhciBQLEIs'@; put 'JDtpZighKEI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZighQi5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1iKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOkJbTl0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2'@; put 'ZW50cz1iKG51bGwpOmRlbGV0ZSBCW05dKSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgRCx4PWEoQik7Zm9yKCQ9MDskPHgubGVuZ3RoOysrJCkicmVtb3ZlTGlzdGVuZXIiIT09KEQ9eFskXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKEQpO3JldHVybiB0aGlzLnJlbW92'@; put 'ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIiKSx0aGlzLl9ldmVudHM9YihudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoImZ1bmN0aW9uIj09dHlwZW9mKFA9QltOXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihOLFApO2Vsc2UgaWYoUClmb3IoJD1QLmxlbmd0aC0xOyQ+PTA7'@; put 'JC0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoTixQWyRdKTtyZXR1cm4gdGhpc30sci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKE4pe3JldHVybiBBKHRoaXMsTiwhMCl9LHIucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihOKXtyZXR1cm4gQSh0aGlzLE4sITEpfSxyLmxpc3Rl'@; put 'bmVyQ291bnQ9ZnVuY3Rpb24oTixQKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgTi5saXN0ZW5lckNvdW50P04ubGlzdGVuZXJDb3VudChQKTpJLmNhbGwoTixQKX0sci5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1JLHIucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4g'@; put 'dGhpcy5fZXZlbnRzQ291bnQ+MD9SZWZsZWN0Lm93bktleXModGhpcy5fZXZlbnRzKTpbXX19LHt9XSw0MjM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsYT1zKCJtZDUuanMiKTtFLmV4cG9ydHM9ZnVuY3Rpb24obyxyLHQsZSl7'@; put 'aWYoYi5pc0J1ZmZlcihvKXx8KG89Yi5mcm9tKG8sImJpbmFyeSIpKSxyJiYoYi5pc0J1ZmZlcihyKXx8KHI9Yi5mcm9tKHIsImJpbmFyeSIpKSw4IT09ci5sZW5ndGgpKXRocm93IG5ldyBSYW5nZUVycm9yKCJzYWx0IHNob3VsZCBiZSBCdWZmZXIgd2l0aCA4IGJ5dGUgbGVuZ3RoIik7Zm9y'@; put 'KHZhciBsPXQvOCxuPWIuYWxsb2MobCksaT1iLmFsbG9jKGV8fDApLGg9Yi5hbGxvYygwKTtsPjB8fGU+MDspe3ZhciBmPW5ldyBhO2YudXBkYXRlKGgpLGYudXBkYXRlKG8pLHImJmYudXBkYXRlKHIpLGg9Zi5kaWdlc3QoKTt2YXIgdT0wO2lmKGw+MCl7dmFyIHA9bi5sZW5ndGgtbDt1PU1h'@; put 'dGgubWluKGwsaC5sZW5ndGgpLGguY29weShuLHAsMCx1KSxsLT11fWlmKHU8aC5sZW5ndGgmJmU+MCl7dmFyIGQ9aS5sZW5ndGgtZSx2PU1hdGgubWluKGUsaC5sZW5ndGgtdSk7aC5jb3B5KGksZCx1LHUrdiksZS09dn19cmV0dXJuIGguZmlsbCgwKSx7a2V5Om4saXY6aX19fSx7Im1kNS5q'@; put 'cyI6NDUwLCJzYWZlLWJ1ZmZlciI6NDk0fV0sNDI0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLkNzdlBhcnNlclN0cmVhbT1TLlBhcnNlck9wdGlvbnM9Uy5wYXJzZUZpbGU9Uy5wYXJzZVN0'@; put 'cmVhbT1TLnBhcnNlU3RyaW5nPVMucGFyc2U9Uy5Gb3JtYXR0ZXJPcHRpb25zPVMuQ3N2Rm9ybWF0dGVyU3RyZWFtPVMud3JpdGVUb1BhdGg9Uy53cml0ZVRvU3RyaW5nPVMud3JpdGVUb0J1ZmZlcj1TLndyaXRlVG9TdHJlYW09Uy53cml0ZT1TLmZvcm1hdD12b2lkIDA7dmFyIGI9cygiQGZh'@; put 'c3QtY3N2L2Zvcm1hdCIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJmb3JtYXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBiLmZvcm1hdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywid3JpdGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVy'@; put 'biBiLndyaXRlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ3cml0ZVRvU3RyZWFtIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi53cml0ZVRvU3RyZWFtfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ3cml0ZVRvQnVmZmVyIix7ZW51bWVyYWJsZTohMCxn'@; put 'ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi53cml0ZVRvQnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ3cml0ZVRvU3RyaW5nIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi53cml0ZVRvU3RyaW5nfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ3cml0'@; put 'ZVRvUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIud3JpdGVUb1BhdGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIkNzdkZvcm1hdHRlclN0cmVhbSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuQ3N2Rm9ybWF0dGVyU3RyZWFt'@; put 'fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJGb3JtYXR0ZXJPcHRpb25zIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5Gb3JtYXR0ZXJPcHRpb25zfX0pO3ZhciBhPXMoIkBmYXN0LWNzdi9wYXJzZSIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJwYXJzZSIs'@; put 'e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEucGFyc2V9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFMsInBhcnNlU3RyaW5nIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5wYXJzZVN0cmluZ319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywi'@; put 'cGFyc2VTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLnBhcnNlU3RyZWFtfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJwYXJzZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLnBhcnNlRmlsZX19KSxPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoUywiUGFyc2VyT3B0aW9ucyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuUGFyc2VyT3B0aW9uc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiQ3N2UGFyc2VyU3RyZWFtIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g'@; put 'YS5Dc3ZQYXJzZXJTdHJlYW19fSl9LHsiQGZhc3QtY3N2L2Zvcm1hdCI6MTUxLCJAZmFzdC1jc3YvcGFyc2UiOjE1NX1dLDQyNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZlcixhPXMoInJlYWRhYmxlLXN0cmVhbSIpLlRyYW5zZm9y'@; put 'bTtmdW5jdGlvbiBvKHIpe2EuY2FsbCh0aGlzKSx0aGlzLl9ibG9jaz1iLmFsbG9jVW5zYWZlKHIpLHRoaXMuX2Jsb2NrU2l6ZT1yLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9cygiaW5oZXJpdHMiKShvLGEpLG8ucHJvdG90'@; put 'eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24ocix0LGUpe3ZhciBsPW51bGw7dHJ5e3RoaXMudXBkYXRlKHIsdCl9Y2F0Y2gobil7bD1ufWUobCl9LG8ucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihyKXt2YXIgdD1udWxsO3RyeXt0aGlzLnB1c2godGhpcy5kaWdlc3QoKSl9Y2F0Y2goZSl7dD1l'@; put 'fXIodCl9LG8ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihyLHQpe2lmKGZ1bmN0aW9uKGYpe2lmKCFiLmlzQnVmZmVyKGYpJiYic3RyaW5nIiE9dHlwZW9mIGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyIil9KHIpLHRoaXMuX2ZpbmFs'@; put 'aXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO2IuaXNCdWZmZXIocil8fChyPWIuZnJvbShyLHQpKTtmb3IodmFyIGU9dGhpcy5fYmxvY2ssbD0wO3RoaXMuX2Jsb2NrT2Zmc2V0K3IubGVuZ3RoLWw+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgbj10aGlz'@; put 'Ll9ibG9ja09mZnNldDtuPHRoaXMuX2Jsb2NrU2l6ZTspZVtuKytdPXJbbCsrXTt0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wfWZvcig7bDxyLmxlbmd0aDspZVt0aGlzLl9ibG9ja09mZnNldCsrXT1yW2wrK107Zm9yKHZhciBpPTAsaD04KnIubGVuZ3RoO2g+MDsrK2kpdGhp'@; put 'cy5fbGVuZ3RoW2ldKz1oLChoPXRoaXMuX2xlbmd0aFtpXS80Mjk0OTY3Mjk2fDApPjAmJih0aGlzLl9sZW5ndGhbaV0tPTQyOTQ5NjcyOTYqaCk7cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl91cGRhdGUgaXMgbm90IGltcGxl'@; put 'bWVudGVkIil9LG8ucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihyKXtpZih0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTt0aGlzLl9maW5hbGl6ZWQ9ITA7dmFyIHQ9dGhpcy5fZGlnZXN0KCk7dm9pZCAwIT09ciYmKHQ9dC50b1N0cmlu'@; put 'ZyhyKSksdGhpcy5fYmxvY2suZmlsbCgwKSx0aGlzLl9ibG9ja09mZnNldD0wO2Zvcih2YXIgZT0wO2U8NDsrK2UpdGhpcy5fbGVuZ3RoW2VdPTA7cmV0dXJuIHR9LG8ucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl9kaWdlc3QgaXMgbm90IGltcGxlbWVu'@; put 'dGVkIil9LEUuZXhwb3J0cz1vfSx7aW5oZXJpdHM6NDQwLCJyZWFkYWJsZS1zdHJlYW0iOjQ5MSwic2FmZS1idWZmZXIiOjQ5NH1dLDQyNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1TO2IudXRpbHM9cygiLi9oYXNoL3V0aWxzIiksYi5jb21tb249cygiLi9oYXNoL2Nv'@; put 'bW1vbiIpLGIuc2hhPXMoIi4vaGFzaC9zaGEiKSxiLnJpcGVtZD1zKCIuL2hhc2gvcmlwZW1kIiksYi5obWFjPXMoIi4vaGFzaC9obWFjIiksYi5zaGExPWIuc2hhLnNoYTEsYi5zaGEyNTY9Yi5zaGEuc2hhMjU2LGIuc2hhMjI0PWIuc2hhLnNoYTIyNCxiLnNoYTM4ND1iLnNoYS5zaGEzODQs'@; put 'Yi5zaGE1MTI9Yi5zaGEuc2hhNTEyLGIucmlwZW1kMTYwPWIucmlwZW1kLnJpcGVtZDE2MH0seyIuL2hhc2gvY29tbW9uIjo0MjcsIi4vaGFzaC9obWFjIjo0MjgsIi4vaGFzaC9yaXBlbWQiOjQyOSwiLi9oYXNoL3NoYSI6NDMwLCIuL2hhc2gvdXRpbHMiOjQzN31dLDQyNzpbZnVuY3Rpb24o'@; put 'cyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuL3V0aWxzIiksYT1zKCJtaW5pbWFsaXN0aWMtYXNzZXJ0Iik7ZnVuY3Rpb24gbygpe3RoaXMucGVuZGluZz1udWxsLHRoaXMucGVuZGluZ1RvdGFsPTAsdGhpcy5ibG9ja1NpemU9dGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemUsdGhpcy5v'@; put 'dXRTaXplPXRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZSx0aGlzLmhtYWNTdHJlbmd0aD10aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aCx0aGlzLnBhZExlbmd0aD10aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aC84LHRoaXMuZW5kaWFuPSJiaWciLHRoaXMuX2RlbHRhOD10aGlzLmJsb2Nr'@; put 'U2l6ZS84LHRoaXMuX2RlbHRhMzI9dGhpcy5ibG9ja1NpemUvMzJ9Uy5CbG9ja0hhc2g9byxvLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24ocix0KXtpZihyPWIudG9BcnJheShyLHQpLHRoaXMucGVuZGluZz10aGlzLnBlbmRpbmc/dGhpcy5wZW5kaW5nLmNvbmNhdChyKTpyLHRoaXMucGVu'@; put 'ZGluZ1RvdGFsKz1yLmxlbmd0aCx0aGlzLnBlbmRpbmcubGVuZ3RoPj10aGlzLl9kZWx0YTgpe3ZhciBlPShyPXRoaXMucGVuZGluZykubGVuZ3RoJXRoaXMuX2RlbHRhODt0aGlzLnBlbmRpbmc9ci5zbGljZShyLmxlbmd0aC1lLHIubGVuZ3RoKSwwPT09dGhpcy5wZW5kaW5nLmxlbmd0aCYm'@; put 'KHRoaXMucGVuZGluZz1udWxsKSxyPWIuam9pbjMyKHIsMCxyLmxlbmd0aC1lLHRoaXMuZW5kaWFuKTtmb3IodmFyIGw9MDtsPHIubGVuZ3RoO2wrPXRoaXMuX2RlbHRhMzIpdGhpcy5fdXBkYXRlKHIsbCxsK3RoaXMuX2RlbHRhMzIpfXJldHVybiB0aGlzfSxvLnByb3RvdHlwZS5kaWdlc3Q9'@; put 'ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKSxhKG51bGw9PT10aGlzLnBlbmRpbmcpLHRoaXMuX2RpZ2VzdChyKX0sby5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbigpe3ZhciByPXRoaXMucGVuZGluZ1RvdGFsLHQ9dGhpcy5fZGVsdGE4LGU9dC0ocit0aGlzLnBh'@; put 'ZExlbmd0aCkldCxsPW5ldyBBcnJheShlK3RoaXMucGFkTGVuZ3RoKTtsWzBdPTEyODtmb3IodmFyIG49MTtuPGU7bisrKWxbbl09MDtpZihyPDw9MywiYmlnIj09PXRoaXMuZW5kaWFuKXtmb3IodmFyIGk9ODtpPHRoaXMucGFkTGVuZ3RoO2krKylsW24rK109MDtsW24rK109MCxsW24rK109'@; put 'MCxsW24rK109MCxsW24rK109MCxsW24rK109cj4+PjI0JjI1NSxsW24rK109cj4+PjE2JjI1NSxsW24rK109cj4+PjgmMjU1LGxbbisrXT0yNTUmcn1lbHNlIGZvcihsW24rK109MjU1JnIsbFtuKytdPXI+Pj44JjI1NSxsW24rK109cj4+PjE2JjI1NSxsW24rK109cj4+PjI0JjI1NSxsW24r'@; put 'K109MCxsW24rK109MCxsW24rK109MCxsW24rK109MCxpPTg7aTx0aGlzLnBhZExlbmd0aDtpKyspbFtuKytdPTA7cmV0dXJuIGx9fSx7Ii4vdXRpbHMiOjQzNywibWluaW1hbGlzdGljLWFzc2VydCI6NDUzfV0sNDI4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4v'@; put 'dXRpbHMiKSxhPXMoIm1pbmltYWxpc3RpYy1hc3NlcnQiKTtmdW5jdGlvbiBvKHIsdCxlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4gbmV3IG8ocix0LGUpO3RoaXMuSGFzaD1yLHRoaXMuYmxvY2tTaXplPXIuYmxvY2tTaXplLzgsdGhpcy5vdXRTaXplPXIub3V0U2l6ZS84LHRo'@; put 'aXMuaW5uZXI9bnVsbCx0aGlzLm91dGVyPW51bGwsdGhpcy5faW5pdChiLnRvQXJyYXkodCxlKSl9RS5leHBvcnRzPW8sby5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24ocil7ci5sZW5ndGg+dGhpcy5ibG9ja1NpemUmJihyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUocikuZGlnZXN0KCkpLGEo'@; put 'ci5sZW5ndGg8PXRoaXMuYmxvY2tTaXplKTtmb3IodmFyIHQ9ci5sZW5ndGg7dDx0aGlzLmJsb2NrU2l6ZTt0Kyspci5wdXNoKDApO2Zvcih0PTA7dDxyLmxlbmd0aDt0Kyspclt0XV49NTQ7Zm9yKHRoaXMuaW5uZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShyKSx0PTA7dDxyLmxlbmd0aDt0'@; put 'Kyspclt0XV49MTA2O3RoaXMub3V0ZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShyKX0sby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHIsdCl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKHIsdCksdGhpc30sby5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLm91'@; put 'dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKSx0aGlzLm91dGVyLmRpZ2VzdChyKX19LHsiLi91dGlscyI6NDM3LCJtaW5pbWFsaXN0aWMtYXNzZXJ0Ijo0NTN9XSw0Mjk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi91dGlscyIpLGE9cygiLi9jb21tb24i'@; put 'KSxvPWIucm90bDMyLHI9Yi5zdW0zMix0PWIuc3VtMzJfMyxlPWIuc3VtMzJfNCxsPWEuQmxvY2tIYXNoO2Z1bmN0aW9uIG4oKXtpZighKHRoaXMgaW5zdGFuY2VvZiBuKSlyZXR1cm4gbmV3IG47bC5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIs'@; put 'MjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuZW5kaWFuPSJsaXR0bGUifWZ1bmN0aW9uIGkoXyxBLEksTCl7cmV0dXJuIF88PTE1P0FeSV5MOl88PTMxP0EmSXx+QSZMOl88PTQ3PyhBfH5JKV5MOl88PTYzP0EmTHxJJn5MOkFeKEl8fkwpfWZ1bmN0aW9uIGgoXyl7cmV0dXJuIF88PTE1PzA6'@; put 'Xzw9MzE/MTUxODUwMDI0OTpfPD00Nz8xODU5Nzc1MzkzOl88PTYzPzI0MDA5NTk3MDg6Mjg0MDg1MzgzOH1mdW5jdGlvbiBmKF8pe3JldHVybiBfPD0xNT8xMzUyODI5OTI2Ol88PTMxPzE1NDg2MDM2ODQ6Xzw9NDc/MTgzNjA3MjY5MTpfPD02Mz8yMDUzOTk0MjE3OjB9Yi5pbmhlcml0cyhu'@; put 'LGwpLFMucmlwZW1kMTYwPW4sbi5ibG9ja1NpemU9NTEyLG4ub3V0U2l6ZT0xNjAsbi5obWFjU3RyZW5ndGg9MTkyLG4ucGFkTGVuZ3RoPTY0LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oXyxBKXtmb3IodmFyIEk9dGhpcy5oWzBdLEw9dGhpcy5oWzFdLE49dGhpcy5oWzJdLFA9dGhp'@; put 'cy5oWzNdLEI9dGhpcy5oWzRdLCQ9SSxEPUwseD1OLE09UCxqPUIsYz0wO2M8ODA7YysrKXt2YXIgbT1yKG8oZShJLGkoYyxMLE4sUCksX1t1W2NdK0FdLGgoYykpLGRbY10pLEIpO0k9QixCPVAsUD1vKE4sMTApLE49TCxMPW0sbT1yKG8oZSgkLGkoNzktYyxELHgsTSksX1twW2NdK0FdLGYo'@; put 'YykpLHZbY10pLGopLCQ9aixqPU0sTT1vKHgsMTApLHg9RCxEPW19bT10KHRoaXMuaFsxXSxOLE0pLHRoaXMuaFsxXT10KHRoaXMuaFsyXSxQLGopLHRoaXMuaFsyXT10KHRoaXMuaFszXSxCLCQpLHRoaXMuaFszXT10KHRoaXMuaFs0XSxJLEQpLHRoaXMuaFs0XT10KHRoaXMuaFswXSxMLHgp'@; put 'LHRoaXMuaFswXT1tfSxuLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKF8pe3JldHVybiJoZXgiPT09Xz9iLnRvSGV4MzIodGhpcy5oLCJsaXR0bGUiKTpiLnNwbGl0MzIodGhpcy5oLCJsaXR0bGUiKX07dmFyIHU9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0'@; put 'LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10scD1bNSwxNCw3LDAsOSwy'@; put 'LDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEz'@; put 'LDE0LDAsMyw5LDExXSxkPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1'@; put 'LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSx2PVs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0'@; put 'LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXX0seyIuL2NvbW1vbiI6NDI3LCIuL3V0aWxzIjo0Mzd9XSw0MzA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Uy5zaGEx'@; put 'PXMoIi4vc2hhLzEiKSxTLnNoYTIyND1zKCIuL3NoYS8yMjQiKSxTLnNoYTI1Nj1zKCIuL3NoYS8yNTYiKSxTLnNoYTM4ND1zKCIuL3NoYS8zODQiKSxTLnNoYTUxMj1zKCIuL3NoYS81MTIiKX0seyIuL3NoYS8xIjo0MzEsIi4vc2hhLzIyNCI6NDMyLCIuL3NoYS8yNTYiOjQzMywiLi9zaGEv'@; put 'Mzg0Ijo0MzQsIi4vc2hhLzUxMiI6NDM1fV0sNDMxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL3V0aWxzIiksYT1zKCIuLi9jb21tb24iKSxvPXMoIi4vY29tbW9uIikscj1iLnJvdGwzMix0PWIuc3VtMzIsZT1iLnN1bTMyXzUsbD1vLmZ0XzEsbj1hLkJsb2Nr'@; put 'SGFzaCxpPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwzMzk1NDY5NzgyXTtmdW5jdGlvbiBoKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaCkpcmV0dXJuIG5ldyBoO24uY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3'@; put 'OCwzMjg1Mzc3NTIwXSx0aGlzLlc9bmV3IEFycmF5KDgwKX1iLmluaGVyaXRzKGgsbiksRS5leHBvcnRzPWgsaC5ibG9ja1NpemU9NTEyLGgub3V0U2l6ZT0xNjAsaC5obWFjU3RyZW5ndGg9ODAsaC5wYWRMZW5ndGg9NjQsaC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihmLHUpe2Zvcih2'@; put 'YXIgcD10aGlzLlcsZD0wO2Q8MTY7ZCsrKXBbZF09Zlt1K2RdO2Zvcig7ZDxwLmxlbmd0aDtkKyspcFtkXT1yKHBbZC0zXV5wW2QtOF1ecFtkLTE0XV5wW2QtMTZdLDEpO3ZhciB2PXRoaXMuaFswXSxfPXRoaXMuaFsxXSxBPXRoaXMuaFsyXSxJPXRoaXMuaFszXSxMPXRoaXMuaFs0XTtmb3Io'@; put 'ZD0wO2Q8cC5sZW5ndGg7ZCsrKXt2YXIgTj1+fihkLzIwKSxQPWUocih2LDUpLGwoTixfLEEsSSksTCxwW2RdLGlbTl0pO0w9SSxJPUEsQT1yKF8sMzApLF89dix2PVB9dGhpcy5oWzBdPXQodGhpcy5oWzBdLHYpLHRoaXMuaFsxXT10KHRoaXMuaFsxXSxfKSx0aGlzLmhbMl09dCh0aGlzLmhb'@; put 'Ml0sQSksdGhpcy5oWzNdPXQodGhpcy5oWzNdLEkpLHRoaXMuaFs0XT10KHRoaXMuaFs0XSxMKX0saC5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihmKXtyZXR1cm4iaGV4Ij09PWY/Yi50b0hleDMyKHRoaXMuaCwiYmlnIik6Yi5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSx7Ii4uL2NvbW1v'@; put 'biI6NDI3LCIuLi91dGlscyI6NDM3LCIuL2NvbW1vbiI6NDM2fV0sNDMyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uL3V0aWxzIiksYT1zKCIuLzI1NiIpO2Z1bmN0aW9uIG8oKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4gbmV3IG87YS5jYWxsKHRo'@; put 'aXMpLHRoaXMuaD1bMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF19Yi5pbmhlcml0cyhvLGEpLEUuZXhwb3J0cz1vLG8uYmxvY2tTaXplPTUxMixvLm91dFNpemU9MjI0LG8uaG1hY1N0'@; put 'cmVuZ3RoPTE5MixvLnBhZExlbmd0aD02NCxvLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHIpe3JldHVybiJoZXgiPT09cj9iLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpOmIuc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIil9fSx7Ii4uL3V0aWxzIjo0MzcsIi4v'@; put 'MjU2Ijo0MzN9XSw0MzM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vdXRpbHMiKSxhPXMoIi4uL2NvbW1vbiIpLG89cygiLi9jb21tb24iKSxyPXMoIm1pbmltYWxpc3RpYy1hc3NlcnQiKSx0PWIuc3VtMzIsZT1iLnN1bTMyXzQsbD1iLnN1bTMyXzUsbj1vLmNo'@; put 'MzIsaT1vLm1hajMyLGg9by5zMF8yNTYsZj1vLnMxXzI1Nix1PW8uZzBfMjU2LHA9by5nMV8yNTYsZD1hLkJsb2NrSGFzaCx2PVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0'@; put 'MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4'@; put 'NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0'@; put 'NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIw'@; put 'NjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO2Z1bmN0aW9uIF8oKXtpZighKHRoaXMgaW5zdGFuY2VvZiBfKSlyZXR1cm4gbmV3IF87ZC5jYWxsKHRoaXMp'@; put 'LHRoaXMuaD1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLHRoaXMuaz12LHRoaXMuVz1uZXcgQXJyYXkoNjQpfWIuaW5oZXJpdHMoXyxkKSxFLmV4cG9ydHM9XyxfLmJsb2NrU2l6'@; put 'ZT01MTIsXy5vdXRTaXplPTI1NixfLmhtYWNTdHJlbmd0aD0xOTIsXy5wYWRMZW5ndGg9NjQsXy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihBLEkpe2Zvcih2YXIgTD10aGlzLlcsTj0wO048MTY7TisrKUxbTl09QVtJK05dO2Zvcig7TjxMLmxlbmd0aDtOKyspTFtOXT1lKHAoTFtOLTJd'@; put 'KSxMW04tN10sdShMW04tMTVdKSxMW04tMTZdKTt2YXIgUD10aGlzLmhbMF0sQj10aGlzLmhbMV0sJD10aGlzLmhbMl0sRD10aGlzLmhbM10seD10aGlzLmhbNF0sTT10aGlzLmhbNV0saj10aGlzLmhbNl0sYz10aGlzLmhbN107Zm9yKHIodGhpcy5rLmxlbmd0aD09PUwubGVuZ3RoKSxOPTA7'@; put 'TjxMLmxlbmd0aDtOKyspe3ZhciBtPWwoYyxmKHgpLG4oeCxNLGopLHRoaXMua1tOXSxMW05dKSxnPXQoaChQKSxpKFAsQiwkKSk7Yz1qLGo9TSxNPXgseD10KEQsbSksRD0kLCQ9QixCPVAsUD10KG0sZyl9dGhpcy5oWzBdPXQodGhpcy5oWzBdLFApLHRoaXMuaFsxXT10KHRoaXMuaFsxXSxC'@; put 'KSx0aGlzLmhbMl09dCh0aGlzLmhbMl0sJCksdGhpcy5oWzNdPXQodGhpcy5oWzNdLEQpLHRoaXMuaFs0XT10KHRoaXMuaFs0XSx4KSx0aGlzLmhbNV09dCh0aGlzLmhbNV0sTSksdGhpcy5oWzZdPXQodGhpcy5oWzZdLGopLHRoaXMuaFs3XT10KHRoaXMuaFs3XSxjKX0sXy5wcm90b3R5cGUu'@; put 'X2RpZ2VzdD1mdW5jdGlvbihBKXtyZXR1cm4iaGV4Ij09PUE/Yi50b0hleDMyKHRoaXMuaCwiYmlnIik6Yi5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSx7Ii4uL2NvbW1vbiI6NDI3LCIuLi91dGlscyI6NDM3LCIuL2NvbW1vbiI6NDM2LCJtaW5pbWFsaXN0aWMtYXNzZXJ0Ijo0NTN9XSw0MzQ6'@; put 'W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vdXRpbHMiKSxhPXMoIi4vNTEyIik7ZnVuY3Rpb24gbygpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbzthLmNhbGwodGhpcyksdGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1'@; put 'MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XX1iLmluaGVyaXRzKG8sYSksRS5leHBv'@; put 'cnRzPW8sby5ibG9ja1NpemU9MTAyNCxvLm91dFNpemU9Mzg0LG8uaG1hY1N0cmVuZ3RoPTE5MixvLnBhZExlbmd0aD0xMjgsby5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihyKXtyZXR1cm4iaGV4Ij09PXI/Yi50b0hleDMyKHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIik6Yi5zcGxpdDMy'@; put 'KHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIil9fSx7Ii4uL3V0aWxzIjo0MzcsIi4vNTEyIjo0MzV9XSw0MzU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vdXRpbHMiKSxhPXMoIi4uL2NvbW1vbiIpLG89cygibWluaW1hbGlzdGljLWFzc2VydCIpLHI9Yi5yb3Ry'@; put 'NjRfaGksdD1iLnJvdHI2NF9sbyxlPWIuc2hyNjRfaGksbD1iLnNocjY0X2xvLG49Yi5zdW02NCxpPWIuc3VtNjRfaGksaD1iLnN1bTY0X2xvLGY9Yi5zdW02NF80X2hpLHU9Yi5zdW02NF80X2xvLHA9Yi5zdW02NF81X2hpLGQ9Yi5zdW02NF81X2xvLHY9YS5CbG9ja0hhc2gsXz1bMTExNjM1'@; put 'MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1'@; put 'NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwz'@; put 'NDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYw'@; put 'NjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2'@; put 'MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAs'@; put 'MTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQw'@; put 'OTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQw'@; put 'MywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcs'@; put 'MzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3'@; put 'NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4'@; put 'LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdO2Z1bmN0aW9uIEEoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBBKSlyZXR1cm4gbmV3IEE7di5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMxNDQx'@; put 'MzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0NywxNTQxNDU5MjI1LDMyNzAzMzIwOV0sdGhpcy5rPV8sdGhpcy5XPW5l'@; put 'dyBBcnJheSgxNjApfWZ1bmN0aW9uIEkoZyx5LHcsayxPKXt2YXIgej1nJndefmcmTztyZXR1cm4gejwwJiYoeis9NDI5NDk2NzI5Niksen1mdW5jdGlvbiBMKGcseSx3LGssTyx6KXt2YXIgVT15JmtefnkmejtyZXR1cm4gVTwwJiYoVSs9NDI5NDk2NzI5NiksVX1mdW5jdGlvbiBOKGcseSx3'@; put 'LGssTyl7dmFyIHo9ZyZ3XmcmT153Jk87cmV0dXJuIHo8MCYmKHorPTQyOTQ5NjcyOTYpLHp9ZnVuY3Rpb24gUChnLHksdyxrLE8seil7dmFyIFU9eSZrXnkmel5rJno7cmV0dXJuIFU8MCYmKFUrPTQyOTQ5NjcyOTYpLFV9ZnVuY3Rpb24gQihnLHkpe3ZhciB3PXIoZyx5LDI4KV5yKHksZywy'@; put 'KV5yKHksZyw3KTtyZXR1cm4gdzwwJiYodys9NDI5NDk2NzI5Niksd31mdW5jdGlvbiAkKGcseSl7dmFyIHc9dChnLHksMjgpXnQoeSxnLDIpXnQoeSxnLDcpO3JldHVybiB3PDAmJih3Kz00Mjk0OTY3Mjk2KSx3fWZ1bmN0aW9uIEQoZyx5KXt2YXIgdz1yKGcseSwxNClecihnLHksMTgpXnIo'@; put 'eSxnLDkpO3JldHVybiB3PDAmJih3Kz00Mjk0OTY3Mjk2KSx3fWZ1bmN0aW9uIHgoZyx5KXt2YXIgdz10KGcseSwxNCledChnLHksMTgpXnQoeSxnLDkpO3JldHVybiB3PDAmJih3Kz00Mjk0OTY3Mjk2KSx3fWZ1bmN0aW9uIE0oZyx5KXt2YXIgdz1yKGcseSwxKV5yKGcseSw4KV5lKGcseSw3'@; put 'KTtyZXR1cm4gdzwwJiYodys9NDI5NDk2NzI5Niksd31mdW5jdGlvbiBqKGcseSl7dmFyIHc9dChnLHksMSledChnLHksOClebChnLHksNyk7cmV0dXJuIHc8MCYmKHcrPTQyOTQ5NjcyOTYpLHd9ZnVuY3Rpb24gYyhnLHkpe3ZhciB3PXIoZyx5LDE5KV5yKHksZywyOSleZShnLHksNik7cmV0'@; put 'dXJuIHc8MCYmKHcrPTQyOTQ5NjcyOTYpLHd9ZnVuY3Rpb24gbShnLHkpe3ZhciB3PXQoZyx5LDE5KV50KHksZywyOSlebChnLHksNik7cmV0dXJuIHc8MCYmKHcrPTQyOTQ5NjcyOTYpLHd9Yi5pbmhlcml0cyhBLHYpLEUuZXhwb3J0cz1BLEEuYmxvY2tTaXplPTEwMjQsQS5vdXRTaXplPTUx'@; put 'MixBLmhtYWNTdHJlbmd0aD0xOTIsQS5wYWRMZW5ndGg9MTI4LEEucHJvdG90eXBlLl9wcmVwYXJlQmxvY2s9ZnVuY3Rpb24oZyx5KXtmb3IodmFyIHc9dGhpcy5XLGs9MDtrPDMyO2srKyl3W2tdPWdbeStrXTtmb3IoO2s8dy5sZW5ndGg7ays9Mil7dmFyIE89Yyh3W2stNF0sd1trLTNdKSx6'@; put 'PW0od1trLTRdLHdbay0zXSksVT13W2stMTRdLFY9d1trLTEzXSxSPU0od1trLTMwXSx3W2stMjldKSxIPWood1trLTMwXSx3W2stMjldKSxUPXdbay0zMl0sQz13W2stMzFdO3dba109ZihPLHosVSxWLFIsSCxULEMpLHdbaysxXT11KE8seixVLFYsUixILFQsQyl9fSxBLnByb3RvdHlwZS5f'@; put 'dXBkYXRlPWZ1bmN0aW9uKGcseSl7dGhpcy5fcHJlcGFyZUJsb2NrKGcseSk7dmFyIHc9dGhpcy5XLGs9dGhpcy5oWzBdLE89dGhpcy5oWzFdLHo9dGhpcy5oWzJdLFU9dGhpcy5oWzNdLFY9dGhpcy5oWzRdLFI9dGhpcy5oWzVdLEg9dGhpcy5oWzZdLFQ9dGhpcy5oWzddLEM9dGhpcy5oWzhd'@; put 'LEY9dGhpcy5oWzldLHE9dGhpcy5oWzEwXSxZPXRoaXMuaFsxMV0sWD10aGlzLmhbMTJdLEs9dGhpcy5oWzEzXSxydD10aGlzLmhbMTRdLHR0PXRoaXMuaFsxNV07byh0aGlzLmsubGVuZ3RoPT09dy5sZW5ndGgpO2Zvcih2YXIgVz0wO1c8dy5sZW5ndGg7Vys9Mil7dmFyIFE9cnQsRz10dCxl'@; put 'dD1EKEMsRiksbnQ9eChDLEYpLGl0PUkoQywwLHEsMCxYKSxvdD1MKDAsRiwwLFksMCxLKSxodD10aGlzLmtbV10sZnQ9dGhpcy5rW1crMV0scHQ9d1tXXSxUdD13W1crMV0seXQ9cChRLEcsZXQsbnQsaXQsb3QsaHQsZnQscHQsVHQpLHd0PWQoUSxHLGV0LG50LGl0LG90LGh0LGZ0LHB0LFR0'@; put 'KTtRPUIoayxPKSxHPSQoayxPKSxldD1OKGssMCx6LDAsViksbnQ9UCgwLE8sMCxVLDAsUik7dmFyIHF0PWkoUSxHLGV0LG50KSxFdD1oKFEsRyxldCxudCk7cnQ9WCx0dD1LLFg9cSxLPVkscT1DLFk9RixDPWkoSCxULHl0LHd0KSxGPWgoVCxULHl0LHd0KSxIPVYsVD1SLFY9eixSPVUsej1r'@; put 'LFU9TyxrPWkoeXQsd3QscXQsRXQpLE89aCh5dCx3dCxxdCxFdCl9bih0aGlzLmgsMCxrLE8pLG4odGhpcy5oLDIseixVKSxuKHRoaXMuaCw0LFYsUiksbih0aGlzLmgsNixILFQpLG4odGhpcy5oLDgsQyxGKSxuKHRoaXMuaCwxMCxxLFkpLG4odGhpcy5oLDEyLFgsSyksbih0aGlzLmgsMTQs'@; put 'cnQsdHQpfSxBLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGcpe3JldHVybiJoZXgiPT09Zz9iLnRvSGV4MzIodGhpcy5oLCJiaWciKTpiLnNwbGl0MzIodGhpcy5oLCJiaWciKX19LHsiLi4vY29tbW9uIjo0MjcsIi4uL3V0aWxzIjo0MzcsIm1pbmltYWxpc3RpYy1hc3NlcnQiOjQ1M31d'@; put 'LDQzNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCIuLi91dGlscyIpLnJvdHIzMjtmdW5jdGlvbiBhKHQsZSxsKXtyZXR1cm4gdCZlXn50Jmx9ZnVuY3Rpb24gbyh0LGUsbCl7cmV0dXJuIHQmZV50JmxeZSZsfWZ1bmN0aW9uIHIodCxlLGwpe3JldHVybiB0XmVebH1T'@; put 'LmZ0XzE9ZnVuY3Rpb24odCxlLGwsbil7cmV0dXJuIDA9PT10P2EoZSxsLG4pOjE9PT10fHwzPT09dD9yKGUsbCxuKToyPT09dD9vKGUsbCxuKTp2b2lkIDB9LFMuY2gzMj1hLFMubWFqMzI9byxTLnAzMj1yLFMuczBfMjU2PWZ1bmN0aW9uKHQpe3JldHVybiBiKHQsMileYih0LDEzKV5iKHQs'@; put 'MjIpfSxTLnMxXzI1Nj1mdW5jdGlvbih0KXtyZXR1cm4gYih0LDYpXmIodCwxMSleYih0LDI1KX0sUy5nMF8yNTY9ZnVuY3Rpb24odCl7cmV0dXJuIGIodCw3KV5iKHQsMTgpXnQ+Pj4zfSxTLmcxXzI1Nj1mdW5jdGlvbih0KXtyZXR1cm4gYih0LDE3KV5iKHQsMTkpXnQ+Pj4xMH19LHsiLi4v'@; put 'dXRpbHMiOjQzN31dLDQzNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJtaW5pbWFsaXN0aWMtYXNzZXJ0IiksYT1zKCJpbmhlcml0cyIpO2Z1bmN0aW9uIG8obCxuKXtyZXR1cm4gNTUyOTY9PSg2NDUxMiZsLmNoYXJDb2RlQXQobikpJiYhKG48MHx8bisxPj1sLmxl'@; put 'bmd0aCkmJjU2MzIwPT0oNjQ1MTImbC5jaGFyQ29kZUF0KG4rMSkpfWZ1bmN0aW9uIHIobCl7cmV0dXJuKGw+Pj4yNHxsPj4+OCY2NTI4MHxsPDw4JjE2NzExNjgwfCgyNTUmbCk8PDI0KT4+PjB9ZnVuY3Rpb24gdChsKXtyZXR1cm4gMT09PWwubGVuZ3RoPyIwIitsOmx9ZnVuY3Rpb24gZShs'@; put 'KXtyZXR1cm4gNz09PWwubGVuZ3RoPyIwIitsOjY9PT1sLmxlbmd0aD8iMDAiK2w6NT09PWwubGVuZ3RoPyIwMDAiK2w6ND09PWwubGVuZ3RoPyIwMDAwIitsOjM9PT1sLmxlbmd0aD8iMDAwMDAiK2w6Mj09PWwubGVuZ3RoPyIwMDAwMDAiK2w6MT09PWwubGVuZ3RoPyIwMDAwMDAwIitsOmx9'@; put 'Uy5pbmhlcml0cz1hLFMudG9BcnJheT1mdW5jdGlvbihsLG4pe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGwuc2xpY2UoKTtpZighbClyZXR1cm5bXTt2YXIgaT1bXTtpZigic3RyaW5nIj09dHlwZW9mIGwpaWYobil7aWYoImhleCI9PT1uKWZvcigobD1sLnJlcGxhY2UoL1teYS16MC05'@; put 'XSsvZ2ksIiIpKS5sZW5ndGglMiE9MCYmKGw9IjAiK2wpLGY9MDtmPGwubGVuZ3RoO2YrPTIpaS5wdXNoKHBhcnNlSW50KGxbZl0rbFtmKzFdLDE2KSl9ZWxzZSBmb3IodmFyIGg9MCxmPTA7ZjxsLmxlbmd0aDtmKyspe3ZhciB1PWwuY2hhckNvZGVBdChmKTt1PDEyOD9pW2grK109dTp1PDIw'@; put 'NDg/KGlbaCsrXT11Pj42fDE5MixpW2grK109NjMmdXwxMjgpOm8obCxmKT8odT02NTUzNisoKDEwMjMmdSk8PDEwKSsoMTAyMyZsLmNoYXJDb2RlQXQoKytmKSksaVtoKytdPXU+PjE4fDI0MCxpW2grK109dT4+MTImNjN8MTI4LGlbaCsrXT11Pj42JjYzfDEyOCxpW2grK109NjMmdXwxMjgp'@; put 'OihpW2grK109dT4+MTJ8MjI0LGlbaCsrXT11Pj42JjYzfDEyOCxpW2grK109NjMmdXwxMjgpfWVsc2UgZm9yKGY9MDtmPGwubGVuZ3RoO2YrKylpW2ZdPTB8bFtmXTtyZXR1cm4gaX0sUy50b0hleD1mdW5jdGlvbihsKXtmb3IodmFyIG49IiIsaT0wO2k8bC5sZW5ndGg7aSsrKW4rPXQobFtp'@; put 'XS50b1N0cmluZygxNikpO3JldHVybiBufSxTLmh0b25sPXIsUy50b0hleDMyPWZ1bmN0aW9uKGwsbil7Zm9yKHZhciBpPSIiLGg9MDtoPGwubGVuZ3RoO2grKyl7dmFyIGY9bFtoXTsibGl0dGxlIj09PW4mJihmPXIoZikpLGkrPWUoZi50b1N0cmluZygxNikpfXJldHVybiBpfSxTLnplcm8y'@; put 'PXQsUy56ZXJvOD1lLFMuam9pbjMyPWZ1bmN0aW9uKGwsbixpLGgpe3ZhciBmPWktbjtiKGYlND09MCk7Zm9yKHZhciB1PW5ldyBBcnJheShmLzQpLHA9MCxkPW47cDx1Lmxlbmd0aDtwKyssZCs9NCl1W3BdPSgiYmlnIj09PWg/bFtkXTw8MjR8bFtkKzFdPDwxNnxsW2QrMl08PDh8bFtkKzNd'@; put 'OmxbZCszXTw8MjR8bFtkKzJdPDwxNnxsW2QrMV08PDh8bFtkXSk+Pj4wO3JldHVybiB1fSxTLnNwbGl0MzI9ZnVuY3Rpb24obCxuKXtmb3IodmFyIGk9bmV3IEFycmF5KDQqbC5sZW5ndGgpLGg9MCxmPTA7aDxsLmxlbmd0aDtoKyssZis9NCl7dmFyIHU9bFtoXTsiYmlnIj09PW4/KGlbZl09'@; put 'dT4+PjI0LGlbZisxXT11Pj4+MTYmMjU1LGlbZisyXT11Pj4+OCYyNTUsaVtmKzNdPTI1NSZ1KTooaVtmKzNdPXU+Pj4yNCxpW2YrMl09dT4+PjE2JjI1NSxpW2YrMV09dT4+PjgmMjU1LGlbZl09MjU1JnUpfXJldHVybiBpfSxTLnJvdHIzMj1mdW5jdGlvbihsLG4pe3JldHVybiBsPj4+bnxs'@; put 'PDwzMi1ufSxTLnJvdGwzMj1mdW5jdGlvbihsLG4pe3JldHVybiBsPDxufGw+Pj4zMi1ufSxTLnN1bTMyPWZ1bmN0aW9uKGwsbil7cmV0dXJuIGwrbj4+PjB9LFMuc3VtMzJfMz1mdW5jdGlvbihsLG4saSl7cmV0dXJuIGwrbitpPj4+MH0sUy5zdW0zMl80PWZ1bmN0aW9uKGwsbixpLGgpe3Jl'@; put 'dHVybiBsK24raStoPj4+MH0sUy5zdW0zMl81PWZ1bmN0aW9uKGwsbixpLGgsZil7cmV0dXJuIGwrbitpK2grZj4+PjB9LFMuc3VtNjQ9ZnVuY3Rpb24obCxuLGksaCl7dmFyIHU9aCtsW24rMV0+Pj4wO2xbbl09KHU8aD8xOjApK2krbFtuXT4+PjAsbFtuKzFdPXV9LFMuc3VtNjRfaGk9ZnVu'@; put 'Y3Rpb24obCxuLGksaCl7cmV0dXJuKG4raD4+PjA8bj8xOjApK2wraT4+PjB9LFMuc3VtNjRfbG89ZnVuY3Rpb24obCxuLGksaCl7cmV0dXJuIG4raD4+PjB9LFMuc3VtNjRfNF9oaT1mdW5jdGlvbihsLG4saSxoLGYsdSxwLGQpe3ZhciB2PTAsXz1uO3JldHVybiB2Kz0oXz1fK2g+Pj4wKTxu'@; put 'PzE6MCx2Kz0oXz1fK3U+Pj4wKTx1PzE6MCxsK2krZitwKyh2Kz0oXz1fK2Q+Pj4wKTxkPzE6MCk+Pj4wfSxTLnN1bTY0XzRfbG89ZnVuY3Rpb24obCxuLGksaCxmLHUscCxkKXtyZXR1cm4gbitoK3UrZD4+PjB9LFMuc3VtNjRfNV9oaT1mdW5jdGlvbihsLG4saSxoLGYsdSxwLGQsdixfKXt2'@; put 'YXIgQT0wLEk9bjtyZXR1cm4gQSs9KEk9SStoPj4+MCk8bj8xOjAsQSs9KEk9SSt1Pj4+MCk8dT8xOjAsQSs9KEk9SStkPj4+MCk8ZD8xOjAsbCtpK2YrcCt2KyhBKz0oST1JK18+Pj4wKTxfPzE6MCk+Pj4wfSxTLnN1bTY0XzVfbG89ZnVuY3Rpb24obCxuLGksaCxmLHUscCxkLHYsXyl7cmV0'@; put 'dXJuIG4raCt1K2QrXz4+PjB9LFMucm90cjY0X2hpPWZ1bmN0aW9uKGwsbixpKXtyZXR1cm4objw8MzItaXxsPj4+aSk+Pj4wfSxTLnJvdHI2NF9sbz1mdW5jdGlvbihsLG4saSl7cmV0dXJuKGw8PDMyLWl8bj4+PmkpPj4+MH0sUy5zaHI2NF9oaT1mdW5jdGlvbihsLG4saSl7cmV0dXJuIGw+'@; put 'Pj5pfSxTLnNocjY0X2xvPWZ1bmN0aW9uKGwsbixpKXtyZXR1cm4obDw8MzItaXxuPj4+aSk+Pj4wfX0se2luaGVyaXRzOjQ0MCwibWluaW1hbGlzdGljLWFzc2VydCI6NDUzfV0sNDM4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImhhc2guanMiKSxhPXMoIm1pbmlt'@; put 'YWxpc3RpYy1jcnlwdG8tdXRpbHMiKSxvPXMoIm1pbmltYWxpc3RpYy1hc3NlcnQiKTtmdW5jdGlvbiByKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHIpKXJldHVybiBuZXcgcih0KTt0aGlzLmhhc2g9dC5oYXNoLHRoaXMucHJlZFJlc2lzdD0hIXQucHJlZFJlc2lzdCx0aGlzLm91dExlbj10'@; put 'aGlzLmhhc2gub3V0U2l6ZSx0aGlzLm1pbkVudHJvcHk9dC5taW5FbnRyb3B5fHx0aGlzLmhhc2guaG1hY1N0cmVuZ3RoLHRoaXMuX3Jlc2VlZD1udWxsLHRoaXMucmVzZWVkSW50ZXJ2YWw9bnVsbCx0aGlzLks9bnVsbCx0aGlzLlY9bnVsbDt2YXIgZT1hLnRvQXJyYXkodC5lbnRyb3B5LHQu'@; put 'ZW50cm9weUVuY3x8ImhleCIpLGw9YS50b0FycmF5KHQubm9uY2UsdC5ub25jZUVuY3x8ImhleCIpLG49YS50b0FycmF5KHQucGVycyx0LnBlcnNFbmN8fCJoZXgiKTtvKGUubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMu'@; put 'bWluRW50cm9weSsiIGJpdHMiKSx0aGlzLl9pbml0KGUsbCxuKX1FLmV4cG9ydHM9cixyLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih0LGUsbCl7dmFyIG49dC5jb25jYXQoZSkuY29uY2F0KGwpO3RoaXMuSz1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCksdGhpcy5WPW5ldyBBcnJheSh0aGlz'@; put 'Lm91dExlbi84KTtmb3IodmFyIGk9MDtpPHRoaXMuVi5sZW5ndGg7aSsrKXRoaXMuS1tpXT0wLHRoaXMuVltpXT0xO3RoaXMuX3VwZGF0ZShuKSx0aGlzLl9yZXNlZWQ9MSx0aGlzLnJlc2VlZEludGVydmFsPTI4MTQ3NDk3NjcxMDY1Nn0sci5wcm90b3R5cGUuX2htYWM9ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gbmV3IGIuaG1hYyh0aGlzLmhhc2gsdGhpcy5LKX0sci5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFswXSk7dCYmKGU9ZS51cGRhdGUodCkpLHRoaXMuSz1lLmRpZ2VzdCgpLHRoaXMuVj10aGlzLl9o'@; put 'bWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCksdCYmKHRoaXMuSz10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFsxXSkudXBkYXRlKHQpLmRpZ2VzdCgpLHRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCkpfSxyLnByb3RvdHlwZS5yZXNlZWQ9'@; put 'ZnVuY3Rpb24odCxlLGwsbil7InN0cmluZyIhPXR5cGVvZiBlJiYobj1sLGw9ZSxlPW51bGwpLHQ9YS50b0FycmF5KHQsZSksbD1hLnRvQXJyYXkobCxuKSxvKHQubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMubWluRW50'@; put 'cm9weSsiIGJpdHMiKSx0aGlzLl91cGRhdGUodC5jb25jYXQobHx8W10pKSx0aGlzLl9yZXNlZWQ9MX0sci5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24odCxlLGwsbil7aWYodGhpcy5fcmVzZWVkPnRoaXMucmVzZWVkSW50ZXJ2YWwpdGhyb3cgbmV3IEVycm9yKCJSZXNlZWQgaXMgcmVx'@; put 'dWlyZWQiKTsic3RyaW5nIiE9dHlwZW9mIGUmJihuPWwsbD1lLGU9bnVsbCksbCYmKGw9YS50b0FycmF5KGwsbnx8ImhleCIpLHRoaXMuX3VwZGF0ZShsKSk7Zm9yKHZhciBpPVtdO2kubGVuZ3RoPHQ7KXRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCksaT1pLmNv'@; put 'bmNhdCh0aGlzLlYpO3ZhciBoPWkuc2xpY2UoMCx0KTtyZXR1cm4gdGhpcy5fdXBkYXRlKGwpLHRoaXMuX3Jlc2VlZCsrLGEuZW5jb2RlKGgsZSl9fSx7Imhhc2guanMiOjQyNiwibWluaW1hbGlzdGljLWFzc2VydCI6NDUzLCJtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzIjo0NTR9XSw0Mzk6'@; put 'W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Uy5yZWFkPWZ1bmN0aW9uKGIsYSxvLHIsdCl7dmFyIGUsbCxuPTgqdC1yLTEsaT0oMTw8biktMSxoPWk+PjEsZj0tNyx1PW8/dC0xOjAscD1vPy0xOjEsZD1iW2ErdV07Zm9yKHUrPXAsZT1kJigxPDwtZiktMSxkPj49LWYsZis9bjtmPjA7'@; put 'ZT0yNTYqZStiW2ErdV0sdSs9cCxmLT04KTtmb3IobD1lJigxPDwtZiktMSxlPj49LWYsZis9cjtmPjA7bD0yNTYqbCtiW2ErdV0sdSs9cCxmLT04KTtpZigwPT09ZSllPTEtaDtlbHNle2lmKGU9PT1pKXJldHVybiBsP05hTjoxLzAqKGQ/LTE6MSk7bCs9TWF0aC5wb3coMixyKSxlLT1ofXJl'@; put 'dHVybihkPy0xOjEpKmwqTWF0aC5wb3coMixlLXIpfSxTLndyaXRlPWZ1bmN0aW9uKGIsYSxvLHIsdCxlKXt2YXIgbCxuLGksaD04KmUtdC0xLGY9KDE8PGgpLTEsdT1mPj4xLHA9MjM9PT10P01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxkPXI/MDplLTEsdj1yPzE6LTEsXz1h'@; put 'PDB8fDA9PT1hJiYxL2E8MD8xOjA7Zm9yKGE9TWF0aC5hYnMoYSksaXNOYU4oYSl8fGE9PT0xLzA/KG49aXNOYU4oYSk/MTowLGw9Zik6KGw9TWF0aC5mbG9vcihNYXRoLmxvZyhhKS9NYXRoLkxOMiksYSooaT1NYXRoLnBvdygyLC1sKSk8MSYmKGwtLSxpKj0yKSwoYSs9bCt1Pj0xP3AvaTpw'@; put 'Kk1hdGgucG93KDIsMS11KSkqaT49MiYmKGwrKyxpLz0yKSxsK3U+PWY/KG49MCxsPWYpOmwrdT49MT8obj0oYSppLTEpKk1hdGgucG93KDIsdCksbCs9dSk6KG49YSpNYXRoLnBvdygyLHUtMSkqTWF0aC5wb3coMix0KSxsPTApKTt0Pj04O2JbbytkXT0yNTUmbixkKz12LG4vPTI1Nix0LT04'@; put 'KTtmb3IobD1sPDx0fG4saCs9dDtoPjA7YltvK2RdPTI1NSZsLGQrPXYsbC89MjU2LGgtPTgpO2JbbytkLXZdfD0xMjgqX319LHt9XSw0NDA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGIs'@; put 'YSl7YSYmKGIuc3VwZXJfPWEsYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmIsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSkpfTpmdW5jdGlvbihiLGEpe2lmKGEpe2Iuc3VwZXJfPWE7dmFyIG89ZnVu'@; put 'Y3Rpb24oKXt9O28ucHJvdG90eXBlPWEucHJvdG90eXBlLGIucHJvdG90eXBlPW5ldyBvLGIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWJ9fX0se31dLDQ0MTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiLGEsbyxyLHQsZSxsLG4peyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjshZnVuY3Rp'@; put 'b24oaSl7Im9iamVjdCI9PXR5cGVvZiBTJiZ2b2lkIDAhPT1FP0UuZXhwb3J0cz1pKCk6KHR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT1hP2E6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykuSlNaaXA9aSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBpKGgsZix1KXtm'@; put 'dW5jdGlvbiBwKF8sQSl7aWYoIWZbX10pe2lmKCFoW19dKXt2YXIgST0iZnVuY3Rpb24iPT10eXBlb2YgcyYmcztpZighQSYmSSlyZXR1cm4gSShfLCEwKTtpZihkKXJldHVybiBkKF8sITApO3ZhciBMPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK18rIiciKTt0aHJvdyBMLmNv'@; put 'ZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLEx9dmFyIE49ZltfXT17ZXhwb3J0czp7fX07aFtfXVswXS5jYWxsKE4uZXhwb3J0cyxmdW5jdGlvbihQKXtyZXR1cm4gcChoW19dWzFdW1BdfHxQKX0sTixOLmV4cG9ydHMsaSxoLGYsdSl9cmV0dXJuIGZbX10uZXhwb3J0c31mb3IodmFyIGQ9ImZ1bmN0'@; put 'aW9uIj09dHlwZW9mIHMmJnMsdj0wO3Y8dS5sZW5ndGg7disrKXAodVt2XSk7cmV0dXJuIHB9KHsxOltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi91dGlscyIpLHA9aSgiLi9zdXBwb3J0IiksZD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5'@; put 'ejAxMjM0NTY3ODkrLz0iO2YuZW5jb2RlPWZ1bmN0aW9uKHYpe2Zvcih2YXIgXyxBLEksTixQLEIsJD1bXSxEPTAseD12Lmxlbmd0aCxNPXgsaj0ic3RyaW5nIiE9PXUuZ2V0VHlwZU9mKHYpO0Q8di5sZW5ndGg7KU09eC1ELEk9aj8oXz12W0QrK10sQT1EPHg/dltEKytdOjAsRDx4P3ZbRCsr'@; put 'XTowKTooXz12LmNoYXJDb2RlQXQoRCsrKSxBPUQ8eD92LmNoYXJDb2RlQXQoRCsrKTowLEQ8eD92LmNoYXJDb2RlQXQoRCsrKTowKSxOPSgzJl8pPDw0fEE+PjQsUD0xPE0/KDE1JkEpPDwyfEk+PjY6NjQsQj0yPE0/NjMmSTo2NCwkLnB1c2goZC5jaGFyQXQoXz4+MikrZC5jaGFyQXQoTikr'@; put 'ZC5jaGFyQXQoUCkrZC5jaGFyQXQoQikpO3JldHVybiAkLmpvaW4oIiIpfSxmLmRlY29kZT1mdW5jdGlvbih2KXt2YXIgXyxBLEksTCxOLFAsQj0wLCQ9MCxEPSJkYXRhOiI7aWYodi5zdWJzdHIoMCw1KT09PUQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhc2U2NCBpbnB1dCwgaXQgbG9v'@; put 'a3MgbGlrZSBhIGRhdGEgdXJsLiIpO3ZhciB4LE09Myoodj12LnJlcGxhY2UoL1teQS1aYS16MC05Ky89XS9nLCIiKSkubGVuZ3RoLzQ7aWYodi5jaGFyQXQodi5sZW5ndGgtMSk9PT1kLmNoYXJBdCg2NCkmJk0tLSx2LmNoYXJBdCh2Lmxlbmd0aC0yKT09PWQuY2hhckF0KDY0KSYmTS0tLE0l'@; put 'MSE9MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYmFzZTY0IGlucHV0LCBiYWQgY29udGVudCBsZW5ndGguIik7Zm9yKHg9cC51aW50OGFycmF5P25ldyBVaW50OEFycmF5KDB8TSk6bmV3IEFycmF5KDB8TSk7Qjx2Lmxlbmd0aDspXz1kLmluZGV4T2Yodi5jaGFyQXQoQisrKSk8PDJ8KEw9'@; put 'ZC5pbmRleE9mKHYuY2hhckF0KEIrKykpKT4+NCxBPSgxNSZMKTw8NHwoTj1kLmluZGV4T2Yodi5jaGFyQXQoQisrKSkpPj4yLEk9KDMmTik8PDZ8KFA9ZC5pbmRleE9mKHYuY2hhckF0KEIrKykpKSx4WyQrK109Xyw2NCE9PU4mJih4WyQrK109QSksNjQhPT1QJiYoeFskKytdPUkpO3JldHVy'@; put 'biB4fX0seyIuL3N1cHBvcnQiOjMwLCIuL3V0aWxzIjozMn1dLDI6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCIuL2V4dGVybmFsIikscD1pKCIuL3N0cmVhbS9EYXRhV29ya2VyIiksZD1pKCIuL3N0cmVhbS9DcmMzMlByb2JlIiksdj1pKCIuL3N0cmVhbS9EYXRhTGVuZ3RoUHJvYmUiKTtm'@; put 'dW5jdGlvbiBfKEEsSSxMLE4sUCl7dGhpcy5jb21wcmVzc2VkU2l6ZT1BLHRoaXMudW5jb21wcmVzc2VkU2l6ZT1JLHRoaXMuY3JjMzI9TCx0aGlzLmNvbXByZXNzaW9uPU4sdGhpcy5jb21wcmVzc2VkQ29udGVudD1QfV8ucHJvdG90eXBlPXtnZXRDb250ZW50V29ya2VyOmZ1bmN0aW9uKCl7'@; put 'dmFyIEE9bmV3IHAodS5Qcm9taXNlLnJlc29sdmUodGhpcy5jb21wcmVzc2VkQ29udGVudCkpLnBpcGUodGhpcy5jb21wcmVzc2lvbi51bmNvbXByZXNzV29ya2VyKCkpLnBpcGUobmV3IHYoImRhdGFfbGVuZ3RoIikpLEk9dGhpcztyZXR1cm4gQS5vbigiZW5kIixmdW5jdGlvbigpe2lmKHRo'@; put 'aXMuc3RyZWFtSW5mby5kYXRhX2xlbmd0aCE9PUkudW5jb21wcmVzc2VkU2l6ZSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2giKX0pLEF9LGdldENvbXByZXNzZWRXb3JrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAodS5Qcm9taXNlLnJl'@; put 'c29sdmUodGhpcy5jb21wcmVzc2VkQ29udGVudCkpLndpdGhTdHJlYW1JbmZvKCJjb21wcmVzc2VkU2l6ZSIsdGhpcy5jb21wcmVzc2VkU2l6ZSkud2l0aFN0cmVhbUluZm8oInVuY29tcHJlc3NlZFNpemUiLHRoaXMudW5jb21wcmVzc2VkU2l6ZSkud2l0aFN0cmVhbUluZm8oImNyYzMyIix0'@; put 'aGlzLmNyYzMyKS53aXRoU3RyZWFtSW5mbygiY29tcHJlc3Npb24iLHRoaXMuY29tcHJlc3Npb24pfX0sXy5jcmVhdGVXb3JrZXJGcm9tPWZ1bmN0aW9uKEEsSSxMKXtyZXR1cm4gQS5waXBlKG5ldyBkKS5waXBlKG5ldyB2KCJ1bmNvbXByZXNzZWRTaXplIikpLnBpcGUoSS5jb21wcmVzc1dv'@; put 'cmtlcihMKSkucGlwZShuZXcgdigiY29tcHJlc3NlZFNpemUiKSkud2l0aFN0cmVhbUluZm8oImNvbXByZXNzaW9uIixJKX0saC5leHBvcnRzPV99LHsiLi9leHRlcm5hbCI6NiwiLi9zdHJlYW0vQ3JjMzJQcm9iZSI6MjUsIi4vc3RyZWFtL0RhdGFMZW5ndGhQcm9iZSI6MjYsIi4vc3RyZWFt'@; put 'L0RhdGFXb3JrZXIiOjI3fV0sMzpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIiKTtmLlNUT1JFPXttYWdpYzoiXDBcMCIsY29tcHJlc3NXb3JrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHUoIlNUT1JFIGNvbXByZXNzaW9uIil9LHVuY29tcHJlc3NX'@; put 'b3JrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHUoIlNUT1JFIGRlY29tcHJlc3Npb24iKX19LGYuREVGTEFURT1pKCIuL2ZsYXRlIil9LHsiLi9mbGF0ZSI6NywiLi9zdHJlYW0vR2VuZXJpY1dvcmtlciI6Mjh9XSw0OltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi91dGlscyIpLHA9ZnVu'@; put 'Y3Rpb24oKXtmb3IodmFyIGQsdj1bXSxfPTA7XzwyNTY7XysrKXtkPV87Zm9yKHZhciBBPTA7QTw4O0ErKylkPTEmZD8zOTg4MjkyMzg0XmQ+Pj4xOmQ+Pj4xO3ZbX109ZH1yZXR1cm4gdn0oKTtoLmV4cG9ydHM9ZnVuY3Rpb24oZCx2KXtyZXR1cm4gdm9pZCAwIT09ZCYmZC5sZW5ndGg/InN0'@; put 'cmluZyIhPT11LmdldFR5cGVPZihkKT9mdW5jdGlvbihfLEEsSSl7dmFyIE49cCxQPTArSTtfXj0tMTtmb3IodmFyIEI9MDtCPFA7QisrKV89Xz4+PjheTlsyNTUmKF9eQVtCXSldO3JldHVybi0xXl99KDB8dixkLGQubGVuZ3RoKTpmdW5jdGlvbihfLEEsSSl7dmFyIE49cCxQPTArSTtfXj0t'@; put 'MTtmb3IodmFyIEI9MDtCPFA7QisrKV89Xz4+PjheTlsyNTUmKF9eQS5jaGFyQ29kZUF0KEIpKV07cmV0dXJuLTFeX30oMHx2LGQsZC5sZW5ndGgpOjB9fSx7Ii4vdXRpbHMiOjMyfV0sNTpbZnVuY3Rpb24oaSxoLGYpe2YuYmFzZTY0PSExLGYuYmluYXJ5PSExLGYuZGlyPSExLGYuY3JlYXRl'@; put 'Rm9sZGVycz0hMCxmLmRhdGU9bnVsbCxmLmNvbXByZXNzaW9uPW51bGwsZi5jb21wcmVzc2lvbk9wdGlvbnM9bnVsbCxmLmNvbW1lbnQ9bnVsbCxmLnVuaXhQZXJtaXNzaW9ucz1udWxsLGYuZG9zUGVybWlzc2lvbnM9bnVsbH0se31dLDY6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdTt1PXR5cGVv'@; put 'ZiBQcm9taXNlPCJ1Ij9Qcm9taXNlOmkoImxpZSIpLGguZXhwb3J0cz17UHJvbWlzZTp1fX0se2xpZTozN31dLDc6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT10eXBlb2YgVWludDhBcnJheTwidSImJnR5cGVvZiBVaW50MTZBcnJheTwidSImJnR5cGVvZiBVaW50MzJBcnJheTwidSIscD1pKCJw'@; put 'YWtvIiksZD1pKCIuL3V0aWxzIiksdj1pKCIuL3N0cmVhbS9HZW5lcmljV29ya2VyIiksXz11PyJ1aW50OGFycmF5IjoiYXJyYXkiO2Z1bmN0aW9uIEEoSSxMKXt2LmNhbGwodGhpcywiRmxhdGVXb3JrZXIvIitJKSx0aGlzLl9wYWtvPW51bGwsdGhpcy5fcGFrb0FjdGlvbj1JLHRoaXMuX3Bh'@; put 'a29PcHRpb25zPUwsdGhpcy5tZXRhPXt9fWYubWFnaWM9IlxiXDAiLGQuaW5oZXJpdHMoQSx2KSxBLnByb3RvdHlwZS5wcm9jZXNzQ2h1bms9ZnVuY3Rpb24oSSl7dGhpcy5tZXRhPUkubWV0YSxudWxsPT09dGhpcy5fcGFrbyYmdGhpcy5fY3JlYXRlUGFrbygpLHRoaXMuX3Bha28ucHVzaChk'@; put 'LnRyYW5zZm9ybVRvKF8sSS5kYXRhKSwhMSl9LEEucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7di5wcm90b3R5cGUuZmx1c2guY2FsbCh0aGlzKSxudWxsPT09dGhpcy5fcGFrbyYmdGhpcy5fY3JlYXRlUGFrbygpLHRoaXMuX3Bha28ucHVzaChbXSwhMCl9LEEucHJvdG90eXBlLmNsZWFu'@; put 'VXA9ZnVuY3Rpb24oKXt2LnByb3RvdHlwZS5jbGVhblVwLmNhbGwodGhpcyksdGhpcy5fcGFrbz1udWxsfSxBLnByb3RvdHlwZS5fY3JlYXRlUGFrbz1mdW5jdGlvbigpe3RoaXMuX3Bha289bmV3IHBbdGhpcy5fcGFrb0FjdGlvbl0oe3JhdzohMCxsZXZlbDp0aGlzLl9wYWtvT3B0aW9ucy5s'@; put 'ZXZlbHx8LTF9KTt2YXIgST10aGlzO3RoaXMuX3Bha28ub25EYXRhPWZ1bmN0aW9uKEwpe0kucHVzaCh7ZGF0YTpMLG1ldGE6SS5tZXRhfSl9fSxmLmNvbXByZXNzV29ya2VyPWZ1bmN0aW9uKEkpe3JldHVybiBuZXcgQSgiRGVmbGF0ZSIsSSl9LGYudW5jb21wcmVzc1dvcmtlcj1mdW5jdGlv'@; put 'bigpe3JldHVybiBuZXcgQSgiSW5mbGF0ZSIse30pfX0seyIuL3N0cmVhbS9HZW5lcmljV29ya2VyIjoyOCwiLi91dGlscyI6MzIscGFrbzozOH1dLDg6W2Z1bmN0aW9uKGksaCxmKXtmdW5jdGlvbiB1KE4sUCl7dmFyIEIsJD0iIjtmb3IoQj0wO0I8UDtCKyspJCs9U3RyaW5nLmZyb21DaGFy'@; put 'Q29kZSgyNTUmTiksTj4+Pj04O3JldHVybiAkfWZ1bmN0aW9uIHAoTixQLEIsJCxELHgpe3ZhciBNLGosYz1OLmZpbGUsbT1OLmNvbXByZXNzaW9uLGc9eCE9PV8udXRmOGVuY29kZSx5PWQudHJhbnNmb3JtVG8oInN0cmluZyIseChjLm5hbWUpKSx3PWQudHJhbnNmb3JtVG8oInN0cmluZyIs'@; put 'Xy51dGY4ZW5jb2RlKGMubmFtZSkpLGs9Yy5jb21tZW50LE89ZC50cmFuc2Zvcm1Ubygic3RyaW5nIix4KGspKSx6PWQudHJhbnNmb3JtVG8oInN0cmluZyIsXy51dGY4ZW5jb2RlKGspKSxVPXcubGVuZ3RoIT09Yy5uYW1lLmxlbmd0aCxWPXoubGVuZ3RoIT09ay5sZW5ndGgsUj0iIixIPSIi'@; put 'LFQ9IiIsQz1jLmRpcixGPWMuZGF0ZSxxPXtjcmMzMjowLGNvbXByZXNzZWRTaXplOjAsdW5jb21wcmVzc2VkU2l6ZTowfTtQJiYhQnx8KHEuY3JjMzI9Ti5jcmMzMixxLmNvbXByZXNzZWRTaXplPU4uY29tcHJlc3NlZFNpemUscS51bmNvbXByZXNzZWRTaXplPU4udW5jb21wcmVzc2VkU2l6'@; put 'ZSk7dmFyIFk9MDtQJiYoWXw9OCksZ3x8IVUmJiFWfHwoWXw9MjA0OCk7dmFyIHR0LFEsWD0wLEs9MDtDJiYoWHw9MTYpLCJVTklYIj09PUQ/KEs9Nzk4LFh8PShRPXR0PWMudW5peFBlcm1pc3Npb25zLHR0fHwoUT1DPzE2ODkzOjMzMjA0KSwoNjU1MzUmUSk8PDE2KSk6KEs9MjAsWHw9ZnVu'@; put 'Y3Rpb24odHQpe3JldHVybiA2MyYodHR8fDApfShjLmRvc1Blcm1pc3Npb25zKSksTT1GLmdldFVUQ0hvdXJzKCksTTw8PTYsTXw9Ri5nZXRVVENNaW51dGVzKCksTTw8PTUsTXw9Ri5nZXRVVENTZWNvbmRzKCkvMixqPUYuZ2V0VVRDRnVsbFllYXIoKS0xOTgwLGo8PD00LGp8PUYuZ2V0VVRD'@; put 'TW9udGgoKSsxLGo8PD01LGp8PUYuZ2V0VVRDRGF0ZSgpLFUmJihIPXUoMSwxKSt1KEEoeSksNCkrdyxSKz0idXAiK3UoSC5sZW5ndGgsMikrSCksViYmKFQ9dSgxLDEpK3UoQShPKSw0KSt6LFIrPSJ1YyIrdShULmxlbmd0aCwyKStUKTt2YXIgcnQ9IiI7cmV0dXJuIHJ0Kz0iXG5cMCIscnQr'@; put 'PXUoWSwyKSxydCs9bS5tYWdpYyxydCs9dShNLDIpLHJ0Kz11KGosMikscnQrPXUocS5jcmMzMiw0KSxydCs9dShxLmNvbXByZXNzZWRTaXplLDQpLHJ0Kz11KHEudW5jb21wcmVzc2VkU2l6ZSw0KSxydCs9dSh5Lmxlbmd0aCwyKSxydCs9dShSLmxlbmd0aCwyKSx7ZmlsZVJlY29yZDpJLkxP'@; put 'Q0FMX0ZJTEVfSEVBREVSK3J0K3krUixkaXJSZWNvcmQ6SS5DRU5UUkFMX0ZJTEVfSEVBREVSK3UoSywyKStydCt1KE8ubGVuZ3RoLDIpKyJcMFwwXDBcMCIrdShYLDQpK3UoJCw0KSt5K1IrT319dmFyIGQ9aSgiLi4vdXRpbHMiKSx2PWkoIi4uL3N0cmVhbS9HZW5lcmljV29ya2VyIiksXz1p'@; put 'KCIuLi91dGY4IiksQT1pKCIuLi9jcmMzMiIpLEk9aSgiLi4vc2lnbmF0dXJlIik7ZnVuY3Rpb24gTChOLFAsQiwkKXt2LmNhbGwodGhpcywiWmlwRmlsZVdvcmtlciIpLHRoaXMuYnl0ZXNXcml0dGVuPTAsdGhpcy56aXBDb21tZW50PVAsdGhpcy56aXBQbGF0Zm9ybT1CLHRoaXMuZW5jb2Rl'@; put 'RmlsZU5hbWU9JCx0aGlzLnN0cmVhbUZpbGVzPU4sdGhpcy5hY2N1bXVsYXRlPSExLHRoaXMuY29udGVudEJ1ZmZlcj1bXSx0aGlzLmRpclJlY29yZHM9W10sdGhpcy5jdXJyZW50U291cmNlT2Zmc2V0PTAsdGhpcy5lbnRyaWVzQ291bnQ9MCx0aGlzLmN1cnJlbnRGaWxlPW51bGwsdGhpcy5f'@; put 'c291cmNlcz1bXX1kLmluaGVyaXRzKEwsdiksTC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihOKXt2YXIgUD1OLm1ldGEucGVyY2VudHx8MCxCPXRoaXMuZW50cmllc0NvdW50LCQ9dGhpcy5fc291cmNlcy5sZW5ndGg7dGhpcy5hY2N1bXVsYXRlP3RoaXMuY29udGVudEJ1ZmZlci5wdXNoKE4p'@; put 'Oih0aGlzLmJ5dGVzV3JpdHRlbis9Ti5kYXRhLmxlbmd0aCx2LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyx7ZGF0YTpOLmRhdGEsbWV0YTp7Y3VycmVudEZpbGU6dGhpcy5jdXJyZW50RmlsZSxwZXJjZW50OkI/KFArMTAwKihCLSQtMSkpL0I6MTAwfX0pKX0sTC5wcm90b3R5cGUub3BlbmVk'@; put 'U291cmNlPWZ1bmN0aW9uKE4pe3RoaXMuY3VycmVudFNvdXJjZU9mZnNldD10aGlzLmJ5dGVzV3JpdHRlbix0aGlzLmN1cnJlbnRGaWxlPU4uZmlsZS5uYW1lO3ZhciBQPXRoaXMuc3RyZWFtRmlsZXMmJiFOLmZpbGUuZGlyO2lmKFApe3ZhciBCPXAoTixQLCExLHRoaXMuY3VycmVudFNvdXJj'@; put 'ZU9mZnNldCx0aGlzLnppcFBsYXRmb3JtLHRoaXMuZW5jb2RlRmlsZU5hbWUpO3RoaXMucHVzaCh7ZGF0YTpCLmZpbGVSZWNvcmQsbWV0YTp7cGVyY2VudDowfX0pfWVsc2UgdGhpcy5hY2N1bXVsYXRlPSEwfSxMLnByb3RvdHlwZS5jbG9zZWRTb3VyY2U9ZnVuY3Rpb24oTil7dGhpcy5hY2N1'@; put 'bXVsYXRlPSExO3ZhciAkLFA9dGhpcy5zdHJlYW1GaWxlcyYmIU4uZmlsZS5kaXIsQj1wKE4sUCwhMCx0aGlzLmN1cnJlbnRTb3VyY2VPZmZzZXQsdGhpcy56aXBQbGF0Zm9ybSx0aGlzLmVuY29kZUZpbGVOYW1lKTtpZih0aGlzLmRpclJlY29yZHMucHVzaChCLmRpclJlY29yZCksUCl0aGlz'@; put 'LnB1c2goe2RhdGE6KCQ9TixJLkRBVEFfREVTQ1JJUFRPUit1KCQuY3JjMzIsNCkrdSgkLmNvbXByZXNzZWRTaXplLDQpK3UoJC51bmNvbXByZXNzZWRTaXplLDQpKSxtZXRhOntwZXJjZW50OjEwMH19KTtlbHNlIGZvcih0aGlzLnB1c2goe2RhdGE6Qi5maWxlUmVjb3JkLG1ldGE6e3BlcmNl'@; put 'bnQ6MH19KTt0aGlzLmNvbnRlbnRCdWZmZXIubGVuZ3RoOyl0aGlzLnB1c2godGhpcy5jb250ZW50QnVmZmVyLnNoaWZ0KCkpO3RoaXMuY3VycmVudEZpbGU9bnVsbH0sTC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIE49dGhpcy5ieXRlc1dyaXR0ZW4sUD0wO1A8dGhpcy5k'@; put 'aXJSZWNvcmRzLmxlbmd0aDtQKyspdGhpcy5wdXNoKHtkYXRhOnRoaXMuZGlyUmVjb3Jkc1tQXSxtZXRhOntwZXJjZW50OjEwMH19KTt2YXIgRCx4LE0sbSwkPShEPXRoaXMuZGlyUmVjb3Jkcy5sZW5ndGgseD10aGlzLmJ5dGVzV3JpdHRlbi1OLE09TixtPWQudHJhbnNmb3JtVG8oInN0cmlu'@; put 'ZyIsKDAsdGhpcy5lbmNvZGVGaWxlTmFtZSkodGhpcy56aXBDb21tZW50KSksSS5DRU5UUkFMX0RJUkVDVE9SWV9FTkQrIlwwXDBcMFwwIit1KEQsMikrdShELDIpK3UoeCw0KSt1KE0sNCkrdShtLmxlbmd0aCwyKSttKTt0aGlzLnB1c2goe2RhdGE6JCxtZXRhOntwZXJjZW50OjEwMH19KX0s'@; put 'TC5wcm90b3R5cGUucHJlcGFyZU5leHRTb3VyY2U9ZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXRoaXMuX3NvdXJjZXMuc2hpZnQoKSx0aGlzLm9wZW5lZFNvdXJjZSh0aGlzLnByZXZpb3VzLnN0cmVhbUluZm8pLHRoaXMuaXNQYXVzZWQ/dGhpcy5wcmV2aW91cy5wYXVzZSgpOnRoaXMucHJl'@; put 'dmlvdXMucmVzdW1lKCl9LEwucHJvdG90eXBlLnJlZ2lzdGVyUHJldmlvdXM9ZnVuY3Rpb24oTil7dGhpcy5fc291cmNlcy5wdXNoKE4pO3ZhciBQPXRoaXM7cmV0dXJuIE4ub24oImRhdGEiLGZ1bmN0aW9uKEIpe1AucHJvY2Vzc0NodW5rKEIpfSksTi5vbigiZW5kIixmdW5jdGlvbigpe1Au'@; put 'Y2xvc2VkU291cmNlKFAucHJldmlvdXMuc3RyZWFtSW5mbyksUC5fc291cmNlcy5sZW5ndGg/UC5wcmVwYXJlTmV4dFNvdXJjZSgpOlAuZW5kKCl9KSxOLm9uKCJlcnJvciIsZnVuY3Rpb24oQil7UC5lcnJvcihCKX0pLHRoaXN9LEwucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3JldHVy'@; put 'biEhdi5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJighdGhpcy5wcmV2aW91cyYmdGhpcy5fc291cmNlcy5sZW5ndGg/KHRoaXMucHJlcGFyZU5leHRTb3VyY2UoKSwhMCk6dGhpcy5wcmV2aW91c3x8dGhpcy5fc291cmNlcy5sZW5ndGh8fHRoaXMuZ2VuZXJhdGVkRXJyb3I/dm9pZCAw'@; put 'Oih0aGlzLmVuZCgpLCEwKSl9LEwucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKE4pe3ZhciBQPXRoaXMuX3NvdXJjZXM7aWYoIXYucHJvdG90eXBlLmVycm9yLmNhbGwodGhpcyxOKSlyZXR1cm4hMTtmb3IodmFyIEI9MDtCPFAubGVuZ3RoO0IrKyl0cnl7UFtCXS5lcnJvcihOKX1jYXRjaHt9'@; put 'cmV0dXJuITB9LEwucHJvdG90eXBlLmxvY2s9ZnVuY3Rpb24oKXt2LnByb3RvdHlwZS5sb2NrLmNhbGwodGhpcyk7Zm9yKHZhciBOPXRoaXMuX3NvdXJjZXMsUD0wO1A8Ti5sZW5ndGg7UCsrKU5bUF0ubG9jaygpfSxoLmV4cG9ydHM9TH0seyIuLi9jcmMzMiI6NCwiLi4vc2lnbmF0dXJlIjoy'@; put 'MywiLi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIiOjI4LCIuLi91dGY4IjozMSwiLi4vdXRpbHMiOjMyfV0sOTpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4uL2NvbXByZXNzaW9ucyIpLHA9aSgiLi9aaXBGaWxlV29ya2VyIik7Zi5nZW5lcmF0ZVdvcmtlcj1mdW5jdGlvbihkLHYsXyl7dmFy'@; put 'IEE9bmV3IHAodi5zdHJlYW1GaWxlcyxfLHYucGxhdGZvcm0sdi5lbmNvZGVGaWxlTmFtZSksST0wO3RyeXtkLmZvckVhY2goZnVuY3Rpb24oTCxOKXtJKys7dmFyIFA9ZnVuY3Rpb24oeCxNKXt2YXIgaj14fHxNLGM9dVtqXTtpZighYyl0aHJvdyBuZXcgRXJyb3IoaisiIGlzIG5vdCBhIHZh'@; put 'bGlkIGNvbXByZXNzaW9uIG1ldGhvZCAhIik7cmV0dXJuIGN9KE4ub3B0aW9ucy5jb21wcmVzc2lvbix2LmNvbXByZXNzaW9uKSwkPU4uZGlyLEQ9Ti5kYXRlO04uX2NvbXByZXNzV29ya2VyKFAsTi5vcHRpb25zLmNvbXByZXNzaW9uT3B0aW9uc3x8di5jb21wcmVzc2lvbk9wdGlvbnN8fHt9'@; put 'KS53aXRoU3RyZWFtSW5mbygiZmlsZSIse25hbWU6TCxkaXI6JCxkYXRlOkQsY29tbWVudDpOLmNvbW1lbnR8fCIiLHVuaXhQZXJtaXNzaW9uczpOLnVuaXhQZXJtaXNzaW9ucyxkb3NQZXJtaXNzaW9uczpOLmRvc1Blcm1pc3Npb25zfSkucGlwZShBKX0pLEEuZW50cmllc0NvdW50PUl9Y2F0'@; put 'Y2goTCl7QS5lcnJvcihMKX1yZXR1cm4gQX19LHsiLi4vY29tcHJlc3Npb25zIjozLCIuL1ppcEZpbGVXb3JrZXIiOjh9XSwxMDpbZnVuY3Rpb24oaSxoLGYpe2Z1bmN0aW9uIHUoKXtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHU7aWYoYXJndW1lbnRzLmxlbmd0aCl0aHJv'@; put 'dyBuZXcgRXJyb3IoIlRoZSBjb25zdHJ1Y3RvciB3aXRoIHBhcmFtZXRlcnMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBKU1ppcCAzLjAsIHBsZWFzZSBjaGVjayB0aGUgdXBncmFkZSBndWlkZS4iKTt0aGlzLmZpbGVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5jb21tZW50PW51bGwsdGhpcy5y'@; put 'b290PSIiLHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgcD1uZXcgdTtmb3IodmFyIGQgaW4gdGhpcykiZnVuY3Rpb24iIT10eXBlb2YgdGhpc1tkXSYmKHBbZF09dGhpc1tkXSk7cmV0dXJuIHB9fSh1LnByb3RvdHlwZT1pKCIuL29iamVjdCIpKS5sb2FkQXN5bmM9aSgiLi9sb2FkIiksdS5z'@; put 'dXBwb3J0PWkoIi4vc3VwcG9ydCIpLHUuZGVmYXVsdHM9aSgiLi9kZWZhdWx0cyIpLHUudmVyc2lvbj0iMy4xMC4xIix1LmxvYWRBc3luYz1mdW5jdGlvbihwLGQpe3JldHVybihuZXcgdSkubG9hZEFzeW5jKHAsZCl9LHUuZXh0ZXJuYWw9aSgiLi9leHRlcm5hbCIpLGguZXhwb3J0cz11fSx7'@; put 'Ii4vZGVmYXVsdHMiOjUsIi4vZXh0ZXJuYWwiOjYsIi4vbG9hZCI6MTEsIi4vb2JqZWN0IjoxNSwiLi9zdXBwb3J0IjozMH1dLDExOltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi91dGlscyIpLHA9aSgiLi9leHRlcm5hbCIpLGQ9aSgiLi91dGY4Iiksdj1pKCIuL3ppcEVudHJpZXMiKSxf'@; put 'PWkoIi4vc3RyZWFtL0NyYzMyUHJvYmUiKSxBPWkoIi4vbm9kZWpzVXRpbHMiKTtmdW5jdGlvbiBJKEwpe3JldHVybiBuZXcgcC5Qcm9taXNlKGZ1bmN0aW9uKE4sUCl7dmFyIEI9TC5kZWNvbXByZXNzZWQuZ2V0Q29udGVudFdvcmtlcigpLnBpcGUobmV3IF8pO0Iub24oImVycm9yIixmdW5j'@; put 'dGlvbigkKXtQKCQpfSkub24oImVuZCIsZnVuY3Rpb24oKXtCLnN0cmVhbUluZm8uY3JjMzIhPT1MLmRlY29tcHJlc3NlZC5jcmMzMj9QKG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IENSQzMyIG1pc21hdGNoIikpOk4oKX0pLnJlc3VtZSgpfSl9aC5leHBvcnRzPWZ1bmN0aW9uKEwsTil7'@; put 'dmFyIFA9dGhpcztyZXR1cm4gTj11LmV4dGVuZChOfHx7fSx7YmFzZTY0OiExLGNoZWNrQ1JDMzI6ITEsb3B0aW1pemVkQmluYXJ5U3RyaW5nOiExLGNyZWF0ZUZvbGRlcnM6ITEsZGVjb2RlRmlsZU5hbWU6ZC51dGY4ZGVjb2RlfSksQS5pc05vZGUmJkEuaXNTdHJlYW0oTCk/cC5Qcm9taXNl'@; put 'LnJlamVjdChuZXcgRXJyb3IoIkpTWmlwIGNhbid0IGFjY2VwdCBhIHN0cmVhbSB3aGVuIGxvYWRpbmcgYSB6aXAgZmlsZS4iKSk6dS5wcmVwYXJlQ29udGVudCgidGhlIGxvYWRlZCB6aXAgZmlsZSIsTCwhMCxOLm9wdGltaXplZEJpbmFyeVN0cmluZyxOLmJhc2U2NCkudGhlbihmdW5jdGlv'@; put 'bihCKXt2YXIgJD1uZXcgdihOKTtyZXR1cm4gJC5sb2FkKEIpLCR9KS50aGVuKGZ1bmN0aW9uKEIpe3ZhciAkPVtwLlByb21pc2UucmVzb2x2ZShCKV0sRD1CLmZpbGVzO2lmKE4uY2hlY2tDUkMzMilmb3IodmFyIHg9MDt4PEQubGVuZ3RoO3grKykkLnB1c2goSShEW3hdKSk7cmV0dXJuIHAu'@; put 'UHJvbWlzZS5hbGwoJCl9KS50aGVuKGZ1bmN0aW9uKEIpe2Zvcih2YXIgJD1CLnNoaWZ0KCksRD0kLmZpbGVzLHg9MDt4PEQubGVuZ3RoO3grKyl7dmFyIE09RFt4XSxqPU0uZmlsZU5hbWVTdHIsYz11LnJlc29sdmUoTS5maWxlTmFtZVN0cik7UC5maWxlKGMsTS5kZWNvbXByZXNzZWQse2Jp'@; put 'bmFyeTohMCxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITAsZGF0ZTpNLmRhdGUsZGlyOk0uZGlyLGNvbW1lbnQ6TS5maWxlQ29tbWVudFN0ci5sZW5ndGg/TS5maWxlQ29tbWVudFN0cjpudWxsLHVuaXhQZXJtaXNzaW9uczpNLnVuaXhQZXJtaXNzaW9ucyxkb3NQZXJtaXNzaW9uczpNLmRvc1Bl'@; put 'cm1pc3Npb25zLGNyZWF0ZUZvbGRlcnM6Ti5jcmVhdGVGb2xkZXJzfSksTS5kaXJ8fChQLmZpbGUoYykudW5zYWZlT3JpZ2luYWxOYW1lPWopfXJldHVybiAkLnppcENvbW1lbnQubGVuZ3RoJiYoUC5jb21tZW50PSQuemlwQ29tbWVudCksUH0pfX0seyIuL2V4dGVybmFsIjo2LCIuL25vZGVq'@; put 'c1V0aWxzIjoxNCwiLi9zdHJlYW0vQ3JjMzJQcm9iZSI6MjUsIi4vdXRmOCI6MzEsIi4vdXRpbHMiOjMyLCIuL3ppcEVudHJpZXMiOjMzfV0sMTI6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCIuLi91dGlscyIpLHA9aSgiLi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIiKTtmdW5jdGlvbiBkKHYs'@; put 'Xyl7cC5jYWxsKHRoaXMsIk5vZGVqcyBzdHJlYW0gaW5wdXQgYWRhcHRlciBmb3IgIit2KSx0aGlzLl91cHN0cmVhbUVuZGVkPSExLHRoaXMuX2JpbmRTdHJlYW0oXyl9dS5pbmhlcml0cyhkLHApLGQucHJvdG90eXBlLl9iaW5kU3RyZWFtPWZ1bmN0aW9uKHYpe3ZhciBfPXRoaXM7KHRoaXMu'@; put 'X3N0cmVhbT12KS5wYXVzZSgpLHYub24oImRhdGEiLGZ1bmN0aW9uKEEpe18ucHVzaCh7ZGF0YTpBLG1ldGE6e3BlcmNlbnQ6MH19KX0pLm9uKCJlcnJvciIsZnVuY3Rpb24oQSl7Xy5pc1BhdXNlZD90aGlzLmdlbmVyYXRlZEVycm9yPUE6Xy5lcnJvcihBKX0pLm9uKCJlbmQiLGZ1bmN0aW9u'@; put 'KCl7Xy5pc1BhdXNlZD9fLl91cHN0cmVhbUVuZGVkPSEwOl8uZW5kKCl9KX0sZC5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXAucHJvdG90eXBlLnBhdXNlLmNhbGwodGhpcykmJih0aGlzLl9zdHJlYW0ucGF1c2UoKSwhMCl9LGQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlv'@; put 'bigpe3JldHVybiEhcC5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJih0aGlzLl91cHN0cmVhbUVuZGVkP3RoaXMuZW5kKCk6dGhpcy5fc3RyZWFtLnJlc3VtZSgpLCEwKX0saC5leHBvcnRzPWR9LHsiLi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIiOjI4LCIuLi91dGlscyI6MzJ9XSwxMzpb'@; put 'ZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoInJlYWRhYmxlLXN0cmVhbSIpLlJlYWRhYmxlO2Z1bmN0aW9uIHAoZCx2LF8pe3UuY2FsbCh0aGlzLHYpLHRoaXMuX2hlbHBlcj1kO3ZhciBBPXRoaXM7ZC5vbigiZGF0YSIsZnVuY3Rpb24oSSxMKXtBLnB1c2goSSl8fEEuX2hlbHBlci5wYXVzZSgp'@; put 'LF8mJl8oTCl9KS5vbigiZXJyb3IiLGZ1bmN0aW9uKEkpe0EuZW1pdCgiZXJyb3IiLEkpfSkub24oImVuZCIsZnVuY3Rpb24oKXtBLnB1c2gobnVsbCl9KX1pKCIuLi91dGlscyIpLmluaGVyaXRzKHAsdSkscC5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oKXt0aGlzLl9oZWxwZXIucmVzdW1l'@; put 'KCl9LGguZXhwb3J0cz1wfSx7Ii4uL3V0aWxzIjozMiwicmVhZGFibGUtc3RyZWFtIjoxNn1dLDE0OltmdW5jdGlvbihpLGgsZil7aC5leHBvcnRzPXtpc05vZGU6dm9pZCAwIT09byxuZXdCdWZmZXJGcm9tOmZ1bmN0aW9uKHUscCl7aWYoby5mcm9tJiZvLmZyb20hPT1VaW50OEFycmF5LmZy'@; put 'b20pcmV0dXJuIG8uZnJvbSh1LHApO2lmKCJudW1iZXIiPT10eXBlb2YgdSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiZGF0YSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4gbmV3IG8odSxwKX0sYWxsb2NCdWZmZXI6ZnVuY3Rpb24odSl7aWYoby5hbGxvYylyZXR1cm4g'@; put 'by5hbGxvYyh1KTt2YXIgcD1uZXcgbyh1KTtyZXR1cm4gcC5maWxsKDApLHB9LGlzQnVmZmVyOmZ1bmN0aW9uKHUpe3JldHVybiBvLmlzQnVmZmVyKHUpfSxpc1N0cmVhbTpmdW5jdGlvbih1KXtyZXR1cm4gdSYmImZ1bmN0aW9uIj09dHlwZW9mIHUub24mJiJmdW5jdGlvbiI9PXR5cGVvZiB1'@; put 'LnBhdXNlJiYiZnVuY3Rpb24iPT10eXBlb2YgdS5yZXN1bWV9fX0se31dLDE1OltmdW5jdGlvbihpLGgsZil7ZnVuY3Rpb24gdShjLG0sZyl7dmFyIHkseix3PWQuZ2V0VHlwZU9mKG0pLGs9ZC5leHRlbmQoZ3x8e30sQSk7ay5kYXRlPWsuZGF0ZXx8bmV3IERhdGUsbnVsbCE9PWsuY29tcHJl'@; put 'c3Npb24mJihrLmNvbXByZXNzaW9uPWsuY29tcHJlc3Npb24udG9VcHBlckNhc2UoKSksInN0cmluZyI9PXR5cGVvZiBrLnVuaXhQZXJtaXNzaW9ucyYmKGsudW5peFBlcm1pc3Npb25zPXBhcnNlSW50KGsudW5peFBlcm1pc3Npb25zLDgpKSxrLnVuaXhQZXJtaXNzaW9ucyYmMTYzODQmay51'@; put 'bml4UGVybWlzc2lvbnMmJihrLmRpcj0hMCksay5kb3NQZXJtaXNzaW9ucyYmMTYmay5kb3NQZXJtaXNzaW9ucyYmKGsuZGlyPSEwKSxrLmRpciYmKGM9RChjKSksay5jcmVhdGVGb2xkZXJzJiYoeT0kKGMpKSYmeC5jYWxsKHRoaXMseSwhMCksZyYmdm9pZCAwIT09Zy5iaW5hcnl8fChrLmJp'@; put 'bmFyeT0hKCJzdHJpbmciPT09dyYmITE9PT1rLmJpbmFyeSYmITE9PT1rLmJhc2U2NCkpLChtIGluc3RhbmNlb2YgSSYmMD09PW0udW5jb21wcmVzc2VkU2l6ZXx8ay5kaXJ8fCFtfHwwPT09bS5sZW5ndGgpJiYoay5iYXNlNjQ9ITEsay5iaW5hcnk9ITAsbT0iIixrLmNvbXByZXNzaW9uPSJT'@; put 'VE9SRSIsdz0ic3RyaW5nIiksej1tIGluc3RhbmNlb2YgSXx8bSBpbnN0YW5jZW9mIHY/bTpQLmlzTm9kZSYmUC5pc1N0cmVhbShtKT9uZXcgQihjLG0pOmQucHJlcGFyZUNvbnRlbnQoYyxtLGsuYmluYXJ5LGsub3B0aW1pemVkQmluYXJ5U3RyaW5nLGsuYmFzZTY0KTt2YXIgVT1uZXcgTChj'@; put 'LHosayk7dGhpcy5maWxlc1tjXT1VfXZhciBwPWkoIi4vdXRmOCIpLGQ9aSgiLi91dGlscyIpLHY9aSgiLi9zdHJlYW0vR2VuZXJpY1dvcmtlciIpLF89aSgiLi9zdHJlYW0vU3RyZWFtSGVscGVyIiksQT1pKCIuL2RlZmF1bHRzIiksST1pKCIuL2NvbXByZXNzZWRPYmplY3QiKSxMPWkoIi4v'@; put 'emlwT2JqZWN0IiksTj1pKCIuL2dlbmVyYXRlIiksUD1pKCIuL25vZGVqc1V0aWxzIiksQj1pKCIuL25vZGVqcy9Ob2RlanNTdHJlYW1JbnB1dEFkYXB0ZXIiKSwkPWZ1bmN0aW9uKGMpeyIvIj09PWMuc2xpY2UoLTEpJiYoYz1jLnN1YnN0cmluZygwLGMubGVuZ3RoLTEpKTt2YXIgbT1jLmxh'@; put 'c3RJbmRleE9mKCIvIik7cmV0dXJuIDA8bT9jLnN1YnN0cmluZygwLG0pOiIifSxEPWZ1bmN0aW9uKGMpe3JldHVybiIvIiE9PWMuc2xpY2UoLTEpJiYoYys9Ii8iKSxjfSx4PWZ1bmN0aW9uKGMsbSl7cmV0dXJuIG09dm9pZCAwIT09bT9tOkEuY3JlYXRlRm9sZGVycyxjPUQoYyksdGhpcy5m'@; put 'aWxlc1tjXXx8dS5jYWxsKHRoaXMsYyxudWxsLHtkaXI6ITAsY3JlYXRlRm9sZGVyczptfSksdGhpcy5maWxlc1tjXX07ZnVuY3Rpb24gTShjKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKX12YXIgaj17bG9hZDpmdW5jdGlvbigp'@; put 'e3Rocm93IG5ldyBFcnJvcigiVGhpcyBtZXRob2QgaGFzIGJlZW4gcmVtb3ZlZCBpbiBKU1ppcCAzLjAsIHBsZWFzZSBjaGVjayB0aGUgdXBncmFkZSBndWlkZS4iKX0sZm9yRWFjaDpmdW5jdGlvbihjKXt2YXIgbSxnLHk7Zm9yKG0gaW4gdGhpcy5maWxlcyl5PXRoaXMuZmlsZXNbbV0sKGc9'@; put 'bS5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLG0ubGVuZ3RoKSkmJm0uc2xpY2UoMCx0aGlzLnJvb3QubGVuZ3RoKT09PXRoaXMucm9vdCYmYyhnLHkpfSxmaWx0ZXI6ZnVuY3Rpb24oYyl7dmFyIG09W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbihnLHkpe2MoZyx5KSYmbS5wdXNoKHkp'@; put 'fSksbX0sZmlsZTpmdW5jdGlvbihjLG0sZyl7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHUuY2FsbCh0aGlzLGM9dGhpcy5yb290K2MsbSxnKSx0aGlzO2lmKE0oYykpe3ZhciB5PWM7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGssTyl7cmV0dXJuIU8uZGlyJiZ5LnRlc3Qo'@; put 'ayl9KX12YXIgdz10aGlzLmZpbGVzW3RoaXMucm9vdCtjXTtyZXR1cm4gdyYmIXcuZGlyP3c6bnVsbH0sZm9sZGVyOmZ1bmN0aW9uKGMpe2lmKCFjKXJldHVybiB0aGlzO2lmKE0oYykpcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKHcsayl7cmV0dXJuIGsuZGlyJiZjLnRlc3Qodyl9KTt2'@; put 'YXIgZz14LmNhbGwodGhpcyx0aGlzLnJvb3QrYykseT10aGlzLmNsb25lKCk7cmV0dXJuIHkucm9vdD1nLm5hbWUseX0scmVtb3ZlOmZ1bmN0aW9uKGMpe3ZhciBtPXRoaXMuZmlsZXNbYz10aGlzLnJvb3QrY107aWYobXx8KCIvIiE9PWMuc2xpY2UoLTEpJiYoYys9Ii8iKSxtPXRoaXMuZmls'@; put 'ZXNbY10pLG0mJiFtLmRpcilkZWxldGUgdGhpcy5maWxlc1tjXTtlbHNlIGZvcih2YXIgZz10aGlzLmZpbHRlcihmdW5jdGlvbih3LGspe3JldHVybiBrLm5hbWUuc2xpY2UoMCxjLmxlbmd0aCk9PT1jfSkseT0wO3k8Zy5sZW5ndGg7eSsrKWRlbGV0ZSB0aGlzLmZpbGVzW2dbeV0ubmFtZV07'@; put 'cmV0dXJuIHRoaXN9LGdlbmVyYXRlOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBoYXMgYmVlbiByZW1vdmVkIGluIEpTWmlwIDMuMCwgcGxlYXNlIGNoZWNrIHRoZSB1cGdyYWRlIGd1aWRlLiIpfSxnZW5lcmF0ZUludGVybmFsU3RyZWFtOmZ1bmN0aW9uKGMpe3Zh'@; put 'ciBtLGc9e307dHJ5e2lmKChnPWQuZXh0ZW5kKGN8fHt9LHtzdHJlYW1GaWxlczohMSxjb21wcmVzc2lvbjoiU1RPUkUiLGNvbXByZXNzaW9uT3B0aW9uczpudWxsLHR5cGU6IiIscGxhdGZvcm06IkRPUyIsY29tbWVudDpudWxsLG1pbWVUeXBlOiJhcHBsaWNhdGlvbi96aXAiLGVuY29kZUZp'@; put 'bGVOYW1lOnAudXRmOGVuY29kZX0pKS50eXBlPWcudHlwZS50b0xvd2VyQ2FzZSgpLGcuY29tcHJlc3Npb249Zy5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpLCJiaW5hcnlzdHJpbmciPT09Zy50eXBlJiYoZy50eXBlPSJzdHJpbmciKSwhZy50eXBlKXRocm93IG5ldyBFcnJvcigiTm8gb3V0'@; put 'cHV0IHR5cGUgc3BlY2lmaWVkLiIpO2QuY2hlY2tTdXBwb3J0KGcudHlwZSksImRhcndpbiIhPT1nLnBsYXRmb3JtJiYiZnJlZWJzZCIhPT1nLnBsYXRmb3JtJiYibGludXgiIT09Zy5wbGF0Zm9ybSYmInN1bm9zIiE9PWcucGxhdGZvcm18fChnLnBsYXRmb3JtPSJVTklYIiksIndpbjMyIj09'@; put 'PWcucGxhdGZvcm0mJihnLnBsYXRmb3JtPSJET1MiKSxtPU4uZ2VuZXJhdGVXb3JrZXIodGhpcyxnLGcuY29tbWVudHx8dGhpcy5jb21tZW50fHwiIil9Y2F0Y2godyl7KG09bmV3IHYoImVycm9yIikpLmVycm9yKHcpfXJldHVybiBuZXcgXyhtLGcudHlwZXx8InN0cmluZyIsZy5taW1lVHlw'@; put 'ZSl9LGdlbmVyYXRlQXN5bmM6ZnVuY3Rpb24oYyxtKXtyZXR1cm4gdGhpcy5nZW5lcmF0ZUludGVybmFsU3RyZWFtKGMpLmFjY3VtdWxhdGUobSl9LGdlbmVyYXRlTm9kZVN0cmVhbTpmdW5jdGlvbihjLG0pe3JldHVybihjPWN8fHt9KS50eXBlfHwoYy50eXBlPSJub2RlYnVmZmVyIiksdGhp'@; put 'cy5nZW5lcmF0ZUludGVybmFsU3RyZWFtKGMpLnRvTm9kZWpzU3RyZWFtKG0pfX07aC5leHBvcnRzPWp9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL2RlZmF1bHRzIjo1LCIuL2dlbmVyYXRlIjo5LCIuL25vZGVqcy9Ob2RlanNTdHJlYW1JbnB1dEFkYXB0ZXIiOjEyLCIuL25vZGVqc1V0'@; put 'aWxzIjoxNCwiLi9zdHJlYW0vR2VuZXJpY1dvcmtlciI6MjgsIi4vc3RyZWFtL1N0cmVhbUhlbHBlciI6MjksIi4vdXRmOCI6MzEsIi4vdXRpbHMiOjMyLCIuL3ppcE9iamVjdCI6MzV9XSwxNjpbZnVuY3Rpb24oaSxoLGYpe2guZXhwb3J0cz1pKCJzdHJlYW0iKX0se3N0cmVhbTp2b2lkIDB9'@; put 'XSwxNzpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4vRGF0YVJlYWRlciIpO2Z1bmN0aW9uIHAoZCl7dS5jYWxsKHRoaXMsZCk7Zm9yKHZhciB2PTA7djx0aGlzLmRhdGEubGVuZ3RoO3YrKylkW3ZdPTI1NSZkW3ZdfWkoIi4uL3V0aWxzIikuaW5oZXJpdHMocCx1KSxwLnByb3RvdHlwZS5i'@; put 'eXRlQXQ9ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuZGF0YVt0aGlzLnplcm8rZF19LHAucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKGQpe2Zvcih2YXIgdj1kLmNoYXJDb2RlQXQoMCksXz1kLmNoYXJDb2RlQXQoMSksQT1kLmNoYXJDb2RlQXQoMiksST1kLmNoYXJD'@; put 'b2RlQXQoMyksTD10aGlzLmxlbmd0aC00OzA8PUw7LS1MKWlmKHRoaXMuZGF0YVtMXT09PXYmJnRoaXMuZGF0YVtMKzFdPT09XyYmdGhpcy5kYXRhW0wrMl09PT1BJiZ0aGlzLmRhdGFbTCszXT09PUkpcmV0dXJuIEwtdGhpcy56ZXJvO3JldHVybi0xfSxwLnByb3RvdHlwZS5yZWFkQW5kQ2hl'@; put 'Y2tTaWduYXR1cmU9ZnVuY3Rpb24oZCl7dmFyIHY9ZC5jaGFyQ29kZUF0KDApLF89ZC5jaGFyQ29kZUF0KDEpLEE9ZC5jaGFyQ29kZUF0KDIpLEk9ZC5jaGFyQ29kZUF0KDMpLEw9dGhpcy5yZWFkRGF0YSg0KTtyZXR1cm4gdj09PUxbMF0mJl89PT1MWzFdJiZBPT09TFsyXSYmST09PUxbM119'@; put 'LHAucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKGQpe2lmKHRoaXMuY2hlY2tPZmZzZXQoZCksMD09PWQpcmV0dXJuW107dmFyIHY9dGhpcy5kYXRhLnNsaWNlKHRoaXMuemVybyt0aGlzLmluZGV4LHRoaXMuemVybyt0aGlzLmluZGV4K2QpO3JldHVybiB0aGlzLmluZGV4Kz1kLHZ9LGgu'@; put 'ZXhwb3J0cz1wfSx7Ii4uL3V0aWxzIjozMiwiLi9EYXRhUmVhZGVyIjoxOH1dLDE4OltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi4vdXRpbHMiKTtmdW5jdGlvbiBwKGQpe3RoaXMuZGF0YT1kLHRoaXMubGVuZ3RoPWQubGVuZ3RoLHRoaXMuaW5kZXg9MCx0aGlzLnplcm89MH1wLnByb3Rv'@; put 'dHlwZT17Y2hlY2tPZmZzZXQ6ZnVuY3Rpb24oZCl7dGhpcy5jaGVja0luZGV4KHRoaXMuaW5kZXgrZCl9LGNoZWNrSW5kZXg6ZnVuY3Rpb24oZCl7aWYodGhpcy5sZW5ndGg8dGhpcy56ZXJvK2R8fGQ8MCl0aHJvdyBuZXcgRXJyb3IoIkVuZCBvZiBkYXRhIHJlYWNoZWQgKGRhdGEgbGVuZ3Ro'@; put 'ID0gIit0aGlzLmxlbmd0aCsiLCBhc2tlZCBpbmRleCA9ICIrZCsiKS4gQ29ycnVwdGVkIHppcCA/Iil9LHNldEluZGV4OmZ1bmN0aW9uKGQpe3RoaXMuY2hlY2tJbmRleChkKSx0aGlzLmluZGV4PWR9LHNraXA6ZnVuY3Rpb24oZCl7dGhpcy5zZXRJbmRleCh0aGlzLmluZGV4K2QpfSxieXRl'@; put 'QXQ6ZnVuY3Rpb24oKXt9LHJlYWRJbnQ6ZnVuY3Rpb24oZCl7dmFyIHYsXz0wO2Zvcih0aGlzLmNoZWNrT2Zmc2V0KGQpLHY9dGhpcy5pbmRleCtkLTE7dj49dGhpcy5pbmRleDt2LS0pXz0oXzw8OCkrdGhpcy5ieXRlQXQodik7cmV0dXJuIHRoaXMuaW5kZXgrPWQsX30scmVhZFN0cmluZzpm'@; put 'dW5jdGlvbihkKXtyZXR1cm4gdS50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnJlYWREYXRhKGQpKX0scmVhZERhdGE6ZnVuY3Rpb24oKXt9LGxhc3RJbmRleE9mU2lnbmF0dXJlOmZ1bmN0aW9uKCl7fSxyZWFkQW5kQ2hlY2tTaWduYXR1cmU6ZnVuY3Rpb24oKXt9LHJlYWREYXRlOmZ1bmN0'@; put 'aW9uKCl7dmFyIGQ9dGhpcy5yZWFkSW50KDQpO3JldHVybiBuZXcgRGF0ZShEYXRlLlVUQygxOTgwKyhkPj4yNSYxMjcpLChkPj4yMSYxNSktMSxkPj4xNiYzMSxkPj4xMSYzMSxkPj41JjYzLCgzMSZkKTw8MSkpfX0saC5leHBvcnRzPXB9LHsiLi4vdXRpbHMiOjMyfV0sMTk6W2Z1bmN0aW9u'@; put 'KGksaCxmKXt2YXIgdT1pKCIuL1VpbnQ4QXJyYXlSZWFkZXIiKTtmdW5jdGlvbiBwKGQpe3UuY2FsbCh0aGlzLGQpfWkoIi4uL3V0aWxzIikuaW5oZXJpdHMocCx1KSxwLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihkKXt0aGlzLmNoZWNrT2Zmc2V0KGQpO3ZhciB2PXRoaXMuZGF0YS5z'@; put 'bGljZSh0aGlzLnplcm8rdGhpcy5pbmRleCx0aGlzLnplcm8rdGhpcy5pbmRleCtkKTtyZXR1cm4gdGhpcy5pbmRleCs9ZCx2fSxoLmV4cG9ydHM9cH0seyIuLi91dGlscyI6MzIsIi4vVWludDhBcnJheVJlYWRlciI6MjF9XSwyMDpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4vRGF0YVJl'@; put 'YWRlciIpO2Z1bmN0aW9uIHAoZCl7dS5jYWxsKHRoaXMsZCl9aSgiLi4vdXRpbHMiKS5pbmhlcml0cyhwLHUpLHAucHJvdG90eXBlLmJ5dGVBdD1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy56ZXJvK2QpfSxwLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25h'@; put 'dHVyZT1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5kYXRhLmxhc3RJbmRleE9mKGQpLXRoaXMuemVyb30scC5wcm90b3R5cGUucmVhZEFuZENoZWNrU2lnbmF0dXJlPWZ1bmN0aW9uKGQpe3JldHVybiBkPT09dGhpcy5yZWFkRGF0YSg0KX0scC5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24o'@; put 'ZCl7dGhpcy5jaGVja09mZnNldChkKTt2YXIgdj10aGlzLmRhdGEuc2xpY2UodGhpcy56ZXJvK3RoaXMuaW5kZXgsdGhpcy56ZXJvK3RoaXMuaW5kZXgrZCk7cmV0dXJuIHRoaXMuaW5kZXgrPWQsdn0saC5leHBvcnRzPXB9LHsiLi4vdXRpbHMiOjMyLCIuL0RhdGFSZWFkZXIiOjE4fV0sMjE6'@; put 'W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCIuL0FycmF5UmVhZGVyIik7ZnVuY3Rpb24gcChkKXt1LmNhbGwodGhpcyxkKX1pKCIuLi91dGlscyIpLmluaGVyaXRzKHAsdSkscC5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oZCl7aWYodGhpcy5jaGVja09mZnNldChkKSwwPT09ZClyZXR1'@; put 'cm4gbmV3IFVpbnQ4QXJyYXkoMCk7dmFyIHY9dGhpcy5kYXRhLnN1YmFycmF5KHRoaXMuemVybyt0aGlzLmluZGV4LHRoaXMuemVybyt0aGlzLmluZGV4K2QpO3JldHVybiB0aGlzLmluZGV4Kz1kLHZ9LGguZXhwb3J0cz1wfSx7Ii4uL3V0aWxzIjozMiwiLi9BcnJheVJlYWRlciI6MTd9XSwy'@; put 'MjpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4uL3V0aWxzIikscD1pKCIuLi9zdXBwb3J0IiksZD1pKCIuL0FycmF5UmVhZGVyIiksdj1pKCIuL1N0cmluZ1JlYWRlciIpLF89aSgiLi9Ob2RlQnVmZmVyUmVhZGVyIiksQT1pKCIuL1VpbnQ4QXJyYXlSZWFkZXIiKTtoLmV4cG9ydHM9ZnVu'@; put 'Y3Rpb24oSSl7dmFyIEw9dS5nZXRUeXBlT2YoSSk7cmV0dXJuIHUuY2hlY2tTdXBwb3J0KEwpLCJzdHJpbmciIT09THx8cC51aW50OGFycmF5PyJub2RlYnVmZmVyIj09PUw/bmV3IF8oSSk6cC51aW50OGFycmF5P25ldyBBKHUudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLEkpKTpuZXcgZCh1'@; put 'LnRyYW5zZm9ybVRvKCJhcnJheSIsSSkpOm5ldyB2KEkpfX0seyIuLi9zdXBwb3J0IjozMCwiLi4vdXRpbHMiOjMyLCIuL0FycmF5UmVhZGVyIjoxNywiLi9Ob2RlQnVmZmVyUmVhZGVyIjoxOSwiLi9TdHJpbmdSZWFkZXIiOjIwLCIuL1VpbnQ4QXJyYXlSZWFkZXIiOjIxfV0sMjM6W2Z1bmN0'@; put 'aW9uKGksaCxmKXtmLkxPQ0FMX0ZJTEVfSEVBREVSPSJQS1x4MDNceDA0IixmLkNFTlRSQUxfRklMRV9IRUFERVI9IlBLXHgwMVx4MDIiLGYuQ0VOVFJBTF9ESVJFQ1RPUllfRU5EPSJQS1x4MDVceDA2IixmLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1I9IlBLXHgwNlx4MDciLGYu'@; put 'WklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EPSJQS1x4MDZceDA2IixmLkRBVEFfREVTQ1JJUFRPUj0iUEtceDA3XGIifSx7fV0sMjQ6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCIuL0dlbmVyaWNXb3JrZXIiKSxwPWkoIi4uL3V0aWxzIik7ZnVuY3Rpb24gZCh2KXt1LmNhbGwodGhpcywi'@; put 'Q29udmVydFdvcmtlciB0byAiK3YpLHRoaXMuZGVzdFR5cGU9dn1wLmluaGVyaXRzKGQsdSksZC5wcm90b3R5cGUucHJvY2Vzc0NodW5rPWZ1bmN0aW9uKHYpe3RoaXMucHVzaCh7ZGF0YTpwLnRyYW5zZm9ybVRvKHRoaXMuZGVzdFR5cGUsdi5kYXRhKSxtZXRhOnYubWV0YX0pfSxoLmV4cG9y'@; put 'dHM9ZH0seyIuLi91dGlscyI6MzIsIi4vR2VuZXJpY1dvcmtlciI6Mjh9XSwyNTpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4vR2VuZXJpY1dvcmtlciIpLHA9aSgiLi4vY3JjMzIiKTtmdW5jdGlvbiBkKCl7dS5jYWxsKHRoaXMsIkNyYzMyUHJvYmUiKSx0aGlzLndpdGhTdHJlYW1JbmZv'@; put 'KCJjcmMzMiIsMCl9aSgiLi4vdXRpbHMiKS5pbmhlcml0cyhkLHUpLGQucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbih2KXt0aGlzLnN0cmVhbUluZm8uY3JjMzI9cCh2LmRhdGEsdGhpcy5zdHJlYW1JbmZvLmNyYzMyfHwwKSx0aGlzLnB1c2godil9LGguZXhwb3J0cz1kfSx7Ii4u'@; put 'L2NyYzMyIjo0LCIuLi91dGlscyI6MzIsIi4vR2VuZXJpY1dvcmtlciI6Mjh9XSwyNjpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4uL3V0aWxzIikscD1pKCIuL0dlbmVyaWNXb3JrZXIiKTtmdW5jdGlvbiBkKHYpe3AuY2FsbCh0aGlzLCJEYXRhTGVuZ3RoUHJvYmUgZm9yICIrdiksdGhp'@; put 'cy5wcm9wTmFtZT12LHRoaXMud2l0aFN0cmVhbUluZm8odiwwKX11LmluaGVyaXRzKGQscCksZC5wcm90b3R5cGUucHJvY2Vzc0NodW5rPWZ1bmN0aW9uKHYpe3YmJih0aGlzLnN0cmVhbUluZm9bdGhpcy5wcm9wTmFtZV09KHRoaXMuc3RyZWFtSW5mb1t0aGlzLnByb3BOYW1lXXx8MCkrdi5k'@; put 'YXRhLmxlbmd0aCkscC5wcm90b3R5cGUucHJvY2Vzc0NodW5rLmNhbGwodGhpcyx2KX0saC5leHBvcnRzPWR9LHsiLi4vdXRpbHMiOjMyLCIuL0dlbmVyaWNXb3JrZXIiOjI4fV0sMjc6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCIuLi91dGlscyIpLHA9aSgiLi9HZW5lcmljV29ya2VyIik7'@; put 'ZnVuY3Rpb24gZCh2KXtwLmNhbGwodGhpcywiRGF0YVdvcmtlciIpO3ZhciBfPXRoaXM7dGhpcy5kYXRhSXNSZWFkeT0hMSx0aGlzLmluZGV4PTAsdGhpcy5tYXg9MCx0aGlzLmRhdGE9bnVsbCx0aGlzLnR5cGU9IiIsdGhpcy5fdGlja1NjaGVkdWxlZD0hMSx2LnRoZW4oZnVuY3Rpb24oQSl7'@; put 'Xy5kYXRhSXNSZWFkeT0hMCxfLmRhdGE9QSxfLm1heD1BJiZBLmxlbmd0aHx8MCxfLnR5cGU9dS5nZXRUeXBlT2YoQSksXy5pc1BhdXNlZHx8Xy5fdGlja0FuZFJlcGVhdCgpfSxmdW5jdGlvbihBKXtfLmVycm9yKEEpfSl9dS5pbmhlcml0cyhkLHApLGQucHJvdG90eXBlLmNsZWFuVXA9ZnVu'@; put 'Y3Rpb24oKXtwLnByb3RvdHlwZS5jbGVhblVwLmNhbGwodGhpcyksdGhpcy5kYXRhPW51bGx9LGQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiEhcC5wcm90b3R5cGUucmVzdW1lLmNhbGwodGhpcykmJighdGhpcy5fdGlja1NjaGVkdWxlZCYmdGhpcy5kYXRhSXNSZWFkeSYm'@; put 'KHRoaXMuX3RpY2tTY2hlZHVsZWQ9ITAsdS5kZWxheSh0aGlzLl90aWNrQW5kUmVwZWF0LFtdLHRoaXMpKSwhMCl9LGQucHJvdG90eXBlLl90aWNrQW5kUmVwZWF0PWZ1bmN0aW9uKCl7dGhpcy5fdGlja1NjaGVkdWxlZD0hMSx0aGlzLmlzUGF1c2VkfHx0aGlzLmlzRmluaXNoZWR8fCh0aGlz'@; put 'Ll90aWNrKCksdGhpcy5pc0ZpbmlzaGVkfHwodS5kZWxheSh0aGlzLl90aWNrQW5kUmVwZWF0LFtdLHRoaXMpLHRoaXMuX3RpY2tTY2hlZHVsZWQ9ITApKX0sZC5wcm90b3R5cGUuX3RpY2s9ZnVuY3Rpb24oKXtpZih0aGlzLmlzUGF1c2VkfHx0aGlzLmlzRmluaXNoZWQpcmV0dXJuITE7dmFy'@; put 'IHY9bnVsbCxfPU1hdGgubWluKHRoaXMubWF4LHRoaXMuaW5kZXgrMTYzODQpO2lmKHRoaXMuaW5kZXg+PXRoaXMubWF4KXJldHVybiB0aGlzLmVuZCgpO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2Uic3RyaW5nIjp2PXRoaXMuZGF0YS5zdWJzdHJpbmcodGhpcy5pbmRleCxfKTticmVhaztjYXNl'@; put 'InVpbnQ4YXJyYXkiOnY9dGhpcy5kYXRhLnN1YmFycmF5KHRoaXMuaW5kZXgsXyk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJub2RlYnVmZmVyIjp2PXRoaXMuZGF0YS5zbGljZSh0aGlzLmluZGV4LF8pfXJldHVybiB0aGlzLmluZGV4PV8sdGhpcy5wdXNoKHtkYXRhOnYsbWV0YTp7cGVyY2Vu'@; put 'dDp0aGlzLm1heD90aGlzLmluZGV4L3RoaXMubWF4KjEwMDowfX0pfSxoLmV4cG9ydHM9ZH0seyIuLi91dGlscyI6MzIsIi4vR2VuZXJpY1dvcmtlciI6Mjh9XSwyODpbZnVuY3Rpb24oaSxoLGYpe2Z1bmN0aW9uIHUocCl7dGhpcy5uYW1lPXB8fCJkZWZhdWx0Iix0aGlzLnN0cmVhbUluZm89'@; put 'e30sdGhpcy5nZW5lcmF0ZWRFcnJvcj1udWxsLHRoaXMuZXh0cmFTdHJlYW1JbmZvPXt9LHRoaXMuaXNQYXVzZWQ9ITAsdGhpcy5pc0ZpbmlzaGVkPSExLHRoaXMuaXNMb2NrZWQ9ITEsdGhpcy5fbGlzdGVuZXJzPXtkYXRhOltdLGVuZDpbXSxlcnJvcjpbXX0sdGhpcy5wcmV2aW91cz1udWxs'@; put 'fXUucHJvdG90eXBlPXtwdXNoOmZ1bmN0aW9uKHApe3RoaXMuZW1pdCgiZGF0YSIscCl9LGVuZDpmdW5jdGlvbigpe2lmKHRoaXMuaXNGaW5pc2hlZClyZXR1cm4hMTt0aGlzLmZsdXNoKCk7dHJ5e3RoaXMuZW1pdCgiZW5kIiksdGhpcy5jbGVhblVwKCksdGhpcy5pc0ZpbmlzaGVkPSEwfWNh'@; put 'dGNoKHApe3RoaXMuZW1pdCgiZXJyb3IiLHApfXJldHVybiEwfSxlcnJvcjpmdW5jdGlvbihwKXtyZXR1cm4hdGhpcy5pc0ZpbmlzaGVkJiYodGhpcy5pc1BhdXNlZD90aGlzLmdlbmVyYXRlZEVycm9yPXA6KHRoaXMuaXNGaW5pc2hlZD0hMCx0aGlzLmVtaXQoImVycm9yIixwKSx0aGlzLnBy'@; put 'ZXZpb3VzJiZ0aGlzLnByZXZpb3VzLmVycm9yKHApLHRoaXMuY2xlYW5VcCgpKSwhMCl9LG9uOmZ1bmN0aW9uKHAsZCl7cmV0dXJuIHRoaXMuX2xpc3RlbmVyc1twXS5wdXNoKGQpLHRoaXN9LGNsZWFuVXA6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbUluZm89dGhpcy5nZW5lcmF0ZWRFcnJvcj10'@; put 'aGlzLmV4dHJhU3RyZWFtSW5mbz1udWxsLHRoaXMuX2xpc3RlbmVycz1bXX0sZW1pdDpmdW5jdGlvbihwLGQpe2lmKHRoaXMuX2xpc3RlbmVyc1twXSlmb3IodmFyIHY9MDt2PHRoaXMuX2xpc3RlbmVyc1twXS5sZW5ndGg7disrKXRoaXMuX2xpc3RlbmVyc1twXVt2XS5jYWxsKHRoaXMsZCl9'@; put 'LHBpcGU6ZnVuY3Rpb24ocCl7cmV0dXJuIHAucmVnaXN0ZXJQcmV2aW91cyh0aGlzKX0scmVnaXN0ZXJQcmV2aW91czpmdW5jdGlvbihwKXtpZih0aGlzLmlzTG9ja2VkKXRocm93IG5ldyBFcnJvcigiVGhlIHN0cmVhbSAnIit0aGlzKyInIGhhcyBhbHJlYWR5IGJlZW4gdXNlZC4iKTt0aGlz'@; put 'LnN0cmVhbUluZm89cC5zdHJlYW1JbmZvLHRoaXMubWVyZ2VTdHJlYW1JbmZvKCksdGhpcy5wcmV2aW91cz1wO3ZhciBkPXRoaXM7cmV0dXJuIHAub24oImRhdGEiLGZ1bmN0aW9uKHYpe2QucHJvY2Vzc0NodW5rKHYpfSkscC5vbigiZW5kIixmdW5jdGlvbigpe2QuZW5kKCl9KSxwLm9uKCJl'@; put 'cnJvciIsZnVuY3Rpb24odil7ZC5lcnJvcih2KX0pLHRoaXN9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNQYXVzZWQmJiF0aGlzLmlzRmluaXNoZWQmJih0aGlzLmlzUGF1c2VkPSEwLHRoaXMucHJldmlvdXMmJnRoaXMucHJldmlvdXMucGF1c2UoKSwhMCl9LHJlc3VtZTpmdW5j'@; put 'dGlvbigpe2lmKCF0aGlzLmlzUGF1c2VkfHx0aGlzLmlzRmluaXNoZWQpcmV0dXJuITE7dmFyIHA9dGhpcy5pc1BhdXNlZD0hMTtyZXR1cm4gdGhpcy5nZW5lcmF0ZWRFcnJvciYmKHRoaXMuZXJyb3IodGhpcy5nZW5lcmF0ZWRFcnJvcikscD0hMCksdGhpcy5wcmV2aW91cyYmdGhpcy5wcmV2'@; put 'aW91cy5yZXN1bWUoKSwhcH0sZmx1c2g6ZnVuY3Rpb24oKXt9LHByb2Nlc3NDaHVuazpmdW5jdGlvbihwKXt0aGlzLnB1c2gocCl9LHdpdGhTdHJlYW1JbmZvOmZ1bmN0aW9uKHAsZCl7cmV0dXJuIHRoaXMuZXh0cmFTdHJlYW1JbmZvW3BdPWQsdGhpcy5tZXJnZVN0cmVhbUluZm8oKSx0aGlz'@; put 'fSxtZXJnZVN0cmVhbUluZm86ZnVuY3Rpb24oKXtmb3IodmFyIHAgaW4gdGhpcy5leHRyYVN0cmVhbUluZm8pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZXh0cmFTdHJlYW1JbmZvLHApJiYodGhpcy5zdHJlYW1JbmZvW3BdPXRoaXMuZXh0cmFTdHJlYW1JbmZv'@; put 'W3BdKX0sbG9jazpmdW5jdGlvbigpe2lmKHRoaXMuaXNMb2NrZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgc3RyZWFtICciK3RoaXMrIicgaGFzIGFscmVhZHkgYmVlbiB1c2VkLiIpO3RoaXMuaXNMb2NrZWQ9ITAsdGhpcy5wcmV2aW91cyYmdGhpcy5wcmV2aW91cy5sb2NrKCl9LHRvU3RyaW5n'@; put 'OmZ1bmN0aW9uKCl7dmFyIHA9IldvcmtlciAiK3RoaXMubmFtZTtyZXR1cm4gdGhpcy5wcmV2aW91cz90aGlzLnByZXZpb3VzKyIgLT4gIitwOnB9fSxoLmV4cG9ydHM9dX0se31dLDI5OltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi4vdXRpbHMiKSxwPWkoIi4vQ29udmVydFdvcmtlciIp'@; put 'LGQ9aSgiLi9HZW5lcmljV29ya2VyIiksdj1pKCIuLi9iYXNlNjQiKSxfPWkoIi4uL3N1cHBvcnQiKSxBPWkoIi4uL2V4dGVybmFsIiksST1udWxsO2lmKF8ubm9kZXN0cmVhbSl0cnl7ST1pKCIuLi9ub2RlanMvTm9kZWpzU3RyZWFtT3V0cHV0QWRhcHRlciIpfWNhdGNoe31mdW5jdGlvbiBM'@; put 'KE4sUCxCKXt2YXIgJD1QO3N3aXRjaChQKXtjYXNlImJsb2IiOmNhc2UiYXJyYXlidWZmZXIiOiQ9InVpbnQ4YXJyYXkiO2JyZWFrO2Nhc2UiYmFzZTY0IjokPSJzdHJpbmcifXRyeXt0aGlzLl9pbnRlcm5hbFR5cGU9JCx0aGlzLl9vdXRwdXRUeXBlPVAsdGhpcy5fbWltZVR5cGU9Qix1LmNo'@; put 'ZWNrU3VwcG9ydCgkKSx0aGlzLl93b3JrZXI9Ti5waXBlKG5ldyBwKCQpKSxOLmxvY2soKX1jYXRjaChEKXt0aGlzLl93b3JrZXI9bmV3IGQoImVycm9yIiksdGhpcy5fd29ya2VyLmVycm9yKEQpfX1MLnByb3RvdHlwZT17YWNjdW11bGF0ZTpmdW5jdGlvbihOKXtyZXR1cm4gUD10aGlzLEI9'@; put 'TixuZXcgQS5Qcm9taXNlKGZ1bmN0aW9uKCQsRCl7dmFyIHg9W10sTT1QLl9pbnRlcm5hbFR5cGUsaj1QLl9vdXRwdXRUeXBlLGM9UC5fbWltZVR5cGU7UC5vbigiZGF0YSIsZnVuY3Rpb24obSxnKXt4LnB1c2gobSksQiYmQihnKX0pLm9uKCJlcnJvciIsZnVuY3Rpb24obSl7eD1bXSxEKG0p'@; put 'fSkub24oImVuZCIsZnVuY3Rpb24oKXt0cnl7dmFyIG09ZnVuY3Rpb24oZyx5LHcpe3N3aXRjaChnKXtjYXNlImJsb2IiOnJldHVybiB1Lm5ld0Jsb2IodS50cmFuc2Zvcm1UbygiYXJyYXlidWZmZXIiLHkpLHcpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gdi5lbmNvZGUoeSk7ZGVmYXVsdDpyZXR1'@; put 'cm4gdS50cmFuc2Zvcm1UbyhnLHkpfX0oaixmdW5jdGlvbihnLHkpe3ZhciB3LGs9MCxPPW51bGwsej0wO2Zvcih3PTA7dzx5Lmxlbmd0aDt3Kyspeis9eVt3XS5sZW5ndGg7c3dpdGNoKGcpe2Nhc2Uic3RyaW5nIjpyZXR1cm4geS5qb2luKCIiKTtjYXNlImFycmF5IjpyZXR1cm4gQXJyYXku'@; put 'cHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx5KTtjYXNlInVpbnQ4YXJyYXkiOmZvcihPPW5ldyBVaW50OEFycmF5KHopLHc9MDt3PHkubGVuZ3RoO3crKylPLnNldCh5W3ddLGspLGsrPXlbd10ubGVuZ3RoO3JldHVybiBPO2Nhc2Uibm9kZWJ1ZmZlciI6cmV0dXJuIG8uY29uY2F0KHkpO2Rl'@; put 'ZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJjb25jYXQgOiB1bnN1cHBvcnRlZCB0eXBlICciK2crIiciKX19KE0seCksYyk7JChtKX1jYXRjaChnKXtEKGcpfXg9W119KS5yZXN1bWUoKX0pO3ZhciBQLEJ9LG9uOmZ1bmN0aW9uKE4sUCl7dmFyIEI9dGhpcztyZXR1cm4gdGhpcy5fd29ya2VyLm9u'@; put 'KE4sImRhdGEiPT09Tj9mdW5jdGlvbigkKXtQLmNhbGwoQiwkLmRhdGEsJC5tZXRhKX06ZnVuY3Rpb24oKXt1LmRlbGF5KFAsYXJndW1lbnRzLEIpfSksdGhpc30scmVzdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHUuZGVsYXkodGhpcy5fd29ya2VyLnJlc3VtZSxbXSx0aGlzLl93b3JrZXIpLHRo'@; put 'aXN9LHBhdXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvcmtlci5wYXVzZSgpLHRoaXN9LHRvTm9kZWpzU3RyZWFtOmZ1bmN0aW9uKE4pe2lmKHUuY2hlY2tTdXBwb3J0KCJub2Rlc3RyZWFtIiksIm5vZGVidWZmZXIiIT09dGhpcy5fb3V0cHV0VHlwZSl0aHJvdyBuZXcgRXJyb3IodGhp'@; put 'cy5fb3V0cHV0VHlwZSsiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBtZXRob2QiKTtyZXR1cm4gbmV3IEkodGhpcyx7b2JqZWN0TW9kZToibm9kZWJ1ZmZlciIhPT10aGlzLl9vdXRwdXRUeXBlfSxOKX19LGguZXhwb3J0cz1MfSx7Ii4uL2Jhc2U2NCI6MSwiLi4vZXh0ZXJuYWwiOjYsIi4u'@; put 'L25vZGVqcy9Ob2RlanNTdHJlYW1PdXRwdXRBZGFwdGVyIjoxMywiLi4vc3VwcG9ydCI6MzAsIi4uL3V0aWxzIjozMiwiLi9Db252ZXJ0V29ya2VyIjoyNCwiLi9HZW5lcmljV29ya2VyIjoyOH1dLDMwOltmdW5jdGlvbihpLGgsZil7aWYoZi5iYXNlNjQ9ITAsZi5hcnJheT0hMCxmLnN0cmlu'@; put 'Zz0hMCxmLmFycmF5YnVmZmVyPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJnR5cGVvZiBVaW50OEFycmF5PCJ1IixmLm5vZGVidWZmZXI9dm9pZCAwIT09byxmLnVpbnQ4YXJyYXk9dHlwZW9mIFVpbnQ4QXJyYXk8InUiLHR5cGVvZiBBcnJheUJ1ZmZlcj4idSIpZi5ibG9iPSExO2Vsc2V7dmFy'@; put 'IHU9bmV3IEFycmF5QnVmZmVyKDApO3RyeXtmLmJsb2I9MD09PW5ldyBCbG9iKFt1XSx7dHlwZToiYXBwbGljYXRpb24vemlwIn0pLnNpemV9Y2F0Y2h7dHJ5e3ZhciBwPW5ldyhzZWxmLkJsb2JCdWlsZGVyfHxzZWxmLldlYktpdEJsb2JCdWlsZGVyfHxzZWxmLk1vekJsb2JCdWlsZGVyfHxz'@; put 'ZWxmLk1TQmxvYkJ1aWxkZXIpO3AuYXBwZW5kKHUpLGYuYmxvYj0wPT09cC5nZXRCbG9iKCJhcHBsaWNhdGlvbi96aXAiKS5zaXplfWNhdGNoe2YuYmxvYj0hMX19fXRyeXtmLm5vZGVzdHJlYW09ISFpKCJyZWFkYWJsZS1zdHJlYW0iKS5SZWFkYWJsZX1jYXRjaHtmLm5vZGVzdHJlYW09ITF9'@; put 'fSx7InJlYWRhYmxlLXN0cmVhbSI6MTZ9XSwzMTpbZnVuY3Rpb24oaSxoLGYpe2Zvcih2YXIgdT1pKCIuL3V0aWxzIikscD1pKCIuL3N1cHBvcnQiKSxkPWkoIi4vbm9kZWpzVXRpbHMiKSx2PWkoIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIiKSxfPW5ldyBBcnJheSgyNTYpLEE9MDtBPDI1NjtB'@; put 'KyspX1tBXT0yNTI8PUE/NjoyNDg8PUE/NToyNDA8PUE/NDoyMjQ8PUE/MzoxOTI8PUE/MjoxO2Z1bmN0aW9uIEkoKXt2LmNhbGwodGhpcywidXRmLTggZGVjb2RlIiksdGhpcy5sZWZ0T3Zlcj1udWxsfWZ1bmN0aW9uIEwoKXt2LmNhbGwodGhpcywidXRmLTggZW5jb2RlIil9X1syNTRdPV9b'@; put 'MjU0XT0xLGYudXRmOGVuY29kZT1mdW5jdGlvbihOKXtyZXR1cm4gcC5ub2RlYnVmZmVyP2QubmV3QnVmZmVyRnJvbShOLCJ1dGYtOCIpOmZ1bmN0aW9uKFApe3ZhciBCLCQsRCx4LE0saj1QLmxlbmd0aCxjPTA7Zm9yKHg9MDt4PGo7eCsrKTU1Mjk2PT0oNjQ1MTImKCQ9UC5jaGFyQ29kZUF0'@; put 'KHgpKSkmJngrMTxqJiY1NjMyMD09KDY0NTEyJihEPVAuY2hhckNvZGVBdCh4KzEpKSkmJigkPTY1NTM2KygkLTU1Mjk2PDwxMCkrKEQtNTYzMjApLHgrKyksYys9JDwxMjg/MTokPDIwNDg/MjokPDY1NTM2PzM6NDtmb3IoQj1wLnVpbnQ4YXJyYXk/bmV3IFVpbnQ4QXJyYXkoYyk6bmV3IEFy'@; put 'cmF5KGMpLHg9TT0wO008Yzt4KyspNTUyOTY9PSg2NDUxMiYoJD1QLmNoYXJDb2RlQXQoeCkpKSYmeCsxPGomJjU2MzIwPT0oNjQ1MTImKEQ9UC5jaGFyQ29kZUF0KHgrMSkpKSYmKCQ9NjU1MzYrKCQtNTUyOTY8PDEwKSsoRC01NjMyMCkseCsrKSwkPDEyOD9CW00rK109JDooJDwyMDQ4P0Jb'@; put 'TSsrXT0xOTJ8JD4+PjY6KCQ8NjU1MzY/QltNKytdPTIyNHwkPj4+MTI6KEJbTSsrXT0yNDB8JD4+PjE4LEJbTSsrXT0xMjh8JD4+PjEyJjYzKSxCW00rK109MTI4fCQ+Pj42JjYzKSxCW00rK109MTI4fDYzJiQpO3JldHVybiBCfShOKX0sZi51dGY4ZGVjb2RlPWZ1bmN0aW9uKE4pe3JldHVy'@; put 'biBwLm5vZGVidWZmZXI/dS50cmFuc2Zvcm1Ubygibm9kZWJ1ZmZlciIsTikudG9TdHJpbmcoInV0Zi04Iik6ZnVuY3Rpb24oUCl7dmFyIEIsJCxELHgsTT1QLmxlbmd0aCxqPW5ldyBBcnJheSgyKk0pO2ZvcihCPSQ9MDtCPE07KWlmKChEPVBbQisrXSk8MTI4KWpbJCsrXT1EO2Vsc2UgaWYo'@; put 'NDwoeD1fW0RdKSlqWyQrK109NjU1MzMsQis9eC0xO2Vsc2V7Zm9yKEQmPTI9PT14PzMxOjM9PT14PzE1Ojc7MTx4JiZCPE07KUQ9RDw8Nnw2MyZQW0IrK10seC0tOzE8eD9qWyQrK109NjU1MzM6RDw2NTUzNj9qWyQrK109RDooalskKytdPTU1Mjk2fChELT02NTUzNik+PjEwJjEwMjMsalsk'@; put 'KytdPTU2MzIwfDEwMjMmRCl9cmV0dXJuIGoubGVuZ3RoIT09JCYmKGouc3ViYXJyYXk/aj1qLnN1YmFycmF5KDAsJCk6ai5sZW5ndGg9JCksdS5hcHBseUZyb21DaGFyQ29kZShqKX0oTj11LnRyYW5zZm9ybVRvKHAudWludDhhcnJheT8idWludDhhcnJheSI6ImFycmF5IixOKSl9LHUuaW5o'@; put 'ZXJpdHMoSSx2KSxJLnByb3RvdHlwZS5wcm9jZXNzQ2h1bms9ZnVuY3Rpb24oTil7dmFyIFA9dS50cmFuc2Zvcm1UbyhwLnVpbnQ4YXJyYXk/InVpbnQ4YXJyYXkiOiJhcnJheSIsTi5kYXRhKTtpZih0aGlzLmxlZnRPdmVyJiZ0aGlzLmxlZnRPdmVyLmxlbmd0aCl7aWYocC51aW50OGFycmF5'@; put 'KXt2YXIgQj1QOyhQPW5ldyBVaW50OEFycmF5KEIubGVuZ3RoK3RoaXMubGVmdE92ZXIubGVuZ3RoKSkuc2V0KHRoaXMubGVmdE92ZXIsMCksUC5zZXQoQix0aGlzLmxlZnRPdmVyLmxlbmd0aCl9ZWxzZSBQPXRoaXMubGVmdE92ZXIuY29uY2F0KFApO3RoaXMubGVmdE92ZXI9bnVsbH12YXIg'@; put 'JD1mdW5jdGlvbih4LE0pe3ZhciBqO2ZvcigoTT1NfHx4Lmxlbmd0aCk+eC5sZW5ndGgmJihNPXgubGVuZ3RoKSxqPU0tMTswPD1qJiYxMjg9PSgxOTImeFtqXSk7KWotLTtyZXR1cm4gajwwfHwwPT09aj9NOmorX1t4W2pdXT5NP2o6TX0oUCksRD1QOyQhPT1QLmxlbmd0aCYmKHAudWludDhh'@; put 'cnJheT8oRD1QLnN1YmFycmF5KDAsJCksdGhpcy5sZWZ0T3Zlcj1QLnN1YmFycmF5KCQsUC5sZW5ndGgpKTooRD1QLnNsaWNlKDAsJCksdGhpcy5sZWZ0T3Zlcj1QLnNsaWNlKCQsUC5sZW5ndGgpKSksdGhpcy5wdXNoKHtkYXRhOmYudXRmOGRlY29kZShEKSxtZXRhOk4ubWV0YX0pfSxJLnBy'@; put 'b3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe3RoaXMubGVmdE92ZXImJnRoaXMubGVmdE92ZXIubGVuZ3RoJiYodGhpcy5wdXNoKHtkYXRhOmYudXRmOGRlY29kZSh0aGlzLmxlZnRPdmVyKSxtZXRhOnt9fSksdGhpcy5sZWZ0T3Zlcj1udWxsKX0sZi5VdGY4RGVjb2RlV29ya2VyPUksdS5pbmhl'@; put 'cml0cyhMLHYpLEwucHJvdG90eXBlLnByb2Nlc3NDaHVuaz1mdW5jdGlvbihOKXt0aGlzLnB1c2goe2RhdGE6Zi51dGY4ZW5jb2RlKE4uZGF0YSksbWV0YTpOLm1ldGF9KX0sZi5VdGY4RW5jb2RlV29ya2VyPUx9LHsiLi9ub2RlanNVdGlscyI6MTQsIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIi'@; put 'OjI4LCIuL3N1cHBvcnQiOjMwLCIuL3V0aWxzIjozMn1dLDMyOltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi9zdXBwb3J0IikscD1pKCIuL2Jhc2U2NCIpLGQ9aSgiLi9ub2RlanNVdGlscyIpLHY9aSgiLi9leHRlcm5hbCIpO2Z1bmN0aW9uIF8oQil7cmV0dXJuIEJ9ZnVuY3Rpb24gQShC'@; put 'LCQpe2Zvcih2YXIgRD0wO0Q8Qi5sZW5ndGg7KytEKSRbRF09MjU1JkIuY2hhckNvZGVBdChEKTtyZXR1cm4gJH1pKCJzZXRpbW1lZGlhdGUiKSxmLm5ld0Jsb2I9ZnVuY3Rpb24oQiwkKXtmLmNoZWNrU3VwcG9ydCgiYmxvYiIpO3RyeXtyZXR1cm4gbmV3IEJsb2IoW0JdLHt0eXBlOiR9KX1j'@; put 'YXRjaHt0cnl7dmFyIEQ9bmV3KHNlbGYuQmxvYkJ1aWxkZXJ8fHNlbGYuV2ViS2l0QmxvYkJ1aWxkZXJ8fHNlbGYuTW96QmxvYkJ1aWxkZXJ8fHNlbGYuTVNCbG9iQnVpbGRlcik7cmV0dXJuIEQuYXBwZW5kKEIpLEQuZ2V0QmxvYigkKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IGNh'@; put 'bid0IGNvbnN0cnVjdCB0aGUgQmxvYi4iKX19fTt2YXIgST17c3RyaW5naWZ5QnlDaHVuazpmdW5jdGlvbihCLCQsRCl7dmFyIHg9W10sTT0wLGo9Qi5sZW5ndGg7aWYoajw9RClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLEIpO2Zvcig7TTxqOyl4LnB1c2goU3RyaW5n'@; put 'LmZyb21DaGFyQ29kZS5hcHBseShudWxsLCJhcnJheSI9PT0kfHwibm9kZWJ1ZmZlciI9PT0kP0Iuc2xpY2UoTSxNYXRoLm1pbihNK0QsaikpOkIuc3ViYXJyYXkoTSxNYXRoLm1pbihNK0QsaikpKSksTSs9RDtyZXR1cm4geC5qb2luKCIiKX0sc3RyaW5naWZ5QnlDaGFyOmZ1bmN0aW9uKEIp'@; put 'e2Zvcih2YXIgJD0iIixEPTA7RDxCLmxlbmd0aDtEKyspJCs9U3RyaW5nLmZyb21DaGFyQ29kZShCW0RdKTtyZXR1cm4gJH0sYXBwbHlDYW5CZVVzZWQ6e3VpbnQ4YXJyYXk6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHUudWludDhhcnJheSYmMT09PVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHko'@; put 'bnVsbCxuZXcgVWludDhBcnJheSgxKSkubGVuZ3RofWNhdGNoe3JldHVybiExfX0oKSxub2RlYnVmZmVyOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB1Lm5vZGVidWZmZXImJjE9PT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZC5hbGxvY0J1ZmZlcigxKSkubGVuZ3RofWNhdGNoe3Jl'@; put 'dHVybiExfX0oKX19O2Z1bmN0aW9uIEwoQil7dmFyICQ9NjU1MzYsRD1mLmdldFR5cGVPZihCKSx4PSEwO2lmKCJ1aW50OGFycmF5Ij09PUQ/eD1JLmFwcGx5Q2FuQmVVc2VkLnVpbnQ4YXJyYXk6Im5vZGVidWZmZXIiPT09RCYmKHg9SS5hcHBseUNhbkJlVXNlZC5ub2RlYnVmZmVyKSx4KWZv'@; put 'cig7MTwkOyl0cnl7cmV0dXJuIEkuc3RyaW5naWZ5QnlDaHVuayhCLEQsJCl9Y2F0Y2h7JD1NYXRoLmZsb29yKCQvMil9cmV0dXJuIEkuc3RyaW5naWZ5QnlDaGFyKEIpfWZ1bmN0aW9uIE4oQiwkKXtmb3IodmFyIEQ9MDtEPEIubGVuZ3RoO0QrKykkW0RdPUJbRF07cmV0dXJuICR9Zi5hcHBs'@; put 'eUZyb21DaGFyQ29kZT1MO3ZhciBQPXt9O1Auc3RyaW5nPXtzdHJpbmc6XyxhcnJheTpmdW5jdGlvbihCKXtyZXR1cm4gQShCLG5ldyBBcnJheShCLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihCKXtyZXR1cm4gUC5zdHJpbmcudWludDhhcnJheShCKS5idWZmZXJ9LHVpbnQ4YXJy'@; put 'YXk6ZnVuY3Rpb24oQil7cmV0dXJuIEEoQixuZXcgVWludDhBcnJheShCLmxlbmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKEIpe3JldHVybiBBKEIsZC5hbGxvY0J1ZmZlcihCLmxlbmd0aCkpfX0sUC5hcnJheT17c3RyaW5nOkwsYXJyYXk6XyxhcnJheWJ1ZmZlcjpmdW5jdGlvbihCKXty'@; put 'ZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQikuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKEIpe3JldHVybiBuZXcgVWludDhBcnJheShCKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihCKXtyZXR1cm4gZC5uZXdCdWZmZXJGcm9tKEIpfX0sUC5hcnJheWJ1ZmZlcj17c3RyaW5nOmZ1bmN0aW9uKEIp'@; put 'e3JldHVybiBMKG5ldyBVaW50OEFycmF5KEIpKX0sYXJyYXk6ZnVuY3Rpb24oQil7cmV0dXJuIE4obmV3IFVpbnQ4QXJyYXkoQiksbmV3IEFycmF5KEIuYnl0ZUxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpfLHVpbnQ4YXJyYXk6ZnVuY3Rpb24oQil7cmV0dXJuIG5ldyBVaW50OEFycmF5KEIpfSxu'@; put 'b2RlYnVmZmVyOmZ1bmN0aW9uKEIpe3JldHVybiBkLm5ld0J1ZmZlckZyb20obmV3IFVpbnQ4QXJyYXkoQikpfX0sUC51aW50OGFycmF5PXtzdHJpbmc6TCxhcnJheTpmdW5jdGlvbihCKXtyZXR1cm4gTihCLG5ldyBBcnJheShCLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihCKXty'@; put 'ZXR1cm4gQi5idWZmZXJ9LHVpbnQ4YXJyYXk6Xyxub2RlYnVmZmVyOmZ1bmN0aW9uKEIpe3JldHVybiBkLm5ld0J1ZmZlckZyb20oQil9fSxQLm5vZGVidWZmZXI9e3N0cmluZzpMLGFycmF5OmZ1bmN0aW9uKEIpe3JldHVybiBOKEIsbmV3IEFycmF5KEIubGVuZ3RoKSl9LGFycmF5YnVmZmVy'@; put 'OmZ1bmN0aW9uKEIpe3JldHVybiBQLm5vZGVidWZmZXIudWludDhhcnJheShCKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oQil7cmV0dXJuIE4oQixuZXcgVWludDhBcnJheShCLmxlbmd0aCkpfSxub2RlYnVmZmVyOl99LGYudHJhbnNmb3JtVG89ZnVuY3Rpb24oQiwkKXtpZigkPSR8'@; put 'fCIiLCFCKXJldHVybiAkO2YuY2hlY2tTdXBwb3J0KEIpO3ZhciBEPWYuZ2V0VHlwZU9mKCQpO3JldHVybiBQW0RdW0JdKCQpfSxmLnJlc29sdmU9ZnVuY3Rpb24oQil7Zm9yKHZhciAkPUIuc3BsaXQoIi8iKSxEPVtdLHg9MDt4PCQubGVuZ3RoO3grKyl7dmFyIE09JFt4XTsiLiI9PT1NfHwi'@; put 'Ij09PU0mJjAhPT14JiZ4IT09JC5sZW5ndGgtMXx8KCIuLiI9PT1NP0QucG9wKCk6RC5wdXNoKE0pKX1yZXR1cm4gRC5qb2luKCIvIil9LGYuZ2V0VHlwZU9mPWZ1bmN0aW9uKEIpe3JldHVybiJzdHJpbmciPT10eXBlb2YgQj8ic3RyaW5nIjoiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnBy'@; put 'b3RvdHlwZS50b1N0cmluZy5jYWxsKEIpPyJhcnJheSI6dS5ub2RlYnVmZmVyJiZkLmlzQnVmZmVyKEIpPyJub2RlYnVmZmVyIjp1LnVpbnQ4YXJyYXkmJkIgaW5zdGFuY2VvZiBVaW50OEFycmF5PyJ1aW50OGFycmF5Ijp1LmFycmF5YnVmZmVyJiZCIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/'@; put 'ImFycmF5YnVmZmVyIjp2b2lkIDB9LGYuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKEIpe2lmKCF1W0IudG9Mb3dlckNhc2UoKV0pdGhyb3cgbmV3IEVycm9yKEIrIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm0iKX0sZi5NQVhfVkFMVUVfMTZCSVRTPTY1NTM1LGYuTUFYX1ZBTFVF'@; put 'XzMyQklUUz0tMSxmLnByZXR0eT1mdW5jdGlvbihCKXt2YXIgJCxELHg9IiI7Zm9yKEQ9MDtEPChCfHwiIikubGVuZ3RoO0QrKyl4Kz0iXFx4IisoKCQ9Qi5jaGFyQ29kZUF0KEQpKTwxNj8iMCI6IiIpKyQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIHh9LGYuZGVsYXk9ZnVu'@; put 'Y3Rpb24oQiwkLEQpe24oZnVuY3Rpb24oKXtCLmFwcGx5KER8fG51bGwsJHx8W10pfSl9LGYuaW5oZXJpdHM9ZnVuY3Rpb24oQiwkKXtmdW5jdGlvbiBEKCl7fUQucHJvdG90eXBlPSQucHJvdG90eXBlLEIucHJvdG90eXBlPW5ldyBEfSxmLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBCLCQsRD17'@; put 'fTtmb3IoQj0wO0I8YXJndW1lbnRzLmxlbmd0aDtCKyspZm9yKCQgaW4gYXJndW1lbnRzW0JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbQl0sJCkmJnZvaWQgMD09PURbJF0mJihEWyRdPWFyZ3VtZW50c1tCXVskXSk7cmV0dXJuIER9LGYucHJlcGFy'@; put 'ZUNvbnRlbnQ9ZnVuY3Rpb24oQiwkLEQseCxNKXtyZXR1cm4gdi5Qcm9taXNlLnJlc29sdmUoJCkudGhlbihmdW5jdGlvbihqKXtyZXR1cm4gdS5ibG9iJiYoaiBpbnN0YW5jZW9mIEJsb2J8fC0xIT09WyJbb2JqZWN0IEZpbGVdIiwiW29iamVjdCBCbG9iXSJdLmluZGV4T2YoT2JqZWN0LnBy'@; put 'b3RvdHlwZS50b1N0cmluZy5jYWxsKGopKSkmJnR5cGVvZiBGaWxlUmVhZGVyPCJ1Ij9uZXcgdi5Qcm9taXNlKGZ1bmN0aW9uKGMsbSl7dmFyIGc9bmV3IEZpbGVSZWFkZXI7Zy5vbmxvYWQ9ZnVuY3Rpb24oeSl7Yyh5LnRhcmdldC5yZXN1bHQpfSxnLm9uZXJyb3I9ZnVuY3Rpb24oeSl7bSh5'@; put 'LnRhcmdldC5lcnJvcil9LGcucmVhZEFzQXJyYXlCdWZmZXIoail9KTpqfSkudGhlbihmdW5jdGlvbihqKXt2YXIgbSxjPWYuZ2V0VHlwZU9mKGopO3JldHVybiBjPygiYXJyYXlidWZmZXIiPT09Yz9qPWYudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLGopOiJzdHJpbmciPT09YyYmKE0/aj1w'@; put 'LmRlY29kZShqKTpEJiYhMCE9PXgmJihqPUEobT1qLHUudWludDhhcnJheT9uZXcgVWludDhBcnJheShtLmxlbmd0aCk6bmV3IEFycmF5KG0ubGVuZ3RoKSkpKSxqKTp2LlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiQ2FuJ3QgcmVhZCB0aGUgZGF0YSBvZiAnIitCKyInLiBJcyBpdCBpbiBh'@; put 'IHN1cHBvcnRlZCBKYXZhU2NyaXB0IHR5cGUgKFN0cmluZywgQmxvYiwgQXJyYXlCdWZmZXIsIGV0YykgPyIpKX0pfX0seyIuL2Jhc2U2NCI6MSwiLi9leHRlcm5hbCI6NiwiLi9ub2RlanNVdGlscyI6MTQsIi4vc3VwcG9ydCI6MzAsc2V0aW1tZWRpYXRlOjU0fV0sMzM6W2Z1bmN0aW9uKGks'@; put 'aCxmKXt2YXIgdT1pKCIuL3JlYWRlci9yZWFkZXJGb3IiKSxwPWkoIi4vdXRpbHMiKSxkPWkoIi4vc2lnbmF0dXJlIiksdj1pKCIuL3ppcEVudHJ5IiksXz1pKCIuL3N1cHBvcnQiKTtmdW5jdGlvbiBBKEkpe3RoaXMuZmlsZXM9W10sdGhpcy5sb2FkT3B0aW9ucz1JfUEucHJvdG90eXBlPXtj'@; put 'aGVja1NpZ25hdHVyZTpmdW5jdGlvbihJKXtpZighdGhpcy5yZWFkZXIucmVhZEFuZENoZWNrU2lnbmF0dXJlKEkpKXt0aGlzLnJlYWRlci5pbmRleC09NDt2YXIgTD10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDQpO3Rocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCBvciBidWc6IHVuZXhw'@; put 'ZWN0ZWQgc2lnbmF0dXJlICgiK3AucHJldHR5KEwpKyIsIGV4cGVjdGVkICIrcC5wcmV0dHkoSSkrIikiKX19LGlzU2lnbmF0dXJlOmZ1bmN0aW9uKEksTCl7dmFyIE49dGhpcy5yZWFkZXIuaW5kZXg7dGhpcy5yZWFkZXIuc2V0SW5kZXgoSSk7dmFyIFA9dGhpcy5yZWFkZXIucmVhZFN0cmlu'@; put 'Zyg0KT09PUw7cmV0dXJuIHRoaXMucmVhZGVyLnNldEluZGV4KE4pLFB9LHJlYWRCbG9ja0VuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3RoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCgy'@; put 'KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHM9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmNlbnRyYWxEaXJTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5jZW50cmFsRGlyT2Zm'@; put 'c2V0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy56aXBDb21tZW50TGVuZ3RoPXRoaXMucmVhZGVyLnJlYWRJbnQoMik7dmFyIEk9dGhpcy5yZWFkZXIucmVhZERhdGEodGhpcy56aXBDb21tZW50TGVuZ3RoKSxOPXAudHJhbnNmb3JtVG8oXy51aW50OGFycmF5PyJ1aW50OGFycmF5Ijoi'@; put 'YXJyYXkiLEkpO3RoaXMuemlwQ29tbWVudD10aGlzLmxvYWRPcHRpb25zLmRlY29kZUZpbGVOYW1lKE4pfSxyZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3RoaXMuemlwNjRFbmRPZkNlbnRyYWxTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5yZWFkZXIuc2tp'@; put 'cCg0KSx0aGlzLmRpc2tOdW1iZXI9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxE'@; put 'aXJSZWNvcmRzPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpck9mZnNldD10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YT17fTtmb3IodmFyIEksTCxOLFA9'@; put 'dGhpcy56aXA2NEVuZE9mQ2VudHJhbFNpemUtNDQ7MDxQOylJPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksTD10aGlzLnJlYWRlci5yZWFkSW50KDQpLE49dGhpcy5yZWFkZXIucmVhZERhdGEoTCksdGhpcy56aXA2NEV4dGVuc2libGVEYXRhW0ldPXtpZDpJLGxlbmd0aDpMLHZhbHVlOk59fSxy'@; put 'ZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3I6ZnVuY3Rpb24oKXtpZih0aGlzLmRpc2tXaXRoWmlwNjRDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXI9dGhpcy5yZWFkZXIucmVhZEludCg4'@; put 'KSx0aGlzLmRpc2tzQ291bnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSwxPHRoaXMuZGlza3NDb3VudCl0aHJvdyBuZXcgRXJyb3IoIk11bHRpLXZvbHVtZXMgemlwIGFyZSBub3Qgc3VwcG9ydGVkIil9LHJlYWRMb2NhbEZpbGVzOmZ1bmN0aW9uKCl7dmFyIEksTDtmb3IoST0wO0k8dGhpcy5m'@; put 'aWxlcy5sZW5ndGg7SSsrKXRoaXMucmVhZGVyLnNldEluZGV4KChMPXRoaXMuZmlsZXNbSV0pLmxvY2FsSGVhZGVyT2Zmc2V0KSx0aGlzLmNoZWNrU2lnbmF0dXJlKGQuTE9DQUxfRklMRV9IRUFERVIpLEwucmVhZExvY2FsUGFydCh0aGlzLnJlYWRlciksTC5oYW5kbGVVVEY4KCksTC5wcm9j'@; put 'ZXNzQXR0cmlidXRlcygpfSxyZWFkQ2VudHJhbERpcjpmdW5jdGlvbigpe3ZhciBJO2Zvcih0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLmNlbnRyYWxEaXJPZmZzZXQpO3RoaXMucmVhZGVyLnJlYWRBbmRDaGVja1NpZ25hdHVyZShkLkNFTlRSQUxfRklMRV9IRUFERVIpOykoST1uZXcgdih7'@; put 'emlwNjQ6dGhpcy56aXA2NH0sdGhpcy5sb2FkT3B0aW9ucykpLnJlYWRDZW50cmFsUGFydCh0aGlzLnJlYWRlciksdGhpcy5maWxlcy5wdXNoKEkpO2lmKHRoaXMuY2VudHJhbERpclJlY29yZHMhPT10aGlzLmZpbGVzLmxlbmd0aCYmMCE9PXRoaXMuY2VudHJhbERpclJlY29yZHMmJjA9PT10'@; put 'aGlzLmZpbGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgb3IgYnVnOiBleHBlY3RlZCAiK3RoaXMuY2VudHJhbERpclJlY29yZHMrIiByZWNvcmRzIGluIGNlbnRyYWwgZGlyLCBnb3QgIit0aGlzLmZpbGVzLmxlbmd0aCl9LHJlYWRFbmRPZkNlbnRyYWw6ZnVuY3Rp'@; put 'b24oKXt2YXIgST10aGlzLnJlYWRlci5sYXN0SW5kZXhPZlNpZ25hdHVyZShkLkNFTlRSQUxfRElSRUNUT1JZX0VORCk7aWYoSTwwKXRocm93IHRoaXMuaXNTaWduYXR1cmUoMCxkLkxPQ0FMX0ZJTEVfSEVBREVSKT9uZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXA6IGNhbid0IGZpbmQgZW5kIG9m'@; put 'IGNlbnRyYWwgZGlyZWN0b3J5Iik6bmV3IEVycm9yKCJDYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSA6IGlzIHRoaXMgYSB6aXAgZmlsZSA/IElmIGl0IGlzLCBzZWUgaHR0cHM6Ly9zdHVrLmdpdGh1Yi5pby9qc3ppcC9kb2N1bWVudGF0aW9uL2hvd3RvL3JlYWRfemlwLmh0'@; put 'bWwiKTt0aGlzLnJlYWRlci5zZXRJbmRleChJKTt2YXIgTD1JO2lmKHRoaXMuY2hlY2tTaWduYXR1cmUoZC5DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVhZEJsb2NrRW5kT2ZDZW50cmFsKCksdGhpcy5kaXNrTnVtYmVyPT09cC5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmRpc2tXaXRo'@; put 'Q2VudHJhbERpclN0YXJ0PT09cC5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz09PXAuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkcz09PXAuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyU2l6ZT09PXAuTUFY'@; put 'X1ZBTFVFXzMyQklUU3x8dGhpcy5jZW50cmFsRGlyT2Zmc2V0PT09cC5NQVhfVkFMVUVfMzJCSVRTKXtpZih0aGlzLnppcDY0PSEwLChJPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKGQuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUikpPDApdGhyb3cgbmV3IEVycm9y'@; put 'KCJDb3JydXB0ZWQgemlwOiBjYW4ndCBmaW5kIHRoZSBaSVA2NCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgbG9jYXRvciIpO2lmKHRoaXMucmVhZGVyLnNldEluZGV4KEkpLHRoaXMuY2hlY2tTaWduYXR1cmUoZC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSx0aGlzLnJlYWRC'@; put 'bG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcigpLCF0aGlzLmlzU2lnbmF0dXJlKHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpcixkLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORCkmJih0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXI9dGhp'@; put 'cy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUoZC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpcjwwKSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXA6IGNhbid0IGZpbmQgdGhlIFpJUDY0IGVuZCBvZiBj'@; put 'ZW50cmFsIGRpcmVjdG9yeSIpO3RoaXMucmVhZGVyLnNldEluZGV4KHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpciksdGhpcy5jaGVja1NpZ25hdHVyZShkLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbCgp'@; put 'fXZhciBOPXRoaXMuY2VudHJhbERpck9mZnNldCt0aGlzLmNlbnRyYWxEaXJTaXplO3RoaXMuemlwNjQmJihOKz0yMCxOKz0xMit0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZSk7dmFyIFA9TC1OO2lmKDA8UCl0aGlzLmlzU2lnbmF0dXJlKEwsZC5DRU5UUkFMX0ZJTEVfSEVBREVSKXx8KHRo'@; put 'aXMucmVhZGVyLnplcm89UCk7ZWxzZSBpZihQPDApdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwOiBtaXNzaW5nICIrTWF0aC5hYnMoUCkrIiBieXRlcy4iKX0scHJlcGFyZVJlYWRlcjpmdW5jdGlvbihJKXt0aGlzLnJlYWRlcj11KEkpfSxsb2FkOmZ1bmN0aW9uKEkpe3RoaXMucHJl'@; put 'cGFyZVJlYWRlcihJKSx0aGlzLnJlYWRFbmRPZkNlbnRyYWwoKSx0aGlzLnJlYWRDZW50cmFsRGlyKCksdGhpcy5yZWFkTG9jYWxGaWxlcygpfX0saC5leHBvcnRzPUF9LHsiLi9yZWFkZXIvcmVhZGVyRm9yIjoyMiwiLi9zaWduYXR1cmUiOjIzLCIuL3N1cHBvcnQiOjMwLCIuL3V0aWxzIjoz'@; put 'MiwiLi96aXBFbnRyeSI6MzR9XSwzNDpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4vcmVhZGVyL3JlYWRlckZvciIpLHA9aSgiLi91dGlscyIpLGQ9aSgiLi9jb21wcmVzc2VkT2JqZWN0Iiksdj1pKCIuL2NyYzMyIiksXz1pKCIuL3V0ZjgiKSxBPWkoIi4vY29tcHJlc3Npb25zIiksST1p'@; put 'KCIuL3N1cHBvcnQiKTtmdW5jdGlvbiBMKE4sUCl7dGhpcy5vcHRpb25zPU4sdGhpcy5sb2FkT3B0aW9ucz1QfUwucHJvdG90eXBlPXtpc0VuY3J5cHRlZDpmdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy5iaXRGbGFnKX0sdXNlVVRGODpmdW5jdGlvbigpe3JldHVybiEoMjA0OCZ+dGhpcy5i'@; put 'aXRGbGFnKX0scmVhZExvY2FsUGFydDpmdW5jdGlvbihOKXt2YXIgUCxCO2lmKE4uc2tpcCgyMiksdGhpcy5maWxlTmFtZUxlbmd0aD1OLnJlYWRJbnQoMiksQj1OLnJlYWRJbnQoMiksdGhpcy5maWxlTmFtZT1OLnJlYWREYXRhKHRoaXMuZmlsZU5hbWVMZW5ndGgpLE4uc2tpcChCKSwtMT09'@; put 'PXRoaXMuY29tcHJlc3NlZFNpemV8fC0xPT09dGhpcy51bmNvbXByZXNzZWRTaXplKXRocm93IG5ldyBFcnJvcigiQnVnIG9yIGNvcnJ1cHRlZCB6aXAgOiBkaWRuJ3QgZ2V0IGVub3VnaCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAoY29tcHJlc3NlZFNpemUgPT09'@; put 'IC0xIHx8IHVuY29tcHJlc3NlZFNpemUgPT09IC0xKSIpO2lmKG51bGw9PT0oUD1mdW5jdGlvbigkKXtmb3IodmFyIEQgaW4gQSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQSxEKSYmQVtEXS5tYWdpYz09PSQpcmV0dXJuIEFbRF07cmV0dXJuIG51bGx9KHRoaXMu'@; put 'Y29tcHJlc3Npb25NZXRob2QpKSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjb21wcmVzc2lvbiAiK3AucHJldHR5KHRoaXMuY29tcHJlc3Npb25NZXRob2QpKyIgdW5rbm93biAoaW5uZXIgZmlsZSA6ICIrcC50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLmZpbGVOYW1lKSsi'@; put 'KSIpO3RoaXMuZGVjb21wcmVzc2VkPW5ldyBkKHRoaXMuY29tcHJlc3NlZFNpemUsdGhpcy51bmNvbXByZXNzZWRTaXplLHRoaXMuY3JjMzIsUCxOLnJlYWREYXRhKHRoaXMuY29tcHJlc3NlZFNpemUpKX0scmVhZENlbnRyYWxQYXJ0OmZ1bmN0aW9uKE4pe3RoaXMudmVyc2lvbk1hZGVCeT1O'@; put 'LnJlYWRJbnQoMiksTi5za2lwKDIpLHRoaXMuYml0RmxhZz1OLnJlYWRJbnQoMiksdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1OLnJlYWRTdHJpbmcoMiksdGhpcy5kYXRlPU4ucmVhZERhdGUoKSx0aGlzLmNyYzMyPU4ucmVhZEludCg0KSx0aGlzLmNvbXByZXNzZWRTaXplPU4ucmVhZEludCg0'@; put 'KSx0aGlzLnVuY29tcHJlc3NlZFNpemU9Ti5yZWFkSW50KDQpO3ZhciBQPU4ucmVhZEludCgyKTtpZih0aGlzLmV4dHJhRmllbGRzTGVuZ3RoPU4ucmVhZEludCgyKSx0aGlzLmZpbGVDb21tZW50TGVuZ3RoPU4ucmVhZEludCgyKSx0aGlzLmRpc2tOdW1iZXJTdGFydD1OLnJlYWRJbnQoMiks'@; put 'dGhpcy5pbnRlcm5hbEZpbGVBdHRyaWJ1dGVzPU4ucmVhZEludCgyKSx0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM9Ti5yZWFkSW50KDQpLHRoaXMubG9jYWxIZWFkZXJPZmZzZXQ9Ti5yZWFkSW50KDQpLHRoaXMuaXNFbmNyeXB0ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCB6'@; put 'aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKTtOLnNraXAoUCksdGhpcy5yZWFkRXh0cmFGaWVsZHMoTiksdGhpcy5wYXJzZVpJUDY0RXh0cmFGaWVsZChOKSx0aGlzLmZpbGVDb21tZW50PU4ucmVhZERhdGEodGhpcy5maWxlQ29tbWVudExlbmd0aCl9LHByb2Nlc3NBdHRyaWJ1dGVzOmZ1bmN0aW9u'@; put 'KCl7dGhpcy51bml4UGVybWlzc2lvbnM9bnVsbCx0aGlzLmRvc1Blcm1pc3Npb25zPW51bGw7dmFyIE49dGhpcy52ZXJzaW9uTWFkZUJ5Pj44O3RoaXMuZGlyPSEhKDE2JnRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyksMD09TiYmKHRoaXMuZG9zUGVybWlzc2lvbnM9NjMmdGhpcy5leHRl'@; put 'cm5hbEZpbGVBdHRyaWJ1dGVzKSwzPT1OJiYodGhpcy51bml4UGVybWlzc2lvbnM9dGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzPj4xNiY2NTUzNSksdGhpcy5kaXJ8fCIvIiE9PXRoaXMuZmlsZU5hbWVTdHIuc2xpY2UoLTEpfHwodGhpcy5kaXI9ITApfSxwYXJzZVpJUDY0RXh0cmFGaWVs'@; put 'ZDpmdW5jdGlvbigpe2lmKHRoaXMuZXh0cmFGaWVsZHNbMV0pe3ZhciBOPXUodGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09cC5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPU4ucmVhZEludCg4KSksdGhpcy5jb21wcmVz'@; put 'c2VkU2l6ZT09PXAuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9Ti5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09cC5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD1OLnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0'@; put 'YXJ0PT09cC5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9Ti5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihOKXt2YXIgUCxCLCQsRD1OLmluZGV4K3RoaXMuZXh0cmFGaWVsZHNMZW5ndGg7Zm9yKHRoaXMuZXh0cmFGaWVsZHN8fCh0aGlzLmV4'@; put 'dHJhRmllbGRzPXt9KTtOLmluZGV4KzQ8RDspUD1OLnJlYWRJbnQoMiksQj1OLnJlYWRJbnQoMiksJD1OLnJlYWREYXRhKEIpLHRoaXMuZXh0cmFGaWVsZHNbUF09e2lkOlAsbGVuZ3RoOkIsdmFsdWU6JH07Ti5zZXRJbmRleChEKX0saGFuZGxlVVRGODpmdW5jdGlvbigpe3ZhciBOPUkudWlu'@; put 'dDhhcnJheT8idWludDhhcnJheSI6ImFycmF5IjtpZih0aGlzLnVzZVVURjgoKSl0aGlzLmZpbGVOYW1lU3RyPV8udXRmOGRlY29kZSh0aGlzLmZpbGVOYW1lKSx0aGlzLmZpbGVDb21tZW50U3RyPV8udXRmOGRlY29kZSh0aGlzLmZpbGVDb21tZW50KTtlbHNle3ZhciBQPXRoaXMuZmluZEV4'@; put 'dHJhRmllbGRVbmljb2RlUGF0aCgpO2lmKG51bGwhPT1QKXRoaXMuZmlsZU5hbWVTdHI9UDtlbHNle3ZhciBCPXAudHJhbnNmb3JtVG8oTix0aGlzLmZpbGVOYW1lKTt0aGlzLmZpbGVOYW1lU3RyPXRoaXMubG9hZE9wdGlvbnMuZGVjb2RlRmlsZU5hbWUoQil9dmFyICQ9dGhpcy5maW5kRXh0'@; put 'cmFGaWVsZFVuaWNvZGVDb21tZW50KCk7aWYobnVsbCE9PSQpdGhpcy5maWxlQ29tbWVudFN0cj0kO2Vsc2V7dmFyIEQ9cC50cmFuc2Zvcm1UbyhOLHRoaXMuZmlsZUNvbW1lbnQpO3RoaXMuZmlsZUNvbW1lbnRTdHI9dGhpcy5sb2FkT3B0aW9ucy5kZWNvZGVGaWxlTmFtZShEKX19fSxmaW5k'@; put 'RXh0cmFGaWVsZFVuaWNvZGVQYXRoOmZ1bmN0aW9uKCl7dmFyIE49dGhpcy5leHRyYUZpZWxkc1syODc4OV07aWYoTil7dmFyIFA9dShOLnZhbHVlKTtyZXR1cm4gMSE9PVAucmVhZEludCgxKXx8dih0aGlzLmZpbGVOYW1lKSE9PVAucmVhZEludCg0KT9udWxsOl8udXRmOGRlY29kZShQLnJl'@; put 'YWREYXRhKE4ubGVuZ3RoLTUpKX1yZXR1cm4gbnVsbH0sZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudDpmdW5jdGlvbigpe3ZhciBOPXRoaXMuZXh0cmFGaWVsZHNbMjU0NjFdO2lmKE4pe3ZhciBQPXUoTi52YWx1ZSk7cmV0dXJuIDEhPT1QLnJlYWRJbnQoMSl8fHYodGhpcy5maWxlQ29t'@; put 'bWVudCkhPT1QLnJlYWRJbnQoNCk/bnVsbDpfLnV0ZjhkZWNvZGUoUC5yZWFkRGF0YShOLmxlbmd0aC01KSl9cmV0dXJuIG51bGx9fSxoLmV4cG9ydHM9TH0seyIuL2NvbXByZXNzZWRPYmplY3QiOjIsIi4vY29tcHJlc3Npb25zIjozLCIuL2NyYzMyIjo0LCIuL3JlYWRlci9yZWFkZXJGb3Ii'@; put 'OjIyLCIuL3N1cHBvcnQiOjMwLCIuL3V0ZjgiOjMxLCIuL3V0aWxzIjozMn1dLDM1OltmdW5jdGlvbihpLGgsZil7ZnVuY3Rpb24gdShQLEIsJCl7dGhpcy5uYW1lPVAsdGhpcy5kaXI9JC5kaXIsdGhpcy5kYXRlPSQuZGF0ZSx0aGlzLmNvbW1lbnQ9JC5jb21tZW50LHRoaXMudW5peFBlcm1p'@; put 'c3Npb25zPSQudW5peFBlcm1pc3Npb25zLHRoaXMuZG9zUGVybWlzc2lvbnM9JC5kb3NQZXJtaXNzaW9ucyx0aGlzLl9kYXRhPUIsdGhpcy5fZGF0YUJpbmFyeT0kLmJpbmFyeSx0aGlzLm9wdGlvbnM9e2NvbXByZXNzaW9uOiQuY29tcHJlc3Npb24sY29tcHJlc3Npb25PcHRpb25zOiQuY29t'@; put 'cHJlc3Npb25PcHRpb25zfX12YXIgcD1pKCIuL3N0cmVhbS9TdHJlYW1IZWxwZXIiKSxkPWkoIi4vc3RyZWFtL0RhdGFXb3JrZXIiKSx2PWkoIi4vdXRmOCIpLF89aSgiLi9jb21wcmVzc2VkT2JqZWN0IiksQT1pKCIuL3N0cmVhbS9HZW5lcmljV29ya2VyIik7dS5wcm90b3R5cGU9e2ludGVy'@; put 'bmFsU3RyZWFtOmZ1bmN0aW9uKFApe3ZhciBCPW51bGwsJD0ic3RyaW5nIjt0cnl7aWYoIVApdGhyb3cgbmV3IEVycm9yKCJObyBvdXRwdXQgdHlwZSBzcGVjaWZpZWQuIik7dmFyIEQ9InN0cmluZyI9PT0oJD1QLnRvTG93ZXJDYXNlKCkpfHwidGV4dCI9PT0kOyJiaW5hcnlzdHJpbmciIT09'@; put 'JCYmInRleHQiIT09JHx8KCQ9InN0cmluZyIpLEI9dGhpcy5fZGVjb21wcmVzc1dvcmtlcigpO3ZhciB4PSF0aGlzLl9kYXRhQmluYXJ5O3gmJiFEJiYoQj1CLnBpcGUobmV3IHYuVXRmOEVuY29kZVdvcmtlcikpLCF4JiZEJiYoQj1CLnBpcGUobmV3IHYuVXRmOERlY29kZVdvcmtlcikpfWNh'@; put 'dGNoKE0peyhCPW5ldyBBKCJlcnJvciIpKS5lcnJvcihNKX1yZXR1cm4gbmV3IHAoQiwkLCIiKX0sYXN5bmM6ZnVuY3Rpb24oUCxCKXtyZXR1cm4gdGhpcy5pbnRlcm5hbFN0cmVhbShQKS5hY2N1bXVsYXRlKEIpfSxub2RlU3RyZWFtOmZ1bmN0aW9uKFAsQil7cmV0dXJuIHRoaXMuaW50ZXJu'@; put 'YWxTdHJlYW0oUHx8Im5vZGVidWZmZXIiKS50b05vZGVqc1N0cmVhbShCKX0sX2NvbXByZXNzV29ya2VyOmZ1bmN0aW9uKFAsQil7aWYodGhpcy5fZGF0YSBpbnN0YW5jZW9mIF8mJnRoaXMuX2RhdGEuY29tcHJlc3Npb24ubWFnaWM9PT1QLm1hZ2ljKXJldHVybiB0aGlzLl9kYXRhLmdldENv'@; put 'bXByZXNzZWRXb3JrZXIoKTt2YXIgJD10aGlzLl9kZWNvbXByZXNzV29ya2VyKCk7cmV0dXJuIHRoaXMuX2RhdGFCaW5hcnl8fCgkPSQucGlwZShuZXcgdi5VdGY4RW5jb2RlV29ya2VyKSksXy5jcmVhdGVXb3JrZXJGcm9tKCQsUCxCKX0sX2RlY29tcHJlc3NXb3JrZXI6ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gdGhpcy5fZGF0YSBpbnN0YW5jZW9mIF8/dGhpcy5fZGF0YS5nZXRDb250ZW50V29ya2VyKCk6dGhpcy5fZGF0YSBpbnN0YW5jZW9mIEE/dGhpcy5fZGF0YTpuZXcgZCh0aGlzLl9kYXRhKX19O2Zvcih2YXIgST1bImFzVGV4dCIsImFzQmluYXJ5IiwiYXNOb2RlQnVmZmVyIiwiYXNV'@; put 'aW50OEFycmF5IiwiYXNBcnJheUJ1ZmZlciJdLEw9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlRoaXMgbWV0aG9kIGhhcyBiZWVuIHJlbW92ZWQgaW4gSlNaaXAgMy4wLCBwbGVhc2UgY2hlY2sgdGhlIHVwZ3JhZGUgZ3VpZGUuIil9LE49MDtOPEkubGVuZ3RoO04rKyl1LnByb3RvdHlw'@; put 'ZVtJW05dXT1MO2guZXhwb3J0cz11fSx7Ii4vY29tcHJlc3NlZE9iamVjdCI6MiwiLi9zdHJlYW0vRGF0YVdvcmtlciI6MjcsIi4vc3RyZWFtL0dlbmVyaWNXb3JrZXIiOjI4LCIuL3N0cmVhbS9TdHJlYW1IZWxwZXIiOjI5LCIuL3V0ZjgiOjMxfV0sMzY6W2Z1bmN0aW9uKGksaCxmKXsoZnVu'@; put 'Y3Rpb24odSl7dmFyIHAsZCx2PXUuTXV0YXRpb25PYnNlcnZlcnx8dS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2lmKHYpe3ZhciBfPTAsQT1uZXcgdihQKSxJPXUuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO0Eub2JzZXJ2ZShJLHtjaGFyYWN0ZXJEYXRhOiEwfSkscD1mdW5jdGlvbigp'@; put 'e0kuZGF0YT1fPSsrXyUyfX1lbHNlIGlmKHUuc2V0SW1tZWRpYXRlfHx2b2lkIDA9PT11Lk1lc3NhZ2VDaGFubmVsKXA9ImRvY3VtZW50ImluIHUmJiJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gdS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKT9mdW5jdGlvbigpe3ZhciBCPXUuZG9j'@; put 'dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Qi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtQKCksQi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxCLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoQiksQj1udWxsfSx1LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGls'@; put 'ZChCKX06ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KFAsMCl9O2Vsc2V7dmFyIEw9bmV3IHUuTWVzc2FnZUNoYW5uZWw7TC5wb3J0MS5vbm1lc3NhZ2U9UCxwPWZ1bmN0aW9uKCl7TC5wb3J0Mi5wb3N0TWVzc2FnZSgwKX19dmFyIE49W107ZnVuY3Rpb24gUCgpe3ZhciBCLCQ7ZD0hMDtmb3IodmFy'@; put 'IEQ9Ti5sZW5ndGg7RDspe2ZvcigkPU4sTj1bXSxCPS0xOysrQjxEOykkW0JdKCk7RD1OLmxlbmd0aH1kPSExfWguZXhwb3J0cz1mdW5jdGlvbihCKXsxIT09Ti5wdXNoKEIpfHxkfHxwKCl9fSkuY2FsbCh0aGlzLHZvaWQgMCE9PWE/YTp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2lu'@; put 'ZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMzc6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCJpbW1lZGlhdGUiKTtmdW5jdGlvbiBwKCl7fXZhciBkPXt9LHY9WyJSRUpFQ1RFRCJdLF89WyJGVUxGSUxMRUQiXSxBPVsiUEVORElORyJdO2Z1bmN0aW9uIEkoRCl7aWYoImZ1bmN0aW9uIiE9dHlw'@; put 'ZW9mIEQpdGhyb3cgbmV3IFR5cGVFcnJvcigicmVzb2x2ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7dGhpcy5zdGF0ZT1BLHRoaXMucXVldWU9W10sdGhpcy5vdXRjb21lPXZvaWQgMCxEIT09cCYmQih0aGlzLEQpfWZ1bmN0aW9uIEwoRCx4LE0pe3RoaXMucHJvbWlzZT1ELCJmdW5jdGlvbiI9'@; put 'PXR5cGVvZiB4JiYodGhpcy5vbkZ1bGZpbGxlZD14LHRoaXMuY2FsbEZ1bGZpbGxlZD10aGlzLm90aGVyQ2FsbEZ1bGZpbGxlZCksImZ1bmN0aW9uIj09dHlwZW9mIE0mJih0aGlzLm9uUmVqZWN0ZWQ9TSx0aGlzLmNhbGxSZWplY3RlZD10aGlzLm90aGVyQ2FsbFJlamVjdGVkKX1mdW5jdGlv'@; put 'biBOKEQseCxNKXt1KGZ1bmN0aW9uKCl7dmFyIGo7dHJ5e2o9eChNKX1jYXRjaChjKXtyZXR1cm4gZC5yZWplY3QoRCxjKX1qPT09RD9kLnJlamVjdChELG5ldyBUeXBlRXJyb3IoIkNhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGYiKSk6ZC5yZXNvbHZlKEQsail9KX1mdW5jdGlv'@; put 'biBQKEQpe3ZhciB4PUQmJkQudGhlbjtpZihEJiYoIm9iamVjdCI9PXR5cGVvZiBEfHwiZnVuY3Rpb24iPT10eXBlb2YgRCkmJiJmdW5jdGlvbiI9PXR5cGVvZiB4KXJldHVybiBmdW5jdGlvbigpe3guYXBwbHkoRCxhcmd1bWVudHMpfX1mdW5jdGlvbiBCKEQseCl7dmFyIE09ITE7ZnVuY3Rp'@; put 'b24gaihnKXtNfHwoTT0hMCxkLnJlamVjdChELGcpKX1mdW5jdGlvbiBjKGcpe018fChNPSEwLGQucmVzb2x2ZShELGcpKX12YXIgbT0kKGZ1bmN0aW9uKCl7eChjLGopfSk7ImVycm9yIj09PW0uc3RhdHVzJiZqKG0udmFsdWUpfWZ1bmN0aW9uICQoRCx4KXt2YXIgTT17fTt0cnl7TS52YWx1'@; put 'ZT1EKHgpLE0uc3RhdHVzPSJzdWNjZXNzIn1jYXRjaChqKXtNLnN0YXR1cz0iZXJyb3IiLE0udmFsdWU9an1yZXR1cm4gTX0oaC5leHBvcnRzPUkpLnByb3RvdHlwZS5maW5hbGx5PWZ1bmN0aW9uKEQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBEKXJldHVybiB0aGlzO3ZhciB4PXRoaXMuY29u'@; put 'c3RydWN0b3I7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihNKXtyZXR1cm4geC5yZXNvbHZlKEQoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBNfSl9LGZ1bmN0aW9uKE0pe3JldHVybiB4LnJlc29sdmUoRCgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgTX0pfSl9LEkucHJvdG90eXBlLmNh'@; put 'dGNoPWZ1bmN0aW9uKEQpe3JldHVybiB0aGlzLnRoZW4obnVsbCxEKX0sSS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihELHgpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBEJiZ0aGlzLnN0YXRlPT09X3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHgmJnRoaXMuc3RhdGU9PT12KXJldHVybiB0aGlzO3Zh'@; put 'ciBNPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHApO3JldHVybiB0aGlzLnN0YXRlIT09QT9OKE0sdGhpcy5zdGF0ZT09PV8/RDp4LHRoaXMub3V0Y29tZSk6dGhpcy5xdWV1ZS5wdXNoKG5ldyBMKE0sRCx4KSksTX0sTC5wcm90b3R5cGUuY2FsbEZ1bGZpbGxlZD1mdW5jdGlvbihEKXtkLnJlc29s'@; put 'dmUodGhpcy5wcm9taXNlLEQpfSxMLnByb3RvdHlwZS5vdGhlckNhbGxGdWxmaWxsZWQ9ZnVuY3Rpb24oRCl7Tih0aGlzLnByb21pc2UsdGhpcy5vbkZ1bGZpbGxlZCxEKX0sTC5wcm90b3R5cGUuY2FsbFJlamVjdGVkPWZ1bmN0aW9uKEQpe2QucmVqZWN0KHRoaXMucHJvbWlzZSxEKX0sTC5w'@; put 'cm90b3R5cGUub3RoZXJDYWxsUmVqZWN0ZWQ9ZnVuY3Rpb24oRCl7Tih0aGlzLnByb21pc2UsdGhpcy5vblJlamVjdGVkLEQpfSxkLnJlc29sdmU9ZnVuY3Rpb24oRCx4KXt2YXIgTT0kKFAseCk7aWYoImVycm9yIj09PU0uc3RhdHVzKXJldHVybiBkLnJlamVjdChELE0udmFsdWUpO3ZhciBq'@; put 'PU0udmFsdWU7aWYoailCKEQsaik7ZWxzZXtELnN0YXRlPV8sRC5vdXRjb21lPXg7Zm9yKHZhciBjPS0xLG09RC5xdWV1ZS5sZW5ndGg7KytjPG07KUQucXVldWVbY10uY2FsbEZ1bGZpbGxlZCh4KX1yZXR1cm4gRH0sZC5yZWplY3Q9ZnVuY3Rpb24oRCx4KXtELnN0YXRlPXYsRC5vdXRjb21l'@; put 'PXg7Zm9yKHZhciBNPS0xLGo9RC5xdWV1ZS5sZW5ndGg7KytNPGo7KUQucXVldWVbTV0uY2FsbFJlamVjdGVkKHgpO3JldHVybiBEfSxJLnJlc29sdmU9ZnVuY3Rpb24oRCl7cmV0dXJuIEQgaW5zdGFuY2VvZiB0aGlzP0Q6ZC5yZXNvbHZlKG5ldyB0aGlzKHApLEQpfSxJLnJlamVjdD1mdW5j'@; put 'dGlvbihEKXt2YXIgeD1uZXcgdGhpcyhwKTtyZXR1cm4gZC5yZWplY3QoeCxEKX0sSS5hbGw9ZnVuY3Rpb24oRCl7dmFyIHg9dGhpcztpZigiW29iamVjdCBBcnJheV0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEQpKXJldHVybiB0aGlzLnJlamVjdChuZXcgVHlwZUVycm9y'@; put 'KCJtdXN0IGJlIGFuIGFycmF5IikpO3ZhciBNPUQubGVuZ3RoLGo9ITE7aWYoIU0pcmV0dXJuIHRoaXMucmVzb2x2ZShbXSk7Zm9yKHZhciBjPW5ldyBBcnJheShNKSxtPTAsZz0tMSx5PW5ldyB0aGlzKHApOysrZzxNOyl3KERbZ10sZyk7cmV0dXJuIHk7ZnVuY3Rpb24gdyhrLE8pe3gucmVz'@; put 'b2x2ZShrKS50aGVuKGZ1bmN0aW9uKHope2NbT109eiwrK20hPT1NfHxqfHwoaj0hMCxkLnJlc29sdmUoeSxjKSl9LGZ1bmN0aW9uKHope2p8fChqPSEwLGQucmVqZWN0KHkseikpfSl9fSxJLnJhY2U9ZnVuY3Rpb24oRCl7aWYoIltvYmplY3QgQXJyYXldIiE9PU9iamVjdC5wcm90b3R5cGUu'@; put 'dG9TdHJpbmcuY2FsbChEKSlyZXR1cm4gdGhpcy5yZWplY3QobmV3IFR5cGVFcnJvcigibXVzdCBiZSBhbiBhcnJheSIpKTt2YXIgeD1ELmxlbmd0aCxNPSExO2lmKCF4KXJldHVybiB0aGlzLnJlc29sdmUoW10pO2Zvcih2YXIgYz0tMSxtPW5ldyB0aGlzKHApOysrYzx4Oyl0aGlzLnJlc29s'@; put 'dmUoRFtjXSkudGhlbihmdW5jdGlvbihnKXtNfHwoTT0hMCxkLnJlc29sdmUobSxnKSl9LGZ1bmN0aW9uKGcpe018fChNPSEwLGQucmVqZWN0KG0sZykpfSk7cmV0dXJuIG19fSx7aW1tZWRpYXRlOjM2fV0sMzg6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT17fTsoMCxpKCIuL2xpYi91dGlscy9j'@; put 'b21tb24iKS5hc3NpZ24pKHUsaSgiLi9saWIvZGVmbGF0ZSIpLGkoIi4vbGliL2luZmxhdGUiKSxpKCIuL2xpYi96bGliL2NvbnN0YW50cyIpKSxoLmV4cG9ydHM9dX0seyIuL2xpYi9kZWZsYXRlIjozOSwiLi9saWIvaW5mbGF0ZSI6NDAsIi4vbGliL3V0aWxzL2NvbW1vbiI6NDEsIi4vbGli'@; put 'L3psaWIvY29uc3RhbnRzIjo0NH1dLDM5OltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi96bGliL2RlZmxhdGUiKSxwPWkoIi4vdXRpbHMvY29tbW9uIiksZD1pKCIuL3V0aWxzL3N0cmluZ3MiKSx2PWkoIi4vemxpYi9tZXNzYWdlcyIpLF89aSgiLi96bGliL3pzdHJlYW0iKSxBPU9iamVj'@; put 'dC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gSShOKXtpZighKHRoaXMgaW5zdGFuY2VvZiBJKSlyZXR1cm4gbmV3IEkoTik7dGhpcy5vcHRpb25zPXAuYXNzaWduKHtsZXZlbDotMSxtZXRob2Q6OCxjaHVua1NpemU6MTYzODQsd2luZG93Qml0czoxNSxtZW1MZXZlbDo4LHN0cmF0ZWd5'@; put 'OjAsdG86IiJ9LE58fHt9KTt2YXIgUD10aGlzLm9wdGlvbnM7UC5yYXcmJjA8UC53aW5kb3dCaXRzP1Aud2luZG93Qml0cz0tUC53aW5kb3dCaXRzOlAuZ3ppcCYmMDxQLndpbmRvd0JpdHMmJlAud2luZG93Qml0czwxNiYmKFAud2luZG93Qml0cys9MTYpLHRoaXMuZXJyPTAsdGhpcy5tc2c9'@; put 'IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IF8sdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciBCPXUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSxQLmxldmVsLFAubWV0aG9kLFAud2luZG93Qml0cyxQLm1lbUxldmVsLFAuc3RyYXRlZ3kpO2lmKDAhPT1CKXRo'@; put 'cm93IG5ldyBFcnJvcih2W0JdKTtpZihQLmhlYWRlciYmdS5kZWZsYXRlU2V0SGVhZGVyKHRoaXMuc3RybSxQLmhlYWRlciksUC5kaWN0aW9uYXJ5KXt2YXIgJDtpZigkPSJzdHJpbmciPT10eXBlb2YgUC5kaWN0aW9uYXJ5P2Quc3RyaW5nMmJ1ZihQLmRpY3Rpb25hcnkpOiJbb2JqZWN0IEFy'@; put 'cmF5QnVmZmVyXSI9PT1BLmNhbGwoUC5kaWN0aW9uYXJ5KT9uZXcgVWludDhBcnJheShQLmRpY3Rpb25hcnkpOlAuZGljdGlvbmFyeSwwIT09KEI9dS5kZWZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sJCkpKXRocm93IG5ldyBFcnJvcih2W0JdKTt0aGlzLl9kaWN0X3NldD0hMH19ZnVu'@; put 'Y3Rpb24gTChOLFApe3ZhciBCPW5ldyBJKFApO2lmKEIucHVzaChOLCEwKSxCLmVycil0aHJvdyBCLm1zZ3x8dltCLmVycl07cmV0dXJuIEIucmVzdWx0fUkucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oTixQKXt2YXIgQiwkLEQ9dGhpcy5zdHJtLHg9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtp'@; put 'Zih0aGlzLmVuZGVkKXJldHVybiExOyQ9UD09PX5+UD9QOiEwPT09UD80OjAsRC5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIE4/ZC5zdHJpbmcyYnVmKE4pOiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1BLmNhbGwoTik/bmV3IFVpbnQ4QXJyYXkoTik6TixELm5leHRfaW49MCxELmF2YWlsX2lu'@; put 'PUQuaW5wdXQubGVuZ3RoO2Rve2lmKDA9PT1ELmF2YWlsX291dCYmKEQub3V0cHV0PW5ldyBwLkJ1ZjgoeCksRC5uZXh0X291dD0wLEQuYXZhaWxfb3V0PXgpLDEhPT0oQj11LmRlZmxhdGUoRCwkKSkmJjAhPT1CKXJldHVybiB0aGlzLm9uRW5kKEIpLCEodGhpcy5lbmRlZD0hMCk7MCE9PUQu'@; put 'YXZhaWxfb3V0JiYoMCE9PUQuYXZhaWxfaW58fDQhPT0kJiYyIT09JCl8fHRoaXMub25EYXRhKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP2QuYnVmMmJpbnN0cmluZyhwLnNocmlua0J1ZihELm91dHB1dCxELm5leHRfb3V0KSk6cC5zaHJpbmtCdWYoRC5vdXRwdXQsRC5uZXh0X291dCkp'@; put 'fXdoaWxlKCgwPEQuYXZhaWxfaW58fDA9PT1ELmF2YWlsX291dCkmJjEhPT1CKTtyZXR1cm4gND09PSQ/KEI9dS5kZWZsYXRlRW5kKHRoaXMuc3RybSksdGhpcy5vbkVuZChCKSx0aGlzLmVuZGVkPSEwLDA9PT1CKToyIT09JHx8KHRoaXMub25FbmQoMCksIShELmF2YWlsX291dD0wKSl9LEku'@; put 'cHJvdG90eXBlLm9uRGF0YT1mdW5jdGlvbihOKXt0aGlzLmNodW5rcy5wdXNoKE4pfSxJLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbihOKXswPT09TiYmKHRoaXMucmVzdWx0PSJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP3RoaXMuY2h1bmtzLmpvaW4oIiIpOnAuZmxhdHRlbkNodW5rcyh0'@; put 'aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPU4sdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sZi5EZWZsYXRlPUksZi5kZWZsYXRlPUwsZi5kZWZsYXRlUmF3PWZ1bmN0aW9uKE4sUCl7cmV0dXJuKFA9UHx8e30pLnJhdz0hMCxMKE4sUCl9LGYuZ3ppcD1mdW5jdGlvbihOLFAp'@; put 'e3JldHVybihQPVB8fHt9KS5nemlwPSEwLEwoTixQKX19LHsiLi91dGlscy9jb21tb24iOjQxLCIuL3V0aWxzL3N0cmluZ3MiOjQyLCIuL3psaWIvZGVmbGF0ZSI6NDYsIi4vemxpYi9tZXNzYWdlcyI6NTEsIi4vemxpYi96c3RyZWFtIjo1M31dLDQwOltmdW5jdGlvbihpLGgsZil7dmFyIHU9'@; put 'aSgiLi96bGliL2luZmxhdGUiKSxwPWkoIi4vdXRpbHMvY29tbW9uIiksZD1pKCIuL3V0aWxzL3N0cmluZ3MiKSx2PWkoIi4vemxpYi9jb25zdGFudHMiKSxfPWkoIi4vemxpYi9tZXNzYWdlcyIpLEE9aSgiLi96bGliL3pzdHJlYW0iKSxJPWkoIi4vemxpYi9nemhlYWRlciIpLEw9T2JqZWN0'@; put 'LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBOKEIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE4pKXJldHVybiBuZXcgTihCKTt0aGlzLm9wdGlvbnM9cC5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86IiJ9LEJ8fHt9KTt2YXIgJD10aGlzLm9wdGlvbnM7JC5yYXcm'@; put 'JjA8PSQud2luZG93Qml0cyYmJC53aW5kb3dCaXRzPDE2JiYoJC53aW5kb3dCaXRzPS0kLndpbmRvd0JpdHMsMD09PSQud2luZG93Qml0cyYmKCQud2luZG93Qml0cz0tMTUpKSwhKDA8PSQud2luZG93Qml0cyYmJC53aW5kb3dCaXRzPDE2KXx8QiYmQi53aW5kb3dCaXRzfHwoJC53aW5kb3dC'@; put 'aXRzKz0zMiksMTU8JC53aW5kb3dCaXRzJiYkLndpbmRvd0JpdHM8NDgmJiEoMTUmJC53aW5kb3dCaXRzKSYmKCQud2luZG93Qml0c3w9MTUpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IEEsdGhpcy5zdHJtLmF2YWls'@; put 'X291dD0wO3ZhciBEPXUuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSwkLndpbmRvd0JpdHMpO2lmKEQhPT12LlpfT0spdGhyb3cgbmV3IEVycm9yKF9bRF0pO3RoaXMuaGVhZGVyPW5ldyBJLHUuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfWZ1bmN0aW9uIFAoQiwkKXt2'@; put 'YXIgRD1uZXcgTigkKTtpZihELnB1c2goQiwhMCksRC5lcnIpdGhyb3cgRC5tc2d8fF9bRC5lcnJdO3JldHVybiBELnJlc3VsdH1OLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKEIsJCl7dmFyIEQseCxNLGosYyxtLGc9dGhpcy5zdHJtLHk9dGhpcy5vcHRpb25zLmNodW5rU2l6ZSx3PXRoaXMu'@; put 'b3B0aW9ucy5kaWN0aW9uYXJ5LGs9ITE7aWYodGhpcy5lbmRlZClyZXR1cm4hMTt4PSQ9PT1+fiQ/JDohMD09PSQ/di5aX0ZJTklTSDp2LlpfTk9fRkxVU0gsZy5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIEI/ZC5iaW5zdHJpbmcyYnVmKEIpOiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1MLmNh'@; put 'bGwoQik/bmV3IFVpbnQ4QXJyYXkoQik6QixnLm5leHRfaW49MCxnLmF2YWlsX2luPWcuaW5wdXQubGVuZ3RoO2Rve2lmKDA9PT1nLmF2YWlsX291dCYmKGcub3V0cHV0PW5ldyBwLkJ1ZjgoeSksZy5uZXh0X291dD0wLGcuYXZhaWxfb3V0PXkpLChEPXUuaW5mbGF0ZShnLHYuWl9OT19GTFVT'@; put 'SCkpPT09di5aX05FRURfRElDVCYmdyYmKG09InN0cmluZyI9PXR5cGVvZiB3P2Quc3RyaW5nMmJ1Zih3KToiW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09TC5jYWxsKHcpP25ldyBVaW50OEFycmF5KHcpOncsRD11LmluZmxhdGVTZXREaWN0aW9uYXJ5KHRoaXMuc3RybSxtKSksRD09PXYuWl9C'@; put 'VUZfRVJST1ImJiEwPT09ayYmKEQ9di5aX09LLGs9ITEpLEQhPT12LlpfU1RSRUFNX0VORCYmRCE9PXYuWl9PSylyZXR1cm4gdGhpcy5vbkVuZChEKSwhKHRoaXMuZW5kZWQ9ITApO2cubmV4dF9vdXQmJigwIT09Zy5hdmFpbF9vdXQmJkQhPT12LlpfU1RSRUFNX0VORCYmKDAhPT1nLmF2YWls'@; put 'X2lufHx4IT09di5aX0ZJTklTSCYmeCE9PXYuWl9TWU5DX0ZMVVNIKXx8KCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvPyhNPWQudXRmOGJvcmRlcihnLm91dHB1dCxnLm5leHRfb3V0KSxqPWcubmV4dF9vdXQtTSxjPWQuYnVmMnN0cmluZyhnLm91dHB1dCxNKSxnLm5leHRfb3V0PWosZy5h'@; put 'dmFpbF9vdXQ9eS1qLGomJnAuYXJyYXlTZXQoZy5vdXRwdXQsZy5vdXRwdXQsTSxqLDApLHRoaXMub25EYXRhKGMpKTp0aGlzLm9uRGF0YShwLnNocmlua0J1ZihnLm91dHB1dCxnLm5leHRfb3V0KSkpKSwwPT09Zy5hdmFpbF9pbiYmMD09PWcuYXZhaWxfb3V0JiYoaz0hMCl9d2hpbGUoKDA8'@; put 'Zy5hdmFpbF9pbnx8MD09PWcuYXZhaWxfb3V0KSYmRCE9PXYuWl9TVFJFQU1fRU5EKTtyZXR1cm4gRD09PXYuWl9TVFJFQU1fRU5EJiYoeD12LlpfRklOSVNIKSx4PT09di5aX0ZJTklTSD8oRD11LmluZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKEQpLHRoaXMuZW5kZWQ9ITAsRD09'@; put 'PXYuWl9PSyk6eCE9PXYuWl9TWU5DX0ZMVVNIfHwodGhpcy5vbkVuZCh2LlpfT0spLCEoZy5hdmFpbF9vdXQ9MCkpfSxOLnByb3RvdHlwZS5vbkRhdGE9ZnVuY3Rpb24oQil7dGhpcy5jaHVua3MucHVzaChCKX0sTi5wcm90b3R5cGUub25FbmQ9ZnVuY3Rpb24oQil7Qj09PXYuWl9PSyYmKHRo'@; put 'aXMucmVzdWx0PSJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP3RoaXMuY2h1bmtzLmpvaW4oIiIpOnAuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPUIsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sZi5JbmZsYXRlPU4sZi5pbmZsYXRlPVAsZi5p'@; put 'bmZsYXRlUmF3PWZ1bmN0aW9uKEIsJCl7cmV0dXJuKCQ9JHx8e30pLnJhdz0hMCxQKEIsJCl9LGYudW5nemlwPVB9LHsiLi91dGlscy9jb21tb24iOjQxLCIuL3V0aWxzL3N0cmluZ3MiOjQyLCIuL3psaWIvY29uc3RhbnRzIjo0NCwiLi96bGliL2d6aGVhZGVyIjo0NywiLi96bGliL2luZmxh'@; put 'dGUiOjQ5LCIuL3psaWIvbWVzc2FnZXMiOjUxLCIuL3psaWIvenN0cmVhbSI6NTN9XSw0MTpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PXR5cGVvZiBVaW50OEFycmF5PCJ1IiYmdHlwZW9mIFVpbnQxNkFycmF5PCJ1IiYmdHlwZW9mIEludDMyQXJyYXk8InUiO2YuYXNzaWduPWZ1bmN0aW9uKHYp'@; put 'e2Zvcih2YXIgXz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Xy5sZW5ndGg7KXt2YXIgQT1fLnNoaWZ0KCk7aWYoQSl7aWYoIm9iamVjdCIhPXR5cGVvZiBBKXRocm93IG5ldyBUeXBlRXJyb3IoQSsibXVzdCBiZSBub24tb2JqZWN0Iik7Zm9yKHZhciBJIGluIEEp'@; put 'QS5oYXNPd25Qcm9wZXJ0eShJKSYmKHZbSV09QVtJXSl9fXJldHVybiB2fSxmLnNocmlua0J1Zj1mdW5jdGlvbih2LF8pe3JldHVybiB2Lmxlbmd0aD09PV8/djp2LnN1YmFycmF5P3Yuc3ViYXJyYXkoMCxfKToodi5sZW5ndGg9Xyx2KX07dmFyIHA9e2FycmF5U2V0OmZ1bmN0aW9uKHYsXyxB'@; put 'LEksTCl7aWYoXy5zdWJhcnJheSYmdi5zdWJhcnJheSl2LnNldChfLnN1YmFycmF5KEEsQStJKSxMKTtlbHNlIGZvcih2YXIgTj0wO048STtOKyspdltMK05dPV9bQStOXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbih2KXt2YXIgXyxBLEksTCxOLFA7Zm9yKF89ST0wLEE9di5sZW5ndGg7XzxB'@; put 'O18rKylJKz12W19dLmxlbmd0aDtmb3IoUD1uZXcgVWludDhBcnJheShJKSxfPUw9MCxBPXYubGVuZ3RoO188QTtfKyspUC5zZXQoTj12W19dLEwpLEwrPU4ubGVuZ3RoO3JldHVybiBQfX0sZD17YXJyYXlTZXQ6ZnVuY3Rpb24odixfLEEsSSxMKXtmb3IodmFyIE49MDtOPEk7TisrKXZbTCtO'@; put 'XT1fW0ErTl19LGZsYXR0ZW5DaHVua3M6ZnVuY3Rpb24odil7cmV0dXJuW10uY29uY2F0LmFwcGx5KFtdLHYpfX07Zi5zZXRUeXBlZD1mdW5jdGlvbih2KXt2PyhmLkJ1Zjg9VWludDhBcnJheSxmLkJ1ZjE2PVVpbnQxNkFycmF5LGYuQnVmMzI9SW50MzJBcnJheSxmLmFzc2lnbihmLHApKToo'@; put 'Zi5CdWY4PUFycmF5LGYuQnVmMTY9QXJyYXksZi5CdWYzMj1BcnJheSxmLmFzc2lnbihmLGQpKX0sZi5zZXRUeXBlZCh1KX0se31dLDQyOltmdW5jdGlvbihpLGgsZil7dmFyIHU9aSgiLi9jb21tb24iKSxwPSEwLGQ9ITA7dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxbMF0p'@; put 'fWNhdGNoe3A9ITF9dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSgxKSl9Y2F0Y2h7ZD0hMX1mb3IodmFyIHY9bmV3IHUuQnVmOCgyNTYpLF89MDtfPDI1NjtfKyspdltfXT0yNTI8PV8/NjoyNDg8PV8/NToyNDA8PV8/NDoyMjQ8PV8/MzoxOTI8PV8/'@; put 'MjoxO2Z1bmN0aW9uIEEoSSxMKXtpZihMPDY1NTM3JiYoSS5zdWJhcnJheSYmZHx8IUkuc3ViYXJyYXkmJnApKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdS5zaHJpbmtCdWYoSSxMKSk7Zm9yKHZhciBOPSIiLFA9MDtQPEw7UCsrKU4rPVN0cmluZy5mcm9tQ2hhckNv'@; put 'ZGUoSVtQXSk7cmV0dXJuIE59dlsyNTRdPXZbMjU0XT0xLGYuc3RyaW5nMmJ1Zj1mdW5jdGlvbihJKXt2YXIgTCxOLFAsQiwkLEQ9SS5sZW5ndGgseD0wO2ZvcihCPTA7QjxEO0IrKyk1NTI5Nj09KDY0NTEyJihOPUkuY2hhckNvZGVBdChCKSkpJiZCKzE8RCYmNTYzMjA9PSg2NDUxMiYoUD1J'@; put 'LmNoYXJDb2RlQXQoQisxKSkpJiYoTj02NTUzNisoTi01NTI5Njw8MTApKyhQLTU2MzIwKSxCKyspLHgrPU48MTI4PzE6TjwyMDQ4PzI6Tjw2NTUzNj8zOjQ7Zm9yKEw9bmV3IHUuQnVmOCh4KSxCPSQ9MDskPHg7QisrKTU1Mjk2PT0oNjQ1MTImKE49SS5jaGFyQ29kZUF0KEIpKSkmJkIrMTxE'@; put 'JiY1NjMyMD09KDY0NTEyJihQPUkuY2hhckNvZGVBdChCKzEpKSkmJihOPTY1NTM2KyhOLTU1Mjk2PDwxMCkrKFAtNTYzMjApLEIrKyksTjwxMjg/TFskKytdPU46KE48MjA0OD9MWyQrK109MTkyfE4+Pj42OihOPDY1NTM2P0xbJCsrXT0yMjR8Tj4+PjEyOihMWyQrK109MjQwfE4+Pj4xOCxM'@; put 'WyQrK109MTI4fE4+Pj4xMiY2MyksTFskKytdPTEyOHxOPj4+NiY2MyksTFskKytdPTEyOHw2MyZOKTtyZXR1cm4gTH0sZi5idWYyYmluc3RyaW5nPWZ1bmN0aW9uKEkpe3JldHVybiBBKEksSS5sZW5ndGgpfSxmLmJpbnN0cmluZzJidWY9ZnVuY3Rpb24oSSl7Zm9yKHZhciBMPW5ldyB1LkJ1'@; put 'ZjgoSS5sZW5ndGgpLE49MCxQPUwubGVuZ3RoO048UDtOKyspTFtOXT1JLmNoYXJDb2RlQXQoTik7cmV0dXJuIEx9LGYuYnVmMnN0cmluZz1mdW5jdGlvbihJLEwpe3ZhciBOLFAsQiwkLEQ9THx8SS5sZW5ndGgseD1uZXcgQXJyYXkoMipEKTtmb3IoTj1QPTA7TjxEOylpZigoQj1JW04rK10p'@; put 'PDEyOCl4W1ArK109QjtlbHNlIGlmKDQ8KCQ9dltCXSkpeFtQKytdPTY1NTMzLE4rPSQtMTtlbHNle2ZvcihCJj0yPT09JD8zMTozPT09JD8xNTo3OzE8JCYmTjxEOylCPUI8PDZ8NjMmSVtOKytdLCQtLTsxPCQ/eFtQKytdPTY1NTMzOkI8NjU1MzY/eFtQKytdPUI6KHhbUCsrXT01NTI5Nnwo'@; put 'Qi09NjU1MzYpPj4xMCYxMDIzLHhbUCsrXT01NjMyMHwxMDIzJkIpfXJldHVybiBBKHgsUCl9LGYudXRmOGJvcmRlcj1mdW5jdGlvbihJLEwpe3ZhciBOO2ZvcigoTD1MfHxJLmxlbmd0aCk+SS5sZW5ndGgmJihMPUkubGVuZ3RoKSxOPUwtMTswPD1OJiYxMjg9PSgxOTImSVtOXSk7KU4tLTty'@; put 'ZXR1cm4gTjwwfHwwPT09Tj9MOk4rdltJW05dXT5MP046TH19LHsiLi9jb21tb24iOjQxfV0sNDM6W2Z1bmN0aW9uKGksaCxmKXtoLmV4cG9ydHM9ZnVuY3Rpb24odSxwLGQsdil7Zm9yKHZhciBfPTY1NTM1JnUsQT11Pj4+MTYmNjU1MzUsST0wOzAhPT1kOyl7Zm9yKGQtPUk9MmUzPGQ/MmUz'@; put 'OmQ7QT1BKyhfPV8rcFt2KytdfDApfDAsLS1JOyk7XyU9NjU1MjEsQSU9NjU1MjF9cmV0dXJuIF98QTw8MTZ9fSx7fV0sNDQ6W2Z1bmN0aW9uKGksaCxmKXtoLmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJQUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJ'@; put 'TklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpfU1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9D'@; put 'T01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjotMSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpfVEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSw0NTpbZnVu'@; put 'Y3Rpb24oaSxoLGYpe3ZhciB1PWZ1bmN0aW9uKCl7Zm9yKHZhciBwLGQ9W10sdj0wO3Y8MjU2O3YrKyl7cD12O2Zvcih2YXIgXz0wO188ODtfKyspcD0xJnA/Mzk4ODI5MjM4NF5wPj4+MTpwPj4+MTtkW3ZdPXB9cmV0dXJuIGR9KCk7aC5leHBvcnRzPWZ1bmN0aW9uKHAsZCx2LF8pe3ZhciBB'@; put 'PXUsST1fK3Y7cF49LTE7Zm9yKHZhciBMPV87TDxJO0wrKylwPXA+Pj44XkFbMjU1JihwXmRbTF0pXTtyZXR1cm4tMV5wfX0se31dLDQ2OltmdW5jdGlvbihpLGgsZil7dmFyIHUscD1pKCIuLi91dGlscy9jb21tb24iKSxkPWkoIi4vdHJlZXMiKSx2PWkoIi4vYWRsZXIzMiIpLF89aSgiLi9j'@; put 'cmMzMiIpLEE9aSgiLi9tZXNzYWdlcyIpLEk9LTIsTD0yNTgsTj0yNjIsUD0xMTM7ZnVuY3Rpb24gQihSLEgpe3JldHVybiBSLm1zZz1BW0hdLEh9ZnVuY3Rpb24gJChSKXtyZXR1cm4oUjw8MSktKDQ8Uj85OjApfWZ1bmN0aW9uIEQoUil7Zm9yKHZhciBIPVIubGVuZ3RoOzA8PS0tSDspUltI'@; put 'XT0wfWZ1bmN0aW9uIHgoUil7dmFyIEg9Ui5zdGF0ZSxUPUgucGVuZGluZztUPlIuYXZhaWxfb3V0JiYoVD1SLmF2YWlsX291dCksMCE9PVQmJihwLmFycmF5U2V0KFIub3V0cHV0LEgucGVuZGluZ19idWYsSC5wZW5kaW5nX291dCxULFIubmV4dF9vdXQpLFIubmV4dF9vdXQrPVQsSC5wZW5k'@; put 'aW5nX291dCs9VCxSLnRvdGFsX291dCs9VCxSLmF2YWlsX291dC09VCxILnBlbmRpbmctPVQsMD09PUgucGVuZGluZyYmKEgucGVuZGluZ19vdXQ9MCkpfWZ1bmN0aW9uIE0oUixIKXtkLl90cl9mbHVzaF9ibG9jayhSLDA8PVIuYmxvY2tfc3RhcnQ/Ui5ibG9ja19zdGFydDotMSxSLnN0cnN0'@; put 'YXJ0LVIuYmxvY2tfc3RhcnQsSCksUi5ibG9ja19zdGFydD1SLnN0cnN0YXJ0LHgoUi5zdHJtKX1mdW5jdGlvbiBqKFIsSCl7Ui5wZW5kaW5nX2J1ZltSLnBlbmRpbmcrK109SH1mdW5jdGlvbiBjKFIsSCl7Ui5wZW5kaW5nX2J1ZltSLnBlbmRpbmcrK109SD4+PjgmMjU1LFIucGVuZGluZ19i'@; put 'dWZbUi5wZW5kaW5nKytdPTI1NSZIfWZ1bmN0aW9uIG0oUixIKXt2YXIgVCxDLEY9Ui5tYXhfY2hhaW5fbGVuZ3RoLHE9Ui5zdHJzdGFydCxZPVIucHJldl9sZW5ndGgsWD1SLm5pY2VfbWF0Y2gsSz1SLnN0cnN0YXJ0PlIud19zaXplLU4/Ui5zdHJzdGFydC0oUi53X3NpemUtTik6MCxydD1S'@; put 'LndpbmRvdyx0dD1SLndfbWFzayxXPVIucHJldixRPVIuc3Ryc3RhcnQrTCxHPXJ0W3ErWS0xXSxldD1ydFtxK1ldO1IucHJldl9sZW5ndGg+PVIuZ29vZF9tYXRjaCYmKEY+Pj0yKSxYPlIubG9va2FoZWFkJiYoWD1SLmxvb2thaGVhZCk7ZG97aWYocnRbKFQ9SCkrWV09PT1ldCYmcnRbVCtZ'@; put 'LTFdPT09RyYmcnRbVF09PT1ydFtxXSYmcnRbKytUXT09PXJ0W3ErMV0pe3ErPTIsVCsrO2Rve313aGlsZShydFsrK3FdPT09cnRbKytUXSYmcnRbKytxXT09PXJ0WysrVF0mJnJ0WysrcV09PT1ydFsrK1RdJiZydFsrK3FdPT09cnRbKytUXSYmcnRbKytxXT09PXJ0WysrVF0mJnJ0WysrcV09'@; put 'PT1ydFsrK1RdJiZydFsrK3FdPT09cnRbKytUXSYmcnRbKytxXT09PXJ0WysrVF0mJnE8USk7aWYoQz1MLShRLXEpLHE9US1MLFk8Qyl7aWYoUi5tYXRjaF9zdGFydD1ILFg8PShZPUMpKWJyZWFrO0c9cnRbcStZLTFdLGV0PXJ0W3ErWV19fX13aGlsZSgoSD1XW0gmdHRdKT5LJiYwIT0tLUYp'@; put 'O3JldHVybiBZPD1SLmxvb2thaGVhZD9ZOlIubG9va2FoZWFkfWZ1bmN0aW9uIGcoUil7dmFyIEgsVCxDLEYscSxZLFgsSyxydCx0dCxXPVIud19zaXplO2Rve2lmKEY9Ui53aW5kb3dfc2l6ZS1SLmxvb2thaGVhZC1SLnN0cnN0YXJ0LFIuc3Ryc3RhcnQ+PVcrKFctTikpe2ZvcihwLmFycmF5'@; put 'U2V0KFIud2luZG93LFIud2luZG93LFcsVywwKSxSLm1hdGNoX3N0YXJ0LT1XLFIuc3Ryc3RhcnQtPVcsUi5ibG9ja19zdGFydC09VyxIPVQ9Ui5oYXNoX3NpemU7Qz1SLmhlYWRbLS1IXSxSLmhlYWRbSF09Vzw9Qz9DLVc6MCwtLVQ7KTtmb3IoSD1UPVc7Qz1SLnByZXZbLS1IXSxSLnByZXZb'@; put 'SF09Vzw9Qz9DLVc6MCwtLVQ7KTtGKz1XfWlmKDA9PT1SLnN0cm0uYXZhaWxfaW4pYnJlYWs7aWYoWD1SLndpbmRvdyxLPVIuc3Ryc3RhcnQrUi5sb29rYWhlYWQsdHQ9dm9pZCAwLChydD1GKTwodHQ9KFk9Ui5zdHJtKS5hdmFpbF9pbikmJih0dD1ydCksVD0wPT09dHQ/MDooWS5hdmFpbF9p'@; put 'bi09dHQscC5hcnJheVNldChYLFkuaW5wdXQsWS5uZXh0X2luLHR0LEspLDE9PT1ZLnN0YXRlLndyYXA/WS5hZGxlcj12KFkuYWRsZXIsWCx0dCxLKToyPT09WS5zdGF0ZS53cmFwJiYoWS5hZGxlcj1fKFkuYWRsZXIsWCx0dCxLKSksWS5uZXh0X2luKz10dCxZLnRvdGFsX2luKz10dCx0dCks'@; put 'Ui5sb29rYWhlYWQrPVQsUi5sb29rYWhlYWQrUi5pbnNlcnQ+PTMpZm9yKFIuaW5zX2g9Ui53aW5kb3dbcT1SLnN0cnN0YXJ0LVIuaW5zZXJ0XSxSLmluc19oPShSLmluc19oPDxSLmhhc2hfc2hpZnReUi53aW5kb3dbcSsxXSkmUi5oYXNoX21hc2s7Ui5pbnNlcnQmJihSLmluc19oPShSLmlu'@; put 'c19oPDxSLmhhc2hfc2hpZnReUi53aW5kb3dbcSszLTFdKSZSLmhhc2hfbWFzayxSLnByZXZbcSZSLndfbWFza109Ui5oZWFkW1IuaW5zX2hdLFIuaGVhZFtSLmluc19oXT1xLHErKyxSLmluc2VydC0tLCEoUi5sb29rYWhlYWQrUi5pbnNlcnQ8MykpOyk7fXdoaWxlKFIubG9va2FoZWFkPE4m'@; put 'JjAhPT1SLnN0cm0uYXZhaWxfaW4pfWZ1bmN0aW9uIHkoUixIKXtmb3IodmFyIFQsQzs7KXtpZihSLmxvb2thaGVhZDxOKXtpZihnKFIpLFIubG9va2FoZWFkPE4mJjA9PT1IKXJldHVybiAxO2lmKDA9PT1SLmxvb2thaGVhZClicmVha31pZihUPTAsUi5sb29rYWhlYWQ+PTMmJihSLmluc19o'@; put 'PShSLmluc19oPDxSLmhhc2hfc2hpZnReUi53aW5kb3dbUi5zdHJzdGFydCszLTFdKSZSLmhhc2hfbWFzayxUPVIucHJldltSLnN0cnN0YXJ0JlIud19tYXNrXT1SLmhlYWRbUi5pbnNfaF0sUi5oZWFkW1IuaW5zX2hdPVIuc3Ryc3RhcnQpLDAhPT1UJiZSLnN0cnN0YXJ0LVQ8PVIud19zaXpl'@; put 'LU4mJihSLm1hdGNoX2xlbmd0aD1tKFIsVCkpLFIubWF0Y2hfbGVuZ3RoPj0zKWlmKEM9ZC5fdHJfdGFsbHkoUixSLnN0cnN0YXJ0LVIubWF0Y2hfc3RhcnQsUi5tYXRjaF9sZW5ndGgtMyksUi5sb29rYWhlYWQtPVIubWF0Y2hfbGVuZ3RoLFIubWF0Y2hfbGVuZ3RoPD1SLm1heF9sYXp5X21h'@; put 'dGNoJiZSLmxvb2thaGVhZD49Myl7Zm9yKFIubWF0Y2hfbGVuZ3RoLS07Ui5zdHJzdGFydCsrLFIuaW5zX2g9KFIuaW5zX2g8PFIuaGFzaF9zaGlmdF5SLndpbmRvd1tSLnN0cnN0YXJ0KzMtMV0pJlIuaGFzaF9tYXNrLFQ9Ui5wcmV2W1Iuc3Ryc3RhcnQmUi53X21hc2tdPVIuaGVhZFtSLmlu'@; put 'c19oXSxSLmhlYWRbUi5pbnNfaF09Ui5zdHJzdGFydCwwIT0tLVIubWF0Y2hfbGVuZ3RoOyk7Ui5zdHJzdGFydCsrfWVsc2UgUi5zdHJzdGFydCs9Ui5tYXRjaF9sZW5ndGgsUi5tYXRjaF9sZW5ndGg9MCxSLmluc19oPVIud2luZG93W1Iuc3Ryc3RhcnRdLFIuaW5zX2g9KFIuaW5zX2g8PFIu'@; put 'aGFzaF9zaGlmdF5SLndpbmRvd1tSLnN0cnN0YXJ0KzFdKSZSLmhhc2hfbWFzaztlbHNlIEM9ZC5fdHJfdGFsbHkoUiwwLFIud2luZG93W1Iuc3Ryc3RhcnRdKSxSLmxvb2thaGVhZC0tLFIuc3Ryc3RhcnQrKztpZihDJiYoTShSLCExKSwwPT09Ui5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9'@; put 'cmV0dXJuIFIuaW5zZXJ0PVIuc3Ryc3RhcnQ8Mj9SLnN0cnN0YXJ0OjIsND09PUg/KE0oUiwhMCksMD09PVIuc3RybS5hdmFpbF9vdXQ/Mzo0KTpSLmxhc3RfbGl0JiYoTShSLCExKSwwPT09Ui5zdHJtLmF2YWlsX291dCk/MToyfWZ1bmN0aW9uIHcoUixIKXtmb3IodmFyIFQsQyxGOzspe2lm'@; put 'KFIubG9va2FoZWFkPE4pe2lmKGcoUiksUi5sb29rYWhlYWQ8TiYmMD09PUgpcmV0dXJuIDE7aWYoMD09PVIubG9va2FoZWFkKWJyZWFrfWlmKFQ9MCxSLmxvb2thaGVhZD49MyYmKFIuaW5zX2g9KFIuaW5zX2g8PFIuaGFzaF9zaGlmdF5SLndpbmRvd1tSLnN0cnN0YXJ0KzMtMV0pJlIuaGFz'@; put 'aF9tYXNrLFQ9Ui5wcmV2W1Iuc3Ryc3RhcnQmUi53X21hc2tdPVIuaGVhZFtSLmluc19oXSxSLmhlYWRbUi5pbnNfaF09Ui5zdHJzdGFydCksUi5wcmV2X2xlbmd0aD1SLm1hdGNoX2xlbmd0aCxSLnByZXZfbWF0Y2g9Ui5tYXRjaF9zdGFydCxSLm1hdGNoX2xlbmd0aD0yLDAhPT1UJiZSLnBy'@; put 'ZXZfbGVuZ3RoPFIubWF4X2xhenlfbWF0Y2gmJlIuc3Ryc3RhcnQtVDw9Ui53X3NpemUtTiYmKFIubWF0Y2hfbGVuZ3RoPW0oUixUKSxSLm1hdGNoX2xlbmd0aDw9NSYmKDE9PT1SLnN0cmF0ZWd5fHwzPT09Ui5tYXRjaF9sZW5ndGgmJjQwOTY8Ui5zdHJzdGFydC1SLm1hdGNoX3N0YXJ0KSYm'@; put 'KFIubWF0Y2hfbGVuZ3RoPTIpKSxSLnByZXZfbGVuZ3RoPj0zJiZSLm1hdGNoX2xlbmd0aDw9Ui5wcmV2X2xlbmd0aCl7Zm9yKEY9Ui5zdHJzdGFydCtSLmxvb2thaGVhZC0zLEM9ZC5fdHJfdGFsbHkoUixSLnN0cnN0YXJ0LTEtUi5wcmV2X21hdGNoLFIucHJldl9sZW5ndGgtMyksUi5sb29r'@; put 'YWhlYWQtPVIucHJldl9sZW5ndGgtMSxSLnByZXZfbGVuZ3RoLT0yOysrUi5zdHJzdGFydDw9RiYmKFIuaW5zX2g9KFIuaW5zX2g8PFIuaGFzaF9zaGlmdF5SLndpbmRvd1tSLnN0cnN0YXJ0KzMtMV0pJlIuaGFzaF9tYXNrLFQ9Ui5wcmV2W1Iuc3Ryc3RhcnQmUi53X21hc2tdPVIuaGVhZFtS'@; put 'Lmluc19oXSxSLmhlYWRbUi5pbnNfaF09Ui5zdHJzdGFydCksMCE9LS1SLnByZXZfbGVuZ3RoOyk7aWYoUi5tYXRjaF9hdmFpbGFibGU9MCxSLm1hdGNoX2xlbmd0aD0yLFIuc3Ryc3RhcnQrKyxDJiYoTShSLCExKSwwPT09Ui5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9ZWxzZSBpZihSLm1h'@; put 'dGNoX2F2YWlsYWJsZSl7aWYoKEM9ZC5fdHJfdGFsbHkoUiwwLFIud2luZG93W1Iuc3Ryc3RhcnQtMV0pKSYmTShSLCExKSxSLnN0cnN0YXJ0KyssUi5sb29rYWhlYWQtLSwwPT09Ui5zdHJtLmF2YWlsX291dClyZXR1cm4gMX1lbHNlIFIubWF0Y2hfYXZhaWxhYmxlPTEsUi5zdHJzdGFydCsr'@; put 'LFIubG9va2FoZWFkLS19cmV0dXJuIFIubWF0Y2hfYXZhaWxhYmxlJiYoQz1kLl90cl90YWxseShSLDAsUi53aW5kb3dbUi5zdHJzdGFydC0xXSksUi5tYXRjaF9hdmFpbGFibGU9MCksUi5pbnNlcnQ9Ui5zdHJzdGFydDwyP1Iuc3Ryc3RhcnQ6Miw0PT09SD8oTShSLCEwKSwwPT09Ui5zdHJt'@; put 'LmF2YWlsX291dD8zOjQpOlIubGFzdF9saXQmJihNKFIsITEpLDA9PT1SLnN0cm0uYXZhaWxfb3V0KT8xOjJ9ZnVuY3Rpb24gayhSLEgsVCxDLEYpe3RoaXMuZ29vZF9sZW5ndGg9Uix0aGlzLm1heF9sYXp5PUgsdGhpcy5uaWNlX2xlbmd0aD1ULHRoaXMubWF4X2NoYWluPUMsdGhpcy5mdW5j'@; put 'PUZ9ZnVuY3Rpb24gTygpe3RoaXMuc3RybT1udWxsLHRoaXMuc3RhdHVzPTAsdGhpcy5wZW5kaW5nX2J1Zj1udWxsLHRoaXMucGVuZGluZ19idWZfc2l6ZT0wLHRoaXMucGVuZGluZ19vdXQ9MCx0aGlzLnBlbmRpbmc9MCx0aGlzLndyYXA9MCx0aGlzLmd6aGVhZD1udWxsLHRoaXMuZ3ppbmRl'@; put 'eD0wLHRoaXMubWV0aG9kPTgsdGhpcy5sYXN0X2ZsdXNoPS0xLHRoaXMud19zaXplPTAsdGhpcy53X2JpdHM9MCx0aGlzLndfbWFzaz0wLHRoaXMud2luZG93PW51bGwsdGhpcy53aW5kb3dfc2l6ZT0wLHRoaXMucHJldj1udWxsLHRoaXMuaGVhZD1udWxsLHRoaXMuaW5zX2g9MCx0aGlzLmhh'@; put 'c2hfc2l6ZT0wLHRoaXMuaGFzaF9iaXRzPTAsdGhpcy5oYXNoX21hc2s9MCx0aGlzLmhhc2hfc2hpZnQ9MCx0aGlzLmJsb2NrX3N0YXJ0PTAsdGhpcy5tYXRjaF9sZW5ndGg9MCx0aGlzLnByZXZfbWF0Y2g9MCx0aGlzLm1hdGNoX2F2YWlsYWJsZT0wLHRoaXMuc3Ryc3RhcnQ9MCx0aGlzLm1h'@; put 'dGNoX3N0YXJ0PTAsdGhpcy5sb29rYWhlYWQ9MCx0aGlzLnByZXZfbGVuZ3RoPTAsdGhpcy5tYXhfY2hhaW5fbGVuZ3RoPTAsdGhpcy5tYXhfbGF6eV9tYXRjaD0wLHRoaXMubGV2ZWw9MCx0aGlzLnN0cmF0ZWd5PTAsdGhpcy5nb29kX21hdGNoPTAsdGhpcy5uaWNlX21hdGNoPTAsdGhpcy5k'@; put 'eW5fbHRyZWU9bmV3IHAuQnVmMTYoMTE0NiksdGhpcy5keW5fZHRyZWU9bmV3IHAuQnVmMTYoMTIyKSx0aGlzLmJsX3RyZWU9bmV3IHAuQnVmMTYoNzgpLEQodGhpcy5keW5fbHRyZWUpLEQodGhpcy5keW5fZHRyZWUpLEQodGhpcy5ibF90cmVlKSx0aGlzLmxfZGVzYz1udWxsLHRoaXMuZF9k'@; put 'ZXNjPW51bGwsdGhpcy5ibF9kZXNjPW51bGwsdGhpcy5ibF9jb3VudD1uZXcgcC5CdWYxNigxNiksdGhpcy5oZWFwPW5ldyBwLkJ1ZjE2KDU3MyksRCh0aGlzLmhlYXApLHRoaXMuaGVhcF9sZW49MCx0aGlzLmhlYXBfbWF4PTAsdGhpcy5kZXB0aD1uZXcgcC5CdWYxNig1NzMpLEQodGhpcy5k'@; put 'ZXB0aCksdGhpcy5sX2J1Zj0wLHRoaXMubGl0X2J1ZnNpemU9MCx0aGlzLmxhc3RfbGl0PTAsdGhpcy5kX2J1Zj0wLHRoaXMub3B0X2xlbj0wLHRoaXMuc3RhdGljX2xlbj0wLHRoaXMubWF0Y2hlcz0wLHRoaXMuaW5zZXJ0PTAsdGhpcy5iaV9idWY9MCx0aGlzLmJpX3ZhbGlkPTB9ZnVuY3Rp'@; put 'b24geihSKXt2YXIgSDtyZXR1cm4gUiYmUi5zdGF0ZT8oUi50b3RhbF9pbj1SLnRvdGFsX291dD0wLFIuZGF0YV90eXBlPTIsKEg9Ui5zdGF0ZSkucGVuZGluZz0wLEgucGVuZGluZ19vdXQ9MCxILndyYXA8MCYmKEgud3JhcD0tSC53cmFwKSxILnN0YXR1cz1ILndyYXA/NDI6UCxSLmFkbGVy'@; put 'PTI9PT1ILndyYXA/MDoxLEgubGFzdF9mbHVzaD0wLGQuX3RyX2luaXQoSCksMCk6QihSLEkpfWZ1bmN0aW9uIFUoUil7dmFyIFQsSD16KFIpO3JldHVybiAwPT09SCYmKChUPVIuc3RhdGUpLndpbmRvd19zaXplPTIqVC53X3NpemUsRChULmhlYWQpLFQubWF4X2xhenlfbWF0Y2g9dVtULmxl'@; put 'dmVsXS5tYXhfbGF6eSxULmdvb2RfbWF0Y2g9dVtULmxldmVsXS5nb29kX2xlbmd0aCxULm5pY2VfbWF0Y2g9dVtULmxldmVsXS5uaWNlX2xlbmd0aCxULm1heF9jaGFpbl9sZW5ndGg9dVtULmxldmVsXS5tYXhfY2hhaW4sVC5zdHJzdGFydD0wLFQuYmxvY2tfc3RhcnQ9MCxULmxvb2thaGVh'@; put 'ZD0wLFQuaW5zZXJ0PTAsVC5tYXRjaF9sZW5ndGg9VC5wcmV2X2xlbmd0aD0yLFQubWF0Y2hfYXZhaWxhYmxlPTAsVC5pbnNfaD0wKSxIfWZ1bmN0aW9uIFYoUixILFQsQyxGLHEpe2lmKCFSKXJldHVybiBJO3ZhciBZPTE7aWYoLTE9PT1IJiYoSD02KSxDPDA/KFk9MCxDPS1DKToxNTxDJiYo'@; put 'WT0yLEMtPTE2KSxGPDF8fDk8Rnx8OCE9PVR8fEM8OHx8MTU8Q3x8SDwwfHw5PEh8fHE8MHx8NDxxKXJldHVybiBCKFIsSSk7OD09PUMmJihDPTkpO3ZhciBYPW5ldyBPO3JldHVybihSLnN0YXRlPVgpLnN0cm09UixYLndyYXA9WSxYLmd6aGVhZD1udWxsLFgud19iaXRzPUMsWC53X3NpemU9'@; put 'MTw8WC53X2JpdHMsWC53X21hc2s9WC53X3NpemUtMSxYLmhhc2hfYml0cz1GKzcsWC5oYXNoX3NpemU9MTw8WC5oYXNoX2JpdHMsWC5oYXNoX21hc2s9WC5oYXNoX3NpemUtMSxYLmhhc2hfc2hpZnQ9fn4oKFguaGFzaF9iaXRzKzMtMSkvMyksWC53aW5kb3c9bmV3IHAuQnVmOCgyKlgud19z'@; put 'aXplKSxYLmhlYWQ9bmV3IHAuQnVmMTYoWC5oYXNoX3NpemUpLFgucHJldj1uZXcgcC5CdWYxNihYLndfc2l6ZSksWC5saXRfYnVmc2l6ZT0xPDxGKzYsWC5wZW5kaW5nX2J1Zl9zaXplPTQqWC5saXRfYnVmc2l6ZSxYLnBlbmRpbmdfYnVmPW5ldyBwLkJ1ZjgoWC5wZW5kaW5nX2J1Zl9zaXpl'@; put 'KSxYLmRfYnVmPTEqWC5saXRfYnVmc2l6ZSxYLmxfYnVmPTMqWC5saXRfYnVmc2l6ZSxYLmxldmVsPUgsWC5zdHJhdGVneT1xLFgubWV0aG9kPVQsVShSKX11PVtuZXcgaygwLDAsMCwwLGZ1bmN0aW9uKFIsSCl7dmFyIFQ9NjU1MzU7Zm9yKFQ+Ui5wZW5kaW5nX2J1Zl9zaXplLTUmJihUPVIu'@; put 'cGVuZGluZ19idWZfc2l6ZS01KTs7KXtpZihSLmxvb2thaGVhZDw9MSl7aWYoZyhSKSwwPT09Ui5sb29rYWhlYWQmJjA9PT1IKXJldHVybiAxO2lmKDA9PT1SLmxvb2thaGVhZClicmVha31SLnN0cnN0YXJ0Kz1SLmxvb2thaGVhZCxSLmxvb2thaGVhZD0wO3ZhciBDPVIuYmxvY2tfc3RhcnQr'@; put 'VDtpZigoMD09PVIuc3Ryc3RhcnR8fFIuc3Ryc3RhcnQ+PUMpJiYoUi5sb29rYWhlYWQ9Ui5zdHJzdGFydC1DLFIuc3Ryc3RhcnQ9QyxNKFIsITEpLDA9PT1SLnN0cm0uYXZhaWxfb3V0KXx8Ui5zdHJzdGFydC1SLmJsb2NrX3N0YXJ0Pj1SLndfc2l6ZS1OJiYoTShSLCExKSwwPT09Ui5zdHJt'@; put 'LmF2YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIFIuaW5zZXJ0PTAsND09PUg/KE0oUiwhMCksMD09PVIuc3RybS5hdmFpbF9vdXQ/Mzo0KTooUi5zdHJzdGFydD5SLmJsb2NrX3N0YXJ0JiZNKFIsITEpLDEpfSksbmV3IGsoNCw0LDgsNCx5KSxuZXcgayg0LDUsMTYsOCx5KSxuZXcgayg0LDYs'@; put 'MzIsMzIseSksbmV3IGsoNCw0LDE2LDE2LHcpLG5ldyBrKDgsMTYsMzIsMzIsdyksbmV3IGsoOCwxNiwxMjgsMTI4LHcpLG5ldyBrKDgsMzIsMTI4LDI1Nix3KSxuZXcgaygzMiwxMjgsMjU4LDEwMjQsdyksbmV3IGsoMzIsMjU4LDI1OCw0MDk2LHcpXSxmLmRlZmxhdGVJbml0PWZ1bmN0aW9u'@; put 'KFIsSCl7cmV0dXJuIFYoUixILDgsMTUsOCwwKX0sZi5kZWZsYXRlSW5pdDI9VixmLmRlZmxhdGVSZXNldD1VLGYuZGVmbGF0ZVJlc2V0S2VlcD16LGYuZGVmbGF0ZVNldEhlYWRlcj1mdW5jdGlvbihSLEgpe3JldHVybiBSJiZSLnN0YXRlPzIhPT1SLnN0YXRlLndyYXA/STooUi5zdGF0ZS5n'@; put 'emhlYWQ9SCwwKTpJfSxmLmRlZmxhdGU9ZnVuY3Rpb24oUixIKXt2YXIgVCxDLEYscTtpZighUnx8IVIuc3RhdGV8fDU8SHx8SDwwKXJldHVybiBSP0IoUixJKTpJO2lmKEM9Ui5zdGF0ZSwhUi5vdXRwdXR8fCFSLmlucHV0JiYwIT09Ui5hdmFpbF9pbnx8NjY2PT09Qy5zdGF0dXMmJjQhPT1I'@; put 'KXJldHVybiBCKFIsMD09PVIuYXZhaWxfb3V0Py01OkkpO2lmKEMuc3RybT1SLFQ9Qy5sYXN0X2ZsdXNoLEMubGFzdF9mbHVzaD1ILDQyPT09Qy5zdGF0dXMpaWYoMj09PUMud3JhcClSLmFkbGVyPTAsaihDLDMxKSxqKEMsMTM5KSxqKEMsOCksQy5nemhlYWQ/KGooQywoQy5nemhlYWQudGV4'@; put 'dD8xOjApKyhDLmd6aGVhZC5oY3JjPzI6MCkrKEMuZ3poZWFkLmV4dHJhPzQ6MCkrKEMuZ3poZWFkLm5hbWU/ODowKSsoQy5nemhlYWQuY29tbWVudD8xNjowKSksaihDLDI1NSZDLmd6aGVhZC50aW1lKSxqKEMsQy5nemhlYWQudGltZT4+OCYyNTUpLGooQyxDLmd6aGVhZC50aW1lPj4xNiYy'@; put 'NTUpLGooQyxDLmd6aGVhZC50aW1lPj4yNCYyNTUpLGooQyw5PT09Qy5sZXZlbD8yOjI8PUMuc3RyYXRlZ3l8fEMubGV2ZWw8Mj80OjApLGooQywyNTUmQy5nemhlYWQub3MpLEMuZ3poZWFkLmV4dHJhJiZDLmd6aGVhZC5leHRyYS5sZW5ndGgmJihqKEMsMjU1JkMuZ3poZWFkLmV4dHJhLmxl'@; put 'bmd0aCksaihDLEMuZ3poZWFkLmV4dHJhLmxlbmd0aD4+OCYyNTUpKSxDLmd6aGVhZC5oY3JjJiYoUi5hZGxlcj1fKFIuYWRsZXIsQy5wZW5kaW5nX2J1ZixDLnBlbmRpbmcsMCkpLEMuZ3ppbmRleD0wLEMuc3RhdHVzPTY5KTooaihDLDApLGooQywwKSxqKEMsMCksaihDLDApLGooQywwKSxq'@; put 'KEMsOT09PUMubGV2ZWw/MjoyPD1DLnN0cmF0ZWd5fHxDLmxldmVsPDI/NDowKSxqKEMsMyksQy5zdGF0dXM9UCk7ZWxzZXt2YXIgWT04KyhDLndfYml0cy04PDw0KTw8ODtZfD0oMjw9Qy5zdHJhdGVneXx8Qy5sZXZlbDwyPzA6Qy5sZXZlbDw2PzE6Nj09PUMubGV2ZWw/MjozKTw8NiwwIT09'@; put 'Qy5zdHJzdGFydCYmKFl8PTMyKSxZKz0zMS1ZJTMxLEMuc3RhdHVzPVAsYyhDLFkpLDAhPT1DLnN0cnN0YXJ0JiYoYyhDLFIuYWRsZXI+Pj4xNiksYyhDLDY1NTM1JlIuYWRsZXIpKSxSLmFkbGVyPTF9aWYoNjk9PT1DLnN0YXR1cylpZihDLmd6aGVhZC5leHRyYSl7Zm9yKEY9Qy5wZW5kaW5n'@; put 'O0MuZ3ppbmRleDwoNjU1MzUmQy5nemhlYWQuZXh0cmEubGVuZ3RoKSYmKEMucGVuZGluZyE9PUMucGVuZGluZ19idWZfc2l6ZXx8KEMuZ3poZWFkLmhjcmMmJkMucGVuZGluZz5GJiYoUi5hZGxlcj1fKFIuYWRsZXIsQy5wZW5kaW5nX2J1ZixDLnBlbmRpbmctRixGKSkseChSKSxGPUMucGVu'@; put 'ZGluZyxDLnBlbmRpbmchPT1DLnBlbmRpbmdfYnVmX3NpemUpKTspaihDLDI1NSZDLmd6aGVhZC5leHRyYVtDLmd6aW5kZXhdKSxDLmd6aW5kZXgrKztDLmd6aGVhZC5oY3JjJiZDLnBlbmRpbmc+RiYmKFIuYWRsZXI9XyhSLmFkbGVyLEMucGVuZGluZ19idWYsQy5wZW5kaW5nLUYsRikpLEMu'@; put 'Z3ppbmRleD09PUMuZ3poZWFkLmV4dHJhLmxlbmd0aCYmKEMuZ3ppbmRleD0wLEMuc3RhdHVzPTczKX1lbHNlIEMuc3RhdHVzPTczO2lmKDczPT09Qy5zdGF0dXMpaWYoQy5nemhlYWQubmFtZSl7Rj1DLnBlbmRpbmc7ZG97aWYoQy5wZW5kaW5nPT09Qy5wZW5kaW5nX2J1Zl9zaXplJiYoQy5n'@; put 'emhlYWQuaGNyYyYmQy5wZW5kaW5nPkYmJihSLmFkbGVyPV8oUi5hZGxlcixDLnBlbmRpbmdfYnVmLEMucGVuZGluZy1GLEYpKSx4KFIpLEY9Qy5wZW5kaW5nLEMucGVuZGluZz09PUMucGVuZGluZ19idWZfc2l6ZSkpe3E9MTticmVha31xPUMuZ3ppbmRleDxDLmd6aGVhZC5uYW1lLmxlbmd0'@; put 'aD8yNTUmQy5nemhlYWQubmFtZS5jaGFyQ29kZUF0KEMuZ3ppbmRleCsrKTowLGooQyxxKX13aGlsZSgwIT09cSk7Qy5nemhlYWQuaGNyYyYmQy5wZW5kaW5nPkYmJihSLmFkbGVyPV8oUi5hZGxlcixDLnBlbmRpbmdfYnVmLEMucGVuZGluZy1GLEYpKSwwPT09cSYmKEMuZ3ppbmRleD0wLEMu'@; put 'c3RhdHVzPTkxKX1lbHNlIEMuc3RhdHVzPTkxO2lmKDkxPT09Qy5zdGF0dXMpaWYoQy5nemhlYWQuY29tbWVudCl7Rj1DLnBlbmRpbmc7ZG97aWYoQy5wZW5kaW5nPT09Qy5wZW5kaW5nX2J1Zl9zaXplJiYoQy5nemhlYWQuaGNyYyYmQy5wZW5kaW5nPkYmJihSLmFkbGVyPV8oUi5hZGxlcixD'@; put 'LnBlbmRpbmdfYnVmLEMucGVuZGluZy1GLEYpKSx4KFIpLEY9Qy5wZW5kaW5nLEMucGVuZGluZz09PUMucGVuZGluZ19idWZfc2l6ZSkpe3E9MTticmVha31xPUMuZ3ppbmRleDxDLmd6aGVhZC5jb21tZW50Lmxlbmd0aD8yNTUmQy5nemhlYWQuY29tbWVudC5jaGFyQ29kZUF0KEMuZ3ppbmRl'@; put 'eCsrKTowLGooQyxxKX13aGlsZSgwIT09cSk7Qy5nemhlYWQuaGNyYyYmQy5wZW5kaW5nPkYmJihSLmFkbGVyPV8oUi5hZGxlcixDLnBlbmRpbmdfYnVmLEMucGVuZGluZy1GLEYpKSwwPT09cSYmKEMuc3RhdHVzPTEwMyl9ZWxzZSBDLnN0YXR1cz0xMDM7aWYoMTAzPT09Qy5zdGF0dXMmJihD'@; put 'Lmd6aGVhZC5oY3JjPyhDLnBlbmRpbmcrMj5DLnBlbmRpbmdfYnVmX3NpemUmJngoUiksQy5wZW5kaW5nKzI8PUMucGVuZGluZ19idWZfc2l6ZSYmKGooQywyNTUmUi5hZGxlciksaihDLFIuYWRsZXI+PjgmMjU1KSxSLmFkbGVyPTAsQy5zdGF0dXM9UCkpOkMuc3RhdHVzPVApLDAhPT1DLnBl'@; put 'bmRpbmcpe2lmKHgoUiksMD09PVIuYXZhaWxfb3V0KXJldHVybiBDLmxhc3RfZmx1c2g9LTEsMH1lbHNlIGlmKDA9PT1SLmF2YWlsX2luJiYkKEgpPD0kKFQpJiY0IT09SClyZXR1cm4gQihSLC01KTtpZig2NjY9PT1DLnN0YXR1cyYmMCE9PVIuYXZhaWxfaW4pcmV0dXJuIEIoUiwtNSk7aWYo'@; put 'MCE9PVIuYXZhaWxfaW58fDAhPT1DLmxvb2thaGVhZHx8MCE9PUgmJjY2NiE9PUMuc3RhdHVzKXt2YXIgWD0yPT09Qy5zdHJhdGVneT9mdW5jdGlvbihLLHJ0KXtmb3IodmFyIHR0Ozspe2lmKDA9PT1LLmxvb2thaGVhZCYmKGcoSyksMD09PUsubG9va2FoZWFkKSl7aWYoMD09PXJ0KXJldHVy'@; put 'biAxO2JyZWFrfWlmKEsubWF0Y2hfbGVuZ3RoPTAsdHQ9ZC5fdHJfdGFsbHkoSywwLEsud2luZG93W0suc3Ryc3RhcnRdKSxLLmxvb2thaGVhZC0tLEsuc3Ryc3RhcnQrKyx0dCYmKE0oSywhMSksMD09PUsuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBLLmluc2VydD0wLDQ9PT1y'@; put 'dD8oTShLLCEwKSwwPT09Sy5zdHJtLmF2YWlsX291dD8zOjQpOksubGFzdF9saXQmJihNKEssITEpLDA9PT1LLnN0cm0uYXZhaWxfb3V0KT8xOjJ9KEMsSCk6Mz09PUMuc3RyYXRlZ3k/ZnVuY3Rpb24oSyxydCl7Zm9yKHZhciB0dCxXLFEsRyxldD1LLndpbmRvdzs7KXtpZihLLmxvb2thaGVh'@; put 'ZDw9TCl7aWYoZyhLKSxLLmxvb2thaGVhZDw9TCYmMD09PXJ0KXJldHVybiAxO2lmKDA9PT1LLmxvb2thaGVhZClicmVha31pZihLLm1hdGNoX2xlbmd0aD0wLEsubG9va2FoZWFkPj0zJiYwPEsuc3Ryc3RhcnQmJihXPWV0W1E9Sy5zdHJzdGFydC0xXSk9PT1ldFsrK1FdJiZXPT09ZXRbKytR'@; put 'XSYmVz09PWV0WysrUV0pe0c9Sy5zdHJzdGFydCtMO2Rve313aGlsZShXPT09ZXRbKytRXSYmVz09PWV0WysrUV0mJlc9PT1ldFsrK1FdJiZXPT09ZXRbKytRXSYmVz09PWV0WysrUV0mJlc9PT1ldFsrK1FdJiZXPT09ZXRbKytRXSYmVz09PWV0WysrUV0mJlE8Ryk7Sy5tYXRjaF9sZW5ndGg9'@; put 'TC0oRy1RKSxLLm1hdGNoX2xlbmd0aD5LLmxvb2thaGVhZCYmKEsubWF0Y2hfbGVuZ3RoPUsubG9va2FoZWFkKX1pZihLLm1hdGNoX2xlbmd0aD49Mz8odHQ9ZC5fdHJfdGFsbHkoSywxLEsubWF0Y2hfbGVuZ3RoLTMpLEsubG9va2FoZWFkLT1LLm1hdGNoX2xlbmd0aCxLLnN0cnN0YXJ0Kz1L'@; put 'Lm1hdGNoX2xlbmd0aCxLLm1hdGNoX2xlbmd0aD0wKToodHQ9ZC5fdHJfdGFsbHkoSywwLEsud2luZG93W0suc3Ryc3RhcnRdKSxLLmxvb2thaGVhZC0tLEsuc3Ryc3RhcnQrKyksdHQmJihNKEssITEpLDA9PT1LLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1yZXR1cm4gSy5pbnNlcnQ9MCw0'@; put 'PT09cnQ/KE0oSywhMCksMD09PUsuc3RybS5hdmFpbF9vdXQ/Mzo0KTpLLmxhc3RfbGl0JiYoTShLLCExKSwwPT09Sy5zdHJtLmF2YWlsX291dCk/MToyfShDLEgpOnVbQy5sZXZlbF0uZnVuYyhDLEgpO2lmKDMhPT1YJiY0IT09WHx8KEMuc3RhdHVzPTY2NiksMT09PVh8fDM9PT1YKXJldHVy'@; put 'biAwPT09Ui5hdmFpbF9vdXQmJihDLmxhc3RfZmx1c2g9LTEpLDA7aWYoMj09PVgmJigxPT09SD9kLl90cl9hbGlnbihDKTo1IT09SCYmKGQuX3RyX3N0b3JlZF9ibG9jayhDLDAsMCwhMSksMz09PUgmJihEKEMuaGVhZCksMD09PUMubG9va2FoZWFkJiYoQy5zdHJzdGFydD0wLEMuYmxvY2tf'@; put 'c3RhcnQ9MCxDLmluc2VydD0wKSkpLHgoUiksMD09PVIuYXZhaWxfb3V0KSlyZXR1cm4gQy5sYXN0X2ZsdXNoPS0xLDB9cmV0dXJuIDQhPT1IPzA6Qy53cmFwPD0wPzE6KDI9PT1DLndyYXA/KGooQywyNTUmUi5hZGxlciksaihDLFIuYWRsZXI+PjgmMjU1KSxqKEMsUi5hZGxlcj4+MTYmMjU1'@; put 'KSxqKEMsUi5hZGxlcj4+MjQmMjU1KSxqKEMsMjU1JlIudG90YWxfaW4pLGooQyxSLnRvdGFsX2luPj44JjI1NSksaihDLFIudG90YWxfaW4+PjE2JjI1NSksaihDLFIudG90YWxfaW4+PjI0JjI1NSkpOihjKEMsUi5hZGxlcj4+PjE2KSxjKEMsNjU1MzUmUi5hZGxlcikpLHgoUiksMDxDLndy'@; put 'YXAmJihDLndyYXA9LUMud3JhcCksMCE9PUMucGVuZGluZz8wOjEpfSxmLmRlZmxhdGVFbmQ9ZnVuY3Rpb24oUil7dmFyIEg7cmV0dXJuIFImJlIuc3RhdGU/NDIhPT0oSD1SLnN0YXRlLnN0YXR1cykmJjY5IT09SCYmNzMhPT1IJiY5MSE9PUgmJjEwMyE9PUgmJkghPT1QJiY2NjYhPT1IP0Io'@; put 'UixJKTooUi5zdGF0ZT1udWxsLEg9PT1QP0IoUiwtMyk6MCk6SX0sZi5kZWZsYXRlU2V0RGljdGlvbmFyeT1mdW5jdGlvbihSLEgpe3ZhciBULEMsRixxLFksWCxLLHJ0LHR0PUgubGVuZ3RoO2lmKCFSfHwhUi5zdGF0ZXx8Mj09PShxPShUPVIuc3RhdGUpLndyYXApfHwxPT09cSYmNDIhPT1U'@; put 'LnN0YXR1c3x8VC5sb29rYWhlYWQpcmV0dXJuIEk7Zm9yKDE9PT1xJiYoUi5hZGxlcj12KFIuYWRsZXIsSCx0dCwwKSksVC53cmFwPTAsdHQ+PVQud19zaXplJiYoMD09PXEmJihEKFQuaGVhZCksVC5zdHJzdGFydD0wLFQuYmxvY2tfc3RhcnQ9MCxULmluc2VydD0wKSxydD1uZXcgcC5CdWY4'@; put 'KFQud19zaXplKSxwLmFycmF5U2V0KHJ0LEgsdHQtVC53X3NpemUsVC53X3NpemUsMCksSD1ydCx0dD1ULndfc2l6ZSksWT1SLmF2YWlsX2luLFg9Ui5uZXh0X2luLEs9Ui5pbnB1dCxSLmF2YWlsX2luPXR0LFIubmV4dF9pbj0wLFIuaW5wdXQ9SCxnKFQpO1QubG9va2FoZWFkPj0zOyl7Zm9y'@; put 'KEM9VC5zdHJzdGFydCxGPVQubG9va2FoZWFkLTI7VC5pbnNfaD0oVC5pbnNfaDw8VC5oYXNoX3NoaWZ0XlQud2luZG93W0MrMy0xXSkmVC5oYXNoX21hc2ssVC5wcmV2W0MmVC53X21hc2tdPVQuaGVhZFtULmluc19oXSxULmhlYWRbVC5pbnNfaF09QyxDKyssLS1GOyk7VC5zdHJzdGFydD1D'@; put 'LFQubG9va2FoZWFkPTIsZyhUKX1yZXR1cm4gVC5zdHJzdGFydCs9VC5sb29rYWhlYWQsVC5ibG9ja19zdGFydD1ULnN0cnN0YXJ0LFQuaW5zZXJ0PVQubG9va2FoZWFkLFQubG9va2FoZWFkPTAsVC5tYXRjaF9sZW5ndGg9VC5wcmV2X2xlbmd0aD0yLFQubWF0Y2hfYXZhaWxhYmxlPTAsUi5u'@; put 'ZXh0X2luPVgsUi5pbnB1dD1LLFIuYXZhaWxfaW49WSxULndyYXA9cSwwfSxmLmRlZmxhdGVJbmZvPSJwYWtvIGRlZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjQxLCIuL2FkbGVyMzIiOjQzLCIuL2NyYzMyIjo0NSwiLi9tZXNzYWdlcyI6NTEsIi4v'@; put 'dHJlZXMiOjUyfV0sNDc6W2Z1bmN0aW9uKGksaCxmKXtoLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnRleHQ9MCx0aGlzLnRpbWU9MCx0aGlzLnhmbGFncz0wLHRoaXMub3M9MCx0aGlzLmV4dHJhPW51bGwsdGhpcy5leHRyYV9sZW49MCx0aGlzLm5hbWU9IiIsdGhpcy5jb21tZW50PSIiLHRo'@; put 'aXMuaGNyYz0wLHRoaXMuZG9uZT0hMX19LHt9XSw0ODpbZnVuY3Rpb24oaSxoLGYpe2guZXhwb3J0cz1mdW5jdGlvbih1LHApe3ZhciBkLHYsXyxBLEksTCxOLFAsQiwkLEQseCxNLGosYyxtLGcseSx3LGssTyx6LFUsVixSO1Y9dS5pbnB1dCxfPSh2PXUubmV4dF9pbikrKHUuYXZhaWxfaW4t'@; put 'NSksUj11Lm91dHB1dCxJPShBPXUubmV4dF9vdXQpLShwLXUuYXZhaWxfb3V0KSxMPUErKHUuYXZhaWxfb3V0LTI1NyksTj0oZD11LnN0YXRlKS5kbWF4LFA9ZC53c2l6ZSxCPWQud2hhdmUsJD1kLnduZXh0LEQ9ZC53aW5kb3cseD1kLmhvbGQsTT1kLmJpdHMsaj1kLmxlbmNvZGUsYz1kLmRp'@; put 'c3Rjb2RlLG09KDE8PGQubGVuYml0cyktMSxnPSgxPDxkLmRpc3RiaXRzKS0xO3Q6ZG97TTwxNSYmKHgrPVZbdisrXTw8TSx4Kz1WW3YrK108PChNKz04KSxNKz04KSx5PWpbeCZtXTtlOmZvcig7Oyl7aWYoeD4+Pj13PXk+Pj4yNCxNLT13LDA9PSh3PXk+Pj4xNiYyNTUpKVJbQSsrXT02NTUz'@; put 'NSZ5O2Vsc2V7aWYoISgxNiZ3KSl7aWYoISg2NCZ3KSl7eT1qWyg2NTUzNSZ5KSsoeCYoMTw8dyktMSldO2NvbnRpbnVlIGV9aWYoMzImdyl7ZC5tb2RlPTEyO2JyZWFrIHR9dS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsZC5tb2RlPTMwO2JyZWFrIHR9az02NTUzNSZ5LCh3'@; put 'Jj0xNSkmJihNPHcmJih4Kz1WW3YrK108PE0sTSs9OCksays9eCYoMTw8dyktMSx4Pj4+PXcsTS09dyksTTwxNSYmKHgrPVZbdisrXTw8TSx4Kz1WW3YrK108PChNKz04KSxNKz04KSx5PWNbeCZnXTtyOmZvcig7Oyl7aWYoeD4+Pj13PXk+Pj4yNCxNLT13LCEoMTYmKHc9eT4+PjE2JjI1NSkp'@; put 'KXtpZighKDY0JncpKXt5PWNbKDY1NTM1JnkpKyh4JigxPDx3KS0xKV07Y29udGludWUgcn11Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixkLm1vZGU9MzA7YnJlYWsgdH1pZihPPTY1NTM1JnksTTwodyY9MTUpJiYoeCs9Vlt2KytdPDxNLChNKz04KTx3JiYoeCs9Vlt2KytdPDxNLE0r'@; put 'PTgpKSxOPChPKz14JigxPDx3KS0xKSl7dS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixkLm1vZGU9MzA7YnJlYWsgdH1pZih4Pj4+PXcsTS09dywodz1BLUkpPE8pe2lmKEI8KHc9Ty13KSYmZC5zYW5lKXt1Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2si'@; put 'LGQubW9kZT0zMDticmVhayB0fWlmKFU9RCwoej0wKT09PSQpe2lmKHorPVAtdyx3PGspe2ZvcihrLT13O1JbQSsrXT1EW3orK10sLS13Oyk7ej1BLU8sVT1SfX1lbHNlIGlmKCQ8dyl7aWYoeis9UCskLXcsKHctPSQpPGspe2ZvcihrLT13O1JbQSsrXT1EW3orK10sLS13Oyk7aWYoej0wLCQ8'@; put 'ayl7Zm9yKGstPXc9JDtSW0ErK109RFt6KytdLC0tdzspO3o9QS1PLFU9Un19fWVsc2UgaWYoeis9JC13LHc8ayl7Zm9yKGstPXc7UltBKytdPURbeisrXSwtLXc7KTt6PUEtTyxVPVJ9Zm9yKDsyPGs7KVJbQSsrXT1VW3orK10sUltBKytdPVVbeisrXSxSW0ErK109VVt6KytdLGstPTM7ayYm'@; put 'KFJbQSsrXT1VW3orK10sMTxrJiYoUltBKytdPVVbeisrXSkpfWVsc2V7Zm9yKHo9QS1PO1JbQSsrXT1SW3orK10sUltBKytdPVJbeisrXSxSW0ErK109Ult6KytdLDI8KGstPTMpOyk7ayYmKFJbQSsrXT1SW3orK10sMTxrJiYoUltBKytdPVJbeisrXSkpfWJyZWFrfX1icmVha319d2hpbGUo'@; put 'djxfJiZBPEwpO3YtPWs9TT4+Myx4Jj0oMTw8KE0tPWs8PDMpKS0xLHUubmV4dF9pbj12LHUubmV4dF9vdXQ9QSx1LmF2YWlsX2luPXY8Xz9fLXYrNTo1LSh2LV8pLHUuYXZhaWxfb3V0PUE8TD9MLUErMjU3OjI1Ny0oQS1MKSxkLmhvbGQ9eCxkLmJpdHM9TX19LHt9XSw0OTpbZnVuY3Rpb24o'@; put 'aSxoLGYpe3ZhciB1PWkoIi4uL3V0aWxzL2NvbW1vbiIpLHA9aSgiLi9hZGxlcjMyIiksZD1pKCIuL2NyYzMyIiksdj1pKCIuL2luZmZhc3QiKSxfPWkoIi4vaW5mdHJlZXMiKSxBPS0yO2Z1bmN0aW9uIEkobSl7cmV0dXJuKG0+Pj4yNCYyNTUpKyhtPj4+OCY2NTI4MCkrKCg2NTI4MCZtKTw8'@; put 'OCkrKCgyNTUmbSk8PDI0KX1mdW5jdGlvbiBMKCl7dGhpcy5tb2RlPTAsdGhpcy5sYXN0PSExLHRoaXMud3JhcD0wLHRoaXMuaGF2ZWRpY3Q9ITEsdGhpcy5mbGFncz0wLHRoaXMuZG1heD0wLHRoaXMuY2hlY2s9MCx0aGlzLnRvdGFsPTAsdGhpcy5oZWFkPW51bGwsdGhpcy53Yml0cz0wLHRo'@; put 'aXMud3NpemU9MCx0aGlzLndoYXZlPTAsdGhpcy53bmV4dD0wLHRoaXMud2luZG93PW51bGwsdGhpcy5ob2xkPTAsdGhpcy5iaXRzPTAsdGhpcy5sZW5ndGg9MCx0aGlzLm9mZnNldD0wLHRoaXMuZXh0cmE9MCx0aGlzLmxlbmNvZGU9bnVsbCx0aGlzLmRpc3Rjb2RlPW51bGwsdGhpcy5sZW5i'@; put 'aXRzPTAsdGhpcy5kaXN0Yml0cz0wLHRoaXMubmNvZGU9MCx0aGlzLm5sZW49MCx0aGlzLm5kaXN0PTAsdGhpcy5oYXZlPTAsdGhpcy5uZXh0PW51bGwsdGhpcy5sZW5zPW5ldyB1LkJ1ZjE2KDMyMCksdGhpcy53b3JrPW5ldyB1LkJ1ZjE2KDI4OCksdGhpcy5sZW5keW49bnVsbCx0aGlzLmRp'@; put 'c3RkeW49bnVsbCx0aGlzLnNhbmU9MCx0aGlzLmJhY2s9MCx0aGlzLndhcz0wfWZ1bmN0aW9uIE4obSl7dmFyIGc7cmV0dXJuIG0mJm0uc3RhdGU/KG0udG90YWxfaW49bS50b3RhbF9vdXQ9KGc9bS5zdGF0ZSkudG90YWw9MCxtLm1zZz0iIixnLndyYXAmJihtLmFkbGVyPTEmZy53cmFwKSxn'@; put 'Lm1vZGU9MSxnLmxhc3Q9MCxnLmhhdmVkaWN0PTAsZy5kbWF4PTMyNzY4LGcuaGVhZD1udWxsLGcuaG9sZD0wLGcuYml0cz0wLGcubGVuY29kZT1nLmxlbmR5bj1uZXcgdS5CdWYzMig4NTIpLGcuZGlzdGNvZGU9Zy5kaXN0ZHluPW5ldyB1LkJ1ZjMyKDU5MiksZy5zYW5lPTEsZy5iYWNrPS0x'@; put 'LDApOkF9ZnVuY3Rpb24gUChtKXt2YXIgZztyZXR1cm4gbSYmbS5zdGF0ZT8oKGc9bS5zdGF0ZSkud3NpemU9MCxnLndoYXZlPTAsZy53bmV4dD0wLE4obSkpOkF9ZnVuY3Rpb24gQihtLGcpe3ZhciB5LHc7cmV0dXJuIG0mJm0uc3RhdGU/KHc9bS5zdGF0ZSxnPDA/KHk9MCxnPS1nKTooeT0x'@; put 'KyhnPj40KSxnPDQ4JiYoZyY9MTUpKSxnJiYoZzw4fHwxNTxnKT9BOihudWxsIT09dy53aW5kb3cmJncud2JpdHMhPT1nJiYody53aW5kb3c9bnVsbCksdy53cmFwPXksdy53Yml0cz1nLFAobSkpKTpBfWZ1bmN0aW9uICQobSxnKXt2YXIgeSx3O3JldHVybiBtPyh3PW5ldyBMLChtLnN0YXRl'@; put 'PXcpLndpbmRvdz1udWxsLDAhPT0oeT1CKG0sZykpJiYobS5zdGF0ZT1udWxsKSx5KTpBfXZhciBELHgsTT0hMDtmdW5jdGlvbiBqKG0pe2lmKE0pe3ZhciBnO2ZvcihEPW5ldyB1LkJ1ZjMyKDUxMikseD1uZXcgdS5CdWYzMigzMiksZz0wO2c8MTQ0OyltLmxlbnNbZysrXT04O2Zvcig7Zzwy'@; put 'NTY7KW0ubGVuc1tnKytdPTk7Zm9yKDtnPDI4MDspbS5sZW5zW2crK109Nztmb3IoO2c8Mjg4OyltLmxlbnNbZysrXT04O2ZvcihfKDEsbS5sZW5zLDAsMjg4LEQsMCxtLndvcmsse2JpdHM6OX0pLGc9MDtnPDMyOyltLmxlbnNbZysrXT01O18oMixtLmxlbnMsMCwzMix4LDAsbS53b3JrLHti'@; put 'aXRzOjV9KSxNPSExfW0ubGVuY29kZT1ELG0ubGVuYml0cz05LG0uZGlzdGNvZGU9eCxtLmRpc3RiaXRzPTV9ZnVuY3Rpb24gYyhtLGcseSx3KXt2YXIgayxPPW0uc3RhdGU7cmV0dXJuIG51bGw9PT1PLndpbmRvdyYmKE8ud3NpemU9MTw8Ty53Yml0cyxPLnduZXh0PTAsTy53aGF2ZT0wLE8u'@; put 'd2luZG93PW5ldyB1LkJ1ZjgoTy53c2l6ZSkpLHc+PU8ud3NpemU/KHUuYXJyYXlTZXQoTy53aW5kb3csZyx5LU8ud3NpemUsTy53c2l6ZSwwKSxPLnduZXh0PTAsTy53aGF2ZT1PLndzaXplKToodzwoaz1PLndzaXplLU8ud25leHQpJiYoaz13KSx1LmFycmF5U2V0KE8ud2luZG93LGcseS13'@; put 'LGssTy53bmV4dCksKHctPWspPyh1LmFycmF5U2V0KE8ud2luZG93LGcseS13LHcsMCksTy53bmV4dD13LE8ud2hhdmU9Ty53c2l6ZSk6KE8ud25leHQrPWssTy53bmV4dD09PU8ud3NpemUmJihPLnduZXh0PTApLE8ud2hhdmU8Ty53c2l6ZSYmKE8ud2hhdmUrPWspKSksMH1mLmluZmxhdGVS'@; put 'ZXNldD1QLGYuaW5mbGF0ZVJlc2V0Mj1CLGYuaW5mbGF0ZVJlc2V0S2VlcD1OLGYuaW5mbGF0ZUluaXQ9ZnVuY3Rpb24obSl7cmV0dXJuICQobSwxNSl9LGYuaW5mbGF0ZUluaXQyPSQsZi5pbmZsYXRlPWZ1bmN0aW9uKG0sZyl7dmFyIHksdyxrLE8seixVLFYsUixILFQsQyxGLHEsWSxYLEss'@; put 'cnQsdHQsVyxRLEcsZXQsbnQsaXQsb3Q9MCxodD1uZXcgdS5CdWY4KDQpLGZ0PVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtpZighbXx8IW0uc3RhdGV8fCFtLm91dHB1dHx8IW0uaW5wdXQmJjAhPT1tLmF2YWlsX2luKXJldHVybiBBOzEyPT09KHk9'@; put 'bS5zdGF0ZSkubW9kZSYmKHkubW9kZT0xMyksej1tLm5leHRfb3V0LGs9bS5vdXRwdXQsTz1tLm5leHRfaW4sdz1tLmlucHV0LFI9eS5ob2xkLEg9eS5iaXRzLFQ9VT1tLmF2YWlsX2luLEM9Vj1tLmF2YWlsX291dCxldD0wO3Q6Zm9yKDs7KXN3aXRjaCh5Lm1vZGUpe2Nhc2UgMTppZigwPT09'@; put 'eS53cmFwKXt5Lm1vZGU9MTM7YnJlYWt9Zm9yKDtIPDE2Oyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9d1tPKytdPDxILEgrPTh9aWYoMiZ5LndyYXAmJjM1NjE1PT09Uil7aHRbeS5jaGVjaz0wXT0yNTUmUixodFsxXT1SPj4+OCYyNTUseS5jaGVjaz1kKHkuY2hlY2ssaHQsMiwwKSxIPVI9'@; put 'MCx5Lm1vZGU9MjticmVha31pZih5LmZsYWdzPTAseS5oZWFkJiYoeS5oZWFkLmRvbmU9ITEpLCEoMSZ5LndyYXApfHwoKCgyNTUmUik8PDgpKyhSPj44KSklMzEpe20ubXNnPSJpbmNvcnJlY3QgaGVhZGVyIGNoZWNrIix5Lm1vZGU9MzA7YnJlYWt9aWYoOCE9KDE1JlIpKXttLm1zZz0idW5r'@; put 'bm93biBjb21wcmVzc2lvbiBtZXRob2QiLHkubW9kZT0zMDticmVha31pZihILT00LEc9OCsoMTUmKFI+Pj49NCkpLDA9PT15LndiaXRzKXkud2JpdHM9RztlbHNlIGlmKEc+eS53Yml0cyl7bS5tc2c9ImludmFsaWQgd2luZG93IHNpemUiLHkubW9kZT0zMDticmVha315LmRtYXg9MTw8Ryxt'@; put 'LmFkbGVyPXkuY2hlY2s9MSx5Lm1vZGU9NTEyJlI/MTA6MTIsSD1SPTA7YnJlYWs7Y2FzZSAyOmZvcig7SDwxNjspe2lmKDA9PT1VKWJyZWFrIHQ7VS0tLFIrPXdbTysrXTw8SCxIKz04fWlmKHkuZmxhZ3M9Uiw4IT0oMjU1JnkuZmxhZ3MpKXttLm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBt'@; put 'ZXRob2QiLHkubW9kZT0zMDticmVha31pZig1NzM0NCZ5LmZsYWdzKXttLm1zZz0idW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0Iix5Lm1vZGU9MzA7YnJlYWt9eS5oZWFkJiYoeS5oZWFkLnRleHQ9Uj4+OCYxKSw1MTImeS5mbGFncyYmKGh0WzBdPTI1NSZSLGh0WzFdPVI+Pj44JjI1NSx5LmNo'@; put 'ZWNrPWQoeS5jaGVjayxodCwyLDApKSxIPVI9MCx5Lm1vZGU9MztjYXNlIDM6Zm9yKDtIPDMyOyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9d1tPKytdPDxILEgrPTh9eS5oZWFkJiYoeS5oZWFkLnRpbWU9UiksNTEyJnkuZmxhZ3MmJihodFswXT0yNTUmUixodFsxXT1SPj4+OCYyNTUsaHRb'@; put 'Ml09Uj4+PjE2JjI1NSxodFszXT1SPj4+MjQmMjU1LHkuY2hlY2s9ZCh5LmNoZWNrLGh0LDQsMCkpLEg9Uj0wLHkubW9kZT00O2Nhc2UgNDpmb3IoO0g8MTY7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH15LmhlYWQmJih5LmhlYWQueGZsYWdzPTI1NSZSLHkuaGVh'@; put 'ZC5vcz1SPj44KSw1MTImeS5mbGFncyYmKGh0WzBdPTI1NSZSLGh0WzFdPVI+Pj44JjI1NSx5LmNoZWNrPWQoeS5jaGVjayxodCwyLDApKSxIPVI9MCx5Lm1vZGU9NTtjYXNlIDU6aWYoMTAyNCZ5LmZsYWdzKXtmb3IoO0g8MTY7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgs'@; put 'SCs9OH15Lmxlbmd0aD1SLHkuaGVhZCYmKHkuaGVhZC5leHRyYV9sZW49UiksNTEyJnkuZmxhZ3MmJihodFswXT0yNTUmUixodFsxXT1SPj4+OCYyNTUseS5jaGVjaz1kKHkuY2hlY2ssaHQsMiwwKSksSD1SPTB9ZWxzZSB5LmhlYWQmJih5LmhlYWQuZXh0cmE9bnVsbCk7eS5tb2RlPTY7Y2Fz'@; put 'ZSA2OmlmKDEwMjQmeS5mbGFncyYmKFU8KEY9eS5sZW5ndGgpJiYoRj1VKSxGJiYoeS5oZWFkJiYoRz15LmhlYWQuZXh0cmFfbGVuLXkubGVuZ3RoLHkuaGVhZC5leHRyYXx8KHkuaGVhZC5leHRyYT1uZXcgQXJyYXkoeS5oZWFkLmV4dHJhX2xlbikpLHUuYXJyYXlTZXQoeS5oZWFkLmV4dHJh'@; put 'LHcsTyxGLEcpKSw1MTImeS5mbGFncyYmKHkuY2hlY2s9ZCh5LmNoZWNrLHcsRixPKSksVS09RixPKz1GLHkubGVuZ3RoLT1GKSx5Lmxlbmd0aCkpYnJlYWsgdDt5Lmxlbmd0aD0wLHkubW9kZT03O2Nhc2UgNzppZigyMDQ4JnkuZmxhZ3Mpe2lmKDA9PT1VKWJyZWFrIHQ7Zm9yKEY9MDtHPXdb'@; put 'TytGKytdLHkuaGVhZCYmRyYmeS5sZW5ndGg8NjU1MzYmJih5LmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZShHKSksRyYmRjxVOyk7aWYoNTEyJnkuZmxhZ3MmJih5LmNoZWNrPWQoeS5jaGVjayx3LEYsTykpLFUtPUYsTys9RixHKWJyZWFrIHR9ZWxzZSB5LmhlYWQmJih5LmhlYWQu'@; put 'bmFtZT1udWxsKTt5Lmxlbmd0aD0wLHkubW9kZT04O2Nhc2UgODppZig0MDk2JnkuZmxhZ3Mpe2lmKDA9PT1VKWJyZWFrIHQ7Zm9yKEY9MDtHPXdbTytGKytdLHkuaGVhZCYmRyYmeS5sZW5ndGg8NjU1MzYmJih5LmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZShHKSksRyYmRjxV'@; put 'Oyk7aWYoNTEyJnkuZmxhZ3MmJih5LmNoZWNrPWQoeS5jaGVjayx3LEYsTykpLFUtPUYsTys9RixHKWJyZWFrIHR9ZWxzZSB5LmhlYWQmJih5LmhlYWQuY29tbWVudD1udWxsKTt5Lm1vZGU9OTtjYXNlIDk6aWYoNTEyJnkuZmxhZ3Mpe2Zvcig7SDwxNjspe2lmKDA9PT1VKWJyZWFrIHQ7VS0t'@; put 'LFIrPXdbTysrXTw8SCxIKz04fWlmKFIhPT0oNjU1MzUmeS5jaGVjaykpe20ubXNnPSJoZWFkZXIgY3JjIG1pc21hdGNoIix5Lm1vZGU9MzA7YnJlYWt9SD1SPTB9eS5oZWFkJiYoeS5oZWFkLmhjcmM9eS5mbGFncz4+OSYxLHkuaGVhZC5kb25lPSEwKSxtLmFkbGVyPXkuY2hlY2s9MCx5Lm1v'@; put 'ZGU9MTI7YnJlYWs7Y2FzZSAxMDpmb3IoO0g8MzI7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH1tLmFkbGVyPXkuY2hlY2s9SShSKSxIPVI9MCx5Lm1vZGU9MTE7Y2FzZSAxMTppZigwPT09eS5oYXZlZGljdClyZXR1cm4gbS5uZXh0X291dD16LG0uYXZhaWxfb3V0'@; put 'PVYsbS5uZXh0X2luPU8sbS5hdmFpbF9pbj1VLHkuaG9sZD1SLHkuYml0cz1ILDI7bS5hZGxlcj15LmNoZWNrPTEseS5tb2RlPTEyO2Nhc2UgMTI6aWYoNT09PWd8fDY9PT1nKWJyZWFrIHQ7Y2FzZSAxMzppZih5Lmxhc3Qpe1I+Pj49NyZILEgtPTcmSCx5Lm1vZGU9Mjc7YnJlYWt9Zm9yKDtI'@; put 'PDM7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH1zd2l0Y2goeS5sYXN0PTEmUixILT0xLDMmKFI+Pj49MSkpe2Nhc2UgMDp5Lm1vZGU9MTQ7YnJlYWs7Y2FzZSAxOmlmKGooeSkseS5tb2RlPTIwLDYhPT1nKWJyZWFrO1I+Pj49MixILT0yO2JyZWFrIHQ7Y2FzZSAy'@; put 'OnkubW9kZT0xNzticmVhaztjYXNlIDM6bS5tc2c9ImludmFsaWQgYmxvY2sgdHlwZSIseS5tb2RlPTMwfVI+Pj49MixILT0yO2JyZWFrO2Nhc2UgMTQ6Zm9yKFI+Pj49NyZILEgtPTcmSDtIPDMyOyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9d1tPKytdPDxILEgrPTh9aWYoKDY1NTM1JlIp'@; put 'IT0oUj4+PjE2XjY1NTM1KSl7bS5tc2c9ImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiLHkubW9kZT0zMDticmVha31pZih5Lmxlbmd0aD02NTUzNSZSLEg9Uj0wLHkubW9kZT0xNSw2PT09ZylicmVhayB0O2Nhc2UgMTU6eS5tb2RlPTE2O2Nhc2UgMTY6aWYoRj15Lmxlbmd0aCl7aWYo'@; put 'VTxGJiYoRj1VKSxWPEYmJihGPVYpLDA9PT1GKWJyZWFrIHQ7dS5hcnJheVNldChrLHcsTyxGLHopLFUtPUYsTys9RixWLT1GLHorPUYseS5sZW5ndGgtPUY7YnJlYWt9eS5tb2RlPTEyO2JyZWFrO2Nhc2UgMTc6Zm9yKDtIPDE0Oyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9d1tPKytdPDxI'@; put 'LEgrPTh9aWYoeS5ubGVuPTI1NysoMzEmUiksSC09NSx5Lm5kaXN0PTErKDMxJihSPj4+PTUpKSxILT01LHkubmNvZGU9NCsoMTUmKFI+Pj49NSkpLFI+Pj49NCxILT00LDI4Njx5Lm5sZW58fDMwPHkubmRpc3Qpe20ubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIs'@; put 'eS5tb2RlPTMwO2JyZWFrfXkuaGF2ZT0wLHkubW9kZT0xODtjYXNlIDE4OmZvcig7eS5oYXZlPHkubmNvZGU7KXtmb3IoO0g8Mzspe2lmKDA9PT1VKWJyZWFrIHQ7VS0tLFIrPXdbTysrXTw8SCxIKz04fXkubGVuc1tmdFt5LmhhdmUrK11dPTcmUixSPj4+PTMsSC09M31mb3IoO3kuaGF2ZTwx'@; put 'OTspeS5sZW5zW2Z0W3kuaGF2ZSsrXV09MDtpZih5LmxlbmNvZGU9eS5sZW5keW4seS5sZW5iaXRzPTcsZXQ9XygwLHkubGVucywwLDE5LHkubGVuY29kZSwwLHkud29yayxudD17Yml0czp5LmxlbmJpdHN9KSx5LmxlbmJpdHM9bnQuYml0cyxldCl7bS5tc2c9ImludmFsaWQgY29kZSBsZW5n'@; put 'dGhzIHNldCIseS5tb2RlPTMwO2JyZWFrfXkuaGF2ZT0wLHkubW9kZT0xOTtjYXNlIDE5OmZvcig7eS5oYXZlPHkubmxlbit5Lm5kaXN0Oyl7Zm9yKDtLPShvdD15LmxlbmNvZGVbUiYoMTw8eS5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUscnQ9NjU1MzUmb3QsISgoWD1vdD4+PjI0KTw9SCk7KXtp'@; put 'ZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH1pZihydDwxNilSPj4+PVgsSC09WCx5LmxlbnNbeS5oYXZlKytdPXJ0O2Vsc2V7aWYoMTY9PT1ydCl7Zm9yKGl0PVgrMjtIPGl0Oyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9d1tPKytdPDxILEgrPTh9aWYoUj4+Pj1YLEgt'@; put 'PVgsMD09PXkuaGF2ZSl7bS5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLHkubW9kZT0zMDticmVha31HPXkubGVuc1t5LmhhdmUtMV0sRj0zKygzJlIpLFI+Pj49MixILT0yfWVsc2UgaWYoMTc9PT1ydCl7Zm9yKGl0PVgrMztIPGl0Oyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9'@; put 'd1tPKytdPDxILEgrPTh9SC09WCxHPTAsRj0zKyg3JihSPj4+PVgpKSxSPj4+PTMsSC09M31lbHNle2ZvcihpdD1YKzc7SDxpdDspe2lmKDA9PT1VKWJyZWFrIHQ7VS0tLFIrPXdbTysrXTw8SCxIKz04fUgtPVgsRz0wLEY9MTErKDEyNyYoUj4+Pj1YKSksUj4+Pj03LEgtPTd9aWYoeS5oYXZl'@; put 'K0Y+eS5ubGVuK3kubmRpc3Qpe20ubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0Iix5Lm1vZGU9MzA7YnJlYWt9Zm9yKDtGLS07KXkubGVuc1t5LmhhdmUrK109R319aWYoMzA9PT15Lm1vZGUpYnJlYWs7aWYoMD09PXkubGVuc1syNTZdKXttLm1zZz0iaW52YWxpZCBjb2RlIC0tIG1p'@; put 'c3NpbmcgZW5kLW9mLWJsb2NrIix5Lm1vZGU9MzA7YnJlYWt9aWYoeS5sZW5iaXRzPTksZXQ9XygxLHkubGVucywwLHkubmxlbix5LmxlbmNvZGUsMCx5LndvcmssbnQ9e2JpdHM6eS5sZW5iaXRzfSkseS5sZW5iaXRzPW50LmJpdHMsZXQpe20ubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3Ro'@; put 'cyBzZXQiLHkubW9kZT0zMDticmVha31pZih5LmRpc3RiaXRzPTYseS5kaXN0Y29kZT15LmRpc3RkeW4sZXQ9XygyLHkubGVucyx5Lm5sZW4seS5uZGlzdCx5LmRpc3Rjb2RlLDAseS53b3JrLG50PXtiaXRzOnkuZGlzdGJpdHN9KSx5LmRpc3RiaXRzPW50LmJpdHMsZXQpe20ubXNnPSJpbnZh'@; put 'bGlkIGRpc3RhbmNlcyBzZXQiLHkubW9kZT0zMDticmVha31pZih5Lm1vZGU9MjAsNj09PWcpYnJlYWsgdDtjYXNlIDIwOnkubW9kZT0yMTtjYXNlIDIxOmlmKDY8PVUmJjI1ODw9Vil7bS5uZXh0X291dD16LG0uYXZhaWxfb3V0PVYsbS5uZXh0X2luPU8sbS5hdmFpbF9pbj1VLHkuaG9sZD1S'@; put 'LHkuYml0cz1ILHYobSxDKSx6PW0ubmV4dF9vdXQsaz1tLm91dHB1dCxWPW0uYXZhaWxfb3V0LE89bS5uZXh0X2luLHc9bS5pbnB1dCxVPW0uYXZhaWxfaW4sUj15LmhvbGQsSD15LmJpdHMsMTI9PT15Lm1vZGUmJih5LmJhY2s9LTEpO2JyZWFrfWZvcih5LmJhY2s9MDtLPShvdD15LmxlbmNv'@; put 'ZGVbUiYoMTw8eS5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUscnQ9NjU1MzUmb3QsISgoWD1vdD4+PjI0KTw9SCk7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH1pZihLJiYhKDI0MCZLKSl7Zm9yKHR0PVgsVz1LLFE9cnQ7Sz0ob3Q9eS5sZW5jb2RlW1ErKChSJigxPDx0'@; put 'dCtXKS0xKT4+dHQpXSk+Pj4xNiYyNTUscnQ9NjU1MzUmb3QsISh0dCsoWD1vdD4+PjI0KTw9SCk7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH1SPj4+PXR0LEgtPXR0LHkuYmFjays9dHR9aWYoUj4+Pj1YLEgtPVgseS5iYWNrKz1YLHkubGVuZ3RoPXJ0LDA9PT1L'@; put 'KXt5Lm1vZGU9MjY7YnJlYWt9aWYoMzImSyl7eS5iYWNrPS0xLHkubW9kZT0xMjticmVha31pZig2NCZLKXttLm1zZz0iaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIix5Lm1vZGU9MzA7YnJlYWt9eS5leHRyYT0xNSZLLHkubW9kZT0yMjtjYXNlIDIyOmlmKHkuZXh0cmEpe2ZvcihpdD15'@; put 'LmV4dHJhO0g8aXQ7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH15Lmxlbmd0aCs9UiYoMTw8eS5leHRyYSktMSxSPj4+PXkuZXh0cmEsSC09eS5leHRyYSx5LmJhY2srPXkuZXh0cmF9eS53YXM9eS5sZW5ndGgseS5tb2RlPTIzO2Nhc2UgMjM6Zm9yKDtLPShvdD15'@; put 'LmRpc3Rjb2RlW1ImKDE8PHkuZGlzdGJpdHMpLTFdKT4+PjE2JjI1NSxydD02NTUzNSZvdCwhKChYPW90Pj4+MjQpPD1IKTspe2lmKDA9PT1VKWJyZWFrIHQ7VS0tLFIrPXdbTysrXTw8SCxIKz04fWlmKCEoMjQwJkspKXtmb3IodHQ9WCxXPUssUT1ydDtLPShvdD15LmRpc3Rjb2RlW1ErKChS'@; put 'JigxPDx0dCtXKS0xKT4+dHQpXSk+Pj4xNiYyNTUscnQ9NjU1MzUmb3QsISh0dCsoWD1vdD4+PjI0KTw9SCk7KXtpZigwPT09VSlicmVhayB0O1UtLSxSKz13W08rK108PEgsSCs9OH1SPj4+PXR0LEgtPXR0LHkuYmFjays9dHR9aWYoUj4+Pj1YLEgtPVgseS5iYWNrKz1YLDY0Jkspe20ubXNn'@; put 'PSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLHkubW9kZT0zMDticmVha315Lm9mZnNldD1ydCx5LmV4dHJhPTE1JksseS5tb2RlPTI0O2Nhc2UgMjQ6aWYoeS5leHRyYSl7Zm9yKGl0PXkuZXh0cmE7SDxpdDspe2lmKDA9PT1VKWJyZWFrIHQ7VS0tLFIrPXdbTysrXTw8SCxIKz04fXkub2Zmc2V0'@; put 'Kz1SJigxPDx5LmV4dHJhKS0xLFI+Pj49eS5leHRyYSxILT15LmV4dHJhLHkuYmFjays9eS5leHRyYX1pZih5Lm9mZnNldD55LmRtYXgpe20ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIseS5tb2RlPTMwO2JyZWFrfXkubW9kZT0yNTtjYXNlIDI1OmlmKDA9PT1WKWJyZWFr'@; put 'IHQ7aWYoeS5vZmZzZXQ+KEY9Qy1WKSl7aWYoKEY9eS5vZmZzZXQtRik+eS53aGF2ZSYmeS5zYW5lKXttLm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLHkubW9kZT0zMDticmVha31xPUY+eS53bmV4dD95LndzaXplLShGLT15LnduZXh0KTp5LnduZXh0LUYsRj55Lmxlbmd0'@; put 'aCYmKEY9eS5sZW5ndGgpLFk9eS53aW5kb3d9ZWxzZSBZPWsscT16LXkub2Zmc2V0LEY9eS5sZW5ndGg7Zm9yKFY8RiYmKEY9ViksVi09Rix5Lmxlbmd0aC09RjtrW3orK109WVtxKytdLC0tRjspOzA9PT15Lmxlbmd0aCYmKHkubW9kZT0yMSk7YnJlYWs7Y2FzZSAyNjppZigwPT09VilicmVh'@; put 'ayB0O2tbeisrXT15Lmxlbmd0aCxWLS0seS5tb2RlPTIxO2JyZWFrO2Nhc2UgMjc6aWYoeS53cmFwKXtmb3IoO0g8MzI7KXtpZigwPT09VSlicmVhayB0O1UtLSxSfD13W08rK108PEgsSCs9OH1pZihtLnRvdGFsX291dCs9Qy09Vix5LnRvdGFsKz1DLEMmJihtLmFkbGVyPXkuY2hlY2s9eS5m'@; put 'bGFncz9kKHkuY2hlY2ssayxDLHotQyk6cCh5LmNoZWNrLGssQyx6LUMpKSxDPVYsKHkuZmxhZ3M/UjpJKFIpKSE9PXkuY2hlY2spe20ubXNnPSJpbmNvcnJlY3QgZGF0YSBjaGVjayIseS5tb2RlPTMwO2JyZWFrfUg9Uj0wfXkubW9kZT0yODtjYXNlIDI4OmlmKHkud3JhcCYmeS5mbGFncyl7'@; put 'Zm9yKDtIPDMyOyl7aWYoMD09PVUpYnJlYWsgdDtVLS0sUis9d1tPKytdPDxILEgrPTh9aWYoUiE9PSg0Mjk0OTY3Mjk1JnkudG90YWwpKXttLm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIseS5tb2RlPTMwO2JyZWFrfUg9Uj0wfXkubW9kZT0yOTtjYXNlIDI5OmV0PTE7YnJlYWsgdDtj'@; put 'YXNlIDMwOmV0PS0zO2JyZWFrIHQ7Y2FzZSAzMTpyZXR1cm4tNDtkZWZhdWx0OnJldHVybiBBfXJldHVybiBtLm5leHRfb3V0PXosbS5hdmFpbF9vdXQ9VixtLm5leHRfaW49TyxtLmF2YWlsX2luPVUseS5ob2xkPVIseS5iaXRzPUgsKHkud3NpemV8fEMhPT1tLmF2YWlsX291dCYmeS5tb2Rl'@; put 'PDMwJiYoeS5tb2RlPDI3fHw0IT09ZykpJiZjKG0sbS5vdXRwdXQsbS5uZXh0X291dCxDLW0uYXZhaWxfb3V0KT8oeS5tb2RlPTMxLC00KTooQy09bS5hdmFpbF9vdXQsbS50b3RhbF9pbis9VC09bS5hdmFpbF9pbixtLnRvdGFsX291dCs9Qyx5LnRvdGFsKz1DLHkud3JhcCYmQyYmKG0uYWRs'@; put 'ZXI9eS5jaGVjaz15LmZsYWdzP2QoeS5jaGVjayxrLEMsbS5uZXh0X291dC1DKTpwKHkuY2hlY2ssayxDLG0ubmV4dF9vdXQtQykpLG0uZGF0YV90eXBlPXkuYml0cysoeS5sYXN0PzY0OjApKygxMj09PXkubW9kZT8xMjg6MCkrKDIwPT09eS5tb2RlfHwxNT09PXkubW9kZT8yNTY6MCksKDA9'@; put 'PVQmJjA9PT1DfHw0PT09ZykmJjA9PT1ldCYmKGV0PS01KSxldCl9LGYuaW5mbGF0ZUVuZD1mdW5jdGlvbihtKXtpZighbXx8IW0uc3RhdGUpcmV0dXJuIEE7dmFyIGc9bS5zdGF0ZTtyZXR1cm4gZy53aW5kb3cmJihnLndpbmRvdz1udWxsKSxtLnN0YXRlPW51bGwsMH0sZi5pbmZsYXRlR2V0'@; put 'SGVhZGVyPWZ1bmN0aW9uKG0sZyl7dmFyIHk7cmV0dXJuIG0mJm0uc3RhdGUmJjImKHk9bS5zdGF0ZSkud3JhcD8oKHkuaGVhZD1nKS5kb25lPSExLDApOkF9LGYuaW5mbGF0ZVNldERpY3Rpb25hcnk9ZnVuY3Rpb24obSxnKXt2YXIgeSx3PWcubGVuZ3RoO3JldHVybiBtJiZtLnN0YXRlPzAh'@; put 'PT0oeT1tLnN0YXRlKS53cmFwJiYxMSE9PXkubW9kZT9BOjExPT09eS5tb2RlJiZwKDEsZyx3LDApIT09eS5jaGVjaz8tMzpjKG0sZyx3LHcpPyh5Lm1vZGU9MzEsLTQpOih5LmhhdmVkaWN0PTEsMCk6QX0sZi5pbmZsYXRlSW5mbz0icGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0'@; put 'KSJ9LHsiLi4vdXRpbHMvY29tbW9uIjo0MSwiLi9hZGxlcjMyIjo0MywiLi9jcmMzMiI6NDUsIi4vaW5mZmFzdCI6NDgsIi4vaW5mdHJlZXMiOjUwfV0sNTA6W2Z1bmN0aW9uKGksaCxmKXt2YXIgdT1pKCIuLi91dGlscy9jb21tb24iKSxwPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3'@; put 'LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDAsMF0sZD1bMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdLHY9WzEs'@; put 'MiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3NywwLDBdLF89WzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIy'@; put 'LDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XTtoLmV4cG9ydHM9ZnVuY3Rpb24oQSxJLEwsTixQLEIsJCxEKXt2YXIgeCxNLGosYyxtLGcseSx3LGssTz1ELmJpdHMsej0wLFU9MCxWPTAsUj0wLEg9MCxUPTAsQz0wLEY9MCxxPTAsWT0wLFg9bnVsbCxL'@; put 'PTAscnQ9bmV3IHUuQnVmMTYoMTYpLHR0PW5ldyB1LkJ1ZjE2KDE2KSxXPW51bGwsUT0wO2Zvcih6PTA7ejw9MTU7eisrKXJ0W3pdPTA7Zm9yKFU9MDtVPE47VSsrKXJ0W0lbTCtVXV0rKztmb3IoSD1PLFI9MTU7MTw9UiYmMD09PXJ0W1JdO1ItLSk7aWYoUjxIJiYoSD1SKSwwPT09UilyZXR1'@; put 'cm4gUFtCKytdPTIwOTcxNTIwLFBbQisrXT0yMDk3MTUyMCxELmJpdHM9MSwwO2ZvcihWPTE7VjxSJiYwPT09cnRbVl07VisrKTtmb3IoSDxWJiYoSD1WKSx6PUY9MTt6PD0xNTt6KyspaWYoRjw8PTEsKEYtPXJ0W3pdKTwwKXJldHVybi0xO2lmKDA8RiYmKDA9PT1BfHwxIT09UikpcmV0dXJu'@; put 'LTE7Zm9yKHR0WzFdPTAsej0xO3o8MTU7eisrKXR0W3orMV09dHRbel0rcnRbel07Zm9yKFU9MDtVPE47VSsrKTAhPT1JW0wrVV0mJigkW3R0W0lbTCtVXV0rK109VSk7aWYoZz0wPT09QT8oWD1XPSQsMTkpOjE9PT1BPyhYPXAsSy09MjU3LFc9ZCxRLT0yNTcsMjU2KTooWD12LFc9XywtMSks'@; put 'ej1WLG09QixDPVU9WT0wLGo9LTEsYz0ocT0xPDwoVD1IKSktMSwxPT09QSYmODUyPHF8fDI9PT1BJiY1OTI8cSlyZXR1cm4gMTtmb3IoOzspe2Zvcih5PXotQyxrPSRbVV08Zz8odz0wLCRbVV0pOiRbVV0+Zz8odz1XW1ErJFtVXV0sWFtLKyRbVV1dKToodz05NiwwKSx4PTE8PHotQyxWPU09'@; put 'MTw8VDtQW20rKFk+PkMpKyhNLT14KV09eTw8MjR8dzw8MTZ8aywwIT09TTspO2Zvcih4PTE8PHotMTtZJng7KXg+Pj0xO2lmKDAhPT14PyhZJj14LTEsWSs9eCk6WT0wLFUrKywwPT0tLXJ0W3pdKXtpZih6PT09UilicmVhazt6PUlbTCskW1VdXX1pZihIPHomJihZJmMpIT09ail7Zm9yKDA9'@; put 'PT1DJiYoQz1IKSxtKz1WLEY9MTw8KFQ9ei1DKTtUK0M8UiYmISgoRi09cnRbVCtDXSk8PTApOylUKyssRjw8PTE7aWYocSs9MTw8VCwxPT09QSYmODUyPHF8fDI9PT1BJiY1OTI8cSlyZXR1cm4gMTtQW2o9WSZjXT1IPDwyNHxUPDwxNnxtLUJ9fXJldHVybiAwIT09WSYmKFBbbStZXT16LUM8'@; put 'PDI0fDY0PDwxNiksRC5iaXRzPUgsMH19LHsiLi4vdXRpbHMvY29tbW9uIjo0MX1dLDUxOltmdW5jdGlvbihpLGgsZil7aC5leHBvcnRzPXsyOiJuZWVkIGRpY3Rpb25hcnkiLDE6InN0cmVhbSBlbmQiLDA6IiIsIi0xIjoiZmlsZSBlcnJvciIsIi0yIjoic3RyZWFtIGVycm9yIiwiLTMiOiJk'@; put 'YXRhIGVycm9yIiwiLTQiOiJpbnN1ZmZpY2llbnQgbWVtb3J5IiwiLTUiOiJidWZmZXIgZXJyb3IiLCItNiI6ImluY29tcGF0aWJsZSB2ZXJzaW9uIn19LHt9XSw1MjpbZnVuY3Rpb24oaSxoLGYpe3ZhciB1PWkoIi4uL3V0aWxzL2NvbW1vbiIpO2Z1bmN0aW9uIHAoVyl7Zm9yKHZhciBRPVcu'@; put 'bGVuZ3RoOzA8PS0tUTspV1tRXT0wfXZhciBJPVswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdLEw9WzAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDYsNyw3LDgsOCw5LDksMTAsMTAsMTEsMTEsMTIsMTIsMTMsMTNdLE49WzAs'@; put 'MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddLFA9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdLEI9bmV3IEFycmF5KDU3Nik7cChCKTt2YXIgJD1uZXcgQXJyYXkoNjApO3AoJCk7dmFyIEQ9bmV3IEFycmF5KDUxMik7cChEKTt2YXIg'@; put 'eD1uZXcgQXJyYXkoMjU2KTtwKHgpO3ZhciBNPW5ldyBBcnJheSgyOSk7cChNKTt2YXIgaixjLG0sZz1uZXcgQXJyYXkoMzApO2Z1bmN0aW9uIHkoVyxRLEcsZXQsbnQpe3RoaXMuc3RhdGljX3RyZWU9Vyx0aGlzLmV4dHJhX2JpdHM9USx0aGlzLmV4dHJhX2Jhc2U9Ryx0aGlzLmVsZW1zPWV0'@; put 'LHRoaXMubWF4X2xlbmd0aD1udCx0aGlzLmhhc19zdHJlZT1XJiZXLmxlbmd0aH1mdW5jdGlvbiB3KFcsUSl7dGhpcy5keW5fdHJlZT1XLHRoaXMubWF4X2NvZGU9MCx0aGlzLnN0YXRfZGVzYz1RfWZ1bmN0aW9uIGsoVyl7cmV0dXJuIFc8MjU2P0RbV106RFsyNTYrKFc+Pj43KV19ZnVuY3Rp'@; put 'b24gTyhXLFEpe1cucGVuZGluZ19idWZbVy5wZW5kaW5nKytdPTI1NSZRLFcucGVuZGluZ19idWZbVy5wZW5kaW5nKytdPVE+Pj44JjI1NX1mdW5jdGlvbiB6KFcsUSxHKXtXLmJpX3ZhbGlkPjE2LUc/KFcuYmlfYnVmfD1RPDxXLmJpX3ZhbGlkJjY1NTM1LE8oVyxXLmJpX2J1ZiksVy5iaV9i'@; put 'dWY9UT4+MTYtVy5iaV92YWxpZCxXLmJpX3ZhbGlkKz1HLTE2KTooVy5iaV9idWZ8PVE8PFcuYmlfdmFsaWQmNjU1MzUsVy5iaV92YWxpZCs9Ryl9ZnVuY3Rpb24gVShXLFEsRyl7eihXLEdbMipRXSxHWzIqUSsxXSl9ZnVuY3Rpb24gVihXLFEpe2Zvcih2YXIgRz0wO0d8PTEmVyxXPj4+PTEs'@; put 'Rzw8PTEsMDwtLVE7KTtyZXR1cm4gRz4+PjF9ZnVuY3Rpb24gUihXLFEsRyl7dmFyIGV0LG50LGl0PW5ldyBBcnJheSgxNiksb3Q9MDtmb3IoZXQ9MTtldDw9MTU7ZXQrKylpdFtldF09b3Q9b3QrR1tldC0xXTw8MTtmb3IobnQ9MDtudDw9UTtudCsrKXt2YXIgaHQ9V1syKm50KzFdOzAhPT1o'@; put 'dCYmKFdbMipudF09VihpdFtodF0rKyxodCkpfX1mdW5jdGlvbiBIKFcpe3ZhciBRO2ZvcihRPTA7UTwyODY7USsrKVcuZHluX2x0cmVlWzIqUV09MDtmb3IoUT0wO1E8MzA7USsrKVcuZHluX2R0cmVlWzIqUV09MDtmb3IoUT0wO1E8MTk7USsrKVcuYmxfdHJlZVsyKlFdPTA7Vy5keW5fbHRy'@; put 'ZWVbNTEyXT0xLFcub3B0X2xlbj1XLnN0YXRpY19sZW49MCxXLmxhc3RfbGl0PVcubWF0Y2hlcz0wfWZ1bmN0aW9uIFQoVyl7ODxXLmJpX3ZhbGlkP08oVyxXLmJpX2J1Zik6MDxXLmJpX3ZhbGlkJiYoVy5wZW5kaW5nX2J1ZltXLnBlbmRpbmcrK109Vy5iaV9idWYpLFcuYmlfYnVmPTAsVy5i'@; put 'aV92YWxpZD0wfWZ1bmN0aW9uIEMoVyxRLEcsZXQpe3ZhciBudD0yKlEsaXQ9MipHO3JldHVybiBXW250XTxXW2l0XXx8V1tudF09PT1XW2l0XSYmZXRbUV08PWV0W0ddfWZ1bmN0aW9uIEYoVyxRLEcpe2Zvcih2YXIgZXQ9Vy5oZWFwW0ddLG50PUc8PDE7bnQ8PVcuaGVhcF9sZW4mJihudDxX'@; put 'LmhlYXBfbGVuJiZDKFEsVy5oZWFwW250KzFdLFcuaGVhcFtudF0sVy5kZXB0aCkmJm50KyssIUMoUSxldCxXLmhlYXBbbnRdLFcuZGVwdGgpKTspVy5oZWFwW0ddPVcuaGVhcFtudF0sRz1udCxudDw8PTE7Vy5oZWFwW0ddPWV0fWZ1bmN0aW9uIHEoVyxRLEcpe3ZhciBldCxudCxpdCxvdCxo'@; put 'dD0wO2lmKDAhPT1XLmxhc3RfbGl0KWZvcig7ZXQ9Vy5wZW5kaW5nX2J1ZltXLmRfYnVmKzIqaHRdPDw4fFcucGVuZGluZ19idWZbVy5kX2J1ZisyKmh0KzFdLG50PVcucGVuZGluZ19idWZbVy5sX2J1ZitodF0saHQrKywwPT09ZXQ/VShXLG50LFEpOihVKFcsKGl0PXhbbnRdKSsyNTYrMSxR'@; put 'KSwwIT09KG90PUlbaXRdKSYmeihXLG50LT1NW2l0XSxvdCksVShXLGl0PWsoLS1ldCksRyksMCE9PShvdD1MW2l0XSkmJnooVyxldC09Z1tpdF0sb3QpKSxodDxXLmxhc3RfbGl0Oyk7VShXLDI1NixRKX1mdW5jdGlvbiBZKFcsUSl7dmFyIEcsZXQsbnQsaXQ9US5keW5fdHJlZSxvdD1RLnN0'@; put 'YXRfZGVzYy5zdGF0aWNfdHJlZSxodD1RLnN0YXRfZGVzYy5oYXNfc3RyZWUsZnQ9US5zdGF0X2Rlc2MuZWxlbXMscHQ9LTE7Zm9yKFcuaGVhcF9sZW49MCxXLmhlYXBfbWF4PTU3MyxHPTA7RzxmdDtHKyspMCE9PWl0WzIqR10/KFcuaGVhcFsrK1cuaGVhcF9sZW5dPXB0PUcsVy5kZXB0aFtH'@; put 'XT0wKTppdFsyKkcrMV09MDtmb3IoO1cuaGVhcF9sZW48MjspaXRbMioobnQ9Vy5oZWFwWysrVy5oZWFwX2xlbl09cHQ8Mj8rK3B0OjApXT0xLFcuZGVwdGhbbnRdPTAsVy5vcHRfbGVuLS0saHQmJihXLnN0YXRpY19sZW4tPW90WzIqbnQrMV0pO2ZvcihRLm1heF9jb2RlPXB0LEc9Vy5oZWFw'@; put 'X2xlbj4+MTsxPD1HO0ctLSlGKFcsaXQsRyk7Zm9yKG50PWZ0O0c9Vy5oZWFwWzFdLFcuaGVhcFsxXT1XLmhlYXBbVy5oZWFwX2xlbi0tXSxGKFcsaXQsMSksZXQ9Vy5oZWFwWzFdLFcuaGVhcFstLVcuaGVhcF9tYXhdPUcsVy5oZWFwWy0tVy5oZWFwX21heF09ZXQsaXRbMipudF09aXRbMipH'@; put 'XStpdFsyKmV0XSxXLmRlcHRoW250XT0oVy5kZXB0aFtHXT49Vy5kZXB0aFtldF0/Vy5kZXB0aFtHXTpXLmRlcHRoW2V0XSkrMSxpdFsyKkcrMV09aXRbMipldCsxXT1udCxXLmhlYXBbMV09bnQrKyxGKFcsaXQsMSksMjw9Vy5oZWFwX2xlbjspO1cuaGVhcFstLVcuaGVhcF9tYXhdPVcuaGVh'@; put 'cFsxXSxmdW5jdGlvbihUdCx5dCl7dmFyIHd0LHF0LEV0LF90LEF0LGd0LG10PXl0LmR5bl90cmVlLFZ0PXl0Lm1heF9jb2RlLFN0PXl0LnN0YXRfZGVzYy5zdGF0aWNfdHJlZSxPdD15dC5zdGF0X2Rlc2MuaGFzX3N0cmVlLHllPXl0LnN0YXRfZGVzYy5leHRyYV9iaXRzLFJ0PXl0LnN0YXRf'@; put 'ZGVzYy5leHRyYV9iYXNlLE50PXl0LnN0YXRfZGVzYy5tYXhfbGVuZ3RoLGFlPTA7Zm9yKF90PTA7X3Q8PTE1O190KyspVHQuYmxfY291bnRbX3RdPTA7Zm9yKG10WzIqVHQuaGVhcFtUdC5oZWFwX21heF0rMV09MCx3dD1UdC5oZWFwX21heCsxO3d0PDU3Mzt3dCsrKU50PChfdD1tdFsyKm10'@; put 'WzIqKHF0PVR0LmhlYXBbd3RdKSsxXSsxXSsxKSYmKF90PU50LGFlKyspLG10WzIqcXQrMV09X3QsVnQ8cXR8fChUdC5ibF9jb3VudFtfdF0rKyxBdD0wLFJ0PD1xdCYmKEF0PXllW3F0LVJ0XSksVHQub3B0X2xlbis9KGd0PW10WzIqcXRdKSooX3QrQXQpLE90JiYoVHQuc3RhdGljX2xlbis9'@; put 'Z3QqKFN0WzIqcXQrMV0rQXQpKSk7aWYoMCE9PWFlKXtkb3tmb3IoX3Q9TnQtMTswPT09VHQuYmxfY291bnRbX3RdOylfdC0tO1R0LmJsX2NvdW50W190XS0tLFR0LmJsX2NvdW50W190KzFdKz0yLFR0LmJsX2NvdW50W050XS0tLGFlLT0yfXdoaWxlKDA8YWUpO2ZvcihfdD1OdDswIT09X3Q7'@; put 'X3QtLSlmb3IocXQ9VHQuYmxfY291bnRbX3RdOzAhPT1xdDspVnQ8KEV0PVR0LmhlYXBbLS13dF0pfHwobXRbMipFdCsxXSE9PV90JiYoVHQub3B0X2xlbis9KF90LW10WzIqRXQrMV0pKm10WzIqRXRdLG10WzIqRXQrMV09X3QpLHF0LS0pfX0oVyxRKSxSKGl0LHB0LFcuYmxfY291bnQpfWZ1'@; put 'bmN0aW9uIFgoVyxRLEcpe3ZhciBldCxudCxpdD0tMSxvdD1RWzFdLGh0PTAsZnQ9NyxwdD00O2ZvcigwPT09b3QmJihmdD0xMzgscHQ9MyksUVsyKihHKzEpKzFdPTY1NTM1LGV0PTA7ZXQ8PUc7ZXQrKyludD1vdCxvdD1RWzIqKGV0KzEpKzFdLCsraHQ8ZnQmJm50PT09b3R8fChodDxwdD9X'@; put 'LmJsX3RyZWVbMipudF0rPWh0OjAhPT1udD8obnQhPT1pdCYmVy5ibF90cmVlWzIqbnRdKyssVy5ibF90cmVlWzMyXSsrKTpodDw9MTA/Vy5ibF90cmVlWzM0XSsrOlcuYmxfdHJlZVszNl0rKyxpdD1udCxwdD0oaHQ9MCk9PT1vdD8oZnQ9MTM4LDMpOm50PT09b3Q/KGZ0PTYsMyk6KGZ0PTcs'@; put 'NCkpfWZ1bmN0aW9uIEsoVyxRLEcpe3ZhciBldCxudCxpdD0tMSxvdD1RWzFdLGh0PTAsZnQ9NyxwdD00O2ZvcigwPT09b3QmJihmdD0xMzgscHQ9MyksZXQ9MDtldDw9RztldCsrKWlmKG50PW90LG90PVFbMiooZXQrMSkrMV0sISgrK2h0PGZ0JiZudD09PW90KSl7aWYoaHQ8cHQpZm9yKDtV'@; put 'KFcsbnQsVy5ibF90cmVlKSwwIT0tLWh0Oyk7ZWxzZSAwIT09bnQ/KG50IT09aXQmJihVKFcsbnQsVy5ibF90cmVlKSxodC0tKSxVKFcsMTYsVy5ibF90cmVlKSx6KFcsaHQtMywyKSk6aHQ8PTEwPyhVKFcsMTcsVy5ibF90cmVlKSx6KFcsaHQtMywzKSk6KFUoVywxOCxXLmJsX3RyZWUpLHoo'@; put 'VyxodC0xMSw3KSk7aXQ9bnQscHQ9KGh0PTApPT09b3Q/KGZ0PTEzOCwzKTpudD09PW90PyhmdD02LDMpOihmdD03LDQpfX1wKGcpO3ZhciBydD0hMTtmdW5jdGlvbiB0dChXLFEsRyxldCl7dmFyIG50LGl0LG90O3ooVywwKyhldD8xOjApLDMpLGl0PVEsb3Q9RyxUKG50PVcpLE8obnQsb3Qp'@; put 'LE8obnQsfm90KSx1LmFycmF5U2V0KG50LnBlbmRpbmdfYnVmLG50LndpbmRvdyxpdCxvdCxudC5wZW5kaW5nKSxudC5wZW5kaW5nKz1vdH1mLl90cl9pbml0PWZ1bmN0aW9uKFcpe3J0fHwoZnVuY3Rpb24oKXt2YXIgUSxHLGV0LG50LGl0LG90PW5ldyBBcnJheSgxNik7Zm9yKG50PWV0PTA7'@; put 'bnQ8Mjg7bnQrKylmb3IoTVtudF09ZXQsUT0wO1E8MTw8SVtudF07USsrKXhbZXQrK109bnQ7Zm9yKHhbZXQtMV09bnQsbnQ9aXQ9MDtudDwxNjtudCsrKWZvcihnW250XT1pdCxRPTA7UTwxPDxMW250XTtRKyspRFtpdCsrXT1udDtmb3IoaXQ+Pj03O250PDMwO250KyspZm9yKGdbbnRdPWl0'@; put 'PDw3LFE9MDtRPDE8PExbbnRdLTc7USsrKURbMjU2K2l0KytdPW50O2ZvcihHPTA7Rzw9MTU7RysrKW90W0ddPTA7Zm9yKFE9MDtRPD0xNDM7KUJbMipRKzFdPTgsUSsrLG90WzhdKys7Zm9yKDtRPD0yNTU7KUJbMipRKzFdPTksUSsrLG90WzldKys7Zm9yKDtRPD0yNzk7KUJbMipRKzFdPTcs'@; put 'USsrLG90WzddKys7Zm9yKDtRPD0yODc7KUJbMipRKzFdPTgsUSsrLG90WzhdKys7Zm9yKFIoQiwyODcsb3QpLFE9MDtRPDMwO1ErKykkWzIqUSsxXT01LCRbMipRXT1WKFEsNSk7aj1uZXcgeShCLEksMjU3LDI4NiwxNSksYz1uZXcgeSgkLEwsMCwzMCwxNSksbT1uZXcgeShuZXcgQXJyYXko'@; put 'MCksTiwwLDE5LDcpfSgpLHJ0PSEwKSxXLmxfZGVzYz1uZXcgdyhXLmR5bl9sdHJlZSxqKSxXLmRfZGVzYz1uZXcgdyhXLmR5bl9kdHJlZSxjKSxXLmJsX2Rlc2M9bmV3IHcoVy5ibF90cmVlLG0pLFcuYmlfYnVmPTAsVy5iaV92YWxpZD0wLEgoVyl9LGYuX3RyX3N0b3JlZF9ibG9jaz10dCxm'@; put 'Ll90cl9mbHVzaF9ibG9jaz1mdW5jdGlvbihXLFEsRyxldCl7dmFyIG50LGl0LG90PTA7MDxXLmxldmVsPygyPT09Vy5zdHJtLmRhdGFfdHlwZSYmKFcuc3RybS5kYXRhX3R5cGU9ZnVuY3Rpb24oaHQpe3ZhciBmdCxwdD00MDkzNjI0NDQ3O2ZvcihmdD0wO2Z0PD0zMTtmdCsrLHB0Pj4+PTEp'@; put 'aWYoMSZwdCYmMCE9PWh0LmR5bl9sdHJlZVsyKmZ0XSlyZXR1cm4gMDtpZigwIT09aHQuZHluX2x0cmVlWzE4XXx8MCE9PWh0LmR5bl9sdHJlZVsyMF18fDAhPT1odC5keW5fbHRyZWVbMjZdKXJldHVybiAxO2ZvcihmdD0zMjtmdDwyNTY7ZnQrKylpZigwIT09aHQuZHluX2x0cmVlWzIqZnRd'@; put 'KXJldHVybiAxO3JldHVybiAwfShXKSksWShXLFcubF9kZXNjKSxZKFcsVy5kX2Rlc2MpLG90PWZ1bmN0aW9uKGh0KXt2YXIgZnQ7Zm9yKFgoaHQsaHQuZHluX2x0cmVlLGh0LmxfZGVzYy5tYXhfY29kZSksWChodCxodC5keW5fZHRyZWUsaHQuZF9kZXNjLm1heF9jb2RlKSxZKGh0LGh0LmJs'@; put 'X2Rlc2MpLGZ0PTE4OzM8PWZ0JiYwPT09aHQuYmxfdHJlZVsyKlBbZnRdKzFdO2Z0LS0pO3JldHVybiBodC5vcHRfbGVuKz0zKihmdCsxKSs1KzUrNCxmdH0oVyksKGl0PVcuc3RhdGljX2xlbiszKzc+Pj4zKTw9KG50PVcub3B0X2xlbiszKzc+Pj4zKSYmKG50PWl0KSk6bnQ9aXQ9Rys1LEcr'@; put 'NDw9bnQmJi0xIT09UT90dChXLFEsRyxldCk6ND09PVcuc3RyYXRlZ3l8fGl0PT09bnQ/KHooVywyKyhldD8xOjApLDMpLHEoVyxCLCQpKTooeihXLDQrKGV0PzE6MCksMyksZnVuY3Rpb24oaHQsZnQscHQsVHQpe3ZhciB5dDtmb3IoeihodCxmdC0yNTcsNSkseihodCxwdC0xLDUpLHooaHQs'@; put 'VHQtNCw0KSx5dD0wO3l0PFR0O3l0KyspeihodCxodC5ibF90cmVlWzIqUFt5dF0rMV0sMyk7SyhodCxodC5keW5fbHRyZWUsZnQtMSksSyhodCxodC5keW5fZHRyZWUscHQtMSl9KFcsVy5sX2Rlc2MubWF4X2NvZGUrMSxXLmRfZGVzYy5tYXhfY29kZSsxLG90KzEpLHEoVyxXLmR5bl9sdHJl'@; put 'ZSxXLmR5bl9kdHJlZSkpLEgoVyksZXQmJlQoVyl9LGYuX3RyX3RhbGx5PWZ1bmN0aW9uKFcsUSxHKXtyZXR1cm4gVy5wZW5kaW5nX2J1ZltXLmRfYnVmKzIqVy5sYXN0X2xpdF09UT4+PjgmMjU1LFcucGVuZGluZ19idWZbVy5kX2J1ZisyKlcubGFzdF9saXQrMV09MjU1JlEsVy5wZW5kaW5n'@; put 'X2J1ZltXLmxfYnVmK1cubGFzdF9saXRdPTI1NSZHLFcubGFzdF9saXQrKywwPT09UT9XLmR5bl9sdHJlZVsyKkddKys6KFcubWF0Y2hlcysrLFEtLSxXLmR5bl9sdHJlZVsyKih4W0ddKzI1NisxKV0rKyxXLmR5bl9kdHJlZVsyKmsoUSldKyspLFcubGFzdF9saXQ9PT1XLmxpdF9idWZzaXpl'@; put 'LTF9LGYuX3RyX2FsaWduPWZ1bmN0aW9uKFcpe3ZhciBRO3ooVywyLDMpLFUoVywyNTYsQiksMTY9PT0oUT1XKS5iaV92YWxpZD8oTyhRLFEuYmlfYnVmKSxRLmJpX2J1Zj0wLFEuYmlfdmFsaWQ9MCk6ODw9US5iaV92YWxpZCYmKFEucGVuZGluZ19idWZbUS5wZW5kaW5nKytdPTI1NSZRLmJp'@; put 'X2J1ZixRLmJpX2J1Zj4+PTgsUS5iaV92YWxpZC09OCl9fSx7Ii4uL3V0aWxzL2NvbW1vbiI6NDF9XSw1MzpbZnVuY3Rpb24oaSxoLGYpe2guZXhwb3J0cz1mdW5jdGlvbigpe3RoaXMuaW5wdXQ9bnVsbCx0aGlzLm5leHRfaW49MCx0aGlzLmF2YWlsX2luPTAsdGhpcy50b3RhbF9pbj0wLHRo'@; put 'aXMub3V0cHV0PW51bGwsdGhpcy5uZXh0X291dD0wLHRoaXMuYXZhaWxfb3V0PTAsdGhpcy50b3RhbF9vdXQ9MCx0aGlzLm1zZz0iIix0aGlzLnN0YXRlPW51bGwsdGhpcy5kYXRhX3R5cGU9Mix0aGlzLmFkbGVyPTB9fSx7fV0sNTQ6W2Z1bmN0aW9uKGksaCxmKXsoZnVuY3Rpb24odSl7IWZ1'@; put 'bmN0aW9uKHApe2lmKCFwLnNldEltbWVkaWF0ZSl7dmFyIHYsXyxBLEksTD0xLE49e30sUD0hMSxCPXAuZG9jdW1lbnQsJD1PYmplY3QuZ2V0UHJvdG90eXBlT2YmJk9iamVjdC5nZXRQcm90b3R5cGVPZihwKTskPSQmJiQuc2V0VGltZW91dD8kOnAsdj0iW29iamVjdCBwcm9jZXNzXSI9PT17'@; put 'fS50b1N0cmluZy5jYWxsKHAucHJvY2Vzcyk/ZnVuY3Rpb24oail7Yi5uZXh0VGljayhmdW5jdGlvbigpe3goail9KX06ZnVuY3Rpb24oKXtpZihwLnBvc3RNZXNzYWdlJiYhcC5pbXBvcnRTY3JpcHRzKXt2YXIgaj0hMCxjPXAub25tZXNzYWdlO3JldHVybiBwLm9ubWVzc2FnZT1mdW5jdGlv'@; put 'bigpe2o9ITF9LHAucG9zdE1lc3NhZ2UoIiIsIioiKSxwLm9ubWVzc2FnZT1jLGp9fSgpPyhJPSJzZXRJbW1lZGlhdGUkIitNYXRoLnJhbmRvbSgpKyIkIixwLmFkZEV2ZW50TGlzdGVuZXI/cC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixNLCExKTpwLmF0dGFjaEV2ZW50KCJvbm1lc3Nh'@; put 'Z2UiLE0pLGZ1bmN0aW9uKGope3AucG9zdE1lc3NhZ2UoSStqLCIqIil9KTpwLk1lc3NhZ2VDaGFubmVsPygoQT1uZXcgTWVzc2FnZUNoYW5uZWwpLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbihqKXt4KGouZGF0YSl9LGZ1bmN0aW9uKGope0EucG9ydDIucG9zdE1lc3NhZ2Uoail9KTpCJiYi'@; put 'b25yZWFkeXN0YXRlY2hhbmdlImluIEIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik/KF89Qi5kb2N1bWVudEVsZW1lbnQsZnVuY3Rpb24oail7dmFyIGM9Qi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3goaiksYy5vbnJlYWR5c3RhdGVj'@; put 'aGFuZ2U9bnVsbCxfLnJlbW92ZUNoaWxkKGMpLGM9bnVsbH0sXy5hcHBlbmRDaGlsZChjKX0pOmZ1bmN0aW9uKGope3NldFRpbWVvdXQoeCwwLGopfSwkLnNldEltbWVkaWF0ZT1mdW5jdGlvbihqKXsiZnVuY3Rpb24iIT10eXBlb2YgaiYmKGo9bmV3IEZ1bmN0aW9uKCIiK2opKTtmb3IodmFy'@; put 'IGM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSksbT0wO208Yy5sZW5ndGg7bSsrKWNbbV09YXJndW1lbnRzW20rMV07cmV0dXJuIE5bTF09e2NhbGxiYWNrOmosYXJnczpjfSx2KEwpLEwrK30sJC5jbGVhckltbWVkaWF0ZT1EfWZ1bmN0aW9uIEQoail7ZGVsZXRlIE5bal19ZnVuY3Rp'@; put 'b24geChqKXtpZihQKXNldFRpbWVvdXQoeCwwLGopO2Vsc2V7dmFyIGM9TltqXTtpZihjKXtQPSEwO3RyeXshZnVuY3Rpb24obSl7dmFyIGc9bS5jYWxsYmFjayx5PW0uYXJncztzd2l0Y2goeS5sZW5ndGgpe2Nhc2UgMDpnKCk7YnJlYWs7Y2FzZSAxOmcoeVswXSk7YnJlYWs7Y2FzZSAyOmco'@; put 'eVswXSx5WzFdKTticmVhaztjYXNlIDM6Zyh5WzBdLHlbMV0seVsyXSk7YnJlYWs7ZGVmYXVsdDpnLmFwcGx5KHZvaWQgMCx5KX19KGMpfWZpbmFsbHl7RChqKSxQPSExfX19fWZ1bmN0aW9uIE0oail7ai5zb3VyY2U9PT1wJiYic3RyaW5nIj09dHlwZW9mIGouZGF0YSYmMD09PWouZGF0YS5p'@; put 'bmRleE9mKEkpJiZ4KCtqLmRhdGEuc2xpY2UoSS5sZW5ndGgpKX19KHR5cGVvZiBzZWxmPiJ1Ij92b2lkIDA9PT11P3RoaXM6dTpzZWxmKX0pLmNhbGwodGhpcyx2b2lkIDAhPT1hP2E6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dfSx7fSxb'@; put 'MTBdKSgxMCl9KX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9LHMoImJ1ZmZlciIpLkJ1ZmZlcixhcmd1bWVudHNbM10sYXJndW1lbnRz'@; put 'WzRdLGFyZ3VtZW50c1s1XSxhcmd1bWVudHNbNl0scygidGltZXJzIikuc2V0SW1tZWRpYXRlKX0se19wcm9jZXNzOjQ2NyxidWZmZXI6MjIwLHRpbWVyczo1MjN9XSw0NDI6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPS9bXFxe'@; put 'JC4qKz8oKVtcXXt9fF0vZyxvPVJlZ0V4cChhLnNvdXJjZSksdD0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGU9Im9iamVjdCI9PXR5cGVvZiBiJiZiJiZiLk9iamVjdD09PU9iamVjdCYmYnx8dHx8RnVuY3Rpb24oInJldHVybiB0aGlz'@; put 'IikoKSxsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsbj1lLlN5bWJvbCxpPW4/bi5wcm90b3R5cGU6dm9pZCAwLGg9aT9pLnRvU3RyaW5nOnZvaWQgMDtFLmV4cG9ydHM9ZnVuY3Rpb24odSl7dmFyIHA7cmV0dXJuKHU9bnVsbD09KHA9dSk/IiI6ZnVuY3Rpb24gZih1KXtpZigic3RyaW5n'@; put 'Ij09dHlwZW9mIHUpcmV0dXJuIHU7aWYoInN5bWJvbCI9PXR5cGVvZihkPXUpfHxmdW5jdGlvbih2KXtyZXR1cm4hIXYmJiJvYmplY3QiPT10eXBlb2Ygdn0oZCkmJiJbb2JqZWN0IFN5bWJvbF0iPT1sLmNhbGwoZCkpcmV0dXJuIGg/aC5jYWxsKHUpOiIiO3ZhciBkLHA9dSsiIjtyZXR1cm4i'@; put 'MCI9PXAmJjEvdT09LTEvMD8iLTAiOnB9KHApKSYmby50ZXN0KHUpP3UucmVwbGFjZShhLCJcXCQmIik6dX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7'@; put 'fV0sNDQzOltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgYT0iW29iamVjdCBBcmd1bWVudHNdIixvPSJbb2JqZWN0IE1hcF0iLHI9IltvYmplY3QgT2JqZWN0XSIsdD0iW29iamVjdCBTZXRdIixlPS9cLnxcWyg/OlteW1xdXSp8KFsi'@; put 'J10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGw9L15cdyokLyxuPS9eXC4vLGk9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csaD0vXFwoXFwpPy9nLGY9'@; put 'L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT0vXig/OjB8WzEtOV1cZCopJC8scD17fTtwWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1wWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1wWyJbb2JqZWN0IEludDhBcnJheV0iXT1wWyJbb2JqZWN0IEludDE2QXJyYXldIl09cFsiW29i'@; put 'amVjdCBJbnQzMkFycmF5XSJdPXBbIltvYmplY3QgVWludDhBcnJheV0iXT1wWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPXBbIltvYmplY3QgVWludDE2QXJyYXldIl09cFsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxwW2FdPXBbIltvYmplY3QgQXJyYXldIl09cFsiW29iamVj'@; put 'dCBBcnJheUJ1ZmZlcl0iXT1wWyJbb2JqZWN0IEJvb2xlYW5dIl09cFsiW29iamVjdCBEYXRhVmlld10iXT1wWyJbb2JqZWN0IERhdGVdIl09cFsiW29iamVjdCBFcnJvcl0iXT1wWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPXBbb109cFsiW29iamVjdCBOdW1iZXJdIl09cFtyXT1wWyJbb2JqZWN0'@; put 'IFJlZ0V4cF0iXT1wW3RdPXBbIltvYmplY3QgU3RyaW5nXSJdPXBbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgZD0ib2JqZWN0Ij09dHlwZW9mIGImJmImJmIuT2JqZWN0PT09T2JqZWN0JiZiLHY9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYm'@; put 'c2VsZixfPWR8fHZ8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksQT0ib2JqZWN0Ij09dHlwZW9mIFMmJlMmJiFTLm5vZGVUeXBlJiZTLEk9QSYmIm9iamVjdCI9PXR5cGVvZiBFJiZFJiYhRS5ub2RlVHlwZSYmRSxMPUkmJkkuZXhwb3J0cz09PUEmJmQucHJvY2VzcyxOPWZ1bmN0aW9uKCl7'@; put 'dHJ5e3JldHVybiBMJiZMLmJpbmRpbmcoInV0aWwiKX1jYXRjaHt9fSgpLFA9TiYmTi5pc1R5cGVkQXJyYXk7ZnVuY3Rpb24gQihaLHN0LGN0LHV0KXtmb3IodmFyIGJ0PS0xLEN0PVo/Wi5sZW5ndGg6MDsrK2J0PEN0Oyl7dmFyIE10PVpbYnRdO3N0KHV0LE10LGN0KE10KSxaKX1yZXR1cm4g'@; put 'dXR9ZnVuY3Rpb24gJChaLHN0KXtmb3IodmFyIGN0PS0xLHV0PVo/Wi5sZW5ndGg6MDsrK2N0PHV0OylpZihzdChaW2N0XSxjdCxaKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBEKFope3ZhciBzdD0hMTtpZihudWxsIT1aJiYiZnVuY3Rpb24iIT10eXBlb2YgWi50b1N0cmluZyl0cnl7'@; put 'c3Q9ISEoWisiIil9Y2F0Y2h7fXJldHVybiBzdH1mdW5jdGlvbiB4KFope3ZhciBzdD0tMSxjdD1BcnJheShaLnNpemUpO3JldHVybiBaLmZvckVhY2goZnVuY3Rpb24odXQsYnQpe2N0Wysrc3RdPVtidCx1dF19KSxjdH1mdW5jdGlvbiBNKFope3ZhciBzdD0tMSxjdD1BcnJheShaLnNpemUp'@; put 'O3JldHVybiBaLmZvckVhY2goZnVuY3Rpb24odXQpe2N0Wysrc3RdPXV0fSksY3R9dmFyIGosYyxtLGc9QXJyYXkucHJvdG90eXBlLHk9RnVuY3Rpb24ucHJvdG90eXBlLHc9T2JqZWN0LnByb3RvdHlwZSxrPV9bIl9fY29yZS1qc19zaGFyZWRfXyJdLE89KGo9L1teLl0rJC8uZXhlYyhrJiZr'@; put 'LmtleXMmJmsua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK2o6IiIsej15LnRvU3RyaW5nLFU9dy5oYXNPd25Qcm9wZXJ0eSxWPXcudG9TdHJpbmcsUj1SZWdFeHAoIl4iK3ouY2FsbChVKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2Uo'@; put 'L2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKSxIPV8uU3ltYm9sLFQ9Xy5VaW50OEFycmF5LEM9dy5wcm9wZXJ0eUlzRW51bWVyYWJsZSxGPWcuc3BsaWNlLHE9KGM9T2JqZWN0LmtleXMsbT1PYmplY3QsZnVuY3Rp'@; put 'b24oWil7cmV0dXJuIGMobShaKSl9KSxZPVB0KF8sIkRhdGFWaWV3IiksWD1QdChfLCJNYXAiKSxLPVB0KF8sIlByb21pc2UiKSxydD1QdChfLCJTZXQiKSx0dD1QdChfLCJXZWFrTWFwIiksVz1QdChPYmplY3QsImNyZWF0ZSIpLFE9bHQoWSksRz1sdChYKSxldD1sdChLKSxudD1sdChydCks'@; put 'aXQ9bHQodHQpLG90PUg/SC5wcm90b3R5cGU6dm9pZCAwLGh0PW90P290LnZhbHVlT2Y6dm9pZCAwLGZ0PW90P290LnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBwdChaKXt2YXIgc3Q9LTEsY3Q9Wj9aLmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytzdDxjdDspe3ZhciB1dD1aW3N0XTt0'@; put 'aGlzLnNldCh1dFswXSx1dFsxXSl9fWZ1bmN0aW9uIFR0KFope3ZhciBzdD0tMSxjdD1aP1oubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK3N0PGN0Oyl7dmFyIHV0PVpbc3RdO3RoaXMuc2V0KHV0WzBdLHV0WzFdKX19ZnVuY3Rpb24geXQoWil7dmFyIHN0PS0xLGN0PVo/Wi5sZW5ndGg6'@; put 'MDtmb3IodGhpcy5jbGVhcigpOysrc3Q8Y3Q7KXt2YXIgdXQ9WltzdF07dGhpcy5zZXQodXRbMF0sdXRbMV0pfX1mdW5jdGlvbiB3dChaKXt2YXIgc3Q9LTEsY3Q9Wj9aLmxlbmd0aDowO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyB5dDsrK3N0PGN0Oyl0aGlzLmFkZChaW3N0XSl9ZnVuY3Rpb24g'@; put 'cXQoWil7dGhpcy5fX2RhdGFfXz1uZXcgVHQoWil9ZnVuY3Rpb24gX3QoWixzdCl7Zm9yKHZhciBjdD1aLmxlbmd0aDtjdC0tOylpZih0ZShaW2N0XVswXSxzdCkpcmV0dXJuIGN0O3JldHVybi0xfWZ1bmN0aW9uIEF0KFosc3QsY3QsdXQpe3JldHVybiBWdChaLGZ1bmN0aW9uKGJ0LEN0LE10'@; put 'KXtzdCh1dCxidCxjdChidCksTXQpfSksdXR9cHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1XP1cobnVsbCk6e319LHB0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oWil7cmV0dXJuIHRoaXMuaGFzKFopJiZkZWxldGUgdGhpcy5fX2RhdGFfX1taXX0scHQu'@; put 'cHJvdG90eXBlLmdldD1mdW5jdGlvbihaKXt2YXIgc3Q9dGhpcy5fX2RhdGFfXztpZihXKXt2YXIgY3Q9c3RbWl07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09Y3Q/dm9pZCAwOmN0fXJldHVybiBVLmNhbGwoc3QsWik/c3RbWl06dm9pZCAwfSxwdC5wcm90b3R5cGUuaGFz'@; put 'PWZ1bmN0aW9uKFope3ZhciBzdD10aGlzLl9fZGF0YV9fO3JldHVybiBXP3ZvaWQgMCE9PXN0W1pdOlUuY2FsbChzdCxaKX0scHQucHJvdG90eXBlLnNldD1mdW5jdGlvbihaLHN0KXtyZXR1cm4gdGhpcy5fX2RhdGFfX1taXT1XJiZ2b2lkIDA9PT1zdD8iX19sb2Rhc2hfaGFzaF91bmRlZmlu'@; put 'ZWRfXyI6c3QsdGhpc30sVHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXX0sVHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihaKXt2YXIgc3Q9dGhpcy5fX2RhdGFfXyxjdD1fdChzdCxaKTtyZXR1cm4hKGN0PDB8fChjdD09c3QubGVuZ3RoLTE/c3QucG9w'@; put 'KCk6Ri5jYWxsKHN0LGN0LDEpLDApKX0sVHQucHJvdG90eXBlLmdldD1mdW5jdGlvbihaKXt2YXIgc3Q9dGhpcy5fX2RhdGFfXyxjdD1fdChzdCxaKTtyZXR1cm4gY3Q8MD92b2lkIDA6c3RbY3RdWzFdfSxUdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKFope3JldHVybiBfdCh0aGlzLl9fZGF0'@; put 'YV9fLFopPi0xfSxUdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKFosc3Qpe3ZhciBjdD10aGlzLl9fZGF0YV9fLHV0PV90KGN0LFopO3JldHVybiB1dDwwP2N0LnB1c2goW1osc3RdKTpjdFt1dF1bMV09c3QsdGhpc30seXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFf'@; put 'Xz17aGFzaDpuZXcgcHQsbWFwOm5ldyhYfHxUdCksc3RyaW5nOm5ldyBwdH19LHl0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oWil7cmV0dXJuIEJ0KHRoaXMsWikuZGVsZXRlKFopfSx5dC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKFope3JldHVybiBCdCh0aGlzLFopLmdldChaKX0seXQu'@; put 'cHJvdG90eXBlLmhhcz1mdW5jdGlvbihaKXtyZXR1cm4gQnQodGhpcyxaKS5oYXMoWil9LHl0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oWixzdCl7cmV0dXJuIEJ0KHRoaXMsWikuc2V0KFosc3QpLHRoaXN9LHd0LnByb3RvdHlwZS5hZGQ9d3QucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oWil7'@; put 'cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KFosIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx3dC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKFope3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhaKX0scXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1u'@; put 'ZXcgVHR9LHF0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oWil7cmV0dXJuIHRoaXMuX19kYXRhX18uZGVsZXRlKFopfSxxdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKFope3JldHVybiB0aGlzLl9fZGF0YV9fLmdldChaKX0scXQucHJvdG90eXBlLmhhcz1mdW5jdGlvbihaKXtyZXR1cm4g'@; put 'dGhpcy5fX2RhdGFfXy5oYXMoWil9LHF0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oWixzdCl7dmFyIGN0PXRoaXMuX19kYXRhX187aWYoY3QgaW5zdGFuY2VvZiBUdCl7dmFyIHV0PWN0Ll9fZGF0YV9fO2lmKCFYfHx1dC5sZW5ndGg8MTk5KXJldHVybiB1dC5wdXNoKFtaLHN0XSksdGhpcztj'@; put 'dD10aGlzLl9fZGF0YV9fPW5ldyB5dCh1dCl9cmV0dXJuIGN0LnNldChaLHN0KSx0aGlzfTt2YXIgZ3QsVnQ9KGd0PWZ1bmN0aW9uKFosc3Qpe3JldHVybiBaJiZTdChaLHN0LGxlKX0sZnVuY3Rpb24oWixzdCl7aWYobnVsbD09WilyZXR1cm4gWjtpZighUXQoWikpcmV0dXJuIGd0KFosc3Qp'@; put 'O2Zvcih2YXIgY3Q9Wi5sZW5ndGgsdXQ9LTEsYnQ9T2JqZWN0KFopOysrdXQ8Y3QmJiExIT09c3QoYnRbdXRdLHV0LGJ0KTspO3JldHVybiBafSksU3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oc3QsY3QsdXQpe2Zvcih2YXIgYnQ9LTEsQ3Q9T2JqZWN0KHN0KSxNdD11dChzdCksS3Q9'@; put 'TXQubGVuZ3RoO0t0LS07KXt2YXIgJHQ9TXRbKytidF07aWYoITE9PT1jdChDdFskdF0sJHQsQ3QpKWJyZWFrfXJldHVybiBzdH19KCk7ZnVuY3Rpb24gT3QoWixzdCl7Zm9yKHZhciBjdD0wLHV0PShzdD1JdChzdCxaKT9bc3RdOnp0KHN0KSkubGVuZ3RoO251bGwhPVomJmN0PHV0OylaPVpb'@; put 'YXQoc3RbY3QrK10pXTtyZXR1cm4gY3QmJmN0PT11dD9aOnZvaWQgMH1mdW5jdGlvbiB5ZShaLHN0KXtyZXR1cm4gbnVsbCE9WiYmc3QgaW4gT2JqZWN0KFopfWZ1bmN0aW9uIFJ0KFosc3QsY3QsdXQsYnQpe3JldHVybiBaPT09c3R8fChudWxsPT1afHxudWxsPT1zdHx8IXJlKFopJiYhaWUo'@; put 'c3QpP1ohPVomJnN0IT1zdDpmdW5jdGlvbihDdCxNdCxLdCwkdCxEdCxIdCl7dmFyIHNlPXh0KEN0KSxvZT14dChNdCksSnQ9IltvYmplY3QgQXJyYXldIixuZT0iW29iamVjdCBBcnJheV0iO3NlfHwoSnQ9KEp0PWNlKEN0KSk9PWE/cjpKdCksb2V8fChuZT0obmU9Y2UoTXQpKT09YT9yOm5l'@; put 'KTt2YXIgaGU9SnQ9PXImJiFEKEN0KSxiZT1uZT09ciYmIUQoTXQpLGdlPUp0PT1uZTtpZihnZSYmIWhlKXJldHVybiBIdHx8KEh0PW5ldyBxdCksc2V8fGRlKEN0KT9wZShDdCxNdCxLdCwkdCxEdCxIdCk6ZnVuY3Rpb24oR3QsZWUsTGUsQ2UsT2UsbWUsX2Upe3N3aXRjaChMZSl7Y2FzZSJb'@; put 'b2JqZWN0IERhdGFWaWV3XSI6aWYoR3QuYnl0ZUxlbmd0aCE9ZWUuYnl0ZUxlbmd0aHx8R3QuYnl0ZU9mZnNldCE9ZWUuYnl0ZU9mZnNldClyZXR1cm4hMTtHdD1HdC5idWZmZXIsZWU9ZWUuYnVmZmVyO2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiEoR3QuYnl0ZUxlbmd0aCE9'@; put 'ZWUuYnl0ZUxlbmd0aHx8IUNlKG5ldyBUKEd0KSxuZXcgVChlZSkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiB0ZSgrR3QsK2VlKTtjYXNlIltvYmplY3QgRXJyb3JdIjpyZXR1cm4gR3QubmFtZT09ZWUu'@; put 'bmFtZSYmR3QubWVzc2FnZT09ZWUubWVzc2FnZTtjYXNlIltvYmplY3QgUmVnRXhwXSI6Y2FzZSJbb2JqZWN0IFN0cmluZ10iOnJldHVybiBHdD09ZWUrIiI7Y2FzZSBvOnZhciB4ZT14O2Nhc2UgdDppZih4ZXx8KHhlPU0pLEd0LnNpemUhPWVlLnNpemUmJiEoMiZtZSkpcmV0dXJuITE7dmFy'@; put 'IGplPV9lLmdldChHdCk7aWYoamUpcmV0dXJuIGplPT1lZTttZXw9MSxfZS5zZXQoR3QsZWUpO3ZhciBUZT1wZSh4ZShHdCkseGUoZWUpLENlLE9lLG1lLF9lKTtyZXR1cm4gX2UuZGVsZXRlKEd0KSxUZTtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYoaHQpcmV0dXJuIGh0LmNhbGwoR3QpPT1o'@; put 'dC5jYWxsKGVlKX1yZXR1cm4hMX0oQ3QsTXQsSnQsS3QsJHQsRHQsSHQpO2lmKCEoMiZEdCkpe3ZhciB3ZT1oZSYmVS5jYWxsKEN0LCJfX3dyYXBwZWRfXyIpLFNlPWJlJiZVLmNhbGwoTXQsIl9fd3JhcHBlZF9fIik7aWYod2V8fFNlKXt2YXIgUmU9d2U/Q3QudmFsdWUoKTpDdCxNZT1TZT9N'@; put 'dC52YWx1ZSgpOk10O3JldHVybiBIdHx8KEh0PW5ldyBxdCksS3QoUmUsTWUsJHQsRHQsSHQpfX1yZXR1cm4hIWdlJiYoSHR8fChIdD1uZXcgcXQpLGZ1bmN0aW9uKEd0LGVlLExlLENlLE9lLG1lKXt2YXIgX2U9MiZPZSx4ZT1sZShHdCksRWU9eGUubGVuZ3RoO2lmKEVlIT1sZShlZSkubGVu'@; put 'Z3RoJiYhX2UpcmV0dXJuITE7Zm9yKHZhciBUZT1FZTtUZS0tOyl7dmFyIGtlPXhlW1RlXTtpZighKF9lP2tlIGluIGVlOlUuY2FsbChlZSxrZSkpKXJldHVybiExfXZhciAkZT1tZS5nZXQoR3QpO2lmKCRlJiZtZS5nZXQoZWUpKXJldHVybiAkZT09ZWU7dmFyIEllPSEwO21lLnNldChHdCxl'@; put 'ZSksbWUuc2V0KGVlLEd0KTtmb3IodmFyIHplPV9lOysrVGU8RWU7KXt2YXIgTmU9R3Rba2U9eGVbVGVdXSxQZT1lZVtrZV07aWYoQ2UpdmFyIEhlPV9lP0NlKFBlLE5lLGtlLGVlLEd0LG1lKTpDZShOZSxQZSxrZSxHdCxlZSxtZSk7aWYoISh2b2lkIDA9PT1IZT9OZT09PVBlfHxMZShOZSxQ'@; put 'ZSxDZSxPZSxtZSk6SGUpKXtJZT0hMTticmVha316ZXx8KHplPSJjb25zdHJ1Y3RvciI9PWtlKX1pZihJZSYmIXplKXt2YXIgQmU9R3QuY29uc3RydWN0b3IsRGU9ZWUuY29uc3RydWN0b3I7QmU9PURlfHwhKCJjb25zdHJ1Y3RvciJpbiBHdCl8fCEoImNvbnN0cnVjdG9yImluIGVlKXx8ImZ1'@; put 'bmN0aW9uIj09dHlwZW9mIEJlJiZCZSBpbnN0YW5jZW9mIEJlJiYiZnVuY3Rpb24iPT10eXBlb2YgRGUmJkRlIGluc3RhbmNlb2YgRGV8fChJZT0hMSl9cmV0dXJuIG1lLmRlbGV0ZShHdCksbWUuZGVsZXRlKGVlKSxJZX0oQ3QsTXQsS3QsJHQsRHQsSHQpKX0oWixzdCxSdCxjdCx1dCxidCkp'@; put 'fWZ1bmN0aW9uIHp0KFope3JldHVybiB4dChaKT9aOkooWil9ZnVuY3Rpb24gcGUoWixzdCxjdCx1dCxidCxDdCl7dmFyIE10PTImYnQsS3Q9Wi5sZW5ndGgsJHQ9c3QubGVuZ3RoO2lmKEt0IT0kdCYmIShNdCYmJHQ+S3QpKXJldHVybiExO3ZhciBEdD1DdC5nZXQoWik7aWYoRHQmJkN0Lmdl'@; put 'dChzdCkpcmV0dXJuIER0PT1zdDt2YXIgSHQ9LTEsc2U9ITAsb2U9MSZidD9uZXcgd3Q6dm9pZCAwO2ZvcihDdC5zZXQoWixzdCksQ3Quc2V0KHN0LFopOysrSHQ8S3Q7KXt2YXIgSnQ9WltIdF0sbmU9c3RbSHRdO2lmKHV0KXZhciBoZT1NdD91dChuZSxKdCxIdCxzdCxaLEN0KTp1dChKdCxu'@; put 'ZSxIdCxaLHN0LEN0KTtpZih2b2lkIDAhPT1oZSl7aWYoaGUpY29udGludWU7c2U9ITE7YnJlYWt9aWYob2Upe2lmKCEkKHN0LGZ1bmN0aW9uKGJlLGdlKXtpZighb2UuaGFzKGdlKSYmKEp0PT09YmV8fGN0KEp0LGJlLHV0LGJ0LEN0KSkpcmV0dXJuIG9lLmFkZChnZSl9KSl7c2U9ITE7YnJl'@; put 'YWt9fWVsc2UgaWYoSnQhPT1uZSYmIWN0KEp0LG5lLHV0LGJ0LEN0KSl7c2U9ITE7YnJlYWt9fXJldHVybiBDdC5kZWxldGUoWiksQ3QuZGVsZXRlKHN0KSxzZX1mdW5jdGlvbiBCdChaLHN0KXt2YXIgY3QsdXQsYnQ9Wi5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PSh1dD10eXBlb2YoY3Q9'@; put 'c3QpKXx8Im51bWJlciI9PXV0fHwic3ltYm9sIj09dXR8fCJib29sZWFuIj09dXQ/Il9fcHJvdG9fXyIhPT1jdDpudWxsPT09Y3QpP2J0WyJzdHJpbmciPT10eXBlb2Ygc3Q/InN0cmluZyI6Imhhc2giXTpidC5tYXB9ZnVuY3Rpb24gUHQoWixzdCl7dmFyIHV0LGJ0LGN0PSh1dD1aLGJ0PXN0'@; put 'LHV0Py5bYnRdKTtyZXR1cm4gZnVuY3Rpb24gTnQoWil7cmV0dXJuISghcmUoWil8fChzdD1aLE8mJk8gaW4gc3QpKSYmKFd0KFopfHxEKFopP1I6ZikudGVzdChsdChaKSk7dmFyIHN0fShjdCk/Y3Q6dm9pZCAwfXZhciBjZT1mdW5jdGlvbihaKXtyZXR1cm4gVi5jYWxsKFopfTtmdW5jdGlv'@; put 'biBGdChaLHN0KXtyZXR1cm4hIShzdD1zdD8/OTAwNzE5OTI1NDc0MDk5MSkmJigibnVtYmVyIj09dHlwZW9mIFp8fHUudGVzdChaKSkmJlo+LTEmJlolMT09MCYmWjxzdH1mdW5jdGlvbiBJdChaLHN0KXtpZih4dChaKSlyZXR1cm4hMTt2YXIgY3Q9dHlwZW9mIFo7cmV0dXJuISgibnVtYmVy'@; put 'IiE9Y3QmJiJzeW1ib2wiIT1jdCYmImJvb2xlYW4iIT1jdCYmbnVsbCE9WiYmIXVlKFopKXx8bC50ZXN0KFopfHwhZS50ZXN0KFopfHxudWxsIT1zdCYmWiBpbiBPYmplY3Qoc3QpfWZ1bmN0aW9uIHZlKFope3JldHVybiBaPT1aJiYhcmUoWil9ZnVuY3Rpb24gVXQoWixzdCl7cmV0dXJuIGZ1'@; put 'bmN0aW9uKGN0KXtyZXR1cm4gbnVsbCE9Y3QmJmN0W1pdPT09c3QmJih2b2lkIDAhPT1zdHx8WiBpbiBPYmplY3QoY3QpKX19KFkmJiJbb2JqZWN0IERhdGFWaWV3XSIhPWNlKG5ldyBZKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxYJiZjZShuZXcgWCkhPW98fEsmJiJbb2JqZWN0IFByb21pc2Vd'@; put 'IiE9Y2UoSy5yZXNvbHZlKCkpfHxydCYmY2UobmV3IHJ0KSE9dHx8dHQmJiJbb2JqZWN0IFdlYWtNYXBdIiE9Y2UobmV3IHR0KSkmJihjZT1mdW5jdGlvbihaKXt2YXIgc3Q9Vi5jYWxsKFopLGN0PXN0PT1yP1ouY29uc3RydWN0b3I6dm9pZCAwLHV0PWN0P2x0KGN0KTp2b2lkIDA7aWYodXQp'@; put 'c3dpdGNoKHV0KXtjYXNlIFE6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIEc6cmV0dXJuIG87Y2FzZSBldDpyZXR1cm4iW29iamVjdCBQcm9taXNlXSI7Y2FzZSBudDpyZXR1cm4gdDtjYXNlIGl0OnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gc3R9KTt2YXIgSj1rdChm'@; put 'dW5jdGlvbihaKXt2YXIgc3Q7Wj1udWxsPT0oc3Q9Wik/IiI6ZnVuY3Rpb24odXQpe2lmKCJzdHJpbmciPT10eXBlb2YgdXQpcmV0dXJuIHV0O2lmKHVlKHV0KSlyZXR1cm4gZnQ/ZnQuY2FsbCh1dCk6IiI7dmFyIGJ0PXV0KyIiO3JldHVybiIwIj09YnQmJjEvdXQ9PS0xLzA/Ii0wIjpidH0o'@; put 'c3QpO3ZhciBjdD1bXTtyZXR1cm4gbi50ZXN0KFopJiZjdC5wdXNoKCIiKSxaLnJlcGxhY2UoaSxmdW5jdGlvbih1dCxidCxDdCxNdCl7Y3QucHVzaChDdD9NdC5yZXBsYWNlKGgsIiQxIik6YnR8fHV0KX0pLGN0fSk7ZnVuY3Rpb24gYXQoWil7aWYoInN0cmluZyI9PXR5cGVvZiBafHx1ZSha'@; put 'KSlyZXR1cm4gWjt2YXIgc3Q9WisiIjtyZXR1cm4iMCI9PXN0JiYxL1o9PS0xLzA/Ii0wIjpzdH1mdW5jdGlvbiBsdChaKXtpZihudWxsIT1aKXt0cnl7cmV0dXJuIHouY2FsbChaKX1jYXRjaHt9dHJ5e3JldHVybiBaKyIifWNhdGNoe319cmV0dXJuIiJ9dmFyIGR0LHZ0PShkdD1mdW5jdGlv'@; put 'bihaLHN0LGN0KXtVLmNhbGwoWixjdCk/WltjdF0ucHVzaChzdCk6WltjdF09W3N0XX0sZnVuY3Rpb24oWixzdCl7dmFyIHV0PXt9O3JldHVybih4dChaKT9COkF0KShaLGR0LGZ1bmN0aW9uIGFlKFope3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBaP1o6bnVsbD09Wj9mZToib2JqZWN0Ij09'@; put 'dHlwZW9mIFo/eHQoWik/KGJ0PVpbMV0sSXQodXQ9WlswXSkmJnZlKGJ0KT9VdChhdCh1dCksYnQpOmZ1bmN0aW9uKEN0KXt2YXIgS3QsSHQsTXQ9dm9pZCAwPT09KEh0PW51bGw9PShLdD1DdCk/dm9pZCAwOk90KEt0LHV0KSk/dm9pZCAwOkh0O3JldHVybiB2b2lkIDA9PT1NdCYmTXQ9PT1i'@; put 'dD9mdW5jdGlvbihLdCwkdCl7cmV0dXJuIG51bGwhPUt0JiZmdW5jdGlvbihEdCxIdCxzZSl7Zm9yKHZhciBvZSxKdD0tMSxuZT0oSHQ9SXQoSHQsRHQpP1tIdF06enQoSHQpKS5sZW5ndGg7KytKdDxuZTspe3ZhciBoZT1hdChIdFtKdF0pO2lmKCEob2U9bnVsbCE9RHQmJnNlKER0LGhlKSkp'@; put 'YnJlYWs7RHQ9RHRbaGVdfXJldHVybiBvZXx8ISEobmU9RHQ/RHQubGVuZ3RoOjApJiZYdChuZSkmJkZ0KGhlLG5lKSYmKHh0KER0KXx8anQoRHQpKX0oS3QsJHQseWUpfShDdCx1dCk6UnQoYnQsTXQsdm9pZCAwLDMpfSk6ZnVuY3Rpb24odXQpe3ZhciBidD1mdW5jdGlvbihDdCl7Zm9yKHZh'@; put 'ciBNdD1sZShDdCksS3Q9TXQubGVuZ3RoO0t0LS07KXt2YXIgJHQ9TXRbS3RdLER0PUN0WyR0XTtNdFtLdF09WyR0LER0LHZlKER0KV19cmV0dXJuIE10fSh1dCk7cmV0dXJuIDE9PWJ0Lmxlbmd0aCYmYnRbMF1bMl0/VXQoYnRbMF1bMF0sYnRbMF1bMV0pOmZ1bmN0aW9uKEN0KXtyZXR1cm4g'@; put 'Q3Q9PT11dHx8ZnVuY3Rpb24oTXQsS3QsJHQsRHQpe3ZhciBIdD0kdC5sZW5ndGgsc2U9SHQ7aWYobnVsbD09TXQpcmV0dXJuIXNlO2ZvcihNdD1PYmplY3QoTXQpO0h0LS07KXt2YXIgSnQ9JHRbSHRdO2lmKEp0WzJdP0p0WzFdIT09TXRbSnRbMF1dOiEoSnRbMF1pbiBNdCkpcmV0dXJuITF9'@; put 'Zm9yKDsrK0h0PHNlOyl7dmFyIG5lPShKdD0kdFtIdF0pWzBdLGhlPU10W25lXSxiZT1KdFsxXTtpZihKdFsyXSl7aWYodm9pZCAwPT09aGUmJiEobmUgaW4gTXQpKXJldHVybiExfWVsc2V7dmFyIHdlLGdlPW5ldyBxdDtpZighKHZvaWQgMD09PXdlP1J0KGJlLGhlLER0LDMsZ2UpOndlKSly'@; put 'ZXR1cm4hMX19cmV0dXJuITB9KEN0LDAsYnQpfX0oWik6SXQoc3Q9Wik/KGN0PWF0KHN0KSxmdW5jdGlvbih1dCl7cmV0dXJuIHV0Py5bY3RdfSk6ZnVuY3Rpb24odXQpe3JldHVybiBmdW5jdGlvbihidCl7cmV0dXJuIE90KGJ0LHV0KX19KHN0KTt2YXIgdXQsYnQsc3QsY3R9KHN0KSx1dCl9'@; put 'KTtmdW5jdGlvbiBrdChaLHN0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgWnx8c3QmJiJmdW5jdGlvbiIhPXR5cGVvZiBzdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7dmFyIGN0PWZ1bmN0aW9uKCl7dmFyIHV0PWFyZ3VtZW50cyxidD1zdD9zdC5hcHBseSh0'@; put 'aGlzLHV0KTp1dFswXSxDdD1jdC5jYWNoZTtpZihDdC5oYXMoYnQpKXJldHVybiBDdC5nZXQoYnQpO3ZhciBNdD1aLmFwcGx5KHRoaXMsdXQpO3JldHVybiBjdC5jYWNoZT1DdC5zZXQoYnQsTXQpLE10fTtyZXR1cm4gY3QuY2FjaGU9bmV3KGt0LkNhY2hlfHx5dCksY3R9ZnVuY3Rpb24gdGUo'@; put 'WixzdCl7cmV0dXJuIFo9PT1zdHx8WiE9WiYmc3QhPXN0fWZ1bmN0aW9uIGp0KFope3JldHVybiBpZShzdD1aKSYmUXQoc3QpJiZVLmNhbGwoWiwiY2FsbGVlIikmJighQy5jYWxsKFosImNhbGxlZSIpfHxWLmNhbGwoWik9PWEpO3ZhciBzdH1rdC5DYWNoZT15dDt2YXIgeHQ9QXJyYXkuaXNB'@; put 'cnJheTtmdW5jdGlvbiBRdChaKXtyZXR1cm4gbnVsbCE9WiYmWHQoWi5sZW5ndGgpJiYhV3QoWil9ZnVuY3Rpb24gV3QoWil7dmFyIHN0PXJlKFopP1YuY2FsbChaKToiIjtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1zdHx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09c3R9ZnVu'@; put 'Y3Rpb24gWHQoWil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBaJiZaPi0xJiZaJTE9PTAmJlo8PTkwMDcxOTkyNTQ3NDA5OTF9ZnVuY3Rpb24gcmUoWil7dmFyIHN0PXR5cGVvZiBaO3JldHVybiEhWiYmKCJvYmplY3QiPT1zdHx8ImZ1bmN0aW9uIj09c3QpfWZ1bmN0aW9uIGllKFope3JldHVy'@; put 'biEhWiYmIm9iamVjdCI9PXR5cGVvZiBafWZ1bmN0aW9uIHVlKFope3JldHVybiJzeW1ib2wiPT10eXBlb2YgWnx8aWUoWikmJiJbb2JqZWN0IFN5bWJvbF0iPT1WLmNhbGwoWil9dmFyIGRlPVA/ZnVuY3Rpb24oWil7cmV0dXJuIGZ1bmN0aW9uKHN0KXtyZXR1cm4gWihzdCl9fShQKTpmdW5j'@; put 'dGlvbihaKXtyZXR1cm4gaWUoWikmJlh0KFoubGVuZ3RoKSYmISFwW1YuY2FsbChaKV19O2Z1bmN0aW9uIGxlKFope3JldHVybiBRdChaKT9mdW5jdGlvbiBFdChaLHN0KXt2YXIgY3Q9eHQoWil8fGp0KFopP2Z1bmN0aW9uKE10LEt0KXtmb3IodmFyICR0PS0xLER0PUFycmF5KE10KTsrKyR0'@; put 'PE10OylEdFskdF09S3QoJHQpO3JldHVybiBEdH0oWi5sZW5ndGgsU3RyaW5nKTpbXSx1dD1jdC5sZW5ndGgsYnQ9ISF1dDtmb3IodmFyIEN0IGluIFopIXN0JiYhVS5jYWxsKFosQ3QpfHxidCYmKCJsZW5ndGgiPT1DdHx8RnQoQ3QsdXQpKXx8Y3QucHVzaChDdCk7cmV0dXJuIGN0fShaKTpm'@; put 'dW5jdGlvbiBMdChaKXtpZihjdD0oc3Q9WikmJnN0LmNvbnN0cnVjdG9yLHN0IT09KCJmdW5jdGlvbiI9PXR5cGVvZiBjdCYmY3QucHJvdG90eXBlfHx3KSlyZXR1cm4gcShaKTt2YXIgc3QsY3QsYnQ9W107Zm9yKHZhciBDdCBpbiBPYmplY3QoWikpVS5jYWxsKFosQ3QpJiYiY29uc3RydWN0'@; put 'b3IiIT1DdCYmYnQucHVzaChDdCk7cmV0dXJuIGJ0fShaKX1mdW5jdGlvbiBmZShaKXtyZXR1cm4gWn1FLmV4cG9ydHM9dnR9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5k'@; put 'b3c6e30pfSx7fV0sNDQ0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7RS5leHBvcnRzPWZ1bmN0aW9uKGEpe3JldHVybiEwPT09YXx8ITE9PT1hfHxmdW5jdGlvbihvKXtyZXR1cm4hIW8mJiJvYmplY3QiPT10eXBlb2Ygb30o'@; put 'YSkmJiJbb2JqZWN0IEJvb2xlYW5dIj09Yi5jYWxsKGEpfX0se31dLDQ0NTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGE9IltvYmplY3QgQXJndW1lbnRzXSIsbz0iW29iamVjdCBNYXBdIixyPSJbb2JqZWN0IE9iamVjdF0iLHQ9'@; put 'IltvYmplY3QgU2V0XSIsZT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxsPS9eKD86MHxbMS05XVxkKikkLyxuPXt9O25bIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPW5bIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPW5bIltvYmplY3QgSW50OEFycmF5XSJdPW5bIltvYmplY3QgSW50'@; put 'MTZBcnJheV0iXT1uWyJbb2JqZWN0IEludDMyQXJyYXldIl09blsiW29iamVjdCBVaW50OEFycmF5XSJdPW5bIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09blsiW29iamVjdCBVaW50MTZBcnJheV0iXT1uWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLG5bYV09blsiW29iamVjdCBB'@; put 'cnJheV0iXT1uWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPW5bIltvYmplY3QgQm9vbGVhbl0iXT1uWyJbb2JqZWN0IERhdGFWaWV3XSJdPW5bIltvYmplY3QgRGF0ZV0iXT1uWyJbb2JqZWN0IEVycm9yXSJdPW5bIltvYmplY3QgRnVuY3Rpb25dIl09bltvXT1uWyJbb2JqZWN0IE51bWJlcl0i'@; put 'XT1uW3JdPW5bIltvYmplY3QgUmVnRXhwXSJdPW5bdF09blsiW29iamVjdCBTdHJpbmddIl09blsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBpPSJvYmplY3QiPT10eXBlb2YgYiYmYiYmYi5PYmplY3Q9PT1PYmplY3QmJmIsaD0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYu'@; put 'T2JqZWN0PT09T2JqZWN0JiZzZWxmLGY9aXx8aHx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSx1PSJvYmplY3QiPT10eXBlb2YgUyYmUyYmIVMubm9kZVR5cGUmJlMscD11JiYib2JqZWN0Ij09dHlwZW9mIEUmJkUmJiFFLm5vZGVUeXBlJiZFLGQ9cCYmcC5leHBvcnRzPT09dSx2PWQmJmku'@; put 'cHJvY2VzcyxfPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB2JiZ2LmJpbmRpbmcmJnYuYmluZGluZygidXRpbCIpfWNhdGNoe319KCksQT1fJiZfLmlzVHlwZWRBcnJheTtmdW5jdGlvbiBJKEosYXQpe2Zvcih2YXIgbHQ9LTEsZHQ9bnVsbD09Sj8wOkoubGVuZ3RoOysrbHQ8ZHQ7KWlmKGF0KEpb'@; put 'bHRdLGx0LEopKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEwoSil7dmFyIGF0PS0xLGx0PUFycmF5KEouc2l6ZSk7cmV0dXJuIEouZm9yRWFjaChmdW5jdGlvbihkdCxZdCl7bHRbKythdF09W1l0LGR0XX0pLGx0fWZ1bmN0aW9uIE4oSil7dmFyIGF0PS0xLGx0PUFycmF5KEouc2l6ZSk7'@; put 'cmV0dXJuIEouZm9yRWFjaChmdW5jdGlvbihkdCl7bHRbKythdF09ZHR9KSxsdH12YXIgUCxCLCQsRD1BcnJheS5wcm90b3R5cGUsTT1PYmplY3QucHJvdG90eXBlLGo9ZlsiX19jb3JlLWpzX3NoYXJlZF9fIl0sYz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbT1NLmhhc093blByb3Bl'@; put 'cnR5LGc9KFA9L1teLl0rJC8uZXhlYyhqJiZqLmtleXMmJmoua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK1A6IiIseT1NLnRvU3RyaW5nLHc9UmVnRXhwKCJeIitjLmNhbGwobSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNP'@; put 'd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksaz1kP2YuQnVmZmVyOnZvaWQgMCxPPWYuU3ltYm9sLHo9Zi5VaW50OEFycmF5LFU9TS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxWPUQuc3BsaWNlLFI9Tz9PLnRvU3RyaW5nVGFn'@; put 'OnZvaWQgMCxIPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsVD1rP2suaXNCdWZmZXI6dm9pZCAwLEM9KEI9T2JqZWN0LmtleXMsJD1PYmplY3QsZnVuY3Rpb24oSil7cmV0dXJuIEIoJChKKSl9KSxGPU90KGYsIkRhdGFWaWV3IikscT1PdChmLCJNYXAiKSxZPU90KGYsIlByb21pc2Ui'@; put 'KSxYPU90KGYsIlNldCIpLEs9T3QoZiwiV2Vha01hcCIpLHJ0PU90KE9iamVjdCwiY3JlYXRlIiksdHQ9YWUoRiksVz1hZShxKSxRPWFlKFkpLEc9YWUoWCksZXQ9YWUoSyksbnQ9Tz9PLnByb3RvdHlwZTp2b2lkIDAsaXQ9bnQ/bnQudmFsdWVPZjp2b2lkIDA7ZnVuY3Rpb24gb3QoSil7dmFy'@; put 'IGF0PS0xLGx0PW51bGw9PUo/MDpKLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrYXQ8bHQ7KXt2YXIgZHQ9SlthdF07dGhpcy5zZXQoZHRbMF0sZHRbMV0pfX1mdW5jdGlvbiBodChKKXt2YXIgYXQ9LTEsbHQ9bnVsbD09Sj8wOkoubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KythdDxsdDsp'@; put 'e3ZhciBkdD1KW2F0XTt0aGlzLnNldChkdFswXSxkdFsxXSl9fWZ1bmN0aW9uIGZ0KEope3ZhciBhdD0tMSxsdD1udWxsPT1KPzA6Si5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2F0PGx0Oyl7dmFyIGR0PUpbYXRdO3RoaXMuc2V0KGR0WzBdLGR0WzFdKX19ZnVuY3Rpb24gcHQoSil7dmFy'@; put 'IGF0PS0xLGx0PW51bGw9PUo/MDpKLmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgZnQ7KythdDxsdDspdGhpcy5hZGQoSlthdF0pfWZ1bmN0aW9uIFR0KEope3ZhciBhdD10aGlzLl9fZGF0YV9fPW5ldyBodChKKTt0aGlzLnNpemU9YXQuc2l6ZX1mdW5jdGlvbiB3dChKLGF0KXtmb3Io'@; put 'dmFyIGx0PUoubGVuZ3RoO2x0LS07KWlmKEx0KEpbbHRdWzBdLGF0KSlyZXR1cm4gbHQ7cmV0dXJuLTF9ZnVuY3Rpb24gcXQoSil7cmV0dXJuIG51bGw9PUo/dm9pZCAwPT09Sj8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6UiYmUiBpbiBPYmplY3QoSik/ZnVuY3Rpb24o'@; put 'YXQpe3ZhciBsdD1tLmNhbGwoYXQsUiksZHQ9YXRbUl07dHJ5e2F0W1JdPXZvaWQgMDt2YXIgWXQ9ITB9Y2F0Y2h7fXZhciB2dD15LmNhbGwoYXQpO3JldHVybiBZdCYmKGx0P2F0W1JdPWR0OmRlbGV0ZSBhdFtSXSksdnR9KEopOnkuY2FsbChKKX1mdW5jdGlvbiBFdChKKXtyZXR1cm4gSXQo'@; put 'SikmJnF0KEopPT1hfWZ1bmN0aW9uIF90KEosYXQsbHQsZHQsWXQpe3JldHVybiBKPT09YXR8fChudWxsPT1KfHxudWxsPT1hdHx8IUl0KEopJiYhSXQoYXQpP0ohPUomJmF0IT1hdDpmdW5jdGlvbih2dCxrdCx0ZSxqdCx4dCxRdCl7dmFyIFd0PXBlKHZ0KSxYdD1wZShrdCkscmU9V3Q/Iltv'@; put 'YmplY3QgQXJyYXldIjpSdCh2dCksaWU9WHQ/IltvYmplY3QgQXJyYXldIjpSdChrdCksdWU9KHJlPXJlPT1hP3I6cmUpPT1yLGRlPShpZT1pZT09YT9yOmllKT09cixsZT1yZT09aWU7aWYobGUmJkJ0KHZ0KSl7aWYoIUJ0KGt0KSlyZXR1cm4hMTtXdD0hMCx1ZT0hMX1pZihsZSYmIXVlKXJl'@; put 'dHVybiBRdHx8KFF0PW5ldyBUdCksV3R8fHZlKHZ0KT9tdCh2dCxrdCx0ZSxqdCx4dCxRdCk6ZnVuY3Rpb24odXQsYnQsQ3QsTXQsS3QsJHQsRHQpe3N3aXRjaChDdCl7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodXQuYnl0ZUxlbmd0aCE9YnQuYnl0ZUxlbmd0aHx8dXQuYnl0ZU9mZnNl'@; put 'dCE9YnQuYnl0ZU9mZnNldClyZXR1cm4hMTt1dD11dC5idWZmZXIsYnQ9YnQuYnVmZmVyO2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiEodXQuYnl0ZUxlbmd0aCE9YnQuYnl0ZUxlbmd0aHx8ISR0KG5ldyB6KHV0KSxuZXcgeihidCkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0i'@; put 'OmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBMdCgrdXQsK2J0KTtjYXNlIltvYmplY3QgRXJyb3JdIjpyZXR1cm4gdXQubmFtZT09YnQubmFtZSYmdXQubWVzc2FnZT09YnQubWVzc2FnZTtjYXNlIltvYmplY3QgUmVnRXhwXSI6Y2FzZSJbb2JqZWN0'@; put 'IFN0cmluZ10iOnJldHVybiB1dD09YnQrIiI7Y2FzZSBvOnZhciBIdD1MO2Nhc2UgdDppZihIdHx8KEh0PU4pLHV0LnNpemUhPWJ0LnNpemUmJiEoMSZNdCkpcmV0dXJuITE7dmFyIG9lPUR0LmdldCh1dCk7aWYob2UpcmV0dXJuIG9lPT1idDtNdHw9MixEdC5zZXQodXQsYnQpO3ZhciBKdD1t'@; put 'dChIdCh1dCksSHQoYnQpLE10LEt0LCR0LER0KTtyZXR1cm4gRHQuZGVsZXRlKHV0KSxKdDtjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYoaXQpcmV0dXJuIGl0LmNhbGwodXQpPT1pdC5jYWxsKGJ0KX1yZXR1cm4hMX0odnQsa3QscmUsdGUsanQseHQsUXQpO2lmKCEoMSZ0ZSkpe3ZhciBmZT11'@; put 'ZSYmbS5jYWxsKHZ0LCJfX3dyYXBwZWRfXyIpLFo9ZGUmJm0uY2FsbChrdCwiX193cmFwcGVkX18iKTtpZihmZXx8Wil7dmFyIHN0PWZlP3Z0LnZhbHVlKCk6dnQsY3Q9Wj9rdC52YWx1ZSgpOmt0O3JldHVybiBRdHx8KFF0PW5ldyBUdCkseHQoc3QsY3QsdGUsanQsUXQpfX1yZXR1cm4hIWxl'@; put 'JiYoUXR8fChRdD1uZXcgVHQpLGZ1bmN0aW9uKHV0LGJ0LEN0LE10LEt0LCR0KXt2YXIgRHQ9MSZDdCxIdD1WdCh1dCksc2U9SHQubGVuZ3RoO2lmKHNlIT1WdChidCkubGVuZ3RoJiYhRHQpcmV0dXJuITE7Zm9yKHZhciBKdD1zZTtKdC0tOyl7dmFyIG5lPUh0W0p0XTtpZighKER0P25lIGlu'@; put 'IGJ0Om0uY2FsbChidCxuZSkpKXJldHVybiExfXZhciBoZT0kdC5nZXQodXQpO2lmKGhlJiYkdC5nZXQoYnQpKXJldHVybiBoZT09YnQ7dmFyIGJlPSEwOyR0LnNldCh1dCxidCksJHQuc2V0KGJ0LHV0KTtmb3IodmFyIGdlPUR0OysrSnQ8c2U7KXt2YXIgd2U9dXRbbmU9SHRbSnRdXSxTZT1i'@; put 'dFtuZV07aWYoTXQpdmFyIFJlPUR0P010KFNlLHdlLG5lLGJ0LHV0LCR0KTpNdCh3ZSxTZSxuZSx1dCxidCwkdCk7aWYoISh2b2lkIDA9PT1SZT93ZT09PVNlfHxLdCh3ZSxTZSxDdCxNdCwkdCk6UmUpKXtiZT0hMTticmVha31nZXx8KGdlPSJjb25zdHJ1Y3RvciI9PW5lKX1pZihiZSYmIWdl'@; put 'KXt2YXIgTWU9dXQuY29uc3RydWN0b3IsR3Q9YnQuY29uc3RydWN0b3I7TWU9PUd0fHwhKCJjb25zdHJ1Y3RvciJpbiB1dCl8fCEoImNvbnN0cnVjdG9yImluIGJ0KXx8ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSBpbnN0YW5jZW9mIE1lJiYiZnVuY3Rpb24iPT10eXBlb2YgR3QmJkd0IGlu'@; put 'c3RhbmNlb2YgR3R8fChiZT0hMSl9cmV0dXJuICR0LmRlbGV0ZSh1dCksJHQuZGVsZXRlKGJ0KSxiZX0odnQsa3QsdGUsanQseHQsUXQpKX0oSixhdCxsdCxkdCxfdCxZdCkpfWZ1bmN0aW9uIG10KEosYXQsbHQsZHQsWXQsdnQpe3ZhciBrdD0xJmx0LHRlPUoubGVuZ3RoLGp0PWF0Lmxlbmd0'@; put 'aDtpZih0ZSE9anQmJiEoa3QmJmp0PnRlKSlyZXR1cm4hMTt2YXIgeHQ9dnQuZ2V0KEopO2lmKHh0JiZ2dC5nZXQoYXQpKXJldHVybiB4dD09YXQ7dmFyIFF0PS0xLFd0PSEwLFh0PTImbHQ/bmV3IHB0OnZvaWQgMDtmb3IodnQuc2V0KEosYXQpLHZ0LnNldChhdCxKKTsrK1F0PHRlOyl7dmFy'@; put 'IHJlPUpbUXRdLGllPWF0W1F0XTtpZihkdCl2YXIgdWU9a3Q/ZHQoaWUscmUsUXQsYXQsSix2dCk6ZHQocmUsaWUsUXQsSixhdCx2dCk7aWYodm9pZCAwIT09dWUpe2lmKHVlKWNvbnRpbnVlO1d0PSExO2JyZWFrfWlmKFh0KXtpZighSShhdCxmdW5jdGlvbihkZSxsZSl7aWYoIVh0Lmhhcyhs'@; put 'ZSkmJihyZT09PWRlfHxZdChyZSxkZSxsdCxkdCx2dCkpKXJldHVybiBYdC5wdXNoKGxlKX0pKXtXdD0hMTticmVha319ZWxzZSBpZihyZSE9PWllJiYhWXQocmUsaWUsbHQsZHQsdnQpKXtXdD0hMTticmVha319cmV0dXJuIHZ0LmRlbGV0ZShKKSx2dC5kZWxldGUoYXQpLFd0fWZ1bmN0aW9u'@; put 'IFZ0KEope3JldHVybiBkdD15ZSxZdD1mdW5jdGlvbiBVdChKKXtyZXR1cm4gbnVsbCE9KGF0PUopJiZjZShhdC5sZW5ndGgpJiYhUHQoYXQpP2Z1bmN0aW9uIHl0KEosYXQpe3ZhciBsdD1wZShKKSxkdD0hbHQmJnp0KEopLFl0PSFsdCYmIWR0JiZCdChKKSx2dD0hbHQmJiFkdCYmIVl0JiZ2'@; put 'ZShKKSxrdD1sdHx8ZHR8fFl0fHx2dCx0ZT1rdD9mdW5jdGlvbihRdCxXdCl7Zm9yKHZhciBYdD0tMSxyZT1BcnJheShRdCk7KytYdDxRdDspcmVbWHRdPVd0KFh0KTtyZXR1cm4gcmV9KEoubGVuZ3RoLFN0cmluZyk6W10sanQ9dGUubGVuZ3RoO2Zvcih2YXIgeHQgaW4gSikhYXQmJiFtLmNh'@; put 'bGwoSix4dCl8fGt0JiYoImxlbmd0aCI9PXh0fHxZdCYmKCJvZmZzZXQiPT14dHx8InBhcmVudCI9PXh0KXx8dnQmJigiYnVmZmVyIj09eHR8fCJieXRlTGVuZ3RoIj09eHR8fCJieXRlT2Zmc2V0Ij09eHQpfHxOdCh4dCxqdCkpfHx0ZS5wdXNoKHh0KTtyZXR1cm4gdGV9KEopOmZ1bmN0aW9u'@; put 'IGd0KEope2lmKGx0PShhdD1KKSYmYXQuY29uc3RydWN0b3IsYXQhPT0oImZ1bmN0aW9uIj09dHlwZW9mIGx0JiZsdC5wcm90b3R5cGV8fE0pKXJldHVybiBDKEopO3ZhciBhdCxsdCxZdD1bXTtmb3IodmFyIHZ0IGluIE9iamVjdChKKSltLmNhbGwoSix2dCkmJiJjb25zdHJ1Y3RvciIhPXZ0'@; put 'JiZZdC5wdXNoKHZ0KTtyZXR1cm4gWXR9KEopO3ZhciBhdH0oYXQ9SikscGUoYXQpP1l0OmZ1bmN0aW9uKHZ0LGt0KXtmb3IodmFyIHRlPS0xLGp0PWt0Lmxlbmd0aCx4dD12dC5sZW5ndGg7Kyt0ZTxqdDspdnRbeHQrdGVdPWt0W3RlXTtyZXR1cm4gdnR9KFl0LGR0KGF0KSk7dmFyIGF0LGR0'@; put 'LFl0fWZ1bmN0aW9uIFN0KEosYXQpe3ZhciBsdCxkdCxZdD1KLl9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KGR0PXR5cGVvZihsdD1hdCkpfHwibnVtYmVyIj09ZHR8fCJzeW1ib2wiPT1kdHx8ImJvb2xlYW4iPT1kdD8iX19wcm90b19fIiE9PWx0Om51bGw9PT1sdCk/WXRbInN0cmluZyI9'@; put 'PXR5cGVvZiBhdD8ic3RyaW5nIjoiaGFzaCJdOll0Lm1hcH1mdW5jdGlvbiBPdChKLGF0KXt2YXIgZHQsWXQsbHQ9KGR0PUosWXQ9YXQsZHQ/LltZdF0pO3JldHVybiBmdW5jdGlvbiBBdChKKXtyZXR1cm4hKCFGdChKKXx8KGF0PUosZyYmZyBpbiBhdCkpJiYoUHQoSik/dzplKS50ZXN0KGFl'@; put 'KEopKTt2YXIgYXR9KGx0KT9sdDp2b2lkIDB9b3QucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1ydD9ydChudWxsKTp7fSx0aGlzLnNpemU9MH0sb3QucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihKKXt2YXIgYXQ9dGhpcy5oYXMoSikmJmRlbGV0ZSB0aGlzLl9f'@; put 'ZGF0YV9fW0pdO3JldHVybiB0aGlzLnNpemUtPWF0PzE6MCxhdH0sb3QucHJvdG90eXBlLmdldD1mdW5jdGlvbihKKXt2YXIgYXQ9dGhpcy5fX2RhdGFfXztpZihydCl7dmFyIGx0PWF0W0pdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWx0P3ZvaWQgMDpsdH1yZXR1cm4g'@; put 'bS5jYWxsKGF0LEopP2F0W0pdOnZvaWQgMH0sb3QucHJvdG90eXBlLmhhcz1mdW5jdGlvbihKKXt2YXIgYXQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gcnQ/dm9pZCAwIT09YXRbSl06bS5jYWxsKGF0LEopfSxvdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKEosYXQpe3ZhciBsdD10aGlzLl9fZGF0'@; put 'YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKEopPzA6MSxsdFtKXT1ydCYmdm9pZCAwPT09YXQ/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOmF0LHRoaXN9LGh0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGh0LnByb3Rv'@; put 'dHlwZS5kZWxldGU9ZnVuY3Rpb24oSil7dmFyIGF0PXRoaXMuX19kYXRhX18sbHQ9d3QoYXQsSik7cmV0dXJuIShsdDwwfHwobHQ9PWF0Lmxlbmd0aC0xP2F0LnBvcCgpOlYuY2FsbChhdCxsdCwxKSwtLXRoaXMuc2l6ZSwwKSl9LGh0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oSil7dmFyIGF0'@; put 'PXRoaXMuX19kYXRhX18sbHQ9d3QoYXQsSik7cmV0dXJuIGx0PDA/dm9pZCAwOmF0W2x0XVsxXX0saHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbihKKXtyZXR1cm4gd3QodGhpcy5fX2RhdGFfXyxKKT4tMX0saHQucHJvdG90eXBlLnNldD1mdW5jdGlvbihKLGF0KXt2YXIgbHQ9dGhpcy5fX2Rh'@; put 'dGFfXyxkdD13dChsdCxKKTtyZXR1cm4gZHQ8MD8oKyt0aGlzLnNpemUsbHQucHVzaChbSixhdF0pKTpsdFtkdF1bMV09YXQsdGhpc30sZnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgb3QsbWFwOm5ldyhxfHxodCksc3Ry'@; put 'aW5nOm5ldyBvdH19LGZ0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oSil7dmFyIGF0PVN0KHRoaXMsSikuZGVsZXRlKEopO3JldHVybiB0aGlzLnNpemUtPWF0PzE6MCxhdH0sZnQucHJvdG90eXBlLmdldD1mdW5jdGlvbihKKXtyZXR1cm4gU3QodGhpcyxKKS5nZXQoSil9LGZ0LnByb3Rv'@; put 'dHlwZS5oYXM9ZnVuY3Rpb24oSil7cmV0dXJuIFN0KHRoaXMsSikuaGFzKEopfSxmdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKEosYXQpe3ZhciBsdD1TdCh0aGlzLEopLGR0PWx0LnNpemU7cmV0dXJuIGx0LnNldChKLGF0KSx0aGlzLnNpemUrPWx0LnNpemU9PWR0PzA6MSx0aGlzfSxwdC5w'@; put 'cm90b3R5cGUuYWRkPXB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLl9fZGF0YV9fLnNldChKLCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc30scHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoSil9LFR0'@; put 'LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IGh0LHRoaXMuc2l6ZT0wfSxUdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKEope3ZhciBhdD10aGlzLl9fZGF0YV9fLGx0PWF0LmRlbGV0ZShKKTtyZXR1cm4gdGhpcy5zaXplPWF0LnNpemUsbHR9LFR0LnBy'@; put 'b3RvdHlwZS5nZXQ9ZnVuY3Rpb24oSil7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KEopfSxUdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhKKX0sVHQucHJvdG90eXBlLnNldD1mdW5jdGlvbihKLGF0KXt2YXIgbHQ9dGhpcy5fX2RhdGFfXztp'@; put 'ZihsdCBpbnN0YW5jZW9mIGh0KXt2YXIgZHQ9bHQuX19kYXRhX187aWYoIXF8fGR0Lmxlbmd0aDwxOTkpcmV0dXJuIGR0LnB1c2goW0osYXRdKSx0aGlzLnNpemU9KytsdC5zaXplLHRoaXM7bHQ9dGhpcy5fX2RhdGFfXz1uZXcgZnQoZHQpfXJldHVybiBsdC5zZXQoSixhdCksdGhpcy5zaXpl'@; put 'PWx0LnNpemUsdGhpc307dmFyIHllPUg/ZnVuY3Rpb24oSil7cmV0dXJuIG51bGw9PUo/W106KEo9T2JqZWN0KEopLGZ1bmN0aW9uKGF0LGx0KXtmb3IodmFyIGR0PS0xLFl0PW51bGw9PWF0PzA6YXQubGVuZ3RoLHZ0PTAsa3Q9W107KytkdDxZdDspe3ZhciB0ZT1hdFtkdF07bHQodGUpJiYo'@; put 'a3RbdnQrK109dGUpfXJldHVybiBrdH0oSChKKSxmdW5jdGlvbihhdCl7cmV0dXJuIFUuY2FsbChKLGF0KX0pKX06ZnVuY3Rpb24oKXtyZXR1cm5bXX0sUnQ9cXQ7ZnVuY3Rpb24gTnQoSixhdCl7cmV0dXJuISEoYXQ9YXQ/PzkwMDcxOTkyNTQ3NDA5OTEpJiYoIm51bWJlciI9PXR5cGVvZiBK'@; put 'fHxsLnRlc3QoSikpJiZKPi0xJiZKJTE9PTAmJko8YXR9ZnVuY3Rpb24gYWUoSil7aWYobnVsbCE9Sil7dHJ5e3JldHVybiBjLmNhbGwoSil9Y2F0Y2h7fXRyeXtyZXR1cm4gSisiIn1jYXRjaHt9fXJldHVybiIifWZ1bmN0aW9uIEx0KEosYXQpe3JldHVybiBKPT09YXR8fEohPUomJmF0IT1h'@; put 'dH0oRiYmIltvYmplY3QgRGF0YVZpZXddIiE9UnQobmV3IEYobmV3IEFycmF5QnVmZmVyKDEpKSl8fHEmJlJ0KG5ldyBxKSE9b3x8WSYmIltvYmplY3QgUHJvbWlzZV0iIT1SdChZLnJlc29sdmUoKSl8fFgmJlJ0KG5ldyBYKSE9dHx8SyYmIltvYmplY3QgV2Vha01hcF0iIT1SdChuZXcgSykp'@; put 'JiYoUnQ9ZnVuY3Rpb24oSil7dmFyIGF0PXF0KEopLGx0PWF0PT1yP0ouY29uc3RydWN0b3I6dm9pZCAwLGR0PWx0P2FlKGx0KToiIjtpZihkdClzd2l0Y2goZHQpe2Nhc2UgdHQ6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIFc6cmV0dXJuIG87Y2FzZSBROnJldHVybiJbb2JqZWN0'@; put 'IFByb21pc2VdIjtjYXNlIEc6cmV0dXJuIHQ7Y2FzZSBldDpyZXR1cm4iW29iamVjdCBXZWFrTWFwXSJ9cmV0dXJuIGF0fSk7dmFyIHp0PUV0KGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/RXQ6ZnVuY3Rpb24oSil7cmV0dXJuIEl0KEopJiZtLmNhbGwoSiwiY2FsbGVlIikmJiFV'@; put 'LmNhbGwoSiwiY2FsbGVlIil9LHBlPUFycmF5LmlzQXJyYXksQnQ9VHx8ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZnVuY3Rpb24gUHQoSil7aWYoIUZ0KEopKXJldHVybiExO3ZhciBhdD1xdChKKTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1hdHx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rp'@; put 'b25dIj09YXR8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09YXR8fCJbb2JqZWN0IFByb3h5XSI9PWF0fWZ1bmN0aW9uIGNlKEope3JldHVybiJudW1iZXIiPT10eXBlb2YgSiYmSj4tMSYmSiUxPT0wJiZKPD05MDA3MTk5MjU0NzQwOTkxfWZ1bmN0aW9uIEZ0KEope3ZhciBhdD10eXBlb2Yg'@; put 'SjtyZXR1cm4gbnVsbCE9SiYmKCJvYmplY3QiPT1hdHx8ImZ1bmN0aW9uIj09YXQpfWZ1bmN0aW9uIEl0KEope3JldHVybiBudWxsIT1KJiYib2JqZWN0Ij09dHlwZW9mIEp9dmFyIHZlPUE/ZnVuY3Rpb24oSil7cmV0dXJuIGZ1bmN0aW9uKGF0KXtyZXR1cm4gSihhdCl9fShBKTpmdW5jdGlv'@; put 'bihKKXtyZXR1cm4gSXQoSikmJmNlKEoubGVuZ3RoKSYmISFuW3F0KEopXX07RS5leHBvcnRzPWZ1bmN0aW9uKEosYXQpe3JldHVybiBfdChKLGF0KX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Yg'@; put 'd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNDQ2OltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbz0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLHI9Im9iamVjdCI9PXR5cGVv'@; put 'ZiBiJiZiJiZiLk9iamVjdD09PU9iamVjdCYmYnx8b3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSx0PU9iamVjdC5wcm90b3R5cGUsZT10Lmhhc093blByb3BlcnR5LGw9dC50b1N0cmluZyxuPXIuU3ltYm9sLGk9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtFLmV4cG9ydHM9ZnVuY3Rpb24o'@; put 'Zil7aWYoZD10eXBlb2YocD1mKSxudWxsPT1wfHwib2JqZWN0IiE9ZCYmImZ1bmN0aW9uIiE9ZClyZXR1cm4hMTt2YXIgcCxkLHU9ZnVuY3Rpb24gaChmKXtyZXR1cm4gbnVsbD09Zj92b2lkIDA9PT1mPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjppJiZpIGluIE9iamVj'@; put 'dChmKT9mdW5jdGlvbih1KXt2YXIgcD1lLmNhbGwodSxpKSxkPXVbaV07dHJ5e3VbaV09dm9pZCAwO3ZhciB2PSEwfWNhdGNoe312YXIgXz1sLmNhbGwodSk7cmV0dXJuIHYmJihwP3VbaV09ZDpkZWxldGUgdVtpXSksX30oZik6bC5jYWxsKGYpfShmKTtyZXR1cm4iW29iamVjdCBGdW5jdGlv'@; put 'bl0iPT11fHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT11fHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PXV8fCJbb2JqZWN0IFByb3h5XSI9PXV9fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlw'@; put 'ZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDQ0NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9ZnVuY3Rpb24oYil7cmV0dXJuIG51bGw9PWJ9fSx7fV0sNDQ4OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO0UuZXhwb3J0cz1mdW5jdGlvbihiKXty'@; put 'ZXR1cm4gdm9pZCAwPT09Yn19LHt9XSw0NDk6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYil7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHI9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9i'@; put 'amVjdCYmc2VsZix0PSJvYmplY3QiPT10eXBlb2YgYiYmYiYmYi5PYmplY3Q9PT1PYmplY3QmJmJ8fHJ8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7ZnVuY3Rpb24gZSh6LFUpe3JldHVybiEoIXp8fCF6Lmxlbmd0aCkmJmZ1bmN0aW9uKFYsUil7aWYoUiE9UilyZXR1cm4gZnVuY3Rpb24o'@; put 'RixxKXtmb3IodmFyIEs9Ri5sZW5ndGgscnQ9LTE7KytydDxLOylpZihxKEZbcnRdLHJ0LEYpKXJldHVybiBydDtyZXR1cm4tMX0oVixuKTtmb3IodmFyIFQ9LTEsQz1WLmxlbmd0aDsrK1Q8QzspaWYoVltUXT09PVIpcmV0dXJuIFQ7cmV0dXJuLTF9KHosVSk+LTF9ZnVuY3Rpb24gbih6KXty'@; put 'ZXR1cm4geiE9en1mdW5jdGlvbiBpKHosVSl7cmV0dXJuIHouaGFzKFUpfWZ1bmN0aW9uIGgoeil7dmFyIFU9LTEsVj1BcnJheSh6LnNpemUpO3JldHVybiB6LmZvckVhY2goZnVuY3Rpb24oUil7VlsrK1VdPVJ9KSxWfXZhciBmLHU9QXJyYXkucHJvdG90eXBlLHA9RnVuY3Rpb24ucHJvdG90'@; put 'eXBlLGQ9T2JqZWN0LnByb3RvdHlwZSx2PXRbIl9fY29yZS1qc19zaGFyZWRfXyJdLF89KGY9L1teLl0rJC8uZXhlYyh2JiZ2LmtleXMmJnYua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK2Y6IiIsQT1wLnRvU3RyaW5nLEk9ZC5oYXNPd25Qcm9wZXJ0eSxMPWQudG9TdHJp'@; put 'bmcsTj1SZWdFeHAoIl4iK0EuY2FsbChJKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKSxQPXUuc3BsaWNlLEI9ayh0LCJNYXAi'@; put 'KSwkPWsodCwiU2V0IiksRD1rKE9iamVjdCwiY3JlYXRlIik7ZnVuY3Rpb24geCh6KXt2YXIgVT0tMSxWPXo/ei5sZW5ndGg6MDtmb3IodGhpcy5jbGVhcigpOysrVTxWOyl7dmFyIFI9eltVXTt0aGlzLnNldChSWzBdLFJbMV0pfX1mdW5jdGlvbiBNKHope3ZhciBVPS0xLFY9ej96Lmxlbmd0'@; put 'aDowO2Zvcih0aGlzLmNsZWFyKCk7KytVPFY7KXt2YXIgUj16W1VdO3RoaXMuc2V0KFJbMF0sUlsxXSl9fWZ1bmN0aW9uIGooeil7dmFyIFU9LTEsVj16P3oubGVuZ3RoOjA7Zm9yKHRoaXMuY2xlYXIoKTsrK1U8Vjspe3ZhciBSPXpbVV07dGhpcy5zZXQoUlswXSxSWzFdKX19ZnVuY3Rpb24g'@; put 'Yyh6KXt2YXIgVT0tMSxWPXo/ei5sZW5ndGg6MDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgajsrK1U8VjspdGhpcy5hZGQoeltVXSl9ZnVuY3Rpb24gbSh6LFUpe2Zvcih2YXIgVixSLEg9ei5sZW5ndGg7SC0tOylpZigoVj16W0hdWzBdKT09PShSPVUpfHxWIT1WJiZSIT1SKXJldHVybiBIO3Jl'@; put 'dHVybi0xfXgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1EP0QobnVsbCk6e319LHgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih6KXtyZXR1cm4gdGhpcy5oYXMoeikmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3pdfSx4LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24o'@; put 'eil7dmFyIFU9dGhpcy5fX2RhdGFfXztpZihEKXt2YXIgVj1VW3pdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PVY/dm9pZCAwOlZ9cmV0dXJuIEkuY2FsbChVLHopP1Vbel06dm9pZCAwfSx4LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oeil7dmFyIFU9dGhpcy5fX2RhdGFf'@; put 'XztyZXR1cm4gRD92b2lkIDAhPT1VW3pdOkkuY2FsbChVLHopfSx4LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oeixVKXtyZXR1cm4gdGhpcy5fX2RhdGFfX1t6XT1EJiZ2b2lkIDA9PT1VPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjpVLHRoaXN9LE0ucHJvdG90eXBlLmNsZWFyPWZ1bmN0'@; put 'aW9uKCl7dGhpcy5fX2RhdGFfXz1bXX0sTS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHope3ZhciBVPXRoaXMuX19kYXRhX18sVj1tKFUseik7cmV0dXJuIShWPDB8fChWPT1VLmxlbmd0aC0xP1UucG9wKCk6UC5jYWxsKFUsViwxKSwwKSl9LE0ucHJvdG90eXBlLmdldD1mdW5jdGlvbih6'@; put 'KXt2YXIgVT10aGlzLl9fZGF0YV9fLFY9bShVLHopO3JldHVybiBWPDA/dm9pZCAwOlVbVl1bMV19LE0ucHJvdG90eXBlLmhhcz1mdW5jdGlvbih6KXtyZXR1cm4gbSh0aGlzLl9fZGF0YV9fLHopPi0xfSxNLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oeixVKXt2YXIgVj10aGlzLl9fZGF0YV9f'@; put 'LFI9bShWLHopO3JldHVybiBSPDA/Vi5wdXNoKFt6LFVdKTpWW1JdWzFdPVUsdGhpc30sai5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyB4LG1hcDpuZXcoQnx8TSksc3RyaW5nOm5ldyB4fX0sai5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHop'@; put 'e3JldHVybiB3KHRoaXMseikuZGVsZXRlKHopfSxqLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oeil7cmV0dXJuIHcodGhpcyx6KS5nZXQoeil9LGoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih6KXtyZXR1cm4gdyh0aGlzLHopLmhhcyh6KX0sai5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHosVSl7'@; put 'cmV0dXJuIHcodGhpcyx6KS5zZXQoeixVKSx0aGlzfSxjLnByb3RvdHlwZS5hZGQ9Yy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih6KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQoeiwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LGMucHJvdG90eXBlLmhhcz1mdW5jdGlvbih6'@; put 'KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoeil9O3ZhciB5PSQmJjEvaChuZXcgJChbLC0wXSkpWzFdPT0xLzA/ZnVuY3Rpb24oeil7cmV0dXJuIG5ldyAkKHopfTpmdW5jdGlvbigpe307ZnVuY3Rpb24gdyh6LFUpe3ZhciBWLFIsSD16Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KFI9'@; put 'dHlwZW9mKFY9VSkpfHwibnVtYmVyIj09Unx8InN5bWJvbCI9PVJ8fCJib29sZWFuIj09Uj8iX19wcm90b19fIiE9PVY6bnVsbD09PVYpP0hbInN0cmluZyI9PXR5cGVvZiBVPyJzdHJpbmciOiJoYXNoIl06SC5tYXB9ZnVuY3Rpb24gayh6LFUpe3ZhciBSLEgsVj0oUj16LEg9VSxSPy5bSF0p'@; put 'O3JldHVybiBmdW5jdGlvbiBnKHope3JldHVybiEoIU8oeil8fChVPXosXyYmXyBpbiBVKSkmJihWPXosUj1PKFYpP0wuY2FsbChWKToiIiwiW29iamVjdCBGdW5jdGlvbl0iPT1SfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1SfHxmdW5jdGlvbihWKXt2YXIgUj0hMTtpZihudWxs'@; put 'IT1WJiYiZnVuY3Rpb24iIT10eXBlb2YgVi50b1N0cmluZyl0cnl7Uj0hIShWKyIiKX1jYXRjaHt9cmV0dXJuIFJ9KHopP046YSkudGVzdChmdW5jdGlvbihWKXtpZihudWxsIT1WKXt0cnl7cmV0dXJuIEEuY2FsbChWKX1jYXRjaHt9dHJ5e3JldHVybiBWKyIifWNhdGNoe319cmV0dXJuIiJ9'@; put 'KHopKTt2YXIgVixSLFV9KFYpP1Y6dm9pZCAwfWZ1bmN0aW9uIE8oeil7dmFyIFU9dHlwZW9mIHo7cmV0dXJuISF6JiYoIm9iamVjdCI9PVV8fCJmdW5jdGlvbiI9PVUpfUUuZXhwb3J0cz1mdW5jdGlvbih6KXtyZXR1cm4geiYmei5sZW5ndGg/ZnVuY3Rpb24oVSxWLFIpe3ZhciBIPS0xLFQ9'@; put 'ZSxDPVUubGVuZ3RoLEY9ITAscT1bXSxZPXE7aWYoQz49MjAwKXt2YXIgWD15KFUpO2lmKFgpcmV0dXJuIGgoWCk7Rj0hMSxUPWksWT1uZXcgY31lbHNlIFk9cTt0OmZvcig7KytIPEM7KXt2YXIgSz1VW0hdLHJ0PUs7aWYoSz0wIT09Sz9LOjAsRiYmcnQ9PXJ0KXtmb3IodmFyIHR0PVkubGVu'@; put 'Z3RoO3R0LS07KWlmKFlbdHRdPT09cnQpY29udGludWUgdDtxLnB1c2goSyl9ZWxzZSBUKFkscnQsUil8fChZIT09cSYmWS5wdXNoKHJ0KSxxLnB1c2goSykpfXJldHVybiBxfSh6KTpbXX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Yg'@; put 'c2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNDUwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImluaGVyaXRzIiksYT1zKCJoYXNoLWJhc2UiKSxvPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLHI9bmV3IEFycmF5KDE2KTtmdW5j'@; put 'dGlvbiB0KCl7YS5jYWxsKHRoaXMsNjQpLHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4fWZ1bmN0aW9uIGUoZix1KXtyZXR1cm4gZjw8dXxmPj4+MzItdX1mdW5jdGlvbiBsKGYsdSxwLGQsdixfLEEpe3Jl'@; put 'dHVybiBlKGYrKHUmcHx+dSZkKSt2K198MCxBKSt1fDB9ZnVuY3Rpb24gbihmLHUscCxkLHYsXyxBKXtyZXR1cm4gZShmKyh1JmR8cCZ+ZCkrditffDAsQSkrdXwwfWZ1bmN0aW9uIGkoZix1LHAsZCx2LF8sQSl7cmV0dXJuIGUoZisodV5wXmQpK3YrX3wwLEEpK3V8MH1mdW5jdGlvbiBoKGYs'@; put 'dSxwLGQsdixfLEEpe3JldHVybiBlKGYrKHBeKHV8fmQpKSt2K198MCxBKSt1fDB9Yih0LGEpLHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIGY9cix1PTA7dTwxNjsrK3UpZlt1XT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0KnUpO3ZhciBwPXRoaXMuX2EsZD10aGlz'@; put 'Ll9iLHY9dGhpcy5fYyxfPXRoaXMuX2Q7cD1sKHAsZCx2LF8sZlswXSwzNjE0MDkwMzYwLDcpLF89bChfLHAsZCx2LGZbMV0sMzkwNTQwMjcxMCwxMiksdj1sKHYsXyxwLGQsZlsyXSw2MDYxMDU4MTksMTcpLGQ9bChkLHYsXyxwLGZbM10sMzI1MDQ0MTk2NiwyMikscD1sKHAsZCx2LF8sZls0'@; put 'XSw0MTE4NTQ4Mzk5LDcpLF89bChfLHAsZCx2LGZbNV0sMTIwMDA4MDQyNiwxMiksdj1sKHYsXyxwLGQsZls2XSwyODIxNzM1OTU1LDE3KSxkPWwoZCx2LF8scCxmWzddLDQyNDkyNjEzMTMsMjIpLHA9bChwLGQsdixfLGZbOF0sMTc3MDAzNTQxNiw3KSxfPWwoXyxwLGQsdixmWzldLDIzMzY1'@; put 'NTI4NzksMTIpLHY9bCh2LF8scCxkLGZbMTBdLDQyOTQ5MjUyMzMsMTcpLGQ9bChkLHYsXyxwLGZbMTFdLDIzMDQ1NjMxMzQsMjIpLHA9bChwLGQsdixfLGZbMTJdLDE4MDQ2MDM2ODIsNyksXz1sKF8scCxkLHYsZlsxM10sNDI1NDYyNjE5NSwxMiksdj1sKHYsXyxwLGQsZlsxNF0sMjc5Mjk2'@; put 'NTAwNiwxNykscD1uKHAsZD1sKGQsdixfLHAsZlsxNV0sMTIzNjUzNTMyOSwyMiksdixfLGZbMV0sNDEyOTE3MDc4Niw1KSxfPW4oXyxwLGQsdixmWzZdLDMyMjU0NjU2NjQsOSksdj1uKHYsXyxwLGQsZlsxMV0sNjQzNzE3NzEzLDE0KSxkPW4oZCx2LF8scCxmWzBdLDM5MjEwNjk5OTQsMjAp'@; put 'LHA9bihwLGQsdixfLGZbNV0sMzU5MzQwODYwNSw1KSxfPW4oXyxwLGQsdixmWzEwXSwzODAxNjA4Myw5KSx2PW4odixfLHAsZCxmWzE1XSwzNjM0NDg4OTYxLDE0KSxkPW4oZCx2LF8scCxmWzRdLDM4ODk0Mjk0NDgsMjApLHA9bihwLGQsdixfLGZbOV0sNTY4NDQ2NDM4LDUpLF89bihfLHAs'@; put 'ZCx2LGZbMTRdLDMyNzUxNjM2MDYsOSksdj1uKHYsXyxwLGQsZlszXSw0MTA3NjAzMzM1LDE0KSxkPW4oZCx2LF8scCxmWzhdLDExNjM1MzE1MDEsMjApLHA9bihwLGQsdixfLGZbMTNdLDI4NTAyODU4MjksNSksXz1uKF8scCxkLHYsZlsyXSw0MjQzNTYzNTEyLDkpLHY9bih2LF8scCxkLGZb'@; put 'N10sMTczNTMyODQ3MywxNCkscD1pKHAsZD1uKGQsdixfLHAsZlsxMl0sMjM2ODM1OTU2MiwyMCksdixfLGZbNV0sNDI5NDU4ODczOCw0KSxfPWkoXyxwLGQsdixmWzhdLDIyNzIzOTI4MzMsMTEpLHY9aSh2LF8scCxkLGZbMTFdLDE4MzkwMzA1NjIsMTYpLGQ9aShkLHYsXyxwLGZbMTRdLDQy'@; put 'NTk2NTc3NDAsMjMpLHA9aShwLGQsdixfLGZbMV0sMjc2Mzk3NTIzNiw0KSxfPWkoXyxwLGQsdixmWzRdLDEyNzI4OTMzNTMsMTEpLHY9aSh2LF8scCxkLGZbN10sNDEzOTQ2OTY2NCwxNiksZD1pKGQsdixfLHAsZlsxMF0sMzIwMDIzNjY1NiwyMykscD1pKHAsZCx2LF8sZlsxM10sNjgxMjc5'@; put 'MTc0LDQpLF89aShfLHAsZCx2LGZbMF0sMzkzNjQzMDA3NCwxMSksdj1pKHYsXyxwLGQsZlszXSwzNTcyNDQ1MzE3LDE2KSxkPWkoZCx2LF8scCxmWzZdLDc2MDI5MTg5LDIzKSxwPWkocCxkLHYsXyxmWzldLDM2NTQ2MDI4MDksNCksXz1pKF8scCxkLHYsZlsxMl0sMzg3MzE1MTQ2MSwxMSks'@; put 'dj1pKHYsXyxwLGQsZlsxNV0sNTMwNzQyNTIwLDE2KSxwPWgocCxkPWkoZCx2LF8scCxmWzJdLDMyOTk2Mjg2NDUsMjMpLHYsXyxmWzBdLDQwOTYzMzY0NTIsNiksXz1oKF8scCxkLHYsZls3XSwxMTI2ODkxNDE1LDEwKSx2PWgodixfLHAsZCxmWzE0XSwyODc4NjEyMzkxLDE1KSxkPWgoZCx2'@; put 'LF8scCxmWzVdLDQyMzc1MzMyNDEsMjEpLHA9aChwLGQsdixfLGZbMTJdLDE3MDA0ODU1NzEsNiksXz1oKF8scCxkLHYsZlszXSwyMzk5OTgwNjkwLDEwKSx2PWgodixfLHAsZCxmWzEwXSw0MjkzOTE1NzczLDE1KSxkPWgoZCx2LF8scCxmWzFdLDIyNDAwNDQ0OTcsMjEpLHA9aChwLGQsdixf'@; put 'LGZbOF0sMTg3MzMxMzM1OSw2KSxfPWgoXyxwLGQsdixmWzE1XSw0MjY0MzU1NTUyLDEwKSx2PWgodixfLHAsZCxmWzZdLDI3MzQ3Njg5MTYsMTUpLGQ9aChkLHYsXyxwLGZbMTNdLDEzMDkxNTE2NDksMjEpLHA9aChwLGQsdixfLGZbNF0sNDE0OTQ0NDIyNiw2KSxfPWgoXyxwLGQsdixmWzEx'@; put 'XSwzMTc0NzU2OTE3LDEwKSx2PWgodixfLHAsZCxmWzJdLDcxODc4NzI1OSwxNSksZD1oKGQsdixfLHAsZls5XSwzOTUxNDgxNzQ1LDIxKSx0aGlzLl9hPXRoaXMuX2ErcHwwLHRoaXMuX2I9dGhpcy5fYitkfDAsdGhpcy5fYz10aGlzLl9jK3Z8MCx0aGlzLl9kPXRoaXMuX2QrX3wwfSx0LnBy'@; put 'b3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0'@; put 'aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIGY9by5hbGxvY1Vuc2Fm'@; put 'ZSgxNik7cmV0dXJuIGYud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksZi53cml0ZUludDMyTEUodGhpcy5fYiw0KSxmLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpLGYud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLGZ9LEUuZXhwb3J0cz10fSx7Imhhc2gtYmFzZSI6NDI1LGluaGVyaXRzOjQ0MCwi'@; put 'c2FmZS1idWZmZXIiOjQ5NH1dLDQ1MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJibi5qcyIpLGE9cygiYnJvcmFuZCIpO2Z1bmN0aW9uIG8ocil7dGhpcy5yYW5kPXJ8fG5ldyBhLlJhbmR9RS5leHBvcnRzPW8sby5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIG5l'@; put 'dyBvKHIpfSxvLnByb3RvdHlwZS5fcmFuZGJlbG93PWZ1bmN0aW9uKHIpe3ZhciB0PXIuYml0TGVuZ3RoKCksZT1NYXRoLmNlaWwodC84KTtkb3t2YXIgbD1uZXcgYih0aGlzLnJhbmQuZ2VuZXJhdGUoZSkpfXdoaWxlKGwuY21wKHIpPj0wKTtyZXR1cm4gbH0sby5wcm90b3R5cGUuX3JhbmRy'@; put 'YW5nZT1mdW5jdGlvbihyLHQpe3ZhciBlPXQuc3ViKHIpO3JldHVybiByLmFkZCh0aGlzLl9yYW5kYmVsb3coZSkpfSxvLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKHIsdCxlKXt2YXIgbD1yLmJpdExlbmd0aCgpLG49Yi5tb250KHIpLGk9bmV3IGIoMSkudG9SZWQobik7dHx8KHQ9TWF0aC5t'@; put 'YXgoMSxsLzQ4fDApKTtmb3IodmFyIGg9ci5zdWJuKDEpLGY9MDshaC50ZXN0bihmKTtmKyspO2Zvcih2YXIgdT1yLnNocm4oZikscD1oLnRvUmVkKG4pO3Q+MDt0LS0pe3ZhciBkPXRoaXMuX3JhbmRyYW5nZShuZXcgYigyKSxoKTtlJiZlKGQpO3ZhciB2PWQudG9SZWQobikucmVkUG93KHUp'@; put 'O2lmKDAhPT12LmNtcChpKSYmMCE9PXYuY21wKHApKXtmb3IodmFyIF89MTtfPGY7XysrKXtpZigwPT09KHY9di5yZWRTcXIoKSkuY21wKGkpKXJldHVybiExO2lmKDA9PT12LmNtcChwKSlicmVha31pZihfPT09ZilyZXR1cm4hMX19cmV0dXJuITB9LG8ucHJvdG90eXBlLmdldERpdmlzb3I9'@; put 'ZnVuY3Rpb24ocix0KXt2YXIgZT1yLmJpdExlbmd0aCgpLGw9Yi5tb250KHIpLG49bmV3IGIoMSkudG9SZWQobCk7dHx8KHQ9TWF0aC5tYXgoMSxlLzQ4fDApKTtmb3IodmFyIGk9ci5zdWJuKDEpLGg9MDshaS50ZXN0bihoKTtoKyspO2Zvcih2YXIgZj1yLnNocm4oaCksdT1pLnRvUmVkKGwp'@; put 'O3Q+MDt0LS0pe3ZhciBwPXRoaXMuX3JhbmRyYW5nZShuZXcgYigyKSxpKSxkPXIuZ2NkKHApO2lmKDAhPT1kLmNtcG4oMSkpcmV0dXJuIGQ7dmFyIHY9cC50b1JlZChsKS5yZWRQb3coZik7aWYoMCE9PXYuY21wKG4pJiYwIT09di5jbXAodSkpe2Zvcih2YXIgXz0xO188aDtfKyspe2lmKDA9'@; put 'PT0odj12LnJlZFNxcigpKS5jbXAobikpcmV0dXJuIHYuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKHIpO2lmKDA9PT12LmNtcCh1KSlicmVha31pZihfPT09aClyZXR1cm4odj12LnJlZFNxcigpKS5mcm9tUmVkKCkuc3VibigxKS5nY2Qocil9fXJldHVybiExfX0seyJibi5qcyI6NDUyLGJyb3Jh'@; put 'bmQ6MTg3fV0sNDUyOltmdW5jdGlvbihzLEUsUyl7YXJndW1lbnRzWzRdWzE4NF1bMF0uYXBwbHkoUyxhcmd1bWVudHMpfSx7YnVmZmVyOjE4OCxkdXA6MTg0fV0sNDUzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSxvKXtpZighYSl0aHJvdyBuZXcgRXJyb3Io'@; put 'b3x8IkFzc2VydGlvbiBmYWlsZWQiKX1FLmV4cG9ydHM9YixiLmVxdWFsPWZ1bmN0aW9uKGEsbyxyKXtpZihhIT1vKXRocm93IG5ldyBFcnJvcihyfHwiQXNzZXJ0aW9uIGZhaWxlZDogIithKyIgIT0gIitvKX19LHt9XSw0NTQ6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9'@; put 'UztmdW5jdGlvbiBhKHIpe3JldHVybiAxPT09ci5sZW5ndGg/IjAiK3I6cn1mdW5jdGlvbiBvKHIpe2Zvcih2YXIgdD0iIixlPTA7ZTxyLmxlbmd0aDtlKyspdCs9YShyW2VdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIHR9Yi50b0FycmF5PWZ1bmN0aW9uKHIsdCl7aWYoQXJyYXkuaXNBcnJheShy'@; put 'KSlyZXR1cm4gci5zbGljZSgpO2lmKCFyKXJldHVybltdO3ZhciBlPVtdO2lmKCJzdHJpbmciIT10eXBlb2Ygcil7Zm9yKHZhciBsPTA7bDxyLmxlbmd0aDtsKyspZVtsXT0wfHJbbF07cmV0dXJuIGV9aWYoImhleCI9PT10KWZvcigocj1yLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpKS5s'@; put 'ZW5ndGglMiE9MCYmKHI9IjAiK3IpLGw9MDtsPHIubGVuZ3RoO2wrPTIpZS5wdXNoKHBhcnNlSW50KHJbbF0rcltsKzFdLDE2KSk7ZWxzZSBmb3IobD0wO2w8ci5sZW5ndGg7bCsrKXt2YXIgbj1yLmNoYXJDb2RlQXQobCksaT1uPj44LGg9MjU1Jm47aT9lLnB1c2goaSxoKTplLnB1c2goaCl9'@; put 'cmV0dXJuIGV9LGIuemVybzI9YSxiLnRvSGV4PW8sYi5lbmNvZGU9ZnVuY3Rpb24ocix0KXtyZXR1cm4iaGV4Ij09PXQ/byhyKTpyfX0se31dLDQ1NTpbZnVuY3Rpb24ocyxFLFMpe0UuZXhwb3J0cz17IjIuMTYuODQwLjEuMTAxLjMuNC4xLjEiOiJhZXMtMTI4LWVjYiIsIjIuMTYuODQwLjEu'@; put 'MTAxLjMuNC4xLjIiOiJhZXMtMTI4LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjMiOiJhZXMtMTI4LW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQiOiJhZXMtMTI4LWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxIjoiYWVzLTE5Mi1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQu'@; put 'MS4yMiI6ImFlcy0xOTItY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjMiOiJhZXMtMTkyLW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0IjoiYWVzLTE5Mi1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MSI6ImFlcy0yNTYtZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDIi'@; put 'OiJhZXMtMjU2LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzIjoiYWVzLTI1Ni1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NCI6ImFlcy0yNTYtY2ZiIn19LHt9XSw0NTY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiYXNuMS5qcyIpO1MuY2VydGlmaWNh'@; put 'dGU9cygiLi9jZXJ0aWZpY2F0ZSIpO3ZhciBhPWIuZGVmaW5lKCJSU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSx0'@; put 'aGlzLmtleSgicHJpdmF0ZUV4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaW1lMSIpLmludCgpLHRoaXMua2V5KCJwcmltZTIiKS5pbnQoKSx0aGlzLmtleSgiZXhwb25lbnQxIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MiIpLmludCgpLHRoaXMua2V5KCJjb2VmZmljaWVudCIpLmlu'@; put 'dCgpKX0pO1MuUlNBUHJpdmF0ZUtleT1hO3ZhciBvPWIuZGVmaW5lKCJSU0FQdWJsaWNLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSl9KTtTLlJTQVB1YmxpY0tleT1vO3ZhciBy'@; put 'PWIuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKHQpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSk7Uy5QdWJsaWNLZXk9cjt2YXIgdD1iLmRlZmluZSgiQWxnb3Jp'@; put 'dGhtSWRlbnRpZmllciIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikub2JqaWQoKSx0aGlzLmtleSgibm9uZSIpLm51bGxfKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoInBhcmFtcyIpLnNl'@; put 'cSgpLm9iaih0aGlzLmtleSgicCIpLmludCgpLHRoaXMua2V5KCJxIikuaW50KCksdGhpcy5rZXkoImciKS5pbnQoKSkub3B0aW9uYWwoKSl9KSxlPWIuZGVmaW5lKCJQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRo'@; put 'aXMua2V5KCJhbGdvcml0aG0iKS51c2UodCksdGhpcy5rZXkoInN1YmplY3RQcml2YXRlS2V5Iikub2N0c3RyKCkpfSk7Uy5Qcml2YXRlS2V5PWU7dmFyIGw9Yi5kZWZpbmUoIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdv'@; put 'cml0aG0iKS5zZXEoKS5vYmoodGhpcy5rZXkoImlkIikub2JqaWQoKSx0aGlzLmtleSgiZGVjcnlwdCIpLnNlcSgpLm9iaih0aGlzLmtleSgia2RlIikuc2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImtkZXBhcmFtcyIpLnNlcSgpLm9iaih0aGlzLmtleSgic2Fs'@; put 'dCIpLm9jdHN0cigpLHRoaXMua2V5KCJpdGVycyIpLmludCgpKSksdGhpcy5rZXkoImNpcGhlciIpLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnbyIpLm9iamlkKCksdGhpcy5rZXkoIml2Iikub2N0c3RyKCkpKSksdGhpcy5rZXkoInN1YmplY3RQcml2YXRlS2V5Iikub2N0c3RyKCkpfSk7Uy5F'@; put 'bmNyeXB0ZWRQcml2YXRlS2V5PWw7dmFyIG49Yi5kZWZpbmUoIkRTQVByaXZhdGVLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgicCIpLmludCgpLHRoaXMua2V5KCJxIikuaW50KCksdGhpcy5rZXkoImciKS5pbnQoKSx0'@; put 'aGlzLmtleSgicHViX2tleSIpLmludCgpLHRoaXMua2V5KCJwcml2X2tleSIpLmludCgpKX0pO1MuRFNBUHJpdmF0ZUtleT1uLFMuRFNBcGFyYW09Yi5kZWZpbmUoIkRTQXBhcmFtIixmdW5jdGlvbigpe3RoaXMuaW50KCl9KTt2YXIgaT1iLmRlZmluZSgiRUNQcml2YXRlS2V5IixmdW5jdGlv'@; put 'bigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInByaXZhdGVLZXkiKS5vY3RzdHIoKSx0aGlzLmtleSgicGFyYW1ldGVycyIpLm9wdGlvbmFsKCkuZXhwbGljaXQoMCkudXNlKGgpLHRoaXMua2V5KCJwdWJsaWNLZXkiKS5vcHRpb25hbCgpLmV4'@; put 'cGxpY2l0KDEpLmJpdHN0cigpKX0pO1MuRUNQcml2YXRlS2V5PWk7dmFyIGg9Yi5kZWZpbmUoIkVDUGFyYW1ldGVycyIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7bmFtZWRDdXJ2ZTp0aGlzLm9iamlkKCl9KX0pO1Muc2lnbmF0dXJlPWIuZGVmaW5lKCJzaWduYXR1cmUiLGZ1bmN0aW9uKCl7'@; put 'dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInIiKS5pbnQoKSx0aGlzLmtleSgicyIpLmludCgpKX0pfSx7Ii4vY2VydGlmaWNhdGUiOjQ1NywiYXNuMS5qcyI6MTcwfV0sNDU3OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImFzbjEuanMiKSxhPWIuZGVmaW5lKCJUaW1l'@; put 'IixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHt1dGNUaW1lOnRoaXMudXRjdGltZSgpLGdlbmVyYWxUaW1lOnRoaXMuZ2VudGltZSgpfSl9KSxvPWIuZGVmaW5lKCJBdHRyaWJ1dGVUeXBlVmFsdWUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInR5cGUiKS5vYmppZCgpLHRo'@; put 'aXMua2V5KCJ2YWx1ZSIpLmFueSgpKX0pLHI9Yi5kZWZpbmUoIkFsZ29yaXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIp'@; put 'Lm9iamlkKCkub3B0aW9uYWwoKSl9KSx0PWIuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKHIpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSksZT1iLmRlZmluZSgi'@; put 'UmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSIsZnVuY3Rpb24oKXt0aGlzLnNldG9mKG8pfSksbD1iLmRlZmluZSgiUkROU2VxdWVuY2UiLGZ1bmN0aW9uKCl7dGhpcy5zZXFvZihlKX0pLG49Yi5kZWZpbmUoIk5hbWUiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe3JkblNlcXVlbmNlOnRoaXMu'@; put 'dXNlKGwpfSl9KSxpPWIuZGVmaW5lKCJWYWxpZGl0eSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibm90QmVmb3JlIikudXNlKGEpLHRoaXMua2V5KCJub3RBZnRlciIpLnVzZShhKSl9KSxoPWIuZGVmaW5lKCJFeHRlbnNpb24iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5v'@; put 'YmoodGhpcy5rZXkoImV4dG5JRCIpLm9iamlkKCksdGhpcy5rZXkoImNyaXRpY2FsIikuYm9vbCgpLmRlZighMSksdGhpcy5rZXkoImV4dG5WYWx1ZSIpLm9jdHN0cigpKX0pLGY9Yi5kZWZpbmUoIlRCU0NlcnRpZmljYXRlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2'@; put 'ZXJzaW9uIikuZXhwbGljaXQoMCkuaW50KCkub3B0aW9uYWwoKSx0aGlzLmtleSgic2VyaWFsTnVtYmVyIikuaW50KCksdGhpcy5rZXkoInNpZ25hdHVyZSIpLnVzZShyKSx0aGlzLmtleSgiaXNzdWVyIikudXNlKG4pLHRoaXMua2V5KCJ2YWxpZGl0eSIpLnVzZShpKSx0aGlzLmtleSgic3Vi'@; put 'amVjdCIpLnVzZShuKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleUluZm8iKS51c2UodCksdGhpcy5rZXkoImlzc3VlclVuaXF1ZUlEIikuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgic3ViamVjdFVuaXF1ZUlEIikuaW1wbGljaXQoMikuYml0c3RyKCkub3B0'@; put 'aW9uYWwoKSx0aGlzLmtleSgiZXh0ZW5zaW9ucyIpLmV4cGxpY2l0KDMpLnNlcW9mKGgpLm9wdGlvbmFsKCkpfSksdT1iLmRlZmluZSgiWDUwOUNlcnRpZmljYXRlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0YnNDZXJ0aWZpY2F0ZSIpLnVzZShmKSx0aGlzLmtleSgi'@; put 'c2lnbmF0dXJlQWxnb3JpdGhtIikudXNlKHIpLHRoaXMua2V5KCJzaWduYXR1cmVWYWx1ZSIpLmJpdHN0cigpKX0pO0UuZXhwb3J0cz11fSx7ImFzbjEuanMiOjE3MH1dLDQ1ODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj0vUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFtcblxy'@; put 'XStERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspW1xuXHJdKyhbMC05QS16XG5ccisvPV0rKVtcblxyXSsvbSxhPS9eLS0tLS1CRUdJTiAoKD86Lio/IEtFWSl8Q0VSVElGSUNBVEUpLS0tLS0vbSxvPS9eLS0tLS1CRUdJTiAoKD86Lio/IEtF'@; put 'WSl8Q0VSVElGSUNBVEUpLS0tLS0oWzAtOUEtelxuXHIrLz1dKyktLS0tLUVORCBcMS0tLS0tJC9tLHI9cygiZXZwX2J5dGVzdG9rZXkiKSx0PXMoImJyb3dzZXJpZnktYWVzIiksZT1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZlcjtFLmV4cG9ydHM9ZnVuY3Rpb24obCxuKXt2YXIgaSxoPWwudG9T'@; put 'dHJpbmcoKSxmPWgubWF0Y2goYik7aWYoZil7dmFyIHU9ImFlcyIrZlsxXSxwPWUuZnJvbShmWzJdLCJoZXgiKSxkPWUuZnJvbShmWzNdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iiksdj1yKG4scC5zbGljZSgwLDgpLHBhcnNlSW50KGZbMV0sMTApKS5rZXksXz1bXSxBPXQuY3Jl'@; put 'YXRlRGVjaXBoZXJpdih1LHYscCk7Xy5wdXNoKEEudXBkYXRlKGQpKSxfLnB1c2goQS5maW5hbCgpKSxpPWUuY29uY2F0KF8pfWVsc2V7dmFyIEk9aC5tYXRjaChvKTtpPWUuZnJvbShJWzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJue3RhZzpoLm1hdGNoKGEpWzFd'@; put 'LGRhdGE6aX19fSx7ImJyb3dzZXJpZnktYWVzIjoxOTEsZXZwX2J5dGVzdG9rZXk6NDIzLCJzYWZlLWJ1ZmZlciI6NDk0fV0sNDU5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4vYXNuMSIpLGE9cygiLi9hZXNpZC5qc29uIiksbz1zKCIuL2ZpeFByb2MiKSxyPXMo'@; put 'ImJyb3dzZXJpZnktYWVzIiksdD1zKCJwYmtkZjIiKSxlPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyO2Z1bmN0aW9uIGwobil7dmFyIGk7Im9iamVjdCIhPXR5cGVvZiBufHxlLmlzQnVmZmVyKG4pfHwoaT1uLnBhc3NwaHJhc2Usbj1uLmtleSksInN0cmluZyI9PXR5cGVvZiBuJiYobj1lLmZy'@; put 'b20obikpO3ZhciBoLGYsdixfLEEsSSxMLE4sUCxCLCQsRCx4LHU9byhuLGkpLHA9dS50YWcsZD11LmRhdGE7c3dpdGNoKHApe2Nhc2UiQ0VSVElGSUNBVEUiOmY9Yi5jZXJ0aWZpY2F0ZS5kZWNvZGUoZCwiZGVyIikudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm87Y2FzZSJQ'@; put 'VUJMSUMgS0VZIjpzd2l0Y2goZnx8KGY9Yi5QdWJsaWNLZXkuZGVjb2RlKGQsImRlciIpKSxoPWYuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCIuIikpe2Nhc2UiMS4yLjg0MC4xMTM1NDkuMS4xLjEiOnJldHVybiBiLlJTQVB1YmxpY0tleS5kZWNvZGUoZi5zdWJqZWN0UHVibGljS2V5LmRh'@; put 'dGEsImRlciIpO2Nhc2UiMS4yLjg0MC4xMDA0NS4yLjEiOnJldHVybiBmLnN1YmplY3RQcml2YXRlS2V5PWYuc3ViamVjdFB1YmxpY0tleSx7dHlwZToiZWMiLGRhdGE6Zn07Y2FzZSIxLjIuODQwLjEwMDQwLjQuMSI6cmV0dXJuIGYuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PWIuRFNBcGFy'@; put 'YW0uZGVjb2RlKGYuc3ViamVjdFB1YmxpY0tleS5kYXRhLCJkZXIiKSx7dHlwZToiZHNhIixkYXRhOmYuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24ga2V5IGlkICIraCl9Y2FzZSJFTkNSWVBURUQgUFJJVkFURSBLRVkiOl89aSxBPSh2PWQ9Yi5F'@; put 'bmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShkLCJkZXIiKSkuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5zYWx0LEk9cGFyc2VJbnQodi5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksMTApLEw9YVt2LmFsZ29yaXRobS5kZWNyeXB0LmNp'@; put 'cGhlci5hbGdvLmpvaW4oIi4iKV0sTj12LmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdixQPXYuc3ViamVjdFByaXZhdGVLZXksQj1wYXJzZUludChMLnNwbGl0KCItIilbMV0sMTApLzgsJD10LnBia2RmMlN5bmMoXyxBLEksQiwic2hhMSIpLEQ9ci5jcmVhdGVEZWNpcGhlcml2KEwsJCxO'@; put 'KSwoeD1bXSkucHVzaChELnVwZGF0ZShQKSkseC5wdXNoKEQuZmluYWwoKSksZD1lLmNvbmNhdCh4KTtjYXNlIlBSSVZBVEUgS0VZIjpzd2l0Y2goaD0oZj1iLlByaXZhdGVLZXkuZGVjb2RlKGQsImRlciIpKS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oIi4iKSl7Y2FzZSIxLjIuODQwLjEx'@; put 'MzU0OS4xLjEuMSI6cmV0dXJuIGIuUlNBUHJpdmF0ZUtleS5kZWNvZGUoZi5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJue2N1cnZlOmYuYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6Yi5FQ1ByaXZhdGVLZXkuZGVjb2RlKGYuc3ViamVj'@; put 'dFByaXZhdGVLZXksImRlciIpLnByaXZhdGVLZXl9O2Nhc2UiMS4yLjg0MC4xMDA0MC40LjEiOnJldHVybiBmLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXk9Yi5EU0FwYXJhbS5kZWNvZGUoZi5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIikse3R5cGU6ImRzYSIscGFyYW1zOmYuYWxnb3JpdGht'@; put 'LnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24ga2V5IGlkICIraCl9Y2FzZSJSU0EgUFVCTElDIEtFWSI6cmV0dXJuIGIuUlNBUHVibGljS2V5LmRlY29kZShkLCJkZXIiKTtjYXNlIlJTQSBQUklWQVRFIEtFWSI6cmV0dXJuIGIuUlNBUHJpdmF0ZUtleS5kZWNvZGUo'@; put 'ZCwiZGVyIik7Y2FzZSJEU0EgUFJJVkFURSBLRVkiOnJldHVybnt0eXBlOiJkc2EiLHBhcmFtczpiLkRTQVByaXZhdGVLZXkuZGVjb2RlKGQsImRlciIpfTtjYXNlIkVDIFBSSVZBVEUgS0VZIjpyZXR1cm57Y3VydmU6KGQ9Yi5FQ1ByaXZhdGVLZXkuZGVjb2RlKGQsImRlciIpKS5wYXJhbWV0'@; put 'ZXJzLnZhbHVlLHByaXZhdGVLZXk6ZC5wcml2YXRlS2V5fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgdHlwZSAiK3ApfX1FLmV4cG9ydHM9bCxsLnNpZ25hdHVyZT1iLnNpZ25hdHVyZX0seyIuL2Flc2lkLmpzb24iOjQ1NSwiLi9hc24xIjo0NTYsIi4vZml4UHJvYyI6'@; put 'NDU4LCJicm93c2VyaWZ5LWFlcyI6MTkxLHBia2RmMjo0NjAsInNhZmUtYnVmZmVyIjo0OTR9XSw0NjA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Uy5wYmtkZjI9cygiLi9saWIvYXN5bmMiKSxTLnBia2RmMlN5bmM9cygiLi9saWIvc3luYyIpfSx7Ii4vbGliL2FzeW5jIjo0NjEs'@; put 'Ii4vbGliL3N5bmMiOjQ2NH1dLDQ2MTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGEsbyxyPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLHQ9cygiLi9wcmVjb25kaXRpb24iKSxlPXMoIi4vZGVmYXVsdC1lbmNvZGluZyIpLGw9cygi'@; put 'Li9zeW5jIiksbj1zKCIuL3RvLWJ1ZmZlciIpLGk9Yi5jcnlwdG8mJmIuY3J5cHRvLnN1YnRsZSxoPXtzaGE6IlNIQS0xIiwic2hhLTEiOiJTSEEtMSIsc2hhMToiU0hBLTEiLHNoYTI1NjoiU0hBLTI1NiIsInNoYS0yNTYiOiJTSEEtMjU2IixzaGEzODQ6IlNIQS0zODQiLCJzaGEtMzg0Ijoi'@; put 'U0hBLTM4NCIsInNoYS01MTIiOiJTSEEtNTEyIixzaGE1MTI6IlNIQS01MTIifSxmPVtdO2Z1bmN0aW9uIHUoKXtyZXR1cm4gb3x8KG89Yi5wcm9jZXNzJiZiLnByb2Nlc3MubmV4dFRpY2s/Yi5wcm9jZXNzLm5leHRUaWNrOmIucXVldWVNaWNyb3Rhc2s/Yi5xdWV1ZU1pY3JvdGFzazpiLnNl'@; put 'dEltbWVkaWF0ZT9iLnNldEltbWVkaWF0ZTpiLnNldFRpbWVvdXQpfWZ1bmN0aW9uIHAoZCx2LF8sQSxJKXtyZXR1cm4gaS5pbXBvcnRLZXkoInJhdyIsZCx7bmFtZToiUEJLREYyIn0sITEsWyJkZXJpdmVCaXRzIl0pLnRoZW4oZnVuY3Rpb24oTCl7cmV0dXJuIGkuZGVyaXZlQml0cyh7bmFt'@; put 'ZToiUEJLREYyIixzYWx0OnYsaXRlcmF0aW9uczpfLGhhc2g6e25hbWU6SX19LEwsQTw8Myl9KS50aGVuKGZ1bmN0aW9uKEwpe3JldHVybiByLmZyb20oTCl9KX1FLmV4cG9ydHM9ZnVuY3Rpb24oZCx2LF8sQSxJLEwpeyJmdW5jdGlvbiI9PXR5cGVvZiBJJiYoTD1JLEk9dm9pZCAwKTt2YXIg'@; put 'UCxCLE49aFsoST1JfHwic2hhMSIpLnRvTG93ZXJDYXNlKCldO2lmKE4mJiJmdW5jdGlvbiI9PXR5cGVvZiBiLlByb21pc2Upe2lmKHQoXyxBKSxkPW4oZCxlLCJQYXNzd29yZCIpLHY9bih2LGUsIlNhbHQiKSwiZnVuY3Rpb24iIT10eXBlb2YgTCl0aHJvdyBuZXcgRXJyb3IoIk5vIGNhbGxi'@; put 'YWNrIHByb3ZpZGVkIHRvIHBia2RmMiIpO1A9ZnVuY3Rpb24oUCl7aWYoYi5wcm9jZXNzJiYhYi5wcm9jZXNzLmJyb3dzZXJ8fCFpfHwhaS5pbXBvcnRLZXl8fCFpLmRlcml2ZUJpdHMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7aWYodm9pZCAwIT09ZltQXSlyZXR1cm4gZltQXTt2YXIg'@; put 'Qj1wKGE9YXx8ci5hbGxvYyg4KSxhLDEwLDEyOCxQKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuITB9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSk7cmV0dXJuIGZbUF09QixCfShOKS50aGVuKGZ1bmN0aW9uKFApe3JldHVybiBQP3AoZCx2LF8sQSxOKTpsKGQsdixfLEEsSSl9KSxCPUws'@; put 'UC50aGVuKGZ1bmN0aW9uKCQpe3UoKShmdW5jdGlvbigpe0IobnVsbCwkKX0pfSxmdW5jdGlvbigkKXt1KCkoZnVuY3Rpb24oKXtCKCQpfSl9KX1lbHNlIHUoKShmdW5jdGlvbigpe3ZhciBQO3RyeXtQPWwoZCx2LF8sQSxJKX1jYXRjaChCKXtyZXR1cm4gTChCKX1MKG51bGwsUCl9KX19KS5j'@; put 'YWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7Ii4vZGVmYXVsdC1lbmNvZGluZyI6NDYyLCIuL3ByZWNvbmRpdGlvbiI6NDYzLCIuL3N5bmMiOjQ2NCwiLi90by1i'@; put 'dWZmZXIiOjQ2NSwic2FmZS1idWZmZXIiOjQ5NH1dLDQ2MjpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiLGEpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbztvPWEucHJvY2VzcyYmYS5wcm9jZXNzLmJyb3dzZXI/InV0Zi04IjphLnByb2Nlc3MmJmEucHJvY2Vzcy52ZXJzaW9u'@; put 'P3BhcnNlSW50KGIudmVyc2lvbi5zcGxpdCgiLiIpWzBdLnNsaWNlKDEpLDEwKT49Nj8idXRmLTgiOiJiaW5hcnkiOiJ1dGYtOCIsRS5leHBvcnRzPW99KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHMoIl9wcm9jZXNzIiksdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1'@; put 'Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHtfcHJvY2Vzczo0Njd9XSw0NjM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9TWF0aC5wb3coMiwzMCktMTtFLmV4cG9ydHM9ZnVuY3Rpb24oYSxvKXtpZigibnVtYmVyIiE9dHlwZW9mIGEpdGhyb3cgbmV3'@; put 'IFR5cGVFcnJvcigiSXRlcmF0aW9ucyBub3QgYSBudW1iZXIiKTtpZihhPDApdGhyb3cgbmV3IFR5cGVFcnJvcigiQmFkIGl0ZXJhdGlvbnMiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5IGxlbmd0aCBub3QgYSBudW1iZXIiKTtpZihvPDB8fG8+Ynx8'@; put 'byE9byl0aHJvdyBuZXcgVHlwZUVycm9yKCJCYWQga2V5IGxlbmd0aCIpfX0se31dLDQ2NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJjcmVhdGUtaGFzaC9tZDUiKSxhPXMoInJpcGVtZDE2MCIpLG89cygic2hhLmpzIikscj1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZl'@; put 'cix0PXMoIi4vcHJlY29uZGl0aW9uIiksZT1zKCIuL2RlZmF1bHQtZW5jb2RpbmciKSxsPXMoIi4vdG8tYnVmZmVyIiksbj1yLmFsbG9jKDEyOCksaT17bWQ1OjE2LHNoYTE6MjAsc2hhMjI0OjI4LHNoYTI1NjozMixzaGEzODQ6NDgsc2hhNTEyOjY0LHJtZDE2MDoyMCxyaXBlbWQxNjA6MjB9'@; put 'O2Z1bmN0aW9uIGgoZix1LHApe3ZhciBkPWZ1bmN0aW9uKE4pe3JldHVybiJybWQxNjAiPT09Tnx8InJpcGVtZDE2MCI9PT1OP2Z1bmN0aW9uKEIpe3JldHVybihuZXcgYSkudXBkYXRlKEIpLmRpZ2VzdCgpfToibWQ1Ij09PU4/YjpmdW5jdGlvbiBQKEIpe3JldHVybiBvKE4pLnVwZGF0ZShC'@; put 'KS5kaWdlc3QoKX19KGYpLHY9InNoYTUxMiI9PT1mfHwic2hhMzg0Ij09PWY/MTI4OjY0O3UubGVuZ3RoPnY/dT1kKHUpOnUubGVuZ3RoPHYmJih1PXIuY29uY2F0KFt1LG5dLHYpKTtmb3IodmFyIF89ci5hbGxvY1Vuc2FmZSh2K2lbZl0pLEE9ci5hbGxvY1Vuc2FmZSh2K2lbZl0pLEk9MDtJ'@; put 'PHY7SSsrKV9bSV09NTRedVtJXSxBW0ldPTkyXnVbSV07dmFyIEw9ci5hbGxvY1Vuc2FmZSh2K3ArNCk7Xy5jb3B5KEwsMCwwLHYpLHRoaXMuaXBhZDE9TCx0aGlzLmlwYWQyPV8sdGhpcy5vcGFkPUEsdGhpcy5hbGc9Zix0aGlzLmJsb2Nrc2l6ZT12LHRoaXMuaGFzaD1kLHRoaXMuc2l6ZT1p'@; put 'W2ZdfWgucHJvdG90eXBlLnJ1bj1mdW5jdGlvbihmLHUpe3JldHVybiBmLmNvcHkodSx0aGlzLmJsb2Nrc2l6ZSksdGhpcy5oYXNoKHUpLmNvcHkodGhpcy5vcGFkLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2godGhpcy5vcGFkKX0sRS5leHBvcnRzPWZ1bmN0aW9uKGYsdSxwLGQsdil7dChw'@; put 'LGQpO3ZhciBfPW5ldyBoKHY9dnx8InNoYTEiLGY9bChmLGUsIlBhc3N3b3JkIiksKHU9bCh1LGUsIlNhbHQiKSkubGVuZ3RoKSxBPXIuYWxsb2NVbnNhZmUoZCksST1yLmFsbG9jVW5zYWZlKHUubGVuZ3RoKzQpO3UuY29weShJLDAsMCx1Lmxlbmd0aCk7Zm9yKHZhciBMPTAsTj1pW3ZdLFA9'@; put 'TWF0aC5jZWlsKGQvTiksQj0xO0I8PVA7QisrKXtJLndyaXRlVUludDMyQkUoQix1Lmxlbmd0aCk7Zm9yKHZhciAkPV8ucnVuKEksXy5pcGFkMSksRD0kLHg9MTt4PHA7eCsrKXtEPV8ucnVuKEQsXy5pcGFkMik7Zm9yKHZhciBNPTA7TTxOO00rKykkW01dXj1EW01dfSQuY29weShBLEwpLEwr'@; put 'PU59cmV0dXJuIEF9fSx7Ii4vZGVmYXVsdC1lbmNvZGluZyI6NDYyLCIuL3ByZWNvbmRpdGlvbiI6NDYzLCIuL3RvLWJ1ZmZlciI6NDY1LCJjcmVhdGUtaGFzaC9tZDUiOjM4NyxyaXBlbWQxNjA6NDkzLCJzYWZlLWJ1ZmZlciI6NDk0LCJzaGEuanMiOjQ5OH1dLDQ2NTpbZnVuY3Rpb24ocyxF'@; put 'LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJzYWZlLWJ1ZmZlciIpLkJ1ZmZlcjtFLmV4cG9ydHM9ZnVuY3Rpb24oYSxvLHIpe2lmKGIuaXNCdWZmZXIoYSkpcmV0dXJuIGE7aWYoInN0cmluZyI9PXR5cGVvZiBhKXJldHVybiBiLmZyb20oYSxvKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoYSkp'@; put 'cmV0dXJuIGIuZnJvbShhLmJ1ZmZlcik7dGhyb3cgbmV3IFR5cGVFcnJvcihyKyIgbXVzdCBiZSBhIHN0cmluZywgYSBCdWZmZXIsIGEgdHlwZWQgYXJyYXkgb3IgYSBEYXRhVmlldyIpfX0seyJzYWZlLWJ1ZmZlciI6NDk0fV0sNDY2OltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhm'@; put 'dW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9dm9pZCAwPT09Ynx8IWIudmVyc2lvbnx8MD09PWIudmVyc2lvbi5pbmRleE9mKCJ2MC4iKXx8MD09PWIudmVyc2lvbi5pbmRleE9mKCJ2MS4iKSYmMCE9PWIudmVyc2lvbi5pbmRleE9mKCJ2MS44LiIpP3tuZXh0VGljazpmdW5jdGlv'@; put 'bihhLG8scix0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCciY2FsbGJhY2siIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3ZhciBlLGwsbj1hcmd1bWVudHMubGVuZ3RoO3N3aXRjaChuKXtjYXNlIDA6Y2FzZSAxOnJldHVybiBiLm5leHRUaWNr'@; put 'KGEpO2Nhc2UgMjpyZXR1cm4gYi5uZXh0VGljayhmdW5jdGlvbigpe2EuY2FsbChudWxsLG8pfSk7Y2FzZSAzOnJldHVybiBiLm5leHRUaWNrKGZ1bmN0aW9uKCl7YS5jYWxsKG51bGwsbyxyKX0pO2Nhc2UgNDpyZXR1cm4gYi5uZXh0VGljayhmdW5jdGlvbigpe2EuY2FsbChudWxsLG8scix0'@; put 'KX0pO2RlZmF1bHQ6Zm9yKGU9bmV3IEFycmF5KG4tMSksbD0wO2w8ZS5sZW5ndGg7KWVbbCsrXT1hcmd1bWVudHNbbF07cmV0dXJuIGIubmV4dFRpY2soZnVuY3Rpb24oKXthLmFwcGx5KG51bGwsZSl9KX19fTpifSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJfcHJvY2VzcyIpKX0se19w'@; put 'cm9jZXNzOjQ2N31dLDQ2NzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYixhLG89RS5leHBvcnRzPXt9O2Z1bmN0aW9uIHIoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiB0KCl7dGhyb3cgbmV3IEVycm9yKCJj'@; put 'bGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBlKHYpe2lmKGI9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHYsMCk7aWYoKGI9PT1yfHwhYikmJnNldFRpbWVvdXQpcmV0dXJuIGI9c2V0VGltZW91dCxzZXRUaW1lb3V0KHYsMCk7dHJ5e3JldHVybiBi'@; put 'KHYsMCl9Y2F0Y2h7dHJ5e3JldHVybiBiLmNhbGwobnVsbCx2LDApfWNhdGNoe3JldHVybiBiLmNhbGwodGhpcyx2LDApfX19IWZ1bmN0aW9uKCl7dHJ5e2I9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpyfWNhdGNoe2I9cn10cnl7YT0iZnVuY3Rpb24iPT10eXBl'@; put 'b2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp0fWNhdGNoe2E9dH19KCk7dmFyIGwsbj1bXSxpPSExLGg9LTE7ZnVuY3Rpb24gZigpe2kmJmwmJihpPSExLGwubGVuZ3RoP249bC5jb25jYXQobik6aD0tMSxuLmxlbmd0aCYmdSgpKX1mdW5jdGlvbiB1KCl7aWYoIWkpe3ZhciB2PWUoZik7'@; put 'aT0hMDtmb3IodmFyIF89bi5sZW5ndGg7Xzspe2ZvcihsPW4sbj1bXTsrK2g8XzspbCYmbFtoXS5ydW4oKTtoPS0xLF89bi5sZW5ndGh9bD1udWxsLGk9ITEsZnVuY3Rpb24oQSl7aWYoYT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KEEpO2lmKChhPT09dHx8IWEpJiZjbGVh'@; put 'clRpbWVvdXQpcmV0dXJuIGE9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChBKTt0cnl7YShBKX1jYXRjaHt0cnl7cmV0dXJuIGEuY2FsbChudWxsLEEpfWNhdGNoe3JldHVybiBhLmNhbGwodGhpcyxBKX19fSh2KX19ZnVuY3Rpb24gcCh2LF8pe3RoaXMuZnVuPXYsdGhpcy5hcnJheT1ffWZ1'@; put 'bmN0aW9uIGQoKXt9by5uZXh0VGljaz1mdW5jdGlvbih2KXt2YXIgXz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBBPTE7QTxhcmd1bWVudHMubGVuZ3RoO0ErKylfW0EtMV09YXJndW1lbnRzW0FdO24ucHVzaChuZXcgcCh2LF8p'@; put 'KSwxIT09bi5sZW5ndGh8fGl8fGUodSl9LHAucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LG8udGl0bGU9ImJyb3dzZXIiLG8uYnJvd3Nlcj0hMCxvLmVudj17fSxvLmFyZ3Y9W10sby52ZXJzaW9uPSIiLG8udmVyc2lvbnM9e30sby5v'@; put 'bj1kLG8uYWRkTGlzdGVuZXI9ZCxvLm9uY2U9ZCxvLm9mZj1kLG8ucmVtb3ZlTGlzdGVuZXI9ZCxvLnJlbW92ZUFsbExpc3RlbmVycz1kLG8uZW1pdD1kLG8ucHJlcGVuZExpc3RlbmVyPWQsby5wcmVwZW5kT25jZUxpc3RlbmVyPWQsby5saXN0ZW5lcnM9ZnVuY3Rpb24odil7cmV0dXJuW119'@; put 'LG8uYmluZGluZz1mdW5jdGlvbih2KXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LG8uY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxvLmNoZGlyPWZ1bmN0aW9uKHYpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3Vw'@; put 'cG9ydGVkIil9LG8udW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LHt9XSw0Njg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7Uy5wdWJsaWNFbmNyeXB0PXMoIi4vcHVibGljRW5jcnlwdCIpLFMucHJpdmF0ZURlY3J5cHQ9cygiLi9wcml2YXRlRGVjcnlwdCIpLFMucHJpdmF0ZUVu'@; put 'Y3J5cHQ9ZnVuY3Rpb24oYixhKXtyZXR1cm4gUy5wdWJsaWNFbmNyeXB0KGIsYSwhMCl9LFMucHVibGljRGVjcnlwdD1mdW5jdGlvbihiLGEpe3JldHVybiBTLnByaXZhdGVEZWNyeXB0KGIsYSwhMCl9fSx7Ii4vcHJpdmF0ZURlY3J5cHQiOjQ3MSwiLi9wdWJsaWNFbmNyeXB0Ijo0NzJ9XSw0'@; put 'Njk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiY3JlYXRlLWhhc2giKSxhPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyO2Z1bmN0aW9uIG8ocil7dmFyIHQ9YS5hbGxvY1Vuc2FmZSg0KTtyZXR1cm4gdC53cml0ZVVJbnQzMkJFKHIsMCksdH1FLmV4cG9ydHM9ZnVuY3Rp'@; put 'b24ocix0KXtmb3IodmFyIGUsbD1hLmFsbG9jKDApLG49MDtsLmxlbmd0aDx0OyllPW8obisrKSxsPWEuY29uY2F0KFtsLGIoInNoYTEiKS51cGRhdGUocikudXBkYXRlKGUpLmRpZ2VzdCgpXSk7cmV0dXJuIGwuc2xpY2UoMCx0KX19LHsiY3JlYXRlLWhhc2giOjM4Niwic2FmZS1idWZmZXIi'@; put 'OjQ5NH1dLDQ3MDpbZnVuY3Rpb24ocyxFLFMpe2FyZ3VtZW50c1s0XVsxODRdWzBdLmFwcGx5KFMsYXJndW1lbnRzKX0se2J1ZmZlcjoxODgsZHVwOjE4NH1dLDQ3MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJwYXJzZS1hc24xIiksYT1zKCIuL21nZiIpLG89cygi'@; put 'Li94b3IiKSxyPXMoImJuLmpzIiksdD1zKCJicm93c2VyaWZ5LXJzYSIpLGU9cygiY3JlYXRlLWhhc2giKSxsPXMoIi4vd2l0aFB1YmxpYyIpLG49cygic2FmZS1idWZmZXIiKS5CdWZmZXI7RS5leHBvcnRzPWZ1bmN0aW9uKGksaCxmKXt2YXIgdTt1PWkucGFkZGluZz9pLnBhZGRpbmc6Zj8x'@; put 'OjQ7dmFyIHAsZD1iKGkpLHY9ZC5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihoLmxlbmd0aD52fHxuZXcgcihoKS5jbXAoZC5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtwPWY/bChuZXcgcihoKSxkKTp0KGgsZCk7dmFyIF89bi5hbGxvYyh2LXAubGVu'@; put 'Z3RoKTtpZihwPW4uY29uY2F0KFtfLHBdLHYpLDQ9PT11KXJldHVybiBmdW5jdGlvbihBLEkpe3ZhciBMPUEubW9kdWx1cy5ieXRlTGVuZ3RoKCksTj1lKCJzaGExIikudXBkYXRlKG4uYWxsb2MoMCkpLmRpZ2VzdCgpLFA9Ti5sZW5ndGg7aWYoMCE9PUlbMF0pdGhyb3cgbmV3IEVycm9yKCJk'@; put 'ZWNyeXB0aW9uIGVycm9yIik7dmFyIEI9SS5zbGljZSgxLFArMSksJD1JLnNsaWNlKFArMSksRD1vKEIsYSgkLFApKSx4PW8oJCxhKEQsTC1QLTEpKTtpZihmdW5jdGlvbihqLGMpe2o9bi5mcm9tKGopLGM9bi5mcm9tKGMpO3ZhciBtPTAsZz1qLmxlbmd0aDtqLmxlbmd0aCE9PWMubGVuZ3Ro'@; put 'JiYobSsrLGc9TWF0aC5taW4oai5sZW5ndGgsYy5sZW5ndGgpKTtmb3IodmFyIHk9LTE7Kyt5PGc7KW0rPWpbeV1eY1t5XTtyZXR1cm4gbX0oTix4LnNsaWNlKDAsUCkpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgTT1QOzA9PT14W01dOylNKys7aWYoMSE9'@; put 'PXhbTSsrXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4geC5zbGljZShNKX0oZCxwKTtpZigxPT09dSlyZXR1cm4gZnVuY3Rpb24oQSxJLEwpe2Zvcih2YXIgTj1JLnNsaWNlKDAsMiksUD0yLEI9MDswIT09SVtQKytdOylpZihQPj1JLmxlbmd0aCl7QisrO2Jy'@; put 'ZWFrfXZhciAkPUkuc2xpY2UoMixQLTEpO2lmKCgiMDAwMiIhPT1OLnRvU3RyaW5nKCJoZXgiKSYmIUx8fCIwMDAxIiE9PU4udG9TdHJpbmcoImhleCIpJiZMKSYmQisrLCQubGVuZ3RoPDgmJkIrKyxCKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiBJLnNsaWNl'@; put 'KFApfSgwLHAsZik7aWYoMz09PXUpcmV0dXJuIHA7dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKX19LHsiLi9tZ2YiOjQ2OSwiLi93aXRoUHVibGljIjo0NzMsIi4veG9yIjo0NzQsImJuLmpzIjo0NzAsImJyb3dzZXJpZnktcnNhIjoyMDksImNyZWF0ZS1oYXNoIjozODYsInBh'@; put 'cnNlLWFzbjEiOjQ1OSwic2FmZS1idWZmZXIiOjQ5NH1dLDQ3MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJwYXJzZS1hc24xIiksYT1zKCJyYW5kb21ieXRlcyIpLG89cygiY3JlYXRlLWhhc2giKSxyPXMoIi4vbWdmIiksdD1zKCIuL3hvciIpLGU9cygiYm4uanMi'@; put 'KSxsPXMoIi4vd2l0aFB1YmxpYyIpLG49cygiYnJvd3NlcmlmeS1yc2EiKSxpPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyO0UuZXhwb3J0cz1mdW5jdGlvbihoLGYsdSl7dmFyIHA7cD1oLnBhZGRpbmc/aC5wYWRkaW5nOnU/MTo0O3ZhciBkLHY9YihoKTtpZig0PT09cClkPWZ1bmN0aW9uKF8s'@; put 'QSl7dmFyIEk9Xy5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxMPUEubGVuZ3RoLE49bygic2hhMSIpLnVwZGF0ZShpLmFsbG9jKDApKS5kaWdlc3QoKSxQPU4ubGVuZ3RoLEI9MipQO2lmKEw+SS1CLTIpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7dmFyICQ9aS5hbGxvYyhJLUwt'@; put 'Qi0yKSxEPUktUC0xLHg9YShQKSxNPXQoaS5jb25jYXQoW04sJCxpLmFsbG9jKDEsMSksQV0sRCkscih4LEQpKSxqPXQoeCxyKE0sUCkpO3JldHVybiBuZXcgZShpLmNvbmNhdChbaS5hbGxvYygxKSxqLE1dLEkpKX0odixmKTtlbHNlIGlmKDE9PT1wKWQ9ZnVuY3Rpb24oXyxBLEkpe3ZhciBM'@; put 'LE49QS5sZW5ndGgsUD1fLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKE4+UC0xMSl0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTtyZXR1cm4gTD1JP2kuYWxsb2MoUC1OLTMsMjU1KTpmdW5jdGlvbihCKXtmb3IodmFyICQsRD1pLmFsbG9jVW5zYWZlKEIpLHg9MCxNPWEoMipC'@; put 'KSxqPTA7eDxCOylqPT09TS5sZW5ndGgmJihNPWEoMipCKSxqPTApLCgkPU1baisrXSkmJihEW3grK109JCk7cmV0dXJuIER9KFAtTi0zKSxuZXcgZShpLmNvbmNhdChbaS5mcm9tKFswLEk/MToyXSksTCxpLmFsbG9jKDEpLEFdLFApKX0odixmLHUpO2Vsc2V7aWYoMyE9PXApdGhyb3cgbmV3'@; put 'IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKTtpZigoZD1uZXcgZShmKSkuY21wKHYubW9kdWx1cyk+PTApdGhyb3cgbmV3IEVycm9yKCJkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzIil9cmV0dXJuIHU/bihkLHYpOmwoZCx2KX19LHsiLi9tZ2YiOjQ2OSwiLi93aXRoUHVibGljIjo0NzMsIi4v'@; put 'eG9yIjo0NzQsImJuLmpzIjo0NzAsImJyb3dzZXJpZnktcnNhIjoyMDksImNyZWF0ZS1oYXNoIjozODYsInBhcnNlLWFzbjEiOjQ1OSxyYW5kb21ieXRlczo0NzUsInNhZmUtYnVmZmVyIjo0OTR9XSw0NzM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiYm4uanMiKSxh'@; put 'PXMoInNhZmUtYnVmZmVyIikuQnVmZmVyO0UuZXhwb3J0cz1mdW5jdGlvbihvLHIpe3JldHVybiBhLmZyb20oby50b1JlZChiLm1vbnQoci5tb2R1bHVzKSkucmVkUG93KG5ldyBiKHIucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCkudG9BcnJheSgpKX19LHsiYm4uanMiOjQ3MCwic2FmZS1i'@; put 'dWZmZXIiOjQ5NH1dLDQ3NDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9ZnVuY3Rpb24oYixhKXtmb3IodmFyIG89Yi5sZW5ndGgscj0tMTsrK3I8bzspYltyXV49YVtyXTtyZXR1cm4gYn19LHt9XSw0NzU6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYixhKXso'@; put 'ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG89cygic2FmZS1idWZmZXIiKS5CdWZmZXIscj1hLmNyeXB0b3x8YS5tc0NyeXB0bztFLmV4cG9ydHM9ciYmci5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24odCxlKXtpZih0PjQyOTQ5NjcyOTUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVl'@; put 'c3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgbD1vLmFsbG9jVW5zYWZlKHQpO2lmKHQ+MClpZih0PjY1NTM2KWZvcih2YXIgbj0wO248dDtuKz02NTUzNilyLmdldFJhbmRvbVZhbHVlcyhsLnNsaWNlKG4sbis2NTUzNikpO2Vsc2Ugci5nZXRSYW5kb21WYWx1ZXMobCk7cmV0dXJu'@; put 'ImZ1bmN0aW9uIj09dHlwZW9mIGU/Yi5uZXh0VGljayhmdW5jdGlvbigpe2UobnVsbCxsKX0pOmx9OmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwg'@; put 'RmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se19wcm9jZXNzOjQ2Nywi'@; put 'c2FmZS1idWZmZXIiOjQ5NH1dLDQ3NjpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiLGEpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7dGhyb3cgbmV3IEVycm9yKCJzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBi'@; put 'cm93c2VyXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExIil9dmFyIHI9cygic2FmZS1idWZmZXIiKSx0PXMoInJhbmRvbWJ5dGVzIiksZT1yLkJ1ZmZlcixsPXIua01heExlbmd0aCxuPWEuY3J5cHRvfHxhLm1zQ3J5cHRvLGk9TWF0aC5wb3coMiwzMiktMTtm'@; put 'dW5jdGlvbiBoKHAsZCl7aWYoIm51bWJlciIhPXR5cGVvZiBwfHxwIT1wKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgbnVtYmVyIik7aWYocD5pfHxwPDApdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB1aW50MzIiKTtpZihwPmx8fHA+ZCl0aHJv'@; put 'dyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIGYocCxkLHYpe2lmKCJudW1iZXIiIT10eXBlb2YgcHx8cCE9cCl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSBudW1iZXIiKTtpZihwPml8fHA8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJz'@; put 'aXplIG11c3QgYmUgYSB1aW50MzIiKTtpZihwK2Q+dnx8cD5sKXRocm93IG5ldyBSYW5nZUVycm9yKCJidWZmZXIgdG9vIHNtYWxsIil9ZnVuY3Rpb24gdShwLGQsdixfKXtpZihiLmJyb3dzZXIpe3ZhciBJPW5ldyBVaW50OEFycmF5KHAuYnVmZmVyLGQsdik7cmV0dXJuIG4uZ2V0UmFuZG9t'@; put 'VmFsdWVzKEkpLF8/dm9pZCBiLm5leHRUaWNrKGZ1bmN0aW9uKCl7XyhudWxsLHApfSk6cH1pZighXylyZXR1cm4gdCh2KS5jb3B5KHAsZCkscDt0KHYsZnVuY3Rpb24oTCxOKXtpZihMKXJldHVybiBfKEwpO04uY29weShwLGQpLF8obnVsbCxwKX0pfW4mJm4uZ2V0UmFuZG9tVmFsdWVzfHwh'@; put 'Yi5icm93c2VyPyhTLnJhbmRvbUZpbGw9ZnVuY3Rpb24ocCxkLHYsXyl7aWYoIShlLmlzQnVmZmVyKHApfHxwIGluc3RhbmNlb2YgYS5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVu'@; put 'Y3Rpb24iPT10eXBlb2YgZClfPWQsZD0wLHY9cC5sZW5ndGg7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgdilfPXYsdj1wLmxlbmd0aC1kO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIF8pdGhyb3cgbmV3IFR5cGVFcnJvcignImNiIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24n'@; put 'KTtyZXR1cm4gaChkLHAubGVuZ3RoKSxmKHYsZCxwLmxlbmd0aCksdShwLGQsdixfKX0sUy5yYW5kb21GaWxsU3luYz1mdW5jdGlvbihwLGQsdil7aWYodm9pZCAwPT09ZCYmKGQ9MCksIShlLmlzQnVmZmVyKHApfHxwIGluc3RhbmNlb2YgYS5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVy'@; put 'cm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtyZXR1cm4gaChkLHAubGVuZ3RoKSx2b2lkIDA9PT12JiYodj1wLmxlbmd0aC1kKSxmKHYsZCxwLmxlbmd0aCksdShwLGQsdil9KTooUy5yYW5kb21GaWxsPW8sUy5yYW5kb21GaWxsU3luYz1vKX0p'@; put 'LmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se19wcm9jZXNzOjQ2NyxyYW5kb21ieXRlczo0NzUsInNhZmUtYnVmZmVyIjo0OTR9XSw0'@; put 'Nzc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9e307ZnVuY3Rpb24gYShyLHQsZSl7ZXx8KGU9RXJyb3IpO3ZhciBsPWZ1bmN0aW9uKG4pe3ZhciBpLGg7ZnVuY3Rpb24gZih1LHAsZCl7cmV0dXJuIG4uY2FsbCh0aGlzLCJzdHJpbmciPT10eXBlb2YgdD90OnQodSxwLGQp'@; put 'KXx8dGhpc31yZXR1cm4gaD1uLChpPWYpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGgucHJvdG90eXBlKSxpLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1pLGkuX19wcm90b19fPWgsZn0oZSk7bC5wcm90b3R5cGUubmFtZT1lLm5hbWUsbC5wcm90b3R5cGUuY29kZT1yLGJbcl09bH1mdW5jdGlv'@; put 'biBvKHIsdCl7aWYoQXJyYXkuaXNBcnJheShyKSl7dmFyIGU9ci5sZW5ndGg7cmV0dXJuIHI9ci5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIFN0cmluZyhsKX0pLGU+Mj8ib25lIG9mICIuY29uY2F0KHQsIiAiKS5jb25jYXQoci5zbGljZSgwLGUtMSkuam9pbigiLCAiKSwiLCBvciAiKStyW2Ut'@; put 'MV06Mj09PWU/Im9uZSBvZiAiLmNvbmNhdCh0LCIgIikuY29uY2F0KHJbMF0sIiBvciAiKS5jb25jYXQoclsxXSk6Im9mICIuY29uY2F0KHQsIiAiKS5jb25jYXQoclswXSl9cmV0dXJuIm9mICIuY29uY2F0KHQsIiAiKS5jb25jYXQoU3RyaW5nKHIpKX1hKCJFUlJfSU5WQUxJRF9PUFRfVkFM'@; put 'VUUiLGZ1bmN0aW9uKHIsdCl7cmV0dXJuJ1RoZSB2YWx1ZSAiJyt0KyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAiJytyKyciJ30sVHlwZUVycm9yKSxhKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24ocix0LGUpe3ZhciBsLGgsdSxkO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmIm5v'@; put 'dCAiPT09dC5zdWJzdHIoMCwibm90ICIubGVuZ3RoKT8obD0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpsPSJtdXN0IGJlIix1PXIsKHZvaWQgMD09PWR8fGQ+dS5sZW5ndGgpJiYoZD11Lmxlbmd0aCksIiBhcmd1bWVudCI9PT11LnN1YnN0cmluZyhkLSIgYXJndW1l'@; put 'bnQiLmxlbmd0aCxkKSloPSJUaGUgIi5jb25jYXQociwiICIpLmNvbmNhdChsLCIgIikuY29uY2F0KG8odCwidHlwZSIpKTtlbHNle3ZhciBmPWZ1bmN0aW9uKHUscCxkKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGQmJihkPTApLCEoZCsxPnUubGVuZ3RoKSYmLTEhPT11LmluZGV4T2YoIi4i'@; put 'LGQpfShyKT8icHJvcGVydHkiOiJhcmd1bWVudCI7aD0nVGhlICInLmNvbmNhdChyLCciICcpLmNvbmNhdChmLCIgIikuY29uY2F0KGwsIiAiKS5jb25jYXQobyh0LCJ0eXBlIikpfXJldHVybiBoKyIuIFJlY2VpdmVkIHR5cGUgIi5jb25jYXQodHlwZW9mIGUpfSxUeXBlRXJyb3IpLGEoIkVS'@; put 'Ul9TVFJFQU1fUFVTSF9BRlRFUl9FT0YiLCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRiIpLGEoIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIixmdW5jdGlvbihyKXtyZXR1cm4iVGhlICIrcisiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQifSksYSgiRVJSX1NUUkVBTV9QUkVNQVRVUkVf'@; put 'Q0xPU0UiLCJQcmVtYXR1cmUgY2xvc2UiKSxhKCJFUlJfU1RSRUFNX0RFU1RST1lFRCIsZnVuY3Rpb24ocil7cmV0dXJuIkNhbm5vdCBjYWxsICIrcisiIGFmdGVyIGEgc3RyZWFtIHdhcyBkZXN0cm95ZWQifSksYSgiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiQ2FsbGJhY2sgY2FsbGVkIG11'@; put 'bHRpcGxlIHRpbWVzIiksYSgiRVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSxhKCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCIsIndyaXRlIGFmdGVyIGVuZCIpLGEoIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJNYXkgbm90IHdyaXRlIG51'@; put 'bGwgdmFsdWVzIHRvIHN0cmVhbSIsVHlwZUVycm9yKSxhKCJFUlJfVU5LTk9XTl9FTkNPRElORyIsZnVuY3Rpb24ocil7cmV0dXJuIlVua25vd24gZW5jb2Rpbmc6ICIrcn0sVHlwZUVycm9yKSxhKCJFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UIiwic3RyZWFtLnVuc2hpZnQo'@; put 'KSBhZnRlciBlbmQgZXZlbnQiKSxFLmV4cG9ydHMuY29kZXM9Yn0se31dLDQ3ODpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGE9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGYpe3ZhciB1PVtdO2Zvcih2YXIgcCBpbiBmKXUucHVzaChw'@; put 'KTtyZXR1cm4gdX07RS5leHBvcnRzPW47dmFyIG89cygiLi9fc3RyZWFtX3JlYWRhYmxlIikscj1zKCIuL19zdHJlYW1fd3JpdGFibGUiKTtzKCJpbmhlcml0cyIpKG4sbyk7Zm9yKHZhciB0PWEoci5wcm90b3R5cGUpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGw9dFtlXTtuLnByb3RvdHlw'@; put 'ZVtsXXx8KG4ucHJvdG90eXBlW2xdPXIucHJvdG90eXBlW2xdKX1mdW5jdGlvbiBuKGYpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXJldHVybiBuZXcgbihmKTtvLmNhbGwodGhpcyxmKSxyLmNhbGwodGhpcyxmKSx0aGlzLmFsbG93SGFsZk9wZW49ITAsZiYmKCExPT09Zi5yZWFkYWJsZSYm'@; put 'KHRoaXMucmVhZGFibGU9ITEpLCExPT09Zi53cml0YWJsZSYmKHRoaXMud3JpdGFibGU9ITEpLCExPT09Zi5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExLHRoaXMub25jZSgiZW5kIixpKSkpfWZ1bmN0aW9uIGkoKXt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHxiLm5l'@; put 'eHRUaWNrKGgsdGhpcyl9ZnVuY3Rpb24gaChmKXtmLmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJr'@; put 'fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwid3JpdGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9w'@; put 'ZXJ0eShuLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0'@; put 'OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKGYpe3ZvaWQgMCE9'@; put 'PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1mLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWYpfX0pfSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJfcHJvY2VzcyIpKX0seyIu'@; put 'L19zdHJlYW1fcmVhZGFibGUiOjQ4MCwiLi9fc3RyZWFtX3dyaXRhYmxlIjo0ODIsX3Byb2Nlc3M6NDY3LGluaGVyaXRzOjQ0MH1dLDQ3OTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9YTt2YXIgYj1zKCIuL19zdHJlYW1fdHJhbnNmb3JtIik7ZnVuY3Rpb24gYShv'@; put 'KXtpZighKHRoaXMgaW5zdGFuY2VvZiBhKSlyZXR1cm4gbmV3IGEobyk7Yi5jYWxsKHRoaXMsbyl9cygiaW5oZXJpdHMiKShhLGIpLGEucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24obyxyLHQpe3QobnVsbCxvKX19LHsiLi9fc3RyZWFtX3RyYW5zZm9ybSI6NDgxLGluaGVyaXRzOjQ0'@; put 'MH1dLDQ4MDpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiLGEpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbztFLmV4cG9ydHM9RCxELlJlYWRhYmxlU3RhdGU9JCxzKCJldmVudHMiKTt2YXIgbixyPWZ1bmN0aW9uKFQsQyl7cmV0dXJuIFQubGlzdGVuZXJzKEMpLmxlbmd0aH0s'@; put 'dD1zKCIuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtIiksZT1zKCJidWZmZXIiKS5CdWZmZXIsbD0odm9pZCAwIT09YT9hOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LGk9cygidXRpbCIpO249aSYmaS5k'@; put 'ZWJ1Z2xvZz9pLmRlYnVnbG9nKCJzdHJlYW0iKTpmdW5jdGlvbigpe307dmFyIGgsZix1LHA9cygiLi9pbnRlcm5hbC9zdHJlYW1zL2J1ZmZlcl9saXN0IiksZD1zKCIuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveSIpLHY9cygiLi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlIikuZ2V0SGlnaFdh'@; put 'dGVyTWFyayxfPXMoIi4uL2Vycm9ycyIpLmNvZGVzLEE9Xy5FUlJfSU5WQUxJRF9BUkdfVFlQRSxJPV8uRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixMPV8uRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsTj1fLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7cygiaW5oZXJp'@; put 'dHMiKShELHQpO3ZhciBQPWQuZXJyb3JPckRlc3Ryb3ksQj1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiAkKFQsQyxGKXtvPW98fHMoIi4vX3N0cmVhbV9kdXBsZXgiKSwiYm9vbGVhbiIhPXR5cGVvZiBGJiYoRj1DIGluc3RhbmNlb2Ygbyks'@; put 'dGhpcy5vYmplY3RNb2RlPSEhKFQ9VHx8e30pLm9iamVjdE1vZGUsRiYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhVC5yZWFkYWJsZU9iamVjdE1vZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz12KHRoaXMsVCwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIixGKSx0aGlzLmJ1ZmZl'@; put 'cj1uZXcgcCx0aGlzLmxlbmd0aD0wLHRoaXMucGlwZXM9bnVsbCx0aGlzLnBpcGVzQ291bnQ9MCx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5zeW5jPSEwLHRoaXMubmVlZFJlYWRhYmxlPSExLHRoaXMuZW1p'@; put 'dHRlZFJlYWRhYmxlPSExLHRoaXMucmVhZGFibGVMaXN0ZW5pbmc9ITEsdGhpcy5yZXN1bWVTY2hlZHVsZWQ9ITEsdGhpcy5wYXVzZWQ9ITAsdGhpcy5lbWl0Q2xvc2U9ITEhPT1ULmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhVC5hdXRvRGVzdHJveSx0aGlzLmRlc3Ryb3llZD0hMSx0'@; put 'aGlzLmRlZmF1bHRFbmNvZGluZz1ULmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLFQuZW5jb2RpbmcmJihofHwoaD1zKCJzdHJpbmdfZGVjb2Rlci8iKS5TdHJp'@; put 'bmdEZWNvZGVyKSx0aGlzLmRlY29kZXI9bmV3IGgoVC5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1ULmVuY29kaW5nKX1mdW5jdGlvbiBEKFQpe2lmKG89b3x8cygiLi9fc3RyZWFtX2R1cGxleCIpLCEodGhpcyBpbnN0YW5jZW9mIEQpKXJldHVybiBuZXcgRChUKTt0aGlzLl9yZWFkYWJsZVN0'@; put 'YXRlPW5ldyAkKFQsdGhpcyx0aGlzIGluc3RhbmNlb2YgbyksdGhpcy5yZWFkYWJsZT0hMCxUJiYoImZ1bmN0aW9uIj09dHlwZW9mIFQucmVhZCYmKHRoaXMuX3JlYWQ9VC5yZWFkKSwiZnVuY3Rpb24iPT10eXBlb2YgVC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1ULmRlc3Ryb3kpKSx0LmNh'@; put 'bGwodGhpcyl9ZnVuY3Rpb24geChULEMsRixxLFkpe24oInJlYWRhYmxlQWRkQ2h1bmsiLEMpO3ZhciBYLHJ0LHR0LFcsUSxLPVQuX3JlYWRhYmxlU3RhdGU7aWYobnVsbD09PUMpSy5yZWFkaW5nPSExLGZ1bmN0aW9uKHJ0LHR0KXtpZihuKCJvbkVvZkNodW5rIiksIXR0LmVuZGVkKXtpZih0'@; put 'dC5kZWNvZGVyKXt2YXIgVz10dC5kZWNvZGVyLmVuZCgpO1cmJlcubGVuZ3RoJiYodHQuYnVmZmVyLnB1c2goVyksdHQubGVuZ3RoKz10dC5vYmplY3RNb2RlPzE6Vy5sZW5ndGgpfXR0LmVuZGVkPSEwLHR0LnN5bmM/YyhydCk6KHR0Lm5lZWRSZWFkYWJsZT0hMSx0dC5lbWl0dGVkUmVhZGFi'@; put 'bGV8fCh0dC5lbWl0dGVkUmVhZGFibGU9ITAsbShydCkpKX19KFQsSyk7ZWxzZSBpZihZfHwocnQ9SyxlLmlzQnVmZmVyKFE9dHQ9Qyl8fFEgaW5zdGFuY2VvZiBsfHwic3RyaW5nIj09dHlwZW9mIHR0fHx2b2lkIDA9PT10dHx8cnQub2JqZWN0TW9kZXx8KFc9bmV3IEEoImNodW5rIixbInN0'@; put 'cmluZyIsIkJ1ZmZlciIsIlVpbnQ4QXJyYXkiXSx0dCkpLFg9VyksWClQKFQsWCk7ZWxzZSBpZihLLm9iamVjdE1vZGV8fEMmJkMubGVuZ3RoPjApaWYoInN0cmluZyI9PXR5cGVvZiBDfHxLLm9iamVjdE1vZGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihDKT09PWUucHJvdG90eXBlfHwoQz1m'@; put 'dW5jdGlvbihydCl7cmV0dXJuIGUuZnJvbShydCl9KEMpKSxxKUsuZW5kRW1pdHRlZD9QKFQsbmV3IE4pOk0oVCxLLEMsITApO2Vsc2UgaWYoSy5lbmRlZClQKFQsbmV3IEkpO2Vsc2V7aWYoSy5kZXN0cm95ZWQpcmV0dXJuITE7Sy5yZWFkaW5nPSExLEsuZGVjb2RlciYmIUY/KEM9Sy5kZWNv'@; put 'ZGVyLndyaXRlKEMpLEsub2JqZWN0TW9kZXx8MCE9PUMubGVuZ3RoP00oVCxLLEMsITEpOmcoVCxLKSk6TShULEssQywhMSl9ZWxzZSBxfHwoSy5yZWFkaW5nPSExLGcoVCxLKSk7cmV0dXJuIUsuZW5kZWQmJihLLmxlbmd0aDxLLmhpZ2hXYXRlck1hcmt8fDA9PT1LLmxlbmd0aCl9ZnVuY3Rp'@; put 'b24gTShULEMsRixxKXtDLmZsb3dpbmcmJjA9PT1DLmxlbmd0aCYmIUMuc3luYz8oQy5hd2FpdERyYWluPTAsVC5lbWl0KCJkYXRhIixGKSk6KEMubGVuZ3RoKz1DLm9iamVjdE1vZGU/MTpGLmxlbmd0aCxxP0MuYnVmZmVyLnVuc2hpZnQoRik6Qy5idWZmZXIucHVzaChGKSxDLm5lZWRSZWFk'@; put 'YWJsZSYmYyhUKSksZyhULEMpfWZ1bmN0aW9uIGooVCxDKXtyZXR1cm4gVDw9MHx8MD09PUMubGVuZ3RoJiZDLmVuZGVkPzA6Qy5vYmplY3RNb2RlPzE6VCE9VD9DLmZsb3dpbmcmJkMubGVuZ3RoP0MuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6Qy5sZW5ndGg6KFQ+Qy5oaWdoV2F0ZXJNYXJr'@; put 'JiYoQy5oaWdoV2F0ZXJNYXJrPSgoRj1UKT49MTA3Mzc0MTgyND9GPTEwNzM3NDE4MjQ6KEYtLSxGfD1GPj4+MSxGfD1GPj4+MixGfD1GPj4+NCxGfD1GPj4+OCxGfD1GPj4+MTYsRisrKSxGKSksVDw9Qy5sZW5ndGg/VDpDLmVuZGVkP0MubGVuZ3RoOihDLm5lZWRSZWFkYWJsZT0hMCwwKSk7'@; put 'dmFyIEZ9ZnVuY3Rpb24gYyhUKXt2YXIgQz1ULl9yZWFkYWJsZVN0YXRlO24oImVtaXRSZWFkYWJsZSIsQy5uZWVkUmVhZGFibGUsQy5lbWl0dGVkUmVhZGFibGUpLEMubmVlZFJlYWRhYmxlPSExLEMuZW1pdHRlZFJlYWRhYmxlfHwobigiZW1pdFJlYWRhYmxlIixDLmZsb3dpbmcpLEMuZW1p'@; put 'dHRlZFJlYWRhYmxlPSEwLGIubmV4dFRpY2sobSxUKSl9ZnVuY3Rpb24gbShUKXt2YXIgQz1ULl9yZWFkYWJsZVN0YXRlO24oImVtaXRSZWFkYWJsZV8iLEMuZGVzdHJveWVkLEMubGVuZ3RoLEMuZW5kZWQpLEMuZGVzdHJveWVkfHwhQy5sZW5ndGgmJiFDLmVuZGVkfHwoVC5lbWl0KCJyZWFk'@; put 'YWJsZSIpLEMuZW1pdHRlZFJlYWRhYmxlPSExKSxDLm5lZWRSZWFkYWJsZT0hQy5mbG93aW5nJiYhQy5lbmRlZCYmQy5sZW5ndGg8PUMuaGlnaFdhdGVyTWFyayx6KFQpfWZ1bmN0aW9uIGcoVCxDKXtDLnJlYWRpbmdNb3JlfHwoQy5yZWFkaW5nTW9yZT0hMCxiLm5leHRUaWNrKHksVCxDKSl9'@; put 'ZnVuY3Rpb24geShULEMpe2Zvcig7IUMucmVhZGluZyYmIUMuZW5kZWQmJihDLmxlbmd0aDxDLmhpZ2hXYXRlck1hcmt8fEMuZmxvd2luZyYmMD09PUMubGVuZ3RoKTspe3ZhciBGPUMubGVuZ3RoO2lmKG4oIm1heWJlUmVhZE1vcmUgcmVhZCAwIiksVC5yZWFkKDApLEY9PT1DLmxlbmd0aCli'@; put 'cmVha31DLnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIHcoVCl7dmFyIEM9VC5fcmVhZGFibGVTdGF0ZTtDLnJlYWRhYmxlTGlzdGVuaW5nPVQubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLEMucmVzdW1lU2NoZWR1bGVkJiYhQy5wYXVzZWQ/Qy5mbG93aW5nPSEwOlQubGlzdGVuZXJDb3Vu'@; put 'dCgiZGF0YSIpPjAmJlQucmVzdW1lKCl9ZnVuY3Rpb24gayhUKXtuKCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDAiKSxULnJlYWQoMCl9ZnVuY3Rpb24gTyhULEMpe24oInJlc3VtZSIsQy5yZWFkaW5nKSxDLnJlYWRpbmd8fFQucmVhZCgwKSxDLnJlc3VtZVNjaGVkdWxlZD0hMSxULmVtaXQo'@; put 'InJlc3VtZSIpLHooVCksQy5mbG93aW5nJiYhQy5yZWFkaW5nJiZULnJlYWQoMCl9ZnVuY3Rpb24geihUKXt2YXIgQz1ULl9yZWFkYWJsZVN0YXRlO2ZvcihuKCJmbG93IixDLmZsb3dpbmcpO0MuZmxvd2luZyYmbnVsbCE9PVQucmVhZCgpOyk7fWZ1bmN0aW9uIFUoVCxDKXtyZXR1cm4gMD09'@; put 'PUMubGVuZ3RoP251bGw6KEMub2JqZWN0TW9kZT9GPUMuYnVmZmVyLnNoaWZ0KCk6IVR8fFQ+PUMubGVuZ3RoPyhGPUMuZGVjb2Rlcj9DLmJ1ZmZlci5qb2luKCIiKToxPT09Qy5idWZmZXIubGVuZ3RoP0MuYnVmZmVyLmZpcnN0KCk6Qy5idWZmZXIuY29uY2F0KEMubGVuZ3RoKSxDLmJ1ZmZl'@; put 'ci5jbGVhcigpKTpGPUMuYnVmZmVyLmNvbnN1bWUoVCxDLmRlY29kZXIpLEYpO3ZhciBGfWZ1bmN0aW9uIFYoVCl7dmFyIEM9VC5fcmVhZGFibGVTdGF0ZTtuKCJlbmRSZWFkYWJsZSIsQy5lbmRFbWl0dGVkKSxDLmVuZEVtaXR0ZWR8fChDLmVuZGVkPSEwLGIubmV4dFRpY2soUixDLFQpKX1m'@; put 'dW5jdGlvbiBSKFQsQyl7aWYobigiZW5kUmVhZGFibGVOVCIsVC5lbmRFbWl0dGVkLFQubGVuZ3RoKSwhVC5lbmRFbWl0dGVkJiYwPT09VC5sZW5ndGgmJihULmVuZEVtaXR0ZWQ9ITAsQy5yZWFkYWJsZT0hMSxDLmVtaXQoImVuZCIpLFQuYXV0b0Rlc3Ryb3kpKXt2YXIgRj1DLl93cml0YWJs'@; put 'ZVN0YXRlOyghRnx8Ri5hdXRvRGVzdHJveSYmRi5maW5pc2hlZCkmJkMuZGVzdHJveSgpfX1mdW5jdGlvbiBIKFQsQyl7Zm9yKHZhciBGPTAscT1ULmxlbmd0aDtGPHE7RisrKWlmKFRbRl09PT1DKXJldHVybiBGO3JldHVybi0xfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwi'@; put 'ZGVzdHJveWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihUKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0'@; put 'ZS5kZXN0cm95ZWQ9VCl9fSksRC5wcm90b3R5cGUuZGVzdHJveT1kLmRlc3Ryb3ksRC5wcm90b3R5cGUuX3VuZGVzdHJveT1kLnVuZGVzdHJveSxELnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihULEMpe0MoVCl9LEQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oVCxDKXt2YXIgRixxPXRo'@; put 'aXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIHEub2JqZWN0TW9kZT9GPSEwOiJzdHJpbmciPT10eXBlb2YgVCYmKChDPUN8fHEuZGVmYXVsdEVuY29kaW5nKSE9PXEuZW5jb2RpbmcmJihUPWUuZnJvbShULEMpLEM9IiIpLEY9ITApLHgodGhpcyxULEMsITEsRil9LEQucHJvdG90eXBlLnVuc2hp'@; put 'ZnQ9ZnVuY3Rpb24oVCl7cmV0dXJuIHgodGhpcyxULG51bGwsITAsITEpfSxELnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxELnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihUKXtofHwoaD1zKCJzdHJp'@; put 'bmdfZGVjb2Rlci8iKS5TdHJpbmdEZWNvZGVyKTt2YXIgQz1uZXcgaChUKTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9Qyx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIEY9dGhpcy5fcmVhZGFibGVT'@; put 'dGF0ZS5idWZmZXIuaGVhZCxxPSIiO251bGwhPT1GOylxKz1DLndyaXRlKEYuZGF0YSksRj1GLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1xJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKHEpLHRoaXMuX3JlYWRhYmxlU3RhdGUu'@; put 'bGVuZ3RoPXEubGVuZ3RoLHRoaXN9LEQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oVCl7bigicmVhZCIsVCksVD1wYXJzZUludChULDEwKTt2YXIgQz10aGlzLl9yZWFkYWJsZVN0YXRlLEY9VDtpZigwIT09VCYmKEMuZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09VCYmQy5uZWVkUmVhZGFibGUm'@; put 'JigoMCE9PUMuaGlnaFdhdGVyTWFyaz9DLmxlbmd0aD49Qy5oaWdoV2F0ZXJNYXJrOkMubGVuZ3RoPjApfHxDLmVuZGVkKSlyZXR1cm4gbigicmVhZDogZW1pdFJlYWRhYmxlIixDLmxlbmd0aCxDLmVuZGVkKSwwPT09Qy5sZW5ndGgmJkMuZW5kZWQ/Vih0aGlzKTpjKHRoaXMpLG51bGw7aWYo'@; put 'MD09PShUPWooVCxDKSkmJkMuZW5kZWQpcmV0dXJuIDA9PT1DLmxlbmd0aCYmVih0aGlzKSxudWxsO3ZhciBxLFk9Qy5uZWVkUmVhZGFibGU7cmV0dXJuIG4oIm5lZWQgcmVhZGFibGUiLFkpLCgwPT09Qy5sZW5ndGh8fEMubGVuZ3RoLVQ8Qy5oaWdoV2F0ZXJNYXJrKSYmbigibGVuZ3RoIGxl'@; put 'c3MgdGhhbiB3YXRlcm1hcmsiLFk9ITApLEMuZW5kZWR8fEMucmVhZGluZz9uKCJyZWFkaW5nIG9yIGVuZGVkIixZPSExKTpZJiYobigiZG8gcmVhZCIpLEMucmVhZGluZz0hMCxDLnN5bmM9ITAsMD09PUMubGVuZ3RoJiYoQy5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQoQy5oaWdoV2F0'@; put 'ZXJNYXJrKSxDLnN5bmM9ITEsQy5yZWFkaW5nfHwoVD1qKEYsQykpKSxudWxsPT09KHE9VD4wP1UoVCxDKTpudWxsKT8oQy5uZWVkUmVhZGFibGU9Qy5sZW5ndGg8PUMuaGlnaFdhdGVyTWFyayxUPTApOihDLmxlbmd0aC09VCxDLmF3YWl0RHJhaW49MCksMD09PUMubGVuZ3RoJiYoQy5lbmRl'@; put 'ZHx8KEMubmVlZFJlYWRhYmxlPSEwKSxGIT09VCYmQy5lbmRlZCYmVih0aGlzKSksbnVsbCE9PXEmJnRoaXMuZW1pdCgiZGF0YSIscSkscX0sRC5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oVCl7UCh0aGlzLG5ldyBMKCJfcmVhZCgpIikpfSxELnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKFQs'@; put 'Qyl7dmFyIEY9dGhpcyxxPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKHEucGlwZXNDb3VudCl7Y2FzZSAwOnEucGlwZXM9VDticmVhaztjYXNlIDE6cS5waXBlcz1bcS5waXBlcyxUXTticmVhaztkZWZhdWx0OnEucGlwZXMucHVzaChUKX1xLnBpcGVzQ291bnQrPTEsbigicGlwZSBjb3Vu'@; put 'dD0lZCBvcHRzPSVqIixxLnBpcGVzQ291bnQsQyk7dmFyIFk9QyYmITE9PT1DLmVuZHx8VD09PWIuc3Rkb3V0fHxUPT09Yi5zdGRlcnI/bnQ6SztmdW5jdGlvbiBLKCl7bigib25lbmQiKSxULmVuZCgpfXEuZW5kRW1pdHRlZD9iLm5leHRUaWNrKFkpOkYub25jZSgiZW5kIixZKSxULm9uKCJ1'@; put 'bnBpcGUiLGZ1bmN0aW9uIFgoaXQsb3Qpe24oIm9udW5waXBlIiksaXQ9PT1GJiZvdCYmITE9PT1vdC5oYXNVbnBpcGVkJiYob3QuaGFzVW5waXBlZD0hMCxuKCJjbGVhbnVwIiksVC5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLEcpLFQucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsZXQpLFQucmVt'@; put 'b3ZlTGlzdGVuZXIoImRyYWluIixydCksVC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLFEpLFQucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsWCksRi5yZW1vdmVMaXN0ZW5lcigiZW5kIixLKSxGLnJlbW92ZUxpc3RlbmVyKCJlbmQiLG50KSxGLnJlbW92ZUxpc3RlbmVyKCJkYXRhIixXKSx0dD0h'@; put 'MCwhcS5hd2FpdERyYWlufHxULl93cml0YWJsZVN0YXRlJiYhVC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fHJ0KCkpfSk7dmFyIHJ0PWZ1bmN0aW9uKGl0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgb3Q9aXQuX3JlYWRhYmxlU3RhdGU7bigicGlwZU9uRHJhaW4iLG90LmF3YWl0RHJhaW4p'@; put 'LG90LmF3YWl0RHJhaW4mJm90LmF3YWl0RHJhaW4tLSwwPT09b3QuYXdhaXREcmFpbiYmcihpdCwiZGF0YSIpJiYob3QuZmxvd2luZz0hMCx6KGl0KSl9fShGKTtULm9uKCJkcmFpbiIscnQpO3ZhciB0dD0hMTtmdW5jdGlvbiBXKGl0KXtuKCJvbmRhdGEiKTt2YXIgb3Q9VC53cml0ZShpdCk7'@; put 'bigiZGVzdC53cml0ZSIsb3QpLCExPT09b3QmJigoMT09PXEucGlwZXNDb3VudCYmcS5waXBlcz09PVR8fHEucGlwZXNDb3VudD4xJiYtMSE9PUgocS5waXBlcyxUKSkmJiF0dCYmKG4oImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZSIscS5hd2FpdERyYWluKSxxLmF3YWl0RHJhaW4rKyks'@; put 'Ri5wYXVzZSgpKX1mdW5jdGlvbiBRKGl0KXtuKCJvbmVycm9yIixpdCksbnQoKSxULnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsUSksMD09PXIoVCwiZXJyb3IiKSYmUChULGl0KX1mdW5jdGlvbiBHKCl7VC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixldCksbnQoKX1mdW5jdGlvbiBldCgpe24o'@; put 'Im9uZmluaXNoIiksVC5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLEcpLG50KCl9ZnVuY3Rpb24gbnQoKXtuKCJ1bnBpcGUiKSxGLnVucGlwZShUKX1yZXR1cm4gRi5vbigiZGF0YSIsVyksZnVuY3Rpb24oaXQsb3QsaHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpdC5wcmVwZW5kTGlzdGVuZXIp'@; put 'cmV0dXJuIGl0LnByZXBlbmRMaXN0ZW5lcihvdCxodCk7aXQuX2V2ZW50cyYmaXQuX2V2ZW50c1tvdF0/QXJyYXkuaXNBcnJheShpdC5fZXZlbnRzW290XSk/aXQuX2V2ZW50c1tvdF0udW5zaGlmdChodCk6aXQuX2V2ZW50c1tvdF09W2h0LGl0Ll9ldmVudHNbb3RdXTppdC5vbihvdCxodCl9'@; put 'KFQsImVycm9yIixRKSxULm9uY2UoImNsb3NlIixHKSxULm9uY2UoImZpbmlzaCIsZXQpLFQuZW1pdCgicGlwZSIsRikscS5mbG93aW5nfHwobigicGlwZSByZXN1bWUiKSxGLnJlc3VtZSgpKSxUfSxELnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oVCl7dmFyIEM9dGhpcy5fcmVhZGFibGVT'@; put 'dGF0ZSxGPXtoYXNVbnBpcGVkOiExfTtpZigwPT09Qy5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1DLnBpcGVzQ291bnQpcmV0dXJuIFQmJlQhPT1DLnBpcGVzfHwoVHx8KFQ9Qy5waXBlcyksQy5waXBlcz1udWxsLEMucGlwZXNDb3VudD0wLEMuZmxvd2luZz0hMSxUJiZULmVtaXQo'@; put 'InVucGlwZSIsdGhpcyxGKSksdGhpcztpZighVCl7dmFyIHE9Qy5waXBlcyxZPUMucGlwZXNDb3VudDtDLnBpcGVzPW51bGwsQy5waXBlc0NvdW50PTAsQy5mbG93aW5nPSExO2Zvcih2YXIgWD0wO1g8WTtYKyspcVtYXS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1'@; put 'cm4gdGhpc312YXIgSz1IKEMucGlwZXMsVCk7cmV0dXJuLTE9PT1LfHwoQy5waXBlcy5zcGxpY2UoSywxKSxDLnBpcGVzQ291bnQtPTEsMT09PUMucGlwZXNDb3VudCYmKEMucGlwZXM9Qy5waXBlc1swXSksVC5lbWl0KCJ1bnBpcGUiLHRoaXMsRikpLHRoaXN9LEQucHJvdG90eXBlLmFkZExp'@; put 'c3RlbmVyPUQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKFQsQyl7dmFyIEY9dC5wcm90b3R5cGUub24uY2FsbCh0aGlzLFQsQykscT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiJkYXRhIj09PVQ/KHEucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAs'@; put 'ITEhPT1xLmZsb3dpbmcmJnRoaXMucmVzdW1lKCkpOiJyZWFkYWJsZSI9PT1UJiYocS5lbmRFbWl0dGVkfHxxLnJlYWRhYmxlTGlzdGVuaW5nfHwocS5yZWFkYWJsZUxpc3RlbmluZz1xLm5lZWRSZWFkYWJsZT0hMCxxLmZsb3dpbmc9ITEscS5lbWl0dGVkUmVhZGFibGU9ITEsbigib24gcmVh'@; put 'ZGFibGUiLHEubGVuZ3RoLHEucmVhZGluZykscS5sZW5ndGg/Yyh0aGlzKTpxLnJlYWRpbmd8fGIubmV4dFRpY2soayx0aGlzKSkpLEZ9LEQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKFQsQyl7dmFyIEY9dC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLFQs'@; put 'Qyk7cmV0dXJuInJlYWRhYmxlIj09PVQmJmIubmV4dFRpY2sodyx0aGlzKSxGfSxELnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oVCl7dmFyIEM9dC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4icmVhZGFibGUi'@; put 'IT09VCYmdm9pZCAwIT09VHx8Yi5uZXh0VGljayh3LHRoaXMpLEN9LEQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciBGLFQ9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gVC5mbG93aW5nfHwobigicmVzdW1lIiksVC5mbG93aW5nPSFULnJlYWRhYmxlTGlzdGVuaW5nLChGPVQp'@; put 'LnJlc3VtZVNjaGVkdWxlZHx8KEYucmVzdW1lU2NoZWR1bGVkPSEwLGIubmV4dFRpY2soTyx0aGlzLEYpKSksVC5wYXVzZWQ9ITEsdGhpc30sRC5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gbigiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZs'@; put 'b3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYobigicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZD0hMCx0aGlzfSxELnByb3RvdHlwZS53cmFwPWZ1bmN0aW9u'@; put 'KFQpe3ZhciBDPXRoaXMsRj10aGlzLl9yZWFkYWJsZVN0YXRlLHE9ITE7Zm9yKHZhciBZIGluIFQub24oImVuZCIsZnVuY3Rpb24oKXtpZihuKCJ3cmFwcGVkIGVuZCIpLEYuZGVjb2RlciYmIUYuZW5kZWQpe3ZhciBLPUYuZGVjb2Rlci5lbmQoKTtLJiZLLmxlbmd0aCYmQy5wdXNoKEspfUMu'@; put 'cHVzaChudWxsKX0pLFQub24oImRhdGEiLGZ1bmN0aW9uKEspe24oIndyYXBwZWQgZGF0YSIpLEYuZGVjb2RlciYmKEs9Ri5kZWNvZGVyLndyaXRlKEspKSxGLm9iamVjdE1vZGUmJm51bGw9PUt8fChGLm9iamVjdE1vZGV8fEsmJksubGVuZ3RoKSYmKEMucHVzaChLKXx8KHE9ITAsVC5wYXVz'@; put 'ZSgpKSl9KSxUKXZvaWQgMD09PXRoaXNbWV0mJiJmdW5jdGlvbiI9PXR5cGVvZiBUW1ldJiYodGhpc1tZXT1mdW5jdGlvbihLKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVFtLXS5hcHBseShULGFyZ3VtZW50cyl9fShZKSk7Zm9yKHZhciBYPTA7WDxCLmxlbmd0aDtYKyspVC5vbihCW1hd'@; put 'LHRoaXMuZW1pdC5iaW5kKHRoaXMsQltYXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKEspe24oIndyYXBwZWQgX3JlYWQiLEspLHEmJihxPSExLFQucmVzdW1lKCkpfSx0aGlzfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoRC5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0'@; put 'b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWYmJihmPXMoIi4vaW50ZXJuYWwvc3RyZWFtcy9hc3luY19pdGVyYXRvciIpKSxmKHRoaXMpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEQucHJvdG90eXBlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpm'@; put 'dW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEQucHJvdG90eXBlLCJyZWFkYWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRo'@; put 'aXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwicmVhZGFibGVGbG93aW5nIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxzZXQ6ZnVuY3Rpb24oVCl7dGhp'@; put 'cy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1UKX19KSxELl9mcm9tTGlzdD1VLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwicmVhZGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFk'@; put 'YWJsZVN0YXRlLmxlbmd0aH19KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoRC5mcm9tPWZ1bmN0aW9uKFQsQyl7cmV0dXJuIHZvaWQgMD09PXUmJih1PXMoIi4vaW50ZXJuYWwvc3RyZWFtcy9mcm9tIikpLHUoRCxULEMpfSl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHMoIl9wcm9j'@; put 'ZXNzIiksdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHsiLi4vZXJyb3JzIjo0NzcsIi4vX3N0cmVhbV9kdXBsZXgiOjQ3OCwiLi9pbnRlcm5hbC9zdHJlYW1zL2FzeW5jX2l0ZXJhdG9yIjo0ODMsIi4v'@; put 'aW50ZXJuYWwvc3RyZWFtcy9idWZmZXJfbGlzdCI6NDg0LCIuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveSI6NDg1LCIuL2ludGVybmFsL3N0cmVhbXMvZnJvbSI6NDg3LCIuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUiOjQ4OSwiLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbSI6NDkwLF9wcm9j'@; put 'ZXNzOjQ2NyxidWZmZXI6MjIwLGV2ZW50czo0MjIsaW5oZXJpdHM6NDQwLCJzdHJpbmdfZGVjb2Rlci8iOjUyMix1dGlsOjE4OH1dLDQ4MTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9bjt2YXIgYj1zKCIuLi9lcnJvcnMiKS5jb2RlcyxhPWIuRVJSX01FVEhPRF9O'@; put 'T1RfSU1QTEVNRU5URUQsbz1iLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxyPWIuRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyx0PWIuRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wLGU9cygiLi9fc3RyZWFtX2R1cGxleCIpO2Z1bmN0aW9uIGwoZix1KXt2YXIgcD10aGlzLl90'@; put 'cmFuc2Zvcm1TdGF0ZTtwLnRyYW5zZm9ybWluZz0hMTt2YXIgZD1wLndyaXRlY2I7aWYobnVsbD09PWQpcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLG5ldyBvKTtwLndyaXRlY2h1bms9bnVsbCxwLndyaXRlY2I9bnVsbCxudWxsIT11JiZ0aGlzLnB1c2godSksZChmKTt2YXIgdj10aGlzLl9y'@; put 'ZWFkYWJsZVN0YXRlO3YucmVhZGluZz0hMSwodi5uZWVkUmVhZGFibGV8fHYubGVuZ3RoPHYuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQodi5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBuKGYpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXJldHVybiBuZXcgbihmKTtlLmNhbGwodGhpcyxm'@; put 'KSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06bC5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJs'@; put 'ZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsZiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBmLnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT1mLnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIGYuZmx1c2gmJih0aGlzLl9mbHVzaD1mLmZsdXNoKSksdGhpcy5vbigicHJlZmlu'@; put 'aXNoIixpKX1mdW5jdGlvbiBpKCl7dmFyIGY9dGhpczsiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZmx1c2h8fHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkP2godGhpcyxudWxsLG51bGwpOnRoaXMuX2ZsdXNoKGZ1bmN0aW9uKHUscCl7aChmLHUscCl9KX1mdW5jdGlvbiBoKGYsdSxw'@; put 'KXtpZih1KXJldHVybiBmLmVtaXQoImVycm9yIix1KTtpZihudWxsIT1wJiZmLnB1c2gocCksZi5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpdGhyb3cgbmV3IHQ7aWYoZi5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyByO3JldHVybiBmLnB1c2gobnVsbCl9cygiaW5oZXJp'@; put 'dHMiKShuLGUpLG4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZix1KXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT0hMSxlLnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyxmLHUpfSxuLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGYsdSxwKXtwKG5ldyBh'@; put 'KCJfdHJhbnNmb3JtKCkiKSl9LG4ucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihmLHUscCl7dmFyIGQ9dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYoZC53cml0ZWNiPXAsZC53cml0ZWNodW5rPWYsZC53cml0ZWVuY29kaW5nPXUsIWQudHJhbnNmb3JtaW5nKXt2YXIgdj10aGlzLl9yZWFkYWJs'@; put 'ZVN0YXRlOyhkLm5lZWRUcmFuc2Zvcm18fHYubmVlZFJlYWRhYmxlfHx2Lmxlbmd0aDx2LmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKHYuaGlnaFdhdGVyTWFyayl9fSxuLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihmKXt2YXIgdT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09dS53'@; put 'cml0ZWNodW5rfHx1LnRyYW5zZm9ybWluZz91Lm5lZWRUcmFuc2Zvcm09ITA6KHUudHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybSh1LndyaXRlY2h1bmssdS53cml0ZWVuY29kaW5nLHUuYWZ0ZXJUcmFuc2Zvcm0pKX0sbi5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZix1KXtl'@; put 'LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsZixmdW5jdGlvbihwKXt1KHApfSl9fSx7Ii4uL2Vycm9ycyI6NDc3LCIuL19zdHJlYW1fZHVwbGV4Ijo0NzgsaW5oZXJpdHM6NDQwfV0sNDgyOltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIsYSl7KGZ1bmN0aW9uKCl7InVzZSBzdHJp'@; put 'Y3QiO2Z1bmN0aW9uIG8oeSl7dmFyIHc9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24oayxPKXt2YXIgVT1rLmVudHJ5O2ZvcihrLmVudHJ5PW51bGw7VTspe3ZhciBWPVUuY2FsbGJhY2s7Ty5wZW5kaW5nY2ItLSxW'@; put 'KHVuZGVmaW5lZCksVT1VLm5leHR9Ty5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD1rfSh3LHkpfX12YXIgcjtFLmV4cG9ydHM9RCxELldyaXRhYmxlU3RhdGU9JDt2YXIgaSx0PXtkZXByZWNhdGU6cygidXRpbC1kZXByZWNhdGUiKX0sZT1zKCIuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtIiks'@; put 'bD1zKCJidWZmZXIiKS5CdWZmZXIsbj0odm9pZCAwIT09YT9hOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LGg9cygiLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kiKSxmPXMoIi4vaW50ZXJuYWwvc3Ry'@; put 'ZWFtcy9zdGF0ZSIpLmdldEhpZ2hXYXRlck1hcmssdT1zKCIuLi9lcnJvcnMiKS5jb2RlcyxwPXUuRVJSX0lOVkFMSURfQVJHX1RZUEUsZD11LkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELHY9dS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssXz11LkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsQT11'@; put 'LkVSUl9TVFJFQU1fREVTVFJPWUVELEk9dS5FUlJfU1RSRUFNX05VTExfVkFMVUVTLEw9dS5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxOPXUuRVJSX1VOS05PV05fRU5DT0RJTkcsUD1oLmVycm9yT3JEZXN0cm95O2Z1bmN0aW9uIEIoKXt9ZnVuY3Rpb24gJCh5LHcsayl7cj1yfHxzKCIu'@; put 'L19zdHJlYW1fZHVwbGV4IiksImJvb2xlYW4iIT10eXBlb2YgayYmKGs9dyBpbnN0YW5jZW9mIHIpLHRoaXMub2JqZWN0TW9kZT0hISh5PXl8fHt9KS5vYmplY3RNb2RlLGsmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIXkud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhp'@; put 'Z2hXYXRlck1hcms9Zih0aGlzLHksIndyaXRhYmxlSGlnaFdhdGVyTWFyayIsayksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWNvZGVTdHJp'@; put 'bmdzPSEoITE9PT15LmRlY29kZVN0cmluZ3MpLHRoaXMuZGVmYXVsdEVuY29kaW5nPXkuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253'@; put 'cml0ZT1mdW5jdGlvbih6KXshZnVuY3Rpb24oVSxWKXt2YXIgRixSPVUuX3dyaXRhYmxlU3RhdGUsSD1SLnN5bmMsVD1SLndyaXRlY2I7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFQpdGhyb3cgbmV3IHY7aWYoKEY9Uikud3JpdGluZz0hMSxGLndyaXRlY2I9bnVsbCxGLmxlbmd0aC09Ri53cml0'@; put 'ZWxlbixGLndyaXRlbGVuPTAsVikhZnVuY3Rpb24oRixxLFksWCxLKXstLXEucGVuZGluZ2NiLFk/KGIubmV4dFRpY2soSyxYKSxiLm5leHRUaWNrKGcsRixxKSxGLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxQKEYsWCkpOihLKFgpLEYuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0'@; put 'dGVkPSEwLFAoRixYKSxnKEYscSkpfShVLFIsSCxWLFQpO2Vsc2V7dmFyIEM9YyhSKXx8VS5kZXN0cm95ZWQ7Q3x8Ui5jb3JrZWR8fFIuYnVmZmVyUHJvY2Vzc2luZ3x8IVIuYnVmZmVyZWRSZXF1ZXN0fHxqKFUsUiksSD9iLm5leHRUaWNrKE0sVSxSLEMsVCk6TShVLFIsQyxUKX19KHcseil9'@; put 'LHRoaXMud3JpdGVjYj1udWxsLHRoaXMud3JpdGVsZW49MCx0aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5wcmVmaW5pc2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVtaXRDbG9zZT0h'@; put 'MSE9PXkuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISF5LmF1dG9EZXN0cm95LHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgbyh0aGlzKX1mdW5jdGlvbiBEKHkpe3ZhciB3PXRoaXMgaW5zdGFuY2VvZihyPXJ8fHMoIi4vX3N0cmVh'@; put 'bV9kdXBsZXgiKSk7aWYoIXcmJiFpLmNhbGwoRCx0aGlzKSlyZXR1cm4gbmV3IEQoeSk7dGhpcy5fd3JpdGFibGVTdGF0ZT1uZXcgJCh5LHRoaXMsdyksdGhpcy53cml0YWJsZT0hMCx5JiYoImZ1bmN0aW9uIj09dHlwZW9mIHkud3JpdGUmJih0aGlzLl93cml0ZT15LndyaXRlKSwiZnVuY3Rp'@; put 'b24iPT10eXBlb2YgeS53cml0ZXYmJih0aGlzLl93cml0ZXY9eS53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiB5LmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PXkuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIHkuZmluYWwmJih0aGlzLl9maW5hbD15LmZpbmFsKSksZS5jYWxsKHRoaXMp'@; put 'fWZ1bmN0aW9uIHgoeSx3LGssTyx6LFUsVil7dy53cml0ZWxlbj1PLHcud3JpdGVjYj1WLHcud3JpdGluZz0hMCx3LnN5bmM9ITAsdy5kZXN0cm95ZWQ/dy5vbndyaXRlKG5ldyBBKCJ3cml0ZSIpKTprP3kuX3dyaXRldih6LHcub253cml0ZSk6eS5fd3JpdGUoeixVLHcub253cml0ZSksdy5z'@; put 'eW5jPSExfWZ1bmN0aW9uIE0oeSx3LGssTyl7dmFyIHosVTtrfHwoej15LDA9PT0oVT13KS5sZW5ndGgmJlUubmVlZERyYWluJiYoVS5uZWVkRHJhaW49ITEsei5lbWl0KCJkcmFpbiIpKSksdy5wZW5kaW5nY2ItLSxPKCksZyh5LHcpfWZ1bmN0aW9uIGooeSx3KXt3LmJ1ZmZlclByb2Nlc3Np'@; put 'bmc9ITA7dmFyIGs9dy5idWZmZXJlZFJlcXVlc3Q7aWYoeS5fd3JpdGV2JiZrJiZrLm5leHQpe3ZhciB6PW5ldyBBcnJheSh3LmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxVPXcuY29ya2VkUmVxdWVzdHNGcmVlO1UuZW50cnk9aztmb3IodmFyIFY9MCxSPSEwO2s7KXpbVl09ayxrLmlzQnVmfHwo'@; put 'Uj0hMSksaz1rLm5leHQsVis9MTt6LmFsbEJ1ZmZlcnM9Uix4KHksdywhMCx3Lmxlbmd0aCx6LCIiLFUuZmluaXNoKSx3LnBlbmRpbmdjYisrLHcubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLFUubmV4dD8ody5jb3JrZWRSZXF1ZXN0c0ZyZWU9VS5uZXh0LFUubmV4dD1udWxsKTp3LmNvcmtl'@; put 'ZFJlcXVlc3RzRnJlZT1uZXcgbyh3KSx3LmJ1ZmZlcmVkUmVxdWVzdENvdW50PTB9ZWxzZXtmb3IoO2s7KXt2YXIgSD1rLmNodW5rO2lmKHgoeSx3LCExLHcub2JqZWN0TW9kZT8xOkgubGVuZ3RoLEgsay5lbmNvZGluZyxrLmNhbGxiYWNrKSxrPWsubmV4dCx3LmJ1ZmZlcmVkUmVxdWVzdENv'@; put 'dW50LS0sdy53cml0aW5nKWJyZWFrfW51bGw9PT1rJiYody5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfXcuYnVmZmVyZWRSZXF1ZXN0PWssdy5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIGMoeSl7cmV0dXJuIHkuZW5kaW5nJiYwPT09eS5sZW5ndGgmJm51bGw9PT15LmJ1ZmZlcmVk'@; put 'UmVxdWVzdCYmIXkuZmluaXNoZWQmJiF5LndyaXRpbmd9ZnVuY3Rpb24gbSh5LHcpe3kuX2ZpbmFsKGZ1bmN0aW9uKGspe3cucGVuZGluZ2NiLS0sayYmUCh5LGspLHcucHJlZmluaXNoZWQ9ITAseS5lbWl0KCJwcmVmaW5pc2giKSxnKHksdyl9KX1mdW5jdGlvbiBnKHksdyl7dmFyIHosVSxr'@; put 'PWModyk7aWYoayYmKHo9eSwoVT13KS5wcmVmaW5pc2hlZHx8VS5maW5hbENhbGxlZHx8KCJmdW5jdGlvbiIhPXR5cGVvZiB6Ll9maW5hbHx8VS5kZXN0cm95ZWQ/KFUucHJlZmluaXNoZWQ9ITAsei5lbWl0KCJwcmVmaW5pc2giKSk6KFUucGVuZGluZ2NiKyssVS5maW5hbENhbGxlZD0hMCxi'@; put 'Lm5leHRUaWNrKG0seixVKSkpLDA9PT13LnBlbmRpbmdjYiYmKHcuZmluaXNoZWQ9ITAseS5lbWl0KCJmaW5pc2giKSx3LmF1dG9EZXN0cm95KSkpe3ZhciBPPXkuX3JlYWRhYmxlU3RhdGU7KCFPfHxPLmF1dG9EZXN0cm95JiZPLmVuZEVtaXR0ZWQpJiZ5LmRlc3Ryb3koKX1yZXR1cm4ga31z'@; put 'KCJpbmhlcml0cyIpKEQsZSksJC5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB5PXRoaXMuYnVmZmVyZWRSZXF1ZXN0LHc9W107eTspdy5wdXNoKHkpLHk9eS5uZXh0O3JldHVybiB3fSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoJC5wcm90b3R5'@; put 'cGUsImJ1ZmZlciIse2dldDp0LmRlcHJlY2F0ZShmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC4iLCJERVAwMDAzIil9KX1jYXRjaHt9fSgp'@; put 'LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5oYXNJbnN0YW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdPyhpPUZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdLE9iamVjdC5kZWZpbmVQcm9w'@; put 'ZXJ0eShELFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuISFpLmNhbGwodGhpcyx5KXx8dGhpcz09PUQmJnkmJnkuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiAkfX0pKTppPWZ1bmN0aW9uKHkpe3JldHVybiB5IGluc3RhbmNlb2YgdGhpc30sRC5wcm90b3R5'@; put 'cGUucGlwZT1mdW5jdGlvbigpe1AodGhpcyxuZXcgXyl9LEQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHksdyxrKXt2YXIgTyxSLEgsVCx6PXRoaXMuX3dyaXRhYmxlU3RhdGUsVT0hMSxWPSF6Lm9iamVjdE1vZGUmJihsLmlzQnVmZmVyKE89eSl8fE8gaW5zdGFuY2VvZiBuKTtyZXR1cm4g'@; put 'ViYmIWwuaXNCdWZmZXIoeSkmJih5PWwuZnJvbSh5KSksImZ1bmN0aW9uIj09dHlwZW9mIHcmJihrPXcsdz1udWxsKSxWP3c9ImJ1ZmZlciI6d3x8KHc9ei5kZWZhdWx0RW5jb2RpbmcpLCJmdW5jdGlvbiIhPXR5cGVvZiBrJiYoaz1CKSx6LmVuZGluZz8oUj10aGlzLEg9ayxUPW5ldyBMLFAo'@; put 'UixUKSxiLm5leHRUaWNrKEgsVCkpOihWfHxmdW5jdGlvbihSLEgsVCxDKXt2YXIgRjtyZXR1cm4gbnVsbD09PVQ/Rj1uZXcgSToic3RyaW5nIj09dHlwZW9mIFR8fEgub2JqZWN0TW9kZXx8KEY9bmV3IHAoImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciJdLFQpKSwhRnx8KFAoUixGKSxiLm5l'@; put 'eHRUaWNrKEMsRiksITEpfSh0aGlzLHoseSxrKSkmJih6LnBlbmRpbmdjYisrLFU9ZnVuY3Rpb24oUixILFQsQyxGLHEpe2lmKCFUKXt2YXIgWT0oVz1DLCh0dD1IKS5vYmplY3RNb2RlfHwhMT09PXR0LmRlY29kZVN0cmluZ3N8fCJzdHJpbmciIT10eXBlb2YgV3x8KFc9bC5mcm9tKFcsRikp'@; put 'LFcpO0MhPT1ZJiYoVD0hMCxGPSJidWZmZXIiLEM9WSl9dmFyIHR0LFcsWD1ILm9iamVjdE1vZGU/MTpDLmxlbmd0aDtILmxlbmd0aCs9WDt2YXIgSz1ILmxlbmd0aDxILmhpZ2hXYXRlck1hcms7aWYoS3x8KEgubmVlZERyYWluPSEwKSxILndyaXRpbmd8fEguY29ya2VkKXt2YXIgcnQ9SC5s'@; put 'YXN0QnVmZmVyZWRSZXF1ZXN0O0gubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6QyxlbmNvZGluZzpGLGlzQnVmOlQsY2FsbGJhY2s6cSxuZXh0Om51bGx9LHJ0P3J0Lm5leHQ9SC5sYXN0QnVmZmVyZWRSZXF1ZXN0OkguYnVmZmVyZWRSZXF1ZXN0PUgubGFzdEJ1ZmZlcmVkUmVxdWVzdCxI'@; put 'LmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgeChSLEgsITEsWCxDLEYscSk7cmV0dXJuIEt9KHRoaXMseixWLHksdyxrKSksVX0sRC5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LEQucHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigp'@; put 'e3ZhciB5PXRoaXMuX3dyaXRhYmxlU3RhdGU7eS5jb3JrZWQmJih5LmNvcmtlZC0tLHkud3JpdGluZ3x8eS5jb3JrZWR8fHkuYnVmZmVyUHJvY2Vzc2luZ3x8IXkuYnVmZmVyZWRSZXF1ZXN0fHxqKHRoaXMseSkpfSxELnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oeSl7'@; put 'aWYoInN0cmluZyI9PXR5cGVvZiB5JiYoeT15LnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJhdyJdLmluZGV4T2YoKHkrIiIpLnRvTG93ZXJDYXNlKCkp'@; put 'Pi0xKSl0aHJvdyBuZXcgTih5KTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9eSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f'@; put 'd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUu'@; put 'aGlnaFdhdGVyTWFya319KSxELnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oeSx3LGspe2sobmV3IGQoIl93cml0ZSgpIikpfSxELnByb3RvdHlwZS5fd3JpdGV2PW51bGwsRC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHksdyxrKXt2YXIgeixVLFYsTz10aGlzLl93cml0YWJsZVN0YXRlO3Jl'@; put 'dHVybiJmdW5jdGlvbiI9PXR5cGVvZiB5PyhrPXkseT1udWxsLHc9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIHcmJihrPXcsdz1udWxsKSxudWxsIT15JiZ0aGlzLndyaXRlKHksdyksTy5jb3JrZWQmJihPLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLE8uZW5kaW5nfHwoej10aGlzLFY9aywo'@; put 'VT1PKS5lbmRpbmc9ITAsZyh6LFUpLFYmJihVLmZpbmlzaGVkP2IubmV4dFRpY2soVik6ei5vbmNlKCJmaW5pc2giLFYpKSxVLmVuZGVkPSEwLHoud3JpdGFibGU9ITEpLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxl'@; put 'OiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRC5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3Rh'@; put 'dGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oeSl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPXkpfX0pLEQucHJvdG90eXBlLmRlc3Ryb3k9aC5kZXN0cm95LEQucHJvdG90eXBlLl91bmRlc3Ryb3k9aC51'@; put 'bmRlc3Ryb3ksRC5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oeSx3KXt3KHkpfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0s'@; put 'eyIuLi9lcnJvcnMiOjQ3NywiLi9fc3RyZWFtX2R1cGxleCI6NDc4LCIuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveSI6NDg1LCIuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUiOjQ4OSwiLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbSI6NDkwLF9wcm9jZXNzOjQ2NyxidWZmZXI6MjIwLGluaGVy'@; put 'aXRzOjQ0MCwidXRpbC1kZXByZWNhdGUiOjUyNH1dLDQ4MzpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGE7ZnVuY3Rpb24gbyhBLEksTCl7cmV0dXJuKEk9InN5bWJvbCI9PXR5cGVvZihQPWZ1bmN0aW9uKEIpe2lmKCJvYmplY3Qi'@; put 'IT10eXBlb2YgQnx8bnVsbD09PUIpcmV0dXJuIEI7dmFyIEQ9QltTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PUQpe3ZhciB4PUQuY2FsbChCLCJzdHJpbmciKTtpZigib2JqZWN0IiE9dHlwZW9mIHgpcmV0dXJuIHg7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBt'@; put 'dXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKEIpfShJKSk/UDpTdHJpbmcoUCkpaW4gQT9PYmplY3QuZGVmaW5lUHJvcGVydHkoQSxJLHt2YWx1ZTpMLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6QVtJXT1MLEE7dmFyIFB9'@; put 'dmFyIHI9cygiLi9lbmQtb2Ytc3RyZWFtIiksdD1TeW1ib2woImxhc3RSZXNvbHZlIiksZT1TeW1ib2woImxhc3RSZWplY3QiKSxsPVN5bWJvbCgiZXJyb3IiKSxuPVN5bWJvbCgiZW5kZWQiKSxpPVN5bWJvbCgibGFzdFByb21pc2UiKSxoPVN5bWJvbCgiaGFuZGxlUHJvbWlzZSIpLGY9U3lt'@; put 'Ym9sKCJzdHJlYW0iKTtmdW5jdGlvbiB1KEEsSSl7cmV0dXJue3ZhbHVlOkEsZG9uZTpJfX1mdW5jdGlvbiBwKEEpe3ZhciBJPUFbdF07aWYobnVsbCE9PUkpe3ZhciBMPUFbZl0ucmVhZCgpO251bGwhPT1MJiYoQVtpXT1udWxsLEFbdF09bnVsbCxBW2VdPW51bGwsSSh1KEwsITEpKSl9fWZ1'@; put 'bmN0aW9uIGQoQSl7Yi5uZXh0VGljayhwLEEpfXZhciB2PU9iamVjdC5nZXRQcm90b3R5cGVPZihmdW5jdGlvbigpe30pLF89T2JqZWN0LnNldFByb3RvdHlwZU9mKChvKGE9e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1tmXX0sbmV4dDpmdW5jdGlvbigpe3ZhciBBPXRoaXMsST10aGlzW2xd'@; put 'O2lmKG51bGwhPT1JKXJldHVybiBQcm9taXNlLnJlamVjdChJKTtpZih0aGlzW25dKXJldHVybiBQcm9taXNlLnJlc29sdmUodSh2b2lkIDAsITApKTtpZih0aGlzW2ZdLmRlc3Ryb3llZClyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oQiwkKXtiLm5leHRUaWNrKGZ1bmN0aW9uKCl7QVts'@; put 'XT8kKEFbbF0pOkIodSh2b2lkIDAsITApKX0pfSk7dmFyIEwsTj10aGlzW2ldO2lmKE4pTD1uZXcgUHJvbWlzZShmdW5jdGlvbihCLCQpe3JldHVybiBmdW5jdGlvbihELHgpe0IudGhlbihmdW5jdGlvbigpeyRbbl0/RCh1KHZvaWQgMCwhMCkpOiRbaF0oRCx4KX0seCl9fShOLHRoaXMpKTtl'@; put 'bHNle3ZhciBQPXRoaXNbZl0ucmVhZCgpO2lmKG51bGwhPT1QKXJldHVybiBQcm9taXNlLnJlc29sdmUodShQLCExKSk7TD1uZXcgUHJvbWlzZSh0aGlzW2hdKX1yZXR1cm4gdGhpc1tpXT1MLEx9fSxTeW1ib2wuYXN5bmNJdGVyYXRvcixmdW5jdGlvbigpe3JldHVybiB0aGlzfSksbyhhLCJy'@; put 'ZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIEE9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oSSxMKXtBW2ZdLmRlc3Ryb3kobnVsbCxmdW5jdGlvbihOKXtOP0woTik6SSh1KHZvaWQgMCwhMCkpfSl9KX0pLGEpLHYpO0UuZXhwb3J0cz1mdW5jdGlvbihBKXt2YXIgSSxMPU9iamVjdC5j'@; put 'cmVhdGUoXywobyhJPXt9LGYse3ZhbHVlOkEsd3JpdGFibGU6ITB9KSxvKEksdCx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLG8oSSxlLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksbyhJLGwse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxvKEksbix7dmFsdWU6QS5fcmVhZGFibGVTdGF0'@; put 'ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSksbyhJLGgse3ZhbHVlOmZ1bmN0aW9uKE4sUCl7dmFyIEI9TFtmXS5yZWFkKCk7Qj8oTFtpXT1udWxsLExbdF09bnVsbCxMW2VdPW51bGwsTih1KEIsITEpKSk6KExbdF09TixMW2VdPVApfSx3cml0YWJsZTohMH0pLEkpKTtyZXR1cm4gTFtpXT1u'@; put 'dWxsLHIoQSxmdW5jdGlvbihOKXtpZihOJiYiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiIT09Ti5jb2RlKXt2YXIgUD1MW2VdO3JldHVybiBudWxsIT09UCYmKExbaV09bnVsbCxMW3RdPW51bGwsTFtlXT1udWxsLFAoTikpLHZvaWQoTFtsXT1OKX12YXIgQj1MW3RdO251bGwhPT1CJiYo'@; put 'TFtpXT1udWxsLExbdF09bnVsbCxMW2VdPW51bGwsQih1KHZvaWQgMCwhMCkpKSxMW25dPSEwfSksQS5vbigicmVhZGFibGUiLGQuYmluZChudWxsLEwpKSxMfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSl9LHsiLi9lbmQtb2Ytc3RyZWFtIjo0ODYsX3Byb2Nlc3M6'@; put 'NDY3fV0sNDg0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoaSxoKXt2YXIgZj1PYmplY3Qua2V5cyhpKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpO2gmJih1PXUuZmlsdGVyKGZ1'@; put 'bmN0aW9uKHApe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGkscCkuZW51bWVyYWJsZX0pKSxmLnB1c2guYXBwbHkoZix1KX1yZXR1cm4gZn1mdW5jdGlvbiBhKGkpe2Zvcih2YXIgaD0xO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspe3ZhciBmPW51bGwhPWFyZ3VtZW50'@; put 'c1toXT9hcmd1bWVudHNbaF06e307aCUyP2IoT2JqZWN0KGYpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe28oaSx1LGZbdV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y'@; put 'cyhmKSk6YihPYmplY3QoZikpLmZvckVhY2goZnVuY3Rpb24odSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksdSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYsdSkpfSl9cmV0dXJuIGl9ZnVuY3Rpb24gbyhpLGgsZil7cmV0dXJuKGg9dChoKSlpbiBpP09iamVjdC5kZWZpbmVQ'@; put 'cm9wZXJ0eShpLGgse3ZhbHVlOmYsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTppW2hdPWYsaX1mdW5jdGlvbiByKGksaCl7Zm9yKHZhciBmPTA7ZjxoLmxlbmd0aDtmKyspe3ZhciB1PWhbZl07dS5lbnVtZXJhYmxlPXUuZW51bWVyYWJsZXx8ITEsdS5jb25m'@; put 'aWd1cmFibGU9ITAsInZhbHVlImluIHUmJih1LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSx0KHUua2V5KSx1KX19ZnVuY3Rpb24gdChpKXt2YXIgaD1mdW5jdGlvbihmKXtpZigib2JqZWN0IiE9dHlwZW9mIGZ8fG51bGw9PT1mKXJldHVybiBmO3ZhciBwPWZbU3ltYm9s'@; put 'LnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1wKXt2YXIgZD1wLmNhbGwoZiwic3RyaW5nIik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuIFN0cmlu'@; put 'ZyhmKX0oaSk7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBoP2g6U3RyaW5nKGgpfXZhciBlPXMoImJ1ZmZlciIpLkJ1ZmZlcixsPXMoInV0aWwiKS5pbnNwZWN0LG49bCYmbC5jdXN0b218fCJpbnNwZWN0IjtFLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKCl7KGZ1bmN0aW9uKHAsZCl7'@; put 'aWYoIShwIGluc3RhbmNlb2YgZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGkpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIGgsZjtyZXR1cm4gaD1pLChmPVt7a2V5OiJwdXNo'@; put 'Iix2YWx1ZTpmdW5jdGlvbihwKXt2YXIgZD17ZGF0YTpwLG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1kOnRoaXMuaGVhZD1kLHRoaXMudGFpbD1kLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJ1bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbihwKXt2YXIgZD17ZGF0YTpwLG5l'@; put 'eHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9ZCksdGhpcy5oZWFkPWQsKyt0aGlzLmxlbmd0aH19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7dmFyIHA9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIHRoaXMuaGVhZD0xPT09'@; put 'dGhpcy5sZW5ndGg/dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCxwfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfX0se2tleToiam9pbiIsdmFsdWU6ZnVuY3Rpb24ocCl7aWYo'@; put 'MD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgZD10aGlzLmhlYWQsdj0iIitkLmRhdGE7ZD1kLm5leHQ7KXYrPXArZC5kYXRhO3JldHVybiB2fX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbihwKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIGUuYWxsb2MoMCk7Zm9yKHZh'@; put 'ciBBPWUuYWxsb2NVbnNhZmUocD4+PjApLEk9dGhpcy5oZWFkLEw9MDtJOyllLnByb3RvdHlwZS5jb3B5LmNhbGwoSS5kYXRhLEEsTCksTCs9SS5kYXRhLmxlbmd0aCxJPUkubmV4dDtyZXR1cm4gQX19LHtrZXk6ImNvbnN1bWUiLHZhbHVlOmZ1bmN0aW9uKHAsZCl7dmFyIHY7cmV0dXJuIHA8'@; put 'dGhpcy5oZWFkLmRhdGEubGVuZ3RoPyh2PXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAscCksdGhpcy5oZWFkLmRhdGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UocCkpOnY9cD09PXRoaXMuaGVhZC5kYXRhLmxlbmd0aD90aGlzLnNoaWZ0KCk6ZD90aGlzLl9nZXRTdHJpbmcocCk6dGhpcy5fZ2V0QnVm'@; put 'ZmVyKHApLHZ9fSx7a2V5OiJmaXJzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OiJfZ2V0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbihwKXt2YXIgZD10aGlzLmhlYWQsdj0xLF89ZC5kYXRhO2ZvcihwLT1fLmxlbmd0aDtkPWQubmV4dDspe3ZhciBBPWQu'@; put 'ZGF0YSxJPXA+QS5sZW5ndGg/QS5sZW5ndGg6cDtpZihfKz1JPT09QS5sZW5ndGg/QTpBLnNsaWNlKDAscCksMD09KHAtPUkpKXtJPT09QS5sZW5ndGg/KCsrdix0aGlzLmhlYWQ9ZC5uZXh0P2QubmV4dDp0aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1kLGQuZGF0YT1BLnNsaWNlKEkpKTti'@; put 'cmVha30rK3Z9cmV0dXJuIHRoaXMubGVuZ3RoLT12LF99fSx7a2V5OiJfZ2V0QnVmZmVyIix2YWx1ZTpmdW5jdGlvbihwKXt2YXIgZD1lLmFsbG9jVW5zYWZlKHApLHY9dGhpcy5oZWFkLF89MTtmb3Iodi5kYXRhLmNvcHkoZCkscC09di5kYXRhLmxlbmd0aDt2PXYubmV4dDspe3ZhciBBPXYu'@; put 'ZGF0YSxJPXA+QS5sZW5ndGg/QS5sZW5ndGg6cDtpZihBLmNvcHkoZCxkLmxlbmd0aC1wLDAsSSksMD09KHAtPUkpKXtJPT09QS5sZW5ndGg/KCsrXyx0aGlzLmhlYWQ9di5uZXh0P3YubmV4dDp0aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD12LHYuZGF0YT1BLnNsaWNlKEkpKTticmVha30r'@; put 'K199cmV0dXJuIHRoaXMubGVuZ3RoLT1fLGR9fSx7a2V5Om4sdmFsdWU6ZnVuY3Rpb24ocCxkKXtyZXR1cm4gbCh0aGlzLGEoYSh7fSxkKSx7fSx7ZGVwdGg6MCxjdXN0b21JbnNwZWN0OiExfSkpfX1dKSYmcihoLnByb3RvdHlwZSxmKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwicHJvdG90'@; put 'eXBlIix7d3JpdGFibGU6ITF9KSxpfSgpfSx7YnVmZmVyOjIyMCx1dGlsOjE4OH1dLDQ4NTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYSh0LGUpe3IodCxlKSxvKHQpfWZ1bmN0aW9uIG8odCl7dC5fd3JpdGFibGVTdGF0'@; put 'ZSYmIXQuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHx0Ll9yZWFkYWJsZVN0YXRlJiYhdC5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fHQuZW1pdCgiY2xvc2UiKX1mdW5jdGlvbiByKHQsZSl7dC5lbWl0KCJlcnJvciIsZSl9RS5leHBvcnRzPXtkZXN0cm95OmZ1bmN0aW9uKHQsZSl7dmFy'@; put 'IGw9dGhpcztyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPyhlP2UodCk6dCYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVT'@; put 'dGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxiLm5leHRUaWNrKHIsdGhpcyx0KSk6Yi5uZXh0VGljayhyLHRoaXMsdCkpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRo'@; put 'aXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveSh0fHxudWxsLGZ1bmN0aW9uKGgpeyFlJiZoP2wuX3dyaXRhYmxlU3RhdGU/bC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ/Yi5uZXh0VGljayhvLGwpOihsLl93cml0'@; put 'YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxiLm5leHRUaWNrKGEsbCxoKSk6Yi5uZXh0VGljayhhLGwsaCk6ZT8oYi5uZXh0VGljayhvLGwpLGUoaCkpOmIubmV4dFRpY2sobyxsKX0pLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVh'@; put 'ZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSExKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0'@; put 'cm95ZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hl'@; put 'ZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMSl9LGVycm9yT3JEZXN0cm95OmZ1bmN0aW9uKHQsZSl7dmFyIGw9dC5fcmVhZGFibGVTdGF0ZSxuPXQuX3dyaXRhYmxlU3RhdGU7bCYmbC5hdXRvRGVzdHJveXx8biYmbi5hdXRvRGVzdHJveT90LmRlc3Ryb3koZSk6dC5l'@; put 'bWl0KCJlcnJvciIsZSl9fX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSl9LHtfcHJvY2Vzczo0Njd9XSw0ODY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiLi4vLi4vLi4vZXJyb3JzIikuY29kZXMuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xP'@; put 'U0U7ZnVuY3Rpb24gYSgpe31FLmV4cG9ydHM9ZnVuY3Rpb24gbyhyLHQsZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIG8ocixudWxsLHQpO3R8fCh0PXt9KSxlPWZ1bmN0aW9uKEEpe3ZhciBJPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFJKXtJPSEwO2Zvcih2YXIgTD1hcmd1'@; put 'bWVudHMubGVuZ3RoLE49bmV3IEFycmF5KEwpLFA9MDtQPEw7UCsrKU5bUF09YXJndW1lbnRzW1BdO0EuYXBwbHkodGhpcyxOKX19fShlfHxhKTt2YXIgQSxsPXQucmVhZGFibGV8fCExIT09dC5yZWFkYWJsZSYmci5yZWFkYWJsZSxuPXQud3JpdGFibGV8fCExIT09dC53cml0YWJsZSYmci53'@; put 'cml0YWJsZSxpPWZ1bmN0aW9uKCl7ci53cml0YWJsZXx8ZigpfSxoPXIuX3dyaXRhYmxlU3RhdGUmJnIuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsZj1mdW5jdGlvbigpe249ITEsaD0hMCxsfHxlLmNhbGwocil9LHU9ci5fcmVhZGFibGVTdGF0ZSYmci5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0'@; put 'dGVkLHA9ZnVuY3Rpb24oKXtsPSExLHU9ITAsbnx8ZS5jYWxsKHIpfSxkPWZ1bmN0aW9uKEEpe2UuY2FsbChyLEEpfSx2PWZ1bmN0aW9uKCl7dmFyIEE7cmV0dXJuIGwmJiF1PyhyLl9yZWFkYWJsZVN0YXRlJiZyLl9yZWFkYWJsZVN0YXRlLmVuZGVkfHwoQT1uZXcgYiksZS5jYWxsKHIsQSkp'@; put 'Om4mJiFoPyhyLl93cml0YWJsZVN0YXRlJiZyLl93cml0YWJsZVN0YXRlLmVuZGVkfHwoQT1uZXcgYiksZS5jYWxsKHIsQSkpOnZvaWQgMH0sXz1mdW5jdGlvbigpe3IucmVxLm9uKCJmaW5pc2giLGYpfTtyZXR1cm4oQT1yKS5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBBLmFib3J0'@; put 'PyhyLm9uKCJjb21wbGV0ZSIsZiksci5vbigiYWJvcnQiLHYpLHIucmVxP18oKTpyLm9uKCJyZXF1ZXN0IixfKSk6biYmIXIuX3dyaXRhYmxlU3RhdGUmJihyLm9uKCJlbmQiLGkpLHIub24oImNsb3NlIixpKSksci5vbigiZW5kIixwKSxyLm9uKCJmaW5pc2giLGYpLCExIT09dC5lcnJvciYm'@; put 'ci5vbigiZXJyb3IiLGQpLHIub24oImNsb3NlIix2KSxmdW5jdGlvbigpe3IucmVtb3ZlTGlzdGVuZXIoImNvbXBsZXRlIixmKSxyLnJlbW92ZUxpc3RlbmVyKCJhYm9ydCIsdiksci5yZW1vdmVMaXN0ZW5lcigicmVxdWVzdCIsXyksci5yZXEmJnIucmVxLnJlbW92ZUxpc3RlbmVyKCJmaW5p'@; put 'c2giLGYpLHIucmVtb3ZlTGlzdGVuZXIoImVuZCIsaSksci5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGkpLHIucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsZiksci5yZW1vdmVMaXN0ZW5lcigiZW5kIixwKSxyLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsZCksci5yZW1vdmVMaXN0ZW5lcigiY2xv'@; put 'c2UiLHYpfX19LHsiLi4vLi4vLi4vZXJyb3JzIjo0Nzd9XSw0ODc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXIiKX19LHt9XSw0ODg6'@; put 'W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGIsYT1zKCIuLi8uLi8uLi9lcnJvcnMiKS5jb2RlcyxvPWEuRVJSX01JU1NJTkdfQVJHUyxyPWEuRVJSX1NUUkVBTV9ERVNUUk9ZRUQ7ZnVuY3Rpb24gdChoKXtpZihoKXRocm93IGh9ZnVuY3Rpb24gbChoKXtoKCl9ZnVuY3Rpb24g'@; put 'bihoLGYpe3JldHVybiBoLnBpcGUoZil9RS5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGgsZj1uZXcgQXJyYXkoaCksdT0wO3U8aDt1KyspZlt1XT1hcmd1bWVudHNbdV07dmFyIHAsZD1mdW5jdGlvbiBpKGgpe3JldHVybiBoLmxlbmd0aD8iZnVuY3Rpb24i'@; put 'IT10eXBlb2YgaFtoLmxlbmd0aC0xXT90OmgucG9wKCk6dH0oZik7aWYoQXJyYXkuaXNBcnJheShmWzBdKSYmKGY9ZlswXSksZi5sZW5ndGg8Mil0aHJvdyBuZXcgbygic3RyZWFtcyIpO3ZhciB2PWYubWFwKGZ1bmN0aW9uKF8sQSl7dmFyIEk9QTxmLmxlbmd0aC0xO3JldHVybiBmdW5jdGlv'@; put 'biBlKGgsZix1LHApe3A9ZnVuY3Rpb24oXyl7dmFyIEE9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7QXx8KEE9ITAsXy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fShwKTt2YXIgZD0hMTtoLm9uKCJjbG9zZSIsZnVuY3Rpb24oKXtkPSEwfSksdm9pZCAwPT09YiYmKGI9cygiLi9lbmQtb2Ytc3Ry'@; put 'ZWFtIikpLGIoaCx7cmVhZGFibGU6Zix3cml0YWJsZTp1fSxmdW5jdGlvbihfKXtpZihfKXJldHVybiBwKF8pO2Q9ITAscCgpfSk7dmFyIHY9ITE7cmV0dXJuIGZ1bmN0aW9uKF8pe2lmKCFkJiYhdilyZXR1cm4gdj0hMCwoQT1oKS5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBBLmFi'@; put 'b3J0P2guYWJvcnQoKToiZnVuY3Rpb24iPT10eXBlb2YgaC5kZXN0cm95P2guZGVzdHJveSgpOnZvaWQgcChffHxuZXcgcigicGlwZSIpKTt2YXIgQX19KF8sSSxBPjAsZnVuY3Rpb24oTCl7cHx8KHA9TCksTCYmdi5mb3JFYWNoKGwpLEl8fCh2LmZvckVhY2gobCksZChwKSl9KX0pO3JldHVy'@; put 'biBmLnJlZHVjZShuKX19LHsiLi4vLi4vLi4vZXJyb3JzIjo0NzcsIi4vZW5kLW9mLXN0cmVhbSI6NDg2fV0sNDg5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoIi4uLy4uLy4uL2Vycm9ycyIpLmNvZGVzLkVSUl9JTlZBTElEX09QVF9WQUxVRTtFLmV4cG9ydHM9e2dl'@; put 'dEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24oYSxvLHIsdCl7dmFyIGwsZT1udWxsIT0obD1vKS5oaWdoV2F0ZXJNYXJrP2wuaGlnaFdhdGVyTWFyazp0P2xbcl06bnVsbDtpZihudWxsIT1lKXtpZighaXNGaW5pdGUoZSl8fE1hdGguZmxvb3IoZSkhPT1lfHxlPDApdGhyb3cgbmV3IGIodD9yOiJo'@; put 'aWdoV2F0ZXJNYXJrIixlKTtyZXR1cm4gTWF0aC5mbG9vcihlKX1yZXR1cm4gYS5vYmplY3RNb2RlPzE2OjE2Mzg0fX19LHsiLi4vLi4vLi4vZXJyb3JzIjo0Nzd9XSw0OTA6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPXMoImV2ZW50cyIpLkV2ZW50RW1pdHRlcn0s'@; put 'e2V2ZW50czo0MjJ9XSw0OTE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7KFM9RS5leHBvcnRzPXMoIi4vbGliL19zdHJlYW1fcmVhZGFibGUuanMiKSkuU3RyZWFtPVMsUy5SZWFkYWJsZT1TLFMuV3JpdGFibGU9cygiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIpLFMuRHVwbGV4'@; put 'PXMoIi4vbGliL19zdHJlYW1fZHVwbGV4LmpzIiksUy5UcmFuc2Zvcm09cygiLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiKSxTLlBhc3NUaHJvdWdoPXMoIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiKSxTLmZpbmlzaGVkPXMoIi4vbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9m'@; put 'LXN0cmVhbS5qcyIpLFMucGlwZWxpbmU9cygiLi9saWIvaW50ZXJuYWwvc3RyZWFtcy9waXBlbGluZS5qcyIpfSx7Ii4vbGliL19zdHJlYW1fZHVwbGV4LmpzIjo0NzgsIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiOjQ3OSwiLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyI6NDgwLCIu'@; put 'L2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyI6NDgxLCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIjo0ODIsIi4vbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qcyI6NDg2LCIuL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzIjo0ODh9XSw0OTI6W2Z1bmN0aW9u'@; put 'KHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYSl7dmFyIG89T2JqZWN0LnByb3RvdHlwZSxyPW8uaGFzT3duUHJvcGVydHksdD1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGcseSx3KXtnW3ldPXcudmFsdWV9LGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9T'@; put 'eW1ib2w6e30sbD1lLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbj1lLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGk9ZS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGgoZyx5LHcpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZyx5LHt2YWx1ZTp3'@; put 'LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZ1t5XX10cnl7aCh7fSwiIil9Y2F0Y2h7aD1mdW5jdGlvbih5LHcsayl7cmV0dXJuIHlbd109a319ZnVuY3Rpb24gZihnLHksdyxrKXt2YXIgej1PYmplY3QuY3JlYXRlKCh5JiZ5LnByb3RvdHlwZSBpbnN0YW5j'@; put 'ZW9mIGQ/eTpkKS5wcm90b3R5cGUpLFU9bmV3IGooa3x8W10pO3JldHVybiB0KHosIl9pbnZva2UiLHt2YWx1ZTokKGcsdyxVKX0pLHp9ZnVuY3Rpb24gdShnLHksdyl7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzpnLmNhbGwoeSx3KX19Y2F0Y2goayl7cmV0dXJue3R5cGU6InRocm93'@; put 'Iixhcmc6a319fWEud3JhcD1mO3ZhciBwPXt9O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBfKCl7fXZhciBBPXt9O2goQSxsLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KTt2YXIgST1PYmplY3QuZ2V0UHJvdG90eXBlT2YsTD1JJiZJKEkoYyhbXSkpKTtMJiZMIT09byYm'@; put 'ci5jYWxsKEwsbCkmJihBPUwpO3ZhciBOPV8ucHJvdG90eXBlPWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQSk7ZnVuY3Rpb24gUChnKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goZnVuY3Rpb24oeSl7aChnLHksZnVuY3Rpb24odyl7cmV0dXJuIHRoaXMuX2ludm9rZSh5'@; put 'LHcpfSl9KX1mdW5jdGlvbiBCKGcseSl7dmFyIHc7dCh0aGlzLCJfaW52b2tlIix7dmFsdWU6ZnVuY3Rpb24oayxPKXtmdW5jdGlvbiB6KCl7cmV0dXJuIG5ldyB5KGZ1bmN0aW9uKFUsVil7IWZ1bmN0aW9uIFIoSCxULEMsRil7dmFyIHE9dShnW0hdLGcsVCk7aWYoInRocm93IiE9PXEudHlw'@; put 'ZSl7dmFyIFk9cS5hcmcsWD1ZLnZhbHVlO3JldHVybiBYJiYib2JqZWN0Ij09dHlwZW9mIFgmJnIuY2FsbChYLCJfX2F3YWl0Iik/eS5yZXNvbHZlKFguX19hd2FpdCkudGhlbihmdW5jdGlvbihLKXtSKCJuZXh0IixLLEMsRil9LGZ1bmN0aW9uKEspe1IoInRocm93IixLLEMsRil9KTp5LnJl'@; put 'c29sdmUoWCkudGhlbihmdW5jdGlvbihLKXtZLnZhbHVlPUssQyhZKX0sZnVuY3Rpb24oSyl7cmV0dXJuIFIoInRocm93IixLLEMsRil9KX1GKHEuYXJnKX0oayxPLFUsVil9KX1yZXR1cm4gdz13P3cudGhlbih6LHopOnooKX19KX1mdW5jdGlvbiAkKGcseSx3KXt2YXIgaz0ic3VzcGVuZGVk'@; put 'U3RhcnQiO3JldHVybiBmdW5jdGlvbihPLHope2lmKCJleGVjdXRpbmciPT09ayl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PWspe2lmKCJ0aHJvdyI9PT1PKXRocm93IHo7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEw'@; put 'fX1mb3Iody5tZXRob2Q9Tyx3LmFyZz16Ozspe3ZhciBVPXcuZGVsZWdhdGU7aWYoVSl7dmFyIFY9RChVLHcpO2lmKFYpe2lmKFY9PT1wKWNvbnRpbnVlO3JldHVybiBWfX1pZigibmV4dCI9PT13Lm1ldGhvZCl3LnNlbnQ9dy5fc2VudD13LmFyZztlbHNlIGlmKCJ0aHJvdyI9PT13Lm1ldGhv'@; put 'ZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PWspdGhyb3cgaz0iY29tcGxldGVkIix3LmFyZzt3LmRpc3BhdGNoRXhjZXB0aW9uKHcuYXJnKX1lbHNlInJldHVybiI9PT13Lm1ldGhvZCYmdy5hYnJ1cHQoInJldHVybiIsdy5hcmcpO2s9ImV4ZWN1dGluZyI7dmFyIFI9dShnLHksdyk7aWYoIm5v'@; put 'cm1hbCI9PT1SLnR5cGUpe2lmKGs9dy5kb25lPyJjb21wbGV0ZWQiOiJzdXNwZW5kZWRZaWVsZCIsUi5hcmc9PT1wKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpSLmFyZyxkb25lOncuZG9uZX19InRocm93Ij09PVIudHlwZSYmKGs9ImNvbXBsZXRlZCIsdy5tZXRob2Q9InRocm93Iix3LmFyZz1S'@; put 'LmFyZyl9fX1mdW5jdGlvbiBEKGcseSl7dmFyIHc9eS5tZXRob2Qsaz1nLml0ZXJhdG9yW3ddO2lmKHZvaWQgMD09PWspcmV0dXJuIHkuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09dyYmZy5pdGVyYXRvci5yZXR1cm4mJih5Lm1ldGhvZD0icmV0dXJuIix5LmFyZz12b2lkIDAsRChnLHkpLCJ0'@; put 'aHJvdyI9PT15Lm1ldGhvZCl8fCJyZXR1cm4iIT09dyYmKHkubWV0aG9kPSJ0aHJvdyIseS5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnIit3KyInIG1ldGhvZCIpKSxwO3ZhciBPPXUoayxnLml0ZXJhdG9yLHkuYXJnKTtpZigidGhyb3ciPT09'@; put 'Ty50eXBlKXJldHVybiB5Lm1ldGhvZD0idGhyb3ciLHkuYXJnPU8uYXJnLHkuZGVsZWdhdGU9bnVsbCxwO3ZhciB6PU8uYXJnO3JldHVybiB6P3ouZG9uZT8oeVtnLnJlc3VsdE5hbWVdPXoudmFsdWUseS5uZXh0PWcubmV4dExvYywicmV0dXJuIiE9PXkubWV0aG9kJiYoeS5tZXRob2Q9Im5l'@; put 'eHQiLHkuYXJnPXZvaWQgMCkseS5kZWxlZ2F0ZT1udWxsLHApOno6KHkubWV0aG9kPSJ0aHJvdyIseS5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx5LmRlbGVnYXRlPW51bGwscCl9ZnVuY3Rpb24geChnKXt2YXIgeT17dHJ5TG9jOmdbMF19'@; put 'OzEgaW4gZyYmKHkuY2F0Y2hMb2M9Z1sxXSksMiBpbiBnJiYoeS5maW5hbGx5TG9jPWdbMl0seS5hZnRlckxvYz1nWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh5KX1mdW5jdGlvbiBNKGcpe3ZhciB5PWcuY29tcGxldGlvbnx8e307eS50eXBlPSJub3JtYWwiLGRlbGV0ZSB5LmFyZyxnLmNv'@; put 'bXBsZXRpb249eX1mdW5jdGlvbiBqKGcpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxnLmZvckVhY2goeCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBjKGcpe2lmKGcpe3ZhciB5PWdbbF07aWYoeSlyZXR1cm4geS5jYWxsKGcpO2lmKCJmdW5jdGlvbiI9PXR5cGVv'@; put 'ZiBnLm5leHQpcmV0dXJuIGc7aWYoIWlzTmFOKGcubGVuZ3RoKSl7dmFyIHc9LTEsaz1mdW5jdGlvbiBPKCl7Zm9yKDsrK3c8Zy5sZW5ndGg7KWlmKHIuY2FsbChnLHcpKXJldHVybiBPLnZhbHVlPWdbd10sTy5kb25lPSExLE87cmV0dXJuIE8udmFsdWU9dm9pZCAwLE8uZG9uZT0hMCxPfTty'@; put 'ZXR1cm4gay5uZXh0PWt9fXJldHVybntuZXh0Om19fWZ1bmN0aW9uIG0oKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiB2LnByb3RvdHlwZT1fLHQoTiwiY29uc3RydWN0b3IiLHt2YWx1ZTpfLGNvbmZpZ3VyYWJsZTohMH0pLHQoXywiY29uc3RydWN0b3IiLHt2YWx1ZTp2'@; put 'LGNvbmZpZ3VyYWJsZTohMH0pLHYuZGlzcGxheU5hbWU9aChfLGksIkdlbmVyYXRvckZ1bmN0aW9uIiksYS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGcpe3ZhciB5PSJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnLmNvbnN0cnVjdG9yO3JldHVybiEheSYmKHk9PT12fHwiR2VuZXJhdG9y'@; put 'RnVuY3Rpb24iPT09KHkuZGlzcGxheU5hbWV8fHkubmFtZSkpfSxhLm1hcms9ZnVuY3Rpb24oZyl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZyxfKTooZy5fX3Byb3RvX189XyxoKGcsaSwiR2VuZXJhdG9yRnVuY3Rpb24iKSksZy5wcm90b3R5'@; put 'cGU9T2JqZWN0LmNyZWF0ZShOKSxnfSxhLmF3cmFwPWZ1bmN0aW9uKGcpe3JldHVybntfX2F3YWl0Omd9fSxQKEIucHJvdG90eXBlKSxoKEIucHJvdG90eXBlLG4sZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGEuQXN5bmNJdGVyYXRvcj1CLGEuYXN5bmM9ZnVuY3Rpb24oZyx5LHcsayxPKXt2'@; put 'b2lkIDA9PT1PJiYoTz1Qcm9taXNlKTt2YXIgej1uZXcgQihmKGcseSx3LGspLE8pO3JldHVybiBhLmlzR2VuZXJhdG9yRnVuY3Rpb24oeSk/ejp6Lm5leHQoKS50aGVuKGZ1bmN0aW9uKFUpe3JldHVybiBVLmRvbmU/VS52YWx1ZTp6Lm5leHQoKX0pfSxQKE4pLGgoTixpLCJHZW5lcmF0b3Ii'@; put 'KSxoKE4sbCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksaChOLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pLGEua2V5cz1mdW5jdGlvbihnKXt2YXIgeT1PYmplY3QoZyksdz1bXTtmb3IodmFyIGsgaW4geSl3LnB1c2goayk7cmV0dXJuIHcucmV2'@; put 'ZXJzZSgpLGZ1bmN0aW9uIE8oKXtmb3IoO3cubGVuZ3RoOyl7dmFyIHo9dy5wb3AoKTtpZih6IGluIHkpcmV0dXJuIE8udmFsdWU9eixPLmRvbmU9ITEsT31yZXR1cm4gTy5kb25lPSEwLE99fSxhLnZhbHVlcz1jLGoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqLHJlc2V0OmZ1bmN0aW9uKGcp'@; put 'e2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz12b2lkIDAsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goTSksIWcpZm9yKHZhciB5IGlu'@; put 'IHRoaXMpInQiPT09eS5jaGFyQXQoMCkmJnIuY2FsbCh0aGlzLHkpJiYhaXNOYU4oK3kuc2xpY2UoMSkpJiYodGhpc1t5XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciBnPXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1nLnR5cGUp'@; put 'dGhyb3cgZy5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24oZyl7aWYodGhpcy5kb25lKXRocm93IGc7dmFyIHk9dGhpcztmdW5jdGlvbiB3KFIsSCl7cmV0dXJuIHoudHlwZT0idGhyb3ciLHouYXJnPWcseS5uZXh0PVIsSCYmKHkubWV0aG9kPSJuZXh0'@; put 'Iix5LmFyZz12b2lkIDApLCEhSH1mb3IodmFyIGs9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2s+PTA7LS1rKXt2YXIgTz10aGlzLnRyeUVudHJpZXNba10sej1PLmNvbXBsZXRpb247aWYoInJvb3QiPT09Ty50cnlMb2MpcmV0dXJuIHcoImVuZCIpO2lmKE8udHJ5TG9jPD10aGlzLnByZXYp'@; put 'e3ZhciBVPXIuY2FsbChPLCJjYXRjaExvYyIpLFY9ci5jYWxsKE8sImZpbmFsbHlMb2MiKTtpZihVJiZWKXtpZih0aGlzLnByZXY8Ty5jYXRjaExvYylyZXR1cm4gdyhPLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8Ty5maW5hbGx5TG9jKXJldHVybiB3KE8uZmluYWxseUxvYyl9ZWxzZSBp'@; put 'ZihVKXtpZih0aGlzLnByZXY8Ty5jYXRjaExvYylyZXR1cm4gdyhPLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFWKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8Ty5maW5hbGx5TG9jKXJldHVybiB3KE8uZmluYWxs'@; put 'eUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihnLHkpe2Zvcih2YXIgdz10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dz49MDstLXcpe3ZhciBrPXRoaXMudHJ5RW50cmllc1t3XTtpZihrLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwoaywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8ay5maW5h'@; put 'bGx5TG9jKXt2YXIgTz1rO2JyZWFrfX1PJiYoImJyZWFrIj09PWd8fCJjb250aW51ZSI9PT1nKSYmTy50cnlMb2M8PXkmJnk8PU8uZmluYWxseUxvYyYmKE89bnVsbCk7dmFyIHo9Tz9PLmNvbXBsZXRpb246e307cmV0dXJuIHoudHlwZT1nLHouYXJnPXksTz8odGhpcy5tZXRob2Q9Im5leHQi'@; put 'LHRoaXMubmV4dD1PLmZpbmFsbHlMb2MscCk6dGhpcy5jb21wbGV0ZSh6KX0sY29tcGxldGU6ZnVuY3Rpb24oZyx5KXtpZigidGhyb3ciPT09Zy50eXBlKXRocm93IGcuYXJnO3JldHVybiJicmVhayI9PT1nLnR5cGV8fCJjb250aW51ZSI9PT1nLnR5cGU/dGhpcy5uZXh0PWcuYXJnOiJyZXR1'@; put 'cm4iPT09Zy50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9Zy5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWcudHlwZSYmeSYmKHRoaXMubmV4dD15KSxwfSxmaW5pc2g6ZnVuY3Rpb24oZyl7Zm9yKHZhciB5PXRoaXMudHJ5RW50cmllcy5sZW5n'@; put 'dGgtMTt5Pj0wOy0teSl7dmFyIHc9dGhpcy50cnlFbnRyaWVzW3ldO2lmKHcuZmluYWxseUxvYz09PWcpcmV0dXJuIHRoaXMuY29tcGxldGUody5jb21wbGV0aW9uLHcuYWZ0ZXJMb2MpLE0odykscH19LGNhdGNoOmZ1bmN0aW9uKGcpe2Zvcih2YXIgeT10aGlzLnRyeUVudHJpZXMubGVuZ3Ro'@; put 'LTE7eT49MDstLXkpe3ZhciB3PXRoaXMudHJ5RW50cmllc1t5XTtpZih3LnRyeUxvYz09PWcpe3ZhciBrPXcuY29tcGxldGlvbjtpZigidGhyb3ciPT09ay50eXBlKXt2YXIgTz1rLmFyZztNKHcpfXJldHVybiBPfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxk'@; put 'ZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGcseSx3KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6YyhnKSxyZXN1bHROYW1lOnksbmV4dExvYzp3fSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCkscH19LGF9KCJvYmplY3QiPT10eXBlb2YgRT9FLmV4cG9ydHM6'@; put 'e30pO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9Yn1jYXRjaHsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpcy5yZWdlbmVyYXRvclJ1bnRpbWU9YjpGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShiKX19LHt9XSw0OTM6W2Z1bmN0aW9uKHMsRSxTKXsi'@; put 'dXNlIHN0cmljdCI7dmFyIGI9cygiYnVmZmVyIikuQnVmZmVyLGE9cygiaW5oZXJpdHMiKSxvPXMoImhhc2gtYmFzZSIpLHI9bmV3IEFycmF5KDE2KSx0PVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgs'@; put 'MywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdLGU9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcs'@; put 'MCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0sbD1bMTEsMTQsMTUsMTIsNSw4LDcs'@; put 'OSwxMSwxMywxNCwxNSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwx'@; put 'MiwxMywxNCwxMSw4LDUsNl0sbj1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5'@; put 'LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0saT1bMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSxoPVsxMzUyODI5OTI2LDE1NDg2MDM2ODQsMTgzNjA3MjY5MSwyMDUzOTk0MjE3LDBdO2Z1bmN0aW9u'@; put 'IGYoKXtvLmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwfWZ1bmN0aW9uIHUoSSxMKXtyZXR1cm4gSTw8THxJPj4+MzItTH1mdW5jdGlvbiBwKEks'@; put 'TCxOLFAsQiwkLEQseCl7cmV0dXJuIHUoSSsoTF5OXlApKyQrRHwwLHgpK0J8MH1mdW5jdGlvbiBkKEksTCxOLFAsQiwkLEQseCl7cmV0dXJuIHUoSSsoTCZOfH5MJlApKyQrRHwwLHgpK0J8MH1mdW5jdGlvbiB2KEksTCxOLFAsQiwkLEQseCl7cmV0dXJuIHUoSSsoKEx8fk4pXlApKyQrRHww'@; put 'LHgpK0J8MH1mdW5jdGlvbiBfKEksTCxOLFAsQiwkLEQseCl7cmV0dXJuIHUoSSsoTCZQfE4mflApKyQrRHwwLHgpK0J8MH1mdW5jdGlvbiBBKEksTCxOLFAsQiwkLEQseCl7cmV0dXJuIHUoSSsoTF4oTnx+UCkpKyQrRHwwLHgpK0J8MH1hKGYsbyksZi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5j'@; put 'dGlvbigpe2Zvcih2YXIgST1yLEw9MDtMPDE2OysrTClJW0xdPXRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKDQqTCk7Zm9yKHZhciBOPTB8dGhpcy5fYSxQPTB8dGhpcy5fYixCPTB8dGhpcy5fYywkPTB8dGhpcy5fZCxEPTB8dGhpcy5fZSx4PTB8dGhpcy5fYSxNPTB8dGhpcy5fYixqPTB8dGhp'@; put 'cy5fYyxjPTB8dGhpcy5fZCxtPTB8dGhpcy5fZSxnPTA7Zzw4MDtnKz0xKXt2YXIgeSx3O2c8MTY/KHk9cChOLFAsQiwkLEQsSVt0W2ddXSxpWzBdLGxbZ10pLHc9QSh4LE0saixjLG0sSVtlW2ddXSxoWzBdLG5bZ10pKTpnPDMyPyh5PWQoTixQLEIsJCxELElbdFtnXV0saVsxXSxsW2ddKSx3'@; put 'PV8oeCxNLGosYyxtLElbZVtnXV0saFsxXSxuW2ddKSk6Zzw0OD8oeT12KE4sUCxCLCQsRCxJW3RbZ11dLGlbMl0sbFtnXSksdz12KHgsTSxqLGMsbSxJW2VbZ11dLGhbMl0sbltnXSkpOmc8NjQ/KHk9XyhOLFAsQiwkLEQsSVt0W2ddXSxpWzNdLGxbZ10pLHc9ZCh4LE0saixjLG0sSVtlW2dd'@; put 'XSxoWzNdLG5bZ10pKTooeT1BKE4sUCxCLCQsRCxJW3RbZ11dLGlbNF0sbFtnXSksdz1wKHgsTSxqLGMsbSxJW2VbZ11dLGhbNF0sbltnXSkpLE49RCxEPSQsJD11KEIsMTApLEI9UCxQPXkseD1tLG09YyxjPXUoaiwxMCksaj1NLE09d312YXIgaz10aGlzLl9iK0IrY3wwO3RoaXMuX2I9dGhp'@; put 'cy5fYyskK218MCx0aGlzLl9jPXRoaXMuX2QrRCt4fDAsdGhpcy5fZD10aGlzLl9lK04rTXwwLHRoaXMuX2U9dGhpcy5fYStQK2p8MCx0aGlzLl9hPWt9LGYucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXT0xMjgsdGhpcy5fYmxv'@; put 'Y2tPZmZzZXQ+NTYmJih0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNjQpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTApLHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9s'@; put 'ZW5ndGhbMF0sNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLDYwKSx0aGlzLl91cGRhdGUoKTt2YXIgST1iLmFsbG9jP2IuYWxsb2MoMjApOm5ldyBiKDIwKTtyZXR1cm4gSS53cml0ZUludDMyTEUodGhpcy5fYSwwKSxJLndyaXRlSW50MzJMRSh0aGlzLl9i'@; put 'LDQpLEkud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksSS53cml0ZUludDMyTEUodGhpcy5fZCwxMiksSS53cml0ZUludDMyTEUodGhpcy5fZSwxNiksSX0sRS5leHBvcnRzPWZ9LHtidWZmZXI6MjIwLCJoYXNoLWJhc2UiOjQyNSxpbmhlcml0czo0NDB9XSw0OTQ6W2Z1bmN0aW9uKHMsRSxTKXsi'@; put 'dXNlIHN0cmljdCI7dmFyIGI9cygiYnVmZmVyIiksYT1iLkJ1ZmZlcjtmdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBsIGluIHQpZVtsXT10W2xdfWZ1bmN0aW9uIHIodCxlLGwpe3JldHVybiBhKHQsZSxsKX1hLmZyb20mJmEuYWxsb2MmJmEuYWxsb2NVbnNhZmUmJmEuYWxsb2NVbnNhZmVTbG93'@; put 'P0UuZXhwb3J0cz1iOihvKGIsUyksUy5CdWZmZXI9ciksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSksbyhhLHIpLHIuZnJvbT1mdW5jdGlvbih0LGUsbCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJl'@; put 'IGEgbnVtYmVyIik7cmV0dXJuIGEodCxlLGwpfSxyLmFsbG9jPWZ1bmN0aW9uKHQsZSxsKXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBuPWEodCk7cmV0dXJuIHZvaWQgMCE9PWU/InN0cmluZyI9PXR5'@; put 'cGVvZiBsP24uZmlsbChlLGwpOm4uZmlsbChlKTpuLmZpbGwoMCksbn0sci5hbGxvY1Vuc2FmZT1mdW5jdGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBhKHQpfSxyLmFsbG9jVW5zYWZl'@; put 'U2xvdz1mdW5jdGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBiLlNsb3dCdWZmZXIodCl9fSx7YnVmZmVyOjIyMH1dLDQ5NTpbZnVuY3Rpb24ocyxFLFMpeyhmdW5jdGlvbihiKXsoZnVu'@; put 'Y3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGEsbz1zKCJidWZmZXIiKSxyPW8uQnVmZmVyLHQ9e307Zm9yKGEgaW4gbylvLmhhc093blByb3BlcnR5KGEpJiYiU2xvd0J1ZmZlciIhPT1hJiYiQnVmZmVyIiE9PWEmJih0W2FdPW9bYV0pO3ZhciBlPXQuQnVmZmVyPXt9O2ZvcihhIGluIHIpci5o'@; put 'YXNPd25Qcm9wZXJ0eShhKSYmImFsbG9jVW5zYWZlIiE9PWEmJiJhbGxvY1Vuc2FmZVNsb3ciIT09YSYmKGVbYV09clthXSk7aWYodC5CdWZmZXIucHJvdG90eXBlPXIucHJvdG90eXBlLGUuZnJvbSYmZS5mcm9tIT09VWludDhBcnJheS5mcm9tfHwoZS5mcm9tPWZ1bmN0aW9uKGwsbixpKXtp'@; put 'ZigibnVtYmVyIj09dHlwZW9mIGwpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgbCk7aWYobCYmdm9pZCAwPT09bC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhl'@; put 'IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgbCk7cmV0dXJuIHIobCxuLGkpfSksZS5hbGxvY3x8KGUuYWxsb2M9ZnVuY3Rpb24o'@; put 'bCxuLGkpe2lmKCJudW1iZXIiIT10eXBlb2YgbCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgbCk7aWYobDwwfHxsPj0yKigxPDwzMCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1Ro'@; put 'ZSB2YWx1ZSAiJytsKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgaD1yKGwpO3JldHVybiBuJiYwIT09bi5sZW5ndGg/InN0cmluZyI9PXR5cGVvZiBpP2guZmlsbChuLGkpOmguZmlsbChuKTpoLmZpbGwoMCksaH0pLCF0LmtTdHJpbmdNYXhMZW5ndGgpdHJ5e3Qua1N0'@; put 'cmluZ01heExlbmd0aD1iLmJpbmRpbmcoImJ1ZmZlciIpLmtTdHJpbmdNYXhMZW5ndGh9Y2F0Y2h7fXQuY29uc3RhbnRzfHwodC5jb25zdGFudHM9e01BWF9MRU5HVEg6dC5rTWF4TGVuZ3RofSx0LmtTdHJpbmdNYXhMZW5ndGgmJih0LmNvbnN0YW50cy5NQVhfU1RSSU5HX0xFTkdUSD10LmtT'@; put 'dHJpbmdNYXhMZW5ndGgpKSxFLmV4cG9ydHM9dH0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscygiX3Byb2Nlc3MiKSl9LHtfcHJvY2Vzczo0NjcsYnVmZmVyOjIyMH1dLDQ5NjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVs'@; put 'ZSIse3ZhbHVlOiEwfSk7Y29uc3QgYj1zKCJ4bWxjaGFycy94bWwvMS4wL2VkNSIpLGE9cygieG1sY2hhcnMveG1sLzEuMS9lZDIiKSxvPXMoInhtbGNoYXJzL3htbG5zLzEuMC9lZDMiKTt2YXIgcj1iLmlzUyx0PWIuaXNDaGFyLGU9Yi5pc05hbWVTdGFydENoYXIsbD1iLmlzTmFtZUNoYXIs'@; put 'bj1iLlNfTElTVCxpPWIuTkFNRV9SRSxoPWEuaXNDaGFyLGY9by5pc05DTmFtZVN0YXJ0Q2hhcix1PW8uaXNOQ05hbWVDaGFyLHA9by5OQ19OQU1FX1JFO2NvbnN0IGQ9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsdj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxu'@; put 'cy8iLF89e19fcHJvdG9fXzpudWxsLHhtbDpkLHhtbG5zOnZ9LEE9e19fcHJvdG9fXzpudWxsLGFtcDoiJiIsZ3Q6Ij4iLGx0OiI8IixxdW90OiciJyxhcG9zOiInIn0sST1jPT4zND09PWN8fDM5PT09YyxMPVszNCwzOV0sTj1bLi4uTCw5MSw2Ml0sUD1bLi4uTCw2MCw5M10sQj1bNjEsNjMs'@; put 'Li4ubl0sJD1bLi4ubiw2MiwzOCw2MF07ZnVuY3Rpb24gRChjLG0sZyl7c3dpdGNoKG0pe2Nhc2UieG1sIjpnIT09ZCYmYy5mYWlsKGB4bWwgcHJlZml4IG11c3QgYmUgYm91bmQgdG8gJHtkfS5gKTticmVhaztjYXNlInhtbG5zIjpnIT09diYmYy5mYWlsKGB4bWxucyBwcmVmaXggbXVzdCBi'@; put 'ZSBib3VuZCB0byAke3Z9LmApfXN3aXRjaChnKXtjYXNlIHY6Yy5mYWlsKCIiPT09bT9gdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG1heSBub3QgYmUgc2V0IHRvICR7Z30uYDpgbWF5IG5vdCBhc3NpZ24gYSBwcmVmaXggKGV2ZW4gInhtbG5zIikgdG8gdGhlIFVSSSAke3Z9LmApO2JyZWFrO2Nh'@; put 'c2UgZDpzd2l0Y2gobSl7Y2FzZSJ4bWwiOmJyZWFrO2Nhc2UiIjpjLmZhaWwoYHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBtYXkgbm90IGJlIHNldCB0byAke2d9LmApO2JyZWFrO2RlZmF1bHQ6Yy5mYWlsKCJtYXkgbm90IGFzc2lnbiB0aGUgeG1sIG5hbWVzcGFjZSB0byBhbm90aGVyIHByZWZp'@; put 'eC4iKX19fWNvbnN0IHg9Yz0+cC50ZXN0KGMpLE09Yz0+aS50ZXN0KGMpO1MuRVZFTlRTPVsieG1sZGVjbCIsInRleHQiLCJwcm9jZXNzaW5naW5zdHJ1Y3Rpb24iLCJkb2N0eXBlIiwiY29tbWVudCIsIm9wZW50YWdzdGFydCIsImF0dHJpYnV0ZSIsIm9wZW50YWciLCJjbG9zZXRhZyIsImNk'@; put 'YXRhIiwiZXJyb3IiLCJlbmQiLCJyZWFkeSJdO2NvbnN0IGo9e3htbGRlY2w6InhtbGRlY2xIYW5kbGVyIix0ZXh0OiJ0ZXh0SGFuZGxlciIscHJvY2Vzc2luZ2luc3RydWN0aW9uOiJwaUhhbmRsZXIiLGRvY3R5cGU6ImRvY3R5cGVIYW5kbGVyIixjb21tZW50OiJjb21tZW50SGFuZGxlciIs'@; put 'b3BlbnRhZ3N0YXJ0OiJvcGVuVGFnU3RhcnRIYW5kbGVyIixhdHRyaWJ1dGU6ImF0dHJpYnV0ZUhhbmRsZXIiLG9wZW50YWc6Im9wZW5UYWdIYW5kbGVyIixjbG9zZXRhZzoiY2xvc2VUYWdIYW5kbGVyIixjZGF0YToiY2RhdGFIYW5kbGVyIixlcnJvcjoiZXJyb3JIYW5kbGVyIixlbmQ6ImVu'@; put 'ZEhhbmRsZXIiLHJlYWR5OiJyZWFkeUhhbmRsZXIifTtTLlNheGVzUGFyc2VyPWNsYXNze2NvbnN0cnVjdG9yKGMpe3RoaXMub3B0PWM/P3t9LHRoaXMuZnJhZ21lbnRPcHQ9ISF0aGlzLm9wdC5mcmFnbWVudDtjb25zdCBtPXRoaXMueG1sbnNPcHQ9ISF0aGlzLm9wdC54bWxucztpZih0aGlz'@; put 'LnRyYWNrUG9zaXRpb249ITEhPT10aGlzLm9wdC5wb3NpdGlvbix0aGlzLmZpbGVOYW1lPXRoaXMub3B0LmZpbGVOYW1lLG0pe3RoaXMubmFtZVN0YXJ0Q2hlY2s9Zix0aGlzLm5hbWVDaGVjaz11LHRoaXMuaXNOYW1lPXgsdGhpcy5wcm9jZXNzQXR0cmlicz10aGlzLnByb2Nlc3NBdHRyaWJz'@; put 'TlMsdGhpcy5wdXNoQXR0cmliPXRoaXMucHVzaEF0dHJpYk5TLHRoaXMubnM9T2JqZWN0LmFzc2lnbih7X19wcm90b19fOm51bGx9LF8pO2NvbnN0IGc9dGhpcy5vcHQuYWRkaXRpb25hbE5hbWVzcGFjZXM7bnVsbCE9ZyYmKGZ1bmN0aW9uKHksdyl7Zm9yKGNvbnN0IGsgb2YgT2JqZWN0Lmtl'@; put 'eXModykpRCh5LGssd1trXSl9KHRoaXMsZyksT2JqZWN0LmFzc2lnbih0aGlzLm5zLGcpKX1lbHNlIHRoaXMubmFtZVN0YXJ0Q2hlY2s9ZSx0aGlzLm5hbWVDaGVjaz1sLHRoaXMuaXNOYW1lPU0sdGhpcy5wcm9jZXNzQXR0cmlicz10aGlzLnByb2Nlc3NBdHRyaWJzUGxhaW4sdGhpcy5wdXNo'@; put 'QXR0cmliPXRoaXMucHVzaEF0dHJpYlBsYWluO3RoaXMuc3RhdGVUYWJsZT1bdGhpcy5zQmVnaW4sdGhpcy5zQmVnaW5XaGl0ZXNwYWNlLHRoaXMuc0RvY3R5cGUsdGhpcy5zRG9jdHlwZVF1b3RlLHRoaXMuc0RURCx0aGlzLnNEVERRdW90ZWQsdGhpcy5zRFRET3Blbldha2EsdGhpcy5zRFRE'@; put 'T3Blbldha2FCYW5nLHRoaXMuc0RURENvbW1lbnQsdGhpcy5zRFREQ29tbWVudEVuZGluZyx0aGlzLnNEVERDb21tZW50RW5kZWQsdGhpcy5zRFREUEksdGhpcy5zRFREUElFbmRpbmcsdGhpcy5zVGV4dCx0aGlzLnNFbnRpdHksdGhpcy5zT3Blbldha2EsdGhpcy5zT3Blbldha2FCYW5nLHRo'@; put 'aXMuc0NvbW1lbnQsdGhpcy5zQ29tbWVudEVuZGluZyx0aGlzLnNDb21tZW50RW5kZWQsdGhpcy5zQ0RhdGEsdGhpcy5zQ0RhdGFFbmRpbmcsdGhpcy5zQ0RhdGFFbmRpbmcyLHRoaXMuc1BJRmlyc3RDaGFyLHRoaXMuc1BJUmVzdCx0aGlzLnNQSUJvZHksdGhpcy5zUElFbmRpbmcsdGhpcy5z'@; put 'WE1MRGVjbE5hbWVTdGFydCx0aGlzLnNYTUxEZWNsTmFtZSx0aGlzLnNYTUxEZWNsRXEsdGhpcy5zWE1MRGVjbFZhbHVlU3RhcnQsdGhpcy5zWE1MRGVjbFZhbHVlLHRoaXMuc1hNTERlY2xTZXBhcmF0b3IsdGhpcy5zWE1MRGVjbEVuZGluZyx0aGlzLnNPcGVuVGFnLHRoaXMuc09wZW5UYWdT'@; put 'bGFzaCx0aGlzLnNBdHRyaWIsdGhpcy5zQXR0cmliTmFtZSx0aGlzLnNBdHRyaWJOYW1lU2F3V2hpdGUsdGhpcy5zQXR0cmliVmFsdWUsdGhpcy5zQXR0cmliVmFsdWVRdW90ZWQsdGhpcy5zQXR0cmliVmFsdWVDbG9zZWQsdGhpcy5zQXR0cmliVmFsdWVVbnF1b3RlZCx0aGlzLnNDbG9zZVRh'@; put 'Zyx0aGlzLnNDbG9zZVRhZ1Nhd1doaXRlXSx0aGlzLl9pbml0KCl9Z2V0IGNsb3NlZCgpe3JldHVybiB0aGlzLl9jbG9zZWR9X2luaXQoKXt2YXIgYzt0aGlzLm9wZW5XYWthQmFuZz0iIix0aGlzLnRleHQ9IiIsdGhpcy5uYW1lPSIiLHRoaXMucGlUYXJnZXQ9IiIsdGhpcy5lbnRpdHk9IiIs'@; put 'dGhpcy5xPW51bGwsdGhpcy50YWdzPVtdLHRoaXMudGFnPW51bGwsdGhpcy50b3BOUz1udWxsLHRoaXMuY2h1bms9IiIsdGhpcy5jaHVua1Bvc2l0aW9uPTAsdGhpcy5pPTAsdGhpcy5wcmV2ST0wLHRoaXMuY2FycmllZEZyb21QcmV2aW91cz12b2lkIDAsdGhpcy5mb3JiaWRkZW5TdGF0ZT0w'@; put 'LHRoaXMuYXR0cmliTGlzdD1bXTtjb25zdHtmcmFnbWVudE9wdDptfT10aGlzO3RoaXMuc3RhdGU9bT8xMzowLHRoaXMucmVwb3J0ZWRUZXh0QmVmb3JlUm9vdD10aGlzLnJlcG9ydGVkVGV4dEFmdGVyUm9vdD10aGlzLmNsb3NlZFJvb3Q9dGhpcy5zYXdSb290PW0sdGhpcy54bWxEZWNsUG9z'@; put 'c2libGU9IW0sdGhpcy54bWxEZWNsRXhwZWN0cz1bInZlcnNpb24iXSx0aGlzLmVudGl0eVJldHVyblN0YXRlPXZvaWQgMDtsZXR7ZGVmYXVsdFhNTFZlcnNpb246Z309dGhpcy5vcHQ7aWYodm9pZCAwPT09Zyl7aWYoITA9PT10aGlzLm9wdC5mb3JjZVhNTFZlcnNpb24pdGhyb3cgbmV3IEVy'@; put 'cm9yKCJmb3JjZVhNTFZlcnNpb24gc2V0IGJ1dCBkZWZhdWx0WE1MVmVyc2lvbiBpcyBub3Qgc2V0Iik7Zz0iMS4wIn10aGlzLnNldFhNTFZlcnNpb24oZyksdGhpcy5wb3NpdGlvbkF0TmV3TGluZT0wLHRoaXMuZG9jdHlwZT0hMSx0aGlzLl9jbG9zZWQ9ITEsdGhpcy54bWxEZWNsPXt2ZXJz'@; put 'aW9uOnZvaWQgMCxlbmNvZGluZzp2b2lkIDAsc3RhbmRhbG9uZTp2b2lkIDB9LHRoaXMubGluZT0xLHRoaXMuY29sdW1uPTAsdGhpcy5FTlRJVElFUz1PYmplY3QuY3JlYXRlKEEpLG51bGw9PT0oYz10aGlzLnJlYWR5SGFuZGxlcil8fHZvaWQgMD09PWN8fGMuY2FsbCh0aGlzKX1nZXQgcG9z'@; put 'aXRpb24oKXtyZXR1cm4gdGhpcy5jaHVua1Bvc2l0aW9uK3RoaXMuaX1nZXQgY29sdW1uSW5kZXgoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbi10aGlzLnBvc2l0aW9uQXROZXdMaW5lfW9uKGMsbSl7dGhpc1tqW2NdXT1tfW9mZihjKXt0aGlzW2pbY11dPXZvaWQgMH1tYWtlRXJyb3IoYyl7dmFy'@; put 'IG07bGV0IGc9bnVsbCE9PShtPXRoaXMuZmlsZU5hbWUpJiZ2b2lkIDAhPT1tP206IiI7cmV0dXJuIHRoaXMudHJhY2tQb3NpdGlvbiYmKGcubGVuZ3RoPjAmJihnKz0iOiIpLGcrPWAke3RoaXMubGluZX06JHt0aGlzLmNvbHVtbn1gKSxnLmxlbmd0aD4wJiYoZys9IjogIiksbmV3IEVycm9y'@; put 'KGcrYyl9ZmFpbChjKXtjb25zdCBtPXRoaXMubWFrZUVycm9yKGMpLGc9dGhpcy5lcnJvckhhbmRsZXI7aWYodm9pZCAwPT09Zyl0aHJvdyBtO3JldHVybiBnKG0pLHRoaXN9d3JpdGUoYyl7aWYodGhpcy5jbG9zZWQpcmV0dXJuIHRoaXMuZmFpbCgiY2Fubm90IHdyaXRlIGFmdGVyIGNsb3Nl'@; put 'OyBhc3NpZ24gYW4gb25yZWFkeSBoYW5kbGVyLiIpO2xldCBtPSExO251bGw9PT1jPyhtPSEwLGM9IiIpOiJvYmplY3QiPT10eXBlb2YgYyYmKGM9Yy50b1N0cmluZygpKSx2b2lkIDAhPT10aGlzLmNhcnJpZWRGcm9tUHJldmlvdXMmJihjPWAke3RoaXMuY2FycmllZEZyb21QcmV2aW91c30k'@; put 'e2N9YCx0aGlzLmNhcnJpZWRGcm9tUHJldmlvdXM9dm9pZCAwKTtsZXQgZz1jLmxlbmd0aDtjb25zdCB5PWMuY2hhckNvZGVBdChnLTEpOyFtJiYoMTM9PT15fHx5Pj01NTI5NiYmeTw9NTYzMTkpJiYodGhpcy5jYXJyaWVkRnJvbVByZXZpb3VzPWNbZy0xXSxnLS0sYz1jLnNsaWNlKDAsZykp'@; put 'O2NvbnN0e3N0YXRlVGFibGU6d309dGhpcztmb3IodGhpcy5jaHVuaz1jLHRoaXMuaT0wO3RoaXMuaTxnOyl3W3RoaXMuc3RhdGVdLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMuY2h1bmtQb3NpdGlvbis9ZyxtP3RoaXMuZW5kKCk6dGhpc31jbG9zZSgpe3JldHVybiB0aGlzLndyaXRlKG51bGwp'@; put 'fWdldENvZGUxMCgpe2NvbnN0e2NodW5rOmMsaTptfT10aGlzO2lmKHRoaXMucHJldkk9bSx0aGlzLmk9bSsxLG0+PWMubGVuZ3RoKXJldHVybi0xO2NvbnN0IGc9Yy5jaGFyQ29kZUF0KG0pO2lmKHRoaXMuY29sdW1uKyssZzw1NTI5Nil7aWYoZz49MzJ8fDk9PT1nKXJldHVybiBnO3N3aXRj'@; put 'aChnKXtjYXNlIDEwOnJldHVybiB0aGlzLmxpbmUrKyx0aGlzLmNvbHVtbj0wLHRoaXMucG9zaXRpb25BdE5ld0xpbmU9dGhpcy5wb3NpdGlvbiwxMDtjYXNlIDEzOnJldHVybiAxMD09PWMuY2hhckNvZGVBdChtKzEpJiYodGhpcy5pPW0rMiksdGhpcy5saW5lKyssdGhpcy5jb2x1bW49MCx0'@; put 'aGlzLnBvc2l0aW9uQXROZXdMaW5lPXRoaXMucG9zaXRpb24sLTI7ZGVmYXVsdDpyZXR1cm4gdGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3Rlci4iKSxnfX1pZihnPjU2MzE5KXJldHVybiBnPj01NzM0NCYmZzw9NjU1MzN8fHRoaXMuZmFpbCgiZGlzYWxsb3dlZCBjaGFyYWN0ZXIuIiks'@; put 'Zztjb25zdCB5PTY1NTM2KzEwMjQqKGctNTUyOTYpKyhjLmNoYXJDb2RlQXQobSsxKS01NjMyMCk7cmV0dXJuIHRoaXMuaT1tKzIseT4xMTE0MTExJiZ0aGlzLmZhaWwoImRpc2FsbG93ZWQgY2hhcmFjdGVyLiIpLHl9Z2V0Q29kZTExKCl7Y29uc3R7Y2h1bms6YyxpOm19PXRoaXM7aWYodGhp'@; put 'cy5wcmV2ST1tLHRoaXMuaT1tKzEsbT49Yy5sZW5ndGgpcmV0dXJuLTE7Y29uc3QgZz1jLmNoYXJDb2RlQXQobSk7aWYodGhpcy5jb2x1bW4rKyxnPDU1Mjk2KXtpZihnPjMxJiZnPDEyN3x8Zz4xNTkmJjgyMzIhPT1nfHw5PT09ZylyZXR1cm4gZztzd2l0Y2goZyl7Y2FzZSAxMDpyZXR1cm4g'@; put 'dGhpcy5saW5lKyssdGhpcy5jb2x1bW49MCx0aGlzLnBvc2l0aW9uQXROZXdMaW5lPXRoaXMucG9zaXRpb24sMTA7Y2FzZSAxMzp7Y29uc3Qgdz1jLmNoYXJDb2RlQXQobSsxKTsxMCE9PXcmJjEzMyE9PXd8fCh0aGlzLmk9bSsyKX1jYXNlIDEzMzpjYXNlIDgyMzI6cmV0dXJuIHRoaXMubGlu'@; put 'ZSsrLHRoaXMuY29sdW1uPTAsdGhpcy5wb3NpdGlvbkF0TmV3TGluZT10aGlzLnBvc2l0aW9uLC0yO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZmFpbCgiZGlzYWxsb3dlZCBjaGFyYWN0ZXIuIiksZ319aWYoZz41NjMxOSlyZXR1cm4gZz49NTczNDQmJmc8PTY1NTMzfHx0aGlzLmZhaWwoImRpc2Fs'@; put 'bG93ZWQgY2hhcmFjdGVyLiIpLGc7Y29uc3QgeT02NTUzNisxMDI0KihnLTU1Mjk2KSsoYy5jaGFyQ29kZUF0KG0rMSktNTYzMjApO3JldHVybiB0aGlzLmk9bSsyLHk+MTExNDExMSYmdGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3Rlci4iKSx5fWdldENvZGVOb3JtKCl7Y29uc3QgYz10'@; put 'aGlzLmdldENvZGUoKTtyZXR1cm4tMj09PWM/MTA6Y311bmdldCgpe3RoaXMuaT10aGlzLnByZXZJLHRoaXMuY29sdW1uLS19Y2FwdHVyZVRvKGMpe2xldHtpOm19PXRoaXM7Y29uc3R7Y2h1bms6Z309dGhpcztmb3IoOzspe2NvbnN0IHk9dGhpcy5nZXRDb2RlKCksdz0tMj09PXksaz13PzEw'@; put 'Onk7aWYoLTE9PT1rfHxjLmluY2x1ZGVzKGspKXJldHVybiB0aGlzLnRleHQrPWcuc2xpY2UobSx0aGlzLnByZXZJKSxrO3cmJih0aGlzLnRleHQrPWcuc2xpY2UobSx0aGlzLnByZXZJKSsiXG4iLG09dGhpcy5pKX19Y2FwdHVyZVRvQ2hhcihjKXtsZXR7aTptfT10aGlzO2NvbnN0e2NodW5r'@; put 'Omd9PXRoaXM7Zm9yKDs7KXtsZXQgeT10aGlzLmdldENvZGUoKTtzd2l0Y2goeSl7Y2FzZS0yOnRoaXMudGV4dCs9Zy5zbGljZShtLHRoaXMucHJldkkpKyJcbiIsbT10aGlzLmkseT0xMDticmVhaztjYXNlLTE6cmV0dXJuIHRoaXMudGV4dCs9Zy5zbGljZShtKSwhMX1pZih5PT09YylyZXR1'@; put 'cm4gdGhpcy50ZXh0Kz1nLnNsaWNlKG0sdGhpcy5wcmV2SSksITB9fWNhcHR1cmVOYW1lQ2hhcnMoKXtjb25zdHtjaHVuazpjLGk6bX09dGhpcztmb3IoOzspe2NvbnN0IGc9dGhpcy5nZXRDb2RlKCk7aWYoLTE9PT1nKXJldHVybiB0aGlzLm5hbWUrPWMuc2xpY2UobSksLTE7aWYoIWwoZykp'@; put 'cmV0dXJuIHRoaXMubmFtZSs9Yy5zbGljZShtLHRoaXMucHJldkkpLC0yPT09Zz8xMDpnfX1za2lwU3BhY2VzKCl7Zm9yKDs7KXtjb25zdCBjPXRoaXMuZ2V0Q29kZU5vcm0oKTtpZigtMT09PWN8fCFyKGMpKXJldHVybiBjfX1zZXRYTUxWZXJzaW9uKGMpe3RoaXMuY3VycmVudFhNTFZlcnNp'@; put 'b249YywiMS4wIj09PWM/KHRoaXMuaXNDaGFyPXQsdGhpcy5nZXRDb2RlPXRoaXMuZ2V0Q29kZTEwKToodGhpcy5pc0NoYXI9aCx0aGlzLmdldENvZGU9dGhpcy5nZXRDb2RlMTEpfXNCZWdpbigpezY1Mjc5PT09dGhpcy5jaHVuay5jaGFyQ29kZUF0KDApJiYodGhpcy5pKyssdGhpcy5jb2x1'@; put 'bW4rKyksdGhpcy5zdGF0ZT0xfXNCZWdpbldoaXRlc3BhY2UoKXtjb25zdCBjPXRoaXMuaSxtPXRoaXMuc2tpcFNwYWNlcygpO3N3aXRjaCh0aGlzLnByZXZJIT09YyYmKHRoaXMueG1sRGVjbFBvc3NpYmxlPSExKSxtKXtjYXNlIDYwOmlmKHRoaXMuc3RhdGU9MTUsMCE9PXRoaXMudGV4dC5s'@; put 'ZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJuby1lbXB0eSB0ZXh0IGF0IHN0YXJ0Iik7YnJlYWs7Y2FzZS0xOmJyZWFrO2RlZmF1bHQ6dGhpcy51bmdldCgpLHRoaXMuc3RhdGU9MTMsdGhpcy54bWxEZWNsUG9zc2libGU9ITF9fXNEb2N0eXBlKCl7dmFyIGM7Y29uc3QgbT10aGlzLmNhcHR1cmVU'@; put 'byhOKTtzd2l0Y2gobSl7Y2FzZSA2MjpudWxsPT09KGM9dGhpcy5kb2N0eXBlSGFuZGxlcil8fHZvaWQgMD09PWN8fGMuY2FsbCh0aGlzLHRoaXMudGV4dCksdGhpcy50ZXh0PSIiLHRoaXMuc3RhdGU9MTMsdGhpcy5kb2N0eXBlPSEwO2JyZWFrO2Nhc2UtMTpicmVhaztkZWZhdWx0OnRoaXMu'@; put 'dGV4dCs9U3RyaW5nLmZyb21Db2RlUG9pbnQobSksOTE9PT1tP3RoaXMuc3RhdGU9NDpJKG0pJiYodGhpcy5zdGF0ZT0zLHRoaXMucT1tKX19c0RvY3R5cGVRdW90ZSgpe2NvbnN0IGM9dGhpcy5xO3RoaXMuY2FwdHVyZVRvQ2hhcihjKSYmKHRoaXMudGV4dCs9U3RyaW5nLmZyb21Db2RlUG9p'@; put 'bnQoYyksdGhpcy5xPW51bGwsdGhpcy5zdGF0ZT0yKX1zRFREKCl7Y29uc3QgYz10aGlzLmNhcHR1cmVUbyhQKTstMSE9PWMmJih0aGlzLnRleHQrPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpLDkzPT09Yz90aGlzLnN0YXRlPTI6NjA9PT1jP3RoaXMuc3RhdGU9NjpJKGMpJiYodGhpcy5zdGF0'@; put 'ZT01LHRoaXMucT1jKSl9c0RURFF1b3RlZCgpe2NvbnN0IGM9dGhpcy5xO3RoaXMuY2FwdHVyZVRvQ2hhcihjKSYmKHRoaXMudGV4dCs9U3RyaW5nLmZyb21Db2RlUG9pbnQoYyksdGhpcy5zdGF0ZT00LHRoaXMucT1udWxsKX1zRFRET3Blbldha2EoKXtjb25zdCBjPXRoaXMuZ2V0Q29kZU5v'@; put 'cm0oKTtzd2l0Y2godGhpcy50ZXh0Kz1TdHJpbmcuZnJvbUNvZGVQb2ludChjKSxjKXtjYXNlIDMzOnRoaXMuc3RhdGU9Nyx0aGlzLm9wZW5XYWthQmFuZz0iIjticmVhaztjYXNlIDYzOnRoaXMuc3RhdGU9MTE7YnJlYWs7ZGVmYXVsdDp0aGlzLnN0YXRlPTR9fXNEVERPcGVuV2FrYUJhbmco'@; put 'KXtjb25zdCBjPVN0cmluZy5mcm9tQ29kZVBvaW50KHRoaXMuZ2V0Q29kZU5vcm0oKSksbT10aGlzLm9wZW5XYWthQmFuZys9Yzt0aGlzLnRleHQrPWMsIi0iIT09bSYmKHRoaXMuc3RhdGU9Ii0tIj09PW0/ODo0LHRoaXMub3Blbldha2FCYW5nPSIiKX1zRFREQ29tbWVudCgpe3RoaXMuY2Fw'@; put 'dHVyZVRvQ2hhcig0NSkmJih0aGlzLnRleHQrPSItIix0aGlzLnN0YXRlPTkpfXNEVERDb21tZW50RW5kaW5nKCl7Y29uc3QgYz10aGlzLmdldENvZGVOb3JtKCk7dGhpcy50ZXh0Kz1TdHJpbmcuZnJvbUNvZGVQb2ludChjKSx0aGlzLnN0YXRlPTQ1PT09Yz8xMDo4fXNEVERDb21tZW50RW5k'@; put 'ZWQoKXtjb25zdCBjPXRoaXMuZ2V0Q29kZU5vcm0oKTt0aGlzLnRleHQrPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpLDYyPT09Yz90aGlzLnN0YXRlPTQ6KHRoaXMuZmFpbCgibWFsZm9ybWVkIGNvbW1lbnQuIiksdGhpcy5zdGF0ZT04KX1zRFREUEkoKXt0aGlzLmNhcHR1cmVUb0NoYXIoNjMp'@; put 'JiYodGhpcy50ZXh0Kz0iPyIsdGhpcy5zdGF0ZT0xMil9c0RURFBJRW5kaW5nKCl7Y29uc3QgYz10aGlzLmdldENvZGVOb3JtKCk7dGhpcy50ZXh0Kz1TdHJpbmcuZnJvbUNvZGVQb2ludChjKSw2Mj09PWMmJih0aGlzLnN0YXRlPTQpfXNUZXh0KCl7MCE9PXRoaXMudGFncy5sZW5ndGg/dGhp'@; put 'cy5oYW5kbGVUZXh0SW5Sb290KCk6dGhpcy5oYW5kbGVUZXh0T3V0c2lkZVJvb3QoKX1zRW50aXR5KCl7bGV0e2k6Y309dGhpcztjb25zdHtjaHVuazptfT10aGlzO3Q6Zm9yKDs7KXN3aXRjaCh0aGlzLmdldENvZGUoKSl7Y2FzZS0yOnRoaXMuZW50aXR5Kz1tLnNsaWNlKGMsdGhpcy5wcmV2'@; put 'SSkrIlxuIixjPXRoaXMuaTticmVhaztjYXNlIDU5Ontjb25zdHtlbnRpdHlSZXR1cm5TdGF0ZTpnfT10aGlzLHk9dGhpcy5lbnRpdHkrbS5zbGljZShjLHRoaXMucHJldkkpO2xldCB3O3RoaXMuc3RhdGU9ZywiIj09PXk/KHRoaXMuZmFpbCgiZW1wdHkgZW50aXR5IG5hbWUuIiksdz0iJjsi'@; put 'KToodz10aGlzLnBhcnNlRW50aXR5KHkpLHRoaXMuZW50aXR5PSIiKSwxMz09PWcmJnZvaWQgMD09PXRoaXMudGV4dEhhbmRsZXJ8fCh0aGlzLnRleHQrPXcpO2JyZWFrIHR9Y2FzZS0xOnRoaXMuZW50aXR5Kz1tLnNsaWNlKGMpO2JyZWFrIHR9fXNPcGVuV2FrYSgpe2NvbnN0IGM9dGhpcy5n'@; put 'ZXRDb2RlKCk7aWYoZShjKSl0aGlzLnN0YXRlPTM0LHRoaXMudW5nZXQoKSx0aGlzLnhtbERlY2xQb3NzaWJsZT0hMTtlbHNlIHN3aXRjaChjKXtjYXNlIDQ3OnRoaXMuc3RhdGU9NDMsdGhpcy54bWxEZWNsUG9zc2libGU9ITE7YnJlYWs7Y2FzZSAzMzp0aGlzLnN0YXRlPTE2LHRoaXMub3Bl'@; put 'bldha2FCYW5nPSIiLHRoaXMueG1sRGVjbFBvc3NpYmxlPSExO2JyZWFrO2Nhc2UgNjM6dGhpcy5zdGF0ZT0yMzticmVhaztkZWZhdWx0OnRoaXMuZmFpbCgiZGlzYWxsb3dlZCBjaGFyYWN0ZXIgaW4gdGFnIG5hbWUiKSx0aGlzLnN0YXRlPTEzLHRoaXMueG1sRGVjbFBvc3NpYmxlPSExfX1z'@; put 'T3Blbldha2FCYW5nKCl7c3dpdGNoKHRoaXMub3Blbldha2FCYW5nKz1TdHJpbmcuZnJvbUNvZGVQb2ludCh0aGlzLmdldENvZGVOb3JtKCkpLHRoaXMub3Blbldha2FCYW5nKXtjYXNlIltDREFUQVsiOnRoaXMuc2F3Um9vdHx8dGhpcy5yZXBvcnRlZFRleHRCZWZvcmVSb290fHwodGhpcy5m'@; put 'YWlsKCJ0ZXh0IGRhdGEgb3V0c2lkZSBvZiByb290IG5vZGUuIiksdGhpcy5yZXBvcnRlZFRleHRCZWZvcmVSb290PSEwKSx0aGlzLmNsb3NlZFJvb3QmJiF0aGlzLnJlcG9ydGVkVGV4dEFmdGVyUm9vdCYmKHRoaXMuZmFpbCgidGV4dCBkYXRhIG91dHNpZGUgb2Ygcm9vdCBub2RlLiIpLHRo'@; put 'aXMucmVwb3J0ZWRUZXh0QWZ0ZXJSb290PSEwKSx0aGlzLnN0YXRlPTIwLHRoaXMub3Blbldha2FCYW5nPSIiO2JyZWFrO2Nhc2UiLS0iOnRoaXMuc3RhdGU9MTcsdGhpcy5vcGVuV2FrYUJhbmc9IiI7YnJlYWs7Y2FzZSJET0NUWVBFIjp0aGlzLnN0YXRlPTIsKHRoaXMuZG9jdHlwZXx8dGhp'@; put 'cy5zYXdSb290KSYmdGhpcy5mYWlsKCJpbmFwcHJvcHJpYXRlbHkgbG9jYXRlZCBkb2N0eXBlIGRlY2xhcmF0aW9uLiIpLHRoaXMub3Blbldha2FCYW5nPSIiO2JyZWFrO2RlZmF1bHQ6dGhpcy5vcGVuV2FrYUJhbmcubGVuZ3RoPj03JiZ0aGlzLmZhaWwoImluY29ycmVjdCBzeW50YXguIil9'@; put 'fXNDb21tZW50KCl7dGhpcy5jYXB0dXJlVG9DaGFyKDQ1KSYmKHRoaXMuc3RhdGU9MTgpfXNDb21tZW50RW5kaW5nKCl7dmFyIGM7Y29uc3QgbT10aGlzLmdldENvZGVOb3JtKCk7NDU9PT1tPyh0aGlzLnN0YXRlPTE5LG51bGw9PT0oYz10aGlzLmNvbW1lbnRIYW5kbGVyKXx8dm9pZCAwPT09'@; put 'Y3x8Yy5jYWxsKHRoaXMsdGhpcy50ZXh0KSx0aGlzLnRleHQ9IiIpOih0aGlzLnRleHQrPSItIitTdHJpbmcuZnJvbUNvZGVQb2ludChtKSx0aGlzLnN0YXRlPTE3KX1zQ29tbWVudEVuZGVkKCl7Y29uc3QgYz10aGlzLmdldENvZGVOb3JtKCk7NjIhPT1jPyh0aGlzLmZhaWwoIm1hbGZvcm1l'@; put 'ZCBjb21tZW50LiIpLHRoaXMudGV4dCs9Ii0tIitTdHJpbmcuZnJvbUNvZGVQb2ludChjKSx0aGlzLnN0YXRlPTE3KTp0aGlzLnN0YXRlPTEzfXNDRGF0YSgpe3RoaXMuY2FwdHVyZVRvQ2hhcig5MykmJih0aGlzLnN0YXRlPTIxKX1zQ0RhdGFFbmRpbmcoKXtjb25zdCBjPXRoaXMuZ2V0Q29k'@; put 'ZU5vcm0oKTs5Mz09PWM/dGhpcy5zdGF0ZT0yMjoodGhpcy50ZXh0Kz0iXSIrU3RyaW5nLmZyb21Db2RlUG9pbnQoYyksdGhpcy5zdGF0ZT0yMCl9c0NEYXRhRW5kaW5nMigpe3ZhciBjO2NvbnN0IG09dGhpcy5nZXRDb2RlTm9ybSgpO3N3aXRjaChtKXtjYXNlIDYyOm51bGw9PT0oYz10aGlz'@; put 'LmNkYXRhSGFuZGxlcil8fHZvaWQgMD09PWN8fGMuY2FsbCh0aGlzLHRoaXMudGV4dCksdGhpcy50ZXh0PSIiLHRoaXMuc3RhdGU9MTM7YnJlYWs7Y2FzZSA5Mzp0aGlzLnRleHQrPSJdIjticmVhaztkZWZhdWx0OnRoaXMudGV4dCs9Il1dIitTdHJpbmcuZnJvbUNvZGVQb2ludChtKSx0aGlz'@; put 'LnN0YXRlPTIwfX1zUElGaXJzdENoYXIoKXtjb25zdCBjPXRoaXMuZ2V0Q29kZU5vcm0oKTt0aGlzLm5hbWVTdGFydENoZWNrKGMpPyh0aGlzLnBpVGFyZ2V0Kz1TdHJpbmcuZnJvbUNvZGVQb2ludChjKSx0aGlzLnN0YXRlPTI0KTo2Mz09PWN8fHIoYyk/KHRoaXMuZmFpbCgicHJvY2Vzc2lu'@; put 'ZyBpbnN0cnVjdGlvbiB3aXRob3V0IGEgdGFyZ2V0LiIpLHRoaXMuc3RhdGU9NjM9PT1jPzI2OjI1KToodGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3RlciBpbiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5hbWUuIiksdGhpcy5waVRhcmdldCs9U3RyaW5nLmZyb21Db2RlUG9pbnQoYyks'@; put 'dGhpcy5zdGF0ZT0yNCl9c1BJUmVzdCgpe2NvbnN0e2NodW5rOmMsaTptfT10aGlzO2Zvcig7Oyl7Y29uc3QgZz10aGlzLmdldENvZGVOb3JtKCk7aWYoLTE9PT1nKXJldHVybiB2b2lkKHRoaXMucGlUYXJnZXQrPWMuc2xpY2UobSkpO2lmKCF0aGlzLm5hbWVDaGVjayhnKSl7dGhpcy5waVRh'@; put 'cmdldCs9Yy5zbGljZShtLHRoaXMucHJldkkpO2NvbnN0IHk9NjM9PT1nO3l8fHIoZyk/InhtbCI9PT10aGlzLnBpVGFyZ2V0Pyh0aGlzLnhtbERlY2xQb3NzaWJsZXx8dGhpcy5mYWlsKCJhbiBYTUwgZGVjbGFyYXRpb24gbXVzdCBiZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGRvY3VtZW50LiIp'@; put 'LHRoaXMuc3RhdGU9eT8zMzoyNyk6dGhpcy5zdGF0ZT15PzI2OjI1Oih0aGlzLmZhaWwoImRpc2FsbG93ZWQgY2hhcmFjdGVyIGluIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbmFtZS4iKSx0aGlzLnBpVGFyZ2V0Kz1TdHJpbmcuZnJvbUNvZGVQb2ludChnKSk7YnJlYWt9fX1zUElCb2R5KCl7'@; put 'aWYoMD09PXRoaXMudGV4dC5sZW5ndGgpe2NvbnN0IGM9dGhpcy5nZXRDb2RlTm9ybSgpOzYzPT09Yz90aGlzLnN0YXRlPTI2OnIoYyl8fCh0aGlzLnRleHQ9U3RyaW5nLmZyb21Db2RlUG9pbnQoYykpfWVsc2UgdGhpcy5jYXB0dXJlVG9DaGFyKDYzKSYmKHRoaXMuc3RhdGU9MjYpfXNQSUVu'@; put 'ZGluZygpe3ZhciBjO2NvbnN0IG09dGhpcy5nZXRDb2RlTm9ybSgpO2lmKDYyPT09bSl7Y29uc3R7cGlUYXJnZXQ6Z309dGhpczsieG1sIj09PWcudG9Mb3dlckNhc2UoKSYmdGhpcy5mYWlsKCJ0aGUgWE1MIGRlY2xhcmF0aW9uIG11c3QgYXBwZWFyIGF0IHRoZSBzdGFydCBvZiB0aGUgZG9j'@; put 'dW1lbnQuIiksbnVsbD09PShjPXRoaXMucGlIYW5kbGVyKXx8dm9pZCAwPT09Y3x8Yy5jYWxsKHRoaXMse3RhcmdldDpnLGJvZHk6dGhpcy50ZXh0fSksdGhpcy5waVRhcmdldD10aGlzLnRleHQ9IiIsdGhpcy5zdGF0ZT0xM31lbHNlIDYzPT09bT90aGlzLnRleHQrPSI/IjoodGhpcy50ZXh0'@; put 'Kz0iPyIrU3RyaW5nLmZyb21Db2RlUG9pbnQobSksdGhpcy5zdGF0ZT0yNSk7dGhpcy54bWxEZWNsUG9zc2libGU9ITF9c1hNTERlY2xOYW1lU3RhcnQoKXtjb25zdCBjPXRoaXMuc2tpcFNwYWNlcygpOzYzIT09Yz8tMSE9PWMmJih0aGlzLnN0YXRlPTI4LHRoaXMubmFtZT1TdHJpbmcuZnJv'@; put 'bUNvZGVQb2ludChjKSk6dGhpcy5zdGF0ZT0zM31zWE1MRGVjbE5hbWUoKXtjb25zdCBjPXRoaXMuY2FwdHVyZVRvKEIpO2lmKDYzPT09YylyZXR1cm4gdGhpcy5zdGF0ZT0zMyx0aGlzLm5hbWUrPXRoaXMudGV4dCx0aGlzLnRleHQ9IiIsdm9pZCB0aGlzLmZhaWwoIlhNTCBkZWNsYXJhdGlv'@; put 'biBpcyBpbmNvbXBsZXRlLiIpO2lmKHIoYyl8fDYxPT09Yyl7aWYodGhpcy5uYW1lKz10aGlzLnRleHQsdGhpcy50ZXh0PSIiLCF0aGlzLnhtbERlY2xFeHBlY3RzLmluY2x1ZGVzKHRoaXMubmFtZSkpc3dpdGNoKHRoaXMubmFtZS5sZW5ndGgpe2Nhc2UgMDp0aGlzLmZhaWwoImRpZCBub3Qg'@; put 'ZXhwZWN0IGFueSBtb3JlIG5hbWUvdmFsdWUgcGFpcnMuIik7YnJlYWs7Y2FzZSAxOnRoaXMuZmFpbChgZXhwZWN0ZWQgdGhlIG5hbWUgJHt0aGlzLnhtbERlY2xFeHBlY3RzWzBdfS5gKTticmVhaztkZWZhdWx0OnRoaXMuZmFpbCgiZXhwZWN0ZWQgb25lIG9mICIrdGhpcy54bWxEZWNsRXhw'@; put 'ZWN0cy5qb2luKCIsICIpKX10aGlzLnN0YXRlPTYxPT09Yz8zMDoyOX19c1hNTERlY2xFcSgpe2NvbnN0IGM9dGhpcy5nZXRDb2RlTm9ybSgpO2lmKDYzPT09YylyZXR1cm4gdGhpcy5zdGF0ZT0zMyx2b2lkIHRoaXMuZmFpbCgiWE1MIGRlY2xhcmF0aW9uIGlzIGluY29tcGxldGUuIik7cihj'@; put 'KXx8KDYxIT09YyYmdGhpcy5mYWlsKCJ2YWx1ZSByZXF1aXJlZC4iKSx0aGlzLnN0YXRlPTMwKX1zWE1MRGVjbFZhbHVlU3RhcnQoKXtjb25zdCBjPXRoaXMuZ2V0Q29kZU5vcm0oKTtpZig2Mz09PWMpcmV0dXJuIHRoaXMuc3RhdGU9MzMsdm9pZCB0aGlzLmZhaWwoIlhNTCBkZWNsYXJhdGlv'@; put 'biBpcyBpbmNvbXBsZXRlLiIpO3IoYyl8fChJKGMpP3RoaXMucT1jOih0aGlzLmZhaWwoInZhbHVlIG11c3QgYmUgcXVvdGVkLiIpLHRoaXMucT0zMiksdGhpcy5zdGF0ZT0zMSl9c1hNTERlY2xWYWx1ZSgpe2NvbnN0IGM9dGhpcy5jYXB0dXJlVG8oW3RoaXMucSw2M10pO2lmKDYzPT09Yyly'@; put 'ZXR1cm4gdGhpcy5zdGF0ZT0zMyx0aGlzLnRleHQ9IiIsdm9pZCB0aGlzLmZhaWwoIlhNTCBkZWNsYXJhdGlvbiBpcyBpbmNvbXBsZXRlLiIpO2lmKC0xPT09YylyZXR1cm47Y29uc3QgbT10aGlzLnRleHQ7c3dpdGNoKHRoaXMudGV4dD0iIix0aGlzLm5hbWUpe2Nhc2UidmVyc2lvbiI6e3Ro'@; put 'aXMueG1sRGVjbEV4cGVjdHM9WyJlbmNvZGluZyIsInN0YW5kYWxvbmUiXTtjb25zdCBnPW07dGhpcy54bWxEZWNsLnZlcnNpb249ZywvXjFcLlswLTldKyQvLnRlc3QoZyk/dGhpcy5vcHQuZm9yY2VYTUxWZXJzaW9ufHx0aGlzLnNldFhNTFZlcnNpb24oZyk6dGhpcy5mYWlsKCJ2ZXJzaW9u'@; put 'IG51bWJlciBtdXN0IG1hdGNoIC9eMVxcLlswLTldKyQvLiIpO2JyZWFrfWNhc2UiZW5jb2RpbmciOi9eW0EtWmEtel1bQS1aYS16MC05Ll8tXSokLy50ZXN0KG0pfHx0aGlzLmZhaWwoImVuY29kaW5nIHZhbHVlIG11c3QgbWF0Y2ggL15bQS1aYS16MC05XVtBLVphLXowLTkuXy1dKiQvLiIp'@; put 'LHRoaXMueG1sRGVjbEV4cGVjdHM9WyJzdGFuZGFsb25lIl0sdGhpcy54bWxEZWNsLmVuY29kaW5nPW07YnJlYWs7Y2FzZSJzdGFuZGFsb25lIjoieWVzIiE9PW0mJiJubyIhPT1tJiZ0aGlzLmZhaWwoJ3N0YW5kYWxvbmUgdmFsdWUgbXVzdCBtYXRjaCAieWVzIiBvciAibm8iLicpLHRoaXMu'@; put 'eG1sRGVjbEV4cGVjdHM9W10sdGhpcy54bWxEZWNsLnN0YW5kYWxvbmU9bX10aGlzLm5hbWU9IiIsdGhpcy5zdGF0ZT0zMn1zWE1MRGVjbFNlcGFyYXRvcigpe2NvbnN0IGM9dGhpcy5nZXRDb2RlTm9ybSgpOzYzIT09Yz8ocihjKXx8KHRoaXMuZmFpbCgid2hpdGVzcGFjZSByZXF1aXJlZC4i'@; put 'KSx0aGlzLnVuZ2V0KCkpLHRoaXMuc3RhdGU9MjcpOnRoaXMuc3RhdGU9MzN9c1hNTERlY2xFbmRpbmcoKXt2YXIgYzs2Mj09PXRoaXMuZ2V0Q29kZU5vcm0oKT8oInhtbCIhPT10aGlzLnBpVGFyZ2V0P3RoaXMuZmFpbCgicHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYXJlIG5vdCBhbGxvd2Vk'@; put 'IGJlZm9yZSByb290LiIpOiJ2ZXJzaW9uIiE9PXRoaXMubmFtZSYmdGhpcy54bWxEZWNsRXhwZWN0cy5pbmNsdWRlcygidmVyc2lvbiIpJiZ0aGlzLmZhaWwoIlhNTCBkZWNsYXJhdGlvbiBtdXN0IGNvbnRhaW4gYSB2ZXJzaW9uLiIpLG51bGw9PT0oYz10aGlzLnhtbGRlY2xIYW5kbGVyKXx8'@; put 'dm9pZCAwPT09Y3x8Yy5jYWxsKHRoaXMsdGhpcy54bWxEZWNsKSx0aGlzLm5hbWU9IiIsdGhpcy5waVRhcmdldD10aGlzLnRleHQ9IiIsdGhpcy5zdGF0ZT0xMyk6dGhpcy5mYWlsKCJUaGUgY2hhcmFjdGVyID8gaXMgZGlzYWxsb3dlZCBhbnl3aGVyZSBpbiBYTUwgZGVjbGFyYXRpb25zLiIp'@; put 'LHRoaXMueG1sRGVjbFBvc3NpYmxlPSExfXNPcGVuVGFnKCl7dmFyIGM7Y29uc3QgbT10aGlzLmNhcHR1cmVOYW1lQ2hhcnMoKTtpZigtMT09PW0pcmV0dXJuO2NvbnN0IGc9dGhpcy50YWc9e25hbWU6dGhpcy5uYW1lLGF0dHJpYnV0ZXM6T2JqZWN0LmNyZWF0ZShudWxsKX07c3dpdGNoKHRo'@; put 'aXMubmFtZT0iIix0aGlzLnhtbG5zT3B0JiYodGhpcy50b3BOUz1nLm5zPU9iamVjdC5jcmVhdGUobnVsbCkpLG51bGw9PT0oYz10aGlzLm9wZW5UYWdTdGFydEhhbmRsZXIpfHx2b2lkIDA9PT1jfHxjLmNhbGwodGhpcyxnKSx0aGlzLnNhd1Jvb3Q9ITAsIXRoaXMuZnJhZ21lbnRPcHQmJnRo'@; put 'aXMuY2xvc2VkUm9vdCYmdGhpcy5mYWlsKCJkb2N1bWVudHMgbWF5IGNvbnRhaW4gb25seSBvbmUgcm9vdC4iKSxtKXtjYXNlIDYyOnRoaXMub3BlblRhZygpO2JyZWFrO2Nhc2UgNDc6dGhpcy5zdGF0ZT0zNTticmVhaztkZWZhdWx0OnIobSl8fHRoaXMuZmFpbCgiZGlzYWxsb3dlZCBjaGFy'@; put 'YWN0ZXIgaW4gdGFnIG5hbWUuIiksdGhpcy5zdGF0ZT0zNn19c09wZW5UYWdTbGFzaCgpezYyPT09dGhpcy5nZXRDb2RlKCk/dGhpcy5vcGVuU2VsZkNsb3NpbmdUYWcoKToodGhpcy5mYWlsKCJmb3J3YXJkLXNsYXNoIGluIG9wZW5pbmcgdGFnIG5vdCBmb2xsb3dlZCBieSA+LiIpLHRoaXMu'@; put 'c3RhdGU9MzYpfXNBdHRyaWIoKXtjb25zdCBjPXRoaXMuc2tpcFNwYWNlcygpOy0xIT09YyYmKGUoYyk/KHRoaXMudW5nZXQoKSx0aGlzLnN0YXRlPTM3KTo2Mj09PWM/dGhpcy5vcGVuVGFnKCk6NDc9PT1jP3RoaXMuc3RhdGU9MzU6dGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3RlciBp'@; put 'biBhdHRyaWJ1dGUgbmFtZS4iKSl9c0F0dHJpYk5hbWUoKXtjb25zdCBjPXRoaXMuY2FwdHVyZU5hbWVDaGFycygpOzYxPT09Yz90aGlzLnN0YXRlPTM5OnIoYyk/dGhpcy5zdGF0ZT0zODo2Mj09PWM/KHRoaXMuZmFpbCgiYXR0cmlidXRlIHdpdGhvdXQgdmFsdWUuIiksdGhpcy5wdXNoQXR0'@; put 'cmliKHRoaXMubmFtZSx0aGlzLm5hbWUpLHRoaXMubmFtZT10aGlzLnRleHQ9IiIsdGhpcy5vcGVuVGFnKCkpOi0xIT09YyYmdGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3RlciBpbiBhdHRyaWJ1dGUgbmFtZS4iKX1zQXR0cmliTmFtZVNhd1doaXRlKCl7Y29uc3QgYz10aGlzLnNraXBT'@; put 'cGFjZXMoKTtzd2l0Y2goYyl7Y2FzZS0xOnJldHVybjtjYXNlIDYxOnRoaXMuc3RhdGU9Mzk7YnJlYWs7ZGVmYXVsdDp0aGlzLmZhaWwoImF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlLiIpLHRoaXMudGV4dD0iIix0aGlzLm5hbWU9IiIsNjI9PT1jP3RoaXMub3BlblRhZygpOmUoYyk/KHRoaXMu'@; put 'dW5nZXQoKSx0aGlzLnN0YXRlPTM3KToodGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3RlciBpbiBhdHRyaWJ1dGUgbmFtZS4iKSx0aGlzLnN0YXRlPTM2KX19c0F0dHJpYlZhbHVlKCl7Y29uc3QgYz10aGlzLmdldENvZGVOb3JtKCk7SShjKT8odGhpcy5xPWMsdGhpcy5zdGF0ZT00MCk6'@; put 'cihjKXx8KHRoaXMuZmFpbCgidW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiIpLHRoaXMuc3RhdGU9NDIsdGhpcy51bmdldCgpKX1zQXR0cmliVmFsdWVRdW90ZWQoKXtjb25zdHtxOmMsY2h1bms6bX09dGhpcztsZXR7aTpnfT10aGlzO2Zvcig7Oylzd2l0Y2godGhpcy5nZXRDb2RlKCkpe2Nh'@; put 'c2UgYzpyZXR1cm4gdGhpcy5wdXNoQXR0cmliKHRoaXMubmFtZSx0aGlzLnRleHQrbS5zbGljZShnLHRoaXMucHJldkkpKSx0aGlzLm5hbWU9dGhpcy50ZXh0PSIiLHRoaXMucT1udWxsLHZvaWQodGhpcy5zdGF0ZT00MSk7Y2FzZSAzODpyZXR1cm4gdGhpcy50ZXh0Kz1tLnNsaWNlKGcsdGhp'@; put 'cy5wcmV2SSksdGhpcy5zdGF0ZT0xNCx2b2lkKHRoaXMuZW50aXR5UmV0dXJuU3RhdGU9NDApO2Nhc2UgMTA6Y2FzZS0yOmNhc2UgOTp0aGlzLnRleHQrPW0uc2xpY2UoZyx0aGlzLnByZXZJKSsiICIsZz10aGlzLmk7YnJlYWs7Y2FzZSA2MDpyZXR1cm4gdGhpcy50ZXh0Kz1tLnNsaWNlKGcs'@; put 'dGhpcy5wcmV2SSksdm9pZCB0aGlzLmZhaWwoImRpc2FsbG93ZWQgY2hhcmFjdGVyLiIpO2Nhc2UtMTpyZXR1cm4gdm9pZCh0aGlzLnRleHQrPW0uc2xpY2UoZykpfX1zQXR0cmliVmFsdWVDbG9zZWQoKXtjb25zdCBjPXRoaXMuZ2V0Q29kZU5vcm0oKTtyKGMpP3RoaXMuc3RhdGU9MzY6NjI9'@; put 'PT1jP3RoaXMub3BlblRhZygpOjQ3PT09Yz90aGlzLnN0YXRlPTM1OmUoYyk/KHRoaXMuZmFpbCgibm8gd2hpdGVzcGFjZSBiZXR3ZWVuIGF0dHJpYnV0ZXMuIiksdGhpcy51bmdldCgpLHRoaXMuc3RhdGU9MzcpOnRoaXMuZmFpbCgiZGlzYWxsb3dlZCBjaGFyYWN0ZXIgaW4gYXR0cmlidXRl'@; put 'IG5hbWUuIil9c0F0dHJpYlZhbHVlVW5xdW90ZWQoKXtjb25zdCBjPXRoaXMuY2FwdHVyZVRvKCQpO3N3aXRjaChjKXtjYXNlIDM4OnRoaXMuc3RhdGU9MTQsdGhpcy5lbnRpdHlSZXR1cm5TdGF0ZT00MjticmVhaztjYXNlIDYwOnRoaXMuZmFpbCgiZGlzYWxsb3dlZCBjaGFyYWN0ZXIuIik7'@; put 'YnJlYWs7Y2FzZS0xOmJyZWFrO2RlZmF1bHQ6dGhpcy50ZXh0LmluY2x1ZGVzKCJdXT4iKSYmdGhpcy5mYWlsKCd0aGUgc3RyaW5nICJdXT4iIGlzIGRpc2FsbG93ZWQgaW4gY2hhciBkYXRhLicpLHRoaXMucHVzaEF0dHJpYih0aGlzLm5hbWUsdGhpcy50ZXh0KSx0aGlzLm5hbWU9dGhpcy50'@; put 'ZXh0PSIiLDYyPT09Yz90aGlzLm9wZW5UYWcoKTp0aGlzLnN0YXRlPTM2fX1zQ2xvc2VUYWcoKXtjb25zdCBjPXRoaXMuY2FwdHVyZU5hbWVDaGFycygpOzYyPT09Yz90aGlzLmNsb3NlVGFnKCk6cihjKT90aGlzLnN0YXRlPTQ0Oi0xIT09YyYmdGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJh'@; put 'Y3RlciBpbiBjbG9zaW5nIHRhZy4iKX1zQ2xvc2VUYWdTYXdXaGl0ZSgpe3N3aXRjaCh0aGlzLnNraXBTcGFjZXMoKSl7Y2FzZSA2Mjp0aGlzLmNsb3NlVGFnKCk7YnJlYWs7Y2FzZS0xOmJyZWFrO2RlZmF1bHQ6dGhpcy5mYWlsKCJkaXNhbGxvd2VkIGNoYXJhY3RlciBpbiBjbG9zaW5nIHRh'@; put 'Zy4iKX19aGFuZGxlVGV4dEluUm9vdCgpe2xldHtpOmMsZm9yYmlkZGVuU3RhdGU6bX09dGhpcztjb25zdHtjaHVuazpnLHRleHRIYW5kbGVyOnl9PXRoaXM7dDpmb3IoOzspc3dpdGNoKHRoaXMuZ2V0Q29kZSgpKXtjYXNlIDYwOmlmKHRoaXMuc3RhdGU9MTUsdm9pZCAwIT09eSl7Y29uc3R7'@; put 'dGV4dDp3fT10aGlzLGs9Zy5zbGljZShjLHRoaXMucHJldkkpOzAhPT13Lmxlbmd0aD8oeSh3K2spLHRoaXMudGV4dD0iIik6MCE9PWsubGVuZ3RoJiZ5KGspfW09MDticmVhayB0O2Nhc2UgMzg6dGhpcy5zdGF0ZT0xNCx0aGlzLmVudGl0eVJldHVyblN0YXRlPTEzLHZvaWQgMCE9PXkmJih0'@; put 'aGlzLnRleHQrPWcuc2xpY2UoYyx0aGlzLnByZXZJKSksbT0wO2JyZWFrIHQ7Y2FzZSA5Mzpzd2l0Y2gobSl7Y2FzZSAwOm09MTticmVhaztjYXNlIDE6bT0yO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW1wb3NzaWJsZSBzdGF0ZSIpfWJyZWFrO2Nhc2Ug'@; put 'NjI6Mj09PW0mJnRoaXMuZmFpbCgndGhlIHN0cmluZyAiXV0+IiBpcyBkaXNhbGxvd2VkIGluIGNoYXIgZGF0YS4nKSxtPTA7YnJlYWs7Y2FzZS0yOnZvaWQgMCE9PXkmJih0aGlzLnRleHQrPWcuc2xpY2UoYyx0aGlzLnByZXZJKSsiXG4iKSxjPXRoaXMuaSxtPTA7YnJlYWs7Y2FzZS0xOnZv'@; put 'aWQgMCE9PXkmJih0aGlzLnRleHQrPWcuc2xpY2UoYykpO2JyZWFrIHQ7ZGVmYXVsdDptPTB9dGhpcy5mb3JiaWRkZW5TdGF0ZT1tfWhhbmRsZVRleHRPdXRzaWRlUm9vdCgpe2xldHtpOmN9PXRoaXM7Y29uc3R7Y2h1bms6bSx0ZXh0SGFuZGxlcjpnfT10aGlzO2xldCB5PSExO3Q6Zm9yKDs7'@; put 'KXtjb25zdCB3PXRoaXMuZ2V0Q29kZSgpO3N3aXRjaCh3KXtjYXNlIDYwOmlmKHRoaXMuc3RhdGU9MTUsdm9pZCAwIT09Zyl7Y29uc3R7dGV4dDprfT10aGlzLE89bS5zbGljZShjLHRoaXMucHJldkkpOzAhPT1rLmxlbmd0aD8oZyhrK08pLHRoaXMudGV4dD0iIik6MCE9PU8ubGVuZ3RoJiZn'@; put 'KE8pfWJyZWFrIHQ7Y2FzZSAzODp0aGlzLnN0YXRlPTE0LHRoaXMuZW50aXR5UmV0dXJuU3RhdGU9MTMsdm9pZCAwIT09ZyYmKHRoaXMudGV4dCs9bS5zbGljZShjLHRoaXMucHJldkkpKSx5PSEwO2JyZWFrIHQ7Y2FzZS0yOnZvaWQgMCE9PWcmJih0aGlzLnRleHQrPW0uc2xpY2UoYyx0aGlz'@; put 'LnByZXZJKSsiXG4iKSxjPXRoaXMuaTticmVhaztjYXNlLTE6dm9pZCAwIT09ZyYmKHRoaXMudGV4dCs9bS5zbGljZShjKSk7YnJlYWsgdDtkZWZhdWx0OnIodyl8fCh5PSEwKX19eSYmKHRoaXMuc2F3Um9vdHx8dGhpcy5yZXBvcnRlZFRleHRCZWZvcmVSb290fHwodGhpcy5mYWlsKCJ0ZXh0'@; put 'IGRhdGEgb3V0c2lkZSBvZiByb290IG5vZGUuIiksdGhpcy5yZXBvcnRlZFRleHRCZWZvcmVSb290PSEwKSx0aGlzLmNsb3NlZFJvb3QmJiF0aGlzLnJlcG9ydGVkVGV4dEFmdGVyUm9vdCYmKHRoaXMuZmFpbCgidGV4dCBkYXRhIG91dHNpZGUgb2Ygcm9vdCBub2RlLiIpLHRoaXMucmVwb3J0'@; put 'ZWRUZXh0QWZ0ZXJSb290PSEwKSl9cHVzaEF0dHJpYk5TKGMsbSl7dmFyIGc7Y29uc3R7cHJlZml4OnksbG9jYWw6d309dGhpcy5xbmFtZShjKSxrPXtuYW1lOmMscHJlZml4OnksbG9jYWw6dyx2YWx1ZTptfTtpZih0aGlzLmF0dHJpYkxpc3QucHVzaChrKSxudWxsPT09KGc9dGhpcy5hdHRy'@; put 'aWJ1dGVIYW5kbGVyKXx8dm9pZCAwPT09Z3x8Zy5jYWxsKHRoaXMsayksInhtbG5zIj09PXkpe2NvbnN0IE89bS50cmltKCk7IjEuMCI9PT10aGlzLmN1cnJlbnRYTUxWZXJzaW9uJiYiIj09PU8mJnRoaXMuZmFpbCgiaW52YWxpZCBhdHRlbXB0IHRvIHVuZGVmaW5lIHByZWZpeCBpbiBYTUwg'@; put 'MS4wIiksdGhpcy50b3BOU1t3XT1PLEQodGhpcyx3LE8pfWVsc2UgaWYoInhtbG5zIj09PWMpe2NvbnN0IE89bS50cmltKCk7dGhpcy50b3BOU1siIl09TyxEKHRoaXMsIiIsTyl9fXB1c2hBdHRyaWJQbGFpbihjLG0pe3ZhciBnO2NvbnN0IHk9e25hbWU6Yyx2YWx1ZTptfTt0aGlzLmF0dHJp'@; put 'Ykxpc3QucHVzaCh5KSxudWxsPT09KGc9dGhpcy5hdHRyaWJ1dGVIYW5kbGVyKXx8dm9pZCAwPT09Z3x8Zy5jYWxsKHRoaXMseSl9ZW5kKCl7dmFyIGMsbTt0aGlzLnNhd1Jvb3R8fHRoaXMuZmFpbCgiZG9jdW1lbnQgbXVzdCBjb250YWluIGEgcm9vdCBlbGVtZW50LiIpO2NvbnN0e3RhZ3M6'@; put 'Z309dGhpcztmb3IoO2cubGVuZ3RoPjA7KXtjb25zdCB3PWcucG9wKCk7dGhpcy5mYWlsKCJ1bmNsb3NlZCB0YWc6ICIrdy5uYW1lKX0wIT09dGhpcy5zdGF0ZSYmMTMhPT10aGlzLnN0YXRlJiZ0aGlzLmZhaWwoInVuZXhwZWN0ZWQgZW5kLiIpO2NvbnN0e3RleHQ6eX09dGhpcztyZXR1cm4g'@; put 'MCE9PXkubGVuZ3RoJiYobnVsbD09PShjPXRoaXMudGV4dEhhbmRsZXIpfHx2b2lkIDA9PT1jfHxjLmNhbGwodGhpcyx5KSx0aGlzLnRleHQ9IiIpLHRoaXMuX2Nsb3NlZD0hMCxudWxsPT09KG09dGhpcy5lbmRIYW5kbGVyKXx8dm9pZCAwPT09bXx8bS5jYWxsKHRoaXMpLHRoaXMuX2luaXQo'@; put 'KSx0aGlzfXJlc29sdmUoYyl7dmFyIG0sZztsZXQgeT10aGlzLnRvcE5TW2NdO2lmKHZvaWQgMCE9PXkpcmV0dXJuIHk7Y29uc3R7dGFnczp3fT10aGlzO2ZvcihsZXQgaz13Lmxlbmd0aC0xO2s+PTA7ay0tKWlmKHk9d1trXS5uc1tjXSx2b2lkIDAhPT15KXJldHVybiB5O3JldHVybiB5PXRo'@; put 'aXMubnNbY10sdm9pZCAwIT09eT95Om51bGw9PT0oZz0obT10aGlzLm9wdCkucmVzb2x2ZVByZWZpeCl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY2FsbChtLGMpfXFuYW1lKGMpe2NvbnN0IG09Yy5pbmRleE9mKCI6Iik7aWYoLTE9PT1tKXJldHVybntwcmVmaXg6IiIsbG9jYWw6Y307Y29uc3Qg'@; put 'Zz1jLnNsaWNlKG0rMSkseT1jLnNsaWNlKDAsbSk7cmV0dXJuKCIiPT09eXx8IiI9PT1nfHxnLmluY2x1ZGVzKCI6IikpJiZ0aGlzLmZhaWwoYG1hbGZvcm1lZCBuYW1lOiAke2N9LmApLHtwcmVmaXg6eSxsb2NhbDpnfX1wcm9jZXNzQXR0cmlic05TKCl7dmFyIGM7Y29uc3R7YXR0cmliTGlz'@; put 'dDptfT10aGlzLGc9dGhpcy50YWc7e2NvbnN0e3ByZWZpeDprLGxvY2FsOk99PXRoaXMucW5hbWUoZy5uYW1lKTtnLnByZWZpeD1rLGcubG9jYWw9Tztjb25zdCB6PWcudXJpPW51bGwhPT0oYz10aGlzLnJlc29sdmUoaykpJiZ2b2lkIDAhPT1jP2M6IiI7IiIhPT1rJiYoInhtbG5zIj09PWsm'@; put 'JnRoaXMuZmFpbCgndGFncyBtYXkgbm90IGhhdmUgInhtbG5zIiBhcyBwcmVmaXguJyksIiI9PT16JiYodGhpcy5mYWlsKGB1bmJvdW5kIG5hbWVzcGFjZSBwcmVmaXg6ICR7SlNPTi5zdHJpbmdpZnkoayl9LmApLGcudXJpPWspKX1pZigwPT09bS5sZW5ndGgpcmV0dXJuO2NvbnN0e2F0dHJp'@; put 'YnV0ZXM6eX09Zyx3PW5ldyBTZXQ7Zm9yKGNvbnN0IGsgb2YgbSl7Y29uc3R7bmFtZTpPLHByZWZpeDp6LGxvY2FsOlV9PWs7bGV0IFYsUjsiIj09PXo/KFY9InhtbG5zIj09PU8/djoiIixSPU8pOihWPXRoaXMucmVzb2x2ZSh6KSx2b2lkIDA9PT1WJiYodGhpcy5mYWlsKGB1bmJvdW5kIG5h'@; put 'bWVzcGFjZSBwcmVmaXg6ICR7SlNPTi5zdHJpbmdpZnkoeil9LmApLFY9eiksUj1geyR7Vn19JHtVfWApLHcuaGFzKFIpJiZ0aGlzLmZhaWwoYGR1cGxpY2F0ZSBhdHRyaWJ1dGU6ICR7Un0uYCksdy5hZGQoUiksay51cmk9Vix5W09dPWt9dGhpcy5hdHRyaWJMaXN0PVtdfXByb2Nlc3NBdHRy'@; put 'aWJzUGxhaW4oKXtjb25zdHthdHRyaWJMaXN0OmN9PXRoaXMsbT10aGlzLnRhZy5hdHRyaWJ1dGVzO2Zvcihjb25zdHtuYW1lOmcsdmFsdWU6eX1vZiBjKXZvaWQgMCE9PW1bZ10mJnRoaXMuZmFpbChgZHVwbGljYXRlIGF0dHJpYnV0ZTogJHtnfS5gKSxtW2ddPXk7dGhpcy5hdHRyaWJMaXN0'@; put 'PVtdfW9wZW5UYWcoKXt2YXIgYzt0aGlzLnByb2Nlc3NBdHRyaWJzKCk7Y29uc3R7dGFnczptfT10aGlzLGc9dGhpcy50YWc7Zy5pc1NlbGZDbG9zaW5nPSExLG51bGw9PT0oYz10aGlzLm9wZW5UYWdIYW5kbGVyKXx8dm9pZCAwPT09Y3x8Yy5jYWxsKHRoaXMsZyksbS5wdXNoKGcpLHRoaXMu'@; put 'c3RhdGU9MTMsdGhpcy5uYW1lPSIifW9wZW5TZWxmQ2xvc2luZ1RhZygpe3ZhciBjLG0sZzt0aGlzLnByb2Nlc3NBdHRyaWJzKCk7Y29uc3R7dGFnczp5fT10aGlzLHc9dGhpcy50YWc7dy5pc1NlbGZDbG9zaW5nPSEwLG51bGw9PT0oYz10aGlzLm9wZW5UYWdIYW5kbGVyKXx8dm9pZCAwPT09'@; put 'Y3x8Yy5jYWxsKHRoaXMsdyksbnVsbD09PShtPXRoaXMuY2xvc2VUYWdIYW5kbGVyKXx8dm9pZCAwPT09bXx8bS5jYWxsKHRoaXMsdyksbnVsbD09PSh0aGlzLnRhZz1udWxsIT09KGc9eVt5Lmxlbmd0aC0xXSkmJnZvaWQgMCE9PWc/ZzpudWxsKSYmKHRoaXMuY2xvc2VkUm9vdD0hMCksdGhp'@; put 'cy5zdGF0ZT0xMyx0aGlzLm5hbWU9IiJ9Y2xvc2VUYWcoKXtjb25zdHt0YWdzOmMsbmFtZTptfT10aGlzO2lmKHRoaXMuc3RhdGU9MTMsdGhpcy5uYW1lPSIiLCIiPT09bSlyZXR1cm4gdGhpcy5mYWlsKCJ3ZWlyZCBlbXB0eSBjbG9zZSB0YWcuIiksdm9pZCh0aGlzLnRleHQrPSI8Lz4iKTtj'@; put 'b25zdCBnPXRoaXMuY2xvc2VUYWdIYW5kbGVyO2xldCB5PWMubGVuZ3RoO2Zvcig7eS0tID4wOyl7Y29uc3Qgdz10aGlzLnRhZz1jLnBvcCgpO2lmKHRoaXMudG9wTlM9dy5ucyxnPy4odyksdy5uYW1lPT09bSlicmVhazt0aGlzLmZhaWwoInVuZXhwZWN0ZWQgY2xvc2UgdGFnLiIpfTA9PT15'@; put 'P3RoaXMuY2xvc2VkUm9vdD0hMDp5PDAmJih0aGlzLmZhaWwoYHVubWF0Y2hlZCBjbG9zaW5nIHRhZzogJHttfS5gKSx0aGlzLnRleHQrPWA8LyR7bX0+YCl9cGFyc2VFbnRpdHkoYyl7aWYoIiMiIT09Y1swXSl7Y29uc3QgZz10aGlzLkVOVElUSUVTW2NdO3JldHVybiB2b2lkIDAhPT1nP2c6'@; put 'KHRoaXMuZmFpbCh0aGlzLmlzTmFtZShjKT8idW5kZWZpbmVkIGVudGl0eS4iOiJkaXNhbGxvd2VkIGNoYXJhY3RlciBpbiBlbnRpdHkgbmFtZS4iKSxgJiR7Y307YCl9bGV0IG09TmFOO3JldHVybiJ4Ij09PWNbMV0mJi9eI3hbMC05YS1mXSskL2kudGVzdChjKT9tPXBhcnNlSW50KGMuc2xp'@; put 'Y2UoMiksMTYpOi9eI1swLTldKyQvLnRlc3QoYykmJihtPXBhcnNlSW50KGMuc2xpY2UoMSksMTApKSx0aGlzLmlzQ2hhcihtKT9TdHJpbmcuZnJvbUNvZGVQb2ludChtKToodGhpcy5mYWlsKCJtYWxmb3JtZWQgY2hhcmFjdGVyIGVudGl0eS4iKSxgJiR7Y307YCl9fX0seyJ4bWxjaGFycy94'@; put 'bWwvMS4wL2VkNSI6NTQzLCJ4bWxjaGFycy94bWwvMS4xL2VkMiI6NTQ0LCJ4bWxjaGFycy94bWxucy8xLjAvZWQzIjo1NDV9XSw0OTc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygic2FmZS1idWZmZXIiKS5CdWZmZXI7ZnVuY3Rpb24gYShvLHIpe3RoaXMuX2Jsb2Nr'@; put 'PWIuYWxsb2MobyksdGhpcy5fZmluYWxTaXplPXIsdGhpcy5fYmxvY2tTaXplPW8sdGhpcy5fbGVuPTB9YS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKG8scil7InN0cmluZyI9PXR5cGVvZiBvJiYobz1iLmZyb20obyxyPXJ8fCJ1dGY4IikpO2Zvcih2YXIgdD10aGlzLl9ibG9jayxlPXRo'@; put 'aXMuX2Jsb2NrU2l6ZSxsPW8ubGVuZ3RoLG49dGhpcy5fbGVuLGk9MDtpPGw7KXtmb3IodmFyIGg9biVlLGY9TWF0aC5taW4obC1pLGUtaCksdT0wO3U8Zjt1KyspdFtoK3VdPW9baSt1XTtpKz1mLChuKz1mKSVlPT0wJiZ0aGlzLl91cGRhdGUodCl9cmV0dXJuIHRoaXMuX2xlbis9bCx0aGlz'@; put 'fSxhLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24obyl7dmFyIHI9dGhpcy5fbGVuJXRoaXMuX2Jsb2NrU2l6ZTt0aGlzLl9ibG9ja1tyXT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLHIrMSkscj49dGhpcy5fZmluYWxTaXplJiYodGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSx0aGlzLl9ibG9j'@; put 'ay5maWxsKDApKTt2YXIgdD04KnRoaXMuX2xlbjtpZih0PD00Mjk0OTY3Mjk1KXRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUodCx0aGlzLl9ibG9ja1NpemUtNCk7ZWxzZXt2YXIgZT0oNDI5NDk2NzI5NSZ0KT4+PjA7dGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRSgodC1lKS80Mjk0OTY3Mjk2'@; put 'LHRoaXMuX2Jsb2NrU2l6ZS04KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGUsdGhpcy5fYmxvY2tTaXplLTQpfXRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayk7dmFyIG49dGhpcy5faGFzaCgpO3JldHVybiBvP24udG9TdHJpbmcobyk6bn0sYS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlv'@; put 'bigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzIil9LEUuZXhwb3J0cz1hfSx7InNhZmUtYnVmZmVyIjo0OTR9XSw0OTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9RS5leHBvcnRzPWZ1bmN0aW9uKGEpe2E9YS50'@; put 'b0xvd2VyQ2FzZSgpO3ZhciBvPWJbYV07aWYoIW8pdGhyb3cgbmV3IEVycm9yKGErIiBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cykiKTtyZXR1cm4gbmV3IG99O2Iuc2hhPXMoIi4vc2hhIiksYi5zaGExPXMoIi4vc2hhMSIpLGIuc2hhMjI0PXMoIi4vc2hhMjI0'@; put 'IiksYi5zaGEyNTY9cygiLi9zaGEyNTYiKSxiLnNoYTM4ND1zKCIuL3NoYTM4NCIpLGIuc2hhNTEyPXMoIi4vc2hhNTEyIil9LHsiLi9zaGEiOjQ5OSwiLi9zaGExIjo1MDAsIi4vc2hhMjI0Ijo1MDEsIi4vc2hhMjU2Ijo1MDIsIi4vc2hhMzg0Ijo1MDMsIi4vc2hhNTEyIjo1MDR9XSw0OTk6'@; put 'W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiaW5oZXJpdHMiKSxhPXMoIi4vaGFzaCIpLG89cygic2FmZS1idWZmZXIiKS5CdWZmZXIscj1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLC0xODk0MDA3NTg4LC04OTk0OTc1MTRdLHQ9bmV3IEFycmF5KDgwKTtmdW5jdGlvbiBl'@; put 'KCl7dGhpcy5pbml0KCksdGhpcy5fdz10LGEuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBsKGkpe3JldHVybiBpPDwzMHxpPj4+Mn1mdW5jdGlvbiBuKGksaCxmLHUpe3JldHVybiAwPT09aT9oJmZ8fmgmdToyPT09aT9oJmZ8aCZ1fGYmdTpoXmZedX1iKGUsYSksZS5wcm90b3R5cGUuaW5p'@; put 'dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30sZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihpKXtmb3IodmFyIGgsZj10'@; put 'aGlzLl93LHU9MHx0aGlzLl9hLHA9MHx0aGlzLl9iLGQ9MHx0aGlzLl9jLHY9MHx0aGlzLl9kLF89MHx0aGlzLl9lLEE9MDtBPDE2OysrQSlmW0FdPWkucmVhZEludDMyQkUoNCpBKTtmb3IoO0E8ODA7KytBKWZbQV09ZltBLTNdXmZbQS04XV5mW0EtMTRdXmZbQS0xNl07Zm9yKHZhciBJPTA7'@; put 'STw4MDsrK0kpe3ZhciBMPX5+KEkvMjApLE49MHwoKGg9dSk8PDV8aD4+PjI3KStuKEwscCxkLHYpK18rZltJXStyW0xdO189dix2PWQsZD1sKHApLHA9dSx1PU59dGhpcy5fYT11K3RoaXMuX2F8MCx0aGlzLl9iPXArdGhpcy5fYnwwLHRoaXMuX2M9ZCt0aGlzLl9jfDAsdGhpcy5fZD12K3Ro'@; put 'aXMuX2R8MCx0aGlzLl9lPV8rdGhpcy5fZXwwfSxlLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBpPW8uYWxsb2NVbnNhZmUoMjApO3JldHVybiBpLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksaS53cml0ZUludDMyQkUoMHx0aGlzLl9iLDQpLGkud3JpdGVJbnQzMkJFKDB8dGhp'@; put 'cy5fYyw4KSxpLndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLGkud3JpdGVJbnQzMkJFKDB8dGhpcy5fZSwxNiksaX0sRS5leHBvcnRzPWV9LHsiLi9oYXNoIjo0OTcsaW5oZXJpdHM6NDQwLCJzYWZlLWJ1ZmZlciI6NDk0fV0sNTAwOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3Zh'@; put 'ciBiPXMoImluaGVyaXRzIiksYT1zKCIuL2hhc2giKSxvPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLHI9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSx0PW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24gZSgpe3RoaXMuaW5pdCgpLHRoaXMuX3c9dCxhLmNhbGwo'@; put 'dGhpcyw2NCw1Nil9ZnVuY3Rpb24gbChoKXtyZXR1cm4gaDw8NXxoPj4+Mjd9ZnVuY3Rpb24gbihoKXtyZXR1cm4gaDw8MzB8aD4+PjJ9ZnVuY3Rpb24gaShoLGYsdSxwKXtyZXR1cm4gMD09PWg/ZiZ1fH5mJnA6Mj09PWg/ZiZ1fGYmcHx1JnA6Zl51XnB9YihlLGEpLGUucHJvdG90eXBlLmlu'@; put 'aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oaCl7Zm9yKHZhciBmLHU9'@; put 'dGhpcy5fdyxwPTB8dGhpcy5fYSxkPTB8dGhpcy5fYix2PTB8dGhpcy5fYyxfPTB8dGhpcy5fZCxBPTB8dGhpcy5fZSxJPTA7STwxNjsrK0kpdVtJXT1oLnJlYWRJbnQzMkJFKDQqSSk7Zm9yKDtJPDgwOysrSSl1W0ldPShmPXVbSS0zXV51W0ktOF1edVtJLTE0XV51W0ktMTZdKTw8MXxmPj4+'@; put 'MzE7Zm9yKHZhciBMPTA7TDw4MDsrK0wpe3ZhciBOPX5+KEwvMjApLFA9bChwKStpKE4sZCx2LF8pK0ErdVtMXStyW05dfDA7QT1fLF89dix2PW4oZCksZD1wLHA9UH10aGlzLl9hPXArdGhpcy5fYXwwLHRoaXMuX2I9ZCt0aGlzLl9ifDAsdGhpcy5fYz12K3RoaXMuX2N8MCx0aGlzLl9kPV8r'@; put 'dGhpcy5fZHwwLHRoaXMuX2U9QSt0aGlzLl9lfDB9LGUucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGg9by5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIGgud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxoLndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksaC53cml0ZUludDMyQkUoMHx0'@; put 'aGlzLl9jLDgpLGgud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksaC53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxofSxFLmV4cG9ydHM9ZX0seyIuL2hhc2giOjQ5Nyxpbmhlcml0czo0NDAsInNhZmUtYnVmZmVyIjo0OTR9XSw1MDE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7'@; put 'dmFyIGI9cygiaW5oZXJpdHMiKSxhPXMoIi4vc2hhMjU2Iiksbz1zKCIuL2hhc2giKSxyPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLHQ9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBlKCl7dGhpcy5pbml0KCksdGhpcy5fdz10LG8uY2FsbCh0aGlzLDY0LDU2KX1iKGUsYSksZS5wcm90b3R5cGUu'@; put 'aW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTMyMzgzNzEwMzIsdGhpcy5fYj05MTQxNTA2NjMsdGhpcy5fYz04MTI3MDI5OTksdGhpcy5fZD00MTQ0OTEyNjk3LHRoaXMuX2U9NDI5MDc3NTg1Nyx0aGlzLl9mPTE3NTA2MDMwMjUsdGhpcy5fZz0xNjk0MDc2ODM5LHRoaXMuX2g9MzIw'@; put 'NDA3NTQyOCx0aGlzfSxlLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBsPXIuYWxsb2NVbnNhZmUoMjgpO3JldHVybiBsLndyaXRlSW50MzJCRSh0aGlzLl9hLDApLGwud3JpdGVJbnQzMkJFKHRoaXMuX2IsNCksbC53cml0ZUludDMyQkUodGhpcy5fYyw4KSxsLndyaXRlSW50MzJC'@; put 'RSh0aGlzLl9kLDEyKSxsLndyaXRlSW50MzJCRSh0aGlzLl9lLDE2KSxsLndyaXRlSW50MzJCRSh0aGlzLl9mLDIwKSxsLndyaXRlSW50MzJCRSh0aGlzLl9nLDI0KSxsfSxFLmV4cG9ydHM9ZX0seyIuL2hhc2giOjQ5NywiLi9zaGEyNTYiOjUwMixpbmhlcml0czo0NDAsInNhZmUtYnVmZmVy'@; put 'Ijo0OTR9XSw1MDI6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygiaW5oZXJpdHMiKSxhPXMoIi4vaGFzaCIpLG89cygic2FmZS1idWZmZXIiKS5CdWZmZXIscj1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3'@; put 'MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMs'@; put 'MTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1'@; put 'MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3'@; put 'Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSx0PW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24gZSgpe3Ro'@; put 'aXMuaW5pdCgpLHRoaXMuX3c9dCxhLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gbCh1LHAsZCl7cmV0dXJuIGRedSYocF5kKX1mdW5jdGlvbiBuKHUscCxkKXtyZXR1cm4gdSZwfGQmKHV8cCl9ZnVuY3Rpb24gaSh1KXtyZXR1cm4odT4+PjJ8dTw8MzApXih1Pj4+MTN8dTw8MTkpXih1Pj4+'@; put 'MjJ8dTw8MTApfWZ1bmN0aW9uIGgodSl7cmV0dXJuKHU+Pj42fHU8PDI2KV4odT4+PjExfHU8PDIxKV4odT4+PjI1fHU8PDcpfWZ1bmN0aW9uIGYodSl7cmV0dXJuKHU+Pj43fHU8PDI1KV4odT4+PjE4fHU8PDE0KV51Pj4+M31iKGUsYSksZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3Jl'@; put 'dHVybiB0aGlzLl9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAxMzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkzMTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sZS5w'@; put 'cm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih1KXtmb3IodmFyIHAsZD10aGlzLl93LHY9MHx0aGlzLl9hLF89MHx0aGlzLl9iLEE9MHx0aGlzLl9jLEk9MHx0aGlzLl9kLEw9MHx0aGlzLl9lLE49MHx0aGlzLl9mLFA9MHx0aGlzLl9nLEI9MHx0aGlzLl9oLCQ9MDskPDE2OysrJClkWyRdPXUu'@; put 'cmVhZEludDMyQkUoNCokKTtmb3IoOyQ8NjQ7KyskKWRbJF09MHwoKChwPWRbJC0yXSk+Pj4xN3xwPDwxNSleKHA+Pj4xOXxwPDwxMylecD4+PjEwKStkWyQtN10rZihkWyQtMTVdKStkWyQtMTZdO2Zvcih2YXIgRD0wO0Q8NjQ7KytEKXt2YXIgeD1CK2goTCkrbChMLE4sUCkrcltEXStkW0Rd'@; put 'fDAsTT1pKHYpK24odixfLEEpfDA7Qj1QLFA9TixOPUwsTD1JK3h8MCxJPUEsQT1fLF89dix2PXgrTXwwfXRoaXMuX2E9dit0aGlzLl9hfDAsdGhpcy5fYj1fK3RoaXMuX2J8MCx0aGlzLl9jPUErdGhpcy5fY3wwLHRoaXMuX2Q9SSt0aGlzLl9kfDAsdGhpcy5fZT1MK3RoaXMuX2V8MCx0aGlz'@; put 'Ll9mPU4rdGhpcy5fZnwwLHRoaXMuX2c9UCt0aGlzLl9nfDAsdGhpcy5faD1CK3RoaXMuX2h8MH0sZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgdT1vLmFsbG9jVW5zYWZlKDMyKTtyZXR1cm4gdS53cml0ZUludDMyQkUodGhpcy5fYSwwKSx1LndyaXRlSW50MzJCRSh0aGlzLl9i'@; put 'LDQpLHUud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksdS53cml0ZUludDMyQkUodGhpcy5fZCwxMiksdS53cml0ZUludDMyQkUodGhpcy5fZSwxNiksdS53cml0ZUludDMyQkUodGhpcy5fZiwyMCksdS53cml0ZUludDMyQkUodGhpcy5fZywyNCksdS53cml0ZUludDMyQkUodGhpcy5faCwyOCks'@; put 'dX0sRS5leHBvcnRzPWV9LHsiLi9oYXNoIjo0OTcsaW5oZXJpdHM6NDQwLCJzYWZlLWJ1ZmZlciI6NDk0fV0sNTAzOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoImluaGVyaXRzIiksYT1zKCIuL3NoYTUxMiIpLG89cygiLi9oYXNoIikscj1zKCJzYWZlLWJ1ZmZlciIp'@; put 'LkJ1ZmZlcix0PW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIGUoKXt0aGlzLmluaXQoKSx0aGlzLl93PXQsby5jYWxsKHRoaXMsMTI4LDExMil9YihlLGEpLGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlzLl9iaD0xNjU0MjcwMjUwLHRo'@; put 'aXMuX2NoPTI0Mzg1MjkzNzAsdGhpcy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05MTQxNTA2NjMsdGhpcy5fY2w9'@; put 'ODEyNzAyOTk5LHRoaXMuX2RsPTQxNDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSxlLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBsPXIuYWxsb2NVbnNhZmUo'@; put 'NDgpO2Z1bmN0aW9uIG4oaSxoLGYpe2wud3JpdGVJbnQzMkJFKGksZiksbC53cml0ZUludDMyQkUoaCxmKzQpfXJldHVybiBuKHRoaXMuX2FoLHRoaXMuX2FsLDApLG4odGhpcy5fYmgsdGhpcy5fYmwsOCksbih0aGlzLl9jaCx0aGlzLl9jbCwxNiksbih0aGlzLl9kaCx0aGlzLl9kbCwyNCks'@; put 'bih0aGlzLl9laCx0aGlzLl9lbCwzMiksbih0aGlzLl9maCx0aGlzLl9mbCw0MCksbH0sRS5leHBvcnRzPWV9LHsiLi9oYXNoIjo0OTcsIi4vc2hhNTEyIjo1MDQsaW5oZXJpdHM6NDQwLCJzYWZlLWJ1ZmZlciI6NDk0fV0sNTA0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBi'@; put 'PXMoImluaGVyaXRzIiksYT1zKCIuL2hhc2giKSxvPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLHI9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcy'@; put 'LDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0'@; put 'MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1'@; put 'OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5'@; put 'NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2'@; put 'NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0'@; put 'NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5'@; put 'Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIs'@; put 'MjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0'@; put 'MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEs'@; put 'MTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSx0PW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIGUoKXt0aGlz'@; put 'LmluaXQoKSx0aGlzLl93PXQsYS5jYWxsKHRoaXMsMTI4LDExMil9ZnVuY3Rpb24gbChfLEEsSSl7cmV0dXJuIEleXyYoQV5JKX1mdW5jdGlvbiBuKF8sQSxJKXtyZXR1cm4gXyZBfEkmKF98QSl9ZnVuY3Rpb24gaShfLEEpe3JldHVybihfPj4+Mjh8QTw8NCleKEE+Pj4yfF88PDMwKV4oQT4+'@; put 'Pjd8Xzw8MjUpfWZ1bmN0aW9uIGgoXyxBKXtyZXR1cm4oXz4+PjE0fEE8PDE4KV4oXz4+PjE4fEE8PDE0KV4oQT4+Pjl8Xzw8MjMpfWZ1bmN0aW9uIGYoXyxBKXtyZXR1cm4oXz4+PjF8QTw8MzEpXihfPj4+OHxBPDwyNCleXz4+Pjd9ZnVuY3Rpb24gdShfLEEpe3JldHVybihfPj4+MXxBPDwz'@; put 'MSleKF8+Pj44fEE8PDI0KV4oXz4+Pjd8QTw8MjUpfWZ1bmN0aW9uIHAoXyxBKXtyZXR1cm4oXz4+PjE5fEE8PDEzKV4oQT4+PjI5fF88PDMpXl8+Pj42fWZ1bmN0aW9uIGQoXyxBKXtyZXR1cm4oXz4+PjE5fEE8PDEzKV4oQT4+PjI5fF88PDMpXihfPj4+NnxBPDwyNil9ZnVuY3Rpb24gdihf'@; put 'LEEpe3JldHVybiBfPj4+MDxBPj4+MD8xOjB9YihlLGEpLGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MTc3OTAzMzcwMyx0aGlzLl9iaD0zMTQ0MTM0Mjc3LHRoaXMuX2NoPTEwMTM5MDQyNDIsdGhpcy5fZGg9Mjc3MzQ4MDc2Mix0aGlzLl9laD0xMzU5ODkz'@; put 'MTE5LHRoaXMuX2ZoPTI2MDA4MjI5MjQsdGhpcy5fZ2g9NTI4NzM0NjM1LHRoaXMuX2hoPTE1NDE0NTkyMjUsdGhpcy5fYWw9NDA4OTIzNTcyMCx0aGlzLl9ibD0yMjI3ODczNTk1LHRoaXMuX2NsPTQyNzExNzU3MjMsdGhpcy5fZGw9MTU5NTc1MDEyOSx0aGlzLl9lbD0yOTE3NTY1MTM3LHRo'@; put 'aXMuX2ZsPTcyNTUxMTE5OSx0aGlzLl9nbD00MjE1Mzg5NTQ3LHRoaXMuX2hsPTMyNzAzMzIwOSx0aGlzfSxlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKF8pe2Zvcih2YXIgQT10aGlzLl93LEk9MHx0aGlzLl9haCxMPTB8dGhpcy5fYmgsTj0wfHRoaXMuX2NoLFA9MHx0aGlzLl9kaCxC'@; put 'PTB8dGhpcy5fZWgsJD0wfHRoaXMuX2ZoLEQ9MHx0aGlzLl9naCx4PTB8dGhpcy5faGgsTT0wfHRoaXMuX2FsLGo9MHx0aGlzLl9ibCxjPTB8dGhpcy5fY2wsbT0wfHRoaXMuX2RsLGc9MHx0aGlzLl9lbCx5PTB8dGhpcy5fZmwsdz0wfHRoaXMuX2dsLGs9MHx0aGlzLl9obCxPPTA7TzwzMjtP'@; put 'Kz0yKUFbT109Xy5yZWFkSW50MzJCRSg0Kk8pLEFbTysxXT1fLnJlYWRJbnQzMkJFKDQqTys0KTtmb3IoO088MTYwO08rPTIpe3ZhciB6PUFbTy0zMF0sVT1BW08tMzArMV0sVj1mKHosVSksUj11KFUseiksSD1wKHo9QVtPLTRdLFU9QVtPLTQrMV0pLFQ9ZChVLHopLHE9QVtPLTMyXSxZPUFb'@; put 'Ty0zMisxXSxYPVIrQVtPLTE0KzFdfDAsSz1WK0FbTy0xNF0rdihYLFIpfDA7Sz0oSz1LK0grdihYPVgrVHwwLFQpfDApK3ErdihYPVgrWXwwLFkpfDAsQVtPXT1LLEFbTysxXT1YfWZvcih2YXIgcnQ9MDtydDwxNjA7cnQrPTIpe0s9QVtydF0sWD1BW3J0KzFdO3ZhciB0dD1uKEksTCxOKSxX'@; put 'PW4oTSxqLGMpLFE9aShJLE0pLEc9aShNLEkpLGV0PWgoQixnKSxudD1oKGcsQiksaXQ9cltydF0sb3Q9cltydCsxXSxodD1sKEIsJCxEKSxmdD1sKGcseSx3KSxwdD1rK250fDAsVHQ9eCtldCt2KHB0LGspfDA7VHQ9KFR0PShUdD1UdCtodCt2KHB0PXB0K2Z0fDAsZnQpfDApK2l0K3YocHQ9'@; put 'cHQrb3R8MCxvdCl8MCkrSyt2KHB0PXB0K1h8MCxYKXwwO3ZhciB5dD1HK1d8MCx3dD1RK3R0K3YoeXQsRyl8MDt4PUQsaz13LEQ9JCx3PXksJD1CLHk9ZyxCPVArVHQrdihnPW0rcHR8MCxtKXwwLFA9TixtPWMsTj1MLGM9aixMPUksaj1NLEk9VHQrd3QrdihNPXB0K3l0fDAscHQpfDB9dGhp'@; put 'cy5fYWw9dGhpcy5fYWwrTXwwLHRoaXMuX2JsPXRoaXMuX2JsK2p8MCx0aGlzLl9jbD10aGlzLl9jbCtjfDAsdGhpcy5fZGw9dGhpcy5fZGwrbXwwLHRoaXMuX2VsPXRoaXMuX2VsK2d8MCx0aGlzLl9mbD10aGlzLl9mbCt5fDAsdGhpcy5fZ2w9dGhpcy5fZ2wrd3wwLHRoaXMuX2hsPXRoaXMu'@; put 'X2hsK2t8MCx0aGlzLl9haD10aGlzLl9haCtJK3YodGhpcy5fYWwsTSl8MCx0aGlzLl9iaD10aGlzLl9iaCtMK3YodGhpcy5fYmwsail8MCx0aGlzLl9jaD10aGlzLl9jaCtOK3YodGhpcy5fY2wsYyl8MCx0aGlzLl9kaD10aGlzLl9kaCtQK3YodGhpcy5fZGwsbSl8MCx0aGlzLl9laD10aGlz'@; put 'Ll9laCtCK3YodGhpcy5fZWwsZyl8MCx0aGlzLl9maD10aGlzLl9maCskK3YodGhpcy5fZmwseSl8MCx0aGlzLl9naD10aGlzLl9naCtEK3YodGhpcy5fZ2wsdyl8MCx0aGlzLl9oaD10aGlzLl9oaCt4K3YodGhpcy5faGwsayl8MH0sZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIg'@; put 'Xz1vLmFsbG9jVW5zYWZlKDY0KTtmdW5jdGlvbiBBKEksTCxOKXtfLndyaXRlSW50MzJCRShJLE4pLF8ud3JpdGVJbnQzMkJFKEwsTis0KX1yZXR1cm4gQSh0aGlzLl9haCx0aGlzLl9hbCwwKSxBKHRoaXMuX2JoLHRoaXMuX2JsLDgpLEEodGhpcy5fY2gsdGhpcy5fY2wsMTYpLEEodGhpcy5f'@; put 'ZGgsdGhpcy5fZGwsMjQpLEEodGhpcy5fZWgsdGhpcy5fZWwsMzIpLEEodGhpcy5fZmgsdGhpcy5fZmwsNDApLEEodGhpcy5fZ2gsdGhpcy5fZ2wsNDgpLEEodGhpcy5faGgsdGhpcy5faGwsNTYpLF99LEUuZXhwb3J0cz1lfSx7Ii4vaGFzaCI6NDk3LGluaGVyaXRzOjQ0MCwic2FmZS1idWZm'@; put 'ZXIiOjQ5NH1dLDUwNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9YTt2YXIgYj1zKCJldmVudHMiKS5FdmVudEVtaXR0ZXI7ZnVuY3Rpb24gYSgpe2IuY2FsbCh0aGlzKX1zKCJpbmhlcml0cyIpKGEsYiksYS5SZWFkYWJsZT1zKCJyZWFkYWJsZS1zdHJlYW0vcmVh'@; put 'ZGFibGUuanMiKSxhLldyaXRhYmxlPXMoInJlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcyIpLGEuRHVwbGV4PXMoInJlYWRhYmxlLXN0cmVhbS9kdXBsZXguanMiKSxhLlRyYW5zZm9ybT1zKCJyZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzIiksYS5QYXNzVGhyb3VnaD1zKCJyZWFkYWJs'@; put 'ZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiKSxhLlN0cmVhbT1hLGEucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24obyxyKXt2YXIgdD10aGlzO2Z1bmN0aW9uIGUocCl7by53cml0YWJsZSYmITE9PT1vLndyaXRlKHApJiZ0LnBhdXNlJiZ0LnBhdXNlKCl9ZnVuY3Rpb24gbCgpe3QucmVhZGFibGUm'@; put 'JnQucmVzdW1lJiZ0LnJlc3VtZSgpfXQub24oImRhdGEiLGUpLG8ub24oImRyYWluIixsKSxvLl9pc1N0ZGlvfHxyJiYhMT09PXIuZW5kfHwodC5vbigiZW5kIixpKSx0Lm9uKCJjbG9zZSIsaCkpO3ZhciBuPSExO2Z1bmN0aW9uIGkoKXtufHwobj0hMCxvLmVuZCgpKX1mdW5jdGlvbiBoKCl7'@; put 'bnx8KG49ITAsImZ1bmN0aW9uIj09dHlwZW9mIG8uZGVzdHJveSYmby5kZXN0cm95KCkpfWZ1bmN0aW9uIGYocCl7aWYodSgpLDA9PT1iLmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKSl0aHJvdyBwfWZ1bmN0aW9uIHUoKXt0LnJlbW92ZUxpc3RlbmVyKCJkYXRhIixlKSxvLnJlbW92ZUxp'@; put 'c3RlbmVyKCJkcmFpbiIsbCksdC5yZW1vdmVMaXN0ZW5lcigiZW5kIixpKSx0LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsaCksdC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGYpLG8ucmVtb3ZlTGlzdGVuZXIoImVycm9yIixmKSx0LnJlbW92ZUxpc3RlbmVyKCJlbmQiLHUpLHQucmVtb3ZlTGlz'@; put 'dGVuZXIoImNsb3NlIix1KSxvLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsdSl9cmV0dXJuIHQub24oImVycm9yIixmKSxvLm9uKCJlcnJvciIsZiksdC5vbigiZW5kIix1KSx0Lm9uKCJjbG9zZSIsdSksby5vbigiY2xvc2UiLHUpLG8uZW1pdCgicGlwZSIsdCksb319LHtldmVudHM6NDIyLGlu'@; put 'aGVyaXRzOjQ0MCwicmVhZGFibGUtc3RyZWFtL2R1cGxleC5qcyI6NTA3LCJyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiOjUxNiwicmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIjo1MTcsInJlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiOjUxOCwicmVhZGFibGUtc3RyZWFt'@; put 'L3dyaXRhYmxlLmpzIjo1MTl9XSw1MDY6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9e30udG9TdHJpbmc7RS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PWIuY2FsbChhKX19LHt9XSw1MDc6W2Z1bmN0aW9uKHMs'@; put 'RSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPXMoIi4vbGliL19zdHJlYW1fZHVwbGV4LmpzIil9LHsiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiOjUwOH1dLDUwODpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1zKCJwcm9jZXNzLW5leHRpY2stYXJncyIpLGE9T2JqZWN0'@; put 'LmtleXN8fGZ1bmN0aW9uKHUpe3ZhciBwPVtdO2Zvcih2YXIgZCBpbiB1KXAucHVzaChkKTtyZXR1cm4gcH07RS5leHBvcnRzPWk7dmFyIG89T2JqZWN0LmNyZWF0ZShzKCJjb3JlLXV0aWwtaXMiKSk7by5pbmhlcml0cz1zKCJpbmhlcml0cyIpO3ZhciByPXMoIi4vX3N0cmVhbV9yZWFkYWJs'@; put 'ZSIpLHQ9cygiLi9fc3RyZWFtX3dyaXRhYmxlIik7by5pbmhlcml0cyhpLHIpO2Zvcih2YXIgZT1hKHQucHJvdG90eXBlKSxsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciBuPWVbbF07aS5wcm90b3R5cGVbbl18fChpLnByb3RvdHlwZVtuXT10LnByb3RvdHlwZVtuXSl9ZnVuY3Rpb24gaSh1KXtp'@; put 'ZighKHRoaXMgaW5zdGFuY2VvZiBpKSlyZXR1cm4gbmV3IGkodSk7ci5jYWxsKHRoaXMsdSksdC5jYWxsKHRoaXMsdSksdSYmITE9PT11LnJlYWRhYmxlJiYodGhpcy5yZWFkYWJsZT0hMSksdSYmITE9PT11LndyaXRhYmxlJiYodGhpcy53cml0YWJsZT0hMSksdGhpcy5hbGxvd0hhbGZPcGVu'@; put 'PSEwLHUmJiExPT09dS5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExKSx0aGlzLm9uY2UoImVuZCIsaCl9ZnVuY3Rpb24gaCgpe3RoaXMuYWxsb3dIYWxmT3Blbnx8dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8Yi5uZXh0VGljayhmLHRoaXMpfWZ1bmN0aW9uIGYodSl7'@; put 'dS5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoaS5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaS5w'@; put 'cm90b3R5cGUsImRlc3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9'@; put 'LHNldDpmdW5jdGlvbih1KXt2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9dSx0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD11KX19KSxpLnByb3RvdHlwZS5fZGVzdHJv'@; put 'eT1mdW5jdGlvbih1LHApe3RoaXMucHVzaChudWxsKSx0aGlzLmVuZCgpLGIubmV4dFRpY2socCx1KX19LHsiLi9fc3RyZWFtX3JlYWRhYmxlIjo1MTAsIi4vX3N0cmVhbV93cml0YWJsZSI6NTEyLCJjb3JlLXV0aWwtaXMiOjM4Myxpbmhlcml0czo0NDAsInByb2Nlc3MtbmV4dGljay1hcmdz'@; put 'Ijo0NjZ9XSw1MDk6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPW87dmFyIGI9cygiLi9fc3RyZWFtX3RyYW5zZm9ybSIpLGE9T2JqZWN0LmNyZWF0ZShzKCJjb3JlLXV0aWwtaXMiKSk7ZnVuY3Rpb24gbyhyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4g'@; put 'bmV3IG8ocik7Yi5jYWxsKHRoaXMscil9YS5pbmhlcml0cz1zKCJpbmhlcml0cyIpLGEuaW5oZXJpdHMobyxiKSxvLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHIsdCxlKXtlKG51bGwscil9fSx7Ii4vX3N0cmVhbV90cmFuc2Zvcm0iOjUxMSwiY29yZS11dGlsLWlzIjozODMsaW5o'@; put 'ZXJpdHM6NDQwfV0sNTEwOltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIsYSl7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBvPXMoInByb2Nlc3MtbmV4dGljay1hcmdzIik7RS5leHBvcnRzPUk7dmFyIHIsdD1zKCJpc2FycmF5Iik7SS5SZWFkYWJsZVN0YXRlPUEscygiZXZlbnRz'@; put 'Iik7dmFyIGU9ZnVuY3Rpb24oayxPKXtyZXR1cm4gay5saXN0ZW5lcnMoTykubGVuZ3RofSxsPXMoIi4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0iKSxuPXMoInNhZmUtYnVmZmVyIikuQnVmZmVyLGk9KHZvaWQgMCE9PWE/YTp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dHlwZW9mIHNlbGY8'@; put 'InUiP3NlbGY6e30pLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxoPU9iamVjdC5jcmVhdGUocygiY29yZS11dGlsLWlzIikpO2guaW5oZXJpdHM9cygiaW5oZXJpdHMiKTt2YXIgZj1zKCJ1dGlsIiksdT12b2lkIDA7dT1mJiZmLmRlYnVnbG9nP2YuZGVidWdsb2coInN0cmVhbSIpOmZ1bmN0'@; put 'aW9uKCl7fTt2YXIgcCxkPXMoIi4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Iiksdj1zKCIuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveSIpO2guaW5oZXJpdHMoSSxsKTt2YXIgXz1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiBBKGss'@; put 'Tyl7az1rfHx7fTt2YXIgej1PIGluc3RhbmNlb2Yocj1yfHxzKCIuL19zdHJlYW1fZHVwbGV4IikpO3RoaXMub2JqZWN0TW9kZT0hIWsub2JqZWN0TW9kZSx6JiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFrLnJlYWRhYmxlT2JqZWN0TW9kZSk7dmFyIFU9ay5oaWdoV2F0'@; put 'ZXJNYXJrLFY9ay5yZWFkYWJsZUhpZ2hXYXRlck1hcms7dGhpcy5oaWdoV2F0ZXJNYXJrPVV8fDA9PT1VP1U6eiYmKFZ8fDA9PT1WKT9WOnRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NCx0aGlzLmhpZ2hXYXRlck1hcms9TWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspLHRoaXMuYnVmZmVy'@; put 'PW5ldyBkLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0'@; put 'dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1rLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9'@; put 'ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLGsuZW5jb2RpbmcmJihwfHwocD1zKCJzdHJpbmdfZGVjb2Rlci8iKS5TdHJpbmdEZWNvZGVyKSx0aGlzLmRlY29kZXI9bmV3IHAoay5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1rLmVuY29kaW5nKX1mdW5jdGlvbiBJKGsp'@; put 'e2lmKHI9cnx8cygiLi9fc3RyZWFtX2R1cGxleCIpLCEodGhpcyBpbnN0YW5jZW9mIEkpKXJldHVybiBuZXcgSShrKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBBKGssdGhpcyksdGhpcy5yZWFkYWJsZT0hMCxrJiYoImZ1bmN0aW9uIj09dHlwZW9mIGsucmVhZCYmKHRoaXMuX3JlYWQ9ay5y'@; put 'ZWFkKSwiZnVuY3Rpb24iPT10eXBlb2Ygay5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1rLmRlc3Ryb3kpKSxsLmNhbGwodGhpcyl9ZnVuY3Rpb24gTChrLE8seixVLFYpe3ZhciBSLFQsQyxGLHEsSD1rLl9yZWFkYWJsZVN0YXRlO3JldHVybiBudWxsPT09Tz8oSC5yZWFkaW5nPSExLGZ1bmN0'@; put 'aW9uKFQsQyl7aWYoIUMuZW5kZWQpe2lmKEMuZGVjb2Rlcil7dmFyIEY9Qy5kZWNvZGVyLmVuZCgpO0YmJkYubGVuZ3RoJiYoQy5idWZmZXIucHVzaChGKSxDLmxlbmd0aCs9Qy5vYmplY3RNb2RlPzE6Ri5sZW5ndGgpfUMuZW5kZWQ9ITAsQihUKX19KGssSCkpOihWfHwoVD1ILG4uaXNCdWZm'@; put 'ZXIocT1DPU8pfHxxIGluc3RhbmNlb2YgaXx8InN0cmluZyI9PXR5cGVvZiBDfHx2b2lkIDA9PT1DfHxULm9iamVjdE1vZGV8fChGPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSksUj1GKSxSP2suZW1pdCgiZXJyb3IiLFIpOkgub2JqZWN0TW9kZXx8'@; put 'TyYmTy5sZW5ndGg+MD8oInN0cmluZyI9PXR5cGVvZiBPfHxILm9iamVjdE1vZGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihPKT09PW4ucHJvdG90eXBlfHwoTz1mdW5jdGlvbihUKXtyZXR1cm4gbi5mcm9tKFQpfShPKSksVT9ILmVuZEVtaXR0ZWQ/ay5lbWl0KCJlcnJvciIsbmV3IEVycm9y'@; put 'KCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpKTpOKGssSCxPLCEwKTpILmVuZGVkP2suZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSk6KEgucmVhZGluZz0hMSxILmRlY29kZXImJiF6PyhPPUguZGVjb2Rlci53cml0ZShPKSxILm9i'@; put 'amVjdE1vZGV8fDAhPT1PLmxlbmd0aD9OKGssSCxPLCExKTpEKGssSCkpOk4oayxILE8sITEpKSk6VXx8KEgucmVhZGluZz0hMSkpLGZ1bmN0aW9uKFQpe3JldHVybiFULmVuZGVkJiYoVC5uZWVkUmVhZGFibGV8fFQubGVuZ3RoPFQuaGlnaFdhdGVyTWFya3x8MD09PVQubGVuZ3RoKX0oSCl9'@; put 'ZnVuY3Rpb24gTihrLE8seixVKXtPLmZsb3dpbmcmJjA9PT1PLmxlbmd0aCYmIU8uc3luYz8oay5lbWl0KCJkYXRhIix6KSxrLnJlYWQoMCkpOihPLmxlbmd0aCs9Ty5vYmplY3RNb2RlPzE6ei5sZW5ndGgsVT9PLmJ1ZmZlci51bnNoaWZ0KHopOk8uYnVmZmVyLnB1c2goeiksTy5uZWVkUmVh'@; put 'ZGFibGUmJkIoaykpLEQoayxPKX1mdW5jdGlvbiBQKGssTyl7cmV0dXJuIGs8PTB8fDA9PT1PLmxlbmd0aCYmTy5lbmRlZD8wOk8ub2JqZWN0TW9kZT8xOmshPWs/Ty5mbG93aW5nJiZPLmxlbmd0aD9PLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOk8ubGVuZ3RoOihrPk8uaGlnaFdhdGVyTWFy'@; put 'ayYmKE8uaGlnaFdhdGVyTWFyaz0oKHo9ayk+PTgzODg2MDg/ej04Mzg4NjA4Oih6LS0senw9ej4+PjEsenw9ej4+PjIsenw9ej4+PjQsenw9ej4+Pjgsenw9ej4+PjE2LHorKykseikpLGs8PU8ubGVuZ3RoP2s6Ty5lbmRlZD9PLmxlbmd0aDooTy5uZWVkUmVhZGFibGU9ITAsMCkpO3ZhciB6'@; put 'fWZ1bmN0aW9uIEIoayl7dmFyIE89ay5fcmVhZGFibGVTdGF0ZTtPLm5lZWRSZWFkYWJsZT0hMSxPLmVtaXR0ZWRSZWFkYWJsZXx8KHUoImVtaXRSZWFkYWJsZSIsTy5mbG93aW5nKSxPLmVtaXR0ZWRSZWFkYWJsZT0hMCxPLnN5bmM/by5uZXh0VGljaygkLGspOiQoaykpfWZ1bmN0aW9uICQo'@; put 'ayl7dSgiZW1pdCByZWFkYWJsZSIpLGsuZW1pdCgicmVhZGFibGUiKSxjKGspfWZ1bmN0aW9uIEQoayxPKXtPLnJlYWRpbmdNb3JlfHwoTy5yZWFkaW5nTW9yZT0hMCxvLm5leHRUaWNrKHgsayxPKSl9ZnVuY3Rpb24geChrLE8pe2Zvcih2YXIgej1PLmxlbmd0aDshTy5yZWFkaW5nJiYhTy5m'@; put 'bG93aW5nJiYhTy5lbmRlZCYmTy5sZW5ndGg8Ty5oaWdoV2F0ZXJNYXJrJiYodSgibWF5YmVSZWFkTW9yZSByZWFkIDAiKSxrLnJlYWQoMCkseiE9PU8ubGVuZ3RoKTspej1PLmxlbmd0aDtPLnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIE0oayl7dSgicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAw'@; put 'Iiksay5yZWFkKDApfWZ1bmN0aW9uIGooayxPKXtPLnJlYWRpbmd8fCh1KCJyZXN1bWUgcmVhZCAwIiksay5yZWFkKDApKSxPLnJlc3VtZVNjaGVkdWxlZD0hMSxPLmF3YWl0RHJhaW49MCxrLmVtaXQoInJlc3VtZSIpLGMoayksTy5mbG93aW5nJiYhTy5yZWFkaW5nJiZrLnJlYWQoMCl9ZnVu'@; put 'Y3Rpb24gYyhrKXt2YXIgTz1rLl9yZWFkYWJsZVN0YXRlO2Zvcih1KCJmbG93IixPLmZsb3dpbmcpO08uZmxvd2luZyYmbnVsbCE9PWsucmVhZCgpOyk7fWZ1bmN0aW9uIG0oayxPKXtyZXR1cm4gMD09PU8ubGVuZ3RoP251bGw6KE8ub2JqZWN0TW9kZT96PU8uYnVmZmVyLnNoaWZ0KCk6IWt8'@; put 'fGs+PU8ubGVuZ3RoPyh6PU8uZGVjb2Rlcj9PLmJ1ZmZlci5qb2luKCIiKToxPT09Ty5idWZmZXIubGVuZ3RoP08uYnVmZmVyLmhlYWQuZGF0YTpPLmJ1ZmZlci5jb25jYXQoTy5sZW5ndGgpLE8uYnVmZmVyLmNsZWFyKCkpOihSPU8uZGVjb2RlciwoVT1rKTwoVj1PLmJ1ZmZlcikuaGVhZC5k'@; put 'YXRhLmxlbmd0aD8oSD1WLmhlYWQuZGF0YS5zbGljZSgwLFUpLFYuaGVhZC5kYXRhPVYuaGVhZC5kYXRhLnNsaWNlKFUpKTpIPVU9PT1WLmhlYWQuZGF0YS5sZW5ndGg/Vi5zaGlmdCgpOlI/ZnVuY3Rpb24oVCxDKXt2YXIgRj1DLmhlYWQscT0xLFk9Ri5kYXRhO2ZvcihULT1ZLmxlbmd0aDtG'@; put 'PUYubmV4dDspe3ZhciBYPUYuZGF0YSxLPVQ+WC5sZW5ndGg/WC5sZW5ndGg6VDtpZihZKz1LPT09WC5sZW5ndGg/WDpYLnNsaWNlKDAsVCksMD09PShULT1LKSl7Sz09PVgubGVuZ3RoPygrK3EsQy5oZWFkPUYubmV4dD9GLm5leHQ6Qy50YWlsPW51bGwpOihDLmhlYWQ9RixGLmRhdGE9WC5z'@; put 'bGljZShLKSk7YnJlYWt9KytxfXJldHVybiBDLmxlbmd0aC09cSxZfShVLFYpOmZ1bmN0aW9uKFQsQyl7dmFyIEY9bi5hbGxvY1Vuc2FmZShUKSxxPUMuaGVhZCxZPTE7Zm9yKHEuZGF0YS5jb3B5KEYpLFQtPXEuZGF0YS5sZW5ndGg7cT1xLm5leHQ7KXt2YXIgWD1xLmRhdGEsSz1UPlgubGVu'@; put 'Z3RoP1gubGVuZ3RoOlQ7aWYoWC5jb3B5KEYsRi5sZW5ndGgtVCwwLEspLDA9PT0oVC09Sykpe0s9PT1YLmxlbmd0aD8oKytZLEMuaGVhZD1xLm5leHQ/cS5uZXh0OkMudGFpbD1udWxsKTooQy5oZWFkPXEscS5kYXRhPVguc2xpY2UoSykpO2JyZWFrfSsrWX1yZXR1cm4gQy5sZW5ndGgtPVks'@; put 'Rn0oVSxWKSx6PUgpLHopO3ZhciBVLFYsUixILHp9ZnVuY3Rpb24gZyhrKXt2YXIgTz1rLl9yZWFkYWJsZVN0YXRlO2lmKE8ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCciZW5kUmVhZGFibGUoKSIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtPLmVuZEVtaXR0ZWR8fChPLmVuZGVk'@; put 'PSEwLG8ubmV4dFRpY2soeSxPLGspKX1mdW5jdGlvbiB5KGssTyl7ay5lbmRFbWl0dGVkfHwwIT09ay5sZW5ndGh8fChrLmVuZEVtaXR0ZWQ9ITAsTy5yZWFkYWJsZT0hMSxPLmVtaXQoImVuZCIpKX1mdW5jdGlvbiB3KGssTyl7Zm9yKHZhciB6PTAsVT1rLmxlbmd0aDt6PFU7eisrKWlmKGtb'@; put 'el09PT1PKXJldHVybiB6O3JldHVybi0xfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rp'@; put 'b24oayl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPWspfX0pLEkucHJvdG90eXBlLmRlc3Ryb3k9di5kZXN0cm95LEkucHJvdG90eXBlLl91bmRlc3Ryb3k9di51bmRlc3Ryb3ksSS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oayxPKXt0'@; put 'aGlzLnB1c2gobnVsbCksTyhrKX0sSS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihrLE8pe3ZhciB6LFU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gVS5vYmplY3RNb2RlP3o9ITA6InN0cmluZyI9PXR5cGVvZiBrJiYoKE89T3x8VS5kZWZhdWx0RW5jb2RpbmcpIT09VS5lbmNvZGluZyYm'@; put 'KGs9bi5mcm9tKGssTyksTz0iIiksej0hMCksTCh0aGlzLGssTywhMSx6KX0sSS5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihrKXtyZXR1cm4gTCh0aGlzLGssbnVsbCwhMCwhMSl9LEkucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0'@; put 'YXRlLmZsb3dpbmd9LEkucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKGspe3JldHVybiBwfHwocD1zKCJzdHJpbmdfZGVjb2Rlci8iKS5TdHJpbmdEZWNvZGVyKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9bmV3IHAoayksdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz1r'@; put 'LHRoaXN9LEkucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oayl7dSgicmVhZCIsayksaz1wYXJzZUludChrLDEwKTt2YXIgTz10aGlzLl9yZWFkYWJsZVN0YXRlLHo9aztpZigwIT09ayYmKE8uZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09ayYmTy5uZWVkUmVhZGFibGUmJihPLmxlbmd0aD49Ty5o'@; put 'aWdoV2F0ZXJNYXJrfHxPLmVuZGVkKSlyZXR1cm4gdSgicmVhZDogZW1pdFJlYWRhYmxlIixPLmxlbmd0aCxPLmVuZGVkKSwwPT09Ty5sZW5ndGgmJk8uZW5kZWQ/Zyh0aGlzKTpCKHRoaXMpLG51bGw7aWYoMD09PShrPVAoayxPKSkmJk8uZW5kZWQpcmV0dXJuIDA9PT1PLmxlbmd0aCYmZyh0'@; put 'aGlzKSxudWxsO3ZhciBVLFY9Ty5uZWVkUmVhZGFibGU7cmV0dXJuIHUoIm5lZWQgcmVhZGFibGUiLFYpLCgwPT09Ty5sZW5ndGh8fE8ubGVuZ3RoLWs8Ty5oaWdoV2F0ZXJNYXJrKSYmdSgibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLFY9ITApLE8uZW5kZWR8fE8ucmVhZGluZz91KCJy'@; put 'ZWFkaW5nIG9yIGVuZGVkIixWPSExKTpWJiYodSgiZG8gcmVhZCIpLE8ucmVhZGluZz0hMCxPLnN5bmM9ITAsMD09PU8ubGVuZ3RoJiYoTy5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQoTy5oaWdoV2F0ZXJNYXJrKSxPLnN5bmM9ITEsTy5yZWFkaW5nfHwoaz1QKHosTykpKSxudWxsPT09'@; put 'KFU9az4wP20oayxPKTpudWxsKT8oTy5uZWVkUmVhZGFibGU9ITAsaz0wKTpPLmxlbmd0aC09aywwPT09Ty5sZW5ndGgmJihPLmVuZGVkfHwoTy5uZWVkUmVhZGFibGU9ITApLHohPT1rJiZPLmVuZGVkJiZnKHRoaXMpKSxudWxsIT09VSYmdGhpcy5lbWl0KCJkYXRhIixVKSxVfSxJLnByb3Rv'@; put 'dHlwZS5fcmVhZD1mdW5jdGlvbihrKXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIl9yZWFkKCkgaXMgbm90IGltcGxlbWVudGVkIikpfSxJLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGssTyl7dmFyIHo9dGhpcyxVPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKFUucGlwZXNDb3Vu'@; put 'dCl7Y2FzZSAwOlUucGlwZXM9azticmVhaztjYXNlIDE6VS5waXBlcz1bVS5waXBlcyxrXTticmVhaztkZWZhdWx0OlUucGlwZXMucHVzaChrKX1VLnBpcGVzQ291bnQrPTEsdSgicGlwZSBjb3VudD0lZCBvcHRzPSVqIixVLnBpcGVzQ291bnQsTyk7dmFyIFY9TyYmITE9PT1PLmVuZHx8az09'@; put 'PWIuc3Rkb3V0fHxrPT09Yi5zdGRlcnI/cnQ6SDtmdW5jdGlvbiBIKCl7dSgib25lbmQiKSxrLmVuZCgpfVUuZW5kRW1pdHRlZD9vLm5leHRUaWNrKFYpOnoub25jZSgiZW5kIixWKSxrLm9uKCJ1bnBpcGUiLGZ1bmN0aW9uIFIodHQsVyl7dSgib251bnBpcGUiKSx0dD09PXomJlcmJiExPT09'@; put 'Vy5oYXNVbnBpcGVkJiYoVy5oYXNVbnBpcGVkPSEwLHUoImNsZWFudXAiKSxrLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsWCksay5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixLKSxrLnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsVCksay5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLFkpLGsucmVtb3Zl'@; put 'TGlzdGVuZXIoInVucGlwZSIsUiksei5yZW1vdmVMaXN0ZW5lcigiZW5kIixIKSx6LnJlbW92ZUxpc3RlbmVyKCJlbmQiLHJ0KSx6LnJlbW92ZUxpc3RlbmVyKCJkYXRhIixxKSxDPSEwLCFVLmF3YWl0RHJhaW58fGsuX3dyaXRhYmxlU3RhdGUmJiFrLl93cml0YWJsZVN0YXRlLm5lZWREcmFp'@; put 'bnx8VCgpKX0pO3ZhciBUPWZ1bmN0aW9uKHR0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgVz10dC5fcmVhZGFibGVTdGF0ZTt1KCJwaXBlT25EcmFpbiIsVy5hd2FpdERyYWluKSxXLmF3YWl0RHJhaW4mJlcuYXdhaXREcmFpbi0tLDA9PT1XLmF3YWl0RHJhaW4mJmUodHQsImRhdGEiKSYmKFcu'@; put 'Zmxvd2luZz0hMCxjKHR0KSl9fSh6KTtrLm9uKCJkcmFpbiIsVCk7dmFyIEM9ITEsRj0hMTtmdW5jdGlvbiBxKHR0KXt1KCJvbmRhdGEiKSxGPSExLCExIT09ay53cml0ZSh0dCl8fEZ8fCgoMT09PVUucGlwZXNDb3VudCYmVS5waXBlcz09PWt8fFUucGlwZXNDb3VudD4xJiYtMSE9PXcoVS5w'@; put 'aXBlcyxrKSkmJiFDJiYodSgiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixVLmF3YWl0RHJhaW4pLFUuYXdhaXREcmFpbisrLEY9ITApLHoucGF1c2UoKSl9ZnVuY3Rpb24gWSh0dCl7dSgib25lcnJvciIsdHQpLHJ0KCksay5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLFkpLDA9PT1lKGss'@; put 'ImVycm9yIikmJmsuZW1pdCgiZXJyb3IiLHR0KX1mdW5jdGlvbiBYKCl7ay5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixLKSxydCgpfWZ1bmN0aW9uIEsoKXt1KCJvbmZpbmlzaCIpLGsucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixYKSxydCgpfWZ1bmN0aW9uIHJ0KCl7dSgidW5waXBlIiksei51'@; put 'bnBpcGUoayl9cmV0dXJuIHoub24oImRhdGEiLHEpLGZ1bmN0aW9uKHR0LFcsUSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHR0LnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gdHQucHJlcGVuZExpc3RlbmVyKFcsUSk7dHQuX2V2ZW50cyYmdHQuX2V2ZW50c1tXXT90KHR0Ll9ldmVudHNbV10pP3R0'@; put 'Ll9ldmVudHNbV10udW5zaGlmdChRKTp0dC5fZXZlbnRzW1ddPVtRLHR0Ll9ldmVudHNbV11dOnR0Lm9uKFcsUSl9KGssImVycm9yIixZKSxrLm9uY2UoImNsb3NlIixYKSxrLm9uY2UoImZpbmlzaCIsSyksay5lbWl0KCJwaXBlIix6KSxVLmZsb3dpbmd8fCh1KCJwaXBlIHJlc3VtZSIpLHou'@; put 'cmVzdW1lKCkpLGt9LEkucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihrKXt2YXIgTz10aGlzLl9yZWFkYWJsZVN0YXRlLHo9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1PLnBpcGVzQ291bnQpcmV0dXJuIHRoaXM7aWYoMT09PU8ucGlwZXNDb3VudClyZXR1cm4gayYmayE9PU8ucGlwZXN8fChr'@; put 'fHwoaz1PLnBpcGVzKSxPLnBpcGVzPW51bGwsTy5waXBlc0NvdW50PTAsTy5mbG93aW5nPSExLGsmJmsuZW1pdCgidW5waXBlIix0aGlzLHopKSx0aGlzO2lmKCFrKXt2YXIgVT1PLnBpcGVzLFY9Ty5waXBlc0NvdW50O08ucGlwZXM9bnVsbCxPLnBpcGVzQ291bnQ9MCxPLmZsb3dpbmc9ITE7'@; put 'Zm9yKHZhciBSPTA7UjxWO1IrKylVW1JdLmVtaXQoInVucGlwZSIsdGhpcyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfXZhciBIPXcoTy5waXBlcyxrKTtyZXR1cm4tMT09PUh8fChPLnBpcGVzLnNwbGljZShILDEpLE8ucGlwZXNDb3VudC09MSwxPT09Ty5waXBlc0NvdW50JiYoTy5w'@; put 'aXBlcz1PLnBpcGVzWzBdKSxrLmVtaXQoInVucGlwZSIsdGhpcyx6KSksdGhpc30sSS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9SS5wcm90b3R5cGUub249ZnVuY3Rpb24oayxPKXt2YXIgej1sLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsayxPKTtpZigiZGF0YSI9PT1rKSExIT09dGhpcy5fcmVh'@; put 'ZGFibGVTdGF0ZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpO2Vsc2UgaWYoInJlYWRhYmxlIj09PWspe3ZhciBVPXRoaXMuX3JlYWRhYmxlU3RhdGU7VS5lbmRFbWl0dGVkfHxVLnJlYWRhYmxlTGlzdGVuaW5nfHwoVS5yZWFkYWJsZUxpc3RlbmluZz1VLm5lZWRSZWFkYWJsZT0hMCxVLmVtaXR0'@; put 'ZWRSZWFkYWJsZT0hMSxVLnJlYWRpbmc/VS5sZW5ndGgmJkIodGhpcyk6by5uZXh0VGljayhNLHRoaXMpKX1yZXR1cm4gen0sSS5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIHosaz10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBrLmZsb3dpbmd8fCh1KCJyZXN1bWUiKSxrLmZs'@; put 'b3dpbmc9ITAsKHo9aykucmVzdW1lU2NoZWR1bGVkfHwoei5yZXN1bWVTY2hlZHVsZWQ9ITAsby5uZXh0VGljayhqLHRoaXMseikpKSx0aGlzfSxJLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiB1KCJjYWxsIHBhdXNlIGZsb3dpbmc9JWoiLHRoaXMuX3JlYWRhYmxlU3RhdGUu'@; put 'Zmxvd2luZyksITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJih1KCJwYXVzZSIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoInBhdXNlIikpLHRoaXN9LEkucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oayl7dmFyIE89dGhpcyx6PXRoaXMuX3JlYWRh'@; put 'YmxlU3RhdGUsVT0hMTtmb3IodmFyIFYgaW4gay5vbigiZW5kIixmdW5jdGlvbigpe2lmKHUoIndyYXBwZWQgZW5kIiksei5kZWNvZGVyJiYhei5lbmRlZCl7dmFyIEg9ei5kZWNvZGVyLmVuZCgpO0gmJkgubGVuZ3RoJiZPLnB1c2goSCl9Ty5wdXNoKG51bGwpfSksay5vbigiZGF0YSIsZnVu'@; put 'Y3Rpb24oSCl7dSgid3JhcHBlZCBkYXRhIiksei5kZWNvZGVyJiYoSD16LmRlY29kZXIud3JpdGUoSCkpLHoub2JqZWN0TW9kZSYmbnVsbD09SHx8KHoub2JqZWN0TW9kZXx8SCYmSC5sZW5ndGgpJiYoTy5wdXNoKEgpfHwoVT0hMCxrLnBhdXNlKCkpKX0pLGspdm9pZCAwPT09dGhpc1tWXSYm'@; put 'ImZ1bmN0aW9uIj09dHlwZW9mIGtbVl0mJih0aGlzW1ZdPWZ1bmN0aW9uKEgpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBrW0hdLmFwcGx5KGssYXJndW1lbnRzKX19KFYpKTtmb3IodmFyIFI9MDtSPF8ubGVuZ3RoO1IrKylrLm9uKF9bUl0sdGhpcy5lbWl0LmJpbmQodGhpcyxfW1JdKSk7'@; put 'cmV0dXJuIHRoaXMuX3JlYWQ9ZnVuY3Rpb24oSCl7dSgid3JhcHBlZCBfcmVhZCIsSCksVSYmKFU9ITEsay5yZXN1bWUoKSl9LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLnByb3RvdHlwZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLEkuX2Zyb21MaXN0PW19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHMoIl9wcm9jZXNzIiksdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dp'@; put 'bmRvdzp7fSl9LHsiLi9fc3RyZWFtX2R1cGxleCI6NTA4LCIuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCI6NTEzLCIuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveSI6NTE0LCIuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtIjo1MTUsX3Byb2Nlc3M6NDY3LCJjb3JlLXV0aWwtaXMiOjM4'@; put 'MyxldmVudHM6NDIyLGluaGVyaXRzOjQ0MCxpc2FycmF5OjUwNiwicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOjQ2Niwic2FmZS1idWZmZXIiOjUyMCwic3RyaW5nX2RlY29kZXIvIjo1MjEsdXRpbDoxODh9XSw1MTE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPXI7dmFy'@; put 'IGI9cygiLi9fc3RyZWFtX2R1cGxleCIpLGE9T2JqZWN0LmNyZWF0ZShzKCJjb3JlLXV0aWwtaXMiKSk7ZnVuY3Rpb24gbyhsLG4pe3ZhciBpPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2kudHJhbnNmb3JtaW5nPSExO3ZhciBoPWkud3JpdGVjYjtpZighaClyZXR1cm4gdGhpcy5lbWl0KCJlcnJv'@; put 'ciIsbmV3IEVycm9yKCJ3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMiKSk7aS53cml0ZWNodW5rPW51bGwsaS53cml0ZWNiPW51bGwsbnVsbCE9biYmdGhpcy5wdXNoKG4pLGgobCk7dmFyIGY9dGhpcy5fcmVhZGFibGVTdGF0ZTtmLnJlYWRpbmc9ITEsKGYubmVlZFJlYWRh'@; put 'YmxlfHxmLmxlbmd0aDxmLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGYuaGlnaFdhdGVyTWFyayl9ZnVuY3Rpb24gcihsKXtpZighKHRoaXMgaW5zdGFuY2VvZiByKSlyZXR1cm4gbmV3IHIobCk7Yi5jYWxsKHRoaXMsbCksdGhpcy5fdHJhbnNmb3JtU3RhdGU9e2FmdGVyVHJhbnNmb3Jt'@; put 'Om8uYmluZCh0aGlzKSxuZWVkVHJhbnNmb3JtOiExLHRyYW5zZm9ybWluZzohMSx3cml0ZWNiOm51bGwsd3JpdGVjaHVuazpudWxsLHdyaXRlZW5jb2Rpbmc6bnVsbH0sdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGU9ITAsdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jPSExLGwmJigi'@; put 'ZnVuY3Rpb24iPT10eXBlb2YgbC50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09bC50cmFuc2Zvcm0pLCJmdW5jdGlvbiI9PXR5cGVvZiBsLmZsdXNoJiYodGhpcy5fZmx1c2g9bC5mbHVzaCkpLHRoaXMub24oInByZWZpbmlzaCIsdCl9ZnVuY3Rpb24gdCgpe3ZhciBsPXRoaXM7ImZ1bmN0'@; put 'aW9uIj09dHlwZW9mIHRoaXMuX2ZsdXNoP3RoaXMuX2ZsdXNoKGZ1bmN0aW9uKG4saSl7ZShsLG4saSl9KTplKHRoaXMsbnVsbCxudWxsKX1mdW5jdGlvbiBlKGwsbixpKXtpZihuKXJldHVybiBsLmVtaXQoImVycm9yIixuKTtpZihudWxsIT1pJiZsLnB1c2goaSksbC5fd3JpdGFibGVTdGF0'@; put 'ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAiKTtpZihsLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IEVycm9yKCJDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gc3RpbGwgdHJhbnNmb3Jt'@; put 'aW5nIik7cmV0dXJuIGwucHVzaChudWxsKX1hLmluaGVyaXRzPXMoImluaGVyaXRzIiksYS5pbmhlcml0cyhyLGIpLHIucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24obCxuKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT0hMSxiLnByb3RvdHlwZS5wdXNoLmNhbGwo'@; put 'dGhpcyxsLG4pfSxyLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGwsbixpKXt0aHJvdyBuZXcgRXJyb3IoIl90cmFuc2Zvcm0oKSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sci5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGwsbixpKXt2YXIgaD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtp'@; put 'ZihoLndyaXRlY2I9aSxoLndyaXRlY2h1bms9bCxoLndyaXRlZW5jb2Rpbmc9biwhaC50cmFuc2Zvcm1pbmcpe3ZhciBmPXRoaXMuX3JlYWRhYmxlU3RhdGU7KGgubmVlZFRyYW5zZm9ybXx8Zi5uZWVkUmVhZGFibGV8fGYubGVuZ3RoPGYuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoZi5o'@; put 'aWdoV2F0ZXJNYXJrKX19LHIucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKGwpe3ZhciBuPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGwhPT1uLndyaXRlY2h1bmsmJm4ud3JpdGVjYiYmIW4udHJhbnNmb3JtaW5nPyhuLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0obi53cml0ZWNo'@; put 'dW5rLG4ud3JpdGVlbmNvZGluZyxuLmFmdGVyVHJhbnNmb3JtKSk6bi5uZWVkVHJhbnNmb3JtPSEwfSxyLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihsLG4pe3ZhciBpPXRoaXM7Yi5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLGwsZnVuY3Rpb24oaCl7bihoKSxpLmVtaXQoImNs'@; put 'b3NlIil9KX19LHsiLi9fc3RyZWFtX2R1cGxleCI6NTA4LCJjb3JlLXV0aWwtaXMiOjM4Myxpbmhlcml0czo0NDB9XSw1MTI6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYixhLG8peyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj1zKCJwcm9jZXNzLW5leHRpY2stYXJncyIpO2Z1'@; put 'bmN0aW9uIHQoRCl7dmFyIHg9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24oTSxqKXt2YXIgbT1NLmVudHJ5O2ZvcihNLmVudHJ5PW51bGw7bTspe3ZhciBnPW0uY2FsbGJhY2s7ai5wZW5kaW5nY2ItLSxnKHVuZGVm'@; put 'aW5lZCksbT1tLm5leHR9ai5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD1NfSh4LEQpfX1FLmV4cG9ydHM9QTt2YXIgZSxsPSFiLmJyb3dzZXImJlsidjAuMTAiLCJ2MC45LiJdLmluZGV4T2YoYi52ZXJzaW9uLnNsaWNlKDAsNSkpPi0xP286ci5uZXh0VGljaztBLldyaXRhYmxlU3RhdGU9Xzt2'@; put 'YXIgbj1PYmplY3QuY3JlYXRlKHMoImNvcmUtdXRpbC1pcyIpKTtuLmluaGVyaXRzPXMoImluaGVyaXRzIik7dmFyIHAsaT17ZGVwcmVjYXRlOnMoInV0aWwtZGVwcmVjYXRlIil9LGg9cygiLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbSIpLGY9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsdT0o'@; put 'dm9pZCAwIT09YT9hOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LGQ9cygiLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kiKTtmdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIF8oRCx4KXtlPWV8fHMoIi4vX3N0'@; put 'cmVhbV9kdXBsZXgiKTt2YXIgTT14IGluc3RhbmNlb2YgZTt0aGlzLm9iamVjdE1vZGU9ISEoRD1EfHx7fSkub2JqZWN0TW9kZSxNJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFELndyaXRhYmxlT2JqZWN0TW9kZSk7dmFyIGo9RC5oaWdoV2F0ZXJNYXJrLGM9RC53cml0'@; put 'YWJsZUhpZ2hXYXRlck1hcms7dGhpcy5oaWdoV2F0ZXJNYXJrPWp8fDA9PT1qP2o6TSYmKGN8fDA9PT1jKT9jOnRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NCx0aGlzLmhpZ2hXYXRlck1hcms9TWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspLHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5u'@; put 'ZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVjb2RlU3RyaW5ncz0hKCExPT09RC5kZWNvZGVTdHJpbmdzKSx0aGlzLmRlZmF1bHRFbmNvZGluZz1ELmRlZmF1bHRFbmNvZGluZ3x8InV0Zjgi'@; put 'LHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24oeSl7IWZ1bmN0aW9uKHcsayl7dmFyIFIsTz13Ll93cml0YWJsZVN0YXRlLHo9Ty5zeW5jLFU9Ty53cml0'@; put 'ZWNiO2lmKChSPU8pLndyaXRpbmc9ITEsUi53cml0ZWNiPW51bGwsUi5sZW5ndGgtPVIud3JpdGVsZW4sUi53cml0ZWxlbj0wLGspIWZ1bmN0aW9uKFIsSCxULEMsRil7LS1ILnBlbmRpbmdjYixUPyhyLm5leHRUaWNrKEYsQyksci5uZXh0VGljaygkLFIsSCksUi5fd3JpdGFibGVTdGF0ZS5l'@; put 'cnJvckVtaXR0ZWQ9ITAsUi5lbWl0KCJlcnJvciIsQykpOihGKEMpLFIuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLFIuZW1pdCgiZXJyb3IiLEMpLCQoUixIKSl9KHcsTyx6LGssVSk7ZWxzZXt2YXIgVj1QKE8pO1Z8fE8uY29ya2VkfHxPLmJ1ZmZlclByb2Nlc3Npbmd8fCFPLmJ1'@; put 'ZmZlcmVkUmVxdWVzdHx8Tih3LE8pLHo/bChMLHcsTyxWLFUpOkwodyxPLFYsVSl9fSh4LHkpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRo'@; put 'aXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyB0KHRoaXMpfWZ1bmN0aW9uIEEoRCl7aWYoZT1lfHxzKCIuL19zdHJlYW1fZHVwbGV4IiksIShwLmNhbGwoQSx0aGlzKXx8'@; put 'dGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgQShEKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBfKEQsdGhpcyksdGhpcy53cml0YWJsZT0hMCxEJiYoImZ1bmN0aW9uIj09dHlwZW9mIEQud3JpdGUmJih0aGlzLl93cml0ZT1ELndyaXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgRC53cml0'@; put 'ZXYmJih0aGlzLl93cml0ZXY9RC53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiBELmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PUQuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIEQuZmluYWwmJih0aGlzLl9maW5hbD1ELmZpbmFsKSksaC5jYWxsKHRoaXMpfWZ1bmN0aW9uIEkoRCx4LE0s'@; put 'aixjLG0sZyl7eC53cml0ZWxlbj1qLHgud3JpdGVjYj1nLHgud3JpdGluZz0hMCx4LnN5bmM9ITAsTT9ELl93cml0ZXYoYyx4Lm9ud3JpdGUpOkQuX3dyaXRlKGMsbSx4Lm9ud3JpdGUpLHguc3luYz0hMX1mdW5jdGlvbiBMKEQseCxNLGope3ZhciBjLG07TXx8KGM9RCwwPT09KG09eCkubGVu'@; put 'Z3RoJiZtLm5lZWREcmFpbiYmKG0ubmVlZERyYWluPSExLGMuZW1pdCgiZHJhaW4iKSkpLHgucGVuZGluZ2NiLS0saigpLCQoRCx4KX1mdW5jdGlvbiBOKEQseCl7eC5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciBNPXguYnVmZmVyZWRSZXF1ZXN0O2lmKEQuX3dyaXRldiYmTSYmTS5uZXh0KXt2'@; put 'YXIgYz1uZXcgQXJyYXkoeC5idWZmZXJlZFJlcXVlc3RDb3VudCksbT14LmNvcmtlZFJlcXVlc3RzRnJlZTttLmVudHJ5PU07Zm9yKHZhciBnPTAseT0hMDtNOyljW2ddPU0sTS5pc0J1Znx8KHk9ITEpLE09TS5uZXh0LGcrPTE7Yy5hbGxCdWZmZXJzPXksSShELHgsITAseC5sZW5ndGgsYywi'@; put 'IixtLmZpbmlzaCkseC5wZW5kaW5nY2IrKyx4Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxtLm5leHQ/KHguY29ya2VkUmVxdWVzdHNGcmVlPW0ubmV4dCxtLm5leHQ9bnVsbCk6eC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IHQoeCkseC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9y'@; put 'KDtNOyl7dmFyIHc9TS5jaHVuaztpZihJKEQseCwhMSx4Lm9iamVjdE1vZGU/MTp3Lmxlbmd0aCx3LE0uZW5jb2RpbmcsTS5jYWxsYmFjayksTT1NLm5leHQseC5idWZmZXJlZFJlcXVlc3RDb3VudC0tLHgud3JpdGluZylicmVha31udWxsPT09TSYmKHgubGFzdEJ1ZmZlcmVkUmVxdWVzdD1u'@; put 'dWxsKX14LmJ1ZmZlcmVkUmVxdWVzdD1NLHguYnVmZmVyUHJvY2Vzc2luZz0hMX1mdW5jdGlvbiBQKEQpe3JldHVybiBELmVuZGluZyYmMD09PUQubGVuZ3RoJiZudWxsPT09RC5idWZmZXJlZFJlcXVlc3QmJiFELmZpbmlzaGVkJiYhRC53cml0aW5nfWZ1bmN0aW9uIEIoRCx4KXtELl9maW5h'@; put 'bChmdW5jdGlvbihNKXt4LnBlbmRpbmdjYi0tLE0mJkQuZW1pdCgiZXJyb3IiLE0pLHgucHJlZmluaXNoZWQ9ITAsRC5lbWl0KCJwcmVmaW5pc2giKSwkKEQseCl9KX1mdW5jdGlvbiAkKEQseCl7dmFyIGosYyxNPVAoeCk7cmV0dXJuIE0mJihqPUQsKGM9eCkucHJlZmluaXNoZWR8fGMuZmlu'@; put 'YWxDYWxsZWR8fCgiZnVuY3Rpb24iPT10eXBlb2Ygai5fZmluYWw/KGMucGVuZGluZ2NiKyssYy5maW5hbENhbGxlZD0hMCxyLm5leHRUaWNrKEIsaixjKSk6KGMucHJlZmluaXNoZWQ9ITAsai5lbWl0KCJwcmVmaW5pc2giKSkpLDA9PT14LnBlbmRpbmdjYiYmKHguZmluaXNoZWQ9ITAsRC5l'@; put 'bWl0KCJmaW5pc2giKSkpLE19bi5pbmhlcml0cyhBLGgpLF8ucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgRD10aGlzLmJ1ZmZlcmVkUmVxdWVzdCx4PVtdO0Q7KXgucHVzaChEKSxEPUQubmV4dDtyZXR1cm4geH0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVBy'@; put 'b3BlcnR5KF8ucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6aS5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAw'@; put 'MyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8ocD1GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSxP'@; put 'YmplY3QuZGVmaW5lUHJvcGVydHkoQSxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKEQpe3JldHVybiEhcC5jYWxsKHRoaXMsRCl8fHRoaXM9PT1BJiZEJiZELl93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgX319KSk6cD1mdW5jdGlvbihEKXtyZXR1cm4gRCBpbnN0YW5jZW9m'@; put 'IHRoaXN9LEEucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSl9LEEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEQseCxNKXt2YXIgaix5LHcsayxjPXRoaXMuX3dyaXRhYmxlU3RhdGUsbT0h'@; put 'MSxnPSFjLm9iamVjdE1vZGUmJihmLmlzQnVmZmVyKGo9RCl8fGogaW5zdGFuY2VvZiB1KTtyZXR1cm4gZyYmIWYuaXNCdWZmZXIoRCkmJihEPWYuZnJvbShEKSksImZ1bmN0aW9uIj09dHlwZW9mIHgmJihNPXgseD1udWxsKSxnP3g9ImJ1ZmZlciI6eHx8KHg9Yy5kZWZhdWx0RW5jb2Rpbmcp'@; put 'LCJmdW5jdGlvbiIhPXR5cGVvZiBNJiYoTT12KSxjLmVuZGVkPyh5PXRoaXMsdz1NLGs9bmV3IEVycm9yKCJ3cml0ZSBhZnRlciBlbmQiKSx5LmVtaXQoImVycm9yIixrKSxyLm5leHRUaWNrKHcsaykpOihnfHxmdW5jdGlvbih5LHcsayxPKXt2YXIgej0hMCxVPSExO3JldHVybiBudWxsPT09'@; put 'az9VPW5ldyBUeXBlRXJyb3IoIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtIik6InN0cmluZyI9PXR5cGVvZiBrfHx2b2lkIDA9PT1rfHx3Lm9iamVjdE1vZGV8fChVPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSksVSYmKHkuZW1p'@; put 'dCgiZXJyb3IiLFUpLHIubmV4dFRpY2soTyxVKSx6PSExKSx6fSh0aGlzLGMsRCxNKSkmJihjLnBlbmRpbmdjYisrLG09ZnVuY3Rpb24oeSx3LGssTyx6LFUpe2lmKCFrKXt2YXIgVj0oRj1PLChDPXcpLm9iamVjdE1vZGV8fCExPT09Qy5kZWNvZGVTdHJpbmdzfHwic3RyaW5nIiE9dHlwZW9m'@; put 'IEZ8fChGPWYuZnJvbShGLHopKSxGKTtPIT09ViYmKGs9ITAsej0iYnVmZmVyIixPPVYpfXZhciBDLEYsUj13Lm9iamVjdE1vZGU/MTpPLmxlbmd0aDt3Lmxlbmd0aCs9Ujt2YXIgSD13Lmxlbmd0aDx3LmhpZ2hXYXRlck1hcms7aWYoSHx8KHcubmVlZERyYWluPSEwKSx3LndyaXRpbmd8fHcu'@; put 'Y29ya2VkKXt2YXIgVD13Lmxhc3RCdWZmZXJlZFJlcXVlc3Q7dy5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazpPLGVuY29kaW5nOnosaXNCdWY6ayxjYWxsYmFjazpVLG5leHQ6bnVsbH0sVD9ULm5leHQ9dy5sYXN0QnVmZmVyZWRSZXF1ZXN0OncuYnVmZmVyZWRSZXF1ZXN0PXcubGFzdEJ1'@; put 'ZmZlcmVkUmVxdWVzdCx3LmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgSSh5LHcsITEsUixPLHosVSk7cmV0dXJuIEh9KHRoaXMsYyxnLEQseCxNKSksbX0sQS5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LEEucHJvdG90eXBlLnVu'@; put 'Y29yaz1mdW5jdGlvbigpe3ZhciBEPXRoaXMuX3dyaXRhYmxlU3RhdGU7RC5jb3JrZWQmJihELmNvcmtlZC0tLEQud3JpdGluZ3x8RC5jb3JrZWR8fEQuYnVmZmVyUHJvY2Vzc2luZ3x8IUQuYnVmZmVyZWRSZXF1ZXN0fHxOKHRoaXMsRCkpfSxBLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rp'@; put 'bmc9ZnVuY3Rpb24oRCl7aWYoInN0cmluZyI9PXR5cGVvZiBEJiYoRD1ELnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJhdyJdLmluZGV4T2YoKEQrIiIp'@; put 'LnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0QpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1ELHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwid3JpdGFibGVIaWdoV2F0'@; put 'ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLEEucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihELHgsTSl7TShuZXcgRXJyb3IoIl93cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCIpKX0sQS5w'@; put 'cm90b3R5cGUuX3dyaXRldj1udWxsLEEucHJvdG90eXBlLmVuZD1mdW5jdGlvbihELHgsTSl7dmFyIGMsbSxnLGo9dGhpcy5fd3JpdGFibGVTdGF0ZTsiZnVuY3Rpb24iPT10eXBlb2YgRD8oTT1ELEQ9bnVsbCx4PW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiB4JiYoTT14LHg9bnVsbCksbnVs'@; put 'bCE9RCYmdGhpcy53cml0ZShELHgpLGouY29ya2VkJiYoai5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxqLmVuZGluZ3x8KGM9dGhpcyxnPU0sKG09aikuZW5kaW5nPSEwLCQoYyxtKSxnJiYobS5maW5pc2hlZD9yLm5leHRUaWNrKGcpOmMub25jZSgiZmluaXNoIixnKSksbS5lbmRlZD0hMCxj'@; put 'LndyaXRhYmxlPSExKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihEKXt0aGlz'@; put 'Ll93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9RCl9fSksQS5wcm90b3R5cGUuZGVzdHJveT1kLmRlc3Ryb3ksQS5wcm90b3R5cGUuX3VuZGVzdHJveT1kLnVuZGVzdHJveSxBLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihELHgpe3RoaXMuZW5kKCks'@; put 'eChEKX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHMoIl9wcm9jZXNzIiksdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSxzKCJ0aW1lcnMiKS5zZXRJbW1lZGlhdGUpfSx7Ii4vX3N0cmVhbV9kdXBsZXgi'@; put 'OjUwOCwiLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kiOjUxNCwiLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbSI6NTE1LF9wcm9jZXNzOjQ2NywiY29yZS11dGlsLWlzIjozODMsaW5oZXJpdHM6NDQwLCJwcm9jZXNzLW5leHRpY2stYXJncyI6NDY2LCJzYWZlLWJ1ZmZlciI6NTIwLHRpbWVy'@; put 'czo1MjMsInV0aWwtZGVwcmVjYXRlIjo1MjR9XSw1MTM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7dmFyIGI9cygic2FmZS1idWZmZXIiKS5CdWZmZXIsYT1zKCJ1dGlsIik7RS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbygpeyhmdW5jdGlvbihyLHQpe2lmKCEociBpbnN0'@; put 'YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxvKSx0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiBvLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHIpe3ZhciB0PXtk'@; put 'YXRhOnIsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PXQ6dGhpcy5oZWFkPXQsdGhpcy50YWlsPXQsKyt0aGlzLmxlbmd0aH0sby5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihyKXt2YXIgdD17ZGF0YTpyLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgm'@; put 'Jih0aGlzLnRhaWw9dCksdGhpcy5oZWFkPXQsKyt0aGlzLmxlbmd0aH0sby5wcm90b3R5cGUuc2hpZnQ9ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciByPXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRoaXMu'@; put 'aGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgscn19LG8ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9LG8ucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24ocil7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgdD10'@; put 'aGlzLmhlYWQsZT0iIit0LmRhdGE7dD10Lm5leHQ7KWUrPXIrdC5kYXRhO3JldHVybiBlfSxvLnByb3RvdHlwZS5jb25jYXQ9ZnVuY3Rpb24ocil7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBiLmFsbG9jKDApO2Zvcih2YXIgbj1iLmFsbG9jVW5zYWZlKHI+Pj4wKSxpPXRoaXMuaGVhZCxo'@; put 'PTA7aTspaS5kYXRhLmNvcHkobixoKSxoKz1pLmRhdGEubGVuZ3RoLGk9aS5uZXh0O3JldHVybiBufSxvfSgpLGEmJmEuaW5zcGVjdCYmYS5pbnNwZWN0LmN1c3RvbSYmKEUuZXhwb3J0cy5wcm90b3R5cGVbYS5pbnNwZWN0LmN1c3RvbV09ZnVuY3Rpb24oKXt2YXIgbz1hLmluc3BlY3Qoe2xl'@; put 'bmd0aDp0aGlzLmxlbmd0aH0pO3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUrIiAiK299KX0seyJzYWZlLWJ1ZmZlciI6NTIwLHV0aWw6MTg4fV0sNTE0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO3ZhciBiPXMoInByb2Nlc3MtbmV4dGljay1hcmdzIik7ZnVuY3Rpb24gYShv'@; put 'LHIpe28uZW1pdCgiZXJyb3IiLHIpfUUuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbihvLHIpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfHx0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRl'@; put 'LmRlc3Ryb3llZD8ocj9yKG8pOm8mJih0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsYi5uZXh0VGljayhhLHRoaXMsbykpOmIubmV4dFRpY2soYSx0aGlzLG8pKSx0aGlzKToo'@; put 'dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3kob3x8bnVsbCxmdW5jdGlvbihuKXshciYmbj90Ll93cml0YWJsZVN0'@; put 'YXRlP3QuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsYi5uZXh0VGljayhhLHQsbikpOmIubmV4dFRpY2soYSx0LG4pOnImJnIobil9KSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYm'@; put 'KHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxl'@; put 'U3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3Rh'@; put 'dGUuZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfX19LHsicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOjQ2Nn1dLDUxNTpbZnVuY3Rpb24ocyxFLFMpe2FyZ3VtZW50c1s0XVs0OTBdWzBdLmFwcGx5KFMsYXJndW1lbnRzKX0se2R1cDo0OTAsZXZlbnRzOjQy'@; put 'Mn1dLDUxNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4cG9ydHM9cygiLi9yZWFkYWJsZSIpLlBhc3NUaHJvdWdofSx7Ii4vcmVhZGFibGUiOjUxN31dLDUxNzpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjsoUz1FLmV4cG9ydHM9cygiLi9saWIvX3N0cmVhbV9yZWFk'@; put 'YWJsZS5qcyIpKS5TdHJlYW09UyxTLlJlYWRhYmxlPVMsUy5Xcml0YWJsZT1zKCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiksUy5EdXBsZXg9cygiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiKSxTLlRyYW5zZm9ybT1zKCIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIpLFMuUGFzc1Ro'@; put 'cm91Z2g9cygiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIpfSx7Ii4vbGliL19zdHJlYW1fZHVwbGV4LmpzIjo1MDgsIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiOjUwOSwiLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyI6NTEwLCIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5q'@; put 'cyI6NTExLCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIjo1MTJ9XSw1MTg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7RS5leHBvcnRzPXMoIi4vcmVhZGFibGUiKS5UcmFuc2Zvcm19LHsiLi9yZWFkYWJsZSI6NTE3fV0sNTE5OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3Qi'@; put 'O0UuZXhwb3J0cz1zKCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIil9LHsiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyI6NTEyfV0sNTIwOltmdW5jdGlvbihzLEUsUyl7YXJndW1lbnRzWzRdWzIxN11bMF0uYXBwbHkoUyxhcmd1bWVudHMpfSx7YnVmZmVyOjIyMCxkdXA6MjE3fV0sNTIx'@; put 'OltmdW5jdGlvbihzLEUsUyl7YXJndW1lbnRzWzRdWzIxOF1bMF0uYXBwbHkoUyxhcmd1bWVudHMpfSx7ZHVwOjIxOCwic2FmZS1idWZmZXIiOjUyMH1dLDUyMjpbZnVuY3Rpb24ocyxFLFMpe2FyZ3VtZW50c1s0XVsyMThdWzBdLmFwcGx5KFMsYXJndW1lbnRzKX0se2R1cDoyMTgsInNhZmUt'@; put 'YnVmZmVyIjo0OTR9XSw1MjM6W2Z1bmN0aW9uKHMsRSxTKXsoZnVuY3Rpb24oYixhKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG89cygicHJvY2Vzcy9icm93c2VyLmpzIikubmV4dFRpY2sscj1GdW5jdGlvbi5wcm90b3R5cGUuYXBwbHksdD1BcnJheS5wcm90b3R5cGUuc2xpY2Us'@; put 'ZT17fSxsPTA7ZnVuY3Rpb24gbihpLGgpe3RoaXMuX2lkPWksdGhpcy5fY2xlYXJGbj1ofVMuc2V0VGltZW91dD1mdW5jdGlvbigpe3JldHVybiBuZXcgbihyLmNhbGwoc2V0VGltZW91dCx3aW5kb3csYXJndW1lbnRzKSxjbGVhclRpbWVvdXQpfSxTLnNldEludGVydmFsPWZ1bmN0aW9uKCl7'@; put 'cmV0dXJuIG5ldyBuKHIuY2FsbChzZXRJbnRlcnZhbCx3aW5kb3csYXJndW1lbnRzKSxjbGVhckludGVydmFsKX0sUy5jbGVhclRpbWVvdXQ9Uy5jbGVhckludGVydmFsPWZ1bmN0aW9uKGkpe2kuY2xvc2UoKX0sbi5wcm90b3R5cGUudW5yZWY9bi5wcm90b3R5cGUucmVmPWZ1bmN0aW9uKCl7'@; put 'fSxuLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3RoaXMuX2NsZWFyRm4uY2FsbCh3aW5kb3csdGhpcy5faWQpfSxTLmVucm9sbD1mdW5jdGlvbihpLGgpe2NsZWFyVGltZW91dChpLl9pZGxlVGltZW91dElkKSxpLl9pZGxlVGltZW91dD1ofSxTLnVuZW5yb2xsPWZ1bmN0aW9uKGkpe2Ns'@; put 'ZWFyVGltZW91dChpLl9pZGxlVGltZW91dElkKSxpLl9pZGxlVGltZW91dD0tMX0sUy5fdW5yZWZBY3RpdmU9Uy5hY3RpdmU9ZnVuY3Rpb24oaSl7Y2xlYXJUaW1lb3V0KGkuX2lkbGVUaW1lb3V0SWQpO3ZhciBoPWkuX2lkbGVUaW1lb3V0O2g+PTAmJihpLl9pZGxlVGltZW91dElkPXNldFRp'@; put 'bWVvdXQoZnVuY3Rpb24oKXtpLl9vblRpbWVvdXQmJmkuX29uVGltZW91dCgpfSxoKSl9LFMuc2V0SW1tZWRpYXRlPSJmdW5jdGlvbiI9PXR5cGVvZiBiP2I6ZnVuY3Rpb24oaSl7dmFyIGg9bCsrLGY9IShhcmd1bWVudHMubGVuZ3RoPDIpJiZ0LmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBl'@; put 'W2hdPSEwLG8oZnVuY3Rpb24oKXtlW2hdJiYoZj9pLmFwcGx5KG51bGwsZik6aS5jYWxsKG51bGwpLFMuY2xlYXJJbW1lZGlhdGUoaCkpfSksaH0sUy5jbGVhckltbWVkaWF0ZT0iZnVuY3Rpb24iPT10eXBlb2YgYT9hOmZ1bmN0aW9uKGkpe2RlbGV0ZSBlW2ldfX0pLmNhbGwodGhpcyl9KS5j'@; put 'YWxsKHRoaXMscygidGltZXJzIikuc2V0SW1tZWRpYXRlLHMoInRpbWVycyIpLmNsZWFySW1tZWRpYXRlKX0seyJwcm9jZXNzL2Jyb3dzZXIuanMiOjQ2Nyx0aW1lcnM6NTIzfV0sNTI0OltmdW5jdGlvbihzLEUsUyl7KGZ1bmN0aW9uKGIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5j'@; put 'dGlvbiBhKG8pe3RyeXtpZighYi5sb2NhbFN0b3JhZ2UpcmV0dXJuITF9Y2F0Y2h7cmV0dXJuITF9dmFyIHI9Yi5sb2NhbFN0b3JhZ2Vbb107cmV0dXJuIG51bGwhPXImJiJ0cnVlIj09PVN0cmluZyhyKS50b0xvd2VyQ2FzZSgpfUUuZXhwb3J0cz1mdW5jdGlvbihvLHIpe2lmKGEoIm5vRGVw'@; put 'cmVjYXRpb24iKSlyZXR1cm4gbzt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighdCl7aWYoYSgidGhyb3dEZXByZWNhdGlvbiIpKXRocm93IG5ldyBFcnJvcihyKTthKCJ0cmFjZURlcHJlY2F0aW9uIik/Y29uc29sZS50cmFjZShyKTpjb25zb2xlLndhcm4ociksdD0hMH1yZXR1cm4g'@; put 'by5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw1MjU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7'@; put 'RS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGIsYSl7Yi5zdXBlcl89YSxiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGEucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6YixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJs'@; put 'ZTohMH19KX06ZnVuY3Rpb24oYixhKXtiLnN1cGVyXz1hO3ZhciBvPWZ1bmN0aW9uKCl7fTtvLnByb3RvdHlwZT1hLnByb3RvdHlwZSxiLnByb3RvdHlwZT1uZXcgbyxiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ifX0se31dLDUyNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtFLmV4'@; put 'cG9ydHM9ZnVuY3Rpb24oYil7cmV0dXJuIGImJiJvYmplY3QiPT10eXBlb2YgYiYmImZ1bmN0aW9uIj09dHlwZW9mIGIuY29weSYmImZ1bmN0aW9uIj09dHlwZW9mIGIuZmlsbCYmImZ1bmN0aW9uIj09dHlwZW9mIGIucmVhZFVJbnQ4fX0se31dLDUyNzpbZnVuY3Rpb24ocyxFLFMpeyhmdW5j'@; put 'dGlvbihiLGEpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbz0vJVtzZGolXS9nO1MuZm9ybWF0PWZ1bmN0aW9uKGMpe2lmKCFfKGMpKXtmb3IodmFyIG09W10sZz0wO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspbS5wdXNoKGUoYXJndW1lbnRzW2ddKSk7cmV0dXJuIG0uam9pbigiICIp'@; put 'fWc9MTtmb3IodmFyIHk9YXJndW1lbnRzLHc9eS5sZW5ndGgsaz1TdHJpbmcoYykucmVwbGFjZShvLGZ1bmN0aW9uKHope2lmKCIlJSI9PT16KXJldHVybiIlIjtpZihnPj13KXJldHVybiB6O3N3aXRjaCh6KXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKHlbZysrXSk7Y2FzZSIlZCI6cmV0dXJu'@; put 'IE51bWJlcih5W2crK10pO2Nhc2UiJWoiOnRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoeVtnKytdKX1jYXRjaHtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4gen19KSxPPXlbZ107Zzx3O089eVsrK2ddKWQoTyl8fCFMKE8pP2srPSIgIitPOmsrPSIgIitlKE8pO3JldHVybiBr'@; put 'fSxTLmRlcHJlY2F0ZT1mdW5jdGlvbihjLG0pe2lmKEEoYS5wcm9jZXNzKSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUy5kZXByZWNhdGUoYyxtKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2lmKCEwPT09Yi5ub0RlcHJlY2F0aW9uKXJldHVybiBjO3ZhciBnPSExO3JldHVybiBmdW5jdGlv'@; put 'bigpe2lmKCFnKXtpZihiLnRocm93RGVwcmVjYXRpb24pdGhyb3cgbmV3IEVycm9yKG0pO2IudHJhY2VEZXByZWNhdGlvbj9jb25zb2xlLnRyYWNlKG0pOmNvbnNvbGUuZXJyb3IobSksZz0hMH1yZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTt2YXIgcix0PXt9O2Z1bmN0aW9uIGUo'@; put 'YyxtKXt2YXIgZz17c2VlbjpbXSxzdHlsaXplOm59O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPj0zJiYoZy5kZXB0aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+PTQmJihnLmNvbG9ycz1hcmd1bWVudHNbM10pLHAobSk/Zy5zaG93SGlkZGVuPW06bSYmUy5fZXh0ZW5kKGcsbSks'@; put 'QShnLnNob3dIaWRkZW4pJiYoZy5zaG93SGlkZGVuPSExKSxBKGcuZGVwdGgpJiYoZy5kZXB0aD0yKSxBKGcuY29sb3JzKSYmKGcuY29sb3JzPSExKSxBKGcuY3VzdG9tSW5zcGVjdCkmJihnLmN1c3RvbUluc3BlY3Q9ITApLGcuY29sb3JzJiYoZy5zdHlsaXplPWwpLGkoZyxjLGcuZGVwdGgp'@; put 'fWZ1bmN0aW9uIGwoYyxtKXt2YXIgZz1lLnN0eWxlc1ttXTtyZXR1cm4gZz8iXHgxYlsiK2UuY29sb3JzW2ddWzBdKyJtIitjKyJceDFiWyIrZS5jb2xvcnNbZ11bMV0rIm0iOmN9ZnVuY3Rpb24gbihjLG0pe3JldHVybiBjfWZ1bmN0aW9uIGkoYyxtLGcpe2lmKGMuY3VzdG9tSW5zcGVjdCYm'@; put 'bSYmQihtLmluc3BlY3QpJiZtLmluc3BlY3QhPT1TLmluc3BlY3QmJighbS5jb25zdHJ1Y3Rvcnx8bS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1tKSl7dmFyIHk9bS5pbnNwZWN0KGcsYyk7cmV0dXJuIF8oeSl8fCh5PWkoYyx5LGcpKSx5fXZhciB3PWZ1bmN0aW9uKFQsQyl7aWYoQShDKSly'@; put 'ZXR1cm4gVC5zdHlsaXplKCJ1bmRlZmluZWQiLCJ1bmRlZmluZWQiKTtpZihfKEMpKXt2YXIgRj0iJyIrSlNPTi5zdHJpbmdpZnkoQykucmVwbGFjZSgvXiJ8IiQvZywiIikucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNlKC9cXCIvZywnIicpKyInIjtyZXR1cm4gVC5zdHlsaXplKEYsInN0'@; put 'cmluZyIpfXJldHVybiB2KEMpP1Quc3R5bGl6ZSgiIitDLCJudW1iZXIiKTpwKEMpP1Quc3R5bGl6ZSgiIitDLCJib29sZWFuIik6ZChDKT9ULnN0eWxpemUoIm51bGwiLCJudWxsIik6dm9pZCAwfShjLG0pO2lmKHcpcmV0dXJuIHc7dmFyIEMsaz1PYmplY3Qua2V5cyhtKSxPPShDPXt9LGsu'@; put 'Zm9yRWFjaChmdW5jdGlvbihGLHEpe0NbRl09ITB9KSxDKTtpZihjLnNob3dIaWRkZW4mJihrPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG0pKSxQKG0pJiYoay5pbmRleE9mKCJtZXNzYWdlIik+PTB8fGsuaW5kZXhPZigiZGVzY3JpcHRpb24iKT49MCkpcmV0dXJuIGgobSk7aWYoMD09'@; put 'PWsubGVuZ3RoKXtpZihCKG0pKXJldHVybiBjLnN0eWxpemUoIltGdW5jdGlvbiIrKG0ubmFtZT8iOiAiK20ubmFtZToiIikrIl0iLCJzcGVjaWFsIik7aWYoSShtKSlyZXR1cm4gYy5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtKSwicmVnZXhwIik7aWYoTihtKSly'@; put 'ZXR1cm4gYy5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobSksImRhdGUiKTtpZihQKG0pKXJldHVybiBoKG0pfXZhciBVLFY9IiIsUj0hMSxIPVsieyIsIn0iXTtyZXR1cm4gdShtKSYmKFI9ITAsSD1bIlsiLCJdIl0pLEIobSkmJihWPSIgW0Z1bmN0aW9uIisobS5uYW1l'@; put 'PyI6ICIrbS5uYW1lOiIiKSsiXSIpLEkobSkmJihWPSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobSkpLE4obSkmJihWPSIgIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKG0pKSxQKG0pJiYoVj0iICIraChtKSksMCE9PWsubGVuZ3RofHxSJiYwIT1tLmxlbmd0'@; put 'aD9nPDA/SShtKT9jLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG0pLCJyZWdleHAiKTpjLnN0eWxpemUoIltPYmplY3RdIiwic3BlY2lhbCIpOihjLnNlZW4ucHVzaChtKSxVPVI/ZnVuY3Rpb24oVCxDLEYscSxZKXtmb3IodmFyIFg9W10sSz0wLHJ0PUMubGVuZ3Ro'@; put 'O0s8cnQ7KytLKWooQyxTdHJpbmcoSykpP1gucHVzaChmKFQsQyxGLHEsU3RyaW5nKEspLCEwKSk6WC5wdXNoKCIiKTtyZXR1cm4gWS5mb3JFYWNoKGZ1bmN0aW9uKHR0KXt0dC5tYXRjaCgvXlxkKyQvKXx8WC5wdXNoKGYoVCxDLEYscSx0dCwhMCkpfSksWH0oYyxtLGcsTyxrKTprLm1hcChm'@; put 'dW5jdGlvbihUKXtyZXR1cm4gZihjLG0sZyxPLFQsUil9KSxjLnNlZW4ucG9wKCksZnVuY3Rpb24oVCxDLEYpe3JldHVybiBULnJlZHVjZShmdW5jdGlvbihxLFkpe3JldHVybiBZLmluZGV4T2YoIlxuIikscStZLnJlcGxhY2UoL1x1MDAxYlxbXGRcZD9tL2csIiIpLmxlbmd0aCsxfSwwKT42'@; put 'MD9GWzBdKygiIj09PUM/IiI6QysiXG4gIikrIiAiK1Quam9pbigiLFxuICAiKSsiICIrRlsxXTpGWzBdK0MrIiAiK1Quam9pbigiLCAiKSsiICIrRlsxXX0oVSxWLEgpKTpIWzBdK1YrSFsxXX1mdW5jdGlvbiBoKGMpe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChj'@; put 'KSsiXSJ9ZnVuY3Rpb24gZihjLG0sZyx5LHcsayl7dmFyIE8seixVO2lmKChVPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSx3KXx8e3ZhbHVlOm1bd119KS5nZXQ/ej1jLnN0eWxpemUoVS5zZXQ/IltHZXR0ZXIvU2V0dGVyXSI6IltHZXR0ZXJdIiwic3BlY2lhbCIpOlUuc2V0'@; put 'JiYoej1jLnN0eWxpemUoIltTZXR0ZXJdIiwic3BlY2lhbCIpKSxqKHksdyl8fChPPSJbIit3KyJdIiksenx8KGMuc2Vlbi5pbmRleE9mKFUudmFsdWUpPDA/KHo9ZChnKT9pKGMsVS52YWx1ZSxudWxsKTppKGMsVS52YWx1ZSxnLTEpKS5pbmRleE9mKCJcbiIpPi0xJiYoej1rP3ouc3BsaXQo'@; put 'IlxuIikubWFwKGZ1bmN0aW9uKFYpe3JldHVybiIgICIrVn0pLmpvaW4oIlxuIikuc3Vic3RyKDIpOiJcbiIrei5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIiAgICIrVn0pLmpvaW4oIlxuIikpOno9Yy5zdHlsaXplKCJbQ2lyY3VsYXJdIiwic3BlY2lhbCIpKSxBKE8pKXtp'@; put 'ZihrJiZ3Lm1hdGNoKC9eXGQrJC8pKXJldHVybiB6OyhPPUpTT04uc3RyaW5naWZ5KCIiK3cpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyhPPU8uc3Vic3RyKDEsTy5sZW5ndGgtMiksTz1jLnN0eWxpemUoTywibmFtZSIpKTooTz1PLnJlcGxhY2UoLycvZywiXFwn'@; put 'IikucmVwbGFjZSgvXFwiL2csJyInKS5yZXBsYWNlKC8oXiJ8IiQpL2csIiciKSxPPWMuc3R5bGl6ZShPLCJzdHJpbmciKSl9cmV0dXJuIE8rIjogIit6fWZ1bmN0aW9uIHUoYyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYyl9ZnVuY3Rpb24gcChjKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBj'@; put 'fWZ1bmN0aW9uIGQoYyl7cmV0dXJuIG51bGw9PT1jfWZ1bmN0aW9uIHYoYyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBjfWZ1bmN0aW9uIF8oYyl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjfWZ1bmN0aW9uIEEoYyl7cmV0dXJuIHZvaWQgMD09PWN9ZnVuY3Rpb24gSShjKXtyZXR1cm4gTChj'@; put 'KSYmIltvYmplY3QgUmVnRXhwXSI9PT0kKGMpfWZ1bmN0aW9uIEwoYyl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBjJiZudWxsIT09Y31mdW5jdGlvbiBOKGMpe3JldHVybiBMKGMpJiYiW29iamVjdCBEYXRlXSI9PT0kKGMpfWZ1bmN0aW9uIFAoYyl7cmV0dXJuIEwoYykmJigiW29iamVjdCBF'@; put 'cnJvcl0iPT09JChjKXx8YyBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiBCKGMpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjfWZ1bmN0aW9uICQoYyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKX1mdW5jdGlvbiBEKGMpe3JldHVybiBjPDEwPyIwIitjLnRv'@; put 'U3RyaW5nKDEwKTpjLnRvU3RyaW5nKDEwKX1TLmRlYnVnbG9nPWZ1bmN0aW9uKGMpe2lmKEEocikmJihyPWIuZW52Lk5PREVfREVCVUd8fCIiKSxjPWMudG9VcHBlckNhc2UoKSwhdFtjXSlpZihuZXcgUmVnRXhwKCJcXGIiK2MrIlxcYiIsImkiKS50ZXN0KHIpKXt2YXIgbT1iLnBpZDt0W2Nd'@; put 'PWZ1bmN0aW9uKCl7dmFyIGc9Uy5mb3JtYXQuYXBwbHkoUyxhcmd1bWVudHMpO2NvbnNvbGUuZXJyb3IoIiVzICVkOiAlcyIsYyxtLGcpfX1lbHNlIHRbY109ZnVuY3Rpb24oKXt9O3JldHVybiB0W2NdfSxTLmluc3BlY3Q9ZSxlLmNvbG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1'@; put 'bmRlcmxpbmU6WzQsMjRdLGludmVyc2U6WzcsMjddLHdoaXRlOlszNywzOV0sZ3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1ZTpbMzQsMzldLGN5YW46WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxyZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX0sZS5zdHlsZXM9'@; put 'e3NwZWNpYWw6ImN5YW4iLG51bWJlcjoieWVsbG93Iixib29sZWFuOiJ5ZWxsb3ciLHVuZGVmaW5lZDoiZ3JleSIsbnVsbDoiYm9sZCIsc3RyaW5nOiJncmVlbiIsZGF0ZToibWFnZW50YSIscmVnZXhwOiJyZWQifSxTLmlzQXJyYXk9dSxTLmlzQm9vbGVhbj1wLFMuaXNOdWxsPWQsUy5pc051'@; put 'bGxPclVuZGVmaW5lZD1mdW5jdGlvbihjKXtyZXR1cm4gbnVsbD09Y30sUy5pc051bWJlcj12LFMuaXNTdHJpbmc9XyxTLmlzU3ltYm9sPWZ1bmN0aW9uKGMpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgY30sUy5pc1VuZGVmaW5lZD1BLFMuaXNSZWdFeHA9SSxTLmlzT2JqZWN0PUwsUy5pc0Rh'@; put 'dGU9TixTLmlzRXJyb3I9UCxTLmlzRnVuY3Rpb249QixTLmlzUHJpbWl0aXZlPWZ1bmN0aW9uKGMpe3JldHVybiBudWxsPT09Y3x8ImJvb2xlYW4iPT10eXBlb2YgY3x8Im51bWJlciI9PXR5cGVvZiBjfHwic3RyaW5nIj09dHlwZW9mIGN8fCJzeW1ib2wiPT10eXBlb2YgY3x8dm9pZCAwPT09'@; put 'Y30sUy5pc0J1ZmZlcj1zKCIuL3N1cHBvcnQvaXNCdWZmZXIiKTt2YXIgeD1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO2Z1bmN0aW9uIGooYyxtKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q'@; put 'cm9wZXJ0eS5jYWxsKGMsbSl9Uy5sb2c9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiJXMgLSAlcyIsZnVuY3Rpb24gTSgpe3ZhciBjPW5ldyBEYXRlLG09W0QoYy5nZXRIb3VycygpKSxEKGMuZ2V0TWludXRlcygpKSxEKGMuZ2V0U2Vjb25kcygpKV0uam9pbigiOiIpO3JldHVybltjLmdldERh'@; put 'dGUoKSx4W2MuZ2V0TW9udGgoKV0sbV0uam9pbigiICIpfSgpLFMuZm9ybWF0LmFwcGx5KFMsYXJndW1lbnRzKSl9LFMuaW5oZXJpdHM9cygiaW5oZXJpdHMiKSxTLl9leHRlbmQ9ZnVuY3Rpb24oYyxtKXtpZighbXx8IUwobSkpcmV0dXJuIGM7Zm9yKHZhciBnPU9iamVjdC5rZXlzKG0pLHk9'@; put 'Zy5sZW5ndGg7eS0tOyljW2dbeV1dPW1bZ1t5XV07cmV0dXJuIGN9fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyxzKCJfcHJvY2VzcyIpLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7Ii4vc3VwcG9y'@; put 'dC9pc0J1ZmZlciI6NTI2LF9wcm9jZXNzOjQ2Nyxpbmhlcml0czo1MjV9XSw1Mjg6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ2MSIse2VudW1lcmFi'@; put 'bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGIuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywidjMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFMsInY0Iix7ZW51bWVyYWJsZTohMCxn'@; put 'ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ2NSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiTklMIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVu'@; put 'Y3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ2ZXJzaW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJ2YWxpZGF0ZSIse2VudW1lcmFibGU6ITAsZ2V0'@; put 'OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUywic3RyaW5naWZ5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJwYXJzZSIse2VudW1lcmFibGU6ITAs'@; put 'Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZGVmYXVsdH19KTt2YXIgYj1oKHMoIi4vdjEuanMiKSksYT1oKHMoIi4vdjMuanMiKSksbz1oKHMoIi4vdjQuanMiKSkscj1oKHMoIi4vdjUuanMiKSksdD1oKHMoIi4vbmlsLmpzIikpLGU9aChzKCIuL3ZlcnNpb24uanMiKSksbD1oKHMoIi4vdmFs'@; put 'aWRhdGUuanMiKSksbj1oKHMoIi4vc3RyaW5naWZ5LmpzIikpLGk9aChzKCIuL3BhcnNlLmpzIikpO2Z1bmN0aW9uIGgoZil7cmV0dXJuIGYmJmYuX19lc01vZHVsZT9mOntkZWZhdWx0OmZ9fX0seyIuL25pbC5qcyI6NTMwLCIuL3BhcnNlLmpzIjo1MzEsIi4vc3RyaW5naWZ5LmpzIjo1MzUs'@; put 'Ii4vdjEuanMiOjUzNiwiLi92My5qcyI6NTM3LCIuL3Y0LmpzIjo1MzksIi4vdjUuanMiOjU0MCwiLi92YWxpZGF0ZS5qcyI6NTQxLCIuL3ZlcnNpb24uanMiOjU0Mn1dLDUyOTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGkpe3JldHVybiAxNCsoaSs2ND4+Pjk8'@; put 'PDQpKzF9ZnVuY3Rpb24gYShpLGgpe2NvbnN0IGY9KDY1NTM1JmkpKyg2NTUzNSZoKTtyZXR1cm4oaT4+MTYpKyhoPj4xNikrKGY+PjE2KTw8MTZ8NjU1MzUmZn1mdW5jdGlvbiBvKGksaCxmLHUscCxkKXtyZXR1cm4gYSgodj1hKGEoaCxpKSxhKHUsZCkpKTw8KF89cCl8dj4+PjMyLV8sZik7'@; put 'dmFyIHYsX31mdW5jdGlvbiByKGksaCxmLHUscCxkLHYpe3JldHVybiBvKGgmZnx+aCZ1LGksaCxwLGQsdil9ZnVuY3Rpb24gdChpLGgsZix1LHAsZCx2KXtyZXR1cm4gbyhoJnV8ZiZ+dSxpLGgscCxkLHYpfWZ1bmN0aW9uIGUoaSxoLGYsdSxwLGQsdil7cmV0dXJuIG8oaF5mXnUsaSxoLHAs'@; put 'ZCx2KX1mdW5jdGlvbiBsKGksaCxmLHUscCxkLHYpe3JldHVybiBvKGZeKGh8fnUpLGksaCxwLGQsdil9T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuZGVmYXVsdD12b2lkIDAsUy5kZWZhdWx0PWZ1bmN0aW9uKGkpe2lmKCJzdHJpbmciPT10eXBl'@; put 'b2YgaSl7Y29uc3QgaD11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoaSkpO2k9bmV3IFVpbnQ4QXJyYXkoaC5sZW5ndGgpO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7KytmKWlbZl09aC5jaGFyQ29kZUF0KGYpfXJldHVybiBmdW5jdGlvbihoKXtjb25zdCBmPVtdLHU9MzIqaC5sZW5ndGg7'@; put 'Zm9yKGxldCBwPTA7cDx1O3ArPTgpe2NvbnN0IGQ9aFtwPj41XT4+PnAlMzImMjU1LHY9cGFyc2VJbnQoIjAxMjM0NTY3ODlhYmNkZWYiLmNoYXJBdChkPj4+NCYxNSkrIjAxMjM0NTY3ODlhYmNkZWYiLmNoYXJBdCgxNSZkKSwxNik7Zi5wdXNoKHYpfXJldHVybiBmfShmdW5jdGlvbihoLGYp'@; put 'e2hbZj4+NV18PTEyODw8ZiUzMixoW2IoZiktMV09ZjtsZXQgdT0xNzMyNTg0MTkzLHA9LTI3MTczMzg3OSxkPS0xNzMyNTg0MTk0LHY9MjcxNzMzODc4O2ZvcihsZXQgXz0wO188aC5sZW5ndGg7Xys9MTYpe2NvbnN0IEE9dSxJPXAsTD1kLE49djt1PXIodSxwLGQsdixoW19dLDcsLTY4MDg3'@; put 'NjkzNiksdj1yKHYsdSxwLGQsaFtfKzFdLDEyLC0zODk1NjQ1ODYpLGQ9cihkLHYsdSxwLGhbXysyXSwxNyw2MDYxMDU4MTkpLHA9cihwLGQsdix1LGhbXyszXSwyMiwtMTA0NDUyNTMzMCksdT1yKHUscCxkLHYsaFtfKzRdLDcsLTE3NjQxODg5Nyksdj1yKHYsdSxwLGQsaFtfKzVdLDEyLDEy'@; put 'MDAwODA0MjYpLGQ9cihkLHYsdSxwLGhbXys2XSwxNywtMTQ3MzIzMTM0MSkscD1yKHAsZCx2LHUsaFtfKzddLDIyLC00NTcwNTk4MyksdT1yKHUscCxkLHYsaFtfKzhdLDcsMTc3MDAzNTQxNiksdj1yKHYsdSxwLGQsaFtfKzldLDEyLC0xOTU4NDE0NDE3KSxkPXIoZCx2LHUscCxoW18rMTBd'@; put 'LDE3LC00MjA2MykscD1yKHAsZCx2LHUsaFtfKzExXSwyMiwtMTk5MDQwNDE2MiksdT1yKHUscCxkLHYsaFtfKzEyXSw3LDE4MDQ2MDM2ODIpLHY9cih2LHUscCxkLGhbXysxM10sMTIsLTQwMzQxMTAxKSxkPXIoZCx2LHUscCxoW18rMTRdLDE3LC0xNTAyMDAyMjkwKSxwPXIocCxkLHYsdSxo'@; put 'W18rMTVdLDIyLDEyMzY1MzUzMjkpLHU9dCh1LHAsZCx2LGhbXysxXSw1LC0xNjU3OTY1MTApLHY9dCh2LHUscCxkLGhbXys2XSw5LC0xMDY5NTAxNjMyKSxkPXQoZCx2LHUscCxoW18rMTFdLDE0LDY0MzcxNzcxMykscD10KHAsZCx2LHUsaFtfXSwyMCwtMzczODk3MzAyKSx1PXQodSxwLGQs'@; put 'dixoW18rNV0sNSwtNzAxNTU4NjkxKSx2PXQodix1LHAsZCxoW18rMTBdLDksMzgwMTYwODMpLGQ9dChkLHYsdSxwLGhbXysxNV0sMTQsLTY2MDQ3ODMzNSkscD10KHAsZCx2LHUsaFtfKzRdLDIwLC00MDU1Mzc4NDgpLHU9dCh1LHAsZCx2LGhbXys5XSw1LDU2ODQ0NjQzOCksdj10KHYsdSxw'@; put 'LGQsaFtfKzE0XSw5LC0xMDE5ODAzNjkwKSxkPXQoZCx2LHUscCxoW18rM10sMTQsLTE4NzM2Mzk2MSkscD10KHAsZCx2LHUsaFtfKzhdLDIwLDExNjM1MzE1MDEpLHU9dCh1LHAsZCx2LGhbXysxM10sNSwtMTQ0NDY4MTQ2Nyksdj10KHYsdSxwLGQsaFtfKzJdLDksLTUxNDAzNzg0KSxkPXQo'@; put 'ZCx2LHUscCxoW18rN10sMTQsMTczNTMyODQ3MykscD10KHAsZCx2LHUsaFtfKzEyXSwyMCwtMTkyNjYwNzczNCksdT1lKHUscCxkLHYsaFtfKzVdLDQsLTM3ODU1OCksdj1lKHYsdSxwLGQsaFtfKzhdLDExLC0yMDIyNTc0NDYzKSxkPWUoZCx2LHUscCxoW18rMTFdLDE2LDE4MzkwMzA1NjIp'@; put 'LHA9ZShwLGQsdix1LGhbXysxNF0sMjMsLTM1MzA5NTU2KSx1PWUodSxwLGQsdixoW18rMV0sNCwtMTUzMDk5MjA2MCksdj1lKHYsdSxwLGQsaFtfKzRdLDExLDEyNzI4OTMzNTMpLGQ9ZShkLHYsdSxwLGhbXys3XSwxNiwtMTU1NDk3NjMyKSxwPWUocCxkLHYsdSxoW18rMTBdLDIzLC0xMDk0'@; put 'NzMwNjQwKSx1PWUodSxwLGQsdixoW18rMTNdLDQsNjgxMjc5MTc0KSx2PWUodix1LHAsZCxoW19dLDExLC0zNTg1MzcyMjIpLGQ9ZShkLHYsdSxwLGhbXyszXSwxNiwtNzIyNTIxOTc5KSxwPWUocCxkLHYsdSxoW18rNl0sMjMsNzYwMjkxODkpLHU9ZSh1LHAsZCx2LGhbXys5XSw0LC02NDAz'@; put 'NjQ0ODcpLHY9ZSh2LHUscCxkLGhbXysxMl0sMTEsLTQyMTgxNTgzNSksZD1lKGQsdix1LHAsaFtfKzE1XSwxNiw1MzA3NDI1MjApLHA9ZShwLGQsdix1LGhbXysyXSwyMywtOTk1MzM4NjUxKSx1PWwodSxwLGQsdixoW19dLDYsLTE5ODYzMDg0NCksdj1sKHYsdSxwLGQsaFtfKzddLDEwLDEx'@; put 'MjY4OTE0MTUpLGQ9bChkLHYsdSxwLGhbXysxNF0sMTUsLTE0MTYzNTQ5MDUpLHA9bChwLGQsdix1LGhbXys1XSwyMSwtNTc0MzQwNTUpLHU9bCh1LHAsZCx2LGhbXysxMl0sNiwxNzAwNDg1NTcxKSx2PWwodix1LHAsZCxoW18rM10sMTAsLTE4OTQ5ODY2MDYpLGQ9bChkLHYsdSxwLGhbXysx'@; put 'MF0sMTUsLTEwNTE1MjMpLHA9bChwLGQsdix1LGhbXysxXSwyMSwtMjA1NDkyMjc5OSksdT1sKHUscCxkLHYsaFtfKzhdLDYsMTg3MzMxMzM1OSksdj1sKHYsdSxwLGQsaFtfKzE1XSwxMCwtMzA2MTE3NDQpLGQ9bChkLHYsdSxwLGhbXys2XSwxNSwtMTU2MDE5ODM4MCkscD1sKHAsZCx2LHUs'@; put 'aFtfKzEzXSwyMSwxMzA5MTUxNjQ5KSx1PWwodSxwLGQsdixoW18rNF0sNiwtMTQ1NTIzMDcwKSx2PWwodix1LHAsZCxoW18rMTFdLDEwLC0xMTIwMjEwMzc5KSxkPWwoZCx2LHUscCxoW18rMl0sMTUsNzE4Nzg3MjU5KSxwPWwocCxkLHYsdSxoW18rOV0sMjEsLTM0MzQ4NTU1MSksdT1hKHUs'@; put 'QSkscD1hKHAsSSksZD1hKGQsTCksdj1hKHYsTil9cmV0dXJuW3UscCxkLHZdfShmdW5jdGlvbihoKXtpZigwPT09aC5sZW5ndGgpcmV0dXJuW107Y29uc3QgZj04KmgubGVuZ3RoLHU9bmV3IFVpbnQzMkFycmF5KGIoZikpO2ZvcihsZXQgcD0wO3A8ZjtwKz04KXVbcD4+NV18PSgyNTUmaFtw'@; put 'LzhdKTw8cCUzMjtyZXR1cm4gdX0oaSksOCppLmxlbmd0aCkpfX0se31dLDUzMDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5kZWZhdWx0PXZvaWQgMCxTLmRlZmF1bHQ9IjAwMDAwMDAwLTAw'@; put 'MDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCJ9LHt9XSw1MzE6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuZGVmYXVsdD12b2lkIDA7dmFyIGIsYT0oYj1zKCIuL3ZhbGlkYXRlLmpzIikpJiZi'@; put 'Ll9fZXNNb2R1bGU/Yjp7ZGVmYXVsdDpifTtTLmRlZmF1bHQ9ZnVuY3Rpb24ocil7aWYoISgwLGEuZGVmYXVsdCkocikpdGhyb3cgVHlwZUVycm9yKCJJbnZhbGlkIFVVSUQiKTtsZXQgdDtjb25zdCBlPW5ldyBVaW50OEFycmF5KDE2KTtyZXR1cm4gZVswXT0odD1wYXJzZUludChyLnNsaWNl'@; put 'KDAsOCksMTYpKT4+PjI0LGVbMV09dD4+PjE2JjI1NSxlWzJdPXQ+Pj44JjI1NSxlWzNdPTI1NSZ0LGVbNF09KHQ9cGFyc2VJbnQoci5zbGljZSg5LDEzKSwxNikpPj4+OCxlWzVdPTI1NSZ0LGVbNl09KHQ9cGFyc2VJbnQoci5zbGljZSgxNCwxOCksMTYpKT4+PjgsZVs3XT0yNTUmdCxlWzhd'@; put 'PSh0PXBhcnNlSW50KHIuc2xpY2UoMTksMjMpLDE2KSk+Pj44LGVbOV09MjU1JnQsZVsxMF09KHQ9cGFyc2VJbnQoci5zbGljZSgyNCwzNiksMTYpKS8xMDk5NTExNjI3Nzc2JjI1NSxlWzExXT10LzQyOTQ5NjcyOTYmMjU1LGVbMTJdPXQ+Pj4yNCYyNTUsZVsxM109dD4+PjE2JjI1NSxlWzE0'@; put 'XT10Pj4+OCYyNTUsZVsxNV09MjU1JnQsZX19LHsiLi92YWxpZGF0ZS5qcyI6NTQxfV0sNTMyOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLmRlZmF1bHQ9dm9pZCAwLFMuZGVmYXVsdD0vXig/'@; put 'OlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2l9LHt9XSw1MzM6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7bGV0IGI7T2JqZWN0'@; put 'LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuZGVmYXVsdD1mdW5jdGlvbigpe2lmKCFiJiYoYj10eXBlb2YgY3J5cHRvPCJ1IiYmY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKGNyeXB0byl8fHR5cGVvZiBtc0Ny'@; put 'eXB0bzwidSImJiJmdW5jdGlvbiI9PXR5cGVvZiBtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMmJm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKSwhYikpdGhyb3cgbmV3IEVycm9yKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKCkgbm90IHN1cHBvcnRlZC4gU2VlIGh0dHBz'@; put 'Oi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCNnZXRyYW5kb212YWx1ZXMtbm90LXN1cHBvcnRlZCIpO3JldHVybiBiKGEpfTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KX0se31dLDUzNDpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKHIsdCxlLGwpe3N3aXRjaChy'@; put 'KXtjYXNlIDA6cmV0dXJuIHQmZV5+dCZsO2Nhc2UgMTpjYXNlIDM6cmV0dXJuIHReZV5sO2Nhc2UgMjpyZXR1cm4gdCZlXnQmbF5lJmx9fWZ1bmN0aW9uIGEocix0KXtyZXR1cm4gcjw8dHxyPj4+MzItdH1PYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks'@; put 'Uy5kZWZhdWx0PXZvaWQgMCxTLmRlZmF1bHQ9ZnVuY3Rpb24ocil7Y29uc3QgdD1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml0sZT1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdO2lmKCJzdHJpbmciPT10'@; put 'eXBlb2Ygcil7Y29uc3QgaD11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQocikpO3I9W107Zm9yKGxldCBmPTA7ZjxoLmxlbmd0aDsrK2Ypci5wdXNoKGguY2hhckNvZGVBdChmKSl9ZWxzZSBBcnJheS5pc0FycmF5KHIpfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyKSk7ci5w'@; put 'dXNoKDEyOCk7Y29uc3Qgbj1NYXRoLmNlaWwoKHIubGVuZ3RoLzQrMikvMTYpLGk9bmV3IEFycmF5KG4pO2ZvcihsZXQgaD0wO2g8bjsrK2gpe2NvbnN0IGY9bmV3IFVpbnQzMkFycmF5KDE2KTtmb3IobGV0IHU9MDt1PDE2OysrdSlmW3VdPXJbNjQqaCs0KnVdPDwyNHxyWzY0KmgrNCp1KzFd'@; put 'PDwxNnxyWzY0KmgrNCp1KzJdPDw4fHJbNjQqaCs0KnUrM107aVtoXT1mfWlbbi0xXVsxNF09OCooci5sZW5ndGgtMSkvTWF0aC5wb3coMiwzMiksaVtuLTFdWzE0XT1NYXRoLmZsb29yKGlbbi0xXVsxNF0pLGlbbi0xXVsxNV09OCooci5sZW5ndGgtMSkmNDI5NDk2NzI5NTtmb3IobGV0IGg9'@; put 'MDtoPG47KytoKXtjb25zdCBmPW5ldyBVaW50MzJBcnJheSg4MCk7Zm9yKGxldCBBPTA7QTwxNjsrK0EpZltBXT1pW2hdW0FdO2ZvcihsZXQgQT0xNjtBPDgwOysrQSlmW0FdPWEoZltBLTNdXmZbQS04XV5mW0EtMTRdXmZbQS0xNl0sMSk7bGV0IHU9ZVswXSxwPWVbMV0sZD1lWzJdLHY9ZVsz'@; put 'XSxfPWVbNF07Zm9yKGxldCBBPTA7QTw4MDsrK0Epe2NvbnN0IEk9TWF0aC5mbG9vcihBLzIwKSxMPWEodSw1KStiKEkscCxkLHYpK18rdFtJXStmW0FdPj4+MDtfPXYsdj1kLGQ9YShwLDMwKT4+PjAscD11LHU9TH1lWzBdPWVbMF0rdT4+PjAsZVsxXT1lWzFdK3A+Pj4wLGVbMl09ZVsyXStk'@; put 'Pj4+MCxlWzNdPWVbM10rdj4+PjAsZVs0XT1lWzRdK18+Pj4wfXJldHVybltlWzBdPj4yNCYyNTUsZVswXT4+MTYmMjU1LGVbMF0+PjgmMjU1LDI1NSZlWzBdLGVbMV0+PjI0JjI1NSxlWzFdPj4xNiYyNTUsZVsxXT4+OCYyNTUsMjU1JmVbMV0sZVsyXT4+MjQmMjU1LGVbMl0+PjE2JjI1NSxl'@; put 'WzJdPj44JjI1NSwyNTUmZVsyXSxlWzNdPj4yNCYyNTUsZVszXT4+MTYmMjU1LGVbM10+PjgmMjU1LDI1NSZlWzNdLGVbNF0+PjI0JjI1NSxlWzRdPj4xNiYyNTUsZVs0XT4+OCYyNTUsMjU1JmVbNF1dfX0se31dLDUzNTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5kZWZhdWx0PXZvaWQgMDt2YXIgYixhPShiPXMoIi4vdmFsaWRhdGUuanMiKSkmJmIuX19lc01vZHVsZT9iOntkZWZhdWx0OmJ9O2NvbnN0IG89W107Zm9yKGxldCB0PTA7dDwyNTY7Kyt0KW8ucHVzaCgodCsyNTYpLnRv'@; put 'U3RyaW5nKDE2KS5zdWJzdHIoMSkpO1MuZGVmYXVsdD1mdW5jdGlvbih0KXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtjb25zdCBsPShvW3RbZSswXV0rb1t0W2UrMV1dK29bdFtlKzJdXStvW3RbZSszXV0rIi0iK29bdFtl'@; put 'KzRdXStvW3RbZSs1XV0rIi0iK29bdFtlKzZdXStvW3RbZSs3XV0rIi0iK29bdFtlKzhdXStvW3RbZSs5XV0rIi0iK29bdFtlKzEwXV0rb1t0W2UrMTFdXStvW3RbZSsxMl1dK29bdFtlKzEzXV0rb1t0W2UrMTRdXStvW3RbZSsxNV1dKS50b0xvd2VyQ2FzZSgpO2lmKCEoMCxhLmRlZmF1bHQp'@; put 'KGwpKXRocm93IFR5cGVFcnJvcigiU3RyaW5naWZpZWQgVVVJRCBpcyBpbnZhbGlkIik7cmV0dXJuIGx9fSx7Ii4vdmFsaWRhdGUuanMiOjU0MX1dLDUzNjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEw'@; put 'fSksUy5kZWZhdWx0PXZvaWQgMDt2YXIgYj1vKHMoIi4vcm5nLmpzIikpLGE9byhzKCIuL3N0cmluZ2lmeS5qcyIpKTtmdW5jdGlvbiBvKGkpe3JldHVybiBpJiZpLl9fZXNNb2R1bGU/aTp7ZGVmYXVsdDppfX1sZXQgcix0LGU9MCxsPTA7Uy5kZWZhdWx0PWZ1bmN0aW9uKGksaCxmKXtsZXQg'@; put 'dT1oJiZmfHwwO2NvbnN0IHA9aHx8bmV3IEFycmF5KDE2KTtsZXQgZD0oaT1pfHx7fSkubm9kZXx8cix2PXZvaWQgMCE9PWkuY2xvY2tzZXE/aS5jbG9ja3NlcTp0O2lmKG51bGw9PWR8fG51bGw9PXYpe2NvbnN0IFA9aS5yYW5kb218fChpLnJuZ3x8Yi5kZWZhdWx0KSgpO251bGw9PWQmJihk'@; put 'PXI9WzF8UFswXSxQWzFdLFBbMl0sUFszXSxQWzRdLFBbNV1dKSxudWxsPT12JiYodj10PTE2MzgzJihQWzZdPDw4fFBbN10pKX1sZXQgXz12b2lkIDAhPT1pLm1zZWNzP2kubXNlY3M6RGF0ZS5ub3coKSxBPXZvaWQgMCE9PWkubnNlY3M/aS5uc2VjczpsKzE7Y29uc3QgST1fLWUrKEEtbCkv'@; put 'MWU0O2lmKEk8MCYmdm9pZCAwPT09aS5jbG9ja3NlcSYmKHY9disxJjE2MzgzKSwoSTwwfHxfPmUpJiZ2b2lkIDA9PT1pLm5zZWNzJiYoQT0wKSxBPj0xZTQpdGhyb3cgbmV3IEVycm9yKCJ1dWlkLnYxKCk6IENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gMTBNIHV1aWRzL3NlYyIpO2U9XyxsPUEs'@; put 'dD12LF8rPTEyMjE5MjkyOGU1O2NvbnN0IEw9KDFlNCooMjY4NDM1NDU1Jl8pK0EpJTQyOTQ5NjcyOTY7cFt1KytdPUw+Pj4yNCYyNTUscFt1KytdPUw+Pj4xNiYyNTUscFt1KytdPUw+Pj44JjI1NSxwW3UrK109MjU1Jkw7Y29uc3QgTj1fLzQyOTQ5NjcyOTYqMWU0JjI2ODQzNTQ1NTtwW3Ur'@; put 'K109Tj4+PjgmMjU1LHBbdSsrXT0yNTUmTixwW3UrK109Tj4+PjI0JjE1fDE2LHBbdSsrXT1OPj4+MTYmMjU1LHBbdSsrXT12Pj4+OHwxMjgscFt1KytdPTI1NSZ2O2ZvcihsZXQgUD0wO1A8NjsrK1ApcFt1K1BdPWRbUF07cmV0dXJuIGh8fCgwLGEuZGVmYXVsdCkocCl9fSx7Ii4vcm5nLmpz'@; put 'Ijo1MzMsIi4vc3RyaW5naWZ5LmpzIjo1MzV9XSw1Mzc6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuZGVmYXVsdD12b2lkIDA7dmFyIGI9byhzKCIuL3YzNS5qcyIpKSxhPW8ocygiLi9tZDUu'@; put 'anMiKSk7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19dmFyIHI9KDAsYi5kZWZhdWx0KSgidjMiLDQ4LGEuZGVmYXVsdCk7Uy5kZWZhdWx0PXJ9LHsiLi9tZDUuanMiOjUyOSwiLi92MzUuanMiOjUzOH1dLDUzODpbZnVuY3Rpb24ocyxFLFMpeyJ1'@; put 'c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5kZWZhdWx0PWZ1bmN0aW9uKGUsbCxuKXtmdW5jdGlvbiBpKGgsZix1LHApe2lmKCJzdHJpbmciPT10eXBlb2YgaCYmKGg9ZnVuY3Rpb24odil7dj11bmVzY2FwZShlbmNvZGVVUklD'@; put 'b21wb25lbnQodikpO2NvbnN0IF89W107Zm9yKGxldCBBPTA7QTx2Lmxlbmd0aDsrK0EpXy5wdXNoKHYuY2hhckNvZGVBdChBKSk7cmV0dXJuIF99KGgpKSwic3RyaW5nIj09dHlwZW9mIGYmJihmPSgwLGEuZGVmYXVsdCkoZikpLDE2IT09Zi5sZW5ndGgpdGhyb3cgVHlwZUVycm9yKCJOYW1l'@; put 'c3BhY2UgbXVzdCBiZSBhcnJheS1saWtlICgxNiBpdGVyYWJsZSBpbnRlZ2VyIHZhbHVlcywgMC0yNTUpIik7bGV0IGQ9bmV3IFVpbnQ4QXJyYXkoMTYraC5sZW5ndGgpO2lmKGQuc2V0KGYpLGQuc2V0KGgsZi5sZW5ndGgpLGQ9bihkKSxkWzZdPTE1JmRbNl18bCxkWzhdPTYzJmRbOF18MTI4'@; put 'LHUpe3A9cHx8MDtmb3IobGV0IHY9MDt2PDE2Oysrdil1W3Ardl09ZFt2XTtyZXR1cm4gdX1yZXR1cm4oMCxiLmRlZmF1bHQpKGQpfXRyeXtpLm5hbWU9ZX1jYXRjaHt9cmV0dXJuIGkuRE5TPXIsaS5VUkw9dCxpfSxTLlVSTD1TLkROUz12b2lkIDA7dmFyIGI9byhzKCIuL3N0cmluZ2lmeS5q'@; put 'cyIpKSxhPW8ocygiLi9wYXJzZS5qcyIpKTtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1jb25zdCByPSI2YmE3YjgxMC05ZGFkLTExZDEtODBiNC0wMGMwNGZkNDMwYzgiO1MuRE5TPXI7Y29uc3QgdD0iNmJhN2I4MTEtOWRhZC0xMWQxLTgwYjQt'@; put 'MDBjMDRmZDQzMGM4IjtTLlVSTD10fSx7Ii4vcGFyc2UuanMiOjUzMSwiLi9zdHJpbmdpZnkuanMiOjUzNX1dLDUzOTpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5kZWZhdWx0PXZvaWQgMDt2'@; put 'YXIgYj1vKHMoIi4vcm5nLmpzIikpLGE9byhzKCIuL3N0cmluZ2lmeS5qcyIpKTtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1TLmRlZmF1bHQ9ZnVuY3Rpb24odCxlLGwpe2NvbnN0IG49KHQ9dHx8e30pLnJhbmRvbXx8KHQucm5nfHxiLmRlZmF1'@; put 'bHQpKCk7aWYobls2XT0xNSZuWzZdfDY0LG5bOF09NjMmbls4XXwxMjgsZSl7bD1sfHwwO2ZvcihsZXQgaT0wO2k8MTY7KytpKWVbbCtpXT1uW2ldO3JldHVybiBlfXJldHVybigwLGEuZGVmYXVsdCkobil9fSx7Ii4vcm5nLmpzIjo1MzMsIi4vc3RyaW5naWZ5LmpzIjo1MzV9XSw1NDA6W2Z1'@; put 'bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFMuZGVmYXVsdD12b2lkIDA7dmFyIGI9byhzKCIuL3YzNS5qcyIpKSxhPW8ocygiLi9zaGExLmpzIikpO2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19l'@; put 'c01vZHVsZT90OntkZWZhdWx0OnR9fXZhciByPSgwLGIuZGVmYXVsdCkoInY1Iiw4MCxhLmRlZmF1bHQpO1MuZGVmYXVsdD1yfSx7Ii4vc2hhMS5qcyI6NTM0LCIuL3YzNS5qcyI6NTM4fV0sNTQxOltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShT'@; put 'LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLmRlZmF1bHQ9dm9pZCAwO3ZhciBiLGE9KGI9cygiLi9yZWdleC5qcyIpKSYmYi5fX2VzTW9kdWxlP2I6e2RlZmF1bHQ6Yn07Uy5kZWZhdWx0PWZ1bmN0aW9uKHIpe3JldHVybiJzdHJpbmciPT10eXBlb2YgciYmYS5kZWZhdWx0LnRlc3Qocil9'@; put 'fSx7Ii4vcmVnZXguanMiOjUzMn1dLDU0MjpbZnVuY3Rpb24ocyxFLFMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5kZWZhdWx0PXZvaWQgMDt2YXIgYixhPShiPXMoIi4vdmFsaWRhdGUuanMiKSkmJmIuX19lc01vZHVs'@; put 'ZT9iOntkZWZhdWx0OmJ9O1MuZGVmYXVsdD1mdW5jdGlvbihyKXtpZighKDAsYS5kZWZhdWx0KShyKSl0aHJvdyBUeXBlRXJyb3IoIkludmFsaWQgVVVJRCIpO3JldHVybiBwYXJzZUludChyLnN1YnN0cigxNCwxKSwxNil9fSx7Ii4vdmFsaWRhdGUuanMiOjU0MX1dLDU0MzpbZnVuY3Rpb24o'@; put 'cyxFLFMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGEpe3JldHVybiBhPj02NSYmYTw9OTB8fGE+PTk3JiZhPD0xMjJ8fDU4PT09YXx8OTU9PT1hfHw4MjA0PT09YXx8ODIwNT09PWF8fGE+PTE5MiYmYTw9MjE0fHxhPj0yMTYmJmE8PTI0Nnx8YT49MjQ4JiZhPD03Njd8fGE+PTg4MCYmYTw9'@; put 'ODkzfHxhPj04OTUmJmE8PTgxOTF8fGE+PTgzMDQmJmE8PTg1OTF8fGE+PTExMjY0JiZhPD0xMjI3MXx8YT49MTIyODkmJmE8PTU1Mjk1fHxhPj02Mzc0NCYmYTw9NjQ5NzV8fGE+PTY1MDA4JiZhPD02NTUzM3x8YT49NjU1MzYmJmE8PTk4MzAzOX1PYmplY3QuZGVmaW5lUHJvcGVydHkoUywi'@; put 'X19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5DSEFSPSJcdFxuXHIgLVx1ZDdmZlx1ZTAwMC1cdWZmZmRcdXsxMDAwMH0tXHV7MTBmZmZmfSIsUy5TPSIgXHRcclxuIixTLk5BTUVfU1RBUlRfQ0hBUj0iOkEtWl9hLXpceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx1MDJmZlx1MDM3MC1cdTAzN2Rc'@; put 'dTAzN2YtXHUxZmZmXHUyMDBjXHUyMDBkXHUyMDcwLVx1MjE4Zlx1MmMwMC1cdTJmZWZcdTMwMDEtXHVkN2ZmXHVmOTAwLVx1ZmRjZlx1ZmRmMC1cdWZmZmRcdXsxMDAwMH0tXHV7ZWZmZmZ9IixTLk5BTUVfQ0hBUj0iLSIrUy5OQU1FX1NUQVJUX0NIQVIrIi4wLTlceGI3XHUwMzAwLVx1MDM2'@; put 'Zlx1MjAzZi1cdTIwNDAiLFMuQ0hBUl9SRT1uZXcgUmVnRXhwKCJeWyIrUy5DSEFSKyJdJCIsInUiKSxTLlNfUkU9bmV3IFJlZ0V4cCgiXlsiK1MuUysiXSskIiwidSIpLFMuTkFNRV9TVEFSVF9DSEFSX1JFPW5ldyBSZWdFeHAoIl5bIitTLk5BTUVfU1RBUlRfQ0hBUisiXSQiLCJ1IiksUy5O'@; put 'QU1FX0NIQVJfUkU9bmV3IFJlZ0V4cCgiXlsiK1MuTkFNRV9DSEFSKyJdJCIsInUiKSxTLk5BTUVfUkU9bmV3IFJlZ0V4cCgiXlsiK1MuTkFNRV9TVEFSVF9DSEFSKyJdWyIrUy5OQU1FX0NIQVIrIl0qJCIsInUiKSxTLk5NVE9LRU5fUkU9bmV3IFJlZ0V4cCgiXlsiK1MuTkFNRV9DSEFSKyJd'@; put 'KyQiLCJ1IiksUy5TX0xJU1Q9WzMyLDEwLDEzLDldLFMuaXNDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiBhPj0zMiYmYTw9NTUyOTV8fDEwPT09YXx8MTM9PT1hfHw5PT09YXx8YT49NTczNDQmJmE8PTY1NTMzfHxhPj02NTUzNiYmYTw9MTExNDExMX0sUy5pc1M9ZnVuY3Rpb24oYSl7cmV0dXJu'@; put 'IDMyPT09YXx8MTA9PT1hfHwxMz09PWF8fDk9PT1hfSxTLmlzTmFtZVN0YXJ0Q2hhcj1iLFMuaXNOYW1lQ2hhcj1mdW5jdGlvbihhKXtyZXR1cm4gYihhKXx8YT49NDgmJmE8PTU3fHw0NT09PWF8fDQ2PT09YXx8MTgzPT09YXx8YT49NzY4JiZhPD04Nzl8fGE+PTgyNTUmJmE8PTgyNTZ9fSx7'@; put 'fV0sNTQ0OltmdW5jdGlvbihzLEUsUyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGE+PTY1JiZhPD05MHx8YT49OTcmJmE8PTEyMnx8NTg9PT1hfHw5NT09PWF8fDgyMDQ9PT1hfHw4MjA1PT09YXx8YT49MTkyJiZhPD0yMTR8fGE+PTIxNiYmYTw9MjQ2fHxhPj0yNDgmJmE8'@; put 'PTc2N3x8YT49ODgwJiZhPD04OTN8fGE+PTg5NSYmYTw9ODE5MXx8YT49ODMwNCYmYTw9ODU5MXx8YT49MTEyNjQmJmE8PTEyMjcxfHxhPj0xMjI4OSYmYTw9NTUyOTV8fGE+PTYzNzQ0JiZhPD02NDk3NXx8YT49NjUwMDgmJmE8PTY1NTMzfHxhPj02NTUzNiYmYTw9OTgzMDM5fU9iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eShTLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTLkNIQVI9Ilx4MDEtXHVkN2ZmXHVlMDAwLVx1ZmZmZFx1ezEwMDAwfS1cdXsxMGZmZmZ9IixTLlJFU1RSSUNURURfQ0hBUj0iXHgwMS1cYlx2XGZceDBlLVx4MWZceDdmLVx4ODRceDg2LVx4OWYiLFMuUz0iIFx0XHJc'@; put 'biIsUy5OQU1FX1NUQVJUX0NIQVI9IjpBLVpfYS16XHhjMC1ceGQ2XHhkOC1ceGY2XHhmOC1cdTAyZmZcdTAzNzAtXHUwMzdkXHUwMzdmLVx1MWZmZlx1MjAwY1x1MjAwZFx1MjA3MC1cdTIxOGZcdTJjMDAtXHUyZmVmXHUzMDAxLVx1ZDdmZlx1ZjkwMC1cdWZkY2ZcdWZkZjAtXHVmZmZkXHV7'@; put 'MTAwMDB9LVx1e2VmZmZmfSIsUy5OQU1FX0NIQVI9Ii0iK1MuTkFNRV9TVEFSVF9DSEFSKyIuMC05XHhiN1x1MDMwMC1cdTAzNmZcdTIwM2YtXHUyMDQwIixTLkNIQVJfUkU9bmV3IFJlZ0V4cCgiXlsiK1MuQ0hBUisiXSQiLCJ1IiksUy5SRVNUUklDVEVEX0NIQVJfUkU9bmV3IFJlZ0V4cCgi'@; put 'XlsiK1MuUkVTVFJJQ1RFRF9DSEFSKyJdJCIsInUiKSxTLlNfUkU9bmV3IFJlZ0V4cCgiXlsiK1MuUysiXSskIiwidSIpLFMuTkFNRV9TVEFSVF9DSEFSX1JFPW5ldyBSZWdFeHAoIl5bIitTLk5BTUVfU1RBUlRfQ0hBUisiXSQiLCJ1IiksUy5OQU1FX0NIQVJfUkU9bmV3IFJlZ0V4cCgiXlsi'@; put 'K1MuTkFNRV9DSEFSKyJdJCIsInUiKSxTLk5BTUVfUkU9bmV3IFJlZ0V4cCgiXlsiK1MuTkFNRV9TVEFSVF9DSEFSKyJdWyIrUy5OQU1FX0NIQVIrIl0qJCIsInUiKSxTLk5NVE9LRU5fUkU9bmV3IFJlZ0V4cCgiXlsiK1MuTkFNRV9DSEFSKyJdKyQiLCJ1IiksUy5TX0xJU1Q9WzMyLDEwLDEz'@; put 'LDldLFMuaXNDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiBhPj0xJiZhPD01NTI5NXx8YT49NTczNDQmJmE8PTY1NTMzfHxhPj02NTUzNiYmYTw9MTExNDExMX0sUy5pc1Jlc3RyaWN0ZWRDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiBhPj0xJiZhPD04fHwxMT09PWF8fDEyPT09YXx8YT49MTQmJmE8'@; put 'PTMxfHxhPj0xMjcmJmE8PTEzMnx8YT49MTM0JiZhPD0xNTl9LFMuaXNDaGFyQW5kTm90UmVzdHJpY3RlZD1mdW5jdGlvbihhKXtyZXR1cm4gOT09PWF8fDEwPT09YXx8MTM9PT1hfHxhPjMxJiZhPDEyN3x8MTMzPT09YXx8YT4xNTkmJmE8PTU1Mjk1fHxhPj01NzM0NCYmYTw9NjU1MzN8fGE+'@; put 'PTY1NTM2JiZhPD0xMTE0MTExfSxTLmlzUz1mdW5jdGlvbihhKXtyZXR1cm4gMzI9PT1hfHwxMD09PWF8fDEzPT09YXx8OT09PWF9LFMuaXNOYW1lU3RhcnRDaGFyPWIsUy5pc05hbWVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiBiKGEpfHxhPj00OCYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHwx'@; put 'ODM9PT1hfHxhPj03NjgmJmE8PTg3OXx8YT49ODI1NSYmYTw9ODI1Nn19LHt9XSw1NDU6W2Z1bmN0aW9uKHMsRSxTKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihhKXtyZXR1cm4gYT49NjUmJmE8PTkwfHw5NT09PWF8fGE+PTk3JiZhPD0xMjJ8fGE+PTE5MiYmYTw9MjE0fHxhPj0yMTYmJmE8'@; put 'PTI0Nnx8YT49MjQ4JiZhPD03Njd8fGE+PTg4MCYmYTw9ODkzfHxhPj04OTUmJmE8PTgxOTF8fGE+PTgyMDQmJmE8PTgyMDV8fGE+PTgzMDQmJmE8PTg1OTF8fGE+PTExMjY0JiZhPD0xMjI3MXx8YT49MTIyODkmJmE8PTU1Mjk1fHxhPj02Mzc0NCYmYTw9NjQ5NzV8fGE+PTY1MDA4JiZhPD02'@; put 'NTUzM3x8YT49NjU1MzYmJmE8PTk4MzAzOX1PYmplY3QuZGVmaW5lUHJvcGVydHkoUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUy5OQ19OQU1FX1NUQVJUX0NIQVI9IkEtWl9hLXpceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx1MDJmZlx1MDM3MC1cdTAzN2RcdTAzN2YtXHUxZmZmXHUyMDBj'@; put 'LVx1MjAwZFx1MjA3MC1cdTIxOGZcdTJjMDAtXHUyZmVmXHUzMDAxLVx1ZDdmZlx1ZjkwMC1cdWZkY2ZcdWZkZjAtXHVmZmZkXHV7MTAwMDB9LVx1e2VmZmZmfSIsUy5OQ19OQU1FX0NIQVI9Ii0iK1MuTkNfTkFNRV9TVEFSVF9DSEFSKyIuMC05XHhiN1x1MDMwMC1cdTAzNmZcdTIwM2YtXHUy'@; put 'MDQwIixTLk5DX05BTUVfU1RBUlRfQ0hBUl9SRT1uZXcgUmVnRXhwKCJeWyIrUy5OQ19OQU1FX1NUQVJUX0NIQVIrIl0kIiwidSIpLFMuTkNfTkFNRV9DSEFSX1JFPW5ldyBSZWdFeHAoIl5bIitTLk5DX05BTUVfQ0hBUisiXSQiLCJ1IiksUy5OQ19OQU1FX1JFPW5ldyBSZWdFeHAoIl5bIitT'@; put 'Lk5DX05BTUVfU1RBUlRfQ0hBUisiXVsiK1MuTkNfTkFNRV9DSEFSKyJdKiQiLCJ1IiksUy5pc05DTmFtZVN0YXJ0Q2hhcj1iLFMuaXNOQ05hbWVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiBiKGEpfHw0NT09PWF8fDQ2PT09YXx8YT49NDgmJmE8PTU3fHwxODM9PT1hfHxhPj03NjgmJmE8PTg3'@; put 'OXx8YT49ODI1NSYmYTw9ODI1Nn19LHt9XX0se30sWzE1XSkoMTUpfX1dKTs='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=Metropolis-200.0609337a726323e0.woff; filename filecode temp lrecl=32767; data _null_; file filecode; put 'd09GRgABAAAAAFQgABMAAAAAm8AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcfNH55kdERUYAAAHEAAAATQAAAGIH1Qf8R1BPUwAAAhQAAAcaAAAOdjy+ejlHU1VCAAAJMAAAACAAAAAgRHZMdU9TLzIAAAlQAAAATQAAAGBoPqzrY21hcAAACaAAAAJsAAADnndDD7Fj'@; put 'dnQgAAAMDAAAADAAAAA8EY4BjGZwZ20AAAw8AAAGOgAADRZ2ZH12Z2FzcAAAEngAAAAIAAAACAAAABBnbHlmAAASgAAANnMAAGgUxFIgN2hlYWQAAEj0AAAANgAAADYLYYgUaGhlYQAASSwAAAAhAAAAJAd2BDJobXR4AABJUAAAAogAAATuuPI/FGxvY2EAAEvYAAACcgAAAnqJanBwbWF4cAAA'@; put 'TkwAAAAgAAAAIAKEAeluYW1lAABObAAAAYIAAANWLdCE9XBvc3QAAE/wAAADoQAABiGXFj2KcHJlcAAAU5QAAACBAAAAjRlQAhB3ZWJmAABUGAAAAAYAAAAG9nhYmAAAAAEAAAAA1FG1agAAAADTwZ2GAAAAANS+pvV42g2MQQqEQBDEEkf0MLPof7ypL/DofXfV/z/AIgRC0TQCLR6cdFRkjVso'@; put '7HzTv1D4B7m4048DOlopNlv645SeXXLT51sXzSa+W3AF3AAAAHjajVcBbFbVFf7Oufe+v/0LWEoLCB0DUhkxTWWESUVGiWMFsVPDmEEHZlucY61Q7BjZiDFKHZql6YzDDpE0qAyMNsBQsSKypqvOOUdkY6YhYFwHyDYm07nFCPL2vfN+6F9ot/GFj8O59917zznf7bmFAMhiMhZC5tXWLUYBPD2I'@; put 'Yzj+I1C4hm83rUTpim82NaB8RcOKBs4G/cloOiNhx++yGI0JmGIehwrUuY50NFplq0rUiogfyfDV/GKc+QJKL0BQG7eSA2ajBZ8ilnFQHoPzZKwcQRGG8WR/j7vj7XFvfBRD/Ik/GHLkt4N6+7h3/v+Pxz8dcoX3hhwZ+jx/jPcOMbI97ov3JbjI38u/v0kw2B5xK7OkmMhMT2G2PkcoqgiHqwiP'@; put '6UTAF4gIM4kMriEKMIsoZG5ns1JrCMH9+BFnPkgEZryF/hcIwYuE4CVCcZDw+APhcZQI+DMR4TgR4T0iwmkigw+IDM4Qhazep1wtJrJSLMUolBIpIZdKKXkcK5vl2tOokgp+cyUhdu70xGondnZibycOmEcUoJYoxAIii0VEERrxfa6QRBJZJJFFEvATPMr5bUQhfoZNnP8Efs7524ki7CQy2EUU'@; put '4BdEBruJAjxHZPA8UYA9RCE6iULsJ7LoIrLoJrLoIbJ4lRD8mhDLToR3iCL8iUjzopYXtbx4y0uwvATLi7e8eMuLlzEyhvm6XC4nJzkKXLWKGZrCGlexttNZ05nMzCxmpBGrcDea8D2sZi3vxzo04wFm4UFGv5MRPcdKvsgKHmTljrJix1mp0zzJGbtZxdy3NLlfeq/dw9ekiXEPp7r2UXet8b8G'@; put 'UauNDHYHLoycSjDIl6eHvBunziue9/po3Bw3XzyS3rp4c7x50JG/2DeKctOEmCYUXyMcbiU8biMClhIRFfEo5yRqEFODmhoUHUSEHURklRartFilxSotVlfFMcLhBOFwknA4SwScIyIZKSNZ11EyilwmZeSkomIVFRkv47m+ohKXEUUYSQwzpYspXU3pLqf0+US+0r3FE+XFkzGlu5zS+zXuLSpv'@; put 'UWUsqvNKTzWeqnsvMbSuk2i9aVZzESbKdRZnxvTrTL+aizlRseYiT7SsefHnK9pZFjIyTa7h7slPr1pGuIj1upVxLWUkbYxkIx5jNE/gSTyFrYxoOyPZwdvYydN28ZQ9PN0x1uAkT3aOJxjF3cZwl/FccYLpWTHCOkqJqaOEu9TQErNr2ImORBPIfcx/t6yXFnlENkq7bJVnZJfskX3SLa/LATkk'@; put 'h+VdOSGn5EP5WM6p16wW62gt18k6Vat0hs7SuVqrdbpIl+jteofW6ypdo/foOn1IW3WDbtItuk07dLd26n7t0Tf0LX1bj2ifntT39SP9xMFFbpgrcWPdBFfhrnTT3NVutrvOLXA3usXuNvcNd6e7yzW5H7h73QPux+5h1+Y2uyfd026He97tdV3uNfem+73rde+4Y+6v7h/u3+6sV1/gR/hSP85P'@; put '9FN8pZ/uq/0cP88v9Df7W/xS/y2/3K/0q/1af59f71v8I36jb/db/TN+l9/j9/lu/7o/4A/5w/5df8Kf8h/6j/254EM2FIfRoTxMDlNDVZgRZoW5oTbUhUVhSbg93BHqw6qwJtwT1oWHQmvYEDaFLWFb6Ai7Q2fYH3rCG+Gt8HY4EvrCyfB++Ch8EiGKomG8HU26k9xsPN+4xnhDwmg0bjPP2n5/'@; put 'jm8wrjS+1nhlwlpm9vXGc4wrlD9T5Qrjq4yrE0a9cbu+TG4wf6XxbPP3Gp8xz0Tjx40nGUfGC1w9+SnjpsFZf5UXY435L2F82XiLcWM/y7I0drPvMn7VeMOlnGbA7Ev5euMK7fpfrM8OyFXXYIy5xo8b1/czs9dl2fvvnOaza1CelMdNeWceYOfVtNn8V5g/355vOWwxe1le5tMoBtg2mqoi359m'@; put 'tTq1bU6qmbQ6adSpPnN2zp/MaTO73a05r96cxg6a3ZPYuZqmGVubU3K4yJ+eIc3bAbPXWo0OJfNdqsAbbK9em2M3ItXtAH+l2WdyNdp5QdX5/vQGXZunmbQi+fZWs7+e+m2+3QstM7/pIae0SXn2HOPIPEPZfzP7bouu1uw3zc5fuSb+Jbkq3n9RpfJ3rM7d7q7/gwfOVHzW3qXgu2sqs5K8Tj27'@; put 'diW7YPLCjvB5vsQymIFq9rCkc49g3/4ie3rSuUfaG7XEOvco/l61kH2ojijDTexzo9npbuHvPkuIcuvln2HXW8au1ci320R7vc1kR2/nelvY+b5ive+r7H4vs0O+ggP4Dl90p/FDe1VuxD8l4DF24vHosJ7ayfOKXGa/m0WQeL2p8D7cSV7PbleEsdyrghFNw9U89XU85Y1YzNEXTLu/Mz5sbHeG'@; put 'Gu3ng8bLjbcZ9xmfNS7Cl7jPcnxXMlIghZKVIhkuIy490X8AtlKXWAAAAAEAAAAKABwAHgABREZMVAAIAAQAAAAA//8AAAAAAAB42mNgZrJgnMDAysDC1MUUwcDA4A2hGeMYRBjNgHygFBywMyCBUO9wPwYHBgXVP8zS/40ZGJiPMqoqMDBMBskxsTKtB1IKDEwAxlcKNgAAAHjatZNZUI5RHMZ/'@; put '/7d9ESoU9fb2adNGohRF9qXIvpSs2bKv2RrrEENFUsieJKMZE1NTthvuuDVjjL7PlVvuDB3HV0wzzLhyZt5z3nPOnOeceZ7fH3Ch6wtBdI9U6pk4565SrMcljMONgZRwizru0kgTzbTQJh4SIIMkTAZLnCRJqqRLpkyVHMmTQimSEiPVeGW8d4kyj5ut5hPzi+VuBVrBVqhls6KsYVa6dd/mH/lN'@; put 'KX2HxY0e2o9p45n4Sn8xxSaxkigpkiYZkiXZkisFskE2a+2XxlutfchsMdvNz5ZhBVhBVohTe6iV9ktbfVQv1HP1VLWrVvVINauHqkk1qgZVr+rUNVWralS1qlKVqkKVqTOqVJ3ofNOZ1Zn0/ZOj3FHgyHfE2Afa/ew+di+7m93o+NrxuePwh5B3yV1e/afmbng7k+CPWwSj+8/4h0bXSRdcdXbu'@; put 'eOCJF9744Esv/OhNH/riTwCB9KM/AwgiWGc8SKceikmYTiQcG4OJIJIooolhCLHEEU8CiQxlGEkMJ5kRjCSFVEaRRjqjGUMGmYzVzGQxnglMZBKTmcJUpjGdGWSTw0xmkcts5jCXecxnAQtZxGJNWh75LKWAZSxnhX7/Dnaym2IOcZzTlFNGBec5RyVVVHORGi5xhcvUcpXr3NQU/WT0Ng2apXua'@; put 'pp9tFau1HdFs4Gy3N+tZo/tdnPjtVuFfHLxAPZtZ2WNlLZskRo9b2M4x7DgkXPMZKVG6AiK4o3ceoGmWBF0P8d1nipxhxLKNvWxlH3s4wEFdS/s5wlG9dZhSTnGS17qaerFOvMRbfNgofpp/zx+QzaroeNpjYMACHIHQksGSaT0DA9NuJlYGhv8hzNL/jZl2///CdIBJ8P+X/34gPgDIPQ0ieNqt'@; put 'Vml300YUlbxlIxtZaFFLx0ycptHIpBSCAQNBiu1CujhbK0FppThJ9wW60X1f8K95ctpz6Dd+Wu8b2SaBhJ721B/07sy7M2+beWMylCBj3a8EQizdNYaWlyi3es2nUxbNBOG2aK77lCpEf/UavUajITesfJ6MgAxPLrYM0/BC1yFTkQi3HUopsSnoXp0y09daM2a/V2lUKFfx85QuBCvX/bzMW01f'@; put 'UL2OqYXAElRiVAoCESfsaJNmMNUeCZpj/Rwz79V9AW+akaD+uh9iRrCun9E8o/nQCoMgsMi0g0CSUfe3gsChtBLYJ1OI4FnWq/uUlS7lpIs4AjJDhzJKwi+xGWc3XMEa9thKPOAvSJUGpWfzUHqiKZowEM9lCwhy2Q/rVrQS+DLIB4IWVn3oLA6tbd+hrKIez24ZqSRTOQylK5Fx6UaU2tgmswED'@; put 'lJ11qEcJdnXAa9zNGBuCd6CFMGBKuKhd7VWtngHDq7iz+W7u+9TeWvQnu5g2XPAQdygqTRlxXXS+DItzSsKCkx0vUR0ZLSYmBg5YTlNYZVj3Q9u96JDSAbUG+tMotiXzwWzeoUEVp1IV2owWHRpSIApBh7yrvBxAugEN8mgFo0GMHBrGNiM6JQIZaMAuDXmhaIaChpA0h0bU0pofZzYXgyka3JK3'@; put 'HRpVS8v+0moyaeUxP6bnD6vYGPbW/Xh4GAWMXBq2+cziJLvxIf4M4kPmJCqRLtT9mJOHaN0m6stmZ/MSyzrYSvS8BFeBZwJEUoP/NczuLdUBBYwNY0wiWx4ZF1umaepajSkjNlKVNZ+GpSsqNIDD1w/DoStCmP9zdNQ0hgzXbYbx4ZxNd2zrONI0jtjGbIcmVGyynESeWR5RcZrlYyrOsHxcxVmW'@; put 'R1WcY2mpuIflEyruZfmkivtYPqNkJ++UC5FhKYpk3uAL4tDsLuVkV3kzUdq7lNNd5a1EeUwZNGj/h/ieQnzH4JdAfCzziI/lccTHUiI+llOIj2UB8bGcRnwsn0Z8LGcQH0ulRFkfU0fB7GgoPHbB06XE1VN8VouKHJsc3MITuAA1cUAVZVSS3BEfybA4+rluac1JOjEbZ82Jio9GxgE+uzszD6tP'@; put 'KnFa+/sceGblYSO4nfsa53lj8g+Df4sXZSk+aU5wcKeQAHi8v8O4FVHJodOqeKTs0Pw/UXGCG6CfQU2MyYIoihrffOTySrNZkzW0Ch9PBDor2sG8aU6MI6UltKhJGgEtg65Z0DTq8+ytZlEKUW5iv7N7KaKY7EUZzIApKOSmsbDs76REWlg7qen00cDlRtqLniw1W1Zxhb0H72PIzSx5N1JeuCkp'@; put '7UWbUKe8yAIOuZE9uCaCW2jvsopiSlioIj4IbQX77WNEJi0zgy6BImRxsrIP7YodOaKCdgLfetIq79tC7c918iAwm51u50GWkaLzXRX1an1V1tgoV6/cTR8H086wseYXRRlPLnvfnhTsV6cEuQJGV3a/7knx9jvW7UpJPtsXdnnidUoV8l+AB0PulPciGkWRs1ilEc+vW3gyRTkoxkVzHBf00h7t'@; put 'ilXfo13Yd+2jVlxWVLIfZdBVdNZuwjc+XwjqQCoKWqQiVng6ZD6bnZrwsZS4LEXcs2TXRfQdPCEd4r84xLX/69xyFNyiyhJdaNcJyQdtHyvorSW7k4cqRmftvGxnoh1JN+gagp5ILjj+XuAujxXpFO7z8wfMX8F25vgYnQa+qugMxBLnrYIEiyre0k6mXlB8hGkJ8EXVQrMCeAnAZPCyapl6pg6g'@; put 'Z5aZUwFYYQ6DVeYwWGMOg3W1g653GegVIFOjV9WOmcz5QMlcwDyT0TXmaXSdeRq9xjyNbrBND+B1tsngDbbJIGSbDCLmVAE2mMOgwRwGm8xhsKX9coG2tV+M3tR+MXpL+8Xobe0Xo3e0X4ze1X4xek/7xeh95Phct4Af6BFdBPwwgZcAP+Kk69ECRjfxjLY5txLInI81x2xzPsHi891dP9UjveKz'@; put 'BPKKzxPI9NvYp034IoFM+DKBTPgK3HJ3v6/1SNO/SSDTv00g07/Dyjbh+wQy4YcEMuFHcC909/tJjzT95wQy/ZcEMv1XrGwTfksgE35PIBPuqJ2+TKrzZ9W1qXeL0lP125132PkbZTO6LAAAAAEAAf//AA942rV9CXhbV5noOedKupIl2b5aLcubrNXWamuzvMjXS7wvcbzFSRxnc5y0KV3Sli4h'@; put 'pLQNFAqUAWZYhr4u0KFMS5K2dKHtFChQ2qHLDG+AecMH5Q0zLG/YBjowbX09/zn3Xlm27KbwfS+1JPvqrP/59+UUlaHFtST+FOdGHKpAduRCXtSE0iiHutAQcomO3nxnezaTbA766qurHEKlQUNQWSKs9Qge3p60e+3JtDedTPPsk4df1af0Gf2k38CTtPq70oZ1yCbT+FPSs7jrP3t67+vtve++'@; put '3kaPp7e390iv59b7jjR6jnjuu+8+z5Ejtw4M3Hd0oOFF7md9Hr8Hfm461jgw4DsIvw14Onsbj9zQ5ozvvPLKB6+8cmd8xRP3wA9CBE2v/R6dI+fY3vxiI8IYLSKEykcRIdySBnOckxvTaDQVmnK/UKnlnWFrkvM6AulUJtnqsNt03v3D5oTG7bZZq6ut5JxkedFts7jdFpsbobU1NIgfxWPkk5WN'@; put 'qAyhSg7eH0F03iC8XQfzulE9umH0vHfnbjFUoSNIyxFMEF42YoOhfLS80szxvH7RVEb0emFUgwmpIGNuMUAfsC+Rnj9a2k9puCDWIVRfV1sD07irXVVOWLBVKPzja8OYT/Je3ptlr2ySvZI8e/H0S/ybzI3mG2Ntsbvgda352sw7zdcpf91gfviuzF34a99NPwb/0t9NPw7/0t8FSMbWHiUR8gfk'@; put 'QSEUR51iLub31dVWu5w2s6nMYOaIDiOOjCDCkZsRRvgWCma0BHBxorGmpqZ4U9xhFyxa3hH2lWPAkXQMB7MOpxDD6VQeZwFZHE4engl12I4cznQ5fGTSqUBQIJHUkR1iz8loaOfxowda9+bEKxZDvpno5e+Q9os7OkaweWZ06ua5NNfdy2cjrTsrcWX1rqHkbFrX2WWcbfVGeOlN9+5JXJO2/Z4f'@; put 'bpWyI6mWDof0JqxNi+Jr/0X+lXwJMMUKpxZHHeiF0fNVcHJhI9aWYazT4hWkQ3qDTn8MaTRoiWCKSWY4Em7JxBOOq+DG3KPng9Al/pZdEDRl/fglE+Z5Jw9nntyiByHQlnZDW/daWBADiURDg82GUKIj0Z5JNcQbYqGArd5WV11ltQiVsJnyQDlvD1tk4CZbAaa2cuzFSey1UKB6G3V2myOJNn2f'@; put 'x+vf/fVAMDQYiQ7CexR/qFNq7rwm1x6JtLWH8dRAKDgYlb+KtdGHuQhejE7EW3ZGo5OJloko3rU6hT84kM4MDmTTA9Lx6ERLYiIWnYy3TEYTA5n0IP0K9sehprXfkxPkMYB9GPhPXuyIR/11NW6X04DLOFLPkIpiPl4CMnaMaouwKhJpaIikI6mGcENzuFEHmKUN6ryNdE/Z4o3BN85M1qnjnYju'@; put 'zCnv0pINBOHPOpwkiaV9JzuP5O7x1EXGE5Hh8Nxc5spIUyaRvFr6dFdt/URfrjk0fjp/tnmomT+w3LKQu2kgOuiLjITDI835UZ/4TvFA1fHha8jx9lhNV6ghG27uWj03d8tY1/6Q6AViAH6BPkE+iUwoOnreAYhipCyJnS8GJKhE9M95+BMvUtIZX3jE7iOwHWuBI1Vg72x5lSA4y/kg/o9D3soq'@; put 'p+A9lIHW+bU5HCNPwdi6h01anAgzNpZ1AvnYnPznL7nksHdu4Zx3149vuOHHu/27v37VDy4EYCKg5zlcp/bTQT8nI7asDLDYuYU572HofMuFH1z1dejHutN+Hfgm4H1fQrNIFLv8GJPJHd2xRpdNq0d4F9YiboTDWIORFqMVHdZqyRJFaO0Y7G4WzQwPZdJNwdoaN0+xE1bajXngBnBqQfgjm+nG'@; put 'wYD8W7LV6ajHwSIIZLLAJthzuw06VWCH08F+Z73hPydj3V82G3TeioZyrcbMa8qc0XAkZi/T8GatxtLs0xnMwKz0uspKLmTTas08VyaEdRGnI+wo43izTuMIOYw6vdmAbzLra1qaa8xVPGfSa4y8WRAsFiNv1OhNXFljTXNLjd5s1jta46ZyrsHImXRaE18mEGgimHiTVmfiyhss+nirQ2+mB4v6'@; put '0HFSTlLIiAKAExoOa2YBl4EzYA4tA7nTo9fgccbDK3V8dRh7qfRMUymaJOXfzD/3XP6bOP5N+gsdb3LtNHoM7UTlyCkC6aJBFaWAMHwWij2A843rIo2fDJqtINGcNfWh49EEFW3+ulqxlY7Vhn6LO3AMqLFKtDNknF1HRqGSoaLH7mnDnLSKY11sP8MgYz8H8xuptkCfAJfD2InpQRtRmY+DAy6W'@; put 'qEcUaWoqSFK89pu1R/HHyU9hXkEsp4OC5MBXyxNSVoUnB6S7B8hP33wZMfnaAbziGHkS2Fs9iohNgFhsxzJXwCDY2QIqgZ4q6yvrqhyMD+pgIZrNfI6kUzHsbaREAgwA43cPDr57aur04ODpqfzBTOZgPn8okzmUN+29Z2Xl7r17715ZuWdv59jZudn3jo6enZs7O8ZgUA3vb4C81yG3WAVHyQG8'@; put 'RmSujQE/xwQrAx0fzCYF75O31D6YEsmB2ZaTq1OI9W+BTelhPy7ULAaNZbAdwAZCRhg4GbujCssiYjJGcPqCGr4qnPVT/kVXzwcLHK4Cw/m0wKn0Nu1oumJnLHr9cOeh3NjMt/BJqantX/KXppp6A5f7xf7UYq7v1NCD8hmGAJ5amD+MusVOdzXM5QOChhXAMkCSQwsCconjNEuAoLAYkJdLlKad'@; put 'jJzDqNnn9/j9PO+Ck6acI9nKWGsYp52tGXmNOj6YUbmwAvxXTkWivqP5xFj40NyOgbF9zcORzEJTePH9+SPtA22dU52X9Jp62puTWX9PU763E/d3+vO+dCp0KjGX7tollM/2ZfemGD6E4C0F8C9DZhQVm00YUHBEp4V9YAT66lEAIROlFZoxo9FoNgINC5ZKul6/J4iTAtVYvWkB49ukzxvwzPil'@; put 'l4rSzx9swy9IuY4Hf4ZvkM7K59QGcHLCPA1U73EAexMqOaJBGE4K3pGGAYksypJ7I5AaUH2jYA2UAEk+P0pVfKaAlj9+V6S5eaU9PhGJTCQmR1sN+IPSQ3zfXOdyZ/5Er6k9GY8lw2PRyFAoW4WXul5vSR/I96y0M1h0whr9cJZu0ON7xW4gIo4EqohWQ0Z0wGI0Wk6zggpilIcFqtyipgahmqaa'@; put 'kK8ROld7/QE9KMRIWRLlIBTLnHyAkksthj8s6gbokSbxe452dZ3oPX1m8NTYO2Z9o3O5/Znqy3r9E5HYRLz/sLly3xB+MHOwO3+s68k7V/7mwK7W4anb52zpbulMfLw5Ptw03rV7WYZzB2zEwOipXqwBGYIZNVE+hJnuDtovaDccLA970h47MIinpHfjl6TvDJOrulpW30P1iRTAoYbBIQzj9Ys9'@; put 'Nh0BbjvCFwFB4Rp6AAKGs2JcIxKhcIh0RNpTrTXhmmYZGhEDZWOUe2Q2qRQKfAqwkFmJU/k7WE4YZ/nJ5T2zvZ3D3cc6Oo91j7X3zvZc0dc0Eo+MREB7iI+EWnYlUtORyK50YleLqWU+27Xf7pjLpqZjsZlUbtbm2N+ZnW/Bt3tyfl9HY2OHL5BrINIFXz4Q6vZi7O0OBfI+tNX511XC0Rv0YD8Q'@; put '2LoWCFlLVoAUONgvxzlGi6SFev6NDXTHAa+fnb9DPn5Q0SnCdmH6hwIBC4XFOvP83KaT72L4sIOdfAvDAvLkxpOXsUE6Q09exgF5D0ym4NdBfsCyRs9HQVNyUqbOVirI1ptWtt7cVFDBd8CkVoqfL4gWkwkhk9PksFQyQaRTNA1VEJEthJJN+cR31lipdLLWSHOqnAJ7j8la/DrYexWwDh4JyIS/'@; put 'gAwXMH4cf+F8MkxxN4sWsUSmAXd1D+sI6FPWtN9uxvYsfk66AZ/FXZlX808/nWf77ENfJeX4XwBbedQo1lMcp2Ye2E4cmVVYPuGoLlBJOT7lEvS/Pvz3Upq9/iV/Zx7mHEOLxKrOycGc2ShOa+3aMXwW5nxOyn0aZnw18yqd0732e/wtwI8q5ENZMeUwGSmLxJTNczDx6SKZQxm+Fms0Ts2Yy+Xy'@; put 'ubz+Kl9QRxeiys11rs5MuWI5/0z73qSvpyk77w/vO9u+mErube8xq+C9Whvs8DZ2+pLx5pMtM8nIzpzxPUWmNV1nZO12bge5F3WjCVjL+TrAAaHRQ/Rcg4Vo9J0dYGdyI+71Zwb12YLcOGQ0EA3IAR3lyroy0C35w0hhdsBE9HpuCTYo6KnNVg/to2Bca7BhHr3dTk3UNgSY6Q2cfuWinbWAqS1U'@; put 'JnBIu7J9L57XzSOdjl9i3ScXwMarEkWExAlxfGgAgJEPBJoCvkDAxLtLtJnGQLCIOlsdzqyTZyZc60bmlGxldoGXqtHMzqOPHUncf/7YVV+54siDR5NTsWinvm62JT7c3HO8vXXQYm4vi4Tq69oDi5/Zu/zFlf137csfzlra39Ef3GMg7en4zkRP6uqjDx65/CtXHvzs0sRlGbBDE5GJZP/Jvpi3'@; put 'V9v6T+6GQHihd/Zj8yvnlvd+ZrHG4/Y3vLY8aitL5zMLqbYBduYN8PZ14Ps8SPKwGDJgAMwIYCCgpAakOBWrYFRQjUqv15fpy2QVuQqkOM9M2qARk6x07eAAjtOfw/fff8895Nzq1Kv4jHQGgL4fxj8G41eCptWIusR24Pwwgw6oDuSjdhnOVnEQ8VjWxOlc7mqL4KmvbnQ3VjkEl8UVadAzRXij'@; put 'APBgquqAzmO3Kr8I+3Frdi6RjLf3pRY7pK/hUMfoeNdPftM3N9f3G3IuMtGSHndWL7Zl5hL41r50qu/X0qPjHR1j0m8pH6Hy6wNAp7UoJoarXcYyiiQjKrt2bHBhwYNaVBPwB6gLS7N+/nzpmePsvQcO3Ls4cKYlErokN37LxMQt47lLQpGWMwMmOLmlew9mWyNNian3Tk6+byrRHG1pg3OhcHuE'@; put '6Vd2ZrUUwMQMcgVMJqPNYrSb7IEG6tuxqlgZxlkF/ShEfn7JfYuL913y85/P3zY+ftv8/eTc7r8+fPgzuzuG37Nr103Dq88x+T8J88VgPiOKixGVK1JdSrMIoqu8WBtmVoZR9niBamWl/FGQX3fg66T34TslD/4Rueq1vCR1kXNdhfHTML4BNYkBdXzK6dioqooBXxiQgY7MeB4b2cvGPSXd0oP/'@; put 'nQ36VXVMel53wnl5UFpsBa0LcfWEaLRMiddqEEMuZgM7qCbKWCxoG6ARBryymecRNhLvpsNLe/EHsLXljuFFdoDDd8ABXt8lH2D6RNN38GHpv+M5+QjbElH1CP2e86iw56sYTIOiT1FXl0FHpvulfqkKtBmWmO4WXkl4J1eJ0qIo4nspOeFuum3pJdwqj4s+zHysVurAWLd5ZHMRDJ5JUaS9qJ0E'@; put 'sucZaCtQLGLmBcNopiyTJQ6QycnALqBKm18D3Ys0ZVgGJbMHTzZEnXtbwv0BEawzU3cyHs1Fdrbif5RifZd0whz7YKgr2D4bxFqDXkuYdMPM88bJnlOrxSLL06SAkwagCRBd+0R86az0Kk5NS7+7GtYrnQSd+znp/Xjk1EsMfv0wLoFxtVQnZYumozE6kEGnRVpBoIv2A54kBUKkXrELUG71Q6w/'@; put 'paFfrK+L32JdNkFdlwGMEq9ggBPYL2Id1omi9Lr0Ol2WDf/H6hQJss9/Vsf9S4bLdaKbJ6RkVEthVAzL8spjPg4jDtFjeYIMwniDq09Q/ktx+Hf/P+xqmensv/vAgbv3j988MXHzuIy4Css5eO/S0mcPdk69b3LyvVMy3jJ5QHH2IOzNBHwHLGNYBZAqh6mbZN2RD1ssN9ssZnu5XQg06KgT31Pg'@; put 'PXavypaFSVw9cGVPz5UD/0fEFfMnTsy/TM61Hc6DHJNwx8zg4Kz0fDEMbGBV5sQM9atriQ7MPOaB5DCHh9fNp2Lftt1uD9mDsUCQMmGQ5E5+gzSGFZFsMOvcJIrJ7yJNY00741d2LaowWpu4pum6Bl8BSLjq2kRvYkcgXACW9P38cuJY8FCqGFxF8CqH9YD8JNQBp5qmy6CKKOxNIXefzyMIVsp7'@; put 'YLVWbxBsYIFBTptUYEYOXjb/6MjDz4kMdFLsZQY2fMvV5RL8Y+D7NIWc7Ed8jUTIUyhI5ZXDTu1iQrVKFVTUyVskr4Io4Iv4KKgojSsqSiCoQmud+zmcCk798v3p0JFb0xNNe49efVnHSs8tJ0Lh49nYUNOeo1demTsxYsylWo94O72Zrir39Hh2T/JQa3Pc2+VraXO5d+/MLiRlPhgFGA0zHUP2'@; put '1RTMStm5oqja2At2pReoxf0rUvMrEczKLoWO5wA/zkJ/O/KIdYpDH+PirdmRzeazqaKY8q2NLAzXnhkUswzzxMEzU6aRW2bwJ6WVvuMdHcf76G8zt4zIa1X1IR2dS8vsYOCaCsOUuQ6o/DLXoXwM+Ab5uvQPA/CDTdhEuS687iIHYCw/mEkaRkswVhnl+8AoaFiJiXG2eeAUlkotlaJJN6Y/nNeI'@; put 'vf6hbzwz+JWvD/285xvf7IHhniL97DVFdq9+Xl4nyFByM+NtwBsNOhgajp6yn/JRLOOaxWIRKFxhlTCkgY2OT2Hd5I9+NIl56b8nf/TqJJ6X7sc+6Qd4Hu+Gd588tgXGPgNj61GtWK3jgAgLDE7xBFgE6glQxoQjC0m/2PnTn09I/68PV+G/kj4Pox2XfkbHaoexRFXuU3iuu9kKvoWCm80isBVn'@; put 'ZRcDCP92/IC0F78hTeMLq68nSXdXcvWrsuyfWvsgbiM/fJtWXBIQC15TPz137qfkh62rVup7XXtj7VF81zY+UA50W+0AXpJdoBi1wHxVhflk/9wyomoZ9dfS+dD6fE5g+ml4tcB0P+0hv2x98xwdPoM/gx+UceuC7ki/6ADuzryWMDP14F6teFgu6FC/NQnsgfd+L3NX+00350AK/erVV+mapbV3'@; put 'kl1r52G6BjbGNj5jOgQPACRkZvWBnTn5XLuJiN4kL0NfJ+trgp5D8M3VFhDH8qxZp7e798Ys+UrFh2X+1gr6wy+IgKoB43aK41WY0zhBIAigxdfVajmdVkPNWK2OaGVvJdXiXYxWRvVYp1OVLjeYmO6A2++ph5FcPr/XagA4IYcdAFXs6mK2EbVwLaB+qeEwfPpE3n0iu+uSzGL7xNLAzoFp1/4F'@; put '1yXls5M9uyc6iHDNQekbuyKte0daJyL19r59sWSr5M63TVf3tCa75Jg0yYN8sYAF0i12VpQRrYbxycrRglvGxXSoDc45qxUha6PV43ZBT2Dbm5xzQYpTQrFPThW9HzuRz5/o7T5cn8/XH+4OzSQSM8n0dCw2nSbC4I1jY6cGO9PL5Enp39KdUk3boc7Og23U7X0wC2eUAHj/BuC9tQ3i2t4Gcbyl'@; put 'DfLbGwYHbxhKLvrD7qFgdl86vS8bGnaH/ftTpqF3jYycGgr5mmsbcgc7Og7lPHXN/iZ69hmAm2cdbgLH4EahxQDHVGvlrHnmz1MU7GK4WQJegcINKwe9vkqBbJbLHgquXhV4NzGIJRn0yJOrO5bTnYOnxsZuBOBh9+pVWQqxTNvBzs5D1F4CuBEfwM2J6qiVCTyGI0wQE05DlgvLc43qivSHqiqE'@; put 'quqqat3V8JcDDAO6Up8MsWItwlNHkkTHe2Cx+MgBd7Dh+vb+6wZ3XLNj7B0d0qg2M5uauLQMX6s7MBn11TZ7o0OnxkZvHBy+dSE934L/dnnn1BFGfyAP8BR5BaTVHrGsAuu0lRjpyIjsDKlBOp12CTSGKmZwo0XQfmTHG8tQqAZlVwd0tlL65YJY5vWy2BXPu2Ve56X8hzmGmPNYZ3/s1lvzMzP9'@; put 'qVSkwRGo9hFtTkrhb+cG20c8MUezR6b1+NoMqQEY0lj8kLijrpLotIofE2gZGJ6OrFD6holBsaFuGVfBmWlFYw0gO+VwOIxQH/D7fZTGsaCQC7MqMhu8mYAF6RIsqOm+cqjzSl9Nw2LLwrG6FbH30q6uS3t7jtbdOptIzKaT0/H4dJJopdbelfZAfWutZ+/k/nS7eMXAjivEXPqQtCcxlwX7vmUu'@; put 'DdBncB+Htz8AHttppMIi+7YZDoOyxrxtriJzDFQJwea1UfuT0jqAUnHXCAq548sWWvIT+ehIOJ+3L7YRoXVPTnoE9/dMB3qD0mNA16+FMwye3fD+cfIVkNEV1AIsuFOr6MEJo6o1XVFuNjF3qXaTu5QHEbLb5bJY4AW8hFzisgjV1YLFtbz6Boy/9tTaBPoIG99Ncb4C+HI51sBpaYtm4jiGJxrg'@; put 'chqNWzPGXLRuU7XTYRXYrHyJk1Y5KqY86bwzygreEa0oM/sFtzffn1pfyps/MfBpLd9UTzKrL7QNM3gDSwDqexJG94oNBg3QG6eyW7oaVT8RrEzaYyroGC8F2Fb/YOLLy/k8bprCVdLPfnX0fQDOWhyV5Rc9nvfDuKrdW1li944BlIBVyG25IOCyF6XEloZq2e7VagVGXLolMAZ1Oteohsb95HP3'@; put 'okavYPVavTYDUFHR0es2/JK0y3gL7+S+6Vh+qE2cyg/St7x1Kt0+Z6/c31mEEhP59U+iHWuKd6ZAJBVwUtiEk8KfgZP2t4GT2lmGkgqfHIR5N9mbrovam463tjdfOzU8fGpw8Mbh4RsHM4vZ7GImS9+zppF3DQ2dohIG5Eyu/XAud6i9/VCu/VC7vJ5p4Dl5WE+JbBaKZfO6WKYAsuKLymYVMH+W'@; put 'bJZ+TS4sl8hmKg9nQB4KW8hDoUgerovCUZkvbicPhYtxwreQh9rVSSysC8RlKbRBHmI0Dfi1AGs10Sw8OTqr4te6JgHCQ7DJOrclk7QXMOpvTgy0700CGb7Sk4tPp6UfEe0l1I4D3eRpGDOwpb3p2mxvBpDfFy62NzPF5qZDkUzU2iTs2L59VdSzbyE92DewfzI+1Ro/0Fy/c6Slr2tndjDcMpsy'@; put 'NflivS3+YNTu7ss09/rr3YmWqK+xqVrw5cLh/oDMI/ywxinyUZDncTHixDq2b8LdTFkiWaTOU4CBTqdqAExuWhup4PTLeqig5H0AR6Ju/EwWT9laq1P9MzP597zHV22pN9orhZF2PJP70Idy0gOeZlMZ400w738RrUzPHM0uGdECd6GzUf0IUeJCapKGHdm9Ni/zcRbpRZTdyla5gP+LknGbStRw'@; put '3G8ABQNR4zHpKUbUeFjeL+jVxEa0ah6EaqmpuoFgYRaFVTYt3Tsef2zHq1kQniP4USpDMLA9xFmhf6mNKry1jertve0vMh95f++D+Q9+KA8jTuCH6Gv1DXy/NF+wpfEfYWyWd1PGa7CGsjlq6cDYHClygIKtSvHEAxaPNZh0ZpO8FZ+7997hb31l+NOfHn7mue9/H+tXX3xxVfojHbdubYy4YFyB'@; put 'wtqoJ7BkjMEAVoYuoKGbUzybFpuXoaGMhd2YY7sox/xhf2Wtt7apvP5f+5/5Ut+vqsayjwjZCqerj5ilLvzs6pOdWSzvBdgnfgnm3MaOFd7ajs3gPulZfIf0FB6QjrXgT3a0SCsdbNzw2h68lzwBHAVg5GJyoBLjoUaWVQQN5hWCxWhScFAxp4nhLgzsP011KZq96SwndqccFOFpGJzHpll/ItsW'@; put '98+OaDvyLuzzB7zYle/Q3hnqT38wFW2JpW7P9Af1cX1NovmOeNZkziQ+HE7U6OMwy2Vrj6K7t7GJqYS9LJVSkoKo/2kP3s/WHhL9embLCmBRNmI8uJ5Wt0RBNUmzZQlvCztBbATlgH6WxuqzdaQWA9bbG3XwCScSYysOBHxsxSOz/nhbNgE7eScsNvzheNZsysbvaKaL1Qf7M7enYi3R1AfT/SH9'@; put '2hrqwc34NP6CwGPzmiT9EhkuIPy49EsWJaayZtfaHPoiEVR9jK2OCjzXqJpDYiUl+hjTieRkLtAOkh9V4qm+YXOCCGr8dHUH/pUqXx8F+20c1QBlAZdsqK9xVzltVrO2TFaC1BRdWXlmPEioltGFhsu96RhRc3LpWdKkXHrGPrCXgDvjl2ZjYv5ILnckL8amG8NV+UZvd1VYumm+r2++IcR19xrH'@; put 'rurtvWrUKHZxQU9zdT0nzWsaqpuvPingu4WTcu5UFhYaYXGuPlGEo6VJGoinuZ48HtZiAkyTJ8zly5R8mq3B80Vu91pUK9j8PtDfqKrkt3vSWZYtt9H8rMU0x4dEJGNHLgcydMdJV7xyIQec+sUXu7rq617M3d5/olNMRWNt0ank7bkXN/ieHNQTbMPIgMH2QDzLNjiqwwTUFA3hlstYWracX+Sw'@; put 'Wy1qCnalkSZhs3R4u5rEBy9G8Pi2h1555ZU+eD30R+qtwv25PbnrroM3fCl1WbHz6yd78Bx5gOVBtDIvSZAmCgIyM8flkpajwMKTW2Q6UAdKsSLdWvT7vqoqodJVJZxTPske+umqpL/Ln4C/YZTGX8Z/V9mIw1pUyeEwelLx28zia8jZt+PzofkK3TgjvUDOtrxdn4+T9z7RdzZLXq44I/O64NpL'@; put 'gMPn4LRBf0dUfCJymorO91Axxtx2zG0bYFIBKzpMB1VpqP/W2L+Sazvc9dv0jWkcbtmdy+1uWa0nX1zdJedi/gR9CncA0OpEdxGXIJR9TBYlMGaKoLdYXc1MkJ+4rPTD6lL8WWsieo1mQaJr2d4qnTbAZasBxJee8mewrE1gWTeAOg3yWHMFzbYArr2yzlgP0GF2ukUPawKYdXq7NgsizSV1IZfV'@; put '5/NRwU1Bx6LRzLZVtBvquwLhlUm+FGwLVcUqLbU+R53daiuv9CSqNPqov8YXqzAHKRJYjcJEDrOahhSc+7Ps3CM8PfcIelrJxxjB/8z4lQ+1i9nGKqdJQ+TwAkF0rQwhZQYG0ucAUkSez+t22a0FvETFLExJjqJuIZ2qfQKzwSGFr3m2yCFZ53PSmS2ySNgemN+cu76yEdZK83T60EfRF5D+AsHn'@; put '5TSdLdocx85t2pxU22AefXGbNiuFNmZ0xzZt5gpzHUWfk9uQzW2+URjHiL69sY2cH8E9xGjBggbFfoHyIib19QgDF9LDOeg1ywZgkLpF0CsVf7ZW1pyYGWWptEDvCoVBGYFjYjVinqZJFKAhgCVhUyPn0mv7R/DtRCd5fqaE0GlCRZf0DvwR6XKkxL1FlqeQQa+L7kw6GNDwOjdgajUNmbkqAI/L'@; put 'MeG0CvpHaCyKw1fAG9K8Q/UyOUYR8HTFpALpdwDW7SY0ycZGM3NoH4Q1p99uJ1pvE9vQiTt1sV5ieHMHmg1FjmzRD43RtBxjwN8M1GcFA6oGpGUFVvnDZgqUZehWrlCyeG1PuUZfu5k8q+Y/Pr9VjkY8y3nxRqpt0x/5zJ6SpA2KTyyHguF3SKGB9zN8wkV4ubnNcfTwNm1Oqm2ABm7cps1cYZyj'@; put '6Cq5zTp+r1Et7cNsroi8nrU7thoHVxa1OY5sm9us/QLGeY2tJyKvZ+1vS9r8O7T5I1uPPM7RtXs2rgdoqRneXmCx0lqazbtR01jUYxooNRSpGhUV8FFbUcNKrezQzQwyp2zd0GfGU1JQjXygqyQP5it+Tk54GRlRU16+g/+xkPaCu/O4dfV2OfnlD3lWigRwYDF9xlNaFJ7yiRJYsTg1g1Wrcr6P'@; put 'lfCdzW2O49w2bU6qbeB8X9mmzUqhjRk9tE2bucJcR9Fzm/gXRrvQX+KvER0IA93DepobCUplEEgkmHVmnThze+R2+eeDYTyh/nb77WGk5vP+juXI+1Cc1gdFwrU1LofJoGc+Gpa2o7g9HHL4RFcUPvH7/XF/LGgNWlkGtprVGgAbL1uUL5fkkcOJFTJFckgaU+/HM6kDd+9vvzSWHp6LZ4A2209E'@; put '08Ozq/8W8uNT/vkY0Cg+cfNEyCfdAn+RmnfvWPrswYC361DLmR1AnfQ36TsrIfxwTT0QqfT9qfdNZo82SeM19Qx2LKbMzqlNOcsnSs57c5vj6P9u0+ak2gbO8gvbtJkrjHMU3b2ZVmW9l83Vqcz19MZxNuUaxBj3hHPQLuuwEuUoFK2B5Klw2CqclU4h4Knk5QhosihDw1/I0Oj555IMjVMsRaPt'@; put 'pmdmBgdnpBdkmTPDcnGeBRpuEWNGUMKZGgICh1tREy6ZWxsv6uR0QavP4/dEvCwkUZK7Hcbp9YIFlXFT/+pMel8uty/VGmnrSe3J7hkI7wjN9e3o6BifbG+fFIk5OZ1ITCdTM1Xu/dn0fEuHrzvYMdoxkm4bHc+tSgBHOV75MsCxH2QvQX2Xy/S98TkH8P1E0fPn1faYP1Dc/unCc3Nv8fMHCuMf'@; put 'nS96zrkL7Y1UOwMagufcXaDDRUHL60HHxOUagJ3HDUqCHetJDuvKDKB48jotDaOW6UjZCtIjHa/XLZsNRM0Gdo2WG00cFYbUtwO0lU7HYgile9JiZ3ssFUu2JGCCiNXn9fl9/goAuRrEktNTS6KrsgN7U2gL0VxzNeZKXpXjXH3XeuuuGdp7aXHodfCAw3t5T0nsS7plIkpDspP9chRsoKNjYGFs'@; put 'PSbblc3ki2Ni0kx4NBqo7mlNdco4llgTWewzgy6I7kTc06DRauxYp02BWq8rqPWqXuPn4SuCdVeg4hT7QlCKnqMbqbpJgDXW6kBpfsvWore0IbUE0JFCew2tAgXJBMvMyAqJnq8Oa/5ERYQW0WWS+HCJItJzaddWkdrGuUR5iQGR049es6MkeNsY0jRiipNyTJTi/JBMCzfIuLrxOaWFe4ueP6+2'@; put 'x/ylxe0fKIxz9BB7vkZZw21snJfk8T8gtx8FgBmLnh+vkNv/G3z8ho3/kjz+ffLzH8PH79j4cvujn1mvq2glfw/aQhTtEa2VzKtaC+oAaAM2q6UMD8l55w7VBS1syA5zizaapsFhslL8GCy5urq6aF0k4Av4ad6sKpkKiVABKiDpSdJs7s1eefxPi+KVw8NX9XSd6D/WFz58ynmwPtsVDB9yjlTM'@; put 'xmOzbZnZeGIuQyxfOLDz9EDvtaPDJ3tmZuazqXC1r7rGG0l5Vl9I7mtv25NK7sm1700BvORYEOU1UzKvGVmH+yCD4y52Tn3ovVs+P47OFz1/XnkO8L2ueJynC8/Ne4qfP6A+R0cvl3lWHzpNykkd85O50SG5wLqGVitQ1wvS8Fir0R7WqUFGFy2kbURIp5aEqO20Ws08kI12iXWYXBAdzCByV1aD'@; put 'cFKdbHpqoRYHPcEuKi5qwA7FMv0pLb/4jlrO8DXVJJ3NX1ivYuAK8S0nWG7NrAYJLPtQsNrlNOq0Gj3GWk4JhKwnMGzWXDweT7OnyW8JWjZoLsWKC9NbnFiOwmkUrQW4ZkNw+MbB6f6G4W5vaPjU4K7BhmFROtmCTal8djGL8WLW5ZReS+bxx/enht410uIfDhxIDZ0aaQ2MSm/mcXug/VDuu+2H'@; put 'c4GBGuk5P5yRHFegZ71bpjGFJjc+pzjwsaLnz6vtMb+vuP0DhXGOTsvPZV86HWefMs7Hi+JyF8uZ+bPicsKfH5fjVrZIminaxwPKPmB/M6jIxk8U/ADHFL2+WI+WZfrZgkw/NlLcd2/BP2BQ9LbSvhcKct8wLfOuhrVpzgq6mhNVU/i5sI7TY4KdIFG4EZAxiBo/R5kOzS6XGFW1KCtNS6mqrqr2'@; put 'CYLg8FDZolW8N9mgXHQhS+jWrJFwVm9LvMMu9BcqMGoaPbUN1h/cf/8dtbmEs8n0KVaN0eiubbDjHawmg+Z0TZMc0EgziLBFcQ/VSNyYKiQ8iUUNnJ7XY62+mSZBU6WE1xO+UInqouusACtNr1djnEowDdYdDocz4XTAZwU1JOQpAyO9sPL0NmqIXVA3EyhK+CI5ui23oyTp6/AJeX8/V5O/6C7d'@; put 'UWPfxuwvmhDGtvyRQhaYai99gOnYAUXH/kOJri7nX1F6GFDo4ZNFfU+qfbEePbNN3+eVvgTrD67blo+wvkGl780leERzrb5GnoQ2g6xNBWjxFmSANo9zFtoI2ij2M2Dou5Gan3UIaLQavhkQ+ywaYtDTakstTZzWomU4mspCBZXC56jjnPE9Jxlzu93N7qYgjYAGvIrr3FuSp6UWwqPN4elDPRvi'@; put '0+fP53vWUHGQenT1S0VJW38b6+1dfWRDmLrgx0gU/BjHYNlbwBX0j7MF/ePYLNrKB4LL0Pe26avqLhy0UepdgAZovUsN9epVgowQMK3XVTNJKYLzi4jnFYceZXcVo0yYAQFYWX1xDaoRbF6a0S1QXFfrYLwqRjtl5M8WFcZMyuhbQ9G7Rnq2UCXDkDUMuByqYcUtNI50mOWz0RtfzohWvw/4bzkG'@; put 'xRQ0Gh4Erwa0YA+tuUM6ELQ6zTKN0agHrVz9wBIQGJlaqYj2q00ZAPDhrXrQbLJKdmVMzOW1BvxeLw3xaDZuSFeSHCdrtLyaI3d9YZMGW9mmTLkWsCtsYuBvFKOhslbZucNGitPmwIJweMvw91jy3BY+Mf0WPrHN+qtekZWsTojx8WaFjz9b0lfOfaN8fETm4ytKX+nXtMZI7gv4U0GMTEdi7Tnq'@; put 'lIqhPDosHojWEz1f5aSGOK2DR0NG6hzm9JoVg6oolQP16XQCdWsyNJLjjkty3DEep+6ueD7elU1XxCpi4Savp6babqVuryqTqiTRq1Rkvcj5J+bVYberxlsXMAhOp+WXbyvFbq+nurot6giH6OUnc2833w70+f8N+FXGaFr2BR5b+3iJv/BlaKNlNC3r/MfuUHIG1qbRD4EurTTOTiWmVY6zq2Xo'@; put 'FGSqvPGBfGTp1qqUAd1CJb4fUuyrtosywVExUR0xkbsVUchk9NobMNcTLNbnoTeq2G1Ew3mwXLZfODJVWawoEAkLEjfUgRXiqDBvmUJnVRfkpOU/6pIWqNVWVVU5SZfmdVvy9fLi1FigULXqgHXWt+h5/MfVN5SFAg7SSs2/WvetAg/jN/mGWM4d2GLaQm6cUJIbN5rP0zwSGG8f4PQVIEcaAXcZ'@; put 'TuNvyXYbPOcYrk8oz29jz1kdFpObcUVulpXQD4AEl3O3QptJpY0FPSq3eVRtI9dzPamOA+NfxWQcLpJxdJwwazOptLluYxs5j5Z0AY6YaQabyVhmAM2e0xO1sm1TkZgZme2FIjE+TZEka+cF0iX17tkjfuQjXV24LibG8JT0yqg4KkmokKuLWQ5jg1hrLON1VKjqleq5SqUYxM4ue8E8aLXKwBhP'@; put '5cfH81P4QLP0AnaGxBA+Ij3ZXOxjvl71MQOMflUCR9kWfFmxBan+cZfcF87mL9mZtShn83u5vfRrmkeotofn9xXNdbLgz9bDaWw91/MFu1N/DBX5lRMFv/Ix9OUSfUW2s84WbMdjh9BW/m9cjv6xJO620X4luPy0rDOngLE+C+dqAYu/XcwWqlD1pFCGaqDldmqeDTM2aq01DhtLrJMFsWs9vKay'@; put 'QxphW1db/LIoXv2H/fccOHDPfhKXPDvlgI8ijHd/ev/S3fu7Vl8g2YlbJyfePaTYldwbLJ80idrRlDjhxHoddd0xrQE4vVavWTYZiE4nV1W6Ro18GUd1esVll0r5wIpItady2Ywv6WuNNNOUU6sv4PObYdEbHXbrfLxIyDZs4uhIlrZch+ypG7qh0fuukUGWhzn8Lq/nuqGCzJWOFWVk4jMbctXH'@; put 'e3sm5BzN8W5xTBa+xWmaav66IoMPsrNNK/j7TAleyHmH9GxnZd/PmKKrAf4eZPibVvD0Cbk94O8Cw99Z5bmxaK6T6lyAv+/dcq79DH9nZfy1yXOxuji2zoyyzrtKcF/OZaTrnJPXqcRWY2siq6kT0RuiM9naUK/R6d006l5dCaKdplhrFP9jdGNcFfTFJRDsDtkg0uKtA6uxTYHVi/ei3sv45kDp'@; put 'xbrJQd8tQqtbdJRjqyZfxEdTG6wWA5gBPtk9uU10FV+8epBE0kd2VGwVaB28PrF9TeHN86mSeGtO2xZ/iypDlpcqsrzUPJxZTWtLfZ1Gy2+MhWtG3KDxDm8ZEOd53RKiyeBo3Zdx0YD4RTttGRC/SK9tA+Kl/ZSAuC8censBcXyxBFz89KGRLQPjiaXAtlm5o7u0jSWnFazfPk23mD5PqvQJtH1s'@; put 'G/p8XqVPrM8qtaRAn7SW1IMeFu1VcLTIaQaJYKKXZ414sEY95CaEaIrpFSxERU5RR5WaoMF0OULwAZDkbqweVjPtoEHc6bfRQwxuakwLAgk+sqkPixTQ4n5GWPSM2I1TW54Qtbtp+SuetW5xCjVltCY2tgnWfUU1sn6gAZr3HEfPia4mrOea7cSgj9oIMZRETiJIq9HeXIZpbY/hChBeAF5a2cNx'@; put 'mkWdXN9TEkCJrvfRG8jpi3UCcG7ZXgmmFHXjKJAs0C2O4iwb2wnAoq6IbSIquDRD28kwHwdKcDeSXc/abmjwV2wRQBlMFmdyx6p0fjkni9UsMxzNKjj6zhIcpbnmP2C66rysq5KmEn1Wjv0mCrHfY+hjpboz882eLfhmjw2gorjxNwqxZSP6VkncmPVlcUfZ32u8AW0VuwY97PNb9QWLv+BbxuVL'@; put 'SKm3nmb11n7UIbY5gCWVw8mC6MPciHJ7hXpHKnP7rhtF0MPvq/L6ffJdFrLXfJM3ZFN9Njk7eGbKrKsqeAyqDlytVGqTc6wuG1saFBeBv9rxyRPFddss736a7AC7h63VALaiHms5P6a3EinJ/tRfWUi/L3ZX+mhNTchDI9Qb/ZQbc/HXbUqyQ3ZLFqfm59cNTHfUOLA5Sb9gxjF8ofXgDKfa5VwB'@; put 'PFWCC3I+PuV7e5g+xKPvFeUHnFTzA+D5rSV9ZR/486oPHPOLqKjvXCG34Cg6VYILrE6b4UuXojM9VDK+nANP8WVR1pkUXJP7zql9wT797jZ9H1D6Uj/cnUV9Txb66tEN2/R9Xp0X63sZnrL6t1vh7Cuor4Bm5dK6BeYrENavN3EzxKxA5VZ2vYluU3Wbvqiq7aHNpWxy/iweIc+/zZptJ63Z/lzX'@; put 'sfTUzjR5/rbFxa3HKNRpEHQz0M7VSpWGMkY2yXu70zun0se6yPOLi7cpY4zjw+QCvW2RjdFI8wY01NFVmkJrRiY/V0hIVvbLzIv7x+pCjmxtbdYRqh1rIuN1dSG702kP1dbLc+xBdzB/SIDN8Zb5uZuznecV78a6N0OugYR1mzk3y6duY6PSYj6aUbyixRzG3Hyh8Ix7W1nVxfck39jZGQ7Dq9rn'@; put 'q3b5/S4yLv8d7mzyu+SHcp7wNFpFNiSgdraCuMrPaKUkAyGtcgD5Ps+4GUe/mZQrR3wOjZJZrdztW+TcvaHD624pOHQfZJ4bm+LJle+dJV34DHkadt7L5s3aAIZ65s+yYjwEQpDVeBCMVtjNBfNqcTfhJpmS5wBRqFUQA1HNTb14lOrYdBH0agtzvUtwmEOmZj4RtLPfg2b6O+mzWCvKh/hsp/op'@; put 'n0c3fpzlg/Oomq2qQgvYOESt1KutlkIeuZP3+pXEcJztPZshL1fc9GGWII7X5qRfrz28dj8qRz42gqt8i2oVX2EsfuNluF+QfZA2V433Ddm3yPyMBf54vcofUR/ObMMfX1b5I+pDTxXx1vW+x/GXL9r3OBaL+s4V+h7FQyX8Ue77QKHvUeq3ZPcTLtA4QnEM4s01WQd4c03RARJru6kvX/ZLszbf'@; put 'fFOSYztvSkob2b+9UhjHDLxua//20wX/tnkcbZk71reFjrExzktQ3wnlflX0n8SAoxe/f/gfpDiOdqh9uPa30Ycjb0pqn2H8bXSB3Ak40/owoMvQpsu4XZsu45arhhYekbHIqjq9ZSF9gV6nXG2n1ymTW+l9yha3fJ8yhSP+FnqMfAqgUIGoLGA1QGSkUAME68An2TpqUfsjteVEXYqZFdaz++LZ'@; put 'Yqwbyj44xv4WHvVV+SzsRpGNK3Juu8B/3WatrtJ14+vIpyqD8rrZ+r8K67cU1k9RSt0IvXPrcdyNP/2n1VH8r76+eLy3N/64/BHvk/FnGPAqhHYCbgiAG154/yrDcQHfDA14ek+/ZnfRPf3daBRm+w/5rv6WCqwtl6/R12OdCZcZdWXFV+9bzRbOaOSWBEMlrym+sT99kY7s9n25N097c8q9/bkt'@; put '+21xc39JXzA0MmNjoqje4D82Pza3a6c4Ko4M9Ce6E/m2zJa3+dv+jNv8Gzb97Stq25D5k2/6x8ODwcIf0hPqvf935/7U/wHAlv8zgPX/KQC9VyiN1vDf0dsmHtZinAh3YyfALnBv5hOfyLz+ddNjT5iVO53SoGQr7TjWLph18tFPfCL92c/2PvGY6evfYLLiZ8qdinE0KY7VuIlGB+LPiOnNuBoq'@; put 'CjXcsgGTMoyNNA+8kPlvwkaj6ulgtmEsEm5uEix+sPkEq99MfVSFezqCYBBS0wI+8qSQbKejmUQAZCd80PjXi/KVi2O3LTv2TXK6XYdcR24ZVhL+Zz7kxcPSZ3kNXpLO1390T4Jdw9h7cijndHrqc32XdrJs/wMTuVpvtS03e0KW7zhOyvFlwAd1D4NCl2BcT74p9jJ6RyxTdEDV4YArewQP4VZX'@; put '6YvxoSTApU6pJdd/yWU1a0lii0tSSovC696qKPyN5W1rwoHO5TlBBuCEElt4gNG//PyC8nw99ik/f77wnL+6+PkD6nN09NLi5+vj94Fatf78bKH9sf1IgcE0uQxgQGMF+i81ea0YYFBiiqmQWLfDApthcplslxUDRrHL/rMIPoqNNlcEIsU8+4sNWQnra6Z2tbwXsL3/omgvTxdgYp6T5ShN+/kI'@; put 'u5tCxYWk4J1WrqOg36/NwPfa0u+1q5PofwAPfnx5AAABAAAAAQAAtCcAwl8PPPUAHwPoAAAAANPBnYYAAAAA1L6m9f9W/u8EWAPFAAAACAACAAAAAAAAeNpjYGRgYD767zYDA0vH/7D/k1kiGIAiyIDRGgClhgavAAAAeNqNlE1oE1EUhc+7k5ULwT8UBSlqElubpK2hDaY0lBRbbUrSjnYRakWh'@; put 'CxdaYrW6FtG6ExEXXfkDUvcuBbHuRMgmuNKK+EMUWlxkIS04nvuaqXXSgoHDNzO5b9675515poYz4M8MUQcoA9fcR788RFTOI+7sQEIeoBkf0W/G0EPFzQzSMoysAfJmCiks4oS56/2UJ0ibIvbKSbRLDw7LBFVASs6hW05zTAFJvbb1HMu6Ln0PmTM17HNKaJUvaJJHGJc51tbICdYVqSrvXyGP'@; put 'BV7v4hw3MSaH0OcMsIZ1TpT/30De8hZruHaZRkzeY1TfGWpGWJ4hIvewXa7jmLmAYa55hWw3n9EpBe+3SSMjXeiQK3BlN9rITnHRxp7DMkkfshhCBRm89V7INgziHXLOFHL6XK7ZelfHmKv0cBExM8lxWf6fYG9JHJQ97G0A+0VYcwdHzFZcJOPmJXrp+4ids0hPuEYziz6zxJrnyNh1jSOKD/Q8'@; put 'yfslJOnXqlcbyPlOqn/q3TphwSurf+QP6puzBS2+d0HJToxYqn/rpf7RZ+nAKevVBnLKpPbi/itUvDf0b5D8Sn2SS8yF711Qmgtl1vr7V+qf+qzUfnXOILV3nd+n5oj7Yvu9zT1VP3RNm1GzpvtdJ72qcL3qXRO5Qh7XPmwGmQPNoWZhjWcRNhHuvc6r/QVofWVva1xGMtTCeZlbzU4DmWXNUwOn'@; put '6xnzqfujHm1C/QZsDnUP1b/6t6B5DFIzzmxmrB4z82UyR3VTr5nDX3wGb9R/Z5ANntbnZG7hVFfPGyxTTwHpRcq5jBTPBHsumHlynpylvyVe81wKzSBhWhGhYjLnVW0+HI4t4eh/iZmB+webP/UMeNpNwl1IGgEAAGDzv1NPO/W68+66X+9ueueddxERETJEQiQkYkj0ENFDREQPQ0JkxAjpIXyI'@; put 'iBgjImSEhIwYISN6kBgRwweJHiQiIiQiehgSMmTsZQ/j+wwGw/I/e4ZyD9KzbowbT4wPJoMJN1VNd2armTK/NU+bD8w1i9EyZ9mxPFqT1iXroy1p27Ed2s5s97aOPdWb6M32/gQgIAnkgBLQdlCOIceCY9vxzXHntDonnBvOlotzrbp2XXVXG2TANJgFD8BzsAl23QPuUfc7d9UDeqY8ZU+3L9VX'@; put '7WtDHLQCfYaOvUbvmLfgvfFpvhlfxffk5/0J/3v/vr8JW+EJeB4+gk/hl/5Yf7G/jjgRBBlC0sgHpITaUR+6iObRIrqPHqPn6HWACjwH/mAejMEGsQSWwRaxPHaJ3WAvuAGHcA4fwqfwGn6Ft/AOARA4MU1UiO/ED6JB3BJPxOvAJjlIxsgUmSHnyRUyT26Q25Sd8lEUJVHDVJxKUxUaphk6Qo/Q'@; put 'CXqSLtMn9AV9RbfoX0yMOWXqTJN5ZjoswOIsxxbYXbbEnrA1DuI+cUdclbvkrrn74ErwY7AYPOcRPsTH+BSf4Rf5PF/k9/kG3xVAISDwgibEhbQwJywLa8Km0BRnxGUxJxbELbEkfhVrYv3NYWgttBXaC4fCjfBD+FWySz6JlzQpLqWlL1JXBuWALMnDclKekRfknFyQd+WSfC13IoFIKpKNVCNt'@; put 'ZUyZVTaVPaWsnCoXSlNpKR0VUHFVVEfUxH9m1ZxaUc+iQJSJjkcz0Yw2oc1pWe1Ba+tGfVQf16f0WX1JX9XX9YZ+qz/pvweBv0tAvSoAAAABAAABPABYAAoAPwAEAAIAKAA5AIsAAACDARYAAwABeNqFks1OwkAUhc8UJIDGKDEuGhd9AflTIepSw0ZQIwo7EhAEIlAtxYTX8Cn0Tfx5Ad24du3a'@; put 'hYfhtqDBkEk738y599y50wKI4QMBqGAEwCGfMStYXI3ZwDLqwgFk4AgHkcSD8AJMvAmHmPslHEZaxYQjMJXnuYhtVRFeQkndC69gTX0KryKqvoWfsG6EhJ+RNDaEXxA28sKviBrnY34PwDQqOICNGwx54jaaaMHlyR75pHnyFDuxUKNqMa6lY/rkIucus/rM7SGOAhrMc7STjY5E5X3HM+pNDKhU'@; put 'GZViRlKPfVzgCGUck2Z5bE55zKth/alS4sphTFuf0ZqqOq9SiXTJ2WbMqPMT5jc4j/Lq1KrkU+pDXd/l3v93M/JzudpDguPul7Otfbu+a5yazbWX05esJlWXuwN+CS8mwdmr2dVdTmomZnY4a2/Sc5lqDVc63/VvqyB3l9OqxZHRWpYnS2GX7y3s+P9KFteMa2h/R+495zsWccsO2lQcxnR+AGii'@; put 'gvcAAHjabZNXbBxVFIa/37F33TZO771Xx173xCkua8exYycucezESca7Y2fxehfGu3FsugQCHkDwwjPlCRC9CiR4QKJX0XsH0XmkB+/cCV4k7sN8/xmd858z994hC3edG2Ae/7NUm36QxQyyycGHn1zyyKeAQgLMpIhZzGYOc6fq57OAhSxiMUtYyjKWs4KVrGI1a1jLOtazgY1sYjNb2Mo2tlPM'@; put 'DkooJUgZ5VRQSRXV1LCTXdSymz3sZR911NNAIyGaaGY/LRyglTYO0k4HhzhMJ11008MRejlKH/0c4zgDnOAkp7C4nau4mpu5gTt4n+u5lqf5mDu5jbt5nme5h0HC3EiEF7F5jhd4lZd4mVf4liHe4DVe516G+YWbeJs3eYvTfM+PXMcFRBlhlBhxbiHBRVyIwxgpkpxhnO84yyQTXMylXMJj3Mrl'@; put 'XMYVXMkP/MTjytIMZStHPvn5i785J5SrPOVLKlChApqpIs3SbM3hV37TXM3TfC3QQi3id97RYi3RUi3Tcq3gc77QSq3Saq3RWq3Tem3QRm3iPu7XZm3RVm3TdhVrh0r4gz/5kq9UqqDKVK4KVapK1arRTu1SrXZrj/ZqH0+oTvVqUCNf841CvMtnfMCHfMSnvMcnalKz9qtFB9SqNh1Uuzp0SIfV'@; put 'qS51q0dH1MsDPMgjPMpDPMw13KWjPMOTPKU+fla/jum4BnRCJ3VKlgYVVkS2hvx1o1bYScT9lqGvbtCxz9g+y4W/LjGciNsjfsvQ1xi20kkRg8apCivpD3kWtmF+KJJIWuGwHU/m2/9Kf8izsj2rkPGwXRQ2hxOjo5ZJLRzOCPwtnnvUY4vnEzUsbM2sHMkIfG1WOJW0fTGDNtMvZtBuXsZdFLZn'@; put 'esQzPdpNetyFv8ObIWEY6Didig9bTmo0ZqWSgURm5Os0HRzToTOzg5PZodN0cAy6TNWYC38qHi0prQx6LPN1m6SkmabHmyZlmNPjROPDOan0M9Dzn8lSmZG/x9vBlGFBbzjqhFOjQzH7bMF4hu7L0BPT2tdvZpx0kd8/fdqT06ednjhYVuWyLFjp6x12rKlrNW7QaxzGXeT1RqK2Y49Fx/LGz6t0'@; put 'XWmovtpjjccGj42+PmM04SL9NlhSEvRY5rHcY4XHSsNgU3Yo5STcoKKpIccqtmLJfMudxUj37qdlkTX92ek4YJ0f0CS63dOywPt9jDb7mtZ5Vvo0THIyGou4ybnW2NQeRWwnL2J76h+3ZbchAAAAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnTZJMjJogRibeTgYOSAsMTYwi8NpF7MDAyMD'@; put 'J5DN6bSLAcpmZnDZqMLYERixwaEjYiNzistGNRBvF0cDAyOLQ0dySARISSQQbObjYOTR2sH4v3UDS+9GJgaXzawpbAwuLgD+HCVgAAAAAAFYmPZ3AAA='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=Metropolis-400.05446670d27f7666.woff; filename filecode temp lrecl=32767; data _null_; file filecode; put 'd09GRgABAAAAAFUkABMAAAAApQgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcfNH55kdERUYAAAHEAAAATQAAAGIH1Qf8R1BPUwAAAhQAAAcXAAAOdj58fExHU1VCAAAJLAAAACAAAAAgRHZMdU9TLzIAAAlMAAAATQAAAGBoQKzzY21hcAAACZwAAAJsAAADnndDD7Fj'@; put 'dnQgAAAMCAAAADAAAAA8EawBpGZwZ20AAAw4AAAGOgAADRZ2ZH12Z2FzcAAAEnQAAAAIAAAACAAAABBnbHlmAAASfAAAN4wAAHG4/7HGDGhlYWQAAEoIAAAANgAAADYLZYgSaGhlYQAASkAAAAAhAAAAJAd6BCBobXR4AABKZAAAAoYAAATaq1M+VWxvY2EAAEzsAAACcwAAAnpN7jLmbWF4cAAA'@; put 'T2AAAAAgAAAAIAKEApFuYW1lAABPgAAAAXEAAAMQI+x4YXBvc3QAAFD0AAADoQAABiGXFj2KcHJlcAAAVJgAAACBAAAAjRlQAhB3ZWJmAABVHAAAAAYAAAAG9ndYmAAAAAEAAAAA1FG1agAAAADTwZ2GAAAAANS+pvV42g2MQQqEQBDEEkf0MLPof7ypL/DofXfV/z/AIgRC0TQCLR6cdFRkjVso'@; put '7HzTv1D4B7m4048DOlopNlv645SeXXLT51sXzSa+W3AF3AAAAHjajVcNbJbVFX7Oufe+39evgKWUH6EgIVgb0xRGmAiyaRhURyqSjikaZvbjnIPx12EzFuf4cWgWUheHDAlpEPkx2gCiYkXGuoYxxzYCygxhYFwHyBYm0+lCRHn3vOf9sC/QbuMJD4dz73vvPec8t+cWAqCAEZgKmVxXPwN5eHoQ'@; put 'x3D8R6Bwc77dOA8Vc7/ROAeVc+fMncPZoD8ZTWck7PhdAQMwDFXmcRiJeteajkYLbFWJmhHxI+m9iF8MNl9AxWcQ1MXN5ICJWIlPEctgKI/BeTJIjqEUvXiyf8Qd8Zb4SHwcPfyJ3+9x5Pfdeju5d/b/J+Of97jCuz2O9HyeP8W7ehjZEnfGuxNc5j/Cv79L0N0ecTOzpBjOTFcxW9cRilrCYRTh'@; put 'MYYI+DwRYRyRw3gijwlECXM7kZVqIgRL8RPOfJQIzPhK+l8mBK8QglcJxSHC403C4zgR8FciwkkiwrtEhLNEDu8TOZwnSli9T7laTBSkTMpQIuVSTq6QCvJgVrbAtUdTJSP5zfWE2LnTE6ud2NmJvZ04YDKRRx1RgtuIAhqIUszHg1whiSSySCKLJOBxPMn5q4kS/AJrOf9pbOL8LUQpthE5bCfy'@; put 'eIHIYQeRx4tEDi8ReewkStBGlGAPUUA7UUAHUcBeooDfEILfEmLZifA2UYq/EGle1PKilhdveQmWl2B58ZYXb3nxMlAGMl9Xy9XkJEeBq9YyQ1WscS1rO4Y1HcfMTGBG5mMBFqIR38ci1nIplmE5HmEWHmX02xjRi6zkK6zgIVbuOCt2kpU6y5Oct5tVxn0rkvulD9s93CeNjLs31bWbumuOP+pG'@; put 'rTbS3R34bORMgm6+PNvj3ThzUfG818fj5fHyy0fSWxevi9d1O/I3+0ZRaZoQ04Tiq4TD3YTHPUTALCKiIp7knEQNYmpQU4OilYiwlYis0mKVFqu0WKXF6qo4QTicIhxOEw6fEAEXiEj6Sl/WtZ/0I/eX/uSkomIVFRkiQ7i+ogZXEaXoS/QypYspXU3prqj0W4ms0r3FE2XiyZnSXVHpXRr3FpW3'@; put 'qHIW1UWlpxpP1b2L6FnXSbTeNKvFCBPlOoszZ/p1pl8txpyoWIuRJ1rWTPxZRTvLQk5Gy3junvz0qmOEDazX3YxrFiNZzUjW4ClG8zQ24BlsZERbGMlW3sY2nradp9zL051gDU7zZBd4gn7cbSB3GcIVh5meFX2so5SbOsq5y820xOyb2YmORcPIncx/h6yQlfKErJEW2SjPyXbZKbulQ16XA3JY'@; put 'jso7ckrOyAdyTi6o14KW6QCt1BFarbU6VifoLVqn9dqgM/VevU9n6wJt0od0mT6mzbpK1+p63aytukPbdI/u1f16UN/SY9qpp/U9/VA/dnCR6+XK3SA3zI1017vR7gY30U1yt7lpboa7x33d3e++5xrdD9zD7hH3U/czt9qtcxvcs26re8ntcu1un/uDe8MdcW+7E+7v7p/u3+4Trz7v+/gKP9gP'@; put '91W+xo/xN/ov+sl+qp/u7/Sz/Df9A36eX+R/6Jf4FX6lf8Kv8S1+o3/Ob/c7/W7f4V/3B/xhf9S/40/5M/4Df85fCD4UQlkYECrDiFAdasPYMCHcEupCfWgIM8O94b4wOywITeGhsCw8FprDqrA2rA+bQ2vYEdrCnrA37A8Hw1vhWOgMp8N74cPwcYQoinrxdizWbeQlxnUZXpUwmoxbzLO0y1/k'@; put 'acY1xjcZP5iwDjV7uvEk42uVP1Ol2niU8ZSEsdB4k75GbjT/eOOJ5u80Pm+e64w3GFcZ540b3Gzy88aLu2d9Mxuj+a9gTDN+1ripi+WuNHaz5xnvM151JacZMPtKnm58rbb/L9aNl+SqvTvGl42fMV7Yxcxeu2Xvv3Oaz/ZuuSrDizNnvsTO1HSJ+avNn7XTrD5u9l2ZzI/qGr1o22iqiqw/zeqU'@; put '1LY5qWbS6qRRp/os2kV/MqfF7E2u6aJ6ixp7w+z9iV2saZqxVNup9rL+9Axp3g6a/SOr0Z9N5+dsfqqcTptjNyLV7SX+GrPPp7bNSVWd9ac36KaMZtKKZO0XzP5W6rf5di90qPk3mD9VWlXGnmScN09P9kfpfbHo7jD7sNnZleviXyXVifdcVqnsjlOKt7v9/+BLZyqusXcp+O6qZlaS16ln165h'@; put 'F0xe2BE+x5dYDmNxI3tY0rn7sG9/gT096dx97Y1abp27H3+vmso+VE/0xx3scwPY6e7k7z4ziUrr5UPZ9b7GrjWfb7fh9nobx47ewvXWs/Pdbr3vK+x+r7FD/hIH8B2+6M5isb0q1+BfEvAUO/EQtFpPbeN5Ra6y380iSPxjU+ES3E9ewW5XikHcayQjGo0beOpJPOU0zODor027fzQ+amx3Bvsy'@; put 'fMh4rvFm41RVObNL8SXu8wC+KznJS4kUpFR6S58rT/Qf6j6bKQAAAQAAAAoAHAAeAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BmcmCcwMDKwMLUxRTBwMDgDaEZ4xhEGM2AfKAUHLAzIIFQ73A/BgcGBdU/zNL/jRkYmI8yqiswMEwGyTGxMq0HUgoMTADJZQpAAAAAeNq1k1lQjlEcxn//t30R'@; put 'KhT19vZp00aiFEX2pci+lKzZsq/ZGusQQ0VSyJ4koxkTU1O2G+64NWOMvs+VW+4MHcdXTDPMuHJm3nPec86c55x5nt8fcKHrC0F0j1TqmTjnrlKsxyWMw42BlHCLOu7SSBPNtNAmHhIggyRMBkucJEmqpEumTJUcyZNCKZISI9V4Zbx3iTKPm63mE/OL5W4FWsFWqGWzoqxhVrp13+Yf+U0pfYfF'@; put 'jR7aj2njmfhKfzHFJrGSKCmSJhmSJdmSKwWyQTZr7ZfGW619yGwx283PlmEFWEFWiFN7qJX2S1t9VC/Uc/VUtatW9Ug1q4eqSTWqBlWv6tQ1VatqVLWqUpWqQpWpM6pUneh805nVmfT9k6PcUeDId8TYB9r97D52L7ub3ej42vG54/CHkHfJXV79p+ZueDuT4I9bBKP7z/iHRtdJF1x1du544IkX'@; put '3vjgSy/86E0f+uJPAIH0oz8DCCJYZzxIpx6KSZhOJBwbg4kgkiiiiWEIscQRTwKJDGUYSQwnmRGMJIVURpFGOqMZQwaZjNXMZDGeCUxkEpOZwlSmMZ0ZZJPDTGaRy2zmMJd5zGcBC1nEYk1aHvkspYBlLGeFfv8OdrKbYg5xnNOUU0YF5zlHJVVUc5EaLnGFy9Rylevc1BT9ZPQ2DZqle5qmn20V'@; put 'q7Ud0WzgbLc361mj+12c+O1W4V8cvEA9m1nZY2UtmyRGj1vYzjHsOCRc8xkpUboCIrijdx6gaZYEXQ/x3WeKnGHEso29bGUfezjAQV1L+znCUb11mFJOcZLXupp6sU68xFt82Ch+mn/PH5DNquh42mNgwAL8gdCZwZlpPQMD024mVgaG/yHM0v+NmXb//8J0jEnw/5f/fiA+AM9PDVh42q1WaXfT'@; put 'RhSVvGUjG1loUUvHTJym0cikFIIBA0GK7UK6OFsrQWmlOEn3BbrRfV/wr3ly2nPoN35a7xvZJoGEnvbUH/TuzLszb5t5YzKUIGPdrwRCLN01hpaXKLd6zadTFs0E4bZorvuUKkR/9Rq9RqMhN6x8noyADE8utgzT8ELXIVORCLcdSimxKehenTLT11ozZr9XaVQoV/HzlC4EK9f9vMxbTV9QvY6p'@; put 'hcASVGJUCgIRJ+xok2Yw1R4JmmP9HDPv1X0Bb5qRoP66H2JGsK6f0Tyj+dAKgyCwyLSDQJJR97eCwKG0EtgnU4jgWdar+5SVLuWkizgCMkOHMkrCL7EZZzdcwRr22Eo84C9IlQalZ/NQeqIpmjAQz2ULCHLZD+tWtBL4MsgHghZWfegsDq1t36Gsoh7PbhmpJFM5DKUrkXHpRpTa2CazAQOUnXWo'@; put 'Rwl2dcBr3M0YG4J3oIUwYEq4qF3tVa2eAcOruLP5bu771N5a9Ce7mDZc8BB3KCpNGXFddL4Mi3NKwoKTHS9RHRktJiYGDlhOU1hlWPdD273okNIBtQb60yi2JfPBbN6hQRWnUhXajBYdGlIgCkGHvKu8HEC6AQ3yaAWjQYwcGsY2IzolAhlowC4NeaFohoKGkDSHRtTSmh9nNheDKRrckrcdGlVL'@; put 'y/7SajJp5TE/pucPq9gY9tb9eHgYBYxcGrb5zOIku/Eh/gziQ+YkKpEu1P2Yk4do3Sbqy2Zn8xLLOthK9LwEV4FnAkRSg/81zO4t1QEFjA1jTCJbHhkXW6Zp6lqNKSM2UpU1n4alKyo0gMPXD8OhK0KY/3N01DSGDNdthvHhnE13bOs40jSO2MZshyZUbLKcRJ5ZHlFxmuVjKs6wfFzFWZZHVZxj'@; put 'aam4h+UTKu5l+aSK+1g+o2Qn75QLkWEpimTe4Avi0Owu5WRXeTNR2ruU013lrUR5TBk0aP+H+J5CfMfgl0B8LPOIj+VxxMdSIj6WU4iPZQHxsZxGfCyfRnwsZxAfS6VEWR9TR8HsaCg8dsHTpcTVU3xWi4ocmxzcwhO4ADVxQBVlVJLcER/JsDj6uW5pzUk6MRtnzYmKj0bGAT67OzMPq08qcVr7'@; put '+xx4ZuVhI7id+xrneWPyD4N/ixdlKT5pTnBwp5AAeLy/w7gVUcmh06p4pOzQ/D9RcYIboJ9BTYzJgiiKGt985PJKs1mTNbQKH08EOivawbxpTowjpSW0qEkaAS2DrlnQNOrz7K1mUQpRbmK/s3spopjsRRnMgCko5KaxsOzvpERaWDup6fTRwOVG2oueLDVbVnGFvQfvY8jNLHk3Ul64KSntRZtQ'@; put 'p7zIAg65kT24JoJbaO+yimJKWKgiPghtBfvtY0QmLTODLoEiZHGysg/tih05ooJ2At960irv20Ltz3XyIDCbnW7nQZaRovNdFfVqfVXW2ChXr9xNHwfTzrCx5hdFGU8ue9+eFOxXpwS5AkZXdr/uSfH2O9btSkk+2xd2eeJ1ShXyX4AHQ+6U9yIaRZGzWKURz69beDJFOSjGRXMcF/TSHu2KVd+j'@; put 'Xdh37aNWXFZUsh9l0FV01m7CNz5fCOpAKgpapCJWeDpkPpudmvCxlLgsRdyzZNdF9B08IR3ivzjEtf/r3HIU3KLKEl1o1wnJB20fK+itJbuThypGZ+28bGeiHUk36BqCnkguOP5e4C6PFekU7vPzB8xfwXbm+BidBr6q6AzEEuetggSLKt7STqZeUHyEaQnwRdVCswJ4CcBk8LJqmXqmDqBnlplT'@; put 'AVhhDoNV5jBYYw6DdbWDrncZ6BUgU6NX1Y6ZzPlAyVzAPJPRNeZpdJ15Gr3GPI1usE0P4HW2yeANtskgZJsMIuZUATaYw6DBHAabzGGwpf1ygba1X4ze1H4xekv7xeht7Rejd7RfjN7VfjF6T/vF6H3k+Fy3gB/oEV0E/DCBlwA/4qTr0QJGN/GMtjm3EsicjzXHbHM+weLz3V0/1SO94rME8orP'@; put 'E8j029inTfgigUz4MoFM+Arccne/r/VI079JINO/TSDTv8PKNuH7BDLhhwQy4UdwL3T3+0mPNP3nBDL9lwQy/VesbBN+SyATfk8gE+6onb5MqvNn1bWpd4vSU/XbnXfY+RtlM7osAAAAAQAB//8AD3jatX0JeGPVeeg550q6kjftkmV50S7bsiTb2rxbtrxKtuyxx+PZPJ5hxuMZGAiTGQjLDEsI'@; put 'JSSkSUNC2gRCCDxaaFkmwLBMFghfSiYLJC9tmrRZ2rQp9AXStElL+sDy+88590qyJc8M+b4HY8m+Out//n05QhVoaT2CPyvYkYC0yIxsyI1aUAx1o340gWxJy/BAX08iHmn1e5rqai16nUZBUEV7QOnUO0VzxOw2R2LuWCQmsncRfpWf0mf0nX4CT2Ly71Ib1iERieHP5l7G/f85NPzw8PDDDw+7'@; put 'nM7h4eFDw87bHz7kch5yPvzww85Dh24fG3v48Jjju8IbKafXCf9uPeIaG/McgN/GnH3DrkM3dFnDs8ePP3b8+Gx41Rl2wj+ECJpf/x36GnmC7c2bdCGM0RJCqCaDCBGWFVgQrMKUQqHQKmq8ep1StAaMEcFt8cWi8UinxWxSuZf2mmKCw2G1NDVZyBM5w3cdVrPDYbY6EFpfR+P4MbxIHtS5UAVC'@; put 'OgFen0Z0Xj+83ADz2lETuiHzZOfszmSzVkWQUiCYILxSiTWamkyNrloQRfVSVQVRq/UZBSZES6bsSR99wD5EavFwaT+p4a5kI0JNjQ31MI29zlZrhQUb9fn/xIYAFiOiW3Qn2E8iwn4iIvsR6Yf4v6LXaq8NDgfvgZ/j2uPR92tPSH9do33unug9+Kuv9j8F//W/2v80/Nf/KkAytH6WhMnbqBF5'@; put 'URtqTwbbAi6nva7WajZUVqjFGkSUAGaSBjCQ2xBG+EMAEiuaatLrBQCwRwVoEfP5ExZrLIRj0QGcAPSwWEWf39yIzQge18BbPBaFByR8/Ej2pr0d03sv29+5syt71a72iZnL35c73NUbSWIymRq//EoxOazb3T+tX7PNZzu2x8X+/pq5/tGa39TtnMf2dv1PNUOtuZGRUDBmegsWokTh9f8mb5Jn'@; put 'ACOMcDph1Iu+lXmyFk4oUImVFRirlHgVqZBao1IfQQoFWiaYYkw1gF5YrhKJIGiFKXvmST90CV+wC4KmrJ+4XIVF0SrC2UbK9CAE2tJuqHyvXbuSvvZ2h8NkQqi9t70nHnWEHaFmn6nJ1FhXazTodbCZGl+NaA4YOEgjnQBKUw124wh2Gygs3S6V2WSJoE2fD+DCZ1+YbG6ZDIXYK/7ocK51+Np4'@; put 'orU13tWCZydb8h8F2MNEK14KZUMdM6HQTLh9Jojn1rbhu1OdkZFUtDOVOxicaQ/Tz6BFMJ6KdI7Qj2B/AmpZ/x05SZ5FDhQAPjOQ7A0HvU0N9XW1FbhCIA6MBJKmGI6XgVwtGSUQKYMMoFBbm9PZFmuLOgPO1jaXSrQElH6V20X3FE8U7ww+ssYTVpVoRbA1K9+lIeHzA2rBTklw99I1/Qe7pmcb'@; put '64OzncF0YPv2/v3tjUMdoffnPtcVn+jv8DVNnhzuGZzvF/fsD+/sTR10t0z4gpOBwGRgcNo5vjI+33Dl0EmyOxKIj9bHW5rjay9nr5u1Z8K9Y4DzwBfQg+RBVIOCmSdbAFEqKeth54sBCXSI/rkIf+IlSiHTu562eAlsxxDLsx7RJLp36u1Go10vtuEfkeOtRrvd2HqcBKDHwPoOnCBfRtVI9VS1'@; put 'ErcHGMtKWNn2rOKjx46tNC9s377QvPCzW2796ULrzhc+cO25xQCdEOh3B/bLfUXoy8HjT3DAhVi/FRjh5sVz137ghZ2tCz+99ZafLbC+vfg6vES+CjsZTg4uTo0n/PVWUQ2cKd2PUTUc2iS0AuQnNyEiYCKcoiyWH6QwBSMso31zs+0hl0MpmgIGtuZ4QiXC/26Xzw9/J+KD2M9/o2dptcD/Pj87'@; put 'YM6QoS3tQ/+i/E5UabGV/wbY7KJd/RYr24n761o1FhTVtc1WpVJVpVBU1gcDgWB9pUJRpVIprM211QoBq7UVFfl2CtWF2uHrqjXWiErbqDG5GONWVqt0Or1ep1NVK9WiKFS7TJpGrSpi1VRfeksG1xQ6SmpIFFUiX9KNYDrFAuA9ABILaAVYA0UTBZ5mfF2nEusC2E0laoxK1gipeTHzIvzDLS++'@; put 'mH7pJTre9PqN6CW0H/DPmgQyR+My+gEReQwU04A8XAUxJ840V1lAytU7HcGjoTAVd0F342AXHasL/Qr34ihQbm3SzBB3oYC4eh0dzOg0O7uwkFvD0Um2n0mQu8/A/JVUg6BPgCNibMUUBypRhUcAVlUsZY9KErYqL13x+m/Wz+KHyOswrz5ZQwcFYYJP8gkpW8MzC7kHFsjr776GmMztBb5yLTkH'@; put 'rLAJtSVbgKuyHXMOgkHYswXogPZ0TbrGWgvjmSCMAorNPJHEoiFAJkpMjTCT6oOTkx+cn4PXW+f79kWj+/r69sVi+/qq9nxxdfWBPXseWF394p6JyVvn5m6dmKCvHAZ1lBRAB1Ahe7IWjlIAeKU5h8dYi6f0RgY60Z+I6N1PX+d6ZDBLZrM9J9a2Ida/AzZVCfuxodakv6oStgPYQEiagZOxRqrE'@; put 'LCEmj/RWj18h1gYGMSVmunqV6I9LzFCL4Xw63pkYah72du/yJZY+3XeoN7P4NF7K+YZ+OLAabe53dEWCH+rc2zd6Y+beNJ+/GeCph/lb0GCyz1YLc7kwkDSsAwtUuAOV4xWYXbEMCAqLAdm6rMJKpVVJT7kFNXs8To9XFG1w0pS5RDqpHArgmNUiCaTCCkUJ9N+/tTnuPtQ/sXPf/GR6fPfiUHyH'@; put 'P7rnE0OrvZme/sW+K8eqhmKRUHSit29gAuOh7vhYZzh8fXghPjCnr9k+0r07wnGhGV4GAPYVwOWCydYq4Ek4rVLCHjAC/fUwgI+JXK1iqrKysrqyGujKoKNr9Tr9OKKnGqw7psf4ztwjFXhh9+pqNvf7Px/Cr+QGx//81/hg7j4Ooy6AUSPM04j6kt0mjBXaGoEo4NzTCF6RAoS8IJAlLuE3AqgR'@; put 'Nbj0Rq9HBpAl0ikJY9FP6UmM5xHyZ9cHIzsvD6db9k7MjXdX4HtyZ8WRmcHV/sH3jVX1RLr3N48Fhudi9fhA+vVQ5MBwarULYNAHa4vA+TWgVsqtDXo4O38dUSpIWgVsRaEUFKsoL2ZFWJjMIRpBr2xsbWzxuqFzvdfrU4PehqTFUK5BiQXEDCeSBkC5iEFWJERKMXcdHRi4auz2W9I3T/ftawl4'@; put 'JkLx3THHSr8n07xvfGipWrc4ih+DhQ4e6fvKvSt/caC1ud/tnbljm6YzkftIcMI/CtucO0DlDZxjFaOhpmS9AgiIURDlPZjp8KAFg/ZD1UrsjDnNwBSeyN2Fv5/70W6yku5du4vqG1GAQyvAwQ5w6EEjySGTigCHTYtFQJA4hRqAgOGMGKcIBOrrEQr0BLojHfWt9S0eFwxR16ahrKucxiHBx5An'@; put 'QMo9rNKf/hrCmMkb7x9eSA1MDF3RP3DFUKZ3eGH4xJhnItwyHhja1T7uBpUpPuvzzcZBqapqX+we2Guu3dadmG8Lzid6Zy2Wvf3di+34E41xryveNBLxxRtI7nlHt9ff58TY2ef3djsY/m86e4cBjr1CAzYEgW0rgXCVZBXQX4C9CoIlUyQd5LOH3cLZ+7xedvYW6eg5HQ/gfkz/lPZvoJDg7NIS'@; put 'wU+VnPogw4YUO/YOigHk3OZT57iQ+wg9dnb+sAcmQ/A6yAsr5eeUf7NF6rnxpuTGW1UVQlXWKotBxwQL5eeGIsFCyggZq/SO75alTe6A/BvYdEx24nWw6bQwmYj0QMb3I80ZjJ/D9z8ZCVC6T6CdOEcWAS9VT6kI6FDGmNdcjc0J4BC34dO4p/cXY88/P87OIoXOkRr8T4CJInIlmyj+UlMOFCSB'@; put 'LEgsnAhUtusoB6e0T/9P4W/nYuznn9KfTMOcU2gnMcpzCjBnIohjSrNyCp+GOV/Jdd///PNjv+j9BZ3Tvv47/Bqcfy3yoEQyaqmqpGwPU7YtwMQ3FckQysCVWKGwKqZsNpvH5vbWevwquhBZDhb4dA0G261Ybj/XsyfiHGiOznkje/9oYH80sqdnRi+D95TS0+VoSjg7g5ET7dsjbbO9VbcUmc90'@; put 'nW3rdwmjoCcPoix+JvNkBWjKBqeDqIXhJoOgUPf1EkDQNBhbVRs+0RR9YtqiT7nmu3bt4pM0V2qIAmSCinJoVQUGrfIgkhggMBa1WlgGwOjVU9LUQTC8FViziC61k+k9TtL0h0xCDYsAHKhaI6hXL9pZCYZHBxVCAlKubt1LFFWAYypxmXWf2UX/S9Ymkwgls8npiTE4qwGfr9Xr8fmqRHuJ8uSi'@; put 'NlaRkAAjrINZl50yX5TUqk5mroABmuDagMQ+Rp488v4Xrz702OHoXCjUr26c75hcSh3r6Rw1VKf0Hk9jY7d36b49K4+v7vvC3oGDCUPPVSPNO9U4Hgtmw/2Rk4cfO/S+F48feGg5e2U81OwP758eOZEKeoaVC2etTe6WxeGFTy2uPrGy576leqfd61i7bErURnqiOzpiQxQfAS3JD0DeiKA5BJLN'@; put 'GgxwSQN1ALkoQGugYlzATHtTq9UV6gqujteC1iAyU9tfiUl37tbRBRym/1bu/8K995In1rb9Kz6a+wzAfB+MfxzG14FW50L9yR6QODCDCjgCyGUlVackB5WIudZP57LXGfTOpjqX3VVr0dsMtjaHmindGwWPE0sKltko/7IP9yZ2tHd09A1Fl3pzz2N/9+Rk949/mdy2LflL8kRbtiM61tC4pyu+'@; put 'ox3fNdDePvCT3Lnxrq7xHNNtqNz8KJMhoWSgzlZZQXEkLYsKywYXGjxg0sJHXWh5lMirCMUHjhMP7t//4NLYLR0x30pi8nQmc3oyseKLddwyVgXntvzggURnvCU0fVtm6oPZUEu8g+oyFG4vMH3OzCykPJiYo0ACU1WlyVBprjL7wLoE8MgoGcAJCfcCWL/vjWOPLC8/cuyNNxZuz2RuX/gseWLn'@; put 'vQcP3rdzfOzUzMyNY2s/Z3ufgfn6YL5KFE62yRyb6m6KJRCbNcWaN7NoKrnHDVQ5o1ni33qn+fP4mtxH8edzRvwWWflF+t/T5AlJt5bH16CWpE8en3JhNqqs2sAHGqShIzN+zEZ1y+PO8EFzr/BB+XndD+flRLFkJ5hJSGgiRKFkBoNSgRhykWUY2UI1X8b+QcsxwqG5uUnp1BcJ9dLDi7nxXdjY'@; put 'fvfEEjvAiU+FY97ruvkBtq/6voEvz/22vZsfYXd73N/Oj9Dd8FBhz7cwmPqTHkk9XgGdnO6X+su0aDMsMd0t/ETgldySzV2RzeJPU3LC3XTbub/BbXxcdB/z8RqpY6VgX3HTFIyrmWyW9qI2GcjFv2b0B1jETBmG0Uw5J8sCIJOVgV2HtEavAroXTBdYBaWyJz/Q1G1aDPdns4mDg1XJzq5A195J'@; put '/FquY+RYH9/n3vw+HckGjVpJmOTFzCMocM+t0WDgsj6ixxEN0ASI1b1ZvHc193McXcm9cwzWm/sQPpX7a8Cf5PtfZeOOwLgaGFdJdWG2aDoaJQ0JdEqk1Ovpor2AJxE90eR6s2nAubXPsf6Uhn5fWJdYZl0mvbwuDRhBbn0lnMC+LFpH69ns+jpdlBP/fG0bEdn7/6D8uA8xXG5M2kVCSkY15EfF'@; put 'sCw3GxM/ms3mdtBj+T4Jw4jhte9T/ktx+Lf/P2x4znT2PbB//wP7Jk+n06cnOeJKLOfAg8vLDx2YyH5wKnPbNMdbpp9QnD0Ie6sCvgNWOKwCSFXA1CVTCCTAFmuqTYZqc41Z73OoaBDBmec9ZrfMlvUz2Dp2MpU6OXY+izULq6sL58gTXSuDgytdb+Oh7MhINveTYhiYaBwm2Ukd+0qiArNSINQ1'@; put 'WjDZFEWeUbPZ3GJuDvv8lAGDELeK/mJipo71eMKfsG4SwuS3zd7pztnw8f4lGUC5V7e7r+i8qq4hDyNcf3U41TPmD+RhlfuXpvqlnmXPYqgYXEXwqoE1gfwEgaHAsim8ApqIxN4kcvd4nHq9kfIeumK3H2xuPYOcUvYVkINH5r+06/GzWQa6XM85BjZ82wlD7u23GfQ+SQEn+TX/i4TJlwFqIK9q'@; put 'rQQkNsFF4KLO5yJ51YKavUEPBZdFtmqoFzREStgf9ycCOO97X0f4qpHIhHfxssyBWN/RoclrIu1th2ItI74dB686kbhquvLK/nDUmXBEE1ZDW6Y7vjsaCfe3hpyJpo5Ibd2u7V27o2ytQYDTJNMzuG8ob9JyZ45kCmA32LRuoBjT66T+9SyYtGmJlncAjnwK+puRM9koBRswLt6eGZlMHpMsjinz'@; put 'kvYo8THsum0yG1/u61uOZydvm6+aumMH/mTuqqHVnp7VIfrbjjumOH3LOpGKzqVkNjhwTolpcs4DJgnnPJSXAe8gP8h9fwH+YRBplPPCzxkyA2N5EVKYGD3BWBWU9wOzoKEtJsrZ5oFbGHRKKkkjdkz/Ce5K7Pbu/OrZxbNf3fmr6a+9OA3D/Q1pYz/byOTas3ydIEfJ3Yy/AX/UqGBoOH7Kgmoy'@; put 'mOObwWDQU7jCKmFIDRsdZJq4/+/+bhmLuf9h7ztzf4FtudfxIvz2OrbxsQ0w9sdgbDVqSNapBKDDPJOTvBAGFtySxoQj8+d+deCnP9+Xe3MO1+LP5J7C07mjuTfoWD0w1rgs+yk8C269vF8j79Yz6NmKE9y9AQpAD+gTRwnJHcAPrv12gPjTA2s/5vJ/2/rHcD/52SVamRFALPjZ9uajj75Jfta9'@; put '5uyGHuvvrJ/FT2zhcxVAv1Uu4GXucsWoA+ZryM8n+wOpakb9w3Q+VJjPCow/Bj8dMN2bPeTn3e8+QYeP4/vw0xy3zqgOjSQtwOGZlxRmph7jk5J354wKjRgjRrdfdP+o94Ghm25Ogiz69T/8A11zbv39ZG79GZjOwcbYwkdNhxABgIRsX/urTIqf6yBJYpF8D/paWd8q6DkBn5w0gEjmsyas7sGZ'@; put '63vIVw2f4DyuE3SI3xA9siM/+kHSZMOCohaEgh40+aZGpaBSKtLcyHRAY6WKUGMLbGyq0NsyaqxSoWUJHyXj0lOmHSUt1ljW0ySb8uJjXtpw1KgzU/9Wvb/e53JQz5bH6zZq4KiQxQxnVWTEWQveWgOogXK4EN9+Rca+Ep+/PLGUyO5OTrknA42HdlgO1kzN9s5PdhH9NQdy39jW1rE70zkTaDAO'@; put 'Ltos/Z05b3dkxtwXCieQFJ8nEyDrDGANPXdWW0GUIC849BoAaXWZvJPKJnko6TatedA5Nzeiqt8GX6YEt4uMdgkDUYiZjEaEjC6j026DJYPs2uQZ9VOi0svu0GL9474rBwauTPUfaMxkGg/0e2ba2mY6O2fb2mY7iX70xmz21Gh39AA5l/u3aHfOB8Za795odG9v71KU42k74NzbgHPlbTHb1raY'@; put '5YK22H+dmpw8NR5d9kbrRnyRxQj8843Zo94Dsar06YmJU+lmT6TekdgXTyx1ORsj3lZ6ZnE4s0D+zPRC8ZlR2DEwMkOjGMoFdHdubsSQU2Su1w24fpHRLmGg0jMz+Nx6emZYQvECePRks24UoEeVkg/uFDutTnZy5Nza6IFo9+ipbPZGODhsXTu1+cwIPTPigTMzo3pq6QOPFwhThoigICv5Zdoy'@; put 'qiI9zmIBbbfeYrfVUglu8DH3q4efVmGxZiddn0p0wnLxwaXakPMDXaPXTY5eM3ry1twu9Upm8lAF3qvekU546jo8bWOnpzOnxr545/Rl+DN70uk9HKdAFuPtwPssaHeyQotVSh1GKpLm2Sr1SKVSLoPGVsscHmhJgSXPK8tQqQNjQwVcZrX0w13JCo+bxSlF0c7ljJvyfuY05EioMr90882ZbdvG'@; put 'E/FWr6Zeb3USZSo3gL+eGu9JOxOaKm8904O3kxaAH83R+HayqlFHVEqNmvmwJf4KDA1kjoqsUs1yWVQQiXAZMI0F/ppvR5khrJO2RqVtTZc05qUNx/irA1QnnqkBm2jyeb0eyl+xvtiXHt/gSgc8jJXgYcvQiXT/1R5n4872XYcAJUeP9fcfG92Mkspc5/Bqj6+pt8GxfWp7e2zw6vHxqwdi7bty'@; put 'h0LbopFtodC2SHRbiJ/9NCCoAmjYTKNjBh5XYbQECjvzBtuKTHJARL3JbaI+CMrq4Dglf51e4nb4hl0dmYnuwGRbJmNdihN9ZE9P7lk8ODjrGXDnngW29nZrjNHEILx+kfw16Gha6gXI+/RrKfLoM7JHRVtTXcXc+cpN7nwRVIi9DQ1mU0ODyZfJkIONJvqrqXHf2jsw/vor61lpfDulOS3I5RpQ'@; put 'QUlaWTSTIDBcVexXwUbtCh5CsFfVWS1GPZtVLAkiFDsBVPkVXBXUVlV5tbamzHiisJR3f6URB5QqTwOJrH23h+tmwJpYLLUSuZMOjQLoXWCmiY6vRtZP9Uam7WGq6DBRArBt/sm+p5YyGWzfj2tzb/xy750AzjbcyM+RHs9nYFzZ96Er8X1MAZSAW/G2QgToyY3+9Kyjjrk+OB1ZKBErl9WiSlAq'@; put '9RkFjTQX2DWQOjykTVTQhKhUtuIWpgv0v1BXSh90wW7kcuuNbqPbpAFuUYReqg2/RMycOOCVPLk9nElFB7L8JWOaifTsNOv29hahXabonSinWsK9kc6+At5TnvzhZzjacxAYmfWkpNSulzFf2r+V40sJYUibL9tzy05029UXIynzJZCUch4oisuYcdjPJn+J7aL+EsuF/SVcMRi/cXLyxvFOqhd0'@; put 'cu1AUgvSpyYmTqdTXUuJ+L4EVw+QpM9tB31OX16fo3JaBWIQCL2gWFEgGXGxPqcvVdM2NjRdfLRLGOiS9Dn5OP4gfS73W3LmQDl9jupQ20GH0pfVoQo7sxUpM5kNIo2pPvpNqtHmhqaLj3YJA11Qh9JfTHZdQIdSrs3g6oISdSDXWar3zsPLYYBTFbr+GZ7EwYGkZ6JWwJLuS3USDhizTHgFxZh/'@; put 'aCrfa4sOsOmzehO3vQ3xiDlPms9cPt6zJwLs+G/6U7CJ3M9p0AajIOjnL8I6fagjGTLDQi1gbCNS8NbZNruffMjrCXD3E0/+iLM0ATnTzSr65AyCRkJl0HeOh/y7dkQGXZHgcvbwTHh/q2d6ItRXF+1KjISumKtq9iaG2rx1blO1fSgxOt9k7+lo9oAmadA7ukNjO6i+B2vcTu4GfS+cbLNgFZP5'@; put 'RLiNikayRAMpAAewJPdzTZTpcEYnVeK8NDsvppfSzUAw0XBePIG3t8YT49u2ZW6+2WnV12vMznQPTqf++I9TubP13ioNlTnAnwC5Gb8VaEKbzG+BYUoCf7N5YJU/oso8krIHC0ZB2Z5bdirwW7Pb5GZhlCLNn0pzHpjUE4Gy2S6Z6QJyvgMcFpgunsy9xJgunoT92IF4a4lSzumSvUCy7qs3MG+F'@; put 'kbut7Nv/6pHtP54AzWweP0b1EwziDgkO6F/q/9Jf2P/lnr31Y0Mfu3X28fE7PzoOIy7jB+jP2jv4vtzBgp9OhLFZDmGFqMAKKt+oFwXGFkhRgMVgMFDEc/pFt9EfsSYiohE/8bl7d37zxZ2funvn11559VWsXnv55bXc7+m4jetTxAXj6qmuWKkGvIYhAbmloSle76drtzO81iOdweSW3KoUTQax'@; put 'wHZRg8VjXkOdu86lbfyn+Wf+ctubdVOJp/XJalNdkoi5Ofz42kvJbsz3EoeXV2HOLXxk+gv7yOK4I/e3+BO5V3E0d6QX3zbemzs9zsYNrO/Ge8nzwHUBRjamAOgwnnCxDElosCgxAoxm9BaqQilCuB+DbI5RRZ3mqltriNnKg64ipU4Raxa9wVgs6F2cVvX3WrDX5/Nia2+f6vPNI7GPdbYlgp13'@; put 'xVPN6pimrq3lE6FEdU0i9PHWoE0Tg1muXD+LHtnC30a1tyv7+qQER+rf3o2X2dqbk14185PpMYK14/FCOvEyBdUMrQYgoilgBbHu54lKCcpdEo2kAQPKm10qeIcTCfX1WvmKLb39qun8To5rbMHWj4cSNdWJ0Cda2uo0MXVzKn5XZzDR1vmx2Eizen0dDeBWfDN+VC/i6vW13FtIcwbh53JvsQwZ'@; put 'KuPm1negrxK9rOuz1VGFxJaRc+KMpETXZ/o2T0wFrTDyeSmXJLjXFCN6OXdkbRT/Wraxz+K3yTSqQ06KKY0NdTarxWTUVStJFY/twawLUtkHqH91LOeSlyBwTz8tPqDHCLIerGyPxQoizYx/OBfK9h3s7j7Ylw3OOqNtA4OhaO7D2d7erKtZOZiqnj4+OHh8umqoX+lvinRocldWdkZOXWnEdxiv'@; put 'TPH8IET6QS+vR6lkEo6TJpwhkea1i3hSiQkwX5GwMBIzHWnmmSiyiBIn0npUT3MDwR6garHX7IwlWLZvsSsHjpCmKZL+tf87NDCQODg4em1td/WORH/2W99Kp32ec6k7Ro71SRHKO1Lniv3YFtSdjJsw0uC0GhaGKSc7rMIE1EbQZFcqWJkJz4+0mI0GuaREV0mLSlh5j1lOQIYfRuD4s4+/9tpr'@; put 'c/Dz+O+o5xtPpmZTJ07ACz5M3d/c/iMLeA85w3K6OpnH1U+TnAF5WRBkWSlQQOGZMlld1BlbbJR1Fv2+207z5O3Gx6R3smA3GurrDfR3/g742oai+If4RZ0LB1RIJ+AA+o7kA57D15A7L8V/THOzBnE89y1yZ+JS/cdW0f3czB/3kO8ZbuK8zb/+Kl6HM9BSWxAhpijcRMXvB6ngYiEAFgLyMSmA'@; put 'JfWql2pbNBZUM3qkp+vgYG7gmgHc0rGzu3tX51oT+fO1XTxG/FP0l3gEgNaYtBdxBULZxUxR8nW8CHqXNTZazI2N5p82WiwNDRaLZFsOrifR/9AMbnQt25vOagI8NtIsQjXlx2kurx1g4IBgV1xNM8uAS68WGOl+OswsKJmsCWDWTVu14VLahmxGj8dDpTQFHc/id+XVI5YaC8IqHvnf/q5WW1hn'@; put 'bAANx2Q01eic0VqFGPQ2eIK6qlarWa81VuqzVJjAuUfh3H/Gzr1NpOfehr4r5Z6l8T8y/uRBPcmEq9ZapSA8XEkQXStDSM6wQNrsR5KI87jtNrMxj5eomGVJWZ7UvaqSFWPgMLhT4mPNZfLlCnwtd12ZjDm2BxaDE27QuWCtNCcxhf4EPYrUZwh+8lHGcMu0OYrrt2hzQm6DRfTUFm1W822q0We2'@; put 'aLMnP9dh9Fe8Ddnc5hv5cSrRDza24flWwnlGCwY0lkzpKXukcFcjDExIDcegVqxogDeqlkA1lUJjSq4oMavWoDNAZ63EnyqBWWI5ASdGc7JAIQDrKiAn4uR+v3s3vos05Iw/5Rk5ND0rnbsV35y7lefQJFnOUxy9k6yPx/w+haiqEwArbFrA3xoML2k7IP8kx32afgIM62p4QYqrZJepJYOAmUu2'@; put 'Joi6/bBqe94ICdI+CCtuutRObugU2tBJOHWxXsnA5g407ZMcKtOPW3iVPm8rkJ4RDLt6kI9aLDOHzeRXJj4uITxZ+sBQjUJs3EybtTs+uaNcwlc4oXDhjSTbrTl0766SDDDAJZYvxXC7WcL/2xku4SKc3NzmKHp2izYn5DaA/7ds0WZPfpzD6HrepoDb61Ry3MfmauPrWf9YuXGwo6jNUeBvm9qs'@; put '/zuMs87W08bXs/5kSRsaNFaw9fBxDq8/snE9QEc0MPNtlnfRQCsRNmoYS2pMky40RSqGVgtvDdp6VjZqhm7VIG8qCr4PZiVF9LLfA4gqIoLQxy/z5LnRUTl97lv4fD6FDnencdvan/JEul+m/xNgwHKDGC/pkHjJ/SVwYvkuDE6d0tk+VsJvNrc5ihNbtDkht4GzfXWLNqv5NtXoS1u02ZOf6zB6'@; put 'ZRPfwmgOfRJ/m4AphVRPqWn+N2iQfqAOf8KasOKRO2J3fDj2YfovimfYG/sjhuR6hN+yuh43CmJRMogtWEECrQ31tiqVUqHBSJlPe6YfCUUfYWU+77lsr7Id8pnPtczVQ9MiLBlVmYiqg+cfSv4gC4+DqkoDqluPc/EhKMOpAW4T9LT5jH4jqxEqlBiI7kTBowTiHlmsmDtHEU/RwZYIeTGy/4F9'@; put 'XZcHIws7QxHgLt2Xt8Gva7/xOPAV44vAZPDu02mPI3fP+CKxnR5ZfuiAx9Wz0nF6FLgL/S339/t9+P448Jjcv2Q/OBXZ78sdiCN2/iy3huFal4SPT5fg7OY2R9G/btHmhNwG8PGJLdrsyY9zGP3FZl7DdXY2V58010sbx9mUdxVizF+pwMoVFZaijfnCYhCbWotJa9VZ9T6nTuSZIJGibDVvPltt'@; put '9pWSbLXrebraTd+Us9UoLWyHuXXkZdRCfV8VYEAwFYrmq63KuecsvIOXVDx12uh1epwBNwsP5n3QoryEWL5OLF8QRUMA21muUuwylsq8mKIpzKmEt9c12d09mSU10flQaD56pJtnM4/TLOZxZ8IRS43G19b5ufK8je8BHEdAcSAodajccwHge0/R8/NyeywuF7f/Sv55dar4+Zn8+Id3Fj0X7Pn2'@; put 'lTcjxgfgufBnoH+2oQhKoiPJlQaAnaseNBwzrlB3YVWFBpRmUaWkVRsVKlKxitRIJapVK9UaIldt2DI1lVUCleUS+UWjwSBC0WR0sLc7GAl2todhgoABqM3r8WoB5HIweUOeflGKB4+ybIwxI1rxI+d9kB/xgPPQSY/z5Mi+oxvSP0aXrZ7L+zdFoXN3TrbRpJD0EI9HD3bFhxazRVkhiY6ORCE8'@; put 'nTvSMtLsM/eF2uM89yHJch/iWJGsbw87HQqlIgqmiJg3RRRpM1bJOlkQTGkVnNbVLEZ7lWxi22icVrUMChALADAvpz3PzUKsk0qkdcuX1otqZeGNvfCpi3VLtpX0oIYQOlSmoyofI4ujuJmrZ9QZoHiPalkNpsocPlKiliWPDZRL/nAttmtLbKluzfQ1wyX5IK4Wwc1tLJ7rQGlogtPWVajMc0pb'@; put 'Xyh6fl5uj8Wjxe3P5Mc5fBl7vv4KvN3DxnmVj/9h3j4D0LMXPT9q4u3/D7z9Xzb+q3z8v+TP/5m+sfF5+8MPoXy9XIJ8B7SnINqdNOqYq7qhnt1qYTIaKvBE5sk6GuqU/fn6Ddm39qSJpr+BNFwtfgxWbWNjY7CxzefxeWlNgizkZPlm9VGlgd2FkbCKm4Mn+B8Xkycm0yeH+i5PHRxp2XeDfU/c'@; put 'PtXiOGgft820BWZjnbNtwW0RUvWF5bmbJ1LXZiben9w2OxcfaG42NDXZ2wYcaz9q35GILnSGF2KJxQ5a28bin5R3beO8a7EA93EGxzkO3xvLPafn91jR8/NyeyxeW9z+K/nn1buLn5/Jj3/4fZwHptC1pIb4mI/Qji7j93DQ5A/mhkIKESsVyoMqOXhvo6E9F0Iq5rBaLbRTKhWLQEPKZdZhZlfS'@; put 'wqxDu64OhJ3sYFRTa704mQCMxOJiNmyUrPTXadnd9+Qythdk83w8/VShek3Ix16tYMW25PU4E2hkfl+dzVoJupd6gx4HHwlFHxXrceV6le1QRo+zbanHFcf1Lq7H2crpcRccgulxTqezxdnsNfgNG/S4YjWOanEKq5ErcRaK5X4B5IjLO3nj+OxIw8KwywecaGascSGVu6nlnY44sKJ/X4z43wkn'@; put '8Cf3RiZOp0Ouac9yBBhQ2J19J459LuBB3+laSgx35/7eCfjF40wUT3dy/D3M8W7jc4q/f1r0/LzcHosHitufyY9zWMJfHgOh4+yVxvlMUbyb58INJvukgHf5XMOi2POlhJ31f3jYWVgtm0eY38cZaR+wv12oyFcTyftzjkh2WrFdxPWbO/P6zZFMcd/L8n4ejaTDlvZ9Lq8DabZzvutYnxdczB9t'@; put 'o/CrxSpBpNFTrCRCWsQqRA3Zw8yeYJceZWSN0oimrFarzWrz6PV6s1Mt1gWU3AuX8PNaPK6sdCYqieByd3T01Y/k6/JsziZ7o/7f7v/CJxq6O5vrP8tK9Bw2e6MRj7JCPSnPd54MAn0HUAJfzomunqpo9ZhqaCIJhzSCWgSyVAdA+1DJZF62jbLQxnTRcS48RJ4DtMAaRTURV+U7GGxg4qvV3Gdp'@; put 'ZaHcjXlwwdIOAE6t1AuVdjK9t1ne4wSUe+jb2toSbXGfxwj6abOzQqyXjzGeiG2ln5r18tn6itKRySA9ZYu+NCV59Qp+4L+SU5PpsVtbq8Y25SbTfGWGBZ8u5ChL/oCPMvvLJ9lf/1Fix/H8XMofxiT+8GdFfU/IfbEavbBF3/NSX4LVXOfhNY+sr1/qe0sJXdFc3B+Rc9BmnLXRCl6hGmmgzXNC'@; put 'NW0EbSTfEFDszUjO3z0GPKsOPvn7swYF0ajlsLyPik+MBCVagYPS5cuNbRkaEeKXuGjzyTqtW7ZmkoJ2YZLDmvd9Xur472VoikYGu93eam/x04wFn1sKU7lLUnzlC3PQ5iyVY0Mb0lQefTQzlPt9ca7K5NqzRfm+/6szmVz78gbumvcbRvJ+wyPoWLmzBv32zrx+e2QBlfM54gr04y36yrqxAG2+'@; put 'zusqgU/RWtJ6NJ4c0YHKoMf0jg+5AoQSn7iERFHynlORpM0wZQmI06iUw40mN63G0lMSlGtY3TKdWSXWWlTUOsNpykGJri73glzhyuinA+jL28DrUmmM9iDLg6a3xd2SNLpdICNrMFGqQGMWQdmg5RJOWi6PVKDIqRQrNBZasIb4OWfkGwtYdpdXbsoAgA+W60EzkXU+n6/NF6h1GXxet5tZTxs3'@; put 'pNqcVM0iN6KcWn06v0W1WrshwToENnBL9kHJwNXWSbs2GXEh2Rps3TYr/i7LuC7je1aX8T1vtovUkl3EanuZjG2VZOzLZfyoNF+aytg0l7Enpb65t2hdMO8LeKMlBskPCe0FK6pBISAIMakPNhG1WGulDiN6Vw6a4EwhUEkDMYJasaqR9fAaGj5QLleoiFLJw/nLPJwvcYZwuS4VWKXS846otJvp'@; put 'vc70niehjMIRDlPXd3gg3J+IaUPaUKDF7ayvMxupC7y2SjYQKA5wm8D6HpO1saPe7nO4NcY6u/E/Lilve4ev0RZttzb77UaDfdulJnGDLUuLn/SM3/C4wJH1e0tiBz+ENlWM33B798hnkJQHM4/eBJ5hpFkTatC4jDy/Rr5Wh6dXcTnt0VucrIRLFsygm8qM4U1KGyZdljMDJlebq8jDkjbF9ChY'@; put 'xTx6kcX8nSiZ7DebiEJwYn4NUeGUJVNDmydglhziaAQL3KKtLpuWbZQXZKVlxfKS9kk5ADN0aU0Wa8bLF1fICVizwzrr2zUi/p+1d6SFAp3QuP1DhTgL8FfNJj8ry+NG9xBlPt9aX5JvnclkaPIYjLcX6O4WkLsuoC9Gd/iH3GcBz/WMHrPS80+z56y+m+kZYUnP0JbQOIAENwh/BG1mpDYWdJa3'@; put 'OSu34XXi5+RxYPy7mE6Ai3QCOs4IazMjtfmTjW14fQjpBxypppnFVZUVGjBCBTWRK+Y3FZ9Xo2pzvvhcjFEkSZhFM+nP9c7PZz/ykXQamwOZAJ7J/Xg8M/5bqf6khuXEO5INlRWiikp8tVSRr5OKS83ssjosgkUkDYpr5jJTU5k5fFlr7ptY78/48XLum60FnekhBsMOCT7/WQJD7gP5nuQDobra'@; put 'o7wvnMtD7Lw6JD5JeHt4riB6uT3A6oWiuU7kY1tqdG6Luc7n/S3qE6goxhTJx5iOSHoh2SQLxhntcp/JkctQuVgYrkHnS2Lvm/w5uOZabtOAGSh8H87UgBpozkP+Zgs1yV9toaEl/HJuHTNUG4z1FhPL++UKgq0QY5dZIQ2zF9SpCFcR1l7e98X9+7+4D3DAODt5OpM+neZKwuKf7Vv+4v702j+T'@; put 'pulbM5nrUkjypwhAGcAlOlAX2pbMWrFaRV3gTJsBVq9UK1aqNESlkv0VlWKFUOSx6Ox0uRDq7OpMxKKuDld7azOM5TB4fB5vNSx6o+O7wMMLwt+xiZkjrgYIbXKFldt7/eg4S40fvc7rOjkiKQO5q4tS5PH1G2uv+nrHedL8WE/vKFULirPm8/VYkn5wkJ1rTMLdr5XgBM+Hpue6wP2d81JfwNGD'@; put 'DHdjEo6+yNvn3qL501J7+rypaK4T8lyAux8uO9cVDHcXOO7W87lYnT1bZ1xa530leM/zoek6d/B1HkNSDmOS1egP0/yKWLSpUaEU7TTrpk4HaoeW5VfUb5lfIYrMNW7JewEuJb/iop3K5ldcpNeW+RWl/aT8Cm+wmeZXGFh+BffJl0+w8F3KbQQkHFmZ0JZLtvjoZRe8o+CPdsYF9+asi8oDF761'@; put 'gJ9dcD3JctwHUS7Z1IFFVWdTo6AUN6bHKC+QHiPBxvaHHJ/tDzo+2x94fLaS4/MEmi8tPQZfNJkfv3hgqmyeTHifb+sU/+yCsiRbRulvukDSf4FWT8i0CnR+eAtaPS/TKlbH8ufN7qhwoheSOlrhjqzVIBmq6CWgUu4fDEAzy69m0V5yivo5pUQtjZowZY4QvB/EuR3LR9VGuyiQcNMl9Um2bGpO'@; put '7xkg+FBJLwW9JFsP63YiKqRoGqGRmrLsGs2yJ0XdA/R2DbxgLHMY9dX0yo3QJoin8ldwsHqKJKunCKNXkrYWrBZazUSjDpoI0eQjk8q0TAlKhfK2CkzrVzVXgzADMNP6UUFQLKl4FWlJdDFY6KPWkJsu1inZWr69FGEs6iZQWFEbMIzCrMrDCtCiLpMtQou4tPTDykgAt5XicHehHsRb79WVRhLF'@; put '8WhxkUjCovbyGCK7E4XhakLC1WtKcJXWsPya6a2LXG8lvSW6Lc+piORzKo6gz5Xq0czPf2fez39kujj34xv5nI1K9FpJPgbry+L5LKYAbW4tlxMCetmjZfsGCnEKXLMXSfe5zLP7XDyoN9llBt5UDScL/BQLaemGLPl+eBZCKBhI0MPjqXV7PPy+LJZBsclps+n6F/Kpydvmtea8Z8Ny2Qeke2DI'@; put 'E+zWF12D5MxwNljufV/xpTBSzSmsdQ5sIC96mzsIajRgPKoxFry46LZG6amy8NRUpu3mZnnvdr1UkERrebZyaDukNtTHnC/6KePDvvBYFx+GSoAKDy3YbGb1UBtd1BsLiQq2MZnjDuniuqJMkaHcWjWxucIob44yXKd35TB66OH5Q3ixBI95PRHl3bsZLoroJ0U5QyfknCF4/pGSvjwWdF6OBWFx'@; put 'Pyrquyefb3QY3VaCx+wOG4br/ZIO+FTJ+LyGh+L6EtcBr0dFfffIfcHO/tst+p6R+lJf5+eK+p7I91WjU1v0PS/Pi9XDDG9ZbTi13bXU50GrDGjdFfN5sCImsp8aFXZGVFpUU+76N5VbKKr4/tLmMm+pHmCGnL/E+2ys9D6bB8cO98xku8n5O3fsKD9Gvs6MwEkQclKqMpPGSERE92B3dqbn8Bg5'@; put 'v2PHndIY0/ggeQ6scqnKooLQOos0mFPUz1FaF1CNqrxCvspC2jSzlx6ZagybYnV1MVO4YaqFTDfCnxYL/NHE5llAn2O+HR+b54I1B5srOHaXVGtINSLTuFqwsxqRLjZqkD4HDW1ViQVgHYv54mbhkipFir/j4sa+vkAAfmrd7lr6Q6b534G+Nv6g1s1rH+YxJX096mErCNfAZrQUY9JKVuHBKrUA'@; put 'pouMGwv0kxle/eaxKKRqEek7GYqc6Df2NVn6847zx5gXyii5zNm5DZF+/EHyFdj5MJs3AbIAa5hvzoTxhBoLrE4NznKV3ey0KF/8QoQZpq1aQJQrJeRA9IsTClld+boEXN1k01uqTbWqkG7WXPQ7GTQYtTUOj/gB+Z2fxyB+jdW4iKiOrUqrBIycoFb3SaMhXxtjFd1eqdgFD/GKl5s/bjjNaG9b'@; put '7q31p9YfRzXIw0aw1ZSpuPPkxxI3fjnB49yfWltv973L/aTMZ5rnkTfIPBKlcHQLHvk9mUeiFHquiL8W+h4Fm/lifY/i0aK+e/J9D+PZEh7J+57J9z0MfI7Z3uvbabymONbz7jrXYd5dl3SYdpCxHma3T0htvv5ujsf13s1JbXg8YTU/TjU6tEU84Sv5eEL1NCqbU5pCH99CPnwvnyuQWpHuvEdv'@; put 'Eg2OXPz7IL6fC+PIuNxH6LmEPgJ5Nyf3GcdfRufIA4AznU8BukxknrQUf5GKbdMXqfDKx11Pcywyyg58Lqifp19v0VRLv96C3E6/38Ls4N9vQX10+KvoJfIgQEELUEnxOkaSytcxwjrwbWwdDajn6YYaIi+lml1+w77rhy3GuKGUTWDsb9dZT63HwG5c27gi65YLfGuLtdaXrhvfSR7U+fm62fq/'@; put 'Ces35NdPUUreCAYs/BKexA+8t9qwB8bHOzrGxjq+xN86xjn+TAJejaL9gBtgc+nc8PpNhuN6TC9JE+l3LCkOFH3H0iDKwGxv8vyuDi1W1vCvQFJjVRWuqFRVFH9tkrHaIFRWCst6jU5UFH/bUuwiHdk3J/HeIu0tSN+51F22X5lvXSrpC4pffGoqmZS/fWlqcWrH3Gwyk0yPjbQPtg90xct+E5Pp'@; put 'D/gmJsemvz1FbR3x9/wtTXii6I/cWfk7m+5/z1/eVPaLnApf6ETvXYziCuCdSqR6CrTr9sAgtgLsfA+k7r479c43dE8/q5fuvIxivdxOYO38CasYhFYPPDD67NO6b7zCZMUb0r3TYTSTnKq3EwW9vaIS028uUIAAJAphRYNJBcaVtL4lX9BUhSsrZZcNs21DbYHWFr3BCzar3uitBvu2cI+WHwxa'@; put 'ahvB2wApVNTSjED6fVFO5g7G3+bXUmc+vGJdyhLltkN1B2+bkOqYpj/kwoncGZWA53IvOj4y18euqk4eH0/Vae2O1PCRXlbEtDiWqm8ym1LZy/j3/OAWUoNPAB9UPQVKXTvjevym/xOsWJkqOqDqCMCVnXonEdbW6A8q3LvG7wxRP2MzVitJe5l7zN7jHRzvHNjyCg4pv4TZq7hdipWczeedBGis'@; put 'mT0vxJr58/P55+LNxc/PyM/R4euKnxfGT6EPFT2/M9/+yBXyvSnz5AaAAY19qJ9pcRsxwKDEHJMhUbDFfJthcgO3zYoBI9lm/10EH8lO21EEIslEu6c0t46tmfoF+F5wJbq/aC9fycOk+mD+bhP0eXZ3k4wLEb17XrquiX6+vh0+V5Z+rlybQf8P2z+c0wABAAAAAQAA35vmhl8PPPUAHwPoAAAA'@; put 'ANPBnYYAAAAA1L6m9f9R/u0EYQPFAAAACAACAAAAAAAAeNpjYGRgYD767yYDA8vE/4H/W1gSGYAiyIDREAClIAahAAAAeNp1lD9MU1EUxr9zXgeig8HBQSsaDVQtf6WBKmhtJKLSpi3PoDFaw8Bk0AgJLkYS48RAQuKiAyQdDHEzcXFwctDBRCYHnQhLbYiSyATR53cuLWJb2nz5te/d++453/3e'@; put 'lXXcBj+Spo5RjfBlHoNaQETH0O6F0aHzOIkSBmUM56l2eY4+zeGiNCAtk4jjN67IQrCmr9EnozioaXTpVZzQ+9R1xMl+vcE5ecTstxvPuRzTa88hU7KJQ94DtOovHNVXyOsix26Qk8joKPWd/z8jg1X+DnONZ7ilUQx4I8h7SkV4/ykyjjMcwzp1Cm1awog9M3QGzfoWLbqA/TqNs3IPOda8SXZJ'@; put 'CT2aDf7IJST0HE7rY/jahE6yR310yh3OfcTnZpHGMhJYDj7oEQxhBSlvGim7rg/deN/myBN6uIY2meC8LO93s7ckjmuEveXQpMoxM4jKAYyT7fKOvjZi2K15l56wRnnBWvagVd4g4eoaRwQ/MCBxdz1Gv7a8qqMQSPPPvNshrAafzD/yJ1X09uJUxbtq6WEMO5p/O2X+0We9gGvOqzryPpLWi/+/'@; put 'zDf6N0SWqBXW1L/tXbUsF8as8/efzD/z2Wj92prVtN5t/QotR9wX61fnuKfmh9W0Gy1rtt9l0qtvrPcLvYuSAXnZ+nAZZA4sh5aFbTIv0o1m89b6q6H5yt4qDDUgFgpzXebWslNDe+eYpxpOlTNWoe2PebQL7R1wObQ9NP/K74LlsZq2VzLL7JkKzPxXMkUlqPdI6j5eQ5CrPLOaNZ6W15R1wCtu'@; put 'nTfYoF4CmkTcm0CcZ8KgO1OWyCWygJs6y7OC51JoDh3SixaqTReDosuHx7nc1zpfH/5f7RzwpAAAeNpNwl9IGnEAAGAz/5Sep6Xped6dt/M8r7vTzp+/02MM2UNEiMTwoceIIRE9RA8hETFihEhERA8REj6EjBESMYaIRIyIiOFDhMQIkREyhgzpQSSkh73sYXyfRqNZ/qegORnABta0qvZE+6B9'@; put 'HnQOXg62dTadoEvq0rqSrqZH9Ev6gv6PYcawYmgbk8acMW88M9aN7aH4cHa4bEJMKdO2qWpqmaF53pwxfzbXzV2ERqaQXeTGwlnSlqrlAbWhUTSN7qMVtGU1WAlr3Dpv/WA9tMVtdyPYSGnkZTQ52rdH7Qv2L/amvevIOJpj3FjVOeM8dnZdIdeBq+xqYTYsgWWwC6zuJtySe8594u7hUXwV38QL'@; put 'eAX/5UE8K54Nz52n5ekRQwROSEScyJIpMk1myByZJ0vkBXlLPlIh6i2VotJUhspRearizXnz3pL3wnvrfaRpepXepHfoQ7pIn9Hnr94xDBNiXjNTTIqZY5aYDPOR6fm0PtSH+zgf8MV9R+x7dpldZ7PsPltge36t3+Gn/cAf9+9we9wxd8p942pck3vingPFQDlwGagHfvIy/5W/5u/4Fv/Ev4w3'@; put 'xjvjfUEWtoQDoSRUhCvhXvgt9EVEfCMuiGvilrgnHomnYlWsiT/EttiTJqUr6V56lDpSP4gEsaAQjIYcoc6EZgKZOJIn5Vl5UV6Xs/KhXJTL8mUYC9fCzXA7/AKGAA4koIIEmAWLYBV8AjegHaEi05HtyDW0QQDn4ArcgLswD0uwAr/DBuzAvoIo2H+AklQ2lT2loXSjeFSICjE6BmPTsXLsOlZX'@; put 'URVXORWocTWhzqpF9Uw9V2tq4y9MM8mgAAABAAABPABgAAoAQAAEAAIAKAA5AIsAAACDAbUAAwABeNqNks1OwlAQhc9t0YAa48K4YGG6MO6EggQiLjVsFDQSwS0IApFaLcXErU/i1vcwxp8X0I2P4DN4ejtUJY0xN+V+d86Zmd4pAJbwCBMqkQKwyydkhWWeQjawiBNhE2WcCSewhjvhGaTxIDzL'@; put '+IdwEnllCKeQVgXheRRUTXgBDXUr/IQV9Sb8DFt9Cr8gaawKv2LOWA/53UTasLEDF5e4gYcBeujDh4V7PnnYyKFIalO16Otrz4hc5+4wa8TcC2RQRZd5nq7kYqhdR4z1MOapRSVHl63XNo6xhyZqpLi8janMOI815Wnw5DE+0O9j/ej2nw4NRk/pcsnBTQ9Yo8s9yO1Qa5EPqQfaPvfOH7MI5ufz'@; put 'VEaW6/pXZVfXdaKqGWouz5OckWT1qPqMjjn5iSfLfdLT0Tf97pmNvWWTsTb/b4HDj2ZSlQlVtGpxFbVWYu8ctvi7iUL09Us4p6+rq3oy3UpUsY4rvuOAikfP8AvcvXhzAAAAeNptk1dsHFUUhr/fsXfdNk7vvVfHXvfEKS5rx7FjJy5x7MRJxrtjZ/F6F8a7cWy6BAIeQPDCM+UJEL0KJHhAolfR'@; put 'ewfReaQH79wJXiTuw3z/GZ3znzP33iELd50bYB7/s1SbfpDFDLLJwYefXPLIp4BCAsykiFnMZg5zp+rns4CFLGIxS1jKMpazgpWsYjVrWMs61rOBjWxiM1vYyja2U8wOSiglSBnlVFBJFdXUsJNd1LKbPexlH3XU00AjIZpoZj8tHKCVNg7STgeHOEwnXXTTwxF6OUof/RzjOAOc4CSnsLidq7ia'@; put 'm7mBO3if67mWp/mYO7mNu3meZ7mHQcLcSIQXsXmOF3iVl3iZV/iWId7gNV7nXob5hZt4mzd5i9N8z49cxwVEGWGUGHFuIcFFXIjDGCmSnGGc7zjLJBNczKVcwmPcyuVcxhVcyQ/8xOPK0gxlK0c++fmLvzknlKs85UsqUKECmqkizdJszeFXftNczdN8LdBCLeJ33tFiLdFSLdNyreBzvtBKrdJq'@; put 'rdFardN6bdBGbeI+7tdmbdFWbdN2FWuHSviDP/mSr1SqoMpUrgpVqkrVqtFO7VKtdmuP9mofT6hO9WpQI1/zjUK8y2d8wId8xKe8xydqUrP2q0UH1Ko2HVS7OnRIh9WpLnWrR0fUywM8yCM8ykM8zDXcpaM8w5M8pT5+Vr+O6bgGdEIndUqWBhVWRLaG/HWjVthJxP2Woa9u0LHP2D7Lhb8uMZyI'@; put '2yN+y9DXGLbSSRGDxqkKK+kPeRa2YX4okkha4bAdT+bb/0p/yLOyPauQ8bBdFDaHE6OjlkktHM4I/C2ee9Rji+cTNSxszawcyQh8bVY4lbR9MYM20y9m0G5exl0Utmd6xDM92k163IW/w5shYRjoOJ2KD1tOajRmpZKBRGbk6zQdHNOhM7ODk9mh03RwDLpM1ZgLfyoeLSmtDHos83WbpKSZpseb'@; put 'JmWY0+NE48M5qfQz0POfyVKZkb/H28GUYUFvOOqEU6NDMftswXiG7svQE9Pa129mnHSR3z992pPTp52eOFhW5bIsWOnrHXasqWs1btBrHMZd5PVGorZjj0XH8sbPq3Rdaai+2mONxwaPjb4+YzThIv02WFIS9FjmsdxjhcdKw2BTdijlJNygoqkhxyq2Ysl8y53FSPfup2WRNf3Z6ThgnR/QJLrd'@; put '07LA+32MNvua1nlW+jRMcjIai7jJudbY1B5FbCcvYnvqH7dltyEAAAB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdidNkkyMmiBGJt5OBg5ICwxNjCLw2kXswMDIwMnkM3ptIsBymZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5uNg5NHawfi/dQNL70YmBpfNrClsDC4u'@; put 'AP4cJWAAAAAAAViY9nYAAA=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=Metropolis-500.4efd580a43b4e116.woff; filename filecode temp lrecl=32767; data _null_; file filecode; put 'd09GRgABAAAAAFXwABMAAAAAoOAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcfKTbLEdERUYAAAHEAAAATQAAAGIH1Qf8R1BPUwAAAhQAAAcfAAAOdj+hfXRHU1VCAAAJNAAAACAAAAAgRHZMdU9TLzIAAAlUAAAATgAAAGBoqa3+Y21hcAAACaQAAAJsAAADnndDD7Fj'@; put 'dnQgAAAMEAAAADAAAAA8Ed8By2ZwZ20AAAxAAAAGOgAADRZ2ZH12Z2FzcAAAEnwAAAAIAAAACAAAABBnbHlmAAAShAAAODkAAG08sNGyNWhlYWQAAErAAAAANgAAADYLa4YHaGhlYQAASvgAAAAhAAAAJAeEBCBobXR4AABLHAAAAosAAATasng5PmxvY2EAAE2oAAACbwAAAnpyVVfabWF4cAAA'@; put 'UBgAAAAgAAAAIAKRAh5uYW1lAABQOAAAAYUAAANkL+aGSnBvc3QAAFHAAAADoQAABiGXFj2KcHJlcAAAVWQAAACBAAAAjRlQAhB3ZWJmAABV6AAAAAYAAAAG9G1YmAAAAAEAAAAA1CSYugAAAADTwZ2GAAAAANS+pOt42g2MQQqEQBDEEkf0MLPof7ypL/DofXfV/z/AIgRC0TQCLR6cdFRkjVso'@; put '7HzTv1D4B7m4048DOlopNlv645SeXXLT51sXzSa+W3AF3AAAAHjajVcLbFVVFl37fO5r3wMspXyEUgkhUAhWhjCiCKNxmlpIRxmsBA0YNY4fkM9UZKbGyGcUzUjqxJGKZELQMtpgBUTFqkheCP6IIfgJEiwEK2L9ASoaI8p13X0fcEv7ZuxKV3f3Offcs/de5+3zIADSGIopkMqqmloUwNGDMITl'@; put 'H4GBnfOXunkomXtj3RyUzp0zdw5ng/5oNJ4RseVzafRDGYarx2IYamxLPBos0FUlaEDAh6TnQj4xUH0eJachqAobyB4TsQK/IJSBMNwG58kAaUMGPbizI2E2bA73hvuR5yf8Ju/I7m69n2BAp/8/C/+dd4WOvCNteUf2htk8I83hwXBrhLOf4O/OCF12ivDzsIFZMhjCTA9ntkYQBhWExQWEw1jC'@; put '4/dEgPFEChcTBZhAFDK3E1mpRYRgKe7nzAcIz4yvoP9FQvASIXiZMHiXcHifcNhPeHxCBPiUCPAZEeAokcI3RAoniEJW7xeuFhJpKZIiFEqxFJNLpIQ8kJVNc+0xVMkwPjOKEN13vGOjO7a6Y6c79qgkClBFFKKaSGMakcF83MUVokgCjSTQSDwexkrObyQK8RhWc/4T+C/nP01ksJFIYRNRgOeI'@; put 'FDYTBXieSOEFogBbiEK0EoXYRqSRJdLYTqSxg0jjdULwJiGanQAHiAw+JuK8GM2L0bw4zYvXvHjNi9O8OM2Lk/7Sn/k6V84lRznyXLWCGRrOGlewtmNZ0/HMzARmZD4W4K+ow51YyFouxTL8A/cxCw8w+o2M6HlW8iVW8F1Wbj8r9ikrdZQ7OaEnq4jvLYnOl7lXz+EbUse4e1JfW6m7hvD7btSq'@; put 'I9H5yDvyJXGsmyeP5T0bX+b+7gu/Dg+ED4UPnT2SO5FNYdPp/75IjHyuzxiUqiZENWFwDWFxLeFwHeExkwioiJWcE6lBVA1G1WDQQgTYQARaadFKi1ZatNKidTU4RFgcJiw6CIufCY+TRCC9pTfr2kf6kPtKX3JUUdGKigySQVzfYDTOITLoTfRQpYsq3ajSbU7pVxBJpTuNJ0jEk1Kl25zSz2jc'@; put 'aVROo0ppVKeUHms8VvcrRH5dR9E61azJRRgp12qcKdWvVf2aXMyRik0u8kjLJhF/UtFWs5CSMXIx3x59elUxwmms17WMayYjaWQkq/A4o3kCT6IJ6xjR04xkA09jK3eb5S53cHeHWIMO7uwkd9CHb+vPtwziimWqZ4Ne2lGKw6W0i9nfLqUlal/KTtQWlJHbmf/tslxWyCOyStbIOlkvm2SLbJXt'@; put '8pbskg9knxyUw/KVfCs/yknjTNoUmX6m1Aw15abCjDMTzGWmytSYaWaGud7cbGabBWaRuccsMw+aBvOoWW3WmqdMi9lsWs02s8PsNLvNHtNm2k2HOWKOm58sbGB72GI7wJbZYXaUHWMvtBPt5bbaXmlr7XX2BnuLvcPW2b/be+199p/2X7bR/sc+aZvtBvuCfcVm7Rv2Hfue3WsP2EP2C3vM/mB/'@; put 'dsYVuF6uxA10Q9xwN9qNdRe5P7hKN8VNddPdTHeTu83Ncwvd3W6JW+5WuEfcKrfGrXPr3Sa3xW11291bbpf7wO1zB91h95X71v3oTnrn077I9/Olfqgv9xV+nJ/gL/NVvsZP8zP89f5mP9sv8Iv8PX6Zf9A3+Ef9ar/WP+Vb/Gbf6rf5HX6n3+33+Dbf7jv8EX/c/xQgCIIePB31ZiN5iXKlcrVy'@; put 'Y8RYrNysnmXKKxM8VblCeZLy3yI2g9WuVa5SHmH4mSrlyhXKkyNGvfKz5tVTtlyiPEn97con1DNKuUl5pHJG+c92NvkZ5frumVU/E2O1+rswpitvVl58hmVWHLva85TfVF7ZleMMqN2Va5VHmOz/Y2o3matsd4ypyi3K9WeY2ctq9v43x/nMdssjE1yf2HMnO1HTJeovV3/SrtQcPqb2rETm4yg6'@; put '2TkV+bP8jWpPjm2dE2smrk4cdazPnJ3zR3Oa1X7WLjql3pzGPlT7/cjO1TTOWKztWHtJf1zZOG/vqb1Ya/SR6vxrnT9V39Wuc/RExLrt5K9Q+0SughtPqzrpj0/QpIRm4ook7efUvjX263w9F2aw+pvUHyttZMKuUs6oJ599XO27Nbqr1N6jdnLl6nAL+XzlZKWSb5ycO93Z38CdZxqcp/dS8N5V'@; put 'zqxEt1PHrj2aXTC6YQf4HW9iKYzDRexhUefuxb49iT096ty99Y5arJ27D/vOFPahGqIvrmKf68dON53ffWYQpdrLB7PrzWLXms+72xC9vY1nR1/D9day8/1Je9/V7H6vskO+hl24lTe6o6jXW+UqfCcej7MTD0KL9tRW7lfkHP1uFkDCWIVLcAt5Obtdht91yhjbKN69L+SuL+cur0QtR99W7e5V'@; put 'PqisZwa7E6yVwF3K65U/1qz1VTuDP/I9t+F2SUmBFEpaMtJTenXd0a99l590AAABAAAACgAcAB4AAURGTFQACAAEAAAAAP//AAAAAAAAeNpjYGZyZ/zCwMrAwtTFFMHAwOANoRnjGEQYzYB8BjYGOGBnQAKh3uF+DA4MCqp/mKX/GzMwMJ9k1FFgYJgMkmNiZVoPpBQYmADwbQq1AAB42rWTWVCO'@; put 'URzGf/+3fREqFPX29mnTRqIURfalyL6UrNmyr9ka6xBDRVLIniSjGRNTU7Yb7rg1Y4y+z5Vb7gwdx1dMM8y4cmbec95zzpznnHme3x9woesLQXSPVOqZOOeuUqzHJYzDjYGUcIs67tJIE8200CYeEiCDJEwGS5wkSaqkS6ZMlRzJk0IpkhIj1XhlvHeJMo+breYT84vlbgVawVaoZbOirGFWunXf'@; put '5h/5TSl9h8WNHtqPaeOZ+Ep/McUmsZIoKZImGZIl2ZIrBbJBNmvtl8ZbrX3IbDHbzc+WYQVYQVaIU3uolfZLW31UL9Rz9VS1q1b1SDWrh6pJNaoGVa/q1DVVq2pUtapSlapClakzqlSd6HzTmdWZ9P2To9xR4Mh3xNgH2v3sPnYvu5vd6Pja8bnj8IeQd8ldXv2n5m54O5Pgj1sEo/vP+IdG10kX'@; put 'XHV27njgiRfe+OBLL/zoTR/64k8AgfSjPwMIIlhnPEinHopJmE4kHBuDiSCSKKKJYQixxBFPAokMZRhJDCeZEYwkhVRGkUY6oxlDBpmM1cxkMZ4JTGQSk5nCVKYxnRlkk8NMZpHLbOYwl3nMZwELWcRiTVoe+SylgGUsZ4V+/w52sptiDnGc05RTRgXnOUclVVRzkRoucYXL1HKV69zUFP1k9DYN'@; put 'mqV7mqafbRWrtR3RbOBstzfrWaP7XZz47VbhXxy8QD2bWdljZS2bJEaPW9jOMew4JFzzGSlRugIiuKN3HqBplgRdD/HdZ4qcYcSyjb1sZR97OMBBXUv7OcJRvXWYUk5xkte6mnqxTrzEW3zYKH6af88fkM2q6HjaY2DAApKBMIwhjGk9AwPTbiZWBob/IczS/42Zdv//wnSJSfD/l/9+ID4A2s8N'@; put 'snjarVZpd9NGFJW8ZSMbWWhRS8dMnKbRyKQUggEDQYrtQro4WytBaaU4SfcFutF9X/CveXLac+g3flrvG9kmgYSe9tQf9O7MuzNvm3ljMpQgY92vBEIs3TWGlpcot3rNp1MWzQThtmiu+5QqRH/1Gr1GoyE3rHyejIAMTy62DNPwQtchU5EItx1KKbEp6F6dMtPXWjNmv1dpVChX8fOULgQr1/28'@; put 'zFtNX1C9jqmFwBJUYlQKAhEn7GiTZjDVHgmaY/0cM+/VfQFvmpGg/rofYkawrp/RPKP50AqDILDItINAklH3t4LAobQS2CdTiOBZ1qv7lJUu5aSLOAIyQ4cySsIvsRlnN1zBGvbYSjzgL0iVBqVn81B6oimaMBDPZQsIctkP61a0EvgyyAeCFlZ96CwOrW3foayiHs9uGakkUzkMpSuRcelGlNrY'@; put 'JrMBA5SddahHCXZ1wGvczRgbgneghTBgSrioXe1VrZ4Bw6u4s/lu7vvU3lr0J7uYNlzwEHcoKk0ZcV10vgyLc0rCgpMdL1EdGS0mJgYOWE5TWGVY90PbveiQ0gG1BvrTKLYl88Fs3qFBFadSFdqMFh0aUiAKQYe8q7wcQLoBDfJoBaNBjBwaxjYjOiUCGWjALg15oWiGgoaQNIdG1NKaH2c2F4Mp'@; put 'GtyStx0aVUvL/tJqMmnlMT+m5w+r2Bj21v14eBgFjFwatvnM4iS78SH+DOJD5iQqkS7U/ZiTh2jdJurLZmfzEss62Er0vARXgWcCRFKD/zXM7i3VAQWMDWNMIlseGRdbpmnqWo0pIzZSlTWfhqUrKjSAw9cPw6ErQpj/c3TUNIYM122G8eGcTXds6zjSNI7YxmyHJlRsspxEnlkeUXGa5WMqzrB8'@; put 'XMVZlkdVnGNpqbiH5RMq7mX5pIr7WD6jZCfvlAuRYSmKZN7gC+LQ7C7lZFd5M1Hau5TTXeWtRHlMGTRo/4f4nkJ8x+CXQHws84iP5XHEx1IiPpZTiI9lAfGxnEZ8LJ9GfCxnEB9LpURZH1NHwexoKDx2wdOlxNVTfFaLihybHNzCE7gANXFAFWVUktwRH8mwOPq5bmnNSToxG2fNiYqPRsYBPrs7'@; put 'Mw+rTypxWvv7HHhm5WEjuJ37Gud5Y/IPg3+LF2UpPmlOcHCnkAB4vL/DuBVRyaHTqnik7ND8P1Fxghugn0FNjMmCKIoa33zk8kqzWZM1tAofTwQ6K9rBvGlOjCOlJbSoSRoBLYOuWdA06vPsrWZRClFuYr+zeymimOxFGcyAKSjkprGw7O+kRFpYO6np9NHA5Ubai54sNVtWcYW9B+9jyM0seTdS'@; put 'XrgpKe1Fm1CnvMgCDrmRPbgmglto77KKYkpYqCI+CG0F++1jRCYtM4MugSJkcbKyD+2KHTmignYC33rSKu/bQu3PdfIgMJudbudBlpGi810V9Wp9VdbYKFev3E0fB9POsLHmF0UZTy57354U7FenBLkCRld2v+5J8fY71u1KST7bF3Z54nVKFfJfgAdD7pT3IhpFkbNYpRHPr1t4MkU5KMZFcxwX'@; put '9NIe7YpV36Nd2Hfto1ZcVlSyH2XQVXTWbsI3Pl8I6kAqClqkIlZ4OmQ+m52a8LGUuCxF3LNk10X0HTwhHeK/OMS1/+vcchTcosoSXWjXCckHbR8r6K0lu5OHKkZn7bxsZ6IdSTfoGoKeSC44/l7gLo8V6RTu8/MHzF/Bdub4GJ0GvqroDMQS562CBIsq3tJOpl5QfIRpCfBF1UKzAngJwGTwsmqZ'@; put 'eqYOoGeWmVMBWGEOg1XmMFhjDoN1tYOudxnoFSBTo1fVjpnM+UDJXMA8k9E15ml0nXkavcY8jW6wTQ/gdbbJ4A22ySBkmwwi5lQBNpjDoMEcBpvMYbCl/XKBtrVfjN7UfjF6S/vF6G3tF6N3tF+M3tV+MXpP+8XofeT4XLeAH+gRXQT8MIGXAD/ipOvRAkY38Yy2ObcSyJyPNcdscz7B4vPdXT/V'@; put 'I73iswTyis8TyPTb2KdN+CKBTPgygUz4Ctxyd7+v9UjTv0kg079NINO/w8o24fsEMuGHBDLhR3AvdPf7SY80/ecEMv2XBDL9V6xsE35LIBN+TyAT7qidvkyq82fVtal3i9JT9dudd9j5G2UzuiwAAAABAAH//wAPeNq1fQl4ZFWZ6DnnVtWtLanUnqSy1Z6lktpSqeyp7Etl6XRn7e4kvSXppqFp'@; put '6IVFQBAbBkVRnHEbxUEQB1kaBFqUZRxGBZ49LiMOOo7om3FGHbfnG0Z0JDfvP+fcW3WzNTjf96CTVO79z/affz//f4KMaGE9iT8ueJCALMiJSpAf1aAUakEdaAiVZFw9ne2t6aZkbThQWVrsshYZNAQZY3Var9UrOpNOvzOZ8qeSKZH9FOGj8pQ+oz/pG3iSUj7LMKxBOpnCH5f+Dnf83+6eB3p6'@; put 'Hnigx+f19vT0HOnxnnvgiM97xPvAAw94jxw5NzDwwMpA1d8LP+v1Br3w75ajvoGBwEH4NOBt7/Edub7ZHd111VWPXHXVruiqN+qFfwgRNLr+OvoWOc/WFsz4EMZoASFUmEWECEsaLAhuYVSj0Vg0hUFrkVZ019mTgt8VSjU2JRMup0PnnzlT0qcNh8s8oZCHnJd8P6wuKw2HS8uqEVpfR334XnwD'@; put 'ebDIh4wIFQnw/SVExw3AtxthXA+qRMOZAYuOIK1AMEF42YQNhsJsYVGBIIr6BbOR6PXWrAYTYiGjCFVWlJdBK09pSbEbxrdbc/+J5XVYTIp+0Z9mX+kk+0qK7EukL/GbsSvtJyK7Iu+NTEQutx+PXWG/Aj69F56csP3Ne2PvxReezz4C/2Wfzz4K/2WfR4CZ0PoF0kbeQBUoiCKoPlMbqfN5PaXF'@; put 'bqfNZNSLhYhoAW1kBJaFCT4I63Oj0UqrVQBsBXSwx6lQOO1ypxpwqrETp2GvXW4xFHZWYCeCx4XYaWtKNcID0nbmsql3HejI7j1yJLmvderKxdb+8RNXSZdHE3VNv860ZK44KWZ6ivZlh2w/Kp3elZxpFjs6zbtHO63/6Jmbwu4a6wuGFr8031Zd3WD9JsxDiyLrvyNr5CnYXTtgOora0P/KPla8'@; put 'ay5TZ8JaI8Y6LV5FOqQ36PRHkUaDlgimu18AeyAsmUUiCBZh1JN9LAxNopdsggCUtROXzFgU3eKoJ5PcpgUhAEuboe1bzc9nQrFYVZXDgVCsLdba1FgVrWqoDjkqHRWlxXabtQgWUxgqFJ11No7RZAIw6SjEfpzEfoZKv0/ndLiSaNP7Tpx/96mRmtqRWAy+Z6P4vbuk8MTpRDIUjidDeO9ILTzk'@; put 'r6rj9GEijPc1jEfjuxoaJmLxiXo8tTaJ/7IjGu3siDV0SvvqJ+JR+g4g6rvp486GaCeitBNcf53cQL6AvKgeNaHOTFs8Gq6qKPeUmIhRIF6MBDJCaRsvAeu5slpgOIYZoKCGBp+voakh5av3RSJ+neiq04bCOr+PLqoprV4avHM3pd060Y3o2tx8nbY0gNOlkqAvse9013JLdqK8NLqnMTZRPzE9'@; put '1FdXORGNnZT+Mllc2tNU73cMXNGxOpo2+hrnYnPtvQf8Nf2hhmwkkq1vHw3sGeiaDCz3nSIj0XBp2lsaDwcSa691Xz2cmmzKIIQpn6MnyYPIjOyZIipF2PbiUWeAwMRteXkh+qetXrfba7XE8H8se90+n9u7PIxoH63rM7iPPIsKkO6JAi2O1TExk3YDg8CixAevvHK1cWrX5J7G2R/d8q7X9jRN'@; put 'P3Xq1FNTada2Fto2Km1FaMuREE5z/NTumYR2q9DDqemnrj715EzTntfedcuP9rC2KXwCHyDPo4OoOZPaOzHUVF3h1ulhESMCxhqMtBit6rBWS5aAeF1aEEIAemDP7s72WIPPWydSSoSZppvSOhH+9/vC/Dfg9QYcDvHfkgm3C/5nv3FUACxANPFX7NdCDBtZgflvtJswtHe5mZh93mrUEbuj2qrT'@; put 'WQ0ac3GDwW02uw0NxWaNsUijt1Y77ERntJoLKJzRZgg5GWABA7SWaqKOAgboDBlsRgpZgE9YTKUJn7nA7jMKFtFgEQstGr1Wq9dYCvUWvVikMfrsBWZfotRk4ZBikegzAyi8ZaCiAVvNHNTsg5ccluG0Gy0TB2lGJhTK+JFGwJppoG2QFFhAy8D+eAEBaseY4C7SiaV12E81YIpqwiRxPLv/mWf2'@; put 'P4u9zz47//zztL+B9WvQt9F1qBC5M8DKaFChMWCUgI3SGHCAT0Vmu2oLPKFwmTccjh2LxEE9hVO1/uE07asR/QS3407gzuKME9GOpumcYUYIZlREO7N7nd5GrJd+jzv3svX0gp58EcY3UY1Pn4DUw9iNKTGYkDEgABGoteJlskY057QhXv/V+gV8gfwUxrVmCmmnt8LYp/mAVHThkcul+y4nP32T'@; put 'im5QJk0gO24hz4C4q0SRTA0QH1sxlxIYlDObQFERKNbKoopiF5OLoG/qNJvlHkk1NmC/jzJSBYwk3pbN3jY9fS6bPTednonFZtLp2Xh8Nm3e9+nV1Xv37bt3dfXT+xZ6rx0dvaa395rR0Wt7GQ5g3bgcdLYOeTLFsJUC4GuES3GMLXjUameoE8PppNX/hWtqn9q9QtKjw+9Ym0SsfRQWVQzrKUa1'@; put 'mbDJCMsBaiBkhKGTiT9qdCwgpnOs7kBIIxbXdWFFaovhJlncWTBsT/TNvrbRpqaZUN+Bj2eOdYzM3YuHJfeeb7UsRpu6GxPt5xqXOvqvHfqzRTa2H3BZAWPXoK5Me0kxjOPDmMDoMAWmuBHByzCyZgmIEyYCunOJ8rybsXsNqg4EvIGgKJbALlOhkkxQPQOWmjvRtHl6ooz2fzhX2x041Nqza2o8'@; put 'm+2d3NWenAp1LXy4/3j7SGvHTOdVw+ZMqrcukWlMpfFe3JyMdUbrO6+LTTe177YV7ult3ZfkdOCHb1nAuxGkG1gfZjAy8IhOC2vACGzNFUAdU6kWzajJZCowFQBP2YroXIPeME5aqbXpT1kFfKv0kAmPXXv48PJv75nEX5aG5u95A/dLz8Dq44CfGhijDLVnWmwg9grMBGvAnhlB8B1pQIELAlng'@; put '2nsjcsAc81ntAT9DDhg6SRkjYphykdiUI8O/ONI1t9KzZ0/vZM+gEX9W+qKuZ6zzaEf3qRHz5UP7xtvahhNVeHXxYiR5qKfvWEuOB7pg3zyoGvWD7QNrtwLRBIuJViOM6ECaaLSCZhXlNKgI81IEQ1kZzK66LOz3QvvSQDCkB4sMybOhwoLyiFvkrAHCOGnL0Rplk48e68xcPXjH7dlze66cbwz0'@; put 'RxqnErjqUIu7NzjT3TJVWDjejT/feLCn+7L25z6x+tkDE+Neb/912bqY9NHqbn/HSEdibJbSHggd4mZ8U5kpA32CGddQeYOZnQ12LVg11FrE3pTXCYLgr6SP4B9LPzpNJhdH1z5J7Ygo4CHF8BAG36Mv0+3QEZCqI6IKA7J00AMGMOwPkw7V1RQJ1anqxmh9Wbgs5KuiqIgYqLjazpCQkaOyotz0'@; put 'M+ihQkJtiZ+f7Zvsbu/rvbKr+8qewZbuXf1nh1Jzk+3tu2ZTvXtjwwH/cHxvrzk229qxz1W8q7l5KlI/lW7d5XLva2+di+KPtsfqO9ob4m2C9JWuhK+pAuOKJl+ii+51GtaYye91RRHssQG4VE+1BqxUCzyqJatA6QIsTxBcWZUSUPaaLzAYCLK9dvGt5hwL2pb+Ii/YRpfOZaIrib+4ZZczbPe7'@; put '2DbX0x0nz2zcZb7z0kfoNrP9pmtgeoLoQCe4qcymMprN0ModKi13qMxmhMxus8tWxJSHTrYgFOVBtlEkZfJPfIuiUaRTyifws5h+JDrws0D/WkVkBen8PmR4HOOn8fseS9ZxOpwhhMwDHeqe0BGwkeypoLMAO9P469L78CkcH/vBzEMPzTK+60ZPEAf+BVCeiHyZSkqv1DdD4BCQaVlME4Hq7yIq'@; put 'pSmn0/+78Xekevb1i/nb5mHMERjTqYwpwJjpepzSOrUj+BSM+XUp9chDD838YOwHdEz3+uv4O7D/TrCW05lGu0FPxRum4lmAgW9S6QkqqLVYo3FrRl0ul9dVFSz2B3V0IjIH56QxMLZzg7/6xO6jfc0zA52Lt3cdaorPpQ84FMzequuO1HVNdV4Vn2mMTLaaT/wg78rS+UXW7xT6yX2Amwn0o4y5'@; put 'ykaMhs4OIoKQzD7mBwcpBYaOQdAYbjJjoxYbZ5EWJLWoxUeRaMJ6UX8Y6XSK30P9K1iG1UC9qxponFQaw2INRsGw+pad6MDDasm1QkgnIN3qzq31enEWgUu9xLqZAD+rpKcHoZ6JnvHhQVhUJhQK20OBUKhALNtiQvhCYRXvJFzutFvkEiFBMa6yLhLMYvcrolTmr97HVq/+8snlR5bTM9Foh7Fi'@; put 'VzQ2WtdzWWu8z26eLtK4Dd7y8rR/3yf2Lz+6snDPYsdyyt5ystfeF0zEagdrm6OnVx5evvLLVx24b3HiynQkHKqP7GrsPdVX5+/STbjPtJgqqmqmu6Y/OLP66PL+T+wvryoLeLExticRbYxO1Mfb2f6VwrfvgRwWQZPWZaoNWEPwCFARkJUGtChVbWDwU0tGr9cb9UZumhaDFhWZaxk2YRKRPt5+'@; put 'Eofpv8N3wn/k/NrkT/GA9CXA+6wc0yhCJciHOjKtIIlhBB1wjlZDtNS8kIMrIuYWMB3LU2qzeitLfR5fsctaYiuJVOmZAbpRIHsx06p12GlXPszigZb5RDze0d10oEN6BNc39vQ0vvRq6/Bw66vkfGQ83jjsqdjb0jQdwx9M19U1f1V6qSuR6PoXZg/FQNbeDbxWjhoydaUlJqOGGhWKPHVtCP/A'@; put 'g3JUFgqGaPhHkycBceuu46b7Dx26f2no1sRgYLGx90x//5nexsXAYOLWIfPB+5eW7jvYkuwLR4auHRi4bigS7ku2wL5QvH2Z2TdO5i3k0MQcYxlNZpPDZnKanaEqLUWPQph1OC0TYB22zv7qxCMHDz5y4lf/OXF9f/87xt9Pzs994vDhT87tz5waHr46IxnY2sGAIX0wnglFMxFFslF7RrMAuqVQ'@; put 'bYUy697Ew0tg3tidspyzep2P48ulP8cfkkT8BzL5lcVvL5Lzi2hD/wZUkwkp/VNpxXpVVD68MCAD7ZnJLdarX+l3hXb60qL0Xd4p36/7Yb+8KJVJgMuAhEpCNFpmPGs1iBEX90+pJcjEJGh/O2yan7tXXutG/t20eSk//jNcFvuL4aXPHDr0maWRP48N+k809dEN7Ivs8z+Nr5Z+HW/jW9ia6AvV'@; put '8y2s8Hwgv+Y7GU7DmYBsMi6DjUrXS+NDFrQZl5iuFr6S8J3cuSzdsbyMr6HshKPSt8l56TXsg15oq8dZfJLGFVS+BnfTwNEYXV6mrQDWCfrjG4z/gIqYac8omhmsZEkAYnIztBchiz2ogeZ5Ux5mQbnsseu9g/Zddc2Dyy3L3eZMor86uacbtFS87/J2vs4Z6OpDbJ1VmXKDXkuYhsIsAibwGKXd'@; put 'ZuM6MWnFSQP2g2von1nGfbdI/47r3/lfR2C60sfxivR16TbcePxl3i8IYvCXzyMttRHZpGlviG4+R50Waa1WOukg0EnSShxSw8oi0NzaedYeeAgIIDcvcZt5OazKvDzgFPitJtiB2eXf/naZfsGcuvDfAvJ/Tn9KbrlP8jCj44qMRyRkS4+2XI8YpuRn/eH3Li9LZ+iWvEEMa5Pw9QaVvZR+f///'@; put 'w5flAgeo8uB9S72n+/tP93KpI4sbeLp0/8GFoesGBq4d4jTLdAGl1+OwNjPIHPBGYRbApgKmoYl8AByWWFjgsBU4C53WUJWOBr+9Obnj9Csi2ZrF3iEY9/TQs8vYnt23L/soOd+ymsmstvwGjw20tw9Ib6px4KA2fCZBA9hEK1BHRqBhwLwPo1FFAZ1OZ9gZqg+FqfBFMAdxgyKmMeR0OO1u2oAV'@; put '8vuQf7h1LHpV+5KCHulXPYdal+tz+MEVVzR09fWGanJ4kv6QmO6b659QISqPp0KYC+hMQgNiiku4jLRaWaTJLA5OstVqp/KGztQfBr/TyjCmTcq4IscPTpw//df3LDOUSf2PMnThW045//Cb3zCsvYsijNF0aP2/SBt5FrwB0FEuJ/VHCVahiQZYVTqqGoWDET9FU94LDTeQbQSeW6alj53qWL6x'@; put 'b3RiYfxwc8cVfaPXp1ojy43Bdl9osOvUmdarJkwnsgc6Ig1xp61htK1lfyoRHa2OlMc8ldUei2dupm1/is6zBnA0yewKHhfJuXY8kCGbyNgPvp0fuMT4v0n1vyyDa7co8+4uoIt7oD3YvZkKOZiOsXppTuRwBByK+qXCivszitzCvtuzy/H55ua5+MrobdPmsTtm8ful0x0HmsA0wHdKV8/eMcbl'@; put 'jGID6ehYWuaLgqSUhSSXNGCqc0ljoBF1Dybfk75/Ev7R/QGGPr/2HVLP+gKvQFPCeAj6MlJZDwKCnuEw1c0WDxLCVqSlmpMKHfgn+E3YX3nywYdPPvzgyX9ZfuoLVFK8Tszsa5L4136IlL7Jp5g8A3lo0EHXhIZjqY2GOa3ZbDYrxSvMEro0sN7xJ7Dwjq997TosSGvXf+3F6/Cc9NdYlP6AZ+HT'@; put 'H7DI+y6Avj8GfetReaZUR3kvJ9hkb9zGzm7kPmHLqqRfXf/33zoj/eYoLsCflp7HPdKi9J+0ryboa7ei6yk+8yGtnH+fC2nZrGzGae7mg8Jvwu+T3kGKpFP4g2v/NkHI4sSaxPX9+Pq7cT/57tv0vpJAWPA1/sZnPvMG+e7AWhswEF7//foF/Lc7xBsFsGf1l+MFHm7EKArjhXPjKfEwaorR2Cgd'@; put 'D+XHc4OwT8FX9IEHfv/7JvLVgTfP0+4T+JP4C5y2Htcd6cu4QKqzCCGMTKOlp+Uox+M61GdP2v1h0f/t4U+OnzkzBtrn19/8Jp2ztH4l2b3+NAxXxfrYIT5LuxABgYRMrT08NMz3tYtksJu8Am3drK0ZWlJpf9oGPiAfNe32dx24doh82fHn3KerB5vhD8QKfBFCN2YcxVjQuEERWMFyryjXCjqt'@; put 'Bnw7B7hnVQCs1RHtKvM9qQFfktVj6orJ9OgBu2crCOUqBqeYZPMZp8eDkCfkCXorYdiSQNBvNwBSkcsJWFUHpnKOrA3sM+XcCt9+9cGypfjU8fRSy8juzsHOqcDR/bZ5c/doaqQ7QaxnD0kvDoYje7OJibqyopaxuuFGKZ6s73c01dTE+ZrHQN5Mgx6ygZfy7AWLETQQlldZDsRVlM1FWErkcBpd'@; put 'Iugi8FS9AOTdDERNsg2BN9ml9SqHfTsDAozqtWLub4CZB0/VYbcjZPfZvZ4SmDbomE2hvDBlAKsSwVPbB5+7orPzit62pYpDhyoX29wjNTUj0YbhmprhBmIFF2H8hv5UfC95RvptLCW1RKdTqalodCqVmo5ymooAfUhAH+WoMRM3Ah5KTDDJUmByIectlezsLbku6S29ftNI9sbhpkOhXnd3oGEi'@; put 'Gp2IBnqKe8OHm80jNw4N3TBSG+osrUhMxxPTiUpPRzjC94/aEc25/bMK6v2jiGR7w5wB9f5Z8vu3GYgRqcjChpxIlf2jgIWXBGT7J7+l0Mx42gizdf9sIb+V7h+WCT6PJCvZtH+k+VDFUlsv38TFyqvZzkXZLpJn1vr3xlP9N4yPv6M/FcOWtbs27x+N2bxOwrB/LtiUTKaD0I1jh65gwxBBQ5Zz'@; put 'M5XnLxOdGyxgd7m7rLQEmjrBj6LzDfBtUxtfXjpHneiFKeOFaXen75rmoeuH+s8Ojp9sk44Z53u65s24yTCaGa0qzgQiAzeMj75jIPue/T278RXZrq4spTEvfFsk34Jh92aMRVintWKkozElulllSKfTLoGlVcyCE2hBg+VoIigqT6YUHAMdSJ3VrS/nM8agn52viaKH6wg/lds8FMbpUef81vXX'@; put 'HxwfH20va3IG9OVFrkqinZIm8ONTnZ0TDmuP3uT3UDxG16dII+CxEtWhazOWiiKi0+Zjs7KIBDkHakNHVqlhuCRqiMzzDKl2JiJzIFQ8wkwpINoEBiKyqgqhqrqq2lAARqwMBYMBKiKxVeZ27rV14I3EkyKqs3/S2HvNaNepULhsNrpnqXKxtfd4R8fx3talCqDH/v65uX6ilRI9q62hyhFPxWhv'@; put 'tj7edXJw8GRnMrJHumbvwMD8/MAAP/ujhrCVxSVPPmVjJhPfGjdibAQmMYtFlihWsMw9bu7sb30Nb/IPWbRDfgOMUsCtPavD76BhASrhYNfkQJpVFnL49vn4wd7GUE/40KHiediW5L5W6Qu4uXXY2+yV/gak2Vq1LOs74PuT5B/AjrKgAT5tVy4oXUwpxSrbqZ6MA+w5TA2NVdXjeWo6WAoLzCxS'@; put 'rd0UqRbBCjjg95cU+/3FicOHyb5AcbE/4C4OzKz9kY6//tL6uDx+KTqSMVpAtxZiDclRt1Y1F0FgpKs5oAPMeDSMuhEACIidPm18CTKFRdFLzSUupxxHF7fE0WVHgJrJutxET8aLCkr8xRWHxzryE37zP436MaPfQwJrr3buYvs+CAugZ4YmtPQFA3PSlJ23cg1I54Q37LmVazz1C9htcHYX2K8b'@; put '3szPX7BZ7cwixNQYYioMXOmu75799J5Dh9auxR7p374/dQ62swfrOR2iz8F8BNTOp2GiwQw5ICJPwKSKkXjYb0oAbX7+yXzQZOjQISo+kbJOoQ9420/lTynG2iqMWEybMrWLChbtkl7UCVqtNauhp7ZsWSB54Hf6VgdviU5Xkns5z0I1fuTzW+1+u99hAPmjomTdhg9JJ+de+E7+Zjp2sCPePMC+'@; put 'HT7sGIs3z7pt+9oUCm9tGepNSc8pP4l2KFzfHIs1IxWfWsG/HrtgNRPOqHQNduZOaak8sqq5kNHUFv7kTOhAdpj8ZibUicqMZR5s2q07fLh4Ts2DnQ3S40SbDccU/TMKc9oU9yh5y7iH69Jxj9dvzILpMHTjCBgKzHJoiO6Kwj/ZcBi5YQjezYDdEJ9OcANCsf2mwPazMtvh6Gbbj2pyHbgvwPx5'@; put 'A4xiyM41PZMKm21DFczbsNMU9P2P7DTpv8nj89vZadQmmgKbSFnXRpsov64SlWGSVXQSs3Ksm2ymDTCXsF+sm1XQn2C/aNcmsC5vwMxL/VvtT3Db8UlYlwn1XDDpqKcur8rKFCbYMtz8ZMaAU6HovFlK7YALIGWYmLE1JZ0KCb+83LPrmHj4MP7HtpnJPumfiPYwj7m8jl+E8YLU3nVggp3gHcOw'@; put 'IPxykZeSzZGXIAoEagPM3g2pQi9YsTS4TqZxF0LF8stnGqKzc5Gm5o6lPcf2xA/XRcYGqpPuhkTzYPzEjLk6ONgVrKiqspb2dAxMV5UNx7xljmKHxVrZHhuao/YSzHGRfAjspWgm4sY6GuYFs+5WqkvIAj00ACSAZ3aAm3LMBrL7qBEU5O6VVc4zAolLD7Ca0njR2VTWPjo+fvD66ytdReX6Eqtj'@; put 'ohPHpt7//inpVY/fpOc5SK8DPrVMvthhQJKTLyBaZI2pcgfdylNZ8Oc9QC5fQMX7WexfZQZTRcVmZCUWKlaaFSEDxPJHECkgZPCw9BIVMnhCzskhdUSr5OQokQzFBrTamMdt56EX1/F77zn+Twtg+JzAd1MFjcEqRkI1tN8aw7FeOoZTvnzNzVM3n11+dN8NN+6DHt+Jb6Ffa3/EN0s352NNNuib'@; put '5YAZRQ3NJ6GdYwx9C0R1KGCz2Sj1eMOi3x5OutNJ0Y7ve9/7T3z1uZPvPnfi2a8+/zzWr33+829Kb9B+S9ZHST30a6XZMCY9gSlTI4HIXVPiPEDn7mHEaUVFNoc6LNiFBbaKQiwer3WV+0p85tLXLnvgk6s/8exuedI1WmRzpYleOoo/unaxL4P5WkB84u/BmDvEeayXjvMksE/6Cb5Heg0HpL0j'@; put '+ND8iHTPPOu3en0vPkK+CFKrOhMsYcYlaGk85PMSmuMGILMyP2M0YXVR/U1DgGlQRilgszBNKHYXEqebHxWKlMtEbN5fjesbUxFcvTChb2t14lAoHMSuljb9PTUDTbfF63rq4ufSA9X6boO7tvo9DemCwnTDHdW1xYZuGOey9QvoCRY32jk/DmyIy4aHlVw1mn+5F6+ydQB+9CzuQ0+phnwYD7Iu'@; put 'ZuXTe4QnaO42ER11btBpYZ6BkqYZJmkQDyKQP8goWA9sT21biwumHgphZ2ubfhddFBWu1ft3LRuKa6vvaEgXFqQb3lNd6zZ066sH0ufYwm5L99foae55C67Gt+FHrSIuWF+XfokMjyP8tPRLlg3Bc99n0LeYbLWwUys6QaqQmVHOcp3s9Lxoo/HLDEueaAi2TfJBOXmg5UwJmFBKvsBaP35N8T8v'@; put 'YImMAS94KWYqyktL3C6HvahAS8z8fApGnZbT7kHcl7IcOp41zmPXNF+cbiroTnA/A+Ajg2rBP5yKTnUcbm050jHVsNvbG2htC/VKd/c0NvYEa7WZPvPYVV1dV44V9HRqq72dtSbpL0yRjpsP2PGC7WAbz4FEZAxsyTLUm8nATtFkIiTSXGQRD2sxAaEqEnYcwvwzmlUkity5Rzzpq8xqDwZAs1Dj'@; put 'Luj0ptIse1Md7NCVY5p6RsbWfjqUybSsZAau8wwWTMSbh557bm6uofahwXN9l7fLp2y3DD6kjs26UEumyYGRAY+Aiykyt2RFhwmYTWDGLRtZjQDPeXM57TalBqDIRKsAWHmFU0kohS/G8PjRe77yla8cha97WDQXDw5mB0+cgG/4KA3psv3qIpP4avIcy99JsChimCatAv2ywP6SVqCIwhPbZPDQ'@; put 'AKPa+0ioPi9WVrpdVZXux9jPKheZpD+9TvqM/wR6rUFJ/H/w3xX5cJ0WFQm4Dr0qxzXH8S3krrcTE6V5OF24R3qe3NX9dmOibtF/4eAHhsgrDlluB9a/AX7Po7DT/gz44aDpELmJqtV3US3GwtrsWCPEtAJWzB96mEvPNwoHLmttXs7g8rGzYzgQn29t3ZtYqyIfXTsKfXeiV9CXQHWZ6JmiSjAQ'@; put 'KjImVMm0TSrsHQoESkvh6xX44ffDRzneu96J1qFBMTrD1mYBe0VjN5B8VMJMoxJg3IOq1pykSUQgtFfzUvUAO30BC5CBAGHdtBMM19nFyG0PBAJUZ1PMsQQNFo5Q5TzSWpNXq1sjJTGrs9zv8ABtWmxV7cX6SKg82FBUEHU7LIU2o20szepjYrDnv2N7HtHRPY+g7zE6DK+P4H9lssmLWjPpSqfD'@; put 'rCH86I0gOlFGjFxYgeY5gGR1560qdtmtOZpEanHFU3ESabdOMVlBtuCkLMFim/Oi8uJMumpzZhSbOztLEm4q8tFqHquIetGfoc8h/eMEP/Y5JmS3gTmGHTvAnFVgsIge3AHm8hxMAfroDjCrubFW0L0chmyGeTnXjwl9cyMMzxMSXgMZZAFTfzDTZ6Xyh2l6cMJB8tCsNL1m2QACUbcAdqZ8xqPl'@; put '1hJz5WxFNmhtkYWSCSQkVjJHUjSZCKwCcFGySgaJtLbnDL6TNEvit3kqyV13kfOL0ofxMekjLPejk+XqpDDJlNbWCEQj6iqANMuxBpfZgG6tmAhamdzr6dGsgE/CN6Q5oQQPZfktO2ug3Q7AnD2ERg2oAdtAGyGsueltt6qk9UAbWgk3vGWzTGRzC5rXR45s15DH/WkcIYUag7XAdl4nVTU8BmvB'@; put 'smjYzH3bnvcm8cuLgcGG63oK9ZWbWdM9c/fM5oylyUi4L9qs8W7k2GbjkU/MbcxgQoymWL4Po/FqmQ/eyWgKq2hzM8wx9PgOMGcVGOCDa3eAWc31s4JOcpg8ja9fpDkzbKwIn8/6+7b0A6ICJ1Qwx5BnM8z6rwHGxuYT4fNZP78F5t8BpoTNh/ezsv7ZjfMBfqqFb99nOQTlNLt8o3WxoGdnDAaV'@; put 'eWGxwI9ySxmr8XNCswLQNcZ8HIE5TEmrEkMA3kqKoPDx13ny18DAr6Z5+tez+JlcChhuWMT+tUd4ItiLi/8AOGD5LUymxGWZcu8WPLGcDYanhLy3n9kidzbDHMOxHWDOKjCwt1/dAebyHEwBenIHmNXcWCvouU3yi+ZM3YFfJQ5QArondAjH6oJh4IxwmuZsuvGHz707c+627tvOdb773B3n3t3J'@; put 'PmfefQ6xejUlR4VWudajc7J/68IaUldbXlZi1tGUbKQVRjzsqaB6iuHpPG9QzIIp9LjeldVtOEEEg0J9pOTiR4I69XFfphCYvT4QCdnDdlZxoWRxh8A9TKsyUJMicrkxD40jXu6FXUny1eTB+5bSq5GGI/MNjcDaTUcj9UfmJFRZhke7ssDhOHO6v6JMeiKTJcU39C3df9BXmVqJ39gHvO2tbFyR'@; put 'fjztwzdTDpf+MHTdQMO0X7q5nuKe5WmwfW6WaeHRLfSyGeYY+vEOMGcVGKCFz+4As5rrZwV9ajOfc1uZjdUuj/Xcxn425e80ZOqAOrQarF3WYfn4K1eECZrL4nJY3EVua8hbJPKsgqQq2ymYy3ZaeWZLttOZltVM90rL9d8baG/vl9ZysSviJV8DSTX/lBHsdhouqQfqqAAdAEpMoMdE+XRTvKDD'@; put 'cti6TE5qXM0Bql7PZ4z2gDfgrfOzY61cjFRUpppSco1Sil6gceaxliOZzOHmg+00W3Z3e8vwcEt7JNnb05jsXSbmpulodLrpWLpiX3PTdGye5snOdEai7Z1xmjMKuOZ5Aq8ArvtAvxPUu4i2eS7AHnxA9fyiAo/FWTX8C7nnBQPq58/l+l+ZUD0XKnPwphs5n8Jz4UNgH0ZQEmVwN6/pLSsDLHs9'@; put 'YI04sVHfjHVGAyGijnp2uhG5iHdHGBOFyb82bPN6fp6PEwHColWGq0iPdKJet1xgIEpGfkm20GQWqBbPJw3QcZsu2caMcy2yhdhkUgmMzOaGKN+MFg6/ZRdgRlQ1NtbXI9SYaexqa6lP1idiUcBcnT3gDwQDQUvOrFDS3LdkYPDziU0HviBzOnDuvPFlfvqbORn0Xtm7dEKVnjHXvVASWG3bfCIs'@; put 'faA3TLM2elr42XBLItEyN5ZP24jXRxKqk2LpDn+bP+BoqqmNsbyETpaXkEIPZcqDWKtpDBGdNlVKkK4EC6i4EDa4ALxmnWwWBmh5AAFjQQccpWOsx0rdeNLFAZDCHqzYdUEKC3A3XRo449sCxwrgj+TAtRT3xhCz3hi3BnR/ouFGEyXwD+bilq2GW3H38a7tsicCdZsNtxbD2OmeLdkUnL94fgDl'@; put '3yHO18vbPad8/RHV84sKPBYX1fDP5fpZmWHP17/GzuxoP9/g/d/O4WlQLKJ6fszJ4X8Gz82s/2/w/h/kz38Mz+2sfw6/ci+PL9GaqU7yTVQGVtbejL2I1QbKlpPDbjPioexjpfQYTwneWzdkl9JDXwyaAJNV9WNwd8vLy2vLawK+UJDm2ysqWNG+7hA1KULcpiBy8qmO29o/n+45kx0929t2rOdA'@; put 'b3jfmfLJqoal/gMVPQVz1cOxgXl69GH51NKeW4Z7z44OXdU1PjrR2Bsorgyn63rL1362lI2O1i8Ox8cjFE/8TI/Ky0kuL/fm8T3K8Leb4/X0ds/pvj2gen5RgcfiFWr4F3LPC/arnz+X639lmcvdbnRErmu2gMXclgHtrFPOzBELTSENkP8skL92SQS+1E4wj9BTVAraVYkk6qlrrj5GB8dQXaOE'@; put 'rcGgpyQQKPkFraX6lvwL/lKotCQYLCkNdc0/r3yEOSlnjG5UhWpyNpsDbLYwQLlNYJ3pFZsNngqqp9vabCXb2WzqA7LtbDav11vjrQ7awrYNNpvaZKMWm8Zt5wabixpsYQEEZzg4cuPQZE/Z/h5fCBh6or9sfy8Iu5/UxKK7ov88EfXCJ/zB/YmhG0ciVWOhhSSwcr13/LdxbPIAN38R2Lk9Kr3h'@; put 'YfvGz2jo/s9xujiItnlO6eJDqucXFXgs7lXDP5frZ2U3f87PHmg/++V+7ladq/KcrA/nz1W3TZfbera6Q7rctoew27+WM+foIezbPIW1/s9PYYXVrelyOdw8J+MGcDaJVDGXllxc5ij62Ba/hts/d+Xsn6ODaLuYDjag+3Zom7OdsGGSy8bS9T2CF2xfN/TSkWktwUB9WIfJiB5MbthqssLKfei9'@; put 'M0DPSlmdHY0WFxeXFpcGaOzG4aVBBy2PoaX9YV4KxlV+Im0igtefiHe4C9pzdWHFFeUlZRbpzjvvqmhNBMt4iViFu9hjxZ2sUEzOO91DeoBn6U1CT3MGLPOA6VWKieCAqdVH9IJeFDHW18CUmWW23Wut/Frm4RroWdQTcVWpZC8Bx1qv55FCt3qJnkz9VlhQ3Ba5AdoEP5+x1tbWpmobQwE7GE1h'@; put 'r1Esy6EltYPN5LQqiAqpMlhJD0VZyZYk1pWrOep+qySzUgSGy/o3JrPS/FaGzY/lk1plv/hu5guFZF/o51t8Kp7LSXl3QObdD6ranlXaYj16bIe2F+W2BOvnOH2y2jXWNiy3Pb2tz/5b8gzADDIYi9ABJrkBYJ4WMAUCGDlGApT/zlyO57UgT0rhzWsXbBpi0CunzSGqVjAStGgZNggki14v59DR'@; put 'UxF+MQVPCKLSp3ZHaCbFaRMm1d1EEUMbWxRessUG4DycTifn8aqBaTzP5vF4aj01YXoiH/LLxzX+LWmgykUgaHM2xbWZDekU999/KCP9Up1T0b/2jCon9GOt7e1rX9+QVZGLobXkYmhH4f9t9hvsubty9tzRcbRd/A0b0Xd2aKvYggLAfJHXyAHP97E7FgYzfUWgiK2AO36GTLP7KeOJC0gU5YAy'@; put 'FfKWLDMkgDHtWuXYzeGnVTZWyoBKPaJf4TO3zJGqAsVhzlUVTE5JTyjVioyHmpmI4jWG9KxyheXKhlA9emfGRr2KECZasB2IAWwBmglfBvRRDea+RqvTLNNgrbLj8u04LGOGSQ+mrYIKKFs/PrxdC5qoWhQOh+vDEZfPHmr0B1mYV9y0It2WtFvqGyA59fbH2cLcInW6go0puNXgmUm/kb2uUneh'@; put 'snKbFavyccEHw2d4Su42sVj9NrHYzb6AXvYFWK0mo5FaWWd9eUtbnk9LaWSE66xTclvpZ7TOk7cF2rGQUsTvfwB4wY8KUQNqRfdkHPWVRC8q5QoCvQ4EDXH5UGeiRxSCXrNqwPl6XlHULoEbrdXy0+0lfrrtoZd6bYU2Yp3OytugTS3AmY5GaYQ22hptSSUtDZaGuhq/t6zUaaeR2mKzYtrS+6i4'@; put 'Nev+E9J2cWVVVdgfMDgrq1z//ZYZvJN1vrK2hpJgTaXLVTX6ttJ5wZd6DYixivE/j1kfXf/Ulrj29wCmlPE/97eOfozHtOLre9DrwMMOnudAsIPngShXefAcIK4zA16Xl5XLyCdwaVokqXDq65RULeZlHWdPquscgQLykGwr0NzZdRjrBXYW7aW5604H0QheJjJ0qo2VTXNLjqNY0kJVRWmx22Up'@; put '2DYv1q5MyK2e0SH5jHqYzqzCbT8c51PLn1WvVcEsy2MmHX597Y/yNIFmafnNU/kzAJB3xk1xSJZjCn6wNlfHa91Sxzt4+DBNcoL+ZoAHPgS60Ae0zngA/yv3meF5BeONcfn5p9lzVjvLdH9U1v3WLfwGHIrrhfcAzIQM40IXOMwFBYbX4D6j9AP9P8z0NFbpadrPYQYzIcOc3wjD8/lJL9BIAc34'@; put 'NJuMBnC1BD1RqpE3FfYWoAJnrrBXTFEiSTtFJ+mVGnbtWrn11sVFsAEXavCI9PPehd4fyvUCXpaXnM0UmIyijmpgfT4v3QQfi+R6vlxacL7Ez8N+Uw5b5uefdLL7szDNC5THx97JQ2NjhybxwRrpJawLL4TxnPSDmtyZyU3KmQng8Rfb4Rp89ldkn53aWfdzWwn272G2r3FZtvHY6hA8txKrAg84'@; put 'fSFnWz3MZHBclsGf32Gsi7n4gP44Up2TtOTOSY6ip7bYZdxvvivn4x9dQNud5+DCzWcsctupfPwBF14m56GCsH4V9t6Gyum5fe52AT3JXS9goKXUSq4Y89TK7WUuB8sr5Yq9JH9cnEuucGJr3gzq46p97fkD9x88dP8S6ZHEYXp0ebqPK/e5jy8u3bu0KJnxfw2cHRi4kt9FCHMW/h30O11XC5rK'@; put 'TLqxXmcgtACZhQeAhjRavWbZbCA6nRIKMIlGQRUMSCb9foSSLcnmppQ/4Y/X1UB3XnsgFAgWwLw3hlHzMl6ltjWbbDpZhQtlPH7aezoYPNMzzNKbe04HAye7FTUuXaPKc8bXbqir6WxKdfHM547GVDvT50Sd/IyvpJpd1uvH2d6mZPr94ha64Dm3dG+neWwuK9t+QKfHGf2mZDq9yOGln9EcXRme'@; put 'Po/mbIjjjH5TMv3evO1YZxj9TnP6tfGxWO0zm2eTPM+PbKF9nqtL5znD53kEyXXTnaxuugv9d8YVj5WXaXT6EqzBxYVE0BSAuaDZPlcAzM8l0Pku7vdp8dZTf9s2uQJv3WrbXIG3arZjrsA2DXmugDkY8dP0HK/VAF7FJULNobdRHk7arr1im6Cz+32rlyoZP35Stzn2bDx0yRJyeb9YznUHWgfj'@; put 'Cou6WAXRiuXAk6W04FC9c6K8c5GNOyeKuiVEKzBQPiK0JcmjftPGvWWjyi27DbvwFq3YEeN227a1Hd81U6C2mm2aHvyZS50P4LfKLMcvHhzfLsEjvhTeMd1814x2c5aHNly5c/65ijfPKrwJfL24A29eVHgT6+s4b9YAb9K7AqrQFzMWNxaQywzKwETvIpS3FgA17KSGnnySG2iQT04zMugJs/O2'@; put 'HNhEaBMNPYh5O20yNZvA5WObLa00NJYIJh5Mtoo67HSbqNfpFXfYI+rI0zsO8D771n3wOOm9B5uy4Hpy1yCwvP5OltffgL6WKa7BeqHWSQx6ByaGXFKfNkf/Wo32ViOGiWLDSVBcgGFaUygImgUdryzkuXvIgxQs1efb6A3kprdqlKndHp6lBqIjqmYCxROV2w2onhUbuAFTNLKh2YGStxYguCnh'@; put '4/gW2k2052sSAmXVRZuzCJv1o2l1mUKf2xhg9MfupGA0mpZp9IotNOoFG0Zgtuwst2XJxBZ7l+chtOTyEI5uo4d4rPyuXKz86AhS5TC8nMtzMKG/35LDwNqy820WlweYm7fLowAb7BPbtm3Px/px4W4k36exh92nEaDnM04QRwWwrYVA4sxNltNP8nH1vNMELQKBYn/Qwe8nYtkEm8IQm67fIPeM'@; put '3jatt+ViD44j18n3cJDz7NYNS6kcbPB53PecVF/Kwec6AHOdA7/Ij27iUtpSrIdNETEW/FiH6ZlNEXviZ5Fr4FE8LAd7y+RKF1pZsk18t0p+TWO6ueqTjSFdY4CWuIW9oirEvbUSJZmL4pI5FkRS16UczruvwbLNBSqKkwh7xe4KYfTYynNe8NgWOuK1KFRm7mW0IKLvqPJczip5LvD83Vva8rOH'@; put 'i8rZAxbnkartai5HZgXdsIWO2B0ejNY6ZFtrS56bXP9BaW2B21ryeSNvu6q0Bd/32zu0fU5uS+OBH1a1PZtrq0dnd2h7URkX69sY3bC6WupPF9I4BM1IpzU7LA7BCmDIAWq9exhRF6ICe0C57kpVDmvIl8F+fkvtK80bP0wuvs27PNz0Lo/PzK72j4/1kYt37t69fR+5+iSCbgWeOy1XJ8l9pJOi'@; put 'v6tvbLx/dZZc3L37TrmPEXwFeQ72Uc7GNxKajz9iABU5tF3+eAEyB4VcNr4ccmJOycPjlY2OVGlpytFYMVFLRqoqUg6Xy5GqqGLjTKKHWKwlxMa5ZG765kx/Jbs/HymRawlGsEOoZLUEzaxXem8OzaZf1WIBOHw2VwQqvK2KAvX99Td1dUUinZ0ReoE6/SIj/PdIV4I/cPt4jvweQLobWVErm0G0'@; put 'EBZjodQyomWVAOxWGMDpLJOEAn0zwaumAi6NXFUg38OuCjLf0FHh7s8Flh9hUSG3HFLmd7mTdnw7eQFG7mHjpp3Qs4FVaTkwHtJjYZAemJNZqk6BfleVKzSIMMGMQxfoUK1MHIiafMoVy/SGdK4y/bjAV2x1m+xubbpo2sk+29y6tGWGdNqsBQUVXsM7+E/9DXw/uvB/sFoIEZXyigEtIGeIuran'@; put '7bZcDYVb9AflogicPfCBQfKK45YPOd7J+K5X+tn6k+tfAqYKsB5K+F3kG+u0Arm+xI2Xkl/ggU1PVVV4nQctWQAzJx9vUuQj6sV1O8jHVxT5iHrR4wht0/YYfvot2x7DXaq2q7m2K7h/i3zkbZ/LtV1BX+f+7fogPc9Qn4W8+TtuP7z5O9l+iABMmPnGQzLM0wyGqGB4rP3yXD8FQA3bx9pfyMXa'@; put 'C8bQtjmQvei9O+iGV3Ln0r0HuO5tRP9GTLjjre+Bf1WqwR1zShuh/W20EfRv/l5p040/gy6SzwLNlDF6GdpcEMfpxa7Ey3ls9oX8Bfbk9g032DPbB38WfZs8CCu2AAZivLaNxHK1bTAm/ms2Zjm90am8EOh8QyGTwIRaoDhgYzdIbRxbu+NUsG6HaVWpPvP54UfIg0VhPj82z3+Gedpy86RkokyY'@; put 'YvFhvAvWZNmpLojWxbO6oE118Y+3+nzwr4X+exg+eenvXvjA8dQLdPNOdB3sPTgyRX74/s+Mhq3AIwjkQGT9d5ozqr+P0gXUOIt+yfMc4xasLeR/vkSPdWZsNOmM6j95Yi+wCSaTsGQ1FIka9V9KSb1FQ/ZXT3hrkbYW5L+X0rJtu23+YsqWtuCBNI2OZjLKX04ZnR2d2b0rk82MDPTFumKdzU3b'@; put '/hUVx//gr6hUbfo9oIKtavqT/8IKHskqv4xEpfPK31v5K/oh8af84ZX854mG3B9hyf8xFgzWfRKX4L+jN+Y8AQZzrK4LuwF3gft233337jdftD9xwcFrWQGuQoETGFw47RZrP/jB3Z/+9OCFJ+wvvsx0wS/kO3SjaCIzWuYhGnrHgIlZ6RpQcOBbLxswMWJsorUOuRoXM0tO5REQ+B5FDZG62hqr'@; put 'LQjOoNUeLKDBq9xFQ2HwFFnmSSrZSfKVlTRhDJDs9rKQKitvSdw6NPaeFffMINEM7y9Zvm1ELmkZuNaLK6WXYCGt0vcrbspOsmt3u68e7C8uACXee1k7K2gZ6+ovK7Hb+gdmZZnlJQ58Pcg53ROE1hDYc7d7X0/v9WaGDJgyAkhdr9VLhLU1+pXLXWiR72LQP1ViL9CS2DZ3PW29K6Hl8CXuSvjj'@; put '3h2vSpBj9i1UxuOYfObw+Vwsv4XqLvZcdc7Knl/MPRevQ9vBo5Wr1M/z/ffKfip/flcO/ugx5T6KPeRdgAMvigMOqn02DDjY7GMpiMh7WIHNKHkX87jUaJE9rnWkQg93v9QIkl2vezfnPrD5Un+brwP87U+p1vFCDh8FR3M5/Og8u3NGoYOk1T+m3B6Dad4bvNdufa9dm0D/D5D8EiIAAAAAAQAA'@; put 'AAEAAA8CG+xfDzz1AB8D6AAAAADTwZ2GAAAAANS+pOv/Q/7oBHUDyQAAAAgAAgAAAAAAAHjaY2BkYGA++e8KAwPLov/O/ytYShmAIsiA0RAApfIGqwAAAHjadZQ/aJNRFMXPvV8GRRysWFFsazHWJkSa1thqwcY0xVSTSFtrg0IXcVARsaCp4uJSsQ4u4uRkEF0s6uRW/wzi4K6TOElUWmgoWAr1'@; put '89xnIjGJCYcfefnee/eed74ny5gEP5KlWqkdyMhrDGkBQb2IDi+MiD7EbqxgSC6hnwrLfezXcSSkCUdkCjFZj6Q88xf0JXolj2b+16Wj2KXT1CS6NY9ePYU+PcvxPPrc85yrGY5xHfKYrGKrN8W9Stiuz5HTOUR1lbyGtJ6nivz9EWmsIaOt2MKaJnQfBr3TyHkeFeL/s0g73uPzrF2vI6QLGLE1'@; put 'AwfQpvPUE2zUW6zzCo6z5hWyS76hR0f8XzKBuB7GXp1BVneylhmuNYaInEO73mTtOQxjCYew5L/XTqRQwrB3BykbZ50RN49zZBZZKaFDbnBejn0m0OwNoUUj7G0c23QdeuQuOqUFF8iwvMJB893tOY2Y1SgvWEsbQjyLuKvrNoL4iQEZcONR+rXHedVAgSbS/DPvqoQ1/4P5Ry5SX73NCFe8q5UG'@; put 'kXE0/6pl/tFnnlnWedVA3jxpvYz9K/r2jv6lyCL1Ra/y/Cve1cpyYTT/qmX+mc9G69f2rKX1bvtXaDniuVi/+qDsy5jbpzEta3beZdKrz6z3E73rJn3yqPXhMsgcWA4tC395Bu0yiHbz1vqrY8jVEKkwsAHRwCbuy9xadurILFue6sh8u4xVaOdjHv2H9g64HNoZmn/ld8HyWEvLuBSYPdNTxPGd'@; put 'PEElqDfo1zDH4Ccra9ayztPynrIMeMU/9w1WqceAxhHzLvMeaSrfKYvkIvkIJ/Ut7wreS4EC38MkglRY5/wfLh8e5/JcG3yzyP4Gj5fwtAB42kXCXUgacQAAcLuuM78uMzvP23mfep95nv/z7kEiQiJCIqInieHDiBgxYsSIiIgxxh5GREQPESIRsYc9DAmJESEj9hAjIkRijJAhEhIiMUaIjNjL'@; put 'YPx+Nptt8Z+87WOXrSsLUdA2VITK0H33XvdZdwOG4DA8DL+FD+Faz2jPUk8JYZAUUrRj9hn7nH3VnrcXe+HeusPvWHAUHA0n7kw5t50lZ8WFuIBrxrXmOnDducPudfepx+vRPfOeDc+Jp4GiaBJ9ii6hO+gxWkFbfc/7Hr0T3mq/3v/GZ/NlfXnfn4GxgZcDFT/ln/eXB0cGlwfPMRibwhaxHHYe'@; put 'gAJaYCWwHbgJNHEKX8CP8YdgIjgazAZXgh+CF4RGJIkNIk8UiDOiQtwS7SejpJfkyAQ5TmbIBXKN3CT3ySb5GPKGuFAiNB7KhJYpmMIoiUpSk1SWytEQjdIELdCAHqHTTJppMR0WYX0sxSqsxabYKbbEfmOv2RrbYjscwk1z11yNa3EdHuF9/A6/zx/xJf6Kvwkr4XK4Hr6PQBE0wkRAJBlpRDoC'@; put 'IuBCWHgldES3iIuKaIkpsSF2JEQalrakA+mz9FW6kmrSbxmRcXlCfifvyodyQT6VL+UfclNuK04FU+aUW6WtwqpXJVVNTaqTamZIj/ZGiagQLWqz2gttXdvScton7US70L7HtNhBrBj7EivHqrF7HdJRndGH9BE9ra/qOb2k/4qT8Wx8L14HCABgDEyDZ2ARvAYbIA8K4Axcgp+g+Z+BGIyRNmaN'@; put 'PePIqBoto5WoJ9qm21w135u7ZtmsmnfmgwVZqEVY89aStW5tWvm/amzATQAAAQAAATwAYgAKAD8ABAACACgAOQCLAAAAkAFBAAMAAXjahZLNTsJAFIVPCxqIhKAxLrpqXLiTvygYXGrcCGoklp0JSAVisdAWE1/FNzDxQfx5Ajc+g0uXng63CAYlk2a+mXvuuTO3A2ANH4hBiycBHPIbs4ZNrsas'@; put 'I41r4Rj2EAjHUcST8BKMic8yc7+EEyhqhnAShlYVXsGOFnmmYGkPwhmsa5/Cq0jpceFnbOgZ4Rfk9S3hVyR0S/gNaf1yzO8xGLqDA7gY4B4eeuigy5ObeORXRB4FlEgtRk3qukrjk+uc+8zymXuLLGqwmecpJxeOqMLdNnlE7Tm5Q3LQpK7AnLwa+7jAMRo4Ic1z2Z5xWVzH/FXJ4sqjqqdOak5V'@; put 'XlzN4nxFjUtV2IFTOthT9ZrkM8bDWJVz+58ehX0NuKogx3E34+wq3/7ENcuYy3WU40tWh9GAuyP+kUiT4xzV7Kt7/tTMzb3jX3vRrRvkFt9y6BBMOlaT/h2pqMlRUrEyz1ZgvIJdvpjo1ZRxQ53NCgPpv01vn9mRax1D7vQY8xhzvgHFfYVjAAAAeNptk1dsHFUUhr/fsXfdNk7vvVfHXvfEKS5r'@; put 'x7FjJy5x7MRJxrtjZ/F6F8a7cWy6BAIeQPDCM+UJEL0KJHhAolfRewfReaQH79wJXiTuw3z/GZ3znzP33iELd50bYB7/s1SbfpDFDLLJwYefXPLIp4BCAsykiFnMZg5zp+rns4CFLGIxS1jKMpazgpWsYjVrWMs61rOBjWxiM1vYyja2U8wOSiglSBnlVFBJFdXUsJNd1LKbPexlH3XU00AjIZpo'@; put 'Zj8tHKCVNg7STgeHOEwnXXTTwxF6OUof/RzjOAOc4CSnsLidq7iam7mBO3if67mWp/mYO7mNu3meZ7mHQcLcSIQXsXmOF3iVl3iZV/iWId7gNV7nXob5hZt4mzd5i9N8z49cxwVEGWGUGHFuIcFFXIjDGCmSnGGc7zjLJBNczKVcwmPcyuVcxhVcyQ/8xOPK0gxlK0c++fmLvzknlKs85UsqUKEC'@; put 'mqkizdJszeFXftNczdN8LdBCLeJ33tFiLdFSLdNyreBzvtBKrdJqrdFardN6bdBGbeI+7tdmbdFWbdN2FWuHSviDP/mSr1SqoMpUrgpVqkrVqtFO7VKtdmuP9mofT6hO9WpQI1/zjUK8y2d8wId8xKe8xydqUrP2q0UH1Ko2HVS7OnRIh9WpLnWrR0fUywM8yCM8ykM8zDXcpaM8w5M8pT5+Vr+O'@; put '6bgGdEIndUqWBhVWRLaG/HWjVthJxP2Woa9u0LHP2D7Lhb8uMZyI2yN+y9DXGLbSSRGDxqkKK+kPeRa2YX4okkha4bAdT+bb/0p/yLOyPauQ8bBdFDaHE6OjlkktHM4I/C2ee9Rji+cTNSxszawcyQh8bVY4lbR9MYM20y9m0G5exl0Utmd6xDM92k163IW/w5shYRjoOJ2KD1tOajRmpZKBRGbk'@; put '6zQdHNOhM7ODk9mh03RwDLpM1ZgLfyoeLSmtDHos83WbpKSZpsebJmWY0+NE48M5qfQz0POfyVKZkb/H28GUYUFvOOqEU6NDMftswXiG7svQE9Pa129mnHSR3z992pPTp52eOFhW5bIsWOnrHXasqWs1btBrHMZd5PVGorZjj0XH8sbPq3Rdaai+2mONxwaPjb4+YzThIv02WFIS9FjmsdxjhcdK'@; put 'w2BTdijlJNygoqkhxyq2Ysl8y53FSPfup2WRNf3Z6ThgnR/QJLrd07LA+32MNvua1nlW+jRMcjIai7jJudbY1B5FbCcvYnvqH7dltyEAAAB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdidNkkyMmiBGJt5OBg5ICwxNjCLw2kXswMDIwMnkM3ptIsBymZmcNmowtgRGLHBoSNiI3OKy0Y1EG8X'@; put 'RwMDI4tDR3JIBEhJJBBs5uNg5NHawfi/dQNL70YmBpfNrClsDC4uAP4cJWAAAAAAAViY9GwAAA=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=Metropolis-600.b2801a38a74ec6c1.woff; filename filecode temp lrecl=32767; data _null_; file filecode; put 'd09GRgABAAAAAFaEABMAAAAAouAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcfNH55kdERUYAAAHEAAAATQAAAGIH1Qf8R1BPUwAAAhQAAAcYAAAOdkDCfpZHU1VCAAAJLAAAACAAAAAgRHZMdU9TLzIAAAlMAAAATQAAAGBpEq8JY21hcAAACZwAAAJsAAADnndDD7Fj'@; put 'dnQgAAAMCAAAADAAAAA8EhEB8WZwZ20AAAw4AAAGOgAADRZ2ZH12Z2FzcAAAEnQAAAAIAAAACAAAABBnbHlmAAASfAAAOMwAAG8kHd7Yl2hlYWQAAEtIAAAANgAAADYLc4gRaGhlYQAAS4AAAAAhAAAAJAeRBCBobXR4AABLpAAAAowAAATauY40J2xvY2EAAE4wAAACdAAAAnrU+7n2bWF4cAAA'@; put 'UKQAAAAgAAAAIAKUA1BuYW1lAABQxAAAAY4AAAN6MgiIWnBvc3QAAFJUAAADoQAABiGXFj2KcHJlcAAAVfgAAACBAAAAjRlQAhB3ZWJmAABWfAAAAAYAAAAG9nhYmAAAAAEAAAAA1FG1agAAAADTwZ2GAAAAANS+pvV42g2MQQqEQBDEEkf0MLPof7ypL/DofXfV/z/AIgRC0TQCLR6cdFRkjVso'@; put '7HzTv1D4B7m4048DOlopNlv645SeXXLT51sXzSa+W3AF3AAAAHjajVcNbJbVFX7Oufe+X/sVainlR+gYIYQhaTogTJQgGkY60xRUxlw1aLbpnIMhjDHCNucKc2AWAps/XSULQ+10kgqsCnbWkYYwRtxCZBLDoDAGFapxMoQtBpV3z3veD/vWttM+6dPTc+9733vOee537gcBkMc41ELm1NQtQBE8'@; put 'PYhjOP4RKNziby6/DxVLvr58MSqXLF6ymLNBfzKazkjY8bk8hmMMJpjHYTzqXEs6Gi2zVSXagIgPyeAVfGKU+QIqPoKgJt5ADpiJ9fgQsYyCchucJyOlEyUYxJ2djTviZ+PD8TEM8BOfG3DkUL/eLlT2+v+t+JEBV3hzwJGjA4/E+wYYeTY+Hrcn+Jj/MH//kqDv2+PX4o3xRuZ1LDM9gdn6HKGo'@; put 'Jhw+T3hMJQK+QESYTuRwLVGEGUQxczuTlVpJCFbjZ5y5jgjM+Hr6dxKCFwnBHwjFQcLjNcLjGBFwiojwBhHhDBHhLJHDOSKH94liVu9DrhYTeSmTMhRLuZSTK6SCPIqVzXPtyVTJeD4ziRDbd7pjtR0727G3HQfMIYpQQxTjRiKP+UQJluL7XCGJJLJIIoskYCMe4/xGohi/wibOfwK/5fxniBJs'@; put 'J3LYQRTh90QOrUQRnidyeIEowi6iGG1EMXYTeXQQeewh8thL5PEnQvBnQiw7EY4TJfgnkeZFLS9qefGWl2B5CZYXb3nxlhcvI2QE83WlXElOchS4ajUzNIE1rmZtp7Km05mZGczIUizDd7Ec38MK1nI11uCneJBZWMfotzOi51nJF1nBg6zcMVbsDVbqLHfyvp2sMr63Ijlf+oCdw32ynHEPpr7a'@; put 'qbuN8X/6UauN8O+ZAUfeJC708+T5TzpPcWf8r/gf8SM9Jy970uIz8dZ460f/dWeft2eUJzjRhJgmFF8hHG4jPG4nAhYSERXxGOckahBTg5oaFC1EhG1EZJUWq7RYpcUqLVZXRRfhcJpw6CYcPiACLhGRDJEhrOtQGUoeJsPISUXFKioyWkZzfUUVriBKMIQYZEoXU7qa0l1B6V8iskr3Fk+UiSdn'@; put 'SncFpfdo3FtU3qLKWVSXlZ5qPFX3S8TAuk6i9aZZLUSYKNdZnDnTrzP9aiHmRMVaiDzRsmbizyraWRZyMlmu5duTT68aRjif9bqNcS1kJI2MpAmPM5on8CSeQjMjeoaRbONpbONuO7jLvdxdF2vQzZ1d4g6G8m0j+JbRXHGM6VlRah2lPP4J7XLMw/W0xOzr2Yk6ozHkk8z/Hlkr6+VhaZLN0ixb'@; put 'ZYfskpdlj+yXA3JIjsgJOS1vy7vynlxSr3kt0+FaqeN0olbrNJ2hN2iN1ul8rdc79W5dpMt0pd6va/Qh3aCP6ibdok9ri7Zqm+7WvfqKvqqva6ee1G59Ry/oRQcXuUGu3I10Y9x4N8lNdle7mW62u9HNcwvc7e5r7h73HbfcrXIPuAfdz90vXKP7tXvS/c5tcy+4l1yH2+f+6v7mDrvjrsu95f7t'@; put '/us+8OqLfKmv8KP8WD/BV/mp/ho/y8/xtf5mf6tf6L/h7/X3+RX+h77Br/Xr/cO+yW/2zX6r3+F3+Zf9Hr/fH/CH/BF/wp/2b/t3/Xv+UvAhH8rC8FAZxoWJoTpMCzPCDaEm1IX5oT7cGe4Oi8KysDLcH9aEh8KG8GjYFLaEp0NLaA1tYXfYG14Jr4bXQ2c4GbrDO+FCuBghiqJBPB2rdDu5wXi2'@; put 'ca1xU8JYZ9xqnjXGjRm+xXiK8SxjW411Suz6zGqTlJ+pcpVxtfHchLHaeKe2kxvMf10P45TxxcxTzcZVxqXGt7hF5BbjVf2znsvEWGv+Pow7jNuN1/Ww3JXGbvYS4/3GjX05zcAAO6k3nqQdn8T6y1656uiP8VXjncare5h5+zT8f1Zmbnt4VWbPvexMTRvMf5X5s/Zsy+FvzL4rk/n0Lb1sG03r'@; put 'm/U3mT03tW1Oqpm0OmnUqT4LdsGfzGk1e6dbeVm9BY11mn00sQs1TXOSajvNTNbfmLEPmd1gNTpqOj/Vo0BqtePyiUBf/xSzL6a2zUlVnfWnJ2hWRjPVmcyn9g6zF2WqYHnTSvM3mz9VWlXGTrNamsl8X/u82T+y6G4y++9mZ1eujbclK8fPfaxS2TfOLZzujk/BvWcqPmv3UvDeNZFZSW6nnl27'@; put 'il0wuWFHmMKbWA7TcA17WNK5S9m3r2NPTzr3ELujllvnHsrvVbXsQ3XEMNzEPjecne5WfvepJyqtl3+GXe8Odq2lvLuNtdvbdHb0zVxvCzvfXOt9X2b3a2eH/CMO4Fu80Z3FD+xW2YTzEvA4O/FotFhPbeN+Ra6w72YRJF5hKmzAPeS17HYlGMl3jWdEk3E1dz2bu5yHBRw9aNrtMj5tbGcGRzJ8'@; put '1PjHxs8Zn7CsjTO7BF/ke+7FtyUnRVIseSmRwVLad0f/A3IFobcAAQAAAAoAHAAeAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2Bm8mWKYGBlYGHqAtIMDN4QmjGOQYTRDMhnYGeAAyQmA0Ood7gfgwODguofZun/xgwMzOcYDRUYGCaD5JhYmdYDKQUGJgC8iQorAAAAeNq1k1lQjlEcxn//t30R'@; put 'KhT19vZp00aiFEX2pci+lKzZsq/ZGusQQ0VSyJ4koxkTU1O2G+64NWOMvs+VW+4MHcdXTDPMuHJm3nPec86c55x5nt8fcKHrC0F0j1TqmTjnrlKsxyWMw42BlHCLOu7SSBPNtNAmHhIggyRMBkucJEmqpEumTJUcyZNCKZISI9V4Zbx3iTKPm63mE/OL5W4FWsFWqGWzoqxhVrp13+Yf+U0pfYfF'@; put 'jR7aj2njmfhKfzHFJrGSKCmSJhmSJdmSKwWyQTZr7ZfGW619yGwx283PlmEFWEFWiFN7qJX2S1t9VC/Uc/VUtatW9Ug1q4eqSTWqBlWv6tQ1VatqVLWqUpWqQpWpM6pUneh805nVmfT9k6PcUeDId8TYB9r97D52L7ub3ej42vG54/CHkHfJXV79p+ZueDuT4I9bBKP7z/iHRtdJF1x1du544IkX'@; put '3vjgSy/86E0f+uJPAIH0oz8DCCJYZzxIpx6KSZhOJBwbg4kgkiiiiWEIscQRTwKJDGUYSQwnmRGMJIVURpFGOqMZQwaZjNXMZDGeCUxkEpOZwlSmMZ0ZZJPDTGaRy2zmMJd5zGcBC1nEYk1aHvkspYBlLGeFfv8OdrKbYg5xnNOUU0YF5zlHJVVUc5EaLnGFy9Rylevc1BT9ZPQ2DZqle5qmn20V'@; put 'q7Ud0WzgbLc361mj+12c+O1W4V8cvEA9m1nZY2UtmyRGj1vYzjHsOCRc8xkpUboCIrijdx6gaZYEXQ/x3WeKnGHEso29bGUfezjAQV1L+znCUb11mFJOcZLXupp6sU68xFt82Ch+mn/PH5DNquh42mNgwALKgTCDIYNpPQMD024mVgaG/yHM0v+NmXb//8J0j0nw/5f/fiA+AOYLDgp42q1WaXfT'@; put 'RhSVvGUjG1loUUvHTJym0cikFIIBA0GK7UK6OFsrQWmlOEn3BbrRfV/wr3ly2nPoN35a7xvZJoGEnvbUH/TuzLszb5t5YzKUIGPdrwRCLN01hpaXKLd6zadTFs0E4bZorvuUKkR/9Rq9RqMhN6x8noyADE8utgzT8ELXIVORCLcdSimxKehenTLT11ozZr9XaVQoV/HzlC4EK9f9vMxbTV9QvY6p'@; put 'hcASVGJUCgIRJ+xok2Yw1R4JmmP9HDPv1X0Bb5qRoP66H2JGsK6f0Tyj+dAKgyCwyLSDQJJR97eCwKG0EtgnU4jgWdar+5SVLuWkizgCMkOHMkrCL7EZZzdcwRr22Eo84C9IlQalZ/NQeqIpmjAQz2ULCHLZD+tWtBL4MsgHghZWfegsDq1t36Gsoh7PbhmpJFM5DKUrkXHpRpTa2CazAQOUnXWo'@; put 'Rwl2dcBr3M0YG4J3oIUwYEq4qF3tVa2eAcOruLP5bu771N5a9Ce7mDZc8BB3KCpNGXFddL4Mi3NKwoKTHS9RHRktJiYGDlhOU1hlWPdD273okNIBtQb60yi2JfPBbN6hQRWnUhXajBYdGlIgCkGHvKu8HEC6AQ3yaAWjQYwcGsY2IzolAhlowC4NeaFohoKGkDSHRtTSmh9nNheDKRrckrcdGlVL'@; put 'y/7SajJp5TE/pucPq9gY9tb9eHgYBYxcGrb5zOIku/Eh/gziQ+YkKpEu1P2Yk4do3Sbqy2Zn8xLLOthK9LwEV4FnAkRSg/81zO4t1QEFjA1jTCJbHhkXW6Zp6lqNKSM2UpU1n4alKyo0gMPXD8OhK0KY/3N01DSGDNdthvHhnE13bOs40jSO2MZshyZUbLKcRJ5ZHlFxmuVjKs6wfFzFWZZHVZxj'@; put 'aam4h+UTKu5l+aSK+1g+o2Qn75QLkWEpimTe4Avi0Owu5WRXeTNR2ruU013lrUR5TBk0aP+H+J5CfMfgl0B8LPOIj+VxxMdSIj6WU4iPZQHxsZxGfCyfRnwsZxAfS6VEWR9TR8HsaCg8dsHTpcTVU3xWi4ocmxzcwhO4ADVxQBVlVJLcER/JsDj6uW5pzUk6MRtnzYmKj0bGAT67OzMPq08qcVr7'@; put '+xx4ZuVhI7id+xrneWPyD4N/ixdlKT5pTnBwp5AAeLy/w7gVUcmh06p4pOzQ/D9RcYIboJ9BTYzJgiiKGt985PJKs1mTNbQKH08EOivawbxpTowjpSW0qEkaAS2DrlnQNOrz7K1mUQpRbmK/s3spopjsRRnMgCko5KaxsOzvpERaWDup6fTRwOVG2oueLDVbVnGFvQfvY8jNLHk3Ul64KSntRZtQ'@; put 'p7zIAg65kT24JoJbaO+yimJKWKgiPghtBfvtY0QmLTODLoEiZHGysg/tih05ooJ2At960irv20Ltz3XyIDCbnW7nQZaRovNdFfVqfVXW2ChXr9xNHwfTzrCx5hdFGU8ue9+eFOxXpwS5AkZXdr/uSfH2O9btSkk+2xd2eeJ1ShXyX4AHQ+6U9yIaRZGzWKURz69beDJFOSjGRXMcF/TSHu2KVd+j'@; put 'Xdh37aNWXFZUsh9l0FV01m7CNz5fCOpAKgpapCJWeDpkPpudmvCxlLgsRdyzZNdF9B08IR3ivzjEtf/r3HIU3KLKEl1o1wnJB20fK+itJbuThypGZ+28bGeiHUk36BqCnkguOP5e4C6PFekU7vPzB8xfwXbm+BidBr6q6AzEEuetggSLKt7STqZeUHyEaQnwRdVCswJ4CcBk8LJqmXqmDqBnlplT'@; put 'AVhhDoNV5jBYYw6DdbWDrncZ6BUgU6NX1Y6ZzPlAyVzAPJPRNeZpdJ15Gr3GPI1usE0P4HW2yeANtskgZJsMIuZUATaYw6DBHAabzGGwpf1ygba1X4ze1H4xekv7xeht7Rejd7RfjN7VfjF6T/vF6H3k+Fy3gB/oEV0E/DCBlwA/4qTr0QJGN/GMtjm3EsicjzXHbHM+weLz3V0/1SO94rME8orP'@; put 'E8j029inTfgigUz4MoFM+Arccne/r/VI079JINO/TSDTv8PKNuH7BDLhhwQy4UdwL3T3+0mPNP3nBDL9lwQy/VesbBN+SyATfk8gE+6onb5MqvNn1bWpd4vSU/XbnXfY+RtlM7osAAAAAQAB//8AD3jatX0JdFzFlWhVve73elOr95bU2lq9Sd2t1tJqtfZ+Wmztq21k2RaysC3J2GBbZrOxMeCQ'@; put 'BQIhJM5kg4SQYzIhYJZAICQzWSYhzoJ/fuYPJwmTSeCfJH+yTD4hk8mAnv6tqvdarc0488/YUqv7vVv1qu5+b92qRiY0vZzEHxd8SED5yI0KUQBVoRRqRu2oDxXKnq6OtpZ0YzIaCZYVFXjsNqOOIFNtTO+3+yV30h1wJ1OBVDIlsb8SvNWu0mv0L70DV1LaexWGNUgnU/jjyjdx+xudXee7us6f'@; put '76rw+7u6uvZ3+e86v7/Cv99//vx5//79d23den5ua/kPhF93+0N++LljoWLr1uAsvNvqb+uq2H+yyVszduzY48eOjdXM+2v88IMQQVuX30SvkwtsbiG5AmGMphFC1kFEiDCjw4LgFYZ0Ol2+zhqy2/SSN+ZMCgFPONXQmKz3uF1iYPS+ku2GRKKiLFFdTi4o9b+r8ZclEmX+GoSWl1EnPocfJhds'@; put 'FciEkE2A11cRfW4FvNwOz/WhMtQvb80XCdILBBOED5ix0WgdtNryBEkyTFtMxGCwD+owIflkCKGy0pJiaOUrKizwwvOd9uw/qSSGpaQUkAJp9ptOst+kxH4lepOQ+EHvQnQ6eiZ6dXS/Z398zjMP787AlXnPt87Ez+DHH98FCD2/6/Fdn4N/ux5HgJmy5edIL/kzKkFBFEMJORaL+suLCr0el91s'@; put 'MkhWRPCAHiPcD/PCBM/CBL1oqNRuFwBdQRGInApH0h5vKoEBbWmgtccrhSPuUuxGcNWK3Y7GVANcIL0nDu1+976+gcn5+cU9u2+4uqdn4Nhx5Vg4Goy/2ljTdGRRkrttu6e6nd/07ZgYXzS3d1jG97TavlK08yrsDOafN9aUKkfrK/wR29NIj6qW/12wkmeBsk7Acg1qRd8dfLJgbKccM2O9CWNR'@; put 'j+eRiAxG0bCAdDo0QzClfB7gX5ixSEQQ8oUh3+CTEWhSc9kmCEBZO2nGgiXJKw355OQGLQgBWNoMbdxqakoO19aWl7tcCNW21rY0NpTXlCcqw64yV2lRgdNht8FkrGGr5I45KDI7cLIesOiy4gBO4gBDY6BCdLs8SbTmfgdeufepoWh0uLZuOBobqsPv36OE9iwmEoFgdSKA54ZicLFuiN4KJmoC'@; put 'AXpxKjFaWzeWSIzBazW+amkcfzYdizelq2NpZSIxWlc7VlPDIAbT8VgTvYUo3/iX/0jeRb6EylEcNaIOubU2ES4rKS4qMBkFUg68LpABytd4BsTOM6gHYWOYAeaprvb7qxurU/64PxavECVPTB8RAxWcgXJnBre8jWmvKHkRnZqXT9ORDkeArWCqpHhkarFzvqVvtLigbrKhYXvN0Lb6vqqS6brE'@; put '9conEp7CtppomSkz2ROL9dTljY/VTrV3TwcrO8OJkUT1cE3zYLh1qH0gvk8+TlrigcLa0oJ4oKJ66S+p3WMFzcG6FoQwlXH0LZBlC3LKNqpBGHnxkDtIYOCOFV0hBa5yR3y+CPA7fvVw0FdZ6Qse7kW0j8blq/AY+QrKQ+IzeXpcG2MqJu1ls/BKn1tcPJgZHx4ez+z6+dmz/zLete3CkSNPbOtm'@; put 'bcPQVtbaStCWYyGS5ggKTwwPT2QOQg/z2544cuTCtq4x6OPnY6xtAu/H+8jfoXmUlhtmhnqaqgCXMIcBAWMdRiDW8yLW68kM8K5HD/oHIOemJuWOupqAPyZRRoSBphvTogT/AxXhCP/YCBTg7ymlvB5vKfayzxoqRKkRbqXpRy+7YMUSJSaFdLvgU6ACOkjgCL8gBl50mUWSVxBw6Y1Gm05vLYiW'@; put 'W62l1V6rXmc3iAZvhWQ3E9HsyrO6TFgU7C4h4OCgBslerS9wuwpqXZIhB1oQsQlEY7/D4kuU5hs9frPOaDSYHIa8PJMomvKsBodZMph01nLRZsgvTfgsDofFVasrdOc5hDITBTYa8nWmfCIajaLNorMaDCYN3l2oq3VZHBTHHWiWFJI2ZEZhOYB0AtbtAF4HzYEFdADUAZ5GgOthpsRtolQUwwFq'@; put 'DVPUKiZJ4Zeu+xL84KIXXlj48pdpf5nlRfQL9EFkRV4Zxo96NZ4DwQk6KM+BSFTk4Ho8YSmrTpSHE9XJaxO1NeXlifbayu2NtK869M+4A/eBtBbIbkQ72kH5AkaEYEQ22pnT7/bX4Tzlj7jvEOOZdrCZP4Hnm6n1p1dAC2LsxZQ7zMgUFIArci3kIdU6WrKWES//Zvk5/B3yK3iuXbbSTs/Cs2/g'@; put 'D6SqDG85q5w/S3719iXE7GXd8pvkHvIiqL8yFJergBvZjLnWwGCo2QBsNjCyZbbSAg/Tk2B6Yrq1epCkGhLAXFSwSuFJhruHh++enHzf0ND7JutH4/HR+vqxeHys3rL7M/PzD+/e/fD8/Gd2L3Zcv3Xr9e3t9LWD4YASNg0yLyKfXACkFABfA1yrY5yPh+xOhjopkk7aAy/elPz6/lOkbHDn2aVx'@; put 'xNrHYVJhmE8BisoRswmmA9xAyABDJ1OH1AGZRswG2b3BsE4qiGWwpsWlSKOq//IxkKd6SW7cUpvcVjk+92DPdZn+yftxWpHmvpvcHqtpqasdfHfjNR1bbu6+YZE9uxRwGYVnV6GM3FZYAM+pwJjA02EIA9SGg0E/AE/WzQBzwkAQ0s9QJeBl8l+FKoNBfzAkSYVAZapkkvXM7kippKdx7fAkFe3/'@; put 'eHd8KLQ33d432D883NHX11Q3HhrY+8m+69v7Wtq3yzcMWTKpiapEU3WiBh/GdfFoKl41dKJ2R2PbhN26vbN1dwPng1J42Ql4N4G2q5ajFvA38ICohzlgBH7nHKCOmdh83ZDZbM4z54FMOWx0rCF/BCft1PMMFGIBn1Yet+Ct52ZmTv3k3Cx+QRk/dA5IGFF+zOkTAxw1wHOKKY4coAvzLESAzrEe'@; put 'AY50AKEDuy4IZJob9dU4Ag+twu4MBhiOwPVRMVQhRagwSY1Zbrz/wMDU3o7BofaRjh0m/LzyVRHeLbR33TJiuXZqcktDSq4N4usWn4omr+neem0Lx0EtjG0A6OdDEdQnb7EBDuzAPAVYJ4SwXqcbEEGx6PSCbh5ljasEY9N0RHExjDBSHA74oYuiYChsAD8NqSOieoOpbIlLiQQfHFm28yTxIwc7'@; put 'um7sv/fe4Xt2Ht/VHuiO1Q4ldOVXNxg7/KMtdYP5BTfiLzXs6+o+1PaVTx58dGZ4pqyseaE7VKU8WtFcnu5Mxj9M8ZuEiQSY/JTJxWBoMJMeqncw873B1wVvhzqQ2J/yu0EhPKA8jP+g/O97Sfvi1UsXqH8RBTx0qnhIoR650yUS0K4DUs70VS1hgOljIBDTEpWVFAOVqcqGmmqKh4pyioe4kaqt'@; put 'jTwMFTM53pWXvgfbZCXUx/jXk1uHM82dWxa7uo/3dDXJQ70nB+tG+hsb+0Zq28djXRCwxMbbLTVTrW1T3oLRpubt8ertTc2j3gK4srMGP9QYrUw3VsUaBOVSU7y0poiQoppS6kQRVA9zHFqhdSnQF+itN4LAGgBrOpisHsRVT+aB6QWYoSB4BnPsgUZrfxmdYygYYrT2cFJz4QUrTD+oc3aA5eba'@; put 'EWj99+uoLDPqN1MyV1KCkxdXU5lTXnkEyMzITefA7AWxgG3wUt1NdTUbXiEPsvQ8yLJYELJ4LR6HjRkRUXUtNCNCNjAoFepffESzLMpd2juIvZidJBaIvfIRskvIDoi6FRmfwvh5fOuTyRjlwzTaTkSyG/hQfEYk4Ds5UyF3Hnan8SXlb/BBHJn90dyDD84zuetAj5FC/CfgPAl1DD5ZBmGBA1Ev'@; put 'VpjV4kY7Bs+/gHIyjeQQhBBkh6rIiTA89Ry18FSTUzVA/3fgnyoh9vunhZMLMJ4+GI9XG48A40lX45Tere/DB2E8l5S6Fx98cO5Hsz+i43Euv4lfAd5wIz9ql1s0nnAC+wtUmgQdEg7AyLjzRrViVkd5PB6/pzzkDQaZbnSqAi5FVrjevSrKfWJob0f9cGd/9Q29nfvT8+PHvBru79Y1V4Yb+waS'@; put 'rfU7G7uvc+z5PysBMEHx5fcLW8gjSEYj6JLs9peXCQahGxsNDqwztrcREViYR1jVEPfqsHES1DhETVS7iibqEu5DquYCvWAwCDOgdO0GGpZV0UgOiGEwCob5d2ysB8LUUTUtIP385q0kSZxEoijNsOajEJAVdAITd450DvdthVlkwuFYKBgOWyTfOteiggYdWQXq8dKwhAtSPcVvjtdRzzx70CgZ'@; put '3LAibZ0X5ha/dnT+C/ubd9XVtluKRxKD050HW2q6nZZ5a57ZWu4rbqiY+sT03Bfm9jw403Yg5Wo+1u3vF3EiFpHDDdEbDnxh7sjXju19eHr8WFMsEo7tG+s+3l3lbzP0dTSO2orLKre37/jA9rknDuz5xJ6S8pKgH3snMrZYfay3qrqR2xYnvLwKelkCCxuTK41Yx4J7HXC0DqwrtXUQGVAPx8Cc'@; put 'Xe6yFoB1lVgIGjFjUqp8seEeXAY/d8+eOHHqFLmwNP5r7Ff+BdAOUQd5H/SfD54P41rQX/AEEeRFryN66naoCRgJc8+YPquo0G4rLy30F/m9bluBvSBWbmCOKcO8pp/9mFnZGHY7tTdjeLx1T8NsW1fT/ozyGZxMtLYmvnQx2dmZvEguxEfr9jeU7G5q3FGLP1IXCtc9rvxTOhZL/wPVC9Wgdz8G'@; put 'slWCGuQ6CONRoRlsaRGYWRAtVX95ViWJ4EIJKg6HwjRJlGUNj2ZHc+mOG8/v23d+78C7k1PlU3Udh2X5cEfdlH9n/XsGLLOfnZl5ZLa1YVso1nVE7jzSFQ1PpFoZbSjuvsV8HzeLJLKoYkG0iiqL2eUwuy3ucLmeokhjzhgOqUwYw/axN44+uW/fk0ffQMt9RzOZo313kgs7P7lv34M7j7Ue7O5e'@; put 'aFWSFAcQmYLtuQDquEaOazqNKhDdNOgSa66Hyjx/M09DUX3iVvWb3e/+B7xPeRC/d+ktoift5xefWSQXFrmPpfVvRFVyWOsfeE3HetXcALhhREbaM+Uz1rM9oPV7mnb6xKLyOu+U0+1vgW5+1Co32YBcdvDNy7AOmAw6plpRr0OMzVa0InORwC9wAvECPADz23NM4noipgL4XThUd25w9tF9+x6d'@; put 'Hfpw3VT5gWTmOlm+LhMZK38Mn1T+NdnOSdmWzJKyyHtam/dHGV4jclD1JQ+AD0vnTPNJ+WgtPjGdMfwm4ZV89LTyt6dP40kqVjik/JRcUH6NC6CXfmj1LZbLpHmInFiEh3EQiPRzYQRYO9iOfwJYG+Uk5vrjAe57weBmBGAoL0O9DeU7QzpovuLqwyiouD15umK7oy+S7DzVutBlkesngjX9Lfgl'@; put 'pa7ncBun7yh0dZ7Ns1wuMRr0BBx0PIBZxkzg+Uynw8HtYdKOk0YcgNAxMHoaV39M+R2OfPz16dMwuSfxmPJD5XZcuf8feL/UqSiFfvXUd2SDpr2hq5GGOj3S2+100CHglaQdFFLg1CLw3dI3WXuQI8G6Mi5pg3G57Nq4fBA0BOxmoMDY6ddeP3Xq9dfomKbxI4D879G/Skrtk3yR8XKp7JMIWdej'@; put 'I9sjhiEFWH/40KlTyjnaXwl+Hfp7XSmhck55WPnviHW52tl7/pprzu/tOJTJHOrgukdVOrOPzMx8dnax60infKSLcyzTO5Rfj7P8lptGqzAKEFUB09TFSrIcpmjNczny3Fa3PVwu0kS5P6t73IGsbu7Fsf4bu7tv7H/iNC7pHB3t/DS50LLQ1bXQ8iu8q72hof01lIsDF/Xt5Xqa7CZ6geh1oPQE'@; put 'CJOzgY0uJ2vodrsj7nB1OEJVMNhyrxTJFWMYjS4dSXsbV2GFKMGKLV0DNUfb9mroUX7WMtW1J5DFDy67Nt42LAcrs3h6o2pkeKy1ez2eTgCerDCWpFybR+WaxorUdB4AR0SNFUWBMLGEIbvtQDpk9VMp98b8EYhN7X7V//KqcXUM49985q7TDG27hr6gDH6aYe1Xv2J4G14seJPjjctG2fKfSC/5'@; put 'CqpEdXLCC5FhAVgsRHIxRj3DHKNViSKh6iDFGBVxHqpCaJMgq3Qfi3pUtvr9uZa++Vvbe/yd7WNzrZljvSO3N/ZUH0gmO/t23nxL+41j5ubGqemGSHGg0OqsHu5onWmsq9kTiaZClVUu39Rkx0yKjTWoxvKSmkPJhn886aG6yjgA8V8AJAa9ShpePQXh36Iqx/3AI49Ce/B/5VI1EY9x7tzcyOUK'@; put 'ujSDTBUXD3g0HYb9d4+cTownG8YTp4bv3mkZuWcnvls52bSrvn5XE363ctPOe0Y4Xl0w1n9m8So8S8/iVdCaqsLkWgdcdq51jDQb78Pkn5Vf3KP84u6f/ITqXPj9MzGyvgoR0pUyeYK+TFTvg7Kgaz/MlLPJg7Zw2PTUklIFBD9CwIwDhe/70CPv/cyH3vfj0194HBS54sK/pb+gORSF8HFC7EE+'@; put 'z3Qb6EajCF0TmsulfIe5aXE4HHaKVxhlBHw2IelNJ/FjaPnDzz73IbS8fO7Z5x7AO5XPvfkmnsQ733wT+jSoetyASuQikcpfVrmpkbqDLfUY2UhBs+EC5Q8f+urX7lP+7xngwMeVizitbFMULe6f1mw+xeNK2isb+2fTXg47G2mapwDA8Cfxrcr7QZ2/G59Z+qcZ/LPFGaWC2/2B5VvxCPk+j8w8'@; put 'G0RmtiuPzMDOuv0DWPfww8rb5PvblnZsY7hd/vfl5/CPNslZCuD7ms7iXTxlSf2QW3Hd6vHQlAUbD9MD6ni0bBt15mjmlY4H5Y7HC8YiBX5U9cMPY53ydj15bNvbFzita/CD+MucJ58S9/fIHrAMLAsJI6MZ2RvUDMpTIupxJp2U3BcnP7770KFdwDu//+Y36ZyU5UNkYvlFeGg562OTHDDtQgIC'@; put 'ELJ96QtbxvjzMySDw+QVaOtlbS2Yxq8I3eDAYIzYU9PeQGbxxh3k656P8vgiAjJLiJ3lM26XvYVY0BWAMXFAFFBWSkQ9sISoh4jQBSgrB3i9SGi4JuhmaDxQOGjAoohmVFb2gfu0HoQKJIPT/Lop2a2lQXiqJxgOOI2AW+RxA3JzTYRXDYMbaR4kpa2X4btvubl4KpHeWd+8t6Wvv72rYyR6/V7r'@; put 'qKllS0JujhP7zfuUix2BSNVgXf1IvNha3xPZ0ai0JSItrppgMK6uM5NZsGcOVIp+xKdnysc6wYSRngz4tA+AhoEpfruEMslgNqtTqKbw6NTB1Pk4V/nXAlGPb1WyTw2U/dra4+aAAJNzW4soVsFMQTzsckKM6Cx1lhR6YTZ2u3NN+jBC5cfOMkkrK474+cPt7Yd7mveUnTxZtqe5fPv2TnliQib2'@; put 'LbeOjJzaUlc9QV5U/qO6Thm8ur9/erq//2rgr0rAmR545XIxWOHmMZjnsjHYH88MDd0+0HwgPOHuKI/2ReHHn/FMRObaLAOn+/pODVRH+gqKq4fj1cPVJYW9VQnOv3EY01aVjl+TTXaIjwVGQpVoFHuMICy8yCVa/grR1gIxjpVYipJzrEY0Cmi9LCAjmnqXQjNdtxpmPdEc4YCdEg2v4X6P105y'@; put 'iEa2Aq2aehjlmvaUTQDBOoFw5MWlLWPx2i2nRkZu3VIbx+LSw1miZWU8BnTzADFkuZ1QgmHmtelA7+rIgezo1DGr3OX1wp8Sb3FRITR1QzRGxxjk5Mp14vzUaxMlPxAV7xzyDPtvaR64tX/rLf2ji23KSfNwumE4D9vM3am9pZ6xQPXWUyNDt24dunemsRtvaUsm26juAkcbL5D/AY89I5tsWNRD'@; put 'nChSKlICFSNR1M+Ax1bAkh1oWgf0s6vGzsdrCLIwno1g5CIIQkRQTfPrbwI5TKEAW+yTJB9YeOrd2OlyH8u2af7Wv9x4482DgxNySasnYPTle0qI/oCyF3/6QGPndo9zxGiqKAJcR5e3kw7AdRmKoY9wHnSUYr1gw0RcSRL72EXd6ouqnikHVQkmSCTzMBlhRgKG5uqBkcXJtGwWhGpYmAcFRGvA'@; put 'QMuWlyNUHiuPhoMwnrJwKBSkWhbbVcXA48d2vJrlUqtYrgMUQueNldW+qxJDu8p2p7sOtbUd6kpfXTw2NtbRPjbaQfRKfdd8S7hsqrCkp7U7msgc7e092lFbNay8b6yjY3S0o2MM6AseOSlh8cPRZ+10KVslrRcx0YMrM3pmLUhWNKvU29aNbsOdlYss86LeAWrmAQJcyGl3Blw0RUFVIRCUz4kG'@; put '7W6YKD43WXdTe23DwMmTBVcliT25u0X5Eq5LdXcllJdAosLVXHZopufb5Gfgv+WjrXzInmzCvIBykF31j30y+KRwCzyI+ZzLU9Q1ybfmWVgWXb8miy6BN7G/qqqkuKqquOPkSbItWkzfFkdHlt6iz1/+zvKI+nwf2k+tEhGsoOOykqHPGYsgMJbW7RUBKz4d43oEAAJiS2Orb4IOYhl+n6XI63Ha'@; put '2eikdTn+3ByDmB3pYqM93+S3ekpObutaGfLbb5kN0zqxooi4l17r2bGSG4gB3c1o5ktGFixqlLdzU0nHhVfR3M5NY+4NoDYE3dPs46o7U1PPOexO5pVi6lAxWwf+81Uv3/dA/8mTP78flyqvvTx8B1izHX+i46EVGl8l1L9q48MwU19UTcyoAzDn5Gp87JOWzJua+uJK8qYb6AWql88T+FvYAXIf'@; put 'QFc9V15EsB6rFshDFY5+xiCJgl5vH9TRlWU2JdBI8JneFeEuEcXC7M0pli4KoIoA8DBwsRHU0louXs3O9bTSJkl+MFl3c1O8PnNzU3WdfPKka6i2cbLAuatF4+9UsrO9Rvmm9pfot4bjDYnqFJ9DN5NRO8jOOLWkWLCAXtIsqZOFcnqqjey5Usj4ap18XlYIpTVCWNsrUimsz5HCpqjyAtFvCTFf'@; put 'jfodEzCuNfmXwnfMv3gun3+hLseZgQH2Gu2LxcDp6I/F+qOqwzFwqq/v9MAC+Bvx4WrueHCdsBV0/CyMh/och5mnSEy5PgfzAESB+tU53hrFkpN7CEw7rHUkc2Cu0Klz/7VOnUKemljl01H/aTv4T3wuZ1Q/mDtRmPvB8EEQVvvB2ekV5vg1g5pxYk6SfY3LtQrmyt2f1JW4P/ql0bdX3J8xZXLF'@; put '+8FoK7ycIFS9dT5rZsUJfBZ2ZinBDeIeK/MR3Bozr3iy1D14DhQM0zCOxqRbk7kfz2a2zZ08if9X28KuAeUtot/PZah8+U38A3heJfWRPfBAL0Tn4CWzJUA15VO4UconviblE94g41OKvaWEKuZv35JIb9sVStSlM8Pxuqnmhrl4Mjhc4Y+5ovGmgeTR3Zaq0I62kgKfL98WbI7XDlT5S6a8BYVu'@; put 'm9uWl1+RqR+Yoj4XjHWBfAh8rho57sUiTTmDa3iW2hQyTRcxABsQ3u3l7iBzkZwV1EcK8XU1u1oTBcxIF9Ua03jB01oiTwwO3nzjjSWefJ+xxOnZ3om9B+6774DyH0UVJiOzCSDPPqLnesaZ9UZVPQMqRrWeOXGlV7uqGoCVUJLrGVfAFWDrETk8RG0WG5Wd+Kh6adKUDXDMW6BaQNngfuUSVTa4'@; put 'V60hAt9Nr9UQaVkVzU+0O1j07uTpH8cdH/nQnT89Du7Pe/Et1FizXI9QC+3X55Hsl88jFZw8fHzuhkMnnzhy5Poj0OOn8Cz9XXoLX6M8tJLvAo+T16yZJB3W0ZQXzSpA3wLJWaRwOBx6lryUAs4ITSZJTvyR287c9Y0X3n3TTXe98I3HH8eGpYcfflv5M+t3eYg0Qb82Wr1jNtAhU2YlateUUffS'@; put 'sfsEdfXB4cxl1AwW2CxE6QPt3qJAWcLl+ekdf3PfbT9tvuWL1rydzooEMSq34TuXXrmP8PpGeHkdnrdJvsm+ab5JovmmBHYob+LHsfI77FEGp3DnoSnl7w+x3OXyLnyYvID8qFIOFbB8IFhq3Ocvp3lgmsucVAUbo1G7h9pwmoJMg3ZJgbhFQNIgriFuL1u+lKioSTh/NoqrG1JxHNu7zdTc5MbD'@; put 'kTB2NzWbPhXtazpTEx2O1t7W3FdpGDZ4I+G7Jous6ep3has8hmFOs7nl59DfsfzU5rV84EfM7dyp1dVhiNV24evZPAA/BpY/suUT1OfHjEcxmlQr0hAepSXnRHLFvGDXIg2N6TBMJ4HBZSMwAQ/TVV4wF1KEDj0UGaJDN26bjeF4QwPMaXbblMFTFX5XddpaNHlXOOKFeVT2Nd9WC/OqOdPUF5WW'@; put 'l1EKR/B9+Gm7hPMQUX6DjE8h/LzyG1atQW1hz/JV6BdMv+az1TM6OGqQmVPOEmtOum612gFmziUviAT/JvmMWrrQe1/JdmLXqhWWtuCX+TMql58jejKMClE5xUpJcWGBx+105Ft02MLXyeCpO9TEIkbDRazmMkjr3LkOpSXulKDhiB2i1yCE1eAB4K/v29V+oKVlf8eu2u3lExW19YEJ5ZPpeDxN'@; put 'LHJP3vDRTObIcF5Xhxit6AublBfNkd53bXfilHN7ktVp0rzpi6gYdcsy0JIWOiGJ1k9LuF8PcR3GEmFLMiwyoxVPksSTAYhXpBXbnaEgmBbq3IXc/lSaVZiu0vglmJbHkemlfxzt7m5d6N5yW8mOvP5YfdeTT87Npeo+MXi253CbutJ36+AnUE5u2IOa5UYXRkY8ANGlxMKSORETcJnAuB8wsT0N'@; put 'vC6P4lLbs2Az010LbDuIWyt6hV8m5PjrH3jhhRfOPP/88/f9kmaTcc/glsGDB+EFH6IpZUarDBnC7yMXWW1RPctCRmhhLfAtW1CY0QsUUXh0g+oimqDMjT7qc97vCwaLCkPBomeCIfaXDNG/4YKikPYXeDWC6okRf9tWgWM6ZBNwDL2m5kUH8L3k3JXkVGkdUAaPKE+Tc4NXmlP1SoEvLj6wg7zi'@; put 'uZPLsH/5ZdJOngBKB2SIwNmCz23UnN5JLRdLq7PllDCzBFjzd+iCMl1XsfYeam2e68Rte27eg8vqd7W07qlfKid3L90EfTej76Hv4N2AtFLZl6MQCFUVozkFv4252ItGS0ui0ZLvRUtLo/RXzRcvt4MZMYPdupHNLd+Fic5pJDwhIYBBttJ8BDj2AsG6o4iuXQhkfkWb7mUrreDyMRBgrNs2g+F2'@; put 'ugB5ncFgkNppijleR14RXlWQSffG/LSqNVFUbyso8TsL7XZHnqu8u0AfD5eEE7a8Bq8jP89mcg2l2X6eONDcymge11Oax9HrfD/P8gD+JdNLftQpd5QB57tgYG7qzQ4gPSICLdGjmBM1bcXKayEyRshfXuh12lWNRYNilKux1BKilTQY3UKDG1Ql1ry2MGtFoynXri3NQmwOrMZHuMNWQVfg7BLE'@; put 'YbejzyPDUwQ/+XmmaDeAOQj6eGOYExoMltBDm8Acy8LkoY9uAnM8+6w59GEOQ9bCvJztxwx8uQoGaAA+i/BHVlvkQFvlbjtVjRTlBoRBARmQjhh0B4ygF8VpcDPVpSY9d5RYNOewOaBxvqqbzKAosVbIkqL1TX43tgvkkFbQsowGP4DfT7YtvfUtXtly553kwqLyGN6hPMZrUdpZDVEKG2V/FRb1'@; put 'UUIgLAf1WIJ1uNgBHGzHRBAHSunmKc791bQaRMBH4QXprl/JMTJ1rsZsYOj2wth9LBfpgEYJ2ghh3W1X3KqUbmla1Uo49Y7N5PjaFiB9Atm/UUO+VkDTCinUEIqCFPrd1PLwdG4+VjXFWmFcE4NohQsvTfl3Jk72WPVlayXVO/nAjrWlVHPR8ERdi86/WoCbTAc+vnN1aRXwFatBYnxeqcrCCcZX'@; put 'OIc/18IcRI9tAnNCgwFZOLoJzPFsP3Pwn8Gs8Pny92gND3tWnI9n+f3r+gGmxl05MAfBuq+BWf4twATZeOJ8PMuPr4MBa4XjbDy8n7nlR1aPB2SqCl5+yWoaSlCb3Lza05g2sPUJY46rkZ8Pf0ryi9n+RDc0ywO7Y1rJJbCAKWnnJeW0GM2dlMD44x/xgrS+vjd28Iq0L+DHslVpOLCIi5a+wWvT'@; put '/nbxacABq7dheqVO1SufWYcnVkPC8FSv0vaT63TPWpiDuGoTmBMaDND2K5vAHMvC5KHnNoE5nn3WHHp6jQ6jtWG3Q7xSApZAfEZEuDYWioBYRNLetFfy4o/ceefAnWeHz94xcMedt5/Nvj+L2OKyVjPjBRsURXep8a0L60hlxFfkNYt6HRhavTDgY1eFnKsYrqr5lgKWSaElA55BcdWSIzgXuctR'@; put 'Hr6GKOauD8rWioqKaEVV2BFxsB0i2VJzKZCtqqcxIvJ4Ma981VFOiGBPknwvec35vdfurjy+M5EEmT5I3yn5RQW4pikDko0rD2XqlB82Z4j31p6Zz8621szXneqhEl0zr/x6uAxfEwCxfqPrSOdEp/JQgNs6ViPC6Nuk8sCj6+VpDcxB9ONNYE5oMFlbtx7meLYfzY7lyDf3l9mz2tRnvbC6n5x6'@; put 'K1pHlJBjwBV6HdYfELG6fJbdPApmK9/jyvfavPaw3yax6jJ3MqfqKpStujp1YaXqSh5jVVfHWhc6uxZabvp1R0ND++tqXWKSfBdkfupZM/jtNHflB44oBaUvQMAxrxVTe/jysIjVlHWxWlY5nwXMuT0lm5xBf9AfD7DVrnX7KmI4pRU6pTRLQJNeva3XdncfbE0mWPXucKq+s7M+VVHd1lJT03qK'@; put 'GJt21tXtbGoYL+QVvIdp5e5cY7iqoTGuODntea3BK4DrHjDuBHVPbXRdABrck3P9kgaPpbFc+Jey1/MGcq9fzPY/tzXnuhDMwptPc/mE68J94CNWowYkk0ODT5roikpFMRDVB36AG5tIExZN8GDRKBAkiQNgqc0AU7YxDDZL4EyYJQpmuYKubFfWVelaMMMGYCsQxo0hpug/PsUYMonENGmAmFCU'@; put 'iHggz0io98sT+FazRaBOw0pdA51x6nJNLDjbYNCKzebcxpa//nm2/5/nUWQ1gszS5vMg3aJkuOLWsry2IVppRveFv2MXDMlyeSqVSICjJacyrc2JhkSyrhZ4LE5Dn1AwlJ/1utZsUPDmbPlgyzlr1tZRYzvO5sJf5OvsHYfD5Ye79h5fqYNpurq2fXdRaH/L2sV35fODtDympY6vwtdXx5NTQ9ny'@; put 'mOKieFVldc6ivPI5OeF31QRD3A5Wgu9Maz8a0GNySRDrdckQEfUNhUCfAgzBcR5IGMTGRFSjRogKRGD0o0gEDSQyVcXiK17JshcslQ9r9ApRWIC77fLAcsU6OHa+wf4suJ6t5YeZe8vy1Lq/0rGltSj4Kwfy1/u1BZ3XZTaqT8GmtW6tcfiGrnXlKlk9FGN6ro/rv2m0wXWq/z6Qc/2SBo+l7bnw'@; put 'F7P9zHH9t/wttrZJ+3mZ9/9uDt8NBGzLuX7Qw+F/CddLWf8v8/4f5ddfheth1j+Hn3uQ5+HqWa3N/2S1Yrtkp40tp2QPvnCYcB8vxfBoCx32VdXAdIEcg8XEZD738pScV1zMa8HCIbpHQnNRsu5JeMXlyl0Pwm9s77llePhkT8tC157O8OSRst6BY53T5a0l4+Od8vhEJ7E/dPX2swPdNw31HssM'@; put 'DfbX9Zcnaxqi/b6lv+zokq/a1tl9lYYfUsLsyTi3Jypd+LojxdsEx+fhja5Tej2Uc/2SBo+lfbnwL2Wvr+7/Yrb/uSlulzrQNlJI+llO1Uf3TQDfa3UFiKXvkA5YfpJtIJNAFvWjLFz22YrA+9AyrQaat8gtNYCoOXcHGc6PxkqLo1Ulf6D73X6ofsBfpn+jxaWxpoWXtLcwJm0N1ktzsFlf1usi'@; put 'OhIJFxXq9Dqzgai+LL0qrFzd0Jct3MiXzV013MiX9fv9Vf7K0Dv5sjqvumXSw1xZCdRlPDx0ZmB4S9G+7ooIvBvZWrSvRzlX/HKwMtof+05fzPcDfxR/cE993+mBaOlIaDoJEhwrG/1l/N88IMOPghDXxX7vpufHsLUrSvudq2R49fUVGebXL2nwWRnm1y9m+1FlWF2Pof3sUfu5N2fNmde5fTy3'@; put 'VHGTusP1686b1B1uuEC98W21BJEuUP93lR0qwvyassMsTi6qOAFc9eXmzTLZPNUCemBdjMd9wnNZn3ChJ7ft4Wz+yoge3KTtN7J+o3FU3ZO3vE2ogHigAKSzXW4pwpKuAIuYDBggDAESkzm2HUvP9hWwFVS1JKuwsNBX6Av67Xa7y0+zL3qeVEwHIny7XpKjqT6Nwd+vCNfXtbvLGrK797Cn2FdQ'@; put 'YFN+c+LEfWVt9UEf3z3k83gKbDjNNvSp9X7bSC/Iagyl0Qtc8HwlWKcvhhjCgw1CTYIYDUaMjTEsYfBEN78L5lyV3Ki2RZMpHbC4hYN0DQHPiITPUk00sRKAxHpgFnywJky+vbkNpmRHPB5PxxvDQWcgGA64/HQVIoubTQqCQYvZNXSFc4qDSS/Dm3l9gfDcLRyBf9EKhTkW1xYK0+JhhtNPagXD'@; put 'aq7gYyxODKtx4i/WxZu8PpbK7lZVdu/O5hk+xmJV1hYb0PlN2l5S2xJsGOV8yvYYsrYRte3COj6NQxxjJi8CTC+DyRd2kD8hI8A8T/5EgQBGzRuBBJzJ1s2+C/RJEYzpNdnkAMLrgObaKnyYmhWMBD06APxry+701ahOsFYwRbVPdFNotJrqRFNDq1tYL9tiFfAKnCiqBdG5wNT9dvh8vrAvFKLV'@; put 'CuGAuqQVWF9bohYvoNwSk3d1rKoxeeihkx3Kv2uFJp1Lf59TZ/v+rqampR/n6imeT8xk84kLaP86OnPf7VzWd1tQddmaXCQ2oR9s0lbz+wSAeYrnqEDeh9nZGKCNirEBs11OelHH91WqJ2LQ+nuJSSEgURM9pou4NlqROLpLVPsf0ESMDDOxUh4jeuUWnnHv4eLEpYhcWKQpdyY4TActsJrjEIqj'@; put 'M7KDRgwhTPQGcABBtyC6ybwI+KASXHkdjPQAzVRrlFWPN2LlQsyPZFYppIGyOeN9G7UgtHQuHA7HwzFPhTMcDIRYjltS5+DVVMra6mXq9yO1gvm1rRY6q2I6XZ1tdSFzEKIu5S9qQFXstTphshmYvsWRU9QM4RWeZXXNG+ShDRvkodf6+QbVR2B7Z5mNiqo26qvr2vJ6Y2qjBriNWlTbKq/Tfbe8'@; put 'LfBKPvEjfkYHwAs1yIoSqAX9mUu7txpL+jKsM0Aop/NiIujoES6oz8fuiBvcUa1CzEyXcQSDbt6IVzZhS5J+BsJoqva1fb1OknNw2/omJiyKdt4QrW0mVyNkpOe84Pls08vA0/i7poamvWtaappTyfxEfiJWFfAXF7mdNP1dYNH8YnocAHeF9X9FRTQuDQWrQiFjYSBUiIV3rI4eqguXdcaLA5V0'@; put '/br3CkqlIf76OTB4gukRvg6wsPzwurWCnwBMJdMjPEZb+ARf021a3oYU0AUuujOUrnjS41cI7s+e48ILqzTp9/jZniZNLuhOWE3gFSbvulOW1VKu+hvUhiB41rfZWr8fHZLNbur2+0HQqREJ0JVjMYcpVO8+PyusjLalLLRZKVBeAzBFt2mVlxZBhJmft2GJslNdlk17c8c+r5YLbKFzKPHmn2zj'@; put 'k1gpG1gKw3xKavP0+N+W3lJnpK7loG+trMGAjjWtyQdrNcT67L5u+7p93bQ0WL/0FvQ3CnJ4np03meByiH/P/X+4HmPyOaJef4Jfp3upmZ9Ro/oZznUyz+J54V6AGVVhPOg5DvOcBsP3ZL+o9QP9f5/5BDjHJ6D93MlgRjeG4fsySB/wUx6tvLWYTUZRDxJItN3pazZ656E8t7bROyWl0rQY2y25'@; put 'SZ8SAP/+1KnFxbciRyJ4i/KfmaMd39H2fTSw+vBBOc9skkRq6Q0Ia1XiZnhrU/d0ZsuzV7Z5+tgnbbFrauqLblb7gyUw9+rzccP4yaGhk+N4b5Vy8T/DR8J4QvltFcquWd2hrVkBHl/fCNekhPl046ti/TGg3xcZXetU/Wrl8HC9hNg1eMDpRbTyrBPZ9TED+twmz7qUzUMY9qGcdapMdp1qAT25'@; put 'zgfk8fm5bC5hYRJttJ6GrWvXuNS2+1byHNiq7hsCxSvQPbYOoFKLnM6eOGEg2SMnjHRrvVavxyLCEmexx8WKeqlrYaIFLpozkS10cWP7ynbvHery/QuzdB/8LOldeqsrc0jOHM7wRfypT1w98+mrF5UU/l7msCzPNzM7BmMWfg7+BZ1XM9ouj3sxjUT0Oppe1wsDwEM6vUF3wGIkoqilHMySSchJ'@; put 'OiSTgQBCyeZkU2MqUB+oi1VBd35nMBwM5cG4VydpV8xBjt+gW3OOjOpDCHk8O9t5JBw5KvMC88zRSPC6jOZIKLfl1JvjW1btj2qsq03zCvTGmtoUcyl0uUXouJ86F6pvcYLRNqXy79Pr+ILXP1Pa7uC5PzX+7QU+PcH4N6Xy6SscXnmd1kur8PR6R9Y/PcH4N6Xy780bPut2xr87OP8a+bPYHng2'@; put 'zkZ1nA+s431eN03HeRUf525t/3w72z/fgd6WS+rAGakvKRb0UhHdfYh1uMAKLkkeK9rgeef46noNSRJnwPP1DKKVNMa6co3qNeUa79iodF2Nh3DqnVqxdcONijXWt+O1GuZQdYSWadgNUnEsKG6ayb6CQwJI76nrN8hpex84eJlzA65fFCvWpLYts5c7RkCtf29n9e8yXSeow6K+vpToxJIignTg'@; put 'LiGgFxHyVq8T6Ng6gbZSqdaubLJOoKNnaN12eWC6TrAGTl0n0MBFvucvXgn4Zaugl0EvLah9p4p8/IO9oxvhN3lN+HJl+tsmpTWLB2kxUnbZuv0ceTqhyRPI4uQm8nRJkydsKOfyFAR5omc8lKMX5HwvUMRjAYqY6XmTKkViGkUo6sgpmgBU67OMBsL8s3WEiWcRfiVt5Ko14Cp51rXSUTLZYdjl'@; put 'qJwG81QaTCAMfmkTWtEgnx4XgGed66nhK6XnVaypIuzMHl/B9kO0s/0QCfRtuaAKG4SomxgNLkyM2aJIfVbN6HX6syYMA8XGo2BsAMN0N6Yg6KZFvieT1z4iX3ZZsnqljcFIbnunRnJ0Y3hWWon25zQTKJ7oeQYJVM02aXgBUzTroduEo9dv3PBSAcCpdRycklf2cgR8cdvaKsy0aaw5d3vHRIEl'@; put 'xPiPnSXCeDSt8uj6XEgJ+B0FzP+c5P4nuWadj8prODLZGo6FDWwHz6Wfy+bStZwKb/tytkZEq1HMrf9gbVltAMvbA8wdG9WggN9034Zth1fWArC1D6nnoGxj56AE6NqNC7Q+LRrOo/sqBtRTpbQzx1nOXQt22Ja/QLAgEHTxM6ZoULomc7Hm1BTy6PDdk7ZsusIxf0o9PYVcYGelWL1qgsJf5H34'@; put 'WO5RKnwfzjYyC3FMCN3Gw3krmFQBYm1dCAN7DfhWXSDZVZwSvbbDa+P0r5/f5ylfbUVnTcbXHPQ7A66Ay0+t27pU78rWnaQ9mxMnsywizc/dynMS50anazf1aJEd0Iqd8cL4sYXXC+GudXzE9+9QnbmL8YKEvptTI3RCqxGC67eta8vXKC5paxRYmkA5bY9n64vm0A3r+IidwcJ4rX3Teka+b4by'@; put '2jT3j46gnLbHtbYb5g1524tqW5o3/GBO2xPZthvlpnjbS9pzsaGBn71C9yXTGDif7sigFf10nxMZQOqmIbKXetw+xtT5yLrRkWViID9nG/HTG+wdprX3N5NLV3ieipeep3J+4eDY8NAouXT/6OjGfWT3dRF0FtjyBnVXl9pHOikFMqNDw2MHF8ilkZH71T56oY9vQHSr7mgwEbqnYYCGGn0b1eDn'@; put 'IUtIyO5oUCfNgoknx/wtroaiogZXS/l4jPT6y1tcXi988LPnDKEXWT4lzJ5z2fr+tbsltB0SKykOdT9GLwb9xvZjNLFe6SZWuiNhHqQUY2Eyu4lWuKJdGbnfW3B7Z2d1QpYT3vJyr8fv95DezgT9nOhs8nv4Rb7PYBvWg02zoxY2ghorTCafcgz9moo+9eQewOkk04YCvUOnake2oEen7sxQz9+v'@; put 'WFGIp9pLvMNc/EH7Pc7SOT4m8JkyRrckacPvJy+BXHex56bpfkwj293mxrjPgIVedijRJDWpwMPz2tElRBjluxWCIbbZjT4f0cPv2VHa3ANUaSoGsCVQ6HCbHB59xpCscWsf5PzdpN1us5h9pUa6Q8hiLi413a7SJEPXidi5tUV854UeuLKPhqU3OB3ZvSheKRBSN5fgHcf4DpO/8dzB5K9ReX35'@; put 'ueVvIysKsh4K+bnzq/e5BbN9CasPoP8Kz1+WhIJVyjLPTbI8JdcpXFfeoelK1I0rNtGVr2i6EnUDxEZtD+In37HtQdyS0/Z4tu0cblqnK3nbi9m2c+hrPD5dbqFnV+aun7z9e+5LvP171ZeILDfTNQmeZ2cwF97+HV8ne/t3KgzP1x/L9pOHrt0kX/9SNl+fN4I2rCXtRu/ZxE68kl3L7lbj3Dr0'@; put 'M2LBve987j89m7j3oNZGaL+CNoLl7Te1Ni34A+hV8gTwTTHjmb61mwo5zzi11DhPrn535QsLyN2rvrGAzimD70e/IBdgxvk068j3CJLS7B5BeCb+PntmCaqQy0qswOurNoUJTLkFC4IOduLX6mfrNx0KLt9kWMGc93x8+IfAGxE+PjbOP8A4HdlxMpezVMvvjqHzeBI/DlCb7LGi5wuwPVZrzhd4'@; put 'qj0YbA8E2M/5YFuQv4NLHE/twDdfRh8E2kNQYwvA6x8YD9vxzwFAot+Po7s75/txMmgQnvxbXlRVl4/1Vv71NQYsWrDJLJpyv/LGmecQzGZhxm60Sbrcb8pJvUND9q03vLVEWwvq9+U0b9hug2/MWdcWopHGoSFZ1r45Z2hy6KqJMXlQHtjaU5up7Whq3PBbdFz/hW/RKV/zOZgDW974V3/DDh5k'@; put 'f+iH4Vrlc9r37XwK3gBs8Mq/eEd9P1aT+yU8K1/Gg8HTr8cR/G16KtEzeoxrYxnsBdwFHpm9//7ZpYuep5/18v3AABfT4AQGF0l7pQhAPfJI/7NPey5+j9mD36nnI9egHfKED6hWjHUioWUkGJnpqfQ6MHcQbR8wYmLC2Ex3jGS3CVlYDStPPcFrDUrEY9EquyME4aHdGcqDUHLl2KcIxI7cWU92'@; put 'kJVcCC0vA1R7/SwxynYI1b9nYOTeee9YFxG6dxTOv3dI3RWUua4Mi8rP9QQHlDdKF7vn2JHKncf7ej3mQk9vz+F2tieou6m30GP29HYM0e9swUWkEN8Juk58htB9GM7sae130nPamVMDbo0Amtdv9xNhaYn+5pwRxs+4MDzrdebpSe1//bCJt8Y2PGyC12HAc0C341p1reAJrT4Drn9Dvb6yRsuv'@; put 'X8pel47nXr+oXUdzB3Ovv5K93n0q9/q57PWFee1stG3kHpYjT8C8IwEnhnlvXFYDs0/mVNPk4OEeFnRZc5Fxkjtdf1JxwmOvXKyocddja3FD42yOG4izP50z9peyOMi7jttDWrr/NXZOj0bvpD2wVTtxB9N6OLivX39fvzSK/h/iEzz6AAEAAAABAABVErT+Xw889QAfA+gAAAAA08GdhgAAAADU'@; put 'vqb1/zb+4wSKA84AAAAIAAIAAAAAAAB42mNgZGBgPvfvPAMDy+b/Zv9zWLoYgCLIgNEQAKcNBrgAAAB42nWUzWsTURTFz70zFEEI2ERQQozGYExMqkm10WotaWpiBWvsRqxYF1IXLlS6UEQFka5ERV24c1Xp0oVKd3ahCAX9C0RQutCCChVKoS6M5z4zEpOacDjz8d68e3/vzMgSToM/OUpFqRQq'@; put 'Mo+STiGhE4h7RaT1CbZIB0pyBT3UNnmALj2BgxzfLxeRl/Xok9n6V33J49vo1FPI8v4mvUmdxQ69jl06im49jwyPC2485+owivYc+mFZQdi7xHmLCOsMavoMOV2h30CVdVT1C88/oiohDGkc6/QpjukBlLwzqHk+leH9e6g6f+zmxLlWks8b0h+I+EVs1NfYwHlr9C665RqOsOZlek4WsFNr9V8y'@; put 'zprKSOkdVDSB7fSsjiAlE4jpJGsfw4AI9ovU57RAHoKy9wgDvF7Wq258xebIfTJcwmaZ5Lwxsqyh06ty7Twi7DeiIXTJQyQliXP0lLzCHnIfdGveQt5qlDnWspv33pGx1TXFPQD2Sdldz5JXgn2FnRb/lZ/kGsbP2DVJQvW3xo/+jZr3okgH7FqlmQZL49cs40fOepIyVqvIe0G3XsiuWeT2xpjR'@; put 'P1Mf9DIKf9m1ynJhbvyaZfyMs7n1a2u2uvVu6wduOeK+WL/MctbxsJqa/XjTuWXN9rvhZPWJ9b4nu72sH44h+3AZZA4sh+488HHEZAQxY2v9tblxZW+B+yHk/A7WydxadtqcWbY8tTnz7TIWuO2PMfqP2zvgcmh7aPwa74LlsdUt4zLD7DWEn/RRapCa5ZhDvIZ6T/DMVm9j2liTdcNb+PO94TOB'@; put 'aUD7kPcu8NsRRa/7LqxFL9Uv0+S17L4V8J8jLcPYSnF/699dPjzO5b6u8q+g8hspY9fOeNpFwl1I4nAAAPC1lt+uMptO93H+N6ebO7e5NUF6kiPiCB/iiAiJHo6IOOQ4IqKHIyTikB4OkZCIOEIiIuKIELmHkOghYkQPIRERR/QgItJDyCER93Jw/H4QBGX+2Yb2u6CuNEzA3+Ej+Apudf/oPu9u'@; put 'IRZEQJJIDtlH6j0jPcs95ybBNGY6Mb8xp80Z86q5bDYslKVt5azL1jPri020Tdj2bNe2hp2wj9rn7Hl7xQE5Eo6Co+YUnWPOrHPPWUMhlEPH0VV0EzXQVq+jl+vd6RvuW+v39s/3X7qmXGVXe2BiYHvgwi26l9zVQW5wY/ASY7EZ7AAzsI6H80x7cp5rT8ure0e8S95THMVT+DpexMv4Ff7qY31r'@; put 'vryv7uv4HX7KL/uT/g/+LSJDrBB5okSUiXPilmgSr+R7Mk1myBUyT5bIMnlNTVOfqSxVoHapCvVMp+k5eoFeodfpIl0KJAJ3gXrgGUDAAbyABTIYBnvgGFSBAW7AI3hiEswJc8HUmAemxXTYJXaV3WB32GO2GuwL/goawZtgI9jmLJyPA5zB3XMN7iVkCY2HaqF66DlsCrvCVPiJh3mUf8cf8lW+'@; put 'xj/wLQESXAIr6MKsUBLKwqlwKdwKTeFPxBbBIuGIFsmKiIiJQIyKCXFMnBTnxcW3qSgUdUWp6IE0Ln2UFqVvUkHalY6kM+lKZuVN+UCuyBdyTa7LHcWkeBVW0ZWksqBsKBWlGcNik7FC7LcKq7KaVFPqjPpJ/arm1C31UK2qhnqvNv7TEI3SRrVJraj91O60ptYcehhq6zZ9Wc/pRd3Qb/RH/Ul/'@; put 'iVvi7vhUfDb+JZ6N5/8CDBDMyAABAAABPABoAAoAQQAEAAIAKAA5AIsAAACTAmsAAwABeNqNkstOwkAUhv8WNKDGKDHGsOrKGBO5qeBtYdSwUdRIhK0gFRrBYilGXfo2blz6DF6ewI2P4DP4dzitN2LIpJ1v5vznPzOnBRDDO0LQwlEAO3x6rGGOqx7rGEdTOIQN3AqHsYJH4SHE8SE8jFktIhxB'@; put 'RksIRxHXToRHsaT5PmMoaQ/CE5jSw8KTiOkzwk+Y1ueFn5HSN4VfENHbwq8Y0a97/BZCXL/DNmy0cQMHFupowIWBez4ZpJBGllRl1KCuoTQdcpFzi1kd5l4ggQJM5jnKyWYffJVJlUXaUrs1HHGnji65QnWamSk11nGMXZSxT+rntRB4+U6DVjR+1Sxx5VBrqZMb384wWN0S+ZQ6m0qvKwd0MTl7'@; put '2TXGKuRDxr3YHufaP33zeu1ytYYkx9UPZ1v5tgLXBGM2135OR7LqjLrc7fIr+ZokZ79mS931q2ay7z377f3tZZk7VZwpHzfoXUE6mVdRgyOrYjmeMI1VvhexHPxPOZxTZ6o6jnyFfOBYxCVvYjHiUNP8BLhZh5cAAHjabZNXbBxVFIa/37F33TZO771Xx173xCkua8exYycucezESca7Y2fxehfG'@; put 'u3FsugQCHkDwwjPlCRC9CiR4QKJX0XsH0XmkB+/cCV4k7sN8/xmd858z994hC3edG2Ae/7NUm36QxQyyycGHn1zyyKeAQgLMpIhZzGYOc6fq57OAhSxiMUtYyjKWs4KVrGI1a1jLOtazgY1sYjNb2Mo2tlPMDkooJUgZ5VRQSRXV1LCTXdSymz3sZR911NNAIyGaaGY/LRyglTYO0k4HhzhMJ110'@; put '08MRejlKH/0c4zgDnOAkp7C4nau4mpu5gTt4n+u5lqf5mDu5jbt5nme5h0HC3EiEF7F5jhd4lZd4mVf4liHe4DVe516G+YWbeJs3eYvTfM+PXMcFRBlhlBhxbiHBRVyIwxgpkpxhnO84yyQTXMylXMJj3MrlXMYVXMkP/MTjytIMZStHPvn5i785J5SrPOVLKlChApqpIs3SbM3hV37TXM3TfC3Q'@; put 'Qi3id97RYi3RUi3Tcq3gc77QSq3Saq3RWq3Tem3QRm3iPu7XZm3RVm3TdhVrh0r4gz/5kq9UqqDKVK4KVapK1arRTu1SrXZrj/ZqH0+oTvVqUCNf841CvMtnfMCHfMSnvMcnalKz9qtFB9SqNh1Uuzp0SIfVqS51q0dH1MsDPMgjPMpDPMw13KWjPMOTPKU+fla/jum4BnRCJ3VKlgYVVkS2hvx1'@; put 'o1bYScT9lqGvbtCxz9g+y4W/LjGciNsjfsvQ1xi20kkRg8apCivpD3kWtmF+KJJIWuGwHU/m2/9Kf8izsj2rkPGwXRQ2hxOjo5ZJLRzOCPwtnnvUY4vnEzUsbM2sHMkIfG1WOJW0fTGDNtMvZtBuXsZdFLZnesQzPdpNetyFv8ObIWEY6Didig9bTmo0ZqWSgURm5Os0HRzToTOzg5PZodN0cAy6'@; put 'TNWYC38qHi0prQx6LPN1m6SkmabHmyZlmNPjROPDOan0M9Dzn8lSmZG/x9vBlGFBbzjqhFOjQzH7bMF4hu7L0BPT2tdvZpx0kd8/fdqT06ednjhYVuWyLFjp6x12rKlrNW7QaxzGXeT1RqK2Y49Fx/LGz6t0XWmovtpjjccGj42+PmM04SL9NlhSEvRY5rHcY4XHSsNgU3Yo5STcoKKpIccqtmLJ'@; put 'fMudxUj37qdlkTX92ek4YJ0f0CS63dOywPt9jDb7mtZ5Vvo0THIyGou4ybnW2NQeRWwnL2J76h+3ZbchAAAAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnTZJMjJogRibeTgYOSAsMTYwi8NpF7MDAyMDJ5DN6bSLAcpmZnDZqMLYERixwaEjYiNzistGNRBvF0cDAyOLQ0dySARISSQQbObj'@; put 'YOTR2sH4v3UDS+9GJgaXzawpbAwuLgD+HCVgAAAAAAFYmPZ3AAA='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-down.d88dee16363c6957.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48ZyBvcGFjaXR5PScwLjYnPjxwYXRoIGQ9J00xMS41ODU5IDZMOC4yOTMwNCA5LjI5Mjg5TDUuMDAwMTUgNicgc3Ryb2tl'@; put 'PSdjdXJyZW50Q29sb3InIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcvPjwvZz48L3N2Zz4='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-left-with-bar.4a4c0335e847fcf8.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNMTEuMDcxMyA0LjY0MTg4TDcuNzIxMTUgNy45OTIwM0wxMS4wNzEzIDExLjM0MjJNNC45MjkzNiA0LjA4'@; put 'MzUzTDQuOTI5MzYgMTEuMzQyMicgc3Ryb2tlPSdjdXJyZW50Q29sb3InIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcvPjwvc3ZnPg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-left.14f442d033da7685.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNOS40OTI2OCAxMS4yOTI5TDYuMTk5NzggOC4wMDAwMUw5LjQ5MjY4IDQuNzA3MTInIHN0cm9rZT0nY3Vy'@; put 'cmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-narrow-down.59dce26ffb7b6870.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNOC4wMDAwNCAzLjMzMzMxVjEyLjY2NjZNOC4wMDAwNCAxMi42NjY2TDEwLjY2NjcgOS45OTk5OE04LjAw'@; put 'MDA0IDEyLjY2NjZMNS4zMzMzNyA5Ljk5OTk4JyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJy8+PC9zdmc+Cg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-narrow-up.f668a39d9cb61355.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNOC4wMDAwOCAxMi42NjY3TDguMDAwMDggMy4zMzMzNU04LjAwMDA4IDMuMzMzMzVMNS4zMzM0MiA2LjAw'@; put 'MDAyTTguMDAwMDggMy4zMzMzNUwxMC42NjY3IDYuMDAwMDInIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-right-with-bar.05e75c50afc9296d.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNNC45MjkyIDQuNjQxODhMOC4yNzkzNCA3Ljk5MjAzTDQuOTI5MiAxMS4zNDIyTTExLjA3MTEgNC4wODM1'@; put 'M1YxMS4zNDIyJyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJy8+PC9zdmc+'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=arrow-right.349eb3ca634d7dad.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNNi42NDY0OCAxMC45MzkzTDkuOTM5MzggNy42NDY0NEw2LjY0NjQ4IDQuMzUzNTQnIHN0cm9rZT0nY3Vy'@; put 'cmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=caret-hidden-down.abacc195526cccc4.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J001Ljk5OTkgM0M2LjI4MzkgMyA2LjQzMjI0IDMuMzI4NjcgNi4yNjA5IDMuNTQxTDYuMjM1NTcgMy41NjlMNC4y'@; put 'MzU1NyA1LjU2OUM0LjE3ODE3IDUuNjI2MzkgNC4xMDE4MSA1LjY2MDg3IDQuMDIwOCA1LjY2NTk2QzMuOTM5NzkgNS42NzEwNiAzLjg1OTcgNS42NDY0MiAzLjc5NTU3IDUuNTk2NjdMMy43NjQyNCA1LjU2OUwxLjc2NDI0IDMuNTY5TDEuNzM2NTcgMy41Mzc2N0wxLjcxODU3IDMuNTEyTDEu'@; put 'NzAwNTcgMy40OEwxLjY5NDkgMy40NjhMMS42ODU5IDMuNDQ1NjdMMS42NzUyNCAzLjQwOTY3TDEuNjcxOSAzLjM5MkwxLjY2ODU3IDMuMzcyTDEuNjY3MjQgMy4zNTNWMy4zMTM2N0wxLjY2ODkgMy4yOTQzM0wxLjY3MTkgMy4yNzQzM0wxLjY3NTI0IDMuMjU3TDEuNjg1OSAzLjIyMUwxLjY5'@; put 'NDkgMy4xOTg2N0wxLjcxODI0IDMuMTU0NjdMMS43Mzk5IDMuMTI0NjdMMS43NjQyNCAzLjA5NzY3TDEuNzk1NTcgMy4wN0wxLjgyMTI0IDMuMDUyTDEuODUzMjQgMy4wMzRMMS44NjUyNCAzLjAyODMzTDEuODg3NTcgMy4wMTkzM0wxLjkyMzU3IDMuMDA4NjdMMS45NDEyNCAzLjAwNTMzTDEu'@; put 'OTYxMjQgMy4wMDJMMS45ODAyNCAzLjAwMDY3TDUuOTk5OSAzWicgZmlsbD0nY3VycmVudENvbG9yJy8+PC9zdmc+Cg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=caret-hidden-left.5da44345ecf3b3d3.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTAnIGhlaWdodD0nMTAnIHZpZXdCb3g9JzAgMCAxMCAxMCcgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNNi4wODQ4MiAxLjM1NzcxTDYuMTE1MDMgMS4zNTUxSDYuMTc2NDlMNi4yMDY3IDEuMzU3NzFMNi4yMzc5'@; put 'NSAxLjM2MjM5TDYuMjY1MDMgMS4zNjc2TDYuMzIxMjggMS4zODQyN0w2LjM1NjE4IDEuMzk4MzNMNi40MjQ5MyAxLjQzNDc5TDYuNDcxOCAxLjQ2ODY0TDYuNTEzOTkgMS41MDY2N0w2LjU1NzIyIDEuNTU1NjJMNi41ODUzNCAxLjU5NTczTDYuNjEzNDcgMS42NDU3M0w2LjYyMjMyIDEuNjY0'@; put 'NDhMNi42MzYzOSAxLjY5OTM3TDYuNjUzMDUgMS43NTU2Mkw2LjY1ODI2IDEuNzgzMjNMNi42NjM0NyAxLjgxNDQ4TDYuNjY1NTUgMS44NDQxN0w2LjY2NjU5IDEuODc0ODlWOC4xMjQ4OUM2LjY2NjU5IDguNTY4NjQgNi4xNTMwNSA4LjgwMDQyIDUuODIxMjggOC41MzI3MUw1Ljc3NzUzIDgu'@; put 'NDkzMTJMMi42NTI1MyA1LjM2ODEyQzIuNTYyODYgNS4yNzg0NCAyLjUwODk5IDUuMTU5MTIgMi41MDEwMyA1LjAzMjU0QzIuNDkzMDcgNC45MDU5NiAyLjUzMTU3IDQuNzgwODMgMi42MDkzIDQuNjgwNjJMMi42NTI1MyA0LjYzMTY3TDUuNzc3NTMgMS41MDY2N0w1LjgyNjQ5IDEuNDYzNDRM'@; put 'NS44NjY1OSAxLjQzNTMxTDUuOTE2NTkgMS40MDcxOUw1LjkzNTM0IDEuMzk4MzNMNS45NzAyNCAxLjM4NDI3TDYuMDI2NDkgMS4zNjc2TDYuMDU0MDkgMS4zNjIzOUw2LjA4NDgyIDEuMzU3NzFaJyBmaWxsPSdjdXJyZW50Q29sb3InLz48L3N2Zz4='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=caret-hidden-right.d6655b4da13c436b.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTAnIGhlaWdodD0nMTAnIHZpZXdCb3g9JzAgMCAxMCAxMCcgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNMy4zMzMzNyAxLjg3NDk5QzMuMzMzMzcgMS40MzEyNCAzLjg0NjkyIDEuMTk5NDcgNC4xNzg2OSAxLjQ2'@; put 'NzE4TDQuMjIyNDQgMS41MDY3Nkw3LjM0NzQ0IDQuNjMxNzZDNy40MzcxMSA0LjcyMTQ1IDcuNDkwOTggNC44NDA3NyA3LjQ5ODk0IDQuOTY3MzVDNy41MDY5IDUuMDkzOTIgNy40Njg0IDUuMjE5MDUgNy4zOTA2NyA1LjMxOTI2TDcuMzQ3NDQgNS4zNjgyMkw0LjIyMjQ0IDguNDkzMjJMNC4x'@; put 'NzM0OCA4LjUzNjQ1TDQuMTMzMzcgOC41NjQ1N0w0LjA4MzM3IDguNTkyN0w0LjA2NDYyIDguNjAxNTVMNC4wMjk3MyA4LjYxNTYyTDMuOTczNDggOC42MzIyOEwzLjk0NTg3IDguNjM3NDlMMy45MTQ2MiA4LjY0MjdMMy44ODQ5NCA4LjY0NDc4TDMuODU0MjEgOC42NDU4MkwzLjgyMzQ4IDgu'@; put 'NjQ0NzhMMy43OTMyNyA4LjY0MjE4TDMuNzYyMDIgOC42Mzc0OUwzLjczNDk0IDguNjMyMjhMMy42Nzg2OSA4LjYxNTYyTDMuNjQzNzkgOC42MDE1NUwzLjU3NTA0IDguNTY1MUwzLjUyODE3IDguNTMxMjRMMy40ODU5OCA4LjQ5MzIyTDMuNDQyNzUgOC40NDQyNkwzLjQxNDYyIDguNDA0MTZM'@; put 'My4zODY1IDguMzU0MTZMMy4zNzc2NCA4LjMzNTQxTDMuMzYzNTggOC4zMDA1MUwzLjM0NjkyIDguMjQ0MjZMMy4zNDE3MSA4LjIxNjY2TDMuMzM2NSA4LjE4NTQxTDMuMzM0NDIgOC4xNTU3MkwzLjMzMzM3IDEuODc0OTlaJyBmaWxsPSdjdXJyZW50Q29sb3InLz48L3N2Zz4='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=caret-hidden-up.3bb9644a109505a8.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00zLjc2NDI1IDIuNDMwOTlDMy44MjE2NSAyLjM3MzYgMy44OTgwMSAyLjMzOTEzIDMuOTc5MDIgMi4zMzQwM0M0'@; put 'LjA2MDAzIDIuMzI4OTQgNC4xNDAxMiAyLjM1MzU4IDQuMjA0MjUgMi40MDMzM0w0LjIzNTU4IDIuNDMwOTlMNi4yMzU1OCA0LjQzMDk5TDYuMjYzMjUgNC40NjIzM0w2LjI4MTI1IDQuNDg3OTlMNi4yOTkyNSA0LjUxOTk5TDYuMzA0OTIgNC41MzE5OUw2LjMxMzkyIDQuNTU0MzNMNi4zMjQ1'@; put 'OCA0LjU5MDMzTDYuMzI3OTIgNC42MDc5OUw2LjMzMTI1IDQuNjI3OTlMNi4zMzI1OCA0LjY0Njk5TDYuMzMzMjUgNC42NjY2Nkw2LjMzMjU4IDQuNjg2MzNMNi4zMzA5MiA0LjcwNTY2TDYuMzI3OTIgNC43MjU2Nkw2LjMyNDU4IDQuNzQyOTlMNi4zMTM5MiA0Ljc3ODk5TDYuMzA0OTIgNC44'@; put 'MDEzM0w2LjI4MTU4IDQuODQ1MzNMNi4yNTk5MiA0Ljg3NTMzTDYuMjM1NTggNC45MDIzM0w2LjIwNDI1IDQuOTI5OTlMNi4xNzg1OCA0Ljk0Nzk5TDYuMTQ2NTggNC45NjU5OUw2LjEzNDU4IDQuOTcxNjZMNi4xMTIyNSA0Ljk4MDY2TDYuMDc2MjUgNC45OTEzM0w2LjA1ODU4IDQuOTk0NjZM'@; put 'Ni4wMzg1OCA0Ljk5Nzk5TDYuMDE5NTggNC45OTkzM0w1Ljk5OTkyIDQuOTk5OTlIMS45OTk5MkMxLjcxNTkyIDQuOTk5OTkgMS41Njc1OCA0LjY3MTMzIDEuNzM4OTIgNC40NTg5OUwxLjc2NDI1IDQuNDMwOTlMMy43NjQyNSAyLjQzMDk5WicgZmlsbD0nY3VycmVudENvbG9yJy8+PC9zdmc+'@; put 'Cg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=caret.65f1fc0acbe4c7ff.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+LmNscy0xe2ZpbGw6I2IzYjNiMzt9PC9zdHlsZT4KICAgIDwvZGVmcz4KICAgIDx0aXRsZT5DYXJldDwvdGl0bGU+CiAgICA8cGF0aCBj'@; put 'bGFzcz0iY2xzLTEiIGQ9Ik02LDlMMS4yLDQuMmEwLjY4LDAuNjgsMCwwLDEsMS0xTDYsNy4wOCw5Ljg0LDMuMjRhMC42OCwwLjY4LDAsMSwxLDEsMVoiLz4KPC9zdmc+Cg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=check.a7e64bde18502408.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNMy4zMzMzNyA4LjAwMDAyTDYuNjY2NzEgMTEuMzMzNEwxMy4zMzM0IDQuNjY2NjknIHN0cm9rZT0nY3Vy'@; put 'cmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=checkbox.eaf82435cbb56ee2.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNNSA4TDcgMTBMMTEgNicgc3Ryb2tlPSdjdXJyZW50Q29sb3InIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcg'@; put 'c3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcvPjwvc3ZnPgo='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=chip-close.e00f6d71fe656f88.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNMTIgNEw0IDEyTTQgNEwxMiAxMicgc3Ryb2tlPSdjdXJyZW50Q29sb3InIHN0cm9rZS1saW5lY2FwPSdy'@; put 'b3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcvPjwvc3ZnPgo='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=collapse-off.6f8cbb2e643a5a85.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNNC4zMzMyNSA4SDExLjY2NjYnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91'@; put 'bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=collapse-on.5fe5cce3bf64e837.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGNsaXAtcnVsZT0nZXZlbm9kZCcgZD0nTTcuNDk5ODggMTEuNjY2N0M3LjQ5'@; put 'OTg4IDExLjk0MjggNy43MjM3NCAxMi4xNjY3IDcuOTk5ODggMTIuMTY2N0M4LjI3NjAyIDEyLjE2NjcgOC40OTk4OCAxMS45NDI4IDguNDk5ODggMTEuNjY2N1Y4LjUwMDAySDExLjY2NjZDMTEuOTQyNyA4LjUwMDAyIDEyLjE2NjYgOC4yNzYxNiAxMi4xNjY2IDguMDAwMDJDMTIuMTY2NiA3'@; put 'LjcyMzg4IDExLjk0MjcgNy41MDAwMiAxMS42NjY2IDcuNTAwMDJIOC40OTk4OFY0LjMzMzM3QzguNDk5ODggNC4wNTcyMyA4LjI3NjAyIDMuODMzMzcgNy45OTk4OCAzLjgzMzM3QzcuNzIzNzQgMy44MzMzNyA3LjQ5OTg4IDQuMDU3MjMgNy40OTk4OCA0LjMzMzM3VjcuNTAwMDJINC4zMzMy'@; put 'NUM0LjA1NzExIDcuNTAwMDIgMy44MzMyNSA3LjcyMzg4IDMuODMzMjUgOC4wMDAwMkMzLjgzMzI1IDguMjc2MTYgNC4wNTcxMSA4LjUwMDAyIDQuMzMzMjUgOC41MDAwMkg3LjQ5OTg4VjExLjY2NjdaJyBmaWxsPSdjdXJyZW50Q29sb3InLz48L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=favicon.ico; filename filecode temp lrecl=96132; data _null_; file filecode; put 'iVBORw0KGgoAAAANSUhEUgAAApgAAAJ6CAYAAACMvTJAAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUk8kWnr+kEBJaIAJSQm+CFOnSe0c62AhJgFAiJAQVO7Ko4FpQEQFR0RUQRdcCyKIidmUR7P1hQWVlXSzYUHmTArq+dt49Z/75cufeO9+d3JkzA4CiNSsnJwtVAiCbnyeICvBmJiQmMUmP'@; put 'AAY0AB0YAiUWW5jjFRkZCqCM9X+XdzcAIu6vWopj/ev4fxVlDlfIBgCJhDiFI2RnQ3wYAFydnSPIA4DQBfUGc/NyxHgIYlUBJAgAERfjNClWF+MUKZ4ksYmJ8oHYEwAylcUSpAGgIObNzGenwTgKYo7WfA6PD3E1xO7sdBYH4nsQT8rOngOxIhli05Tv4qT9LWbKeEwWK20cS3ORCNmXJ8zJYs3/'@; put 'P5fjf0t2lmhsDn3YqOmCwChxznDd6jPnhIgxFeJ2fkp4BMQqEJ/ncST2YnwnXRQYK7MfZAt94JoBBgAo4LB8QyDWgpghyoz1kmFblkDiC+3RcF5eUIwMpwjmRMnio/n8rPBQWZyV6dygMVzDFfpFj9mk8vyDIIaVhh4uSI+Jl/JET+fz4sIhVoC4R5gZHSLzfVCQ7hM+ZiMQRYk5G0L8NlXgHyW1'@; put 'wdSzhWN5YVZslmQuWAuYZ156TKDUF0vgChNCxzhwuL5+Ug4Yh8uPlXHDYHV5R8l8i3OyImX2WA03KyBKus7YAWF+9JjvlTxYYNJ1wB5lsIIjZXO9y8mLjJFyw1EQCnyAL2ACEWwpYA7IALzuwZZB+Es64g9YQADSABdYyjRjHvGSET78RoMC8CdEXCAc9/OWjHJBPtR/GddKv5YgVTKaL/HIBE8h'@; put 'zsY1cXfcFQ+FX0/YbHEn3HnMj6k4NivRj+hLDCT6E83GebAh6yzYBID3b3QhsOfC7MRc+GM5fItHeEroJTwiXCf0EW6DOPBEEkVmNZtXKPiBOROEgT4YzV+WXcr32eHGkLU97o27Qf6QO87ANYElPgVm4oV7wNzsofZ7hqJxbt/W8sf5xKy/z0emVzBXsJexSBn/Z3zGrX6M4vPdGnFgH/KjJbYS'@; put 'O4Sdw05iF7B2rAUwsRNYK9aFHRPj8Up4IqmEsdmiJNwyYRzemI11o/WA9ecf5mbJ5hevlzCPOy9PvBl85uTMF/DS0vOYXvA05jKD+GyrSUxbaxsnAMRnu/ToeMOQnNkI4+I3XW4HAM4lUJn2TccyAODoUwDo777pDF7Dcl8HwLEetkiQL9WJj2NAABSgCHeFBtABBsAU5mMLHIAr8AR+IBhEgBiQ'@; put 'CGbBFU8H2ZDzXLAQLAPFoBSsA5tAJdgGdoJ6sA8cBC2gHZwEZ8El0AOug7uwLvrBCzAE3oERBEFICA2hIxqILmKEWCC2iBPijvghoUgUkogkI2kIHxEhC5HlSClShlQiO5AG5FfkKHISuYD0IreRh8gA8hr5hGIoFVVFtVFjdDLqhHqhIWgMOhNNQ3PRArQIXYNWoLXoXrQZPYleQq+jfegLdBgD'@; put 'mDzGwPQwS8wJ88EisCQsFRNgi7ESrByrxZqwNvg/X8X6sEHsI07E6TgTt4S1GYjH4mw8F1+Mr8Yr8Xq8GT+NX8Uf4kP4VwKNoEWwILgQgggJhDTCXEIxoZywm3CEcAbum37COyKRyCCaEB3hvkwkZhAXEFcTtxL3EzuIvcTHxGESiaRBsiC5kSJILFIeqZi0hbSXdIJ0hdRP+kCWJ+uSbcn+5CQy'@; put 'n1xILifvIR8nXyE/I4/IKckZybnIRchx5ObLrZXbJdcmd1muX26EokwxobhRYigZlGWUCkoT5QzlHuWNvLy8vryz/DR5nvxS+Qr5A/Ln5R/Kf6SqUM2pPtQZVBF1DbWO2kG9TX1Do9GMaZ60JFoebQ2tgXaK9oD2QYGuYKUQpMBRWKJQpdCscEXhpaKcopGil+IsxQLFcsVDipcVB5XklIyVfJRY'@; put 'SouVqpSOKt1UGlamK9soRyhnK69W3qN8Qfm5CknFWMVPhaNSpLJT5ZTKYzpGN6D70Nn05fRd9DP0flWiqolqkGqGaqnqPtVu1SE1FbUpanFq89Sq1I6p9TEwhjEjiJHFWMs4yLjB+DRBe4LXBO6EVROaJlyZ8F59orqnOle9RH2/+nX1TxpMDT+NTI31Gi0a9zVxTXPNaZpzNWs0z2gOTlSd6DqR'@; put 'PbFk4sGJd7RQLXOtKK0FWju1urSGtXW0A7RztLdon9Ie1GHoeOpk6GzUOa4zoEvXddfl6W7UPaH7B1ON6cXMYlYwTzOH9LT0AvVEejv0uvVG9E30Y/UL9ffr3zegGDgZpBpsNOg0GDLUNQwzXGjYaHjHSM7IySjdaLPROaP3xibG8cYrjFuMn5uomwSZFJg0mtwzpZl6mOaa1ppeMyOaOZllmm01'@; put '6zFHze3N082rzC9boBYOFjyLrRa9kwiTnCfxJ9VOumlJtfSyzLdstHxoxbAKtSq0arF6OdlwctLk9ZPPTf5qbW+dZb3L+q6Nik2wTaFNm81rW3Nbtm2V7TU7mp2/3RK7VrtXUyymcKfUTLllT7cPs19h32n/xcHRQeDQ5DDgaOiY7FjteNNJ1SnSabXTeWeCs7fzEud2548uDi55Lgdd/nK1dM10'@; put '3eP6fKrJVO7UXVMfu+m7sdx2uPW5M92T3be793noebA8aj0eeRp4cjx3ez7zMvPK8Nrr9dLb2lvgfcT7vY+LzyKfDl/MN8C3xLfbT8Uv1q/S74G/vn+af6P/UIB9wIKAjkBCYEjg+sCbQdpB7KCGoKFgx+BFwadDqCHRIZUhj0LNQwWhbWFoWHDYhrB74Ubh/PCWCBARFLEh4n6kSWRu5G/TiNMi'@; put 'p1VNexplE7Uw6lw0PXp29J7odzHeMWtj7saaxopiO+MU42bENcS9j/eNL4vvS5icsCjhUqJmIi+xNYmUFJe0O2l4ut/0TdP7Z9jPKJ5xY6bJzHkzL8zSnJU169hsxdms2YeSCcnxyXuSP7MiWLWs4ZSglOqUIbYPezP7BceTs5EzwHXjlnGfpbqllqU+T3NL25A2kO6RXp4+yPPhVfJeZQRmbMt4'@; put 'nxmRWZc5mhWftT+bnJ2cfZSvws/kn56jM2fenN4ci5zinL5cl9xNuUOCEMFuISKcKWzNU4XXnC6Rqegn0cN89/yq/A9z4+Yemqc8jz+va775/FXznxX4F/yyAF/AXtC5UG/hsoUPF3kt2rEYWZyyuHOJwZKiJf1LA5bWL6Msy1z2e6F1YVnh2+Xxy9uKtIuWFj3+KeCnxmKFYkHxzRWuK7atxFfy'@; put 'Vnavslu1ZdXXEk7JxVLr0vLSz6vZqy/+bPNzxc+ja1LXdK91WFuzjriOv+7Geo/19WXKZQVljzeEbWjeyNxYsvHtptmbLpRPKd+2mbJZtLmvIrSidYvhlnVbPlemV16v8q7aX61Vvar6/VbO1is1njVN27S3lW77tJ23/daOgB3Ntca15TuJO/N3Pt0Vt+vcL06/NOzW3F26+0sdv66vPqr+dINj'@; put 'Q8MerT1rG9FGUePA3hl7e/b57mttsmzasZ+xv/QAOCA68Mevyb/eOBhysPOQ06Gmw0aHq4/Qj5Q0I83zm4da0lv6WhNbe48GH+1sc2078pvVb3Xteu1Vx9SOrT1OOV50fPREwYnhjpyOwZNpJx93zu68eyrh1LXT0053nwk5c/6s/9lT57zOnTjvdr79gsuFoxedLrZccrjU3GXfdeR3+9+PdDt0'@; put 'N192vNza49zT1ju19/gVjysnr/pePXst6Nql6+HXe2/E3rh1c8bNvlucW89vZ91+dSf/zsjdpfcI90ruK90vf6D1oPYfZv/Y3+fQd+yh78OuR9GP7j5mP37xRPjkc3/RU9rT8me6zxqe2z5vH/Af6Plj+h/9L3JejAwW/6n8Z/VL05eH//L8q2soYaj/leDV6OvVbzTe1L2d8rZzOHL4wbvsdyPv'@; put 'Sz5ofKj/6PTx3Kf4T89G5n4mfa74Yval7WvI13uj2aOjOSwBS3IVwGBDU1MBeF0HAC0R3h16AKAoSN9eEkGk70UJAv8JS99nEnEAoM4TgNilAITCO0oNbEYQU2EvvnrHeALUzm68yUSYamcrjUWFLxjCh9HRN9oAkNoA+CIYHR3ZOjr6ZRckexuAjlzpm08sRHi/324mRt2XRobAD/JPCotuA2JA'@; put 'n4YAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y'@; put 'Mi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY2NDwvZXhpZjpQaXhlbFhEaW1lbnNp'@; put 'b24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj42MzQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KSHKtHgAAABxpRE9UAAAAAgAAAAAAAAE9AAAAKAAAAT0AAAE9AACKlRxL/UIAAEAASURB'@; put 'VHgB7L0HgNxmeqb5FVChIzuRTTZzzlESRUVSFCUqzIwmjyZnx71zWO96b89h7b31ede+27O9DjOe8eSo0USlURxpGESKYhBzzqFJdrNzqADg3g/FoppUk6zuQlWjUC+kZmXgx/OjUC++GFq25v2OcCEBEiABEiABEiABEiABjwiEKDA9IsnVkAAJkAAJkAAJkAAJuAQoMHkgkAAJkAAJkAAJkAAJ'@; put 'eEqAAtNTnFwZCZAACZAACZAACZAABSaPARIgARIgARIgARIgAU8JUGB6ipMrIwESIAESIAESIAESoMDkMUACJEACJEACJEACJOApAQpMT3FyZSRAAiRAAiRAAiRAAhSYPAZIgARIgARIgARIgAQ8JUCB6SlOrowESIAESIAESIAESIACk8cACZAACZAACZAACZCApwQoMD3FyZWRAAmQAAmQAAmQ'@; put 'AAlQYPIYIAESIAESIAESIAES8JQABaanOLkyEiABEiABEiABEiABCkweAyRAAiRAAiRAAiRAAp4SoMD0FCdXRgIkQAIkQAIkQAIkQIHJY4AESIAESIAESIAESMBTAhSYnuLkykiABEiABEiABEiABCgweQyQAAmQAAmQAAmQAAl4SoAC01OcXBkJkAAJkAAJkAAJkAAFJo8BEiABEiABEiABEiAB'@; put 'TwlQYHqKkysjARIgARIgARIgARKgwOQxQAIkQAIkQAIkQAIk4CkBCkxPcXJlJEACJEACJEACJEACFJg8BkiABAJBwHEcMc2QmGFbwtGQhCM27ockEnMkHBOJRHGL52OVtlRW2VJW5UhZpT7W53G/PCTRCkdC+O+GC162EiL9vY4k4yGJ9+OvRx+HpKcTt90hSeA5Ky6SSuI+3qvvTyUMsZL4DJ6z'@; put 'UrqFm2znhoPgiyRAAiTgbwIUmP6eH46OBEgAOiwCsRgpE4mVO64grKjCfQjDimo8rtDnRaJ4LVrmuILSjAhEo4hpiBhh/BkG/iDp8E9IHLHtNFbbdtw70KaiAhUvZbdgTFgdVog7+r/7l34yvQUR27Lxh1tszMF2kokQBCfEJv5SEKb9EKAJiNI4/vp7DOntdiBUcb/r8nN9+j5DUimIXt0AFxIg'@; put 'ARIoIgIUmEU0WRwqCQSVQCjkSLlaFGFBrKh1ZFSDI1U16fsV+jwEZQRWyDCskZGwIWYEMi6juSAKIeH0H1ckqk7URUXdFb145U76tYL9e3mMeuPeNdJPGHqL/43LAlXHo0N0LAeC0oYYtcVSyyj+etU62mVId4dIT7uBPzwHS2lPZ0iSeN1x0uvUdXAhARIgAb8QoMD0y0xwHCQQeAJqXRRYHW2p'@; put 'qheprrelpt6RStxW1YorLqNwU0diEJBwdeuiVkUHwtG1NEIwXjY8ptVYUHmltSesrek7KkYzQlRFqA2LZjKekr5uQ/p6HAhPU7pbRbouhaSzNS1A1U2fhBv+pu7+oDLkfpEACYw4AQrMEZ8CDoAEgkfAhFtahaRaIkc12lI7xpHqBkuqa+DOhkUyVhZ24yPThkeISFju1PLoCsmRsjYWyzRcNlhe'@; put 'EZ5m2hKq2Ky4Lf39DuJARbph6Wxvgei8gFv86WMVpY59eQXFsr8cJwmQQFESoMAsymnjoEnAHwTUwhhBvGNlLayREJH14yAqxzpSOxqJNDVIoIFFUt3Zqh4zlkiKyDzOnWpHuN3VABxCgpMbD4r7qbiFWE+Izg5HOi4Y0nbelLaLAvEJiydc7bZF0ZnHWeGqSaAkCVBgluS0c6dJYHgEDI2VRGJN'@; put 'TaMjDeNtaWiCoMT9asRLRitMJNVArMAsqRZJ5LjAJElz5PBIe/wpFZwqPDE/IVg89b4FV3tfry29bQ7EpiGtZwy51GxAgGrSEWM7PZ4Bro4ESo4ABWbJTTl3mASyJ2AY6tqGmISQHD0RgnICXN6Imyyv1jJABvQjxCSECvQkxWT2WP3zTgjO8GXRqZbPVMKCGx1WTrjW284ZcvEUROc5uNcvocQS'@; put 'Xev+mTeOhASKgAAFZhFMEodIAoUiYJrpDO6GCbY0TlFBaSMZR7O7w9AfaTe3pdnZapmkcbJQ01K47ailE4LTtXSmIxtgzbSksw1CExbOC8dD0noWVk4kFdmWW6ipcGPjlkiABIqKAAVmUU0XB0sC3hIIwUJZhfjJMRMdaZzqyGgIylGjYaGshB/VdXUjfk/FJF3d3oIvprUNtHIiL70PgrPrkrgu'@; put '9fPHDWk5bbgC1EHNTy4kQAIkkCFAgZkhwVsSKAkC6cLkGj85biqslPirHWMj49uE5QqSEiIhpVXIr9QDKgko3MmhEMBxEtaC9e41iNbptKTjvMgFuNObj4Wk5YyJgvHIVqeFeyhU+V4SCBwBCszATSl3iASuJqBWyuo6WCinODJ+puXGUlbVaXccLVmD0jZaIogWyquh8VH2BNTCibR1vUDRxCHN'@; put 'VG89G5LmI6ach0u9HQlEzFLPHiffSQJBIUCBGZSZ5H6QwAACZlhLBjkybrolTbNsqUctysoaFKeE21sLdWscJWMoBwDjXW8IZGI4VXAiaSgO6+YlZKU3Q2g2HzZh3Uz3aUekpzfb41pIgAR8S4AC07dTw4GRwNAIRNFGsX6CJRNm2tI0A7UoUT6orNx0M73VskQr5dB48t0eEBhg3Uyh/WUnug2p'@; put 'G/2Mis0T6l6H0GSrSw9AcxUk4D8CFJj+mxOOiASyIqBFzmNlIg0oHzRxliXjYamsGYNWi1HUMITrW3ta00qZFUq+qRAEoCU1O91AAXgLsb49bbacg8g8cwCudIhOt8sQxWYhZoLbIIGCEKDALAhmboQEvCNgRhwZo5bKOY4rLGsaL4tKTdDR6uZMrvAONteUNwIG3OgmxKbmlHWh2PuF4yKnDkJs'@; put 'InaztwebpdjMG3uumAQKQYACsxCUuQ0SyJGAgfqUdYipnDQbwnK2dtBBi8YyJOlQVOZIlh/3A4EQxKYmCmlocNclWDaPGXJ6ryHnjpuS6NMRMmbTD/PEMZDAUAhQYA6FFt9LAgUkoIXNq2odCEpLpsyH1XKSjXaMSNWl+7uAs8BNFZpAxrJpIcRDOwqdOWjIyX3oKoRC71aCQrPQ88HtkcBwCVBg'@; put 'DpccP0cCeSDgxlWWizRNs2TyAhtlhWypqjHh9XYQUwnzDssJ5YE6V+lLAtCSrtiEZTMZt6UFpY9O7Ydlc78p7RCejkWx6ct546BI4DIBCkweCiTgAwLqAteC51MX2jJhnpYVciQcNhBTCWnpNvr2wSA5BBIYKQLQkvp9EPzf3+Wg7JHI8V2mnD1sSH+vCk2KzZGaGm6XBK5HgALzemT4PAnkmYBa'@; put 'K8sqHNSpdGTGopQ0ThOpqEIcGuIqLSbr5Jk+V1+sBNxe6UgO0koJHS0O3OchObHHlEvokW7Rqlms08pxB5AABWYAJ5W75G8C2lmnZowjUxdZMnW+JbVjUboF5VtYq9Lf88bR+Y+Aljwy4UKP99pyHiWPju40ELMZln7NQqdV038TxhGVFAEKzJKabu7sSBIIwQ3eiESdOStSMnEmrJfV6SxwWitH'@; put 'cla47UAQ0ILul62a7RccOYEMdHWht51nT/RAzC93oigJUGAW5bRx0MVCwE3agRt84hxbZt1iSeNkR6IxxlYWy/xxnMVHIGPV7O9x5PiekBzZhtqap/RijnGaxTebHHExE6DALObZ49j9S0BLDNU4Mg1u8BnLbNSwRH5CyJBkEgGWLITu33njyAJDQGM1IxFD4nFLLsB9fnir6RZyj/fCeR6i2AzM'@; put 'RHNHfEuAAtO3U8OBFSMBrV1ZN9aWGbfYMm2hJdUNJmIrbbG1xBAXEiCBwhOAlowgA11LfV06J3L4LVOOvRWSng6kpDNOs/DzwS2WDAEKzJKZau5oPglo4s6YyYivvM2SSXNtZIObkoSwZImhfFLnuklgaARc9znEZmeL5cZoHt5uSPsFjdOkRXNoJPluErg5AQrMmzPiO0jgugS0fuW4GZbMXY4W'@; put 'jkjciZWjtV0S9VNYEP26zPgCCYw0AW1NqVbNnk5LTqJT0MHNprSgU5BjU2iO9Nxw+8EhQIEZnLnknhSQgAlhOXGOJXPusKVpqiXhSJjxlQXkz02RgCcEEKcZRZxmX68lZw+FZP8bYTl/3EAtWgpNT/hyJSVNgAKzpKefOz9UAmbYlsnoCz5vhSVjpkBYmhSWQ2XI95OA7whonGYUYS1ICDp7JCQH'@; put 'NoflDLoEUWj6bqY4oCIiQIFZRJPFoY4cgbSwtGXuClvGTnXcLFRN3mFG+MjNCbdMAp4TUKEZMSWVTKEdZVj2bwrJ6QNI1KNF03PUXGHwCVBgBn+OuYc5EDBNWyaiN/j8OwcIS42x5EICJBBcApeFpjZBaD4Wkn2vG3IKQpMWzeBOOffMewIUmN4z5RoDQECTdybOtGT+PbaMmwaLpbZypLAMwMxy'@; put 'F0hgCAQgNMOwaFpWSs4dMmXvJkPOHqbQHAJBvrWECVBglvDkc9ffSUDbOTZNsWXePSlkhdtu8k6KxdHfCYrPkEApEbgsNNV1fvqQIfs3huUckoHYHaiUDgLu61AJUGAOlRjfH0gCBupY1jfZsuDelEyeq+0cEfBPYRnIueZOkcCwCVx2nSeQDHTqQEj2rtfyRrBosrzRsJHyg8ElQIEZ3LnlnmVB'@; put 'QDvGVY+GsLwrJdOWoEB6BepYJtjOMQt0fAsJlC4BnDeiyDrv67FRsF1kz+th6WDB9tI9HrjngxKgwBwUC58MPgFHyqscmYNyQ3NQJL26lgXSgz/n3EMS8JjA5Tqa3SjYfuhNuM5RR7OnHeqTLSg9Bs3VFSMBCsxinDWOOScCkYgjU5elZCEywxuaDLZ0zIkmP0wCJJDpDNR20ZZ9KG10ZFtY+ntD'@; put 'bjkz0iGBUiVAgVmqM1+C+62Z4ePR1nHRKiTyTLPdbo52yilBEtxlEiCBfBAw0ILSRAvKCydt2bXOlFP7kIGeUosmFxIoPQIUmKU35yW3x6GQIzWNtixamZRpC1F2BLFTKY2z5EICJEACeSBgov2kbdtyen9Idr8Wlovoc85EoDyA5ip9TYAC09fTw8HlQsBxHKmoEpm9IiXz7rCkahQTeHLhyc+S'@; put 'AAkMgQAMl9oVqK/PkiNbDdm70ZSuNgMroEVzCBT51iImQIFZxJPHoV+fgBl2ZPI8SxbfZ8no8Yak0JHDsegOvz4xvkICJJAXApcTgdouWrJnvSFHtkckmaDIzAtrrtRXBCgwfTUdHEyuBNQdXj/OlsWrbZk83xIjZCAGiq0dc+XKz5MACeRGQOMz9e/sEZGdvzJZqD03nPx0ERCgwCyCSeIQb05A'@; put '3eFllSJz1R1+J93hNyfGd5AACYwEAY0B10Lth+E2370+LN1tas2kRXMk5oLbzC8BCsz88uXaC0DAzQ5HW8clq1Mybgrd4QVAzk2QAAnkQgChmFHEZ7Zd0GxzuM13hMVKUmTmgpSf9R8BCkz/zQlHlDUBR6rqHJQdSsmspbaYUbjDk3SHZ42PbyQBEhhRAuoy125iJw/Abf5KBG0nQ+I4FJojOinc'@; put 'uGcEKDA9Q8kVFZKAGbZl6mJYLZHEUz/WcF1OwhyeQk4Bt0UCJOARgXAM2eZdlux93ZR9aDuZ6KPI9AgtVzOCBCgwRxA+Nz10Anq1XzPGkqX3Q2AugrUSotJmdvjQQfITJEACviKg3YDCpoHkH1t2vBRmEpCvZoeDGQ4BCszhUONnRoSAiRaPs27RTjwpqalnTcsRmQRulARIIK8EwijSHo/bcvAN'@; put 'Q/agG1BPl8GWk3klzpXniwAFZr7Icr2eEXBLD421ZemDFmpbwmhpO7RaekaXKyIBEvAdgcu1M5vRcnL7iyhpdNTEOY9uc9/NEwd0QwIUmDfEwxe9IKACMYzC52ZYxIg6KMiRPlGqUEyhT6+N7Ekrpd7ud55ATbx/1rIUYi1TSOgJSxLlPbiQAAmQQCkQ0JaTyYQjBzZnrJmaFPTO82QpsOA+Fh8B'@; put 'CszimzMfj9iRylr0/R5tS22j9v9Glne1LVG0aywrg7iEiztk4A/Fz1VLhhBCaaHDTjIBl1CfSH9XSLo6DOlqEem4COGJ1xfcjVjL+bBYYq/ZicfHU8+hkQAJ5IfAZWvmeVgzt72I2Myj6GtOa2Z+WHOtnhKgwPQUZ+mtLFpmy+iJtjTNsGTsFJFRDSh4XoVg9bD23H3bne0meOMf93YAJvdaXPUm'@; put '7hiGxhrph0SSKQslh9DLN3a5E8+1HxywDt4lgaESuMoIdPmBeyzqiq7cuclaBx7PKPR/ZRn4/JUneYcEciOg1sxEwpYDGw3ZtT4i8d5sD9TctstPk8BwCVBgDpdcCX/OMEUap6RkynxbJs52pLpeRAPTNZs7pRndcH3nurg60/0n1zXx80En4P7MwsqjC65R8A9a8qlKTBvK3edV/zn6HyIsbJjG'@; put 'bbQPtS0cs3jBsWEtx3Fr41at5LbWIbzJIaxGeC3w795ie2qZN3S7JuqxYhAGLrBC+J5oOEh6fFilrlPH4W7THVD6q6KPb7I9dyf4DwngGIvgXHv2iCNbnzel5TSOYRy3XEjAjwQoMP04Kz4dU7TclikLLZl9K6yW421YFxETicLmdF37dMICMqy0QIN4U8GoVu6McIQosyAWk8i41RjeOGoHpuIh'@; put '3DrS3yuoJYjQix48j+cSsPYk+/FcHJ9BSEYqhYuhBGJ/ITjVUu4gBsO9LsI67SzCfF2LOwSkKkYznB6bhoBEEGdsRnDBFcNfFBb4Mlj08RetwB/CRGIVCBep1Pvpx5EY4pNjKhqwDl0PVuxqTR2PCmGNDdGteHDRll4T/w0CAW032d9tyVu/NhGfaeJYxpeCCwn4jAAFps8mxI/DiZZZKA9ky5wV'@; put 'ttShqLmNHzsLFqCbWXn8uC8ck38JuJ5qWGhMtQhqhxNXQDoQhRCREId9PRCOiNPt6dA/Q3o7Q9Lbhdjd7hAEZVpAppAwZkNspmMt/Luvhlo8kfgWU6FZrqJTpHwUYpjxV1GTvtX7KkzLIEo1VCQMAeooJFcEqwUWd9L/+3dHObK8EdDviH5XTuwTWDPD0n4RIhPHAxcS8AsBCky/zIQPx6Fuv2mL'@; put 'LVm80paG8WrtUdciz2A+nKqiGlLGZayu5BBEU0ZIxvtTEodY7IFw7LhgSMclke4WU7rbVVymrZBqqfS7ePRqMtRiG47ZUo4kuSokz2kC3Sgk0FXX6WMbVRVgES2DyID1U5lk3P9q7aTL3atZ8P96IugC1H7Rkm0vmHJyH3qaozIHFxLwAwEKTD/Mgu/G4Ej9OFtueTAlk7TuJMZnJyksfTdNRTCg'@; put 'a8WkKp8UEhXUha2WyI6WkLRdCEknqgZ0tqhVEglecYMC6SZzayL+s0ItnhCdtWNQsWEc/hosiE9YPKu1aoOJUAKITjgaUrgwFFg7+Q2+CdQiflljfh3EU+zdZMquX6HtJC7IWM6oiCc0IEOnwAzIRHq1GyHDlnl32LL4viR+wMKIacsiIM2rjXM9RU/AFZSXW95p/VONdezvtaX7kiFtEJGtZwxp'@; put 'P49yVK1wa+NH0GK5FQ/nPO1uV+tmLRoT1EN06m3NaJEKiM4o3OyaAOVgTjR2VWt/UXR6iH+kV4UvXxSxmWeQAPTmLw0kAJm4UKM1c6SnpZS3T4FZyrM/YN/VvlGF2K/lj6ZkxmK1euAZjfHiQgI3IKA/X24smFuWynETbrphheyAiGyBmLx0FsKyGS7ubtNNqLnBqvhSPgjAYhxDfGdVHcJcmhxp'@; put 'QEmxBngnqhs07lNj+C7HVKuVk4IzHzNQ8HVqAlBvpy1bXzLk2A4YCRCXzIUERoIABeZIUPfbNmFpapxky13vs6RhgiZL0Grptynyy3jcn6rLFkoNntQMbo2RbD0bkgsnDdwidhLxk5rRzcWfBExkv1fUWq6Fc8zkdEUIbYxQVmWIaaqrFRZOCk5/Tl6WozLwHdXv5wG4zHfAZd6L5Di6zLOEx7d5'@; put 'RoAC0zOUxbkidWNORj3LOx9LIYsVLkvEx3EhgYEEtCyQCg+9TSEWt6fTkfZzITl33ICoRBzlRRMlgSgoBzIrpvuamF4Jt7paOMdMsWTMZEfqxtjIXtc5h4XTrRnKGM5imlN3rJjXjMt8y7Ome/FHl3nRzWJRD5gCs6inL7fBa5b4zFtTcsejlphRLe9Cl3huRIPxaVcqagZzGDFc+K+/N+VaJZsh'@; put 'KM8fxw/VGS0PRItIMGb7nXuhFk51qY+BV6NpOiycuK2qD0GspJOG1LqpyUNcioOAusy72y2UMorI8d3aGY0Xg8Uxc8U/SgrM4p/DYe2BistZt1ly57tR90UD/xlvOSyOQfmQ/uRkYiltCAi1UraeCsmZo6Y0Hwu55YLQvZNLCRKIlaeThZpm2DJuakrqmxC/WYEsdZg+U3pQMHbT90eFusy1g9Tu'@; put '9cgyfzWM2rIUmb6ftAAMkAIzAJM41F3IWC7veg9+HLR+HmKuuJQegbSoRNwdalFqUldXqy0X4fI+fcB04ym722mlLL2j4sZ7rO0xR9U7Mg6WzfGzYN2cYKM4PDoQIYQilaTYvDG9EX4VhoQIkvGO77Vly7Nh6URlB1TuH+FBcfNBJkCBGeTZHWTfNOZyygJb7v1gUgwUaKblchBIAX7KFZUaUwn3'@; put 't4rKbojKc8cMOX3QkIsn0vXzArz73DVPCaTrcI6basnEOY6MRfxmZQ36sFNsekrZ65VpYfbWs7Zsetp0Q14c9jL3GjHXd5kABWYpHQoQl2MnOXL/J+MoXaLB+7RclsL0uzaKyzGV6v7uaHPkAuIpT+6FqDxJUVkKx0Ah9rGyxpax0yyZNEBsapKQRTd6IfAPaRtmxEAdWlveRPefI1vDaP9LS+aQ'@; put 'APLNWRGgwMwKU/G/SZM1RiFTdM2nU1LXxGzx4p/Rm++BZgebl+tTakzlRZQROr43JM2Iq+zthOLkQgJ5IqDF3sfPdCA2kzJ6CiydVZowph3BkCCUp21ytUMjoDHX2jJr16uGvPVahMk/Q8PHd2dBgAIzC0hBeEsk4sg9H0rI9KUG61wGYUKvsw9qhwjBRWmERRL9trSeFjm535BT6FHc2UpReR1s'@; put 'fDpPBDQkR/unT5pny+R5joxusiVcpt4TaBvNRs/TdrnaLAnghBFBlvnhbSJvPIMLz27GXWdJjm/LggAFZhaQiv0tIdOWBXdZcvu7UMeQrR+LfToHHX/GWmkjYauzzZYz+005tgexVqdZlmRQYHyy4ARMXOSOmaB1d5Myaa4j1Sh9pNnNllo1qTQLPh8DNxhB7/rmo7Zs+ElE2tHSFZepA1/mfRIY'@; put 'FgEKzGFhK6IPwYIwZoIlD34uhStVZowX0czddKjuzwAyQzVZK9HjyPlTgjp3ppsF3oc6lVxIwK8EyqscmTgrJVMWatwm2lmWw6qJJHRaNUduxsJI/ulssWT9T8Ny/miYon/kpiIwW6bADMxUDr4jkZgtqz+eRJYnyojQejk4pCJ7VqWjgSB9/QXoanfkNKyVR3cY0oI2jbZFYVlk01nSwzVwAVyH'@; put 'UkfTITQnzUvJqAaEd+CiyUL3IFo1C39o6MVqsldkMzr/HN1hMvmn8FMQqC1SYAZqOq/eGa13Oef2FHqMj6xr3LW0wRWmrQa1OPOVnrj4BdGOIDZu1bXLgKyr5+/aR2k3eLq8UOsZR47tNOUEMsF72hlbeS0rPi4+AuXVSAqabcm0pZY0TtbYwLTQZCH3ws6lm/yD8/FbSP7ZieQfXrQWln+QtkaB'@; put 'GaTZHLAvmjVejbIhj/xGQirqDHEKXJJIxZDGV2kP6wQsp71d6GHdJRLvgTu3HyIT/0XLbYlWog9ytYi6zGJlKJeB2owpWC8oNtOT6Ypz6EcD2eCJXlvOomblkW2mnD0CS0OcwnLAIc+7ASGgsZpjJ1syY5lmoltSUYMMdD0lqFUzIPvo+93AiScCL8nezSJvPhfmucb3E+bPAVJg+nNech6Vdty4'@; put 'ZU1SlqyBEOlHcFOBFrVShiEq4wjcbzkpcuYQivmi1WBHiymJPtWNKpkGLhCWldodxIbVAnFZs21pQK3OCrSiS+oPCgRnKS5pYQkZDpHe22nLqQMhOYx6dRdP4ce2NJGU4mFQ0vusrQ3rxzkybbElUxdaUtOAbwXc5yx1VKDDQkUm4jKP77Ll9V9EpKdjgPepQEPgZoqbAAVmcc/fdUbvSM0YRx7+'@; put 'Yhw9g2G9VPdznhcVRG7xXojZ0/sMObAFYghFvG1YHoayqFu/fpwtM5ba+FFBTFY9+uZCrMKPPpTVFO17XWEJayXSsdDKzcHJPR0L1XaB1sqinVQOPGcClTXIPl+QkpmwajaMS3tH3OzznNfMFdyMgJthfsyWdU9GkATknqFu9hG+TgIuAQrMAB4Iar1ctiYlS9dI3q2XerpRo6QmnTQfdWT7S2Fp'@; put 'PmbmThXB/zWwas5HeaXpt8KVHkW5HRWaAV2Uo7rBVUZ3XLDlyM6wHNsRkq42D1gGlBl3q/QIxMrh5UAy0Jxb0Ad9CrwlmhCk9TRL4/pzxCZcM8zbmm1Z/yQMB2dwscse5iM2F8W0YQrMYpqtLMaqbqVR9Y489IW4VNZCsOTRxeyKS7hwraQjezaasvs1uLUT3lraQtBX49F+btnaFOKyUCQ+obVM'@; put 'sgBRJG95W1g6cqlZ5Og2Q44ieae3y1uORYKDwySBrAhEoojPnO3I7FuTMm6agXhBB0ITkecBOjdkBaKAbzJxkd+DGrsbfhqRs4fx20KRWUD6xbkpCszinLfrjjoE6+U8ZI7ficzxfMZeqjBy4wO7bdn8VERO7EHrmDwtmrBUhQxTFZmzb0FGvPrdi9yY6fKDxVLFcutZWw4hcefErrD0IQmKCwmQ'@; put 'QHYEwrgAHTsrKfOWO9I0UxNThCWOskM3rHe5ZYz6HNn48wjCdygyhwWxhD5EgRmwydYr+wc/l5CxU/LnUk6LS0O6ECO4Di6TC4i1LMQSiTmy8J6ULL7Pgi7DKIowLvOKsASwtnMQltvVFW5SWBbiAOI2AkvAxClonCs0YdmcEZKwCk26zvMy36EwEq0SjmxGdvmhNzXDnxfFeQEdgJVSYAZgEq/s'@; put 'Ar7nTXAnP/iZZLrTVx7cRa5Aglu865LIaz8KSwuymgu5hCO2zLvDklvWQmSqi6ZIfGLuKRgGyzCslpfOQ1hu1eSdMFzh7iuFRMhtkUBgCajQbJqZkrk4RzRNh9AMo8YuXeeez7dbKxO/L9teNGT3BnT9YYMHzxkHYYUUmEGYxcv7oMk9t61NyKL7EKuYh9JEaZEUkjg6Pbz6A4+SeYbBXy2Zi1al'@; put 'ZMkqxF1pzUyfL1q6yYSw7O2y5ehbpuxFvGp3G2MsfT5tHF4REzAhLLXkmZ4nxkxCTQZciGot4DxccxcxpRyHjgQrFfQ7Xg7JW1qQPcWL5RyJBu7jFJgBmtJYmSUPfTEp9eO1Vpz3p1I9fdhwTb/+c1MOb8tfzGU2UxKrsGXFuyyZdStiTX3aAjPdeQc1QeO2nNwVkj2vh+XSucJafLNhyfeQQFAJ'@; put 'RMscmb4UFs3bbZQ/Q0KihtWoRTOoO1zo/cKPQhgVRHb9GtbMFyIIS6DILPQU+Hl7FJh+np2hjA1lfRon2bIW8ZfaQcfrM6ieNkKwwh14QwUmApxGfEG2fIMjqz8BQT32cku5ER9TegCZLkY2Et5PHxbZs27krL0+QcJhkMCIEiivsmX2cr0gtd2C7W63MDg/KDQ9mBb8OLhdf14X2fJcRFJJikwP'@; put 'qAZiFRSYgZhGzei2ZeGdltz+Hu+zx93TBdwhbRcceenrUent9od7V0MCJs+zZeWH8xdzOpTDw+UEcW+A1cWTtuzeGJaTu7XYPE+4Q+HI95JAvgiMakAMN86TM2DVjKFbmK3dwqgyc8eNU5x2/dm/yZE3nmVrydyBBmMNFJjBmEe4KRy590MJmbbEkJTHLmOVR45hyIYfm3IEGc9+WlxX+buTMusW'@; put 'xJ16vN9D2U+NszTQIrPrki374Qo/iHqWiT5/CPGh7AffSwKlQGDMJEsWrrRkEmppmoj2YSKQN7OuXX8ObxWUMUJN5DjPf95QLd61UGAW79xdNfIyxCQ+8hsJGdWIgHYEs3u1uLY3WOTOHxd58ZuIsUn566QRQmjA2Cm23A9XebgMoy1w6SI3zhLCsr/fkWNvhWT3+jBEpr8YeXUscD0kECQCBs4d'@; put 'k+dbsuDelDSiiYPN+ExPptcVmdsui8x+ngs9gVqkK6HALNKJu3rY6N893pFH0XvcQI0yLwOLXIEJAfX6Tw05uHVkE3uu3ue3H8XKbbnjMe1THCqYFVO5uKU6oDDPHbaRRRlFq0yeTN+eFd4jgeIgEMX5Y/ZtllvaaFQd6gfTbZ7zxKnIPLLNkQ0/o7s8Z5hFvAIKzCKevMzQ1Yo3ZYElqz9uuW0b'@; put 'M8/neqsiyoGA0oLqv/xKFMXA/SmgDJQkmTTHklWPIxazAO3LXHc4Ep60Z7iWHDoM4Z1iiY5cDzd+ngRGlEDNGJQ1WpmSqQttiURRiYP1M3OaD4rMnPAF4sMUmAGYRk12WXhPUpY/Cgueh/Uv01Y6Qw7vcGT9kzHfktIad1V1jqz9VEJqkFGuPwz5WDLZ4cm4yBG4wzU7vJPu8Hyg5jpJYMQITJqL'@; put 'bmGrbGmcorGZ6ba0+TmjjNguFmzDaXe5g8ojYUnQXV4w7n7ZEAWmX2Yih3FoUeHbH0nK/Hu8F5haSXfTz0NyYIs/3eMZbNFyR5aDwdzbvXeTu2ECMN5qEs/FkyHZ/kpIzhz0N48MF96SAAkMnYC6zefekZL5K2wpH4WLVi3STpU5dJD4BEXmsLAF4kMUmAGYxnxlkKuwSsL1++I3TLl4yt+CykQW'@; put '/exbLcRi2ggT8K67jxsmgKDWODLCD2wOyT5kiMd5JR6Abw13gQRuTqBhvCVL70vJxHmGhEIoacQi7TeHNsg7IuUmzp+2bPqF1sn0Z6jVIMPmUzkSoMDMEaAfPq7i6sFPJ9CDFwXHE96IK1dY4Z+eDkH8ZUx6OvUZ/y4hw5GmGYhD/VjKLTviVaKTusW15/mR7SjT9DM/FJj37xxwZCQQRAImQpBm'@; put 'LLPQgjclo+qRbc4koGFNcxiJP26dzKcgMhmzPiyGxfYhCsxim7FBxhuOWvIIWkQ2TEif/AZ5y5CfcuWkFldvRoLPV6OS8HtNMyQ61Y+F0P5sQmKVGL1H5YpcgYn2mEd3hGT9T6JD5sgPkAAJBINAzWhLFt+fkukLQ6ggwd7mQ55VnJbDUVP2rNeOPyhyb9GSOWSGRfYBCswim7DBhhstt+ThL6Bl'@; put 'YlM6Vmiw9wz1ubTAFGk5HYLA1B6zfj8ZaOtIS9Z+JiWV9agF6lGiT8aCeQy9xNc9SYE51OOI7yeBIBHAmUVm3AKhiSLtNag5TGvmEGf3ssjc+Qp6l78chsh0f2mGuBK+vVgIUGAWy0zdYJz5FJitZ0Py3Ff8V2D9nTjSAvOhz6akoo4C8518+AwJkIBXBKrrbVn6QDJtzUR4DmMzh0BWRWbEkG0v'@; put 'iux8LUKROQR0xfZWCsxim7FBxps/gRmSjouOPPuvcJH7PrGFFsxBDg0+RQIkkCcCV6yZqzU2M31Ry0zzLGFDZJpmCH3LDdm7KQyBTktmluSK6m0UmEU1XYMPNl8CU6ty9HVrDGZMutp87iJHDGbDOEce+EweYjA1yectkQ0/8W8t0MGPDD5LAiSQbwJaoP2WB5MyZb6BhECtmwmLZr43GoT1I8Zf'@; put 'az9pjcwj2xGTaVNkBmFaB+4DBeZAGkV6Pxyx5aEvJNx+ul6X6LFwZfnSt01pPubvMkVXssg/jixyExPp0Rk+HYOJ7MctjrzxNGMwi/QrwmGTQF4JaC3iObdrbGZKyqohNFGgndbMmyPXdrsWGrCt+7EpJ/eYbsWOm3+K7ygWAhSYxTJTNxinlim6/xMJmTjHuzJFujm9ngxBrb3xnCN7N/hbXLl1'@; put 'MG9LyZ2PiaQS1g1oDe2ltMA0ZNevUWD9ZZYpGho9vpsESotA42RLbllrSdN0GDJZziiryTfCaI7R68jL3w/LeRgyKMyzwlYUb6LALIppuvEgzbAtd70/JbNvy0MnH/TcPrHbkVe/72/3sHbeWPHuJIqtG5KMeyswbduQN5833CLrN54JvkoCJFDqBMoqHFl8XxIWTUdMXJM62gWo1KHcZP9NJP30'@; put 'tNnyyncj0nIO4VgIS+JS/AQoMIt/DtHC0JFb1iRlyQMQmH0eiiuw0RNjb6fIc/8WlZ52f8Zh6ul7VH06/rKmwdte5GrBTCZM2fjTkBzf4+8wgQAcytwFEggMgelLUrLsAQvnJu1pjrMUVeYN59aMGnLprCO/+m5YOi6hc5LrQ7vhR/iizwlQYPp8grIZnsYfzkKbxHs+6EjKQ+udbjvjJt/8TLpN'@; put 'YjbjKfR7NP5p6iLd/xRin7zduu5/b6/Iq9+NysXT/hTY3u4x10YCJOAVgbqxttz2CFpNzoLItBGX6U2jNa+G57v1hGOmnDtky69+GJH+bp5vfTdBQxwQBeYQgfnx7WplGzvNkgeRQe31VZ8KLMH3XAuuP/81f/aRjVU6svKDCZmEfsGexl9i121kp3deMOSFb0alr8ul4cdDgGMiARLwKYFIzJYl'@; put '91sy73Y77TJnP/MbzlQELSWPbLdlw0+jCHfiOfeGsHz+IgWmzycom+G5LuJaWx75rYSUVyGD0aM2iZlt61fcMQy4iQ05vM1fbmIND5g4x5b7HkcqojvQzKhzv1XhrijPHRZ5+btltD7kjpRrIIGSJTBjqSXLHkxIdQ1a+mopI7rMr3ssqMjc/ZojW55nIfbrQiqCFygwi2CSshmilip68DNJGTfD'@; put '20xy3bar26C22lF0/UXEYvb1+sd1UV5ly6rHUzJ+BrLHk976n1RgOo4m94Rkyy+ZQZ7Nccj3kAAJXJ9Aw3hL7niXJWOm4dzCLPPrg8K5N4wE0zeeDcme11mI/fqg/P0KBaa/5yfr0bmJPmhdtmSNt4k+mQGoyDTwhd+9AVeVz/ojozwctWXeHYhxethGLTVvxaXutwpMK2nKhp8bcmynFtfkQgIk'@; put 'QAK5ESivcuTWB1Poaa4mTC3Mnk6mzG2twft0CIXY1Rv36x+H5cQu1sgsxhmmwCzGWRtkzCHECk6cY8n9n7TcvriDvCXnp1RwpZBEs+7JMIrijqyr3EBi09jplqx+3JJIOU7QiGvyclFB7YBpT1tIXvhWVLpa/WO19XI/uS4SIIHCE9DEzPl3oTA7yhnFyrQwuwY6cbmWgNbI7O9B0s93Y3L+JM7K'@; put 'LF90LSJfP6bA9PX0ZD84BwE9laMcefS34lJZmz5hZf/p7N6poktwVdndgbqYyKpu1XplI7FA+NWORtzlR1NS16SdIPJjvdST2ckDIq99P4pYTHfvR2JvuU0SIIGAEpg8z5LbHk1KTR0MmWrJpMp8x0xr+aL2Zlte/nYU5Ys0jZXn4ndA8ukTFJg+nZjhDEvL9dz5GAr8rvC24PrAsehXOwRvcds5'@; put 'kVd+UHjLnpvQVOPI3R/WuMuQp1njV+0ndtS2UGD9BS3PxPjLgWx4nwRIwDsC9eNtxGUmpXEqXMJsMTkoWC1fdOZAunxRwkc5AIMOlk9eIUCBeQVF8d9RN/mkuSlZrW7yVP72xxWZcF20nhH59RMR6WgplCXTkaoanIzfl5IpKEnkZceed9BS9zgKy7/4rYh0Fmz/3jEKPkECJFACBCqqHVkOkTlt'@; put 'gVox2cd8sCnXzPK9G2wk/kTFStGKORgjvz1Hgem3GclxPLEKWx76XELqx6OjDVqU5WvRr7eB9l7t523Z+POInD+e5yQYCL66RojLxyzXcplPcZnOHg/Jsd0hWfcjf/dgz9f8cr0kQAKFJRCGB2oJkn8WrHDgJWLyzzvo40dHW0puedqQPZuQ9GNRZL6Dkc+eoMD02YTkOhzNJl9wT0pufxQtDvs9'@; put 'bmtzzeD06x0yQxJHp5vtr5hycLOZl1hF3afxsyxZjo4YdY1m3tzimd1TgZlE9vj6Hxlycn+ehXNmo7wlARIoeQIaS6/JP8vWpCQaS2dR589MUHy4NbNcDSevPmHK6f0oX8TYeF9PIgWmr6dn6IPTGMWaelse/iKKro/KT7LPwFG515D40odMQ07stuWtVyJyqdkbl7nuSwVKeiy4OyVz7rQliqtX'@; put 'C7Xj8rm41kts4PzxEILK/dm5KJ/7z3WTAAmMPIGpC1NoMWlJFRI3NfGHyT9vz4lmlne3O27ST1uza+Z4+0Xe8xUBCkxfTYc3g1GL37I1SVmqNTHzbMXMjFi/5uq+6Oly0OZLO/6Y0o4Wi8NZ9Cq+rMKRKYttmb/CkoYmxFuqsPS4Q9FgY1OBaVumbHo6JIe2jmwppsHGx+dIgARKg8DYqZabtFk7'@; put 'BpZMnBMpMt+ed7dn+REk/XwPPct7hvc78/baeC9fBCgw80V2BNebtmI6sGLGC2LFzOxq2poJoYmC7D2djpw7EoJV05ALJw3p6775SSActqWmEYlK82yZutCS+rFoqYazaj5jSTNj19u3rZfIkEcZpmT85mMe+HneJwESIAEvCdQi7vzO9yZk7FT1RjH5ZyBbTfrZ97otm59m0s9ALn66T4Hpp9nw'@; put 'cCxqxVy4MinLHy6cFTMz/IzQDEdM16Xd02FLx0VDLp0LSRcys/s6ULBdswDxv1oqK5EZXoOr9PpxKRk1Wp8Lu20fbY+Lp2fGd71bFZippCGvo3PP0Z20Xl6PE58nARIoHAGtb3zH+xIyeTbiD1Esk5bMy+xxvlZjxuanUEpuM+IxbTzBxVcEKDB9NR3eDqa8yhLtT94wAbGLeShGns1o3a88EoFM'@; put 'xGkauNWAdW3/lWlboaLObQmG522M0RrwWjbr9+o9Og5VvCf2oVPRE7giZoaiV2i5HhIggRwJxModuf3daC+5BP4piswrNPW3I5VAPOZ30pVMKL6voPHFHQpMX0xDfgahdTG1U8R9H0VdTFV0qu64vIOAaktNRuzvFjem5+JpZo6/AxKfIAESGFEC4YgttzyclHnLNXQH53Sez935cDv9nLNQsxiN'@; put 'P+AhY6efET1Mr9o4BeZVOIL3QLv7rHg3Tkp3Ft5VXiw03dhLx0SpJUd2vca6l8UybxwnCZQaAQM9zJfej1qZKx107WWtzMz8azzmke22rPsxvE9J1x2VeYm3I0iAAnME4Rdi05p9WFVrywOfTko9srFHylVeiH0dzjZccYl/zh5Cz3G0vkwmeHIaDkd+hgRIoHAEFt+XlCWrIDKRGCn4n8ZMEc0s'@; put '3/KsyO4NiMdkiFPhDsYbbIkC8wZwgvKSiqix0xCP+cmkGFHtd8vTkc6tKyXhbepsDcmr349I23lmjQflmOd+kEDQCWh94KWrUxBW2FOKTLSWAwa0SH75e2FpPqxF2IN+BPh//ygw/T9HnowwBNfK3Nu1rpqNDG6ejTLiMtlnyIZfaJF4Zo17cqBxJSRAAgUjMHdFSm590JJwGdQUGreVuqbSWszt'@; put 'zZfjMdsQj6nWFS4jRoACc8TQF37DWrrotoeSsmgV4zH1vGPbhux4OSS71kUKPxncIgmQAAl4QGDO7SoyUxIp05Oam87pwVqLdxUaj3l4q8j6n2iZPHqlRnImKTBHkv4IbDuCTMS7PpCSmbeUrshMX9Qasvf1kLz5HFwpaWf5CMwGN0kCJEACuROYudSSWx9NSlk5RabS1MzyTfBM7d9ssj5m7ofX'@; put 'sNdAgTlsdMX7wRiKm9/zwbhMXWRKsg9+lRJaXHEZMuTgmyJbnkGvcS34zoUESIAEipzADIjM2ygy3VkMoeZyot+Wl74ZlYunYcXUOnRcCk6AArPgyEd+g5pZXlntyL0fTMnEBbBklojIzIjLA2868uYzUYrLkT8UOQISIAEPCajIXA6RGaMlU8KwYjYftVGEPSpxxNpzKTwBCszCM/fNFssqtM9t'@; put 'SqYvhciMBzdC3L121fMLYi73bArJjhfRipKWS98chxwICZCAdwRmL08i1t6WSAwpPyWezxkpN2XnKyJbcc63WbrIu4MsyzVRYGYJKqhvi8RsWf4ICrHfYUhS20lqq8YALSouQ2G4S/pCsvNVCMz1iMlhzGWAZpi7QgIkcC2B2Uj8Wb4W2eWlLjLxA6C/Aa+gdNHpAzj301V+7aGS18cUmHnFWxwr'@; put '1+4QC1ehptp9Fgr3hlBLLBgiU13i2v+8sxVXsC+F5fhOtoAsjiOSoyQBEsiVwLw7U3LLAxCZ0dK2ZBooXdRxwZEXvhGWbpYuyvWwGtLnKTCHhCu4b9a+5VPmw5r5rqRUN5iS6i/e5B+9YtWiuyEDMTiHHXkDmeKXmikug3v0cs9IgAQGI7BoJTr+rEZWtVnavcu1dNH+zQ4yyyMoXeT+QgyGi895'@; put 'TIAC02Ogxb06R2pGO67LfMoCwy3IXmxdf9JWS0P6ey3Z97oJl3gY7R8Z4F3cxyVHTwIkMFwCy9YkZNFKXHCjd3nJdrdRTYmfgQ1PhuUoPFmOTZE53ONpKJ+jwBwKrRJ5rxlG158Vliy6NylVdWFJFEECkJ4uNNZS/zt7xJEdr4Tl/HFaLUvkkOVukgAJXIeAeqdueyQl8+/Q0KfSFZka/tVzyZbn'@; put 'vxaTjrb0b8V1kPFpjwhQYHoEMnirgTVzjCOL0et2+gJLzBgyrxP+yzR3hSXiLA0jJK3NNoqnm3JsO7PEg3c8co9IgASGSyAMo8GK9yTRYANrcEpXZKqr/BDK1G34aZhdfoZ7MA3hcxSYQ4BVim/Vq9+maZYsXGlJ0wyRMAKmkz4QmpkEHu01237RQmuwiBzaZkpfN10fpXiccp9JgARuTEArhtzz'@; put 'vqRMXghfsVOiMZn4eTDg2Fr3o4gc22mgXTB/L2581OT2KgVmbvxK5tMqNCfMsmT27ZaMn25LWRWshChrVMiMc/dUAGtlOJyOD209I3J0uylHdyPmsptxliVzMHJHSYAEhkWgrMqWVR+GsQDncG24UYoxma6rvB2u8q/SVT6sg2gIH6LAHAIsvhUEIDRHN9kybYktk+ZYSAoKiQmrppWyxbIQ4+Nx'@; put 'hSO1VGrbL9PUq01HutstaT4CNzhEZfNRCM0khSWPSxIgARLIlsCoBlvuezwpdeP0E6UpMtVVfnCLIxt/Rld5tsfNcN5HgTkcavyMSyBaZsvYqRYsm46MnWbLqDpHohVht7CtWjZtXB6rKMxGdLrWSRWTiKXUP42p1Of6+1LS0x5y+8meOWzKeYjK3i733ZwFEiABEiCBYRAYM9GSe2DJHFWvzTWy'@; put 'OkUPYys+/oj7WyPy6ydMOb4rzALseZoqCsw8gS211ZphW2qRFNQwERbOCZogZEtljQXBaUg0elkwuuLxajKIN0c4kCOWbUsi4UiyV2ClDElHiyGXzhnSciYkXbifiFNUXk2OjwYSMFDzNAwrNy5RUI5FZHRDndy+dKHMnzVDImHt3uSxaX3gxod5Xy+++uNxaWvvlIuX2uVSe4f719HZJV3dvdLb'@; put '1y/JVGqYa+fHSODGBCbMSSEmMyWxKnxncCz67xty4/Hn+mq6ALstL349Kl34zdF4fi7eEqDA9JYn13aFAKyZZSLlVY7EKhGzWRnCYwdJQmqlvPwmCMsEit4m+0TiPSE3QaevN4Qi76GSO9ldwcY7VwhEI2EpLyuTyspyqa6skKqKChlVXSU1+jeqSirdx5VSWV4uFeVlUlYWc+PK9ODR12trRiG0'@; put 'wt+lqvRHTf/S8XC4wEomXdHZB3HZ1dMrnV09V4Rna1uHtLa1u4K0HSK0o6tb+vrj8BLgKo0LCQyDwOzbknLHY9o8N23GLDWRqa7yXevQ6Q3NOCz2Kh/GEXTjj1Bg3pgPXyUBEsgDARVV5RCEVRCOdRCC9bU1Mrq+VhrqavBXi/t1MqqqQioqyt33RSMRicViCJ1IX53orYqyjLjK3Opzum7L0ixZ'@; put 'jS8rrp9MHbsuun96X28z9zP7k0gkICz7pfuyAG3r6JQWWEBbLrXJxdY2aYEIVSGqVlAK0DwcvAFb5a1rE7J4FTzliKMvrm+LBxOhXzdo6xe/G0bXN3WVe7BOruIKAQrMKyh4hwRIwEsCGRFZW1Mto+vqZFxjgzSNHSONcF+Paah3LZGjqiulDMIxIx71MyoWM38qqgaKRy/HV6zrGihC1UKrj/U2'@; put 'I0DjcLurAO3p7RMVn2r5PH+xVc5daHFvVYy2dXTABU/rZ7EeA16O2zRtuftDSZmxBImUSVyYebnyIliXGTXQlMOWl78VlXhfxr1WBAMvgiFSYBbBJHGIJOB3AmWxqGt5HNc4WiY2jXX/xo8bA2FZ67q1K2GJjMAKqWIoIxoHWhn1OS7eEFDGmb+MAM1YfJV5b1+fdHR2w9XeIc0trdJ8oVVOnjmH'@; put '2xbXEtoJ17sm6HEpHQLlFbas/lRSGicjJh4JmqU2+2G4yrc866C1cERsuso9O/ApMD1DyRWRQPAJqHDReMfG0fUyeUKTTJ3YJFMmjod1crTUw9VdVVWJOqXqakq7p1NIUsncp4j0x/Ghc6iCU8Vnxv2uVmIVnl0Qly2weJ5tviAnIDpVeJ7BfbWCJhJJf+wAR5EXAnWNttz/qbhU1cKKV2JJP1q5'@; put 'JN6L2phfj0lbs/rNmfDjxUFGgekFRa6DBAJKQOuPumJyfJPMnj5Fpk+ZKBOaGiEma9z4SBUoKk7UMpZxawcUReB3KyM8M+JTH+sFQndPj7S0tsups81y7NQZOXryNIRnsys6dd65BIfARGSWr/xQSsIxSCyYMUvJkqkJP4e3ObL+J0j4YX1lTw5qCkxPMHIlJBAMAhoPqa7tGRCSc2ZMdW/Hjhnt'@; put 'urnVMqkiUkWH3tIiGYw5v9leqODMiE691Uz3ru4eOXseVs7T52T/4WNy5Php93F/PHGz1fF1nxOYf1dSlj+KQWqinM/H6unw1GgJ4+2vfxCRE3s0iZBWzFz5UmDmSpCfJ4EiJhBBKaAmuLfnzJgmC+bMkOmTJ7iJOFWVle5eqYUqY50s4t3k0D0mkBGc6mbXRa2c5xHLqdbNvYeOysGjJ1yLZzLJ'@; put 'Op4eo8/76mC4lrseS8isFYiXLrGkH+1K13rGkRe/EZG+Hib85HqwUWDmSpCfJ4EiIqDCoHZUtcycOkkWz5sl82ZPlwnjGmGhrHYTQzLWSbVQciGBbAnocaV/auXWpau7G3GcF+UAhObOvQdcwdmK7HUmD2VLdGTfF9Okn4+lZNx0xFKXWNKPusrffF5k12vw2DDhJ6cDkQIzJ3z8MAn4n0AYVqYJ'@; put 'yOxWQblo7iyZOW2SWyZIxQAtlP6fv2Ic4UALpx5jrajRefj4KXkLYvOtvYeQOHQeoRaM3/Tz3NaNtWXNpxNSOQomzRJK+rmS8PNvSPi5oG5yusqHe5xSYA6XHD9HAj4moGWDpk+eKEsXznWF5dRJ49HdZpQbN6lWSv3R50IChSKgrvRM1rq2wjx64rRs27VPtu/e72aqsyVmoWZiaNuZujAl934w'@; put 'JYZGQpRQ0o9aMQ9uEdn4M1OsFF3lQztq3n43BebbLHiPBIqagCbozJo2WW5dPF+WQVhORLZ3BdopDkzMKeod5OADQSDjStcsdY3d1AShzdt3ytad+5AodJEXPz6b5VseTMqS+9DwoJQ6/cBoqVn0L34nLOeOoOwaI4aGdVRSYA4LGz9EAv4gEIGbW62Ty5culOVL5rs1KcvRm1stlGqpZKa3P+aJ'@; put 'oxicQEZs6u0ltLfUBKGNW3a41k3ttc5l5AmEI7bc9/GkTJoFT7lVOkXYw+jwc/awIy9/JyLJOK2YwzkSKTCHQ42fIYERJKCWH+3ZfRsslXctXyrzZk1HT+9KisoRnBNuOncC6kLPlMI6fe68vLF9l6x/Y7scO3lG6ELPnW8ua6hpQDzm5+JSXQOhVULxmNpGcsOThhzcmk5ey4VhKX6WArMUZ537'@; put 'XJQE1Fo5fcoEuXfFrXLHrYtRXmiMux+ZzO+i3CkOmgQGIaBCU/+0beXOvQflVxvfkB1aevCmAABAAElEQVR7DqDbUP8g7+ZThSAwBfGYKy/HY5ZKJ1EjHJL2CyLPfCkKKyaTfYZ6nFFgDpUY308CBSagsZWL5s6UB1beIUsXzHWLnmuxaybqFHgiuLmCE1DXufaw1+P9CLLQX9nwhmx88y25hD7q'@; put 'XApPYPkjSVl4T2nFY2rCz6anRfasixQeeJFvkQKzyCeQww8ugfKyGJJ15snDq+9yywvFIDT1h5Y1KoM759yzwQloWIgKTV1Oo2WlCs3XXn9TzrdcYpzx4Mjy8mwkBlf5JxOoj4ki7CVSHzNkhqS305an/6VM+rpoxRzKgUWBORRafC8JFIBALBqFpXKOvOuBlbJ4/mxR17gKSybsFAA+N+F7Auo6'@; put '13jNc8g4f3n9ZvkVxKYKTV54FWbqRk+w5IFPpSRaoZnWpZH0E4UVc8erIm8+RyvmUI4yCsyh0OJ7SSCPBMJh0+39/dja1XLnbUtEhSaFZR6Bc9VFTWCg0Hz+1Q2u2Gxto+u8EJM6D/3Kby+hfuUh5DYlEf77zJcj0tGSbo9aCM7Fvg0KzGKfQY6/6AmoZXJ0fa08ev+9cIffLXW1NXSFF/2scgcK'@; put 'RSAjNI8cPylPvfCabHhzh/T09hVq8yW5nZDhyH2PJ2XKotLpV65WzL2bHNn402hJzvlwdpoCczjU+BkS8IiAWimXLZwjH3r3Wpk/e4Zbu5LJOx7B5WpKikAU3yX97mzduVd+9PQLbv9ztqPM3yEwCqWLHkQryap6xCWWQOkihAHj+HLkuX+NSus5WjGzObIoMLOhxPeQQB4INNTVymNr75NH7r9H'@; put 'KivKJZFI5GErXCUJlA4BTQZSodmGLPNfvPCq/Oz5X0k8zu9Vvo6AGUstufsDqZKJxYzETDm83ZbXfhjLF9JArZcCM1DTyZ0pBgKaoDAbLR0//eHH3CQetbrQalkMM8cxFguBTN9zzTT/9pNPSfPF1mIZelGNEw5yuefDSZmxVLPKLW1XHuhFrZgw1srzX4vIhRO0Yt5ssikwb0aIr5OAhwQ0kWfV'@; put 'HbfJJz7wLhnXOBrWlbiHa+eqSIAEMgTUmqmlvbR+5pe+9YTsP3xMUriY4+Itgeo6uMo/m5Tqeqy3BFzlasU8tsuSV74DK6YqTi7XJUCBeV00fIEEvCUQi0Vlzd23y+c/9n7R4umaIc6FBEggvwRUZGqf8y9/50nZtHUn207mAfeMZXCVvw+uctgwS8GKCWUJK2ZYmo/Tinmjw4kC80Z0+BoJeERA'@; put 'i6Z/8NEH5MPvWYuL3hBd4h5x5WpIIBsCWqS9vz8uX/nuk/Iq3ObxBC/usuGW7XtUWN77kYRMX2KUhKs8gh7lJ/Y78vI3Y4EX1NkeA4O9jwJzMCp8jgQ8JFBRXiYff/+j8v5H1rhZ4iwI7SFcrooEsiSg5YwS8Bp8+Vs/ktc2UWRmiS3rt2lW+drPJaRyFNzGQS/Ajl1EF1N5/uthOXcknDWjUnsj'@; put 'BWapzTj3t6AEVFx+BFbLjzz2sJslzm48BcXPjZHAVQRUZKol8x++9j26y68i482DOSuScud7oC8R6xp0V3kmFvNlxGKqV4rLOwlQYL6TCZ8hAU8IaI3Lh+67S37jEx9029jRcukJVq6EBHIioO7yVsRk/o9//JocOHJcLNvOaX388NsETBRgX/2JhEyYg+dQMzLIIjOtKRGL+XVTmo/Rivn2UfD2'@; put 'PQrMt1nwHgl4RkDLpGgB9T/+3c+5CT0sQ+QZWq6IBHImoIk/ew8ekb/556/LBfQx5+IdgdETkVX+qYREyrVXOayZ3q3ad2tSK+bRncgo/y6tmINNDgXmYFT4HAnkSGDsmAb5T//uczJ35nSWIsqRJT9OAvkgUF5eLk+i48/3fvqs9Pah0TQXzwgsezApS1c5Ylt2oAUmksk13FR++dWIXDzFjPJr'@; put 'DyAKzGuJ8DEJ5EhAM8Y/gIzxT37w3Yj34g9Xjjj5cRLICwEDWRra5ee//f1XZM+Bw3SVe0g5Vo6En8/HpX4cFBgiEIJuxTy41ZZ1P2J3n2sPIQrMa4nwMQnkQECDvSdPaJK/+KPfltH1dW7WeA6r40dJgATySKCsrEx+jYzyf/za96WrpzePWyq9VU9ZmJKVH7bFgMIMssDUWEwb8abPfDkql5pp'@; put 'xRx4pFNgDqTB+ySQI4EyFFPX/uKf++j7ab3MkSU/TgL5JqAXhFoT8//6/74s+w4dpRXTQ+BaG3PVRxMydVHwa2NGy0zZvcGRTb+Iekiw+FdFgVn8c8g98BGBuppqxF5+Hj3G5zD20kfzwqGQwPUIaCzmD372nDzx1POMxbwepGE+39DkyJrPxKVME36wjqBaMkOoiRnvE3nmX6LS1YYHXFwCFJg8'@; put 'EEjAIwIa0zVz6kS4x39XKivK3dJEHq2aqyEBEsgTgSjKie3ef0j++n99Vdo7u/O0ldJd7S0PJGXJaiT8pILtKlcr5raXHNn2Iq2YmaOdAjNDgrckkCOBCIo43718qfzRb3+GsZc5suTHSaBQBLSkWHtnl/zZ3/yTnDxzDlnBQbWzFYro1dupqHTkQST81DZqsGJwa2MaZkh6Omx56p9i0t9LK6Ye'@; put 'BRSYV38X+IgEhk1AC6u/a8298kUUVo/H48NeDz9IAiRQOAIah5lMpeSvkE2+e/9hSaELDRdvCcy+LSV3vg/p5AEvW6RWzA0/Fdm3KeItwCJdGwVmkU4ch+0/Am6Cz0Or5XOPv48JPv6bHo6IBK5LQK2Y/x2dfd7YsQveBwrM64Ia5gtmxJEHUHy9aTriMAPc4ccMh6TlnC3PfqlMrJRGnZb2QoFZ'@; put '2vPPvfeQQBm6g7z7wZXyeWSQ04LpIViuigTySEAtmPr31//r3+TNnXsoMPPEeuJsC1nlKQmbwXWTK7pw1JCXv2PIiT1sH0mBmacvE1dbegSi6HG86s7b5A9+45OSSCRKDwD3mASKkIAm5/X3x+Wv/kELrh9hqaI8zaHa81Z9NB74skUqME/td+SFb0TdC5c84SyK1VJgFsU0cZDFQMDED9WCOTPk'@; put 'T3//NyUajTBZoBgmjWMseQLqHr/Y2iZ//rf/JGeaL5Q8j3wCGDPJQp9yWDHLkEgV1FwqKGkH4abPfSUqLWdKO9mHAjOf3yauu+QINI6ulz/7g9+UaZMnSjKZLLn95w6TQLERiCG05c0du+X/+fK3pLOLZYryPX93PpaQ2XdgK8ngli1i4fX0UUSBme9vE9dfUgQqysvkU+hB/n70Iu/rQ+VdLiRA'@; put 'Ar4moO0iv/KdJ+WZl9ehqw9DW/I9WTVjbHnoiwkB9sAWXw8ZIenrseVplCzq7SpdKyYFZr6/TVx/SRFQN/nCuTPlT2HF1LqYrKlXUtPPnS0yAmF8R1svtclf/M8vy4nTZ/l9LdD8LX8oKQtXBrv4uloxX/+5yJ6NpVuyiAKzQF8obqZ0CFRXVcjvfPojsvruFSxXVDrTzj0tQgLaJvJHaBH5fbSK'@; put '7O3rL8I9KM4hV9fBivmFuFSMMiSEwvZBDMc0IyG5eNqW576MkkVWaZYsosAszu8nR+1jAgZKnsydNc1N9qmqrMDJhXX1fDxdHFqJEtAWkafPNst/Q4H1U7jlUlgCyx5MytL7gm3F1LqYz3/DlLOHSrNkEQVmYb9T3FqJENCi6+9F0fXPfOS9rIlZInPO3SweApnal//wb9+TdZu3SYIJeQWfvMpa'@; put 'Wx6GFbOyJrhWzEjMlEPbbPn1E7GC8/XDBikw/TALHEMgCdSOqpbf+8LH5a7ly5jwE8gZ5k4VKwFN7PnZcy/Lt3/8NF3jIziJSx9IyLL70KI8oC0kQ8jviSPX8+l/jkh3uzmCpEdm0xSYI8OdWy0BAmolmTCuUf74dz8rM6dNoSWzBOacu+h/Ahp3ueGN7fKPX/++tHV0+n/AAR5hZQ2smF/shxXT'@; put 'DGwsppvs8zSSfdaVXrJPSQnMD73rAdmyY4+cOHMuwF9Z7pqfCGhW+ewZU+SPfuszMh5iky0k/TQ7HEupEVBxuX33Pvm7f/22nG+5VGq778v9dWMxVyEWM6BWTDfZ55TIs/8axT6WVrJPyQjM8WPHyD/+1X+Wvv6EfPvJp+T51zayJIUvTzfBG1QYnULmzZ4uv//FT8j4sRSZwZth7lExEFC3+Ft7'@; put '9ovGXZ670MLzv08mzc0o/3xCKmpQFzOgDX4MeMd/+bWINB8tLTd5yQhMtV5+8RMfcntEa+2z19/cIV//4c/k9Dm2BvPJeSbQw3AtmdOnyP+OmMypkybQkhno2ebO+YmAhqqouNy09S350reekOaLrX4aHscCAssfRl3Me4ObUa5u8r0bHdn482hJzXdJCEztNfs3f/IHKB0z3RWYOsN6wmlta5fv'@; put 'wJr53K82lHxT+pI66vO0sxH0152xJCnHdoYR2P3O7g36Qzd5wjhYMj8pc2dOc49FFmLP02RwtSQAAnru17/nX90Az9XTcqm9Y9BzvXaXKa+25eJJU6xUabkx/XCg1IL/WmSUl5WHAtndxzBD0ttpyy/+MSb9ve/8bfDDHORjDCUhMOfOnCr//f/8A5ffwB90PfGoNXPd5q3yjSd+LufOt+SDMddZ'@; put 'AgQM05GJsyy58wO2rH/ClDOHr+8Kmdg0Vj72vkdk5R23um461sksgQOEu1hwApFIBCFRcbeQ+lMvvubev94glqxOyrRFlrz6g6i0X1CBSZF5PVb5ev6u9yZk1gqsPaA9yrVk0Ws/FDm8vXSSfUpCYH7+8ffKR977yHVLxag1s6X1knznx8/IL3Glq5YmLiQwFAKxCkfu/WBCpi4wZd8blqz/cfSG'@; put 'x9Go6ip5cOUd8oFH1khdbQ2tmUOBzfeSwA0I6Pk7Fou5RdS/8t0fyzYk9aRS1292ECt35IHP9kvT1LDseMWRt16NSDLO34AbIM7LS6MnWbL2UykJwxMUxNY+4aghJ/fa8tK3UBOzRDRG4AWmFrz+u7/8Y5kAq1EqlbruF2OgNfPrP/gZ43SuS4ovXEsghMj0xsmWrPl0SiJRuEK6Q/Lq90y5eOr6'@; put 'VkxdRzhsytwZ0+Tx9z4kSxfMdVd7o2P02u3yMQmQwNUE1GqpHoFNW3fKE2gBefTkmZsm88y9PSnLH4U7PWJLd6sjL34rIh0t6sakyLyabn4fqXdx9ccSMmURuKfswGlM1ZSJhCPP/EtMOltLw00eeIF5y6J58pf/4XdvKC4Hfm20jEXzhYuuNfOldZsGvsT7JDAogUjMkYX3pOSWtTgvxtVSEpKj'@; put 'O0TW/ySKk+TNf6SqqyplzT0r5D1rV0lT4xj3WKXbfFDUfJIEBiWQMRBo68cfP/uSrEedy55eVLi+yVJWKXL/J/pl9ER8a2E4MyKGbPyZATcmYjGTN//u3mT1fHmIBCbOsWTVRy0JG8ETmIrCrYn5FGpiri8NN3ngBea/++zj+OFefV33+GDHv8ZlGqhfqLGZas1kvbTBKPG5DIGySlvu+2hKmmYI'@; put 'fpRs1/uRiBsQmIac2pddD1rtXz5pQpO8a829surO20RFZxLt62zbzmyGtyRAAtcQ0PO09hS/1NYhr76+RZ59ZZ2cbb54U6tlZjWL79N+2BCXhoXPwKuAOLkj20U2/cIcNFEv8zne5oeAiVj2Bz6TkHHTMRm4Vse/gVrCkZCcO+7IL/81lpXxodh3PtACs6qyHO7x/ySNo+tdt8lQJ0utmWebL8Ca'@; put '+bS8suGNoX6c7y8FAjB71DXa8iBOiuXVhjj2ZZsljB8Xz4TkV99DokFX9u6QCC5utDD7u9aslOVLF0hlRQWFZikcR9zHIRFQYanu8O6eXrf80DMvr5MjJ07dMNby2g2MnoALQ7hkK0bhO+uEXDGj2b7tLY689I0oWvtl/729dt18PHwCs29NyR3vx4V6EAuv43fBxm/Ecyi63nr2xiFUwyfon08G'@; put 'WmDeccsi+bM//O0rpYmGg12tmRo0/hqujr/xw1/IxUttw1kNPxNQAiE3e9yW1R9PYA9x9rh8yZ2O4Tbk4JtqDYkM+Wo1Go3Iwjkz5dH775FlCPMoRyIaLZoBPYi4W1kTyLjCu7p75I0du+S5V9bL4WOnJAFr/1AWDWu57/G4NM3UsjiOa710P2+EJNXryAvfjkjrGVwwQnhyKSyBWLm2j0xIbaOq'@; put 'McxNYTef962pm/zN5wUJZcF3kwdaYGrnlEfuv3dI7vHrHV1qzTxx+qzbBUjje7iQgBIwI47Mvg1X3O9xXPf4QCoqMq2UIVtfCsm+jcM7mcSQpDYf9VvXrrpLNJ5Ys89VaDJGcyBp3g8yAb3A1wt9FZda7WPz9l3y8vrNrrBM3iBx83pMVFAufzQpc+9QcZl2jV95r6snHSTpReXUIQjMEmvtd4XD'@; put 'CN9ZtgahC6uhL5GwFTSBaYZD8G7Z8uyXymDNdA+4Eaadv80HVmBWV1W42eNjGobnHh8MuZ7kUjjgX8HJ7Xs/fRaF2jsGexufKyECboLPyqTc8kBIkv1Xl0JxTx34p79fZPPTYTmOAuzDXdR1PnPaJFl91+1yx62LZXR9nRufqVnnA2u7Dnf9/BwJ+I1Axg2ucch6cb9u8zY3eefc+Yti5RCbvOje'@; put 'pCy5X4uwXyMuLwMwIADW/ciU47tZdH2kjgktvP4QCq/HKnARAIUZKJGJ3wS1y/7yKzFUGgl2GEZgBaYX7vHBvlx6Na1B5afOnHM7Q6zfQmvmYJxK5blImQ1xaSGLHPWB3Qzyq/fcFZk4h/ShdNHrPzfl1P7hi0xds7acHNc4Wu5evtT907aTGoumQpNWzavZ81HxERhorezs6pY9Bw7LrzdtRS3L'@; put '/aKPc13m3YlqD2uQpQwXuSB/bjDhYmom+c8NObLNlBQzyXNFPqzP60XzqscTMn0JrMioYTrYPA1rxT75kLrJt73oyLaXgt06MrAC8w/gHn/YI/f4YMdkxpr5MkoZfe+nz7ktyAZ7H58LNoEoijQvfwTuttthwRxEYOreuyIT8dx9+H3c8kxEju3yJri7sqJcFs+b5XYEWjh31lVWTWafB/u4C9re'@; put 'qftbL5QSiYScPnferWP5OnqHHz911vUa5bq/Wqt28aqULFrliBmGsryOuNTtqMDc9DTip7ewVFGu3HP5/CQtWfQxS8xQ8EoWqZu85QxqYn45hjAA9xciF1S+/WwgBab+8P79fx1+9ni2s5WxZh4/dcatm7nxTRQ/5FJSBKIISF/xrhTiMK8vMBWInkJCSCCI9zuy5dmwHNkRfjuxIEdiGavmbUvm'@; put 'y+1LF7lZ6FWVlVdc6BSbOQLmx/NCIJOwo8fnRcRW7oCV8nUUSN8Nq6XWsNTzqxeLdupZtjYps2+FuzWEMJYbiEvdHgWmF9RzX0cYhe8f+kJSGiYgy/8mc5b71gq8Bj20YaV9FuWKWpBMFtQlkALztsXz5S9QXF2TIQqxqDVTg83Vmvn9n/2S1sxCQPfJNrIVmDpc9+cS5xKtkXkAVa/2rotIf583'@; put 'P6IZHBqrOWVik9yK74AmBU2fPFGqUFNTf8TVhU43eoYUbwtNQAXjwLhKTdjZd/g4ROVbsnv/YWnr6HSPUy/HpaWIboWHYfy0ECxFsIRl4WulwPRyBnJb16KVCbl1LdKyApjs42aT/xLZ5L8aXgJobmQL8+lACszf+fRH5L0P3+9J9ni205CxZh5FLTbtab5p285sP8r3FTGBoQjMzG4asGTqD93p'@; put 'QyI70fc4X4HeGbG5ZMEcWTp/jkyfMtHte67HaiZmkwlCmVnhbT4I6LGmF+DuRTgu+NVSue/QMXlz5x5XVLZeakclmixU3xAHZ6B82PRFKVn2kC1V1TBaarmbLDdDgTlE2Hl8+6gGLVkUlzJN9sF2spzCPI7Iu1WbKLp+/pgtz32lDPvlraHBu1HmtqbACcwYEnD+7i//o0wcP879Ec0Nz9A/rXFE'@; put 'ccQRaZvJH8CaqVflXIJLYDgCU2ngd9d1mfd02LL39bAc3prfziFhxLiNbqiTeTOnydKFc2X29CkydkyDVKD8llo3VXDqLQVncI/VQuxZxkqp7m+1Vvb29sq5Cy2umNwOF/jBo8elvbM7r8dZ3ThbFt6bkinz1d0N3+oQO8JQYBbiSMluG3o+uu+jCZmq/ckDVnhdfwOslCNPfykq7Re8icvPjmrh'@; put '3hU4gTl/9nT56//8++4JbKR+LAdaM7/15FPyxvbdhZtRbqmgBIYrMHWQes0aQucQB7XQzp90ZPc6U84eNGHR0Vfyu1SUl8nUieNl7qxpbp1NzUYfXV8rZSjoPtCdPlLfofzuPdfuFYFrBaWGJV1qa5ejJ8+4sZR7Dx51Swz19ce92uR11xOrcGTWLRYS7lJS3aAu8eytlgNXSoE5kMbI35+yICUr'@; put 'P2KLgeDZIFkwlay6yTf+AuFSG4LpJg+cwPzEBx6VT33osYK6x6/3FXStmfGEvPDaRvnhL57HlXvX9d7K54uUQKTMkVsfTMmCuwcvU5TNbumVrLaoS8RD6F0usm+TKRdOGp4lOdxsDCoStID7ZFj9Z02fLLOnTZGpk8ZLQ10N4jer3I9r7KYKT1o5b0Yz2K9nBKW6vNVCqVnfbe0dyPy+ANf3UcRU'@; put 'HpWjJ85IB851+XB9D0YXxlKZNC8lc++0ZNxkvAPfJ0fF5WBvzuI5CswsIBXwLVGUglM3ee1YnBMD1tknHDXk5P50a1LXrVVAroXYVKAEptp9/vbP/73MnTm9YAk+N5ukjDXz8LETbt3MLW/tudlH+HoREUjXwYRL7h7numWKst0dFZpm2EA5IwdFnpEIhDIpl86NTIZheVlMxo8d48Ztzpw62b0d'@; put 'B5e6CtFYLOZ6CCg6s53Z4nxfRkxm3N26Fz09PUhi7HRLCR08clwOHjvpWijbO7pyKn4+HEIGSg81TrNlHoTlxFmOhBHTZqdyt3JRYA5nNvL7mdseTsqiex1P5je/Ix3a2kM4vff3iTzzTzHp7lAFE6wlUAJzEiww/++f/xEKoaP3c7YR3QWaz0yNt2fRO/eJp17wpGhwgYbOzdyAgJcCM7MZTQIK'@; put 'oU5ab7stpw5qPb6wtJ5GweHMG0bgVksh1cOiqaJTrZuanT5p/FjEcY6WqsoKt/mADku/d5nuQmrt5OJ/AiokrxWTOo+9fX2uJbL5QivqUZ6RIydOywk0mGhGTKWWERqpc6y2ehwz2YErPCkT54VEyxDZiGXz6pRPgem/Y7ZxkiUPfDYpEfSpGMnzYD7IRGDF/NX3DTmaQ6e3fIzLi3UGSmA+uuZe'@; put '+b0vfMIX7vHBJidjzTx09IR880e/kG274A/lUtQE8iEwFYhey2rdTG1b19dty2kIzcNbDblwIoxSQ/5ApolDtTXVEJ2NSKobK9MQx6kCtHF0HZ4fJeWI51RXqgqRgcIz89gfe1E6o8iISL3NWCV1LtTN3dvX77q6my+2yqmzzXLyjP6dkwstl6Srp9cNjRhpUobhyNgptsxCjOXEWSJllegknsyu'@; put '9NBQxk6BORRahXmvzv3azyVk7FTIy4DVxNQ4zP2bHVn/k+B19QmUwPyT3/ui3LPiVvR+RvNnHy9qzexH0Pvzl2MzvWiB5uPdDfTQ8iUwB0JzXefoLpLAYX3huCOHUKT9LARn3OMamgO3Odz7Kl40gaihrtYVm01oazmhqdFtbzkG/dNrRlVJGVzs6mbX92bEprrb9T5jPIdHXlnqonGRumQEZOZ5'@; put 'tSr3wSLpCkm4s1U4nm9pdV3dZ5svuI870IqxHzHjflsiMVvGz7JlJhJ4xk8NSaRMs2+9F5aZ/TZhUdryTEj2bcbFHFtFZrCM+O2ilUnUxNT42mC1jtT4+84WR57655gkE8FykwdGYNYgNuzv/usfuz9sxVBMWk/8+iOrcUxf/+HPZMeeAyP+BeYAhk6gEAIzMyrVEBqjaSHQvf2cI0d3m3Jyjykd'@; put 'LSMTp5kZVza3eryXxaJSO6ra/Y5qiaTG0fVuqSTNXq+HxVNd7eUQp2r5VIGUEUeZ5KKMyz1zq4I0yEtm/3UfM8JRb/VPX8u8nrFCqiVSs7XV4qgXrS2oMdlyqc0Vjxdb2+QiHmvyTWd3jy8skjebu+p6W6bMtWTKEktGNxk49vMrLDPjCcdMefM5ZPa+jl7kCf9/tzLjDvpt3Vh09vl8XKLlOBEG'@; put '7KuvrUyf+2oUyZ3BKlcUGIG5fMkC+S9/9Du+Se7J9svuWjPjcXnucmxmF07+XIqHQCEFZoaKXuMaEJp6UurucKT5aMhNCmo+HpaED62amXHf6DaGuOnKigokEVVKHcTmOMR2ahZ7fe0o192uF5DaAlato5qApK73KGreZsTWwHVnrKAZATpQkGaeG/j+wZ4b+PpQ7mdE37WfGSgIM2Ix81zm8cDP'@; put '6Jj1QlnL/miXsP7+hPQn4q4FsqurxxWJrSgHpHV222CRbEPiTXtnp3R190ovPDhxH1oiB+7f9e5HY46MnmzL9IUpWC0dqarViEsk76gr/Hof8vh5V2D+MiR7NxoUmB6zzWV1eiRoHOb4GfCRB9BNvgVdfd4KWFefwAjML3zs/fLh9zzk2/jLG32x9IdGfyw1NpPWzBuR8t9rIyEwMxRcZwoMLOEw'@; put 'LC1wGbZfQJmj/SGUvQhJ+9mwpHwSq5kZby63KsJUhKq4VAtnNdpfVsPiWVUFUYpSSlUQn3rfFaF4PSNEowhH0e9WBIxUlCorXZcmLelt5k+/g3o/I/oGik59buAy8DV9Xh8PFLV6P/Onr6UwESoSUyoY9RaP47ioVGujuqTVbd0HUaiJM92wPnbjtqcHf3Bp62N9Xl+PJ5KucLQCljylZYZqYZ2a'@; put 'NM+SSbNTUjcOc4VwNHWDj4SQoMAceLT76/78u5Ny+yPBc5NruaLThxx54d9w4F9zvvHXDAxtNIEQmJps8D/+5Pdljo/KEw1tGtLvVmumZm4+89Kv5cfPvoQfF9Qv4OJrAmmBaaFM0fDrYHqxg65VE3GayAtC2QtbWs+F5PQ+Q84eNqT9IkoUW1eLJC+26fd1qDDUdpkqKvU2ghRUFZb6PVOxqm54'@; put 'FaDu87hv4P1agSKzpD+f/mzmpG+hm4i6ogfWeFQxmYD40+fSVseUKyRVTCaT6fsqKlVgaiykPqf3rxWqme2Wwi2mREY1WjIB1qjxc2wZPR5JO2gHiOiPglorB2NNgTkYFX88VzvalrVfSCDBCzoMx0qhrNr53ntN6OzvseVpxGH2dAYnLCMQAnPCuEb5n//lPyCmMVr0J233Rw0/egcQm/nNJ34u'@; put 'b+09mO9jm+vPgUAELr0lq5KyZE1Ikv3+MBnqBbDGamoqerzHgtg05MzBkJw7Epa2i5p5W3piM4cp5kc9IqDflfomW5qmOzJ+puVaLcsrTJyzCxNbme1uUGBmS6rw70u7yRNwk2PbASy6/tK3EFe/LzhxmIEQmA+uvEP+/W99xvfZ40P5OqpbT62Z2gHoyadfHMpH+d4CEtAfzcWrUrJ0DSyYPhGY'@; put 'A3dfC/maprp+ITZh2VSBqTGb546giPtZXDX3BudqeeB+8/7IE4CxGDGUSNCZ5EBUWtKI2pVV9WiPF0NNV3i/1Rqst35bKDD9NiNXj2cB3OTLH4X1El6BoFgwdQ+1XNHO1xx549nglCsKhMD8w9/8pKxddXegBKYecGFYMl9EKaO//+p33dgwfY6Lvwj4XWAOpKV2SwNudBWdVkqk+5JaN9EH/Sha'@; put 'U54ypas13a5y4Gd4nwSyJaDHVeUoGzGUtluvcgySdWrHiJRXIeMdFzl2ErGqKiqzXeEIvY8Cc4TAZ7lZtYKv/SyyycuC5Ykx0YnqwklHnv0SOqW5lZCzBOLjtxW9wFS3+N/9xX9EoedxbnyTj1kPeWgaj/S3//w12bRt15A/yw8UhkAxCcyBRNxTM+qvhdWVDh9lf78tXZccaT1jysVTIbdzUOcl'@; put 'uP3jeJ0LCQxCIBKxpbJORMvHjJlkS8MEW0aNTgvKsApKnMDUSjkSiTqDDDfrpygws0Y1Im8Moej6Q59Lyli0CRVEJfn9giVbSOplSiYcNw6z81IwzrtFLzBnTp0kf/Onf+hmgAYpaF5jMc+jq8b/8X//vVuKJNuDlO8rLIFiFZjXUnKtmxCb2jlIY5v6+yzp7RBkpqvgNORSc0g6kKXe14NEjBJM'@; put 'GLqWV6k9Nk0HiRW21DSK1I+33VjKukZHKmsdtGpEghQuVhyrOAXltXNJgXktEf89Xnp/0g1LCpqbPIIarK98PyTH3kLR1wAsRS8w3/3ASvnfPv/xoixPdKPjx0TW67pNW+Vv/+UbN3obXxthAkERmNdi1KvpEESDxm+qjcCCe7OvB3U320XamtPCU0VnF660412oF+iP/KZrd4OPh0HAjDhSUenA'@; put 'GgkX91gISlgoa/Cn1spyFLlWV55mkLkxlBCVmqQTpIUC0/+zOXZKSh74TEq0GkGQDj+Nw9y93pZNT8X8PwlZjLDoBeYf/+5nZfXdKwIXf2mgbMo/ff378sJrr2cxjXzLSBEIqsC8lqdKCoHW1DI/IbVyQlWkIDrjKK3RC4HZAfd6J8ohdeBPYzl7ukIS70bXIQrPa1H65rEBq2SsDFbIOojJBgdi'@; put '0pEaiMpR9RCYNfoa6oWqmMTVhpPCRYbW38T/QfpBH2wyKDAHo+Kv5yJRRx7+YhzxvojvxbkoKMdkJg7zuf+fvesAkKo6u2fq9mVhadKLgKggCAFEaVKEqMRobFEsPxr9TTEaY/1jS6ImakSCYk9ETSxYwQIiUhRQmoICgvTey9Zpb/7zvWUImIXd2ZnZeffufbq8KW/uu/fcO/PO+8r5ns6gI8n+'@; put '1XUW8HH2RmmCKaLLj933ezRv2kS7+EvRwLzzobHYuIXmIrM5FoG6QjArmwD750/4x0FLp1g9o3Svh4KWrcVZVuShm53Ec7cbxXtJPPe6+Jxu9mLGGpW5qRXJUHb5kNlShoDA62WsZEZuFHkFTMKhS1tIZB5JZC6JZQWRpP4nM7tFi0+skTHLpFy1dblwxwOwIZjxoJW+Y08bGUKnXiSXCiSOVRcl'@; put '+b6yYBfjMP38vVQ/DlNpgqlr/KVUFFm6fBXueeTJCqtBdVenOa7WEajLBPNoYNuUkf8cQTxJVSxaM0XKKcj6AeXllEg6IJZOkHSSgPJx7HmAcZ6BUrpgwxWE52jnMa/bxkXGP1rIzAIyKD6dXc9Cdj7lgbjPpUs7u4DPs/leLv8yaYEWFQFexYRISka3JBJC3NwGzEMIGIJ5CApHP2jNcqIDLuJN'@; put 'alQvuSKp6jPtJephLlNfD1Npgnn24H749ejL9Iu/9HjxxqQpeOnNyY7+gpvOAYZgxrcKbIMl/7H1Oe1/SJLYhCTo8TrBKjcspxikXFIp7ISiAPfltHiW0Q1fStIpj4OyLwHCAR7HYyMhciT+CWkSd64OmwzD440yy59/JI9+ksPMbBJJEsUsWiOz+ZdLi2RmHl3ZfD2DsZHiNpQkATevSzaJFFxp'@; put 'JRZhIEnAERZpiGTVq8MQzKoxcsIRObx5GnFNObLzeNMka90JnUpCHyQOc/H0KBZOUV8PU2mCefN1ozC0f1/t4i/FRfXHMU+bKj5J+LKmugkhmKcMDOOUMyusc6k+n+7t2/SQ/0hWslw13EJC+X/sdYtEyWKN6jCJU9gmli6EKe0RJNkM0TIaLHfzMd30tJAG5LVyPqbUUohup3CQf6xiJMdLNSPL'@; put 'kox4WvKoCRqReCe2Lao60YNZ8rYqRXXjoFi3znb3sxmGT9N6K8/lsdQ4j3I8/GNiqNTY9rIapawbL//8GSSG3EsspJe6fhlZFnx8LNZGv7zG432Mg/SQPHp9UkedbUs9UG5CqKOMixQrpC1YLiRdl6tsGhe6IZhpBD/OUw+5IoDmHfghfgl0Wfpiwdy8ysJHz2dU/KbEiYmTDleWYEr9cYm/bNOy'@; put 'uXbxl9t27MKtfx6DomKaaczmaAQqapFbrEUuRMZktNTWZNkU6yDREtIlm9t+zndihFRelAMlN4XMS3JU5B8hZBYJakQIWUTqtHMvx9jvSz3sCqJm8T2JKY0eg2TKRY2foLWRpxViKScUQsm+CMEUUul2W/Zzed8jfeSf/X6MLB68Mh66QNp9kc4c7JP9gP2wXzH/pBoBQzBTjXDy2u/SP4Qew+Sm'@; put 'UB83ufw2lBywMOmJDOUrrSlLMFtSWP3Ru2+GlFTUSf9S5IlmzV2AR556MXnfQtNSyhAwBDNl0Ka04UOe9IMPSPsqyOhhZz10zGGvHevhD62HRzw/+OSI147VmHkvbQgYgpk26OM+cdM2EQweRbkihpJocwNm34O68OFzXmxfz7tShTdlCeaAPj1w269G0w1G35dGm8gTPfvyREyeNkujUek7FEMw'@; put '9Z1bM7K6iYAhmOrMu4SUDL8myJKkZGW8e9OFZEoc5udvA8vnMZ5G4U1ZgnntZefjgrOHaZXgIzFcpWXluPvhJ/D9uo0KL6u603VDMOvOXJuR1g0EDMFUa54HXBxA2y5URtBIrkiS9VYuiGL2RLUTfZQlmA/e8Rt0PbETs0gZua/JJgRz3cbNuOPBsSgr18syq8kU/dcw/FlR/GhECCf0krrdJgbz'@; put 'vwAyLxgEFEPA6/dg/ocuLJ/rsZPCFOt+netu59NC6H22XnGYHhaz2L05iklPZVYk8Ck6q0oSzHp5uXj8/ttQvyCfgfkVwfCK4n9EtyX+8pPZ8/D4c68c8bp54lwE/HTR9D47jI49DcF07iyZnhkEqo+AaIXOm+zGyvkeW22g+p80R6YDgYYtwxh2ZYRqC/q4yEUpIlAaweTxWSzPa0eIpwPahM+p'@; put 'JME8sWM7PHjHjXZyj04JPqY8ZMLrudYbEILZ55wwOvQwBLPWwTcnNAikAAFDMFMAagqbrIjDDDAOk7IMGsVhyjqc+k9KFq2kFIWim5IEU0eB9Vj85f/9dRzWrN+k6HKqe932Z0dxxnkhtGEMUDhoXOR1bwWYEeuGgCGY6s3ogEuCaHMy+61RHKYk+sybBHzzmbqJPkoSzBuvuQzDB52hlcC6ib9U'@; put '70dNemwIpprzZnptEDgaAoZgHg0Z577e5Ywwegyni1wjPUxJ9Fm1MIpZb6ib6KMcwfRQVfmvf7gJndq3ZVk5lvLQZBP3uOhfPvr0BE1GVDeGYRPMn8rds9tYMOvGlJtRao6AIZjqTfBx7cMYfFmElbP0icOURJ+ddGZ+8JSfxR/UjMNUjmAW1q9nJ/jk5eZol+Dz3CsT8d7Umep9u+twjyX+p+95'@; put 'EbTtKqUIjYu8Di8FM3RNEDAEU72JzM5jXfJrA8gpYF1yTeIwJdGnvJgVfcZnoPQA40sV3JQjmCd1bI8H77zRJpc6JfgEgyHc99hTWLZyjYLLqO522ZYpGh7GCb1Zi9zIFNXdhWBGrg0CQjDnvOPG94tNFrkqk0oVTAy5OohmbSm1XvG/Kl0/ej9ptJTQuY+eZ0WfdWpW9FGOYOqY4OOm23/rjp24'@; put '7U9jsL+o+OgLzrzjOAR8GVF0HRhGtzNJMMuNBdNxE2Q6ZBCIEwE3XZOzJ3qwbikJZlhN12ScQ9bicNEjPvmMKKywpVVFn5lvuLBqgZqZ5MoRzBuuvBgjzxqkVQUfIZiLli7D/Y89o1VddS1+taoYhMcfRaeeYfQ517jIq4DKvG0QUAMBcsqZr3qx8TsPrIghmGpMGnB89zBOv4C62Jplki+ZGcWX'@; put 'H6iZ6KMcwdSxgo+XAusTJ0/Fi29Qk8BsSiHgZlB5i44WBl7KilKKBmIrBbjprEEglQiQT4aZOzp9At2SGzy84TcEM5VwJ7PtwuYRnHVVCF41uVilUHj9bmxYbmHahMxK33f6i0oRzLycbIy5/1Y0KmyACOUItNlcbjz61D/x2ZeLtRlSnRmIK4rCJhaGXhWEP4eB2BYDgMxmEDAIKImAy+NCyd4o'@; put 'Ba79OLBbyKUhmKpMpCRcjvhFAPUK+TusSaKPm+tx306WjHwyQ8mqUkoRzLYtm+ORu2+mFIHcWepzIS8pLYMIrK/buEWV77Lp52EIZDGD8czLgmjc0s2YLX1Klx42RPPQIFAnEJAEn62rgRl0kZeXqJm5WycmqpJBCicYdgUTfTryTd7o68AQmOODQAB4/wk/ivaptx6VIpin9+yGu377CwJOxDXZ'@; put 'JEts/aYtuOPBsSgtK9dkVHVrGL5MCz2GRnDSGSbRp27NvBmtbgiIuPXS2cDiaR6qQqh3QddtPuIdT8/hQXTpR36pUaKPWDE/et6DbWvVS/RRimBe+pPhuPLi87RK8PEw/nLO/MV4aNwL8X6XzPEOQUDiMFt3ttDvYgZvGQOmQ2bFdMMgED8C4iKf9ZoH65eZBJ/40Uv/Jzr0CKPvT/VL9Jn5OjPJ'@; put 'FxqCmdIV9rvrRmFI/75alYj0eLx4/b2P8PJb76cUO9N46hAQ10y9BhYGM8C8XqGLmac6OGdSh5dp2SDgRASEXBbtAab904v9eyjYbeIvnThNx+xT41YRDL0yDK9XDxe5DFZqki+eHsXCKeplLyljwRQpn7/e9Vuc0KGdViUiwQSfvz39ImZ/seiYXxzzprMR8GVY1MKMoOsAI7ju7JkyvTMIVI6A'@; put 'jxfyZZ8DC6bSPV5u3OOVo+TsV7Pzo/gxE32y85mexft8HW71JWxj9WILM17LcDb4lfROGYKZn5eLscwgb1C/QKsMcom7/MNfn8CaDSw6ajZlEXDx16xxS1oxR1EmQxQljKtc2bk0Ha+DCDCZwmKEy7SXvdixnu5xy2SPq7gK3O4oho8OoFEr9p6/wToQTEk827HBYk3yTOXGowzBbN3iODx69+9o'@; put '+vZqk0EuCT5bd+zCrX/8G4pKSlX8Pps+H4aAP9tCn7ND6NDDbcpGHoaLeWgQcDoCYiVasySKOW97ESgz1kunz9ex+tf/oiDancLikeGIcoSssnFJkk8RpbMmM5M8oJhlXRmC2bt7F9x98/UIBilorckmcktffbsC9zwyXhvSrMnU1GgYYsVs0pqSRZeH4MvgD5zRxKwRjuZDBoFaRcDNuOkwxdVf'@; put '8WLrGje/t8Z6Wav4J/lk3QeHcMogWi+pla2DBVOkisIh0cIUbVa1apIrQzBHDhuIG666RKsMcjcJ5kfTP8P4Ca8n+StmmksXAiJZdOqQCE6mVIapTZ6uWTDnNQhUHwE79nIukyg+8iFYbshl9ZFz5pHtu1WUjHRZ+tQkFyvmlBc8vAFSK5NcGYJ5/agLcd6IwVoRTJEoeu6ViXhv6kxnflNNr2qA'@; put 'QBT5hYzFvCKEgoZGeL0GAJqPGARqDQG3102rkIXpL/uwb4e4xg3BrDXwU3Sixi0PZpL79Mok//RVMNnHlyLUUtOsMgTznpuvQ+9TT9FKZD1CF+pD457Dgq+XpWZ2TatpQcDWxTw5gv4XhCtcNDr4adKCpDmpQSCFCJBLCp2c/ZYX67/xsAqXIZcpRLvWms6tz0Sfa8qRnVshNKXDz69IFc2fEsXX'@; put '09WSKlKCYEpijyT4tG/TUiuJIikRKRV8Nm7ZVmtfPnOi2kHAli0aEkbXfi6T8FM7kJuzGATiQkASe5bMAr76xFTtiQs4hx/s9Vn48bVBFDQlwdSkJrkQzGVzLcx5Ry2pIiUIZv16+Xjsvt+jQUE9bSSKJIN809btuP2BMSguKXP4V9Z0ryYIZLNG+ek/C6JVJ7mARWrShPmMQcAgkAIEhFyu+9bC'@; put '3Ld9KC02WeMpgDh9TZJUDtWsJrnX78b65VF8MsEQzKQvrNbNKVF07y3wMilGqqbosIlw/JLlK3H3w09qMyYd5iWpY2BWeUFDCwMuCaGwmQfhoCGZScXXNGYQqAECQi63r4tg1kRm5e4St7hxjdcARkd/pO/IIDr0Zhc1qUnu8bqwa4tFqSLRwlRnvSphwTy1S2fcd8sNCIepJaHJJgk+02bNxdjn'@; put '/6XJiMwwKkNApIsatrDQ/8IQ8iXpJ2QU2CvDybxmEKgNBLx+D/ZstTDrDS/2bhODRW2c1ZyjthE4ZVAI3QfrI1UkWeTFey28R6miYJk6UkVKEMxhA07DzdddqVcGOWuQ/+vt9/Hqux/V9nfPnK+WEZDqEo1bR9DvggjyCt3GklnL+JvTGQQEgRi5/OwtD3ZvFnKpjiXIzGB8CBzfPYTTz+fdgyZS'@; put 'RS5qtQbKK8TWi/epE9KhBMH8+U9H4IoLf6IVwXTRRT72uVcw/fMv4/vmmKOVRMAuJdkqgr4kmQWNXIgEjSVTyYk0nVYSAdstznJ7c5gxvne7sVwqOYlxdLpZ+zDOvCwCj0cTqSK5F6LqzPvP+LF7i7FgxrEUqj70N6N/jh8P7q8VwQyFwvjT488wDnNV1QCYI7RAQEhmg+Oi6H9RGPWbMDzIkEwt'@; put '5tUMwsEI8MIs5HLjCgvzJnkZc2m0Lh08W0nrWoPGFoaOLkdGFudbkzAIDzVbP37Rg00rDcFM2kKRhu5lichep3bVSgOzqLgEdz40lpnkO5KKlWnM6QjQXU5LZo/hFpq1ZbUficnU5AfQ6cib/tUtBMSt6GHs2spFUSya4kPJAcrWSN09s2mPQBYVPEZcG0BugVsrqaJP/02x9a/UEVt3vIvcQ1fy'@; put 'o/f8Dse3ba2NBqb8yG3dvhO3PfA4DhQVa/9lNwP8IQKs9tMwiu7UyWzfBRDBfVO3/IcYmecGgZojINYeqd+8ZIYb384RBQd14tZqPmrzyRgCumphzpsUxTefqSO27niCmZuTjTHUwGzcsFArDczvVq+jBfPv2owp9sU2++ojIHfZJ54W5p8Fb4bJMK8+cuZIg8DRERDNwOK9UXw13Y3vF3thRYzV'@; put '8uho6fmOzPiQ/wmgWRu6hyr+V36gIrb+9Ywo5n9oCGbSJrNRYX2bYObm5DAhTI/ECJEomjv/Kzw47vmk4WQaSj8CYm1v0awJ2rZqjhlzFlSrQ76MKFqfFEG3MyOsYe6i1cW4zKsFnDnIIPADBFx0h4tLfOv3Liyc5sbOjW56Bqoml16vB5kZfpSUlhtN4h9gqvLTARcH0LaLC9GIpUUUkhDMFV9E'@; put '8dlbhmAmbV22a9UCD//hJv5w6COy7vX58MG0WRg/4fWk4WQaSj8CebS2//LqS9H1xI544PFn8c1331erU5L8U9jcQrfBEbTsJO5yJgxGTGBmtcAzBxkEiICHVstwuYXl8zx0ibtRVlS9RIiC/Dxcf8WFOOH4tviUih6vT5qKsvKAwVQDBHqfG0LnPvw91URs3cc1vvYbC9NfyVRmdhzvIu92Uif8'@; put '8dZf6SWyTg3MV96ajNfem6LMQjEdPTYCcgN0Conlnb++Bn6/D6vXbcBD417A9l17jv3Bw97NzLHQqVfEdpln5Rlr5mHQmIcGgUoRsBN5pMrJJuDrT1l+d5WXxQyqtlpKYxILf93lP8MIKpR4mBAk1dXGv/gapsycg2AwVOn5zIvqIKCb2LrX58bWtRY+eCZDmWQ1xxPMAX164HZetMvLy9VZ2VX0'@; put 'VFzk41jBZyor+ZhNDwTycrN5sboQg/v1sdeqXKwWLlmGR5+eQNdb9WvNu6nb1riVha5nhtGsHbGhIdNYM/VYI2YUyUVArJahsiizxF1Y9pkXxfuEWFaPXEpPenU7GTdeezmyMyvqO2dkZGD5ytWUj3sWe/cfSG5nTWu1jkCnPmGcdq5YMCNauMilXORuVqGaJOUiFSkS4HiCOXLYANxw1aVaaWBK'@; put '1vDDT/4DXyxeWutfOnPC5CMglpDj27TEPZTTys/LtRO35DVxcn8yex6efmkiQnGWOc3IjuL4U5kA1NdCfn0XPy9M07jNkz97pkXVEHDzQis0cttaF5bMcnPvqbbVMjZWuSEUb8MJHXgXd7BepHxng6EQ7vvbU1ixai3VHfSI+Y+Nua7t23Zl9bQLI3BpUs1HykUe2BXFJJaLDCmiiuB4gjnqgnNw'@; put 'Gf/KyqpvBXL6FykQDOLuh5/EyjXrnd5V079qIJDh97MQQD9ce9kFR2i1ygXL4sXrnQ8/wUtvvh93AoHEZtZrZOFkksy23SIUjBbpFZMEVI0pMYdoiIC4w70kl/sZdbJirgurFnkRKK2+xTIGiZcepNGXnIezBp0BNnnE99LP7/LY517GjLkLEDBu8hhkSu5bdIxgwCVheDWp5uPmYi0psjD5yQyU'@; put 'Fashu+V4gvnLqy7GucMGaUUwi0tKcceDjxuRdSV/tv6702K1vImutt6VFAMQkhlmFuMbk6bUOObW66sQZz/xDAvN20fh8Zn4zP+eBfOKtgjwwuojsSwttrBmCTNp57ntijw1cRN6GSt9+QVn85oykHGXzDI/aL2MYZeZmYm3PpjGGPn3UVqmT1hWbHx1ad+oZQRDrwzDx99PHXw/dj3yAOuRj/Mz'@; put 'HMQQzKSs5VtvuAqDTu+tTQymEI7tO3eTYI7Fnn37k4KRaSS9CDRv2hj33fK/aNKoYaXJaBKPKdaQf7/9Ad7+aHqNOyuSRs07RHBCHwtNGKfpYdC3sWjWGE7zQacjQOuij2s8QJ63aQWwfK4HOze7a6xrGSOXI88aRMslQ1h+QC4FDonDXPj1t3j4qRdNEQynr48q+lef5SKHjQ6wXKSYqas4WIG3'@; put 'uWS59hmDSQvmvp3VU0lI97Acb8G8/5Yb0JPB2IGAHtIRQjA3bN6G2x8YY+6Q0736k3B+uWh16dwBd914LV0xR5fSknkPMdj8dVoyJ07+uNKLW3W748uwKGdkoSMzzpu2isJtiGZ1oTPHqYDAQYtlIGhh80oXvvvCg+3r44+zPHyoonV5+fnnYCQtl+JqrIxcyvHiPhcDwL2PPmk8TIcDqODj3PoW'@; put 'hl8TQHZuRcyu8hyTBJMLFx8+68fOTYZgJrwk5aL88P/dhM4d21M2Iphwe05oQKxZK75fa6r4OGEyktAHv89LC3sv/Gb0ZVWuUZl7SfZ5mfGYk6bOSDiJQCyazWjR7HCqhaZto8jIFHc83UFGQzMJM2uaqG0ERCjdy78A9Sw3r3Tju/nuhImljCGLWeJXXTQSwwaeweQgfj8qsVzGxirXnHAkgj+N'@; put 'eQZLl69K+Dsaa9fsax+B7FxaMK8pR34Djzb1yOXm6KMXvHZiW+0jGv8ZHW3B9FOQXMpEtmrRTJs65EIyFi1dbmcqxj9d5hNOQ0AuXucNPxNXXDiyWmEcMv+lFHKe/PEMWjKn0XWe+I2Tx2ehUXOgffewbdnMLmB8DnOBwhQY1sE15LQ5N/1JLgKSFS4ZsqX7o9hIV/iqhR7s3kKLZVhMNolt9evl'@; put '4xfUuuzbsxuJJSu6HINcxs7k43XnEbrIP/9ycdzqD7E2zD79CPgzoxhOF3lBE1owOe/KWzAJqdfrxscT3Nj4nTf9AFejB44mmLE65EeLbavG+Bx3iGhgzp63AA+Pf9FxfTMdih+B7KxMJg2cg/N/PKTaiWhCMoOhMGbOnW8nE+zdXxT/iSv5hJtZ53mFFlqdGEGbkyw0aFbxg2SsmpWAZV5KLwK0'@; put 'xEhGuFSt2rvTwoZvPFi7xI19u6pX3rE6nZfY6F//z6U4sdPxjF2jFmI1yKW0K3GYT00QwfW5DM1K/AawOn01xyQfAY/HwohfhNDguCgJph732r4MDz55xYV1Sw3BTHjFyN3nY/f+Hg3q17O1BRNu0AENCMGc8unneOKfrzqgN6YLiSKQk52F0Zeeb8sUxSOlJSRTJIwWUYz9pTcnY93GLYl25YjP'@; put '+/xRNG1DsnlSGMd1iCJfrJo0CEWMC/0InMyTWkSA68/jcdNaCQTKLGynjuXapR5sWulBeYn0I3GLZWw0XTt3pFfhXHRq36bSxLvYcZXtJZP8H6+9g/emfIpyQzArg0iJ19zuKM66OojGbcguNXHmSD3yT19zYTUlulTYHG3BbNqoEI/ddyvESmRpInorQeQig/GP195VYX2YPlaBQG5OFq4fddGh'@; put 'Cj5VHH7E2xLvJURz3aYteHniZHz51TdHvJ+MJzwFsvMYo9neQuvOEVYJiiKnHpOR+J8hm8lA2LRRFQLi/pYqJKJ4sG8H6N7zYMO3buzZVvOM8KOdUxLthvY/DRecPQSNGzaokWEiKyuLcdKT8eb7/eqQVQAACklJREFUH5u65EcDWoHX5bdvyNUBNBOCqYkF08vqVQunulgW1afADPCWsfvgnxJ6'@; put 'Z24tmzWlBfMWO7Ovuu4NZ47kP73ysA75y29OYjbx1P+8aB4pi4AQTCkROYQXtZqWM5Wbjn0HiuzEn/c/mR1Xacl4gJM7+uwCSh21i6A5s9AbtSTZzHezri3jNY1lMx4ozbHHQoDrSZIRhFTSM40DuyPYtoakcrkbO9Z5bNkhublK9taEBokLzxmK/n16IjPDXyNyKX0SgvnqOx/aig9GCzPZs1S7'@; put '7Q0eFUCLjjwnq6A5lujEAYkQzK8/BUmmP45Ppe9QRxPMDm1b4S93/da28mhDMEkmnv/Xm3h3yoz0zbo5c9IQSAbBlM54aHkRQfZFS5fh37y4rV63MWl9rKwhqRKUW2DZ7qPmrHjRRMhmfTf7IVpr4krXxKdU2eDNa8lHgHzRS/e3i+tHLJVFrLazbb0bm1eIxJCLLnAhlMknlbGB/KjbSbjkJyNw'@; put 'PK8ZDLZMyOMlLvIXX3+Xv9GfGgtmDGBF9wMvDaL1yew8Ex51IJhy07ZmCTDztQwlZsTRBPNkBmf/+fZfJ/Rj4bRZcPMKPu6Ff+HjWfOc1jXTnxogkCyCKacWq44QzW07dtmC7J/M/iIpWeZVDotkMzsnioYUb2/GSkGN20RQ0BDwM6Bc4kSNK71KBOveAeSKHlopXbzgybotL4ngwE4Xtq0jqfze'@; put 'hV3U6Qva1X1TRyoF9IYNCmxtyyH9ToPUFw9TBizRzcRgJoqgcz7f/6IA2nVlMhlvmHUhmGtJMGcYgpn4Iut+8gm4//e/TMqPRuK9SVIL/DF+7JmXMGvewiQ1aJpJJwLJJJixcdjWTIqyL6Q1U0TZv1u9LvZWyvfiKfDz5rheEwvHtWGiEN3pDZqSgNZjcgbzhKK0bobpbhKXk9nqEALkieL2lnhK'@; put 'qYITCkVQvBfYs9Vtk8rt61gjfIe4xLlIamHz0RPUp0dXnD9iMNq1aZmw1fLwLksW+fP/fgvvT5vNJB89CnwcPr669LjfzwJo300fginfvx0bLXzwdJYS0+hoC2afU7vgDzddX6WAtRJIH+xkhBfmR8b/A/MWLVWp26avR0EgFQRTTiVWIYnN3L13H6ZSLmXKjM+xa8++o/QidS+LKz0730LDFrCz'@; put '0huyvm+9hlFk5njZR8Y1GcKZOvDT2TJ5oodrMGahDAdIKA+4sG8bbOukuL33bmcZx1LpZGqtlD+EoWO71rb27I9Y4U10aEOh0A8PSei5EMzxL76GqbOMTFFCQDrgw6f/JIjje3F98oZdh1tiqUe+b3sU747LdAC6VXfB0QSzX+9Tcedvrq1x8kTVw6/9IyS27YG/P2eLrdf+2c0Zk41AqghmrJ9i'@; put 'zSSTw9oNmyjOPhOfz/8qrSVG3R5qbTaIorA566G3tlDYzEJ+IQlnNqtliIWToZtyExUVC6cOv+ixidB5z+tvzN3NKEqGJEVRXkZCua/CKrlroxs7t7hwYAflhMTtHa1dQhmD/rgmDTGc1XjOPP1HqF9Qz/ZspSI23xDMGOLq7/UkmBYJprFgJrw6B/btidt/dU21BawTPmEtNBAMhvDnsc9iCcuQ'@; put 'mU19BEQH80pW8Rl51qCUrlOpLiJlJpetXE2iOctOBgpwLaV7k8x0qfnboFnUzkovpKhxfkOL9X9JWvwkx5JwIUlDQjjlz2zpReAwy6SQSU4Ps7ojKD0AFO12UTqI8ZMkk/tpnSzex9Km1BlPRcZ3PCA0KqxPUtkLQ/r1QdPGDW3B9Iikp6doMwQzRcCmoVkdCeaebRYmPWEIZsLL6dyhA3DDVZdo'@; put 'ZcGUyhD3/m0865GvSxgf00D6ERCCOepn59ouu3iE1mvS85jbXMSfly5fSbf5HCz6ZjlDSNJPNGPjEbd5JhOG6jVm0hDJZgNaOAv4OKcea6XnuCuqt5DViGtdEojEWmYsnTH0krinkdGOmZREHJJKWTuSrBUoJZlk4ajivR6SSdDl7aE2pcu2VgbL5fzpsU5WNnLRsTyjV3ebWIpknWzJSOKp7FyH'@; put 'v2YI5uFoqP1YO4LJ73HRnijeGmNc5AmvzCt44b7kvBEs16VPoLUEjd/76HgmbqxPGB/TQPoRqE2CGRutkAWxaArR/Pa7VbYigdS3Lym103Zjhzlm76FbPTu/wrJZ0ISkk0lD+SxpmZ3PsnzZJJ5ZjOdkb+08T0M8qz9vBE3WAjkk5YEq9hJOYZFIBmmVDLA6TvEBNy2TJJI7hUhWWClLi2iZtH9S'@; put 'BXXnbVLiUbxX/Xv3QDM+lq02iGUMCUMwY0iov9eNYNozwq/thLsNwUx4dV5+/tn4Of90IZhyMSgpLcVdf3mCpQE3J4yPaSD9CKSDYMZGHSOaYQawr1q7HjPmzMcXi5di526m9zp8q7B0WsirD+QyhrOAiUOSPJRNd3tWLvd5kuQkuoq0wNnedYnrFI97RXyn7Wy3/3H4QBPpnhBHfl4C+2WuxRIp'@; put 'Gdzyori2g4EwiSRd3NSYLGECTvFexknSzX1gF5/TvV28HwiVixtcWnH25vV60LFtawxifGUvJu80LGxgy9PVJrGMIWQIZgwJ9fdaEkxOy4R7DMFMeHVeP+pCnDtsoDZZ5IZgJrwkHNdAOgnm4WCIRVPI19YdO/ElFQpmfbEQq9dvpls0dbFqh58/WY/dZJMZWYzrbGAhpwB2QlEuqw/JX1ZexXte'@; put '/rb6M4SAMsbTdv/y7CSf4nIXd7vtdudLkmh0iIMeepCsntawnQp+KIZGEsWKJzZpFPIozJH/S1ejtEJGKA4dDFh2HKSQyDJaHktJJEuYfFMkfxQzL9vvRlkp3d+2/KM0qtZWkJ+HHl07YwCr73Tu0A45Odl2Vng6SwMbgqnWGjpWb3UkmPLdePm+7GMN2zHvOTqL/LZfXo1+dJMkW4YiXegbgpku'@; put '5FN3XqcQzNgIRdpI6puXlJRiBfUzP/tyERZ/s0IJq2ZsDEfbe9wWvJkuZqxbdpxnZh5Y6lIsnizvl2sxxlNc7i5kZFjw8zi3Nwo3S/b6xBIqBE6EPIWQygliXIxsTnhpbLMpaex5bB978/B97PPc07Z46B2bOMozeUnalsdCfvmogjQKcZQ/un2ZQBMKuEgiKVROklhezOxtksgyurbLikgoiyus'@; put 'k4EyN49hW9Z/ziPNqrpl+P2suNMSfXt2Q8+uJ+I4usE9nBv5nU9FVni8OBmCGS9izj1eN4JpyxTtoEzR340FM+FVd9sNJJh9DMFMGEjTQMoQcBrBjA005j6XC/b2nbuxdMUqzF3wFZYzuexAEZmLphsdwjap9Aqx9FnwMdnSz8fezCh8/E32ZXDPMr4iJu/xR1k5ifGs3FeQUVZSYla820twyAxt'@; put 'PkqSam+yO8jvLBI9SyyGfC4Z8lZIpH1IGENCHGlN5D4UdiMc4D7oIpEkiWR4bDggRNFCJFiRnS1xkHK8fPZQ4/JQw02sza2aH4ceXTrbLvC2rVsgmzW/xcKeDjf4sSA2BPNY6Kj1npYEc7s6MkX/DwAA///r8VITAABAAElEQVTsXQd8FNX2/rZl0xMSSkLovXcBBUSKgNg7dkXF8tRn74o+n/7V'@; put 'J4oFsIMdO4KCFEFA6b33HkpIAklI22z5nzNhNcQkpGyZuXvmR5jd2Zk7937nzsw3p5q6DrrUA50uj919C/r17o6ioiKd9rBq3TKZTMjNy8NTr4zDnv2pVTtY9tYlAlGREbjhigtxybCByM/P12UfLRYLbDYbHHQdHTpyFBu2bMfS1euxbdc+ZGXn6LLPeuqUx/P3LZKvYVkqh4DNakXD+kno2rEN'@; put 'undqh6YNUxAXGwO32w2n04mSuFauxcDsZbfbMX7SZMxeuASFhY7AnFTO4hcEzrrUgVY9TPA4Xfj7KvbLqQLSqMlswvEjbvz0TkRAzlfTk5iEYNYUwsofLwSz8lgZZU8jEMySWFrpoc9/TDaPpKVj07adWLl+M7Zs3430Y8d1+9AvOQb5rF8EIiPC0aRhfXTt0Aad27VGo5QkxMbEaPOKSSWTS70v'@; put 'YWFheOvDz/H74hUodKih3NA75v7q39lXFaJZJyKYLrc6BPMwEcxxQjBrPGdEg1ljCKUBPyNgNIJZEg6vZtPlciE94xh2k1Z93aZt2Eikc//Bw8gvKCy5u3wWBP6BgNlsRp3EWmjVtDE6t2+NNi2aoH69OoiIiADPK/4zAqksOTDW9o/94DMsWLJKexEr+Zt8NhYCqhFMs8WEQzs9mDkx3BCCEA1m'@; put 'AMUkGswAgh2gUxmZYJaEiIkCP1h5yc8vQOrhNGzfvZfM6TvIlL4XR9IzyKzpKnmIfA5RBGKjozTTd8e2LdG2RVM0bZSChFrx4BcWJpRGd2kqJpifE8FcKQTT4HN84PWFaNiaBuH2KKHBtFhN2L0O+P1ruyEko2uC+fg9I9G3ZzfD37C8M0EIphcJddaqEMzSEuGHLBMG1j5l5+QQ4TyKrTt3Y8uO'@; put 'Pdi5dz+Oph9DEZk8ZVEfAZ7jKUl10apZY7Rv3QLNGqeQ1jIBEeHhf/lTGk1LWZHUhGBWhI5xfmMf33NvdCClFfVZIYK5YzWw8DshmDWeiQ/dcQMG9OmlHMF8+tVx2L1PgnxqPEF00ICqBLMktKzdZLLp1VDlnMjFwSNp2LF7P5FOIpx79iMtI1NM6iVBM/Bn1lAmk5mbCWXblqyhbKCZwSPJ7M0v'@; put 'yayhZE2lqosQTDUkazYRwbzFgaSmFN5Drr8qBPlYw8xYPRdYPTvMEELStQbzRorOHXHJeRTJp44vWKHDgefGTNA0QYaYIdLJChEIBYJZGoCShJO1BCeIcGZQgNCeAweJbB7Ajj37cODgERyjCHWViUhpXIz4nSO9E2vFUTBOMmkmG6Bl00ZaYE5iQi1NQ8lj4uAc/guVRQimGpI2W9wYdqsTtRu4'@; put 'QVxTCYJps1uwdAawYX6xO5PeJaVrgnndZcNx3WUXqEUwKe3Fc68LwdT7hVHZ/oUiwSyNDWu1WLvJ0em8sIaL0x8dPpqB/amHsWvfAeyjNWs9s7JPiGm9NIAB+m61WlArNlbTTnKkd/MmDdGI0ghxkA6nD2L58QsDk8lQfjEQghmgCenn01htHgy/vRDxSSYimGr4YIaFWzB3sgm7Vhffa/0MYY2b'@; put '1zXBHHHxMNx45UVKEUwOlPjvm+9jLUXrymJ8BIRgli3DklpO3oOtEGxaT888rkWoc5T6vtRDREIzadsx5FFgkV7zIpY9Qv1uZRyjoyJRKy4WKcl10TC5Hho1SKZ1EmonxFPaoGhwKh5emEjyn0o+lDWVjBDMmiKoj+PDI9wYQgSzVh2zMj6YNjKRz/nCjL0bhGDWeJYN6tsTj9w9UrcJrKszQCfl'@; put '43pl3EdYsXZTdQ6XY3SGgBDMyguEtZys7WRNGa9ZU8YR68ezs8nEnqVFrh+k6PVDaRk4cOgwjmXlaMQzlLVpFaHLGsmoyEjEk/axXp0ELT0Qpwhi/8m6tRO07fw7486LkMmK0Pz7N56f/5swCYtXrBVt+9+wGO5TZCyZyG8rRHS8WRkNJkeRz/7EigPbiq9pvQtF1xrMc87qgcfvuU0pgumBCWPe'@; put 'nYQ/l6/R+9yQ/lUCASGYlQCpgl2YaHq1nbzmPyaeeVTxKic3D8eJZLJ/J6dJOkLazqOUrzPzeJZmgj+Rl48CcjlRlYCaCRu7PQycvDyOkpXXio9BnYQEjUzWq5NI60QkkJYymoJyOKLba+JmDaaXTIpWuILJV85PrMEc894n+HPZGklTVA5GRtgcm1hMMMMjyUROHVYhyMdMlXx+/ciKw3uEYNZ4'@; put 'Dp7ZvTOevn8UHBQYo8piogfo2A+oSsSi5aoMKaTHIQTTP+Jnoukln17iyWdi4sTm9gJKAp9P66ycE5pfJ6+PZ2VrWk/2/8wmczyb5HM1Ekr7ExFl4soWhGCag1mbGGazajlHw4k88vyJJi0jm7TjYqKIRMaRaTuGtI+x2nf2jeR9IohkhlMJQ68WmIkjj4fXPB4hkr6bh2Ii9x2WwWwpIcmNoSML'@; put 'YQsneqkCu2SWTOmWfnk/DBkHhWDWeG717NIBzz54pzJpihgQC5lf3vn4S8yav7jG+EgDwUdACGZwZFCagHrJqJdwMeniYCPO2lBU5NQIJn9mX08Hlf/LLyjQCCoTVS4HWEBklbfzvk4isbzmsAD2mebPbs8/SxxyBLaNyKJ2bpOZ/Bpt8G5j8sg1re20LSLcjgj+TNtY08i/8TZtX/rdTv6QrH3k'@; put 'MXmXkuPwEkghkV50/LsWgulffAPVer0mLgy+wUnXlhoBPmTQoPuRBz+PD0NWuhDMGs+jTu1a4b+P3qOUCYwJ5qTJU/DDjN9qjI80EHwEhGAGXwYV9cBL2pgEekko7+/dXvJzSQLn/exdl3cObpMX77rkZz7We7xXa1p6XXIfrSH5L+gICMEMugh80oGGrV045xonOB+mEgpMMo8X5rkwbUI4co//'@; put '/TLqE7D81IiufTA50e8rT92v3by9N2o/4RCwZi0WKyb/NB1f/kjJrGQxPAJMMDlf68XDBirlK2x4wcgABIFqIlBMMKUWeTXh081hLbq60OcyKgjALiS66VX1O8L+l7nZRDDHhaMgTwhm9ZE8eWRjSq3x+uiHNb8jVQgmm8J+mjkPH375Q43xkQaCjwD7zo0ccQnOG9iP/AILgt8h6YEgIAjUCAFO'@; put '4fQ2uTHN+3OZ5j5Ro8bk4KAh0LZPEXqdR+6X5PKiBMG0mJCV4cbP4+wocgjBrPHESq5XG2Ofe0TzZVKFYLKJfM6CxXjroy9rjI80EHwEoqMicOcNV2FQv95CMIMvDumBIFBjBNh3dsInX2MW3acLKThMFmMi0PXcInTpT0FwFNinAsHkFEUZB4Fp5IPp8RS75uhdMro2kXNSYNZgciSl13dJ74Ce'@; put 'rn9MMBctW42Xx318ul3ldwMgwATzjuuvxOCzzxSCaQB5SRcFgdMhwATzwy++xy+/LdSCxE63v/yuTwTOutiBlj05MkYNDabVZkbqTjd+/dB+is+3PtEv7pWuCSZXnHjjuYeplFmCMoE+HFywZsMWKhf57l8BAHqeINK3ihEQglkxPvKrIGA0BMIp0n/S11M0VyZObyWLMRE4Z0QhGndkgqmGBpPr'@; put 'kO9a78K8L8INIxBdE0zO+zb2+Ueo3Fk9LeebYVCtoKNMMLfv2ovHX3pTS4dSwa7ykwEQEBO5AYQkXRQEqoBAREQEvvjhZ3z/yxwtrVUVDpVddYKAiYziw251oG4TMo5ThjEVTORch3zTYg8WTSku86oTqCvshq4JJnsZjP3Po2jepBHloiuqcCBG+ZHTmaRSObzHXxpLiaDzjNJt6Wc5CMRSFZV7'@; put 'Rl6Dvj27aQnAy9lNNgsCgoBBEGCCOXnKdHwzbZYQTIPIrHQ3w+xEMG8vQHxddcpEMsFcTdkNV86ylR6ubr/rmmAyai89fi86t2+jTDUfJphHMzLx1CvvIC09U7cTQzpWOQRioiM1H0wJ8qkcXrKXIKB3BESDqXcJnb5/UXFEMKkOeVQc5b/lfLSnP0T3ezDBXDwV2PinEEyfCeup+25D317dlQqg'@; put '4GoiTDD37E/1GU7SUHAQ4DRFt15zKYYN6KvUHA0OmnJWQSD4CLAP5kTywZxK6eTEBzP48qhOD5QrE0kgMMGc+6UJu9ZaqwNJUI7RvQbz37ddp+UYzM/PDwpA/jgpl5574c33sX7zdn80L20GEIFIqhF93aXDcfkFQyTRegBxl1MJAv5CwJumaOb8RVr5UH+dR9r1HwIprVwYQFV8LGY1tJeMFKcp'@; put 'mjXJgtTtQjB9NnNuufpiXH3xeWo9vKlu8evvfYKFS1f5DCdpKDgIcF3pi4acg1tGXCoazOCIQM4qCPgUAYvFglfHT8SSleskENOnyAausZbdXDiLq/gokgMTHJDipjrk74ch86Ax6pCztHWvwbxs+CCMojyDKmkwORcm51mbOut3loEsBkbARrLs07MrHr7zJmUC0QwsDum6IFAjBDjLR0FhIZ4f'@; put '8y627txD/IRCkGUxHAJdBjjQZRDFkitSxcdEZSId+S5MHW+cOuQ8aXRPMAf26YlH/zVSKYLJ5SK/+3k2PvmWPHZlMTQCFnogtWnZFM8+cAfsVGJOlYpThhaKdF4QqCYCfG9OPXxEI5iH0tKr2YocFmwE+lxciBY9qZyiIknWzVQmMueYm+qQ2+EoMEaZSJ4DuieYZ3Ruj9EP3aWUdog1mPMXLceY'@; put '9z4N9nUo568hAkwo69VJxHM0RxulJCs1T2sIjRwuCBgOAfa/XLpqHd744HNk55wwXP+lw4QA3ZMH3+hASiv6TGZlFSLI2f/yaKobv5AG06PZy40had0TzJZNG+HVpx/QSiOpoh2Saj7GuDgq28sYiiT/1y3XoP+ZPcQPs7KgyX6CgA4R4Ajyz7//GT9Mn4P8gkId9lC6dDoEbGFunHebA/FJ6qQo'@; put 'soaZsW+TG3M+M04VH5aT7glmct3aeIOq+UTQha9KPXLOhbn3wEGtmo/cxE53u9D/72FhNgzpfxbuvulqSbauf3FJDwWBMhHg+zL7XL7wxntYv2WHMuWJyxyswhuj492UZL0QkdFEMGmcKmgwi6v4uKmKj91QktM9wVSxHrkkWzfUNXLazrI8mzSoj/88cjfiYmPkwXRaxGQHQUB/CISRD/XWnbvx'@; put '0lsfIj3zuP46KD2qFAJ1G7lw7o1OWG1qmMd50Ewwl88A1v5unCTr3G/dE0x2un599ENo1rihUv5tHKk4+rUJ2EZ1yWUxPgJsJueSkWf3FjO58aUpIwhFBMQ8robUm3Z2ot/lbqrg41ZCe8lSYYI5bzKwc7UQTJ/PUtYM9ejcQSnzI/keY8y7n2DRijU+x0saDDwCVsqd17t7Jzxy181aJLkq/sKB'@; put 'R1LOKAgEHgHOfclBPc+9/i527tkv2SACLwKfnVG1FEUMDEeRz/zYgkO7jJNknfutew0md/KBUddj6Dl9lUpVxJHkH335PX6a+TsPURYFEIgn8/hjlFKrc/vWSr0MKSAaGYIgUCECXH/859nztRKRuXnqVI2rcNCK/tj3CkpR1NUMjyIpisgDC04nJVkfH4asdOMkWefpZQiCeeMVF+Lay85XjmBO'@; put '/20B3v30W0Uv89AbFidd70tJ1x8YdYMWkCZazNCbAzJi4yHAWT2YVD5P2svt5LLkpjQ3shgTAbPJg3NHOpDUhGRIOfJVkKSZkqznZrsx9R07CvONkwOTZ5AhCOawAX1w/+03KEUw+aa2ct0m/IciFmVRBwEO8vn3rdfizB5dJGWROmKVkSiMAGsvv5n6Kyb/9Cvy8gsUHqn6Q4uMdmMopSiKSVAn'@; put 'RRHnwEw74MH0CXYizBwXb5zFEARTxWTrTDD37E+VVEXGuVYq1VNvZZ8n770NMdFRElFeKdRkJ0EgOAhw5Piefal46e0PqYJPWnA6IWf1GQKJ9V0YeksRrGE+azLoDdnsFuxc68bvXxkrRREDZwiC2bRRCl575kGwI7ZKZses7Bw88fLbOHTkaNAnsXTAdwiE28Nw0ZBzcPPVl4gvpu9glZYEAZ8i'@; put 'wC/5bA7nYMulq9ajyOn0afvSWOARaNqJIsivUC+CfM1cN1bMFILplxmVEB+Lsc8/ivi4WKU0Qi6XWzORr9u8zS+4SaPBQyAuJhr3UHWffr27K+XaETxE5cyCgG8R4LREP/wyG1/8OF1M476FNmitdR1UhM4DyPfS5VLC/5KB5BRFC74zYdtyY0WQc98NocG0Wi2UC/Nh5XJhmkkj++6n32DG3D9Y'@; put 'FrIohAAnX29Yvx4evfsWbd4WUt5TWQQBQUAfCLDf5bLV6zGWao5nHs/SR6ekFzVGoP8IB5p0oGZIeaNCgA8DYuEURZOsOLjDWBHk3HdDEEzu6OgH70Cvbp2VMjlyEvmfZs7Fh1/+yEOURTEE2B+zXavmeOjOG1EnMQEOh0OxEcpwBAHjIWC327F73wG8Om4i9h08rJTblfGk4bseW60erURkQjIR'@; put 'G2KXKhBMTlFU5OAURXZkZxorgpwlaxiCeecNV+KS8wYpZW5kH6BV6zdr6TF8d5lJS3pCgLXv3Tq0xX0UWc4uHkVFRXrqnvRFEAgpBJhcss/7axMmaVXUuPa4LGogEJdIAT63FSE8kogNDUkFgskJ1rPTPZhGBLPIYawIcp5VhiGYHDRx980jlCKYbEZNPXQEj744VsvDpsZlLqMojQDnx+zZtYPm'@; put 'k8mR5UIySyMk3wUB/yPA5DItPUMzi6/fskMpf37/o6f/MzRs7UL/a12wUAJMFcglI24NMyN1u5uq+ITrXwBl9NAwBJMf0KMfvEs5MyMn+H361XcoZdHBMsQjm1RBgEkml5K8+6arEU11y50SsaqKaGUcBkCAyeVBSkP01kdfYuO2nUIuDSCzqnax09lF6DZEvQCfjYs8WPyTMfMuGYZgNk5Jxmuj'@; put 'HwI/qFVKVQSTmdJkTMIfy1ZX9XqS/Q2GAJvLu3dsh/tuuw5cVlJ8Mg0mQOmuIRHgaPFde/fjzQ+/0OqMi1nckGI8bafPvqoQzTqZKIJcHQ0mR5D/SSEam5fYTjt+Pe5gGIIZEx2ppSriYAkXpSBQZeHcnt9Mm4nPv/9FlSHJOCpAgOV9Vo/OuIVyZNarkygkswKs5CdBoCYIsAsSay5Xk5/7BMrW'@; put 'cYDckZRSTtQEHMWOtdrcOI8q+NRSKMCHRcRVfGZOtFAEufFSFHH/DUMw+Wbx8pP/Roc2LZV6KHOqomWr1uHFtz5kecgSAgiwJrND6xa49ZpL0bxJI20+y4MvBAQvQwwYAvwix0GUs+Yvwmff/aylIuJniCxqIlCrrhtDbimEPYpkrIgDJk9Xx8kI8hwDRpDzTDMMweTO3k+mxaED+ipV45lvevxm'@; put '/ZgE+rCIQ2bhh1+TBvVx/eXnU/qtTppPplsiWkNG/jJQ/yFgs9lQSCnBfp49H19NmYGCQkkP5j+09dFyk44unH2li9ITqWMe5/yXmUc9+GWcnZ4Pxnw5MhTBvHz4YNx+/RVKRZLz5ZlfUIhnKNBn594D+rhapRcBQyAhPg6XDhuA88/tjzB6MEqEecCglxMpiAD7W3Iwz+SfZuDP5WukQo+CMi5r'@; put 'SN2HOdCpH+B2qkMwuQb57vUuzP3CmBHkLCdDEcwzOrfHcw/frZSJXBMCabPe+fhLzFm4tKxrR7YpjkBkRDj5ZXbBiIuHoX5SXTGZKy5vGZ7vEfCaxNnf8vMffsGOPfuV8tX3PWLqtMi6vcE3FyKlOVnH3R5VLORaichVczxYNduYEeQ8wwxFMBsk18WYZx/SHLdV8lnjij5sznnv8+/UuepDcSRU'@; put 'PiIyGrBHeHAsrWpVF7jqT7MmDXHVhUPQm0zmvEgqo1CcRDLmqiLAgTw5J3K1e+jPcxbgWFZ2VZtATIIbucdNcLuNaYqs8oAVOiAixo3htxciKt5MJnJ1CCZrMOd+YSItpjEDfHiKGYpghtvDMPY/jyIlqZ5SD1/2x9uwZTue/d94KqEqlSWMeu8LI2LZY0gREhsAcz+zIje7aiSTx82J2Af17YlL'@; put 'hg2kKPPaWmlUlV6mjCpb6bf+EGCtJf9t3LpTM4nzPdRR5KxyR9v3caLbQDc2Lzdh7TwrigqFZFYZxCAeUL+FCwOvddJcUIdccoCP00n+l+/acbyKyoogiuIfpzYUweTeP/fQXVQVpaNSNck50CfzeBae+L+3cORoxj+EJBv0j4DZ7EG9JnSju8EJm82CPRtclL+MyntV42FlpYdmk4b1cRn5HPfu'@; put '1lHT2EvOTP3PAelhYBDg+yVrLdMzMjF97h+YMXchjmefqNbJG7Zxos9lbkREe5B/woM5E8OQfpie7h4hmdUCNAgHdepPCdbPVSvB+t8lIsOoRGTVFRVBEEOZpzQcwbzl6otx9cXnKRfo4yLfkVfHf4xlqzeUKSjZqG8EwiLc6HVBEVp1N8Pp4DytFmxe5sGK6bZqm93YN5P9ji85byBaNWtC7biV'@; put '0tzrW6LSOz0iEBZGD1yqgrVk5VpM+XUe+Vruo2uienmR4+q4cc7VDsTVI1MeGY6sZJJcORvY8IcVzmq8GOoRL9X7xNadQdc50LAdjdSljgaTS0Tu2+TGnM+MG+DDc89wBLP/mT3w+D23KpWqiAXBpp5vplLCdXJQl8VgCJDvZWKyB+fe5IA9kipJ0MsCmzjcHnJ9WACsmmOj79XTiPANNCE+FoP7'@; put '9cYwStHFQUAcaa5SsQGDSVu6GwQEOPUQL9t27sGUmfOwYu3GGkWIs580V35JbmEq9tuj3IlmqxkZB9zk9xZWLfeWIMAS8qeMiPJg6KgCxNZSy/+SK/gYPcCHJ6fhCGbTRil47ZkHNUKmkm8a+2FyBOTzb7wn1SYMdtu02jxo09uFnsM9J7WXxQNgTulykVznmLDxz5qV+mKCmlS3Ns4lojmQfDTZ'@; put 'P1OIpsEminS3yghwACS/fO/Zn4qZvy/C74uWIyuneuZw78nZV6/XRQ607EYXKOdN9Cbm1r56MO/LMKTuNFPJweq9FHrPI2v/I5DczIVB16vlf8mo2UiDOecLM/ZuMG6AD4/DcAQzItyOt//7OOrWTlRKi8MEIi09A0++/DbSM4+zbGQxCAL2SA/6XlGExm1NpxJM7j+5z7C5bdVvZDJfXPObhZnm'@; put 'SXK9OhQI1EsjmnwdsOlc8mcaZLJINyuFAGss+aV7/8HD+G3hEsz7cznSjx2v8cs32RfQdYgLHfuQTZzs4n+Ry5O94sjdNfM8WPc75aQVM3mlZBXMnTqdTf6XQ9Tyv2TFRFGRGz9PsCM73RJMeGt8bsMRTB7x8w/fhTO6qBXow+MSP0xGwWiLh1KckJnmZgeiEujxRX5AJRdNB8Ik00Ekc45vSCa3'@; put 'z0SzLtUyH3DWGejfuzsaplARXlqYaKqk2dcGJf+FBAL8ks3EkufvvtRDRCqX4ffFK7QXbp/MaWq30wAnugwgbmly/YNcMsgWmxkHd3ow/ysbCvKMG1wRChOG58TgG4rQoDXdcxXKf8n1xzMPE8EcH05KNGNr0Q1JMG+68kJcc+n5ygX6sDno22mz8Ol300Lh/qDEGE0UPZ7cnMw0lCbDxC+bp/JL'@; put 'bYx/k0yQZsSKdQss1fbJLAu0WnGx6EWZFdg/uVWzRoiKitKStYufZlloyTa9IcCaSiaW/HK0ffc+zP1jKRZTEM+xrBzfdZXISEfSdnUeaILFSuSynGxwJirPl5flxsyJrD3iK9fYD3jfAai/liJjPTjvtgIl819uX+XBgm+Mm2DdO1sMSTDP6tEZT99/h1KpilggfKNdv3k7Rr8m+TC9E1Tva4vV'@; put 'jRZdPTjrUhdcZNYob/GSTDf7ZM4in8wlpKkpf/fymqlwu53yxLZp3gRnk0azW8e2mp8mv+Vzwnapc14hdPJjgBFgbaXXvzIrOwfrNm/TzOBrN22tUfBOWcMwUxBex/5OdDqH7rEWijin666M98DiQ+lCdVMqzTmfW5G2x1LtDBBl9UO2+RaBhq1d6H+ti/J1qFMekhHiAJ9FP5mwaVHNXap8i3jV'@; put 'WzMkwUyhSNoxox9COOVC84nppOq4+e2IbHJgf+Llt6ie7lG/nUMa9h0C1jA3OvR1o/sQD/lsnT5diuZfU2imFEaUDmU+JXX2Q44zflFJIK1m907t0Lt7J7Rp0RRxsTHatSJk03eyl5aqjgAH7Hi1lexfuWTlOixasQZ7ySRe3XRDFfXCaiWfy3OL0LY36SLNREQq8VLHOQgXfGulXLZmuA1uoqwI'@; put 'G6P/1p2KWnTq71Gq/jgrzPkZMeNDG9L2Gtv/kueXIQmm1WrB66MfRrPGDdULbqDZNfaDzzB/8UqjX/8h0X+b3Y0ug1zodDb5P1aCYDIoZrNJ863ZtdaDNXMpJUqWpt/0C16sJapfrzbl0+ygEc4WTRsimkzootn0C9zSaBkIMKnkechz7iglR2dt5eIVa7GeKu+cyM0v4wjfbLJTbtqe5zvRvAsH'@; put 'i/8zoKe8s7Af5uKpZmxfaSGrhP+uzfLOL9tPjwAXthhyi4OKW7D/ZQUa6dM3pas9+NnALho/jbejUAEfYEMSTJ4RD4y6HkP691EvHybdiGfO+wPjJn2tq4kvnSkbAVs4lYccWoR2Z5oqTTC5JQ7S8dDfIQooWDXbivRU/7+t2mxWNEiuh64d2qAHJXBv3rgBYmNiNPM5+2uKz2bZMpatVUOAzd9e'@; put 'v0p2zcik6O+tO/dqfpVMKtMzjlFMRrlG6qqdrJy942q7Nc1lk/acl7by5JKbY4K55Gczti0XglkOvEHfXKuuG0NHFiKM8g6TB0T5Lg9B72nVOqAlWN9CFaU+sVftQJ3ubViCef7gs3HvyGuVC/ThmzPnfHvqlXeQm+e/t3udzkfDdUur4HO+C616VF6D6R0kiVozhxyn6qBrfrNhz3qOWg2MxoSt'@; put 'AClJ9dClfSt069AWzZs0REKteC34iIMtmBio5n7ixV3WvkeACaVXU8llTdMzj2Hz9t1YRbl9N2zdoZFKF82pQCz1W7rQdZATtVPoWiqZ57KSJxeCWUmggrhb6zOc6H0xMUt6Mfbvq0pgB8n+lytm0vNgbs3yJge21+WfzbAEs2XTRnj16Qe0B6JqD0IHPeD/QwnXN27dWb7k5BddIFBMMJ1EMKum'@; put 'wfR2numkyWJGYQGwdRkF//xhJdNIYEimtw9c+7x2YjzatWxGwUHtNJ/NOom1wGX5mGiK36YXKVl7EeAXYS+h5G3ZFKiTejgNm7bv0kzg23fto/rgOQF9SbGRP3TrXi6yJrgRGUfc0lm90oFCML1S1u/6bCrx2awjydhFL8L67WaVe8YpimZNsiJ1u/8tWlXuXDUOMCzB5DrNY59/hKqb1FHOtGe1'@; put '2vDlDz/jq59+rYZI5ZBAIlBTguntK/vesH7n8A56e51HEaz7gnODYeIQExWJFvQC16ltK7Rv3RwN69fTTOn8G5NNNqWr9lLnlYOsy0agNKHMy8ujwhCZVAt8PzZs2YEtO3cj9VAanDQ3grEkJLvQ+RwXGrbhSHEK/CiVj7YqfRKCWRW0Ar+vVh7y9kLEUt5hE7laqEIwNf/LEx5MfYdysOYG5/7v'@; put 'a2kalmAyEE/eexv6UUqWggJS/yi0sGZg3aZtkq7IADL1FcHkoWomcyKaudkeqvpjIR8wKxwFgdVmloacTenJ9BLHkegdiGy2ataYqmglIDIyUttVzOmlEVPju9fkzfciXphQHqUKYzuJUG7ZsZt8KvfgwKEjPk8pVFX0wuweNOvGWksX4hIo3oMTbteQcQjBrKoUArt/wzYunHONi4qkqaW9ZP/L'@; put 'A9s9mPUR5b/kh4ECi6EJ5mXDB2HU9Vcq54fJ84r9L5+kdEX7Ug8rMM3UHYIvCSajVGwyJ20mqTMP7TRpSdmP7NbP2yxbDlij2apZE3Ro0wKNqYIQm9O9hNNrTpe8m8aZ86ydZELJkd78mWV3Ijf3Lw0lm7u37dqDg0eOBp1QlkQ1qYkL7fu6kNKyWGvJVbRqyC215oVglkRZf597nU9pp84iWTvV'@; put 'Ipia/+Vsyiwyx/gJ1r2zxtAEsy1pVV5+6n7NXKeayc5MmoP3P/8Ov8xZ4JWVrHWIgK8JpneI/AKrmUxygZ2rKG/mUgtyj+uvdF0x4UzSgoT4emzSsD7qJiYgOjpKIy18XXpJp2rXqFdWRlp7yaRXQ8l9ZwtQ5vEsHEpLx+59qUQm92prNoGzP7jelthE8rXs7USLTh6Ex3Bi9JprLUuOUQhmSTT0'@; put '9Zn9bIfdVoRaSR6loscZZfa//HWiBYd2GD/BunfWGJpgRoTb8eZ/HlXSD5NNU0tXrcOLb33olZWsdYiARjAvoCjy7lWPIq/McLR0RsQrjx/xYAuZzXett1A6JP0RTe9YwsJsqFc7USOazRo1IOLZgPJw1kV8XAyiTprVhXR60fLvmkkkE0rWTPJnxj0/Px9czCGNUgVxvW/2odx74KBW2CEnN0/T'@; put 'Xvq3V9VvPTLGg+bdnGjZ3YXYRHoD46I8NbWHl9EdIZhlgKKTTay1HnorJ74k4ZO62hcaaz0MjZUJuTluTHvHjgIF8l96MTU0weRBPH7PSKrBfIZyfpg8No7CfOKlN3H4KOWxkUWXCIRFUB7MYWSy6VW9KPLKDIrN5mYreRyRf9nh3cCmJfSWu81KmsHKHB3cfZjgcNBQvTqJaNygvkY8G6UkIalO'@; put 'bdSKj0VEePhfSbg5eIjNs/wn2s7KyY3x9f55Tdz8nbXGOSdywWUYj6RnYP/BIxqh5PVh0lTydn+Qs8r1ump7Rca40aQjlWQlX8uEJL4aSGPpI3N4WT0RglkWKvrYxgE+nSkFVQt6ybCRxk/TXuujazXqBftf7t/swexP1ch/6QXD8ATz/EH9cO+t1ynph2kircP4iZMxa8Fir7xkrTMEbOFUJnIw'@; put '+4L5R4NZcrjEGyg1jJmqVwEHd5JGc4mV/DSZePJD1zgLEyA2rdemvJv1k+qgQf0kNKDyr/Xr1aFcnHGIJfM6+3R6A0zKIp6hREC9BJLXjIlXM8kYFBYWIr+gEMezsin35HHNzM3BN4fSjpJWMo1M39na78aZHX/3NCrOgyYdqBJPNzcS6nHcAxMK//vdCcH8WwZ6/dSwjZPK8zqRkMzJ8DmrhV57'@; put 'Wrl+sf/lkp+pfPBCNfJfekdteILJ1Ug4HybfeFV76FjItPXnslV4ZdxEr7xkrTMEmGB2G8z1yCtXi9wX3WeiyfWSnQ4mmiZsW2GmtfGrjjBxioqMQEJ8HFUcqktazkQkE+nkqHXeVkw8I2Cn/Jxcz9q7lNR68j2Av3sXvd4TmCx5Fx43L7z2/nl/Y3LtJZEnKJL7GBHGjGNZWgAOm7bTqPRiJn1n'@; put 'a0dBIU0IBRau0tK0swuNO7gQz6bwABFLL3RCML1I6HsdGU3azMFFaNHVQ1aQk764+u5y2b3jKU5a+V8+CEP6fv0EdJbd2aptNTzBDKPyd2889ygaNUjWzEJVG76+9+aH0DHSTIiZXL9yCgbB9KLBHMVCpvMiCnJI28vBQFbs32pSooatd4zetY3SJcWQZjMuNgbx9JdIms7aCbU04plApva4mGiq'@; put 'sR6paUbt9jCNhPJLJ5uNy3r59JJQ75rPw2S0NCEt/d3bn5IEkbfxd++2kp+95LHkcUwavflEC6nqDRPD/PwCMIHMzsklbWSOdt0zkeTgG/7LIr/JE+QjydrK8vrkPYcR11abB3WbuNG8E0eFU6L0WNLMk1YqGJHCQjCNNYMatXORNpMCf+oZU5vJyoKsdPK/HGeHs0i//vXVmRWGJ5g86H/dfDUu'@; put 'HDJASTM5R5OPm/gVZs0XM3l1Jri/jwkmwfSOzUs02Ucz85AHezZasWeDGdnpat2svOMta82kjgOMIux2RETYERURoRFSJp2sFY0mk3tUZLj2OZyCA8PD7LDbbRoRDSNtKNdp54pGxSZoYu6kU7CSO4LJVBwcU/qcHipB6C196KJqIpxgnMkqE8aiIqdGGjkC2+Eo0ohhHkVq5xGJ5PRjubn5Gplk'@; put 'H8lcCrrJzy/U9udjVSSPpbHzfuexxtYGGrV2olEHN+o0AKw2E1xkBueqA8GyegrB9ErIOOsICgDrOqgIzbu66aXSWL6ZbB7fstSDP35QJz2Rd+YoQTD79eqGJyjpOpuSVFtYA7J8zQYtmjyUHj5GkaMeCKYXK6ZFHAxkMnm0ZO0HdwB7N9hweI856AnbvX3U41ozS5/UQHJiea8Gkgkn/8YE3ruw'@; put 'rxd/dxKpZELJf05nMbnk65MDZ+Q69aJV9poDNeo2pcCd9i4kkdYyKo4NhEQKivzvX1l2j07dKgTzVDyM9I3dKrqR2TwhyQJnoTHqlNvsFvw+2YSda9RJT+SdM0oQTA4WGEvpitiEVtLk5R2k0des6eCk6weoFJss+kJATwTTi4zGh0h5yWTJSdqgY4c9ZDrnKEULfSYzUnCq+Xm7J+sQRMBO2RZq'@; put 'N3ShUVsXkpt6EFObEruzHzGR82BqK8sShRDMslAxzrbIWNJmDihCs+7km0kujXqONOeXVUcBmcfH23HiuFr+lzxjlCCYPJD/PnoPunZsSyYpNRzdeUzehYN9Pv7yB0yZOc+7SdY6QUCPBLMkNEw2zTYKHqEPBfkeZBwksrnFgoM7zMhKM14EesmxyWd9I2CPcCMxxU31wd1IIlIZVxfkisAmcDJ/'@; put 'kwY4WCbw06EmBPN0CBnjd9aQdzuXk7LrV5tppXtz6g43Zn4cbgxQq9hLZQjm5cMH4XZFy0aymW795u0YPWYCaZ9E/VTFOe7X3fVOMEsOnt+WOSiI1/m5bvLXBFIp+vwwpTo6dpi0SYo5mJccu3wODAIRFNlbhzSV9VuRprIxaSrrkC8rkUoPkUq3jkllSXSEYJZEw9ifo0ib2UWLNGfXFv/mT60O'@; put 'Uux/uWw6sG7+31kxqtOOXo9RhmC2aNJQS1fEZExFHyiONH1uzHhs3blXr3MpJPtlJIJZUkAUu0IBLcVks7DAQ9pMN47s4zJlZqQftCA/m/ZmJiqLIFABAmZ6aEcnUIBOIw9SWri0dXQtrh5E2nHKbmAUUllyiEIwS6KhxuemlJ2g60AH4pOscOnFN5Nur8xVZnB6ogPqmcd55ihDMNkhf8zoh9GM'@; put '8mJyChDVFk638t3Ps/HJt1NVG5qhx2NUglkSdKaRHBzE6TI4gvdElgfHDgKHiXCm7aUUGkctcOQL2SyJWSh/DrNT4vPk4rRCyRSsUyuJ0grF0MsKvdyzzy/8WGUnELgLwQwEyoE/Byfu7zLIQXkzi9+d/VkNqjKj49rjmQfd+PldO1km1cz4oQzBZIHeft1luPz8IUqmK+LIVq7Q8diLY7VUJ5WZ'@; put 'wLKP/xFQgWCWREmjkScDhEDaqaJCIpzHgczDZqRRNPpRIp45aRby5xTCWRI3lT9brGTqTiBC2chNuSpJS9mAtJbxQFg4WYuYT5LpW2+BOjWRhxDMmqCn/2ObdXGSNpOS+NelF6IgajPZPL5uoQfLflYvPZF3FihFMLt2aIP/PPIvJTWYLDBO5THm3Un4c/kar/xkHWQEVCOYpeFkGmkizSb7bvIM'@; put '1Agnmc+z0kxITyXfTfrLPEI+nTkSnV4aO6N+t1DS8xgikAn1XahHhDKhvgfxtT2wRxancOJyjW6Daykrko0QzIrQUeO36HjOm+lAsy5cICE4vpmswZz1iQWp29RLT+SdJUoRTK5vPPb5R5BUt46SwTBSOtI7bfWzVp1glkZa01sS4SxOQu6hlzkPCvJIy5lJVaeOmJBxqDhgiJO8F+ZSbkOPaDpL'@; put 'Y6i372GUQiiW/CgTUzxIbOBCYhJpKBPdlLDeqr1c/OVLqdewbx8DKgTTx4DqtDn2f+TE7F0GOlErwNpMdkfKyXRReqJwSlOkpnmcxa4UweQB3XfrtRg+6GwlzeQ8vmzKifn0K+9g/8HD/FWWICMQagSzNNwafaT7o4UTktMbOXmta1rO/FwP+XJyKiQyrx+yaBrP7Ayg8ASlDJFECKVhDNh3WxgR'@; put 'R4qsja9DZDKZfCmJVMbVoWTnsVQJyU6CpHxWXkLJeYRChFOegr8QzFPgUP5LTLwbXSmdUdPOpM2kGR8I30xOrr51uRt/fG9XGl/lCGbvbp3wzAN3KJkPk2eixWLFVz/+gq9++lXpiWmUwYU6wSxLTsVaTpqrFKruJZ1OqtLCpDM/x4wcIprHj5roz4wT6SbkZpnIp7PYn6+s9mRb1RFgGYRFeqim'@; put 'txtxiUQoiUzWqgf67CKCaUJ4JLk9aBk3in0oA/FQrfoognOEEMzg4B7Ms7I2s0U3NzqfQ5HmdSnS3OHfKkC2MDN++9xCZX3VjB73ylI5ghkbE423qKpPAlX3UTFnJKdh2rX3AJ5+9R0J9vHO4iCuhWBWDnyNdNJ/mj/nyfRIXDvdUeBCYR75cJ4gjecxC9VPNyE7kzSeR4E88vUszJP8nBUhzJmk'@; put '7EQkwyn/ZEwtN9X2Jo0k/XFQTjRpZsKjiWhGUI112pG1kRyQw2QyVLWTFWHp/U0IpheJ0FvzNcR5M5uTNpMvEn+8eJnJSpCbQ9Hj4+z00q2ueZxnj3IEkwf14KgbcG7/s1BQUMBflVs42Oe18ROxaOVa5cZmtAEJwayZxDTiSf5IXGnIfJJ4sjahiKI7CylSvZh8msjcToTzGK/NRDxNyMuh30gj'@; put '6ijg1Eqc+7Zm/dDz0VarmyK2vRpJUO1uIo/0IGQzd2QcmbxjSCNJfpQ2ikq1EJDs9soPRibwHv5TGBt/yE0Ipj9QNU6bfP9p1d2FzuSbGZtIwYs+1mayeXz7ag8WfK1u9LhX2koSzL49u+LJ+25HYWGhd5xKrS2U83PZ6vV48a0PtUStSg3OYIMRgukfgWnEk8gSE08T/ceaT20b3fxdFFjkKKIA'@; put 'o0JaEwktIC1nYS4R0BO8JvJJnwv5cz7V+c2jYCN6z3QXAUVURZbJqJuy6gR7sVg84GhtK7lg2aiIhz2SNY2kcYwCIqI8RBpZKwnKL0mfo9ywhpOPZDiRSDKtWdnXlTWSRBw5kTlxSPogRNJXMhWC6Sskjd1OLAW6dSVtZpOOxb6ZnDnBFwtfw3O/NGP3enWjx704KUkwVTeTc07M/IJCPENm8h17'@; put '9ntlKesgICAEMwig0ynZNMz/kccIrTk2hQNUtI9ah1hz52QtHqXUcRK5dDrY1E5rqsHgJKLppHdPRyFpP3k7fS+i7S6NgNJvRRTo4mLNKFei0WgtkTn6TqTW42Zyx6cgOwKd30JKiGLjs4c0sNDIn4nyRtro2WGmtSXMQ8EznOaJCCSRSSsF2dh4bad9iFjy8RZaM2nkVFCsgSxun87ABJLZsLbm'@; put 'UwqJ1ITr5/+EYPoZYEM1z76ZLnQf4iKXE7NmWalJ90PJPM44KUkweWD333Ydhg7oq6yZnCv7TJ05Dx98+QMPV5YgISAEM0jAV/K0XiLKuzN385I3vtFrX0qQUt6n3OUkuWPS99dCTZj5BNzUaRbtMI0rMkktboSTlGufuNHif6dpRX4OBAJCMAOBsrHOEVvbhZ7nFaFRe28J1OJruKqj0Mzjq8g8'@; put '/o365nHGRlmC2bNLB4x+6C5lo8lZe3I0IxNP/N9bSM+kUiuyBAUBJpjdB7vQvi9pwchvUBZBQBAwNgJCMI0tP3/1ni0VrXq5tLyZ0XGWat3vrSfN43tCwDzOclCWYEaE2/EmRZOrmnSdhWcmm9ykb6bgxxlz+assQUCA/eJ60Jtt216mat1wgtBlOaUgIAhUgIAQzArAkZ8oUwNpM4cVoXEHCgA6'@; put 'WdWqMrBo5vFsF6a+E07+4ezbo/6iLMFk0Y26/nJcNvxcZZOuF6cs2o+nKPF6Xr6aEfN6vwQ5MKPXBS6KOhQNpt5lJf0TBCqDgBDMyqAU2vuwNrPNmS50HcB5ZSvnm8m1x7cspeTqP6idXL3kzFCaYHZo3QIvPn4v+cazc3z1fCZKgqXLz2Qqf/ujLzH3z2W67J7qndII5vlOtOohGkzVZS3jCw0E'@; put 'hGCGhpx9Mcr4ui6yYDnRuK2ZggApo8NJ/+qy2uZ5NfsTEw5spai+EFmUJphWSuczZvRDaN6kEYqKKIRUwYVTFq3btA3PjZlAUbPiAxhoEQvBDDTicj5BwL8ICMH0L76qte7VZnYZ6KK0YmVrM7n2+PEMN34ZF07p0ioRFagISEoTTJbR1RcNxS0jLlXWTM5jdNFb0yvvfITlazfyV1kCiIAQzACC'@; put 'LacSBAKAgBDMAICs4Clq1SvWZjZq809tJpvH1/7uxvIZoWMeZxErTzAb1k/StJhhlHROVTM5+2IuX7MBL739UXHePAUvXr0OSQimXiUj/RIEqoeAEMzq4SZHEaEyedD2TCdVAXIjMvqkNvOkwvLXD2xI26927fHSc0B5gskDfo7SFfXs2lHZyj48Rgdlin7xzQ+wbvM2/ipLgBAQghkgoOU0gkCA'@; put 'EBCCGSCgFT5NfD0neg53oSFpMznH7eE9Tkx/P7y4UIPC4y49tJAgmOec2QOP3XOrsknXWahW0tDOX7Qcr737SWkZy3c/IhBGNaB7Dneg9Rll+9748dTStCAgCPgBASGYfgA1BJs0m0mb2ceJHkM8WDXHhPXzQye4xyvukCCYMVGRGEs5MeskJsClaCAMJ14vKHRQsM94bNmxxytfWfsZAZud69W6'@; put '0LGfpCnyM9TSvCAQEASYYC6aYsbO1RatbGhATionURaBhCQXCnJNyMsJjdyXJQUZEgSTBzzqOsqJeb66OTF5jBYqH7lwyQr8b4JoMRmPQCxcW7rdWW70GEa1r6WSTyAgl3MIAn5FgCN+F3xnwd71lEj7ZC16v55QGhcEFEUgZAhm6+aN8fKT95MTLiUVUDQnJo8tv6AQz78+QbSYAbpgLVYPmnZy'@; put 'oe/lLridiuZaDRCWchpBIOgIcECGy4PfvrLh4A5LyPnMBR1/6YBSCIQMweT7xouP34fO7VsrW5+cZ6ZoMQN7fXLUYFITFwbd4ITZSucWjhlYAcjZBAFfImA2wZHrwZxPwpB+mJ4aHn5yyCIICALVQSBkCCaDc+7ZvfHgHTcpHewjWszqXAbVP4a14XGJHgy6yYHYRNKOk/ZDFkFAEDAmAmwezzxC'@; put 'GsxJYcgNQZ85Y0pNeq1XBEKKYMZER2Hs848oHezDE421mH8sXan5YqrqDqCnC8oe6cZZlzrRtIMJTodUU9KTbKQvgkBVELDZLdi+0oMlv1jhyAu9oIyqYCX7CgKnQyCkCCaDMfLqi3HVxecpXdmHx+mg0pj/pbyY6zdv56+y+BEBi82DNj1d6HWhBPr4EWZpWhDwOwKWMDMWUwT59lUU4FMk5nG/'@; put 'Ay4nUBqBkCOYjRsk47VnHoLNZlU22IdnLNcoX0GlIzn5usvtVnoSB3twFFuFhBQXhtzogC2CtB5UulMWQUAQMBgC5H9ZmOsm/0s7MsT/0mDCk+7qEYGQI5gshGfuH4Uze3RRurIPj5NrlL82YSKWrFrPX2XxIwL2SA/6XuZA4/ZmMZP7EWdpWhDwFwJWMo/vWushDaYVhfliHvcXztJu6CAQkgTz'@; put 'jC7tMfrBu1BEZmSVF9Zibtq2E6PHTCAy7VB5qEEfm8XiQeOObvS7oogCfYLeHemAICAIVBUBskTM/9qK/VstlHJMzONVhU/2FwRKIxCSBNNGQTD/e+YBtGjaWHmSSYk/MX7SZMxesKS07OW7jxGIjHVj4DUO1GlsJv8tcUvwMbzSnCDgNwSsYRak7nBj4WQb8nJFe+k3oKXhkEIgJAkmS/j8Qf1w'@; put '763XKR/sYzabsS/1MJ58+S3knMgNqckd6MFarG406+JGn0vccLuEYAYafzmfIFAtBEhZyfrKBd9YsXczaS+lek+1YJSDBIHSCIQswYyNicYbzz2sfMoiFrjVasNn303FN9NmlZa/fPcxAhFRbpx9VRFSWokvpo+hleYEAb8gwKmJdorvpV+wlUZDG4GQJZgs9puuvBDXXHq+8lpMTr6ecSwLz7z6'@; put 'Dg4eORraM97PozebqbJPMzcGjHDCaqdCIBJR7mfEpXlBoPoImCixegFV7vntUxsyDpops4j4XlYfTTlSEDgVgZAmmMn1auP10Q8jMiICbsVT+VhtNsya9yfenvjVqTNAvvkcAZvdg479i9B1oAlFhRLx43OApUFBwBcIEJdkF6Jl083YulzyXvoCUmlDECiJQEgTTAbivpHXYPjg/iGhxSygSPKX'@; put '3voQ6zZvKzkH5LMfEIiIJlP5lU40aC0k0w/wSpOCQI0RsIVbsHWZmwimDQ5JS1RjPKUBQaA0AiFPMFs0aYhXnn4AFnqTVb2sIqctWrtxK14Y+75W6af0ZJDvvkNAS76e7EL/EUVUq5yiyp0S9OM7dKUlQaBmCHDOy8O73FhAaYlysswU5COm8ZohKkcLAv9EIOQJJkPyxL234uzePVBQUPBPhBTb'@; put 'YiIizWmLZs1frNjI9Dcck8WNBi0oAfvlRbBHmig6VSr86E9K0qNQQ8BqM+NYugfzJ1tx7JCFFAuhhoCMVxAIDAJCMAnnTm1b4oVH79E0mKprMTng58jRDDxNAT9HM44FZpaF8FksVg+atHfiTEpdZLFR0I+QzBCeDTL0YCNgIXJ54hhpLr+x4eh+M/nei+Yy2DKR86uLgBBMki2Trucfugs9unRQ'@; put 'vnwkT2ULJZr/Zc4CvPfZt+rObB2NzGLzoHlnJ3qeLyRTR2KRroQYAkwuc7Pc+PMHGw7uJJcoIZchNgNkuIFGQAjmScTP6EzlI4lkql4+kofLhJoDfl586wOs37w90HMuJM/HJLMFkcwzLnBTXlKIuTwkZ4EMOlgIcKWe7AyXRi4P7xFyGSw5yHlDCwEhmCflzUE+/33sHnRu3yY0tJgn65Q///q7'@; put 'yC8oDK1ZH6TRcqWf5p3d6HkB5cgkbYpU+wmSIOS0IYUAJ1LPPOzBoh8sSCOzuOS6DCnxy2CDiIAQzBLg9+7WEc88cCccDkeJrep+tFismPTNFPww/Td1B6mzkZktHrTs7kS3QW6Ex5ikZrnO5CPdUQsBTkV0aJcHi6dYcDxNAnrUkq6MRu8ICMEsISGr1YIXH7sXHdq0DAmSyabyrJwTGP2/8dhz'@; put '4GAJJOSjPxFgc3mDVk50H+ZBfG3A6ZAURv7EW9oOQQTMXCLXjN0bgGU/W8n3koN5JKAnBGeCDDmICAjBLAV+nzO64Mn7bg8JgslDt5JD4OIVa/DK+ElwuaTqTKnp4LevXFIyMcWF7kPdSGkOFHGeTOGZfsNbGg4dBMxU/pErs21facWKmRYUFRDblEUQEAQCjoAQzFKQh5oWk4cvuTFLTYIAfo2O'@; put 'd1NZSSdadKfgH4skZA8g9HIqBRGwhJlReAJY+7sZO1bRZ6nQo6CUZUhGQUAIZhmSCqWIch4+1+NNS8/E6DHjcfDw0TIQkU3+RMAW7kbTjm50PseF2AQqLVlEqkxJ/uxPyKVt1RAwm8gaY0LaXmD1b1SlZze/rIlJXDUxy3iMhYAQzDLkxRHlLzz6L3Tp0DYkIsoZAqvNhoVLVmDMu5/CReYlWQKL'@; put 'AJvMayW50GWACw3aerRUUm6nsMzASkHOZkQEOL+lk17Ktq0wY9NCK7KPc+FHIZdGlKX0WS0EhGCWI89uHdviOcqLGUp+iZqpfCKVkVwgZSTLmRZ+32yPcKNZFxfa9/EgjgKAioqIZLqFaPodeDmB4RAwkdbSQlrLzEMerJ1nwf6tRDQd4m9pOEFKh5VFQAhmOaLlCOvRD9yBXt07h0SNcoaBTeVc'@; put 'PnL0a+ORejitHGRks78RMJkouryeG+37utCknRu2CDL3idnc37BL+0ZBgJSTNtJaFuR5yM8S2LTIhpxjrLEUraVRRCj9DA0EhGBWIOd2rZrhxcfv025bqtco98LApvIlWlT5RDidElXuxSUYa05nVL+5Cx36uFGvKZnNSWOjEc1gdEbOKQjoAAE2h7sp2wWXetz4hw1H9oB8LUVrqQPRSBcEgX8g'@; put 'IATzH5CcuuGRu27GzJmaHAAAQABJREFUwL69QkaLyaM3U5Wfj778HlNnzT8VDPkWFATCIjxo0tGFNj1dqF3fRJVI+KEqfrJBEYacNCgImMkUbqYXrIyDbmxabMXeDRY4CkRjGRRhyEkFgUoiIATzNEA1bpCM/z3zIOxhYVputdPsrsTP7B5wIjcPXEZy++59SozJ6INgDXpUjAdNO7nQsqcbCfWI'@; put 'aBLHFKJpdMlK/ytCgHNaMrnMJo+drStN2LnKgtxsCuGhe5QsgoAgoG8EhGBWQj533nAlLjlvEPLz8yuxtxq7WEiLuXHrTrww9j3k5ReoMSglRuFBRAzQrFNx7syEJB4Umc5ZoymxQEpIWAYBCt4xw2QBso+Sn+VqM3autiCHosPhEWIp80MQMAoCQjArIanaCfF447lHERcbHVJR5Vzl5/tfZlO9'@; put '8qmVQEl2CSQCHmKTkdFAo/YutOjGpnOP9lB2cmojiToPpCjkXL5CgLgjl3fk96TjR4hYrjFhzzoK4DlOG4RY+gplaUcQCBgCQjArCfWVF5yLW6+9PKS0mGyGKipy4vX3P8PilWsriZTsFmgErHY3GrR0o0VXCgZq5kF4uAlOF1FQ+pNFENA7Ahy8xknSucBAxgFg51rysdxoQT5V5JHIcL1LT/on'@; put 'CJSPgBDM8rE55ZeoyAi8Pvph1E+qS9HVzlN+U/kLpy46cjQDz1LqosNp6SoP1fBjs1jdVN/cg+aURzOltQextdikCJqvYj43vHBVGwBrK6k0KsgMXpDjQepOE3atMVMFHqodXihmcNXELeMJTQSEYFZB7sMG9MF9t14XMtV9vNCwqXzZ6vV4ZdxEOIqKvJtlrVMEOI9mVJwbjdpRUFAHJ5FOyhto'@; put '59J5HkrxIlpNnYotJLploqAdK/3xS8+xI8C+TRbs3WTG8aNkGncJsQyJSSCDDBkEhGBWQdSsxXzm/jvQqV2rkCOZFosVX02ZTn8zqoCY7BpsBDiXZr1GLjSmWucpLUirSbXOObErk02P+GoGWzwhcX4mlRb6Y2169nEPDpO2cs96M9UNp1RDoq0MiTkggwxNBIRgVkHubC7mEpJP/fv2kEq+zhCx'@; put 'P2aho4hqlX+CZWs2VAE12VUXCJBWMzIKSGnlQsN2LiQ14mh0Cz3zPaRNoie/kE1diEmVTvxFKulOmZvlwtH9ZuzbbMYhSpCel03aSlGkqyJqGYcgUC4CQjDLhabsH8JsVvzr5hEYOqBvSAX8MBqcuoj9MJ8bMwEHjxwtGyDZqnsETGb2z3Sjfis3GrYmv80GoIh0fuh7RLOpe+nptIOkoORE6Fwb'@; put 'nPOz5ma7SUNpxoHt5Fe5g/LqZvH8op1kEQQEgZBBQAhmNUTdKCUJLz52X8ilLWKo2B9z5bpN5I/5MfILCquBnhyiJwTMFjabE9lsSWUpW7hQpwFpOkmzCdJ4aj6brNkUbZOeRKafvnD0N5m+TRSrwyVMsylPZdpe4OAOC47sNp3UVAqp1I/ApCeCQGAREIJZDbytVgsuGz4YI0dcGnJaTIaLSeZP'@; put 'M+fhgy++l4oa1Zg/ej2ENZvRpNms19iDlJaUW5PIZkw8aaVsxVopTn0kpnS9Si8A/SKuaCFSyZV12JG3MNeJYxScc2SviUilGZmpFhTkcT+EVAZAGnIKQUD3CAjBrKaI4mNjMPrBO9GqeRM4HI5qtmLMw9gfk5VaEyZNxqwFS4w5COl1xQiQBjM8Akio70Jy8+JAobh6QEQUVVgh/uBxUfoj1m6K'@; put '72bFOBr5V5Izm721co3sg13gQm4O56okUrnHqhHLLCKYbon+NrKUpe+CgN8QEIJZTWjNdMPt1a0THvvXLVoL7L8WSguTzByqV/7yOx9pJSVDaeyhOFY2pcfU8mh5Nus1cSGxvhuxtSlQKNKqmdO1uuic3J2vg9C6FNSZDkQoWUNpIg0lX9/OQiKUWR5kHjHj6D6O+jbheJoZhfm0o2gp1ZG7jEQQ'@; put '8BMCQjBrACwH/Nw78lqc2/+skDSVc9DP/oOH8Z833tOSsdcASjnUYAhY2Jye6CENp5v8NilQiEpVxhHhDI8ivzwbabWIaHIlIRcFfIiWU4fC9WonmVCSDyWXYszPd5LfpAnHDpmQTlrK9FQzsohcFhQU/67DUYR8l2z0DLKH2RAVGYnwsDDY6LM3RJ/f85xUia2ALGx5efnII0G6tAsy5GETAAKE'@; put 'gBDMGgLdILkeBfzcg4Ra8SFV4ccLG/tjrli7Aa+OnyRBP15QQnBtJpN6RCyRzLpEOpPcSEj2IJ4+R9E2O5nVuRQgazfZtM7k0y3BQ4GbJV7NJAXkEJ8kBTOVZSTtZP4JD7IzyHfysBkZRCozD1JKoWNmFGkeP6yllEVPCERGhCO5Xh00bVgfjVOStapyibXiEBsTjXA7kUubjYKuLKf4xTtdLi1n'@; put 'M6eYyzmRi6MZx5B6OA17DxzCngMHkXoojdLPhZaLl55kqnpfhGDWUMKsxbtgcD/ceePV9KbPr/qht1jpxjZ9zgK8+9m3xSbS0INARlwGAnRpIDKWTOl1PKhFZDO+jovM6rQt3kWaTjPCqLoQ+/hpxJMt66zxZLWLmNnLQPM0m5gPklmb85lzDkr6qBENFwFamOdEfq4ZJ46xiZs0lEQos2idTd8d'@; put 'eZKT8jTIBvXnlKQ66NS2FTrSX/PGDVA7IR6RpK3U/ODpOuGyxcXXT7F7Cn/m30ou/J3/OI+z94/3O0GEMy0jE1t27Maq9ZuxadtOHMvKKXmofBYEaoSAEMwawVd8MFf4efLe29CVkrAXFoZm6h6z2YJJ30zBjzPm+gBRaUJVBLiMpT2CUiGRZpPJZkxtIqAUuR5di4hnHJnYIz2w2oGwMCs9FAkF'@; put 'IpyauZ3LqdNDkasPMQcNOT/Pk5yBrdmshmRizqZtjWjQJlehm4Jw3CjIp0TmWUBOOnCctJM5FISTfYzzUrJPJTdyKvng5mTRFwJ1EmuhZ5cO6Nm1I1o0aYha8XGanIuoTK/b7dauA1/0mOcOK0hY8+kiTWdaegY2bNmBhUtXYc2mrRS8KmWBfYFzKLchBNMH0ucLtW2Lpnj+4bvpwWjTbgI+aNZQ'@; put 'TTAGRU6XVulnyap1huq7dFYPCHioXjpgJ4IZGcPkk9ZUTz2GSGcEE0+qQsS/hdE+VkqbZAujaHZW19GiEVEioExENULqjWw/SUY1Qso7/vWBv+hgOcn1NNqnMcdi4sg9I2WTRiR5SNqYyHeuyEF/RBId+R7SSBKJzLTgxHHgRCYlMifTdl6OCQW5bP7mFoRIMgpGWfjlqW3LZhjS/0x07dAGdWsn'@; put 'aqSSM5Twb4FYmGyGkR8nE9mde/bhtz+WYQGRzeNZ2VpfAtEHOYdaCAjB9JE8beSLOOKSYbjusgtCMuCHYWTzy5GjGXiNyklu27XXR8hKM4IA0SUKKgqz0194MdEMjy4OKIqIdmvEMyKKfqO/cCagtI+VYh2sNjcsYTwvKfDISuZBzh+vqf0IUeJff1Ew/nCSyBWv6H/vM927Pp0QvI1p7RZ/0f7X'@; put 'iGNx+381xc0T+eWAC05m73KaKFE5iEB6UFRABJL+ColA5hFZzD9Bf2S1zM+hYBtaF1AEtyOfgze49eLznK5r8rt+EeAX887tWmH4oH4aseRgHTZ7s0YxmAsTTSace/enYubvizB74RLNhzOYfZJzGw8BIZg+lBnnxnz2wTvQunnTkMuN6YWRSebOPfvx2nuf4OBhKSfpxUXWgUKATOyUUslMWk6L'@; put '1Wtu98BC5NQWRppPIp62cLdmhrfa6Hfaj9dc4pD3N1PWJYvVreV+5Ie/2UwklROLk2n/L9JZciisPiUNk5MIosftLbdJJmviBy4igW4nkUH6c1EchYO0j07vmrSMHFtRVGAm0zURy0Iz7c8+deyTKsSxJMSqfm7VrDEuHjqA0t11RGREhPbMCJS2srKYchAnm9B37d2Pb6fNwvwlK0PSQldZvGS/'@; put 'UxEQgnkqHjX6xuSqS/vWeOb+UZpJQW83ixoNrgoHm+nNd82GLXjj/c9wPFucxqsAnewqCAgCiiOQQD6VlwwbgHPPPlOLAGeTtN6fFUwyeVm+ZgM++24adu8/qPs+Kz6NDDE8IZg+FhObym+66kJcccHQkDWVs+aHTZELl67EOxO/QkGhpMHw8TST5gQBQcCACPTs0h7XX34hmlFEOJvBOWjHSEsE'@; put 'aVozMo/h66kz8ctvCzQ3DyP1X/oaWASEYPoBb35Dff7hu+gm0jBkTeVMMjnWYua8P/DR5B/J9BdcnyI/iFmaFAQEAUGgUgjEREXi6ouHYSgV5QgnR2H2szTqwr6Z/Dd/8Qp8TPf29EyKNJNFECgDASGYZYBS001cRrJbp7Z46r7bQ9pUziTTRSzzh+mz8cUP02sKqxwvCAgCgoDhEGhCidFvu/Yy'@; put 'dGrXmvx03YbTWpYHOOfj3LZzN97++Cts371PTOblARXC24Vg+kn4xabyi8hUPiRkTeUMLfulchWJz7+fhqmz5vsJbWlWEBAEBAH9IdCzaweMvPoSpFDFNyNrLctD1m63I/PYcYz/5GssXbWeFArGMvmXNy7Z7hsEhGD6BscyW0mIj6WAH4oqb9E0ZBOwMzCsyWQ/zI+/+hGzFiwuEyvZKAgIAoKA'@; put 'SggMpZyWN1x5EeKolKOK5NIrK44053KT73/+nZY7M9gplrz9knXwERCC6UcZsPauU9uWeJqiylmjaTSHbl9Cw1icyM3TyklypQhZBAFBQBBQFYFLKP3QNZcO12qEh8J9n30yWXv5yTc/YdpsDv4Rn3tV53ZVxiUEsypoVWNfq9WCERcNw/VXXBjSpnKGjknm8ewTGEeR5cso3YUsgoAgIAiohsDl'@; put 'wwdT0Y3zEGYLLaUC39/ZWvXBF99j+tw/hGSqNrGrMR4hmNUAraqHRHOt8vu4Vnk7FBQUVPVwpfbnmxBHHY6bNBmr1m9WamwyGEFAEAhtBM6nijw3XXWxRi71ntvSH5Li+zuXbB1P9/d5fy6HUzSZ/oDZMG0KwQyAqPitrkWThnjuobsQEx0V8m92bE5JS8/E2A8+x4atOwIgATmFICAICAL+RaBf'@; put 'r26468arqCpPeEhHVPP93UGBnS+P+wir1m3WCKd/kZfW9YqAEMwASYYvuvMG9MFdN10NI1Ru8Dcs/KZ7mOqWv/3Rl0Iy/Q22tC8ICAJ+RaBdq2Z4cNSNqJNYK6R97b0gc+WfoxmZ+M/r72HPAan648Ul1NZCMAMocbs9DPfecg0GU4mw/Pz8AJ5Zn6cSkqlPuUivBAFBoPII1E1MwKP/uhktmzYW'@; put 'clkCtvDwcGzYvA0vvvWhlAwugUsofRSCGWBp162dgP88fDcapiSHbJWfkpALySyJhnwWBAQBIyHAQZysNDj7zB4wUcdD0e+yInlxMvYfZ8yhFHVT4KCa67KEFgJCMAMsbyZUXdq31oJ+Qj11kRd6L8l8hypCrN+y3btZ1oKAICAI6BqB4QP74pYRl1IaOouQyzIkxfEH/Pfau59g0fI1koi9DIxU'@; put '3iQEMwjS5bdeTmVxM1V4CPWoci/8TDKPUODP2x99QSRTAn+8uMhaEBAE9IlAY7JCPUHZQZLqJAq5rEBE7I+ZevgInnl1nBbcWcGu8pNiCAjBDJJAOdLw4TtvwllndBV/zJMy8EaXc9kxSWEUpIkppxUEBIHTImCloM37br1WM41zffFgLawd5Psm//HCL+q8eE31XEGIk557v2s/BuE/MZUHAXQd'@; put 'nFIIZhCFkJJUF6MfvBP1ac2R5bJAu1FmUG3bdz/9FktXrxdIBAFBQBDQHQK9u3XCv2+7nir12ALeNyaVYWFh2nlzc3ORcSxLyy3M981cDh71gPplR1xsNNjnPyEuFvHxcZqp2ks4A91p7jPnxHxuzARs3Loz6IQ30OMP1fMJwQyi5M100XXr1BZP3Hsb+I04FEqKVQZufhs/np2jVYSQspKVQUz2'@; put 'EQQEgUAhEBFux1P/vh0d2rREILWXrJ1kYpmbl4ct23dr1dA2Uh7hQ2npyMsvu4BHGJmnE2rFUYR7I3Tt0Aad27VGUt3aGsELtFKDo8qXrFyLl9/5WKtdHih5yXmCh4AQzOBhr52Z/TEvO2+Q5igu/ph/C4Nvply7/NNvp2Hm/EV//yCfBAFBQBAIIgID+5yBO2+8OqDVeuykkTxB2so/l63Gr78v'@; put 'ws49+6tVJacWaTP7nNGFUuX1RvMmjTSCHKi64azF5OW/b74vCdiDOH8DeWohmIFEu5xzhVN+TPbnGdi3t/hjlsCISWZ+QSG+mjIdP838vcQv8lEQEAQEgcAjwNrLp/89Cu1aN2dHR793wOtfuYzchb6dNgvbdu2tFrEs3dEoKl88qG9PXDx0IJLr1UFhYWHpXfzyXbSYfoFVt40KwdSJaGonxGul'@; put 'JJs1bhiwi10nQ6+wG0wyi5wuTPn1NyKav4Z8mc0KwZIfBQFBwK8IsPbvnluuRUR4mN/9CNkczlacyT/NwIy5f6LADySQ4wBGjrgEvbp3hpPiAPwdDMRaTK5V/ixFlG/cJr6Yfp2sOmhcCKYOhMBd4AuvXctmmm8P1ytnZ2xZihFgkukmZcHM3//AJ99M1bSago0gIAgIAoFEwEL3oYfvugm9u3Wm'@; put '0/pXe8km8dRDR/DuZ99g7aZt9Dxw+W2o7P9/1UVDtdR57LLl71iAiIgITJs1j3zsf5Dk636Tqj4aFoKpDzloveAb2MC+vXDvyGu0i9zfb5M6Gvppu8IE3ET4LFq+Gu999p2UHjstYrKDICAI+BKBZo0a4On7b0cCRWT7897M5HL3vgMY+8Hnmq8la/wCsZxLfpm3XnMZRaD7VzvLZv9Minh/7KU3'@; put 'ceRoRiCGJucIEgJCMIMEfHmn5eo+119+Pq6++DzxxywFEpNMM92c1m7coqUxSj2cVmoP+SoICAKCgH8QuPLCIRhB92WL2eQ3gllMLlPx+vufEslM9bs2sTRS/Xp1IxeAEVqaI39qMnmcbxKB/u2PpT7xKS09DvmuDwSEYOpDDqf0gh3JOQl7n57dhGSegkzxFyuR8J1792MCJWTfunNvGXvIJkFA'@; put 'EBAEfIcAp/th7WXHtq38FtzDFW/SqJrZa+9OwtYde4JWVvG8AX1w+/VXgNPo+UtTy8E+fyxdqZWQLHRIDmjfzVR9tSQEU1/y+Ks3nCD32QfugAT9/AXJKR+YZPLN+IMvvseSVetO+U2+CAKCgCDgSwSaNUohgnkHmcdj/UK6ioMZnZpZfOmq9RTYGFwf/Fsp8OcSSp/nr1gANpMfy8rGoy+8rpUI'@; put '9qWspC39ICAEUz+yOKUnbA5u3byJFvQTHxvjtwv9lJMa7AvfpHLz8im6fAamzZ7vlxu/wSCR7goCgoAfEBg+qB9uufoS2CgIxh9aPTYZfzN1Jr6ZNrPcpOl+GFa5TXIp46dPJpP3V55M1tj+39sfUvL1dUHT1pYLgPzgEwSEYPoERv80wkE/Z/borJnLmXD60yfGPyPwf6v85u9yufHLbwvw5Y/T'@; put 'JcLc/5DLGQSBkEPg/tuvR/8ze/jFPM7kchOl7HmFKtwczTymG2zbtmiKZ6mUMbts+YNUc33yb6b+qhXTCLbGVjegK9YRIZg6FyinjbhoyDm47drL4XA4/HKh6xyC03ZPizA3mbF8zQa89/m3OJqhn5v0aTsvOwgCgoCuEeCk5Oyu1KpZY5/3k+9dHCM+5t1PNFcff6Yjqk7n77zxSgwfdDZcfjDZ'@; put 'M7Feu3Ernn99AuX4dFSne3KMzhEQgqlzAXH32MH81msuxcXDBkrQTzny4hs1m8x37NmH9ymN0eYdu8vZUzYLAoKAIFB5BBqlJBHBvBOJVNPb1wuTrKXkQ/4GRVRn55zwdfM1bq9Bcl28+Ph9iIuJ9rlyg+/XGZSu6NEX3tCV5rbGoEkDfyEgBPMvKPT9gd+iH7rjRpx1RlchmRWIioN/+KbFCdnn'@; put 'LVpewZ7ykyAgCAgCp0egZ9cOuP/2GxDpY1NxseXFhP9NmEQkM/iBPeUh8a+br8bQAX19rsXk8bvcbjz18ltaNhB/mOHLG5NsDwwCQjADg7NPzlInoRaevO82tKGKPwUFBT5pU8VG+M24kNwJps76nXx8ZmmfVRynjEkQEAT8j8CF5/bHTVddDKvF7FMtHge57KJ0ay+88b6uNXidKDXTMw+MovFb'@; put 'fA42l8N8+Z2PqIDGGgn08Tm6wW9QCGbwZVDpHvAbX+MGyRTdNwrJ9epoPpmVPjjEduTgHyrAiaWr12Hi5Ck4lJYeYgjIcAUBQcAXCNxM5JJJpsXHBJNLJn7/y2x88cMvuogcLw8rDvJ5iczkzRo38HmgKWPwwRff4aeZ8/xaDrO8scl2/yIgBNO/+Pq8dSZOHdq0wBP33IroqEhJX1QBwl6/zL0H'@; put 'DuKjr37E6g1bKthbfhIEBAFB4J8I+COC3Gsef21CcXCP3qOo777pKgwb2M/nZnKOJP/u51mY9PVPQc/9+U/Jy5aaIiAEs6YIBuF4b/qiB0fdCI4y91eesiAMzS+nZL/ME7l5Wo45NptzWiNZBAFBQBA4HQJMBB/71y3o1bXj6Xat0u+sKOCgnudff5eqkh3wqem9Sh2p5M5D+5+Ju2+5Bm6Xq5JH'@; put 'VG431mDOnPcHxk2aDEdRcJPLV67HsldVEBCCWRW0dLQv+xlySa9RVNKL82OKg3TFwuEbOqcDWUjlyT79dpqkMqoYLvlVEBAECAF+gX/qvtvRuX1rcrjx3cL+l3v3H8Tzb7yrVSTzXcv+aalD6xZaqiabzerTE3DJyAWLV2i116VkpE+h1UVjQjB1IYbqdYJvflddOBTXX36B5MisBIQlTeYfk1/m'@; put 'qvWbK3GU7CIICAKhioA9jGuQjyK3pJY+TbLO6Yk2bNmOl976EMezc3QPb0pSXfzfE/chJjrKp31lHJavXo+XKNCnUHJh+hRbPTQmBFMPUqhBH2xk/h1JdWMvHT5Y0hdVEkc2meecyNWizH+cMVeizCuJm+wmCIQaAlwycTRVs/F1knUmVivXbaQURZ/oMv9laTnXrZ2AFx+7B3USE3xqLWMcVq3b'@; put 'hBfefF8IZmnQFfguBFMBIfJb9j0jr8G5Z58lJLOS8mSTOWs0V6zdiE/IZM6BQLIIAoKAIFASAbs9DKMpyXqblk19aiL3Eqv/UQWfLANoMGsnxGsaTH8QzOVrSIP5tmgwS847VT4LwVREkjEUUf7AqBskEXsV5cm+UEeOZuCrKTPw28Ilmp9mFZuQ3QUBQUBRBNhC9PT9t6Mj5YL0pQ8m53/cvH0X'@; put '/jv2fUOYyJPqJGoEs1Z8nE81mJoP5hLywXzvU7IkFSk6i0J3WEIwFZJ9QnwsHqRqPz06dxBNZhXkyiZzThOycMlKfE456aSWeRXAk10FAYURYEvHE/eMpHtqe5+Oku85Bw+n4bkxEwyRo7c55cB84dF7wDkxfblwFPnsBYvw9kdfShS5L4HVSVtCMHUiCF91oy75yDxKaTXaU9SfVPupPKolA4C+'@; put '/HEGFq1YU/mDZU9BQBBQFgEu0duvV3fS3PkuvRkT1/yCQox+bTy279oLt4dzXOh36d2tIx65eyTMvlTj0nA5D+aUGb/hwy9/kDyY+hV/tXsmBLPa0On3wOR6temt+za0bNZYSGYVxcSaBQeZamaTufzrn37FsazsKrYguwsCgoBKCIy67nKtFreF2JUv08GxmfzNDz/H74tWkPZO3+bhay4ehmsu'@; put 'PZ9yCPs2VyVrMCdO/hHfT58jlXxUumhOjkUIpoJC5SE1rJ9ECYJHonmThkIyqyhj1mYy0dxFCZC//PEXLFm1vootyO6CgCCgCgJXnD8YIy4Z7vNa5Ox/OGPuQnDKNC4EodeF74fPUi3ybh3b+bxUJGMwhgKd5v25TGqR63UC1KBfQjBrAJ6eD+WbQtOG9TWS2TAlmVJAFOq5u7rsG5NMdjyf9+dS'@; put 'qgI0S3wzdSkl6ZQg4F8EzjmzB+666Wpwtg5fajD5/nLoyFGMHjOe1un+HUQNWq9fr44W4BMbE12DVv55KD+jGM/nxryL9ZQTlAuGyKIWAkIw1ZLnKaPhC5idsx+5+xZNoykk8xR4KvWFfaX478DBI/h66q+YT1Un9O0tValhyU6CgCBQSQRaNG2Ep/99O+J8TLD49Gwmf4vN5HRf0WsU9aXnDcTN'@; put 'V1/i8zKRfF/lfMSPvTgWqRTwJIt6CAjBVE+mp4yISWbLpg3x+D23ol6d2lrFn1N2kC+VQoBLc7roDXvR8jVaTfO9Bw5V6jjZSRAQBIyLQDSlf7vsvEE4b2BfhFNOTF8vnA9z3aateGXcRF36e3Oi+f9S9Di7Wvlaw8gp4rbt2oOnXn5bC3jyNbbSXvAREIIZfBn4vQdMMts0b0KazJuFZNYQbb4p'@; put 'pqVnYurMeZg5f5HcGGuIpxwuCOgVgTMoNdHVFNzSiu6dbpfLp+bxkmPml9e3KE3PAkqTprdgn6HnnIW7bx7hc+0lj58DfGb9/ifemThZd+MuKR/5XH0EhGBWHztDHamRzBZEMu+6GUl164hPZg2kxw8EKgOETVt3kNl8JlZv2FKD1uRQQUAQ0BMCyeRzePnwQeh/5hla3sciP0d480vr7n2pePGt'@; put 'D3A4TT++mLXiYvDfx+5Fg+R6Ptdesrw5wOftj76gF/XFFJ3u0tMUkL74CAEhmD4C0gjNFJPMpnjozhtRv15dIZk1FBo/GPLyC8gvczl+/HUuJU4+WsMW5XBBQBAIFgJsAh/crzcuGnIO6ifV1UiPr83C5Y2NydZPZBX57LtpyM3LL2+3gG6/44Yrcf7gs+GiIhS+XvhZxOngnnz5LeykbB2+DJ7y'@; put 'dV+lveojIASz+tgZ8ki+sDm6/FFKYdRIostrLEN2VOdoUNY88APitz+W6uYBUePBSQOCQIgg0LVDG1x5wRB0aNtSKwnp9AOpqghKvi9z8OA4MhfrwVTet2dXPHD7DbBYzH4hf/xyvp38L59+dZzcLyuaGAb/TQimwQVYne4Xk8wUPEo+mY0bpkiezOqAWOoYNpubiGxuofrC3/08G8vWbPDLjbnU'@; put 'aeWrICAI1ACBFNJUXkbmcK7UExUZEdQgSH5Rzco5gf+Nn4gNW3cGzWzcjDKPcNR8Yq14v5jGWVzsfzl5ynR88cN0qeBTg/mr90OFYOpdQn7sH2swH77zJs2JPT9fH2YZPw43IE3zmzk76i9ZuQ5TyGy+jcrAySIICAL6QoBzOg45u7dmAq5D5XXZBzBQ5vCKkOC0RVyj/PX3PtXuHZy5IpBLUt3a'@; put 'ePLeW9G0UQOqrON70ziPxautfZa0lxvIj13M44GUcGDPJQQzsHjr7mwNkutqppD2bVpCSKbvxMMPimzSRsylChU/z1mgJVT2XevSkiAgCFQHgTCbVdNWXjz0HDRrXJx6R28BJpy6KPXQEYybNJkSkO8ImCYzqU4i+effhDYtmvqNXLLM+N64eftOqsM+Qczj1ZnEBjpGCKaBhOWvrtatnYB/33Yd'@; put 'undqLyTThyB7/TPT0jMwY96flJJjEY5n5/jwDNKUICAIVAYB1pp169hWy2nZoU0L8i20wN/R4ZXpV3n7MAk7npWtlZFcuHSV39P4cEGO+269Tst36W9c2Dz+3qffYBq9ePtLS1oerrI9sAgIwQws3ro8G5so2N/m3pHX4KwzuiIvT791cXUJ4Gk6xQ8zJpv7KDn7dKo9zFpNjj6XRRAQBPyPAGvk'@; put 'WGPZs2tHSpZuD6qfZVVGyz6ZTjLd/zr3D3z3yxxkHDtelcMrvW+fM7rgtmsvA7sK+Jtc8r2QX7Ife/ENXZfHrDR4smOFCAjBrBCe0PoxNjoKo66/AoPPPlML/BHfGN/Knx8YnD9z/aZtmtl85bpNVB7O4duTSGuCgCCgIcABPJefPxhMoGKiow2Zlo01r2wy37V3P76dNguLVqz1mTYzsVacptEd'@; put 'RlWKbHRvCoSrQGRkJH6cPgcfffWjBPeEwHUqBDMEhFyVIUaE23HzVRfjQsoF5yDyIySzKuhVbl8OBOK6wxu2bMMvcxZizcatPntoVK4HspcgoC4C7EvI+SwH9OlJRSVqa2ZYPQTw1ARxNpmzOZmDYmaQRnPV+s3VtoJwAvVzzjoDwwb0BZNwbjcQ93m24uQXFODJ/3sbu/enBuScNcFcjq05AkIw'@; put 'a46hci3w2+wIKpF21UVDtchKo9+c9Sgg1kywRrOw0IF1m7dppvO1G7cJ0dSjsKRPhkCAfckHEakcROSSiSXftwKhlQsUOHzP8BLNfamHsHzNRo1o7j1wENkncivsRgxZp5pRZPgZXdqhV7dOSKZqbkwqA+kDydrLKTNYezlF7nMVSkudH4VgqiNLn46EfWXOH9QPI0dcojnEB/JG5NOB6LyxkkRz'@; put '/Zbt+HXeH1R6cquYznUuN+mefhDg0o79e3fXtHKskeNF9fsVW0H4Hl1YWIj0zGOaP+Pho+nIPJ5N7k2FGgZ2qkwUHxuDFMoUUp8wYj97NrczNoHGh/vKWTWefPltMDmWJTQQEIIZGnKu1igtZNLoRzfuO6lkWHRUpN8dwKvVSUUOYqJZbDp3YPO2XZj5+59YSWYwvZSNUwRmGYZCCDCZPOesHhqx'@; put 'DIZGTg9Q8n3Dm63C+9lr7ubv/Jk1uUwog6nN5cjxT7+dim+mzaS+SN1xPcydQPRBCGYgUDbwOfjm1ZHSejww6gbUrZ1oSEd5I8HPDwU2nbtcbkq0vAe/LVyCxZS0nSt8yCIICAJAEyp1O6hvL3A5Q458DrSpV2RQNQTYrM9BSs/+bzyOUeolWUIHASGYoSPrao+USQ+XD7v/tuvRslljyZVZbST/'@; put 'v73zfI7qStP4u2NQzhEhDBJCEogcTDAGG9tg43EoxxnP7Hpqy7sftnb/jN2q/bjhw1ZN7Uxt7YTd8YzHM2MccMAYE2whkEgiCOWcc8Sw+z6HObjBwghJ3X3vPc+tajrQ995zfu9t9dPvecPMd7RC84Z6IBqaWgW18L746pR0dPfO/CB8JwkEhABWU0qKlpnkna0b1kqGZkDDIxdNr1xA0IZ1GsaL'@; put 'qmf453//mcaMnhf8PePmDgEKTHdsPeeZ5moQ/d//9eumntyEZgPapZg5H5gH+E4CWDrHhoLtKFNy+ESFegRaPNHa7jsHzv8kgTkSQFWLdatKNHFnm7lHi0fUamTi4RzBRmh3LI2jLNHP//cPLEsUIeZeOg0Fppes4YOxJCclyJs/fFH2PbaTf+gjbC8EyuM2qIWKkXn+2bGT2kquZtblSiI8fJ6O'@; put 'BGZMICMtVbZvXmeSd0qKCiRGf2RBWPJH7YwRRv2NSCiq1rJK//Rv/8ml8ahbIzoDoMCMDndfn3WBipwfaAmjV5/bxwzzKFgScbEmIUhLHNVqbBOWz788fVY6uXweBWvwlPNFANf1siV5snvbJtNRDJnPWGJFggqF5XxRjsxxEEeOH8L/+K8/lcu1jbRfZLB77iwUmJ4ziT8GhJioPTsf0hZjL2uX'@; put 'jETftF/zB92ZjzJ0+RzFl7/4qlIuXq1Te1yb+UH4ThKIIoHEhHiz/L17+yZzn67eS8RWRrqUThQRBOrU+KGASMt/+ekvzI/f65rFzs1NAhSYbtp9XmaNPyRlxcvlH7SH+bIli017yXk5MA9y3wSsVxOdMmrqGk2sZnnlOSYF3TdJ7hAJArhel2h9xh2b18vDWzYYzyWyjRlfGQn64TsHPM740ftf'@; put 'v/mDvPPhIZYkCh9qXxyZAtMXZvL2IFGP7u/eeE22bFjDHuZRNpXNPscwenr75Iz2PT92ssp4NYdHxqI8Op7edQKpmqSzrqxEdm3dJKtLiwTeSiTsQFhy8zcB/O3Bj4Tfaq3LX779HpN6/G3OeRk9Bea8YORBUIj9J68+L89o9x+WD/HG9QAvEf7gT2pP+aaWdm0rV21iNeubWk0vdG+MkqMIOoFY'@; put 'vQaLly+V7dqicMv61bJYf5AijpveyuBYHuISST1/PHhIfs5WkMEx7BxnQoE5R4Dc/RsCyHB+af/j2sP8aUF5EXolvmET7UdYtoJ9RkZHTYmjijMXpOJstbZt62AtwWgbJ4Dnx7W2dPEi7X29Wm9rTB3d+Lg4xlYG0NY2POft9z5Wz+UB/ngNoI1nOyUKzNmS437TElio2YPwUrz5oxclf1Eu4zKn'@; put 'pRS9F+0SOr4UhjTLs1braZZrAeTK85ektaOLYjN6pvH9mSEqES6zcc1K2bZxrRRpc4ZkXRK3rQqZCe57E39rAsgWh31//c778rbWu2QbyG8hcvoFCkynzR+eyUO8oNzI32qG+ca1q0x7SX65hIf1XI4KO+ELAqJzcGhI6nTpHJnolXprae+SKcbFzQWvE/suWABRmWtE5ZZ1ZVJUsERSU1JMWRpk'@; put 'gbMgenAvAyyJoxTRz/7nHa3JWy7MFg+urWc7MwrM2ZLjfvckkJaSLD984WnZ//gjAjHDsiP3RBa1N4SKTSyjN2rM5pnqy3K2ukaFZ4surTNBKGrG8diJEf6CqhEbVpeaskLLl+ZLin7W8SOSotJjxgrDcPCDFB16rtQ2yH/892/kYk0961yGgXMQDkmBGQQrengOsTELtV7mVvmrV56T9NQU4830'@; put '8HA5NCVgl9Gx5DkxOSntunR+8Wq9VOkyek19k3T39tNb4diVgs46JZqos76s1GR/L87NkURN7LMJffRUunFBIJYbtv74yAn51e/fk76BITcmzlnOigAF5qywcaf7IYCi7KXa7u1vfvyyrNK6mZMqWrhkfj8Eo/temyAEMdE/MGgSg85pq8pqFZ0NzW0yNDwS3QHy7PNOICE+TutU5srKFYXqpSw2'@; put 'STpZGemmxiGuAybwzTtyTx8QPzZRkaJOO4f9SksQoXMYl8Q9bTJPDI4C0xNmcGMQGWkp8uOXvi97d++41QLOjZkHZ5Z2KR33KH/Uo97MOk0UunClVi6p4Gxp75TRsfHgTNiRmcTGxkhuVoZ6KZfJ6pIiLSu0TPJyssxSKBBg6RvCkptbBPA5R6xlX/+AfHj4mLz70efqtRw0f7/dIsHZzoYABeZs'@; put 'qHGfWROI0SXzx3XJ/A1dMk/jkvmsOXplR3g2kCiEDV2E+voHpb65VfsPN5iOQk2t7TI4PEqPtVcM9udxwEOZl5NtknJWFhWqhzJf8rT3d3JSkhEP9FJ6zGARHo71WGLF4mj5aTnw8RFpauvg5zjCdvD76Sgw/W5BH44fS+YrCpfKm6+/KGtXlZg+5ozh8qEhpxmyFZyI40QoBL6g2rp65KrGbiJL'@; put 'vUFv3X39MjY+Mc3efCkcBFA6LC012Sx5o3QQPntL8/MkOyNN4ygTbwlKeCkZuhIOC/jjmPBWIhwGn93O7h45Vl6psZZfSqP+SOR14Q8bem2UFJhes4hD40HbuFef2yfPPrnb/GGb0iVXbsEiAMFpb/CKjY6NSa96OVvUG4JMdXg72zp7pKun14hOfpHNzf5IqkvRz9Vi9UYi03u5CkoUPM9SMYkV'@; put 'AwgIbHbJm7znxtvPe0NIhopK1MW9VFsvxyvOyFenz0n/IBN4/GxfL4ydAtMLVnB4DPCubN+8Tt7QNpMP6hfhhC6z8ksvuBcEvtSs4MSXG0TnmIrOAf1y69J4zpa2TmlW8Qnh2dM3IAODwybWM7hEZjczMExNTpTM9DRT3BwFzvH5yc/LEZQHS9UbkjLwWQJj3LhKMDvWft4LnzdsVkziusFj3PC3'@; put 'Fj/2EENddeGS3i7rj71u/v31s8E9NnYKTI8ZxMXh4I/d4twsLWX0vDyydaP5AwcPCzc3CIR++UF0YsPyOmpvDmqGeo8uqXd290q7LrV39fSZ5/0qPPH/ExOTckNFVBA3FDFP0HqDKUk3hWROVros0sSb3KxMyc3OlJzMdI2ZTDRJGBAOEJP43EBIUkwG8YqYfk74/MAzjR8ReGw3++Niauqaad84'@; put 'rPVtkaCDzxKqP9Q2NEurCkoUSw/dz+7PexKYKwEKzLkS5P7zRgCZrHt3bTfF2TPUMwORwc1dAhCbuEE8WeGJL1FcF4jhHFHP59DQiC7lDZsvzl7NdMVjLO2hdBIE6PjklHk/vmS9IkQhHGNUEMSqhzEx4aaATE1JUs9jinokU029WNwjbhLL3YkqMuM1KcfGx1nhYIUknnNzkwCuCfyo+Ojz43Li'@; put 'lJYOun7jz2IRnusbxvs/rj/CEJoyqp8ZfA64kUCkCFBgRoo0zzMjAkgAQtzYT157QTZpm0kbKzajnfkmZwhAcMLrYsUnnkNoWfEFETqpX6ao14iySRMqNEfHx81jPMeXLrLecQ8vKEouTU5eM+0xv1YRaz2B+JK+doc3HefAeRcuXCDf+4ub48DjGL3hCx/38XFxEqcdb+JURCYkxBmRiMxteCQT'@; put '9Tn+Hx1xIDLNvnqPY2Kz8wgVkPRIOnNpz2iiuPZRPqi1o9MUPD9WXsXWrjMixzdFkgAFZiRp81wzJgDPzvef2CUv7n/CxJPRmzljdHyjEsAXsF32s2IUz60n1ApSC8uKOjy3wi70Mf4/dMOxIAjtOUIf4zX7OvbBYysQ7zx26HlDj8/HJHA3AigLhmvq2MlKFZfvm5jlO6/Pu+3L10kgkgQoMCNJ'@; put 'm+e6LwK2A9BfvvKs9j1eSW/mfdHjm+eLQKhYDD0mv9RDafBxJAjEqee7V2OS33r3Izl4+LjxvEfivDwHCcyGAAXmbKhxn4gSSNKex888/oi89MyTJiaN3syI4ufJSIAEokwAHnJ4Lk9WnZNf/O6A1De1slVjlG3C09+bAAXmvRnxHR4gcMub+bJ6M9esNBmTiJPjRgIkQAJBJoBYSzQseOeDQ/Le'@; put 'p0dM3HCQ58u5BYcABWZwbOnETJAosV+9mS+rNzM9LdVkCHOp0gnTc5Ik4BQBeCzhuTx19oL88u0D2g2rmV5Lp64A/0+WAtP/NnRuBt/TAPdCzTR//YX9pkg7ACBbmBsJkAAJ+J0AYn7htUSs5e8/+FQ+OHSUXku/G9XR8VNgOmr4IEwbbfEe2/GQaTe5RLuYIDbTZusGYX6cAwmQgFsEUOYKW3nl'@; put 'OVN+CAXRr2vhfG4k4EcCFJh+tBrHfIsAfu0v0q4mLz3zhOx5eKvWHIw3QvPWG/iABEiABDxOwHotO7Rb1VvvHpRPj37FougetxmHd28CFJj3ZsR3+IAAuqOsLyuRHzz/tKxZWcwkIB/YjEMkARIQ0zN+SkN8Dh8/KW+/94kWT+8yxfbJhgT8ToAC0+8W5PhvI4CSRvse3SEvPLVHcrRnM5bNmQR0'@; put 'GyI+IQES8AABJPBgSbymrkF+/c4HmsxT/a2uUR4YJodAArMmQIE5a3Tc0asE0KUlf1GOvPLsXtm1daO27IvjsrlXjcVxkYBjBOxy+ODQsBz4+HN5V2+DwyOOUeB0XSBAgemClR2d481l81J57bl9Ztkcnkxmmzt6MXDaJOABAjHacx71e8urzstbfzoodY0tTOLxgF04hPAQoMAMD1ce1UME4uNi'@; put 'Zc/OrfLi048Lss0hMq9fv+6hEXIoJEACQSZgl8PrGpvlt9rm8XjFGUHcJTcSCDIBCswgW5dzu0UAy1JZGWny3N5HNUbzYUlNSWZ85i06fEACJBAOAnY5HJ14Dnzyuda0PCb9g0PhOBWPSQKeI0CB6TmTcEDhJICWkwVL8403c+dDG0xB46mpKSYChRM6j00CDhJAsXQkGR4trzQF0xu1puUNDdPh'@; put 'RgKuEKDAdMXSnOdtBBCfuVbLGaF+5vqyUtOSDUKTGwmQAAnMhYAtln7uUo387sBHcqb6isZdMiRnLky5rz8JUGD6024c9TwRiNEyIfBkPv/UY1JaVGg6ATERaJ7g8jAk4BAB2zsc3Xf++OEh+fzLCpmY5I9Why4BTvUOAhSYdwDhUzcJoH7mozu2yLNP7pZlSxazULublwFnTQL3TcAm8KALz4ef'@; put 'HZWDh4/LgJYg4kYCrhOgwHT9CuD8byOQnpoiTzyyTZ7es1Py83JNSRGUFeFGAiRAAqEEUG8XZYcGNGnnM+3CgySe9s4exnOHQuJjpwlQYDptfk5+OgI243yfdgTau3uH5GZnUWhOB4qvkYCDBGxm+MjomCbwnJZ3PzosjS3trGfp4LXAKX83AQrM7+bD/3WYAL5IcjLTZa8KTXg1F+VkU2g6fD1w'@; put '6m4TwN8DeCzHxyfkq8pzRljW1DfJ16yp6/aFwdnflQAF5l3R8D9I4CYBKzSf3L1dnty1nUKTFwYJOETACstJrTJx6swF+ZN6LC9cqWOzBoeuAU51dgQoMGfHjXs5SOAboQmP5lYjNNERiDGaDl4MnHLgCYQKy9NnqzXG8oig9BBLDgXe9JzgPBGgwJwnkDyMOwTwxZOVniZ7VGTCo7lEk4HQ55x1'@; put 'NN25BjjT4BLA5xtF0ie0SDo8lhCW5y9fpbAMrsk5szARoMAME1ge1g0CyDrftW2jaT9Z8GC+ILOUnYHcsD1nGSwCNit8VJN3KtRj+f6nX0h1TS2FZbDMzNlEkAAFZgRh81TBJADvJepoPrxlvXo0d8jKFQWCbh4o2H7jxo1gTpqzIoGAELB1LIeGRzR556wc/Oy4XKptYIxlQOzLaUSPAAVm9Njz'@; put 'zAEkgM5A68qKZf+eXeY+KTHRCE3EanIjARLwDgF03sGtp7dPjlWckU+OnJD6plaWG/KOiTgSnxOgwPS5ATl8bxJY8MADUlTwoInR3L5prWRlZhiPCNtQetNeHJUbBBBfidUF3Le0dcjhExV6OykdXb1cbXDjEuAsI0iAAjOCsHkq9wjgiyw3O1N2b98sj27fIgUPLjYQIDSxtM6NBEgg/AQQXwlh'@; put 'iZWEK3UNcuhouRyvqJL+QbZ0DD99nsFVAhSYrlqe8444gcSEeNm8dpU8pW0oVxYVSEJCApfPI24FntAlAnYZfHhkVM5drJFPvvhSKs9fMhniLnHgXEkgGgQoMKNBned0mkBsbIwKzEL1am6SzevKJCcr03gz6dV0+rLg5OeJAFYNICzhtezo6jaeyiNfnpbahmbGV84TYx6GBGZCgAJzJpT4HhII'@; put 'A4Hv6Rdhji6fb9u4VnY+tEGKC5dKXFwcvZphYM1DBp8AssEhLPFDrb6pRfuEV8mhY+W6DD7EcJTgm58z9CABCkwPGoVDco9AnBZ2XlVcaEodbVm/2ng1QQFdgljqyL3rgTOeGYHQpJ3+gSE5e/GyHD5+UjvuXJUx7RnOjQRIIHoEKDCjx55nJoFvEcCyXmZ6qmzSWM1Htm6UUo3VTE5KMskJEJtM'@; put 'DPoWMr7gIAFbuxL9wesbW8wy+IlTZ6W9q4f1Kx28HjhlbxKgwPSmXTgqEpCFutyHrHMsoW9ZXybLtFMQPJ0QmsiGpdjkReISAfz4whI4tq6eXjl97qIcO1kl1VdqNWlnyiUUnCsJ+IIABaYvzMRBuk4gThODykqKZOvGNbJpzSrJy82+FW/GIu6uXx3Bnb8VlVgKHxwalktX61VUVkrV+cvSp7GV'@; put 'DB8Jru05M/8ToMD0vw05A4cI4Is2JSnRiE0UcF+7qtjEa2LJEMkNFJsOXQwBnarNAsc1PTI6KnWNrVJedU4qqi5Ia2cXe4MH1O6cVvAIUGAGz6ackSME4N1JS0mSNSuLZeuGNbK6dIVkZ6aLFZvw7nAZ3ZGLwefTDBWV45qc09jSJhVnL0jFmQuaEd4mU/rjiRsJkIC/CFBg+steHC0JTEsAYjM9'@; put 'NUU9m8tNbc3VupyODkIxMTEmZpMJQtNi44tRJGCXv3E/Nj4uTS3tJq7y1NlqqW1slskpisoomoenJoE5E6DAnDNCHoAEvEXALqOXriiQDWWluoxeIvmLsiU+Pt7ErLH0kbfs5dJo4F3HDaJyeGREvZOtGk95SSovXDa1KykqXboaONegE6DADLqFOT/nCSTEx0nh0nxZp0JzfVmJLM3PkzT1dkKI'@; put 'MiPd+csjrABwjUFQIvsb8cEoen61vkmqLlySM9VXpLW9S65pVQRuJEACwSNAgRk8m3JGJHBXAviyz8vJMvU1N6wplZLCZZoklGG8mxAAuDF28674+B8zIGC9lLjH0nen1qa8VNtglr+v1DVKT28/WzbOgCPfQgJ+J0CB6XcLcvwkMAcCSYkJUrBksSYIFZlbgdbaRCwnPE4QmlZ0zuEU3DXgBEJj'@; put 'KXG99PYPmCSdcxdrtEZlndQ3t7KrTsCvAU6PBKYjQIE5HRW+RgIOEnhA4+Iy0lJl+bIlJlmoWL2bDy7OlXR9Dd4oKzjp4XTw4giZMq4FKyohKFGfsqW9Uy6rlxJFz6/WN0vfwCC9lCHM+JAEXCRAgemi1TlnEpgBAQjOLC17VKjdhFYVL5cVBUuN4ExNSZZY7SgUKjjxmFvwCCCG0opJ3CNmF4Ky'@; put 'raNLrmgsJQqfI+O7s7uPNViDZ37OiATmRIACc074uDMJuEMAghPicmn+IikuXGo8nVhSz8pIk8SEBJM0hLqbNkudNTj9dW1YMQkhCS8ltomJCeONhIfyakOz1NQ1mWzvnn71UKr3khsJkAAJ3I0ABebdyPB1EiCBexJAhnp2ZoYs1yx1LK0jnjMvN0sLwCdLgopOiBV4NyE6ITjp6bwn0oi84U4x'@; put 'ieeTk5MyNDyifb77pKm1QwVlk/FOtnV0y8jYOG0XEcvwJCQQHAIUmMGxJWdCAlEnAKGSlBhv2lcuW5JnBCc8nrlZmaY0UrK2uUQCEcSm9XZSeIbPbLCHFZM2dhK8xzW7e3h0zIjJ5rYOaWhuM4k5EJMoJfQ1vZPhMwqPTAKOEKDAdMTQnCYJRJNAfFysZKanaomkbI3jXCRL8nLU05ltWlumJCdJ'@; put 'ghaBh/DEFhrbCTGEzd6bJ/znNgJWROLeikg8BjN4JYdHRmVA4yY7u3tNMg4EZasKSTyHx/I642dv48knJEAC80OAAnN+OPIoJEAC90kAIigxId6URUJbS9wW6/I6vJ2LsrM03jNJ63PGSZwmFEE4WdEEAYobBJRdcg+qAMWc7YZwg9AbXrcicnxiUkbHxjRecsh4Jds6u6S9s0c6e3qlW+tODg6N'@; put 'sJ+3Bcl7EiCBiBCgwIwIZp6EBEjgfgjEag/1m+IzWT2faZKtxeCzNZkIZZTS01KMKE1U8QkBivei5zrEV6ggs0IU57VC1N7bsURSmIaODefHeO09/g83+xpex9gQu3rt2jX1RE7JmIpItFccGBzWWpOD0t7VLT19A0ZEwkMJEQmhGck5mQnwHxIgARKYhgAF5jRQ+BIJkIC3CSzU5XQkGOGGzPZU'@; put 'XWZPSU785rHGeiLeEyIV74EXFPvExcbIAwu0daF6RO1ysvUKWvEZej+dWMP/W0FoKVnxaAUi7u178H57g2DEkvS1qWvGo4je2xMqHkc1iQZdbxAXiWVrCEbcQzTi8Yi+Pqr/Pz4xZUSnPS/vSYAESMCrBCgwvWoZjosESGBeCCxcuMCIy9iYhcbTiXsIzjiNC41diNcW3hSqRqQmmQx4/D/EaXJS'@; put 'wm1jwGspKlzhKYQAvKFeRgjJGzf+T8Xh6E2hqGJxSOMecYNAnND3jmu5nyn1REJM4jY5NSVTt0TmlJb8YR3R20DzCQmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQ'@; put 'AAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfs'@; put 'wdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4i+ZHtw4AAADdSURBVAAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAF'@; put 'prfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8J/D97oVzdCcK8fgAAAABJRU5ErkJggg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=index.html; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+CiAgICA8dGl0bGU+RGF0YSBDb250cm9sbGVyPC90aXRsZT4KICAgIDwhLS0gPGJhc2UgaHJlZj0iLyI+IC0tPgoKICAgIDwhLS0KICAgICAgU0FTIFZBIGRhdGEtZHJp'@; put 'dmVuIGNvbnRlbnQ6IGVhcmxpZXN0LXBvc3NpYmxlIG1lc3NhZ2UgY2FwdHVyZSBydW5zIGJlZm9yZQogICAgICBBbmd1bGFyIGJvb3RzdHJhcHMuIEl0IGlzIHRoZSBgdmEtZWFybHlgIGdsb2JhbCBzY3JpcHQgYnVuZGxlZCB2aWEKICAgICAgYW5ndWxhci5qc29uIChzcmMvYXNzZXRzL3Zh'@; put 'LWVhcmx5LmpzKSBhbmQgYXV0by1pbmplY3RlZCBoZXJlIGF0IGJ1aWxkIHRpbWUKICAgICAg4oCUIGV4dGVybmFsIChub3QgaW5saW5lKSBzbyBpdCBwYXNzZXMgYSBzdHJpY3QgQ1NQLCBhbmQgaXQgc2VsZi1ndWFyZHMgb24KICAgICAgP2VtYmVkPXZhIHNvIGl0IGlzIGluZXJ0IGluIG5v'@; put 'cm1hbCB1c2UuIFNlZQogICAgICBWYU1lc3NhZ2luZ1NlcnZpY2UucmVwbGF5RWFybHlNZXNzYWdlcy4KICAgIC0tPgoKICAgIDwhLS0gbWV0YSB0YWdzIC0tPgogICAgPCEtLQogICAgICBOT1RFOiBEYXRhIENvbnRyb2xsZXIgbXVzdCBydW4gZW50aXJlbHkgb2ZmbGluZSAvIG9uLXByZW0u'@; put 'IE5ldmVyIHJlZmVyZW5jZQogICAgICBleHRlcm5hbCBhc3NldHMgKGZvbnRzLCBpbWFnZXMsIHNjcmlwdHMsIHN0eWxlcywgQ0ROIGxpbmtzLCBvciByZW1vdGUKICAgICAgb2c6L2l0ZW1wcm9wIFVSTHMpIGhlcmUgb3IgYW55d2hlcmUgaW4gdGhlIGJ1aWx0IHByb2R1Y3QuIEFsbCBhc3Nl'@; put 'dHMgbXVzdAogICAgICBiZSBidW5kbGVkIGFuZCBzZXJ2ZWQgbG9jYWxseS4KICAgIC0tPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIGl0ZW1wcm9wPSJuYW1lIiBjb250ZW50PSJEYXRhIENv'@; put 'bnRyb2xsZXIgZm9yIFNBU8KuIi8+CiAgICA8bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIi8+CiAgICA8bWV0YSBwcm9wZXJ0eT0i'@; put 'b2c6dGl0bGUiIGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iQ2FwdHVyZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSIvPgoKICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0'@; put 'aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSIvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIi8+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAg'@; put 'PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMuMmI1NTg2ZWM1Mjc5ZjExYS5jc3MiPjwvaGVhZD4KCiAgPCEtLQogICAgIyMgU0FTSlMgQWRhcHRlciBjb25maWcgZGV0YWlscyAjIwoKICAgICogYXBwTG9jOiBUaGUgbG9jYXRpb24gaW4gbWV0YWRhdGEgb3IgU0FTIGRyaXZl'@; put 'IHdoZXJlIERDIHdpbGwgYmUgZGVwbG95ZWQKICAgICogc2VydmVyVHlwZTogZWl0aGVyIFNBUzksIFNBU1ZJWUEgb3IgU0FTSlMKICAgICogbG9naW5NZWNoYW5pc206IFVzZSAnRGVmYXVsdCcgZm9yIHJlZ3VsYXIgKHVzZXIvcGFzcykgbG9naW5zLCBvciAnUmVkaXJlY3RlZCcgZm9yIDJG'@; put 'QS9TU08KICAgICogZGVidWc6IFdoZXRoZXIgdG8gZW5hYmxlIGRlYnVnIG9uIHN0YXJ0dXAKCiAgICAjIyBWaXlhIG9ubHkgc2V0dGluZ3MgIyMKICAgICogYWRtaW5Hcm91cDogVGhpcyBncm91cCB3aWxsIGhhdmUgdW5yZXN0cmljdGVkIGFjY2VzcyAoVml5YSBPbmx5KQogICAgKiBkY1Bh'@; put 'dGg6IFRoZSBwaHlzaWNhbCBsb2NhdGlvbiBpbiB3aGljaCB0byBkZXBsb3kgdGhlIHN0YWdpbmcgYXJlYSAoVml5YSBvbmx5KQogICAgKiB1c2VDb21wdXRlQXBpOiBDb25uZWN0aW9uIG1ldGhvZCAoVml5YSBvbmx5KQogICAgKiBjb250ZXh0TmFtZTogQ29tcHV0ZSBDb250ZXh0IChWaXlh'@; put 'IG9ubHkpCgogIC0tPgoKICA8c2FzanMgc2VydmVydXJsPSIiIGFwcGxvYz0iL1B1YmxpYy9hcHAvZGMiIHNlcnZlcnR5cGU9IlNBU0pTIiBsb2dpbm1lY2hhbmlzbT0iUmVkaXJlY3RlZCIgZGVidWc9ImZhbHNlIiB1c2Vjb21wdXRlYXBpPSJudWxsIiBydW5hc3Rhc2s9InRydWUiIGNvbnRl'@; put 'eHRuYW1lPSJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiIGFkbWluZ3JvdXA9IlNBU0FkbWluaXN0cmF0b3JzIiBob3RsaWNlbmNla2V5PSJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbiI+CiAgPC9zYXNqcz4KCiAgPGJvZHkgY2RzLXRoZW1lPSJsaWdodCIgY2xhc3M9'@; put 'Im0tMCI+CiAgICA8bXktYXBwPjwvbXktYXBwPgogIDxzY3JpcHQgc3JjPSJydW50aW1lLmE4ODgyNDIxN2Y2ZGI3Y2QuanMiIHR5cGU9Im1vZHVsZSI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9InBvbHlmaWxscy4yYjk2MGYxZWNhZjE3ZjhhLmpzIiB0eXBlPSJtb2R1bGUiPjwvc2NyaXB0Pjxz'@; put 'Y3JpcHQgc3JjPSJzY3JpcHRzLjgwYjMzZjkxZjZmMDJiZDQuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJ2YS1lYXJseS44ZTdmYTM3NzIzYWNiZDlmLmpzIiBkZWZlcj48L3NjcmlwdD48c2NyaXB0IHNyYz0ibWFpbi5jODY1OWZhZjA3NDVlZjViLmpzIiB0eXBlPSJtb2R1bGUi'@; put 'Pjwvc2NyaXB0PjwvYm9keT4KPC9odG1sPgo='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=main.c8659faf0745ef5b.js; filename filecode temp lrecl=12747720; data _null_; file filecode; put 'KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1s3OTJdLHszNzQ4MihmZSl7ZmUuZXhwb3J0cz1mdW5jdGlvbihqKXt2YXIgaD17fTtmdW5jdGlvbiB5KGMpe2lmKGhbY10pcmV0dXJuIGhbY10uZXhwb3J0'@; put 'czt2YXIgcz1oW2NdPXtpOmMsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4galtjXS5jYWxsKHMuZXhwb3J0cyxzLHMuZXhwb3J0cyx5KSxzLmw9ITAscy5leHBvcnRzfXJldHVybiB5Lm09aix5LmM9aCx5LmQ9ZnVuY3Rpb24oYyxzLEEpe3kubyhjLHMpfHxPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'YyxzLHtlbnVtZXJhYmxlOiEwLGdldDpBfSl9LHkucj1mdW5jdGlvbihjKXt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYyxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5'@; put 'KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSx5LnQ9ZnVuY3Rpb24oYyxzKXtpZigxJnMmJihjPXkoYykpLDgmc3x8NCZzJiYib2JqZWN0Ij09dHlwZW9mIGMmJmMmJmMuX19lc01vZHVsZSlyZXR1cm4gYzt2YXIgQT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHkucihBKSxPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoQSwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6Y30pLDImcyYmInN0cmluZyIhPXR5cGVvZiBjKWZvcih2YXIgdiBpbiBjKXkuZChBLHYsZnVuY3Rpb24oQyl7cmV0dXJuIGNbQ119LmJpbmQobnVsbCx2KSk7cmV0dXJuIEF9LHkubj1mdW5jdGlvbihjKXt2YXIg'@; put 'cz1jJiZjLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBjfTtyZXR1cm4geS5kKHMsImEiLHMpLHN9LHkubz1mdW5jdGlvbihjLHMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxzKX0seS5wPSIi'@; put 'LHkoeS5zPSIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyIpfSh7Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0'@; put 'cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyAqKiohCiAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihqLGgseSl7InVzZSBzdHJpY3QiO09iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eShoLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxoLkNsYXJpdHlJY29uc0FwaT12b2lkIDA7dmFyIGM9eSgKLyohIC4vdXRpbHMvc2hhcGUtdGVtcGxhdGUtb2JzZXJ2ZXIgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVy'@; put 'LnRzIikscz17fSxBPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdigpe31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsImluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuc2luZ2xlSW5zdGFuY2V8fCh2LnNpbmdsZUluc3RhbmNlPW5ldyB2KSx2LnNpbmdsZUluc3RhbmNlfSxl'@; put 'bnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHYucHJvdG90eXBlLnZhbGlkYXRlTmFtZT1mdW5jdGlvbihDKXtpZigwPT09Qy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJTaGFwZSBuYW1lIG9yIGFsaWFzIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nISIpO2lmKC9ccy8udGVzdChD'@; put 'KSl0aHJvdyBuZXcgRXJyb3IoIlNoYXBlIG5hbWUgb3IgYWxpYXMgbXVzdCBub3QgY29udGFpbiBhbnkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzISIpO3JldHVybiEwfSx2LnByb3RvdHlwZS5ub3JtYWxpemVTaGFwZU5hbWU9ZnVuY3Rpb24oQyl7cmV0dXJuIEMudG9Mb3dlckNhc2UoKX0sdi5w'@; put 'cm90b3R5cGUuc2V0SWNvblRlbXBsYXRlPWZ1bmN0aW9uKEMsdyl7dmFyIFM9dy50cmltKCk7dGhpcy52YWxpZGF0ZU5hbWUoQykmJihDPXRoaXMubm9ybWFsaXplU2hhcGVOYW1lKEMpLHNbQ10mJmRlbGV0ZSBzW0NdLHNbQ109UyxjLlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5l'@; put 'bWl0Q2hhbmdlcyhDLFMpKX0sdi5wcm90b3R5cGUuc2V0SWNvbkFsaWFzZXM9ZnVuY3Rpb24oQyx3LFMpe2Zvcih2YXIgTD0wLFI9UztMPFIubGVuZ3RoO0wrKyl7dmFyIHg9UltMXTt0aGlzLnZhbGlkYXRlTmFtZSh4KSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KEMseCx7Z2V0OmZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIENbd119LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9fSx2LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oQyl7aWYoIm9iamVjdCIhPXR5cGVvZiBDKXRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGlu'@; put 'IHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgICAgICAgICAgICAgICB7ICJzaGFwZS1uYW1lIjogInNoYXBlLXRlbXBsYXRlIiB9Jyk7Zm9yKHZhciB3IGluIEMpQy5oYXNPd25Qcm9wZXJ0eSh3KSYmdGhpcy5zZXRJY29uVGVtcGxhdGUodyxDW3ddKX0sdi5wcm90b3R5cGUuaGFzPWZ1bmN0'@; put 'aW9uKEMpe3JldHVybiEhc1t0aGlzLm5vcm1hbGl6ZVNoYXBlTmFtZShDKV19LHYucHJvdG90eXBlLmdldD1mdW5jdGlvbihDKXtpZighQylyZXR1cm4gcztpZigic3RyaW5nIiE9dHlwZW9mIEMpdGhyb3cgbmV3IFR5cGVFcnJvcigiT25seSBzdHJpbmcgYXJndW1lbnQgaXMgYWxsb3dlZCBp'@; put 'biB0aGlzIG1ldGhvZC4iKTtyZXR1cm4gc1t0aGlzLm5vcm1hbGl6ZVNoYXBlTmFtZShDKV19LHYucHJvdG90eXBlLmFsaWFzPWZ1bmN0aW9uKEMpe2lmKCJvYmplY3QiIT10eXBlb2YgQyl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCBsaXRlcmFsIHBh'@; put 'c3NlZCBpbiB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gICAgICAgICAgICAgICAgeyAic2hhcGUtbmFtZSI6IFsiYWxpYXMtbmFtZSIsIC4uLl0gfScpO2Zvcih2YXIgdyBpbiBDKWlmKEMuaGFzT3duUHJvcGVydHkodykpe2lmKCFzLmhhc093blByb3BlcnR5KHcpKXRocm93IG5ldyBFcnJv'@; put 'cignQW4gaWNvbiAiJyt3KyJcIiB5b3UgYXJlIHRyeWluZyB0byBzZXQgYWxpYXNlcyB0byBkb2Vzbid0IGV4aXN0IGluIHRoZSBDbGFyaXR5IEljb25zIHNldHMhIik7dGhpcy5zZXRJY29uQWxpYXNlcyhzLHcsQ1t3XSl9fSx2fSgpO2guQ2xhcml0eUljb25zQXBpPUF9LCIuL3Byb2plY3Rz'@; put 'L2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWVsZW1lbnQudHMgKioqIQogICAgICAg'@; put 'ICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZToh'@; put 'MH0pLGguQ2xhcml0eUljb25FbGVtZW50PXZvaWQgMDt2YXIgYz15KAovKiEgLi9jbHItaWNvbnMtYXBpICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzIikscz15KAovKiEgLi91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlciAqLwoiLi9wcm9qZWN0cy9pY29u'@; put 'cy9zcmMvdXRpbHMvc2hhcGUtdGVtcGxhdGUtb2JzZXJ2ZXIudHMiKSxBPTAsdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7di5jbGFzc05hbWU9ImlzLW9mZi1zY3JlZW4iO3ZhciBDPWZ1bmN0aW9uKCl7cmV0dXJuIEhUTUxFbGVtZW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07'@; put 'ZnVuY3Rpb24gdygpe3ZhciBTPUMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBTLmNsckljb25VbmlxSWQ9Il9jbHJfaWNvbl8iK0EsQSsrLFN9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYoQz1mdW5jdGlvbigpe3JldHVybiBSZWZsZWN0LmNvbnN0cnVjdChIVE1MRWxlbWVudCxh'@; put 'cmd1bWVudHMsdGhpcy5jb25zdHJ1Y3Rvcil9KSxoLkNsYXJpdHlJY29uRWxlbWVudD13LHcub2JzZXJ2ZWRBdHRyaWJ1dGVzPVsic2hhcGUiLCJzaXplIiwidGl0bGUiXSwody5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOntjb25m'@; put 'aWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6d319KSkuY29uc3RydWN0b3I9dyx3LnByb3RvdHlwZS5fYXBwZW5kQ3VzdG9tVGl0bGU9ZnVuY3Rpb24oKXt2YXIgUz12LmNsb25lTm9kZSghMSk7Uy5pZD10aGlzLmNsckljb25VbmlxSWQsUy50ZXh0Q29udGVudD10aGlzLmN1cnJlbnRU'@; put 'aXRsZUF0dHJWYWwsdGhpcy5hcHBlbmRDaGlsZChTKX0sdy5wcm90b3R5cGUuX3NldEljb25TaXplPWZ1bmN0aW9uKFMpeyFOdW1iZXIoUyl8fE51bWJlcihTKTwwPyh0aGlzLnN0eWxlLndpZHRoPW51bGwsdGhpcy5zdHlsZS5oZWlnaHQ9bnVsbCk6KHRoaXMuc3R5bGUud2lkdGg9UysicHgi'@; put 'LHRoaXMuc3R5bGUuaGVpZ2h0PVMrInB4Iil9LHcucHJvdG90eXBlLl9ub3JtYWxpemVTaGFwZT1mdW5jdGlvbihTKXtyZXR1cm4gUy5zcGxpdCgvXHMvKVswXS50b0xvd2VyQ2FzZSgpfSx3LnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe3ZhciBTPXRoaXM7aWYodGhp'@; put 'cy5nZXRBdHRyaWJ1dGUoInJvbGUiKXx8dGhpcy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJub25lIiksdGhpcy5oYXNBdHRyaWJ1dGUoInNpemUiKSl7dmFyIEw9dGhpcy5nZXRBdHRyaWJ1dGUoInNpemUiKTt0aGlzLmN1cnJlbnRTaXplQXR0clZhbCE9PUwmJih0aGlzLmN1cnJlbnRTaXplQXR0'@; put 'clZhbD1MLHRoaXMuX3NldEljb25TaXplKEwpKX1pZih0aGlzLmhhc0F0dHJpYnV0ZSgic2hhcGUiKSl7dmFyIFI9dGhpcy5fbm9ybWFsaXplU2hhcGUodGhpcy5nZXRBdHRyaWJ1dGUoInNoYXBlIikpO2lmKHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb249cy5TaGFwZVRlbXBsYXRl'@; put 'T2JzZXJ2ZXIuaW5zdGFuY2Uuc3Vic2NyaWJlVG8oUixmdW5jdGlvbihIKXtTLl9pbmplY3RUZW1wbGF0ZShIKX0pLHRoaXMuY3VycmVudFNoYXBlQXR0clZhbD1SLCFjLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5oYXModGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKSlyZXR1cm4gdm9pZCB0'@; put 'aGlzLl9pbmplY3RFcnJvclRlbXBsYXRlKCk7dmFyIHg9Yy5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCk7aWYoeD09PXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUpcmV0dXJuO3RoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9eH1pZih0aGlz'@; put 'Lmhhc0F0dHJpYnV0ZSgidGl0bGUiKSl7dmFyIFU9dGhpcy5nZXRBdHRyaWJ1dGUoInRpdGxlIik7aWYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsIT09VSYmKHRoaXMuY3VycmVudFRpdGxlQXR0clZhbD1VKSwhdGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKXJldHVybn10aGlzLl9pbmplY3RU'@; put 'ZW1wbGF0ZSgpfSx3LnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s9ZnVuY3Rpb24oUyxMLFIpe3ZhciB4PXRoaXM7aWYoInNpemUiPT09UyYmdGhpcy5fc2V0SWNvblNpemUoUiksInNoYXBlIj09PVMpe2lmKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbD10aGlzLl9ub3JtYWxp'@; put 'emVTaGFwZShSKSx0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uJiYodGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpLHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb249cy5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2Uuc3Vic2NyaWJlVG8odGhpcy5jdXJy'@; put 'ZW50U2hhcGVBdHRyVmFsLGZ1bmN0aW9uKFUpe3guX2luamVjdFRlbXBsYXRlKFUpfSkpLCFjLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5oYXModGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKSlyZXR1cm4gdm9pZCB0aGlzLl9pbmplY3RFcnJvclRlbXBsYXRlKCk7dGhpcy5jdXJyZW50U2hh'@; put 'cGVUZW1wbGF0ZT1jLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKX0idGl0bGUiPT09UyYmKHRoaXMuY3VycmVudFRpdGxlQXR0clZhbD1SLCF0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpfHx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfSx3LnBy'@; put 'b3RvdHlwZS5kaXNjb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe3RoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24mJnRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24oKX0sdy5wcm90b3R5cGUuX3NldEFyaWFMYWJlbGxlZEJ5PWZ1bmN0aW9uKCl7dmFyIFM9dGhpcy5nZXRB'@; put 'dHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpLFI9dGhpcy5xdWVyeVNlbGVjdG9yKCJzdmciKXx8dGhpcztTP1MmJlMuaW5kZXhPZih0aGlzLmNsckljb25VbmlxSWQpPDAmJlIuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLFMrIiAiK3RoaXMuY2xySWNvblVuaXFJZCk6Ui5zZXRB'@; put 'dHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdGhpcy5jbHJJY29uVW5pcUlkKX0sdy5wcm90b3R5cGUuX2luamVjdFRlbXBsYXRlPWZ1bmN0aW9uKFMpe1MmJlMhPT10aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlJiYodGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZT1TKSx0aGlzLmlubmVySFRN'@; put 'TD10aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlLHRoaXMuY3VycmVudFRpdGxlQXR0clZhbCYmKHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KCksdGhpcy5fYXBwZW5kQ3VzdG9tVGl0bGUoKSl9LHcucHJvdG90eXBlLl9pbmplY3RFcnJvclRlbXBsYXRlPWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50'@; put 'U2hhcGVUZW1wbGF0ZT1jLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQoImVycm9yIiksdGhpcy5faW5qZWN0VGVtcGxhdGUoKX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAg'@; put 'ICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvaW5kZXgudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGguQ2xhcml0eUljb25zPXZvaWQgMDt2YXIgYz15KAovKiEgLi9jbHItaWNvbnMtYXBpICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzIikscz15KAovKiEgLi9jbHItaWNvbnMtZWxl'@; put 'bWVudCAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWVsZW1lbnQudHMiKSxBPXkoCi8qISAuL3NoYXBlcy9jb3JlLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIiksdj1jLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZTtoLkNs'@; put 'YXJpdHlJY29ucz12LHYuYWRkKEEuQ29yZVNoYXBlcyksdHlwZW9mIHdpbmRvdzwidSImJih3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpfHwod2luZG93LkNsYXJpdHlJY29ucz12KSxjdXN0b21FbGVtZW50cy5nZXQoImNsci1pY29uIil8fGN1c3RvbUVsZW1lbnRzLmRl'@; put 'ZmluZSgiY2xyLWljb24iLHMuQ2xhcml0eUljb25FbGVtZW50KSl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgISoqKiAu'@; put 'L3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihqLGgseSl7InVz'@; put 'ZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxoLkNvcmVTaGFwZXM9aC5DbHJTaGFwZUFycm93PWguQ2xyU2hhcGVTdGVwRm9yd2FyZDI9aC5DbHJTaGFwZUV5ZUhpZGU9aC5DbHJTaGFwZUV5ZT1oLkNsclNoYXBlRXZlbnQ9aC5DbHJT'@; put 'aGFwZUNhbGVuZGFyPWguQ2xyU2hhcGVBbmdsZURvdWJsZT1oLkNsclNoYXBlVmlld0NvbHVtbnM9aC5DbHJTaGFwZVNlYXJjaD1oLkNsclNoYXBlVm1CdWc9aC5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9aC5DbHJTaGFwZUZpbHRlckdyaWQ9aC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9'@; put 'aC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD1oLkNsclNoYXBlQ2xvdWQ9aC5DbHJTaGFwZUltYWdlPWguQ2xyU2hhcGVCZWxsPWguQ2xyU2hhcGVGb2xkZXJPcGVuPWguQ2xyU2hhcGVGb2xkZXI9aC5DbHJTaGFwZUFuZ2xlPWguQ2xyU2hhcGVVc2VyPWguQ2xyU2hhcGVCYXJzPWguQ2xy'@; put 'U2hhcGVIZWxwSW5mbz1oLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPWguQ2xyU2hhcGVFcnJvclN0YW5kYXJkPWguQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9aC5DbHJTaGFwZUluZm9TdGFuZGFyZD1oLkNsclNoYXBlSW5mb0NpcmNsZT1oLkNsclNoYXBlQ2hlY2tDaXJjbGU9aC5DbHJTaGFw'@; put 'ZUV4Y2xhbWF0aW9uQ2lyY2xlPWguQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPWguQ2xyU2hhcGVUaW1lcz1oLkNsclNoYXBlQ2hlY2s9aC5DbHJTaGFwZUNvZz1oLkNsclNoYXBlSG9tZT1oLkNsclNoYXBlVW5rbm93blN0YXR1cz12b2lkIDA7dmFyIGM9eSgKLyohIC4uL3V0aWxzL2Rl'@; put 'c2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLHM9eSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO2guQ2xy'@; put 'U2hhcGVVbmtub3duU3RhdHVzPSgwLHMuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy41OCIgY3k9IjI2LjIzIiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI0LjcsMTNhNS4xOCw1LjE4LDAsMCwwLTIuMTYtMy41Niw3LjI2LDcuMjYsMCwwLDAtNS43MS0xLjA5QTExLjM0LDExLjM0LDAsMCwwLDEyLDEwLjQ0LDEsMSwwLDEsMCwxMy4yNiwxMmE5LjMyLDkuMzIsMCwwLDEsMy45NC0xLjcyLDUuMjksNS4y'@; put 'OSwwLDAsMSw0LjE2Ljc0LDMuMjEsMy4yMSwwLDAsMSwxLjM1LDIuMTljLjMzLDIuNjktMy4xOSwzLjc1LTUuMzIsNC4xNGwtLjgyLjE1djQuMzZhMSwxLDAsMCwwLDIsMFYxOS4xN0MyNC42MSwxNy43OSwyNC44OCwxNC40MSwyNC43LDEzWiIvPicpLGguQ2xyU2hhcGVIb21lPSgwLHMuY2xy'@; put 'SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNzEsMTcuMjlsLTE1LTE1YTEsMSwwLDAsMC0xLjQxLDBsLTE1LDE1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTgsNC40MSwzMi4yOSwxOC43MWExLDEsMCwwLDAsMS40MS0xLjQx'@; put 'WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjgsMzJoLTVWMjJIMTNWMzJIOFYxOEw2LDIwVjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NmwtMi0yWiIvPlxuICAg'@; put 'ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywxOWExLDEsMCwwLDEtLjcxLS4yOUwxOCw0LjQxLDMuNzEsMTguNzFhMSwxLDAsMCwxLTEuNDEtMS40MWwxNS0xNWExLDEsMCwwLDEsMS40MSwwbDE1LDE1QTEsMSwwLDAsMSwz'@; put 'MywxOVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTgsNy43OSw2LDE5LjgzVjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NloiLz4nKSxoLkNsclNoYXBlQ29nPSgwLHMu'@; put 'Y2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMSwxMWMtMy45LDAtNywzLjEtNyw3czMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdTMjIsMTEsMTguMSwxMXogTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1'@; put 'LTVjMi44LDAsNSwyLjIsNSw1UzIwLjksMjMsMTguMSwyM3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjgsMTQuN0wzMCwxMy44bC0wLjYtMS41bDEuNC0yLjZjMC4zLTAuNiwwLjItMS40LTAuMy0x'@; put 'LjlsLTIuNC0yLjRjLTAuNS0wLjUtMS4zLTAuNi0xLjktMC4zbC0yLjYsMS40bC0xLjUtMC42bC0wLjktMi44QzIxLDIuNSwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUtMS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUs'@; put 'Ny45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRjMCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwx'@; put 'LjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMtMC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNs'@; put 'Mi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNS42LDMzLjUsMTQuOSwzMi44LDE0Ljd6IE0zMiwxOS40bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4x'@; put 'bC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4z'@; put 'LTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgy'@; put 'LjhsMS4xLDMuNUwyMSw3LjdjMC43LDAuMiwxLjQsMC41LDIuMSwwLjlsMC41LDAuM2wzLjMtMS44bDIsMmwtMS44LDMuM2wwLjMsMC41YzAuNCwwLjcsMC43LDEuNCwwLjksMi4xbDAuMSwwLjVsMy42LDEuMVYxOS40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjEsMThjMCwzLjksMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN3MtMy4xLTctNy03QzE0LjIsMTEsMTEuMSwxNC4xLDExLjEsMTh6IE0yMy4xLDE4YzAsMi44LTIuMiw1LTUsNWMtMi44LDAtNS0yLjIt'@; put 'NS01czIuMi01LDUtNUMyMC45LDEzLDIzLjEsMTUuMiwyMy4xLDE4eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjgsMTQuN0wzMCwxMy44bC0wLjEtMC4zYy0wLjgsMC0x'@; put 'LjYtMC4yLTIuNC0wLjRjMC4zLDAuNiwwLjYsMS4zLDAuOCwxLjlsMC4xLDAuNWwzLjYsMS4xdjIuOGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45'@; put 'bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVj'@; put 'MC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS4zLDAuNSwxLjksMC44Yy0wLjMtMC44LTAuNC0xLjYtMC40LTIu'@; put 'NWwtMC40LTAuMmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIu'@; put 'NWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wy'@; put 'LjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42'@; put 'LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJh'@; put 'ZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy43LDE1LjRoLTUuM3YwLjFsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMt'@; put 'MC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMu'@; put 'MywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywy'@; put 'LjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy40bDEuNC0yLjNsLTAuNi0yQzIxLDIuNCwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUtMS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45'@; put 'QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRjMCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQs'@; put 'Mi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMtMC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41'@; put 'LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNiwzMy45LDE1LjcsMzMuNywxNS40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTguMSwyM2MtMi44LDAtNS0yLjItNS01czIuMi01LDUtNWMwLjIsMCwwLjUsMCwwLjcsMC4xYy0wLjItMC42LTAuMy0xLjMtMC4yLTJoLTAuNWMtMy45LDAtNywzLjEtNyw3YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdjMC0wLjktMC4y'@; put 'LTEuOC0wLjUtMi42aC0yLjJjMC41LDAuOCwwLjcsMS42LDAuNywyLjVDMjMuMSwyMC44LDIwLjksMjMsMTguMSwyM3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVy'@; put 'dCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgs'@; put 'MjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNTcsMTUuNzJsLTMuMzUtMWExMS42NSwxMS42NSwwLDAsMC0uOTUtMi4zM2wxLjY0LTMuMDdhLjYxLjYxLDAsMCwwLS4xMS0uNzJMMjcu'@; put 'NDEsNi4yYS42MS42MSwwLDAsMC0uNzItLjExTDIzLjY0LDcuNzJhMTEuNjIsMTEuNjIsMCwwLDAtMi4zNi0xbC0xLTMuMzFBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYx'@; put 'LDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDks'@; put 'MjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAs'@; put 'MCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcs'@; put 'MTUuNzJaTTE4LDIzLjVBNS41LDUuNSwwLDEsMSwyMy41LDE4LDUuNSw1LjUsMCwwLDEsMTgsMjMuNVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFh'@; put 'MTIuMTIsMTIuMTIsMCwwLDAtLjQ3LTEuMzIsNy40OSw3LjQ5LDAsMCwxLTYuMTQtNi4xNiwxMS44MiwxMS44MiwwLDAsMC0xLjMzLS40OGwtMS0zLjMxQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgs'@; put 'MWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAs'@; put 'MCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4z'@; put 'OGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYx'@; put 'LjYxLDAsMCwwLDMyLjU3LDE1LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1i'@; put 'YWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMi41NywxNS43MiwzMS41LDE1LjRIMjIuODVBNS41LDUuNSwwLDEsMSwxOCwxMi41YTUu'@; put 'NTMsNS41MywwLDAsMSwuNjUsMEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwyLjA5LTMuNjItLjg2LTIuODNBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43'@; put 'Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYx'@; put 'LjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgt'@; put 'Ljk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaIi8+'@; put 'XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwz'@; put 'NC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGguQ2xyU2hhcGVDaGVjaz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEzLjcyLDI3LjY5LDMuMjksMTcuMjdhMSwx'@; put 'LDAsMCwxLDEuNDEtMS40MWw5LDlMMzEuMjksNy4yOWExLDEsMCwwLDEsMS40MSwxLjQxWiIvPicpLGguQ2xyU2hhcGVUaW1lcz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LjQxLDE4bDguMjktOC4yOWEx'@; put 'LDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz4nKSxoLkNsclNoYXBlRXhjbGFtYXRpb25U'@; put 'cmlhbmdsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIxLjMyYTEuMywxLjMsMCwwLDAsMS4zLTEuM1YxNGExLjMsMS4zLDAsMSwwLTIuNiwwdjZBMS4zLDEuMywwLDAsMCwxOCwyMS4zMloiLz5cbiAg'@; put 'ICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMTcuOTUiIGN5PSIyNC4yNyIgcj0iMS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9'@; put 'Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNabS0xLjc4LDEuOTRhMSwxLDAsMCwxLS44Ni40OUg4LjIxYTEsMSwwLDAsMS0uODgtMS40OEwxNy4wNyw4LjU1YTEsMSww'@; put 'LDAsMSwxLjc2LDBsOS43NCwxNy45NEExLDEsMCwwLDEsMjguNTUsMjcuNDhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRB'@; put 'MywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1pNMTYuNDYsMTIuNzRhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI2LjI1YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI2LjI1WiIv'@; put 'PicpLGguQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwx'@; put 'OCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIwLjA3YTEuMywxLjMsMCwwLDEtMS4zLTEuM3YtNmExLjMsMS4zLDAsMSwxLDIuNiwwdjZBMS4zLDEuMywwLDAsMSwx'@; put 'OCwyMC4wN1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTcuOTUiIGN5PSIyMy4wMiIgcj0iMS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk'@; put 'LXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTEuNDksNmExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjUuNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNS41'@; put 'WiIvPicpLGguQ2xyU2hhcGVDaGVja0NpcmNsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwx'@; put 'MCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE2LjM0LDIzLjc0bC01LTVhMSwxLDAsMCwxLDEuNDEtMS40MWwzLjU5LDMuNTksNi43OC02Ljc4YTEsMSwwLDAsMSwxLjQxLDEu'@; put 'NDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDE4QTEyLDEyLDAsMSwxLDE4LDYsMTIsMTIsMCwwLDEsMzAsMThabS00Ljc3LTIuMTZhMS40LDEuNCwwLDAsMC0yLTJsLTYuNzcsNi43N0wxMywxNy4xNmEx'@; put 'LjQsMS40LDAsMCwwLTIsMmw1LjQ1LDUuNDVaIi8+JyksaC5DbHJTaGFwZUluZm9DaXJjbGU9KDAscy5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgIGN4PSIxNy45MyIgY3k9IjExLjkiIHI9IjEuNCIvPlxuICAgICAgICAg'@; put 'ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAgZD0iTTIxLDIzSDE5VjE1SDE2YTEsMSwwLDAsMCwwLDJoMXY2SDE1YTEsMSwwLDEsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg'@; put 'Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMiw1LjE1YTIsMiwwLDEsMSwyLDJBMiwyLDAsMCwxLDE1LjksMTEuMTVaTTIzLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMSwxLDAtMmgyVjE3SDE2YTEsMSwwLDAsMSww'@; put 'LTJoNHY4aDJBMSwxLDAsMCwxLDIzLDI0WiIvPicpLGguQ2xyU2hhcGVJbmZvU3RhbmRhcmQ9KDAscy5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3Ljk3IiBjeT0iMTAuNDUiIHI9IjEuNCIvPlxuICAgICAgICAg'@; put 'ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjEsMjVIMTlWMTQuMUgxNmExLDEsMCwwLDAsMCwyaDFWMjVIMTVhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWm0tLjEsNS4yOGEyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxNy45LDcuMzhabTMuNiwyMS4yNWgtN2ExLjQsMS40LDAsMSwxLDAtMi44aDIuMXYtOS4ySDE1YTEuNCwx'@; put 'LjQsMCwxLDEsMC0yLjhoNC40djEyaDIuMWExLjQsMS40LDAsMSwxLDAsMi44WiIvPicpLGguQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSww'@; put 'LDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOCwxMi4xYTEsMSwwLDAsMC0xLjQxLDBM'@; put 'MTUuNDksMjMuMTVsLTYtNkExLDEsMCwwLDAsOCwxOC41M0wxNS40OSwyNiwyOCwxMy41MkExLDEsMCwwLDAsMjgsMTIuMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwx'@; put 'NiwxNiwwLDAsMCwxOCwyWk0yOC40NSwxMi42MywxNS4zMSwyNS43Niw3LjU1LDE4YTEuNCwxLjQsMCwwLDEsMi0ybDUuNzgsNS43OEwyNi40NywxMC42NWExLjQsMS40LDAsMSwxLDIsMloiLz4nKSxoLkNsclNoYXBlRXJyb3JTdGFuZGFyZD0oMCxzLmNsckljb25TVkcpKCc8Y2lyY2xlIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYt'@; put 'MTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwx'@; put 'NCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWk0xNi42LDguOGExLjQsMS40LDAs'@; put 'MCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI4LjZhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjguNloiLz4nKSxoLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPSgwLHMuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMi42MWExLDEsMCwwLDEtMS0xdi0xMmExLDEsMCwxLDEsMiwwdjEy'@; put 'QTEsMSwwLDAsMSwxOCwyMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE1LjA2MjA3ODIsMS42ODExOTYgQzE1LjYyOTg4MTksMC42NDkyNjYzNTUgMTYuNzEwOTA5MSwwLjAxMDIyMTkzOTYgMTcu'@; put 'ODg1LDAuMDEwMjIxOTM5NiBDMTkuMDU5MDkwOSwwLjAxMDIyMTkzOTYgMjAuMTQwMTE4MSwwLjY0OTI2NjM1NSAyMC43MDg2NDMzLDEuNjgyNTIxMjkgTDM0LjU5ODY0NCwyNy4yNDI1MjI1IEMzNS4xNDA3NzQ2LDI4LjI0MDEzOTcgMzUuMTE3NDM0NSwyOS40NDk1MzczIDM0LjUzNzIxNjEs'@; put 'MzAuNDI1NDk0MyBDMzMuOTU2OTk3NywzMS40MDE0NTE0IDMyLjkwNTY3MSwzMS45OTk2OTg0IDMxLjc3LDMyIEw0LjAyMjM5MzIzLDMxLjk5OTc0OTIgQzIuODc0MDkwMDksMzIuMDI1NDY5OSAxLjc5OTAyODQzLDMxLjQzNzU3NTMgMS4yMDEwNjMzNSwzMC40NTY5MTI2IEMwLjYwMzA5ODI2'@; put 'NSwyOS40NzYyNDk5IDAuNTcyNzc3ODk5LDI4LjI1MTMxNzkgMS4xMjIwNzgxOCwyNy4yNDExOTYgTDE1LjA2MjA3ODIsMS42ODExOTYgWiBNMi44Nzg1MDc2NywyOC4xOTc3MjgyIEMyLjY3MDYwOTY2LDI4LjU4MDAzNzYgMi42ODIwOTc1LDI5LjA0NDE0MjMgMi45MDg2NTU3LDI5LjQxNTY5'@; put 'NzcgQzMuMTM1MjEzOSwyOS43ODcyNTMyIDMuNTQyNTM1NCwzMC4wMDk5OTU5IDQsMzAgTDMxLjc2OTczNDQsMzAgQzMyLjE5OTkxOTEsMjkuOTk5ODg1OCAzMi41OTgyNDc4LDI5Ljc3MzIyMDggMzIuODE4MDgyMSwyOS40MDM0NDgyIEMzMy4wMzc5MTY0LDI5LjAzMzY3NTcgMzMuMDQ2NzU5'@; put 'NSwyOC41NzU0NTY3IDMyLjg0MTM1NjcsMjguMTk3NDc4NyBMMTguOTUzODczOSwyLjY0MjA4MTk1IEMxOC43Mzk0MjM2LDIuMjUyMzQ0MzYgMTguMzI5ODQxOSwyLjAxMDIyMTk0IDE3Ljg4NSwyLjAxMDIyMTk0IEMxNy40NDA2ODg5LDIuMDEwMjIxOTQgMTcuMDMxNTUzOCwyLjI1MTc2Njky'@; put 'IDE2LjgxNjg5NDYsMi42NDA2ODc1MyBMMi44Nzg1MDc2NywyOC4xOTc3MjgyIFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuNiwyOS4yMSwyMC43MSwzLjY1YTMuMjIsMy4yMiwwLDAsMC01LjY2LDBMMS4x'@; put 'NywyOS4yMUEzLjIyLDMuMjIsMCwwLDAsNCwzNEgzMS43N2EzLjIyLDMuMjIsMCwwLDAsMi44My00Ljc1Wk0xNi42LDEwYTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjkuODVhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjku'@; put 'ODVaIi8+JyksaC5DbHJTaGFwZUhlbHBJbmZvPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4zOSwyNS40NWExLDEsMCwwLDAtMS4zOC4yOWMtMS40MSwyLjE2LTQsNC44MS02LjMxLDUuN3MtNC4xMi41Ny00Ljg0LDBjLS4zMS0uMjctMS4xMi0xLS40My0zLjQ5LjQ2LTEuNjYsMy4z'@; put 'Mi05LjQ4LDQtMTEuMzhsLTIuMTguMjhjLS42OSwxLjg2LTMuMjksOC44NC0zLjc2LDEwLjU4LS42OCwyLjQ5LS4zNCw0LjMsMS4wOSw1LjU2QTUuNTksNS41OSwwLDAsMCwxNSwzNGE5LjUzLDkuNTMsMCwwLDAsMy40NS0uN2MyLjc5LTEuMDksNS43Mi00LjEyLDcuMjYtNi40N0ExLDEsMCww'@; put 'LDAsMjUuMzksMjUuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4zLDExYTQuNSw0LjUsMCwxLDAtNC41LTQuNUE0LjUsNC41LDAsMCwwLDE5LjMsMTFabTAtN2EyLjUsMi41LDAsMSwxLTIuNSwyLjVB'@; put 'Mi41LDIuNSwwLDAsMSwxOS4zLDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS44MSwxNWMuMDYsMCw2LjI3LS44Miw3LjczLTEsLjY1LS4xLDEuMTQsMCwxLjMuMTVzLjIxLjgtLjA3LDEuNjhjLS42MSwx'@; put 'Ljg2LTMuNjksMTEtNC41OSwxMy43MWE4LDgsMCwwLDAsMS4yOS0uMzgsNy4zMiw3LjMyLDAsMCwwLDEuMTUtLjZDMTkuODUsMjUsMjIuMTUsMTguMSwyMi42NywxNi41MnMuMzktMi43OC0uMy0zLjZhMy4xNiwzLjE2LDAsMCwwLTMuMDgtLjgzYy0xLjQzLjE1LTcuNDcuOTQtNy43MywxYTEs'@; put 'MSwwLDAsMCwuMjYsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjAuNzUiIGN5PSI2IiByPSI0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTI0Ljg0LDI2LjIzYTEsMSwwLDAsMC0xLjQuMjksMTYuNiwxNi42LDAsMCwxLTMuNTEsMy43N2MtLjMzLjI1LTEuNTYsMS4yLTIuMDgsMS0uMzYtLjExLS4xNS0uODItLjA4LTEuMTJsLjUzLTEuNTdjLjIyLS42NCw0LjA1LTEyLDQuNDctMTMuMy42Mi0xLjkuMzUtMy43Ny0yLjQ4'@; put 'LTMuMzItLjc3LjA4LTguNTgsMS4wOS04LjcyLDEuMWExLDEsMCwwLDAsLjEzLDJzMy0uMzksMy4zMy0uNDJhLjg4Ljg4LDAsMCwxLC44NS40NCwyLjQ3LDIuNDcsMCwwLDEtLjA3LDEuNzFjLS4yNiwxLTQuMzcsMTIuNTgtNC41LDEzLjI1YTIuNzgsMi43OCwwLDAsMCwxLjE4LDMsNSw1LDAs'@; put 'MCwwLDMuMDguODNoMGE4LjUzLDguNTMsMCwwLDAsMy4wOS0uNjJjMi40OS0xLDUuMDktMy42Niw2LjQ2LTUuNzVBMSwxLDAsMCwwLDI0Ljg0LDI2LjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlQmFycz0oMCxzLmNsckljb25TVkcp'@; put 'KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDI5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk'@; put 'PSJNMzIsMTlINGExLDEsMCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMiw5SDRBMSwxLDAsMCwxLDQsN0gzMmExLDEsMCwwLDEsMCwyWiIvPicpLGguQ2xy'@; put 'U2hhcGVVc2VyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwxLDAtNy03QTcsNywwLDAsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAg'@; put 'ICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwx'@; put 'LDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAs'@; put 'Mi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwx'@; put 'N2E3LDcsMCwwLDAsNC40NS0xLjZoLS4yMkEzLjY4LDMuNjgsMCwwLDEsMjAsMTQuNmE1LDUsMCwxLDEsMS4yNC04LjQybDEtMS43NkE3LDcsMCwxLDAsMTgsMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEy'@; put 'LDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw2'@; put 'Ljg1LTUuNTYsNy40LDcuNCwwLDAsMS0yLjI0LTYuNjlBNyw3LDAsMSwwLDE4LDE3Wk0xOCw1YTUsNSwwLDEsMS01LDVBNSw1LDAsMCwxLDE4LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2ly'@; put 'Y2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUx'@; put 'LDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9'@; put 'IjE4IiBjeT0iMTAiIHI9IjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwz'@; put 'M2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNC40NS0x'@; put 'LjZoLS4yMkEzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLjE2LTUuNDdBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEu'@; put 'MjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41Mloi'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw2Ljg1LTUuNTYsNy40LDcuNCwwLDAsMS0yLjI0LTYuNjlBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLXNv'@; put 'bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxoLkNsclNo'@; put 'YXBlQW5nbGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS41MiwyMi41MiwxOCwxMC42LDYuNDgsMjIuNTJhMS43LDEuNywwLDAsMCwyLjQ1LDIuMzZMMTgsMTUuNDlsOS4wOCw5LjM5YTEuNywxLjcsMCww'@; put 'LDAsMi40NS0yLjM2WiIvPicpLGguQ2xyU2hhcGVGb2xkZXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5'@; put 'YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVptMCwyMEg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41VjI5SDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTFhNy41LDcuNSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCww'@; put 'LDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMCwxNS40VjI5SDZWMTNoNy4zMWEyLDIsMCww'@; put 'LDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJW'@; put 'MTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgs'@; put 'MS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5'@; put 'LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVpNNiwxMVY3aDYuNDlsMi43Miw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEt'@; put 'LWFsZXJ0ZWQiIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMTFWN2g2LjQ5bDIuNzIs'@; put 'NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAs'@; put 'MCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjMuMTMs'@; put 'OUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xl'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksaC5DbHJTaGFwZUZvbGRlck9wZW49KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJhMiwyLDAsMCwwLTItMkgxNi40'@; put 'MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFpNMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2'@; put 'LjY2LDAsMCwxLC4zOC0uMjRIMzMuNDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41'@; put 'OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwxLTEuMjktMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEu'@; put 'MzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFpNMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRIMzMuNDlaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxl'@; put 'cnRlZCIgZD0iTTMzLjY4LDE1LjRoLS4zTDI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0aDkuNDJBMy42NywzLjY3LDAsMCwxLDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCww'@; put 'LDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgz'@; put 'MC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xYTEuNjgsMS42OCwwLDAsMCwuMDctLjMyQTMuNjcsMy42NywwLDAsMSwzMy42OCwxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVy'@; put 'dGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgz'@; put 'MmEyLDIsMCwwLDAtMi0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0WiIvPlxuICAg'@; put 'ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCww'@; put 'LDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4z'@; put 'NywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt'@; put 'c29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAg'@; put 'ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3'@; put 'aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4zMS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0'@; put 'LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxoLkNsclNo'@; put 'YXBlQmVsbD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjUxLDI3LjgzQTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNUExMC44MSwxMC44MSwwLDAs'@; put 'MCwxOS4yMSw0LjRWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzLDEsMSwwLDAsMC0uMzQuNzV2MS4zNmExLDEsMCwwLDAs'@; put 'MSwxaDI3LjhhMSwxLDAsMCwwLDEtMVYyOC41OEExLDEsMCwwLDAsMzIuNTEsMjcuODNaTTUuMTMsMjguOTRhMTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNWE4Ljc0LDguNzQsMCwxLDEsMTcuNDcsMHY0Ljk0YTE0LjI0LDE0LjI0LDAs'@; put 'MCwwLDEuNjUsNS44NSwxNi4xNywxNi4xNywwLDAsMCwyLjQ0LDNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAs'@; put 'MCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQu'@; put 'MjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuNTEsMjcuODNBMTQuNCwxNC40LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1YTEw'@; put 'LjkyLDEwLjkyLDAsMCwwLS4xNi0xLjc5LDcuNDQsNy40NCwwLDAsMS0yLjI0LS44NCw4Ljg5LDguODksMCwwLDEsLjQsMi42NHY0Ljk0YTE0LjI0LDE0LjI0LDAsMCwwLDEuNjUsNS44NSwxNi4xNywxNi4xNywwLDAsMCwyLjQ0LDNINS4xM2ExNi4xNywxNi4xNywwLDAsMCwyLjQ0LTMsMTQu'@; put 'MjQsMTQuMjQsMCwwLDAsMS42NS01Ljg1VjE1LjE1QTguOCw4LjgsMCwwLDEsMTgsNi4zMWE4LjYxLDguNjEsMCwwLDEsNC43NiwxLjQ0QTcuNDksNy40OSwwLDAsMSwyMi41LDZjMC0uMjEsMC0uNDIsMC0uNjNhMTAuNTgsMTAuNTgsMCwwLDAtMy4zMi0xVjMuMTFhMS4zMywxLjMzLDAsMSww'@; put 'LTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45MywxLDEsMCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEsMWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwx'@; put 'LDAsMCwwLDMyLjUxLDI3LjgzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGgg'@; put 'Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjg1LDI4LjEzbC0uMzQtLjNBMTQuMzcsMTQuMzcsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAsMTkuMjEsNC40VjMuMTFhMS4zMywxLjMz'@; put 'LDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45M2wtLjM0LjN2Mi44MkgzMi44NVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'c29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTUuMzIsMzJhMi42NSwyLjY1LDAsMCwwLDUuMjUsMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDM0LjI4QTIuNjcsMi42'@; put 'NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3'@; put 'LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1YTEwLjkyLDEwLjkyLDAsMCwwLS4xNi0xLjc5QTcuNSw3LjUsMCwwLDEsMjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU3LDEwLjU3LDAsMCwwLTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3'@; put 'LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJh'@; put 'ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGguQ2xyU2hhcGVJbWFnZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs'@; put 'Mi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsMzBWNkgzMlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC45MiwxNGEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjkyLDE0Wm0wLTQuNkExLjYsMS42LDAsMSwx'@; put 'LDcuMzMsMTEsMS42LDEuNiwwLDAsMSw4LjkyLDkuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjc4LDE1LjM3bC01LjQsNS40LTQtNGExLDEsMCwwLDAtMS40MSwwTDUuOTIsMjIuOXYyLjgzbDYuNzkt'@; put 'Ni43OUwxNiwyMi4xOGwtMy43NSwzLjc1SDE1bDguNDUtOC40NUwzMCwyNFYyMS4xOGwtNS44MS01LjgxQTEsMSwwLDAsMCwyMi43OCwxNS4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTMsMTFhMywz'@; put 'LDAsMSwwLTMsM0EzLDMsMCwwLDAsMTEuOTMsMTFabS00LjYsMGExLjYsMS42LDAsMSwxLDEuNiwxLjZBMS42LDEuNiwwLDAsMSw3LjMzLDExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBk'@; put 'PSJNMTcuMzgsMjAuNzdsLTQtNGExLDEsMCwwLDAtMS40MSwwTDUuOTIsMjIuOXYyLjgzbDYuNzktNi43OUwxNiwyMi4xOGwtMy43NSwzLjc1SDE1bDguNDUtOC40NUwzMCwyNFYyMS4xOGwtNS44MS01LjgxYTEsMSwwLDAsMC0xLjQxLDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYzMEg0VjZIMjIuNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUs'@; put 'MCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYs'@; put 'MjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0'@; put 'aCBkPSJNMzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk04LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIy'@; put 'LjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAg'@; put 'ICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxoLkNsclNoYXBlQ2xvdWQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy4xNCwzM0gxMC42MkM1LjY3LDMzLDEsMjguMTksMSwyMy4xYTEwLDEwLDAsMCwxLDgtOS43NSwxMC4xOSwxMC4xOSwwLDAsMSwyMC4zMywxLjA2QTEwLjA3LDEwLjA3LDAsMCwxLDI5LDE2LjY2YTguMjksOC4yOSwwLDAsMSw2LDhDMzUs'@; put 'MjkuMSwzMS4zMywzMywyNy4xNCwzM1pNMTkuMDksNi4yM2E4LjI0LDguMjQsMCwwLDAtOC4xOSw4bDAsLjg3LS44Ni4xQTcuOTQsNy45NCwwLDAsMCwzLDIzLjFjMCw0LDMuNzcsNy45LDcuNjIsNy45SDI3LjE0QzMwLjIxLDMxLDMzLDI4LDMzLDI0LjY1YTYuMzEsNi4zMSwwLDAsMC01LjM3'@; put 'LTYuMjZsLTEuMTgtLjE4LjM5LTEuMTNBOC4xOCw4LjE4LDAsMCwwLDE5LjA5LDYuMjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCww'@; put 'LDAsLjI1LTIuMjRjMC0uMzMsMC0uNjUsMC0xYTcuNDUsNy40NSwwLDAsMS0yLjEtLjU0LDgsOCwwLDAsMS0uMyw0LjE2bC0uMzksMS4xMywxLjE4LjE4YTYuMzEsNi4zMSwwLDAsMSw1LjM3LDYuMjZDMzIuOTUsMjgsMzAuMTYsMzEsMjcuMDksMzFIMTAuNTdjLTMuODQsMC03LjYyLTMuOTEt'@; put 'Ny42Mi03LjlhNy45NCw3Ljk0LDAsMCwxLDctNy44OWwuODYtLjEsMC0uODdhOC4yNCw4LjI0LDAsMCwxLDguMTktOEE4LjEzLDguMTMsMCwwLDEsMjIuNTgsN2E3LjUzLDcuNTMsMCwwLDEtLjA4LTEsNy41MSw3LjUxLDAsMCwxLC4wOS0xLjEyQTEwLjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMs'@; put 'MTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNmExMCwxMCwwLDAsMC04LDkuNzVjMCw1LjA5LDQuNjcsOS45LDkuNjIsOS45SDI3LjA5YzQuMTksMCw3Ljg2LTMuOSw3Ljg2LTguMzVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFs'@; put 'ZXJ0ZWQiIGQ9Ik0yOSwxNi42NmExMC4xNCwxMC4xNCwwLDAsMCwuMi0xLjNoLTJhOC4yOCw4LjI4LDAsMCwxLS4zNywxLjcybC0uMzksMS4xMywxLjE4LjE4YTYuMzEsNi4zMSwwLDAsMSw1LjM3LDYuMjZDMzIuOTUsMjgsMzAuMTYsMzEsMjcuMDksMzFIMTAuNTdjLTMuODQsMC03LjYyLTMu'@; put 'OTEtNy42Mi03LjlhNy45NCw3Ljk0LDAsMCwxLDctNy44OWwuODYtLjEsMC0uODdBOC4xNiw4LjE2LDAsMCwxLDIxLDYuNDdsMS0xLjhBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNmExMCwxMCwwLDAsMC04LDkuNzVjMCw1LjA5LDQuNjcsOS45LDkuNjIsOS45SDI3LjA5YzQuMTksMCw3'@; put 'Ljg2LTMuOSw3Ljg2LTguMzVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywx'@; put 'MUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0i'@; put 'TTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjguMTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42'@; put 'NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ0LDcuNDQsMCwwLDEtNi42LTguNThB'@; put 'MTAuMTMsMTAuMTMsMCwwLDAsMTksNC4yMywxMC4yNiwxMC4yNiwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAg'@; put 'ICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHIt'@; put 'aS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNi42NmExMC4xNSwxMC4xNSwwLDAsMCwuMi0xLjI2aC03QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDMtNS4yMUExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAu'@; put 'NTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2'@; put 'Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGguQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWw9KDAscy5jbHJJY29uU1ZHKSgn'@; put 'PGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5l'@; put 'LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNp'@; put 'cmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGguQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPSgwLHMuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x'@; put 'IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0i'@; put 'MTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxoLkNsclNoYXBlRmlsdGVyR3JpZD0oMCxzLmNs'@; put 'ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwx'@; put 'NEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTgsMTF2'@; put 'MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIv'@; put 'PicpLGguQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2Ex'@; put 'LDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg'@; put 'Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w'@; put 'YXRoLTIiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCww'@; put 'LDAsLjE1LS4zNVYxMVoiLz4nKSxoLkNsclNoYXBlVm1CdWc9KDAscy5jbHJJY29uU1ZHKSgnPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iMyIgZmlsbD0iI2ZmZmZmZiIgb3BhY2l0eT0iMC4xNSIgc3R5bGU9Imlzb2xhdGlvbjppc29sYXRlIi8+PHBhdGggZD0iTTMuNzksMTQu'@; put 'ODNhMS4wOSwxLjA5LDAsMCwwLTEuNDctLjU2LDEuMDksMS4wOSwwLDAsMC0uNTQsMS40OWwyLjQ3LDUuNGMuMzkuODUuOCwxLjI5LDEuNTcsMS4yOVM3LDIyLDcuMzksMjEuMTZsMi4xNy00Ljc3YS4zMy4zMywwLDAsMSwuMzEtLjIuMzUuMzUsMCwwLDEsLjM1LjM1djQuNjFhMS4xNSwxLjE1'@; put 'LDAsMCwwLDEuMTQsMS4zLDEuMTcsMS4xNywwLDAsMCwxLjE3LTEuM1YxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEuMTgsMS4ydjMuNzdhMS4xNywxLjE3LDAsMSwwLDIuMzIsMFYxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEz'@; put 'LDAsMCwxLDEuMTgsMS4ydjMuNzdhMS4xNiwxLjE2LDAsMSwwLDIuMzEsMFYxNi44NmEyLjY5LDIuNjksMCwwLDAtMi43OC0yLjY5LDMuNTcsMy41NywwLDAsMC0yLjQ3LDEuMDUsMi43NSwyLjc1LDAsMCwwLTIuMzgtMS4wNUEzLjkzLDMuOTMsMCwwLDAsMTIsMTUuMjJhMi44MiwyLjgyLDAs'@; put 'MCwwLTIuMDgtMS4wNUEyLjU1LDIuNTUsMCwwLDAsNy40LDE1Ljg5TDUuODIsMTkuNjNsLTItNC44IiBmaWxsPSIjZmZmZmZmIi8+PHBhdGggZD0iTTMzLDE0LjE4QTEuMTQsMS4xNCwwLDAsMCwzMS45LDE1bC0xLjE5LDMuNzNMMjkuNSwxNS4wNWExLjE4LDEuMTgsMCwwLDAtMS4xNS0uODdo'@; put 'LS4xYTEuMiwxLjIsMCwwLDAtMS4xNS44N2wtMS4xOSwzLjcxLTEuMTgtMy43MWExLjE1LDEuMTUsMCwwLDAtMS4xMS0uODcsMS4wOCwxLjA4LDAsMCwwLTEuMTIsMS4wNywxLjY4LDEuNjgsMCwwLDAsLjEuNTRsMiw1LjdhMS4yNywxLjI3LDAsMCwwLDEuMjcsMSwxLjI0LDEuMjQsMCwwLDAs'@; put 'MS4yLS45M2wxLjItMy42NCwxLjIsMy42NGExLjI1LDEuMjUsMCwwLDAsMS4yNi45M0ExLjI3LDEuMjcsMCwwLDAsMzIsMjEuNUwzNCwxNS43M2ExLjc3LDEuNzcsMCwwLDAsLjA4LS40OEExLjA3LDEuMDcsMCwwLDAsMzMsMTQuMThaIiBmaWxsPSIjZmZmZmZmIi8+JyksaC5DbHJTaGFwZVNl'@; put 'YXJjaD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjMzLDUuMDVBMTAuOTUsMTAuOTUsMCwxLDEsNS4zOSwxNiwxMSwxMSwwLDAsMSwxNi4zMyw1LjA1bTAtMi4wNWExMywxMywwLDEsMCwxMywxMywxMywx'@; put 'MywwLDAsMC0xMy0xM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM1LDMzLjI5bC03LjM3LTcuNDItMS40MiwxLjQxLDcuMzcsNy40MkExLDEsMCwxLDAsMzUsMzMuMjlaIi8+JyksaC5DbHJTaGFwZVZp'@; put 'ZXdDb2x1bW5zPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsNUg1QTIsMiwwLDAsMCwzLDdWMjlhMiwyLDAsMCwwLDIsMkgzMWEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMxLDVaTTEzLDI5SDVWN2g4'@; put 'Wm0xMCwwSDE1VjdoOFoiLz4nKSxoLkNsclNoYXBlQW5nbGVEb3VibGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOSwxOS40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCw4LjgzLDcuNzEsMTkuMTJhMSwxLDAs'@; put 'MCwxLTEuNDEtMS40MUwxOCw2LDI5LjcxLDE3LjcxQTEsMSwwLDAsMSwyOSwxOS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LDMwLjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDE5LjgzLDcuNzEs'@; put 'MzAuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCwxNywyOS43MSwyOC43MUExLDEsMCwwLDEsMjksMzAuNDFaIi8+JyksaC5DbHJTaGFwZUNhbGVuZGFyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuMjUs'@; put 'NkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTQiIHk9IjE0IiB3aWR0aD0i'@; put 'MiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjIwIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC01IiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAg'@; put 'ICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHg9'@; put 'IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIy'@; put 'IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0xMyIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNW'@; put 'OUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAg'@; put 'ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1i'@; put 'YWRnZWQiIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIi8+XG4gICAgICAgICAg'@; put 'ICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIy'@; put 'IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRn'@; put 'ZWQiIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAg'@; put 'ICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiIHg9IjE0IiB5PSIyNCIg'@; put 'd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTE0LS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNS0tYmFkZ2VkIiBkPSJN'@; put 'MjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxu'@; put 'ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgzMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43'@; put 'NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5c'@; put 'biAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIHg9IjE0'@; put 'IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAg'@; put 'ICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiIHg9IjE0IiB5PSIyNCIgd2lk'@; put 'dGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMTItLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cG9seWdvbiBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4y'@; put 'OCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDEsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4'@; put 'LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5'@; put 'aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0i'@; put 'TTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEs'@; put 'MSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAg'@; put 'ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlB'@; put 'MS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYs'@; put 'MTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1p'@; put 'LWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgx'@; put 'Mi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgx'@; put 'NFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTYsNUgyNlYyNGgyWm0wLTVIMjZWMTloMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVy'@; put 'dGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2'@; put 'Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGguQ2xyU2hhcGVFdmVudD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjE3LDI1Ljg2LDEwLjgxLDIwLjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxNi4xNywyM2w4LjY0LTguNjRhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCww'@; put 'LDMyLjI1LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC01IiB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEs'@; put 'MCwwLDAtMS40MS0xLjQxTDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0x'@; put 'VjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCww'@; put 'LDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBj'@; put 'eD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoi'@; put 'Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMCwuMjMtLjQxSDIzLjhMMTYuMTcsMjNsLTMuOTQtMy45'@; put 'NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPlxuICAgICAg'@; put 'ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgzMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgy'@; put 'OC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwx'@; put 'LjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMCwxMGEx'@; put 'LDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAs'@; put 'MjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTMyLjI1LDZoLTRWOWEyLjIsMi4yLDAsMCwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3Ljgx'@; put 'VjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTI1Ljk0LDE2LjU4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2'@; put 'YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEw'@; put 'LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDI2LjNhMS4zNCwxLjM0LDAsMCwxLS4zNiwxLjE4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAs'@; put 'MCwxLDEyLjksMTlsMy4zOCwzLjM4LDctN2gtMUEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAs'@; put 'MCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMu'@; put 'NjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCww'@; put 'LDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIu'@; put 'MiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wm0tNC4wNiwzLjA4LTkuNjcsOS42N0wxMSwyMC45'@; put 'NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdl'@; put 'IiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksaC5DbHJTaGFwZUV5ZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1Ljgy'@; put 'LDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMDksMTEuMTdBNi44Niw2Ljg2LDAsMSwwLDI1LDE4LDYuODYsNi44NiwwLDAsMCwxOC4wOSwxMS4xN1ptMCwxMS43MkE0Ljg2LDQuODYsMCwxLDEsMjMsMTgsNC44Nyw0Ljg3LDAsMCwx'@; put 'LDE4LjA5LDIyLjg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIz'@; put 'LDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQz'@; put 'WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTguMDkiIGN5PSIxOC4wMyIgcj0iNi44NiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLGguQ2xyU2hhcGVFeWVIaWRlPSgwLHMuY2xy'@; put 'SWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4xOSwyMC40QTYuNzgsNi43OCwwLDAsMCwyNS42MiwxOGE2Ljg2LDYuODYsMCwwLDAtNi44Ni02Ljg2LDYuNzksNi43OSwwLDAsMC0yLjM3LjQzTDE4LDEzLjIzYTQuNzgsNC43OCwwLDAsMSwuNzQtLjA2QTQuODcsNC44NywwLDAsMSwyMy42MiwxOGE0'@; put 'Ljc5LDQuNzksMCwwLDEtLjA2Ljc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwx'@; put 'MGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2'@; put 'Wm05Ljc1LDkuNzUsNi42NSw2LjY1YTQuODEsNC44MSwwLDAsMS0yLjUuNzJBNC44Nyw0Ljg3LDAsMCwxLDEzLjksMTgsNC44MSw0LjgxLDAsMCwxLDE0LjYyLDE1LjUzWm0tMS40NS0xLjQ1YTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAsMS01Ljg2'@; put 'LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4zNywxMS4xN0E2Ljc5LDYuNzksMCwwLDAsMTYsMTEu'@; put 'Nmw4LjgsOC44QTYuNzgsNi43OCwwLDAsMCwyNS4yMywxOCw2Ljg2LDYuODYsMCwwLDAsMTguMzcsMTEuMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1Ljgy'@; put 'LTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNs'@; put 'YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45Myww'@; put 'LDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm04LjMsOC4zYTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGguQ2xyU2hhcGVTdGVwRm9yd2FyZDI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcuMDgsNi41MmExLjY4LDEuNjgsMCwwLDAsMCwyLjRMMTYuNTEsMTgsNy4xMiwyNy4wOGExLjcsMS43LDAsMCwwLDIuMzYsMi40'@; put 'NGgwTDIxLjQsMTgsOS40OCw2LjQ3QTEuNjksMS42OSwwLDAsMCw3LjA4LDYuNTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjYuNDksNWExLjcsMS43LDAsMCwwLTEuNywxLjdWMjkuM2ExLjcsMS43LDAsMCwwLDMuNCwwVjYuN0Ex'@; put 'LjcsMS43LDAsMCwwLDI2LjQ5LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlQXJyb3c9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LjY2LDE1LjYxLDE4LDYsOC4zNCwxNS42MUExLDEsMCwxLDAsOS43NSwxN0wxNyw5'@; put 'LjgxVjI4Ljk0YTEsMSwwLDEsMCwyLDBWOS44MUwyNi4yNSwxN2ExLDEsMCwwLDAsMS40MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz4nKSxoLkNvcmVTaGFwZXM9eyJ1bmtub3duLXN0YXR1cyI6aC5DbHJTaGFwZVVua25vd25TdGF0dXMsaG9t'@; put 'ZTpoLkNsclNoYXBlSG9tZSxjb2c6aC5DbHJTaGFwZUNvZyxjaGVjazpoLkNsclNoYXBlQ2hlY2ssdGltZXM6aC5DbHJTaGFwZVRpbWVzLCJleGNsYW1hdGlvbi10cmlhbmdsZSI6aC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGUsImV4Y2xhbWF0aW9uLWNpcmNsZSI6aC5DbHJTaGFwZUV4'@; put 'Y2xhbWF0aW9uQ2lyY2xlLCJjaGVjay1jaXJjbGUiOmguQ2xyU2hhcGVDaGVja0NpcmNsZSwiaW5mby1jaXJjbGUiOmguQ2xyU2hhcGVJbmZvQ2lyY2xlLCJpbmZvLXN0YW5kYXJkIjpoLkNsclNoYXBlSW5mb1N0YW5kYXJkLCJzdWNjZXNzLXN0YW5kYXJkIjpoLkNsclNoYXBlU3VjY2Vzc1N0'@; put 'YW5kYXJkLCJlcnJvci1zdGFuZGFyZCI6aC5DbHJTaGFwZUVycm9yU3RhbmRhcmQsIndhcm5pbmctc3RhbmRhcmQiOmguQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQsImhlbHAtaW5mbyI6aC5DbHJTaGFwZUhlbHBJbmZvLGJhcnM6aC5DbHJTaGFwZUJhcnMsdXNlcjpoLkNsclNoYXBlVXNlcixh'@; put 'bmdsZTpoLkNsclNoYXBlQW5nbGUsZm9sZGVyOmguQ2xyU2hhcGVGb2xkZXIsImZvbGRlci1vcGVuIjpoLkNsclNoYXBlRm9sZGVyT3BlbixiZWxsOmguQ2xyU2hhcGVCZWxsLGltYWdlOmguQ2xyU2hhcGVJbWFnZSxjbG91ZDpoLkNsclNoYXBlQ2xvdWQsImVsbGlwc2lzLWhvcml6b250YWwi'@; put 'OmguQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWwsImVsbGlwc2lzLXZlcnRpY2FsIjpoLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbCwiZmlsdGVyLWdyaWQiOmguQ2xyU2hhcGVGaWx0ZXJHcmlkLCJmaWx0ZXItZ3JpZC1jaXJjbGUiOmguQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlLCJ2bS1i'@; put 'dWciOmguQ2xyU2hhcGVWbUJ1ZyxzZWFyY2g6aC5DbHJTaGFwZVNlYXJjaCwidmlldy1jb2x1bW5zIjpoLkNsclNoYXBlVmlld0NvbHVtbnMsImFuZ2xlLWRvdWJsZSI6aC5DbHJTaGFwZUFuZ2xlRG91YmxlLGNhbGVuZGFyOmguQ2xyU2hhcGVDYWxlbmRhcixldmVudDpoLkNsclNoYXBlRXZl'@; put 'bnQsZXllOmguQ2xyU2hhcGVFeWUsImV5ZS1oaWRlIjpoLkNsclNoYXBlRXllSGlkZSwic3RlcC1mb3J3YXJkLTIiOmguQ2xyU2hhcGVTdGVwRm9yd2FyZDIsYXJyb3c6aC5DbHJTaGFwZUFycm93fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Db3JlU2hhcGVzLCJob3VzZSIsKDAsYy5kZXNj'@; put 'cmlwdG9yQ29uZmlnKShoLkNvcmVTaGFwZXMuaG9tZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsInNldHRpbmdzIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5jb2cpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Db3JlU2hhcGVzLCJzdWNjZXNz'@; put 'IiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5jaGVjaykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsImNsb3NlIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy50aW1lcykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFw'@; put 'ZXMsIndhcm5pbmciLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi10cmlhbmdsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywiZXJyb3IiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzWyJleGNsYW1hdGlv'@; put 'bi1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsImluZm8iLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzWyJpbmZvLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywibWVudSIsKDAsYy5kZXNjcmlwdG9y'@; put 'Q29uZmlnKShoLkNvcmVTaGFwZXMuYmFycykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsImF2YXRhciIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkNvcmVTaGFwZXMudXNlcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsImNhcmV0IiwoMCxjLmRl'@; put 'c2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5hbmdsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsImRpcmVjdG9yeSIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkNvcmVTaGFwZXMuZm9sZGVyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywi'@; put 'bm90aWZpY2F0aW9uIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5iZWxsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywiY29sbGFwc2UiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzWyJhbmdsZS1kb3VibGUiXSkpfSwiLi9wcm9q'@; put 'ZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3It'@; put 'Y29uZmlnLnRzICoqKiEKICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihqLGgseSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9w'@; put 'ZXJ0eShoLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxoLmRlc2NyaXB0b3JDb25maWc9dm9pZCAwLGguZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlvbiBjKHMpe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpzfX19LCIuL3Byb2plY3RzL2lj'@; put 'b25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc2hhcGUt'@; put 'dGVtcGxhdGUtb2JzZXJ2ZXIudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7'@; put 'T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGguU2hhcGVUZW1wbGF0ZU9ic2VydmVyPWguY2hhbmdlSGFuZGxlckNhbGxiYWNrcz12b2lkIDAsaC5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXt9O3ZhciBjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcygpe3Ro'@; put 'aXMuY2FsbGJhY2tzPWguY2hhbmdlSGFuZGxlckNhbGxiYWNrc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsImluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuc2luZ2xlSW5zdGFuY2V8fChzLnNpbmdsZUluc3RhbmNlPW5ldyBzKSxzLnNpbmdsZUluc3RhbmNlfSxl'@; put 'bnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHMucHJvdG90eXBlLnN1YnNjcmliZVRvPWZ1bmN0aW9uKEEsdil7dmFyIEM9dGhpcztyZXR1cm4gdGhpcy5jYWxsYmFja3NbQV0/LTE9PT10aGlzLmNhbGxiYWNrc1tBXS5pbmRleE9mKHYpJiZ0aGlzLmNhbGxiYWNrc1tBXS5wdXNoKHYp'@; put 'OnRoaXMuY2FsbGJhY2tzW0FdPVt2XSxmdW5jdGlvbigpe3ZhciB3PUMuY2FsbGJhY2tzW0FdLmluZGV4T2Yodik7Qy5jYWxsYmFja3NbQV0uc3BsaWNlKHcsMSksMD09PUMuY2FsbGJhY2tzW0FdLmxlbmd0aCYmZGVsZXRlIEMuY2FsbGJhY2tzW0FdfX0scy5wcm90b3R5cGUuZW1pdENoYW5n'@; put 'ZXM9ZnVuY3Rpb24oQSx2KXt0aGlzLmNhbGxiYWNrc1tBXSYmdGhpcy5jYWxsYmFja3NbQV0ubWFwKGZ1bmN0aW9uKEMpe0Modil9KX0sc30oKTtoLlNoYXBlVGVtcGxhdGVPYnNlcnZlcj1jfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiOgovKiEq'@; put 'KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzICoqKiEKICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihqLGgseSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxoLmNsckljb25TVkc9dm9p'@; put 'ZCAwO2guY2xySWNvblNWRz1mdW5jdGlvbiB2KEMpe3ZhciB3PSIiO3JldHVybiBDLmluZGV4T2YoIi0tYmFkZ2VkIik+LTEmJih3Kz0iY2FuLWJhZGdlICIpLEMuaW5kZXhPZigiLS1hbGVydGVkIik+LTEmJih3Kz0iY2FuLWFsZXJ0ICIpLEMuaW5kZXhPZigiY2xyLWktc29saWQiKT4tMSYm'@; put 'KHcrPSJoYXMtc29saWQgIiksKHc/JzxzdmcgdmVyc2lvbj0iMS4xIiBjbGFzcz0iJyt3KyciIHZpZXdCb3g9IjAgMCAzNiAzNiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo'@; put 'dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6JzxzdmcgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn'@; put 'LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nKStDKyI8L3N2Zz4ifX19KX0sODA2ODUoZmUpe2ZlLmV4cG9ydHM9ZnVuY3Rpb24oail7dmFyIGg9e307ZnVuY3Rpb24geShjKXtpZihoW2Nd'@; put 'KXJldHVybiBoW2NdLmV4cG9ydHM7dmFyIHM9aFtjXT17aTpjLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGpbY10uY2FsbChzLmV4cG9ydHMscyxzLmV4cG9ydHMseSkscy5sPSEwLHMuZXhwb3J0c31yZXR1cm4geS5tPWoseS5jPWgseS5kPWZ1bmN0aW9uKGMscyxBKXt5Lm8oYyxzKXx8T2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGMscyx7ZW51bWVyYWJsZTohMCxnZXQ6QX0pfSx5LnI9ZnVuY3Rpb24oYyl7dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9i'@; put 'amVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0seS50PWZ1bmN0aW9uKGMscyl7aWYoMSZzJiYoYz15KGMpKSw4JnN8fDQmcyYmIm9iamVjdCI9PXR5cGVvZiBjJiZjJiZjLl9fZXNNb2R1bGUpcmV0dXJuIGM7dmFyIEE9T2JqZWN0LmNyZWF0ZShudWxsKTtp'@; put 'Zih5LnIoQSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmN9KSwyJnMmJiJzdHJpbmciIT10eXBlb2YgYylmb3IodmFyIHYgaW4gYyl5LmQoQSx2LGZ1bmN0aW9uKEMpe3JldHVybiBjW0NdfS5iaW5kKG51bGwsdikpO3JldHVybiBBfSx5'@; put 'Lm49ZnVuY3Rpb24oYyl7dmFyIHM9YyYmYy5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGMuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gY307cmV0dXJuIHkuZChzLCJhIixzKSxzfSx5Lm89ZnVuY3Rpb24oYyxzKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0'@; put 'eS5jYWxsKGMscyl9LHkucD0iIix5KHkucz0iLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMiKX0oeyIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0'@; put 'cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGguQWxsU2hhcGVzPXZvaWQgMDt2YXIgYz15KAovKiEgLi9jaGFydC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBl'@; put 'cy9jaGFydC1zaGFwZXMudHMiKSxzPXkoCi8qISAuL2NvbW1lcmNlLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyIpLEE9eSgKLyohIC4vY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBl'@; put 'cy50cyIpLHY9eSgKLyohIC4vZXNzZW50aWFsLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2Vzc2VudGlhbC1zaGFwZXMudHMiKSxDPXkoCi8qISAuL21lZGlhLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyIpLHc9'@; put 'eSgKLyohIC4vc29jaWFsLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3NvY2lhbC1zaGFwZXMudHMiKSxTPXkoCi8qISAuL3RlY2hub2xvZ3ktc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiKSxMPXkoCi8q'@; put 'ISAuL3RleHQtZWRpdC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIiksUj15KAovKiEgLi90cmF2ZWwtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyIpLHg9W0EuQ29yZVNoYXBl'@; put 'cyxzLkNvbW1lcmNlU2hhcGVzLHYuRXNzZW50aWFsU2hhcGVzLEMuTWVkaWFTaGFwZXMsdy5Tb2NpYWxTaGFwZXMsUy5UZWNobm9sb2d5U2hhcGVzLFIuVHJhdmVsU2hhcGVzLGMuQ2hhcnRTaGFwZXMsTC5UZXh0RWRpdFNoYXBlc10sVT17fTtoLkFsbFNoYXBlcz1VO2Zvcih2YXIgSD0wLFY9'@; put 'eDtIPFYubGVuZ3RoO0grKyl7dmFyIE49VltIXTtmb3IodmFyIHogaW4gTilOLmhhc093blByb3BlcnR5KHopJiYoVVt6XT1OW3pdKX10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoVSl9LCIu'@; put 'L3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMu'@; put 'dHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oaixoLHkpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiX19l'@; put 'c01vZHVsZSIse3ZhbHVlOiEwfSksaC5DaGFydFNoYXBlcz1oLkNsclNoYXBlQmVsbEN1cnZlPWguQ2xyU2hhcGVUaWNrQ2hhcnQ9aC5DbHJTaGFwZVNjYXR0ZXJQbG90PWguQ2xyU2hhcGVQaWVDaGFydD1oLkNsclNoYXBlTGluZUNoYXJ0PWguQ2xyU2hhcGVIZWF0TWFwPWguQ2xyU2hhcGVH'@; put 'cmlkQ2hhcnQ9aC5DbHJTaGFwZUN1cnZlQ2hhcnQ9aC5DbHJTaGFwZUNsb3VkQ2hhcnQ9aC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PWguQ2xyU2hhcGVCb3hQbG90PWguQ2xyU2hhcGVCYXJDaGFydD1oLkNsclNoYXBlQXhpc0NoYXJ0PXZvaWQgMDt2YXIgYz15KAovKiEgLi4vdXRpbHMvZGVzY3Jp'@; put 'cHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIikscz15KAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7aC5DbHJTaGFw'@; put 'ZUF4aXNDaGFydD0oMCxzLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMu'@; put 'MTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gNi4wMDcgMjYuNzMxIEwgMjcu'@; put 'NzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUg'@; put 'NiAxMS4wMSBMIDYuMDA3IDI2LjczMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1'@; put 'Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQu'@; put 'NzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIy'@; put 'IEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwg'@; put 'MzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNIDYuMDA3'@; put 'IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAx'@; put 'MC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xy'@; put 'LWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUg'@; put 'QyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4z'@; put 'IDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj'@; put 'bHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg'@; put 'MzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBM'@; put 'IDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBMIDYuMDA3IDI2LjczMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNs'@; put 'ci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYg'@; put 'MzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0'@; put 'ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE2Ljc5'@; put 'NSAxMy42MDEgMTcuNTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjgu'@; put 'MyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj'@; put 'bHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAz'@; put 'My42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+JyksaC5D'@; put 'bHJTaGFwZUJhckNoYXJ0PSgwLHMuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk00'@; put 'LDI5VjdIMzJWMjlaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYgMjYgTCA3IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxw'@; put 'YXRoIGQ9Ik0gMTUgMTkgTCAyMSAxOSBMIDIxIDI2IEwgMTkuNCAyNiBMIDE5LjQgMjAuNiBMIDE2LjYgMjAuNiBMIDE2LjYgMjYgTCAxNSAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIzIDE2IEwgMjkgMTYg'@; put 'TCAyOSAyNiBMIDI3LjQgMjYgTCAyNy40IDE3LjYgTCAyNC42IDE3LjYgTCAyNC42IDI2IEwgMjMgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0i'@; put 'TSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk1IDM0IDcgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAx'@; put 'MCBaIE0gMTUgMjYgTCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYgTCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwg'@; put 'MzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIg'@; put 'MzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBMIDguNiAy'@; put 'NiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTkgTCAyMSAxOSBMIDIxIDI2IEwgMTkuNCAyNiBMIDE5LjQgMjAuNiBMIDE2LjYgMjAuNiBMIDE2LjYgMjYgTCAxNSAy'@; put 'NiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42IEwgMjQuNiAyNiBMIDIzIDI2IFoiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0i'@; put 'NSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcg'@; put 'QyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAxMCBaIE0gMTUgMjYg'@; put 'TCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYgTCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0i'@; put 'NSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1'@; put 'Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAgTCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAyNiBMIDExLjQgMTEuNiBMIDguNiAxMS42IEwg'@; put 'OC42IDI2IEwgNyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2'@; put 'IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42IEwgMjQuNiAyNiBMIDIz'@; put 'IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2'@; put 'Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44'@; put 'NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE2Ljc5NSAxMy42MDEgMTcu'@; put 'NTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gNyAyNiBMIDEzIDI2IEwgMTMgMTAgTCA3IDEwIFogTSAxNSAyNiBMIDIxIDI2IEwgMjEgMTkgTCAxNSAxOSBaIE0gMjMgMjYgTCAyOSAyNiBM'@; put 'IDI5IDE2IEwgMjMgMTYgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45'@; put 'MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBM'@; put 'IDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGguQ2xyU2hhcGVCb3hQbG90PSgwLHMuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDVI'@; put 'NEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk00LDI5VjdIMzJWMjlaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMiBMIDE3IDEyIEwgMTcgMjYgTCA3IDI2IEwgNyAxMiBaIE0gOC42IDI0LjQgTCAxNS40IDI0LjQg'@; put 'TCAxNS40IDE4LjggTCA4LjYgMTguOCBMIDguNiAyNC40IFogTSAxNS40IDEzLjYgTCA4LjYgMTMuNiBMIDguNiAxNy4yIEwgMTUuNCAxNy4yIEwgMTUuNCAxMy42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkg'@; put 'MjQgTCAyOSAyNCBMIDI5IDEwIEwgMTkgMTAgTCAxOSAyNCBaIE0gMjAuNiAxMS42IEwgMjcuNCAxMS42IEwgMjcuNCAxNy4yIEwgMjAuNiAxNy4yIEwgMjAuNiAxMS42IFogTSAyNy40IDIyLjQgTCAyMC42IDIyLjQgTCAyMC42IDE4LjggTCAyNy40IDE4LjggTCAyNy40IDIyLjQgWiIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAu'@; put 'MTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk1IDM0IDcgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAxMiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAxNyBMIDkgMTcgTCA5IDE0IEwgMTUgMTQg'@; put 'WiBNIDE5IDI0IEwgMjkgMjQgTCAyOSAxMCBMIDE5IDEwIFogTSAyMSAxMiBMIDI3IDEyIEwgMjcgMTcgTCAyMSAxNyBaIE0gMjcgMjIgTCAyMSAyMiBMIDIxIDE5IEwgMjcgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt'@; put 'cGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAy'@; put 'OSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBM'@; put 'IDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUuNCAxMy42IEwgOC42IDEzLjYgTCA4LjYgMTcuMiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOSAxMCBMIDIzLjcyOCAxMCBDIDI0LjEwNSAxMC41OTYgMjQuNTY0IDExLjEzNSAyNS4wOSAxMS42IEwgMjAuNiAxMS42IEwgMjAuNiAxNy4yIEwgMjcuNCAxNy4yIEwgMjcuNCAxMi45ODcgQyAyNy45MDkgMTMu'@; put 'MTc3IDI4LjQ0NSAxMy4zMTMgMjkgMTMuMzg3IEwgMjkgMjQgTCAxOSAyNCBaIE0gMjcuNCAxOC44IEwgMjAuNiAxOC44IEwgMjAuNiAyMi40IEwgMjcuNCAyMi40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCI+PC9wYXRoPlxu'@; put 'ICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt'@; put 'MS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIyLjMxMiA2LjgxNyAyMi43MzIgOC41NjYgMjMuNjMz'@; put 'IDEwIEwgMTkgMTAgTCAxOSAyNCBMIDI5IDI0IEwgMjkgMTMuNDI3IEMgMjkuMTAzIDEzLjQ0IDI5LjIwNiAxMy40NTEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNSAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNyAyNiBMIDE3IDI2IEwgMTcgMTIgTCA3IDEy'@; put 'IFogTSA5IDE5IEwgMTUgMTkgTCAxNSAyNCBMIDkgMjQgWiBNIDE1IDE3IEwgOSAxNyBMIDkgMTQgTCAxNSAxNCBaIE0gMjEgMTIgTCAyNS40NzIgMTIgQyAyNS45NCAxMi4zNTIgMjYuNDUyIDEyLjY1IDI3IDEyLjg4NSBMIDI3IDE3IEwgMjEgMTcgWiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAx'@; put 'OSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy'@; put 'dGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0'@; put 'IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBMIDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUuNCAx'@; put 'My42IEwgOC42IDEzLjYgTCA4LjYgMTcuMiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDI0IEwgMTkgMjQgTCAxOSAxNS4zNDUgQyAx'@; put 'OS4wMjEgMTUuMzQ4IDIwLjYgMTUuMzYgMjAuNiAxNS4zNiBMIDIwLjYgMTcuMiBMIDI3LjQgMTcuMiBMIDI3LjQgMTUuMzYgTCAyOSAxNS4zNTcgTCAyOSAyNCBaIE0gMjcuNCAxOC44IEwgMjAuNiAxOC44IEwgMjAuNiAyMi40IEwgMjcuNCAyMi40IEwgMjcuNCAxOC44IFoiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIx'@; put 'LjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQu'@; put 'ODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVy'@; put 'dGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTkuMDI4IDEwIEwgMTkgMTAgTCAxOSAxMC4wNDggTCAxNy42MjUgMTIuMzk1IEMg'@; put 'MTYuODA3IDEzLjU4MyAxNy41NzEgMTUuMTk3IDE5IDE1LjM0NSBMIDE5IDI0IEwgMjkgMjQgTCAyOSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAxMiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAxNyBMIDkgMTcgTCA5IDE0'@; put 'IEwgMTUgMTQgWiBNIDI3IDE3IEwgMjEgMTcgTCAyMSAxNS4zNTcgTCAyNyAxNS4zNTcgWiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAxOSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHIt'@; put 'aS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1'@; put 'LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxoLkNsclNoYXBlQnViYmxlQ2hhcnQ9KDAscy5j'@; put 'bHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUg'@; put 'MzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcgMjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQzIDIxIDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0'@; put 'MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAxNi42IEMgMjUuMjI3IDE2LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIyNyAxOS40IDI2IDE5LjQgQyAyNi43NzMgMTkuNCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcu'@; put 'NCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxNCBDIDE1IDE2LjIwOSAxMy4yMDkgMTggMTEgMTggQyA4Ljc5MSAxOCA3IDE2LjIwOSA3IDE0IEMg'@; put 'NyAxMS43OTEgOC43OTEgMTAgMTEgMTAgQyAxMy4yMDkgMTAgMTUgMTEuNzkxIDE1IDE0IFogTSAxMSAxMS42IEMgOS42NzUgMTEuNiA4LjYgMTIuNjc1IDguNiAxNCBDIDguNiAxNS4zMjUgOS42NzUgMTYuNCAxMSAxNi40IEMgMTIuMzI1IDE2LjQgMTMuNCAxNS4zMjUgMTMuNCAxNCBDIDEz'@; put 'LjQgMTIuNjc1IDEyLjMyNSAxMS42IDExIDExLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjEgMjMgQyAyMSAyNC42NTcgMTkuNjU3IDI2IDE4IDI2IEMgMTYuMzQzIDI2IDE1IDI0LjY1NyAxNSAy'@; put 'MyBDIDE1IDIxLjM0MyAxNi4zNDMgMjAgMTggMjAgQyAxOS42NTcgMjAgMjEgMjEuMzQzIDIxIDIzIFogTSAxOCAyMS42IEMgMTcuMjI3IDIxLjYgMTYuNiAyMi4yMjcgMTYuNiAyMyBDIDE2LjYgMjMuNzczIDE3LjIyNyAyNC40IDE4IDI0LjQgQyAxOC43NzMgMjQuNCAxOS40IDIzLjc3MyAx'@; put 'OS40IDIzIEMgMTkuNCAyMi4yMjcgMTguNzczIDIxLjYgMTggMjEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQg'@; put 'MjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43OTEgNyAxNCBDIDcgMTYu'@; put 'MjA5IDguNzkxIDE4IDExIDE4IEMgMTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4yMDkgMTAgMTEgMTAgWiBNIDI2IDE1IEMgMjQuMzQzIDE1IDIzIDE2LjM0MyAyMyAxOCBDIDIzIDE5LjY1NyAyNC4zNDMgMjEgMjYgMjEgQyAyNy42NTcgMjEgMjkgMTkuNjU3IDI5'@; put 'IDE4IEMgMjkgMTYuMzQzIDI3LjY1NyAxNSAyNiAxNSBaIE0gMTggMjAgQyAxNi4zNDMgMjAgMTUgMjEuMzQzIDE1IDIzIEMgMTUgMjQuNjU3IDE2LjM0MyAyNiAxOCAyNiBDIDE5LjY1NyAyNiAyMSAyNC42NTcgMjEgMjMgQyAyMSAyMS4zNDMgMTkuNjU3IDIwIDE4IDIwIFoiPjwvcGF0aD5c'@; put 'biAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIy'@; put 'LjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoi'@; put 'PjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAxOCBDIDI5IDE5LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAxNSBDIDI3LjY1NyAxNSAyOSAxNi4zNDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYu'@; put 'NiAyNC42IDE3LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43NzMgMjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMgMTYuNiAyNiAxNi42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTItLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxNCBDIDE1IDE2LjIwOSAxMy4yMDkgMTggMTEgMTggQyA4Ljc5MSAxOCA3IDE2LjIwOSA3IDE0IEMgNyAxMS43OTEgOC43OTEgMTAgMTEgMTAgQyAxMy4yMDkgMTAgMTUgMTEuNzkxIDE1IDE0IFog'@; put 'TSAxMSAxMS42IEMgOS42NzUgMTEuNiA4LjYgMTIuNjc1IDguNiAxNCBDIDguNiAxNS4zMjUgOS42NzUgMTYuNCAxMSAxNi40IEMgMTIuMzI1IDE2LjQgMTMuNCAxNS4zMjUgMTMuNCAxNCBDIDEzLjQgMTIuNjc1IDEyLjMyNSAxMS42IDExIDExLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUgMjMgQyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3'@; put 'IDIwIDIxIDIxLjM0MyAyMSAyMyBaIE0gMTggMjEuNiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMgMTkuNCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIx'@; put 'LjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiByeD0iMyI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9'@; put 'IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAu'@; put 'MTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43'@; put 'OTEgNyAxNCBDIDcgMTYuMjA5IDguNzkxIDE4IDExIDE4IEMgMTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4yMDkgMTAgMTEgMTAgWiBNIDI2IDE1IEMgMjQuMzQzIDE1IDIzIDE2LjM0MyAyMyAxOCBDIDIzIDE5LjY1NyAyNC4zNDMgMjEgMjYgMjEgQyAyNy42NTcg'@; put 'MjEgMjkgMTkuNjU3IDI5IDE4IEMgMjkgMTYuMzQzIDI3LjY1NyAxNSAyNiAxNSBaIE0gMTggMjAgQyAxNi4zNDMgMjAgMTUgMjEuMzQzIDE1IDIzIEMgMTUgMjQuNjU3IDE2LjM0MyAyNiAxOCAyNiBDIDE5LjY1NyAyNiAyMSAyNC42NTcgMjEgMjMgQyAyMSAyMS4zNDMgMTkuNjU3IDIwIDE4'@; put 'IDIwIFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwg'@; put 'MzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4zNDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0'@; put 'MyAyOSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIyNyAxNi42IDI0LjYgMTcuMjI3IDI0LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDEx'@; put 'IDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEu'@; put 'NiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUgMjMg'@; put 'QyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3IDIwIDIxIDIxLjM0MyAyMSAyMyBaIE0gMTggMjEuNiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMgMTku'@; put 'NCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIxLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0'@; put 'IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8'@; put 'cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIx'@; put 'Ljk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE2Ljc5NSAxMy42MDEgMTcuNTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDI0LjU3OSAxNS4zNTcgQyAyMy42MzkgMTUuODYzIDIzIDE2Ljg1NyAyMyAxOCBDIDIzIDE5'@; put 'LjY1NyAyNC4zNDMgMjEgMjYgMjEgQyAyNy42NTcgMjEgMjkgMTkuNjU3IDI5IDE4IEMgMjkgMTYuODU3IDI4LjM2MSAxNS44NjMgMjcuNDIxIDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gMTEgMTAgQyA4Ljc5MSAxMCA3IDExLjc5MSA3IDE0IEMgNyAxNi4yMDkgOC43OTEgMTggMTEgMTggQyAx'@; put 'My4yMDkgMTggMTUgMTYuMjA5IDE1IDE0IEMgMTUgMTEuNzkxIDEzLjIwOSAxMCAxMSAxMCBaIE0gMTggMjAgQyAxNi4zNDMgMjAgMTUgMjEuMzQzIDE1IDIzIEMgMTUgMjQuNjU3IDE2LjM0MyAyNiAxOCAyNiBDIDE5LjY1NyAyNiAyMSAyNC42NTcgMjEgMjMgQyAyMSAyMS4zNDMgMTkuNjU3'@; put 'IDIwIDE4IDIwIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIy'@; put 'LjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4w'@; put 'NjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxoLkNsclNoYXBlQ2xvdWRDaGFydD0oMCxzLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRB'@; put 'MiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIwLjk3MSAxMS4yNDMgQyAyMy4zMTQgMTMuNTg2IDIyLjM2NCAxOC4zMzUgMTguODQ5IDIxLjg0OSBDIDE1'@; put 'LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMxNCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44NzggMTAuMzY0IDEzLjM2NCBDIDEzLjg3OSA5Ljg0OSAxOC42MjggOC45IDIwLjk3MSAxMS4yNDMgWiBNIDExLjYzNiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4'@; put 'IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAyNC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMjAuMzg4IDE3Ljc2NSAyMS4zMzggMTQuMTU2IDE5LjY5NyAxMi41MTYgQyAxOC4wNTcgMTAuODc2IDE0LjQ0OCAxMS44MjUgMTEuNjM2IDE0LjYzNyBaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI4IDIyIEMgMjggMjMuNjU3IDI2LjY1NyAyNSAyNSAyNSBDIDIzLjM0MyAyNSAyMiAyMy42NTcgMjIgMjIgQyAyMiAyMC4zNDMgMjMuMzQzIDE5IDI1IDE5IEMgMjYuNjU3IDE5IDI4IDIwLjM0MyAyOCAy'@; put 'MiBaIE0gMjUgMjAuNiBDIDI0LjIyNyAyMC42IDIzLjYgMjEuMjI3IDIzLjYgMjIgQyAyMy42IDIyLjc3MyAyNC4yMjcgMjMuNCAyNSAyMy40IEMgMjUuNzczIDIzLjQgMjYuNCAyMi43NzMgMjYuNCAyMiBDIDI2LjQgMjEuMjI3IDI1Ljc3MyAyMC42IDI1IDIwLjYgWiIgY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjciPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1'@; put 'IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk1IDM0IDcgWiBNIDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44'@; put 'NDkgQyAyMi4zNjQgMTguMzM1IDIzLjMxNCAxMy41ODYgMjAuOTcxIDExLjI0MyBDIDE4LjYyOCA4LjkgMTMuODc5IDkuODQ5IDEwLjM2NCAxMy4zNjQgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAyMiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcgMjUg'@; put 'MjggMjMuNjU3IDI4IDIyIEMgMjggMjAuMzQzIDI2LjY1NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3'@; put 'IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAz'@; put 'NCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjAuOTcxIDExLjI0MyBDIDIzLjMxNCAxMy41ODYgMjIuMzY0IDE4LjMzNSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1LjM2NCAxMC41ODYgMjYuMzE0'@; put 'IDguMjQzIDIzLjk3IEMgNS44OTkgMjEuNjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQgMTMuMzY0IEMgMTMuODc5IDkuODQ5IDE4LjYyOCA4LjkgMjAuOTcxIDExLjI0MyBaIE0gMTEuNjM2IDE0LjYzNyBDIDguODI0IDE3LjQ0OSA3Ljg3NSAyMS4wNTggOS41MTUgMjIuNjk4IEMgMTEuMTU1IDI0'@; put 'LjMzOCAxNC43NjQgMjMuMzg5IDE3LjU3NiAyMC41NzcgQyAyMC4zODggMTcuNzY1IDIxLjMzOCAxNC4xNTYgMTkuNjk3IDEyLjUxNiBDIDE4LjA1NyAxMC44NzYgMTQuNDQ4IDExLjgyNSAxMS42MzYgMTQuNjM3IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTItLWJhZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI4IDIyIEMgMjggMjMuNjU3IDI2LjY1NyAyNSAyNSAyNSBDIDIzLjM0MyAyNSAyMiAyMy42NTcgMjIgMjIgQyAyMiAyMC4zNDMgMjMuMzQzIDE5IDI1IDE5IEMgMjYuNjU3IDE5IDI4IDIwLjM0MyAyOCAyMiBaIE0gMjUg'@; put 'MjAuNiBDIDI0LjIyNiAyMC42IDIzLjYgMjEuMjI2IDIzLjYgMjIgQyAyMy42IDIyLjc3MyAyNC4yMjYgMjMuNCAyNSAyMy40IEMgMjUuNzczIDIzLjQgMjYuNCAyMi43NzMgMjYuNCAyMiBDIDI2LjQgMjEuMjI2IDI1Ljc3MyAyMC42IDI1IDIwLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSI3Ij48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5c'@; put 'biAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44'@; put 'OTUgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNSAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gMTAuMzY0IDEzLjM2NCBDIDYuODQ5IDE2Ljg3OCA1Ljg5OSAyMS42MjcgOC4yNDMgMjMu'@; put 'OTcgQyAxMC41ODYgMjYuMzE0IDE1LjMzNCAyNS4zNjQgMTguODQ5IDIxLjg0OSBDIDIyLjM2NCAxOC4zMzUgMjMuMzE0IDEzLjU4NiAyMC45NzEgMTEuMjQzIEMgMTguNjI4IDguOSAxMy44NzkgOS44NDkgMTAuMzY0IDEzLjM2NCBaIE0gMjUgMTkgQyAyMy4zNDMgMTkgMjIgMjAuMzQzIDIy'@; put 'IDIyIEMgMjIgMjMuNjU3IDIzLjM0MyAyNSAyNSAyNSBDIDI2LjY1NyAyNSAyOCAyMy42NTcgMjggMjIgQyAyOCAyMC4zNDMgMjYuNjU3IDE5IDI1IDE5IFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBj'@; put 'bHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5'@; put 'NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE4Ljg0OSAyMS44NDkgQyAxNS4zMzQgMjUu'@; put 'MzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4IDEwLjM2NCAxMy4zNjQgQyAxMy4wNDkgMTAuNjc5IDE2LjQ1MyA5LjQ5MiAxOC45NTYgMTAuMTI0IEwgMTguMDA4IDExLjc0MSBDIDE2LjE4IDExLjUxOCAxMy42OTUgMTIuNTc4IDExLjYz'@; put 'NiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAyNC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMTkuMjI4IDE4LjkyNSAyMC4yMzcgMTYuOTk4IDIwLjQ1NiAxNS4zNTcgTCAyMi4yMiAxNS4zNTcgQyAyMi4wMDYgMTcu'@; put 'NDc3IDIwLjgzOCAxOS44NjEgMTguODQ5IDIxLjg0OSBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI4IDIyIEMgMjggMjMuNjU3IDI2LjY1NyAyNSAyNSAyNSBDIDIzLjM0MyAyNSAy'@; put 'MiAyMy42NTcgMjIgMjIgQyAyMiAyMC4zNDMgMjMuMzQzIDE5IDI1IDE5IEMgMjYuNjU3IDE5IDI4IDIwLjM0MyAyOCAyMiBaIE0gMjUgMjAuNiBDIDI0LjIyNiAyMC42IDIzLjYgMjEuMjI2IDIzLjYgMjIgQyAyMy42IDIyLjc3MyAyNC4yMjYgMjMuNCAyNSAyMy40IEMgMjUuNzczIDIzLjQg'@; put 'MjYuNCAyMi43NzMgMjYuNCAyMiBDIDI2LjQgMjEuMjI2IDI1Ljc3MyAyMC42IDI1IDIwLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjciPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs'@; put 'ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAx'@; put 'My4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBa'@; put 'Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIu'@; put 'ODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAxOC45NTYgMTAuMTI0IEMgMTYuNDUzIDkuNDkyIDEzLjA0OSAxMC42NzkgMTAuMzY0IDEzLjM2NCBDIDYuODQ5IDE2Ljg3OCA1Ljg5OSAyMS42MjcgOC4yNDMgMjMuOTcgQyAxMC41ODYgMjYuMzE0IDE1LjMzNCAyNS4zNjQgMTguODQ5IDIxLjg0OSBD'@; put 'IDIwLjgzOCAxOS44NjEgMjIuMDA2IDE3LjQ3NyAyMi4yMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAyMiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcgMjUgMjggMjMuNjU3IDI4IDIyIEMgMjggMjAuMzQzIDI2LjY1'@; put 'NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAy'@; put 'Mi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjku'@; put 'MDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksaC5DbHJTaGFwZUN1cnZlQ2hhcnQ9KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUg'@; put 'TCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3Bh'@; put 'dGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMS44IEMgNi41NTggMTEuOCA2LjIgMTEuNDQyIDYuMiAxMSBDIDYuMiAxMC41NTggNi41NTggMTAuMiA3IDEwLjIgTCAxMyAxMC4yIEMgMTUuNDA0IDEwLjIgMTYuMzY4IDExLjkwNyAxNy42NTMgMTYuNDc4IEMgMTcuNjk1IDE2LjYyOCAxNy43NDQgMTYu'@; put 'ODAzIDE3LjgzNSAxNy4xMjkgQyAxNy45MDkgMTcuMzkyIDE3Ljk2NCAxNy41ODggMTguMDE5IDE3Ljc4IEMgMTkuMzMyIDIyLjM3NSAyMC41NDkgMjQuMiAyMyAyNC4yIEwgMjkgMjQuMiBDIDI5LjQ0MiAyNC4yIDI5LjggMjQuNTU4IDI5LjggMjUgQyAyOS44IDI1LjQ0MiAyOS40NDIgMjUu'@; put 'OCAyOSAyNS44IEwgMjMgMjUuOCBDIDE5LjUzNSAyNS44IDE3Ljk4MSAyMy40NjkgMTYuNDgxIDE4LjIyIEMgMTYuNDI1IDE4LjAyNSAxNi4zNjkgMTcuODI2IDE2LjI5NSAxNy41NiBDIDE2LjIwMyAxNy4yMzQgMTYuMTU0IDE3LjA2IDE2LjExMyAxNi45MTEgQyAxNS4wNDMgMTMuMTA1IDE0'@; put 'LjMwNSAxMS44IDEzIDExLjggTCA3IDExLjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1'@; put 'IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDEzIDEyIEMgMTQuODE3IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45'@; put 'ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTkuODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUyIDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMwIDI0LjQ0OCAyOS41NTIgMjQgMjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2'@; put 'MiAxNy43MjUgQyAxOC4xODggMTUuMDE2IDE3Ljc5OSAxMy44ODIgMTcuMTE4IDEyLjY5MSBDIDE2LjEzIDEwLjk2MiAxNC43OTUgMTAgMTMgMTAgTCA3IDEwIEMgNi40NDggMTAgNiAxMC40NDggNiAxMSBDIDYgMTEuNTUyIDYuNDQ4IDEyIDcgMTIgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIy'@; put 'LjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8'@; put 'cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44'@; put 'MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUu'@; put 'OCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEu'@; put 'OCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1i'@; put 'YWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2'@; put 'IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEzIDEyIEMgMTQuODE3'@; put 'IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTkuODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUyIDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMwIDI0LjQ0OCAyOS41NTIgMjQg'@; put 'MjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2MiAxNy43MjUgQyAxOC4xODggMTUuMDE2IDE3Ljc5OSAxMy44ODIgMTcuMTE4IDEyLjY5MSBDIDE2LjEzIDEwLjk2MiAxNC43OTUgMTAgMTMgMTAgTCA3IDEwIEMgNi40NDggMTAgNiAxMC40NDggNiAxMSBDIDYg'@; put 'MTEuNTUyIDYuNDQ4IDEyIDcgMTIgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91'@; put 'dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYg'@; put 'NyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMS44IEMgNi41NTggMTEuOCA2LjIgMTEuNDQyIDYuMiAxMSBDIDYuMiAxMC41NTggNi41NTggMTAuMiA3IDEwLjIgTCAxMyAxMC4yIEMgMTUuNDA0IDEwLjIg'@; put 'MTYuMzY4IDExLjkwNyAxNy42NTMgMTYuNDc4IEMgMTcuNjk1IDE2LjYyOCAxNy43NDQgMTYuODAzIDE3LjgzNSAxNy4xMjkgQyAxNy45MDkgMTcuMzkyIDE3Ljk2NCAxNy41ODggMTguMDE5IDE3Ljc4IEMgMTkuMzMyIDIyLjM3NSAyMC41NDkgMjQuMiAyMyAyNC4yIEwgMjkgMjQuMiBDIDI5'@; put 'LjQ0MiAyNC4yIDI5LjggMjQuNTU4IDI5LjggMjUgQyAyOS44IDI1LjQ0MiAyOS40NDIgMjUuOCAyOSAyNS44IEwgMjMgMjUuOCBDIDE5LjUzNSAyNS44IDE3Ljk4MSAyMy40NjkgMTYuNDgxIDE4LjIyIEMgMTYuNDI1IDE4LjAyNSAxNi4zNjkgMTcuODI2IDE2LjI5NSAxNy41NiBDIDE2LjIw'@; put 'MyAxNy4yMzQgMTYuMTU0IDE3LjA2IDE2LjExMyAxNi45MTEgQyAxNS4wNDMgMTMuMTA1IDE0LjMwNSAxMS44IDEzIDExLjggTCA3IDExLjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAy'@; put 'Mi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4'@; put 'IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIg'@; put 'MjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTcuNDc2IDEyLjYxMiAxNy4zNzkgMTIuODQzIDE3LjMzIDEzLjA3NyBDIDE3LjI2MiAxMi45NDggMTcuMTkyIDEyLjgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1'@; put 'IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIEwgMTMgMTIgQyAxNC44MTcgMTIgMTUuNjc0IDEzLjQ5OSAxNy4wMzkgMTguMjc1IEMgMTcuODEzIDIwLjk4NCAxOC4yMDEgMjIuMTE4IDE4Ljg4MiAyMy4zMDkgQyAxOS44'@; put 'NyAyNS4wMzggMjEuMjA1IDI2IDIzIDI2IEwgMjkgMjYgQyAyOS41NTIgMjYgMzAgMjUuNTUyIDMwIDI1IEMgMzAgMjQuNDQ4IDI5LjU1MiAyNCAyOSAyNCBMIDIzIDI0IEMgMjEuMTgzIDI0IDIwLjMyNiAyMi41MDEgMTguOTYyIDE3LjcyNSBDIDE4LjY0IDE2LjU5OCAxOC4zODUgMTUuNzQ0'@; put 'IDE4LjE0NyAxNS4wNDQgQyAxOC40MDcgMTUuMjE1IDE4LjcxNyAxNS4zMjYgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy'@; put 'LWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMu'@; put 'Njg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicp'@; put 'LGguQ2xyU2hhcGVHcmlkQ2hhcnQ9KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1'@; put 'LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE3SDIxYTIsMiwwLDAsMS0yLTJWOGEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMTdaTTIxLDh2N0gzMlY4WiIv'@; put 'PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBhdGggY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0zMiwzMEgyMWEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwzMFpNMjEsMjF2N0gzMlYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs'@; put 'ci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2IDQgNiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAg'@; put 'PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTSAzMiAxNyBMIDIxIDE3IEMgMTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMzIgNiBDIDMzLjEwNSA2IDM0IDYuODk1IDM0IDggTCAzNCAxNSBD'@; put 'IDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMg'@; put 'MTYuMTA1IDE5IDE3IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAzMCAxNSAzMCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAx'@; put 'OSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC0xLWFsZXJ0ZWQiIGQ9Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt'@; put 'YWxlcnRlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMgMjAuMDE0IDE3IDE5LjE5NSAxNi4yODcgMTkuMDMgMTUuMzQ4IEMgMTkuMDQxIDE1LjM0OSAxOS4wNTMgMTUuMzUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzMy45NjggMTUu'@; put 'MzU3IEMgMzMuOCAxNi4yOTIgMzIuOTgzIDE3IDMyIDE3IFogTSAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIxLjM3MiA2IEwgMTkgMTAuMDQ4IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy1hbGVydGVkIiBk'@; put 'PSJNMTUsMzBINGEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwzMFpNNCwyMXY3SDE1VjIxWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LWFsZXJ0ZWQiIGQ9'@; put 'Ik0zMiwzMEgyMWEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwzMFpNMjEsMjF2N0gzMlYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQg'@; put 'Y2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAz'@; put 'NiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl'@; put 'cnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMTUgMTcgTCA0IDE3IEMgMi44OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIgOCBDIDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAx'@; put 'NyAxNSAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDIwLjAxNCAxNyAxOS4xOTUgMTYuMjg3IDE5LjAzIDE1LjM0OCBDIDE5LjA0MSAxNS4zNDkgMTkuMDUzIDE1LjM1'@; put 'IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzMuOTY4IDE1LjM1NyBDIDMzLjggMTYuMjkyIDMyLjk4MyAxNyAzMiAxNyBaIE0gMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYgTCAyMS4zNzIgNiBMIDE5IDEwLjA0OCBaIi8+'@; put 'XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0gMTUgMzAgTCA0IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUgMiAyOCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcg'@; put 'MTkuODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgZD0iTSAzMiAzMCBMIDIxIDMwIEMgMTkuODk1IDMwIDE5IDI5LjEwNSAxOSAy'@; put 'OCBMIDE5IDIxIEMgMTkgMTkuODk1IDE5Ljg5NSAxOSAyMSAxOSBMIDMyIDE5IEMgMzMuMTA1IDE5IDM0IDE5Ljg5NSAzNCAyMSBMIDM0IDI4IEMgMzQgMjkuMTA1IDMzLjEwNSAzMCAzMiAzMCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w'@; put 'YXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0'@; put 'IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAxOS44OTUgMTcgMTkgMTYuMTA1IDE5IDE1IEwgMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYgTCAyMi41OSA2IEMgMjIuNTkgNi4wMTkgMjIuNTkgNi4wMzcgMjIu'@; put 'NTkgNi4wNTYgQyAyMi41OSA2LjcyOSAyMi42OCA3LjM4MSAyMi44NDggOCBMIDIxIDggTCAyMSAxNSBMIDMyIDE1IEwgMzIgMTMuMTc1IEMgMzIuNzE3IDEyLjk3MiAzMy4zODkgMTIuNjY0IDM0IDEyLjI2OSBMIDM0IDE1IEMgMzQgMTYuMTA1IDMzLjEwNSAxNyAzMiAxNyBaIi8+XG4gIDxw'@; put 'YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBh'@; put 'dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxj'@; put 'aXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBk'@; put 'PSJNIDE1IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIgMTYuMTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUgMTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'c29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMgMTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjIuNTkgNiBDIDIyLjU5IDYuMDE5IDIyLjU5IDYuMDM3IDIyLjU5IDYu'@; put 'MDU2IEMgMjIuNTkgMTAuMTQxIDI1LjkwMSAxMy40NTIgMjkuOTg2IDEzLjQ1MiBDIDMxLjQ2NiAxMy40NTIgMzIuODQ0IDEzLjAxOCAzNCAxMi4yNjkgTCAzNCAxNSBDIDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj'@; put 'bHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBDIDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAxNyAyOCBDIDE3IDI5LjEwNSAxNi4xMDUg'@; put 'MzAgMTUgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgZD0iTSAzMiAzMCBMIDIxIDMwIEMgMTkuODk1IDMwIDE5IDI5LjEwNSAxOSAyOCBMIDE5IDIxIEMgMTkgMTkuODk1IDE5Ljg5NSAxOSAyMSAxOSBMIDMy'@; put 'IDE5IEMgMzMuMTA1IDE5IDM0IDE5Ljg5NSAzNCAyMSBMIDM0IDI4IEMgMzQgMjkuMTA1IDMzLjEwNSAzMCAzMiAzMCBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYi'@; put 'IHI9IjUiLz4nKSxoLkNsclNoYXBlSGVhdE1hcD0oMCxzLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEg'@; put 'NCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA4IDEwIEwgMjggMTAgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAy'@; put 'NCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMjYgMTEuNiBMIDIxLjkgMTEuNiBMIDIxLjkgMTcuMiBMIDI2'@; put 'IDE3LjIgWiBNIDE1LjcgMTEuNiBMIDE1LjcgMTcuMiBMIDIwLjMgMTcuMiBMIDIwLjMgMTEuNiBaIE0gMTUuNyAyNCBMIDIwLjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGgg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMz'@; put 'MSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5c'@; put 'biAgPHBhdGggZD0iTSA4IDEwIEwgMjMuNzI4IDEwIEMgMjQuMTA1IDEwLjU5NiAyNC41NjQgMTEuMTM1IDI1LjA5IDExLjYgTCAyMS45IDExLjYgTCAyMS45IDE3LjIgTCAyNiAxNy4yIEwgMjYgMTIuMjg3IEMgMjYuNjExIDEyLjY3OSAyNy4yODQgMTIuOTgzIDI4IDEzLjE4MiBMIDI4IDI2'@; put 'IEwgOCAyNiBaIE0gOS42IDI0IEwgMTQuMSAyNCBMIDE0LjEgMTguOCBMIDkuNiAxOC44IFogTSAxNC4xIDExLjYgTCA5LjYgMTEuNiBMIDkuNiAxNy4yIEwgMTQuMSAxNy4yIFogTSAyNiAyNCBMIDI2IDE4LjggTCAyMS45IDE4LjggTCAyMS45IDI0IFogTSAxNS43IDExLjYgTCAxNS43IDE3'@; put 'LjIgTCAyMC4zIDE3LjIgTCAyMC4zIDExLjYgWiBNIDE1LjcgMjQgTCAyMC4zIDI0IEwgMjAuMyAxOC44IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIyLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0i'@; put 'TSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoi'@; put 'PjwvcGF0aD5cbiAgPHBhdGggZD0iTSA4IDEwIEwgMTkuMDI4IDEwIEwgMTguMDkxIDExLjYgTCAxNS43IDExLjYgTCAxNS43IDE3LjIgTCAyMC4zIDE3LjIgTCAyMC4zIDE1LjM1NyBMIDIxLjkgMTUuMzU3IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBMIDI2IDE1LjM1NyBMIDI4IDE1LjM1NyBM'@; put 'IDI4IDI2IEwgOCAyNiBaIE0gOS42IDI0IEwgMTQuMSAyNCBMIDE0LjEgMTguOCBMIDkuNiAxOC44IFogTSAxNC4xIDExLjYgTCA5LjYgMTEuNiBMIDkuNiAxNy4yIEwgMTQuMSAxNy4yIFogTSAyNiAyNCBMIDI2IDE4LjggTCAyMS45IDE4LjggTCAyMS45IDI0IFogTSAxNS43IDI0IEwgMjAu'@; put 'MyAyNCBMIDIwLjMgMTguOCBMIDE1LjcgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMjItLWFs'@; put 'ZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5'@; put 'IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt'@; put 'aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3'@; put 'IFogTSA4IDI2IEwgMjggMjYgTCAyOCAxMCBMIDggMTAgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkgTCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkgWiBNIDI2IDE3IEwgMjIgMTcgTCAyMiAxMiBMIDI2'@; put 'IDEyIFogTSAyMCAxMiBMIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBaIE0gMTQgMTIgTCAxNCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0'@; put 'IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMi4zMTIgNi44MTcgMjIuNzMyIDguNTY2IDIzLjYzMyAxMCBMIDggMTAgTCA4IDI2IEwgMjggMjYgTCAy'@; put 'OCAxMy4yMzIgQyAyOC40MjEgMTMuMzQ1IDI4Ljg1OSAxMy40MjIgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gMTAgMTkgTCAxNCAxOSBMIDE0IDI0IEwgMTAgMjQgWiBNIDIyIDI0IEwgMjIgMTkgTCAyNiAxOSBM'@; put 'IDI2IDI0IFogTSAyMCAxOSBMIDIwIDI0IEwgMTYgMjQgTCAxNiAxOSBaIE0gMjYgMTcgTCAyMiAxNyBMIDIyIDEyIEwgMjUuNTg0IDEyIEMgMjUuNzE5IDEyLjEgMjUuODU4IDEyLjE5NiAyNiAxMi4yODcgWiBNIDIwIDEyIEwgMjAgMTcgTCAxNiAxNyBMIDE2IDEyIFogTSAxNCAxMiBMIDE0'@; put 'IDE3IEwgMTAgMTcgTCAxMCAxMiBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNv'@; put 'bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE5LjAyOCAxMCBM'@; put 'IDggMTAgTCA4IDI2IEwgMjggMjYgTCAyOCAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkgTCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkgWiBNIDI2IDE3IEwgMjIgMTcg'@; put 'TCAyMiAxNS4zNTcgTCAyNiAxNS4zNTcgWiBNIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBMIDE3Ljg1NiAxMiBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcg'@; put 'TCAyMCAxNS4zNTcgWiBNIDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBMIDEwIDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMjItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDEx'@; put 'LjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEu'@; put 'MDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksaC5DbHJTaGFwZUxpbmVDaGFydD0oMCxzLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFog'@; put 'TSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiPjwvcGF0aD5cbiAgPHBvbHlnb24gcG9pbnRzPSIxNS42MiAxNS4yMjIgOS42MDIgMjMuOTY4IDUuNTUgMjAuMzg0IDYuNjEgMTkuMTg2IDkuMzA4IDIxLjU3MiAxNS42MzQgMTIuMzggMjIuMzg0IDIyLjM5NSAyOS4xMzggMTMuNDcgMzAu'@; put 'NDE0IDE0LjQzNiAyMi4zMDggMjUuMTQ1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wb2x5Z29uPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NiA1IDIgNS44OTYgMiA3'@; put 'IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk2IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTYgMzMuMTA1IDUgMzIgNSBaIE0gMjIuNTYgMjUuOTQgTCAxNS40NiAxNS4zNiBMIDkuMTIgMjQuNjQgTCA0LjYyIDIwLjY0IEwgNiAxOS4w'@; put 'NSBMIDguNyAyMS40NCBMIDE1LjQ2IDExLjU2IEwgMjIuNjUgMjIuMjcgTCAyOS42NSAxMyBMIDMxLjM1IDE0LjI4IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIg'@; put 'MjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEg'@; put 'QyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBvbHlnb24gcG9pbnRzPSIxNS42MiAxNS4yMjIgOS42MDIgMjMuOTY4IDUuNTUgMjAuMzg0IDYuNjEgMTkuMTg2IDkuMzA4IDIx'@; put 'LjU3MiAxNS42MzQgMTIuMzggMjIuMzg0IDIyLjM5NSAyOS4xMzggMTMuNDcgMzAuNDE0IDE0LjQzNiAyMi4zMDggMjUuMTQ1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcG9seWdvbj5cbiAgPGNpcmNsZSBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMC4z'@; put 'MiAxMy40OCBMIDMxLjM4IDE0LjI4IEwgMjIuNTYgMjUuOTQgTCAxNS40NiAxNS4zNiBMIDkuMTIgMjQuNjQgTCA0LjYyIDIwLjY0IEwgNiAxOS4wNSBMIDguNyAyMS40NCBMIDE1LjQ2IDExLjU2IEwgMjIuNjUgMjIuMjcgTCAyOS4zMSAxMy40NiBDIDI1LjA1IDEzLjEgMjEuOTY5IDkuMjMz'@; put 'IDIyLjU3IDUgTCA0IDUgQyAyLjg5NiA1IDIgNS44OTYgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk2IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCAxMi4zNCBDIDMyLjg5NSAxMy4wMzYgMzEuNjI2IDEzLjQyOSAzMC4zMiAxMy40OCBaIj48L3Bh'@; put 'dGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIg'@; put 'MTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNS42MiAxNS4yMjIgTCA5LjYwMiAyMy45NjggTCA1LjU1IDIwLjM4NCBMIDYuNjEgMTkuMTg2IEwgOS4zMDggMjEuNTcyIEwgMTUuNjM0IDEyLjM4IEwgMjIuMzg0IDIyLjM5NSBMIDI3LjcxNyAxNS4zNDggTCAy'@; put 'OS43MjQgMTUuMzQ4IEwgMjIuMzA4IDI1LjE0NSBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxl'@; put 'cnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42Njkg'@; put 'MTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1p'@; put 'LXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAx'@; put 'Mi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNy40NTIgMTUuMzU3IEwgMjIuMzggMjIuMDYgTCAxNS42MyAxMiBMIDkuMjggMjEuMjggTCA2Ljc1IDE5LjA0IEwgNS40'@; put 'MiAyMC41MyBMIDkuNjUgMjQuMjggTCAxNS42MSAxNS41NiBMIDIyLjI4IDI1LjUgTCAyOS45NTkgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIg'@; put 'ZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45'@; put 'OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxoLkNsclNoYXBlUGllQ2hhcnQ9KDAscy5jbHJJY29uU1ZHKSgn'@; put 'XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3'@; put 'IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBMIDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40'@; put 'MTggMjEuNDE4IDI3IDE3IDI3IFogTSAyMy4yNDcgMjAuNCBMIDE1LjQgMjAuNCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQgMjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMu'@; put 'MjQ3IDIwLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOSA5IEMgMjMuNDE4IDkgMjcgMTIuNTgyIDI3IDE3IEwgMTkgMTcgWiBNIDI1LjE5OCAxNS40IEMgMjQuNjIgMTMuMTUgMjIuODQ5IDExLjM4IDIwLjYg'@; put 'MTAuODAxIEwgMjAuNiAxNS40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAz'@; put 'MSBDIDMyIDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDI1IDE5IEwgMTcgMTkgTCAxNyAxMSBDIDEyLjU4MiAxMSA5IDE0LjU4MiA5IDE5IEMgOSAyMy40MTggMTIuNTgyIDI3IDE3IDI3IEMg'@; put 'MjEuNDE4IDI3IDI1IDIzLjQxOCAyNSAxOSBaIE0gMTkgMTcgTCAyNyAxNyBDIDI3IDEyLjU4MiAyMy40MTggOSAxOSA5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwg'@; put 'MzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIg'@; put 'MzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBDIDEyLjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwg'@; put 'MTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcgMjcgWiBNIDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAxMi42NCAxMy41MTMgMTAuNjAxIDE2LjAxOCAxMC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAy'@; put 'NS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOSA5IEMgMjMuNDE4IDkgMjcgMTIuNTgyIDI3IDE3IEwgMTkgMTcgWiBNIDI1LjE5'@; put 'OCAxNS40IEMgMjQuNjIgMTMuMTUgMjIuODQ5IDExLjM4IDIwLjYgMTAuODAxIEwgMjAuNiAxNS40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAz'@; put 'NCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMy'@; put 'Ljg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDI1IDE5IEwgMTcgMTkgTCAxNyAxMSBDIDEyLjU4MiAxMSA5IDE0LjU4MiA5IDE5IEMgOSAyMy40MTggMTIuNTgyIDI3IDE3IDI3IEMgMjEuNDE4IDI3IDI1IDIzLjQxOCAyNSAxOSBaIE0gMTkgMTcgTCAyNyAxNyBDIDI3IDEyLjU4MiAyMy40MTgg'@; put 'OSAxOSA5IFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5'@; put 'IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMgMjUgMjMuNDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0g'@; put 'MjMuMjQ3IDIwLjQgTCAxNS40IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEyLjY0IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMuMjYxIDIzLjI0NyAyMC40IFoiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjcgMTcgTCAxOSAxNyBMIDE5IDE1LjM0NSBDIDE5LjAyMSAxNS4zNDggMTkuMDQzIDE1LjM0OSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEg'@; put 'MTUuMzU5IDE5LjI3IDE1LjM1NyBMIDI2LjgzMSAxNS4zNTcgQyAyNi45NDIgMTUuODg3IDI3IDE2LjQzNyAyNyAxNyBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYg'@; put 'MjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0'@; put 'IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIg'@; put 'NS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi44MDcgMTMuNTgzIDE3LjU3MSAxNS4xOTcgMTkgMTUuMzQ1IEwgMTkgMTcgTCAyNyAxNyBDIDI3IDE2LjQzNyAyNi45NDIgMTUuODg3IDI2LjgzMSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDI1IDE5IEwg'@; put 'MTcgMTkgTCAxNyAxMSBDIDEyLjU4MiAxMSA5IDE0LjU4MiA5IDE5IEMgOSAyMy40MTggMTIuNTgyIDI3IDE3IDI3IEMgMjEuNDE4IDI3IDI1IDIzLjQxOCAyNSAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFs'@; put 'ZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5'@; put 'IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksaC5DbHJTaGFwZVNjYXR0ZXJQ'@; put 'bG90PSgwLHMuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEg'@; put 'MzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTEx'@; put 'IDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkx'@; put 'IDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMg'@; put 'OC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0i'@; put 'TSAxNS4xNzYgMjUuNTM2IEMgMTUuNDg4IDI1Ljg0NyAxNS45OTQgMjUuODQ3IDE2LjMwNiAyNS41MzYgTCAxNy40NjYgMjQuMzc2IEwgMTguNjI2IDI1LjUzNiBDIDE5LjAzOSAyNS45OTIgMTkuNzkyIDI1LjgzIDE5Ljk4IDI1LjI0MyBDIDIwLjA3NyAyNC45NDQgMTkuOTg5IDI0LjYxNyAx'@; put 'OS43NTYgMjQuNDA2IEwgMTguNjA2IDIzLjI3NiBMIDE5Ljc2NiAyMi4xMTYgQyAyMC4yMjIgMjEuNzAyIDIwLjA2IDIwLjk1IDE5LjQ3NCAyMC43NjEgQyAxOS4xNzUgMjAuNjY1IDE4Ljg0NyAyMC43NTMgMTguNjM2IDIwLjk4NiBMIDE3LjQ3NiAyMi4xNDYgTCAxNi4zMDYgMjAuOTU2IEMg'@; put 'MTUuODkyIDIwLjQ5OSAxNS4xNCAyMC42NjIgMTQuOTUyIDIxLjI0OCBDIDE0Ljg1NSAyMS41NDcgMTQuOTQzIDIxLjg3NSAxNS4xNzYgMjIuMDg2IEwgMTYuMzM2IDIzLjI3NiBMIDE1LjE3NiAyNC40MDYgQyAxNC44NjQgMjQuNzE4IDE0Ljg2NCAyNS4yMjMgMTUuMTc2IDI1LjUzNiBaIi8+'@; put 'XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3'@; put 'LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4'@; put 'MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkx'@; put 'MiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEg'@; put 'MiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2'@; put 'NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45'@; put 'MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0'@; put 'LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFogTSAxNS4xNzYgMjUuNTM2IEMgMTUuNDg4IDI1Ljg0NyAxNS45OTQgMjUuODQ3IDE2LjMwNiAyNS41MzYgTCAxNy40NjYgMjQuMzc2IEwgMTguNjI2IDI1LjUzNiBDIDE5LjAzOSAyNS45OTIgMTkuNzkyIDI1Ljgz'@; put 'IDE5Ljk4IDI1LjI0MyBDIDIwLjA3NyAyNC45NDQgMTkuOTg5IDI0LjYxNyAxOS43NTYgMjQuNDA2IEwgMTguNjA2IDIzLjI3NiBMIDE5Ljc2NiAyMi4xMTYgQyAyMC4yMjIgMjEuNzAyIDIwLjA2IDIwLjk1IDE5LjQ3NCAyMC43NjEgQyAxOS4xNzUgMjAuNjY1IDE4Ljg0NyAyMC43NTMgMTgu'@; put 'NjM2IDIwLjk4NiBMIDE3LjQ3NiAyMi4xNDYgTCAxNi4zMDYgMjAuOTU2IEMgMTUuODkyIDIwLjQ5OSAxNS4xNCAyMC42NjIgMTQuOTUyIDIxLjI0OCBDIDE0Ljg1NSAyMS41NDcgMTQuOTQzIDIxLjg3NSAxNS4xNzYgMjIuMDg2IEwgMTYuMzM2IDIzLjI3NiBMIDE1LjE3NiAyNC40MDYgQyAx'@; put 'NC44NjQgMjQuNzE4IDE0Ljg2NCAyNS4yMjMgMTUuMTc2IDI1LjUzNiBaIE0gMjIuOTEyIDIwLjM0MyBDIDIzLjIyNCAyMC42NTQgMjMuNzMgMjAuNjU0IDI0LjA0MiAyMC4zNDMgTCAyNS4yMDIgMTkuMTgzIEwgMjYuMzYyIDIwLjM0MyBDIDI2Ljc3NSAyMC43OTkgMjcuNTI4IDIwLjYzNyAy'@; put 'Ny43MTYgMjAuMDUgQyAyNy44MTMgMTkuNzUxIDI3LjcyNSAxOS40MjQgMjcuNDkyIDE5LjIxMyBMIDI2LjM0MiAxOC4wODMgTCAyNy41MDIgMTYuOTIzIEMgMjcuOTU4IDE2LjUwOSAyNy43OTYgMTUuNzU3IDI3LjIxIDE1LjU2OCBDIDI2LjkxMSAxNS40NzIgMjYuNTgzIDE1LjU2IDI2LjM3'@; put 'MiAxNS43OTMgTCAyNS4yMTIgMTYuOTUzIEwgMjQuMDQyIDE1Ljc2MyBDIDIzLjYyOCAxNS4zMDYgMjIuODc2IDE1LjQ2OSAyMi42ODggMTYuMDU1IEMgMjIuNTkxIDE2LjM1NCAyMi42NzkgMTYuNjgyIDIyLjkxMiAxNi44OTMgTCAyNC4wNzIgMTguMDgzIEwgMjIuOTEyIDE5LjIxMyBDIDIy'@; put 'LjYgMTkuNTI1IDIyLjYgMjAuMDMgMjIuOTEyIDIwLjM0MyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42'@; put 'NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0'@; put 'IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUu'@; put 'OCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAx'@; put 'My45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5'@; put 'IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0gMTUuMTc2'@; put 'IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0'@; put 'LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAy'@; put 'MC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0'@; put 'aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0gMjIuOTEyIDIwLjM0MyBDIDIzLjIyNCAyMC42NTQgMjMuNzMgMjAuNjU0IDI0LjA0MiAyMC4zNDMgTCAyNS4yMDIgMTkuMTgzIEwgMjYuMzYyIDIwLjM0MyBDIDI2Ljc3NSAy'@; put 'MC43OTkgMjcuNTI4IDIwLjYzNyAyNy43MTYgMjAuMDUgQyAyNy44MTMgMTkuNzUxIDI3LjcyNSAxOS40MjQgMjcuNDkyIDE5LjIxMyBMIDI2LjM0MiAxOC4wODMgTCAyNy41MDIgMTYuOTIzIEMgMjcuOTU4IDE2LjUwOSAyNy43OTYgMTUuNzU3IDI3LjIxIDE1LjU2OCBDIDI2LjkxMSAxNS40'@; put 'NzIgMjYuNTgzIDE1LjU2IDI2LjM3MiAxNS43OTMgTCAyNS4yMTIgMTYuOTUzIEwgMjQuMDQyIDE1Ljc2MyBDIDIzLjYyOCAxNS4zMDYgMjIuODc2IDE1LjQ2OSAyMi42ODggMTYuMDU1IEMgMjIuNTkxIDE2LjM1NCAyMi42NzkgMTYuNjgyIDIyLjkxMiAxNi44OTMgTCAyNC4wNzIgMTguMDgz'@; put 'IEwgMjIuOTEyIDE5LjIxMyBDIDIyLjYgMTkuNTI1IDIyLjYgMjAuMDMgMjIuOTEyIDIwLjM0MyBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+'@; put 'XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIu'@; put 'ODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44'@; put 'IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEz'@; put 'Ljk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkg'@; put 'OS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYy'@; put 'NiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAu'@; put 'NzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4'@; put 'NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAy'@; put 'MC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41'@; put 'NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkz'@; put 'IEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5'@; put 'PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1'@; put 'Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA5'@; put 'LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3'@; put 'IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2'@; put 'NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTSAxNS4xNzYgMjUuNTM2IEMgMTUuNDg4IDI1Ljg0NyAxNS45OTQgMjUuODQ3IDE2LjMwNiAyNS41MzYgTCAxNy40NjYgMjQuMzc2IEwgMTguNjI2IDI1LjUzNiBDIDE5LjAzOSAyNS45OTIgMTkuNzkyIDI1LjgzIDE5'@; put 'Ljk4IDI1LjI0MyBDIDIwLjA3NyAyNC45NDQgMTkuOTg5IDI0LjYxNyAxOS43NTYgMjQuNDA2IEwgMTguNjA2IDIzLjI3NiBMIDE5Ljc2NiAyMi4xMTYgQyAyMC4yMjIgMjEuNzAyIDIwLjA2IDIwLjk1IDE5LjQ3NCAyMC43NjEgQyAxOS4xNzUgMjAuNjY1IDE4Ljg0NyAyMC43NTMgMTguNjM2'@; put 'IDIwLjk4NiBMIDE3LjQ3NiAyMi4xNDYgTCAxNi4zMDYgMjAuOTU2IEMgMTUuODkyIDIwLjQ5OSAxNS4xNCAyMC42NjIgMTQuOTUyIDIxLjI0OCBDIDE0Ljg1NSAyMS41NDcgMTQuOTQzIDIxLjg3NSAxNS4xNzYgMjIuMDg2IEwgMTYuMzM2IDIzLjI3NiBMIDE1LjE3NiAyNC40MDYgQyAxNC44'@; put 'NjQgMjQuNzE4IDE0Ljg2NCAyNS4yMjMgMTUuMTc2IDI1LjUzNiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4w'@; put 'NDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3'@; put 'Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5'@; put 'MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4w'@; put 'MDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9'@; put 'ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3'@; put 'LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44'@; put 'IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEz'@; put 'Ljk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkg'@; put 'OS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYy'@; put 'NiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAu'@; put 'NzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4'@; put 'NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAy'@; put 'MC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41'@; put 'NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkz'@; put 'IEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1'@; put 'NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUg'@; put 'MTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cmVjdCB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIGZpbGwtb3BhY2l0eT0iMCIvPicpLGgu'@; put 'Q2xyU2hhcGVUaWNrQ2hhcnQ9KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAz'@; put 'MSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDYgMjUgTCA4IDI1'@; put 'IEwgOCAyMiBMIDEwIDIyIEwgMTAgMjUgTCAxMyAyNSBMIDEzIDIyIEwgMTUgMjIgTCAxNSAyNSBMIDE4IDI1IEwgMTggMjIgTCAyMCAyMiBMIDIwIDI1IEwgMjMgMjUgTCAyMyAyMiBMIDI1IDIyIEwgMjUgMjUgTCAyNy43MjMgMjUgQyAyOC4wMjMgMjUuMDIgMjguMjkzIDI1LjE4IDI4LjQ2'@; put 'MyAyNS40MyBDIDI4LjkwMyAyNi4wNiAyOC40ODMgMjYuOTMgMjcuNzIzIDI2Ljk5IEwgNiAyNi45OTEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMx'@; put 'IEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gNiAyNi45OTEgTCAyNy43MjMgMjYuOTkgQyAyOC40ODMgMjYuOTMgMjguOTAzIDI2LjA2IDI4LjQ2MyAyNS40MyBDIDI4LjI5MyAy'@; put 'NS4xOCAyOC4wMjMgMjUuMDIgMjcuNzIzIDI1IEwgMjUgMjUgTCAyNSAyMiBMIDIzIDIyIEwgMjMgMjUgTCAyMCAyNSBMIDIwIDIyIEwgMTggMjIgTCAxOCAyNSBMIDE1IDI1IEwgMTUgMjIgTCAxMyAyMiBMIDEzIDI1IEwgMTAgMjUgTCAxMCAyMiBMIDggMjIgTCA4IDI1IEwgNiAyNSBaIi8+'@; put 'XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAy'@; put 'Mi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBa'@; put 'Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAg'@; put 'MjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPGNpcmNsZSBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQg'@; put 'MTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBD'@; put 'IDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNiAyNi45OTEgTCAyNy43MjMgMjYuOTkgQyAyOC40ODMgMjYuOTMgMjguOTAzIDI2LjA2IDI4LjQ2MyAyNS40MyBDIDI4LjI5MyAyNS4xOCAyOC4wMjMgMjUuMDIgMjcuNzIzIDI1IEwgMjUgMjUgTCAyNSAyMiBMIDIz'@; put 'IDIyIEwgMjMgMjUgTCAyMCAyNSBMIDIwIDIyIEwgMTggMjIgTCAxOCAyNSBMIDE1IDI1IEwgMTUgMjIgTCAxMyAyMiBMIDEzIDI1IEwgMTAgMjUgTCAxMCAyMiBMIDggMjIgTCA4IDI1IEwgNiAyNSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwg'@; put 'NCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy'@; put 'dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDYgMjUgTCA4IDI1IEwgOCAyMiBMIDEwIDIyIEwgMTAgMjUgTCAxMyAyNSBMIDEzIDIyIEwgMTUgMjIgTCAxNSAyNSBMIDE4IDI1IEwgMTggMjIgTCAyMCAyMiBMIDIwIDI1IEwgMjMgMjUgTCAyMyAyMiBMIDI1IDIyIEwg'@; put 'MjUgMjUgTCAyNy43MjMgMjUgQyAyOC4wMjMgMjUuMDIgMjguMjkzIDI1LjE4IDI4LjQ2MyAyNS40MyBDIDI4LjkwMyAyNi4wNiAyOC40ODMgMjYuOTMgMjcuNzIzIDI2Ljk5IEwgNiAyNi45OTEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAx'@; put 'My4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBM'@; put 'IDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAy'@; put 'Ni4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAg'@; put 'MjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAx'@; put 'Mi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAw'@; put 'NCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLGguQ2xyU2hhcGVCZWxsQ3VydmU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDI5SDNBMSwxLDAsMSwxLDMsMjdIMzNBMSwxLDAsMSwxLDMzLDI5WiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDI1aC0uNjJhOC4xMSw4LjExLDAsMCwxLTgtNi42N0MyMy42MiwxNC40NCwyMS44OSw3Ljk0LDE4LDcuOTRzLTUuNjksNi41MS02LjM4LDEwLjM5YTguMTEsOC4xMSwwLDAsMS04LDYuNjVIM2ExLDEsMCwx'@; put 'LDEsMC0yaC42QTYuMTEsNi4xMSwwLDAsMCw5LjYsMThjMS40MS03Ljg4LDQuMy0xMiw4LjM1LTEyczYuOTMsNC4xNiw4LjMzLDEyYTYuMTEsNi4xMSwwLDAsMCw2LDVIMzNhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGgu'@; put 'Q2hhcnRTaGFwZXM9eyJheGlzLWNoYXJ0IjpoLkNsclNoYXBlQXhpc0NoYXJ0LCJiYXItY2hhcnQiOmguQ2xyU2hhcGVCYXJDaGFydCwiYnViYmxlLWNoYXJ0IjpoLkNsclNoYXBlQnViYmxlQ2hhcnQsImNsb3VkLWNoYXJ0IjpoLkNsclNoYXBlQ2xvdWRDaGFydCwiY3VydmUtY2hhcnQiOmgu'@; put 'Q2xyU2hhcGVDdXJ2ZUNoYXJ0LCJncmlkLWNoYXJ0IjpoLkNsclNoYXBlR3JpZENoYXJ0LCJsaW5lLWNoYXJ0IjpoLkNsclNoYXBlTGluZUNoYXJ0LCJwaWUtY2hhcnQiOmguQ2xyU2hhcGVQaWVDaGFydCwidGljay1jaGFydCI6aC5DbHJTaGFwZVRpY2tDaGFydCwic2NhdHRlci1wbG90Ijpo'@; put 'LkNsclNoYXBlU2NhdHRlclBsb3QsImJveC1wbG90IjpoLkNsclNoYXBlQm94UGxvdCwiaGVhdC1tYXAiOmguQ2xyU2hhcGVIZWF0TWFwLCJiZWxsLWN1cnZlIjpoLkNsclNoYXBlQmVsbEN1cnZlfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5DaGFydFNoYXBlcywiYW5hbHl0aWNzIiwoMCxj'@; put 'LmRlc2NyaXB0b3JDb25maWcpKGguQ2hhcnRTaGFwZXNbImxpbmUtY2hhcnQiXSkpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChoLkNoYXJ0U2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMv'@; put 'c3JjL3NoYXBlcy9jb21tZXJjZS1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyAqKioh'@; put 'CiAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihqLGgseSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJfX2VzTW9k'@; put 'dWxlIix7dmFsdWU6ITB9KSxoLkNvbW1lcmNlU2hhcGVzPWguQ2xyU2hhcGVGYWN0b3J5PWguQ2xyU2hhcGVFbXBsb3llZT1oLkNsclNoYXBlRW1wbG95ZWVHcm91cD1oLkNsclNoYXBlUnVibGU9aC5DbHJTaGFwZVBlc289aC5DbHJTaGFwZUNvaW5CYWc9aC5DbHJTaGFwZUJpdGNvaW49aC5D'@; put 'bHJTaGFwZVllbj1oLkNsclNoYXBlV29uPWguQ2xyU2hhcGVSdXBlZT1oLkNsclNoYXBlUG91bmQ9aC5DbHJTaGFwZUVDaGVjaz1oLkNsclNoYXBlRG9sbGFyQmlsbD1oLkNsclNoYXBlQmFuaz1oLkNsclNoYXBlQ3JlZGl0Q2FyZD1oLkNsclNoYXBlRG9sbGFyPWguQ2xyU2hhcGVFdXJvPWgu'@; put 'Q2xyU2hhcGVTdG9yZT1oLkNsclNoYXBlV2FsbGV0PWguQ2xyU2hhcGVTaG9wcGluZ0NhcnQ9aC5DbHJTaGFwZVBpZ2d5QmFuaz1oLkNsclNoYXBlU2hvcHBpbmdCYWc9aC5DbHJTaGFwZUNhbGN1bGF0b3I9dm9pZCAwO3ZhciBjPXkoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAq'@; put 'LwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxzPXkoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtoLkNsclNoYXBlQ2FsY3VsYXRvcj0o'@; put 'MCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk04LDMyVjRIMjhWMzJaIi8+XG4gICAg'@; put 'ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDhIMjUuNjdWNkgxMWExLDEsMCwwLDAtMSwxdjQuNjdoMloiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z'@; put 'IiBwb2ludHM9IjEyIDE2IDEwIDE2IDEwIDE4IDE0IDE4IDE0IDE0IDEyIDE0IDEyIDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNCAxNiAyMiAxNiAyMiAxOCAyNiAxOCAyNiAxNCAyNCAxNCAy'@; put 'NCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHBvaW50cz0iMTggMTYgMTYgMTYgMTYgMTggMjAgMTggMjAgMTQgMTggMTQgMTggMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBwb2ludHM9IjEyIDIyIDEwIDIyIDEwIDI0IDE0IDI0IDE0IDIwIDEyIDIwIDEyIDIyIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgcG9pbnRzPSIyNCAyMiAyMiAyMiAy'@; put 'MiAyNCAyNiAyNCAyNiAyMCAyNCAyMCAyNCAyMiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHBvaW50cz0iMTggMjIgMTYgMjIgMTYgMjQgMjAgMjQgMjAgMjAgMTggMjAgMTggMjIiLz5cbiAgICAgICAgICAgIDxw'@; put 'b2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiBwb2ludHM9IjEyIDI4IDEwIDI4IDEwIDMwIDE0IDMwIDE0IDI2IDEyIDI2IDEyIDI4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MTAiIHBvaW50cz0iMjQgMjggMjIgMjggMjIgMzAgMjYgMzAgMjYgMjYgMjQgMjYgMjQgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgcG9pbnRzPSIxOCAyOCAxNiAyOCAxNiAzMCAyMCAzMCAyMCAyNiAxOCAy'@; put 'NiAxOCAyOCIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMiwyOEgxMFYyNmgyWm0wLTZI'@; put 'MTBWMjBoMlptMC02SDEwVjE0aDJabTcsMTJIMTdWMjZoMlptMC02SDE3VjIwaDJabTAtNkgxN1YxNGgyWm03LDEySDI0VjI2aDJabTAtNkgyNFYyMGgyWm0wLTZIMjRWMTRoMlptMC03SDEwVjVIMjZaIi8+JyksaC5DbHJTaGFwZVNob3BwaW5nQmFnPSgwLHMuY2xySWNvblNWRykoJzxwYXRo'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUsMTJWOS4wNWE3LDcsMCwxLDAtMTQsMHY3YTEsMSwwLDAsMCwyLDBWMTRoOFYxMkgxM1Y5LjA1YTUsNSwwLDEsMSwxMCwwVjE2YTEsMSwwLDEsMCwyLDBWMTRoNVYzMkg2VjE0SDlWMTJINFYzMi4wOUEx'@; put 'LjkxLDEuOTEsMCwwLDAsNS45MSwzNEgzMC4wOUExLjkxLDEuOTEsMCwwLDAsMzIsMzIuMDlWMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTMsOS4yMmE1LDUsMCwxLDEsMTAsMFYxMmgyVjkuMjJhNyw3LDAsMSww'@; put 'LTE0LDBWMTJoMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNSwxMnYzLjFhMSwxLDAsMSwxLTIsMFYxMkgxM3YzLjFhMSwxLDAsMCwxLTIsMFYxMkg0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYx'@; put 'MloiLz4nKSxoLkNsclNoYXBlUGlnZ3lCYW5rPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNzIsMTAuNDdhMTEuNjUsMTEuNjUsMCwwLDAtNi4zMS41MkEuOC44LDAsMSwwLDE0LDEyLjQ4LDEwLjExLDEw'@; put 'LjExLDAsMCwxLDE5LjQ0LDEyYS44LjgsMCwxLDAsLjI4LTEuNTdaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjUuMzgiIGN5PSIxNi43MSIgcj0iMS4zNiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zNS41MSwxOC42M2ExLDEsMCwwLDAtLjg0LS40NCwzLjQyLDMuNDIsMCwwLDEtMi4wOS0xLjEyLDE3LjM1LDE3LjM1LDAsMCwxLTIuNjMtMy43OGwyLjg4LTQuNUExLjg5LDEuODksMCwwLDAsMzMsN2ExLjc3LDEuNzcs'@; put 'MCwwLDAtMS4zMy0xLDEwLjEyLDEwLjEyLDAsMCwwLTUuMzkuNzUsMTIuNzIsMTIuNzIsMCwwLDAtMi43MiwxLjYzLDE2Ljk0LDE2Ljk0LDAsMCwwLTUuMTYtMS4zOUMxMS4zMSw2LjMsNC44MywxMC45LDQsMTdINGEyLjU2LDIuNTYsMCwwLDEtMS4zOC0xLjUzLDEuODEsMS44MSwwLDAsMSwu'@; put 'MTQtMS40LDEuMTksMS4xOSwwLDAsMSwuNDMtLjQzLDEuMDgsMS4wOCwwLDAsMC0xLjEyLTEuODVBMy4zMSwzLjMxLDAsMCwwLC45MSwxM2E0LDQsMCwwLDAtLjMzLDMuMDhBNC43Niw0Ljc2LDAsMCwwLDMsMTguOTVsLjkyLjQ2YTE3LjU4LDE3LjU4LDAsMCwwLDEuODIsN2wuMTcuMzhBMjMs'@; put 'MjMsMCwwLDAsOS4yLDMxLjg4YTEsMSwwLDAsMCwuNzUuMzRoNC41MmExLDEsMCwwLDAsLjkyLTEuMzhMMTUsMjkuOTRsMS4xOC4xM2EyMC4zMywyMC4zMywwLDAsMCw0LDBjLjM3LjYuNzcsMS4yLDEuMjEsMS43OWExLDEsMCwwLDAsLjguNDFoNC4zNGExLDEsMCwwLDAsLjkyLTEuMzljLS4x'@; put 'Ny0uNC0uMzQtLjgzLS40Ny0xLjItLjE4LS41My0uMzItMS0uNDMtMS40NUExMy4xOCwxMy4xOCwwLDAsMCwyOS41NiwyNmExMi41LDEyLjUsMCwwLDAsMywwLDEsMSwwLDAsMCwuNzgtLjYybDIuMjYtNS44MUExLDEsMCwwLDAsMzUuNTEsMTguNjNabS0zLjc4LDUuNDRhMTEuMzcsMTEuMzcs'@; put 'MCwwLDEtMi4zNS0uMTFoMGE4LjIsOC4yLDAsMCwxLTIuNTMtLjg3LDEsMSwwLDAsMC0uOTMsMS43NywxMS43MiwxMS43MiwwLDAsMCwxLjI5LjU4LDgsOCwwLDAsMS0xLjgsMS4xNmwtMS4wNi40OHMuNDksMi4xOS44MiwzLjE2SDIyLjc5Yy0uMjQtLjM0LTEuNDUtMi4zNi0xLjQ1LTIuMzZs'@; put 'LS42Ny4wOWExOC41MywxOC41MywwLDAsMS00LjI1LjEyYy0uNjYtLjA2LTEuNzYtLjItMi42Mi0uMzVsLTEuNTUtLjI3cy42MywyLjQzLjc1LDIuNzR2MEgxMC40MkEyMC41NywyMC41NywwLDAsMSw3Ljc2LDI2bC0uMTgtLjM5QTE0LjYyLDE0LjYyLDAsMCwxLDYsMTcuNDhjLjU0LTUuMTks'@; put 'Ni4xMi05LjExLDEyLjE5LTguNTRhMTUuNDcsMTUuNDcsMCwwLDEsNS4wOCwxLjQ4bC42Mi4yOS41LS40N0ExMC4yOSwxMC4yOSwwLDAsMSwyNyw4LjU0YTguMjUsOC4yNSwwLDAsMSw0LS42NWwtMy4zOCw1LjI5LjI1LjVoMGEyMS4xNiwyMS4xNiwwLDAsMCwzLjMxLDQuODQsNi40OSw2LjQ5'@; put 'LDAsMCwwLDIuMTQsMS4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNSwxOC44N0E1LjgzLDUuODMsMCwwLDEsMzMsMTcuNjFhMjEuNjMsMjEuNjMsMCwwLDEtMy4yOS00Ljg0bDMuMzktNS4yOWEuOS45LDAsMCww'@; put 'LS41NC0xLjM4LDkuNjcsOS42NywwLDAsMC01LjEzLjcyLDEyLDEyLDAsMCwwLTMuMTMsMkExNy4zNywxNy4zNywwLDAsMCwxOC42LDcuMTVDMTEuOCw2LjUyLDUuMjcsMTAuOSw0LjU0LDE3bC0uMTQtLjA3QTIuNzYsMi43NiwwLDAsMSwyLjksMTUuMjlhMiwyLDAsMCwxLC4xNS0xLjU1LDEu'@; put 'MzIsMS4zMiwwLDAsMSwuNDctLjQ4LDEuMDgsMS4wOCwwLDEsMC0xLjEyLTEuODUsMy40NSwzLjQ1LDAsMCwwLTEuMjMsMS4yNUE0LjE2LDQuMTYsMCwwLDAsLjg0LDE1LjlhNSw1LDAsMCwwLDIuNTcsM2wxLC41NGExOC42MiwxOC42MiwwLDAsMCwyLDcuMywyMywyMywwLDAsMCwzLDQuNzks'@; put 'MSwxLDAsMCwwLC44LjM4aDMuNjFhLjUyLjUyLDAsMCwwLC40LS43NUwxNCwzMC4zOGExMSwxMSwwLDAsMS0uMzMtMS4xOGMuOTEuMTYsMi4wOC4zMSwyLjg3LjM4YTIwLjA3LDIwLjA3LDAsMCwwLDMuMTIsMGMuMzkuNy43OSwxLjMzLDEuMTUsMS44NWEuOTMuOTMsMCwwLDAsLjc3LjQxaDMu'@; put 'MTFhLjY1LjY1LDAsMCwwLC42MS0uODVjLS4yMy0uNzQtLjUzLTEuNzUtLjcxLTIuMzdhMTUuOSwxNS45LDAsMCwwLDMuNzUtMS43NmMuMTYtLjExLjMyLS4yNi40OC0uMzlhMTMuNzcsMTMuNzcsMCwwLDEtMi40Mi0xLC44LjgsMCwwLDEsLjc0LTEuNDIsMTEuNjQsMTEuNjQsMCwwLDAsMy4x'@; put 'OCwxLjEsMTMuMzEsMTMuMzEsMCwwLDAsMi42OC4xMiwxLDEsMCwwLDAsLjktLjY2bDEuNzMtNC40NEExLDEsMCwwLDAsMzUsMTguODdaTTEzLjc5LDExLjU5YS44Ni44NiwwLDAsMS0uMy4wNS44NS44NSwwLDAsMS0uMy0xLjY0LDEyLjQxLDEyLjQxLDAsMCwxLDYuNjktLjU1Ljg1Ljg1LDAs'@; put 'MSwxLS4zLDEuNjdBMTAuNzUsMTAuNzUsMCwwLDAsMTMuNzksMTEuNTlabTEyLjUyLDYuMTJhMS40NCwxLjQ0LDAsMSwxLDEuNDQtMS40NEExLjQ0LDEuNDQsMCwwLDEsMjYuMzIsMTcuNzJaIi8+JyksaC5DbHJTaGFwZVNob3BwaW5nQ2FydD0oMCxzLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4'@; put 'PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y'@; put 'IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjA4LDUuMzdBMSwxLDAsMCwwLDMyLjMxLDVIMTEuNDlsLjY1LDJIMzFMMjguMzMsMTloLTE1TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5LDE0LjVMOS45NSwyMS40'@; put 'OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDMuMTctMTRBMSwxLDAsMCwwLDMzLjA4LDUuMzdaIiBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAg'@; put 'ICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwLjcxIDcgMjEuODcgNSAxMS40OSA1IDEyLjE0'@; put 'IDcgMjAuNzEgNyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMTUsMTUuNCwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42MmExLDEsMCwx'@; put 'LDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xM2ExLDEsMCwwLDAsMS0u'@; put 'NzhsMS4wOS00LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAs'@; put 'MCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy4zMyIgY3k9'@; put 'IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNTcsN2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDExLjQ5bC42NSwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0t'@; put 'YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVsLS40MiwwTDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUsMjEuNDhsLS4xMy4xM0EyLjY2LDIuNjYsMCww'@; put 'LDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjU3LTYuOTFBNy41MSw3LjUxLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAg'@; put 'ICAgICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh'@; put 'dGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xLDYuMzlBMSwxLDAsMCwwLDMyLjMxLDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0uMTMuMTNBMi42NiwyLjY2'@; put 'LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMy4yLTEzQTEsMSwwLDAsMCwzMy4xLDYuMzlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt'@; put 'c29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI2LjUiIGN5PSIyOS41'@; put 'IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDkuMjFMOC43Niw0LjU3YTEsMSwwLDAsMC0uNjYt'@; put 'LjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJI'@; put 'MjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuMTktNC44NFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMu'@; put 'NjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9'@; put 'IjEzLjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt'@; put 'c29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg5LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0LjQ3TDkuOTUsMjEuNDls'@; put 'LS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwxLjcxLTdBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFz'@; put 'cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAv'@; put 'PicpLGguQ2xyU2hhcGVXYWxsZXQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgzMVY5YTEsMSwwLDAsMC0xLTFINmExLDEsMCwwLDEtMS0uODJWNi44MkExLDEsMCwwLDEsNiw2SDI5LjU4YTEsMSww'@; put 'LDAsMCwwLTJINkEzLDMsMCwwLDAsMyw3YTMuMDgsMy4wOCwwLDAsMCwwLC4zNlYyNy45M0E0LjEsNC4xLDAsMCwwLDcuMTMsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNWgxYTEsMSwwLDAsMCwxLTFWMTZBMSwxLDAsMCwwLDMyLDE1Wk0yOSwzMEg3LjEzQTIuMTEsMi4xMSwwLDAsMSw1LDI3Ljkz'@; put 'VjkuODhBMy4xMSwzLjExLDAsMCwwLDYsMTBIMjl2NUgyMmE1LDUsMCwwLDAsMCwxMGg3Wm0yLTdIMjJhMywzLDAsMCwxLDAtNkgzMVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMy4wMSIgY3k9IjIwIiBy'@; put 'PSIxLjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi45NCwxNEgzMVY5YTEsMSwwLDAsMC0xLTFINkExLDEsMCwwLDEsNSw3SDVWN0ExLDEsMCwwLDEsNiw2SDI5LjZhMSwxLDAsMSwwLDAtMkg2QTIuOTQsMi45NCww'@; put 'LDAsMCwzLDYuODh2MjFBNC4xMyw0LjEzLDAsMCwwLDcuMTUsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNmgxLjk0YS45My45MywwLDAsMCwxLS45MXYtMTBBMS4wOCwxLjA4LDAsMCwwLDMyLjk0LDE0Wk0zMiwyNGwtOC41OCwwYTMuODcsMy44NywwLDAsMS0zLjczLTQsMy44NywzLjg3LDAsMCwx'@; put 'LDMuNzMtNEwzMiwxNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjI0LjA0IiBjeT0iMTkuOTIiIHI9IjEuNSIvPicpLGguQ2xyU2hhcGVTdG9yZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDMwSDE2VjIySDE0djhIOFYyMkg2djhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjIySDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9'@; put 'Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAsMCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiwwLDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwuNDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQuNzIsMCwwLDAsMy0xLjA3'@; put 'LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdBMiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0zMCwxOC4xM0EyLjY4LDIuNjgsMCwwLDEsMjcuODIs'@; put 'MTdMMjcsMTUuODgsMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OCwyMC4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDE1LDE1Ljg4LDE0LjE5LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OCw4LjE4LDE3QTIuNjgsMi42OCwwLDAsMSw2LDE4LjEz'@; put 'YTIuNjQsMi42NCwwLDAsMS0yLS44OFYxNC4xN0w4LjA4LDZIMjcuOTJMMzIsMTQuMTZ2LjY3bDAsMi4zOUEyLjY3LDIuNjcsMCwwLDEsMzAsMTguMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjgsMzBIMTZWMjJI'@; put 'MTR2OEg4VjIySDZ2OGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNzksMTMuMjcsMjkuNzEsNS4xMUEyLDIsMCwwLDAsMjcuOTIsNEg4LjA4QTIs'@; put 'MiwwLDAsMCw2LjI5LDUuMTFMMi4yMSwxMy4yN2EyLDIsMCwwLDAtLjIxLjl2My4wOGEyLDIsMCwwLDAsLjQ2LDEuMjhBNC42Nyw0LjY3LDAsMCwwLDYsMjAuMTNhNC43Miw0LjcyLDAsMCwwLDMtMS4wNyw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0Ljcz'@; put 'LDAsMCwwLDYsMCw0LjcyLDQuNzIsMCwwLDAsNi41My0uNTJBMiwyLDAsMCwwLDM0LDE3LjI2VjE0LjE3QTIsMiwwLDAsMCwzMy43OSwxMy4yN1pNMTUsMTQuNHYxLjUyTDE0LjE4LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OFYxNC40TDExLjU5LDZIMTZabTEyLDEuNDhMMjYu'@; put 'MTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OGwwLDBWMTQuNEwyMCw2aDQuNDVMMjcsMTQuNFoiLz4nKSxoLkNsclNoYXBlRXVybz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ4LDI4'@; put 'LjQ5YTEsMSwwLDAsMC0xLjM4LS4zMkExMiwxMiwwLDAsMSwxMi40NSwyMkgyNC4xNmExLDEsMCwwLDAsMC0ySDExLjkzYTExLjE2LDExLjE2LDAsMCwxLDAtNEgyNC4xNmExLDEsMCwwLDAsMC0ySDEyLjQ1QTEyLDEyLDAsMCwxLDMwLjA2LDcuOGExLDEsMCwwLDAsMS4wNi0xLjdBMTQsMTQs'@; put 'MCwwLDAsMTAuMzQsMTRIMy41NGExLDEsMCwxLDAsMCwySDkuOTFhMTQsMTQsMCwwLDAtLjE2LDIsMTQsMTQsMCwwLDAsLjE2LDJIMy41NGExLDEsMCwxLDAsMCwyaDYuOGExNCwxNCwwLDAsMCwyMC44Myw3Ljg3QTEsMSwwLDAsMCwzMS40OCwyOC40OVoiLz5cbiAgICAgICAgICAgIDxwYXRo'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNDIsMjUuMTZBMTAuODgsMTAuODgsMCwwLDEsOS4yMywyMUg1Ljg0YTEsMSwwLDAsMSwwLTJoM2MwLS4zNS0uMDUtLjcxLS4wNS0xLjA3'@; put 'czAtLjYzLDAtLjkzaC0zYTEsMSwwLDAsMSwwLTJIOS4xOUExMC44NiwxMC44NiwwLDAsMSwyNS4zOCw4LjY5YTEuMjUsMS4yNSwwLDAsMS0xLjMyLDIuMTJBOC4zNiw4LjM2LDAsMCwwLDExLjgyLDE1aDkuMzZhMSwxLDAsMCwxLDAsMkgxMS4zM2E3LjcyLDcuNzIsMCwwLDAsMCwyaDkuODJh'@; put 'MSwxLDAsMCwxLDAsMkgxMS44N2E4LjM2LDguMzYsMCwwLDAsMTIuMjIsNCwxLjI1LDEuMjUsMCwxLDEsMS4zMywyLjEyWiIvPicpLGguQ2xyU2hhcGVEb2xsYXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0y'@; put 'NiwyMS4xNWE2LjkxLDYuOTEsMCwwLDAtNC4zOC0zLjMyQTI2LDI2LDAsMCwwLDE5LDE3LjE5VjguMTJBMTAuMDUsMTAuMDUsMCwwLDEsMjMuODYsMTBhMSwxLDAsMCwwLDEuMzMtMS41QTExLjc1LDExLjc1LDAsMCwwLDE5LDYuMVYzYTEsMSwwLDAsMC0yLDBWNmMtNC40LjEtNi44MywyLjI5'@; put 'LTcuNTcsNC4xOEE1LjU2LDUuNTYsMCwwLDAsMTEuNjYsMTcsMTMuMiwxMy4yLDAsMCwwLDE3LDE4Ljg0VjI4YTEyLjMsMTIuMywwLDAsMS03LjE0LTIuNzRBMSwxLDAsMSwwLDguNDksMjYuNywxNC4wOSwxNC4wOSwwLDAsMCwxNywzMHYzYTEsMSwwLDAsMCwyLDBWMzBjMi44Mi0uMTksNi4w'@; put 'Ny0xLjA5LDcuMy00Ljc2QTUuMzMsNS4zMywwLDAsMCwyNiwyMS4xNVpNMTIuNzksMTUuMzJhMy41NywzLjU3LDAsMCwxLTEuNDktNC4zOUMxMS40MSwxMC42MywxMi41Myw4LjEyLDE3LDh2OC44QTEwLjcsMTAuNywwLDAsMSwxMi43OSwxNS4zMlpNMjQuNCwyNC41NmMtLjcyLDIuMTQtMi4z'@; put 'MiwzLjE3LTUuNCwzLjRWMTkuMjNjLjY0LjE0LDEuMy4zLDIsLjUxYTUsNSwwLDAsMSwzLjE5LDIuMzJBMy4zNCwzLjM0LDAsMCwxLDI0LjQsMjQuNTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxuICAgICAgICAgICAgICAg'@; put 'IGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNjUsMjEuNTljLTEsMy0zLjYxLDMuODQtNS45LDR2MmExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjcuNTlBMTEuNDcsMTEuNDcsMCwwLDEsMTEsMjVhMS4yNSwxLjI1LDAsMSwxLDEuNzEtMS44Myw5LjExLDku'@; put 'MTEsMCwwLDAsNC41NSwxLjk0VjE4LjgzYTkuNjMsOS42MywwLDAsMS0zLjczLTEuNDEsNC44LDQuOCwwLDAsMS0xLjkxLTUuODRjLjU5LTEuNTEsMi40Mi0zLjIzLDUuNjQtMy41MVY2LjI1YTEuMjUsMS4yNSwwLDAsMSwyLjUsMFY4LjExYTkuNjcsOS42NywwLDAsMSw0LjksMkExLjI1LDEu'@; put 'MjUsMCwwLDEsMjMsMTEuOTVhNy4xNCw3LjE0LDAsMCwwLTMuMjQtMS4zMXY2LjEzYy42LjEzLDEuMjQuMjcsMS45MS40OGE1Ljg1LDUuODUsMCwwLDEsMy42OSwyLjgyQTQuNjQsNC42NCwwLDAsMSwyNS42NSwyMy41OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC45MiwxOS42NGMtLjQtLjEyLS43OS0uMjItMS4xNy0uM3Y1Ljc2YzItLjIsMy4wNy0uOSwzLjUzLTIuM2EyLjE1LDIuMTUsMCwwLDAtLjE1LTEuNThBMy40OSwzLjQ5LDAsMCwwLDIwLjkyLDE5LjY0WiIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTEzLjk0LDEyLjQ4YTIuMzEsMi4zMSwwLDAsMCwxLDIuODcsNi41Myw2LjUzLDAsMCwwLDIuMzIuOTJWMTAuNTVDMTUuMTYsMTAuOCwxNC4xOSwxMS44NCwxMy45NCwxMi40OFoiLz4nKSxoLkNsclNoYXBlQ3JlZGl0'@; put 'Q2FyZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMiwwLDEySDRMNCw4Wk00LDI4VjI0SDMydjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzMCIgcng9IjAuOTYiIHJ5PSIwLjk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikgcm90YXRlKDkwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGlu'@; put 'ZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMy'@; put 'LDZabTAsMThINFYyMEgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZUJhbms9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMuNSwxMy41NiwxOCw1LjIzbDE0LjUsOC4zM2ExLDEsMCwwLDAsMS0xLjczTDE4LDIuOTIsMi41LDEx'@; put 'LjgzYTEsMSwwLDEsMCwxLDEuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYz'@; put 'SDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1LjAyIiB5PSIxNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjE1LDExLjU4aDMuMjFMMTguNjUsNy43'@; put 'MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgyOFYxNy42M0gyNlYyNUgx'@; put 'OVYxNy42M0gxN1YyNUgxMFYxNy42M0g4VjI1SDVBMSwxLDAsMCwwLDQsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0iMjYiIGhlaWdodD0iMiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4xNSwxMS41OGgzLjIxTDE4LjY1LDcuNzJhLjguOCwwLDAsMC0uOCwwbC02LjcyLDMuODZoMy4yMWwzLjktMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt'@; put 'LWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjIuNzcsOEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTQsMTMuMjRsLjU2LjMyYTEsMSwwLDAsMCwxLjQ0LTEuMTlBNy40NSw3LjQ1LDAsMCwxLDMxLjk0LDEzLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwx'@; put 'LDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsMTVBMy41MSwzLjUxLDAsMCwxLDIw'@; put 'LDE0SDV2MkgzMVYxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDYsOS43NGwuNjgtMS4xNy0xLjQ5LS44NWEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMu'@; put 'OS0yLjI0LDEuMS42M0MxOS4zOSw5Ljg5LDE5LjQyLDkuODEsMTkuNDYsOS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMDUsNS4yNSwxOCwyLjkyLDIuNSwxMS44M2Ex'@; put 'LDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjEuMDUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNI'@; put 'MzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTMuNSwxMy41Niw1LDEyLjY4VjE2SDMxVjEyLjcxbDEuNDguODVhMSwxLDAsMCwwLDEtMS43M0wxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczWk0xNy44NSw3LjExYS44LjgsMCwwLDEsLjgsMEwyNS4zNywxMUgyMi4xNWwtMy45LTIuMjRMMTQuMzUsMTFIMTEuMTRaIiBj'@; put 'bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNIMjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcuNjNIOFYyNUg1LjE1QTEuMTUsMS4xNSww'@; put 'LDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAsMCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjg1LDI3SDMydi0uODVB'@; put 'MS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYzSDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4xNSwwLDAsMCwzMi44NSwy'@; put 'N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzksMTFIMjIuMTVsLTMuOS0yLjI0TDE0LjM1LDExSDExLjE0bDYuNzItMy44NmEuOC44LDAs'@; put 'MCwxLC44LDBsNSwyLjg3QTcuNDUsNy40NSwwLDAsMSwyMi41LDZjMC0uMTYsMC0uMzIsMC0uNDhMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M0w1LDEyLjY4VjE2SDMxVjEzLjQyQTcuNTMsNy41MywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg'@; put 'Y2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwxMy4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo'@; put 'LTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi44NSwyN0gzMnYtLjg1'@; put 'QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCwwLDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1LDEuMTUsMCwwLDAsMzIuODUs'@; put 'MjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNWEzLjUxLDMuNTEsMCwwLDEtMy01LjI2bC4xNC0uMjQtMS4zNS0uNzhMMTQuMzUsMTFIMTEuMTRsNi43Mi0zLjg2YS44Ljgs'@; put 'MCwwLDEsLjgsMGwxLjc1LDEsMS42NS0yLjg2TDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMNSwxMi42OFYxNkgzMVYxNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y'@; put 'Ni44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFs'@; put 'ZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxoLkNsclNoYXBlRG9sbGFyQmlsbD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCww'@; put 'LDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCw2YTQuMjUsNC4yNSwwLDAsMS0zLjktNEgzMlptMCwxLjYydjQuODNBNS44Nyw1Ljg3LDAsMCwwLDI2LjQ5LDI2aC0xN0E1Ljg3LDUuODcsMCwwLDAsNCwyMC40NFYxNS42QTUuODcsNS44NywwLDAsMCw5LjUxLDEwaDE3QTUuODcsNS44NywwLDAs'@; put 'MCwzMiwxNS42Wk03LjksMTBBNC4yNSw0LjI1LDAsMCwxLDQsMTRWMTBaTTQsMjIuMDZBNC4yNSw0LjI1LDAsMCwxLDcuOSwyNkg0Wk0yOC4xLDI2QTQuMjUsNC4yNSwwLDAsMSwzMiwyMi4wNlYyNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTAuODVjLTMuNDcsMC02LjMsMy4yMS02LjMsNy4xNXMyLjgzLDcuMTUsNi4zLDcuMTUsNi4zLTMuMjEsNi4zLTcuMTVTMjEuNDcsMTAuODUsMTgsMTAuODVabTAsMTIuNjljLTIuNTksMC00LjctMi40OS00LjctNS41NXMyLjExLTUuNTUsNC43LTUuNTUs'@; put 'NC43LDIuNDksNC43LDUuNTVTMjAuNTksMjMuNTUsMTgsMjMuNTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIs'@; put 'MiwwLDAsMCwzMiw4Wk00LDI2VjIxLjE1QTUuMTgsNS4xOCwwLDAsMSw4Ljc5LDI2Wk00LDE0Ljg1VjEwSDguNzlBNS4xOCw1LjE4LDAsMCwxLDQsMTQuODVaTTE4LDI1LjE1Yy0zLjQ3LDAtNi4zLTMuMjEtNi4zLTcuMTVzMi44My03LjE1LDYuMy03LjE1LDYuMywzLjIxLDYuMyw3LjE1UzIx'@; put 'LjQ3LDI1LjE1LDE4LDI1LjE1Wk0zMiwyNkgyNy4yNUE1LjE4LDUuMTgsMCwwLDEsMzIsMjEuMTVabTAtMTEuMTVBNS4xOCw1LjE4LDAsMCwxLDI3LjI1LDEwSDMyWiIvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4'@; put 'IiBjeT0iMTgiIHJ4PSI0IiByeT0iNC43MiIvPicpLGguQ2xyU2hhcGVFQ2hlY2s9KDAscy5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjE1IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAg'@; put 'IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMCIgeT0iMjEiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTM0LDhIMTIuOTNh'@; put 'OC4zNSw4LjM1LDAsMCwxLC43OSwySDMzVjI2SDNWMTkuOWE3LjgzLDcuODMsMCwwLDEtMi0xLjM0VjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTQiIGQ9Ik02LjU3LDE4LjY4YTYuMTcsNi4xNywwLDAsMCw0LjMyLTEuNTksMS4yLDEuMiwwLDAsMCwuMzYtLjg0LDEuMDgsMS4wOCwwLDAsMC0xLjA5LTEuMTEsMSwxLDAsMCwwLS43MS4yNSw0LjMyLDQuMzIsMCwwLDEtMi44NCwxLDMuMzUsMy4zNSwwLDAsMS0zLjQ2LTNoNy41'@; put 'M0ExLjI5LDEuMjksMCwwLDAsMTIsMTIuMDYsNS42OCw1LjY4LDAsMCwwLDYuMjcsNi4xNCw2LDYsMCwwLDAsLjQsMTIuNHYwQTYsNiwwLDAsMCw2LjU3LDE4LjY4Wk02LjI1LDguMzljMS44MiwwLDIuODcsMS4zOSwzLDMuMTZIMy4xM0MzLjM4LDkuNjksNC41Niw4LjM5LDYuMjUsOC4zOVoi'@; put 'Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCw4SDEyLjkxYTguNjEsOC42MSwwLDAsMSwxLjIsNC4zOSw4LDgsMCwwLDEtNy43OCw4LjI3QTcuNTEsNy41MSwwLDAsMSwxLDE4LjQxVjI3YTEsMSwwLDAsMCwxLDFIMzRh'@; put 'MSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4Wk0zMSwyM0gyMFYyMUgzMVptMC01SDE2VjE2SDMxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYuNTcsMTguNjhBNiw2LDAsMCwxLC40LDEyLjQ0djBBNiw2LDAs'@; put 'MCwxLDYuMjcsNi4xNCw1LjY4LDUuNjgsMCwwLDEsMTIsMTIuMDZhMS4yOSwxLjI5LDAsMCwxLTEuMywxLjMySDMuMTVhMy4zNSwzLjM1LDAsMCwwLDMuNDYsMyw0LjMyLDQuMzIsMCwwLDAsMi44NC0xLDEsMSwwLDAsMSwuNzEtLjI1LDEuMDgsMS4wOCwwLDAsMSwxLjA5LDEuMTEsMS4yLDEu'@; put 'MiwwLDAsMS0uMzYuODRBNi4xNyw2LjE3LDAsMCwxLDYuNTcsMTguNjhaTTkuMywxMS41NWMtLjE4LTEuNzctMS4yMy0zLjE2LTMtMy4xNnMtMi44NywxLjMtMy4xMiwzLjE2WiIvPicpLGguQ2xyU2hhcGVQb3VuZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjksMzBIMTMuNEE4LjQ1LDguNDUsMCwwLDAsMTUsMjQuNjVWMjFoNC4zMWExLDEsMCwwLDAsMC0ySDE1VjExLjMxQTUuMjQsNS4yNCwwLDAsMSwyMC4yMSw2LDUuMTksNS4xOSwwLDAsMSwyNCw3LjczYTEsMSwwLDAsMCwxLjQ4LTEuMzVB'@; put 'Ny4xOSw3LjE5LDAsMCwwLDEzLDExLjMxVjE5SDguNzJhMSwxLDAsMSwwLDAsMkgxM3YzLjY1QzEzLDI5LjM4LDEwLjEyLDMwLDEwLDMwYTEsMSwwLDAsMCwuMTcsMkgyNy45YTEsMSwwLDEsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LjUsMjUuOTJIMTEuNzRhMS4yNSwxLjI1LDAsMCwxLS4yMi0yLjQ4Yy4xNSwwLDEuNzItLjQ5LDEuNzItMy41NFYxOWgtMi41YTEsMSwwLDAsMSwwLTJoMi41VjExLjg4YTUuODUsNS44NSww'@; put 'LDAsMSw1LjcyLTYsNS42Myw1LjYzLDAsMCwxLDQuMjEsMS45NEExLjI1LDEuMjUsMCwxLDEsMjEuMyw5LjUxLDMuMDgsMy4wOCwwLDAsMCwxOSw4LjQyYTMuMzUsMy4zNSwwLDAsMC0zLjIyLDMuNDZWMTdoM2ExLDEsMCwwLDEsMCwyaC0zdjIuOUE3LjY1LDcuNjUsMCwwLDEsMTUsMjUuNDJI'@; put 'MjQuNWExLjI1LDEuMjUsMCwwLDEsMCwyLjVaIi8+JyksaC5DbHJTaGFwZVJ1cGVlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsOEgyNC4xNEE3LjUyLDcuNTIsMCwwLDAsMjIuNiw2SDI4YTEsMSwwLDAs'@; put 'MCwwLTJIMTBhMSwxLDAsMCwwLDAsMmg3LjU1YTUuNDIsNS40MiwwLDAsMSw0LjIsMkgxMGExLDEsMCwwLDAsMCwySDIyLjc5QTUuNTQsNS41NCwwLDAsMSwyMywxMS41MSw1LjQ4LDUuNDgsMCwwLDEsMTcuNTUsMTdIMTEuMTRhMSwxLDAsMCwwLS43NSwxLjY2TDIyLjA2LDMyYTEsMSwwLDEs'@; put 'MCwxLjUtMS4zMkwxMy4zNSwxOWg0LjIxYTcuNTEsNy41MSwwLDAsMCw3LjMtOUgyOGExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAs'@; put 'MTgsMlptNS44OCw5SDI2YTEsMSwwLDAsMSwwLDJIMjQuMjZjMCwuMDYsMCwuMTIsMCwuMTlhNi4wOSw2LjA5LDAsMCwxLTYsNi4yaC0ybDYuODIsOC4wNmExLjI1LDEuMjUsMCwwLDEtMS45MSwxLjYyTDEyLjYzLDE4Ljk0YTEuMjUsMS4yNSwwLDAsMSwxLTIuMDZoNC43MWEzLjU5LDMuNTks'@; put 'MCwwLDAsMy40OC0zLjY5YzAtLjA3LDAtLjEzLDAtLjJoLTlhMSwxLDAsMCwxLDAtMmg4LjMyYTMuNDEsMy40MSwwLDAsMC0yLjc4LTEuNUgxMi43NWExLjI1LDEuMjUsMCwwLDEsMC0yLjVIMjZhMSwxLDAsMCwxLDAsMkgyMi42OEE2LjIzLDYuMjMsMCwwLDEsMjMuODgsMTFaIi8+JyksaC5D'@; put 'bHJTaGFwZVdvbj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE4SDI4Ljc1bC41LTJIMzNhMSwxLDAsMCwwLDAtMkgyOS43NGwyLjE3LTguNzZBMSwxLDAsMCwwLDMwLDQuNzZMMjcuNjgsMTRIMjEuMzFM'@; put 'MTksNC43NmExLDEsMCwwLDAtMS45NCwwTDE0Ljc5LDE0SDguNDJMNi4xMyw0Ljc2YTEsMSwwLDAsMC0xLjk0LjQ4TDYuMzYsMTRIM2ExLDEsMCwwLDAsMCwySDYuODVsLjUsMkgzYTEsMSwwLDAsMCwwLDJINy44NGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMTUuMzYsMjBoNS4zOGwy'@; put 'Ljc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMjguMjUsMjBIMzNhMSwxLDAsMCwwLDAtMlptLTUuODItMi0uNSwySDIyLjNsLS41LTJaTTE4LDkuMTYsMTkuMjUsMTRoLTIuNFpNOC45MSwxNmg1LjM4bC0uNSwySDkuNDFaTTExLjYsMjYuODQsOS45MSwyMEgxMy4zWk0xNS44NSwxOGwuNS0y'@; put 'aDMuMzlsLjUsMlptOC42NCw4Ljg0TDIyLjgsMjBoMy4zOVoiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHBvaW50cz0iMTcuNzQgMTYgMTcuMjIgMTggMTguODUgMTggMTguMzIgMTYgMTcuNzQgMTYiLz5cbiAgICAgICAg'@; put 'ICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHBvaW50cz0iMTEuOTQgMTggMTQuNjMgMTggMTUuMTYgMTYgMTEuNDEgMTYgMTEuOTQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo'@; put 'LTMiIHBvaW50cz0iMTMuMjkgMjMuMSAxNC4xIDIwIDEyLjQ3IDIwIDEzLjI5IDIzLjEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHBvaW50cz0iMjEuNDQgMTggMjQuMTMgMTggMjQuNjYgMTYgMjAuOTEgMTYgMjEuNDQg'@; put 'MTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIHBvaW50cz0iMjIuNzggMjMuMSAyMy42IDIwIDIxLjk3IDIwIDIyLjc4IDIzLjEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTYiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LDIwSDI2LjE5TDI0LDI4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMMTkuMzgsMjBIMTYuNjlsLTIuMTksOC4zMmExLjI1LDEuMjUsMCwwLDEtMi40MiwwTDkuODgsMjBIN2ExLDEsMCww'@; put 'LDEsMC0ySDkuMzVsLS41My0ySDdhMSwxLDAsMCwxLDAtMkg4LjNsLTEtMy42OGExLjI1LDEuMjUsMCwwLDEsMi40Mi0uNjRMMTAuODgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40MiwwTDIwLjM4LDE0aDQuOGwxLjE0LTQuMzJhMS4yNSwxLjI1LDAsMCwxLDIuNDIuNjRs'@; put 'LTEsMy42OEgyOWExLDEsMCwwLDEsMCwySDI3LjI0bC0uNTMsMkgyOWExLDEsMCwwLDEsMCwyWiIvPicpLGguQ2xyU2hhcGVZZW49KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4zNCw0LjU1YTEsMSwwLDEs'@; put 'MC0xLjY3LTEuMUwxOCwxOC4yMyw4LjMzLDMuNDVhMSwxLDAsMCwwLTEuNjcsMS4xTDE3LDIwLjM1VjIyLjJIMTJhLjguOCwwLDAsMCwwLDEuNmg1djIuNEgxMmEuOC44LDAsMCwwLDAsMS42aDVWMzJhMSwxLDAsMCwwLDIsMFYyNy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMy44aDVhLjgu'@; put 'OCwwLDAsMCwwLTEuNkgxOVYyMC4zNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTguMDcsNy45MUwxOS43NCwyMEgyMmExLDEsMCwwLDEsMCwy'@; put 'SDE5LjI1djJIMjJhMSwxLDAsMCwxLDAsMkgxOS4yNXYyLjc1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNkgxNGExLDEsMCwxLDEsMC0yaDIuNzVWMjJIMTRhMSwxLDAsMSwxLDAtMmgyLjI2TDkuOTMsOS45MWExLjI1LDEuMjUsMCwxLDEsMi4xMi0xLjMzTDE4LDE4LjA4bDUuOTUtOS40OWEx'@; put 'LjI1LDEuMjUsMCwxLDEsMi4xMiwxLjMzWiIvPicpLGguQ2xyU2hhcGVCaXRjb2luPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC4xMSwxNi44OEE1LjQ5LDUuNDksMCwwLDAsMjEsN1Y0YTEsMSwwLDAsMC0yLDBWN0gxNlY0YTEsMSwwLDAsMC0yLDBWN0gxMWExLDEsMCwwLDAtMSwx'@; put 'VjI4YTEsMSwwLDAsMCwxLDFoM3YzYTEsMSwwLDAsMCwyLDBWMjloM3YzYTEsMSwwLDAsMCwyLDBWMjloLjA4QTYuMDcsNi4wNywwLDAsMCwyNywyMi44MXYtLjYyQTYuMjUsNi4yNSwwLDAsMCwyNC4xMSwxNi44OFpNMTIsOWg4LjY5YTMuNTksMy41OSwwLDAsMSwzLjQzLDIuMzZBMy41MSwz'@; put 'LjUxLDAsMCwxLDIwLjc5LDE2SDEyWk0yNSwyMi44MUE0LjA4LDQuMDgsMCwwLDEsMjEuMDYsMjdIMTJWMThoOS4wNkE0LjA4LDQuMDgsMCwwLDEsMjUsMjIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y'@; put 'MS4xOCwxOC40N0gxNC41djZoNi42OGEyLjcsMi43LDAsMCwwLDIuNjMtMi43N3YtLjQ4QTIuNzEsMi43MSwwLDAsMCwyMS4xOCwxOC40N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMTMuNzVhMi4yNCwyLjI0'@; put 'LDAsMCwwLTIuMjMtMi4yNUgxNC41VjE2aDYuM0EyLjIyLDIuMjIsMCwwLDAsMjMsMTMuNzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOC4z'@; put 'MSwxOS43M0E1LjIyLDUuMjIsMCwwLDEsMjEuMTgsMjdIMjF2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTd2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTMuMjVBMS4yNSwxLjI1LDAsMCwxLDEyLDI1Ljc1VjE3LjIzaDB2LTdBMS4yNSwxLjI1LDAsMCwxLDEzLjI1LDlIMTVWNy4wN2ExLDEsMCwwLDEs'@; put 'MiwwVjloMlY3LjA3YTEsMSwwLDAsMSwyLDBWOWE0LjcyLDQuNzIsMCwwLDEsMy4yLDgsNS4zMSw1LjMxLDAsMCwxLDIuMTEsNC4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksaC5DbHJTaGFwZUNvaW5CYWc9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGgg'@; put 'ZD0iTTIxLjYsMjlhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjIuNTQsMjRoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIsMzJIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNywzMmgtN2ExLDEs'@; put 'MCwwLDAsMCwyaDdhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy43LDI4aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTUiIC8+PHBhdGggZD0iTTMzLjc0LDI2YTI4LDI4LDAsMCwwLTIuODItMTAuMTJBMjAuMjQsMjAuMjQsMCwwLDAsMjQuNiw4LjcxTDI3LDMuNDJhMSwxLDAsMCwwLS4wNy0xQTEsMSwwLDAsMCwyNi4xMywySDkuOGExLDEsMCwwLDAtLjkxLDEuNDJsMi40NSw1LjMxYTIwLjMzLDIwLjMzLDAs'@; put 'MCwwLTYuMjgsNy4xNWMtMi4xNSw0LTIuODIsOC44OS0zLDEyLjI4YTMuNiwzLjYsMCwwLDAsMSwyLjcxQTMuNzksMy43OSwwLDAsMCw1LjgsMzEuOTRIMTJWMzBINS43MmExLjY4LDEuNjgsMCwwLDEtMS4yMS0uNTIsMS42MiwxLjYyLDAsMCwxLS40NS0xLjIzYy4xNC0yLjYxLjY5LTcuNTgs'@; put 'Mi43Ni0xMS40NUExOCwxOCwwLDAsMSwxMy4wOCwxMGgxYTMwLjgxLDMwLjgxLDAsMCwwLTEuODcsMi45MiwyMi43OCwyMi43OCwwLDAsMC0xLjQ3LDMuMzRsMS4zNy45MmEyNCwyNCwwLDAsMSwxLjQ5LTMuNDdBMjkuMSwyOS4xLDAsMCwxLDE2LjA1LDEwaDFhMjEuNDUsMjEuNDUsMCwwLDEs'@; put 'MS40MSw1LDIyLjU0LDIyLjU0LDAsMCwxLC4zMiwzLjg2bDEuNTgtMS4xMWEyNC4xNSwyNC4xNSwwLDAsMC0uMzItM0EyNC44MiwyNC44MiwwLDAsMCwxOC43NiwxMGguNzhsLjkxLTJIMTMuMjFMMTEuMzYsNEgyNC41N2wtMi41LDUuNDdhOS45Myw5LjkzLDAsMCwxLDEuMjMuNzgsMTguNjMs'@; put 'MTguNjMsMCwwLDEsNS44Niw2LjU3QTI2LjU5LDI2LjU5LDAsMCwxLDMxLjczLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgPHBhdGggZD0iTTI0Ljg5LDI2aDcuODZjLS42Ni04LjcxLTQuNDEtMTQuMTItOS4yMi0xNy4zMkwyNS43Miwz'@; put 'LjlhMSwxLDAsMCwwLS45MS0xLjRIMTEuMWExLDEsMCwwLDAtLjkxLDEuNGwxLjIsMi42SDIxLjUxbC0uOSwySDE4Ljc2QTI0LjksMjQuOSwwLDAsMSwyMCwxMy4xOWEyNC40OSwyNC40OSwwLDAsMSwuMzIsM2wtMS41OCwxLjExYTIyLjU0LDIyLjU0LDAsMCwwLS4zMi0zLjg2QTIxLjc0LDIx'@; put 'Ljc0LDAsMCwwLDE3LDguNWgtMWEyOC4yMiwyOC4yMiwwLDAsMC0yLjQ4LDMuNywyMy45MSwyMy45MSwwLDAsMC0xLjQ5LDMuNDZsLTEuMzctLjkxYTIyLjc4LDIyLjc4LDAsMCwxLDEuNDctMy4zNEEzMC44MSwzMC44MSwwLDAsMSwxNC4wNSw4LjVIMTIuM2wuMDguMTdDNy4wOCwxMi4yLDMu'@; put 'MDUsMTguNCwzLjA1LDI4Ljc1QTEuNjUsMS42NSwwLDAsMCw0LjYxLDMwLjVoOEEyLjY3LDIuNjcsMCwwLDEsMTQuMjEsMjZhMi42NywyLjY3LDAsMCwxLS4zNy0xLjM0LDIuNywyLjcsMCwwLDEsMi43LTIuN2g2YTIuNywyLjcsMCwwLDEsMi43LDIuN0EyLjYzLDIuNjMsMCwwLDEsMjQuODks'@; put 'MjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS42LDI4LjVhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjguNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBh'@; put 'dGggZD0iTTIyLjU0LDIzLjVoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwzMS41SDE2YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlk'@; put 'IGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuNywzMS41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNywyNy41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCww'@; put 'LDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxoLkNsclNoYXBlUGVzbz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTMuMkgyNy44OUE2LjgxLDYuODEsMCwwLDAsMjgsMTJhNy44NSw3Ljg1LDAsMCwwLS4xLTEuMTloMi45M2EuOC44'@; put 'LDAsMCwwLDAtMS42SDI3LjQ2QTguNDQsOC40NCwwLDAsMCwxOS41Nyw0SDExYTEsMSwwLDAsMC0xLDFWOS4ySDdhLjguOCwwLDAsMCwwLDEuNmgzdjIuNEg3YS44LjgsMCwwLDAsMCwxLjZoM1YzMWExLDEsMCwwLDAsMiwwVjIwaDcuNTdhOC40NSw4LjQ1LDAsMCwwLDcuODktNS4ySDMxYS44'@; put 'LjgsMCwwLDAsMC0xLjZaTTEyLDZoNy41N2E2LjUxLDYuNTEsMCwwLDEsNS42OCwzLjJIMTJabTAsNC44SDI1Ljg3YTUuNiw1LjYsMCwwLDEsMCwyLjRIMTJaTTE5LjU3LDE4SDEyVjE0LjhIMjUuMjVBNi41MSw2LjUxLDAsMCwxLDE5LjU3LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDEzLjhWMTZoOS40NWE1LjI2LDUuMjYsMCwwLDAsLjA4LS44OSw0LjcyLDQuNzIsMCwwLDAtLjItMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDE5LjdoNS4x'@; put 'OWE0LjI4LDQuMjgsMCwwLDAsMy41LTEuOUgxNC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LjM3LDEwLjUxSDE0LjE4VjEyaDguMzdBNC4yMSw0LjIxLDAsMCwwLDE5LjM3LDEwLjUxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p'@; put 'LXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNjcsMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxNy42NywyWm0xMC41LDE1LjhIMjUuN2E2Ljg3LDYuODcsMCwwLDEtNi4zMyw0LjRIMTQuMTh2Ni41NGExLjI1LDEuMjUsMCwxLDEtMi41LDBWMTcuOEg4Ljc2YS45LjksMCwx'@; put 'LDEsMC0xLjhoMi45MlYxMy44SDguNzZhLjkuOSwwLDEsMSwwLTEuOGgyLjkyVjkuMjZBMS4yNSwxLjI1LDAsMCwxLDEyLjkzLDhoNi40NGE2Ljg0LDYuODQsMCwwLDEsNi4xNSw0aDIuNjVhLjkuOSwwLDAsMSwwLDEuOEgyNi4wOWE2LjkxLDYuOTEsMCwwLDEsLjEyLDEuMyw2LjgsNi44LDAs'@; put 'MCwxLS4wNi45aDJhLjkuOSwwLDAsMSwwLDEuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksaC5DbHJTaGFwZVJ1YmxlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC41NywyMEE4LjIzLDguMjMsMCwwLDAsMjksMTJhOC4yMyw4LjIzLDAsMCww'@; put 'LTguNDMtOEgxMmExLDEsMCwwLDAtMSwxVjE4SDlhMSwxLDAsMCwwLDAsMmgydjJIOWExLDEsMCwwLDAsMCwyaDJ2N2ExLDEsMCwwLDAsMiwwVjI0aDlhMSwxLDAsMCwwLDAtMkgxM1YyMFpNMTMsNmg3LjU3QTYuMjQsNi4yNCwwLDAsMSwyNywxMmE2LjIzLDYuMjMsMCwwLDEtNi40Myw2SDEz'@; put 'WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIwLjc1LDkuMjVIMTV2OC44MWg1Ljc5YTQuNjYsNC42NiwwLDAsMCw0Ljg2LTQuNEE0LjY1LDQuNjUsMCwwLDAsMjAuNzUsOS4yNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMi43NSwxOC41NkgxNVYyMmg4LjI5YTEsMSwwLDAsMSwwLDJIMTV2NWExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjRIMTEuMjVhMSwxLDAsMCwxLDAtMmgxLjIxVjIwLjU2SDExLjI1'@; put 'YTEuMjUsMS4yNSwwLDAsMSwwLTIuNWgxLjIxVjhhMS4yNSwxLjI1LDAsMCwxLDEuMjUtMS4yNWg3YTcuMTQsNy4xNCwwLDAsMSw3LjM2LDYuOUE3LjE1LDcuMTUsMCwwLDEsMjAuNzUsMjAuNTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGguQ2xyU2hh'@; put 'cGVFbXBsb3llZUdyb3VwPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTguNDIsNi45MVoi'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCww'@; put 'LDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS45MSwxNy42NWEyMC42LDIwLjYsMCwwLDAtMTMsMkExLjc3LDEuNzcsMCwwLDAsOCwyMS4yNXYzLjU2YTEsMSwwLDAsMCwyLDBWMjEuMzhhMTguOTIsMTgu'@; put 'OTIsMCwwLDEsMTItMS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMywyMkgyNi4zVjIwLjUyYTEsMSwwLDAsMC0yLDBWMjJIMTdhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWMjNB'@; put 'MSwxLDAsMCwwLDMzLDIyWk0zMiwzMkgxOFYyNGg2LjN2LjQxYTEsMSwwLDAsMCwyLDBWMjRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIyMS44MSIgeT0iMjcuNDIiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTEwLjg0LDEyLjI0YTE4LDE4LDAsMCwwLTcuOTUsMkExLjY3LDEuNjcsMCwwLDAsMiwxNS43MXYzLjFhMSwxLDAsMCwwLDIsMHYtMi45YTE2LDE2LDAsMCwxLDcuNTgtMS42N0E3LjI4LDcuMjgsMCww'@; put 'LDEsMTAuODQsMTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzMuMTEsMTQuMjNhMTcuOCwxNy44LDAsMCwwLTcuMTItMiw3LjQ2LDcuNDYsMCwwLDEtLjczLDJBMTUuODksMTUuODksMCwwLDEsMzIsMTUuOTF2Mi45YTEs'@; put 'MSwwLDEsMCwyLDB2LTMuMUExLjY3LDEuNjcsMCwwLDAsMzMuMTEsMTQuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cGF0aCBkPSJNMTAuNjYsMTAuNjFjMC0uMjMsMC0uNDUsMC0uNjdhMy4wNywzLjA3LDAsMCwxLC41NC02LjExLDMuMTUs'@; put 'My4xNSwwLDAsMSwyLjIuODksOC4xNiw4LjE2LDAsMCwxLDEuNy0xLjA4LDUuMTMsNS4xMywwLDAsMC05LDMuMjcsNS4xLDUuMSwwLDAsMCw0LjcsNUE3LjQyLDcuNDIsMCwwLDEsMTAuNjYsMTAuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIvPlxuICA8'@; put 'cGF0aCBkPSJNMjQuNzcsMS44M2E1LjE3LDUuMTcsMCwwLDAtMy42OSwxLjU1LDcuODcsNy44NywwLDAsMSwxLjksMSwzLjE0LDMuMTQsMCwwLDEsNC45MywyLjUyLDMuMDksMy4wOSwwLDAsMS0xLjc5LDIuNzcsNy4xNCw3LjE0LDAsMCwxLC4wNi45Myw3Ljg4LDcuODgsMCwwLDEtLjEsMS4y'@; put 'LDUuMSw1LjEsMCwwLDAsMy44My00LjlBNS4xMiw1LjEyLDAsMCwwLDI0Ljc3LDEuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICBcbiAgPGVsbGlwc2UgY3g9IjE4IiBjeT0iMTEuMjgiIHJ4PSI0Ljc2IiByeT0iNC43IiBjbGFzcz0iY2xyLWkt'@; put 'c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xMC43OCwxMS43NWMuMTYsMCwuMzIsMCwuNDgsMCwwLS4xNSwwLS4yOCwwLS40M2E2LjcsNi43LDAsMCwxLDMuNzUtNiw0LjYyLDQuNjIsMCwxLDAtNC4yMSw2LjQ2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjQuNzYsMTEuMjhjMCwuMTUsMCwuMjgsMCwuNDMuMTYsMCwuMzIsMCwuNDgsMEE0LjU4LDQuNTgsMCwxLDAsMjEsNS4yOSw2LjcsNi43LDAsMCwxLDI0Ljc2LDExLjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIv'@; put 'PlxuICA8cGF0aCBkPSJNMjIuMjksMTYuNDVhMjEuNDUsMjEuNDUsMCwwLDEsNS43MSwyLDIuNzEsMi43MSwwLDAsMSwuNjguNTNIMzRWMTUuNTZhLjcyLjcyLDAsMCwwLS4zOC0uNjQsMTgsMTgsMCwwLDAtOC40LTIuMDVsLS42NiwwQTYuNjYsNi42NiwwLDAsMSwyMi4yOSwxNi40NVoiIGNs'@; put 'YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTYuNTMsMjAuOTJBMi43NiwyLjc2LDAsMCwxLDgsMTguNDdhMjEuNDUsMjEuNDUsMCwwLDEsNS43MS0yLDYuNjYsNi42NiwwLDAsMS0yLjI3LTMuNTVsLS42NiwwYTE4LDE4LDAsMCwwLTguNCwyLjA1'@; put 'LjcyLjcyLDAsMCwwLS4zOC42NFYyMkg2LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICA8cmVjdCB4PSIyMS40NiIgeT0iMjYuNjkiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIv'@; put 'PlxuICA8cGF0aCBkPSJNMzIuODEsMjEuMjZIMjUuOTR2LTFhMSwxLDAsMCwwLTIsMHYxSDIyVjE4LjQzQTIwLjE3LDIwLjE3LDAsMCwwLDE4LDE4YTE5LjI3LDE5LjI3LDAsMCwwLTkuMDYsMi4yMi43Ni43NiwwLDAsMC0uNDEuNjh2NS42MWg3LjExdjYuMDlhMSwxLDAsMCwwLDEsMUgzMi44'@; put 'MWExLDEsMCwwLDAsMS0xVjIyLjI2QTEsMSwwLDAsMCwzMi44MSwyMS4yNlptLTEsMTAuMzZIMTcuNjRWMjMuMjZoNi4zdi45MWExLDEsMCwwLDAsMiwwdi0uOTFoNS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciLz4nKSxoLkNsclNoYXBlRW1wbG95ZWU9KDAs'@; put 'cy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LjQzLDE2LjY5YTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE2LjQzLDE2LjY5Wm0wLTExLjkyYTUsNSwwLDEsMCw1LDVBNSw1LDAsMCwwLDE2LjQzLDQuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxu'@; put 'ICA8cGF0aCBkPSJNMjIsMTcuOUEyNS40MSwyNS40MSwwLDAsMCw1Ljg4LDE5LjU3YTQuMDYsNC4wNiwwLDAsMC0yLjMxLDMuNjhWMjkuMmExLDEsMCwxLDAsMiwwVjIzLjI1YTIsMiwwLDAsMSwxLjE2LTEuODYsMjIuOTEsMjIuOTEsMCwwLDEsOS43LTIuMTEsMjMuNTgsMjMuNTgsMCwwLDEs'@; put 'NS41Ny42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIyLjE0IiB5PSIyNy40MSIgd2lkdGg9IjYuMTQiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBk'@; put 'PSJNMzMuMTcsMjEuNDdIMjh2Mmg0LjE3djguMzdIMThWMjMuNDdoNi4zdi40MmExLDEsMCwwLDAsMiwwVjIwYTEsMSwwLDAsMC0yLDB2MS40N0gxN2ExLDEsMCwwLDAtMSwxVjMyLjg0YTEsMSwwLDAsMCwxLDFIMzMuMTdhMSwxLDAsMCwwLDEtMVYyMi40N0ExLDEsMCwwLDAsMzMuMTcsMjEu'@; put 'NDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICBcbiAgPGNpcmNsZSBjeD0iMTYuODYiIGN5PSI5LjczIiByPSI2LjQ2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIxIiB5PSIyOCIgd2lkdGg9'@; put 'IjciIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xNSwzMHYzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM2ExLDEsMCwwLDAtMS0xSDI2VjIwLjUzYTEsMSwwLDAsMC0yLDBWMjJIMjJWMTguNDJBMzIu'@; put 'MTIsMzIuMTIsMCwwLDAsMTYuODYsMThhMjYsMjYsMCwwLDAtMTEsMi4zOSwzLjI4LDMuMjgsMCwwLDAtMS44OCwzVjMwWm0xNywySDE3VjI0aDd2LjQyYTEsMSwwLDAsMCwyLDBWMjRoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxoLkNsclNoYXBlRmFj'@; put 'dG9yeT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNDcsNy4zN2ExLDEsMCwwLDAtMSwuMDZMMjMsMTMuNzdWOC4yNmExLDEsMCwwLDAtMS42NC0uNzdMMTMuNDgsMTRIMTBWNC42MmExLDEsMCwwLDAtLjc4LTFsLTQtLjlhMSwxLDAsMCwwLS44NS4yQTEsMSwwLDAsMCw0LDMuNzNW'@; put 'MTRIM2ExLDEsMCwwLDAtMSwxVjMxYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY4LjI2QTEsMSwwLDAsMCwzMy40Nyw3LjM3Wk02LDVsMiwuNDRWMTRINlpNMzIsMzBINFYxNmg5LjgzYTEsMSwwLDAsMCwuNjQtLjIzTDIxLDEwLjM3djUuMjhhMSwxLDAsMCwwLDEuNTYuODNMMzIs'@; put 'MTAuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI2IiB5PSIxNy45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iNiIgeT0iMjEu'@; put 'OTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjYiIHk9IjI1Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8'@; put 'cmVjdCB4PSIxOSIgeT0iMTguOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTYiLz5cbiAgPHJlY3QgeD0iMjMiIHk9IjE4Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSIyMyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjI3IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgPHJlY3QgeD0iMjciIHk9IjI0Ljk5IiB3aWR0aD0iMiIgaGVp'@; put 'Z2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zMi40NSw4LjQ0LDIyLDE1LjNWOS41MWExLDEsMCwwLDAtMS42My0uNzhMMTQuMDcsMTRIMTBWNC4wNkw0LDIuNzFWMTRIMlYzMWExLDEsMCwwLDAsMSwxSDMzYTEs'@; put 'MSwwLDAsMCwxLTFWOS4yN0ExLDEsMCwwLDAsMzIuNDUsOC40NFpNMTQsMjlINlYyN2g4Wm0wLTRINlYyM2g4Wm0wLTRINlYxOWg4Wm04LDhIMjBWMjZoMlptMC02SDIwVjIwaDJabTQsNkgyNFYyNmgyWm0wLTZIMjRWMjBoMlptNCw2SDI4VjI2aDJabTAtNkgyOFYyMGgyWiIgY2xhc3M9ImNs'@; put 'ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGguQ29tbWVyY2VTaGFwZXM9e2NhbGN1bGF0b3I6aC5DbHJTaGFwZUNhbGN1bGF0b3IsInBpZ2d5LWJhbmsiOmguQ2xyU2hhcGVQaWdneUJhbmssInNob3BwaW5nLWJhZyI6aC5DbHJTaGFwZVNob3BwaW5nQmFnLCJzaG9wcGluZy1j'@; put 'YXJ0IjpoLkNsclNoYXBlU2hvcHBpbmdDYXJ0LHdhbGxldDpoLkNsclNoYXBlV2FsbGV0LHN0b3JlOmguQ2xyU2hhcGVTdG9yZSxldXJvOmguQ2xyU2hhcGVFdXJvLGRvbGxhcjpoLkNsclNoYXBlRG9sbGFyLHBlc286aC5DbHJTaGFwZVBlc28sImNyZWRpdC1jYXJkIjpoLkNsclNoYXBlQ3Jl'@; put 'ZGl0Q2FyZCxiYW5rOmguQ2xyU2hhcGVCYW5rLCJkb2xsYXItYmlsbCI6aC5DbHJTaGFwZURvbGxhckJpbGwsImUtY2hlY2siOmguQ2xyU2hhcGVFQ2hlY2sscG91bmQ6aC5DbHJTaGFwZVBvdW5kLHJ1cGVlOmguQ2xyU2hhcGVSdXBlZSx3b246aC5DbHJTaGFwZVdvbix5ZW46aC5DbHJTaGFw'@; put 'ZVllbixiaXRjb2luOmguQ2xyU2hhcGVCaXRjb2luLHJ1YmxlOmguQ2xyU2hhcGVSdWJsZSwiY29pbi1iYWciOmguQ2xyU2hhcGVDb2luQmFnLCJlbXBsb3llZS1ncm91cCI6aC5DbHJTaGFwZUVtcGxveWVlR3JvdXAsZW1wbG95ZWU6aC5DbHJTaGFwZUVtcGxveWVlLGZhY3Rvcnk6aC5DbHJT'@; put 'aGFwZUZhY3Rvcnl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvbW1lcmNlU2hhcGVzLCJzYXZpbmdzIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29tbWVyY2VTaGFwZXNbInBpZ2d5LWJhbmsiXSkpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJp'@; put 'dHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChoLkNvbW1lcmNlU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAg'@; put 'ICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyAqKiohCiAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0'@; put 'aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGguQ29yZVNoYXBlcz1oLkNsclNoYXBlQXJyb3c9aC5DbHJTaGFwZVN0ZXBGb3J3YXJkMj1oLkNsclNoYXBlRXllSGlkZT1oLkNsclNoYXBlRXllPWguQ2xyU2hh'@; put 'cGVFdmVudD1oLkNsclNoYXBlQ2FsZW5kYXI9aC5DbHJTaGFwZUFuZ2xlRG91YmxlPWguQ2xyU2hhcGVWaWV3Q29sdW1ucz1oLkNsclNoYXBlU2VhcmNoPWguQ2xyU2hhcGVWbUJ1Zz1oLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT1oLkNsclNoYXBlRmlsdGVyR3JpZD1oLkNsclNoYXBlRWxs'@; put 'aXBzaXNWZXJ0aWNhbD1oLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsPWguQ2xyU2hhcGVDbG91ZD1oLkNsclNoYXBlSW1hZ2U9aC5DbHJTaGFwZUJlbGw9aC5DbHJTaGFwZUZvbGRlck9wZW49aC5DbHJTaGFwZUZvbGRlcj1oLkNsclNoYXBlQW5nbGU9aC5DbHJTaGFwZVVzZXI9aC5DbHJT'@; put 'aGFwZUJhcnM9aC5DbHJTaGFwZUhlbHBJbmZvPWguQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9aC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9aC5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZD1oLkNsclNoYXBlSW5mb1N0YW5kYXJkPWguQ2xyU2hhcGVJbmZvQ2lyY2xlPWguQ2xyU2hhcGVDaGVja0Np'@; put 'cmNsZT1oLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9aC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9aC5DbHJTaGFwZVRpbWVzPWguQ2xyU2hhcGVDaGVjaz1oLkNsclNoYXBlQ29nPWguQ2xyU2hhcGVIb21lPWguQ2xyU2hhcGVVbmtub3duU3RhdHVzPXZvaWQgMDt2YXIgYz15KAov'@; put 'KiEgLi4vdXRpbHMvZGVzY3JpcHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIikscz15KAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJh'@; put 'dG9yLnRzIik7aC5DbHJTaGFwZVVua25vd25TdGF0dXM9KDAscy5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3LjU4IiBjeT0iMjYuMjMiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjQuNywxM2E1LjE4LDUuMTgsMCwwLDAtMi4xNi0zLjU2LDcuMjYsNy4yNiwwLDAsMC01LjcxLTEuMDlBMTEuMzQsMTEuMzQsMCwwLDAsMTIsMTAuNDQsMSwxLDAsMSwwLDEzLjI2LDEyYTkuMzIsOS4zMiwwLDAsMSwzLjk0'@; put 'LTEuNzIsNS4yOSw1LjI5LDAsMCwxLDQuMTYuNzQsMy4yMSwzLjIxLDAsMCwxLDEuMzUsMi4xOWMuMzMsMi42OS0zLjE5LDMuNzUtNS4zMiw0LjE0bC0uODIuMTV2NC4zNmExLDEsMCwwLDAsMiwwVjE5LjE3QzI0LjYxLDE3Ljc5LDI0Ljg4LDE0LjQxLDI0LjcsMTNaIi8+JyksaC5DbHJTaGFw'@; put 'ZUhvbWU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy43MSwxNy4yOWwtMTUtMTVhMSwxLDAsMCwwLTEuNDEsMGwtMTUsMTVhMSwxLDAsMCwwLDEuNDEsMS40MUwxOCw0LjQxLDMyLjI5LDE4LjcxYTEsMSww'@; put 'LDAsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOCwzMmgtNVYyMkgxM1YzMkg4VjE4TDYsMjBWMzJhMiwyLDAsMCwwLDIsMmg3VjI0aDZWMzRoN2EyLDIsMCwwLDAsMi0yVjE5Ljc2'@; put 'bC0yLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDE5YTEsMSwwLDAsMS0uNzEtLjI5TDE4LDQuNDEsMy43MSwxOC43MWExLDEsMCwwLDEtMS40MS0xLjQxbDE1LTE1YTEsMSwwLDAsMSwxLjQxLDBsMTUs'@; put 'MTVBMSwxLDAsMCwxLDMzLDE5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOCw3Ljc5LDYsMTkuODNWMzJhMiwyLDAsMCwwLDIsMmg3VjI0aDZWMzRoN2EyLDIsMCwwLDAsMi0yVjE5Ljc2WiIvPicpLGguQ2xy'@; put 'U2hhcGVDb2c9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOC4xLDExYy0zLjksMC03LDMuMS03LDdzMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN1MyMiwxMSwxOC4xLDExeiBNMTguMSwyM2MtMi44LDAtNS0y'@; put 'LjItNS01czIuMi01LDUtNWMyLjgsMCw1LDIuMiw1LDVTMjAuOSwyMywxOC4xLDIzeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuOCwxNC43TDMwLDEzLjhsLTAuNi0xLjVsMS40LTIuNmMwLjMtMC42'@; put 'LDAuMi0xLjQtMC4zLTEuOWwtMi40LTIuNGMtMC41LTAuNS0xLjMtMC42LTEuOS0wLjNsLTIuNiwxLjRsLTEuNS0wLjZsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJD'@; put 'OS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZj'@; put 'LTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEu'@; put 'NCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3ogTTMyLDE5LjRsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0w'@; put 'LjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTIt'@; put 'MmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAu'@; put 'NS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuNCwwLjUsMi4xLDAuOWwwLjUsMC4zbDMuMy0xLjhsMiwybC0xLjgsMy4zbDAuMywwLjVjMC40LDAuNywwLjcsMS40LDAuOSwyLjFsMC4xLDAuNWwzLjYsMS4xVjE5LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGgg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTEuMSwxOGMwLDMuOSwzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03cy0zLjEtNy03LTdDMTQuMiwxMSwxMS4xLDE0LjEsMTEuMSwxOHogTTIzLjEsMThjMCwyLjgtMi4yLDUtNSw1'@; put 'Yy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01QzIwLjksMTMsMjMuMSwxNS4yLDIzLjEsMTh6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuOCwxNC43TDMwLDEzLjhsLTAu'@; put 'MS0wLjNjLTAuOCwwLTEuNi0wLjItMi40LTAuNGMwLjMsMC42LDAuNiwxLjMsMC44LDEuOWwwLjEsMC41bDMuNiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0x'@; put 'LjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhs'@; put 'My40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNUwyMSw3LjdjMC43LDAuMiwxLjMsMC41LDEuOSwwLjhjLTAuMy0wLjgt'@; put 'MC40LTEuNi0wLjQtMi41bC0wLjQtMC4ybC0wLjktMi44QzIxLDIuNSwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUtMS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIs'@; put 'NS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRjMCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4z'@; put 'LDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMtMC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEu'@; put 'OWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNS42LDMzLjUsMTQuOSwzMi44LDE0Ljd6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1i'@; put 'YWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjcsMTUuNGgtNS4zdjAuMWwzLjYsMS4xdjIuOGwtMy42'@; put 'LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAu'@; put 'OWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43'@; put 'LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjRsMS40LTIuM2wtMC42LTJDMjEsMi40LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3'@; put 'LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEu'@; put 'NCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wy'@; put 'LjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE2LDMzLjksMTUuNywzMy43LDE1LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xOC4xLDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01YzAuMiwwLDAuNSwwLDAuNywwLjFjLTAuMi0wLjYtMC4zLTEuMy0wLjItMmgtMC41Yy0zLjksMC03LDMuMS03LDdjMCwzLjksMy4xLDcsNyw3YzMuOSwwLDctMy4x'@; put 'LDctN2MwLTAuOS0wLjItMS44LTAuNS0yLjZoLTIuMmMwLjUsMC44LDAuNywxLjYsMC43LDIuNUMyMy4xLDIwLjgsMjAuOSwyMywxOC4xLDIzeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVy'@; put 'dGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44'@; put 'LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTExLjY1LDExLjY1LDAsMCwwLS45NS0yLjMzbDEuNjQtMy4wN2EuNjEuNjEsMCww'@; put 'LDAtLjExLS43MkwyNy40MSw2LjJhLjYxLjYxLDAsMCwwLS43Mi0uMTFMMjMuNjQsNy43MmExMS42MiwxMS42MiwwLDAsMC0yLjM2LTFsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFs'@; put 'LTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAs'@; put 'MCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhh'@; put 'MTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42'@; put 'MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIuNTcs'@; put 'MTUuNzJsLTMuMzUtMWExMi4xMiwxMi4xMiwwLDAsMC0uNDctMS4zMiw3LjQ5LDcuNDksMCwwLDEtNi4xNC02LjE2LDExLjgyLDExLjgyLDAsMCwwLTEuMzMtLjQ4bC0xLTMuMzFBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEu'@; put 'NjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFh'@; put 'MTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCww'@; put 'LC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQz'@; put 'LS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaTTE4LDIzLjVBNS41LDUuNSwwLDEsMSwyMy41LDE4LDUuNSw1LjUsMCwwLDEsMTgsMjMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0t'@; put 'YmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMyLjU3LDE1LjcyLDMxLjUsMTUuNEgyMi44NUE1LjUsNS41LDAs'@; put 'MSwxLDE4LDEyLjVhNS41Myw1LjUzLDAsMCwxLC42NSwwQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDIuMDktMy42Mi0uODYtMi44M0EuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFsLTMtMS42MmEu'@; put 'NjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAsMCwxLDIuMzNM'@; put 'Ni4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhhMTEuNjMsMTEu'@; put 'NjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42MSwwLDAsMCwz'@; put 'Mi41NywxNS43MloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4y'@; put 'OCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksaC5DbHJTaGFwZUNoZWNrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTMuNzIsMjcuNjks'@; put 'My4yOSwxNy4yN2ExLDEsMCwwLDEsMS40MS0xLjQxbDksOUwzMS4yOSw3LjI5YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+JyksaC5DbHJTaGFwZVRpbWVzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNDEs'@; put 'MThsOC4yOS04LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksOS43MSw4LjI5QTEsMSwwLDAsMCw4LjI5LDkuNzFMMTYuNTksMTgsOC4yOSwyNi4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDguMjksOC4yOWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPicpLGguQ2xyU2hh'@; put 'cGVFeGNsYW1hdGlvblRyaWFuZ2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjEuMzJhMS4zLDEuMywwLDAsMCwxLjMtMS4zVjE0YTEuMywxLjMsMCwxLDAtMi42LDB2NkExLjMsMS4zLDAsMCwwLDE4'@; put 'LDIxLjMyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIxNy45NSIgY3k9IjI0LjI3IiByPSIxLjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMyIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1ptLTEuNzgsMS45NGExLDEsMCwwLDEtLjg2LjQ5SDguMjFhMSwxLDAsMCwxLS44OC0xLjQ4TDE3'@; put 'LjA3LDguNTVhMSwxLDAsMCwxLDEuNzYsMGw5Ljc0LDE3Ljk0QTEsMSwwLDAsMSwyOC41NSwyNy40OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3'@; put 'LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWk0xNi40NiwxMi43NGExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjYuMjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcyLDEuNzIsMCww'@; put 'LDEsMTgsMjYuMjVaIi8+JyksaC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEw'@; put 'LDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjAuMDdhMS4zLDEuMywwLDAsMS0xLjMtMS4zdi02YTEuMywxLjMsMCwxLDEsMi42LDB2NkEx'@; put 'LjMsMS4zLDAsMCwxLDE4LDIwLjA3WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIxNy45NSIgY3k9IjIzLjAyIiByPSIxLjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s'@; put 'aWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMS40OSw2YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNS41YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcy'@; put 'LDAsMCwxLDE4LDI1LjVaIi8+JyksaC5DbHJTaGFwZUNoZWNrQ2lyY2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEw'@; put 'LDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuMzQsMjMuNzRsLTUtNWExLDEsMCwwLDEsMS40MS0xLjQxbDMuNTksMy41OSw2Ljc4LTYuNzhhMSwx'@; put 'LDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMThBMTIsMTIsMCwxLDEsMTgsNiwxMiwxMiwwLDAsMSwzMCwxOFptLTQuNzctMi4xNmExLjQsMS40LDAsMCwwLTItMmwtNi43Nyw2'@; put 'Ljc3TDEzLDE3LjE2YTEuNCwxLjQsMCwwLDAtMiwybDUuNDUsNS40NVoiLz4nKSxoLkNsclNoYXBlSW5mb0NpcmNsZT0oMCxzLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAgY3g9IjE3LjkzIiBjeT0iMTEuOSIgcj0iMS40'@; put 'Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiICBkPSJNMjEsMjNIMTlWMTVIMTZhMSwxLDAsMCwwLDAsMmgxdjZIMTVhMSwxLDAsMSwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBh'@; put 'dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiICBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz'@; put 'PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0yLDUuMTVhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsMTUuOSwxMS4xNVpNMjMsMjRhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwxLDEsMC0yaDJWMTdI'@; put 'MTZhMSwxLDAsMCwxLDAtMmg0djhoMkExLDEsMCwwLDEsMjMsMjRaIi8+JyksaC5DbHJTaGFwZUluZm9TdGFuZGFyZD0oMCxzLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuOTciIGN5PSIxMC40NSIgcj0iMS40'@; put 'Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMSwyNUgxOVYxNC4xSDE2YTEsMSwwLDAsMCwwLDJoMVYyNUgxNWExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8'@; put 'cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwyLjFabS0uMSw1LjI4YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDE3LjksNy4zOFptMy42LDIxLjI1aC03YTEuNCwxLjQsMCwxLDEsMC0yLjhoMi4x'@; put 'di05LjJIMTVhMS40LDEuNCwwLDEsMSwwLTIuOGg0LjR2MTJoMi4xYTEuNCwxLjQsMCwxLDEsMCwyLjhaIi8+JyksaC5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4'@; put 'LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDEyLjFhMSwx'@; put 'LDAsMCwwLTEuNDEsMEwxNS40OSwyMy4xNWwtNi02QTEsMSwwLDAsMCw4LDE4LjUzTDE1LjQ5LDI2LDI4LDEzLjUyQTEsMSwwLDAsMCwyOCwxMi4xWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2'@; put 'LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI4LjQ1LDEyLjYzLDE1LjMxLDI1Ljc2LDcuNTUsMThhMS40LDEuNCwwLDAsMSwyLTJsNS43OCw1Ljc4TDI2LjQ3LDEwLjY1YTEuNCwxLjQsMCwxLDEsMiwyWiIvPicpLGguQ2xyU2hhcGVFcnJvclN0YW5kYXJkPSgwLHMuY2xySWNvblNW'@; put 'RykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMi42MWEx'@; put 'LDEsMCwwLDEtMS0xdi0xMmExLDEsMCwxLDEsMiwwdjEyQTEsMSwwLDAsMSwxOCwyMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4'@; put 'LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwyLjFaTTE2LjYs'@; put 'OC44YTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjguNmExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEuOCwwLDAsMSwxOCwyOC42WiIvPicpLGguQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9KDAscy5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEs'@; put 'MSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTUuMDYyMDc4MiwxLjY4MTE5NiBDMTUuNjI5ODgxOSwwLjY0OTI2NjM1NSAxNi43MTA5MDkxLDAu'@; put 'MDEwMjIxOTM5NiAxNy44ODUsMC4wMTAyMjE5Mzk2IEMxOS4wNTkwOTA5LDAuMDEwMjIxOTM5NiAyMC4xNDAxMTgxLDAuNjQ5MjY2MzU1IDIwLjcwODY0MzMsMS42ODI1MjEyOSBMMzQuNTk4NjQ0LDI3LjI0MjUyMjUgQzM1LjE0MDc3NDYsMjguMjQwMTM5NyAzNS4xMTc0MzQ1LDI5LjQ0OTUz'@; put 'NzMgMzQuNTM3MjE2MSwzMC40MjU0OTQzIEMzMy45NTY5OTc3LDMxLjQwMTQ1MTQgMzIuOTA1NjcxLDMxLjk5OTY5ODQgMzEuNzcsMzIgTDQuMDIyMzkzMjMsMzEuOTk5NzQ5MiBDMi44NzQwOTAwOSwzMi4wMjU0Njk5IDEuNzk5MDI4NDMsMzEuNDM3NTc1MyAxLjIwMTA2MzM1LDMwLjQ1Njkx'@; put 'MjYgQzAuNjAzMDk4MjY1LDI5LjQ3NjI0OTkgMC41NzI3Nzc4OTksMjguMjUxMzE3OSAxLjEyMjA3ODE4LDI3LjI0MTE5NiBMMTUuMDYyMDc4MiwxLjY4MTE5NiBaIE0yLjg3ODUwNzY3LDI4LjE5NzcyODIgQzIuNjcwNjA5NjYsMjguNTgwMDM3NiAyLjY4MjA5NzUsMjkuMDQ0MTQyMyAyLjkw'@; put 'ODY1NTcsMjkuNDE1Njk3NyBDMy4xMzUyMTM5LDI5Ljc4NzI1MzIgMy41NDI1MzU0LDMwLjAwOTk5NTkgNCwzMCBMMzEuNzY5NzM0NCwzMCBDMzIuMTk5OTE5MSwyOS45OTk4ODU4IDMyLjU5ODI0NzgsMjkuNzczMjIwOCAzMi44MTgwODIxLDI5LjQwMzQ0ODIgQzMzLjAzNzkxNjQsMjkuMDMz'@; put 'Njc1NyAzMy4wNDY3NTk1LDI4LjU3NTQ1NjcgMzIuODQxMzU2NywyOC4xOTc0Nzg3IEwxOC45NTM4NzM5LDIuNjQyMDgxOTUgQzE4LjczOTQyMzYsMi4yNTIzNDQzNiAxOC4zMjk4NDE5LDIuMDEwMjIxOTQgMTcuODg1LDIuMDEwMjIxOTQgQzE3LjQ0MDY4ODksMi4wMTAyMjE5NCAxNy4wMzE1'@; put 'NTM4LDIuMjUxNzY2OTIgMTYuODE2ODk0NiwyLjY0MDY4NzUzIEwyLjg3ODUwNzY3LDI4LjE5NzcyODIgWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC42LDI5LjIxLDIwLjcxLDMuNjVhMy4yMiwzLjIyLDAs'@; put 'MCwwLTUuNjYsMEwxLjE3LDI5LjIxQTMuMjIsMy4yMiwwLDAsMCw0LDM0SDMxLjc3YTMuMjIsMy4yMiwwLDAsMCwyLjgzLTQuNzVaTTE2LjYsMTBhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOS44NWExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEu'@; put 'OCwwLDAsMSwxOCwyOS44NVoiLz4nKSxoLkNsclNoYXBlSGVscEluZm89KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LjM5LDI1LjQ1YTEsMSwwLDAsMC0xLjM4LjI5Yy0xLjQxLDIuMTYtNCw0LjgxLTYuMzEsNS43cy00LjEyLjU3LTQuODQsMGMtLjMxLS4yNy0xLjEyLTEtLjQzLTMu'@; put 'NDkuNDYtMS42NiwzLjMyLTkuNDgsNC0xMS4zOGwtMi4xOC4yOGMtLjY5LDEuODYtMy4yOSw4Ljg0LTMuNzYsMTAuNTgtLjY4LDIuNDktLjM0LDQuMywxLjA5LDUuNTZBNS41OSw1LjU5LDAsMCwwLDE1LDM0YTkuNTMsOS41MywwLDAsMCwzLjQ1LS43YzIuNzktMS4wOSw1LjcyLTQuMTIsNy4y'@; put 'Ni02LjQ3QTEsMSwwLDAsMCwyNS4zOSwyNS40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjMsMTFhNC41LDQuNSwwLDEsMC00LjUtNC41QTQuNSw0LjUsMCwwLDAsMTkuMywxMVptMC03YTIuNSwyLjUs'@; put 'MCwxLDEtMi41LDIuNUEyLjUsMi41LDAsMCwxLDE5LjMsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjgxLDE1Yy4wNiwwLDYuMjctLjgyLDcuNzMtMSwuNjUtLjEsMS4xNCwwLDEuMy4xNXMuMjEuOC0u'@; put 'MDcsMS42OGMtLjYxLDEuODYtMy42OSwxMS00LjU5LDEzLjcxYTgsOCwwLDAsMCwxLjI5LS4zOCw3LjMyLDcuMzIsMCwwLDAsMS4xNS0uNkMxOS44NSwyNSwyMi4xNSwxOC4xLDIyLjY3LDE2LjUycy4zOS0yLjc4LS4zLTMuNmEzLjE2LDMuMTYsMCwwLDAtMy4wOC0uODNjLTEuNDMuMTUtNy40'@; put 'Ny45NC03LjczLDFhMSwxLDAsMCwwLC4yNiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyMC43NSIgY3k9IjYiIHI9IjQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMjQuODQsMjYuMjNhMSwxLDAsMCwwLTEuNC4yOSwxNi42LDE2LjYsMCwwLDEtMy41MSwzLjc3Yy0uMzMuMjUtMS41NiwxLjItMi4wOCwxLS4zNi0uMTEtLjE1LS44Mi0uMDgtMS4xMmwuNTMtMS41N2MuMjItLjY0LDQuMDUtMTIsNC40Ny0xMy4zLjYyLTEu'@; put 'OS4zNS0zLjc3LTIuNDgtMy4zMi0uNzcuMDgtOC41OCwxLjA5LTguNzIsMS4xYTEsMSwwLDAsMCwuMTMsMnMzLS4zOSwzLjMzLS40MmEuODguODgsMCwwLDEsLjg1LjQ0LDIuNDcsMi40NywwLDAsMS0uMDcsMS43MWMtLjI2LDEtNC4zNywxMi41OC00LjUsMTMuMjVhMi43OCwyLjc4LDAsMCww'@; put 'LDEuMTgsMyw1LDUsMCwwLDAsMy4wOC44M2gwYTguNTMsOC41MywwLDAsMCwzLjA5LS42MmMyLjQ5LTEsNS4wOS0zLjY2LDYuNDYtNS43NUExLDEsMCwwLDAsMjQuODQsMjYuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVCYXJzPSgw'@; put 'LHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMjlINGExLDEsMCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTIiIGQ9Ik0zMiwxOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTMyLDlINEExLDEsMCwwLDEsNCw3SDMyYTEsMSwwLDAsMSww'@; put 'LDJaIi8+JyksaC5DbHJTaGFwZVVzZXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDE3YTcsNywwLDEsMC03LTdBNyw3LDAsMCwwLDE4LDE3Wk0xOCw1YTUsNSwwLDEsMS01LDVBNSw1LDAsMCwxLDE4LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUu'@; put 'MTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwy'@; put 'SDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw0LjQ1LTEuNmgtLjIyQTMuNjgsMy42OCwwLDAsMSwyMCwxNC42YTUsNSwwLDEsMSwxLjI0LTguNDJsMS0xLjc2QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVy'@; put 'dGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCww'@; put 'LDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgs'@; put 'MTdhNyw3LDAsMCwwLDYuODUtNS41Niw3LjQsNy40LDAsMCwxLTIuMjQtNi42OUE3LDcsMCwxLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAg'@; put 'ICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAs'@; put 'MC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAg'@; put 'ICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxMCIgcj0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwx'@; put 'LjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcs'@; put 'NywwLDAsMCw0LjQ1LTEuNmgtLjIyQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDMuMTYtNS40N0E3LDcsMCwxLDAsMTgsMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu'@; put 'MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQg'@; put 'Y2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCww'@; put 'LDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDYuODUtNS41Niw3LjQsNy40LDAsMCwxLTIuMjQtNi42OUE3LDcsMCwxLDAsMTgsMTdaIiBj'@; put 'bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdl'@; put 'IiAvPicpLGguQ2xyU2hhcGVBbmdsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LjUyLDIyLjUyLDE4LDEwLjYsNi40OCwyMi41MmExLjcsMS43LDAsMCwwLDIuNDUsMi4zNkwxOCwxNS40OWw5LjA4LDku'@; put 'MzlhMS43LDEuNywwLDAsMCwyLjQ1LTIuMzZaIi8+JyksaC5DbHJTaGFwZUZvbGRlcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIs'@; put 'MiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wm0wLDIwSDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVWMjlINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MWE3LjUsNy41LDAsMCwxLTEuMjktMkgxNi40MkwxNC4x'@; put 'MSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMwLDE1LjRWMjlINlYx'@; put 'M2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBh'@; put 'MiwyLDAsMCwwLDItMlYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMs'@; put 'MTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEy'@; put 'LDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p'@; put 'LXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNNiwx'@; put 'MVY3aDYuNDlsMi43Miw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42'@; put 'OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcu'@; put 'NSwwLDAsMSwyMy4xMyw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVpNNiwxMVY3aDYuNDlsMi43Miw0WiIvPlxuICAgICAgICAg'@; put 'ICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxoLkNsclNoYXBlRm9sZGVyT3Blbj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMmEyLDIs'@; put 'MCwwLDAtMi0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0Wk0yOS41NSwyOUg2Ljls'@; put 'My44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNI'@; put 'MTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3'@; put 'VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0Wk0yOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8'@; put 'Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNGgtLjNMMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRoOS40MkEzLjY3LDMuNjcsMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwxLS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUs'@; put 'MS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNyww'@; put 'LDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAg'@; put 'ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEs'@; put 'MCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIs'@; put 'MTMuNzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDExLjE3'@; put 'YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCww'@; put 'LDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xYTEuNjgsMS42OCwwLDAsMCwuMDctLjMyQTMuNjcsMy42NywwLDAsMSwzMy42OCwxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0t'@; put 'YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4x'@; put 'NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAs'@; put 'MCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjMxLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwx'@; put 'LDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0i'@; put 'NSIvPicpLGguQ2xyU2hhcGVCZWxsPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuNTEsMjcuODNBMTQuNCwxNC40LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEw'@; put 'LjgxLDEwLjgxLDAsMCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYx'@; put 'LjM2YTEsMSwwLDAsMCwxLDFoMjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSwwLDAsMCwzMi41MSwyNy44M1pNNS4xMywyOC45NGExNi4xNywxNi4xNywwLDAsMCwyLjQ0LTMsMTQuMjQsMTQuMjQsMCwwLDAsMS42NS01Ljg1VjE1LjE1YTguNzQsOC43NCwwLDEsMSwxNy40NywwdjQuOTRh'@; put 'MTQuMjQsMTQuMjQsMCwwLDAsMS42NSw1Ljg1LDE2LjE3LDE2LjE3LDAsMCwwLDIuNDQsM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4z'@; put 'MkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42'@; put 'NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1'@; put 'LTQuODFWMTUuMTVhMTAuOTIsMTAuOTIsMCwwLDAtLjE2LTEuNzksNy40NCw3LjQ0LDAsMCwxLTIuMjQtLjg0LDguODksOC44OSwwLDAsMSwuNCwyLjY0djQuOTRhMTQuMjQsMTQuMjQsMCwwLDAsMS42NSw1Ljg1LDE2LjE3LDE2LjE3LDAsMCwwLDIuNDQsM0g1LjEzYTE2LjE3LDE2LjE3LDAs'@; put 'MCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVBOC44LDguOCwwLDAsMSwxOCw2LjMxYTguNjEsOC42MSwwLDAsMSw0Ljc2LDEuNDRBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41OCwxMC41OCwwLDAsMC0zLjMyLTFWMy4xMWEx'@; put 'LjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzLDEsMSwwLDAsMC0uMzQuNzV2MS4zNmExLDEsMCwwLDAsMSwxaDI3LjhhMSwxLDAsMCww'@; put 'LDEtMVYyOC41OEExLDEsMCwwLDAsMzIuNTEsMjcuODNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAg'@; put 'ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNywwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNUExMC44MSwxMC44MSwwLDAsMCwxOS4yMSw0LjRW'@; put 'My4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRo'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xNS4zMiwzMmEyLjY1LDIuNjUsMCwwLDAsNS4yNSwwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgs'@; put 'MzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjg1LDI4LjEzbC0uMzQt'@; put 'LjNBMTQuMzcsMTQuMzcsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVhMTAuOTIsMTAuOTIsMCwwLDAtLjE2LTEuNzlBNy41LDcuNSwwLDAsMSwyMi41LDZjMC0uMjEsMC0uNDIsMC0uNjNhMTAuNTcsMTAuNTcsMCwwLDAtMy4zMi0xVjMuMTFhMS4zMywx'@; put 'LjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45M2wtLjM0LjN2Mi44MkgzMi44NVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJj'@; put 'bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksaC5DbHJTaGFwZUltYWdlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwy'@; put 'SDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42'@; put 'QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45Miwy'@; put 'Mi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9'@; put 'Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEy'@; put 'LjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAs'@; put 'MCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAg'@; put 'ICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4'@; put 'LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh'@; put 'ZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGguQ2xyU2hhcGVDbG91ZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE0LDMzSDEwLjYyQzUuNjcsMzMsMSwyOC4xOSwxLDIzLjFhMTAsMTAsMCwwLDEsOC05Ljc1LDEwLjE5LDEwLjE5LDAsMCwxLDIwLjMzLDEuMDZBMTAuMDcsMTAuMDcsMCwwLDEsMjksMTYuNjZhOC4yOSw4LjI5'@; put 'LDAsMCwxLDYsOEMzNSwyOS4xLDMxLjMzLDMzLDI3LjE0LDMzWk0xOS4wOSw2LjIzYTguMjQsOC4yNCwwLDAsMC04LjE5LDhsMCwuODctLjg2LjFBNy45NCw3Ljk0LDAsMCwwLDMsMjMuMWMwLDQsMy43Nyw3LjksNy42Miw3LjlIMjcuMTRDMzAuMjEsMzEsMzMsMjgsMzMsMjQuNjVhNi4zMSw2'@; put 'LjMxLDAsMCwwLTUuMzctNi4yNmwtMS4xOC0uMTguMzktMS4xM0E4LjE4LDguMTgsMCwwLDAsMTkuMDksNi4yM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmEx'@; put 'MC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSwwLTFhNy40NSw3LjQ1LDAsMCwxLTIuMS0uNTQsOCw4LDAsMCwxLS4zLDQuMTZsLS4zOSwxLjEzLDEuMTguMThhNi4zMSw2LjMxLDAsMCwxLDUuMzcsNi4yNkMzMi45NSwyOCwzMC4xNiwzMSwyNy4wOSwzMUgxMC41N2MtMy44'@; put 'NCwwLTcuNjItMy45MS03LjYyLTcuOWE3Ljk0LDcuOTQsMCwwLDEsNy03Ljg5bC44Ni0uMSwwLS44N2E4LjI0LDguMjQsMCwwLDEsOC4xOS04QTguMTMsOC4xMywwLDAsMSwyMi41OCw3YTcuNTMsNy41MywwLDAsMS0uMDgtMSw3LjUxLDcuNTEsMCwwLDEsLjA5LTEuMTJBMTAuMTMsMTAuMTMs'@; put 'MCwwLDAsMTksNC4yMywxMC4yNiwxMC4yNiwwLDAsMCw4LjkxLDEzLjM2YTEwLDEwLDAsMCwwLTgsOS43NWMwLDUuMDksNC42Nyw5LjksOS42Miw5LjlIMjcuMDljNC4xOSwwLDcuODYtMy45LDcuODYtOC4zNUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAg'@; put 'PGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI5LDE2LjY2YTEwLjE0LDEwLjE0LDAsMCwwLC4yLTEuM2gtMmE4LjI4LDguMjgsMCwwLDEtLjM3LDEuNzJsLS4zOSwxLjEzLDEuMTguMThhNi4zMSw2LjMxLDAsMCwxLDUuMzcsNi4yNkMzMi45NSwyOCwzMC4xNiwzMSwyNy4wOSwzMUgxMC41N2Mt'@; put 'My44NCwwLTcuNjItMy45MS03LjYyLTcuOWE3Ljk0LDcuOTQsMCwwLDEsNy03Ljg5bC44Ni0uMSwwLS44N0E4LjE2LDguMTYsMCwwLDEsMjEsNi40N2wxLTEuOEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2YTEwLDEwLDAsMCwwLTgsOS43NWMwLDUuMDksNC42Nyw5LjksOS42Miw5LjlI'@; put 'MjcuMDljNC4xOSwwLDcuODYtMy45LDcuODYtOC4zNUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44'@; put 'NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0xIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5'@; put 'LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRjMC0uMzMsMC0uNjUsMC0xYTcuNDQsNy40NCww'@; put 'LDAsMS02LjYtOC41OEExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEwLjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjguMTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwx'@; put 'Ni42NloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk'@; put 'LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI5LDE2LjY2YTEwLjE1LDEwLjE1LDAsMCwwLC4yLTEuMjZoLTdBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy01LjIxQTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjgu'@; put 'MTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1p'@; put 'LWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksaC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD0oMCxz'@; put 'LmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4g'@; put 'ICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksaC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9KDAscy5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNs'@; put 'ZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGguQ2xyU2hhcGVGaWx0'@; put 'ZXJHcmlkPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwx'@; put 'VjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0'@; put 'aC0xIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCww'@; put 'LC4xNS0uMzVWMTFaIi8+JyksaC5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43'@; put 'OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxw'@; put 'YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz'@; put 'PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk'@; put 'IGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEy'@; put 'LTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPicpLGguQ2xyU2hhcGVWbUJ1Zz0oMCxzLmNsckljb25TVkcpKCc8cmVjdCB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHJ4PSIzIiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjE1IiBzdHlsZT0iaXNvbGF0aW9uOmlzb2xhdGUiLz48cGF0'@; put 'aCBkPSJNMy43OSwxNC44M2ExLjA5LDEuMDksMCwwLDAtMS40Ny0uNTYsMS4wOSwxLjA5LDAsMCwwLS41NCwxLjQ5bDIuNDcsNS40Yy4zOS44NS44LDEuMjksMS41NywxLjI5UzcsMjIsNy4zOSwyMS4xNmwyLjE3LTQuNzdhLjMzLjMzLDAsMCwxLC4zMS0uMi4zNS4zNSwwLDAsMSwuMzUuMzV2'@; put 'NC42MWExLjE1LDEuMTUsMCwwLDAsMS4xNCwxLjMsMS4xNywxLjE3LDAsMCwwLDEuMTctMS4zVjE3LjM4YTEuMTUsMS4xNSwwLDAsMSwxLjIyLTEuMiwxLjEzLDEuMTMsMCwwLDEsMS4xOCwxLjJ2My43N2ExLjE3LDEuMTcsMCwxLDAsMi4zMiwwVjE3LjM4YTEuMTUsMS4xNSwwLDAsMSwxLjIy'@; put 'LTEuMiwxLjEzLDEuMTMsMCwwLDEsMS4xOCwxLjJ2My43N2ExLjE2LDEuMTYsMCwxLDAsMi4zMSwwVjE2Ljg2YTIuNjksMi42OSwwLDAsMC0yLjc4LTIuNjksMy41NywzLjU3LDAsMCwwLTIuNDcsMS4wNSwyLjc1LDIuNzUsMCwwLDAtMi4zOC0xLjA1QTMuOTMsMy45MywwLDAsMCwxMiwxNS4y'@; put 'MmEyLjgyLDIuODIsMCwwLDAtMi4wOC0xLjA1QTIuNTUsMi41NSwwLDAsMCw3LjQsMTUuODlMNS44MiwxOS42M2wtMi00LjgiIGZpbGw9IiNmZmZmZmYiLz48cGF0aCBkPSJNMzMsMTQuMThBMS4xNCwxLjE0LDAsMCwwLDMxLjksMTVsLTEuMTksMy43M0wyOS41LDE1LjA1YTEuMTgsMS4xOCww'@; put 'LDAsMC0xLjE1LS44N2gtLjFhMS4yLDEuMiwwLDAsMC0xLjE1Ljg3bC0xLjE5LDMuNzEtMS4xOC0zLjcxYTEuMTUsMS4xNSwwLDAsMC0xLjExLS44NywxLjA4LDEuMDgsMCwwLDAtMS4xMiwxLjA3LDEuNjgsMS42OCwwLDAsMCwuMS41NGwyLDUuN2ExLjI3LDEuMjcsMCwwLDAsMS4yNywxLDEu'@; put 'MjQsMS4yNCwwLDAsMCwxLjItLjkzbDEuMi0zLjY0LDEuMiwzLjY0YTEuMjUsMS4yNSwwLDAsMCwxLjI2LjkzQTEuMjcsMS4yNywwLDAsMCwzMiwyMS41TDM0LDE1LjczYTEuNzcsMS43NywwLDAsMCwuMDgtLjQ4QTEuMDcsMS4wNywwLDAsMCwzMywxNC4xOFoiIGZpbGw9IiNmZmZmZmYiLz4n'@; put 'KSxoLkNsclNoYXBlU2VhcmNoPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMzMsNS4wNUExMC45NSwxMC45NSwwLDEsMSw1LjM5LDE2LDExLDExLDAsMCwxLDE2LjMzLDUuMDVtMC0yLjA1YTEzLDEzLDAs'@; put 'MSwwLDEzLDEzLDEzLDEzLDAsMCwwLTEzLTEzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzUsMzMuMjlsLTcuMzctNy40Mi0xLjQyLDEuNDEsNy4zNyw3LjQyQTEsMSwwLDEsMCwzNSwzMy4yOVoiLz4n'@; put 'KSxoLkNsclNoYXBlVmlld0NvbHVtbnM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSw1SDVBMiwyLDAsMCwwLDMsN1YyOWEyLDIsMCwwLDAsMiwySDMxYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzEs'@; put 'NVpNMTMsMjlINVY3aDhabTEwLDBIMTVWN2g4WiIvPicpLGguQ2xyU2hhcGVBbmdsZURvdWJsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LDE5LjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDguODMsNy43'@; put 'MSwxOS4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDYsMjkuNzEsMTcuNzFBMSwxLDAsMCwxLDI5LDE5LjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjksMzAuNDFhMSwxLDAsMCwxLS43MS0uMjlM'@; put 'MTgsMTkuODMsNy43MSwzMC4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDE3LDI5LjcxLDI4LjcxQTEsMSwwLDAsMSwyOSwzMC40MVoiLz4nKSxoLkNsclNoYXBlQ2FsZW5kYXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTEiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPlxuICAgICAgICAg'@; put 'ICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIxNCIg'@; put 'eT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdo'@; put 'dD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtOCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAg'@; put 'ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEiIHg9IjE0IiB5'@; put 'PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNB'@; put 'MSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTUiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5c'@; put 'biAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiIHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloi'@; put 'Lz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIHg9IjIwIiB5'@; put 'PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAg'@; put 'PHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTctLWJhZGdlZCIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWln'@; put 'aHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIg'@; put 'eD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAg'@; put 'ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWJhZGdlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMTQtLWJhZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE1'@; put 'LS1iYWRnZWQiIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5'@; put 'PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgs'@; put 'MS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIi'@; put 'IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0t'@; put 'YWxlcnRlZCIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIv'@; put 'PlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYWxlcnRlZCIgeD0i'@; put 'MTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAg'@; put 'ICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwb2x5Z29uIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4yOSA2Ii8+XG4gICAgICAgICAgICAgICAg'@; put 'PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2'@; put 'LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjI1LDZoLTRWOWEyLjIsMi4yLDAsMSwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlW'@; put 'NmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYy'@; put 'NGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0yIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEs'@; put 'MCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAs'@; put 'MTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCww'@; put 'LDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0w'@; put 'LTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0z'@; put 'LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTks'@; put 'OS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVI'@; put 'OFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptNiw1SDI2VjI0aDJabTAtNUgyNlYxOWgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1p'@; put 'LWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksaC5DbHJTaGFwZUV2ZW50PSgwLHMuY2xySWNvblNWRyko'@; put 'JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMTcsMjUuODYsMTAuODEsMjAuNWExLDEsMCwwLDEsMS40MS0xLjQxTDE2LjE3LDIzbDguNjQtOC42NGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUEx'@; put 'Ljc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAg'@; put 'ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTUiIHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2'@; put 'LjIyLDE1LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTEwLDEw'@; put 'YTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUEx'@; put 'Ljc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk'@; put 'Z2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQg'@; put 'Y2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwx'@; put 'LDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLC4yMy0uNDFIMjMuOEwxNi4x'@; put 'NywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4y'@; put 'OSA2Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCww'@; put 'LDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwy'@; put 'MS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt'@; put 'MSIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIs'@; put 'MFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwwLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43'@; put 'OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMjUuOTQsMTYuNThsLTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4'@; put 'LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNW'@; put 'OUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjYuM2ExLjM0LDEuMzQsMCwwLDEtLjM2LDEuMThsLTkuNjcsOS42N0wxMSwyMC45'@; put 'NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzgsNy03aC0xQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVB'@; put 'MS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAs'@; put 'MCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0i'@; put 'TTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIy'@; put 'LjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVabS00LjA2LDMuMDgtOS42'@; put 'Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRn'@; put 'ZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxoLkNsclNoYXBlRXllPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIz'@; put 'LDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQz'@; put 'WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOSwxMS4xN0E2Ljg2LDYuODYsMCwxLDAsMjUsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjA5LDExLjE3Wm0wLDExLjcyQTQuODYsNC44NiwwLDEsMSwyMywxOCw0'@; put 'Ljg3LDQuODcsMCwwLDEsMTguMDksMjIuODlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4y'@; put 'Ni40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2'@; put 'LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOC4wOSIgY3k9IjE4LjAzIiByPSI2Ljg2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksaC5DbHJTaGFwZUV5'@; put 'ZUhpZGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LjE5LDIwLjRBNi43OCw2Ljc4LDAsMCwwLDI1LjYyLDE4YTYuODYsNi44NiwwLDAsMC02Ljg2LTYuODYsNi43OSw2Ljc5LDAsMCwwLTIuMzcuNDNMMTgsMTMuMjNhNC43OCw0Ljc4LDAsMCwxLC43NC0uMDZBNC44Nyw0Ljg3LDAs'@; put 'MCwxLDIzLjYyLDE4YTQuNzksNC43OSwwLDAsMS0uMDYuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01'@; put 'LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUs'@; put 'MS43NS0xLjUtMjYtMjZabTkuNzUsOS43NSw2LjY1LDYuNjVhNC44MSw0LjgxLDAsMCwxLTIuNS43MkE0Ljg3LDQuODcsMCwwLDEsMTMuOSwxOCw0LjgxLDQuODEsMCwwLDEsMTQuNjIsMTUuNTNabS0xLjQ1LTEuNDVhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42YTE0LjkxLDE0'@; put 'LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcuMjksMCwwLDEsNi4xMi02LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjM3LDExLjE3QTYuNzksNi43'@; put 'OSwwLDAsMCwxNiwxMS42bDguOCw4LjhBNi43OCw2Ljc4LDAsMCwwLDI1LjIzLDE4LDYuODYsNi44NiwwLDAsMCwxOC4zNywxMS4xN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4yOSwxNy41M2MtMy4zNy02LjIz'@; put 'LTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5LjkzLDE5LjkzLDAsMCwwLDUt'@; put 'NmwuMjYtLjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEw'@; put 'YTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTguMyw4LjNhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcuMjksMCwwLDEs'@; put 'Ni4xMi02LjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksaC5DbHJTaGFwZVN0ZXBGb3J3YXJkMj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNy4wOCw2LjUyYTEuNjgsMS42OCwwLDAsMCwwLDIuNEwxNi41MSwxOCw3LjEyLDI3LjA4YTEuNywxLjcs'@; put 'MCwwLDAsMi4zNiwyLjQ0aDBMMjEuNCwxOCw5LjQ4LDYuNDdBMS42OSwxLjY5LDAsMCwwLDcuMDgsNi41MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNi40OSw1YTEuNywxLjcsMCwwLDAtMS43LDEuN1YyOS4zYTEuNywxLjcsMCww'@; put 'LDAsMy40LDBWNi43QTEuNywxLjcsMCwwLDAsMjYuNDksNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVBcnJvdz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuNjYsMTUuNjEsMTgsNiw4LjM0LDE1LjYxQTEsMSwwLDEs'@; put 'MCw5Ljc1LDE3TDE3LDkuODFWMjguOTRhMSwxLDAsMSwwLDIsMFY5LjgxTDI2LjI1LDE3YTEsMSwwLDAsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLGguQ29yZVNoYXBlcz17InVua25vd24tc3RhdHVzIjpoLkNsclNoYXBlVW5r'@; put 'bm93blN0YXR1cyxob21lOmguQ2xyU2hhcGVIb21lLGNvZzpoLkNsclNoYXBlQ29nLGNoZWNrOmguQ2xyU2hhcGVDaGVjayx0aW1lczpoLkNsclNoYXBlVGltZXMsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIjpoLkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZSwiZXhjbGFtYXRpb24tY2lyY2xl'@; put 'IjpoLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGUsImNoZWNrLWNpcmNsZSI6aC5DbHJTaGFwZUNoZWNrQ2lyY2xlLCJpbmZvLWNpcmNsZSI6aC5DbHJTaGFwZUluZm9DaXJjbGUsImluZm8tc3RhbmRhcmQiOmguQ2xyU2hhcGVJbmZvU3RhbmRhcmQsInN1Y2Nlc3Mtc3RhbmRhcmQiOmguQ2xy'@; put 'U2hhcGVTdWNjZXNzU3RhbmRhcmQsImVycm9yLXN0YW5kYXJkIjpoLkNsclNoYXBlRXJyb3JTdGFuZGFyZCwid2FybmluZy1zdGFuZGFyZCI6aC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZCwiaGVscC1pbmZvIjpoLkNsclNoYXBlSGVscEluZm8sYmFyczpoLkNsclNoYXBlQmFycyx1c2VyOmgu'@; put 'Q2xyU2hhcGVVc2VyLGFuZ2xlOmguQ2xyU2hhcGVBbmdsZSxmb2xkZXI6aC5DbHJTaGFwZUZvbGRlciwiZm9sZGVyLW9wZW4iOmguQ2xyU2hhcGVGb2xkZXJPcGVuLGJlbGw6aC5DbHJTaGFwZUJlbGwsaW1hZ2U6aC5DbHJTaGFwZUltYWdlLGNsb3VkOmguQ2xyU2hhcGVDbG91ZCwiZWxsaXBz'@; put 'aXMtaG9yaXpvbnRhbCI6aC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbCwiZWxsaXBzaXMtdmVydGljYWwiOmguQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsLCJmaWx0ZXItZ3JpZCI6aC5DbHJTaGFwZUZpbHRlckdyaWQsImZpbHRlci1ncmlkLWNpcmNsZSI6aC5DbHJTaGFwZUZpbHRlckdy'@; put 'aWRDaXJjbGUsInZtLWJ1ZyI6aC5DbHJTaGFwZVZtQnVnLHNlYXJjaDpoLkNsclNoYXBlU2VhcmNoLCJ2aWV3LWNvbHVtbnMiOmguQ2xyU2hhcGVWaWV3Q29sdW1ucywiYW5nbGUtZG91YmxlIjpoLkNsclNoYXBlQW5nbGVEb3VibGUsY2FsZW5kYXI6aC5DbHJTaGFwZUNhbGVuZGFyLGV2ZW50'@; put 'OmguQ2xyU2hhcGVFdmVudCxleWU6aC5DbHJTaGFwZUV5ZSwiZXllLWhpZGUiOmguQ2xyU2hhcGVFeWVIaWRlLCJzdGVwLWZvcndhcmQtMiI6aC5DbHJTaGFwZVN0ZXBGb3J3YXJkMixhcnJvdzpoLkNsclNoYXBlQXJyb3d9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVTaGFwZXMsImhv'@; put 'dXNlIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5ob21lKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywic2V0dGluZ3MiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzLmNvZykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkNvcmVT'@; put 'aGFwZXMsInN1Y2Nlc3MiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzLmNoZWNrKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywiY2xvc2UiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzLnRpbWVzKSksT2JqZWN0LmRlZmluZVByb3Bl'@; put 'cnR5KGguQ29yZVNoYXBlcywid2FybmluZyIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkNvcmVTaGFwZXNbImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Db3JlU2hhcGVzLCJlcnJvciIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkNvcmVTaGFw'@; put 'ZXNbImV4Y2xhbWF0aW9uLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywiaW5mbyIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkNvcmVTaGFwZXNbImluZm8tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Db3JlU2hhcGVzLCJtZW51Iiwo'@; put 'MCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5iYXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywiYXZhdGFyIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy51c2VyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywi'@; put 'Y2FyZXQiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzLmFuZ2xlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguQ29yZVNoYXBlcywiZGlyZWN0b3J5IiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguQ29yZVNoYXBlcy5mb2xkZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'aC5Db3JlU2hhcGVzLCJub3RpZmljYXRpb24iLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Db3JlU2hhcGVzLmJlbGwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Db3JlU2hhcGVzLCJjb2xsYXBzZSIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkNvcmVTaGFwZXNbImFuZ2xlLWRvdWJs'@; put 'ZSJdKSl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hh'@; put 'cGVzL2Vzc2VudGlhbC1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGguQ2xyU2hhcGVMb2dvdXQ9aC5DbHJTaGFwZUxvZ2luPWguQ2xyU2hhcGVIZWxwPWguQ2xyU2hhcGVDb3B5PWguQ2xyU2hhcGVDaGlsZEFycm93PWguQ2xyU2hhcGVDaXJjbGVBcnJvdz1oLkNsclNoYXBlQWxh'@; put 'cm1DbG9jaz1oLkNsclNoYXBlQ2xvY2s9aC5DbHJTaGFwZUhpc3Rvcnk9aC5DbHJTaGFwZVRhZ3M9aC5DbHJTaGFwZVRhZz1oLkNsclNoYXBlVHJhc2g9aC5DbHJTaGFwZVRpbWVzQ2lyY2xlPWguQ2xyU2hhcGVCYW49aC5DbHJTaGFwZVBsdXNDaXJjbGU9aC5DbHJTaGFwZU1pbnVzQ2lyY2xl'@; put 'PWguQ2xyU2hhcGVNaW51cz1oLkNsclNoYXBlUGx1cz1oLkNsclNoYXBlRmlsZT1oLkNsclNoYXBlUGluPWguQ2xyU2hhcGVGaWx0ZXI9aC5DbHJTaGFwZVBvcE91dD1oLkNsclNoYXBlVXNlcnM9aC5DbHJTaGFwZVVubG9jaz1oLkNsclNoYXBlTG9jaz1oLkNsclNoYXBlVXBsb2FkPWguQ2xy'@; put 'U2hhcGVEb3dubG9hZD1oLkNsclNoYXBlTGlnaHRidWxiPWguQ2xyU2hhcGVWaWV3Q2FyZHM9aC5DbHJTaGFwZVZpZXdMaXN0PWguQ2xyU2hhcGVTeW5jPWguQ2xyU2hhcGVSZWZyZXNoPWguQ2xyU2hhcGVOb3RlPWguQ2xyU2hhcGVQZW5jaWw9aC5DbHJTaGFwZVRoZXJtb21ldGVyPWguQ2xy'@; put 'U2hhcGVCdWc9aC5DbHJTaGFwZVNjaXNzb3JzPWguQ2xyU2hhcGVBc3Rlcmlzaz1oLkNsclNoYXBlQm9vaz1oLkNsclNoYXBlT2JqZWN0cz1oLkNsclNoYXBlUmVzaXplPWguQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2s9aC5DbHJTaGFwZUN1cnNvckhhbmQ9aC5DbHJTaGFwZUN1cnNvckFycm93'@; put 'PWguQ2xyU2hhcGVHcmlkVmlldz1oLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb249aC5DbHJTaGFwZU5ldz1oLkNsclNoYXBlQWxhcm1PZmY9aC5DbHJTaGFwZVBpbmJvYXJkPWguQ2xyU2hhcGVBZGRUZXh0PXZvaWQgMCxoLkNsclNoYXBlQ2xvbmU9aC5DbHJTaGFwZUN1cnNvck1vdmU9aC5D'@; put 'bHJTaGFwZVdhbmQ9aC5DbHJTaGFwZVN1bj1oLkNsclNoYXBlTW9vbj1oLkNsclNoYXBlRmlsdGVyMj1oLkNsclNoYXBlRHJhZ0hhbmRsZT1oLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPWguQ2xyU2hhcGVDb2xvclBpY2tlcj1oLkNsclNoYXBlQnJpZWZjYXNlPWguQ2xyU2hhcGVFeHBhbmRD'@; put 'YXJkPWguQ2xyU2hhcGVDb2xsYXBzZUNhcmQ9aC5DbHJTaGFwZVNvcnRCeT1oLkNsclNoYXBlQWNjZXNzaWJpbGl0eTI9aC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPWguQ2xyU2hhcGVTaHJpbms9aC5DbHJTaGFwZVBhcGVyY2xpcD1oLkNsclNoYXBlRmlsZUdyb3VwPWguQ2xyU2hhcGVSZXBl'@; put 'YXQ9aC5DbHJTaGFwZUlkQmFkZ2U9aC5DbHJTaGFwZUJhbGFuY2U9aC5DbHJTaGFwZU9yZ2FuaXphdGlvbj1oLkNsclNoYXBlTm9BY2Nlc3M9aC5DbHJTaGFwZUhvdXJnbGFzcz1oLkNsclNoYXBlRmxhbWU9aC5DbHJTaGFwZVRhcmdldD1oLkNsclNoYXBlQnVsbHNleWU9aC5DbHJTaGFwZVdy'@; put 'ZW5jaD1oLkNsclNoYXBlQm9sdD1oLkNsclNoYXBlTGlicmFyeT1oLkNsclNoYXBlS2V5PWguQ2xyU2hhcGVab29tT3V0PWguQ2xyU2hhcGVab29tSW49aC5DbHJTaGFwZVdpbmRvd1Jlc3RvcmU9aC5DbHJTaGFwZVdpbmRvd01pbj1oLkNsclNoYXBlV2luZG93TWF4PWguQ2xyU2hhcGVXaW5k'@; put 'b3dDbG9zZT1oLkNsclNoYXBlVG9vbHM9aC5DbHJTaGFwZVN3aXRjaD1oLkNsclNoYXBlVHdvV2F5QXJyb3dzPWguQ2xyU2hhcGVGaWxlU2V0dGluZ3M9aC5DbHJTaGFwZVNjcm9sbD1oLkNsclNoYXBlVW5kbz1oLkNsclNoYXBlUmVkbz1oLkNsclNoYXBlTGlzdD1oLkNsclNoYXBlRmlyZXdh'@; put 'bGw9aC5DbHJTaGFwZUNsaXBib2FyZD1oLkNsclNoYXBlU2xpZGVyPWguQ2xyU2hhcGVXb3JsZD1oLkNsclNoYXBlUHJpbnRlcj12b2lkIDAsaC5Fc3NlbnRpYWxTaGFwZXM9aC5DbHJTaGFwZUNvbG9yUGFsZXR0ZT1oLkNsclNoYXBlRmlyc3RBaWQ9aC5DbHJTaGFwZUJldGE9aC5DbHJTaGFw'@; put 'ZURvdENpcmNsZT1oLkNsclNoYXBlQ2lyY2xlPWguQ2xyU2hhcGVDcm9zc2hhaXJzPWguQ2xyU2hhcGVWb2x1bWU9aC5DbHJTaGFwZVRhYmxlPWguQ2xyU2hhcGVTbm93Zmxha2U9aC5DbHJTaGFwZUZ1ZWw9aC5DbHJTaGFwZUZvcm09aC5DbHJTaGFwZUZpc2g9aC5DbHJTaGFwZVRyZWU9aC5D'@; put 'bHJTaGFwZVJlY3ljbGU9aC5DbHJTaGFwZUZpbHRlck9mZj1oLkNsclNoYXBlRmlsZVppcD1oLkNsclNoYXBlQ3Vyc29ySGFuZE9wZW49aC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPWguQ2xyU2hhcGVUcmVlVmlldz1oLkNsclNoYXBlUG9ydHJhaXQ9aC5DbHJTaGFwZVBhc3RlPWguQ2xyU2hh'@; put 'cGVMYW5kc2NhcGU9aC5DbHJTaGFwZUVyYXNlcj1oLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcj1oLkNsclNoYXBlRGV0YWlscz12b2lkIDA7dmFyIGM9eSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNv'@; put 'bmZpZy50cyIpLHM9eSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLEE9eSgKLyohIC4vY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBl'@; put 'cy50cyIpO2guQ2xyU2hhcGVBZGRUZXh0PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMjFIMTNhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMiwxNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMTNBMSwxLDAsMCwwLDEyLDE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9'@; put 'Ik0yNywyN0gxM2ExLDEsMCwwLDAsMCwySDI3YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE1Ljg5LDlhMSwxLDAsMCwwLTEtMUgxMFYzLjIxYTEsMSwwLDAsMC0yLDBWOEgyLjg5YTEs'@; put 'MSwwLDAsMCwwLDJIOHY1LjIxYTEsMSwwLDAsMCwyLDBWMTBoNC44OUExLDEsMCwwLDAsMTUuODksOVoiLz4nKSxoLkNsclNoYXBlUGluYm9hcmQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwzMCw2LDMw'@; put 'LDYsNkgyMlY0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMzLjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40'@; put 'MSwxLjQxbDcsN2ExLDEsMCwxLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMi4xLDExLjE5bC43LjVMMjYuNDYsOCwyNSw2LjU2LDIyLjUxLDkuMTNjLTItLjg3LTQuMzUuMTQtNS45Miwx'@; put 'LjY4bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MiwxLjY4LTUuOTNsMi41NC0yLjU3TDI3Ljg4LDkuMzgsMjQuMjEsMTMuMWwuNDkuNjljLjc2LDEsLjI1LDIuMzctLjQxLDMuMzNMMTgu'@; put 'NzcsMTEuNkMxOS44NCwxMC44NiwyMS4xNSwxMC41LDIyLjEsMTEuMTlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMzAsNiwzMCw2LDZIMjJWNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEy'@; put 'LDIsMCwwLDAsMi0yVjE0SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMzLjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40MSwxLjQxbDEuMzgsMS4zOC00LDRjLTItLjg3LTQuMzUuMTQtNS45MiwxLjY4bC0uNzIu'@; put 'NzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MSwxLjY4LTUuOTJsNC00LDEuMzgsMS4zOGExLDEsMCwxLDAsMS40MS0xLjQxWiIvPicpLGguQ2xyU2hhcGVBbGFybU9mZj0oMCxzLmNsckljb25TVkcp'@; put 'KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNS4zMywyMS41NGEuOS45LDAsMCwwLS40MS0xLjJsLTMuMi0xLjU2TDI0Ljg5LDIyQS44OS44OSwwLDAsMCwyNS4zMywyMS41NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsOC42YS45LjksMCwwLDAtLjkuOXY0LjZsMS44LDEuODFWOS41QS45LjksMCwwLDAsMTgsOC42WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xMS40Miwz'@; put 'LjQzYTUuOCw1LjgsMCwwLDAtNS44MS0uODFMOC4zLDUuMzJBMTYsMTYsMCwwLDEsMTEuNDIsMy40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMTgsNGExMy45MSwxMy45MSwwLDAsMC04LjMsMi43NWwxLjQy'@; put 'LDEuNDNBMTIsMTIsMCwwLDEsMjcuODIsMjQuOWwxLjQyLDEuNDNBMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMS41Niw0LjIxLDIuNzMsNS4zOGE1LjcsNS43LDAsMCwwLC42Nyw2'@; put 'LjFBMTUuNzgsMTUuNzgsMCwwLDEsNS40Niw4LjEyTDYuODgsOS41NUExMy45NCwxMy45NCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjg5LDEzLjg5LDAsMCwwLDE2LjgsMGw0LjE0LDQuMTVMMzIsMzEuOSwzLDIuOFpNMjUsMjcu'@; put 'NzJBMTEuODksMTEuODksMCwwLDEsMTgsMzAsMTIsMTIsMCwwLDEsNiwxOGExMS44OSwxMS44OSwwLDAsMSwyLjI5LTdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4z'@; put 'Ny0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTEuNDIsMy40M2E1LjgsNS44LDAsMCwwLTUuNzctLjgyTDguMzMs'@; put 'NS4zQTE2LDE2LDAsMCwxLDExLjQyLDMuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjQuOTIsMjEuOTRsNC4zNCw0LjM2QTE0LDE0LDAsMCwwLDkuNzUsNi43M0wxNywxNFY5LjY5YTEsMSwwLDAsMSwyLDBWMTZs'@; put 'Mi4zMywyLjM0TDI1LDIwLjFhMSwxLDAsMCwxLC40NywxLjMzQTEsMSwwLDAsMSwyNC45MiwyMS45NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xLjYxLDQuMjEsMi43Myw1LjM0YTUuNzMsNS43MywwLDAsMCwuNjcs'@; put 'Ni4xNUExNS44OCwxNS44OCwwLDAsMSw1LjQ4LDguMUw2LjkxLDkuNTJBMTMuOTQsMTMuOTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy44OSwxMy44OSwwLDAsMCwxNi44MywwbDQuMTYsNC4xN0wzMiwzMS45LDMsMi44WiIvPicp'@; put 'LGguQ2xyU2hhcGVOZXc9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNC41OSwyM2wtNC4wOC01LDQtNC45YTEuODIsMS44MiwwLDAsMCwuMjMtMS45NEExLjkzLDEuOTMsMCwwLDAsMzIuOTQsMTBoLTMxQTEu'@; put 'OTEsMS45MSwwLDAsMCwwLDExLjg4VjI0LjEzQTEuOTEsMS45MSwwLDAsMCwxLjk0LDI2SDMzLjA1YTEuOTMsMS45MywwLDAsMCwxLjc3LTEuMDlBMS44MiwxLjgyLDAsMCwwLDM0LjU5LDIzWk0yLDI0VjEySDMyLjc4bC00Ljg0LDUuOTNMMzIuODUsMjRaIi8+XG4gICAgICAgICAgICA8cG9s'@; put 'eWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHBvaW50cz0iOS4zOSAxOS4zNSA2LjEzIDE1IDUgMTUgNSAyMS4xOCA2LjEzIDIxLjE4IDYuMTMgMTYuODQgOS4zOSAyMS4xOCAxMC41MSAyMS4xOCAxMC41MSAxNSA5LjM5IDE1IDkuMzkgMTkuMzUiLz5c'@; put 'biAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgcG9pbnRzPSIxMi4xOCAyMS4xOCAxNi44NCAyMS4xOCAxNi44NCAyMC4xNiAxMy4zMSAyMC4xNiAxMy4zMSAxOC41NSAxNi41IDE4LjU1IDE2LjUgMTcuNTIgMTMuMzEgMTcu'@; put 'NTIgMTMuMzEgMTYuMDMgMTYuODQgMTYuMDMgMTYuODQgMTUgMTIuMTggMTUgMTIuMTggMjEuMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNC41MiAxOS40MyAyMy4wNiAxNSAyMS44NCAxNSAy'@; put 'MC4zNyAxOS40MyAxOS4wNSAxNSAxNy44MiAxNSAxOS43OCAyMS4xOCAyMC44OSAyMS4xOCAyMi40NSAxNi41OSAyNCAyMS4xOCAyNS4xMyAyMS4xOCAyNy4wOCAxNSAyNS44NSAxNSAyNC41MiAxOS40MyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMSIgZD0iTTM0LjExLDI0LjQ5bC0zLjkyLTYuNjIsMy44OC02LjM1QTEsMSwwLDAsMCwzMy4yMiwxMEgyYTIsMiwwLDAsMC0yLDJWMjRhMiwyLDAsMCwwLDIsMkgzMy4yNUExLDEsMCwwLDAsMzQuMTEsMjQuNDlabS0yMy42LTMuMzFIOS4zOUw2LjEzLDE2Ljg0djQuMzVINVYx'@; put 'NUg2LjEzbDMuMjcsNC4zNVYxNWgxLjEyWk0xNi44NCwxNkgxMy4zMXYxLjQ5aDMuMnYxaC0zLjJ2MS42MWgzLjUzdjFIMTIuMThWMTVoNC42NVptOC4yOSw1LjE2SDI0bC0xLjU1LTQuNTlMMjAuOSwyMS4xOEgxOS43OGwtMi02LjE4SDE5bDEuMzIsNC40M0wyMS44NCwxNWgxLjIybDEuNDYs'@; put 'NC40M0wyNS44NSwxNWgxLjIzWiIvPicpLGguQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwx'@; put 'NGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0yOC4yOSwyNC42MWExLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0u'@; put 'MTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMiwxNCw1LjM4LDE0LDEyQTExLjA4LDExLjA4LDAsMCwxLDI4LjI5LDI0LjYxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTIiIGQ9Ik0xOCwyMC42M2ExLDEsMCwwLDAsMS0xVjguNDhhMSwxLDAsMSwwLTIsMFYxOS42MUExLDEsMCwwLDAsMTgsMjAuNjNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTgiIGN5PSIyNC4wNCIgcj0i'@; put 'MS4zMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAt'@; put 'Ni43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0xNi45Myw5LjEzYTEuNDEsMS40MSwwLDEsMSwyLjgxLDBWMTguOWExLjQxLDEuNDEsMCwxLDEtMi44MSwwWm0xLjQxLDE3LjM1YTEuODcsMS44NywwLDEsMSwxLjg3LTEuODdBMS44NywxLjg3LDAsMCwx'@; put 'LDE4LjM0LDI2LjQ3WiIvPicpLGguQ2xyU2hhcGVHcmlkVmlldz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LDRINkEyLDIsMCwwLDAsNCw2djhhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWNkEy'@; put 'LDIsMCwwLDAsMTQsNFpNNiwxNFY2aDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAsNEgyMmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAs'@; put 'NFpNMjIsMTRWNmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0LDIwSDZhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjIyQTIsMiwwLDAsMCwxNCwyMFpNNiwzMFYy'@; put 'Mmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLDIwSDIyYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYyMkEyLDIsMCwwLDAsMzAsMjBaTTIyLDMwVjIyaDh2OFoi'@; put 'Lz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjQiIHk9IjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0'@; put 'aC0yIiB4PSIyMCIgeT0iNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIHg9IjQiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIv'@; put 'PlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPicpLGguQ2xyU2hhcGVDdXJzb3JBcnJvdz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LjU4LDMyLjMxYTEsMSwwLDAsMS0uOTQtLjY1TDQsNS42NUExLDEsMCwwLDEsNS4yNSw0LjM3bDI2LDkuNjhhMSwxLDAsMCwxLS4wNSwxLjg5bC04LjM2LDIuNTcsOC4zLDguM2ExLDEsMCwwLDEsMCwxLjQxbC0z'@; put 'LjI2LDMuMjZhMSwxLDAsMCwxLS43MS4yOWgwYTEsMSwwLDAsMS0uNzEtLjI5bC04LjMzLTguMzMtMi42LDguNDVhMSwxLDAsMCwxLS45My43MVptMy4wOS0xMmExLDEsMCwwLDEsLjcxLjI5bDguNzksOC43OUwyOSwyNy41MWwtOC43Ni04Ljc2YTEsMSwwLDAsMSwuNDEtMS42Nmw3LjEzLTIu'@; put 'Mkw2LjYsN2w3Ljg5LDIxLjJMMTYuNzEsMjFhMSwxLDAsMCwxLC43MS0uNjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjksMTIuMzYsMy44OCwzQTEsMSwwLDAsMCwyLjU5LDQuMjhMMTIsMjkuNDRhMSwxLDAsMCww'@; put 'LDEuODktLjA1bDIuNjktOC43NSw5LjEyLDguOWExLDEsMCwwLDAsMS40MSwwbDIuMzUtMi4zNWExLDEsMCwwLDAsMC0xLjQxbC05LjA5LTguODZMMjksMTQuMjVBMSwxLDAsMCwwLDI5LDEyLjM2WiIvPicpLGguQ2xyU2hhcGVDdXJzb3JIYW5kPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuNzQsMTUuMTlhMTMuNjYsMTMuNjYsMCwwLDAtNi44Ny0zLjgzQTI2LDI2LDAsMCwwLDE4LDEwLjU4VjUuMjhBMy40LDMuNCwwLDAsMCwxNC41LDIsMy40LDMuNCwwLDAsMCwxMSw1LjI4djEwTDkuNCwxMy43'@; put 'YTMuNzcsMy43NywwLDAsMC01LjI4LDBBMy42NywzLjY3LDAsMCwwLDMsMTYuMzNhMy42LDMuNiwwLDAsMCwxLDIuNTZsNC42Niw1LjUyYTExLjUzLDExLjUzLDAsMCwwLDEuNDMsNCwxMC4xMiwxMC4xMiwwLDAsMCwyLDIuNTR2MS45MmExLjA3LDEuMDcsMCwwLDAsMSwxLjA4SDI3YTEuMDcs'@; put 'MS4wNywwLDAsMCwxLTEuMDh2LTIuN2ExMi44MSwxMi44MSwwLDAsMCwzLTguMzZ2LTZBMSwxLDAsMCwwLDMwLjc0LDE1LjE5Wk0yOSwyMS44NmExMC43MiwxMC43MiwwLDAsMS0yLjYsNy4yNiwxLjExLDEuMTEsMCwwLDAtLjQuNzJWMzJIMTQuMTRWMzAuNTJhMSwxLDAsMCwwLS40NC0uODMs'@; put 'Ny4yNiw3LjI2LDAsMCwxLTEuODItMi4yMyw5LjE0LDkuMTQsMCwwLDEtMS4yLTMuNTIsMSwxLDAsMCwwLS4yMy0uNTlMNS41MywxNy41M2ExLjcsMS43LDAsMCwxLDAtMi40MiwxLjc2LDEuNzYsMCwwLDEsMi40NywwbDMsM3YzLjE0bDItMVY1LjI4QTEuNDIsMS40MiwwLDAsMSwxNC41LDQs'@; put 'MS40MiwxLjQyLDAsMCwxLDE2LDUuMjh2MTEuOGwyLC40M1YxMi41OWEyNC4yNywyNC4yNywwLDAsMSwyLjUxLjE4VjE4bDEuNi4zNVYxM2MuNDEuMDguODMuMTcsMS4yNi4yOGExNC44OCwxNC44OCwwLDAsMSwxLjUzLjQ5djUuMTVsMS42LjM1VjE0LjVBMTEuMDYsMTEuMDYsMCwwLDEsMjks'@; put 'MTYuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjguNjksMTQuMzN2NC44M2wtMi0uNDNWMTMuMjRhMTYuMTksMTYuMTksMCwwLDAtMi4zMy0uODR2NS44MmwtMi0uNDNWMTJjLTEuMS0uMTgtMi4xOC0uMy0zLjA4'@; put 'LS4zNnY1LjUxbC0yLS40M1YxMS40OGgwVjQuMzRhMi41MywyLjUzLDAsMCwwLTIuNi0yLjQzLDIuNTMsMi41MywwLDAsMC0yLjYsMi40M1YxNy4yN2gwdjIuNTlsLTIsMVYxNS42TDcuNzUsMTMuMjFhMi44MywyLjgzLDAsMCwwLTQsMCwyLjkzLDIuOTMsMCwwLDAsMCw0LjA5bDYsNy4xYTEw'@; put 'LjgyLDEwLjgyLDAsMCwwLDEuMzksNC4yMiw4LjQyLDguNDIsMCwwLDAsMi4yMSwyLjczdjIuNTZIMjcuNzlWMzAuNjJhMTIuNTQsMTIuNTQsMCwwLDAsMy04LjV2LTZBMTAsMTAsMCwwLDAsMjguNjksMTQuMzNaIi8+JyksaC5DbHJTaGFwZUN1cnNvckhhbmRDbGljaz0oMCxzLmNsckljb25T'@; put 'VkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLjQsMTcuNmMtMS44LTEuOS00LjItMy4yLTYuNy0zLjdjLTEuMS0wLjMtMi4yLTAuNS0zLjMtMC42YzIuOC0zLjMsMi4zLTguMy0xLTExLjFzLTguMy0yLjMtMTEuMSwxcy0yLjMsOC4z'@; put 'LDEsMTEuMVxuICAgICAgICAgICAgICAgICAgICBjMC42LDAuNSwxLjIsMC45LDEuOCwxLjF2Mi4ybC0xLjYtMS41Yy0xLjQtMS40LTMuNy0xLjQtNS4yLDBjLTEuNCwxLjQtMS41LDMuNi0wLjEsNWw0LjYsNS40YzAuMiwxLjQsMC43LDIuNywxLjQsMy45XG4gICAgICAgICAgICAgICAgICAg'@; put 'IGMwLjUsMC45LDEuMiwxLjgsMS45LDIuNXYxLjljMCwwLjYsMC40LDEsMSwxaDEzLjZjMC41LDAsMS0wLjUsMS0xdi0yLjZjMS45LTIuMywyLjktNS4yLDIuOS04LjF2LTUuOFxuICAgICAgICAgICAgICAgICAgICBDMzAuNywxNy45LDMwLjYsMTcuNywzMC40LDE3LjZ6IE04LjQsOC4yYzAt'@; put 'My4zLDIuNy01LjksNi01LjhjMy4zLDAsNS45LDIuNyw1LjgsNmMwLDEuOC0wLjgsMy40LTIuMiw0LjVWNy45XG4gICAgICAgICAgICAgICAgICAgIGMtMC4xLTEuOC0xLjYtMy4yLTMuNC0zLjJjLTEuOC0wLjEtMy40LDEuNC0zLjQsMy4ydjUuMkM5LjUsMTIuMSw4LjUsMTAuMiw4LjQsOC4y'@; put 'TDguNCw4LjJ6IE0yOC43LDI0YzAuMSwyLjYtMC44LDUuMS0yLjUsNy4xXG4gICAgICAgICAgICAgICAgICAgIGMtMC4yLDAuMi0wLjQsMC40LTAuNCwwLjd2Mi4xSDE0LjJ2LTEuNGMwLTAuMy0wLjItMC42LTAuNC0wLjhjLTAuNy0wLjYtMS4zLTEuMy0xLjgtMi4yYy0wLjYtMS0xLTIuMi0x'@; put 'LjItMy40XG4gICAgICAgICAgICAgICAgICAgIGMwLTAuMi0wLjEtMC40LTAuMi0wLjZsLTQuOC01LjdjLTAuMy0wLjMtMC41LTAuNy0wLjUtMS4yYzAtMC40LDAuMi0wLjksMC41LTEuMmMwLjctMC42LDEuNy0wLjYsMi40LDBsMi45LDIuOXYzbDEuOS0xVjcuOVxuICAgICAgICAgICAgICAg'@; put 'ICAgICBjMC4xLTAuNywwLjctMS4zLDEuNS0xLjJjMC43LDAsMS40LDAuNSwxLjQsMS4ydjExLjVsMiwwLjR2LTQuNmMwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMwLjcsMCwxLjQsMC4xLDIuMSwwLjJ2NS4xbDEuNiwwLjN2LTUuMlxuICAgICAgICAgICAgICAgICAgICBsMS4yLDAuM2MwLjUs'@; put 'MC4xLDEsMC4zLDEuNSwwLjV2NWwxLjYsMC4zdi00LjZjMC45LDAuNCwxLjcsMSwyLjQsMS43TDI4LjcsMjR6Ii8+JyksaC5DbHJTaGFwZVJlc2l6ZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LDRhMSwx'@; put 'LDAsMCwwLDAsMmg5LjU5bC05LjI1LDkuMjVhMSwxLDAsMSwwLDEuNDEsMS40MUwzMCw3LjQxVjE3YTEsMSwwLDAsMCwyLDBWNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNCwxOWExLDEsMCwwLDEsMiwwdjku'@; put 'NTlsOS4yNS05LjI1YTEsMSwwLDEsMSwxLjQxLDEuNDFMNy40MSwzMEgxN2ExLDEsMCwwLDEsMCwySDRaIi8+JyksaC5DbHJTaGFwZU9iamVjdHM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4wOCwxNC45'@; put 'YTEwLjQxLDEwLjQxLDAsMCwxLDEuODctLjcxbC00LTEwLjc3YTIsMiwwLDAsMC0zLjc1LDBMMiwyNS4yNkEyLDIsMCwwLDAsMy45MiwyOGg2Ljk0YTEwLDEwLDAsMCwxLS41Mi0ySDMuOTJMMTIuMDYsNC4xMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsOUgyMmEyLDIsMCwwLDAtMiwydjIuODVjLjIzLDAsLjQ2LDAsLjY5LDBBMTAuNTEsMTAuNTEsMCwwLDEsMjIsMTMuOVYxMUgzMlYyMUgzMC42NWExMC40MiwxMC40MiwwLDAsMSwuNDUsMkgzMmEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwz'@; put 'Miw5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMC42OSwxNS44MWE4LjUsOC41LDAsMSwwLDguNSw4LjVBOC41MSw4LjUxLDAsMCwwLDIwLjY5LDE1LjgxWm0wLDE1YTYuNSw2LjUsMCwxLDEsNi41LTYuNUE2'@; put 'LjUxLDYuNTEsMCwwLDEsMjAuNjksMzAuODFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAuNjUsMjQuNDRhOS41MSw5LjUxLDAsMCwxLDcuMDYtOS4xN0wxMywzYTEsMSwwLDAsMC0xLjg3LDBMMi4wNywyNi41NkEx'@; put 'LDEsMCwwLDAsMywyNy45Mmg4LjMyQTkuNDQsOS40NCwwLDAsMSwxMC42NSwyNC40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMiwxMEgyMGExLDEsMCwwLDAtMSwxdjRhOS40Myw5LjQzLDAsMCwxLDEwLjYzLDlI'@; put 'MzJhMSwxLDAsMCwwLDEtMVYxMUExLDEsMCwwLDAsMzIsMTBaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGN4PSIyMC4xNSIgY3k9IjI0LjQ0IiByPSI3LjUiLz4nKSxoLkNsclNoYXBlQm9vaz0oMCxzLmNsckljb25TVkcp'@; put 'KCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMTAiIHk9IjUuMiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEuNTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjksOEg5'@; put 'Ljg2QTEuODksMS44OSwwLDAsMSw4LDYsMiwyLDAsMCwxLDkuODYsNEgyOWExLDEsMCwwLDAsMC0ySDkuODZBNCw0LDAsMCwwLDYsNmE0LjE0LDQuMTQsMCwwLDAsMCwuNDksMSwxLDAsMCwwLDAsLjI0VjMwYTQsNCwwLDAsMCwzLjg2LDRIMjlhMSwxLDAsMCwwLDEtMVY5LjI1czAtLjA2LDAt'@; put 'LjA5LDAtLjA2LDAtLjA5QTEuMDcsMS4wNywwLDAsMCwyOSw4Wk0yOCwzMkg5Ljg2QTIsMiwwLDAsMSw4LDMwVjkuNTVBMy42MywzLjYzLDAsMCwwLDkuODYsMTBIMjhaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSIxMCIg'@; put 'eT0iNS4yIiB3aWR0aD0iMTgiIGhlaWdodD0iMS41NSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LDhIOS44NkExLjg5LDEuODksMCwwLDEsOCw2LDIsMiwwLDAsMSw5Ljg2LDRIMjlhMSwxLDAsMSwwLDAtMkg5Ljg2'@; put 'QTQsNCwwLDAsMCw2LDZhNC4xNCw0LjE0LDAsMCwwLDAsLjQ5LDEsMSwwLDAsMCwwLC4yNFYzMGE0LDQsMCwwLDAsMy44Niw0SDI5YTEsMSwwLDAsMCwxLTFWOS4yNXMwLS4wNiwwLS4wOSwwLS4wNiwwLS4wOUExLjA3LDEuMDcsMCwwLDAsMjksOFoiLz4nKSxoLkNsclNoYXBlQXN0ZXJpc2s9'@; put 'KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOC44OSwyMC45MWwtNS0yLjkxLDQuODctMi44NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCww'@; put 'LDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQsMS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMsMCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1'@; put 'YTMsMywwLDEsMCwzLTUuMThaTTI4LjI0LDI0YTEsMSwwLDAsMS0xLjM3LjM2TDE5LDE5Ljc1VjI5YTEsMSwwLDAsMS0yLDBWMTkuNzVMOS4xMywyNC4zNmExLDEsMCwwLDEtMS0xLjcyTDE2LDE4bC03LjktNC42NGExLDEsMCwxLDEsMS0xLjcyTDE3LDE2LjI1VjdhMSwxLDAsMCwxLDIsMHY5'@; put 'LjI1bDcuODctNC42MmExLDEsMCwwLDEsMSwxLjcyTDIwLDE4bDcuOSw0LjY0QTEsMSwwLDAsMSwyOC4yNCwyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOC44OSwyMC45MWwtNS0yLjkxLDQuODctMi44NmEzLjEx'@; put 'LDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQsMS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1'@; put 'LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMsMCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaIi8+JyksaC5DbHJTaGFwZVNjaXNzb3JzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC0xIlxuICAgICAgICAgICAgZD0iTTI0LjA2LDE4LjE4bDkuNjEtOC43N2ExLDEsMCwwLDAtLjA5LTEuNTVsLTIuMjQtMS42YTMuNTcsMy41NywwLDAsMC00LjI4LjEyTDE1Ljg4LDE1LjNsLTMuMjYtMi41MmE1LjQ1LDUuNDUsMCwxLDAtMSwxLjc3bDIuNjIsMkwxMCwyMGE1LjQ4LDUuNDgs'@; put 'MCwxLDAsMS41OSwxLjI5TDI4LjMsNy45NGExLjU3LDEuNTcsMCwwLDEsMS44OC0uMDVsMS4yMy44OEwyMS4xLDE4LjE5bDEwLjMxLDkuNC0xLjIzLjg4YTEuNTcsMS41NywwLDAsMS0xLjg4LS4wNWwtOS44MS03Ljg1TDE3LDIxLjkzbDEwLjA2LDhhMy41NywzLjU3LDAsMCwwLDQuMjkuMTJs'@; put 'Mi4yNC0xLjZhMSwxLDAsMCwwLC4wOS0xLjU1Wk03LjQ1LDE0LjU0YTMuNDYsMy40NiwwLDEsMSwzLjQ1LTMuNDZBMy40NiwzLjQ2LDAsMCwxLDcuNDUsMTQuNTRabTAsMTMuNzJBMy40NiwzLjQ2LDAsMSwxLDEwLjksMjQuOCwzLjQ2LDMuNDYsMCwwLDEsNy40NSwyOC4yNloiLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy44MSw4LjEzLDMxLjYzLDYuNDhhMS45MiwxLjkyLDAsMCwwLTIuMzYsMEwxMCwyMi4wNmE1LjQ2LDUuNDYsMCwxLDAsMiwxLjgxbDMuOS0zLjEyTDI5LjI3LDMxLjUyYTEuOTIsMS45Miww'@; put 'LDAsMCwyLjM2LDBsMi4xOC0xLjY0TDIwLjk0LDE5Wk03LjQ1LDI5Ljc1YTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NywyLjg3LDAsMCwxLDcuNDUsMjkuNzVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTQu'@; put 'MywxNS4yNCwxMiwxMy4zOGE1LjQ2LDUuNDYsMCwxLDAtMiwxLjgxTDEyLjE2LDE3Wm0tNi44NS0yYTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NiwyLjg2LDAsMCwxLDcuNDUsMTMuMjNaIi8+JyksaC5DbHJTaGFwZUJ1Zz0oMCxzLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMjMuNTYiIGN5PSIxNy43NCIgcj0iMS45NSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjIyLjQyIiBjeT0iMjUuODgiIHI9IjEuNTgiLz5c'@; put 'biAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIxMi44NiIgY3k9IjE3Ljc0IiByPSIxLjk1Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBjeD0i'@; put 'MTMuOTkiIGN5PSIyNS44OCIgcj0iMS41OCIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0zMC44MywyMEgyOWExOS4yOSwxOS4yOSwwLDAsMC0xLjE4LTUuNzNsMS40Ni0uNzlhMSwxLDAsMCwwLS45NS0xLjc2bC0z'@; put 'LDEuNjRBMTcuNjUsMTcuNjUsMCwwLDEsMjcsMjAuNzJDMjcsMjcsMjMuOCwzMS4yMywxOC44LDMxLjYyVjE1SDE3LjJWMzEuNjJDMTIuMjIsMzEuMjEsOSwyNyw5LDIwLjcyYTE3Ljc0LDE3Ljc0LDAsMCwxLDEuNzMtNy4zNEw3LjcsMTEuNzJhMSwxLDAsMCwwLS45NSwxLjc2bDEuNS44QTE5'@; put 'LjM4LDE5LjM4LDAsMCwwLDcuMDcsMjBINS4xN2ExLDEsMCwwLDAsMCwySDcuMWExNC42MiwxNC42MiwwLDAsMCwxLjY2LDYuMTdMNi44NywyOS40OUExLDEsMCwxLDAsOCwzMS4xMmwxLjg0LTEuMjlBMTAuMzgsMTAuMzgsMCwwLDAsMTgsMzMuNjZhMTAuMzgsMTAuMzgsMCwwLDAsOC4xNC0z'@; put 'LjgxTDI4LDMxLjEyYTEsMSwwLDEsMCwxLjE1LTEuNjRsLTEuODYtMS4zQTE0LjYxLDE0LjYxLDAsMCwwLDI4Ljk0LDIyaDEuODlhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMTEuNTEs'@; put 'NS4zNmExLjY3LDEuNjcsMCwwLDAsMS4wNy0uNTFBMy4yMSwzLjIxLDAsMCwxLDEzLjc2LDZhMTYuMzgsMTYuMzgsMCwwLDAtMi42NSwyLjg5LDIsMiwwLDAsMCwxLjYxLDMuMTlIMjMuMzJBMiwyLDAsMCwwLDI1LjEsMTFhMiwyLDAsMCwwLS4xNy0yLjFBMTYuMzQsMTYuMzQsMCwwLDAsMjIu'@; put 'MjUsNmEzLjIxLDMuMjEsMCwwLDEsMS4xNy0xLjExQTEuNjgsMS42OCwwLDEsMCwyMywzLjI3LDQuNzcsNC43NywwLDAsMCwyMSw1YTUuODEsNS44MSwwLDAsMC0yLjkzLTEsNS44Myw1LjgzLDAsMCwwLTMsMUE0Ljc3LDQuNzcsMCwwLDAsMTMsMy4yN2ExLjY4LDEuNjgsMCwxLDAtMS40OSwy'@; put 'LjA5Wk0xOCw2LjA3YzEuNDUsMCwzLjUzLDEuNTcsNS4zMSw0aDBsLTEwLjYsMEMxNC40OSw3LjYzLDE2LjU2LDYuMDcsMTgsNi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC44MywyMEgyOWExOS4yOSwxOS4y'@; put 'OSwwLDAsMC0xLjE4LTUuNzNsMS40Ni0uNzlhMSwxLDAsMCwwLS45NS0xLjc2bC0zLDEuMjhIMTAuNzhMNy43LDExLjcyYTEsMSwwLDAsMC0uOTUsMS43NmwxLjUuOEExOS4zOCwxOS4zOCwwLDAsMCw3LjA3LDIwSDUuMTdhMSwxLDAsMCwwLDAsMkg3LjFhMTQuNjIsMTQuNjIsMCwwLDAsMS42'@; put 'Niw2LjE3TDYuODcsMjkuNDlBMSwxLDAsMSwwLDgsMzEuMTJsMS44NC0xLjI5QTEwLjI5LDEwLjI5LDAsMCwwLDE3LDMzLjZWMTVoMlYzMy42YTEwLjI5LDEwLjI5LDAsMCwwLDcuMTYtMy43NUwyOCwzMS4xMmExLDEsMCwxLDAsMS4xNS0xLjY0bC0xLjg2LTEuM0ExNC42MSwxNC42MSwwLDAs'@; put 'MCwyOC45NCwyMmgxLjg5YTEsMSwwLDAsMCwwLTJaTTEwLjkxLDE3Ljc0YTEuOTUsMS45NSwwLDEsMSwxLjk1LDEuOTVBMS45NSwxLjk1LDAsMCwxLDEwLjkxLDE3Ljc0Wk0xNCwyNy40NmExLjU4LDEuNTgsMCwxLDEsMS41OC0xLjU4QTEuNTgsMS41OCwwLDAsMSwxNCwyNy40NlptOC40Myww'@; put 'QTEuNTgsMS41OCwwLDEsMSwyNCwyNS44OCwxLjU4LDEuNTgsMCwwLDEsMjIuNDIsMjcuNDZabTEuMTMtNy43N2ExLjk1LDEuOTUsMCwxLDEsMS45NS0xLjk1QTEuOTUsMS45NSwwLDAsMSwyMy41NiwxOS42OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt'@; put 'aS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMS4yMyw1LjI2YTEuNjcsMS42NywwLDAsMCwuNTQtLjMyLDUuOSw1LjksMCwwLDEsLjg5LjU4LDcuNDQsNy40NCwwLDAsMSwuOTUuOTRBMTguNDgsMTguNDgsMCwwLDAsMTAuNzksOS43Yy0uNC41Ny4wOSwxLjI4Ljg2LDEuMjhIMjQuNDRjLjc3LDAsMS4y'@; put 'Ni0uNzEuODYtMS4yOGExOC4zOCwxOC4zOCwwLDAsMC0yLjg4LTMuMjgsNy4yOCw3LjI4LDAsMCwxLC45MS0uOSw1LjksNS45LDAsMCwxLC44OS0uNTgsMS42OSwxLjY5LDAsMSwwLS41Ni0xLjUxLDcuNDksNy40OSwwLDAsMC0xLjMyLjgzLDkuMDYsOS4wNiwwLDAsMC0xLjE5LDEuMThBNS44'@; put 'NSw1Ljg1LDAsMCwwLDE4LDQuM2E1LjkxLDUuOTEsMCwwLDAtMy4xNywxLjE5LDkuMiw5LjIsMCwwLDAtMS4yMi0xLjIxLDcuNDksNy40OSwwLDAsMC0xLjMyLS44MywxLjY4LDEuNjgsMCwxLDAtMS4xMSwxLjgzWiIvPicpLGguQ2xyU2hhcGVUaGVybW9tZXRlcj0oMCxzLmNsckljb25TVkcp'@; put 'KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LDIzLjE3VjExLjQ2SDE3VjIzLjJhMywzLDAsMSwwLDIsMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYs'@; put 'MTVhMSwxLDAsMCwwLDAtMkgyMy45MlYxMUgyNmExLDEsMCwwLDAsMC0ySDIzLjkyVjhhNiw2LDAsMCwwLTEyLDBWMjAuODFhOCw4LDAsMSwwLDEyLS4yVjE5SDI2YTEsMSwwLDAsMCwwLTJIMjMuOTJWMTVaTTI0LDI2YTYsNiwwLDEsMS0xMC4zNi00LjEybC4yNy0uMjlWOGE0LDQsMCwwLDEs'@; put 'OCwwVjIxLjQ0bC4zLjI5QTYsNiwwLDAsMSwyNCwyNloiLz4nKSxoLkNsclNoYXBlUGVuY2lsPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuODcsOC4zMiwyOCwyLjQyYTIuMDcsMi4wNywwLDAsMC0yLjky'@; put 'LDBMNC4yNywyMy4ybC0xLjksOC4yYTIuMDYsMi4wNiwwLDAsMCwyLDIuNSwyLjE0LDIuMTQsMCwwLDAsLjQzLDBMMTMuMDksMzIsMzMuODcsMTEuMjRBMi4wNywyLjA3LDAsMCwwLDMzLjg3LDguMzJaTTEyLjA5LDMwLjIsNC4zMiwzMS44M2wxLjc3LTcuNjJMMjEuNjYsOC43bDYsNlpNMjks'@; put 'MTMuMjVsLTYtNiwzLjQ4LTMuNDYsNS45LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTQuMjIsMjMuMmwtMS45LDguMmEyLjA2LDIuMDYsMCwwLDAsMiwyLjUsMi4xNCwyLjE0LDAsMCwwLC40MywwTDEzLDMy'@; put 'LDI4Ljg0LDE2LjIyLDIwLDcuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODIsOC4zMmwtNS45LTUuOWEyLjA3LDIuMDcsMCwwLDAtMi45MiwwTDIxLjcyLDUuN2w4LjgzLDguODMsMy4yOC0zLjI4QTIu'@; put 'MDcsMi4wNywwLDAsMCwzMy44Miw4LjMyWiIvPicpLGguQ2xyU2hhcGVOb3RlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCwzMEg2VjhIMTkuMjJsMi0ySDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTVsLTIsMloiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjUzLDUuODQsMzAuMTYsMi40N2ExLjYxLDEuNjEsMCwwLDAtMi4yOCwwTDE0LjE3LDE2LjI2bC0xLjExLDQuODFBMS42MSwxLjYxLDAsMCwwLDE0LjYzLDIzLDEuNjksMS42OSwwLDAs'@; put 'MCwxNSwyM2w0Ljg1LTEuMDdMMzMuNTMsOC4xMkExLjYxLDEuNjEsMCwwLDAsMzMuNTMsNS44NFpNMTguODEsMjAuMDhsLTMuNjYuODFMMTYsMTcuMjYsMjYuMzIsNi44N2wyLjgyLDIuODJaTTMwLjI3LDguNTYsMjcuNDUsNS43NCwyOSw0LjE2LDMxLjg0LDdaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw2LjQsMjkuMywyLjdhMS43MSwxLjcxLDAsMCwwLTIuMzYsMEwyMy42NSw2SDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTEuNzZsMy0zQTEuNjcs'@; put 'MS42NywwLDAsMCwzMyw2LjRaTTE4LjgzLDIwLjEzbC00LjE5LjkzLDEtNC4xNSw5LjU1LTkuNTcsMy4yMywzLjIzWk0yOS41LDkuNDMsMjYuMjcsNi4ybDEuODUtMS44NSwzLjIzLDMuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVS'@; put 'ZWZyZXNoPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjIuNCwxMS42NWExLjA5LDEuMDksMCwwLDAsMS4wOSwxLjA5SDM0LjQzVjEuODFhMS4wOSwxLjA5LDAsMSwwLTIuMTksMFY4Ljk1YTE2LjQxLDE2LjQx'@; put 'LDAsMSwwLDEuNDcsMTUuODYsMS4xMiwxLjEyLDAsMCwwLTIuMDUtLjksMTQuMTgsMTQuMTgsMCwxLDEtMS4wNS0xMy4zNkgyMy41QTEuMDksMS4wOSwwLDAsMCwyMi40LDExLjY1WiIvPicpLGguQ2xyU2hhcGVTeW5jPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuODQsMTUuNzJhMSwxLDAsMSwwLTIsLjI5QTEzLjE1LDEzLjE1LDAsMCwxLDMxLDE3Ljk0LDEzLDEzLDAsMCwxLDguNywyN2g1LjM2YTEsMSwwLDAsMCwwLTJoLTl2OWExLDEsMCwxLDAsMiwwVjI4LjJBMTUsMTUsMCwwLDAsMzIuODQs'@; put 'MTUuNzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC4wNiwxQTEuMDUsMS4wNSwwLDAsMCwyOSwyVjcuODNBMTQuOTQsMTQuOTQsMCwwLDAsMywxNy45NGExNS4xNiwxNS4xNiwwLDAsMCwuMiwyLjQ4'@; put 'LDEsMSwwLDAsMCwxLC44NGguMTZhMSwxLDAsMCwwLC44Mi0xLjE1QTEzLjIzLDEzLjIzLDAsMCwxLDUsMTcuOTRhMTMsMTMsMCwwLDEsMTMtMTNBMTIuODcsMTIuODcsMCwwLDEsMjcuNDQsOUgyMi4wNmExLDEsMCwwLDAsMCwySDMxVjJBMSwxLDAsMCwwLDMwLjA2LDFaIi8+JyksaC5DbHJT'@; put 'aGFwZVZpZXdMaXN0PSgwLHMuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTIiIGQ9Ik03LDEwSDMxYTEsMSwwLDAsMCwwLTJIN2ExLDEsMCwwLDAsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxu'@; put 'ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzEsMTRIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTUiIHg9IjIiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0zMSwyMEg3YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAg'@; put 'ICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMiIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIg'@; put 'ZD0iTTMxLDI2SDdhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPicpLGguQ2xyU2hhcGVWaWV3Q2FyZHM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEy'@; put 'LDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAs'@; put 'MCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEs'@; put 'Mi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMyLDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDIt'@; put 'MkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPicpLGguQ2xyU2hhcGVMaWdodGJ1bGI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDIuMjVhMTEsMTEsMCwwLDAtMTEsMTEsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2'@; put 'LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoMkExOC4xNywxOC4xNywwLDAsMCwxMywyMi40NGExOC40NiwxOC40NiwwLDAsMC0yLjIyLTMuOTIsMTUuNzksMTUuNzksMCwwLDEtMS0xLjU0QTguNjQsOC42NCwwLDAsMSw5LDEz'@; put 'LjIzYTksOSwwLDAsMSwxOC4wNywwQTguNjQsOC42NCwwLDAsMSwyNi4yMSwxN2ExNS43OSwxNS43OSwwLDAsMS0xLDEuNTRBMTguNDYsMTguNDYsMCwwLDAsMjMsMjIuNDRhMTguMTcsMTguMTcsMCwwLDAtLjcxLDQuNzFoMmExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywxNywwLDAsMSwy'@; put 'LTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjgsMTAuNjgsMCwwLDAsMS00LjYzQTExLDExLDAsMCwwLDE4LDIuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjYzLDE1LjUxYS44Ljgs'@; put 'MCwwLDAtMS4xMywwbC0zLDMsMi44NiwzLjEzdjUuNTRIMTlWMjFsLTIuMjQtMi40NSwxLjg5LTEuODlBLjguOCwwLDAsMCwxOC42MywxNS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMjkuMTVI'@; put 'MTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZa'@; put 'IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjMyLDEwLjg5bC0yLjczLDIuNzNhLjguOCwwLDAsMCwxLjEzLDEuMTNMMTguNDUsMTJhLjguOCwwLDEsMC0xLjEzLTEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDI3LjE1VjIxbC0yLjI0LTIuNDUsMS44OS0xLjg5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0zLDMsMi44NiwzLjEzdjUuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5c'@; put 'biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS43Miwx'@; put 'NC43NSwxOC40NSwxMmEuOC44LDAsMSwwLTEuMTMtMS4xM2wtMi43MywyLjczYS44LjgsMCwwLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcsMTIuODhjMCwu'@; put 'MTIsMCwuMjMsMCwuMzVBOC42NCw4LjY0LDAsMCwxLDI2LjIxLDE3YTE1Ljc5LDE1Ljc5LDAsMCwxLTEsMS41NEExOC40NiwxOC40NiwwLDAsMCwyMywyMi40NGExOC4xNywxOC4xNywwLDAsMC0uNzEsNC43MWgyYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0Ex'@; put 'Ni4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42MywxMC42MywwLDAsMCwxLTQuNDNBNy40NSw3LjQ1LDAsMCwxLDI3LDEyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMu'@; put 'NzEsMjcuMTVBMTguMTcsMTguMTcsMCwwLDAsMTMsMjIuNDRhMTguNDYsMTguNDYsMCwwLDAtMi4yMi0zLjkyLDE1Ljc5LDE1Ljc5LDAsMCwxLTEtMS41NEE4LjY0LDguNjQsMCwwLDEsOSwxMy4yMyw5LDksMCwwLDEsMjIuNTMsNS40N2E3LjQ1LDcuNDUsMCwwLDEsLjQzLTIsMTEsMTEsMCww'@; put 'LDAtMTYsOS44LDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2Vk'@; put 'Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44Ljgs'@; put 'MCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWkt'@; put 'c29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMi4yNWExMSwxMSwwLDAsMC0xMSwxMSwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAs'@; put 'MSwuNTksNGg1LjY5VjIxLjYxbC0yLjg2LTMuMTMsMy0zYS44LjgsMCwwLDEsMS4xMywxLjEzbC0xLjg5LDEuODlMMTksMjF2Ni4xN0gyNC4zYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42OCwxMC42OCww'@; put 'LDAsMCwxLTQuNjNBMTEsMTEsMCwwLDAsMTgsMi4yNVpNMTguNDUsMTJsLTIuNzMsMi43M2EuOC44LDAsMSwxLTEuMTMtMS4xM2wyLjczLTIuNzNBLjguOCwwLDEsMSwxOC40NSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRo'@; put 'IGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwx'@; put 'LDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2QTcuNDcsNy40NywwLDAsMSwyMywzLjQ0YTExLDExLDAsMCwwLTE2LDkuOCwxMC42'@; put 'OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNGg1LjY5VjIxLjYxbC0yLjg2LTMuMTMsMy0zYS44LjgsMCwwLDEsMS4xMywxLjEzbC0xLjg5LDEuODlMMTksMjF2Ni4xN0gyNC4z'@; put 'YTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42MywxMC42MywwLDAsMCwxLTQuNDNBNy41LDcuNSwwLDAsMSwyMi41LDZabS00LDYtMi43MywyLjczYS44LjgsMCwxLDEtMS4xMy0xLjEzbDIuNzMtMi43M0Eu'@; put 'OC44LDAsMSwxLDE4LjQ1LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00'@; put 'LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxoLkNsclNoYXBlRG93bmxvYWQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAg'@; put 'ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDguODEsMTcuNDZhMSwxLDAsMSwwLTEuNDEsMS40'@; put 'MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDI1LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2YTEsMSwwLDEsMC0xLjQxLDEuNDFaIi8+XG4g'@; put 'ICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl'@; put 'cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVk'@; put 'IiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwyNS42NVY1YTEsMSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmExLDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+'@; put 'JyksaC5DbHJTaGFwZVVwbG9hZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC44MSwxNSwxNyw2LjgzVjI3LjQ4YTEsMSwwLDAsMCwyLDBWNi44M0wyNy4xOSwxNWExLDEsMCwwLDAsMS40MS0xLjQxTDE4LDMsNy4zOSwxMy42MUExLDEsMCwxLDAsOC44MSwxNVoiLz5cbiAgICAgICAgICAgICAgICA8'@; put 'cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMxLDMxSDVjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMjZjMC42LDAsMS0wLjQsMS0xUzMxLjYsMzEsMzEsMzF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGgg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik04LjgsMTVMMTcsNi44djIwLjZjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMVY2LjhMMjAuMSw4bDEtMS44TDE4LDNMNy40LDEzLjZDNywxNCw2LjksMTQuNiw3LjIsMTVzMSww'@; put 'LjUsMS40LDAuMUM4LjcsMTUuMSw4LjgsMTUuMSw4LjgsMTV6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42'@; put 'LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAg'@; put 'ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl'@; put 'ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNOC44MSwxNSwxNyw2LjgzVjI3LjQ4YTEsMSwwLDAsMCwyLDBWNi44M0wyNy4xOSwxNWExLDEsMCwwLDAsMS40MS0xLjQxTDE4LDMsNy4zOSwxMy42MUExLDEsMCwxLDAsOC44MSwxNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2ly'@; put 'Y2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGguQ2xyU2hhcGVMb2NrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMDksMjAuNTlBMi40MSwyLjQxLDAsMCwwLDE3LDI1LjE0VjI4aDJWMjUuMjNhMi40MSwyLjQxLDAsMCwwLS45MS00LjY0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk'@; put 'PSJNMjYsMTVWMTAuNzJhOC4yLDguMiwwLDAsMC04LTguMzYsOC4yLDguMiwwLDAsMC04LDguMzZWMTVIN1YzMmEyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMTVaTTEyLDEwLjcyYTYuMiw2LjIsMCwwLDEsNi02LjM2LDYuMiw2LjIsMCwwLDEsNiw2LjM2VjE1SDEyWk05LDMyVjE3'@; put 'SDI3VjMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwxNVYxMC43MmE4LjIsOC4yLDAsMCwwLTgtOC4zNiw4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUg3VjMyYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCww'@; put 'LDItMlYxNVpNMTksMjUuMjNWMjhIMTdWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVpNMjQsMTVIMTJWMTAuNzJhNi4yLDYuMiwwLDAsMSw2LTYuMzYsNi4yLDYuMiwwLDAsMSw2LDYuMzZaIi8+JyksaC5DbHJTaGFwZVVubG9jaz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEyLDI1LjE0VjI4aDJWMjUuMjNhMi40MiwyLjQyLDAsMSwwLTItLjA5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYsMmE4LjIsOC4y'@; put 'LDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgyMFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIsMCwwLDAsMjYsMlpNMjIsMTdWMzJINFYxN1oi'@; put 'Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMmE4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgyMFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRh'@; put 'Ni4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIsMCwwLDAsMjYsMlpNMTQsMjUuMjNWMjhIMTJWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVoiLz4nKSxoLkNsclNoYXBlVXNlcnM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy45LDE3LjNjMi43LDAsNC44LTIuMiw0LjgtNC45YzAtMi43LTIuMi00LjgtNC45LTQuOGMtMi43LDAtNC44LDIuMi00LjgsNC44QzEzLDE1LjEsMTUuMiwxNy4zLDE3LjksMTcuM3ogTTE3LjgsOS42QzE3LjksOS42LDE3Ljks'@; put 'OS42LDE3LjgsOS42YzEuNiwwLDIuOSwxLjMsMi45LDIuOXMtMS4zLDIuOC0yLjksMi44Yy0xLjYsMC0yLjgtMS4zLTIuOC0yLjhDMTUsMTAuOSwxNi4zLDkuNiwxNy44LDkuNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtMiIgZD0iTTMyLjcsMTYuN2MtMS45LTEuNy00LjQtMi42LTctMi41Yy0wLjMsMC0wLjUsMC0wLjgsMGMtMC4yLDAuOC0wLjUsMS41LTAuOSwyLjFjMC42LTAuMSwxLjEtMC4xLDEuNy0wLjFjMS45LTAuMSwzLjgsMC41LDUuMywxLjZWMjVoMnYtOEwzMi43LDE2Ljd6Ii8+XG4gICAgICAg'@; put 'ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMy40LDcuOGMwLjUtMS4yLDEuOS0xLjgsMy4yLTEuM2MxLjIsMC41LDEuOCwxLjksMS4zLDMuMmMtMC40LDAuOS0xLjMsMS41LTIuMiwxLjVjLTAuMiwwLTAuNSwwLTAuNy0wLjFj'@; put 'MC4xLDAuNSwwLjEsMSwwLjEsMS40YzAsMC4yLDAsMC40LDAsMC42YzAuMiwwLDAuNCwwLjEsMC42LDAuMWMyLjUsMCw0LjUtMiw0LjUtNC40YzAtMi41LTItNC41LTQuNC00LjVjLTEuNiwwLTMsMC44LTMuOCwyLjJDMjIuNSw2LjgsMjMsNy4yLDIzLjQsNy44eiIvPlxuICAgICAgICAgICAg'@; put 'ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTIsMTYuNGMtMC40LTAuNi0wLjctMS4zLTAuOS0yLjFjLTAuMywwLTAuNSwwLTAuOCwwYy0yLjYtMC4xLTUuMSwwLjgtNywyLjRMMywxN3Y4aDJ2LTcuMmMxLjYtMS4xLDMuNC0xLjcsNS4z'@; put 'LTEuNkMxMC45LDE2LjIsMTEuNSwxNi4zLDEyLDE2LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xMC4zLDEzLjFjMC4yLDAsMC40LDAsMC42LTAuMWMwLTAuMiwwLTAuNCwwLTAuNmMwLTAuNSwwLTEs'@; put 'MC4xLTEuNGMtMC4yLDAuMS0wLjUsMC4xLTAuNywwLjFjLTEuMywwLTIuNC0xLjEtMi40LTIuNGMwLTEuMywxLjEtMi40LDIuNC0yLjRjMSwwLDEuOSwwLjYsMi4zLDEuNWMwLjQtMC41LDEtMSwxLjUtMS40Yy0xLjMtMi4xLTQtMi44LTYuMS0xLjVjLTIuMSwxLjMtMi44LDQtMS41LDYuMUM3'@; put 'LjMsMTIuMyw4LjcsMTMuMSwxMC4zLDEzLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0yNi4xLDIyLjdsLTAuMi0wLjNjLTItMi4yLTQuOC0zLjUtNy44LTMuNGMtMy0wLjEtNS45LDEuMi03LjksMy40'@; put 'TDEwLDIyLjd2Ny42YzAsMC45LDAuNywxLjcsMS43LDEuN2MwLDAsMCwwLDAsMGgxMi44YzAuOSwwLDEuNy0wLjgsMS43LTEuN2MwLDAsMCwwLDAsMFYyMi43eiBNMjQuMSwzMEgxMnYtNi42YzEuNi0xLjYsMy44LTIuNCw2LjEtMi40YzIuMi0wLjEsNC40LDAuOCw2LDIuNFYzMHoiLz5cbiAg'@; put 'ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTExLjA5LDE0LjU3Yy4xLDAsLjIsMCwuMzEsMGE2LjQzLDYuNDMsMCwwLDEsLjA5LTIsMi4wOSwyLjA5LDAsMSwxLDEuNDctMyw2LjU4LDYu'@; put 'NTgsMCwwLDEsMS41NS0xLjMxLDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMywxOC4xNGE2LjUzLDYuNTMsMCwwLDEtMS4y'@; put 'OC0yLjJsLS42MywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY3aDJWMTkuNTFhNyw3LDAsMCwxLDQuNjctMS42QTguMDksOC4wOSwwLDAsMSwxMywxOC4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTMxLjM1LDE4LjQyQTguNTksOC41OSwwLDAsMCwyNSwxNS45MWMtLjMyLDAtLjYsMC0uOS4wNmE2LjUzLDYuNTMsMCwwLDEtMS4zNSwyLjI1QTcuOSw3LjksMCwwLDEsMjUsMTcuOTFhNi45NCw2Ljk0LDAsMCwxLDQuNjQsMS41OHY2LjI3aDJW'@; put 'MTguN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LjEsMTkuNzNBOS42OSw5LjY5LDAsMCwwLDExLDIyLjQ3bC0uMjUuMjh2Ny4zM2ExLjU3LDEuNTcsMCwwLDAsMS42'@; put 'MSwxLjU0SDIzLjgzYTEuNTcsMS41NywwLDAsMCwxLjYxLTEuNTRWMjIuNzNsLS4yNS0uMjhBOS41OCw5LjU4LDAsMCwwLDE4LjEsMTkuNzNabTUuMzMsOS44OEgxMi43M1YyMy41NWE4LjA4LDguMDgsMCwwLDEsNS4zNy0xLjgyLDgsOCwwLDAsMSw1LjMzLDEuOFoiLz5cbiAgICAgICAgICAg'@; put 'ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTIwLjI4LDE0LjI3YTIuNDYsMi40NiwwLDEsMS0yLjQyLTIuODksMi40NCwyLjQ0LDAsMCwxLDEsLjI0LDMuNjcsMy42NywwLDAsMSwuNDMtMiw0LjQxLDQu'@; put 'NDEsMCwwLDAtMS40OC0uMjdBNC40Nyw0LjQ3LDAsMSwwLDIyLjE0LDE1LDMuNjksMy42OSwwLDAsMSwyMC4yOCwxNC4yN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1h'@; put 'bGVydCIgZD0iTTI3LjE4LjhsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzRhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjM5LjhBMS4yOCwxLjI4LDAsMCwwLDI3LjE4LjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh'@; put 'ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTEuMDksMTQuNTdjLjEsMCwuMiwwLC4zMSwwYTYuNDMsNi40MywwLDAsMSwuMDktMiwyLjA5LDIuMDksMCwxLDEsMS40Ny0zLDYuNTgsNi41OCwwLDAsMSwxLjU1LTEuMzEsNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oi'@; put 'Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xMywxOC4xNGE2LjUzLDYuNTMsMCwwLDEtMS4yOC0yLjJsLS42MywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY3'@; put 'aDJWMTkuNTFhNyw3LDAsMCwxLDQuNjctMS42QTguMDksOC4wOSwwLDAsMSwxMywxOC4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMS4zNSwxOC40MkE4LjU5LDguNTks'@; put 'MCwwLDAsMjUsMTUuOTFjLS4zMiwwLS42LDAtLjkuMDZhNi41Myw2LjUzLDAsMCwxLTEuMzUsMi4yNUE3LjksNy45LDAsMCwxLDI1LDE3LjkxYTYuOTQsNi45NCwwLDAsMSw0LjY0LDEuNTh2Ni4yN2gyVjE4LjdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMTcuODYsMTguM2E0LjQ3LDQuNDcsMCwxLDAtNC40Ny00LjQ3QTQuNDcsNC40NywwLDAsMCwxNy44NiwxOC4zWm0wLTYuOTNhMi40NywyLjQ3LDAsMSwxLTIuNDcsMi40N0EyLjQ3LDIuNDcsMCwwLDEsMTcuODYs'@; put 'MTEuMzdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiBkPSJNMTguMSwxOS43M0E5LjY5LDkuNjksMCwwLDAsMTEsMjIuNDdsLS4yNS4yOHY3LjMzYTEuNTcsMS41NywwLDAsMCwxLjYx'@; put 'LDEuNTRIMjMuODNhMS41NywxLjU3LDAsMCwwLDEuNjEtMS41NFYyMi43M2wtLjI1LS4yOEE5LjU4LDkuNTgsMCwwLDAsMTguMSwxOS43M1ptNS4zMyw5Ljg4SDEyLjczVjIzLjU1YTguMDgsOC4wOCwwLDAsMSw1LjM3LTEuODIsOCw4LDAsMCwxLDUuMzMsMS44WiIvPlxuICAgICAgICAgICAg'@; put 'ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgZD0iTTI2LjM3LDEyYTIsMiwwLDAsMS0yLjA5LjQyLDYuNTMsNi41MywwLDAsMSwuMTUsMS4zOCw2LjU5LDYuNTksMCwwLDEsMCwuNjgsNCw0LDAsMCwwLC41Ny4wNiw0'@; put 'LjA4LDQuMDgsMCwwLDAsMy4zLTEuN0E3LjQ1LDcuNDUsMCwwLDEsMjYuMzcsMTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiBkPSJNMjIuOTUsNi45M2E0LjE2LDQuMTYsMCwwLDAt'@; put 'MS40NywxLjQ0QTYuNTksNi41OSwwLDAsMSwyMyw5Ljc3YTIuMSwyLjEsMCwwLDEsLjU5LS44M0E3LjQ0LDcuNDQsMCwwLDEsMjIuOTUsNi45M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJh'@; put 'ZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwLjMzIiBjeT0iNS42NyIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0'@; put 'LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU5LDYuNTksMCwwLDEsMTIsMTYuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMxLjM0LDE4LjYzYTgu'@; put 'NjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z'@; put 'b2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTQiIGQ9Ik0yNC40MywxMy40NGE2LjU0LDYuNTQsMCwwLDEsMCwuNjksNC4wOSw0LjA5LDAsMCwwLC41OC4wNWguMTlBNC4wOSw0LjA5LDAsMSwwLDIxLjQ3LDgsNi41Myw2LjUzLDAsMCwxLDI0LjQzLDEzLjQ0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNs'@; put 'ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgY3g9IjE3Ljg3IiBjeT0iMTMuNDUiIHI9IjQuNDciLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4y'@; put 'NS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTkuNTgsOS41OCwwLDAsMCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHIt'@; put 'aS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU5LDYuNTksMCwwLDEsMTIsMTYuMTRaIi8+'@; put 'XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEt'@; put 'MiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4y'@; put 'LDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xOC4xMSwyMC4zQTkuNjks'@; put 'OS42OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p'@; put 'LXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTE3Ljg3LDE3LjkyYTQuNDYsNC40NiwwLDAsMCw0LTIuNTRBMy42NywzLjY3LDAsMCwxLDE5LDkuODlsLjM1LS42MUE0LjQyLDQuNDIsMCwwLDAsMTcuODcsOWE0LjQ3LDQuNDcsMCwxLDAsMCw4LjkzWiIv'@; put 'PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAs'@; put 'MzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTEyLDE2LjE0cS0uNDMsMC0uODcsMGE4LjY3LDguNjcs'@; put 'MCwwLDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTgsNi41OCwwLDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxu'@; put 'ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5c'@; put 'biAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiBjeD0iMTcuODciIGN5PSIxMy40NSIgcj0iNC40NyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs'@; put 'ci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTkuNTgsOS41OCwwLDAsMCwxOC4x'@; put 'MSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNi0tYmFkZ2VkIiBkPSJNMjQuNDMsMTMuNDRhNi41NCw2LjU0LDAsMCwxLDAsLjY5LDQuMDksNC4wOSwwLDAsMCwuNTguMDVoLjE5YTQuMDUsNC4wNSww'@; put 'LDAsMCwyLjUyLTEsNy41LDcuNSwwLDAsMS01LjE0LTYuMzJBNC4xMyw0LjEzLDAsMCwwLDIxLjQ3LDgsNi41Myw2LjUzLDAsMCwxLDI0LjQzLDEzLjQ0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1i'@; put 'YWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxoLkNsclNoYXBlUG9wT3V0PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcsMzNINWEyLDIsMCwwLDEtMi0yVjlBMiwyLDAsMCwx'@; put 'LDUsN0gxNVY5SDVWMzFIMjdWMjFoMlYzMUEyLDIsMCwwLDEsMjcsMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzYTEsMSwwLDAsMCwwLDJIMjkuNTlMMTUuNzQsMTguODVhMSwxLDAsMSwwLDEu'@; put 'NDEsMS40MUwzMSw2LjQxVjE4YTEsMSwwLDAsMCwyLDBWM1oiLz4nKSxoLkNsclNoYXBlRmlsdGVyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNEgzQTEsMSwwLDAsMCwyLDVWNi42N2ExLjc5LDEuNzks'@; put 'MCwwLDAsLjUzLDEuMjdMMTQsMTkuNTh2MTAuMmwyLC43NlYxOWExLDEsMCwwLDAtLjI5LS43MUw0LDYuNTlWNkgzMnYuNjFMMjAuMzMsMTguMjlBMSwxLDAsMCwwLDIwLDE5bDAsMTMuMjFMMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSwwLDAsMCwzNCw2LjdWNUExLDEsMCwwLDAsMzMs'@; put 'NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSwwLDAsMCwzNCw2LjdWNWExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsNVY2LjY3YTEuNzksMS43OSwwLDAs'@; put 'MCwuNTMsMS4yN0wxNCwxOS41OHYxMC4yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy40OCw0aC0zMUEuNTIuNTIsMCwwLDAsMiw0LjUyVjYuMjRhMS4zMywxLjMzLDAsMCwwLC4zOS45NWwxMiwxMnYxMGw3LjI1LDMuNjFWMTkuMTdsMTItMTJBMS4zNSwxLjM1LDAsMCwwLDM0'@; put 'LDYuMjZWNC41MkEuNTIuNTIsMCwwLDAsMzMuNDgsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZVBpbj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMz'@; put 'LDE2LjU5YTEsMSwwLDAsMS0uNzEtLjI5TDE5LjcsMy43MWExLDEsMCwwLDEsMS40MS0xLjQxTDMzLjcxLDE0Ljg5QTEsMSwwLDAsMSwzMywxNi41OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LjUy'@; put 'LDE1LjU2bC0xLjQxLTEuNDEtNy4yLDcuMmExLDEsMCwwLDAtLjI1LDEsOSw5LDAsMCwxLTEuNTMsOC4wOUw1LjU4LDE3Ljg3YTksOSwwLDAsMSw4LjA5LTEuNTMsMSwxLDAsMCwwLDEtLjI1bDcuMi03LjJMMjAuNDQsNy40OGwtNi43OSw2Ljc5QTEwLjk0LDEwLjk0LDAsMCwwLDMuNDEsMTcu'@; put 'MTFhMSwxLDAsMCwwLDAsMS40Mmw2LjMzLDYuMzNMMi4yOSwzMi4yOWExLDEsMCwxLDAsMS40MSwxLjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4yNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0'@; put 'aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTYuNzFhMSwxLDAsMCwxLS43MS0uMjlMMTkuNywzLjgyYTEsMSwwLDAsMSwxLjQxLTEuNDFMMzMuNzEsMTVBMSwxLDAsMCwxLDMzLDE2LjcxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj'@; put 'bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC40NCw3LjU5bC02Ljc5LDYuNzlBMTAuOTQsMTAuOTQsMCwwLDAsMy40MSwxNy4yMmExLDEsMCwwLDAsMCwxLjQyTDkuNzMsMjUsMi4yOSwzMi40MWExLDEsMCwxLDAsMS40MSwxLjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwx'@; put 'LDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4yNGw2Ljc5LTYuNzlaIi8+JyksaC5DbHJTaGFwZUZpbGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yMS44OSw0'@; put 'SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTEuOTJabS0uMywyLjQ5LDYsNS45aC02Wk04LDMwVjZIMjB2OGg4VjMwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTIxLjU5LDEyLjM5VjYuNDlsMS4wNywxYTcuMzEsNy4zMSwwLDAsMSwwLTIuODJMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcu'@; put 'ODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjEzLjVhNy40NSw3LjQ1LDAsMCwxLTMuOTEtMS4xMVpNMjgsMzBIOFY2SDIwdjhoOFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt'@; put 'LWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjgsMTUuNFYzMEg4VjZIMjBWOC4yNWwyLjI1LTMuOUwy'@; put 'MS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAg'@; put 'ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTEuOTJaTTIx'@; put 'LDEzVjUuODRMMjguMywxM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI3LjI1LDEzSDIxVjUuODRsMS42NCwxLjZhNy4yNSw3LjI1LDAsMCwxLDAtMi43NEwyMS44OSw0SDcuODNB'@; put 'MS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjcuMjUsMTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJh'@; put 'ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1LjRjLTIs'@; put 'MC0zLjctMS42LTMuNy0zLjZjMC0wLjcsMC4yLTEuMywwLjUtMS45bDMuMi01LjVMMjEuOSw0SDcuOEM2LjgsNCw2LDQuOSw2LDUuOXYyNC4yYzAsMSwwLjgsMS45LDEuOCwxLjloMjAuM2MxLDAsMS44LTAuOSwxLjgtMS45VjE1LjRIMjIuMnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj'@; put 'bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJj'@; put 'MC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPicpLGguQ2xyU2hhcGVQbHVzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x'@; put 'IiBkPSJNMzAsMTdIMTlWNmExLDEsMCwxLDAtMiwwVjE3SDZhMSwxLDAsMCwwLTEsMSwuOTEuOTEsMCwwLDAsMSwuOTRIMTdWMzBhMSwxLDAsMSwwLDIsMFYxOUgzMGExLDEsMCwwLDAsMS0xQTEsMSwwLDAsMCwzMCwxN1oiLz4nKSxoLkNsclNoYXBlTWludXM9KDAscy5jbHJJY29uU1ZHKSgn'@; put 'PHBhdGggZD0iTTI2LDE3SDEwYTEsMSwwLDAsMCwwLDJIMjZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVNaW51c0NpcmNsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEs'@; put 'MCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMTdIMTJhMSwxLDAsMCwwLDAsMkgyNGEx'@; put 'LDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LDE3LjVIMTJhMS41LDEuNSwwLDAsMSwwLTNIMjRhMS41LDEuNSww'@; put 'LDAsMSwwLDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVQbHVzQ2lyY2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi4xNywxN0gxOVY5LjgzYTEsMSwwLDAsMC0yLDBWMTdIOS44M2ExLDEsMCwwLDAsMCwySDE3djcuMTdh'@; put 'MSwxLDAsMCwwLDIsMFYxOWg3LjE3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwz'@; put 'MiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMThBMTYsMTYsMCwxLDEsMTgsMiwxNiwxNiwwLDAsMSwzNCwxOFptLTguNDEtMS41SDE5LjVWMTAuNDFhMS41LDEuNSww'@; put 'LDAsMC0zLDBWMTYuNUgxMC40MWExLjUsMS41LDAsMCwwLDAsM0gxNi41djYuMDlhMS41LDEuNSwwLDAsMCwzLDBWMTkuNWg2LjA5YTEuNSwxLjUsMCwwLDAsMC0zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGguQ2xyU2hhcGVCYW49KDAscy5jbHJJY29u'@; put 'U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThBMTMuOTMsMTMuOTMsMCwwLDEsNy40Myw4Ljg1TDI3LjE1LDI4LjU3QTE0LDE0LDAsMCwxLDQsMThabTI0'@; put 'LjU3LDkuMTVMOC44NSw3LjQzQTE0LDE0LDAsMCwxLDI4LjU3LDI3LjE1WiIvPicpLGguQ2xyU2hhcGVUaW1lc0NpcmNsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LjYxLDE4bDQuODYtNC44NmExLDEs'@; put 'MCwwLDAtMS40MS0xLjQxTDE4LjIsMTYuNTRsLTQuODktNC44OWExLDEsMCwwLDAtMS40MSwxLjQxTDE2Ljc4LDE4LDEyLDIyLjcyYTEsMSwwLDEsMCwxLjQxLDEuNDFsNC43Ny00Ljc3LDQuNzQsNC43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy'@; put 'LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm04LDIyLjFhMS40LDEuNCwwLDAsMS0yLDJsLTYtNkwxMiwyNi4xMmExLjQsMS40LDAsMSwxLTItMkwxNiwxOC4wOCw5LjgzLDExLjg2YTEuNCwxLjQsMCwxLDEs'@; put 'Mi0yTDE4LDE2LjFsNi4xNy02LjE3YTEuNCwxLjQsMCwxLDEsMiwyTDIwLDE4LjA4WiIvPicpLGguQ2xyU2hhcGVUcmFzaD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE0LDM0SDguODZBMi45MywyLjkz'@; put 'LDAsMCwxLDYsMzFWMTEuMjNIOFYzMWEuOTMuOTMsMCwwLDAsLjg2LDFIMjcuMTRBLjkzLjkzLDAsMCwwLDI4LDMxVjExLjIzaDJWMzFBMi45MywyLjkzLDAsMCwxLDI3LjE0LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt'@; put 'cGF0aC0yIiBkPSJNMzAuNzgsOUg1QTEsMSwwLDAsMSw1LDdIMzAuNzhhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMjEiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIxNSIvPlxu'@; put 'ICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTUiIGQ9Ik0yMyw1Ljg2SDIxLjFWNEgxNC45VjUuODZIMTNWNGEyLDIsMCwwLDEsMS45LTJoNi4yQTIsMiwwLDAsMSwyMyw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik02LDlWMzFhMi45MywyLjkzLDAsMCww'@; put 'LDIuODYsM0gyNy4wOUEyLjkzLDIuOTMsMCwwLDAsMzAsMzFWOVptOSwyMEgxM1YxNGgyWm04LDBIMjFWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAuNzMsNUgyM1Y0QTIsMiwwLDAsMCwyMSwyaC02'@; put 'LjJBMiwyLDAsMCwwLDEzLDRWNUg1QTEsMSwwLDEsMCw1LDdIMzAuNzNhMSwxLDAsMCwwLDAtMloiLz4nKSxoLkNsclNoYXBlVGFnPSgwLHMuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwz'@; put 'MS45MywxOS4yWk0yMC42MiwzMC41Miw2LDE1LjkxVjZoOS45MmwxNC42LDE0LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMmwtMy44LTMuOEgyNS4zMWw1LjIyLDUuMjItOS45LDkuOUw2LDE1LjkxVjZoOS45MmwzLjQxLDMuNDEsMS0xLjc4LTMtM0EyLDIsMCwwLDAsMTUuOTIs'@; put 'NEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs'@; put 'ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxu'@; put 'ICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNMjAu'@; put 'NjIsMzAuNTIsNiwxNS45MVY2aDkuOTJsMTQuNiwxNC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk'@; put 'Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEy'@; put 'LDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGQ9Ik0yOC40NiwxNS43M0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksMTAuMjJsMS40My0yLjQ3TDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDku'@; put 'OS05LjlhMiwyLDAsMCwwLDAtMi44M1pNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTI2Ljg1LDEuNDdsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuNDdBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuNDdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt'@; put 'cGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5'@; put 'LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDkuNjUsMTEuMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAg'@; put 'PGNpcmNsZSBjeD0iMzAiIGN5PSI2LjMzIiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGguQ2xyU2hhcGVUYWdzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1'@; put 'LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAg'@; put 'ICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYx'@; put 'QTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTE3LjI2LDI5LjY5LDMuNjksMTYuMTVWN2g5LjFMMjYuMzcs'@; put 'MjAuNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5c'@; put 'biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5'@; put 'LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk0xNy4yNiwyOS42OSwzLjY5LDE2LjE1VjdoOS4xTDI2LjM3LDIwLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN'@; put 'MzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPGNpcmNs'@; put 'ZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDI0LDE1LjRIMjIuMjNBMy42NSwzLjY1LDAsMCwxLDIxLDE1'@; put 'LjE5bDUuMzMsNS4yOS05LjExLDkuMjFMMy42OSwxNi4xNVY3aDkuMWw2LDUuOTRhMy42OCwzLjY4LDAsMCwxLC4xLTIuNjlMMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4z'@; put 'NkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAu'@; put 'ODMsNi44LDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMTkuNzksOC42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywyOS40Mywx'@; put 'NS40SDI2LjY1bDUuMSw1TDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIx'@; put 'YTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45'@; put 'M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEwLDEuNzMsMS43MywwLDAsMSw2LjY3LDExLjcy'@; put 'WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAs'@; put 'LjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTYuNjcsMTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwxLjczLDEuNzMsMCwwLDEsNi42NywxMS43MloiIGNsYXNzPSJjbHItaS1zb2xpZC0t'@; put 'YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEt'@; put 'OS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC44Myw2LjgsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwxOS43OSw4LjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0x'@; put 'LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMjkuNDMsMTUuNEgyNi42NWw1LjEsNUwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy'@; put 'dGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDI0LDE1LjRIMjIuMjNhMy42NywzLjY3LDAsMCwxLTMuMzYtNS4xNUwxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAs'@; put 'MS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43MywwLDEsMSw4LjQsMTAsMS43MywxLjczLDAsMCwxLDYu'@; put 'NjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4'@; put 'LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+JyksaC5DbHJTaGFwZUhpc3Rvcnk9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4'@; put 'LDkuODNhMSwxLDAsMCwwLTEsMXY4LjcybDUuOSw0QTEsMSwwLDAsMCwyNCwyMS44OGwtNS0zLjM5VjEwLjgzQTEsMSwwLDAsMCwxOCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LjA5LDE2'@; put 'LjA5LDAsMCwwLDQsMTAuMjZWNS4yYTEsMSwwLDAsMC0yLDBWMTRoOC44YTEsMSwwLDAsMCwwLTJINS4zNUExNCwxNCwwLDEsMSw4LjU4LDI4LjM1YTEsMSwwLDAsMC0xLjM1LDEuNDhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y'@; put 'Ii8+JyksaC5DbHJTaGFwZUNsb2NrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjkyLDE4LjRWMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTgsMTcuOTRBOS45NCw5Ljk0LDAsMCwxLDIzLjQxLDkuNTlsLjg1LTEuMzZhMTEuNTUsMTEuNTUsMCwxLDAtOC41MywyMUwxNiwyNy43QTEwLDEwLDAsMCwxLDgsMTcuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTE4LjkyLDEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2bC01LTMuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwx'@; put 'Mi44MWE3LjQ0LDcuNDQsMCwwLDEtMS45MS41OCwxNC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDQsNy40NCwwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn'@; put 'ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw2LjM4YTExLjU2LDExLjU2LDAsMCwwLTIuMjcsMjIuODlMMTYsMjcuN2ExMCwxMCwwLDEsMSw3LjM5LTE4LjFoMGE3LjQ1LDcuNDUsMCwwLDEtLjc4LTIuMjNBMTEuNDUsMTEuNDUsMCwwLDAsMTgsNi4zOFoiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAg'@; put 'ICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NmwtNS0zLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw'@; put 'YXRoIGQ9Ik0zMy43NywxNS4zOWgtMkExNCwxNCwwLDEsMSwyMi4wOSw0LjYxbDEtMS43NkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwzMy43NywxNS4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAg'@; put 'ICAgICAgICA8cGF0aCBkPSJNMTgsOGE5LjgxLDkuODEsMCwwLDEsMiwuMjNsLjg1LTEuNDZhMTEuNTUsMTEuNTUsMCwxLDAtNS4xMywyMi41MkwxNiwyNy43QTEwLDEwLDAsMCwxLDE4LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxl'@; put 'cnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYuMiwyMS4xOGExLDEsMCwwLDEtMS4zOS4yOGwtNS45LTRWMTAuNzVhMSwx'@; put 'LDAsMCwxLDIsMFYxOC40bDUsMy4zOUExLDEsMCwwLDEsMjQuMiwyMy4xOFpNMjMuODUsOC4yM2ExMS4zOSwxMS4zOSwwLDEsMC04LjU0LDIwLjgzTDE1LDMwLjYzYTEzLDEzLDAsMSwxLDkuNy0yMy43N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MUE3LjQ4LDcuNDgsMCwwLDEsMjIuNjgsNy42MywxMS4yNCwxMS4yNCwwLDAsMCwxOCw2LjZhMTEuMzksMTEuMzksMCwwLDAtMi42OSwyMi40N0wxNSwzMC42M0ExMywxMywwLDAsMSwxOCw1YTEyLjgxLDEyLjgxLDAsMCwxLDQuNTEuODIsNy40'@; put 'Niw3LjQ2LDAsMCwxLC42OC0yLjk0LDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1pNMjQuMiwyMy4xOGExLDEsMCwwLDEtMS4zOS4yOGwtNS45LTRWMTAuNzVhMSwxLDAsMCwxLDIsMFYxOC40bDUsMy4zOUExLDEsMCwwLDEsMjQuMiwyMy4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk'@; put 'Z2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBk'@; put 'PSJNMzMuNzcsMTUuMzlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2YzAtLjA5LS4wOS0uMTgtLjEzLS4yN1YxOC40bDUsMy4zOWExLDEsMCwwLDEtMS4xMSwxLjY2bC01LjktNFYxMC43NWExLDEsMCwwLDEsMS45MS0uNDFBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMjAuNzQsN0Ex'@; put 'MS4xOSwxMS4xOSwwLDAsMCwxOCw2LjZhMTEuMzksMTEuMzksMCwwLDAtMi42OSwyMi40N0wxNSwzMC42M0ExMywxMywwLDAsMSwxOCw1YTEyLjgsMTIuOCwwLDAsMSwzLjU3LjUxbDEuNTMtMi42NkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwzMy43NywxNS4zOVoiIGNsYXNzPSJj'@; put 'bHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4'@; put 'LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxoLkNsclNoYXBlQWxhcm1DbG9jaz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDcsMy44NGE1Ljc4LDUu'@; put 'NzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAs'@; put 'MCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2LjQsNC4wOUExNCwxNCwwLDAsMCw4LjExLDI3'@; put 'Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFMMjgsMjcuNzhBMTQsMTQsMCwwLDAsMTYuNCw0LjA5Wk0xOS41OCwyOS45QTEyLDEyLDAsMSwxLDI5LjkyLDE5LjU2'@; put 'LDEyLDEyLDAsMCwxLDE5LjU4LDI5LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjkyLDIwLjM0bC02LjA2LTNWOS41YS45LjksMCwwLDAtMS44LDB2OUwyNC4xMiwyMmEuOS45LDAsMSwwLC43OS0xLjYy'@; put 'WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44Niw5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45LjksMCwxLDAsLjc5LTEuNjJsLTYuMDYtM1oiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhBMTMuODgsMTMuODgsMCwwLDAsMzEuNzcsMTUuNGgtMmExMi4wNywxMi4wNywwLDEsMS04LjY3LTlsMS0xLjhhMTQsMTQsMCwwLDAtMTQsMjMuMjdM'@; put 'NS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAg'@; put 'ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0i'@; put 'Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhBMTMuODgsMTMuODgsMCwwLDAsMzEuNzcsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZMMTksMTMuNHYzLjc4TDI1LDIwLjFh'@; put 'MSwxLDAsMSwxLS44NywxLjhMMTcsMTguNDRWOS42OWExLDEsMCwwLDEsMiwwVjEwTDE5LDkuODlsMy01LjI4YTE0LDE0LDAsMCwwLTE0LDIzLjI3TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSww'@; put 'LDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCww'@; put 'LDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcs'@; put 'MCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhhMTMuODks'@; put 'MTMuODksMCwwLDAsMy4yMS0xNC4zOUE3LjQ2LDcuNDYsMCwwLDEsMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTEtMS4yMUExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwy'@; put 'Ljc0YTEsMSwwLDAsMCwxLjQxLTEuNDFabS0yLjUyLTYuMzVhMSwxLDAsMCwxLTEuMzMuNDdMMTcsMTguNDRWOS42OWExLDEsMCwwLDEsMiwwdjcuNUwyNSwyMC4xQTEsMSwwLDAsMSwyNS40OSwyMS40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0t'@; put 'YmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcs'@; put 'MCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg2LDkuNWEu'@; put 'OS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MmwtNi4wNi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhhMTMuODksMTMuODksMCww'@; put 'LDAsMy4yMS0xNC4zOSw3LDcsMCwwLDEtMi4xMS4wNUExMiwxMiwwLDEsMSwyMi41Niw2LjksNy41NCw3LjU0LDAsMCwxLDIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjExLTEuMjFBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmEx'@; put 'My45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43Myww'@; put 'LDAsMCwzMS40NywzLjg0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQy'@; put 'LDMuNDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNEExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhs'@; put 'Mi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFMMjgsMjcuNzhBMTQsMTQsMCwwLDAsMTgsNFptNy40NywxNy40M2ExLDEsMCwwLDEtMS4zMy40N0wxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDB2Ny41TDI1LDIwLjFBMSwxLDAsMCwxLDI1LjQ5LDIxLjQzWiIgY2xhc3M9ImNsci1pLXNv'@; put 'bGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGguQ2xyU2hhcGVDaXJjbGVBcnJvdz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOCw4LjI2bC03LjYxLDcuNjFhMSwxLDAsMSwwLDEuNDEsMS40MUwxNywxMi4xOHYxNWExLDEsMCwwLDAsMiwwVjEybDUuMjgsNS4yOGExLDEsMCwxLDAsMS40MS0xLjQx'@; put 'WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTgsMTUuNTdhMS40MywxLjQzLDAsMCwxLTIsMEwxOS40LDEzVjI3LjE0YTEuNCwxLjQsMCww'@; put 'LDEtMi44LDB2LTE0bC00LjQzLDQuNDNhMS40LDEuNCwwLDAsMS0yLTJMMTguMDgsNy43LDI2LDE1LjU5QTEuNCwxLjQsMCwwLDEsMjYsMTcuNTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksaC5DbHJTaGFwZUNoaWxkQXJyb3c9KDAscy5jbHJJY29uU1ZH'@; put 'KSgnPHBhdGggZD0iTTI0LjgyLDE1LjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQxTDI3LjIsMjFIOVYzLjc4YTEsMSwwLDEsMC0yLDBWMjFhMiwyLDAsMCwwLDIsMkgyNy4xNWwtMy43NCwzLjc1YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLC43LjI5LDEsMSwwLDAsMCwu'@; put 'NzEtLjI5TDMxLDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZUNvcHk9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjUsN2gtMTlBMS41LDEuNSwwLDAsMCw5LDguNXYyNEExLjUsMS41LDAsMCwwLDEwLjUsMzRoMTlB'@; put 'MS41LDEuNSwwLDAsMCwzMSwzMi41VjguNUExLjUsMS41LDAsMCwwLDI5LjUsN1pNMjksMzJIMTFWOUgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMy41QTEuNSwxLjUsMCwwLDAsMjQuNSwySDUuNUEx'@; put 'LjUsMS41LDAsMCwwLDQsMy41djI0QTEuNSwxLjUsMCwwLDAsNS41LDI5SDZWNEgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcsMy41NkExLjU2LDEuNTYsMCwwLDAsMjUuNDMsMkg1LjU3QTEuNTYsMS41'@; put 'NiwwLDAsMCw0LDMuNTZWMjguNDRBMS41NiwxLjU2LDAsMCwwLDUuNTcsMzBoLjUyVjQuMDdIMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI2IiB3aWR0aD0iMjMiIGhlaWdodD0iMjgiIHJ4PSIxLjUiIHJ5'@; put 'PSIxLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxoLkNsclNoYXBlSGVscD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAs'@; put 'MCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4yOSw4LjkyYTcuMzgsNy4zOCwwLDAsMC01LjcyLDIuNTcsMSwxLDAsMCwwLS4zMi43MS45Mi45MiwwLDAsMCwuOTUuOTIsMS4wOCwxLjA4LDAs'@; put 'MCwwLC43MS0uMjksNS43LDUuNywwLDAsMSw0LjMzLTJjMi4zNiwwLDMuODMsMS41MiwzLjgzLDMuNDF2LjA1YzAsMi4yMS0xLjc2LDMuNDQtNC41NCwzLjY1YS44LjgsMCwwLDAtLjc2LjkyczAsMi4zMiwwLDIuNzVhMSwxLDAsMCwwLDEsLjloLjExYTEsMSwwLDAsMCwuOS0xVjE5LjQ1YzMt'@; put 'LjQyLDUuNDMtMiw1LjQzLTUuMjh2LS4wNUMyNC4xOCwxMS4xMiwyMS44NCw4LjkyLDE4LjI5LDguOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcuNzgiIGN5PSIyNi4yIiByPSIxLjI1IiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjE4LDE0LjE3di0uMDVjMC0zLTIuMzQtNS4yLTUuODgtNS4yYTcuMzgsNy4zOCwwLDAsMC01LjcyLDIuNTcsMSwxLDAsMCwwLS4zMi43MS45Mi45MiwwLDAsMCwuOTUuOTIsMS4w'@; put 'OCwxLjA4LDAsMCwwLC43MS0uMjksNS43LDUuNywwLDAsMSw0LjMzLTJjMi4zNiwwLDMuODMsMS41MiwzLjgzLDMuNDF2LjA1YzAsMi4yMS0xLjc2LDMuNDQtNC41NCwzLjY1YS44LjgsMCwwLDAtLjc2LjkyczAsMi4zMiwwLDIuNzVhMSwxLDAsMCwwLDEsLjloLjExYTEsMSwwLDAsMCwuOS0x'@; put 'VjE5LjQ1QzIxLjc1LDE5LDI0LjE4LDE3LjQ1LDI0LjE4LDE0LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy43OCIgY3k9IjI2LjIiIHI9IjEuMjUiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDMsNy40MywwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40NCw3LjQ0LDAsMCwxLC41OC0xLjkxLDE2LjA2'@; put 'LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ5LDcuNDksMCwwLDEtOS45My05LjkzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1ptLTE1LjM0LDE1YTEuNjUsMS42NSwwLDEsMSwxLjY1LTEuNjVBMS42'@; put 'NSwxLjY1LDAsMCwxLDE3Ljc4LDI3Ljg1Wm0xLjM3LTguMDZ2MS43MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0xLjMxYzEuNTctLjEyLDQuMTgtLjcsNC4xOC0z'@; put 'LjI1LDAtMS44My0xLjQxLTMuMDctMy40My0zLjA3YTUuMzEsNS4zMSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMsNi4yOCw1LjZDMjQuNTgsMTcuMTYsMjIuNjEs'@; put 'MTkuMiwxOS4xNSwxOS43OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0t'@; put 'YmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0tLjIyLDI1Ljg1YTEuNjUsMS42NSwwLDEsMSwxLjY1LTEuNjVBMS42NSwxLjY1LDAsMCwxLDE3Ljc4LDI3Ljg1Wm0xLjM3LTguMDZ2MS43'@; put 'MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0xLjMxYzEuNTctLjEyLDQuMTgtLjcsNC4xOC0zLjI1LDAtMS44My0xLjQxLTMuMDctMy40My0zLjA3YTUuMzEsNS4z'@; put 'MSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMsNi4yOCw1LjZDMjQuNTgsMTcuMTYsMjIuNjEsMTkuMiwxOS4xNSwxOS43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBj'@; put 'bHItaS1zb2xpZC1wYXRoLTEiLz4nKSxoLkNsclNoYXBlTG9naW49KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMkgyOFYzMEgxMlYyMC4ySDEwVjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0WiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuMTIsMTguNDZhMSwxLDAsMSwwLDEuNDEsMS40MWw1Ljc5LTUuNzlMMTYuNTQsOC4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE4LjUsMTNINGExLDEsMCwwLDAtMSwxLDEsMSww'@; put 'LDAsMCwxLDFIMTguNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMnY3aDguNUwxNS4xMiw5LjcxYTEsMSwwLDAsMSwxLjQxLTEuNDFsNS43OSw1Ljc5LTUuNzksNS43OWEx'@; put 'LDEsMCwwLDEtMS40MS0xLjQxTDE4LjUsMTVIMTBWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDEzSDRhMSwxLDAsMCww'@; put 'LTEsMSwxLDEsMCwwLDAsMSwxaDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVMb2dvdXQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcsNkgyM3Y5LjhoMlY2YTIsMiwwLDAsMC0yLTJIN0EyLDIsMCwwLDAsNSw2VjMwYTIsMiww'@; put 'LDAsMCwyLDJIMjNhMiwyLDAsMCwwLDItMkg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4xNiwxNy4yOGExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjEzLDIySDE1LjYzYTEsMSwwLDAsMC0xLDEsMSwxLDAs'@; put 'MCwwLDEsMWgxNC41bC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsNEg3QTIsMiwwLDAsMCw1LDZWMzBhMiwyLDAsMCwwLDIsMkgyM2Ey'@; put 'LDIsMCwwLDAsMi0yVjI0SDE1LjYzYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtMUgyNVY2QTIsMiwwLDAsMCwyMyw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjE2LDE3LjI4YTEsMSwwLDAsMC0xLjQxLDEu'@; put 'NDFMMzAuMTMsMjJIMjV2Mmg1LjEzbC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxoLkNsclNoYXBlUHJpbnRlcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksOUgyN1Y1SDlW'@; put 'OUg3YTQsNCwwLDAsMC00LDRWMjRINi45MlYyMi4wOUg1VjEzYTIsMiwwLDAsMSwyLTJIMjlhMiwyLDAsMCwxLDIsMnY5SDI5LjA4VjI0SDMzVjEzQTQsNCwwLDAsMCwyOSw5Wk0yNSw5SDExVjdIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAg'@; put 'ICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjEzLjA0'@; put 'IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40IDMxIDIyLjA5IDI5LjA4IDIyLjA5IDI5LjA4IDI0IDMzIDI0IDMzIDE1LjQgMzEgMTUuNCIgY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEzYTIsMiwwLDAsMSwyLTJIMTguNjRBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMTkuNTQsOUgxMVY3aDkuNzFsMS4xMy0ySDlWOUg3YTQsNCwwLDAsMC00LDRWMjRI'@; put 'Ni45MlYyMi4wOUg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCww'@; put 'LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMThIOGExLDEsMCww'@; put 'LDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgxMVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjEzLjA0IiB3aWR0aD0iMiIgaGVpZ2h0'@; put 'PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxMi44OGE3LjQ1LDcuNDUsMCwwLDEtMiwuNTV2OC42NkgyOS4wOFYyNEgzM1YxM0MzMywxMywzMywxMi45MywzMywxMi44OFoi'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTNhMiwyLDAsMCwxLDItMkgyNC40MmE3LjUsNy41LDAsMCwxLTEuMjctMkgxMVY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3'@; put 'LjU0LDcuNTQsMCwwLDEsLjA3LTFIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksOUgyN1Y1SDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4SDI3VjI0aDZWMTNBNCw0LDAsMCwwLDI5LDlaTTI1LDI0djZI'@; put 'MTFWMTlIMjVaTTI1LDlIMTFWN0gyNVptNCw2SDI3VjEzaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41NCw5SDExVjdoOS43MWwxLjEzLTJIOVY5'@; put 'SDdhNCw0LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxNS40Wk0yNSwyNHY2SDExVjE5SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwx'@; put 'LjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAg'@; put 'ICAgICAgICAgPHBhdGggZD0iTTMzLDEyLjg4YTcuMyw3LjMsMCwwLDEtNCwuNTVWMTVIMjdWMTNoLjMyYTcuNTIsNy41MiwwLDAsMS00LjE4LTRIMTFWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41NCw3LjU0LDAsMCwxLC4wNy0xSDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4'@; put 'SDI3VjI0aDZWMTNDMzMsMTMsMzMsMTIuOTMsMzMsMTIuODhaTTI1LDI0djZIMTFWMTlIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xy'@; put 'LWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGguQ2xyU2hhcGVXb3JsZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTQsMThhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLTRoMy42YTEyLjMsMTIuMywwLDAsMC0uNjctMS42'@; put 'SDI1LjY5QTE5LjcyLDE5LjcyLDAsMCwwLDIyLjgsNi41M2ExMi4zLDEyLjMsMCwwLDAtMi41NS0uNzYsMTcuODMsMTcuODMsMCwwLDEsMy44OSw2LjU5SDE4Ljc1VjUuNmMtLjI1LDAtLjUxLDAtLjc3LDBzLS40OSwwLS43MywwdjYuNzdIMTEuODZhMTcuODMsMTcuODMsMCwwLDEsMy45LTYu'@; put 'NiwxMi4yOCwxMi4yOCwwLDAsMC0yLjU0Ljc1LDE5LjcyLDE5LjcyLDAsMCwwLTIuOTEsNS44NUg2Ljk0QTEyLjMsMTIuMywwLDAsMCw2LjI2LDE0SDkuODlhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLDQsMTkuNjcsMTkuNjcsMCwwLDAsLjUsNC4zN0g2LjQyQTEyLjM0LDEyLjM0LDAsMCwwLDcu'@; put 'MTYsMjRoMy4yM2ExOS4zMiwxOS4zMiwwLDAsMCwyLjY5LDUuMzYsMTIuMjgsMTIuMjgsMCwwLDAsMi42MS43OUExNy45MSwxNy45MSwwLDAsMSwxMiwyNGg1LjI2djYuMzRjLjI0LDAsLjQ5LDAsLjczLDBzLjUxLDAsLjc3LDBWMjRIMjRhMTcuOSwxNy45LDAsMCwxLTMuNyw2LjE1LDEyLjI4'@; put 'LDEyLjI4LDAsMCwwLDIuNjItLjgxQTE5LjMyLDE5LjMyLDAsMCwwLDI1LjYxLDI0aDMuMmExMi4zNCwxMi4zNCwwLDAsMCwuNzQtMS42SDI2QTE5LjY3LDE5LjY3LDAsMCwwLDI2LjU0LDE4Wm0tOS4yOSw0LjM3SDExLjUxYTE3LjY5LDE3LjY5LDAsMCwxLS4wOS04LjRoNS44M1ptNy4yNCww'@; put 'SDE4Ljc1VjE0aDUuODNBMTguMjEsMTguMjEsMCwwLDEsMjUsMTgsMTguMTIsMTguMTIsMCwwLDEsMjQuNDksMjIuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYs'@; put 'MTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40NCw3LjQ0LDAsMCwxLTEuOTEuNTgsMTQu'@; put 'MDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQzLDcuNDMsMCwwLDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAu'@; put 'MjUsNS43N2ExNy44MywxNy44MywwLDAsMSwzLjg5LDYuNTlIMTguNzVWNS42Yy0uMjUsMC0uNTEsMC0uNzcsMHMtLjQ5LDAtLjczLDB2Ni43N0gxMS44NmExNy44MywxNy44MywwLDAsMSwzLjktNi42LDEyLjI4LDEyLjI4LDAsMCwwLTIuNTQuNzUsMTkuNzIsMTkuNzIsMCwwLDAtMi45MSw1'@; put 'Ljg1SDYuOTRBMTIuMywxMi4zLDAsMCwwLDYuMjYsMTRIOS44OWExOS4zOCwxOS4zOCwwLDAsMC0uNDMsNCwxOS42NywxOS42NywwLDAsMCwuNSw0LjM3SDYuNDJBMTIuMzQsMTIuMzQsMCwwLDAsNy4xNiwyNGgzLjIzYTE5LjMyLDE5LjMyLDAsMCwwLDIuNjksNS4zNiwxMi4yOCwxMi4yOCww'@; put 'LDAsMCwyLjYxLjc5QTE3LjkxLDE3LjkxLDAsMCwxLDEyLDI0aDUuMjZ2Ni4zNGMuMjQsMCwuNDksMCwuNzMsMHMuNTEsMCwuNzcsMFYyNEgyNGExNy45LDE3LjksMCwwLDEtMy43LDYuMTUsMTIuMjgsMTIuMjgsMCwwLDAsMi42Mi0uODFBMTkuMzIsMTkuMzIsMCwwLDAsMjUuNjEsMjRoMy4y'@; put 'YTEyLjM0LDEyLjM0LDAsMCwwLC43NC0xLjZIMjZhMTkuNjcsMTkuNjcsMCwwLDAsLjUtNC4zNywxOS4zOCwxOS4zOCwwLDAsMC0uNDMtNGgzLjZjLS4wNi0uMTctLjEyLS4zMy0uMTktLjQ5YTcuNDUsNy40NSwwLDAsMS0zLjQ3LTEuMTFoLS4zNmMwLS4xMS0uMDgtLjIxLS4xMS0uMzJhNy40'@; put 'OCw3LjQ4LDAsMCwxLTMuMDYtNS42MkExMi40MSwxMi40MSwwLDAsMCwyMC4yNSw1Ljc3Wm0tMywxNi41OUgxMS41MWExNy42OSwxNy42OSwwLDAsMS0uMDktOC40aDUuODNaTTI1LDE4YTE4LjEyLDE4LjEyLDAsMCwxLS41NSw0LjM3SDE4Ljc1VjE0aDUuODNBMTguMjEsMTguMjEsMCwwLDEs'@; put 'MjUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFk'@; put 'Z2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDUsMThhMjAuNDYsMjAuNDYsMCwwLDAsLjYyLDQuOTNoNi40OFYxMy40NUgxMC41OEEyMC41NSwyMC41NSwwLDAsMCwxMC4wNSwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5c'@; put 'biAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44NSwxMy40NXY5LjQ4aDYuNDhBMjAuNDYsMjAuNDYsMCwwLDAsMjYsMThhMjAuNTUsMjAuNTUsMCwwLDAtLjUyLTQuNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgs'@; put 'MkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0zMC4yMiwyNC43MUgyNi42YTIxLjgsMjEuOCwwLDAsMS0zLDYsMTMuODYsMTMuODYsMCwwLDEtMywuOTIsMjAuMjEsMjAuMjEsMCwwLDAsNC4xOC02Ljk0SDE4Ljg2djcuMTVjLS4yOSwwLS41NywwLS44Niwwcy0uNTUsMC0u'@; put 'ODMsMFYyNC43MUgxMS4yMmEyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LDYuOTUsMTMuODYsMTMuODYsMCwwLDEtMi45NC0uOSwyMS44LDIxLjgsMCwwLDEtMy02LjA1SDUuNzhhMTMuOTQsMTMuOTQsMCwwLDEtLjgzLTEuODFoNEEyMi4yLDIyLjIsMCwwLDEsOC4zNywxOGEyMS44OCwyMS44OCww'@; put 'LDAsMSwuNDgtNC41NUg0Ljc2YTEzLjg4LDEzLjg4LDAsMCwxLC43Ni0xLjgxSDkuMzNBMjIuMjYsMjIuMjYsMCwwLDEsMTIuNjEsNWExMy44NiwxMy44NiwwLDAsMSwyLjg3LS44NCwyMC4xMywyMC4xMywwLDAsMC00LjQsNy40NWg2LjA5VjRjLjI4LDAsLjU1LDAsLjgzLDBzLjU4LDAsLjg2'@; put 'LDB2Ny42NGg2LjA5YTIwLjEzLDIwLjEzLDAsMCwwLTQuMzktNy40NEExMy44OSwxMy44OSwwLDAsMSwyMy40Myw1YTIyLjI2LDIyLjI2LDAsMCwxLDMuMjcsNi41OWgzLjc3YTEzLjg5LDEzLjg5LDAsMCwxLC43NiwxLjgxSDI3LjE3QTIxLjg4LDIxLjg4LDAsMCwxLDI3LjY2LDE4YTIyLjIs'@; put 'MjIuMiwwLDAsMS0uNTcsNC45M2g0QTEzLjk0LDEzLjk0LDAsMCwxLDMwLjIyLDI0LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA1LDE4YTIwLjQ2LDIwLjQ2LDAsMCwwLC42Miw0LjkzaDYuNDhWMTMuNDVI'@; put 'MTAuNThBMjAuNTUsMjAuNTUsMCwwLDAsMTAuMDUsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg1LDIyLjk0aDYuNDhBMjAuNDYsMjAuNDYsMCwwLDAsMjYsMThhMjAuNTUsMjAu'@; put 'NTUsMCwwLDAtLjUyLTQuNTVIMTguODVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjkuNTh2MEgzMWE2Ljc3LDYuNzcsMCwwLDEtMi4w'@; put 'NywwaC0xLjhBMjEuODgsMjEuODgsMCwwLDEsMjcuNjYsMThhMjIuMiwyMi4yLDAsMCwxLS41Nyw0LjkzaDRhMTMuOTQsMTMuOTQsMCwwLDEtLjgzLDEuODFIMjYuNmEyMS44LDIxLjgsMCwwLDEtMyw2LDEzLjg2LDEzLjg2LDAsMCwxLTMsLjkyLDIwLjIxLDIwLjIxLDAsMCwwLDQuMTgtNi45'@; put 'NEgxOC44NnY3LjE1Yy0uMjksMC0uNTcsMC0uODYsMHMtLjU1LDAtLjgzLDBWMjQuNzFIMTEuMjJhMjAuMjEsMjAuMjEsMCwwLDAsNC4xOCw2Ljk1LDEzLjg2LDEzLjg2LDAsMCwxLTIuOTQtLjksMjEuOCwyMS44LDAsMCwxLTMtNi4wNUg1Ljc4YTEzLjk0LDEzLjk0LDAsMCwxLS44My0xLjgx'@; put 'aDRBMjIuMiwyMi4yLDAsMCwxLDguMzcsMThhMjEuODgsMjEuODgsMCwwLDEsLjQ4LTQuNTVINC43NmExMy44OCwxMy44OCwwLDAsMSwuNzYtMS44MUg5LjMzQTIyLjI2LDIyLjI2LDAsMCwxLDEyLjYxLDVhMTMuODYsMTMuODYsMCwwLDEsMi44Ny0uODQsMjAuMTMsMjAuMTMsMCwwLDAtNC40'@; put 'LDcuNDVoNi4wOVY0Yy4yOCwwLC41NSwwLC44Mywwcy41OCwwLC44NiwwdjcuNjRoNi4wOWwwLS4xM2E3LjQ3LDcuNDcsMCwwLDEtMi4zNi00Ljc2LDIwLjM3LDIwLjM3LDAsMCwwLTItMi41NSwxNC4yMywxNC4yMywwLDAsMSwyLjA2LjU2LDcuNDQsNy40NCwwLDAsMSwuNTctMS44NiwxNi4w'@; put 'NiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w'@; put 'YXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGguQ2xyU2hhcGVTbGlkZXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEyLjM3QTQsNCwwLDAsMCw5LDguNDhWNUExLDEsMCwxLDAsNyw1VjguNDhhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjE2LjI2QTQs'@; put 'NCwwLDAsMCwxMiwxMi4zN1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSw4LDE0LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE1LjgzYTQsNCwwLDAsMC0zLTMuODlWNWExLDEsMCwxLDAtMiww'@; put 'djYuOTRhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjE5LjcyQTQsNCwwLDAsMCwzMiwxNS44M1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyOCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8'@; put 'cGF0aCBkPSJNMjIsMjQuNWE0LDQsMCwwLDAtMy0zLjg5VjVhMSwxLDAsMSwwLTIsMFYyMC42MWE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSwwLDEsMCwyLDBWMjguMzlBNCw0LDAsMCwwLDIyLDI0LjVabS00LDJhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsMTgsMjYuNTNaIiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTksOS4yOVY1QTEsMSwwLDEsMCw3LDVWOS4zYTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxNS40M0EzLjIyLDMuMjIsMCwwLDAsOSw5LjI5WiIgY2xhc3M9ImNs'@; put 'ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDIxLjQ1VjVhMSwxLDAsMSwwLTIsMFYyMS40N2EzLjIyLDMuMjIsMCwwLDAsMCw2LjExVjMxYTEsMSwwLDEsMCwyLDBWMjcuNmEzLjIyLDMuMjIsMCwwLDAsMC02LjE0WiIgY2xhc3M9ImNs'@; put 'ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDEyLjc1VjVhMSwxLDAsMSwwLTIsMHY3Ljc2YTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxOC44OWEzLjIyLDMuMjIsMCwwLDAsMC02LjE0WiIgY2xhc3M9ImNs'@; put 'ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGguQ2xyU2hhcGVDbGlwYm9hcmQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjI5LDVIMjdWN2gyVjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4y'@; put 'OUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjYuNjlBMS43LDEuNywwLDAsMCwyOS4yOSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNy4zM0EyLjM0LDIuMzQsMCwwLDAsMjMuNjcsNUgyMS44N2E0LDQs'@; put 'MCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI2Wk0yNCw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoMy42N2EuMzMuMzMsMCwwLDEsLjMzLjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTQiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOCIgd2lkdGg9IjE0IiBoZWlnaHQ9'@; put 'IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIyIiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8'@; put 'cmVjdCB4PSIxMSIgeT0iMjYiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i'@; put 'YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAg'@; put 'ICAgIDxyZWN0IHg9IjExIiB5PSIyMiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyNiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4xMyw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3'@; put 'LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uN2E0LDQsMCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI0LjQyQTcuNSw3LjUsMCwwLDEsMjMuMTMsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdl'@; put 'ZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YzMkg3VjdIOVY1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVYxMy40M0E3LjUyLDcu'@; put 'NTIsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4yOSw1SDIyLjE3YTQuNDUsNC40NSwwLDAsMC00LjExLTNBNC40Niw0LjQ2LDAsMCwwLDE0LDVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwz'@; put 'NEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjYuNjlBMS43LDEuNywwLDAsMCwyOS4yOSw1Wm0tMTgsM2ExLDEsMCwwLDEsMS0xaDMuNDRWNi4zMWEyLjMxLDIuMzEsMCwxLDEsNC42MywwVjdoMy40NGExLDEsMCwwLDEsMSwxdjJIMTEuMzFaTTI1LDI4SDExVjI2SDI1Wm0wLTRIMTFW'@; put 'MjJIMjVabTAtNEgxMVYxOEgyNVptMC00SDExVjE0SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDksNy40OSwwLDAsMSwyMy42NiwxMEgxMS4zMVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMx'@; put 'YTIuMzEsMi4zMSwwLDEsMSw0LjYzLDBWN2gyLjE5YTcuNTQsNy41NCwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFoLS40YTQuNDUsNC40NSwwLDAsMC00LjExLTNBNC40Niw0LjQ2LDAsMCwwLDE0LDVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCww'@; put 'LDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41Wk0yNSwyOEgxMVYyNkgyNVptMC00SDExVjIySDI1Wm0wLTRIMTFWMThIMjVabTAtNEgxMVYxNEgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksaC5DbHJTaGFwZUZpcmV3YWxsPSgwLHMuY2xy'@; put 'SWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCw4SDMydjUuMDhIMjMuOHYtNEgyMnY0SDE0di00SDEydjRINFptMCw3SDMydjYuMDhIMjguOTJWMTYuMjdIMjd2NC44MUgx'@; put 'OC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgs'@; put 'MTUuNEgzMnY1LjY4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0LjgxSDRWMTVIMjAuNThhMy41OCwzLjU4LDAsMCwxLTEuNzYtMS45MkgxNHYtNEgxMnY0SDRWOEgyMC4xNGwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwy'@; put 'LDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN'@; put 'MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi40NS0uNDJIMjMuOFYxMC4yMmE3LjUsNy41LDAsMCwxLS42My0xLjE0SDIydjRIMTR2LTRIMTJ2NEg0VjhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0y'@; put 'SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTQsMTVIMzJ2Ni4wOEgyOC45MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45VjE2LjI3SDd2NC44MUg0Wk0yMy44LDI4VjI0'@; put 'LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTE0LDI4SDEyVjI0aDJa'@; put 'bTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYxNmgydjRoOFYxNmgydjRoM1ptMC04SDRWMTJoOFY4aDJ2NGg4VjhoMnY0aDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMjIuMjNB'@; put 'My42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDRWMTJoOFY4aDJ2NGg0LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMTQsMjhIMTJWMjRoMlptMTAsMEgyMlYyNGgyWm04LTZI'@; put 'NFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz'@; put 'My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i'@; put 'TTI0LDEwLjQ5VjEyaDEuNTFBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMTRINFYxMmg4VjhoMnY0aDhWOGguNzhhNy40OSw3'@; put 'LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWk0xNCwyOEgxMlYyNGgyWm0xMCwwSDIyVjI0aDJabTgtNkg0VjIwSDdWMTZIOXY0aDhWMTZoMnY0aDhWMTZoMnY0aDNa'@; put 'IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJh'@; put 'ZGdlIiAvPicpLGguQ2xyU2hhcGVMaXN0PSgwLHMuY2xySWNvblNWRykoJzxyZWN0IHg9IjE1IiB5PSI4IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxMiIgd2lk'@; put 'dGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTYiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxu'@; put 'ICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjIwIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTIi'@; put 'IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIg'@; put 'Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlptMCwzMEg4VjRIMjhaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTIiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0'@; put 'IHg9IjE1IiB5PSIxNiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjIwIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjQiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5c'@; put 'biAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9'@; put 'IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjQi'@; put 'IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSw4djJoOC42NmE3LjQ1LDcuNDUsMCwwLDEtLjg5LTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWNEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg4LTJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcu'@; put 'NDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMywyNkgxMVYyNGgyWm0wLTRIMTFWMjBoMlpt'@; put 'MC00SDExVjE2aDJabTAtNEgxMVYxMmgyWm0wLTRIMTFWOGgyWk0yNSwyNkgxNVYyNEgyNVptMC00SDE1VjIwSDI1Wm0wLTRIMTVWMTZIMjVabTAtNEgxNVYxMkgyNVptMC00SDE1VjhIMjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTIzLjY2LDEwSDE1VjhoNy43OGE3LjQyLDcuNDIsMCwwLDEsLjg5LTZIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyMy42NiwxMFpNMTMsMjZIMTFWMjRoMlptMC00SDExVjIwaDJabTAtNEgx'@; put 'MVYxNmgyWm0wLTRIMTFWMTJoMlptMC00SDExVjhoMlpNMjUsMjZIMTVWMjRIMjVabTAtNEgxNVYyMEgyNVptMC00SDE1VjE2SDI1Wm0wLTRIMTVWMTJIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxj'@; put 'aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGguQ2xyU2hhcGVSZWRvPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCw0LjIyYTEsMSwwLDAsMC0xLjQx'@; put 'LDEuNDJsNS41Niw1LjQ5aC0xM0ExMSwxMSwwLDAsMCwxMC4wNywzMiwxLDEsMCwwLDAsMTEsMzAuMThhOSw5LDAsMCwxLTUtOCw5LjA4LDkuMDgsMCwwLDEsOS4xMy05aDEzbC01LjU0LDUuNDhBMSwxLDAsMCwwLDI0LDIwbDgtNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVVbmRvPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC44NywxMS4xNGgtMTNsNS41Ni01LjQ5QTEsMSwwLDAsMCwxMiw0LjIyTDQsMTIuMTMsMTIsMjBhMSwxLDAsMCwwLDEuNDEtMS40Mkw3Ljg2LDEzLjE0aDEzYTkuMDgsOS4wOCww'@; put 'LDAsMSw5LjEzLDksOSw5LDAsMCwxLTUsOEExLDEsMCwwLDAsMjUuOTMsMzJhMTEsMTEsMCwwLDAtNS4wNi0yMC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVTY3JvbGw9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0'@; put 'LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxMy4xM2gtMlYyOS41NGEyLjUs'@; put 'Mi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRabS00LjUtN0EyLjUsMi41LDAsMCwxLDMyLDYuNThWOS4xMkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYtMi41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMDgsMTUuNFYyOS41NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoMi42MUEzLjY2LDMuNjYsMCwwLDEs'@; put 'MTksOS44OWwuNDQtLjc2SDE4VjYuNThhNC40OCw0LjQ4LDAsMCwwLS43Ni0yLjVIMjIuNGwxLjE1LTJIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAs'@; put 'NC41LTQuNVYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAs'@; put 'MCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5'@; put 'LDcuNDksMCwwLDEtMS45Mi0uMjZ2MTYuM2EyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoOC41NGE3LjUsNy41LDAsMCwxLTEuMzUtMkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYtMi41aDUu'@; put 'NTJhNy40NCw3LjQ0LDAsMCwxLC44Ni0ySDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEsMS01LDBWMjZINy4xOVYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjV2LTE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTM0LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTMuMTNoLTJWMjkuNTRhMi41LDIuNSwwLDAsMS0y'@; put 'LjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4wOCwxNS40VjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41'@; put 'LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGgyLjYxQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5bDQuNTEtNy44SDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUuNThhNC41'@; put 'LDQuNSwwLDAsMCw0LjUtNC41VjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgs'@; put 'MS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3'@; put 'LjQ5LDcuNDksMCwwLDEtMS45Mi0uMjZ2MTYuM2EyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoOC41NGE3LjQ2LDcuNDYsMCwwLDEtLjkyLTlIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgy'@; put 'djUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjV2LTE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFz'@; put 'cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxoLkNsclNoYXBlRmlsZVNldHRpbmdzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEuMTYsMCwwLDAtLjcxLTEuMTJsLTEuNjgtLjVj'@; put 'LS4wOS0uMjQtLjE4LS40OC0uMjktLjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGExLjE1LDEuMTUsMCwwLDAtMS4xMS0uNzdoLTJh'@; put 'MS4xNiwxLjE2LDAsMCwwLTEuMTEuODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0LDcuNjQsMCwwLDAtLjMxLjc0bC0xLjU4LjQ3'@; put 'YTEuMTUsMS4xNSwwLDAsMC0uODMsMS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiwwLDAsMCwxLjM3LjIxbDEuNDgtLjc4Yy4yMy4x'@; put 'MS40Ny4yLjcyLjI5TDIyLDMzLjE4YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQyLTEuNGExLjE2LDEuMTYsMCwwLDAsLjIxLTEu'@; put 'MzhsLS43OS0xLjQ1cS4xNi0uMzQuMjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIxLDYuMjEsMCwwLDEtMS4yLjQ5bC0uNDIuMTIt'@; put 'LjYzLDIuMDlIMjMuNDJsLS42My0yLjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMuMDhsLjEzLS40MWE1Ljk0LDUuOTQsMCwwLDEs'@; put 'LjUzLTEuMjNMMTguOSwyMWwtMS0xLjg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTItMSwxLDEtMSwxLjg5LjIxLjM4YTYuMDgsNi4w'@; put 'OCwwLDAsMSwuNSwxLjIxbC4xMi40MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40'@; put 'NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMxSDZWNUgyNnY3Ljg5YTMuMiwzLjIsMCwwLDEsMiwx'@; put 'LjcyVjVhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN'@; put 'MjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt'@; put 'cGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0uNzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCwwLS4yMS0xLjM3bC0xLjQyLTEuNDFhMS4xNiwx'@; put 'LjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZhNy44NCw3Ljg0LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSwwLDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCwwLS43Ny4zMmwtMS40Mi0uNzZhMS4xNiwxLjE2'@; put 'LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4xNiwxLjE2LDAsMCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAsMC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44MywxLjFsMS41OS40N2E3LjUzLDcuNTMsMCwwLDAs'@; put 'LjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYsMCwwLDAsLjIxLDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcuMjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmExLjE2LDEuMTYsMCwwLDAsMS4xMS0uODJsLjQ3'@; put 'LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjlsMS41Ljc5YTEuMTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYsMS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCwwLDAsLjgzLTEuMTFabS0xLjYsMS42My0yLjEx'@; put 'LjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4xOWwtLjIxLjM4LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAsMS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEtMS4yMS0uNDlsLS4zNy0uMi0xLjk0LDEtMS0x'@; put 'LDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwxOC4xNywyNkwxOCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQxYTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4yMyw2LjIzLDAsMCwxLDEuMjYtLjUybC40MS0u'@; put 'MTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2LjIxLDYuMjEsMCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEuODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjEuODdMMjMsM0g2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAs'@; put 'MCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2LDAsMCwwLS43MS0xLjEybC0xLjY4LS41Yy0u'@; put 'MDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzdsLTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43NmE3Ljg0LDcuODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjc3aC0yYTEu'@; put 'MTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0xLjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGExLjE2LDEuMTYsMCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3LjY0LDAsMCwwLS4zMS43NGwtMS41OC40N2Ex'@; put 'LjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4xNiwwLDAsMCwuMjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCwwLDAsMS4zNy4yMWwxLjQ4LS43OGMuMjMuMTEu'@; put 'NDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiwwLDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4yOWwxLjUuNzlhMS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0xLjRhMS4xNiwxLjE2LDAsMCwwLC4yMS0xLjM4'@; put 'bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4xMVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwxLjE5bC0uMjEuMzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2LjIxLDAsMCwxLTEuMi40OWwtLjQyLjEyLS42'@; put 'MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwtLjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwxLDE4LjE3LDI2TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4bC4xMy0uNDFhNS45NCw1Ljk0LDAsMCwxLC41'@; put 'My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCwwLDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEyQTYuMjEsNi4yMSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEsMSwxLTEsMS44OS4yMS4zOGE2LjA4LDYuMDgs'@; put 'MCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAsNC4wOCw0QTQuMDYsNC4wNiwwLDAsMCwyNC4x'@; put 'MiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMx'@; put 'SDZWNUgyMy4wOGE2Ljk0LDYuOTQsMCwwLDEsLjYtMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2Vk'@; put 'IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjMzVjEyLjcxYTcsNywwLDAsMS0yLTF2MS44OEEzLjIsMy4yLDAsMCwxLDI4LDE1LjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNp'@; put 'cmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZWNUgyNnY4Ljc4YTIuMzcsMi4zNywwLDAsMSwyLDEu'@; put 'NTdWNWEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41NCwyMy40'@; put 'N2wtMi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCwwLDAtLjM2LS4yNWgtMmEuMzcuMzcsMCwwLDAt'@; put 'LjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1'@; put 'bDIsLjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJh'@; put 'Nyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjMuODNBLjM3LjM3LDAsMCwwLDMzLjU0LDIz'@; put 'LjQ3Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTQsMjMuNDdsLTItLjYxYTcuMDYsNy4wNiww'@; put 'LDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAs'@; put 'MCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCwwLC4yNi4zNWwyLC42MWE3LDcsMCwwLDAsLjYx'@; put 'LDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wx'@; put 'Ljg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwzMy41NCwyMy40N1pNMjQuNywyOC4xOUEzLjMz'@; put 'LDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZWNUgyMS44N0wyMywzSDZBMiwyLDAs'@; put 'MCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDEx'@; put 'QTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0'@; put 'IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTQsMjMuNDdsLTItLjYxYTcuMDYs'@; put 'Ny4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJh'@; put 'Nyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCwwLC4yNi4zNWwyLC42MWE3LDcsMCww'@; put 'LDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4'@; put 'LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwzMy41NCwyMy40N1pNMjQuNywyOC4x'@; put 'OUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS41NSwzMUg2VjVIMjMuMDhhNi45NCw2Ljk0'@; put 'LDAsMCwxLC42LTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y'@; put 'OCwxNS4zNlYxMi43MWE3LDcsMCwwLDEtMi0xdjJBMi4zNywyLjM3LDAsMCwxLDI4LDE1LjM2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIC8+JyksaC5DbHJTaGFwZVR3b1dheUFycm93cz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBk'@; put 'PSJNMjMuNDMsMTYuODNBMSwxLDAsMCwwLDIyLDE4LjI0TDI1LjcyLDIySDcuODNhMSwxLDAsMCwwLDAsMkgyNS43MkwyMiwyNy43YTEsMSwwLDEsMCwxLjQyLDEuNDFMMjkuNTMsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGQ9Ik0xMy4yNCwxOC40NWExLDEsMCwwLDAsLjcxLTEuNzFMMTAuMjQsMTNIMjguMTJhMSwxLDAsMCwwLDAtMkgxMC4yNGwzLjcxLTMuNzNhMSwxLDAsMCwwLTEuNDItMS40MUw2LjQyLDEybDYuMTEsNi4xNEExLDEsMCwwLDAsMTMuMjQsMTguNDVaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlU3dpdGNoPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LjcxLDE0SDIwLjkyVjEySDUuNzFMOS40Miw4LjI3QTEsMSwwLDEsMCw4LDYuODZMMS44OSwxMyw4LDE5LjE0YTEsMSwwLDEsMCwxLjQyLTEuNFoiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEyIiB3aWR0aD0iMyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9'@; put 'IjI4IiB5PSIxMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuOTIsMTcuODZhMSwxLDAsMCwwLTEuNDIsMS40MUwzMC4yMSwyM0gxNXYySDMwLjIxTDI2LjUsMjguNzRh'@; put 'MSwxLDAsMSwwLDEuNDIsMS40TDM0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0iMjMiIHdpZHRoPSIzIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGguQ2xyU2hhcGVUb29scz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAsMTRIMTZhMSwx'@; put 'LDAsMCwwLTEsMXY2YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE1QTEsMSwwLDAsMCwyMCwxNFptLS40LDYuNkgxNi40VjE1LjRoMy4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzEsMTIu'@; put 'MzgsMjkuNjIsOC4yOUExLDEsMCwwLDAsMjguOTIsOGgtNVY2LjA1QTIsMiwwLDAsMCwyMiw0SDEzLjg0QTEuOTIsMS45MiwwLDAsMCwxMiw2LjA1VjhINy4wOGExLDEsMCwwLDAtLjcxLjI5TDIuMjksMTIuMzhhMSwxLDAsMCwwLS4yOS43MVYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs'@; put 'MCwyLTJWMTMuMDhBMSwxLDAsMCwwLDMzLjcxLDEyLjM4Wk0xNCw2aDhWOEgxNFpNMzIsMTdIMjJ2MS45M0gzMlYyOEg0VjE4LjkzSDE0VjE3SDRWMTMuNUw3LjUsMTBoMjFMMzIsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAg'@; put 'ICAgPHJlY3QgeD0iMTYuNCIgeT0iMTUuNCIgd2lkdGg9IjMuMiIgaGVpZ2h0PSI1LjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsMjFhMSwxLDAsMCwxLTEsMUgxNmExLDEsMCwwLDEtMS0xVjE5SDJ2OWEyLDIs'@; put 'MCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTlIMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjcxLDEyLjM4LDI5LjYyLDguMjlBMSwxLDAsMCwwLDI4LjkyLDhoLTVWNi4wNUEyLDIsMCwwLDAsMjIsNEgx'@; put 'My44NEExLjkyLDEuOTIsMCwwLDAsMTIsNi4wNVY4SDcuMDhhMSwxLDAsMCwwLS43MS4yOUwyLjI5LDEyLjM4YTEsMSwwLDAsMC0uMjkuNzFWMTdIMTVWMTVhMSwxLDAsMCwxLDEtMWg0YTEsMSwwLDAsMSwxLDF2MkgzNFYxMy4wOEExLDEsMCwwLDAsMzMuNzEsMTIuMzhaTTIyLDhIMTRWNmg4'@; put 'WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxoLkNsclNoYXBlV2luZG93Q2xvc2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQxLDE4bDcuMjktNy4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDEwLjcxLDkuMjlhMSwxLDAsMCww'@; put 'LTEuNDEsMS40MUwxNi41OSwxOCw5LjI5LDI1LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsNy4yOSw3LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlV2luZG93TWF4PSgwLHMu'@; put 'Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy44OSw5aC0yMGEyLDIsMCwwLDAtMiwyVjI1YTIsMiwwLDAsMCwyLDJoMjBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMjcuODksOVptLTIwLDE2VjExaDIwVjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi'@; put 'IC8+JyksaC5DbHJTaGFwZVdpbmRvd01pbj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjdIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlV2luZG93UmVzdG9y'@; put 'ZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsOEgxNGEyLDIsMCwwLDAtMiwydjJoMlYxMEgyOFYyMEgyNnYyaDJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMjgsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTIyLDE0SDhhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTZBMiwyLDAsMCwwLDIyLDE0Wk04LDI2VjE2SDIyVjI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZVpvb21J'@; put 'bj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYsNEExMiwxMiwwLDEsMCwyOCwxNiwxMiwxMiwwLDAsMCwxNiw0Wm0wLDIxLjkxQTEwLDEwLDAsMSwxLDI2LDE2LDEwLDEwLDAsMCwxLDE2LDI1LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+'@; put 'XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzEsMjkuNjlsLTUuMTctNS4xN0ExMy42OCwxMy42OCwwLDAsMSwyNS4xNSwyNmw1LjE1LDUuMTVhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTIxLDE1SDE3VjExYTEsMSwwLDAsMC0yLDB2NEgxMWExLDEsMCwwLDAsMCwyaDR2NGExLDEsMCwwLDAsMiwwVjE3aDRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGguQ2xyU2hhcGVab29tT3V0PSgwLHMu'@; put 'Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNiw0QTEyLDEyLDAsMSwwLDI4LDE2LDEyLDEyLDAsMCwwLDE2LDRabTAsMjEuOTFBMTAsMTAsMCwxLDEsMjYsMTYsMTAsMTAsMCwwLDEsMTYsMjUuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0zMS43MSwyOS42OWwtNS4xNy01LjE3QTEzLjY4LDEzLjY4LDAsMCwxLDI1LjE1LDI2bDUuMTUsNS4xNWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBk'@; put 'PSJNMjAsMTVIMTJhMSwxLDAsMCwwLDAsMmg4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxoLkNsclNoYXBlS2V5PSgwLHMuY2xySWNvblNWRykoJzxyZWN0IHg9IjYuMzMiIHk9IjEwLjcxIiB3aWR0aD0iOS43MSIgaGVp'@; put 'Z2h0PSIyLjU3IiByeD0iMSIgcnk9IjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYzQTUsNSww'@; put 'LDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2'@; put 'LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMGw1LjI2LDUuMjZhMywzLDAsMCwxLDAsNC4yNGwtMiwyTDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykgcm90YXRlKC00NSkiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M2E1LDUsMCwwLDAsLjYzLS43N0gyMi4yM2wtLjI5LDBMMjAuNTIsMTYuOCwzMiwyOC4yOFYzMkgyOC44NmwtMS43Ny0xLjc2di0y'@; put 'LjhIMjMuNDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBMMjAuMSw4LjA2bDEtMS43OUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAs'@; put 'MCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt'@; put 'cGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEiIHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMjEgMTEuNDMpIHJvdGF0ZSgtNDUpIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYzQTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAs'@; put 'Ny4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAs'@; put 'MCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMGw1LjI2LDUuMjZhMywzLDAsMCwxLDAsNC4yNGwtMiwyTDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBj'@; put 'eD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42QTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1'@; put 'LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcsMTUuNjRhMSwxLDAsMCwxLTEuNDEsMGwtLjQtLjRh'@; put 'MSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEsMSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIsMjguMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xy'@; put 'LWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42YTUsNSwwLDAsMCwuNjMtLjc3SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDIuMDktMy42MkwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCww'@; put 'LDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEsMCwwLDEtMS40MSwwbC0uNC0uNGExLDEsMCwwLDEsMC0xLjQxTDEzLDguMzZhMSwxLDAsMCwx'@; put 'LDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQi'@; put 'IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1h'@; put 'bGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNkE1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDds'@; put 'NS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFMMTMsOC4zNmExLDEsMCwwLDEsMS40MSwwbC40'@; put 'LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAg'@; put 'ICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxoLkNsclNoYXBlTGlicmFyeT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNDgsMjkuNjMs'@; put 'MjYuNzQsMTEuODJhMiwyLDAsMCwwLTIuNTgtMS4xNkwyMSwxMS44NVY4LjkyQTEuOTIsMS45MiwwLDAsMCwxOS4wOCw3SDE0VjQuOTJBMS45MiwxLjkyLDAsMCwwLDEyLjA4LDNINUEyLDIsMCwwLDAsMyw1VjMyYTEsMSwwLDAsMCwxLDFIMjBhMSwxLDAsMCwwLDEtMVYxOS4yN2w1LDEzLjIx'@; put 'YTEsMSwwLDAsMCwxLjI5LjU4bDUuNjEtMi4xNGExLDEsMCwwLDAsLjU4LTEuMjlaTTEyLDguODNWMzFINVY1aDdaTTE5LDMxSDE0VjloNVptOC41MS0uMjVMMjEuMTMsMTMuOTJsMy43NC0xLjQyLDYuMzksMTYuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi43NSwzSDUuMjVBMS4xNSwxLjE1LDAsMCwwLDQsNFYzM0gxNFY0QTEuMTUsMS4xNSwwLDAsMCwxMi43NSwzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43'@; put 'NywzMS4wOWwtNi45NC0xOC4zYTEsMSwwLDAsMC0xLjI5LS41OEwyMiwxMy41OVY5YTEsMSwwLDAsMC0xLTFIMTZWMzNoNlYxNC42OUwyOC45MywzM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZUJvbHQ9KDAscy5jbHJJY29uU1ZHKSgn'@; put 'PHBhdGggZD0iTTEwLjUyLDM0aC0zYTEsMSwwLDAsMS0uODgtMS40NEwxMi41NSwyMUg2YTEsMSwwLDAsMS0uODUtMS41NGwxMC42OC0xN0ExLDEsMCwwLDEsMTYuNjQsMkgzMC4wN2ExLDEsMCwwLDEsLjc3LDEuNjlMMjEuNzgsMTRoNS4zOGExLDEsMCwwLDEsLjczLDEuNjZsLTE2LjYzLDE4'@; put 'QTEsMSwwLDAsMSwxMC41MiwzNFpNOS4xOCwzMmguOTFMMjQuODYsMTZIMTkuNTlhMSwxLDAsMCwxLS43Ny0xLjY5TDI3Ljg4LDRIMTcuMTlMNy43NywxOUgxNC4yYTEsMSwwLDAsMSwuODgsMS40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAg'@; put 'ICAgICAgICAgPHBhdGggZD0iTTMwLjgsMi4yOUEuNDkuNDksMCwwLDAsMzAuMzUsMkgxNi40MmEuNS41LDAsMCwwLS40Mi4yM2wtMTAuNzEsMTdBLjQ5LjQ5LDAsMCwwLDUuNywyMGg3LjY3TDYuNiwzMy4yNWEuNTIuNTIsMCwwLDAsLjQ2Ljc1aDNhLjUuNSwwLDAsMCwuMzctLjE2TDI4LDE0'@; put 'Ljg1YS41LjUsMCwwLDAtLjM3LS44NUgyMC44OUwzMC43MiwyLjgyQS40OS40OSwwLDAsMCwzMC44LDIuMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVXcmVuY2g9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjE4LDI2LjEx'@; put 'LDIwLjM1LDEzLjI4QTkuMjgsOS4yOCwwLDAsMCw3LjU0LDIuNzlsLTEuMzQuNTksNS4zOCw1LjM4TDguNzYsMTEuNTksMy4zOCw2LjIxLDIuNzksNy41NEE5LjI3LDkuMjcsMCwwLDAsMTMuMjgsMjAuMzVMMjYuMTEsMzMuMThhMiwyLDAsMCwwLDIuODMsMGw0LjI0LTQuMjRBMiwyLDAsMCww'@; put 'LDMzLjE4LDI2LjExWm0tNS42Niw1LjY2TDEzLjg4LDE4LjEybC0uNTcuMTZhNy4yNyw3LjI3LDAsMCwxLTkuMzEtNyw3LjIsNy4yLDAsMCwxLC4xNS0xLjQ4bDQuNjEsNC42MSw1LjY2LTUuNjZMOS44MSw0LjE1YTcuMjcsNy4yNywwLDAsMSw4LjQ3LDkuMTZsLS4xNi41N0wzMS43NywyNy41'@; put 'M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjcuMTMiIGN5PSIyNy4wOSIgcj0iMS4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEuMjEgMjcuMTIpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43MywyNy43MiwxOS42NywxMy42NmE4Ljc5LDguNzksMCwwLDAtMTItMTAuNUwxMyw4LjUzLDguNTMsMTMsMy4xNiw3LjY3YTguNzksOC43OSwwLDAsMCwxMC41LDEyTDI3LjcyLDMzLjczYTEu'@; put 'MDcsMS4wNywwLDAsMCwxLjUsMGw0LjUxLTQuNTFBMS4wNywxLjA3LDAsMCwwLDMzLjczLDI3LjcyWk0yOSwyOWExLjM4LDEuMzgsMCwxLDEsMC0yQTEuMzgsMS4zOCwwLDAsMSwyOSwyOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZUJ1'@; put 'bGxzZXllPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsLjc3LDEuODZhMTQuMDcsMTQuMDcsMCwxLDEtMTAsMTBsLTEuODYtLjc4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjQ1LDE1LjdhMTAuODEsMTAuODEsMCwxLDAsOC4zLTguMjZMMTYuMzcsOUE5LjI0LDkuMjQsMCwxLDEsOSwxNi4zMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTE4LDIyLjA5YTQuMDgsNC4wOCwwLDAsMS00LTMuNjhsLTEuNjMtLjY4YzAsLjA5LDAsLjE4LDAsLjI3QTUuNjksNS42OSwwLDEsMCwxOCwxMi4zMWgtLjI0TDE4LjQzLDE0QTQuMDcsNC4wNywwLDAsMSwxOCwyMi4wOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguMiwxMy4zNGEuNS41LDAsMCwwLC4zNS4xNUgxMi4ybDUuMzcsNS4zN0ExLDEsMCwwLDAsMTksMTcuNDRMMTMuNTMsMTJWOC41MWEuNS41LDAsMCwwLS4xNS0uMzVMNy43OSwyLjU3YS41LjUsMCwwLDAtLjg1LjM1djRIM2Eu'@; put 'NS41LDAsMCwwLS4zNS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDE4Ljg1YTEsMSwwLDAsMS0xLjQxLDBsLTMtM0E0LDQsMCwwLDAsMTMuOTEsMTgsNC4wOSw0LjA5LDAsMSwwLDE4LDEzLjkxYTQs'@; put 'NCwwLDAsMC0yLC41NWwzLDNBMSwxLDAsMCwxLDE5LDE4Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsMS42LDMuODlBMTEuODksMTEuODksMCwxLDEsNi40'@; put 'OSwxNS4zTDIuNjEsMTMuNjhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxNS45NEExMC4xNywxMC4xNywwLDEsMCwxNiw4bDEuNjksNC4xMS4zMSwwQTUuODgsNS44OCwwLDEsMSwx'@; put 'Mi4xMiwxOGMwLS4xMiwwLS4yMywwLS4zNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC4yLDEzLjM0YS41LjUsMCwwLDAsLjM1LjE1SDEyLjJsMi4zNSwyLjM1QTQuMDksNC4wOSwwLDAsMSwxNiwxNC40NkwxMy41'@; put 'MywxMlY4LjUxYS41LjUsMCwwLDAtLjE1LS4zNUw3Ljc5LDIuNTdhLjUuNSwwLDAsMC0uODUuMzV2NEgzYS41LjUsMCwwLDAtLjM1Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxoLkNsclNoYXBlVGFyZ2V0PSgwLHMuY2xySWNvblNWRykoJzxwYXRo'@; put 'IGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw3LjJB'@; put 'MTAuOCwxMC44LDAsMSwwLDI4LjgsMTgsMTAuODEsMTAuODEsMCwwLDAsMTgsNy4yWm0wLDIwQTkuMiw5LjIsMCwxLDEsMjcuMiwxOCw5LjIxLDkuMjEsMCwwLDEsMTgsMjcuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTE4LDEyLjMxQTUuNjksNS42OSwwLDEsMCwyMy42OSwxOCw1LjY5LDUuNjksMCwwLDAsMTgsMTIuMzFabTAsOS43N0E0LjA5LDQuMDksMCwxLDEsMjIuMDksMTgsNC4wOSw0LjA5LDAsMCwxLDE4LDIyLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSI0LjA5IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDcuODNBMTAuMTcsMTAuMTcsMCwxLDAsMjguMTcsMTgsMTAuMTgsMTAuMTgs'@; put 'MCwwLDAsMTgsNy44M1ptMCwxNkE1Ljg4LDUuODgsMCwxLDEsMjMuODgsMTgsNS44OCw1Ljg4LDAsMCwxLDE4LDIzLjg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2'@; put 'LDAsMCwwLDE4LDJabTAsMjcuODNBMTEuODMsMTEuODMsMCwxLDEsMjkuODMsMTgsMTEuODUsMTEuODUsMCwwLDEsMTgsMjkuODNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGguQ2xyU2hhcGVGbGFtZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJN'@; put 'MzEuMywxNi42NmMtMS4xOS0yLjA5LTcuOTQtMTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy43OCw0LjQyLDE5LjVBOS4zLDkuMywwLDAsMCwzLDI0LjYxQzMsMjkuNzIsNS44NiwzNCwxMS42NywzNEgyMi40'@; put 'OEMyOC4yOCwzNCwzMywyOSwzMywyMi43OEExMS4xMywxMS4xMywwLDAsMCwzMS4zLDE2LjY2Wk0yMi40OCwzMkgxMS43N0M4LjEzLDMyLDUsMjguNjYsNSwyNC42MWE3LjQzLDcuNDMsMCwwLDEsMS4xNi00LjEzYy43My0xLjI5LDQuMDUtNy4yMSw1LjY1LTEwLjA3bDMsNS4yOGExLDEsMCww'@; put 'LDAsLjg3LjUxaDBhMSwxLDAsMCwwLC44Ny0uNTFMMjIuNDksNWMxLjg2LDMuMzMsNi4xNSwxMSw3LjA3LDEyLjZBOS4yNCw5LjI0LDAsMCwxLDMxLDIyLjc4QzMxLDI3Ljg3LDI3LjE4LDMyLDIyLjQ4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+'@; put 'XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUuNzUsMjEuNzNjLS42NS0xLjE2LTQuMzgtNy44MS00LjM4LTcuODFhLjguOCwwLDAsMC0xLjQsMGwtNC4yLDcuNDgtMS41OS0yLjQ5YS44LjgsMCwwLDAtMS4zNSwwTDkuMzcsMjQuMzVhNC4zNSw0LjM1LDAsMCwwLS44MiwyLjYsNC40OSw0LjQ5'@; put 'LDAsMCwwLC41LDJIMTFhMywzLDAsMCwxLS44My0yLDIuNzgsMi43OCwwLDAsMSwuNTYtMS43M2wyLjgtNC4zOCwxLjY2LDIuNmEuOC44LDAsMCwwLDEuNDEtLjEyLDcuODIsNy44MiwwLDAsMSwuNC0uOEwyMC42NywxNmwzLjY5LDYuNTdhNC44Myw0LjgzLDAsMCwxLC43NywyLjcxQTUsNSww'@; put 'LDAsMSwyMy40NiwyOWgyLjEzYTYuNjgsNi42OCwwLDAsMCwxLjE0LTMuNzQsNi40NSw2LjQ1LDAsMCwwLTEtMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMywxNi4zMmMtMS4xOS0yLjA5LTcuOTQt'@; put 'MTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy40Myw0LjQyLDE5LjE1QTkuMyw5LjMsMCwwLDAsMywyNC4yNmMwLDUuMTEsMy44OCw5LjY1LDguNjcsOS43NEgyMi40OEMyOC4yOCwzNCwzMywyOC42MiwzMywy'@; put 'Mi40NEExMS4xMywxMS4xMywwLDAsMCwzMS4zLDE2LjMyWk0yMS40OCwzMkgxNC41NEE0LjY4LDQuNjgsMCwwLDEsMTAsMjcuNDFhMy45MSwzLjkxLDAsMCwxLC43NS0yLjM0bDMuMzUtNS4yMWEuNS41LDAsMCwxLC44NCwwbDEuNzgsMi43NywwLS4wOGMuNjMtMS4xMSw0LjIzLTcuNDgsNC4y'@; put 'My03LjQ4YS41LjUsMCwwLDEsLjg3LDBzMy42LDYuMzgsNC4yMyw3LjQ4QTUuODMsNS44MywwLDAsMSwyNywyNS43NkMyNywzMiwyMi4xLDMyLDIxLjQ4LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlSG91cmdsYXNzPSgwLHMuY2xy'@; put 'SWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMUE2LjY3LDYuNjcsMCwwLDAsMjYsMTEuMDlWNGgzYTEsMSwwLDAsMCwwLTJI'@; put 'N0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcsMCwwLDAtMSwuNjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAs'@; put 'MCwwLTJaTTEyLDI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCwwLDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEs'@; put 'MTIsMTEuMDlWNEgyNHY3LjA5YTQuNjYsNC42NiwwLDAsMS0xLjg4LDMuNzJsLTEuMjgsMWgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAsMC0uNjUuOTR2MS4zNGExLDEsMCwwLDAsLjY1Ljk0LDQuNjcsNC42NywwLDAsMSwxLjE5LjYzbDEuMjgsMUE0LjY2LDQuNjYsMCwwLDEs'@; put 'MjQsMjQuOTFWMzJIMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2'@; put 'LjI5LDAsMCwwLDEtLjYybDEuMjgtMWE2LjY0LDYuNjQsMCwwLDAsMS4wOS0xSDIyLjIzYTMuNjQsMy42NCwwLDAsMS0uNzgtLjA5bC0uNjIuNDZoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRhMSwxLDAsMCwwLC42NS45NCw0LjY3LDQuNjcsMCwwLDEs'@; put 'MS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyVjI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCww'@; put 'LDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEsMTIsMTEuMDlWNEgyMi40NUwyMy42LDJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcsMCwwLDAtMSwuNjJsLTEu'@; put 'MjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0'@; put 'LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl'@; put 'ZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMWE2LjY4LDYuNjgsMCwwLDAsMi41Ny00'@; put 'LjE2QTcuNTMsNy41MywwLDAsMSwyNCwxMC40OXYuNjFhNC42Niw0LjY2LDAsMCwxLTEuODgsMy43MmwtMS4yOCwxaDBhNC42Niw0LjY2LDAsMCwxLTEuMTguNjMsMSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0LjY3LDAsMCwxLDEuMTkuNjNsMS4yOCwxQTQu'@; put 'NjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMlYyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEsMS4xOC0uNjMsMSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwxLDAsMCwwLS42NS0uOTQsNC42Nyw0LjY3LDAsMCwxLTEuMTktLjYzbC0xLjI4'@; put 'LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjIuNzhhNy40NSw3LjQ1LDAsMCwxLC44OS0ySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIuNjksNS4zM2wxLjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBhNi4yNyw2LjI3LDAsMCwwLTEsLjYybC0xLjI4'@; put 'LDFBNi42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiBy'@; put 'PSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcsNGgyMmExLDEsMCwwLDAsMC0yaC0yMmExLDEsMCwxLDAsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlk'@; put 'IGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41NSwx'@; put 'NS42N0E2LjA3LDYuMDcsMCwwLDAsMjUsMTEuMTJWNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEuNDgsMTEuNDgsMCwwLDAsMi45MSwxLjcydjEuMTZhMTEuNDgsMTEuNDgsMCwwLDAtMi45MSwxLjcyLDYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYy'@; put 'NC44MmE2LjA3LDYuMDcsMCwwLDAtMi40NS00LjU1LDExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4zOUExMS40OCwxMS40OCwwLDAsMCwyMi41NSwxNS42N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgu'@; put 'NjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0SDIyLjQ1TDIzLjYsMkg2LjY3YTEsMSwwLDEsMCwwLDJa'@; put 'IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjUxLDIwLjI3YTYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYyNC44MmE2LjA3LDYuMDcsMCwwLDAtMi40NS00LjU1LDEx'@; put 'LjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4zOWExMS40OCwxMS40OCwwLDAsMCwyLjkxLTEuNzJsLjMtLjI3aC0uNjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEuNDgsMTEuNDgsMCwwLDAsMi45MSwx'@; put 'LjcydjEuMTZBMTEuNDgsMTEuNDgsMCwwLDAsMTIuNTEsMjAuMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIz'@; put 'LDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0'@; put 'aCBkPSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcsNEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg5'@; put 'LTJoLTE3YTEsMSwwLDEsMCwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41NSwyMC4yN2ExMS40OCwxMS40OCwwLDAsMC0yLjkxLTEuNzJWMTcuMzlhMTEuNDgsMTEuNDgsMCww'@; put 'LDAsMi45MS0xLjcyQTYuMjUsNi4yNSwwLDAsMCwyNSwxMS41NSw3LjQ3LDcuNDcsMCwwLDEsMjIuNSw2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwxMS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNmExMS40OCwxMS40OCwwLDAsMC0yLjkxLDEuNzIsNi4wNyw2'@; put 'LjA3LDAsMCwwLTIuNDUsNC41NXY1LjEySDI1VjI0LjgyQTYuMDcsNi4wNywwLDAsMCwyMi41NSwyMC4yN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAg'@; put 'Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksaC5DbHJTaGFwZU5vQWNjZXNzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBB'@; put 'MTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4xNSwxNUg4Ljg1QTEuODUsMS44NSwwLDAsMCw3LDE2Ljg1djIuMjlBMS44NSwxLjg1LDAsMCww'@; put 'LDguODUsMjFIMjcuMTVBMS44NSwxLjg1LDAsMCwwLDI5LDE5LjE1VjE2Ljg1QTEuODUsMS44NSwwLDAsMCwyNy4xNSwxNVptLjI1LDQuMTVhLjI1LjI1LDAsMCwxLS4yNS4yNUg4Ljg1YS4yNS4yNSwwLDAsMS0uMjUtLjI1VjE2Ljg1YS4yNS4yNSwwLDAsMSwuMjUtLjI1SDI3LjE1YS4yNS4y'@; put 'NSwwLDAsMSwuMjUuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LjE1LDIwSDYuODVBLjg1Ljg1LDAsMCwxLDYsMTkuMTVWMTYu'@; put 'ODVBLjg1Ljg1LDAsMCwxLDYuODUsMTZIMjkuMTVhLjg1Ljg1LDAsMCwxLC44NS44NXYyLjI5QS44NS44NSwwLDAsMSwyOS4xNSwyMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZU9yZ2FuaXphdGlvbj0oMCxzLmNsckljb25TVkcpKCc8'@; put 'cG9seWdvbiBwb2ludHM9IjkuOCAxOC44IDI2LjIgMTguOCAyNi4yIDIxLjg4IDI3LjggMjEuODggMjcuOCAxNy4yIDE4LjggMTcuMiAxOC44IDE0IDE3LjIgMTQgMTcuMiAxNy4yIDguMiAxNy4yIDguMiAyMS44OCA5LjggMjEuODggOS44IDE4LjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDIzSDRhMiwyLDAsMCwwLTIsMnY2YTIsMiwwLDAsMCwyLDJIMTRhMiwyLDAsMCwwLDItMlYyNUEyLDIsMCwwLDAsMTQsMjNaTTQsMzFWMjVIMTR2NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDIzSDIyYTIsMiwwLDAsMC0yLDJ2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjVBMiwyLDAsMCwwLDMyLDIzWk0yMiwzMVYyNUgzMnY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsMTNIMjNhMiwyLDAsMCwwLDItMlY1YTIsMiwwLDAsMC0yLTJIMTNhMiwyLDAsMCwwLTIsMnY2QTIsMiwwLDAsMCwxMywxM1ptMC04SDIzdjZIMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'NCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOS44IDE4LjggMjYuMiAxOC44IDI2LjIgMjEuODggMjcuOCAyMS44OCAyNy44IDE3LjIgMTguOCAxNy4yIDE4LjggMTQgMTcuMiAxNCAxNy4yIDE3LjIgOC4yIDE3LjIgOC4yIDIxLjg4IDkuOCAyMS44OCA5LjggMTguOCIgY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIzIiB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxy'@; put 'ZWN0IHg9IjIwIiB5PSIyMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIi'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksaC5DbHJTaGFwZUJhbGFuY2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDMzSDEyYTEsMSwwLDAsMSwwLTJIMjRhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIyLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDdIOEExLDEsMCwwLDEsOCw1SDI4YTEs'@; put 'MSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi45MywyNC43OWE3LjIzLDcuMjMsMCwwLDEtNS44MS0yLjg5bC0uNi0uOCwxLjU5LTEuMjEuNi44YTUuMjgsNS4yOCwwLDAsMCw4LjQyLDBs'@; put 'LjYtLjgsMS41OSwxLjIxLS42LjhBNy4yMyw3LjIzLDAsMCwxLDI2LjkzLDI0Ljc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNTEsMTkuMjVhLjguOCwwLDAsMS0uNzMtLjQ4TDI2LjkzLDEyLjJsLTIu'@; put 'ODUsNi41N2EuOC44LDAsMCwxLTEuNDctLjY0TDI2LjIsOS44N2EuODMuODMsMCwwLDEsMS40NywwbDMuNTgsOC4yNmEuOC44LDAsMCwxLS43MywxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOS42OCwy'@; put 'NC43OUE3LjIzLDcuMjMsMCwwLDEsMy44OCwyMS45bC0uNi0uOEw0Ljg2LDE5LjlsLjYuOGE1LjI4LDUuMjgsMCwwLDAsOC40MiwwbC42LS44LDEuNTksMS4yMS0uNi44QTcuMjMsNy4yMywwLDAsMSw5LjY4LDI0Ljc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjYsMTkuMjVhLjguOCwwLDAsMS0uNzMtLjQ4TDkuNjgsMTIuMiw2Ljg0LDE4Ljc3YS44LjgsMCwwLDEtMS40Ny0uNjRMOC45NSw5Ljg3YS44My44MywwLDAsMSwxLjQ3LDBMMTQsMTguMTNhLjguOCwwLDAsMS0uNzMsMS4xMloiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPicpLGguQ2xyU2hhcGVJZEJhZGdlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAsMCwxOCwyMlptMC02Ljg2YTIuNjMsMi42Myww'@; put 'LDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiwwLDAsMC0yLDJ2N2g4Wk0yMCw5SDE2VjRoNFoi'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMwVjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3YTEuMTMsMS4xMywwLDAs'@; put 'MC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw2SDI0VjhoNFYzMkg4Vjho'@; put 'NFY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjgsNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIyYTQuMjMsNC4yMywwLDEsMC00'@; put 'LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0wLTYuODZhMi42MywyLjYzLDAsMSwxLTIuNjMsMi42M0EyLjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAg'@; put 'ICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlhOC4zMyw4LjMzLDAsMCwxLDYuNCwyLjU5VjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42'@; put 'OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOS44OSwxOS41Niw5SDE2VjRoNFY4LjI0bDItMy40NlY0YTIsMiwwLDAsMC0yLTJI'@; put 'MTZhMiwyLDAsMCwwLTIsMnY3aDQuNjRBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS40VjMySDhWOGg0VjZIOEEyLDIsMCww'@; put 'LDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs'@; put 'MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjJhNC4yMyw0LjIzLDAsMSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0YTIsMiwwLDAsMC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3aDhaTTIwLDlIMTZWNGg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk'@; put 'Z2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5Ljks'@; put 'OS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJWMzJIOFY4aDRWNkg4QTIsMiwwLDAsMCw2LDhW'@; put 'MzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiBy'@; put 'PSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt'@; put 'MSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSw0YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYu'@; put 'NzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDZIMjNWOGg1VjMy'@; put 'SDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwyOCw2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5LDIxLDYuNVY0YTIsMiww'@; put 'LDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy'@; put 'dGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEw'@; put 'LjI2LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS40VjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNS40'@; put 'WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjku'@; put 'MDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9'@; put 'ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1i'@; put 'YWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloi'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFk'@; put 'Z2UiIC8+JyksaC5DbHJTaGFwZVJlcGVhdD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMTQuMTVBMy4xNywzLjE3LDAsMCwxLDkuMTcsMTFIMjguNGwtNC4yOCw0LjU0YTEsMSwwLDEsMCwxLjQ2LDEuMzdM'@; put 'MzIuMDksMTAsMjUuNTgsMy4wOWExLDEsMCwxLDAtMS40NiwxLjM3TDI4LjQsOUg5LjE3QTUuMTcsNS4xNywwLDAsMCw0LDE0LjE1djYuMWwyLTIuMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLDIxLjg1'@; put 'QTMuMTcsMy4xNywwLDAsMSwyNi44MywyNUg3LjZsNC4yOC00LjU0YTEsMSwwLDEsMC0xLjQ2LTEuMzdMMy45MSwyNmw2LjUxLDYuOTFhMSwxLDAsMSwwLDEuNDYtMS4zN0w3LjYsMjdIMjYuODNBNS4xNyw1LjE3LDAsMCwwLDMyLDIxLjg1di02LjFsLTIsMi4xMloiLz4nKSxoLkNsclNoYXBl'@; put 'RmlsZUdyb3VwPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMzRIMTNhMSwxLDAsMCwxLTEtMVYxMWExLDEsMCwwLDEsMS0xSDMxYTEsMSwwLDAsMSwxLDFWMzNBMSwxLDAsMCwxLDMxLDM0Wk0xNCwzMkgz'@; put 'MFYxMkgxNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxNiIgeT0iMTYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMyIgeD0iMTYiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE2IiB5PSIyNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRo'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNNiwyNFY0SDI0VjNhMSwxLDAsMCwwLTEtMUg1QTEsMSwwLDAsMCw0LDNWMjVhMSwxLDAsMCwwLDEsMUg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTYiIGQ9Ik0xMCwyOFY4SDI4VjdhMSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMxLDEwSDEzYTEsMSwwLDAsMC0xLDFW'@; put 'MzNhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMS0xVjExQTEsMSwwLDAsMCwzMSwxMFpNMjgsMjZIMTZWMjRIMjhabTAtNEgxNlYyMEgyOFptMC00SDE2VjE2SDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYs'@; put 'MjRWNEgyNFYzYTEsMSwwLDAsMC0xLTFINUExLDEsMCwwLDAsNCwzVjI1YTEsMSwwLDAsMCwxLDFINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMCwyOFY4SDI4VjdhMSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4'@; put 'LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPicpLGguQ2xyU2hhcGVQYXBlcmNsaXA9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjQyLDMyLjZBNi4zLDYuMywwLDAsMSw0LDMwLjc5bC0uMTMtLjEzQTYuMiw2'@; put 'LjIsMCwwLDEsMiwyNi4yMiw2Ljc3LDYuNzcsMCwwLDEsNCwyMS40TDE5LjUsNi4wN2E4LjY3LDguNjcsMCwwLDEsMTIuMTUtLjM1QTgsOCwwLDAsMSwzNCwxMS40NGE5LDksMCwwLDEtMi43LDYuMzZMMTcuMzcsMzEuNkExLDEsMCwxLDEsMTYsMzAuMThMMjkuODksMTYuMzhBNyw3LDAsMCww'@; put 'LDMyLDExLjQ0YTYsNiwwLDAsMC0xLjc2LTQuMyw2LjY3LDYuNjcsMCwwLDAtOS4zNC4zNUw1LjQ1LDIyLjgyQTQuNzgsNC43OCwwLDAsMCw0LDI2LjIyYTQuMjEsNC4yMSwwLDAsMCwxLjI0LDNsLjEzLjEzYTQuNjQsNC42NCwwLDAsMCw2LjUtLjIxTDI1LjIyLDE1Ljk0QTIuNywyLjcsMCww'@; put 'LDAsMjYsMTRhMi4zNSwyLjM1LDAsMCwwLS42OS0xLjY4LDIuNjEsMi42MSwwLDAsMC0zLjY2LjEzbC05LjIsOS4xMmExLDEsMCwxLDEtMS40MS0xLjQyTDIwLjI4LDExYTQuNjIsNC42MiwwLDAsMSw2LjQ4LS4xM0E0LjMzLDQuMzMsMCwwLDEsMjgsMTRhNC42OCw0LjY4LDAsMCwxLTEuNDEs'@; put 'My4zNEwxMy4yOCwzMC41OEE2LjkxLDYuOTEsMCwwLDEsOC40MiwzMi42WiIvPicpLGguQ2xyU2hhcGVTaHJpbms9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgyMi40MWw5LjI1LTkuMjVhMSwxLDAs'@; put 'MCwwLTEuNDEtMS40MUwyMSwxMy41OVY0YTEsMSwwLDAsMC0yLDBWMTdIMzJhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNCwxOWExLDEsMCwwLDAsMCwyaDkuNTlMNC4zMywzMC4yNWEx'@; put 'LDEsMCwxLDAsMS40MSwxLjQxTDE1LDIyLjQxVjMyYTEsMSwwLDAsMCwyLDBWMTlaIi8+JyksaC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC40NCwzMS45NGE3LjMxLDcuMzEsMCwwLDEtNS43LTExLjg4TDcuMzIsMTguNjRhOS4zLDkuMyww'@; put 'LDAsMCwxMy4xLDEzLjExTDE5LDMwLjMzQTcuMjksNy4yOSwwLDAsMSwxNC40NCwzMS45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LjM2LDEuNjdhNC4xMiw0LjEyLDAsMSwwLDQuMTEsNC4xMUE0LjEy'@; put 'LDQuMTIsMCwwLDAsMjUuMzYsMS42N1ptMCw2LjIzYTIuMTIsMi4xMiwwLDEsMSwyLjExLTIuMTJBMi4xMiwyLjEyLDAsMCwxLDI1LjM2LDcuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU2LDE4LjE4'@; put 'aC01YTEsMSwwLDAsMC0uMjQuMDVsMy4wOS0zLjU1YTIuODMsMi44MywwLDAsMC0uNjktNC4zM2wtOC00LjZhMSwxLDAsMCwwLTEuMTIuMDhMOS44Myw5LjU4QTEsMSwwLDAsMCw5LjY2LDExYTEsMSwwLDAsMCwuNzkuMzgsMSwxLDAsMCwwLC42MS0uMjFsNC4yNy0zLjM0LDMuMTEsMS43Ny01'@; put 'LjA4LDUuNzhoMGE5LjI4LDkuMjgsMCwwLDAtNC41MywxLjgzbDEuNDMsMS40M0E3LjMsNy4zLDAsMCwxLDIwLjQyLDI4LjgxbDEuNDIsMS40M2E5LjI3LDkuMjcsMCwwLDAsLjc3LTEwLjA2aDIuODJsLS43Nyw2LjUxYTEsMSwwLDAsMCwuODgsMS4xMWguMTJhMSwxLDAsMCwwLDEtLjg4bC45'@; put 'LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjU2LDE4LjE4Wm0tNi4zNy03LjU2LDIuNTIsMS40NmEuNzkuNzksMCwwLDEsLjQuNTkuODEuODEsMCwwLDEtLjIuNjlMMTkuNzUsMTdBOS4xNyw5LjE3LDAsMCwwLDE2LDE1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzcsMzEuOTRhNy4zMSw3LjMxLDAsMCwxLTUuNy0xMS44OEw3LjY1LDE4LjY0YTkuMyw5LjMsMCwwLDAsMTMuMSwxMy4xMWwtMS40Mi0xLjQyQTcuMjksNy4yOSwwLDAsMSwxNC43NywzMS45NFoiIGNsYXNz'@; put 'PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNjUsMi4xYTMuMTIsMy4xMiwwLDEsMCwzLjExLDMuMTJBMy4xMiwzLjEyLDAsMCwwLDI2LjY1LDIuMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+'@; put 'XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODEsMTguMThIMjEuNDdxLS4zMS0uMzMtLjY2LS42M2w0LjM4LTQuODZhMi4xNCwyLjE0LDAsMCwwLS41My0zLjI3TDIwLjksNy4yM2wwLDBMMTcuMDUsNS4wN2ExLDEsMCwwLDAtMS4xMS4wOEwxMS4xNSw4LjlhMSwxLDAsMCwwLDEuMjMsMS41'@; put 'OGw0LjI3LTMuMzQsMi44NywxLjYzTDEzLjYsMTUuMzlhOS4zMyw5LjMzLDAsMCwwLTQuNDQsMS44MmwxLjQyLDEuNDNBNy4zLDcuMywwLDAsMSwyMC43NSwyOC44MWwxLjQzLDEuNDNBOS4yNyw5LjI3LDAsMCwwLDIzLDIwLjE4aDIuNzRsLS43Nyw2LjUxYTEsMSwwLDAsMCwuODcsMS4xMWgu'@; put 'MTJhMSwxLDAsMCwwLDEtLjg4bC45LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjgxLDE4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxoLkNsclNoYXBlQWNjZXNzaWJpbGl0eTI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0i'@; put 'TTMwLjA2LDExaC0yNGExLDEsMCwxLDAsMCwySDE0djkuNjVzMCwwLDAsMGwtMy43NSwxMGExLDEsMCwwLDAsLjU4LDEuMjksMS4xMywxLjEzLDAsMCwwLC4zNi4wNiwxLDEsMCwwLDAsLjkzLS42NUwxNS42MiwyNGg0Ljc2bDMuNTIsOS4zNWExLDEsMCwwLDAsLjkzLjY1LDEuMTMsMS4xMyww'@; put 'LDAsMCwuMzYtLjA2LDEsMSwwLDAsMCwuNTgtMS4yOUwyMiwyMi42OHMwLDAsMCwwVjEzaDguMDZhMSwxLDAsMSwwLDAtMlpNMjAsMjJIMTZWMTNoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwYTQs'@; put 'NCwwLDEsMC00LTRBNCw0LDAsMCwwLDE4LDEwWm0wLTZhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcuOTYiIGN5PSI1IiByPSIzIiBjbGFzcz0iY2xy'@; put 'LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDZhMSwxLDAsMCwwLDAsMmg4djguMzZzMCwwLDAsMEwxMC4xMSwzMy4xN2ExLDEsMCwwLDAsLjY2LDEuMjUsMS41NSwxLjU1LDAsMCwwLC4yOSwwLDEsMSwwLDAsMCwxLS43MWwzLjI5'@; put 'LTEwLjg0aDUuMzhMMjQsMzMuNzVhMSwxLDAsMCwwLDEsLjcxLDEuNTUsMS41NSwwLDAsMCwuMjksMCwxLDEsMCwwLDAsLjY2LTEuMjVMMjIsMjAuNHMwLDAsMCwwVjEyaDhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksaC5DbHJT'@; put 'aGFwZVNvcnRCeT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjguNTQsMTNINy40NmExLDEsMCwwLDEsMC0ySDI4LjU0YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xNywx'@; put 'OUg3LjQ2YTEsMSwwLDAsMSwwLTJIMjEuMTdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjc0LDI1SDcuNDZhMSwxLDAsMCwxLDAtMmg2LjI4YTEsMSwwLDAsMSwwLDJaIiBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxoLkNsclNoYXBlQ29sbGFwc2VDYXJkPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyMUgzYTEsMSwwLDAsMC0xLDF2NmExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWMjJBMSwxLDAsMCwwLDMz'@; put 'LDIxWm0tMSw2SDRWMjNIMzJaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC4yMmw1LjY1LTUuNjVhLjgxLjgxLDAsMCwwLDAtMS4xNC44LjgsMCwwLDAtMS4xMywwTDE4LDE4bC00LjUyLTQuNTJhLjgu'@; put 'OCwwLDAsMC0xLjEzLDAsLjgxLjgxLDAsMCwwLDAsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjIybDUuNjUtNS42NWEuODEuODEsMCwwLDAsMC0xLjE0LjguOCwwLDAsMC0xLjEzLDBMMTgs'@; put 'MTIsMTMuNDgsNy40M2EuOC44LDAsMCwwLTEuMTMsMCwuODEuODEsMCwwLDAsMCwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSIyMiIgd2lkdGg9IjMyIiBoZWlnaHQ9IjgiIHJ4PSIxIiByeT0i'@; put 'MSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC43bC01Ljc5LTUuNzlhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDE4LDE3Ljg3bDQuMzgtNC4zN2ExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAs'@; put 'MSwwLDEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjUsMTIuMjEsOC43MWExLDEsMCwwLDEsMC0xLjQyLDEsMSwwLDAsMSwxLjQxLDBMMTgsMTEuNjdsNC4zOC00LjM4YTEsMSwwLDAsMSwxLjQxLDAs'@; put 'MSwxLDAsMCwxLDAsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksaC5DbHJTaGFwZUV4cGFuZENhcmQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDZIM0ExLDEsMCwwLDAsMiw3VjI5YTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEt'@; put 'MVY3QTEsMSwwLDAsMCwzMyw2Wk0zMiwyOEg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjQ4LDE1Ljg2LDE4LDExLjM0bDQuNTIsNC41MmEuNzcuNzcsMCwwLDAsLjU2LjI0LjgxLjgxLDAsMCww'@; put 'LC41Ny0xLjM3TDE4LDkuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNDgsMjEuODYsMTgsMTcuMzRsNC41Miw0LjUyYS43Ny43NywwLDAsMCwu'@; put 'NTYuMjQuODEuODEsMCwwLDAsLjU3LTEuMzdMMTgsMTUuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNkgzQTEsMSwwLDAsMCwyLDdWMjlhMSwx'@; put 'LDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDMzLDZaTTIzLjc5LDIxLjQxYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTdsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsMTQuMiwyMy43OSwyMEExLDEsMCwwLDEsMjMuNzksMjEuNDFa'@; put 'bTAtNi4yYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTAuODNsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsOGw1Ljc5LDUuNzlBMSwxLDAsMCwxLDIzLjc5LDE1LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxoLkNs'@; put 'clNoYXBlQnJpZWZjYXNlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiwyOGEwLDAsMCwwLDEsMCwwSDRWMjEuMzJhNy4xLDcuMSwwLDAsMS0yLTEuNDNWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5Ljg5YTYuNzQsNi43NCwwLDAsMS0yLDEuNDJaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yNSwyMi40YTEsMSwwLDAsMCwxLTFWMTUuOTRIMjRWMThIMTR2MkgyNHYxLjRBMSwxLDAsMCwwLDI1LDIyLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxw'@; put 'YXRoIGQ9Ik0zMyw2SDI0VjQuMzhBMi40MiwyLjQyLDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQyLDIuNDIsMCwwLDAsMTIsNC4zOFY2SDNBMSwxLDAsMCwwLDIsN3Y4YTUsNSwwLDAsMCw1LDVoM3YxLjRhMSwxLDAsMCwwLDIsMFYxNS45NEgxMFYxOEg3YTMsMywwLDAsMS0zLTNWOEgzMnY3YTMs'@; put 'MywwLDAsMS0zLDNIMjh2MmgxYTUsNSwwLDAsMCw1LTVWN0ExLDEsMCwwLDAsMzMsNlpNMjIsNkgxNFY0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMTFhLjQzLjQzLDAsMCwxLC40NC40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGgg'@; put 'ZD0iTTMwLDE4QTQuMDYsNC4wNiwwLDAsMCwzNCwxNFY2SDI0VjQuNDNBMi40NCwyLjQ0LDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQ0LDIuNDQsMCwwLDAsMTIsNC40M1Y2SDJ2OEE0LjA2LDQuMDYsMCwwLDAsNi4wNSwxOGg0VjE1LjkyaDJ2NS43YTEsMSwwLDEsMS0yLDBWMjAuMDZINi4wNkE2'@; put 'LjA2LDYuMDYsMCwwLDEsMiwxOC40OXY5LjQ1YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOC40OWE2LDYsMCwwLDEtNC4wNiwxLjU3SDI4VjE4Wk0xNCw0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMWEuNDUuNDUsMCwwLDEsLjQ1LjQzVjZIMTRaTTI2LDIxLjYyYTEsMSww'@; put 'LDEsMS0yLDBWMjAuMDZIMTRWMThIMjRWMTUuOTJoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZUNvbG9yUGlja2VyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMC4wNWE1LjA3LDUuMDcsMCwwLDAsLjEtNy4xN0E1LjA2'@; put 'LDUuMDYsMCwwLDAsMjYsM0wyMC43OCw4LjE1YTIuMTMsMi4xMywwLDAsMS0zLDBsLS42Ny0uNjdMMTUuNzIsOC45MiwyNy4wOCwyMC4yOGwxLjQyLTEuNDItLjY3LS42N2EyLjEzLDIuMTMsMCwwLDEsMC0zWk0yNi40NCwxMy44YTQuMDcsNC4wNywwLDAsMC0xLjA4LDEuOTJsLTUuMDgtNS4w'@; put 'OEE0LjA3LDQuMDcsMCwwLDAsMjIuMiw5LjU2bDUuMTYtNS4xN2EzLjA5LDMuMDksMCwwLDEsNC4zNS0uMSwzLjA5LDMuMDksMCwwLDEtLjEsNC4zNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTcuMywzMS41MWEyLDIsMCwxLDEt'@; put 'Mi44My0yLjgzTDE4LjU4LDE0LjU3bC0xLjQyLTEuNDFMMy4wNSwyNy4yN2E0LDQsMCwwLDAtLjY4LDQuOEwuODksMzMuNTVBMSwxLDAsMCwwLC44OSwzNWExLDEsMCwwLDAsMS40MiwwbDEuNDMtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42LDQuMDYsNC4wNiwwLDAsMCwyLjg4LTEuMkwy'@; put 'Mi44MiwxOC44MSwyMS40MSwxNy40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMzMuNzMsMi4xMWE0LjA5LDQuMDksMCwwLDAtNS43Ni4xTDIyLjgxLDcuMzhhMy4xMywzLjEzLDAsMCwxLTQuMy4xMUwxNy4wOSw4LjkxLDI3LDE4'@; put 'Ljc5bDEuNDItMS40MkEzLjE4LDMuMTgsMCwwLDEsMjguNDYsMTNsNS4xNy01LjE3QTQuMDgsNC4wOCwwLDAsMCwzMy43MywyLjExWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yMi4xOCwxNi43OSw3LjQ2LDMxLjUxYTIsMiwwLDEsMS0y'@; put 'LjgyLTIuODNMMTkuMzUsMTRsLTEuNDEtMS40MUwzLjIyLDI3LjI3YTQsNCwwLDAsMC0uNjgsNC44TDEuMDYsMzMuNTVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwbDEuNDQtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42LDQuMDYsNC4wNiwwLDAsMCwyLjg4LTEuMkwyMy42'@; put 'LDE4LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi42LDRIMjEuNTVhMy44OSwzLjg5LDAsMCwwLTcuMzEsMEgxMy40QTIuNDEsMi40MSwwLDAsMCwx'@; put 'MSw2LjRWMTBIMjVWNi40QTIuNDEsMi40MSwwLDAsMCwyMi42LDRaTTIzLDhIMTNWNi4yNUEuMjUuMjUsMCwwLDEsMTMuMjUsNmgyLjY5bC4xMi0xLjExQTEuMjQsMS4yNCwwLDAsMSwxNi42MSw0YTIsMiwwLDAsMSwzLjE1LDEuMThsLjA5Ljg0aDIuOWEuMjUuMjUsMCwwLDEsLjI1LjI1WiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuMjUsMTguMDZIMjEuMzNsMi44NC0yLjgzYTEsMSwwLDEsMC0xLjQyLTEuNDJMMTcuNSwxOS4wNmw1LjI1LDUuMjVhMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLTEuN2wtMi44'@; put 'NC0yLjg0SDMzLjI1YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0yOSwxNmgyVjYuNjhBMS42NiwxLjY2LDAsMCwwLDI5LjM1LDVIMjcuMDhWN0gyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTI5LDMxSDdWN0g5VjVINi42NEExLjY2LDEuNjYsMCwwLDAsNSw2LjY3VjMxLjMyQTEuNjYsMS42NiwwLDAsMCw2LjY1LDMzSDI5LjM2QTEuNjYsMS42NiwwLDAsMCwzMSwzMS4zM1YyMi4wNkgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGguQ2xyU2hhcGVEcmFnSGFuZGxlPSgwLHMuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjE1IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTUiIGN5PSIyNCIg'@; put 'cj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUgY3g9IjIxIiBjeT0iMjQiIHI9IjEuNSIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMjEiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIxNSIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGguQ2xyU2hhcGVGaWx0ZXIyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAv'@; put 'PlxuPHBhdGggZD0iTTI4LDE3SDhhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMjMsMjNIMTNhMSwxLDAsMCwwLDAsMkgyM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksaC5DbHJTaGFwZU1vb249KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDI3LjE5YTEsMSwwLDAsMC0xLS41NmMtLjI4LDAtLjU2LDAtLjg1LDBBMTEsMTEsMCwwLDEsMjQuOTIsNS42MWExLDEsMCwwLDAsLjYxLTEsMSwx'@; put 'LDAsMCwwLS42Ny0uOTEsMTQuNywxNC43LDAsMCwwLTUtLjg3LDE1LjEyLDE1LjEyLDAsMCwwLDAsMzAuMjQsMTQuNzgsMTQuNzgsMCwwLDAsMTEtNC44MUExLDEsMCwwLDAsMzEsMjcuMTlaTTE5Ljg5LDMxLjEyYTEzLjEyLDEzLjEyLDAsMCwxLDAtMjYuMjQsMTEuODEsMTEuODEsMCwwLDEs'@; put 'MiwuMTYsMTMsMTMsMCwwLDAsNS43MiwyMy41M0ExMi43NSwxMi43NSwwLDAsMSwxOS44OSwzMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI5LjIsMjYuNzJBMTIuMDcsMTIuMDcsMCwwLDEsMjIuOSw0LjQ0LDEzLjY4LDEz'@; put 'LjY4LDAsMCwwLDE5LjQ5LDRhMTQsMTQsMCwwLDAsMCwyOCwxMy44MiwxMy44MiwwLDAsMCwxMC45LTUuMzRBMTEuNzEsMTEuNzEsMCwwLDEsMjkuMiwyNi43MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZVN1bj0oMCxzLmNsckljb25T'@; put 'VkcpKCc8cGF0aCBkPSJNMTgsNi4zMWExLDEsMCwwLDAsMS0xVjEuOTFhMSwxLDAsMCwwLTIsMHYzLjRBMSwxLDAsMCwwLDE4LDYuMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0xOCwyOS42OWExLDEsMCwwLDAtMSwxdjMuNGEx'@; put 'LDEsMCwwLDAsMiwwdi0zLjRBMSwxLDAsMCwwLDE4LDI5LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNOC4zMiw5Ljc0QTEsMSwwLDAsMCw5LDEwYTEsMSwwLDAsMCwuNzEtLjI5LDEsMSwwLDAsMCwwLTEuNDJMNy4zMyw1Ljky'@; put 'QTEsMSwwLDAsMCw1LjkyLDcuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNjgsMjYuMjZhMSwxLDAsMSwwLTEuNDIsMS40MmwyLjQxLDIuNGExLDEsMCwwLDAsLjcxLjMsMSwxLDAsMCwwLC43LS4zLDEsMSwwLDAsMCwwLTEu'@; put 'NDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNNi4zMSwxOGExLDEsMCwwLDAtMS0xSDEuOTFhMSwxLDAsMCwwLDAsMmgzLjRBMSwxLDAsMCwwLDYuMzEsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'NSIgLz48cGF0aCBkPSJNMzQuMDksMTdoLTMuNGExLDEsMCwxLDAsMCwyaDMuNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTguMzIsMjYuMjZsLTIuNCwyLjQxYTEsMSwwLDAsMCwuNywxLjcxLDEsMSwwLDAs'@; put 'MCwuNzEtLjNsMi40MS0yLjRhMSwxLDAsMSwwLTEuNDItMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0yNywxMGExLDEsMCwwLDAsLjcxLS4yOWwyLjQtMi40MWExLDEsMCwwLDAsMC0xLjQxLDEsMSwwLDAsMC0xLjQxLDBsLTIu'@; put 'NDEsMi40YTEsMSwwLDAsMCwwLDEuNDJBMSwxLDAsMCwwLDI3LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHBhdGggZD0iTTE4LjEzLDcuNzVhMTAuMTMsMTAuMTMsMCwxLDAsMTAsMTAuMTNBMTAuMDgsMTAuMDgsMCwwLDAsMTguMTMsNy43NVpt'@; put 'MCwxOC4yNWE4LjEzLDguMTMsMCwxLDEsOC04LjEyQTguMDgsOC4wOCwwLDAsMSwxOC4xMywyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPjxwYXRoIGQ9Ik0xOCw2LjQyYTEsMSwwLDAsMCwxLTFWMS45MWExLDEsMCwwLDAtMiwwVjUuNDJBMSwxLDAs'@; put 'MCwwLDE4LDYuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyOS41OGExLDEsMCwwLDAtMSwxdjMuNTFhMSwxLDAsMCwwLDIsMFYzMC41OEExLDEsMCwwLDAsMTgsMjkuNThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt'@; put 'cGF0aC0yIiAvPjxwYXRoIGQ9Ik04LjQsOS44MUExLDEsMCwwLDAsOS44MSw4LjRMNy4zMyw1LjkyQTEsMSwwLDAsMCw1LjkyLDcuMzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNy42LDI2LjE5YTEsMSwwLDAsMC0xLjQxLDEuNDFsMi40'@; put 'OCwyLjQ4YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LjQyLDE4YTEsMSwwLDAsMC0xLTFIMS45MWExLDEsMCwwLDAsMCwySDUuNDJBMSwxLDAsMCwwLDYuNDIsMThaIiBjbGFzcz0iY2xyLWktc29saWQg'@; put 'Y2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zNC4wOSwxN0gzMC41OGExLDEsMCwwLDAsMCwyaDMuNTFhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+PHBhdGggZD0iTTguNCwyNi4xOSw1LjkyLDI4LjY3YTEsMSwwLDAsMCwx'@; put 'LjQxLDEuNDFMOS44MSwyNy42QTEsMSwwLDAsMCw4LjQsMjYuMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC03IiAvPjxwYXRoIGQ9Ik0yNy42LDkuODFsMi40OC0yLjQ4YTEsMSwwLDAsMC0xLjQxLTEuNDFMMjYuMTksOC40QTEsMSwwLDAsMCwyNy42LDkuODFaIiBj'@; put 'bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04IiAvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjEwIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC05IiAvPicpLGguQ2xyU2hhcGVXYW5kPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQuMSw0LDMxLjcxLDEuNmExLjgzLDEuODMsMCwwLDAtMS4zMS0uNTRoMGEyLjA1LDIuMDUsMCwwLDAtMS40NS42MkwxLjc2LDI5LjIzQTIsMiwwLDAsMCwxLjY4LDMybDIuNCwyLjQzQTEuODMsMS44MywwLDAsMCw1LjM5LDM1'@; put 'aDBhMi4wNSwyLjA1LDAsMCwwLDEuNDUtLjYyTDM0LDYuNzlBMiwyLDAsMCwwLDM0LjEsNFpNNS40MiwzMi45MywzLjE2LDMwLjY1aDBMMjQuMTEsOS40M2wyLjI1LDIuMjhaTTMyLjYxLDUuMzlsLTUuMTIsNS4xOEwyNS4yNCw4LjI5bDUuMTMtNS4yLDIuMjUsMi4yOFoiLz5cbiAgICAgICAg'@; put 'ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuNTMsMjAuNDdsMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0yLjA5LDIuMDktMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMywxLjEzbDIuMDksMi4wOS0yLjA5LDIuMDlhLjgu'@; put 'OCwwLDAsMCwxLjEzLDEuMTNsMi4wOS0yLjA5LDIuMDksMi4wOWEuOC44LDAsMCwwLDEuMTMtMS4xM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQuNzgsNi41MWEuOC44LDAsMCwwLDEuMTMsMEwxNy40LDVs'@; put 'MS40OSwxLjQ5QS44LjgsMCwwLDAsMjAsNS4zOEwxOC41NCwzLjg5LDIwLDIuNGEuOC44LDAsMCwwLTEuMTMtMS4xM0wxNy40LDIuNzYsMTUuOTEsMS4yN0EuOC44LDAsMSwwLDE0Ljc4LDIuNGwxLjQ5LDEuNDlMMTQuNzgsNS4zOEEuOC44LDAsMCwwLDE0Ljc4LDYuNTFaIi8+XG4gICAgICAg'@; put 'ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTguMzMsMTUuMjZhLjguOCwwLDAsMCwxLjEzLDBsMS4xNi0xLjE2LDEuMTYsMS4xNmEuOC44LDAsMSwwLDEuMTMtMS4xM0wxMS43NiwxM2wxLjE2LTEuMTZhLjguOCwwLDEsMC0xLjEzLTEu'@; put 'MTNsLTEuMTYsMS4xNkw5LjQ2LDEwLjY4YS44LjgsMCwxLDAtMS4xMywxLjEzTDkuNDksMTMsOC4zMywxNC4xM0EuOC44LDAsMCwwLDguMzMsMTUuMjZaIi8+JyksaC5DbHJTaGFwZUN1cnNvck1vdmU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0x'@; put 'LjQyLDAsMSwxLDAsMCwwLDAsMS40MUwzMC4xNCwxN0gxOVY1Ljg2bDIuNjksMi43YTEsMSwwLDAsMCwxLjQxLDAsMSwxLDAsMCwwLDAtMS40MkwxOCwyLDEyLjg5LDcuMTVhMSwxLDAsMCwwLS4yOS43MSwxLDEsMCwwLDAsMS43MS43TDE3LDUuODZWMTdINS44NmwyLjctMi42OWExLDEsMCww'@; put 'LDAsMC0xLjQxLDEsMSwwLDAsMC0xLjQyLDBMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjctMS43MUw1Ljg2LDE5SDE3VjMwLjE0bC0yLjY5LTIuN2ExLDEsMCwwLDAtMS43MS43LDEsMSwwLDAsMCwuMjkuNzFMMTgsMzRsNS4xMS01LjE0YTEsMSwwLDAsMCww'@; put 'LTEuNDIsMSwxLDAsMCwwLTEuNDEsMEwxOSwzMC4xNFYxOUgzMC4xNGwtMi43LDIuNjlhMSwxLDAsMCwwLC43LDEuNzEsMSwxLDAsMCwwLC43MS0uMjlMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlQ2xvbmU9KDAscy5j'@; put 'bHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsNkgyMnY0aDJWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMjJINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxMkgxNGEyLDIsMCwwLDAt'@; put 'MiwyVjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEEyLDIsMCwwLDAsMzAsMTJabTAsMThIMTRWMTRIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cG9seWdvbiBwb2ludHM9IjIxIDI4IDIzIDI4IDIzIDIzIDI4IDIzIDI4IDIx'@; put 'IDIzIDIxIDIzIDE2IDIxIDE2IDIxIDIxIDE2IDIxIDE2IDIzIDIxIDIzIDIxIDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMTBWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMTJh'@; put 'MiwyLDAsMCwxLDItMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDEySDE0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0QTIsMiwwLDAsMCwzMCwxMlpNMjgsMjNIMjN2NUgyMVYyM0gxNlYy'@; put 'MWg1VjE2aDJ2NWg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlRGV0YWlscz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwy'@; put 'LDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTksMTRIMjdhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg'@; put 'Lz48cGF0aCBkPSJNOSwxOEgyN2ExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik05LDIySDE5YTEsMSwwLDAsMCwwLTJIOWExLDEsMCwwLDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xOSwyMkg5YTEsMSwwLDAsMSwwLTJIMTlhMSwxLDAsMCwxLDAsMlptOC00SDlhMSwxLDAsMCwx'@; put 'LDAtMkgyN2ExLDEsMCwwLDEsMCwyWm0wLTRIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPSgwLHMuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEy'@; put 'IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiBy'@; put 'PSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMjQiIGN5PSIyNCIgcj0iMS41IiBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGguQ2xyU2hhcGVFcmFzZXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0i'@; put 'TTM1LjYyLDEyYTIuODIsMi44MiwwLDAsMC0uODQtMkwyNy40OSwyLjY1YTIuOSwyLjksMCwwLDAtNCwwTDIuODMsMjMuMjhhMi44NCwyLjg0LDAsMCwwLDAsNEw3LjUzLDMySDNhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0ySDE2Ljc0bDE4LTE4QTIuODIsMi44MiwwLDAsMCwzNS42'@; put 'MiwxMlpNMTMuOTEsMzJIMTAuMzZMNC4yNSwyNS44OWEuODQuODQsMCwwLDEsMC0xLjE5bDUuNTEtNS41Miw4LjQ5LDguNDhaTTMzLjM3LDEyLjU0LDE5LjY2LDI2LjI1bC04LjQ4LTguNDksMTMuNy0xMy43YS44Ni44NiwwLDAsMSwxLjE5LDBsNy4zLDcuMjlhLjg2Ljg2LDAsMCwxLC4yNS42'@; put 'QS44Mi44MiwwLDAsMSwzMy4zNywxMi41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwzMkgxNS4zM0wxOSwyOC4zN2wtOS45LTkuOUwzLjU0LDI0YTEuODMsMS44MywwLDAsMCwwLDIuNkw5LDMySDNhMSwxLDAsMCwwLDAsMkgy'@; put 'OGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzQuMDgsMTAuNjVsLTcuMy03LjNhMS44MywxLjgzLDAsMCwwLTIuNiwwTDEwLjQ3LDE3LjA2bDkuOSw5LjlMMzQuMDgsMTMuMjVBMS44NSwxLjg1LDAsMCwwLDM0LjA4'@; put 'LDEwLjY1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlTGFuZHNjYXBlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCww'@; put 'LDAsMzIsNlptMCwyMkg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyMmEuODIuODIsMCwwLDAsLjU1LS4yMS44LjgsMCwwLDAsMC0xLjEzTDcuODMsMTguOEgyOC4xN2wtMS43MiwxLjg2YS44LjgsMCwwLDAsMCwxLjEz'@; put 'QS44Mi44MiwwLDAsMCwyNywyMmEuNzguNzgsMCwwLDAsLjU4LS4yNkwzMS4wOSwxOGwtMy40Ny0zLjc0YS43OS43OSwwLDAsMC0xLjEzLDAsLjguOCwwLDAsMCwwLDEuMTNsMS43MiwxLjg2SDcuODNsMS43Mi0xLjg2YS44LjgsMCwwLDAsMC0xLjEzLjc5Ljc5LDAsMCwwLTEuMTMsMEw0Ljkx'@; put 'LDE4bDMuNDcsMy43NEEuNzguNzgsMCwwLDAsOSwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMjcu'@; put 'NzcsMjEuODhhMSwxLDAsMCwxLS43My4zMiwxLDEsMCwwLDEtLjY4LS4yNywxLDEsMCwwLDEtLjA2LTEuNDFMMjcuNzEsMTlIOC4yOUw5LjcsMjAuNTJhMSwxLDAsMCwxLS4wNiwxLjQxQTEsMSwwLDAsMSw5LDIyLjJhMSwxLDAsMCwxLS43My0uMzJMNC42NCwxOGwzLjU5LTMuODhBMSwxLDAs'@; put 'MCwxLDkuNywxNS40OEw4LjI5LDE3SDI3LjcxTDI2LjMsMTUuNDhhMSwxLDAsMCwxLDEuNDctMS4zNkwzMS4zNiwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZVBhc3RlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwxMkgy'@; put 'NnYyaDR2MmgyVjE0QTIsMiwwLDAsMCwzMCwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBh'@; put 'dGggZD0iTTMwLDMwSDI4djJoMmEyLDIsMCwwLDAsMi0yVjI2SDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDIyVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJhMiwyLDAsMCwwLDIsMkgyMkEyLDIsMCwwLDAs'@; put 'MjQsMjJaTTYsNkgyMlYyMkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHJlY3QgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQs'@; put 'MjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMzAsMTJIMjZ2Mmg0djJoMlYxNEEyLDIsMCwwLDAsMzAsMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAv'@; put 'PjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMzBIMjh2MmgyYTIsMiwwLDAsMCwyLTJWMjZIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0z'@; put 'IiAvPjxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxyZWN0IHg9IjIwIiB5PSIzMCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p'@; put 'LXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiAvPicpLGguQ2xyU2hhcGVQb3J0cmFpdD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUuMzQsMjYuNDVh'@; put 'LjguOCwwLDAsMC0xLjEzLDAsLjc5Ljc5LDAsMCwwLDAsMS4xM0wxOCwzMS4wOWwzLjc0LTMuNDdhLjc5Ljc5LDAsMCwwLC4wNS0xLjEzLjguOCwwLDAsMC0xLjEzLDBMMTguOCwyOC4xN1Y3LjgzbDEuODYsMS43MmEuOC44LDAsMSwwLDEuMDgtMS4xN0wxOCw0LjkxLDE0LjI2LDguMzhhLjc5'@; put 'Ljc5LDAsMCwwLDAsMS4xMy44LjgsMCwwLDAsMS4xMywwTDE3LjIsNy44M1YyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEy'@; put 'LDIsMCwwLDAsMjgsMlptMCwzMEg4VjRIMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTIwLjUyLDI2'@; put 'LjNhMSwxLDAsMCwxLDEuMzYsMS40N0wxOCwzMS4zNmwtMy44OC0zLjU5YTEsMSwwLDAsMSwxLjM2LTEuNDdMMTcsMjcuNzFWOC4yOUwxNS40OCw5LjdhMSwxLDAsMCwxLTEuMzYtMS40N0wxOCw0LjY0bDMuODgsMy41OWExLDEsMCwwLDEsLjA1LDEuNDEsMSwxLDAsMCwxLS43My4zMiwxLDEs'@; put 'MCwwLDEtLjY4LS4yNkwxOSw4LjI5VjI3LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlVHJlZVZpZXc9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDMySDExYTEsMSwwLDAsMS0xLTFWMjdhMSwxLDAsMCwxLDEtMWg0YTEs'@; put 'MSwwLDAsMSwxLDF2NEExLDEsMCwwLDEsMTUsMzJabS0zLTJoMlYyOEgxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxNkgxMWExLDEsMCwwLDAtMSwxdjEuMkg1LjhWMTJIN2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDcs'@; put 'NkgzQTEsMSwwLDAsMCwyLDd2NGExLDEsMCwwLDAsMSwxSDQuMlYyOS44aDYuMzZhLjguOCwwLDAsMCwwLTEuNkg1LjhWMTkuOEgxMFYyMWExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxN0ExLDEsMCwwLDAsMTUsMTZaTTQsOEg2djJINFpNMTQsMjBIMTJWMThoMloiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zNCw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzM0ExLDEsMCwwLDAsMzQsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOEgxOHYySDMzYTEsMSww'@; put 'LDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMsMjhIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHJlY3QgeD0iMTAiIHk9IjI2IiB3aWR0'@; put 'aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE1LDE2SDExYTEsMSwwLDAsMC0xLDF2MS4ySDUuOFYxMkg3YTEsMSwwLDAsMCwxLTFWN0ExLDEsMCwwLDAsNyw2SDNBMSwxLDAsMCwwLDIsN3Y0'@; put 'YTEsMSwwLDAsMCwxLDFINC4yVjI5LjhIMTFhLjguOCwwLDEsMCwwLTEuNkg1LjhWMTkuOEgxMFYyMWExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxN0ExLDEsMCwwLDAsMTUsMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMyw4'@; put 'SDEwdjJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDE4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTMzLDI4SDE4'@; put 'djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksaC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC4wOSw5Ljc0YTQsNCwwLDAsMC0xLjE2LjE5Yy0uMTktMS4yNC0xLjU1LTIu'@; put 'MTgtMy4yNy0yLjE4QTQsNCwwLDAsMCwyMi4xMyw4LDMuMzcsMy4zNywwLDAsMCwxOSw2LjNhMy40NSwzLjQ1LDAsMCwwLTIuODcsMS4zMiwzLjY1LDMuNjUsMCwwLDAtMS44OS0uNTFBMy4wNSwzLjA1LDAsMCwwLDExLDkuODl2LjkxYy0xLjA2LjQtNC4xMSwxLjgtNC45MSw0Ljg0cy4zNCw4'@; put 'LDIuNjksMTEuNzhhMjUuMjEsMjUuMjEsMCwwLDAsNS45LDYuNDEuOS45LDAsMCwwLC41My4xN0gyNS41NWEuOTIuOTIsMCwwLDAsLjU1LS4xOSwxMy4xMywxMy4xMywwLDAsMCwzLjc1LTYuMTNBMjUuOCwyNS44LDAsMCwwLDMxLjQxLDE4di01LjVBMy4wOCwzLjA4LDAsMCwwLDI4LjA5LDku'@; put 'NzRaTTI5LjYxLDE4YTI0LDI0LDAsMCwxLTEuNDcsOS4xNUExMi40NiwxMi40NiwwLDAsMSwyNS4yLDMyLjJIMTUuNDdhMjMuNzUsMjMuNzUsMCwwLDEtNS4yLTUuNzJjLTIuMzctMy44Ni0zLTguMjMtMi40OC0xMC4zOUE1LjcsNS43LDAsMCwxLDExLDEyLjc2djcuNjVhLjkuOSwwLDAsMCwx'@; put 'LjgsMFY5Ljg5YzAtLjQ3LjU5LTEsMS40Ni0xczEuNDkuNTIsMS40OSwxdjUuNzJoMS44VjguODFjMC0uMjguNTgtLjcxLDEuNDYtLjcxczEuNTMuNDgsMS41My43NXY2Ljg5aDEuOFYxMGwuMTctLjEyYTIuMSwyLjEsMCwwLDEsMS4xOC0uMzJjLjkzLDAsMS41LjQ0LDEuNS42OGwwLDYuNUgy'@; put 'N1YxMS44N2ExLjkxLDEuOTEsMCwwLDEsMS4xMi0uMzNjLjg2LDAsMS41Mi41MSwxLjUyLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZUN1cnNvckhhbmRPcGVuPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS40Niw4'@; put 'LjU3QTMuMTEsMy4xMSwwLDAsMCwyNyw1Ljc1YTMuMTksMy4xOSwwLDAsMC00LjY2LTIuNjQsMy4yOSwzLjI5LDAsMCwwLTYuNDItLjc2LDMuMjMsMy4yMywwLDAsMC0xLjY2LS40NkEzLjI3LDMuMjcsMCwwLDAsMTEsNS4xOFYxNy44NGMtMS4yOC0xLjYtMi41My0zLjE4LTIuNzItMy40NUEz'@; put 'LjE5LDMuMTksMCwwLDAsNS41NiwxMi45YTMuMzcsMy4zNywwLDAsMC0zLjQ3LDMuNDhDMi4xOCwxOC4xOCw1LjY2LDI0LjU0LDgsMjhjMy41NCw1LjI0LDYuOTIsNiw3LjA3LDZsLjE4LDBIMjUuNTlhLjkyLjkyLDAsMCwwLC41NS0uMTksMTMuMTMsMTMuMTMsMCwwLDAsMy43NS02LjEzYzEt'@; put 'My4wOSwxLjUzLTcuNTMsMS41OC0xMy41NlpNMjguMTgsMjcuMTJhMTIuNDYsMTIuNDYsMCwwLDEtMi45NCw1LjA4SDE1LjMzYy0uNDctLjE0LTMuMDctMS4xLTUuODctNS4yNVMzLjk0LDE3LjI3LDMuODksMTYuMjlhMS41LDEuNSwwLDAsMSwuNDUtMS4xMywxLjUyLDEuNTIsMCwwLDEsMS4x'@; put 'NC0uNDYsMS40MywxLjQzLDAsMCwxLDEuMzIuNzFjLjI5LjQzLDIuMzYsMywzLjU3LDQuNTNMMTIuOCwxOC4zVjUuMThhMS40OCwxLjQ4LDAsMSwxLDIuOTUsMFYxNi4zMmgxLjh2LTEzYTEuNTEsMS41MSwwLDAsMSwzLDBWMTYuNDVoMS44VjZhMS40MywxLjQzLDAsMSwxLDIuODUsMFYxNy40'@; put 'NEgyN1Y4LjU0YTEuMzMsMS4zMywwLDAsMSwyLjY1LDB2NS41NUMyOS42MiwyMCwyOS4xNCwyNC4yMSwyOC4xOCwyNy4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVGaWxlWmlwPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9'@; put 'Ik0zMCwzMC4yVjEybC04LjEtNy45SDcuOEM2LjgsNC4xLDYsNC45LDYsNmMwLDAsMCwwLDAsMHYyNC4yYzAsMSwwLjcsMS44LDEuNywxLjhjMCwwLDAuMSwwLDAuMSwwaDIwLjNcblx0XHRjMSwwLDEuOC0wLjcsMS44LTEuN0MzMCwzMC4zLDMwLDMwLjIsMzAsMzAuMnogTTIyLDYuNmw1LjYs'@; put 'NS40SDIyVjYuNnogTTI4LDMwSDcuOUw4LDZoMTJ2OGg4VjMweiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTEyLDI0YzAsMS43LDEuMywzLDMsM3MzLTEuMywzLTN2LTRoLTZWMjR6IE0xMy40LDI0di0yLjZoMy4yVjI0YzAuMSwwLjkt'@; put 'MC42LDEuNy0xLjUsMS43Yy0wLjksMC4xLTEuNy0wLjYtMS43LTEuNVxuXHRcdEMxMy40LDI0LjIsMTMuNCwyNC4xLDEzLjQsMjR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTguMiw5YzAtMC42LTAuNC0xLTEtMUgxNXYyaDIuMkMx'@; put 'Ny44LDEwLDE4LjIsOS42LDE4LjIsOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xMi43LDEwYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxSDE1di0ySDEyLjd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtNCIgLz48cGF0aCBkPSJNMTcuMiwxNGMwLjYsMCwxLTAuNCwxLTFzLTAuNC0xLTEtMUgxNXYySDE3LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTEuNywxNWMwLDAuNiwwLjQsMSwxLDFIMTV2LTJoLTIuM0MxMi4yLDE0LDEx'@; put 'LjcsMTQuNCwxMS43LDE1eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE3LjIsMThjMC42LDAsMS0wLjQsMS0xcy0wLjQtMS0xLTFIMTV2MkgxNy4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+'@; put 'PHBhdGggZD0iTTE1LDI1LjZjMC45LDAsMS42LTAuNywxLjYtMS42di0yLjZoLTMuMlYyNEMxMy40LDI0LjksMTQuMSwyNS42LDE1LDI1LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS45LDRINy44QzYuOCw0LDYsNC45LDYsNS45djI0'@; put 'LjJjMCwxLDAuOCwxLjksMS44LDEuOWgyMC4zYzEsMCwxLjgtMC45LDEuOC0xLjlWMTEuOUwyMS45LDR6IE0xOCwyNGMwLDEuNy0xLjMsMy0zLDNcblx0XHRzLTMtMS4zLTMtM3YtNGg2VjI0eiBNMTcuMiwxMmMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMUgxNXYyaDIuMmMwLjYsMCwxLDAu'@; put 'NCwxLDFzLTAuNCwxLTEsMUgxNXYtMmgtMi4yYy0wLjYsMC0xLTAuNC0xLTFcblx0XHRzMC40LTEsMS0xSDE1di0yaC0yLjJjLTAuNiwwLTEtMC40LTEtMXMwLjQtMSwxLTFIMTVWOGgyLjJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2MkgxNy4yeiBNMjEuOSwxMlY2LjVsNS43LDUu'@; put 'NUgyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlRmlsdGVyT2ZmPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCw2LjRDMzQsNS42LDMzLjMsNSwzMi41LDVIMTAuM2wyLDJIMzJ2MC42bC05LjYsOS42bDEuNCwxLjRMMzMu'@; put 'NCw5QzMzLjgsOC42LDM0LDguMSwzNCw3LjZWNi41QzM0LDYuNSwzNCw2LjQsMzQsNi40eiJcblx0XHQgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIuNywzbDIsMmgtMUMyLjksNC45LDIuMSw1LjUsMiw2LjN2MS4xYzAsMC41LDAuMiwx'@; put 'LDAuNiwxLjRMMTQsMjAuMnYxMC4zbDEuOSwwLjhWMTkuNEw0LDcuNVY3aDIuN0wyMCwyMC4zdjEyLjlsMiwwLjhcblx0XHRjMCwwLDAsMCwwLTAuMVYyMi4zbDEwLjEsMTAuMWwxLjQtMS40TDQuMSwxLjZMMi43LDN6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MiIgLz48cGF0aCBkPSJNMjMuOSwxOC42TDEwLjMsNS4xaDIyLjJDMzMuMyw1LDM0LDUuNiwzNCw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUtMC4yLDEtMC42LDEuNEwyMy45LDE4LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMy41'@; put 'LDMxTDQuMSwxLjZMMi42LDNsMi4xLDIuMUgzLjVDMi43LDUsMiw1LjYsMiw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUsMC4yLDEsMC42LDEuNEwxNCwyMC41djEwLjFsOCwzLjRWMjIuNFxuXHRsMTAuMSwxMC4xTDMzLjUsMzF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt'@; put 'cGF0aC0yIiAvPicpLGguQ2xyU2hhcGVSZWN5Y2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjQsMTcuNGMwLjIsMC4xLDAuMywwLjEsMC41LDAuMWMwLjIsMCwwLjQtMC4xLDAuNS0wLjFsNy00LjFjMC4zLTAuMiwwLjUtMC41LDAuNS0wLjljMC0wLjQtMC4yLTAuNy0wLjUtMC45'@; put 'TDExLjksMTBcblx0XHRMMTQsNi4yYzAuNC0wLjcsMS0xLjMsMS43LTEuN2MyLTEuMSw0LjUtMC4zLDUuNiwxLjdjMC4zLDAuNSwwLjksMC42LDEuNCwwLjNjMCwwLDAsMCwwLjEsMGMwLjQtMC4zLDAuNS0wLjksMC4zLTEuM1xuXHRcdGMtMC42LTEtMS40LTEuOS0yLjQtMi40Yy0zLTEuNi02'@; put 'LjctMC42LTguMywyLjRMOS42LDkuOWMtMC4zLDAuNS0wLjEsMS4xLDAuMywxLjRsMiwxLjJsLTQsMi40VjguMmMwLTAuNi0wLjQtMS0xLTFcblx0XHRDNi40LDcuMyw2LDcuNyw2LDguM3Y4LjNDNiwxNi45LDYuMiwxNy4yLDYuNCwxNy40eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjEsMjFsLTMuNS02LjJjLTAuMS0wLjItMC40LTAuNC0wLjYtMC41Yy0wLjMtMC4xLTAuNSwwLTAuOCwwLjFsLTIuMiwxLjNWMTFsNS41LDMuM2MwLjEsMCwwLjEsMC4xLDAuMiwwLjFcblx0XHRjMC41LDAuMiwxLjEsMCwxLjMtMC41YzAu'@; put 'Mi0wLjUsMC0xLjEtMC41LTEuM2wtNy00LjJjLTAuMy0wLjItMC43LTAuMi0xLDBDMjMuMSw4LjUsMjMsOC44LDIzLDkuMnY4LjNjMCwwLjQsMC4xLDAuOCwwLjQsMVxuXHRcdGMwLjMsMC4yLDAuNywwLjIsMSwwbDIuOS0xLjdsMyw1LjNjMC43LDEuMywwLjcsMi44LDAsNC4xYy0wLjYsMS4y'@; put 'LTEuOSwxLjktMy4yLDEuOWgtMC45Yy0wLjUsMC0xLjIsMC40LTEuMiwxXG5cdFx0YzAuMSwwLjYsMC42LDEsMS4yLDFoMC45YzIuMSwwLDQtMS4xLDUtMi45QzMzLjIsMjUuMiwzMy4yLDIyLjksMzIuMSwyMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAv'@; put 'PjxwYXRoIGQ9Ik0yMi40LDI4LjJsLTctNC4yYy0wLjMtMC4yLTAuNy0wLjItMSwwYy0wLjMsMC4yLTAuNCwwLjUtMC40LDAuOXYzLjNIOS4xYy0xLjUtMC4xLTIuOS0wLjktMy42LTIuM1xuXHRcdGMtMC44LTEuNC0wLjgtMy4yLDAtNC42YzAuMy0wLjUsMC4xLTEuMS0wLjQtMS40Yy0wLjUt'@; put 'MC4zLTEuMS0wLjEtMS40LDAuNGMtMS4yLDIuMS0xLjEsNC42LDAuMSw2LjZDNC45LDI4LjgsNywzMCw5LjIsMzBIMTVcblx0XHRjMC42LDAsMS0wLjQsMS0xdi0yLjRsNCwyLjRsLTUuNiwzLjNjLTAuMywwLjItMC41LDAuNS0wLjUsMC45YzAsMC42LDAuNSwxLDEsMWMwLjIsMCwwLjMtMC4x'@; put 'LDAuNS0wLjJsNy00LjJcblx0XHRjMC4yLTAuMSwwLjMtMC4yLDAuNC0wLjRDMjMuMSwyOSwyMi45LDI4LjQsMjIuNCwyOC4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIwLjgsMy4xYy0zLTEuNi02LjctMC42LTguNCwyLjRsLTIu'@; put 'MiwzLjhsLTItMS4xQzguMiw4LDgsOCw3LjksOEM3LjQsOCw3LDguNCw3LDguOXY3LjJjMCwwLjMsMC4xLDAuNiwwLjQsMC44XG5cdFx0YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMiwwLDAuMywwLDAuNC0wLjFsNi4zLTMuNmMwLjMtMC4yLDAuNC0wLjQsMC40LTAuOGMwLTAuMy0wLjIt'@; put 'MC42LTAuNC0wLjhMMTIsMTAuM2wyLjItMy44XG5cdFx0YzAuNC0wLjcsMS0xLjMsMS43LTEuN2MyLTEuMSw0LjUtMC4zLDUuNiwxLjdjMC4zLDAuNSwwLjksMC42LDEuNCwwLjRjMC41LTAuMywwLjYtMC45LDAuNC0xLjRDMjIuNiw0LjUsMjEuOCwzLjYsMjAuOCwzLjF6IiBjbGFzcz0iY2xy'@; put 'LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4yLDIxLjFsLTMtNS4zbDIuMy0xLjNjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhjMC0wLjMtMC4yLTAuNi0wLjQtMC44bC02LjItMy42Yy0wLjEtMC4xLTAuMy0wLjEtMC40LTAuMVxuXHRcdGMtMC41LDAtMC45LDAu'@; put 'NC0wLjksMC45djcuMmMwLDAuMywwLjIsMC42LDAuNCwwLjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4yLDAsMC4zLTAuMSwwLjQtMC4xbDIuMi0xLjNsMyw1LjNcblx0XHRjMC43LDEuMiwwLjcsMi44LDAsNGMtMC43LDEuMi0xLjksMS45LTMuMiwxLjloLTAuOWMtMC42LDAtMSwwLjQt'@; put 'MSwxYzAsMC42LDAuNCwxLDEsMWgwLjljMi4xLDAsNC0xLjEsNS0zXG5cdFx0QzMzLjIsMjUuMywzMy4yLDIzLDMyLjIsMjEuMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTIxLjcsMjguNGwtNi4yLTMuNmMtMC4xLTAuMS0wLjMtMC4xLTAu'@; put 'NC0wLjFjLTAuNSwwLTAuOSwwLjQtMC45LDAuOXYyLjZIOS4zYy0xLjUsMC0yLjktMC44LTMuNi0yLjFcblx0XHRjLTAuOC0xLjQtMC44LTMuMSwwLTQuNWMwLjMtMC41LDAuMS0xLjEtMC40LTEuNGMtMC41LTAuMy0xLjEtMC4xLTEuNCwwLjRjLTEuMiwyLTEuMiw0LjUsMCw2LjVjMS4xLDEu'@; put 'OSwzLjEsMy4xLDUuNCwzLjFoNC44djIuNlxuXHRcdGMwLDAuMywwLjIsMC42LDAuNCwwLjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4xLDAsMC4zLDAsMC40LTAuMWw2LjMtMy42YzAuMy0wLjIsMC40LTAuNCwwLjQtMC44XG5cdFx0QzIyLjEsMjguOCwyMS45LDI4LjUsMjEuNywyOC40'@; put 'eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxoLkNsclNoYXBlVHJlZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNiwxMS43QzI5LjIsNS44LDI0LDEuNywxOCwxLjdjLTcuMiwwLTEzLDUuOC0xMywxM2MwLDYuOCw1LjMsMTIuNCwxMiwxMi45'@; put 'djVjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMXYtNXYtMlYyMlxuXHRjMCwwLDAsMCwwLTAuMXYtMy42bDQuNy00LjdjMC40LTAuNCwwLjQtMSwwLTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxOSwxNS42di0zbC0zLjMtMy4zYy0wLjQtMC40LTEtMC40LTEuNCwwXG5cdGMtMC40LDAuNC0w'@; put 'LjQsMSwwLDEuNGwyLjcsMi43djYuMmwtMy44LTMuOGMtMC40LTAuNC0xLTAuNC0xLjQsMGMtMC40LDAuNC0wLjQsMSwwLDEuNGw1LjIsNS4ydjMuMmMtNS42LTAuNS0xMC01LjItMTAtMTAuOVxuXHRjMC02LjEsNC45LTExLDExLTExczExLDQuOSwxMSwxMWMwLDQuOS0zLjMsOS4yLTgsMTAu'@; put 'NnYyLjFDMjgsMjUuNywzMi4zLDE4LjcsMzAuNiwxMS43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJDMTAuOCwxLjcsNC44LDcuMyw0LjUsMTQuNUM0LjIsMjEuNyw5LjgsMjcuNywxNywyOHYtNS4ybC01LjItNS4yYy0wLjQt'@; put 'MC40LTAuNC0xLDAtMS40YzAuNC0wLjQsMS0wLjQsMS40LDBcblx0YzAsMCwwLDAsMCwwbDMuOCwzLjh2LTYuMmwtMi43LTIuN2MtMC40LTAuNC0wLjQtMSwwLTEuNGMwLjQtMC40LDEtMC40LDEuNCwwYzAsMCwwLDAsMCwwbDMuMywzLjN2M2wzLjMtMy4zYzAuNC0wLjQsMS0wLjQsMS40LDBc'@; put 'blx0YzAsMCwwLDAsMCwwYzAuNCwwLjQsMC40LDEsMCwxLjRMMTksMTguOFYyOGM3LjItMC4zLDEyLjgtNi4zLDEyLjUtMTMuNVMyNS4yLDEuNywxOCwyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMjhjLTAuMywwLTAuNiwwLTEsMHY1'@; put 'YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTF2LTVDMTguNywyOCwxOC4zLDI4LDE4LDI4eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlRmlzaD0oMCxzLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMS40OSIgY3k9IjE3LjUiIHI9IjEu'@; put 'NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLjQ4LDkuMjlhMSwxLDAsMCwwLTEsMGMtMy4zNywyLTUuOTEsNS44MS02LjksNy40NUwyNC44NSwxOHMtMSwxLjYyLTEsMS42MmMtMS43NiwyLjQ5LTUuMSw2LjM2LTguNzksNi4zNi00'@; put 'LjY1LDAtOC43NS02LjE1LTkuODQtNy45NCwxLjA5LTEuNzksNS4xOC03Ljk0LDkuODQtNy45NCwzLjU0LDAsNi43NywzLjU4LDguNTgsNi4wN2wuMjgtLjQ4cy4zNi0uNTEuOTMtMS4yNUMyMi43MiwxMS42NCwxOS4xOCw4LjA2LDE1LDguMDZjLTYuNTksMC0xMS42Nyw5LjA3LTExLjg4LDku'@; put 'NDZMMi44OSwxOGwuMjcuNDhjLjIxLjM5LDUuMjksOS40NiwxMS44OCw5LjQ2LDUuMDYsMCw5LjIyLTUuMzQsMTEtOEMyNiwyMCwyNy4xOCwxOCwyNy4xOCwxOGgwbC4wNy0uMTFhMTguMDYsMTguMDYsMCwwLDEsMS44OC0yLjc1czAsMCwwLDBhMjAuMzEsMjAuMzEsMCwwLDEsMi44Ni0zVjIz'@; put 'Ljg4YTIwLjkzLDIwLjkzLDAsMCwxLTMuNjEtNGwtLjE2LjI2aDBsLTEsMS41OWExOC43NCwxOC43NCwwLDAsMCw1LjIxLDQuOTUsMSwxLDAsMCwwLC41LjE0LDEuMTMsMS4xMywwLDAsMCwuNS0uMTMsMSwxLDAsMCwwLC41LS44N1YxMC4xNkExLDEsMCwwLDAsMzMuNDgsOS4yOVoiIGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVGb3JtPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSwxMkg3YTEsMSwwLDAsMS0xLTFWN0ExLDEsMCwwLDEsNyw2SDIxYTEsMSwwLDAsMSwxLDF2NEExLDEsMCwwLDEsMjEsMTJaTTgsMTBI'@; put 'MjBWNy45NEg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDE0LjA4SDdhMSwxLDAsMCwwLTEsMVYxOWExLDEsMCwwLDAsMSwxSDE4LjM2TDIyLDE2LjNWMTUuMDhBMSwxLDAsMCwwLDIxLDE0LjA4Wk0yMCwxOEg4VjE2SDIwWiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTExLjA2LDMxLjUxdi0uMDZsLjMyLTEuMzlINFY0aDIwVjE0LjI1TDI2LDEyLjM2VjNhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDNWMzFhMSwxLDAsMCwwLDEsMWg4QTMuNDQsMy40NCww'@; put 'LDAsMSwxMS4wNiwzMS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxOS4xN2wtLjc4Ljc5QTEsMSwwLDAsMCwyMiwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9'@; put 'Ik02LDI2Ljk0YTEsMSwwLDAsMCwxLDFoNC44NGwuMy0xLjMuMTMtLjU1LDAtLjA1SDhWMjRoNi4zNGwyLTJIN2ExLDEsMCwwLDAtMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjQ5LDE2LjY3LDMwLjEyLDEzLjNhMS42MSwx'@; put 'LjYxLDAsMCwwLTIuMjgsMGgwTDE0LjEzLDI3LjA5LDEzLDMxLjlhMS42MSwxLjYxLDAsMCwwLDEuMjYsMS45LDEuNTUsMS41NSwwLDAsMCwuMzEsMCwxLjE1LDEuMTUsMCwwLDAsLjM3LDBsNC44NS0xLjA3TDMzLjQ5LDE5YTEuNiwxLjYsMCwwLDAsMC0yLjI3Wk0xOC43NywzMC45MWwtMy42'@; put 'Ni44MUwxNiwyOC4wOSwyNi4yOCwxNy43bDIuODIsMi44MlpNMzAuMjMsMTkuMzlsLTIuODItMi44MkwyOSwxNWwyLjg0LDIuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxoLkNsclNoYXBlRnVlbD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBk'@; put 'PSJNMjAuMTIsMzRINS45QTIuODEsMi44MSwwLDAsMSwzLDMxLjE5VjQuODZBMi45LDIuOSwwLDAsMSw2LDIuMDdIMjAuMjJBMi43MiwyLjcyLDAsMCwxLDIzLDQuODZWMzEuMTlBMi44MiwyLjgyLDAsMCwxLDIwLjEyLDM0Wk01LjksNEEuODcuODcsMCwwLDAsNSw0Ljg2VjMxLjE5YS44Ny44'@; put 'NywwLDAsMCwuODcuODdIMjAuMTJhLjk0Ljk0LDAsMCwwLC45NS0uODdWNC44NkEuOTQuOTQsMCwwLDAsMjAuMTIsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOS41MywzNEEzLjUsMy41LDAsMCwxLDI2LDMwLjVWMjNhMiwyLDAs'@; put 'MCwwLTItMkgyMi41N2ExLDEsMCwwLDEsMC0ySDI0YTQsNCwwLDAsMSw0LDRWMzAuNWExLjUsMS41LDAsMCwwLDMsMFYxNy4zbC0zLjEzLTdBMi4yOSwyLjI5LDAsMCwwLDI1LjgsOWgtLjczYTEsMSwwLDEsMSwwLTJoLjczYTQuMyw0LjMsMCwwLDEsMy45MywyLjU1bDMuMjEsNy4xNmExLDEs'@; put 'MCwwLDEsLjA5LjQxVjMwLjVBMy41LDMuNSwwLDAsMSwyOS41MywzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCw5SDhBMSwxLDAsMSwxLDgsN0gxOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDEzSDhBMSwxLDAsMSwxLDgsMTFIMThBMSwxLDAsMSwxLDE4LDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI1LDEyLjA4YTEsMSwwLDAsMS0xLTF2LTZhMSwxLDAsMCwxLDIs'@; put 'MHY2QTEsMSwwLDAsMSwyNSwxMi4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPicpLGguQ2xyU2hhcGVTbm93Zmxha2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA1LDMzLjYxYTEsMSwwLDAsMS0xLTFWMy4zN2ExLDEsMCwxLDEsMS45'@; put 'NSwwVjMyLjYzQTEsMSwwLDAsMSwxOC4wNSwzMy42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiwxMC4wNywxNC41Miw2LjU0YTEsMSwwLDAsMSwwLTEuNDEsMSwxLDAsMCwxLDEuNDEsMGwyLjEzLDIuMTIsMi4xMi0yLjEy'@; put 'YTEsMSwwLDAsMSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMC44NSwzMS4xN2ExLDEsMCwwLDEtLjctLjI5TDE4LDI4Ljc2LDE1LjksMzAuODhhMSwxLDAsMCwxLTEuNDEsMCwxLDEsMCww'@; put 'LDEsMC0xLjQyTDE4LDI1LjkzbDMuNTQsMy41M2ExLDEsMCwwLDEsMCwxLjQyQTEsMSwwLDAsMSwyMC44NSwzMS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC45MiwyNi41YTEsMSwwLDAsMS0uNS0uMTNsLTI2LTE1QTEsMSww'@; put 'LDAsMSw0LjA3LDEwYTEsMSwwLDAsMSwxLjM3LS4zNmwyNiwxNWExLDEsMCwwLDEtLjUsMS44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LDE1LjM3YTEsMSwwLDAsMS0uMjYtMmwyLjktLjc4TDcuODQsOS43M2ExLDEsMCwxLDEs'@; put 'MS45My0uNTJMMTEuMDcsMTQsNi4yNCwxNS4zM0EuODIuODIsMCwwLDEsNiwxNS4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNy4wNSwyNy41NGExLDEsMCwwLDEtMS0uNzVMMjQuOCwyMmw0LjgyLTEuM2ExLDEsMCwxLDEsLjUy'@; put 'LDEuOTNsLTIuOS43OC43OCwyLjlhMSwxLDAsMCwxLS43MSwxLjIyQS43NS43NSwwLDAsMSwyNy4wNSwyNy41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik00Ljk0LDI2LjVhMSwxLDAsMCwxLS41LTEuODdsMjYtMTVhMSwxLDAsMCwx'@; put 'LDEuMzYuMzYsMSwxLDAsMCwxLS4zNiwxLjM3bC0yNiwxNUExLDEsMCwwLDEsNC45NCwyNi41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTguODEsMjcuNTRhLjc1Ljc1LDAsMCwxLS4yNiwwLDEsMSwwLDAsMS0uNzEtMS4yMmwuNzgt'@; put 'Mi45LTIuOS0uNzhBMSwxLDAsMCwxLDUsMjEuMzhhMSwxLDAsMCwxLDEuMjMtLjcxTDExLjA3LDIybC0xLjMsNC44MkExLDEsMCwwLDEsOC44MSwyNy41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxwYXRoIGQ9Ik0yOS44OCwxNS4zN2EuODIuODIs'@; put 'MCwwLDEtLjI2LDBMMjQuOCwxNGwxLjI5LTQuODNBMSwxLDAsMSwxLDI4LDkuNzNsLS43OCwyLjg5LDIuOS43OGExLDEsMCwwLDEtLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz4nKSxoLkNsclNoYXBlVGFibGU9KDAscy5jbHJJY29uU1ZHKSgn'@; put 'PHBhdGggZD0iTTgsMzRhMSwxLDAsMCwxLTEtMVYyLjkyYTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTcsMzMuOTJhMSwxLDAsMCwxLTEtMVY5LjFhMSwxLDAsMSwxLDIsMFYz'@; put 'Mi45MkExLDEsMCwwLDEsMTcsMzMuOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjYsMzRhMSwxLDAsMCwxLTEtMVY5YTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDI2LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjExLDE4aC0yNWExLDEsMCwxLDEsMC0yaDI1YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMuMSwyNi45NEg4LjFBMSwxLDAsMSwxLDguMSwyNWgyNWEx'@; put 'LDEsMCwxLDEsMCwxLjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLDguOTJIM0ExLDEsMCwxLDEsMyw3SDMzYTEsMSwwLDEsMSwwLDEuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4n'@; put 'KSxoLkNsclNoYXBlVm9sdW1lPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS44OCwzMkgxMmE0LDQsMCwwLDEtNC00VjExLjQ2TDIuMzEsNS43N2ExLDEsMCwwLDEtLjIyLTEuMDlBMSwxLDAsMCwxLDMsNC4wNkgyOC44NmExLDEsMCwwLDEsMSwxVjI4QTQsNCwwLDAsMSwyNS44OCwz'@; put 'MlpNNS40Myw2bDQuMjgsNC4zNGEuNzUuNzUsMCwwLDEsLjIxLjYzdjE3QTIuMTMsMi4xMywwLDAsMCwxMiwzMEgyNS44OEEyLjEsMi4xLDAsMCwwLDI4LDI4VjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMTZhMSwxLDAsMCwx'@; put 'LTEtMVY2SDI4Ljg2YS45Mi45MiwwLDAsMS0xLS45LDEsMSwwLDAsMSwxLTFIMzNhMSwxLDAsMCwxLDEsMVYxNUExLDEsMCwwLDEsMzMsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQsMTFIMThhMSwxLDAsMSwxLDAtMkgyNGEx'@; put 'LDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDE1SDIxYTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9'@; put 'Ik0yNCwxOUgxOGExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjQsMjdIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI0LDIzSDIxQTEsMSwwLDEsMSwyMSwyMUgyNEExLDEsMCwxLDEsMjQsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz4nKSxoLkNsclNoYXBlQ3Jvc3NoYWlycz0oMCxzLmNsckljb25TVkcpKCc8'@; put 'cGF0aCBkPSJNMTgsMjlBMTEsMTEsMCwxLDEsMjksMTgsMTEsMTEsMCwwLDEsMTgsMjlaTTE4LDlhOSw5LDAsMSwwLDksOUE5LDksMCwwLDAsMTgsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyM2E1LDUsMCwxLDEsNS01QTUs'@; put 'NSwwLDAsMSwxOCwyM1ptMC04YTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDE4LDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDlhMSwxLDAsMCwxLTEtMVYyLjhhMSwxLDAsMCwxLDIsMFY4QTEsMSwwLDAsMSwxOCw5WiIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDM0YTEsMSwwLDAsMS0xLTFWMjhhMSwxLDAsMCwxLDIsMHY1QTEsMSwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik04'@; put 'LDE5SDMuMTdhMSwxLDAsMCwxLDAtMkg4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuMSwxOUgyOGExLDEsMCwwLDEsMC0yaDUuMWExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTYiIC8+JyksaC5DbHJTaGFwZUNpcmNsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZURvdENpcmNsZT0oMCxzLmNsckljb25T'@; put 'VkcpKCc8cGF0aCBkPSJNMTgsMTFhNyw3LDAsMSwxLTcsNyw3LDcsMCwwLDEsNy03IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAs'@; put 'MzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVCZXRhPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjIxLDE0LjA3aDNhMS42MSwxLjYxLDAsMCwxLDEuODEsMS41LDEuNDQsMS40NCww'@; put 'LDAsMS0uODQsMS4zNCwxLjY3LDEuNjcsMCwwLDEsMS4xLDEuNTMsMS43NSwxLjc1LDAsMCwxLTIsMS42M0g3LjIxWm0yLjcxLDIuNDJjLjQ4LDAsLjgyLS4yOC44Mi0uNjdzLS4zNC0uNjUtLjgyLS42NUg4LjQ5djEuMzJabS4yLDIuNDhhLjc1Ljc1LDAsMSwwLDAtMS40N0g4LjQ5VjE5WiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE0LjU1LDE1LjIzdjEuMmgzdjEuMTZoLTN2MS4zMmgzLjMzdjEuMTZIMTMuMjZ2LTZoNC42MnYxLjE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5c'@; put 'biAgPHBhdGggZD0iTTIwLjQxLDE1LjIzSDE4LjU0VjE0LjA3aDV2MS4xNkgyMS43djQuODRIMjAuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjgsMTkuMTJIMjUuMzJsLS4zOC45NUgyMy41bDIuNDQtNmgxLjQ0bDIuNDUs'@; put 'NkgyOC4zOFpNMjcuNTUsMThsLS44OS0yLjE5TDI1Ljc3LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTguMDYsMzBhLjg0Ljg0LDAsMCwxLS4zOC0uMDhBMSwxLDAsMCwxLDcuMDYsMjlWMjVoLTRhMSwxLDAsMCwxLTEtMVYx'@; put 'MGExLDEsMCwwLDEsMS0xaDMwYTEsMSwwLDAsMSwxLDFWMjRhMSwxLDAsMCwxLTEsMUgxMy40OEw4Ljc3LDI5LjcxQTEsMSwwLDAsMSw4LjA2LDMwWm0tNC03aDRhMSwxLDAsMCwxLDEsMXYyLjU5bDMuMy0zLjNhMSwxLDAsMCwxLC43LS4yOWgxOVYxMWgtMjhaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuXG4gIDxwb2x5Z29uIHBvaW50cz0iMjUuOCwxOCAyNy41LDE4IDI2LjcsMTUuOCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuXHQ8cGF0aCBkPSJNMTAuNCwxNy41Yy0wLjEsMC0wLjIsMC0wLjMsMEg4LjVW'@; put 'MTlsMS42LDBjMC40LDAuMSwwLjgtMC4yLDAuOS0wLjZDMTEuMSwxOCwxMC44LDE3LjYsMTAuNCwxNy41eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuXHQ8cGF0aCBkPSJNMTAuNywxNS44YzAtMC40LTAuMy0wLjctMC44LTAuN0g4LjV2MS4zaDEuNEMxMC40'@; put 'LDE2LjUsMTAuNywxNi4yLDEwLjcsMTUuOHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cblx0PHBhdGggZD0iTTMzLjEsOWgtMzBjLTAuNiwwLTEsMC40LTEsMXYxNGMwLDAuNiwwLjQsMSwxLDFoNHY0YzAsMC40LDAuMiwwLjgsMC42LDAuOUM3LjgsMzAsNy45'@; put 'LDMwLDguMSwzMGMwLjMsMCwwLjUtMC4xLDAuNy0wLjNcblx0XHRsNC43LTQuN2gxOS42YzAuNiwwLDEtMC40LDEtMVYxMEMzNC4xLDkuNCwzMy42LDksMzMuMSw5eiBNMTAuNCwyMC4xYy0wLjEsMC0wLjEsMC0wLjIsMEg3LjJ2LTZoM2MwLjktMC4xLDEuNywwLjUsMS44LDEuNFxuXHRcdGMw'@; put 'LDAsMCwwLjEsMCwwLjFjMCwwLjYtMC4zLDEuMS0wLjgsMS4zYzAuNiwwLjIsMS4xLDAuOCwxLjEsMS41QzEyLjIsMTkuNCwxMS40LDIwLjEsMTAuNCwyMC4xeiBNMTcuOSwxNS4yaC0zLjN2MS4yaDN2MS4yaC0zdjEuM1xuXHRcdGgzLjN2MS4yaC00LjZ2LTZoNC42VjE1LjJ6IE0yMS43LDIw'@; put 'LjFoLTEuM3YtNC44aC0xLjl2LTEuMmg1djEuMmgtMS44VjIwLjF6IE0yOC40LDIwLjFsLTAuNC0xaC0yLjdsLTAuNCwxaC0xLjRsMi40LTZoMS40bDIuNSw2XG5cdFx0SDI4LjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4nKSxoLkNsclNoYXBlRmlyc3RB'@; put 'aWQ9KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDIzLjkxVjQuNUEyLjUsMi41LDAsMCwwLDIxLjQxLDJoLTdhMi41LDIuNSwwLDAsMC0yLjUsMi41VjZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2'@; put 'Wk0xMy45MSw0LjVhLjUuNSwwLDAsMSwuNS0uNWg3YS41LjUsMCwwLDEsLjUuNVY2aC04Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjAuMTUsMjUuMkgxNi43NGExLjMsMS4zLDAsMCwxLTEuMy0xLjNW'@; put 'MjEuMmgtMi43YTEuMywxLjMsMCwwLDEtMS4zLTEuM1YxNi41YTEuMywxLjMsMCwwLDEsMS4zLTEuM2gyLjdWMTIuNWExLjMsMS4zLDAsMCwxLDEuMy0xLjNoMy40MWExLjMsMS4zLDAsMCwxLDEuMjksMS4zdjIuN2gyLjcxYTEuMywxLjMsMCwwLDEsMS4yOSwxLjN2My40YTEuMywxLjMsMCww'@; put 'LDEtMS4yOSwxLjNIMjEuNDR2Mi43QTEuMywxLjMsMCwwLDEsMjAuMTUsMjUuMlpNMTcsMjMuNmgyLjgxdi00aDRWMTYuOGgtNHYtNEgxN3Y0SDEzdjIuOGg0Wm03LjExLTYuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG5cbiAgPHBhdGggZD0iTTMy'@; put 'LDZIMjMuOTFWNC41QTIuNSwyLjUsMCwwLDAsMjEuNDEsMmgtN2EyLjUsMi41LDAsMCwwLTIuNSwyLjVWNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEzLjkxLDQuNWEuNS41LDAsMCwxLC41LS41aDdhLjUuNSww'@; put 'LDAsMSwuNS41VjZoLThaTTI0LjY0LDE5LjlhLjUuNSwwLDAsMS0uNS41aC0zLjV2My41YS41LjUsMCwwLDEtLjUuNWgtMy40YS41LjUsMCwwLDEtLjUtLjVWMjAuNGgtMy41YS41LjUsMCwwLDEtLjUtLjVWMTYuNWEuNS41LDAsMCwxLC41LS41aDMuNVYxMi41YS41LjUsMCwwLDEsLjUtLjVo'@; put 'My40YS41LjUsMCwwLDEsLjUuNVYxNmgzLjVhLjUuNSwwLDAsMSwuNS41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxoLkNsclNoYXBlQ29sb3JQYWxldHRlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMS41NCwyMy4wNWEzLjIyLDMuMjIs'@; put 'MCwwLDEtMy0xLjc3QTMuMDUsMy4wNSwwLDAsMSwxOC41LDE5YTMuNzQsMy43NCwwLDAsMSwxLjk1LTIuMDZBMy40LDMuNCwwLDAsMSwyNSwxOC4zYTMsMywwLDAsMSwuMDgsMi4zMiwzLjY5LDMuNjksMCwwLDEtMiwyLjA3QTMuODUsMy44NSwwLDAsMSwyMS41NCwyMy4wNVptLjU0LTQuOTFh'@; put 'Mi40MSwyLjQxLDAsMCwwLTEsLjIxaDBBMi4xMywyLjEzLDAsMCwwLDIwLDE5LjUxYTEuMzcsMS4zNywwLDAsMCwwLDEuMDksMS44MSwxLjgxLDAsMCwwLDIuNDUuNjMsMi4xLDIuMSwwLDAsMCwxLjEyLTEuMTUsMS40LDEuNCwwLDAsMCwwLTEuMUExLjU5LDEuNTksMCwwLDAsMjIuMDgsMTgu'@; put 'MTRabS0xLjI5LS41MmgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE2LjE5LDMzLjg3QTEzLjcyLDEzLjcyLDAsMCwxLDYuNCwzMCwxMy44NiwxMy44NiwwLDAsMSwyLDIwYzAtNC40LDItOC44NCw1LjY4LTEyLjVhMTguMiwx'@; put 'OC4yLDAsMCwxLDEzLjEtNS4zN2guMTJjMy4zMywwLDYuODUsMS40OSw3LjI0LDQuNzMuMjEsMS43Ny0uNTksMy40Ny0xLjI5LDUtLjU1LDEuMTctMS4xMSwyLjM5LS43MiwyLjgxczEsLjEyLDIuMDktLjJhNi4yNyw2LjI3LDAsMCwxLDMuMzgtLjM2LDMsMywwLDAsMSwxLjg3LDEuNTZjLjk0'@; put 'LDEuODMuNDcsNC42Ny0uMjMsNi41NGgwQTE3LjM4LDE3LjM4LDAsMCwxLDI5LDI4Ljc0LDE5LjQzLDE5LjQzLDAsMCwxLDE2LjE5LDMzLjg3Wk0yMC43OCw0LjE2QTE2LjIyLDE2LjIyLDAsMCwwLDkuMDksOUM1Ljc5LDEyLjIzLDQsMTYuMTYsNCwyMEExMS45MiwxMS45MiwwLDAsMCw3Ljgs'@; put 'MjguNmM1LjM4LDUuMjUsMTQuNjIsMy41NSwxOS44Ny0xLjMzYTE1LjUyLDE1LjUyLDAsMCwwLDMuNy01Ljc1aDBjLjctMS45Ljg0LTMuOTIuMzItNC45MmExLDEsMCwwLDAtLjYxLS41NSw0Ljg2LDQuODYsMCwwLDAtMi4yOS4zNWMtMS4zMS4zOS0zLC44OS00LjEyLS4zNS0xLjMyLTEuNC0u'@; put 'NDYtMy4yNS4zNy01YTcuOTMsNy45MywwLDAsMCwxLjExLTMuOWMtLjI0LTItMi44MS0yLjk1LTUuMjYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMy44NywyNi42NUEyLjU5LDIuNTksMCwwLDAsMjIuMzUsMjVMMjIsMjQu'@; put 'OWwtLjQ2LDEuNTMuMTYsMGExLDEsMCwwLDEsLjYuNjFjLjE3LjYtLjQxLDEuMzEtMS4yNiwxLjU1cy0xLjcxLS4wNy0xLjg4LS42NmwtMS41NC40M2gwYTIuODMsMi44MywwLDAsMCwyLjg0LDEuOTEsNCw0LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwyMy44NywyNi42NVoiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0xNS4wNywyNS41OWgwYTIuNzMsMi43MywwLDAsMC0yLjI0LTEuODRsLS4yNywxLjU4YTEuMTIsMS4xMiwwLDAsMSwxLC43Yy4xNy41OS0uNDEsMS4zLTEuMjYsMS41NEExLjkyLDEuOTIsMCwwLDEsMTEsMjcu'@; put 'NTJhMSwxLDAsMCwxLS42LS42MXMwLS4wOSwwLS4xM2wtMS41OC4xNmEyLDIsMCwwLDAsLjA2LjQxQTIuNTksMi41OSwwLDAsMCwxMC4zNywyOWEzLjM2LDMuMzYsMCwwLDAsMS4zMS4yNSwzLjcsMy43LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxNS4wNywyNS41OVoiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xMC43OCwxOS4xN2EyLjU5LDIuNTksMCwwLDAtMS41Mi0xLjY1LDIuOTEsMi45MSwwLDAsMC0uNS0uMTZsLS4zNywxLjU2YTEuMjEsMS4yMSwwLDAsMSwuMjUuMDgsMSwxLDAsMCwxLC42LjZjLjE3LjYtLjQxLDEu'@; put 'MzEtMS4yNiwxLjU1cy0xLjcxLS4wNi0xLjg4LS42NmEuODYuODYsMCwwLDEsMC0uMzlsLTEuNTYtLjM0YTIuNCwyLjQsMCwwLDAsMCwxLjE2QTIuODMsMi44MywwLDAsMCw3LjQsMjIuODNhNCw0LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxMC43OCwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMy40NSwxMS40YTIuNTksMi41OSwwLDAsMC0xLjUyLTEuNjUsMS4xNywxLjE3LDAsMCwwLS4yLS4wNmwtLjUyLDEuNTFhLjM4LjM4LDAsMCwxLC4xLDAsMSwxLDAsMCwxLC42LjZjLjE3LjYtLjQxLDEuMzEtMS4yNiwx'@; put 'LjU1YTIuMDYsMi4wNiwwLDAsMS0xLjI4LS4wNSwxLDEsMCwwLDEtLjYtLjYxLjg1Ljg1LDAsMCwxLDAtLjMybC0xLjU4LS4xOWEyLjMsMi4zLDAsMCwwLC4wNi45NEEyLjU2LDIuNTYsMCwwLDAsOC43NSwxNC44YTMuMzcsMy4zNywwLDAsMCwxLjMxLjI2LDQsNCwwLDAsMCwxLS4xNEEzLDMs'@; put 'MCwwLDAsMTMuNDUsMTEuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxwYXRoIGQ9Ik0yMSw2Ljc4YTIuNTYsMi41NiwwLDAsMC0xLjUyLTEuNjVsLS4zLS4xTDE4LjcsNi41NmwuMTUsMGExLDEsMCwwLDEsLjYuNjFjLjE3LjYtLjQxLDEuMy0x'@; put 'LjI2LDEuNTRzLTEuNzEtLjA2LTEuODgtLjY1YS45LjksMCwwLDEsLjA2LS41OEwxNC44OSw2LjlhMi40NywyLjQ3LDAsMCwwLS4xMiwxLjYzLDIuODQsMi44NCwwLDAsMCwyLjg0LDEuOTEsMy41OCwzLjU4LDAsMCwwLDEtLjE1QTMsMywwLDAsMCwyMSw2Ljc4WiIgY2xhc3M9ImNsci1pLW91'@; put 'dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cblxuICA8cGF0aCBkPSJNMzIuMjMsMTQuODljLTIuMS0uNTYtNC45MywxLjgtNi4zNC4zLTEuNzEtMS44MiwyLjI3LTUuNTMsMS44Ni04LjkyLS4zMy0yLjc4LTMuNTEtNC4wOC02LjY2LTQuMUExOC41LDE4LjUsMCwwLDAsNy43NCw3LjU5'@; put 'Yy02LjY0LDYuNTktOC4wNywxNi0xLjM3LDIyLjQ4LDYuMjEsNiwxNi42MSw0LjIzLDIyLjY3LTEuNGExNy43MywxNy43MywwLDAsMCw0LjIyLTYuNTRDMzQuMzQsMTkuMjMsMzQuNDQsMTUuNDksMzIuMjMsMTQuODlaTTkuNCwxMC41N2EyLjIzLDIuMjMsMCwwLDEsMi44NywxLjIxLDIuMjIs'@; put 'Mi4yMiwwLDAsMS0xLjgxLDIuNTNBMi4yMiwyLjIyLDAsMCwxLDcuNTksMTMuMSwyLjIzLDIuMjMsMCwwLDEsOS40LDEwLjU3Wk01LjA3LDIwLjgyYTIuMjIsMi4yMiwwLDAsMSwxLjgyLTIuNTNBMi4yMiwyLjIyLDAsMCwxLDkuNzUsMTkuNSwyLjIzLDIuMjMsMCwwLDEsNy45NCwyMiwyLjI0'@; put 'LDIuMjQsMCwwLDEsNS4wNywyMC44MlptNyw4LjMzYTIuMjIsMi4yMiwwLDAsMS0yLjg3LTEuMjFBMi4yMywyLjIzLDAsMCwxLDExLDI1LjQxYTIuMjMsMi4yMywwLDAsMSwyLjg3LDEuMjFBMi4yMiwyLjIyLDAsMCwxLDEyLDI5LjE1Wk0xNSw4LjI2YTIuMjMsMi4yMywwLDAsMSwxLjgxLTIu'@; put 'NTMsMi4yNCwyLjI0LDAsMCwxLDIuODcsMS4yMSwyLjIyLDIuMjIsMCwwLDEtMS44MiwyLjUzQTIuMjEsMi4yMSwwLDAsMSwxNSw4LjI2Wm01LjgyLDIyLjE5YTIuMjIsMi4yMiwwLDAsMS0yLjg3LTEuMjEsMi4yMywyLjIzLDAsMCwxLDEuODEtMi41MywyLjI0LDIuMjQsMCwwLDEsMi44Nywx'@; put 'LjIxQTIuMjIsMi4yMiwwLDAsMSwyMC43OCwzMC40NVptNS0xMC40NmEzLjIsMy4yLDAsMCwxLTEuNjksMS43NiwzLjUzLDMuNTMsMCwwLDEtMS40LjMsMi43OCwyLjc4LDAsMCwxLTIuNTYtMS41LDIuNDksMi40OSwwLDAsMS0uMDctMiwzLjIsMy4yLDAsMCwxLDEuNjktMS43NiwzLDMsMCww'@; put 'LDEsNCwxLjJBMi41NCwyLjU0LDAsMCwxLDI1Ljc5LDIwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGguRXNzZW50aWFsU2hhcGVzPXsiYWRkLXRleHQiOmguQ2xyU2hhcGVBZGRUZXh0LCJhbGFybS1vZmYiOmguQ2xyU2hhcGVBbGFybU9mZixwaW5ib2Fy'@; put 'ZDpoLkNsclNoYXBlUGluYm9hcmQsbmV3OmguQ2xyU2hhcGVOZXcsImJ1YmJsZS1leGNsYW1hdGlvbiI6aC5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uLCJncmlkLXZpZXciOmguQ2xyU2hhcGVHcmlkVmlldywiY3Vyc29yLWFycm93IjpoLkNsclNoYXBlQ3Vyc29yQXJyb3csImN1cnNvci1o'@; put 'YW5kIjpoLkNsclNoYXBlQ3Vyc29ySGFuZCwiY3Vyc29yLWhhbmQtY2xpY2siOmguQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2ssImN1cnNvci1oYW5kLWdyYWIiOmguQ2xyU2hhcGVDdXJzb3JIYW5kR3JhYiwiY3Vyc29yLWhhbmQtb3BlbiI6aC5DbHJTaGFwZUN1cnNvckhhbmRPcGVuLCJjdXJz'@; put 'b3ItbW92ZSI6aC5DbHJTaGFwZUN1cnNvck1vdmUsImZpcnN0LWFpZCI6aC5DbHJTaGFwZUZpcnN0QWlkLHJlc2l6ZTpoLkNsclNoYXBlUmVzaXplLG9iamVjdHM6aC5DbHJTaGFwZU9iamVjdHMsYm9vazpoLkNsclNoYXBlQm9vayxhc3RlcmlzazpoLkNsclNoYXBlQXN0ZXJpc2ssYnVnOmgu'@; put 'Q2xyU2hhcGVCdWcsc2Npc3NvcnM6aC5DbHJTaGFwZVNjaXNzb3JzLHRoZXJtb21ldGVyOmguQ2xyU2hhcGVUaGVybW9tZXRlcixwZW5jaWw6aC5DbHJTaGFwZVBlbmNpbCxub3RlOmguQ2xyU2hhcGVOb3RlLHJlZnJlc2g6aC5DbHJTaGFwZVJlZnJlc2gsc3luYzpoLkNsclNoYXBlU3luYywi'@; put 'dmlldy1saXN0IjpoLkNsclNoYXBlVmlld0xpc3QsInZpZXctY2FyZHMiOmguQ2xyU2hhcGVWaWV3Q2FyZHMsInRyZWUtdmlldyI6aC5DbHJTaGFwZVRyZWVWaWV3LGxpZ2h0YnVsYjpoLkNsclNoYXBlTGlnaHRidWxiLGRvd25sb2FkOmguQ2xyU2hhcGVEb3dubG9hZCx1cGxvYWQ6aC5DbHJT'@; put 'aGFwZVVwbG9hZCxsb2NrOmguQ2xyU2hhcGVMb2NrLHVubG9jazpoLkNsclNoYXBlVW5sb2NrLHVzZXJzOmguQ2xyU2hhcGVVc2VycywicG9wLW91dCI6aC5DbHJTaGFwZVBvcE91dCxmaWx0ZXI6aC5DbHJTaGFwZUZpbHRlcixwaW46aC5DbHJTaGFwZVBpbixmaWxlOmguQ2xyU2hhcGVGaWxl'@; put 'LHBsdXM6aC5DbHJTaGFwZVBsdXMsbWludXM6aC5DbHJTaGFwZU1pbnVzLCJtaW51cy1jaXJjbGUiOmguQ2xyU2hhcGVNaW51c0NpcmNsZSwicGx1cy1jaXJjbGUiOmguQ2xyU2hhcGVQbHVzQ2lyY2xlLGJhbjpoLkNsclNoYXBlQmFuLCJ0aW1lcy1jaXJjbGUiOmguQ2xyU2hhcGVUaW1lc0Np'@; put 'cmNsZSx0cmFzaDpoLkNsclNoYXBlVHJhc2gsY2lyY2xlOmguQ2xyU2hhcGVDaXJjbGUsdGFnOmguQ2xyU2hhcGVUYWcsdGFnczpoLkNsclNoYXBlVGFncyxoaXN0b3J5OmguQ2xyU2hhcGVIaXN0b3J5LGNsb2NrOmguQ2xyU2hhcGVDbG9jaywiYWxhcm0tY2xvY2siOmguQ2xyU2hhcGVBbGFy'@; put 'bUNsb2NrLGFycm93OkEuQ2xyU2hhcGVBcnJvdywiY2lyY2xlLWFycm93IjpoLkNsclNoYXBlQ2lyY2xlQXJyb3csImNoaWxkLWFycm93IjpoLkNsclNoYXBlQ2hpbGRBcnJvdyxjb3B5OmguQ2xyU2hhcGVDb3B5LGhlbHA6aC5DbHJTaGFwZUhlbHAsbG9naW46aC5DbHJTaGFwZUxvZ2luLGxv'@; put 'Z291dDpoLkNsclNoYXBlTG9nb3V0LHByaW50ZXI6aC5DbHJTaGFwZVByaW50ZXIsd29ybGQ6aC5DbHJTaGFwZVdvcmxkLHNsaWRlcjpoLkNsclNoYXBlU2xpZGVyLGNsaXBib2FyZDpoLkNsclNoYXBlQ2xpcGJvYXJkLGZpcmV3YWxsOmguQ2xyU2hhcGVGaXJld2FsbCxsaXN0OmguQ2xyU2hh'@; put 'cGVMaXN0LHJlZG86aC5DbHJTaGFwZVJlZG8sdW5kbzpoLkNsclNoYXBlVW5kbyxzY3JvbGw6aC5DbHJTaGFwZVNjcm9sbCwiZmlsZS1zZXR0aW5ncyI6aC5DbHJTaGFwZUZpbGVTZXR0aW5ncywidHdvLXdheS1hcnJvd3MiOmguQ2xyU2hhcGVUd29XYXlBcnJvd3Msc3dpdGNoOmguQ2xyU2hh'@; put 'cGVTd2l0Y2gsdG9vbHM6aC5DbHJTaGFwZVRvb2xzLCJ3aW5kb3ctY2xvc2UiOmguQ2xyU2hhcGVXaW5kb3dDbG9zZSwid2luZG93LW1heCI6aC5DbHJTaGFwZVdpbmRvd01heCwid2luZG93LW1pbiI6aC5DbHJTaGFwZVdpbmRvd01pbiwid2luZG93LXJlc3RvcmUiOmguQ2xyU2hhcGVXaW5k'@; put 'b3dSZXN0b3JlLCJ6b29tLWluIjpoLkNsclNoYXBlWm9vbUluLCJ6b29tLW91dCI6aC5DbHJTaGFwZVpvb21PdXQsa2V5OmguQ2xyU2hhcGVLZXksbGlicmFyeTpoLkNsclNoYXBlTGlicmFyeSxib2x0OmguQ2xyU2hhcGVCb2x0LHdyZW5jaDpoLkNsclNoYXBlV3JlbmNoLGJ1bGxzZXllOmgu'@; put 'Q2xyU2hhcGVCdWxsc2V5ZSx0YXJnZXQ6aC5DbHJTaGFwZVRhcmdldCxmbGFtZTpoLkNsclNoYXBlRmxhbWUsaG91cmdsYXNzOmguQ2xyU2hhcGVIb3VyZ2xhc3MsIm5vLWFjY2VzcyI6aC5DbHJTaGFwZU5vQWNjZXNzLG9yZ2FuaXphdGlvbjpoLkNsclNoYXBlT3JnYW5pemF0aW9uLGJhbGFu'@; put 'Y2U6aC5DbHJTaGFwZUJhbGFuY2UsImlkLWJhZGdlIjpoLkNsclNoYXBlSWRCYWRnZSxyZXBlYXQ6aC5DbHJTaGFwZVJlcGVhdCwiZmlsZS1ncm91cCI6aC5DbHJTaGFwZUZpbGVHcm91cCxwYXBlcmNsaXA6aC5DbHJTaGFwZVBhcGVyY2xpcCxzaHJpbms6aC5DbHJTaGFwZVNocmluaywiYWNj'@; put 'ZXNzaWJpbGl0eS0xIjpoLkNsclNoYXBlQWNjZXNzaWJpbGl0eTEsImFjY2Vzc2liaWxpdHktMiI6aC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyLCJzb3J0LWJ5IjpoLkNsclNoYXBlU29ydEJ5LCJjb2xsYXBzZS1jYXJkIjpoLkNsclNoYXBlQ29sbGFwc2VDYXJkLCJleHBhbmQtY2FyZCI6aC5D'@; put 'bHJTaGFwZUV4cGFuZENhcmQsYnJpZWZjYXNlOmguQ2xyU2hhcGVCcmllZmNhc2UsImNvbG9yLXBpY2tlciI6aC5DbHJTaGFwZUNvbG9yUGlja2VyLCJjb3B5LXRvLWNsaXBib2FyZCI6aC5DbHJTaGFwZUNvcHlUb0NsaXBib2FyZCwiZmlsdGVyLTIiOmguQ2xyU2hhcGVGaWx0ZXIyLCJkcmFn'@; put 'LWhhbmRsZSI6aC5DbHJTaGFwZURyYWdIYW5kbGUsbW9vbjpoLkNsclNoYXBlTW9vbixzdW46aC5DbHJTaGFwZVN1bix3YW5kOmguQ2xyU2hhcGVXYW5kLGNsb25lOmguQ2xyU2hhcGVDbG9uZSxkZXRhaWxzOmguQ2xyU2hhcGVEZXRhaWxzLCJkcmFnLWhhbmRsZS1jb3JuZXIiOmguQ2xyU2hh'@; put 'cGVEcmFnSGFuZGxlQ29ybmVyLGVyYXNlcjpoLkNsclNoYXBlRXJhc2VyLGxhbmRzY2FwZTpoLkNsclNoYXBlTGFuZHNjYXBlLHBhc3RlOmguQ2xyU2hhcGVQYXN0ZSxwb3J0cmFpdDpoLkNsclNoYXBlUG9ydHJhaXQsImZpbGUtemlwIjpoLkNsclNoYXBlRmlsZVppcCwiZmlsdGVyLW9mZiI6'@; put 'aC5DbHJTaGFwZUZpbHRlck9mZixyZWN5Y2xlOmguQ2xyU2hhcGVSZWN5Y2xlLHRyZWU6aC5DbHJTaGFwZVRyZWUsZmlzaDpoLkNsclNoYXBlRmlzaCxmb3JtOmguQ2xyU2hhcGVGb3JtLGZ1ZWw6aC5DbHJTaGFwZUZ1ZWwsc25vd2ZsYWtlOmguQ2xyU2hhcGVTbm93Zmxha2UsdGFibGU6aC5D'@; put 'bHJTaGFwZVRhYmxlLCJkb3QtY2lyY2xlIjpoLkNsclNoYXBlRG90Q2lyY2xlLHZvbHVtZTpoLkNsclNoYXBlVm9sdW1lLGNyb3NzaGFpcnM6aC5DbHJTaGFwZUNyb3NzaGFpcnMsYmV0YTpoLkNsclNoYXBlQmV0YSwiY29sb3ItcGFsZXR0ZSI6aC5DbHJTaGFwZUNvbG9yUGFsZXR0ZX0sT2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGguRXNzZW50aWFsU2hhcGVzLCJlZGl0IiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLnBlbmNpbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywibm90ZS1lZGl0IiwoMCxjLmRlc2NyaXB0b3JDb25m'@; put 'aWcpKGguRXNzZW50aWFsU2hhcGVzLm5vdGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Fc3NlbnRpYWxTaGFwZXMsImdyb3VwIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLnVzZXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguRXNzZW50aWFsU2hhcGVz'@; put 'LCJkb2N1bWVudCIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkVzc2VudGlhbFNoYXBlcy5maWxlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguRXNzZW50aWFsU2hhcGVzLCJhZGQiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Fc3NlbnRpYWxTaGFwZXMucGx1cykpLE9iamVjdC5kZWZp'@; put 'bmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywiY2FuY2VsIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLmJhbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywicmVtb3ZlIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50'@; put 'aWFsU2hhcGVzWyJ0aW1lcy1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywic2lnbi1pbiIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkVzc2VudGlhbFNoYXBlcy5sb2dpbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBl'@; put 'cywic2lnbi1vdXQiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Fc3NlbnRpYWxTaGFwZXMubG9nb3V0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguRXNzZW50aWFsU2hhcGVzLCJsaWdodG5pbmciLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Fc3NlbnRpYWxTaGFwZXMuYm9sdCkpLE9i'@; put 'amVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywiZmxvdy1jaGFydCIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLkVzc2VudGlhbFNoYXBlcy5vcmdhbml6YXRpb24pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Fc3NlbnRpYWxTaGFwZXMsImFsZXJ0IiwoMCxjLmRlc2Ny'@; put 'aXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzWyJidWJibGUtZXhjbGFtYXRpb24iXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywicGlubmVkIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLnBpbmJvYXJkKSksT2JqZWN0LmRl'@; put 'ZmluZVByb3BlcnR5KGguRXNzZW50aWFsU2hhcGVzLCJhdHRhY2htZW50IiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLnBhcGVyY2xpcCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVudCIsKDAsYy5kZXNjcmlwdG9y'@; put 'Q29uZmlnKShoLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS1kb3duIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLnNocmluaykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSho'@; put 'LkVzc2VudGlhbFNoYXBlcywicmVzaXplLXVwIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguRXNzZW50aWFsU2hhcGVzLnJlc2l6ZSkpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChoLkVz'@; put 'c2VudGlhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvbWVkaWEtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3No'@; put 'YXBlcy9tZWRpYS1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oaixoLHkpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoaCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksaC5NZWRpYVNoYXBlcz1oLkNsclNoYXBlTWljcm9waG9uZU11dGU9aC5DbHJTaGFwZU1pY3JvcGhvbmU9aC5DbHJTaGFwZVZpZGVvR2FsbGVyeT1oLkNsclNoYXBlUmVwbGF5T25lPWguQ2xyU2hhcGVSZXBsYXlBbGw9aC5D'@; put 'bHJTaGFwZUltYWdlR2FsbGVyeT1oLkNsclNoYXBlTXVzaWNOb3RlPWguQ2xyU2hhcGVGaWxtU3RyaXA9aC5DbHJTaGFwZUhlYWRwaG9uZXM9aC5DbHJTaGFwZVZvbHVtZU11dGU9aC5DbHJTaGFwZVZvbHVtZVVwPWguQ2xyU2hhcGVWb2x1bWVEb3duPWguQ2xyU2hhcGVTaHVmZmxlPWguQ2xy'@; put 'U2hhcGVWaWRlb0NhbWVyYT1oLkNsclNoYXBlQ2FtZXJhPWguQ2xyU2hhcGVGYXN0Rm9yd2FyZD1oLkNsclNoYXBlUmV3aW5kPWguQ2xyU2hhcGVQb3dlcj1oLkNsclNoYXBlU3RvcD1oLkNsclNoYXBlU3RlcEZvcndhcmQ9aC5DbHJTaGFwZVBhdXNlPWguQ2xyU2hhcGVQbGF5PXZvaWQgMDt2'@; put 'YXIgYz15KAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7aC5DbHJTaGFwZVBsYXk9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTEiIGQ9Ik04LjA3LDMxLjZBMi4wNywyLjA3LDAsMCwxLDYsMjkuNTNWNi4zMkEyLjA3LDIuMDcsMCwwLDEsOSw0LjQ3TDMyLjIxLDE2LjA4YTIuMDcsMi4wNywwLDAsMSwwLDMuN0w5LDMxLjM4QTIuMDYsMi4wNiwwLDAsMSw4LjA3LDMxLjZabTAtMjUuMzRMOCw2LjMyVjI5LjUz'@; put 'bC4xLjA2TDMxLjMxLDE4YS4wNi4wNiwwLDAsMCwwLS4wNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTYuMDgsOC45NCw0LjQ3QTIuMDcsMi4wNywwLDAsMCw2LDYuMzJWMjkuNTNhMi4wNiwyLjA2'@; put 'LDAsMCwwLDMsMS44NUwzMi4xNiwxOS43N2EyLjA3LDIuMDcsMCwwLDAsMC0zLjdaIi8+JyksaC5DbHJTaGFwZVBhdXNlPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTIuOTMsMzJINi4wN0EyLjA3LDIuMDcs'@; put 'MCwwLDEsNCwyOS45M1Y2LjA3QTIuMDcsMi4wNywwLDAsMSw2LjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMTUsNi4wN1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMTIuOTMsMzJaTTEzLDZINlYzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjkuOTMsMzJIMjMuMDdBMi4wNywyLjA3LDAsMCwxLDIxLDI5LjkzVjYuMDdBMi4wNywyLjA3LDAsMCwxLDIzLjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMzIsNi4wN1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMjkuOTMsMzJaTTMwLDZIMjNWMzBo'@; put 'N1oiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSIzLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIyLjA3IiByeT0iMi4wNyIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1z'@; put 'b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjIwLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIyLjA3IiByeT0iMi4wNyIvPicpLGguQ2xyU2hhcGVTdGVwRm9yd2FyZD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMSIgZD0iTTUsMzIuMjNhMiwyLDAsMCwxLTItMlY1Ljc3QTIsMiwwLDAsMSw2LjE3LDQuMTRMMjMuMjMsMTYuMzhhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTcsMzEuODZBMiwyLDAsMCwxLDUsMzIuMjNaTTUsNS43N1YzMC4yM0wyMi4wNywxOFoiLz5cbiAgICAgICAgICAgICAg'@; put 'ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMxLDMySDI4YTIsMiwwLDAsMS0yLTJWNmEyLDIsMCwwLDEsMi0yaDNhMiwyLDAsMCwxLDIsMlYzMEEyLDIsMCwwLDEsMzEsMzJaTTI4LDZWMzBoM1Y2WiIvPlxuICAgICAgICAgICAgICAgIDxw'@; put 'YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik01LDMxLjlhMiwyLDAsMCwxLTItMlY1LjQ0QTIsMiwwLDAsMSw2LjEyLDMuODFMMjMuMTgsMTZhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTIsMzEuNTJBMiwyLDAsMCwxLDUsMzEuOVoiLz5cbiAgICAgICAgICAg'@; put 'ICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiB4PSIyNS45NSIgeT0iMy42NyIgd2lkdGg9IjciIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLGguQ2xyU2hhcGVTdG9wPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMzJINmEyLDIsMCwwLDEtMi0yVjZBMiwyLDAsMCwxLDYsNEgzMGEyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMCwzMlpNNiw2VjMwSDMwVjZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNs'@; put 'ci1pLXNvbGlkLXBhdGgtMSIgeD0iMy45NiIgeT0iNCIgd2lkdGg9IjI3Ljk5IiBoZWlnaHQ9IjI4IiByeD0iMiIgcnk9IjIiLz4nKSxoLkNsclNoYXBlUG93ZXI9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0x'@; put 'OCwyMWExLDEsMCwwLDEtMS0xVjRhMSwxLDAsMCwxLDIsMFYyMEExLDEsMCwwLDEsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4xNWExNSwxNSwwLDAsMS03LjUyLTI4LDEsMSwwLDAs'@; put 'MSwxLDEuNzMsMTMsMTMsMCwxLDAsMTMsMCwxLDEsMCwxLDEsMS0xLjczLDE1LDE1LDAsMCwxLTcuNTIsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOCwyMWExLDEs'@; put 'MCwwLDAsMS0xVjRhMSwxLDAsMCwwLTIsMFYyMEExLDEsMCwwLDAsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMi41MSwxNS40SDMwLjQ0YTEzLDEzLDAsMSwx'@; put 'LTE5LTcuNSwxLDEsMCwwLDAtMS0xLjczQTE1LDE1LDAsMSwwLDMzLDE5LjE1LDE0LjksMTQuOSwwLDAsMCwzMi41MSwxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1p'@; put 'LWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMjFhMSwxLDAsMCwxLTEtMVY0YTEsMSwwLDAsMSwyLDBWMjBBMSwxLDAsMCwxLDE4LDIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVsLS4zMSwwQTEzLDEzLDAsMSwxLDExLjQ4LDcuOWExLDEsMCwwLDAtMS0xLjczLDE1LDE1LDAsMSwwLDIxLjMxLDcuMUE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2'@; put 'LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS4wNiwxNy42OGExLjI4LDEuMjgsMCwwLDEtMS4yOS0xLjI4VjguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMFYxOC40QTEuMjgsMS4yOCwwLDAsMSwxOC4wNiwxOS42OFpNMTgsMjcuNzlBOS44OCw5Ljg4LDAsMCwxLDEyLjE3LDkuODVh'@; put 'MS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS40LDEuNCwwLDAsMSwxLjk0LS4yOUE5Ljg4LDkuODgsMCwwLDEsMTgsMjcu'@; put 'NzlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRoLTZBOS43LDkuNywwLDAsMSwyOCwxNy44OWExMCwxMCwwLDEsMS0xNS44My04LDEuNCwxLjQsMCwwLDEsMS45'@; put 'NC4zMSwxLjM3LDEuMzcsMCwwLDEtLjMxLDEuOTIsNy4xOCw3LjE4LDAsMSwwLDExLjQzLDUuOCw3LjA4LDcuMDgsMCwwLDAtLjQ1LTIuNDlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0djQuNGExLjI5LDEuMjksMCwwLDEtMi41OCwwVjguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgs'@; put 'MHYuNzFsMy43Ni02LjUxQTE2LDE2LDAsMSwwLDM0LDE4YTE2LDE2LDAsMCwwLS4yMy0yLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0'@; put 'LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z'@; put 'b2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTMuNTctLjlBOS44Myw5LjgzLDAsMCwxLDI4LDE3Ljg5YTEwLDEwLDAsMSwxLTE1LjgzLTgsMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAs'@; put 'MTEuNDMsNS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS4zOCwxLjM4LDAsMCwxLDEuNTItLjQ5LDcuNDUsNy40NSwwLDAsMS0uMy02LjgzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuNzcs'@; put 'OC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwVjE4LjRhMS4yOSwxLjI5LDAsMCwxLTIuNTgsMFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2'@; put 'IiByPSI1Ii8+JyksaC5DbHJTaGFwZVJld2luZD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3LjA5LDMxLjU4bC0xNS4zMi0xMmEyLDIsMCwwLDEsMC0zLjE1bDE1LjMyLTEyYTEuOTMsMS45MywwLDAsMSwy'@; put 'LjA2LS4yMkExLjc3LDEuNzcsMCwwLDEsMjAsNnY2LjdMMzAuODMsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMiwyLDAsMCwxLDM0LDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS43NywxLjc3LDAsMCwxLS44NSwx'@; put 'Ljc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMlpNMzIsMzBsLjA2LTI0TDE4LDE2LjhWNkwzLDE4LDE4LDMwVjE5LjJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTYuOTIsMzEuNTgsMS42LDE5LjU3YTIsMiwwLDAs'@; put 'MSwwLTMuMTVsMTUuMzItMTJBMS45MywxLjkzLDAsMCwxLDE5LDQuMiwxLjg5LDEuODksMCwwLDEsMjAsNnY2LjdMMzAuNjYsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMiwyLDAsMCwxLDMzLjgzLDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0u'@; put 'MjJMMjAsMjMuMzFWMzBhMS44OSwxLjg5LDAsMCwxLTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJaIi8+JyksaC5DbHJTaGFwZUZhc3RGb3J3YXJkPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcu'@; put 'NzcsMzEuOTJhMiwyLDAsMCwxLS44Ni0uMkExLjgxLDEuODEsMCwwLDEsMTYsMjkuOTN2LTYuN0w1LjI0LDMxLjVhMS45NCwxLjk0LDAsMCwxLTIuMDYuMjIsMiwyLDAsMCwxLTEuMTEtMS43OXYtMjRBMiwyLDAsMCwxLDMuMTgsNC4xMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42'@; put 'MVY1LjkxYTEuODEsMS44MSwwLDAsMSwuOTEtMS43OUExLjkzLDEuOTMsMCwwLDEsMTksNC4zNGwxNS4zMiwxMmEyLDIsMCwwLDEsMCwzLjE1TDE5LDMxLjVBMiwyLDAsMCwxLDE3Ljc3LDMxLjkyWm0wLTEyLjhWMjkuOTNsMTUuMjYtMTItMTUuMzItMTIsLjA2LDEwLjgxTDQsNS45MXYyNFoi'@; put 'Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNy43MSwzMmEyLDIsMCwwLDEtLjg2LS4yQTEuNzcsMS43NywwLDAsMSwxNiwzMHYtNi43TDUuMTcsMzEuNThhMS45NCwxLjk0LDAsMCwxLTIuMDYuMjJBMiwyLDAsMCwxLDIs'@; put 'MzBWNkEyLDIsMCwwLDEsMy4xMSw0LjJhMS45MywxLjkzLDAsMCwxLDIuMDYuMjJMMTYsMTIuNjlWNmExLjc3LDEuNzcsMCwwLDEsLjg1LTEuNzksMS45MywxLjkzLDAsMCwxLDIuMDYuMjJsMTUuMzIsMTJhMiwyLDAsMCwxLDAsMy4xNWwtMTUuMzIsMTJBMiwyLDAsMCwxLDE3LjcxLDMyWiIv'@; put 'PicpLGguQ2xyU2hhcGVDYW1lcmE9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs'@; put 'MCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhabTAsMjJINFYxMGg4LjY3bDEuNTUtNGg3LjU2bDEuNTUsNEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwxOWE5LDksMCwxLDAsOS05QTksOSwwLDAsMCw5LDE5'@; put 'Wm0xNi40LDBBNy40LDcuNCwwLDEsMSwxOCwxMS42LDcuNDEsNy40MSwwLDAsMSwyNS40LDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjM3LDEyLjgzYS44LjgsMCwwLDAtLjgtLjhINi4xN2EuOC44LDAs'@; put 'MCwwLDAsMS42aDIuNEEuOC44LDAsMCwwLDkuMzcsMTIuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjM0LDE5YTUuNTcsNS41NywwLDAsMCwzLjI0LDVsLjg1LTEuMzdhNCw0LDAsMSwxLDQuMTEtNi42'@; put 'MWwuODYtMS4zOEE1LjU2LDUuNTYsMCwwLDAsMTIuMzQsMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3'@; put 'LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhaTTYuMTcsMTMuNjNhLjguOCwwLDAsMSwwLTEuNmgyLjRhLjguOCwwLDAsMSwwLDEuNlpNMTgsMjhhOSw5LDAsMSwxLDktOUE5LDksMCwwLDEsMTgs'@; put 'MjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuMTEsMTkuMDZhNy4wNyw3LjA3LDAsMCwwLDQuMTEsNi40MWwxLjA5LTEuNzRhNSw1LDAsMSwxLDUuMjItOC4zOWwxLjA5LTEuNzZhNy4wNiw3LjA2LDAsMCwwLTEx'@; put 'LjUxLDUuNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksaC5DbHJTaGFwZVZpZGVvQ2FtZXJhPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQsMTAuMzRhMi4xMSwyLjEx'@; put 'LDAsMCwwLTEuMTYtMS45LDIsMiwwLDAsMC0yLjEzLjE1TDI2LDExLjZWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCwwLTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjQuNGw0LjY0LDNhMi4wNywyLjA3LDAsMCwwLDIuMi4yQTIuMTEsMi4xMSwwLDAsMCwzNCwyNS42'@; put 'NlpNMzEuOTMsMjUuNzdjLS4wNiwwLS4xMSwwLS4xOS0uMDZMMjQsMjAuNzdWMjhINmEyLDIsMCwwLDEtMi0yVjEwQTIsMiwwLDAsMSw2LDhIMjR2Ny4yM2w3LjgtNWEuMTEuMTEsMCwwLDEsLjEzLDAsLjExLjExLDAsMCwxLC4wNy4xMVYyNS42NkEuMTEuMTEsMCwwLDEsMzEuOTMsMjUuNzda'@; put 'Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMyw5LjM1LDI2LDEyLjlWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCwwLTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjMuMDhsNi4zLDMuNTVB'@; put 'MS4xLDEuMSwwLDAsMCwzNCwyNS43N1YxMC4yQTEuMSwxLjEsMCwwLDAsMzIuMyw5LjM1WiIvPicpLGguQ2xyU2hhcGVTaHVmZmxlPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjEuNjEsMTFoOC42MmwtMy4z'@; put 'LDMuM2ExLDEsMCwxLDAsMS40MSwxLjQyTDM0LDEwLjA4bC0uNzEtLjcxaDBMMjguMzQsNC40M2ExLDEsMCwwLDAtMS40MSwxLjQyTDMwLjExLDlIMjFhMSwxLDAsMCwwLS44Ni41TDE3LjUsMTQuMDlsMS4xNiwyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMS4wNywyNS4wN0gzYTEsMSwwLDAsMCwwLDJoOC42NWExLDEsMCwwLDAsLjg2LS41TDE1LjE4LDIyLDE0LDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yOC4z'@; put 'NCwyMC4xN2ExLDEsMCwwLDAtMS40MSwxLjQybDMuNSwzLjVIMjEuNjFMMTIuNTEsOS41M2ExLDEsMCwwLDAtLjg2LS41SDNhMSwxLDAsMSwwLDAsMmg4LjA3bDkuMSwxNS41NWExLDEsMCwwLDAsLjg2LjVIMjkuOWwtMywzYTEsMSwwLDAsMCwxLjQxLDEuNDJsNC45NS00Ljk0aDBsLjcxLS43'@; put 'MVoiLz4nKSxoLkNsclNoYXBlVm9sdW1lRG93bj0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEs'@; put 'MSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSwwLDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzJhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIs'@; put 'MCwwLDEtMi0yVjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuNDFBMiwyLDAsMCwxLDIwLDZWMzBhMiwyLDAsMCwxLTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzJaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuMjhMMTgsMzBWNmwtNy42NSw3LjY4YTEsMSwwLDAsMS0uNzEuM1pNMTgs'@; put 'NloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMy40MSwyNS4xMWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczQTguMjEsOC4yMSwwLDAsMSwyMy45NCwy'@; put 'NSwxLDEsMCwwLDEsMjMuNDEsMjUuMTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTguMzQsMy44Nyw5LDEySDNhMSwxLDAsMCwwLTEsMVYyM2ExLDEsMCwwLDAsMSwxSDguODNsOS41MSw4LjNBMSwxLDAsMCwwLDIw'@; put 'LDMxLjU1VjQuNjJBMSwxLDAsMCwwLDE4LjM0LDMuODdaIi8+JyksaC5DbHJTaGFwZVZvbHVtZVVwPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEs'@; put 'Ni4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSwwLDAsMSwyMy40MSwyNS4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjIsMzEu'@; put 'MThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCwwLDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQuNDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDZhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0yVjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuMzlBMiwyLDAsMCwxLDIwLDZ2MjRhMiwyLDAsMCwxLTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzIuMDZaTTQsMTR2'@; put 'OEg5LjU2YTEsMSwwLDAsMSwuNzEuM0wxOCwzMC4wNlY2TDEwLjM1LDEzLjdhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjI1YTEsMSwwLDAsMS0uNTQtMS44NSw2'@; put 'LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzMsOC4yMSw4LjIxLDAsMCwxLC4yNCwxNC4wNkExLDEsMCwwLDEsMjMuNDEsMjUuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjUuNjIsMzEu'@; put 'MThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCwwLDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQuNDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTMiIGQ9Ik0xOC4zMyw0LDkuMDcsMTJoLTZhMSwxLDAsMCwwLTEsMXY5LjkyYTEsMSwwLDAsMCwxLDFIOC44OGw5LjQ2LDguMjRBMSwxLDAsMCwwLDIwLDMxLjQzVjQuNzJBMSwxLDAsMCwwLDE4LjMzLDRaIi8+JyksaC5DbHJTaGFwZVZvbHVtZU11dGU9KDAsYy5jbHJJY29uU1ZH'@; put 'KSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zLjYxLDYuNDEsOS4xOSwxMkg0YTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwySDkuMTRsNy40MSw3LjQ3QTIsMiwwLDAsMCwxOCwzMmEyLDIsMCwwLDAsLjc2LS4xNUEyLDIsMCwwLDAs'@; put 'MjAsMzBWMjIuNzdsNS44OSw1Ljg5Yy0uMjUuMTUtLjQ5LjI5LS43NS40MmExLDEsMCwwLDAsLjksMS43OSwxNC40LDE0LjQsMCwwLDAsMS4zMS0uNzVsMi4yOCwyLjI4TDMxLDMxLDUsNVpNMTgsMzBsLTcuNzMtNy43N0ExLDEsMCwwLDAsOS41NiwyMkg0VjE0SDkuNjRhMSwxLDAsMCwwLC43'@; put 'MS0uM2wuMjYtLjI2TDE4LDIwLjgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC44OSw2LjY5QTEyLjQyLDEyLjQyLDAsMCwxLDI5LDI2LjFsMS40MiwxLjQyQTE0LjQyLDE0LjQyLDAsMCwwLDI1Ljc2LDQu'@; put 'ODhhMSwxLDAsMSwwLS44NywxLjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcsNi4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjI0LDMuNzFMMjYsMjMuMTNBOC4x'@; put 'NSw4LjE1LDAsMCwwLDI3LjgsMThhOC4yOCw4LjI4LDAsMCwwLTQuMS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDZ2OS4xNWwyLDJWNmEyLDIsMCwwLDAtMy40Mi0x'@; put 'LjQxTDEyLDkuMTdsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI0Ljg3LDYuNjlBMTIuNDIsMTIuNDIsMCwwLDEsMjguNzUsMjYuM2wxLjQyLDEuNDJBMTQuNDMsMTQuNDMsMCwwLDAsMjUuNzQsNC44'@; put 'OGExLDEsMCwwLDAtLjg3LDEuOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNy4zLDI3LjY3aDBsLTMuODQtMy44NC0uNTctLjU3aDBMNC42Myw1LDMuMjEsNi40MSw4LjgsMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEs'@; put 'MSwwLDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAsMzEuNTVWMjMuMmw1LjU5LDUuNTljLS4xNy4xLS4zNC4yLS41MS4yOWExLDEsMCwwLDAsLjksMS43OWMuMzctLjE5LjcyLS40LDEuMDgtLjYybDIuMTQsMi4xNEwzMC42MSwzMWwtMy4yNS0zLjI1WiIvPlxuICAgICAgICAg'@; put 'ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcsNi4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjQyLDMuOTJsMS40MiwxLjQyYTguMTYsOC4xNiwwLDAsMCwyLTUuMzQsOC4yOCw4LjI4LDAsMCwwLTQu'@; put 'MS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMjAsNC42MmExLDEsMCwwLDAtMS42Ni0uNzVsLTYuNDIsNS42TDIwLDE3LjU0WiIvPicpLGguQ2xyU2hhcGVIZWFkcGhvbmVzPSgw'@; put 'LGMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOS4yQTIuNzQsMi43NCwwLDAsMCwxMiwyOC4zM1YyMS42N0EyLjc0LDIuNzQsMCwwLDAsOS4yLDE5SDZWMTcu'@; put 'NUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3LDEyLjI3LDAsMCwxLDMwLDE3LjVWMTlIMjYuOEEyLjc0LDIuNzQsMCwwLDAsMjQsMjEuNjd2Ni42N0EyLjc0LDIuNzQsMCwwLDAsMjYuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaTTkuMiwyMWEuNzUuNzUsMCwwLDEs'@; put 'LjguNjd2Ni42N2EuNzUuNzUsMCwwLDEtLjguNjdINlYyMVpNMjYsMjguMzNWMjEuNjdhLjc1Ljc1LDAsMCwxLC44LS42N0gzMHY4SDI2LjhBLjc1Ljc1LDAsMCwxLDI2LDI4LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg'@; put 'ZD0iTTE4LDNBMTQuMjcsMTQuMjcsMCwwLDAsNCwxNy41VjMxSDguMkExLjc0LDEuNzQsMCwwLDAsMTAsMjkuMzNWMjIuNjdBMS43NCwxLjc0LDAsMCwwLDguMiwyMUg2VjE3LjVBMTIuMjcsMTIuMjcsMCwwLDEsMTgsNSwxMi4yNywxMi4yNywwLDAsMSwzMCwxNy41VjIxSDI3LjhBMS43NCwx'@; put 'Ljc0LDAsMCwwLDI2LDIyLjY3djYuNjdBMS43NCwxLjc0LDAsMCwwLDI3LjgsMzFIMzJWMTcuNUExNC4yNywxNC4yNywwLDAsMCwxOCwzWiIvPicpLGguQ2xyU2hhcGVGaWxtU3RyaXA9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTEiIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFptMCwyNkg2VjZIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i'@; put 'TTE0LjYsMjMuMDdhMS4yOSwxLjI5LDAsMCwwLDEuMjQuMDlsOC43My00YTEuMywxLjMsMCwwLDAsMC0yLjM3aDBsLTguNzMtNEExLjMsMS4zLDAsMCwwLDE0LDE0djhBMS4yOSwxLjI5LDAsMCwwLDE0LjYsMjMuMDdabTEtOC42TDIzLjMxLDE4LDE1LjYsMjEuNTFaIi8+XG4gICAgICAgICAg'@; put 'ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iOCIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE0IiB5PSI3IiB3aWR0'@; put 'aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMjAiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC02IiB4PSIyNiIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjgiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVj'@; put 'dCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iMTQiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjAiIHk9IjI2IiB3aWR0aD0i'@; put 'MiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk'@; put 'LXBhdGgtMSIgZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wk0yMCw3aDJ2M0gyMFpNMTQsN2gydjNIMTRaTTEwLDI5SDhWMjZoMlptMC0xOUg4VjdoMlptNiwxOUgxNFYyNmgyWm02LDBIMjBWMjZoMlpt'@; put 'My4xNi0xMC4xNkwxNS4zOSwyMy4yQTEsMSwwLDAsMSwxNCwyMi4yOFYxMy41N2ExLDEsMCwwLDEsMS40MS0uOTFMMjUuMTYsMTdBMSwxLDAsMCwxLDI1LjE2LDE4Ljg0Wk0yOCwyOUgyNlYyNmgyWm0wLTE5SDI2VjdoMloiLz4nKSxoLkNsclNoYXBlTXVzaWNOb3RlPSgwLGMuY2xySWNvblNW'@; put 'RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMS42OCw2LjE2Yy0xLjkyLTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjM0YTUuODksNS44OSwwLDAsMC0uODItLjU2LDguMzMsOC4zMywwLDAsMC02'@; put 'LjUzLS40MUM3LjU3LDIyLjcsNC45MiwyNi41LDUuNzgsMjkuODRhNS4zMyw1LjMzLDAsMCwwLDIuNjYsMy4zMiw3LjQ4LDcuNDgsMCwwLDAsMy42MS44OEE5LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTdjMy42Ny0xLjE4LDYuMTctNC4zMyw2LjA2LTcuMzZWOS4zNGEyOS4xNCwyOS4xNCwwLDAs'@; put 'MSw2LjU1LDEuNDMsMSwxLDAsMSwwLC43Mi0xLjg3QTMxLjM3LDMxLjM3LDAsMCwwLDIxLDcuMzNWNC4xN2MzLjMzLjM2LDgsMS4zOCw4LjkyLDMsMiwzLjQxLTIuMzMsNy4zNi0yLjM3LDcuNGExLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNlpNMTQu'@; put 'MzUsMzEuNjdhNi40Myw2LjQzLDAsMCwxLTUtLjI2LDMuMzEsMy4zMSwwLDAsMS0xLjY5LTIuMDdjLS42LTIuMzMsMS40NS01LjA1LDQuNTgtNi4wNmE3LjUyLDcuNTIsMCwwLDEsMi4zLS4zNyw1LjUyLDUuNTIsMCwwLDEsMi42NS42MiwzLjMxLDMuMzEsMCwwLDEsMS42OSwyLjA3QzE5LjU0'@; put 'LDI3Ljk0LDE3LjQ5LDMwLjY2LDE0LjM1LDMxLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSJcbiAgICAgICAgICAgICAgICBkPSJNMzEuNjgsNi4xNmMtMS45Mi0zLjMtMTAuNi00LTExLjU4LTQuMDlMMTksMlYyMi4yOWE1'@; put 'Ljg4LDUuODgsMCwwLDAtLjgxLS41NSw4LjMzLDguMzMsMCwwLDAtNi41My0uNDFjLTQuMTIsMS4zMy02Ljc3LDUuMTMtNS45MSw4LjQ3YTUuMzMsNS4zMywwLDAsMCwyLjY2LDMuMzIsNy40OCw3LjQ4LDAsMCwwLDMuNjEuODhBOS41NCw5LjU0LDAsMCwwLDE1LDMzLjUyYzMuNy0xLjE5LDYu'@; put 'Mi00LjM3LDYuMDYtNy40MiwwLDAsMCwwLDAsMFY4LjQ5YzEsLjEyLDIuMzcuMzMsMy44Mi42NGExMS4xNywxMS4xNywwLDAsMSw0LjA2LDEuNDZjMSwuNjYuMzgsMS45LjMzLDJhMTEuOCwxMS44LDAsMCwxLTEuNjYsMiwxLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEs'@; put 'MzEuNjgsNi4xNloiLz4nKSxoLkNsclNoYXBlSW1hZ2VHYWxsZXJ5PSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4x'@; put 'MlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTMyLDMwSDRWMTJIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOC41NiwxOS40NWEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjU2LDE5LjQ1Wm0wLTQuNkExLjYsMS42'@; put 'LDAsMSwxLDcsMTYuNDUsMS42LDEuNiwwLDAsMSw4LjU2LDE0Ljg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuOSwyOGw2LTYsMy4xOCwzLjE4TDE0LjI2LDI4aDJsNy40Ni03LjQ2TDMwLDI2Ljc3di0yTDI0LjIsMTlhLjcxLjcx'@; put 'LDAsMCwwLTEsMGwtNS4xNiw1LjE2TDE0LjM3LDIwLjVhLjcxLjcxLDAsMCwwLTEsMEw1LjkyLDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoi'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzAu'@; put 'MTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNv'@; put 'bGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEw'@; put 'Wk04LjU2LDEzLjQ1YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguNTYsMTMuNDVaTTMwLDI4aC0yNGw3LjQ2LTcuNDdhLjcxLjcxLDAsMCwxLDEsMGwzLjY4LDMuNjhMMjMuMjEsMTlhLjcxLjcxLDAsMCwxLDEsMEwzMCwyNC43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w'@; put 'YXRoLTMiIC8+JyksaC5DbHJTaGFwZVJlcGxheUFsbD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNDYsMjYuMjJhMS40LDEuNCwwLDAsMCwxLS40Mmw1LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLC40Mi0xLDEuNDYsMS40NiwwLDAsMC0uNDItMWwtNS41OS01LjU2YTEuNDMsMS40'@; put 'MywwLDAsMC0yLjQ0LDFWMjQuNzlhMS40MSwxLjQxLDAsMCwwLC44OCwxLjMyQTEuNTQsMS41NCwwLDAsMCwxNy40NiwyNi4yMlptLjE2LTEyLjE2LDUuMTksNS4xNi01LjE5LDUuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgu'@; put 'MDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcuMjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUu'@; put 'MzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVSZXBsYXlPbmU9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDI3LjI3YTEsMSwwLDAsMCwxLTFWMTRhMSwxLDAsMCwwLTEt'@; put 'MUgxOWEzLjgsMy44LDAsMCwwLTEuMS4yM2wtMiwuNjJhLjkyLjkyLDAsMCwwLS43Mi44Ni44OC44OCwwLDAsMCwuODguODYsMS40NiwxLjQ2LDAsMCwwLC40My0uMDhMMTgsMTUuMDd2MTEuMkExLDEsMCwwLDAsMTksMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcuMjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcu'@; put 'NzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVWaWRlb0dhbGxlcnk9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMu'@; put 'ODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSww'@; put 'LDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEyLjgyLDI2Ljc5YTEuNzQsMS43NCwwLDAsMCwuOTMuMjgsMS42OCwxLjY4LDAsMCwwLC42OS0uMTVsOS43Ny00LjM2YTEuNjksMS42OSwwLDAsMCwwLTMuMUwx'@; put 'NC40NCwxNS4xYTEuNywxLjcsMCwwLDAtMi4zOSwxLjU1djguNzJBMS43LDEuNywwLDAsMCwxMi44MiwyNi43OVptLjYzLTEwLjE0YS4yOS4yOSwwLDAsMSwuMTQtLjI1LjMuMywwLDAsMSwuMTYsMCwuMjcuMjcsMCwwLDEsLjEyLDBsOS43Nyw0LjM1YS4yOS4yOSwwLDAsMSwuMTguMjguMjgu'@; put 'MjgsMCwwLDEtLjE4LjI3bC05Ljc3LDQuMzZhLjI4LjI4LDAsMCwxLS4yOCwwLC4zMS4zMSwwLDAsMS0uMTQtLjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAu'@; put 'MTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMjQuMTgsMjEuODNsLTkuNzcsNC4zNkExLDEsMCwwLDEsMTMsMjUuMjhWMTYuNTZhMSwxLDAsMCwxLDEuNDEtLjkxTDI0LjE4LDIw'@; put 'QTEsMSwwLDAsMSwyNC4xOCwyMS44M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi'@; put 'IC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksaC5DbHJTaGFwZU1pY3JvcGhvbmU9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDI0YzMu'@; put 'OSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywzLjEtNyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiBNMTMsOWMwLTIuOCwyLjItNSw1LTVzNSwyLjIsNSw1djhcblx0XHRjMCwyLjgtMi4yLDUtNSw1cy01LTIuMi01LTVWOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDUuNS00LjUsMTAtMTAsMTBTOCwyMi41LDgsMTdINmMwLDYuMyw0LjgsMTEuNCwxMSwxMS45VjMyaC0zYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2'@; put 'LTMuMUMyNS4yLDI4LjQsMzAsMjMuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCwyNGMzLjksMCw3LTMuMSw3LTdWOWMwLTMuOS0zLjEtNy03LTdzLTcsMy4xLTcsN3Y4QzExLDIwLjksMTQuMSwyNCwxOCwyNHoiIGNs'@; put 'YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwxMC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDExLDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFc'@; put 'blx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwyMy4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlTWljcm9waG9uZU11dGU9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLDE3aC0yYzAsMS44LTAu'@; put 'NSwzLjUtMS40LDVsMS41LDEuNUMyOS4zLDIxLjUsMjkuOSwxOS4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDRjMi44LDAsNSwyLjIsNSw1djhjMCwwLjQtMC4xLDAuOC0wLjIsMS4ybDEuNiwxLjZjMC40LTAuOSww'@; put 'LjYtMS44LDAuNi0yLjhWOWMwLTMuOS0zLjItNy03LjEtNi45XG5cdFx0Yy0yLjksMC01LjYsMS45LTYuNSw0LjdMMTMsOC4zQzEzLjUsNS45LDE1LjYsNC4yLDE4LDR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYu'@; put 'OSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2MxLjMsMCwyLjUtMC4zLDMuNi0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQu'@; put 'OCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IE0xMy44LDE5LjdDMTMuMywxOC45LDEzLDE4LDEzLDE3di0yLjZsNy4xLDcuMUMxNy45'@; put 'LDIyLjUsMTUuMiwyMS44LDEzLjgsMTkuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDEuOC0wLjUsMy41LTEuNCw1bDEuNSwxLjVDMjkuMywyMS41LDI5LjksMTkuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTI1LDE3VjljMC0zLjktMy4yLTctNy4xLTYuOWMtMi45LDAtNS42LDEuOS02LjUsNC43bDEzLDEzQzI0LjgsMTguOSwyNSwxNy45LDI1LDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBk'@; put 'PSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2MxLjMsMCwyLjUtMC4zLDMuNi0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0w'@; put 'LjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0'@; put 'aC0zIiAvPicpLGguTWVkaWFTaGFwZXM9e3BsYXk6aC5DbHJTaGFwZVBsYXkscGF1c2U6aC5DbHJTaGFwZVBhdXNlLCJzdGVwLWZvcndhcmQiOmguQ2xyU2hhcGVTdGVwRm9yd2FyZCxzdG9wOmguQ2xyU2hhcGVTdG9wLHBvd2VyOmguQ2xyU2hhcGVQb3dlcixyZXdpbmQ6aC5DbHJTaGFwZVJl'@; put 'd2luZCwiZmFzdC1mb3J3YXJkIjpoLkNsclNoYXBlRmFzdEZvcndhcmQsY2FtZXJhOmguQ2xyU2hhcGVDYW1lcmEsInZpZGVvLWNhbWVyYSI6aC5DbHJTaGFwZVZpZGVvQ2FtZXJhLHNodWZmbGU6aC5DbHJTaGFwZVNodWZmbGUsInZvbHVtZS11cCI6aC5DbHJTaGFwZVZvbHVtZVVwLCJ2b2x1'@; put 'bWUtZG93biI6aC5DbHJTaGFwZVZvbHVtZURvd24sInZvbHVtZS1tdXRlIjpoLkNsclNoYXBlVm9sdW1lTXV0ZSxoZWFkcGhvbmVzOmguQ2xyU2hhcGVIZWFkcGhvbmVzLCJmaWxtLXN0cmlwIjpoLkNsclNoYXBlRmlsbVN0cmlwLCJtdXNpYy1ub3RlIjpoLkNsclNoYXBlTXVzaWNOb3RlLCJp'@; put 'bWFnZS1nYWxsZXJ5IjpoLkNsclNoYXBlSW1hZ2VHYWxsZXJ5LCJyZXBsYXktYWxsIjpoLkNsclNoYXBlUmVwbGF5QWxsLCJyZXBsYXktb25lIjpoLkNsclNoYXBlUmVwbGF5T25lLCJ2aWRlby1nYWxsZXJ5IjpoLkNsclNoYXBlVmlkZW9HYWxsZXJ5LG1pY3JvcGhvbmU6aC5DbHJTaGFwZU1p'@; put 'Y3JvcGhvbmUsIm1pY3JvcGhvbmUtbXV0ZSI6aC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlfSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoaC5NZWRpYVNoYXBlcyl9LCIuL3Byb2plY3RzL2lj'@; put 'b25zL3NyYy9zaGFwZXMvc29jaWFsLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3NvY2lhbC1zaGFwZXMudHMgKioqIQog'@; put 'ICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUi'@; put 'LHt2YWx1ZTohMH0pLGguU29jaWFsU2hhcGVzPWguQ2xyU2hhcGVIYXNodGFnPWguQ2xyU2hhcGVDcm93bj1oLkNsclNoYXBlVGh1bWJzRG93bj1oLkNsclNoYXBlVGh1bWJzVXA9aC5DbHJTaGFwZVNhZEZhY2U9aC5DbHJTaGFwZU5ldXRyYWxGYWNlPWguQ2xyU2hhcGVIYXBweUZhY2U9aC5D'@; put 'bHJTaGFwZVBpY3R1cmU9aC5DbHJTaGFwZUNoYXRCdWJibGU9aC5DbHJTaGFwZVRhbGtCdWJibGVzPWguQ2xyU2hhcGVIZWFydEJyb2tlbj1oLkNsclNoYXBlSGVhcnQ9aC5DbHJTaGFwZUluYm94PWguQ2xyU2hhcGVGbGFnPWguQ2xyU2hhcGVUYXNrcz1oLkNsclNoYXBlRW52ZWxvcGU9aC5D'@; put 'bHJTaGFwZUJvb2ttYXJrPWguQ2xyU2hhcGVIYWxmU3Rhcj1oLkNsclNoYXBlU3Rhcj1oLkNsclNoYXBlU2hhcmU9dm9pZCAwO3ZhciBjPXkoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMi'@; put 'KSxzPXkoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxBPXkoCi8qISAuL2NvcmUtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKTto'@; put 'LkNsclNoYXBlU2hhcmU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1'@; put 'LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVptMC0yMGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSwyNy41Myw0Wk03LDIxYTMsMywwLDEsMSwzLTNBMywzLDAsMCwx'@; put 'LDcsMjFaTTI3LjUzLDMyYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDI3LjUzLDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0'@; put 'LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVoiLz4nKSxoLkNsclNoYXBlU3Rhcj0oMCxzLmNsckljb25T'@; put 'VkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE5LDM0YTIuMjIsMi4yMiwwLDAsMS0xLjI0LS4zOGwtNy40Ni01YS4yMi4yMiwwLDAsMC0uMjUsMGwtNy40Niw1QTIuMjIsMi4yMiwwLDAsMSw3LjQsMzEuMjFsMi40NS04LjY0YS4y'@; put 'My4yMywwLDAsMC0uMDgtLjI0TDIuNzEsMTYuNzhhMi4yMiwyLjIyLDAsMCwxLDEuMjktNGw5LS4zNGEuMjMuMjMsMCwwLDAsLjItLjE1bDMuMS04LjQzYTIuMjIsMi4yMiwwLDAsMSw0LjE3LDBsMy4xLDguNDNhLjIzLjIzLDAsMCwwLC4yLjE1bDksLjM0YTIuMjIsMi4yMiwwLDAsMSwxLjI5'@; put 'LDRMMjcsMjIuMzNhLjIyLjIyLDAsMCwwLS4wOC4yNGwyLjQ1LDguNjRBMi4yMywyLjIzLDAsMCwxLDI3LjE5LDM0Wm0tOC44Mi03LjQyQTIuMjEsMi4yMSwwLDAsMSwxOS42LDI3bDcuNDYsNWEuMjIuMjIsMCwwLDAsLjM0LS4yNWwtMi40NS04LjY0YTIuMjEsMi4yMSwwLDAsMSwuNzctMi4z'@; put 'NWw3LjA2LTUuNTVhLjIyLjIyLDAsMCwwLS4xMy0uNGwtOS0uMzRhMi4yMiwyLjIyLDAsMCwxLTItMS40NmwtMy4xLTguNDNhLjIyLjIyLDAsMCwwLS40MiwwTDE1LjA2LDEzYTIuMjIsMi4yMiwwLDAsMS0yLDEuNDZsLTksLjM0YS4yMi4yMiwwLDAsMC0uMTMuNEwxMSwyMC43NmEyLjIyLDIu'@; put 'MjIsMCwwLDEsLjc3LDIuMzVMOS4zMywzMS43NWEuMjEuMjEsMCwwLDAsLjA4LjI0LjIuMiwwLDAsMCwuMjYsMGw3LjQ2LTVBMi4yMiwyLjIyLDAsMCwxLDE4LjM2LDI2LjYyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi'@; put 'IGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMuMjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEtLjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1'@; put 'YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAsMy4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIsMCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0'@; put 'WiIvPicpLGguQ2xyU2hhcGVIYWxmU3Rhcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAsMC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5'@; put 'YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0uMi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIyLjIyLDAsMCwxLC4wOC4yNEw3LjM1LDMxLjIxQTIuMjMsMi4yMywwLDAsMCw5LjQ5LDM0YTIuMjIsMi4yMiwwLDAsMCwx'@; put 'LjI0LS4zOGw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIyLDIuMjIsMCwwLDAsMy4zOC0yLjQ1bC0yLjQ1LTguNjRhLjIzLjIzLDAsMCwxLC4wOC0uMjRaTTE4LjMzLDI2LjYyaDBhMi4yMSwyLjIxLDAsMCwwLTEuMjQuMzhMOS42MiwzMmEuMjIuMjIsMCwwLDEtLjM0LS4y'@; put 'NWwyLjQ1LTguNjRBMi4yMSwyLjIxLDAsMCwwLDExLDIwLjc2TDMuOSwxNS4yMWEuMjIuMjIsMCwwLDEsLjEzLS40bDktLjM0QTIuMjIsMi4yMiwwLDAsMCwxNSwxM2wzLjEtOC40M2EuMi4yLDAsMCwxLC4yMS0uMTVoMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'c29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIyLDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcsMGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIu'@; put 'MjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41NWEuMjMuMjMsMCwwLDEsLjA4LjI0TDcuMzUsMzEuMjFhMi4yMiwyLjIyLDAsMCwwLDMuMzgsMi40NWw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIsMi4yLDAsMCwwLDIuNTUsMCwyLjIsMi4yLDAsMCwwLC44My0yLjRsLTIuNDUt'@; put 'OC42NGEuMjIuMjIsMCwwLDEsLjA4LS4yNFpNMjQuOSwyMy4xMWwyLjQ1LDguNjRBLjIyLjIyLDAsMCwxLDI3LDMybC03LjQ2LTVhMi4yMSwyLjIxLDAsMCwwLTEuMjQtLjM4aDBWNC40NGgwYS4yLjIsMCwwLDEsLjIxLjE1TDIxLjYyLDEzYTIuMjIsMi4yMiwwLDAsMCwyLDEuNDZsOSwuMzRh'@; put 'LjIyLjIyLDAsMCwxLC4xMy40bC03LjA2LDUuNTVBMi4yMSwyLjIxLDAsMCwwLDI0LjksMjMuMTFaIi8+JyksaC5DbHJTaGFwZUJvb2ttYXJrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjYsMzRhMiwyLDAs'@; put 'MCwxLTEuNDEtLjU4TDE4LDI2LjgybC02LjU0LDYuNTJBMiwyLDAsMCwxLDgsMzEuOTNWNGEyLDIsMCwwLDEsMi0ySDI2YTIsMiwwLDAsMSwyLDJWMzJhMiwyLDAsMCwxLTIsMlptMC0yaDBWNEgxMFYzMS45M0wxOCwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'c29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMkgxMEEyLDIsMCwwLDAsOCw0VjMxLjkzYTIsMiwwLDAsMCwzLjQyLDEuNDFsNi41NC02LjUyLDYuNjMsNi42QTIsMiwwLDAsMCwyOCwzMlY0QTIsMiwwLDAsMCwyNiwyWiIvPicpLGguQ2xyU2hhcGVFbnZlbG9wZT0oMCxzLmNscklj'@; put 'b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0zMC40NiwyOEg1LjY2bDctNy4yNC0xLjQ0LTEuMzlM'@; put 'NCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5YTIsMiwwLDAsMCwyLjgyLDBMMzIsOS4yMXYxNy41bC03LjM2LTcuMzYtMS40MSwxLjQxWk01LjMxLDhIMzAuMzhMMTcuODQsMjAuNDdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMDhWMjYuNzFsLTcuMzYtNy4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcuMjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEyLDIsMCwwLDAsMi44MiwwbDguODMtOC43OGE3LjQ0LDcuNDQsMCwwLDEtMi0u'@; put 'ODVsLTguMjYsOC4yMUw1LjMxLDhIMjIuODFhNy40OSw3LjQ5LDAsMCwxLS4zMS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMkE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMDhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjUuODYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0t'@; put 'YWxlcnRlZCIgZD0iTTMzLjY4LDE1LjI2SDMyVjI2LjcxbC03LjM2LTcuMzYtMS40MSwxLjQxTDMwLjQ2LDI4SDUuNjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCwwLDIuODIsMGw2LjY2LTYuNjNIMjMuMDhsLTUuMjQsNS4yMUw1LjMxLDhIMjAu'@; put 'MDZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQi'@; put 'IGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z'@; put 'b2xpZC1wYXRoLTEiIGQ9Ik0zMi4zMyw2YTIsMiwwLDAsMC0uNDEsMGgtMjhhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODEsNy4zOSwxOS4yNSwyMS44'@; put 'OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzMuODEsNy4zOVpNNS4zLDI4SDMuOTFWMjYuNTdsNy4yNy03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEu'@; put 'NDEtMS40MSw3LjI3LDcuMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNiwxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwy'@; put 'MC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI5bC04LjcxLDguNjhhMiwyLDAsMCwxLTIuODIsMEwyLDcuNWEyLDIsMCwwLDAt'@; put 'LjA3LjVWMjhhMiwyLDAsMCwwLDIsMmgyOGEyLDIsMCwwLDAsMi0yVjEyLjM5QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSwwSDMwLjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAg'@; put 'ICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p'@; put 'LXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjUuNzdsLTYuNTIsNi40OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWMTUuMzhaTTUuMywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwx'@; put 'LjQxLDEuNDFabTI2LjYxLDBIMzAuNTFsLTcuMjktNy4yMywxLjQxLTEuNDEsNy4yNyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yMi45NCwxNS40aC0uN0EzLjY4LDMu'@; put 'NjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUs'@; put 'MS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksaC5DbHJTaGFwZVRhc2tzPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuMjksMzRINi43MUExLjcsMS43LDAsMCwxLDUsMzIuMzFWNi42OUExLjc1LDEuNzUsMCwwLDEsNyw1SDlWN0g3VjMySDI5VjdIMjdWNWgyLjI1QTEuNywxLjcsMCwwLDEsMzEsNi42OVYzMi4zMUExLjcsMS43LDAsMCwxLDI5'@; put 'LjI5LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuNjYsMjUuNzYsMTEuMywyMC40QTEsMSwwLDAsMSwxMi43MiwxOWwzLjk0LDMuOTQsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+'@; put 'XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNiwxMUgxMFY3LjMzQTIuMzQsMi4zNCwwLDAsMSwxMi4zMyw1aDEuNzlhNCw0LDAsMCwxLDcuNzUsMGgxLjc5QTIuMzQsMi4zNCwwLDAsMSwyNiw3LjMzWk0xMiw5'@; put 'SDI0VjcuMzNBLjMzLjMzLDAsMCwwLDIzLjY3LDdIMjBWNmEyLDIsMCwwLDAtNCwwVjdIMTIuMzNhLjMzLjMzLDAsMCwwLS4zMy4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIg'@; put 'ZD0iTTE5LDkuODksMTkuNTYsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aC43MWwxLjE2LTJhNCw0LDAsMCwwLTcuNzQsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMWg4LjY0QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIvPlxu'@; put 'ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjQuMTksMTUuNGwtNy41Myw3LjUzTDEyLjcyLDE5QTEsMSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1LjcxYTEsMSww'@; put 'LDAsMCwuMi0uMzFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNS40VjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCww'@; put 'LDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEz'@; put 'LDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMi43MiwxOUExLDEsMCwwLDAsMTEuMywyMC40bDUuMzYsNS4zNkwyNi43MSwxNS43MWExLDEsMCwwLDAtMS40MS0xLjQxbC04LjY0LDguNjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0Ey'@; put 'LjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNC40MkE3LjUsNy41LDAsMCwxLDIzLjEzLDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCww'@; put 'LDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjkuMjksNC45'@; put 'NWgtNy4yYTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWNi42NEExLjcsMS43LDAsMCwwLDI5LjI5LDQuOTVabS0xOCwzYTEsMSwwLDAsMSwxLTFo'@; put 'My40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAsMSwxLDFWOS44SDExLjI1Wm0xNC41Miw5LjIzLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDcuMTQtNy4xNGExLjQsMS40LDAsMSwxLDIsMloiLz5cbiAgICAgICAg'@; put 'ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjUuODgsMTUuNGExLjM4LDEuMzgsMCwwLDEtLjExLDEuODFsLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDctN0gy'@; put 'Mi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwwLS4wOUgxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2guNDJMMjIsNC43NmE0LjMsNC4zLDAsMCwwLTguMDkuMTlIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcs'@; put 'MCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4x'@; put 'MywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt'@; put 'cGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02LjQ2LTMuN0gxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gyLjI2YTcuNTMsNy41MywwLDAsMS0uMDctMSw3LjUzLDcuNTMsMCwwLDEsLjA4LTEuMDVoLS41'@; put 'YTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVabS00LjIzLDMuNzEtOS4xMiw5LjEyLTUuMjQt'@; put 'NS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy4xNC03LjE0YTEuNCwxLjQsMCwxLDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIg'@; put 'Y3k9IjYiIHI9IjUiLz4nKSxoLkNsclNoYXBlRmxhZz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMzRhMSwxLDAsMCwxLTEtMVYzQTEsMSwwLDAsMSw3LDNWMzNBMSwxLDAsMCwxLDYsMzRaIi8+XG4gICAg'@; put 'ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC41NSwzLjgyYTEsMSwwLDAsMC0xLDAsMTQuOSwxNC45LDAsMCwxLTYuMTMsMS4xNiwxMy4xMSwxMy4xMSwwLDAsMS01LjE4LTEuNDksMTIuNzgsMTIuNzgsMCwwLDAtNS0x'@; put 'LjQ1QTEwLjg2LDEwLjg2LDAsMCwwLDksMi44NVY1LjA4QTguOCw4LjgsMCwwLDEsMTMuMjUsNGExMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjZBMTguNzUsMTguNzUsMCwwLDAsMjksNi4xMlYxOC45NWExNi4xNiwxNi4xNiwwLDAsMS01LjU4Ljkz'@; put 'LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwxMi43OCwxMi43OCwwLDAsMC01LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwxNy43OVYyMGE4LjgsOC44LDAsMCwxLDQuMjUtMS4wOCwxMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjYsMTYuNzks'@; put 'MTYuNzksMCwwLDAsNy0xLjM3LDEsMSwwLDAsMCwuNTUtLjg5VjQuNjdBMSwxLDAsMCwwLDMwLjU1LDMuODJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUuOTIsMmExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAs'@; put 'MCwyLDBWM0ExLDEsMCwwLDAsNS45MiwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC41LDMuODJhMSwxLDAsMCwwLTEsMCwxNC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUu'@; put 'MTgtMS40OUExMi43OCwxMi43OCwwLDAsMCwxMy4yLDIsMTAuODYsMTAuODYsMCwwLDAsOSwyLjg1VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwx'@; put 'LDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNSwzLjgyWiIvPicpLGguQ2xyU2hhcGVJbmJveD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMjMsMTMuMDlhMSwxLDAsMCwwLDAsMS40MUwxOCwyMC4zbDUuNzktNS43OWExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDE2LjQ3'@; put 'VjJBMSwxLDAsMCwwLDE4LDFhMSwxLDAsMCwwLTEsMXYxNC41bC0zLjM4LTMuMzhBMSwxLDAsMCwwLDEyLjIzLDEzLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41LDVIMjJWN2g3VjIxSDIzLjYxbC0u'@; put 'MS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdWN2g3VjVINi41QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjYuNUExLjUsMS41LDAsMCwwLDI5LjUsNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIs'@; put 'Ny40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQxTDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYu'@; put 'NDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4zOEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41'@; put 'YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YyMUgyMy42MWwtLjEuODlhNS40Miw1LjQyLDAsMCwxLTEwLjc3LDBsLS4xLS44OUg3VjdoN1Y1SDYuNUExLjUsMS41LDAsMCwwLDUsNi41djI1QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNVYxMy40M0E3LjUyLDcu'@; put 'NTIsMCwwLDEsMzAsMTMuNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUi'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGguQ2xyU2hhcGVIZWFydD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzIuNDNhMSwxLDAsMCwxLS42MS0uMjFDMTEuODMsMjcuOSw4LDI0LjE4'@; put 'LDUuMzIsMjAuNTEsMS45LDE1LjgyLDEuMTIsMTEuNDksMyw3LjY0YzEuMzQtMi43NSw1LjE5LTUsOS42OS0zLjY5QTkuODcsOS44NywwLDAsMSwxOCw3LjcyYTkuODcsOS44NywwLDAsMSw1LjMxLTMuNzdjNC40OS0xLjI5LDguMzUuOTQsOS42OSwzLjY5LDEuODgsMy44NSwxLjEsOC4xOC0y'@; put 'LjMyLDEyLjg3QzI4LDI0LjE4LDI0LjE3LDI3LjksMTguNjEsMzIuMjJBMSwxLDAsMCwxLDE4LDMyLjQzWk0xMC4xMyw1LjU4QTUuOSw1LjksMCwwLDAsNC44LDguNTFjLTEuNTUsMy4xOC0uODUsNi43MiwyLjE0LDEwLjgxQTU3LjEzLDU3LjEzLDAsMCwwLDE4LDMwLjE2LDU3LjEzLDU3LjEz'@; put 'LDAsMCwwLDI5LjA2LDE5LjMzYzMtNC4xLDMuNjktNy42NCwyLjE0LTEwLjgxLTEtMi00LTMuNTktNy4zNC0yLjY1YTgsOCwwLDAsMC00Ljk0LDQuMiwxLDEsMCwwLDEtMS44NSwwLDcuOTMsNy45MywwLDAsMC00Ljk0LTQuMkE3LjMxLDcuMzEsMCwwLDAsMTAuMTMsNS41OFoiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUE5Ljg3LDkuODcsMCwwLDAsMTgsNy43MmE5Ljg3LDkuODcsMCwwLDAtNS4zMS0zLjc3QzguMTksMi42Niw0LjM0LDQuODks'@; put 'Myw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxoLkNsclNoYXBlSGVhcnRCcm9rZW49KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjA5LTUtOS42OS0zLjY5YTkuODcsOS44NywwLDAsMC02LDQuODQsMTguOSwxOC45LDAsMCwwLTIuMjMsNS4zM2w1LjI4'@; put 'LDIuMzQtNC42LDQuMzcsMy40OSw0LjEsMS41Mi0xLjNMMTguNTQsMjFsNS40LTUuMTNMMTcuNTgsMTNBMTYuMjMsMTYuMjMsMCwwLDEsMTkuNzUsOC45YTcuNjgsNy42OCwwLDAsMSw0LjExLTNjMy4zNC0uODksNi4zNC42LDcuMzQsMi42NSwxLjU1LDMuMTguODUsNi43Mi0yLjE0LDEwLjgx'@; put 'QTU3LjE2LDU3LjE2LDAsMCwxLDE4LDMwLjE2LDU3LjE2LDU3LjE2LDAsMCwxLDYuOTQsMTkuMzNjLTMtNC4xLTMuNjktNy42NC0yLjE0LTEwLjgxYTUuOSw1LjksMCwwLDEsNS4zMy0yLjkzLDcuMzEsNy4zMSwwLDAsMSwyLC4yOSw3LjcsNy43LDAsMCwxLDMuMzgsMmwuMTUtLjNhMTAuNjYs'@; put 'MTAuNjYsMCwwLDEsMS0xLjQxLDkuNjQsOS42NCwwLDAsMC0zLjk0LTIuMjJDOC4yLDIuNjYsNC4zNCw0Ljg5LDMsNy42NGMtMS44OCwzLjg1LTEuMSw4LjE4LDIuMzIsMTIuODdDOCwyNC4xOCwxMS44MywyNy45LDE3LjM5LDMyLjIyYTEsMSwwLDAsMCwxLjIzLDBjNS41NS00LjMxLDkuMzkt'@; put 'OCwxMi4wNy0xMS43MUMzNC4xLDE1LjgyLDM0Ljg4LDExLjQ5LDMzLDcuNjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjItNS05LjY5LTMuNjlBMTEuNTUsMTEuNTUsMCww'@; put 'LDAsMTguMTksNy41YTE2Ljg5LDE2Ljg5LDAsMCwwLTIuNDgsNC41NkwyMi4yNywxNSwxNi43LDIwLjI2LDE5LDIzbC0xLjU3LDEuMzQtMy42LTQuMjIsNC43NC00LjUxLTUuNDQtMi40MWExOS40OSwxOS40OSwwLDAsMSwyLjMtNS41LDE0Ljc3LDE0Ljc3LDAsMCwxLDEuMDYtMS41NGwuMDYs'@; put 'MGE5LjY2LDkuNjYsMCwwLDAtMy44OS0yLjE4QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0'@; put 'LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxoLkNsclNoYXBlVGFsa0J1YmJsZXM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMz'@; put 'TDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWN0EzLDMsMCwwLDAsMzEsNFpNMzIsMjIuOTQsMjguNSwyMC4yMWExLDEsMCww'@; put 'LDAtLjYxLS4yMUgxNGExLDEsMCwwLDEtMS0xVjdhMSwxLDAsMCwxLDEtMUgzMUExLjEsMS4xLDAsMCwxLDMyLDcuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIy'@; put 'LDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2OS43MkwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0xLTFWN2ExLDEsMCwwLDEsMS0xSDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0y'@; put 'SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'Mi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTlWMTFINWEzLDMs'@; put 'MCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMTRBNiw2LDAsMCwxLDgsMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0'@; put 'aCBkPSJNMzEsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjdBMywzLDAsMCwwLDMxLDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBkPSJNOCwxOVYxMUg1YTMsMywwLDAsMC0zLDNWMzJhMSwxLDAsMCwwLC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAsMCwyNSwyNi4xM1YyNUgxNEE2LDYsMCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p'@; put 'LXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjEy'@; put 'LjM3QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxoLkNsclNoYXBlQ2hhdEJ1YmJsZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCww'@; put 'LDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0x'@; put 'NC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMDgsMTEuMDgsMCwwLDEsMjguMjksMjQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS41SDExYTEsMSwwLDAsMCwwLDJIMjVhMSwx'@; put 'LDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjc1LDIwLjVoLTcuNWExLDEsMCwwLDAsMCwyaDcuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjgsMTIuNUgyNC43MmExLDEsMCwwLDAsMC0ySDExLjI4YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zOCwx'@; put 'Mi42OWE3LjQzLDcuNDMsMCwwLDEtMS44OS42NkExMC4zNSwxMC4zNSwwLDAsMSwzMiwxNi41YTExLjA4LDExLjA4LDAsMCwxLTMuNzEsOC4xMSwxLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0'@; put 'LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMmExNiwxNiwwLDAsMSw0LjU1LjY2QTcuNDQsNy40NCwwLDAsMSwyMywzLjIyYTE4LDE4LDAsMCwwLTUtLjcyYy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAs'@; put 'MS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0ExMi4zMiwxMi4zMiwwLDAsMCwzMy4zOCwxMi42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSwxNS41YTEsMSww'@; put 'LDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC4yNSwyMC41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjgsMTEuNWExLDEsMCwwLDAsMSwxSDI0LjcyYTEsMSwwLDAsMCwuODMtLjQ3QTcuNTMsNy41MywwLDAsMSwyNCwxMC41SDExLjI4QTEsMSwwLDAs'@; put 'MCwxMC4yOCwxMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0'@; put 'LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wm04LDE0YTEsMSwwLDAsMS0xLDFIMTFhMSwxLDAsMCwxLDAtMkgyNUExLDEsMCwwLDEsMjYsMTYuNVptLTMuMjUsNWExLDEsMCwwLDEtMSwxaC03LjVhMSwxLDAsMCwxLDAtMmg3LjVBMSwxLDAsMCwxLDIyLjc1LDIxLjVabS0xMi40Ny0x'@; put 'MGExLDEsMCwwLDEsMS0xSDI0LjcyYTEsMSwwLDAsMSwwLDJIMTEuMjhBMSwxLDAsMCwxLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjI1YTcuNDYsNy40NiwwLDAsMS00LjM1LTEuNCwx'@; put 'LDEsMCwwLDEtLjkzLjY1SDExLjI4YTEsMSwwLDAsMSwwLTJIMjQuMkE3LjQ2LDcuNDYsMCwwLDEsMjMsMy4yYTE4LDE4LDAsMCwwLTUtLjdjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44'@; put 'NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3LDEyLjM0LDEyLjM0LDAsMCwwLS42OC00QTcuNDYsNy40NiwwLDAsMSwzMCwxMy4yNVpNMjEuNzUsMjIuNWgtNy41YTEsMSwwLDAsMSwwLTJoNy41YTEsMSwwLDAsMSwwLDJabTMuMjUtNUgxMWExLDEsMCwwLDEsMC0ySDI1YTEsMSwwLDAsMSww'@; put 'LDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNS43NSIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNs'@; put 'ci1pLWJhZGdlIiAvPicpLGguQ2xyU2hhcGVQaWN0dXJlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91'@; put 'dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01'@; put 'LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEs'@; put 'MS42LDEuNkExLjYsMS42LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNs'@; put 'Ni43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z'@; put 'Miw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0'@; put 'LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIs'@; put 'NlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDEx'@; put 'LjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29s'@; put 'aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGguQ2xyU2hhcGVIYXBweUZhY2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwx'@; put 'OCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC44OSIgY3k9IjEzLjg5IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAg'@; put 'ICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMDUiIGN5PSIxMy44OSIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4xMywyOC4yMWE4LjY3LDguNjcsMCwwLDAsOC4yNi02SDkuODdBOC42Nyw4LjY3LDAs'@; put 'MCwwLDE4LjEzLDI4LjIxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTguODksMTMuODlhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsOC44'@; put 'OSwxMy44OVptOS4yNCwxNC4zMmE4LjY3LDguNjcsMCwwLDEtOC4yNi02SDI2LjM4QTguNjcsOC42NywwLDAsMSwxOC4xMywyOC4yMVptNi45My0xMi4zMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNS4wNSwxNS44OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi'@; put 'Lz4nKSxoLkNsclNoYXBlTmV1dHJhbEZhY2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjA1LDIyLjA2aC0xMmExLDEsMCwwLDAsMCwyaDEyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4x'@; put 'NiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm03LjA1LDIxLjA2YTEsMSwwLDAsMS0xLDFoLTEyYTEsMSwwLDAsMSwwLTJoMTJBMSwxLDAsMCwxLDI1LjA1LDIzLjA2Wk0yNywxNC4yOGExLjgsMS44LDAsMSwxLTEuOC0xLjhBMS44'@; put 'LDEuOCwwLDAsMSwyNywxNC4yOFptLTE1LjgsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjE2LDE2LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGguQ2xyU2hhcGVTYWRGYWNlPSgwLHMuY2xySWNvblNWRykoJzxwYXRo'@; put 'IGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMTYi'@; put 'IGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEuNDEiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAg'@; put 'ICAgICAgICAgPHBhdGggZD0iTTE4LjE2LDIwYTksOSwwLDAsMC03LjMzLDMuNzgsMSwxLDAsMSwwLDEuNjMsMS4xNiw3LDcsMCwwLDEsMTEuMzEtLjEzLDEsMSwwLDAsMCwxLjYtMS4yQTksOSwwLDAsMCwxOC4xNiwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm05LDEyLjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0LjI4Wm0tMTUuNTUsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44'@; put 'LDAsMCwxLDExLjQxLDE2LjA4Wm0xNCw3LjUzYTEsMSwwLDAsMS0xLjYsMS4yLDcsNywwLDAsMC0xMS4zMS4xMywxLDEsMCwxLDEtMS42My0xLjE2LDksOSwwLDAsMSwxNC41NC0uMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksaC5DbHJTaGFwZVRodW1i'@; put 'c1VwPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwyNmMtMi45MiwxLjgyLTcuMyw0LTkuMzcsNGgtNmExNi42OCwxNi42OCwwLDAsMS0zLjMxLTYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsNCwxNmg5VjZhMi4wNSwyLjA1LDAsMCwxLDEuMjYtMS42OWMuNzcsMiwyLjYyLDYuNTcsNC4y'@; put 'Myw4LjcyQTExLjM5LDExLjM5LDAsMCwwLDI0LDE2LjkxVjE0Ljc4YTkuMTMsOS4xMywwLDAsMS0zLjkxLTNjLTEuODgtMi41MS00LjI5LTkuMTEtNC4zMS05LjE3QTEsMSwwLDAsMCwxNC41OSwyQzEzLjI1LDIuMzgsMTEsMy42LDExLDZ2OEgzYTEsMSwwLDAsMC0xLDEsMjksMjksMCwwLDAs'@; put 'MS40LDkuNjJjMS44OSw1LjQsNC4xLDcuMTQsNC4yLDcuMjJhMSwxLDAsMCwwLC42MS4yMWg2LjQyYzIuNDMsMCw2LjU1LTIsOS4zNy0zLjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMzFIMjdhMSwx'@; put 'LDAsMCwxLTEtMVYxNGExLDEsMCwwLDEsMS0xaDdabS02LTJoNFYxNUgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYzLDEyLjEyQzE3LjUxLDkuMjgsMTQuODgsMiwxNC44OCwyUzEyLDIuODMsMTIs'@; put 'NS4yNVYxNUgyLjIzYTI5LjQ2LDI5LjQ2LDAsMCwwLDEuNDQsOS43NEM1LjYxLDMwLjI3LDcuOCwzMiw3LjgsMzJoNi44NkMxNi45LDMyLDIxLDMwLjA2LDI0LDI4LjMxVjE1LjUxQTEwLjg0LDEwLjg0LDAsMCwxLDE5LjYzLDEyLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk'@; put 'LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywxM2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAsMCwxLDFoN1YxM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZVRodW1ic0Rvd249KDAscy5jbHJJY29uU1ZHKSgnPHBh'@; put 'dGggZD0iTTEyLDEwYzIuOTItMS44Miw3LjMtNCw5LjM3LTRoNmExNi42OCwxNi42OCwwLDAsMSwzLjMxLDYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsMzIsMjBIMjNWMzBhMi4wNSwyLjA1LDAsMCwxLTEuMjYsMS42OWMtLjc3LTItMi42Mi02LjU3LTQuMjMtOC43MkExMS4zOSwxMS4zOSwwLDAs'@; put 'MCwxMiwxOS4wOXYyLjEzYTkuMTMsOS4xMywwLDAsMSwzLjkxLDNjMS44OCwyLjUxLDQuMjksOS4xMSw0LjMxLDkuMTdhMSwxLDAsMCwwLDEuMTkuNjNDMjIuNzUsMzMuNjIsMjUsMzIuNCwyNSwzMFYyMmg4YTEsMSwwLDAsMCwxLTEsMjksMjksMCwwLDAtMS40LTkuNjJjLTEuODktNS40LTQu'@; put 'MS03LjE0LTQuMi03LjIyQTEsMSwwLDAsMCwyNy43OSw0SDIxLjM3QzE4Ljk0LDQsMTQuODMsNiwxMiw3LjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMiw1SDlhMSwxLDAsMCwxLDEsMVYyMmExLDEsMCww'@; put 'LDEtMSwxSDJaTTgsN0g0VjIxSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi4zNywyMy44NGMyLjEyLDIuODQsNC43NiwxMC4wNyw0Ljc2LDEwLjA3UzI0LDMzLjEzLDI0LDMwLjcxVjIxaDkuNzdhMjku'@; put 'NDYsMjkuNDYsMCwwLDAtMS40NC05Ljc0QzMwLjM5LDUuNjgsMjguMiw0LDI4LjIsNEgyMS4zNUMxOS4xLDQsMTUsNS45LDEyLDcuNjV2MTIuOEExMC44NCwxMC44NCwwLDAsMSwxNi4zNywyMy44NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAg'@; put 'ICAgICA8cGF0aCBkPSJNOSwyM2ExLDEsMCwwLDAsMS0xVjZBMSwxLDAsMCwwLDksNUgyVjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlQ3Jvd249KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik00LDEzLjMzQTEuMzksMS4z'@; put 'OSwwLDEsMCwyLjYsMTQuNzIsMS4zOSwxLjM5LDAsMCwwLDQsMTMuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuODEsMTUuODRhMjAuMzUsMjAuMzUsMCwwLDAtNC41OCwxLjQzLDIyLjcsMjIuNywwLDAsMC0zLjQ4LDIu'@; put 'MUExNy42OSwxNy42OSwwLDAsMSwyMiwxNi41N2E0Ny42NSw0Ny42NSwwLDAsMS0yLjgtNy42OSwxLDEsMCwwLDAtMS0uNzQsMSwxLDAsMCwwLTEsLjc0LDQ2LjcxLDQ2LjcxLDAsMCwxLTIuOCw3LjY5LDE3LDE3LDAsMCwxLTEuNzYsMi44LDIyLjcsMjIuNywwLDAsMC0zLjQ4LTIuMSwyMC42'@; put 'NiwyMC42NiwwLDAsMC00LjU4LTEuNDMsMSwxLDAsMCwwLTEsLjM5LDEsMSwwLDAsMC0uMDksMS4wNUE1MC4xMyw1MC4xMywwLDAsMSw3LjgyLDMxLjE3YTEsMSwwLDAsMCwxLC44M0gyNy42MmExLDEsMCwwLDAsMS0uODMsNTAuMTUsNTAuMTUsMCwwLDEsNC4yNi0xMy44OSwxLDEsMCwwLDAt'@; put 'LjA5LTEuMDVBMSwxLDAsMCwwLDMxLjgxLDE1Ljg0Wk0yNi43OSwzMEg5LjY0YTU1LjY2LDU1LjY2LDAsMCwwLTMuNC0xMS43MSwxNS43NSwxNS43NSwwLDAsMSwyLjA5Ljc4LDIwLDIwLDAsMCwxLDMuODUsMi40NSwxLDEsMCwwLDAsMS4zOS0uMDksMTkuMjgsMTkuMjgsMCwwLDAsMi42Ny00'@; put 'LDQzLjQ2LDQzLjQ2LDAsMCwwLDItNC44OSw0MS43NCw0MS43NCwwLDAsMCwyLDQuODksMTkuOTIsMTkuOTIsMCwwLDAsMi42Niw0LDEsMSwwLDAsMCwxLjQuMDksMTkuMjEsMTkuMjEsMCwwLDEsMy44NS0yLjQ1LDE0Ljc3LDE0Ljc3LDAsMCwxLDIuMDktLjc4QTU1LjA3LDU1LjA3LDAsMCww'@; put 'LDI2Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGgg'@; put 'ZD0iTTE4LjIyLDYuMzlBMS4zOSwxLjM5LDAsMSwwLDE2Ljg0LDUsMS4zOSwxLjM5LDAsMCwwLDE4LjIyLDYuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTguMjMsMjYuMzRhMS4xMSwxLjExLDAsMSwwLDEuMSwxLjFBMS4x'@; put 'LDEuMSwwLDAsMCwxOC4yMywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMi41OCwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDEyLjU4LDI2LjM0WiIvPjxwYXRoIGQ9Ik0yMy44OSwy'@; put 'Ni4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDIzLjg5LDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cblxuICA8cGF0aCBkPSJNMi42LDExLjkzQTEuNCwxLjQsMCwxLDAsNCwxMy4zMywxLjQsMS40LDAsMCwwLDIu'@; put 'NiwxMS45M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTguMjIs'@; put 'Ni4zOUExLjM5LDEuMzksMCwxLDAsMTYuODQsNSwxLjM5LDEuMzksMCwwLDAsMTguMjIsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjYzLDE2LjFBMTguNjEsMTguNjEsMCwwLDAsMjgsMTcuMzRhMjEuNTcsMjEuNTcsMCww'@; put 'LDAtNCwyLjQ5LDE5LjIsMTkuMiwwLDAsMS0yLjI2LTMuNDksNDguOTIsNDguOTIsMCwwLDEtMi41Mi02LjU4LDEsMSwwLDAsMC0xLS43MWgwYTEsMSwwLDAsMC0xLC43MSw0OC40Miw0OC40MiwwLDAsMS0yLjUyLDYuNTgsMTguNjksMTguNjksMCwwLDEtMi4yNiwzLjQ4LDIyLjgxLDIyLjgx'@; put 'LDAsMCwwLTQtMi40OEExOC44MywxOC44MywwLDAsMCw0LjksMTYuMWExLDEsMCwwLDAtMSwuMzMsMSwxLDAsMCwwLS4xMywxLjA3LDU1LjksNTUuOSwwLDAsMSw0LDEzLjUsMSwxLDAsMCwwLDEsLjgzaDE5YTEsMSwwLDAsMCwxLS44Myw1NS45LDU1LjksMCwwLDEsNC0xMy41LDEsMSwwLDAs'@; put 'MC0uMTMtMS4wN0ExLDEsMCwwLDAsMzEuNjMsMTYuMVpNMTEuMDgsMjguNTVhMS4xMSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwxMS4wOCwyOC41NVptNy4xNSwwYTEuMTEsMS4xMSwwLDAsMSwwLTIuMjEsMS4xMSwxLjExLDAsMCwxLDAsMi4yMVptNy4xNiwwYTEuMTEs'@; put 'MS4xMSwwLDEsMSwxLjEtMS4xMUExLjExLDEuMTEsMCwwLDEsMjUuMzksMjguNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4gICcpLGguQ2xyU2hhcGVIYXNodGFnPSgwLHMuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsMTJIMjUuMzRsMS41NS03'@; put 'Ljc0YTEsMSwwLDAsMC0yLS4zOUwyMy4zLDEySDE1LjExbDEuNTUtNy43NGExLDEsMCwwLDAtMi0uMzlMMTMuMDcsMTJINmExLDEsMCwwLDAsMCwyaDYuNjdsLTEuNiw4SDRhMSwxLDAsMCwwLDAsMmg2LjY2TDkuMTEsMzEuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjY4LjY4LDAsMCwwLC4yLDAs'@; put 'MSwxLDAsMCwwLDEtLjhMMTIuNywyNGg4LjE5bC0xLjU1LDcuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjYyLjYyLDAsMCwwLC4xOSwwLDEsMSwwLDAsMCwxLS44TDIyLjkzLDI0SDMwYTEsMSwwLDAsMCwwLTJIMjMuMzNsMS42MS04SDMyYTEsMSwwLDAsMCwwLTJaTTIxLjI5LDIySDEzLjFsMS42'@; put 'MS04SDIyLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMS44NywxMEgyNi4zMmwxLTQuODNBMSwxLDAsMCwwLDI2LjM1LDRoLTJhMSwxLDAsMCwwLTEsLjc4TDIyLjMzLDEwaC01LjRsMS00LjgzQTEsMSwwLDAsMCwxNyw0'@; put 'SDE1YTEsMSwwLDAsMC0xLC43OEwxMywxMEg3YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJoNS41NUwxMC41LDIyaC02YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJIOS42OGwtMSw0LjgzYTEsMSwwLDAsMCwxLDEuMTdoMmExLDEsMCwwLDAsLjk1'@; put 'LS43OEwxMy42NywyNmg1LjRsLTEsNC44M0ExLDEsMCwwLDAsMTksMzJoMmExLDEsMCwwLDAsMS0uNzhMMjMuMDUsMjZoNmExLDEsMCwwLDAsMS0uOGwuNC0yYTEsMSwwLDAsMC0xLTEuMkgyMy44N2wxLjYzLThoNmExLDEsMCwwLDAsMS0uOGwuNDEtMkExLDEsMCwwLDAsMzEuODcsMTBabS0x'@; put 'MiwxMmgtNS40bDEuNjQtOGg1LjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICcpLGguU29jaWFsU2hhcGVzPXtjcm93bjpoLkNsclNoYXBlQ3Jvd24sc2hhcmU6aC5DbHJTaGFwZVNoYXJlLHN0YXI6aC5DbHJTaGFwZVN0YXIsImhhbGYtc3RhciI6aC5D'@; put 'bHJTaGFwZUhhbGZTdGFyLGJvb2ttYXJrOmguQ2xyU2hhcGVCb29rbWFyayxlbnZlbG9wZTpoLkNsclNoYXBlRW52ZWxvcGUsY2FsZW5kYXI6QS5DbHJTaGFwZUNhbGVuZGFyLGV2ZW50OkEuQ2xyU2hhcGVFdmVudCx0YXNrczpoLkNsclNoYXBlVGFza3MsZmxhZzpoLkNsclNoYXBlRmxhZyxp'@; put 'bmJveDpoLkNsclNoYXBlSW5ib3gsaGFzaHRhZzpoLkNsclNoYXBlSGFzaHRhZyxoZWFydDpoLkNsclNoYXBlSGVhcnQsImhlYXJ0LWJyb2tlbiI6aC5DbHJTaGFwZUhlYXJ0QnJva2VuLCJ0YWxrLWJ1YmJsZXMiOmguQ2xyU2hhcGVUYWxrQnViYmxlcywiY2hhdC1idWJibGUiOmguQ2xyU2hh'@; put 'cGVDaGF0QnViYmxlLHBpY3R1cmU6aC5DbHJTaGFwZVBpY3R1cmUsImhhcHB5LWZhY2UiOmguQ2xyU2hhcGVIYXBweUZhY2UsIm5ldXRyYWwtZmFjZSI6aC5DbHJTaGFwZU5ldXRyYWxGYWNlLCJzYWQtZmFjZSI6aC5DbHJTaGFwZVNhZEZhY2UsInRodW1icy11cCI6aC5DbHJTaGFwZVRodW1i'@; put 'c1VwLCJ0aHVtYnMtZG93biI6aC5DbHJTaGFwZVRodW1ic0Rvd259LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLlNvY2lhbFNoYXBlcywiZmF2b3JpdGUiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Tb2NpYWxTaGFwZXMuc3RhcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLlNvY2lhbFNo'@; put 'YXBlcywiZW1haWwiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Tb2NpYWxTaGFwZXMuZW52ZWxvcGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5Tb2NpYWxTaGFwZXMsImRhdGUiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5Tb2NpYWxTaGFwZXMuY2FsZW5kYXIpKSx0eXBlb2Ygd2lu'@; put 'ZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoaC5Tb2NpYWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RlY2hub2xvZ3ktc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RlY2hub2xvZ3ktc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oaixoLHkpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksaC5DbHJTaGFwZVZNV0FwcD1oLkNsclNoYXBlVk09aC5D'@; put 'bHJTaGFwZVJvdXRlcj1oLkNsclNoYXBlTmV0d29ya1N3aXRjaD1oLkNsclNoYXBlTmV0d29ya1NldHRpbmdzPWguQ2xyU2hhcGVOZXR3b3JrR2xvYmU9aC5DbHJTaGFwZVRhYmxldD1oLkNsclNoYXBlTW9iaWxlPWguQ2xyU2hhcGVCYXR0ZXJ5PWguQ2xyU2hhcGVBcHBsaWNhdGlvbj1oLkNs'@; put 'clNoYXBlQ29kZT1oLkNsclNoYXBlVGVybWluYWw9aC5DbHJTaGFwZURpc3BsYXk9aC5DbHJTaGFwZUNvbXB1dGVyPWguQ2xyU2hhcGVGbG9wcHk9aC5DbHJTaGFwZVBsdWdpbj1oLkNsclNoYXBlRG93bmxvYWRDbG91ZD1oLkNsclNoYXBlVXBsb2FkQ2xvdWQ9aC5DbHJTaGFwZUV4cG9ydD1o'@; put 'LkNsclNoYXBlSW1wb3J0PWguQ2xyU2hhcGVTaGllbGRYPWguQ2xyU2hhcGVTaGllbGQ9aC5DbHJTaGFwZVNoaWVsZENoZWNrPWguQ2xyU2hhcGVSZXNvdXJjZVBvb2w9aC5DbHJTaGFwZURhdGFDbHVzdGVyPWguQ2xyU2hhcGVNZW1vcnk9aC5DbHJTaGFwZUNQVT1oLkNsclNoYXBlQnVpbGRp'@; put 'bmc9aC5DbHJTaGFwZUFwcGxpY2F0aW9ucz1oLkNsclNoYXBlQ2x1c3Rlcj1oLkNsclNoYXBlU3RvcmFnZT1oLkNsclNoYXBlSG9zdD1oLkNsclNoYXBlRGFzaGJvYXJkPWguQ2xyU2hhcGVNb3VzZT1oLkNsclNoYXBlS2V5Ym9hcmQ9aC5DbHJTaGFwZURldmljZXM9aC5DbHJTaGFwZUJhY2t1'@; put 'cD1oLkNsclNoYXBlQmFja3VwUmVzdG9yZT1oLkNsclNoYXBlSGFyZERpc2s9aC5DbHJTaGFwZVJhY2tTZXJ2ZXI9aC5DbHJTaGFwZVdpZmk9aC5DbHJTaGFwZUJ1bmRsZT1oLkNsclNoYXBlQmxvY2tzR3JvdXA9aC5DbHJTaGFwZUJsb2NrPWguQ2xyU2hhcGVMYXllcnM9aC5DbHJTaGFwZVVu'@; put 'aW5zdGFsbD1oLkNsclNoYXBlSW5zdGFsbD1oLkNsclNoYXBlTm9XaWZpPWguQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9aC5DbHJTaGFwZVJ1bGVyUGVuY2lsPXZvaWQgMCxoLlRlY2hub2xvZ3lTaGFwZXM9aC5DbHJTaGFwZUZpbGVTaGFyZTI9aC5DbHJTaGFwZUNpQ2Q9aC5DbHJTaGFwZUFuaW1h'@; put 'dGlvbj1oLkNsclNoYXBlVGFwZURyaXZlPWguQ2xyU2hhcGVNZWRpYUNoYW5nZXI9aC5DbHJDb250cm9sTHVuPWguQ2xyU2hhcGVQb2Q9aC5DbHJTaGFwZU5vZGU9aC5DbHJTaGFwZU5hbWVzcGFjZT1oLkNsclNoYXBlTm9kZXM9aC5DbHJTaGFwZU5vZGVHcm91cD1oLkNsclNoYXBlU3RvcmFn'@; put 'ZUFkYXB0ZXI9aC5DbHJTaGFwZUhvc3RHcm91cD1oLkNsclNoYXBlU3F1aWQ9aC5DbHJTaGFwZUNhcGFjaXRvcj1oLkNsclNoYXBlUmVzaXN0b3I9aC5DbHJTaGFwZUluZHVjdG9yPWguQ2xyU2hhcGVSYWRhcj1oLkNsclNoYXBlVXNiPWguQ2xyU2hhcGVRckNvZGU9aC5DbHJTaGFwZUZpbGVT'@; put 'aGFyZT1oLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPWguQ2xyU2hhcGVDb250YWluZXI9aC5DbHJTaGFwZUNkRHZkPWguQ2xyU2hhcGVCYXJDb2RlPWguQ2xyU2hhcGVBdG9tPWguQ2xyU2hhcGVBc3NpZ25Vc2VyPWguQ2xyU2hhcGVQcm9jZXNzT25WTT1oLkNsclNoYXBlQmx1ZXRvb3RoT2Zm'@; put 'PWguQ2xyU2hhcGVCbHVldG9vdGg9aC5DbHJTaGFwZVNTRD1oLkNsclNoYXBlTlZNZT1oLkNsclNoYXBlSGFyZERyaXZlRGlza3M9aC5DbHJTaGFwZUhhcmREcml2ZT1oLkNsclNoYXBlQWRtaW5pc3RyYXRvcj1oLkNsclNoYXBlRmxhc2s9aC5DbHJTaGFwZUhlbGl4PWguQ2xyU2hhcGVEZXBs'@; put 'b3k9aC5DbHJTaGFwZUNsb3VkVHJhZmZpYz1oLkNsclNoYXBlQ2xvdWRTY2FsZT1oLkNsclNoYXBlQ2xvdWROZXR3b3JrPWguQ2xyU2hhcGVVbmxpbms9aC5DbHJTaGFwZUxpbms9aC5DbHJTaGFwZURpc2Nvbm5lY3Q9aC5DbHJTaGFwZUNvbm5lY3Q9aC5DbHJTaGFwZVVuYXJjaGl2ZT1oLkNs'@; put 'clNoYXBlQXJjaGl2ZT1oLkNsclNoYXBlQ2VydGlmaWNhdGU9dm9pZCAwO3ZhciBjPXkoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxzPXkoCi8qISAuLi91dGlscy9zdmctdGFnLWdl'@; put 'bmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtoLkNsclNoYXBlUnVsZXJQZW5jaWw9KDAscy5jbHJJY29uU1ZHKSgnPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHBvaW50cz0iOSAx'@; put 'Ny40MSA5IDI3IDE4LjU5IDI3IDE2LjU5IDI1IDExIDI1IDExIDE5LjQxIDkgMTcuNDEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzQuODcsMzIuMjksMzIsMjkuMzhWMzJINFYyNy44NUg2di0xLjZINFYxOS42'@; put 'SDZWMThINFYxMS42SDZWMTBINFY0LjQxTDE5Ljk0LDIwLjI2VjE3LjQ0TDMuNzEsMS4yOUExLDEsMCwwLDAsMiwyVjMzYTEsMSwwLDAsMCwxLDFIMzQuMTZhMSwxLDAsMCwwLC43MS0xLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTMiIGQ9Ik0yNCwzMGg0YTIsMiwwLDAsMCwyLTJWOC43TDI3LjcsNC40N2EyLDIsMCwwLDAtMS43Ni0xaDBhMiwyLDAsMCwwLTEuNzYsMS4wOEwyMiw4LjcyVjI4QTIsMiwwLDAsMCwyNCwzMFpNMjQsOS4ybDEuOTQtMy43N0wyOCw5LjIxVjI0SDI0Wm0wLDE2LjQzaDR2Mi40NEgy'@; put 'NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC44NywzMi4yMSwzMCwyNy4zN1Y4Ljc1TDI3LjcsNC41MmEyLDIsMCwwLDAtMy41NCwwTDIyLDguNzZWMTkuNDFMMy43MSwxLjIxQTEsMSwwLDAsMCwyLDEuOTJWMTBI'@; put 'NC4xN3YxLjZIMlYxOEg0LjE3djEuNkgydjYuNjVINC4xN3YxLjZIMnY1LjA3YTEsMSwwLDAsMCwxLDFIMzQuMTZhMSwxLDAsMCwwLC43MS0xLjcxWk0xMCwyNlYxNi45NEwxOS4wNywyNlptMTgsMi4xMUgyNFYyNS42OGg0Wm0wLTRIMjRWOS4yNWwxLjk0LTMuNzdMMjgsOS4yNloiLz5cbicp'@; put 'LGguQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy43MywzNS40NGE0LjcyLDQuNzIsMCwwLDEtMS0uMTEsMzMuOTEsMzMuOTEsMCwwLDEtMTYuNjItOC43NSwzMi43MSwz'@; put 'Mi43MSwwLDAsMS05LTE2LjI1QTQuNTgsNC41OCwwLDAsMSwyLjQ2LDYuMDVsNC0zLjg1QTIsMiwwLDAsMSw4LDEuNjZhMiwyLDAsMCwxLDEuNDUuODdsNSw3LjM5YTEuNiwxLjYsMCwwLDEtLjExLDEuOWwtMi41MSwzYTE4Ljk0LDE4Ljk0LDAsMCwwLDQuMTcsNS44OWgwYTE5LjI2LDE5LjI2'@; put 'LDAsMCwwLDYuMDcsNC4wOWwzLjExLTIuNDdhMS42NCwxLjY0LDAsMCwxLDEuODYtLjEybDcuNTUsNC44OEEyLDIsMCwwLDEsMzUsMzAuMmwtMy45LDMuODZBNC43NCw0Ljc0LDAsMCwxLDI3LjczLDM1LjQ0Wk03Ljg0LDMuNjRsLTQsMy44NWEyLjU0LDIuNTQsMCwwLDAtLjc1LDIuNCwzMC43'@; put 'LDMwLjcsMCwwLDAsOC40MSwxNS4yNiwzMS45LDMxLjksMCwwLDAsMTUuNjQsOC4yMywyLjc1LDIuNzUsMCwwLDAsMi41LS43NGwzLjktMy44Ni03LjI5LTQuNzEtMy4zNCwyLjY2YTEsMSwwLDAsMS0uOTIuMTcsMjAuMDYsMjAuMDYsMCwwLDEtNy4zNi00Ljc1aDBhMTkuNDksMTkuNDksMCww'@; put 'LDEtNC44Ny03LjJBMSwxLDAsMCwxLDEwLDE0bDIuNy0zLjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE1LjIyLDIwLjY0YTIwLjM3LDIwLjM3LDAsMCwwLDcuNCw0Ljc5bDMuNzctM2EuNjcuNjcsMCwwLDEsLjc2'@; put 'LDBsNyw0LjUxYTIsMiwwLDAsMSwuMzMsMy4xOGwtMy4yOCwzLjI0YTQsNCwwLDAsMS0zLjYzLDEuMDcsMzUuMDksMzUuMDksMCwwLDEtMTcuMTUtOUEzMy43OSwzMy43OSwwLDAsMSwxLjE1LDguNmEzLjc4LDMuNzgsMCwwLDEsMS4xLTMuNTVsMy40LTMuMjhhMiwyLDAsMCwxLDMuMTIuMzJM'@; put 'MTMuNDMsOWEuNjMuNjMsMCwwLDEsMCwuNzVsLTMuMDcsMy42OUExOS43NSwxOS43NSwwLDAsMCwxNS4yMiwyMC42NFoiLz5cbicpLGguQ2xyU2hhcGVOb1dpZmk9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0x'@; put 'OCwyNC40MmE0LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwyNC40MlptMCw2YTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNi4yMSwyMS44NWExLDEs'@; put 'MCwwLDAtLjIzLTEuNCwxMy41NiwxMy41NiwwLDAsMC01LTIuMjNsMy44NywzLjg3QTEsMSwwLDAsMCwyNi4yMSwyMS44NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTguMDUsMTAuNzJhMjAuODgsMjAuODgs'@; put 'MCwwLDAtNC4xNi40M2wxLjc0LDEuNzRhMTksMTksMCwwLDEsMi40Mi0uMTdBMTguNzYsMTguNzYsMCwwLDEsMjguNjQsMTZhMSwxLDAsMCwwLDEuMTItMS42NUEyMC43NSwyMC43NSwwLDAsMCwxOC4wNSwxMC43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzMuNTUsOC4yQTI4LjExLDI4LjExLDAsMCwwLDguMTEsNS4zNkw5LjY5LDYuOTNBMjYsMjYsMCwwLDEsMzIuNDUsOS44N2ExLDEsMCwwLDAsMS4xLTEuNjdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtNSIgZD0iTTEuODQsNC43NSw0LjI3LDcuMThjLS42Mi4zNC0xLjIzLjctMS44MywxLjFBMSwxLDAsMSwwLDMuNTYsOS45NEM0LjI2LDkuNDcsNSw5LDUuNzQsOC42NWwzLjg3LDMuODdBMjAuNTksMjAuNTksMCwwLDAsNi4yMywxNC40LDEsMSwwLDAsMCw3LjM2LDE2'@; put 'YTE4LjgyLDE4LjgyLDAsMCwxLDMuNzctMmw0LjE2LDQuMTZBMTMuNTEsMTMuNTEsMCwwLDAsMTAsMjAuNTVhMSwxLDAsMCwwLDEuMTgsMS42MUExMS41MiwxMS41MiwwLDAsMSwxNywyMGwxMC44LDEwLjgsMS40MS0xLjQxLTI2LTI2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0i'@; put 'Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41NCIgcj0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LjE4LDE3LjcxbC4xMS0uMTdhMS41MSwxLjUxLDAsMCwwLS40Ny0yLjFB'@; put 'MjAuNTcsMjAuNTcsMCwwLDAsMTgsMTIuMzdjLS41NiwwLTEuMTEsMC0xLjY1LjA3bDMuMjEsMy4yMWExNy40MSwxNy40MSwwLDAsMSw3LjYsMi41MkExLjQ5LDEuNDksMCwwLDAsMjkuMTgsMTcuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0zIiBkPSJNMzIuNzYsOS4zOEEyNy45LDI3LjksMCwwLDAsMTAuMTgsNi4yN0wxMi44MSw4LjlBMjQuNjgsMjQuNjgsMCwwLDEsMzEuMSwxMi4xMmExLjQ5LDEuNDksMCwwLDAsMi0uNDZsLjExLS4xN0ExLjUxLDEuNTEsMCwwLDAsMzIuNzYsOS4zOFoiLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0zLDQuNzVsMy4xLDMuMUEyNy4yOCwyNy4yOCwwLDAsMCwzLjE4LDkuNDJhMS41MSwxLjUxLDAsMCwwLS40OCwyLjExbC4xMS4xN2ExLjQ5LDEuNDksMCwwLDAsMiwuNDYsMjQuNjksMjQuNjksMCwwLDEs'@; put 'My42Ny0xLjlsMy4xNCwzLjE0YTIwLjYzLDIwLjYzLDAsMCwwLTQuNTMsMi4wOSwxLjUxLDEuNTEsMCwwLDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2QTE3LjQ2LDE3LjQ2LDAsMCwxLDE0LjI1LDE2bDMuNiwzLjZhMTMuMzksMTMuMzksMCwwLDAtNi43OSwxLjkzLDEu'@; put 'NSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMiwxMC4yLDAsMCwxLDktLjdMMjksMzAuNzVsMS40MS0xLjQxLTI2LTI2WiIvPlxuJyksaC5DbHJTaGFwZUluc3RhbGw9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC45Miw4SDI2LjU1YTEsMSwwLDAsMCwwLDJIMzFWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMEEyLDIsMCwwLDAsMzAu'@; put 'OTIsOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1'@; put 'bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMC4zLDE4Ljg3bDcsNi44OWExLDEsMCwwLDAsMS40LDBsNy02Ljg5YTEsMSwwLDAs'@; put 'MC0xLjQtMS40M0wxOSwyMi42NVY0YTEsMSwwLDAsMC0yLDBWMjIuNjVsLTUuMy01LjIxYTEsMSwwLDAsMC0xLjQsMS40M1oiLz48cGF0aCBkPSJNMzEsMTMuNDNWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjky'@; put 'QTIsMiwwLDAsMCwzMywzMFYxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMC4zLDE4Ljg3bDcsNi44OWExLDEsMCwwLDAsMS40LDBsNy02Ljg5YTEsMSwwLDAsMC0xLjQtMS40M0wxOSwyMi42NVY0YTEsMSwwLDAs'@; put 'MC0yLDBWMjIuNjVsLTUuMy01LjIxYTEsMSwwLDAsMC0xLjQsMS40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEsMTUuNFYzMEg1VjEwSDkuMzhhMSwxLDAsMCwwLDAtMkg1'@; put 'LjA4QTIsMiwwLDAsMCwzLDEwVjMwYTIsMiwwLDAsMCwyLjA4LDJIMzAuOTJBMiwyLDAsMCwwLDMzLDMwVjE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0i'@; put 'TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuJyksaC5DbHJTaGFwZVVuaW5zdGFsbD0oMCxzLmNsckljb25TVkcpKCc8cGF0'@; put 'aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTExLjI5LDI2LjcyYTEsMSwwLDAsMCwxLjQxLDBMMTgsMjEuNDlsNS4zLDUuMjNBMSwxLDAsMCwwLDI0LjcsMjUuM2wtNS4yOC01LjIxLDUuMjgtNS4yMWExLDEsMCwwLDAtMS40MS0xLjQyTDE4LDE4LjY4'@; put 'bC01LjMtNS4yM2ExLDEsMCwwLDAtMS40MSwxLjQybDUuMjgsNS4yMUwxMS4zLDI1LjNBMSwxLDAsMCwwLDExLjI5LDI2LjcyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC45Miw4SDI2LjU1YTEsMSwwLDAs'@; put 'MCwwLDJIMzFWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMEEyLDIsMCwwLDAsMzAuOTIsOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i'@; put 'YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjI5LDI2LjcyYTEsMSwwLDAsMCwxLjQxLDBMMTgsMjEuNDlsNS4zLDUuMjNBMSwxLDAsMCwwLDI0LjcsMjUuM2wtNS4yOC01LjIxLDUuMjgtNS4yMWExLDEsMCwwLDAtMS40MS0xLjQyTDE4LDE4LjY4bC01LjMtNS4y'@; put 'M2ExLDEsMCwwLDAtMS40MSwxLjQybDUuMjgsNS4yMUwxMS4zLDI1LjNBMSwxLDAsMCwwLDExLjI5LDI2LjcyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDNWMzBINVYx'@; put 'MEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMS4yOSwyNi43MmEx'@; put 'LDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw0Ljc1LTQuNjlIMjIuMjNhMy42NSwzLjY1LDAsMCwxLS44MS0uMUwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEs'@; put 'MSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEsMTUuNFYzMEg1VjEwSDkuMzhhMSwxLDAsMCwwLDAtMkg1LjA4QTIsMiwwLDAsMCwzLDEwVjMw'@; put 'YTIsMiwwLDAsMCwyLjA4LDJIMzAuOTJBMiwyLDAsMCwwLDMzLDMwVjE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB'@; put 'MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuJyksaC5DbHJTaGFwZUxheWVycz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIwLjI1YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLDAtMS44MWwxNS03LjA5YTEsMSwwLDAsMSwuODUsMGwxNSw3LjA5YTEsMSwwLDAsMSwwLDEuODFsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDIwLjI1Wk01LjM0LDEyLjE2'@; put 'bDEyLjY2LDYsMTIuNjYtNkwxOCw2LjE4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEsMCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYu'@; put 'ODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDdhMSwxLDAsMCwxLS40My0uMWwtMTUtNy4wOWExLDEsMCwwLDEs'@; put 'Ljg1LTEuODFMMTgsMzBsMTQuNTctNi44OWExLDEsMCwxLDEsLjg1LDEuODFMMTguNDMsMzJBMSwxLDAsMCwxLDE4LDMyLjA3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIwLjI1YTEsMSwwLDAsMS0uNDMtLjFs'@; put 'LTE1LTcuMDlhMSwxLDAsMCwxLDAtMS44MWwxNS03LjA5YTEsMSwwLDAsMSwuODUsMGwxNSw3LjA5YTEsMSwwLDAsMSwwLDEuODFsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDIwLjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIg'@; put 'ZD0iTTE4LDI2LjE2YTEsMSwwLDAsMS0uNDMtLjFMMi41NywxOWExLDEsMCwxLDEsLjg1LTEuODFMMTgsMjQuMDZsMTQuNTctNi44OUExLDEsMCwxLDEsMzMuNDMsMTlsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDI2LjE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk'@; put 'IGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbicpLGguQ2xyU2hhcGVCbG9j'@; put 'az0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMtNmExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIs'@; put 'OS4wOVpNMTgsNS4xLDI4LjYxLDEwLDE4LDE0LjksNy4zOSwxMFpNNiwxMS41NmwxMSw1LjA4djE0LjhMNiwyNi4zNlpNMTksMzEuNDRWMTYuNjRsMTEtNS4wOHYxNC44WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBk'@; put 'PSJNMzAsMTUuNTNWMjYuMzZMMTksMzEuNDRWMTYuNjRsMi41Ny0xLjE5YTMuNjcsMy42NywwLDAsMS0yLjExLTEuMjJMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWwzLjA4LDEuNDIsMS0xLjc0TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSww'@; put 'LDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTUuNTNaTTE3LDMxLjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTI2Ljg3LDEuMjZsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTJIMzMuN2ExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTJMMjkuMDgsMS4yNkExLjI4LDEuMjgsMCwwLDAsMjYuODcsMS4yNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMjYuMzZMMTksMzEuNDRWMTYuNjRsOC4wOC0zLjczYTcuNTcsNy41NywwLDAsMS0yLTEuMjdMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWw0LjYxLDIuMTNBNy4x'@; put 'Miw3LjEyLDAsMCwxLDIyLjUsNmE4LDgsMCwwLDEsLjA3LTFMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMy4yMkE3LjM3LDcuMzcsMCww'@; put 'LDEsMzAsMTMuNVpNMTcsMzEuNDQsNiwyNi4zNlYxMS41NmwxMSw1LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40Miw5LjA5bC0xMy02YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEsMCwwLDAsLjU4'@; put 'LjkxbDEzLDZhMSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjEwQTEsMSwwLDAsMCwzMS40Miw5LjA5Wk0xOCwxNC45LDcuMzksMTAsMTgsNS4xLDI4LjYxLDEwWk0zMCwyNi4zNiwxOSwzMS40NFYxNi42NGwxMS01LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS4zOHYxMUwxOSwzMS40NFYxNi42NGwyLjc5LTEuMjlhMy42OCwzLjY4LDAsMCwxLTIuMjUtMS4xNkwxOCwxNC45LDcuMzksMTAsMTgsNS4xbDMsMS4zOSwxLTEuNzVMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBs'@; put 'LTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8'@; put 'cGF0aCBkPSJNMjYuODUsMS4xMiwyMS4xMywxMWExLjI3LDEuMjcsMCwwLDAsMS4xLDEuOTFIMzMuNjhBMS4yNywxLjI3LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTJBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt'@; put 'cGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMjYuMzZMMTksMzEuNDRWMTYuNjRsOC4wOC0zLjczYTcuNTcsNy41NywwLDAsMS0yLTEuMjdMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWw0LjYxLDIuMTNBNy4xMiw3LjEyLDAsMCwx'@; put 'LDIyLjUsNmE4LDgsMCwwLDEsLjA3LTFMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVoi'@; put 'IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRn'@; put 'ZSIgLz4nKSxoLkNsclNoYXBlQmxvY2tzR3JvdXA9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWNi40M0ExLDEsMCwwLDAsMjYsNS41M2wtNy41LTMuNDVhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRMMi42'@; put 'OCwxOC43NmExLDEsMCwwLDAtLjU4LjkxdjkuNzhoMGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MWgwVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43'@; put 'NlptLTIuODEuOTFMMjUuNjEsMjIsMjAuNSwxOS42N2w1LjExLTIuMzVaTTE4LjEsNC4wOGw1LjExLDIuMzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptNi41LDExLjQ5LTYuNSwzLTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSww'@; put 'LDAsMCwxMSwyNGw2LjA4LTIuOFpNMTEuNiwxNS41N2gwVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwTDI0LjYsOHY3LjU4aDBsLTYuNSwzWk0zMi4xMSwyOC44MWwtNi41LDMtNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdoLTJ2MGwtNi41LDMtNi41LTNWOGw2LjA4LDIuOGExLDEsMCwwLDAsLjg0LDBsLjI0LS4xMWE0LjE3LDQuMTcsMCwwLDEsLjI5LS42NWwxLjMzLTIuMzEtMi4yOCwxTDEzLDYu'@; put 'NDNsNS4xLTIuMzUsMy40NywxLjYsMS0xLjczTDE4LjUsMi4wOGExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgt'@; put 'My4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAs'@; put 'MCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4xMSwyLjM1TDI1LjYxLDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbjxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N1YxMi43YTcuNTgsNy41OCwwLDAsMS0yLTEuNTF2NC4zOWwtNi41LDMtNi41LTNWOGw2LjA4LDIuOGExLDEsMCww'@; put 'LDAsLjg0LDBMMjMsOC43MmE3LjA1LDcuMDUsMCwwLDEtLjQ3LTJsLTQuNDcsMkwxMyw2LjQzbDUuMS0yLjM1LDQuNDQsMnMwLS4wNiwwLS4wOWE3LjU1LDcuNTUsMCwwLDEsLjI3LTJsLTQuMy0yYTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0bC02Ljks'@; put 'My4xOGExLDEsMCwwLDAtLjU4LjkxdjkuNzhhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFWMTkuNjdBMSwxLDAsMCwwLDMzLjUzLDE4Ljc2Wk0xMC42'@; put 'LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIyLDUuNDksMTkuNjdabTAsMTQuNDktNi41LTNWMjEuMjNMMTAuMTgsMjRBMSwxLDAsMCwwLDExLDI0bDYuMDgtMi44LDAsNy42Wm0xNS0xNC40OCw1LjExLDIuMzVMMjUuNjEsMjIsMjAuNSwxOS42N1ptMCwxNC40OS02LjUxLTNWMjEuMjJMMjUuMTks'@; put 'MjRBMSwxLDAsMCwwLDI2LDI0bDYuMDgtMi44LDAsNy42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbjxjaXJjbGUgY3g9IjMwLjAzIiBjeT0iNi4wMyIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWNi40M0ExLDEsMCwwLDAsMjYsNS41M2wtNy41LTMuNDVhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRMMi42OCwx'@; put 'OC43NmExLDEsMCwwLDAtLjU4LjkxdjkuNzhoMGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MWgwVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpN'@; put 'MjUuNjEsMjIsMjAuNSwxOS42N2w1LjExLTIuMzUsNS4xMSwyLjM1Wm0tMS02LjQ0LTYuNDQsM1YxMC44N2ExLDEsMCwwLDAsLjM1LS4wOEwyNC42LDh2Ny41OFpNMTguMSw0LjA4bDUuMTEsMi4zNUwxOC4xLDguNzgsMTMsNi40M1pNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5'@; put 'LDE5LjY3Wm02LjUsMTEuNDktNi41LDNoMFYyNC4xMWgwQTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOFptMTUsMC02LjQ2LDNWMjQuMTFBMSwxLDAsMCwwLDI2LDI0bDYuMDgtMi44WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41Mywx'@; put 'OC43NiwyNi42LDE1LjU3djBoLTJ2MGwtNi40MywzVjEwLjg3YTEuMDUsMS4wNSwwLDAsMCwuMzUtLjA4bC4xNC0uMDZBMy4yMywzLjIzLDAsMCwxLDE5LDEwbDEuMjgtMi4yMi0yLjE0LDFMMTMsNi40M2w1LjEtMi4zNSwzLjM5LDEuNTYsMS0xLjczLTQtMS44M2ExLDEsMCwwLDAtLjg0LDBs'@; put 'LTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgt'@; put 'LjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIuMzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYsMzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0xMi4xMyw1LjExLTIuMzUsNS4xMSwyLjM1TDI1LjYxLDIyWk0y'@; put 'NS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODksMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4y'@; put 'NywxM0gzMy43MmExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMSwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44OSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbjxwYXRoIGQ9Ik0zMy41Mywx'@; put 'OC43NiwyNi42LDE1LjU3VjEyLjY5YTcuNjYsNy42NiwwLDAsMS0yLTEuNDd2NC4zNGwtNi40MywzVjEwLjg3YTEuMDUsMS4wNSwwLDAsMCwuMzUtLjA4TDIzLDguNzNhNy42NSw3LjY1LDAsMCwxLS40OC0ybC00LjQyLDJMMTMsNi40M2w1LjEtMi4zNSw0LjM4LDJWNmE3LjU1LDcuNTUsMCww'@; put 'LDEsLjI3LTJMMTguNSwyLjA4YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0bC02LjksMy4xOGExLDEsMCwwLDAtLjU4LjkxdjkuNzhhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEs'@; put 'MCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFWMTkuNjdBMSwxLDAsMCwwLDMzLjUzLDE4Ljc2Wm0tMjgsLjkxLDUuMTEtMi4zNiw1LjExLDIuMzVMMTAuNiwyMlpNMTAuNiwzMS44VjI0LjExQTEuMDgsMS4wOCwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptOS45LTEy'@; put 'LjEzLDUuMTEtMi4zNSw1LjExLDIuMzVMMjUuNjEsMjJaTTI1LjY0LDMxLjhWMjQuMTFBLjg5Ljg5LDAsMCwwLDI2LDI0bDYuMDgtMi44LDAsNy42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4PSIyOS45OCIg'@; put 'Y3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGguQ2xyU2hhcGVCdW5kbGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTEiIGQ9Ik0zMi40Myw4LjM1bC0xMy02LjIxYTEsMSwwLDAsMC0uODcsMGwtMTUsNy4yNGExLDEsMCwwLDAtLjU3LjlWMjYuODNhMSwxLDAsMCwwLC42LjkybDEzLDYuMTlhMSwxLDAsMCwwLC44NywwbDE1LTcuMjRhMSwxLDAsMCwwLC41Ny0uOVY5LjI1QTEsMSwwLDAsMCwzMi40Myw4LjM1'@; put 'Wk0xOSw0LjE1LDI5LjkzLDkuMzdsLTUuMDUsMi40NEwxNC4yMSw2LjQ2Wk0xNywxNS42NCw2LDEwLjQxbDUuOS0yLjg1TDIyLjYsMTIuOTFaTTUsMTIuMTMsMTYsMTcuNFYzMS40Nkw1LDI2LjJaTTE4LDMxLjQ1VjE3LjM2bDEzLTYuMjl2MTQuMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs'@; put 'YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi40Myw4LjM1bC0xMy02LjIxYTEsMSwwLDAsMC0uODcsMGwtMTUsNy4yNGExLDEsMCwwLDAtLjU3LjlWMjYuODNhMSwxLDAsMCwwLC42LjkybDEzLDYuMTlhMSwxLDAsMCwwLC44NywwbDE1LTcuMjRhMSwxLDAsMCww'@; put 'LC41Ny0uOVY5LjI1QTEsMSwwLDAsMCwzMi40Myw4LjM1Wk0xOSw0LjE1LDI5LjkzLDkuMzdsLTUuMDUsMi40NEwxNC4yMSw2LjQ2Wk0xNywxNS42NCw2LDEwLjQxbDUuOS0yLjg1TDIyLjYsMTIuOTFabTEsMTUuOFYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4nKSxoLkNsclNoYXBlV2lmaT0o'@; put 'MCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjU1LDguMmEyOC4xLDI4LjEsMCwwLDAtMzEuMTEuMDhBMSwxLDAsMSwwLDMuNTYsOS45NGEyNi4xMSwyNi4xMSwwLDAsMSwyOC44OS0uMDcsMSwxLDAsMCwwLDEu'@; put 'MS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOC4wNSwxMC43MkEyMC43NCwyMC43NCwwLDAsMCw2LjIzLDE0LjQsMSwxLDAsMCwwLDcuMzYsMTYsMTguODUsMTguODUsMCwwLDEsMjguNjQsMTZhMSwx'@; put 'LDAsMCwwLDEuMTItMS42NUEyMC43NSwyMC43NSwwLDAsMCwxOC4wNSwxMC43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTguMDUsMTcuOWExMy41MSwxMy41MSwwLDAsMC04LDIuNjQsMSwxLDAsMCwwLDEu'@; put 'MTgsMS42MSwxMS41NiwxMS41NiwwLDAsMSwxMy42Mi0uMDhBMSwxLDAsMSwwLDI2LDIwLjQ2LDEzLjUyLDEzLjUyLDAsMCwwLDE4LjA1LDE3LjlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDI0LjQyYTQs'@; put 'NCwwLDEsMCw0LDRBNCw0LDAsMCwwLDE4LDI0LjQyWm0wLDZhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsMTgsMzAuNDJaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGN4PSIxOCIgY3k9IjI5LjU0IiByPSIzIi8+XG4gICAg'@; put 'ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzIuNzYsOS4zOGEyNy44NywyNy44NywwLDAsMC0yOS41NywwLDEuNTEsMS41MSwwLDAsMC0uNDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY4LDI0LjY4LDAsMCwx'@; put 'LDI2LjI2LDAsMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjguODIsMTUuNDRhMjAuNTksMjAuNTksMCwwLDAtMjEu'@; put 'NywwLDEuNTEsMS41MSwwLDAsMC0uNDYsMi4xbC4xMS4xN2ExLjQ5LDEuNDksMCwwLDAsMiwuNDYsMTcuNCwxNy40LDAsMCwxLDE4LjM2LDAsMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDI4LjgyLDE1LjQ0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTI0Ljg4LDIxLjQ5YTEzLjQxLDEzLjQxLDAsMCwwLTEzLjgyLDAsMS41LDEuNSwwLDAsMC0uNDYsMi4wOWwuMS4xNmExLjUyLDEuNTIsMCwwLDAsMi4wNi40NCwxMC4yNywxMC4yNywwLDAsMSwxMC40MiwwLDEuNTIsMS41'@; put 'MiwwLDAsMCwyLjA2LS40NWwuMS0uMTZBMS40OSwxLjQ5LDAsMCwwLDI0Ljg4LDIxLjQ5WiIvPlxuJyksaC5DbHJTaGFwZVJhY2tTZXJ2ZXI9KDAscy5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQi'@; put 'IHg9IjEwIiB5PSIxNyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAg'@; put 'ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguNjQsMTFBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxMHYyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0zMy42'@; put 'OCwxNS40SDMyVjIxSDRWMTVIMjAuNThBMy42NywzLjY3LDAsMCwxLDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNNCwyOVYyM0gzMnY2WiIvPlxu'@; put 'ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu'@; put 'NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAg'@; put 'ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSI2IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIHg9IjYiIHk9IjI1IiB3aWR0aD0iMiIgaGVp'@; put 'Z2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l'@; put 'LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgZD0iTTEwLDExSDI0di0uNTFBNy40OCw3LjQ4LDAsMCwxLDIzLjEzLDlIMTBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQi'@; put 'IGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjY4LS41SDRWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMw'@; put 'LDEzLjVaTTQsMTVIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAg'@; put 'PHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxMCIgeT0iOSIgd2lkdGg9'@; put 'IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI2IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTQiIHg9IjEwIiB5PSIxNyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCww'@; put 'LDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMnY2SDRabTAsOEgzMnY2SDRaTTQsMjlWMjNIMzJ2NloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxu'@; put 'ICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEt'@; put 'LWFsZXJ0ZWQiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0x'@; put 'OSw5Ljg5LDE5LjU2LDlIMTBWN0gyMC43MWwxLjczLTNINEEyLDIsMCwwLDAsMiw2djZIMTguNTdBMy42NywzLjY3LDAsMCwxLDE5LDkuODlaTTgsOUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFs'@; put 'ZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOS4zNSwxNEgydjhIMzRWMTUuMzhaTTgsMTlINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0t'@; put 'YWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDE0djhIMzRWMTRabTYsNUg2VjE3SDhabTE2LDBIMTBWMTdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTIt'@; put 'LWJhZGdlZCIgZD0iTTIsMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0SDJabTgtM0gyNHYySDEwWk02LDI3SDh2Mkg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0yMy4x'@; put 'Myw5SDEwVjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZ2NkgyNS41MUE3LjUyLDcuNTIsMCwwLDEsMjMuMTMsOVpNOCw5SDZWN0g4WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJh'@; put 'ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIsMjJIMzRWMTRIMlptOC01SDI0djJIMTBaTTYsMTdIOHYy'@; put 'SDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZ2NkgzNFY2QTIsMiwwLDAsMCwzMiw0Wk04LDlINlY3SDhaTTI0LDlIMTBWN0gyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz'@; put 'PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbicpLGguQ2xyU2hhcGVIYXJkRGlzaz0oMCxzLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl'@; put 'ZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTM0LDIxLjA4bC0xLjQtNS42OEgzMC41MWwxLjQ5LDZWMjlINFYyMS40'@; put 'NEw3LjA2LDloMTIuNWwxLjE1LTJINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAs'@; put 'MCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0z'@; put 'NCwyMS4wOCwzMiwxMy4yMWE3LjQ5LDcuNDksMCwwLDEtMiwuMjlsMiw3Ljk0VjI5SDRWMjEuNDRMNy4wNiw5SDIzLjEzYTcuNDUsNy40NSwwLDAsMS0uNTUtMkg3LjA2QTIsMiwwLDAsMCw1LjEzLDguNDdMMiwyMS4wOGExLDEsMCwwLDAsMCwuMjRWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIs'@; put 'MCwwLDAsMi0yVjIxLjMxQTEsMSwwLDAsMCwzNCwyMS4wOFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDIxLjA4LDMwLjg2LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwy'@; put 'LDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaTTQsMjlWMjEuNDRMNy4wNiw5SDI4LjkzTDMyLDIxLjQ0VjI5WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhl'@; put 'aWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjJ2N2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjJabTI4LDVIMjZWMjVoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0z'@; put 'Mi41OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIwLjcxLDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVk'@; put 'IGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy'@; put 'LWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTIsMjJ2N2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjJabTI4LDVIMjZWMjVoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk'@; put 'LXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMjFBNy40Nyw3LjQ3LDAsMCwxLDIyLjU3LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0t'@; put 'YmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuODYsOC40M0EyLDIsMCwwLDAsMjguOTQsN0g3LjA2QTIsMiwwLDAsMCw1LjEzLDguNDdMMi4yOSwy'@; put 'MEgzMy43MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4nKSxoLkNsclNoYXBlQmFja3VwUmVzdG9yZT0oMCxz'@; put 'LmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl'@; put 'ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTEzLDkuOTIsMTcs'@; put 'NlYxOWExLDEsMCwxLDAsMiwwVjZsMS40NywxLjQ2LDEtMS43OUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEu'@; put 'NTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDE1VjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs'@; put 'Mi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4'@; put 'LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2Vk'@; put 'IiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMTlhMSwxLDAsMSwwLDIsMFY2bDQsMy45NWExLDEsMCwwLDAsLjcxLjI5bC4xMSwwYTcuNDYsNy40NiwwLDAsMS0xLjI1LTMuNTJMMTgsMi4x'@; put 'NiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1QTcuNDYsNy40NiwwLDAs'@; put 'MSwyNS41MSwxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJh'@; put 'MiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3LDEzLjQ1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5c'@; put 'biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIy'@; put 'NiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2'@; put 'LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzAuODQsMTMuMzdBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDIxdjJoNy45NUMzMCwxNi45NCwzMS43MiwyMS42'@; put 'NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDE1VjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODQs'@; put 'MTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOGExLDEsMCwxLDAsMiwwVjZsMS40NywxLjQ2LDEtMS43OUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zMS41OCwxNS40SDIyLjIzQTMuNjIsMy42MiwwLDAsMSwyMSwxNS4xNlYxOGEzLDMsMCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYs'@; put 'MTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDMzLjkzQzMzLjc5LDIxLjQ5LDMzLjI4LDIwLjA3LDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYu'@; put 'ODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt'@; put 'aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJN'@; put 'MTMsOS45MiwxNyw2VjE4YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVhMSwxLDAsMCwwLC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIuMTYsMTEuNjEsOC41QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk'@; put 'LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1QTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwy'@; put 'LjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMsMzMuMTUsMTkuNywzMC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYi'@; put 'IHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s'@; put 'aWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAuODQsMTMuMzdBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDIxdjZhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgzMy45M0MzMy43NywyMS40Mywz'@; put 'My4xNCwxOS42OSwzMC44NCwxMy4zN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDQsMy45NUExLDEsMCwxLDAsMjQuMzgsOC41TDE4LDIuMTYsMTEuNjEsOC41'@; put 'QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuJyksaC5DbHJTaGFwZUJhY2t1cD0oMCxzLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+'@; put 'XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl'@; put 'ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQuNDctNC40NGgtLjIzYTMuNjcsMy42NywwLDAsMS0yLS42MUwxOSwxNlY0YTEsMSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0zMS41OCwxNS40SDI5LjQ2YzEsMi44NSwyLjMxLDYuMzcsMi41NCw3LjA4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIOS41OGEzLDMsMCwwLDEtLjE0LTJINy4w'@; put 'N2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1YzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjIuMzNDMzQsMjIuMTIsMzQsMjIsMzEuNTgsMTUuNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+'@; put 'XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIyNiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4z'@; put 'NUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMwLjg3'@; put 'LDEzLjQ1YTcuNTUsNy41NSwwLDAsMS0uODcuMDUsNy40Niw3LjQ2LDAsMCwxLTMuMzUtLjgsMywzLDAsMCwxLS4yNCwxLjNoMi41NEMzMCwxNi45NCwzMS43MiwyMS42NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0y'@; put 'SDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i'@; put 'YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0i'@; put 'MiIvPjxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiXG4gICAgICAgICAgICAgICAgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45Mywx'@; put 'MkgyNi41NWEzLDMsMCwwLDEtLjE0LDJoMi41NEMzMCwxNi45NCwzMS43MiwyMS42NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIu'@; put 'MzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODQsMTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwx'@; put 'LDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNi41OCwyMS4yNiwxMC4y'@; put 'LDE0LjkxQTMsMywwLDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxl'@; put 'cnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOC42NiwyMkgzMy45M2Mt'@; put 'LjE1LS41MS0uNjUtMS45My0yLjM1LTYuNkgyNS4zbC01Ljg5LDUuODZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiBkPSJNMTgsMTkuODRsNC40Ny00LjQ0aC0uMjNhMy42NCwzLjY0LDAsMCwx'@; put 'LTItLjYxTDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4x'@; put 'NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs'@; put 'ci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTYuNTgsMjEuMjYsMTAuMiwxNC45MUEzLDMsMCwwLDEsOS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz'@; put 'PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNEgyNlYyNmg0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt'@; put 'c29saWQtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xOC42NiwyMkgzMy45M2MtLjE3LS41Ny0uNzktMi4zLTMuMDYtOC41NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uODYsMi4yMWwtNi4zOCw2LjM1WiIvPlxuICAgICAgICAgICAgPGNp'@; put 'cmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDE5Ljg0'@; put 'bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOS40MSwyMS4yNmwtLjc0'@; put 'Ljc0SDMzLjkzYy0uMTctLjU3LS43OS0yLjMxLTMuMDktOC42M0ExLjk0LDEuOTQsMCwwLDAsMjguOTMsMTJIMjYuNTVhMywzLDAsMCwxLS43NiwyLjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE2LjU4LDIxLjI2'@; put 'LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMiwy'@; put 'NHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNEgyNlYyNmg0WiIvPlxuJyksaC5DbHJTaGFwZURldmljZXM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxM0gyNGEyLDIsMCww'@; put 'LDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjE1QTIsMiwwLDAsMCwzMiwxM1ptMCwyVjI2SDI0VjE1Wk0yNCwzMFYyNy42aDhWMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIwLDIy'@; put 'SDRWNkgyOHY1aDJWNmEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsNlYyMmEyLDIsMCwwLDAsMiwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMCwyNkg5YTEsMSwwLDAsMCwwLDJIMjBaIi8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyOEgyNFYxNVoiLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOCw0SDRBMiwyLDAsMCwwLDIsNlYyMmEyLDIsMCwwLDAsMiwyaDh2Mkg5LjMyQTEuMiwxLjIsMCwwLDAsOCwyN2ExLjIsMS4yLDAsMCwwLDEuMzIsMUgxOS45MnYtLjM3SDIwVjIySDRWNkgyOHY1aDJW'@; put 'NkEyLDIsMCwwLDAsMjgsNFoiLz5cbicpLGguQ2xyU2hhcGVLZXlib2FyZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCww'@; put 'LDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCwxOEg0VjEwSDMyWiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTEiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTUiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0'@; put 'PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMTkiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'NiIgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iNyIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiB4PSIxMSIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9'@; put 'IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iMTUiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MTEiIHg9IjE5IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMyIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIgeD0iMjciIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIHg9IjI3IiB5PSIyMiIgd2lkdGg9IjEuOTQi'@; put 'IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiB4PSI3IiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTE2IiB4PSIxMS4xMyIgeT0iMjIiIHdpZHRoPSIxMy43NSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCww'@; put 'LDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk0xOSwxM2gydjJIMTlabTAsNGgydjJIMTlabS00LTRoMnYySDE1Wm0wLDRoMnYySDE1Wm0tNC00aDJ2MkgxMVpNOSwyNEg3VjIySDlabTAtNUg3VjE3SDlabTAtNEg3VjEzSDlabTIsMmgydjJIMTFabTEzLjg4LDdIMTEuMTNWMjJIMjQuODhaTTI1'@; put 'LDE5SDIzVjE3aDJabTAtNEgyM1YxM2gyWm0zLjk0LDlIMjdWMjJoMS45NFpNMjksMTlIMjdWMTdoMlptMC00SDI3VjEzaDJaIi8+XG4nKSxoLkNsclNoYXBlTW91c2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9'@; put 'Ik0xOCwzNEExMCwxMCwwLDAsMSw4LDI0VjEyYTEwLDEwLDAsMCwxLDIwLDBWMjRBMTAsMTAsMCwwLDEsMTgsMzRaTTE4LDRhOCw4LDAsMCwwLTgsOFYyNGE4LDgsMCwwLDAsMTYsMFYxMkE4LDgsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTVhMSwxLDAsMCwxLTEtMVYxMGExLDEsMCwwLDEsMiwwdjRBMSwxLDAsMCwxLDE4LDE1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTAsMTAsMCwwLDAs'@; put 'OCwxMlYyNGExMCwxMCwwLDAsMCwyMCwwVjEyQTEwLDEwLDAsMCwwLDE4LDJabTEuMywxMS40NGExLjMsMS4zLDAsMCwxLTIuNiwwVjEwYTEuMywxLjMsMCwwLDEsMi42LDBaIi8+XG4nKSxoLkNsclNoYXBlRGFzaGJvYXJkPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUuMTgsMTIuMzJsLTUuOTEsNS44MWEzLDMsMCwxLDAsMS40MSwxLjQybDUuOTItNS44MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDQu'@; put 'MjVBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVBMTYuNDksMTYuNDksMCwwLDAsMTgsNC4yNVptMTEuMzQsMjUuNUg2LjY2YTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUs'@; put 'MS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAsMSwxNyw2LjI5djMuNWgyVjYuM2ExNC40NywxNC40NywwLDAsMSwxMy40LDEzLjYxSDI4LjkydjJoMy41M0ExNC40MywxNC40MywwLDAsMSwyOS4zNCwyOS43NVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNS44NSwxOC42OWEzLDMsMCwxLDAsNC44My44NWw1LjkyLTUuODEtMS40MS0xLjQxLTUuOTEsNS44MUEzLDMsMCwwLDAsMTUuODUsMTguNjlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuNTgsMTNhNy40NSw3LjQ1LDAsMCwxLTIuMDYuNDQsMTQuNCwxNC40LDAsMCwxLDEuOTMsNi40M0gyOC45MnYyaDMuNTNhMTQuNDMsMTQuNDMsMCwwLDEtMy4xMSw3Ljg0SDYuNjZh'@; put 'MTQuNDMsMTQuNDMsMCwwLDEtMy4xMS03Ljg0SDd2LTJIMy41NUExNC40MSwxNC40MSwwLDAsMSw3LDExLjI5bDIuNDUsMi40NSwxLjQxLTEuNDFMOC40Myw5Ljg3QTE0LjQxLDE0LjQxLDAsMCwxLDE3LDYuMjl2My41aDJWNi4zQTE0LjQxLDE0LjQxLDAsMCwxLDIyLjU4LDdhNy41Miw3LjUy'@; put 'LDAsMCwxLS4wOC0xLDcuNTIsNy41MiwwLDAsMSwuMDktMS4wOUExNi40OSwxNi40OSwwLDAsMCw1LjQsMzEuNGwuMy4zNUgzMC4zbC4zLS4zNWExNi40NSwxNi40NSwwLDAsMCwyLTE4LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl'@; put 'ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDQuMjVBMTYuNDksMTYuNDksMCwwLDAsNS40LDMx'@; put 'LjRsLjMuMzVIMzAuM2wuMy0uMzVBMTYuNDksMTYuNDksMCwwLDAsMTgsNC4yNVptOC42LDkuNDgtNS45Miw1LjgxYTMsMywwLDEsMS0xLjQxLTEuNDJsNS45MS01LjgxWm0tMjMsNi4xN0g3djJIMy41NmMwLS4zOS0uMDUtLjc3LS4wNS0xLjE3UzMuNTMsMjAuMTgsMy41NSwxOS45Wm00Ljg4'@; put 'LTEwLDIuNDYsMi40Nkw5LjQ3LDEzLjc0LDcsMTEuMjlBMTQuNTcsMTQuNTcsMCwwLDEsOC40Myw5Ljg3Wk0xOSw5Ljc5SDE3VjYuMjljLjMyLDAsLjYzLDAsMSwwcy43LDAsMSwuMDVaTTMyLjQ5LDIwLjc0YzAsLjM5LDAsLjc5LS4wNSwxLjE3SDI4Ljkydi0yaDMuNTNDMzIuNDcsMjAuMTgs'@; put 'MzIuNDksMjAuNDYsMzIuNDksMjAuNzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMi41OCwxM2E3LjQ2LDcuNDYsMCwwLDEtMTAtOC4xMkExNi40OSwxNi40OSwwLDAsMCw1LjQs'@; put 'MzEuNGwuMy4zNUgzMC4zbC4zLS4zNWExNi40NSwxNi40NSwwLDAsMCwyLTE4LjM2Wk0xNyw2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1djMuNUgxN1pNNywyMS45MUgzLjU2YzAtLjM5LS4wNS0uNzctLjA1LTEuMTdzMC0uNTYsMC0uODNIN1ptMi41MS04LjE2TDcsMTEuMjlBMTQu'@; put 'NTcsMTQuNTcsMCwwLDEsOC40Myw5Ljg3bDIuNDYsMi40NlptMTAuNjIsOS4xOWEzLDMsMCwxLDEtLjgyLTQuODFsNS45MS01LjgxLDEuNDEsMS40MS01LjkyLDUuODFBMywzLDAsMCwxLDIwLjA5LDIyLjkzWm0xMi4zNS0xSDI4Ljkydi0yaDMuNTNjMCwuMjgsMCwuNTUsMCwuODNTMzIuNDcs'@; put 'MjEuNTIsMzIuNDQsMjEuOTFaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuJyksaC5DbHJTaGFwZUhvc3Q9KDAscy5jbHJJ'@; put 'Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyNC4zYTIuNDgsMi40OCwwLDEsMCwyLjQ4LDIuNDdBMi40OCwyLjQ4LDAsMCwwLDE4LDI0LjNabTAsMy42YTEuMTMsMS4xMywwLDEsMSwxLjEzLTEuMTJBMS4xMywxLjEzLDAs'@; put 'MCwxLDE4LDI3LjlaIi8+PHJlY3QgeD0iMTMuNSIgeT0iMjAuNyIgd2lkdGg9IjkiIGhlaWdodD0iMS40NCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjUsMy42SDEwLjM1QTEuMzUsMS4zNSwwLDAs'@; put 'MCw5LDQuOTVWMzIuNEgyN1Y0Ljk1QTEuMzUsMS4zNSwwLDAsMCwyNS42NSwzLjZabS0uNDUsMjdIMTAuOFY1LjRIMjUuMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTIuNiIgeT0iNy4yIiB3aWR0aD0i'@; put 'MTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjYiIHk9IjEwLjgiIHdpZHRoPSIxMC44IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE1LjIsMjcuOGMwLDEuNSwxLjIsMi44LDIuOCwyLjhzMi44LTEuMiwyLjgtMi44UzE5LjUsMjUsMTgsMjVTMTUuMiwyNi4yLDE1LjIsMjcuOHogTTE5LjIsMjcuOGMwLDAuNy0wLjYsMS4y'@; put 'LTEuMiwxLjJzLTEuMi0wLjYtMS4yLTEuMnMwLjYtMS4yLDEuMi0xLjJTMTkuMiwyNy4xLDE5LjIsMjcuOHoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMTMiIHk9IjIxIiB3'@; put 'aWR0aD0iMTAiIGhlaWdodD0iMS42Ii8+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHBvaW50cz0iMjEuMyw2IDEyLDYgMTIsNy42IDIwLjQsNy42Ii8+XG4gICAgICAgICAgICAg'@; put 'ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xMiwxMS42aDYuNmMwLTAuNiwwLjItMS4xLDAuNC0xLjZoLTdWMTEuNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTI2LDE1LjRWMzJIMTBWNGgxMi41bDEuMS0ySDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS40SDI2eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01Ljct'@; put 'OS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE1LjIsMjcuOGMwLDEuNSwxLjIsMi44'@; put 'LDIuOCwyLjhzMi44LTEuMiwyLjgtMi44UzE5LjUsMjUsMTgsMjVTMTUuMiwyNi4yLDE1LjIsMjcuOHogTTE5LjIsMjcuOGMwLDAuNy0wLjYsMS4yLTEuMiwxLjJzLTEuMi0wLjYtMS4yLTEuMnMwLjYtMS4yLDEuMi0xLjJTMTkuMiwyNy4xLDE5LjIsMjcuOHoiLz5cbiAgICAgICAgICAgICAg'@; put 'ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjEzIiB5PSIyMSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTI0LDEwLjVjLTAuMS0wLjItMC4yLTAuMy0wLjMtMC41SDEydjEuNmgxMlYxMC41eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0i'@; put 'TTEyLDZ2MS42aDEwLjdjLTAuMS0wLjUtMC4yLTEuMS0wLjItMS42SDEyeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgZD0iTTI2LDEyLjNWMzJIMTBWNGgxMi44YzAuMi0wLjcsMC41'@; put 'LTEuNCwwLjktMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTMuMkMyNy4zLDEzLDI2LjYsMTIuNywyNiwxMi4zeiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJh'@; put 'ZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LjUsMmgtMTdDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMy41QzI4LDIuNywyNy4zLDIsMjYuNSwyeiBNMTgsMzAuNWMt'@; put 'MS41LDAtMi44LTEuMi0yLjgtMi44UzE2LjUsMjUsMTgsMjVzMi44LDEuMiwyLjgsMi44UzE5LjUsMzAuNSwxOCwzMC41eiBNMjMsMjIuNkgxM1YyMWgxMFYyMi42eiBNMjQsMTEuNkgxMlYxMGgxMlYxMS42eiBNMjQsNy42SDEyVjZoMTJWNy42eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJj'@; put 'bGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMjcuOCIgcj0iMS4yIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIyLjIsMTUuM2Mt'@; put 'MiwwLTMuNy0xLjYtMy43LTMuN0gxMlYxMGg2LjljMC0wLjEsMC4xLTAuMiwwLjEtMC4ybDEuMi0yLjJIMTJWNmg5LjJsMi4zLTRoLTE0QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjE1LjNIMjIuMnogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwx'@; put 'LjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBWMjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIv'@; put 'PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDFsLTUuNyw5LjljLTAuMywwLjYtMC4xLDEuNCwwLjUsMS43YzAuMiwwLjEsMC40LDAuMiwwLjYsMC4yaDEx'@; put 'LjRjMC43LDAsMS4zLTAuNiwxLjMtMS4zYzAtMC4yLTAuMS0wLjQtMC4yLTAuNkwyOS4xLDFjLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC43LDI3LDAuOCwyNi45LDF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNCwxMC4zdjEuMkgxMlYxMGgxMS44Yy0wLjUtMC43LTAuOC0xLjUtMS0yLjRIMTJWNmgxMC41YzAsMCwwLTAuMSwwLTAuMWMwLTEuNCwwLjQtMi43LDEuMS0zLjlIOS41QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjFDMjYuNCwxMi42LDI1LDEx'@; put 'LjcsMjQsMTAuM3ogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXpNMjMsMjIuNkgxM1YyMWgxMFYyMi42eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1i'@; put 'YWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9'@; put 'IjUuOSIgcj0iNSIvPlxuJyksaC5DbHJTaGFwZVN0b3JhZ2U9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMyw2LjY5aDBjLS4xOC0zLjQxLTkuNDctNC4zMy0xNS00LjMzUzMsMy4yOSwzLDYuNzhWMjkuMzdj'@; put 'MCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjYuNzhzMCwwLDAsMFMzMyw2LjcsMzMsNi42OVptLTIsNy41NmMtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUuMzR2Mi4wOEE0My4zMiw0My4zMiwwLDAsMCwxOCwxOC43YzQsMCw5'@; put 'LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1YTQzLjMyLDQzLjMyLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUuODYtNS4wOCwyLjQ1LTEzLDIuNDVTNS4zLDMwLjIsNSwyOS4zN1Y2'@; put 'LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmM3Ljc3LDAsMTIuNDYsMS41MywxMywyLjM3LS41Mi44Ny01LjIxLDIuMzktMTMsMi4zOUEzNy42LDM3LjYsMCwwLDEsNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yN2M0LDAsOS45My0uNDgsMTMtMloiLz5cbiAgICAgICAgICAg'@; put 'ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LjUxLDkuMDksMTgsOS4xMUEzNy42LDM3LjYsMCwwLDEsNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yN2guNjFBMy42NiwzLjY2LDAs'@; put 'MCwxLDE5LDkuODlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yOC44MywxNS40QTM4LjM3LDM4LjM3LDAsMCwxLDE4LDE2LjcsMzcuNDUsMzcuNDUsMCwwLDEsNywxNS4z'@; put 'NHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xN2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0uNDgsMTMtMnY1LjFjLS4zNS44'@; put 'Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3VjYuODJDNS4zLDYsMTAsNC4zNiwxOCw0LjM2YzEuNSwwLDIuODkuMDYsNC4xNS4xNmwxLjEtMS45Yy0xLjg2LS4xOC0zLjctLjI2LTUuMjUtLjI2LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4zN2MwLDMuNDksOS40Myw0LjQz'@; put 'LDE1LDQuNDNzMTUtLjkzLDE1LTQuNDN2LTE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww'@; put 'LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2Vk'@; put 'IiBkPSJNNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yNyw1NC44Miw1NC44MiwwLDAsMCw2LjItLjM2LDcuNSw3LjUsMCwwLDEtMS4xMy0xLjg4Yy0xLjUuMTUtMy4yLjI0LTUuMDcuMjRBMzcuNiwzNy42LDAsMCwxLDcsNy43NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0'@; put 'aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMSwxMy40M3YuODJjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzMsNDMuMzMsMCwwLDAsMTgsMTguN2M0LDAs'@; put 'OS45My0uNDgsMTMtMnY1LjE3Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMyw0My4zMywwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdW'@; put 'Ni44MkM1LjMsNiwxMCw0LjM2LDE4LDQuMzZjMS43LDAsMy4yNS4wOCw0LjY0LjJhNy40NCw3LjQ0LDAsMCwxLC42Ny0xLjk0Yy0xLjg4LS4xOC0zLjc1LS4yNi01LjMxLS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00'@; put 'LjQzVjEyLjg3QTcuNDUsNy40NSwwLDAsMSwzMSwxMy40M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAg'@; put 'ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNy45MSwxOC4yOGM4LjA4LDAsMTQuNjYtMS43NCwxNS4wOS0zLjk0VjguNTljLS40MywyLjItNywzLjk0LTE1LjA5LDMuOTRBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTFWOWEzOS40LDM5'@; put 'LjQsMCwwLDAsMTEuNjYsMS41MUMyNiwxMC41MywzMi41Miw4Ljc5LDMzLDYuNjFoMEMzMi44LDMuMiwyMy41MiwyLjI4LDE4LDIuMjhTMywzLjIxLDMsNi43MVYyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcu'@; put 'OTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yQTM5LjQsMzkuNCwwLDAs'@; put 'MCwxNy45MSwxOC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTcuOTEsMjAuMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTguNzd2LTJhMzkuNCwzOS40LDAsMCwwLDExLjY2'@; put 'LDEuNTFjNi45LDAsMTIuNy0xLjI3LDE0LjUxLTNIMjIuMjNhMy42NywzLjY3LDAsMCwxLTMuNTUtMi43NWgtLjc3QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEuNTFoLjgyQTMuNjQsMy42NCwwLDAsMSwxOSw5Ljc1bDQuMTctNy4yMmMtMS44NS0u'@; put 'MTgtMy42OC0uMjUtNS4yMS0uMjUtNS41NywwLTE1LC45My0xNSw0LjQzVjI5LjI5YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1YyNC4wOUMzMi41NywyNi4yOCwyNiwyOCwxNy45MSwyOEEzOS40LDM5LjQsMCwwLDEsNi4yNSwyNi41MnYtMkEzOS40LDM5LjQsMCww'@; put 'LDAsMTcuOTEsMjZDMjYsMjYsMzIuNTcsMjQuMjgsMzMsMjIuMDlWMTYuMzRDMzIuNTcsMTguNTMsMjYsMjAuMjgsMTcuOTEsMjAuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHIt'@; put 'aS1hbGVydCIgZD0iTTI2Ljg1LDFsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDFBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk'@; put 'LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNy45MSwxOC4yOGM4LjA4LDAsMTQuNjYtMS43NCwxNS4wOS0zLjk0di0xLjZhNy40Nyw3LjQ3LDAsMCwxLTcuMzgtLjgsNDguMyw0OC4zLDAsMCwxLTcuNzEuNTlBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTFWOWEzOS40'@; put 'LDM5LjQsMCwwLDAsMTEuNjYsMS41MSw1MSw1MSwwLDAsMCw2LS4zNCw3LjQ2LDcuNDYsMCwwLDEtLjU5LTcuNjVjLTEuODctLjE4LTMuNzMtLjI2LTUuMjgtLjI2LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQu'@; put 'MDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1'@; put 'LDE4Ljc3di0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwxOC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1Ljg2IiByPSI1Ii8+XG4nKSxo'@; put 'LkNsclNoYXBlQ2x1c3Rlcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMzYsOEgyNy41djJIMzFWMzBIMjcuNXYySDMzVjkuNjdBMS42NSwxLjY1LDAsMCwwLDMxLjM2LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTUsMTBIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3VjMySDguNVYzMEg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz48ZWxsaXBzZSBjeD0iMTguMDEiIGN5PSIyNS45OSIgcng9IjEuOCIgcnk9IjEuNzkiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzIsNEgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlY1LjY4QTEuNjgsMS42OCwwLDAsMCwyNC4zMiw0Wk0yNCwzMEgxMlY2SDI0WiIgY2xhc3M9ImNsci1pLW91'@; put 'dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzLjUiIHk9IjkuMjEiIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDgu'@; put 'NVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDkuODlsLjM5LS42OEgxMy41djEuNmg1LjE3QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCwzMEgxMlY2aDkuMjlsMS4xNS0ySDExLjY4QTEuNjgsMS42OCwwLDAsMCwxMCw1LjY4VjMySDI2VjE1LjRIMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40IDMxIDMwIDI3LjUgMzAgMjcuNSAzMiAzMyAzMiAzMyAxNS40IDMxIDE1LjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVk'@; put 'Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTBIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3VjMySDguNVYzMEg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzLjUiIHk9'@; put 'IjkuMjEiIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMTAuNDlWMzBIMTJWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMS42OEEx'@; put 'LjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxMi4zNEE3LjUzLDcuNTMsMCwwLDEsMjQsMTAuNDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwxMy40M1YzMEgyNy41djJI'@; put 'MzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjM2LDhIMjcuNVYzMkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAg'@; put 'ICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzIsNEgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42'@; put 'OFYzMkgyNlY1LjY4QTEuNjgsMS42OCwwLDAsMCwyNC4zMiw0Wk0xOCwyNy43OUExLjc5LDEuNzksMCwxLDEsMTkuODEsMjYsMS44LDEuOCwwLDAsMSwxOCwyNy43OVpNMjMsMTAuNkgxM1Y5SDIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAg'@; put 'ICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy41IiB5PSIxNS40IiB3aWR0aD0iNS41'@; put 'IiBoZWlnaHQ9IjE2LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjMxLTNIMTNWOWg2LjU2bDIuODktNUgxMS42OEExLjY4LDEuNjgsMCww'@; put 'LDAsMTAsNS42OFYzMkgyNlYxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVy'@; put 'dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQt'@; put 'LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMyw5LjY3VjMySDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt'@; put 'MS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2Wk0xOCwyNy43OUExLjc5LDEuNzksMCwxLDEsMTkuODEsMjYs'@; put 'MS44LDEuOCwwLDAsMSwxOCwyNy43OVpNMjMsMTAuNkgxM1Y5SDIzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjUtLjQ0VjMySDMzVjEyLjg3'@; put 'QTcuNDcsNy40NywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt'@; put 'cGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUFwcGxpY2F0aW9ucz0oMCxzLmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjggOCA0IDggNCAxMCAxMCAxMCAxMCA0IDggNCA4IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDggMTUgOCAxNSAxMCAyMSAxMCAyMSA0IDE5IDQgMTkgOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgNCAzMCA4'@; put 'IDI2IDggMjYgMTAgMzIgMTAgMzIgNCAzMCA0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDE5IDE1IDE5IDE1IDIxIDIxIDIxIDIxIDE1IDE5IDE1IDE5IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9p'@; put 'bnRzPSIzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4IDMwIiBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAzMCAxNSAzMCAxNSAzMiAyMSAzMiAyMSAyNiAxOSAyNiAxOSAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgICAg'@; put 'ICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggOCA0IDggNCAxMCAxMCAxMCAxMCA0'@; put 'IDggNCA4IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxu'@; put 'ICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMw'@; put 'IDE5IDI2IDE5IDI2IDIxIDMyIDIxIDMyIDE1IDMwIDE1IDMwIDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4'@; put 'IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAzMCAyNiAzMCAyNiAzMiAzMiAzMiAzMiAyNiAzMCAyNiAzMCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2Vk'@; put 'Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAg'@; put 'MTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDE5IDE1IDE5IDE1IDIxIDIxIDIxIDIxIDE1IDE5IDE1IDE5IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAxNSAzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAg'@; put 'IDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAzMCAxNSAzMCAxNSAz'@; put 'MiAyMSAzMiAyMSAyNiAxOSAyNiAxOSAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOEgxNXYyaDRMMTksOS44OSwyMSw2LjVWNEgxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAg'@; put 'ICAgICAgPHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt'@; put 'c29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBj'@; put 'bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSI0'@; put 'IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTgiLz5cbiAgICAg'@; put 'ICAgICAgIDxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy'@; put 'dGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0'@; put 'IHg9IjQiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAg'@; put 'ICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJj'@; put 'bHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTctLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMGg0TDE5LDkuODksMjEsNi41VjRIMTVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC04LS1hbGVydGVkIi8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg'@; put 'Y2xyLWktc29saWQtcGF0aC05LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAg'@; put 'PHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNv'@; put 'bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAg'@; put 'PHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWkt'@; put 'c29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAg'@; put 'ICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJh'@; put 'ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTktLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxoLkNsclNoYXBlQnVpbGRpbmc9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAs'@; put 'MCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2VjUuMTJBLjEyLjEyLDAsMCwxLDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4'@; put 'PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAg'@; put 'ICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdl'@; put 'ZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjE4IiB3aWR0aD0iMiIgaGVp'@; put 'Z2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMTAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIy'@; put 'MyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk'@; put 'Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1iYWRnZWQiLz5cbiAgICAgICAgICAg'@; put 'IDxyZWN0IHg9IjI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE3LS1iYWRn'@; put 'ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIg'@; put 'aGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzFIMjN2MkgzM1YxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIxLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAg'@; put 'ICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'My0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdp'@; put 'ZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxy'@; put 'ZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0'@; put 'ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMjMiIHdpZHRoPSIy'@; put 'IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVj'@; put 'dCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwzMUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMlY4LjI0bDItMy40MUEyLjEyLDIu'@; put 'MTIsMCwwLDAsMTkuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIMjJWMTUuMzhhMy42OCwzLjY4LDAsMCwxLTItLjc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE3LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdv'@; put 'biBwb2ludHM9IjMxIDE1LjQgMzEgMzEgMjMgMzEgMjMgMzMgMzMgMzMgMzMgMTUuNCAzMSAxNS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTgtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDEx'@; put 'QTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xOS0tYWxlcnRlZCBjbHItaS1h'@; put 'bGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjJWMzNIMzNWMTBBMiwyLDAsMCwwLDMxLDhaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm0wLTVIMjRWMTNoMlptNCwxMEgyOFYyM2gyWm0wLTVIMjhWMThoMlptMC01SDI4VjEzaDJaIiBjbGFzcz0iY2xyLWktc29saWQg'@; put 'Y2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVptMC01'@; put 'SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVYxNC42NGEzLjY3LDMuNjcsMCwwLDEtMS00Ljc2bDEtMS42NVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVpt'@; put 'MC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1h'@; put 'bGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNGwtLjIzLDBWMzNIMzNWMTUuNFpNMjYsMjVIMjRWMjNoMlptMC01SDI0VjE4aDJabTQsNUgyOFYyM2gyWm0wLTVIMjhWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIt'@; put 'LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1z'@; put 'b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0g5VjMwaDZ2M2g1VjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE3Ljg4LDNaTTksMjVI'@; put 'N1YyM0g5Wm0wLTVIN1YxOEg5Wm0wLTVIN1YxM0g5Wm0wLTVIN1Y4SDlabTQsMTVIMTFWMjNoMlptMC01SDExVjE4aDJabTAtNUgxMVYxM2gyWm0wLTVIMTFWOGgyWm00LDE1SDE1VjIzaDJabTAtNUgxNVYxOGgyWm0wLTVIMTVWMTNoMlptMC01SDE1VjhoMloiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNVYxNUgyOFYxMy4yMkE3LjUsNy41LDAsMCwxLDIyLjc4LDhIMjJWMzNIMzNWMTIuODdBNy40Nyw3LjQ3LDAsMCwxLDMwLDEzLjVaTTI2LDI1SDI0VjIzaDJabTAtNUgy'@; put 'NFYxOGgyWm0wLTVIMjRWMTNoMlptNCwxMEgyOFYyM2gyWm0wLTVIMjhWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsOEgyM3YyaDhWMzFIMjN2MkgzM1YxMEEyLDIsMCwwLDAsMzEsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMTkuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIMjJWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTkuODgsM1pNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCwwLDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJaIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEy'@; put 'IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC01Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9'@; put 'IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MTAiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYi'@; put 'IHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTE1Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTciLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE4Ii8+XG4gICAgICAgICAgICA8cmVjdCB4'@; put 'PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMjAiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUNQVT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuMDgsMjMuMDdoLTExdjEuNUgyMy44M2EuNzUuNzUsMCwwLDAsLjc1LS43NVYxMS4zM2gtMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4LjE1YS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSww'@; put 'LTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4x'@; put 'LDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40Wk0yOCwyNy45YS4xLjEs'@; put 'MCwwLDEtLjEuMUg4LjFhLjEuMSwwLDAsMS0uMS0uMVY4LjFBLjEuMSwwLDAsMSw4LjEsOEgyNy45YS4xLjEsMCwwLDEsLjEuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1'@; put 'Ljc1LDAsMCwwLC43NS0uNzVWMTEuMzNoLTEuNVYyMy4wN2gtMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZI'@; put 'MzBWMTMuNWE3LjQ5LDcuNDksMCwwLDEtMi0uMjhWMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCww'@; put 'LDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAs'@; put 'MS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1'@; put 'SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWMTUuNEgyOFYyNy45YS4xLjEsMCwwLDEtLjEuMUg4LjFhLjEuMSwwLDAsMS0uMS0uMVY4LjFBLjEuMSwwLDAsMSw4LjEsOGgxMmwxLjE1LTJIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEu'@; put 'NiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYz'@; put 'MGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt'@; put 'LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4wNiwyNC41N0gyMy44M2EuNzUuNzUsMCwwLDAsLjc1LS43NVYxNS40aC0xLjV2Ny42N2gtMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjE1LjRIMjV2OC40MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTUuNGgtLjc3QTMu'@; put 'NjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2'@; put 'djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45'@; put 'VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEu'@; put 'MjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMu'@; put 'NTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYxMy41YTcuNDYsNy40NiwwLDAsMS01LTEuOTJWMjMuODFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjExaDEuNDJBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRW'@; put 'My44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEu'@; put 'OC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z'@; put 'b2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMTgu'@; put 'MTVhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjguMUEyLjEsMi4xLDAsMCwwLDI3LjksNkgyNi4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4x'@; put 'QTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4y'@; put 'YS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRaTTI1LDIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgyWiIgY2xhc3M9'@; put 'ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAnKSxoLkNsclNoYXBlTWVtb3J5PSgwLHMuY2xySWNvblNWRykoJzxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv'@; put 'PlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjQiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTMyLDdINEEyLDIsMCwwLDAsMiw5djRINFY5SDMydjRoMlY5QTIsMiwwLDAsMCwzMiw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwyN0gxOXYySDMyYTIsMiwwLDAsMCwyLTJW'@; put 'MTdIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVk'@; put 'Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBk'@; put 'PSJNMzIsMTdWMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIMTZ2OGg0'@; put 'VjE0LjY0QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNCIgeT0iMTUuNCIgd2lkdGg9IjQiIGhlaWdodD0iNC42IiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsOUgxOS41NmwxLjE1LTJINEEyLDIsMCwwLDAsMiw5djRINFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02'@; put 'LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt'@; put 'LWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdh'@; put 'MiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdWMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3WiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJBNy40Niw3LjQ2LDAsMCwxLDI1LjUxLDEySDI0djhoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsOUgyMy4xM2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINEEyLDIsMCwwLDAsMiw5djRINFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAg'@; put 'ICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxM1Y5YTIsMiwwLDAsMC0yLTJINEEyLDIsMCwwLDAsMiw5'@; put 'djRINHY0SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NUgxOVYyOUgzMmEyLDIsMCwwLDAsMi0yVjE3SDMyVjEzWk0xMiwyMEg4VjEyaDRabTgsMEgxNlYxMmg0Wm04LDBIMjRWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGQ9Ik0zMiwxN1YxNS4wN0gyOFYyMEgyNFYxNS4wN0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMjAsMTQuMzFWMjBIMTZWMTJoMi42MUEzLjY4LDMuNjgsMCwwLDEsMTksOS41NUwyMC41Miw3SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUu'@; put 'NTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LjhsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4x'@; put 'LDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LjhBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LjhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN'@; put 'MzIsMTdWMTMuMjJhNy4zMyw3LjMzLDAsMCwxLTQsMFYyMEgyNFYxMmgxLjUxYTcuNDgsNy40OCwwLDAsMS0yLjk0LTVINEEyLDIsMCwwLDAsMiw5djRINHY0SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NUgxOVYyOUgzMmEyLDIsMCwwLDAsMi0yVjE3Wk0xMiwyMEg4VjEyaDRabTgs'@; put 'MEgxNlYxMmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQg'@; put 'Y2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZURhdGFDbHVzdGVyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41LDQuMDhDMjIuNzcsNC4wOCwxOSw1LjQsMTksNy45MVY5LjVhMTguNzUsMTguNzUsMCwwLDEsMiwuMlY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUt'@; put 'MS44NFMzMiw3LjI3LDMyLDcuOTFWMTguMjRjMCwuNTQtMS40NiwxLjQ0LTMuOSwxLjczdjJjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVY3LjkxQzM0LDUuNCwzMC4yMyw0LjA4LDI2LjUsNC4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAg'@; put 'ICAgICAgICA8cGF0aCBkPSJNNCwxOC4yNFY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUtMS44NFMxNSw3LjI3LDE1LDcuOTFWOS43YTE4Ljc1LDE4Ljc1LDAsMCwxLDItLjJWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42'@; put 'Nyw3LjksMjJWMjBDNS40NiwxOS42OCw0LDE4Ljc4LDQsMTguMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQu'@; put 'MzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMTUuMjNDMjYuNjUsMTIuNzMsMjIuOTMsMTAuODUsMTgsMTAuODVabTYuNjUsNy42N2MtLjg1LDEtMy40MiwyLTYuNjUsMkExNC40OSwxNC40OSwwLDAsMSwxNCwyMHYxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEy'@; put 'Ljc2LDAsMCwwLDYuNjUtMS41NnYzLjEyYy0uODUsMS0zLjQyLDItNi42NSwyYTE0LjQ5LDE0LjQ5LDAsMCwxLTQtLjUzdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djIuMjljMCwuOTUtMi42NSwyLjM4LTYuNjUsMi4zOHMtNi42NS0x'@; put 'LjQzLTYuNjUtMi4zOFYxNS4yM2MwLS45NSwyLjY1LTIuMzgsNi42NS0yLjM4czYuNjUsMS40Myw2LjY1LDIuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQs'@; put 'NS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC42NSwxOC41MmMtLjg1LDEtMy40MiwyLTYuNjUsMkExNC40OSwxNC40OSwwLDAsMSwxNCwyMHYxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3'@; put 'LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYzLjEyYy0uODUsMS0zLjQyLDItNi42NSwyYTE0LjQ5LDE0LjQ5LDAsMCwxLTQtLjUzdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djIuMjljMCwuOTUtMi42NSwyLjM4LTYuNjUsMi4z'@; put 'OHMtNi42NS0xLjQzLTYuNjUtMi4zOFYxNS4yM2MwLS45NSwyLjY1LTIuMzgsNi42NS0yLjM4bC43NSwwYTMuNjksMy42OSwwLDAsMS0uMDgtMmwtLjY2LDBjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUt'@; put 'NC4zOFYxNS40aC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0LjhjLTEuNzUuNjMtMywxLjY4LTMsMy4xMlY5LjVsLjI1LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2Mi44NGMwLC41NC0xLjQ2LDEuNDQtMy45LDEuNzN2MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUt'@; put 'LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCww'@; put 'LDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwxOC4yNFY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUtMS44NFMxNSw3LjI3LDE1LDcu'@; put 'OTFWOS43YTE4Ljc1LDE4Ljc1LDAsMCwxLDItLjJWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJWMjBDNS40NiwxOS42OCw0LDE4Ljc4LDQsMTguMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIy'@; put 'LjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwx'@; put 'NC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEu'@; put 'NDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNy45MWMwLS4zMy41NS0uOCwxLjU0LTEuMTgsMC0uMjQsMC0uNDgsMC0uNzNhNy41Miw3LjUyLDAsMCwxLC4x'@; put 'NC0xLjQxQzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS41YTE4Ljc1LDE4Ljc1LDAsMCwxLDIsLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnY1YzAsLjU0LTEu'@; put 'NDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzV2LTUuOUE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMw'@; put 'IiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcuOTFWOS40OGM1LjMuMjYsOSwyLjYs'@; put 'OSw1Ljc2djYuN2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVY3LjkxQzM0LDUuNCwzMC4yMyw0LjA4LDI2LjUsNC4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNyw5LjQ4VjcuOTFjMC0yLjUyLTMu'@; put 'NzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyTDgsMjEuOTN2LTYuN0M4LDEyLjA4LDExLjcsOS43NCwxNyw5LjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0i'@; put 'TTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2'@; put 'LDEuMTdjNC4yMSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwyMS43MiwyMywxOCwyM2ExNi43NywxNi43NywwLDAsMS02LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45Mywx'@; put 'MC44NSwxOCwxMC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNyw5LjQ4VjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyTDgs'@; put 'MjEuOTN2LTYuN0M4LDEyLjA4LDExLjcsOS43NCwxNyw5LjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDEzLjU2YTMuNjgsMy42OCwwLDAsMS0uMzktMi43bC0uNjYsMGMtNC45'@; put 'MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAsMCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3'@; put 'LjY1LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaIiBj'@; put 'bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0xLjc1LjYzLTMsMS42OC0zLDMuMTJWOS40OGwuMjcsMFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w'@; put 'YXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDI4djYuNTNsLjA1LjA2YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAg'@; put 'ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy'@; put 'LWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4w'@; put 'OCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1'@; put 'LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAsMSwxOCwyOGExNi43NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjIzLDguNjMtMy4yM1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2'@; put 'Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMTEsOC42My0zLjExVjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1i'@; put 'YWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUyLDAsMCwxLC4xNC0xLjRDMjAuNTUsNS4xOSwxOSw2LjMsMTksNy45MVY5LjQ4YTE1LjMzLDE1LjMzLDAsMCwxLDUsMUE3LjQ2LDcuNDYsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn'@; put 'ZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy40OUE3LjQ3LDcuNDcsMCwwLDEsMjcuMzUsMTNhNCw0LDAsMCwxLC43LDIuMjN2Ni43bC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjEyLjMzQTcuNDYsNy40NiwwLDAs'@; put 'MSwzMCwxMy40OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjUuOTkiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFk'@; put 'Z2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVSZXNvdXJjZVBvb2w9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjY4LDE1LjRIMzEuNzNhMTQsMTQsMCwwLDEsLjIyLDEuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuMDksNC42MmwxLTEuNzZB'@; put 'MTYsMTYsMCwxLDAsMzQsMThhMTYsMTYsMCwwLDAtLjIzLTIuNjFaTTE4LDMyYTEzLjkxLDEzLjkxLDAsMCwxLTguMTYtMi42NUwxOC40MywxOUgzMS45NUExNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy'@; put 'dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNCwxOGExNCwxNCwwLDAsMSwyNy45NS0xSDE3LjQ5TDguMywyOC4wN0ExNCwx'@; put 'NCwwLDAsMSw0LDE4Wk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjIsMTMuNGExMy45'@; put 'MSwxMy45MSwwLDAsMSwuNzUsMy42SDE3LjQ5TDguMywyOC4wN0ExNCwxNCwwLDAsMSwyMi42MSw0LjhhNy40Myw3LjQzLDAsMCwxLC41OC0xLjkyLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQzLDcuNDMsMCwwLDEsMzEuMiwxMy40Wk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04'@; put 'LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTMzLjk1LDE3QTE2LDE2LDAsMSwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjU3LDMwLjlBMTYsMTYsMCwwLDAsMzMuOTUsMTlIMTguNDNaIiBjbGFzcz0i'@; put 'Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE1LjkxLDE1LjkxLDAsMCwwLS44NC00LjE4LDcuNDksNy40OSwwLDAsMS05LjkyLTkuOTRBMTYsMTYsMCwwLDAsNywyOS42TDE3LjQ5LDE3WiIg'@; put 'Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2Ui'@; put 'Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjU3LDMwLjlBMTYsMTYsMCwwLDAsMzMuOTUsMTlIMTguNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTUsMTdhMTYsMTYsMCww'@; put 'LDAtLjE4LTEuNjFIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsNC4wNi03QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44'@; put 'NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0'@; put 'ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZVNoaWVsZENoZWNrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4yNSw3LjRhNDMuNzksNDMuNzksMCwwLDEtNi42Mi0yLjM1LDQ1LDQ1LDAsMCwxLTYuMDgtMy4yMUwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAs'@; put 'MS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVY3LjU5Wk0zMCwxNS45M2MwLDExLTEwLDE1LjYxLTEyLDE2LjQzLTIt'@; put 'LjgyLTEyLTUuNDQtMTItMTYuNDNWOS4xNGE0Ny41NCw0Ny41NCwwLDAsMCw2LjE4LTIuMjUsNDguMjMsNDguMjMsMCwwLDAsNS44Mi0zLDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODIsM0E0Ny41NCw0Ny41NCwwLDAsMCwzMCw5LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44OCwxNi44N2ExLDEsMCwwLDAtMS40MSwxLjQxbDYsNkwyNi40LDEzLjc3QTEsMSwwLDAsMCwyNSwxMi4zM2wtOS40Nyw5LjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0zMS4yNSw3LjRhNDMuNzksNDMuNzksMCwwLDEtNi42Mi0yLjM1LDQ1LDQ1LDAsMCwxLTYuMDgtMy4yMUwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41'@; put 'MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVY3LjU5Wm0tNC41Nyw2LjY1TDE1LjUxLDI0LjksOS4xOSwxOC41N2ExLjQsMS40LDAsMCwxLDItMkwxNS41NCwyMSwyNC43MywxMmExLjQsMS40LDAsMSwxLDIsMloiIGNsYXNzPSJj'@; put 'bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZVNoaWVsZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVh'@; put 'NDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0x'@; put 'MiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNHYuNTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItM2MxLC42'@; put 'NCwyLjIsMS4yNywzLjQzLDEuODlsMS0xLjc0YTQxLjEsNDEuMSwwLDAsMS0zLjg5LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQu'@; put 'MTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww'@; put 'LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTMwLDEzLjV2Mi40M2MwLDExLTEwLDE1LjYxLTEyLDE2LjQzLTItLjgyLTEyLTUuNDQtMTItMTYuNDNWOS4xNGE0Ny41NCw0Ny41NCwwLDAsMCw2LjE4LTIuMjUsNDguMjMsNDguMjMsMCwwLDAsNS44Mi0zLDQ2LjE5LDQ2LjE5LDAsMCwwLDQuNTEsMi40MmMwLS4x'@; put 'LDAtLjE5LDAtLjI5YTcuNDksNy40OSwwLDAsMSwuMjMtMS44Myw0MS42MSw0MS42MSwwLDAsMS00LjE5LTIuMzNMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42'@; put 'NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUg'@; put 'Y3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAs'@; put 'MS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41'@; put 'OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIyLjQzLDRhNDEuMSw0MS4xLDAsMCwxLTMuODktMi4xOEwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02'@; put 'LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xh'@; put 'c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTcuMjctOS4zMyw0MS42MSw0MS42MSwwLDAsMS00LjE5LTIuMzNMMTgsMS41bC0uNTQu'@; put 'MzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEz'@; put 'LjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1i'@; put 'YWRnZSIvPlxuICAgICAgICAnKSxoLkNsclNoYXBlU2hpZWxkWD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQz'@; put 'Ljc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEy'@; put 'LTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMjIuODEsMTAuNzksMTgsMTUuNjFsLTQuODEtNC44MWExLDEsMCwwLDAtMS40MSwxLjQxTDE2LjU5LDE3bC00LjgxLDQuODFhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOC40M2w0LjgxLDQuODFhMSwxLDAsMCwwLDEuNDEtMS40MUwxOS40MSwxN2w0Ljgx'@; put 'LTQuODFhMSwxLDAsMCwwLTEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0u'@; put 'NTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMjQuNTEsMjEuNTVhMS40LDEu'@; put 'NCwwLDAsMS0yLDJMMTgsMTlsLTQuNTMsNC41M2ExLjQzLDEuNDMsMCwwLDEtMiwwLDEuNCwxLjQsMCwwLDEsMC0yTDE2LDE3bC00LjUzLTQuNTNhMS40LDEuNCwwLDEsMSwyLTJMMTgsMTVsNC41My00LjUzYTEuNCwxLjQsMCwwLDEsMiwyTDIwLDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs'@; put 'ci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAnKSxoLkNsclNoYXBlSW1wb3J0PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMTVoMlYxMy42MWg3LjYxVjZIMjhWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAs'@; put 'MjgsNFpNMTYsMTJIMTB2LS4zMkwxNS43LDZIMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjk0LDI2LjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTksMjJsLTUuNjgtNS42OGExLDEsMCwwLDAtMS40MSwx'@; put 'LjQxTDE1LjIsMjFIM2ExLDEsMCwxLDAsMCwySDE1LjIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEu'@; put 'NDEsMS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYzMEg4YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCww'@; put 'LDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMCwxMy42MWg3LjYxVjZoMy42OGwxLjE1LTJIMTQuODdMOCwxMC44NlYxNWgyWm0wLTEuOTJMMTUuNyw2SDE2djZI'@; put 'MTBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx'@; put 'MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40'@; put 'MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEz'@; put 'LjIyVjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFo'@; put 'Ny42MVY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0Ljg3TDgsMTAuODZWMTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2SDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz'@; put 'MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv'@; put 'bGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTQuODdMOCwxMC44NlYyMUgxNS4ybC0zLjI1LTMuMjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxOSwyMmwtNS42OCw1LjY4YTEsMSwwLDAsMS0xLjQxLTEuNDFMMTUuMjMsMjNIOHY3YTIsMiwwLDAsMCwyLDJIMjhhMiwy'@; put 'LDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0Wk0xNiwxMkgxMHYtLjMyTDE1LjY5LDZIMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMywyMWExLDEsMCwxLDAsMCwySDhWMjFaIiBjbGFzcz0iY2xyLWktc29saWQt'@; put 'LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40NSw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJs'@; put 'LTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy'@; put 'dGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGQ9Ik0yMi41LDZhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiww'@; put 'LDAsMCwyLTJWMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNlpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xh'@; put 'c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUV4cG9ydD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiwxMy42MWg3LjYxVjZIMjR2OC4zOGgyVjZhMiwyLDAsMCwwLTItMkgx'@; put 'MC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0x'@; put 'LjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSww'@; put 'LDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTYsMTMuNjFoNy42MVY2aDcuNjhsMS4xNS0ySDEwLjg3TDQsMTAuODdWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0ySDZabTAtMS45MkwxMS42OSw2SDEydjZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVy'@; put 'dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwx'@; put 'LjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwxMi4zNGE3LjUzLDcuNTMsMCwwLDEtMi0xLjg1djMuODloMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i'@; put 'YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDEwLjg3TDQsMTAuODdWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0ySDZabTAtMS45MkwxMS42'@; put 'OSw2SDEydjZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00'@; put 'LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWNmEyLDIsMCwwLDAtMi0ySDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYt'@; put 'LjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMzIsMTYuMzVhMSwxLDAsMCwwLTEuNDEsMS40MUwzMS4xNiwyMUgyNnYyaDUuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM1'@; put 'LDIyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNz'@; put 'PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40NSw0SDEwLjg3TDQsMTAuODZWMzBhMiwyLDAs'@; put 'MCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYtLjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4x'@; put 'NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNs'@; put 'ci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMzIsMTYuMzVhMSwxLDAsMCwwLTEuNDEsMS40MUwzMS4xNiwyMUgyNnYyaDUuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM1LDIyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt'@; put 'cGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDIyLjc4LDRIMTAuODdMNCwxMC44NlYzMGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJWMjNIMThBMSwxLDAsMCwxLDE3LDIyWk0x'@; put 'MiwxMkg2di0uMzJMMTEuNjksNkgxMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh'@; put 'dGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVVcGxvYWRDbG91ZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuMzEsMTNjMC0uMSwwLS4yMSwwLS4zMmExMC4yNiwxMC4yNiwwLDAsMC0xMC40NS0xMCwxMC40NywxMC40NywwLDAsMC05LjYs'@; put 'Ni4xQTkuNzQsOS43NCwwLDAsMCwxLjYsMTguNCw5LjYyLDkuNjIsMCwwLDAsMTEuMjUsMjhIMTVWMjZIMTEuMjVBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguMjYsOC4yNiwwLDAsMSw4LjQ1LDgsNy43NSw3Ljc1LDAsMCwx'@; put 'LDAsLjhsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyMXYyaDUuMzhhOCw4LDAsMCwwLDMuOTMtMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDIxLjg1QTEsMSwwLDAsMCwyMywyMC4x'@; put 'NGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSwwLDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4yOCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIu'@; put 'MjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUtNSw1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwyLjU3LDIuNTdBMSwxLDAsMCwwLDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjYsMTguMzhBNy43MSw3LjcxLDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguODEsOC44MSwwLDAsMSwyLC4yNWwxLTEuOGExMC44LDEwLjgsMCwwLDAtMy4wNy0uNDUs'@; put 'MTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5Ljc0LDkuNzQsMCwwLDAsMS42LDE4LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjYsNy42NiwwLDAsMSwzLjYsMTguMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'Mi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjksMTUuNEgzMC4yMUE2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4QTgsOCwwLDAsMCwzMi45LDE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs'@; put 'ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAuMTRsLTUtNS01LDVhMSwxLDAsMCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIu'@; put 'NTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC45MiwxMy40NGE3LjEzLDcuMTMsMCwwLDEtMi42My0uMTRjMCwuMDgsMCwuMTUs'@; put 'MCwuMjNsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyMXYyaDUuMzhhOCw4LDAsMCwwLDQuNTQtMTQuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjYsMTguMzhB'@; put 'Ny43MSw3LjcxLDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguNzksOC43OSwwLDAsMSwyLjY4LjQyLDcuNDUsNy40NSwwLDAsMSwuNS0xLjk0LDEwLjc5LDEwLjc5LDAsMCwwLTMuMTgtLjQ4LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS43'@; put 'NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgxNVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2ly'@; put 'Y2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxoLkNsclNoYXBlRG93bmxvYWRDbG91ZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAu'@; put 'MzEsMTNjMC0uMSwwLS4yMSwwLS4zMmExMC4yNiwxMC4yNiwwLDAsMC0xMC40NS0xMCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40Myww'@; put 'LDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAsMSwwLC44bC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDI2LjA3YTEsMSwwLDAsMC0uNzEuMjlMMTksMjguOTRWMTYuNjhhMSwxLDAsMSwwLTIsMFYyOC45NGwtMi41Ny0yLjU3QTEsMSwwLDAsMCwxMywyNy43OGw1LDUsNS01YTEs'@; put 'MSwwLDAsMC0uNzEtMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDct'@; put 'LjQ1LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS42NSw5LjY1LDAsMCwwLDEwLjg5LDI4YTMsMywwLDAsMSwwLTJBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNBOC40Myw4LjQzLDAsMCwxLDE5Ljg3LDQuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl'@; put 'ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjksMTUuNEgzMC4yMUE2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4QTgsOCwwLDAsMCwzMi45LDE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl'@; put 'cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwy'@; put 'Ni44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0y'@; put 'LDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS44Nyw0LjY5YTgu'@; put 'NzksOC43OSwwLDAsMSwyLjY4LjQyLDcuNDUsNy40NSwwLDAsMSwuNS0xLjk0LDEwLjc5LDEwLjc5LDAsMCwwLTMuMTgtLjQ4LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS42NSw5LjY1LDAsMCwwLDEwLjg5LDI4YTMsMywwLDAsMSwwLTJBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42'@; put 'NywwLC4yMy0uNjNBOC40Myw4LjQzLDAsMCwxLDE5Ljg3LDQuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC45MiwxMy40NGE3LjEzLDcuMTMsMCwwLDEtMi42My0uMTRjMCwu'@; put 'MDgsMCwuMTUsMCwuMjNsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyNS4wOWEzLDMsMCwwLDEsMCwyaDEuMjhhOCw4LDAsMCwwLDQuNTQtMTQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAg'@; put 'ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVQbHVnaW49KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5'@; put 'LjgxLDE2SDI5VjguODNhMiwyLDAsMCwwLTItMkgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwy'@; put 'LDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZabTIuNDEsN0EzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3'@; put 'YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2g4VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+'@; put 'XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjl2LS42SDI3VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwx'@; put 'NUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2guNjZMMjEsNi41OUE1LjEyLDUuMTIsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMs'@; put 'MCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwx'@; put 'LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVYxMy40M2E3LjQ1LDcuNDUsMCwwLDEtMi0uNTVWMThoMi44MUEzLjEzLDMuMTMsMCww'@; put 'LDEsMzMsMjAuNjksMywzLDAsMCwxLDMyLjIyLDIzLDMsMywwLDAsMSwzMCwyNEgyN3Y3LjgzSDRWMjVINWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCw0LjgxLDE1SDRWOC44M2g5VjdhMywzLDAsMCwxLDEtMi4yMkEzLDMsMCwwLDEsMTYuMzEsNCwzLjEzLDMuMTMsMCwwLDEs'@; put 'MTksNy4xOVY4LjgzaDQuMDZhNy40NCw3LjQ0LDAsMCwxLS41MS0ySDIxQTUuMTQsNS4xNCwwLDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIz'@; put 'SDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNp'@; put 'cmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIsMiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0'@; put 'LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAs'@; put 'MCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjgxLDE2SDI5di0uNkgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMSw2LjU5QTUuMTIsNS4xMiww'@; put 'LDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAs'@; put 'NS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42'@; put 'OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44'@; put 'MSwxNkgyOVYxMy40M2E3LjUsNy41LDAsMCwxLTYuNDUtNi41OUgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gy'@; put 'djguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBj'@; put 'eD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxoLkNsclNoYXBlRmxvcHB5PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy4zNiw0SDZBMiwyLDAsMCww'@; put 'LDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjUsMzBIMTFWMjJIMjVabTUsMEgyN1YyMmEyLDIsMCwwLDAtMi0ySDExYTIsMiwwLDAsMC0yLDJ2OEg2VjZoNHY2YTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkgxMlY2SDI2LjUxTDMwLDkuNTlaIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41aDBWMzBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTEuNjhsLS40'@; put 'My0uM0gxMlY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTI1LDMwSDExVjIySDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTMwLDE1LjRWMzBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwyaDcuMzVhMy41NCwzLjU0LDAsMCwxLS43Ny0ySDEyVjZoOS4yOWwxLjE1LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCww'@; put 'LDItMlYxNS40Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhB'@; put 'MS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3'@; put 'LjM2LDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY4Ljc4Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaTTI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjZBMiwyLDAsMCwx'@; put 'LDI0LDE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Niw3LjQ2LDAsMCwxLTQtMS4xOEEyLDIsMCwwLDEsMjQsMTRIMTJhMiwyLDAsMCwxLTItMlY2aDJ2NkgyNS41NGE3LjQ1LDcuNDUsMCwwLDEt'@; put 'Mi43Ni04SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTI2LDMwSDEwVjIxLjVBMS41LDEuNSwwLDAsMSwxMS41LDIwaDEzQTEuNSwxLjUsMCwwLDEsMjYsMjEuNVoiIGNsYXNzPSJjbHItaS1z'@; put 'b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRIMTJhMiwyLDAsMCwxLTItMlY2aDJ2Nmg2LjU4QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIyLjQ1LDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0y'@; put 'NiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUEx'@; put 'LjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+'@; put 'XG4gICAgICAgICcpLGguQ2xyU2hhcGVDb21wdXRlcj0oMCxzLmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjkuNiAyMi44OCA5LjYgMTAuNiAyNC40IDEwLjYgMjUuOTggOSA4IDkgOCAyMi44OCA5LjYgMjIuODgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDMwVjIzaDJWNi41QTEuNSwxLjUsMCwwLDAsMzAuNSw1SDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0i'@; put 'TTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41'@; put 'LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2'@; put 'YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTkuNiwyMi44OFYxMC42aDkuMTRBMy42NCwzLjY0LDAsMCwxLDE5LDkuODlMMTkuNTYsOUg4VjIyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDdIMjAuNzFsMS4x'@; put 'NS0ySDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMzAiIHk9IjE1LjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjcuNiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEEx'@; put 'LjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMSwyNXYzLjRBMi42LDIuNiwwLDAsMCwzLjYsMzFIMzIuMzRhMi42'@; put 'LDIuNiwwLDAsMCwyLjYtMi42VjI1Wm0zMiwzLjRhLjYuNiwwLDAsMS0uNi42SDMuNTZhLjYuNiwwLDAsMS0uNi0uNlYyNi41M2g5Ljk1YTEuNjQsMS42NCwwLDAsMCwxLjUsMWg3LjEzYTEuNjQsMS42NCwwLDAsMCwxLjUtMUgzM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjA3LTFINS41QTEuNSwxLjUsMCwwLDAsNCw2LjVWMjNINlY3SDIyLjU3QTcuNTIsNy41MiwwLDAsMSwyMi41LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t'@; put 'YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjIzaDJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQi'@; put 'Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4xMyw5SDhWMjIuODhIOS42VjEwLjZIMjQuMDhBNy40OSw3LjQ5LDAsMCwxLDIzLjEzLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUg'@; put 'Y3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODEsMjZjLS4zNS45LS45NCwxLjUtMS42MSwxLjVIMTMuNzRjLS42OCwwLTEu'@; put 'MjYtLjYtMS42MS0xLjVIMXYxLjc1QTIuNDUsMi40NSwwLDAsMCwzLjYsMzBIMzIuNEEyLjQ1LDIuNDUsMCwwLDAsMzUsMjcuNzVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNywxMEgyOVYyNGgzVjcuNTdBMS41'@; put 'NCwxLjU0LDAsMCwwLDMwLjUsNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0x'@; put 'LjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjki'@; put 'IHk9IjE1LjQiIHdpZHRoPSIzIiBoZWlnaHQ9IjguNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMTlMMTksOS44OSwyMS4yOSw2SDUuNUExLjU0LDEuNTQsMCwwLDAsNCw3LjU3'@; put 'VjI0SDdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDEx'@; put 'TDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODEsMjZjLS4zNS45LS45NCwxLjUtMS42MSwx'@; put 'LjVIMTMuNzRjLS42OCwwLTEuMjYtLjYtMS42MS0xLjVIMXYxLjc1QTIuNDUsMi40NSwwLDAsMCwzLjYsMzBIMzIuNEEyLjQ1LDIuNDUsMCwwLDAsMzUsMjcuNzVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAg'@; put 'ICAgPHBhdGggZD0iTTcsMTBIMjMuNjZBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwx'@; put 'My4yMmE3LjE0LDcuMTQsMCwwLDEtMywuMlYyNGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt'@; put 'c29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZURpc3BsYXk9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjUsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCww'@; put 'LDM0LDI1LjVWNC41QTEuNSwxLjUsMCwwLDAsMzIuNSwzWk0zMiwyNUg0VjVIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgOC43NiAyOC4xMyA4Ljc2IDI5Ljk0IDcuMTYgNi4xIDcuMTYg'@; put 'Ni4xIDIzIDcuNyAyMyA3LjcgOC43NiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3'@; put 'LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYx'@; put 'LDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9'@; put 'Ik0zMy42OCwxNS40SDMyVjI1SDRWNUgyMS44N0wyMywzSDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0y'@; put 'LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcuNyAyMyA3LjcgOC43NiAxOS43IDguNzYgMjAuNjIgNy4xNiA2LjEgNy4xNiA2LjEgMjMgNy43IDIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs'@; put 'ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIs'@; put 'MCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi4xLDIzSDcuN1Y4Ljc2SDIzYTcuNDQsNy40NCwwLDAsMS0uNDMtMS42SDYuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTMyLDEzLjIyVjI1SDRWNUgyMi41N2E3LjQ1LDcuNDUsMCwwLDEsLjU1LTJIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5c'@; put 'biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjUsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWNC41QTEuNSwxLjUsMCwwLDAsMzIuNSwz'@; put 'Wk0zMSwyMS44M0g1VjdIMzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDku'@; put 'OTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxdjYuNDNINVY3SDIw'@; put 'LjcxTDIzLDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjE1LjM4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBh'@; put 'dGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAsMS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5Ljk0YTEsMSwwLDEsMCwwLDJIMjYuMDZhLjkyLjkyLDAs'@; put 'MCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzdjguNDFINVY3SDIyLjU3YTcuMjksNy4yOSwwLDAsMSwuNTUtNEgzLjVBMS41LDEuNSww'@; put 'LDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWMTIuMzRBNy40NCw3LjQ0LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxj'@; put 'aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZVRlcm1pbmFsPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw1SDRBMiwy'@; put 'LDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCw3SDMyVjkuMkg0Wk00LDI5VjEwLjhIMzJWMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3'@; put 'IiB5PSIyMyIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMTUuNjggMTMuNzkgMTguOCA3IDIxLjkxIDcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAx'@; put 'My40OCA3IDE1LjY4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyMyIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt'@; put 'LWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'Mi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjI5SDRWMTAuOEgxOC42OEEzLjY2LDMuNjYsMCwwLDEsMTksOS44OWwuNC0uNjlINFY3SDIwLjcxbDEuMTUtMkg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y'@; put 'VjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0'@; put 'Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2'@; put 'IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNyAyNC4xMSAxNi42IDE5LjcgMTYuNiAxNy44OSA3IDEzLjQ4IDcgMTUuNjggMTMuNzkgMTguOCA3IDIx'@; put 'LjkxIDcgMjQuMTEiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYyOUg0VjEwLjhIMjQuMjRhNy41MSw3LjUxLDAsMCwxLTEtMS42SDRWN0gyMi41N2E3LjUyLDcuNTIs'@; put 'MCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'My0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDVINEEyLDIs'@; put 'MCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk02LjgsMTUuODFWMTMuMTdsMTAsNC41OXYyLjA4bC0xMCw0LjU5VjIxLjc4bDYuNTEtM1pNMjMuNCwyNS40SDE3VjIzaDYuNFpNNCw5LjJWN0gzMlY5LjJaIiBjbGFzcz0iY2xyLWkt'@; put 'c29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt'@; put 'MlYxNS4zOFpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0zVjEzLjE3bDEwLDQuNTlabTYuNiw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBk'@; put 'PSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt'@; put 'Mi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02Ljc4LTQuM0g0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCww'@; put 'LDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk0xNi44LDE5LjgzbC0xMCw0LjU5VjIxLjc4bDYuNTEtMy02LjUxLTNWMTMuMTdsMTAsNC41OVptNi42LDUuNTdIMTdWMjNoNi40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUNvZGU9KDAs'@; put 'cy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yMSwxNi43OGwtNi41My00LjQ1QTEsMSwwLDEsMCwyMi41NSwxNGw1LjMyLDMuNjMtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCww'@; put 'LTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCw5LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwz'@; put 'LjQ0LTEzLjgxQS45LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41'@; put 'Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC41Niwx'@; put 'MS42MiwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OEwxOS43MywxNC40YTMuNTksMy41OSwwLDAsMS0xLjE2LTIuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5c'@; put 'biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yMSwxNi43OGwtMi0xLjM4SDI0LjY0bDMuMjQsMi4yMS01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSww'@; put 'LDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40'@; put 'NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwzLjYzLTUuMzIsMy42M2ExLDEsMCwwLDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAsMC0xLjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTE5Ljk0LDkuODNhLjkuOSwwLDAsMC0xLjA5LjY2TDE1LjQxLDI0LjI5YS45LjksMCwwLDAsLjY2LDEuMDlsLjIyLDBhLjkuOSwwLDAsMCwuODctLjY4bDMuNDQtMTMuODFBLjkuOSwwLDAsMCwxOS45NCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxoLkNsclNo'@; put 'YXBlQXBwbGljYXRpb249KDAscy5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iNSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0'@; put 'PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxw'@; put 'YXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCw2SDMydjQuMkg0Wk00LDMwVjExLjhIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAg'@; put 'ICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFptMCw2LjJINFY2SDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0'@; put 'IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0z'@; put 'IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTMiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVCYXR0ZXJ5PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC41OSwx'@; put 'MS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5LDEwLjU5YTEsMSwwLDAsMCwxLjc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LjEy'@; put 'LDRIMjNWMy41OEExLjU4LDEuNTgsMCwwLDAsMjEuNDIsMkgxNC41OEExLjU4LDEuNTgsMCwwLDAsMTMsMy41OFY0SDEwLjg4QTEuODgsMS44OCwwLDAsMCw5LDUuODhWMzIuMTJBMS44OCwxLjg4LDAsMCwwLDEwLjg4LDM0SDI1LjEyQTEuODgsMS44OCwwLDAsMCwyNywzMi4xMlY1Ljg4QTEu'@; put 'ODgsMS44OCwwLDAsMCwyNS4xMiw0Wk0yNSwzMkgxMVY2aDRWNGg2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0xLjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjks'@; put 'MTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0zLjUzLTcuMDgsNi4zOCwxLjA2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs'@; put 'MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMjUsMTUuNFYzMkgxMVY2aDRWNGg2VjZoLjI4bDEuNjQtMi44NUExLjU3LDEuNTcsMCwwLDAsMjEuNDIsMkgxNC41OEExLjU4LDEuNTgsMCwwLDAsMTMsMy41OFY0SDEwLjg4QTEuODgsMS44OCwwLDAsMCw5LDUuODhWMzIuMTJBMS44OCwxLjg4LDAsMCww'@; put 'LDEwLjg4LDM0SDI1LjEyQTEuODgsMS44OCwwLDAsMCwyNywzMi4xMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEuNzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMu'@; put 'NTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMTEuNThWMzJIMTFWNmg0VjRoNlY2SDIyLjVBNy40Nyw3LjQ3LDAsMCwxLDIzLDMuMzgsMS41Nywx'@; put 'LjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTIuODdBNy41LDcuNSwwLDAsMSwyNSwx'@; put 'MS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0VjIuNjJBLjYuNiwwLDAsMCwyMS40MiwySDE0LjU4YS42LjYsMCwwLDAtLjU4LjYyVjRIMTBBMS4wOSwxLjA5LDAsMCww'@; put 'LDksNS4wN3YyOEExLDEsMCwwLDAsMTAsMzRIMjZhMSwxLDAsMCwwLDEtLjk0di0yOEExLjA5LDEuMDksMCwwLDAsMjYsNFpNMjAuMjYsMjUuNDRhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybDQuODMsOC4zN0wx'@; put 'Ni45LDE4LjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEu'@; put 'MjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY2LDMuNjYsMCwwLDEsMjAuNTUsMTVsMi43Niw0'@; put 'Ljc5TDE2LjksMTguN2wzLjM2LDYuNzNhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybC4wOS4xNUEzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwyMi40NSw0SDIyVjIuNjJBLjYuNiwwLDAsMCwyMS40MiwySDE0LjU4'@; put 'YS42LjYsMCwwLDAtLjU4LjYyVjRIMTBBMS4wOSwxLjA5LDAsMCwwLDksNS4wN3YyOEExLDEsMCwwLDAsMTAsMzRIMjZhMSwxLDAsMCwwLDEtLjk0VjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg'@; put 'PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgyMlYyLjYyQS42LjYs'@; put 'MCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxMi44N0E3LjUsNy41LDAsMCwxLDIyLjUsNlpNMjAuMjYsMjUuNDRhMS4yLDEuMiwwLDAsMS0yLjE1LDEu'@; put 'MDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybDQuODMsOC4zN0wxNi45LDE4LjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZU1vYmlsZT0oMCxzLmNs'@; put 'ckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEgxMUEyLDIsMCwwLDAsOSw2VjMwYTIsMiwwLDAsMCwyLDJIMjVhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyNSw0Wk0xMSw2SDI1VjI0SDExWm0wLDI0VjI2SDI1djRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsNEgxMUEyLDIsMCwwLDAsOSw2VjMwYTIsMiwwLDAsMCwy'@; put 'LDJIMjVhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyNSw0Wk0xOSwzMEgxN1YyOGgyWm0tOC00VjZIMjVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxoLkNsclNoYXBlVGFibGV0PSgwLHMuY2xySWNvblNWRykoJzxyZWN0IHg9'@; put 'IjE3IiB5PSIyOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMkg2QTIsMiwwLDAsMCw0LDRWMzJhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAs'@; put 'MCwwLDMwLDJabTAsMlYyNi4zOEg2VjRaTTYsMzJWMjhIMzB2NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEyLDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0'@; put 'QTIsMiwwLDAsMCwzMCwyWk0xOSwzMkgxN1YzMGgyWk02LDI4VjRIMzBWMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxoLkNsclNoYXBlTmV0d29ya0dsb2JlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41OCwzMmgtMThh'@; put 'MSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuNzUsMmExNCwxNCwwLDAsMC0xNCwxNGMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0LDAsMSww'@; put 'LDE3Ljc1LDJabTAsMmExMiwxMiwwLDAsMSw4LjQ0LDMuNDhjMCwuMzMsMCwuNjYsMCwxQTE4LjUxLDE4LjUxLDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0uMTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjky'@; put 'LDAsMCwxLDE3Ljc1LDRabS0zLDUuODdBMTcsMTcsMCwwLDEsMjUuOTIsMTBhMTYuOSwxNi45LDAsMCwxLTMuMTEsNywyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQuOTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzdabS00LTMu'@; put 'NmMwLC4yMS4wNi40My4xLjY0LjA5LjQ0LjIxLjg3LjMzLDEuM2EyLjI4LDIuMjgsMCwwLDAtMS4xLDIuMjVBMTguMzIsMTguMzIsMCwwLDAsNS45LDE0LjIyLDEyLDEyLDAsMCwxLDEwLjc2LDYuMjdabTAsMTUuNzFBMi4zNCwyLjM0LDAsMCwwLDkuMiwyMy43NGwtLjY0LDBBMTEuOTQsMTEu'@; put 'OTQsMCwwLDEsNS44LDE2LjkybC4xMS0uMTlhMTYuOSwxNi45LDAsMCwxLDQuODEtNC44OSwyLjMxLDIuMzEsMCwwLDAsMi4yOC42MywxNy41MywxNy41MywwLDAsMCw1LjM1LDUuNjVjLjQxLjI3LjgzLjUyLDEuMjUuNzZBMi4zMiwyLjMyLDAsMCwwLDE5Ljc4LDIwYTE2Ljk0LDE2Ljk0LDAs'@; put 'MCwxLTYuMiwzLjExQTIuMzQsMi4zNCwwLDAsMCwxMC43NiwyMlptNyw2YTExLjkyLDExLjkyLDAsMCwxLTUuODEtMS41MWwuMjgtLjA2YTIuMzQsMi4zNCwwLDAsMCwxLjU3LTEuNzksMTguNDMsMTguNDMsMCwwLDAsNy0zLjUsMi4yOSwyLjI5LDAsMCwwLDMtLjYyLDE3LjQxLDE3LjQxLDAs'@; put 'MCwwLDQuMzIuNTZsLjUzLDBBMTIsMTIsMCwwLDEsMTcuNzUsMjhabTYuNTEtOC45YTIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC40LDE4LjQsMCwwLDAsMy4zOS03LjM3cS43NS4zNSwxLjQ4Ljc4YTEyLDEyLDAsMCwxLC40Miw4LjJBMTYsMTYsMCwwLDEsMjQuMjcsMTkuMTFaIiBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFs'@; put 'ZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzMsMTUuNGgtMmMwLC4yLDAsLjQsMCwuNjFhMTIsMTIsMCwwLDEtLjUzLDMuNTIsMTYsMTYsMCwwLDEtNS0uNDEsMi4zMywyLjMzLDAsMCwwLS4zMy0xLjE5LDE4Ljg3LDE4Ljg3LDAsMCwwLDEuNjItMi41MkgyMy44M2ExNy4y'@; put 'OSwxNy4yOSwwLDAsMS0xLDEuNTQsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4zNS0uMi0uNy0uNC0xLS42M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3QTE3LjA4LDE3LjA4LDAsMCwxLDE5LjU2LDlsLjg3LTEuNTFhMTguNTksMTguNTksMCwwLDAt'@; put 'Ni4zOSwxLDIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBjLS4xMi0uNDItLjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS44OCwxMS44OCwwLDAsMSwyMiw0Ljc5TDIzLDNBMTQsMTQsMCwwLDAsMy43NSwxNmMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0'@; put 'LDAsMCwwLDMxLjc2LDE2QzMxLjc2LDE1LjgsMzEuNzQsMTUuNiwzMS43MywxNS40Wm0tMjEtOS4xM2MwLC4yMS4wNi40My4xLjY0LjA5LjQ0LjIxLjg3LjMzLDEuM2EyLjI4LDIuMjgsMCwwLDAtMS4xLDIuMjVBMTguMzIsMTguMzIsMCwwLDAsNS45LDE0LjIyLDEyLDEyLDAsMCwxLDEwLjc2'@; put 'LDYuMjdabTAsMTUuNzFBMi4zNCwyLjM0LDAsMCwwLDkuMiwyMy43NGwtLjY0LDBBMTEuOTQsMTEuOTQsMCwwLDEsNS44LDE2LjkybC4xMS0uMTlhMTYuOSwxNi45LDAsMCwxLDQuODEtNC44OSwyLjMxLDIuMzEsMCwwLDAsMi4yOC42MywxNy41MywxNy41MywwLDAsMCw1LjM1LDUuNjVjLjQx'@; put 'LjI3LjgzLjUyLDEuMjUuNzZBMi4zMiwyLjMyLDAsMCwwLDE5Ljc4LDIwYTE2Ljk0LDE2Ljk0LDAsMCwxLTYuMiwzLjExQTIuMzQsMi4zNCwwLDAsMCwxMC43NiwyMlptNyw2YTExLjkyLDExLjkyLDAsMCwxLTUuODEtMS41MWwuMjgtLjA2YTIuMzQsMi4zNCwwLDAsMCwxLjU3LTEuNzksMTgu'@; put 'NDMsMTguNDMsMCwwLDAsNy0zLjUsMi4yOSwyLjI5LDAsMCwwLDMtLjYyLDE3LjQxLDE3LjQxLDAsMCwwLDQuMzIuNTZsLjUzLDBBMTIsMTIsMCwwLDEsMTcuNzUsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAg'@; put 'ICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl'@; put 'ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjUsMTMuMzVhNy41NCw3LjU0LDAsMCwxLTEuNS4xNWwtLjUxLDBhMTEuOTEsMTEuOTEsMCwwLDEtLjI1LDYsMTYsMTYsMCwwLDEtNS0uNDEsMi4zMywyLjMzLDAsMCwwLS4zMy0xLjE5LDE4LjU5LDE4LjU5LDAsMCwwLDIu'@; put 'NzgtNS4xOCw3LjQ5LDcuNDksMCwwLDEtMS4zMS0uODIsMTcsMTcsMCwwLDEtMi42MSw1LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43NywxNywxNywwLDAsMSw4LjUzLS42Miw3'@; put 'LjQzLDcuNDMsMCwwLDEtLjU2LTEuNTlBMTguNTYsMTguNTYsMCwwLDAsMTQsOC41M2EyLjMzLDIuMzMsMCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuOTIsMTEuOTIsMCwwLDEsMjIuNTcsNWE3LjQ1LDcuNDUsMCww'@; put 'LDEsLjUzLTJBMTQsMTQsMCwwLDAsMy43NSwxNmMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwYTE0LDE0LDAsMSwwLDI3LjY4LTRaTTEwLjc2LDYuMjdjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCww'@; put 'LDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcu'@; put 'NTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEy'@; put 'LjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2'@; put 'LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcyLDkuODdhMi4yNSwyLjI1LDAsMCwxLS40NywxLjc3LDE2LDE2LDAsMCwwLDQuOTMsNS4y'@; put 'M2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4yOCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE2LjksMTYuOSwwLDAsMCwzLjExLTdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuNzUs'@; put 'MmExNCwxNCwwLDAsMC0xNCwxNGMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0LDAsMSwwLDE3Ljc1LDJaTTI4LjEsMjEuMDlhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAs'@; put 'MS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcu'@; put 'NTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQz'@; put 'LS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjUxLDE4LjUxLDAsMCwxLDEyLjExLS4wN2MwLS4zMiwwLS42NSwwLTFo'@; put 'MGExMiwxMiwwLDAsMSwyLjYyLDMuODVoMHEtLjczLS40My0xLjQ4LS43OGExOC40LDE4LjQsMCwwLDEtMy4zOSw3LjM3LDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAsMS0uNjEsMS41M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt'@; put 'aS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0'@; put 'aCBkPSJNMzEuNzMsMTUuNEgyNS41NmExOC44NywxOC44NywwLDAsMS0xLjYyLDIuNTIsMi4zMywyLjMzLDAsMCwxLC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUzSDI4LjFhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAs'@; put 'MCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAs'@; put 'MCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1'@; put 'LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4'@; put 'LjUzYTE4LjU5LDE4LjU5LDAsMCwxLDYuMzktMUwyMywzQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDAsMCwzMS43NiwxNkMzMS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj'@; put 'bHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuMjYsMTEuNjRhMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4LDIuMjgsMCwwLDEsMi41OC0uNTcsMTcuMjksMTcuMjksMCwwLDAsMS0xLjU0aC0xLjZBMy42'@; put 'OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTYsOWExNy4wOCwxNy4wOCwwLDAsMC00Ljg0Ljg4LDIuMjUsMi4yNSwwLDAsMS0uNDcsMS43N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN'@; put 'MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0t'@; put 'YWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxw'@; put 'YXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTUsNy40Niw3LjQ2LDAsMCwxLTMuMjgtLjc2LDE4LjU5LDE4LjU5LDAsMCwxLTIuNzgsNS4xOCwyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwuNDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNI'@; put 'MjguMWExNy40MSwxNy40MSwwLDAsMS00LjMyLS41NiwyLjI5LDIuMjksMCwwLDEtMywuNjIsMTguNDMsMTguNDMsMCwwLDEtNywzLjUsMi4zNCwyLjM0LDAsMCwxLTEuNTcsMS43OWwtLjI5LjA2YTExLjkzLDExLjkzLDAsMCwxLTMuMzktMi44bC42NiwwYTIuMzMsMi4zMywwLDAsMSw0LjM3'@; put 'LS41OEExNi45NCwxNi45NCwwLDAsMCwxOS43OCwyMGEyLjMyLDIuMzIsMCwwLDEtLjE4LTEuMTdjLS40Mi0uMjQtLjg0LS40OS0xLjI1LS43NkExNy41MywxNy41MywwLDAsMSwxMywxMi40N2EyLjMxLDIuMzEsMCwwLDEtMi4yOC0uNjMsMjcuMzEsMjcuMzEsMCwwLDAtNSw0Ljc0YzAtLjIs'@; put 'MC0uMzksMC0uNTdhMTIsMTIsMCwwLDEsLjE0LTEuNzMsMTguNzUsMTguNzUsMCwwLDEsNC4yLTMuOCwyLjI4LDIuMjgsMCwwLDEsMS4xLTIuMjVjLS4xMi0uNDMtLjI0LS44Ni0uMzMtMS4zLDAtLjE0LDAtLjI5LS4xMS0uNjRhMTIsMTIsMCwwLDEsMS4zNy0uODdjLjEuNTkuMTQuOS4yMSwx'@; put 'LjIxcy4yLjg1LjMyLDEuMjdsLjI1LDBBMi4zMywyLjMzLDAsMCwxLDE0LDguNTNhMTguNTYsMTguNTYsMCwwLDEsOC42NS0uODcsNy40NSw3LjQ1LDAsMCwxLC40MS00LjU5QTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00'@; put 'WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUuMjNjLjM0LjIzLjY5LjQzLDEsLjYzYTIuMjgs'@; put 'Mi4yOCwwLDAsMSwyLjU4LS41NywxNywxNywwLDAsMCwyLjYxLTUsNy41Miw3LjUyLDAsMCwxLTIuMTYtMi42N0ExNywxNywwLDAsMCwxNC43Miw5Ljg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJj'@; put 'bGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZU5ldHdvcmtTZXR0aW5ncz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuODUs'@; put 'MjcuNDRhMi4yOSwyLjI5LDAsMCwwLDEuNzQtMS42OGMuNTQtLjE0LDEuMDYtLjMyLDEuNTktLjUxdi0xLjJhMi43NywyLjc3LDAsMCwxLC4wNi0uNTEsMTcuNDQsMTcuNDQsMCwwLDEtMS44Mi42MiwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0y'@; put 'Ljg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEsNS00LjcyLDIuMjMsMi4yMywwLDAsMCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNDcsNSwyLjc0LDIuNzQsMCwwLDEsLjIxLS4yNGwuOTUtLjkxYTE2LjksMTYuOSwwLDAsMS00LjM1LTQuNzksMi4yNywyLjI3LDAsMCwwLC4zNS0xLjJj'@; put 'MC0uMDcsMC0uMTQsMC0uMjJBMTcuNjksMTcuNjksMCwwLDEsMjUsMTFhMTcuNDksMTcuNDksMCwwLDEtMS4xNSwzLjM0bC4xOSwwaDEuNTZhMTksMTksMCwwLDAsLjkxLTIuNzJjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTQsMTEuOTQsMCwwLDEsMSw0LjA5bDAsMEEyLjc3LDIuNzcsMCww'@; put 'LDEsMzAsMTZhMi43MywyLjczLDAsMCwxLC42OC4xQTE0LDE0LDAsMSwwLDE2LjA4LDMxYTIuNzIsMi43MiwwLDAsMSwwLTJBMTEuOTMsMTEuOTMsMCwwLDEsMTAuODUsMjcuNDRaTTE2Ljc2LDVhMTIsMTIsMCwwLDEsOC42MSwzLjY2YzAsLjI1LDAsLjUxLS4wOC43NmExOS4yMSwxOS4yMSww'@; put 'LDAsMC0xMi4zNS4xMUEyLjI4LDIuMjgsMCwwLDAsMTEuNzQsOWExNywxNywwLDAsMS0uNjEtMi41M0ExMS45MiwxMS45MiwwLDAsMSwxNi43Niw1Wk05LjY2LDcuMzZhMTguNzIsMTguNzIsMCwwLDAsLjQ5LDEuOTIsMi4yOCwyLjI4LDAsMCwwLTEuMDcsMS45M3MwLC4xLDAsLjE1QTE5LjQ1'@; put 'LDE5LjQ1LDAsMCwwLDUsMTQuNzksMTIsMTIsMCwwLDEsOS42Niw3LjM2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMjEuMTlBMy44NCwzLjg0LDAsMSwwLDI4Ljg4LDI1LDMuODcsMy44NywwLDAsMCwy'@; put 'NSwyMS4xOVptMCw2LjA4QTIuMjQsMi4yNCwwLDEsMSwyNy4yOCwyNSwyLjI2LDIuMjYsMCwwLDEsMjUsMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4xNywyNC4xNGExLjE0LDEuMTQsMCwwLDAt'@; put 'LjctMS4xbC0xLjU2LS40NnEtLjExLS4zMi0uMjYtLjYzbC43Mi0xLjMzYTEuMTQsMS4xNCwwLDAsMC0uMjEtMS4zNGwtMS4zNC0xLjMyYTEuMTQsMS4xNCwwLDAsMC0xLjM0LS4ybC0xLjM0LjcxYTcuMjgsNy4yOCwwLDAsMC0uNjctLjI4TDI3LDE2LjcxYTEuMTQsMS4xNCwwLDAsMC0xLjA4'@; put 'LS43NkgyNGExLjE0LDEuMTQsMCwwLDAtMS4wOC44bC0uNDQsMS40M2E3LjMyLDcuMzIsMCwwLDAtLjY4LjI4bC0xLjMyLS43YTEuMTQsMS4xNCwwLDAsMC0xLjMzLjE5bC0xLjM3LDEuMzFhMS4xNCwxLjE0LDAsMCwwLS4yMSwxLjM1bC43LDEuMjhxLS4xNi4zMi0uMjguNjVMMTYuNTgsMjNh'@; put 'MS4xMywxLjEzLDAsMCwwLS44MSwxLjA5djEuODdBMS4xNCwxLjE0LDAsMCwwLDE2LjU5LDI3bDEuNDcuNDRxLjEyLjMyLjI4LjY0bC0uNzIsMS4zNWExLjE0LDEuMTQsMCwwLDAsLjIsMS4zNWwxLjM0LDEuMzJhMS4xNCwxLjE0LDAsMCwwLDEuMzQuMmwxLjM3LS43MnEuMzEuMTQuNjMuMjZs'@; put 'LjQ0LDEuNDdhMS4xNCwxLjE0LDAsMCwwLDEuMDkuOGgxLjlBMS4xNCwxLjE0LDAsMCwwLDI3LDMzLjMxbC40NC0xLjQ3Yy4yMS0uMDcuNDItLjE2LjYyLS4yNWwxLjM4LjczYTEuMTQsMS4xNCwwLDAsMCwxLjMzLS4ybDEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAsLjIxLTEuMzVsLS43My0x'@; put 'LjM0cS4xNC0uMy4yNS0uNmwxLjUtLjQ0QTEuMTMsMS4xMywwLDAsMCwzNC4xNywyNlptLTEuNiwxLjUtMiwuNTgtLjEyLjQyQTUuNTUsNS41NSwwLDAsMSwzMCwyNy43M2wtLjIxLjM4LDEsMS43OS0uODYuODQtMS44Mi0xLS4zNy4yYTUuNzgsNS43OCwwLDAsMS0xLjEyLjQ2bC0uNDIuMTIt'@; put 'LjU5LDJIMjQuMzhsLS41OS0xLjk1LS40Mi0uMTJBNS44Niw1Ljg2LDAsMCwxLDIyLjI0LDMwbC0uMzctLjItMS44MSwxLS44Ni0uODUsMS0xLjgyLS4yMi0uMzhhNS42LDUuNiwwLDAsMS0uNDktMS4xM2wtLjEzLS40MS0xLjk1LS41OFYyNC40MmwxLjk0LS41OC4xMi0uNDFhNS41Myw1LjUz'@; put 'LDAsMCwxLC40OS0xLjE0bC4yMi0uMzktMS0xLjczLjg3LS44NCwxLjc3Ljk0LjM4LS4yMWE1LjgsNS44LDAsMCwxLDEuMTctLjQ5bC40MS0uMTIuNTktMS45MWgxLjIzbC41OCwxLjkuNDEuMTJhNS43OSw1Ljc5LDAsMCwxLDEuMTYuNDhsLjM4LjIxLDEuOC0uOTUuODYuODUtMSwxLjc3LjIx'@; put 'LjM4YTUuNTMsNS41MywwLDAsMSwuNDcsMS4xM2wuMTIuNDIsMS45My41N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LDIzLjYzLDMyLDIzYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3'@; put 'LjM3LDAsMCwwLS4wNy0uNDRMMzAuOSwxNy44NmEuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxYTcsNywwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFMMjAsMTcuOGEuMzcu'@; put 'MzcsMCwwLDAtLjQ0LjA3TDE4LDE5LjMxYS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyQTcsNywwLDAsMCwxOC4zNSwyM2wtMiwuNjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFBNyw3LDAsMCwwLDE5LDI4LjM3bC0xLDEuOWEuMzcuMzcsMCwwLDAs'@; put 'LjA3LjQ0bDEuNDUsMS40NWEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0'@; put 'LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OEE3LDcsMCwwLDAsMzEuOTUsMjdsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjRBLjM3LjM3LDAsMCwwLDM0LDIzLjYzWm0tOC44Myw0LjcyQTMuMzMsMy4zMywwLDEsMSwyOC41MywyNSwzLjMzLDMuMzMsMCww'@; put 'LDEsMjUuMTksMjguMzRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSwwLDAsMCwxLjc0LTEuNjgsMTkuNzEsMTkuNzEsMCwwLDAsMS44OS0uNlYyMy45NWEyLDIsMCwwLDEsLjA5'@; put 'LS41NSwxNy40MiwxNy40MiwwLDAsMS0yLjE3Ljc4LDIuMjgsMi4yOCwwLDAsMC00LjI4LjYzbC0uNDUsMGgwYTExLjkzLDExLjkzLDAsMCwxLTIuODgtNy4yNywxNy43OSwxNy43OSwwLDAsMSw1LTQuNzIsMi4yMywyLjIzLDAsMCwwLDIuMjkuNTYsMTguNTIsMTguNTIsMCwwLDAsNC42NSw1'@; put 'LjA5LDEuOTMsMS45MywwLDAsMSwuMjMtLjMybC44OS0uODdhMTYuODksMTYuODksMCwwLDEtNC40OS00Ljg5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4yYzAtLjA3LDAtLjE0LDAtLjIyQTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNSwxLjk0LDEu'@; put 'OTQsMCwwLDEsLjMxLS4wNWgxLjQ1YTE5LjA2LDE5LjA2LDAsMCwwLC45LTIuN2MuNDMuMTkuODQuNDEsMS4yNi42NGExMS45MywxMS45MywwLDAsMSwxLDQuNjNsMS0uNTFhMiwyLDAsMCwxLC45Mi0uMjNoLjA4QTE0LDE0LDAsMSwwLDE2LjQ0LDMxYTEuOTQsMS45NCwwLDAsMSwuMTItMS40'@; put 'NmwuMjgtLjUzaC0uMDdBMTEuOTEsMTEuOTEsMCwwLDEsMTAuODUsMjcuNDRaTTE2Ljc2LDVhMTIsMTIsMCwwLDEsOC42MSwzLjY2YzAsLjI1LDAsLjUxLS4wOC43NmExOS4yMSwxOS4yMSwwLDAsMC0xMi4zNS4xMUEyLjI4LDIuMjgsMCwwLDAsMTEuNzQsOWExNywxNywwLDAsMS0uNjEtMi41'@; put 'M0ExMS45MiwxMS45MiwwLDAsMSwxNi43Niw1Wk05LjY2LDcuMzZhMTguNzIsMTguNzIsMCwwLDAsLjQ5LDEuOTIsMi4yOCwyLjI4LDAsMCwwLTEuMDcsMS45M3MwLC4xLDAsLjE1QTE5LjQ1LDE5LjQ1LDAsMCwwLDUsMTQuNzksMTIsMTIsMCwwLDEsOS42Niw3LjM2WiIgY2xhc3M9ImNsci1p'@; put 'LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZU5ldHdvcmtTd2l0Y2g9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDks'@; put 'MTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk0zMiwyN0g0VjE5LjA2TDcuMTMsOUgyOC44N0wzMiwxOS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x'@; put 'IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMi4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0i'@; put 'MyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAg'@; put 'ICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3LjEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4x'@; put 'MiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMi4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt'@; put 'LWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3LjEiIHk9'@; put 'IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMzLDE1LjRIMzAuODZMMzIsMTkuMDZWMjdINFYxOS4wNkw3LjEzLDlIMTkuNTZsMS4xNS0ySDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40'@; put 'MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiAvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxu'@; put 'ICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3LjExIiB5PSIyMiIgd2lkdGg9IjEu'@; put 'OCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8'@; put 'cmVjdCB4PSI2LjIzIiB5PSIxOCIgd2lkdGg9IjIzLjY5IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3bC0xLjY1LTUuMzJhNy40OSw3LjQ5'@; put 'LDAsMCwxLTIsLjMzTDMyLDE5LjA2VjI3SDRWMTkuMDZMNy4xMyw5aDE2YTcuNDUsNy40NSwwLDAsMS0uNTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCww'@; put 'LDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt'@; put 'cGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTEsMTguNDcsMzAuNzgsOC40MUEyLDIsMCwwLDAsMjguODcsN0g3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJI'@; put 'MzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaTTguOTIsMjVINy4xMlYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBIMjIuMVYyMmgxLjhabTUsMEgyNy4xVjIyaDEuOFpNMzEsMTkuNEg1VjE4SDMxWiIgY2xhc3M9ImNsci1p'@; put 'LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIwLjcxLDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAs'@; put 'MiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZhMiwyLDAsMCwwLS4wOS0uNTlaTTguOTIsMjVINy4xMlYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBIMjIuMVYyMmgxLjhabTUsMEgyNy4xVjIyaDEuOFpNMzEsMTkuNEg1VjE4SDMxWiIgY2xhc3M9ImNsci1p'@; put 'LXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEu'@; put 'MjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEzLjE1QTcuNDksNy40OSwwLDAsMSwyMi41Nyw3SDcuMTNBMiwyLDAs'@; put 'MCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFW'@; put 'MjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1i'@; put 'YWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVSb3V0ZXI9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDE0Ljg3bDUuMTEtNS4xNGExLDEsMCwxLDAtMS40Mi0xLjQxTDE5LDExVjMuMzNhMSwxLDAsMCww'@; put 'LTIsMFYxMUwxNC4zMSw4LjMyYTEsMSwwLDEsMC0xLjQyLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWExLDEs'@; put 'MCwwLDAsMiwwVjI1bDIuNjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguODUsMTIuODlhMSwxLDAsMCwwLTEuNDEsMS40MkwzMC4xNSwxN0gyMi40NmExLDEs'@; put 'MCwxLDAsMCwyaDcuNjlsLTIuNzEsMi42OWExLDEsMCwwLDAsMS40MSwxLjQyTDM0LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNS44NSwxOWg3LjY5YTEsMSwwLDAsMCwwLTJINS44NWwyLjcxLTIuNjlh'@; put 'MSwxLDAsMSwwLTEuNDEtMS40MkwyLDE4bDUuMTQsNS4xMWExLDEsMCwxLDAsMS40MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQx'@; put 'TDE3LDI1djcuNjlhMSwxLDAsMCwwLDIsMFYyNWwyLjY5LDIuNzFhMSwxLDAsMCwwLDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEs'@; put 'MCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGgg'@; put 'ZD0iTTMxLjM4LDE1LjRIMjguNTRMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTE4LDE0Ljg3bDEuMTUtMS4xNi0uMS0uMTVBMy42OCwzLjY4LDAsMCwxLDE5LDEwVjMuMzNhMSwxLDAsMCwwLTIsMFYxMUwxNC4zMSw4LjMyYTEsMSwwLDEsMC0xLjQyLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEs'@; put 'OC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40MUwxNywyNXY3LjY5YTEs'@; put 'MSwwLDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguODUsMTIuODlhMSwxLDAsMCwwLTEuNDEsMS40Mkwz'@; put 'MC4xNSwxN0gyMi40NmExLDEsMCwxLDAsMCwyaDcuNjlsLTIuNzEsMi42OWExLDEsMCwwLDAsMS40MSwxLjQyTDM0LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTlo'@; put 'Ny42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAg'@; put 'IDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxLjY3YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCww'@; put 'LDE4LDEuNjdaTTEzLjg2LDkuOTJhLjguOCwwLDAsMSwxLjEzLDBsMi4yMSwyLjE5VjUuOTNhLjguOCwwLDAsMSwxLjYsMHY2LjE4TDIxLDkuOTJhLjguOCwwLDEsMSwxLjEzLDEuMTRMMTgsMTUuMTVsLTQuMTQtNC4xQS44LjgsMCwwLDEsMTMuODYsOS45MlpNMTAuMzIsMjEuNzRhLjguOCww'@; put 'LDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQuMDlhLjguOCwwLDEsMSwxLjEyLDEuMTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEuNkg4LjExbDIuMiwyLjE1QS44LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40'@; put 'YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUsMjUuNDJhLjguOCwwLDEsMS0xLjEzLTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAsMSwyMi4xNCwyNS40MVptNC42Ny0zLjY2YS44LjgsMCwxLDEtMS4xMi0xLjE0bDIuMi0yLjE1SDIxLjYzYS44LjgsMCwwLDEsMC0xLjZoNi4yN2wt'@; put 'Mi4yLTIuMTRhLjguOCwwLDEsMSwxLjEyLTEuMTRMMzEsMTcuNjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgyLDE1LjM5SDI4LjY4TDMxLDE3LjY3bC00LjE5LDQuMDlhLjguOCwwLDEsMS0xLjEyLTEuMTRs'@; put 'Mi4yLTIuMTVIMjEuNjNhLjguOCwwLDAsMSwwLTEuNmg2LjI3bC0xLjUtMS40N0gyMi4yM2EzLjY4LDMuNjgsMCwwLDEtMy0xLjUxTDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMSwxLDE1LDkuOTJsMi4yMSwyLjE5VjUuOTNhLjguOCwwLDAsMSwxLjYsMHY0LjQ5QTMuNjUsMy42NSwwLDAs'@; put 'MSwxOSw5Ljg5bDQuMjItNy4zMUExNiwxNiwwLDEsMCwzNCwxNy42NywxNiwxNiwwLDAsMCwzMy44MiwxNS4zOVptLTIzLjUsNi4zNWEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAsMS42'@; put 'SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42N2EuOC44LDAsMCwxLTEuMTMsMEwxOC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAsMCwx'@; put 'LDIyLjE0LDI1LjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAs'@; put 'MzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjIyLDEyLjc2QTcuNDksNy40'@; put 'OSwwLDAsMSwyMy4zMiwyLjZhMTYsMTYsMCwxLDAsOS45LDEwLjE3Wk0xMy44Niw5LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMCwx'@; put 'LDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44LjgsMCwwLDEtMS4xMywwTDUsMTcuNjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEwLjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44'@; put 'LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjkuNGEuOC44LDAsMCwxLTEuNiwwVjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44LDAsMSwxLTEuMTItMS4xNGwyLjItMi4x'@; put 'NUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjdsLTIuMi0yLjE0YS44LjgsMCwxLDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi'@; put 'IHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZVZNPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMSw1SDI1VjhoMlY1YTIsMiwwLDAsMC0yLTJIMTFBMiwy'@; put 'LDAsMCwwLDksNXY2Ljg1aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxN3YyaDh2NmgyVjEyaDNWMjZIMjJWMTdhMiwyLDAsMCwwLTItMkg2YTIsMiwwLDAsMC0yLDJWMzFhMiwyLDAsMCwwLDIs'@; put 'MkgyMGEyLDIsMCwwLDAsMi0yVjI4aDhhMiwyLDAsMCwwLDItMlYxMkEyLDIsMCwwLDAsMzAsMTBaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0'@; put 'aCBkPSJNMTEsNUgyMS44N0wyMywzSDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNS4wMSIgeT0iMTUuNCIgd2lkdGg9IjEuOTkiIGhl'@; put 'aWdodD0iMi42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS40VjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBh'@; put 'MiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTUuNFpNNiwzMVYxN0gyMHY5SDE2VjIwSDE0djZhMiwyLDAsMCwwLDIsMmg0djNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo'@; put 'IGQ9Ik0xNywxMHYyaDEuNTdBMy42NywzLjY3LDAsMCwxLDE5LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs'@; put 'MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAg'@; put 'ICAgICA8cGF0aCBkPSJNMTEsNUgyMi41N2E3LjQ1LDcuNDUsMCwwLDEsLjU1LTJIMTFBMiwyLDAsMCwwLDksNXY2Ljg1aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMu'@; put 'NWgwVjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJo'@; put 'NHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDEyaDh2NmgyVjEyLjg3QTcuNTIsNy41MiwwLDAsMSwyMy42NiwxMEgxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAg'@; put 'IDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZIMjdWNWEyLDIsMCwwLDAtMi0ySDExQTIsMiwwLDAsMCw5LDV2OC40aDQuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDE3LjE5'@; put 'YTIsMiwwLDAsMC0yLDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCww'@; put 'LDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZoMi43MkwyMywzSDExQTIsMiwwLDAsMCw5'@; put 'LDV2OC40aDQuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjE5LDEwYTIsMiwwLDAsMC0yLDJ2MS40SDE5QTMuNjgsMy42OCwwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1z'@; put 'b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMjEsMTUuNEEzLjU1LDMuNTUsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwy'@; put 'LDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8'@; put 'cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk'@; put 'LXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZIMjIuOUE3LjQ1LDcuNDUsMCwwLDEsMjMuMTMsM0gxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1i'@; put 'YWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjMuNjYsMTBIMTcuMTlhMiwyLDAsMCwwLTIsMnYxLjRIMjBBMy42LDMuNiwwLDAsMSwyMy42LDE3djhIMjJWMTdhMiwyLDAsMCwwLTItMkg2'@; put 'YTIsMiwwLDAsMC0yLDJWMzFhMiwyLDAsMCwwLDIsMkgyMGEyLDIsMCwwLDAsMi0yVjI5LjZIMTcuMTlhMy42LDMuNiwwLDAsMS0zLjYtMy42VjIwaDEuNnY2YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHIt'@; put 'aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAg'@; put 'ICAgICcpLGguQ2xyU2hhcGVWTVdBcHA9KDAscy5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSIyOCAyMiAzMCAyMiAzMCAzMCAyMiAzMCAyMiAyOCAyMCAyOCAyMCAzMiAzMiAzMiAzMiAyMCAyOCAyMCAyOCAyMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTEiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0IDMwIDYgMzAgNiAyMiA4IDIyIDggMjAgNCAyMCA0IDMyIDE2IDMyIDE2IDI4IDE0IDI4IDE0IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29u'@; put 'IHBvaW50cz0iOCAxNCA2IDE0IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwIDQgMjAgOCAyMiA4IDIyIDYgMzAgNiAz'@; put 'MCAxNCAyOCAxNCAyOCAxNiAzMiAxNiAzMiA0IDIwIDQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9'@; put 'IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxw'@; put 'b2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHln'@; put 'b24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9'@; put 'IjggMTQgNiAxNCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVp'@; put 'Z2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxOSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i'@; put 'TTI1LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2bDAtLjFWMTdoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMi40NSA0IDIwIDQgMjAgOCAy'@; put 'MC4xNCA4IDIyLjQ1IDQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjgiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjAuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0'@; put 'ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2'@; put 'Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyOCAyMiAzMCAyMiAzMCAzMCAyMiAzMCAyMiAyOCAyMCAyOCAyMCAzMiAzMiAz'@; put 'MiAzMiAyMCAyOCAyMCAyOCAyMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAy'@; put 'OCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE0IDYgMTQgNiA2IDE0IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIg'@; put 'Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVp'@; put 'Z2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNmguNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjBWOGgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMTRIMjh2Mmg0VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiAvPlxu'@; put 'ICAgICAgICAgICAgPHBhdGggZD0iTTI1LDExLjU4YTcuNTMsNy41MywwLDAsMS0uNTgtLjU4SDE5djZoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0i'@; put 'NSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVDZXJ0aWZpY2F0ZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhh'@; put 'MiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEwyMC40MSwyOEg0VjhIMzJsMCw4LjU2YTguNDEsOC40MSwwLDAsMSwyLDEuODFWOEEyLDIsMCwwLDAsMzIsNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0i'@; put 'NyIgeT0iMTIiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTYiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiww'@; put 'LDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwy'@; put 'Ny40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTYiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0x'@; put 'LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3'@; put 'LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQu'@; put 'MzUsNC4zNSwwLDAsMSwyNy40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDEzLjU2QTMuNjYsMy42NiwwLDAsMSwxOC41NywxMkg3djEuNkgxOS4wN1oiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2MS4xNmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxdi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwyOFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEwyMC40MSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk'@; put 'IGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44'@; put 'NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTIiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i'@; put 'YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAg'@; put 'ICAgICA8cmVjdCB4PSI3IiB5PSIyMyIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQs'@; put 'MTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwyNy40NiwyNy45'@; put 'MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnYzLjM0YTguNDEsOC40MSwwLDAsMSwyLDEuODF2LTZBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMi43OGE3LjQ5LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAu'@; put 'NDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1i'@; put 'YWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMzBINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjE4LjM3YTguMzQsOC4zNCwwLDAsMC0xMy40OSw5Ljc5bC0uOTMsMS4xNFpNNywxMnYxLjZIMjRWMTJabTAsNS42'@; put 'SDE4VjE2SDdabTAsN0gxN1YyM0g3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2'@; put 'LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYuMzQsMCwwLDAsMzMuODMsMjMuNTlabS0xMC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt'@; put 'cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjU5YTYuMzcsNi4zNywwLDEsMC0xMC43Nyw0LjU5bC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3QTYuMzQsNi4zNCwwLDAs'@; put 'MCwzMy44MywyMy41OVptLTEwLjc0LDBhNC4zNyw0LjM3LDAsMSwxLDQuMzcsNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjMuMSwyMy41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMu'@; put 'NjgsMTUuNEgyOS4yNWE4LjM2LDguMzYsMCwwLDEsNC43NSwzdi0zWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4wNywxMy42SDdWMTJIMTguNTdBMy42NywzLjY3LDAsMCwxLDE5'@; put 'LDkuODlMMjEuMjksNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQsMCwwLDEsMjUuNjYsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTkuMDcsMTMuNlpNMTcsMjQuNkg3VjIzSDE3Wm0xLTdIN1YxNkgxOFoiIGNsYXNzPSJj'@; put 'bHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4y'@; put 'OCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIu'@; put 'MzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0i'@; put 'Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0QTguMzQsOC4zNCww'@; put 'LDAsMSwzNCwxOC4zN3YtNkE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTcsMjQuNkg3VjIzSDE3Wm0xLTdIN1YxNkgxOFptNi00SDdWMTJIMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUg'@; put 'Y3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxoLkNsclNoYXBlQXJjaGl2ZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMzJIN1YyMkg1VjMy'@; put 'YTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyMkgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDI0YTEsMSwwLDAsMCwxLDFoNmExLDEsMCwwLDAsMC0ySDE1QTEsMSwwLDAsMCwxNCwyNFoi'@; put 'IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDE4SDZWMTRoNGEzLDMsMCwwLDEtLjY4LTEuODdzMC0uMDksMC0uMTNINS41QTEuNSwxLjUsMCwwLDAsNCwxMy41VjIwSDE2WiIgY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyNi42NnMwLC4wOSwwLC4xM0EzLDMsMCwwLDEsMjYsMTRoNHY0SDIybC0yLDJIMzJWMTMuNUExLjUsMS41LDAsMCwwLDMwLjUsMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxOS4xOGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDExLjQxbC00LDMuOTVWM2ExLDEsMCwxLDAtMiwwdjEyLjRsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDEsMjAuNiwxOCwyMmwtMS40MS0xLjRMMTYsMjBINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBIMjBaTTIyLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMCwxLDAtMmg2QTEsMSwwLDAs'@; put 'MSwyMiwyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyNi42NnMwLC4wOSwwLC4xM2EzLDMsMCwwLDEtLjg4LDIuMTJMMjIsMThIMzJWMTMuNUExLjUsMS41LDAsMCwwLDMwLjUsMTJaIiBjbGFzcz0i'@; put 'Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjIsMTQuMjVhMywzLDAsMCwxLS44OC0yLjEyczAtLjA5LDAtLjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYxOEgxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w'@; put 'YXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo'@; put 'LTQiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVVbmFyY2hpdmU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg'@; put 'Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxOEg2VjE0aDlW'@; put 'MTJINS41QTEuNSwxLjUsMCwwLDAsNCwxMy41VjIwSDE1Ljc4QTMsMywwLDAsMSwxNSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2Mmg5djRIMjFhMywzLDAsMCwxLS43OCwySDMyVjEz'@; put 'LjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43'@; put 'OCwxMS42MSw4LjEzQTEsMSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjFhMywzLDAsMCwxLTIuMjItMUg1VjMyYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyMEgy'@; put 'MC4yMUEzLDMsMCwwLDEsMTgsMjFabTQsM2ExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDEySDUuNUExLjUsMS41LDAsMCww'@; put 'LDQsMTMuNVYxOEgxNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyMXY2SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIg'@; put 'Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMyw5LjU1LDE3LDUuNlYxOGExLDEsMCwxLDAsMiwwVjUuNmw0LDMuOTVhMSwxLDAsMSwwLDEuNDEtMS40MkwxOCwxLjc4LDExLjYxLDguMTNBMSwxLDAsMCwwLDEzLDkuNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00'@; put 'IiAvPlxuICAgICAgICAnKSxoLkNsclNoYXBlQ29ubmVjdD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsMTdIMjguMjNBNi4yNSw2LjI1LDAsMCwwLDIyLDEySDE0LjE1YTYuMjUsNi4yNSwwLDAsMC02LjIxLDVIMnYySDcuOTNhNi4yMiw2LjIyLDAsMCwwLDYuMjIsNUgyMmE2LjIy'@; put 'LDYuMjIsMCwwLDAsNi4yMi01SDM0Wk0xNy4wOCwyMkgxNC4xNWE0LjE3LDQuMTcsMCwwLDEtNC4zMS00LDQuMTcsNC4xNywwLDAsMSw0LjMxLTRoMi45NFpNMjIsMjJIMTlWMTRoM2E0LjE3LDQuMTcsMCwwLDEsNC4zMSw0QTQuMTcsNC4xNywwLDAsMSwyMiwyMloiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDEySDE0LjE1YTYuMjUsNi4yNSwwLDAsMC02LjIxLDVIMnYySDcuOTNhNi4yMiw2LjIyLDAsMCwwLDYuMjIsNUgxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi'@; put 'IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMjMsMTdBNi4yNSw2LjI1LDAsMCwwLDIyLDEySDE5VjI0aDNhNi4yMiw2LjIyLDAsMCwwLDYuMjItNUgzNFYxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVEaXNj'@; put 'b25uZWN0PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4xNyw2QTYuMjEsNi4yMSwwLDAsMCw2LDExSDIuMTN2Mkg2YTYuMjMsNi4yMywwLDAsMCw2LjIxLDVIMTdWNlpNMTUuMSwxNkgxMi4xN2E0LjIsNC4yLDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00SDE1LjFa'@; put 'IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MiwyM0gzMC4xNGE2LjI1LDYuMjUsMCwwLDAtNi4yMS01SDE5djJIMTRhMSwxLDAsMSwwLDAsMmg1djRIMTRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwx'@; put 'aDV2Mmg0Ljk0YTYuMjMsNi4yMywwLDAsMCw2LjIyLTVoMy43NlptLTEwLDVIMjFWMjBoMi45NGE0LjE3LDQuMTcsMCwwLDEsNC4zMSw0QTQuMTcsNC4xNywwLDAsMSwyMy45NCwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTEyLDZhNi4yMSw2LjIxLDAsMCwwLTYuMjEsNUgydjJINS44M0E2LjIzLDYuMjMsMCwwLDAsMTIsMThIMTdWNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzksMjNIMzAuMTRhNi4yNSw2LjI1'@; put 'LDAsMCwwLTYuMjEtNUgxOXYySDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djRIMTRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDV2Mmg0Ljk0YTYuMjMsNi4yMywwLDAsMCw2LjIyLTVoMy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+'@; put 'XG4gICAgICAgICcpLGguQ2xyU2hhcGVMaW5rPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNy42LDI0LjMybC0yLjQ2LDIuNDRhNCw0LDAsMCwxLTUuNjIsMCwzLjkyLDMuOTIsMCwwLDEsMC01LjU1bDQuNjktNC42NWE0LDQsMCwwLDEsNS42MiwwLDMuODYsMy44NiwwLDAsMSwxLDEu'@; put 'NzFBMiwyLDAsMCwwLDIxLjEsMThsMS4yOS0xLjI4YTUuODksNS44OSwwLDAsMC0xLjE1LTEuNjIsNiw2LDAsMCwwLTguNDQsMEw4LjEsMTkuNzlhNS45MSw1LjkxLDAsMCwwLDAsOC4zOSw2LDYsMCwwLDAsOC40NCwwbDMuNjUtMy42MmMtLjE3LDAtLjMzLDAtLjUsMEE4LDgsMCwwLDEsMTcu'@; put 'NiwyNC4zMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjYxLDcuODJhNiw2LDAsMCwwLTguNDQsMGwtMy42NSwzLjYyYy4xNywwLC4zMywwLC40OSwwaDBhOCw4LDAsMCwxLDIuMS4yOGwyLjQ2LTIuNDRh'@; put 'NCw0LDAsMCwxLDUuNjIsMCwzLjkyLDMuOTIsMCwwLDEsMCw1LjU1bC00LjY5LDQuNjVhNCw0LDAsMCwxLTUuNjIsMCwzLjg2LDMuODYsMCwwLDEtMS0xLjcxLDIsMiwwLDAsMC0uMjguMjNsLTEuMjksMS4yOGE1Ljg5LDUuODksMCwwLDAsMS4xNSwxLjYyLDYsNiwwLDAsMCw4LjQ0LDBsNC42'@; put 'OS00LjY1YTUuOTIsNS45MiwwLDAsMCwwLTguMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZVVubGluaz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSw1LDMuNTksNi40MWw5LDlMOC4xLDE5Ljc5YTUu'@; put 'OTEsNS45MSwwLDAsMCwwLDguMzksNiw2LDAsMCwwLDguNDQsMEwyMSwyMy43OGw4LjYzLDguNjNMMzEsMzFaTTE1LjEzLDI2Ljc2YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAtNS41NUwxNCwxNi43OWw1LjU4LDUuNThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS41Myw5LjIyYTQsNCwwLDAsMSw1LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC43OSw0Ljc2TDIzLjc4LDIxbDQuNzktNC43NmE1LjkyLDUuOTIsMCwwLDAsMC04LjM5LDYsNiwwLDAsMC04LjQ0LDBsLTQu'@; put 'NzYsNC43NEwxNi43OCwxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAnKSxoLkNsclNoYXBlQ2xvdWROZXR3b3JrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC43MSwxNS4xOHYtMUExMS4yOCwxMS4yOCwwLDAsMCwxOS41'@; put 'NiwyLjgzaC0uMTFhMTEuMjgsMTEuMjgsMCwwLDAtMTEsOC45Myw3LjQ3LDcuNDcsMCwwLDAsMCwxNC45NEgyOS4xM2E1Ljg2LDUuODYsMCwwLDAsMS41OC0xMS41MlpNMjkuMTMsMjQuN0g4LjQ2YTUuNDcsNS40NywwLDEsMSwwLTEwLjk0aDEuNjlsLjExLS44N2E5LjI3LDkuMjcsMCwwLDEs'@; put 'MTguNDUsMS4zdjEuMjhjMCwuMDksMCwuMTgsMCwuMjdsLS4wNywxLjE1Ljk0LjExYTMuODYsMy44NiwwLDAsMS0uNDMsNy43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjU4LDMxLjE4SDE4Ljg1di0y'@; put 'LjRoLTJ2Mi40SDYuMDhhMSwxLDAsMCwwLDAsMmgyMy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUNsb3VkU2NhbGU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYuMzIsMTEu'@; put 'MTFINy44NEw4LDEwLjI0QTcuMTksNy4xOSwwLDAsMSwxNS4wNyw0aC4wN2E3LjE1LDcuMTUsMCwwLDEsNC43MSwxLjgzLDExLjEsMTEuMSwwLDAsMSwzLjA5LjY0QTkuMTgsOS4xOCwwLDAsMCwxNS4xNiwyaC0uMDlBOS4yLDkuMiwwLDAsMCw2LjEzLDkuMTEsNi4xNSw2LjE1LDAsMCwwLDIu'@; put 'MzMsMTkuOTUsOC4wOSw4LjA5LDAsMCwxLDMsMTcuNzFhNC4xMiw0LjEyLDAsMCwxLS44MS0yLjQ0QTQuMTYsNC4xNiwwLDAsMSw2LjMyLDExLjExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuNCwxNi45'@; put 'MWgxLjUyTDEyLDE2YTcuMTksNy4xOSwwLDAsMSw3LjEyLTYuMjVoLjA3YTcuMTcsNy4xNywwLDAsMSw1LjcsMi45MiwxMS4wNSwxMS4wNSwwLDAsMSwyLjcyLjc3LDkuMiw5LjIsMCwwLDAtOC40LTUuNjloLS4wOWE5LjIsOS4yLDAsMCwwLTguOTQsNy4xMiw2LjE1LDYuMTUsMCwwLDAtMy42'@; put 'NCwxMSw4LjExLDguMTEsMCwwLDEsLjc5LTIsNC4xNCw0LjE0LDAsMCwxLDMtN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjQyLDI0LjQ3di0uNjJhOS4xOCw5LjE4LDAsMCwwLTE4LjEzLTIuMTZBNi4x'@; put 'Niw2LjE2LDAsMCwwLDE0LjQ4LDM0SDMxYTQuODgsNC44OCwwLDAsMCwxLjQ2LTkuNTNaTTMxLDMySDE0LjQ4YTQuMTYsNC4xNiwwLDEsMSwwLTguMzJIMTZsLjExLS44N2E3LjE5LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjIxLDcuMjEsMCwwLDEsNy4xMiw3LjI1djFjMCwuMDcsMCwu'@; put 'MTMsMCwuMmwtLjA3LDEuMTEuOTQuMTFBMi44OCwyLjg4LDAsMCwxLDMxLDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVDbG91ZFRyYWZmaWM9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjU0LDIw'@; put 'LjgyYS44OC44OCwwLDAsMC0uODgtLjg4SDIwLjc1bDEuMS0xLjFBLjg4Ljg4LDAsMCwwLDIwLjYsMTcuNmwtMy4yMSwzLjIyTDIwLjYsMjRhLjg4Ljg4LDAsMSwwLDEuMjUtMS4yNEwyMC43NiwyMS43aDQuOUEuODguODgsMCwwLDAsMjYuNTQsMjAuODJaIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4yNywyMS43YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAg'@; put 'ICA8cGF0aCBkPSJNMzIuMjEsMjBoLS4wNmEuODUuODUsMCwwLDAtLjg1Ljg4LjkxLjkxLDAsMCwwLC45MS44OC44OC44OCwwLDEsMCwwLTEuNzZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41OSwxMWEu'@; put 'ODguODgsMCwwLDAtMS4yNSwxLjI0bDEuMSwxLjFIMjcuNTNhLjg4Ljg4LDAsMSwwLDAsMS43Nmg0LjlsLTEuMDksMS4wOWEuODguODgsMCwwLDAsMS4yNSwxLjI0bDMuMjEtMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAg'@; put 'PHBhdGggZD0iTTI0LjUsMTUuMDdhLjg4Ljg4LDAsMSwwLDAtMS43NmgtLjU4YS44OC44OCwwLDEsMCwwLDEuNzZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS45LDE0LjI3YS44NS44NSwwLDAsMC0uODUt'@; put 'Ljg4SDIxYS44OC44OCwwLDEsMCwwLDEuNzZBLjkxLjkxLDAsMCwwLDIxLjksMTQuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4zNiwyMy42NWMwLC4xMywwLC4yNiwwLC4zOWEzLjc3LDMuNzcsMCww'@; put 'LDEtMy42MiwzLjg5SDcuMjhhNS4zMiw1LjMyLDAsMCwxLTUuMTMtNS40OEE1LjMyLDUuMzIsMCwwLDEsNy4yOCwxN0g4LjkxTDksMTYuMTJhOC45Miw4LjkyLDAsMCwxLDguNjItOGguMDhhOC40OSw4LjQ5LDAsMCwxLDYuNTYsMy4yOWgyLjM3YTEwLjU1LDEwLjU1LDAsMCwwLTguOTEtNS4y'@; put 'NWgtLjExQTEwLjgyLDEwLjgyLDAsMCwwLDcuMjIsMTVhNy4yOCw3LjI4LDAsMCwwLTcsNy40Myw3LjI3LDcuMjcsMCwwLDAsNy4wOCw3LjQzSDI2Ljc3QTUuNzIsNS43MiwwLDAsMCwzMi4zNSwyNGEzLjc3LDMuNzcsMCwwLDAsMC0uMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZURlcGxveT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDJIMjIuMWExLDEsMCwwLDAsMCwyaDguNTNsLTguODIsOWExLDEsMCwxLDAs'@; put 'MS40MywxLjRMMzIsNS40NlYxMy45YTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsMzMsMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTEuNTQsMTAuNzNsLTksNS4xN2ExLDEsMCwwLDAtLjUuODd2MTFhMSwx'@; put 'LDAsMCwwLC41Ljg3bDksNS4xNWExLDEsMCwwLDAsMSwwbDktNS4xNWExLDEsMCwwLDAsLjUtLjg3di0xMWExLDEsMCwwLDAtLjUtLjg3bC05LTUuMTdBMSwxLDAsMCwwLDExLjU0LDEwLjczWk0xMSwzMS4wOGwtNy00VjE4LjQ0bDcsNFpNMTIsMjEsNC44MSwxNi44NywxMiwxMi43OGw3LjIx'@; put 'LDQuMTJabTgsNi4wOS03LDRWMjIuNDRsNy00WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDJIMjIuMWExLDEsMCwwLDAsMCwyaDguNTNsLTguODIsOWExLDEsMCwxLDAsMS40MywxLjRMMzIsNS40NlYxMy45YTEs'@; put 'MSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsMzMsMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMi40NiwxMC43M2ExLDEsMCwwLDAtMSwwbC04LjY4LDVMMTIsMjFsOS4xOS01LjI2WiIvPlxuICAgICAgICAgICAgPHBh'@; put 'dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTIsMjcuNzNhMSwxLDAsMCwwLC41Ljg3TDExLDMzLjQ2di0xMUwyLDE3LjI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTEzLDMzLjQ2'@; put 'bDguNS00Ljg2YTEsMSwwLDAsMCwuNS0uODdWMTcuMjlsLTksNS4xNVoiLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUhlbGl4PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC44OCwxMy4wN2EuOS45LDAsMCwx'@; put 'LS40OS0xLjY2bDguOTMtNS43M2EuOS45LDAsMSwxLDEsMS41Mkw5LjM3LDEyLjkyQS45LjksMCwwLDEsOC44OCwxMy4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTMuMjUsMTUuMTFhLjkuOSwwLDAsMS0u'@; put 'NDktMS42NkwxOCwxMC4wOGEuOS45LDAsMSwxLDEsMS41MkwxMy43NCwxNUEuOS45LDAsMCwxLDEzLjI1LDE1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOS43MiwzMC4yM2EuOS45LDAsMCwxLS40OS0x'@; put 'LjY2bDguOTMtNS43M2EuOS45LDAsMCwxLDEsMS41MkwyMC4yLDMwLjA5QS45LjksMCwwLDEsMTkuNzIsMzAuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LjkyLDI1Ljk0YS45LjksMCwwLDEtLjQ5LTEu'@; put 'NjZsNS4yNS0zLjM3YS45LjksMCwxLDEsMSwxLjUxTDE5LjQsMjUuOEEuODkuODksMCwwLDEsMTguOTIsMjUuOTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTIxLjU2LDUuNjlhMy41OSwzLjU5LDAsMCwxLC4x'@; put 'NSwzLjUzTDE4LjgzLDE1aDIuMjVsMi40My00Ljg3YTUuNjEsNS42MSwwLDAsMC01LTguMTRIMTMuMjZsLTEsMmg2LjIyQTMuNjEsMy42MSwwLDAsMSwyMS41Niw1LjY5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9'@; put 'Ik0zMi45MSwyMC43OEE1LjUzLDUuNTMsMCwwLDAsMjcuNjYsMTdIOS4zMWEzLjU0LDMuNTQsMCwwLDEtMy41Ni0zLjY3LDMuNjEsMy42MSwwLDAsMSwuNDItMS41NGw0LjI2LTguNDlhMSwxLDAsMSwwLTEuNzktLjlMNC40LDEwLjg0QTUuNjcsNS42NywwLDAsMCw0LDE1LjIyLDUuNTMsNS41'@; put 'MywwLDAsMCw5LjI4LDE5aDcuNmwtMy40NCw2Ljg3YTUuNjQsNS42NCwwLDAsMCwxLjUsNi45MkE1LjM4LDUuMzgsMCwwLDAsMTguNDEsMzRoNS4yNWwxLTJIMTguNDNhMy41OCwzLjU4LDAsMCwxLTMuMjItNS4yMUwxOS4xMSwxOWg4LjU0YTMuNDIsMy40MiwwLDAsMSwyLjE1LjcxLDMuNTcs'@; put 'My41NywwLDAsMSwxLDQuNDNsLTQuMTIsOC4yMmExLDEsMCwxLDAsMS43OS45bDQuMDYtOC4xQTUuNjcsNS42NywwLDAsMCwzMi45MSwyMC43OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4xNiwxOS42M0E1LjU1'@; put 'LDUuNTUsMCwwLDAsMjcuNDIsMTdIMTAuMDZhNC4zNiw0LjM2LDAsMCwxLTMuNjctMiw0LjA3LDQuMDcsMCwwLDEtLjE5LTQuMTNsMy42Mi03LDEuNDIsMS42My0yLjc0LDUuMyw4Ljg0LTUuNjZhLjkxLjkxLDAsMCwxLDEsMS41M0w3Ljg0LDEzLjM4YTIuMTMsMi4xMywwLDAsMCwuMjQuNTIs'@; put 'Mi4yOCwyLjI4LDAsMCwwLDEuNjUsMUwxOC4xMSw5LjVhLjkxLjkxLDAsMCwxLDEsMS41MkwxMywxNC45NEgyMC44bDIuNDEtNC44MmE1LjYsNS42LDAsMCwwLTUtOC4xMkg5YTEsMSwwLDAsMC0uOS41NkwzLjg4LDEwLjg5YTUuNiw1LjYsMCwwLDAsNSw4LjEyaDcuNjVsLTMuNDMsNi44N2E1'@; put 'LjYsNS42LDAsMCwwLDUsOC4xMmg5LjI4YTEsMSwwLDAsMCwuOTMtLjY1bDQuMTQtOC4yNEE1LjU4LDUuNTgsMCwwLDAsMzIuMTYsMTkuNjNaTTE3Ljc1LDI1LjU3QS45MS45MSwwLDAsMSwxOCwyNC4zMWw2LTMuODhBLjkxLjkxLDAsMSwxLDI1LDIybC02LDMuODhhLjkxLjkxLDAsMCwxLTEu'@; put 'MjYtLjI3Wk0yOSwyNC4zNGwtOSw1Ljc4YS45MS45MSwwLDEsMS0xLTEuNTNsOS01Ljc4YS45MS45MSwwLDEsMSwxLDEuNTNaIi8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVGbGFzaz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDMsMjcuMjgsMjMsMTQuODRWNGgxYTEsMSwwLDAs'@; put 'MCwwLTJIMTJhMSwxLDAsMCwwLDAsMmgxVjE0Ljg0TDQuNTEsMjcuMzZBNC4yOSw0LjI5LDAsMCwwLDUsMzIuOCw0LjM4LDQuMzgsMCwwLDAsOC4xNSwzNEgyOGE0LjI0LDQuMjQsMCwwLDAsMy40Mi02LjcyWk0yOS44NSwzMWEyLjYyLDIuNjIsMCwwLDEtMiwxSDhhMi4yLDIuMiwwLDAsMS0y'@; put 'LjA2LTEuNDEsMi42OCwyLjY4LDAsMCwxLC4yOS0yLjE3bDMtNC40NCwxNCwwLTEuMzEtMkgxMC41N0wxNSwxNS40NlY0aDZWMTUuNDZsOC44NCwxMy4wNUEyLjIzLDIuMjMsMCwwLDEsMjkuODUsMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg'@; put 'ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40OSwyNy40LDIzLDE0Ljk0VjRoMWExLDEsMCwwLDAsMC0ySDEyLjA4YTEsMSwwLDAsMCwwLDJIMTNWMTQuOTRMNC41OCwyNy4zMWE0LjMxLDQuMzEsMCwwLDAtLjc4LDNBNC4yMyw0LjIzLDAsMCwwLDgsMzRIMjcuODZBNC4zNiw0LjM2LDAsMCwwLDMx'@; put 'LDMyLjgsNC4yMyw0LjIzLDAsMCwwLDMxLjQ5LDI3LjRaTTE1LDE1LjQ5VjRoNlYxNS40OUwyNi4xNSwyM0g5Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZUFkbWluaXN0cmF0b3I9KDAscy5jbHJJY29uU1ZHKSgn'@; put 'PHBhdGggZD0iTTE0LjY4LDE0LjgxYTYuNzYsNi43NiwwLDEsMSw2Ljc2LTYuNzVBNi43Nyw2Ljc3LDAsMCwxLDE0LjY4LDE0LjgxWm0wLTExLjUxYTQuNzYsNC43NiwwLDEsMCw0Ljc2LDQuNzZBNC43Niw0Ljc2LDAsMCwwLDE0LjY4LDMuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2LjQyLDMxLjY4QTIuMTQsMi4xNCwwLDAsMSwxNS44LDMwSDRWMjQuMjJhMTQuODEsMTQuODEsMCwwLDEsMTEuMDktNC42OGwuNzIsMGEyLjIsMi4yLDAsMCwxLC42Mi0xLjg1bC4xMi0uMTFjLS40NywwLTEtLjA2'@; put 'LTEuNDYtLjA2QTE2LjQ3LDE2LjQ3LDAsMCwwLDIuMiwyMy4yNmExLDEsMCwwLDAtLjIuNlYzMGEyLDIsMCwwLDAsMiwySDE2LjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NywxNi4yOWEuMzcuMzcs'@; put 'MCwwLDEsLjE1LDAsLjQyLjQyLDAsMCwwLS4xNSwwWiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDIzLjMybC0yLS42MWE3LjIxLDcuMjEsMCwwLDAtLjU4LTEuNDFsMS0xLjg2QS4zOC4zOCwwLDAs'@; put 'MCwzMiwxOWwtMS40NS0xLjQ1YS4zNi4zNiwwLDAsMC0uNDQtLjA3bC0xLjg0LDFhNy4xNSw3LjE1LDAsMCwwLTEuNDMtLjYxbC0uNjEtMmEuMzYuMzYsMCwwLDAtLjM2LS4yNEgyMy44MmEuMzYuMzYsMCwwLDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42bC0xLjgyLTFhLjM1LjM1'@; put 'LDAsMCwwLS40My4wN0wxNy42OSwxOWEuMzguMzgsMCwwLDAtLjA2LjQ0bDEsMS44MkE2Ljc3LDYuNzcsMCwwLDAsMTgsMjIuNjlsLTIsLjZhLjM2LjM2LDAsMCwwLS4yNi4zNXYyLjA1QS4zNS4zNSwwLDAsMCwxNiwyNmwyLC42MWE3LDcsMCwwLDAsLjYsMS40MWwtMSwxLjkxYS4zNi4zNiww'@; put 'LDAsMCwuMDYuNDNsMS40NSwxLjQ1YS4zOC4zOCwwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMmEuMzguMzgsMCwwLDAsLjM1LjI2aDIuMDVhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTIuMDVhNi45Miw2LjkyLDAsMCwwLDEuMzgtLjU3bDEuODksMWEu'@; put 'MzYuMzYsMCwwLDAsLjQzLS4wN0wzMiwzMC40QS4zNS4zNSwwLDAsMCwzMiwzMGwtMS0xLjg4YTcsNywwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzYuMzYsMCwwLDAsLjI2LS4zNVYyMy42N0EuMzYuMzYsMCwwLDAsMzMuNjgsMjMuMzJaTTI0Ljg1LDI4YTMuMzQsMy4zNCwwLDEsMSwzLjMzLTMu'@; put 'MzNBMy4zNCwzLjM0LDAsMCwxLDI0Ljg1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNC42NyIgY3k9IjguMyIgcj0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5c'@; put 'biAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40NCwzMS44MmEyLjE1LDIuMTUsMCwwLDEtLjM4LTIuNTVsLjUzLTEtMS4wOS0uMzNBMi4xNCwyLjE0LDAsMCwxLDE0LDI1Ljg0VjIzLjc5YTIuMTYsMi4xNiwwLDAsMSwxLjUzLTIuMDdsMS4wOS0uMzMtLjUyLTFhMi4xNywyLjE3LDAsMCwxLC4z'@; put 'NS0yLjUyLDE4LjkyLDE4LjkyLDAsMCwwLTIuMzItLjE2QTE1LjU4LDE1LjU4LDAsMCwwLDIsMjMuMDd2Ny43NWExLDEsMCwwLDAsMSwxSDE2LjQ0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43LDIzLjQ2bC0y'@; put 'LS42YTYuNzMsNi43MywwLDAsMC0uNTgtMS40MmwxLTEuODZhLjM1LjM1LDAsMCwwLS4wNy0uNDNsLTEuNDUtMS40NmEuMzguMzgsMCwwLDAtLjQzLS4wN2wtMS44NSwxYTcuNzQsNy43NCwwLDAsMC0xLjQzLS42bC0uNjEtMmEuMzguMzgsMCwwLDAtLjM2LS4yNUgyMy44NGEuMzguMzgsMCww'@; put 'LDAtLjM1LjI2bC0uNiwyYTYuODUsNi44NSwwLDAsMC0xLjQ1LjYxbC0xLjgxLTFhLjM4LjM4LDAsMCwwLS40NC4wNmwtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyQTcuMjQsNy4yNCwwLDAsMCwxOCwyMi44M2wtMiwuNjFhLjM2LjM2LDAsMCwwLS4yNi4zNXYyLjA1YS4z'@; put 'Ni4zNiwwLDAsMCwuMjYuMzVsMiwuNjFhNy4yOSw3LjI5LDAsMCwwLC42LDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTkuMTYsMzJhLjM4LjM4LDAsMCwwLC40NC4wNmwxLjg3LTFhNy4wOSw3LjA5LDAsMCwwLDEuNC41N2wuNiwyLjA1YS4zOC4zOCwwLDAsMCwuMzYuMjZoMi4w'@; put 'NWEuMzguMzgsMCwwLDAsLjM1LS4yNmwuNi0yLjA1YTYuNjgsNi42OCwwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM4LjM4LDAsMCwwLC40NC0uMDZMMzIsMzAuNTVhLjM4LjM4LDAsMCwwLC4wNi0uNDRsLTEtMS44OGE2LjkyLDYuOTIsMCwwLDAsLjU3LTEuMzhsMi0uNjFhLjM5LjM5LDAsMCww'@; put 'LC4yNy0uMzVWMjMuODJBLjQuNCwwLDAsMCwzMy43LDIzLjQ2Wm0tOC44Myw0LjcyYTMuMzQsMy4zNCwwLDEsMSwzLjMzLTMuMzRBMy4zNCwzLjM0LDAsMCwxLDI0Ljg3LDI4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgJyksaC5DbHJT'@; put 'aGFwZUhhcmREcml2ZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsOGEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJaTTMyLDI4SDRWOEgzMlYyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt'@; put 'cGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNz'@; put 'PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5'@; put 'LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjg4LDE4LjA4YTMuNTksMy41OSwwLDEsMCwzLjU5LTMuNTksMy44NCwzLjg0LDAsMCwwLS45MS4xM0wxNSwxNi4xNmEy'@; put 'LjA4LDIuMDgsMCwwLDEsLjUtLjA3LDIsMiwwLDEsMS0yLDIsMS42NCwxLjY0LDAsMCwxLC4wOC0uNUwxMiwxNy4xNkEzLjUzLDMuNTMsMCwwLDAsMTEuODgsMTguMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9'@; put 'Ik0xNS40NywyNS43M2E3LjY2LDcuNjYsMCwwLDEtNy42NS03LjY1LDcuNTUsNy41NSwwLDAsMSwuMjctMkw2LjU0LDE1LjdhOS4yNCw5LjI0LDAsMCwwLDE3LjgsNC45NUgyMi42NkE3LjY0LDcuNjQsMCwwLDEsMTUuNDcsMjUuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4yMiwxNy44M2EuOC44LDAsMCwwLS44LS44SDI0LjY2YTkuMjYsOS4yNiwwLDAsMC05LjE5LTguMiw5LjM2LDkuMzYsMCwwLDAtMi4zOC4zMmwuNDIsMS41NGE3Ljg2LDcuODYsMCwwLDEsMi0uMjZBNy42Niw3LjY2LDAs'@; put 'MCwxLDIzLDE3SDIwLjkyYS44LjgsMCwwLDAsMCwxLjZoNi41QS44LjgsMCwwLDAsMjguMjIsMTcuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAs'@; put 'MiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTIsMTcuMTZsMS41NC40MmExLjY0LDEuNjQsMCwwLDAtLjA4LjUsMiwyLDAsMSwwLDItMiwyLjA4LDIuMDgsMCwwLDAtLjUuMDdsLS40MS0xLjU0YTMuODQsMy44NCwwLDAsMSwuOTEtLjEzLDMuNTksMy41OSwwLDEsMS0z'@; put 'LjU5LDMuNTlBMy41MywzLjUzLDAsMCwxLDEyLDE3LjE2Wk01LjMxLDhBMS4yNSwxLjI1LDAsMSwxLDQuMDYsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4zMSw4Wm0wLDIwLjA2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMzEsMjguMDZabTEwLjE2LS43M0E5'@; put 'LjIyLDkuMjIsMCwwLDEsNi41NCwxNS43bDEuNTUuNDFhNy41NSw3LjU1LDAsMCwwLS4yNywyLDcuNjQsNy42NCwwLDAsMCwxNC44NCwyLjU3aDEuNjhBOS4yNSw5LjI1LDAsMCwxLDE1LjQ3LDI3LjMzWm0xMi04LjdoLTYuNWEuOC44LDAsMCwxLDAtMS42SDIzYTcuNjYsNy42NiwwLDAsMC03'@; put 'LjU3LTYuNiw3Ljg2LDcuODYsMCwwLDAtMiwuMjZsLS40Mi0xLjU0YTkuMzYsOS4zNiwwLDAsMSwyLjM4LS4zMkE5LjI2LDkuMjYsMCwwLDEsMjQuNjYsMTdoMi43NmEuOC44LDAsMCwxLDAsMS42Wm0zLjM5LDkuNDNhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEs'@; put 'MzAuODEsMjguMDZabTAtMTcuNTZhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuODEsMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcz0oMCxzLmNscklj'@; put 'b25TVkcpKCc8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQuMjYsNEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCwwLDMuNzQsMjJINFY2SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4g'@; put 'ICAgICAgICAgICA8cGF0aCBkPSJNMzAsOS43NEExLjc0LDEuNzQsMCwwLDAsMjguMjYsOEg3Ljc0QTEuNzQsMS43NCwwLDAsMCw2LDkuNzRWMjQuMjZBMS43NCwxLjc0LDAsMCwwLDcuNzQsMjZIOFYxMEgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAv'@; put 'PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEuNzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCwwLDAsMCwzMi4yNiwxMlpNMzIsMjhI'@; put 'MTJWMTRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwyMy42OGEyLjY0LDIuNjQsMCwxLDAtMi43LTIuNjNBMi42NywyLjY3LDAsMCwwLDE5Ljk0LDIzLjY4Wm0wLTMuODdhMS4yNCwxLjI0LDAs'@; put 'MSwxLTEuMjksMS4yNEExLjI3LDEuMjcsMCwwLDEsMTkuOTQsMTkuODFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwxNi4yMmE0LjkzLDQuOTMsMCwwLDEsNC45NSw0LjM1SDIzLjcxVjIyaDQuNDFh'@; put 'LjcuNywwLDAsMCwwLTEuNEgyNi4zMWE2LjMzLDYuMzMsMCwwLDAtNi4zNy01Ljc1LDYuNTgsNi41OCwwLDAsMC0xLjQ4LjE3bC4zNSwxLjM3QTQuNzMsNC43MywwLDAsMSwxOS45NCwxNi4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAg'@; put 'ICAgICAgPHBhdGggZD0iTTE5Ljk0LDI3LjI3YTYuNDIsNi40MiwwLDAsMCw1LjY3LTMuMzVIMjMuOTNhNSw1LDAsMCwxLTQsMS45NSw0LjkxLDQuOTEsMCwwLDEtNS00LjgyLDUuMTYsNS4xNiwwLDAsMSwuMDgtLjc5TDEzLjYzLDIwYTcsNywwLDAsMC0uMDksMUE2LjMyLDYuMzIsMCwwLDAs'@; put 'MTkuOTQsMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiw1Ljc0QTEuNzQsMS43NCwwLDAsMCwyNC4yNiw0SDMuNzRBMS43NCwxLjc0LDAsMCwwLDIsNS43NFYyMC4yNkExLjc0LDEuNzQsMCwwLDAs'@; put 'My43NCwyMkg0VjZIMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3'@; put 'Ljc0LDI2SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYyLDIyLjZBMS41NSwxLjU1LDAsMSwwLDE4LDIxLjA1LDEuNiwxLjYsMCwwLDAsMTkuNjIsMjIuNloiIGNsYXNzPSJjbHItaS1zb2xpZCBj'@; put 'bHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMjYsMTJIMTEuNzRBMS43NCwxLjc0LDAsMCwwLDEwLDEzLjc0VjI4LjI2QTEuNzQsMS43NCwwLDAsMCwxMS43NCwzMEgzMi4yNkExLjc0LDEuNzQsMCwwLDAsMzQsMjguMjZWMTMuNzRBMS43NCwxLjc0LDAs'@; put 'MCwwLDMyLjI2LDEyWk0xOS42MiwxNy43NGEzLjMxLDMuMzEsMCwxLDEtMy4zOCwzLjMxQTMuMzUsMy4zNSwwLDAsMSwxOS42MiwxNy43NFptMCwxMS4xM2E3Ljk0LDcuOTQsMCwwLDEtOC03LjgyLDcuODMsNy44MywwLDAsMSwuMTEtMS4yOWwxLjc1LjNhNS4zNiw1LjM2LDAsMCwwLS4xMSwx'@; put 'LDYuMTgsNi4xOCwwLDAsMCw2LjI4LDYuMDYsNi4zNSw2LjM1LDAsMCwwLDUtMi40NmgyLjFBOC4wNiw4LjA2LDAsMCwxLDE5LjYyLDI4Ljg3Wk0yOS44OSwyMi4ySDI0LjM2VjIwLjQ0aDEuNDhBNi4xOSw2LjE5LDAsMCwwLDE5LjYyLDE1YTYuNDgsNi40OCwwLDAsMC0xLjQxLjE2bC0uNDUt'@; put 'MS43YTguMTYsOC4xNiwwLDAsMSwxLjg2LS4yMiw4LDgsMCwwLDEsOCw3LjIxaDIuMjZhLjg4Ljg4LDAsMCwxLDAsMS43NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVOVk1lPSgwLHMuY2xySWNvblNWRykoJzxwYXRo'@; put 'IGQ9Ik0yNywyMlYxNGEyLDIsMCwwLDAtMi0ySDExYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwySDI1QTIsMiwwLDAsMCwyNywyMlpNMTEsMTRIMjV2OEgxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0i'@; put 'MTkiIHk9IjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjYiIHdpZHRoPSIxLjk3IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuOCw4SDE2Ljg3VjZoLTExTDcuNzgsNC4wOGExLDEsMCwwLDAsMC0xLjQyLDEsMSwwLDAsMC0xLjQxLDBMMiw3LDYuMzcsMTEuNGExLDEsMCwwLDAsMS40MSwwLDEsMSwwLDAsMCwwLTEuNDFaIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS42MSwyNC42OGExLDEsMCwwLDAtMS40MSwwLDEsMSwwLDAsMCwwLDEuNDJMMzAuMSwyOEgxOXYySDMwLjJsLTIsMmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCww'@; put 'LDAsLjcxLS4yOUwzNCwyOS4wNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTMiIHk9IjI4IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIg'@; put 'Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjkiIHk9IjI4IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgJyksaC5DbHJTaGFwZVNTRD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0'@; put 'QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI2LjIxIiBjeT0iMTAu'@; put 'MjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjkuODEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAg'@; put 'ICAgICA8Y2lyY2xlIGN4PSI2LjIxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjkuODEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTguNjJjMS4zMi4zMSwxLjkxLjU0LDEuOTEsMS4yMnMtLjUzLDEuMDktMS41NSwxLjA5YTQsNCwwLDAsMS0yLjcxLTEuMTFsLS44NiwxLjA2YTUsNSwwLDAsMCwzLjUyLDEuMzRjMiwwLDMuMS0xLDMuMS0y'@; put 'LjUycy0xLjE1LTIuMDUtMi44Ny0yLjQ0Yy0xLjMxLS4zLTEuOTItLjU0LTEuOTItMS4yMUExLjI1LDEuMjUsMCwwLDEsMTAsMTVhMy42OCwzLjY4LDAsMCwxLDIuMzcsMWwuODEtMS4xQTQuNTgsNC41OCwwLDAsMCwxMCwxMy42OWMtMS43NCwwLTMsMS4wNS0zLDIuNDlTOC4yNiwxOC4yMiwx'@; put 'MCwxOC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjgzLDIwLjkzYTQsNCwwLDAsMS0yLjcxLTEuMTFsLS44NiwxLjA2YTUsNSwwLDAsMCwzLjUyLDEuMzRjMiwwLDMuMS0xLDMuMS0yLjUyUzE5Ljcz'@; put 'LDE3LjY1LDE4LDE3LjI2Yy0xLjMxLS4zLTEuOTItLjU0LTEuOTItMS4yMUExLjI1LDEuMjUsMCwwLDEsMTcuNDgsMTVhMy42OCwzLjY4LDAsMCwxLDIuMzcsMWwuODEtMS4xYTQuNTYsNC41NiwwLDAsMC0zLjEyLTEuMTVjLTEuNzMsMC0zLDEuMDUtMywyLjQ5czEuMTksMiwyLjg5LDIuNDRj'@; put 'MS4zMi4zMSwxLjkxLjU0LDEuOTEsMS4yMlMxOC44NSwyMC45MywxNy44MywyMC45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjksMThjMC0yLjQxLTEuOTItNC4xMi00LjY0LTQuMTJoLTIuOXY4LjI0'@; put 'aDIuOUMyOCwyMi4wOCwyOS45LDIwLjM3LDI5LjksMThabS02LTIuNzZoMS41NmEyLjc3LDIuNzcsMCwxLDEsMCw1LjUzSDIzLjg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwy'@; put 'LDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTUuMjEsOEExLjI1LDEuMjUsMCwxLDEsNCw5LjI1LDEuMjUsMS4yNSwwLDAsMSw1LjIxLDhabTAsMjBhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsNS4yMSwyOFpt'@; put 'NS4wNi01Ljc4YTUsNSwwLDAsMS0zLjUyLTEuMzRsLjg2LTEuMDZhNCw0LDAsMCwwLDIuNzEsMS4xMWMxLDAsMS41NS0uNSwxLjU1LTEuMDlzLS41OS0uOTEtMS45MS0xLjIyYy0xLjctLjQtMi44OS0uODktMi44OS0yLjQ0czEuMjItMi40OSwzLTIuNDlhNC41OCw0LjU4LDAsMCwxLDMuMTIs'@; put 'MS4xNWwtLjgxLDEuMUEzLjY4LDMuNjgsMCwwLDAsMTAsMTVhMS4yNSwxLjI1LDAsMCwwLTEuMzksMS4wOGMwLC42Ny42MS45MSwxLjkyLDEuMjEsMS43Mi4zOSwyLjg3Ljk0LDIuODcsMi40NFMxMi4yNCwyMi4yMiwxMC4yNywyMi4yMlptNy41MSwwYTUsNSwwLDAsMS0zLjUyLTEuMzRsLjg2'@; put 'LTEuMDZhNCw0LDAsMCwwLDIuNzEsMS4xMWMxLDAsMS41NS0uNSwxLjU1LTEuMDlzLS41OS0uOTEtMS45MS0xLjIyYy0xLjctLjQtMi44OS0uODktMi44OS0yLjQ0czEuMjMtMi40OSwzLTIuNDlhNC41Niw0LjU2LDAsMCwxLDMuMTIsMS4xNWwtLjgxLDEuMWEzLjY4LDMuNjgsMCwwLDAtMi4z'@; put 'Ny0xLDEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45MiwxLjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRTMTkuNzUsMjIuMjIsMTcuNzgsMjIuMjJabTQuNTgtLjE0VjEzLjg0aDIuOWMyLjcyLDAsNC42NCwxLjcxLDQuNjQsNC4xMlMyOCwyMi4wOCwyNS4yNiwy'@; put 'Mi4wOFpNMzAuNjksMjhhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuNjksMjhabTAtMTcuNWExLjI1LDEuMjUsMCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSwzMC42OSwxMC41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt'@; put 'MSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwxNS4yaDEuNTZhMi43NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGguQ2xyU2hhcGVCbHVldG9vdGg9KDAscy5jbHJJY29uU1ZH'@; put 'KSgnPHBhdGggZD0iTTI2LjY0LDI1LjI3LDE5LDE3LjUzLDE5LDMsMjUuMjEsOS40bC01LjY1LDUuNzlMMjEsMTYuNjJsNS42OC01LjgyYTIsMiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIuMDgsMi4wOCwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzVjE1LjM4TDEwLjA1LDguMjdBMSwx'@; put 'LDAsMCwwLDguNjIsOS42NkwxNi43OSwxOCw5LjA2LDI2YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLC43LjI5LDEsMSwwLDAsMCwuNzItLjMxTDE3LDIwLjY4VjMzYTIuMDcsMi4wNywwLDAsMCwuNzEsMS42MkEyLDIsMCwwLDAsMTksMzVhMS45NCwxLjk0LDAsMCwwLDEuNDItLjZsNi4y'@; put 'My02LjM4QTIsMiwwLDAsMCwyNi42NCwyNS4yN1pNMTksMzMuMDVWMjAuMjlsNi4yMSw2LjM2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gIDxwYXRoIGQ9Ik0yNi41MiwyNC41MmwtNS42NS01LjgzLTEuNDYtMS41di0xMkwyMy43OSw5LjdsLTMu'@; put 'NiwzLjcxLDIuMjQsMi4yOSw0LjA5LTQuMjJhMi41NCwyLjU0LDAsMCwwLDAtMy41NkwyMC41NywxLjc4QTIuNTQsMi41NCwwLDAsMCwxNi4yLDMuNTVWMTMuODZsLTUuNTMtNS43YTEuNiwxLjYsMCwxLDAtMi4zLDIuMjNMMTUuNzUsMThsLTcsNy4xOWExLjYsMS42LDAsMCwwLDAsMi4yNiwx'@; put 'LjYzLDEuNjMsMCwwLDAsMS4xMi40NSwxLjU4LDEuNTgsMCwwLDAsMS4xNS0uNDlsNS4xMS01LjI3VjMyLjQ1YTIuNTMsMi41MywwLDAsMCwxLjU5LDIuMzYsMi40NCwyLjQ0LDAsMCwwLC45NS4xOSwyLjU2LDIuNTYsMCwwLDAsMS44My0uNzdsNS45NS02LjE1QTIuNTQsMi41NCwwLDAsMCwy'@; put 'Ni41MiwyNC41MlpNMTkuNCwzMC44M1YyMS43N2w0LjM5LDQuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVCbHVldG9vdGhPZmY9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDMsMjUuMjIsOS40bC01LjY2LDUuOEwyMSwx'@; put 'Ni42M2w1LjY4LTUuODNhMiwyLDAsMCwwLDAtMi43OEwyMC40OCwxLjdBMiwyLDAsMCwwLDE4Ljg1LDEsMiwyLDAsMCwwLDE3LDN2MTEuNGwyLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNC43Nyw1LDMuMzYsNi40MiwxNS44OSwx'@; put 'OSw5LjA2LDI2YTEsMSwwLDAsMCwuNzEsMS43LDEsMSwwLDAsMCwuNzItLjMxTDE3LDIwLjY4VjMyLjk0YTIuMDgsMi4wOCwwLDAsMCwuNzEsMS42M0EyLDIsMCwwLDAsMTksMzVhMiwyLDAsMCwwLDEuNDItLjZsNS40MS01LjU0LDMuNTQsMy41M0wzMC43NywzMVpNMTksMzMuMDV2LTExbDUu'@; put 'NDEsNS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOS4zMSw1LjE3LDIzLjcsOS43bC0zLjU5LDMuNzEsMi4yNCwyLjI5LDQuMDktNC4yMmEyLjU2LDIuNTYsMCwwLDAsMC0zLjU2bC02LTYuMTRhMi41MSwyLjUxLDAsMCwwLTIu'@; put 'NzctLjU5LDIuNTQsMi41NCwwLDAsMC0xLjYsMi4zNnYxMGwzLjIxLDMuMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjUsNSwzLjA5LDYuNDIsMTUuMTcsMTguNTEsOC43LDI1LjE5QTEuNiwxLjYsMCwwLDAsOS44NSwyNy45LDEuNTcs'@; put 'MS41NywwLDAsMCwxMSwyNy40MWw1LjExLTUuMjdWMzIuNDVhMi41NCwyLjU0LDAsMCwwLDEuNiwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUuMTksMi41NSwyLjU1LDAsMCwwLDEuODItLjc3bDUuMTItNS4yOSwzLjQ5LDMuNDhMMzAuNSwzMVpNMTkuODEsMzAuODNWMjIuNjVsNCw0WiIgY2xh'@; put 'c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxoLkNsclNoYXBlUHJvY2Vzc09uVk09KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjQ5LDI2LjI4YTEsMSwwLDAsMC0xLjItLjdsLTIuNDkuNjdhMTQuMjMsMTQuMjMsMCwwLDAsMi40LTYuNzVBMTQuNDgsMTQu'@; put 'NDgsMCwwLDAsMjcuMzcsNy4zNSwxLDEsMCwwLDAsMjYsNy40NGExLDEsMCwwLDAsLjA5LDEuNDEsMTIuNDUsMTIuNDUsMCwwLDEsNC4xNiwxMC40NiwxMi4xOSwxMi4xOSwwLDAsMS0yLDUuNzRMMjgsMjIuNTRhMSwxLDAsMSwwLTEuOTUuMTZsLjUsNi40NCw2LjI1LTEuNjZBMSwxLDAsMCww'@; put 'LDMzLjQ5LDI2LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMzEsMTcuMDhhMS4wNiwxLjA2LDAsMCwwLC40NC4xNiwxLDEsMCwwLDAsMS4xMi0uODVBMTIuMjEsMTIuMjEsMCwwLDEsMTguNjksNS44NEwxNi40NSw3LjM3YTEs'@; put 'MSwwLDAsMCwuNDcsMS43OUExLDEsMCwwLDAsMTcuNTYsOWw1LjMzLTMuNjZMMTguMzMuNzZhMSwxLDAsMSwwLTEuMzksMS4zOGwxLjcsMS43QTE0LjIsMTQuMiwwLDAsMCwzLjg5LDE2LjEyLDEsMSwwLDAsMCw0LjMxLDE3LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIxLjczLDI5LjkzYTEyLDEyLDAsMCwxLTQuODQuNTEsMTIuMywxMi4zLDAsMCwxLTkuNTctNi4zbDIuNDkuOTNhMSwxLDAsMCwwLC42OS0xLjg0bC00LjU5LTEuN2gwTDQuNDQsMjEsMy4zMywyNy4zNWExLDEsMCwwLDAsLjc5LDEuMTNsLjE3LDBhMSwx'@; put 'LDAsMCwwLDEtLjgxbC40Mi0yLjRhMTQuMywxNC4zLDAsMCwwLDExLDcuMTQsMTMuOTEsMTMuOTEsMCwwLDAsNS42My0uNiwxLDEsMCwwLDAtLjYtMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDEzSDE0YTEsMSwwLDAsMC0x'@; put 'LDF2OGExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxNEExLDEsMCwwLDAsMjIsMTNabS0xLDhIMTVWMTVoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGguQ2xyU2hhcGVBc3NpZ25Vc2VyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9'@; put 'Ik0xOCwxN2E3LjQ2LDcuNDYsMCwxLDAtNy40NS03LjQ2QTcuNDYsNy40NiwwLDAsMCwxOCwxN1pNMTgsNC4wN2E1LjQ2LDUuNDYsMCwxLDEtNS40NSw1LjQ1QTUuNDYsNS40NiwwLDAsMSwxOCw0LjA3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBh'@; put 'dGggZD0iTTYsMzEuODlWMjUuNzdhMTYuMTMsMTYuMTMsMCwwLDEsMTItNSwxNi42MSwxNi42MSwwLDAsMSw4LjcxLDIuMzNsMS4zNS0xLjUxQTE4LjUzLDE4LjUzLDAsMCwwLDE4LDE4Ljc0LDE3LjcsMTcuNywwLDAsMCw0LjIxLDI0LjhhMSwxLDAsMCwwLS4yMS42djYuNDlBMi4wNiwyLjA2'@; put 'LDAsMCwwLDYsMzRIMTguMzlsLTEuOS0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMxLjg5LDMwLDMySDI2Ljg1bC0xLjgsMkgzMGEyLjA2LDIuMDYsMCwwLDAsMi0yLjA3VjI2LjJsLTIsMi4yM1oiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zNC43NiwxOC42MmExLDEsMCwwLDAtMS40MS4wOGwtMTEuNjIsMTMtNS4yLTUuNTlBMSwxLDAsMCwwLDE1LjEyLDI2YTEsMSwwLDAsMC0uMDYsMS40Mmw2LjY5LDcuMkwzNC44NCwyMEExLDEsMCwwLDAsMzQuNzYsMTgu'@; put 'NjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48Y2lyY2xlIGN4PSIxNy45OSIgY3k9IjEwLjM2IiByPSI2LjgxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xMiwyNi42NWEyLjgsMi44LDAsMCwxLDQu'@; put 'ODUtMS44TDIwLjcxLDI5bDYuODQtNy42M0ExNi44MSwxNi44MSwwLDAsMCwxOCwxOC41NSwxNi4xMywxNi4xMywwLDAsMCw1LjUsMjRhMSwxLDAsMCwwLS4yLjYxVjMwYTIsMiwwLDAsMCwxLjk0LDJoOC41N2wtMy4wNy0zLjNBMi44MSwyLjgxLDAsMCwxLDEyLDI2LjY1WiIgY2xhc3M9ImNs'@; put 'ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjguNzYsMzJhMiwyLDAsMCwwLDEuOTQtMlYyNi4yNEwyNS41NywzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjc3LDE4LjYyYTEsMSwwLDAsMC0xLjQyLjA4'@; put 'bC0xMS42MiwxMy01LjItNS41OUExLDEsMCwwLDAsMTQuMTIsMjZhMSwxLDAsMCwwLDAsMS40Mmw2LjY4LDcuMkwzMy44NCwyMEExLDEsMCwwLDAsMzMuNzcsMTguNjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGguQ2xyU2hhcGVBdG9tPSgwLHMuY2xy'@; put 'SWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxNC4wNWE0LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwxNC4wNVptMCw2LjQ0YTIuNDIsMi40MiwwLDEsMSwyLjQyLTIuNDJBMi40MiwyLjQyLDAsMCwxLDE4LDIwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi'@; put 'IC8+PHBhdGggZD0iTTI0LjIzLDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTctMy45MiwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LTEuNzJjLjMyLS4xMi42Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIy'@; put 'LDMuNTkuMSw2LjU4LjQ5LjY1Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzkuNDktMS4xOCwxLjQ3LTMuODUsMS4yOC03LS41My04Ljc4YTUuMjksNS4yOSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43'@; put 'OSwwLDAsMC00LjU3LDIuMzVBMjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0zLjg1LTEuNDYtNy0xLjI4LTguNzcuNTNDMi44NSw2LjQsMi41OCw5LjE3LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQs'@; put 'MCwwLDAsNCwyMi42NmMtMS40NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUuNjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0LDEzLjM0LDAsMCwwLDQuNjUtMSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAs'@; put 'My42NS45QTIuMywyLjMsMCwwLDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43NC0uNTdjMS44MS0xLjgxLDItNC45My41My04Ljc3QTMyLjY4LDMyLjY4LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02'@; put 'LjY0YTIyLjc3LDIyLjc3LDAsMCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAsMCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1LDEuMzEsMS4yNXEuOS0uNDYsMS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1'@; put 'LjUsMTEuNjloMGMtLjc1LTIuNS0uNjItNC40OS40My01LjU0YTMuNzIsMy43MiwwLDAsMSwyLjcyLS45MiwxMS40LDExLjQsMCwwLDEsMy45My44NCwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2'@; put 'YTIwLjI3LDIwLjI3LDAsMCwwLDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1LTQuMTcsMzYuODgsMzYuODgsMCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCww'@; put 'LDEsMTIuNTcsMzAuMDlaTTI5Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCwwLTMuNS43MiwxMi41NywxMi41NywwLDAsMS0zLS43NywyMiwyMiwwLDAsMS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwy'@; put 'Mi44OCwwLDAsMSwxLjcyLDMuNDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQuMjMsMTEuNzFhMzkuMTQsMzkuMTQsMCwwLDAtNC41Ny0zLjkyLDIyLjg2LDIyLjg2LDAsMCwxLDMu'@; put 'NDgtMS43MmMuMzItLjEyLjYyLS4yMS45Mi0uM2EyLjI4LDIuMjgsMCwwLDAsMy44MS0uNDYsMy4zMSwzLjMxLDAsMCwxLDEuOTIuODRjMS4xOSwxLjE5LDEuMjIsMy41OS4xLDYuNTguNDkuNjUuOTQsMS4zMSwxLjM1LDIsLjE3LS40LjM1LS43OS40OS0xLjE4LDEuNDctMy44NSwxLjI4LTct'@; put 'LjUzLTguNzhhNS4yOSw1LjI5LDAsMCwwLTMuMzMtMS40NCwyLjI5LDIuMjksMCwwLDAtNC4zMS41NGMtLjM3LjExLS43NC4yMi0xLjEzLjM3YTI1Ljc5LDI1Ljc5LDAsMCwwLTQuNTcsMi4zNUEyNi4yMSwyNi4yMSwwLDAsMCwxMy4yOCw0LjJjLTMuODUtMS40Ni03LTEuMjgtOC43Ny41M0My'@; put 'Ljg1LDYuNCwyLjU4LDkuMTcsMy42OCwxMi41OWEyLjI4LDIuMjgsMCwwLDAsMS41OSwzLjY3Yy4zMi42MS42NywxLjIyLDEuMDYsMS44MkEyNS41NCwyNS41NCwwLDAsMCw0LDIyLjY2Yy0xLjQ3LDMuODQtMS4yOCw3LC41Myw4Ljc3YTUuNjMsNS42MywwLDAsMCw0LjEyLDEuNTEsMTMuMzQs'@; put 'MTMuMzQsMCwwLDAsNC42NS0xLDI2LjIxLDI2LjIxLDAsMCwwLDQuNTgtMi4zNUEyNS43OSwyNS43OSwwLDAsMCwyMi40MywzMmExNC4xNiwxNC4xNiwwLDAsMCwzLjY1LjlBMi4zLDIuMywwLDAsMCwzMC40NiwzMmE0LjU1LDQuNTUsMCwwLDAsLjc0LS41N2MxLjgxLTEuODEsMi00LjkzLjUz'@; put 'LTguNzdBMzIuNjgsMzIuNjgsMCwwLDAsMjQuMjMsMTEuNzFaTTEyLjU3LDMwLjA5Yy0zLDEuMTUtNS40NSwxLjEzLTYuNjUtLjA4cy0xLjIzLTMuNjItLjA3LTYuNjRhMjIuNzcsMjIuNzcsMCwwLDEsMS43MS0zLjQ4LDQwLjE5LDQwLjE5LDAsMCwwLDMuOTIsNC41NmMuNDMuNDMuODcuODUs'@; put 'MS4zMSwxLjI1cS45LS40NiwxLjgzLTEuMDVjLS41OC0uNTItMS4xNi0xLTEuNzItMS42MWEzNCwzNCwwLDAsMS01Ljc0LTcuNDdBMi4yOSwyLjI5LDAsMCwwLDUuNSwxMS42OWgwYy0uNzUtMi41LS42Mi00LjQ5LjQzLTUuNTRhMy43MiwzLjcyLDAsMCwxLDIuNzItLjkyLDExLjQsMTEuNCww'@; put 'LDAsMSwzLjkzLjg0LDIyLjg2LDIyLjg2LDAsMCwxLDMuNDgsMS43MiwzOS4xNCwzOS4xNCwwLDAsMC00LjU3LDMuOTJjLS40NC40NC0uODcuOS0xLjI5LDEuMzZhMjAuMjcsMjAuMjcsMCwwLDAsMSwxLjg1Yy41NC0uNjEsMS4wOS0xLjIxLDEuNjgtMS44YTM2LjMzLDM2LjMzLDAsMCwxLDUt'@; put 'NC4xNywzNi44OCwzNi44OCwwLDAsMSw0Ljk1LDQuMTcsMzYuMjYsMzYuMjYsMCwwLDEsNC4xNyw1LDM3LDM3LDAsMCwxLTQuMTcsNUEzMC42OCwzMC42OCwwLDAsMSwxMi41NywzMC4wOVpNMjkuNzksMzBsLS4xNi4xM2EyLjI3LDIuMjcsMCwwLDAtMy41LjcyLDEyLjU3LDEyLjU3LDAsMCwx'@; put 'LTMtLjc3LDIyLDIyLDAsMCwxLTMuNDgtMS43MiwzOS4xNCwzOS4xNCwwLDAsMCw0LjU3LTMuOTIsMzguMjYsMzguMjYsMCwwLDAsMy45Mi00LjU2LDIyLjg4LDIyLjg4LDAsMCwxLDEuNzIsMy40OEMzMSwyNi4zOSwzMSwyOC44MSwyOS43OSwzMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt'@; put 'aS1zb2xpZC1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxOC4wNyIgcj0iMy4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMi42NiAzLjExKSByb3RhdGUoLTkuMjIpIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVCYXJDb2Rl'@; put 'PSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LDdBMSwxLDAsMCwwLDQsOFYzMGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDdBMSwxLDAsMCwwLDgsOFYyNmExLDEsMCww'@; put 'LDAsMiwwVjhBMSwxLDAsMCwwLDksN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxMyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE3LDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDE3LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjEsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAs'@; put 'MCwyLDBWOEExLDEsMCwwLDAsMjEsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyNSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI5LDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDI5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMzMsN2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAs'@; put 'MCwyLDBWOEExLDEsMCwwLDAsMzMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPicpLGguQ2xyU2hhcGVDZER2ZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0'@; put 'LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIyLjMzLDE4YTQuNDYsNC40NiwwLDEsMC00LjQ1LDQuNDZBNC40Niw0LjQ2LDAsMCwwLDIyLjMzLDE4Wk0xNy44OCwyMC45QTIu'@; put 'ODYsMi44NiwwLDEsMSwyMC43MywxOCwyLjg2LDIuODYsMCwwLDEsMTcuODgsMjAuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNy44OCw3LjQzSDE4VjUuODRoLS4xMkExMi4yMSwxMi4yMSwwLDAsMCw1LjY4LDE3Ljc1aDEuNkEx'@; put 'MC42MSwxMC42MSwwLDAsMSwxNy44OCw3LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjA4LDE4SDI4LjQ5djBBMTAuNjEsMTAuNjEsMCwwLDEsMTguMjUsMjguNjN2MS42QTEyLjIyLDEyLjIyLDAsMCwwLDMwLjA5LDE4UzMw'@; put 'LjA4LDE4LDMwLjA4LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTE4LDExVjkuNDRoLS4xMmE4LjYyLDguNjIsMCwwLDAtOC42LDguMzJoMS42YTcsNywwLDAsMSw3LTYuNzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTguMjUsMjV2MS42QTguNjEsOC42MSwwLDAsMCwyNi40OCwxOHYwaC0xLjZ2MEE3LDcsMCwwLDEsMTguMjUsMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMTguMTcsMS45MmExNiwx'@; put 'NiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOC4xNywxLjkyWk0yNi4yMywxOGgxLjU0YTkuNjEsOS42MSwwLDAsMS05LjYsOS41M0gxOFYyNmguMTdBOC4wNyw4LjA3LDAsMCwwLDI2LjIzLDE4Wk02LjA1LDE4SDQuNDV2LS4wOEExMy43MiwxMy43MiwwLDAsMSwxOCw0LjIxdjEuNkExMi4x'@; put 'MywxMi4xMywwLDAsMCw2LjA1LDE3LjkyWm00LjA1LDBIOC41NnYtLjA4QTkuNjEsOS42MSwwLDAsMSwxOCw4LjMyVjkuODZhOC4wNyw4LjA3LDAsMCwwLTcuOSw4LjA2Wm00LjMyLS4wOGEzLjc1LDMuNzUsMCwxLDEsMy43NSwzLjc1QTMuNzUsMy43NSwwLDAsMSwxNC40MiwxNy45MlptMy43'@; put 'NSwxMy43MUgxOFYzMGguMTdBMTIuMTMsMTIuMTMsMCwwLDAsMzAuMjgsMThoMS42QTEzLjczLDEzLjczLDAsMCwxLDE4LjE3LDMxLjYzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlQ29udGFpbmVyPSgwLHMuY2xySWNvblNWRykoJzxw'@; put 'YXRoIGQ9Ik0zMiwzMEg0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDMyYTIsMiwwLDAsMSwyLDJWMjhBMiwyLDAsMCwxLDMyLDMwWk00LDhWMjhIMzJWOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDI1LjNhLjguOCww'@; put 'LDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDksMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC45MiwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjgu'@; put 'OCwwLDAsMSwxNC45MiwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIxLDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDIxLDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjcsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMjcsMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMiw2'@; put 'SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNOS42MywyNC4yM2EuNzkuNzksMCwwLDEtLjgxLjc3QS43OS43OSwwLDAsMSw4LDI0LjIzVjExLjc3QS43OS43OSwwLDAsMSw4LjgyLDExYS43OS43OSwwLDAsMSwuODEu'@; put 'NzdabTYsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEsLjgyLjc3Wm02LjIxLDBhLjc5Ljc5LDAsMCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEt'@; put 'Ljc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4xMiwwYS43OS43OSwwLDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwuODIuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGgu'@; put 'Q2xyU2hhcGVDb250YWluZXJWb2x1bWU9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTgsMTcuNThhMzIuMzUsMzIuMzUsMCwwLDAsNi4zLjkyLDQuMTMsNC4xMywwLDAsMSwuOTItMS4zNywzMC45NCwzMC45NCwwLDAsMS03LjIyLTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNiwyOFY4LjE5Yy4zNC0uNzYsNC4zMS0yLjExLDExLTIuMTFzMTAuNjcsMS4zNSwxMSwydi4zYy0uODIuNzktNC41OCwyLjA1LTExLjExLDIuMDVBMzMuNDgsMzMuNDgsMCwwLDEsOCw5LjQ0djEuNDRhMzUuNiwzNS42LDAsMCwwLDguODksMWM0'@; put 'LjI5LDAsOC44LS41OCwxMS4xMS0xLjgydjUuMDdhNS4zLDUuMywwLDAsMS0xLjgxLjg4SDMwVjguMTJjMC0zLjE5LTguMTctNC0xMy00cy0xMywuODUtMTMsNFYyOEM0LDMwLjYzLDkuMzksMzEuNjgsMTQsMzJWMzBDOS4xMywyOS42Niw2LjI4LDI4LjYyLDYsMjhaIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNOCwyNC4yOGEzMS4zLDMxLjMsMCwwLDAsNiwuODl2LTEuNGEyOC45MywyOC45MywwLDAsMS02LS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMiwxOEgx'@; put 'OGEyLDIsMCwwLDAtMiwyVjMyYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMEEyLDIsMCwwLDAsMzIsMThaTTE4LDMyVjIwSDMyVjMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDIxLjdhLjcuNywwLDAsMC0uNy43'@; put 'djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNSwyMS44MmEuNy43LDAsMCwwLS43LjdWMzBhLjcuNywwLDEsMCwxLjQsMFYyMi41MkEuNy43LDAsMCww'@; put 'LDI1LDIxLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI5LDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDEsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjksMjEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0zMiwxOEgxOGEyLDIsMCwwLDAtMiwyVjMyYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMEEyLDIsMCwwLDAsMzIsMThaTTE4LDMyVjIwSDMyVjMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48'@; put 'cGF0aCBkPSJNMjEsMjEuN2EuNy43LDAsMCwwLS43Ljd2Ny40OWEuNy43LDAsMCwwLDEuNCwwVjIyLjRBLjcuNywwLDAsMCwyMSwyMS43WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUsMjEuODJhLjcuNywwLDAsMC0uNy43VjMwYS43Ljcs'@; put 'MCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAsMCwyNSwyMS44MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI5LDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDEsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjksMjEuN1oiIGNs'@; put 'YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTE4LDE2SDI4VjguMTJjMC0xLjY4LTUuMzgtMy0xMi0zUzQsNi40NCw0LDguMTJWMjhjMCwxLjUsNC4zMywyLjc1LDEwLDNWMjUuMjJhMjkuMTcsMjkuMTcsMCwwLDEtOC0xLjI5VjIyLjQ0bC4yNC4xQTI2'@; put 'LjYzLDI2LjYzLDAsMCwwLDE0LDIzLjgyVjIwYTQsNCwwLDAsMSwuMjktMS40N0EyOS4xOSwyOS4xOSwwLDAsMSw2LDE3LjIzVjE1Ljc1bC4yNC4wOWEyOSwyOSwwLDAsMCw5LDEuMzJoMEE0LDQsMCwwLDEsMTgsMTZaTTYsMTAuNTRWOS4wNWwuMjQuMDlBMzAuMTIsMzAuMTIsMCwwLDAsMTYs'@; put 'MTAuNDcsMjguMzMsMjguMzMsMCwwLDAsMjYsOS4wNXYxLjVhMzIuNTMsMzIuNTMsMCwwLDEtMTAsMS4zMkEzMi40NCwzMi40NCwwLDAsMSw2LDEwLjU0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz4nKSxoLkNsclNoYXBlRmlsZVNoYXJlPSgwLHMuY2xySWNv'@; put 'blNWRykoJzxwYXRoIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVptMCwyMEg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwy'@; put 'LjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS45MSwyMi40OGEyLjA2LDIuMDYsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2VjIwbDUuNjYtMi42NWEyLjA4LDIuMDgsMCwxLDAsLjA2'@; put 'LTIuOTQsMi4xMiwyLjEyLDAsMCwwLS42NCwxLjQ4di4yM2wtNS42NCwyLjY2YTIuMDgsMi4wOCwwLDEsMC0uMDgsMi45NWwuMDgtLjA4LDUuNjcsMi42NnYuM2EyLjA5LDIuMDksMCwxLDAsMi4wOC0yLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48'@; put 'cGF0aCBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsN2g2LjQ5bDIuNzIsNEg2Wk0yMS45NCwyNi42NGEyLjA5LDIuMDksMCwwLDEt'@; put 'Mi4xMS0yLjA2bDAtLjMtNS42Ny0yLjY2LS4wOC4wOGEyLjA4LDIuMDgsMCwxLDEsLjA4LTIuOTVsNS42NC0yLjY2di0uMjNhMi4wOCwyLjA4LDAsMSwxLC41OCwxLjQ2TDE0Ljc1LDIwdi40N2w1LjcyLDIuNjZhMi4wNywyLjA3LDAsMSwxLDEuNDcsMy41NFoiIGNsYXNzPSJjbHItaS1zb2xp'@; put 'ZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZVFyQ29kZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNS42LDRBMS42LDEuNiwwLDAsMCw0LDUuNlYxMmg4VjRaTTEwLDEwSDZWNmg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+'@; put 'PHBhdGggZD0iTTQsMzAuNEExLjYsMS42LDAsMCwwLDUuNiwzMkgxMlYyNEg0Wk02LDI2aDR2NEg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDMyaDYuNEExLjYsMS42LDAsMCwwLDMyLDMwLjRWMjRIMjRabTItNmg0djRIMjZa'@; put 'IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuNCw0SDI0djhoOFY1LjZBMS42LDEuNiwwLDAsMCwzMC40LDRaTTMwLDEwSDI2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwb2x5Z29u'@; put 'IHBvaW50cz0iMjAgMTAgMjAgOCAxNiA4IDE2IDEyIDE4IDEyIDE4IDEwIDIwIDEwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cmVjdCB4PSIxMiIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC02IiAvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBvbHlnb24gcG9pbnRzPSIyMCA2IDIwIDggMjIgOCAyMiA0IDE0IDQgMTQgOCAxNiA4IDE2IDYgMjAgNiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHJlY3QgeD0iNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPjxwb2x5Z29uIHBvaW50cz0iMTIgMTYgMTIgMTggMTAgMTgg'@; put 'MTAgMTQgOCAxNCA4IDE4IDYgMTggNiAyMCA0IDIwIDQgMjIgOCAyMiA4IDIwIDEwIDIwIDEwIDIyIDEyIDIyIDEyIDIwIDE0IDIwIDE0IDE2IDEyIDE2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCAxNiAyMiAxNiAy'@; put 'MiAxOCAyNCAxOCAyNCAxNiAyNiAxNiAyNiAxNCAyMiAxNCAyMiAxMCAyMCAxMCAyMCAxMiAxOCAxMiAxOCAxNCAyMCAxNCAyMCAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiAvPjxwb2x5Z29uIHBvaW50cz0iMTggMzAgMTQgMzAgMTQgMzIgMjIgMzIg'@; put 'MjIgMzAgMjAgMzAgMjAgMjggMTggMjggMTggMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgLz48cG9seWdvbiBwb2ludHM9IjIyIDIwIDIyIDE4IDIwIDE4IDIwIDE2IDE4IDE2IDE4IDE4IDE2IDE4IDE2IDIwIDE4IDIwIDE4IDIyIDIwIDIyIDIwIDIw'@; put 'IDIyIDIwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIC8+PHJlY3QgeD0iMzAiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIC8+PHJlY3QgeD0iMjIiIHk9IjIwIiB3aWR0'@; put 'aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTUiIC8+PHBvbHlnb24gcG9pbnRzPSIzMCAxNCAyOCAxNCAyOCAxNiAyNiAxNiAyNiAxOCAyOCAxOCAyOCAyMCAzMCAyMCAzMCAxOCAzMiAxOCAzMiAxNiAzMCAxNiAzMCAxNCIgY2xhc3M9'@; put 'ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiAvPjxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE3IiAvPjxwb2x5Z29uIHBvaW50cz0iMTQgMjggMTYgMjggMTYgMjYgMTgg'@; put 'MjYgMTggMjQgMTYgMjQgMTYgMjAgMTQgMjAgMTQgMjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIgLz4nKSxoLkNsclNoYXBlVXNiPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC4yOSwxMS40YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxYTIu'@; put 'ODksMi44OSwwLDAsMCwyLjc1LDIuMDksMywzLDAsMCwwLDAtNS45MSwyLjksMi45LDAsMCwwLTIuNjcsMS44MkgxNS41N2EzLjQ5LDMuNDksMCwwLDAtMywxLjY2bC0zLDQuODNoMi4zNlptNS0yLjk0QTEuMzYsMS4zNiwwLDEsMSwxOCw5LjgxLDEuMzIsMS4zMiwwLDAsMSwxOS4zMyw4LjQ2'@; put 'WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTM0LjMsMTcuMzdsLTYuMTEtMy42NmEuNy43LDAsMCwwLS43LDAsLjcxLjcxLDAsMCwwLS4zNi42MVYxN0g2LjkyYTIuMzMsMi4zMywwLDAsMSwuMzIsMS4xNywyLjQ3LDIuNDcsMCwxLDEt'@; put 'Mi40Ny0yLjQ2LDIuMzcsMi4zNywwLDAsMSwxLjE1LjNsLjkzLTEuNzZBNC40NCw0LjQ0LDAsMSwwLDkuMTUsMTloMy41OGw0LjE3LDYuNjVhMy40OSwzLjQ5LDAsMCwwLDMsMS42NmgxLjY2djEuMjhhLjc5Ljc5LDAsMCwwLC44Ljc5aDQuNDlhLjc5Ljc5LDAsMCwwLC44LS43OXYtNC40YS43'@; put 'OS43OSwwLDAsMC0uOC0uOEgyMi4zNGEuOC44LDAsMCwwLS44Ljh2MS4xMkgxOS44OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTUuMDksMTloMTJ2Mi42NmEuNjkuNjksMCwwLDAsLjM2LjYxLjY3LjY3LDAsMCwwLC4zNC4wOS42NS42NSwwLDAsMCwuMzYtLjFsNi4xMS0zLjY2YS42OS42'@; put 'OSwwLDAsMCwuMzQtLjZBLjcxLjcxLDAsMCwwLDM0LjMsMTcuMzdaTTIzLjE0LDI1SDI2djIuOEgyMy4xNFptNS4zOS00LjU2VjE1LjU1bDQsMi40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zNC43MiwxNy4zN2wtNS41MS0zLjMx'@; put 'YS43MS43MSwwLDAsMC0xLjA3LjZWMTdIMTEuNzdsMy41Mi01LjZhMS40OSwxLjQ5LDAsMCwxLDEuMjgtLjcyaDEuNjRhMi40MSwyLjQxLDAsMCwwLDIuMjUsMS42MSwyLjQ4LDIuNDgsMCwwLDAsMC00Ljk1LDIuMzgsMi4zOCwwLDAsMC0yLjEzLDEuMzRIMTYuNTdhMy40OSwzLjQ5LDAsMCww'@; put 'LTMsMS42Nkw5LjQxLDE3SDhhMy40NiwzLjQ2LDAsMSwwLC4wOCwyaDUuNjRsNC4xNSw2LjYyYTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMi41OXYuOTJoNC40VjIzLjhoLTQuNHYxLjQ4SDIwLjg4YTEuNTEsMS41MSwwLDAsMS0xLjI4LS43MkwxNi4xMSwxOWgxMnYyLjI4YS43LjcsMCwwLDAs'@; put 'LjM2LjYxLjcyLjcyLDAsMCwwLC4zNC4wOS42NS42NSwwLDAsMCwuMzYtLjFsNS41Mi0zLjMxYS43LjcsMCwwLDAsMC0xLjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVSYWRhcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIs'@; put 'MThjMCw3LjctNi4zLDE0LTE0LDE0Yy03LjcsMC0xNC02LjMtMTQtMTRDNCwxMC42LDkuNyw0LjUsMTcuMSw0djMuN2MtNS43LDAuNS05LjksNS41LTkuNCwxMS4yczUuNSw5LjksMTEuMiw5LjRcblx0YzUuMy0wLjUsOS40LTQuOSw5LjQtMTAuM2gtMmMwLDQuNi0zLjcsOC4zLTguMyw4LjNz'@; put 'LTguMy0zLjctOC4zLTguM2MwLTQuMiwzLjEtNy44LDcuMy04LjN2NC40Yy0xLjgsMC40LTMuMSwyLTMuMSwzLjlcblx0YzAsMi4yLDEuOCw0LDQsNHM0LTEuOCw0LTRjMC0xLjgtMS4zLTMuNC0zLTMuOFYyLjFDMTguNiwyLDE4LjMsMiwxOCwyQzkuMiwyLDIsOS4yLDIsMThzNy4yLDE2LDE2'@; put 'LDE2czE2LTcuMiwxNi0xNkgzMnogTTIwLDE4XG5cdGMwLDEuMS0wLjksMi0yLDJzLTItMC45LTItMnMwLjktMiwyLTJTMjAsMTYuOSwyMCwxOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMiwxOGMwLDcuNy02LjIsMTQtMTQsMTRT'@; put 'NCwyNS44LDQsMThjMC03LjQsNS43LTEzLjUsMTMuMS0xNHYzLjdjLTUuNywwLjUtOS44LDUuNS05LjMsMTEuMnM1LjUsOS44LDExLjIsOS4zXG5cdFx0YzUuMy0wLjUsOS4zLTQuOSw5LjMtMTAuMmgtMmMwLDQuNi0zLjcsOC4zLTguMyw4LjNTOS43LDIyLjYsOS43LDE4YzAtNC4yLDMuMi03'@; put 'LjgsNy4zLTguMnY0LjRjLTIuMSwwLjYtMy40LDIuNy0yLjksNC45XG5cdFx0YzAuNiwyLjEsMi43LDMuNCw0LjksMi45YzIuMS0wLjYsMy40LTIuNywyLjktNC45Yy0wLjQtMS40LTEuNS0yLjUtMi45LTIuOVYyYy0wLjQsMC0wLjcsMC0xLjEsMGMtOC44LDAtMTYsNy4yLTE2LDE2XG5cdFx0'@; put 'YzAsOC44LDcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZjMCwwLDAsMCwwLDBIMzJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVJbmR1Y3Rvcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuMzEsMjUuODFjLTEuNzUsMC0zLTIu'@; put 'NDktMy02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDBBMTIuNzksMTIuNzksMCwwLDEsMjEsMTkuNzZjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuNzksMTIuNzksMCwwLDEsMS43Mi02LjcsMi41NywyLjU3LDAsMCwwLTMuNzksMCwx'@; put 'Mi43OSwxMi43OSwwLDAsMSwxLjcyLDYuN2MwLDMuNTYtMS4yMyw2LTMsNnMtMy0yLjQ5LTMtNmExMi44OCwxMi44OCwwLDAsMSwxLjcxLTYuNywyLjcsMi43LDAsMCwwLTEuODktLjg3QzcuMSwxMi4xOSw1LjY5LDEzLjcsNSwxNmwtLjIzLjdIMmExLDEsMCwwLDEsMC0ySDMuMjljMS4xLTIu'@; put 'ODMsMy4wNi00LjU1LDUuMjQtNC41NWE0LjY3LDQuNjcsMCwwLDEsMy4xNiwxLjMyLDQuNjIsNC42MiwwLDAsMSwzLjE1LTEuMzJBNC42NSw0LjY1LDAsMCwxLDE4LDExLjUxYTQuNDMsNC40MywwLDAsMSw2LjMxLDAsNC42Nyw0LjY3LDAsMCwxLDMuMTYtMS4zMmMyLjE4LDAsNC4xNCwxLjcy'@; put 'LDUuMjQsNC41NUgzNGExLDEsMCwwLDEsMCwySDMxLjI4bC0uMjMtLjdjLS43NC0yLjM0LTIuMTUtMy44NS0zLjU4LTMuODVhMi43LDIuNywwLDAsMC0xLjg5Ljg3LDEyLjg4LDEyLjg4LDAsMCwxLDEuNzEsNi43QzI3LjI5LDIzLjMyLDI2LjA3LDI1LjgxLDI0LjMxLDI1LjgxWk0xOCwxNC45'@; put 'M2ExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwxOCwxNC45M1ptNi4zMSwwYTExLjcxLDExLjcxLDAsMCwwLTEsNC44M2MwLDIuNTQuNjYsMy43NSwxLDQsLjMyLS4yNywxLTEuNDgsMS00QTEx'@; put 'LjcxLDExLjcxLDAsMCwwLDI0LjMxLDE0LjkzWm0tMTIuNjIsMGExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwxMS42OSwxNC45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVSZXNpc3Rvcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjkuNDMsMjYuMzRoMEExLjQ3LDEuNDcsMCwwLDEsMjgsMjUuMjJMMjQuODYsMTMuMTUsMjEuNzQsMjUuMjJhMS40OSwxLjQ5LDAsMCwxLTEuNDUsMS4xMmgwYTEuNDksMS40OSww'@; put 'LDAsMS0xLjQ2LTEuMTJMMTUuNzEsMTMuMTUsMTIuNiwyNS4yMmExLjUxLDEuNTEsMCwwLDEtMi45MSwwTDYuNTcsMTMuMTUsNS4yMiwxOC4zN0gyYTEsMSwwLDAsMSwwLTJIMy42N2wxLjQ1LTUuNTlBMS40OCwxLjQ4LDAsMCwxLDYuNTcsOS42NmgwQTEuNDcsMS40NywwLDAsMSw4LDEwLjc4'@; put 'bDMuMTIsMTIuMDcsMy4xMi0xMi4wN2ExLjQ5LDEuNDksMCwwLDEsMS40NS0xLjEyaDBhMS40OSwxLjQ5LDAsMCwxLDEuNDYsMS4xMmwzLjEyLDEyLjA3LDMuMTItMTIuMDdhMS41LDEuNSwwLDAsMSwyLjksMGwzLjEyLDEyLjA3LDEuMzUtNS4yMkgzNGExLDEsMCwwLDEsMCwySDMyLjMzbC0x'@; put 'LjQ1LDUuNTlBMS40OCwxLjQ4LDAsMCwxLDI5LjQzLDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZUNhcGFjaXRvcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUsMzQuMDZhMSwxLDAsMCwxLTEtMVYzLjE1YTEs'@; put 'MSwwLDEsMSwyLDBWMzMuMDZBMSwxLDAsMCwxLDE1LDM0LjA2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2QTEsMSwwLDAsMSwyMSwzNC4wNloiIGNs'@; put 'YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC40NiwxOUgzYTEsMSwwLDAsMSwwLTJIMTQuNDZhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOUgyMS41'@; put 'NGExLDEsMCwwLDEsMC0ySDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxoLkNsclNoYXBlU3F1aWQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDdhMSwxLDAsMCwxLTEtMVYzLjE5YTEsMSwwLDAsMSwyLDBW'@; put 'NkExLDEsMCwwLDEsMTgsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNGExLDEsMCwwLDEtMS0xVjMwYTEsMSwwLDAsMSwyLDB2M0ExLDEsMCwwLDEsMTgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMiIgLz48cGF0aCBkPSJNNy40MSwxOGwxLjc4LTEuNzdhMSwxLDAsMSwwLTEuNDItMS40Mkw2LDE2LjU5LDQuMjMsMTQuODFhMSwxLDAsMSwwLTEuNDIsMS40Mkw0LjU5LDE4LDIuODEsMTkuNzdhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNzEt'@; put 'LjI5TDYsMTkuNDFsMS43NywxLjc4YTEsMSwwLDAsMCwxLjQyLDAsMSwxLDAsMCwwLDAtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik02LDEzLjc2bC4zNi0uMzZhMywzLDAsMCwxLDIuMTEtLjg4LDExLDExLDAsMCwxLDE5LDAs'@; put 'MywzLDAsMCwxLDIuMTIuODhsLjM2LjM2LjItLjJhMTMsMTMsMCwwLDAtMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMwLDIyLjI0bC0uMzYuMzZhMywzLDAsMCwxLTIuMTIuODgsMTEsMTEsMCwwLDEtMTksMCwzLDMsMCww'@; put 'LDEtMi4xMi0uODhMNiwyMi4yNGwtLjIuMmExMywxMywwLDAsMCwyNC40LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDEsMThsMS43OC0xLjc3YTEsMSwwLDAsMC0xLjQyLTEuNDJMMzAsMTYuNTlsLTEuNzctMS43OGExLDEs'@; put 'MCwxLDAtMS40MiwxLjQyTDI4LjU5LDE4bC0xLjc4LDEuNzdhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNzEtLjI5TDMwLDE5LjQxbDEuNzcsMS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxoLkNsclNoYXBlSG9zdEdyb3VwPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMS4wOCwzNGgtMTRBMS4wOCwxLjA4LDAsMCwxLDYsMzNWMTJhMS4wOCwxLjA4LDAsMCwxLDEuMDgtMS4wOGgxNEExLjA4LDEuMDgsMCwwLDEsMjIuMTYsMTJW'@; put 'MzNBMS4wOCwxLjA4LDAsMCwxLDIxLjA4LDM0Wk04LjE2LDMxLjg4SDIwVjEzSDguMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxyZWN0IHg9IjEwLjA4IiB5PSIxNC45NiIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp'@; put 'bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI2LjEsMjcuODFoLTJWOWgtMTJWN2gxM2ExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG48cGF0aCBkPSJNMzAuMDgsMjNoLTJWNWgtMTFWM2gxMmExLDEsMCww'@; put 'LDEsMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHJlY3QgeD0iMTMuMDgiIHk9IjI3Ljg4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyLjE2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cblxuPHBhdGggY2xhc3M9'@; put 'ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE1LjA4LDMxIEwxLjA4LDMxIEMwLjUxMzQyNzE5NywzMS4wMDE1NTY0IDAuMDQxOTY2Mzc2NSwzMC41NjUwMTg2IDAsMzAgTDAsOSBDMCw4LjQwMzUzMjQ3IDAuNDgzNTMyNDcsNy45MiAxLjA4LDcuOTIgTDE1LjA4LDcuOTIg'@; put 'QzE1LjY3NjQ2NzUsNy45MiAxNi4xNiw4LjQwMzUzMjQ3IDE2LjE2LDkgTDE2LjE2LDMwIEMxNi4xMTgwMzM2LDMwLjU2NTAxODYgMTUuNjQ2NTcyOCwzMS4wMDE1NTY0IDE1LjA4LDMxIFogTTQuMDgsMTEuOTYgTDQuMDgsMTMuOTYgTDEyLjA4LDEzLjk2IEwxMi4wOCwxMS45NiBMNC4wOCwx'@; put 'MS45NiBaIE03LjA4LDI0Ljg4IEw3LjA4LDI3LjA0IEw5LjA4LDI3LjA0IEw5LjA4LDI0Ljg4IEw3LjA4LDI0Ljg4IFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjAuMSwyNC44MSBMMTguMSwyNC44MSBMMTguMSw2IEw2LjEsNiBMNi4x'@; put 'LDQgTDE5LjEsNCBDMTkuNjUyMjg0Nyw0IDIwLjEsNC40NDc3MTUyNSAyMC4xLDUgTDIwLjEsMjQuODEgWiIgLz5cbjxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNC4wOCwyMCBMMjIuMDgsMjAgTDIyLjA4LDIgTDExLjA4LDIgTDExLjA4LDAgTDIz'@; put 'LjA4LDAgQzIzLjYzMjI4NDcsMCAyNC4wOCwwLjQ0NzcxNTI1IDI0LjA4LDEgTDI0LjA4LDIwIFoiIC8+JyksaC5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjA2LDMwYTEsMSwwLDAsMS0xLTFWOGgtMmExLDEsMCwwLDEsMC0yaDRWMjlBMSwx'@; put 'LDAsMCwxLDYuMDYsMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzAuMDYsMjdoLTI1VjloMjVhMywzLDAsMCwxLDMsM1YyNEEzLDMsMCwwLDEsMzAuMDYsMjdabS0yMy0yaDIzYTEsMSwwLDAsMCwxLTFWMTJhMSwxLDAsMCww'@; put 'LTEtMWgtMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMjAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjIyLjA2'@; put 'IiB5PSIxNCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE5LjA2LDIyaC04VjIwaDdWMTRoMnY3QTEsMSwwLDAsMSwxOS4wNiwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp'@; put 'bmUtcGF0aC01Ii8+JyksaC5DbHJTaGFwZU5vZGVHcm91cD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNTMsMjEuNThsLTQuOTQtMi44M1YxMy4wOWExLDEsMCwwLDAtLjUxLS44N0wyMi42NCw5LjFhMSwxLDAsMCwwLTEsMEwxNi4yLDEyLjIyYTEsMSwwLDAsMC0uNTEuODd2NS42'@; put 'NmwtNC45NCwyLjgzYTEsMSwwLDAsMC0uNS44N3Y2LjI0YTEsMSwwLDAsMCwuNS44Nmw1LjQ1LDMuMTJhMSwxLDAsMCwwLDEsMGw0Ljk1LTIuODMsNC45NSwyLjgzYTEsMSwwLDAsMCwuNS4xNCwxLDEsMCwwLDAsLjQ5LS4xNGw1LjQ1LTMuMTJhMSwxLDAsMCwwLC41LS44NlYyMi40NUExLDEs'@; put 'MCwwLDAsMzMuNTMsMjEuNThaTTIyLjE0LDExLjEybDQuNDUsMi41NVYxOWwtNC40NiwyLjU2LTQuNDQtMi42VjEzLjY3Wk0xNi42OSwzMC42NWwtNC40NC0yLjU0VjIzbDQuNjgtMi42OCw0LjQsMi41N1YyOFpNMzIsMjguMTFsLTQuNDQsMi41NEwyMi45MywyOFYyMi45M2w0LjQ2LTIuNTdM'@; put 'MzIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNywyNy40M2ExLDEsMCwwLDEtMS0xVjE5LjlBMSwxLDAsMCwxLDYuNSwxOWw0Ljk1LTIuODNWMTAuNTRhMSwxLDAsMCwxLC41LS44N2w1LjIxLTNhMSwxLDAsMCwxLDEuMzcu'@; put 'MzcsMSwxLDAsMCwxLS4zOCwxLjM3bC00LjcsMi42OHY1LjY2YTEsMSwwLDAsMS0uNTEuODdMOCwyMC40OHY1Ljk1QTEsMSwwLDAsMSw3LDI3LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMsMjUuMDVhMSwxLDAsMCwxLTEt'@; put 'MVYxNy41M2ExLDEsMCwwLDEsLjUtLjg2bDUtMi44NFY4LjE3QTEsMSwwLDAsMSw4LDcuMzFsNS4yNS0zYTEsMSwwLDAsMSwxLDEuNzRMOS40NSw4Ljc1djUuNjZhMSwxLDAsMCwxLS41MS44N0w0LDE4LjExdjUuOTRBMSwxLDAsMCwxLDMsMjUuMDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGguQ2xyU2hhcGVOb2Rlcz0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuNSwzNC4yOSwyLDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk00LDI4LjIzLDEwLjUsMzIsMTcsMjguMjNWMjAuNzRMMTAuNSwxNyw0LDIwLjc0WiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTI1LjUsMzQuMjksMTcsMjkuMzlWMTkuNThsOC41LTQuOSw4LjUsNC45djkuODFaTTE5LDI4LjIzLDI1LjUsMzIsMzIsMjguMjNWMjAuNzRMMjUuNSwxNywxOSwyMC43NFoiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xOCwyMS4zMmwtOC41LTQuOVY2LjYxTDE4LDEuNzFsOC41LDQuOXY5LjgxWm0tNi41LTYuMDZMMTgsMTlsNi41LTMuNzVWNy43N0wxOCw0LDExLjUsNy43N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs'@; put 'ci1pLW91dGxpbmUtcGF0aC0zIi8+JyksaC5DbHJTaGFwZU5hbWVzcGFjZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsNC4xOGExLDEsMCwxLDAtMSwxLjczbDYsMy40N1YyNi42MmwtNiwzLjQ3YTEsMSwwLDAsMC0uMzcsMS4zNiwxLDEsMCwwLDAsMS4zNy4zN2w3LTQuMDVWOC4y'@; put 'M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik05LjY4LDI5LjksNCwyNi42MlY5LjM4TDkuNjgsNi4xYTEsMSwwLDEsMC0xLTEuNzNMMiw4LjIzVjI3Ljc3bDYuNjgsMy44NmExLDEsMCwwLDAsMS4zNy0uMzdBMSwxLDAsMCwwLDku'@; put 'NjgsMjkuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMCwxMlYyNGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJWMTJhMiwyLDAsMCwwLTItMkgxMkEyLDIsMCwwLDAsMTAsMTJabTcsMHY1SDEyVjEyWm0tNSw3aDV2'@; put 'NUgxMlptNyw1VjE5aDV2NVptNS03SDE5VjEyaDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGguQ2xyU2hhcGVOb2RlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzMC42Niw3LDI0LjMzVjExLjY3TDE4LDUuMzRsMTEsNi4zM1YyNC4z'@; put 'M1pNOSwyMy4xOGw5LDUuMTcsOS01LjE3VjEyLjgyTDE4LDcuNjUsOSwxMi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksaC5DbHJTaGFwZVBvZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYsMzJIMTBhNiw2LDAsMCwxLTYtNlYxMGE2'@; put 'LDYsMCwwLDEsNi02SDI2YTYsNiwwLDAsMSw2LDZWMjZBNiw2LDAsMCwxLDI2LDMyWk0xMCw2YTQsNCwwLDAsMC00LDRWMjZhNCw0LDAsMCwwLDQsNEgyNmE0LDQsMCwwLDAsNC00VjEwYTQsNCwwLDAsMC00LTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv'@; put 'PlxuICA8cGF0aCBkPSJNMjYuNTYsMTVIMTUuNDRBMS40MywxLjQzLDAsMCwwLDE0LDE2LjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDE1LjQ0LDI2SDI2LjU2QTEuNDMsMS40MywwLDAsMCwyOCwyNC41NlYxNi40NEExLjQzLDEuNDMsMCwwLDAsMjYuNTYsMTVaTTI2LDI0SDE2VjE3SDI2WiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTEyLjQsMTlIMTBWMTJIMjB2MS40aDJ2LTJBMS40MywxLjQzLDAsMCwwLDIwLjU2LDEwSDkuNDRBMS40MywxLjQzLDAsMCwwLDgsMTEuNDR2OC4xMkExLjQzLDEuNDMsMCwwLDAsOS40NCwy'@; put 'MWgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxoLkNsckNvbnRyb2xMdW49KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik04LDI0LjU5YTI1LjUsMjUuNSwwLDAsMCwyLjc1LjU5bDEuMjEtMS40MWEyNC4xMywyNC4xMywwLDAsMS00LS44'@; put 'M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik02LDI3LjUzVjEwLjNjMi45LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhzOS4xLS40NSwxMi0xLjg4djUuMTFjLS45MS44Mi01LDIuMTMtMTIsMi4xM0EzNC44MSwzNC44MSwwLDAsMSw4'@; put 'LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40NiwwLDkuMTMtLjQ1LDEyLTEuOTF2My4yM2gyVjhoMHMwLDAsMC0uMDdjMC0zLjM1LTguOC00LjI1LTE0LTQuMjVTNCw0LjU4LDQsNy45M3YxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4y'@; put 'OCw2LjEzLDI3Ljg0LDYsMjcuNTNaTTE4LDUuNjhjNy4xNSwwLDExLjUzLDEuNDQsMTIsMi4yNS0uNDYuODEtNC44NCwyLjI1LTEyLDIuMjVTNi4zMSw4LjY5LDYsOEM2LjMxLDcuMTgsMTAuNzEsNS42OCwxOCw1LjY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTIiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuXG4gIDxwYXRoIGQ9Ik04LDI0LjU5YTI1LjUsMjUuNSwwLDAsMCwyLjc1'@; put 'LjU5bDEuMjEtMS40MWEyNC4xMywyNC4xMywwLDAsMS00LS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzIuMDksMjJIMTUuNDZsLTUuNDEsNi4zMUwxNS40OSwzNGgxNi42YTIsMiwwLDAsMCwy'@; put 'LTJWMjMuOTNBMiwyLDAsMCwwLDMyLjA5LDIyWm0wLDEwSDE2LjM0bC0zLjU5LTMuNzdMMTYuMzgsMjRIMzIuMDl2OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEs'@; put 'MUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE4LDE3LjU0QTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNWMThhNDAuODYsNDAuODYsMCwwLDAsMTAsMS4xNmMzLjQ2'@; put 'LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTMuMjJhNy4zMiw3LjMyLDAsMCwxLTIsLjI4djEuOTFDMjkuMDksMTYuMjMsMjUsMTcuNTQsMTgsMTcuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHBhdGggZD0i'@; put 'TTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgsMTIsMS44OGE0Ny42Niw0Ny42NiwwLDAsMCw3LjA5LS41Miw3LjQ1LDcuNDUsMCwwLDEtMS41MS0xLjgsNDcuNCw0Ny40LDAsMCwxLTUuNTguMzJDMTAuNzEsMTAuMTgsNi4zMSw4LjY5LDYsOGMuMzItLjgsNC43Mi0yLjMsMTItMi4z'@; put 'LDEuNjYsMCwzLjE2LjA4LDQuNTEuMjFhNy41Niw3LjU2LDAsMCwxLC4yOS0yYy0xLjctLjE3LTMuMzgtLjI0LTQuOC0uMjQtNS4yLDAtMTQsLjktMTQsNC4yNXYxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3Ljg0LDYsMjcuNTNaIiBjbGFz'@; put 'cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxu'@; put 'ICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIi8+PHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4w'@; put 'OSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjda'@; put 'IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4aC41OWEzLjU5LDMuNTksMCwwLDEsLjMyLTJIMThDMTAuNzEsMTAuMTgsNi4zMSw4'@; put 'LjY5LDYsOGMuMzItLjgsNC43Mi0yLjMsMTItMi4zLDEuMjIsMCwyLjM1LjA1LDMuNDEuMTJsMS4xLTEuOTFjLTEuNi0uMTUtMy4xNy0uMjEtNC41MS0uMjEtNS4yLDAtMTQsLjktMTQsNC4yNXYxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3'@; put 'Ljg0LDYsMjcuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNOCwxNi4zM1YxOGE0MC44Niw0MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlYxNS40SDMw'@; put 'Yy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEsOCwxNi4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCww'@; put 'LDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cblxuICA8cGF0'@; put 'aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAs'@; put 'MSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4yLS44MiwxNC0zLjgyVjEwLjcyYy0yLjIxLDMuMzYtMTAuNDksMy40Ni0xNCwzLjQ2QTQyLjEyLDQyLjEyLDAsMCwxLDgsMTMuMTFWMTFhNDAuNTksNDAuNTksMCwwLDAsMTAsMS4xNGM1LDAsMTMuMjgtLjgz'@; put 'LDE0LTMuODhWNy44M2gwYy0uMTktMy4yNy04Ljg0LTQuMTUtMTQtNC4xNVM0LjIxLDQuNTYsNCw3LjgzSDR2MTkuN2MwLDIuMTYsMy42NCwzLjMsNy42MywzLjg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEy'@; put 'NS43OSwyNS43OSwwLDAsMCwzLjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDguNzEsMjYuMjcsOCwyNi4wOFpNMzMuMDksMzJhMSwxLDAsMCwxLTEsMUgxNS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s'@; put 'aWQtcGF0aC0yIi8+XG5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIxSDMyVjE3LjMyYy0xLjks'@; put 'Mi45My0xMC40NiwzLjMtMTQsMy4zQTQyLjQzLDQyLjQzLDAsMCwxLDgsMTkuNTZWMTcuODhBNDAuNTksNDAuNTksMCwwLDAsMTgsMTljNSwwLDEzLjItLjgyLDE0LTMuODJ2LTJhNy4zNCw3LjM0LDAsMCwxLTQuMTIsMCwzOS40NywzOS40NywwLDAsMS05Ljg4LDFBNDIuMTIsNDIuMTIsMCww'@; put 'LDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0LDQ3Ljc2LDQ3Ljc2LDAsMCwwLDcuMDktLjUyQTcuNDUsNy40NSwwLDAsMSwyMi44LDMuOTJjLTEuNy0uMTctMy4zOC0uMjQtNC44LS4yNC01LjE0LDAtMTMuNzkuODgtMTQsNC4xNUg0djE5LjdjMCwyLjE2LDMuNjQsMy4z'@; put 'LDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3YTMsMywwLDAsMCwzLTNWMjMuOTNBMywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRhMjUuNzksMjUuNzksMCwwLDAsMy40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAs'@; put 'MS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45MiwyM0gzMi4wOWExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJh'@; put 'ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5c'@; put 'biAgPHBhdGggZD0iTTMyLjA5LDIxSDMyVjE3LjMyYy0xLjksMi45My0xMC40NiwzLjMtMTQsMy4zQTQyLjQzLDQyLjQzLDAsMCwxLDgsMTkuNTZWMTcuODhBNDAuNTksNDAuNTksMCwwLDAsMTgsMTljNC44NSwwLDEyLjgtLjc5LDEzLjkxLTMuNjJIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTIu'@; put 'NzMtMS4yM0gxOEE0Mi4xMiw0Mi4xMiwwLDAsMSw4LDEzLjExVjExYTQwLjU5LDQwLjU5LDAsMCwwLDEwLDEuMTRoLjU5YTMuNjEsMy42MSwwLDAsMSwuNDYtMi4yOWwzLjQ2LTZjLTEuNi0uMTUtMy4xNy0uMjEtNC41MS0uMjEtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4x'@; put 'NiwzLjY0LDMuMyw3LjYzLDMuODRsMi44NCwzLC41OS42MmgxN2EzLDMsMCwwLDAsMy0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4yNCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwz'@; put 'MmExLDEsMCwwLDEtMSwxSDE1LjkyTDExLjQsMjguMjMsMTUuOTIsMjNIMzIuMDlhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEu'@; put 'MjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcp'@; put 'LGguQ2xyU2hhcGVNZWRpYUNoYW5nZXI9KDAscy5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjZB'@; put 'MiwyLDAsMCwwLDMwLDRaTTYsMzBWNkgzMFYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI0IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xh'@; put 'c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBo'@; put 'ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0yNy4yMiwxMEgyMHY0YS44LjgsMCwxLDAsMS41OSwwVjExLjZoNS42M2EuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTUiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE0IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxOCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4LjE0IiBo'@; put 'ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjI2IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cblxuICA8cmVjdCB4PSIy'@; put 'MCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg'@; put 'Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyMCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRo'@; put 'PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE0IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4'@; put 'LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtOC0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjI2IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTIwLDE0YS44LjgsMCwxLDAsMS41'@; put 'OSwwVjExLjZIMjVBNy43NCw3Ljc0LDAsMCwxLDIzLjY2LDEwSDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDZWNkgyMi41VjZhNy4zNyw3LjM3LDAsMCwxLC4yOC0ySDZB'@; put 'MiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuMzcsNy4zNywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRo'@; put 'PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjI0IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBoZWln'@; put 'aHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtNS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0'@; put 'IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs'@; put 'aW5lLXBhdGgtOC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMwLDE1LjRWMzBINlY2SDIx'@; put 'LjI3bDEuMTgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTEwLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91'@; put 'dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMy'@; put 'SDMwYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFpNMTcsMjhIOC44MVYyNkgxN1ptMC00SDguODFWMjJIMTdabTAtNEg4LjgxVjE4SDE3Wm0wLTRIOC44MVYxNEgxN1ptMC00SDguODFWMTBIMTdaTTIyLDI0SDIwVjIyaDJabTAtNEgyMFYxOGgyWm00LDRIMjRWMjJoMlptMC00SDI0'@; put 'VjE4aDJabTAtNkgyMFYxMGg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS00LTEuMTZWMTRIMjBWMTBoMy42NkE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YTcuMzcsNy4zNywwLDAsMSwuMjgt'@; put 'Mkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVpNMTcsMjhIOC44MVYyNkgxN1ptMC00SDguODFWMjJI'@; put 'MTdabTAtNEg4LjgxVjE4SDE3Wm0wLTRIOC44MVYxNEgxN1ptMC00SDguODFWMTBIMTdaTTIyLDI0SDIwVjIyaDJabTAtNEgyMFYxOGgyWm00LDRIMjRWMjJoMlptMC00SDI0VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxu'@; put 'ICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTIyLjIzLDE1LjRhMy42OCwzLjY4LDAsMCwxLTMuMTgtNS41MUwyMi40NSw0SDZBMiwy'@; put 'LDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRI'@; put 'MTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5'@; put 'LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxl'@; put 'cnQiLz5cbiAgJyksaC5DbHJTaGFwZVRhcGVEcml2ZT0oMCxzLmNsckljb25TVkcpKCdcbiAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTMuMzMsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTMsNC41MkE0LjUzLDQuNTMsMCwwLDAsMTMuMzMsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45My0yLjkyQTIuOTIsMi45MiwwLDAsMSwxMy4z'@; put 'MywyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMy42MiwxMy4zNWE0LjUyLDQuNTIsMCwxLDAsNC41Miw0LjUyQTQuNTMsNC41MywwLDAsMCwyMy42MiwxMy4zNVptMCw3LjQ0YTIuOTIsMi45MiwwLDEsMSwyLjkyLTIu'@; put 'OTJBMi45MiwyLjkyLDAsMCwxLDIzLjYyLDIwLjc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyOS4zNFYxMEg3QTEsMSwwLDAsMCw2LDExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQuNTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4LjgxLDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAsMSwxNi4yNiwxNy44N1oiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMTkuMSwxNy44N2E0LjUyLDQuNTIsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCwxOS4xLDE3Ljg3Wm03LjQ0LDBBMi45MiwyLjkyLDAsMSwxLDIzLjYyLDE1LDIu'@; put 'OTIsMi45MiwwLDAsMSwyNi41NCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzIsMTMuMjJWMjhINFY4SDIyLjc4YTcuMzcsNy4zNywwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhh'@; put 'MiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNjUsNy42NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNNiwxMVYyMy41NUg4VjEySDI1LjUxYTcuNjYs'@; put 'Ny42NiwwLDAsMS0xLjg1LTJIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik04LjgxLDE3Ljg3YTQuNTMsNC41MywwLDEsMCw0LjUyLTQuNTJBNC41Myw0LjUzLDAsMCwwLDguODEsMTcuODdabTcuNDUsMEEyLjkzLDIuOTMsMCwxLDEsMTMuMzMsMTUsMi45MywyLjkzLDAsMCwx'@; put 'LDE2LjI2LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTcsMTBhMSwxLDAsMCwwLTEsMVYyMy41NUg4VjEySDE4LjU3QTMuNywzLjcsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWktb3V0'@; put 'bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOEg0VjhIMjAuMTRsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xyLWkt'@; put 'b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjIuMDksMTUuMzlhMy42NSwzLjY1LDAsMCwxLTEuOC0uNTUsNC41MSw0LjUxLDAsMSwwLDcuMTEuNTZIMjUuMTdhMi45MiwyLjkyLDAsMSwxLTMuMDgsMFoiIGNsYXNzPSJjbHIt'@; put 'aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCww'@; put 'LDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cblxuICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhB'@; put 'MiwyLDAsMCwwLDMyLDZaTTMwLDI0SDZWMTJIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xMi4yMSwyM2E1LDUsMCwxLDAtNS01QTUsNSwwLDAsMCwxMi4yMSwyM1ptMC03YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDEyLjIxLDE2'@; put 'WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z'@; put 'b2xpZC1wYXRoLTMiLz5cblxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk'@; put 'Ii8+XG4gIDxwYXRoIGQ9Ik0yMy43OSwyM2E1LDUsMCwxLDAtNS01QTUsNSwwLDAsMCwyMy43OSwyM1ptMC03YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGgg'@; put 'ZD0iTTMwLDEzLjVWMjRINlYxMkgyNS41MWE3LjQ5LDcuNDksMCwwLDEtMy02SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTMtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTcuMiwxOGE1LDUsMCwxLDAsNS01QTUsNSwwLDAs'@; put 'MCw3LjIsMThabTcsMGEyLDIsMCwxLDEtMi0yQTIsMiwwLDAsMSwxNC4yMiwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTE4Ljc4LDE4YTUsNSwwLDEsMCw5LjI3LTIuNkgyMi4yM2EzLjcxLDMuNzEs'@; put 'MCwwLDEtMi4xNy0uNzFBNSw1LDAsMCwwLDE4Ljc4LDE4Wm01LTJhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMwVjI0SDZW'@; put 'MTJIMTguNTdhMy42NSwzLjY1LDAsMCwxLC40OC0yLjExTDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBh'@; put 'dGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt'@; put 'cGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLGguQ2xyU2hhcGVBbmltYXRpb249KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjE2LDMxLjcxYTQuNCw0LjQsMCwwLDEtNC42NC0xQTQuMzQsNC4zNCwwLDAsMSw0LjIzLDI3LjZhNC40MSw0LjQxLDAsMCwxLC4xOC0x'@; put 'LjIsMTEuNjEsMTEuNjEsMCwwLDEtMS0yLjU2LDYuNCw2LjQsMCwwLDAsOS4zMyw4LjYzQTExLjU1LDExLjU1LDAsMCwxLDEwLjE2LDMxLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjQxLDI3LjY4YTcuNjEsNy42MSww'@; put 'LDAsMS05LjA4LTEuMjYsNy41OCw3LjU4LDAsMCwxLTEuMjctOS4wNiwxNC4yNiwxNC4yNiwwLDAsMS0uMzctMi44NSw5LjU4LDkuNTgsMCwwLDAsLjIyLDEzLjMzLDkuNjMsOS42MywwLDAsMCwxMy4zNS4yMkExNC40NiwxNC40NiwwLDAsMSwxOC40MSwyNy42OFoiIGNsYXNzPSJjbHItaS1v'@; put 'dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS42NiwyNi4yMWExMi4xLDEyLjEsMCwxLDEsOC41Ny0zLjU0aDBBMTIuMTEsMTIuMTEsMCwwLDEsMjEuNjYsMjYuMjFaTTIxLjY2LDRBMTAuMTEsMTAuMTEsMCwwLDAsMTEuNTQsMTQuMTFhMTAsMTAsMCwwLDAs'@; put 'Myw3LjE0LDEwLjEyLDEwLjEyLDAsMCwwLDE0LjMxLDBBMTAuMTEsMTAuMTEsMCwwLDAsMjEuNjYsNFptNy44NiwxOGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zLjUsMjMuNzdhNi40MSw2LjQxLDAsMCwwLDkuMzMs'@; put 'OC42N0ExMS42NSwxMS42NSwwLDAsMSwzLjUsMjMuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik03LjY4LDE0LjUzYTkuNiw5LjYsMCwwLDAsMTMuNCwxMy43QTE0LjExLDE0LjExLDAsMCwxLDcuNjgsMTQuNTNaIiBjbGFzcz0iY2xy'@; put 'LWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS43OCwyQTEyLjEyLDEyLjEyLDAsMSwxLDkuNjYsMTQuMTUsMTIuMTIsMTIuMTIsMCwwLDEsMjEuNzgsMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAnKSxoLkNsclNoYXBl'@; put 'Q2lDZD0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuNTMsMTkuODFhNy40NSw3LjQ1LDAsMCwxLTEuNjUtLjE4LDEwLjQ4LDEwLjQ4LDAsMCwxLC43MiwyLjEzYy4zLDAsLjYxLDAsLjkzLDBhOS41Miw5LjUyLDAsMCwwLDMtLjQ5bC0uOTMtMS44MUE3LjY3LDcuNjcsMCwwLDEsMjMu'@; put 'NTMsMTkuODFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTguMzYsMTcuODcsMTgsMTcuNDlhNy40LDcuNCwwLDAsMS0yLjItNS45Miw3LjMxLDcuMzEsMCwwLDEsMS41NC00TDE3LjI2LDlBMSwxLDAsMCwwLDE4LjE3LDEwaC4w'@; put 'OWExLDEsMCwwLDAsMS0uOTFMMTkuNiw1YTEsMSwwLDAsMC0uMjktLjc5QTEsMSwwLDAsMCwxOC41Miw0bC00LjA5LjM1YTEsMSwwLDAsMCwuMTcsMmwxLjI5LS4xMWE5LjQ1LDkuNDUsMCwwLDAtMi4wNSw1LjMyLDkuMjgsOS4yOCwwLDAsMCwyLjY3LDcuMjZsLjMxLjM3YTcuMzMsNy4zMyww'@; put 'LDAsMSwyLjA2LDQuOTEsNy4zOSw3LjM5LDAsMCwxLS4yNiwyLjQ3bDEuOC45MWE4Ljc2LDguNzYsMCwwLDAsLjQ1LTMuNTFBOS4yOCw5LjI4LDAsMCwwLDE4LjM2LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMyLjQs'@; put 'MTcuOTEsMzEuMTksMThBOS42NSw5LjY1LDAsMCwwLDIzLjUzLDIuNDVhOS4zMyw5LjMzLDAsMCwwLTMsLjQ5bC45MSwxLjhhNy42Nyw3LjY3LDAsMCwxLDkuNzYsNy4zOSw3LjU4LDcuNTgsMCwwLDEtMS42NSw0LjcybC4xLTEuNTRhMSwxLDAsMSwwLTItLjEzbC0uMjgsNC4wOGExLDEsMCww'@; put 'LDAsLjMxLjc4Ljk0Ljk0LDAsMCwwLC42OS4yOGguMWw0LjA4LS40MmExLDEsMCwwLDAsLjktMS4xQTEsMSwwLDAsMCwzMi40LDE3LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTQuMDcsMjAuNDRoLjA4bDQuMDktLjM1YTEs'@; put 'MSwwLDEsMC0uMTctMmwtMS4zOS4xMmE3LjYzLDcuNjMsMCwwLDEsNC41Mi0xLjQ5LDcuOSw3LjksMCwwLDEsMS42My4xOCwxMC4yMywxMC4yMywwLDAsMS0uNzEtMi4xM2MtLjMsMC0uNjEsMC0uOTIsMGE5LjY2LDkuNjYsMCwwLDAtNS45LDJsLjEyLTEuMzFhMSwxLDAsMCwwLS45Mi0xLjA4'@; put 'LDEsMSwwLDAsMC0xLjA4LjkxbC0uMzUsNC4wOGExLDEsMCwwLDAsMSwxLjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE4LjQyLDI4LjIzbC00LjA5LjI3YTEsMSwwLDAsMCwuMTMsMkwxNiwzMC4zOWE3LjcxLDcuNzEsMCww'@; put 'LDEtMTIuNTQtNiw3LjYsNy42LDAsMCwxLC4yOS0yTDIsMjEuNDZhOS41OSw5LjU5LDAsMCwwLS40NywyLjk1QTkuNyw5LjcsMCwwLDAsMTcuMTksMzJsLS4xMiwxLjE4YTEsMSwwLDAsMCwuODksMS4xaC4xMWExLDEsMCwwLDAsMS0uOWwuNDItNC4wNmExLDEsMCwwLDAtMS4wNi0xLjFaIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLGguQ2xyU2hhcGVGaWxlU2hhcmUyPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNSw0SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNS45MVYzMC4wOUExLjg5LDEuODksMCwwLDAsNy44MywzMkgyOC4xN0Ex'@; put 'Ljg3LDEuODcsMCwwLDAsMzAsMzAuMDlWOVpNMjQsNS43OCwyOC4yLDEwSDI0Wk04LDMwVjZIMjJ2Nmg2VjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIyLDIxLjgxYTIuMTEsMi4xMSwwLDAsMC0xLjQ0LjYybC01LjcyLTIu'@; put 'NjZ2LS40NGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0aDBhMi4xNCwyLjE0LDAsMCwwLS42NCwxLjQ4di4yM2wtNS42NCwyLjY2YTIuMDgsMi4wOCwwLDEsMC0uMDgsMi45NWwuMDgtLjA4LDUuNjcsMi42NnYuM0EyLjA5LDIuMDksMCwxLDAsMjIsMjEuODRaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICBcbiAgPHBhdGggZD0iTTI1LDQuMDZINy44M0ExLjg5LDEuODksMCwwLDAsNiw2VjMwLjE1YTEuODksMS44OSwwLDAsMCwxLjgzLDEuOTFIMjguMTdBMS44NywxLjg3LDAsMCwwLDMwLDMwLjE1VjlaTTIyLDI2YTIuMDks'@; put 'Mi4wOSwwLDAsMS0yLjEtMi4wOHYtLjNMMTQuMjcsMjFsLS4wOC4wOGEyLjA4LDIuMDgsMCwxLDEsLjA4LTIuOTVsNS42NC0yLjY2di0uMjNhMi4xNCwyLjE0LDAsMCwxLC42NC0xLjQ4aDBhMi4wOCwyLjA4LDAsMSwxLS4wNiwyLjk0bC01LjY2LDIuNjV2LjQ0bDUuNzIsMi42NkEyLjExLDIu'@; put 'MTEsMCwwLDEsMjIsMjEuODFsMCwwQTIuMDksMi4wOSwwLDAsMSwyMiwyNlptMi0xNlY1Ljg0bDQuMiw0LjIyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGguVGVjaG5vbG9neVNoYXBlcz17InJ1bGVyLXBlbmNpbCI6aC5DbHJTaGFwZVJ1bGVyUGVuY2ls'@; put 'LCJwaG9uZS1oYW5kc2V0IjpoLkNsclNoYXBlUGhvbmVIYW5kc2V0LCJuby13aWZpIjpoLkNsclNoYXBlTm9XaWZpLGluc3RhbGw6aC5DbHJTaGFwZUluc3RhbGwsdW5pbnN0YWxsOmguQ2xyU2hhcGVVbmluc3RhbGwsbGF5ZXJzOmguQ2xyU2hhcGVMYXllcnMsYmxvY2s6aC5DbHJTaGFwZUJs'@; put 'b2NrLCJibG9ja3MtZ3JvdXAiOmguQ2xyU2hhcGVCbG9ja3NHcm91cCxidW5kbGU6aC5DbHJTaGFwZUJ1bmRsZSx3aWZpOmguQ2xyU2hhcGVXaWZpLCJyYWNrLXNlcnZlciI6aC5DbHJTaGFwZVJhY2tTZXJ2ZXIsImhhcmQtZGlzayI6aC5DbHJTaGFwZUhhcmREaXNrLCJiYWNrdXAtcmVzdG9y'@; put 'ZSI6aC5DbHJTaGFwZUJhY2t1cFJlc3RvcmUsYmFja3VwOmguQ2xyU2hhcGVCYWNrdXAsZGV2aWNlczpoLkNsclNoYXBlRGV2aWNlcyxrZXlib2FyZDpoLkNsclNoYXBlS2V5Ym9hcmQsbW91c2U6aC5DbHJTaGFwZU1vdXNlLGRhc2hib2FyZDpoLkNsclNoYXBlRGFzaGJvYXJkLGhvc3Q6aC5D'@; put 'bHJTaGFwZUhvc3Qsc3RvcmFnZTpoLkNsclNoYXBlU3RvcmFnZSxjbHVzdGVyOmguQ2xyU2hhcGVDbHVzdGVyLGFwcGxpY2F0aW9uczpoLkNsclNoYXBlQXBwbGljYXRpb25zLGJ1aWxkaW5nOmguQ2xyU2hhcGVCdWlsZGluZyxjcHU6aC5DbHJTaGFwZUNQVSxtZW1vcnk6aC5DbHJTaGFwZU1l'@; put 'bW9yeSwiZGF0YS1jbHVzdGVyIjpoLkNsclNoYXBlRGF0YUNsdXN0ZXIsInJlc291cmNlLXBvb2wiOmguQ2xyU2hhcGVSZXNvdXJjZVBvb2wsc2hpZWxkOmguQ2xyU2hhcGVTaGllbGQsInNoaWVsZC1jaGVjayI6aC5DbHJTaGFwZVNoaWVsZENoZWNrLCJzaGllbGQteCI6aC5DbHJTaGFwZVNo'@; put 'aWVsZFgsaW1wb3J0OmguQ2xyU2hhcGVJbXBvcnQsZXhwb3J0OmguQ2xyU2hhcGVFeHBvcnQsInVwbG9hZC1jbG91ZCI6aC5DbHJTaGFwZVVwbG9hZENsb3VkLCJkb3dubG9hZC1jbG91ZCI6aC5DbHJTaGFwZURvd25sb2FkQ2xvdWQscGx1Z2luOmguQ2xyU2hhcGVQbHVnaW4sZmxvcHB5Omgu'@; put 'Q2xyU2hhcGVGbG9wcHksY29tcHV0ZXI6aC5DbHJTaGFwZUNvbXB1dGVyLGRpc3BsYXk6aC5DbHJTaGFwZURpc3BsYXksdGVybWluYWw6aC5DbHJTaGFwZVRlcm1pbmFsLGNvZGU6aC5DbHJTaGFwZUNvZGUsYXBwbGljYXRpb246aC5DbHJTaGFwZUFwcGxpY2F0aW9uLGJhdHRlcnk6aC5DbHJT'@; put 'aGFwZUJhdHRlcnksbW9iaWxlOmguQ2xyU2hhcGVNb2JpbGUsdGFibGV0OmguQ2xyU2hhcGVUYWJsZXQsIm5ldHdvcmstZ2xvYmUiOmguQ2xyU2hhcGVOZXR3b3JrR2xvYmUsIm5ldHdvcmstc2V0dGluZ3MiOmguQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3MsIm5ldHdvcmstc3dpdGNoIjpoLkNs'@; put 'clNoYXBlTmV0d29ya1N3aXRjaCxyb3V0ZXI6aC5DbHJTaGFwZVJvdXRlcix2bTpoLkNsclNoYXBlVk0sInZtdy1hcHAiOmguQ2xyU2hhcGVWTVdBcHAsY2VydGlmaWNhdGU6aC5DbHJTaGFwZUNlcnRpZmljYXRlLGFyY2hpdmU6aC5DbHJTaGFwZUFyY2hpdmUsdW5hcmNoaXZlOmguQ2xyU2hh'@; put 'cGVVbmFyY2hpdmUsY29ubmVjdDpoLkNsclNoYXBlQ29ubmVjdCxkaXNjb25uZWN0OmguQ2xyU2hhcGVEaXNjb25uZWN0LGxpbms6aC5DbHJTaGFwZUxpbmssdW5saW5rOmguQ2xyU2hhcGVVbmxpbmssImNsb3VkLW5ldHdvcmsiOmguQ2xyU2hhcGVDbG91ZE5ldHdvcmssImNsb3VkLXNjYWxl'@; put 'IjpoLkNsclNoYXBlQ2xvdWRTY2FsZSwiY2xvdWQtdHJhZmZpYyI6aC5DbHJTaGFwZUNsb3VkVHJhZmZpYywiY29udHJvbC1sdW4iOmguQ2xyQ29udHJvbEx1bixkZXBsb3k6aC5DbHJTaGFwZURlcGxveSxoZWxpeDpoLkNsclNoYXBlSGVsaXgsZmxhc2s6aC5DbHJTaGFwZUZsYXNrLGFkbWlu'@; put 'aXN0cmF0b3I6aC5DbHJTaGFwZUFkbWluaXN0cmF0b3IsImhhcmQtZHJpdmUiOmguQ2xyU2hhcGVIYXJkRHJpdmUsImhhcmQtZHJpdmUtZGlza3MiOmguQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcyxudm1lOmguQ2xyU2hhcGVOVk1lLHNzZDpoLkNsclNoYXBlU1NELGJsdWV0b290aDpoLkNsclNo'@; put 'YXBlQmx1ZXRvb3RoLCJibHVldG9vdGgtb2ZmIjpoLkNsclNoYXBlQmx1ZXRvb3RoT2ZmLCJwcm9jZXNzLW9uLXZtIjpoLkNsclNoYXBlUHJvY2Vzc09uVk0sImFzc2lnbi11c2VyIjpoLkNsclNoYXBlQXNzaWduVXNlcixhdG9tOmguQ2xyU2hhcGVBdG9tLCJiYXItY29kZSI6aC5DbHJTaGFw'@; put 'ZUJhckNvZGUsImNkLWR2ZCI6aC5DbHJTaGFwZUNkRHZkLGNvbnRhaW5lcjpoLkNsclNoYXBlQ29udGFpbmVyLCJjb250YWluZXItdm9sdW1lIjpoLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lLCJmaWxlLXNoYXJlIjpoLkNsclNoYXBlRmlsZVNoYXJlLCJxci1jb2RlIjpoLkNsclNoYXBlUXJD'@; put 'b2RlLHVzYjpoLkNsclNoYXBlVXNiLHJhZGFyOmguQ2xyU2hhcGVSYWRhcixjYXBhY2l0b3I6aC5DbHJTaGFwZUNhcGFjaXRvcixzcXVpZDpoLkNsclNoYXBlU3F1aWQsaW5kdWN0b3I6aC5DbHJTaGFwZUluZHVjdG9yLHJlc2lzdG9yOmguQ2xyU2hhcGVSZXNpc3RvciwiaG9zdC1ncm91cCI6'@; put 'aC5DbHJTaGFwZUhvc3RHcm91cCwic3RvcmFnZS1hZGFwdGVyIjpoLkNsclNoYXBlU3RvcmFnZUFkYXB0ZXIsIm5vZGUtZ3JvdXAiOmguQ2xyU2hhcGVOb2RlR3JvdXAsbm9kZXM6aC5DbHJTaGFwZU5vZGVzLG5hbWVzcGFjZTpoLkNsclNoYXBlTmFtZXNwYWNlLG5vZGU6aC5DbHJTaGFwZU5v'@; put 'ZGUscG9kOmguQ2xyU2hhcGVQb2QsIm1lZGlhLWNoYW5nZXIiOmguQ2xyU2hhcGVNZWRpYUNoYW5nZXIsInRhcGUtZHJpdmUiOmguQ2xyU2hhcGVUYXBlRHJpdmUsYW5pbWF0aW9uOmguQ2xyU2hhcGVBbmltYXRpb24sImNpLWNkIjpoLkNsclNoYXBlQ2lDZCwiZmlsZS1zaGFyZS0yIjpoLkNs'@; put 'clNoYXBlRmlsZVNoYXJlMn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGguVGVjaG5vbG9neVNoYXBlcywic2VydmVyIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguVGVjaG5vbG9neVNoYXBlcy5ob3N0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguVGVjaG5vbG9neVNoYXBlcywiY29tbWFu'@; put 'ZCIsKDAsYy5kZXNjcmlwdG9yQ29uZmlnKShoLlRlY2hub2xvZ3lTaGFwZXMudGVybWluYWwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5UZWNobm9sb2d5U2hhcGVzLCJtb2JpbGUtcGhvbmUiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5UZWNobm9sb2d5U2hhcGVzLm1vYmlsZSkpLE9i'@; put 'amVjdC5kZWZpbmVQcm9wZXJ0eShoLlRlY2hub2xvZ3lTaGFwZXMsImxpY2Vuc2UiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5UZWNobm9sb2d5U2hhcGVzLmNlcnRpZmljYXRlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguVGVjaG5vbG9neVNoYXBlcywiZGlzY29ubmVjdGVkIiwoMCxj'@; put 'LmRlc2NyaXB0b3JDb25maWcpKGguVGVjaG5vbG9neVNoYXBlc1sibm8td2lmaSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguVGVjaG5vbG9neVNoYXBlcywicmVjZWl2ZXIiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5UZWNobm9sb2d5U2hhcGVzWyJwaG9uZS1oYW5kc2V0Il0pKSxP'@; put 'YmplY3QuZGVmaW5lUHJvcGVydHkoaC5UZWNobm9sb2d5U2hhcGVzLCJkZXNpZ24iLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5UZWNobm9sb2d5U2hhcGVzWyJydWxlci1wZW5jaWwiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLlRlY2hub2xvZ3lTaGFwZXMsImRuYSIsKDAsYy5kZXNj'@; put 'cmlwdG9yQ29uZmlnKShoLlRlY2hub2xvZ3lTaGFwZXMuaGVsaXgpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5UZWNobm9sb2d5U2hhcGVzLCJmb2xkZXItc2hhcmUiLCgwLGMuZGVzY3JpcHRvckNvbmZpZykoaC5UZWNobm9sb2d5U2hhcGVzWyJmaWxlLXNoYXJlIl0pKSx0eXBlb2Ygd2lu'@; put 'ZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoaC5UZWNobm9sb2d5U2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyAqKiohCiAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oaixoLHkpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksaC5UZXh0RWRpdFNoYXBlcz1oLkNsclNoYXBlU3VwZXJz'@; put 'Y3JpcHQ9aC5DbHJTaGFwZVN1YnNjcmlwdD1oLkNsclNoYXBlU3RyaWtldGhyb3VnaD1oLkNsclNoYXBlSW5kZW50PWguQ2xyU2hhcGVPdXRkZW50PWguQ2xyU2hhcGVIaWdobGlnaHRlcj1oLkNsclNoYXBlVGV4dENvbG9yPWguQ2xyU2hhcGVMYW5ndWFnZT1oLkNsclNoYXBlQWxpZ25Ub3A9'@; put 'aC5DbHJTaGFwZUFsaWduTWlkZGxlPWguQ2xyU2hhcGVBbGlnbkJvdHRvbT1oLkNsclNoYXBlVW5kZXJsaW5lPWguQ2xyU2hhcGVUZXh0PWguQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dD1oLkNsclNoYXBlQmxvY2tRdW90ZT1oLkNsclNoYXBlUGFpbnRSb2xsZXI9aC5DbHJTaGFwZU51bWJlckxp'@; put 'c3Q9aC5DbHJTaGFwZUFsaWduTGVmdFRleHQ9aC5DbHJTaGFwZUp1c3RpZnlUZXh0PWguQ2xyU2hhcGVJdGFsaWM9aC5DbHJTaGFwZUFsaWduUmlnaHQ9aC5DbHJTaGFwZUFsaWduTGVmdD1oLkNsclNoYXBlQWxpZ25DZW50ZXI9aC5DbHJTaGFwZUZvbnRTaXplPWguQ2xyU2hhcGVDaGVja2Jv'@; put 'eExpc3Q9aC5DbHJTaGFwZUNlbnRlclRleHQ9aC5DbHJTaGFwZUJ1bGxldExpc3Q9aC5DbHJTaGFwZUJvbGQ9dm9pZCAwO3ZhciBjPXkoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTto'@; put 'LkNsclNoYXBlQm9sZD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjIuNDMsMTcuNTRhNC42Nyw0LjY3LDAsMCwwLDIuOC00LjM3di0uMDZhNC40Myw0LjQzLDAsMCwwLTEuMzEtMy4yNSw3LjA5LDcuMDksMCwwLDAtNS4xMy0xLjczaC03QTEuNzEsMS43MSwwLDAsMCwxMCw5Ljg2VjI2'@; put 'YTEuNzIsMS43MiwwLDAsMCwxLjc0LDEuNzRoNy4zM2M0LjM3LDAsNy4yNS0xLjg4LDcuMjUtNS4zOFYyMi4zQzI2LjMyLDE5LjY0LDI0LjczLDE4LjMyLDIyLjQzLDE3LjU0Wk0xMy42OCwxMS40aDQuNTRjMiwwLDMuMTUuODksMy4xNSwyLjMzdi4wNmMwLDEuNjgtMS4zNiwyLjQ5LTMuMzgs'@; put 'Mi40OUgxMy42OFpNMjIuMzcsMjJjMCwxLjU5LTEuMzEsMi40My0zLjQ2LDIuNDNIMTMuNjhWMTkuNjJoNWMyLjQ5LDAsMy42OS44OCwzLjY5LDIuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlQnVsbGV0TGlzdD0oMCxjLmNs'@; put 'ckljb25TVkcpKCc8Y2lyY2xlIGN4PSI1LjIxIiBjeT0iOS4xNyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iNS4yMSIgY3k9IjE3LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'MiIgLz48Y2lyY2xlIGN4PSI1LjIxIiBjeT0iMjUuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi40Miw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzMS40MkExLDEsMCwwLDAsMzIuNDIsOVoiIGNsYXNzPSJjbHItaS1vdXRs'@; put 'aW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMS40MiwxNkgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDIsMjRIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksaC5DbHJTaGFwZUNlbnRlclRleHQ9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjg4LDhINS4xMmExLjEsMS4xLDAsMCwwLDAsMi4ySDMwLjg4YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjUuNSwxNi4yYTEuMSwxLjEsMCwxLDAsMC0yLjJoLTE1YTEuMSwxLjEsMCwxLDAsMCwyLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAuMjUs'@; put 'MjBINS43NWExLjEsMS4xLDAsMCwwLDAsMi4yaDI0LjVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNC44OCwyNkgxMS4xMmExLjEsMS4xLDAsMSwwLDAsMi4ySDI0Ljg4YTEuMSwxLjEsMCwxLDAs'@; put 'MC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxoLkNsclNoYXBlQ2hlY2tib3hMaXN0PSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS40MywxNkgxMHYySDMxLjQzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj'@; put 'bHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEuNDMsMjRIMTB2MkgzMS40M2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE1LjQ1LDEwaDE2YTEsMSwwLDAsMCwwLTJoLTE0WiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE3LjUsMy40MmExLjA5LDEuMDksMCwwLDAtMS41NSwwTDcuODksMTEuNDgsNC41MSw3Ljg0QTEuMSwxLjEsMCwxLDAsMi45LDkuMzRsNC45NCw1LjNMMTcuNSw1QTEuMSwxLjEsMCwwLDAsMTcuNSwzLjQyWiIg'@; put 'Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksaC5DbHJTaGFwZUZvbnRTaXplPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSw5LjA4QTEuMTMsMS4xMywwLDAsMCwxOS44Niw4SDQuNjJhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMTFWMjdhMS4wOSwx'@; put 'LjA5LDAsMCwwLDIuMTcsMFYxMC4xOWg2LjY5QTEuMTQsMS4xNCwwLDAsMCwyMSw5LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjY3LDE1SDIxLjE1YTEuMSwxLjEsMCwxLDAsMCwyLjE5SDI1VjI2LjVhMS4wOSwxLjA5LDAs'@; put 'MCwwLDIuMTcsMFYxNy4yM2gzLjU0YTEuMSwxLjEsMCwxLDAsMC0yLjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZUFsaWduQ2VudGVyPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwyMEgxOVYxNmg2YTEsMSwwLDAs'@; put 'MCwxLTFWN2ExLDEsMCwwLDAtMS0xSDE5VjJhMSwxLDAsMCwwLTIsMFY2SDExYTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxaDZ2NEg1YTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxSDE3djRhMSwxLDAsMCwwLDIsMFYzMEgzMWExLDEsMCwwLDAsMS0xVjIxQTEsMSwwLDAsMCwz'@; put 'MSwyMFpNMTIsMTRWOEgyNHY2Wk0zMCwyOEg2VjIySDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksaC5DbHJTaGFwZUFsaWduTGVmdD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSwxQTEsMSwwLDAsMCw0LDJWMzRhMSwxLDAsMCwwLDIs'@; put 'MFYyQTEsMSwwLDAsMCw1LDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEsMjBIOFYzMEgzMWExLDEsMCwwLDAsMS0xVjIxQTEsMSwwLDAsMCwzMSwyMFptLTEsOEgxMFYyMkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwxNVY3YTEsMSwwLDAsMC0xLTFIOFYxNkgyM0ExLDEsMCwwLDAsMjQsMTVabS0yLTFIMTBWOEgyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGguQ2xyU2hhcGVBbGlnblJpZ2h0PSgwLGMu'@; put 'Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwxYTEsMSwwLDAsMC0xLDFWMzRhMSwxLDAsMCwwLDIsMFYyQTEsMSwwLDAsMCwzMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQsMjF2OGExLDEsMCwwLDAsMSwxSDI4VjIwSDVBMSwx'@; put 'LDAsMCwwLDQsMjFabTIsMUgyNnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTIsN3Y4YTEsMSwwLDAsMCwxLDFIMjhWNkgxM0ExLDEsMCwwLDAsMTIsN1ptMiwxSDI2djZIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxoLkNsclNoYXBlSXRhbGljPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC40Miw4SDE3LjFhMS4xLDEuMSwwLDEsMCwwLDIuMTloMi4xM0wxMy4xMSwyNS41NUgxMC40N2ExLjEsMS4xLDAsMSwwLDAsMi4xOUgxNy44YTEuMSwxLjEsMCwxLDAs'@; put 'MC0yLjE5SDE1LjUxbDYuMTMtMTUuMzZoMi43OGExLjEsMS4xLDAsMSwwLDAtMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGguQ2xyU2hhcGVKdXN0aWZ5VGV4dD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiwxMC4ySDMxLjc1YTEu'@; put 'MSwxLjEsMCwxLDAsMC0yLjJINmExLjEsMS4xLDAsMSwwLDAsMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLjc1LDE0SDZhMS4xLDEuMSwwLDEsMCwwLDIuMkgzMS43NWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMxLjEyLDIwSDYuNjJhMS4xLDEuMSwwLDEsMCwwLDIuMmgyNC41YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAu'@; put 'NDUsMjUuODNINi42YTEuMSwxLjEsMCwwLDAsMCwyLjJIMzAuNDVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGguQ2xyU2hhcGVBbGlnbkxlZnRUZXh0PSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC4y'@; put 'NSwyNkg2djIuMkgyMC4yNWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDIwSDZ2Mi4ySDI4QTEuMSwxLjEsMCwwLDAsMjgsMjBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMiIgLz48cGF0aCBkPSJNMjIuNiwxNS4xQTEuMSwxLjEsMCwwLDAsMjEuNSwxNEg2djIuMkgyMS41QTEuMSwxLjEsMCwwLDAsMjIuNiwxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI5LjI1LDhINnYyLjJIMjkuMjVh'@; put 'MS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGguQ2xyU2hhcGVOdW1iZXJMaXN0PSgwLGMuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iNS40NiA3LjQxIDUuNDYgMTEuNTYgNi42NSAxMS41NiA2LjY1IDYu'@; put 'MDUgNS43IDYuMDUgNC4wNSA3LjE2IDQuNTIgOCA1LjQ2IDcuNDEiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjU3LDE0LjgyYS43Ni43NiwwLDAsMSwuODMuNzNjMCwuMzgtLjIxLjc0LS44NywxLjI3bC0yLDEuNTd2MUg3LjY3VjE4'@; put 'LjI4SDUuMzNsMS0uNzdjMS0uNywxLjI4LTEuMjcsMS4yOC0yYTEuODMsMS44MywwLDAsMC0yLTEuNzYsMi42MywyLjYzLDAsMCwwLTIuMTQsMS4wOGwuNzYuNzNBMS43NSwxLjc1LDAsMCwxLDUuNTcsMTQuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg'@; put 'Lz48cGF0aCBkPSJNNi41NiwyNC42NGExLjMyLDEuMzIsMCwwLDAsMS0xLjI3YzAtLjg3LS43OC0xLjUxLTItMS41MWEyLjYxLDIuNjEsMCwwLDAtMi4xLDFsLjY5LjcyYTEuNzgsMS43OCwwLDAsMSwxLjMtLjY0Yy41NCwwLC45Mi4yNi45Mi42NnMtLjM2LjYyLTEsLjYySDQuNzl2MWguNjRj'@; put 'Ljc0LDAsMS4wNy4yMSwxLjA3LjYzcy0uMzUuNjgtMSwuNjhhMiwyLDAsMCwxLTEuNDYtLjY1bC0uNy43OGEyLjg1LDIuODUsMCwwLDAsMi4yMS45M2MxLjI5LDAsMi4xMy0uNjksMi4xMy0xLjY0QTEuMzMsMS4zMywwLDAsMCw2LjU2LDI0LjY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMyLjQyLDlhMSwxLDAsMCwwLTEtMUgxMHYySDMxLjQyQTEsMSwwLDAsMCwzMi40Miw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMxLjQyLDE2SDEwdjJIMzEuNDJhMSwxLDAs'@; put 'MCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMS40MiwyNEgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxoLkNsclNoYXBlUGFpbnRS'@; put 'b2xsZXI9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDEwVjRhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDR2NmEyLDIsMCwwLDAsMiwySDI5QTIsMiwwLDAsMCwzMSwxMFpNNiw0SDI5djZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAv'@; put 'PjxwYXRoIGQ9Ik0zMyw2SDMydjYuMjlMMTguNywxNi41NGExLDEsMCwwLDAtLjcsMVYxOUgxNlYzM2EyLDIsMCwwLDAsMiwyaDJhMiwyLDAsMCwwLDItMlYxOUgyMHYtLjczTDMzLjMsMTRhMSwxLDAsMCwwLC43LTFWN0ExLDEsMCwwLDAsMzMsNlpNMjAsMzNIMThWMjFoMloiIGNsYXNzPSJj'@; put 'bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxyZWN0IHg9IjQiIHk9IjIiIHdpZHRoPSIyNyIgaGVpZ2h0PSIxMCIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMyw2SDMydjYuMjRMMTguNzEsMTYu'@; put 'NDVhMSwxLDAsMCwwLS43MSwxVjE5SDE2VjM0YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE5SDIwdi0uODJMMzMuMjksMTRBMSwxLDAsMCwwLDM0LDEzVjdBMSwxLDAsMCwwLDMzLDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGguQ2xyU2hh'@; put 'cGVCbG9ja1F1b3RlPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMS44NiwxNi41NWE0LjMxLDQuMzEsMCwwLDAtMi4xMS41NiwxNC40NCwxNC40NCwwLDAsMSw0LjM2LTYsMS4xLDEuMSwwLDAsMC0xLjQtMS43Yy00LDMuMjUtNS43OCw3Ljc1LTUuNzgsMTAuNTRBNS4wOCw1LjA4LDAs'@; put 'MCwwLDEwLDI0LjU4YTQuNCw0LjQsMCwwLDAsMS44OC40NCw0LjI0LDQuMjQsMCwxLDAsMC04LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIzLDE2LjU1YTQuMjksNC4yOSwwLDAsMC0yLjExLjU2LDE0LjUsMTQuNSwwLDAsMSw0'@; put 'LjM1LTYsMS4xLDEuMSwwLDEsMC0xLjM5LTEuN2MtNCwzLjI1LTUuNzgsNy43NS01Ljc4LDEwLjU0YTUuMDgsNS4wOCwwLDAsMCwzLDQuNjFBNC4zNyw0LjM3LDAsMCwwLDIzLDI1YTQuMjQsNC4yNCwwLDEsMCwwLTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh'@; put 'dGgtMiIgLz4nKSxoLkNsclNoYXBlQWxpZ25SaWdodFRleHQ9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjY1LDI3LjFhMS4xLDEuMSwwLDAsMCwxLjEsMS4xSDMwVjI2SDE1Ljc1QTEuMSwxLjEsMCwwLDAsMTQuNjUsMjcuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91'@; put 'dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LjksMjEuMUExLjEsMS4xLDAsMCwwLDgsMjIuMkgzMFYyMEg4QTEuMSwxLjEsMCwwLDAsNi45LDIxLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMuNCwxNS4xYTEuMSwxLjEsMCww'@; put 'LDAsMS4xLDEuMUgzMFYxNEgxNC41QTEuMSwxLjEsMCwwLDAsMTMuNCwxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTYuNzUsOGExLjEsMS4xLDAsMSwwLDAsMi4ySDMwVjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v'@; put 'dXRsaW5lLXBhdGgtNCIgLz4nKSxoLkNsclNoYXBlVGV4dD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMTksOC44NGExLjQ1LDEuNDUsMCwwLDAtMS40LTFoLS4xMmExLjQ2LDEuNDYsMCwwLDAtMS40MiwxTDEuMTQsMjYuNTZhMS4yOSwxLjI5LDAsMCwwLS4xNC41OSwxLDEsMCww'@; put 'LDAsMSwxLDEuMTIsMS4xMiwwLDAsMCwxLjA4LS43N2wyLjA4LTQuNjVoMTFsMi4wOCw0LjU5YTEuMjQsMS4yNCwwLDAsMCwxLjEyLjgzLDEuMDgsMS4wOCwwLDAsMCwxLjA4LTEuMDgsMS42NCwxLjY0LDAsMCwwLS4xNC0uNTdaTTYuMDgsMjAuNzFsNC41OS0xMC4yMiw0LjYsMTAuMjJaIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMjQsMTQuNzhBNi4zNSw2LjM1LDAsMCwwLDI3LjYsMTMuMmExMS4zNiwxMS4zNiwwLDAsMC00LjcsMSwxLDEsMCwwLDAtLjU4Ljg5LDEsMSwwLDAsMCwuOTQuOTIsMS4yMywxLjIzLDAsMCww'@; put 'LC4zOS0uMDgsOC44Nyw4Ljg3LDAsMCwxLDMuNzItLjgxYzIuNywwLDQuMjgsMS4zMyw0LjI4LDMuOTJ2LjVhMTUuMjksMTUuMjksMCwwLDAtNC40Mi0uNjFjLTMuNjQsMC02LjE0LDEuNjEtNi4xNCw0LjY0di4wNWMwLDIuOTUsMi43LDQuNDgsNS4zNyw0LjQ4YTYuMjksNi4yOSwwLDAsMCw1'@; put 'LjE5LTIuNDhWMjYuOWExLDEsMCwwLDAsMSwxLDEsMSwwLDAsMCwxLTEuMDZWMTlBNS43MSw1LjcxLDAsMCwwLDMyLjI0LDE0Ljc4Wm0tLjU2LDcuN2MwLDIuMjgtMi4xNywzLjg5LTQuODEsMy44OS0xLjk0LDAtMy42MS0xLjA2LTMuNjEtMi44NnYtLjA2YzAtMS44LDEuNS0zLDQuMi0zYTE1'@; put 'LjIsMTUuMiwwLDAsMSw0LjIyLjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZVVuZGVybGluZT0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjguMTdjNS4wOCwwLDguNDgtMy4wOCw4LjQ4LTlWOC41NGExLjE1LDEu'@; put 'MTUsMCwxLDAtMi4zLDB2MTAuOGMwLDQuNDQtMi4zOCw2LjcxLTYuMTMsNi43MXMtNi4yMS0yLjQ3LTYuMjEtNi44NVY4LjU0YTEuMTUsMS4xNSwwLDEsMC0yLjMsMHYxMC44QzkuNTMsMjUuMDksMTMsMjguMTcsMTgsMjguMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l'@; put 'LXBhdGgtMSIgLz48cGF0aCBkPSJNMzEsMzBINWExLjExLDEuMTEsMCwwLDAsMCwyLjIxSDMxQTEuMTEsMS4xMSwwLDAsMCwzMSwzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGguQ2xyU2hhcGVBbGlnbkJvdHRvbT0oMCxjLmNsckljb25TVkcp'@; put 'KCc8cGF0aCBkPSJNMzQsMzBIMmExLDEsMCwwLDAsMCwySDM0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTYsNWExLDEsMCwwLDAtMS0xSDdBMSwxLDAsMCwwLDYsNVYyOEgxNlpNMTQsMjZIOFY2aDZaIiBj'@; put 'bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMTNhMSwxLDAsMCwwLTEtMUgyMWExLDEsMCwwLDAtMSwxVjI4SDMwWk0yOCwyNkgyMlYxNGg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksaC5D'@; put 'bHJTaGFwZUFsaWduTWlkZGxlPSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwxN0gzMFYxMWExLDEsMCwwLDAtMS0xSDIxYTEsMSwwLDAsMC0xLDF2NkgxNlY1YTEsMSwwLDAsMC0xLTFIN0ExLDEsMCwwLDAsNiw1VjE3SDJhMSwxLDAsMCwwLDAsMkg2VjMxYTEsMSwwLDAsMCwxLDFo'@; put 'OGExLDEsMCwwLDAsMS0xVjE5aDR2NmExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxOWg0YTEsMSwwLDAsMCwwLTJaTTE0LDMwSDhWNmg2Wm0xNC02SDIyVjEyaDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxoLkNsclNoYXBlQWxpZ25U'@; put 'b3A9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDRIMkExLDEsMCwwLDAsMiw2SDM0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNiwzMWExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVY4SDZa'@; put 'TTgsMTBoNlYzMEg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLDIzYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjhIMjBabTItMTNoNlYyMkgyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0'@; put 'aC0zIiAvPicpLGguQ2xyU2hhcGVMYW5ndWFnZT0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsM0gxNHY1aDJWNWgxNGMwLjYsMCwxLDAuNCwxLDF2MTFjMCwwLjYtMC40LDEtMSwxSDE3djdoLTUuM0w4LDI3LjlWMjVINWMtMC42LDAtMS0wLjQtMS0xVjEzYzAtMC42LDAuNC0xLDEt'@; put 'MWgxM3YtMkg1XG5cdFx0Yy0xLjcsMC0zLDEuMy0zLDN2MTFjMCwxLjcsMS4zLDMsMywzaDF2NS4xbDYuMy01LjFIMTl2LTdoMTFjMS43LDAsMy0xLjMsMy0zVjZDMzMsNC4zLDMxLjcsMywzMCwzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGgg'@; put 'ZD0iTTYuMiwyMi45aDIuNGwwLjYtMS42aDMuMWwwLjYsMS42aDIuNEwxMS45LDE0SDkuNUw2LjIsMjIuOXogTTEwLjcsMTYuNWwxLDMuMWgtMkwxMC43LDE2LjV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAsMTdjMS4xLDAsMi42'@; put 'LTAuMyw0LTFjMS40LDAuNywzLDEsNCwxdi0yYzAsMC0xLDAtMi4xLTAuNGMxLjItMS4yLDIuMS0zLDIuMS01LjZWOGgtM1Y2aC0ydjJoLTN2Mmg1Ljlcblx0XHRjLTAuMiwxLjgtMSwyLjktMS45LDMuNmMtMC42LTAuNS0xLjItMS4yLTEuNi0yLjFoLTIuMWMwLjQsMS4zLDEsMi4zLDEuOCwz'@; put 'LjFDMjEuMSwxNSwyMC4yLDE1LDIwLDE1VjE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBvbHlnb24gcG9pbnRzPSIxMSwxNi41IDEwLDE5LjYgMTIsMTkuNiAxMSwxNi41IFx0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x'@; put 'IiAvPjxwYXRoIGQ9Ik0zMC4zLDNoLTE2djVoNHYyaC0xM2MtMS43LDAtMywxLjMtMywzdjExYzAsMS43LDEuMywzLDMsM2gxdjUuMWw2LjMtNS4xaDYuN3YtN2gxMWMxLjcsMCwzLTEuMywzLTNWNlxuXHRcdEMzMy4zLDQuMywzMiwzLDMwLjMsM3ogTTEzLjEsMjIuOWwtMC41LTEuNkg5LjVs'@; put 'LTAuNiwxLjZINi41TDkuOCwxNGgyLjRsMy4zLDguOUwxMy4xLDIyLjl6IE0yOC4zLDE1djJjLTEuMywwLTIuNy0wLjQtMy45LTFcblx0XHRjLTEuMiwwLjYtMi42LDAuOS00LDFsLTAuMS0yYzAuNywwLDEuNC0wLjEsMi4xLTAuM2MtMC45LTAuOS0xLjUtMi0xLjgtMy4yaDIuMWMwLjMsMC45'@; put 'LDAuOSwxLjYsMS42LDIuMmMxLjEtMC45LDEuOC0yLjIsMS45LTMuN1xuXHRcdGgtNlY4aDNWNmgydjJoMy4zbDAuMSwxYzAuMSwyLjEtMC43LDQuMi0yLjIsNS43QzI3LjEsMTQuOSwyNy43LDE1LDI4LjMsMTV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicp'@; put 'LGguQ2xyU2hhcGVUZXh0Q29sb3I9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQ3LDMuODRhMS40NSwxLjQ1LDAsMCwwLTEuNC0xSDE4YTEuNDUsMS40NSwwLDAsMC0xLjQyLDFMOC40MiwyMS41NmExLjM1LDEuMzUsMCwwLDAtLjE0LjU5LDEsMSwwLDAsMCwxLDEsMS4xMSwxLjEx'@; put 'LDAsMCwwLDEuMDgtLjc3bDIuMDgtNC42NWgxMWwyLjA4LDQuNTlhMS4yNCwxLjI0LDAsMCwwLDEuMTIuODMsMS4wOCwxLjA4LDAsMCwwLDEuMDgtMS4wOCwxLjU5LDEuNTksMCwwLDAtLjE0LS41N1pNMTMuMzYsMTUuNzEsMTgsNS40OWw0LjYsMTAuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGlu'@; put 'ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI0LjA2IiB5PSIyNSIgd2lkdGg9IjI4IiBoZWlnaHQ9IjgiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxoLkNsclNoYXBlSGlnaGxpZ2h0ZXI9KDAsYy5jbHJJ'@; put 'Y29uU1ZHKSgnPHBhdGggZD0iTTE1LjgyLDI2LjA2YTEsMSwwLDAsMS0uNzEtLjI5TDguNjcsMTkuMzNhMSwxLDAsMCwxLS4yOS0uNzEsMSwxLDAsMCwxLC4yOS0uNzFMMjMsMy41NGE1LjU1LDUuNTUsMCwxLDEsNy44NSw3Ljg2TDE2LjUzLDI1Ljc3QTEsMSwwLDAsMSwxNS44MiwyNi4wNlpt'@; put 'LTUtNy40NCw1LDVMMjkuNDgsMTBhMy41NCwzLjU0LDAsMCwwLDAtNSwzLjYzLDMuNjMsMCwwLDAtNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEwLjM4LDI4LjI4QTEsMSwwLDAsMSw5LjY3LDI4TDYuNDUsMjQuNzdhMSwx'@; put 'LDAsMCwxLS4yMi0xLjA5bDIuMjItNS40NGExLDEsMCwwLDEsMS42My0uMzNsNi40NSw2LjQ0QTEsMSwwLDAsMSwxNi4yLDI2bC01LjQ0LDIuMjJBMS4zMywxLjMzLDAsMCwxLDEwLjM4LDI4LjI4Wk04LjMzLDIzLjgybDIuMjksMi4yOCwzLjQzLTEuNEw5Ljc0LDIwLjM5WiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTguOTQsMzBoLTVhMSwxLDAsMCwxLS44NC0xLjU1bDMuMjItNC45NGExLDEsMCwwLDEsMS41NS0uMTZsMy4yMSwzLjIyYTEsMSwwLDAsMSwuMDYsMS4zNUw5LjcsMjkuNjRBMSwxLDAsMCwxLDguOTQsMzBa'@; put 'TTUuNzgsMjhIOC40N0w5LDI3LjM0bC0xLjctMS43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMy4wNiIgeT0iMzEiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt'@; put 'NCIvPicpLGguQ2xyU2hhcGVPdXRkZW50PSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4wNiw5aC0yNmExLDEsMCwxLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTRo'@; put 'LTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxOWgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjloLTI2YTEsMSwwLDAsMSwwLTJo'@; put 'MjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik05LjU2LDIyLjU0YTEsMSwwLDAsMS0uNy0uM0w0LjYxLDE4bDQuMjUtNC4yNGExLDEsMCwwLDEsMS40MSwxLjQxTDcuNDQsMThsMi44MywyLjgzYTEsMSww'@; put 'LDAsMS0uNzEsMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+JyksaC5DbHJTaGFwZUluZGVudD0oMCxjLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMDYsOWgtMjZhMSwxLDAsMSwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1p'@; put 'LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTloLTE3YTEs'@; put 'MSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0'@; put 'bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI5aC0yNmExLDEsMCwwLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNNS41NiwyMi41NGExLDEsMCwwLDEtLjctMS43MUw3LjY4'@; put 'LDE4LDQuODYsMTUuMTdhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDEwLjUxLDE4LDYuMjcsMjIuMjRBMSwxLDAsMCwxLDUuNTYsMjIuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPicpLGguQ2xyU2hhcGVTdHJpa2V0aHJvdWdoPSgw'@; put 'LGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi44OCwxOS45MmgtMzBhMSwxLDAsMSwxLDAtMmgzMGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcuMjcsMTUuODZhMTIuOSwxMi45LDAsMCwxLDEuMjkt'@; put 'LjUyQTUuNjksNS42OSwwLDAsMSwxMC4zOSwxNWEzLjE4LDMuMTgsMCwwLDEsMi43NSwxLjExQTQuNDQsNC40NCwwLDAsMSwxNCwxOC44NXYuNDlhMTMuODMsMTMuODMsMCwwLDAtNC4yOS0uNzQsNi4xOSw2LjE5LDAsMCwwLTIuNTkuNTRBNSw1LDAsMCwwLDUuODEsMjBIMTUuODhWMTguODVh'@; put 'NS42Nyw1LjY3LDAsMCwwLTEuMzctNCw1LjE2LDUuMTYsMCwwLDAtNC0xLjQ5LDEwLDEwLDAsMCwwLTMuOTEuODguODcuODcsMCwwLDAtLjQ0LDEuMThBLjg0Ljg0LDAsMCwwLDcuMjcsMTUuODZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0'@; put 'aCBkPSJNMjEsMjBhNS45NCw1Ljk0LDAsMCwxLC41NC0yLjMxLDQuMzUsNC4zNSwwLDAsMSwxLjU4LTEuODMsNC4yNyw0LjI3LDAsMCwxLDQuNTksMCw0LjQ3LDQuNDcsMCwwLDEsMS41NywxLjgzQTYuMTIsNi4xMiwwLDAsMSwyOS44NSwyMGgyYTcuNzMsNy43MywwLDAsMC0uNzgtMy4xOSw2'@; put 'LDYsMCwwLDAtMi4xOC0yLjQ1LDUuNzQsNS43NCwwLDAsMC0zLjEtLjg4LDUuMzksNS4zOSwwLDAsMC0yLjguNzMsNS41NSw1LjU1LDAsMCwwLTIsMi4wNVYxMGEuODcuODcsMCwwLDAtLjg2LS44NkgyMGEuODcuODcsMCwwLDAtLjg2Ljg2VjIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTI5LjY3LDIyYTUuNjEsNS42MSwwLDAsMS0uMzYsMS4wNyw0LjQ3LDQuNDcsMCwwLDEtMS41NywxLjg1LDQuMzIsNC4zMiwwLDAsMS00LjU5LDAsNC4zNSw0LjM1LDAsMCwxLTEuNTgtMS44NUE1LjY0LDUuNjQsMCwwLDEsMjEuMiwy'@; put 'MkgxOS4wOXY0LjEzQS44Ny44NywwLDAsMCwyMCwyN2guMmEuODcuODcsMCwwLDAsLjg2LS44NlYyNC41MWE1LjU4LDUuNTgsMCwwLDAsMiwyLjA2LDUuNDgsNS40OCwwLDAsMCwyLjguNzIsNS42Niw1LjY2LDAsMCwwLDMuMS0uODhBNS44OCw1Ljg4LDAsMCwwLDMxLjA5LDI0LDcuMDksNy4w'@; put 'OSwwLDAsMCwzMS43MywyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xNCwyMnYuNzZhMy4zNCwzLjM0LDAsMCwxLTEuNjIsMiw1LjM0LDUuMzQsMCwwLDEtMi42OS43MiwzLjc4LDMuNzgsMCwwLDEtMi4zNi0uNywyLjI0LDIu'@; put 'MjQsMCwwLDEtLjk0LTEuOSwyLjI5LDIuMjksMCwwLDEsLjItLjkxSDQuNjJhNCw0LDAsMCwwLS4xMywxLDMuODMsMy44MywwLDAsMCwxLjM1LDMuMDZBNS4xNSw1LjE1LDAsMCwwLDkuMzEsMjcuMiw2LDYsMCwwLDAsMTIsMjYuNTdhNC42Miw0LjYyLDAsMCwwLDItMS43NFYyNmEuODYuODYs'@; put 'MCwwLDAsLjg2Ljg2SDE1YS44Ni44NiwwLDAsMCwuODYtLjg2VjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxoLkNsclNoYXBlU3Vic2NyaXB0PSgwLGMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC41NSwxOGw2LjgsOC42YTEuMTcsMS4xNyww'@; put 'LDAsMS0uOTIsMS45aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0uNDRMMTMsMTkuOTEsNi42LDI4YTEuMTcsMS4xNywwLDAsMS0uOTIuNDRoMGExLjE3LDEuMTcsMCwwLDEtLjkyLTEuOUwxMS41NSwxOGwtNi44LTguNmExLjE3LDEuMTcsMCwwLDEsLjkyLTEuOWgwQTEuMTcsMS4xNywwLDAsMSw2'@; put 'LjYzLDhsNi40NCw4LjEzTDE5LjUsOGExLjE3LDEuMTcsMCwwLDEsLjkyLS40NGgwYTEuMTcsMS4xNywwLDAsMSwuOTIsMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIzLDMxLjgsMjcuNDksMjhhOS45LDkuOSwwLDAsMCwx'@; put 'Ljg4LTIuMDVBMy40NCwzLjQ0LDAsMCwwLDMwLDI0YTIuMzUsMi4zNSwwLDAsMC0uMzUtMS4yNywyLjQ0LDIuNDQsMCwwLDAtMS0uODQsMi45LDIuOSwwLDAsMC0xLjI2LS4yOCwzLjM2LDMuMzYsMCwwLDAtMS44My41LDUuNjQsNS42NCwwLDAsMC0xLjQ4LDEuNDJsLTEtLjgxYTUuMTEsNS4x'@; put 'MSwwLDAsMSw0LjM2LTIuMzcsNC4zNSw0LjM1LDAsMCwxLDIsLjQ1LDMuNDMsMy40MywwLDAsMSwyLDMuMTgsNC40NSw0LjQ1LDAsMCwxLS42OCwyLjM1LDEwLjksMTAuOSwwLDAsMS0yLjI0LDIuNDZsLTMuMjQsMi44MUgzMS41VjMzSDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTIiLz4nKSxoLkNsclNoYXBlU3VwZXJzY3JpcHQ9KDAsYy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjQzLDE4bDYuNzksOC42YTEuMTcsMS4xNywwLDAsMS0uOTIsMS45aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0uNDRsLTYuNDQtOC4xM0w2LjQ3LDI4YTEuMTcsMS4x'@; put 'NywwLDAsMS0uOTIuNDRoMGExLjE3LDEuMTcsMCwwLDEtLjkyLTEuOUwxMS40MywxOGwtNi44LTguNmExLjE3LDEuMTcsMCwwLDEsLjkyLTEuOWgwQTEuMiwxLjIsMCwwLDEsNi41MSw4bDYuNDMsOC4xM0wxOS4zOCw4YTEuMTcsMS4xNywwLDAsMSwuOTItLjQ0aDBhMS4xNywxLjE3LDAsMCwx'@; put 'LC45MiwxLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjIuODUsMTQuNDdsNC41MS0zLjg1YTkuMzcsOS4zNywwLDAsMCwxLjg4LTIsMy40MywzLjQzLDAsMCwwLC41OS0xLjg2LDIuMjcsMi4yNywwLDAsMC0uMzYtMS4yNywy'@; put 'LjM4LDIuMzgsMCwwLDAtLjk1LS44MywyLjc3LDIuNzcsMCwwLDAtMS4yNi0uMjksMy4zOSwzLjM5LDAsMCwwLTEuODMuNSw1LjgzLDUuODMsMCwwLDAtMS40OSwxLjQybC0xLS44MWE1LjEyLDUuMTIsMCwwLDEsNC4zNi0yLjM3LDQuMzYsNC4zNiwwLDAsMSwyLC40NSwzLjQ3LDMuNDcsMCww'@; put 'LDEsMiwzLjE4QTQuNDQsNC40NCwwLDAsMSwzMC41OCw5YTExLjE0LDExLjE0LDAsMCwxLTIuMjQsMi40NkwyNS4xLDE0LjMxaDYuMjh2MS4zM0gyMi44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksaC5UZXh0RWRpdFNoYXBlcz17Ym9sZDpoLkNs'@; put 'clNoYXBlQm9sZCwiYnVsbGV0LWxpc3QiOmguQ2xyU2hhcGVCdWxsZXRMaXN0LCJjaGVja2JveC1saXN0IjpoLkNsclNoYXBlQ2hlY2tib3hMaXN0LCJudW1iZXItbGlzdCI6aC5DbHJTaGFwZU51bWJlckxpc3QsImZvbnQtc2l6ZSI6aC5DbHJTaGFwZUZvbnRTaXplLGl0YWxpYzpoLkNsclNo'@; put 'YXBlSXRhbGljLCJqdXN0aWZ5LXRleHQiOmguQ2xyU2hhcGVKdXN0aWZ5VGV4dCwiY2VudGVyLXRleHQiOmguQ2xyU2hhcGVDZW50ZXJUZXh0LCJhbGlnbi1sZWZ0LXRleHQiOmguQ2xyU2hhcGVBbGlnbkxlZnRUZXh0LCJhbGlnbi1yaWdodC10ZXh0IjpoLkNsclNoYXBlQWxpZ25SaWdodFRl'@; put 'eHQsInBhaW50LXJvbGxlciI6aC5DbHJTaGFwZVBhaW50Um9sbGVyLCJibG9jay1xdW90ZSI6aC5DbHJTaGFwZUJsb2NrUXVvdGUsdGV4dDpoLkNsclNoYXBlVGV4dCx1bmRlcmxpbmU6aC5DbHJTaGFwZVVuZGVybGluZSwiYWxpZ24tY2VudGVyIjpoLkNsclNoYXBlQWxpZ25DZW50ZXIsImFs'@; put 'aWduLWxlZnQiOmguQ2xyU2hhcGVBbGlnbkxlZnQsImFsaWduLXJpZ2h0IjpoLkNsclNoYXBlQWxpZ25SaWdodCwiYWxpZ24tYm90dG9tIjpoLkNsclNoYXBlQWxpZ25Cb3R0b20sImFsaWduLW1pZGRsZSI6aC5DbHJTaGFwZUFsaWduTWlkZGxlLCJhbGlnbi10b3AiOmguQ2xyU2hhcGVBbGln'@; put 'blRvcCxsYW5ndWFnZTpoLkNsclNoYXBlTGFuZ3VhZ2UsInRleHQtY29sb3IiOmguQ2xyU2hhcGVUZXh0Q29sb3IsaGlnaGxpZ2h0ZXI6aC5DbHJTaGFwZUhpZ2hsaWdodGVyLGluZGVudDpoLkNsclNoYXBlSW5kZW50LG91dGRlbnQ6aC5DbHJTaGFwZU91dGRlbnQsc3RyaWtldGhyb3VnaDpo'@; put 'LkNsclNoYXBlU3RyaWtldGhyb3VnaCxzdWJzY3JpcHQ6aC5DbHJTaGFwZVN1YnNjcmlwdCxzdXBlcnNjcmlwdDpoLkNsclNoYXBlU3VwZXJzY3JpcHR9LHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25z'@; put 'LmFkZChoLlRleHRFZGl0U2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90cmF2ZWwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2lj'@; put 'b25zL3NyYy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyAqKiohCiAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oaixoLHkpeyJ1c2Ugc3RyaWN0'@; put 'IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksaC5UcmF2ZWxTaGFwZXM9aC5DbHJTaGFwZU9uSG9saWRheT1oLkNsclNoYXBlVHJhaWxlcj1oLkNsclNoYXBlRmVycnk9aC5DbHJTaGFwZUNhcmF2YW49aC5DbHJTaGFwZUNhbXBlcnZhbj1oLkNsclNo'@; put 'YXBlQm9hdD1oLkNsclNoYXBlQmljeWNsZT1oLkNsclNoYXBlTWFwTWFya2VyPWguQ2xyU2hhcGVDb21wYXNzPWguQ2xyU2hhcGVNYXA9aC5DbHJTaGFwZUNhcj1oLkNsclNoYXBlQWlycGxhbmU9aC5DbHJTaGFwZVRydWNrPXZvaWQgMDt2YXIgYz15KAovKiEgLi4vdXRpbHMvZGVzY3JpcHRv'@; put 'ci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIikscz15KAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7aC5DbHJTaGFwZVRy'@; put 'dWNrPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYxOS43YTYuNDUsNi40NSwwLDAsMSwxLjU2'@; put 'LS4yYy4xNSwwLC4yOSwwLC40NCwwVjE0aDRhMiwyLDAsMCwxLDIsMnYxSDI4djJoNHY1SDI5LjZhNC41NCw0LjU0LDAsMCwwLTguMzQsMEgxNC40M2E0LjUsNC41LDAsMCwwLTQuMTctMi43NkE0LjM4LDQuMzgsMCwxLDAsMTQuNzIsMjZIMjFhNC40OSw0LjQ5LDAsMCwwLDguOTIsMEgzM2Ex'@; put 'LDEsMCwwLDAsMS0xVjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4zOCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgsMCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDMsMjhaIi8+XG4gICAgICAgICAgICA8'@; put 'cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYyMS40OUE0LjQ1LDQuNDUsMCwwLDAsMjEuMjUsMjRIMTQuNDNhNC41LDQuNSwwLDAsMC00'@; put 'LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDgsNC40OCwwLDAsMCw4LjkxLDBIMzRWMTZBNCw0LDAsMCwwLDMwLDEyWk0xMC4yNiwyOGEyLjM4LDIuMzgsMCwxLDEsMC00Ljc1LDIuMzgsMi4zOCwwLDEsMSwwLDQuNzVabTE1LjE3LDBhMi4zOCwyLjM4LDAsMSwxLDIu'@; put 'NS0yLjM3QTIuNDQsMi40NCwwLDAsMSwyNS40MiwyOFpNMzIsMTdIMjZWMTRoNGEyLDIsMCwwLDEsMiwyWiIvPicpLGguQ2xyU2hhcGVBaXJwbGFuZT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1Ljc3LDgu'@; put 'MTZhMi40MywyLjQzLDAsMCwwLTEuOS0yTDI4LDQuODdhNC41LDQuNSwwLDAsMC0zLjY1Ljc5TDcsMTguMywyLjE0LDE4LjFBMS44NiwxLjg2LDAsMCwwLC45MSwyMS40MWw1LDMuOTNjLjYuNzMsMSwuNTksMTAuOTMtNC44MmwuOTMsOS40MmExLjM2LDEuMzYsMCwwLDAsLjg1LDEuMTgsMS40'@; put 'MywxLjQzLDAsMCwwLC41NC4xLDEuNTQsMS41NCwwLDAsMCwxLS40MWwyLjM5LTIuMThhMS41MiwxLjUyLDAsMCwwLC40Ni0uODNMMjUuMiwxNS45YzMuNTctMiw2Ljk1LTMuODgsOS4zNi01LjI1QTIuNDMsMi40MywwLDAsMCwzNS43Nyw4LjE2Wm0tMi4yLjc1Yy0yLjUsMS40Mi02LDMuNDEt'@; put 'OS43Niw1LjQ3bC0uNDEuMjNMMjEuMDcsMjcuMjhsLTEuNDcsMS4zNEwxOC41LDE3LjMyLDE3LjE3LDE4QzEwLDIyLDcuNjEsMjMuMTYsNi43OSwyMy41MmwtNC4zLTMuNDEsNS4wOC4yMiwxOC0xMy4wNmEyLjUxLDIuNTEsMCwwLDEsMi0uNDVsNS44NSwxLjI2YS40My40MywwLDAsMSwuMzUu'@; put 'MzdBLjQyLjQyLDAsMCwxLDMzLjU3LDguOTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTcsMTIuNTRsMy41NiwxLDEuNjQtMS4xOS00LTEuMTZMMTAsMTAuMDlsNS40Ny0uMTYsMi4zLTEuNjdMMTAsOC41YTEu'@; put 'MjUsMS4yNSwwLDAsMC0uNy4xN0w2LjY3LDEwLjJBMS4yOCwxLjI4LDAsMCwwLDcsMTIuNTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNi4yNSwxMS41LDEyLDEzLjE2bDYuMzItNC41OS05LjA3LjI2QS41Mi41Miww'@; put 'LDAsMCw5LDguOTFMNi4xMywxMC41NkEuNTEuNTEsMCwwLDAsNi4yNSwxMS41WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTM0LjUyLDYuMzYsMjguMjIsNWEzLjc4LDMuNzgsMCwwLDAtMy4wNy42N0w2LjEyLDE5LjVs'@; put 'LTQuNTctLjJhMS4yNSwxLjI1LDAsMCwwLS44MywyLjIybDQuNDUsMy41M2EuNTUuNTUsMCwwLDAsLjUzLjA5YzEuMjctLjQ5LDYtMywxMS41OS02LjA3bDEuMTIsMTEuNTFhLjU1LjU1LDAsMCwwLC45LjM3bDIuNS0yLjA4YS43Ni43NiwwLDAsMCwuMjYtLjQ1bDIuMzctMTMuMjljNC0yLjIy'@; put 'LDcuODItNC4zNywxMC41MS01Ljg5QTEuNTUsMS41NSwwLDAsMCwzNC41Miw2LjM2WiIvPicpLGguQ2xyU2hhcGVDYXI9KDAscy5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjMiIGhlaWdo'@; put 'dD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYuNDUsMTQuMTdBMjIuMSwyMi4xLDAsMCwwLDE5LjM4LDdhOS42NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ3'@; put 'LS4xNC45Mi0uMiwxLjM2QTQsNCwwLDAsMCwyLDE4djYuMTNhMiwyLDAsMCwwLDIsMlYyMEg0VjE4YTIsMiwwLDAsMSwyLTJIMjQuNzNBNy4yOCw3LjI4LDAsMCwxLDMyLDIzLjI3VjI0aC0yYTQuNTMsNC41MywwLDEsMCwuMzMsMkgzMmEyLDIsMCwwLDAsMi0ydi0uNzNBOS4yOCw5LjI4LDAs'@; put 'MCwwLDI2LjQ1LDE0LjE3Wk0xMSwxNEg2LjkzYzAtLjMxLjA5LS42My4xNS0xQTYuNTIsNi41MiwwLDAsMSwxMSw4aDBabTIsMFY3LjU4YTguMTcsOC4xNywwLDAsMSw1LjM2LDEuMTZBMTksMTksMCwwLDEsMjMuOSwxNFpNMjUuOCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIu'@; put 'NSwwLDAsMSwyNS44LDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQuMTcsMjRhNC41Myw0LjUzLDAsMSwwLC4zMywyaDUuM2MwLS4wOCwwLS4xNywwLS4yNUE2LDYsMCwwLDEsMjAsMjRaTTEw'@; put 'LDI4LjM4YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi44NywxNC4yOEEyMi4zNiwyMi4zNiwwLDAsMCwxOS42NSw2LjlhOS42'@; put 'NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ5LS4xNSwxLS4yMSwxLjRoLTFBMi41OSwyLjU5LDAsMCwwLDIsMTYuNTl2OC41NWEuODYuODYsMCwwLDAsLjg2Ljg2SDQuNTljMC0uMTMsMC0uMjYsMC0uMzlhNS43Nyw1Ljc3LDAsMCwxLDcuNzEtNS40NWwt'@; put 'MSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDE0LjgyLDI2aDUuNDhjMC0uMTMsMC0uMjYsMC0uMzlBNS43Nyw1Ljc3LDAsMCwxLDI4LDIwLjE2bC0xLDFhNC41Niw0LjU2LDAsMCwwLTQuMzQsMS41OCwzLDMsMCwwLDAtLjYzLjkz'@; put 'QTQuNSw0LjUsMCwxLDAsMzAuNTMsMjZoMi42MWEuODYuODYsMCwwLDAsLjg2LS44NlYyMy4zNkE5LjM5LDkuMzksMCwwLDAsMjYuODcsMTQuMjhaTTEyLDE0SDhjMC0uMzUuMS0uNzEuMTYtMS4wN2E2LjUyLDYuNTIsMCwwLDEsMy44Ny01aDBaTTEwLjM2LDI4LjM2YTIuNSwyLjUsMCwxLDEs'@; put 'Mi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLjM2LDI4LjM2Wk0xOSwxOUgxNlYxN2gzWm0tNi01VjcuNDdhOC4xNiw4LjE2LDAsMCwxLDUuNCwxLjE1QTE5LjE1LDE5LjE1LDAsMCwxLDI0LDE0Wk0yNi4wNiwyOC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNi4wNiwy'@; put 'OC4zNloiLz4nKSxoLkNsclNoYXBlTWFwPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNTksNi4xOUExLDEsMCwwLDAsMzIuNyw2TDIzLjA5LDksMTMuNDYsNC4xMWExLDEsMCwwLDAtLjg0LDBMMi42Miw4'@; put 'LjJBMSwxLDAsMCwwLDIsOS4xM1YyOS42MWExLDEsMCwwLDAsMS4zOC45MkwxMywyNi41OGw5LjU5LDQuOTJhMSwxLDAsMCwwLC40Ni4xMSwxLDEsMCwwLDAsLjMsMGwxMC0zLjEyYTEsMSwwLDAsMCwuNy0xVjdBMSwxLDAsMCwwLDMzLjU5LDYuMTlaTTMyLDI2Ljc1bC04LjMyLDIuNlYyNy4w'@; put 'NmgtMS42djJsLTguNC00LjMxVjIzLjA2aC0xLjZ2MS43Mkw0LDI4LjExVjkuNzlsOC4wOC0zLjMzVjguODFoMS42VjYuNDdsOC40LDQuM3YyLjFoMS42VjExTDMyLDguMzZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo'@; put 'LTIiIHg9IjIyLjA4IiB5PSIxNS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjIyLjA4IiB5PSIyMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+'@; put 'XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjA4IiB5PSIxMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt'@; put 'b3V0bGluZS1wYXRoLTUiIHg9IjEyLjA4IiB5PSIxNy4xMyIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjc1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLjMxLDcuMzUsMjUsOS45NFYxNEgyM1YxMC4yOUwxNCw1'@; put 'LjY4VjlIMTJWNS4yN2wtOS42Nyw0QS41My41MywwLDAsMCwyLDkuNzVWMzAuNDVhLjUzLjUzLDAsMCwwLC43NC40OUwxMiwyNy4xMlYyM2gydjQuNTNsOSw0LjYxVjI4aDJ2My43OWw4LjYzLTIuN2EuNTMuNTMsMCwwLDAsLjM3LS41MVY3Ljg2QS41My41MywwLDAsMCwzMy4zMSw3LjM1Wk0x'@; put 'NCwyMUgxMlYxN2gyWm0wLTZIMTJWMTFoMlpNMjUsMjZIMjNWMjJoMlptMC02SDIzVjE2aDJaIi8+JyksaC5DbHJTaGFwZUNvbXBhc3M9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjgyLDE1LjMxaDBMMTAuNDYsOWMtLjQ2LS4yNi0xLjExLjM3LS44Ni44NGw2LjE1LDEwLjU2LDEw'@; put 'LjU2LDYuMTVhLjY2LjY2LDAsMCwwLC44NC0uODZabS00LDQsMy0zLDQuNTUsNy40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMSwy'@; put 'OS45NVYyOS41M0gxN3YyLjQyQTE0LDE0LDAsMCwxLDQuMDUsMTlINi40N1YxN0g0LjA1QTE0LDE0LDAsMCwxLDE3LDQuMDVWNi40N2gyVjQuMDVBMTQsMTQsMCwwLDEsMzEuOTUsMTdIMjkuNTN2MmgyLjQyQTE0LDE0LDAsMCwxLDE5LDMxLjk1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy'@; put 'LWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk02LjQ3LDE5SDQuMDVjMC0uMzMtLjA1LS42Ni0uMDUtMXMwLS42Ny4wNS0xSDYuNDdaTTE3LDQuMDVjLjMzLDAsLjY2LS4wNSwxLS4wNXMu'@; put 'NjcsMCwxLC4wNVY2LjQ3SDE3Wm0yLDI3LjljLS4zMywwLS42Ni4wNS0xLC4wNXMtLjY3LDAtMS0uMDVWMjkuNTNoMlptOC01LjU4YS41OS41OSwwLDAsMS0uNjkuMTZMMTUuNzUsMjAuMzgsOS42LDkuODJjLS4yNS0uNDcuMzktMS4xLjg2LS44NGwxMC4zNyw2LjMzaDBsNi4zMywxMC4zN0Eu'@; put 'NTkuNTksMCwwLDEsMjcsMjYuMzdaTTI5LjUzLDE5VjE3aDIuNDJjMCwuMzMuMDUuNjYuMDUsMXMwLC42Ny0uMDUsMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE2Ljc3IDE5LjM1IDI0LjM1IDIzLjc3'@; put 'IDE5LjggMTYuMzMgMTYuNzcgMTkuMzUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZU1hcE1hcmtlcj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDYu'@; put 'NzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEsMSwzLjczLTMuNzNBMy43MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p'@; put 'LW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExMS43OSwxMS43OSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45'@; put 'MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQTExLjc5LDExLjc5LDAsMCwwLDE4LDJaTTIzLjU5LDI0bC0uMzYuNTNjLTEuNzIsMi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMWE5'@; put 'Ljc4LDkuNzgsMCwxLDEsMTkuNTYsMEMyNy43OCwxNy43OSwyNS4zNiwyMS40LDIzLjU5LDI0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAs'@; put 'MSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEsMSwzLjczLTMuNzNBMy43MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTItLWJhZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5YTcuNDksNy40OSwwLDAsMS0yLS4zM2MwLC4xOSwwLC4zOCwwLC41NywwLDQuMDYtMi40Miw3LjY3LTQuMTksMTAuMzFsLS4zNi41M2MtMS43MiwyLjU4LTQsNS40Ny01LjIzLDYuOS0xLjE4LTEuNDMtMy41MS00LjMyLTUuMjMtNi45'@; put 'TDEyLjQyLDI0Yy0xLjc3LTIuNjQtNC4yLTYuMjUtNC4yLTEwLjMxQTkuNzcsOS43NywwLDAsMSwyMi41Niw1LjA5YTcuNDUsNy40NSwwLDAsMSwuNTItMkExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEs'@; put 'MCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTEuNzksMTEu'@; put 'NzksMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwx'@; put 'MS43OSwwLDAsMCwxOCwyWm0wLDE3YTYuNTYsNi41NiwwLDEsMSw2LjU2LTYuNTZBNi41Niw2LjU2LDAsMCwxLDE4LDE5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMTIuNDQiIHI9IjMuNzMi'@; put 'Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5QTcuNDcsNy40NywwLDAsMSwyNC4zOCwxMWE2LjU4LDYuNTgsMCwxLDEtMS42MS0zLDcuNDIsNy40MiwwLDAsMSwuMzEt'@; put 'NC44NEExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUz'@; put 'LTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAg'@; put 'ICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGguQ2xyU2hhcGVCaWN5Y2xlPSgwLHMuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LjUsMjkuNjVB'@; put 'Ni41MSw2LjUxLDAsMCwxLDIsMjMuMTVhNi4zOSw2LjM5LDAsMCwxLDYuNS02LjM2QTYuMzksNi4zOSwwLDAsMSwxNSwyMy4xNSw2LjUxLDYuNTEsMCwwLDEsOC41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsOC41LDE4LjY1WiIgY2xhc3M9ImNs'@; put 'ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI3LjUsMjkuNjVhNi41MSw2LjUxLDAsMCwxLTYuNS02LjUsNi41LDYuNSwwLDAsMSwxMywwQTYuNTEsNi41MSwwLDAsMSwyNy41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEs'@; put 'MCwwLDAsMjcuNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOSwyNC42Nkg4YTEsMSwwLDAsMS0uODktMS40NWw1LTEwLDEuNzguOUw5LjYyLDIyLjczSDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu'@; put 'ZS1wYXRoLTMiIC8+PHJlY3QgeD0iMTMiIHk9IjEyLjY4IiB3aWR0aD0iMTEiIGhlaWdodD0iMS45MSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI4LDI0LjY2YTEsMSwwLDAsMS0uOTQtLjY2TDIyLjI5LDEwLjY2SDIwYTEsMSwwLDAs'@; put 'MS0xLTEsMSwxLDAsMCwxLDEtLjkzaDNhLjk0Ljk0LDAsMCwxLC45NC42bDUsMTRhMSwxLDAsMCwxLS42LDEuMjdBMSwxLDAsMCwxLDI4LDI0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTEzLDE0LjY2YTEsMSwwLDAsMS0uNzEt'@; put 'LjI5bC0xLjctMS43MUg4YTEsMSwwLDAsMS0xLTEsLjk0Ljk0LDAsMCwxLDEtMWgzYTEuMDgsMS4wOCwwLDAsMSwuNzUuMjdsMiwyYTEsMSwwLDAsMSwwLDEuNDFBMSwxLDAsMCwxLDEzLDE0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGgg'@; put 'ZD0iTTE1LDIxLjljLTAuMi0yLTEuMi0zLjgtMi45LTQuOWwtMi41LDQuOUgxNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTcuMiwyMy40Yy0wLjItMC4zLTAuMi0wLjcsMC0xbDMuMi02LjNjLTAuNi0wLjItMS4yLTAuMi0xLjgtMC4yQzUs'@; put 'MTUuOSwyLDE4LjgsMiwyMi40YzAsMy42LDIuOSw2LjUsNi41LDYuNVxuXHRjMywwLDUuNi0yLjEsNi4zLTVIOEM3LjcsMjMuOSw3LjMsMjMuNyw3LjIsMjMuNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LDIxLjloLTRjMCwwLjIsMCww'@; put 'LjMsMCwwLjVjMCwwLjUtMC4xLDEtMC4yLDEuNUgxOVYyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNSwxNS45Yy0wLjMsMC0wLjYsMC0wLjksMC4xbDIuNCw2LjZjMC4yLDAuNS0wLjEsMS4xLTAuNiwxLjNjLTAuMSwwLTAuMiww'@; put 'LjEtMC4zLDAuMWMtMC40LDAtMC44LTAuMy0wLjktMC43bC0yLjQtNi43XG5cdGMtMy4yLDEuNi00LjUsNS41LTMsOC43YzEuNiwzLjIsNS41LDQuNSw4LjcsM2MzLjItMS42LDQuNS01LjUsMy04LjdDMzIuMiwxNy4zLDMwLDE1LjksMjcuNSwxNS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs'@; put 'ci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMjQuNywxNi43YzAuNi0wLjMsMS4zLTAuNSwxLjktMC42bC0yLjctNy40QzIzLjgsOC4yLDIzLjQsOCwyMyw3LjloLTNjLTAuNiwwLTEsMC41LTEsMS4xYzAsMC41LDAuNCwwLjksMSwwLjlcblx0YzAsMCwwLDAsMCwwaDIuM2wwLjcsMmgt'@; put 'OS42bC0xLjctMS43QzExLjUsMTAuMSwxMS4zLDEwLDExLDEwSDhjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMi42bDEuMiwxLjJsLTEuNSwzXG5cdGMwLjYsMC4yLDEuMywwLjUsMS44LDAuOGwxLjYtMy4yaDEwTDI0LjcsMTYuN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp'@; put 'ZC1wYXRoLTUiIC8+JyksaC5DbHJTaGFwZUJvYXQ9KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjEsMjcuMUMyOCwyNywyNi45LDI3LjQsMjYsMjguMmMtMS4xLDEuMS0yLjksMS4xLTQuMSwwYy0xLTAuNy0yLjEtMS4xLTMuMy0xLjFjLTEuMi0wLjEtMi40LDAuMy0zLjMsMS4xXG5c'@; put 'dFx0QzE0LjcsMjguNywxNCwyOSwxMy4yLDI5cy0xLjUtMC4zLTIuMS0wLjhjLTEtMC44LTIuMi0xLjItMy40LTEuMnMtMi40LDAuNC0zLjQsMS4yQzMuNywyOC43LDIuOCwyOSwyLDI5djJcblx0XHRjMS4zLDAuMSwyLjYtMC4zLDMuNi0xLjJDNi4yLDI5LjMsNy4xLDI5LDcuOSwyOWMwLjcs'@; put 'MCwxLjUsMC4zLDIuMSwwLjhjMS44LDEuNiw0LjYsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44XG5cdFx0YzAuNywwLDEuNCwwLjMsMiwwLjhjMS45LDEuNiw0LjYsMS42LDYuNSwwYzAuNS0wLjUsMS4zLTAuOCwyLTAuOGMwLjcsMCwxLjQsMC4zLDEuOSwwLjhjMC45LDAuNywx'@; put 'LjksMS4xLDMsMS4ydi0yXG5cdFx0Yy0xLDAtMS4yLTAuNC0xLjctMC44QzMxLjQsMjcuNSwzMC4zLDI3LjEsMjkuMSwyNy4xeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYsMjNjMC0wLjYsMC41LTEsMS4xLTFIMzJsLTMuNSwzLjFo'@; put 'MC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC43LTAuOCwwLjYtMi4xLTAuMi0yLjhcblx0XHRDMzMsMjAuMiwzMi42LDIwLDMyLjEsMjBoLTI1Yy0xLjcsMC0zLDEuMy0zLDN2My4yYzAuNS0wLjUsMS4yLTAuOCwxLjktMS4xVjIzeiIgY2xhc3M9ImNsci1pLW91'@; put 'dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTguOSwxOUgxNXYtNy44YzAtMC42LTAuMy0xLjItMC44LTEuNkMxMy4zLDguOSwxMiw5LjEsMTEuNCwxMGwtNC4xLDUuOWMtMC40LDAuNi0wLjQsMS40LTAuMSwyLjFDNy41LDE4LjYsOC4yLDE5LDguOSwxOVxuXHRcdHog'@; put 'TTEzLjEsMTEuMkwxMywxN0g4LjlMMTMuMSwxMS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI2LDE4YzAuNC0wLjYsMC40LTEuNCwwLTJMMTkuNyw1LjZjLTAuNC0wLjYtMS0xLTEuNy0xYy0xLjEsMC0yLDAuOS0yLDJWMTloOC4z'@; put 'QzI1LDE5LDI1LjcsMTguNiwyNiwxOHogTTE3LjksNi42XG5cdFx0bDYuNCwxMC41aC02LjRWNi42eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTM0LDMxYy0xLjEtMC4xLTIuMS0wLjUtMy0xLjJjLTAuNS0wLjUtMS4yLTAuOC0yLTAu'@; put 'OGMtMC43LDAtMS41LDAuMy0yLDAuOGMtMC45LDAuOC0yLDEuMS0zLjEsMS4xYy0xLjIsMC0yLjQtMC40LTMuMy0xLjFcblx0Yy0xLjItMS4xLTMtMS4xLTQuMSwwYy0wLjksMC44LTIuMSwxLjItMy40LDEuMmMtMS4yLDAtMi4zLTAuNC0zLjItMS4yYy0wLjYtMC41LTEuMy0wLjgtMi0wLjhj'@; put 'LTAuOCwwLTEuNywwLjMtMi4zLDAuOFxuXHRjLTEsMC44LTIuMywxLjItMy41LDEuMVYyOWMwLjgsMCwxLjctMC4zLDIuMy0wLjljMS0wLjgsMi4yLTEuMiwzLjQtMS4xYzEuMiwwLDIuNCwwLjQsMy4zLDEuMmMxLjIsMS4xLDMsMS4xLDQuMiwwXG5cdGMxLjktMS42LDQuNy0xLjYsNi41LDBj'@; put 'MS4yLDEuMSwzLDEuMSw0LjEsMGMwLjktMC44LDIuMS0xLjIsMy4zLTEuMmMxLjEsMCwyLjIsMC40LDMsMS4yQzMyLjgsMjguNywzMywyOSwzNCwyOUwzNCwzMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMSwyNi4yYzAuNi0wLjUsMS4y'@; put 'LTAuOCwxLjktMVYyM2MwLTAuNiwwLjQtMS4xLDEtMS4xaDI1TDI4LjQsMjVoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJcblx0YzAuNy0wLjksMC41LTIuMS0wLjQtMi44QzMyLjksMjAuMSwzMi40LDIwLDMyLDIwSDdjLTEuNywwLTMsMS4zLTMsM0w0LjEsMjYu'@; put 'Mkw0LjEsMjYuMnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE0LjksMTguOUg4LjljLTEuMSwwLTItMC45LTItMmMwLTAuNCwwLjEtMC44LDAuNC0xLjJsNC4xLTUuOGMwLjYtMC45LDEuOS0xLjEsMi44LTAuNWMwLjUsMC40LDAuOCwxLDAu'@; put 'OCwxLjZWMTguOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LjMsMTguOUgxNlY2LjRjMC0xLjEsMC45LTIsMi0yYzAuNywwLDEuMywwLjQsMS43LDFMMjYsMTUuOGMwLjYsMSwwLjIsMi4yLTAuNywyLjdDMjUsMTguNywyNC42LDE4Ljgs'@; put 'MjQuMywxOC45XG5cdEwyNC4zLDE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGguQ2xyU2hhcGVDYW1wZXJ2YW49KDAscy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTkuNSwyNEM5LjUsMjQsOS41LDI0LDkuNSwyNEM3LjYsMjQsNiwyNS42LDYsMjcu'@; put 'NWMwLDAsMCwwLDAsMEM2LDI5LjQsNy42LDMxLDkuNSwzMWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMTEuNCwyNCw5LjUsMjR6IE05LjUsMjlDOC43LDI5LDgsMjguMyw4LDI3LjVTOC43LDI2LDkuNSwyNnMxLjUsMC43LDEuNSwxLjVTMTAuMywyOSw5LjUsMjl6IiBjbGFzcz0iY2xy'@; put 'LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjMuNSwyNEMyMy41LDI0LDIzLjUsMjQsMjMuNSwyNGMtMS45LDAtMy41LDEuNi0zLjUsMy41YzAsMCwwLDAsMCwwYzAsMS45LDEuNSwzLjUsMy41LDMuNWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMjUu'@; put 'NCwyNCwyMy41LDI0eiBNMjMuNSwyOWMtMC44LDAtMS41LTAuNy0xLjUtMS41czAuNy0xLjUsMS41LTEuNXMxLjUsMC43LDEuNSwxLjVTMjQuMywyOSwyMy41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMzLDIwLjFWMjBoLTAu'@; put 'MWwtMy41LTUuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjNWOS43QzMyLDcuMSwyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywxLjItNC40LDNINWMtMS43LDAtMywxLjMtMywzXG5cdFx0djE3aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlMMTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43'@; put 'LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjR2OWg3Ljhcblx0XHRsMC4yLDAuM1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDMzLDIwLjF6IE0yNiwyMHYtNWgxLjVsMy4xLDVIMjZ6IiBjbGFzcz0i'@; put 'Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cmVjdCB4PSIxOSIgeT0iOSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCwyMiAyMiwyMiAyMiwxMyAxNSwxMyAx'@; put 'NSwyOCAxNywyOCAxNywxNSAyMCwxNSBcdCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTYsMjBoN3YtN0g2VjIweiBNOCwxNWgzdjNIOFYxNXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRo'@; put 'IGQ9Ik05LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVTNy42LDMxLDkuNSwzMWMwLDAsMCwwLDAsMGMxLjksMCwzLjUtMS42LDMuNS0zLjVjMCwwLDAtMC4xLDAtMC4xQzEzLDI1LjUsMTEuNCwyNCw5LjUsMjR6IlxuXHRcdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x'@; put 'IiAvPjxjaXJjbGUgY3g9IjIzLjUiIGN5PSIyNy41IiByPSIzLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI5LjUsMTQuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjJWOS43YzAsMCwwLDAsMC0wLjFDMzIsNywyOS45LDUsMjcuMyw1aC04LjVj'@; put 'LTEuOSwwLTMuNywxLjItNC40LDNINWMtMS43LDAtMywxLjMtMywzdjE3XG5cdFx0aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlMMTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjdoLTN2OWg3'@; put 'Ljhcblx0XHRsMC4yLDAuM1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDI5LjUsMTQuNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHJlY3QgeD0iMTkiIHk9IjkiIHdpZHRoPSI3LjkiIGhlaWdodD0iMiIgY2xhc3M9'@; put 'ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwLDIyIDIxLjksMjIgMjEuOSwxMyAxNSwxMyAxNSwyOCAxNi45LDI4IDE2LjksMTUgMjAsMTUgXHQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHJlY3QgeD0iNiIg'@; put 'eT0iMTMiIHdpZHRoPSI2LjkiIGhlaWdodD0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxoLkNsclNoYXBlQ2FyYXZhbj0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTMuNSwyMUMxMSwyMSw5LDIzLDksMjUuNXMyLDQuNSw0LjUsNC41YzIuNSww'@; put 'LDQuNS0yLDQuNS00LjVDMTgsMjMsMTYsMjEsMTMuNSwyMXogTTEzLjUsMjhjLTEuNCwwLTIuNS0xLjEtMi41LTIuNVxuXHRcdHMxLjEtMi41LDIuNS0yLjVzMi41LDEuMSwyLjUsMi41UzE0LjksMjgsMTMuNSwyOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x'@; put 'IiAvPjxwYXRoIGQ9Ik0zMywyNGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNoMnYtMkg1XG5cdFx0Yy0wLjYsMC0xLTAuNC0xLTFWOWMwLTAuNiwwLjQtMSwxLTFo'@; put 'MTguOGMwLjQsMCwwLjcsMC4yLDAuOSwwLjVsNC4yLDcuNWMwLjEsMC4xLDAuMSwwLjMsMC4xLDAuNVYyNGgtNFYxMmgtN3Y4aDJ2LTZoM3YxMGgtM3YyaDEzXG5cdFx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w'@; put 'YXRoLTIiIC8+PHBhdGggZD0iTTE2LDEySDd2Nmg5VjEyeiBNMTQsMTZIOXYtMmg1VjE2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEzLjUsMzBDMTEsMzAsOSwyOCw5LDI1LjVzMi00LjUsNC41LTQuNXM0LjUsMiw0LjUsNC41QzE4'@; put 'LDI4LDE2LDMwLDEzLjUsMzB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywx'@; put 'LjMsMywzLDNoMnYtMkg1XG5cdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiwwLjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRjMC42LDAsMS0wLjQsMS0x'@; put 'UzMzLjYsMjQsMzMsMjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxOEg3di02aDlWMTh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGguQ2xyU2hhcGVGZXJyeT0oMCxzLmNsckljb25TVkcpKCc8'@; put 'cGF0aCBkPSJNMjksMjUuMWMtMS4yLDAtMi4zLDAuNC0zLjMsMS4xYzAsMCwwLDAsMCwwYy0xLjEsMS4xLTMsMS4xLTQuMSwwYy0wLjktMC44LTIuMS0xLjItMy4zLTEuMmMtMS4yLDAtMi4zLDAuNC0zLjIsMS4yXG5cdFx0Yy0xLjIsMS4xLTMsMS4xLTQuMiwwQzEwLDI1LjQsOC44LDI1LDcu'@; put 'NiwyNWMtMS4yLDAtMi40LDAuNC0zLjQsMS4xQzMuNiwyNi43LDIuOCwyNywyLDI3djJjMS4zLDAuMSwyLjUtMC40LDMuNC0xLjJcblx0XHRDNi4xLDI3LjMsNi45LDI3LDcuNywyN2MwLjgsMCwxLjUsMC4zLDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwy'@; put 'LjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOFxuXHRcdGMxLjksMS42LDQuNiwxLjYsNi41LDBjMC41LTAuNSwxLjMtMC44LDItMC44YzAuNywwLDEuNSwwLjMsMiwwLjhjMC45LDAuNywyLDEuMSwzLjEsMS4ydi0xLjljLTAuNywwLTEuNC0wLjMtMS45LTAuOVxuXHRcdEMzMS4zLDI1LjQs'@; put 'MzAuMSwyNSwyOSwyNS4xeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUuOSwyMy4yVjIwSDMybC0zLjUsM2gwLjJjMC44LDAsMS42LDAuMiwyLjIsMC41bDIuNS0yLjJsMC4yLTAuMmMwLjUtMC42LDAuNS0xLjQsMC4yLTIuMWMtMC40'@; put 'LTAuNy0xLTEtMS44LTFoLTQuNFxuXHRcdEwyMi41LDExSDE3Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOC4xSDZ2Ni4xYy0xLjIsMC40LTIsMS41LTIsMi44djEuMVYyMHY0LjNsMC4xLTAuMUM0LjYsMjMuNyw1LjIsMjMuNCw1LjksMjMuMnogTTgsMTBoMnY0SDhWMTB6XG5cdFx0IE02LDE3YzAt'@; put 'MC42LDAuNC0xLDEtMWg5di0yYzAtMC42LDAuNC0xLDEtMWg1bDAuNiwxSDE4djJoNS44bDEuMiwyLjFINlYxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOC4yLDI1Yy0xLjIsMC0yLjQsMC40LTMuMywxLjJjLTEuMiwxLjEtMywx'@; put 'LjEtNC4xLDBjLTEuOS0xLjYtNC42LTEuNi02LjUsMGMtMS4yLDEuMS0yLjksMS4xLTQuMSwwXG5cdFx0Yy0wLjktMC44LTItMS4yLTMuMi0xLjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMkMzLjQsMjYuNywyLjcsMjcsMiwyN3YyYzEuMS0wLjEsMi4yLTAuNSwzLjEtMS4yQzUuNiwyNy4zLDYu'@; put 'MywyNyw3LDI3XG5cdFx0YzAuNywwLDEuNSwwLjMsMiwwLjhjMS45LDEuNiw0LjcsMS42LDYuNiwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOGMxLjksMS42LDQuNywxLjYsNi41LDBcblx0XHRjMC42LTAuNSwxLjMtMC44LDIuMS0wLjhjMC44LDAsMS42'@; put 'LDAuMywyLjEsMC44YzAuOSwwLjgsMi4yLDEuMywzLjQsMS4ydi0yYy0wLjgsMC0xLjYtMC4zLTIuMi0wLjhDMzAuNywyNS40LDI5LjUsMjUsMjguMiwyNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTUuOCwyMy4ydi0zLjNoMjYuMUwyOC40'@; put 'LDIzaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjEtMC4yYzAuNy0wLjksMC41LTIuMS0wLjQtMi44Yy0wLjMtMC4zLTAuOC0wLjQtMS4yLTAuNFxuXHRcdGgtNC4xbC01LjQtN2gtNS41Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOEg2djYuMmMtMS4yLDAuNC0yLjEsMS41LTIu'@; put 'MSwyLjhsMCw3LjJsMC4xLDBDNC41LDIzLjcsNS4xLDIzLjQsNS44LDIzLjJ6IE0xNy45LDE0aDQuMlxuXHRcdGwxLjQsMmgtNS43VjE0eiBNNy45LDEwaDJ2NGgtMlYxMHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksaC5DbHJTaGFwZVRyYWlsZXI9KDAs'@; put 'cy5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDE5LjJjLTMuMiwwLTUuOCwyLjYtNS44LDUuOHMyLjYsNS44LDUuOCw1LjhzNS44LTIuNiw1LjgtNS44UzE4LjIsMTkuMiwxNSwxOS4yeiBNMTUsMjkuMmMtMi4zLDAtNC4yLTEuOS00LjItNC4yXG5cdFx0czEuOS00LjIsNC4yLTQuMnM0LjIs'@; put 'MS45LDQuMiw0LjJTMTcuMywyOS4yLDE1LDI5LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxw'@; put 'YXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgtMS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3YyaDEuMVxuXHRcdGMwLDAsMCwwLDAsMGMyLjEsMCwzLjgtMS43LDMuOC0zLjlWMTFo'@; put 'NWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IE0yNiwxM0g0di0yaDIyVjEzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDlIMnYxMy4xYzAsMCwwLDAsMCwwQzIsMjQuMywzLjcsMjYsNS45LDI2SDd2LTJINS45Yy0xLDAt'@; put 'MS44LTAuOC0xLjktMS45VjE1aDIydjcuMWMwLDEtMC44LDEuOC0xLjksMS45SDIzdjJoMS4xXG5cdGMwLDAsMCwwLDAsMGMyLjEsMCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x'@; put 'IiAvPjxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUuOGwwLDBDMjAuOCwyMS44LDE4LjIsMTkuMiwxNSwxOS4yeiBNMTYsMjZoLTJ2LTJoMlYyNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo'@; put 'LTIiIC8+JyksaC5DbHJTaGFwZU9uSG9saWRheT0oMCxzLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguMDgsMi4zNGMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNEExNy45MSwxNy45MSwwLDAsMCwyMywyOS42Nmw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjMsMSwxLDAs'@; put 'MCwwLC4xNi0uNTRWMjUuNjFhMTMsMTMsMCwwLDAsNC05LjI3QzM0LjA4LDguNjIsMjYuOSwyLjM0LDE4LjA4LDIuMzRaTTI4LjM3LDI0LjQ1YTEsMSwwLDAsMC0uMzIuNzN2NS4zNGwtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExLDE2LDE2LDAsMCwxLTQuNzYuNzJjLTcuNzIsMC0xNC01'@; put 'LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4xLDExLjEsMCwwLDEsMjguMzcsMjQuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMSwxNS44MiwzMSwxNS42NywyOC41LDEzLjQ0YTMuMjUsMy4y'@; put 'NSwwLDAsMC0yLjM5LS44NGwtNS4zOC4zNC0zLjU5LTNhLjgxLjgxLDAsMCwwLS41Mi0uMTlIMTMuNTZhLjc4Ljc4LDAsMCwwLS42OS40Ljc3Ljc3LDAsMCwwLDAsLjc5bDEuMzYsMi40NC00LjcxLjI5LDEuMzEsMS41MiwxNS4zOS0xYTEuNjUsMS42NSwwLDAsMSwxLjIyLjQzbDIuMzYsMi4x'@; put 'M2EuMTEuMTEsMCwwLDEsMCwuMDdjMCwuMDYtLjA5LjA1LS4xLjA2SDIxLjgybC0uMzUuMzctNS4xOSw1LjUzSDE0LjY0bDIuNzMtNS45SDguNTRMNy4xMywxNC4xNiw2LjUxLDEzYS44LjgsMCwwLDAtMS0uMkEuODEuODEsMCwwLDAsNS4yLDEzLjlsMiwzLjk0YTEuMjEsMS4yMSwwLDAsMCwx'@; put 'LjA4LjY1aDYuNTdsLTEuOTQsNC4xOEExLjIsMS4yLDAsMCwwLDEzLDIzLjgzYTEuMjIsMS4yMiwwLDAsMCwxLC41NmgyLjQzYTEuMTcsMS4xNywwLDAsMCwuODgtLjM5bDUuMTgtNS41MWg3LjE2YTEuNjUsMS42NSwwLDAsMCwxLjUyLS45MUExLjc0LDEuNzQsMCwwLDAsMzEuMSwxNS44MlpN'@; put 'MTQuOTIsMTEuMzFoMS40MWwyLjA5LDEuNzdMMTYsMTMuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICBcbiAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExNy45MSwxNy45MSwwLDAsMCw0Ljg4'@; put 'LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjNBMSwxLDAsMCwwLDMwLDMyLjVWMjUuNzdhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjkuODQsMThIMjEuNTFhLjQyLjQyLDAsMCwwLS4zLjEzbC01LjMsNS42NGEuMzkuMzksMCwwLDEtLjI5LjEz'@; put 'SDEzLjE5YS40MS40MSwwLDAsMS0uMzctLjU4bDIuNDctNS4zMkg3LjQ2YS40Mi40MiwwLDAsMS0uMzYtLjIybC0yLjctNUg2LjI0YS41My41MywwLDAsMSwuMzkuMThsMS41NiwxLjY5YS4zOC4zOCwwLDAsMCwuMzMuMTRsNi4xOC0uMzgtMi0zLjU1aDIuODlhLjQ3LjQ3LDAsMCwxLC4zMS4x'@; put 'MUwxOS42MywxNGw2LjY5LS4zNWEyLjQ0LDIuNDQsMCwwLDEsMS44MS42M2wyLjQ3LDIuMjNBLjkyLjkyLDAsMCwxLDI5Ljg0LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxoLlRyYXZlbFNoYXBlcz17dHJ1Y2s6aC5DbHJTaGFwZVRydWNrLGFp'@; put 'cnBsYW5lOmguQ2xyU2hhcGVBaXJwbGFuZSxjYXI6aC5DbHJTaGFwZUNhcixtYXA6aC5DbHJTaGFwZU1hcCxjb21wYXNzOmguQ2xyU2hhcGVDb21wYXNzLCJtYXAtbWFya2VyIjpoLkNsclNoYXBlTWFwTWFya2VyLGJpY3ljbGU6aC5DbHJTaGFwZUJpY3ljbGUsYm9hdDpoLkNsclNoYXBlQm9h'@; put 'dCxjYW1wZXJ2YW46aC5DbHJTaGFwZUNhbXBlcnZhbixjYXJhdmFuOmguQ2xyU2hhcGVDYXJhdmFuLGZlcnJ5OmguQ2xyU2hhcGVGZXJyeSx0cmFpbGVyOmguQ2xyU2hhcGVUcmFpbGVyLCJvbi1ob2xpZGF5IjpoLkNsclNoYXBlT25Ib2xpZGF5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaC5U'@; put 'cmF2ZWxTaGFwZXMsInBsYW5lIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguVHJhdmVsU2hhcGVzLmFpcnBsYW5lKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGguVHJhdmVsU2hhcGVzLCJhdXRvIiwoMCxjLmRlc2NyaXB0b3JDb25maWcpKGguVHJhdmVsU2hhcGVzLmNhcikpLHR5cGVvZiB3'@; put 'aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChoLlRyYXZlbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMgKioqIQogICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKGosaCx5KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGguZGVzY3JpcHRvckNvbmZpZz12b2lkIDAsaC5kZXNjcmlw'@; put 'dG9yQ29uZmlnPWZ1bmN0aW9uIGMocyl7cmV0dXJue2VudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOnN9fX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyAqKiohCiAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq'@; put 'KioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oaixoLHkpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksaC5jbHJJY29uU1ZHPXZvaWQgMDtoLmNsckljb25TVkc9ZnVuY3Rpb24g'@; put 'dihDKXt2YXIgdz0iIjtyZXR1cm4gQy5pbmRleE9mKCItLWJhZGdlZCIpPi0xJiYodys9ImNhbi1iYWRnZSAiKSxDLmluZGV4T2YoIi0tYWxlcnRlZCIpPi0xJiYodys9ImNhbi1hbGVydCAiKSxDLmluZGV4T2YoImNsci1pLXNvbGlkIik+LTEmJih3Kz0iaGFzLXNvbGlkICIpLCh3Pyc8c3Zn'@; put 'IHZlcnNpb249IjEuMSIgY2xhc3M9IicrdysnIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu'@; put 'ayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nOic8c3ZnIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDM2IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0'@; put 'dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9ImltZyI+JykrQysiPC9zdmc+In19fSl9LDI4MjY3KGZlLGosaCl7InVzZSBzdHJpY3QiO2gucihqKSxoLmQoaix7Y3JlYXRlQ2lwaGVyaXY6KCk9PnYuVHQsY3JlYXRlRGVjaXBoZXJpdjooKT0+di5f'@; put 'NyxjcmVhdGVIYXNoOigpPT5jLmEsY3JlYXRlSG1hYzooKT0+QS5hLGdldEhhc2hlczooKT0+TCxyYW5kb21CeXRlczooKT0+dy5hfSk7dmFyIHk9aCg2NzIxMSksYz1oLm4oeSkscz1oKDU2NDMyKSxBPWgubihzKSx2PWgoODg4NjIpLEM9aCgzMzQyKSx3PWgubihDKTtjb25zdCBTPVsibWQ0'@; put 'IiwibWQ1IiwicmlwZW1kMTYwIiwic2hhMSIsInNoYTIyNCIsInNoYTI1NiIsInNoYTM4NCIsInNoYTUxMiJdO2Z1bmN0aW9uIEwoKXtyZXR1cm5bLi4uU119fSw3NTAyOChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT17fTtoLnIoeSksaC5kKHkse2FycmF5QXZnOigpPT5CTXQsYXJyYXlF'@; put 'YWNoOigpPT5YbixhcnJheUZpbHRlcjooKT0+SHYsYXJyYXlGbGF0dGVuOigpPT5TeGUsYXJyYXlNYXA6KCk9Pl9jLGFycmF5TWF4OigpPT5ITXQsYXJyYXlNaW46KCk9PlZNdCxhcnJheVJlZHVjZTooKT0+bTEsYXJyYXlTdW06KCk9PkN4ZSxhcnJheVRvU3RyaW5nOigpPT5NeGUsYXJyYXlV'@; put 'bmlxdWU6KCk9PmdzZSxleHRlbmRBcnJheTooKT0+cHNlLGdldERpZmZlcmVuY2VPZkFycmF5czooKT0+ckwsZ2V0SW50ZXJzZWN0aW9uT2ZBcnJheXM6KCk9PkV4ZSxnZXRVbmlvbk9mQXJyYXlzOigpPT5qTXQscGl2b3Q6KCk9Pm5MLHN0cmluZ1RvQXJyYXk6KCk9Pm1zZSx0bzJkQXJyYXk6'@; put 'KCk9Pnd4ZX0pO3ZhciBjPXt9O2gucihjKSxoLmQoYyx7X2luamVjdFByb2R1Y3RJbmZvOigpPT5JeGUsaXNEZWZpbmVkOigpPT5abyxpc0VtcHR5OigpPT5BbCxpc1JlZ0V4cDooKT0+VHhlLGlzVW5kZWZpbmVkOigpPT5YdSxzdHJpbmdpZnk6KCk9PlBsfSk7dmFyIHM9e307aC5yKHMpLGgu'@; put 'ZChzLHt0aHJvd1dpdGhDYXVzZTooKT0+SnJ9KTt2YXIgQT17fTtoLnIoQSksaC5kKEEse2Fzc2lnbk9iamVjdERlZmF1bHRzOigpPT5jTCxjbG9uZTooKT0+cTUsY3JlYXRlT2JqZWN0UHJvcExpc3RlbmVyOigpPT5WZixkZWVwQ2xvbmU6KCk9PkFkLGRlZXBFeHRlbmQ6KCk9PkxXLGRlZXBN'@; put 'ZXJnZTooKT0+TlcsZGVlcE9iamVjdFNpemU6KCk9Pk9XLGRlZmluZUdldHRlcjooKT0+SzUsZHVja1NjaGVtYTooKT0+T00sZXh0ZW5kOigpPT5ZZCxnZXRQcm9wZXJ0eTooKT0+c0wsaGFzT3duUHJvcGVydHk6KCk9PlJkLGluaGVyaXQ6KCk9PkR4ZSxpc0tleVZhbHVlT2JqZWN0OigpPT5i'@; put 'MCxpc09iamVjdDooKT0+Q2EsaXNPYmplY3RFcXVhbDooKT0+ZzcsaXNQbGFpbk9iamVjdDooKT0+a2QsbWl4aW46KCk9PllsLG9iamVjdEVhY2g6KCk9PmFjLHNldFByb3BlcnR5OigpPT5sTH0pO3ZhciB2PXt9O2gucih2KSxoLmQodix7Y2FuY2VsQW5pbWF0aW9uRnJhbWU6KCk9PmRMLGdl'@; put 'dENvbXBhcmlzb25GdW5jdGlvbjooKT0+T3hlLGlzQ1NSOigpPT5MeGUsaXNUb3VjaFN1cHBvcnRlZDooKT0+X3NlLHJlcXVlc3RBbmltYXRpb25GcmFtZTooKT0+dUx9KTt2YXIgQz17fTtoLnIoQyksaC5kKEMse2lzQ2hyb21lOigpPT5QeGUsaXNDaHJvbWVXZWJLaXQ6KCk9Pkh4ZSxpc0Vk'@; put 'Z2U6KCk9Pmp4ZSxpc0VkZ2VXZWJLaXQ6KCk9PiRNdCxpc0ZpcmVmb3g6KCk9PkZXLGlzRmlyZWZveFdlYktpdDooKT0+VnhlLGlzSU9TOigpPT55c2UsaXNJcGFkT1M6KCk9PlBXLGlzTGludXhPUzooKT0+cU10LGlzTWFjT1M6KCk9Pmx3LGlzTW9iaWxlQnJvd3NlcjooKT0+UTUsaXNTYWZh'@; put 'cmk6KCk9PmhMLGlzU2FmYXJpQmVmb3JlMjYxOigpPT5CeGUsaXNXaW5kb3dzT1M6KCk9PkhXLHNldEJyb3dzZXJNZXRhOigpPT5OeGUsc2V0UGxhdGZvcm1NZXRhOigpPT5GeGV9KTt2YXIgdz17fTtoLnIodyksaC5kKHcse2VxdWFsc0lnbm9yZUNhc2U6KCk9PktNdCxpc0pTT046KCk9PmJz'@; put 'ZSxpc1BlcmNlbnRWYWx1ZTooKT0+d3NlLGxvY2FsZUxvd2VyQ2FzZTooKT0+djEscmFuZG9tU3RyaW5nOigpPT5WVyxzYW5pdGl6ZTooKT0+WE10LHN0cmlwVGFnczooKT0+c20sc3Vic3RpdHV0ZTooKT0+ZkwsdG9IeXBoZW46KCk9PlBNLHRvVXBwZXJDYXNlRmlyc3Q6KCk9PkswfSk7dmFy'@; put 'IFM9e307aC5yKFMpLGguZChTLHtIVE1MX0NIQVJBQ1RFUlM6KCk9Plh4ZSxTQU5JVElaRVJfV0FSTl9LRVk6KCk9PkVzZSxhZGRDbGFzczooKT0+WXIsYWRkRXZlbnQ6KCk9PmFUdCxjbGVhclRleHRTZWxlY3Rpb246KCk9PkFzZSxjbG9zZXN0OigpPT5WdixjbG9zZXN0RG93bjooKT0+Z0ws'@; put 'ZW1wdHk6KCk9PkM0LGV2ZW50VGFyZ2V0RWw6KCk9PkFhLGZhc3RJbm5lckhUTUw6KCk9Pl83LGZhc3RJbm5lclRleHQ6KCk9Pnk3LGZpbmRGaXJzdFBhcmVudFdpdGhDbGFzczooKT0+R3hlLGdldENhcmV0UG9zaXRpb246KCk9PnhzZSxnZXRDaGlsZEVsOigpPT5mVHQsZ2V0Q3NzVHJhbnNm'@; put 'b3JtOigpPT51VHQsZ2V0RnJhY3Rpb25hbFNjYWxpbmdDb21wZW5zYXRpb246KCk9PmlBZSxnZXRGcmFtZUVsZW1lbnQ6KCk9Plp4ZSxnZXRNYXhpbXVtU2Nyb2xsTGVmdDooKT0+bkFlLGdldE1heGltdW1TY3JvbGxUb3A6KCk9PnRBZSxnZXRQYXJlbnQ6KCk9Pll4ZSxnZXRQYXJlbnRXaW5k'@; put 'b3c6KCk9PnY3LGdldFNjcm9sbExlZnQ6KCk9Pk1zZSxnZXRTY3JvbGxUb3A6KCk9PmpXLGdldFNjcm9sbGFibGVFbGVtZW50OigpPT5tTCxnZXRTY3JvbGxiYXJXaWR0aDooKT0+R2QsZ2V0U2VsZWN0aW9uRW5kUG9zaXRpb246KCk9PnJBZSxnZXRTZWxlY3Rpb25UZXh0OigpPT5sVHQsZ2V0'@; put 'U3R5bGU6KCk9PnV3LGdldFRyaW1taW5nQ29udGFpbmVyOigpPT5ITSxnZXRXaW5kb3dTY3JvbGxMZWZ0OigpPT5lQWUsZ2V0V2luZG93U2Nyb2xsVG9wOigpPT5KeGUsaGFzQWNjZXNzVG9QYXJlbnRXaW5kb3c6KCk9PnJUdCxoYXNDbGFzczooKT0+TGEsaGFzSG9yaXpvbnRhbFNjcm9sbGJh'@; put 'cjooKT0+SXNlLGhhc1ZlcnRpY2FsU2Nyb2xsYmFyOigpPT5Sc2UsaGFzWmVyb0hlaWdodDooKT0+UXhlLGluZGV4OigpPT4keGUsaW5uZXJIZWlnaHQ6KCk9PmR3LGlubmVyV2lkdGg6KCk9PlRzZSxpc0JvdHRvbU1vc3RDb2x1bW5IZWFkZXI6KCk9PmN3LGlzQ2hpbGRPZjooKT0+QnYsaXNE'@; put 'ZXRhY2hlZDooKT0+RHNlLGlzSFRNTEVsZW1lbnQ6KCk9PmhzLGlzSFRNTElucHV0RWxlbWVudDooKT0+aFR0LGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6KCk9Pk5zZSxpc0lucHV0OigpPT55TCxpc0ludGVybmFsRWxlbWVudDooKT0+cEwsaXNPdXRzaWRlSW5wdXQ6KCk9PlZNLGlzU2hhZG93'@; put 'Um9vdDooKT0+YkwsaXNWaXNpYmxlOigpPT5VdixtYWtlRWxlbWVudENvbnRlbnRFZGl0YWJsZUFuZFNlbGVjdEl0c0NvbnRlbnQ6KCk9PkxzZSxtYXRjaGVzQ1NTUnVsZXM6KCk9Pm9UdCxvYnNlcnZlVmlzaWJpbGl0eUNoYW5nZU9uY2U6KCk9Pm9BZSxvZmZzZXQ6KCk9PlgwLG91dGVySGVp'@; put 'Z2h0OigpPT5IaCxvdXRlcldpZHRoOigpPT5aZCxvdmVybGF5Q29udGFpbnNFbGVtZW50OigpPT5qdixyZW1vdmVBdHRyaWJ1dGU6KCk9Pnc0LHJlbW92ZUNsYXNzOigpPT5rbyxyZW1vdmVDb250ZW50RWRpdGFibGVGcm9tRWxlbWVudEFuZERlc2VsZWN0OigpPT5Pc2UscmVtb3ZlRXZlbnQ6'@; put 'KCk9PnNUdCxyZW1vdmVUZXh0Tm9kZXM6KCk9PlNzZSxyZXNldENzc1RyYW5zZm9ybTooKT0+X0wscnVuV2l0aFNlbGVjdGVkQ29udGVuZEVkaXRhYmxlRWxlbWVudDooKT0+YUFlLHNlbGVjdEVsZW1lbnRJZkFsbG93ZWQ6KCk9PmRUdCxzZXRBdHRyaWJ1dGU6KCk9PktvLHNldENhcmV0UG9z'@; put 'aXRpb246KCk9PnZMLHNldE92ZXJsYXlQb3NpdGlvbjooKT0+VVd9KTt2YXIgTD17fTtoLnIoTCksaC5kKEwse2N1cnJ5OigpPT5sQWUsY3VycnlSaWdodDooKT0+dlR0LGRlYm91bmNlOigpPT5CTSxmYXN0Q2FsbDooKT0+RnNlLGlzRnVuY3Rpb246KCk9Pl9hLHBhcnRpYWw6KCk9Pm1UdCxw'@; put 'aXBlOigpPT5nVHQsdGhyb3R0bGU6KCk9PnNBZSx0aHJvdHRsZUFmdGVySGl0czooKT0+cFR0fSk7dmFyIFI9e307aC5yKFIpLGguZChSLHtLRVlfQ09ERVM6KCk9PkVhLGlzQ3RybEtleTooKT0+eVR0LGlzQ3RybE1ldGFLZXk6KCk9PnVBZSxpc0Z1bmN0aW9uS2V5OigpPT5jQWUsaXNLZXk6'@; put 'KCk9Pmh3LGlzUHJpbnRhYmxlQ2hhcjooKT0+UHNlfSk7dmFyIHg9e307aC5yKHgpLGguZCh4LHtpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDooKT0+SjUsaXNMZWZ0Q2xpY2s6KCk9PnpXLGlzTWlkZGxlQ2xpY2s6KCk9PmRBZSxpc1JpZ2h0Q2xpY2s6KCk9Pnp2LGlzVG91Y2hFdmVu'@; put 'dDooKT0+aEFlLG9mZnNldFJlbGF0aXZlVG86KCk9PmZBZSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246KCk9PkYzfSk7dmFyIFU9e307aC5yKFUpLGguZChVLHtfZGF0YVRvSFRNTDooKT0+S3NlLGh0bWxUb0dyaWRTZXR0aW5nczooKT0+WHNlLGluc3RhbmNlVG9IVE1MOigpPT5xc2UscmVw'@; put 'bGFjZVRkQ2VsbHNXaXRoVGV4dENvbnRlbnQ6KCk9PkxBZX0pO3ZhciBIPXt9O2gucihIKSxoLmQoSCx7Y2xhbXA6KCk9PlZzLGdldFBhcnNlZE51bWJlcjooKT0+TkFlLGlzQ29tbWFUaG91c2FuZHNHcm91cGVkSW50ZWdlcjooKT0+UXNlLGlzRG90VGhvdXNhbmRzR3JvdXBlZEZsb2F0Oigp'@; put 'PT5lbGUsaXNEb3RUaG91c2FuZHNHcm91cGVkSW50ZWdlcjooKT0+SnNlLGlzTnVtZXJpYzooKT0+dzAsaXNOdW1lcmljTGlrZTooKT0+T0FlLGlzVW5zaWduZWROdW1iZXI6KCk9PnB3LHJhbmdlRWFjaDooKT0+VmEscmFuZ2VFYWNoUmV2ZXJzZTooKT0+dGxlLHZhbHVlQWNjb3JkaW5nUGVy'@; put 'Y2VudDooKT0+bmxlfSk7dmFyIFY9e307aC5yKFYpLGguZChWLHtjbG9uZVJvdzooKT0+dFJlLGNvdW50Rmlyc3RSb3dLZXlzOigpPT5qbGUsY3JlYXRlRW1wdHlTcHJlYWRzaGVldERhdGE6KCk9PmZrdCxjcmVhdGVTcHJlYWRzaGVldERhdGE6KCk9PmRrdCxjcmVhdGVTcHJlYWRzaGVldE9i'@; put 'amVjdERhdGE6KCk9PmhrdCxkYXRhUm93VG9DaGFuZ2VzQXJyYXk6KCk9PkJsZSxoYXNDaGFuZ2VGb3JDZWxsOigpPT5Ka2UsaXNBcnJheU9mQXJyYXlzOigpPT5VbGUsaXNBcnJheU9mT2JqZWN0czooKT0+ZVJlLHNwcmVhZHNoZWV0Q29sdW1uSW5kZXg6KCk9PnVrdCxzcHJlYWRzaGVldENv'@; put 'bHVtbkxhYmVsOigpPT5DWX0pO3ZhciBOPXt9O2gucihOKSxoLmQoTix7Q0FOQ0VMOigpPT5RbGUsQ0hFQ0tCT1hfQ0hFQ0tFRDooKT0+U3VlLENIRUNLQk9YX1JFTkRFUkVSX05BTUVTUEFDRTooKT0+Q3VlLENIRUNLQk9YX1VOQ0hFQ0tFRDooKT0+RXVlLENPTU1PTl9OQU1FU1BBQ0U6KCk9'@; put 'PlhsZSxDT05URVhUTUVOVV9JVEVNU19BRERfQ09NTUVOVDooKT0+d2NlLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVDooKT0+TWNlLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9CT1RUT006KCk9PkRjZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfQ0VOVEVSOigpPT54Y2Us'@; put 'Q09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX0pVU1RJRlk6KCk9PmtjZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfTEVGVDooKT0+VGNlLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9NSURETEU6KCk9PkljZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfUklHSFQ6KCk9'@; put 'PkFjZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfVE9QOigpPT5SY2UsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSUzooKT0+TGNlLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlNfQk9UVE9NOigpPT5GY2UsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSU19MRUZUOigpPT5QY2UsQ09OVEVY'@; put 'VE1FTlVfSVRFTVNfQk9SREVSU19SSUdIVDooKT0+TmNlLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlNfVE9QOigpPT5PY2UsQ09OVEVYVE1FTlVfSVRFTVNfQ0xFQVJfQ09MVU1OOigpPT5sY2UsQ09OVEVYVE1FTlVfSVRFTVNfQ09QWTooKT0+Y2NlLENPTlRFWFRNRU5VX0lURU1TX0NPUFlf'@; put 'Q09MVU1OX0hFQURFUlNfT05MWTooKT0+aGNlLENPTlRFWFRNRU5VX0lURU1TX0NPUFlfV0lUSF9DT0xVTU5fR1JPVVBfSEVBREVSUzooKT0+ZGNlLENPTlRFWFRNRU5VX0lURU1TX0NPUFlfV0lUSF9DT0xVTU5fSEVBREVSUzooKT0+dWNlLENPTlRFWFRNRU5VX0lURU1TX0NVVDooKT0+ZmNl'@; put 'LENPTlRFWFRNRU5VX0lURU1TX0VESVRfQ09NTUVOVDooKT0+Q2NlLENPTlRFWFRNRU5VX0lURU1TX0VYUE9SVDooKT0+cGNlLENPTlRFWFRNRU5VX0lURU1TX0VYUE9SVF9GSUxFX0NTVjooKT0+Z2NlLENPTlRFWFRNRU5VX0lURU1TX0VYUE9SVF9GSUxFX1hMU1g6KCk9Pm1jZSxDT05URVhU'@; put 'TUVOVV9JVEVNU19GUkVFWkVfQ09MVU1OOigpPT52Y2UsQ09OVEVYVE1FTlVfSVRFTVNfSElERV9DT0xVTU46KCk9PmpjZSxDT05URVhUTUVOVV9JVEVNU19ISURFX1JPVzooKT0+emNlLENPTlRFWFRNRU5VX0lURU1TX0lOU0VSVF9MRUZUOigpPT5uY2UsQ09OVEVYVE1FTlVfSVRFTVNfSU5T'@; put 'RVJUX1JJR0hUOigpPT5yY2UsQ09OVEVYVE1FTlVfSVRFTVNfTUVSR0VfQ0VMTFM6KCk9PnljZSxDT05URVhUTUVOVV9JVEVNU19ORVNURURfUk9XU19ERVRBQ0hfQ0hJTEQ6KCk9PkJjZSxDT05URVhUTUVOVV9JVEVNU19ORVNURURfUk9XU19JTlNFUlRfQ0hJTEQ6KCk9PlZjZSxDT05URVhU'@; put 'TUVOVV9JVEVNU19OT19JVEVNUzooKT0+SmxlLENPTlRFWFRNRU5VX0lURU1TX1JFQURfT05MWTooKT0+UlksQ09OVEVYVE1FTlVfSVRFTVNfUkVBRF9PTkxZX0NPTU1FTlQ6KCk9PkVjZSxDT05URVhUTUVOVV9JVEVNU19SRURPOigpPT5zY2UsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0JP'@; put 'UkRFUlM6KCk9PkhjZSxDT05URVhUTUVOVV9JVEVNU19SRU1PVkVfQ09MVU1OOigpPT5vY2UsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0NPTU1FTlQ6KCk9PlNjZSxDT05URVhUTUVOVV9JVEVNU19SRU1PVkVfUk9XOigpPT5pY2UsQ09OVEVYVE1FTlVfSVRFTVNfUk9XX0FCT1ZFOigpPT5l'@; put 'Y2UsQ09OVEVYVE1FTlVfSVRFTVNfUk9XX0JFTE9XOigpPT50Y2UsQ09OVEVYVE1FTlVfSVRFTVNfU0hPV19DT0xVTU46KCk9PlVjZSxDT05URVhUTUVOVV9JVEVNU19TSE9XX1JPVzooKT0+V2NlLENPTlRFWFRNRU5VX0lURU1TX1VORE86KCk9PmFjZSxDT05URVhUTUVOVV9JVEVNU19VTkZS'@; put 'RUVaRV9DT0xVTU46KCk9Pl9jZSxDT05URVhUTUVOVV9JVEVNU19VTk1FUkdFX0NFTExTOigpPT5iY2UsQ09OVEVYVF9NRU5VX0lURU1TX05BTUVTUEFDRTooKT0+Q1JlLERBVEFfUFJPVklERVJfQlVUVE9OU19SRUZFVENIOigpPT5CdWUsREFUQV9QUk9WSURFUl9FUlJPUlNfQ1JFQVRFOigp'@; put 'PT5GdWUsREFUQV9QUk9WSURFUl9FUlJPUlNfRkVUQ0g6KCk9Pk51ZSxEQVRBX1BST1ZJREVSX0VSUk9SU19SRU1PVkU6KCk9Pkh1ZSxEQVRBX1BST1ZJREVSX0VSUk9SU19SRVFVRVNUX0ZBSUxFRDooKT0+VnVlLERBVEFfUFJPVklERVJfRVJST1JTX1VQREFURTooKT0+UHVlLERBVEFfUFJP'@; put 'VklERVJfTkFNRVNQQUNFOigpPT5UdyxFTVBUWV9EQVRBX1NUQVRFX0JVVFRPTlNfRklMVEVSU19SRVNFVDooKT0+RHVlLEVNUFRZX0RBVEFfU1RBVEVfREVTQ1JJUFRJT046KCk9Pmt1ZSxFTVBUWV9EQVRBX1NUQVRFX0RFU0NSSVBUSU9OX0ZJTFRFUlM6KCk9Pkl1ZSxFTVBUWV9EQVRBX1NU'@; put 'QVRFX0RFU0NSSVBUSU9OX0xPQURJTkc6KCk9Pk91ZSxFTVBUWV9EQVRBX1NUQVRFX05BTUVTUEFDRTooKT0+cl8sRU1QVFlfREFUQV9TVEFURV9USVRMRTooKT0+QXVlLEVNUFRZX0RBVEFfU1RBVEVfVElUTEVfRklMVEVSUzooKT0+UnVlLEVNUFRZX0RBVEFfU1RBVEVfVElUTEVfTE9BRElO'@; put 'RzooKT0+THVlLEVYUE9SVF9GSUxFX0RJQUxPR19USVRMRTooKT0+eHVlLEVYUE9SVF9GSUxFX05BTUVTUEFDRTooKT0+TVJlLEZJTFRFUlNfQlVUVE9OU19DQU5DRUw6KCk9PnV1ZSxGSUxURVJTX0JVVFRPTlNfQ0xFQVI6KCk9Pmx1ZSxGSUxURVJTX0JVVFRPTlNfT0s6KCk9PmN1ZSxGSUxU'@; put 'RVJTX0JVVFRPTlNfUExBQ0VIT0xERVJfU0VBUkNIOigpPT5kdWUsRklMVEVSU19CVVRUT05TX1BMQUNFSE9MREVSX1NFQ09ORF9WQUxVRTooKT0+ZnVlLEZJTFRFUlNfQlVUVE9OU19QTEFDRUhPTERFUl9WQUxVRTooKT0+aHVlLEZJTFRFUlNfQlVUVE9OU19TRUxFQ1RfQUxMOigpPT5zdWUs'@; put 'RklMVEVSU19DT05ESVRJT05TX0FGVEVSOigpPT5aTCxGSUxURVJTX0NPTkRJVElPTlNfQUZURVJfT1JfRVFVQUw6KCk9PkdMLEZJTFRFUlNfQ09ORElUSU9OU19CRUZPUkU6KCk9PiRMLEZJTFRFUlNfQ09ORElUSU9OU19CRUZPUkVfT1JfRVFVQUw6KCk9PnFMLEZJTFRFUlNfQ09ORElUSU9O'@; put 'U19CRUdJTlNfV0lUSDooKT0+cWNlLEZJTFRFUlNfQ09ORElUSU9OU19CRVRXRUVOOigpPT5ZTCxGSUxURVJTX0NPTkRJVElPTlNfQllfVkFMVUU6KCk9Pk5rdCxGSUxURVJTX0NPTkRJVElPTlNfQ09OVEFJTlM6KCk9PlhjZSxGSUxURVJTX0NPTkRJVElPTlNfRU1QVFk6KCk9PlljZSxGSUxU'@; put 'RVJTX0NPTkRJVElPTlNfRU5EU19XSVRIOigpPT5LY2UsRklMVEVSU19DT05ESVRJT05TX0VRVUFMOigpPT5HY2UsRklMVEVSU19DT05ESVRJT05TX0dSRUFURVJfVEhBTjooKT0+SmNlLEZJTFRFUlNfQ09ORElUSU9OU19HUkVBVEVSX1RIQU5fT1JfRVFVQUw6KCk9PmV1ZSxGSUxURVJTX0NP'@; put 'TkRJVElPTlNfTEVTU19USEFOOigpPT50dWUsRklMVEVSU19DT05ESVRJT05TX0xFU1NfVEhBTl9PUl9FUVVBTDooKT0+bnVlLEZJTFRFUlNfQ09ORElUSU9OU19OQU1FU1BBQ0U6KCk9PmZkLEZJTFRFUlNfQ09ORElUSU9OU19OT05FOigpPT5JWSxGSUxURVJTX0NPTkRJVElPTlNfTk9UX0JF'@; put 'VFdFRU46KCk9PnJ1ZSxGSUxURVJTX0NPTkRJVElPTlNfTk9UX0NPTlRBSU46KCk9PlFjZSxGSUxURVJTX0NPTkRJVElPTlNfTk9UX0VNUFRZOigpPT5aY2UsRklMVEVSU19DT05ESVRJT05TX05PVF9FUVVBTDooKT0+JGNlLEZJTFRFUlNfQ09ORElUSU9OU19UT0RBWTooKT0+RFksRklMVEVS'@; put 'U19DT05ESVRJT05TX1RPTU9SUk9XOigpPT5MWSxGSUxURVJTX0NPTkRJVElPTlNfWUVTVEVSREFZOigpPT5PWSxGSUxURVJTX0RJVlNfRklMVEVSX0JZX0NPTkRJVElPTjooKT0+aXVlLEZJTFRFUlNfRElWU19GSUxURVJfQllfVkFMVUU6KCk9Pm91ZSxGSUxURVJTX0xBQkVMU19DT05KVU5D'@; put 'VElPTjooKT0+YXVlLEZJTFRFUlNfTEFCRUxTX0RJU0pVTkNUSU9OOigpPT5OWSxGSUxURVJTX05BTUVTUEFDRTooKT0+amYsRklMVEVSU19WQUxVRVNfQkxBTktfQ0VMTFM6KCk9PkZZLExPQURJTkdfTkFNRVNQQUNFOigpPT5TUmUsTE9BRElOR19USVRMRTooKT0+TXVlLE5PVElGSUNBVElP'@; put 'Tl9CVVRUT05TX0NMT1NFOigpPT5UdWUsTk9USUZJQ0FUSU9OX05BTUVTUEFDRTooKT0+RVJlLE9LOigpPT5rWSxQQUdJTkFUSU9OX0NPVU5URVJfU0VDVElPTjooKT0+bXVlLFBBR0lOQVRJT05fRklSU1RfUEFHRTooKT0+X3VlLFBBR0lOQVRJT05fTEFTVF9QQUdFOigpPT53dWUsUEFHSU5B'@; put 'VElPTl9OQU1FU1BBQ0U6KCk9PnM2LFBBR0lOQVRJT05fTkFWX1NFQ1RJT046KCk9PnZ1ZSxQQUdJTkFUSU9OX05FWFRfUEFHRTooKT0+YnVlLFBBR0lOQVRJT05fUEFHRV9TSVpFX0FVVE86KCk9Pmd1ZSxQQUdJTkFUSU9OX1BBR0VfU0laRV9TRUNUSU9OOigpPT5QWSxQQUdJTkFUSU9OX1BS'@; put 'RVZfUEFHRTooKT0+eXVlLFBBR0lOQVRJT05fU0VDVElPTjooKT0+cHVlfSk7dmFyIHo9e307aC5yKHopLGguZCh6LHtJU09fREFURV9SRUdFWDooKT0+VmRlLFRJTUVfUkVHRVg6KCk9PkJkZSxnZXROb3JtYWxpemVkRGF0ZTooKT0+Yk90LGdldFJlbGF0aXZlTG9jYWxEYXRlOigpPT5VZGUs'@; put 'Z2V0VG9kYXlMb2NhbERhdGU6KCk9PmpkZSxpc1NhbWVMb2NhbERheTooKT0+dlosaXNWYWxpZElTT0RhdGU6KCk9PnhPLGlzVmFsaWRUaW1lOigpPT5tWixwYXJzZVRvTG9jYWxEYXRlOigpPT5zYyxwYXJzZVRvTG9jYWxUaW1lOigpPT56Zn0pO3ZhciBZPXt9O2xldCBGO2Z1bmN0aW9uIFco'@; put 'KXtyZXR1cm4gRn1mdW5jdGlvbiBxKG4pe2NvbnN0IGU9RjtyZXR1cm4gRj1uLGV9aC5yKFkpLGguZChZLHtBYnNQbHVnaW46KCk9PlFXZSxBZGRyZXNzUGx1Z2luOigpPT5LV2UsQXJyYXlQbHVnaW46KCk9PlhXZSxCaXRTaGlmdFBsdWdpbjooKT0+dFllLEJpdHdpc2VMb2dpY09wZXJhdGlv'@; put 'bnNQbHVnaW46KCk9Pm9ZZSxCb29sZWFuUGx1Z2luOigpPT5hWWUsQ2hhclBsdWdpbjooKT0+c1llLENvZGVQbHVnaW46KCk9PmxZZSxDb21wbGV4UGx1Z2luOigpPT5nWmUsQ29uZGl0aW9uYWxBZ2dyZWdhdGlvblBsdWdpbjooKT0+WlllLENvdW50QmxhbmtQbHVnaW46KCk9PmNZZSxDb3Vu'@; put 'dFVuaXF1ZVBsdWdpbjooKT0+dVllLERhdGVUaW1lUGx1Z2luOigpPT5kWWUsRGVncmVlc1BsdWdpbjooKT0+Z1llLERlbHRhUGx1Z2luOigpPT5tWWUsRXhwUGx1Z2luOigpPT52WWUsRmluYW5jaWFsUGx1Z2luOigpPT5fWWUsRm9ybXVsYVRleHRQbHVnaW46KCk9PmJZZSxIeXBlcmxpbmtQ'@; put 'bHVnaW46KCk9PndZZSxJbmZvcm1hdGlvblBsdWdpbjooKT0+Q1llLElzRXZlblBsdWdpbjooKT0+U1llLElzT2RkUGx1Z2luOigpPT5FWWUsTG9nYXJpdGhtUGx1Z2luOigpPT5NWWUsTG9va3VwUGx1Z2luOigpPT5LWWUsTWF0aENvbnN0YW50c1BsdWdpbjooKT0+VFllLE1hdGhQbHVnaW46'@; put 'KCk9PmhaZSxNYXRyaXhQbHVnaW46KCk9PkFZZSxNZWRpYW5QbHVnaW46KCk9PmtZZSxNb2R1bG9QbHVnaW46KCk9PlJZZSxOdW1lcmljQWdncmVnYXRpb25QbHVnaW46KCk9PlNtZSxQb3dlclBsdWdpbjooKT0+SVllLFJhZGlhbnNQbHVnaW46KCk9PkRZZSxSYWRpeENvbnZlcnNpb25QbHVn'@; put 'aW46KCk9PkZZZSxSYW5kb21QbHVnaW46KCk9PlZZZSxSb21hblBsdWdpbjooKT0+WFllLFJvdW5kaW5nUGx1Z2luOigpPT5FbWUsU2ltcGxlQXJpdGhtZXJ0aWNQbHVnaW46KCk9PlFZZSxTcXJ0UGx1Z2luOigpPT5VWWUsU3RhdGlzdGljYWxBZ2dyZWdhdGlvblBsdWdpbjooKT0+UG1lLFN0'@; put 'YXRpc3RpY2FsUGx1Z2luOigpPT5GbWUsU3VtcHJvZFBsdWdpbjooKT0+R1llLFRleHRQbHVnaW46KCk9PiRZZSxUcmlnb25vbWV0cnlQbHVnaW46KCk9PnFZZX0pO2NvbnN0IG1lPVN5bWJvbCgiTm90Rm91bmQiKTtmdW5jdGlvbiBJZShuKXtyZXR1cm4gbj09PW1lfHwiXHUwMjc1Tm90Rm91'@; put 'bmQiPT09bj8ubmFtZX1FcnJvcjtsZXQga2U9bnVsbCxxZT0hMSxYPTE7Y29uc3QgYj1TeW1ib2woIlNJR05BTCIpO2Z1bmN0aW9uIGsobil7Y29uc3QgZT1rZTtyZXR1cm4ga2U9bixlfWNvbnN0IEc9e3ZlcnNpb246MCxsYXN0Q2xlYW5FcG9jaDowLGRpcnR5OiExLHByb2R1Y2Vyczp2b2lk'@; put 'IDAscHJvZHVjZXJzVGFpbDp2b2lkIDAsY29uc3VtZXJzOnZvaWQgMCxjb25zdW1lcnNUYWlsOnZvaWQgMCxyZWNvbXB1dGluZzohMSxjb25zdW1lckFsbG93U2lnbmFsV3JpdGVzOiExLGNvbnN1bWVySXNBbHdheXNMaXZlOiExLGtpbmQ6InVua25vd24iLHByb2R1Y2VyTXVzdFJlY29tcHV0'@; put 'ZTooKT0+ITEscHJvZHVjZXJSZWNvbXB1dGVWYWx1ZTooKT0+e30sY29uc3VtZXJNYXJrZWREaXJ0eTooKT0+e30sY29uc3VtZXJPblNpZ25hbFJlYWQ6KCk9Pnt9fTtmdW5jdGlvbiBEKG4pe2lmKHFlKXRocm93IG5ldyBFcnJvcigiIik7aWYobnVsbD09PWtlKXJldHVybjtrZS5jb25zdW1l'@; put 'ck9uU2lnbmFsUmVhZChuKTtjb25zdCBlPWtlLnByb2R1Y2Vyc1RhaWw7aWYodm9pZCAwIT09ZSYmZS5wcm9kdWNlcj09PW4pcmV0dXJuO2xldCB0O2NvbnN0IHI9a2UucmVjb21wdXRpbmc7aWYociYmKHQ9dm9pZCAwIT09ZT9lLm5leHRQcm9kdWNlcjprZS5wcm9kdWNlcnMsdm9pZCAwIT09'@; put 'dCYmdC5wcm9kdWNlcj09PW4pKXJldHVybiBrZS5wcm9kdWNlcnNUYWlsPXQsdm9pZCh0Lmxhc3RSZWFkVmVyc2lvbj1uLnZlcnNpb24pO2NvbnN0IGk9bi5jb25zdW1lcnNUYWlsO2lmKHZvaWQgMCE9PWkmJmkuY29uc3VtZXI9PT1rZSYmKCFyfHxmdW5jdGlvbiBjZShuLGUpe2NvbnN0IHQ9'@; put 'ZS5wcm9kdWNlcnNUYWlsO2lmKHZvaWQgMCE9PXQpe2xldCByPWUucHJvZHVjZXJzO2Rve2lmKHI9PT1uKXJldHVybiEwO2lmKHI9PT10KWJyZWFrO3I9ci5uZXh0UHJvZHVjZXJ9d2hpbGUodm9pZCAwIT09cil9cmV0dXJuITF9KGksa2UpKSlyZXR1cm47Y29uc3Qgbz1EZShrZSksYT17cHJv'@; put 'ZHVjZXI6bixjb25zdW1lcjprZSxuZXh0UHJvZHVjZXI6dCxwcmV2Q29uc3VtZXI6aSxsYXN0UmVhZFZlcnNpb246bi52ZXJzaW9uLG5leHRDb25zdW1lcjp2b2lkIDB9O2tlLnByb2R1Y2Vyc1RhaWw9YSx2b2lkIDAhPT1lP2UubmV4dFByb2R1Y2VyPWE6a2UucHJvZHVjZXJzPWEsbyYmamUo'@; put 'bixhKX1mdW5jdGlvbiBJKG4pe2lmKCghRGUobil8fG4uZGlydHkpJiYobi5kaXJ0eXx8bi5sYXN0Q2xlYW5FcG9jaCE9PVgpKXtpZighbi5wcm9kdWNlck11c3RSZWNvbXB1dGUobikmJiFhZShuKSlyZXR1cm4gdm9pZCBQZShuKTtuLnByb2R1Y2VyUmVjb21wdXRlVmFsdWUobiksUGUobil9'@; put 'fWZ1bmN0aW9uIHVlKG4pe2lmKHZvaWQgMD09PW4uY29uc3VtZXJzKXJldHVybjtjb25zdCBlPXFlO3FlPSEwO3RyeXtmb3IobGV0IHQ9bi5jb25zdW1lcnM7dm9pZCAwIT09dDt0PXQubmV4dENvbnN1bWVyKXtjb25zdCByPXQuY29uc3VtZXI7ci5kaXJ0eXx8X2Uocil9fWZpbmFsbHl7cWU9'@; put 'ZX19ZnVuY3Rpb24gbmUoKXtyZXR1cm4hMSE9PWtlPy5jb25zdW1lckFsbG93U2lnbmFsV3JpdGVzfWZ1bmN0aW9uIF9lKG4pe24uZGlydHk9ITAsdWUobiksbi5jb25zdW1lck1hcmtlZERpcnR5Py4obil9ZnVuY3Rpb24gUGUobil7bi5kaXJ0eT0hMSxuLmxhc3RDbGVhbkVwb2NoPVh9ZnVu'@; put 'Y3Rpb24gb3Qobil7cmV0dXJuIG4mJmZ1bmN0aW9uIGx0KG4pe24ucHJvZHVjZXJzVGFpbD12b2lkIDAsbi5yZWNvbXB1dGluZz0hMH0obiksayhuKX1mdW5jdGlvbiBkdChuLGUpe2soZSksbiYmZnVuY3Rpb24gUmUobil7bi5yZWNvbXB1dGluZz0hMTtjb25zdCBlPW4ucHJvZHVjZXJzVGFp'@; put 'bDtsZXQgdD12b2lkIDAhPT1lP2UubmV4dFByb2R1Y2VyOm4ucHJvZHVjZXJzO2lmKHZvaWQgMCE9PXQpe2lmKERlKG4pKWRve3Q9QWUodCl9d2hpbGUodm9pZCAwIT09dCk7dm9pZCAwIT09ZT9lLm5leHRQcm9kdWNlcj12b2lkIDA6bi5wcm9kdWNlcnM9dm9pZCAwfX0obil9ZnVuY3Rpb24g'@; put 'YWUobil7Zm9yKGxldCBlPW4ucHJvZHVjZXJzO3ZvaWQgMCE9PWU7ZT1lLm5leHRQcm9kdWNlcil7Y29uc3QgdD1lLnByb2R1Y2VyLHI9ZS5sYXN0UmVhZFZlcnNpb247aWYociE9PXQudmVyc2lvbnx8KEkodCksciE9PXQudmVyc2lvbikpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24geGUo'@; put 'bil7aWYoRGUobikpe2xldCBlPW4ucHJvZHVjZXJzO2Zvcig7dm9pZCAwIT09ZTspZT1BZShlKX1uLnByb2R1Y2Vycz12b2lkIDAsbi5wcm9kdWNlcnNUYWlsPXZvaWQgMCxuLmNvbnN1bWVycz12b2lkIDAsbi5jb25zdW1lcnNUYWlsPXZvaWQgMH1mdW5jdGlvbiBqZShuLGUpe2NvbnN0IHQ9'@; put 'bi5jb25zdW1lcnNUYWlsLHI9RGUobik7aWYodm9pZCAwIT09dD8oZS5uZXh0Q29uc3VtZXI9dC5uZXh0Q29uc3VtZXIsdC5uZXh0Q29uc3VtZXI9ZSk6KGUubmV4dENvbnN1bWVyPXZvaWQgMCxuLmNvbnN1bWVycz1lKSxlLnByZXZDb25zdW1lcj10LG4uY29uc3VtZXJzVGFpbD1lLCFyKWZv'@; put 'cihsZXQgaT1uLnByb2R1Y2Vyczt2b2lkIDAhPT1pO2k9aS5uZXh0UHJvZHVjZXIpamUoaS5wcm9kdWNlcixpKX1mdW5jdGlvbiBBZShuKXtjb25zdCBlPW4ucHJvZHVjZXIsdD1uLm5leHRQcm9kdWNlcixyPW4ubmV4dENvbnN1bWVyLGk9bi5wcmV2Q29uc3VtZXI7aWYobi5uZXh0Q29uc3Vt'@; put 'ZXI9dm9pZCAwLG4ucHJldkNvbnN1bWVyPXZvaWQgMCx2b2lkIDAhPT1yP3IucHJldkNvbnN1bWVyPWk6ZS5jb25zdW1lcnNUYWlsPWksdm9pZCAwIT09aSlpLm5leHRDb25zdW1lcj1yO2Vsc2UgaWYoZS5jb25zdW1lcnM9ciwhRGUoZSkpe2xldCBvPWUucHJvZHVjZXJzO2Zvcig7dm9pZCAw'@; put 'IT09bzspbz1BZShvKX1yZXR1cm4gdH1mdW5jdGlvbiBEZShuKXtyZXR1cm4gbi5jb25zdW1lcklzQWx3YXlzTGl2ZXx8dm9pZCAwIT09bi5jb25zdW1lcnN9ZnVuY3Rpb24gaGUobixlKXtyZXR1cm4gT2JqZWN0LmlzKG4sZSl9Y29uc3QgSmU9U3ltYm9sKCJVTlNFVCIpLHR0PVN5bWJvbCgi'@; put 'Q09NUFVUSU5HIiksS2U9U3ltYm9sKCJFUlJPUkVEIiksJHQ9ey4uLkcsdmFsdWU6SmUsZGlydHk6ITAsZXJyb3I6bnVsbCxlcXVhbDpoZSxraW5kOiJjb21wdXRlZCIscHJvZHVjZXJNdXN0UmVjb21wdXRlOm49Pm4udmFsdWU9PT1KZXx8bi52YWx1ZT09PXR0LHByb2R1Y2VyUmVjb21wdXRl'@; put 'VmFsdWUobil7aWYobi52YWx1ZT09PXR0KXRocm93IG5ldyBFcnJvcigiIik7Y29uc3QgZT1uLnZhbHVlO24udmFsdWU9dHQ7Y29uc3QgdD1vdChuKTtsZXQgcixpPSExO3RyeXtyPW4uY29tcHV0YXRpb24oKSxrKG51bGwpLGk9ZSE9PUplJiZlIT09S2UmJnIhPT1LZSYmbi5lcXVhbChlLHIp'@; put 'fWNhdGNoKG8pe3I9S2Usbi5lcnJvcj1vfWZpbmFsbHl7ZHQobix0KX1pP24udmFsdWU9ZToobi52YWx1ZT1yLG4udmVyc2lvbisrKX19O2xldCBMdD1mdW5jdGlvbiBSdCgpe3Rocm93IG5ldyBFcnJvcn07ZnVuY3Rpb24gR3Qobil7THQobil9ZnVuY3Rpb24gTHIobixlKXtjb25zdCB0PU9i'@; put 'amVjdC5jcmVhdGUoT28pO3QudmFsdWU9bix2b2lkIDAhPT1lJiYodC5lcXVhbD1lKTtjb25zdCByPSgpPT5mdW5jdGlvbiBPbihuKXtyZXR1cm4gRChuKSxuLnZhbHVlfSh0KTtyZXR1cm4gcltiXT10LFtyLGE9PlFyKHQsYSksYT0+ZnVuY3Rpb24gdHIobixlKXtuZSgpfHxHdChuKSxRcihu'@; put 'LGUobi52YWx1ZSkpfSh0LGEpXX1mdW5jdGlvbiBRcihuLGUpe25lKCl8fEd0KG4pLG4uZXF1YWwobi52YWx1ZSxlKXx8KG4udmFsdWU9ZSxmdW5jdGlvbiB1cihuKXtuLnZlcnNpb24rKyxmdW5jdGlvbiBwKCl7WCsrfSgpLHVlKG4pfShuKSl9Y29uc3QgT289ey4uLkcsZXF1YWw6aGUsdmFs'@; put 'dWU6dm9pZCAwLGtpbmQ6InNpZ25hbCJ9O2Z1bmN0aW9uIFpuKG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBufWZ1bmN0aW9uIFNuKG4pe2NvbnN0IHQ9bihyPT57RXJyb3IuY2FsbChyKSxyLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrfSk7cmV0dXJuIHQucHJvdG90eXBlPU9iamVjdC5j'@; put 'cmVhdGUoRXJyb3IucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHR9Y29uc3QgeHI9U24obj0+ZnVuY3Rpb24odCl7bih0aGlzKSx0aGlzLm1lc3NhZ2U9dD9gJHt0Lmxlbmd0aH0gZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbiR7dC5tYXAoKHIs'@; put 'aSk9PmAke2krMX0pICR7ci50b1N0cmluZygpfWApLmpvaW4oIlxuICAiKX1gOiIiLHRoaXMubmFtZT0iVW5zdWJzY3JpcHRpb25FcnJvciIsdGhpcy5lcnJvcnM9dH0pO2Z1bmN0aW9uIFR0KG4sZSl7aWYobil7Y29uc3QgdD1uLmluZGV4T2YoZSk7MDw9dCYmbi5zcGxpY2UodCwxKX19Y2xh'@; put 'c3MgQXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5pbml0aWFsVGVhcmRvd249ZSx0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnRhZ2U9bnVsbCx0aGlzLl9maW5hbGl6ZXJzPW51bGx9dW5zdWJzY3JpYmUoKXtsZXQgZTtpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO2NvbnN0e19wYXJl'@; put 'bnRhZ2U6dH09dGhpcztpZih0KWlmKHRoaXMuX3BhcmVudGFnZT1udWxsLEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IG8gb2YgdClvLnJlbW92ZSh0aGlzKTtlbHNlIHQucmVtb3ZlKHRoaXMpO2NvbnN0e2luaXRpYWxUZWFyZG93bjpyfT10aGlzO2lmKFpuKHIpKXRyeXtyKCl9Y2F0Y2go'@; put 'byl7ZT1vIGluc3RhbmNlb2YgeHI/by5lcnJvcnM6W29dfWNvbnN0e19maW5hbGl6ZXJzOml9PXRoaXM7aWYoaSl7dGhpcy5fZmluYWxpemVycz1udWxsO2Zvcihjb25zdCBvIG9mIGkpdHJ5e05uKG8pfWNhdGNoKGEpe2U9ZT8/W10sYSBpbnN0YW5jZW9mIHhyP2U9Wy4uLmUsLi4uYS5lcnJv'@; put 'cnNdOmUucHVzaChhKX19aWYoZSl0aHJvdyBuZXcgeHIoZSl9fWFkZChlKXt2YXIgdDtpZihlJiZlIT09dGhpcylpZih0aGlzLmNsb3NlZClObihlKTtlbHNle2lmKGUgaW5zdGFuY2VvZiBBcil7aWYoZS5jbG9zZWR8fGUuX2hhc1BhcmVudCh0aGlzKSlyZXR1cm47ZS5fYWRkUGFyZW50KHRo'@; put 'aXMpfSh0aGlzLl9maW5hbGl6ZXJzPW51bGwhPT0odD10aGlzLl9maW5hbGl6ZXJzKSYmdm9pZCAwIT09dD90OltdKS5wdXNoKGUpfX1faGFzUGFyZW50KGUpe2NvbnN0e19wYXJlbnRhZ2U6dH09dGhpcztyZXR1cm4gdD09PWV8fEFycmF5LmlzQXJyYXkodCkmJnQuaW5jbHVkZXMoZSl9X2Fk'@; put 'ZFBhcmVudChlKXtjb25zdHtfcGFyZW50YWdlOnR9PXRoaXM7dGhpcy5fcGFyZW50YWdlPUFycmF5LmlzQXJyYXkodCk/KHQucHVzaChlKSx0KTp0P1t0LGVdOmV9X3JlbW92ZVBhcmVudChlKXtjb25zdHtfcGFyZW50YWdlOnR9PXRoaXM7dD09PWU/dGhpcy5fcGFyZW50YWdlPW51bGw6QXJy'@; put 'YXkuaXNBcnJheSh0KSYmVHQodCxlKX1yZW1vdmUoZSl7Y29uc3R7X2ZpbmFsaXplcnM6dH09dGhpczt0JiZUdCh0LGUpLGUgaW5zdGFuY2VvZiBBciYmZS5fcmVtb3ZlUGFyZW50KHRoaXMpfX1Bci5FTVBUWT0oKCk9Pntjb25zdCBuPW5ldyBBcjtyZXR1cm4gbi5jbG9zZWQ9ITAsbn0pKCk7'@; put 'Y29uc3QgX249QXIuRU1QVFk7ZnVuY3Rpb24gWnQobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBBcnx8biYmImNsb3NlZCJpbiBuJiZabihuLnJlbW92ZSkmJlpuKG4uYWRkKSYmWm4obi51bnN1YnNjcmliZSl9ZnVuY3Rpb24gTm4obil7Wm4obik/bigpOm4udW5zdWJzY3JpYmUoKX1jb25zdCBw'@; put 'dD17b25VbmhhbmRsZWRFcnJvcjpudWxsLG9uU3RvcHBlZE5vdGlmaWNhdGlvbjpudWxsLFByb21pc2U6dm9pZCAwLHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc6ITEsdXNlRGVwcmVjYXRlZE5leHRDb250ZXh0OiExfSxwbj17c2V0VGltZW91dChuLGUsLi4udCl7Y29u'@; put 'c3R7ZGVsZWdhdGU6cn09cG47cmV0dXJuIHI/LnNldFRpbWVvdXQ/ci5zZXRUaW1lb3V0KG4sZSwuLi50KTpzZXRUaW1lb3V0KG4sZSwuLi50KX0sY2xlYXJUaW1lb3V0KG4pe2NvbnN0e2RlbGVnYXRlOmV9PXBuO3JldHVybihlPy5jbGVhclRpbWVvdXR8fGNsZWFyVGltZW91dCkobil9LGRl'@; put 'bGVnYXRlOnZvaWQgMH07ZnVuY3Rpb24gTWkobil7cG4uc2V0VGltZW91dCgoKT0+e2NvbnN0e29uVW5oYW5kbGVkRXJyb3I6ZX09cHQ7aWYoIWUpdGhyb3cgbjtlKG4pfSl9ZnVuY3Rpb24gR2UoKXt9Y29uc3QgVXQ9QnQoIkMiLHZvaWQgMCx2b2lkIDApO2Z1bmN0aW9uIEJ0KG4sZSx0KXty'@; put 'ZXR1cm57a2luZDpuLHZhbHVlOmUsZXJyb3I6dH19bGV0IHpuPW51bGw7ZnVuY3Rpb24gR24obil7aWYocHQudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl7Y29uc3QgZT0hem47aWYoZSYmKHpuPXtlcnJvclRocm93bjohMSxlcnJvcjpudWxsfSksbigpLGUpe2NvbnN0'@; put 'e2Vycm9yVGhyb3duOnQsZXJyb3I6cn09em47aWYoem49bnVsbCx0KXRocm93IHJ9fWVsc2UgbigpfWNsYXNzIHZpIGV4dGVuZHMgQXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmlzU3RvcHBlZD0hMSxlPyh0aGlzLmRlc3RpbmF0aW9uPWUsWnQoZSkmJmUuYWRkKHRoaXMpKTp0aGlz'@; put 'LmRlc3RpbmF0aW9uPVhyfXN0YXRpYyBjcmVhdGUoZSx0LHIpe3JldHVybiBuZXcgdm4oZSx0LHIpfW5leHQoZSl7dGhpcy5pc1N0b3BwZWQ/am8oZnVuY3Rpb24geHQobil7cmV0dXJuIEJ0KCJOIixuLHZvaWQgMCl9KGUpLHRoaXMpOnRoaXMuX25leHQoZSl9ZXJyb3IoZSl7dGhpcy5pc1N0'@; put 'b3BwZWQ/am8oZnVuY3Rpb24gdnIobil7cmV0dXJuIEJ0KCJFIix2b2lkIDAsbil9KGUpLHRoaXMpOih0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9lcnJvcihlKSl9Y29tcGxldGUoKXt0aGlzLmlzU3RvcHBlZD9qbyhVdCx0aGlzKToodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fY29tcGxldGUo'@; put 'KSl9dW5zdWJzY3JpYmUoKXt0aGlzLmNsb3NlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHN1cGVyLnVuc3Vic2NyaWJlKCksdGhpcy5kZXN0aW5hdGlvbj1udWxsKX1fbmV4dChlKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9X2Vycm9yKGUpe3RyeXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGUp'@; put 'fWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX1fY29tcGxldGUoKXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX19Y29uc3QgcnI9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7ZnVuY3Rpb24gaHIobixlKXtyZXR1cm4gcnIuY2Fs'@; put 'bChuLGUpfWNsYXNzIHBve2NvbnN0cnVjdG9yKGUpe3RoaXMucGFydGlhbE9ic2VydmVyPWV9bmV4dChlKXtjb25zdHtwYXJ0aWFsT2JzZXJ2ZXI6dH09dGhpcztpZih0Lm5leHQpdHJ5e3QubmV4dChlKX1jYXRjaChyKXtCbihyKX19ZXJyb3IoZSl7Y29uc3R7cGFydGlhbE9ic2VydmVyOnR9'@; put 'PXRoaXM7aWYodC5lcnJvcil0cnl7dC5lcnJvcihlKX1jYXRjaChyKXtCbihyKX1lbHNlIEJuKGUpfWNvbXBsZXRlKCl7Y29uc3R7cGFydGlhbE9ic2VydmVyOmV9PXRoaXM7aWYoZS5jb21wbGV0ZSl0cnl7ZS5jb21wbGV0ZSgpfWNhdGNoKHQpe0JuKHQpfX19Y2xhc3Mgdm4gZXh0ZW5kcyB2'@; put 'aXtjb25zdHJ1Y3RvcihlLHQscil7bGV0IGk7aWYoc3VwZXIoKSxabihlKXx8IWUpaT17bmV4dDplPz92b2lkIDAsZXJyb3I6dD8/dm9pZCAwLGNvbXBsZXRlOnI/P3ZvaWQgMH07ZWxzZXtsZXQgbzt0aGlzJiZwdC51c2VEZXByZWNhdGVkTmV4dENvbnRleHQ/KG89T2JqZWN0LmNyZWF0ZShl'@; put 'KSxvLnVuc3Vic2NyaWJlPSgpPT50aGlzLnVuc3Vic2NyaWJlKCksaT17bmV4dDplLm5leHQmJmhyKGUubmV4dCxvKSxlcnJvcjplLmVycm9yJiZocihlLmVycm9yLG8pLGNvbXBsZXRlOmUuY29tcGxldGUmJmhyKGUuY29tcGxldGUsbyl9KTppPWV9dGhpcy5kZXN0aW5hdGlvbj1uZXcgcG8o'@; put 'aSl9fWZ1bmN0aW9uIEJuKG4pe3B0LnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc/ZnVuY3Rpb24geW4obil7cHQudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyYmem4mJih6bi5lcnJvclRocm93bj0hMCx6bi5lcnJvcj1uKX0obik6TWkobil9ZnVu'@; put 'Y3Rpb24gam8obixlKXtjb25zdHtvblN0b3BwZWROb3RpZmljYXRpb246dH09cHQ7dCYmcG4uc2V0VGltZW91dCgoKT0+dChuLGUpKX1jb25zdCBYcj17Y2xvc2VkOiEwLG5leHQ6R2UsZXJyb3I6ZnVuY3Rpb24gamEobil7dGhyb3cgbn0sY29tcGxldGU6R2V9LGVhPSJmdW5jdGlvbiI9PXR5'@; put 'cGVvZiBTeW1ib2wmJlN5bWJvbC5vYnNlcnZhYmxlfHwiQEBvYnNlcnZhYmxlIjtmdW5jdGlvbiByYShuKXtyZXR1cm4gbn1mdW5jdGlvbiBDaShuKXtyZXR1cm4gMD09PW4ubGVuZ3RoP3JhOjE9PT1uLmxlbmd0aD9uWzBdOmZ1bmN0aW9uKHQpe3JldHVybiBuLnJlZHVjZSgocixpKT0+aShy'@; put 'KSx0KX19bGV0IGhvPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dCYmKHRoaXMuX3N1YnNjcmliZT10KX1saWZ0KHQpe2NvbnN0IHI9bmV3IG47cmV0dXJuIHIuc291cmNlPXRoaXMsci5vcGVyYXRvcj10LHJ9c3Vic2NyaWJlKHQscixpKXtjb25zdCBvPWZ1bmN0aW9uIEJpKG4pe3Jl'@; put 'dHVybiBuJiZuIGluc3RhbmNlb2Ygdml8fGZ1bmN0aW9uIGtzKG4pe3JldHVybiBuJiZabihuLm5leHQpJiZabihuLmVycm9yKSYmWm4obi5jb21wbGV0ZSl9KG4pJiZadChuKX0odCk/dDpuZXcgdm4odCxyLGkpO3JldHVybiBHbigoKT0+e2NvbnN0e29wZXJhdG9yOmEsc291cmNlOmx9PXRo'@; put 'aXM7by5hZGQoYT9hLmNhbGwobyxsKTpsP3RoaXMuX3N1YnNjcmliZShvKTp0aGlzLl90cnlTdWJzY3JpYmUobykpfSksb31fdHJ5U3Vic2NyaWJlKHQpe3RyeXtyZXR1cm4gdGhpcy5fc3Vic2NyaWJlKHQpfWNhdGNoKHIpe3QuZXJyb3Iocil9fWZvckVhY2godCxyKXtyZXR1cm4gbmV3KHI9'@; put 'TWEocikpKChpLG8pPT57Y29uc3QgYT1uZXcgdm4oe25leHQ6bD0+e3RyeXt0KGwpfWNhdGNoKHUpe28odSksYS51bnN1YnNjcmliZSgpfX0sZXJyb3I6byxjb21wbGV0ZTppfSk7dGhpcy5zdWJzY3JpYmUoYSl9KX1fc3Vic2NyaWJlKHQpe3ZhciByO3JldHVybiBudWxsPT09KHI9dGhpcy5z'@; put 'b3VyY2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN1YnNjcmliZSh0KX1bZWFdKCl7cmV0dXJuIHRoaXN9cGlwZSguLi50KXtyZXR1cm4gQ2kodCkodGhpcyl9dG9Qcm9taXNlKHQpe3JldHVybiBuZXcodD1NYSh0KSkoKHIsaSk9PntsZXQgbzt0aGlzLnN1YnNjcmliZShhPT5vPWEsYT0+aShh'@; put 'KSwoKT0+cihvKSl9KX19cmV0dXJuIG4uY3JlYXRlPWU9Pm5ldyBuKGUpLG59KSgpO2Z1bmN0aW9uIE1hKG4pe3ZhciBlO3JldHVybiBudWxsIT09KGU9bj8/cHQuUHJvbWlzZSkmJnZvaWQgMCE9PWU/ZTpQcm9taXNlfWNvbnN0IHRhPVNuKG49PmZ1bmN0aW9uKCl7bih0aGlzKSx0aGlzLm5h'@; put 'bWU9Ik9iamVjdFVuc3Vic2NyaWJlZEVycm9yIix0aGlzLm1lc3NhZ2U9Im9iamVjdCB1bnN1YnNjcmliZWQifSk7bGV0IE1yPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBob3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5jbG9zZWQ9ITEsdGhpcy5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsdGhp'@; put 'cy5vYnNlcnZlcnM9W10sdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0aGlzLnRocm93bkVycm9yPW51bGx9bGlmdCh0KXtjb25zdCByPW5ldyBGcyh0aGlzLHRoaXMpO3JldHVybiByLm9wZXJhdG9yPXQscn1fdGhyb3dJZkNsb3NlZCgpe2lmKHRoaXMuY2xvc2VkKXRocm93'@; put 'IG5ldyB0YX1uZXh0KHQpe0duKCgpPT57aWYodGhpcy5fdGhyb3dJZkNsb3NlZCgpLCF0aGlzLmlzU3RvcHBlZCl7dGhpcy5jdXJyZW50T2JzZXJ2ZXJzfHwodGhpcy5jdXJyZW50T2JzZXJ2ZXJzPUFycmF5LmZyb20odGhpcy5vYnNlcnZlcnMpKTtmb3IoY29uc3QgciBvZiB0aGlzLmN1cnJl'@; put 'bnRPYnNlcnZlcnMpci5uZXh0KHQpfX0pfWVycm9yKHQpe0duKCgpPT57aWYodGhpcy5fdGhyb3dJZkNsb3NlZCgpLCF0aGlzLmlzU3RvcHBlZCl7dGhpcy5oYXNFcnJvcj10aGlzLmlzU3RvcHBlZD0hMCx0aGlzLnRocm93bkVycm9yPXQ7Y29uc3R7b2JzZXJ2ZXJzOnJ9PXRoaXM7Zm9yKDty'@; put 'Lmxlbmd0aDspci5zaGlmdCgpLmVycm9yKHQpfX0pfWNvbXBsZXRlKCl7R24oKCk9PntpZih0aGlzLl90aHJvd0lmQ2xvc2VkKCksIXRoaXMuaXNTdG9wcGVkKXt0aGlzLmlzU3RvcHBlZD0hMDtjb25zdHtvYnNlcnZlcnM6dH09dGhpcztmb3IoO3QubGVuZ3RoOyl0LnNoaWZ0KCkuY29tcGxl'@; put 'dGUoKX19KX11bnN1YnNjcmliZSgpe3RoaXMuaXNTdG9wcGVkPXRoaXMuY2xvc2VkPSEwLHRoaXMub2JzZXJ2ZXJzPXRoaXMuY3VycmVudE9ic2VydmVycz1udWxsfWdldCBvYnNlcnZlZCgpe3ZhciB0O3JldHVybihudWxsPT09KHQ9dGhpcy5vYnNlcnZlcnMpfHx2b2lkIDA9PT10P3ZvaWQg'@; put 'MDp0Lmxlbmd0aCk+MH1fdHJ5U3Vic2NyaWJlKHQpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksc3VwZXIuX3RyeVN1YnNjcmliZSh0KX1fc3Vic2NyaWJlKHQpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyh0KSx0aGlzLl9p'@; put 'bm5lclN1YnNjcmliZSh0KX1faW5uZXJTdWJzY3JpYmUodCl7Y29uc3R7aGFzRXJyb3I6cixpc1N0b3BwZWQ6aSxvYnNlcnZlcnM6b309dGhpcztyZXR1cm4gcnx8aT9fbjoodGhpcy5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsby5wdXNoKHQpLG5ldyBBcigoKT0+e3RoaXMuY3VycmVudE9ic2Vy'@; put 'dmVycz1udWxsLFR0KG8sdCl9KSl9X2NoZWNrRmluYWxpemVkU3RhdHVzZXModCl7Y29uc3R7aGFzRXJyb3I6cix0aHJvd25FcnJvcjppLGlzU3RvcHBlZDpvfT10aGlzO3I/dC5lcnJvcihpKTpvJiZ0LmNvbXBsZXRlKCl9YXNPYnNlcnZhYmxlKCl7Y29uc3QgdD1uZXcgaG87cmV0dXJuIHQu'@; put 'c291cmNlPXRoaXMsdH19cmV0dXJuIG4uY3JlYXRlPShlLHQpPT5uZXcgRnMoZSx0KSxufSkoKTtjbGFzcyBGcyBleHRlbmRzIE1ye2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmRlc3RpbmF0aW9uPWUsdGhpcy5zb3VyY2U9dH1uZXh0KGUpe3ZhciB0LHI7bnVsbD09PShyPW51bGw9'@; put 'PT0odD10aGlzLmRlc3RpbmF0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5uZXh0KXx8dm9pZCAwPT09cnx8ci5jYWxsKHQsZSl9ZXJyb3IoZSl7dmFyIHQscjtudWxsPT09KHI9bnVsbD09PSh0PXRoaXMuZGVzdGluYXRpb24pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmVycm9yKXx8dm9pZCAw'@; put 'PT09cnx8ci5jYWxsKHQsZSl9Y29tcGxldGUoKXt2YXIgZSx0O251bGw9PT0odD1udWxsPT09KGU9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWU/dm9pZCAwOmUuY29tcGxldGUpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSl9X3N1YnNjcmliZShlKXt2YXIgdCxyO3JldHVybiBudWxsIT09'@; put 'KHI9bnVsbD09PSh0PXRoaXMuc291cmNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdWJzY3JpYmUoZSkpJiZ2b2lkIDAhPT1yP3I6X259fWNsYXNzICRpIGV4dGVuZHMgTXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl92YWx1ZT1lfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLmdldFZh'@; put 'bHVlKCl9X3N1YnNjcmliZShlKXtjb25zdCB0PXN1cGVyLl9zdWJzY3JpYmUoZSk7cmV0dXJuIXQuY2xvc2VkJiZlLm5leHQodGhpcy5fdmFsdWUpLHR9Z2V0VmFsdWUoKXtjb25zdHtoYXNFcnJvcjplLHRocm93bkVycm9yOnQsX3ZhbHVlOnJ9PXRoaXM7aWYoZSl0aHJvdyB0O3JldHVybiB0'@; put 'aGlzLl90aHJvd0lmQ2xvc2VkKCkscn1uZXh0KGUpe3N1cGVyLm5leHQodGhpcy5fdmFsdWU9ZSl9fWNsYXNzIF9ze2Z1bGw7bWFqb3I7bWlub3I7cGF0Y2g7Y29uc3RydWN0b3IoZSl7dGhpcy5mdWxsPWU7Y29uc3QgdD1lLnNwbGl0KCIuIik7dGhpcy5tYWpvcj10WzBdLHRoaXMubWlub3I9'@; put 'dFsxXSx0aGlzLnBhdGNoPXQuc2xpY2UoMikuam9pbigiLiIpfX1jb25zdCBqcz1uZXcgX3MoIjIwLjMuMzAiKSxUaT0iaHR0cHM6Ly9hbmd1bGFyLmRldi9iZXN0LXByYWN0aWNlcy9zZWN1cml0eSNwcmV2ZW50aW5nLWNyb3NzLXNpdGUtc2NyaXB0aW5nLXhzcyI7Y2xhc3MgV24gZXh0ZW5k'@; put 'cyBFcnJvcntjb2RlO2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZGMoZSx0KSksdGhpcy5jb2RlPWV9fWZ1bmN0aW9uIGRjKG4sZSl7cmV0dXJuYCR7ZnVuY3Rpb24gUWgobil7cmV0dXJuYE5HMCR7TWF0aC5hYnMobil9YH0obil9JHtlPyI6ICIrZToiIn1gfWNvbnN0IElsPWdsb2JhbFRoaXM7'@; put 'ZnVuY3Rpb24gVXMobil7Zm9yKGxldCBlIGluIG4paWYobltlXT09PVVzKXJldHVybiBlO3Rocm93IEVycm9yKCIiKX1mdW5jdGlvbiBzcChuLGUpe2Zvcihjb25zdCB0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmIW4uaGFzT3duUHJvcGVydHkodCkmJihuW3RdPWVbdF0pfWZ1bmN0aW9u'@; put 'IFJzKG4pe2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gbjtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybmBbJHtuLm1hcChScykuam9pbigiLCAiKX1dYDtpZihudWxsPT1uKXJldHVybiIiK247Y29uc3QgZT1uLm92ZXJyaWRkZW5OYW1lfHxuLm5hbWU7aWYoZSlyZXR1cm5gJHtlfWA7'@; put 'Y29uc3QgdD1uLnRvU3RyaW5nKCk7aWYobnVsbD09dClyZXR1cm4iIit0O2NvbnN0IHI9dC5pbmRleE9mKCJcbiIpO3JldHVybiByPj0wP3Quc2xpY2UoMCxyKTp0fWZ1bmN0aW9uIEwwKG4sZSl7cmV0dXJuIG4/ZT9gJHtufSAke2V9YDpuOmV8fCIifWNvbnN0IHlkPVVzKHtfX2ZvcndhcmRf'@; put 'cmVmX186VXN9KTtmdW5jdGlvbiBVbyhuKXtyZXR1cm4gbi5fX2ZvcndhcmRfcmVmX189VW8sbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBScyh0aGlzKCkpfSxufWZ1bmN0aW9uIGZhKG4pe3JldHVybiBWcihuKT9uKCk6bn1mdW5jdGlvbiBWcihuKXtyZXR1cm4iZnVuY3Rpb24iPT10'@; put 'eXBlb2YgbiYmbi5oYXNPd25Qcm9wZXJ0eSh5ZCkmJm4uX19mb3J3YXJkX3JlZl9fPT09VW99ZnVuY3Rpb24gSm4obil7cmV0dXJue3Rva2VuOm4udG9rZW4scHJvdmlkZWRJbjpuLnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTpuLmZhY3RvcnksdmFsdWU6dm9pZCAwfX1mdW5jdGlvbiBtaShu'@; put 'KXtyZXR1cm57cHJvdmlkZXJzOm4ucHJvdmlkZXJzfHxbXSxpbXBvcnRzOm4uaW1wb3J0c3x8W119fWZ1bmN0aW9uIGV1KG4pe3JldHVybiBmdW5jdGlvbiBjbihuLGUpe3JldHVybiBuLmhhc093blByb3BlcnR5KGUpJiZuW2VdfHxudWxsfShuLHdvKX1mdW5jdGlvbiBnaShuKXtyZXR1cm4g'@; put 'biYmbi5oYXNPd25Qcm9wZXJ0eShscyk/bltsc106bnVsbH1jb25zdCB3bz1Vcyh7XHUwMjc1cHJvdjpVc30pLGxzPVVzKHtcdTAyNzVpbmo6VXN9KTtjbGFzcyBFcntfZGVzYztuZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iO1x1MDI3NXByb3Y7Y29uc3RydWN0b3IoZSx0KXt0aGlz'@; put 'Ll9kZXNjPWUsdGhpcy5cdTAyNzVwcm92PXZvaWQgMCwibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5fX05HX0VMRU1FTlRfSURfXz10OnZvaWQgMCE9PXQmJih0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOnRoaXMscHJvdmlkZWRJbjp0LnByb3ZpZGVkSW58fCJyb290IixmYWN0b3J5OnQuZmFj'@; put 'dG9yeX0pKX1nZXQgbXVsdGkoKXtyZXR1cm4gdGhpc310b1N0cmluZygpe3JldHVybmBJbmplY3Rpb25Ub2tlbiAke3RoaXMuX2Rlc2N9YH19ZnVuY3Rpb24gTWMobil7cmV0dXJuIG4mJiEhbi5cdTAyNzVwcm92aWRlcnN9Y29uc3QgSWk9VXMoe1x1MDI3NWNtcDpVc30pLHJoPVVzKHtcdTAy'@; put 'NzVkaXI6VXN9KSxuNT1Vcyh7XHUwMjc1cGlwZTpVc30pLHYyPVVzKHtcdTAyNzVtb2Q6VXN9KSx0ZD1Vcyh7XHUwMjc1ZmFjOlVzfSksTzA9VXMoe19fTkdfRUxFTUVOVF9JRF9fOlVzfSksT209VXMoe19fTkdfRU5WX0lEX186VXN9KTtmdW5jdGlvbiBpYShuKXtyZXR1cm4ic3RyaW5nIj09'@; put 'dHlwZW9mIG4/bjpudWxsPT1uPyIiOlN0cmluZyhuKX1jb25zdCBUYz1Vcyh7bmdFcnJvckNvZGU6VXN9KSxtcz1Vcyh7bmdFcnJvck1lc3NhZ2U6VXN9KSxGMT1Vcyh7bmdUb2tlblBhdGg6VXN9KTtmdW5jdGlvbiBObShuLGUpe3JldHVybiBqdCgiIiwtMjAwLGUpfWZ1bmN0aW9uIHphKG4s'@; put 'ZSl7dGhyb3cgbmV3IFduKC0yMDEsITEpfWZ1bmN0aW9uIGp0KG4sZSx0KXtjb25zdCByPW5ldyBXbihlLG4pO3JldHVybiByW1RjXT1lLHJbbXNdPW4sdCYmKHJbRjFdPXQpLHJ9bGV0IEZuO2Z1bmN0aW9uIFFuKCl7cmV0dXJuIEZufWZ1bmN0aW9uIGxyKG4pe2NvbnN0IGU9Rm47cmV0dXJu'@; put 'IEZuPW4sZX1mdW5jdGlvbiBpaShuLGUsdCl7Y29uc3Qgcj1ldShuKTtyZXR1cm4gciYmInJvb3QiPT1yLnByb3ZpZGVkSW4/dm9pZCAwPT09ci52YWx1ZT9yLnZhbHVlPXIuZmFjdG9yeSgpOnIudmFsdWU6OCZ0P251bGw6dm9pZCAwIT09ZT9lOnZvaWQgemEoKX1jb25zdCBLaT17fSxOYT0i'@; put 'X19OR19ESV9GTEFHX18iO2NsYXNzIFJve2luamVjdG9yO2NvbnN0cnVjdG9yKGUpe3RoaXMuaW5qZWN0b3I9ZX1yZXRyaWV2ZShlLHQpe2NvbnN0IHI9aW8odCl8fDA7dHJ5e3JldHVybiB0aGlzLmluamVjdG9yLmdldChlLDgmcj9udWxsOktpLHIpfWNhdGNoKGkpe2lmKEllKGkpKXJldHVy'@; put 'biBpO3Rocm93IGl9fX1mdW5jdGlvbiBkbChuLGU9MCl7Y29uc3QgdD1XKCk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgV24oLTIwMywhMSk7aWYobnVsbD09PXQpcmV0dXJuIGlpKG4sdm9pZCAwLGUpO3tjb25zdCByPWZ1bmN0aW9uIERhKG4pe3JldHVybntvcHRpb25hbDohISg4Jm4pLGhv'@; put 'c3Q6ISEoMSZuKSxzZWxmOiEhKDImbiksc2tpcFNlbGY6ISEoNCZuKX19KGUpLGk9dC5yZXRyaWV2ZShuLHIpO2lmKEllKGkpKXtpZihyLm9wdGlvbmFsKXJldHVybiBudWxsO3Rocm93IGl9cmV0dXJuIGl9fWZ1bmN0aW9uIG9yKG4sZT0wKXtyZXR1cm4oUW4oKXx8ZGwpKGZhKG4pLGUpfWZ1'@; put 'bmN0aW9uIHNuKG4sZSl7cmV0dXJuIG9yKG4saW8oZSkpfWZ1bmN0aW9uIGlvKG4pe3JldHVybiB0eXBlb2Ygbj4idSJ8fCJudW1iZXIiPT10eXBlb2Ygbj9uOjB8KG4ub3B0aW9uYWwmJjgpfChuLmhvc3QmJjEpfChuLnNlbGYmJjIpfChuLnNraXBTZWxmJiY0KX1mdW5jdGlvbiBucyhuKXtj'@; put 'b25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCByPWZhKG5bdF0pO2lmKEFycmF5LmlzQXJyYXkocikpe2lmKDA9PT1yLmxlbmd0aCl0aHJvdyBuZXcgV24oOTAwLCExKTtsZXQgaSxvPTA7Zm9yKGxldCBhPTA7YTxyLmxlbmd0aDthKyspe2NvbnN0IGw9clthXSx1'@; put 'PVdjKGwpOyJudW1iZXIiPT10eXBlb2YgdT8tMT09PXU/aT1sLnRva2VuOm98PXU6aT1sfWUucHVzaChvcihpLG8pKX1lbHNlIGUucHVzaChvcihyKSl9cmV0dXJuIGV9ZnVuY3Rpb24gRWwobixlKXtyZXR1cm4gbltOYV09ZSxuLnByb3RvdHlwZVtOYV09ZSxufWZ1bmN0aW9uIFdjKG4pe3Jl'@; put 'dHVybiBuW05hXX1mdW5jdGlvbiBuYyhuLGUpe3JldHVybiBuLmhhc093blByb3BlcnR5KHRkKT9uW3RkXTpudWxsfWZ1bmN0aW9uIGUxKG4sZSl7bi5mb3JFYWNoKHQ9PkFycmF5LmlzQXJyYXkodCk/ZTEodCxlKTplKHQpKX1mdW5jdGlvbiB0MShuLGUsdCl7ZT49bi5sZW5ndGg/bi5wdXNo'@; put 'KHQpOm4uc3BsaWNlKGUsMCx0KX1mdW5jdGlvbiBiZChuLGUpe3JldHVybiBlPj1uLmxlbmd0aC0xP24ucG9wKCk6bi5zcGxpY2UoZSwxKVswXX1mdW5jdGlvbiBqdShuLGUsdCl7bGV0IHI9dzIobixlKTtyZXR1cm4gcj49MD9uWzF8cl09dDoocj1+cixmdW5jdGlvbiBraChuLGUsdCxyKXts'@; put 'ZXQgaT1uLmxlbmd0aDtpZihpPT1lKW4ucHVzaCh0LHIpO2Vsc2UgaWYoMT09PWkpbi5wdXNoKHIsblswXSksblswXT10O2Vsc2V7Zm9yKGktLSxuLnB1c2gobltpLTFdLG5baV0pO2k+ZTspbltpXT1uW2ktMl0saS0tO25bZV09dCxuW2UrMV09cn19KG4scixlLHQpKSxyfWZ1bmN0aW9uIEJk'@; put 'KG4sZSl7Y29uc3QgdD13MihuLGUpO2lmKHQ+PTApcmV0dXJuIG5bMXx0XX1mdW5jdGlvbiB3MihuLGUpe3JldHVybiBmdW5jdGlvbiByOChuLGUsdCl7bGV0IHI9MCxpPW4ubGVuZ3RoPj50O2Zvcig7aSE9PXI7KXtjb25zdCBvPXIrKGktcj4+MSksYT1uW288PHRdO2lmKGU9PT1hKXJldHVy'@; put 'biBvPDx0O2E+ZT9pPW86cj1vKzF9cmV0dXJufihpPDx0KX0obixlLDEpfWNvbnN0IHFzPXt9LEphPVtdLE5sPW5ldyBFcigiIiksbjE9bmV3IEVyKCIiLC0xKSxqZD1uZXcgRXIoIiIpO2NsYXNzIE4we2dldChlLHQ9S2kpe2lmKHQ9PT1LaSl7Y29uc3QgaT1qdCgiIiwtMjAxKTt0aHJvdyBp'@; put 'Lm5hbWU9Ilx1MDI3NU5vdEZvdW5kIixpfXJldHVybiB0fX1mdW5jdGlvbiByMShuKXtyZXR1cm4gblt2Ml18fG51bGx9ZnVuY3Rpb24gY3Mobil7cmV0dXJuIG5bSWldfHxudWxsfWZ1bmN0aW9uIENzKG4pe3JldHVybiBuW3JoXXx8bnVsbH1mdW5jdGlvbiBudShuKXtyZXR1cm4gbltuNV18'@; put 'fG51bGx9ZnVuY3Rpb24gbmQobil7cmV0dXJue1x1MDI3NXByb3ZpZGVyczpufX1mdW5jdGlvbiBtZiguLi5uKXtyZXR1cm57XHUwMjc1cHJvdmlkZXJzOlAxKDAsbiksXHUwMjc1ZnJvbU5nTW9kdWxlOiEwfX1mdW5jdGlvbiBQMShuLC4uLmUpe2NvbnN0IHQ9W10scj1uZXcgU2V0O2xldCBp'@; put 'O2NvbnN0IG89YT0+e3QucHVzaChhKX07cmV0dXJuIGUxKGUsYT0+e2NvbnN0IGw9YTtVdShsLG8sW10scikmJihpfHw9W10saS5wdXNoKGwpKX0pLHZvaWQgMCE9PWkmJnVzKGksbyksdH1mdW5jdGlvbiB1cyhuLGUpe2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdHtuZ01vZHVs'@; put 'ZTpyLHByb3ZpZGVyczppfT1uW3RdO2wwKGksbz0+e2UobyxyKX0pfX1mdW5jdGlvbiBVdShuLGUsdCxyKXtpZighKG49ZmEobikpKXJldHVybiExO2xldCBpPW51bGwsbz1naShuKTtjb25zdCBhPSFvJiZjcyhuKTtpZihvfHxhKXtpZihhJiYhYS5zdGFuZGFsb25lKXJldHVybiExO2k9bn1l'@; put 'bHNle2NvbnN0IHU9bi5uZ01vZHVsZTtpZihvPWdpKHUpLCFvKXJldHVybiExO2k9dX1jb25zdCBsPXIuaGFzKGkpO2lmKGEpe2lmKGwpcmV0dXJuITE7aWYoci5hZGQoaSksYS5kZXBlbmRlbmNpZXMpe2NvbnN0IHU9ImZ1bmN0aW9uIj09dHlwZW9mIGEuZGVwZW5kZW5jaWVzP2EuZGVwZW5k'@; put 'ZW5jaWVzKCk6YS5kZXBlbmRlbmNpZXM7Zm9yKGNvbnN0IGcgb2YgdSlVdShnLGUsdCxyKX19ZWxzZXtpZighbylyZXR1cm4hMTt7aWYobnVsbCE9by5pbXBvcnRzJiYhbCl7bGV0IGc7ci5hZGQoaSksZTEoby5pbXBvcnRzLEU9PntVdShFLGUsdCxyKSYmKGd8fD1bXSxnLnB1c2goRSkpfSks'@; put 'dm9pZCAwIT09ZyYmdXMoZyxlKX1pZighbCl7Y29uc3QgZz1uYyhpKXx8KCgpPT5uZXcgaSk7ZSh7cHJvdmlkZTppLHVzZUZhY3Rvcnk6ZyxkZXBzOkphfSxpKSxlKHtwcm92aWRlOmpkLHVzZVZhbHVlOmksbXVsdGk6ITB9LGkpLGUoe3Byb3ZpZGU6TmwsdXNlVmFsdWU6KCk9Pm9yKGkpLG11'@; put 'bHRpOiEwfSxpKX1jb25zdCB1PW8ucHJvdmlkZXJzO2lmKG51bGwhPXUmJiFsKXtjb25zdCBnPW47bDAodSxFPT57ZShFLGcpfSl9fX1yZXR1cm4gaSE9PW4mJnZvaWQgMCE9PW4ucHJvdmlkZXJzfWZ1bmN0aW9uIGwwKG4sZSl7Zm9yKGxldCB0IG9mIG4pTWModCkmJih0PXQuXHUwMjc1cHJv'@; put 'dmlkZXJzKSxBcnJheS5pc0FycmF5KHQpP2wwKHQsZSk6ZSh0KX1jb25zdCByNT1Vcyh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6VXN9KTtmdW5jdGlvbiB1cChuKXtyZXR1cm4gbnVsbCE9PW4mJiJvYmplY3QiPT10eXBlb2YgbiYmcjUgaW4gbn1mdW5jdGlvbiBpMShuKXtyZXR1cm4iZnVu'@; put 'Y3Rpb24iPT10eXBlb2Ygbn1jb25zdCBvOD1uZXcgRXIoIiIpLFNnPXt9LEhtPXt9O2xldCB3ZDtmdW5jdGlvbiBpNSgpe3JldHVybiB2b2lkIDA9PT13ZCYmKHdkPW5ldyBOMCksd2R9Y2xhc3Mgbmx7fWNsYXNzIEgxIGV4dGVuZHMgbmx7cGFyZW50O3NvdXJjZTtzY29wZXM7cmVjb3Jkcz1u'@; put 'ZXcgTWFwO19uZ09uRGVzdHJveUhvb2tzPW5ldyBTZXQ7X29uRGVzdHJveUhvb2tzPVtdO2dldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfV9kZXN0cm95ZWQ9ITE7aW5qZWN0b3JEZWZUeXBlcztjb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcigpLHRoaXMucGFyZW50PXQs'@; put 'dGhpcy5zb3VyY2U9cix0aGlzLnNjb3Blcz1pLHZmKGUsYT0+dGhpcy5wcm9jZXNzUHJvdmlkZXIoYSkpLHRoaXMucmVjb3Jkcy5zZXQobjEsaDModm9pZCAwLHRoaXMpKSxpLmhhcygiZW52aXJvbm1lbnQiKSYmdGhpcy5yZWNvcmRzLnNldChubCxoMyh2b2lkIDAsdGhpcykpO2NvbnN0IG89'@; put 'dGhpcy5yZWNvcmRzLmdldChvOCk7bnVsbCE9byYmInN0cmluZyI9PXR5cGVvZiBvLnZhbHVlJiZ0aGlzLnNjb3Blcy5hZGQoby52YWx1ZSksdGhpcy5pbmplY3RvckRlZlR5cGVzPW5ldyBTZXQodGhpcy5nZXQoamQsSmEse3NlbGY6ITB9KSl9cmV0cmlldmUoZSx0KXtjb25zdCByPWlvKHQp'@; put 'fHwwO3RyeXtyZXR1cm4gdGhpcy5nZXQoZSxLaSxyKX1jYXRjaChpKXtpZihJZShpKSlyZXR1cm4gaTt0aHJvdyBpfX1kZXN0cm95KCl7ZDModGhpcyksdGhpcy5fZGVzdHJveWVkPSEwO2NvbnN0IGU9ayhudWxsKTt0cnl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fbmdPbkRlc3Ryb3lIb29rcyly'@; put 'Lm5nT25EZXN0cm95KCk7Y29uc3QgdD10aGlzLl9vbkRlc3Ryb3lIb29rczt0aGlzLl9vbkRlc3Ryb3lIb29rcz1bXTtmb3IoY29uc3QgciBvZiB0KXIoKX1maW5hbGx5e3RoaXMucmVjb3Jkcy5jbGVhcigpLHRoaXMuX25nT25EZXN0cm95SG9va3MuY2xlYXIoKSx0aGlzLmluamVjdG9yRGVm'@; put 'VHlwZXMuY2xlYXIoKSxrKGUpfX1vbkRlc3Ryb3koZSl7cmV0dXJuIGQzKHRoaXMpLHRoaXMuX29uRGVzdHJveUhvb2tzLnB1c2goZSksKCk9PnRoaXMucmVtb3ZlT25EZXN0cm95KGUpfXJ1bkluQ29udGV4dChlKXtkMyh0aGlzKTtjb25zdCB0PXEodGhpcykscj1scih2b2lkIDApO3RyeXty'@; put 'ZXR1cm4gZSgpfWZpbmFsbHl7cSh0KSxscihyKX19Z2V0KGUsdD1LaSxyKXtpZihkMyh0aGlzKSxlLmhhc093blByb3BlcnR5KE9tKSlyZXR1cm4gZVtPbV0odGhpcyk7Y29uc3QgaT1pbyhyKSxhPXEodGhpcyksbD1scih2b2lkIDApO3RyeXtpZighKDQmaSkpe2xldCBnPXRoaXMucmVjb3Jk'@; put 'cy5nZXQoZSk7aWYodm9pZCAwPT09Zyl7Y29uc3QgRT1mdW5jdGlvbiB1YShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbnx8Im9iamVjdCI9PXR5cGVvZiBuJiYiSW5qZWN0aW9uVG9rZW4iPT09bi5uZ01ldGFkYXRhTmFtZX0oZSkmJmV1KGUpO2c9RSYmdGhpcy5pbmplY3RhYmxlRGVm'@; put 'SW5TY29wZShFKT9oMyhkcChlKSxTZyk6bnVsbCx0aGlzLnJlY29yZHMuc2V0KGUsZyl9aWYobnVsbCE9ZylyZXR1cm4gdGhpcy5oeWRyYXRlKGUsZyxpKX1yZXR1cm4oMiZpP2k1KCk6dGhpcy5wYXJlbnQpLmdldChlLHQ9OCZpJiZ0PT09S2k/bnVsbDp0KX1jYXRjaCh1KXtjb25zdCBnPWZ1'@; put 'bmN0aW9uIHp0KG4pe3JldHVybiBuW1RjXX0odSk7dGhyb3ctMjAwPT09Z3x8LTIwMT09PWc/bmV3IFduKGcsbnVsbCk6dX1maW5hbGx5e2xyKGwpLHEoYSl9fXJlc29sdmVJbmplY3RvckluaXRpYWxpemVycygpe2NvbnN0IGU9ayhudWxsKSx0PXEodGhpcykscj1scih2b2lkIDApO3RyeXtj'@; put 'b25zdCBvPXRoaXMuZ2V0KE5sLEphLHtzZWxmOiEwfSk7Zm9yKGNvbnN0IGEgb2YgbylhKCl9ZmluYWxseXtxKHQpLGxyKHIpLGsoZSl9fXRvU3RyaW5nKCl7Y29uc3QgZT1bXSx0PXRoaXMucmVjb3Jkcztmb3IoY29uc3QgciBvZiB0LmtleXMoKSllLnB1c2goUnMocikpO3JldHVybmBSM0lu'@; put 'amVjdG9yWyR7ZS5qb2luKCIsICIpfV1gfXByb2Nlc3NQcm92aWRlcihlKXtsZXQgdD1pMShlPWZhKGUpKT9lOmZhKGUmJmUucHJvdmlkZSk7Y29uc3Qgcj1mdW5jdGlvbiBzOChuKXtyZXR1cm4gdXAobik/aDModm9pZCAwLG4udXNlVmFsdWUpOmgzKGhwKG4pLFNnKX0oZSk7aWYoIWkxKGUp'@; put 'JiYhMD09PWUubXVsdGkpe2xldCBpPXRoaXMucmVjb3Jkcy5nZXQodCk7aXx8KGk9aDModm9pZCAwLFNnLCEwKSxpLmZhY3Rvcnk9KCk9Pm5zKGkubXVsdGkpLHRoaXMucmVjb3Jkcy5zZXQodCxpKSksdD1lLGkubXVsdGkucHVzaChlKX10aGlzLnJlY29yZHMuc2V0KHQscil9aHlkcmF0ZShl'@; put 'LHQscil7Y29uc3QgaT1rKG51bGwpO3RyeXtpZih0LnZhbHVlPT09SG0pdGhyb3cgTm0oUnMoZSkpO3JldHVybiB0LnZhbHVlPT09U2cmJih0LnZhbHVlPUhtLHQudmFsdWU9dC5mYWN0b3J5KHZvaWQgMCxyKSksIm9iamVjdCI9PXR5cGVvZiB0LnZhbHVlJiZ0LnZhbHVlJiZmdW5jdGlvbiBj'@; put 'OChuKXtyZXR1cm4gbnVsbCE9PW4mJiJvYmplY3QiPT10eXBlb2YgbiYmImZ1bmN0aW9uIj09dHlwZW9mIG4ubmdPbkRlc3Ryb3l9KHQudmFsdWUpJiZ0aGlzLl9uZ09uRGVzdHJveUhvb2tzLmFkZCh0LnZhbHVlKSx0LnZhbHVlfWZpbmFsbHl7ayhpKX19aW5qZWN0YWJsZURlZkluU2NvcGUo'@; put 'ZSl7aWYoIWUucHJvdmlkZWRJbilyZXR1cm4hMTtjb25zdCB0PWZhKGUucHJvdmlkZWRJbik7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyJhbnkiPT09dHx8dGhpcy5zY29wZXMuaGFzKHQpOnRoaXMuaW5qZWN0b3JEZWZUeXBlcy5oYXModCl9cmVtb3ZlT25EZXN0cm95KGUpe2NvbnN0IHQ9'@; put 'dGhpcy5fb25EZXN0cm95SG9va3MuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX29uRGVzdHJveUhvb2tzLnNwbGljZSh0LDEpfX1mdW5jdGlvbiBkcChuKXtjb25zdCBlPWV1KG4pLHQ9bnVsbCE9PWU/ZS5mYWN0b3J5Om5jKG4pO2lmKG51bGwhPT10KXJldHVybiB0O2lmKG4gaW5zdGFuY2Vv'@; put 'ZiBFcil0aHJvdyBuZXcgV24oMjA0LCExKTtpZihuIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIGZ1bmN0aW9uIGE4KG4pe2lmKG4ubGVuZ3RoPjApdGhyb3cgbmV3IFduKDIwNCwhMSk7Y29uc3QgdD1mdW5jdGlvbiBpcihuKXtyZXR1cm4obj8uW3dvXT8/bnVsbCl8fG51bGx9KG4pO3Jl'@; put 'dHVybiBudWxsIT09dD8oKT0+dC5mYWN0b3J5KG4pOigpPT5uZXcgbn0obik7dGhyb3cgbmV3IFduKDIwNCwhMSl9ZnVuY3Rpb24gaHAobixlLHQpe2xldCByO2lmKGkxKG4pKXtjb25zdCBpPWZhKG4pO3JldHVybiBuYyhpKXx8ZHAoaSl9aWYodXAobikpcj0oKT0+ZmEobi51c2VWYWx1ZSk7'@; put 'ZWxzZSBpZihmdW5jdGlvbiBQbShuKXtyZXR1cm4hKCFufHwhbi51c2VGYWN0b3J5KX0obikpcj0oKT0+bi51c2VGYWN0b3J5KC4uLm5zKG4uZGVwc3x8W10pKTtlbHNlIGlmKGZ1bmN0aW9uIGMwKG4pe3JldHVybiEoIW58fCFuLnVzZUV4aXN0aW5nKX0obikpcj0oaSxvKT0+b3IoZmEobi51'@; put 'c2VFeGlzdGluZyksdm9pZCAwIT09byYmOCZvPzg6dm9pZCAwKTtlbHNle2NvbnN0IGk9ZmEobiYmKG4udXNlQ2xhc3N8fG4ucHJvdmlkZSkpO2lmKCFmdW5jdGlvbiBsOChuKXtyZXR1cm4hIW4uZGVwc30obikpcmV0dXJuIG5jKGkpfHxkcChpKTtyPSgpPT5uZXcgaSguLi5ucyhuLmRlcHMp'@; put 'KX1yZXR1cm4gcn1mdW5jdGlvbiBkMyhuKXtpZihuLmRlc3Ryb3llZCl0aHJvdyBuZXcgV24oMjA1LCExKX1mdW5jdGlvbiBoMyhuLGUsdD0hMSl7cmV0dXJue2ZhY3Rvcnk6bix2YWx1ZTplLG11bHRpOnQ/W106dm9pZCAwfX1mdW5jdGlvbiB2ZihuLGUpe2Zvcihjb25zdCB0IG9mIG4pQXJy'@; put 'YXkuaXNBcnJheSh0KT92Zih0LGUpOnQmJk1jKHQpP3ZmKHQuXHUwMjc1cHJvdmlkZXJzLGUpOmUodCl9ZnVuY3Rpb24gTHUobixlKXtsZXQgdDtuIGluc3RhbmNlb2YgSDE/KGQzKG4pLHQ9bik6dD1uZXcgUm8obik7Y29uc3QgaT1xKHQpLG89bHIodm9pZCAwKTt0cnl7cmV0dXJuIGUoKX1m'@; put 'aW5hbGx5e3EoaSksbHIobyl9fWZ1bmN0aW9uIEVnKCl7cmV0dXJuIHZvaWQgMCE9PVFuKCl8fG51bGwhPVcoKX1mdW5jdGlvbiB6cyhuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKSYmIm9iamVjdCI9PXR5cGVvZiBuWzFdfWZ1bmN0aW9uIFl1KG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4p'@; put 'JiYhMD09PW5bMV19ZnVuY3Rpb24gcmQobil7cmV0dXJuISEoNCZuLmZsYWdzKX1mdW5jdGlvbiB3ZihuKXtyZXR1cm4gbi5jb21wb25lbnRPZmZzZXQ+LTF9ZnVuY3Rpb24gQ2Yobil7cmV0dXJuISgxJn5uLmZsYWdzKX1mdW5jdGlvbiBzMShuKXtyZXR1cm4hIW4udGVtcGxhdGV9ZnVuY3Rp'@; put 'b24gdjMobil7cmV0dXJuISEoNTEyJm5bMl0pfWZ1bmN0aW9uIFNmKG4pe3JldHVybiEoMjU2Jn5uWzJdKX12YXIgJGU9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5OT05FPTBdPSJOT05FIixuW24uSFRNTD0xXT0iSFRNTCIsbltuLlNUWUxFPTJdPSJTVFlMRSIsbltuLlNDUklQVD0zXT0iU0NS'@; put 'SVBUIixuW24uVVJMPTRdPSJVUkwiLG5bbi5SRVNPVVJDRV9VUkw9NV09IlJFU09VUkNFX1VSTCIsbltuLkFUVFJJQlVURV9OT19CSU5ESU5HPTZdPSJBVFRSSUJVVEVfTk9fQklORElORyIsbn0oJGV8fHt9KTtsZXQgU3Q7ZnVuY3Rpb24gVXIobixlLHQpe2Zvcihjb25zdFtyLGldb2YgdCl7'@; put 'bGV0IG89ZSYmInVua25vd24iIT09cj9gOiR7ZX06JHtyfWA6cjtvPW8udG9Mb3dlckNhc2UoKTtmb3IoY29uc3QgYSBvZiBpKVN0W2Ake299fCR7YS50b0xvd2VyQ2FzZSgpfWBdPW59fWZ1bmN0aW9uIHBpKG4sZSx0KXtjb25zdCByPWZ1bmN0aW9uIGNyKCl7cmV0dXJuIFN0fHwoU3Q9e30s'@; put 'VXIoJGUuSFRNTCx2b2lkIDAsW1siaWZyYW1lIixbInNyY2RvYyJdXSxbIioiLFsiaW5uZXJIVE1MIiwib3V0ZXJIVE1MIl1dXSksVXIoJGUuU1RZTEUsdm9pZCAwLFtbIioiLFsic3R5bGUiXV1dKSxVcigkZS5VUkwsdm9pZCAwLFtbIioiLFsiZm9ybUFjdGlvbiJdXSxbImFyZWEiLFsiaHJl'@; put 'ZiJdXSxbImEiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJmb3JtIixbImFjdGlvbiJdXSxbImltZyIsWyJzcmMiXV0sWyJ2aWRlbyIsWyJzcmMiXV1dKSxVcigkZS5VUkwsIm1hdGgiLFtbIioiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJhbm5vdGF0aW9uIixbImhyZWYiLCJ4bGluazpo'@; put 'cmVmIl1dLFsiYW5ub3RhdGlvbi14bWwiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtYWN0aW9uIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibWFsaWdubWFyayIsWyJocmVmIiwieGxpbms6aHJlZiJdXSxbIm1hdGgiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtcm9vdCIsWyJocmVm'@; put 'IiwieGxpbms6aHJlZiJdXSxbIm1zcXJ0IixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibWVycm9yIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibWZyYWMiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtZ2x5cGgiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtc3ViIixbImhyZWYiLCJ4'@; put 'bGluazpocmVmIl1dLFsibXN1cCIsWyJocmVmIiwieGxpbms6aHJlZiJdXSxbIm1zdWJzdXAiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtbXVsdGlzY3JpcHRzIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibXByZXNjcmlwdHMiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtaSIsWyJo'@; put 'cmVmIiwieGxpbms6aHJlZiJdXSxbIm1uIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibW8iLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtcGFkZGVkIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibXBoYW50b20iLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtcm93IixbImhyZWYiLCJ4'@; put 'bGluazpocmVmIl1dLFsibXMiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtc3BhY2UiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtc3R5bGUiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtdGFibGUiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtdGQiLFsiaHJlZiIsInhsaW5rOmhy'@; put 'ZWYiXV0sWyJtdHIiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV0sWyJtdGV4dCIsWyJocmVmIiwieGxpbms6aHJlZiJdXSxbIm1vdmVyIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibXVuZGVyIixbImhyZWYiLCJ4bGluazpocmVmIl1dLFsibXVuZGVyb3ZlciIsWyJocmVmIiwieGxpbms6aHJl'@; put 'ZiJdXSxbInNlbWFudGljcyIsWyJocmVmIiwieGxpbms6aHJlZiJdXSxbIm5vbmUiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV1dKSxVcigkZS5SRVNPVVJDRV9VUkwsdm9pZCAwLFtbImJhc2UiLFsiaHJlZiJdXSxbImVtYmVkIixbInNyYyJdXSxbImZyYW1lIixbInNyYyJdXSxbImlmcmFtZSIs'@; put 'WyJzcmMiXV0sWyJsaW5rIixbImhyZWYiXV0sWyJvYmplY3QiLFsiY29kZWJhc2UiLCJkYXRhIl1dXSksVXIoJGUuVVJMLCJzdmciLFtbImEiLFsiaHJlZiIsInhsaW5rOmhyZWYiXV1dKSxVcigkZS5BVFRSSUJVVEVfTk9fQklORElORywic3ZnIixbWyJhbmltYXRlIixbImF0dHJpYnV0ZU5h'@; put 'bWUiLCJ2YWx1ZXMiLCJ0byIsImZyb20iXV0sWyJzZXQiLFsidG8iLCJhdHRyaWJ1dGVOYW1lIl1dLFsiYW5pbWF0ZU1vdGlvbiIsWyJhdHRyaWJ1dGVOYW1lIl1dLFsiYW5pbWF0ZVRyYW5zZm9ybSIsWyJhdHRyaWJ1dGVOYW1lIl1dXSksVXIoJGUuQVRUUklCVVRFX05PX0JJTkRJTkcsdm9p'@; put 'ZCAwLFtbInVua25vd24iLFsiYXR0cmlidXRlTmFtZSIsInZhbHVlcyIsInRvIiwiZnJvbSIsInNhbmRib3giLCJhbGxvdyIsImFsbG93RnVsbHNjcmVlbiIsInJlZmVycmVyUG9saWN5IiwiY3NwIiwiZmV0Y2hQcmlvcml0eSJdXSxbImlmcmFtZSIsWyJzYW5kYm94IiwiYWxsb3ciLCJhbGxv'@; put 'd0Z1bGxzY3JlZW4iLCJyZWZlcnJlclBvbGljeSIsImNzcCIsImZldGNoUHJpb3JpdHkiXV1dKSksU3R9KCksaT1uLnRvTG93ZXJDYXNlKCksbz1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKHQmJiIqIiE9PWkmJiJ1bmtub3duIiE9PWk/cltgOiR7dH06JHtpfXwke299YF06dm9pZCAwKT8/KHQ/'@; put 'cltgOiR7dH06Knwke299YF06dm9pZCAwKT8/cltgJHtpfXwke299YF0/P3JbYCp8JHtvfWBdPz8kZS5OT05FfWZ1bmN0aW9uIERyKG4pe2Zvcig7QXJyYXkuaXNBcnJheShuKTspbj1uWzBdO3JldHVybiBufWZ1bmN0aW9uIHhvKG4sZSl7cmV0dXJuIERyKGVbbl0pfWZ1bmN0aW9uIFlpKG4s'@; put 'ZSl7cmV0dXJuIERyKGVbbi5pbmRleF0pfWZ1bmN0aW9uIFBzKG4sZSl7cmV0dXJuIG4uZGF0YVtlXX1mdW5jdGlvbiBhYShuLGUpe3JldHVybiBuW2VdfWZ1bmN0aW9uIFppKG4sZSl7Y29uc3QgdD1lW25dO3JldHVybiB6cyh0KT90OnRbMF19ZnVuY3Rpb24gamwobil7cmV0dXJuISgxMjgm'@; put 'fm5bMl0pfWZ1bmN0aW9uIHBjKG4sZSl7cmV0dXJuIG51bGw9PWU/bnVsbDpuW2VdfWZ1bmN0aW9uIFVkKG4pe25bMTddPTB9ZnVuY3Rpb24gbDEobil7MTAyNCZuWzJdfHwoblsyXXw9MTAyNCxqbChuKSYmUzIobikpfWZ1bmN0aW9uIFpjKG4pe3JldHVybiEhKDkyMTYmblsyXXx8blsyNF0/'@; put 'LmRpcnR5KX1mdW5jdGlvbiBoMChuKXtuWzEwXS5jaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXI/Lm5vdGlmeSg4KSw2NCZuWzJdJiYoblsyXXw9MTAyNCksWmMobikmJlMyKG4pfWZ1bmN0aW9uIFMyKG4pe25bMTBdLmNoYW5nZURldGVjdGlvblNjaGVkdWxlcj8ubm90aWZ5KDApO2xldCBlPWlo'@; put 'KG4pO2Zvcig7bnVsbCE9PWUmJiEoODE5MiZlWzJdKSYmKGVbMl18PTgxOTIsamwoZSkpOyllPWloKGUpfWZ1bmN0aW9uIF8zKG4sZSl7aWYoU2YobikpdGhyb3cgbmV3IFduKDkxMSwhMSk7bnVsbD09PW5bMjFdJiYoblsyMV09W10pLG5bMjFdLnB1c2goZSl9ZnVuY3Rpb24gaWgobil7Y29u'@; put 'c3QgZT1uWzNdO3JldHVybiBZdShlKT9lWzNdOmV9ZnVuY3Rpb24ga2cobil7cmV0dXJuIG5bN10/Pz1bXX1mdW5jdGlvbiBadShuKXtyZXR1cm4gbi5jbGVhbnVwPz89W119Y29uc3QgcGE9e2xGcmFtZTpaUChudWxsKSxiaW5kaW5nc0VuYWJsZWQ6ITAsc2tpcEh5ZHJhdGlvblJvb3RUTm9k'@; put 'ZTpudWxsfTtsZXQgZjg9ITE7ZnVuY3Rpb24gcDgoKXtwYS5sRnJhbWUuZWxlbWVudERlcHRoQ291bnQtLX1mdW5jdGlvbiBJZygpe3JldHVybiBwYS5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24gdnAoKXtyZXR1cm4gbnVsbCE9PXBhLnNraXBIeWRyYXRpb25Sb290VE5vZGV9ZnVuY3Rpb24g'@; put 'ZjAobil7cmV0dXJuIHBhLnNraXBIeWRyYXRpb25Sb290VE5vZGU9PT1ufWZ1bmN0aW9uIGN0KCl7cGEuc2tpcEh5ZHJhdGlvblJvb3RUTm9kZT1udWxsfWZ1bmN0aW9uIGl0KCl7cmV0dXJuIHBhLmxGcmFtZS5sVmlld31mdW5jdGlvbiBGdCgpe3JldHVybiBwYS5sRnJhbWUudFZpZXd9ZnVu'@; put 'Y3Rpb24gWWUobil7cmV0dXJuIHBhLmxGcmFtZS5jb250ZXh0TFZpZXc9bixuWzhdfWZ1bmN0aW9uIFhlKG4pe3JldHVybiBwYS5sRnJhbWUuY29udGV4dExWaWV3PW51bGwsbn1mdW5jdGlvbiB5aSgpe2xldCBuPVdhKCk7Zm9yKDtudWxsIT09biYmNjQ9PT1uLnR5cGU7KW49bi5wYXJlbnQ7'@; put 'cmV0dXJuIG59ZnVuY3Rpb24gV2EoKXtyZXR1cm4gcGEubEZyYW1lLmN1cnJlbnRUTm9kZX1mdW5jdGlvbiBXcyhuLGUpe2NvbnN0IHQ9cGEubEZyYW1lO3QuY3VycmVudFROb2RlPW4sdC5pc1BhcmVudD1lfWZ1bmN0aW9uIGMxKCl7cmV0dXJuIHBhLmxGcmFtZS5pc1BhcmVudH1mdW5jdGlv'@; put 'biBEaCgpe3BhLmxGcmFtZS5pc1BhcmVudD0hMX1mdW5jdGlvbiBVUCgpe3JldHVybiBmOH1mdW5jdGlvbiB0UyhuKXtjb25zdCBlPWY4O3JldHVybiBmOD1uLGV9ZnVuY3Rpb24gSDAoKXtjb25zdCBuPXBhLmxGcmFtZTtsZXQgZT1uLmJpbmRpbmdSb290SW5kZXg7cmV0dXJuLTE9PT1lJiYo'@; put 'ZT1uLmJpbmRpbmdSb290SW5kZXg9bi50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCksZX1mdW5jdGlvbiB6bSgpe3JldHVybiBwYS5sRnJhbWUuYmluZGluZ0luZGV4fWZ1bmN0aW9uIEUyKCl7cmV0dXJuIHBhLmxGcmFtZS5iaW5kaW5nSW5kZXgrK31mdW5jdGlvbiBXbShuKXtjb25zdCBlPXBh'@; put 'LmxGcmFtZSx0PWUuYmluZGluZ0luZGV4O3JldHVybiBlLmJpbmRpbmdJbmRleD1lLmJpbmRpbmdJbmRleCtuLHR9ZnVuY3Rpb24gcFgobixlKXtjb25zdCB0PXBhLmxGcmFtZTt0LmJpbmRpbmdJbmRleD10LmJpbmRpbmdSb290SW5kZXg9bixuUyhlKX1mdW5jdGlvbiBuUyhuKXtwYS5sRnJh'@; put 'bWUuY3VycmVudERpcmVjdGl2ZUluZGV4PW59ZnVuY3Rpb24geEEobil7Y29uc3QgZT1wYS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4O3JldHVybi0xPT09ZT9udWxsOm5bZV19ZnVuY3Rpb24gQUEoKXtyZXR1cm4gcGEubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIHJT'@; put 'KG4pe3BhLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRleD1ufWZ1bmN0aW9uIG1YKG4pe2NvbnN0IGU9blsxXTtyZXR1cm4gMj09PWUudHlwZT9lLmRlY2xUTm9kZToxPT09ZS50eXBlP25bNV06bnVsbH1mdW5jdGlvbiBZUChuLGUsdCl7aWYoNCZ0KXtsZXQgaT1lLG89bjtmb3IoOyEoaT1pLnBh'@; put 'cmVudCxudWxsIT09aXx8MSZ0fHwoaT1tWChvKSxudWxsPT09aXx8KG89b1sxNF0sMTAmaS50eXBlKSkpOyk7aWYobnVsbD09PWkpcmV0dXJuITE7ZT1pLG49b31jb25zdCByPXBhLmxGcmFtZT1SQSgpO3JldHVybiByLmN1cnJlbnRUTm9kZT1lLHIubFZpZXc9biwhMH1mdW5jdGlvbiBrQShu'@; put 'KXtjb25zdCBlPVJBKCksdD1uWzFdO3BhLmxGcmFtZT1lLGUuY3VycmVudFROb2RlPXQuZmlyc3RDaGlsZCxlLmxWaWV3PW4sZS50Vmlldz10LGUuY29udGV4dExWaWV3PW4sZS5iaW5kaW5nSW5kZXg9dC5iaW5kaW5nU3RhcnRJbmRleCxlLmluSTE4bj0hMX1mdW5jdGlvbiBSQSgpe2NvbnN0'@; put 'IG49cGEubEZyYW1lLGU9bnVsbD09PW4/bnVsbDpuLmNoaWxkO3JldHVybiBudWxsPT09ZT9aUChuKTplfWZ1bmN0aW9uIFpQKG4pe2NvbnN0IGU9e2N1cnJlbnRUTm9kZTpudWxsLGlzUGFyZW50OiEwLGxWaWV3Om51bGwsdFZpZXc6bnVsbCxzZWxlY3RlZEluZGV4Oi0xLGNvbnRleHRMVmll'@; put 'dzpudWxsLGVsZW1lbnREZXB0aENvdW50OjAsY3VycmVudE5hbWVzcGFjZTpudWxsLGN1cnJlbnREaXJlY3RpdmVJbmRleDotMSxiaW5kaW5nUm9vdEluZGV4Oi0xLGJpbmRpbmdJbmRleDotMSxjdXJyZW50UXVlcnlJbmRleDowLHBhcmVudDpuLGNoaWxkOm51bGwsaW5JMThuOiExfTtyZXR1'@; put 'cm4gbnVsbCE9PW4mJihuLmNoaWxkPWUpLGV9ZnVuY3Rpb24gR1AoKXtjb25zdCBuPXBhLmxGcmFtZTtyZXR1cm4gcGEubEZyYW1lPW4ucGFyZW50LG4uY3VycmVudFROb2RlPW51bGwsbi5sVmlldz1udWxsLG59Y29uc3QgJFA9R1A7ZnVuY3Rpb24gaVMoKXtjb25zdCBuPUdQKCk7bi5pc1Bh'@; put 'cmVudD0hMCxuLnRWaWV3PW51bGwsbi5zZWxlY3RlZEluZGV4PS0xLG4uY29udGV4dExWaWV3PW51bGwsbi5lbGVtZW50RGVwdGhDb3VudD0wLG4uY3VycmVudERpcmVjdGl2ZUluZGV4PS0xLG4uY3VycmVudE5hbWVzcGFjZT1udWxsLG4uYmluZGluZ1Jvb3RJbmRleD0tMSxuLmJpbmRpbmdJ'@; put 'bmRleD0tMSxuLmN1cnJlbnRRdWVyeUluZGV4PTB9ZnVuY3Rpb24gb2goKXtyZXR1cm4gcGEubEZyYW1lLnNlbGVjdGVkSW5kZXh9ZnVuY3Rpb24gWW0obil7cGEubEZyYW1lLnNlbGVjdGVkSW5kZXg9bn1mdW5jdGlvbiB5Mygpe2NvbnN0IG49cGEubEZyYW1lO3JldHVybiBQcyhuLnRWaWV3'@; put 'LG4uc2VsZWN0ZWRJbmRleCl9ZnVuY3Rpb24gSUEoKXtyZXR1cm4gcGEubEZyYW1lLmN1cnJlbnROYW1lc3BhY2V9bGV0IFhQPSEwO2Z1bmN0aW9uIG9TKCl7cmV0dXJuIFhQfWZ1bmN0aW9uIHB5KG4pe1hQPW59ZnVuY3Rpb24gREEobixlPW51bGwsdD1udWxsLHIpe2NvbnN0IGk9UVAobixl'@; put 'LHQscik7cmV0dXJuIGkucmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCksaX1mdW5jdGlvbiBRUChuLGU9bnVsbCx0PW51bGwscixpPW5ldyBTZXQpe2NvbnN0IG89W3R8fEphLG1mKG4pXTtyZXR1cm4gcj1yfHwoIm9iamVjdCI9PXR5cGVvZiBuP3ZvaWQgMDpScyhuKSksbmV3IEgxKG8s'@; put 'ZXx8aTUoKSxyfHxudWxsLGkpfWNsYXNzIE1se3N0YXRpYyBUSFJPV19JRl9OT1RfRk9VTkQ9S2k7c3RhdGljIE5VTEw9bmV3IE4wO3N0YXRpYyBjcmVhdGUoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBEQSh7bmFtZToiIn0sdCxlLCIiKTt7Y29uc3Qgcj1lLm5hbWU/PyIiO3Jl'@; put 'dHVybiBEQSh7bmFtZTpyfSxlLnBhcmVudCxlLnByb3ZpZGVycyxyKX19c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOk1sLHByb3ZpZGVkSW46ImFueSIsZmFjdG9yeTooKT0+b3IobjEpfSk7c3RhdGljIF9fTkdfRUxFTUVOVF9JRF9fPS0xfWNvbnN0IFRsPW5ldyBFcigiIik7bGV0IE0y'@; put 'PSgoKT0+Y2xhc3MgbntzdGF0aWMgX19OR19FTEVNRU5UX0lEX189Ylg7c3RhdGljIF9fTkdfRU5WX0lEX189dD0+dH0pKCk7Y2xhc3MgSlAgZXh0ZW5kcyBNMntfbFZpZXc7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9sVmlldz1lfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gU2YodGhp'@; put 'cy5fbFZpZXcpfW9uRGVzdHJveShlKXtjb25zdCB0PXRoaXMuX2xWaWV3O3JldHVybiBfMyh0LGUpLCgpPT5mdW5jdGlvbiBNZihuLGUpe2lmKG51bGw9PT1uWzIxXSlyZXR1cm47Y29uc3QgdD1uWzIxXS5pbmRleE9mKGUpOy0xIT09dCYmblsyMV0uc3BsaWNlKHQsMSl9KHQsZSl9fWZ1bmN0'@; put 'aW9uIGJYKCl7cmV0dXJuIG5ldyBKUChpdCgpKX1jbGFzcyBnOHtfY29uc29sZT1jb25zb2xlO2hhbmRsZUVycm9yKGUpe3RoaXMuX2NvbnNvbGUuZXJyb3IoIkVSUk9SIixlKX19Y29uc3QgX3A9bmV3IEVyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT57Y29uc3Qgbj1zbihu'@; put 'bCk7bGV0IGU7cmV0dXJuIHQ9PntuLmRlc3Ryb3llZCYmIWU/c2V0VGltZW91dCgoKT0+e3Rocm93IHR9KTooZT8/PW4uZ2V0KGc4KSxlLmhhbmRsZUVycm9yKHQpKX19fSksd1g9e3Byb3ZpZGU6TmwsdXNlVmFsdWU6KCk9PntzbihnOCl9LG11bHRpOiEwfTtmdW5jdGlvbiBCMShuLGUpe2Nv'@; put 'bnN0W3QscixpXT1McihuLGU/LmVxdWFsKSxvPXQ7cmV0dXJuIG8uc2V0PXIsby51cGRhdGU9aSxvLmFzUmVhZG9ubHk9TEEuYmluZChvKSxvfWZ1bmN0aW9uIExBKCl7Y29uc3Qgbj10aGlzW2JdO2lmKHZvaWQgMD09PW4ucmVhZG9ubHlGbil7Y29uc3QgZT0oKT0+dGhpcygpO2VbYl09bixu'@; put 'LnJlYWRvbmx5Rm49ZX1yZXR1cm4gbi5yZWFkb25seUZufWZ1bmN0aW9uIHRIKG4pe3JldHVybiBmdW5jdGlvbiBlSChuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmdm9pZCAwIT09bltiXX0obikmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnNldH1sZXQgT0E9KCgpPT5jbGFzcyBue3Zp'@; put 'ZXc7bm9kZTtjb25zdHJ1Y3Rvcih0LHIpe3RoaXMudmlldz10LHRoaXMubm9kZT1yfXN0YXRpYyBfX05HX0VMRU1FTlRfSURfXz1TWH0pKCk7ZnVuY3Rpb24gU1goKXtyZXR1cm4gbmV3IE9BKGl0KCkseWkoKSl9Y2xhc3MgbTh7fWNvbnN0IG5IPW5ldyBFcigiIix7cHJvdmlkZWRJbjoicm9v'@; put 'dCIsZmFjdG9yeTooKT0+ITF9KSxySD1uZXcgRXIoIiIpLGlIPW5ldyBFcigiIik7bGV0IHM1PSgoKT0+e2NsYXNzIG57dGFza0lkPTA7cGVuZGluZ1Rhc2tzPW5ldyBTZXQ7ZGVzdHJveWVkPSExO3BlbmRpbmdUYXNrPW5ldyAkaSghMSk7Z2V0IGhhc1BlbmRpbmdUYXNrcygpe3JldHVybiF0'@; put 'aGlzLmRlc3Ryb3llZCYmdGhpcy5wZW5kaW5nVGFzay52YWx1ZX1nZXQgaGFzUGVuZGluZ1Rhc2tzT2JzZXJ2YWJsZSgpe3JldHVybiB0aGlzLmRlc3Ryb3llZD9uZXcgaG8odD0+e3QubmV4dCghMSksdC5jb21wbGV0ZSgpfSk6dGhpcy5wZW5kaW5nVGFza31hZGQoKXshdGhpcy5oYXNQZW5k'@; put 'aW5nVGFza3MmJiF0aGlzLmRlc3Ryb3llZCYmdGhpcy5wZW5kaW5nVGFzay5uZXh0KCEwKTtjb25zdCB0PXRoaXMudGFza0lkKys7cmV0dXJuIHRoaXMucGVuZGluZ1Rhc2tzLmFkZCh0KSx0fWhhcyh0KXtyZXR1cm4gdGhpcy5wZW5kaW5nVGFza3MuaGFzKHQpfXJlbW92ZSh0KXt0aGlzLnBl'@; put 'bmRpbmdUYXNrcy5kZWxldGUodCksMD09PXRoaXMucGVuZGluZ1Rhc2tzLnNpemUmJnRoaXMuaGFzUGVuZGluZ1Rhc2tzJiZ0aGlzLnBlbmRpbmdUYXNrLm5leHQoITEpfW5nT25EZXN0cm95KCl7dGhpcy5wZW5kaW5nVGFza3MuY2xlYXIoKSx0aGlzLmhhc1BlbmRpbmdUYXNrcyYmdGhpcy5w'@; put 'ZW5kaW5nVGFzay5uZXh0KCExKSx0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLnBlbmRpbmdUYXNrLnVuc3Vic2NyaWJlKCl9c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4scHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bmV3IG59KX1yZXR1cm4gbn0pKCksYVM9KCgpPT57Y2xhc3Mg'@; put 'bntpbnRlcm5hbFBlbmRpbmdUYXNrcz1zbihzNSk7c2NoZWR1bGVyPXNuKG04KTtlcnJvckhhbmRsZXI9c24oX3ApO2FkZCgpe2NvbnN0IHQ9dGhpcy5pbnRlcm5hbFBlbmRpbmdUYXNrcy5hZGQoKTtyZXR1cm4oKT0+e3RoaXMuaW50ZXJuYWxQZW5kaW5nVGFza3MuaGFzKHQpJiYodGhpcy5z'@; put 'Y2hlZHVsZXIubm90aWZ5KDExKSx0aGlzLmludGVybmFsUGVuZGluZ1Rhc2tzLnJlbW92ZSh0KSl9fXJ1bih0KXtjb25zdCByPXRoaXMuYWRkKCk7dCgpLmNhdGNoKHRoaXMuZXJyb3JIYW5kbGVyKS5maW5hbGx5KHIpfXN0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLHByb3ZpZGVkSW46'@; put 'InJvb3QiLGZhY3Rvcnk6KCk9Pm5ldyBufSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIGd5KC4uLm4pe31sZXQgb0g9KCgpPT57Y2xhc3MgbntzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgRVh9KX1yZXR1cm4gbn0pKCk7Y2xh'@; put 'c3MgRVh7ZGlydHlFZmZlY3RDb3VudD0wO3F1ZXVlcz1uZXcgTWFwO2FkZChlKXt0aGlzLmVucXVldWUoZSksdGhpcy5zY2hlZHVsZShlKX1zY2hlZHVsZShlKXtlLmRpcnR5JiZ0aGlzLmRpcnR5RWZmZWN0Q291bnQrK31yZW1vdmUoZSl7Y29uc3Qgcj10aGlzLnF1ZXVlcy5nZXQoZS56b25l'@; put 'KTtyLmhhcyhlKSYmKHIuZGVsZXRlKGUpLGUuZGlydHkmJnRoaXMuZGlydHlFZmZlY3RDb3VudC0tKX1lbnF1ZXVlKGUpe2NvbnN0IHQ9ZS56b25lO3RoaXMucXVldWVzLmhhcyh0KXx8dGhpcy5xdWV1ZXMuc2V0KHQsbmV3IFNldCk7Y29uc3Qgcj10aGlzLnF1ZXVlcy5nZXQodCk7ci5oYXMo'@; put 'ZSl8fHIuYWRkKGUpfWZsdXNoKCl7Zm9yKDt0aGlzLmRpcnR5RWZmZWN0Q291bnQ+MDspe2xldCBlPSExO2Zvcihjb25zdFt0LHJdb2YgdGhpcy5xdWV1ZXMpZXx8PW51bGw9PT10P3RoaXMuZmx1c2hRdWV1ZShyKTp0LnJ1bigoKT0+dGhpcy5mbHVzaFF1ZXVlKHIpKTtlfHwodGhpcy5kaXJ0'@; put 'eUVmZmVjdENvdW50PTApfX1mbHVzaFF1ZXVlKGUpe2xldCB0PSExO2Zvcihjb25zdCByIG9mIGUpci5kaXJ0eSYmKHRoaXMuZGlydHlFZmZlY3RDb3VudC0tLHQ9ITAsci5ydW4oKSk7cmV0dXJuIHR9fWxldCBhSD1udWxsO2Z1bmN0aW9uIGw1KCl7cmV0dXJuIGFIfWNsYXNzIFRYe31sZXQg'@; put 'TkE9KCgpPT57Y2xhc3MgbntoaXN0b3J5R28odCl7dGhyb3cgbmV3IEVycm9yKCIiKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6KCk9PnNuKEFYKSxwcm92aWRlZEluOiJwbGF0Zm9y'@; put 'bSJ9KX1yZXR1cm4gbn0pKCk7Y29uc3QgeFg9bmV3IEVyKCIiKTtsZXQgQVg9KCgpPT57Y2xhc3MgbiBleHRlbmRzIE5Be19sb2NhdGlvbjtfaGlzdG9yeTtfZG9jPXNuKFRsKTtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fbG9jYXRpb249d2luZG93LmxvY2F0aW9uLHRoaXMuX2hpc3Rv'@; put 'cnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIGw1KCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKHQpe2NvbnN0IHI9bDUoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiByLmFkZEV2ZW50TGlzdGVu'@; put 'ZXIoInBvcHN0YXRlIix0LCExKSwoKT0+ci5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCl9b25IYXNoQ2hhbmdlKHQpe2NvbnN0IHI9bDUoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiByLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFu'@; put 'Z2UiLHQsITEpLCgpPT5yLnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhyZWZ9Z2V0IHByb3RvY29sKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnByb3RvY29sfWdldCBob3N0bmFtZSgpe3JldHVybiB0aGlzLl9s'@; put 'b2NhdGlvbi5ob3N0bmFtZX1nZXQgcG9ydCgpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5wb3J0fWdldCBwYXRobmFtZSgpe3JldHVybiB0aGlzLl9sb2NhdGlvbi5wYXRobmFtZX1nZXQgc2VhcmNoKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaH1nZXQgaGFzaCgpe3JldHVybiB0aGlz'@; put 'Ll9sb2NhdGlvbi5oYXNofXNldCBwYXRobmFtZSh0KXt0aGlzLl9sb2NhdGlvbi5wYXRobmFtZT10fXB1c2hTdGF0ZSh0LHIsaSl7dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxyLGkpfXJlcGxhY2VTdGF0ZSh0LHIsaSl7dGhpcy5faGlzdG9yeS5yZXBsYWNlU3RhdGUodCxyLGkpfWZvcndh'@; put 'cmQoKXt0aGlzLl9oaXN0b3J5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5faGlzdG9yeS5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dGhpcy5faGlzdG9yeS5nbyh0KX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9oaXN0b3J5LnN0YXRlfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJu'@; put 'IG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTooKT0+bmV3IG4scHJvdmlkZWRJbjoicGxhdGZvcm0ifSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIEZBKG4sZSl7cmV0dXJuIG4/ZT9uLmVuZHNXaXRoKCIvIik/ZS5zdGFydHNXaXRoKCIvIik/bitlLnNs'@; put 'aWNlKDEpOm4rZTplLnN0YXJ0c1dpdGgoIi8iKT9uK2U6YCR7bn0vJHtlfWA6bjplfWZ1bmN0aW9uIHNIKG4pe2NvbnN0IGU9bi5zZWFyY2goLyN8XD98JC8pO3JldHVybiIvIj09PW5bZS0xXT9uLnNsaWNlKDAsZS0xKStuLnNsaWNlKGUpOm59ZnVuY3Rpb24gWm0obil7cmV0dXJuIG4mJiI/'@; put 'IiE9PW5bMF0/YD8ke259YDpufWxldCB5cD0oKCk9PntjbGFzcyBue2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIiIpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTooKT0+c24o'@; put 'bFMpLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2NvbnN0IHNTPW5ldyBFcigiIik7bGV0IGxTPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyB5cHtfcGxhdGZvcm1Mb2NhdGlvbjtfYmFzZUhyZWY7X3JlbW92ZUxpc3RlbmVyRm5zPVtdO2NvbnN0cnVjdG9yKHQscil7c3VwZXIoKSx0'@; put 'aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPXQsdGhpcy5fYmFzZUhyZWY9cj8/dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKT8/c24oVGwpLmxvY2F0aW9uPy5vcmlnaW4/PyIifW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7'@; put 'KXRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZSh0KXt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KSl9Z2V0QmFzZUhyZWYo'@; put 'KXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiBGQSh0aGlzLl9iYXNlSHJlZix0KX1wYXRoKHQ9ITEpe2NvbnN0IHI9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZStabSh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCksaT10aGlz'@; put 'Ll9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIGkmJnQ/YCR7cn0ke2l9YDpyfXB1c2hTdGF0ZSh0LHIsaSxvKXtjb25zdCBhPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGkrWm0obykpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQscixhKX1yZXBsYWNlU3RhdGUodCxy'@; put 'LGksbyl7Y29uc3QgYT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChpK1ptKG8pKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LHIsYSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJh'@; put 'Y2soKX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRlKCl9aGlzdG9yeUdvKHQ9MCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oaXN0b3J5R28/Lih0KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IoTkEpLG9y'@; put 'KHNTLDgpKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxWMD0oKCk9PntjbGFzcyBue19zdWJqZWN0PW5ldyBNcjtfYmFzZVBhdGg7X2xvY2F0aW9uU3RyYXRlZ3k7X3VybENoYW5nZUxp'@; put 'c3RlbmVycz1bXTtfdXJsQ2hhbmdlU3Vic2NyaXB0aW9uPW51bGw7Y29uc3RydWN0b3IodCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneT10O2NvbnN0IHI9dGhpcy5fbG9jYXRpb25TdHJhdGVneS5nZXRCYXNlSHJlZigpO3RoaXMuX2Jhc2VQYXRoPWZ1bmN0aW9uIFJYKG4pe2lmKG5ldyBSZWdF'@; put 'eHAoIl4oaHR0cHM/Oik/Ly8iKS50ZXN0KG4pKXtjb25zdFssdF09bi5zcGxpdCgvXC9cL1teXC9dKy8pO3JldHVybiB0fXJldHVybiBufShzSChjUyhyKSkpLHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kub25Qb3BTdGF0ZShpPT57dGhpcy5fc3ViamVjdC5uZXh0KHt1cmw6dGhpcy5wYXRoKCEw'@; put 'KSxwb3A6ITAsc3RhdGU6aS5zdGF0ZSx0eXBlOmkudHlwZX0pfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl91cmxDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdfXBhdGgodD0hMSl7cmV0dXJuIHRoaXMubm9ybWFsaXplKHRoaXMuX2xv'@; put 'Y2F0aW9uU3RyYXRlZ3kucGF0aCh0KSl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fbG9jYXRpb25TdHJhdGVneS5nZXRTdGF0ZSgpfWlzQ3VycmVudFBhdGhFcXVhbFRvKHQscj0iIil7cmV0dXJuIHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZSh0K1ptKHIpKX1ub3JtYWxpemUodCl7cmV0'@; put 'dXJuIG4uc3RyaXBUcmFpbGluZ1NsYXNoKGZ1bmN0aW9uIGtYKG4sZSl7aWYoIW58fCFlLnN0YXJ0c1dpdGgobikpcmV0dXJuIGU7Y29uc3QgdD1lLnN1YnN0cmluZyhuLmxlbmd0aCk7cmV0dXJuIiI9PT10fHxbIi8iLCI7IiwiPyIsIiMiXS5pbmNsdWRlcyh0WzBdKT90OmV9KHRoaXMuX2Jh'@; put 'c2VQYXRoLGNTKHQpKSl9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCksdGhpcy5fbG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9Z28odCxyPSIiLGk9bnVsbCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5wdXNoU3RhdGUo'@; put 'aSwiIix0LHIpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K1ptKHIpKSxpKX1yZXBsYWNlU3RhdGUodCxyPSIiLGk9bnVsbCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5yZXBsYWNlU3RhdGUoaSwiIix0LHIpLHRoaXMuX25vdGlmeVVy'@; put 'bENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K1ptKHIpKSxpKX1mb3J3YXJkKCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX2xvY2F0aW9uU3RyYXRlZ3kuYmFjaygpfWhpc3RvcnlHbyh0PTApe3RoaXMuX2xvY2F0aW9uU3Ry'@; put 'YXRlZ3kuaGlzdG9yeUdvPy4odCl9b25VcmxDaGFuZ2UodCl7cmV0dXJuIHRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj8/PXRoaXMuc3Vic2NyaWJlKHI9Pnt0aGlzLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnMoci51cmwsci5z'@; put 'dGF0ZSl9KSwoKT0+e2NvbnN0IHI9dGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLmluZGV4T2YodCk7dGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLnNwbGljZShyLDEpLDA9PT10aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMubGVuZ3RoJiYodGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9uPy51bnN1'@; put 'YnNjcmliZSgpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj1udWxsKX19X25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0PSIiLHIpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5mb3JFYWNoKGk9PmkodCxyKSl9c3Vic2NyaWJlKHQscixpKXtyZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJz'@; put 'Y3JpYmUoe25leHQ6dCxlcnJvcjpyPz92b2lkIDAsY29tcGxldGU6aT8/dm9pZCAwfSl9c3RhdGljIG5vcm1hbGl6ZVF1ZXJ5UGFyYW1zPVptO3N0YXRpYyBqb2luV2l0aFNsYXNoPUZBO3N0YXRpYyBzdHJpcFRyYWlsaW5nU2xhc2g9c0g7c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXty'@; put 'ZXR1cm4gbmV3KHJ8fG4pKG9yKHlwKSl9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6KCk9PmZ1bmN0aW9uIHY4KCl7cmV0dXJuIG5ldyBWMChvcih5cCkpfSgpLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIGNTKG4pe3JldHVybiBuLnJl'@; put 'cGxhY2UoL1wvaW5kZXguaHRtbCQvLCIiKX1mdW5jdGlvbiBteShuLGUpe2U9ZW5jb2RlVVJJQ29tcG9uZW50KGUpO2Zvcihjb25zdCB0IG9mIG4uc3BsaXQoIjsiKSl7Y29uc3Qgcj10LmluZGV4T2YoIj0iKSxbaSxvXT0tMT09cj9bdCwiIl06W3Quc2xpY2UoMCxyKSx0LnNsaWNlKHIrMSld'@; put 'O2lmKGkudHJpbSgpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KG8pfXJldHVybiBudWxsfWNsYXNzIGxIe31mdW5jdGlvbiB1UyhuLGUsdCxyLGksbyxhKXt0cnl7dmFyIGw9bltvXShhKSx1PWwudmFsdWV9Y2F0Y2goZyl7cmV0dXJuIHZvaWQgdChnKX1sLmRvbmU/ZSh1KTpQcm9t'@; put 'aXNlLnJlc29sdmUodSkudGhlbihyLGkpfWZ1bmN0aW9uIENyKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsaSl7dmFyIG89bi5hcHBseShlLHQpO2Z1bmN0aW9uIGEodSl7dVMobyxyLGksYSxsLCJuZXh0'@; put 'Iix1KX1mdW5jdGlvbiBsKHUpe3VTKG8scixpLGEsbCwidGhyb3ciLHUpfWEodm9pZCAwKX0pfX1mdW5jdGlvbiBNOShuKXtyZXR1cm4gWm4obj8ubGlmdCl9ZnVuY3Rpb24gYWQobil7cmV0dXJuIGU9PntpZihNOShlKSlyZXR1cm4gZS5saWZ0KGZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gbih0'@; put 'LHRoaXMpfWNhdGNoKHIpe3RoaXMuZXJyb3Iocil9fSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUiKX19ZnVuY3Rpb24gdnUobixlLHQscixpKXtyZXR1cm4gbmV3IElYKG4sZSx0LHIsaSl9Y2xhc3MgSVggZXh0ZW5kcyB2aXtj'@; put 'b25zdHJ1Y3RvcihlLHQscixpLG8sYSl7c3VwZXIoZSksdGhpcy5vbkZpbmFsaXplPW8sdGhpcy5zaG91bGRVbnN1YnNjcmliZT1hLHRoaXMuX25leHQ9dD9mdW5jdGlvbihsKXt0cnl7dChsKX1jYXRjaCh1KXtlLmVycm9yKHUpfX06c3VwZXIuX25leHQsdGhpcy5fZXJyb3I9aT9mdW5jdGlv'@; put 'bihsKXt0cnl7aShsKX1jYXRjaCh1KXtlLmVycm9yKHUpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06c3VwZXIuX2Vycm9yLHRoaXMuX2NvbXBsZXRlPXI/ZnVuY3Rpb24oKXt0cnl7cigpfWNhdGNoKGwpe2UuZXJyb3IobCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fTpzdXBl'@; put 'ci5fY29tcGxldGV9dW5zdWJzY3JpYmUoKXt2YXIgZTtpZighdGhpcy5zaG91bGRVbnN1YnNjcmliZXx8dGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKXtjb25zdHtjbG9zZWQ6dH09dGhpcztzdXBlci51bnN1YnNjcmliZSgpLCF0JiYobnVsbD09PShlPXRoaXMub25GaW5hbGl6ZSl8fHZvaWQg'@; put 'MD09PWV8fGUuY2FsbCh0aGlzKSl9fX1mdW5jdGlvbiBFcyhuLGUpe3JldHVybiBhZCgodCxyKT0+e2xldCBpPTA7dC5zdWJzY3JpYmUodnUocixvPT57ci5uZXh0KG4uY2FsbChlLG8saSsrKSl9KSl9KX1mdW5jdGlvbiBUZihuKXtyZXR1cm57dG9TdHJpbmc6bn0udG9TdHJpbmcoKX1jb25z'@; put 'dCBHbT0iX19wYXJhbWV0ZXJzX18iO2Z1bmN0aW9uIEE5KG4sZSx0KXtyZXR1cm4gVGYoKCk9Pntjb25zdCByPWZ1bmN0aW9uICRtKG4pe3JldHVybiBmdW5jdGlvbiguLi50KXtpZihuKXtjb25zdCByPW4oLi4udCk7Zm9yKGNvbnN0IGkgaW4gcil0aGlzW2ldPXJbaV19fX0oZSk7ZnVuY3Rp'@; put 'b24gaSguLi5vKXtpZih0aGlzIGluc3RhbmNlb2YgaSlyZXR1cm4gci5hcHBseSh0aGlzLG8pLHRoaXM7Y29uc3QgYT1uZXcgaSguLi5vKTtyZXR1cm4gbC5hbm5vdGF0aW9uPWEsbDtmdW5jdGlvbiBsKHUsZyxFKXtjb25zdCBPPXUuaGFzT3duUHJvcGVydHkoR20pP3VbR21dOk9iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eSh1LEdtLHt2YWx1ZTpbXX0pW0dtXTtmb3IoO08ubGVuZ3RoPD1FOylPLnB1c2gobnVsbCk7cmV0dXJuKE9bRV09T1tFXXx8W10pLnB1c2goYSksdX19cmV0dXJuIGkucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPW4saS5hbm5vdGF0aW9uQ2xzPWksaX0pfWNvbnN0IHZ5'@; put 'PUVsKEE5KCJJbmplY3QiLG49Pih7dG9rZW46bn0pKSwtMSksdzg9RWwoQTkoIk9wdGlvbmFsIiksOCkscW09RWwoQTkoIlNraXBTZWxmIiksNCksWkE9RnVuY3Rpb247Y2xhc3MgS1h7cHJldmlvdXNWYWx1ZTtjdXJyZW50VmFsdWU7Zmlyc3RDaGFuZ2U7Y29uc3RydWN0b3IoZSx0LHIpe3Ro'@; put 'aXMucHJldmlvdXNWYWx1ZT1lLHRoaXMuY3VycmVudFZhbHVlPXQsdGhpcy5maXJzdENoYW5nZT1yfWlzRmlyc3RDaGFuZ2UoKXtyZXR1cm4gdGhpcy5maXJzdENoYW5nZX19ZnVuY3Rpb24gYkgobixlLHQscil7bnVsbCE9PWU/ZS5hcHBseVZhbHVlVG9JbnB1dFNpZ25hbChlLHIpOm5bdF09'@; put 'cn1jb25zdCBpdT0oKCk9Pntjb25zdCBuPSgpPT53SDtyZXR1cm4gbi5uZ0luaGVyaXQ9ITAsbn0pKCk7ZnVuY3Rpb24gd0gobil7cmV0dXJuIG4udHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJihuLnNldElucHV0PVhYKSxDSH1mdW5jdGlvbiBDSCgpe2NvbnN0IG49RUgodGhpcyksZT1u'@; put 'Py5jdXJyZW50O2lmKGUpe2NvbnN0IHQ9bi5wcmV2aW91cztpZih0PT09cXMpbi5wcmV2aW91cz1lO2Vsc2UgZm9yKGxldCByIGluIGUpdFtyXT1lW3JdO24uY3VycmVudD1udWxsLHRoaXMubmdPbkNoYW5nZXMoZSl9fWZ1bmN0aW9uIFhYKG4sZSx0LHIsaSl7Y29uc3Qgbz10aGlzLmRlY2xh'@; put 'cmVkSW5wdXRzW3JdLGE9RUgobil8fGZ1bmN0aW9uIFFYKG4sZSl7cmV0dXJuIG5bU0hdPWV9KG4se3ByZXZpb3VzOnFzLGN1cnJlbnQ6bnVsbH0pLGw9YS5jdXJyZW50fHwoYS5jdXJyZW50PXt9KSx1PWEucHJldmlvdXMsZz11W29dO2xbb109bmV3IEtYKGcmJmcuY3VycmVudFZhbHVlLHQs'@; put 'dT09PXFzKSxiSChuLGUsaSx0KX1jb25zdCBTSD0iX19uZ1NpbXBsZUNoYW5nZXNfXyI7ZnVuY3Rpb24gRUgobil7cmV0dXJuIG5bU0hdfHxudWxsfWNvbnN0IEM4PVtdLEdjPWZ1bmN0aW9uKG4sZT1udWxsLHQpe2ZvcihsZXQgcj0wO3I8QzgubGVuZ3RoO3IrKykoMCxDOFtyXSkobixlLHQp'@; put 'fTtmdW5jdGlvbiBNSChuLGUpe2ZvcihsZXQgdD1lLmRpcmVjdGl2ZVN0YXJ0LHI9ZS5kaXJlY3RpdmVFbmQ7dDxyO3QrKyl7Y29uc3Qgbz1uLmRhdGFbdF0udHlwZS5wcm90b3R5cGUse25nQWZ0ZXJDb250ZW50SW5pdDphLG5nQWZ0ZXJDb250ZW50Q2hlY2tlZDpsLG5nQWZ0ZXJWaWV3SW5p'@; put 'dDp1LG5nQWZ0ZXJWaWV3Q2hlY2tlZDpnLG5nT25EZXN0cm95OkV9PW87YSYmKG4uY29udGVudEhvb2tzPz89W10pLnB1c2goLXQsYSksbCYmKChuLmNvbnRlbnRIb29rcz8/PVtdKS5wdXNoKHQsbCksKG4uY29udGVudENoZWNrSG9va3M/Pz1bXSkucHVzaCh0LGwpKSx1JiYobi52aWV3SG9v'@; put 'a3M/Pz1bXSkucHVzaCgtdCx1KSxnJiYoKG4udmlld0hvb2tzPz89W10pLnB1c2godCxnKSwobi52aWV3Q2hlY2tIb29rcz8/PVtdKS5wdXNoKHQsZykpLG51bGwhPUUmJihuLmRlc3Ryb3lIb29rcz8/PVtdKS5wdXNoKHQsRSl9fWZ1bmN0aW9uIF9TKG4sZSx0KXtUSChuLGUsMyx0KX1mdW5j'@; put 'dGlvbiB5UyhuLGUsdCxyKXsoMyZuWzJdKT09PXQmJlRIKG4sZSx0LHIpfWZ1bmN0aW9uICRBKG4sZSl7bGV0IHQ9blsyXTsoMyZ0KT09PWUmJih0Jj0xNjM4Myx0Kz0xLG5bMl09dCl9ZnVuY3Rpb24gVEgobixlLHQscil7Y29uc3Qgbz1yPz8tMSxhPWUubGVuZ3RoLTE7bGV0IGw9MDtmb3Io'@; put 'bGV0IHU9dm9pZCAwIT09cj82NTUzNSZuWzE3XTowO3U8YTt1KyspaWYoIm51bWJlciI9PXR5cGVvZiBlW3UrMV0pe2lmKGw9ZVt1XSxudWxsIT1yJiZsPj1yKWJyZWFrfWVsc2UgZVt1XTwwJiYoblsxN10rPTY1NTM2KSwobDxvfHwtMT09bykmJihyUShuLHQsZSx1KSxuWzE3XT0oNDI5NDkw'@; put 'MTc2MCZuWzE3XSkrdSsyKSx1Kyt9ZnVuY3Rpb24geEgobixlKXtHYyg0LG4sZSk7Y29uc3QgdD1rKG51bGwpO3RyeXtlLmNhbGwobil9ZmluYWxseXtrKHQpLEdjKDUsbixlKX19ZnVuY3Rpb24gclEobixlLHQscil7Y29uc3QgaT10W3JdPDAsbz10W3IrMV0sbD1uW2k/LXRbcl06dFtyXV07'@; put 'aT9uWzJdPj4xNDxuWzE3XT4+MTYmJigzJm5bMl0pPT09ZSYmKG5bMl0rPTE2Mzg0LHhIKGwsbykpOnhIKGwsbyl9Y2xhc3MgX3l7ZmFjdG9yeTtuYW1lO2luamVjdEltcGw7cmVzb2x2aW5nPSExO2NhblNlZVZpZXdQcm92aWRlcnM7bXVsdGk7Y29tcG9uZW50UHJvdmlkZXJzO2luZGV4O3By'@; put 'b3ZpZGVyRmFjdG9yeTtjb25zdHJ1Y3RvcihlLHQscixpKXt0aGlzLmZhY3Rvcnk9ZSx0aGlzLm5hbWU9aSx0aGlzLmNhblNlZVZpZXdQcm92aWRlcnM9dCx0aGlzLmluamVjdEltcGw9cn19ZnVuY3Rpb24gazkobil7cmV0dXJuIDM9PT1ufHw0PT09bnx8Nj09PW59ZnVuY3Rpb24gUkgobil7'@; put 'cmV0dXJuIDY0PT09bi5jaGFyQ29kZUF0KDApfWZ1bmN0aW9uIFI5KG4sZSl7aWYobnVsbCE9PWUmJjAhPT1lLmxlbmd0aClpZihudWxsPT09bnx8MD09PW4ubGVuZ3RoKW49ZS5zbGljZSgpO2Vsc2V7bGV0IHQ9LTE7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IGk9ZVtyXTsi'@; put 'bnVtYmVyIj09dHlwZW9mIGk/dD1pOjA9PT10fHxYQShuLHQsaSwwLC0xPT09dHx8Mj09PXQ/ZVsrK3JdOm51bGwpfX1yZXR1cm4gbn1mdW5jdGlvbiBYQShuLGUsdCxyLGkpe2xldCBvPTAsYT1uLmxlbmd0aDtpZigtMT09PWUpYT0tMTtlbHNlIGZvcig7bzxuLmxlbmd0aDspe2NvbnN0IGw9'@; put 'bltvKytdO2lmKCJudW1iZXIiPT10eXBlb2YgbCl7aWYobD09PWUpe2E9LTE7YnJlYWt9aWYobD5lKXthPW8tMTticmVha319fWZvcig7bzxuLmxlbmd0aDspe2NvbnN0IGw9bltvXTtpZigibnVtYmVyIj09dHlwZW9mIGwpYnJlYWs7aWYobD09PXQpcmV0dXJuIHZvaWQobnVsbCE9PWkmJihu'@; put 'W28rMV09aSkpO28rKyxudWxsIT09aSYmbysrfS0xIT09YSYmKG4uc3BsaWNlKGEsMCxlKSxvPWErMSksbi5zcGxpY2UobysrLDAsdCksbnVsbCE9PWkmJm4uc3BsaWNlKG8rKywwLGkpfWZ1bmN0aW9uIFFBKG4pe3JldHVybi0xIT09bn1mdW5jdGlvbiB5NShuKXtyZXR1cm4gMzI3Njcmbn1m'@; put 'dW5jdGlvbiBieShuLGUpe2xldCB0PWZ1bmN0aW9uIG9RKG4pe3JldHVybiBuPj4xNn0obikscj1lO2Zvcig7dD4wOylyPXJbMTRdLHQtLTtyZXR1cm4gcn1sZXQgSkE9ITA7ZnVuY3Rpb24gd1Mobil7Y29uc3QgZT1KQTtyZXR1cm4gSkE9bixlfWxldCBhUT0wO2NvbnN0IEZnPXt9O2Z1bmN0'@; put 'aW9uIGVrKG4sZSl7Y29uc3QgdD1MSChuLGUpO2lmKC0xIT09dClyZXR1cm4gdDtjb25zdCByPWVbMV07ci5maXJzdENyZWF0ZVBhc3MmJihuLmluamVjdG9ySW5kZXg9ZS5sZW5ndGgsdGsoci5kYXRhLG4pLHRrKGUsbnVsbCksdGsoci5ibHVlcHJpbnQsbnVsbCkpO2NvbnN0IGk9Q1Mobixl'@; put 'KSxvPW4uaW5qZWN0b3JJbmRleDtpZihRQShpKSl7Y29uc3QgYT15NShpKSxsPWJ5KGksZSksdT1sWzFdLmRhdGE7Zm9yKGxldCBnPTA7Zzw4O2crKyllW28rZ109bFthK2ddfHVbYStnXX1yZXR1cm4gZVtvKzhdPWksb31mdW5jdGlvbiB0ayhuLGUpe24ucHVzaCgwLDAsMCwwLDAsMCwwLDAs'@; put 'ZSl9ZnVuY3Rpb24gTEgobixlKXtyZXR1cm4tMT09PW4uaW5qZWN0b3JJbmRleHx8bi5wYXJlbnQmJm4ucGFyZW50LmluamVjdG9ySW5kZXg9PT1uLmluamVjdG9ySW5kZXh8fG51bGw9PT1lW24uaW5qZWN0b3JJbmRleCs4XT8tMTpuLmluamVjdG9ySW5kZXh9ZnVuY3Rpb24gQ1MobixlKXtp'@; put 'ZihuLnBhcmVudCYmLTEhPT1uLnBhcmVudC5pbmplY3RvckluZGV4KXJldHVybiBuLnBhcmVudC5pbmplY3RvckluZGV4O2xldCB0PTAscj1udWxsLGk9ZTtmb3IoO251bGwhPT1pOyl7aWYocj1EOShpKSxudWxsPT09cilyZXR1cm4tMTtpZih0KyssaT1pWzE0XSwtMSE9PXIuaW5qZWN0b3JJ'@; put 'bmRleClyZXR1cm4gci5pbmplY3RvckluZGV4fHQ8PDE2fXJldHVybi0xfWZ1bmN0aW9uIG5rKG4sZSx0KXshZnVuY3Rpb24gc1EobixlLHQpe2xldCByOyJzdHJpbmciPT10eXBlb2YgdD9yPXQuY2hhckNvZGVBdCgwKXx8MDp0Lmhhc093blByb3BlcnR5KE8wKSYmKHI9dFtPMF0pLG51bGw9'@; put 'PXImJihyPXRbTzBdPWFRKyspO2NvbnN0IGk9MjU1JnI7ZS5kYXRhW24rKGk+PjUpXXw9MTw8aX0obixlLHQpfWZ1bmN0aW9uIE9IKG4sZSx0KXtpZig4JnR8fHZvaWQgMCE9PW4pcmV0dXJuIG47emEoKX1mdW5jdGlvbiBOSChuLGUsdCxyKXtpZig4JnQmJnZvaWQgMD09PXImJihyPW51bGwp'@; put 'LCEoMyZ0KSl7Y29uc3QgaT1uWzldLG89bHIodm9pZCAwKTt0cnl7cmV0dXJuIGk/aS5nZXQoZSxyLDgmdCk6aWkoZSxyLDgmdCl9ZmluYWxseXtscihvKX19cmV0dXJuIE9IKHIsMCx0KX1mdW5jdGlvbiBGSChuLGUsdCxyPTAsaSl7aWYobnVsbCE9PW4pe2lmKDIwNDgmZVsyXSYmISgyJnIp'@; put 'KXtjb25zdCBhPWZ1bmN0aW9uIGZRKG4sZSx0LHIsaSl7bGV0IG89bixhPWU7Zm9yKDtudWxsIT09byYmbnVsbCE9PWEmJjIwNDgmYVsyXSYmIXYzKGEpOyl7Y29uc3QgbD1QSChvLGEsdCwyfHIsRmcpO2lmKGwhPT1GZylyZXR1cm4gbDtsZXQgdT1vLnBhcmVudDtpZighdSl7Y29uc3QgZz1h'@; put 'WzIwXTtpZihnKXtjb25zdCBFPWcuZ2V0KHQsRmcscik7aWYoRSE9PUZnKXJldHVybiBFfXU9RDkoYSksYT1hWzE0XX1vPXV9cmV0dXJuIGl9KG4sZSx0LHIsRmcpO2lmKGEhPT1GZylyZXR1cm4gYX1jb25zdCBvPVBIKG4sZSx0LHIsRmcpO2lmKG8hPT1GZylyZXR1cm4gb31yZXR1cm4gTkgo'@; put 'ZSx0LHIsaSl9ZnVuY3Rpb24gUEgobixlLHQscixpKXtjb25zdCBvPWZ1bmN0aW9uIGRRKG4pe2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gbi5jaGFyQ29kZUF0KDApfHwwO2NvbnN0IGU9bi5oYXNPd25Qcm9wZXJ0eShPMCk/bltPMF06dm9pZCAwO3JldHVybiJudW1iZXIiPT10eXBl'@; put 'b2YgZT9lPj0wPzI1NSZlOmhROmV9KHQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvKXtpZighWVAoZSxuLHIpKXJldHVybiAxJnI/T0goaSwwLHIpOk5IKGUsdCxyLGkpO3RyeXtsZXQgYTtpZihhPW8ociksbnVsbCE9YXx8OCZyKXJldHVybiBhO3phKCl9ZmluYWxseXskUCgpfX1lbHNlIGlm'@; put 'KCJudW1iZXIiPT10eXBlb2Ygbyl7bGV0IGE9bnVsbCxsPUxIKG4sZSksdT0tMSxnPTEmcj9lWzE1XVs1XTpudWxsO2ZvcigoLTE9PT1sfHw0JnIpJiYodT0tMT09PWw/Q1MobixlKTplW2wrOF0sLTEhPT11JiZWSChyLCExKT8oYT1lWzFdLGw9eTUodSksZT1ieSh1LGUpKTpsPS0xKTstMSE9'@; put 'PWw7KXtjb25zdCBFPWVbMV07aWYoSEgobyxsLEUuZGF0YSkpe2NvbnN0IE89Y1EobCxlLHQsYSxyLGcpO2lmKE8hPT1GZylyZXR1cm4gT311PWVbbCs4XSwtMSE9PXUmJlZIKHIsZVsxXS5kYXRhW2wrOF09PT1nKSYmSEgobyxsLGUpPyhhPUUsbD15NSh1KSxlPWJ5KHUsZSkpOmw9LTF9fXJl'@; put 'dHVybiBpfWZ1bmN0aW9uIGNRKG4sZSx0LHIsaSxvKXtjb25zdCBhPWVbMV0sbD1hLmRhdGFbbis4XSxFPUk5KGwsYSx0LG51bGw9PXI/d2YobCkmJkpBOnIhPWEmJiEhKDMmbC50eXBlKSwxJmkmJm89PT1sKTtyZXR1cm4gbnVsbCE9PUU/d3koZSxhLEUsbCxpKTpGZ31mdW5jdGlvbiBJOShu'@; put 'LGUsdCxyLGkpe2NvbnN0IG89bi5wcm92aWRlckluZGV4ZXMsYT1lLmRhdGEsbD0xMDQ4NTc1Jm8sdT1uLmRpcmVjdGl2ZVN0YXJ0LEU9bz4+MjAsWj1pP2wrRTpuLmRpcmVjdGl2ZUVuZDtmb3IobGV0IGVlPXI/bDpsK0U7ZWU8WjtlZSsrKXtjb25zdCB2ZT1hW2VlXTtpZihlZTx1JiZ0PT09'@; put 'dmV8fGVlPj11JiZ2ZS50eXBlPT09dClyZXR1cm4gZWV9aWYoaSl7Y29uc3QgZWU9YVt1XTtpZihlZSYmczEoZWUpJiZlZS50eXBlPT09dClyZXR1cm4gdX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB3eShuLGUsdCxyLGkpe2xldCBvPW5bdF07Y29uc3QgYT1lLmRhdGE7aWYobyBpbnN0YW5jZW9m'@; put 'IF95KXtjb25zdCBsPW87aWYobC5yZXNvbHZpbmcpdGhyb3cgZnVuY3Rpb24gem8obil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5uYW1lfHxuLnRvU3RyaW5nKCk6Im9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi50eXBlP24udHlwZS5uYW1l'@; put 'fHxuLnR5cGUudG9TdHJpbmcoKTppYShuKX0oYVt0XSksTm0oKTtjb25zdCB1PXdTKGwuY2FuU2VlVmlld1Byb3ZpZGVycyk7bC5yZXNvbHZpbmc9ITA7Y29uc3QgTz1sLmluamVjdEltcGw/bHIobC5pbmplY3RJbXBsKTpudWxsO1lQKG4sciwwKTt0cnl7bz1uW3RdPWwuZmFjdG9yeSh2b2lk'@; put 'IDAsaSxhLG4sciksZS5maXJzdENyZWF0ZVBhc3MmJnQ+PXIuZGlyZWN0aXZlU3RhcnQmJmZ1bmN0aW9uIG5RKG4sZSx0KXtjb25zdHtuZ09uQ2hhbmdlczpyLG5nT25Jbml0OmksbmdEb0NoZWNrOm99PWUudHlwZS5wcm90b3R5cGU7aWYocil7Y29uc3QgYT13SChlKTsodC5wcmVPcmRlckhv'@; put 'b2tzPz89W10pLnB1c2gobixhKSwodC5wcmVPcmRlckNoZWNrSG9va3M/Pz1bXSkucHVzaChuLGEpfWkmJih0LnByZU9yZGVySG9va3M/Pz1bXSkucHVzaCgwLW4saSksbyYmKCh0LnByZU9yZGVySG9va3M/Pz1bXSkucHVzaChuLG8pLCh0LnByZU9yZGVyQ2hlY2tIb29rcz8/PVtdKS5wdXNo'@; put 'KG4sbykpfSh0LGFbdF0sZSl9ZmluYWxseXtudWxsIT09TyYmbHIoTyksd1ModSksbC5yZXNvbHZpbmc9ITEsJFAoKX19cmV0dXJuIG99ZnVuY3Rpb24gSEgobixlLHQpe3JldHVybiEhKHRbZSsobj4+NSldJjE8PG4pfWZ1bmN0aW9uIFZIKG4sZSl7cmV0dXJuISgyJm58fDEmbiYmZSl9Y2xh'@; put 'c3MgQ2R7X3ROb2RlO19sVmlldztjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3ROb2RlPWUsdGhpcy5fbFZpZXc9dH1nZXQoZSx0LHIpe3JldHVybiBGSCh0aGlzLl90Tm9kZSx0aGlzLl9sVmlldyxlLGlvKHIpLHQpfX1mdW5jdGlvbiBoUSgpe3JldHVybiBuZXcgQ2QoeWkoKSxpdCgpKX1mdW5j'@; put 'dGlvbiB3YShuKXtyZXR1cm4gVGYoKCk9Pntjb25zdCBlPW4ucHJvdG90eXBlLmNvbnN0cnVjdG9yLHQ9ZVt0ZF18fEJIKGUpLHI9T2JqZWN0LnByb3RvdHlwZTtsZXQgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yO2Zvcig7aSYmaSE9PXI7KXtjb25z'@; put 'dCBvPWlbdGRdfHxCSChpKTtpZihvJiZvIT09dClyZXR1cm4gbztpPU9iamVjdC5nZXRQcm90b3R5cGVPZihpKX1yZXR1cm4gbz0+bmV3IG99KX1mdW5jdGlvbiBCSChuKXtyZXR1cm4gVnIobik/KCk9Pntjb25zdCBlPUJIKGZhKG4pKTtyZXR1cm4gZSYmZSgpfTpuYyhuKX1mdW5jdGlvbiBE'@; put 'OShuKXtjb25zdCBlPW5bMV0sdD1lLnR5cGU7cmV0dXJuIDI9PT10P2UuZGVjbFROb2RlOjE9PT10P25bNV06bnVsbH1mdW5jdGlvbiB3NShuKXtyZXR1cm4gZnVuY3Rpb24gbFEobixlKXtpZigiY2xhc3MiPT09ZSlyZXR1cm4gbi5jbGFzc2VzO2lmKCJzdHlsZSI9PT1lKXJldHVybiBuLnN0'@; put 'eWxlcztjb25zdCB0PW4uYXR0cnM7aWYodCl7Y29uc3Qgcj10Lmxlbmd0aDtsZXQgaT0wO2Zvcig7aTxyOyl7Y29uc3Qgbz10W2ldO2lmKGs5KG8pKWJyZWFrO2lmKDA9PT1vKWkrPTI7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIG8pZm9yKGkrKztpPHImJiJzdHJpbmciPT10eXBlb2YgdFtp'@; put 'XTspaSsrO2Vsc2V7aWYobz09PWUpcmV0dXJuIHRbaSsxXTtpKz0yfX19cmV0dXJuIG51bGx9KHlpKCksbil9ZnVuY3Rpb24gZ1EoKXtyZXR1cm4gQTgoeWkoKSxpdCgpKX1mdW5jdGlvbiBBOChuLGUpe3JldHVybiBuZXcgbm8oWWkobixlKSl9bGV0IG5vPSgoKT0+Y2xhc3MgbntuYXRpdmVF'@; put 'bGVtZW50O2NvbnN0cnVjdG9yKHQpe3RoaXMubmF0aXZlRWxlbWVudD10fXN0YXRpYyBfX05HX0VMRU1FTlRfSURfXz1nUX0pKCk7ZnVuY3Rpb24gVUgobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBubz9uLm5hdGl2ZUVsZW1lbnQ6bn1mdW5jdGlvbiBtUSgpe3JldHVybiB0aGlzLl9yZXN1bHRz'@; put 'W1N5bWJvbC5pdGVyYXRvcl0oKX1jbGFzcyBrOHtfZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk7ZGlydHk9ITA7X29uRGlydHk9dm9pZCAwO19yZXN1bHRzPVtdO19jaGFuZ2VzRGV0ZWN0ZWQ9ITE7X2NoYW5nZXM9dm9pZCAwO2xlbmd0aD0wO2ZpcnN0PXZvaWQgMDtsYXN0PXZvaWQgMDtnZXQg'@; put 'Y2hhbmdlcygpe3JldHVybiB0aGlzLl9jaGFuZ2VzPz89bmV3IE1yfWNvbnN0cnVjdG9yKGU9ITEpe3RoaXMuX2VtaXREaXN0aW5jdENoYW5nZXNPbmx5PWV9Z2V0KGUpe3JldHVybiB0aGlzLl9yZXN1bHRzW2VdfW1hcChlKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAoZSl9ZmlsdGVyKGUp'@; put 'e3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcihlKX1maW5kKGUpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQoZSl9cmVkdWNlKGUsdCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKGUsdCl9Zm9yRWFjaChlKXt0aGlzLl9yZXN1bHRzLmZvckVhY2goZSl9c29tZShlKXtyZXR1cm4g'@; put 'dGhpcy5fcmVzdWx0cy5zb21lKGUpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldChlLHQpe3RoaXMuZGlydHk9ITE7Y29uc3Qgcj1mdW5jdGlvbiBEdShuKXtyZXR1cm4gbi5mbGF0'@; put 'KE51bWJlci5QT1NJVElWRV9JTkZJTklUWSl9KGUpOyh0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWQ9IWZ1bmN0aW9uIHkyKG4sZSx0KXtpZihuLmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKXtsZXQgaT1uW3JdLG89ZVtyXTtpZih0JiYoaT10KGkp'@; put 'LG89dChvKSksbyE9PWkpcmV0dXJuITF9cmV0dXJuITB9KHRoaXMuX3Jlc3VsdHMscix0KSkmJih0aGlzLl9yZXN1bHRzPXIsdGhpcy5sZW5ndGg9ci5sZW5ndGgsdGhpcy5sYXN0PXJbdGhpcy5sZW5ndGgtMV0sdGhpcy5maXJzdD1yWzBdKX1ub3RpZnlPbkNoYW5nZXMoKXt2b2lkIDAhPT10'@; put 'aGlzLl9jaGFuZ2VzJiYodGhpcy5fY2hhbmdlc0RldGVjdGVkfHwhdGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHkpJiZ0aGlzLl9jaGFuZ2VzLm5leHQodGhpcyl9b25EaXJ0eShlKXt0aGlzLl9vbkRpcnR5PWV9c2V0RGlydHkoKXt0aGlzLmRpcnR5PSEwLHRoaXMuX29uRGlydHk/Ligp'@; put 'fWRlc3Ryb3koKXt2b2lkIDAhPT10aGlzLl9jaGFuZ2VzJiYodGhpcy5fY2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuX2NoYW5nZXMudW5zdWJzY3JpYmUoKSl9W1N5bWJvbC5pdGVyYXRvcl09bVF9ZnVuY3Rpb24gU3kobil7cmV0dXJuISgxMjgmfm4uZmxhZ3MpfXZhciBFeT1mdW5jdGlvbihu'@; put 'KXtyZXR1cm4gbltuLk9uUHVzaD0wXT0iT25QdXNoIixuW24uRGVmYXVsdD0xXT0iRGVmYXVsdCIsbn0oRXl8fHt9KTtjb25zdCBhaz1uZXcgTWFwO2xldCBiUT0wO2Z1bmN0aW9uIE15KG4pe2FrLmRlbGV0ZShuWzE5XSl9Y29uc3QgdWs9Il9fbmdDb250ZXh0X18iO2Z1bmN0aW9uIGowKG4s'@; put 'ZSl7enMoZSk/KG5bdWtdPWVbMTldLGZ1bmN0aW9uIENRKG4pe2FrLnNldChuWzE5XSxuKX0oZSkpOm5bdWtdPWV9ZnVuY3Rpb24gS0gobil7cmV0dXJuIFFIKG5bMTJdKX1mdW5jdGlvbiBYSChuKXtyZXR1cm4gUUgobls0XSl9ZnVuY3Rpb24gUUgobil7Zm9yKDtudWxsIT09biYmIVl1KG4p'@; put 'OyluPW5bNF07cmV0dXJuIG59bGV0IHBrO2Z1bmN0aW9uIFM1KCl7aWYodm9pZCAwIT09cGspcmV0dXJuIHBrO2lmKHR5cGVvZiBkb2N1bWVudDwidSIpcmV0dXJuIGRvY3VtZW50O3Rocm93IG5ldyBXbigyMTAsITEpfWNvbnN0IEw5PW5ldyBFcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFj'@; put 'dG9yeTooKT0+RlF9KSxGUT0ibmciLHNWPW5ldyBFcigiIiksbGQ9bmV3IEVyKCIiLHtwcm92aWRlZEluOiJwbGF0Zm9ybSIsZmFjdG9yeTooKT0+InVua25vd24ifSksbFY9bmV3IEVyKCIiKSxjVj1uZXcgRXIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PlM1KCkuYm9keT8u'@; put 'cXVlcnlTZWxlY3RvcigiW25nQ3NwTm9uY2VdIik/LmdldEF0dHJpYnV0ZSgibmdDc3BOb25jZSIpfHxudWxsfSksV1E9bmV3IEVyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4hMX0pLCRRPW5ldyBFcigiIik7ZnVuY3Rpb24gSVMobil7cmV0dXJuISgzMiZ+bi5mbGFncyl9'@; put 'ZnVuY3Rpb24gVmsobixlKXtjb25zdCB0PW4uY29udGVudFF1ZXJpZXM7aWYobnVsbCE9PXQpe2NvbnN0IHI9ayhudWxsKTt0cnl7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKz0yKXtjb25zdCBhPXRbaSsxXTtpZigtMSE9PWEpe2NvbnN0IGw9bi5kYXRhW2FdO3JTKHRbaV0pLGwuY29udGVu'@; put 'dFF1ZXJpZXMoMixlW2FdLGEpfX19ZmluYWxseXtrKHIpfX19ZnVuY3Rpb24gTFMobixlLHQpe3JTKDApO2NvbnN0IHI9ayhudWxsKTt0cnl7ZShuLHQpfWZpbmFsbHl7ayhyKX19ZnVuY3Rpb24gQmsobixlLHQpe2lmKHJkKGUpKXtjb25zdCByPWsobnVsbCk7dHJ5e2NvbnN0IG89ZS5kaXJl'@; put 'Y3RpdmVFbmQ7Zm9yKGxldCBhPWUuZGlyZWN0aXZlU3RhcnQ7YTxvO2ErKyl7Y29uc3QgbD1uLmRhdGFbYV07bC5jb250ZW50UXVlcmllcyYmbC5jb250ZW50UXVlcmllcygxLHRbYV0sYSl9fWZpbmFsbHl7ayhyKX19fXZhciBRbT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLkVtdWxhdGVkPTBd'@; put 'PSJFbXVsYXRlZCIsbltuLk5vbmU9Ml09Ik5vbmUiLG5bbi5TaGFkb3dEb209M109IlNoYWRvd0RvbSIsbn0oUW18fHt9KTtjb25zdCBPVj17Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjoic3ZnIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI6Im1hdGgifTtsZXQg'@; put 'SFMsTHk7ZnVuY3Rpb24gTzgobil7cmV0dXJuIGZ1bmN0aW9uIFVrKCl7aWYodm9pZCAwPT09SFMmJihIUz1udWxsLElsLnRydXN0ZWRUeXBlcykpdHJ5e0hTPUlsLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIiLHtjcmVhdGVIVE1MOm49Pm4sY3JlYXRlU2NyaXB0Om49Pm4s'@; put 'Y3JlYXRlU2NyaXB0VVJMOm49Pm59KX1jYXRjaHt9cmV0dXJuIEhTfSgpPy5jcmVhdGVIVE1MKG4pfHxufWZ1bmN0aW9uIHprKCl7aWYodm9pZCAwPT09THkmJihMeT1udWxsLElsLnRydXN0ZWRUeXBlcykpdHJ5e0x5PUlsLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIjdW5z'@; put 'YWZlLWJ5cGFzcyIse2NyZWF0ZUhUTUw6bj0+bixjcmVhdGVTY3JpcHQ6bj0+bixjcmVhdGVTY3JpcHRVUkw6bj0+bn0pfWNhdGNoe31yZXR1cm4gTHl9ZnVuY3Rpb24gRlYobil7cmV0dXJuIHprKCk/LmNyZWF0ZUhUTUwobil8fG59ZnVuY3Rpb24gSFYobil7cmV0dXJuIHprKCk/LmNyZWF0'@; put 'ZVNjcmlwdFVSTChuKXx8bn1jbGFzcyBUNXtjaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O2NvbnN0cnVjdG9yKGUpe3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT1lfXRvU3RyaW5nKCl7cmV0dXJuYFNhZmVWYWx1ZSBtdXN0IHVzZSBbcHJv'@; put 'cGVydHldPWJpbmRpbmc6ICR7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5fSAoc2VlICR7VGl9KWB9fWNsYXNzIHBKIGV4dGVuZHMgVDV7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iSFRNTCJ9fWNsYXNzIGdKIGV4dGVuZHMgVDV7Z2V0VHlwZU5hbWUoKXtyZXR1cm4i'@; put 'U3R5bGUifX1jbGFzcyBtSiBleHRlbmRzIFQ1e2dldFR5cGVOYW1lKCl7cmV0dXJuIlNjcmlwdCJ9fWNsYXNzIHZKIGV4dGVuZHMgVDV7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iVVJMIn19Y2xhc3MgVlYgZXh0ZW5kcyBUNXtnZXRUeXBlTmFtZSgpe3JldHVybiJSZXNvdXJjZVVSTCJ9fWZ1bmN0'@; put 'aW9uIGsyKG4pe3JldHVybiBuIGluc3RhbmNlb2YgVDU/bi5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Om59ZnVuY3Rpb24gSGcobixlKXtjb25zdCB0PWZ1bmN0aW9uIF9KKG4pe3JldHVybiBuIGluc3RhbmNlb2YgVDUmJm4uZ2V0VHlwZU5hbWUoKXx8bnVsbH0obik7'@; put 'aWYobnVsbCE9dCYmdCE9PWUpe2lmKCJSZXNvdXJjZVVSTCI9PT10JiYiVVJMIj09PWUpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKGBSZXF1aXJlZCBhIHNhZmUgJHtlfSwgZ290IGEgJHt0fSAoc2VlICR7VGl9KWApfXJldHVybiB0PT09ZX1jbGFzcyBTSntpbmVydERvY3VtZW50SGVscGVy'@; put 'O2NvbnN0cnVjdG9yKGUpe3RoaXMuaW5lcnREb2N1bWVudEhlbHBlcj1lfWdldEluZXJ0Qm9keUVsZW1lbnQoZSl7ZT0iPGJvZHk+PHJlbW92ZT48L3JlbW92ZT4iK2U7dHJ5e2NvbnN0IHQ9KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoTzgoZSksInRleHQvaHRtbCIp'@; put 'LmJvZHk7cmV0dXJuIG51bGw9PT10P3RoaXMuaW5lcnREb2N1bWVudEhlbHBlci5nZXRJbmVydEJvZHlFbGVtZW50KGUpOih0LmZpcnN0Q2hpbGQ/LnJlbW92ZSgpLHQpfWNhdGNoe3JldHVybiBudWxsfX19Y2xhc3MgRUp7ZGVmYXVsdERvYztpbmVydERvY3VtZW50O2NvbnN0cnVjdG9yKGUp'@; put 'e3RoaXMuZGVmYXVsdERvYz1lLHRoaXMuaW5lcnREb2N1bWVudD10aGlzLmRlZmF1bHREb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJzYW5pdGl6YXRpb24taW5lcnQiKX1nZXRJbmVydEJvZHlFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0'@; put 'ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIHQuaW5uZXJIVE1MPU84KGUpLHR9fWNvbnN0IFVWPS9eKD8hamF2YXNjcmlwdDopKD86W2EtejAtOSsuLV0rOnxbXiY6XC8/I10qKD86W1wvPyNdfCQpKS9pO2Z1bmN0aW9uIFZTKG4pe3JldHVybihuPVN0cmluZyhuKSkubWF0Y2goVVYpP246'@; put 'InVuc2FmZToiK259ZnVuY3Rpb24gdzMobil7Y29uc3QgZT17fTtmb3IoY29uc3QgdCBvZiBuLnNwbGl0KCIsIikpZVt0XT0hMDtyZXR1cm4gZX1mdW5jdGlvbiBWOSguLi5uKXtjb25zdCBlPXt9O2Zvcihjb25zdCB0IG9mIG4pZm9yKGNvbnN0IHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIp'@; put 'JiYoZVtyXT0hMCk7cmV0dXJuIGV9Y29uc3QgV2s9dzMoImFyZWEsYnIsY29sLGhyLGltZyx3YnIiKSx6Vj13MygiY29sZ3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFlrPXczKCJycCxydCIpLEI5PVY5KFdrLFY5KHpWLHczKCJhZGRyZXNzLGFydGljbGUs'@; put 'YXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFy'@; put 'eSx0YWJsZSx1bCIpKSxWOShZayx3MygiYSxhYmJyLGFjcm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxzcGFuLHN0'@; put 'cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLFY5KFlrLHpWKSksTjg9dzMoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0ZW10eXBlLGxvbmdkZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLEJTPVY5KE44LHczKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixh'@; put 'bHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRk'@; put 'ZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFw'@; put 'ZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzcmNzZXQsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgiKSx3MygiYXJpYS1hY3RpdmVkZXNjZW5kYW50LGFyaWEtYXRvbWljLGFyaWEtYXV0'@; put 'b2NvbXBsZXRlLGFyaWEtYnVzeSxhcmlhLWNoZWNrZWQsYXJpYS1jb2xjb3VudCxhcmlhLWNvbGluZGV4LGFyaWEtY29sc3BhbixhcmlhLWNvbnRyb2xzLGFyaWEtY3VycmVudCxhcmlhLWRlc2NyaWJlZGJ5LGFyaWEtZGV0YWlscyxhcmlhLWRpc2FibGVkLGFyaWEtZHJvcGVmZmVjdCxhcmlh'@; put 'LWVycm9ybWVzc2FnZSxhcmlhLWV4cGFuZGVkLGFyaWEtZmxvd3RvLGFyaWEtZ3JhYmJlZCxhcmlhLWhhc3BvcHVwLGFyaWEtaGlkZGVuLGFyaWEtaW52YWxpZCxhcmlhLWtleXNob3J0Y3V0cyxhcmlhLWxhYmVsLGFyaWEtbGFiZWxsZWRieSxhcmlhLWxldmVsLGFyaWEtbGl2ZSxhcmlhLW1v'@; put 'ZGFsLGFyaWEtbXVsdGlsaW5lLGFyaWEtbXVsdGlzZWxlY3RhYmxlLGFyaWEtb3JpZW50YXRpb24sYXJpYS1vd25zLGFyaWEtcGxhY2Vob2xkZXIsYXJpYS1wb3NpbnNldCxhcmlhLXByZXNzZWQsYXJpYS1yZWFkb25seSxhcmlhLXJlbGV2YW50LGFyaWEtcmVxdWlyZWQsYXJpYS1yb2xlZGVz'@; put 'Y3JpcHRpb24sYXJpYS1yb3djb3VudCxhcmlhLXJvd2luZGV4LGFyaWEtcm93c3BhbixhcmlhLXNlbGVjdGVkLGFyaWEtc2V0c2l6ZSxhcmlhLXNvcnQsYXJpYS12YWx1ZW1heCxhcmlhLXZhbHVlbWluLGFyaWEtdmFsdWVub3csYXJpYS12YWx1ZXRleHQiKSksQUo9dzMoInNjcmlwdCxzdHls'@; put 'ZSx0ZW1wbGF0ZSIpO2NsYXNzIGtKe3Nhbml0aXplZFNvbWV0aGluZz0hMTtidWY9W107c2FuaXRpemVDaGlsZHJlbihlKXtsZXQgdD1lLmZpcnN0Q2hpbGQscj0hMCxpPVtdO2Zvcig7dDspaWYodC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFP3I9dGhpcy5zdGFydEVsZW1lbnQodCk6'@; put 'dC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP3RoaXMuY2hhcnModC5ub2RlVmFsdWUpOnRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLHImJnQuZmlyc3RDaGlsZClpLnB1c2godCksdD1ESih0KTtlbHNlIGZvcig7dDspe3Qubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmdGhpcy5l'@; put 'bmRFbGVtZW50KHQpO2xldCBvPUlKKHQpO2lmKG8pe3Q9bzticmVha310PWkucG9wKCl9cmV0dXJuIHRoaXMuYnVmLmpvaW4oIiIpfXN0YXJ0RWxlbWVudChlKXtjb25zdCB0PU95KGUpLnRvTG93ZXJDYXNlKCk7aWYoIUI5Lmhhc093blByb3BlcnR5KHQpKXJldHVybiB0aGlzLnNhbml0aXpl'@; put 'ZFNvbWV0aGluZz0hMCwhQUouaGFzT3duUHJvcGVydHkodCk7dGhpcy5idWYucHVzaCgiPCIpLHRoaXMuYnVmLnB1c2godCk7Y29uc3Qgcj1lLmF0dHJpYnV0ZXM7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IG89ci5pdGVtKGkpLGE9by5uYW1lLGw9YS50b0xvd2VyQ2FzZSgp'@; put 'O2lmKCFCUy5oYXNPd25Qcm9wZXJ0eShsKSl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITA7Y29udGludWV9bGV0IHU9by52YWx1ZTtOOFtsXSYmKHU9VlModSkpLHRoaXMuYnVmLnB1c2goIiAiLGEsJz0iJyxaVih1KSwnIicpfXJldHVybiB0aGlzLmJ1Zi5wdXNoKCI+IiksITB9ZW5kRWxl'@; put 'bWVudChlKXtjb25zdCB0PU95KGUpLnRvTG93ZXJDYXNlKCk7QjkuaGFzT3duUHJvcGVydHkodCkmJiFXay5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaCh0KSx0aGlzLmJ1Zi5wdXNoKCI+IikpfWNoYXJzKGUpe3RoaXMuYnVmLnB1c2goWlYo'@; put 'ZSkpfX1mdW5jdGlvbiBJSihuKXtjb25zdCBlPW4ubmV4dFNpYmxpbmc7aWYoZSYmbiE9PWUucHJldmlvdXNTaWJsaW5nKXRocm93IFlWKGUpO3JldHVybiBlfWZ1bmN0aW9uIERKKG4pe2NvbnN0IGU9bi5maXJzdENoaWxkO2lmKGUmJmZ1bmN0aW9uIFJKKG4sZSl7cmV0dXJuKG4uY29tcGFy'@; put 'ZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpIT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQll9KG4sZSkpdGhyb3cgWVYoZSk7cmV0dXJuIGV9ZnVuY3Rpb24gT3kobil7Y29uc3QgZT1uLm5vZGVOYW1lO3JldHVybiJz'@; put 'dHJpbmciPT10eXBlb2YgZT9lOiJGT1JNIn1mdW5jdGlvbiBZVihuKXtyZXR1cm4gbmV3IEVycm9yKGBGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogJHtuLm91dGVySFRNTH1gKX1jb25zdCBMSj0vW1x1RDgwMC1cdURCRkZdW1x1REMw'@; put 'MC1cdURGRkZdL2csT0o9LyhbXlwjLX4gfCFdKS9nO2Z1bmN0aW9uIFpWKG4pe3JldHVybiBuLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKExKLGZ1bmN0aW9uKGUpe3JldHVybiImIyIrKDEwMjQqKGUuY2hhckNvZGVBdCgwKS01NTI5NikrKGUuY2hhckNvZGVBdCgxKS01NjMyMCkr'@; put 'NjU1MzYpKyI7In0pLnJlcGxhY2UoT0osZnVuY3Rpb24oZSl7cmV0dXJuIiYjIitlLmNoYXJDb2RlQXQoMCkrIjsifSkucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9bGV0IGpTO2Z1bmN0aW9uIEdWKG4sZSl7bGV0IHQ9bnVsbDt0cnl7alM9alN8fGZ1bmN0aW9u'@; put 'IGpWKG4pe2NvbnN0IGU9bmV3IEVKKG4pO3JldHVybiBmdW5jdGlvbiBNSigpe3RyeXtyZXR1cm4hIShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKE84KCIiKSwidGV4dC9odG1sIil9Y2F0Y2h7cmV0dXJuITF9fSgpP25ldyBTSihlKTplfShuKTtsZXQgcj1lP1N0cmlu'@; put 'ZyhlKToiIjt0PWpTLmdldEluZXJ0Qm9keUVsZW1lbnQocik7bGV0IGk9NSxvPXI7ZG97aWYoMD09PWkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBpbnB1dCBpcyB1bnN0YWJsZSIpO2ktLSxyPW8sbz10LmlubmVySFRNTCx0PWpTLmdldElu'@; put 'ZXJ0Qm9keUVsZW1lbnQocil9d2hpbGUociE9PW8pO3JldHVybiBPOCgobmV3IGtKKS5zYW5pdGl6ZUNoaWxkcmVuKFprKHQpfHx0KSl9ZmluYWxseXtpZih0KXtjb25zdCByPVprKHQpfHx0O2Zvcig7ci5maXJzdENoaWxkOylyLmZpcnN0Q2hpbGQucmVtb3ZlKCl9fX1mdW5jdGlvbiBaayhu'@; put 'KXtyZXR1cm4iY29udGVudCJpbiBuJiZmdW5jdGlvbiBOSihuKXtyZXR1cm4gbi5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiVEVNUExBVEUiPT09bi5ub2RlTmFtZX0obik/bi5jb250ZW50Om51bGx9Y29uc3QgRko9L14+fF4tPnw8IS0tfC0tPnwtLSE+fDwhLSQvZyxQSj0vKDx8'@; put 'PikvZztmdW5jdGlvbiAkayhuLGUpe3JldHVybiBuLmNyZWF0ZUNvbW1lbnQoZnVuY3Rpb24gJFYobil7cmV0dXJuIG4ucmVwbGFjZShGSixlPT5lLnJlcGxhY2UoUEosIlx1MjAwYiQxXHUyMDBiIikpfShlKSl9ZnVuY3Rpb24gVVMobixlLHQpe3JldHVybiBuLmNyZWF0ZUVsZW1lbnQoZSx0'@; put 'KX1mdW5jdGlvbiBGOChuLGUsdCxyLGkpe24uaW5zZXJ0QmVmb3JlKGUsdCxyLGkpfWZ1bmN0aW9uIEtWKG4sZSx0KXtuLmFwcGVuZENoaWxkKGUsdCl9ZnVuY3Rpb24gWFYobixlLHQscixpKXtudWxsIT09cj9GOChuLGUsdCxyLGkpOktWKG4sZSx0KX1mdW5jdGlvbiBOeShuLGUsdCxyKXtu'@; put 'LnJlbW92ZUNoaWxkKG51bGwsZSx0LHIpfWZ1bmN0aW9uIEpWKG4sZSx0KXtjb25zdHttZXJnZWRBdHRyczpyLGNsYXNzZXM6aSxzdHlsZXM6b309dDtudWxsIT09ciYmZnVuY3Rpb24geXkobixlLHQpe2xldCByPTA7Zm9yKDtyPHQubGVuZ3RoOyl7Y29uc3QgaT10W3JdO2lmKCJudW1iZXIi'@; put 'PT10eXBlb2YgaSl7aWYoMCE9PWkpYnJlYWs7cisrO2NvbnN0IG89dFtyKytdLGE9dFtyKytdLGw9dFtyKytdO24uc2V0QXR0cmlidXRlKGUsYSxsLG8pfWVsc2V7Y29uc3Qgbz1pLGE9dFsrK3JdO1JIKG8pP24uc2V0UHJvcGVydHkoZSxvLGEpOm4uc2V0QXR0cmlidXRlKGUsbyxhKSxyKyt9'@; put 'fX0obixlLHIpLG51bGwhPT1pJiZmdW5jdGlvbiBCSihuLGUsdCl7IiI9PT10P24ucmVtb3ZlQXR0cmlidXRlKGUsImNsYXNzIik6bi5zZXRBdHRyaWJ1dGUoZSwiY2xhc3MiLHQpfShuLGUsaSksbnVsbCE9PW8mJmZ1bmN0aW9uIFZKKG4sZSx0KXtuLnNldEF0dHJpYnV0ZShlLCJzdHlsZSIs'@; put 'dCl9KG4sZSxvKX1mdW5jdGlvbiB4NShuLGUsdCl7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09dCYmaUIoZSx0KSE9PSRlLkhUTUwpcmV0dXJuIG47Y29uc3Qgcj1GeSgpO3JldHVybiByP0ZWKHIuc2FuaXRpemUoJGUuSFRNTCxuKXx8IiIpOkhnKG4sIkhUTUwiKT9GVihrMihuKSk6R1YoUzUo'@; put 'KSxpYShuKSl9ZnVuY3Rpb24gS2sobil7Y29uc3QgZT1GeSgpO3JldHVybiBlP2Uuc2FuaXRpemUoJGUuVVJMLG4pfHwiIjpIZyhuLCJVUkwiKT9rMihuKTpWUyhpYShuKSl9ZnVuY3Rpb24gWGsobil7Y29uc3QgZT1GeSgpO2lmKGUpcmV0dXJuIEhWKGUuc2FuaXRpemUoJGUuUkVTT1VSQ0Vf'@; put 'VVJMLG4pfHwiIik7aWYoSGcobiwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gSFYoazIobikpO3Rocm93IG5ldyBXbig5MDQsITEpfWZ1bmN0aW9uIHJCKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gekoobixlKXtzd2l0Y2goaUIobixlKSl7Y2FzZSAkZS5SRVNPVVJDRV9VUkw6cmV0dXJuIFhrO2Nh'@; put 'c2UgJGUuVVJMOnJldHVybiBLaztkZWZhdWx0OnJldHVybiBudWxsfX0oZSx0KT8uKG4pPz9ufWZ1bmN0aW9uIEZ5KCl7Y29uc3Qgbj1pdCgpO3JldHVybiBuJiZuWzEwXS5zYW5pdGl6ZXJ9ZnVuY3Rpb24gaUIobixlKXtjb25zdFt0LHJdPWZ1bmN0aW9uIG9CKG4pe2NvbnN0IGU9ZnVuY3Rp'@; put 'b24gcWsobixlPSEwKXtpZigiOiIhPW5bMF0pcmV0dXJuW251bGwsbl07Y29uc3QgdD1uLmluZGV4T2YoIjoiLDEpO2lmKC0xPT09dCl7aWYoZSl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZvcm1hdCAiJHtufSIgZXhwZWN0aW5nICI6bmFtZXNwYWNlOm5hbWUiYCk7cmV0dXJuW251'@; put 'bGwsbl19cmV0dXJuW24uc2xpY2UoMSx0KSxuLnNsaWNlKHQrMSldfShuPW4udG9Mb3dlckNhc2UoKSwhMSk7aWYoZVswXSlyZXR1cm4gZTtjb25zdCByPS0xPT09b2goKT9udWxsOnkzKCk7bGV0IGk9cj8ubmFtZXNwYWNlO2lmKCIjaG9zdCI9PT1uJiYyPT09cj8udHlwZSl7Y29uc3Qgbz1Z'@; put 'aShyLGl0KCkpO2lmKG8udGFnTmFtZSYmKG49by50YWdOYW1lLnRvTG93ZXJDYXNlKCkpLG51bGw9PWkpe2NvbnN0IGE9by5uYW1lc3BhY2VVUkk7aT1hJiZPVlthXX19cmV0dXJuW2ksbl19KG4pO3JldHVybiBwaShyLGUsdCl9ZnVuY3Rpb24gUWsobil7cmV0dXJuIG4ub3duZXJEb2N1bWVu'@; put 'dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBQOChuKXtyZXR1cm4gbi5vd25lckRvY3VtZW50fWZ1bmN0aW9uIFZnKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRnVuY3Rpb24/bigpOm59ZnVuY3Rpb24gWEoobixlLHQpe2xldCByPW4ubGVuZ3RoO2Zvcig7Oyl7Y29uc3QgaT1uLmluZGV4T2YoZSx0'@; put 'KTtpZigtMT09PWkpcmV0dXJuIGk7aWYoMD09PWl8fG4uY2hhckNvZGVBdChpLTEpPD0zMil7Y29uc3Qgbz1lLmxlbmd0aDtpZihpK289PT1yfHxuLmNoYXJDb2RlQXQoaStvKTw9MzIpcmV0dXJuIGl9dD1pKzF9fWNvbnN0IGhCPSJuZy10ZW1wbGF0ZSI7ZnVuY3Rpb24gSmsobixlLHQscil7'@; put 'bGV0IGk9MDtpZihyKXtmb3IoO2k8ZS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgZVtpXTtpKz0yKWlmKCJjbGFzcyI9PT1lW2ldJiYtMSE9PVhKKGVbaSsxXS50b0xvd2VyQ2FzZSgpLHQsMCkpcmV0dXJuITB9ZWxzZSBpZihQeShuKSlyZXR1cm4hMTtpZihpPWUuaW5kZXhPZigxLGkpLGk+'@; put 'LTEpe2xldCBvO2Zvcig7KytpPGUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mKG89ZVtpXSk7KWlmKG8udG9Mb3dlckNhc2UoKT09PXQpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gUHkobil7cmV0dXJuIDQ9PT1uLnR5cGUmJm4udmFsdWUhPT1oQn1mdW5jdGlvbiBRSihuLGUsdCl7cmV0'@; put 'dXJuIGU9PT0oNCE9PW4udHlwZXx8dD9uLnZhbHVlOmhCKX1mdW5jdGlvbiBKSihuLGUsdCl7bGV0IHI9NDtjb25zdCBpPW4uYXR0cnMsbz1udWxsIT09aT9mdW5jdGlvbiBuZWUobil7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYoazkobltlXSkpcmV0dXJuIGU7cmV0dXJuIG4ubGVu'@; put 'Z3RofShpKTowO2xldCBhPSExO2ZvcihsZXQgbD0wO2w8ZS5sZW5ndGg7bCsrKXtjb25zdCB1PWVbbF07aWYoIm51bWJlciIhPXR5cGVvZiB1KXtpZighYSlpZig0JnIpe2lmKHI9MnwxJnIsIiIhPT11JiYhUUoobix1LHQpfHwiIj09PXUmJjE9PT1lLmxlbmd0aCl7aWYod3AocikpcmV0dXJu'@; put 'ITE7YT0hMH19ZWxzZSBpZig4JnIpe2lmKG51bGw9PT1pfHwhSmsobixpLHUsdCkpe2lmKHdwKHIpKXJldHVybiExO2E9ITB9fWVsc2V7Y29uc3QgZz1lWysrbF0sRT1lZWUodSxpLFB5KG4pLHQpO2lmKC0xPT09RSl7aWYod3AocikpcmV0dXJuITE7YT0hMDtjb250aW51ZX1pZigiIiE9PWcp'@; put 'e2xldCBPO2lmKE89RT5vPyIiOmlbRSsxXS50b0xvd2VyQ2FzZSgpLDImciYmZyE9PU8pe2lmKHdwKHIpKXJldHVybiExO2E9ITB9fX19ZWxzZXtpZighYSYmIXdwKHIpJiYhd3AodSkpcmV0dXJuITE7aWYoYSYmd3AodSkpY29udGludWU7YT0hMSxyPXV8MSZyfX1yZXR1cm4gd3Aocil8fGF9'@; put 'ZnVuY3Rpb24gd3Aobil7cmV0dXJuISgxJm4pfWZ1bmN0aW9uIGVlZShuLGUsdCxyKXtpZihudWxsPT09ZSlyZXR1cm4tMTtsZXQgaT0wO2lmKHJ8fCF0KXtsZXQgbz0hMTtmb3IoO2k8ZS5sZW5ndGg7KXtjb25zdCBhPWVbaV07aWYoYT09PW4pcmV0dXJuIGk7aWYoMz09PWF8fDY9PT1hKW89'@; put 'ITA7ZWxzZXtpZigxPT09YXx8Mj09PWEpe2xldCBsPWVbKytpXTtmb3IoOyJzdHJpbmciPT10eXBlb2YgbDspbD1lWysraV07Y29udGludWV9aWYoND09PWEpYnJlYWs7aWYoMD09PWEpe2krPTQ7Y29udGludWV9fWkrPW8/MToyfXJldHVybi0xfXJldHVybiBmdW5jdGlvbiByZWUobixlKXts'@; put 'ZXQgdD1uLmluZGV4T2YoNCk7aWYodD4tMSlmb3IodCsrO3Q8bi5sZW5ndGg7KXtjb25zdCByPW5bdF07aWYoIm51bWJlciI9PXR5cGVvZiByKXJldHVybi0xO2lmKHI9PT1lKXJldHVybiB0O3QrK31yZXR1cm4tMX0oZSxuKX1mdW5jdGlvbiBmQihuLGUsdD0hMSl7Zm9yKGxldCByPTA7cjxl'@; put 'Lmxlbmd0aDtyKyspaWYoSkoobixlW3JdLHQpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGllZShuLGUpe2U6Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IHI9ZVt0XTtpZihuLmxlbmd0aD09PXIubGVuZ3RoKXtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKylpZihuW2ld'@; put 'IT09cltpXSljb250aW51ZSBlO3JldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBwQihuLGUpe3JldHVybiBuPyI6bm90KCIrZS50cmltKCkrIikiOmV9ZnVuY3Rpb24gb2VlKG4pe2xldCBlPW5bMF0sdD0xLHI9MixpPSIiLG89ITE7Zm9yKDt0PG4ubGVuZ3RoOyl7bGV0IGE9blt0XTtpZigi'@; put 'c3RyaW5nIj09dHlwZW9mIGEpaWYoMiZyKXtjb25zdCBsPW5bKyt0XTtpKz0iWyIrYSsobC5sZW5ndGg+MD8nPSInK2wrJyInOiIiKSsiXSJ9ZWxzZSA4JnI/aSs9Ii4iK2E6NCZyJiYoaSs9IiAiK2EpO2Vsc2UiIiE9PWkmJiF3cChhKSYmKGUrPXBCKG8saSksaT0iIikscj1hLG89b3x8IXdw'@; put 'KHIpO3QrK31yZXR1cm4iIiE9PWkmJihlKz1wQihvLGkpKSxlfWNvbnN0IE5jPXt9O2Z1bmN0aW9uIGdCKG4sZSx0LHIsaSxvLGEsbCx1LGcsRSl7Y29uc3QgTz0yNytyLFo9TytpLGVlPWZ1bmN0aW9uIGxlZShuLGUpe2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlO3IrKyl0LnB1c2gocjxu'@; put 'P251bGw6TmMpO3JldHVybiB0fShPLFopLHZlPSJmdW5jdGlvbiI9PXR5cGVvZiBnP2coKTpnO3JldHVybiBlZVsxXT17dHlwZTpuLGJsdWVwcmludDplZSx0ZW1wbGF0ZTp0LHF1ZXJpZXM6bnVsbCx2aWV3UXVlcnk6bCxkZWNsVE5vZGU6ZSxkYXRhOmVlLnNsaWNlKCkuZmlsbChudWxsLE8p'@; put 'LGJpbmRpbmdTdGFydEluZGV4Ok8sZXhwYW5kb1N0YXJ0SW5kZXg6Wixob3N0QmluZGluZ09wQ29kZXM6bnVsbCxmaXJzdENyZWF0ZVBhc3M6ITAsZmlyc3RVcGRhdGVQYXNzOiEwLHN0YXRpY1ZpZXdRdWVyaWVzOiExLHN0YXRpY0NvbnRlbnRRdWVyaWVzOiExLHByZU9yZGVySG9va3M6bnVs'@; put 'bCxwcmVPcmRlckNoZWNrSG9va3M6bnVsbCxjb250ZW50SG9va3M6bnVsbCxjb250ZW50Q2hlY2tIb29rczpudWxsLHZpZXdIb29rczpudWxsLHZpZXdDaGVja0hvb2tzOm51bGwsZGVzdHJveUhvb2tzOm51bGwsY2xlYW51cDpudWxsLGNvbnRlbnRRdWVyaWVzOm51bGwsY29tcG9uZW50czpu'@; put 'dWxsLGRpcmVjdGl2ZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBvP28oKTpvLHBpcGVSZWdpc3RyeToiZnVuY3Rpb24iPT10eXBlb2YgYT9hKCk6YSxmaXJzdENoaWxkOm51bGwsc2NoZW1hczp1LGNvbnN0czp2ZSxpbmNvbXBsZXRlRmlyc3RQYXNzOiExLHNzcklkOkV9fWZ1bmN0aW9u'@; put 'IFdTKG4sZSx0LHIsaSxvLGEsbCx1LGcsRSl7Y29uc3QgTz1lLmJsdWVwcmludC5zbGljZSgpO3JldHVybiBPWzBdPWksT1syXT0xMjI4fHIsKG51bGwhPT1nfHxuJiYyMDQ4Jm5bMl0pJiYoT1syXXw9MjA0OCksVWQoTyksT1szXT1PWzE0XT1uLE9bOF09dCxPWzEwXT1hfHxuJiZuWzEwXSxP'@; put 'WzExXT1sfHxuJiZuWzExXSxPWzldPXV8fG4mJm5bOV18fG51bGwsT1s1XT1vLE9bMTldPWZ1bmN0aW9uIHdRKCl7cmV0dXJuIGJRKyt9KCksT1s2XT1FLE9bMjBdPWcsT1sxNV09Mj09ZS50eXBlP25bMTVdOk8sT31mdW5jdGlvbiBlUihuKXtsZXQgZT0xNjtyZXR1cm4gbi5zaWduYWxzP2U9'@; put 'NDA5NjpuLm9uUHVzaCYmKGU9NjQpLGV9ZnVuY3Rpb24gSHkobixlLHQscil7aWYoMD09PXQpcmV0dXJuLTE7Y29uc3QgaT1lLmxlbmd0aDtmb3IobGV0IG89MDtvPHQ7bysrKWUucHVzaChyKSxuLmJsdWVwcmludC5wdXNoKHIpLG4uZGF0YS5wdXNoKG51bGwpO3JldHVybiBpfWZ1bmN0aW9u'@; put 'IHRSKG4sZSl7cmV0dXJuIG5bMTJdP25bMTNdWzRdPWU6blsxMl09ZSxuWzEzXT1lLGV9ZnVuY3Rpb24gaWUobj0xKXtfQihGdCgpLGl0KCksb2goKStuLCExKX1mdW5jdGlvbiBfQihuLGUsdCxyKXtpZighcilpZigzJn5lWzJdKXtjb25zdCBvPW4ucHJlT3JkZXJIb29rcztudWxsIT09byYm'@; put 'eVMoZSxvLDAsdCl9ZWxzZXtjb25zdCBvPW4ucHJlT3JkZXJDaGVja0hvb2tzO251bGwhPT1vJiZfUyhlLG8sdCl9WW0odCl9dmFyIFlTPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uTm9uZT0wXT0iTm9uZSIsbltuLlNpZ25hbEJhc2VkPTFdPSJTaWduYWxCYXNlZCIsbltuLkhhc0RlY29yYXRv'@; put 'cklucHV0VHJhbnNmb3JtPTJdPSJIYXNEZWNvcmF0b3JJbnB1dFRyYW5zZm9ybSIsbn0oWVN8fHt9KTtmdW5jdGlvbiBWeShuLGUsdCxyKXtjb25zdCBpPWsobnVsbCk7dHJ5e2NvbnN0W28sYSxsXT1uLmlucHV0c1t0XTtsZXQgdT1udWxsOzAhPT0oYSZZUy5TaWduYWxCYXNlZCkmJih1PWVb'@; put 'b11bYl0pLG51bGwhPT11JiZ2b2lkIDAhPT11LnRyYW5zZm9ybUZuP3I9dS50cmFuc2Zvcm1GbihyKTpudWxsIT09bCYmKHI9bC5jYWxsKGUscikpLG51bGwhPT1uLnNldElucHV0P24uc2V0SW5wdXQoZSx1LHIsdCxvKTpiSChlLHUsbyxyKX1maW5hbGx5e2soaSl9fXZhciBBNT1mdW5jdGlv'@; put 'bihuKXtyZXR1cm4gbltuLkltcG9ydGFudD0xXT0iSW1wb3J0YW50IixuW24uRGFzaENhc2U9Ml09IkRhc2hDYXNlIixufShBNXx8e30pO2Z1bmN0aW9uIHJSKG4sZSl7cmV0dXJuIHVuZGVmaW5lZChuLGUpfWNvbnN0IGs1PW5ldyBTZXQ7dmFyICRTPWZ1bmN0aW9uKG4pe3JldHVybiBuW24u'@; put 'Q0hBTkdFX0RFVEVDVElPTj0wXT0iQ0hBTkdFX0RFVEVDVElPTiIsbltuLkFGVEVSX05FWFRfUkVOREVSPTFdPSJBRlRFUl9ORVhUX1JFTkRFUiIsbn0oJFN8fHt9KTtjb25zdCB6OT1uZXcgRXIoIiIpLHdCPW5ldyBTZXQ7ZnVuY3Rpb24gajEobil7d0IuaGFzKG4pfHwod0IuYWRkKG4pLHBl'@; put 'cmZvcm1hbmNlPy5tYXJrPy4oIm1hcmtfZmVhdHVyZV91c2FnZSIse2RldGFpbDp7ZmVhdHVyZTpufX0pKX1jb25zdCBpUj0hMSxLcj1jbGFzcyBwZWUgZXh0ZW5kcyBNcntfX2lzQXN5bmM7ZGVzdHJveVJlZj12b2lkIDA7cGVuZGluZ1Rhc2tzPXZvaWQgMDtjb25zdHJ1Y3RvcihlPSExKXtz'@; put 'dXBlcigpLHRoaXMuX19pc0FzeW5jPWUsRWcoKSYmKHRoaXMuZGVzdHJveVJlZj1zbihNMix7b3B0aW9uYWw6ITB9KT8/dm9pZCAwLHRoaXMucGVuZGluZ1Rhc2tzPXNuKHM1LHtvcHRpb25hbDohMH0pPz92b2lkIDApfWVtaXQoZSl7Y29uc3QgdD1rKG51bGwpO3RyeXtzdXBlci5uZXh0KGUp'@; put 'fWZpbmFsbHl7ayh0KX19c3Vic2NyaWJlKGUsdCxyKXtsZXQgaT1lLG89dHx8KCgpPT5udWxsKSxhPXI7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKXtjb25zdCB1PWU7aT11Lm5leHQ/LmJpbmQodSksbz11LmVycm9yPy5iaW5kKHUpLGE9dS5jb21wbGV0ZT8uYmluZCh1KX10aGlzLl9faXNB'@; put 'c3luYyYmKG89dGhpcy53cmFwSW5UaW1lb3V0KG8pLGkmJihpPXRoaXMud3JhcEluVGltZW91dChpKSksYSYmKGE9dGhpcy53cmFwSW5UaW1lb3V0KGEpKSk7Y29uc3QgbD1zdXBlci5zdWJzY3JpYmUoe25leHQ6aSxlcnJvcjpvLGNvbXBsZXRlOmF9KTtyZXR1cm4gZSBpbnN0YW5jZW9mIEFy'@; put 'JiZlLmFkZChsKSxsfXdyYXBJblRpbWVvdXQoZSl7cmV0dXJuIHQ9Pntjb25zdCByPXRoaXMucGVuZGluZ1Rhc2tzPy5hZGQoKTtzZXRUaW1lb3V0KCgpPT57dHJ5e2UodCl9ZmluYWxseXt2b2lkIDAhPT1yJiZ0aGlzLnBlbmRpbmdUYXNrcz8ucmVtb3ZlKHIpfX0pfX19O2Z1bmN0aW9uIENC'@; put 'KG4pe2xldCBlLHQ7ZnVuY3Rpb24gcigpe249Z3k7dHJ5e3ZvaWQgMCE9PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBjYW5jZWxBbmltYXRpb25GcmFtZSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodCksdm9pZCAwIT09ZSYmY2xlYXJUaW1lb3V0KGUpfWNhdGNoe319cmV0dXJuIGU9c2V0VGltZW91'@; put 'dCgoKT0+e24oKSxyKCl9KSwiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJiYodD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuKCkscigpfSkpLCgpPT5yKCl9ZnVuY3Rpb24gU0Iobil7cmV0dXJuIHF1ZXVlTWljcm90YXNrKCgpPT5uKCkpLCgpPT57bj1neX19'@; put 'Y29uc3Qgb1I9ImlzQW5ndWxhclpvbmUiLHFTPW9SKyJfSUQiO2xldCBnZWU9MDtjbGFzcyBnYXtoYXNQZW5kaW5nTWFjcm90YXNrcz0hMTtoYXNQZW5kaW5nTWljcm90YXNrcz0hMTtpc1N0YWJsZT0hMDtvblVuc3RhYmxlPW5ldyBLcighMSk7b25NaWNyb3Rhc2tFbXB0eT1uZXcgS3IoITEp'@; put 'O29uU3RhYmxlPW5ldyBLcighMSk7b25FcnJvcj1uZXcgS3IoITEpO2NvbnN0cnVjdG9yKGUpe2NvbnN0e2VuYWJsZUxvbmdTdGFja1RyYWNlOnQ9ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbjpyPSExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOmk9ITEs'@; put 'c2NoZWR1bGVJblJvb3Rab25lOm89aVJ9PWU7aWYodHlwZW9mIFpvbmU+InUiKXRocm93IG5ldyBXbig5MDgsITEpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKTtjb25zdCBhPXRoaXM7YS5fbmVzdGluZz0wLGEuX291dGVyPWEuX2lubmVyPVpvbmUuY3VycmVudCxab25lLlRhc2tUcmFja2lu'@; put 'Z1pvbmVTcGVjJiYoYS5faW5uZXI9YS5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLHQmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKGEuX2lubmVyPWEuX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksYS5zaG91bGRDb2Fs'@; put 'ZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPSFpJiZyLGEuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb249aSxhLmNhbGxiYWNrU2NoZWR1bGVkPSExLGEuc2NoZWR1bGVJblJvb3Rab25lPW8sZnVuY3Rpb24gX2VlKG4pe2NvbnN0IGU9KCk9PnshZnVuY3Rpb24gdmVlKG4pe2Z1bmN0'@; put 'aW9uIGUoKXtDQigoKT0+e24uY2FsbGJhY2tTY2hlZHVsZWQ9ITEsc1Iobiksbi5pc0NoZWNrU3RhYmxlUnVubmluZz0hMCxhUihuKSxuLmlzQ2hlY2tTdGFibGVSdW5uaW5nPSExfSl9bi5pc0NoZWNrU3RhYmxlUnVubmluZ3x8bi5jYWxsYmFja1NjaGVkdWxlZHx8KG4uY2FsbGJhY2tTY2hl'@; put 'ZHVsZWQ9ITAsbi5zY2hlZHVsZUluUm9vdFpvbmU/Wm9uZS5yb290LnJ1bigoKT0+e2UoKX0pOm4uX291dGVyLnJ1bigoKT0+e2UoKX0pLHNSKG4pKX0obil9LHQ9Z2VlKys7bi5faW5uZXI9bi5faW5uZXIuZm9yayh7bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7W29SXTohMCxbcVNdOnQs'@; put 'W3FTK3RdOiEwfSxvbkludm9rZVRhc2s6KHIsaSxvLGEsbCx1KT0+e2lmKGZ1bmN0aW9uIHllZShuKXtyZXR1cm4gVEIobiwiX19pZ25vcmVfbmdfem9uZV9fIil9KHUpKXJldHVybiByLmludm9rZVRhc2sobyxhLGwsdSk7dHJ5e3JldHVybiBFQihuKSxyLmludm9rZVRhc2sobyxhLGwsdSl9'@; put 'ZmluYWxseXsobi5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uJiYiZXZlbnRUYXNrIj09PWEudHlwZXx8bi5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbikmJmUoKSxNQihuKX19LG9uSW52b2tlOihyLGksbyxhLGwsdSxnKT0+e3RyeXtyZXR1cm4gRUIobiksci5p'@; put 'bnZva2UobyxhLGwsdSxnKX1maW5hbGx5e24uc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24mJiFuLmNhbGxiYWNrU2NoZWR1bGVkJiYhZnVuY3Rpb24gYmVlKG4pe3JldHVybiBUQihuLCJfX3NjaGVkdWxlcl90aWNrX18iKX0odSkmJmUoKSxNQihuKX19LG9uSGFzVGFzazoocixp'@; put 'LG8sYSk9PntyLmhhc1Rhc2sobyxhKSxpPT09byYmKCJtaWNyb1Rhc2siPT1hLmNoYW5nZT8obi5faGFzUGVuZGluZ01pY3JvdGFza3M9YS5taWNyb1Rhc2ssc1IobiksYVIobikpOiJtYWNyb1Rhc2siPT1hLmNoYW5nZSYmKG4uaGFzUGVuZGluZ01hY3JvdGFza3M9YS5tYWNyb1Rhc2spKX0s'@; put 'b25IYW5kbGVFcnJvcjoocixpLG8sYSk9PihyLmhhbmRsZUVycm9yKG8sYSksbi5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bi5vbkVycm9yLmVtaXQoYSkpLCExKX0pfShhKX1zdGF0aWMgaXNJbkFuZ3VsYXJab25lKCl7cmV0dXJuIHR5cGVvZiBab25lPCJ1IiYmITA9PT1ab25lLmN1cnJlbnQu'@; put 'Z2V0KG9SKX1zdGF0aWMgYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpe2lmKCFnYS5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgV24oOTA5LCExKX1zdGF0aWMgYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpe2lmKGdhLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBXbig5MDksITEpfXJ1bihl'@; put 'LHQscil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bihlLHQscil9cnVuVGFzayhlLHQscixpKXtjb25zdCBvPXRoaXMuX2lubmVyLGE9by5zY2hlZHVsZUV2ZW50VGFzaygiTmdab25lRXZlbnQ6ICIraSxlLG1lZSxneSxneSk7dHJ5e3JldHVybiBvLnJ1blRhc2soYSx0LHIpfWZpbmFsbHl7by5j'@; put 'YW5jZWxUYXNrKGEpfX1ydW5HdWFyZGVkKGUsdCxyKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuR3VhcmRlZChlLHQscil9cnVuT3V0c2lkZUFuZ3VsYXIoZSl7cmV0dXJuIHRoaXMuX291dGVyLnJ1bihlKX19Y29uc3QgbWVlPXt9O2Z1bmN0aW9uIGFSKG4pe2lmKDA9PW4uX25lc3RpbmcmJiFu'@; put 'Lmhhc1BlbmRpbmdNaWNyb3Rhc2tzJiYhbi5pc1N0YWJsZSl0cnl7bi5fbmVzdGluZysrLG4ub25NaWNyb3Rhc2tFbXB0eS5lbWl0KG51bGwpfWZpbmFsbHl7aWYobi5fbmVzdGluZy0tLCFuLmhhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXtuLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5uLm9uU3Rh'@; put 'YmxlLmVtaXQobnVsbCkpfWZpbmFsbHl7bi5pc1N0YWJsZT0hMH19fWZ1bmN0aW9uIHNSKG4pe24uaGFzUGVuZGluZ01pY3JvdGFza3M9ISEobi5faGFzUGVuZGluZ01pY3JvdGFza3N8fChuLnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb258fG4uc2hvdWxkQ29hbGVzY2VSdW5D'@; put 'aGFuZ2VEZXRlY3Rpb24pJiYhMD09PW4uY2FsbGJhY2tTY2hlZHVsZWQpfWZ1bmN0aW9uIEVCKG4pe24uX25lc3RpbmcrKyxuLmlzU3RhYmxlJiYobi5pc1N0YWJsZT0hMSxuLm9uVW5zdGFibGUuZW1pdChudWxsKSl9ZnVuY3Rpb24gTUIobil7bi5fbmVzdGluZy0tLGFSKG4pfWNsYXNzIGxS'@; put 'e2hhc1BlbmRpbmdNaWNyb3Rhc2tzPSExO2hhc1BlbmRpbmdNYWNyb3Rhc2tzPSExO2lzU3RhYmxlPSEwO29uVW5zdGFibGU9bmV3IEtyO29uTWljcm90YXNrRW1wdHk9bmV3IEtyO29uU3RhYmxlPW5ldyBLcjtvbkVycm9yPW5ldyBLcjtydW4oZSx0LHIpe3JldHVybiBlLmFwcGx5KHQscil9'@; put 'cnVuR3VhcmRlZChlLHQscil7cmV0dXJuIGUuYXBwbHkodCxyKX1ydW5PdXRzaWRlQW5ndWxhcihlKXtyZXR1cm4gZSgpfXJ1blRhc2soZSx0LHIsaSl7cmV0dXJuIGUuYXBwbHkodCxyKX19ZnVuY3Rpb24gVEIobixlKXtyZXR1cm4hKCFBcnJheS5pc0FycmF5KG4pfHwxIT09bi5sZW5ndGgp'@; put 'JiYhMD09PW5bMF0/LmRhdGE/LltlXX1sZXQgeEI9KCgpPT57Y2xhc3MgbntpbXBsPW51bGw7ZXhlY3V0ZSgpe3RoaXMuaW1wbD8uZXhlY3V0ZSgpfXN0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm5ldyBufSl9cmV0dXJuIG59KSgp'@; put 'O2NvbnN0IEFCPVswLDEsMiwzXTtsZXQgQ2VlPSgoKT0+e2NsYXNzIG57bmdab25lPXNuKGdhKTtzY2hlZHVsZXI9c24obTgpO2Vycm9ySGFuZGxlcj1zbihnOCx7b3B0aW9uYWw6ITB9KTtzZXF1ZW5jZXM9bmV3IFNldDtkZWZlcnJlZFJlZ2lzdHJhdGlvbnM9bmV3IFNldDtleGVjdXRpbmc9'@; put 'ITE7Y29uc3RydWN0b3IoKXtzbih6OSx7b3B0aW9uYWw6ITB9KX1leGVjdXRlKCl7Y29uc3QgdD10aGlzLnNlcXVlbmNlcy5zaXplPjA7dCYmR2MoMTYpLHRoaXMuZXhlY3V0aW5nPSEwO2Zvcihjb25zdCByIG9mIEFCKWZvcihjb25zdCBpIG9mIHRoaXMuc2VxdWVuY2VzKWlmKCFpLmVycm9y'@; put 'ZWRPckRlc3Ryb3llZCYmaS5ob29rc1tyXSl0cnl7aS5waXBlbGluZWRWYWx1ZT10aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dGhpcy5tYXliZVRyYWNlKCgpPT4oMCxpLmhvb2tzW3JdKShpLnBpcGVsaW5lZFZhbHVlKSxpLnNuYXBzaG90KSl9Y2F0Y2gobyl7aS5lcnJvcmVk'@; put 'T3JEZXN0cm95ZWQ9ITAsdGhpcy5lcnJvckhhbmRsZXI/LmhhbmRsZUVycm9yKG8pfXRoaXMuZXhlY3V0aW5nPSExO2Zvcihjb25zdCByIG9mIHRoaXMuc2VxdWVuY2VzKXIuYWZ0ZXJSdW4oKSxyLm9uY2UmJih0aGlzLnNlcXVlbmNlcy5kZWxldGUociksci5kZXN0cm95KCkpO2Zvcihjb25z'@; put 'dCByIG9mIHRoaXMuZGVmZXJyZWRSZWdpc3RyYXRpb25zKXRoaXMuc2VxdWVuY2VzLmFkZChyKTt0aGlzLmRlZmVycmVkUmVnaXN0cmF0aW9ucy5zaXplPjAmJnRoaXMuc2NoZWR1bGVyLm5vdGlmeSg3KSx0aGlzLmRlZmVycmVkUmVnaXN0cmF0aW9ucy5jbGVhcigpLHQmJkdjKDE3KX1yZWdp'@; put 'c3Rlcih0KXtjb25zdHt2aWV3OnJ9PXQ7dm9pZCAwIT09cj8oKHJbMjVdPz89W10pLnB1c2godCksUzIociksclsyXXw9ODE5Mik6dGhpcy5leGVjdXRpbmc/dGhpcy5kZWZlcnJlZFJlZ2lzdHJhdGlvbnMuYWRkKHQpOnRoaXMuYWRkU2VxdWVuY2UodCl9YWRkU2VxdWVuY2UodCl7dGhpcy5z'@; put 'ZXF1ZW5jZXMuYWRkKHQpLHRoaXMuc2NoZWR1bGVyLm5vdGlmeSg3KX11bnJlZ2lzdGVyKHQpe3RoaXMuZXhlY3V0aW5nJiZ0aGlzLnNlcXVlbmNlcy5oYXModCk/KHQuZXJyb3JlZE9yRGVzdHJveWVkPSEwLHQucGlwZWxpbmVkVmFsdWU9dm9pZCAwLHQub25jZT0hMCk6KHRoaXMuc2VxdWVu'@; put 'Y2VzLmRlbGV0ZSh0KSx0aGlzLmRlZmVycmVkUmVnaXN0cmF0aW9ucy5kZWxldGUodCkpfW1heWJlVHJhY2UodCxyKXtyZXR1cm4gcj9yLnJ1bigkUy5BRlRFUl9ORVhUX1JFTkRFUix0KTp0KCl9c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4scHJvdmlkZWRJbjoicm9vdCIsZmFjdG9y'@; put 'eTooKT0+bmV3IG59KX1yZXR1cm4gbn0pKCk7Y2xhc3Mga0J7aW1wbDtob29rczt2aWV3O29uY2U7c25hcHNob3Q7ZXJyb3JlZE9yRGVzdHJveWVkPSExO3BpcGVsaW5lZFZhbHVlPXZvaWQgMDt1bnJlZ2lzdGVyT25EZXN0cm95O2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhPW51bGwpe3RoaXMu'@; put 'aW1wbD1lLHRoaXMuaG9va3M9dCx0aGlzLnZpZXc9cix0aGlzLm9uY2U9aSx0aGlzLnNuYXBzaG90PWEsdGhpcy51bnJlZ2lzdGVyT25EZXN0cm95PW8/Lm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KCkpfWFmdGVyUnVuKCl7dGhpcy5lcnJvcmVkT3JEZXN0cm95ZWQ9ITEsdGhpcy5waXBl'@; put 'bGluZWRWYWx1ZT12b2lkIDAsdGhpcy5zbmFwc2hvdD8uZGlzcG9zZSgpLHRoaXMuc25hcHNob3Q9bnVsbH1kZXN0cm95KCl7dGhpcy5pbXBsLnVucmVnaXN0ZXIodGhpcyksdGhpcy51bnJlZ2lzdGVyT25EZXN0cm95Py4oKTtjb25zdCBlPXRoaXMudmlldz8uWzI1XTtlJiYodGhpcy52aWV3'@; put 'WzI1XT1lLmZpbHRlcih0PT50IT09dGhpcykpfX1mdW5jdGlvbiBIOChuLGUpe2NvbnN0IHQ9ZT8uaW5qZWN0b3I/P3NuKE1sKTtyZXR1cm4gajEoIk5nQWZ0ZXJOZXh0UmVuZGVyIiksZnVuY3Rpb24gUkIobixlLHQscil7Y29uc3QgaT1lLmdldCh4Qik7aS5pbXBsPz89ZS5nZXQoQ2VlKTtj'@; put 'b25zdCBvPWUuZ2V0KHo5LG51bGwse29wdGlvbmFsOiEwfSksYT0hMCE9PXQ/Lm1hbnVhbENsZWFudXA/ZS5nZXQoTTIpOm51bGwsbD1lLmdldChPQSxudWxsLHtvcHRpb25hbDohMH0pLHU9bmV3IGtCKGkuaW1wbCxmdW5jdGlvbiBFZWUobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBGdW5jdGlv'@; put 'bj9bdm9pZCAwLHZvaWQgMCxuLHZvaWQgMF06W24uZWFybHlSZWFkLG4ud3JpdGUsbi5taXhlZFJlYWRXcml0ZSxuLnJlYWRdfShuKSxsPy52aWV3LHIsYSxvPy5zbmFwc2hvdChudWxsKSk7cmV0dXJuIGkuaW1wbC5yZWdpc3Rlcih1KSx1fShuLHQsZSwhMCl9Y29uc3QgS1M9bmV3IEVyKCIi'@; put 'LHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4oe3F1ZXVlOm5ldyBTZXQsaXNTY2hlZHVsZWQ6ITEsc2NoZWR1bGVyOm51bGx9KX0pO2Z1bmN0aW9uIElCKG4sZSx0KXtjb25zdCByPW4uZ2V0KEtTKTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBpIG9mIGUpci5xdWV1ZS5h'@; put 'ZGQoaSksdD8uZGV0YWNoZWRMZWF2ZUFuaW1hdGlvbkZucz8ucHVzaChpKTtlbHNlIHIucXVldWUuYWRkKGUpLHQ/LmRldGFjaGVkTGVhdmVBbmltYXRpb25GbnM/LnB1c2goZSk7ci5zY2hlZHVsZXImJnIuc2NoZWR1bGVyKG4pfWZ1bmN0aW9uIERCKG4sZSx0LHIpe2NvbnN0IGk9bj8uWzI2'@; put 'XT8uZW50ZXI7bnVsbCE9PWUmJmkmJmkuaGFzKHQuaW5kZXgpJiZmdW5jdGlvbiBjUihuLGUpe2Zvcihjb25zdFt0LHJdb2YgZSlJQihuLHIuYW5pbWF0ZUZucyl9KHIsaSl9ZnVuY3Rpb24gVjgobixlLHQscixpLG8sYSxsKXtpZihudWxsIT1pKXtsZXQgdSxnPSExO1l1KGkpP3U9aTp6cyhp'@; put 'KSYmKGc9ITAsaT1pWzBdKTtjb25zdCBFPURyKGkpOzA9PT1uJiZudWxsIT09cj8oREIobCxyLG8sdCksbnVsbD09YT9LVihlLHIsRSk6RjgoZSxyLEUsYXx8bnVsbCwhMCkpOjE9PT1uJiZudWxsIT09cj8oREIobCxyLG8sdCksRjgoZSxyLEUsYXx8bnVsbCwhMCkpOjI9PT1uP3BSKGwsbyx0'@; put 'LE89PntOeShlLEUsZyxPKX0pOjM9PT1uJiZwUihsLG8sdCwoKT0+e2UuZGVzdHJveU5vZGUoRSl9KSxudWxsIT11JiZmdW5jdGlvbiBEZWUobixlLHQscixpLG8sYSl7Y29uc3QgbD1yWzddO2whPT1EcihyKSYmVjgoZSxuLHQsbyxsLGksYSk7Zm9yKGxldCBnPTEwO2c8ci5sZW5ndGg7Zysr'@; put 'KXtjb25zdCBFPXJbZ107ZUUoRVsxXSxFLG4sZSxvLGwpfX0oZSxuLHQsdSxvLHIsYSl9fWZ1bmN0aW9uIGRSKG4sZSl7ZVsxMF0uY2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVyPy5ub3RpZnkoOSksZUUobixlLGVbMTFdLDIsbnVsbCxudWxsKX1mdW5jdGlvbiBoUihuLGUpe2NvbnN0IHQ9bls5'@; put 'XSxyPXQuaW5kZXhPZihlKTt0LnNwbGljZShyLDEpfWZ1bmN0aW9uIEJ5KG4sZSl7aWYoU2YoZSkpcmV0dXJuO2NvbnN0IHQ9ZVsxMV07dC5kZXN0cm95Tm9kZSYmZUUobixlLHQsMyxudWxsLG51bGwpLGZ1bmN0aW9uIHhlZShuKXtsZXQgZT1uWzEyXTtpZighZSlyZXR1cm4gZlIoblsxXSxu'@; put 'KTtmb3IoO2U7KXtsZXQgdD1udWxsO2lmKHpzKGUpKXQ9ZVsxMl07ZWxzZXtjb25zdCByPWVbMTBdO3ImJih0PXIpfWlmKCF0KXtmb3IoO2UmJiFlWzRdJiZlIT09bjspenMoZSkmJmZSKGVbMV0sZSksZT1lWzNdO251bGw9PT1lJiYoZT1uKSx6cyhlKSYmZlIoZVsxXSxlKSx0PWUmJmVbNF19'@; put 'ZT10fX0oZSl9ZnVuY3Rpb24gZlIobixlKXtpZihTZihlKSlyZXR1cm47Y29uc3QgdD1rKG51bGwpO3RyeXtlWzJdJj0tMTI5LGVbMl18PTI1NixlWzI0XSYmeGUoZVsyNF0pLGZ1bmN0aW9uIFJlZShuLGUpe2xldCB0O2lmKG51bGwhPW4mJm51bGwhPSh0PW4uZGVzdHJveUhvb2tzKSlmb3Io'@; put 'bGV0IHI9MDtyPHQubGVuZ3RoO3IrPTIpe2NvbnN0IGk9ZVt0W3JdXTtpZighKGkgaW5zdGFuY2VvZiBfeSkpe2NvbnN0IG89dFtyKzFdO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKz0yKXtjb25zdCBsPWlbb1thXV0sdT1vW2ErMV07R2MoNCxsLHUpO3Ry'@; put 'eXt1LmNhbGwobCl9ZmluYWxseXtHYyg1LGwsdSl9fWVsc2V7R2MoNCxpLG8pO3RyeXtvLmNhbGwoaSl9ZmluYWxseXtHYyg1LGksbyl9fX19fShuLGUpLGZ1bmN0aW9uIGtlZShuLGUpe2NvbnN0IHQ9bi5jbGVhbnVwLHI9ZVs3XTtpZihudWxsIT09dClmb3IobGV0IGE9MDthPHQubGVuZ3Ro'@; put 'LTE7YSs9MilpZigic3RyaW5nIj09dHlwZW9mIHRbYV0pe2NvbnN0IGw9dFthKzNdO2w+PTA/cltsXSgpOnJbLWxdLnVuc3Vic2NyaWJlKCksYSs9Mn1lbHNlIHRbYV0uY2FsbChyW3RbYSsxXV0pO251bGwhPT1yJiYoZVs3XT1udWxsKTtjb25zdCBpPWVbMjFdO2lmKG51bGwhPT1pKXtlWzIx'@; put 'XT1udWxsO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKSgwLGlbYV0pKCl9Y29uc3Qgbz1lWzIzXTtpZihudWxsIT09byl7ZVsyM109bnVsbDtmb3IoY29uc3QgYSBvZiBvKWEuZGVzdHJveSgpfX0obixlKSwxPT09ZVsxXS50eXBlJiZlWzExXS5kZXN0cm95KCk7Y29uc3Qgcj1lWzE2XTtp'@; put 'ZihudWxsIT09ciYmWXUoZVszXSkpe3IhPT1lWzNdJiZoUihyLGUpO2NvbnN0IGk9ZVsxOF07bnVsbCE9PWkmJmkuZGV0YWNoVmlldyhuKX1NeShlKX1maW5hbGx5e2sodCl9fWZ1bmN0aW9uIHBSKG4sZSx0LHIpe2NvbnN0IGk9bj8uWzI2XTtpZihudWxsPT1pfHxudWxsPT1pLmxlYXZlfHwh'@; put 'aS5sZWF2ZS5oYXMoZS5pbmRleCkpcmV0dXJuIHIoITEpO24mJms1LmFkZChuKSxJQih0LCgpPT57aWYoaS5sZWF2ZSYmaS5sZWF2ZS5oYXMoZS5pbmRleCkpe2NvbnN0IGE9aS5sZWF2ZS5nZXQoZS5pbmRleCksbD1bXTtpZihhKXtmb3IobGV0IHU9MDt1PGEuYW5pbWF0ZUZucy5sZW5ndGg7'@; put 'dSsrKXtjb25zdCBnPWEuYW5pbWF0ZUZuc1t1XSx7cHJvbWlzZTpFfT1nKCk7bC5wdXNoKEUpfWkuZGV0YWNoZWRMZWF2ZUFuaW1hdGlvbkZucz12b2lkIDB9aS5ydW5uaW5nPVByb21pc2UuYWxsU2V0dGxlZChsKSxmdW5jdGlvbiBBZWUobixlKXtjb25zdCB0PW5bMjZdPy5ydW5uaW5nO3Q/'@; put 'dC50aGVuKCgpPT57blsyNl0ucnVubmluZz12b2lkIDAsazUuZGVsZXRlKG4pLGUoITApfSk6ZSghMSl9KG4scil9ZWxzZSBuJiZrNS5kZWxldGUobikscighMSl9LGkpfWZ1bmN0aW9uIGdSKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gbVIobixlLHQpe2xldCByPWU7Zm9yKDtudWxsIT09ciYm'@; put 'MTY4JnIudHlwZTspcj0oZT1yKS5wYXJlbnQ7aWYobnVsbD09PXIpcmV0dXJuIHRbMF07aWYod2Yocikpe2NvbnN0e2VuY2Fwc3VsYXRpb246aX09bi5kYXRhW3IuZGlyZWN0aXZlU3RhcnQrci5jb21wb25lbnRPZmZzZXRdO2lmKGk9PT1RbS5Ob25lfHxpPT09UW0uRW11bGF0ZWQpcmV0dXJu'@; put 'IG51bGx9cmV0dXJuIFlpKHIsdCl9KG4sZS5wYXJlbnQsdCl9ZnVuY3Rpb24gTEIobixlLHQpe3JldHVybiBXOShuLGUsdCl9bGV0IFc5PWZ1bmN0aW9uIFFTKG4sZSx0KXtyZXR1cm4gNDAmbi50eXBlP1lpKG4sdCk6bnVsbH07ZnVuY3Rpb24gdlIobixlLHQscil7Y29uc3QgaT1nUihuLHIs'@; put 'ZSksbz1lWzExXSxsPUxCKHIucGFyZW50fHxlWzVdLHIsZSk7aWYobnVsbCE9aSlpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgdT0wO3U8dC5sZW5ndGg7dSsrKVhWKG8saSx0W3VdLGwsITEpO2Vsc2UgWFYobyxpLHQsbCwhMSl9ZnVuY3Rpb24gQjgobixlKXtpZihudWxsIT09ZSl7Y29u'@; put 'c3QgdD1lLnR5cGU7aWYoMyZ0KXJldHVybiBZaShlLG4pO2lmKDQmdClyZXR1cm4gVXkoLTEsbltlLmluZGV4XSk7aWYoOCZ0KXtjb25zdCByPWUuY2hpbGQ7aWYobnVsbCE9PXIpcmV0dXJuIEI4KG4scik7e2NvbnN0IGk9bltlLmluZGV4XTtyZXR1cm4gWXUoaSk/VXkoLTEsaSk6RHIoaSl9'@; put 'fWlmKDEyOCZ0KXJldHVybiBCOChuLGUubmV4dCk7aWYoMzImdClyZXR1cm4gclIoZSxuKSgpfHxEcihuW2UuaW5kZXhdKTt7Y29uc3Qgcj1PQihuLGUpO3JldHVybiBudWxsIT09cj9BcnJheS5pc0FycmF5KHIpP3JbMF06QjgoaWgoblsxNV0pLHIpOkI4KG4sZS5uZXh0KX19cmV0dXJuIG51'@; put 'bGx9ZnVuY3Rpb24gT0IobixlKXtyZXR1cm4gbnVsbCE9PWU/blsxNV1bNV0ucHJvamVjdGlvbltlLnByb2plY3Rpb25dOm51bGx9ZnVuY3Rpb24gVXkobixlKXtjb25zdCB0PTEwK24rMTtpZih0PGUubGVuZ3RoKXtjb25zdCByPWVbdF0saT1yWzFdLmZpcnN0Q2hpbGQ7aWYobnVsbCE9PWkp'@; put 'cmV0dXJuIEI4KHIsaSl9cmV0dXJuIGVbN119ZnVuY3Rpb24gX1IobixlLHQscixpLG8sYSl7Zm9yKDtudWxsIT10Oyl7Y29uc3QgbD1yWzldO2lmKDEyOD09PXQudHlwZSl7dD10Lm5leHQ7Y29udGludWV9Y29uc3QgdT1yW3QuaW5kZXhdLGc9dC50eXBlO2lmKGEmJjA9PT1lJiYodSYmajAo'@; put 'RHIodSksciksdC5mbGFnc3w9MiksIUlTKHQpKWlmKDgmZylfUihuLGUsdC5jaGlsZCxyLGksbywhMSksVjgoZSxuLGwsaSx1LHQsbyxyKTtlbHNlIGlmKDMyJmcpe2NvbnN0IEU9clIodCxyKTtsZXQgTztmb3IoO089RSgpOylWOChlLG4sbCxpLE8sdCxvLHIpO1Y4KGUsbixsLGksdSx0LG8s'@; put 'cil9ZWxzZSAxNiZnP05CKG4sZSxyLHQsaSxvKTpWOChlLG4sbCxpLHUsdCxvLHIpO3Q9YT90LnByb2plY3Rpb25OZXh0OnQubmV4dH19ZnVuY3Rpb24gZUUobixlLHQscixpLG8pe19SKHQscixuLmZpcnN0Q2hpbGQsZSxpLG8sITEpfWZ1bmN0aW9uIE5CKG4sZSx0LHIsaSxvKXtjb25zdCBh'@; put 'PXRbMTVdLHU9YVs1XS5wcm9qZWN0aW9uW3IucHJvamVjdGlvbl07aWYoQXJyYXkuaXNBcnJheSh1KSlmb3IobGV0IGc9MDtnPHUubGVuZ3RoO2crKylWOChlLG4sdFs5XSxpLHVbZ10scixvLHQpO2Vsc2V7bGV0IGc9dTtjb25zdCBFPWFbM107U3kocikmJihnLmZsYWdzfD0xMjgpLF9SKG4s'@; put 'ZSxnLEUsaSxvLCEwKX19ZnVuY3Rpb24gRkIobixlLHQscixpKXtjb25zdCBvPW9oKCksYT0yJnI7dHJ5e1ltKC0xKSxhJiZlLmxlbmd0aD4yNyYmX0IobixlLDI3LCExKSxHYyhhPzI6MCxpLHQpLHQocixpKX1maW5hbGx5e1ltKG8pLEdjKGE/MzoxLGksdCl9fWZ1bmN0aW9uIHRFKG4sZSx0'@; put 'KXsoZnVuY3Rpb24gUGVlKG4sZSx0KXtjb25zdCByPXQuZGlyZWN0aXZlU3RhcnQsaT10LmRpcmVjdGl2ZUVuZDt3Zih0KSYmZnVuY3Rpb24gdkIobixlLHQpe2NvbnN0IHI9WWkoZSxuKSxpPWZ1bmN0aW9uIG1CKG4pe2NvbnN0IGU9bi50VmlldztyZXR1cm4gbnVsbD09PWV8fGUuaW5jb21w'@; put 'bGV0ZUZpcnN0UGFzcz9uLnRWaWV3PWdCKDEsbnVsbCxuLnRlbXBsYXRlLG4uZGVjbHMsbi52YXJzLG4uZGlyZWN0aXZlRGVmcyxuLnBpcGVEZWZzLG4udmlld1F1ZXJ5LG4uc2NoZW1hcyxuLmNvbnN0cyxuLmlkKTplfSh0KSxvPW5bMTBdLnJlbmRlcmVyRmFjdG9yeSxhPXRSKG4sV1Mobixp'@; put 'LG51bGwsZVIodCkscixlLG51bGwsby5jcmVhdGVSZW5kZXJlcihyLHQpLG51bGwsbnVsbCxudWxsKSk7bltlLmluZGV4XT1hfShlLHQsbi5kYXRhW3IrdC5jb21wb25lbnRPZmZzZXRdKSxuLmZpcnN0Q3JlYXRlUGFzc3x8ZWsodCxlKTtjb25zdCBvPXQuaW5pdGlhbElucHV0cztmb3IobGV0'@; put 'IGE9cjthPGk7YSsrKXtjb25zdCBsPW4uZGF0YVthXSx1PXd5KGUsbixhLHQpO2owKHUsZSksbnVsbCE9PW8mJkhlZSgwLGEtcix1LGwsMCxvKSxzMShsKSYmKFppKHQuaW5kZXgsZSlbOF09d3koZSxuLGEsdCkpfX0pKG4sZSx0KSwhKDY0Jn50LmZsYWdzKSYmZnVuY3Rpb24gWjkobixlLHQp'@; put 'e2NvbnN0IHI9dC5kaXJlY3RpdmVTdGFydCxpPXQuZGlyZWN0aXZlRW5kLG89dC5pbmRleCxhPWZ1bmN0aW9uIGdYKCl7cmV0dXJuIHBhLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXh9KCk7dHJ5e1ltKG8pO2ZvcihsZXQgbD1yO2w8aTtsKyspe2NvbnN0IHU9bi5kYXRhW2xdLGc9ZVts'@; put 'XTtuUyhsKSwobnVsbCE9PXUuaG9zdEJpbmRpbmdzfHwwIT09dS5ob3N0VmFyc3x8bnVsbCE9PXUuaG9zdEF0dHJzKSYmQkIodSxnKX19ZmluYWxseXtZbSgtMSksblMoYSl9fShuLGUsdCl9ZnVuY3Rpb24gWTkobixlLHQ9WWkpe2NvbnN0IHI9ZS5sb2NhbE5hbWVzO2lmKG51bGwhPT1yKXts'@; put 'ZXQgaT1lLmluZGV4KzE7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKz0yKXtjb25zdCBhPXJbbysxXSxsPS0xPT09YT90KGUsbik6blthXTtuW2krK109bH19fWxldCBQQj0oKT0+bnVsbDtmdW5jdGlvbiBiUihuLGUsdCxyLGksbyl7ckUobixlWzFdLGUsdCxyKT93ZihuKSYmZnVuY3Rpb24g'@; put 'SEIobixlKXtjb25zdCB0PVppKGUsbik7MTYmdFsyXXx8KHRbMl18PTY0KX0oZSxuLmluZGV4KTooMyZuLnR5cGUmJih0PWZ1bmN0aW9uIEZlZShuKXtyZXR1cm4iY2xhc3MiPT09bj8iY2xhc3NOYW1lIjoiZm9yIj09PW4/Imh0bWxGb3IiOiJmb3JtYWN0aW9uIj09PW4/ImZvcm1BY3Rpb24i'@; put 'OiJpbm5lckh0bWwiPT09bj8iaW5uZXJIVE1MIjoicmVhZG9ubHkiPT09bj8icmVhZE9ubHkiOiJ0YWJpbmRleCI9PT1uPyJ0YWJJbmRleCI6bn0odCkpLGo4KG4sZSx0LHIsaSxvKSl9ZnVuY3Rpb24gajgobixlLHQscixpLG8pe2lmKDMmbi50eXBlKXtjb25zdCBhPVlpKG4sZSk7cj1udWxs'@; put 'IT1vP28ocixuLnZhbHVlfHwiIix0KTpyLGkuc2V0UHJvcGVydHkoYSx0LHIpfX1mdW5jdGlvbiBCQihuLGUpe251bGwhPT1uLmhvc3RCaW5kaW5ncyYmbi5ob3N0QmluZGluZ3MoMSxlKX1mdW5jdGlvbiBHOShuLGUpe2NvbnN0IHQ9bi5kaXJlY3RpdmVSZWdpc3RyeTtsZXQgcj1udWxsO2lm'@; put 'KHQpZm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IG89dFtpXTtmQihlLG8uc2VsZWN0b3JzLCExKSYmKHI/Pz1bXSxzMShvKT9yLnVuc2hpZnQobyk6ci5wdXNoKG8pKX1yZXR1cm4gcn1mdW5jdGlvbiBIZWUobixlLHQscixpLG8pe2NvbnN0IGE9b1tlXTtpZihudWxsIT09YSlm'@; put 'b3IobGV0IGw9MDtsPGEubGVuZ3RoO2wrPTIpVnkocix0LGFbbF0sYVtsKzFdKX1mdW5jdGlvbiBSNShuLGUsdCxyLGkpe2NvbnN0IG89MjcrdCxhPWVbMV0sbD1pKGEsZSxuLHIsdCk7ZVtvXT1sLFdzKG4sITApO2NvbnN0IHU9Mj09PW4udHlwZTtyZXR1cm4gdT8oSlYoZVsxMV0sbCxuKSwo'@; put 'MD09PWZ1bmN0aW9uIEU5KCl7cmV0dXJuIHBhLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudH0oKXx8Q2YobikpJiZqMChsLGUpLGZ1bmN0aW9uIFAwKCl7cGEubEZyYW1lLmVsZW1lbnREZXB0aENvdW50Kyt9KCkpOmowKGwsZSksb1MoKSYmKCF1fHwhSVMobikpJiZ2UihhLGUsbCxuKSxufWZ1'@; put 'bmN0aW9uIG5FKG4pe2xldCBlPW47cmV0dXJuIGMxKCk/RGgoKTooZT1lLnBhcmVudCxXcyhlLCExKSksZX1mdW5jdGlvbiBVQihuLGUsdCl7cmV0dXJuKG51bGw9PT1ufHxzMShuKSkmJih0PWZ1bmN0aW9uIEppKG4pe2Zvcig7QXJyYXkuaXNBcnJheShuKTspe2lmKCJvYmplY3QiPT10eXBl'@; put 'b2YgblsxXSlyZXR1cm4gbjtuPW5bMF19cmV0dXJuIG51bGx9KHRbZS5pbmRleF0pKSx0WzExXX1mdW5jdGlvbiByRShuLGUsdCxyLGkpe2NvbnN0IG89bi5pbnB1dHM/LltyXSxhPW4uaG9zdERpcmVjdGl2ZUlucHV0cz8uW3JdO2xldCBsPSExO2lmKGEpZm9yKGxldCB1PTA7dTxhLmxlbmd0'@; put 'aDt1Kz0yKXtjb25zdCBnPWFbdV07VnkoZS5kYXRhW2ddLHRbZ10sYVt1KzFdLGkpLGw9ITB9aWYobylmb3IoY29uc3QgdSBvZiBvKVZ5KGUuZGF0YVt1XSx0W3VdLHIsaSksbD0hMDtyZXR1cm4gbH1mdW5jdGlvbiBCZWUobixlKXtjb25zdCB0PVppKGUsbikscj10WzFdOyFmdW5jdGlvbiBq'@; put 'ZWUobixlKXtmb3IobGV0IHQ9ZS5sZW5ndGg7dDxuLmJsdWVwcmludC5sZW5ndGg7dCsrKWUucHVzaChuLmJsdWVwcmludFt0XSl9KHIsdCk7Y29uc3QgaT10WzBdO251bGwhPT1pJiZudWxsPT09dFs2XSYmKHRbNl09bnVsbCksR2MoMTgpLGlFKHIsdCx0WzhdKSxHYygxOSx0WzhdKX1mdW5j'@; put 'dGlvbiBpRShuLGUsdCl7a0EoZSk7dHJ5e2NvbnN0IHI9bi52aWV3UXVlcnk7bnVsbCE9PXImJkxTKDEscix0KTtjb25zdCBpPW4udGVtcGxhdGU7bnVsbCE9PWkmJkZCKG4sZSxpLDEsdCksbi5maXJzdENyZWF0ZVBhc3MmJihuLmZpcnN0Q3JlYXRlUGFzcz0hMSksZVsxOF0/LmZpbmlzaFZp'@; put 'ZXdDcmVhdGlvbihuKSxuLnN0YXRpY0NvbnRlbnRRdWVyaWVzJiZWayhuLGUpLG4uc3RhdGljVmlld1F1ZXJpZXMmJkxTKDIsbi52aWV3UXVlcnksdCk7Y29uc3Qgbz1uLmNvbXBvbmVudHM7bnVsbCE9PW8mJmZ1bmN0aW9uIFVlZShuLGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKUJl'@; put 'ZShuLGVbdF0pfShlLG8pfWNhdGNoKHIpe3Rocm93IG4uZmlyc3RDcmVhdGVQYXNzJiYobi5pbmNvbXBsZXRlRmlyc3RQYXNzPSEwLG4uZmlyc3RDcmVhdGVQYXNzPSExKSxyfWZpbmFsbHl7ZVsyXSY9LTUsaVMoKX19ZnVuY3Rpb24gJDkobixlLHQscil7Y29uc3QgaT1rKG51bGwpO3RyeXtj'@; put 'b25zdCBvPWUudFZpZXcsdT1XUyhuLG8sdCw0MDk2Jm5bMl0/NDA5NjoxNixudWxsLGUsbnVsbCxudWxsLHI/LmluamVjdG9yPz9udWxsLHI/LmVtYmVkZGVkVmlld0luamVjdG9yPz9udWxsLHI/LmRlaHlkcmF0ZWRWaWV3Pz9udWxsKTt1WzE2XT1uW2UuaW5kZXhdO2NvbnN0IEU9blsxOF07'@; put 'cmV0dXJuIG51bGwhPT1FJiYodVsxOF09RS5jcmVhdGVFbWJlZGRlZFZpZXcobykpLGlFKG8sdSx0KSx1fWZpbmFsbHl7ayhpKX19ZnVuY3Rpb24gVTgobixlKXtyZXR1cm4hZXx8bnVsbD09PWUuZmlyc3RDaGlsZHx8U3kobil9ZnVuY3Rpb24genkobixlLHQscixpPSExKXtmb3IoO251bGwh'@; put 'PT10Oyl7aWYoMTI4PT09dC50eXBlKXt0PWk/dC5wcm9qZWN0aW9uTmV4dDp0Lm5leHQ7Y29udGludWV9Y29uc3Qgbz1lW3QuaW5kZXhdO251bGwhPT1vJiZyLnB1c2goRHIobykpLFl1KG8pJiZ6QihvLHIpO2NvbnN0IGE9dC50eXBlO2lmKDgmYSl6eShuLGUsdC5jaGlsZCxyKTtlbHNlIGlm'@; put 'KDMyJmEpe2NvbnN0IGw9clIodCxlKTtsZXQgdTtmb3IoO3U9bCgpOylyLnB1c2godSl9ZWxzZSBpZigxNiZhKXtjb25zdCBsPU9CKGUsdCk7aWYoQXJyYXkuaXNBcnJheShsKSlyLnB1c2goLi4ubCk7ZWxzZXtjb25zdCB1PWloKGVbMTVdKTt6eSh1WzFdLHUsbCxyLCEwKX19dD1pP3QucHJv'@; put 'amVjdGlvbk5leHQ6dC5uZXh0fXJldHVybiByfWZ1bmN0aW9uIHpCKG4sZSl7Zm9yKGxldCB0PTEwO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCByPW5bdF0saT1yWzFdLmZpcnN0Q2hpbGQ7bnVsbCE9PWkmJnp5KHJbMV0scixpLGUpfW5bN10hPT1uWzBdJiZlLnB1c2gobls3XSl9ZnVuY3Rpb24g'@; put 'a2Yobil7aWYobnVsbCE9PW5bMjVdKXtmb3IoY29uc3QgZSBvZiBuWzI1XSllLmltcGwuYWRkU2VxdWVuY2UoZSk7blsyNV0ubGVuZ3RoPTB9fWxldCBTUj1bXTtjb25zdCBFUj17Li4uRyxjb25zdW1lcklzQWx3YXlzTGl2ZTohMCxraW5kOiJ0ZW1wbGF0ZSIsY29uc3VtZXJNYXJrZWREaXJ0'@; put 'eTpuPT57UzIobi5sVmlldyl9LGNvbnN1bWVyT25TaWduYWxSZWFkKCl7dGhpcy5sVmlld1syNF09dGhpc319LE1SPXsuLi5HLGNvbnN1bWVySXNBbHdheXNMaXZlOiEwLGtpbmQ6InRlbXBsYXRlIixjb25zdW1lck1hcmtlZERpcnR5Om49PntsZXQgZT1paChuLmxWaWV3KTtmb3IoO2UmJiFU'@; put 'UihlWzFdKTspZT1paChlKTtlJiZsMShlKX0sY29uc3VtZXJPblNpZ25hbFJlYWQoKXt0aGlzLmxWaWV3WzI0XT10aGlzfX07ZnVuY3Rpb24gVFIobil7cmV0dXJuIDIhPT1uLnR5cGV9ZnVuY3Rpb24geFIobil7aWYobnVsbD09PW5bMjNdKXJldHVybjtsZXQgZT0hMDtmb3IoO2U7KXtsZXQg'@; put 'dD0hMTtmb3IoY29uc3QgciBvZiBuWzIzXSlyLmRpcnR5JiYodD0hMCxudWxsPT09ci56b25lfHxab25lLmN1cnJlbnQ9PT1yLnpvbmU/ci5ydW4oKTpyLnpvbmUucnVuKCgpPT5yLnJ1bigpKSk7ZT10JiYhISg4MTkyJm5bMl0pfX1mdW5jdGlvbiBXeShuLGU9MCl7Y29uc3Qgcj1uWzEwXS5y'@; put 'ZW5kZXJlckZhY3Rvcnk7ci5iZWdpbj8uKCk7dHJ5eyFmdW5jdGlvbiBaZWUobixlKXtjb25zdCB0PVVQKCk7dHJ5e3RTKCEwKSxrUihuLGUpO2xldCByPTA7Zm9yKDtaYyhuKTspe2lmKDEwMD09PXIpdGhyb3cgbmV3IFduKDEwMywhMSk7cisrLGtSKG4sMSl9fWZpbmFsbHl7dFModCl9fShu'@; put 'LGUpfWZpbmFsbHl7ci5lbmQ/LigpfX1mdW5jdGlvbiBBUihuLGUsdCxyKXtpZihTZihlKSlyZXR1cm47Y29uc3QgaT1lWzJdO2tBKGUpO2xldCBsPSEwLHU9bnVsbCxnPW51bGw7VFIobik/KGc9ZnVuY3Rpb24gemVlKG4pe3JldHVybiBuWzI0XT8/ZnVuY3Rpb24gV2VlKG4pe2NvbnN0IGU9'@; put 'U1IucG9wKCk/P09iamVjdC5jcmVhdGUoRVIpO3JldHVybiBlLmxWaWV3PW4sZX0obil9KGUpLHU9b3QoZykpOm51bGw9PT1mdW5jdGlvbiBNKCl7cmV0dXJuIGtlfSgpPyhsPSExLGc9ZnVuY3Rpb24gWWVlKG4pe2NvbnN0IGU9blsyNF0/P09iamVjdC5jcmVhdGUoTVIpO3JldHVybiBlLmxW'@; put 'aWV3PW4sZX0oZSksdT1vdChnKSk6ZVsyNF0mJih4ZShlWzI0XSksZVsyNF09bnVsbCk7dHJ5e1VkKGUpLGZ1bmN0aW9uIHpQKG4pe3JldHVybiBwYS5sRnJhbWUuYmluZGluZ0luZGV4PW59KG4uYmluZGluZ1N0YXJ0SW5kZXgpLG51bGwhPT10JiZGQihuLGUsdCwyLHIpO2NvbnN0IEU9ISgz'@; put 'Jn5pKTtpZihFKXtjb25zdCBlZT1uLnByZU9yZGVyQ2hlY2tIb29rcztudWxsIT09ZWUmJl9TKGUsZWUsbnVsbCl9ZWxzZXtjb25zdCBlZT1uLnByZU9yZGVySG9va3M7bnVsbCE9PWVlJiZ5UyhlLGVlLDAsbnVsbCksJEEoZSwwKX1pZihmdW5jdGlvbiBKbShuKXtmb3IobGV0IGU9S0gobik7'@; put 'bnVsbCE9PWU7ZT1YSChlKSl7aWYoISgyJmVbMl0pKWNvbnRpbnVlO2NvbnN0IHQ9ZVs5XTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKylsMSh0W3JdKX19KGUpLHhSKGUpLFpCKGUsMCksbnVsbCE9PW4uY29udGVudFF1ZXJpZXMmJlZrKG4sZSksRSl7Y29uc3QgZWU9bi5jb250ZW50Q2hl'@; put 'Y2tIb29rcztudWxsIT09ZWUmJl9TKGUsZWUpfWVsc2V7Y29uc3QgZWU9bi5jb250ZW50SG9va3M7bnVsbCE9PWVlJiZ5UyhlLGVlLDEpLCRBKGUsMSl9IWZ1bmN0aW9uIHFlZShuLGUpe2NvbnN0IHQ9bi5ob3N0QmluZGluZ09wQ29kZXM7aWYobnVsbCE9PXQpdHJ5e2ZvcihsZXQgcj0wO3I8'@; put 'dC5sZW5ndGg7cisrKXtjb25zdCBpPXRbcl07aWYoaTwwKVltKH5pKTtlbHNle2NvbnN0IG89aSxhPXRbKytyXSxsPXRbKytyXTtwWChhLG8pO2NvbnN0IHU9ZVtvXTtHYygyNCx1KSxsKDIsdSksR2MoMjUsdSl9fX1maW5hbGx5e1ltKC0xKX19KG4sZSk7Y29uc3QgTz1uLmNvbXBvbmVudHM7'@; put 'bnVsbCE9PU8mJiRCKGUsTywwKTtjb25zdCBaPW4udmlld1F1ZXJ5O2lmKG51bGwhPT1aJiZMUygyLFosciksRSl7Y29uc3QgZWU9bi52aWV3Q2hlY2tIb29rcztudWxsIT09ZWUmJl9TKGUsZWUpfWVsc2V7Y29uc3QgZWU9bi52aWV3SG9va3M7bnVsbCE9PWVlJiZ5UyhlLGVlLDIpLCRBKGUs'@; put 'Mil9aWYoITA9PT1uLmZpcnN0VXBkYXRlUGFzcyYmKG4uZmlyc3RVcGRhdGVQYXNzPSExKSxlWzIyXSl7Zm9yKGNvbnN0IGVlIG9mIGVbMjJdKWVlKCk7ZVsyMl09bnVsbH1rZihlKSxlWzJdJj0tNzN9Y2F0Y2goRSl7dGhyb3cgUzIoZSksRX1maW5hbGx5e251bGwhPT1nJiYoZHQoZyx1KSxs'@; put 'JiZmdW5jdGlvbiBXQihuKXtuLmxWaWV3WzI0XSE9PW4mJihuLmxWaWV3PW51bGwsU1IucHVzaChuKSl9KGcpKSxpUygpfX1mdW5jdGlvbiBaQihuLGUpe2ZvcihsZXQgdD1LSChuKTtudWxsIT09dDt0PVhIKHQpKWZvcihsZXQgcj0xMDtyPHQubGVuZ3RoO3IrKylHQih0W3JdLGUpfWZ1bmN0'@; put 'aW9uICRlZShuLGUsdCl7R2MoMTgpO2NvbnN0IHI9WmkoZSxuKTtHQihyLHQpLEdjKDE5LHJbOF0pfWZ1bmN0aW9uIEdCKG4sZSl7amwobikmJmtSKG4sZSl9ZnVuY3Rpb24ga1IobixlKXtjb25zdCByPW5bMV0saT1uWzJdLG89blsyNF07bGV0IGE9ISEoMD09PWUmJjE2JmkpO2lmKGF8fD0h'@; put 'ISg2NCZpJiYwPT09ZSksYXx8PSEhKDEwMjQmaSksYXx8PSEoIW8/LmRpcnR5fHwhYWUobykpLGF8fD0hMSxvJiYoby5kaXJ0eT0hMSksblsyXSY9LTkyMTcsYSlBUihyLG4sci50ZW1wbGF0ZSxuWzhdKTtlbHNlIGlmKDgxOTImaSl7Y29uc3QgbD1rKG51bGwpO3RyeXt4UihuKSxaQihuLDEp'@; put 'O2NvbnN0IHU9ci5jb21wb25lbnRzO251bGwhPT11JiYkQihuLHUsMSksa2Yobil9ZmluYWxseXtrKGwpfX19ZnVuY3Rpb24gJEIobixlLHQpe2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKSRlZShuLGVbcl0sdCl9ZnVuY3Rpb24gcTkobixlKXtjb25zdCB0PVVQKCk/NjQ6MTA4ODtmb3Io'@; put 'blsxMF0uY2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVyPy5ub3RpZnkoZSk7bjspe25bMl18PXQ7Y29uc3Qgcj1paChuKTtpZih2MyhuKSYmIXIpcmV0dXJuIG47bj1yfXJldHVybiBudWxsfWZ1bmN0aW9uIHFCKG4sZSx0LHIpe3JldHVybltuLCEwLDAsZSxudWxsLHIsbnVsbCx0LG51bGwsbnVs'@; put 'bF19ZnVuY3Rpb24gS0IobixlKXtjb25zdCB0PTEwK2U7aWYodDxuLmxlbmd0aClyZXR1cm4gblt0XX1mdW5jdGlvbiBLOShuLGUsdCxyPSEwKXtjb25zdCBpPWVbMV07aWYoZnVuY3Rpb24gU2QobixlLHQscil7Y29uc3QgaT0xMCtyLG89dC5sZW5ndGg7cj4wJiYodFtpLTFdWzRdPWUpLHI8'@; put 'by0xMD8oZVs0XT10W2ldLHQxKHQsMTArcixlKSk6KHQucHVzaChlKSxlWzRdPW51bGwpLGVbM109dDtjb25zdCBhPWVbMTZdO251bGwhPT1hJiZ0IT09YSYmSTUoYSxlKTtjb25zdCBsPWVbMThdO251bGwhPT1sJiZsLmluc2VydFZpZXcobiksaDAoZSksZVsyXXw9MTI4fShpLGUsbix0KSxy'@; put 'KXtjb25zdCBhPVV5KHQsbiksbD1lWzExXSx1PWwucGFyZW50Tm9kZShuWzddKTtudWxsIT09dSYmZnVuY3Rpb24gUjIobixlLHQscixpLG8pe3JbMF09aSxyWzVdPWUsZUUobixyLHQsMSxpLG8pfShpLG5bNV0sbCxlLHUsYSl9Y29uc3Qgbz1lWzZdO251bGwhPT1vJiZudWxsIT09by5maXJz'@; put 'dENoaWxkJiYoby5maXJzdENoaWxkPW51bGwpfWZ1bmN0aW9uIHNoKG4sZSl7Y29uc3QgdD1YOShuLGUpO3JldHVybiB2b2lkIDAhPT10JiZCeSh0WzFdLHQpLHR9ZnVuY3Rpb24gWDkobixlKXtpZihuLmxlbmd0aDw9MTApcmV0dXJuO2NvbnN0IHQ9MTArZSxyPW5bdF07aWYocil7Y29uc3Qg'@; put 'aT1yWzE2XTtudWxsIT09aSYmaSE9PW4mJmhSKGksciksZT4wJiYoblt0LTFdWzRdPXJbNF0pO2NvbnN0IG89YmQobiwxMCtlKTshZnVuY3Rpb24gdVIobixlKXtkUihuLGUpLGVbMF09bnVsbCxlWzVdPW51bGx9KHJbMV0scik7Y29uc3QgYT1vWzE4XTtudWxsIT09YSYmYS5kZXRhY2hWaWV3'@; put 'KG9bMV0pLHJbM109bnVsbCxyWzRdPW51bGwsclsyXSY9LTEyOX1yZXR1cm4gcn1mdW5jdGlvbiBJNShuLGUpe2NvbnN0IHQ9bls5XSxyPWVbM107KHpzKHIpfHxlWzE1XSE9PXJbM11bMTVdKSYmKG5bMl18PTIpLG51bGw9PT10P25bOV09W2VdOnQucHVzaChlKX1jbGFzcyBROXtfbFZpZXc7'@; put 'X2NkUmVmSW5qZWN0aW5nVmlldztfYXBwUmVmPW51bGw7X2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExO2V4aGF1c3RpdmU7Z2V0IHJvb3ROb2Rlcygpe2NvbnN0IGU9dGhpcy5fbFZpZXcsdD1lWzFdO3JldHVybiB6eSh0LGUsdC5maXJzdENoaWxkLFtdKX1jb25zdHJ1Y3RvcihlLHQpe3Ro'@; put 'aXMuX2xWaWV3PWUsdGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3PXR9Z2V0IGNvbnRleHQoKXtyZXR1cm4gdGhpcy5fbFZpZXdbOF19c2V0IGNvbnRleHQoZSl7dGhpcy5fbFZpZXdbOF09ZX1nZXQgZGVzdHJveWVkKCl7cmV0dXJuIFNmKHRoaXMuX2xWaWV3KX1kZXN0cm95KCl7aWYodGhpcy5f'@; put 'YXBwUmVmKXRoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KHRoaXMpO2Vsc2UgaWYodGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXIpe2NvbnN0IGU9dGhpcy5fbFZpZXdbM107aWYoWXUoZSkpe2NvbnN0IHQ9ZVs4XSxyPXQ/dC5pbmRleE9mKHRoaXMpOi0xO3I+LTEmJihYOShlLHIpLGJkKHQs'@; put 'cikpfXRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfUJ5KHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3KX1vbkRlc3Ryb3koZSl7XzModGhpcy5fbFZpZXcsZSl9bWFya0ZvckNoZWNrKCl7cTkodGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3fHx0aGlzLl9sVmlldyw0KX1kZXRhY2go'@; put 'KXt0aGlzLl9sVmlld1syXSY9LTEyOX1yZWF0dGFjaCgpe2gwKHRoaXMuX2xWaWV3KSx0aGlzLl9sVmlld1syXXw9MTI4fWRldGVjdENoYW5nZXMoKXt0aGlzLl9sVmlld1syXXw9MTAyNCxXeSh0aGlzLl9sVmlldyl9Y2hlY2tOb0NoYW5nZXMoKXt9YXR0YWNoVG9WaWV3Q29udGFpbmVyUmVm'@; put 'KCl7aWYodGhpcy5fYXBwUmVmKXRocm93IG5ldyBXbig5MDIsITEpO3RoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSEwfWRldGFjaEZyb21BcHBSZWYoKXt0aGlzLl9hcHBSZWY9bnVsbDtjb25zdCBlPXYzKHRoaXMuX2xWaWV3KSx0PXRoaXMuX2xWaWV3WzE2XTtudWxsIT09dCYmIWUm'@; put 'JmhSKHQsdGhpcy5fbFZpZXcpLGRSKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3KX1hdHRhY2hUb0FwcFJlZihlKXtpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil0aHJvdyBuZXcgV24oOTAyLCExKTt0aGlzLl9hcHBSZWY9ZTtjb25zdCB0PXYzKHRoaXMuX2xWaWV3KSxyPXRo'@; put 'aXMuX2xWaWV3WzE2XTtudWxsIT09ciYmIXQmJkk1KHIsdGhpcy5fbFZpZXcpLGgwKHRoaXMuX2xWaWV3KX19bGV0IEZjPSgoKT0+Y2xhc3MgbntfZGVjbGFyYXRpb25MVmlldztfZGVjbGFyYXRpb25UQ29udGFpbmVyO2VsZW1lbnRSZWY7c3RhdGljIF9fTkdfRUxFTUVOVF9JRF9fPW9FO2Nv'@; put 'bnN0cnVjdG9yKHQscixpKXt0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PXQsdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyPXIsdGhpcy5lbGVtZW50UmVmPWl9Z2V0IHNzcklkKCl7cmV0dXJuIHRoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lci50Vmlldz8uc3NySWR8fG51bGx9Y3JlYXRlRW1i'@; put 'ZWRkZWRWaWV3KHQscil7cmV0dXJuIHRoaXMuY3JlYXRlRW1iZWRkZWRWaWV3SW1wbCh0LHIpfWNyZWF0ZUVtYmVkZGVkVmlld0ltcGwodCxyLGkpe2NvbnN0IG89JDkodGhpcy5fZGVjbGFyYXRpb25MVmlldyx0aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXIsdCx7ZW1iZWRkZWRWaWV3SW5q'@; put 'ZWN0b3I6cixkZWh5ZHJhdGVkVmlldzppfSk7cmV0dXJuIG5ldyBROShvKX19KSgpO2Z1bmN0aW9uIG9FKCl7cmV0dXJuIHo4KHlpKCksaXQoKSl9ZnVuY3Rpb24gejgobixlKXtyZXR1cm4gNCZuLnR5cGU/bmV3IEZjKGUsbixBOChuLGUpKTpudWxsfWZ1bmN0aW9uIEQ1KG4sZSx0LHIsaSl7'@; put 'bGV0IG89bi5kYXRhW2VdO2lmKG51bGw9PT1vKW89ZnVuY3Rpb24gTFIobixlLHQscixpKXtjb25zdCBvPVdhKCksYT1jMSgpLHU9bi5kYXRhW2VdPWZ1bmN0aW9uIG90ZShuLGUsdCxyLGksbyl7bGV0IGE9ZT9lLmluamVjdG9ySW5kZXg6LTEsbD0wO3JldHVybiB2cCgpJiYobHw9MTI4KSx7'@; put 'dHlwZTp0LGluZGV4OnIsaW5zZXJ0QmVmb3JlSW5kZXg6bnVsbCxpbmplY3RvckluZGV4OmEsZGlyZWN0aXZlU3RhcnQ6LTEsZGlyZWN0aXZlRW5kOi0xLGRpcmVjdGl2ZVN0eWxpbmdMYXN0Oi0xLGNvbXBvbmVudE9mZnNldDotMSxwcm9wZXJ0eUJpbmRpbmdzOm51bGwsZmxhZ3M6bCxwcm92'@; put 'aWRlckluZGV4ZXM6MCx2YWx1ZTppLG5hbWVzcGFjZTpJQSgpLGF0dHJzOm8sbWVyZ2VkQXR0cnM6bnVsbCxsb2NhbE5hbWVzOm51bGwsaW5pdGlhbElucHV0czpudWxsLGlucHV0czpudWxsLGhvc3REaXJlY3RpdmVJbnB1dHM6bnVsbCxvdXRwdXRzOm51bGwsaG9zdERpcmVjdGl2ZU91dHB1'@; put 'dHM6bnVsbCxkaXJlY3RpdmVUb0luZGV4Om51bGwsdFZpZXc6bnVsbCxuZXh0Om51bGwscHJldjpudWxsLHByb2plY3Rpb25OZXh0Om51bGwsY2hpbGQ6bnVsbCxwYXJlbnQ6ZSxwcm9qZWN0aW9uOm51bGwsc3R5bGVzOm51bGwsc3R5bGVzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbFN0eWxl'@; put 'czp2b2lkIDAsY2xhc3NlczpudWxsLGNsYXNzZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsQ2xhc3Nlczp2b2lkIDAsY2xhc3NCaW5kaW5nczowLHN0eWxlQmluZGluZ3M6MH19KDAsYT9vOm8mJm8ucGFyZW50LHQsZSxyLGkpO3JldHVybiBmdW5jdGlvbiBpdGUobixlLHQscil7bnVsbD09'@; put 'PW4uZmlyc3RDaGlsZCYmKG4uZmlyc3RDaGlsZD1lKSxudWxsIT09dCYmKHI/bnVsbD09dC5jaGlsZCYmbnVsbCE9PWUucGFyZW50JiYodC5jaGlsZD1lKTpudWxsPT09dC5uZXh0JiYodC5uZXh0PWUsZS5wcmV2PXQpKX0obix1LG8sYSksdX0obixlLHQscixpKSxmdW5jdGlvbiBmWCgpe3Jl'@; put 'dHVybiBwYS5sRnJhbWUuaW5JMThufSgpJiYoby5mbGFnc3w9MzIpO2Vsc2UgaWYoNjQmby50eXBlKXtvLnR5cGU9dCxvLnZhbHVlPXIsby5hdHRycz1pO2NvbnN0IGE9ZnVuY3Rpb24gU3MoKXtjb25zdCBuPXBhLmxGcmFtZSxlPW4uY3VycmVudFROb2RlO3JldHVybiBuLmlzUGFyZW50P2U6'@; put 'ZS5wYXJlbnR9KCk7by5pbmplY3RvckluZGV4PW51bGw9PT1hPy0xOmEuaW5qZWN0b3JJbmRleH1yZXR1cm4gV3MobywhMCksb31mdW5jdGlvbiBNbihuLGUpe2xldCB0PTAscj1uLmZpcnN0Q2hpbGQ7aWYocil7Y29uc3QgaT1uLmRhdGEucjtmb3IoO3Q8aTspe2NvbnN0IG89ci5uZXh0U2li'@; put 'bGluZztOeShlLHIsITEpLHI9byx0Kyt9fX1sZXQgY2g9Y2xhc3N7fSxFZD1jbGFzc3t9O2NsYXNzIHpke3Jlc29sdmVDb21wb25lbnRGYWN0b3J5KGUpe3Rocm93IG5ldyBXbig5MTcsITEpfX1sZXQgTGg9Y2xhc3N7c3RhdGljIE5VTEw9bmV3IHpkfTtjbGFzcyBnY3t9bGV0IE50PSgoKT0+'@; put 'Y2xhc3MgbntkZXN0cm95Tm9kZT1udWxsO3N0YXRpYyBfX05HX0VMRU1FTlRfSURfXz0oKT0+ZnVuY3Rpb24gaG4oKXtjb25zdCBuPWl0KCksdD1aaSh5aSgpLmluZGV4LG4pO3JldHVybih6cyh0KT90Om4pWzExXX0oKX0pKCksUG49KCgpPT57Y2xhc3MgbntzdGF0aWMgXHUwMjc1cHJvdj1K'@; put 'bih7dG9rZW46bixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5udWxsfSl9cmV0dXJuIG59KSgpO2NvbnN0IFFzPXt9O2NsYXNzIF91e2luamVjdG9yO3BhcmVudEluamVjdG9yO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pbmplY3Rvcj1lLHRoaXMucGFyZW50SW5qZWN0b3I9dH1nZXQo'@; put 'ZSx0LHIpe2NvbnN0IGk9dGhpcy5pbmplY3Rvci5nZXQoZSxRcyxyKTtyZXR1cm4gaSE9PVFzfHx0PT09UXM/aTp0aGlzLnBhcmVudEluamVjdG9yLmdldChlLHQscil9fWZ1bmN0aW9uIE1kKG4sZSx0KXtsZXQgcj10P24uc3R5bGVzOm51bGwsaT10P24uY2xhc3NlczpudWxsLG89MDtpZihu'@; put 'dWxsIT09ZSlmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7Y29uc3QgbD1lW2FdOyJudW1iZXIiPT10eXBlb2YgbD9vPWw6MT09bz9pPUwwKGksbCk6Mj09byYmKHI9TDAocixsKyI6ICIrZVsrK2FdKyI7IikpfXQ/bi5zdHlsZXM9cjpuLnN0eWxlc1dpdGhvdXRIb3N0PXIsdD9uLmNsYXNz'@; put 'ZXM9aTpuLmNsYXNzZXNXaXRob3V0SG9zdD1pfWZ1bmN0aW9uIHplKG4sZT0wKXtjb25zdCB0PWl0KCk7cmV0dXJuIG51bGw9PT10P29yKG4sZSk6RkgoeWkoKSx0LGZhKG4pLGUpfWZ1bmN0aW9uIEc4KG4sZSx0LHIsaSl7Y29uc3Qgbz1udWxsPT09cj9udWxsOnsiIjotMX0sYT1pKG4sdCk7'@; put 'aWYobnVsbCE9PWEpe2xldCBsPWEsdT1udWxsLGc9bnVsbDtmb3IoY29uc3QgRSBvZiBhKWlmKG51bGwhPT1FLnJlc29sdmVIb3N0RGlyZWN0aXZlcyl7W2wsdSxnXT1FLnJlc29sdmVIb3N0RGlyZWN0aXZlcyhhKTticmVha30hZnVuY3Rpb24gZW4obixlLHQscixpLG8sYSl7Y29uc3QgbD1y'@; put 'Lmxlbmd0aDtsZXQgdT0hMTtmb3IobGV0IFo9MDtaPGw7WisrKXtjb25zdCBlZT1yW1pdOyF1JiZzMShlZSkmJih1PSEwLGJuKG4sdCxaKSksbmsoZWsodCxlKSxuLGVlLnR5cGUpfSFmdW5jdGlvbiBIaShuLGUsdCl7bi5mbGFnc3w9MSxuLmRpcmVjdGl2ZVN0YXJ0PWUsbi5kaXJlY3RpdmVF'@; put 'bmQ9ZSt0LG4ucHJvdmlkZXJJbmRleGVzPWV9KHQsbi5kYXRhLmxlbmd0aCxsKTtmb3IobGV0IFo9MDtaPGw7WisrKXtjb25zdCBlZT1yW1pdO2VlLnByb3ZpZGVyc1Jlc29sdmVyJiZlZS5wcm92aWRlcnNSZXNvbHZlcihlZSl9bGV0IGc9ITEsRT0hMSxPPUh5KG4sZSxsLG51bGwpO2w+MCYm'@; put 'KHQuZGlyZWN0aXZlVG9JbmRleD1uZXcgTWFwKTtmb3IobGV0IFo9MDtaPGw7WisrKXtjb25zdCBlZT1yW1pdO2lmKHQubWVyZ2VkQXR0cnM9UjkodC5tZXJnZWRBdHRycyxlZS5ob3N0QXR0cnMpLEJyKG4sdCxlLE8sZWUpLGVvKE8sZWUsaSksbnVsbCE9PWEmJmEuaGFzKGVlKSl7Y29uc3Rb'@; put 'TWUsSGVdPWEuZ2V0KGVlKTt0LmRpcmVjdGl2ZVRvSW5kZXguc2V0KGVlLnR5cGUsW08sTWUrdC5kaXJlY3RpdmVTdGFydCxIZSt0LmRpcmVjdGl2ZVN0YXJ0XSl9ZWxzZShudWxsPT09b3x8IW8uaGFzKGVlKSkmJnQuZGlyZWN0aXZlVG9JbmRleC5zZXQoZWUudHlwZSxPKTtudWxsIT09ZWUu'@; put 'Y29udGVudFF1ZXJpZXMmJih0LmZsYWdzfD00KSwobnVsbCE9PWVlLmhvc3RCaW5kaW5nc3x8bnVsbCE9PWVlLmhvc3RBdHRyc3x8MCE9PWVlLmhvc3RWYXJzKSYmKHQuZmxhZ3N8PTY0KTtjb25zdCB2ZT1lZS50eXBlLnByb3RvdHlwZTshZyYmKHZlLm5nT25DaGFuZ2VzfHx2ZS5uZ09uSW5p'@; put 'dHx8dmUubmdEb0NoZWNrKSYmKChuLnByZU9yZGVySG9va3M/Pz1bXSkucHVzaCh0LmluZGV4KSxnPSEwKSwhRSYmKHZlLm5nT25DaGFuZ2VzfHx2ZS5uZ0RvQ2hlY2spJiYoKG4ucHJlT3JkZXJDaGVja0hvb2tzPz89W10pLnB1c2godC5pbmRleCksRT0hMCksTysrfSFmdW5jdGlvbiBEdChu'@; put 'LGUsdCl7Zm9yKGxldCByPWUuZGlyZWN0aXZlU3RhcnQ7cjxlLmRpcmVjdGl2ZUVuZDtyKyspe2NvbnN0IGk9bi5kYXRhW3JdO2lmKG51bGwhPT10JiZ0LmhhcyhpKSl7Y29uc3Qgbz10LmdldChpKTtvbigwLGUsbyxyKSxvbigxLGUsbyxyKSxtcihlLHIsITApfWVsc2UgV3QoMCxlLGksciks'@; put 'V3QoMSxlLGksciksbXIoZSxyLCExKX19KG4sdCxvKX0obixlLHQsbCxvLHUsZyl9bnVsbCE9PW8mJm51bGwhPT1yJiZmdW5jdGlvbiBKdChuLGUsdCl7Y29uc3Qgcj1uLmxvY2FsTmFtZXM9W107Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKz0yKXtjb25zdCBvPXRbZVtpKzFdXTtpZihudWxs'@; put 'PT1vKXRocm93IG5ldyBXbigtMzAxLCExKTtyLnB1c2goZVtpXSxvKX19KHQscixvKX1mdW5jdGlvbiBibihuLGUsdCl7ZS5jb21wb25lbnRPZmZzZXQ9dCwobi5jb21wb25lbnRzPz89W10pLnB1c2goZS5pbmRleCl9ZnVuY3Rpb24gV3QobixlLHQscil7Y29uc3QgaT0wPT09bj90LmlucHV0'@; put 'czp0Lm91dHB1dHM7Zm9yKGNvbnN0IG8gaW4gaSlpZihpLmhhc093blByb3BlcnR5KG8pKXtsZXQgYTthPTA9PT1uP2UuaW5wdXRzPz89e306ZS5vdXRwdXRzPz89e30sYVtvXT8/PVtdLGFbb10ucHVzaChyKSxMbihlLG8pfX1mdW5jdGlvbiBvbihuLGUsdCxyKXtjb25zdCBpPTA9PT1uP3Qu'@; put 'aW5wdXRzOnQub3V0cHV0cztmb3IoY29uc3QgbyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkobykpe2NvbnN0IGE9aVtvXTtsZXQgbDtsPTA9PT1uP2UuaG9zdERpcmVjdGl2ZUlucHV0cz8/PXt9OmUuaG9zdERpcmVjdGl2ZU91dHB1dHM/Pz17fSxsW2FdPz89W10sbFthXS5wdXNoKHIsbyks'@; put 'TG4oZSxhKX19ZnVuY3Rpb24gTG4obixlKXsiY2xhc3MiPT09ZT9uLmZsYWdzfD04OiJzdHlsZSI9PT1lJiYobi5mbGFnc3w9MTYpfWZ1bmN0aW9uIG1yKG4sZSx0KXtjb25zdHthdHRyczpyLGlucHV0czppLGhvc3REaXJlY3RpdmVJbnB1dHM6b309bjtpZihudWxsPT09cnx8IXQmJm51bGw9'@; put 'PT1pfHx0JiZudWxsPT09b3x8UHkobikpcmV0dXJuIG4uaW5pdGlhbElucHV0cz8/PVtdLHZvaWQgbi5pbml0aWFsSW5wdXRzLnB1c2gobnVsbCk7bGV0IGE9bnVsbCxsPTA7Zm9yKDtsPHIubGVuZ3RoOyl7Y29uc3QgdT1yW2xdO2lmKDAhPT11KWlmKDUhPT11KXtpZigibnVtYmVyIj09dHlw'@; put 'ZW9mIHUpYnJlYWs7aWYoIXQmJmkuaGFzT3duUHJvcGVydHkodSkpe2NvbnN0IGc9aVt1XTtmb3IoY29uc3QgRSBvZiBnKWlmKEU9PT1lKXthPz89W10sYS5wdXNoKHUscltsKzFdKTticmVha319ZWxzZSBpZih0JiZvLmhhc093blByb3BlcnR5KHUpKXtjb25zdCBnPW9bdV07Zm9yKGxldCBF'@; put 'PTA7RTxnLmxlbmd0aDtFKz0yKWlmKGdbRV09PT1lKXthPz89W10sYS5wdXNoKGdbRSsxXSxyW2wrMV0pO2JyZWFrfX1sKz0yfWVsc2UgbCs9MjtlbHNlIGwrPTR9bi5pbml0aWFsSW5wdXRzPz89W10sbi5pbml0aWFsSW5wdXRzLnB1c2goYSl9ZnVuY3Rpb24gQnIobixlLHQscixpKXtuLmRh'@; put 'dGFbcl09aTtjb25zdCBvPWkuZmFjdG9yeXx8KGkuZmFjdG9yeT1uYyhpLnR5cGUpKSxhPW5ldyBfeShvLHMxKGkpLHplLG51bGwpO24uYmx1ZXByaW50W3JdPWEsdFtyXT1hLGZ1bmN0aW9uIEVpKG4sZSx0LHIsaSl7Y29uc3Qgbz1pLmhvc3RCaW5kaW5ncztpZihvKXtsZXQgYT1uLmhvc3RC'@; put 'aW5kaW5nT3BDb2RlcztudWxsPT09YSYmKGE9bi5ob3N0QmluZGluZ09wQ29kZXM9W10pO2NvbnN0IGw9fmUuaW5kZXg7KGZ1bmN0aW9uIG9pKG4pe2xldCBlPW4ubGVuZ3RoO2Zvcig7ZT4wOyl7Y29uc3QgdD1uWy0tZV07aWYoIm51bWJlciI9PXR5cGVvZiB0JiZ0PDApcmV0dXJuIHR9cmV0'@; put 'dXJuIDB9KShhKSE9bCYmYS5wdXNoKGwpLGEucHVzaCh0LHIsbyl9fShuLGUscixIeShuLHQsaS5ob3N0VmFycyxOYyksaSl9ZnVuY3Rpb24gZW8obixlLHQpe2lmKHQpe2lmKGUuZXhwb3J0QXMpZm9yKGxldCByPTA7cjxlLmV4cG9ydEFzLmxlbmd0aDtyKyspdFtlLmV4cG9ydEFzW3JdXT1u'@; put 'O3MxKGUpJiYodFsiIl09bil9fWZ1bmN0aW9uIHNhKG4sZSx0LHIsaSxvLGEsbCl7Y29uc3QgdT1lWzFdLGc9dS5jb25zdHMsTz1ENSh1LG4sdCxyLHBjKGcsYSkpO3JldHVybiBvJiZHOCh1LGUsTyxwYyhnLGwpLGkpLE8ubWVyZ2VkQXR0cnM9UjkoTy5tZXJnZWRBdHRycyxPLmF0dHJzKSxu'@; put 'dWxsIT09Ty5hdHRycyYmTWQoTyxPLmF0dHJzLCExKSxudWxsIT09Ty5tZXJnZWRBdHRycyYmTWQoTyxPLm1lcmdlZEF0dHJzLCEwKSxudWxsIT09dS5xdWVyaWVzJiZ1LnF1ZXJpZXMuZWxlbWVudFN0YXJ0KHUsTyksT31mdW5jdGlvbiBBbyhuLGUpe01IKG4sZSkscmQoZSkmJm4ucXVlcmll'@; put 'cy5lbGVtZW50RW5kKGUpfWZ1bmN0aW9uIHJjKG4pe3JldHVybiEhVTAobikmJihBcnJheS5pc0FycmF5KG4pfHwhKG4gaW5zdGFuY2VvZiBNYXApJiZTeW1ib2wuaXRlcmF0b3IgaW4gbil9ZnVuY3Rpb24gVTAobil7cmV0dXJuIG51bGwhPT1uJiYoImZ1bmN0aW9uIj09dHlwZW9mIG58fCJv'@; put 'YmplY3QiPT10eXBlb2Ygbil9ZnVuY3Rpb24gRDIobixlLHQpe3JldHVybiBuW2VdPXR9ZnVuY3Rpb24gb3UobixlLHQpe3JldHVybiB0IT09TmMmJighT2JqZWN0LmlzKG5bZV0sdCkmJihuW2VdPXQsITApKX1mdW5jdGlvbiB6MChuLGUsdCxyKXtjb25zdCBpPW91KG4sZSx0KTtyZXR1cm4g'@; put 'b3UobixlKzEscil8fGl9ZnVuY3Rpb24gdWoobixlLHQscixpKXtjb25zdCBvPXowKG4sZSx0LHIpO3JldHVybiBvdShuLGUrMixpKXx8b31mdW5jdGlvbiBVZyhuLGUsdCxyLGksbyl7Y29uc3QgYT16MChuLGUsdCxyKTtyZXR1cm4gejAobixlKzIsaSxvKXx8YX1mdW5jdGlvbiBWUihuLGUs'@; put 'dCl7cmV0dXJuIGZ1bmN0aW9uIHIoaSl7cTkod2Yobik/Wmkobi5pbmRleCxlKTplLDUpO2NvbnN0IGE9ZVs4XTtsZXQgbD1yNmUoZSxhLHQsaSksdT1yLl9fbmdOZXh0TGlzdGVuZXJGbl9fO2Zvcig7dTspbD1yNmUoZSxhLHUsaSkmJmwsdT11Ll9fbmdOZXh0TGlzdGVuZXJGbl9fO3JldHVy'@; put 'biBsfX1mdW5jdGlvbiByNmUobixlLHQscil7Y29uc3QgaT1rKG51bGwpO3RyeXtyZXR1cm4gR2MoNixlLHQpLCExIT09dChyKX1jYXRjaChvKXtyZXR1cm4gZnVuY3Rpb24gQ1IobixlKXtjb25zdCB0PW5bOV07aWYoIXQpcmV0dXJuO2xldCByO3RyeXtyPXQuZ2V0KF9wLG51bGwpfWNhdGNo'@; put 'e3I9bnVsbH1yPy4oZSl9KG4sbyksITF9ZmluYWxseXtHYyg3LGUsdCksayhpKX19ZnVuY3Rpb24gbzZlKG4sZSx0LHIsaSxvLGEpe2NvbnN0IGw9ZS5maXJzdENyZWF0ZVBhc3M/WnUoZSk6bnVsbCx1PWtnKHQpLGc9dS5sZW5ndGg7dS5wdXNoKGksbyksbCYmbC5wdXNoKHIsbixnLChnKzEp'@; put 'KihhPy0xOjEpKX1mdW5jdGlvbiBkaihuLGUsdCxyLGksbyl7Y29uc3QgbD1lWzFdLE89ZVt0XVtsLmRhdGFbdF0ub3V0cHV0c1tyXV0uc3Vic2NyaWJlKG8pO282ZShuLmluZGV4LGwsZSxpLG8sTywhMCl9Y29uc3QgdHY9U3ltYm9sKCJCSU5ESU5HIik7Y2xhc3MgYTZlIGV4dGVuZHMgTGh7'@; put 'bmdNb2R1bGU7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm5nTW9kdWxlPWV9cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoZSl7Y29uc3QgdD1jcyhlKTtyZXR1cm4gbmV3IEJSKHQsdGhpcy5uZ01vZHVsZSl9fWNsYXNzIEJSIGV4dGVuZHMgRWR7Y29tcG9uZW50RGVmO25nTW9kdWxlO3Nl'@; put 'bGVjdG9yO2NvbXBvbmVudFR5cGU7bmdDb250ZW50U2VsZWN0b3JzO2lzQm91bmRUb01vZHVsZTtjYWNoZWRJbnB1dHM9bnVsbDtjYWNoZWRPdXRwdXRzPW51bGw7Z2V0IGlucHV0cygpe3JldHVybiB0aGlzLmNhY2hlZElucHV0cz8/PWZ1bmN0aW9uIHlxZShuKXtyZXR1cm4gT2JqZWN0Lmtl'@; put 'eXMobikubWFwKGU9Pntjb25zdFt0LHIsaV09bltlXSxvPXtwcm9wTmFtZTp0LHRlbXBsYXRlTmFtZTplLGlzU2lnbmFsOjAhPT0ociZZUy5TaWduYWxCYXNlZCl9O3JldHVybiBpJiYoby50cmFuc2Zvcm09aSksb30pfSh0aGlzLmNvbXBvbmVudERlZi5pbnB1dHMpLHRoaXMuY2FjaGVkSW5w'@; put 'dXRzfWdldCBvdXRwdXRzKCl7cmV0dXJuIHRoaXMuY2FjaGVkT3V0cHV0cz8/PWZ1bmN0aW9uIGJxZShuKXtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGU9Pih7cHJvcE5hbWU6bltlXSx0ZW1wbGF0ZU5hbWU6ZX0pKX0odGhpcy5jb21wb25lbnREZWYub3V0cHV0cyksdGhpcy5jYWNoZWRP'@; put 'dXRwdXRzfWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLmNvbXBvbmVudERlZj1lLHRoaXMubmdNb2R1bGU9dCx0aGlzLmNvbXBvbmVudFR5cGU9ZS50eXBlLHRoaXMuc2VsZWN0b3I9ZnVuY3Rpb24gYWVlKG4pe3JldHVybiBuLm1hcChvZWUpLmpvaW4oIiwiKX0oZS5zZWxlY3RvcnMp'@; put 'LHRoaXMubmdDb250ZW50U2VsZWN0b3JzPWUubmdDb250ZW50U2VsZWN0b3JzPz9bXSx0aGlzLmlzQm91bmRUb01vZHVsZT0hIXR9Y3JlYXRlKGUsdCxyLGksbyxhKXtHYygyMik7Y29uc3QgbD1rKG51bGwpO3RyeXtjb25zdCB1PXRoaXMuY29tcG9uZW50RGVmLGc9ZnVuY3Rpb24gVHFlKG4s'@; put 'ZSx0LHIpe2NvbnN0IGk9bj9bIm5nLXZlcnNpb24iLCIyMC4zLjMwIl06ZnVuY3Rpb24gc2VlKG4pe2NvbnN0IGU9W10sdD1bXTtsZXQgcj0xLGk9Mjtmb3IoO3I8bi5sZW5ndGg7KXtsZXQgbz1uW3JdO2lmKCJzdHJpbmciPT10eXBlb2YgbykyPT09aT8iIiE9PW8mJmUucHVzaChvLG5bKyty'@; put 'XSk6OD09PWkmJnQucHVzaChvKTtlbHNle2lmKCF3cChpKSlicmVhaztpPW99cisrfXJldHVybiB0Lmxlbmd0aCYmZS5wdXNoKDEsLi4udCksZX0oZS5zZWxlY3RvcnNbMF0pO2xldCBvPW51bGwsYT1udWxsLGw9MDtpZih0KWZvcihjb25zdCBFIG9mIHQpbCs9RVt0dl0ucmVxdWlyZWRWYXJz'@; put 'LEUuY3JlYXRlJiYoRS50YXJnZXRJZHg9MCwobz8/PVtdKS5wdXNoKEUpKSxFLnVwZGF0ZSYmKEUudGFyZ2V0SWR4PTAsKGE/Pz1bXSkucHVzaChFKSk7aWYocilmb3IobGV0IEU9MDtFPHIubGVuZ3RoO0UrKyl7Y29uc3QgTz1yW0VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBPKWZvcihjb25z'@; put 'dCBaIG9mIE8uYmluZGluZ3Mpe2wrPVpbdHZdLnJlcXVpcmVkVmFycztjb25zdCBlZT1FKzE7Wi5jcmVhdGUmJihaLnRhcmdldElkeD1lZSwobz8/PVtdKS5wdXNoKFopKSxaLnVwZGF0ZSYmKFoudGFyZ2V0SWR4PWVlLChhPz89W10pLnB1c2goWikpfX1jb25zdCB1PVtlXTtpZihyKWZvcihj'@; put 'b25zdCBFIG9mIHIpe2NvbnN0IFo9Q3MoImZ1bmN0aW9uIj09dHlwZW9mIEU/RTpFLnR5cGUpO3UucHVzaChaKX1yZXR1cm4gZ0IoMCxudWxsLGZ1bmN0aW9uIHhxZShuLGUpe3JldHVybiBufHxlP3Q9PntpZigxJnQmJm4pZm9yKGNvbnN0IHIgb2YgbilyLmNyZWF0ZSgpO2lmKDImdCYmZSlm'@; put 'b3IoY29uc3QgciBvZiBlKXIudXBkYXRlKCl9Om51bGx9KG8sYSksMSxsLHUsbnVsbCxudWxsLG51bGwsW2ldLG51bGwpfShyLHUsYSxvKSxFPWZ1bmN0aW9uIHdxZShuLGUsdCl7bGV0IHI9ZSBpbnN0YW5jZW9mIG5sP2U6ZT8uaW5qZWN0b3I7cmV0dXJuIHImJm51bGwhPT1uLmdldFN0YW5k'@; put 'YWxvbmVJbmplY3RvciYmKHI9bi5nZXRTdGFuZGFsb25lSW5qZWN0b3Iocil8fHIpLHI/bmV3IF91KHQscik6dH0odSxpfHx0aGlzLm5nTW9kdWxlLGUpLE89ZnVuY3Rpb24gQ3FlKG4pe2NvbnN0IGU9bi5nZXQoZ2MsbnVsbCk7aWYobnVsbD09PWUpdGhyb3cgbmV3IFduKDQwNywhMSk7cmV0'@; put 'dXJue3JlbmRlcmVyRmFjdG9yeTplLHNhbml0aXplcjpuLmdldChQbixudWxsKSxjaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXI6bi5nZXQobTgsbnVsbCksbmdSZWZsZWN0OiExfX0oRSksWj1PLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLHUpLGVlPXI/ZnVuY3Rpb24gT2Vl'@; put 'KG4sZSx0LHIpe2NvbnN0IG89ci5nZXQoV1EsITEpfHx0PT09UW0uU2hhZG93RG9tLGE9bi5zZWxlY3RSb290RWxlbWVudChlLG8pO3JldHVybiBmdW5jdGlvbiBOZWUobil7UEIobil9KGEpLGF9KFoscix1LmVuY2Fwc3VsYXRpb24sRSk6ZnVuY3Rpb24gU3FlKG4sZSl7Y29uc3QgdD1mdW5j'@; put 'dGlvbiBNcWUobil7cmV0dXJuKG4uc2VsZWN0b3JzWzBdWzBdfHwiZGl2IikudG9Mb3dlckNhc2UoKX0obik7cmV0dXJuIFVTKGUsdCwic3ZnIj09PXQ/InN2ZyI6Im1hdGgiPT09dD8ibWF0aCI6bnVsbCl9KHUsWik7IWZ1bmN0aW9uIEVxZShuKXtpZigic2NyaXB0Ij09PW4/LnRvTG93ZXJD'@; put 'YXNlKCkpdGhyb3cgbmV3IFduKDkwNSwhMSl9KGVlPy50YWdOYW1lKTtjb25zdCB2ZT1hPy5zb21lKHM2ZSl8fG8/LnNvbWUoV2U9PiJmdW5jdGlvbiIhPXR5cGVvZiBXZSYmV2UuYmluZGluZ3Muc29tZShzNmUpKSxNZT1XUyhudWxsLGcsbnVsbCw1MTJ8ZVIodSksbnVsbCxudWxsLE8sWixF'@; put 'LG51bGwsbnVsbCk7TWVbMjddPWVlLGtBKE1lKTtsZXQgSGU9bnVsbDt0cnl7Y29uc3QgV2U9c2EoMjcsTWUsMiwiI2hvc3QiLCgpPT5nLmRpcmVjdGl2ZVJlZ2lzdHJ5LCEwLDApO0pWKFosZWUsV2UpLGowKGVlLE1lKSx0RShnLE1lLFdlKSxCayhnLFdlLE1lKSxBbyhnLFdlKSx2b2lkIDAh'@; put 'PT10JiZmdW5jdGlvbiBrcWUobixlLHQpe2NvbnN0IHI9bi5wcm9qZWN0aW9uPVtdO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBvPXRbaV07ci5wdXNoKG51bGwhPW8mJm8ubGVuZ3RoP0FycmF5LmZyb20obyk6bnVsbCl9fShXZSx0aGlzLm5nQ29udGVudFNlbGVjdG9ycyx0'@; put 'KSxIZT1aaShXZS5pbmRleCxNZSksTWVbOF09SGVbOF0saUUoZyxNZSxudWxsKX1jYXRjaChXZSl7dGhyb3cgbnVsbCE9PUhlJiZNeShIZSksTXkoTWUpLFdlfWZpbmFsbHl7R2MoMjMpLGlTKCl9cmV0dXJuIG5ldyBBcWUodGhpcy5jb21wb25lbnRUeXBlLE1lLCEhdmUpfWZpbmFsbHl7ayhs'@; put 'KX19fWZ1bmN0aW9uIHM2ZShuKXtjb25zdCBlPW5bdHZdLmtpbmQ7cmV0dXJuImlucHV0Ij09PWV8fCJ0d29XYXkiPT09ZX1jbGFzcyBBcWUgZXh0ZW5kcyBjaHtfcm9vdExWaWV3O19oYXNJbnB1dEJpbmRpbmdzO2luc3RhbmNlO2hvc3RWaWV3O2NoYW5nZURldGVjdG9yUmVmO2NvbXBvbmVu'@; put 'dFR5cGU7bG9jYXRpb247cHJldmlvdXNJbnB1dFZhbHVlcz1udWxsO190Tm9kZTtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoKSx0aGlzLl9yb290TFZpZXc9dCx0aGlzLl9oYXNJbnB1dEJpbmRpbmdzPXIsdGhpcy5fdE5vZGU9UHModFsxXSwyNyksdGhpcy5sb2NhdGlvbj1BOCh0aGlzLl90'@; put 'Tm9kZSx0KSx0aGlzLmluc3RhbmNlPVppKHRoaXMuX3ROb2RlLmluZGV4LHQpWzhdLHRoaXMuaG9zdFZpZXc9dGhpcy5jaGFuZ2VEZXRlY3RvclJlZj1uZXcgUTkodCx2b2lkIDApLHRoaXMuY29tcG9uZW50VHlwZT1lfXNldElucHV0KGUsdCl7Y29uc3Qgcj10aGlzLl90Tm9kZTtpZih0aGlz'@; put 'LnByZXZpb3VzSW5wdXRWYWx1ZXM/Pz1uZXcgTWFwLHRoaXMucHJldmlvdXNJbnB1dFZhbHVlcy5oYXMoZSkmJk9iamVjdC5pcyh0aGlzLnByZXZpb3VzSW5wdXRWYWx1ZXMuZ2V0KGUpLHQpKXJldHVybjtjb25zdCBpPXRoaXMuX3Jvb3RMVmlldztyRShyLGlbMV0saSxlLHQpLHRoaXMucHJl'@; put 'dmlvdXNJbnB1dFZhbHVlcy5zZXQoZSx0KSxxOShaaShyLmluZGV4LGkpLDEpfWdldCBpbmplY3Rvcigpe3JldHVybiBuZXcgQ2QodGhpcy5fdE5vZGUsdGhpcy5fcm9vdExWaWV3KX1kZXN0cm95KCl7dGhpcy5ob3N0Vmlldy5kZXN0cm95KCl9b25EZXN0cm95KGUpe3RoaXMuaG9zdFZpZXcu'@; put 'b25EZXN0cm95KGUpfX1sZXQgRHM9KCgpPT5jbGFzcyBue3N0YXRpYyBfX05HX0VMRU1FTlRfSURfXz1ScWV9KSgpO2Z1bmN0aW9uIFJxZSgpe3JldHVybiB1NmUoeWkoKSxpdCgpKX1jb25zdCBJcWU9RHMsbDZlPWNsYXNzIGV4dGVuZHMgSXFle19sQ29udGFpbmVyO19ob3N0VE5vZGU7X2hv'@; put 'c3RMVmlldztjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoKSx0aGlzLl9sQ29udGFpbmVyPWUsdGhpcy5faG9zdFROb2RlPXQsdGhpcy5faG9zdExWaWV3PXJ9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gQTgodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0IGluamVjdG9yKCl7cmV0'@; put 'dXJuIG5ldyBDZCh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgcGFyZW50SW5qZWN0b3IoKXtjb25zdCBlPUNTKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpO2lmKFFBKGUpKXtjb25zdCB0PWJ5KGUsdGhpcy5faG9zdExWaWV3KSxyPXk1KGUpO3JldHVybiBu'@; put 'ZXcgQ2QodFsxXS5kYXRhW3IrOF0sdCl9cmV0dXJuIG5ldyBDZChudWxsLHRoaXMuX2hvc3RMVmlldyl9Y2xlYXIoKXtmb3IoO3RoaXMubGVuZ3RoPjA7KXRoaXMucmVtb3ZlKHRoaXMubGVuZ3RoLTEpfWdldChlKXtjb25zdCB0PWM2ZSh0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9'@; put 'PXQmJnRbZV18fG51bGx9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9sQ29udGFpbmVyLmxlbmd0aC0xMH1jcmVhdGVFbWJlZGRlZFZpZXcoZSx0LHIpe2xldCBpLG87Im51bWJlciI9PXR5cGVvZiByP2k9cjpudWxsIT1yJiYoaT1yLmluZGV4LG89ci5pbmplY3Rvcik7Y29uc3QgbD1lLmNy'@; put 'ZWF0ZUVtYmVkZGVkVmlld0ltcGwodHx8e30sbyxudWxsKTtyZXR1cm4gdGhpcy5pbnNlcnRJbXBsKGwsaSxVOCh0aGlzLl9ob3N0VE5vZGUsbnVsbCkpLGx9Y3JlYXRlQ29tcG9uZW50KGUsdCxyLGksbyxhLGwpe2NvbnN0IHU9ZSYmIWZ1bmN0aW9uIG01KG4pe3JldHVybiJmdW5jdGlvbiI9'@; put 'PXR5cGVvZiBufShlKTtsZXQgZztpZih1KWc9dDtlbHNle2NvbnN0IEhlPXR8fHt9O2c9SGUuaW5kZXgscj1IZS5pbmplY3RvcixpPUhlLnByb2plY3RhYmxlTm9kZXMsbz1IZS5lbnZpcm9ubWVudEluamVjdG9yfHxIZS5uZ01vZHVsZVJlZixhPUhlLmRpcmVjdGl2ZXMsbD1IZS5iaW5kaW5n'@; put 'c31jb25zdCBFPXU/ZTpuZXcgQlIoY3MoZSkpLE89cnx8dGhpcy5wYXJlbnRJbmplY3RvcjtpZighbyYmbnVsbD09RS5uZ01vZHVsZSl7Y29uc3QgV2U9KHU/Tzp0aGlzLnBhcmVudEluamVjdG9yKS5nZXQobmwsbnVsbCk7V2UmJihvPVdlKX1jcyhFLmNvbXBvbmVudFR5cGU/P3t9KTtjb25z'@; put 'dCBNZT1FLmNyZWF0ZShPLGksbnVsbCxvLGEsbCk7cmV0dXJuIHRoaXMuaW5zZXJ0SW1wbChNZS5ob3N0VmlldyxnLFU4KHRoaXMuX2hvc3RUTm9kZSxudWxsKSksTWV9aW5zZXJ0KGUsdCl7cmV0dXJuIHRoaXMuaW5zZXJ0SW1wbChlLHQsITApfWluc2VydEltcGwoZSx0LHIpe2NvbnN0IGk9'@; put 'ZS5fbFZpZXc7aWYoZnVuY3Rpb24gVjEobil7cmV0dXJuIFl1KG5bM10pfShpKSl7Y29uc3QgbD10aGlzLmluZGV4T2YoZSk7aWYoLTEhPT1sKXRoaXMuZGV0YWNoKGwpO2Vsc2V7Y29uc3QgdT1pWzNdLGc9bmV3IGw2ZSh1LHVbNV0sdVszXSk7Zy5kZXRhY2goZy5pbmRleE9mKGUpKX19Y29u'@; put 'c3Qgbz10aGlzLl9hZGp1c3RJbmRleCh0KSxhPXRoaXMuX2xDb250YWluZXI7cmV0dXJuIEs5KGEsaSxvLHIpLGUuYXR0YWNoVG9WaWV3Q29udGFpbmVyUmVmKCksdDEodXRlKGEpLG8sZSksZX1tb3ZlKGUsdCl7cmV0dXJuIHRoaXMuaW5zZXJ0KGUsdCl9aW5kZXhPZihlKXtjb25zdCB0PWM2'@; put 'ZSh0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PXQ/dC5pbmRleE9mKGUpOi0xfXJlbW92ZShlKXtjb25zdCB0PXRoaXMuX2FkanVzdEluZGV4KGUsLTEpLHI9WDkodGhpcy5fbENvbnRhaW5lcix0KTtyJiYoYmQodXRlKHRoaXMuX2xDb250YWluZXIpLHQpLEJ5KHJbMV0scikpfWRl'@; put 'dGFjaChlKXtjb25zdCB0PXRoaXMuX2FkanVzdEluZGV4KGUsLTEpLHI9WDkodGhpcy5fbENvbnRhaW5lcix0KTtyZXR1cm4gciYmbnVsbCE9YmQodXRlKHRoaXMuX2xDb250YWluZXIpLHQpP25ldyBROShyKTpudWxsfV9hZGp1c3RJbmRleChlLHQ9MCl7cmV0dXJuIGU/P3RoaXMubGVuZ3Ro'@; put 'K3R9fTtmdW5jdGlvbiBjNmUobil7cmV0dXJuIG5bOF19ZnVuY3Rpb24gdXRlKG4pe3JldHVybiBuWzhdfHwobls4XT1bXSl9ZnVuY3Rpb24gdTZlKG4sZSl7bGV0IHQ7Y29uc3Qgcj1lW24uaW5kZXhdO3JldHVybiBZdShyKT90PXI6KHQ9cUIocixlLG51bGwsbiksZVtuLmluZGV4XT10LHRS'@; put 'KGUsdCkpLGQ2ZSh0LGUsbixyKSxuZXcgbDZlKHQsbixlKX1sZXQgZDZlPWZ1bmN0aW9uIGY2ZShuLGUsdCxyKXtpZihuWzddKXJldHVybjtsZXQgaTtpPTgmdC50eXBlP0RyKHIpOmZ1bmN0aW9uIERxZShuLGUpe2NvbnN0IHQ9blsxMV0scj10LmNyZWF0ZUNvbW1lbnQoIiIpLGk9WWkoZSxu'@; put 'KSxvPXQucGFyZW50Tm9kZShpKTtyZXR1cm4gRjgodCxvLHIsdC5uZXh0U2libGluZyhpKSwhMSkscn0oZSx0KSxuWzddPWl9O2NsYXNzIGh0ZXtxdWVyeUxpc3Q7bWF0Y2hlcz1udWxsO2NvbnN0cnVjdG9yKGUpe3RoaXMucXVlcnlMaXN0PWV9Y2xvbmUoKXtyZXR1cm4gbmV3IGh0ZSh0aGlz'@; put 'LnF1ZXJ5TGlzdCl9c2V0RGlydHkoKXt0aGlzLnF1ZXJ5TGlzdC5zZXREaXJ0eSgpfX1jbGFzcyBmdGV7cXVlcmllcztjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLnF1ZXJpZXM9ZX1jcmVhdGVFbWJlZGRlZFZpZXcoZSl7Y29uc3QgdD1lLnF1ZXJpZXM7aWYobnVsbCE9PXQpe2NvbnN0IHI9bnVs'@; put 'bCE9PWUuY29udGVudFF1ZXJpZXM/ZS5jb250ZW50UXVlcmllc1swXTp0Lmxlbmd0aCxpPVtdO2ZvcihsZXQgbz0wO288cjtvKyspe2NvbnN0IGE9dC5nZXRCeUluZGV4KG8pO2kucHVzaCh0aGlzLnF1ZXJpZXNbYS5pbmRleEluRGVjbGFyYXRpb25WaWV3XS5jbG9uZSgpKX1yZXR1cm4gbmV3'@; put 'IGZ0ZShpKX1yZXR1cm4gbnVsbH1pbnNlcnRWaWV3KGUpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXMoZSl9ZGV0YWNoVmlldyhlKXt0aGlzLmRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKGUpfWZpbmlzaFZpZXdDcmVhdGlvbihlKXt0aGlzLmRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKGUp'@; put 'fWRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5xdWVyaWVzLmxlbmd0aDt0KyspbnVsbCE9PV90ZShlLHQpLm1hdGNoZXMmJnRoaXMucXVlcmllc1t0XS5zZXREaXJ0eSgpfX1jbGFzcyBwNmV7ZmxhZ3M7cmVhZDtwcmVkaWNhdGU7Y29uc3RydWN0b3IoZSx0'@; put 'LHI9bnVsbCl7dGhpcy5mbGFncz10LHRoaXMucmVhZD1yLHRoaXMucHJlZGljYXRlPSJzdHJpbmciPT10eXBlb2YgZT9mdW5jdGlvbiBWcWUobil7cmV0dXJuIG4uc3BsaXQoIiwiKS5tYXAoZT0+ZS50cmltKCkpfShlKTplfX1jbGFzcyBwdGV7cXVlcmllcztjb25zdHJ1Y3RvcihlPVtdKXt0'@; put 'aGlzLnF1ZXJpZXM9ZX1lbGVtZW50U3RhcnQoZSx0KXtmb3IobGV0IHI9MDtyPHRoaXMucXVlcmllcy5sZW5ndGg7cisrKXRoaXMucXVlcmllc1tyXS5lbGVtZW50U3RhcnQoZSx0KX1lbGVtZW50RW5kKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5xdWVyaWVzLmxlbmd0aDt0KyspdGhpcy5xdWVy'@; put 'aWVzW3RdLmVsZW1lbnRFbmQoZSl9ZW1iZWRkZWRUVmlldyhlKXtsZXQgdD1udWxsO2ZvcihsZXQgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXtjb25zdCBpPW51bGwhPT10P3QubGVuZ3RoOjAsbz10aGlzLmdldEJ5SW5kZXgocikuZW1iZWRkZWRUVmlldyhlLGkpO28mJihvLmluZGV4SW5EZWNs'@; put 'YXJhdGlvblZpZXc9cixudWxsIT09dD90LnB1c2gobyk6dD1bb10pfXJldHVybiBudWxsIT09dD9uZXcgcHRlKHQpOm51bGx9dGVtcGxhdGUoZSx0KXtmb3IobGV0IHI9MDtyPHRoaXMucXVlcmllcy5sZW5ndGg7cisrKXRoaXMucXVlcmllc1tyXS50ZW1wbGF0ZShlLHQpfWdldEJ5SW5kZXgo'@; put 'ZSl7cmV0dXJuIHRoaXMucXVlcmllc1tlXX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMucXVlcmllcy5sZW5ndGh9dHJhY2soZSl7dGhpcy5xdWVyaWVzLnB1c2goZSl9fWNsYXNzIGd0ZXttZXRhZGF0YTttYXRjaGVzPW51bGw7aW5kZXhJbkRlY2xhcmF0aW9uVmlldz0tMTtjcm9zc2VzTmdU'@; put 'ZW1wbGF0ZT0hMTtfZGVjbGFyYXRpb25Ob2RlSW5kZXg7X2FwcGxpZXNUb05leHROb2RlPSEwO2NvbnN0cnVjdG9yKGUsdD0tMSl7dGhpcy5tZXRhZGF0YT1lLHRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PXR9ZWxlbWVudFN0YXJ0KGUsdCl7dGhpcy5pc0FwcGx5aW5nVG9Ob2RlKHQpJiZ0'@; put 'aGlzLm1hdGNoVE5vZGUoZSx0KX1lbGVtZW50RW5kKGUpe3RoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PT09ZS5pbmRleCYmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSExKX10ZW1wbGF0ZShlLHQpe3RoaXMuZWxlbWVudFN0YXJ0KGUsdCl9ZW1iZWRkZWRUVmlldyhlLHQpe3JldHVybiB0'@; put 'aGlzLmlzQXBwbHlpbmdUb05vZGUoZSk/KHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITAsdGhpcy5hZGRNYXRjaCgtZS5pbmRleCx0KSxuZXcgZ3RlKHRoaXMubWV0YWRhdGEpKTpudWxsfWlzQXBwbHlpbmdUb05vZGUoZSl7aWYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGUmJjEmfnRoaXMubWV0'@; put 'YWRhdGEuZmxhZ3Mpe2NvbnN0IHQ9dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg7bGV0IHI9ZS5wYXJlbnQ7Zm9yKDtudWxsIT09ciYmOCZyLnR5cGUmJnIuaW5kZXghPT10OylyPXIucGFyZW50O3JldHVybiB0PT09KG51bGwhPT1yP3IuaW5kZXg6LTEpfXJldHVybiB0aGlzLl9hcHBsaWVz'@; put 'VG9OZXh0Tm9kZX1tYXRjaFROb2RlKGUsdCl7Y29uc3Qgcj10aGlzLm1ldGFkYXRhLnByZWRpY2F0ZTtpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtjb25zdCBvPXJbaV07dGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oZSx0LE5xZSh0LG8pKSx0'@; put 'aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbihlLHQsSTkodCxlLG8sITEsITEpKX1lbHNlIHI9PT1GYz80JnQudHlwZSYmdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oZSx0LC0xKTp0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbihlLHQsSTkodCxlLHIsITEsITEpKX1tYXRj'@; put 'aFROb2RlV2l0aFJlYWRPcHRpb24oZSx0LHIpe2lmKG51bGwhPT1yKXtjb25zdCBpPXRoaXMubWV0YWRhdGEucmVhZDtpZihudWxsIT09aSlpZihpPT09bm98fGk9PT1Ec3x8aT09PUZjJiY0JnQudHlwZSl0aGlzLmFkZE1hdGNoKHQuaW5kZXgsLTIpO2Vsc2V7Y29uc3Qgbz1JOSh0LGUsaSwh'@; put 'MSwhMSk7bnVsbCE9PW8mJnRoaXMuYWRkTWF0Y2godC5pbmRleCxvKX1lbHNlIHRoaXMuYWRkTWF0Y2godC5pbmRleCxyKX19YWRkTWF0Y2goZSx0KXtudWxsPT09dGhpcy5tYXRjaGVzP3RoaXMubWF0Y2hlcz1bZSx0XTp0aGlzLm1hdGNoZXMucHVzaChlLHQpfX1mdW5jdGlvbiBOcWUobixl'@; put 'KXtjb25zdCB0PW4ubG9jYWxOYW1lcztpZihudWxsIT09dClmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrPTIpaWYodFtyXT09PWUpcmV0dXJuIHRbcisxXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBQcWUobixlLHQscil7cmV0dXJuLTE9PT10P2Z1bmN0aW9uIEZxZShuLGUpe3JldHVybiAxMSZu'@; put 'LnR5cGU/QTgobixlKTo0Jm4udHlwZT96OChuLGUpOm51bGx9KGUsbik6LTI9PT10P2Z1bmN0aW9uIEhxZShuLGUsdCl7cmV0dXJuIHQ9PT1ubz9BOChlLG4pOnQ9PT1GYz96OChlLG4pOnQ9PT1Ecz91NmUoZSxuKTp2b2lkIDB9KG4sZSxyKTp3eShuLG5bMV0sdCxlKX1mdW5jdGlvbiBnNmUo'@; put 'bixlLHQscil7Y29uc3QgaT1lWzE4XS5xdWVyaWVzW3JdO2lmKG51bGw9PT1pLm1hdGNoZXMpe2NvbnN0IG89bi5kYXRhLGE9dC5tYXRjaGVzLGw9W107Zm9yKGxldCB1PTA7bnVsbCE9PWEmJnU8YS5sZW5ndGg7dSs9Mil7Y29uc3QgZz1hW3VdO2wucHVzaChnPDA/bnVsbDpQcWUoZSxvW2dd'@; put 'LGFbdSsxXSx0Lm1ldGFkYXRhLnJlYWQpKX1pLm1hdGNoZXM9bH1yZXR1cm4gaS5tYXRjaGVzfWZ1bmN0aW9uIG10ZShuLGUsdCxyKXtjb25zdCBpPW4ucXVlcmllcy5nZXRCeUluZGV4KHQpLG89aS5tYXRjaGVzO2lmKG51bGwhPT1vKXtjb25zdCBhPWc2ZShuLGUsaSx0KTtmb3IobGV0IGw9'@; put 'MDtsPG8ubGVuZ3RoO2wrPTIpe2NvbnN0IHU9b1tsXTtpZih1PjApci5wdXNoKGFbbC8yXSk7ZWxzZXtjb25zdCBnPW9bbCsxXSxFPWVbLXVdO2ZvcihsZXQgTz0xMDtPPEUubGVuZ3RoO08rKyl7Y29uc3QgWj1FW09dO1pbMTZdPT09WlszXSYmbXRlKFpbMV0sWixnLHIpfWlmKG51bGwhPT1F'@; put 'WzldKXtjb25zdCBPPUVbOV07Zm9yKGxldCBaPTA7WjxPLmxlbmd0aDtaKyspe2NvbnN0IGVlPU9bWl07bXRlKGVlWzFdLGVlLGcscil9fX19fXJldHVybiByfWZ1bmN0aW9uIG02ZShuLGUsdCl7Y29uc3Qgcj1uZXcgazgoISg0Jn50KSk7cmV0dXJuIGZ1bmN0aW9uIFM5KG4sZSx0LHIpe2Nv'@; put 'bnN0IGk9a2coZSk7aS5wdXNoKHQpLG4uZmlyc3RDcmVhdGVQYXNzJiZadShuKS5wdXNoKHIsaS5sZW5ndGgtMSl9KG4sZSxyLHIuZGVzdHJveSksKGVbMThdPz89bmV3IGZ0ZSkucXVlcmllcy5wdXNoKG5ldyBodGUocikpLTF9ZnVuY3Rpb24geTZlKG4sZSx0KXtudWxsPT09bi5xdWVyaWVz'@; put 'JiYobi5xdWVyaWVzPW5ldyBwdGUpLG4ucXVlcmllcy50cmFjayhuZXcgZ3RlKGUsdCkpfWZ1bmN0aW9uIF90ZShuLGUpe3JldHVybiBuLnF1ZXJpZXMuZ2V0QnlJbmRleChlKX1mdW5jdGlvbiBiNmUobixlKXtjb25zdCB0PW5bMV0scj1fdGUodCxlKTtyZXR1cm4gci5jcm9zc2VzTmdUZW1w'@; put 'bGF0ZT9tdGUodCxuLGUsW10pOmc2ZSh0LG4scixlKX1sZXQgWHk9Y2xhc3N7fSxNNmU9Y2xhc3N7fTtjbGFzcyB3dGUgZXh0ZW5kcyBYeXtuZ01vZHVsZVR5cGU7X3BhcmVudDtfYm9vdHN0cmFwQ29tcG9uZW50cz1bXTtfcjNJbmplY3RvcjtpbnN0YW5jZTtkZXN0cm95Q2JzPVtdO2NvbXBv'@; put 'bmVudEZhY3RvcnlSZXNvbHZlcj1uZXcgYTZlKHRoaXMpO2NvbnN0cnVjdG9yKGUsdCxyLGk9ITApe3N1cGVyKCksdGhpcy5uZ01vZHVsZVR5cGU9ZSx0aGlzLl9wYXJlbnQ9dDtjb25zdCBvPXIxKGUpO3RoaXMuX2Jvb3RzdHJhcENvbXBvbmVudHM9Vmcoby5ib290c3RyYXApLHRoaXMuX3Iz'@; put 'SW5qZWN0b3I9UVAoZSx0LFt7cHJvdmlkZTpYeSx1c2VWYWx1ZTp0aGlzfSx7cHJvdmlkZTpMaCx1c2VWYWx1ZTp0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn0sLi4ucl0sUnMoZSksbmV3IFNldChbImVudmlyb25tZW50Il0pKSxpJiZ0aGlzLnJlc29sdmVJbmplY3RvckluaXRpYWxp'@; put 'emVycygpfXJlc29sdmVJbmplY3RvckluaXRpYWxpemVycygpe3RoaXMuX3IzSW5qZWN0b3IucmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCksdGhpcy5pbnN0YW5jZT10aGlzLl9yM0luamVjdG9yLmdldCh0aGlzLm5nTW9kdWxlVHlwZSl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRoaXMu'@; put 'X3IzSW5qZWN0b3J9ZGVzdHJveSgpe2NvbnN0IGU9dGhpcy5fcjNJbmplY3RvcjshZS5kZXN0cm95ZWQmJmUuZGVzdHJveSgpLHRoaXMuZGVzdHJveUNicy5mb3JFYWNoKHQ9PnQoKSksdGhpcy5kZXN0cm95Q2JzPW51bGx9b25EZXN0cm95KGUpe3RoaXMuZGVzdHJveUNicy5wdXNoKGUpfX1j'@; put 'bGFzcyBUNmUgZXh0ZW5kcyBNNmV7bW9kdWxlVHlwZTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT1lfWNyZWF0ZShlKXtyZXR1cm4gbmV3IHd0ZSh0aGlzLm1vZHVsZVR5cGUsZSxbXSl9fWNsYXNzIFhxZSBleHRlbmRzIFh5e2luamVjdG9yO2NvbXBvbmVudEZhY3Rv'@; put 'cnlSZXNvbHZlcj1uZXcgYTZlKHRoaXMpO2luc3RhbmNlPW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTtjb25zdCB0PW5ldyBIMShbLi4uZS5wcm92aWRlcnMse3Byb3ZpZGU6WHksdXNlVmFsdWU6dGhpc30se3Byb3ZpZGU6TGgsdXNlVmFsdWU6dGhpcy5jb21wb25lbnRGYWN0b3J5UmVz'@; put 'b2x2ZXJ9XSxlLnBhcmVudHx8aTUoKSxlLmRlYnVnTmFtZSxuZXcgU2V0KFsiZW52aXJvbm1lbnQiXSkpO3RoaXMuaW5qZWN0b3I9dCxlLnJ1bkVudmlyb25tZW50SW5pdGlhbGl6ZXJzJiZ0LnJlc29sdmVJbmplY3RvckluaXRpYWxpemVycygpfWRlc3Ryb3koKXt0aGlzLmluamVjdG9yLmRl'@; put 'c3Ryb3koKX1vbkRlc3Ryb3koZSl7dGhpcy5pbmplY3Rvci5vbkRlc3Ryb3koZSl9fWZ1bmN0aW9uIGhqKG4sZSx0PW51bGwpe3JldHVybiBuZXcgWHFlKHtwcm92aWRlcnM6bixwYXJlbnQ6ZSxkZWJ1Z05hbWU6dCxydW5FbnZpcm9ubWVudEluaXRpYWxpemVyczohMH0pLmluamVjdG9yfWxl'@; put 'dCBRcWU9KCgpPT57Y2xhc3MgbntfaW5qZWN0b3I7Y2FjaGVkSW5qZWN0b3JzPW5ldyBNYXA7Y29uc3RydWN0b3IodCl7dGhpcy5faW5qZWN0b3I9dH1nZXRPckNyZWF0ZVN0YW5kYWxvbmVJbmplY3Rvcih0KXtpZighdC5zdGFuZGFsb25lKXJldHVybiBudWxsO2lmKCF0aGlzLmNhY2hlZElu'@; put 'amVjdG9ycy5oYXModCkpe2NvbnN0IHI9UDEoMCx0LnR5cGUpLGk9ci5sZW5ndGg+MD9oaihbcl0sdGhpcy5faW5qZWN0b3IsYFN0YW5kYWxvbmVbJHt0LnR5cGUubmFtZX1dYCk6bnVsbDt0aGlzLmNhY2hlZEluamVjdG9ycy5zZXQodCxpKX1yZXR1cm4gdGhpcy5jYWNoZWRJbmplY3RvcnMu'@; put 'Z2V0KHQpfW5nT25EZXN0cm95KCl7dHJ5e2Zvcihjb25zdCB0IG9mIHRoaXMuY2FjaGVkSW5qZWN0b3JzLnZhbHVlcygpKW51bGwhPT10JiZ0LmRlc3Ryb3koKX1maW5hbGx5e3RoaXMuY2FjaGVkSW5qZWN0b3JzLmNsZWFyKCl9fXN0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLHByb3Zp'@; put 'ZGVkSW46ImVudmlyb25tZW50IixmYWN0b3J5OigpPT5uZXcgbihvcihubCkpfSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIFByKG4pe3JldHVybiBUZigoKT0+e2NvbnN0IGU9QTZlKG4pLHQ9ey4uLmUsZGVjbHM6bi5kZWNscyx2YXJzOm4udmFycyx0ZW1wbGF0ZTpuLnRlbXBsYXRlLGNvbnN0'@; put 'czpuLmNvbnN0c3x8bnVsbCxuZ0NvbnRlbnRTZWxlY3RvcnM6bi5uZ0NvbnRlbnRTZWxlY3RvcnMsb25QdXNoOm4uY2hhbmdlRGV0ZWN0aW9uPT09RXkuT25QdXNoLGRpcmVjdGl2ZURlZnM6bnVsbCxwaXBlRGVmczpudWxsLGRlcGVuZGVuY2llczplLnN0YW5kYWxvbmUmJm4uZGVwZW5kZW5j'@; put 'aWVzfHxudWxsLGdldFN0YW5kYWxvbmVJbmplY3RvcjplLnN0YW5kYWxvbmU/aT0+aS5nZXQoUXFlKS5nZXRPckNyZWF0ZVN0YW5kYWxvbmVJbmplY3Rvcih0KTpudWxsLGdldEV4dGVybmFsU3R5bGVzOm51bGwsc2lnbmFsczpuLnNpZ25hbHM/PyExLGRhdGE6bi5kYXRhfHx7fSxlbmNhcHN1'@; put 'bGF0aW9uOm4uZW5jYXBzdWxhdGlvbnx8UW0uRW11bGF0ZWQsc3R5bGVzOm4uc3R5bGVzfHxKYSxfOm51bGwsc2NoZW1hczpuLnNjaGVtYXN8fG51bGwsdFZpZXc6bnVsbCxpZDoiIn07ZS5zdGFuZGFsb25lJiZqMSgiTmdTdGFuZGFsb25lIiksazZlKHQpO2NvbnN0IHI9bi5kZXBlbmRlbmNp'@; put 'ZXM7cmV0dXJuIHQuZGlyZWN0aXZlRGVmcz1maihyLHg2ZSksdC5waXBlRGVmcz1maihyLG51KSx0LmlkPWZ1bmN0aW9uIG5LZShuKXtsZXQgZT0wO2NvbnN0IHI9W24uc2VsZWN0b3JzLG4ubmdDb250ZW50U2VsZWN0b3JzLG4uaG9zdFZhcnMsbi5ob3N0QXR0cnMsImZ1bmN0aW9uIj09dHlw'@; put 'ZW9mIG4uY29uc3RzPyIiOm4uY29uc3RzLG4udmFycyxuLmRlY2xzLG4uZW5jYXBzdWxhdGlvbixuLnN0YW5kYWxvbmUsbi5zaWduYWxzLG4uZXhwb3J0QXMsSlNPTi5zdHJpbmdpZnkobi5pbnB1dHMpLEpTT04uc3RyaW5naWZ5KG4ub3V0cHV0cyksT2JqZWN0LmdldE93blByb3BlcnR5TmFt'@; put 'ZXMobi50eXBlLnByb3RvdHlwZSksISFuLmNvbnRlbnRRdWVyaWVzLCEhbi52aWV3UXVlcnldO2Zvcihjb25zdCBvIG9mIHIuam9pbigifCIpKWU9TWF0aC5pbXVsKDMxLGUpK28uY2hhckNvZGVBdCgwKXwwO3JldHVybiBlKz0yMTQ3NDgzNjQ4LCJjIitlfSh0KSx0fSl9ZnVuY3Rpb24geDZl'@; put 'KG4pe3JldHVybiBjcyhuKXx8Q3Mobil9ZnVuY3Rpb24gR2kobil7cmV0dXJuIFRmKCgpPT4oe3R5cGU6bi50eXBlLGJvb3RzdHJhcDpuLmJvb3RzdHJhcHx8SmEsZGVjbGFyYXRpb25zOm4uZGVjbGFyYXRpb25zfHxKYSxpbXBvcnRzOm4uaW1wb3J0c3x8SmEsZXhwb3J0czpuLmV4cG9ydHN8'@; put 'fEphLHRyYW5zaXRpdmVDb21waWxlU2NvcGVzOm51bGwsc2NoZW1hczpuLnNjaGVtYXN8fG51bGwsaWQ6bi5pZHx8bnVsbH0pKX1mdW5jdGlvbiBKcWUobixlKXtpZihudWxsPT1uKXJldHVybiBxcztjb25zdCB0PXt9O2Zvcihjb25zdCByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7'@; put 'Y29uc3QgaT1uW3JdO2xldCBvLGEsbCx1O0FycmF5LmlzQXJyYXkoaSk/KGw9aVswXSxvPWlbMV0sYT1pWzJdPz9vLHU9aVszXXx8bnVsbCk6KG89aSxhPWksbD1ZUy5Ob25lLHU9bnVsbCksdFtvXT1bcixsLHVdLGVbb109YX1yZXR1cm4gdH1mdW5jdGlvbiBlS2Uobil7aWYobnVsbD09bily'@; put 'ZXR1cm4gcXM7Y29uc3QgZT17fTtmb3IoY29uc3QgdCBpbiBuKW4uaGFzT3duUHJvcGVydHkodCkmJihlW25bdF1dPXQpO3JldHVybiBlfWZ1bmN0aW9uICRyKG4pe3JldHVybiBUZigoKT0+e2NvbnN0IGU9QTZlKG4pO3JldHVybiBrNmUoZSksZX0pfWZ1bmN0aW9uIHVoKG4pe3JldHVybnt0'@; put 'eXBlOm4udHlwZSxuYW1lOm4ubmFtZSxmYWN0b3J5Om51bGwscHVyZTohMSE9PW4ucHVyZSxzdGFuZGFsb25lOm4uc3RhbmRhbG9uZT8/ITAsb25EZXN0cm95Om4udHlwZS5wcm90b3R5cGUubmdPbkRlc3Ryb3l8fG51bGx9fWZ1bmN0aW9uIEE2ZShuKXtjb25zdCBlPXt9O3JldHVybnt0eXBl'@; put 'Om4udHlwZSxwcm92aWRlcnNSZXNvbHZlcjpudWxsLGZhY3Rvcnk6bnVsbCxob3N0QmluZGluZ3M6bi5ob3N0QmluZGluZ3N8fG51bGwsaG9zdFZhcnM6bi5ob3N0VmFyc3x8MCxob3N0QXR0cnM6bi5ob3N0QXR0cnN8fG51bGwsY29udGVudFF1ZXJpZXM6bi5jb250ZW50UXVlcmllc3x8bnVs'@; put 'bCxkZWNsYXJlZElucHV0czplLGlucHV0Q29uZmlnOm4uaW5wdXRzfHxxcyxleHBvcnRBczpuLmV4cG9ydEFzfHxudWxsLHN0YW5kYWxvbmU6bi5zdGFuZGFsb25lPz8hMCxzaWduYWxzOiEwPT09bi5zaWduYWxzLHNlbGVjdG9yczpuLnNlbGVjdG9yc3x8SmEsdmlld1F1ZXJ5Om4udmlld1F1'@; put 'ZXJ5fHxudWxsLGZlYXR1cmVzOm4uZmVhdHVyZXN8fG51bGwsc2V0SW5wdXQ6bnVsbCxyZXNvbHZlSG9zdERpcmVjdGl2ZXM6bnVsbCxob3N0RGlyZWN0aXZlczpudWxsLGlucHV0czpKcWUobi5pbnB1dHMsZSksb3V0cHV0czplS2Uobi5vdXRwdXRzKSxkZWJ1Z0luZm86bnVsbH19ZnVuY3Rp'@; put 'b24gazZlKG4pe24uZmVhdHVyZXM/LmZvckVhY2goZT0+ZShuKSl9ZnVuY3Rpb24gZmoobixlKXtyZXR1cm4gbj8oKT0+e2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bigpOm4scj1bXTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCBvPWUoaSk7bnVsbCE9PW8mJnIucHVzaChvKX1yZXR1'@; put 'cm4gcn06bnVsbH1mdW5jdGlvbiBGbyhuKXtsZXQgZT1mdW5jdGlvbiBSNmUobil7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihuLnByb3RvdHlwZSkuY29uc3RydWN0b3J9KG4udHlwZSksdD0hMDtjb25zdCByPVtuXTtmb3IoO2U7KXtsZXQgaTtpZihzMShuKSlpPWUuXHUwMjc1Y21w'@; put 'fHxlLlx1MDI3NWRpcjtlbHNle2lmKGUuXHUwMjc1Y21wKXRocm93IG5ldyBXbig5MDMsITEpO2k9ZS5cdTAyNzVkaXJ9aWYoaSl7aWYodCl7ci5wdXNoKGkpO2NvbnN0IGE9bjthLmlucHV0cz1DdGUobi5pbnB1dHMpLGEuZGVjbGFyZWRJbnB1dHM9Q3RlKG4uZGVjbGFyZWRJbnB1dHMpLGEu'@; put 'b3V0cHV0cz1DdGUobi5vdXRwdXRzKTtjb25zdCBsPWkuaG9zdEJpbmRpbmdzO2wmJnNLZShuLGwpO2NvbnN0IHU9aS52aWV3UXVlcnksZz1pLmNvbnRlbnRRdWVyaWVzO2lmKHUmJm9LZShuLHUpLGcmJmFLZShuLGcpLHJLZShuLGkpLHNwKG4ub3V0cHV0cyxpLm91dHB1dHMpLHMxKGkpJiZp'@; put 'LmRhdGEuYW5pbWF0aW9uKXtjb25zdCBFPW4uZGF0YTtFLmFuaW1hdGlvbj0oRS5hbmltYXRpb258fFtdKS5jb25jYXQoaS5kYXRhLmFuaW1hdGlvbil9fWNvbnN0IG89aS5mZWF0dXJlcztpZihvKWZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSsrKXtjb25zdCBsPW9bYV07bCYmbC5uZ0luaGVy'@; put 'aXQmJmwobiksbD09PUZvJiYodD0hMSl9fWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSFmdW5jdGlvbiBpS2Uobil7bGV0IGU9MCx0PW51bGw7Zm9yKGxldCByPW4ubGVuZ3RoLTE7cj49MDtyLS0pe2NvbnN0IGk9bltyXTtpLmhvc3RWYXJzPWUrPWkuaG9zdFZhcnMsaS5ob3N0QXR0cnM9'@; put 'UjkoaS5ob3N0QXR0cnMsdD1SOSh0LGkuaG9zdEF0dHJzKSl9fShyKX1mdW5jdGlvbiByS2UobixlKXtmb3IoY29uc3QgdCBpbiBlLmlucHV0cyl7aWYoIWUuaW5wdXRzLmhhc093blByb3BlcnR5KHQpfHxuLmlucHV0cy5oYXNPd25Qcm9wZXJ0eSh0KSljb250aW51ZTtjb25zdCByPWUuaW5w'@; put 'dXRzW3RdO3ZvaWQgMCE9PXImJihuLmlucHV0c1t0XT1yLG4uZGVjbGFyZWRJbnB1dHNbdF09ZS5kZWNsYXJlZElucHV0c1t0XSl9fWZ1bmN0aW9uIEN0ZShuKXtyZXR1cm4gbj09PXFzP3t9Om49PT1KYT9bXTpufWZ1bmN0aW9uIG9LZShuLGUpe2NvbnN0IHQ9bi52aWV3UXVlcnk7bi52aWV3'@; put 'UXVlcnk9dD8ocixpKT0+e2UocixpKSx0KHIsaSl9OmV9ZnVuY3Rpb24gYUtlKG4sZSl7Y29uc3QgdD1uLmNvbnRlbnRRdWVyaWVzO24uY29udGVudFF1ZXJpZXM9dD8ocixpLG8pPT57ZShyLGksbyksdChyLGksbyl9OmV9ZnVuY3Rpb24gc0tlKG4sZSl7Y29uc3QgdD1uLmhvc3RCaW5kaW5n'@; put 'cztuLmhvc3RCaW5kaW5ncz10PyhyLGkpPT57ZShyLGkpLHQocixpKX06ZX1mdW5jdGlvbiB6ZyhuKXtjb25zdCBlPXQ9Pntjb25zdCByPUFycmF5LmlzQXJyYXkobik7bnVsbD09PXQuaG9zdERpcmVjdGl2ZXM/KHQucmVzb2x2ZUhvc3REaXJlY3RpdmVzPWRLZSx0Lmhvc3REaXJlY3RpdmVz'@; put 'PXI/bi5tYXAoU3RlKTpbbl0pOnI/dC5ob3N0RGlyZWN0aXZlcy51bnNoaWZ0KC4uLm4ubWFwKFN0ZSkpOnQuaG9zdERpcmVjdGl2ZXMudW5zaGlmdChuKX07cmV0dXJuIGUubmdJbmhlcml0PSEwLGV9ZnVuY3Rpb24gZEtlKG4pe2NvbnN0IGU9W107bGV0IHQ9ITEscj1udWxsLGk9bnVsbDtm'@; put 'b3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgYT1uW29dO2lmKG51bGwhPT1hLmhvc3REaXJlY3RpdmVzKXtjb25zdCBsPWUubGVuZ3RoO3I/Pz1uZXcgTWFwLGk/Pz1uZXcgTWFwLEk2ZShhLGUsciksaS5zZXQoYSxbbCxlLmxlbmd0aC0xXSl9MD09PW8mJnMxKGEpJiYodD0hMCxl'@; put 'LnB1c2goYSkpfWZvcihsZXQgbz10PzE6MDtvPG4ubGVuZ3RoO28rKyllLnB1c2gobltvXSk7cmV0dXJuW2UscixpXX1mdW5jdGlvbiBJNmUobixlLHQpe2lmKG51bGwhPT1uLmhvc3REaXJlY3RpdmVzKWZvcihjb25zdCByIG9mIG4uaG9zdERpcmVjdGl2ZXMpaWYoImZ1bmN0aW9uIj09dHlw'@; put 'ZW9mIHIpe2NvbnN0IGk9cigpO2Zvcihjb25zdCBvIG9mIGkpRDZlKFN0ZShvKSxlLHQpfWVsc2UgRDZlKHIsZSx0KX1mdW5jdGlvbiBENmUobixlLHQpe2NvbnN0IHI9Q3Mobi5kaXJlY3RpdmUpOyhmdW5jdGlvbiBoS2UobixlKXtmb3IoY29uc3QgdCBpbiBlKWUuaGFzT3duUHJvcGVydHko'@; put 'dCkmJihuW2VbdF1dPW5bdF0pfSkoci5kZWNsYXJlZElucHV0cyxuLmlucHV0cyksSTZlKHIsZSx0KSx0LnNldChyLG4pLGUucHVzaChyKX1mdW5jdGlvbiBTdGUobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/e2RpcmVjdGl2ZTpmYShuKSxpbnB1dHM6cXMsb3V0cHV0czpxc306e2Rp'@; put 'cmVjdGl2ZTpmYShuLmRpcmVjdGl2ZSksaW5wdXRzOkw2ZShuLmlucHV0cyksb3V0cHV0czpMNmUobi5vdXRwdXRzKX19ZnVuY3Rpb24gTDZlKG4pe2lmKHZvaWQgMD09PW58fDA9PT1uLmxlbmd0aClyZXR1cm4gcXM7Y29uc3QgZT17fTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrPTIpZVtu'@; put 'W3RdXT1uW3QrMV07cmV0dXJuIGV9ZnVuY3Rpb24gTjZlKG4sZSx0LHIsaSxvLGEsbCl7aWYodC5maXJzdENyZWF0ZVBhc3Mpe24ubWVyZ2VkQXR0cnM9Ujkobi5tZXJnZWRBdHRycyxuLmF0dHJzKTtjb25zdCBFPW4udFZpZXc9Z0IoMixuLGksbyxhLHQuZGlyZWN0aXZlUmVnaXN0cnksdC5w'@; put 'aXBlUmVnaXN0cnksbnVsbCx0LnNjaGVtYXMsdC5jb25zdHMsbnVsbCk7bnVsbCE9PXQucXVlcmllcyYmKHQucXVlcmllcy50ZW1wbGF0ZSh0LG4pLEUucXVlcmllcz10LnF1ZXJpZXMuZW1iZWRkZWRUVmlldyhuKSl9bCYmKG4uZmxhZ3N8PWwpLFdzKG4sITEpO2NvbnN0IHU9RjZlKHQsZSxu'@; put 'LHIpO29TKCkmJnZSKHQsZSx1LG4pLGowKHUsZSk7Y29uc3QgZz1xQih1LGUsdSxuKTtlW3IrMjddPWcsdFIoZSxnKX1mdW5jdGlvbiBReShuLGUsdCxyLGksbyxhLGwsdSxnLEUpe2NvbnN0IE89dCsyNztsZXQgWjtpZihlLmZpcnN0Q3JlYXRlUGFzcyl7aWYoWj1ENShlLE8sNCxhfHxudWxs'@; put 'LGx8fG51bGwpLG51bGwhPWcpe2NvbnN0IGVlPXBjKGUuY29uc3RzLGcpO1oubG9jYWxOYW1lcz1bXTtmb3IobGV0IHZlPTA7dmU8ZWUubGVuZ3RoO3ZlKz0yKVoubG9jYWxOYW1lcy5wdXNoKGVlW3ZlXSwtMSl9fWVsc2UgWj1lLmRhdGFbT107cmV0dXJuIE42ZShaLG4sZSx0LHIsaSxvLHUp'@; put 'LG51bGwhPWcmJlk5KG4sWixFKSxafWZ1bmN0aW9uIFluKG4sZSx0LHIsaSxvLGEsbCl7Y29uc3QgdT1pdCgpLGc9RnQoKTtyZXR1cm4gZnVuY3Rpb24gZktlKG4sZSx0LHIsaSxvLGEsbCx1LGcsRSl7Y29uc3QgTz10KzI3O2xldCBaO2UuZmlyc3RDcmVhdGVQYXNzPyhaPUQ1KGUsTyw0LGF8'@; put 'fG51bGwsbHx8bnVsbCksSWcoKSYmRzgoZSxuLFoscGMoZS5jb25zdHMsZyksRzkpLE1IKGUsWikpOlo9ZS5kYXRhW09dLE42ZShaLG4sZSx0LHIsaSxvLHUpLENmKFopJiZ0RShlLG4sWiksbnVsbCE9ZyYmWTkobixaLEUpfSh1LGcsbixlLHQscixpLHBjKGcuY29uc3RzLG8pLHZvaWQgMCxh'@; put 'LGwpLFlufWZ1bmN0aW9uIEV0ZShuLGUsdCxyLGksbyxhLGwpe2NvbnN0IHU9aXQoKSxnPUZ0KCk7cmV0dXJuIFF5KHUsZyxuLGUsdCxyLGkscGMoZy5jb25zdHMsbyksdm9pZCAwLGEsbCksRXRlfWxldCBGNmU9ZnVuY3Rpb24gUDZlKG4sZSx0LHIpe3JldHVybiBweSghMCksZVsxMV0uY3Jl'@; put 'YXRlQ29tbWVudCgiIil9O2xldCBLNmU9KCgpPT57Y2xhc3Mgbntsb2codCl7Y29uc29sZS5sb2codCl9d2Fybih0KXtjb25zb2xlLndhcm4odCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0'@; put 'b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pfXJldHVybiBufSkoKTtjb25zdCBkOGU9bmV3IEVyKCIiKSx3aj1uZXcgRXIoIiIpO2xldCBMdGUsSXRlPSgoKT0+e2NsYXNzIG57X25nWm9uZTtyZWdpc3RyeTtfaXNab25lU3RhYmxlPSEwO19jYWxsYmFja3M9W107X3Rh'@; put 'c2tUcmFja2luZ1pvbmU9bnVsbDtfZGVzdHJveVJlZjtjb25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy5fbmdab25lPXQsdGhpcy5yZWdpc3RyeT1yLEVnKCkmJih0aGlzLl9kZXN0cm95UmVmPXNuKE0yLHtvcHRpb25hbDohMH0pPz92b2lkIDApLEx0ZXx8KGZ1bmN0aW9uIHdYZShuKXtMdGU9bn0o'@; put 'aSksaS5hZGRUb1dpbmRvdyhyKSksdGhpcy5fd2F0Y2hBbmd1bGFyRXZlbnRzKCksdC5ydW4oKCk9Pnt0aGlzLl90YXNrVHJhY2tpbmdab25lPXR5cGVvZiBab25lPiJ1Ij9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pfV93YXRjaEFuZ3VsYXJFdmVudHMoKXtj'@; put 'b25zdCB0PXRoaXMuX25nWm9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMuX2lzWm9uZVN0YWJsZT0hMX19KSxyPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dGhpcy5fbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e2dhLmFzc2Vy'@; put 'dE5vdEluQW5ndWxhclpvbmUoKSxxdWV1ZU1pY3JvdGFzaygoKT0+e3RoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9KX19KSk7dGhpcy5fZGVzdHJveVJlZj8ub25EZXN0cm95KCgpPT57dC51bnN1YnNjcmliZSgpLHIudW5zdWJzY3JpYmUoKX0pfWlz'@; put 'U3RhYmxlKCl7cmV0dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc31fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpe2lmKHRoaXMuaXNTdGFibGUoKSlxdWV1ZU1pY3JvdGFzaygoKT0+e2Zvcig7MCE9PXRoaXMuX2NhbGxiYWNrcy5sZW5ndGg7'@; put 'KXtsZXQgdD10aGlzLl9jYWxsYmFja3MucG9wKCk7Y2xlYXJUaW1lb3V0KHQudGltZW91dElkKSx0LmRvbmVDYigpfX0pO2Vsc2V7bGV0IHQ9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcihyPT4hci51cGRhdGVDYnx8IXIudXBk'@; put 'YXRlQ2IodCl8fChjbGVhclRpbWVvdXQoci50aW1lb3V0SWQpLCExKSl9fWdldFBlbmRpbmdUYXNrcygpe3JldHVybiB0aGlzLl90YXNrVHJhY2tpbmdab25lP3RoaXMuX3Rhc2tUcmFja2luZ1pvbmUubWFjcm9UYXNrcy5tYXAodD0+KHtzb3VyY2U6dC5zb3VyY2UsY3JlYXRpb25Mb2NhdGlv'@; put 'bjp0LmNyZWF0aW9uTG9jYXRpb24sZGF0YTp0LmRhdGF9KSk6W119YWRkQ2FsbGJhY2sodCxyLGkpe2xldCBvPS0xO3ImJnI+MCYmKG89c2V0VGltZW91dCgoKT0+e3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKGE9PmEudGltZW91dElkIT09byksdCgpfSxyKSksdGhp'@; put 'cy5fY2FsbGJhY2tzLnB1c2goe2RvbmVDYjp0LHRpbWVvdXRJZDpvLHVwZGF0ZUNiOml9KX13aGVuU3RhYmxlKHQscixpKXtpZihpJiYhdGhpcy5fdGFza1RyYWNraW5nWm9uZSl0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgdHJhY2tpbmcgem9uZSBpcyByZXF1aXJlZCB3aGVuIHBhc3NpbmcgYW4g'@; put 'dXBkYXRlIGNhbGxiYWNrIHRvIHdoZW5TdGFibGUoKS4gSXMgInpvbmUuanMvcGx1Z2lucy90YXNrLXRyYWNraW5nIiBsb2FkZWQ/Jyk7dGhpcy5hZGRDYWxsYmFjayh0LHIsaSksdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfXJlZ2lzdGVyQXBwbGljYXRpb24odCl7dGhpcy5yZWdpc3Ry'@; put 'eS5yZWdpc3RlckFwcGxpY2F0aW9uKHQsdGhpcyl9dW5yZWdpc3RlckFwcGxpY2F0aW9uKHQpe3RoaXMucmVnaXN0cnkudW5yZWdpc3RlckFwcGxpY2F0aW9uKHQpfWZpbmRQcm92aWRlcnModCxyLGkpe3JldHVybltdfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhy'@; put 'fHxuKShvcihnYSksb3IoRHRlKSxvcih3aikpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJuIG59KSgpLER0ZT0oKCk9PntjbGFzcyBue19hcHBsaWNhdGlvbnM9bmV3IE1hcDtyZWdpc3RlckFwcGxpY2F0aW9uKHQscil7dGhpcy5f'@; put 'YXBwbGljYXRpb25zLnNldCh0LHIpfXVucmVnaXN0ZXJBcHBsaWNhdGlvbih0KXt0aGlzLl9hcHBsaWNhdGlvbnMuZGVsZXRlKHQpfXVucmVnaXN0ZXJBbGxBcHBsaWNhdGlvbnMoKXt0aGlzLl9hcHBsaWNhdGlvbnMuY2xlYXIoKX1nZXRUZXN0YWJpbGl0eSh0KXtyZXR1cm4gdGhpcy5fYXBw'@; put 'bGljYXRpb25zLmdldCh0KXx8bnVsbH1nZXRBbGxUZXN0YWJpbGl0aWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLnZhbHVlcygpKX1nZXRBbGxSb290RWxlbWVudHMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX1maW5kVGVz'@; put 'dGFiaWxpdHlJblRyZWUodCxyPSEwKXtyZXR1cm4gTHRlPy5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LHIpPz9udWxsfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3'@; put 'NWZhYyxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9KX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gWlIobil7cmV0dXJuISFuJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi50aGVufWZ1bmN0aW9uIGg4ZShuKXtyZXR1cm4hIW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnN1YnNjcmliZX1jb25zdCBmOGU9bmV3'@; put 'IEVyKCIiKTtmdW5jdGlvbiBwOGUobil7cmV0dXJuIG5kKFt7cHJvdmlkZTpmOGUsbXVsdGk6ITAsdXNlVmFsdWU6bn1dKX1sZXQgZzhlPSgoKT0+e2NsYXNzIG57cmVzb2x2ZTtyZWplY3Q7aW5pdGlhbGl6ZWQ9ITE7ZG9uZT0hMTtkb25lUHJvbWlzZT1uZXcgUHJvbWlzZSgodCxyKT0+e3Ro'@; put 'aXMucmVzb2x2ZT10LHRoaXMucmVqZWN0PXJ9KTthcHBJbml0cz1zbihmOGUse29wdGlvbmFsOiEwfSk/P1tdO2luamVjdG9yPXNuKE1sKTtjb25zdHJ1Y3Rvcigpe31ydW5Jbml0aWFsaXplcnMoKXtpZih0aGlzLmluaXRpYWxpemVkKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9m'@; put 'IHRoaXMuYXBwSW5pdHMpe2NvbnN0IG89THUodGhpcy5pbmplY3RvcixpKTtpZihaUihvKSl0LnB1c2gobyk7ZWxzZSBpZihoOGUobykpe2NvbnN0IGE9bmV3IFByb21pc2UoKGwsdSk9PntvLnN1YnNjcmliZSh7Y29tcGxldGU6bCxlcnJvcjp1fSl9KTt0LnB1c2goYSl9fWNvbnN0IHI9KCk9'@; put 'Pnt0aGlzLmRvbmU9ITAsdGhpcy5yZXNvbHZlKCl9O1Byb21pc2UuYWxsKHQpLnRoZW4oKCk9PntyKCl9KS5jYXRjaChpPT57dGhpcy5yZWplY3QoaSl9KSwwPT09dC5sZW5ndGgmJnIoKSx0aGlzLmluaXRpYWxpemVkPSEwfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5l'@; put 'dyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtjb25zdCBtOGU9bmV3IEVyKCIiKTtmdW5jdGlvbiB2OGUobixlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnJlZHVjZSh2'@; put 'OGUsbik6ey4uLm4sLi4uZX19bGV0IFdnPSgoKT0+e2NsYXNzIG57X3J1bm5pbmdUaWNrPSExO19kZXN0cm95ZWQ9ITE7X2Rlc3Ryb3lMaXN0ZW5lcnM9W107X3ZpZXdzPVtdO2ludGVybmFsRXJyb3JIYW5kbGVyPXNuKF9wKTthZnRlclJlbmRlck1hbmFnZXI9c24oeEIpO3pvbmVsZXNzRW5h'@; put 'YmxlZD1zbihuSCk7cm9vdEVmZmVjdFNjaGVkdWxlcj1zbihvSCk7ZGlydHlGbGFncz0wO3RyYWNpbmdTbmFwc2hvdD1udWxsO2FsbFRlc3RWaWV3cz1uZXcgU2V0O2F1dG9EZXRlY3RUZXN0Vmlld3M9bmV3IFNldDtpbmNsdWRlQWxsVGVzdFZpZXdzPSExO2FmdGVyVGljaz1uZXcgTXI7Z2V0'@; put 'IGFsbFZpZXdzKCl7cmV0dXJuWy4uLih0aGlzLmluY2x1ZGVBbGxUZXN0Vmlld3M/dGhpcy5hbGxUZXN0Vmlld3M6dGhpcy5hdXRvRGV0ZWN0VGVzdFZpZXdzKS5rZXlzKCksLi4udGhpcy5fdmlld3NdfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfWNvbXBvbmVudFR5'@; put 'cGVzPVtdO2NvbXBvbmVudHM9W107aW50ZXJuYWxQZW5kaW5nVGFzaz1zbihzNSk7Z2V0IGlzU3RhYmxlKCl7cmV0dXJuIHRoaXMuaW50ZXJuYWxQZW5kaW5nVGFzay5oYXNQZW5kaW5nVGFza3NPYnNlcnZhYmxlLnBpcGUoRXModD0+IXQpKX1jb25zdHJ1Y3Rvcigpe3NuKHo5LHtvcHRpb25h'@; put 'bDohMH0pfXdoZW5TdGFibGUoKXtsZXQgdDtyZXR1cm4gbmV3IFByb21pc2Uocj0+e3Q9dGhpcy5pc1N0YWJsZS5zdWJzY3JpYmUoe25leHQ6aT0+e2kmJnIoKX19KX0pLmZpbmFsbHkoKCk9Pnt0LnVuc3Vic2NyaWJlKCl9KX1faW5qZWN0b3I9c24obmwpO19yZW5kZXJlckZhY3Rvcnk9bnVs'@; put 'bDtnZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9Ym9vdHN0cmFwKHQscil7cmV0dXJuIHRoaXMuYm9vdHN0cmFwSW1wbCh0LHIpfWJvb3RzdHJhcEltcGwodCxyLGk9TWwuTlVMTCl7cmV0dXJuIHRoaXMuX2luamVjdG9yLmdldChnYSkucnVuKCgpPT57R2MoMTApO2NvbnN0'@; put 'IGE9dCBpbnN0YW5jZW9mIEVkO2lmKCF0aGlzLl9pbmplY3Rvci5nZXQoZzhlKS5kb25lKXRocm93IG5ldyBXbig0MDUsIiIpO2xldCB1O3U9YT90OnRoaXMuX2luamVjdG9yLmdldChMaCkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKHUuY29t'@; put 'cG9uZW50VHlwZSk7Y29uc3QgZz1mdW5jdGlvbiBTWGUobil7cmV0dXJuIG4uaXNCb3VuZFRvTW9kdWxlfSh1KT92b2lkIDA6dGhpcy5faW5qZWN0b3IuZ2V0KFh5KSxPPXUuY3JlYXRlKGksW10scnx8dS5zZWxlY3RvcixnKSxaPU8ubG9jYXRpb24ubmF0aXZlRWxlbWVudCxlZT1PLmluamVj'@; put 'dG9yLmdldChkOGUsbnVsbCk7cmV0dXJuIGVlPy5yZWdpc3RlckFwcGxpY2F0aW9uKFopLE8ub25EZXN0cm95KCgpPT57dGhpcy5kZXRhY2hWaWV3KE8uaG9zdFZpZXcpLENqKHRoaXMuY29tcG9uZW50cyxPKSxlZT8udW5yZWdpc3RlckFwcGxpY2F0aW9uKFopfSksdGhpcy5fbG9hZENvbXBv'@; put 'bmVudChPKSxHYygxMSxPKSxPfSl9dGljaygpe3RoaXMuem9uZWxlc3NFbmFibGVkfHwodGhpcy5kaXJ0eUZsYWdzfD0xKSx0aGlzLl90aWNrKCl9X3RpY2soKXtHYygxMiksbnVsbCE9PXRoaXMudHJhY2luZ1NuYXBzaG90P3RoaXMudHJhY2luZ1NuYXBzaG90LnJ1bigkUy5DSEFOR0VfREVU'@; put 'RUNUSU9OLHRoaXMudGlja0ltcGwpOnRoaXMudGlja0ltcGwoKX10aWNrSW1wbD0oKT0+e2lmKHRoaXMuX3J1bm5pbmdUaWNrKXRocm93IG5ldyBXbigxMDEsITEpO2NvbnN0IHQ9ayhudWxsKTt0cnl7dGhpcy5fcnVubmluZ1RpY2s9ITAsdGhpcy5zeW5jaHJvbml6ZSgpfWZpbmFsbHl7dGhp'@; put 'cy5fcnVubmluZ1RpY2s9ITEsdGhpcy50cmFjaW5nU25hcHNob3Q/LmRpc3Bvc2UoKSx0aGlzLnRyYWNpbmdTbmFwc2hvdD1udWxsLGsodCksdGhpcy5hZnRlclRpY2submV4dCgpLEdjKDEzKX19O3N5bmNocm9uaXplKCl7bnVsbD09PXRoaXMuX3JlbmRlcmVyRmFjdG9yeSYmIXRoaXMuX2lu'@; put 'amVjdG9yLmRlc3Ryb3llZCYmKHRoaXMuX3JlbmRlcmVyRmFjdG9yeT10aGlzLl9pbmplY3Rvci5nZXQoZ2MsbnVsbCx7b3B0aW9uYWw6ITB9KSk7bGV0IHQ9MDtmb3IoOzAhPT10aGlzLmRpcnR5RmxhZ3MmJnQrKzwxMDspR2MoMTQpLHRoaXMuc3luY2hyb25pemVPbmNlKCksR2MoMTUpfXN5'@; put 'bmNocm9uaXplT25jZSgpezE2JnRoaXMuZGlydHlGbGFncyYmKHRoaXMuZGlydHlGbGFncyY9LTE3LHRoaXMucm9vdEVmZmVjdFNjaGVkdWxlci5mbHVzaCgpKTtsZXQgdD0hMTtpZig3JnRoaXMuZGlydHlGbGFncyl7Y29uc3Qgcj0hISgxJnRoaXMuZGlydHlGbGFncyk7dGhpcy5kaXJ0eUZs'@; put 'YWdzJj0tOCx0aGlzLmRpcnR5RmxhZ3N8PTg7Zm9yKGxldHtfbFZpZXc6aX1vZiB0aGlzLmFsbFZpZXdzKShyfHxaYyhpKSkmJihXeShpLHImJiF0aGlzLnpvbmVsZXNzRW5hYmxlZD8wOjEpLHQ9ITApO2lmKHRoaXMuZGlydHlGbGFncyY9LTUsdGhpcy5zeW5jRGlydHlGbGFnc1dpdGhWaWV3'@; put 'cygpLDIzJnRoaXMuZGlydHlGbGFncylyZXR1cm59dHx8KHRoaXMuX3JlbmRlcmVyRmFjdG9yeT8uYmVnaW4/LigpLHRoaXMuX3JlbmRlcmVyRmFjdG9yeT8uZW5kPy4oKSksOCZ0aGlzLmRpcnR5RmxhZ3MmJih0aGlzLmRpcnR5RmxhZ3MmPS05LHRoaXMuYWZ0ZXJSZW5kZXJNYW5hZ2VyLmV4'@; put 'ZWN1dGUoKSksdGhpcy5zeW5jRGlydHlGbGFnc1dpdGhWaWV3cygpfXN5bmNEaXJ0eUZsYWdzV2l0aFZpZXdzKCl7dGhpcy5hbGxWaWV3cy5zb21lKCh7X2xWaWV3OnR9KT0+WmModCkpP3RoaXMuZGlydHlGbGFnc3w9Mjp0aGlzLmRpcnR5RmxhZ3MmPS04fWF0dGFjaFZpZXcodCl7Y29uc3Qg'@; put 'cj10O3RoaXMuX3ZpZXdzLnB1c2gociksci5hdHRhY2hUb0FwcFJlZih0aGlzKX1kZXRhY2hWaWV3KHQpe2NvbnN0IHI9dDtDaih0aGlzLl92aWV3cyxyKSxyLmRldGFjaEZyb21BcHBSZWYoKX1fbG9hZENvbXBvbmVudCh0KXt0aGlzLmF0dGFjaFZpZXcodC5ob3N0Vmlldyk7dHJ5e3RoaXMu'@; put 'dGljaygpfWNhdGNoKGkpe3RoaXMuaW50ZXJuYWxFcnJvckhhbmRsZXIoaSl9dGhpcy5jb21wb25lbnRzLnB1c2godCksdGhpcy5faW5qZWN0b3IuZ2V0KG04ZSxbXSkuZm9yRWFjaChpPT5pKHQpKX1uZ09uRGVzdHJveSgpe2lmKCF0aGlzLl9kZXN0cm95ZWQpdHJ5e3RoaXMuX2Rlc3Ryb3lM'@; put 'aXN0ZW5lcnMuZm9yRWFjaCh0PT50KCkpLHRoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFjaCh0PT50LmRlc3Ryb3koKSl9ZmluYWxseXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fdmlld3M9W10sdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXX19b25EZXN0cm95KHQpe3JldHVybiB0aGlzLl9k'@; put 'ZXN0cm95TGlzdGVuZXJzLnB1c2godCksKCk9PkNqKHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMsdCl9ZGVzdHJveSgpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgV24oNDA2LCExKTtjb25zdCB0PXRoaXMuX2luamVjdG9yO3QuZGVzdHJveSYmIXQuZGVzdHJveWVkJiZ0LmRlc3Ryb3ko'@; put 'KX1nZXQgdmlld0NvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1'@; put 'cm4gbn0pKCk7ZnVuY3Rpb24gQ2oobixlKXtjb25zdCB0PW4uaW5kZXhPZihlKTt0Pi0xJiZuLnNwbGljZSh0LDEpfWZ1bmN0aW9uIFJyKG4sZSx0LHIpe2NvbnN0IGk9aXQoKTtyZXR1cm4gb3UoaSxFMigpLGUpJiYoRnQoKSxmdW5jdGlvbiBqQihuLGUsdCxyLGksbyl7Y29uc3QgYT1ZaShu'@; put 'LGUpOyFmdW5jdGlvbiB6aShuLGUsdCxyLGksbyxhKXtpZihudWxsPT1vKW4ucmVtb3ZlQXR0cmlidXRlKGUsaSx0KTtlbHNle2NvbnN0IGw9bnVsbD09YT9pYShvKTphKG8scnx8IiIsaSk7bi5zZXRBdHRyaWJ1dGUoZSxpLGwsdCl9fShlWzExXSxhLG8sbi52YWx1ZSx0LHIsaSl9KHkzKCks'@; put 'aSxuLGUsdCxyKSksUnJ9dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQ7Y2xhc3MgYlFle2Rlc3Ryb3koZSl7fXVwZGF0ZVZhbHVlKGUsdCl7fXN3YXAoZSx0KXtjb25zdCByPU1hdGgubWluKGUsdCksaT1NYXRoLm1heChlLHQpLG89dGhpcy5kZXRhY2goaSk7aWYoaS1yPjEpe2NvbnN0'@; put 'IGE9dGhpcy5kZXRhY2gocik7dGhpcy5hdHRhY2gocixvKSx0aGlzLmF0dGFjaChpLGEpfWVsc2UgdGhpcy5hdHRhY2gocixvKX1tb3ZlKGUsdCl7dGhpcy5hdHRhY2godCx0aGlzLmRldGFjaChlKSl9fWZ1bmN0aW9uIFd0ZShuLGUsdCxyLGkpe3JldHVybiBuPT09dCYmT2JqZWN0LmlzKGUs'@; put 'cik/MTpPYmplY3QuaXMoaShuLGUpLGkodCxyKSk/LTE6MH1mdW5jdGlvbiBZdGUobixlLHQscil7cmV0dXJuISh2b2lkIDA9PT1lfHwhZS5oYXMocil8fChuLmF0dGFjaCh0LGUuZ2V0KHIpKSxlLmRlbGV0ZShyKSwwKSl9ZnVuY3Rpb24gUjhlKG4sZSx0LHIsaSl7aWYoWXRlKG4sZSxyLHQo'@; put 'cixpKSkpbi51cGRhdGVWYWx1ZShyLGkpO2Vsc2V7Y29uc3Qgbz1uLmNyZWF0ZShyLGkpO24uYXR0YWNoKHIsbyl9fWZ1bmN0aW9uIEk4ZShuLGUsdCxyKXtjb25zdCBpPW5ldyBTZXQ7Zm9yKGxldCBvPWU7bzw9dDtvKyspaS5hZGQocihvLG4uYXQobykpKTtyZXR1cm4gaX1jbGFzcyBEOGV7'@; put 'a3ZNYXA9bmV3IE1hcDtfdk1hcD12b2lkIDA7aGFzKGUpe3JldHVybiB0aGlzLmt2TWFwLmhhcyhlKX1kZWxldGUoZSl7aWYoIXRoaXMuaGFzKGUpKXJldHVybiExO2NvbnN0IHQ9dGhpcy5rdk1hcC5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3ZNYXAmJnRoaXMuX3ZNYXAuaGFzKHQp'@; put 'Pyh0aGlzLmt2TWFwLnNldChlLHRoaXMuX3ZNYXAuZ2V0KHQpKSx0aGlzLl92TWFwLmRlbGV0ZSh0KSk6dGhpcy5rdk1hcC5kZWxldGUoZSksITB9Z2V0KGUpe3JldHVybiB0aGlzLmt2TWFwLmdldChlKX1zZXQoZSx0KXtpZih0aGlzLmt2TWFwLmhhcyhlKSl7bGV0IHI9dGhpcy5rdk1hcC5n'@; put 'ZXQoZSk7dm9pZCAwPT09dGhpcy5fdk1hcCYmKHRoaXMuX3ZNYXA9bmV3IE1hcCk7Y29uc3QgaT10aGlzLl92TWFwO2Zvcig7aS5oYXMocik7KXI9aS5nZXQocik7aS5zZXQocix0KX1lbHNlIHRoaXMua3ZNYXAuc2V0KGUsdCl9Zm9yRWFjaChlKXtmb3IobGV0W3Qscl1vZiB0aGlzLmt2TWFw'@; put 'KWlmKGUocix0KSx2b2lkIDAhPT10aGlzLl92TWFwKXtjb25zdCBpPXRoaXMuX3ZNYXA7Zm9yKDtpLmhhcyhyKTspcj1pLmdldChyKSxlKHIsdCl9fX1mdW5jdGlvbiB2dChuLGUsdCxyLGksbyxhLGwpe2oxKCJOZ0NvbnRyb2xGbG93Iik7Y29uc3QgdT1pdCgpLGc9RnQoKTtyZXR1cm4gUXko'@; put 'dSxnLG4sZSx0LHIsaSxwYyhnLmNvbnN0cyxvKSwyNTYsYSxsKSxadGV9ZnVuY3Rpb24gWnRlKG4sZSx0LHIsaSxvLGEsbCl7ajEoIk5nQ29udHJvbEZsb3ciKTtjb25zdCB1PWl0KCksZz1GdCgpO3JldHVybiBReSh1LGcsbixlLHQscixpLHBjKGcuY29uc3RzLG8pLDUxMixhLGwpLFp0ZX1m'@; put 'dW5jdGlvbiBfdChuLGUpe2oxKCJOZ0NvbnRyb2xGbG93Iik7Y29uc3QgdD1pdCgpLHI9RTIoKSxpPXRbcl0hPT1OYz90W3JdOi0xLG89LTEhPT1pP0lqKHQsMjcraSk6dm9pZCAwO2lmKG91KHQscixuKSl7Y29uc3QgbD1rKG51bGwpO3RyeXtpZih2b2lkIDAhPT1vJiZzaChvLDApLC0xIT09'@; put 'bil7Y29uc3QgdT0yNytuLGc9SWoodCx1KSxFPUd0ZSh0WzFdLHUpLE89bnVsbDtLOShnLCQ5KHQsRSxlLHtkZWh5ZHJhdGVkVmlldzpPfSksMCxVOChFLE8pKX19ZmluYWxseXtrKGwpfX1lbHNlIGlmKHZvaWQgMCE9PW8pe2NvbnN0IGw9S0IobywwKTt2b2lkIDAhPT1sJiYobFs4XT1lKX19'@; put 'Y2xhc3MgQ1Fle2xDb250YWluZXI7JGltcGxpY2l0OyRpbmRleDtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5sQ29udGFpbmVyPWUsdGhpcy4kaW1wbGljaXQ9dCx0aGlzLiRpbmRleD1yfWdldCAkY291bnQoKXtyZXR1cm4gdGhpcy5sQ29udGFpbmVyLmxlbmd0aC0xMH19ZnVuY3Rpb24gQ28o'@; put 'bixlKXtyZXR1cm4gZX1jbGFzcyBFUWV7aGFzRW1wdHlCbG9jazt0cmFja0J5Rm47bGl2ZUNvbGxlY3Rpb247Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuaGFzRW1wdHlCbG9jaz1lLHRoaXMudHJhY2tCeUZuPXQsdGhpcy5saXZlQ29sbGVjdGlvbj1yfX1mdW5jdGlvbiBfbyhuLGUsdCxyLGks'@; put 'byxhLGwsdSxnLEUsTyxaKXtqMSgiTmdDb250cm9sRmxvdyIpO2NvbnN0IGVlPWl0KCksdmU9RnQoKSxNZT12b2lkIDAhPT11LEhlPWl0KCksV2U9bD9hLmJpbmQoSGVbMTVdWzhdKTphLGF0PW5ldyBFUWUoTWUsV2UpO0hlWzI3K25dPWF0LFF5KGVlLHZlLG4rMSxlLHQscixpLHBjKHZlLmNv'@; put 'bnN0cyxvKSwyNTYpLE1lJiZReShlZSx2ZSxuKzIsdSxnLEUsTyxwYyh2ZS5jb25zdHMsWiksNTEyKX1jbGFzcyBNUWUgZXh0ZW5kcyBiUWV7bENvbnRhaW5lcjtob3N0TFZpZXc7dGVtcGxhdGVUTm9kZTtvcGVyYXRpb25zQ291bnRlcj12b2lkIDA7bmVlZHNJbmRleFVwZGF0ZT0hMTtjb25z'@; put 'dHJ1Y3RvcihlLHQscil7c3VwZXIoKSx0aGlzLmxDb250YWluZXI9ZSx0aGlzLmhvc3RMVmlldz10LHRoaXMudGVtcGxhdGVUTm9kZT1yfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sQ29udGFpbmVyLmxlbmd0aC0xMH1hdChlKXtyZXR1cm4gdGhpcy5nZXRMVmlldyhlKVs4XS4kaW1wbGlj'@; put 'aXR9YXR0YWNoKGUsdCl7Y29uc3Qgcj10WzZdO3RoaXMubmVlZHNJbmRleFVwZGF0ZXx8PWUhPT10aGlzLmxlbmd0aCxLOSh0aGlzLmxDb250YWluZXIsdCxlLFU4KHRoaXMudGVtcGxhdGVUTm9kZSxyKSksZnVuY3Rpb24gVFFlKG4sZSl7aWYobi5sZW5ndGg8PTEwKXJldHVybjtjb25zdCBy'@; put 'PW5bMTArZV0saT1yP3JbMjZdOnZvaWQgMDtyJiZpJiZpLmRldGFjaGVkTGVhdmVBbmltYXRpb25GbnMmJmkuZGV0YWNoZWRMZWF2ZUFuaW1hdGlvbkZucy5sZW5ndGg+MCYmKGZ1bmN0aW9uIE1lZShuLGUpe2NvbnN0IHQ9bi5nZXQoS1MpO2lmKGUuZGV0YWNoZWRMZWF2ZUFuaW1hdGlvbkZu'@; put 'cyl7Zm9yKGNvbnN0IHIgb2YgZS5kZXRhY2hlZExlYXZlQW5pbWF0aW9uRm5zKXQucXVldWUuZGVsZXRlKHIpO2UuZGV0YWNoZWRMZWF2ZUFuaW1hdGlvbkZucz12b2lkIDB9fShyWzldLGkpLGs1LmRlbGV0ZShyKSxpLmRldGFjaGVkTGVhdmVBbmltYXRpb25GbnM9dm9pZCAwKX0odGhpcy5s'@; put 'Q29udGFpbmVyLGUpfWRldGFjaChlKXtyZXR1cm4gdGhpcy5uZWVkc0luZGV4VXBkYXRlfHw9ZSE9PXRoaXMubGVuZ3RoLTEsZnVuY3Rpb24geFFlKG4sZSl7aWYobi5sZW5ndGg8PTEwKXJldHVybjtjb25zdCByPW5bMTArZV0saT1yP3JbMjZdOnZvaWQgMDtpJiZpLmxlYXZlJiZpLmxlYXZl'@; put 'LnNpemU+MCYmKGkuZGV0YWNoZWRMZWF2ZUFuaW1hdGlvbkZucz1bXSl9KHRoaXMubENvbnRhaW5lcixlKSxmdW5jdGlvbiBBUWUobixlKXtyZXR1cm4gWDkobixlKX0odGhpcy5sQ29udGFpbmVyLGUpfWNyZWF0ZShlLHQpe2NvbnN0IGk9JDkodGhpcy5ob3N0TFZpZXcsdGhpcy50ZW1wbGF0'@; put 'ZVROb2RlLG5ldyBDUWUodGhpcy5sQ29udGFpbmVyLHQsZSkse2RlaHlkcmF0ZWRWaWV3Om51bGx9KTtyZXR1cm4gdGhpcy5vcGVyYXRpb25zQ291bnRlcj8ucmVjb3JkQ3JlYXRlKCksaX1kZXN0cm95KGUpe0J5KGVbMV0sZSksdGhpcy5vcGVyYXRpb25zQ291bnRlcj8ucmVjb3JkRGVzdHJv'@; put 'eSgpfXVwZGF0ZVZhbHVlKGUsdCl7dGhpcy5nZXRMVmlldyhlKVs4XS4kaW1wbGljaXQ9dH1yZXNldCgpe3RoaXMubmVlZHNJbmRleFVwZGF0ZT0hMSx0aGlzLm9wZXJhdGlvbnNDb3VudGVyPy5yZXNldCgpfXVwZGF0ZUluZGV4ZXMoKXtpZih0aGlzLm5lZWRzSW5kZXhVcGRhdGUpZm9yKGxl'@; put 'dCBlPTA7ZTx0aGlzLmxlbmd0aDtlKyspdGhpcy5nZXRMVmlldyhlKVs4XS4kaW5kZXg9ZX1nZXRMVmlldyhlKXtyZXR1cm4gZnVuY3Rpb24ga1FlKG4sZSl7cmV0dXJuIEtCKG4sZSl9KHRoaXMubENvbnRhaW5lcixlKX19ZnVuY3Rpb24geW8obil7Y29uc3QgZT1rKG51bGwpLHQ9b2goKTt0'@; put 'cnl7Y29uc3Qgcj1pdCgpLGk9clsxXSxvPXJbdF0sYT10KzEsbD1JaihyLGEpO2lmKHZvaWQgMD09PW8ubGl2ZUNvbGxlY3Rpb24pe2NvbnN0IGc9R3RlKGksYSk7by5saXZlQ29sbGVjdGlvbj1uZXcgTVFlKGwscixnKX1lbHNlIG8ubGl2ZUNvbGxlY3Rpb24ucmVzZXQoKTtjb25zdCB1PW8u'@; put 'bGl2ZUNvbGxlY3Rpb247aWYoZnVuY3Rpb24gd1FlKG4sZSx0KXtsZXQgcixpLG89MCxhPW4ubGVuZ3RoLTE7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IHU9ZS5sZW5ndGgtMTtmb3IoO288PWEmJm88PXU7KXtjb25zdCBnPW4uYXQobyksRT1lW29dLE89V3RlKG8sZyxvLEUsdCk7aWYoMCE9'@; put 'PU8pe088MCYmbi51cGRhdGVWYWx1ZShvLEUpLG8rKztjb250aW51ZX1jb25zdCBaPW4uYXQoYSksZWU9ZVt1XSx2ZT1XdGUoYSxaLHUsZWUsdCk7aWYoMCE9PXZlKXt2ZTwwJiZuLnVwZGF0ZVZhbHVlKGEsZWUpLGEtLSx1LS07Y29udGludWV9Y29uc3QgTWU9dChvLGcpLEhlPXQoYSxaKSxX'@; put 'ZT10KG8sRSk7aWYoT2JqZWN0LmlzKFdlLEhlKSl7Y29uc3QgYXQ9dCh1LGVlKTtPYmplY3QuaXMoYXQsTWUpPyhuLnN3YXAobyxhKSxuLnVwZGF0ZVZhbHVlKGEsZWUpLHUtLSxhLS0pOm4ubW92ZShhLG8pLG4udXBkYXRlVmFsdWUobyxFKSxvKys7Y29udGludWV9aWYocj8/PW5ldyBEOGUs'@; put 'aT8/PUk4ZShuLG8sYSx0KSxZdGUobixyLG8sV2UpKW4udXBkYXRlVmFsdWUobyxFKSxvKyssYSsrO2Vsc2UgaWYoaS5oYXMoV2UpKXIuc2V0KE1lLG4uZGV0YWNoKG8pKSxhLS07ZWxzZXtjb25zdCBhdD1uLmNyZWF0ZShvLGVbb10pO24uYXR0YWNoKG8sYXQpLG8rKyxhKyt9fWZvcig7bzw9'@; put 'dTspUjhlKG4scix0LG8sZVtvXSksbysrfWVsc2UgaWYobnVsbCE9ZSl7Y29uc3QgdT1lW1N5bWJvbC5pdGVyYXRvcl0oKTtsZXQgZz11Lm5leHQoKTtmb3IoOyFnLmRvbmUmJm88PWE7KXtjb25zdCBFPW4uYXQobyksTz1nLnZhbHVlLFo9V3RlKG8sRSxvLE8sdCk7aWYoMCE9PVopWjwwJiZu'@; put 'LnVwZGF0ZVZhbHVlKG8sTyksbysrLGc9dS5uZXh0KCk7ZWxzZXtyPz89bmV3IEQ4ZSxpPz89SThlKG4sbyxhLHQpO2NvbnN0IGVlPXQobyxPKTtpZihZdGUobixyLG8sZWUpKW4udXBkYXRlVmFsdWUobyxPKSxvKyssYSsrLGc9dS5uZXh0KCk7ZWxzZSBpZihpLmhhcyhlZSkpe2NvbnN0IHZl'@; put 'PXQobyxFKTtyLnNldCh2ZSxuLmRldGFjaChvKSksYS0tfWVsc2Ugbi5hdHRhY2gobyxuLmNyZWF0ZShvLE8pKSxvKyssYSsrLGc9dS5uZXh0KCl9fWZvcig7IWcuZG9uZTspUjhlKG4scix0LG4ubGVuZ3RoLGcudmFsdWUpLGc9dS5uZXh0KCl9Zm9yKDtvPD1hOyluLmRlc3Ryb3kobi5kZXRh'@; put 'Y2goYS0tKSk7cj8uZm9yRWFjaCh1PT57bi5kZXN0cm95KHUpfSl9KHUsbixvLnRyYWNrQnlGbiksdS51cGRhdGVJbmRleGVzKCksby5oYXNFbXB0eUJsb2NrKXtjb25zdCBnPUUyKCksRT0wPT09dS5sZW5ndGg7aWYob3UocixnLEUpKXtjb25zdCBPPXQrMixaPUlqKHIsTyk7aWYoRSl7Y29u'@; put 'c3QgZWU9R3RlKGksTyksdmU9bnVsbDtLOShaLCQ5KHIsZWUsdm9pZCAwLHtkZWh5ZHJhdGVkVmlldzp2ZX0pLDAsVTgoZWUsdmUpKX1lbHNlIGkuZmlyc3RVcGRhdGVQYXNzJiZmdW5jdGlvbiBPcihuKXtjb25zdCBlPW5bNl0/P1tdLHI9blszXVsxMV0saT1bXTtmb3IoY29uc3QgbyBvZiBl'@; put 'KXZvaWQgMCE9PW8uZGF0YS5kaT9pLnB1c2gobyk6TW4obyxyKTtuWzZdPWl9KFopLHNoKFosMCl9fX1maW5hbGx5e2soZSl9fWZ1bmN0aW9uIElqKG4sZSl7cmV0dXJuIG5bZV19ZnVuY3Rpb24gR3RlKG4sZSl7cmV0dXJuIFBzKG4sZSl9ZnVuY3Rpb24gcnQobixlLHQpe2NvbnN0IHI9aXQo'@; put 'KTtyZXR1cm4gb3UocixFMigpLGUpJiYoRnQoKSxiUih5MygpLHIsbixlLHJbMTFdLHQpKSxydH1mdW5jdGlvbiAkdGUobixlLHQscixpKXtyRShlLG4sdCxpPyJjbGFzcyI6InN0eWxlIixyKX1mdW5jdGlvbiBKKG4sZSx0LHIpe2NvbnN0IGk9aXQoKSxvPWlbMV0sYT1uKzI3LGw9by5maXJz'@; put 'dENyZWF0ZVBhc3M/c2EoYSxpLDIsZSxHOSxJZygpLHQscik6by5kYXRhW2FdO2lmKFI1KGwsaSxuLGUscXRlKSxDZihsKSl7Y29uc3QgdT1pWzFdO3RFKHUsaSxsKSxCayh1LGwsaSl9cmV0dXJuIG51bGwhPXImJlk5KGksbCksSn1mdW5jdGlvbiB0ZSgpe2NvbnN0IG49RnQoKSx0PW5FKHlp'@; put 'KCkpO3JldHVybiBuLmZpcnN0Q3JlYXRlUGFzcyYmQW8obix0KSxmMCh0KSYmY3QoKSxwOCgpLG51bGwhPXQuY2xhc3Nlc1dpdGhvdXRIb3N0JiZmdW5jdGlvbiBiUyhuKXtyZXR1cm4hISg4Jm4uZmxhZ3MpfSh0KSYmJHRlKG4sdCxpdCgpLHQuY2xhc3Nlc1dpdGhvdXRIb3N0LCEwKSxudWxs'@; put 'IT10LnN0eWxlc1dpdGhvdXRIb3N0JiZmdW5jdGlvbiBpUShuKXtyZXR1cm4hISgxNiZuLmZsYWdzKX0odCkmJiR0ZShuLHQsaXQoKSx0LnN0eWxlc1dpdGhvdXRIb3N0LCExKSx0ZX1mdW5jdGlvbiBJdChuLGUsdCxyKXtyZXR1cm4gSihuLGUsdCxyKSx0ZSgpLEl0fWZ1bmN0aW9uICRSKG4s'@; put 'ZSx0LHIpe2NvbnN0IGk9aXQoKSxvPWlbMV0sYT1uKzI3LGw9by5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24geXMobixlLHQscixpLG8pe2NvbnN0IGE9ZS5jb25zdHMsdT1ENShlLG4sdCxyLHBjKGEsaSkpO2lmKHUubWVyZ2VkQXR0cnM9UjkodS5tZXJnZWRBdHRycyx1LmF0dHJzKSxudWxs'@; put 'IT1vKXtjb25zdCBnPXBjKGEsbyk7dS5sb2NhbE5hbWVzPVtdO2ZvcihsZXQgRT0wO0U8Zy5sZW5ndGg7RSs9Mil1LmxvY2FsTmFtZXMucHVzaChnW0VdLC0xKX1yZXR1cm4gbnVsbCE9PXUuYXR0cnMmJk1kKHUsdS5hdHRycywhMSksbnVsbCE9PXUubWVyZ2VkQXR0cnMmJk1kKHUsdS5tZXJn'@; put 'ZWRBdHRycywhMCksbnVsbCE9PWUucXVlcmllcyYmZS5xdWVyaWVzLmVsZW1lbnRTdGFydChlLHUpLHV9KGEsbywyLGUsdCxyKTpvLmRhdGFbYV07cmV0dXJuIFI1KGwsaSxuLGUscXRlKSxudWxsIT1yJiZZOShpLGwpLCRSfWZ1bmN0aW9uIHFSKCl7cmV0dXJuIGYwKG5FKHlpKCkpKSYmY3Qo'@; put 'KSxwOCgpLHFSfWZ1bmN0aW9uIERqKG4sZSx0LHIpe3JldHVybiAkUihuLGUsdCxyKSxxUigpLERqfWxldCBxdGU9KG4sZSx0LHIsaSk9PihweSghMCksVVMoZVsxMV0scixJQSgpKSk7ZnVuY3Rpb24gbWwobixlLHQpe2NvbnN0IHI9aXQoKSxpPXJbMV0sbz1uKzI3LGE9aS5maXJzdENyZWF0'@; put 'ZVBhc3M/c2EobyxyLDgsIm5nLWNvbnRhaW5lciIsRzksSWcoKSxlLHQpOmkuZGF0YVtvXTtpZihSNShhLHIsbiwibmctY29udGFpbmVyIixYdGUpLENmKGEpKXtjb25zdCBsPXJbMV07dEUobCxyLGEpLEJrKGwsYSxyKX1yZXR1cm4gbnVsbCE9dCYmWTkocixhKSxtbH1mdW5jdGlvbiBybCgp'@; put 'e2NvbnN0IG49RnQoKSx0PW5FKHlpKCkpO3JldHVybiBuLmZpcnN0Q3JlYXRlUGFzcyYmQW8obix0KSxybH1mdW5jdGlvbiBhdShuLGUsdCl7cmV0dXJuIG1sKG4sZSx0KSxybCgpLGF1fWxldCBYdGU9KG4sZSx0LHIsaSk9PihweSghMCksJGsoZVsxMV0sIiIpKTtmdW5jdGlvbiB3bigpe3Jl'@; put 'dHVybiBpdCgpfWZ1bmN0aW9uIE81KG4sZSx0KXtjb25zdCByPWl0KCk7cmV0dXJuIG91KHIsRTIoKSxlKSYmKEZ0KCksajgoeTMoKSxyLG4sZSxyWzExXSx0KSksTzV9ZnVuY3Rpb24gUXRlKG4sZSx0KXtjb25zdCByPWl0KCk7aWYob3UocixFMigpLGUpKXtjb25zdCBvPUZ0KCksYT15Mygp'@; put 'O2o4KGEscixuLGUsVUIoeEEoby5kYXRhKSxhLHIpLHQpfXJldHVybiBRdGV9Y29uc3QgTGo9dm9pZCAwO3ZhciBMUWU9WyJlbiIsW1siYSIsInAiXSxbIkFNIiwiUE0iXV0sW1siQU0iLCJQTSJdXSxbWyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sWyJTdW4iLCJNb24iLCJUdWUiLCJX'@; put 'ZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sWyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdXSxMaixbWyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJK'@; put 'IiwiQSIsIlMiLCJPIiwiTiIsIkQiXSxbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0Iiwi'@; put 'U2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXV0sTGosW1siQiIsIkEiXSxbIkJDIiwiQUQiXSxbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdXSwwLFs2LDBdLFsiTS9kL3l5IiwiTU1NIGQsIHkiLCJNTU1NIGQsIHkiLCJFRUVFLCBNTU1NIGQsIHkiXSxb'@; put 'Img6bW0gYSIsImg6bW06c3MgYSIsImg6bW06c3MgYSB6IiwiaDptbTpzcyBhIHp6enoiXSxbInsxfSwgezB9IixMaiwiezF9ICdhdCcgezB9IixMal0sWyIuIiwiLCIsIjsiLCIlIiwiKyIsIi0iLCJFIiwiXHhkNyIsIlx1MjAzMCIsIlx1MjIxZSIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIs'@; put 'IiMsIyMwJSIsIlx4YTQjLCMjMC4wMCIsIiNFMCJdLCJVU0QiLCIkIiwiVVMgRG9sbGFyIix7fSwibHRyIixmdW5jdGlvbiBEUWUobil7Y29uc3QgZT1NYXRoLmZsb29yKE1hdGguYWJzKG4pKSx0PW4udG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9'@; put 'PT1lJiYwPT09dD8xOjV9XTtsZXQgeUU9e307ZnVuY3Rpb24gTDIobil7Y29uc3QgZT1mdW5jdGlvbiBOUWUobil7cmV0dXJuIG4udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKX0obik7bGV0IHQ9RjhlKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgcj1lLnNwbGl0KCItIilbMF07aWYo'@; put 'dD1GOGUociksdClyZXR1cm4gdDtpZigiZW4iPT09cilyZXR1cm4gTFFlO3Rocm93IG5ldyBXbig3MDEsITEpfWZ1bmN0aW9uIEY4ZShuKXtpZighKG4gaW4geUUpKXtjb25zdCBlPUlsLm5nJiZJbC5uZy5jb21tb24mJklsLm5nLmNvbW1vbi5sb2NhbGVzJiZJbC5uZy5jb21tb24ubG9jYWxl'@; put 'c1tuXTtyZXR1cm4gdm9pZCAwIT09ZSYmKHlFW25dPWUpLGV9cmV0dXJuIHlFW25dfXZhciBHdT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLkxvY2FsZUlkPTBdPSJMb2NhbGVJZCIsbltuLkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNGb3JtYXQiLG5bbi5EYXlQZXJpb2RzU3RhbmRh'@; put 'bG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLG5bbi5EYXlzRm9ybWF0PTNdPSJEYXlzRm9ybWF0IixuW24uRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIixuW24uTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLG5bbi5Nb250aHNTdGFuZGFsb25lPTZdPSJNb250'@; put 'aHNTdGFuZGFsb25lIixuW24uRXJhcz03XT0iRXJhcyIsbltuLkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsbltuLldlZWtlbmRSYW5nZT05XT0iV2Vla2VuZFJhbmdlIixuW24uRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQiLG5bbi5UaW1lRm9ybWF0PTExXT0iVGltZUZv'@; put 'cm1hdCIsbltuLkRhdGVUaW1lRm9ybWF0PTEyXT0iRGF0ZVRpbWVGb3JtYXQiLG5bbi5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsbltuLk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIixuW24uQ3VycmVuY3lDb2RlPTE1XT0iQ3VycmVuY3lDb2RlIixuW24uQ3Vy'@; put 'cmVuY3lTeW1ib2w9MTZdPSJDdXJyZW5jeVN5bWJvbCIsbltuLkN1cnJlbmN5TmFtZT0xN109IkN1cnJlbmN5TmFtZSIsbltuLkN1cnJlbmNpZXM9MThdPSJDdXJyZW5jaWVzIixuW24uRGlyZWN0aW9uYWxpdHk9MTldPSJEaXJlY3Rpb25hbGl0eSIsbltuLlBsdXJhbENhc2U9MjBdPSJQbHVy'@; put 'YWxDYXNlIixuW24uRXh0cmFEYXRhPTIxXT0iRXh0cmFEYXRhIixufShHdXx8e30pO2NvbnN0IE9qPSJlbi1VUyI7bGV0IFA4ZT1PajtmdW5jdGlvbiB3dChuLGUsdCl7Y29uc3Qgcj1pdCgpLGk9RnQoKSxvPXlpKCk7cmV0dXJuIHJuZShpLHIsclsxMV0sbyxuLGUsdCksd3R9ZnVuY3Rpb24g'@; put 'bm5lKG4sZSl7Y29uc3QgdD15aSgpLHI9aXQoKSxpPUZ0KCk7cmV0dXJuIHJuZShpLHIsVUIoeEEoaS5kYXRhKSx0LHIpLHQsbixlKSxubmV9ZnVuY3Rpb24gcm5lKG4sZSx0LHIsaSxvLGEpe2xldCBsPSEwLHU9bnVsbDtpZigoMyZyLnR5cGV8fGEpJiYodT8/PVZSKHIsZSxvKSxmdW5jdGlv'@; put 'biBpNmUobixlLHQscixpLG8sYSxsKXtjb25zdCB1PUNmKG4pO2xldCBnPSExLEU9bnVsbDtpZighciYmdSYmKEU9ZnVuY3Rpb24gZHFlKG4sZSx0LHIpe2NvbnN0IGk9bi5jbGVhbnVwO2lmKG51bGwhPWkpZm9yKGxldCBvPTA7bzxpLmxlbmd0aC0xO28rPTIpe2NvbnN0IGE9aVtvXTtpZihh'@; put 'PT09dCYmaVtvKzFdPT09cil7Y29uc3QgbD1lWzddLHU9aVtvKzJdO3JldHVybiBsJiZsLmxlbmd0aD51P2xbdV06bnVsbH0ic3RyaW5nIj09dHlwZW9mIGEmJihvKz0yKX1yZXR1cm4gbnVsbH0oZSx0LG8sbi5pbmRleCkpLG51bGwhPT1FKShFLl9fbmdMYXN0TGlzdGVuZXJGbl9ffHxFKS5f'@; put 'X25nTmV4dExpc3RlbmVyRm5fXz1hLEUuX19uZ0xhc3RMaXN0ZW5lckZuX189YSxnPSEwO2Vsc2V7Y29uc3QgTz1ZaShuLHQpLFo9cj9yKE8pOk8sZWU9aS5saXN0ZW4oWixvLGwpOyhmdW5jdGlvbiB1cWUobil7cmV0dXJuIG4uc3RhcnRzV2l0aCgiYW5pbWF0aW9uIil8fG4uc3RhcnRzV2l0'@; put 'aCgidHJhbnNpdGlvbiIpfSkobyl8fG82ZShyP01lPT5yKERyKE1lW24uaW5kZXhdKSk6bi5pbmRleCxlLHQsbyxsLGVlLCExKX1yZXR1cm4gZ30ocixuLGUsYSx0LGksbyx1KSYmKGw9ITEpKSxsKXtjb25zdCBnPXIub3V0cHV0cz8uW2ldLEU9ci5ob3N0RGlyZWN0aXZlT3V0cHV0cz8uW2ld'@; put 'O2lmKEUmJkUubGVuZ3RoKWZvcihsZXQgTz0wO088RS5sZW5ndGg7Tys9Mil7Y29uc3QgWj1FW09dLGVlPUVbTysxXTt1Pz89VlIocixlLG8pLGRqKHIsZSxaLGVlLGksdSl9aWYoZyYmZy5sZW5ndGgpZm9yKGNvbnN0IE8gb2YgZyl1Pz89VlIocixlLG8pLGRqKHIsZSxPLGksaSx1KX19ZnVu'@; put 'Y3Rpb24gVGUobj0xKXtyZXR1cm4gZnVuY3Rpb24gdlgobil7cmV0dXJuKHBhLmxGcmFtZS5jb250ZXh0TFZpZXc9ZnVuY3Rpb24gb2QobixlKXtmb3IoO24+MDspZT1lWzE0XSxuLS07cmV0dXJuIGV9KG4scGEubEZyYW1lLmNvbnRleHRMVmlldykpWzhdfShuKX1mdW5jdGlvbiBDSmUobixl'@; put 'KXtsZXQgdD1udWxsO2NvbnN0IHI9ZnVuY3Rpb24gdGVlKG4pe2NvbnN0IGU9bi5hdHRycztpZihudWxsIT1lKXtjb25zdCB0PWUuaW5kZXhPZig1KTtpZighKDEmdCkpcmV0dXJuIGVbdCsxXX1yZXR1cm4gbnVsbH0obik7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2NvbnN0IG89ZVtp'@; put 'XTtpZigiKiIhPT1vKXtpZihudWxsPT09cj9mQihuLG8sITApOmllZShyLG8pKXJldHVybiBpfWVsc2UgdD1pfXJldHVybiB0fWZ1bmN0aW9uIGZvKG4pe2NvbnN0IGU9aXQoKVsxNV1bNV07aWYoIWUucHJvamVjdGlvbil7Y29uc3Qgcj1lLnByb2plY3Rpb249ZnVuY3Rpb24gczAobixlKXtj'@; put 'b25zdCB0PVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspdC5wdXNoKGUpO3JldHVybiB0fShuP24ubGVuZ3RoOjEsbnVsbCksaT1yLnNsaWNlKCk7bGV0IG89ZS5jaGlsZDtmb3IoO251bGwhPT1vOyl7aWYoMTI4IT09by50eXBlKXtjb25zdCBhPW4/Q0plKG8sbik6MDtudWxsIT09YSYmKGlbYV0/'@; put 'aVthXS5wcm9qZWN0aW9uTmV4dD1vOnJbYV09byxpW2FdPW8pfW89by5uZXh0fX19ZnVuY3Rpb24gV3IobixlPTAsdCxyLGksbyl7Y29uc3QgYT1pdCgpLGw9RnQoKSx1PXI/bisxOm51bGw7bnVsbCE9PXUmJlF5KGEsbCx1LHIsaSxvLG51bGwsdCk7Y29uc3QgZz1ENShsLDI3K24sMTYsbnVs'@; put 'bCx0fHxudWxsKTtudWxsPT09Zy5wcm9qZWN0aW9uJiYoZy5wcm9qZWN0aW9uPWUpLERoKCk7Y29uc3QgTz0hYVs2XXx8dnAoKTtudWxsPT09YVsxNV1bNV0ucHJvamVjdGlvbltnLnByb2plY3Rpb25dJiZudWxsIT09dT9mdW5jdGlvbiBTSmUobixlLHQpe2NvbnN0IHI9MjcrdCxpPWUuZGF0'@; put 'YVtyXSxvPW5bcl07SzkobywkOShuLGksdm9pZCAwLHtkZWh5ZHJhdGVkVmlldzpudWxsfSksMCxVOChpLG51bGwpKX0oYSxsLHUpOk8mJiFJUyhnKSYmZnVuY3Rpb24gSWVlKG4sZSx0KXtOQihlWzExXSwwLGUsdCxnUihuLHQsZSksTEIodC5wYXJlbnR8fGVbNV0sdCxlKSl9KGwsYSxnKX1m'@; put 'dW5jdGlvbiBGYShuLGUsdCxyKXshZnVuY3Rpb24gXzZlKG4sZSx0LHIpe2NvbnN0IGk9RnQoKTtpZihpLmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3Qgbz15aSgpO3k2ZShpLG5ldyBwNmUoZSx0LHIpLG8uaW5kZXgpLGZ1bmN0aW9uIEJxZShuLGUpe2NvbnN0IHQ9bi5jb250ZW50UXVlcmllc3x8'@; put 'KG4uY29udGVudFF1ZXJpZXM9W10pO2UhPT0odC5sZW5ndGg/dFt0Lmxlbmd0aC0xXTotMSkmJnQucHVzaChuLnF1ZXJpZXMubGVuZ3RoLTEsZSl9KGksbiksISgyJn50KSYmKGkuc3RhdGljQ29udGVudFF1ZXJpZXM9ITApfXJldHVybiBtNmUoaSxpdCgpLHQpfShuLGUsdCxyKX1mdW5jdGlv'@; put 'biBXbyhuLGUsdCl7IWZ1bmN0aW9uIHY2ZShuLGUsdCl7Y29uc3Qgcj1GdCgpO3JldHVybiByLmZpcnN0Q3JlYXRlUGFzcyYmKHk2ZShyLG5ldyBwNmUobixlLHQpLC0xKSwhKDImfmUpJiYoci5zdGF0aWNWaWV3UXVlcmllcz0hMCkpLG02ZShyLGl0KCksZSl9KG4sZSx0KX1mdW5jdGlvbiBj'@; put 'aShuKXtjb25zdCBlPWl0KCksdD1GdCgpLHI9QUEoKTtyUyhyKzEpO2NvbnN0IGk9X3RlKHQscik7aWYobi5kaXJ0eSYmZnVuY3Rpb24gZ2wobil7cmV0dXJuISg0Jn5uWzJdKX0oZSk9PT0hKDImfmkubWV0YWRhdGEuZmxhZ3MpKXtpZihudWxsPT09aS5tYXRjaGVzKW4ucmVzZXQoW10pO2Vs'@; put 'c2V7Y29uc3Qgbz1iNmUoZSxyKTtuLnJlc2V0KG8sVUgpLG4ubm90aWZ5T25DaGFuZ2VzKCl9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gdWkoKXtyZXR1cm4gZnVuY3Rpb24gdnRlKG4sZSl7cmV0dXJuIG5bMThdLnF1ZXJpZXNbZV0ucXVlcnlMaXN0fShpdCgpLEFBKCkpfWZ1bmN0aW9u'@; put 'IG9vKG4pe3JldHVybiBhYShmdW5jdGlvbiBlUygpe3JldHVybiBwYS5sRnJhbWUuY29udGV4dExWaWV3fSgpLDI3K24pfWZ1bmN0aW9uIFZqKG4sZSl7cmV0dXJuIG48PDE3fGU8PDJ9ZnVuY3Rpb24gYWIobil7cmV0dXJuIG4+PjE3JjMyNzY3fWZ1bmN0aW9uIGluZShuKXtyZXR1cm4gMnxu'@; put 'fWZ1bmN0aW9uIGJFKG4pe3JldHVybigxMzEwNjgmbik+PjJ9ZnVuY3Rpb24gb25lKG4sZSl7cmV0dXJuLTEzMTA2OSZufGU8PDJ9ZnVuY3Rpb24gYW5lKG4pe3JldHVybiAxfG59ZnVuY3Rpb24gcjdlKG4sZSx0LHIpe2NvbnN0IGk9blt0KzFdLG89bnVsbD09PWU7bGV0IGE9cj9hYihpKTpi'@; put 'RShpKSxsPSExO2Zvcig7MCE9PWEmJighMT09PWx8fG8pOyl7Y29uc3QgZz1uW2ErMV07REplKG5bYV0sZSkmJihsPSEwLG5bYSsxXT1yP2FuZShnKTppbmUoZykpLGE9cj9hYihnKTpiRShnKX1sJiYoblt0KzFdPXI/aW5lKGkpOmFuZShpKSl9ZnVuY3Rpb24gREplKG4sZSl7cmV0dXJuIG51'@; put 'bGw9PT1ufHxudWxsPT1lfHwoQXJyYXkuaXNBcnJheShuKT9uWzFdOm4pPT09ZXx8ISghQXJyYXkuaXNBcnJheShuKXx8InN0cmluZyIhPXR5cGVvZiBlKSYmdzIobixlKT49MH1jb25zdCBXMT17dGV4dEVuZDowLGtleTowLGtleUVuZDowLHZhbHVlOjAsdmFsdWVFbmQ6MH07ZnVuY3Rpb24g'@; put 'aTdlKG4pe3JldHVybiBuLnN1YnN0cmluZyhXMS5rZXksVzEua2V5RW5kKX1mdW5jdGlvbiBvN2UobixlKXtjb25zdCB0PVcxLnRleHRFbmQ7cmV0dXJuIHQ9PT1lPy0xOihlPVcxLmtleUVuZD1mdW5jdGlvbiBGSmUobixlLHQpe2Zvcig7ZTx0JiZuLmNoYXJDb2RlQXQoZSk+MzI7KWUrKzty'@; put 'ZXR1cm4gZX0obixXMS5rZXk9ZSx0KSx3RShuLGUsdCkpfWZ1bmN0aW9uIHdFKG4sZSx0KXtmb3IoO2U8dCYmbi5jaGFyQ29kZUF0KGUpPD0zMjspZSsrO3JldHVybiBlfWZ1bmN0aW9uIE8yKG4sZSx0KXtyZXR1cm4gdTdlKG4sZSx0LCExKSxPMn1mdW5jdGlvbiB3cihuLGUpe3JldHVybiB1'@; put 'N2UobixlLG51bGwsITApLHdyfWZ1bmN0aW9uIEJqKG4peyFmdW5jdGlvbiBkN2UobixlLHQscil7Y29uc3QgaT1GdCgpLG89V20oMik7aS5maXJzdFVwZGF0ZVBhc3MmJmY3ZShpLG51bGwsbyxyKTtjb25zdCBhPWl0KCk7aWYodCE9PU5jJiZvdShhLG8sdCkpe2NvbnN0IGw9aS5kYXRhW29o'@; put 'KCldO2lmKHY3ZShsLHIpJiYhaDdlKGksbykpe2xldCB1PXI/bC5jbGFzc2VzV2l0aG91dEhvc3Q6bC5zdHlsZXNXaXRob3V0SG9zdDtudWxsIT09dSYmKHQ9TDAodSx0fHwiIikpLCR0ZShpLGwsYSx0LHIpfWVsc2UhZnVuY3Rpb24gJEplKG4sZSx0LHIsaSxvLGEsbCl7aT09PU5jJiYoaT1K'@; put 'YSk7bGV0IHU9MCxnPTAsRT0wPGkubGVuZ3RoP2lbMF06bnVsbCxPPTA8by5sZW5ndGg/b1swXTpudWxsO2Zvcig7bnVsbCE9PUV8fG51bGwhPT1POyl7Y29uc3QgWj11PGkubGVuZ3RoP2lbdSsxXTp2b2lkIDAsZWU9ZzxvLmxlbmd0aD9vW2crMV06dm9pZCAwO2xldCBNZSx2ZT1udWxsO0U9'@; put 'PT1PPyh1Kz0yLGcrPTIsWiE9PWVlJiYodmU9TyxNZT1lZSkpOm51bGw9PT1PfHxudWxsIT09RSYmRTxPPyh1Kz0yLHZlPUUpOihnKz0yLHZlPU8sTWU9ZWUpLG51bGwhPT12ZSYmZzdlKG4sZSx0LHIsdmUsTWUsYSxsKSxFPXU8aS5sZW5ndGg/aVt1XTpudWxsLE89ZzxvLmxlbmd0aD9vW2dd'@; put 'Om51bGx9fShpLGwsYSxhWzExXSxhW28rMV0sYVtvKzFdPWZ1bmN0aW9uIFpKZShuLGUsdCl7aWYobnVsbD09dHx8IiI9PT10KXJldHVybiBKYTtjb25zdCByPVtdLGk9azIodCk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKyluKHIsaVtvXSwhMCk7ZWxz'@; put 'ZSBpZigib2JqZWN0Ij09dHlwZW9mIGkpZm9yKGNvbnN0IG8gaW4gaSlpLmhhc093blByb3BlcnR5KG8pJiZuKHIsbyxpW29dKTtlbHNlInN0cmluZyI9PXR5cGVvZiBpJiZlKHIsaSk7cmV0dXJuIHJ9KG4sZSx0KSxyLG8pfX0oR0plLGpKZSxuLCEwKX1mdW5jdGlvbiBqSmUobixlKXtmb3Io'@; put 'bGV0IHQ9ZnVuY3Rpb24gT0plKG4pe3JldHVybiBmdW5jdGlvbiBzN2Uobil7VzEua2V5PTAsVzEua2V5RW5kPTAsVzEudmFsdWU9MCxXMS52YWx1ZUVuZD0wLFcxLnRleHRFbmQ9bi5sZW5ndGh9KG4pLG83ZShuLHdFKG4sMCxXMS50ZXh0RW5kKSl9KGUpO3Q+PTA7dD1vN2UoZSx0KSlqdShu'@; put 'LGk3ZShlKSwhMCl9ZnVuY3Rpb24gdTdlKG4sZSx0LHIpe2NvbnN0IGk9aXQoKSxvPUZ0KCksYT1XbSgyKTtvLmZpcnN0VXBkYXRlUGFzcyYmZjdlKG8sbixhLHIpLGUhPT1OYyYmb3UoaSxhLGUpJiZnN2UobyxvLmRhdGFbb2goKV0saSxpWzExXSxuLGlbYSsxXT1mdW5jdGlvbiBxSmUobixl'@; put 'KXtyZXR1cm4gbnVsbD09bnx8IiI9PT1ufHwoInN0cmluZyI9PXR5cGVvZiBlP24rPWU6Im9iamVjdCI9PXR5cGVvZiBuJiYobj1ScyhrMihuKSkpKSxufShlLHQpLHIsYSl9ZnVuY3Rpb24gaDdlKG4sZSl7cmV0dXJuIGU+PW4uZXhwYW5kb1N0YXJ0SW5kZXh9ZnVuY3Rpb24gZjdlKG4sZSx0'@; put 'LHIpe2NvbnN0IGk9bi5kYXRhO2lmKG51bGw9PT1pW3QrMV0pe2NvbnN0IG89aVtvaCgpXSxhPWg3ZShuLHQpO3Y3ZShvLHIpJiZudWxsPT09ZSYmIWEmJihlPSExKSxlPWZ1bmN0aW9uIFVKZShuLGUsdCxyKXtjb25zdCBpPXhBKG4pO2xldCBvPXI/ZS5yZXNpZHVhbENsYXNzZXM6ZS5yZXNp'@; put 'ZHVhbFN0eWxlcztpZihudWxsPT09aSkwPT09KHI/ZS5jbGFzc0JpbmRpbmdzOmUuc3R5bGVCaW5kaW5ncykmJih0PWVJKHQ9c25lKG51bGwsbixlLHQsciksZS5hdHRycyxyKSxvPW51bGwpO2Vsc2V7Y29uc3QgYT1lLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09YXx8blthXSE9PWkp'@; put 'aWYodD1zbmUoaSxuLGUsdCxyKSxudWxsPT09byl7bGV0IHU9ZnVuY3Rpb24gekplKG4sZSx0KXtjb25zdCByPXQ/ZS5jbGFzc0JpbmRpbmdzOmUuc3R5bGVCaW5kaW5ncztpZigwIT09YkUocikpcmV0dXJuIG5bYWIocildfShuLGUscik7dm9pZCAwIT09dSYmQXJyYXkuaXNBcnJheSh1KSYm'@; put 'KHU9c25lKG51bGwsbixlLHVbMV0sciksdT1lSSh1LGUuYXR0cnMsciksZnVuY3Rpb24gV0plKG4sZSx0LHIpe25bYWIodD9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzKV09cn0obixlLHIsdSkpfWVsc2Ugbz1mdW5jdGlvbiBZSmUobixlLHQpe2xldCByO2NvbnN0IGk9ZS5kaXJl'@; put 'Y3RpdmVFbmQ7Zm9yKGxldCBvPTErZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDtvPGk7bysrKXI9ZUkocixuW29dLmhvc3RBdHRycyx0KTtyZXR1cm4gZUkocixlLmF0dHJzLHQpfShuLGUscil9cmV0dXJuIHZvaWQgMCE9PW8mJihyP2UucmVzaWR1YWxDbGFzc2VzPW86ZS5yZXNpZHVhbFN0eWxl'@; put 'cz1vKSx0fShpLG8sZSxyKSxmdW5jdGlvbiBSSmUobixlLHQscixpLG8pe2xldCBhPW8/ZS5jbGFzc0JpbmRpbmdzOmUuc3R5bGVCaW5kaW5ncyxsPWFiKGEpLHU9YkUoYSk7bltyXT10O2xldCBFLGc9ITE7aWYoQXJyYXkuaXNBcnJheSh0KT8oRT10WzFdLChudWxsPT09RXx8dzIodCxFKT4w'@; put 'KSYmKGc9ITApKTpFPXQsaSlpZigwIT09dSl7Y29uc3QgWj1hYihuW2wrMV0pO25bcisxXT1WaihaLGwpLDAhPT1aJiYobltaKzFdPW9uZShuW1orMV0scikpLG5bbCsxXT1mdW5jdGlvbiBBSmUobixlKXtyZXR1cm4gMTMxMDcxJm58ZTw8MTd9KG5bbCsxXSxyKX1lbHNlIG5bcisxXT1Waihs'@; put 'LDApLDAhPT1sJiYobltsKzFdPW9uZShuW2wrMV0scikpLGw9cjtlbHNlIG5bcisxXT1Waih1LDApLDA9PT1sP2w9cjpuW3UrMV09b25lKG5bdSsxXSxyKSx1PXI7ZyYmKG5bcisxXT1pbmUobltyKzFdKSkscjdlKG4sRSxyLCEwKSxyN2UobixFLHIsITEpLGZ1bmN0aW9uIElKZShuLGUsdCxy'@; put 'LGkpe2NvbnN0IG89aT9uLnJlc2lkdWFsQ2xhc3NlczpuLnJlc2lkdWFsU3R5bGVzO251bGwhPW8mJiJzdHJpbmciPT10eXBlb2YgZSYmdzIobyxlKT49MCYmKHRbcisxXT1hbmUodFtyKzFdKSl9KGUsRSxuLHIsbyksYT1WaihsLHUpLG8/ZS5jbGFzc0JpbmRpbmdzPWE6ZS5zdHlsZUJpbmRp'@; put 'bmdzPWF9KGksbyxlLHQsYSxyKX19ZnVuY3Rpb24gc25lKG4sZSx0LHIsaSl7bGV0IG89bnVsbDtjb25zdCBhPXQuZGlyZWN0aXZlRW5kO2xldCBsPXQuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7Zm9yKC0xPT09bD9sPXQuZGlyZWN0aXZlU3RhcnQ6bCsrO2w8YSYmKG89ZVtsXSxyPWVJKHIsby5o'@; put 'b3N0QXR0cnMsaSksbyE9PW4pOylsKys7cmV0dXJuIG51bGwhPT1uJiYodC5kaXJlY3RpdmVTdHlsaW5nTGFzdD1sKSxyfWZ1bmN0aW9uIGVJKG4sZSx0KXtjb25zdCByPXQ/MToyO2xldCBpPS0xO2lmKG51bGwhPT1lKWZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtjb25zdCBhPWVbb107'@; put 'Im51bWJlciI9PXR5cGVvZiBhP2k9YTppPT09ciYmKEFycmF5LmlzQXJyYXkobil8fChuPXZvaWQgMD09PW4/W106WyIiLG5dKSxqdShuLGEsISF0fHxlWysrb10pKX1yZXR1cm4gdm9pZCAwPT09bj9udWxsOm59ZnVuY3Rpb24gR0plKG4sZSx0KXtjb25zdCByPVN0cmluZyhlKTsiIiE9PXIm'@; put 'JiFyLmluY2x1ZGVzKCIgIikmJmp1KG4scix0KX1mdW5jdGlvbiBnN2UobixlLHQscixpLG8sYSxsKXtpZighKDMmZS50eXBlKSlyZXR1cm47Y29uc3QgdT1uLmRhdGEsZz11W2wrMV0sRT1mdW5jdGlvbiBrSmUobil7cmV0dXJuISgxJn5uKX0oZyk/bTdlKHUsZSx0LGksYkUoZyksYSk6dm9p'@; put 'ZCAwO2pqKEUpfHwoamoobyl8fGZ1bmN0aW9uIHhKZShuKXtyZXR1cm4hKDImfm4pfShnKSYmKG89bTdlKHUsbnVsbCx0LGksbCxhKSksZnVuY3Rpb24gTGVlKG4sZSx0LHIsaSl7aWYoZSlpP24uYWRkQ2xhc3ModCxyKTpuLnJlbW92ZUNsYXNzKHQscik7ZWxzZXtsZXQgbz0tMT09PXIuaW5k'@; put 'ZXhPZigiLSIpP3ZvaWQgMDpBNS5EYXNoQ2FzZTtudWxsPT1pP24ucmVtb3ZlU3R5bGUodCxyLG8pOigic3RyaW5nIj09dHlwZW9mIGkmJmkuZW5kc1dpdGgoIiFpbXBvcnRhbnQiKSYmKGk9aS5zbGljZSgwLC0xMCksb3w9QTUuSW1wb3J0YW50KSxuLnNldFN0eWxlKHQscixpLG8pKX19KHIs'@; put 'YSx4byhvaCgpLHQpLGksbykpfWZ1bmN0aW9uIG03ZShuLGUsdCxyLGksbyl7Y29uc3QgYT1udWxsPT09ZTtsZXQgbDtmb3IoO2k+MDspe2NvbnN0IHU9bltpXSxnPUFycmF5LmlzQXJyYXkodSksRT1nP3VbMV06dSxPPW51bGw9PT1FO2xldCBaPXRbaSsxXTtaPT09TmMmJihaPU8/SmE6dm9p'@; put 'ZCAwKTtsZXQgZWU9Tz9CZChaLHIpOkU9PT1yP1o6dm9pZCAwO2lmKGcmJiFqaihlZSkmJihlZT1CZCh1LHIpKSxqaihlZSkmJihsPWVlLGEpKXJldHVybiBsO2NvbnN0IHZlPW5baSsxXTtpPWE/YWIodmUpOmJFKHZlKX1pZihudWxsIT09ZSl7bGV0IHU9bz9lLnJlc2lkdWFsQ2xhc3Nlczpl'@; put 'LnJlc2lkdWFsU3R5bGVzO251bGwhPXUmJihsPUJkKHUscikpfXJldHVybiBsfWZ1bmN0aW9uIGpqKG4pe3JldHVybiB2b2lkIDAhPT1ufWZ1bmN0aW9uIHY3ZShuLGUpe3JldHVybiEhKG4uZmxhZ3MmKGU/ODoxNikpfWZ1bmN0aW9uIFNlKG4sZT0iIil7Y29uc3QgdD1pdCgpLHI9RnQoKSxp'@; put 'PW4rMjcsbz1yLmZpcnN0Q3JlYXRlUGFzcz9ENShyLGksMSxlLG51bGwpOnIuZGF0YVtpXSxhPV83ZShyLHQsbyxlLG4pO3RbaV09YSxvUygpJiZ2UihyLHQsYSxvKSxXcyhvLCExKX1sZXQgXzdlPShuLGUsdCxyLGkpPT4ocHkoITApLGZ1bmN0aW9uIEdrKG4sZSl7cmV0dXJuIG4uY3JlYXRl'@; put 'VGV4dChlKX0oZVsxMV0scikpO2Z1bmN0aW9uIGI3ZShuLGUsdCxyPSIiKXtyZXR1cm4gb3UobixFMigpLHQpP2UraWEodCkrcjpOY31mdW5jdGlvbiBwcihuKXtyZXR1cm4gU3IoIiIsbikscHJ9ZnVuY3Rpb24gU3IobixlLHQpe2NvbnN0IHI9aXQoKSxpPWI3ZShyLG4sZSx0KTtyZXR1cm4g'@; put 'aSE9PU5jJiYkOChyLG9oKCksaSksU3J9ZnVuY3Rpb24gTmgobixlLHQscixpKXtjb25zdCBvPWl0KCksYT1mdW5jdGlvbiB3N2UobixlLHQscixpLG89IiIpe2NvbnN0IGw9ejAobix6bSgpLHQsaSk7cmV0dXJuIFdtKDIpLGw/ZStpYSh0KStyK2lhKGkpK286TmN9KG8sbixlLHQscixpKTty'@; put 'ZXR1cm4gYSE9PU5jJiYkOChvLG9oKCksYSksTmh9ZnVuY3Rpb24gZTQobixlLHQscixpLG8sYSl7Y29uc3QgbD1pdCgpLHU9ZnVuY3Rpb24gQzdlKG4sZSx0LHIsaSxvLGEsbD0iIil7Y29uc3QgZz11aihuLHptKCksdCxpLGEpO3JldHVybiBXbSgzKSxnP2UraWEodCkrcitpYShpKStvK2lh'@; put 'KGEpK2w6TmN9KGwsbixlLHQscixpLG8sYSk7cmV0dXJuIHUhPT1OYyYmJDgobCxvaCgpLHUpLGU0fWZ1bmN0aW9uIFVqKG4sZSx0LHIsaSxvLGEsbCx1KXtjb25zdCBnPWl0KCksRT1mdW5jdGlvbiBTN2UobixlLHQscixpLG8sYSxsLHUsZz0iIil7Y29uc3QgTz1VZyhuLHptKCksdCxpLGEs'@; put 'dSk7cmV0dXJuIFdtKDQpLE8/ZStpYSh0KStyK2lhKGkpK28raWEoYSkrbCtpYSh1KStnOk5jfShnLG4sZSx0LHIsaSxvLGEsbCx1KTtyZXR1cm4gRSE9PU5jJiYkOChnLG9oKCksRSksVWp9ZnVuY3Rpb24gJDgobixlLHQpe2NvbnN0IHI9eG8oZSxuKTshZnVuY3Rpb24gcVYobixlLHQpe24u'@; put 'c2V0VmFsdWUoZSx0KX0oblsxMV0scix0KX1mdW5jdGlvbiBkaShuLGUsdCl7dEgoZSkmJihlPWUoKSk7Y29uc3Qgcj1pdCgpO3JldHVybiBvdShyLEUyKCksZSkmJihGdCgpLGJSKHkzKCkscixuLGUsclsxMV0sdCkpLGRpfWZ1bmN0aW9uIGZpKG4sZSl7Y29uc3QgdD10SChuKTtyZXR1cm4g'@; put 'dCYmbi5zZXQoZSksdH1mdW5jdGlvbiBoaShuLGUpe2NvbnN0IHQ9aXQoKSxyPUZ0KCksaT15aSgpO3JldHVybiBybmUocix0LHRbMTFdLGksbixlKSxoaX1mdW5jdGlvbiB6aihuKXtyZXR1cm4gb3UoaXQoKSxFMigpLG4pP2lhKG4pOk5jfWZ1bmN0aW9uIGxuZShuLGUsdCxyLGkpe2lmKG49'@; put 'ZmEobiksQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKylsbmUobltvXSxlLHQscixpKTtlbHNle2NvbnN0IG89RnQoKSxhPWl0KCksbD15aSgpO2xldCB1PWkxKG4pP246ZmEobi5wcm92aWRlKTtjb25zdCBnPWhwKG4pLEU9MTA0ODU3NSZsLnByb3ZpZGVySW5k'@; put 'ZXhlcyxPPWwuZGlyZWN0aXZlU3RhcnQsWj1sLnByb3ZpZGVySW5kZXhlcz4+MjA7aWYoaTEobil8fCFuLm11bHRpKXtjb25zdCBlZT1uZXcgX3koZyxpLHplLG51bGwpLHZlPXVuZSh1LGUsaT9FOkUrWixPKTstMT09PXZlPyhuayhlayhsLGEpLG8sdSksY25lKG8sbixlLmxlbmd0aCksZS5w'@; put 'dXNoKHUpLGwuZGlyZWN0aXZlU3RhcnQrKyxsLmRpcmVjdGl2ZUVuZCsrLGkmJihsLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3NiksdC5wdXNoKGVlKSxhLnB1c2goZWUpKToodFt2ZV09ZWUsYVt2ZV09ZWUpfWVsc2V7Y29uc3QgZWU9dW5lKHUsZSxFK1osTyksdmU9dW5lKHUsZSxFLEUrWiks'@; put 'SGU9dmU+PTAmJnRbdmVdO2lmKGkmJiFIZXx8IWkmJiEoZWU+PTAmJnRbZWVdKSl7bmsoZWsobCxhKSxvLHUpO2NvbnN0IFdlPWZ1bmN0aW9uIGhldChuLGUsdCxyLGkpe2NvbnN0IGE9bmV3IF95KG4sdCx6ZSxudWxsKTtyZXR1cm4gYS5tdWx0aT1bXSxhLmluZGV4PWUsYS5jb21wb25lbnRQ'@; put 'cm92aWRlcnM9MCxGN2UoYSxpLHImJiF0KSxhfShpP2RldDp1ZXQsdC5sZW5ndGgsaSxyLGcpOyFpJiZIZSYmKHRbdmVdLnByb3ZpZGVyRmFjdG9yeT1XZSksY25lKG8sbixlLmxlbmd0aCwwKSxlLnB1c2godSksbC5kaXJlY3RpdmVTdGFydCsrLGwuZGlyZWN0aXZlRW5kKyssaSYmKGwucHJv'@; put 'dmlkZXJJbmRleGVzKz0xMDQ4NTc2KSx0LnB1c2goV2UpLGEucHVzaChXZSl9ZWxzZSBjbmUobyxuLGVlPi0xP2VlOnZlLEY3ZSh0W2k/dmU6ZWVdLGcsIWkmJnIpKTshaSYmciYmSGUmJnRbdmVdLmNvbXBvbmVudFByb3ZpZGVycysrfX19ZnVuY3Rpb24gY25lKG4sZSx0LHIpe2NvbnN0IGk9'@; put 'aTEoZSksbz1mdW5jdGlvbiBpOChuKXtyZXR1cm4hIW4udXNlQ2xhc3N9KGUpO2lmKGl8fG8pe2NvbnN0IHU9KG8/ZmEoZS51c2VDbGFzcyk6ZSkucHJvdG90eXBlLm5nT25EZXN0cm95O2lmKHUpe2NvbnN0IGc9bi5kZXN0cm95SG9va3N8fChuLmRlc3Ryb3lIb29rcz1bXSk7aWYoIWkmJmUu'@; put 'bXVsdGkpe2NvbnN0IEU9Zy5pbmRleE9mKHQpOy0xPT09RT9nLnB1c2godCxbcix1XSk6Z1tFKzFdLnB1c2gocix1KX1lbHNlIGcucHVzaCh0LHUpfX19ZnVuY3Rpb24gRjdlKG4sZSx0KXtyZXR1cm4gdCYmbi5jb21wb25lbnRQcm92aWRlcnMrKyxuLm11bHRpLnB1c2goZSktMX1mdW5jdGlv'@; put 'biB1bmUobixlLHQscil7Zm9yKGxldCBpPXQ7aTxyO2krKylpZihlW2ldPT09bilyZXR1cm4gaTtyZXR1cm4tMX1mdW5jdGlvbiB1ZXQobixlLHQscixpKXtyZXR1cm4gZG5lKHRoaXMubXVsdGksW10pfWZ1bmN0aW9uIGRldChuLGUsdCxyLGkpe2NvbnN0IG89dGhpcy5tdWx0aTtsZXQgYTtp'@; put 'Zih0aGlzLnByb3ZpZGVyRmFjdG9yeSl7Y29uc3QgbD10aGlzLnByb3ZpZGVyRmFjdG9yeS5jb21wb25lbnRQcm92aWRlcnMsdT13eShyLHJbMV0sdGhpcy5wcm92aWRlckZhY3RvcnkuaW5kZXgsaSk7YT11LnNsaWNlKDAsbCksZG5lKG8sYSk7Zm9yKGxldCBnPWw7Zzx1Lmxlbmd0aDtnKysp'@; put 'YS5wdXNoKHVbZ10pfWVsc2UgYT1bXSxkbmUobyxhKTtyZXR1cm4gYX1mdW5jdGlvbiBkbmUobixlKXtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyllLnB1c2goKDAsblt0XSkoKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYm8obixlPVtdKXtyZXR1cm4gdD0+e3QucHJvdmlkZXJzUmVzb2x2ZXI9'@; put 'KHIsaSk9PmZ1bmN0aW9uIGNldChuLGUsdCl7Y29uc3Qgcj1GdCgpO2lmKHIuZmlyc3RDcmVhdGVQYXNzKXtjb25zdCBpPXMxKG4pO2xuZSh0LHIuZGF0YSxyLmJsdWVwcmludCxpLCEwKSxsbmUoZSxyLmRhdGEsci5ibHVlcHJpbnQsaSwhMSl9fShyLGk/aShuKTpuLGUpfX1mdW5jdGlvbiBt'@; put 'YyhuLGUsdCl7Y29uc3Qgcj1IMCgpK24saT1pdCgpO3JldHVybiBpW3JdPT09TmM/RDIoaSxyLHQ/ZS5jYWxsKHQpOmUoKSk6ZnVuY3Rpb24gQ3AobixlKXtyZXR1cm4gbltlXX0oaSxyKX1mdW5jdGlvbiB0NChuLGUsdCxyKXtyZXR1cm4gSDdlKGl0KCksSDAoKSxuLGUsdCxyKX1mdW5jdGlv'@; put 'biBONShuLGUsdCxyLGkpe3JldHVybiBWN2UoaXQoKSxIMCgpLG4sZSx0LHIsaSl9ZnVuY3Rpb24gdEkobixlLHQscixpLG8pe3JldHVybiBCN2UoaXQoKSxIMCgpLG4sZSx0LHIsaSxvKX1mdW5jdGlvbiBZaihuLGUsdCxyLGksbyxhKXtyZXR1cm4gZnVuY3Rpb24gajdlKG4sZSx0LHIsaSxv'@; put 'LGEsbCx1KXtjb25zdCBnPWUrdDtyZXR1cm4gVWcobixnLGksbyxhLGwpP0QyKG4sZys0LHU/ci5jYWxsKHUsaSxvLGEsbCk6cihpLG8sYSxsKSk6bkkobixnKzQpfShpdCgpLEgwKCksbixlLHQscixpLG8sYSl9ZnVuY3Rpb24gbkkobixlKXtjb25zdCB0PW5bZV07cmV0dXJuIHQ9PT1OYz92'@; put 'b2lkIDA6dH1mdW5jdGlvbiBIN2UobixlLHQscixpLG8pe2NvbnN0IGE9ZSt0O3JldHVybiBvdShuLGEsaSk/RDIobixhKzEsbz9yLmNhbGwobyxpKTpyKGkpKTpuSShuLGErMSl9ZnVuY3Rpb24gVjdlKG4sZSx0LHIsaSxvLGEpe2NvbnN0IGw9ZSt0O3JldHVybiB6MChuLGwsaSxvKT9EMihu'@; put 'LGwrMixhP3IuY2FsbChhLGksbyk6cihpLG8pKTpuSShuLGwrMil9ZnVuY3Rpb24gQjdlKG4sZSx0LHIsaSxvLGEsbCl7Y29uc3QgdT1lK3Q7cmV0dXJuIHVqKG4sdSxpLG8sYSk/RDIobix1KzMsbD9yLmNhbGwobCxpLG8sYSk6cihpLG8sYSkpOm5JKG4sdSszKX1mdW5jdGlvbiBBYyhuLGUp'@; put 'e2NvbnN0IHQ9RnQoKTtsZXQgcjtjb25zdCBpPW4rMjc7dC5maXJzdENyZWF0ZVBhc3M/KHI9ZnVuY3Rpb24gd2V0KG4sZSl7aWYoZSlmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgcj1lW3RdO2lmKG49PT1yLm5hbWUpcmV0dXJuIHJ9fShlLHQucGlwZVJlZ2lzdHJ5KSx0'@; put 'LmRhdGFbaV09cixyLm9uRGVzdHJveSYmKHQuZGVzdHJveUhvb2tzPz89W10pLnB1c2goaSxyLm9uRGVzdHJveSkpOnI9dC5kYXRhW2ldO2NvbnN0IG89ci5mYWN0b3J5fHwoci5mYWN0b3J5PW5jKHIudHlwZSkpLGw9bHIoemUpO3RyeXtjb25zdCB1PXdTKCExKSxnPW8oKTtyZXR1cm4gd1Mo'@; put 'dSksZnVuY3Rpb24gSW8obixlLHQscil7dD49bi5kYXRhLmxlbmd0aCYmKG4uZGF0YVt0XT1udWxsLG4uYmx1ZXByaW50W3RdPW51bGwpLGVbdF09cn0odCxpdCgpLGksZyksZ31maW5hbGx5e2xyKGwpfX1mdW5jdGlvbiBUZChuLGUsdCl7Y29uc3Qgcj1uKzI3LGk9aXQoKSxvPWFhKGkscik7'@; put 'cmV0dXJuIHJJKGkscik/SDdlKGksSDAoKSxlLG8udHJhbnNmb3JtLHQsbyk6by50cmFuc2Zvcm0odCl9ZnVuY3Rpb24gc2IobixlLHQscil7Y29uc3QgaT1uKzI3LG89aXQoKSxhPWFhKG8saSk7cmV0dXJuIHJJKG8saSk/VjdlKG8sSDAoKSxlLGEudHJhbnNmb3JtLHQscixhKTphLnRyYW5z'@; put 'Zm9ybSh0LHIpfWZ1bmN0aW9uIGhuZShuLGUsdCxyLGkpe2NvbnN0IG89bisyNyxhPWl0KCksbD1hYShhLG8pO3JldHVybiBySShhLG8pP0I3ZShhLEgwKCksZSxsLnRyYW5zZm9ybSx0LHIsaSxsKTpsLnRyYW5zZm9ybSh0LHIsaSl9ZnVuY3Rpb24gckkobixlKXtyZXR1cm4gblsxXS5kYXRh'@; put 'W2VdLnB1cmV9ZnVuY3Rpb24gY2QobixlKXtyZXR1cm4gejgobixlKX1jbGFzcyBRZXR7bmdNb2R1bGVGYWN0b3J5O2NvbXBvbmVudEZhY3Rvcmllcztjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmdNb2R1bGVGYWN0b3J5PWUsdGhpcy5jb21wb25lbnRGYWN0b3JpZXM9dH19bGV0IEpldD0oKCk9'@; put 'PntjbGFzcyBue2NvbXBpbGVNb2R1bGVTeW5jKHQpe3JldHVybiBuZXcgVDZlKHQpfWNvbXBpbGVNb2R1bGVBc3luYyh0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcGlsZU1vZHVsZVN5bmModCkpfWNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyh0KXtjb25zdCBy'@; put 'PXRoaXMuY29tcGlsZU1vZHVsZVN5bmModCksbz1WZyhyMSh0KS5kZWNsYXJhdGlvbnMpLnJlZHVjZSgoYSxsKT0+e2NvbnN0IHU9Y3MobCk7cmV0dXJuIHUmJmEucHVzaChuZXcgQlIodSkpLGF9LFtdKTtyZXR1cm4gbmV3IFFldChyLG8pfWNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRz'@; put 'QXN5bmModCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyh0KSl9Y2xlYXJDYWNoZSgpe31jbGVhckNhY2hlRm9yKHQpe31nZXRNb2R1bGVJZCh0KXt9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8'@; put 'fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpLHR0dD0oKCk9PntjbGFzcyBue3pvbmU9c24oZ2EpO2NoYW5nZURldGVjdGlvblNjaGVkdWxlcj1zbihtOCk7YXBwbGljYXRpb25SZWY9'@; put 'c24oV2cpO2FwcGxpY2F0aW9uRXJyb3JIYW5kbGVyPXNuKF9wKTtfb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbjtpbml0aWFsaXplKCl7dGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbnx8KHRoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb249dGhpcy56b25lLm9u'@; put 'TWljcm90YXNrRW1wdHkuc3Vic2NyaWJlKHtuZXh0OigpPT57dGhpcy5jaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXIucnVubmluZ1RpY2t8fHRoaXMuem9uZS5ydW4oKCk9Pnt0cnl7dGhpcy5hcHBsaWNhdGlvblJlZi5kaXJ0eUZsYWdzfD0xLHRoaXMuYXBwbGljYXRpb25SZWYuX3RpY2soKX1j'@; put 'YXRjaCh0KXt0aGlzLmFwcGxpY2F0aW9uRXJyb3JIYW5kbGVyKHQpfX0pfX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMg'@; put 'XHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIGE5ZSh7bmdab25lRmFjdG9yeTpuLGlnbm9yZUNoYW5nZXNPdXRzaWRlWm9uZTplLHNjaGVkdWxlSW5Sb290Wm9uZTp0fSl7cmV0dXJuIG4/'@; put 'Pz0oKT0+bmV3IGdhKHsuLi52bmUoKSxzY2hlZHVsZUluUm9vdFpvbmU6dH0pLFt7cHJvdmlkZTpnYSx1c2VGYWN0b3J5Om59LHtwcm92aWRlOk5sLG11bHRpOiEwLHVzZUZhY3Rvcnk6KCk9Pntjb25zdCByPXNuKHR0dCx7b3B0aW9uYWw6ITB9KTtyZXR1cm4oKT0+ci5pbml0aWFsaXplKCl9'@; put 'fSx7cHJvdmlkZTpObCxtdWx0aTohMCx1c2VGYWN0b3J5OigpPT57Y29uc3Qgcj1zbihydHQpO3JldHVybigpPT57ci5pbml0aWFsaXplKCl9fX0sITA9PT1lP3twcm92aWRlOnJILHVzZVZhbHVlOiEwfTpbXSx7cHJvdmlkZTppSCx1c2VWYWx1ZTp0Pz9pUn0se3Byb3ZpZGU6X3AsdXNlRmFj'@; put 'dG9yeTooKT0+e2NvbnN0IHI9c24oZ2EpLGk9c24obmwpO2xldCBvO3JldHVybiBhPT57ci5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2kuZGVzdHJveWVkJiYhbz9zZXRUaW1lb3V0KCgpPT57dGhyb3cgYX0pOihvPz89aS5nZXQoZzgpLG8uaGFuZGxlRXJyb3IoYSkpfSl9fX1dfWZ1bmN0aW9u'@; put 'IHZuZShuKXtyZXR1cm57ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbjpuPy5ldmVudENvYWxlc2Npbmc/PyExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOm4/LnJ1bkNvYWxlc2Npbmc/PyExfX1sZXQgcnR0PSgoKT0+'@; put 'e2NsYXNzIG57c3Vic2NyaXB0aW9uPW5ldyBBcjtpbml0aWFsaXplZD0hMTt6b25lPXNuKGdhKTtwZW5kaW5nVGFza3M9c24oczUpO2luaXRpYWxpemUoKXtpZih0aGlzLmluaXRpYWxpemVkKXJldHVybjt0aGlzLmluaXRpYWxpemVkPSEwO2xldCB0PW51bGw7IXRoaXMuem9uZS5pc1N0YWJs'@; put 'ZSYmIXRoaXMuem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIXRoaXMuem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyYmKHQ9dGhpcy5wZW5kaW5nVGFza3MuYWRkKCkpLHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnpvbmUub25T'@; put 'dGFibGUuc3Vic2NyaWJlKCgpPT57Z2EuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLHF1ZXVlTWljcm90YXNrKCgpPT57bnVsbCE9PXQmJiF0aGlzLnpvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiF0aGlzLnpvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MmJih0aGlzLnBlbmRpbmdUYXNrcy5y'@; put 'ZW1vdmUodCksdD1udWxsKX0pfSkpfSksdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuem9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSgoKT0+e2dhLmFzc2VydEluQW5ndWxhclpvbmUoKSx0Pz89dGhpcy5wZW5kaW5nVGFza3MuYWRkKCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlw'@; put 'dGlvbi51bnN1YnNjcmliZSgpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxjOWU9KCgpPT57Y2xhc3Mg'@; put 'bnthcHBsaWNhdGlvbkVycm9ySGFuZGxlcj1zbihfcCk7YXBwUmVmPXNuKFdnKTt0YXNrU2VydmljZT1zbihzNSk7bmdab25lPXNuKGdhKTt6b25lbGVzc0VuYWJsZWQ9c24obkgpO3RyYWNpbmc9c24oejkse29wdGlvbmFsOiEwfSk7ZGlzYWJsZVNjaGVkdWxpbmc9c24ockgse29wdGlvbmFs'@; put 'OiEwfSk/PyExO3pvbmVJc0RlZmluZWQ9dHlwZW9mIFpvbmU8InUiJiYhIVpvbmUucm9vdC5ydW47c2NoZWR1bGVyVGlja0FwcGx5QXJncz1be2RhdGE6e19fc2NoZWR1bGVyX3RpY2tfXzohMH19XTtzdWJzY3JpcHRpb25zPW5ldyBBcjthbmd1bGFyWm9uZUlkPXRoaXMuem9uZUlzRGVmaW5l'@; put 'ZD90aGlzLm5nWm9uZS5faW5uZXI/LmdldChxUyk6bnVsbDtzY2hlZHVsZUluUm9vdFpvbmU9IXRoaXMuem9uZWxlc3NFbmFibGVkJiZ0aGlzLnpvbmVJc0RlZmluZWQmJihzbihpSCx7b3B0aW9uYWw6ITB9KT8/ITEpO2NhbmNlbFNjaGVkdWxlZENhbGxiYWNrPW51bGw7dXNlTWljcm90YXNr'@; put 'U2NoZWR1bGVyPSExO3J1bm5pbmdUaWNrPSExO3BlbmRpbmdSZW5kZXJUYXNrSWQ9bnVsbDtjb25zdHJ1Y3Rvcigpe3RoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5hcHBSZWYuYWZ0ZXJUaWNrLnN1YnNjcmliZSgoKT0+e3RoaXMucnVubmluZ1RpY2t8fHRoaXMuY2xlYW51cCgpfSkpLHRo'@; put 'aXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnJ1bm5pbmdUaWNrfHx0aGlzLmNsZWFudXAoKX0pKSx0aGlzLmRpc2FibGVTY2hlZHVsaW5nfHw9IXRoaXMuem9uZWxlc3NFbmFibGVkJiYodGhpcy5uZ1pvbmUgaW5zdGFuY2Vv'@; put 'ZiBsUnx8IXRoaXMuem9uZUlzRGVmaW5lZCl9bm90aWZ5KHQpe2lmKCF0aGlzLnpvbmVsZXNzRW5hYmxlZCYmNT09PXQpcmV0dXJuO2xldCByPSExO3N3aXRjaCh0KXtjYXNlIDA6dGhpcy5hcHBSZWYuZGlydHlGbGFnc3w9MjticmVhaztjYXNlIDM6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6Y2Fz'@; put 'ZSAxOnRoaXMuYXBwUmVmLmRpcnR5RmxhZ3N8PTQ7YnJlYWs7Y2FzZSA2OmNhc2UgMTM6dGhpcy5hcHBSZWYuZGlydHlGbGFnc3w9MixyPSEwO2JyZWFrO2Nhc2UgMTI6dGhpcy5hcHBSZWYuZGlydHlGbGFnc3w9MTYscj0hMDticmVhaztjYXNlIDExOnI9ITA7YnJlYWs7ZGVmYXVsdDp0aGlz'@; put 'LmFwcFJlZi5kaXJ0eUZsYWdzfD04fWlmKHRoaXMuYXBwUmVmLnRyYWNpbmdTbmFwc2hvdD10aGlzLnRyYWNpbmc/LnNuYXBzaG90KHRoaXMuYXBwUmVmLnRyYWNpbmdTbmFwc2hvdCk/P251bGwsIXRoaXMuc2hvdWxkU2NoZWR1bGVUaWNrKHIpKXJldHVybjtjb25zdCBpPXRoaXMudXNlTWlj'@; put 'cm90YXNrU2NoZWR1bGVyP1NCOkNCO3RoaXMucGVuZGluZ1JlbmRlclRhc2tJZD10aGlzLnRhc2tTZXJ2aWNlLmFkZCgpLHRoaXMuY2FuY2VsU2NoZWR1bGVkQ2FsbGJhY2s9dGhpcy5zY2hlZHVsZUluUm9vdFpvbmU/Wm9uZS5yb290LnJ1bigoKT0+aSgoKT0+dGhpcy50aWNrKCkpKTp0aGlz'@; put 'Lm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+aSgoKT0+dGhpcy50aWNrKCkpKX1zaG91bGRTY2hlZHVsZVRpY2sodCl7cmV0dXJuISh0aGlzLmRpc2FibGVTY2hlZHVsaW5nJiYhdHx8dGhpcy5hcHBSZWYuZGVzdHJveWVkfHxudWxsIT09dGhpcy5wZW5kaW5nUmVuZGVyVGFza0lkfHx0'@; put 'aGlzLnJ1bm5pbmdUaWNrfHx0aGlzLmFwcFJlZi5fcnVubmluZ1RpY2t8fCF0aGlzLnpvbmVsZXNzRW5hYmxlZCYmdGhpcy56b25lSXNEZWZpbmVkJiZab25lLmN1cnJlbnQuZ2V0KHFTK3RoaXMuYW5ndWxhclpvbmVJZCkpfXRpY2soKXtpZih0aGlzLnJ1bm5pbmdUaWNrfHx0aGlzLmFwcFJl'@; put 'Zi5kZXN0cm95ZWQpcmV0dXJuO2lmKDA9PT10aGlzLmFwcFJlZi5kaXJ0eUZsYWdzKXJldHVybiB2b2lkIHRoaXMuY2xlYW51cCgpOyF0aGlzLnpvbmVsZXNzRW5hYmxlZCYmNyZ0aGlzLmFwcFJlZi5kaXJ0eUZsYWdzJiYodGhpcy5hcHBSZWYuZGlydHlGbGFnc3w9MSk7Y29uc3QgdD10aGlz'@; put 'LnRhc2tTZXJ2aWNlLmFkZCgpO3RyeXt0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLnJ1bm5pbmdUaWNrPSEwLHRoaXMuYXBwUmVmLl90aWNrKCl9LHZvaWQgMCx0aGlzLnNjaGVkdWxlclRpY2tBcHBseUFyZ3MpfWNhdGNoKHIpe3RoaXMudGFza1NlcnZpY2UucmVtb3ZlKHQpLHRoaXMuYXBw'@; put 'bGljYXRpb25FcnJvckhhbmRsZXIocil9ZmluYWxseXt0aGlzLmNsZWFudXAoKX10aGlzLnVzZU1pY3JvdGFza1NjaGVkdWxlcj0hMCxTQigoKT0+e3RoaXMudXNlTWljcm90YXNrU2NoZWR1bGVyPSExLHRoaXMudGFza1NlcnZpY2UucmVtb3ZlKHQpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1'@; put 'YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKSx0aGlzLmNsZWFudXAoKX1jbGVhbnVwKCl7aWYodGhpcy5ydW5uaW5nVGljaz0hMSx0aGlzLmNhbmNlbFNjaGVkdWxlZENhbGxiYWNrPy4oKSx0aGlzLmNhbmNlbFNjaGVkdWxlZENhbGxiYWNrPW51bGwsbnVsbCE9PXRoaXMucGVuZGluZ1JlbmRl'@; put 'clRhc2tJZCl7Y29uc3QgdD10aGlzLnBlbmRpbmdSZW5kZXJUYXNrSWQ7dGhpcy5wZW5kaW5nUmVuZGVyVGFza0lkPW51bGwsdGhpcy50YXNrU2VydmljZS5yZW1vdmUodCl9fXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9'@; put 'Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtjb25zdCBGNT1uZXcgRXIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PnNuKEY1LHtvcHRpb25hbDohMCxza2lwU2VsZjohMH0pfHxmdW5jdGlvbiBpdHQoKXty'@; put 'ZXR1cm4gdHlwZW9mICRsb2NhbGl6ZTwidSImJiRsb2NhbGl6ZS5sb2NhbGV8fE9qfSgpfSk7ZnVuY3Rpb24gSGMobil7cmV0dXJuImJyb3dzZXIiPT09bn1sZXQgbXR0PSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4scHJvdmlkZWRJbjoicm9vdCIsZmFjdG9y'@; put 'eTooKT0+bmV3IHZ0dChzbihUbCksd2luZG93KX0pfXJldHVybiBufSkoKTtjbGFzcyB2dHR7ZG9jdW1lbnQ7d2luZG93O29mZnNldD0oKT0+WzAsMF07Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRvY3VtZW50PWUsdGhpcy53aW5kb3c9dH1zZXRPZmZzZXQoZSl7dGhpcy5vZmZzZXQ9QXJyYXku'@; put 'aXNBcnJheShlKT8oKT0+ZTplfWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuW3RoaXMud2luZG93LnNjcm9sbFgsdGhpcy53aW5kb3cuc2Nyb2xsWV19c2Nyb2xsVG9Qb3NpdGlvbihlLHQpe3RoaXMud2luZG93LnNjcm9sbFRvKHsuLi50LGxlZnQ6ZVswXSx0b3A6ZVsxXX0pfXNjcm9sbFRv'@; put 'QW5jaG9yKGUsdCl7Y29uc3Qgcj1mdW5jdGlvbiBfdHQobixlKXtjb25zdCB0PW4uZ2V0RWxlbWVudEJ5SWQoZSl8fG4uZ2V0RWxlbWVudHNCeU5hbWUoZSlbMF07aWYodClyZXR1cm4gdDtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5jcmVhdGVUcmVlV2Fsa2VyJiZuLmJvZHkmJiJmdW5jdGlv'@; put 'biI9PXR5cGVvZiBuLmJvZHkuYXR0YWNoU2hhZG93KXtjb25zdCByPW4uY3JlYXRlVHJlZVdhbGtlcihuLmJvZHksTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQpO2xldCBpPXIuY3VycmVudE5vZGU7Zm9yKDtpOyl7Y29uc3Qgbz1pLnNoYWRvd1Jvb3Q7aWYobyl7Y29uc3QgYT1vLmdldEVsZW1l'@; put 'bnRCeUlkKGUpfHxvLnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPSIke2V9Il1gKTtpZihhKXJldHVybiBhfWk9ci5uZXh0Tm9kZSgpfX1yZXR1cm4gbnVsbH0odGhpcy5kb2N1bWVudCxlKTtyJiYodGhpcy5zY3JvbGxUb0VsZW1lbnQocix0KSxyLmZvY3VzKCkpfXNldEhpc3RvcnlTY3JvbGxSZXN0'@; put 'b3JhdGlvbihlKXt0cnl7dGhpcy53aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj1lfWNhdGNoe2NvbnNvbGUud2FybihkYygyNDAwLCExKSl9fXNjcm9sbFRvRWxlbWVudChlLHQpe2NvbnN0IHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXIubGVmdCt0aGlzLndpbmRvdy5w'@; put 'YWdlWE9mZnNldCxvPXIudG9wK3RoaXMud2luZG93LnBhZ2VZT2Zmc2V0LGE9dGhpcy5vZmZzZXQoKTt0aGlzLndpbmRvdy5zY3JvbGxUbyh7Li4udCxsZWZ0OmktYVswXSx0b3A6by1hWzFdfSl9fWNvbnN0IGlVPVN5bWJvbCgiSW5wdXRTaWduYWxOb2RlI1VOU0VUIiksaXZlPXsuLi5Pbyx0'@; put 'cmFuc2Zvcm1Gbjp2b2lkIDAsYXBwbHlWYWx1ZVRvSW5wdXRTaWduYWwobixlKXtRcihuLGUpfX07ZnVuY3Rpb24gb3ZlKG4sZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKGl2ZSk7ZnVuY3Rpb24gcigpe2lmKEQodCksdC52YWx1ZT09PWlVKXRocm93IG5ldyBXbigtOTUwLG51bGwpO3JldHVy'@; put 'biB0LnZhbHVlfXJldHVybiB0LnZhbHVlPW4sdC50cmFuc2Zvcm1Gbj1lPy50cmFuc2Zvcm0scltiXT10LHJ9Y2xhc3MgRHJ0e2F0dHJpYnV0ZU5hbWU7Y29uc3RydWN0b3IoZSl7dGhpcy5hdHRyaWJ1dGVOYW1lPWV9X19OR19FTEVNRU5UX0lEX189KCk9Pnc1KHRoaXMuYXR0cmlidXRlTmFt'@; put 'ZSk7dG9TdHJpbmcoKXtyZXR1cm5gSG9zdEF0dHJpYnV0ZVRva2VuICR7dGhpcy5hdHRyaWJ1dGVOYW1lfWB9fWZ1bmN0aW9uIGF2ZShuLGUpe3JldHVybiBvdmUobixlKX1uZXcgRXIoIiIpLl9fTkdfRUxFTUVOVF9JRF9fPW49Pntjb25zdCBlPXlpKCk7aWYobnVsbD09PWUpdGhyb3cgbmV3'@; put 'IFduKDIwNCwhMSk7aWYoMiZlLnR5cGUpcmV0dXJuIGUudmFsdWU7aWYoOCZuKXJldHVybiBudWxsO3Rocm93IG5ldyBXbigyMDQsITEpfTtjb25zdCBOcnQ9KGF2ZS5yZXF1aXJlZD1mdW5jdGlvbiBPcnQobil7cmV0dXJuIG92ZShpVSxuKX0sYXZlKSxvVT1uZXcgRXIoIiIpLEJydD1uZXcg'@; put 'RXIoIiIpO2Z1bmN0aW9uIHVJKG4pe3JldHVybiFuLm1vZHVsZVJlZn1sZXQgaHZlO2Z1bmN0aW9uIGZ2ZSgpe2h2ZT1qcnR9ZnVuY3Rpb24ganJ0KG4sZSl7Y29uc3QgdD1uLmluamVjdG9yLmdldChXZyk7aWYobi5fYm9vdHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MCluLl9ib290c3RyYXBD'@; put 'b21wb25lbnRzLmZvckVhY2gocj0+dC5ib290c3RyYXAocikpO2Vsc2V7aWYoIW4uaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgV24oLTQwMywhMSk7bi5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKHQpfWUucHVzaChuKX1sZXQgcHZlPSgoKT0+e2NsYXNzIG57X2luamVjdG9yO19t'@; put 'b2R1bGVzPVtdO19kZXN0cm95TGlzdGVuZXJzPVtdO19kZXN0cm95ZWQ9ITE7Y29uc3RydWN0b3IodCl7dGhpcy5faW5qZWN0b3I9dH1ib290c3RyYXBNb2R1bGVGYWN0b3J5KHQscil7Y29uc3QgaT1yPy5zY2hlZHVsZUluUm9vdFpvbmUsYT1yPy5pZ25vcmVDaGFuZ2VzT3V0c2lkZVpvbmUs'@; put 'bD1bYTllKHtuZ1pvbmVGYWN0b3J5OigpPT5mdW5jdGlvbiB3ZWUobj0iem9uZS5qcyIsZSl7cmV0dXJuIm5vb3AiPT09bj9uZXcgbFI6InpvbmUuanMiPT09bj9uZXcgZ2EoZSk6bn0ocj8ubmdab25lLHsuLi52bmUoe2V2ZW50Q29hbGVzY2luZzpyPy5uZ1pvbmVFdmVudENvYWxlc2Npbmcs'@; put 'cnVuQ29hbGVzY2luZzpyPy5uZ1pvbmVSdW5Db2FsZXNjaW5nfSksc2NoZWR1bGVJblJvb3Rab25lOml9KSxpZ25vcmVDaGFuZ2VzT3V0c2lkZVpvbmU6YX0pLHtwcm92aWRlOm04LHVzZUV4aXN0aW5nOmM5ZX0sd1hdLHU9ZnVuY3Rpb24gS3FlKG4sZSx0KXtyZXR1cm4gbmV3IHd0ZShuLGUs'@; put 'dCwhMSl9KHQubW9kdWxlVHlwZSx0aGlzLmluamVjdG9yLGwpO3JldHVybiBmdmUoKSxmdW5jdGlvbiBkdmUobil7Y29uc3QgZT11SShuKT9uLnIzSW5qZWN0b3I6bi5tb2R1bGVSZWYuaW5qZWN0b3IsdD1lLmdldChnYSk7cmV0dXJuIHQucnVuKCgpPT57dUkobik/bi5yM0luamVjdG9yLnJl'@; put 'c29sdmVJbmplY3RvckluaXRpYWxpemVycygpOm4ubW9kdWxlUmVmLnJlc29sdmVJbmplY3RvckluaXRpYWxpemVycygpO2NvbnN0IHI9ZS5nZXQoX3ApO2xldCBpO2lmKHQucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntpPXQub25FcnJvci5zdWJzY3JpYmUoe25leHQ6cn0pfSksdUkobikpe2Nv'@; put 'bnN0IG89KCk9PmUuZGVzdHJveSgpLGE9bi5wbGF0Zm9ybUluamVjdG9yLmdldChvVSk7YS5hZGQobyksZS5vbkRlc3Ryb3koKCk9PntpLnVuc3Vic2NyaWJlKCksYS5kZWxldGUobyl9KX1lbHNle2NvbnN0IG89KCk9Pm4ubW9kdWxlUmVmLmRlc3Ryb3koKSxhPW4ucGxhdGZvcm1JbmplY3Rv'@; put 'ci5nZXQob1UpO2EuYWRkKG8pLG4ubW9kdWxlUmVmLm9uRGVzdHJveSgoKT0+e0NqKG4uYWxsUGxhdGZvcm1Nb2R1bGVzLG4ubW9kdWxlUmVmKSxpLnVuc3Vic2NyaWJlKCksYS5kZWxldGUobyl9KX1yZXR1cm4gZnVuY3Rpb24gVXJ0KG4sZSx0KXt0cnl7Y29uc3Qgcj10KCk7cmV0dXJuIFpS'@; put 'KHIpP3IuY2F0Y2goaT0+e3Rocm93IGUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pm4oaSkpLGl9KTpyfWNhdGNoKHIpe3Rocm93IGUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pm4ocikpLHJ9fShyLHQsKCk9Pntjb25zdCBvPWUuZ2V0KHM1KSxhPW8uYWRkKCksbD1lLmdldChnOGUpO3JldHVybiBs'@; put 'LnJ1bkluaXRpYWxpemVycygpLGwuZG9uZVByb21pc2UudGhlbigoKT0+e2lmKGZ1bmN0aW9uIFZRZShuKXsic3RyaW5nIj09dHlwZW9mIG4mJihQOGU9bi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpKX0oZS5nZXQoRjUsT2opfHxPaiksIWUuZ2V0KEJydCwhMCkpcmV0dXJuIHVJ'@; put 'KG4pP2UuZ2V0KFdnKToobi5hbGxQbGF0Zm9ybU1vZHVsZXMucHVzaChuLm1vZHVsZVJlZiksbi5tb2R1bGVSZWYpO2lmKHVJKG4pKXtjb25zdCBFPWUuZ2V0KFdnKTtyZXR1cm4gdm9pZCAwIT09bi5yb290Q29tcG9uZW50JiZFLmJvb3RzdHJhcChuLnJvb3RDb21wb25lbnQpLEV9cmV0dXJu'@; put 'IGh2ZT8uKG4ubW9kdWxlUmVmLG4uYWxsUGxhdGZvcm1Nb2R1bGVzKSxuLm1vZHVsZVJlZn0pLmZpbmFsbHkoKCk9PntvLnJlbW92ZShhKX0pfSl9KX0oe21vZHVsZVJlZjp1LGFsbFBsYXRmb3JtTW9kdWxlczp0aGlzLl9tb2R1bGVzLHBsYXRmb3JtSW5qZWN0b3I6dGhpcy5pbmplY3Rvcn0p'@; put 'fWJvb3RzdHJhcE1vZHVsZSh0LHI9W10pe2NvbnN0IGk9djhlKHt9LHIpO3JldHVybiBmdmUoKSxmdW5jdGlvbiBGcnQobixlLHQpe2NvbnN0IHI9bmV3IFQ2ZSh0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfSgwLDAsdCkudGhlbihvPT50aGlzLmJvb3RzdHJhcE1vZHVsZUZhY3Rvcnko'@; put 'byxpKSl9b25EZXN0cm95KHQpe3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0KX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9ZGVzdHJveSgpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgV24oNDA0LCExKTt0aGlzLl9tb2R1bGVzLnNsaWNlKCkuZm9yRWFj'@; put 'aChyPT5yLmRlc3Ryb3koKSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKHI9PnIoKSk7Y29uc3QgdD10aGlzLl9pbmplY3Rvci5nZXQob1UsbnVsbCk7dCYmKHQuZm9yRWFjaChyPT5yKCkpLHQuY2xlYXIoKSksdGhpcy5fZGVzdHJveWVkPSEwfWdldCBkZXN0cm95ZWQoKXtyZXR1'@; put 'cm4gdGhpcy5fZGVzdHJveWVkfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihNbCkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pfXJldHVybiBufSkoKSxURT1u'@; put 'dWxsO2Z1bmN0aW9uIGd2ZShuLGUsdD1bXSl7Y29uc3Qgcj1gUGxhdGZvcm06ICR7ZX1gLGk9bmV3IEVyKHIpO3JldHVybihvPVtdKT0+e2xldCBhPWFVKCk7aWYoIWEpe2NvbnN0IGw9Wy4uLnQsLi4ubyx7cHJvdmlkZTppLHVzZVZhbHVlOiEwfV07YT1uPy4obCk/P2Z1bmN0aW9uIHpydChu'@; put 'KXtpZihhVSgpKXRocm93IG5ldyBXbig0MDAsITEpOyhmdW5jdGlvbiBDWGUoKXshZnVuY3Rpb24gZ3Qobil7THQ9bn0oKCk9Pnt0aHJvdyBuZXcgV24oNjAwLCIiKX0pfSkoKSxURT1uO2NvbnN0IGU9bi5nZXQocHZlKTtyZXR1cm4gZnVuY3Rpb24gdnZlKG4pe2NvbnN0IGU9bi5nZXQoc1Ys'@; put 'bnVsbCk7THUobiwoKT0+e2U/LmZvckVhY2godD0+dCgpKX0pfShuKSxlfShmdW5jdGlvbiBtdmUobj1bXSxlKXtyZXR1cm4gTWwuY3JlYXRlKHtuYW1lOmUscHJvdmlkZXJzOlt7cHJvdmlkZTpvOCx1c2VWYWx1ZToicGxhdGZvcm0ifSx7cHJvdmlkZTpvVSx1c2VWYWx1ZTpuZXcgU2V0KFso'@; put 'KT0+VEU9bnVsbF0pfSwuLi5uXX0pfShsLHIpKX1yZXR1cm4gZnVuY3Rpb24gV3J0KCl7Y29uc3QgZT1hVSgpO2lmKCFlKXRocm93IG5ldyBXbigtNDAxLCExKTtyZXR1cm4gZX0oKX19ZnVuY3Rpb24gYVUoKXtyZXR1cm4gVEU/LmdldChwdmUpPz9udWxsfWxldCBVbD0oKCk9PmNsYXNzIG57'@; put 'c3RhdGljIF9fTkdfRUxFTUVOVF9JRF9fPVpydH0pKCk7ZnVuY3Rpb24gWnJ0KG4pe3JldHVybiBmdW5jdGlvbiBHcnQobixlLHQpe2lmKHdmKG4pJiYhdCl7Y29uc3Qgcj1aaShuLmluZGV4LGUpO3JldHVybiBuZXcgUTkocixyKX1yZXR1cm4gMTc1Jm4udHlwZT9uZXcgUTkoZVsxNV0sZSk6'@; put 'bnVsbH0oeWkoKSxpdCgpLCEoMTYmfm4pKX1jbGFzcyB5dmV7Y29uc3RydWN0b3IoKXt9c3VwcG9ydHMoZSl7cmV0dXJuIHJjKGUpfWNyZWF0ZShlKXtyZXR1cm4gbmV3IHFydChlKX19Y29uc3QgJHJ0PShuLGUpPT5lO2NsYXNzIHFydHtsZW5ndGg9MDtjb2xsZWN0aW9uO19saW5rZWRSZWNv'@; put 'cmRzPW51bGw7X3VubGlua2VkUmVjb3Jkcz1udWxsO19wcmV2aW91c0l0SGVhZD1udWxsO19pdEhlYWQ9bnVsbDtfaXRUYWlsPW51bGw7X2FkZGl0aW9uc0hlYWQ9bnVsbDtfYWRkaXRpb25zVGFpbD1udWxsO19tb3Zlc0hlYWQ9bnVsbDtfbW92ZXNUYWlsPW51bGw7X3JlbW92YWxzSGVhZD1u'@; put 'dWxsO19yZW1vdmFsc1RhaWw9bnVsbDtfaWRlbnRpdHlDaGFuZ2VzSGVhZD1udWxsO19pZGVudGl0eUNoYW5nZXNUYWlsPW51bGw7X3RyYWNrQnlGbjtjb25zdHJ1Y3RvcihlKXt0aGlzLl90cmFja0J5Rm49ZXx8JHJ0fWZvckVhY2hJdGVtKGUpe2xldCB0O2Zvcih0PXRoaXMuX2l0SGVhZDtu'@; put 'dWxsIT09dDt0PXQuX25leHQpZSh0KX1mb3JFYWNoT3BlcmF0aW9uKGUpe2xldCB0PXRoaXMuX2l0SGVhZCxyPXRoaXMuX3JlbW92YWxzSGVhZCxpPTAsbz1udWxsO2Zvcig7dHx8cjspe2NvbnN0IGE9IXJ8fHQmJnQuY3VycmVudEluZGV4PHd2ZShyLGksbyk/dDpyLGw9d3ZlKGEsaSxvKSx1'@; put 'PWEuY3VycmVudEluZGV4O2lmKGE9PT1yKWktLSxyPXIuX25leHRSZW1vdmVkO2Vsc2UgaWYodD10Ll9uZXh0LG51bGw9PWEucHJldmlvdXNJbmRleClpKys7ZWxzZXtvfHwobz1bXSk7Y29uc3QgZz1sLWksRT11LWk7aWYoZyE9RSl7Zm9yKGxldCBaPTA7WjxnO1orKyl7Y29uc3QgZWU9Wjxv'@; put 'Lmxlbmd0aD9vW1pdOm9bWl09MCx2ZT1lZStaO0U8PXZlJiZ2ZTxnJiYob1taXT1lZSsxKX1vW2EucHJldmlvdXNJbmRleF09RS1nfX1sIT09dSYmZShhLGwsdSl9fWZvckVhY2hQcmV2aW91c0l0ZW0oZSl7bGV0IHQ7Zm9yKHQ9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PXQ7dD10Ll9u'@; put 'ZXh0UHJldmlvdXMpZSh0KX1mb3JFYWNoQWRkZWRJdGVtKGUpe2xldCB0O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpZSh0KX1mb3JFYWNoTW92ZWRJdGVtKGUpe2xldCB0O2Zvcih0PXRoaXMuX21vdmVzSGVhZDtudWxsIT09dDt0PXQuX25leHRN'@; put 'b3ZlZCllKHQpfWZvckVhY2hSZW1vdmVkSXRlbShlKXtsZXQgdDtmb3IodD10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0UmVtb3ZlZCllKHQpfWZvckVhY2hJZGVudGl0eUNoYW5nZShlKXtsZXQgdDtmb3IodD10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkO251bGwhPT10'@; put 'O3Q9dC5fbmV4dElkZW50aXR5Q2hhbmdlKWUodCl9ZGlmZihlKXtpZihudWxsPT1lJiYoZT1bXSksIXJjKGUpKXRocm93IG5ldyBXbig5MDAsITEpO3JldHVybiB0aGlzLmNoZWNrKGUpP3RoaXM6bnVsbH1vbkRlc3Ryb3koKXt9Y2hlY2soZSl7dGhpcy5fcmVzZXQoKTtsZXQgaSxvLGEsdD10'@; put 'aGlzLl9pdEhlYWQscj0hMTtpZihBcnJheS5pc0FycmF5KGUpKXt0aGlzLmxlbmd0aD1lLmxlbmd0aDtmb3IobGV0IGw9MDtsPHRoaXMubGVuZ3RoO2wrKylvPWVbbF0sYT10aGlzLl90cmFja0J5Rm4obCxvKSxudWxsIT09dCYmT2JqZWN0LmlzKHQudHJhY2tCeUlkLGEpPyhyJiYodD10aGlz'@; put 'Ll92ZXJpZnlSZWluc2VydGlvbih0LG8sYSxsKSksT2JqZWN0LmlzKHQuaXRlbSxvKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxvKSk6KHQ9dGhpcy5fbWlzbWF0Y2godCxvLGEsbCkscj0hMCksdD10Ll9uZXh0fWVsc2UgaT0wLGZ1bmN0aW9uIHoxKG4sZSl7aWYoQXJyYXkuaXNBcnJh'@; put 'eShuKSlmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyllKG5bdF0pO2Vsc2V7Y29uc3QgdD1uW1N5bWJvbC5pdGVyYXRvcl0oKTtsZXQgcjtmb3IoOyEocj10Lm5leHQoKSkuZG9uZTspZShyLnZhbHVlKX19KGUsbD0+e2E9dGhpcy5fdHJhY2tCeUZuKGksbCksbnVsbCE9PXQmJk9iamVjdC5p'@; put 'cyh0LnRyYWNrQnlJZCxhKT8ociYmKHQ9dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24odCxsLGEsaSkpLE9iamVjdC5pcyh0Lml0ZW0sbCl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsbCkpOih0PXRoaXMuX21pc21hdGNoKHQsbCxhLGkpLHI9ITApLHQ9dC5fbmV4dCxpKyt9KSx0aGlzLmxl'@; put 'bmd0aD1pO3JldHVybiB0aGlzLl90cnVuY2F0ZSh0KSx0aGlzLmNvbGxlY3Rpb249ZSx0aGlzLmlzRGlydHl9Z2V0IGlzRGlydHkoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9tb3Zlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR8fG51'@; put 'bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkfV9yZXNldCgpe2lmKHRoaXMuaXNEaXJ0eSl7bGV0IGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNJdEhlYWQ9dGhpcy5faXRIZWFkO251bGwhPT1lO2U9ZS5fbmV4dCllLl9uZXh0UHJldmlvdXM9ZS5fbmV4dDtmb3IoZT10aGlzLl9hZGRpdGlv'@; put 'bnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKWUucHJldmlvdXNJbmRleD1lLmN1cnJlbnRJbmRleDtmb3IodGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsZT10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0TW92ZWQpZS5wcmV2aW91c0lu'@; put 'ZGV4PWUuY3VycmVudEluZGV4O3RoaXMuX21vdmVzSGVhZD10aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGx9fV9taXNtYXRj'@; put 'aChlLHQscixpKXtsZXQgbztyZXR1cm4gbnVsbD09PWU/bz10aGlzLl9pdFRhaWw6KG89ZS5fcHJldix0aGlzLl9yZW1vdmUoZSkpLG51bGwhPT0oZT1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChyLG51bGwpKT8oT2JqZWN0Lmlz'@; put 'KGUuaXRlbSx0KXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoZSx0KSx0aGlzLl9yZWluc2VydEFmdGVyKGUsbyxpKSk6bnVsbCE9PShlPW51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fbGlua2VkUmVjb3Jkcy5nZXQocixpKSk/KE9iamVjdC5pcyhlLml0ZW0sdCl8fHRo'@; put 'aXMuX2FkZElkZW50aXR5Q2hhbmdlKGUsdCksdGhpcy5fbW92ZUFmdGVyKGUsbyxpKSk6ZT10aGlzLl9hZGRBZnRlcihuZXcgS3J0KHQsciksbyxpKSxlfV92ZXJpZnlSZWluc2VydGlvbihlLHQscixpKXtsZXQgbz1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5s'@; put 'aW5rZWRSZWNvcmRzLmdldChyLG51bGwpO3JldHVybiBudWxsIT09bz9lPXRoaXMuX3JlaW5zZXJ0QWZ0ZXIobyxlLl9wcmV2LGkpOmUuY3VycmVudEluZGV4IT1pJiYoZS5jdXJyZW50SW5kZXg9aSx0aGlzLl9hZGRUb01vdmVzKGUsaSkpLGV9X3RydW5jYXRlKGUpe2Zvcig7bnVsbCE9PWU7'@; put 'KXtjb25zdCB0PWUuX25leHQ7dGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsoZSkpLGU9dH1udWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMuY2xlYXIoKSxudWxsIT09dGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1Rh'@; put 'aWwuX25leHRBZGRlZD1udWxsKSxudWxsIT09dGhpcy5fbW92ZXNUYWlsJiYodGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2l0VGFpbCYmKHRoaXMuX2l0VGFpbC5fbmV4dD1udWxsKSxudWxsIT09dGhpcy5fcmVtb3ZhbHNUYWlsJiYodGhpcy5fcmVtb3Zh'@; put 'bHNUYWlsLl9uZXh0UmVtb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCYmKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT1udWxsKX1fcmVpbnNlcnRBZnRlcihlLHQscil7bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYm'@; put 'dGhpcy5fdW5saW5rZWRSZWNvcmRzLnJlbW92ZShlKTtjb25zdCBpPWUuX3ByZXZSZW1vdmVkLG89ZS5fbmV4dFJlbW92ZWQ7cmV0dXJuIG51bGw9PT1pP3RoaXMuX3JlbW92YWxzSGVhZD1vOmkuX25leHRSZW1vdmVkPW8sbnVsbD09PW8/dGhpcy5fcmVtb3ZhbHNUYWlsPWk6by5fcHJldlJl'@; put 'bW92ZWQ9aSx0aGlzLl9pbnNlcnRBZnRlcihlLHQsciksdGhpcy5fYWRkVG9Nb3ZlcyhlLHIpLGV9X21vdmVBZnRlcihlLHQscil7cmV0dXJuIHRoaXMuX3VubGluayhlKSx0aGlzLl9pbnNlcnRBZnRlcihlLHQsciksdGhpcy5fYWRkVG9Nb3ZlcyhlLHIpLGV9X2FkZEFmdGVyKGUsdCxyKXty'@; put 'ZXR1cm4gdGhpcy5faW5zZXJ0QWZ0ZXIoZSx0LHIpLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbD09PXRoaXMuX2FkZGl0aW9uc1RhaWw/dGhpcy5fYWRkaXRpb25zSGVhZD1lOnRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1lLGV9X2luc2VydEFmdGVyKGUsdCxyKXtjb25zdCBpPW51'@; put 'bGw9PT10P3RoaXMuX2l0SGVhZDp0Ll9uZXh0O3JldHVybiBlLl9uZXh0PWksZS5fcHJldj10LG51bGw9PT1pP3RoaXMuX2l0VGFpbD1lOmkuX3ByZXY9ZSxudWxsPT09dD90aGlzLl9pdEhlYWQ9ZTp0Ll9uZXh0PWUsbnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHMmJih0aGlzLl9saW5rZWRS'@; put 'ZWNvcmRzPW5ldyBidmUpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KGUpLGUuY3VycmVudEluZGV4PXIsZX1fcmVtb3ZlKGUpe3JldHVybiB0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayhlKSl9X3VubGluayhlKXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYmdGhpcy5fbGlu'@; put 'a2VkUmVjb3Jkcy5yZW1vdmUoZSk7Y29uc3QgdD1lLl9wcmV2LHI9ZS5fbmV4dDtyZXR1cm4gbnVsbD09PXQ/dGhpcy5faXRIZWFkPXI6dC5fbmV4dD1yLG51bGw9PT1yP3RoaXMuX2l0VGFpbD10OnIuX3ByZXY9dCxlfV9hZGRUb01vdmVzKGUsdCl7cmV0dXJuIGUucHJldmlvdXNJbmRleD09'@; put 'PXR8fCh0aGlzLl9tb3Zlc1RhaWw9bnVsbD09PXRoaXMuX21vdmVzVGFpbD90aGlzLl9tb3Zlc0hlYWQ9ZTp0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD1lKSxlfV9hZGRUb1JlbW92YWxzKGUpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhpcy5fdW5saW5rZWRS'@; put 'ZWNvcmRzPW5ldyBidmUpLHRoaXMuX3VubGlua2VkUmVjb3Jkcy5wdXQoZSksZS5jdXJyZW50SW5kZXg9bnVsbCxlLl9uZXh0UmVtb3ZlZD1udWxsLG51bGw9PT10aGlzLl9yZW1vdmFsc1RhaWw/KHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc0hlYWQ9ZSxlLl9wcmV2UmVtb3Zl'@; put 'ZD1udWxsKTooZS5fcHJldlJlbW92ZWQ9dGhpcy5fcmVtb3ZhbHNUYWlsLHRoaXMuX3JlbW92YWxzVGFpbD10aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPWUpLGV9X2FkZElkZW50aXR5Q2hhbmdlKGUsdCl7cmV0dXJuIGUuaXRlbT10LHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9'@; put 'bnVsbD09PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD1lOnRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT1lLGV9fWNsYXNzIEtydHtpdGVtO3RyYWNrQnlJZDtjdXJyZW50SW5kZXg9bnVsbDtwcmV2aW91c0lu'@; put 'ZGV4PW51bGw7X25leHRQcmV2aW91cz1udWxsO19wcmV2PW51bGw7X25leHQ9bnVsbDtfcHJldkR1cD1udWxsO19uZXh0RHVwPW51bGw7X3ByZXZSZW1vdmVkPW51bGw7X25leHRSZW1vdmVkPW51bGw7X25leHRBZGRlZD1udWxsO19uZXh0TW92ZWQ9bnVsbDtfbmV4dElkZW50aXR5Q2hhbmdl'@; put 'PW51bGw7Y29uc3RydWN0b3IoZSx0KXt0aGlzLml0ZW09ZSx0aGlzLnRyYWNrQnlJZD10fX1jbGFzcyBYcnR7X2hlYWQ9bnVsbDtfdGFpbD1udWxsO2FkZChlKXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90YWlsPWUsZS5fbmV4dER1cD1udWxsLGUuX3ByZXZEdXA9bnVs'@; put 'bCk6KHRoaXMuX3RhaWwuX25leHREdXA9ZSxlLl9wcmV2RHVwPXRoaXMuX3RhaWwsZS5fbmV4dER1cD1udWxsLHRoaXMuX3RhaWw9ZSl9Z2V0KGUsdCl7bGV0IHI7Zm9yKHI9dGhpcy5faGVhZDtudWxsIT09cjtyPXIuX25leHREdXApaWYoKG51bGw9PT10fHx0PD1yLmN1cnJlbnRJbmRleCkm'@; put 'Jk9iamVjdC5pcyhyLnRyYWNrQnlJZCxlKSlyZXR1cm4gcjtyZXR1cm4gbnVsbH1yZW1vdmUoZSl7Y29uc3QgdD1lLl9wcmV2RHVwLHI9ZS5fbmV4dER1cDtyZXR1cm4gbnVsbD09PXQ/dGhpcy5faGVhZD1yOnQuX25leHREdXA9cixudWxsPT09cj90aGlzLl90YWlsPXQ6ci5fcHJldkR1cD10'@; put 'LG51bGw9PT10aGlzLl9oZWFkfX1jbGFzcyBidmV7bWFwPW5ldyBNYXA7cHV0KGUpe2NvbnN0IHQ9ZS50cmFja0J5SWQ7bGV0IHI9dGhpcy5tYXAuZ2V0KHQpO3J8fChyPW5ldyBYcnQsdGhpcy5tYXAuc2V0KHQscikpLHIuYWRkKGUpfWdldChlLHQpe2NvbnN0IGk9dGhpcy5tYXAuZ2V0KGUp'@; put 'O3JldHVybiBpP2kuZ2V0KGUsdCk6bnVsbH1yZW1vdmUoZSl7Y29uc3QgdD1lLnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAuZ2V0KHQpLnJlbW92ZShlKSYmdGhpcy5tYXAuZGVsZXRlKHQpLGV9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9Y2xlYXIoKXt0aGlzLm1h'@; put 'cC5jbGVhcigpfX1mdW5jdGlvbiB3dmUobixlLHQpe2NvbnN0IHI9bi5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1yKXJldHVybiByO2xldCBpPTA7cmV0dXJuIHQmJnI8dC5sZW5ndGgmJihpPXRbcl0pLHIrZStpfWNsYXNzIEN2ZXtjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyhlKXtyZXR1cm4g'@; put 'ZSBpbnN0YW5jZW9mIE1hcHx8VTAoZSl9Y3JlYXRlKCl7cmV0dXJuIG5ldyBRcnR9fWNsYXNzIFFydHtfcmVjb3Jkcz1uZXcgTWFwO19tYXBIZWFkPW51bGw7X2FwcGVuZEFmdGVyPW51bGw7X3ByZXZpb3VzTWFwSGVhZD1udWxsO19jaGFuZ2VzSGVhZD1udWxsO19jaGFuZ2VzVGFpbD1udWxs'@; put 'O19hZGRpdGlvbnNIZWFkPW51bGw7X2FkZGl0aW9uc1RhaWw9bnVsbDtfcmVtb3ZhbHNIZWFkPW51bGw7X3JlbW92YWxzVGFpbD1udWxsO2dldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fY2hhbmdlc0hlYWR8fG51bGwhPT10aGlz'@; put 'Ll9yZW1vdmFsc0hlYWR9Zm9yRWFjaEl0ZW0oZSl7bGV0IHQ7Zm9yKHQ9dGhpcy5fbWFwSGVhZDtudWxsIT09dDt0PXQuX25leHQpZSh0KX1mb3JFYWNoUHJldmlvdXNJdGVtKGUpe2xldCB0O2Zvcih0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09dDt0PXQuX25leHRQcmV2aW91cyll'@; put 'KHQpfWZvckVhY2hDaGFuZ2VkSXRlbShlKXtsZXQgdDtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQuX25leHRDaGFuZ2VkKWUodCl9Zm9yRWFjaEFkZGVkSXRlbShlKXtsZXQgdDtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT10O3Q9dC5fbmV4dEFkZGVkKWUo'@; put 'dCl9Zm9yRWFjaFJlbW92ZWRJdGVtKGUpe2xldCB0O2Zvcih0PXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09dDt0PXQuX25leHRSZW1vdmVkKWUodCl9ZGlmZihlKXtpZihlKXtpZighKGUgaW5zdGFuY2VvZiBNYXB8fFUwKGUpKSl0aHJvdyBuZXcgV24oOTAwLCExKX1lbHNlIGU9bmV3IE1h'@; put 'cDtyZXR1cm4gdGhpcy5jaGVjayhlKT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKGUpe3RoaXMuX3Jlc2V0KCk7bGV0IHQ9dGhpcy5fbWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2goZSwocixpKT0+e2lmKHQmJnQua2V5PT09aSl0aGlzLl9tYXli'@; put 'ZUFkZFRvQ2hhbmdlcyh0LHIpLHRoaXMuX2FwcGVuZEFmdGVyPXQsdD10Ll9uZXh0O2Vsc2V7Y29uc3Qgbz10aGlzLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShpLHIpO3Q9dGhpcy5faW5zZXJ0QmVmb3JlT3JBcHBlbmQodCxvKX19KSx0KXt0Ll9wcmV2JiYodC5fcHJldi5fbmV4dD1udWxs'@; put 'KSx0aGlzLl9yZW1vdmFsc0hlYWQ9dDtmb3IobGV0IHI9dDtudWxsIT09cjtyPXIuX25leHRSZW1vdmVkKXI9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1udWxsKSx0aGlzLl9yZWNvcmRzLmRlbGV0ZShyLmtleSksci5fbmV4dFJlbW92ZWQ9ci5fbmV4dCxyLnByZXZpb3VzVmFs'@; put 'dWU9ci5jdXJyZW50VmFsdWUsci5jdXJyZW50VmFsdWU9bnVsbCxyLl9wcmV2PW51bGwsci5fbmV4dD1udWxsfXJldHVybiB0aGlzLl9jaGFuZ2VzVGFpbCYmKHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD1udWxsKSx0aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25z'@; put 'VGFpbC5fbmV4dEFkZGVkPW51bGwpLHRoaXMuaXNEaXJ0eX1faW5zZXJ0QmVmb3JlT3JBcHBlbmQoZSx0KXtpZihlKXtjb25zdCByPWUuX3ByZXY7cmV0dXJuIHQuX25leHQ9ZSx0Ll9wcmV2PXIsZS5fcHJldj10LHImJihyLl9uZXh0PXQpLGU9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFw'@; put 'SGVhZD10KSx0aGlzLl9hcHBlbmRBZnRlcj1lLGV9cmV0dXJuIHRoaXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD10LHQuX3ByZXY9dGhpcy5fYXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9dCx0aGlzLl9hcHBlbmRBZnRlcj10LG51bGx9X2dldE9yQ3JlYXRlUmVj'@; put 'b3JkRm9yS2V5KGUsdCl7aWYodGhpcy5fcmVjb3Jkcy5oYXMoZSkpe2NvbnN0IGk9dGhpcy5fcmVjb3Jkcy5nZXQoZSk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoaSx0KTtjb25zdCBvPWkuX3ByZXYsYT1pLl9uZXh0O3JldHVybiBvJiYoby5fbmV4dD1hKSxhJiYoYS5fcHJldj1vKSxpLl9u'@; put 'ZXh0PW51bGwsaS5fcHJldj1udWxsLGl9Y29uc3Qgcj1uZXcgSnJ0KGUpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldChlLHIpLHIuY3VycmVudFZhbHVlPXQsdGhpcy5fYWRkVG9BZGRpdGlvbnMocikscn1fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCBlO2Zvcih0aGlzLl9wcmV2aW91'@; put 'c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCxlPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHQpZS5fbmV4dFByZXZpb3VzPWUuX25leHQ7Zm9yKGU9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0Q2hhbmdlZCllLnByZXZpb3VzVmFsdWU9ZS5jdXJyZW50'@; put 'VmFsdWU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT1lO2U9ZS5fbmV4dEFkZGVkKWUucHJldmlvdXNWYWx1ZT1lLmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFp'@; put 'bD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsfX1fbWF5YmVBZGRUb0NoYW5nZXMoZSx0KXtPYmplY3QuaXModCxlLmN1cnJlbnRWYWx1ZSl8fChlLnByZXZpb3VzVmFsdWU9ZS5jdXJyZW50VmFsdWUsZS5jdXJyZW50VmFsdWU9dCx0aGlzLl9hZGRUb0NoYW5nZXMoZSkpfV9hZGRUb0Fk'@; put 'ZGl0aW9ucyhlKXtudWxsPT09dGhpcy5fYWRkaXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9ZToodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPWUsdGhpcy5fYWRkaXRpb25zVGFpbD1lKX1fYWRkVG9DaGFuZ2VzKGUpe251bGw9PT10aGlz'@; put 'Ll9jaGFuZ2VzSGVhZD90aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1lOih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9ZSx0aGlzLl9jaGFuZ2VzVGFpbD1lKX1fZm9yRWFjaChlLHQpe2UgaW5zdGFuY2VvZiBNYXA/ZS5mb3JFYWNoKHQpOk9iamVjdC5rZXlzKGUp'@; put 'LmZvckVhY2gocj0+dChlW3JdLHIpKX19Y2xhc3MgSnJ0e2tleTtwcmV2aW91c1ZhbHVlPW51bGw7Y3VycmVudFZhbHVlPW51bGw7X25leHRQcmV2aW91cz1udWxsO19uZXh0PW51bGw7X3ByZXY9bnVsbDtfbmV4dEFkZGVkPW51bGw7X25leHRSZW1vdmVkPW51bGw7X25leHRDaGFuZ2VkPW51'@; put 'bGw7Y29uc3RydWN0b3IoZSl7dGhpcy5rZXk9ZX19ZnVuY3Rpb24gU3ZlKCl7cmV0dXJuIG5ldyBhdihbbmV3IHl2ZV0pfWxldCBhdj0oKCk9PntjbGFzcyBue2ZhY3RvcmllcztzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixwcm92aWRlZEluOiJyb290IixmYWN0b3J5OlN2ZX0pO2Nv'@; put 'bnN0cnVjdG9yKHQpe3RoaXMuZmFjdG9yaWVzPXR9c3RhdGljIGNyZWF0ZSh0LHIpe2lmKG51bGwhPXIpe2NvbnN0IGk9ci5mYWN0b3JpZXMuc2xpY2UoKTt0PXQuY29uY2F0KGkpfXJldHVybiBuZXcgbih0KX1zdGF0aWMgZXh0ZW5kKHQpe3JldHVybntwcm92aWRlOm4sdXNlRmFjdG9yeToo'@; put 'KT0+e2NvbnN0IHI9c24obix7b3B0aW9uYWw6ITAsc2tpcFNlbGY6ITB9KTtyZXR1cm4gbi5jcmVhdGUodCxyfHxTdmUoKSl9fX1maW5kKHQpe2NvbnN0IHI9dGhpcy5mYWN0b3JpZXMuZmluZChpPT5pLnN1cHBvcnRzKHQpKTtpZihudWxsIT1yKXJldHVybiByO3Rocm93IG5ldyBXbig5MDEs'@; put 'ITEpfX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gRXZlKCl7cmV0dXJuIG5ldyBkSShbbmV3IEN2ZV0pfWxldCBkST0oKCk9PntjbGFzcyBue3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6RXZlfSk7ZmFjdG9yaWVzO2NvbnN0cnVjdG9yKHQp'@; put 'e3RoaXMuZmFjdG9yaWVzPXR9c3RhdGljIGNyZWF0ZSh0LHIpe2lmKHIpe2NvbnN0IGk9ci5mYWN0b3JpZXMuc2xpY2UoKTt0PXQuY29uY2F0KGkpfXJldHVybiBuZXcgbih0KX1zdGF0aWMgZXh0ZW5kKHQpe3JldHVybntwcm92aWRlOm4sdXNlRmFjdG9yeTooKT0+e2NvbnN0IHI9c24obix7'@; put 'b3B0aW9uYWw6ITAsc2tpcFNlbGY6ITB9KTtyZXR1cm4gbi5jcmVhdGUodCxyfHxFdmUoKSl9fX1maW5kKHQpe2NvbnN0IHI9dGhpcy5mYWN0b3JpZXMuZmluZChpPT5pLnN1cHBvcnRzKHQpKTtpZihyKXJldHVybiByO3Rocm93IG5ldyBXbig5MDEsITEpfX1yZXR1cm4gbn0pKCk7Y29uc3Qg'@; put 'bml0PWd2ZShudWxsLCJjb3JlIixbXSk7bGV0IHJpdD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe31zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IoV2cpKX07c3RhdGljIFx1MDI3NW1vZD1HaSh7dHlwZTpufSk7c3RhdGljIFx1MDI3NWluaj1t'@; put 'aSh7fSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIFowKG4pe3JldHVybiJib29sZWFuIj09dHlwZW9mIG4/bjpudWxsIT1uJiYiZmFsc2UiIT09bn1mdW5jdGlvbiBNaXQobixlPU5hTil7cmV0dXJuIGlzTmFOKHBhcnNlRmxvYXQobikpfHxpc05hTihOdW1iZXIobikpP2U6TnVtYmVyKG4pfWZ1'@; put 'bmN0aW9uIGZJKG4sZSl7Y29uc3QgdD1jcyhuKSxyPWUuZWxlbWVudEluamVjdG9yfHxpNSgpO3JldHVybiBuZXcgQlIodCkuY3JlYXRlKHIsZS5wcm9qZWN0YWJsZU5vZGVzLGUuaG9zdEVsZW1lbnQsZS5lbnZpcm9ubWVudEluamVjdG9yLGUuZGlyZWN0aXZlcyxlLmJpbmRpbmdzKX1jb25z'@; put 'dCBGaXQ9ey4uLkcsY29uc3VtZXJJc0Fsd2F5c0xpdmU6ITAsY29uc3VtZXJBbGxvd1NpZ25hbFdyaXRlczohMCxkaXJ0eTohMCxraW5kOiJlZmZlY3QifTtmdW5jdGlvbiBOdShuKXtyZXR1cm4gZnVuY3Rpb24gTml0KG4pe2NvbnN0IGU9ayhudWxsKTt0cnl7cmV0dXJuIG4oKX1maW5hbGx5'@; put 'e2soZSl9fShuKX1mdW5jdGlvbiBuNChuLGUpe3JldHVybiBmdW5jdGlvbiB3ZShuLGUpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSgkdCk7dC5jb21wdXRhdGlvbj1uLHZvaWQgMCE9PWUmJih0LmVxdWFsPWUpO2NvbnN0IHI9KCk9PntpZihJKHQpLEQodCksdC52YWx1ZT09PUtlKXRocm93IHQu'@; put 'ZXJyb3I7cmV0dXJuIHQudmFsdWV9O3JldHVybiByW2JdPXQscn0obixlPy5lcXVhbCl9Y2xhc3MgV2l0e1tiXTtjb25zdHJ1Y3RvcihlKXt0aGlzW2JdPWV9ZGVzdHJveSgpe3RoaXNbYl0uZGVzdHJveSgpfX1jb25zdCB6dmU9ey4uLkZpdCxjbGVhbnVwRm5zOnZvaWQgMCx6b25lOm51bGws'@; put 'b25EZXN0cm95Rm46Z3kscnVuKCl7Y29uc3Qgbj10UyghMSk7dHJ5eyFmdW5jdGlvbiBQaXQobil7aWYobi5kaXJ0eT0hMSxuLnZlcnNpb24+MCYmIWFlKG4pKXJldHVybjtuLnZlcnNpb24rKztjb25zdCBlPW90KG4pO3RyeXtuLmNsZWFudXAoKSxuLmZuKCl9ZmluYWxseXtkdChuLGUpfX0o'@; put 'dGhpcyl9ZmluYWxseXt0UyhuKX19LGNsZWFudXAoKXtpZighdGhpcy5jbGVhbnVwRm5zPy5sZW5ndGgpcmV0dXJuO2NvbnN0IG49ayhudWxsKTt0cnl7Zm9yKDt0aGlzLmNsZWFudXBGbnMubGVuZ3RoOyl0aGlzLmNsZWFudXBGbnMucG9wKCkoKX1maW5hbGx5e3RoaXMuY2xlYW51cEZucz1b'@; put 'XSxrKG4pfX19LFlpdD17Li4uenZlLGNvbnN1bWVyTWFya2VkRGlydHkoKXt0aGlzLnNjaGVkdWxlci5zY2hlZHVsZSh0aGlzKSx0aGlzLm5vdGlmaWVyLm5vdGlmeSgxMil9LGRlc3Ryb3koKXt4ZSh0aGlzKSx0aGlzLm9uRGVzdHJveUZuKCksdGhpcy5jbGVhbnVwKCksdGhpcy5zY2hlZHVs'@; put 'ZXIucmVtb3ZlKHRoaXMpfX0sWml0PXsuLi56dmUsY29uc3VtZXJNYXJrZWREaXJ0eSgpe3RoaXMudmlld1syXXw9ODE5MixTMih0aGlzLnZpZXcpLHRoaXMubm90aWZpZXIubm90aWZ5KDEzKX0sZGVzdHJveSgpe3hlKHRoaXMpLHRoaXMub25EZXN0cm95Rm4oKSx0aGlzLmNsZWFudXAoKSx0'@; put 'aGlzLnZpZXdbMjNdPy5kZWxldGUodGhpcyl9fTtmdW5jdGlvbiBXdmUobixlKXtyZXR1cm4oKT0+e2UodD0+KG4uY2xlYW51cEZucz8/PVtdKS5wdXNoKHQpKX19RXJyb3IsRXJyb3I7bGV0IGlvdD0oKCk9PntjbGFzcyBuIGV4dGVuZHMgeXB7X3BsYXRmb3JtTG9jYXRpb247X2Jhc2VIcmVm'@; put 'PSIiO19yZW1vdmVMaXN0ZW5lckZucz1bXTtjb25zdHJ1Y3Rvcih0LHIpe3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj10LG51bGwhPXImJih0aGlzLl9iYXNlSHJlZj1yKX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1v'@; put 'dmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUodCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRo'@; put 'aXMuX2Jhc2VIcmVmfXBhdGgodD0hMSl7Y29uc3Qgcj10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g/PyIjIjtyZXR1cm4gci5sZW5ndGg+MD9yLnN1YnN0cmluZygxKTpyfXByZXBhcmVFeHRlcm5hbFVybCh0KXtjb25zdCByPUZBKHRoaXMuX2Jhc2VIcmVmLHQpO3JldHVybiByLmxlbmd0'@; put 'aD4wPyIjIityOnJ9cHVzaFN0YXRlKHQscixpLG8pe2NvbnN0IGE9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwoaStabShvKSl8fHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWU7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxyLGEpfXJlcGxhY2VTdGF0ZSh0LHIsaSxv'@; put 'KXtjb25zdCBhPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGkrWm0obykpfHx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQscixhKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFj'@; put 'aygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uZ2V0U3RhdGUoKX1oaXN0b3J5R28odD0wKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhpc3RvcnlHbz8uKHQpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24o'@; put 'cil7cmV0dXJuIG5ldyhyfHxuKShvcihOQSksb3Ioc1MsOCkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJuIG59KSgpO3ZhciBZMT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLkZvcm1hdD0wXT0iRm9ybWF0IixuW24uU3RhbmRhbG9u'@; put 'ZT0xXT0iU3RhbmRhbG9uZSIsbn0oWTF8fHt9KSxWYz1mdW5jdGlvbihuKXtyZXR1cm4gbltuLk5hcnJvdz0wXT0iTmFycm93IixuW24uQWJicmV2aWF0ZWQ9MV09IkFiYnJldmlhdGVkIixuW24uV2lkZT0yXT0iV2lkZSIsbltuLlNob3J0PTNdPSJTaG9ydCIsbn0oVmN8fHt9KSxNMz1mdW5j'@; put 'dGlvbihuKXtyZXR1cm4gbltuLlNob3J0PTBdPSJTaG9ydCIsbltuLk1lZGl1bT0xXT0iTWVkaXVtIixuW24uTG9uZz0yXT0iTG9uZyIsbltuLkZ1bGw9M109IkZ1bGwiLG59KE0zfHx7fSk7ZnVuY3Rpb24gUG5lKG4sZSx0KXtjb25zdCByPUwyKG4pLG89R2coW3JbR3UuRGF5c0Zvcm1hdF0s'@; put 'cltHdS5EYXlzU3RhbmRhbG9uZV1dLGUpO3JldHVybiBHZyhvLHQpfWZ1bmN0aW9uIEhuZShuLGUsdCl7Y29uc3Qgcj1MMihuKSxvPUdnKFtyW0d1Lk1vbnRoc0Zvcm1hdF0scltHdS5Nb250aHNTdGFuZGFsb25lXV0sZSk7cmV0dXJuIEdnKG8sdCl9ZnVuY3Rpb24gR2cobixlKXtmb3IobGV0'@; put 'IHQ9ZTt0Pi0xO3QtLSlpZih0eXBlb2Ygblt0XTwidSIpcmV0dXJuIG5bdF07dGhyb3cgbmV3IFduKDIzMDQsITEpfWNvbnN0ICRuZT0vXHMrLyxyX2U9W107bGV0IEZoPSgoKT0+e2NsYXNzIG57X25nRWw7X3JlbmRlcmVyO2luaXRpYWxDbGFzc2VzPXJfZTtyYXdDbGFzcztzdGF0ZU1hcD1u'@; put 'ZXcgTWFwO2NvbnN0cnVjdG9yKHQscil7dGhpcy5fbmdFbD10LHRoaXMuX3JlbmRlcmVyPXJ9c2V0IGtsYXNzKHQpe3RoaXMuaW5pdGlhbENsYXNzZXM9bnVsbCE9dD90LnRyaW0oKS5zcGxpdCgkbmUpOnJfZX1zZXQgbmdDbGFzcyh0KXt0aGlzLnJhd0NsYXNzPSJzdHJpbmciPT10eXBlb2Yg'@; put 'dD90LnRyaW0oKS5zcGxpdCgkbmUpOnR9bmdEb0NoZWNrKCl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5pbml0aWFsQ2xhc3Nlcyl0aGlzLl91cGRhdGVTdGF0ZShyLCEwKTtjb25zdCB0PXRoaXMucmF3Q2xhc3M7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldClmb3IoY29uc3Qg'@; put 'ciBvZiB0KXRoaXMuX3VwZGF0ZVN0YXRlKHIsITApO2Vsc2UgaWYobnVsbCE9dClmb3IoY29uc3QgciBvZiBPYmplY3Qua2V5cyh0KSl0aGlzLl91cGRhdGVTdGF0ZShyLCEhdFtyXSk7dGhpcy5fYXBwbHlTdGF0ZURpZmYoKX1fdXBkYXRlU3RhdGUodCxyKXtjb25zdCBpPXRoaXMuc3RhdGVN'@; put 'YXAuZ2V0KHQpO3ZvaWQgMCE9PWk/KGkuZW5hYmxlZCE9PXImJihpLmNoYW5nZWQ9ITAsaS5lbmFibGVkPXIpLGkudG91Y2hlZD0hMCk6dGhpcy5zdGF0ZU1hcC5zZXQodCx7ZW5hYmxlZDpyLGNoYW5nZWQ6ITAsdG91Y2hlZDohMH0pfV9hcHBseVN0YXRlRGlmZigpe2Zvcihjb25zdCB0IG9m'@; put 'IHRoaXMuc3RhdGVNYXApe2NvbnN0IHI9dFswXSxpPXRbMV07aS5jaGFuZ2VkPyh0aGlzLl90b2dnbGVDbGFzcyhyLGkuZW5hYmxlZCksaS5jaGFuZ2VkPSExKTppLnRvdWNoZWR8fChpLmVuYWJsZWQmJnRoaXMuX3RvZ2dsZUNsYXNzKHIsITEpLHRoaXMuc3RhdGVNYXAuZGVsZXRlKHIpKSxp'@; put 'LnRvdWNoZWQ9ITF9fV90b2dnbGVDbGFzcyh0LHIpeyh0PXQudHJpbSgpKS5sZW5ndGg+MCYmdC5zcGxpdCgkbmUpLmZvckVhY2goaT0+e3I/dGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LGkpOnRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMu'@; put 'X25nRWwubmF0aXZlRWxlbWVudCxpKX0pfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShubyksemUoTnQpKX07c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WzAsImNs'@; put 'YXNzIiwia2xhc3MiXSxuZ0NsYXNzOiJuZ0NsYXNzIn19KX1yZXR1cm4gbn0pKCk7Y2xhc3MgV290eyRpbXBsaWNpdDtuZ0Zvck9mO2luZGV4O2NvdW50O2NvbnN0cnVjdG9yKGUsdCxyLGkpe3RoaXMuJGltcGxpY2l0PWUsdGhpcy5uZ0Zvck9mPXQsdGhpcy5pbmRleD1yLHRoaXMuY291bnQ9'@; put 'aX1nZXQgZmlyc3QoKXtyZXR1cm4gMD09PXRoaXMuaW5kZXh9Z2V0IGxhc3QoKXtyZXR1cm4gdGhpcy5pbmRleD09PXRoaXMuY291bnQtMX1nZXQgZXZlbigpe3JldHVybiB0aGlzLmluZGV4JTI9PTB9Z2V0IG9kZCgpe3JldHVybiF0aGlzLmV2ZW59fWxldCBSZj0oKCk9PntjbGFzcyBue192'@; put 'aWV3Q29udGFpbmVyO190ZW1wbGF0ZTtfZGlmZmVycztzZXQgbmdGb3JPZih0KXt0aGlzLl9uZ0Zvck9mPXQsdGhpcy5fbmdGb3JPZkRpcnR5PSEwfXNldCBuZ0ZvclRyYWNrQnkodCl7dGhpcy5fdHJhY2tCeUZuPXR9Z2V0IG5nRm9yVHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59'@; put 'X25nRm9yT2Y9bnVsbDtfbmdGb3JPZkRpcnR5PSEwO19kaWZmZXI9bnVsbDtfdHJhY2tCeUZuO2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhpcy5fdGVtcGxhdGU9cix0aGlzLl9kaWZmZXJzPWl9c2V0IG5nRm9yVGVtcGxhdGUodCl7dCYmKHRoaXMuX3RlbXBs'@; put 'YXRlPXQpfW5nRG9DaGVjaygpe2lmKHRoaXMuX25nRm9yT2ZEaXJ0eSl7dGhpcy5fbmdGb3JPZkRpcnR5PSExO2NvbnN0IHQ9dGhpcy5fbmdGb3JPZjshdGhpcy5fZGlmZmVyJiZ0JiYodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0KS5jcmVhdGUodGhpcy5uZ0ZvclRyYWNrQnkp'@; put 'KX1pZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdGb3JPZik7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fYXBwbHlDaGFuZ2VzKHQpe2NvbnN0IHI9dGhpcy5fdmlld0NvbnRhaW5lcjt0LmZvckVhY2hPcGVyYXRpb24oKGksbyxhKT0+e2lmKG51'@; put 'bGw9PWkucHJldmlvdXNJbmRleClyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZSxuZXcgV290KGkuaXRlbSx0aGlzLl9uZ0Zvck9mLC0xLC0xKSxudWxsPT09YT92b2lkIDA6YSk7ZWxzZSBpZihudWxsPT1hKXIucmVtb3ZlKG51bGw9PT1vP3ZvaWQgMDpvKTtlbHNlIGlmKG51'@; put 'bGwhPT1vKXtjb25zdCBsPXIuZ2V0KG8pO3IubW92ZShsLGEpLG9fZShsLGkpfX0pO2ZvcihsZXQgaT0wLG89ci5sZW5ndGg7aTxvO2krKyl7Y29uc3QgbD1yLmdldChpKS5jb250ZXh0O2wuaW5kZXg9aSxsLmNvdW50PW8sbC5uZ0Zvck9mPXRoaXMuX25nRm9yT2Z9dC5mb3JFYWNoSWRlbnRp'@; put 'dHlDaGFuZ2UoaT0+e29fZShyLmdldChpLmN1cnJlbnRJbmRleCksaSl9KX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZCh0LHIpe3JldHVybiEwfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShEcyksemUoRmMpLHplKGF2KSl9O3N0YXRpYyBc'@; put 'dTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwibmdGb3IiLCIiLCJuZ0Zvck9mIiwiIl1dLGlucHV0czp7bmdGb3JPZjoibmdGb3JPZiIsbmdGb3JUcmFja0J5OiJuZ0ZvclRyYWNrQnkiLG5nRm9yVGVtcGxhdGU6Im5nRm9yVGVtcGxhdGUifX0pfXJldHVybiBufSkoKTtmdW5j'@; put 'dGlvbiBvX2UobixlKXtuLmNvbnRleHQuJGltcGxpY2l0PWUuaXRlbX1sZXQgWXM9KCgpPT57Y2xhc3Mgbntfdmlld0NvbnRhaW5lcjtfY29udGV4dD1uZXcgWW90O190aGVuVGVtcGxhdGVSZWY9bnVsbDtfZWxzZVRlbXBsYXRlUmVmPW51bGw7X3RoZW5WaWV3UmVmPW51bGw7X2Vsc2VWaWV3'@; put 'UmVmPW51bGw7Y29uc3RydWN0b3IodCxyKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhpcy5fdGhlblRlbXBsYXRlUmVmPXJ9c2V0IG5nSWYodCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ9dGhpcy5fY29udGV4dC5uZ0lmPXQsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmVGhlbih0KXth'@; put 'X2UodCksdGhpcy5fdGhlblRlbXBsYXRlUmVmPXQsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZFbHNlKHQpe2FfZSh0KSx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9dCx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX1fdXBk'@; put 'YXRlVmlldygpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0P3RoaXMuX3RoZW5WaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmJiYodGhpcy5fdGhlblZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5l'@; put 'ci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGhlblRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSk6dGhpcy5fZWxzZVZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWYmJih0aGlzLl9lbHNl'@; put 'Vmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9lbHNlVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKX1zdGF0aWMgbmdJZlVzZUlmVHlwZUd1YXJkO3N0YXRpYyBuZ1RlbXBsYXRlR3VhcmRfbmdJZjtzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRH'@; put 'dWFyZCh0LHIpe3JldHVybiEwfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShEcyksemUoRmMpKX07c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJuZ0lmIiwiIl1dLGlucHV0czp7bmdJZjoibmdJZiIsbmdJZlRoZW46'@; put 'Im5nSWZUaGVuIixuZ0lmRWxzZToibmdJZkVsc2UifX0pfXJldHVybiBufSkoKTtjbGFzcyBZb3R7JGltcGxpY2l0PW51bGw7bmdJZj1udWxsfWZ1bmN0aW9uIGFfZShuLGUpe2lmKG4mJiFuLmNyZWF0ZUVtYmVkZGVkVmlldyl0aHJvdyBuZXcgV24oMjAyMCwhMSl9Y2xhc3MgcW5le192aWV3'@; put 'Q29udGFpbmVyUmVmO190ZW1wbGF0ZVJlZjtfY3JlYXRlZD0hMTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9ZSx0aGlzLl90ZW1wbGF0ZVJlZj10fWNyZWF0ZSgpe3RoaXMuX2NyZWF0ZWQ9ITAsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZp'@; put 'ZXcodGhpcy5fdGVtcGxhdGVSZWYpfWRlc3Ryb3koKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX1lbmZvcmNlU3RhdGUoZSl7ZSYmIXRoaXMuX2NyZWF0ZWQ/dGhpcy5jcmVhdGUoKTohZSYmdGhpcy5fY3JlYXRlZCYmdGhpcy5kZXN0cm95KCl9fWxl'@; put 'dCBBRT0oKCk9PntjbGFzcyBue19kZWZhdWx0Vmlld3M9W107X2RlZmF1bHRVc2VkPSExO19jYXNlQ291bnQ9MDtfbGFzdENhc2VDaGVja0luZGV4PTA7X2xhc3RDYXNlc01hdGNoZWQ9ITE7X25nU3dpdGNoO3NldCBuZ1N3aXRjaCh0KXt0aGlzLl9uZ1N3aXRjaD10LDA9PT10aGlzLl9jYXNl'@; put 'Q291bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQodCl7dGhpcy5fZGVmYXVsdFZpZXdzLnB1c2godCl9X21hdGNoQ2FzZSh0KXtjb25zdCByPXQ9PT10aGlzLl9uZ1N3aXRjaDtyZXR1cm4gdGhp'@; put 'cy5fbGFzdENhc2VzTWF0Y2hlZHx8PXIsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNr'@; put 'SW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxyfV91cGRhdGVEZWZhdWx0Q2FzZXModCl7aWYodGhpcy5fZGVmYXVsdFZpZXdzLmxlbmd0aD4wJiZ0IT09dGhpcy5fZGVmYXVsdFVzZWQpe3RoaXMuX2RlZmF1bHRVc2VkPXQ7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZGVmYXVsdFZp'@; put 'ZXdzKXIuZW5mb3JjZVN0YXRlKHQpfX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifX0pfXJldHVy'@; put 'biBufSkoKSxTVT0oKCk9PntjbGFzcyBue25nU3dpdGNoO192aWV3O25nU3dpdGNoQ2FzZTtjb25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy5uZ1N3aXRjaD1pLGkuX2FkZENhc2UoKSx0aGlzLl92aWV3PW5ldyBxbmUodCxyKX1uZ0RvQ2hlY2soKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlz'@; put 'Lm5nU3dpdGNoLl9tYXRjaENhc2UodGhpcy5uZ1N3aXRjaENhc2UpKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikoemUoRHMpLHplKEZjKSx6ZShBRSw5KSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2hD'@; put 'YXNlIiwiIl1dLGlucHV0czp7bmdTd2l0Y2hDYXNlOiJuZ1N3aXRjaENhc2UifX0pfXJldHVybiBufSkoKSxsX2U9KCgpPT57Y2xhc3MgbntfbmdFbDtfZGlmZmVycztfcmVuZGVyZXI7X25nU3R5bGU9bnVsbDtfZGlmZmVyPW51bGw7Y29uc3RydWN0b3IodCxyLGkpe3RoaXMuX25nRWw9dCx0'@; put 'aGlzLl9kaWZmZXJzPXIsdGhpcy5fcmVuZGVyZXI9aX1zZXQgbmdTdHlsZSh0KXt0aGlzLl9uZ1N0eWxlPXQsIXRoaXMuX2RpZmZlciYmdCYmKHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlcil7Y29uc3QgdD10'@; put 'aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fV9zZXRTdHlsZSh0LHIpe2NvbnN0W2ksb109dC5zcGxpdCgiLiIpLGE9LTE9PT1pLmluZGV4T2YoIi0iKT92b2lkIDA6QTUuRGFzaENhc2U7bnVsbCE9cj90aGlzLl9yZW5kZXJlci5zZXRT'@; put 'dHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsaSxvP2Ake3J9JHtvfWA6cixhKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsaSxhKX1fYXBwbHlDaGFuZ2VzKHQpe3QuZm9yRWFjaFJlbW92ZWRJdGVtKHI9PnRoaXMuX3NldFN0eWxlKHIu'@; put 'a2V5LG51bGwpKSx0LmZvckVhY2hBZGRlZEl0ZW0ocj0+dGhpcy5fc2V0U3R5bGUoci5rZXksci5jdXJyZW50VmFsdWUpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbShyPT50aGlzLl9zZXRTdHlsZShyLmtleSxyLmN1cnJlbnRWYWx1ZSkpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0'@; put 'dXJuIG5ldyhyfHxuKSh6ZShubyksemUoZEkpLHplKE50KSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwibmdTdHlsZSIsIiJdXSxpbnB1dHM6e25nU3R5bGU6Im5nU3R5bGUifX0pfXJldHVybiBufSkoKSxJZj0oKCk9PntjbGFzcyBue192aWV3Q29udGFp'@; put 'bmVyUmVmO192aWV3UmVmPW51bGw7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ9bnVsbDtuZ1RlbXBsYXRlT3V0bGV0PW51bGw7bmdUZW1wbGF0ZU91dGxldEluamVjdG9yPW51bGw7Y29uc3RydWN0b3IodCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMu'@; put 'X3Nob3VsZFJlY3JlYXRlVmlldyh0KSl7Y29uc3Qgcj10aGlzLl92aWV3Q29udGFpbmVyUmVmO2lmKHRoaXMuX3ZpZXdSZWYmJnIucmVtb3ZlKHIuaW5kZXhPZih0aGlzLl92aWV3UmVmKSksIXRoaXMubmdUZW1wbGF0ZU91dGxldClyZXR1cm4gdm9pZCh0aGlzLl92aWV3UmVmPW51bGwpO2Nv'@; put 'bnN0IGk9dGhpcy5fY3JlYXRlQ29udGV4dEZvcndhcmRQcm94eSgpO3RoaXMuX3ZpZXdSZWY9ci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1RlbXBsYXRlT3V0bGV0LGkse2luamVjdG9yOnRoaXMubmdUZW1wbGF0ZU91dGxldEluamVjdG9yPz92b2lkIDB9KX19X3Nob3VsZFJlY3JlYXRl'@; put 'Vmlldyh0KXtyZXR1cm4hIXQubmdUZW1wbGF0ZU91dGxldHx8ISF0Lm5nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcn1fY3JlYXRlQ29udGV4dEZvcndhcmRQcm94eSgpe3JldHVybiBuZXcgUHJveHkoe30se3NldDoodCxyLGkpPT4hIXRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQmJlJlZmxl'@; put 'Y3Quc2V0KHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQscixpKSxnZXQ6KHQscixpKT0+e2lmKHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpcmV0dXJuIFJlZmxlY3QuZ2V0KHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQscixpKX19KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0'@; put 'aW9uKHIpe3JldHVybiBuZXcocnx8bikoemUoRHMpKX07c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBs'@; put 'YXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0IixuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I6Im5nVGVtcGxhdGVPdXRsZXRJbmplY3RvciJ9LGZlYXR1cmVzOltpdV19KX1yZXR1cm4gbn0pKCk7Y2xhc3MgJG90e2NyZWF0ZVN1YnNjcmlwdGlvbihlLHQscil7cmV0dXJuIE51KCgpPT5lLnN1'@; put 'YnNjcmliZSh7bmV4dDp0LGVycm9yOnJ9KSl9ZGlzcG9zZShlKXtOdSgoKT0+ZS51bnN1YnNjcmliZSgpKX19Y2xhc3MgcW90e2NyZWF0ZVN1YnNjcmlwdGlvbihlLHQscil7cmV0dXJuIGUudGhlbihpPT50Py4oaSksaT0+cj8uKGkpKSx7dW5zdWJzY3JpYmU6KCk9Pnt0PW51bGwscj1udWxs'@; put 'fX19ZGlzcG9zZShlKXtlLnVuc3Vic2NyaWJlKCl9fWNvbnN0IEtvdD1uZXcgcW90LFhvdD1uZXcgJG90O2xldCBtST0oKCk9PntjbGFzcyBue19yZWY7X2xhdGVzdFZhbHVlPW51bGw7bWFya0ZvckNoZWNrT25WYWx1ZVVwZGF0ZT0hMDtfc3Vic2NyaXB0aW9uPW51bGw7X29iaj1udWxsO19z'@; put 'dHJhdGVneT1udWxsO2FwcGxpY2F0aW9uRXJyb3JIYW5kbGVyPXNuKF9wKTtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZWY9dH1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fZGlzcG9zZSgpLHRoaXMuX3JlZj1udWxsfXRyYW5zZm9ybSh0KXtpZighdGhpcy5fb2JqKXtp'@; put 'Zih0KXRyeXt0aGlzLm1hcmtGb3JDaGVja09uVmFsdWVVcGRhdGU9ITEsdGhpcy5fc3Vic2NyaWJlKHQpfWZpbmFsbHl7dGhpcy5tYXJrRm9yQ2hlY2tPblZhbHVlVXBkYXRlPSEwfXJldHVybiB0aGlzLl9sYXRlc3RWYWx1ZX1yZXR1cm4gdCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgp'@; put 'LHRoaXMudHJhbnNmb3JtKHQpKTp0aGlzLl9sYXRlc3RWYWx1ZX1fc3Vic2NyaWJlKHQpe3RoaXMuX29iaj10LHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KHQpLHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24odCxyPT50aGlz'@; put 'Ll91cGRhdGVMYXRlc3RWYWx1ZSh0LHIpLHI9PnRoaXMuYXBwbGljYXRpb25FcnJvckhhbmRsZXIocikpfV9zZWxlY3RTdHJhdGVneSh0KXtpZihaUih0KSlyZXR1cm4gS290O2lmKGg4ZSh0KSlyZXR1cm4gWG90O3Rocm93IGZ1bmN0aW9uIGk0KG4sZSl7cmV0dXJuIG5ldyBXbigyMTAwLCEx'@; put 'KX0oKX1fZGlzcG9zZSgpe3RoaXMuX3N0cmF0ZWd5LmRpc3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsfV91cGRhdGVMYXRlc3RWYWx1ZSh0LHIpe3Q9PT10aGlzLl9vYmomJih0aGlz'@; put 'Ll9sYXRlc3RWYWx1ZT1yLHRoaXMubWFya0ZvckNoZWNrT25WYWx1ZVVwZGF0ZSYmdGhpcy5fcmVmPy5tYXJrRm9yQ2hlY2soKSl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHplKFVsLDE2KSl9O3N0YXRpYyBcdTAyNzVwaXBlPXVoKHtuYW1lOiJhc3lu'@; put 'YyIsdHlwZTpuLHB1cmU6ITF9KX1yZXR1cm4gbn0pKCksS25lPSgoKT0+e2NsYXNzIG57dHJhbnNmb3JtKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cGlwZT11aCh7'@; put 'bmFtZToianNvbiIsdHlwZTpuLHB1cmU6ITF9KX1yZXR1cm4gbn0pKCksRVU9KCgpPT57Y2xhc3MgbntkaWZmZXJzO2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlmZmVycz10fWRpZmZlcjtrZXlWYWx1ZXM9W107Y29tcGFyZUZuPWNfZTt0cmFuc2Zvcm0odCxyPWNfZSl7aWYoIXR8fCEodCBpbnN0'@; put 'YW5jZW9mIE1hcCkmJiJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0aGlzLmRpZmZlcj8/PXRoaXMuZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpO2NvbnN0IGk9dGhpcy5kaWZmZXIuZGlmZih0KSxvPXIhPT10aGlzLmNvbXBhcmVGbjtyZXR1cm4gaSYmKHRoaXMua2V5VmFsdWVzPVtd'@; put 'LGkuZm9yRWFjaEl0ZW0oYT0+e3RoaXMua2V5VmFsdWVzLnB1c2goZnVuY3Rpb24gY2F0KG4sZSl7cmV0dXJue2tleTpuLHZhbHVlOmV9fShhLmtleSxhLmN1cnJlbnRWYWx1ZSkpfSkpLChpfHxvKSYmKHImJnRoaXMua2V5VmFsdWVzLnNvcnQociksdGhpcy5jb21wYXJlRm49ciksdGhpcy5r'@; put 'ZXlWYWx1ZXN9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHplKGRJLDE2KSl9O3N0YXRpYyBcdTAyNzVwaXBlPXVoKHtuYW1lOiJrZXl2YWx1ZSIsdHlwZTpuLHB1cmU6ITF9KX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gY19lKG4sZSl7Y29uc3QgdD1uLmtl'@; put 'eSxyPWUua2V5O2lmKHQ9PT1yKXJldHVybiAwO2lmKG51bGw9PXQpcmV0dXJuIDE7aWYobnVsbD09cilyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHQmJiJzdHJpbmciPT10eXBlb2YgcilyZXR1cm4gdDxyPy0xOjE7aWYoIm51bWJlciI9PXR5cGVvZiB0JiYibnVtYmVyIj09dHlwZW9m'@; put 'IHIpcmV0dXJuIHQtcjtpZigiYm9vbGVhbiI9PXR5cGVvZiB0JiYiYm9vbGVhbiI9PXR5cGVvZiByKXJldHVybiB0PHI/LTE6MTtjb25zdCBpPVN0cmluZyh0KSxvPVN0cmluZyhyKTtyZXR1cm4gaT09bz8wOmk8bz8tMToxfWxldCBxbz0oKCk9PntjbGFzcyBue3N0YXRpYyBcdTAyNzVmYWM9'@; put 'ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NW1vZD1HaSh7dHlwZTpufSk7c3RhdGljIFx1MDI3NWluaj1taSh7fSl9cmV0dXJuIG59KSgpO2NsYXNzIHVfZXtfZG9jO2NvbnN0cnVjdG9yKGUpe3RoaXMuX2RvYz1lfW1hbmFnZXJ9bGV0IEpuZT0oKCk9PntjbGFz'@; put 'cyBuIGV4dGVuZHMgdV9le2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN1cHBvcnRzKHQpe3JldHVybiEwfWFkZEV2ZW50TGlzdGVuZXIodCxyLGksbyl7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihyLGksbyksKCk9PnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIsaSxvKX1yZW1vdmVF'@; put 'dmVudExpc3RlbmVyKHQscixpLG8pe3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIocixpLG8pfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihUbCkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9'@; put 'cmV0dXJuIG59KSgpO2NvbnN0IGVyZT1uZXcgRXIoIiIpO2xldCBkX2U9KCgpPT57Y2xhc3Mgbntfem9uZTtfcGx1Z2lucztfZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcDtjb25zdHJ1Y3Rvcih0LHIpe3RoaXMuX3pvbmU9cix0LmZvckVhY2goYT0+e2EubWFuYWdlcj10aGlzfSk7Y29uc3Qg'@; put 'aT10LmZpbHRlcihhPT4hKGEgaW5zdGFuY2VvZiBKbmUpKTt0aGlzLl9wbHVnaW5zPWkuc2xpY2UoKS5yZXZlcnNlKCk7Y29uc3Qgbz10LmZpbmQoYT0+YSBpbnN0YW5jZW9mIEpuZSk7byYmdGhpcy5fcGx1Z2lucy5wdXNoKG8pfWFkZEV2ZW50TGlzdGVuZXIodCxyLGksbyl7cmV0dXJuIHRo'@; put 'aXMuX2ZpbmRQbHVnaW5Gb3IocikuYWRkRXZlbnRMaXN0ZW5lcih0LHIsaSxvKX1nZXRab25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9X2ZpbmRQbHVnaW5Gb3IodCl7bGV0IHI9dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KHQpO2lmKHIpcmV0dXJuIHI7aWYocj10aGlzLl9wbHVnaW5zLmZp'@; put 'bmQobz0+by5zdXBwb3J0cyh0KSksIXIpdGhyb3cgbmV3IFduKDUxMDEsITEpO3JldHVybiB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQodCxyKSxyfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihlcmUpLG9yKGdhKSl9O3N0YXRpYyBcdTAyNzVw'@; put 'cm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KX1yZXR1cm4gbn0pKCk7Y29uc3QgdHJlPSJuZy1hcHAtaWQiO2Z1bmN0aW9uIGhfZShuKXtmb3IoY29uc3QgZSBvZiBuKWUucmVtb3ZlKCl9ZnVuY3Rpb24gZl9lKG4sZSl7Y29uc3QgdD1lLmNyZWF0ZUVsZW1lbnQoInN0eWxl'@; put 'Iik7cmV0dXJuIHQudGV4dENvbnRlbnQ9bix0fWZ1bmN0aW9uIG5yZShuLGUpe2NvbnN0IHQ9ZS5jcmVhdGVFbGVtZW50KCJsaW5rIik7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJyZWwiLCJzdHlsZXNoZWV0IiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHR9bGV0IHBfZT0oKCk9PntjbGFz'@; put 'cyBue2RvYzthcHBJZDtub25jZTtpbmxpbmU9bmV3IE1hcDtleHRlcm5hbD1uZXcgTWFwO2hvc3RzPW5ldyBTZXQ7Y29uc3RydWN0b3IodCxyLGksbz17fSl7dGhpcy5kb2M9dCx0aGlzLmFwcElkPXIsdGhpcy5ub25jZT1pLGZ1bmN0aW9uIGZhdChuLGUsdCxyKXtjb25zdCBpPW4uaGVhZD8u'@; put 'cXVlcnlTZWxlY3RvckFsbChgc3R5bGVbJHt0cmV9PSIke2V9Il0sbGlua1ske3RyZX09IiR7ZX0iXWApO2lmKGkpZm9yKGNvbnN0IG8gb2YgaSlvLnJlbW92ZUF0dHJpYnV0ZSh0cmUpLG8gaW5zdGFuY2VvZiBIVE1MTGlua0VsZW1lbnQ/ci5zZXQoby5ocmVmLnNsaWNlKG8uaHJlZi5sYXN0'@; put 'SW5kZXhPZigiLyIpKzEpLHt1c2FnZTowLGVsZW1lbnRzOltvXX0pOm8udGV4dENvbnRlbnQmJnQuc2V0KG8udGV4dENvbnRlbnQse3VzYWdlOjAsZWxlbWVudHM6W29dfSl9KHQscix0aGlzLmlubGluZSx0aGlzLmV4dGVybmFsKSx0aGlzLmhvc3RzLmFkZCh0LmhlYWQpfWFkZFN0eWxlcyh0'@; put 'LHIpe2Zvcihjb25zdCBpIG9mIHQpdGhpcy5hZGRVc2FnZShpLHRoaXMuaW5saW5lLGZfZSk7cj8uZm9yRWFjaChpPT50aGlzLmFkZFVzYWdlKGksdGhpcy5leHRlcm5hbCxucmUpKX1yZW1vdmVTdHlsZXModCxyKXtmb3IoY29uc3QgaSBvZiB0KXRoaXMucmVtb3ZlVXNhZ2UoaSx0aGlzLmlu'@; put 'bGluZSk7cj8uZm9yRWFjaChpPT50aGlzLnJlbW92ZVVzYWdlKGksdGhpcy5leHRlcm5hbCkpfWFkZFVzYWdlKHQscixpKXtjb25zdCBvPXIuZ2V0KHQpO28/by51c2FnZSsrOnIuc2V0KHQse3VzYWdlOjEsZWxlbWVudHM6Wy4uLnRoaXMuaG9zdHNdLm1hcChhPT50aGlzLmFkZEVsZW1lbnQo'@; put 'YSxpKHQsdGhpcy5kb2MpKSl9KX1yZW1vdmVVc2FnZSh0LHIpe2NvbnN0IGk9ci5nZXQodCk7aSYmKGkudXNhZ2UtLSxpLnVzYWdlPD0wJiYoaF9lKGkuZWxlbWVudHMpLHIuZGVsZXRlKHQpKSl9bmdPbkRlc3Ryb3koKXtmb3IoY29uc3RbLHtlbGVtZW50czp0fV1vZlsuLi50aGlzLmlubGlu'@; put 'ZSwuLi50aGlzLmV4dGVybmFsXSloX2UodCk7dGhpcy5ob3N0cy5jbGVhcigpfWFkZEhvc3QodCl7dGhpcy5ob3N0cy5hZGQodCk7Zm9yKGNvbnN0W3Ise2VsZW1lbnRzOml9XW9mIHRoaXMuaW5saW5lKWkucHVzaCh0aGlzLmFkZEVsZW1lbnQodCxmX2Uocix0aGlzLmRvYykpKTtmb3IoY29u'@; put 'c3Rbcix7ZWxlbWVudHM6aX1db2YgdGhpcy5leHRlcm5hbClpLnB1c2godGhpcy5hZGRFbGVtZW50KHQsbnJlKHIsdGhpcy5kb2MpKSl9cmVtb3ZlSG9zdCh0KXt0aGlzLmhvc3RzLmRlbGV0ZSh0KX1hZGRFbGVtZW50KHQscil7cmV0dXJuIHRoaXMubm9uY2UmJnIuc2V0QXR0cmlidXRlKCJu'@; put 'b25jZSIsdGhpcy5ub25jZSksdC5hcHBlbmRDaGlsZChyKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IoVGwpLG9yKEw5KSxvcihjViw4KSxvcihsZCkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9'@; put 'cmV0dXJuIG59KSgpO2NvbnN0IHJyZT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25h'@; put 'bWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIn0saXJlPS8lQ09NUCUvZyx5YXQ9bmV3IEVyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4hMH0pO2Z1bmN0aW9uIG1f'@; put 'ZShuLGUpe3JldHVybiBlLm1hcCh0PT50LnJlcGxhY2UoaXJlLG4pKX1sZXQgb3JlPSgoKT0+e2NsYXNzIG57ZXZlbnRNYW5hZ2VyO3NoYXJlZFN0eWxlc0hvc3Q7YXBwSWQ7cmVtb3ZlU3R5bGVzT25Db21wRGVzdHJveTtkb2M7bmdab25lO25vbmNlO3RyYWNpbmdTZXJ2aWNlO3JlbmRlcmVy'@; put 'QnlDb21wSWQ9bmV3IE1hcDtkZWZhdWx0UmVuZGVyZXI7cGxhdGZvcm1Jc1NlcnZlcjtjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCx1PW51bGwsZz1udWxsKXt0aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1yLHRoaXMuYXBwSWQ9aSx0aGlzLnJlbW92ZVN0eWxlc09u'@; put 'Q29tcERlc3Ryb3k9byx0aGlzLmRvYz1hLHRoaXMubmdab25lPWwsdGhpcy5ub25jZT11LHRoaXMudHJhY2luZ1NlcnZpY2U9Zyx0aGlzLnBsYXRmb3JtSXNTZXJ2ZXI9ITEsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IGFyZSh0LGEsbCx0aGlzLnBsYXRmb3JtSXNTZXJ2ZXIsdGhpcy50cmFj'@; put 'aW5nU2VydmljZSl9Y3JlYXRlUmVuZGVyZXIodCxyKXtpZighdHx8IXIpcmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyO2NvbnN0IGk9dGhpcy5nZXRPckNyZWF0ZVJlbmRlcmVyKHQscik7cmV0dXJuIGkgaW5zdGFuY2VvZiBfX2U/aS5hcHBseVRvSG9zdCh0KTppIGluc3RhbmNlb2Ygc3Jl'@; put 'JiZpLmFwcGx5U3R5bGVzKCksaX1nZXRPckNyZWF0ZVJlbmRlcmVyKHQscil7Y29uc3QgaT10aGlzLnJlbmRlcmVyQnlDb21wSWQ7bGV0IG89aS5nZXQoci5pZCk7aWYoIW8pe2NvbnN0IGE9dGhpcy5kb2MsbD10aGlzLm5nWm9uZSx1PXRoaXMuZXZlbnRNYW5hZ2VyLGc9dGhpcy5zaGFyZWRT'@; put 'dHlsZXNIb3N0LEU9dGhpcy5yZW1vdmVTdHlsZXNPbkNvbXBEZXN0cm95LE89dGhpcy5wbGF0Zm9ybUlzU2VydmVyLFo9dGhpcy50cmFjaW5nU2VydmljZTtzd2l0Y2goci5lbmNhcHN1bGF0aW9uKXtjYXNlIFFtLkVtdWxhdGVkOm89bmV3IF9fZSh1LGcscix0aGlzLmFwcElkLEUsYSxsLE8s'@; put 'Wik7YnJlYWs7Y2FzZSBRbS5TaGFkb3dEb206cmV0dXJuIG5ldyBTYXQodSxnLHQscixhLGwsdGhpcy5ub25jZSxPLFopO2RlZmF1bHQ6bz1uZXcgc3JlKHUsZyxyLEUsYSxsLE8sWil9aS5zZXQoci5pZCxvKX1yZXR1cm4gb31uZ09uRGVzdHJveSgpe3RoaXMucmVuZGVyZXJCeUNvbXBJZC5j'@; put 'bGVhcigpfWNvbXBvbmVudFJlcGxhY2VkKHQpe3RoaXMucmVuZGVyZXJCeUNvbXBJZC5kZWxldGUodCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKG9yKGRfZSksb3IocF9lKSxvcihMOSksb3IoeWF0KSxvcihUbCksb3IoZ2EpLG9yKGNWKSxvcih6OSw4'@; put 'KSl9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KX1yZXR1cm4gbn0pKCk7Y2xhc3MgYXJle2V2ZW50TWFuYWdlcjtkb2M7bmdab25lO3BsYXRmb3JtSXNTZXJ2ZXI7dHJhY2luZ1NlcnZpY2U7ZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpO3Rocm93'@; put 'T25TeW50aGV0aWNQcm9wcz0hMDtjb25zdHJ1Y3RvcihlLHQscixpLG8pe3RoaXMuZXZlbnRNYW5hZ2VyPWUsdGhpcy5kb2M9dCx0aGlzLm5nWm9uZT1yLHRoaXMucGxhdGZvcm1Jc1NlcnZlcj1pLHRoaXMudHJhY2luZ1NlcnZpY2U9b31kZXN0cm95KCl7fWRlc3Ryb3lOb2RlPW51bGw7Y3Jl'@; put 'YXRlRWxlbWVudChlLHQpe3JldHVybiB0P3RoaXMuZG9jLmNyZWF0ZUVsZW1lbnROUyhycmVbdF18fHQsZSk6dGhpcy5kb2MuY3JlYXRlRWxlbWVudChlKX1jcmVhdGVDb21tZW50KGUpe3JldHVybiB0aGlzLmRvYy5jcmVhdGVDb21tZW50KGUpfWNyZWF0ZVRleHQoZSl7cmV0dXJuIHRoaXMu'@; put 'ZG9jLmNyZWF0ZVRleHROb2RlKGUpfWFwcGVuZENoaWxkKGUsdCl7KHZfZShlKT9lLmNvbnRlbnQ6ZSkuYXBwZW5kQ2hpbGQodCl9aW5zZXJ0QmVmb3JlKGUsdCxyKXtlJiYodl9lKGUpP2UuY29udGVudDplKS5pbnNlcnRCZWZvcmUodCxyKX1yZW1vdmVDaGlsZChlLHQpe3QucmVtb3ZlKCl9'@; put 'c2VsZWN0Um9vdEVsZW1lbnQoZSx0KXtsZXQgcj0ic3RyaW5nIj09dHlwZW9mIGU/dGhpcy5kb2MucXVlcnlTZWxlY3RvcihlKTplO2lmKCFyKXRocm93IG5ldyBXbigtNTEwNCwhMSk7cmV0dXJuIHR8fChyLnRleHRDb250ZW50PSIiKSxyfXBhcmVudE5vZGUoZSl7cmV0dXJuIGUucGFyZW50'@; put 'Tm9kZX1uZXh0U2libGluZyhlKXtyZXR1cm4gZS5uZXh0U2libGluZ31zZXRBdHRyaWJ1dGUoZSx0LHIsaSl7aWYoaSl7dD1pKyI6Iit0O2NvbnN0IG89cnJlW2ldO28/ZS5zZXRBdHRyaWJ1dGVOUyhvLHQscik6ZS5zZXRBdHRyaWJ1dGUodCxyKX1lbHNlIGUuc2V0QXR0cmlidXRlKHQscil9'@; put 'cmVtb3ZlQXR0cmlidXRlKGUsdCxyKXtpZihyKXtjb25zdCBpPXJyZVtyXTtpP2UucmVtb3ZlQXR0cmlidXRlTlMoaSx0KTplLnJlbW92ZUF0dHJpYnV0ZShgJHtyfToke3R9YCl9ZWxzZSBlLnJlbW92ZUF0dHJpYnV0ZSh0KX1hZGRDbGFzcyhlLHQpe2UuY2xhc3NMaXN0LmFkZCh0KX1yZW1v'@; put 'dmVDbGFzcyhlLHQpe2UuY2xhc3NMaXN0LnJlbW92ZSh0KX1zZXRTdHlsZShlLHQscixpKXtpJihBNS5EYXNoQ2FzZXxBNS5JbXBvcnRhbnQpP2Uuc3R5bGUuc2V0UHJvcGVydHkodCxyLGkmQTUuSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTplLnN0eWxlW3RdPXJ9cmVtb3ZlU3R5bGUoZSx0'@; put 'LHIpe3ImQTUuRGFzaENhc2U/ZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTplLnN0eWxlW3RdPSIifXNldFByb3BlcnR5KGUsdCxyKXtudWxsIT1lJiYoZVt0XT1yKX1zZXRWYWx1ZShlLHQpe2Uubm9kZVZhbHVlPXR9bGlzdGVuKGUsdCxyLGkpe2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIShl'@; put 'PWw1KCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5kb2MsZSkpKXRocm93IG5ldyBXbig1MTAyLCExKTtsZXQgbz10aGlzLmRlY29yYXRlUHJldmVudERlZmF1bHQocik7cmV0dXJuIHRoaXMudHJhY2luZ1NlcnZpY2U/LndyYXBFdmVudExpc3RlbmVyJiYobz10aGlzLnRyYWNpbmdTZXJ2'@; put 'aWNlLndyYXBFdmVudExpc3RlbmVyKGUsdCxvKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihlLHQsbyxpKX1kZWNvcmF0ZVByZXZlbnREZWZhdWx0KGUpe3JldHVybiB0PT57aWYoIl9fbmdVbndyYXBfXyI9PT10KXJldHVybiBlOyExPT09ZSh0KSYmdC5wcmV2ZW50RGVm'@; put 'YXVsdCgpfX19ZnVuY3Rpb24gdl9lKG4pe3JldHVybiJURU1QTEFURSI9PT1uLnRhZ05hbWUmJnZvaWQgMCE9PW4uY29udGVudH1jbGFzcyBTYXQgZXh0ZW5kcyBhcmV7c2hhcmVkU3R5bGVzSG9zdDtob3N0RWw7c2hhZG93Um9vdDtjb25zdHJ1Y3RvcihlLHQscixpLG8sYSxsLHUsZyl7c3Vw'@; put 'ZXIoZSxvLGEsdSxnKSx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9dCx0aGlzLmhvc3RFbD1yLHRoaXMuc2hhZG93Um9vdD1yLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSx0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkSG9zdCh0aGlzLnNoYWRvd1Jvb3QpO2xldCBFPWkuc3R5bGVzO0U9bV9l'@; put 'KGkuaWQsRSk7Zm9yKGNvbnN0IFogb2YgRSl7Y29uc3QgZWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtsJiZlZS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixsKSxlZS50ZXh0Q29udGVudD1aLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChlZSl9Y29uc3QgTz1pLmdldEV4dGVy'@; put 'bmFsU3R5bGVzPy4oKTtpZihPKWZvcihjb25zdCBaIG9mIE8pe2NvbnN0IGVlPW5yZShaLG8pO2wmJmVlLnNldEF0dHJpYnV0ZSgibm9uY2UiLGwpLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChlZSl9fW5vZGVPclNoYWRvd1Jvb3QoZSl7cmV0dXJuIGU9PT10aGlzLmhvc3RFbD90aGlz'@; put 'LnNoYWRvd1Jvb3Q6ZX1hcHBlbmRDaGlsZChlLHQpe3JldHVybiBzdXBlci5hcHBlbmRDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QoZSksdCl9aW5zZXJ0QmVmb3JlKGUsdCxyKXtyZXR1cm4gc3VwZXIuaW5zZXJ0QmVmb3JlKHRoaXMubm9kZU9yU2hhZG93Um9vdChlKSx0LHIpfXJlbW92'@; put 'ZUNoaWxkKGUsdCl7cmV0dXJuIHN1cGVyLnJlbW92ZUNoaWxkKG51bGwsdCl9cGFyZW50Tm9kZShlKXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290KHN1cGVyLnBhcmVudE5vZGUodGhpcy5ub2RlT3JTaGFkb3dSb290KGUpKSl9ZGVzdHJveSgpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5y'@; put 'ZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9fWNsYXNzIHNyZSBleHRlbmRzIGFyZXtzaGFyZWRTdHlsZXNIb3N0O3JlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3k7c3R5bGVzO3N0eWxlVXJscztjb25zdHJ1Y3RvcihlLHQscixpLG8sYSxsLHUsZyl7c3VwZXIoZSxvLGEsbCx1KSx0aGlzLnNo'@; put 'YXJlZFN0eWxlc0hvc3Q9dCx0aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3k9aTtsZXQgRT1yLnN0eWxlczt0aGlzLnN0eWxlcz1nP21fZShnLEUpOkUsdGhpcy5zdHlsZVVybHM9ci5nZXRFeHRlcm5hbFN0eWxlcz8uKGcpfWFwcGx5U3R5bGVzKCl7dGhpcy5zaGFyZWRTdHlsZXNIb3N0'@; put 'LmFkZFN0eWxlcyh0aGlzLnN0eWxlcyx0aGlzLnN0eWxlVXJscyl9ZGVzdHJveSgpe3RoaXMucmVtb3ZlU3R5bGVzT25Db21wRGVzdHJveSYmMD09PWs1LnNpemUmJnRoaXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVTdHlsZXModGhpcy5zdHlsZXMsdGhpcy5zdHlsZVVybHMpfX1jbGFzcyBf'@; put 'X2UgZXh0ZW5kcyBzcmV7Y29udGVudEF0dHI7aG9zdEF0dHI7Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEsbCx1LGcpe2NvbnN0IEU9aSsiLSIrci5pZDtzdXBlcihlLHQscixvLGEsbCx1LGcsRSksdGhpcy5jb250ZW50QXR0cj1mdW5jdGlvbiBiYXQobil7cmV0dXJuIl9uZ2NvbnRlbnQtJUNP'@; put 'TVAlIi5yZXBsYWNlKGlyZSxuKX0oRSksdGhpcy5ob3N0QXR0cj1mdW5jdGlvbiB3YXQobil7cmV0dXJuIl9uZ2hvc3QtJUNPTVAlIi5yZXBsYWNlKGlyZSxuKX0oRSl9YXBwbHlUb0hvc3QoZSl7dGhpcy5hcHBseVN0eWxlcygpLHRoaXMuc2V0QXR0cmlidXRlKGUsdGhpcy5ob3N0QXR0ciwi'@; put 'Iil9Y3JlYXRlRWxlbWVudChlLHQpe2NvbnN0IHI9c3VwZXIuY3JlYXRlRWxlbWVudChlLHQpO3JldHVybiBzdXBlci5zZXRBdHRyaWJ1dGUocix0aGlzLmNvbnRlbnRBdHRyLCIiKSxyfX1jbGFzcyBscmUgZXh0ZW5kcyBUWHtzdXBwb3J0c0RPTUV2ZW50cz0hMDtzdGF0aWMgbWFrZUN1cnJl'@; put 'bnQoKXshZnVuY3Rpb24gTVgobil7YUg/Pz1ufShuZXcgbHJlKX1vbkFuZENhbmNlbChlLHQscixpKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKHQscixpKSwoKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIsaSl9fWRpc3BhdGNoRXZlbnQoZSx0KXtlLmRpc3BhdGNoRXZlbnQodCl9'@; put 'cmVtb3ZlKGUpe2UucmVtb3ZlKCl9Y3JlYXRlRWxlbWVudChlLHQpe3JldHVybih0PXR8fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQoZSl9Y3JlYXRlSHRtbERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVu'@; put 'dCgiZmFrZVRpdGxlIil9Z2V0RGVmYXVsdERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50fWlzRWxlbWVudE5vZGUoZSl7cmV0dXJuIGUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX1pc1NoYWRvd1Jvb3QoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50fWdldEds'@; put 'b2JhbEV2ZW50VGFyZ2V0KGUsdCl7cmV0dXJuIndpbmRvdyI9PT10P3dpbmRvdzoiZG9jdW1lbnQiPT09dD9lOiJib2R5Ij09PXQ/ZS5ib2R5Om51bGx9Z2V0QmFzZUhyZWYoZSl7Y29uc3QgdD1mdW5jdGlvbiBFYXQoKXtyZXR1cm4gdkk9dkl8fGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3Rv'@; put 'cigiYmFzZSIpLHZJP3ZJLmdldEF0dHJpYnV0ZSgiaHJlZiIpOm51bGx9KCk7cmV0dXJuIG51bGw9PXQ/bnVsbDpmdW5jdGlvbiBNYXQobil7cmV0dXJuIG5ldyBVUkwobixkb2N1bWVudC5iYXNlVVJJKS5wYXRobmFtZX0odCl9cmVzZXRCYXNlRWxlbWVudCgpe3ZJPW51bGx9Z2V0VXNlckFn'@; put 'ZW50KCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fWdldENvb2tpZShlKXtyZXR1cm4gbXkoZG9jdW1lbnQuY29va2llLGUpfX1sZXQgdkk9bnVsbCx4YXQ9KCgpPT57Y2xhc3MgbntidWlsZCgpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9c3RhdGljIFx1MDI3NWZhYz1m'@; put 'dW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJuIG59KSgpO2NvbnN0IGJfZT1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxBYXQ9eyJcYiI6IkJhY2tzcGFjZSIsIlx0Ijoi'@; put 'VGFiIiwiXHg3ZiI6IkRlbGV0ZSIsIlx4MWIiOiJFc2NhcGUiLERlbDoiRGVsZXRlIixFc2M6IkVzY2FwZSIsTGVmdDoiQXJyb3dMZWZ0IixSaWdodDoiQXJyb3dSaWdodCIsVXA6IkFycm93VXAiLERvd246IkFycm93RG93biIsTWVudToiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9j'@; put 'ayIsV2luOiJPUyJ9LGthdD17YWx0Om49Pm4uYWx0S2V5LGNvbnRyb2w6bj0+bi5jdHJsS2V5LG1ldGE6bj0+bi5tZXRhS2V5LHNoaWZ0Om49Pm4uc2hpZnRLZXl9O2xldCBSYXQ9KCgpPT57Y2xhc3MgbiBleHRlbmRzIHVfZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXty'@; put 'ZXR1cm4gbnVsbCE9bi5wYXJzZUV2ZW50TmFtZSh0KX1hZGRFdmVudExpc3RlbmVyKHQscixpLG8pe2NvbnN0IGE9bi5wYXJzZUV2ZW50TmFtZShyKSxsPW4uZXZlbnRDYWxsYmFjayhhLmZ1bGxLZXksaSx0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpv'@; put 'bmUoKS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bDUoKS5vbkFuZENhbmNlbCh0LGEuZG9tRXZlbnROYW1lLGwsbykpfXN0YXRpYyBwYXJzZUV2ZW50TmFtZSh0KXtjb25zdCByPXQudG9Mb3dlckNhc2UoKS5zcGxpdCgiLiIpLGk9ci5zaGlmdCgpO2lmKDA9PT1yLmxlbmd0aHx8ImtleWRvd24i'@; put 'IT09aSYmImtleXVwIiE9PWkpcmV0dXJuIG51bGw7Y29uc3Qgbz1uLl9ub3JtYWxpemVLZXkoci5wb3AoKSk7bGV0IGE9IiIsbD1yLmluZGV4T2YoImNvZGUiKTtpZihsPi0xJiYoci5zcGxpY2UobCwxKSxhPSJjb2RlLiIpLGJfZS5mb3JFYWNoKGc9Pntjb25zdCBFPXIuaW5kZXhPZihnKTtF'@; put 'Pi0xJiYoci5zcGxpY2UoRSwxKSxhKz1nKyIuIil9KSxhKz1vLDAhPXIubGVuZ3RofHwwPT09by5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgdT17fTtyZXR1cm4gdS5kb21FdmVudE5hbWU9aSx1LmZ1bGxLZXk9YSx1fXN0YXRpYyBtYXRjaEV2ZW50RnVsbEtleUNvZGUodCxyKXtsZXQgaT1B'@; put 'YXRbdC5rZXldfHx0LmtleSxvPSIiO3JldHVybiByLmluZGV4T2YoImNvZGUuIik+LTEmJihpPXQuY29kZSxvPSJjb2RlLiIpLCEobnVsbD09aXx8IWkpJiYoaT1pLnRvTG93ZXJDYXNlKCksIiAiPT09aT9pPSJzcGFjZSI6Ii4iPT09aSYmKGk9ImRvdCIpLGJfZS5mb3JFYWNoKGE9PnthIT09'@; put 'aSYmKDAsa2F0W2FdKSh0KSYmKG8rPWErIi4iKX0pLG8rPWksbz09PXIpfXN0YXRpYyBldmVudENhbGxiYWNrKHQscixpKXtyZXR1cm4gbz0+e24ubWF0Y2hFdmVudEZ1bGxLZXlDb2RlKG8sdCkmJmkucnVuR3VhcmRlZCgoKT0+cihvKSl9fXN0YXRpYyBfbm9ybWFsaXplS2V5KHQpe3JldHVy'@; put 'biJlc2MiPT09dD8iZXNjYXBlIjp0fXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihUbCkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJuIG59KSgpO2NvbnN0IENfZT1be3Byb3ZpZGU6bGQs'@; put 'dXNlVmFsdWU6ImJyb3dzZXIifSx7cHJvdmlkZTpzVix1c2VWYWx1ZTpmdW5jdGlvbiBJYXQoKXtscmUubWFrZUN1cnJlbnQoKX0sbXVsdGk6ITB9LHtwcm92aWRlOlRsLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTGF0KCl7cmV0dXJuIGZ1bmN0aW9uIE5RKG4pe3BrPW59KGRvY3VtZW50KSxkb2N1'@; put 'bWVudH19XSxPYXQ9Z3ZlKG5pdCwiYnJvd3NlciIsQ19lKSxTX2U9W3twcm92aWRlOndqLHVzZUNsYXNzOmNsYXNzIFRhdHthZGRUb1dpbmRvdyhlKXtJbC5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9KHIsaT0hMCk9Pntjb25zdCBvPWUuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHIsaSk7aWYobnVs'@; put 'bD09byl0aHJvdyBuZXcgV24oNTEwMywhMSk7cmV0dXJuIG99LElsLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPSgpPT5lLmdldEFsbFRlc3RhYmlsaXRpZXMoKSxJbC5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPSgpPT5lLmdldEFsbFJvb3RFbGVtZW50cygpLElsLmZyYW1ld29ya1N0'@; put 'YWJpbGl6ZXJzfHwoSWwuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLElsLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2gocj0+e2NvbnN0IGk9SWwuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtsZXQgbz1pLmxlbmd0aDtjb25zdCBhPWZ1bmN0aW9uKCl7by0tLDA9PW8mJnIoKX07aS5m'@; put 'b3JFYWNoKGw9PntsLndoZW5TdGFibGUoYSl9KX0pfWZpbmRUZXN0YWJpbGl0eUluVHJlZShlLHQscil7cmV0dXJuIG51bGw9PXQ/bnVsbDplLmdldFRlc3RhYmlsaXR5KHQpPz8ocj9sNSgpLmlzU2hhZG93Um9vdCh0KT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZShlLHQuaG9zdCwhMCk6'@; put 'dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUoZSx0LnBhcmVudEVsZW1lbnQsITApOm51bGwpfX19LHtwcm92aWRlOmQ4ZSx1c2VDbGFzczpJdGUsZGVwczpbZ2EsRHRlLHdqXX0se3Byb3ZpZGU6SXRlLHVzZUNsYXNzOkl0ZSxkZXBzOltnYSxEdGUsd2pdfV0sRV9lPVt7cHJvdmlkZTpvOCx1'@; put 'c2VWYWx1ZToicm9vdCJ9LHtwcm92aWRlOmc4LHVzZUZhY3Rvcnk6ZnVuY3Rpb24gRGF0KCl7cmV0dXJuIG5ldyBnOH19LHtwcm92aWRlOmVyZSx1c2VDbGFzczpKbmUsbXVsdGk6ITAsZGVwczpbVGxdfSx7cHJvdmlkZTplcmUsdXNlQ2xhc3M6UmF0LG11bHRpOiEwLGRlcHM6W1RsXX0sb3Jl'@; put 'LHBfZSxkX2Use3Byb3ZpZGU6Z2MsdXNlRXhpc3Rpbmc6b3JlfSx7cHJvdmlkZTpsSCx1c2VDbGFzczp4YXR9LFtdXTtsZXQgTV9lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1'@; put 'bW9kPUdpKHt0eXBlOm59KTtzdGF0aWMgXHUwMjc1aW5qPW1pKHtwcm92aWRlcnM6Wy4uLkVfZSwuLi5TX2VdLGltcG9ydHM6W3FvLHJpdF19KX1yZXR1cm4gbn0pKCk7aCgzNzQ4MiksaCg4MDY4NSk7Y29uc3QgY3JlPXtmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdo'@; put 'ZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119fSxVbj17ZW1iZWQ6ITEsdmFBcHBseU1vZGU6ImxpdmUiLHJvb3RQYXJhbToiIixkY0xpYjoiIix4bG1hcHM6W10sZWRpdG9yOntzdGFydHVwU2V0OiExLHRyZWVOb2RlTGlicmFyaWVzOltdLGxpYnNBbmRUYWJsZXM6'@; put 'W10sbGlicmFyaWVzOltdLGxpYnJhcnk6IiIsdGFibGU6IiIsZmlsdGVyOntjb2xzOltdLHZhbHM6W10sZ3JvdXBMb2dpYzoiIix3aGVyZUNsYXVzZToiIixsaWJkczoiIixjbGF1c2VzOltdLHF1ZXJ5OltdfX0sdmlld2VyOntzdGFydHVwU2V0OiExLHRhYmxlc1NldDohMSxsaWJyYXJpZXM6'@; put 'W10sdGFibGVzOm51bGwsbGlicmFyeToiIix0YWJsZToiIixsaWJpbmZvOltdLGxpYnJhcmllc1NlYXJjaDoiIixmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdoZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119LGN1cnJlbnRTZWxlY3Rpb246'@; put 'IiJ9LHZpZXdib3hlczp7fSxsaW5lYWdlOntsaWJyYXJ5TGlzdDpbXSx0YWJsZXNMaXN0OltdLGNvbHVtbnNMaXN0OltdLGxpYnJhcmllc1NlYXJjaDoiIixsaWI6IiIsdGFibGU6IiIsY29sdW1uOiIiLGN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlOiIiLGN1cnJlbnRMaW5lYWdlUGF0aENv'@; put 'bHVtbjoiIn0sbWV0YWRhdGE6e21ldGFEYXRhTGlzdDp2b2lkIDAsbWV0YURhdGFTZWFyY2g6IiIsbWV0YU9iamVjdExpc3Q6W10sbWV0YU9iamVjdFNlYXJjaDoiIixtZXRhUmVwb3NpdG9yaWVzOnZvaWQgMCxzZWxlY3RlZFJlcG9zaXRvcnk6IiJ9LHZpeWFBcGk6e2NvbGxlY3Rpb25zTGlz'@; put 'dDp2b2lkIDAsY29sbGVjdGlvbnNTZWFyY2g6IiIsc2VsZWN0ZWRSZXBvc2l0b3J5OiIifSx1c2VybmF2Ont1c2VyTGlzdDp2b2lkIDAsdXNlclNlYXJjaDoiIixncm91cExpc3Q6dm9pZCAwLGdyb3VwU2VhcmNoOiIiLHJvbGVMaXN0OnZvaWQgMCxyb2xlU2VhcmNoOiIifSxvcGVyYXRvcnM6'@; put 'e251bU9wZXJhdG9yczpbIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJCRVRXRUVOIiwiSU4iLCJOT1QgSU4iLCJORSJdLGNoYXJPcGVyYXRvcnM6WyI9IiwiPCIsIj4iLCI8PSIsIj49IiwiQ09OVEFJTlMiLCJJTiIsIk5PVCBJTiIsIk5FIl19LGhhbmRzb250YWJsZTp7ZGFya1RhYmxlSGVhZGVy'@; put 'Q2xhc3M6ImRhcmtUSCJ9LHVzZXJEcm9wZG93bkNvbmZpZzp7Y2xvc2VPbkRlYnVnQ2xpY2s6ITF9fTt2YXIgRmF0PWgoOTc1ODYpLFNwPWgubihGYXQpO2Z1bmN0aW9uIFRfZShuLGUpe3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1'@; put 'bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbih0LHIsaSl7cmV0dXJuIGUu'@; put 'YXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKHQscixpLG8pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbih0LHIsaSxvLGEpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVy'@; put 'biBmdW5jdGlvbih0LHIsaSxvLGEsbCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKHQscixpLG8sYSxsLHUpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbih0LHIsaSxvLGEsbCx1LGcp'@; put 'e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbih0LHIsaSxvLGEsbCx1LGcsRSl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbih0LHIsaSxvLGEsbCx1LGcsRSxPKXtyZXR1cm4gZS5hcHBs'@; put 'eSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gc3Yobil7cmV0dXJuIG51bGwhPW4mJiJvYmplY3QiPT10'@; put 'eXBlb2YgbiYmITA9PT1uWyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiXX1mdW5jdGlvbiBLOChuKXtyZXR1cm4gZnVuY3Rpb24gZSh0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGh8fHN2KHQpP2U6bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGtFKG4pe3JldHVybiBm'@; put 'dW5jdGlvbiBlKHQscil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZTtjYXNlIDE6cmV0dXJuIHN2KHQpP2U6SzgoZnVuY3Rpb24oaSl7cmV0dXJuIG4odCxpKX0pO2RlZmF1bHQ6cmV0dXJuIHN2KHQpJiZzdihyKT9lOnN2KHQpP0s4KGZ1bmN0aW9uKGkpe3JldHVy'@; put 'biBuKGkscil9KTpzdihyKT9LOChmdW5jdGlvbihpKXtyZXR1cm4gbih0LGkpfSk6bih0LHIpfX19ZnVuY3Rpb24geF9lKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9W10saT0wLG89bixhPTAsbD0hMTthPGUubGVuZ3RofHxpPGFyZ3VtZW50cy5sZW5ndGg7KXt2YXIgdTth'@; put 'PGUubGVuZ3RoJiYoIXN2KGVbYV0pfHxpPj1hcmd1bWVudHMubGVuZ3RoKT91PWVbYV06KHU9YXJndW1lbnRzW2ldLGkrPTEpLHJbYV09dSxzdih1KT9sPSEwOm8tPTEsYSs9MX1yZXR1cm4hbCYmbzw9MD90LmFwcGx5KHRoaXMscik6VF9lKE1hdGgubWF4KDAsbykseF9lKG4scix0KSl9fWNv'@; put 'bnN0IEFfZT1rRShmdW5jdGlvbihlLHQpe3JldHVybiAxPT09ZT9LOCh0KTpUX2UoZSx4X2UoZSxbXSx0KSl9KSxrX2U9a0UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV8fG51bGwhPXQmJih0LmNvbnN0cnVjdG9yPT09ZXx8Ik9iamVjdCI9PT1lLm5hbWUmJiJvYmplY3Qi'@; put 'PT10eXBlb2YgdCl9KTtmdW5jdGlvbiBNVShuLGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKX12YXIgUl9lPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsVmF0PWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1SX2UuY2Fs'@; put 'bChhcmd1bWVudHMpP2Z1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09Ul9lLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBNVSgiY2FsbGVlIixlKX19KCk7Y29uc3QgSV9lPVZhdCxCYXQ9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUm'@; put 'JmUubGVuZ3RoPj0wJiYiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfTtmdW5jdGlvbiBEX2Uobil7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobil9dmFyIHphdD1LOChmdW5jdGlvbihl'@; put 'KXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lbXB0eSJdP2VbImZhbnRhc3ktbGFuZC9lbXB0eSJdKCk6bnVsbCE9ZSYmbnVsbCE9ZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9l'@; put 'bXB0eSJdP2UuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdKCk6bnVsbCE9ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZW1wdHk/ZS5lbXB0eSgpOm51bGwhPWUmJm51bGwhPWUuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmVtcHR5P2UuY29u'@; put 'c3RydWN0b3IuZW1wdHkoKTpCYXQoZSk/W106RF9lKGUpPyIiOmZ1bmN0aW9uIGphdChuKXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKX0oZSk/e306SV9lKGUpP2Z1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKTpmdW5jdGlv'@; put 'biBVYXQobil7dmFyIGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pO3JldHVybiJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI9PT1lfHwiW29iamVjdCBJbnQ4QXJyYXldIj09PWV8fCJbb2JqZWN0IFVpbnQ4QXJyYXldIj09PWV8fCJbb2JqZWN0IEludDE2QXJyYXldIj09'@; put 'PWV8fCJbb2JqZWN0IFVpbnQxNkFycmF5XSI9PT1lfHwiW29iamVjdCBJbnQzMkFycmF5XSI9PT1lfHwiW29iamVjdCBVaW50MzJBcnJheV0iPT09ZXx8IltvYmplY3QgRmxvYXQzMkFycmF5XSI9PT1lfHwiW29iamVjdCBGbG9hdDY0QXJyYXldIj09PWV8fCJbb2JqZWN0IEJpZ0ludDY0QXJy'@; put 'YXldIj09PWV8fCJbb2JqZWN0IEJpZ1VpbnQ2NEFycmF5XSI9PT1lfShlKT9lLmNvbnN0cnVjdG9yLmZyb20oIiIpOnZvaWQgMH0pO2NvbnN0IFdhdD16YXQ7ZnVuY3Rpb24gTF9lKG4pe2Zvcih2YXIgdCxlPVtdOyEodD1uLm5leHQoKSkuZG9uZTspZS5wdXNoKHQudmFsdWUpO3JldHVybiBl'@; put 'fWZ1bmN0aW9uIE9fZShuLGUsdCl7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7KXtpZihuKGUsdFtyXSkpcmV0dXJuITA7cis9MX1yZXR1cm4hMX1jb25zdCB1cmU9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24gWmF0KG4sZSl7cmV0dXJuIG49PT1l'@; put 'PzAhPT1ufHwxL249PTEvZTpuIT1uJiZlIT1lfTt2YXIgR2F0PSF7dG9TdHJpbmc6bnVsbH0ucHJvcGVydHlJc0VudW1lcmFibGUoInRvU3RyaW5nIiksTl9lPVsiY29uc3RydWN0b3IiLCJ2YWx1ZU9mIiwiaXNQcm90b3R5cGVPZiIsInRvU3RyaW5nIiwicHJvcGVydHlJc0VudW1lcmFibGUi'@; put 'LCJoYXNPd25Qcm9wZXJ0eSIsInRvTG9jYWxlU3RyaW5nIl0sRl9lPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksJGF0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDspe2lmKGVbcl09PT10KXJldHVybiEw'@; put 'O3IrPTF9cmV0dXJuITF9O2NvbnN0IFBfZT1LOCgiZnVuY3Rpb24iIT10eXBlb2YgT2JqZWN0LmtleXN8fEZfZT9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsaT1bXSxvPUZfZSYmSV9lKGUpO2Zvcih0IGluIGUpTVUodCxlKSYmKCFvfHwibGVuZ3RoIiE9'@; put 'PXQpJiYoaVtpLmxlbmd0aF09dCk7aWYoR2F0KWZvcihyPU5fZS5sZW5ndGgtMTtyPj0wOylNVSh0PU5fZVtyXSxlKSYmISRhdChpLHQpJiYoaVtpLmxlbmd0aF09dCksci09MTtyZXR1cm4gaX06ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChlKSE9PWU/W106T2JqZWN0LmtleXMoZSl9KSxI'@; put 'X2U9SzgoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lPyJOdWxsIjp2b2lkIDA9PT1lPyJVbmRlZmluZWQiOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKX0pO2Z1bmN0aW9uIFZfZShuLGUsdCxyKXt2YXIgaT1MX2Uobik7ZnVuY3Rpb24gYShsLHUpe3Jl'@; put 'dHVybiBkcmUobCx1LHQuc2xpY2UoKSxyLnNsaWNlKCkpfXJldHVybiFPX2UoZnVuY3Rpb24obCx1KXtyZXR1cm4hT19lKGEsdSxsKX0sTF9lKGUpLGkpfWZ1bmN0aW9uIGRyZShuLGUsdCxyKXtpZih1cmUobixlKSlyZXR1cm4hMDt2YXIgaT1IX2Uobik7aWYoaSE9PUhfZShlKSlyZXR1cm4h'@; put 'MTtpZigiZnVuY3Rpb24iPT10eXBlb2YgblsiZmFudGFzeS1sYW5kL2VxdWFscyJdfHwiZnVuY3Rpb24iPT10eXBlb2YgZVsiZmFudGFzeS1sYW5kL2VxdWFscyJdKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJm5bImZhbnRhc3ktbGFuZC9lcXVh'@; put 'bHMiXShlKSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSYmZVsiZmFudGFzeS1sYW5kL2VxdWFscyJdKG4pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuLmVxdWFsc3x8ImZ1bmN0aW9uIj09dHlwZW9mIGUuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PXR5cGVv'@; put 'ZiBuLmVxdWFscyYmbi5lcXVhbHMoZSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmVxdWFscyYmZS5lcXVhbHMobik7c3dpdGNoKGkpe2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uc3RydWN0b3ImJiJQcm9taXNlIj09'@; put 'PWZ1bmN0aW9uIFlhdChuKXt2YXIgZT1TdHJpbmcobikubWF0Y2goL15mdW5jdGlvbiAoXHcqKS8pO3JldHVybiBudWxsPT1lPyIiOmVbMV19KG4uY29uc3RydWN0b3IpKXJldHVybiBuPT09ZTticmVhaztjYXNlIkJvb2xlYW4iOmNhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6aWYodHlwZW9m'@; put 'IG4hPXR5cGVvZiBlfHwhdXJlKG4udmFsdWVPZigpLGUudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkRhdGUiOmlmKCF1cmUobi52YWx1ZU9mKCksZS52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRXJyb3IiOnJldHVybiBuLm5hbWU9PT1lLm5hbWUmJm4ubWVzc2FnZT09'@; put 'PWUubWVzc2FnZTtjYXNlIlJlZ0V4cCI6aWYobi5zb3VyY2UhPT1lLnNvdXJjZXx8bi5nbG9iYWwhPT1lLmdsb2JhbHx8bi5pZ25vcmVDYXNlIT09ZS5pZ25vcmVDYXNlfHxuLm11bHRpbGluZSE9PWUubXVsdGlsaW5lfHxuLnN0aWNreSE9PWUuc3RpY2t5fHxuLnVuaWNvZGUhPT1lLnVuaWNv'@; put 'ZGUpcmV0dXJuITF9Zm9yKHZhciBvPXQubGVuZ3RoLTE7bz49MDspe2lmKHRbb109PT1uKXJldHVybiByW29dPT09ZTtvLT0xfXN3aXRjaChpKXtjYXNlIk1hcCI6cmV0dXJuIG4uc2l6ZT09PWUuc2l6ZSYmVl9lKG4uZW50cmllcygpLGUuZW50cmllcygpLHQuY29uY2F0KFtuXSksci5jb25j'@; put 'YXQoW2VdKSk7Y2FzZSJTZXQiOnJldHVybiBuLnNpemU9PT1lLnNpemUmJlZfZShuLnZhbHVlcygpLGUudmFsdWVzKCksdC5jb25jYXQoW25dKSxyLmNvbmNhdChbZV0pKTtjYXNlIkFyZ3VtZW50cyI6Y2FzZSJBcnJheSI6Y2FzZSJPYmplY3QiOmNhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIi'@; put 'OmNhc2UiU3RyaW5nIjpjYXNlIkRhdGUiOmNhc2UiRXJyb3IiOmNhc2UiUmVnRXhwIjpjYXNlIkludDhBcnJheSI6Y2FzZSJVaW50OEFycmF5IjpjYXNlIlVpbnQ4Q2xhbXBlZEFycmF5IjpjYXNlIkludDE2QXJyYXkiOmNhc2UiVWludDE2QXJyYXkiOmNhc2UiSW50MzJBcnJheSI6Y2FzZSJV'@; put 'aW50MzJBcnJheSI6Y2FzZSJGbG9hdDMyQXJyYXkiOmNhc2UiRmxvYXQ2NEFycmF5IjpjYXNlIkFycmF5QnVmZmVyIjpicmVhaztkZWZhdWx0OnJldHVybiExfXZhciBhPVBfZShuKTtpZihhLmxlbmd0aCE9PVBfZShlKS5sZW5ndGgpcmV0dXJuITE7dmFyIGw9dC5jb25jYXQoW25dKSx1PXIu'@; put 'Y29uY2F0KFtlXSk7Zm9yKG89YS5sZW5ndGgtMTtvPj0wOyl7dmFyIGc9YVtvXTtpZighTVUoZyxlKXx8IWRyZShlW2ddLG5bZ10sbCx1KSlyZXR1cm4hMTtvLT0xfXJldHVybiEwfWNvbnN0IFFhdD1rRShmdW5jdGlvbihlLHQpe3JldHVybiBkcmUoZSx0LFtdLFtdKX0pLEJfZT1LOChmdW5j'@; put 'dGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmUWF0KGUsV2F0KGUpKX0pO2Z1bmN0aW9uIF9JKG4pe3JldHVybiBudWxsPT1ufWZ1bmN0aW9uIHlJKG4pe3JldHVybiBfSShuKXx8Ql9lKG4pfWZ1bmN0aW9uIGhyZShuKXtyZXR1cm4ga19lKFN0cmluZyxuKX1mdW5jdGlvbiBXX2UobixlKXtyZXR1'@; put 'cm4gbiE9PWV9ZnVuY3Rpb24gJF9lKG49d2luZG93KXtyZXR1cm4hX0kobil9Y29uc3QgY3N0PU51bWJlci5pc0ludGVnZXJ8fGZ1bmN0aW9uKGUpe3JldHVybigwfGUpPT09ZX0sZHN0PWtFKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZTwwP3QubGVuZ3RoK2U6ZTtyZXR1cm4gRF9lKHQpP3QuY2hh'@; put 'ckF0KHIpOnRbcl19KSxmc3Q9a0UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24ocil7Zm9yKHZhciBhLGk9dCxvPTA7bzxyLmxlbmd0aDspe2lmKG51bGw9PWkpcmV0dXJuO2k9Y3N0KGE9cltvXSk/ZHN0KGEsaSk6aVthXSxvKz0xfXJldHVybiBpfSl9KSxnc3Q9a0UoZnVu'@; put 'Y3Rpb24oZSx0KXtyZXR1cm4gZnN0KFtlXSx0KVswXX0pLHZzdD1BX2UoMiwobixlKT0+dm9pZCAwIT09Z3N0KG4sZSkpLHFfZT12c3QoeyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiOiEwfSx3aW5kb3cpO2xldCB4VSxLX2UsZnJlLHByZTtmdW5jdGlvbiBYX2Uobj0hMCl7aWYoIW58fCF4'@; put 'VSl7Y29uc3QgZT1kb2N1bWVudCYmZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW25nLXZlcnNpb25dIik7eFU9ZT8iIitlLmdldEF0dHJpYnV0ZSgibmctdmVyc2lvbiIpOnZvaWQgMH1yZXR1cm4geFV9ZnVuY3Rpb24geXN0KG49ITApe3JldHVybiBuJiZ4VXx8KEtfZT13aW5kb3c/LmFuZ3Vs'@; put 'YXI/LnZlcnNpb24/LmZ1bGwpLEtfZX1mdW5jdGlvbiBRX2Uobj0hMCl7cmV0dXJuIG4mJmZyZXx8KGZyZT13aW5kb3c/LkNEUz8uX3JlYWN0Py52ZXJzaW9uP3dpbmRvdy5DRFMuX3JlYWN0LnZlcnNpb246ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtcmVhY3Ryb290XSwgW2RhdGEt'@; put 'cmVhY3RpZF0iKT8idW5rbm93biB2ZXJzaW9uIjp2b2lkIDApLGZyZX1mdW5jdGlvbiBKX2Uobj0hMCl7aWYoIW58fCFwcmUpe2NvbnN0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiKiIpO2xldCB0O2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKGVbcl0uX192dWVfXyl7dD1l'@; put 'W3JdO2JyZWFrfXByZT10PyJ1bmtub3duIHZlcnNpb24iOnZvaWQgMH1yZXR1cm4gcHJlfWZ1bmN0aW9uIGZiKG4pe3JldHVybiBuLnJlcGxhY2UoL1tBLVpdL2csZT0+Ii0iK2UudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gbnllKG4pe3JldHVybiBuLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgp'@; put 'K24uc2xpY2UoMSl9Y29uc3QgeHN0PW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe2lmKHRoaXMuc3VwcG9ydHM9e2pzOiEwfSwhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoImNkcy1zdXBwb3J0cyIpfHwibm8tanMiPT09ZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImNkcy1zdXBwb3J0'@; put 'cyIpKXtjb25zdCBuPWZiKE9iamVjdC5rZXlzKHRoaXMuc3VwcG9ydHMpLnJlZHVjZSgoZSx0KT0+YCR7ZX0gJHt0aGlzLnN1cHBvcnRzW3RdP3Q6Im5vLSIrdH1gLCIiKSkudHJpbSgpO2RvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiLG4pfX19O2NsYXNzIGJJe3N0'@; put 'YXRpYyBsb2coLi4uZSl7dnJlKCkmJm1yZSgpJiZjb25zb2xlLmxvZyguLi5lKX1zdGF0aWMgd2FybiguLi5lKXt2cmUoKSYmbXJlKCkmJmNvbnNvbGUud2FybiguLi5lKX1zdGF0aWMgZXJyb3IoLi4uZSl7dnJlKCkmJm1yZSgpJiZjb25zb2xlLmVycm9yKC4uLmUpfX1mdW5jdGlvbiBtcmUo'@; put 'KXtyZXR1cm4hcV9lKFsiamFzbWluZSJdKX1mdW5jdGlvbiB2cmUoKXtyZXR1cm4hd2luZG93LkNEUy5lbnZpcm9ubWVudC5wcm9kdWN0aW9ufWZ1bmN0aW9uIG95ZSgpeyRfZSgpJiYod2luZG93LkNEUz13aW5kb3cuQ0RTfHx7X3ZlcnNpb246W10sX3JlYWN0Ont2ZXJzaW9uOnZvaWQgMH0s'@; put 'X3N1cHBvcnRzOnhzdC5zdXBwb3J0cyxfaXNTdGF0ZVByb3hpZWQ6ITEsX3N0YXRlOntmb2N1c1RyYXBJdGVtczpbXSxsYXllckVsZW1lbnRzOltdLGkxOG5SZWdpc3RyeTp7fSxlbGVtZW50UmVnaXN0cnk6e30saWNvblJlZ2lzdHJ5Ont9LG1vdGlvblJlZ2lzdHJ5Ont9fSxlbnZpcm9ubWVu'@; put 'dDp7cHJvZHVjdGlvbjohMX0sZ2V0RGV0YWlsczpheWUsbG9nRGV0YWlsczpBc3R9LGZ1bmN0aW9uKCl7Y29uc3Qgbj0iNi4xNy4wIjt3aW5kb3cuQ0RTLl92ZXJzaW9uLmluZGV4T2Yobik8MCYmKHdpbmRvdy5DRFMuX3ZlcnNpb24ucHVzaChuKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJi'@; put 'b2R5Iik/LnNldEF0dHJpYnV0ZSgiY2RzLXZlcnNpb24iLHdpbmRvdy5DRFMuX3ZlcnNpb24uam9pbigiICIpKSksd2luZG93LkNEUy5fdmVyc2lvbi5sZW5ndGg+MSYmYkkud2FybigiUnVubmluZyBtb3JlIHRoYW4gb25lIHZlcnNpb24gb2YgQ2xhcml0eSBjYW4gY2F1c2UgdW5leHBlY3Rl'@; put 'ZCBpc3N1ZXMuIFBsZWFzZSBlbnN1cmUgb25seSBvbmUgdmVyc2lvbiBpcyBsb2FkZWQuIil9KCksd2luZG93LkNEUy5faXNTdGF0ZVByb3hpZWR8fCh3aW5kb3cuQ0RTLl9pc1N0YXRlUHJveGllZD0hMCx3aW5kb3cuQ0RTLl9zdGF0ZT1uZXcgUHJveHkod2luZG93LkNEUy5fc3RhdGUse3Nl'@; put 'dDoobixlLHQpPT57Y29uc3Qgcj17a2V5OmUscHJldjp3aW5kb3cuQ0RTLl9zdGF0ZVtlXSxjdXJyZW50OnR9O3JldHVybiBuW2VdPXQsZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIkNEU19TVEFURV9VUERBVEUiLHtkZXRhaWw6cn0pKSwhMH19KSkpfWZ1bmN0aW9u'@; put 'IGF5ZSgpe3JldHVybnt2ZXJzaW9uczp3aW5kb3cuQ0RTLl92ZXJzaW9uLGVudmlyb25tZW50OndpbmRvdy5DRFMuZW52aXJvbm1lbnQsdXNlckFnZW50Om5hdmlnYXRvci51c2VyQWdlbnQsc3VwcG9ydHM6d2luZG93LkNEUy5fc3VwcG9ydHMsYW5ndWxhclZlcnNpb246WF9lKCExKSxhbmd1'@; put 'bGFySlNWZXJzaW9uOnlzdCghMSkscmVhY3RWZXJzaW9uOlFfZSghMSksdnVlVmVyc2lvbjpKX2UoITEpLHN0YXRlOnsuLi53aW5kb3cuQ0RTLl9zdGF0ZSxpY29uUmVnaXN0cnk6T2JqZWN0LmtleXMod2luZG93LkNEUy5fc3RhdGUuaWNvblJlZ2lzdHJ5KSxtb3Rpb25SZWdpc3RyeTpPYmpl'@; put 'Y3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5tb3Rpb25SZWdpc3RyeSksZm9jdXNUcmFwUmVnaXN0cnk6T2JqZWN0LmtleXMod2luZG93LkNEUy5fc3RhdGUuZm9jdXNUcmFwSXRlbXMubWFwKG49Pm4uZm9jdXNUcmFwSWQpKX19fWZ1bmN0aW9uIEFzdCgpe2JJLmxvZyhKU09OLnN0cmluZ2lm'@; put 'eShheWUoKSxudWxsLDIpKX1jb25zdCBrc3Q9QV9lKDMsKG4sZSx0KT0+eyFmdW5jdGlvbiBfc3QobixlKXtyZXR1cm4gZXx8KGU9d2luZG93JiZ3aW5kb3cuY3VzdG9tRWxlbWVudHMpLCFlfHwhIWUuZ2V0KG4pfShuKXx8ZnVuY3Rpb24gYnN0KCl7cmV0dXJuIHdpbmRvdz8ubG9jYXRpb24/'@; put 'LmhyZWY/LmluY2x1ZGVzKCJsb2NhbGhvc3Q6NjAwNiIpfSgpPyh0LmRlZmluZShuLGUpLG95ZSgpLHdpbmRvdyYmIU9iamVjdC5rZXlzKHdpbmRvdy5DRFMuX3N0YXRlLmVsZW1lbnRSZWdpc3RyeSkuc29tZShyPT5yPT09bikmJih3aW5kb3cuQ0RTLl9zdGF0ZS5lbGVtZW50UmVnaXN0cnk9'@; put 'ey4uLndpbmRvdy5DRFMuX3N0YXRlLmVsZW1lbnRSZWdpc3RyeSxbbl06e319KSk6Ykkud2FybihuKyIgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIil9KTtmdW5jdGlvbiBvNChuLGUsdCxyKXt2YXIgYSxpPWFyZ3VtZW50cy5sZW5ndGgsbz1pPDM/ZTpudWxsPT09cj9yPU9iamVjdC5n'@; put 'ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTpyO2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpbz1SZWZsZWN0LmRlY29yYXRlKG4sZSx0LHIpO2Vsc2UgZm9yKHZhciBsPW4ubGVuZ3RoLTE7bD49MDtsLS0pKGE9blts'@; put 'XSkmJihvPShpPDM/YShvKTppPjM/YShlLHQsbyk6YShlLHQpKXx8byk7cmV0dXJuIGk+MyYmbyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxvKSxvfWZ1bmN0aW9uIGx2KG4pe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbHY/KHRoaXMudj1uLHRoaXMpOm5ldyBsdihuKX1mdW5jdGlvbiB1'@; put 'eWUobil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciB0LGU9bltTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIGU/ZS5jYWxsKG4pOihuPWZ1bmN0aW9uIHdyZShuKXt2YXIg'@; put 'ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsdD1lJiZuW2VdLHI9MDtpZih0KXJldHVybiB0LmNhbGwobik7aWYobiYmIm51bWJlciI9PXR5cGVvZiBuLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBuJiZyPj1uLmxlbmd0aCYmKG49dm9p'@; put 'ZCAwKSx7dmFsdWU6biYmbltyKytdLGRvbmU6IW59fX07dGhyb3cgbmV3IFR5cGVFcnJvcihlPyJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiI6IlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKX0obiksdD17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSx0W1N5bWJv'@; put 'bC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0KTtmdW5jdGlvbiByKG8pe3Rbb109bltvXSYmZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwsdSl7IWZ1bmN0aW9uIGkobyxhLGwsdSl7UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4oZnVuY3Rp'@; put 'b24oZyl7byh7dmFsdWU6Zyxkb25lOmx9KX0sYSl9KGwsdSwoYT1uW29dKGEpKS5kb25lLGEudmFsdWUpfSl9fX0iZnVuY3Rpb24iPT10eXBlb2YgU3VwcHJlc3NlZEVycm9yJiZTdXBwcmVzc2VkRXJyb3I7bGV0IGR5ZT0hMTtmdW5jdGlvbiBubHQobil7aWYoKG49TWF0aC50cnVuYyhuKXx8'@; put 'MCk8MCYmKG4rPXRoaXMubGVuZ3RoKSwhKG48MHx8bj49dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzW25dfWlmKCFkeWUpe2R5ZT0hMDtjb25zdCBuPVJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5KTtmb3IoY29uc3QgZSBvZltBcnJheSxTdHJpbmcsbl0pT2JqZWN0LmRlZmluZVBy'@; put 'b3BlcnR5KGUucHJvdG90eXBlLCJhdCIse3ZhbHVlOm5sdCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfWxldCBoeWU9ITEsZnllPSExO2Z1bmN0aW9uIHB5ZShuLGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Y29uZmlndXJhYmxlOiEwLGVudW1l'@; put 'cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlKGUpP3RoaXMuZ2V0QXR0cmlidXRlKGUpOm51bGx9LHNldDpmdW5jdGlvbihyKXtudWxsIT09cj90aGlzLnNldEF0dHJpYnV0ZShlLHIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKGUpfX0pfWh5ZXx8RWxlbWVu'@; put 'dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInJvbGUiKXx8KHB5ZShFbGVtZW50LnByb3RvdHlwZSwicm9sZSIsInJvbGUiKSxoeWU9ITApLGZ5ZXx8RWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFyaWFMYWJlbCIpfHwoZnllPSEwLFsiQWN0aXZlRGVzY2VuZGFudCIsIkF0'@; put 'b21pYyIsIkF1dG9Db21wbGV0ZSIsIkJ1c3kiLCJDaGVja2VkIiwiQ29sQ291bnQiLCJDb2xJbmRleCIsIkNvbFNwYW4iLCJDb250cm9scyIsIkN1cnJlbnQiLCJEZXNjcmliZWRCeSIsIkRldGFpbHMiLCJEaXNhYmxlZCIsIkVycm9yTWVzc2FnZSIsIkV4cGFuZGVkIiwiRmxvd1RvIiwiSGFz'@; put 'UG9wdXAiLCJIaWRkZW4iLCJJbnZhbGlkIiwiS2V5U2hvcnRjdXRzIiwiTGFiZWwiLCJMYWJlbGxlZEJ5IiwiTGV2ZWwiLCJMaXZlIiwiTW9kYWwiLCJNdWx0aUxpbmUiLCJNdWx0aVNlbGVjdGFibGUiLCJPcmllbnRhdGlvbiIsIk93bnMiLCJQbGFjZWhvbGRlciIsIlBvc0luU2V0IiwiUHJl'@; put 'c3NlZCIsIlJlYWRPbmx5IiwiUmVsZXZhbnQiLCJSZXF1aXJlZCIsIlJvbGVEZXNjcmlwdGlvbiIsIlJvd0NvdW50IiwiUm93SW5kZXgiLCJSb3dTcGFuIiwiU2VsZWN0ZWQiLCJTZXRTaXplIiwiU29ydCIsIlZhbHVlTWF4IiwiVmFsdWVNaW4iLCJWYWx1ZU5vdyIsIlZhbHVlVGV4dCJdLmZv'@; put 'ckVhY2gobj0+cHllKEVsZW1lbnQucHJvdG90eXBlLCJhcmlhLSIrbi50b0xvd2VyQ2FzZSgpLCJhcmlhIituKSkpO2NvbnN0IGtVPXdpbmRvdyxTcmU9a1UuU2hhZG93Um9vdCYmKHZvaWQgMD09PWtVLlNoYWR5Q1NTfHxrVS5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxl'@; put 'U2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsRXJlPVN5bWJvbCgpLGd5ZT1uZXcgV2Vha01hcDtjbGFzcyBteWV7Y29uc3RydWN0b3IoZSx0LHIpe2lmKHRoaXMuXyRjc3NSZXN1bHQkPSEwLHIhPT1FcmUpdGhyb3cgRXJy'@; put 'b3IoIkNTU1Jlc3VsdCBpcyBub3QgY29uc3RydWN0YWJsZS4gVXNlIGB1bnNhZmVDU1NgIG9yIGBjc3NgIGluc3RlYWQuIik7dGhpcy5jc3NUZXh0PWUsdGhpcy50PXR9Z2V0IHN0eWxlU2hlZXQoKXtsZXQgZT10aGlzLm87Y29uc3QgdD10aGlzLnQ7aWYoU3JlJiZ2b2lkIDA9PT1lKXtjb25z'@; put 'dCByPXZvaWQgMCE9PXQmJjE9PT10Lmxlbmd0aDtyJiYoZT1neWUuZ2V0KHQpKSx2b2lkIDA9PT1lJiYoKHRoaXMubz1lPW5ldyBDU1NTdHlsZVNoZWV0KS5yZXBsYWNlU3luYyh0aGlzLmNzc1RleHQpLHImJmd5ZS5zZXQodCxlKSl9cmV0dXJuIGV9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5j'@; put 'c3NUZXh0fX1jb25zdCB2eWU9KG4sLi4uZSk9Pntjb25zdCB0PTE9PT1uLmxlbmd0aD9uWzBdOmUucmVkdWNlKChyLGksbyk9PnIrKGE9PntpZighMD09PWEuXyRjc3NSZXN1bHQkKXJldHVybiBhLmNzc1RleHQ7aWYoIm51bWJlciI9PXR5cGVvZiBhKXJldHVybiBhO3Rocm93IEVycm9yKCJW'@; put 'YWx1ZSBwYXNzZWQgdG8gJ2NzcycgZnVuY3Rpb24gbXVzdCBiZSBhICdjc3MnIGZ1bmN0aW9uIHJlc3VsdDogIithKyIuIFVzZSAndW5zYWZlQ1NTJyB0byBwYXNzIG5vbi1saXRlcmFsIHZhbHVlcywgYnV0IHRha2UgY2FyZSB0byBlbnN1cmUgcGFnZSBzZWN1cml0eS4iKX0pKGkpK25bbysx'@; put 'XSxuWzBdKTtyZXR1cm4gbmV3IG15ZSh0LG4sRXJlKX0sX3llPVNyZT9uPT5uOm49Pm4gaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0PyhlPT57bGV0IHQ9IiI7Zm9yKGNvbnN0IHIgb2YgZS5jc3NSdWxlcyl0Kz1yLmNzc1RleHQ7cmV0dXJuKG49Pm5ldyBteWUoInN0cmluZyI9PXR5cGVvZiBu'@; put 'P246bisiIix2b2lkIDAsRXJlKSkodCl9KShuKTpuO3ZhciBNcmU7Y29uc3QgUlU9d2luZG93LHl5ZT1SVS50cnVzdGVkVHlwZXMsb2x0PXl5ZT95eWUuZW1wdHlTY3JpcHQ6IiIsYnllPVJVLnJlYWN0aXZlRWxlbWVudFBvbHlmaWxsU3VwcG9ydCxUcmU9e3RvQXR0cmlidXRlKG4sZSl7c3dp'@; put 'dGNoKGUpe2Nhc2UgQm9vbGVhbjpuPW4/b2x0Om51bGw7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTpuPW51bGw9PW4/bjpKU09OLnN0cmluZ2lmeShuKX1yZXR1cm4gbn0sZnJvbUF0dHJpYnV0ZShuLGUpe2xldCB0PW47c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjp0PW51bGwhPT1uO2Jy'@; put 'ZWFrO2Nhc2UgTnVtYmVyOnQ9bnVsbD09PW4/bnVsbDpOdW1iZXIobik7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTp0cnl7dD1KU09OLnBhcnNlKG4pfWNhdGNoe3Q9bnVsbH19cmV0dXJuIHR9fSx3eWU9KG4sZSk9PmUhPT1uJiYoZT09ZXx8bj09bikseHJlPXthdHRyaWJ1dGU6ITAs'@; put 'dHlwZTpTdHJpbmcsY29udmVydGVyOlRyZSxyZWZsZWN0OiExLGhhc0NoYW5nZWQ6d3llfSxBcmU9ImZpbmFsaXplZCI7Y2xhc3MgUkUgZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fJEVpPW5ldyBNYXAsdGhpcy5pc1VwZGF0ZVBlbmRpbmc9ITEsdGhp'@; put 'cy5oYXNVcGRhdGVkPSExLHRoaXMuXyRFbD1udWxsLHRoaXMuXyRFdSgpfXN0YXRpYyBhZGRJbml0aWFsaXplcihlKXt2YXIgdDt0aGlzLmZpbmFsaXplKCksKG51bGwhPT0odD10aGlzLmgpJiZ2b2lkIDAhPT10P3Q6dGhpcy5oPVtdKS5wdXNoKGUpfXN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRy'@; put 'aWJ1dGVzKCl7dGhpcy5maW5hbGl6ZSgpO2NvbnN0IGU9W107cmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXMuZm9yRWFjaCgodCxyKT0+e2NvbnN0IGk9dGhpcy5fJEVwKHIsdCk7dm9pZCAwIT09aSYmKHRoaXMuXyRFdi5zZXQoaSxyKSxlLnB1c2goaSkpfSksZX1zdGF0aWMgY3JlYXRl'@; put 'UHJvcGVydHkoZSx0PXhyZSl7aWYodC5zdGF0ZSYmKHQuYXR0cmlidXRlPSExKSx0aGlzLmZpbmFsaXplKCksdGhpcy5lbGVtZW50UHJvcGVydGllcy5zZXQoZSx0KSwhdC5ub0FjY2Vzc29yJiYhdGhpcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IGk9dGhpcy5nZXRQcm9w'@; put 'ZXJ0eURlc2NyaXB0b3IoZSwic3ltYm9sIj09dHlwZW9mIGU/U3ltYm9sKCk6Il9fIitlLHQpO3ZvaWQgMCE9PWkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLnByb3RvdHlwZSxlLGkpfX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGUsdCxyKXtyZXR1cm57Z2V0KCl7cmV0dXJu'@; put 'IHRoaXNbdF19LHNldChpKXtjb25zdCBvPXRoaXNbZV07dGhpc1t0XT1pLHRoaXMucmVxdWVzdFVwZGF0ZShlLG8scil9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfX1zdGF0aWMgZ2V0UHJvcGVydHlPcHRpb25zKGUpe3JldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLmdldChl'@; put 'KXx8eHJlfXN0YXRpYyBmaW5hbGl6ZSgpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoQXJlKSlyZXR1cm4hMTt0aGlzW0FyZV09ITA7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoZS5maW5hbGl6ZSgpLHZvaWQgMCE9PWUuaCYmKHRoaXMuaD1bLi4uZS5oXSksdGhpcy5l'@; put 'bGVtZW50UHJvcGVydGllcz1uZXcgTWFwKGUuZWxlbWVudFByb3BlcnRpZXMpLHRoaXMuXyRFdj1uZXcgTWFwLHRoaXMuaGFzT3duUHJvcGVydHkoInByb3BlcnRpZXMiKSl7Y29uc3QgdD10aGlzLnByb3BlcnRpZXMscj1bLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksLi4uT2Jq'@; put 'ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KV07Zm9yKGNvbnN0IGkgb2Ygcil0aGlzLmNyZWF0ZVByb3BlcnR5KGksdFtpXSl9cmV0dXJuIHRoaXMuZWxlbWVudFN0eWxlcz10aGlzLmZpbmFsaXplU3R5bGVzKHRoaXMuc3R5bGVzKSwhMH1zdGF0aWMgZmluYWxpemVTdHlsZXMoZSl7Y29u'@; put 'c3QgdD1bXTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCByPW5ldyBTZXQoZS5mbGF0KDEvMCkucmV2ZXJzZSgpKTtmb3IoY29uc3QgaSBvZiByKXQudW5zaGlmdChfeWUoaSkpfWVsc2Ugdm9pZCAwIT09ZSYmdC5wdXNoKF95ZShlKSk7cmV0dXJuIHR9c3RhdGljIF8kRXAoZSx0KXtjb25z'@; put 'dCByPXQuYXR0cmlidXRlO3JldHVybiExPT09cj92b2lkIDA6InN0cmluZyI9PXR5cGVvZiByP3I6InN0cmluZyI9PXR5cGVvZiBlP2UudG9Mb3dlckNhc2UoKTp2b2lkIDB9XyRFdSgpe3ZhciBlO3RoaXMuXyRFXz1uZXcgUHJvbWlzZSh0PT50aGlzLmVuYWJsZVVwZGF0aW5nPXQpLHRoaXMu'@; put 'XyRBTD1uZXcgTWFwLHRoaXMuXyRFZygpLHRoaXMucmVxdWVzdFVwZGF0ZSgpLG51bGw9PT0oZT10aGlzLmNvbnN0cnVjdG9yLmgpfHx2b2lkIDA9PT1lfHxlLmZvckVhY2godD0+dCh0aGlzKSl9YWRkQ29udHJvbGxlcihlKXt2YXIgdCxyOyhudWxsIT09KHQ9dGhpcy5fJEVTKSYmdm9pZCAw'@; put 'IT09dD90OnRoaXMuXyRFUz1bXSkucHVzaChlKSx2b2lkIDAhPT10aGlzLnJlbmRlclJvb3QmJnRoaXMuaXNDb25uZWN0ZWQmJihudWxsPT09KHI9ZS5ob3N0Q29ubmVjdGVkKXx8dm9pZCAwPT09cnx8ci5jYWxsKGUpKX1yZW1vdmVDb250cm9sbGVyKGUpe3ZhciB0O251bGw9PT0odD10aGlz'@; put 'Ll8kRVMpfHx2b2lkIDA9PT10fHx0LnNwbGljZSh0aGlzLl8kRVMuaW5kZXhPZihlKT4+PjAsMSl9XyRFZygpe3RoaXMuY29uc3RydWN0b3IuZWxlbWVudFByb3BlcnRpZXMuZm9yRWFjaCgoZSx0KT0+e3RoaXMuaGFzT3duUHJvcGVydHkodCkmJih0aGlzLl8kRWkuc2V0KHQsdGhpc1t0XSks'@; put 'ZGVsZXRlIHRoaXNbdF0pfSl9Y3JlYXRlUmVuZGVyUm9vdCgpe3ZhciBlO2NvbnN0IHQ9bnVsbCE9PShlPXRoaXMuc2hhZG93Um9vdCkmJnZvaWQgMCE9PWU/ZTp0aGlzLmF0dGFjaFNoYWRvdyh0aGlzLmNvbnN0cnVjdG9yLnNoYWRvd1Jvb3RPcHRpb25zKTtyZXR1cm4oKG4sZSk9PntTcmU/'@; put 'bi5hZG9wdGVkU3R5bGVTaGVldHM9ZS5tYXAodD0+dCBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/dDp0LnN0eWxlU2hlZXQpOmUuZm9yRWFjaCh0PT57Y29uc3Qgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLGk9a1UubGl0Tm9uY2U7dm9pZCAwIT09aSYmci5zZXRBdHRyaWJ1'@; put 'dGUoIm5vbmNlIixpKSxyLnRleHRDb250ZW50PXQuY3NzVGV4dCxuLmFwcGVuZENoaWxkKHIpfSl9KSh0LHRoaXMuY29uc3RydWN0b3IuZWxlbWVudFN0eWxlcyksdH1jb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBlO3ZvaWQgMD09PXRoaXMucmVuZGVyUm9vdCYmKHRoaXMucmVuZGVyUm9vdD10'@; put 'aGlzLmNyZWF0ZVJlbmRlclJvb3QoKSksdGhpcy5lbmFibGVVcGRhdGluZyghMCksbnVsbD09PShlPXRoaXMuXyRFUyl8fHZvaWQgMD09PWV8fGUuZm9yRWFjaCh0PT57dmFyIHI7cmV0dXJuIG51bGw9PT0ocj10Lmhvc3RDb25uZWN0ZWQpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmNhbGwodCl9'@; put 'KX1lbmFibGVVcGRhdGluZyhlKXt9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fJEVTKXx8dm9pZCAwPT09ZXx8ZS5mb3JFYWNoKHQ9Pnt2YXIgcjtyZXR1cm4gbnVsbD09PShyPXQuaG9zdERpc2Nvbm5lY3RlZCl8fHZvaWQgMD09PXI/dm9pZCAwOnIuY2Fs'@; put 'bCh0KX0pfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhlLHQscil7dGhpcy5fJEFLKGUscil9XyRFTyhlLHQscj14cmUpe3ZhciBpO2NvbnN0IG89dGhpcy5jb25zdHJ1Y3Rvci5fJEVwKGUscik7aWYodm9pZCAwIT09byYmITA9PT1yLnJlZmxlY3Qpe2NvbnN0IGE9KHZvaWQgMCE9PShudWxs'@; put 'PT09KGk9ci5jb252ZXJ0ZXIpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRvQXR0cmlidXRlKT9yLmNvbnZlcnRlcjpUcmUpLnRvQXR0cmlidXRlKHQsci50eXBlKTt0aGlzLl8kRWw9ZSxudWxsPT1hP3RoaXMucmVtb3ZlQXR0cmlidXRlKG8pOnRoaXMuc2V0QXR0cmlidXRlKG8sYSksdGhpcy5f'@; put 'JEVsPW51bGx9fV8kQUsoZSx0KXt2YXIgcjtjb25zdCBpPXRoaXMuY29uc3RydWN0b3Isbz1pLl8kRXYuZ2V0KGUpO2lmKHZvaWQgMCE9PW8mJnRoaXMuXyRFbCE9PW8pe2NvbnN0IGE9aS5nZXRQcm9wZXJ0eU9wdGlvbnMobyksbD0iZnVuY3Rpb24iPT10eXBlb2YgYS5jb252ZXJ0ZXI/e2Zy'@; put 'b21BdHRyaWJ1dGU6YS5jb252ZXJ0ZXJ9OnZvaWQgMCE9PShudWxsPT09KHI9YS5jb252ZXJ0ZXIpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmZyb21BdHRyaWJ1dGUpP2EuY29udmVydGVyOlRyZTt0aGlzLl8kRWw9byx0aGlzW29dPWwuZnJvbUF0dHJpYnV0ZSh0LGEudHlwZSksdGhpcy5fJEVs'@; put 'PW51bGx9fXJlcXVlc3RVcGRhdGUoZSx0LHIpe2xldCBpPSEwO3ZvaWQgMCE9PWUmJigoKHI9cnx8dGhpcy5jb25zdHJ1Y3Rvci5nZXRQcm9wZXJ0eU9wdGlvbnMoZSkpLmhhc0NoYW5nZWR8fHd5ZSkodGhpc1tlXSx0KT8odGhpcy5fJEFMLmhhcyhlKXx8dGhpcy5fJEFMLnNldChlLHQpLCEw'@; put 'PT09ci5yZWZsZWN0JiZ0aGlzLl8kRWwhPT1lJiYodm9pZCAwPT09dGhpcy5fJEVDJiYodGhpcy5fJEVDPW5ldyBNYXApLHRoaXMuXyRFQy5zZXQoZSxyKSkpOmk9ITEpLCF0aGlzLmlzVXBkYXRlUGVuZGluZyYmaSYmKHRoaXMuXyRFXz10aGlzLl8kRWooKSl9XyRFaigpe3ZhciBlPXRoaXM7'@; put 'cmV0dXJuIENyKGZ1bmN0aW9uKigpe2UuaXNVcGRhdGVQZW5kaW5nPSEwO3RyeXt5aWVsZCBlLl8kRV99Y2F0Y2gocil7UHJvbWlzZS5yZWplY3Qocil9Y29uc3QgdD1lLnNjaGVkdWxlVXBkYXRlKCk7cmV0dXJuIG51bGwhPXQmJih5aWVsZCB0KSwhZS5pc1VwZGF0ZVBlbmRpbmd9KSgpfXNj'@; put 'aGVkdWxlVXBkYXRlKCl7cmV0dXJuIHRoaXMucGVyZm9ybVVwZGF0ZSgpfXBlcmZvcm1VcGRhdGUoKXt2YXIgZTtpZighdGhpcy5pc1VwZGF0ZVBlbmRpbmcpcmV0dXJuO3RoaXMuXyRFaSYmKHRoaXMuXyRFaS5mb3JFYWNoKChpLG8pPT50aGlzW29dPWkpLHRoaXMuXyRFaT12b2lkIDApO2xl'@; put 'dCB0PSExO2NvbnN0IHI9dGhpcy5fJEFMO3RyeXt0PXRoaXMuc2hvdWxkVXBkYXRlKHIpLHQ/KHRoaXMud2lsbFVwZGF0ZShyKSxudWxsPT09KGU9dGhpcy5fJEVTKXx8dm9pZCAwPT09ZXx8ZS5mb3JFYWNoKGk9Pnt2YXIgbztyZXR1cm4gbnVsbD09PShvPWkuaG9zdFVwZGF0ZSl8fHZvaWQg'@; put 'MD09PW8/dm9pZCAwOm8uY2FsbChpKX0pLHRoaXMudXBkYXRlKHIpKTp0aGlzLl8kRWsoKX1jYXRjaChpKXt0aHJvdyB0PSExLHRoaXMuXyRFaygpLGl9dCYmdGhpcy5fJEFFKHIpfXdpbGxVcGRhdGUoZSl7fV8kQUUoZSl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuXyRFUyl8fHZvaWQgMD09PXR8'@; put 'fHQuZm9yRWFjaChyPT57dmFyIGk7cmV0dXJuIG51bGw9PT0oaT1yLmhvc3RVcGRhdGVkKXx8dm9pZCAwPT09aT92b2lkIDA6aS5jYWxsKHIpfSksdGhpcy5oYXNVcGRhdGVkfHwodGhpcy5oYXNVcGRhdGVkPSEwLHRoaXMuZmlyc3RVcGRhdGVkKGUpKSx0aGlzLnVwZGF0ZWQoZSl9XyRFaygp'@; put 'e3RoaXMuXyRBTD1uZXcgTWFwLHRoaXMuaXNVcGRhdGVQZW5kaW5nPSExfWdldCB1cGRhdGVDb21wbGV0ZSgpe3JldHVybiB0aGlzLmdldFVwZGF0ZUNvbXBsZXRlKCl9Z2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fJEVffXNob3VsZFVwZGF0ZShlKXtyZXR1cm4hMH11cGRhdGUo'@; put 'ZSl7dm9pZCAwIT09dGhpcy5fJEVDJiYodGhpcy5fJEVDLmZvckVhY2goKHQscik9PnRoaXMuXyRFTyhyLHRoaXNbcl0sdCkpLHRoaXMuXyRFQz12b2lkIDApLHRoaXMuXyRFaygpfXVwZGF0ZWQoZSl7fWZpcnN0VXBkYXRlZChlKXt9fXZhciBrcmU7UkVbQXJlXT0hMCxSRS5lbGVtZW50UHJv'@; put 'cGVydGllcz1uZXcgTWFwLFJFLmVsZW1lbnRTdHlsZXM9W10sUkUuc2hhZG93Um9vdE9wdGlvbnM9e21vZGU6Im9wZW4ifSxieWU/Lih7UmVhY3RpdmVFbGVtZW50OlJFfSksKG51bGwhPT0oTXJlPVJVLnJlYWN0aXZlRWxlbWVudFZlcnNpb25zKSYmdm9pZCAwIT09TXJlP01yZTpSVS5yZWFj'@; put 'dGl2ZUVsZW1lbnRWZXJzaW9ucz1bXSkucHVzaCgiMS42LjMiKTtjb25zdCBJVT13aW5kb3csSUU9SVUudHJ1c3RlZFR5cGVzLEN5ZT1JRT9JRS5jcmVhdGVQb2xpY3koImxpdC1odG1sIix7Y3JlYXRlSFRNTDpuPT5ufSk6dm9pZCAwLERVPSIkbGl0JCIsWDg9YGxpdCQkeyhNYXRoLnJhbmRv'@; put 'bSgpKyIiKS5zbGljZSg5KX0kYCxScmU9Ij8iK1g4LGFsdD1gPCR7UnJlfT5gLHBiPWRvY3VtZW50LHdJPSgpPT5wYi5jcmVhdGVDb21tZW50KCIiKSxDST1uPT5udWxsPT09bnx8Im9iamVjdCIhPXR5cGVvZiBuJiYiZnVuY3Rpb24iIT10eXBlb2YgbixTeWU9QXJyYXkuaXNBcnJheSxJcmU9'@; put 'IlsgXHRcblxmXHJdIixTST0vPCg/OighLS18XC9bXmEtekEtWl0pfChcLz9bYS16QS1aXVtePlxzXSopfChcLz8kKSkvZyxNeWU9Ly0tPi9nLFR5ZT0vPi9nLGdiPVJlZ0V4cChgPnwke0lyZX0oPzooW15cXHMiJz49L10rKSgke0lyZX0qPSR7SXJlfSooPzpbXiBcdFxuXGZcciInXGA8Pj1d'@; put 'fCgifCcpfCkpfCQpYCwiZyIpLHh5ZT0vJy9nLEF5ZT0vIi9nLGt5ZT0vXig/OnNjcmlwdHxzdHlsZXx0ZXh0YXJlYXx0aXRsZSkkL2ksUnllPW49PihlLC4uLnQpPT4oe18kbGl0VHlwZSQ6bixzdHJpbmdzOmUsdmFsdWVzOnR9KSxzbHQ9UnllKDEpLGxsdD1SeWUoMiksREU9U3ltYm9sLmZv'@; put 'cigibGl0LW5vQ2hhbmdlIiksZzA9U3ltYm9sLmZvcigibGl0LW5vdGhpbmciKSxJeWU9bmV3IFdlYWtNYXAsbWI9cGIuY3JlYXRlVHJlZVdhbGtlcihwYiwxMjksbnVsbCwhMSk7ZnVuY3Rpb24gRHllKG4sZSl7aWYoIUFycmF5LmlzQXJyYXkobil8fCFuLmhhc093blByb3BlcnR5KCJyYXci'@; put 'KSl0aHJvdyBFcnJvcigiaW52YWxpZCB0ZW1wbGF0ZSBzdHJpbmdzIGFycmF5Iik7cmV0dXJuIHZvaWQgMCE9PUN5ZT9DeWUuY3JlYXRlSFRNTChlKTplfWNsYXNzIEVJe2NvbnN0cnVjdG9yKHtzdHJpbmdzOmUsXyRsaXRUeXBlJDp0fSxyKXtsZXQgaTt0aGlzLnBhcnRzPVtdO2xldCBvPTAs'@; put 'YT0wO2NvbnN0IGw9ZS5sZW5ndGgtMSx1PXRoaXMucGFydHMsW2csRV09KChuLGUpPT57Y29uc3QgdD1uLmxlbmd0aC0xLHI9W107bGV0IGksbz0yPT09ZT8iPHN2Zz4iOiIiLGE9U0k7Zm9yKGxldCBsPTA7bDx0O2wrKyl7Y29uc3QgdT1uW2xdO2xldCBnLEUsTz0tMSxaPTA7Zm9yKDtaPHUu'@; put 'bGVuZ3RoJiYoYS5sYXN0SW5kZXg9WixFPWEuZXhlYyh1KSxudWxsIT09RSk7KVo9YS5sYXN0SW5kZXgsYT09PVNJPyIhLS0iPT09RVsxXT9hPU15ZTp2b2lkIDAhPT1FWzFdP2E9VHllOnZvaWQgMCE9PUVbMl0/KGt5ZS50ZXN0KEVbMl0pJiYoaT1SZWdFeHAoIjwvIitFWzJdLCJnIikpLGE9'@; put 'Z2IpOnZvaWQgMCE9PUVbM10mJihhPWdiKTphPT09Z2I/Ij4iPT09RVswXT8oYT1pPz9TSSxPPS0xKTp2b2lkIDA9PT1FWzFdP089LTI6KE89YS5sYXN0SW5kZXgtRVsyXS5sZW5ndGgsZz1FWzFdLGE9dm9pZCAwPT09RVszXT9nYjonIic9PT1FWzNdP0F5ZTp4eWUpOmE9PT1BeWV8fGE9PT14'@; put 'eWU/YT1nYjphPT09TXllfHxhPT09VHllP2E9U0k6KGE9Z2IsaT12b2lkIDApO2NvbnN0IGVlPWE9PT1nYiYmbltsKzFdLnN0YXJ0c1dpdGgoIi8+Iik/IiAiOiIiO28rPWE9PT1TST91K2FsdDpPPj0wPyhyLnB1c2goZyksdS5zbGljZSgwLE8pK0RVK3Uuc2xpY2UoTykrWDgrZWUpOnUrWDgr'@; put 'KC0yPT09Tz8oci5wdXNoKHZvaWQgMCksbCk6ZWUpfXJldHVybltEeWUobixvKyhuW3RdfHwiPD8+IikrKDI9PT1lPyI8L3N2Zz4iOiIiKSkscl19KShlLHQpO2lmKHRoaXMuZWw9RUkuY3JlYXRlRWxlbWVudChnLHIpLG1iLmN1cnJlbnROb2RlPXRoaXMuZWwuY29udGVudCwyPT09dCl7Y29u'@; put 'c3QgTz10aGlzLmVsLmNvbnRlbnQsWj1PLmZpcnN0Q2hpbGQ7Wi5yZW1vdmUoKSxPLmFwcGVuZCguLi5aLmNoaWxkTm9kZXMpfWZvcig7bnVsbCE9PShpPW1iLm5leHROb2RlKCkpJiZ1Lmxlbmd0aDxsOyl7aWYoMT09PWkubm9kZVR5cGUpe2lmKGkuaGFzQXR0cmlidXRlcygpKXtjb25zdCBP'@; put 'PVtdO2Zvcihjb25zdCBaIG9mIGkuZ2V0QXR0cmlidXRlTmFtZXMoKSlpZihaLmVuZHNXaXRoKERVKXx8Wi5zdGFydHNXaXRoKFg4KSl7Y29uc3QgZWU9RVthKytdO2lmKE8ucHVzaChaKSx2b2lkIDAhPT1lZSl7Y29uc3QgdmU9aS5nZXRBdHRyaWJ1dGUoZWUudG9Mb3dlckNhc2UoKStEVSku'@; put 'c3BsaXQoWDgpLE1lPS8oWy4/QF0pPyguKikvLmV4ZWMoZWUpO3UucHVzaCh7dHlwZToxLGluZGV4Om8sbmFtZTpNZVsyXSxzdHJpbmdzOnZlLGN0b3I6Ii4iPT09TWVbMV0/TnllOiI/Ij09PU1lWzFdP0Z5ZToiQCI9PT1NZVsxXT9QeWU6TUl9KX1lbHNlIHUucHVzaCh7dHlwZTo2LGluZGV4'@; put 'Om99KX1mb3IoY29uc3QgWiBvZiBPKWkucmVtb3ZlQXR0cmlidXRlKFopfWlmKGt5ZS50ZXN0KGkudGFnTmFtZSkpe2NvbnN0IE89aS50ZXh0Q29udGVudC5zcGxpdChYOCksWj1PLmxlbmd0aC0xO2lmKFo+MCl7aS50ZXh0Q29udGVudD1JRT9JRS5lbXB0eVNjcmlwdDoiIjtmb3IobGV0IGVl'@; put 'PTA7ZWU8WjtlZSsrKWkuYXBwZW5kKE9bZWVdLHdJKCkpLG1iLm5leHROb2RlKCksdS5wdXNoKHt0eXBlOjIsaW5kZXg6KytvfSk7aS5hcHBlbmQoT1taXSx3SSgpKX19fWVsc2UgaWYoOD09PWkubm9kZVR5cGUpaWYoaS5kYXRhPT09UnJlKXUucHVzaCh7dHlwZToyLGluZGV4Om99KTtlbHNl'@; put 'e2xldCBPPS0xO2Zvcig7LTEhPT0oTz1pLmRhdGEuaW5kZXhPZihYOCxPKzEpKTspdS5wdXNoKHt0eXBlOjcsaW5kZXg6b30pLE8rPVg4Lmxlbmd0aC0xfW8rK319c3RhdGljIGNyZWF0ZUVsZW1lbnQoZSx0KXtjb25zdCByPXBiLmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIHIu'@; put 'aW5uZXJIVE1MPWUscn19ZnVuY3Rpb24gdmIobixlLHQ9bixyKXt2YXIgaSxvLGEsbDtpZihlPT09REUpcmV0dXJuIGU7bGV0IHU9dm9pZCAwIT09cj9udWxsPT09KGk9dC5fJENvKXx8dm9pZCAwPT09aT92b2lkIDA6aVtyXTp0Ll8kQ2w7Y29uc3QgZz1DSShlKT92b2lkIDA6ZS5fJGxpdERp'@; put 'cmVjdGl2ZSQ7cmV0dXJuIHU/LmNvbnN0cnVjdG9yIT09ZyYmKG51bGw9PT0obz11Py5fJEFPKXx8dm9pZCAwPT09b3x8by5jYWxsKHUsITEpLHZvaWQgMD09PWc/dT12b2lkIDA6KHU9bmV3IGcobiksdS5fJEFUKG4sdCxyKSksdm9pZCAwIT09cj8obnVsbCE9PShhPShsPXQpLl8kQ28pJiZ2'@; put 'b2lkIDAhPT1hP2E6bC5fJENvPVtdKVtyXT11OnQuXyRDbD11KSx2b2lkIDAhPT11JiYoZT12YihuLHUuXyRBUyhuLGUudmFsdWVzKSx1LHIpKSxlfWNsYXNzIE95ZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuXyRBVj1bXSx0aGlzLl8kQU49dm9pZCAwLHRoaXMuXyRBRD1lLHRoaXMuXyRBTT10'@; put 'fWdldCBwYXJlbnROb2RlKCl7cmV0dXJuIHRoaXMuXyRBTS5wYXJlbnROb2RlfWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfXUoZSl7dmFyIHQ7Y29uc3R7ZWw6e2NvbnRlbnQ6cn0scGFydHM6aX09dGhpcy5fJEFELG89KG51bGwhPT0odD1lPy5jcmVhdGlvblNjb3BlKSYmdm9p'@; put 'ZCAwIT09dD90OnBiKS5pbXBvcnROb2RlKHIsITApO21iLmN1cnJlbnROb2RlPW87bGV0IGE9bWIubmV4dE5vZGUoKSxsPTAsdT0wLGc9aVswXTtmb3IoO3ZvaWQgMCE9PWc7KXtpZihsPT09Zy5pbmRleCl7bGV0IEU7Mj09PWcudHlwZT9FPW5ldyBMRShhLGEubmV4dFNpYmxpbmcsdGhpcyxl'@; put 'KToxPT09Zy50eXBlP0U9bmV3IGcuY3RvcihhLGcubmFtZSxnLnN0cmluZ3MsdGhpcyxlKTo2PT09Zy50eXBlJiYoRT1uZXcgSHllKGEsdGhpcyxlKSksdGhpcy5fJEFWLnB1c2goRSksZz1pWysrdV19bCE9PWc/LmluZGV4JiYoYT1tYi5uZXh0Tm9kZSgpLGwrKyl9cmV0dXJuIG1iLmN1cnJl'@; put 'bnROb2RlPXBiLG99dihlKXtsZXQgdD0wO2Zvcihjb25zdCByIG9mIHRoaXMuXyRBVil2b2lkIDAhPT1yJiYodm9pZCAwIT09ci5zdHJpbmdzPyhyLl8kQUkoZSxyLHQpLHQrPXIuc3RyaW5ncy5sZW5ndGgtMik6ci5fJEFJKGVbdF0pKSx0Kyt9fWNsYXNzIExFe2NvbnN0cnVjdG9yKGUsdCxy'@; put 'LGkpe3ZhciBvO3RoaXMudHlwZT0yLHRoaXMuXyRBSD1nMCx0aGlzLl8kQU49dm9pZCAwLHRoaXMuXyRBQT1lLHRoaXMuXyRBQj10LHRoaXMuXyRBTT1yLHRoaXMub3B0aW9ucz1pLHRoaXMuXyRDcD1udWxsPT09KG89aT8uaXNDb25uZWN0ZWQpfHx2b2lkIDA9PT1vfHxvfWdldCBfJEFVKCl7'@; put 'dmFyIGUsdDtyZXR1cm4gbnVsbCE9PSh0PW51bGw9PT0oZT10aGlzLl8kQU0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLl8kQVUpJiZ2b2lkIDAhPT10P3Q6dGhpcy5fJENwfWdldCBwYXJlbnROb2RlKCl7bGV0IGU9dGhpcy5fJEFBLnBhcmVudE5vZGU7Y29uc3QgdD10aGlzLl8kQU07cmV0dXJu'@; put 'IHZvaWQgMCE9PXQmJjExPT09ZT8ubm9kZVR5cGUmJihlPXQucGFyZW50Tm9kZSksZX1nZXQgc3RhcnROb2RlKCl7cmV0dXJuIHRoaXMuXyRBQX1nZXQgZW5kTm9kZSgpe3JldHVybiB0aGlzLl8kQUJ9XyRBSShlLHQ9dGhpcyl7ZT12Yih0aGlzLGUsdCksQ0koZSk/ZT09PWcwfHxudWxsPT1l'@; put 'fHwiIj09PWU/KHRoaXMuXyRBSCE9PWcwJiZ0aGlzLl8kQVIoKSx0aGlzLl8kQUg9ZzApOmUhPT10aGlzLl8kQUgmJmUhPT1ERSYmdGhpcy5fKGUpOnZvaWQgMCE9PWUuXyRsaXRUeXBlJD90aGlzLmcoZSk6dm9pZCAwIT09ZS5ub2RlVHlwZT90aGlzLiQoZSk6KG49PlN5ZShuKXx8ImZ1bmN0'@; put 'aW9uIj09dHlwZW9mIG4/LltTeW1ib2wuaXRlcmF0b3JdKShlKT90aGlzLlQoZSk6dGhpcy5fKGUpfWsoZSl7cmV0dXJuIHRoaXMuXyRBQS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMuXyRBQil9JChlKXt0aGlzLl8kQUghPT1lJiYodGhpcy5fJEFSKCksdGhpcy5fJEFIPXRoaXMu'@; put 'ayhlKSl9XyhlKXt0aGlzLl8kQUghPT1nMCYmQ0kodGhpcy5fJEFIKT90aGlzLl8kQUEubmV4dFNpYmxpbmcuZGF0YT1lOnRoaXMuJChwYi5jcmVhdGVUZXh0Tm9kZShlKSksdGhpcy5fJEFIPWV9ZyhlKXt2YXIgdDtjb25zdHt2YWx1ZXM6cixfJGxpdFR5cGUkOml9PWUsbz0ibnVtYmVyIj09'@; put 'dHlwZW9mIGk/dGhpcy5fJEFDKGUpOih2b2lkIDA9PT1pLmVsJiYoaS5lbD1FSS5jcmVhdGVFbGVtZW50KER5ZShpLmgsaS5oWzBdKSx0aGlzLm9wdGlvbnMpKSxpKTtpZigobnVsbD09PSh0PXRoaXMuXyRBSCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuXyRBRCk9PT1vKXRoaXMuXyRBSC52KHIp'@; put 'O2Vsc2V7Y29uc3QgYT1uZXcgT3llKG8sdGhpcyksbD1hLnUodGhpcy5vcHRpb25zKTthLnYociksdGhpcy4kKGwpLHRoaXMuXyRBSD1hfX1fJEFDKGUpe2xldCB0PUl5ZS5nZXQoZS5zdHJpbmdzKTtyZXR1cm4gdm9pZCAwPT09dCYmSXllLnNldChlLnN0cmluZ3MsdD1uZXcgRUkoZSkpLHR9'@; put 'VChlKXtTeWUodGhpcy5fJEFIKXx8KHRoaXMuXyRBSD1bXSx0aGlzLl8kQVIoKSk7Y29uc3QgdD10aGlzLl8kQUg7bGV0IHIsaT0wO2Zvcihjb25zdCBvIG9mIGUpaT09PXQubGVuZ3RoP3QucHVzaChyPW5ldyBMRSh0aGlzLmsod0koKSksdGhpcy5rKHdJKCkpLHRoaXMsdGhpcy5vcHRpb25z'@; put 'KSk6cj10W2ldLHIuXyRBSShvKSxpKys7aTx0Lmxlbmd0aCYmKHRoaXMuXyRBUihyJiZyLl8kQUIubmV4dFNpYmxpbmcsaSksdC5sZW5ndGg9aSl9XyRBUihlPXRoaXMuXyRBQS5uZXh0U2libGluZyx0KXt2YXIgcjtmb3IobnVsbD09PShyPXRoaXMuXyRBUCl8fHZvaWQgMD09PXJ8fHIuY2Fs'@; put 'bCh0aGlzLCExLCEwLHQpO2UmJmUhPT10aGlzLl8kQUI7KXtjb25zdCBpPWUubmV4dFNpYmxpbmc7ZS5yZW1vdmUoKSxlPWl9fXNldENvbm5lY3RlZChlKXt2YXIgdDt2b2lkIDA9PT10aGlzLl8kQU0mJih0aGlzLl8kQ3A9ZSxudWxsPT09KHQ9dGhpcy5fJEFQKXx8dm9pZCAwPT09dHx8dC5j'@; put 'YWxsKHRoaXMsZSkpfX1jbGFzcyBNSXtjb25zdHJ1Y3RvcihlLHQscixpLG8pe3RoaXMudHlwZT0xLHRoaXMuXyRBSD1nMCx0aGlzLl8kQU49dm9pZCAwLHRoaXMuZWxlbWVudD1lLHRoaXMubmFtZT10LHRoaXMuXyRBTT1pLHRoaXMub3B0aW9ucz1vLHIubGVuZ3RoPjJ8fCIiIT09clswXXx8'@; put 'IiIhPT1yWzFdPyh0aGlzLl8kQUg9QXJyYXkoci5sZW5ndGgtMSkuZmlsbChuZXcgU3RyaW5nKSx0aGlzLnN0cmluZ3M9cik6dGhpcy5fJEFIPWcwfWdldCB0YWdOYW1lKCl7cmV0dXJuIHRoaXMuZWxlbWVudC50YWdOYW1lfWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfV8kQUko'@; put 'ZSx0PXRoaXMscixpKXtjb25zdCBvPXRoaXMuc3RyaW5ncztsZXQgYT0hMTtpZih2b2lkIDA9PT1vKWU9dmIodGhpcyxlLHQsMCksYT0hQ0koZSl8fGUhPT10aGlzLl8kQUgmJmUhPT1ERSxhJiYodGhpcy5fJEFIPWUpO2Vsc2V7Y29uc3QgbD1lO2xldCB1LGc7Zm9yKGU9b1swXSx1PTA7dTxv'@; put 'Lmxlbmd0aC0xO3UrKylnPXZiKHRoaXMsbFtyK3VdLHQsdSksZz09PURFJiYoZz10aGlzLl8kQUhbdV0pLGF8fChhPSFDSShnKXx8ZyE9PXRoaXMuXyRBSFt1XSksZz09PWcwP2U9ZzA6ZSE9PWcwJiYoZSs9KGc/PyIiKStvW3UrMV0pLHRoaXMuXyRBSFt1XT1nfWEmJiFpJiZ0aGlzLmooZSl9'@; put 'aihlKXtlPT09ZzA/dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpOnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLGU/PyIiKX19Y2xhc3MgTnllIGV4dGVuZHMgTUl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0zfWoo'@; put 'ZSl7dGhpcy5lbGVtZW50W3RoaXMubmFtZV09ZT09PWcwP3ZvaWQgMDplfX1jb25zdCBjbHQ9SUU/SUUuZW1wdHlTY3JpcHQ6IiI7Y2xhc3MgRnllIGV4dGVuZHMgTUl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT00fWooZSl7ZSYmZSE9PWcwP3RoaXMuZWxl'@; put 'bWVudC5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLGNsdCk6dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpfX1jbGFzcyBQeWUgZXh0ZW5kcyBNSXtjb25zdHJ1Y3RvcihlLHQscixpLG8pe3N1cGVyKGUsdCxyLGksbyksdGhpcy50eXBlPTV9XyRBSShlLHQ9dGhpcyl7dmFy'@; put 'IHI7aWYoKGU9bnVsbCE9PShyPXZiKHRoaXMsZSx0LDApKSYmdm9pZCAwIT09cj9yOmcwKT09PURFKXJldHVybjtjb25zdCBpPXRoaXMuXyRBSCxvPWU9PT1nMCYmaSE9PWcwfHxlLmNhcHR1cmUhPT1pLmNhcHR1cmV8fGUub25jZSE9PWkub25jZXx8ZS5wYXNzaXZlIT09aS5wYXNzaXZlLGE9'@; put 'ZSE9PWcwJiYoaT09PWcwfHxvKTtvJiZ0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLm5hbWUsdGhpcyxpKSxhJiZ0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLm5hbWUsdGhpcyxlKSx0aGlzLl8kQUg9ZX1oYW5kbGVFdmVudChlKXt2YXIgdCxyOyJmdW5j'@; put 'dGlvbiI9PXR5cGVvZiB0aGlzLl8kQUg/dGhpcy5fJEFILmNhbGwobnVsbCE9PShyPW51bGw9PT0odD10aGlzLm9wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmhvc3QpJiZ2b2lkIDAhPT1yP3I6dGhpcy5lbGVtZW50LGUpOnRoaXMuXyRBSC5oYW5kbGVFdmVudChlKX19Y2xhc3MgSHll'@; put 'e2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLnR5cGU9Nix0aGlzLl8kQU49dm9pZCAwLHRoaXMuXyRBTT10LHRoaXMub3B0aW9ucz1yfWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfV8kQUkoZSl7dmIodGhpcyxlKX19Y29uc3QgVnllPUlVLmxpdEh0bWxQ'@; put 'b2x5ZmlsbFN1cHBvcnQ7dmFyIERyZSxMcmU7VnllPy4oRUksTEUpLChudWxsIT09KGtyZT1JVS5saXRIdG1sVmVyc2lvbnMpJiZ2b2lkIDAhPT1rcmU/a3JlOklVLmxpdEh0bWxWZXJzaW9ucz1bXSkucHVzaCgiMi44LjAiKTtjbGFzcyBUSSBleHRlbmRzIFJFe2NvbnN0cnVjdG9yKCl7c3Vw'@; put 'ZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbmRlck9wdGlvbnM9e2hvc3Q6dGhpc30sdGhpcy5fJERvPXZvaWQgMH1jcmVhdGVSZW5kZXJSb290KCl7dmFyIGUsdDtjb25zdCByPXN1cGVyLmNyZWF0ZVJlbmRlclJvb3QoKTtyZXR1cm4gbnVsbCE9PShlPSh0PXRoaXMucmVuZGVyT3B0aW9ucyku'@; put 'cmVuZGVyQmVmb3JlKSYmdm9pZCAwIT09ZXx8KHQucmVuZGVyQmVmb3JlPXIuZmlyc3RDaGlsZCkscn11cGRhdGUoZSl7Y29uc3QgdD10aGlzLnJlbmRlcigpO3RoaXMuaGFzVXBkYXRlZHx8KHRoaXMucmVuZGVyT3B0aW9ucy5pc0Nvbm5lY3RlZD10aGlzLmlzQ29ubmVjdGVkKSxzdXBlci51'@; put 'cGRhdGUoZSksdGhpcy5fJERvPSgobixlLHQpPT57dmFyIHIsaTtjb25zdCBvPW51bGwhPT0ocj10Py5yZW5kZXJCZWZvcmUpJiZ2b2lkIDAhPT1yP3I6ZTtsZXQgYT1vLl8kbGl0UGFydCQ7aWYodm9pZCAwPT09YSl7Y29uc3QgbD1udWxsIT09KGk9dD8ucmVuZGVyQmVmb3JlKSYmdm9pZCAw'@; put 'IT09aT9pOm51bGw7by5fJGxpdFBhcnQkPWE9bmV3IExFKGUuaW5zZXJ0QmVmb3JlKHdJKCksbCksbCx2b2lkIDAsdD8/e30pfXJldHVybiBhLl8kQUkobiksYX0pKHQsdGhpcy5yZW5kZXJSb290LHRoaXMucmVuZGVyT3B0aW9ucyl9Y29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgZTtzdXBlci5j'@; put 'b25uZWN0ZWRDYWxsYmFjaygpLG51bGw9PT0oZT10aGlzLl8kRG8pfHx2b2lkIDA9PT1lfHxlLnNldENvbm5lY3RlZCghMCl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgZTtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLG51bGw9PT0oZT10aGlzLl8kRG8pfHx2b2lkIDA9PT1lfHxl'@; put 'LnNldENvbm5lY3RlZCghMSl9cmVuZGVyKCl7cmV0dXJuIERFfX1USS5maW5hbGl6ZWQ9ITAsVEkuXyRsaXRFbGVtZW50JD0hMCxudWxsPT09KERyZT1nbG9iYWxUaGlzLmxpdEVsZW1lbnRIeWRyYXRlU3VwcG9ydCl8fHZvaWQgMD09PURyZXx8RHJlLmNhbGwoZ2xvYmFsVGhpcyx7TGl0RWxl'@; put 'bWVudDpUSX0pO2NvbnN0IEJ5ZT1nbG9iYWxUaGlzLmxpdEVsZW1lbnRQb2x5ZmlsbFN1cHBvcnQ7QnllPy4oe0xpdEVsZW1lbnQ6VEl9KSwobnVsbCE9PShMcmU9Z2xvYmFsVGhpcy5saXRFbGVtZW50VmVyc2lvbnMpJiZ2b2lkIDAhPT1McmU/THJlOmdsb2JhbFRoaXMubGl0RWxlbWVudFZl'@; put 'cnNpb25zPVtdKS5wdXNoKCIzLjMuMyIpO2NvbnN0IGhsdD12eWVgQGNoYXJzZXQgIlVURi04Ijs6aG9zdCw6cm9vdHstLc60Mjp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS14eHMsIGNhbGMoNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tzrQzOnZhcigt'@; put 'LWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhzLCBjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLc60NDp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1zbSwgY2FsYygxMiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tzrQ1'@; put 'OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLW1kLCBjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS3OtDY6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbGcsIGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkp'@; put 'KTstLc60Nzp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS14bCwgY2FsYygzMiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpfVtjZHMtbGF5b3V0fj0id3JhcDpub25lIl17ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJl'@; put 'dGNoIl17ZmxleC1ncm93OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ246c2hyaW5rIl17ZmxleC1zaHJpbms6MSFpbXBvcnRhbnQ7ZmxleC1ncm93OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgt'@; put 'd3JhcDp3cmFwO2p1c3RpZnktaXRlbXM6ZmxleC1zdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3dpZHRoOjEwMCU7bWFyZ2luOjA7bWluLWhlaWdodDowfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dH49aG9yaXpvbnRhbF0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxd'@; put 'PltjZHMtbGF5b3V0fj12ZXJ0aWNhbF0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtdGV4dF17d2lkdGg6aW5pdGlhbCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5'@; put 'b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6'@; put 'b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpj'@; put 'ZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9Im9yZGVy'@; put 'OnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtj'@; put 'ZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2Rz'@; put 'LWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOnZl'@; put 'cnRpY2FsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17bWFyZ2luLWxlZnQ6'@; put 'YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdo'@; put 'dCJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXXt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRp'@; put 'cmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxh'@; put 'eW91dCo9ImFsaWduOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwt'@; put 'Y2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXth'@; put 'bGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlcjpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246'@; put 'aG9yaXpvbnRhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1s'@; put 'YXlvdXQqPSJhbGlnbjpzdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde21hcmdpbi10b3A6YXV0'@; put 'bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0'@; put 'fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxh'@; put 'eW91dCo9ImFsaWduOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0b31bY2RzLWxheW91dH49Z3JpZF17ZGlzcGxheTpncmlkO2FsaWduLWl0ZW1zOnN0YXJ0O2FsaWduLWNvbnRlbnQ6c3RhcnQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCh2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1ncmlk'@; put 'LWNvbHMsMTIpLDFmcik7d2lkdGg6MTAwJX1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9cm93c117Z3JpZC10ZW1wbGF0ZS1yb3dzOnJlcGVhdCgxMixhdXRvKX1bY2RzLWxheW91dH49Z3JpZF0+W2Nkcy1sYXlvdXQqPXJvd117YWxpZ24tc2VsZjpzdHJldGNofVtjZHMtbGF5b3V0'@; put 'fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24tY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXtq'@; put 'dXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpz'@; put 'dHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6'@; put 'Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxp'@; put 'Z246Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9OjpzbG90dGVkKFtjZHMtbGF5b3V0fj0iZGlzcGxheTpzY3JlZW4tcmVhZGVyLW9ubHkiXSksW2Nkcy1sYXlvdXR+PSJk'@; put 'aXNwbGF5OnNjcmVlbi1yZWFkZXItb25seSJde3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRl'@; put 'LXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjA7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJnYXA6bm9uZSJde2dhcDowfVtjZHMtbGF5b3V0Kj0iZ2FwOnh4cyJde2dhcDp2YXIoLS3OtDIpfVtjZHMtbGF5b3V0Kj0iZ2FwOnhzIl17Z2FwOnZhcigtLc60Myl9W2Nkcy1s'@; put 'YXlvdXQqPSJnYXA6c20iXXtnYXA6dmFyKC0tzrQ0KX1bY2RzLWxheW91dCo9ImdhcDptZCJde2dhcDp2YXIoLS3OtDUpfVtjZHMtbGF5b3V0Kj0iZ2FwOmxnIl17Z2FwOnZhcigtLc60Nil9W2Nkcy1sYXlvdXR+PSJwOm5vbmUiXXtwYWRkaW5nOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'cDp4eHMiXXtwYWRkaW5nOnZhcigtLc60MikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDp4cyJde3BhZGRpbmc6dmFyKC0tzrQzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOnNtIl17cGFkZGluZzp2YXIoLS3OtDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bWQiXXtwYWRkaW5n'@; put 'OnZhcigtLc60NSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTptZCJde21hcmdpbjp2YXIoLS3OtDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bGciXXtwYWRkaW5nOnZhcigtLc60NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15OnhzIl17cGFkZGluZy10b3A6dmFyKC0tzrQz'@; put 'KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tzrQzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tzrQ2KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS3OtDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTpsZyJde3Bh'@; put 'ZGRpbmctdG9wOnZhcigtLc60NikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLc60NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLc60NSkhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dCo9Imdh'@; put 'cEBtZDpsZyJde2dhcDp2YXIoLS3OtDYpfVtjZHMtbGF5b3V0fj0icEBtZDpsZyJde3BhZGRpbmc6dmFyKC0tzrQ2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOnhsIl17bWFyZ2luOnZhcigtLc60NykhaW1wb3J0YW50fX1bY2RzLWxheW91dH49ZmlsbF17d2lkdGg6MTAwJSFpbXBv'@; put 'cnRhbnR9Kiw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXT46OnNsb3R0ZWQoKiksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGln'@; put 'bjpzdHJldGNoIl0+OjpzbG90dGVkKCopLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT46OnNsb3R0ZWQoKil7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSks'@; put 'W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmNlbnRl'@; put 'ciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl0pe21hcmdpbi1i'@; put 'b3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpib3R0b20iXSl7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnJp'@; put 'Z2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99QG1lZGlhIChtaW4t'@; put 'd2lkdGg6NTc2cHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6'@; put 'YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLWNlbnRlciJd'@; put 'KXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25A'@; put 'eHM6Ym90dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0'@; put 'Kj0iYWxpZ25AeHM6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtj'@; put 'ZHMtbGF5b3V0Kj0iYWxpZ25Ac206dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6'@; put 'OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Ym90dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJdKXttYXJnaW4tbGVm'@; put 'dDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6OTkycHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxp'@; put 'Z25AbWQ6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1s'@; put 'YXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91'@; put 'dCo9ImFsaWduQG1kOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Ym90dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6'@; put 'OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4'@; put 'KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2lu'@; put 'LWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1jZW50ZXIiXSl7YWxpZ24tc2Vs'@; put 'ZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJd'@; put 'KXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxn'@; put 'OmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQq'@; put 'PSJhbGlnbkB4bDp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChb'@; put 'Y2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dG9wIl0pe21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpib3R0b20iXSl7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nk'@; put 'cy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvfX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9u'@; put 'dGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpz'@; put 'bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXSl7'@; put 'YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpib3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246cmln'@; put 'aHQiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49aG9y'@; put 'aXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6'@; put 'b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJp'@; put 'Z2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp0b3AiXSl7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpi'@; put 'b3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxh'@; put 'eW91dCo9ImFsaWduQHhzOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpv'@; put 'bnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250'@; put 'YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxp'@; put 'Z25Ac206dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxh'@; put 'eW91dCo9ImFsaWduQHNtOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6'@; put 'OTkycHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOnZlcnRpY2FsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNl'@; put 'bnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLWNlbnRlciJdKXttYXJnaW4tbGVmdDph'@; put 'dXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOnRvcCJdKXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChb'@; put 'Y2RzLWxheW91dCo9ImFsaWduQG1kOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpv'@; put 'bnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRl'@; put 'ciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpjZW50ZXIi'@; put 'XSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpz'@; put 'bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6'@; put 'b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9y'@; put 'dGFudH19QG1lZGlhIChtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp2ZXJ0aWNh'@; put 'bC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRh'@; put 'bC1jZW50ZXIiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp0b3AiXSl7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0'@; put 'fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpib3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1bY2RzLXRleHRde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseSwg'@; put 'IkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWYpO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9W2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ncmlkXTo6YWZ0ZXIsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ncmlkXTo6YmVmb3JlLFtjZHMtdGV4dF1bY2RzLWxheW91'@; put 'dH49aG9yaXpvbnRhbF06OmFmdGVyLFtjZHMtdGV4dF1bY2RzLWxheW91dH49aG9yaXpvbnRhbF06OmJlZm9yZSxbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXTo6YWZ0ZXIsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF06OmJlZm9yZXtkaXNwbGF5Om5vbmV9W2Nkcy10'@; put 'ZXh0Kj1kaXNwbGF5XSxbY2RzLXRleHQqPXNlY3Rpb25dLFtjZHMtdGV4dCo9c3Vic2VjdGlvbl0sW2Nkcy10ZXh0Kj10aXRsZV17Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRlci1mb250LWZhbWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIs'@; put 'IHNhbnMtc2VyaWYpO2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci00MDAsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tOTAwLCMyMTMzM2IpKX1bY2RzLXRleHQqPWJvZHldLFtjZHMtdGV4dCo9bWVzc2FnZV0sW2Nkcy10ZXh0Kj1zZWNvbmRhcnld'@; put 'e2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci01MDAsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFjaywjMDAwKSl9W2Nkcy10ZXh0Kj1pbmxpbmVde3dpZHRoOmF1dG8haW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH1bY2RzLXRleHQqPWRp'@; put 'c3BsYXlde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXNpemUsY2FsYyg0MCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC13ZWln'@; put 'aHQsNTAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodCwxLjFlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGV0dGVyLXNwYWNpbmcsLS4wMTI1ZW0pfVtjZHMtdGV4dCo9ZGlz'@; put 'cGxheV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt'@; put 'ZGlzcGxheS1saW5lLWhlaWdodCwxLjFlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWRpc3BsYXldOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10'@; put 'eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlw'@; put 'b2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVpZ2h0LDEuMWVtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9dGl0bGVde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtZm9udC1zaXplLGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2Jh'@; put 'bC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1mb250LXdlaWdodCw1MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1saW5lLWhlaWdodCwxLjMzMzMzM2VtKTtsZXR0ZXItc3BhY2luZzp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGV0dGVyLXNwYWNpbmcsLS4wMDgzMzMzM2VtKX1bY2RzLXRleHQqPXRpdGxlXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwt'@; put 'dHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1saW5lLWhlaWdodCwxLjMzMzMzM2VtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9dGl0bGVdOjphZnRlcntjb250ZW50OiIiO2Rp'@; put 'c3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZh'@; put 'cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1saW5lLWhlaWdodCwxLjMzMzMzM2VtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9c2VjdGlvbl17Zm9udC1zaXpl'@; put 'OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZSxjYWxjKDIwICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodCw1MDApO2xpbmUtaGVp'@; put 'Z2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMmVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3BhY2luZywtLjAxZW0pfVtjZHMtdGV4dCo9c2VjdGlvbl06OmJlZm9yZXtjb250'@; put 'ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdo'@; put 'dCwxLjJlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXNlY3Rpb25dOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAt'@; put 'aGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxp'@; put 'bmUtaGVpZ2h0LDEuMmVtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9c3Vic2VjdGlvbl17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwy'@; put 'MCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCw1MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuNWVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZywtLjAxMjVlbSl9W2Nkcy10ZXh0Kj1zdWJzZWN0aW9uXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9i'@; put 'YWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuNWVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c3Vic2VjdGlvbl06OmFmdGVye2NvbnRl'@; put 'bnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0LC4xNzAz'@; put 'ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQsMS41ZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1ib2R5XXtmb250'@; put 'LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCw0MDApO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUsY2FsYygxNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bGV0dGVyLXNw'@; put 'YWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcsLS4wMDcxNDI4NmVtKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3MTRlbSl9W2Nkcy10ZXh0Kj1ib2R5XTo6YmVmb3Jle2Nv'@; put 'bnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0'@; put 'LDEuNDI4NTcxNGVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMWVtKX1bY2RzLXRleHQqPWJvZHldOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAt'@; put 'aGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWxpbmUt'@; put 'aGVpZ2h0LDEuNDI4NTcxNGVtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfWJvZHlbY2RzLXRleHQqPWJvZHldOjphZnRlcixib2R5W2Nkcy10ZXh0Kj1ib2R5XTo6YmVmb3Jle2NvbnRlbnQ6bm9uZX1bY2RzLXRleHQqPW1lc3NhZ2Vde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5'@; put 'cG9ncmFwaHktbWVzc2FnZS1mb250LXNpemUsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC13ZWlnaHQsY2FsYyg0MDAgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2Jh'@; put 'bC1iYXNlLDIwKSkpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0LDEuNWVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1sZXR0ZXItc3BhY2luZywtLjAxMjVlbSl9W2Nkcy10ZXh0'@; put 'Kj1tZXNzYWdlXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dy'@; put 'YXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0LDEuNWVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9bWVzc2FnZV06OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xv'@; put 'YmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2Jh'@; put 'bC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQsMS41ZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnlde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSxjYWxjKDEzICogMXJlbSAvIHZh'@; put 'cigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCwxLjIzMDc3ZW0p'@; put 'O2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcsLS4wMDc2OTJlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnldOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRv'@; put 'bTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCwxLjIzMDc3ZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0'@; put 'Kj1zZWNvbmRhcnldOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3Jh'@; put 'cGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQsMS4yMzA3N2VtKSAtIDFlbSkvIDIpKSotMSkgLSAu'@; put 'MDQ0ZW0pfVtjZHMtdGV4dH49bGlua117Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3IsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwjMDA3OWFkKSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50O2xpbmUtaGVp'@; put 'Z2h0OmluaGVyaXQhaW1wb3J0YW50O2ZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOmZvY3Vze291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLEhpZ2hsaWdodCBzb2xpZCAycHgpO291dGxpbmUtb2Zmc2V0OnZhcigt'@; put 'LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS1vZmZzZXQsMXB4KX1bY2RzLXRleHR+PWxpbmtdOmhvdmVye2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhvdmVyLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDAsIzAwNjA4YSkp'@; put 'IWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGljXSl7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZCx2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC03MDAsIzdjMTJhNSkpIWltcG9ydGFu'@; put 'dH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGljXSk6aG92ZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3Zlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0xMDAwLCMzMjAwNDcpKSFpbXBv'@; put 'cnRhbnR9QG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7W2Nkcy10ZXh0PWxpbmtdOmZvY3Vze291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLXdlYmtpdCw1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3IpfX1b'@; put 'Y2RzLXRleHR+PWNvZGVde2NvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwjZTAyMjAwKSk7Zm9udC1mYW1pbHk6bW9ub3NwYWNlfVtjZHMtZGl2aWRlcl17ZGlzcGxheTpibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWFsaWFz'@; put 'LW9iamVjdC1ib3JkZXItd2lkdGgtMTAwLGNhbGMoMSAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rp'@; put 'b24tMjAwLCNjYmQ0ZDgpKSAwIDAgMCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDAsY2FsYygxICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSBpbnNldH1bY2RzLXRleHR+PWxpZ2h0XXtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9n'@; put 'cmFwaHktZm9udC13ZWlnaHQtbGlnaHQsMzAwKSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1qdXN0aWZ5XXt0ZXh0LWFsaWduOmp1c3RpZnkhaW1wb3J0YW50fVtjZHMtdGV4dH49bGVmdF17dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH1bY2RzLXRleHR+PXJpZ2h0XXt0ZXh0LWFsaWduOnJpZ2h0'@; put 'IWltcG9ydGFudH1bY2RzLXRleHR+PWNlbnRlcl17dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fVtjZHMtdGV4dH49bGhlXXtwYWRkaW5nOi4wNXB4IDB9W2Nkcy10ZXh0fj1saGVdOjpiZWZvcmV7Y29udGVudDoiIjttYXJnaW4tdG9wOi0uMTI0ZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6'@; put 'MH1bY2RzLXRleHR+PWxoZV06OmFmdGVye2NvbnRlbnQ6IiI7bWFyZ2luLWJvdHRvbTotLjIyMWVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjB9W2Nkcy10ZXh0Kj1oMl0sW2Nkcy10ZXh0Kj1oM117Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRlci1mb250LWZh'@; put 'bWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjRyZW07Zm9udC13ZWlnaHQ6MjAwO2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci00MDApO2xpbmUtaGVpZ2h0OjEuNzE0M2VtO2xldHRlci1zcGFjaW5nOi0u'@; put 'MDE3ODU3ZW19W2Nkcy10ZXh0Kj1oMl06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCgxLjcxNDNlbSAt'@; put 'IDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDJdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0p'@; put 'IC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKDEuNzE0M2VtIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1oM117Zm9u'@; put 'dC1zaXplOjEuMXJlbTtsaW5lLWhlaWdodDoxLjA5MDllbTtsZXR0ZXItc3BhY2luZzotLjAxMzYzNmVtfVtjZHMtdGV4dCo9aDNdOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10'@; put 'eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygoMS4wOTA5ZW0gLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWgzXTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAt'@; put 'IHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCgx'@; put 'LjA5MDllbSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfTpob3N0e2FsbDppbml0aWFsO2Rpc3BsYXk6YmxvY2s7dmlzaWJpbGl0eTppbmhlcml0O2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4'@; put 'dCIsIHNhbnMtc2VyaWYpO2NvbnRhaW46bGF5b3V0O2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50fSosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzppbmhlcml0IWltcG9ydGFudH1zbG90e2ZvbnQtZmFtaWx5OnZhcigt'@; put 'LWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWYpO2Rpc3BsYXk6Y29udGVudHMhaW1wb3J0YW50fTo6c2xvdHRlZCgqKXtmb250LWZhbWlseTppbmhlcml0O2JveC1zaXppbmc6aW5oZXJpdH06OnNsb3R0'@; put 'ZWQoKik6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci0yMDAsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwLCM0ZjYxNjkpKX06aG9zdChbX2lzLWFuY2hvcl0pLDpob3N0KFtyb2xlPWJ1dHRvbl0pe2N1cnNvcjpwb2lu'@; put 'dGVyIWltcG9ydGFudH06aG9zdChbX2lzLWFuY2hvcl0pIDo6c2xvdHRlZCgqKSw6aG9zdChbcm9sZT1idXR0b25dKSA6OnNsb3R0ZWQoKil7Y3Vyc29yOnBvaW50ZXIhaW1wb3J0YW50fTpob3N0KFtyb2xlPWJ1dHRvbl1bZGlzYWJsZWRdKXtjdXJzb3I6bm90LWFsbG93ZWQhaW1wb3J0YW50'@; put 'fTpob3N0KFtyb2xlPWJ1dHRvbl1bZGlzYWJsZWRdKSA6OnNsb3R0ZWQoKil7Y3Vyc29yOm5vdC1hbGxvd2VkIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfTpob3N0KFtoaWRkZW5dKSxbaGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fTpob3N0KFtoaWRkZW4qPWZhbHNlXSl7'@; put 'ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9ZGlhbG9nXVtoaWRkZW5dKSw6aG9zdChbcm9sZT1kaWFsb2ddW2hpZGRlbl0pIDo6c2xvdHRlZCgqKXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9ZGlhbG9n'@; put 'XVtoaWRkZW4qPWZhbHNlXSksOmhvc3QoW3JvbGU9ZGlhbG9nXVtoaWRkZW4qPWZhbHNlXSkgOjpzbG90dGVkKCope3Zpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnR9Omhvc3QoW19mb2N1c2VkXSkgLmlucHV0LDpob3N0KFtfZm9jdXNlZF0pIFtmb2N1c2FibGVdLDpob3N0KFt0YWJpbmRl'@; put 'eD0iMCJdOmZvY3VzKSw6aG9zdChbdGFiaW5kZXg9IjAiXTpmb2N1cykgW2ZvY3VzYWJsZV0sW3RhYmluZGV4PSIwIl1bZm9jdXNhYmxlXTpmb2N1c3tvdXRsaW5lOkhpZ2hsaWdodCBzb2xpZCAycHg7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1v'@; put 'ZmZzZXQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCwxcHgpfWA7ZnVuY3Rpb24gT3JlKG4pe3JldHVybmBjYWxjKCgke259IC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkgKiAxcmVtKWB9Y2xhc3Mgdmx0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5m'@; put 'bj1lLHRoaXMuc3Vic2NyaXB0aW9ucz10fXVuc3Vic2NyaWJlKCl7Y29uc3QgZT10aGlzLnN1YnNjcmlwdGlvbnMuaW5kZXhPZih0aGlzKTstMSE9PWUmJnRoaXMuc3Vic2NyaXB0aW9ucy5zcGxpY2UoZSwxKX19Y29uc3QgTnJlPW5ldyBjbGFzcyBfbHR7Y29uc3RydWN0b3IoKXt0aGlzLnN1'@; put 'YnNjcmlwdGlvbnM9W119c3Vic2NyaWJlKGUpe2NvbnN0IHQ9bmV3IHZsdChlLHRoaXMuc3Vic2NyaXB0aW9ucyk7cmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHQpLHR9ZW1pdChlKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LmZuKGUpKX10b0V2ZW50T2JzZXJ2YWJs'@; put 'ZSgpe3JldHVybiB0aGlzfX07TnJlLmxpc3RlbmVyPWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkNEU19TVEFURV9VUERBVEUiLG49Pk5yZS5lbWl0KG4uZGV0YWlsKSk7Y2xhc3MgYTR7c3RhdGljIGdldCBzdGF0ZSgpe3JldHVybiBveWUoKSx3aW5kb3cuQ0RTLl9zdGF0ZX1zdGF0aWMg'@; put 'Z2V0VmFsdWUoZSl7cmV0dXJuIGE0LnN0YXRlW2VdfXN0YXRpYyBzZXRWYWx1ZShlLHQpe2E0LnN0YXRlW2VdPXR9c3RhdGljIGxvZygpe2JJLmxvZyhKU09OLnN0cmluZ2lmeShhNC5zdGF0ZSxudWxsLDIpKX19YTQuc3RhdGVVcGRhdGVzPU5yZS50b0V2ZW50T2JzZXJ2YWJsZSgpO2NvbnN0'@; put 'IHlsdD0obixlKT0+Im1ldGhvZCI9PT1lLmtpbmQmJmUuZGVzY3JpcHRvciYmISgidmFsdWUiaW4gZS5kZXNjcmlwdG9yKT97Li4uZSxmaW5pc2hlcih0KXt0LmNyZWF0ZVByb3BlcnR5KGUua2V5LG4pfX06e2tpbmQ6ImZpZWxkIixrZXk6U3ltYm9sKCkscGxhY2VtZW50OiJvd24iLGRlc2Ny'@; put 'aXB0b3I6e30sb3JpZ2luYWxLZXk6ZS5rZXksaW5pdGlhbGl6ZXIoKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5pbml0aWFsaXplciYmKHRoaXNbZS5rZXldPWUuaW5pdGlhbGl6ZXIuY2FsbCh0aGlzKSl9LGZpbmlzaGVyKHQpe3QuY3JlYXRlUHJvcGVydHkoZS5rZXksbil9fTtmdW5jdGlvbiBV'@; put 'eWUobil7cmV0dXJuKGUsdCk9PnZvaWQgMCE9PXQ/KChuLGUsdCk9PntlLmNvbnN0cnVjdG9yLmNyZWF0ZVByb3BlcnR5KHQsbil9KShuLGUsdCk6eWx0KG4sZSl9ZnVuY3Rpb24gWXllKG4sZSl7c3dpdGNoKGUmJmUudHlwZSl7Y2FzZSBBcnJheTpjYXNlIE9iamVjdDpyZXR1cm57cmVmbGVj'@; put 'dDohMSwuLi5lfTtjYXNlIFN0cmluZzpyZXR1cm57cmVmbGVjdDohMCxhdHRyaWJ1dGU6ZmIobiksY29udmVydGVyOnt0b0F0dHJpYnV0ZTp0PT50fHxudWxsfSwuLi5lfTtjYXNlIE51bWJlcjpyZXR1cm57cmVmbGVjdDohMCxhdHRyaWJ1dGU6ZmIobiksLi4uZX07Y2FzZSBCb29sZWFuOnJl'@; put 'dHVybntyZWZsZWN0OiEwLGF0dHJpYnV0ZTpmYihuKSxjb252ZXJ0ZXI6e3RvQXR0cmlidXRlOnQ9PnQ/IiI6bnVsbCxmcm9tQXR0cmlidXRlOnQ9PmZ1bmN0aW9uIERsdChuKXtyZXR1cm4gbnVsbCE9biYmIiIrbiE9ImZhbHNlIn0odCl9LC4uLmV9O2Nhc2UgRGF0ZTpyZXR1cm57cmVmbGVj'@; put 'dDohMSxjb252ZXJ0ZXI6e2Zyb21BdHRyaWJ1dGU6dD0+bmV3IERhdGUodCl9LC4uLmV9O2RlZmF1bHQ6cmV0dXJuey4uLmV9fX1mdW5jdGlvbiBjdihuKXtyZXR1cm4oZSx0KT0+KG4/LnJlcXVpcmVkJiZmdW5jdGlvbiBMbHQobixlLHQpe2NvbnN0IHI9bi5maXJzdFVwZGF0ZWQ7bi5maXJz'@; put 'dFVwZGF0ZWQ9ZnVuY3Rpb24oaSl7aWYodCYmdC5yZXF1aXJlZCYmeUkodGhpc1tlXSkpe2NvbnN0IG89dC5yZXF1aXJlZE1lc3NhZ2V8fGZ1bmN0aW9uKGE9Indhcm5pbmciLGwsdSl7Y29uc3QgZz11LnRvTG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuYCR7bnllKGEpfTogJHtsfSBpcyByZXF1'@; put 'aXJlZCB0byB1c2UgJHtnfSBjb21wb25lbnQuIFNldCB0aGUgSlMgUHJvcGVydHkgb3IgSFRNTCBBdHRyaWJ1dGUuXG5cbmArKFhfZSgpP2BBbmd1bGFyOiA8JHtnfSBbJHtsfV09Ii4uLiI+PC8ke2d9PlxuYDoiIikrKEpfZSgpP2BWdWU6IDwke2d9IDoke2x9PSIuLi4iPjwvJHtnfT5cbmA6'@; put 'IiIpKyhRX2UoKT9gUmVhY3Q6IDwke2Z1bmN0aW9uIEVzdChuKXtyZXR1cm4gbnllKGZ1bmN0aW9uIFNzdChuKXtyZXR1cm4gbi5zcGxpdCgiLSIpLm1hcCgoZSx0KT0+dD9lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTplKS5qb2luKCIiKX0obikp'@; put 'fShnKX0gJHtFPWwsRS5zdGFydHNXaXRoKCJhcmlhIik/ZmIoRSk6RX09ey4uLn0gLz5cbmA6IiIpK2BIVE1MOiA8JHtnfSAke2ZiKGwpfT0iLi4uIj48LyR7Z30+XG5KYXZhU2NyaXB0OiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcke2d9JykuJHtsfSA9ICcuLi4nO1xuXG5gO3ZhciBFfSh0'@; put 'LnJlcXVpcmVkLGUsdGhpcy50YWdOYW1lKTtpZigiZXJyb3IiPT09dC5yZXF1aXJlZCl0aHJvdyBFcnJvcihvKTtiSS53YXJuKG8sdGhpcyl9ciYmci5jYWxsKHRoaXMsaSl9fShlLHQsbiksVXllKFl5ZSh0LG4pKShlLHQpKX12YXIgUGx0PXZ5ZWBAa2V5ZnJhbWVzIGZhZGVJbkFuZE91dHsw'@; put 'JSx0b3tvcGFjaXR5OjB9NzUle29wYWNpdHk6MX19Omhvc3R7LS1jb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNk'@; put 'cy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttYXJnaW46MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZmlsbDp2YXIoLS1jb2xvcik7Y29sb3I6dmFyKC0tY29sb3IpO2NvbnRhaW46c3RyaWN0O2N1cnNvcjppbmhlcml0fXN2Z3tk'@; put 'aXNwbGF5OmJsb2NrfTpob3N0KFtzaXplKj14c10pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1n'@; put 'bG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSxjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwt'@; put 'YmFzZSwyMCkpKX06aG9zdChbc2l6ZSo9c21dKXtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1n'@; put 'bG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2Jh'@; put 'bC1iYXNlLDIwKSkpfTpob3N0KFtzaXplKj1tZF0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2Rz'@; put 'LWdsb2JhbC1iYXNlLDIwKSkpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xv'@; put 'YmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPWxnXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSxjYWxjKDM2ICogMXJlbSAvIHZhcigt'@; put 'LWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXhsXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMixjYWxjKDQ4ICogMXJlbSAv'@; put 'IHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2'@; put 'YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXh4bF0pe2hlaWdodDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICog'@; put 'MXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSk7d2lkdGg6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIo'@; put 'LS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMt'@; put 'Z2xvYmFsLWJhc2UsMjApKSkpO21pbi13aWR0aDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwt'@; put 'YmFzZSwyMCkpKSl9Omhvc3QoW3NpemUqPWZpdF0pe2hlaWdodDphdXRvO3dpZHRoOmF1dG87Y29udGFpbjpsYXlvdXR9Omhvc3QoW3N0YXR1cz1zdWNjZXNzXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAw'@; put 'LCAjNDI4MTBlKSl9Omhvc3QoW3N0YXR1cz1kYW5nZXJdKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIyMDApKX06aG9zdChbc3RhdHVzPXdhcm5pbmddKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1z'@; put 'dGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkpfTpob3N0KFtzdGF0dXM9aW5mb10pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9'@; put 'Omhvc3QoW3N0YXR1cz1uZXV0cmFsXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCwgIzRmNjE2OSkpfTpob3N0KFtpbnZlcnNlXSl7LS1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNv'@; put 'bnN0cnVjdGlvbi0yMDAsICNjYmQ0ZDgpfTpob3N0KFtkaXJlY3Rpb249dXBdKXt0cmFuc2Zvcm06cm90YXRlKDApfTpob3N0KFtkaXJlY3Rpb249ZG93bl0pe3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX06aG9zdChbZGlyZWN0aW9uPXJpZ2h0XSl7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9'@; put 'Omhvc3QoW2RpcmVjdGlvbj1sZWZ0XSl7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTpob3N0KFtmbGlwPWhvcml6b250YWxdKXt0cmFuc2Zvcm06c2NhbGUoLTEpIHJvdGF0ZVgoMTgwZGVnKX06aG9zdChbZmxpcD12ZXJ0aWNhbF0pe3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWSgxODBk'@; put 'ZWcpfS5hbGVydCwuYmFkZ2V7ZmlsbDp2YXIoLS1iYWRnZS1jb2xvcix2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsI2UwMjIwMCkpKX06aG9zdChbYmFkZ2U9c3VjY2Vzc10pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFz'@; put 'LXN0YXR1cy1zdWNjZXNzLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCwgIzQyODEwZSkpfTpob3N0KFtiYWRnZT1kYW5nZXJdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIy'@; put 'MDApKX06aG9zdChbYmFkZ2UqPXdhcm5pbmddKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkpfTpob3N0KFtiYWRnZT1pbmhlcml0XSl7LS1iYWRnZS1jb2xvcjpjdXJy'@; put 'ZW50Q29sb3J9Omhvc3QoW2JhZGdlPWluZm9dKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwgIzAwNzlhZCkpfTpob3N0KFtiYWRnZT1uZXV0cmFsXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxp'@; put 'YXMtc3RhdHVzLW5ldXRyYWwsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCwgIzRmNjE2OSkpfTpob3N0KFtiYWRnZT1pbmhlcml0LXRyaWFuZ2xlXSl7LS1iYWRnZS1jb2xvcjpjdXJyZW50Q29sb3J9Omhvc3QoW2JhZGdlXVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xv'@; put 'cjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlciwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwLCAjZTAyMjAwKSl9Omhvc3QoW2JhZGdlPXN1Y2Nlc3NdW2ludmVyc2VdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2VzcywgdmFyKC0tY2RzLWds'@; put 'b2JhbC1jb2xvci1ncmVlbi03MDAsICM0MjgxMGUpKX06aG9zdChbYmFkZ2UqPXdhcm5pbmddW2ludmVyc2VdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkpfTpob3N0'@; put 'KFtiYWRnZSo9aW5oZXJpdF1baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6Y3VycmVudENvbG9yfTpob3N0KFtiYWRnZT1pbmZvXVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8sIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDAsICMwMDc5'@; put 'YWQpKX0uY2RzLWludGVybmFsLWRvdC0xe2FuaW1hdGlvbjpmYWRlSW5BbmRPdXQgMS44cyBlYXNlLWluIDBzIGluZmluaXRlfS5jZHMtaW50ZXJuYWwtZG90LTJ7YW5pbWF0aW9uOmZhZGVJbkFuZE91dCAxLjhzIGVhc2Utb3V0IC40MjJzIGluZmluaXRlfS5jZHMtaW50ZXJuYWwtZG90LTN7'@; put 'YW5pbWF0aW9uOmZhZGVJbkFuZE91dCAxLjhzIGVhc2Utb3V0IC42NzVzIGluZmluaXRlfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbil7LmNkcy1pbnRlcm5hbC1kb3QtMSwuY2RzLWludGVybmFsLWRvdC0yLC5jZHMtaW50ZXJuYWwtZG90LTN7YW5pbWF0aW9uOm5vbmV9fWA7Y29u'@; put 'c3QgSGx0PVsidW5rbm93biIse291dGxpbmU6JzxjaXJjbGUgY2xhc3M9ImNkcy1pbnRlcm5hbC1kb3QtMyIgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjbGFzcz0iY2RzLWludGVybmFsLWRvdC0yIiBjeD0iMTgiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjbGFzcz0i'@; put 'Y2RzLWludGVybmFsLWRvdC0xIiBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIvPid9XTtjbGFzcyB6bHtzdGF0aWMgZ2V0IHJlZ2lzdHJ5KCl7cmV0dXJue3Vua25vd246SGx0WzFdLC4uLmE0LnN0YXRlLmljb25SZWdpc3RyeX19c3RhdGljIGFkZEljb25zKC4uLmUpe2E0LnN0YXRlLmljb25S'@; put 'ZWdpc3RyeT17Li4uYTQuc3RhdGUuaWNvblJlZ2lzdHJ5LC4uLk9iamVjdC5mcm9tRW50cmllcyhlLmZpbHRlcigoW3RdKT0+IXpsLnJlZ2lzdHJ5W3RdKSl9fXN0YXRpYyBhZGRBbGlhc2VzKC4uLmUpe2NvbnN0IHQ9ZS5maWx0ZXIoKFtyXSk9PnpsLnJlZ2lzdHJ5W3JdKS5mbGF0TWFwKChb'@; put 'cixpXSk9PmkubWFwKG89PltvLHpsLnJlZ2lzdHJ5W3JdXSkpO2E0LnN0YXRlLmljb25SZWdpc3RyeT17Li4uYTQuc3RhdGUuaWNvblJlZ2lzdHJ5LC4uLk9iamVjdC5mcm9tRW50cmllcyh0KX19c3RhdGljIGdldEljb25OYW1lRnJvbVNoYXBlKGUpe3JldHVybiBlWzBdfX12YXIgUDUsbjtm'@; put 'dW5jdGlvbiBabHQobixlKXtsZXQgdD0iIjtzd2l0Y2goZnVuY3Rpb24gemx0KG4pe3N3aXRjaCghMCl7Y2FzZSB5SShuKTpyZXR1cm4gUDUuTmlsU2l6ZVZhbHVlO2Nhc2UgZnVuY3Rpb24gR3llKG4pe3JldHVyblsieHhzIiwieHMiLCJzbSIsIm1kIiwibGciLCJ4bCIsInh4bCJdLmluZGV4'@; put 'T2Yobik+LTF9KG4pOnJldHVybiBQNS5WYWxpZFNpemVTdHJpbmc7Y2FzZSBmdW5jdGlvbiBVX2Uobil7cmV0dXJuIGhyZShuKSYmIUJfZShuLnRyaW0oKSkmJituPT0rbn0obik6cmV0dXJuIFA1LlZhbGlkTnVtZXJpY1N0cmluZztkZWZhdWx0OnJldHVybiBQNS5CYWRTaXplVmFsdWV9fShm'@; put 'dW5jdGlvbiBXbHQobil7cmV0dXJuIHlJKG4pPyIiOmZ1bmN0aW9uIE1zdChuLGUsdD0iIil7Y29uc3Qgcj1uLnNwbGl0KCIgIiksaT0iIj09PXQ/ci5maWx0ZXIobz0+byE9PWUpOnIubWFwKG89Pm89PT1lP3Q6byk7cmV0dXJuIGkubGVuZ3RoPjA/aS5qb2luKCIgIik6IiJ9KG4sImZpdCIp'@; put 'fShlKSkpe2Nhc2UgUDUuVmFsaWROdW1lcmljU3RyaW5nOnJldHVybiB0PU9yZShwYXJzZUludChlKSksdm9pZCBmdW5jdGlvbiBnbHQobiwuLi5lKXtlLmZvckVhY2goKFt0LHJdKT0+e24uc3R5bGVbdF09cn0pfShuLC4uLmZ1bmN0aW9uIFlsdChuLGUpe3JldHVybiFfSShuKSYmbi5pbmRl'@; put 'eE9mKCJmaXQiKT4tMT9bWyJ3aWR0aCIsImF1dG8iXSxbImhlaWdodCIsImF1dG8iXSxbIm1pbi13aWR0aCIsZV0sWyJtaW4taGVpZ2h0IixlXV06W1sid2lkdGgiLGVdLFsiaGVpZ2h0IixlXSxbIm1pbi13aWR0aCIsZV0sWyJtaW4taGVpZ2h0IixlXV19KGUsdCkpO2Nhc2UgUDUuVmFsaWRT'@; put 'aXplU3RyaW5nOmNhc2UgUDUuTmlsU2l6ZVZhbHVlOnJldHVybiB2b2lkIGZ1bmN0aW9uIG1sdChuLC4uLmUpe2UuZm9yRWFjaCh0PT57bi5zdHlsZVt0XT0iIn0pfShuLCJ3aWR0aCIsImhlaWdodCIsIm1pbi13aWR0aCIsIm1pbi1oZWlnaHQiKTtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24g'@; put 'RnJlKG4pe3JldHVybiBuLmJhZGdlJiYoImluaGVyaXQtdHJpYW5nbGUiPT09bi5iYWRnZXx8Indhcm5pbmctdHJpYW5nbGUiPT09bi5iYWRnZSl9KG49UDV8fChQNT17fSkpLkJhZFNpemVWYWx1ZT0iYmFkLXZhbHVlIixuLlZhbGlkU2l6ZVN0cmluZz0idmFsdWUtaXMtc3RyaW5nIixuLlZh'@; put 'bGlkTnVtZXJpY1N0cmluZz0idmFsdWUtaXMtbnVtZXJpYyIsbi5OaWxTaXplVmFsdWU9InZhbHVlLWlzLW5pbCI7Y2xhc3MgczQgZXh0ZW5kcyBUSXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fc2hhcGU9InVua25vd24iLHRoaXMuc29saWQ9ITEsdGhpcy5pbnZl'@; put 'cnNlPSExfXN0YXRpYyBnZXQgc3R5bGVzKCl7cmV0dXJuW2hsdCxQbHRdfWdldCBzaGFwZSgpe3JldHVybiB0aGlzLl9zaGFwZX1zZXQgc2hhcGUoZSl7aWYoZnVuY3Rpb24gcnN0KG4sZSl7cmV0dXJuIXlJKG4pJiZXX2UobixlKX0oZSx0aGlzLl9zaGFwZSkpe2NvbnN0IHQ9dGhpcy5fc2hh'@; put 'cGU7dGhpcy5fc2hhcGU9ZSx0aGlzLnJlcXVlc3RVcGRhdGUoInNoYXBlIix0KX19Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1zZXQgc2l6ZShlKXtpZihmdW5jdGlvbiBuc3QobixlKXtyZXR1cm4gZnVuY3Rpb24gdHN0KG4pe3JldHVybiBrX2UoU3RyaW5nLG4pfHxfSShuKX0obikm'@; put 'JldfZShuLGUpfShlLHRoaXMuX3NpemUpKXtjb25zdCB0PXRoaXMuX3NpemU7dGhpcy5fc2l6ZT1lLFpsdCh0aGlzLGUpLHRoaXMucmVxdWVzdFVwZGF0ZSgic2l6ZSIsdCl9fXVwZGF0ZWQoZSl7aWYoZS5oYXMoImlubmVyT2Zmc2V0IikmJnRoaXMuaW5uZXJPZmZzZXQ+MCl7Y29uc3QgdD1P'@; put 'cmUoLTEqdGhpcy5pbm5lck9mZnNldCkscj1gY2FsYygxMDAlICsgJHtPcmUoMip0aGlzLmlubmVyT2Zmc2V0KX0pYDt0aGlzLnN2Zy5zdHlsZS53aWR0aD1yLHRoaXMuc3ZnLnN0eWxlLmhlaWdodD1yLHRoaXMuc3ZnLnN0eWxlLm1hcmdpbj1gJHt0fSAwIDAgJHt0fWB9fWZpcnN0VXBkYXRl'@; put 'ZChlKXtpZihzdXBlci5maXJzdFVwZGF0ZWQoZSksdGhpcy5pc0Nvbm5lY3RlZCl7bGV0IHQ9InVua25vd24iO3RoaXMuc3Vic2NyaXB0aW9uPWE0LnN0YXRlVXBkYXRlcy5zdWJzY3JpYmUocj0+eyJpY29uUmVnaXN0cnkiPT09ci5rZXkmJnpsLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdJiZ0IT09'@; put 'dGhpcy5zaGFwZSYmKHQ9dGhpcy5zaGFwZSx0aGlzLnJlcXVlc3RVcGRhdGUoInNoYXBlIikpfSl9fWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKX1yZW5kZXIoKXtyZXR1cm4gaHJlKHps'@; put 'LnJlZ2lzdHJ5W3RoaXMuc2hhcGVdKT9zbHRgPHNwYW4gLmlubmVySFRNTD0iJHt6bC5yZWdpc3RyeVt0aGlzLnNoYXBlXX0iPjwvc3Bhbj5gOmxsdGA8c3ZnIC5pbm5lckhUTUw9IiR7ZnVuY3Rpb24gJGx0KG4pe2NvbnN0IGU9emwucmVnaXN0cnlbbi5zaGFwZV0/P3psLnJlZ2lzdHJ5LnVu'@; put 'a25vd247bGV0IHQ9bi5zb2xpZCYmZS5zb2xpZD9lLnNvbGlkOmUub3V0bGluZTtyZXR1cm4gbi5iYWRnZSYmIUZyZShuKSYmKHQ9bi5zb2xpZD9lLnNvbGlkQmFkZ2VkPz90OmUub3V0bGluZUJhZGdlZD8/dCksRnJlKG4pJiYodD1uLnNvbGlkP2Uuc29saWRBbGVydGVkPz90OmUub3V0bGlu'@; put 'ZUFsZXJ0ZWQ/P3QpLHR9KHRoaXMpK2Z1bmN0aW9uIEdsdChuKXtsZXQgZT0iIjtyZXR1cm4gbi5iYWRnZSYmRnJlKG4pP2U9JzxwYXRoIGQ9Ik0yNi44NSAxLjE0TDIxLjEzIDExYTEuMjggMS4yOCAwIDAwMS4xIDJoMTEuNDVhMS4yOCAxLjI4IDAgMDAxLjEtMmwtNS43Mi05Ljg2YTEuMjgg'@; put 'MS4yOCAwIDAwLTIuMjEgMHoiIGNsYXNzPSJhbGVydCIgLz4nOm4uYmFkZ2UmJihlPSc8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJiYWRnZSIgLz4nKSxlfSh0aGlzKX0iIHZpZXdCb3g9IjAgMCAzNiAzNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBh'@; put 'cmlhLWhpZGRlbj0idHJ1ZSI+PC9zdmc+YH19ZnVuY3Rpb24geEkobil7cmV0dXJuISFuJiYobiBpbnN0YW5jZW9mIGhvfHxabihuLmxpZnQpJiZabihuLnN1YnNjcmliZSkpfW80KFtjdih7dHlwZTpTdHJpbmd9KV0sczQucHJvdG90eXBlLCJzaGFwZSIsbnVsbCksbzQoW2N2KHt0eXBlOlN0'@; put 'cmluZ30pXSxzNC5wcm90b3R5cGUsInNpemUiLG51bGwpLG80KFtjdih7dHlwZTpTdHJpbmd9KV0sczQucHJvdG90eXBlLCJkaXJlY3Rpb24iLHZvaWQgMCksbzQoW2N2KHt0eXBlOlN0cmluZ30pXSxzNC5wcm90b3R5cGUsImZsaXAiLHZvaWQgMCksbzQoW2N2KHt0eXBlOkJvb2xlYW59KV0s'@; put 'czQucHJvdG90eXBlLCJzb2xpZCIsdm9pZCAwKSxvNChbY3Yoe3R5cGU6U3RyaW5nfSldLHM0LnByb3RvdHlwZSwic3RhdHVzIix2b2lkIDApLG80KFtjdih7dHlwZTpCb29sZWFufSldLHM0LnByb3RvdHlwZSwiaW52ZXJzZSIsdm9pZCAwKSxvNChbY3Yoe3R5cGU6U3RyaW5nfSldLHM0LnBy'@; put 'b3RvdHlwZSwiYmFkZ2UiLHZvaWQgMCksbzQoW2Z1bmN0aW9uIE9sdChuKXtyZXR1cm4oZSx0KT0+e2NvbnN0IHI9WXllKHQsbik7cmV0dXJuIHImJihyLnJlZmxlY3Q9ISFuPy5yZWZsZWN0JiZuLnJlZmxlY3Qsci5yZWZsZWN0JiYhbj8uYXR0cmlidXRlJiYoci5hdHRyaWJ1dGU9Il8iK2Zi'@; put 'KHQpKSksVXllKHIpKGUsdCl9fSh7dHlwZTpOdW1iZXJ9KV0sczQucHJvdG90eXBlLCJpbm5lck9mZnNldCIsdm9pZCAwKSxvNChbZnVuY3Rpb24gRmx0KG4sZSl7cmV0dXJuKCh7ZmluaXNoZXI6bixkZXNjcmlwdG9yOmV9KT0+KHQscik9Pnt2YXIgaTtpZih2b2lkIDA9PT1yKXtjb25zdCBv'@; put 'PW51bGwhPT0oaT10Lm9yaWdpbmFsS2V5KSYmdm9pZCAwIT09aT9pOnQua2V5LGE9bnVsbCE9ZT97a2luZDoibWV0aG9kIixwbGFjZW1lbnQ6InByb3RvdHlwZSIsa2V5Om8sZGVzY3JpcHRvcjplKHQua2V5KX06ey4uLnQsa2V5Om99O3JldHVybiBudWxsIT1uJiYoYS5maW5pc2hlcj1mdW5j'@; put 'dGlvbihsKXtuKGwsbyl9KSxhfXtjb25zdCBvPXQuY29uc3RydWN0b3I7dm9pZCAwIT09ZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixlKHIpKSxuPy4obyxyKX19KSh7ZGVzY3JpcHRvcjp0PT57Y29uc3Qgcj17Z2V0KCl7dmFyIGksbztyZXR1cm4gbnVsbCE9PShvPW51bGw9PT0oaT10'@; put 'aGlzLnJlbmRlclJvb3QpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnF1ZXJ5U2VsZWN0b3IobikpJiZ2b2lkIDAhPT1vP286bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O2lmKGUpe2NvbnN0IGk9InN5bWJvbCI9PXR5cGVvZiB0P1N5bWJvbCgpOiJfXyIrdDtyLmdldD1mdW5j'@; put 'dGlvbigpe3ZhciBvLGE7cmV0dXJuIHZvaWQgMD09PXRoaXNbaV0mJih0aGlzW2ldPW51bGwhPT0oYT1udWxsPT09KG89dGhpcy5yZW5kZXJSb290KXx8dm9pZCAwPT09bz92b2lkIDA6by5xdWVyeVNlbGVjdG9yKG4pKSYmdm9pZCAwIT09YT9hOm51bGwpLHRoaXNbaV19fXJldHVybiByfX0p'@; put 'fSgic3ZnIildLHM0LnByb3RvdHlwZSwic3ZnIix2b2lkIDApLGZ1bmN0aW9uIFJzdChuLGUpeyRfZSgpJiZxX2UoWyJjdXN0b21FbGVtZW50cyJdKSYma3N0KG4sZSx3aW5kb3cuY3VzdG9tRWxlbWVudHMpfSgiY2RzLWljb24iLHM0KTtjb25zdCBQcmU9bj0+biYmIm51bWJlciI9PXR5cGVv'@; put 'ZiBuLmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIG47ZnVuY3Rpb24gJHllKG4pe3JldHVybiBabihuPy50aGVuKX1mdW5jdGlvbiBxeWUobil7cmV0dXJuIFpuKG5bZWFdKX1mdW5jdGlvbiBLeWUobil7cmV0dXJuIFN5bWJvbC5hc3luY0l0ZXJhdG9yJiZabihuPy5bU3ltYm9sLmFzeW5j'@; put 'SXRlcmF0b3JdKX1mdW5jdGlvbiBYeWUobil7cmV0dXJuIG5ldyBUeXBlRXJyb3IoYFlvdSBwcm92aWRlZCAke251bGwhPT1uJiYib2JqZWN0Ij09dHlwZW9mIG4/ImFuIGludmFsaWQgb2JqZWN0IjpgJyR7bn0nYH0gd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3Zp'@; put 'ZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS5gKX1jb25zdCBReWU9ZnVuY3Rpb24gdGN0KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yP1N5bWJvbC5pdGVy'@; put 'YXRvcjoiQEBpdGVyYXRvciJ9KCk7ZnVuY3Rpb24gSnllKG4pe3JldHVybiBabihuPy5bUXllXSl9ZnVuY3Rpb24gZWJlKG4pe3JldHVybiBmdW5jdGlvbiBjeWUobixlLHQpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRv'@; put 'ciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgaSxyPXQuYXBwbHkobixlfHxbXSksbz1bXTtyZXR1cm4gaT1PYmplY3QuY3JlYXRlKCgiZnVuY3Rpb24iPT10eXBlb2YgQXN5bmNJdGVyYXRvcj9Bc3luY0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKSxsKCJuZXh0IiksbCgidGhyb3ciKSxsKCJy'@; put 'ZXR1cm4iLGZ1bmN0aW9uIGEoZWUpe3JldHVybiBmdW5jdGlvbih2ZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh2ZSkudGhlbihlZSxPKX19KSxpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxpO2Z1bmN0aW9uIGwoZWUsdmUpe3JbZWVdJiYoaVtlZV09'@; put 'ZnVuY3Rpb24oTWUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihIZSxXZSl7by5wdXNoKFtlZSxNZSxIZSxXZV0pPjF8fHUoZWUsTWUpfSl9LHZlJiYoaVtlZV09dmUoaVtlZV0pKSl9ZnVuY3Rpb24gdShlZSx2ZSl7dHJ5eyFmdW5jdGlvbiBnKGVlKXtlZS52YWx1ZSBpbnN0YW5jZW9m'@; put 'IGx2P1Byb21pc2UucmVzb2x2ZShlZS52YWx1ZS52KS50aGVuKEUsTyk6WihvWzBdWzJdLGVlKX0ocltlZV0odmUpKX1jYXRjaChNZSl7WihvWzBdWzNdLE1lKX19ZnVuY3Rpb24gRShlZSl7dSgibmV4dCIsZWUpfWZ1bmN0aW9uIE8oZWUpe3UoInRocm93IixlZSl9ZnVuY3Rpb24gWihlZSx2'@; put 'ZSl7ZWUodmUpLG8uc2hpZnQoKSxvLmxlbmd0aCYmdShvWzBdWzBdLG9bMF1bMV0pfX0odGhpcyxhcmd1bWVudHMsZnVuY3Rpb24qKCl7Y29uc3QgdD1uLmdldFJlYWRlcigpO3RyeXtmb3IoOzspe2NvbnN0e3ZhbHVlOnIsZG9uZTppfT15aWVsZCBsdih0LnJlYWQoKSk7aWYoaSlyZXR1cm4g'@; put 'eWllbGQgbHYodm9pZCAwKTt5aWVsZCB5aWVsZCBsdihyKX19ZmluYWxseXt0LnJlbGVhc2VMb2NrKCl9fSl9ZnVuY3Rpb24gdGJlKG4pe3JldHVybiBabihuPy5nZXRSZWFkZXIpfWZ1bmN0aW9uIE4yKG4pe2lmKG4gaW5zdGFuY2VvZiBobylyZXR1cm4gbjtpZihudWxsIT1uKXtpZihxeWUo'@; put 'bikpcmV0dXJuIGZ1bmN0aW9uIG5jdChuKXtyZXR1cm4gbmV3IGhvKGU9Pntjb25zdCB0PW5bZWFdKCk7aWYoWm4odC5zdWJzY3JpYmUpKXJldHVybiB0LnN1YnNjcmliZShlKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVu'@; put 'dCBTeW1ib2wub2JzZXJ2YWJsZSIpfSl9KG4pO2lmKFByZShuKSlyZXR1cm4gZnVuY3Rpb24gcmN0KG4pe3JldHVybiBuZXcgaG8oZT0+e2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGgmJiFlLmNsb3NlZDt0KyspZS5uZXh0KG5bdF0pO2UuY29tcGxldGUoKX0pfShuKTtpZigkeWUobikpcmV0dXJu'@; put 'IGZ1bmN0aW9uIGljdChuKXtyZXR1cm4gbmV3IGhvKGU9PntuLnRoZW4odD0+e2UuY2xvc2VkfHwoZS5uZXh0KHQpLGUuY29tcGxldGUoKSl9LHQ9PmUuZXJyb3IodCkpLnRoZW4obnVsbCxNaSl9KX0obik7aWYoS3llKG4pKXJldHVybiBuYmUobik7aWYoSnllKG4pKXJldHVybiBmdW5jdGlv'@; put 'biBvY3Qobil7cmV0dXJuIG5ldyBobyhlPT57Zm9yKGNvbnN0IHQgb2YgbilpZihlLm5leHQodCksZS5jbG9zZWQpcmV0dXJuO2UuY29tcGxldGUoKX0pfShuKTtpZih0YmUobikpcmV0dXJuIGZ1bmN0aW9uIGFjdChuKXtyZXR1cm4gbmJlKGViZShuKSl9KG4pfXRocm93IFh5ZShuKX1mdW5j'@; put 'dGlvbiBuYmUobil7cmV0dXJuIG5ldyBobyhlPT57KGZ1bmN0aW9uIHNjdChuLGUpe3ZhciB0LHIsaSxvO3JldHVybiBmdW5jdGlvbiBzeWUobixlLHQscil7cmV0dXJuIG5ldyh0fHwodD1Qcm9taXNlKSkoZnVuY3Rpb24obyxhKXtmdW5jdGlvbiBsKEUpe3RyeXtnKHIubmV4dChFKSl9Y2F0'@; put 'Y2goTyl7YShPKX19ZnVuY3Rpb24gdShFKXt0cnl7ZyhyLnRocm93KEUpKX1jYXRjaChPKXthKE8pfX1mdW5jdGlvbiBnKEUpe0UuZG9uZT9vKEUudmFsdWUpOmZ1bmN0aW9uIGkobyl7cmV0dXJuIG8gaW5zdGFuY2VvZiB0P286bmV3IHQoZnVuY3Rpb24oYSl7YShvKX0pfShFLnZhbHVlKS50'@; put 'aGVuKGwsdSl9Zygocj1yLmFwcGx5KG4sZXx8W10pKS5uZXh0KCkpfSl9KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0cnl7Zm9yKHQ9dXllKG4pOyEocj15aWVsZCB0Lm5leHQoKSkuZG9uZTspaWYoZS5uZXh0KHIudmFsdWUpLGUuY2xvc2VkKXJldHVybn1jYXRjaChhKXtpPXtl'@; put 'cnJvcjphfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobz10LnJldHVybikmJih5aWVsZCBvLmNhbGwodCkpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1lLmNvbXBsZXRlKCl9KX0pKG4sZSkuY2F0Y2godD0+ZS5lcnJvcih0KSl9KX1mdW5jdGlvbiBROChuLGUsdCxyPTAsaT0hMSl7'@; put 'Y29uc3Qgbz1lLnNjaGVkdWxlKGZ1bmN0aW9uKCl7dCgpLGk/bi5hZGQodGhpcy5zY2hlZHVsZShudWxsLHIpKTp0aGlzLnVuc3Vic2NyaWJlKCl9LHIpO2lmKG4uYWRkKG8pLCFpKXJldHVybiBvfWZ1bmN0aW9uIHJiZShuLGU9MCl7cmV0dXJuIGFkKCh0LHIpPT57dC5zdWJzY3JpYmUodnUo'@; put 'cixpPT5ROChyLG4sKCk9PnIubmV4dChpKSxlKSwoKT0+UTgocixuLCgpPT5yLmNvbXBsZXRlKCksZSksaT0+UTgocixuLCgpPT5yLmVycm9yKGkpLGUpKSl9KX1mdW5jdGlvbiBpYmUobixlPTApe3JldHVybiBhZCgodCxyKT0+e3IuYWRkKG4uc2NoZWR1bGUoKCk9PnQuc3Vic2NyaWJlKHIp'@; put 'LGUpKX0pfWZ1bmN0aW9uIG9iZShuLGUpe2lmKCFuKXRocm93IG5ldyBFcnJvcigiSXRlcmFibGUgY2Fubm90IGJlIG51bGwiKTtyZXR1cm4gbmV3IGhvKHQ9PntROCh0LGUsKCk9Pntjb25zdCByPW5bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7UTgodCxlLCgpPT57ci5uZXh0KCkudGhlbihp'@; put 'PT57aS5kb25lP3QuY29tcGxldGUoKTp0Lm5leHQoaS52YWx1ZSl9KX0sMCwhMCl9KX0pfWZ1bmN0aW9uIFoxKG4sZSl7cmV0dXJuIGU/ZnVuY3Rpb24gZmN0KG4sZSl7aWYobnVsbCE9bil7aWYocXllKG4pKXJldHVybiBmdW5jdGlvbiBsY3QobixlKXtyZXR1cm4gTjIobikucGlwZShpYmUo'@; put 'ZSkscmJlKGUpKX0obixlKTtpZihQcmUobikpcmV0dXJuIGZ1bmN0aW9uIHVjdChuLGUpe3JldHVybiBuZXcgaG8odD0+e2xldCByPTA7cmV0dXJuIGUuc2NoZWR1bGUoZnVuY3Rpb24oKXtyPT09bi5sZW5ndGg/dC5jb21wbGV0ZSgpOih0Lm5leHQobltyKytdKSx0LmNsb3NlZHx8dGhpcy5z'@; put 'Y2hlZHVsZSgpKX0pfSl9KG4sZSk7aWYoJHllKG4pKXJldHVybiBmdW5jdGlvbiBjY3QobixlKXtyZXR1cm4gTjIobikucGlwZShpYmUoZSkscmJlKGUpKX0obixlKTtpZihLeWUobikpcmV0dXJuIG9iZShuLGUpO2lmKEp5ZShuKSlyZXR1cm4gZnVuY3Rpb24gZGN0KG4sZSl7cmV0dXJuIG5l'@; put 'dyBobyh0PT57bGV0IHI7cmV0dXJuIFE4KHQsZSwoKT0+e3I9bltReWVdKCksUTgodCxlLCgpPT57bGV0IGksbzt0cnl7KHt2YWx1ZTppLGRvbmU6b309ci5uZXh0KCkpfWNhdGNoKGEpe3JldHVybiB2b2lkIHQuZXJyb3IoYSl9bz90LmNvbXBsZXRlKCk6dC5uZXh0KGkpfSwwLCEwKX0pLCgp'@; put 'PT5abihyPy5yZXR1cm4pJiZyLnJldHVybigpfSl9KG4sZSk7aWYodGJlKG4pKXJldHVybiBmdW5jdGlvbiBoY3QobixlKXtyZXR1cm4gb2JlKGViZShuKSxlKX0obixlKX10aHJvdyBYeWUobil9KG4sZSk6TjIobil9ZnVuY3Rpb24gYWJlKG4pe3JldHVybiBuJiZabihuLnNjaGVkdWxlKX1m'@; put 'dW5jdGlvbiBIcmUobil7cmV0dXJuIG5bbi5sZW5ndGgtMV19ZnVuY3Rpb24gc2JlKG4pe3JldHVybiBabihIcmUobikpP24ucG9wKCk6dm9pZCAwfWZ1bmN0aW9uIEFJKG4pe3JldHVybiBhYmUoSHJlKG4pKT9uLnBvcCgpOnZvaWQgMH1mdW5jdGlvbiBQYSguLi5uKXtyZXR1cm4gWjEobixB'@; put 'SShuKSl9Y29uc3R7aXNBcnJheTpnY3R9PUFycmF5LHtnZXRQcm90b3R5cGVPZjptY3QscHJvdG90eXBlOnZjdCxrZXlzOl9jdH09T2JqZWN0O2Z1bmN0aW9uIGxiZShuKXtpZigxPT09bi5sZW5ndGgpe2NvbnN0IGU9blswXTtpZihnY3QoZSkpcmV0dXJue2FyZ3M6ZSxrZXlzOm51bGx9O2lm'@; put 'KGZ1bmN0aW9uIHljdChuKXtyZXR1cm4gbiYmIm9iamVjdCI9PXR5cGVvZiBuJiZtY3Qobik9PT12Y3R9KGUpKXtjb25zdCB0PV9jdChlKTtyZXR1cm57YXJnczp0Lm1hcChyPT5lW3JdKSxrZXlzOnR9fX1yZXR1cm57YXJnczpuLGtleXM6bnVsbH19Y29uc3R7aXNBcnJheTpiY3R9PUFycmF5'@; put 'O2Z1bmN0aW9uIFZyZShuKXtyZXR1cm4gRXMoZT0+ZnVuY3Rpb24gd2N0KG4sZSl7cmV0dXJuIGJjdChlKT9uKC4uLmUpOm4oZSl9KG4sZSkpfWZ1bmN0aW9uIGNiZShuLGUpe3JldHVybiBuLnJlZHVjZSgodCxyLGkpPT4odFtyXT1lW2ldLHQpLHt9KX1mdW5jdGlvbiBfYiguLi5uKXtjb25z'@; put 'dCBlPUFJKG4pLHQ9c2JlKG4pLHthcmdzOnIsa2V5czppfT1sYmUobik7aWYoMD09PXIubGVuZ3RoKXJldHVybiBaMShbXSxlKTtjb25zdCBvPW5ldyBobyhmdW5jdGlvbiBDY3QobixlLHQ9cmEpe3JldHVybiByPT57dWJlKGUsKCk9Pntjb25zdHtsZW5ndGg6aX09bixvPW5ldyBBcnJheShp'@; put 'KTtsZXQgYT1pLGw9aTtmb3IobGV0IHU9MDt1PGk7dSsrKXViZShlLCgpPT57Y29uc3QgZz1aMShuW3VdLGUpO2xldCBFPSExO2cuc3Vic2NyaWJlKHZ1KHIsTz0+e29bdV09TyxFfHwoRT0hMCxsLS0pLGx8fHIubmV4dCh0KG8uc2xpY2UoKSkpfSwoKT0+ey0tYXx8ci5jb21wbGV0ZSgpfSkp'@; put 'fSxyKX0scil9fShyLGUsaT9hPT5jYmUoaSxhKTpyYSkpO3JldHVybiB0P28ucGlwZShWcmUodCkpOm99ZnVuY3Rpb24gdWJlKG4sZSx0KXtuP1E4KHQsbixlKTplKCl9Y29uc3QgTFU9U24obj0+ZnVuY3Rpb24oKXtuKHRoaXMpLHRoaXMubmFtZT0iRW1wdHlFcnJvciIsdGhpcy5tZXNzYWdl'@; put 'PSJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZSJ9KTtmdW5jdGlvbiBHMChuLGUsdD0xLzApe3JldHVybiBabihlKT9HMCgocixpKT0+RXMoKG8sYSk9PmUocixvLGksYSkpKE4yKG4ocixpKSkpLHQpOigibnVtYmVyIj09dHlwZW9mIGUmJih0PWUpLGFkKChyLGkpPT5mdW5jdGlvbiBTY3Qobixl'@; put 'LHQscixpLG8sYSxsKXtjb25zdCB1PVtdO2xldCBnPTAsRT0wLE89ITE7Y29uc3QgWj0oKT0+e08mJiF1Lmxlbmd0aCYmIWcmJmUuY29tcGxldGUoKX0sZWU9TWU9Pmc8cj92ZShNZSk6dS5wdXNoKE1lKSx2ZT1NZT0+e28mJmUubmV4dChNZSksZysrO2xldCBIZT0hMTtOMih0KE1lLEUrKykp'@; put 'LnN1YnNjcmliZSh2dShlLFdlPT57aT8uKFdlKSxvP2VlKFdlKTplLm5leHQoV2UpfSwoKT0+e0hlPSEwfSx2b2lkIDAsKCk9PntpZihIZSl0cnl7Zm9yKGctLTt1Lmxlbmd0aCYmZzxyOyl7Y29uc3QgV2U9dS5zaGlmdCgpO2E/UTgoZSxhLCgpPT52ZShXZSkpOnZlKFdlKX1aKCl9Y2F0Y2go'@; put 'V2Upe2UuZXJyb3IoV2UpfX0pKX07cmV0dXJuIG4uc3Vic2NyaWJlKHZ1KGUsZWUsKCk9PntPPSEwLFooKX0pKSwoKT0+e2w/LigpfX0ocixpLG4sdCkpKX1mdW5jdGlvbiBPRShuPTEvMCl7cmV0dXJuIEcwKHJhLG4pfWZ1bmN0aW9uIEJyZSguLi5uKXtyZXR1cm4gZnVuY3Rpb24gRWN0KCl7'@; put 'cmV0dXJuIE9FKDEpfSgpKFoxKG4sQUkobikpKX1mdW5jdGlvbiBqcmUobil7cmV0dXJuIG5ldyBobyhlPT57TjIobigpKS5zdWJzY3JpYmUoZSl9KX1mdW5jdGlvbiBrSShuLGUpe2NvbnN0IHQ9Wm4obik/bjooKT0+bixyPWk9PmkuZXJyb3IodCgpKTtyZXR1cm4gbmV3IGhvKGU/aT0+ZS5z'@; put 'Y2hlZHVsZShyLDAsaSk6cil9Y29uc3QgRXA9bmV3IGhvKG49Pm4uY29tcGxldGUoKSk7ZnVuY3Rpb24gVXJlKCl7cmV0dXJuIGFkKChuLGUpPT57bGV0IHQ9bnVsbDtuLl9yZWZDb3VudCsrO2NvbnN0IHI9dnUoZSx2b2lkIDAsdm9pZCAwLHZvaWQgMCwoKT0+e2lmKCFufHxuLl9yZWZDb3Vu'@; put 'dDw9MHx8MDwtLW4uX3JlZkNvdW50KXJldHVybiB2b2lkKHQ9bnVsbCk7Y29uc3QgaT1uLl9jb25uZWN0aW9uLG89dDt0PW51bGwsaSYmKCFvfHxpPT09bykmJmkudW5zdWJzY3JpYmUoKSxlLnVuc3Vic2NyaWJlKCl9KTtuLnN1YnNjcmliZShyKSxyLmNsb3NlZHx8KHQ9bi5jb25uZWN0KCkp'@; put 'fSl9Y2xhc3MgenJlIGV4dGVuZHMgaG97Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuc291cmNlPWUsdGhpcy5zdWJqZWN0RmFjdG9yeT10LHRoaXMuX3N1YmplY3Q9bnVsbCx0aGlzLl9yZWZDb3VudD0wLHRoaXMuX2Nvbm5lY3Rpb249bnVsbCxNOShlKSYmKHRoaXMubGlmdD1lLmxp'@; put 'ZnQpfV9zdWJzY3JpYmUoZSl7cmV0dXJuIHRoaXMuZ2V0U3ViamVjdCgpLnN1YnNjcmliZShlKX1nZXRTdWJqZWN0KCl7Y29uc3QgZT10aGlzLl9zdWJqZWN0O3JldHVybighZXx8ZS5pc1N0b3BwZWQpJiYodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1Ympl'@; put 'Y3R9X3RlYXJkb3duKCl7dGhpcy5fcmVmQ291bnQ9MDtjb25zdHtfY29ubmVjdGlvbjplfT10aGlzO3RoaXMuX3N1YmplY3Q9dGhpcy5fY29ubmVjdGlvbj1udWxsLGU/LnVuc3Vic2NyaWJlKCl9Y29ubmVjdCgpe2xldCBlPXRoaXMuX2Nvbm5lY3Rpb247aWYoIWUpe2U9dGhpcy5fY29ubmVj'@; put 'dGlvbj1uZXcgQXI7Y29uc3QgdD10aGlzLmdldFN1YmplY3QoKTtlLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUodnUodCx2b2lkIDAsKCk9Pnt0aGlzLl90ZWFyZG93bigpLHQuY29tcGxldGUoKX0scj0+e3RoaXMuX3RlYXJkb3duKCksdC5lcnJvcihyKX0sKCk9PnRoaXMuX3RlYXJkb3du'@; put 'KCkpKSksZS5jbG9zZWQmJih0aGlzLl9jb25uZWN0aW9uPW51bGwsZT1Bci5FTVBUWSl9cmV0dXJuIGV9cmVmQ291bnQoKXtyZXR1cm4gVXJlKCkodGhpcyl9fWZ1bmN0aW9uIG0wKG4sZSl7cmV0dXJuIGFkKCh0LHIpPT57bGV0IGk9bnVsbCxvPTAsYT0hMTtjb25zdCBsPSgpPT5hJiYhaSYm'@; put 'ci5jb21wbGV0ZSgpO3Quc3Vic2NyaWJlKHZ1KHIsdT0+e2k/LnVuc3Vic2NyaWJlKCk7bGV0IGc9MDtjb25zdCBFPW8rKztOMihuKHUsRSkpLnN1YnNjcmliZShpPXZ1KHIsTz0+ci5uZXh0KGU/ZSh1LE8sRSxnKyspOk8pLCgpPT57aT1udWxsLGwoKX0pKX0sKCk9PnthPSEwLGwoKX0pKX0p'@; put 'fWZ1bmN0aW9uIE1wKG4pe3JldHVybiBuPD0wPygpPT5FcDphZCgoZSx0KT0+e2xldCByPTA7ZS5zdWJzY3JpYmUodnUodCxpPT57KytyPD1uJiYodC5uZXh0KGkpLG48PXImJnQuY29tcGxldGUoKSl9KSl9KX1mdW5jdGlvbiBxZyguLi5uKXtjb25zdCBlPUFJKG4pO3JldHVybiBhZCgodCxy'@; put 'KT0+eyhlP0JyZShuLHQsZSk6QnJlKG4sdCkpLnN1YnNjcmliZShyKX0pfWZ1bmN0aW9uIHN1KG4sZSl7cmV0dXJuIGFkKCh0LHIpPT57bGV0IGk9MDt0LnN1YnNjcmliZSh2dShyLG89Pm4uY2FsbChlLG8saSsrKSYmci5uZXh0KG8pKSl9KX1mdW5jdGlvbiBPVShuKXtyZXR1cm4gYWQoKGUs'@; put 'dCk9PntsZXQgcj0hMTtlLnN1YnNjcmliZSh2dSh0LGk9PntyPSEwLHQubmV4dChpKX0sKCk9PntyfHx0Lm5leHQobiksdC5jb21wbGV0ZSgpfSkpfSl9ZnVuY3Rpb24gZGJlKG49eGN0KXtyZXR1cm4gYWQoKGUsdCk9PntsZXQgcj0hMTtlLnN1YnNjcmliZSh2dSh0LGk9PntyPSEwLHQubmV4'@; put 'dChpKX0sKCk9PnI/dC5jb21wbGV0ZSgpOnQuZXJyb3IobigpKSkpfSl9ZnVuY3Rpb24geGN0KCl7cmV0dXJuIG5ldyBMVX1mdW5jdGlvbiB1dihuLGUpe2NvbnN0IHQ9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gcj0+ci5waXBlKG4/c3UoKGksbyk9Pm4oaSxvLHIpKTpyYSxNcCgxKSx0'@; put 'P09VKGUpOmRiZSgoKT0+bmV3IExVKSl9ZnVuY3Rpb24gTkUobixlKXtyZXR1cm4gWm4oZSk/RzAobixlLDEpOkcwKG4sMSl9ZnVuY3Rpb24gZjEobixlLHQpe2NvbnN0IHI9Wm4obil8fGV8fHQ/e25leHQ6bixlcnJvcjplLGNvbXBsZXRlOnR9Om47cmV0dXJuIHI/YWQoKGksbyk9Pnt2YXIg'@; put 'YTtudWxsPT09KGE9ci5zdWJzY3JpYmUpfHx2b2lkIDA9PT1hfHxhLmNhbGwocik7bGV0IGw9ITA7aS5zdWJzY3JpYmUodnUobyx1PT57dmFyIGc7bnVsbD09PShnPXIubmV4dCl8fHZvaWQgMD09PWd8fGcuY2FsbChyLHUpLG8ubmV4dCh1KX0sKCk9Pnt2YXIgdTtsPSExLG51bGw9PT0odT1y'@; put 'LmNvbXBsZXRlKXx8dm9pZCAwPT09dXx8dS5jYWxsKHIpLG8uY29tcGxldGUoKX0sdT0+e3ZhciBnO2w9ITEsbnVsbD09PShnPXIuZXJyb3IpfHx2b2lkIDA9PT1nfHxnLmNhbGwocix1KSxvLmVycm9yKHUpfSwoKT0+e3ZhciB1LGc7bCYmKG51bGw9PT0odT1yLnVuc3Vic2NyaWJlKXx8dm9p'@; put 'ZCAwPT09dXx8dS5jYWxsKHIpKSxudWxsPT09KGc9ci5maW5hbGl6ZSl8fHZvaWQgMD09PWd8fGcuY2FsbChyKX0pKX0pOnJhfWZ1bmN0aW9uIHliKG4pe3JldHVybiBhZCgoZSx0KT0+e2xldCBvLHI9bnVsbCxpPSExO3I9ZS5zdWJzY3JpYmUodnUodCx2b2lkIDAsdm9pZCAwLGE9PntvPU4y'@; put 'KG4oYSx5YihuKShlKSkpLHI/KHIudW5zdWJzY3JpYmUoKSxyPW51bGwsby5zdWJzY3JpYmUodCkpOmk9ITB9KSksaSYmKHIudW5zdWJzY3JpYmUoKSxyPW51bGwsby5zdWJzY3JpYmUodCkpfSl9ZnVuY3Rpb24gV3JlKG4pe3JldHVybiBuPD0wPygpPT5FcDphZCgoZSx0KT0+e2xldCByPVtd'@; put 'O2Uuc3Vic2NyaWJlKHZ1KHQsaT0+e3IucHVzaChpKSxuPHIubGVuZ3RoJiZyLnNoaWZ0KCl9LCgpPT57Zm9yKGNvbnN0IGkgb2Ygcil0Lm5leHQoaSk7dC5jb21wbGV0ZSgpfSx2b2lkIDAsKCk9PntyPW51bGx9KSl9KX1mdW5jdGlvbiBSSShuKXtyZXR1cm4gYWQoKGUsdCk9Pnt0cnl7ZS5z'@; put 'dWJzY3JpYmUodCl9ZmluYWxseXt0LmFkZChuKX19KX1mdW5jdGlvbiB2MChuKXtyZXR1cm4gYWQoKGUsdCk9PntOMihuKS5zdWJzY3JpYmUodnUodCwoKT0+dC5jb21wbGV0ZSgpLEdlKSksIXQuY2xvc2VkJiZlLnN1YnNjcmliZSh0KX0pfWxldCBCY3Q9KCgpPT57Y2xhc3MgbntfZG9jO2Nv'@; put 'bnN0cnVjdG9yKHQpe3RoaXMuX2RvYz10fWdldFRpdGxlKCl7cmV0dXJuIHRoaXMuX2RvYy50aXRsZX1zZXRUaXRsZSh0KXt0aGlzLl9kb2MudGl0bGU9dHx8IiJ9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKG9yKFRsKSl9O3N0YXRpYyBcdTAyNzVwcm92'@; put 'PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCksYmJlPSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0'@; put 'b3J5OmZ1bmN0aW9uKHIpe2xldCBpPW51bGw7cmV0dXJuIGk9cj9uZXcocnx8bik6b3IoV2N0KSxpfSxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxXY3Q9KCgpPT57Y2xhc3MgbiBleHRlbmRzIGJiZXtfZG9jO2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZG9jPXR9c2Fu'@; put 'aXRpemUodCxyKXtpZihudWxsPT1yKXJldHVybiBudWxsO3N3aXRjaCh0KXtjYXNlICRlLk5PTkU6cmV0dXJuIHI7Y2FzZSAkZS5IVE1MOnJldHVybiBIZyhyLCJIVE1MIik/azIocik6R1YodGhpcy5fZG9jLFN0cmluZyhyKSkudG9TdHJpbmcoKTtjYXNlICRlLlNUWUxFOnJldHVybiBIZyhy'@; put 'LCJTdHlsZSIpP2syKHIpOnI7Y2FzZSAkZS5TQ1JJUFQ6aWYoSGcociwiU2NyaXB0IikpcmV0dXJuIGsyKHIpO3Rocm93IG5ldyBXbig1MjAwLCExKTtjYXNlICRlLlVSTDpyZXR1cm4gSGcociwiVVJMIik/azIocik6VlMoU3RyaW5nKHIpKTtjYXNlICRlLlJFU09VUkNFX1VSTDppZihIZyhy'@; put 'LCJSZXNvdXJjZVVSTCIpKXJldHVybiBrMihyKTt0aHJvdyBuZXcgV24oNTIwMSwhMSk7ZGVmYXVsdDp0aHJvdyBuZXcgV24oNTIwMiwhMSl9fWJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHQpe3JldHVybiBmdW5jdGlvbiB5SihuKXtyZXR1cm4gbmV3IHBKKG4pfSh0KX1ieXBhc3NTZWN1cml0'@; put 'eVRydXN0U3R5bGUodCl7cmV0dXJuIGZ1bmN0aW9uIEJWKG4pe3JldHVybiBuZXcgZ0oobil9KHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodCl7cmV0dXJuIGZ1bmN0aW9uIGJKKG4pe3JldHVybiBuZXcgbUoobil9KHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodCl7cmV0dXJuIGZ1'@; put 'bmN0aW9uIHdKKG4pe3JldHVybiBuZXcgdkoobil9KHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0KXtyZXR1cm4gZnVuY3Rpb24gQ0oobil7cmV0dXJuIG5ldyBWVihuKX0odCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKG9yKFRsKSl9'@; put 'O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCk7Y29uc3QgWnM9InByaW1hcnkiLExJPVN5bWJvbCgiUm91dGVUaXRsZSIpO2NsYXNzIFljdHtwYXJhbXM7Y29uc3RydWN0b3IoZSl7dGhpcy5w'@; put 'YXJhbXM9ZXx8e319aGFzKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5wYXJhbXMsZSl9Z2V0KGUpe2lmKHRoaXMuaGFzKGUpKXtjb25zdCB0PXRoaXMucGFyYW1zW2VdO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3RbMF06dH1yZXR1cm4gbnVs'@; put 'bH1nZXRBbGwoZSl7aWYodGhpcy5oYXMoZSkpe2NvbnN0IHQ9dGhpcy5wYXJhbXNbZV07cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpbdF19cmV0dXJuW119Z2V0IGtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpfX1mdW5jdGlvbiBGRShuKXtyZXR1cm4gbmV3IFljdChu'@; put 'KX1mdW5jdGlvbiBaY3QobixlLHQpe2NvbnN0IHI9dC5wYXRoLnNwbGl0KCIvIik7aWYoci5sZW5ndGg+bi5sZW5ndGh8fCJmdWxsIj09PXQucGF0aE1hdGNoJiYoZS5oYXNDaGlsZHJlbigpfHxyLmxlbmd0aDxuLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgaT17fTtmb3IobGV0IG89MDtv'@; put 'PHIubGVuZ3RoO28rKyl7Y29uc3QgYT1yW29dLGw9bltvXTtpZigiOiI9PT1hWzBdKWlbYS5zdWJzdHJpbmcoMSldPWw7ZWxzZSBpZihhIT09bC5wYXRoKXJldHVybiBudWxsfXJldHVybntjb25zdW1lZDpuLnNsaWNlKDAsci5sZW5ndGgpLHBvc1BhcmFtczppfX1mdW5jdGlvbiBINShuLGUp'@; put 'e2NvbnN0IHQ9bj9ZcmUobik6dm9pZCAwLHI9ZT9ZcmUoZSk6dm9pZCAwO2lmKCF0fHwhcnx8dC5sZW5ndGghPXIubGVuZ3RoKXJldHVybiExO2xldCBpO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKWlmKGk9dFtvXSwhd2JlKG5baV0sZVtpXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rp'@; put 'b24gWXJlKG4pe3JldHVyblsuLi5PYmplY3Qua2V5cyhuKSwuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pXX1mdW5jdGlvbiB3YmUobixlKXtpZihBcnJheS5pc0FycmF5KG4pJiZBcnJheS5pc0FycmF5KGUpKXtpZihuLmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2NvbnN0'@; put 'IHQ9Wy4uLm5dLnNvcnQoKSxyPVsuLi5lXS5zb3J0KCk7cmV0dXJuIHQuZXZlcnkoKGksbyk9PnJbb109PT1pKX1yZXR1cm4gbj09PWV9ZnVuY3Rpb24gQ2JlKG4pe3JldHVybiBuLmxlbmd0aD4wP25bbi5sZW5ndGgtMV06bnVsbH1mdW5jdGlvbiBKOChuKXtyZXR1cm4geEkobik/bjpaUihu'@; put 'KT9aMShQcm9taXNlLnJlc29sdmUobikpOlBhKG4pfWNvbnN0ICRjdD17ZXhhY3Q6ZnVuY3Rpb24gTWJlKG4sZSx0KXtpZighd2Iobi5zZWdtZW50cyxlLnNlZ21lbnRzKXx8IU5VKG4uc2VnbWVudHMsZS5zZWdtZW50cyx0KXx8bi5udW1iZXJPZkNoaWxkcmVuIT09ZS5udW1iZXJPZkNoaWxk'@; put 'cmVuKXJldHVybiExO2Zvcihjb25zdCByIGluIGUuY2hpbGRyZW4paWYoIW4uY2hpbGRyZW5bcl18fCFNYmUobi5jaGlsZHJlbltyXSxlLmNoaWxkcmVuW3JdLHQpKXJldHVybiExO3JldHVybiEwfSxzdWJzZXQ6VGJlfSxTYmU9e2V4YWN0OmZ1bmN0aW9uIHFjdChuLGUpe3JldHVybiBINShu'@; put 'LGUpfSxzdWJzZXQ6ZnVuY3Rpb24gS2N0KG4sZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aDw9T2JqZWN0LmtleXMobikubGVuZ3RoJiZPYmplY3Qua2V5cyhlKS5ldmVyeSh0PT53YmUoblt0XSxlW3RdKSl9LGlnbm9yZWQ6KCk9PiEwfTtmdW5jdGlvbiBFYmUobixlLHQpe3JldHVy'@; put 'biAkY3RbdC5wYXRoc10obi5yb290LGUucm9vdCx0Lm1hdHJpeFBhcmFtcykmJlNiZVt0LnF1ZXJ5UGFyYW1zXShuLnF1ZXJ5UGFyYW1zLGUucXVlcnlQYXJhbXMpJiYhKCJleGFjdCI9PT10LmZyYWdtZW50JiZuLmZyYWdtZW50IT09ZS5mcmFnbWVudCl9ZnVuY3Rpb24gVGJlKG4sZSx0KXty'@; put 'ZXR1cm4geGJlKG4sZSxlLnNlZ21lbnRzLHQpfWZ1bmN0aW9uIHhiZShuLGUsdCxyKXtpZihuLnNlZ21lbnRzLmxlbmd0aD50Lmxlbmd0aCl7Y29uc3QgaT1uLnNlZ21lbnRzLnNsaWNlKDAsdC5sZW5ndGgpO3JldHVybiEoIXdiKGksdCl8fGUuaGFzQ2hpbGRyZW4oKXx8IU5VKGksdCxyKSl9'@; put 'aWYobi5zZWdtZW50cy5sZW5ndGg9PT10Lmxlbmd0aCl7aWYoIXdiKG4uc2VnbWVudHMsdCl8fCFOVShuLnNlZ21lbnRzLHQscikpcmV0dXJuITE7Zm9yKGNvbnN0IGkgaW4gZS5jaGlsZHJlbilpZighbi5jaGlsZHJlbltpXXx8IVRiZShuLmNoaWxkcmVuW2ldLGUuY2hpbGRyZW5baV0scikp'@; put 'cmV0dXJuITE7cmV0dXJuITB9e2NvbnN0IGk9dC5zbGljZSgwLG4uc2VnbWVudHMubGVuZ3RoKSxvPXQuc2xpY2Uobi5zZWdtZW50cy5sZW5ndGgpO3JldHVybiEhKHdiKG4uc2VnbWVudHMsaSkmJk5VKG4uc2VnbWVudHMsaSxyKSYmbi5jaGlsZHJlbltac10pJiZ4YmUobi5jaGlsZHJlblta'@; put 'c10sZSxvLHIpfX1mdW5jdGlvbiBOVShuLGUsdCl7cmV0dXJuIGUuZXZlcnkoKHIsaSk9PlNiZVt0XShuW2ldLnBhcmFtZXRlcnMsci5wYXJhbWV0ZXJzKSl9Y2xhc3MgYmJ7cm9vdDtxdWVyeVBhcmFtcztmcmFnbWVudDtfcXVlcnlQYXJhbU1hcDtjb25zdHJ1Y3RvcihlPW5ldyB3dShbXSx7'@; put 'fSksdD17fSxyPW51bGwpe3RoaXMucm9vdD1lLHRoaXMucXVlcnlQYXJhbXM9dCx0aGlzLmZyYWdtZW50PXJ9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcD8/PUZFKHRoaXMucXVlcnlQYXJhbXMpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXty'@; put 'ZXR1cm4gSmN0LnNlcmlhbGl6ZSh0aGlzKX19Y2xhc3Mgd3V7c2VnbWVudHM7Y2hpbGRyZW47cGFyZW50PW51bGw7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnNlZ21lbnRzPWUsdGhpcy5jaGlsZHJlbj10LE9iamVjdC52YWx1ZXModCkuZm9yRWFjaChyPT5yLnBhcmVudD10aGlzKX1oYXNDaGls'@; put 'ZHJlbigpe3JldHVybiB0aGlzLm51bWJlck9mQ2hpbGRyZW4+MH1nZXQgbnVtYmVyT2ZDaGlsZHJlbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmNoaWxkcmVuKS5sZW5ndGh9dG9TdHJpbmcoKXtyZXR1cm4gUFUodGhpcyl9fWNsYXNzIE9Je3BhdGg7cGFyYW1ldGVycztfcGFyYW1ldGVy'@; put 'TWFwO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYXRoPWUsdGhpcy5wYXJhbWV0ZXJzPXR9Z2V0IHBhcmFtZXRlck1hcCgpe3JldHVybiB0aGlzLl9wYXJhbWV0ZXJNYXA/Pz1GRSh0aGlzLnBhcmFtZXRlcnMpLHRoaXMuX3BhcmFtZXRlck1hcH10b1N0cmluZygpe3JldHVybiBSYmUodGhpcyl9'@; put 'fWZ1bmN0aW9uIHdiKG4sZSl7cmV0dXJuIG4ubGVuZ3RoPT09ZS5sZW5ndGgmJm4uZXZlcnkoKHQscik9PnQucGF0aD09PWVbcl0ucGF0aCl9bGV0IE5JPSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJv'@; put 'dj1Kbih7dG9rZW46bixmYWN0b3J5OigpPT5uZXcgRlUscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCk7Y2xhc3MgRlV7cGFyc2UoZSl7Y29uc3QgdD1uZXcgdXV0KGUpO3JldHVybiBuZXcgYmIodC5wYXJzZVJvb3RTZWdtZW50KCksdC5wYXJzZVF1ZXJ5UGFyYW1zKCksdC5wYXJz'@; put 'ZUZyYWdtZW50KCkpfXNlcmlhbGl6ZShlKXtjb25zdCB0PWAvJHtGSShlLnJvb3QsITApfWAscj1mdW5jdGlvbiBudXQobil7Y29uc3QgZT1PYmplY3QuZW50cmllcyhuKS5tYXAoKFt0LHJdKT0+QXJyYXkuaXNBcnJheShyKT9yLm1hcChpPT5gJHtIVSh0KX09JHtIVShpKX1gKS5qb2luKCIm'@; put 'Iik6YCR7SFUodCl9PSR7SFUocil9YCkuZmlsdGVyKHQ9PnQpO3JldHVybiBlLmxlbmd0aD9gPyR7ZS5qb2luKCImIil9YDoiIn0oZS5xdWVyeVBhcmFtcyksaT0ic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQ/YCMke2Z1bmN0aW9uIGV1dChuKXtyZXR1cm4gZW5jb2RlVVJJKG4pfShlLmZy'@; put 'YWdtZW50KX1gOiIiO3JldHVybmAke3R9JHtyfSR7aX1gfX1jb25zdCBKY3Q9bmV3IEZVO2Z1bmN0aW9uIFBVKG4pe3JldHVybiBuLnNlZ21lbnRzLm1hcChlPT5SYmUoZSkpLmpvaW4oIi8iKX1mdW5jdGlvbiBGSShuLGUpe2lmKCFuLmhhc0NoaWxkcmVuKCkpcmV0dXJuIFBVKG4pO2lmKGUp'@; put 'e2NvbnN0IHQ9bi5jaGlsZHJlbltac10/Rkkobi5jaGlsZHJlbltac10sITEpOiIiLHI9W107cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4uY2hpbGRyZW4pLmZvckVhY2goKFtpLG9dKT0+e2khPT1acyYmci5wdXNoKGAke2l9OiR7RkkobywhMSl9YCl9KSxyLmxlbmd0aD4wP2Ake3R9KCR7ci5q'@; put 'b2luKCIvLyIpfSlgOnR9e2NvbnN0IHQ9ZnVuY3Rpb24gUWN0KG4sZSl7bGV0IHQ9W107cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4uY2hpbGRyZW4pLmZvckVhY2goKFtyLGldKT0+e3I9PT1acyYmKHQ9dC5jb25jYXQoZShpLHIpKSl9KSxPYmplY3QuZW50cmllcyhuLmNoaWxkcmVuKS5mb3JF'@; put 'YWNoKChbcixpXSk9PntyIT09WnMmJih0PXQuY29uY2F0KGUoaSxyKSkpfSksdH0obiwocixpKT0+aT09PVpzP1tGSShuLmNoaWxkcmVuW1pzXSwhMSldOltgJHtpfToke0ZJKHIsITEpfWBdKTtyZXR1cm4gMT09PU9iamVjdC5rZXlzKG4uY2hpbGRyZW4pLmxlbmd0aCYmbnVsbCE9bi5jaGls'@; put 'ZHJlbltac10/YCR7UFUobil9LyR7dFswXX1gOmAke1BVKG4pfS8oJHt0LmpvaW4oIi8vIil9KWB9fWZ1bmN0aW9uIEFiZShuKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KG4pLnJlcGxhY2UoLyU0MC9nLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5y'@; put 'ZXBsYWNlKC8lMkMvZ2ksIiwiKX1mdW5jdGlvbiBIVShuKXtyZXR1cm4gQWJlKG4pLnJlcGxhY2UoLyUzQi9naSwiOyIpfWZ1bmN0aW9uIFpyZShuKXtyZXR1cm4gQWJlKG4pLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpLnJlcGxhY2UoLyUyNi9naSwiJiIpfWZ1'@; put 'bmN0aW9uIFZVKG4pe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQobil9ZnVuY3Rpb24ga2JlKG4pe3JldHVybiBWVShuLnJlcGxhY2UoL1wrL2csIiUyMCIpKX1mdW5jdGlvbiBSYmUobil7cmV0dXJuYCR7WnJlKG4ucGF0aCl9JHtmdW5jdGlvbiB0dXQobil7cmV0dXJuIE9iamVjdC5lbnRy'@; put 'aWVzKG4pLm1hcCgoW2UsdF0pPT5gOyR7WnJlKGUpfT0ke1pyZSh0KX1gKS5qb2luKCIiKX0obi5wYXJhbWV0ZXJzKX1gfWNvbnN0IHJ1dD0vXlteXC8oKT87I10rLztmdW5jdGlvbiBHcmUobil7Y29uc3QgZT1uLm1hdGNoKHJ1dCk7cmV0dXJuIGU/ZVswXToiIn1jb25zdCBpdXQ9L15bXlwv'@; put 'KCk/Oz0jXSsvLGF1dD0vXltePT8mI10rLyxsdXQ9L15bXiYjXSsvO2NsYXNzIHV1dHt1cmw7cmVtYWluaW5nO2NvbnN0cnVjdG9yKGUpe3RoaXMudXJsPWUsdGhpcy5yZW1haW5pbmc9ZX1wYXJzZVJvb3RTZWdtZW50KCl7cmV0dXJuIHRoaXMuY29uc3VtZU9wdGlvbmFsKCIvIiksIiI9PT10'@; put 'aGlzLnJlbWFpbmluZ3x8dGhpcy5wZWVrU3RhcnRzV2l0aCgiPyIpfHx0aGlzLnBlZWtTdGFydHNXaXRoKCIjIik/bmV3IHd1KFtdLHt9KTpuZXcgd3UoW10sdGhpcy5wYXJzZUNoaWxkcmVuKCkpfXBhcnNlUXVlcnlQYXJhbXMoKXtjb25zdCBlPXt9O2lmKHRoaXMuY29uc3VtZU9wdGlvbmFs'@; put 'KCI/IikpZG97dGhpcy5wYXJzZVF1ZXJ5UGFyYW0oZSl9d2hpbGUodGhpcy5jb25zdW1lT3B0aW9uYWwoIiYiKSk7cmV0dXJuIGV9cGFyc2VGcmFnbWVudCgpe3JldHVybiB0aGlzLmNvbnN1bWVPcHRpb25hbCgiIyIpP2RlY29kZVVSSUNvbXBvbmVudCh0aGlzLnJlbWFpbmluZyk6bnVsbH1w'@; put 'YXJzZUNoaWxkcmVuKCl7aWYoIiI9PT10aGlzLnJlbWFpbmluZylyZXR1cm57fTt0aGlzLmNvbnN1bWVPcHRpb25hbCgiLyIpO2NvbnN0IGU9W107Zm9yKHRoaXMucGVla1N0YXJ0c1dpdGgoIigiKXx8ZS5wdXNoKHRoaXMucGFyc2VTZWdtZW50KCkpO3RoaXMucGVla1N0YXJ0c1dpdGgoIi8i'@; put 'KSYmIXRoaXMucGVla1N0YXJ0c1dpdGgoIi8vIikmJiF0aGlzLnBlZWtTdGFydHNXaXRoKCIvKCIpOyl0aGlzLmNhcHR1cmUoIi8iKSxlLnB1c2godGhpcy5wYXJzZVNlZ21lbnQoKSk7bGV0IHQ9e307dGhpcy5wZWVrU3RhcnRzV2l0aCgiLygiKSYmKHRoaXMuY2FwdHVyZSgiLyIpLHQ9dGhp'@; put 'cy5wYXJzZVBhcmVucyghMCkpO2xldCByPXt9O3JldHVybiB0aGlzLnBlZWtTdGFydHNXaXRoKCIoIikmJihyPXRoaXMucGFyc2VQYXJlbnMoITEpKSwoZS5sZW5ndGg+MHx8T2JqZWN0LmtleXModCkubGVuZ3RoPjApJiYocltac109bmV3IHd1KGUsdCkpLHJ9cGFyc2VTZWdtZW50KCl7Y29u'@; put 'c3QgZT1HcmUodGhpcy5yZW1haW5pbmcpO2lmKCIiPT09ZSYmdGhpcy5wZWVrU3RhcnRzV2l0aCgiOyIpKXRocm93IG5ldyBXbig0MDA5LCExKTtyZXR1cm4gdGhpcy5jYXB0dXJlKGUpLG5ldyBPSShWVShlKSx0aGlzLnBhcnNlTWF0cml4UGFyYW1zKCkpfXBhcnNlTWF0cml4UGFyYW1zKCl7'@; put 'Y29uc3QgZT17fTtmb3IoO3RoaXMuY29uc3VtZU9wdGlvbmFsKCI7Iik7KXRoaXMucGFyc2VQYXJhbShlKTtyZXR1cm4gZX1wYXJzZVBhcmFtKGUpe2NvbnN0IHQ9ZnVuY3Rpb24gb3V0KG4pe2NvbnN0IGU9bi5tYXRjaChpdXQpO3JldHVybiBlP2VbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtp'@; put 'ZighdClyZXR1cm47dGhpcy5jYXB0dXJlKHQpO2xldCByPSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe2NvbnN0IGk9R3JlKHRoaXMucmVtYWluaW5nKTtpJiYocj1pLHRoaXMuY2FwdHVyZShyKSl9ZVtWVSh0KV09VlUocil9cGFyc2VRdWVyeVBhcmFtKGUpe2NvbnN0IHQ9ZnVu'@; put 'Y3Rpb24gc3V0KG4pe2NvbnN0IGU9bi5tYXRjaChhdXQpO3JldHVybiBlP2VbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtpZighdClyZXR1cm47dGhpcy5jYXB0dXJlKHQpO2xldCByPSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe2NvbnN0IGE9ZnVuY3Rpb24gY3V0KG4pe2NvbnN0'@; put 'IGU9bi5tYXRjaChsdXQpO3JldHVybiBlP2VbMF06IiJ9KHRoaXMucmVtYWluaW5nKTthJiYocj1hLHRoaXMuY2FwdHVyZShyKSl9Y29uc3QgaT1rYmUodCksbz1rYmUocik7aWYoZS5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IGE9ZVtpXTtBcnJheS5pc0FycmF5KGEpfHwoYT1bYV0sZVtpXT1h'@; put 'KSxhLnB1c2gobyl9ZWxzZSBlW2ldPW99cGFyc2VQYXJlbnMoZSl7Y29uc3QgdD17fTtmb3IodGhpcy5jYXB0dXJlKCIoIik7IXRoaXMuY29uc3VtZU9wdGlvbmFsKCIpIikmJnRoaXMucmVtYWluaW5nLmxlbmd0aD4wOyl7Y29uc3Qgcj1HcmUodGhpcy5yZW1haW5pbmcpLGk9dGhpcy5yZW1h'@; put 'aW5pbmdbci5sZW5ndGhdO2lmKCIvIiE9PWkmJiIpIiE9PWkmJiI7IiE9PWkpdGhyb3cgbmV3IFduKDQwMTAsITEpO2xldCBvO3IuaW5kZXhPZigiOiIpPi0xPyhvPXIuc2xpY2UoMCxyLmluZGV4T2YoIjoiKSksdGhpcy5jYXB0dXJlKG8pLHRoaXMuY2FwdHVyZSgiOiIpKTplJiYobz1acyk7'@; put 'Y29uc3QgYT10aGlzLnBhcnNlQ2hpbGRyZW4oKTt0W28/P1pzXT0xPT09T2JqZWN0LmtleXMoYSkubGVuZ3RoJiZhW1pzXT9hW1pzXTpuZXcgd3UoW10sYSksdGhpcy5jb25zdW1lT3B0aW9uYWwoIi8vIil9cmV0dXJuIHR9cGVla1N0YXJ0c1dpdGgoZSl7cmV0dXJuIHRoaXMucmVtYWluaW5n'@; put 'LnN0YXJ0c1dpdGgoZSl9Y29uc3VtZU9wdGlvbmFsKGUpe3JldHVybiEhdGhpcy5wZWVrU3RhcnRzV2l0aChlKSYmKHRoaXMucmVtYWluaW5nPXRoaXMucmVtYWluaW5nLnN1YnN0cmluZyhlLmxlbmd0aCksITApfWNhcHR1cmUoZSl7aWYoIXRoaXMuY29uc3VtZU9wdGlvbmFsKGUpKXRocm93'@; put 'IG5ldyBXbig0MDExLCExKX19ZnVuY3Rpb24gSWJlKG4pe3JldHVybiBuLnNlZ21lbnRzLmxlbmd0aD4wP25ldyB3dShbXSx7W1pzXTpufSk6bn1mdW5jdGlvbiBEYmUobil7Y29uc3QgZT17fTtmb3IoY29uc3RbcixpXW9mIE9iamVjdC5lbnRyaWVzKG4uY2hpbGRyZW4pKXtjb25zdCBvPURi'@; put 'ZShpKTtpZihyPT09WnMmJjA9PT1vLnNlZ21lbnRzLmxlbmd0aCYmby5oYXNDaGlsZHJlbigpKWZvcihjb25zdFthLGxdb2YgT2JqZWN0LmVudHJpZXMoby5jaGlsZHJlbikpZVthXT1sO2Vsc2Uoby5zZWdtZW50cy5sZW5ndGg+MHx8by5oYXNDaGlsZHJlbigpKSYmKGVbcl09byl9cmV0dXJu'@; put 'IGZ1bmN0aW9uIGR1dChuKXtpZigxPT09bi5udW1iZXJPZkNoaWxkcmVuJiZuLmNoaWxkcmVuW1pzXSl7Y29uc3QgZT1uLmNoaWxkcmVuW1pzXTtyZXR1cm4gbmV3IHd1KG4uc2VnbWVudHMuY29uY2F0KGUuc2VnbWVudHMpLGUuY2hpbGRyZW4pfXJldHVybiBufShuZXcgd3Uobi5zZWdtZW50'@; put 'cyxlKSl9ZnVuY3Rpb24gQ2Iobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBiYn1mdW5jdGlvbiBMYmUobil7bGV0IGU7Y29uc3QgaT1JYmUoZnVuY3Rpb24gdChvKXtjb25zdCBhPXt9O2Zvcihjb25zdCB1IG9mIG8uY2hpbGRyZW4pe2NvbnN0IGc9dCh1KTthW3Uub3V0bGV0XT1nfWNvbnN0IGw9'@; put 'bmV3IHd1KG8udXJsLGEpO3JldHVybiBvPT09biYmKGU9bCksbH0obi5yb290KSk7cmV0dXJuIGU/P2l9ZnVuY3Rpb24gT2JlKG4sZSx0LHIpe2xldCBpPW47Zm9yKDtpLnBhcmVudDspaT1pLnBhcmVudDtpZigwPT09ZS5sZW5ndGgpcmV0dXJuICRyZShpLGksaSx0LHIpO2NvbnN0IG89ZnVu'@; put 'Y3Rpb24gZnV0KG4pe2lmKCJzdHJpbmciPT10eXBlb2YgblswXSYmMT09PW4ubGVuZ3RoJiYiLyI9PT1uWzBdKXJldHVybiBuZXcgRmJlKCEwLDAsbik7bGV0IGU9MCx0PSExO2NvbnN0IHI9bi5yZWR1Y2UoKGksbyxhKT0+e2lmKCJvYmplY3QiPT10eXBlb2YgbyYmbnVsbCE9byl7aWYoby5v'@; put 'dXRsZXRzKXtjb25zdCBsPXt9O3JldHVybiBPYmplY3QuZW50cmllcyhvLm91dGxldHMpLmZvckVhY2goKFt1LGddKT0+e2xbdV09InN0cmluZyI9PXR5cGVvZiBnP2cuc3BsaXQoIi8iKTpnfSksWy4uLmkse291dGxldHM6bH1dfWlmKG8uc2VnbWVudFBhdGgpcmV0dXJuWy4uLmksby5zZWdt'@; put 'ZW50UGF0aF19cmV0dXJuInN0cmluZyIhPXR5cGVvZiBvP1suLi5pLG9dOjA9PT1hPyhvLnNwbGl0KCIvIikuZm9yRWFjaCgobCx1KT0+ezA9PXUmJiIuIj09PWx8fCgwPT11JiYiIj09PWw/dD0hMDoiLi4iPT09bD9lKys6IiIhPWwmJmkucHVzaChsKSl9KSxpKTpbLi4uaSxvXX0sW10pO3Jl'@; put 'dHVybiBuZXcgRmJlKHQsZSxyKX0oZSk7aWYoby50b1Jvb3QoKSlyZXR1cm4gJHJlKGksaSxuZXcgd3UoW10se30pLHQscik7Y29uc3QgYT1mdW5jdGlvbiBwdXQobixlLHQpe2lmKG4uaXNBYnNvbHV0ZSlyZXR1cm4gbmV3IGpVKGUsITAsMCk7aWYoIXQpcmV0dXJuIG5ldyBqVShlLCExLE5h'@; put 'Tik7aWYobnVsbD09PXQucGFyZW50KXJldHVybiBuZXcgalUodCwhMCwwKTtjb25zdCByPUJVKG4uY29tbWFuZHNbMF0pPzA6MTtyZXR1cm4gZnVuY3Rpb24gZ3V0KG4sZSx0KXtsZXQgcj1uLGk9ZSxvPXQ7Zm9yKDtvPmk7KXtpZihvLT1pLHI9ci5wYXJlbnQsIXIpdGhyb3cgbmV3IFduKDQw'@; put 'MDUsITEpO2k9ci5zZWdtZW50cy5sZW5ndGh9cmV0dXJuIG5ldyBqVShyLCExLGktbyl9KHQsdC5zZWdtZW50cy5sZW5ndGgtMStyLG4ubnVtYmVyT2ZEb3VibGVEb3RzKX0obyxpLG4pLGw9YS5wcm9jZXNzQ2hpbGRyZW4/SEkoYS5zZWdtZW50R3JvdXAsYS5pbmRleCxvLmNvbW1hbmRzKTpQ'@; put 'YmUoYS5zZWdtZW50R3JvdXAsYS5pbmRleCxvLmNvbW1hbmRzKTtyZXR1cm4gJHJlKGksYS5zZWdtZW50R3JvdXAsbCx0LHIpfWZ1bmN0aW9uIEJVKG4pe3JldHVybiJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9biYmIW4ub3V0bGV0cyYmIW4uc2VnbWVudFBhdGh9ZnVuY3Rpb24gUEkobil7'@; put 'cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT1uJiZuLm91dGxldHN9ZnVuY3Rpb24gJHJlKG4sZSx0LHIsaSl7bGV0IGEsbz17fTtyJiZPYmplY3QuZW50cmllcyhyKS5mb3JFYWNoKChbdSxnXSk9PntvW3VdPUFycmF5LmlzQXJyYXkoZyk/Zy5tYXAoRT0+YCR7RX1gKTpgJHtnfWB9'@; put 'KSxhPW49PT1lP3Q6TmJlKG4sZSx0KTtjb25zdCBsPUliZShEYmUoYSkpO3JldHVybiBuZXcgYmIobCxvLGkpfWZ1bmN0aW9uIE5iZShuLGUsdCl7Y29uc3Qgcj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobi5jaGlsZHJlbikuZm9yRWFjaCgoW2ksb10pPT57cltpXT1vPT09ZT90Ok5iZShv'@; put 'LGUsdCl9KSxuZXcgd3Uobi5zZWdtZW50cyxyKX1jbGFzcyBGYmV7aXNBYnNvbHV0ZTtudW1iZXJPZkRvdWJsZURvdHM7Y29tbWFuZHM7Y29uc3RydWN0b3IoZSx0LHIpe2lmKHRoaXMuaXNBYnNvbHV0ZT1lLHRoaXMubnVtYmVyT2ZEb3VibGVEb3RzPXQsdGhpcy5jb21tYW5kcz1yLGUmJnIu'@; put 'bGVuZ3RoPjAmJkJVKHJbMF0pKXRocm93IG5ldyBXbig0MDAzLCExKTtjb25zdCBpPXIuZmluZChQSSk7aWYoaSYmaSE9PUNiZShyKSl0aHJvdyBuZXcgV24oNDAwNCwhMSl9dG9Sb290KCl7cmV0dXJuIHRoaXMuaXNBYnNvbHV0ZSYmMT09PXRoaXMuY29tbWFuZHMubGVuZ3RoJiYiLyI9PXRo'@; put 'aXMuY29tbWFuZHNbMF19fWNsYXNzIGpVe3NlZ21lbnRHcm91cDtwcm9jZXNzQ2hpbGRyZW47aW5kZXg7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuc2VnbWVudEdyb3VwPWUsdGhpcy5wcm9jZXNzQ2hpbGRyZW49dCx0aGlzLmluZGV4PXJ9fWZ1bmN0aW9uIFBiZShuLGUsdCl7aWYobj8/PW5l'@; put 'dyB3dShbXSx7fSksMD09PW4uc2VnbWVudHMubGVuZ3RoJiZuLmhhc0NoaWxkcmVuKCkpcmV0dXJuIEhJKG4sZSx0KTtjb25zdCByPWZ1bmN0aW9uIHZ1dChuLGUsdCl7bGV0IHI9MCxpPWU7Y29uc3Qgbz17bWF0Y2g6ITEscGF0aEluZGV4OjAsY29tbWFuZEluZGV4OjB9O2Zvcig7aTxuLnNl'@; put 'Z21lbnRzLmxlbmd0aDspe2lmKHI+PXQubGVuZ3RoKXJldHVybiBvO2NvbnN0IGE9bi5zZWdtZW50c1tpXSxsPXRbcl07aWYoUEkobCkpYnJlYWs7Y29uc3QgdT1gJHtsfWAsZz1yPHQubGVuZ3RoLTE/dFtyKzFdOm51bGw7aWYoaT4wJiZ2b2lkIDA9PT11KWJyZWFrO2lmKHUmJmcmJiJvYmpl'@; put 'Y3QiPT10eXBlb2YgZyYmdm9pZCAwPT09Zy5vdXRsZXRzKXtpZighVmJlKHUsZyxhKSlyZXR1cm4gbztyKz0yfWVsc2V7aWYoIVZiZSh1LHt9LGEpKXJldHVybiBvO3IrK31pKyt9cmV0dXJue21hdGNoOiEwLHBhdGhJbmRleDppLGNvbW1hbmRJbmRleDpyfX0obixlLHQpLGk9dC5zbGljZShy'@; put 'LmNvbW1hbmRJbmRleCk7aWYoci5tYXRjaCYmci5wYXRoSW5kZXg8bi5zZWdtZW50cy5sZW5ndGgpe2NvbnN0IG89bmV3IHd1KG4uc2VnbWVudHMuc2xpY2UoMCxyLnBhdGhJbmRleCkse30pO3JldHVybiBvLmNoaWxkcmVuW1pzXT1uZXcgd3Uobi5zZWdtZW50cy5zbGljZShyLnBhdGhJbmRl'@; put 'eCksbi5jaGlsZHJlbiksSEkobywwLGkpfXJldHVybiByLm1hdGNoJiYwPT09aS5sZW5ndGg/bmV3IHd1KG4uc2VnbWVudHMse30pOnIubWF0Y2gmJiFuLmhhc0NoaWxkcmVuKCk/cXJlKG4sZSx0KTpyLm1hdGNoP0hJKG4sMCxpKTpxcmUobixlLHQpfWZ1bmN0aW9uIEhJKG4sZSx0KXtpZigw'@; put 'PT09dC5sZW5ndGgpcmV0dXJuIG5ldyB3dShuLnNlZ21lbnRzLHt9KTt7Y29uc3Qgcj1mdW5jdGlvbiBtdXQobil7cmV0dXJuIFBJKG5bMF0pP25bMF0ub3V0bGV0czp7W1pzXTpufX0odCksaT17fTtpZihPYmplY3Qua2V5cyhyKS5zb21lKG89Pm8hPT1acykmJm4uY2hpbGRyZW5bWnNdJiYx'@; put 'PT09bi5udW1iZXJPZkNoaWxkcmVuJiYwPT09bi5jaGlsZHJlbltac10uc2VnbWVudHMubGVuZ3RoKXtjb25zdCBvPUhJKG4uY2hpbGRyZW5bWnNdLGUsdCk7cmV0dXJuIG5ldyB3dShuLnNlZ21lbnRzLG8uY2hpbGRyZW4pfXJldHVybiBPYmplY3QuZW50cmllcyhyKS5mb3JFYWNoKChbbyxh'@; put 'XSk9Pnsic3RyaW5nIj09dHlwZW9mIGEmJihhPVthXSksbnVsbCE9PWEmJihpW29dPVBiZShuLmNoaWxkcmVuW29dLGUsYSkpfSksT2JqZWN0LmVudHJpZXMobi5jaGlsZHJlbikuZm9yRWFjaCgoW28sYV0pPT57dm9pZCAwPT09cltvXSYmKGlbb109YSl9KSxuZXcgd3Uobi5zZWdtZW50cyxp'@; put 'KX19ZnVuY3Rpb24gcXJlKG4sZSx0KXtjb25zdCByPW4uc2VnbWVudHMuc2xpY2UoMCxlKTtsZXQgaT0wO2Zvcig7aTx0Lmxlbmd0aDspe2NvbnN0IG89dFtpXTtpZihQSShvKSl7Y29uc3QgdT1fdXQoby5vdXRsZXRzKTtyZXR1cm4gbmV3IHd1KHIsdSl9aWYoMD09PWkmJkJVKHRbMF0pKXty'@; put 'LnB1c2gobmV3IE9JKG4uc2VnbWVudHNbZV0ucGF0aCxIYmUodFswXSkpKSxpKys7Y29udGludWV9Y29uc3QgYT1QSShvKT9vLm91dGxldHNbWnNdOmAke299YCxsPWk8dC5sZW5ndGgtMT90W2krMV06bnVsbDthJiZsJiZCVShsKT8oci5wdXNoKG5ldyBPSShhLEhiZShsKSkpLGkrPTIpOihy'@; put 'LnB1c2gobmV3IE9JKGEse30pKSxpKyspfXJldHVybiBuZXcgd3Uocix7fSl9ZnVuY3Rpb24gX3V0KG4pe2NvbnN0IGU9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKFt0LHJdKT0+eyJzdHJpbmciPT10eXBlb2YgciYmKHI9W3JdKSxudWxsIT09ciYmKGVbdF09cXJlKG5l'@; put 'dyB3dShbXSx7fSksMCxyKSl9KSxlfWZ1bmN0aW9uIEhiZShuKXtjb25zdCBlPXt9O3JldHVybiBPYmplY3QuZW50cmllcyhuKS5mb3JFYWNoKChbdCxyXSk9PmVbdF09YCR7cn1gKSxlfWZ1bmN0aW9uIFZiZShuLGUsdCl7cmV0dXJuIG49PXQucGF0aCYmSDUoZSx0LnBhcmFtZXRlcnMpfWNv'@; put 'bnN0IFZJPSJpbXBlcmF0aXZlIjt2YXIgS2w9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5OYXZpZ2F0aW9uU3RhcnQ9MF09Ik5hdmlnYXRpb25TdGFydCIsbltuLk5hdmlnYXRpb25FbmQ9MV09Ik5hdmlnYXRpb25FbmQiLG5bbi5OYXZpZ2F0aW9uQ2FuY2VsPTJdPSJOYXZpZ2F0aW9uQ2FuY2Vs'@; put 'IixuW24uTmF2aWdhdGlvbkVycm9yPTNdPSJOYXZpZ2F0aW9uRXJyb3IiLG5bbi5Sb3V0ZXNSZWNvZ25pemVkPTRdPSJSb3V0ZXNSZWNvZ25pemVkIixuW24uUmVzb2x2ZVN0YXJ0PTVdPSJSZXNvbHZlU3RhcnQiLG5bbi5SZXNvbHZlRW5kPTZdPSJSZXNvbHZlRW5kIixuW24uR3VhcmRzQ2hl'@; put 'Y2tTdGFydD03XT0iR3VhcmRzQ2hlY2tTdGFydCIsbltuLkd1YXJkc0NoZWNrRW5kPThdPSJHdWFyZHNDaGVja0VuZCIsbltuLlJvdXRlQ29uZmlnTG9hZFN0YXJ0PTldPSJSb3V0ZUNvbmZpZ0xvYWRTdGFydCIsbltuLlJvdXRlQ29uZmlnTG9hZEVuZD0xMF09IlJvdXRlQ29uZmlnTG9hZEVu'@; put 'ZCIsbltuLkNoaWxkQWN0aXZhdGlvblN0YXJ0PTExXT0iQ2hpbGRBY3RpdmF0aW9uU3RhcnQiLG5bbi5DaGlsZEFjdGl2YXRpb25FbmQ9MTJdPSJDaGlsZEFjdGl2YXRpb25FbmQiLG5bbi5BY3RpdmF0aW9uU3RhcnQ9MTNdPSJBY3RpdmF0aW9uU3RhcnQiLG5bbi5BY3RpdmF0aW9uRW5kPTE0'@; put 'XT0iQWN0aXZhdGlvbkVuZCIsbltuLlNjcm9sbD0xNV09IlNjcm9sbCIsbltuLk5hdmlnYXRpb25Ta2lwcGVkPTE2XT0iTmF2aWdhdGlvblNraXBwZWQiLG59KEtsfHx7fSk7Y2xhc3MgVjV7aWQ7dXJsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pZD1lLHRoaXMudXJsPXR9fWNsYXNzIFVVIGV4'@; put 'dGVuZHMgVjV7dHlwZT1LbC5OYXZpZ2F0aW9uU3RhcnQ7bmF2aWdhdGlvblRyaWdnZXI7cmVzdG9yZWRTdGF0ZTtjb25zdHJ1Y3RvcihlLHQscj0iaW1wZXJhdGl2ZSIsaT1udWxsKXtzdXBlcihlLHQpLHRoaXMubmF2aWdhdGlvblRyaWdnZXI9cix0aGlzLnJlc3RvcmVkU3RhdGU9aX10b1N0'@; put 'cmluZygpe3JldHVybmBOYXZpZ2F0aW9uU3RhcnQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JylgfX1jbGFzcyBCNSBleHRlbmRzIFY1e3VybEFmdGVyUmVkaXJlY3RzO3R5cGU9S2wuTmF2aWdhdGlvbkVuZDtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoZSx0KSx0aGlzLnVy'@; put 'bEFmdGVyUmVkaXJlY3RzPXJ9dG9TdHJpbmcoKXtyZXR1cm5gTmF2aWdhdGlvbkVuZChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51cmxBZnRlclJlZGlyZWN0c30nKWB9fXZhciBUMz1mdW5jdGlvbihuKXtyZXR1cm4gbltu'@; put 'LlJlZGlyZWN0PTBdPSJSZWRpcmVjdCIsbltuLlN1cGVyc2VkZWRCeU5ld05hdmlnYXRpb249MV09IlN1cGVyc2VkZWRCeU5ld05hdmlnYXRpb24iLG5bbi5Ob0RhdGFGcm9tUmVzb2x2ZXI9Ml09Ik5vRGF0YUZyb21SZXNvbHZlciIsbltuLkd1YXJkUmVqZWN0ZWQ9M109Ikd1YXJkUmVqZWN0'@; put 'ZWQiLG5bbi5BYm9ydGVkPTRdPSJBYm9ydGVkIixufShUM3x8e30pLHpVPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uSWdub3JlZFNhbWVVcmxOYXZpZ2F0aW9uPTBdPSJJZ25vcmVkU2FtZVVybE5hdmlnYXRpb24iLG5bbi5JZ25vcmVkQnlVcmxIYW5kbGluZ1N0cmF0ZWd5PTFdPSJJZ25vcmVk'@; put 'QnlVcmxIYW5kbGluZ1N0cmF0ZWd5IixufSh6VXx8e30pO2NsYXNzIFNiIGV4dGVuZHMgVjV7cmVhc29uO2NvZGU7dHlwZT1LbC5OYXZpZ2F0aW9uQ2FuY2VsO2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCksdGhpcy5yZWFzb249cix0aGlzLmNvZGU9aX10b1N0cmluZygpe3JldHVy'@; put 'bmBOYXZpZ2F0aW9uQ2FuY2VsKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScpYH19Y2xhc3MgUEUgZXh0ZW5kcyBWNXtyZWFzb247Y29kZTt0eXBlPUtsLk5hdmlnYXRpb25Ta2lwcGVkO2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCksdGhpcy5yZWFzb249cix0aGlz'@; put 'LmNvZGU9aX19Y2xhc3MgS3JlIGV4dGVuZHMgVjV7ZXJyb3I7dGFyZ2V0O3R5cGU9S2wuTmF2aWdhdGlvbkVycm9yO2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCksdGhpcy5lcnJvcj1yLHRoaXMudGFyZ2V0PWl9dG9TdHJpbmcoKXtyZXR1cm5gTmF2aWdhdGlvbkVycm9yKGlkOiAk'@; put 'e3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIGVycm9yOiAke3RoaXMuZXJyb3J9KWB9fWNsYXNzIEJiZSBleHRlbmRzIFY1e3VybEFmdGVyUmVkaXJlY3RzO3N0YXRlO3R5cGU9S2wuUm91dGVzUmVjb2duaXplZDtjb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcihlLHQpLHRoaXMudXJs'@; put 'QWZ0ZXJSZWRpcmVjdHM9cix0aGlzLnN0YXRlPWl9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVzUmVjb2duaXplZChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51cmxBZnRlclJlZGlyZWN0c30nLCBzdGF0ZTogJHt0aGlzLnN0'@; put 'YXRlfSlgfX1jbGFzcyB5dXQgZXh0ZW5kcyBWNXt1cmxBZnRlclJlZGlyZWN0cztzdGF0ZTt0eXBlPUtsLkd1YXJkc0NoZWNrU3RhcnQ7Y29uc3RydWN0b3IoZSx0LHIsaSl7c3VwZXIoZSx0KSx0aGlzLnVybEFmdGVyUmVkaXJlY3RzPXIsdGhpcy5zdGF0ZT1pfXRvU3RyaW5nKCl7cmV0dXJu'@; put 'YEd1YXJkc0NoZWNrU3RhcnQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgYnV0IGV4dGVuZHMgVjV7dXJsQWZ0ZXJSZWRpcmVjdHM7'@; put 'c3RhdGU7c2hvdWxkQWN0aXZhdGU7dHlwZT1LbC5HdWFyZHNDaGVja0VuZDtjb25zdHJ1Y3RvcihlLHQscixpLG8pe3N1cGVyKGUsdCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz1yLHRoaXMuc3RhdGU9aSx0aGlzLnNob3VsZEFjdGl2YXRlPW99dG9TdHJpbmcoKXtyZXR1cm5gR3VhcmRzQ2hl'@; put 'Y2tFbmQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0sIHNob3VsZEFjdGl2YXRlOiAke3RoaXMuc2hvdWxkQWN0aXZhdGV9KWB9fWNsYXNzIHd1dCBl'@; put 'eHRlbmRzIFY1e3VybEFmdGVyUmVkaXJlY3RzO3N0YXRlO3R5cGU9S2wuUmVzb2x2ZVN0YXJ0O2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz1yLHRoaXMuc3RhdGU9aX10b1N0cmluZygpe3JldHVybmBSZXNvbHZlU3RhcnQoaWQ6ICR7dGhp'@; put 'cy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgQ3V0IGV4dGVuZHMgVjV7dXJsQWZ0ZXJSZWRpcmVjdHM7c3RhdGU7dHlwZT1LbC5SZXNvbHZlRW5kO2Nv'@; put 'bnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz1yLHRoaXMuc3RhdGU9aX10b1N0cmluZygpe3JldHVybmBSZXNvbHZlRW5kKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFm'@; put 'dGVyUmVkaXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3RhdGV9KWB9fWNsYXNzIFN1dHtyb3V0ZTt0eXBlPUtsLlJvdXRlQ29uZmlnTG9hZFN0YXJ0O2NvbnN0cnVjdG9yKGUpe3RoaXMucm91dGU9ZX10b1N0cmluZygpe3JldHVybmBSb3V0ZUNvbmZpZ0xvYWRTdGFydChwYXRoOiAke3RoaXMu'@; put 'cm91dGUucGF0aH0pYH19Y2xhc3MgRXV0e3JvdXRlO3R5cGU9S2wuUm91dGVDb25maWdMb2FkRW5kO2NvbnN0cnVjdG9yKGUpe3RoaXMucm91dGU9ZX10b1N0cmluZygpe3JldHVybmBSb3V0ZUNvbmZpZ0xvYWRFbmQocGF0aDogJHt0aGlzLnJvdXRlLnBhdGh9KWB9fWNsYXNzIE11dHtzbmFw'@; put 'c2hvdDt0eXBlPUtsLkNoaWxkQWN0aXZhdGlvblN0YXJ0O2NvbnN0cnVjdG9yKGUpe3RoaXMuc25hcHNob3Q9ZX10b1N0cmluZygpe3JldHVybmBDaGlsZEFjdGl2YXRpb25TdGFydChwYXRoOiAnJHt0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmln'@; put 'LnBhdGh8fCIifScpYH19Y2xhc3MgVHV0e3NuYXBzaG90O3R5cGU9S2wuQ2hpbGRBY3RpdmF0aW9uRW5kO2NvbnN0cnVjdG9yKGUpe3RoaXMuc25hcHNob3Q9ZX10b1N0cmluZygpe3JldHVybmBDaGlsZEFjdGl2YXRpb25FbmQocGF0aDogJyR7dGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZyYm'@; put 'dGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIn0nKWB9fWNsYXNzIHh1dHtzbmFwc2hvdDt0eXBlPUtsLkFjdGl2YXRpb25TdGFydDtjb25zdHJ1Y3RvcihlKXt0aGlzLnNuYXBzaG90PWV9dG9TdHJpbmcoKXtyZXR1cm5gQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICcke3RoaXMuc25h'@; put 'cHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyBBdXR7c25hcHNob3Q7dHlwZT1LbC5BY3RpdmF0aW9uRW5kO2NvbnN0cnVjdG9yKGUpe3RoaXMuc25hcHNob3Q9ZX10b1N0cmluZygpe3JldHVybmBBY3RpdmF0aW9uRW5kKHBh'@; put 'dGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyBqYmV7cm91dGVyRXZlbnQ7cG9zaXRpb247YW5jaG9yO3R5cGU9S2wuU2Nyb2xsO2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLnJvdXRlckV2ZW50PWUs'@; put 'dGhpcy5wb3NpdGlvbj10LHRoaXMuYW5jaG9yPXJ9dG9TdHJpbmcoKXtyZXR1cm5gU2Nyb2xsKGFuY2hvcjogJyR7dGhpcy5hbmNob3J9JywgcG9zaXRpb246ICcke3RoaXMucG9zaXRpb24/YCR7dGhpcy5wb3NpdGlvblswXX0sICR7dGhpcy5wb3NpdGlvblsxXX1gOm51bGx9JylgfX1jbGFz'@; put 'cyBYcmV7fWNsYXNzIFdVe3VybDtuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy51cmw9ZSx0aGlzLm5hdmlnYXRpb25CZWhhdmlvck9wdGlvbnM9dH19ZnVuY3Rpb24gbDQobil7cmV0dXJuIG4ub3V0bGV0fHxac31mdW5jdGlvbiBIRShuKXtpZighbily'@; put 'ZXR1cm4gbnVsbDtpZihuLnJvdXRlQ29uZmlnPy5faW5qZWN0b3IpcmV0dXJuIG4ucm91dGVDb25maWcuX2luamVjdG9yO2ZvcihsZXQgZT1uLnBhcmVudDtlO2U9ZS5wYXJlbnQpe2NvbnN0IHQ9ZS5yb3V0ZUNvbmZpZztpZih0Py5fbG9hZGVkSW5qZWN0b3IpcmV0dXJuIHQuX2xvYWRlZElu'@; put 'amVjdG9yO2lmKHQ/Ll9pbmplY3RvcilyZXR1cm4gdC5faW5qZWN0b3J9cmV0dXJuIG51bGx9Y2xhc3MgTnV0e3Jvb3RJbmplY3RvcjtvdXRsZXQ9bnVsbDtyb3V0ZT1udWxsO2NoaWxkcmVuO2F0dGFjaFJlZj1udWxsO2dldCBpbmplY3Rvcigpe3JldHVybiBIRSh0aGlzLnJvdXRlPy5zbmFw'@; put 'c2hvdCk/P3RoaXMucm9vdEluamVjdG9yfWNvbnN0cnVjdG9yKGUpe3RoaXMucm9vdEluamVjdG9yPWUsdGhpcy5jaGlsZHJlbj1uZXcgQkkodGhpcy5yb290SW5qZWN0b3IpfX1sZXQgQkk9KCgpPT57Y2xhc3Mgbntyb290SW5qZWN0b3I7Y29udGV4dHM9bmV3IE1hcDtjb25zdHJ1Y3Rvcih0'@; put 'KXt0aGlzLnJvb3RJbmplY3Rvcj10fW9uQ2hpbGRPdXRsZXRDcmVhdGVkKHQscil7Y29uc3QgaT10aGlzLmdldE9yQ3JlYXRlQ29udGV4dCh0KTtpLm91dGxldD1yLHRoaXMuY29udGV4dHMuc2V0KHQsaSl9b25DaGlsZE91dGxldERlc3Ryb3llZCh0KXtjb25zdCByPXRoaXMuZ2V0Q29udGV4'@; put 'dCh0KTtyJiYoci5vdXRsZXQ9bnVsbCxyLmF0dGFjaFJlZj1udWxsKX1vbk91dGxldERlYWN0aXZhdGVkKCl7Y29uc3QgdD10aGlzLmNvbnRleHRzO3JldHVybiB0aGlzLmNvbnRleHRzPW5ldyBNYXAsdH1vbk91dGxldFJlQXR0YWNoZWQodCl7dGhpcy5jb250ZXh0cz10fWdldE9yQ3JlYXRl'@; put 'Q29udGV4dCh0KXtsZXQgcj10aGlzLmdldENvbnRleHQodCk7cmV0dXJuIHJ8fChyPW5ldyBOdXQodGhpcy5yb290SW5qZWN0b3IpLHRoaXMuY29udGV4dHMuc2V0KHQscikpLHJ9Z2V0Q29udGV4dCh0KXtyZXR1cm4gdGhpcy5jb250ZXh0cy5nZXQodCl8fG51bGx9c3RhdGljIFx1MDI3NWZh'@; put 'Yz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKG9yKG5sKSl9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCk7Y2xhc3MgVWJle19yb290O2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Jvb3Q9'@; put 'ZX1nZXQgcm9vdCgpe3JldHVybiB0aGlzLl9yb290LnZhbHVlfXBhcmVudChlKXtjb25zdCB0PXRoaXMucGF0aEZyb21Sb290KGUpO3JldHVybiB0Lmxlbmd0aD4xP3RbdC5sZW5ndGgtMl06bnVsbH1jaGlsZHJlbihlKXtjb25zdCB0PVFyZShlLHRoaXMuX3Jvb3QpO3JldHVybiB0P3QuY2hp'@; put 'bGRyZW4ubWFwKHI9PnIudmFsdWUpOltdfWZpcnN0Q2hpbGQoZSl7Y29uc3QgdD1RcmUoZSx0aGlzLl9yb290KTtyZXR1cm4gdCYmdC5jaGlsZHJlbi5sZW5ndGg+MD90LmNoaWxkcmVuWzBdLnZhbHVlOm51bGx9c2libGluZ3MoZSl7Y29uc3QgdD1KcmUoZSx0aGlzLl9yb290KTtyZXR1cm4g'@; put 'dC5sZW5ndGg8Mj9bXTp0W3QubGVuZ3RoLTJdLmNoaWxkcmVuLm1hcChpPT5pLnZhbHVlKS5maWx0ZXIoaT0+aSE9PWUpfXBhdGhGcm9tUm9vdChlKXtyZXR1cm4gSnJlKGUsdGhpcy5fcm9vdCkubWFwKHQ9PnQudmFsdWUpfX1mdW5jdGlvbiBRcmUobixlKXtpZihuPT09ZS52YWx1ZSlyZXR1'@; put 'cm4gZTtmb3IoY29uc3QgdCBvZiBlLmNoaWxkcmVuKXtjb25zdCByPVFyZShuLHQpO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gSnJlKG4sZSl7aWYobj09PWUudmFsdWUpcmV0dXJuW2VdO2Zvcihjb25zdCB0IG9mIGUuY2hpbGRyZW4pe2NvbnN0IHI9SnJlKG4sdCk7aWYo'@; put 'ci5sZW5ndGgpcmV0dXJuIHIudW5zaGlmdChlKSxyfXJldHVybltdfWNsYXNzIGM0e3ZhbHVlO2NoaWxkcmVuO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52YWx1ZT1lLHRoaXMuY2hpbGRyZW49dH10b1N0cmluZygpe3JldHVybmBUcmVlTm9kZSgke3RoaXMudmFsdWV9KWB9fWZ1bmN0aW9uIFZF'@; put 'KG4pe2NvbnN0IGU9e307cmV0dXJuIG4mJm4uY2hpbGRyZW4uZm9yRWFjaCh0PT5lW3QudmFsdWUub3V0bGV0XT10KSxlfWNsYXNzIHpiZSBleHRlbmRzIFViZXtzbmFwc2hvdDtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUpLHRoaXMuc25hcHNob3Q9dCxlaWUodGhpcyxlKX10b1N0cmluZygp'@; put 'e3JldHVybiB0aGlzLnNuYXBzaG90LnRvU3RyaW5nKCl9fWZ1bmN0aW9uIFdiZShuKXtjb25zdCBlPWZ1bmN0aW9uIEZ1dChuKXtjb25zdCBvPW5ldyBaVShbXSx7fSx7fSwiIix7fSxacyxuLG51bGwse30pO3JldHVybiBuZXcgWWJlKCIiLG5ldyBjNChvLFtdKSl9KG4pLHQ9bmV3ICRpKFtu'@; put 'ZXcgT0koIiIse30pXSkscj1uZXcgJGkoe30pLGk9bmV3ICRpKHt9KSxvPW5ldyAkaSh7fSksYT1uZXcgJGkoIiIpLGw9bmV3IHAxKHQscixvLGEsaSxacyxuLGUucm9vdCk7cmV0dXJuIGwuc25hcHNob3Q9ZS5yb290LG5ldyB6YmUobmV3IGM0KGwsW10pLGUpfWNsYXNzIHAxe3VybFN1Ympl'@; put 'Y3Q7cGFyYW1zU3ViamVjdDtxdWVyeVBhcmFtc1N1YmplY3Q7ZnJhZ21lbnRTdWJqZWN0O2RhdGFTdWJqZWN0O291dGxldDtjb21wb25lbnQ7c25hcHNob3Q7X2Z1dHVyZVNuYXBzaG90O19yb3V0ZXJTdGF0ZTtfcGFyYW1NYXA7X3F1ZXJ5UGFyYW1NYXA7dGl0bGU7dXJsO3BhcmFtcztxdWVy'@; put 'eVBhcmFtcztmcmFnbWVudDtkYXRhO2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhLGwsdSl7dGhpcy51cmxTdWJqZWN0PWUsdGhpcy5wYXJhbXNTdWJqZWN0PXQsdGhpcy5xdWVyeVBhcmFtc1N1YmplY3Q9cix0aGlzLmZyYWdtZW50U3ViamVjdD1pLHRoaXMuZGF0YVN1YmplY3Q9byx0aGlzLm91'@; put 'dGxldD1hLHRoaXMuY29tcG9uZW50PWwsdGhpcy5fZnV0dXJlU25hcHNob3Q9dSx0aGlzLnRpdGxlPXRoaXMuZGF0YVN1YmplY3Q/LnBpcGUoRXMoZz0+Z1tMSV0pKT8/UGEodm9pZCAwKSx0aGlzLnVybD1lLHRoaXMucGFyYW1zPXQsdGhpcy5xdWVyeVBhcmFtcz1yLHRoaXMuZnJhZ21lbnQ9'@; put 'aSx0aGlzLmRhdGE9b31nZXQgcm91dGVDb25maWcoKXtyZXR1cm4gdGhpcy5fZnV0dXJlU25hcHNob3Qucm91dGVDb25maWd9Z2V0IHJvb3QoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucm9vdH1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhcmVudCh0aGlzKX1n'@; put 'ZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5maXJzdENoaWxkKHRoaXMpfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5jaGlsZHJlbih0aGlzKX1nZXQgcGF0aEZyb21Sb290KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhdGhGcm9t'@; put 'Um9vdCh0aGlzKX1nZXQgcGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcGFyYW1NYXA/Pz10aGlzLnBhcmFtcy5waXBlKEVzKGU9PkZFKGUpKSksdGhpcy5fcGFyYW1NYXB9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcD8/PXRoaXMucXVlcnlQYXJhbXMucGlw'@; put 'ZShFcyhlPT5GRShlKSkpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zbmFwc2hvdD90aGlzLnNuYXBzaG90LnRvU3RyaW5nKCk6YEZ1dHVyZSgke3RoaXMuX2Z1dHVyZVNuYXBzaG90fSlgfX1mdW5jdGlvbiBZVShuLGUsdD0iZW1wdHlPbmx5Iil7bGV0IHI7'@; put 'Y29uc3R7cm91dGVDb25maWc6aX09bjtyZXR1cm4gcj1udWxsPT09ZXx8ImFsd2F5cyIhPT10JiYiIiE9PWk/LnBhdGgmJihlLmNvbXBvbmVudHx8ZS5yb3V0ZUNvbmZpZz8ubG9hZENvbXBvbmVudCk/e3BhcmFtczp7Li4ubi5wYXJhbXN9LGRhdGE6ey4uLm4uZGF0YX0scmVzb2x2ZTp7Li4u'@; put 'bi5kYXRhLC4uLm4uX3Jlc29sdmVkRGF0YT8/e319fTp7cGFyYW1zOnsuLi5lLnBhcmFtcywuLi5uLnBhcmFtc30sZGF0YTp7Li4uZS5kYXRhLC4uLm4uZGF0YX0scmVzb2x2ZTp7Li4ubi5kYXRhLC4uLmUuZGF0YSwuLi5pPy5kYXRhLC4uLm4uX3Jlc29sdmVkRGF0YX19LGkmJkdiZShpKSYm'@; put 'KHIucmVzb2x2ZVtMSV09aS50aXRsZSkscn1jbGFzcyBaVXt1cmw7cGFyYW1zO3F1ZXJ5UGFyYW1zO2ZyYWdtZW50O2RhdGE7b3V0bGV0O2NvbXBvbmVudDtyb3V0ZUNvbmZpZztfcmVzb2x2ZTtfcmVzb2x2ZWREYXRhO19yb3V0ZXJTdGF0ZTtfcGFyYW1NYXA7X3F1ZXJ5UGFyYW1NYXA7Z2V0'@; put 'IHRpdGxlKCl7cmV0dXJuIHRoaXMuZGF0YT8uW0xJXX1jb25zdHJ1Y3RvcihlLHQscixpLG8sYSxsLHUsZyl7dGhpcy51cmw9ZSx0aGlzLnBhcmFtcz10LHRoaXMucXVlcnlQYXJhbXM9cix0aGlzLmZyYWdtZW50PWksdGhpcy5kYXRhPW8sdGhpcy5vdXRsZXQ9YSx0aGlzLmNvbXBvbmVudD1s'@; put 'LHRoaXMucm91dGVDb25maWc9dSx0aGlzLl9yZXNvbHZlPWd9Z2V0IHJvb3QoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucm9vdH1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhcmVudCh0aGlzKX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLl9yb3V0ZXJT'@; put 'dGF0ZS5maXJzdENoaWxkKHRoaXMpfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5jaGlsZHJlbih0aGlzKX1nZXQgcGF0aEZyb21Sb290KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhdGhGcm9tUm9vdCh0aGlzKX1nZXQgcGFyYW1NYXAoKXtyZXR1cm4gdGhp'@; put 'cy5fcGFyYW1NYXA/Pz1GRSh0aGlzLnBhcmFtcyksdGhpcy5fcGFyYW1NYXB9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcD8/PUZFKHRoaXMucXVlcnlQYXJhbXMpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGUodXJsOick'@; put 'e3RoaXMudXJsLm1hcChyPT5yLnRvU3RyaW5nKCkpLmpvaW4oIi8iKX0nLCBwYXRoOicke3RoaXMucm91dGVDb25maWc/dGhpcy5yb3V0ZUNvbmZpZy5wYXRoOiIifScpYH19Y2xhc3MgWWJlIGV4dGVuZHMgVWJle3VybDtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpLHRoaXMudXJsPWUsZWll'@; put 'KHRoaXMsdCl9dG9TdHJpbmcoKXtyZXR1cm4gWmJlKHRoaXMuX3Jvb3QpfX1mdW5jdGlvbiBlaWUobixlKXtlLnZhbHVlLl9yb3V0ZXJTdGF0ZT1uLGUuY2hpbGRyZW4uZm9yRWFjaCh0PT5laWUobix0KSl9ZnVuY3Rpb24gWmJlKG4pe2NvbnN0IGU9bi5jaGlsZHJlbi5sZW5ndGg+MD9gIHsg'@; put 'JHtuLmNoaWxkcmVuLm1hcChaYmUpLmpvaW4oIiwgIil9IH0gYDoiIjtyZXR1cm5gJHtuLnZhbHVlfSR7ZX1gfWZ1bmN0aW9uIHRpZShuKXtpZihuLnNuYXBzaG90KXtjb25zdCBlPW4uc25hcHNob3QsdD1uLl9mdXR1cmVTbmFwc2hvdDtuLnNuYXBzaG90PXQsSDUoZS5xdWVyeVBhcmFtcyx0'@; put 'LnF1ZXJ5UGFyYW1zKXx8bi5xdWVyeVBhcmFtc1N1YmplY3QubmV4dCh0LnF1ZXJ5UGFyYW1zKSxlLmZyYWdtZW50IT09dC5mcmFnbWVudCYmbi5mcmFnbWVudFN1YmplY3QubmV4dCh0LmZyYWdtZW50KSxINShlLnBhcmFtcyx0LnBhcmFtcyl8fG4ucGFyYW1zU3ViamVjdC5uZXh0KHQucGFy'@; put 'YW1zKSxmdW5jdGlvbiBHY3QobixlKXtpZihuLmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7Kyt0KWlmKCFINShuW3RdLGVbdF0pKXJldHVybiExO3JldHVybiEwfShlLnVybCx0LnVybCl8fG4udXJsU3ViamVjdC5uZXh0KHQudXJsKSxINShlLmRh'@; put 'dGEsdC5kYXRhKXx8bi5kYXRhU3ViamVjdC5uZXh0KHQuZGF0YSl9ZWxzZSBuLnNuYXBzaG90PW4uX2Z1dHVyZVNuYXBzaG90LG4uZGF0YVN1YmplY3QubmV4dChuLl9mdXR1cmVTbmFwc2hvdC5kYXRhKX1mdW5jdGlvbiBuaWUobixlKXtjb25zdCB0PUg1KG4ucGFyYW1zLGUucGFyYW1zKSYm'@; put 'ZnVuY3Rpb24gWGN0KG4sZSl7cmV0dXJuIHdiKG4sZSkmJm4uZXZlcnkoKHQscik9Pkg1KHQucGFyYW1ldGVycyxlW3JdLnBhcmFtZXRlcnMpKX0obi51cmwsZS51cmwpO3JldHVybiB0JiYhKCFuLnBhcmVudCE9IWUucGFyZW50KSYmKCFuLnBhcmVudHx8bmllKG4ucGFyZW50LGUucGFyZW50'@; put 'KSl9ZnVuY3Rpb24gR2JlKG4pe3JldHVybiJzdHJpbmciPT10eXBlb2Ygbi50aXRsZXx8bnVsbD09PW4udGl0bGV9Y29uc3QgUHV0PW5ldyBFcigiIik7bGV0IGU3PSgoKT0+e2NsYXNzIG57YWN0aXZhdGVkPW51bGw7Z2V0IGFjdGl2YXRlZENvbXBvbmVudFJlZigpe3JldHVybiB0aGlzLmFj'@; put 'dGl2YXRlZH1fYWN0aXZhdGVkUm91dGU9bnVsbDtuYW1lPVpzO2FjdGl2YXRlRXZlbnRzPW5ldyBLcjtkZWFjdGl2YXRlRXZlbnRzPW5ldyBLcjthdHRhY2hFdmVudHM9bmV3IEtyO2RldGFjaEV2ZW50cz1uZXcgS3I7cm91dGVyT3V0bGV0RGF0YT1OcnQoKTtwYXJlbnRDb250ZXh0cz1zbihC'@; put 'SSk7bG9jYXRpb249c24oRHMpO2NoYW5nZURldGVjdG9yPXNuKFVsKTtpbnB1dEJpbmRlcj1zbihHVSx7b3B0aW9uYWw6ITB9KTtzdXBwb3J0c0JpbmRpbmdUb0NvbXBvbmVudElucHV0cz0hMDtuZ09uQ2hhbmdlcyh0KXtpZih0Lm5hbWUpe2NvbnN0e2ZpcnN0Q2hhbmdlOnIscHJldmlvdXNW'@; put 'YWx1ZTppfT10Lm5hbWU7aWYocilyZXR1cm47dGhpcy5pc1RyYWNrZWRJblBhcmVudENvbnRleHRzKGkpJiYodGhpcy5kZWFjdGl2YXRlKCksdGhpcy5wYXJlbnRDb250ZXh0cy5vbkNoaWxkT3V0bGV0RGVzdHJveWVkKGkpKSx0aGlzLmluaXRpYWxpemVPdXRsZXRXaXRoTmFtZSgpfX1uZ09u'@; put 'RGVzdHJveSgpe3RoaXMuaXNUcmFja2VkSW5QYXJlbnRDb250ZXh0cyh0aGlzLm5hbWUpJiZ0aGlzLnBhcmVudENvbnRleHRzLm9uQ2hpbGRPdXRsZXREZXN0cm95ZWQodGhpcy5uYW1lKSx0aGlzLmlucHV0QmluZGVyPy51bnN1YnNjcmliZUZyb21Sb3V0ZURhdGEodGhpcyl9aXNUcmFja2Vk'@; put 'SW5QYXJlbnRDb250ZXh0cyh0KXtyZXR1cm4gdGhpcy5wYXJlbnRDb250ZXh0cy5nZXRDb250ZXh0KHQpPy5vdXRsZXQ9PT10aGlzfW5nT25Jbml0KCl7dGhpcy5pbml0aWFsaXplT3V0bGV0V2l0aE5hbWUoKX1pbml0aWFsaXplT3V0bGV0V2l0aE5hbWUoKXtpZih0aGlzLnBhcmVudENvbnRl'@; put 'eHRzLm9uQ2hpbGRPdXRsZXRDcmVhdGVkKHRoaXMubmFtZSx0aGlzKSx0aGlzLmFjdGl2YXRlZClyZXR1cm47Y29uc3QgdD10aGlzLnBhcmVudENvbnRleHRzLmdldENvbnRleHQodGhpcy5uYW1lKTt0Py5yb3V0ZSYmKHQuYXR0YWNoUmVmP3RoaXMuYXR0YWNoKHQuYXR0YWNoUmVmLHQucm91'@; put 'dGUpOnRoaXMuYWN0aXZhdGVXaXRoKHQucm91dGUsdC5pbmplY3RvcikpfWdldCBpc0FjdGl2YXRlZCgpe3JldHVybiEhdGhpcy5hY3RpdmF0ZWR9Z2V0IGNvbXBvbmVudCgpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgV24oNDAxMiwhMSk7cmV0dXJuIHRoaXMuYWN0aXZhdGVkLmlu'@; put 'c3RhbmNlfWdldCBhY3RpdmF0ZWRSb3V0ZSgpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgV24oNDAxMiwhMSk7cmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlfWdldCBhY3RpdmF0ZWRSb3V0ZURhdGEoKXtyZXR1cm4gdGhpcy5fYWN0aXZhdGVkUm91dGU/dGhpcy5fYWN0aXZhdGVk'@; put 'Um91dGUuc25hcHNob3QuZGF0YTp7fX1kZXRhY2goKXtpZighdGhpcy5hY3RpdmF0ZWQpdGhyb3cgbmV3IFduKDQwMTIsITEpO3RoaXMubG9jYXRpb24uZGV0YWNoKCk7Y29uc3QgdD10aGlzLmFjdGl2YXRlZDtyZXR1cm4gdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0'@; put 'ZT1udWxsLHRoaXMuZGV0YWNoRXZlbnRzLmVtaXQodC5pbnN0YW5jZSksdH1hdHRhY2godCxyKXt0aGlzLmFjdGl2YXRlZD10LHRoaXMuX2FjdGl2YXRlZFJvdXRlPXIsdGhpcy5sb2NhdGlvbi5pbnNlcnQodC5ob3N0VmlldyksdGhpcy5pbnB1dEJpbmRlcj8uYmluZEFjdGl2YXRlZFJvdXRl'@; put 'VG9PdXRsZXRDb21wb25lbnQodGhpcyksdGhpcy5hdHRhY2hFdmVudHMuZW1pdCh0Lmluc3RhbmNlKX1kZWFjdGl2YXRlKCl7aWYodGhpcy5hY3RpdmF0ZWQpe2NvbnN0IHQ9dGhpcy5jb21wb25lbnQ7dGhpcy5hY3RpdmF0ZWQuZGVzdHJveSgpLHRoaXMuYWN0aXZhdGVkPW51bGwsdGhpcy5f'@; put 'YWN0aXZhdGVkUm91dGU9bnVsbCx0aGlzLmRlYWN0aXZhdGVFdmVudHMuZW1pdCh0KX19YWN0aXZhdGVXaXRoKHQscil7aWYodGhpcy5pc0FjdGl2YXRlZCl0aHJvdyBuZXcgV24oNDAxMywhMSk7dGhpcy5fYWN0aXZhdGVkUm91dGU9dDtjb25zdCBpPXRoaXMubG9jYXRpb24sYT10LnNuYXBz'@; put 'aG90LmNvbXBvbmVudCxsPXRoaXMucGFyZW50Q29udGV4dHMuZ2V0T3JDcmVhdGVDb250ZXh0KHRoaXMubmFtZSkuY2hpbGRyZW4sdT1uZXcgSHV0KHQsbCxpLmluamVjdG9yLHRoaXMucm91dGVyT3V0bGV0RGF0YSk7dGhpcy5hY3RpdmF0ZWQ9aS5jcmVhdGVDb21wb25lbnQoYSx7aW5kZXg6'@; put 'aS5sZW5ndGgsaW5qZWN0b3I6dSxlbnZpcm9ubWVudEluamVjdG9yOnJ9KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpLHRoaXMuaW5wdXRCaW5kZXI/LmJpbmRBY3RpdmF0ZWRSb3V0ZVRvT3V0bGV0Q29tcG9uZW50KHRoaXMpLHRoaXMuYWN0aXZhdGVFdmVudHMuZW1pdCh0'@; put 'aGlzLmFjdGl2YXRlZC5pbnN0YW5jZSl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0saW5wdXRzOntuYW1lOiJuYW1lIixyb3V0ZXJPdXRsZXREYXRh'@; put 'OlsxLCJyb3V0ZXJPdXRsZXREYXRhIl19LG91dHB1dHM6e2FjdGl2YXRlRXZlbnRzOiJhY3RpdmF0ZSIsZGVhY3RpdmF0ZUV2ZW50czoiZGVhY3RpdmF0ZSIsYXR0YWNoRXZlbnRzOiJhdHRhY2giLGRldGFjaEV2ZW50czoiZGV0YWNoIn0sZXhwb3J0QXM6WyJvdXRsZXQiXSxmZWF0dXJlczpb'@; put 'aXVdfSl9cmV0dXJuIG59KSgpO2NsYXNzIEh1dHtyb3V0ZTtjaGlsZENvbnRleHRzO3BhcmVudDtvdXRsZXREYXRhO2NvbnN0cnVjdG9yKGUsdCxyLGkpe3RoaXMucm91dGU9ZSx0aGlzLmNoaWxkQ29udGV4dHM9dCx0aGlzLnBhcmVudD1yLHRoaXMub3V0bGV0RGF0YT1pfWdldChlLHQpe3Jl'@; put 'dHVybiBlPT09cDE/dGhpcy5yb3V0ZTplPT09Qkk/dGhpcy5jaGlsZENvbnRleHRzOmU9PT1QdXQ/dGhpcy5vdXRsZXREYXRhOnRoaXMucGFyZW50LmdldChlLHQpfX1jb25zdCBHVT1uZXcgRXIoIiIpO2xldCAkYmU9KCgpPT57Y2xhc3MgbntvdXRsZXREYXRhU3Vic2NyaXB0aW9ucz1uZXcg'@; put 'TWFwO2JpbmRBY3RpdmF0ZWRSb3V0ZVRvT3V0bGV0Q29tcG9uZW50KHQpe3RoaXMudW5zdWJzY3JpYmVGcm9tUm91dGVEYXRhKHQpLHRoaXMuc3Vic2NyaWJlVG9Sb3V0ZURhdGEodCl9dW5zdWJzY3JpYmVGcm9tUm91dGVEYXRhKHQpe3RoaXMub3V0bGV0RGF0YVN1YnNjcmlwdGlvbnMuZ2V0'@; put 'KHQpPy51bnN1YnNjcmliZSgpLHRoaXMub3V0bGV0RGF0YVN1YnNjcmlwdGlvbnMuZGVsZXRlKHQpfXN1YnNjcmliZVRvUm91dGVEYXRhKHQpe2NvbnN0e2FjdGl2YXRlZFJvdXRlOnJ9PXQsaT1fYihbci5xdWVyeVBhcmFtcyxyLnBhcmFtcyxyLmRhdGFdKS5waXBlKG0wKChbbyxhLGxdLHUp'@; put 'PT4obD17Li4ubywuLi5hLC4uLmx9LDA9PT11P1BhKGwpOlByb21pc2UucmVzb2x2ZShsKSkpKS5zdWJzY3JpYmUobz0+e2lmKCF0LmlzQWN0aXZhdGVkfHwhdC5hY3RpdmF0ZWRDb21wb25lbnRSZWZ8fHQuYWN0aXZhdGVkUm91dGUhPT1yfHxudWxsPT09ci5jb21wb25lbnQpcmV0dXJuIHZv'@; put 'aWQgdGhpcy51bnN1YnNjcmliZUZyb21Sb3V0ZURhdGEodCk7Y29uc3QgYT1mdW5jdGlvbiBJaXQobil7Y29uc3QgZT1jcyhuKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBCUihlKTtyZXR1cm57Z2V0IHNlbGVjdG9yKCl7cmV0dXJuIHQuc2VsZWN0b3J9LGdldCB0eXBlKCl7cmV0'@; put 'dXJuIHQuY29tcG9uZW50VHlwZX0sZ2V0IGlucHV0cygpe3JldHVybiB0LmlucHV0c30sZ2V0IG91dHB1dHMoKXtyZXR1cm4gdC5vdXRwdXRzfSxnZXQgbmdDb250ZW50U2VsZWN0b3JzKCl7cmV0dXJuIHQubmdDb250ZW50U2VsZWN0b3JzfSxnZXQgaXNTdGFuZGFsb25lKCl7cmV0dXJuIGUu'@; put 'c3RhbmRhbG9uZX0sZ2V0IGlzU2lnbmFsKCl7cmV0dXJuIGUuc2lnbmFsc319fShyLmNvbXBvbmVudCk7aWYoYSlmb3IoY29uc3R7dGVtcGxhdGVOYW1lOmx9b2YgYS5pbnB1dHMpdC5hY3RpdmF0ZWRDb21wb25lbnRSZWYuc2V0SW5wdXQobCxvW2xdKTtlbHNlIHRoaXMudW5zdWJzY3JpYmVG'@; put 'cm9tUm91dGVEYXRhKHQpfSk7dGhpcy5vdXRsZXREYXRhU3Vic2NyaXB0aW9ucy5zZXQodCxpKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KX1yZXR1cm4gbn0p'@; put 'KCkscWJlPSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbIm5nLWNvbXBvbmVudCJdXSxleHBvcnRBczpbImVtcHR5Um91dGVyT3V0bGV0Il0sZGVjbHM6MSx2'@; put 'YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24ocixpKXsxJnImJkl0KDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltlN10sZW5jYXBzdWxhdGlvbjoyfSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIHJpZShuKXtjb25zdCBlPW4uY2hpbGRyZW4mJm4uY2hpbGRyZW4ubWFwKHJpZSksdD1l'@; put 'P3suLi5uLGNoaWxkcmVuOmV9OnsuLi5ufTtyZXR1cm4hdC5jb21wb25lbnQmJiF0LmxvYWRDb21wb25lbnQmJihlfHx0LmxvYWRDaGlsZHJlbikmJnQub3V0bGV0JiZ0Lm91dGxldCE9PVpzJiYodC5jb21wb25lbnQ9cWJlKSx0fWZ1bmN0aW9uIGpJKG4sZSx0KXtpZih0JiZuLnNob3VsZFJl'@; put 'dXNlUm91dGUoZS52YWx1ZSx0LnZhbHVlLnNuYXBzaG90KSl7Y29uc3Qgcj10LnZhbHVlO3IuX2Z1dHVyZVNuYXBzaG90PWUudmFsdWU7Y29uc3QgaT1mdW5jdGlvbiBCdXQobixlLHQpe3JldHVybiBlLmNoaWxkcmVuLm1hcChyPT57Zm9yKGNvbnN0IGkgb2YgdC5jaGlsZHJlbilpZihuLnNo'@; put 'b3VsZFJldXNlUm91dGUoci52YWx1ZSxpLnZhbHVlLnNuYXBzaG90KSlyZXR1cm4gakkobixyLGkpO3JldHVybiBqSShuLHIpfSl9KG4sZSx0KTtyZXR1cm4gbmV3IGM0KHIsaSl9e2lmKG4uc2hvdWxkQXR0YWNoKGUudmFsdWUpKXtjb25zdCBvPW4ucmV0cmlldmUoZS52YWx1ZSk7aWYobnVs'@; put 'bCE9PW8pe2NvbnN0IGE9by5yb3V0ZTtyZXR1cm4gYS52YWx1ZS5fZnV0dXJlU25hcHNob3Q9ZS52YWx1ZSxhLmNoaWxkcmVuPWUuY2hpbGRyZW4ubWFwKGw9PmpJKG4sbCkpLGF9fWNvbnN0IHI9ZnVuY3Rpb24ganV0KG4pe3JldHVybiBuZXcgcDEobmV3ICRpKG4udXJsKSxuZXcgJGkobi5w'@; put 'YXJhbXMpLG5ldyAkaShuLnF1ZXJ5UGFyYW1zKSxuZXcgJGkobi5mcmFnbWVudCksbmV3ICRpKG4uZGF0YSksbi5vdXRsZXQsbi5jb21wb25lbnQsbil9KGUudmFsdWUpLGk9ZS5jaGlsZHJlbi5tYXAobz0+akkobixvKSk7cmV0dXJuIG5ldyBjNChyLGkpfX1jbGFzcyBpaWV7cmVkaXJlY3RU'@; put 'bztuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yZWRpcmVjdFRvPWUsdGhpcy5uYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zPXR9fWNvbnN0IEtiZT0ibmdOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3IiO2Z1bmN0aW9uICRVKG4sZSl7Y29uc3R7cmVkaXJl'@; put 'Y3RUbzp0LG5hdmlnYXRpb25CZWhhdmlvck9wdGlvbnM6cn09Q2IoZSk/e3JlZGlyZWN0VG86ZSxuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zOnZvaWQgMH06ZSxpPVhiZSghMSxUMy5SZWRpcmVjdCk7cmV0dXJuIGkudXJsPXQsaS5uYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zPXIsaX1mdW5j'@; put 'dGlvbiBYYmUobixlKXtjb25zdCB0PW5ldyBFcnJvcihgTmF2aWdhdGlvbkNhbmNlbGluZ0Vycm9yOiAke258fCIifWApO3JldHVybiB0W0tiZV09ITAsdC5jYW5jZWxsYXRpb25Db2RlPWUsdH1mdW5jdGlvbiBRYmUobil7cmV0dXJuISFuJiZuW0tiZV19Y2xhc3MgV3V0e3JvdXRlUmV1c2VT'@; put 'dHJhdGVneTtmdXR1cmVTdGF0ZTtjdXJyU3RhdGU7Zm9yd2FyZEV2ZW50O2lucHV0QmluZGluZ0VuYWJsZWQ7Y29uc3RydWN0b3IoZSx0LHIsaSxvKXt0aGlzLnJvdXRlUmV1c2VTdHJhdGVneT1lLHRoaXMuZnV0dXJlU3RhdGU9dCx0aGlzLmN1cnJTdGF0ZT1yLHRoaXMuZm9yd2FyZEV2ZW50'@; put 'PWksdGhpcy5pbnB1dEJpbmRpbmdFbmFibGVkPW99YWN0aXZhdGUoZSl7Y29uc3QgdD10aGlzLmZ1dHVyZVN0YXRlLl9yb290LHI9dGhpcy5jdXJyU3RhdGU/dGhpcy5jdXJyU3RhdGUuX3Jvb3Q6bnVsbDt0aGlzLmRlYWN0aXZhdGVDaGlsZFJvdXRlcyh0LHIsZSksdGllKHRoaXMuZnV0dXJl'@; put 'U3RhdGUucm9vdCksdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKHQscixlKX1kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZSx0LHIpe2NvbnN0IGk9VkUodCk7ZS5jaGlsZHJlbi5mb3JFYWNoKG89Pntjb25zdCBhPW8udmFsdWUub3V0bGV0O3RoaXMuZGVhY3RpdmF0ZVJvdXRlcyhvLGlbYV0sciks'@; put 'ZGVsZXRlIGlbYV19KSxPYmplY3QudmFsdWVzKGkpLmZvckVhY2gobz0+e3RoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kSXRzQ2hpbGRyZW4obyxyKX0pfWRlYWN0aXZhdGVSb3V0ZXMoZSx0LHIpe2NvbnN0IGk9ZS52YWx1ZSxvPXQ/dC52YWx1ZTpudWxsO2lmKGk9PT1vKWlmKGkuY29tcG9uZW50'@; put 'KXtjb25zdCBhPXIuZ2V0Q29udGV4dChpLm91dGxldCk7YSYmdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZSx0LGEuY2hpbGRyZW4pfWVsc2UgdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZSx0LHIpO2Vsc2UgbyYmdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih0LHIp'@; put 'fWRlYWN0aXZhdGVSb3V0ZUFuZEl0c0NoaWxkcmVuKGUsdCl7ZS52YWx1ZS5jb21wb25lbnQmJnRoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZERldGFjaChlLnZhbHVlLnNuYXBzaG90KT90aGlzLmRldGFjaEFuZFN0b3JlUm91dGVTdWJ0cmVlKGUsdCk6dGhpcy5kZWFjdGl2YXRlUm91'@; put 'dGVBbmRPdXRsZXQoZSx0KX1kZXRhY2hBbmRTdG9yZVJvdXRlU3VidHJlZShlLHQpe2NvbnN0IHI9dC5nZXRDb250ZXh0KGUudmFsdWUub3V0bGV0KSxpPXImJmUudmFsdWUuY29tcG9uZW50P3IuY2hpbGRyZW46dCxvPVZFKGUpO2Zvcihjb25zdCBhIG9mIE9iamVjdC52YWx1ZXMobykpdGhp'@; put 'cy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihhLGkpO2lmKHImJnIub3V0bGV0KXtjb25zdCBhPXIub3V0bGV0LmRldGFjaCgpLGw9ci5jaGlsZHJlbi5vbk91dGxldERlYWN0aXZhdGVkKCk7dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kuc3RvcmUoZS52YWx1ZS5zbmFwc2hvdCx7Y29t'@; put 'cG9uZW50UmVmOmEscm91dGU6ZSxjb250ZXh0czpsfSl9fWRlYWN0aXZhdGVSb3V0ZUFuZE91dGxldChlLHQpe2NvbnN0IHI9dC5nZXRDb250ZXh0KGUudmFsdWUub3V0bGV0KSxpPXImJmUudmFsdWUuY29tcG9uZW50P3IuY2hpbGRyZW46dCxvPVZFKGUpO2Zvcihjb25zdCBhIG9mIE9iamVj'@; put 'dC52YWx1ZXMobykpdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihhLGkpO3ImJihyLm91dGxldCYmKHIub3V0bGV0LmRlYWN0aXZhdGUoKSxyLmNoaWxkcmVuLm9uT3V0bGV0RGVhY3RpdmF0ZWQoKSksci5hdHRhY2hSZWY9bnVsbCxyLnJvdXRlPW51bGwpfWFjdGl2YXRlQ2hp'@; put 'bGRSb3V0ZXMoZSx0LHIpe2NvbnN0IGk9VkUodCk7ZS5jaGlsZHJlbi5mb3JFYWNoKG89Pnt0aGlzLmFjdGl2YXRlUm91dGVzKG8saVtvLnZhbHVlLm91dGxldF0sciksdGhpcy5mb3J3YXJkRXZlbnQobmV3IEF1dChvLnZhbHVlLnNuYXBzaG90KSl9KSxlLmNoaWxkcmVuLmxlbmd0aCYmdGhp'@; put 'cy5mb3J3YXJkRXZlbnQobmV3IFR1dChlLnZhbHVlLnNuYXBzaG90KSl9YWN0aXZhdGVSb3V0ZXMoZSx0LHIpe2NvbnN0IGk9ZS52YWx1ZSxvPXQ/dC52YWx1ZTpudWxsO2lmKHRpZShpKSxpPT09bylpZihpLmNvbXBvbmVudCl7Y29uc3QgYT1yLmdldE9yQ3JlYXRlQ29udGV4dChpLm91dGxl'@; put 'dCk7dGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGUsdCxhLmNoaWxkcmVuKX1lbHNlIHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhlLHQscik7ZWxzZSBpZihpLmNvbXBvbmVudCl7Y29uc3QgYT1yLmdldE9yQ3JlYXRlQ29udGV4dChpLm91dGxldCk7aWYodGhpcy5yb3V0ZVJldXNlU3RyYXRl'@; put 'Z3kuc2hvdWxkQXR0YWNoKGkuc25hcHNob3QpKXtjb25zdCBsPXRoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnJldHJpZXZlKGkuc25hcHNob3QpO3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnN0b3JlKGkuc25hcHNob3QsbnVsbCksYS5jaGlsZHJlbi5vbk91dGxldFJlQXR0YWNoZWQobC5jb250'@; put 'ZXh0cyksYS5hdHRhY2hSZWY9bC5jb21wb25lbnRSZWYsYS5yb3V0ZT1sLnJvdXRlLnZhbHVlLGEub3V0bGV0JiZhLm91dGxldC5hdHRhY2gobC5jb21wb25lbnRSZWYsbC5yb3V0ZS52YWx1ZSksdGllKGwucm91dGUudmFsdWUpLHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhlLG51bGwsYS5j'@; put 'aGlsZHJlbil9ZWxzZSBhLmF0dGFjaFJlZj1udWxsLGEucm91dGU9aSxhLm91dGxldCYmYS5vdXRsZXQuYWN0aXZhdGVXaXRoKGksYS5pbmplY3RvciksdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGUsbnVsbCxhLmNoaWxkcmVuKX1lbHNlIHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhlLG51'@; put 'bGwscil9fWNsYXNzIEpiZXtwYXRoO3JvdXRlO2NvbnN0cnVjdG9yKGUpe3RoaXMucGF0aD1lLHRoaXMucm91dGU9dGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19fWNsYXNzIHFVe2NvbXBvbmVudDtyb3V0ZTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuY29tcG9uZW50PWUsdGhpcy5yb3V0'@; put 'ZT10fX1mdW5jdGlvbiBZdXQobixlLHQpe2NvbnN0IHI9bi5fcm9vdDtyZXR1cm4gVUkocixlP2UuX3Jvb3Q6bnVsbCx0LFtyLnZhbHVlXSl9ZnVuY3Rpb24gQkUobixlKXtjb25zdCB0PVN5bWJvbCgpLHI9ZS5nZXQobix0KTtyZXR1cm4gcj09PXQ/ImZ1bmN0aW9uIiE9dHlwZW9mIG58fGZ1'@; put 'bmN0aW9uIFNsKG4pe3JldHVybiBudWxsIT09ZXUobil9KG4pP2UuZ2V0KG4pOm46cn1mdW5jdGlvbiBVSShuLGUsdCxyLGk9e2NhbkRlYWN0aXZhdGVDaGVja3M6W10sY2FuQWN0aXZhdGVDaGVja3M6W119KXtjb25zdCBvPVZFKGUpO3JldHVybiBuLmNoaWxkcmVuLmZvckVhY2goYT0+eyhm'@; put 'dW5jdGlvbiBHdXQobixlLHQscixpPXtjYW5EZWFjdGl2YXRlQ2hlY2tzOltdLGNhbkFjdGl2YXRlQ2hlY2tzOltdfSl7Y29uc3Qgbz1uLnZhbHVlLGE9ZT9lLnZhbHVlOm51bGwsbD10P3QuZ2V0Q29udGV4dChuLnZhbHVlLm91dGxldCk6bnVsbDtpZihhJiZvLnJvdXRlQ29uZmlnPT09YS5y'@; put 'b3V0ZUNvbmZpZyl7Y29uc3QgdT1mdW5jdGlvbiAkdXQobixlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0KG4sZSk7c3dpdGNoKHQpe2Nhc2UicGF0aFBhcmFtc0NoYW5nZSI6cmV0dXJuIXdiKG4udXJsLGUudXJsKTtjYXNlInBhdGhQYXJhbXNPclF1ZXJ5UGFyYW1zQ2hh'@; put 'bmdlIjpyZXR1cm4hd2Iobi51cmwsZS51cmwpfHwhSDUobi5xdWVyeVBhcmFtcyxlLnF1ZXJ5UGFyYW1zKTtjYXNlImFsd2F5cyI6cmV0dXJuITA7Y2FzZSJwYXJhbXNPclF1ZXJ5UGFyYW1zQ2hhbmdlIjpyZXR1cm4hbmllKG4sZSl8fCFINShuLnF1ZXJ5UGFyYW1zLGUucXVlcnlQYXJhbXMp'@; put 'O2RlZmF1bHQ6cmV0dXJuIW5pZShuLGUpfX0oYSxvLG8ucm91dGVDb25maWcucnVuR3VhcmRzQW5kUmVzb2x2ZXJzKTt1P2kuY2FuQWN0aXZhdGVDaGVja3MucHVzaChuZXcgSmJlKHIpKTooby5kYXRhPWEuZGF0YSxvLl9yZXNvbHZlZERhdGE9YS5fcmVzb2x2ZWREYXRhKSxVSShuLGUsby5j'@; put 'b21wb25lbnQ/bD9sLmNoaWxkcmVuOm51bGw6dCxyLGkpLHUmJmwmJmwub3V0bGV0JiZsLm91dGxldC5pc0FjdGl2YXRlZCYmaS5jYW5EZWFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IHFVKGwub3V0bGV0LmNvbXBvbmVudCxhKSl9ZWxzZSBhJiZ6SShlLGwsaSksaS5jYW5BY3RpdmF0ZUNoZWNr'@; put 'cy5wdXNoKG5ldyBKYmUocikpLFVJKG4sbnVsbCxvLmNvbXBvbmVudD9sP2wuY2hpbGRyZW46bnVsbDp0LHIsaSl9KShhLG9bYS52YWx1ZS5vdXRsZXRdLHQsci5jb25jYXQoW2EudmFsdWVdKSxpKSxkZWxldGUgb1thLnZhbHVlLm91dGxldF19KSxPYmplY3QuZW50cmllcyhvKS5mb3JFYWNo'@; put 'KChbYSxsXSk9PnpJKGwsdC5nZXRDb250ZXh0KGEpLGkpKSxpfWZ1bmN0aW9uIHpJKG4sZSx0KXtjb25zdCByPVZFKG4pLGk9bi52YWx1ZTtPYmplY3QuZW50cmllcyhyKS5mb3JFYWNoKChbbyxhXSk9Pnt6SShhLGkuY29tcG9uZW50P2U/ZS5jaGlsZHJlbi5nZXRDb250ZXh0KG8pOm51bGw6'@; put 'ZSx0KX0pLHQuY2FuRGVhY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyBxVShpLmNvbXBvbmVudCYmZSYmZS5vdXRsZXQmJmUub3V0bGV0LmlzQWN0aXZhdGVkP2Uub3V0bGV0LmNvbXBvbmVudDpudWxsLGkpKX1mdW5jdGlvbiBXSShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbn1mdW5jdGlv'@; put 'biBld2Uobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBMVXx8IkVtcHR5RXJyb3IiPT09bj8ubmFtZX1jb25zdCBLVT1TeW1ib2woIklOSVRJQUxfVkFMVUUiKTtmdW5jdGlvbiBqRSgpe3JldHVybiBtMChuPT5fYihuLm1hcChlPT5lLnBpcGUoTXAoMSkscWcoS1UpKSkpLnBpcGUoRXMoZT0+e2Zv'@; put 'cihjb25zdCB0IG9mIGUpaWYoITAhPT10KXtpZih0PT09S1UpcmV0dXJuIEtVO2lmKCExPT09dHx8dGR0KHQpKXJldHVybiB0fXJldHVybiEwfSksc3UoZT0+ZSE9PUtVKSxNcCgxKSkpfWZ1bmN0aW9uIHRkdChuKXtyZXR1cm4gQ2Iobil8fG4gaW5zdGFuY2VvZiBpaWV9ZnVuY3Rpb24gdHdl'@; put 'KG4pe3JldHVybiBmdW5jdGlvbiBjYSguLi5uKXtyZXR1cm4gQ2kobil9KGYxKGU9PntpZigiYm9vbGVhbiIhPXR5cGVvZiBlKXRocm93ICRVKDAsZSl9KSxFcyhlPT4hMD09PWUpKX1jbGFzcyBvaWV7c2VnbWVudEdyb3VwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc2VnbWVudEdyb3VwPWV8fG51'@; put 'bGx9fWNsYXNzIGFpZSBleHRlbmRzIEVycm9ye3VybFRyZWU7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnVybFRyZWU9ZX19ZnVuY3Rpb24gVUUobil7cmV0dXJuIGtJKG5ldyBvaWUobikpfWZ1bmN0aW9uIGhkdChuKXtyZXR1cm4ga0kobmV3IFduKDRlMywhMSkpfWNsYXNzIHBkdHt1'@; put 'cmxTZXJpYWxpemVyO3VybFRyZWU7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnVybFNlcmlhbGl6ZXI9ZSx0aGlzLnVybFRyZWU9dH1saW5lcmFsaXplU2VnbWVudHMoZSx0KXtsZXQgcj1bXSxpPXQucm9vdDtmb3IoOzspe2lmKHI9ci5jb25jYXQoaS5zZWdtZW50cyksMD09PWkubnVtYmVyT2ZD'@; put 'aGlsZHJlbilyZXR1cm4gUGEocik7aWYoaS5udW1iZXJPZkNoaWxkcmVuPjF8fCFpLmNoaWxkcmVuW1pzXSlyZXR1cm4gaGR0KCk7aT1pLmNoaWxkcmVuW1pzXX19YXBwbHlSZWRpcmVjdENvbW1hbmRzKGUsdCxyLGksbyl7cmV0dXJuIGZ1bmN0aW9uIGdkdChuLGUsdCl7aWYoInN0cmluZyI9'@; put 'PXR5cGVvZiBuKXJldHVybiBQYShuKTtjb25zdCByPW4se3F1ZXJ5UGFyYW1zOmksZnJhZ21lbnQ6byxyb3V0ZUNvbmZpZzphLHVybDpsLG91dGxldDp1LHBhcmFtczpnLGRhdGE6RSx0aXRsZTpPfT1lO3JldHVybiBKOChMdSh0LCgpPT5yKHtwYXJhbXM6ZyxkYXRhOkUscXVlcnlQYXJhbXM6'@; put 'aSxmcmFnbWVudDpvLHJvdXRlQ29uZmlnOmEsdXJsOmwsb3V0bGV0OnUsdGl0bGU6T30pKSl9KHQsaSxvKS5waXBlKEVzKGE9PntpZihhIGluc3RhbmNlb2YgYmIpdGhyb3cgbmV3IGFpZShhKTtjb25zdCBsPXRoaXMuYXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoYSx0aGlzLnVybFNlcmlh'@; put 'bGl6ZXIucGFyc2UoYSksZSxyKTtpZigiLyI9PT1hWzBdKXRocm93IG5ldyBhaWUobCk7cmV0dXJuIGx9KSl9YXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoZSx0LHIsaSl7Y29uc3Qgbz10aGlzLmNyZWF0ZVNlZ21lbnRHcm91cChlLHQucm9vdCxyLGkpO3JldHVybiBuZXcgYmIobyx0aGlz'@; put 'LmNyZWF0ZVF1ZXJ5UGFyYW1zKHQucXVlcnlQYXJhbXMsdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSx0LmZyYWdtZW50KX1jcmVhdGVRdWVyeVBhcmFtcyhlLHQpe2NvbnN0IHI9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtpLG9dKT0+e2lmKCJzdHJpbmciPT10eXBl'@; put 'b2YgbyYmIjoiPT09b1swXSl7Y29uc3QgbD1vLnN1YnN0cmluZygxKTtyW2ldPXRbbF19ZWxzZSByW2ldPW99KSxyfWNyZWF0ZVNlZ21lbnRHcm91cChlLHQscixpKXtjb25zdCBvPXRoaXMuY3JlYXRlU2VnbWVudHMoZSx0LnNlZ21lbnRzLHIsaSk7bGV0IGE9e307cmV0dXJuIE9iamVjdC5l'@; put 'bnRyaWVzKHQuY2hpbGRyZW4pLmZvckVhY2goKFtsLHVdKT0+e2FbbF09dGhpcy5jcmVhdGVTZWdtZW50R3JvdXAoZSx1LHIsaSl9KSxuZXcgd3UobyxhKX1jcmVhdGVTZWdtZW50cyhlLHQscixpKXtyZXR1cm4gdC5tYXAobz0+IjoiPT09by5wYXRoWzBdP3RoaXMuZmluZFBvc1BhcmFtKGUs'@; put 'byxpKTp0aGlzLmZpbmRPclJldHVybihvLHIpKX1maW5kUG9zUGFyYW0oZSx0LHIpe2NvbnN0IGk9clt0LnBhdGguc3Vic3RyaW5nKDEpXTtpZighaSl0aHJvdyBuZXcgV24oNDAwMSwhMSk7cmV0dXJuIGl9ZmluZE9yUmV0dXJuKGUsdCl7bGV0IHI9MDtmb3IoY29uc3QgaSBvZiB0KXtpZihp'@; put 'LnBhdGg9PT1lLnBhdGgpcmV0dXJuIHQuc3BsaWNlKHIpLGk7cisrfXJldHVybiBlfX1jb25zdCBzaWU9e21hdGNoZWQ6ITEsY29uc3VtZWRTZWdtZW50czpbXSxyZW1haW5pbmdTZWdtZW50czpbXSxwYXJhbWV0ZXJzOnt9LHBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzOnt9fTtmdW5jdGlvbiBt'@; put 'ZHQobixlLHQscixpKXtjb25zdCBvPW53ZShuLGUsdCk7cmV0dXJuIG8ubWF0Y2hlZD8ocj1mdW5jdGlvbiBSdXQobixlKXtyZXR1cm4gbi5wcm92aWRlcnMmJiFuLl9pbmplY3RvciYmKG4uX2luamVjdG9yPWhqKG4ucHJvdmlkZXJzLGUsYFJvdXRlOiAke24ucGF0aH1gKSksbi5faW5qZWN0'@; put 'b3I/P2V9KGUsciksZnVuY3Rpb24gZGR0KG4sZSx0LHIpe2NvbnN0IGk9ZS5jYW5NYXRjaDtyZXR1cm4gaSYmMCE9PWkubGVuZ3RoP1BhKGkubWFwKGE9Pntjb25zdCBsPUJFKGEsbik7cmV0dXJuIEo4KGZ1bmN0aW9uIGVkdChuKXtyZXR1cm4gbiYmV0kobi5jYW5NYXRjaCl9KGwpP2wuY2Fu'@; put 'TWF0Y2goZSx0KTpMdShuLCgpPT5sKGUsdCkpKX0pKS5waXBlKGpFKCksdHdlKCkpOlBhKCEwKX0ocixlLHQpLnBpcGUoRXMoYT0+ITA9PT1hP286ey4uLnNpZX0pKSk6UGEobyl9ZnVuY3Rpb24gbndlKG4sZSx0KXtpZigiKioiPT09ZS5wYXRoKXJldHVybiBmdW5jdGlvbiB2ZHQobil7cmV0'@; put 'dXJue21hdGNoZWQ6ITAscGFyYW1ldGVyczpuLmxlbmd0aD4wP0NiZShuKS5wYXJhbWV0ZXJzOnt9LGNvbnN1bWVkU2VnbWVudHM6bixyZW1haW5pbmdTZWdtZW50czpbXSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX19KHQpO2lmKCIiPT09ZS5wYXRoKXJldHVybiJmdWxsIj09PWUucGF0'@; put 'aE1hdGNoJiYobi5oYXNDaGlsZHJlbigpfHx0Lmxlbmd0aD4wKT97Li4uc2llfTp7bWF0Y2hlZDohMCxjb25zdW1lZFNlZ21lbnRzOltdLHJlbWFpbmluZ1NlZ21lbnRzOnQscGFyYW1ldGVyczp7fSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX07Y29uc3QgaT0oZS5tYXRjaGVyfHxaY3Qp'@; put 'KHQsbixlKTtpZighaSlyZXR1cm57Li4uc2llfTtjb25zdCBvPXt9O09iamVjdC5lbnRyaWVzKGkucG9zUGFyYW1zPz97fSkuZm9yRWFjaCgoW2wsdV0pPT57b1tsXT11LnBhdGh9KTtjb25zdCBhPWkuY29uc3VtZWQubGVuZ3RoPjA/ey4uLm8sLi4uaS5jb25zdW1lZFtpLmNvbnN1bWVkLmxl'@; put 'bmd0aC0xXS5wYXJhbWV0ZXJzfTpvO3JldHVybnttYXRjaGVkOiEwLGNvbnN1bWVkU2VnbWVudHM6aS5jb25zdW1lZCxyZW1haW5pbmdTZWdtZW50czp0LnNsaWNlKGkuY29uc3VtZWQubGVuZ3RoKSxwYXJhbWV0ZXJzOmEscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6aS5wb3NQYXJhbXM/P3t9'@; put 'fX1mdW5jdGlvbiByd2UobixlLHQscil7cmV0dXJuIHQubGVuZ3RoPjAmJmZ1bmN0aW9uIGJkdChuLGUsdCl7cmV0dXJuIHQuc29tZShyPT5YVShuLGUscikmJmw0KHIpIT09WnMpfShuLHQscik/e3NlZ21lbnRHcm91cDpuZXcgd3UoZSx5ZHQocixuZXcgd3UodCxuLmNoaWxkcmVuKSkpLHNs'@; put 'aWNlZFNlZ21lbnRzOltdfTowPT09dC5sZW5ndGgmJmZ1bmN0aW9uIHdkdChuLGUsdCl7cmV0dXJuIHQuc29tZShyPT5YVShuLGUscikpfShuLHQscik/e3NlZ21lbnRHcm91cDpuZXcgd3Uobi5zZWdtZW50cyxfZHQobix0LHIsbi5jaGlsZHJlbikpLHNsaWNlZFNlZ21lbnRzOnR9OntzZWdt'@; put 'ZW50R3JvdXA6bmV3IHd1KG4uc2VnbWVudHMsbi5jaGlsZHJlbiksc2xpY2VkU2VnbWVudHM6dH19ZnVuY3Rpb24gX2R0KG4sZSx0LHIpe2NvbnN0IGk9e307Zm9yKGNvbnN0IG8gb2YgdClpZihYVShuLGUsbykmJiFyW2w0KG8pXSl7Y29uc3QgYT1uZXcgd3UoW10se30pO2lbbDQobyldPWF9'@; put 'cmV0dXJuey4uLnIsLi4uaX19ZnVuY3Rpb24geWR0KG4sZSl7Y29uc3QgdD17fTt0W1pzXT1lO2Zvcihjb25zdCByIG9mIG4paWYoIiI9PT1yLnBhdGgmJmw0KHIpIT09WnMpe2NvbnN0IGk9bmV3IHd1KFtdLHt9KTt0W2w0KHIpXT1pfXJldHVybiB0fWZ1bmN0aW9uIFhVKG4sZSx0KXtyZXR1'@; put 'cm4oIShuLmhhc0NoaWxkcmVuKCl8fGUubGVuZ3RoPjApfHwiZnVsbCIhPT10LnBhdGhNYXRjaCkmJiIiPT09dC5wYXRofWNsYXNzIFNkdHt9Y2xhc3MgVGR0e2luamVjdG9yO2NvbmZpZ0xvYWRlcjtyb290Q29tcG9uZW50VHlwZTtjb25maWc7dXJsVHJlZTtwYXJhbXNJbmhlcml0YW5jZVN0'@; put 'cmF0ZWd5O3VybFNlcmlhbGl6ZXI7YXBwbHlSZWRpcmVjdHM7YWJzb2x1dGVSZWRpcmVjdENvdW50PTA7YWxsb3dSZWRpcmVjdHM9ITA7Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEsbCl7dGhpcy5pbmplY3Rvcj1lLHRoaXMuY29uZmlnTG9hZGVyPXQsdGhpcy5yb290Q29tcG9uZW50VHlwZT1y'@; put 'LHRoaXMuY29uZmlnPWksdGhpcy51cmxUcmVlPW8sdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PWEsdGhpcy51cmxTZXJpYWxpemVyPWwsdGhpcy5hcHBseVJlZGlyZWN0cz1uZXcgcGR0KHRoaXMudXJsU2VyaWFsaXplcix0aGlzLnVybFRyZWUpfW5vTWF0Y2hFcnJvcihlKXtyZXR1'@; put 'cm4gbmV3IFduKDQwMDIsYCcke2Uuc2VnbWVudEdyb3VwfSdgKX1yZWNvZ25pemUoKXtjb25zdCBlPXJ3ZSh0aGlzLnVybFRyZWUucm9vdCxbXSxbXSx0aGlzLmNvbmZpZykuc2VnbWVudEdyb3VwO3JldHVybiB0aGlzLm1hdGNoKGUpLnBpcGUoRXMoKHtjaGlsZHJlbjp0LHJvb3RTbmFwc2hv'@; put 'dDpyfSk9Pntjb25zdCBpPW5ldyBjNChyLHQpLG89bmV3IFliZSgiIixpKSxhPWZ1bmN0aW9uIGh1dChuLGUsdD1udWxsLHI9bnVsbCl7cmV0dXJuIE9iZShMYmUobiksZSx0LHIpfShyLFtdLHRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcyx0aGlzLnVybFRyZWUuZnJhZ21lbnQpO3JldHVybiBh'@; put 'LnF1ZXJ5UGFyYW1zPXRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcyxvLnVybD10aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKGEpLHtzdGF0ZTpvLHRyZWU6YX19KSl9bWF0Y2goZSl7Y29uc3QgdD1uZXcgWlUoW10sT2JqZWN0LmZyZWV6ZSh7fSksT2JqZWN0LmZyZWV6ZSh7Li4udGhpcy51'@; put 'cmxUcmVlLnF1ZXJ5UGFyYW1zfSksdGhpcy51cmxUcmVlLmZyYWdtZW50LE9iamVjdC5mcmVlemUoe30pLFpzLHRoaXMucm9vdENvbXBvbmVudFR5cGUsbnVsbCx7fSk7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cCh0aGlzLmluamVjdG9yLHRoaXMuY29uZmlnLGUsWnMsdCkucGlw'@; put 'ZShFcyhyPT4oe2NoaWxkcmVuOnIscm9vdFNuYXBzaG90OnR9KSkseWIocj0+e2lmKHIgaW5zdGFuY2VvZiBhaWUpcmV0dXJuIHRoaXMudXJsVHJlZT1yLnVybFRyZWUsdGhpcy5tYXRjaChyLnVybFRyZWUucm9vdCk7dGhyb3cgciBpbnN0YW5jZW9mIG9pZT90aGlzLm5vTWF0Y2hFcnJvcihy'@; put 'KTpyfSkpfXByb2Nlc3NTZWdtZW50R3JvdXAoZSx0LHIsaSxvKXtyZXR1cm4gMD09PXIuc2VnbWVudHMubGVuZ3RoJiZyLmhhc0NoaWxkcmVuKCk/dGhpcy5wcm9jZXNzQ2hpbGRyZW4oZSx0LHIsbyk6dGhpcy5wcm9jZXNzU2VnbWVudChlLHQscixyLnNlZ21lbnRzLGksITAsbykucGlwZShF'@; put 'cyhhPT5hIGluc3RhbmNlb2YgYzQ/W2FdOltdKSl9cHJvY2Vzc0NoaWxkcmVuKGUsdCxyLGkpe2NvbnN0IG89W107Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmtleXMoci5jaGlsZHJlbikpInByaW1hcnkiPT09YT9vLnVuc2hpZnQoYSk6by5wdXNoKGEpO3JldHVybiBaMShvKS5waXBlKE5FKGE9'@; put 'Pntjb25zdCBsPXIuY2hpbGRyZW5bYV0sdT1mdW5jdGlvbiBPdXQobixlKXtjb25zdCB0PW4uZmlsdGVyKHI9Pmw0KHIpPT09ZSk7cmV0dXJuIHQucHVzaCguLi5uLmZpbHRlcihyPT5sNChyKSE9PWUpKSx0fSh0LGEpO3JldHVybiB0aGlzLnByb2Nlc3NTZWdtZW50R3JvdXAoZSx1LGwsYSxp'@; put 'KX0pLGZ1bmN0aW9uIGtjdChuLGUpe3JldHVybiBhZChmdW5jdGlvbiBBY3QobixlLHQscixpKXtyZXR1cm4obyxhKT0+e2xldCBsPXQsdT1lLGc9MDtvLnN1YnNjcmliZSh2dShhLEU9Pntjb25zdCBPPWcrKzt1PWw/bih1LEUsTyk6KGw9ITAsRSksciYmYS5uZXh0KHUpfSxpJiYoKCk9Pnts'@; put 'JiZhLm5leHQodSksYS5jb21wbGV0ZSgpfSkpKX19KG4sZSxhcmd1bWVudHMubGVuZ3RoPj0yLCEwKSl9KChhLGwpPT4oYS5wdXNoKC4uLmwpLGEpKSxPVShudWxsKSxmdW5jdGlvbiBSY3QobixlKXtjb25zdCB0PWFyZ3VtZW50cy5sZW5ndGg+PTI7cmV0dXJuIHI9PnIucGlwZShuP3N1KChp'@; put 'LG8pPT5uKGksbyxyKSk6cmEsV3JlKDEpLHQ/T1UoZSk6ZGJlKCgpPT5uZXcgTFUpKX0oKSxHMChhPT57aWYobnVsbD09PWEpcmV0dXJuIFVFKHIpO2NvbnN0IGw9aXdlKGEpO3JldHVybiBmdW5jdGlvbiB4ZHQobil7bi5zb3J0KChlLHQpPT5lLnZhbHVlLm91dGxldD09PVpzPy0xOnQudmFs'@; put 'dWUub3V0bGV0PT09WnM/MTplLnZhbHVlLm91dGxldC5sb2NhbGVDb21wYXJlKHQudmFsdWUub3V0bGV0KSl9KGwpLFBhKGwpfSkpfXByb2Nlc3NTZWdtZW50KGUsdCxyLGksbyxhLGwpe3JldHVybiBaMSh0KS5waXBlKE5FKHU9PnRoaXMucHJvY2Vzc1NlZ21lbnRBZ2FpbnN0Um91dGUodS5f'@; put 'aW5qZWN0b3I/P2UsdCx1LHIsaSxvLGEsbCkucGlwZSh5YihnPT57aWYoZyBpbnN0YW5jZW9mIG9pZSlyZXR1cm4gUGEobnVsbCk7dGhyb3cgZ30pKSksdXYodT0+ISF1KSx5Yih1PT57aWYoZXdlKHUpKXJldHVybiBmdW5jdGlvbiBDZHQobixlLHQpe3JldHVybiAwPT09ZS5sZW5ndGgmJiFu'@; put 'LmNoaWxkcmVuW3RdfShyLGksbyk/UGEobmV3IFNkdCk6VUUocik7dGhyb3cgdX0pKX1wcm9jZXNzU2VnbWVudEFnYWluc3RSb3V0ZShlLHQscixpLG8sYSxsLHUpe3JldHVybiBsNChyKT09PWF8fGEhPT1acyYmWFUoaSxvLHIpP3ZvaWQgMD09PXIucmVkaXJlY3RUbz90aGlzLm1hdGNoU2Vn'@; put 'bWVudEFnYWluc3RSb3V0ZShlLGkscixvLGEsdSk6dGhpcy5hbGxvd1JlZGlyZWN0cyYmbD90aGlzLmV4cGFuZFNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGUsaSx0LHIsbyxhLHUpOlVFKGkpOlVFKGkpfWV4cGFuZFNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGUs'@; put 'dCxyLGksbyxhLGwpe2NvbnN0e21hdGNoZWQ6dSxwYXJhbWV0ZXJzOmcsY29uc3VtZWRTZWdtZW50czpFLHBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzOk8scmVtYWluaW5nU2VnbWVudHM6Wn09bndlKHQsaSxvKTtpZighdSlyZXR1cm4gVUUodCk7InN0cmluZyI9PXR5cGVvZiBpLnJlZGlyZWN0'@; put 'VG8mJiIvIj09PWkucmVkaXJlY3RUb1swXSYmKHRoaXMuYWJzb2x1dGVSZWRpcmVjdENvdW50KyssdGhpcy5hYnNvbHV0ZVJlZGlyZWN0Q291bnQ+MzEmJih0aGlzLmFsbG93UmVkaXJlY3RzPSExKSk7Y29uc3QgZWU9bmV3IFpVKG8sZyxPYmplY3QuZnJlZXplKHsuLi50aGlzLnVybFRyZWUu'@; put 'cXVlcnlQYXJhbXN9KSx0aGlzLnVybFRyZWUuZnJhZ21lbnQsb3dlKGkpLGw0KGkpLGkuY29tcG9uZW50Pz9pLl9sb2FkZWRDb21wb25lbnQ/P251bGwsaSxhd2UoaSkpLHZlPVlVKGVlLGwsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5KTtyZXR1cm4gZWUucGFyYW1zPU9iamVjdC5m'@; put 'cmVlemUodmUucGFyYW1zKSxlZS5kYXRhPU9iamVjdC5mcmVlemUodmUuZGF0YSksdGhpcy5hcHBseVJlZGlyZWN0cy5hcHBseVJlZGlyZWN0Q29tbWFuZHMoRSxpLnJlZGlyZWN0VG8sTyxlZSxlKS5waXBlKG0wKEhlPT50aGlzLmFwcGx5UmVkaXJlY3RzLmxpbmVyYWxpemVTZWdtZW50cyhp'@; put 'LEhlKSksRzAoSGU9PnRoaXMucHJvY2Vzc1NlZ21lbnQoZSxyLHQsSGUuY29uY2F0KFopLGEsITEsbCkpKX1tYXRjaFNlZ21lbnRBZ2FpbnN0Um91dGUoZSx0LHIsaSxvLGEpe2NvbnN0IGw9bWR0KHQscixpLGUpO3JldHVybiIqKiI9PT1yLnBhdGgmJih0LmNoaWxkcmVuPXt9KSxsLnBpcGUo'@; put 'bTAodT0+dS5tYXRjaGVkP3RoaXMuZ2V0Q2hpbGRDb25maWcoZT1yLl9pbmplY3Rvcj8/ZSxyLGkpLnBpcGUobTAoKHtyb3V0ZXM6Z30pPT57Y29uc3QgRT1yLl9sb2FkZWRJbmplY3Rvcj8/ZSx7cGFyYW1ldGVyczpPLGNvbnN1bWVkU2VnbWVudHM6WixyZW1haW5pbmdTZWdtZW50czplZX09'@; put 'dSx2ZT1uZXcgWlUoWixPLE9iamVjdC5mcmVlemUoey4uLnRoaXMudXJsVHJlZS5xdWVyeVBhcmFtc30pLHRoaXMudXJsVHJlZS5mcmFnbWVudCxvd2UociksbDQociksci5jb21wb25lbnQ/P3IuX2xvYWRlZENvbXBvbmVudD8/bnVsbCxyLGF3ZShyKSksTWU9WVUodmUsYSx0aGlzLnBhcmFt'@; put 'c0luaGVyaXRhbmNlU3RyYXRlZ3kpO3ZlLnBhcmFtcz1PYmplY3QuZnJlZXplKE1lLnBhcmFtcyksdmUuZGF0YT1PYmplY3QuZnJlZXplKE1lLmRhdGEpO2NvbnN0e3NlZ21lbnRHcm91cDpIZSxzbGljZWRTZWdtZW50czpXZX09cndlKHQsWixlZSxnKTtpZigwPT09V2UubGVuZ3RoJiZIZS5o'@; put 'YXNDaGlsZHJlbigpKXJldHVybiB0aGlzLnByb2Nlc3NDaGlsZHJlbihFLGcsSGUsdmUpLnBpcGUoRXMoQ3Q9Pm5ldyBjNCh2ZSxDdCkpKTtpZigwPT09Zy5sZW5ndGgmJjA9PT1XZS5sZW5ndGgpcmV0dXJuIFBhKG5ldyBjNCh2ZSxbXSkpO2NvbnN0IGF0PWw0KHIpPT09bztyZXR1cm4gdGhp'@; put 'cy5wcm9jZXNzU2VnbWVudChFLGcsSGUsV2UsYXQ/WnM6bywhMCx2ZSkucGlwZShFcyhDdD0+bmV3IGM0KHZlLEN0IGluc3RhbmNlb2YgYzQ/W0N0XTpbXSkpKX0pKTpVRSh0KSkpfWdldENoaWxkQ29uZmlnKGUsdCxyKXtyZXR1cm4gdC5jaGlsZHJlbj9QYSh7cm91dGVzOnQuY2hpbGRyZW4s'@; put 'aW5qZWN0b3I6ZX0pOnQubG9hZENoaWxkcmVuP3ZvaWQgMCE9PXQuX2xvYWRlZFJvdXRlcz9QYSh7cm91dGVzOnQuX2xvYWRlZFJvdXRlcyxpbmplY3Rvcjp0Ll9sb2FkZWRJbmplY3Rvcn0pOmZ1bmN0aW9uIHVkdChuLGUsdCxyKXtjb25zdCBpPWUuY2FuTG9hZDtyZXR1cm4gdm9pZCAwPT09'@; put 'aXx8MD09PWkubGVuZ3RoP1BhKCEwKTpQYShpLm1hcChhPT57Y29uc3QgbD1CRShhLG4pO3JldHVybiBKOChmdW5jdGlvbiBLdXQobil7cmV0dXJuIG4mJldJKG4uY2FuTG9hZCl9KGwpP2wuY2FuTG9hZChlLHQpOkx1KG4sKCk9PmwoZSx0KSkpfSkpLnBpcGUoakUoKSx0d2UoKSl9KGUsdCxy'@; put 'KS5waXBlKEcwKGk9Pmk/dGhpcy5jb25maWdMb2FkZXIubG9hZENoaWxkcmVuKGUsdCkucGlwZShmMShvPT57dC5fbG9hZGVkUm91dGVzPW8ucm91dGVzLHQuX2xvYWRlZEluamVjdG9yPW8uaW5qZWN0b3J9KSk6ZnVuY3Rpb24gZmR0KCl7cmV0dXJuIGtJKFhiZSghMSxUMy5HdWFyZFJlamVj'@; put 'dGVkKSl9KCkpKTpQYSh7cm91dGVzOltdLGluamVjdG9yOmV9KX19ZnVuY3Rpb24gQWR0KG4pe2NvbnN0IGU9bi52YWx1ZS5yb3V0ZUNvbmZpZztyZXR1cm4gZSYmIiI9PT1lLnBhdGh9ZnVuY3Rpb24gaXdlKG4pe2NvbnN0IGU9W10sdD1uZXcgU2V0O2Zvcihjb25zdCByIG9mIG4pe2lmKCFB'@; put 'ZHQocikpe2UucHVzaChyKTtjb250aW51ZX1jb25zdCBpPWUuZmluZChvPT5yLnZhbHVlLnJvdXRlQ29uZmlnPT09by52YWx1ZS5yb3V0ZUNvbmZpZyk7dm9pZCAwIT09aT8oaS5jaGlsZHJlbi5wdXNoKC4uLnIuY2hpbGRyZW4pLHQuYWRkKGkpKTplLnB1c2gocil9Zm9yKGNvbnN0IHIgb2Yg'@; put 'dCl7Y29uc3QgaT1pd2Uoci5jaGlsZHJlbik7ZS5wdXNoKG5ldyBjNChyLnZhbHVlLGkpKX1yZXR1cm4gZS5maWx0ZXIocj0+IXQuaGFzKHIpKX1mdW5jdGlvbiBvd2Uobil7cmV0dXJuIG4uZGF0YXx8e319ZnVuY3Rpb24gYXdlKG4pe3JldHVybiBuLnJlc29sdmV8fHt9fWZ1bmN0aW9uIHN3'@; put 'ZShuKXtjb25zdCBlPW4uY2hpbGRyZW4ubWFwKHQ9PnN3ZSh0KSkuZmxhdCgpO3JldHVybltuLC4uLmVdfWZ1bmN0aW9uIGxpZShuKXtyZXR1cm4gbTAoZT0+e2NvbnN0IHQ9bihlKTtyZXR1cm4gdD9aMSh0KS5waXBlKEVzKCgpPT5lKSk6UGEoZSl9KX1sZXQgbHdlPSgoKT0+e2NsYXNzIG57'@; put 'YnVpbGRUaXRsZSh0KXtsZXQgcixpPXQucm9vdDtmb3IoO3ZvaWQgMCE9PWk7KXI9dGhpcy5nZXRSZXNvbHZlZFRpdGxlRm9yUm91dGUoaSk/P3IsaT1pLmNoaWxkcmVuLmZpbmQobz0+by5vdXRsZXQ9PT1acyk7cmV0dXJuIHJ9Z2V0UmVzb2x2ZWRUaXRsZUZvclJvdXRlKHQpe3JldHVybiB0'@; put 'LmRhdGFbTEldfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTooKT0+c24oT2R0KSxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxPZHQ9KCgpPT57Y2xhc3MgbiBleHRlbmRz'@; put 'IGx3ZXt0aXRsZTtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudGl0bGU9dH11cGRhdGVUaXRsZSh0KXtjb25zdCByPXRoaXMuYnVpbGRUaXRsZSh0KTt2b2lkIDAhPT1yJiZ0aGlzLnRpdGxlLnNldFRpdGxlKHIpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhy'@; put 'fHxuKShvcihCY3QpKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtjb25zdCB6RT1uZXcgRXIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pih7fSl9KSxRVT1uZXcgRXIo'@; put 'IiIpO2xldCBjaWU9KCgpPT57Y2xhc3Mgbntjb21wb25lbnRMb2FkZXJzPW5ldyBXZWFrTWFwO2NoaWxkcmVuTG9hZGVycz1uZXcgV2Vha01hcDtvbkxvYWRTdGFydExpc3RlbmVyO29uTG9hZEVuZExpc3RlbmVyO2NvbXBpbGVyPXNuKEpldCk7bG9hZENvbXBvbmVudCh0LHIpe2lmKHRoaXMu'@; put 'Y29tcG9uZW50TG9hZGVycy5nZXQocikpcmV0dXJuIHRoaXMuY29tcG9uZW50TG9hZGVycy5nZXQocik7aWYoci5fbG9hZGVkQ29tcG9uZW50KXJldHVybiBQYShyLl9sb2FkZWRDb21wb25lbnQpO3RoaXMub25Mb2FkU3RhcnRMaXN0ZW5lciYmdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyKHIp'@; put 'O2NvbnN0IGk9SjgoTHUodCwoKT0+ci5sb2FkQ29tcG9uZW50KCkpKS5waXBlKEVzKGN3ZSksbTAodXdlKSxmMShhPT57dGhpcy5vbkxvYWRFbmRMaXN0ZW5lciYmdGhpcy5vbkxvYWRFbmRMaXN0ZW5lcihyKSxyLl9sb2FkZWRDb21wb25lbnQ9YX0pLFJJKCgpPT57dGhpcy5jb21wb25lbnRM'@; put 'b2FkZXJzLmRlbGV0ZShyKX0pKSxvPW5ldyB6cmUoaSwoKT0+bmV3IE1yKS5waXBlKFVyZSgpKTtyZXR1cm4gdGhpcy5jb21wb25lbnRMb2FkZXJzLnNldChyLG8pLG99bG9hZENoaWxkcmVuKHQscil7aWYodGhpcy5jaGlsZHJlbkxvYWRlcnMuZ2V0KHIpKXJldHVybiB0aGlzLmNoaWxkcmVu'@; put 'TG9hZGVycy5nZXQocik7aWYoci5fbG9hZGVkUm91dGVzKXJldHVybiBQYSh7cm91dGVzOnIuX2xvYWRlZFJvdXRlcyxpbmplY3RvcjpyLl9sb2FkZWRJbmplY3Rvcn0pO3RoaXMub25Mb2FkU3RhcnRMaXN0ZW5lciYmdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyKHIpO2NvbnN0IG89ZnVuY3Rp'@; put 'b24gTmR0KG4sZSx0LHIpe3JldHVybiBKOChMdSh0LCgpPT5uLmxvYWRDaGlsZHJlbigpKSkucGlwZShFcyhjd2UpLG0wKHV3ZSksRzAoaT0+aSBpbnN0YW5jZW9mIE02ZXx8QXJyYXkuaXNBcnJheShpKT9QYShpKTpaMShlLmNvbXBpbGVNb2R1bGVBc3luYyhpKSkpLEVzKGk9PntyJiZyKG4p'@; put 'O2xldCBvLGEsbD0hMTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKT8oYT1pLCEwKToobz1pLmNyZWF0ZSh0KS5pbmplY3RvcixhPW8uZ2V0KFFVLFtdLHtvcHRpb25hbDohMCxzZWxmOiEwfSkuZmxhdCgpKSx7cm91dGVzOmEubWFwKHJpZSksaW5qZWN0b3I6b319KSl9KHIsdGhpcy5jb21waWxl'@; put 'cix0LHRoaXMub25Mb2FkRW5kTGlzdGVuZXIpLnBpcGUoUkkoKCk9Pnt0aGlzLmNoaWxkcmVuTG9hZGVycy5kZWxldGUocil9KSksYT1uZXcgenJlKG8sKCk9Pm5ldyBNcikucGlwZShVcmUoKSk7cmV0dXJuIHRoaXMuY2hpbGRyZW5Mb2FkZXJzLnNldChyLGEpLGF9c3RhdGljIFx1MDI3NWZh'@; put 'Yz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIGN3ZShuKXtyZXR1cm4gZnVuY3Rpb24gRmR0KG4pe3JldHVybiBuJiYi'@; put 'b2JqZWN0Ij09dHlwZW9mIG4mJiJkZWZhdWx0ImluIG59KG4pP24uZGVmYXVsdDpufWZ1bmN0aW9uIHV3ZShuKXtyZXR1cm4gUGEobil9bGV0IHVpZT0oKCk9PntjbGFzcyBue3N0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9'@; put 'Sm4oe3Rva2VuOm4sZmFjdG9yeTooKT0+c24oUGR0KSxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxQZHQ9KCgpPT57Y2xhc3MgbntzaG91bGRQcm9jZXNzVXJsKHQpe3JldHVybiEwfWV4dHJhY3QodCl7cmV0dXJuIHR9bWVyZ2UodCxyKXtyZXR1cm4gdH1zdGF0aWMgXHUwMjc1'@; put 'ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCk7Y29uc3QgZHdlPW5ldyBFcigiIiksaHdlPW5ldyBFcigiIik7ZnVuY3Rpb24gSGR0'@; put 'KG4sZSx0KXtjb25zdCByPW4uZ2V0KGh3ZSksaT1uLmdldChUbCk7aWYoIWkuc3RhcnRWaWV3VHJhbnNpdGlvbnx8ci5za2lwTmV4dFRyYW5zaXRpb24pcmV0dXJuIHIuc2tpcE5leHRUcmFuc2l0aW9uPSExLG5ldyBQcm9taXNlKGc9PnNldFRpbWVvdXQoZykpO2xldCBvO2NvbnN0IGE9bmV3'@; put 'IFByb21pc2UoZz0+e289Z30pLGw9aS5zdGFydFZpZXdUcmFuc2l0aW9uKCgpPT4obygpLGZ1bmN0aW9uIFZkdChuKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e0g4KHtyZWFkOigpPT5zZXRUaW1lb3V0KGUpfSx7aW5qZWN0b3I6bn0pfSl9KG4pKSk7bC5yZWFkeS5jYXRjaChnPT57fSk7Y29u'@; put 'c3R7b25WaWV3VHJhbnNpdGlvbkNyZWF0ZWQ6dX09cjtyZXR1cm4gdSYmTHUobiwoKT0+dSh7dHJhbnNpdGlvbjpsLGZyb206ZSx0bzp0fSkpLGF9Y29uc3QgZndlPW5ldyBFcigiIik7bGV0IGRpZT0oKCk9PntjbGFzcyBue2N1cnJlbnROYXZpZ2F0aW9uPUIxKG51bGwse2VxdWFsOigpPT4h'@; put 'MX0pO2N1cnJlbnRUcmFuc2l0aW9uPW51bGw7bGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uPW51bGw7ZXZlbnRzPW5ldyBNcjt0cmFuc2l0aW9uQWJvcnRXaXRoRXJyb3JTdWJqZWN0PW5ldyBNcjtjb25maWdMb2FkZXI9c24oY2llKTtlbnZpcm9ubWVudEluamVjdG9yPXNuKG5sKTtkZXN0cm95'@; put 'UmVmPXNuKE0yKTt1cmxTZXJpYWxpemVyPXNuKE5JKTtyb290Q29udGV4dHM9c24oQkkpO2xvY2F0aW9uPXNuKFYwKTtpbnB1dEJpbmRpbmdFbmFibGVkPW51bGwhPT1zbihHVSx7b3B0aW9uYWw6ITB9KTt0aXRsZVN0cmF0ZWd5PXNuKGx3ZSk7b3B0aW9ucz1zbih6RSx7b3B0aW9uYWw6ITB9'@; put 'KXx8e307cGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneT10aGlzLm9wdGlvbnMucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneXx8ImVtcHR5T25seSI7dXJsSGFuZGxpbmdTdHJhdGVneT1zbih1aWUpO2NyZWF0ZVZpZXdUcmFuc2l0aW9uPXNuKGR3ZSx7b3B0aW9uYWw6ITB9KTtuYXZpZ2F0aW9u'@; put 'RXJyb3JIYW5kbGVyPXNuKGZ3ZSx7b3B0aW9uYWw6ITB9KTtuYXZpZ2F0aW9uSWQ9MDtnZXQgaGFzUmVxdWVzdGVkTmF2aWdhdGlvbigpe3JldHVybiAwIT09dGhpcy5uYXZpZ2F0aW9uSWR9dHJhbnNpdGlvbnM7YWZ0ZXJQcmVhY3RpdmF0aW9uPSgpPT5QYSh2b2lkIDApO3Jvb3RDb21wb25l'@; put 'bnRUeXBlPW51bGw7ZGVzdHJveWVkPSExO2NvbnN0cnVjdG9yKCl7dGhpcy5jb25maWdMb2FkZXIub25Mb2FkRW5kTGlzdGVuZXI9aT0+dGhpcy5ldmVudHMubmV4dChuZXcgRXV0KGkpKSx0aGlzLmNvbmZpZ0xvYWRlci5vbkxvYWRTdGFydExpc3RlbmVyPWk9PnRoaXMuZXZlbnRzLm5leHQo'@; put 'bmV3IFN1dChpKSksdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKT0+e3RoaXMuZGVzdHJveWVkPSEwfSl9Y29tcGxldGUoKXt0aGlzLnRyYW5zaXRpb25zPy5jb21wbGV0ZSgpfWhhbmRsZU5hdmlnYXRpb25SZXF1ZXN0KHQpe2NvbnN0IHI9Kyt0aGlzLm5hdmlnYXRpb25JZDtOdSgoKT0+'@; put 'e3RoaXMudHJhbnNpdGlvbnM/Lm5leHQoey4uLnQsZXh0cmFjdGVkVXJsOnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5leHRyYWN0KHQucmF3VXJsKSx0YXJnZXRTbmFwc2hvdDpudWxsLHRhcmdldFJvdXRlclN0YXRlOm51bGwsZ3VhcmRzOntjYW5BY3RpdmF0ZUNoZWNrczpbXSxjYW5EZWFj'@; put 'dGl2YXRlQ2hlY2tzOltdfSxndWFyZHNSZXN1bHQ6bnVsbCxhYm9ydENvbnRyb2xsZXI6bmV3IEFib3J0Q29udHJvbGxlcixpZDpyfSl9KX1zZXR1cE5hdmlnYXRpb25zKHQpe3JldHVybiB0aGlzLnRyYW5zaXRpb25zPW5ldyAkaShudWxsKSx0aGlzLnRyYW5zaXRpb25zLnBpcGUoc3Uocj0+'@; put 'bnVsbCE9PXIpLG0wKHI9PntsZXQgaT0hMTtyZXR1cm4gUGEocikucGlwZShtMChvPT57aWYodGhpcy5uYXZpZ2F0aW9uSWQ+ci5pZClyZXR1cm4gdGhpcy5jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbihyLCIiLFQzLlN1cGVyc2VkZWRCeU5ld05hdmlnYXRpb24pLEVwO3RoaXMuY3VycmVu'@; put 'dFRyYW5zaXRpb249cix0aGlzLmN1cnJlbnROYXZpZ2F0aW9uLnNldCh7aWQ6by5pZCxpbml0aWFsVXJsOm8ucmF3VXJsLGV4dHJhY3RlZFVybDpvLmV4dHJhY3RlZFVybCx0YXJnZXRCcm93c2VyVXJsOiJzdHJpbmciPT10eXBlb2Ygby5leHRyYXMuYnJvd3NlclVybD90aGlzLnVybFNlcmlh'@; put 'bGl6ZXIucGFyc2Uoby5leHRyYXMuYnJvd3NlclVybCk6by5leHRyYXMuYnJvd3NlclVybCx0cmlnZ2VyOm8uc291cmNlLGV4dHJhczpvLmV4dHJhcyxwcmV2aW91c05hdmlnYXRpb246dGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb24/ey4uLnRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0'@; put 'aW9uLHByZXZpb3VzTmF2aWdhdGlvbjpudWxsfTpudWxsLGFib3J0OigpPT5vLmFib3J0Q29udHJvbGxlci5hYm9ydCgpfSk7Y29uc3QgYT0hdC5uYXZpZ2F0ZWR8fHRoaXMuaXNVcGRhdGluZ0ludGVybmFsU3RhdGUoKXx8dGhpcy5pc1VwZGF0ZWRCcm93c2VyVXJsKCk7aWYoIWEmJiJyZWxv'@; put 'YWQiIT09KG8uZXh0cmFzLm9uU2FtZVVybE5hdmlnYXRpb24/P3Qub25TYW1lVXJsTmF2aWdhdGlvbikpcmV0dXJuIHRoaXMuZXZlbnRzLm5leHQobmV3IFBFKG8uaWQsdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShvLnJhd1VybCksIiIselUuSWdub3JlZFNhbWVVcmxOYXZpZ2F0aW9u'@; put 'KSksby5yZXNvbHZlKCExKSxFcDtpZih0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChvLnJhd1VybCkpcmV0dXJuIFBhKG8pLnBpcGUobTAodT0+KHRoaXMuZXZlbnRzLm5leHQobmV3IFVVKHUuaWQsdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZSh1LmV4dHJh'@; put 'Y3RlZFVybCksdS5zb3VyY2UsdS5yZXN0b3JlZFN0YXRlKSksdS5pZCE9PXRoaXMubmF2aWdhdGlvbklkP0VwOlByb21pc2UucmVzb2x2ZSh1KSkpLGZ1bmN0aW9uIGtkdChuLGUsdCxyLGksbyl7cmV0dXJuIEcwKGE9PmZ1bmN0aW9uIEVkdChuLGUsdCxyLGksbyxhPSJlbXB0eU9ubHkiKXty'@; put 'ZXR1cm4gbmV3IFRkdChuLGUsdCxyLGksYSxvKS5yZWNvZ25pemUoKX0obixlLHQscixhLmV4dHJhY3RlZFVybCxpLG8pLnBpcGUoRXMoKHtzdGF0ZTpsLHRyZWU6dX0pPT4oey4uLmEsdGFyZ2V0U25hcHNob3Q6bCx1cmxBZnRlclJlZGlyZWN0czp1fSkpKSl9KHRoaXMuZW52aXJvbm1lbnRJ'@; put 'bmplY3Rvcix0aGlzLmNvbmZpZ0xvYWRlcix0aGlzLnJvb3RDb21wb25lbnRUeXBlLHQuY29uZmlnLHRoaXMudXJsU2VyaWFsaXplcix0aGlzLnBhcmFtc0luaGVyaXRhbmNlU3RyYXRlZ3kpLGYxKHU9PntyLnRhcmdldFNuYXBzaG90PXUudGFyZ2V0U25hcHNob3Qsci51cmxBZnRlclJlZGly'@; put 'ZWN0cz11LnVybEFmdGVyUmVkaXJlY3RzLHRoaXMuY3VycmVudE5hdmlnYXRpb24udXBkYXRlKEU9PihFLmZpbmFsVXJsPXUudXJsQWZ0ZXJSZWRpcmVjdHMsRSkpO2NvbnN0IGc9bmV3IEJiZSh1LmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodS5leHRyYWN0ZWRVcmwpLHRoaXMu'@; put 'dXJsU2VyaWFsaXplci5zZXJpYWxpemUodS51cmxBZnRlclJlZGlyZWN0cyksdS50YXJnZXRTbmFwc2hvdCk7dGhpcy5ldmVudHMubmV4dChnKX0pKTtpZihhJiZ0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChvLmN1cnJlbnRSYXdVcmwpKXtjb25zdHtpZDp1LGV4'@; put 'dHJhY3RlZFVybDpnLHNvdXJjZTpFLHJlc3RvcmVkU3RhdGU6TyxleHRyYXM6Wn09byxlZT1uZXcgVVUodSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKGcpLEUsTyk7dGhpcy5ldmVudHMubmV4dChlZSk7Y29uc3QgdmU9V2JlKHRoaXMucm9vdENvbXBvbmVudFR5cGUpLnNuYXBzaG90'@; put 'O3JldHVybiB0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPXI9ey4uLm8sdGFyZ2V0U25hcHNob3Q6dmUsdXJsQWZ0ZXJSZWRpcmVjdHM6ZyxleHRyYXM6ey4uLlosc2tpcExvY2F0aW9uQ2hhbmdlOiExLHJlcGxhY2VVcmw6ITF9fSx0aGlzLmN1cnJlbnROYXZpZ2F0aW9uLnVwZGF0ZShNZT0+KE1l'@; put 'LmZpbmFsVXJsPWcsTWUpKSxQYShyKX1yZXR1cm4gdGhpcy5ldmVudHMubmV4dChuZXcgUEUoby5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG8uZXh0cmFjdGVkVXJsKSwiIix6VS5JZ25vcmVkQnlVcmxIYW5kbGluZ1N0cmF0ZWd5KSksby5yZXNvbHZlKCExKSxFcH0pLGYxKG89'@; put 'Pntjb25zdCBhPW5ldyB5dXQoby5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG8uZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG8udXJsQWZ0ZXJSZWRpcmVjdHMpLG8udGFyZ2V0U25hcHNob3QpO3RoaXMuZXZlbnRzLm5leHQoYSl9KSxFcyhvPT4o'@; put 'dGhpcy5jdXJyZW50VHJhbnNpdGlvbj1yPXsuLi5vLGd1YXJkczpZdXQoby50YXJnZXRTbmFwc2hvdCxvLmN1cnJlbnRTbmFwc2hvdCx0aGlzLnJvb3RDb250ZXh0cyl9LHIpKSxmdW5jdGlvbiBuZHQobixlKXtyZXR1cm4gRzAodD0+e2NvbnN0e3RhcmdldFNuYXBzaG90OnIsY3VycmVudFNu'@; put 'YXBzaG90OmksZ3VhcmRzOntjYW5BY3RpdmF0ZUNoZWNrczpvLGNhbkRlYWN0aXZhdGVDaGVja3M6YX19PXQ7cmV0dXJuIDA9PT1hLmxlbmd0aCYmMD09PW8ubGVuZ3RoP1BhKHsuLi50LGd1YXJkc1Jlc3VsdDohMH0pOmZ1bmN0aW9uIHJkdChuLGUsdCxyKXtyZXR1cm4gWjEobikucGlwZShH'@; put 'MChpPT5mdW5jdGlvbiBjZHQobixlLHQscixpKXtjb25zdCBvPWUmJmUucm91dGVDb25maWc/ZS5yb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlOm51bGw7cmV0dXJuIG8mJjAhPT1vLmxlbmd0aD9QYShvLm1hcChsPT57Y29uc3QgdT1IRShlKT8/aSxnPUJFKGwsdSk7cmV0dXJuIEo4KGZ1bmN0'@; put 'aW9uIEp1dChuKXtyZXR1cm4gbiYmV0kobi5jYW5EZWFjdGl2YXRlKX0oZyk/Zy5jYW5EZWFjdGl2YXRlKG4sZSx0LHIpOkx1KHUsKCk9PmcobixlLHQscikpKS5waXBlKHV2KCkpfSkpLnBpcGUoakUoKSk6UGEoITApfShpLmNvbXBvbmVudCxpLnJvdXRlLHQsZSxyKSksdXYoaT0+ITAhPT1p'@; put 'LCEwKSl9KGEscixpLG4pLnBpcGUoRzAobD0+bCYmZnVuY3Rpb24gcXV0KG4pe3JldHVybiJib29sZWFuIj09dHlwZW9mIG59KGwpP2Z1bmN0aW9uIGlkdChuLGUsdCxyKXtyZXR1cm4gWjEoZSkucGlwZShORShpPT5CcmUoZnVuY3Rpb24gYWR0KG4sZSl7cmV0dXJuIG51bGwhPT1uJiZlJiZl'@; put 'KG5ldyBNdXQobikpLFBhKCEwKX0oaS5yb3V0ZS5wYXJlbnQsciksZnVuY3Rpb24gb2R0KG4sZSl7cmV0dXJuIG51bGwhPT1uJiZlJiZlKG5ldyB4dXQobikpLFBhKCEwKX0oaS5yb3V0ZSxyKSxmdW5jdGlvbiBsZHQobixlLHQpe2NvbnN0IHI9ZVtlLmxlbmd0aC0xXSxvPWUuc2xpY2UoMCxl'@; put 'Lmxlbmd0aC0xKS5yZXZlcnNlKCkubWFwKGE9PmZ1bmN0aW9uIFp1dChuKXtjb25zdCBlPW4ucm91dGVDb25maWc/bi5yb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkOm51bGw7cmV0dXJuIGUmJjAhPT1lLmxlbmd0aD97bm9kZTpuLGd1YXJkczplfTpudWxsfShhKSkuZmlsdGVyKGE9Pm51'@; put 'bGwhPT1hKS5tYXAoYT0+anJlKCgpPT5QYShhLmd1YXJkcy5tYXAodT0+e2NvbnN0IGc9SEUoYS5ub2RlKT8/dCxFPUJFKHUsZyk7cmV0dXJuIEo4KGZ1bmN0aW9uIFF1dChuKXtyZXR1cm4gbiYmV0kobi5jYW5BY3RpdmF0ZUNoaWxkKX0oRSk/RS5jYW5BY3RpdmF0ZUNoaWxkKHIsbik6THUo'@; put 'ZywoKT0+RShyLG4pKSkucGlwZSh1digpKX0pKS5waXBlKGpFKCkpKSk7cmV0dXJuIFBhKG8pLnBpcGUoakUoKSl9KG4saS5wYXRoLHQpLGZ1bmN0aW9uIHNkdChuLGUsdCl7Y29uc3Qgcj1lLnJvdXRlQ29uZmlnP2Uucm91dGVDb25maWcuY2FuQWN0aXZhdGU6bnVsbDtpZighcnx8MD09PXIu'@; put 'bGVuZ3RoKXJldHVybiBQYSghMCk7Y29uc3QgaT1yLm1hcChvPT5qcmUoKCk9Pntjb25zdCBhPUhFKGUpPz90LGw9QkUobyxhKTtyZXR1cm4gSjgoZnVuY3Rpb24gWHV0KG4pe3JldHVybiBuJiZXSShuLmNhbkFjdGl2YXRlKX0obCk/bC5jYW5BY3RpdmF0ZShlLG4pOkx1KGEsKCk9PmwoZSxu'@; put 'KSkpLnBpcGUodXYoKSl9KSk7cmV0dXJuIFBhKGkpLnBpcGUoakUoKSl9KG4saS5yb3V0ZSx0KSkpLHV2KGk9PiEwIT09aSwhMCkpfShyLG8sbixlKTpQYShsKSksRXMobD0+KHsuLi50LGd1YXJkc1Jlc3VsdDpsfSkpKX0pfSh0aGlzLmVudmlyb25tZW50SW5qZWN0b3Isbz0+dGhpcy5ldmVu'@; put 'dHMubmV4dChvKSksZjEobz0+e2lmKHIuZ3VhcmRzUmVzdWx0PW8uZ3VhcmRzUmVzdWx0LG8uZ3VhcmRzUmVzdWx0JiYiYm9vbGVhbiIhPXR5cGVvZiBvLmd1YXJkc1Jlc3VsdCl0aHJvdyAkVSgwLG8uZ3VhcmRzUmVzdWx0KTtjb25zdCBhPW5ldyBidXQoby5pZCx0aGlzLnVybFNlcmlhbGl6'@; put 'ZXIuc2VyaWFsaXplKG8uZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG8udXJsQWZ0ZXJSZWRpcmVjdHMpLG8udGFyZ2V0U25hcHNob3QsISFvLmd1YXJkc1Jlc3VsdCk7dGhpcy5ldmVudHMubmV4dChhKX0pLHN1KG89PiEhby5ndWFyZHNSZXN1bHR8fCh0aGlz'@; put 'LmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKG8sIiIsVDMuR3VhcmRSZWplY3RlZCksITEpKSxsaWUobz0+e2lmKDAhPT1vLmd1YXJkcy5jYW5BY3RpdmF0ZUNoZWNrcy5sZW5ndGgpcmV0dXJuIFBhKG8pLnBpcGUoZjEoYT0+e2NvbnN0IGw9bmV3IHd1dChhLmlkLHRoaXMudXJsU2VyaWFs'@; put 'aXplci5zZXJpYWxpemUoYS5leHRyYWN0ZWRVcmwpLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoYS51cmxBZnRlclJlZGlyZWN0cyksYS50YXJnZXRTbmFwc2hvdCk7dGhpcy5ldmVudHMubmV4dChsKX0pLG0wKGE9PntsZXQgbD0hMTtyZXR1cm4gUGEoYSkucGlwZShmdW5jdGlvbiBS'@; put 'ZHQobixlKXtyZXR1cm4gRzAodD0+e2NvbnN0e3RhcmdldFNuYXBzaG90OnIsZ3VhcmRzOntjYW5BY3RpdmF0ZUNoZWNrczppfX09dDtpZighaS5sZW5ndGgpcmV0dXJuIFBhKHQpO2NvbnN0IG89bmV3IFNldChpLm1hcCh1PT51LnJvdXRlKSksYT1uZXcgU2V0O2Zvcihjb25zdCB1IG9mIG8p'@; put 'aWYoIWEuaGFzKHUpKWZvcihjb25zdCBnIG9mIHN3ZSh1KSlhLmFkZChnKTtsZXQgbD0wO3JldHVybiBaMShhKS5waXBlKE5FKHU9Pm8uaGFzKHUpP2Z1bmN0aW9uIElkdChuLGUsdCxyKXtjb25zdCBpPW4ucm91dGVDb25maWcsbz1uLl9yZXNvbHZlO3JldHVybiB2b2lkIDAhPT1pPy50aXRs'@; put 'ZSYmIUdiZShpKSYmKG9bTEldPWkudGl0bGUpLGpyZSgoKT0+KG4uZGF0YT1ZVShuLG4ucGFyZW50LHQpLnJlc29sdmUsZnVuY3Rpb24gRGR0KG4sZSx0LHIpe2NvbnN0IGk9WXJlKG4pO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gUGEoe30pO2NvbnN0IG89e307cmV0dXJuIFoxKGkpLnBpcGUo'@; put 'RzAoYT0+ZnVuY3Rpb24gTGR0KG4sZSx0LHIpe2NvbnN0IGk9SEUoZSk/P3Isbz1CRShuLGkpO3JldHVybiBKOChvLnJlc29sdmU/by5yZXNvbHZlKGUsdCk6THUoaSwoKT0+byhlLHQpKSl9KG5bYV0sZSx0LHIpLnBpcGUodXYoKSxmMShsPT57aWYobCBpbnN0YW5jZW9mIGlpZSl0aHJvdyAk'@; put 'VShuZXcgRlUsbCk7b1thXT1sfSkpKSxXcmUoMSksRXMoKCk9Pm8pLHliKGE9PmV3ZShhKT9FcDprSShhKSkpfShvLG4sZSxyKS5waXBlKEVzKGE9PihuLl9yZXNvbHZlZERhdGE9YSxuLmRhdGE9ey4uLm4uZGF0YSwuLi5hfSxudWxsKSkpKSl9KHUscixuLGUpOih1LmRhdGE9WVUodSx1LnBh'@; put 'cmVudCxuKS5yZXNvbHZlLFBhKHZvaWQgMCkpKSxmMSgoKT0+bCsrKSxXcmUoMSksRzAodT0+bD09PWEuc2l6ZT9QYSh0KTpFcCkpfSl9KHRoaXMucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSx0aGlzLmVudmlyb25tZW50SW5qZWN0b3IpLGYxKHtuZXh0OigpPT5sPSEwLGNvbXBsZXRlOigp'@; put 'PT57bHx8dGhpcy5jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbihhLCIiLFQzLk5vRGF0YUZyb21SZXNvbHZlcil9fSkpfSksZjEoYT0+e2NvbnN0IGw9bmV3IEN1dChhLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoYS5leHRyYWN0ZWRVcmwpLHRoaXMudXJsU2VyaWFsaXplci5z'@; put 'ZXJpYWxpemUoYS51cmxBZnRlclJlZGlyZWN0cyksYS50YXJnZXRTbmFwc2hvdCk7dGhpcy5ldmVudHMubmV4dChsKX0pKX0pLGxpZShvPT57Y29uc3QgYT1sPT57Y29uc3QgdT1bXTtpZihsLnJvdXRlQ29uZmlnPy5sb2FkQ29tcG9uZW50KXtjb25zdCBnPUhFKGwpPz90aGlzLmVudmlyb25t'@; put 'ZW50SW5qZWN0b3I7dS5wdXNoKHRoaXMuY29uZmlnTG9hZGVyLmxvYWRDb21wb25lbnQoZyxsLnJvdXRlQ29uZmlnKS5waXBlKGYxKEU9PntsLmNvbXBvbmVudD1FfSksRXMoKCk9Pnt9KSkpfWZvcihjb25zdCBnIG9mIGwuY2hpbGRyZW4pdS5wdXNoKC4uLmEoZykpO3JldHVybiB1fTtyZXR1'@; put 'cm4gX2IoYShvLnRhcmdldFNuYXBzaG90LnJvb3QpKS5waXBlKE9VKG51bGwpLE1wKDEpKX0pLGxpZSgoKT0+dGhpcy5hZnRlclByZWFjdGl2YXRpb24oKSksbTAoKCk9Pntjb25zdHtjdXJyZW50U25hcHNob3Q6byx0YXJnZXRTbmFwc2hvdDphfT1yLGw9dGhpcy5jcmVhdGVWaWV3VHJhbnNp'@; put 'dGlvbj8uKHRoaXMuZW52aXJvbm1lbnRJbmplY3RvcixvLnJvb3QsYS5yb290KTtyZXR1cm4gbD9aMShsKS5waXBlKEVzKCgpPT5yKSk6UGEocil9KSxFcyhvPT57Y29uc3QgYT1mdW5jdGlvbiBWdXQobixlLHQpe2NvbnN0IHI9akkobixlLl9yb290LHQ/dC5fcm9vdDp2b2lkIDApO3JldHVy'@; put 'biBuZXcgemJlKHIsZSl9KHQucm91dGVSZXVzZVN0cmF0ZWd5LG8udGFyZ2V0U25hcHNob3Qsby5jdXJyZW50Um91dGVyU3RhdGUpO3JldHVybiB0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPXI9ey4uLm8sdGFyZ2V0Um91dGVyU3RhdGU6YX0sdGhpcy5jdXJyZW50TmF2aWdhdGlvbi51cGRhdGUo'@; put 'bD0+KGwudGFyZ2V0Um91dGVyU3RhdGU9YSxsKSkscn0pLGYxKCgpPT57dGhpcy5ldmVudHMubmV4dChuZXcgWHJlKX0pLCgobixlLHQscik9PkVzKGk9PihuZXcgV3V0KGUsaS50YXJnZXRSb3V0ZXJTdGF0ZSxpLmN1cnJlbnRSb3V0ZXJTdGF0ZSx0LHIpLmFjdGl2YXRlKG4pLGkpKSkodGhp'@; put 'cy5yb290Q29udGV4dHMsdC5yb3V0ZVJldXNlU3RyYXRlZ3ksbz0+dGhpcy5ldmVudHMubmV4dChvKSx0aGlzLmlucHV0QmluZGluZ0VuYWJsZWQpLE1wKDEpLHYwKG5ldyBobyhvPT57Y29uc3QgYT1yLmFib3J0Q29udHJvbGxlci5zaWduYWwsbD0oKT0+by5uZXh0KCk7cmV0dXJuIGEuYWRk'@; put 'RXZlbnRMaXN0ZW5lcigiYWJvcnQiLGwpLCgpPT5hLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixsKX0pLnBpcGUoc3UoKCk9PiFpJiYhci50YXJnZXRSb3V0ZXJTdGF0ZSksZjEoKCk9Pnt0aGlzLmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKHIsci5hYm9ydENvbnRyb2xsZXIuc2ln'@; put 'bmFsLnJlYXNvbisiIixUMy5BYm9ydGVkKX0pKSksZjEoe25leHQ6bz0+e2k9ITAsdGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb249TnUodGhpcy5jdXJyZW50TmF2aWdhdGlvbiksdGhpcy5ldmVudHMubmV4dChuZXcgQjUoby5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG8u'@; put 'ZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG8udXJsQWZ0ZXJSZWRpcmVjdHMpKSksdGhpcy50aXRsZVN0cmF0ZWd5Py51cGRhdGVUaXRsZShvLnRhcmdldFJvdXRlclN0YXRlLnNuYXBzaG90KSxvLnJlc29sdmUoITApfSxjb21wbGV0ZTooKT0+e2k9ITB9fSks'@; put 'djAodGhpcy50cmFuc2l0aW9uQWJvcnRXaXRoRXJyb3JTdWJqZWN0LnBpcGUoZjEobz0+e3Rocm93IG99KSkpLFJJKCgpPT57aXx8dGhpcy5jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbihyLCIiLFQzLlN1cGVyc2VkZWRCeU5ld05hdmlnYXRpb24pLHRoaXMuY3VycmVudFRyYW5zaXRpb24/'@; put 'LmlkPT09ci5pZCYmKHRoaXMuY3VycmVudE5hdmlnYXRpb24uc2V0KG51bGwpLHRoaXMuY3VycmVudFRyYW5zaXRpb249bnVsbCl9KSx5YihvPT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuIHIucmVzb2x2ZSghMSksRXA7aWYoaT0hMCxRYmUobykpdGhpcy5ldmVudHMubmV4dChuZXcgU2Io'@; put 'ci5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHIuZXh0cmFjdGVkVXJsKSxvLm1lc3NhZ2Usby5jYW5jZWxsYXRpb25Db2RlKSksZnVuY3Rpb24gVXV0KG4pe3JldHVybiBRYmUobikmJkNiKG4udXJsKX0obyk/dGhpcy5ldmVudHMubmV4dChuZXcgV1Uoby51cmwsby5uYXZpZ2F0'@; put 'aW9uQmVoYXZpb3JPcHRpb25zKSk6ci5yZXNvbHZlKCExKTtlbHNle2NvbnN0IGE9bmV3IEtyZShyLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoci5leHRyYWN0ZWRVcmwpLG8sci50YXJnZXRTbmFwc2hvdD8/dm9pZCAwKTt0cnl7Y29uc3QgbD1MdSh0aGlzLmVudmlyb25tZW50'@; put 'SW5qZWN0b3IsKCk9PnRoaXMubmF2aWdhdGlvbkVycm9ySGFuZGxlcj8uKGEpKTtpZighKGwgaW5zdGFuY2VvZiBpaWUpKXRocm93IHRoaXMuZXZlbnRzLm5leHQoYSksbzt7Y29uc3R7bWVzc2FnZTp1LGNhbmNlbGxhdGlvbkNvZGU6Z309JFUoMCxsKTt0aGlzLmV2ZW50cy5uZXh0KG5ldyBT'@; put 'YihyLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoci5leHRyYWN0ZWRVcmwpLHUsZykpLHRoaXMuZXZlbnRzLm5leHQobmV3IFdVKGwucmVkaXJlY3RUbyxsLm5hdmlnYXRpb25CZWhhdmlvck9wdGlvbnMpKX19Y2F0Y2gobCl7dGhpcy5vcHRpb25zLnJlc29sdmVOYXZpZ2F0aW9u'@; put 'UHJvbWlzZU9uRXJyb3I/ci5yZXNvbHZlKCExKTpyLnJlamVjdChsKX19cmV0dXJuIEVwfSkpfSkpfWNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKHQscixpKXtjb25zdCBvPW5ldyBTYih0LmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodC5leHRyYWN0ZWRVcmwpLHIsaSk7dGhp'@; put 'cy5ldmVudHMubmV4dChvKSx0LnJlc29sdmUoITEpfWlzVXBkYXRpbmdJbnRlcm5hbFN0YXRlKCl7cmV0dXJuIHRoaXMuY3VycmVudFRyYW5zaXRpb24/LmV4dHJhY3RlZFVybC50b1N0cmluZygpIT09dGhpcy5jdXJyZW50VHJhbnNpdGlvbj8uY3VycmVudFVybFRyZWUudG9TdHJpbmcoKX1p'@; put 'c1VwZGF0ZWRCcm93c2VyVXJsKCl7Y29uc3QgdD10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UodGhpcy5sb2NhdGlvbi5wYXRoKCEwKSkpLHI9TnUodGhpcy5jdXJyZW50TmF2aWdhdGlvbiksaT1yPy50YXJnZXRCcm93c2VyVXJsPz9y'@; put 'Py5leHRyYWN0ZWRVcmw7cmV0dXJuIHQudG9TdHJpbmcoKSE9PWk/LnRvU3RyaW5nKCkmJiFyPy5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9y'@; put 'eTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtmdW5jdGlvbiBCZHQobil7cmV0dXJuIG4hPT1WSX1sZXQgamR0PSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1K'@; put 'bih7dG9rZW46bixmYWN0b3J5OigpPT5zbih6ZHQpLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2NsYXNzIFVkdHtzaG91bGREZXRhY2goZSl7cmV0dXJuITF9c3RvcmUoZSx0KXt9c2hvdWxkQXR0YWNoKGUpe3JldHVybiExfXJldHJpZXZlKGUpe3JldHVybiBudWxsfXNob3Vs'@; put 'ZFJldXNlUm91dGUoZSx0KXtyZXR1cm4gZS5yb3V0ZUNvbmZpZz09PXQucm91dGVDb25maWd9fWxldCB6ZHQ9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFVkdHtzdGF0aWMgXHUwMjc1ZmFjPSgoKT0+e2xldCB0O3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4odHx8KHQ9d2EobikpKShpfHxuKX19'@; put 'KSgpO3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCkscHdlPSgoKT0+e2NsYXNzIG57dXJsU2VyaWFsaXplcj1zbihOSSk7b3B0aW9ucz1zbih6RSx7b3B0aW9uYWw6ITB9KXx8e307Y2FuY2Vs'@; put 'ZWROYXZpZ2F0aW9uUmVzb2x1dGlvbj10aGlzLm9wdGlvbnMuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbnx8InJlcGxhY2UiO2xvY2F0aW9uPXNuKFYwKTt1cmxIYW5kbGluZ1N0cmF0ZWd5PXNuKHVpZSk7dXJsVXBkYXRlU3RyYXRlZ3k9dGhpcy5vcHRpb25zLnVybFVwZGF0ZVN0cmF0'@; put 'ZWd5fHwiZGVmZXJyZWQiO2N1cnJlbnRVcmxUcmVlPW5ldyBiYjtnZXRDdXJyZW50VXJsVHJlZSgpe3JldHVybiB0aGlzLmN1cnJlbnRVcmxUcmVlfXJhd1VybFRyZWU9dGhpcy5jdXJyZW50VXJsVHJlZTtnZXRSYXdVcmxUcmVlKCl7cmV0dXJuIHRoaXMucmF3VXJsVHJlZX1jcmVhdGVCcm93'@; put 'c2VyUGF0aCh7ZmluYWxVcmw6dCxpbml0aWFsVXJsOnIsdGFyZ2V0QnJvd3NlclVybDppfSl7Y29uc3Qgbz12b2lkIDAhPT10P3RoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZSh0LHIpOnIsYT1pPz9vO3JldHVybiBhIGluc3RhbmNlb2YgYmI/dGhpcy51cmxTZXJpYWxpemVyLnNlcmlh'@; put 'bGl6ZShhKTphfWNvbW1pdFRyYW5zaXRpb24oe3RhcmdldFJvdXRlclN0YXRlOnQsZmluYWxVcmw6cixpbml0aWFsVXJsOml9KXtyJiZ0Pyh0aGlzLmN1cnJlbnRVcmxUcmVlPXIsdGhpcy5yYXdVcmxUcmVlPXRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZShyLGkpLHRoaXMucm91dGVy'@; put 'U3RhdGU9dCk6dGhpcy5yYXdVcmxUcmVlPWl9cm91dGVyU3RhdGU9V2JlKG51bGwpO2dldFJvdXRlclN0YXRlKCl7cmV0dXJuIHRoaXMucm91dGVyU3RhdGV9c3RhdGVNZW1lbnRvPXRoaXMuY3JlYXRlU3RhdGVNZW1lbnRvKCk7dXBkYXRlU3RhdGVNZW1lbnRvKCl7dGhpcy5zdGF0ZU1lbWVu'@; put 'dG89dGhpcy5jcmVhdGVTdGF0ZU1lbWVudG8oKX1jcmVhdGVTdGF0ZU1lbWVudG8oKXtyZXR1cm57cmF3VXJsVHJlZTp0aGlzLnJhd1VybFRyZWUsY3VycmVudFVybFRyZWU6dGhpcy5jdXJyZW50VXJsVHJlZSxyb3V0ZXJTdGF0ZTp0aGlzLnJvdXRlclN0YXRlfX1yZXNldEludGVybmFsU3Rh'@; put 'dGUoe2ZpbmFsVXJsOnR9KXt0aGlzLnJvdXRlclN0YXRlPXRoaXMuc3RhdGVNZW1lbnRvLnJvdXRlclN0YXRlLHRoaXMuY3VycmVudFVybFRyZWU9dGhpcy5zdGF0ZU1lbWVudG8uY3VycmVudFVybFRyZWUsdGhpcy5yYXdVcmxUcmVlPXRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZSh0'@; put 'aGlzLmN1cnJlbnRVcmxUcmVlLHQ/P3RoaXMucmF3VXJsVHJlZSl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5OigpPT5zbihXZHQpLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59'@; put 'KSgpLFdkdD0oKCk9PntjbGFzcyBuIGV4dGVuZHMgcHdle2N1cnJlbnRQYWdlSWQ9MDtsYXN0U3VjY2Vzc2Z1bElkPS0xO3Jlc3RvcmVkU3RhdGUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5nZXRTdGF0ZSgpfWdldCBicm93c2VyUGFnZUlkKCl7cmV0dXJuImNvbXB1dGVkIiE9PXRoaXMuY2Fu'@; put 'Y2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbj90aGlzLmN1cnJlbnRQYWdlSWQ6dGhpcy5yZXN0b3JlZFN0YXRlKCk/Llx1MDI3NXJvdXRlclBhZ2VJZD8/dGhpcy5jdXJyZW50UGFnZUlkfXJlZ2lzdGVyTm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdlTGlzdGVuZXIodCl7cmV0dXJuIHRoaXMu'@; put 'bG9jYXRpb24uc3Vic2NyaWJlKHI9PnsicG9wc3RhdGUiPT09ci50eXBlJiZzZXRUaW1lb3V0KCgpPT57dChyLnVybCxyLnN0YXRlLCJwb3BzdGF0ZSIpfSl9KX1oYW5kbGVSb3V0ZXJFdmVudCh0LHIpe3QgaW5zdGFuY2VvZiBVVT90aGlzLnVwZGF0ZVN0YXRlTWVtZW50bygpOnQgaW5zdGFu'@; put 'Y2VvZiBQRT90aGlzLmNvbW1pdFRyYW5zaXRpb24ocik6dCBpbnN0YW5jZW9mIEJiZT8iZWFnZXIiPT09dGhpcy51cmxVcGRhdGVTdHJhdGVneSYmKHIuZXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZXx8dGhpcy5zZXRCcm93c2VyVXJsKHRoaXMuY3JlYXRlQnJvd3NlclBhdGgocikscikpOnQg'@; put 'aW5zdGFuY2VvZiBYcmU/KHRoaXMuY29tbWl0VHJhbnNpdGlvbihyKSwiZGVmZXJyZWQiPT09dGhpcy51cmxVcGRhdGVTdHJhdGVneSYmIXIuZXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZSYmdGhpcy5zZXRCcm93c2VyVXJsKHRoaXMuY3JlYXRlQnJvd3NlclBhdGgocikscikpOnQgaW5zdGFu'@; put 'Y2VvZiBTYiYmdC5jb2RlIT09VDMuU3VwZXJzZWRlZEJ5TmV3TmF2aWdhdGlvbiYmdC5jb2RlIT09VDMuUmVkaXJlY3Q/dGhpcy5yZXN0b3JlSGlzdG9yeShyKTp0IGluc3RhbmNlb2YgS3JlP3RoaXMucmVzdG9yZUhpc3RvcnkociwhMCk6dCBpbnN0YW5jZW9mIEI1JiYodGhpcy5sYXN0U3Vj'@; put 'Y2Vzc2Z1bElkPXQuaWQsdGhpcy5jdXJyZW50UGFnZUlkPXRoaXMuYnJvd3NlclBhZ2VJZCl9c2V0QnJvd3NlclVybCh0LHtleHRyYXM6cixpZDppfSl7Y29uc3R7cmVwbGFjZVVybDpvLHN0YXRlOmF9PXI7aWYodGhpcy5sb2NhdGlvbi5pc0N1cnJlbnRQYXRoRXF1YWxUbyh0KXx8byl7Y29u'@; put 'c3QgbD10aGlzLmJyb3dzZXJQYWdlSWQsdT17Li4uYSwuLi50aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZShpLGwpfTt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LCIiLHUpfWVsc2V7Y29uc3QgbD17Li4uYSwuLi50aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZShpLHRoaXMuYnJvd3Nl'@; put 'clBhZ2VJZCsxKX07dGhpcy5sb2NhdGlvbi5nbyh0LCIiLGwpfX1yZXN0b3JlSGlzdG9yeSh0LHI9ITEpe2lmKCJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24pe2NvbnN0IG89dGhpcy5jdXJyZW50UGFnZUlkLXRoaXMuYnJvd3NlclBhZ2VJZDswIT09bz90'@; put 'aGlzLmxvY2F0aW9uLmhpc3RvcnlHbyhvKTp0aGlzLmdldEN1cnJlbnRVcmxUcmVlKCk9PT10LmZpbmFsVXJsJiYwPT09byYmKHRoaXMucmVzZXRJbnRlcm5hbFN0YXRlKHQpLHRoaXMucmVzZXRVcmxUb0N1cnJlbnRVcmxUcmVlKCkpfWVsc2UicmVwbGFjZSI9PT10aGlzLmNhbmNlbGVkTmF2'@; put 'aWdhdGlvblJlc29sdXRpb24mJihyJiZ0aGlzLnJlc2V0SW50ZXJuYWxTdGF0ZSh0KSx0aGlzLnJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpKX1yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKXt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXpl'@; put 'KHRoaXMuZ2V0UmF3VXJsVHJlZSgpKSwiIix0aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZSh0aGlzLmxhc3RTdWNjZXNzZnVsSWQsdGhpcy5jdXJyZW50UGFnZUlkKSl9Z2VuZXJhdGVOZ1JvdXRlclN0YXRlKHQscil7cmV0dXJuImNvbXB1dGVkIj09PXRoaXMuY2FuY2VsZWROYXZpZ2F0aW9u'@; put 'UmVzb2x1dGlvbj97bmF2aWdhdGlvbklkOnQsXHUwMjc1cm91dGVyUGFnZUlkOnJ9OntuYXZpZ2F0aW9uSWQ6dH19c3RhdGljIFx1MDI3NWZhYz0oKCk9PntsZXQgdDtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuKHR8fCh0PXdhKG4pKSkoaXx8bil9fSkoKTtzdGF0aWMgXHUwMjc1cHJvdj1K'@; put 'bih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIGd3ZShuLGUpe24uZXZlbnRzLnBpcGUoc3UodD0+dCBpbnN0YW5jZW9mIEI1fHx0IGluc3RhbmNlb2YgU2J8fHQgaW5zdGFuY2VvZiBLcmV8fHQgaW5zdGFuY2Vv'@; put 'ZiBQRSksRXModD0+dCBpbnN0YW5jZW9mIEI1fHx0IGluc3RhbmNlb2YgUEU/MDp0IGluc3RhbmNlb2YgU2ImJih0LmNvZGU9PT1UMy5SZWRpcmVjdHx8dC5jb2RlPT09VDMuU3VwZXJzZWRlZEJ5TmV3TmF2aWdhdGlvbik/MjoxKSxzdSh0PT4yIT09dCksTXAoMSkpLnN1YnNjcmliZSgoKT0+'@; put 'e2UoKX0pfWNvbnN0IFlkdD17cGF0aHM6ImV4YWN0IixmcmFnbWVudDoiaWdub3JlZCIsbWF0cml4UGFyYW1zOiJpZ25vcmVkIixxdWVyeVBhcmFtczoiZXhhY3QifSxaZHQ9e3BhdGhzOiJzdWJzZXQiLGZyYWdtZW50OiJpZ25vcmVkIixtYXRyaXhQYXJhbXM6Imlnbm9yZWQiLHF1ZXJ5UGFy'@; put 'YW1zOiJzdWJzZXQifTtsZXQgdmM9KCgpPT57Y2xhc3MgbntnZXQgY3VycmVudFVybFRyZWUoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuZ2V0Q3VycmVudFVybFRyZWUoKX1nZXQgcmF3VXJsVHJlZSgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5nZXRSYXdVcmxUcmVlKCl9ZGlzcG9z'@; put 'ZWQ9ITE7bm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdlU3Vic2NyaXB0aW9uO2NvbnNvbGU9c24oSzZlKTtzdGF0ZU1hbmFnZXI9c24ocHdlKTtvcHRpb25zPXNuKHpFLHtvcHRpb25hbDohMH0pfHx7fTtwZW5kaW5nVGFza3M9c24oczUpO3VybFVwZGF0ZVN0cmF0ZWd5PXRoaXMub3B0aW9u'@; put 'cy51cmxVcGRhdGVTdHJhdGVneXx8ImRlZmVycmVkIjtuYXZpZ2F0aW9uVHJhbnNpdGlvbnM9c24oZGllKTt1cmxTZXJpYWxpemVyPXNuKE5JKTtsb2NhdGlvbj1zbihWMCk7dXJsSGFuZGxpbmdTdHJhdGVneT1zbih1aWUpO2luamVjdG9yPXNuKG5sKTtfZXZlbnRzPW5ldyBNcjtnZXQgZXZl'@; put 'bnRzKCl7cmV0dXJuIHRoaXMuX2V2ZW50c31nZXQgcm91dGVyU3RhdGUoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuZ2V0Um91dGVyU3RhdGUoKX1uYXZpZ2F0ZWQ9ITE7cm91dGVSZXVzZVN0cmF0ZWd5PXNuKGpkdCk7b25TYW1lVXJsTmF2aWdhdGlvbj10aGlzLm9wdGlvbnMub25TYW1l'@; put 'VXJsTmF2aWdhdGlvbnx8Imlnbm9yZSI7Y29uZmlnPXNuKFFVLHtvcHRpb25hbDohMH0pPy5mbGF0KCk/P1tdO2NvbXBvbmVudElucHV0QmluZGluZ0VuYWJsZWQ9ISFzbihHVSx7b3B0aW9uYWw6ITB9KTtjdXJyZW50TmF2aWdhdGlvbj10aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5jdXJy'@; put 'ZW50TmF2aWdhdGlvbi5hc1JlYWRvbmx5KCk7Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0Q29uZmlnKHRoaXMuY29uZmlnKSx0aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5zZXR1cE5hdmlnYXRpb25zKHRoaXMpLnN1YnNjcmliZSh7ZXJyb3I6dD0+e3RoaXMuY29uc29sZS53YXJuKHQpfX0p'@; put 'LHRoaXMuc3Vic2NyaWJlVG9OYXZpZ2F0aW9uRXZlbnRzKCl9ZXZlbnRzU3Vic2NyaXB0aW9uPW5ldyBBcjtzdWJzY3JpYmVUb05hdmlnYXRpb25FdmVudHMoKXtjb25zdCB0PXRoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLmV2ZW50cy5zdWJzY3JpYmUocj0+e3RyeXtjb25zdCBpPXRoaXMu'@; put 'bmF2aWdhdGlvblRyYW5zaXRpb25zLmN1cnJlbnRUcmFuc2l0aW9uLG89TnUodGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuY3VycmVudE5hdmlnYXRpb24pO2lmKG51bGwhPT1pJiZudWxsIT09bylpZih0aGlzLnN0YXRlTWFuYWdlci5oYW5kbGVSb3V0ZXJFdmVudChyLG8pLHIgaW5zdGFu'@; put 'Y2VvZiBTYiYmci5jb2RlIT09VDMuUmVkaXJlY3QmJnIuY29kZSE9PVQzLlN1cGVyc2VkZWRCeU5ld05hdmlnYXRpb24pdGhpcy5uYXZpZ2F0ZWQ9ITA7ZWxzZSBpZihyIGluc3RhbmNlb2YgQjUpdGhpcy5uYXZpZ2F0ZWQ9ITA7ZWxzZSBpZihyIGluc3RhbmNlb2YgV1Upe2NvbnN0IGE9ci5u'@; put 'YXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zLGw9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKHIudXJsLGkuY3VycmVudFJhd1VybCksdT17YnJvd3NlclVybDppLmV4dHJhcy5icm93c2VyVXJsLGluZm86aS5leHRyYXMuaW5mbyxza2lwTG9jYXRpb25DaGFuZ2U6aS5leHRyYXMuc2tp'@; put 'cExvY2F0aW9uQ2hhbmdlLHJlcGxhY2VVcmw6aS5leHRyYXMucmVwbGFjZVVybHx8ImVhZ2VyIj09PXRoaXMudXJsVXBkYXRlU3RyYXRlZ3l8fEJkdChpLnNvdXJjZSksLi4uYX07dGhpcy5zY2hlZHVsZU5hdmlnYXRpb24obCxWSSxudWxsLHUse3Jlc29sdmU6aS5yZXNvbHZlLHJlamVjdDpp'@; put 'LnJlamVjdCxwcm9taXNlOmkucHJvbWlzZX0pfShmdW5jdGlvbiBrdXQobil7cmV0dXJuIShuIGluc3RhbmNlb2YgWHJlfHxuIGluc3RhbmNlb2YgV1UpfSkocikmJnRoaXMuX2V2ZW50cy5uZXh0KHIpfWNhdGNoKGkpe3RoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLnRyYW5zaXRpb25BYm9y'@; put 'dFdpdGhFcnJvclN1YmplY3QubmV4dChpKX19KTt0aGlzLmV2ZW50c1N1YnNjcmlwdGlvbi5hZGQodCl9cmVzZXRSb290Q29tcG9uZW50VHlwZSh0KXt0aGlzLnJvdXRlclN0YXRlLnJvb3QuY29tcG9uZW50PXQsdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMucm9vdENvbXBvbmVudFR5cGU9'@; put 'dH1pbml0aWFsTmF2aWdhdGlvbigpe3RoaXMuc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCksdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuaGFzUmVxdWVzdGVkTmF2aWdhdGlvbnx8dGhpcy5uYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyKHRoaXMubG9jYXRpb24ucGF0aCghMCksVkks'@; put 'dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZWRTdGF0ZSgpKX1zZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIoKXt0aGlzLm5vblJvdXRlckN1cnJlbnRFbnRyeUNoYW5nZVN1YnNjcmlwdGlvbj8/PXRoaXMuc3RhdGVNYW5hZ2VyLnJlZ2lzdGVyTm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdl'@; put 'TGlzdGVuZXIoKHQscixpKT0+e3RoaXMubmF2aWdhdGVUb1N5bmNXaXRoQnJvd3Nlcih0LGkscil9KX1uYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyKHQscixpKXtjb25zdCBvPXtyZXBsYWNlVXJsOiEwfSxhPWk/Lm5hdmlnYXRpb25JZD9pOm51bGw7aWYoaSl7Y29uc3QgdT17Li4uaX07ZGVs'@; put 'ZXRlIHUubmF2aWdhdGlvbklkLGRlbGV0ZSB1Llx1MDI3NXJvdXRlclBhZ2VJZCwwIT09T2JqZWN0LmtleXModSkubGVuZ3RoJiYoby5zdGF0ZT11KX1jb25zdCBsPXRoaXMucGFyc2VVcmwodCk7dGhpcy5zY2hlZHVsZU5hdmlnYXRpb24obCxyLGEsbykuY2F0Y2godT0+e3RoaXMuZGlzcG9z'@; put 'ZWR8fHRoaXMuaW5qZWN0b3IuZ2V0KF9wKSh1KX0pfWdldCB1cmwoKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVVcmwodGhpcy5jdXJyZW50VXJsVHJlZSl9Z2V0Q3VycmVudE5hdmlnYXRpb24oKXtyZXR1cm4gTnUodGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuY3VycmVudE5hdmlnYXRpb24p'@; put 'fWdldCBsYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb24oKXtyZXR1cm4gdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9ufXJlc2V0Q29uZmlnKHQpe3RoaXMuY29uZmlnPXQubWFwKHJpZSksdGhpcy5uYXZpZ2F0ZWQ9ITF9bmdPbkRlc3Ryb3koKXt0aGlz'@; put 'LmRpc3Bvc2UoKX1kaXNwb3NlKCl7dGhpcy5fZXZlbnRzLnVuc3Vic2NyaWJlKCksdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuY29tcGxldGUoKSx0aGlzLm5vblJvdXRlckN1cnJlbnRFbnRyeUNoYW5nZVN1YnNjcmlwdGlvbiYmKHRoaXMubm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdl'@; put 'U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5ub25Sb3V0ZXJDdXJyZW50RW50cnlDaGFuZ2VTdWJzY3JpcHRpb249dm9pZCAwKSx0aGlzLmRpc3Bvc2VkPSEwLHRoaXMuZXZlbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9Y3JlYXRlVXJsVHJlZSh0LHI9e30pe2NvbnN0e3Jl'@; put 'bGF0aXZlVG86aSxxdWVyeVBhcmFtczpvLGZyYWdtZW50OmEscXVlcnlQYXJhbXNIYW5kbGluZzpsLHByZXNlcnZlRnJhZ21lbnQ6dX09cixnPXU/dGhpcy5jdXJyZW50VXJsVHJlZS5mcmFnbWVudDphO2xldCBPLEU9bnVsbDtzd2l0Y2gobD8/dGhpcy5vcHRpb25zLmRlZmF1bHRRdWVyeVBh'@; put 'cmFtc0hhbmRsaW5nKXtjYXNlIm1lcmdlIjpFPXsuLi50aGlzLmN1cnJlbnRVcmxUcmVlLnF1ZXJ5UGFyYW1zLC4uLm99O2JyZWFrO2Nhc2UicHJlc2VydmUiOkU9dGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtczticmVhaztkZWZhdWx0OkU9b3x8bnVsbH1udWxsIT09RSYmKEU9dGhp'@; put 'cy5yZW1vdmVFbXB0eVByb3BzKEUpKTt0cnl7Tz1MYmUoaT9pLnNuYXBzaG90OnRoaXMucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdCl9Y2F0Y2h7KCJzdHJpbmciIT10eXBlb2YgdFswXXx8Ii8iIT09dFswXVswXSkmJih0PVtdKSxPPXRoaXMuY3VycmVudFVybFRyZWUucm9vdH1yZXR1cm4g'@; put 'T2JlKE8sdCxFLGc/P251bGwpfW5hdmlnYXRlQnlVcmwodCxyPXtza2lwTG9jYXRpb25DaGFuZ2U6ITF9KXtjb25zdCBpPUNiKHQpP3Q6dGhpcy5wYXJzZVVybCh0KSxvPXRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZShpLHRoaXMucmF3VXJsVHJlZSk7cmV0dXJuIHRoaXMuc2NoZWR1'@; put 'bGVOYXZpZ2F0aW9uKG8sVkksbnVsbCxyKX1uYXZpZ2F0ZSh0LHI9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pe3JldHVybiBmdW5jdGlvbiBHZHQobil7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYobnVsbD09bltlXSl0aHJvdyBuZXcgV24oNDAwOCwhMSl9KHQpLHRoaXMubmF2aWdh'@; put 'dGVCeVVybCh0aGlzLmNyZWF0ZVVybFRyZWUodCxyKSxyKX1zZXJpYWxpemVVcmwodCl7cmV0dXJuIHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodCl9cGFyc2VVcmwodCl7dHJ5e3JldHVybiB0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UodCl9Y2F0Y2h7cmV0dXJuIHRoaXMuY29uc29s'@; put 'ZS53YXJuKGRjKDQwMTgsITEpKSx0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoIi8iKX19aXNBY3RpdmUodCxyKXtsZXQgaTtpZihpPSEwPT09cj97Li4uWWR0fTohMT09PXI/ey4uLlpkdH06cixDYih0KSlyZXR1cm4gRWJlKHRoaXMuY3VycmVudFVybFRyZWUsdCxpKTtjb25zdCBvPXRoaXMu'@; put 'cGFyc2VVcmwodCk7cmV0dXJuIEViZSh0aGlzLmN1cnJlbnRVcmxUcmVlLG8saSl9cmVtb3ZlRW1wdHlQcm9wcyh0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkucmVkdWNlKChyLFtpLG9dKT0+KG51bGwhPW8mJihyW2ldPW8pLHIpLHt9KX1zY2hlZHVsZU5hdmlnYXRpb24odCxyLGksbyxh'@; put 'KXtpZih0aGlzLmRpc3Bvc2VkKXJldHVybiBQcm9taXNlLnJlc29sdmUoITEpO2xldCBsLHUsZzthPyhsPWEucmVzb2x2ZSx1PWEucmVqZWN0LGc9YS5wcm9taXNlKTpnPW5ldyBQcm9taXNlKChPLFopPT57bD1PLHU9Wn0pO2NvbnN0IEU9dGhpcy5wZW5kaW5nVGFza3MuYWRkKCk7cmV0dXJu'@; put 'IGd3ZSh0aGlzLCgpPT57cXVldWVNaWNyb3Rhc2soKCk9PnRoaXMucGVuZGluZ1Rhc2tzLnJlbW92ZShFKSl9KSx0aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5oYW5kbGVOYXZpZ2F0aW9uUmVxdWVzdCh7c291cmNlOnIscmVzdG9yZWRTdGF0ZTppLGN1cnJlbnRVcmxUcmVlOnRoaXMuY3Vy'@; put 'cmVudFVybFRyZWUsY3VycmVudFJhd1VybDp0aGlzLmN1cnJlbnRVcmxUcmVlLHJhd1VybDp0LGV4dHJhczpvLHJlc29sdmU6bCxyZWplY3Q6dSxwcm9taXNlOmcsY3VycmVudFNuYXBzaG90OnRoaXMucm91dGVyU3RhdGUuc25hcHNob3QsY3VycmVudFJvdXRlclN0YXRlOnRoaXMucm91dGVy'@; put 'U3RhdGV9KSxnLmNhdGNoKE89PlByb21pc2UucmVqZWN0KE8pKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0p'@; put 'KCk7dmFyIFdFPWZ1bmN0aW9uKG4pe3JldHVybiBuLmxpZ2h0PSJsaWdodCIsbi5kYXJrPSJkYXJrIixufShXRXx8e30pO2NvbnN0ICRkdD1uPT5uZXcgUHJvbWlzZShlPT5zZXRUaW1lb3V0KGUsbikpLHFkdD1mdW5jdGlvbigpe3ZhciBuPUNyKGZ1bmN0aW9uKihlLHQpe2NvbnN0IHI9dD8u'@; put 'bWF4RGVsYXlNcz8/M2UzLGk9dD8ucmFuZG9tPz9NYXRoLnJhbmRvbSxvPXQ/LndhaXQ/PyRkdDt0cnl7cmV0dXJuIHlpZWxkIGUoKX1jYXRjaHtyZXR1cm4geWllbGQgbyhpKCkqciksZSgpfX0pO3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19'@; put 'KCksbXdlPW49Pm51bGwhPT1uJiYib2JqZWN0Ij09dHlwZW9mIG4/bnVsbDpgVGhlIHN0YXJ0dXBzZXJ2aWNlIHJlc3BvbnNlIHdhcyBub3QgaW4gdGhlIGV4cGVjdGVkIGZvcm1hdCAtIGl0IHNob3VsZCBiZSBhIEpTT04gb2JqZWN0LCBidXQgdGhlIGZvbGxvd2luZyB3YXMgcmVjZWl2ZWQg'@; put 'aW5zdGVhZDpcblxuJHtTdHJpbmcobil9YDt2YXIgaGllPWgoNTUxODgpLEtkdD1oKDc4NzU1KTtjb25zdCBmaWU9e3VzZXJzX2FsbG93ZWQ6MSx2aWV3ZXJfcm93c19hbGxvd2VkOjE1LGVkaXRvcl9yb3dzX2FsbG93ZWQ6MTUsc3RhZ2Vfcm93c19hbGxvd2VkOjEvMCxoaXN0b3J5X3Jvd3Nf'@; put 'YWxsb3dlZDoxNSxzdWJtaXRfcm93c19saW1pdDo1LHZpZXdib3hfbGltaXQ6MSxsaW5lYWdlX2RhaWx5X2xpbWl0OjMsdGFibGVzX2luX2xpYnJhcnlfbGltaXQ6MzUsdmlld2JveDohMCxmaWxlVXBsb2FkOiExLGVkaXRSZWNvcmQ6ITAsYWRkUmVjb3JkOiEwfTt2YXIgVHA9ZnVuY3Rpb24o'@; put 'bil7cmV0dXJuIG5bbi52aWV3ZXJfcm93c19hbGxvd2VkPTBdPSJ2aWV3ZXJfcm93c19hbGxvd2VkIixuW24uZWRpdG9yX3Jvd3NfYWxsb3dlZD0xXT0iZWRpdG9yX3Jvd3NfYWxsb3dlZCIsbltuLnN0YWdlX3Jvd3NfYWxsb3dlZD0yXT0ic3RhZ2Vfcm93c19hbGxvd2VkIixuW24uaGlzdG9y'@; put 'eV9yb3dzX2FsbG93ZWQ9M109Imhpc3Rvcnlfcm93c19hbGxvd2VkIixuW24uc3VibWl0X3Jvd3NfbGltaXQ9NF09InN1Ym1pdF9yb3dzX2xpbWl0IixuW24udGFibGVzX2luX2xpYnJhcnlfbGltaXQ9NV09InRhYmxlc19pbl9saWJyYXJ5X2xpbWl0IixuW24udmlld2JveD02XT0idmlld2Jv'@; put 'eCIsbltuLnZpZXdib3hfbGltaXQ9N109InZpZXdib3hfbGltaXQiLG5bbi5saW5lYWdlX2RhaWx5X2xpbWl0PThdPSJsaW5lYWdlX2RhaWx5X2xpbWl0IixuW24uZmlsZVVwbG9hZD05XT0iZmlsZVVwbG9hZCIsbltuLmVkaXRSZWNvcmQ9MTBdPSJlZGl0UmVjb3JkIixuW24uYWRkUmVjb3Jk'@; put 'PTExXT0iYWRkUmVjb3JkIixufShUcHx8e30pO2NvbnN0IHZ3ZT1uPT4ib2JqZWN0Ij09dHlwZW9mIG4/WGR0KG4pOlFkdChuKSxYZHQ9bj0+KHt2aWV3ZXJfcm93c19hbGxvd2VkOm4udnJhPz8xLzAsZWRpdG9yX3Jvd3NfYWxsb3dlZDpuLmVyYT8/MS8wLHN0YWdlX3Jvd3NfYWxsb3dlZDpu'@; put 'LnNyYT8/MS8wLGhpc3Rvcnlfcm93c19hbGxvd2VkOm4uaHJhPz8xLzAsc3VibWl0X3Jvd3NfbGltaXQ6bi5zcmw/PzEvMCx0YWJsZXNfaW5fbGlicmFyeV9saW1pdDpuLnRpbGw/PzEvMCx2aWV3Ym94Om4udmIsdmlld2JveF9saW1pdDpuLnZibD8/MS8wLGxpbmVhZ2VfZGFpbHlfbGltaXQ6'@; put 'bi5sZGw/PzEvMCxmaWxlVXBsb2FkOm4uZnUsZWRpdFJlY29yZDpuLmVyLGFkZFJlY29yZDpuLmFyfSksUWR0PW49Pntjb25zdCBlPW4uc3BsaXQoIiwiKSx0PWk9PiItIj09PWk/MS8wOnBhcnNlSW50KGkpLHI9aT0+ISFwYXJzZUludChpKTtyZXR1cm57dmlld2VyX3Jvd3NfYWxsb3dlZDp0'@; put 'KGVbVHAudmlld2VyX3Jvd3NfYWxsb3dlZF0pLGVkaXRvcl9yb3dzX2FsbG93ZWQ6dChlW1RwLmVkaXRvcl9yb3dzX2FsbG93ZWRdKSxzdGFnZV9yb3dzX2FsbG93ZWQ6dChlW1RwLnN0YWdlX3Jvd3NfYWxsb3dlZF0pLGhpc3Rvcnlfcm93c19hbGxvd2VkOnQoZVtUcC5oaXN0b3J5X3Jvd3Nf'@; put 'YWxsb3dlZF0pLHN1Ym1pdF9yb3dzX2xpbWl0OnQoZVtUcC5zdWJtaXRfcm93c19saW1pdF0pLHRhYmxlc19pbl9saWJyYXJ5X2xpbWl0OnQoZVtUcC50YWJsZXNfaW5fbGlicmFyeV9saW1pdF0pLHZpZXdib3hfbGltaXQ6dChlW1RwLnZpZXdib3hfbGltaXRdKSxsaW5lYWdlX2RhaWx5X2xp'@; put 'bWl0OnQoZVtUcC5saW5lYWdlX2RhaWx5X2xpbWl0XSksdmlld2JveDpyKGVbVHAudmlld2JveF0pLGZpbGVVcGxvYWQ6cihlW1RwLmZpbGVVcGxvYWRdKSxlZGl0UmVjb3JkOnIoZVtUcC5lZGl0UmVjb3JkXSksYWRkUmVjb3JkOnIoZVtUcC5hZGRSZWNvcmRdKX19O3ZhciB4cD1oKDM3MzQp'@; put 'LF93ZT1oLm4oeHApLF8wPWgoMTMyNDcpO2NvbnN0IEpkdD1be25hbWU6IkVkZ2UiLHRva2VuOi8oPzpFZGdpT1N8RWRnW0EtWl0/fEVkZ2UpXC8vLHZlcnNpb246Lyg/OkVkZ2lPU3xFZGdbQS1aXT98RWRnZSlcLyhbXGQuXSspL30se25hbWU6Ik9wZXJhIix0b2tlbjovKD86T1BpT1N8T1BS'@; put 'KVwvLyx2ZXJzaW9uOi8oPzpPUGlPU3xPUFIpXC8oW1xkLl0rKS99LHtuYW1lOiJGaXJlZm94Iix0b2tlbjovKD86RnhpT1N8RmlyZWZveClcLy8sdmVyc2lvbjovKD86RnhpT1N8RmlyZWZveClcLyhbXGQuXSspL30se25hbWU6IkNocm9tZSIsdG9rZW46Lyg/OkNyaU9TfENocm9tZSlcLy8s'@; put 'dmVyc2lvbjovKD86Q3JpT1N8Q2hyb21lKVwvKFtcZC5dKykvfSx7bmFtZToiU2FmYXJpIix0b2tlbjovU2FmYXJpXC8vLHZlcnNpb246L1ZlcnNpb25cLyhbXGQuXSspL31dO2xldCBFYj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7fXNldERjQWRhcHRlclNldHRpbmdzKHIp'@; put 'e3RoaXMuZGNBZGFwdGVyU2V0dGluZ3M9cn1nZXREY0FkYXB0ZXJTZXR0aW5ncygpe3JldHVybiB0aGlzLmRjQWRhcHRlclNldHRpbmdzfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2Vu'@; put 'OmUsZmFjdG9yeTplLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpLHBpZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7dGhpcy51c2VyQ2hhbmdlPW5ldyBNcn1zZXQgdXNlcihyKXt0aGlzLl91c2VyPXIsdGhpcy51c2VyQ2hhbmdlLm5l'@; put 'eHQocil9Z2V0IHVzZXIoKXtyZXR1cm4gdGhpcy5fdXNlcn1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVwcm92PUpuKHt0b2tlbjplLGZhY3Rvcnk6ZS5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSl9'@; put 'cmV0dXJuIG4oKSxlfSkoKTtjbGFzcyBKVXtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdFNldHRpbmdzPXtwZXJzaXN0U2VsZWN0ZWRUaGVtZTohMCxzZWxlY3RlZFRoZW1lOldFLmxpZ2h0fSx0aGlzLnNldHRpbmdzPW5ldyAkaSh0aGlzLmRlZmF1bHRTZXR0aW5ncyksdGhpcy5yZXN0b3Jl'@; put 'QXBwU2V0dGluZ3MoKX1yZXN0b3JlQXBwU2V0dGluZ3MoKXt0cnl7Y29uc3QgZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiYXBwLXNldHRpbmdzIik7aWYoZSl7Y29uc3QgdD1KU09OLnBhcnNlKGUpO3RoaXMuc2V0QXBwU2V0dGluZ3ModCl9ZWxzZSBjb25zb2xlLmluZm8oIk5vIGFwcCBzZXR0'@; put 'aW5ncyBzdG9yZWQgaW4gdGhlIGxvY2FsU3RvcmFnZSwgd2Ugd2lsbCBzZXQgdG8gZGVmYXVsdCB2YWx1ZXMuIil9Y2F0Y2goZSl7Y29uc29sZS53YXJuKCJFcnJvciByZXN0b3Jpbmcgc2V0dGluZ3MgZnJvbSBsb2NhbCBzdG9yZ2FlLiIsZSl9fXN0b3JlQXBwU2V0dGluZ3MoKXtsb2NhbFN0'@; put 'b3JhZ2Uuc2V0SXRlbSgiYXBwLXNldHRpbmdzIixKU09OLnN0cmluZ2lmeSh0aGlzLnNldHRpbmdzLnZhbHVlKSl9c2V0QXBwU2V0dGluZ3MoZSl7dGhpcy5zZXR0aW5ncy5uZXh0KHsuLi50aGlzLnNldHRpbmdzLnZhbHVlLC4uLmV9KSx0aGlzLnN0b3JlQXBwU2V0dGluZ3MoKX19bGV0IHVk'@; put 'PSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3Iocil7dGhpcy5hcHBTZXR0aW5nc1NlcnZpY2U9cix0aGlzLm9uU2lkZWJhclRvZ2dsZT1uZXcgS3IsdGhpcy5vblN0YXJ0dXBEYXRhTG9hZGVkPW5ldyBLcix0aGlzLm9uU2hvd0Fib3J0TW9kYWw9bmV3IEtyLHRoaXMub25SZXF1ZXN0'@; put 'c01vZGFsT3Blbj1uZXcgS3IsdGhpcy5vbkRlbW9MaW1pdE1vZGFsU2hvdz1uZXcgS3IsdGhpcy52aWV3TGFzdFVybD1udWxsLHRoaXMuc2lkZWJhckNsb3NlTGltaXQ9MTI4MCx0aGlzLmRhcmtNb2RlPW5ldyAkaSghMSl9dG9nZ2xlRGFya01vZGUocil7dGhpcy5kYXJrTW9kZS5uZXh0KHIp'@; put 'LHI/ZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoImNkcy10aGVtZSIsImRhcmsiKTpkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgiY2RzLXRoZW1lIiwibGlnaHQiKSx0aGlzLmFwcFNldHRpbmdzU2VydmljZS5zZXRBcHBTZXR0aW5ncyh7c2VsZWN0ZWRUaGVtZTpyP1dFLmRhcms6V0Uu'@; put 'bGlnaHR9KX1zaG93RGVtb0xpbWl0TW9kYWwocil7dGhpcy5vbkRlbW9MaW1pdE1vZGFsU2hvdy5lbWl0KHIpfXNob3dJbmZvTW9kYWwocj0iSW5mbyIsaSl7dGhpcy5vblNob3dBYm9ydE1vZGFsLmVtaXQoe21vZGFsVGl0bGU6cixtZXNzYWdlOmksc2FzU2VydmljZToiIixkZXRhaWxzOm51'@; put 'bGx9KX1zaG93QWJvcnRNb2RhbChyLGksbyxhPXZvaWQgMCl7b3x8KG89bnVsbCk7bGV0IGw9e3Nhc1NlcnZpY2U6cixtZXNzYWdlOmksZGV0YWlsczpvfTthJiYobC5tb2RhbFRpdGxlPWEpLHRoaXMub25TaG93QWJvcnRNb2RhbC5lbWl0KGwpfW9wZW5SZXF1ZXN0c01vZGFsKCl7dGhpcy5v'@; put 'blJlcXVlc3RzTW9kYWxPcGVuLmVtaXQoITApfWNhdGNoUmVzcG9uc2VFcnJvcihyLGkpe2xldCBvPSJTQVMgU2VydmljZSBlcnJvciBvY3VycmVkIjtpZihpLmVycm9yKXtsZXQgYTtvPWkuZXJyb3IubWVzc2FnZSxpLmVycm9yLmRldGFpbHMmJmkuZXJyb3IuZGV0YWlscy5sb2cmJihhPWku'@; put 'ZXJyb3IuZGV0YWlscy5sb2cpLCghb3x8by50cmltKCkubGVuZ3RoPDEpJiYobz0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCIpLHRoaXMuc2hvd0Fib3J0TW9kYWwocixvLHtMT0c6YX0sIlJlcXVlc3QgZXJyb3IiKX1lbHNlIHRoaXMuc2hvd0Fib3J0TW9kYWwocixvKX10b2dnbGVTaWRl'@; put 'YmFyKCl7dGhpcy5vblNpZGViYXJUb2dnbGUuZW1pdCgpfWNsb3NlU2lkZWJhcigpe3dpbmRvdy5pbm5lcldpZHRoPHRoaXMuc2lkZWJhckNsb3NlTGltaXQmJnRoaXMub25TaWRlYmFyVG9nZ2xlLmVtaXQoe29wZW46ITF9KX1vcGVuU2lkZWJhcigpe3RoaXMub25TaWRlYmFyVG9nZ2xlLmVt'@; put 'aXQoe29wZW46ITB9KX1zdGFydHVwRGF0YUxvYWRlZCgpe3RoaXMub25TdGFydHVwRGF0YUxvYWRlZC5lbWl0KCl9ZGlzcGF0Y2hFdmVudChyKXtsZXQgaTsiZnVuY3Rpb24iPT10eXBlb2YgRXZlbnQ/aT1uZXcgRXZlbnQocik6KGk9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IiksaS5p'@; put 'bml0RXZlbnQociwhMCwhMCkpLHdpbmRvdy5kaXNwYXRjaEV2ZW50KGkpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKG9yKEpVKSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5OmUuXHUwMjc1ZmFjLHByb3Zp'@; put 'ZGVkSW46InJvb3QifSkpfXJldHVybiBuKCksZX0pKCk7Y2xhc3MgWUl7fWNsYXNzIGV6e31jbGFzcyB1NHtoZWFkZXJzO25vcm1hbGl6ZWROYW1lcz1uZXcgTWFwO2xhenlJbml0O2xhenlVcGRhdGU9bnVsbDtjb25zdHJ1Y3RvcihlKXtlPyJzdHJpbmciPT10eXBlb2YgZT90aGlzLmxhenlJ'@; put 'bml0PSgpPT57dGhpcy5oZWFkZXJzPW5ldyBNYXAsZS5zcGxpdCgiXG4iKS5mb3JFYWNoKHQ9Pntjb25zdCByPXQuaW5kZXhPZigiOiIpO2lmKHI+MCl7Y29uc3QgaT10LnNsaWNlKDAsciksbz10LnNsaWNlKHIrMSkudHJpbSgpO3RoaXMuYWRkSGVhZGVyRW50cnkoaSxvKX19KX06dHlwZW9m'@; put 'IEhlYWRlcnM8InUiJiZlIGluc3RhbmNlb2YgSGVhZGVycz8odGhpcy5oZWFkZXJzPW5ldyBNYXAsZS5mb3JFYWNoKCh0LHIpPT57dGhpcy5hZGRIZWFkZXJFbnRyeShyLHQpfSkpOnRoaXMubGF6eUluaXQ9KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxPYmplY3QuZW50cmllcyhlKS5mb3JF'@; put 'YWNoKChbdCxyXSk9Pnt0aGlzLnNldEhlYWRlckVudHJpZXModCxyKX0pfTp0aGlzLmhlYWRlcnM9bmV3IE1hcH1oYXMoZSl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5oYXMoZS50b0xvd2VyQ2FzZSgpKX1nZXQoZSl7dGhpcy5pbml0KCk7Y29uc3QgdD10aGlzLmhlYWRlcnMu'@; put 'Z2V0KGUudG9Mb3dlckNhc2UoKSk7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dFswXTpudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy52YWx1ZXMoKSl9Z2V0QWxsKGUpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuZ2V0'@; put 'KGUudG9Mb3dlckNhc2UoKSl8fG51bGx9YXBwZW5kKGUsdCl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6ZSx2YWx1ZTp0LG9wOiJhIn0pfXNldChlLHQpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOmUsdmFsdWU6dCxvcDoicyJ9KX1kZWxldGUoZSx0KXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFt'@; put 'ZTplLHZhbHVlOnQsb3A6ImQifSl9bWF5YmVTZXROb3JtYWxpemVkTmFtZShlLHQpe3RoaXMubm9ybWFsaXplZE5hbWVzLmhhcyh0KXx8dGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KHQsZSl9aW5pdCgpe3RoaXMubGF6eUluaXQmJih0aGlzLmxhenlJbml0IGluc3RhbmNlb2YgdTQ/dGhpcy5j'@; put 'b3B5RnJvbSh0aGlzLmxhenlJbml0KTp0aGlzLmxhenlJbml0KCksdGhpcy5sYXp5SW5pdD1udWxsLHRoaXMubGF6eVVwZGF0ZSYmKHRoaXMubGF6eVVwZGF0ZS5mb3JFYWNoKGU9PnRoaXMuYXBwbHlVcGRhdGUoZSkpLHRoaXMubGF6eVVwZGF0ZT1udWxsKSl9Y29weUZyb20oZSl7ZS5pbml0'@; put 'KCk7Zm9yKGNvbnN0W3Qscl1vZiBlLmhlYWRlcnMuZW50cmllcygpKXRoaXMuaGVhZGVycy5zZXQodCxyKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQodCxlLm5vcm1hbGl6ZWROYW1lcy5nZXQodCkpfWNsb25lKGUpe2NvbnN0IHQ9bmV3IHU0O3JldHVybiB0LmxhenlJbml0PXRoaXMubGF6'@; put 'eUluaXQmJnRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiB1ND90aGlzLmxhenlJbml0OnRoaXMsdC5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtdKS5jb25jYXQoW2VdKSx0fWFwcGx5VXBkYXRlKGUpe2NvbnN0IHQ9ZS5uYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGUub3Ape2Nhc2Ui'@; put 'YSI6Y2FzZSJzIjpsZXQgcj1lLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgciYmKHI9W3JdKSwwPT09ci5sZW5ndGgpcmV0dXJuO3RoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShlLm5hbWUsdCk7Y29uc3QgaT0iYSI9PT1lLm9wPyh0aGlzLmhlYWRlcnMuZ2V0KHQpfHxbXSkuc2xpY2Uo'@; put 'KTpbXTtpLnB1c2goLi4uciksdGhpcy5oZWFkZXJzLnNldCh0LGkpO2JyZWFrO2Nhc2UiZCI6Y29uc3Qgbz1lLnZhbHVlO2lmKHZvaWQgMD09PW8pdGhpcy5oZWFkZXJzLmRlbGV0ZSh0KSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUodCk7ZWxzZXtjb25zdCBhPUFycmF5LmlzQXJyYXko'@; put 'byk/bzpbb107bGV0IGw9dGhpcy5oZWFkZXJzLmdldCh0KTtpZighbClyZXR1cm47bD1sLmZpbHRlcih1PT4tMT09PWEuaW5kZXhPZih1KSksMD09PWwubGVuZ3RoPyh0aGlzLmhlYWRlcnMuZGVsZXRlKHQpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZSh0KSk6dGhpcy5oZWFkZXJzLnNl'@; put 'dCh0LGwpfX19YWRkSGVhZGVyRW50cnkoZSx0KXtjb25zdCByPWUudG9Mb3dlckNhc2UoKTt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZSxyKSx0aGlzLmhlYWRlcnMuaGFzKHIpP3RoaXMuaGVhZGVycy5nZXQocikucHVzaCh0KTp0aGlzLmhlYWRlcnMuc2V0KHIsW3RdKX1zZXRIZWFk'@; put 'ZXJFbnRyaWVzKGUsdCl7Y29uc3Qgcj0oQXJyYXkuaXNBcnJheSh0KT90Olt0XSkubWFwKG89Pm8udG9TdHJpbmcoKSksaT1lLnRvTG93ZXJDYXNlKCk7dGhpcy5oZWFkZXJzLnNldChpLHIpLHRoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShlLGkpfWZvckVhY2goZSl7dGhpcy5pbml0KCks'@; put 'QXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy5rZXlzKCkpLmZvckVhY2godD0+ZSh0aGlzLm5vcm1hbGl6ZWROYW1lcy5nZXQodCksdGhpcy5oZWFkZXJzLmdldCh0KSkpfX1jbGFzcyB0aHR7ZW5jb2RlS2V5KGUpe3JldHVybiBid2UoZSl9ZW5jb2RlVmFsdWUoZSl7cmV0dXJuIGJ3'@; put 'ZShlKX1kZWNvZGVLZXkoZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1kZWNvZGVWYWx1ZShlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfX1jb25zdCByaHQ9LyUoXGRbYS1mMC05XSkvZ2ksaWh0PXs0MDoiQCIsIjNBIjoiOiIsMjQ6IiQiLCIyQyI6IiwiLCIzQiI6Ijsi'@; put 'LCIzRCI6Ij0iLCIzRiI6Ij8iLCIyRiI6Ii8ifTtmdW5jdGlvbiBid2Uobil7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChuKS5yZXBsYWNlKHJodCwoZSx0KT0+aWh0W3RdPz9lKX1mdW5jdGlvbiB0eihuKXtyZXR1cm5gJHtufWB9Y2xhc3MgaHZ7bWFwO2VuY29kZXI7dXBkYXRlcz1udWxs'@; put 'O2Nsb25lRnJvbT1udWxsO2NvbnN0cnVjdG9yKGU9e30pe2lmKHRoaXMuZW5jb2Rlcj1lLmVuY29kZXJ8fG5ldyB0aHQsZS5mcm9tU3RyaW5nKXtpZihlLmZyb21PYmplY3QpdGhyb3cgbmV3IFduKDI4MDUsITEpO3RoaXMubWFwPWZ1bmN0aW9uIG5odChuLGUpe2NvbnN0IHQ9bmV3IE1hcDty'@; put 'ZXR1cm4gbi5sZW5ndGg+MCYmbi5yZXBsYWNlKC9eXD8vLCIiKS5zcGxpdCgiJiIpLmZvckVhY2goaT0+e2NvbnN0IG89aS5pbmRleE9mKCI9IiksW2EsbF09LTE9PW8/W2UuZGVjb2RlS2V5KGkpLCIiXTpbZS5kZWNvZGVLZXkoaS5zbGljZSgwLG8pKSxlLmRlY29kZVZhbHVlKGkuc2xpY2Uo'@; put 'bysxKSldLHU9dC5nZXQoYSl8fFtdO3UucHVzaChsKSx0LnNldChhLHUpfSksdH0oZS5mcm9tU3RyaW5nLHRoaXMuZW5jb2Rlcil9ZWxzZSBlLmZyb21PYmplY3Q/KHRoaXMubWFwPW5ldyBNYXAsT2JqZWN0LmtleXMoZS5mcm9tT2JqZWN0KS5mb3JFYWNoKHQ9Pntjb25zdCByPWUuZnJvbU9i'@; put 'amVjdFt0XSxpPUFycmF5LmlzQXJyYXkocik/ci5tYXAodHopOlt0eihyKV07dGhpcy5tYXAuc2V0KHQsaSl9KSk6dGhpcy5tYXA9bnVsbH1oYXMoZSl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMubWFwLmhhcyhlKX1nZXQoZSl7dGhpcy5pbml0KCk7Y29uc3QgdD10aGlzLm1hcC5nZXQoZSk7'@; put 'cmV0dXJuIHQ/dFswXTpudWxsfWdldEFsbChlKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KGUpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfWFwcGVuZChlLHQpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTplLHZh'@; put 'bHVlOnQsb3A6ImEifSl9YXBwZW5kQWxsKGUpe2NvbnN0IHQ9W107cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2gocj0+e2NvbnN0IGk9ZVtyXTtBcnJheS5pc0FycmF5KGkpP2kuZm9yRWFjaChvPT57dC5wdXNoKHtwYXJhbTpyLHZhbHVlOm8sb3A6ImEifSl9KTp0LnB1c2goe3BhcmFt'@; put 'OnIsdmFsdWU6aSxvcDoiYSJ9KX0pLHRoaXMuY2xvbmUodCl9c2V0KGUsdCl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOmUsdmFsdWU6dCxvcDoicyJ9KX1kZWxldGUoZSx0KXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06ZSx2YWx1ZTp0LG9wOiJkIn0pfXRvU3RyaW5nKCl7cmV0dXJuIHRo'@; put 'aXMuaW5pdCgpLHRoaXMua2V5cygpLm1hcChlPT57Y29uc3QgdD10aGlzLmVuY29kZXIuZW5jb2RlS2V5KGUpO3JldHVybiB0aGlzLm1hcC5nZXQoZSkubWFwKHI9PnQrIj0iK3RoaXMuZW5jb2Rlci5lbmNvZGVWYWx1ZShyKSkuam9pbigiJiIpfSkuZmlsdGVyKGU9PiIiIT09ZSkuam9pbigi'@; put 'JiIpfWNsb25lKGUpe2NvbnN0IHQ9bmV3IGh2KHtlbmNvZGVyOnRoaXMuZW5jb2Rlcn0pO3JldHVybiB0LmNsb25lRnJvbT10aGlzLmNsb25lRnJvbXx8dGhpcyx0LnVwZGF0ZXM9KHRoaXMudXBkYXRlc3x8W10pLmNvbmNhdChlKSx0fWluaXQoKXtpZihudWxsPT09dGhpcy5tYXAmJih0aGlz'@; put 'Lm1hcD1uZXcgTWFwKSxudWxsIT09dGhpcy5jbG9uZUZyb20pe3RoaXMuY2xvbmVGcm9tLmluaXQoKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuY2xvbmVGcm9tLm1hcC5lbnRyaWVzKCkpdGhpcy5tYXAuc2V0KGUsdCk7dGhpcy51cGRhdGVzLmZvckVhY2goZT0+e3N3aXRjaChlLm9wKXtjYXNl'@; put 'ImEiOmNhc2UicyI6Y29uc3QgdD0iYSI9PT1lLm9wPyh0aGlzLm1hcC5nZXQoZS5wYXJhbSl8fFtdKS5zbGljZSgpOltdO3QucHVzaCh0eihlLnZhbHVlKSksdGhpcy5tYXAuc2V0KGUucGFyYW0sdCk7YnJlYWs7Y2FzZSJkIjppZih2b2lkIDA9PT1lLnZhbHVlKXt0aGlzLm1hcC5kZWxldGUo'@; put 'ZS5wYXJhbSk7YnJlYWt9e2NvbnN0IHI9KHRoaXMubWFwLmdldChlLnBhcmFtKXx8W10pLnNsaWNlKCksaT1yLmluZGV4T2YodHooZS52YWx1ZSkpOy0xIT09aSYmci5zcGxpY2UoaSwxKSxyLmxlbmd0aD4wP3RoaXMubWFwLnNldChlLnBhcmFtLHIpOnRoaXMubWFwLmRlbGV0ZShlLnBhcmFt'@; put 'KX19fSksdGhpcy5jbG9uZUZyb209dGhpcy51cGRhdGVzPW51bGx9fX1jbGFzcyBvaHR7bWFwPW5ldyBNYXA7c2V0KGUsdCl7cmV0dXJuIHRoaXMubWFwLnNldChlLHQpLHRoaXN9Z2V0KGUpe3JldHVybiB0aGlzLm1hcC5oYXMoZSl8fHRoaXMubWFwLnNldChlLGUuZGVmYXVsdFZhbHVlKCkp'@; put 'LHRoaXMubWFwLmdldChlKX1kZWxldGUoZSl7cmV0dXJuIHRoaXMubWFwLmRlbGV0ZShlKSx0aGlzfWhhcyhlKXtyZXR1cm4gdGhpcy5tYXAuaGFzKGUpfWtleXMoKXtyZXR1cm4gdGhpcy5tYXAua2V5cygpfX1mdW5jdGlvbiB3d2Uobil7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSIm'@; put 'Jm4gaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn1mdW5jdGlvbiBDd2Uobil7cmV0dXJuIHR5cGVvZiBCbG9iPCJ1IiYmbiBpbnN0YW5jZW9mIEJsb2J9ZnVuY3Rpb24gU3dlKG4pe3JldHVybiB0eXBlb2YgRm9ybURhdGE8InUiJiZuIGluc3RhbmNlb2YgRm9ybURhdGF9Y29uc3QgWkk9IkNvbnRl'@; put 'bnQtVHlwZSIsZ2llPSJYLVJlcXVlc3QtVVJMIixFd2U9InRleHQvcGxhaW4iLE13ZT0iYXBwbGljYXRpb24vanNvbiIsVHdlPWAke013ZX0sICR7RXdlfSwgKi8qYDtjbGFzcyBHSXt1cmw7Ym9keT1udWxsO2hlYWRlcnM7Y29udGV4dDtyZXBvcnRQcm9ncmVzcz0hMTt3aXRoQ3JlZGVudGlh'@; put 'bHM9ITE7Y3JlZGVudGlhbHM7a2VlcGFsaXZlPSExO2NhY2hlO3ByaW9yaXR5O21vZGU7cmVkaXJlY3Q7cmVmZXJyZXI7aW50ZWdyaXR5O3Jlc3BvbnNlVHlwZT0ianNvbiI7bWV0aG9kO3BhcmFtczt1cmxXaXRoUGFyYW1zO3RyYW5zZmVyQ2FjaGU7dGltZW91dDtjb25zdHJ1Y3RvcihlLHQs'@; put 'cixpKXtsZXQgbztpZih0aGlzLnVybD10LHRoaXMubWV0aG9kPWUudG9VcHBlckNhc2UoKSxmdW5jdGlvbiBhaHQobil7c3dpdGNoKG4pe2Nhc2UiREVMRVRFIjpjYXNlIkdFVCI6Y2FzZSJIRUFEIjpjYXNlIk9QVElPTlMiOmNhc2UiSlNPTlAiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9'@; put 'fSh0aGlzLm1ldGhvZCl8fGk/KHRoaXMuYm9keT12b2lkIDAhPT1yP3I6bnVsbCxvPWkpOm89cixvKXtpZih0aGlzLnJlcG9ydFByb2dyZXNzPSEhby5yZXBvcnRQcm9ncmVzcyx0aGlzLndpdGhDcmVkZW50aWFscz0hIW8ud2l0aENyZWRlbnRpYWxzLHRoaXMua2VlcGFsaXZlPSEhby5rZWVw'@; put 'YWxpdmUsby5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1vLnJlc3BvbnNlVHlwZSksby5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPW8uaGVhZGVycyksby5jb250ZXh0JiYodGhpcy5jb250ZXh0PW8uY29udGV4dCksby5wYXJhbXMmJih0aGlzLnBhcmFtcz1vLnBhcmFtcyksby5w'@; put 'cmlvcml0eSYmKHRoaXMucHJpb3JpdHk9by5wcmlvcml0eSksby5jYWNoZSYmKHRoaXMuY2FjaGU9by5jYWNoZSksby5jcmVkZW50aWFscyYmKHRoaXMuY3JlZGVudGlhbHM9by5jcmVkZW50aWFscyksIm51bWJlciI9PXR5cGVvZiBvLnRpbWVvdXQpe2lmKG8udGltZW91dDwxfHwhTnVtYmVy'@; put 'LmlzSW50ZWdlcihvLnRpbWVvdXQpKXRocm93IG5ldyBXbigyODIyLCIiKTt0aGlzLnRpbWVvdXQ9by50aW1lb3V0fW8ubW9kZSYmKHRoaXMubW9kZT1vLm1vZGUpLG8ucmVkaXJlY3QmJih0aGlzLnJlZGlyZWN0PW8ucmVkaXJlY3QpLG8uaW50ZWdyaXR5JiYodGhpcy5pbnRlZ3JpdHk9by5p'@; put 'bnRlZ3JpdHkpLHZvaWQgMCE9PW8ucmVmZXJyZXImJih0aGlzLnJlZmVycmVyPW8ucmVmZXJyZXIpLHRoaXMudHJhbnNmZXJDYWNoZT1vLnRyYW5zZmVyQ2FjaGV9aWYodGhpcy5oZWFkZXJzPz89bmV3IHU0LHRoaXMuY29udGV4dD8/PW5ldyBvaHQsdGhpcy5wYXJhbXMpe2NvbnN0IGE9dGhp'@; put 'cy5wYXJhbXMudG9TdHJpbmcoKTtpZigwPT09YS5sZW5ndGgpdGhpcy51cmxXaXRoUGFyYW1zPXQ7ZWxzZXtjb25zdCBsPXQuaW5kZXhPZigiPyIpO3RoaXMudXJsV2l0aFBhcmFtcz10KygtMT09PWw/Ij8iOmw8dC5sZW5ndGgtMT8iJiI6IiIpK2F9fWVsc2UgdGhpcy5wYXJhbXM9bmV3IGh2'@; put 'LHRoaXMudXJsV2l0aFBhcmFtcz10fXNlcmlhbGl6ZUJvZHkoKXtyZXR1cm4gbnVsbD09PXRoaXMuYm9keT9udWxsOiJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5fHx3d2UodGhpcy5ib2R5KXx8Q3dlKHRoaXMuYm9keSl8fFN3ZSh0aGlzLmJvZHkpfHxmdW5jdGlvbiBzaHQobil7cmV0dXJu'@; put 'IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiJiZuIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSh0aGlzLmJvZHkpP3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBodj90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10'@; put 'eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxTd2UodGhpcy5ib2R5KT9udWxsOkN3ZSh0'@; put 'aGlzLmJvZHkpP3RoaXMuYm9keS50eXBlfHxudWxsOnd3ZSh0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/RXdlOnRoaXMuYm9keSBpbnN0YW5jZW9mIGh2PyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9'@; put 'PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmJvZHk/TXdlOm51bGx9Y2xvbmUoZT17fSl7Y29uc3QgdD1lLm1ldGhvZHx8dGhpcy5tZXRob2Qscj1lLnVybHx8dGhpcy51cmwsaT1lLnJlc3BvbnNlVHlwZXx8dGhp'@; put 'cy5yZXNwb25zZVR5cGUsbz1lLmtlZXBhbGl2ZT8/dGhpcy5rZWVwYWxpdmUsYT1lLnByaW9yaXR5fHx0aGlzLnByaW9yaXR5LGw9ZS5jYWNoZXx8dGhpcy5jYWNoZSx1PWUubW9kZXx8dGhpcy5tb2RlLGc9ZS5yZWRpcmVjdHx8dGhpcy5yZWRpcmVjdCxFPWUuY3JlZGVudGlhbHN8fHRoaXMu'@; put 'Y3JlZGVudGlhbHMsTz1lLnJlZmVycmVyPz90aGlzLnJlZmVycmVyLFo9ZS5pbnRlZ3JpdHl8fHRoaXMuaW50ZWdyaXR5LGVlPWUudHJhbnNmZXJDYWNoZT8/dGhpcy50cmFuc2ZlckNhY2hlLHZlPWUudGltZW91dD8/dGhpcy50aW1lb3V0LE1lPXZvaWQgMCE9PWUuYm9keT9lLmJvZHk6dGhp'@; put 'cy5ib2R5LEhlPWUud2l0aENyZWRlbnRpYWxzPz90aGlzLndpdGhDcmVkZW50aWFscyxXZT1lLnJlcG9ydFByb2dyZXNzPz90aGlzLnJlcG9ydFByb2dyZXNzO2xldCBhdD1lLmhlYWRlcnN8fHRoaXMuaGVhZGVycyxDdD1lLnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgQXQ9ZS5jb250ZXh0'@; put 'Pz90aGlzLmNvbnRleHQ7cmV0dXJuIHZvaWQgMCE9PWUuc2V0SGVhZGVycyYmKGF0PU9iamVjdC5rZXlzKGUuc2V0SGVhZGVycykucmVkdWNlKChLdCxxdCk9Pkt0LnNldChxdCxlLnNldEhlYWRlcnNbcXRdKSxhdCkpLGUuc2V0UGFyYW1zJiYoQ3Q9T2JqZWN0LmtleXMoZS5zZXRQYXJhbXMp'@; put 'LnJlZHVjZSgoS3QscXQpPT5LdC5zZXQocXQsZS5zZXRQYXJhbXNbcXRdKSxDdCkpLG5ldyBHSSh0LHIsTWUse3BhcmFtczpDdCxoZWFkZXJzOmF0LGNvbnRleHQ6QXQscmVwb3J0UHJvZ3Jlc3M6V2UscmVzcG9uc2VUeXBlOmksd2l0aENyZWRlbnRpYWxzOkhlLHRyYW5zZmVyQ2FjaGU6ZWUs'@; put 'a2VlcGFsaXZlOm8sY2FjaGU6bCxwcmlvcml0eTphLHRpbWVvdXQ6dmUsbW9kZTp1LHJlZGlyZWN0OmcsY3JlZGVudGlhbHM6RSxyZWZlcnJlcjpPLGludGVncml0eTpafSl9fXZhciBmdj1mdW5jdGlvbihuKXtyZXR1cm4gbltuLlNlbnQ9MF09IlNlbnQiLG5bbi5VcGxvYWRQcm9ncmVzcz0x'@; put 'XT0iVXBsb2FkUHJvZ3Jlc3MiLG5bbi5SZXNwb25zZUhlYWRlcj0yXT0iUmVzcG9uc2VIZWFkZXIiLG5bbi5Eb3dubG9hZFByb2dyZXNzPTNdPSJEb3dubG9hZFByb2dyZXNzIixuW24uUmVzcG9uc2U9NF09IlJlc3BvbnNlIixuW24uVXNlcj01XT0iVXNlciIsbn0oZnZ8fHt9KTtjbGFzcyBt'@; put 'aWV7aGVhZGVycztzdGF0dXM7c3RhdHVzVGV4dDt1cmw7b2s7dHlwZTtyZWRpcmVjdGVkO2NvbnN0cnVjdG9yKGUsdD0yMDAscj0iT0siKXt0aGlzLmhlYWRlcnM9ZS5oZWFkZXJzfHxuZXcgdTQsdGhpcy5zdGF0dXM9dm9pZCAwIT09ZS5zdGF0dXM/ZS5zdGF0dXM6dCx0aGlzLnN0YXR1c1Rl'@; put 'eHQ9ZS5zdGF0dXNUZXh0fHxyLHRoaXMudXJsPWUudXJsfHxudWxsLHRoaXMucmVkaXJlY3RlZD1lLnJlZGlyZWN0ZWQsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDB9fWNsYXNzIHJ6IGV4dGVuZHMgbWlle2NvbnN0cnVjdG9yKGU9e30pe3N1cGVyKGUpfXR5cGU9'@; put 'ZnYuUmVzcG9uc2VIZWFkZXI7Y2xvbmUoZT17fSl7cmV0dXJuIG5ldyByeih7aGVhZGVyczplLmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dm9pZCAwIT09ZS5zdGF0dXM/ZS5zdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDplLnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1'@; put 'cmw6ZS51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19Y2xhc3MgJEkgZXh0ZW5kcyBtaWV7Ym9keTtjb25zdHJ1Y3RvcihlPXt9KXtzdXBlcihlKSx0aGlzLmJvZHk9dm9pZCAwIT09ZS5ib2R5P2UuYm9keTpudWxsfXR5cGU9ZnYuUmVzcG9uc2U7Y2xvbmUoZT17fSl7cmV0dXJuIG5ldyAkSSh7'@; put 'Ym9keTp2b2lkIDAhPT1lLmJvZHk/ZS5ib2R5OnRoaXMuYm9keSxoZWFkZXJzOmUuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2b2lkIDAhPT1lLnN0YXR1cz9lLnN0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OmUuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDplLnVy'@; put 'bHx8dGhpcy51cmx8fHZvaWQgMCxyZWRpcmVjdGVkOmUucmVkaXJlY3RlZD8/dGhpcy5yZWRpcmVjdGVkfSl9fWNsYXNzIE1iIGV4dGVuZHMgbWlle25hbWU9Ikh0dHBFcnJvclJlc3BvbnNlIjttZXNzYWdlO2Vycm9yO29rPSExO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsMCwiVW5rbm93biBF'@; put 'cnJvciIpLHRoaXMubWVzc2FnZT10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDA/YEh0dHAgZmFpbHVyZSBkdXJpbmcgcGFyc2luZyBmb3IgJHtlLnVybHx8Iih1bmtub3duIHVybCkifWA6YEh0dHAgZmFpbHVyZSByZXNwb25zZSBmb3IgJHtlLnVybHx8Iih1bmtub3duIHVybCki'@; put 'fTogJHtlLnN0YXR1c30gJHtlLnN0YXR1c1RleHR9YCx0aGlzLmVycm9yPWUuZXJyb3J8fG51bGx9fWZ1bmN0aW9uIHZpZShuLGUpe3JldHVybntib2R5OmUsaGVhZGVyczpuLmhlYWRlcnMsY29udGV4dDpuLmNvbnRleHQsb2JzZXJ2ZTpuLm9ic2VydmUscGFyYW1zOm4ucGFyYW1zLHJlcG9y'@; put 'dFByb2dyZXNzOm4ucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOm4ucmVzcG9uc2VUeXBlLHdpdGhDcmVkZW50aWFsczpuLndpdGhDcmVkZW50aWFscyxjcmVkZW50aWFsczpuLmNyZWRlbnRpYWxzLHRyYW5zZmVyQ2FjaGU6bi50cmFuc2ZlckNhY2hlLHRpbWVvdXQ6bi50aW1lb3V0LGtl'@; put 'ZXBhbGl2ZTpuLmtlZXBhbGl2ZSxwcmlvcml0eTpuLnByaW9yaXR5LGNhY2hlOm4uY2FjaGUsbW9kZTpuLm1vZGUscmVkaXJlY3Q6bi5yZWRpcmVjdCxpbnRlZ3JpdHk6bi5pbnRlZ3JpdHkscmVmZXJyZXI6bi5yZWZlcnJlcn19bGV0IF9pZT0oKCk9PntjbGFzcyBue2hhbmRsZXI7Y29uc3Ry'@; put 'dWN0b3IodCl7dGhpcy5oYW5kbGVyPXR9cmVxdWVzdCh0LHIsaT17fSl7bGV0IG87aWYodCBpbnN0YW5jZW9mIEdJKW89dDtlbHNle2xldCB1LGc7dT1pLmhlYWRlcnMgaW5zdGFuY2VvZiB1ND9pLmhlYWRlcnM6bmV3IHU0KGkuaGVhZGVycyksaS5wYXJhbXMmJihnPWkucGFyYW1zIGluc3Rh'@; put 'bmNlb2YgaHY/aS5wYXJhbXM6bmV3IGh2KHtmcm9tT2JqZWN0OmkucGFyYW1zfSkpLG89bmV3IEdJKHQscix2b2lkIDAhPT1pLmJvZHk/aS5ib2R5Om51bGwse2hlYWRlcnM6dSxjb250ZXh0OmkuY29udGV4dCxwYXJhbXM6ZyxyZXBvcnRQcm9ncmVzczppLnJlcG9ydFByb2dyZXNzLHJlc3Bv'@; put 'bnNlVHlwZTppLnJlc3BvbnNlVHlwZXx8Impzb24iLHdpdGhDcmVkZW50aWFsczppLndpdGhDcmVkZW50aWFscyx0cmFuc2ZlckNhY2hlOmkudHJhbnNmZXJDYWNoZSxrZWVwYWxpdmU6aS5rZWVwYWxpdmUscHJpb3JpdHk6aS5wcmlvcml0eSxjYWNoZTppLmNhY2hlLG1vZGU6aS5tb2RlLHJl'@; put 'ZGlyZWN0OmkucmVkaXJlY3QsY3JlZGVudGlhbHM6aS5jcmVkZW50aWFscyxyZWZlcnJlcjppLnJlZmVycmVyLGludGVncml0eTppLmludGVncml0eSx0aW1lb3V0OmkudGltZW91dH0pfWNvbnN0IGE9UGEobykucGlwZShORSh1PT50aGlzLmhhbmRsZXIuaGFuZGxlKHUpKSk7aWYodCBpbnN0'@; put 'YW5jZW9mIEdJfHwiZXZlbnRzIj09PWkub2JzZXJ2ZSlyZXR1cm4gYTtjb25zdCBsPWEucGlwZShzdSh1PT51IGluc3RhbmNlb2YgJEkpKTtzd2l0Y2goaS5vYnNlcnZlfHwiYm9keSIpe2Nhc2UiYm9keSI6c3dpdGNoKG8ucmVzcG9uc2VUeXBlKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4g'@; put 'bC5waXBlKEVzKHU9PntpZihudWxsIT09dS5ib2R5JiYhKHUuYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSl0aHJvdyBuZXcgV24oMjgwNiwhMSk7cmV0dXJuIHUuYm9keX0pKTtjYXNlImJsb2IiOnJldHVybiBsLnBpcGUoRXModT0+e2lmKG51bGwhPT11LmJvZHkmJiEodS5ib2R5IGlu'@; put 'c3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IFduKDI4MDcsITEpO3JldHVybiB1LmJvZHl9KSk7Y2FzZSJ0ZXh0IjpyZXR1cm4gbC5waXBlKEVzKHU9PntpZihudWxsIT09dS5ib2R5JiYic3RyaW5nIiE9dHlwZW9mIHUuYm9keSl0aHJvdyBuZXcgV24oMjgwOCwhMSk7cmV0dXJuIHUuYm9keX0p'@; put 'KTtkZWZhdWx0OnJldHVybiBsLnBpcGUoRXModT0+dS5ib2R5KSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIGw7ZGVmYXVsdDp0aHJvdyBuZXcgV24oMjgwOSwhMSl9fWRlbGV0ZSh0LHI9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkRFTEVURSIsdCxyKX1nZXQodCxyPXt9KXtyZXR1cm4gdGhp'@; put 'cy5yZXF1ZXN0KCJHRVQiLHQscil9aGVhZCh0LHI9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkhFQUQiLHQscil9anNvbnAodCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJKU09OUCIsdCx7cGFyYW1zOihuZXcgaHYpLmFwcGVuZChyLCJKU09OUF9DQUxMQkFDSyIpLG9ic2VydmU6ImJvZHki'@; put 'LHJlc3BvbnNlVHlwZToianNvbiJ9KX1vcHRpb25zKHQscj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiT1BUSU9OUyIsdCxyKX1wYXRjaCh0LHIsaT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUEFUQ0giLHQsdmllKGkscikpfXBvc3QodCxyLGk9e30pe3JldHVybiB0aGlzLnJlcXVlc3Qo'@; put 'IlBPU1QiLHQsdmllKGkscikpfXB1dCh0LHIsaT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIix0LHZpZShpLHIpKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IoWUkpKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpu'@; put 'Llx1MDI3NWZhY30pfXJldHVybiBufSkoKTtjb25zdCBrd2U9bmV3IEVyKCIiKTtmdW5jdGlvbiBSd2UobixlKXtyZXR1cm4gZShuKX1mdW5jdGlvbiBmaHQobixlKXtyZXR1cm4odCxyKT0+ZS5pbnRlcmNlcHQodCx7aGFuZGxlOmk9Pm4oaSxyKX0pfWNvbnN0IGdodD1uZXcgRXIoIiIpLHFJ'@; put 'PW5ldyBFcigiIiksbWh0PW5ldyBFcigiIiksSXdlPW5ldyBFcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+ITB9KTtmdW5jdGlvbiB2aHQoKXtsZXQgbj1udWxsO3JldHVybihlLHQpPT57bnVsbD09PW4mJihuPShzbihnaHQse29wdGlvbmFsOiEwfSk/P1tdKS5yZWR1Y2VS'@; put 'aWdodChmaHQsUndlKSk7Y29uc3Qgcj1zbihhUyk7aWYoc24oSXdlKSl7Y29uc3Qgbz1yLmFkZCgpO3JldHVybiBuKGUsdCkucGlwZShSSShvKSl9cmV0dXJuIG4oZSx0KX19bGV0IER3ZT0oKCk9PntjbGFzcyBuIGV4dGVuZHMgWUl7YmFja2VuZDtpbmplY3RvcjtjaGFpbj1udWxsO3BlbmRp'@; put 'bmdUYXNrcz1zbihhUyk7Y29udHJpYnV0ZVRvU3RhYmlsaXR5PXNuKEl3ZSk7Y29uc3RydWN0b3IodCxyKXtzdXBlcigpLHRoaXMuYmFja2VuZD10LHRoaXMuaW5qZWN0b3I9cn1oYW5kbGUodCl7aWYobnVsbD09PXRoaXMuY2hhaW4pe2NvbnN0IHI9dGhpcy5pbmplY3Rvci5nZXQoWUksbnVs'@; put 'bCx7c2tpcFNlbGY6ITB9KSxvPXRoaXMuaW5qZWN0b3IuZ2V0KG1odCxbXSxudWxsIT09ciYmdGhpcy5iYWNrZW5kPT09cj97c2VsZjohMH06dm9pZCAwKSxhPUFycmF5LmZyb20obmV3IFNldChbLi4udGhpcy5pbmplY3Rvci5nZXQocUkpLC4uLm9dKSk7dGhpcy5jaGFpbj1hLnJlZHVjZVJp'@; put 'Z2h0KChsLHUpPT5mdW5jdGlvbiBwaHQobixlLHQpe3JldHVybihyLGkpPT5MdSh0LCgpPT5lKHIsbz0+bihvLGkpKSl9KGwsdSx0aGlzLmluamVjdG9yKSxSd2UpfWlmKHRoaXMuY29udHJpYnV0ZVRvU3RhYmlsaXR5KXtjb25zdCByPXRoaXMucGVuZGluZ1Rhc2tzLmFkZCgpO3JldHVybiB0'@; put 'aGlzLmNoYWluKHQsaT0+dGhpcy5iYWNrZW5kLmhhbmRsZShpKSkucGlwZShSSShyKSl9cmV0dXJuIHRoaXMuY2hhaW4odCxyPT50aGlzLmJhY2tlbmQuaGFuZGxlKHIpKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IoZXopLG9yKG5sKSl9O3N0YXRp'@; put 'YyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KX1yZXR1cm4gbn0pKCk7Y29uc3Qgd2h0PS9eXClcXVx9Jyw/XG4vLENodD1SZWdFeHAoYF4ke2dpZX06YCwibSIpO2xldCBPd2U9KCgpPT57Y2xhc3Mgbnt4aHJGYWN0b3J5O2NvbnN0cnVjdG9yKHQpe3RoaXMu'@; put 'eGhyRmFjdG9yeT10fWhhbmRsZSh0KXtpZigiSlNPTlAiPT09dC5tZXRob2QpdGhyb3cgbmV3IFduKC0yODAwLCExKTtjb25zdCByPXRoaXMueGhyRmFjdG9yeTtyZXR1cm4gUGEobnVsbCkucGlwZShtMCgoKT0+bmV3IGhvKG89Pntjb25zdCBhPXIuYnVpbGQoKTtpZihhLm9wZW4odC5tZXRo'@; put 'b2QsdC51cmxXaXRoUGFyYW1zKSx0LndpdGhDcmVkZW50aWFscyYmKGEud2l0aENyZWRlbnRpYWxzPSEwKSx0LmhlYWRlcnMuZm9yRWFjaCgoSGUsV2UpPT5hLnNldFJlcXVlc3RIZWFkZXIoSGUsV2Uuam9pbigiLCIpKSksdC5oZWFkZXJzLmhhcygiQWNjZXB0Iil8fGEuc2V0UmVxdWVzdEhl'@; put 'YWRlcigiQWNjZXB0IixUd2UpLCF0LmhlYWRlcnMuaGFzKFpJKSl7Y29uc3QgSGU9dC5kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpO251bGwhPT1IZSYmYS5zZXRSZXF1ZXN0SGVhZGVyKFpJLEhlKX1pZih0LnRpbWVvdXQmJihhLnRpbWVvdXQ9dC50aW1lb3V0KSx0LnJlc3BvbnNlVHlwZSl7'@; put 'Y29uc3QgSGU9dC5yZXNwb25zZVR5cGUudG9Mb3dlckNhc2UoKTthLnJlc3BvbnNlVHlwZT0ianNvbiIhPT1IZT9IZToidGV4dCJ9Y29uc3QgbD10LnNlcmlhbGl6ZUJvZHkoKTtsZXQgdT1udWxsO2NvbnN0IGc9KCk9PntpZihudWxsIT09dSlyZXR1cm4gdTtjb25zdCBIZT1hLnN0YXR1c1Rl'@; put 'eHR8fCJPSyIsV2U9bmV3IHU0KGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLGF0PWZ1bmN0aW9uIFNodChuKXtyZXR1cm4icmVzcG9uc2VVUkwiaW4gbiYmbi5yZXNwb25zZVVSTD9uLnJlc3BvbnNlVVJMOkNodC50ZXN0KG4uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP24uZ2V0UmVzcG9u'@; put 'c2VIZWFkZXIoZ2llKTpudWxsfShhKXx8dC51cmw7cmV0dXJuIHU9bmV3IHJ6KHtoZWFkZXJzOldlLHN0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OkhlLHVybDphdH0pLHV9LEU9KCk9PntsZXR7aGVhZGVyczpIZSxzdGF0dXM6V2Usc3RhdHVzVGV4dDphdCx1cmw6Q3R9PWcoKSxBdD1udWxs'@; put 'OzIwNCE9PVdlJiYoQXQ9dHlwZW9mIGEucmVzcG9uc2U+InUiP2EucmVzcG9uc2VUZXh0OmEucmVzcG9uc2UpLDA9PT1XZSYmKFdlPUF0PzIwMDowKTtsZXQgS3Q9V2U+PTIwMCYmV2U8MzAwO2lmKCJqc29uIj09PXQucmVzcG9uc2VUeXBlJiYic3RyaW5nIj09dHlwZW9mIEF0KXtjb25zdCBx'@; put 'dD1BdDtBdD1BdC5yZXBsYWNlKHdodCwiIik7dHJ5e0F0PSIiIT09QXQ/SlNPTi5wYXJzZShBdCk6bnVsbH1jYXRjaChnbil7QXQ9cXQsS3QmJihLdD0hMSxBdD17ZXJyb3I6Z24sdGV4dDpBdH0pfX1LdD8oby5uZXh0KG5ldyAkSSh7Ym9keTpBdCxoZWFkZXJzOkhlLHN0YXR1czpXZSxzdGF0'@; put 'dXNUZXh0OmF0LHVybDpDdHx8dm9pZCAwfSkpLG8uY29tcGxldGUoKSk6by5lcnJvcihuZXcgTWIoe2Vycm9yOkF0LGhlYWRlcnM6SGUsc3RhdHVzOldlLHN0YXR1c1RleHQ6YXQsdXJsOkN0fHx2b2lkIDB9KSl9LE89SGU9Pntjb25zdHt1cmw6V2V9PWcoKSxhdD1uZXcgTWIoe2Vycm9yOkhl'@; put 'LHN0YXR1czphLnN0YXR1c3x8MCxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dHx8IlVua25vd24gRXJyb3IiLHVybDpXZXx8dm9pZCAwfSk7by5lcnJvcihhdCl9O2xldCBaPU87dC50aW1lb3V0JiYoWj1IZT0+e2NvbnN0e3VybDpXZX09ZygpLGF0PW5ldyBNYih7ZXJyb3I6bmV3IERPTUV4Y2Vw'@; put 'dGlvbigiUmVxdWVzdCB0aW1lZCBvdXQiLCJUaW1lb3V0RXJyb3IiKSxzdGF0dXM6YS5zdGF0dXN8fDAsc3RhdHVzVGV4dDphLnN0YXR1c1RleHR8fCJSZXF1ZXN0IHRpbWVvdXQiLHVybDpXZXx8dm9pZCAwfSk7by5lcnJvcihhdCl9KTtsZXQgZWU9ITE7Y29uc3QgdmU9SGU9PntlZXx8KG8u'@; put 'bmV4dChnKCkpLGVlPSEwKTtsZXQgV2U9e3R5cGU6ZnYuRG93bmxvYWRQcm9ncmVzcyxsb2FkZWQ6SGUubG9hZGVkfTtIZS5sZW5ndGhDb21wdXRhYmxlJiYoV2UudG90YWw9SGUudG90YWwpLCJ0ZXh0Ij09PXQucmVzcG9uc2VUeXBlJiZhLnJlc3BvbnNlVGV4dCYmKFdlLnBhcnRpYWxUZXh0'@; put 'PWEucmVzcG9uc2VUZXh0KSxvLm5leHQoV2UpfSxNZT1IZT0+e2xldCBXZT17dHlwZTpmdi5VcGxvYWRQcm9ncmVzcyxsb2FkZWQ6SGUubG9hZGVkfTtIZS5sZW5ndGhDb21wdXRhYmxlJiYoV2UudG90YWw9SGUudG90YWwpLG8ubmV4dChXZSl9O3JldHVybiBhLmFkZEV2ZW50TGlzdGVuZXIo'@; put 'ImxvYWQiLEUpLGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLE8pLGEuYWRkRXZlbnRMaXN0ZW5lcigidGltZW91dCIsWiksYS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsTyksdC5yZXBvcnRQcm9ncmVzcyYmKGEuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLHZlKSxudWxsIT09bCYm'@; put 'YS51cGxvYWQmJmEudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixNZSkpLGEuc2VuZChsKSxvLm5leHQoe3R5cGU6ZnYuU2VudH0pLCgpPT57YS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsTyksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsTyksYS5yZW1vdmVF'@; put 'dmVudExpc3RlbmVyKCJsb2FkIixFKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLFopLHQucmVwb3J0UHJvZ3Jlc3MmJihhLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIix2ZSksbnVsbCE9PWwmJmEudXBsb2FkJiZhLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCJw'@; put 'cm9ncmVzcyIsTWUpKSxhLnJlYWR5U3RhdGUhPT1hLkRPTkUmJmEuYWJvcnQoKX19KSkpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihsSCkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJu'@; put 'IG59KSgpO2NvbnN0IHdpZT1uZXcgRXIoIiIpLE53ZT1uZXcgRXIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PiJYU1JGLVRPS0VOIn0pLEZ3ZT1uZXcgRXIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PiJYLVhTUkYtVE9LRU4ifSk7Y2xhc3MgUHdle31sZXQg'@; put 'VGh0PSgoKT0+e2NsYXNzIG57ZG9jO2Nvb2tpZU5hbWU7bGFzdENvb2tpZVN0cmluZz0iIjtsYXN0VG9rZW49bnVsbDtwYXJzZUNvdW50PTA7Y29uc3RydWN0b3IodCxyKXt0aGlzLmRvYz10LHRoaXMuY29va2llTmFtZT1yfWdldFRva2VuKCl7Y29uc3QgdD10aGlzLmRvYy5jb29raWV8fCIi'@; put 'O3JldHVybiB0IT09dGhpcy5sYXN0Q29va2llU3RyaW5nJiYodGhpcy5wYXJzZUNvdW50KyssdGhpcy5sYXN0VG9rZW49bXkodCx0aGlzLmNvb2tpZU5hbWUpLHRoaXMubGFzdENvb2tpZVN0cmluZz10KSx0aGlzLmxhc3RUb2tlbn1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVy'@; put 'biBuZXcocnx8bikob3IoVGwpLG9yKE53ZSkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJuIG59KSgpO2NvbnN0IHhodD0vXig/Omh0dHBzPzopP1wvXC8vaTtmdW5jdGlvbiBBaHQobixlKXtpZighc24od2llKXx8IkdFVCI9PT1u'@; put 'Lm1ldGhvZHx8IkhFQUQiPT09bi5tZXRob2R8fHhodC50ZXN0KG4udXJsKSlyZXR1cm4gZShuKTtjb25zdCB0PXNuKFB3ZSkuZ2V0VG9rZW4oKSxyPXNuKEZ3ZSk7cmV0dXJuIG51bGwhPXQmJiFuLmhlYWRlcnMuaGFzKHIpJiYobj1uLmNsb25lKHtoZWFkZXJzOm4uaGVhZGVycy5zZXQocix0'@; put 'KX0pKSxlKG4pfXZhciBwdj1mdW5jdGlvbihuKXtyZXR1cm4gbltuLkludGVyY2VwdG9ycz0wXT0iSW50ZXJjZXB0b3JzIixuW24uTGVnYWN5SW50ZXJjZXB0b3JzPTFdPSJMZWdhY3lJbnRlcmNlcHRvcnMiLG5bbi5DdXN0b21Yc3JmQ29uZmlndXJhdGlvbj0yXT0iQ3VzdG9tWHNyZkNvbmZp'@; put 'Z3VyYXRpb24iLG5bbi5Ob1hzcmZQcm90ZWN0aW9uPTNdPSJOb1hzcmZQcm90ZWN0aW9uIixuW24uSnNvbnBTdXBwb3J0PTRdPSJKc29ucFN1cHBvcnQiLG5bbi5SZXF1ZXN0c01hZGVWaWFQYXJlbnQ9NV09IlJlcXVlc3RzTWFkZVZpYVBhcmVudCIsbltuLkZldGNoPTZdPSJGZXRjaCIsbn0o'@; put 'cHZ8fHt9KTtmdW5jdGlvbiBUYihuLGUpe3JldHVybntcdTAyNzVraW5kOm4sXHUwMjc1cHJvdmlkZXJzOmV9fWZ1bmN0aW9uIGtodCguLi5uKXtjb25zdCBlPVtfaWUsT3dlLER3ZSx7cHJvdmlkZTpZSSx1c2VFeGlzdGluZzpEd2V9LHtwcm92aWRlOmV6LHVzZUZhY3Rvcnk6KCk9PnNuKGt3'@; put 'ZSx7b3B0aW9uYWw6ITB9KT8/c24oT3dlKX0se3Byb3ZpZGU6cUksdXNlVmFsdWU6QWh0LG11bHRpOiEwfSx7cHJvdmlkZTp3aWUsdXNlVmFsdWU6ITB9LHtwcm92aWRlOlB3ZSx1c2VDbGFzczpUaHR9XTtmb3IoY29uc3QgdCBvZiBuKWUucHVzaCguLi50Llx1MDI3NXByb3ZpZGVycyk7cmV0'@; put 'dXJuIG5kKGUpfWNvbnN0IEh3ZT1uZXcgRXIoIiIpO2xldCBWd2U9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGkpe3RoaXMuaHR0cD1yLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPWksdGhpcy51cmw9IiIsdGhpcy5kcml2ZVVybD0iIix0aGlzLmh0dHBPcHRpb25zPXt3aXRoQ3Jl'@; put 'ZGVudGlhbHM6ITB9fXNldHVwKCl7Y29uc3Qgcj10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3RoaXMudXJsPWAke3I/LnNlcnZlclVybHx8IiJ9L1NBU2pzQXBpYCx0aGlzLmRyaXZlVXJsPWAke3RoaXMudXJsfS9kcml2ZWB9Z2V0U2VydmVySW5mbygpe3Jl'@; put 'dHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXJsfS9pbmZvYCl9Z2V0RmlsZUZyb21Ecml2ZShyKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmRyaXZlVXJsfS9maWxlLz9fZmlsZVBhdGg9JHtyfWAsdGhpcy5odHRwT3B0aW9ucyl9Z2V0Rm9sZGVyQ29udGVudHNGcm9tRHJpdmUo'@; put 'cil7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZm9sZGVyP19mb2xkZXJQYXRoPSR7cn1gLHRoaXMuaHR0cE9wdGlvbnMpfWdldEZpbGVUcmVlRnJvbURyaXZlKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZmlsZXRyZWVgLHRoaXMuaHR0'@; put 'cE9wdGlvbnMpfWdldEZpbGVGcm9tRmlsZVRyZWUocil7cmV0dXJuIG5ldyBQcm9taXNlKChpLG8pPT57dGhpcy5nZXRGaWxlVHJlZUZyb21Ecml2ZSgpLnN1YnNjcmliZShhPT57Y29uc3QgdT10aGlzLmZpbmRJblRyZWUoYS50cmVlLHIpO2kodSl9KX0pfWZpbmRJblRyZWUocixpKXtpZihy'@; put 'LnJlbGF0aXZlUGF0aD09PWkpcmV0dXJuIHI7Zm9yKGxldCBvIG9mIHIuY2hpbGRyZW4pe2NvbnN0IGE9dGhpcy5maW5kSW5UcmVlKG8saSk7aWYoYSlyZXR1cm4gYX19c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkob3IoX2llKSxv'@; put 'cihFYikpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpLENpZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSl7dGhpcy5odHRwPXIsdGhpcy5hcHBTdG9yZVNlcnZp'@; put 'Y2U9aSx0aGlzLnZpeWFBcGlzPXtBbmFseXRpY3NfSW5zaWdodHM6e2luc2lnaHRzOiIvaW5zaWdodHMifSxWaXN1YWxpc2F0aW9uOntyZXBvcnRzOiIvcmVwb3J0cyIscmVwb3J0SW1hZ2VzOiIvcmVwb3J0SW1hZ2VzIixyZXBvcnRUcmFuc2Zvcm1zOiIvcmVwb3J0VHJhbnNmb3JtcyIsdmlz'@; put 'dWFsQW5hbHl0aWNzOiIvdmlzdWFsQW5hbHl0aWNzIn0sQ29tcHV0ZTp7am9iczoiL2pvYkRlZmluaXRpb25zIixqb2JFeGVjdXRpb246Ii9qb2JFeGVjdXRpb24iLGNvbnRleHRzOiIvY29tcHV0ZS9jb250ZXh0cyJ9LERlY2lzaW9uX01hbmFnZW1lbnQ6e21vZGVsTWFuYWdlbWVudDoiL21v'@; put 'ZGVsTWFuYWdlbWVudCIsbW9kZWxSZXBvc2l0b3J5OiIvbW9kZWxSZXBvc2l0b3J5Iixtb2RlbFB1Ymxpc2g6Ii9tb2RlbFB1Ymxpc2giLG1pY3JvYW5hbHl0aWNTY29yZToiL21pY3JvYW5hbHl0aWNTY29yZSIsZGF0YU1pbmluZzoiL2RhdGFNaW5pbmciLGJ1c2luZXNzUnVsZXM6Ii9idXNp'@; put 'bmVzc1J1bGVzIixyZWZlcmVuY2VEYXRhOiIvcmVmZXJlbmNlRGF0YSIsdHJlYXRtZW50RGVmaW5pdGlvbnM6Ii90cmVhdG1lbnREZWZpbml0aW9ucyIsc3ViamVjdENvbnRhY3RzOiIvc3ViamVjdENvbnRhY3RzIixkZWNpc2lvbnNSdW50aW1lQnVpbGRlcjoiL2RlY2lzaW9uc1J1bnRpbWVC'@; put 'dWlsZGVyIn0sQ29yZV9TZXJ2aWNlczp7Zm9sZGVyczoiL2ZvbGRlcnMiLGZpbGVzOiIvZmlsZXMiLGFubm90YXRpb25zOiIvYW5ub3RhdGlvbnMiLGF1dGhvcml6YXRpb246Ii9hdXRob3JpemF0aW9uIixyZWxhdGlvbnNoaXBzOiIvcmVsYXRpb25zaGlwcyIsU0FTTG9nb246Ii9TQVNMb2dv'@; put 'biJ9LEF1dG9tYXRlZF9NYWNoaW5lX0xlYXJuaW5nOnttbFBpcGVsaW5lQXV0b21hdGlvbjoiL21sUGlwZWxpbmVBdXRvbWF0aW9uIn0sT3RoZXI6e2lkZW50aXRpZXM6Ii9pZGVudGl0aWVzIn19LHRoaXMuc2VydmVyVXJsPSIifXNldHVwKCl7Y29uc3Qgcj10aGlzLmFwcFN0b3JlU2Vydmlj'@; put 'ZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3RoaXMuc2VydmVyVXJsPXI/LnNlcnZlclVybHx8IiJ9Z2V0QWxsQ29sbGVjdGlvbnMoKXtyZXR1cm4gdGhpcy52aXlhQXBpc31nZXRCeVVybChyKXtyZXR1cm4gdGhpcy5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9JHtyfWAse3dpdGhDcmVkZW50aWFs'@; put 'czohMH0pfWdldEJ5Q29sbGVjdGlvbihyKXtyZXR1cm4gdGhpcy5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9JHtyfWAse3dpdGhDcmVkZW50aWFsczohMH0pfWdldENvbXB1dGVDb250ZXh0cygpe3JldHVybiB0aGlzLmdldChgJHt0aGlzLnNlcnZlclVybH0vY29tcHV0ZS9jb250ZXh0cz9saW1p'@; put 'dD0xMDAwYCx7d2l0aENyZWRlbnRpYWxzOiEwfSl9Z2V0Q29tcHV0ZUNvbnRleHRCeUlkKHIpe3JldHVybiB0aGlzLmdldChgJHt0aGlzLnNlcnZlclVybH0vY29tcHV0ZS9jb250ZXh0cy8ke3J9YCx7d2l0aENyZWRlbnRpYWxzOiEwfSl9Z2V0Rm9sZGVyQnlQYXRoKHIpe3JldHVybiB0aGlz'@; put 'LmdldChgJHt0aGlzLnNlcnZlclVybH0vZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9JHtyfWAse3dpdGhDcmVkZW50aWFsczohMH0pfWdldEZvbGRlck1lbWJlcnMocixpPTUwMCl7cmV0dXJuIHRoaXMuZ2V0KGAke3RoaXMuc2VydmVyVXJsfS9mb2xkZXJzL2ZvbGRlcnMvJHtyfS9tZW1i'@; put 'ZXJzP2xpbWl0PSR7aX1gLHt3aXRoQ3JlZGVudGlhbHM6ITB9KX1nZXRBZG1pbkdyb3VwcyhyPTVlMyl7cmV0dXJuIHRoaXMuZ2V0KGAke3RoaXMuc2VydmVyVXJsfS9pZGVudGl0aWVzL2dyb3Vwcz9zb3J0Qnk9bmFtZSZsaW1pdD0ke3J9YCx7d2l0aENyZWRlbnRpYWxzOiEwfSl9Z2V0Q3Vy'@; put 'cmVudFVzZXJHcm91cE1lbWJlcnNoaXBzKHI9MWU0KXtyZXR1cm4gdGhpcy5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9L2lkZW50aXRpZXMvdXNlcnMvQGN1cnJlbnRVc2VyL21lbWJlcnNoaXBzP2xpbWl0PSR7cn1gLHt3aXRoQ3JlZGVudGlhbHM6ITB9KX1nZXRDdXJyZW50VXNlcigpe3JldHVy'@; put 'biB0aGlzLmdldChgJHt0aGlzLnNlcnZlclVybH0vaWRlbnRpdGllcy91c2Vycy9AY3VycmVudFVzZXJgLHt3aXRoQ3JlZGVudGlhbHM6ITB9KX1nZXQocixpKXtyZXR1cm4gdGhpcy5odHRwLmdldChyLGkpLnBpcGUoeWIobz0+KGNvbnNvbGUubG9nKCJ1cmwiLHIpLGNvbnNvbGUubG9nKCJl'@; put 'cnIuc3RhdHVzIixvLnN0YXR1cyksNDQ5PT09by5zdGF0dXN8fDQwMT09PW8uc3RhdHVzP3RoaXMuaHR0cC5nZXQocixpKTprSSgoKT0+bykpKSl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkob3IoX2llKSxvcihFYikpfSx0aGlz'@; put 'Llx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpLFNpZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7dGhpcy5zdGVwcz1be2xhYmVsOiJDaGVja2luZyBhcHAgbG9jYXRpb24iLHN0'@; put 'YXR1czoicGVuZGluZyJ9LHtsYWJlbDoiQ2hlY2tpbmcgVml5YSBkZXBsb3kiLHN0YXR1czoicGVuZGluZyJ9LHtsYWJlbDoiTG9hZGluZyBzdGFydHVwIHNlcnZpY2UiLHN0YXR1czoicGVuZGluZyJ9XSx0aGlzLnN0ZXBzJD1uZXcgJGkoWy4uLnRoaXMuc3RlcHNdKX11cGRhdGVTdGVwKHIs'@; put 'aSxvKXtyPj0wJiZyPHRoaXMuc3RlcHMubGVuZ3RoJiYodGhpcy5zdGVwc1tyXT17Li4udGhpcy5zdGVwc1tyXSxzdGF0dXM6aSxkZXRhaWw6bz8/dGhpcy5zdGVwc1tyXS5kZXRhaWx9LHRoaXMuc3RlcHMkLm5leHQoWy4uLnRoaXMuc3RlcHNdKSl9c2V0U3RlcHMocil7dGhpcy5zdGVwcz1y'@; put 'LHRoaXMuc3RlcHMkLm5leHQoWy4uLnRoaXMuc3RlcHNdKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVwcm92PUpuKHt0b2tlbjplLGZhY3Rvcnk6ZS5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSl9'@; put 'cmV0dXJuIG4oKSxlfSkoKTtjb25zdCBCd2U9WyJzZXJ2aWNlcy9wdWJsaWMvc3RhcnR1cHNlcnZpY2UiLCJzZXJ2aWNlcy9lZGl0b3JzL2dldGRhdGEiLCJzZXJ2aWNlcy9lZGl0b3JzL2dldGR5bmFtaWNjb2x2YWxzIiwic2VydmljZXMvZWRpdG9ycy9zdGFnZWRhdGEiLCJzZXJ2aWNlcy9l'@; put 'ZGl0b3JzL2xvYWRmaWxlIiwic2VydmljZXMvZWRpdG9ycy9yZXN0b3JlIiwic2VydmljZXMvYXVkaXRvcnMvcG9zdGRhdGEiXTtsZXQgaWM9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwsdSxnLEUpe3RoaXMuYXBwU3RvcmVTZXJ2aWNlPXIsdGhpcy51c2VyU2Vy'@; put 'dmljZT1pLHRoaXMuZXZlbnRTZXJ2aWNlPW8sdGhpcy5zYXNqc1NlcnZpY2U9YSx0aGlzLnNhc1ZpeWFTZXJ2aWNlPWwsdGhpcy5sb2dnZXJTZXJ2aWNlPXUsdGhpcy5zdGFydHVwQ2hlY2tTZXJ2aWNlPWcsdGhpcy5yb3V0ZXI9RSx0aGlzLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXI9bmV3'@; put 'IEtyLHRoaXMuaW5jb3JyZWN0U2l0ZUlkRW1pdHRlcj1uZXcgS3IsdGhpcy5yZXF1ZXN0U2l0ZUlkRW1pdHRlcj1uZXcgS3IsdGhpcy5zYXNqc0FkYXB0ZXI9bmV3KF93ZSgpKSx0aGlzLmFwcExvY0NoZWNrUGVuZGluZz0hMSx0aGlzLnNob3VsZExvZ2luPW5ldyAkaSghMSksdGhpcy5saWNl'@; put 'bnNlX3NpdGVfaWQ9bmV3ICRpKG51bGwpfXNhc1NlcnZpY2VJbml0KCl7aWYodGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpLHRoaXMuc2FzanNTZXJ2aWNlLnNldHVwKCksdGhpcy5zYXNWaXlhU2VydmljZS5zZXR1cCgp'@; put 'LHRoaXMuZGNBZGFwdGVyU2V0dGluZ3Mpe3N3aXRjaCh0aGlzLnNhc2pzQWRhcHRlcj1uZXcoX3dlKCkpKHRoaXMuZGNBZGFwdGVyU2V0dGluZ3MpLHRoaXMuZGNBZGFwdGVyU2V0dGluZ3Muc2VydmVyVHlwZSl7Y2FzZSBfMC5ZLlNhc1ZpeWE6dGhpcy5jaGVja1ZpeWFEZXBsb3kodGhpcy5k'@; put 'Y0FkYXB0ZXJTZXR0aW5ncy5hcHBMb2N8fCIiKTticmVhaztjYXNlIF8wLlkuU2FzOTp0aGlzLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXIuZW1pdCgpO2JyZWFrO2Nhc2UgXzAuWS5TYXNqczp0aGlzLmNoZWNrU2FzanNEZXBsb3koKX0iUmVkaXJlY3RlZCI9PT10aGlzLmdldFNhc2pzQ29u'@; put 'ZmlnKCkubG9naW5NZWNoYW5pc20mJnRoaXMuc2hvdWxkTG9naW4uc3Vic2NyaWJlKHI9PntyJiZ0aGlzLnNhc2pzQWRhcHRlci5sb2dJbigpLnRoZW4oaT0+e2NvbnNvbGUubG9nKCJyZXMiLGkpfSl9KX1lbHNlIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQWRh'@; put 'cHRlciBzZXR0aW5ncyAoaW5kZXguaHRtbCkgYXJlIG5vdCBwcmVzZW50LiIpfXJlcXVlc3QocixpLG8sYSl7aWYoYXx8KGE9e30pLEJ3ZS5pbmNsdWRlcyhyPSJzZXJ2aWNlcy8iK3IpJiZudWxsPT1pJiYoaT17fSksaSYmIm9iamVjdCI9PXR5cGVvZiBpJiYhaS5icm93c2VyX2luZm8mJkJ3'@; put 'ZS5pbmNsdWRlcyhyKSl7Y29uc3QgbD1JbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsdT1mdW5jdGlvbiBlaHQobil7Y29uc3QgZT1ufHwiIix0PWE9PihlLm1hdGNoKGEpfHxbXSlbMV18fCIiO2xldCByPSJVbmtub3duIixpPSIiO2Zvcihjb25zdCBh'@; put 'IG9mIEpkdClpZihhLnRva2VuLnRlc3QoZSkpe3I9YS5uYW1lLGk9dChhLnZlcnNpb24pO2JyZWFrfWxldCBvPSJVbmtub3duIjtyZXR1cm4vQW5kcm9pZC8udGVzdChlKT9vPSJBbmRyb2lkIjovaVBob25lfGlQYWR8aVBvZC8udGVzdChlKT9vPSJpT1MiOi9XaW5kb3dzLy50ZXN0KGUpP289'@; put 'IldpbmRvd3MiOi9NYWMgT1MgWC8udGVzdChlKT9vPSJtYWNPUyI6L0xpbnV4Ly50ZXN0KGUpJiYobz0iTGludXgiKSx7YnJvd3NlcjpyLGJyb3dzZXJWZXJzaW9uOmkscGxhdGZvcm06b319KG5hdmlnYXRvci51c2VyQWdlbnQpO2kuYnJvd3Nlcl9pbmZvPVt7dXJsOndpbmRvdy5sb2NhdGlv'@; put 'bi5ocmVmLHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLHRpbWV6b25lOmx8fCIiLHR6X29mZnNldDoobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCksbG9jYWxlOm5hdmlnYXRvci5sYW5ndWFnZXx8IiIsZGNfdmVyc2lvbjoiNy4xNi4wIixhZGFwdGVyX3ZlcnNpb246IjQuMTkuMCIs'@; put 'YnJvd3Nlcjp1LmJyb3dzZXIsYnJvd3Nlcl92ZXJzaW9uOnUuYnJvd3NlclZlcnNpb24scGxhdGZvcm06dS5wbGF0Zm9ybSx1c2VyX2FnZW50Om5hdmlnYXRvci51c2VyQWdlbnR8fCIifV07Y29uc3QgZz10aGlzLmNvbGxlY3RCcm93c2VyVXJsVmFycygpO2cubGVuZ3RoJiYoaS5icm93c2Vy'@; put 'X3VybF92YXJzPWcpfXJldHVybiB0aGlzLmxvZ2dlclNlcnZpY2UubG9nUmVxdWVzdERhdGEocixpKSxuZXcgUHJvbWlzZSgobCx1KT0+e3RoaXMuc2FzanNBZGFwdGVyLnJlcXVlc3QocixpLG8sKCk9Pnt0aGlzLnNob3VsZExvZ2luLm5leHQoITApfSkudGhlbihnPT57Y29uc3QgRT10aGlz'@; put 'LnNhc2pzQWRhcHRlci5nZXRTYXNSZXF1ZXN0cygpLmZpbmQoTz0+Ty5zZXJ2aWNlTGluaz09PXIpO2lmKCExPT09Zy5sb2dpbiYmKHRoaXMuc2hvdWxkTG9naW4ubmV4dCghMCksdSh7YWRhcHRlclJlc3BvbnNlOiExLGxvZzpFPy5sb2dGaWxlfSkpLCF0aGlzLnVzZXJTZXJ2aWNlLnVzZXIm'@; put 'JmcuTUZfR0VUVVNFUiYmKHRoaXMudXNlclNlcnZpY2UudXNlcj17dXNlcm5hbWU6Zy5NRl9HRVRVU0VSfSksZy5TWVNTSVRFJiYodGhpcy5yZXF1ZXN0U2l0ZUlkRW1pdHRlci5lbWl0KGcuU1lTU0lURSksdGhpcy5nZXRMaWNlbnNlU2l0ZUlkKCkubGVuZ3RoPjAmJih0aGlzLmdldExpY2Vu'@; put 'c2VTaXRlSWQoKS5pbmNsdWRlcyhnLlNZU1NJVEUpfHx0aGlzLmluY29ycmVjdFNpdGVJZEVtaXR0ZXIuZW1pdChnLlNZU1NJVEUpKSksNDA0PT09Zy5zdGF0dXMmJnUoe2FkYXB0ZXJSZXNwb25zZTp7TUVTU0FHRTpnLmJvZHl8fCJTQVMgUmVzcG9uZGVkIHdpdGggZXJyb3IifSxsb2c6RT8u'@; put 'bG9nRmlsZX0pLHR5cGVvZiBnLnNhc2pzQWJvcnQ8InUiKXtjb25zdCBPPWcsWj1PLnNhc2pzQWJvcnRbMF0uTVNHLGVlPU8uc2FzanNBYm9ydFswXS5NQUM7aWYoWi5pbmNsdWRlcygiRGF0YV9Db250cm9sbGVyX1NldHRpbmdzKFN0b3JlZFByb2Nlc3MpIG5vdCBmb3VuZCIpKXJldHVybiB0'@; put 'aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSx2b2lkIHUoe2FkYXB0ZXJSZXNwb25zZTp7ZXJyb3I6Wn0sbG9nOkU/LmxvZ0ZpbGV9KTthPy5zdXBwcmVzc1N1Y2Nlc3NBYm9ydE1vZGFsfHx0aGlzLmV2ZW50'@; put 'U2VydmljZS5zaG93QWJvcnRNb2RhbChyLnJlcGxhY2UoInNlcnZpY2VzLyIsIiIpLFose1NZU1dBUk5JTkdURVhUOk8uU1lTV0FSTklOR1RFWFQsU1lTRVJST1JURVhUOk8uU1lTRVJST1JURVhULE1BQzplZSxfUFJPR1JBTTpPLl9QUk9HUkFNfSksdSh7YWRhcHRlclJlc3BvbnNlOntlcnJv'@; put 'cjpafSxsb2c6RT8ubG9nRmlsZX0pfWwoe2FkYXB0ZXJSZXNwb25zZTpnLGxvZzpFPy5sb2dGaWxlfSl9LGc9Pntjb25zb2xlLmVycm9yKGcpO2NvbnN0IEU9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzUmVxdWVzdHMoKS5maW5kKE89Pk8uc2VydmljZUxpbms9PT1yKTtpZihnLmVycm9yKXts'@; put 'ZXQgWixPPWcuZXJyb3IubWVzc2FnZTtnLmVycm9yLmRldGFpbHMmJmcuZXJyb3IuZGV0YWlscy5sb2cmJihaPWcuZXJyb3IuZGV0YWlscy5sb2cpLCghT3x8Ty50cmltKCkubGVuZ3RoPDEpJiYoTz0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCIpLGE/LnN1cHByZXNzRXJyb3JBYm9ydE1v'@; put 'ZGFsfHx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChyLE8se0xPRzpafSwiUmVxdWVzdCBlcnJvciIpLHUoe2FkYXB0ZXJSZXNwb25zZTp7ZXJyb3I6T30sbG9nOkU/LmxvZ0ZpbGV9KX11KHthZGFwdGVyUmVzcG9uc2U6Zyxsb2c6RT8ubG9nRmlsZX0pfSl9KX1jb2xsZWN0QnJv'@; put 'd3NlclVybFZhcnMoKXtjb25zdCByPVtdLGk9bmV3IFNldCxvPWw9PntuZXcgVVJMU2VhcmNoUGFyYW1zKGwpLmZvckVhY2goKHUsZyk9PntpLmhhcyhnKXx8KGkuYWRkKGcpLHIucHVzaCh7bmFtZTpnLHZhbHVlOnV9KSl9KX07d2luZG93LmxvY2F0aW9uLnNlYXJjaCYmbyh3aW5kb3cubG9j'@; put 'YXRpb24uc2VhcmNoLnNsaWNlKDEpKTtjb25zdCBhPXdpbmRvdy5sb2NhdGlvbi5oYXNoLnNwbGl0KCI/IilbMV07cmV0dXJuIGEmJm8oYSkscn11cGxvYWRGaWxlKHIsaSxvKXtyZXR1cm4gbmV3IFByb21pc2UoKGEsbCk9Pnt0aGlzLnNhc2pzQWRhcHRlci51cGxvYWRGaWxlKHIsaSxvKS50'@; put 'aGVuKHU9Pntjb25zdCBnPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc1JlcXVlc3RzKCkuZmluZChFPT4ic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSI9PT1FLnNlcnZpY2VMaW5rKTthKHthZGFwdGVyUmVzcG9uc2U6dSxsb2c6Zz8ubG9nRmlsZX0pfSx1PT57Y29uc3QgZz10aGlzLnNhc2pz'@; put 'QWRhcHRlci5nZXRTYXNSZXF1ZXN0cygpLmZpbmQoRT0+InNlcnZpY2VzL2VkaXRvcnMvbG9hZGZpbGUiPT09RS5zZXJ2aWNlTGluayk7bCh7cmVzcG9uc2U6dSxsb2c6Zz8ubG9nRmlsZX0pfSl9KX1sb2dpbihyLGkpe3ZhciBvPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2NvbnN0IGE9'@; put 'by5nZXRTZXJ2ZXJUeXBlKCk9PT1fMC5ZLlNhc2pzPyJjbGllbnRJRDEiOnZvaWQgMDtyZXR1cm4gby5zYXNqc0FkYXB0ZXIubG9nSW4ocixpLGEpLnRoZW4obD0+KGwuaXNMb2dnZWRJbiYmKG8udXNlclNlcnZpY2UudXNlcj17dXNlcm5hbWU6bC51c2VyTmFtZX0sby5hcHBMb2NDaGVja1Bl'@; put 'bmRpbmcmJihvLmNoZWNrVml5YURlcGxveShvLmRjQWRhcHRlclNldHRpbmdzPy5hcHBMb2N8fCIiKSxvLmFwcExvY0NoZWNrUGVuZGluZz0hMSkpLG8uc2hvdWxkTG9naW4ubmV4dCghbC5pc0xvZ2dlZEluKSxsLmlzTG9nZ2VkSW4pLGw9Pihjb25zb2xlLmVycm9yKGwpLG8uc2hvdWxkTG9n'@; put 'aW4ubmV4dCghMCksITEpKS5jYXRjaChsPT4oNDAzPT09bCYmY29uc29sZS5lcnJvcigiSW52YWxpZCBob3N0IiksITEpKX0pKCl9cmVsb2FkU3RhcnR1cERhdGEoKXt0aGlzLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXIuZW1pdCgpfWdldExpY2Vuc2VTaXRlSWQoKXtyZXR1cm4gdGhpcy5s'@; put 'aWNlbnNlX3NpdGVfaWQudmFsdWV8fFtdfXNldExpY2Vuc2VTaXRlSWQocil7dGhpcy5saWNlbnNlX3NpdGVfaWQubmV4dCgib2JqZWN0Ij09dHlwZW9mIHI/cjpbcl0pfWNoZWNrU2FzanNEZXBsb3koKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtjb25zdCBvPWAke3IuZ2V0'@; put 'U2FzanNDb25maWcoKS5hcHBMb2N9L3NlcnZpY2VzL2FkbWluYDtyLnNhc2pzU2VydmljZS5nZXRGb2xkZXJDb250ZW50c0Zyb21Ecml2ZShvKS5zdWJzY3JpYmUoYT0+e2EuZmlsZXMuaW5jbHVkZXMoIm1ha2VkYXRhLnNhcyIpfHxhLmZpbGVzLmluY2x1ZGVzKCJtYWtlZGF0YS5qcyIpPyhy'@; put 'LmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHIucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSk6KHIubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCksci5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKSYmci5yb3V0ZXIubmF2aWdhdGVCeVVybCgiLyIp'@; put 'KX0sYT0+e2NvbnN0IGw9InN0cmluZyI9PXR5cGVvZiBhLmVycm9yP2EuZXJyb3I6SlNPTi5zdHJpbmdpZnkoYS5lcnJvcnx8YSk7bC5pbmNsdWRlcygiVW5hdXRob3JpemVkIik/KHIuc2hvdWxkTG9naW4ubmV4dCghMCksci5zaG91bGRMb2dpbi5zdWJzY3JpYmUodT0+eyExPT09dSYmbG9j'@; put 'YXRpb24ucmVsb2FkKCl9KSk6bC5pbmNsdWRlcygiRm9sZGVyIGRvZXNuJ3QgZXhpc3QuIikmJihjb25zb2xlLndhcm4oIlNBU2pzIFNBUyBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLHIuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCks'@; put 'ci5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpKX0pfSkoKX1zYXNqc01ha2VkYXRhQ2hlY2tpbmcoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgaT1DcihmdW5jdGlvbioobyxhKXtyLmNoZWNraW5nSW50'@; put 'ZXJ2YWw9c2V0SW50ZXJ2YWwoQ3IoZnVuY3Rpb24qKCl7ci5zYXNqc01ha2VkYXRhU3VjY2Vzc2Z1bGwoKS50aGVuKGw9PntsJiYoY2xlYXJJbnRlcnZhbChyLmNoZWNraW5nSW50ZXJ2YWwpLG8obCkpfSkuY2F0Y2gobD0+e2NsZWFySW50ZXJ2YWwoci5jaGVja2luZ0ludGVydmFsKSxhKGwp'@; put 'fSl9KSwxZTMpfSk7cmV0dXJuIGZ1bmN0aW9uKG8sYSl7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9KSgpfXNhc2pzTWFrZWRhdGFTdWNjZXNzZnVsbCgpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e2NvbnN0'@; put 'IGw9YCR7ci5nZXRTYXNqc0NvbmZpZygpLmFwcExvY30vc2VydmljZXMvYWRtaW5gO3Iuc2FzanNTZXJ2aWNlLmdldEZvbGRlckNvbnRlbnRzRnJvbURyaXZlKGwpLnN1YnNjcmliZSh1PT57dS5maWxlcy5pbmNsdWRlcygibWFrZWRhdGEuc2FzIil8fHUuZmlsZXMuaW5jbHVkZXMoIm1ha2Vk'@; put 'YXRhLmpzIik/aSghMSk6aSghMCl9LHU9PnsoInN0cmluZyI9PXR5cGVvZiB1LmVycm9yP3UuZXJyb3I6SlNPTi5zdHJpbmdpZnkodS5lcnJvcnx8dSkpLmluY2x1ZGVzKCJGb2xkZXIgZG9lc24ndCBleGlzdC4iKSYmbygpfSl9KX0pKCl9Y2hlY2tWaXlhRGVwbG95KHIpe3ZhciBpPXRoaXM7'@; put 'cmV0dXJuIENyKGZ1bmN0aW9uKigpe2NvbnNvbGUubG9nKCJjaGVja1ZpeWFEZXBsb3k6IGNoZWNraW5nIGFwcExvYyIsciksaS5zdGFydHVwQ2hlY2tTZXJ2aWNlLnVwZGF0ZVN0ZXAoMCwiaW5fcHJvZ3Jlc3MiKTtsZXQgbCxhPSExO2lmKHR5cGVvZiBpLnNhc2pzQWRhcHRlci5nZXRGb2xk'@; put 'ZXI8InUiKXtjb25zdCB1PXlpZWxkIGkuYXBwTG9jQ2hlY2socik7YT11LmZvdW5kLGw9dS5lcnJvck1lc3NhZ2V9ZWxzZSBhPXlpZWxkIGkuYXBwTG9jQ2hlY2tQcmVBeGlvc2RBZGFwdGVyKHIpO2NvbnNvbGUubG9nKCJjaGVja1ZpeWFEZXBsb3k6IGFwcExvYyBleGlzdHM/IixhLCJlcnJv'@; put 'cj8iLGwpLGE/KGkuc3RhcnR1cENoZWNrU2VydmljZS51cGRhdGVTdGVwKDAsImRvbmUiLHIpLGkuc3RhcnR1cENoZWNrU2VydmljZS51cGRhdGVTdGVwKDEsImluX3Byb2dyZXNzIiksaS52aXlhTWFrZWRhdGFTdWNjZXNzZnVsbCgpLnRoZW4odT0+e2NvbnNvbGUubG9nKCJjaGVja1ZpeWFE'@; put 'ZXBsb3k6IG1ha2VkYXRhIGpvYiBhbHJlYWR5IHJ1bj8iLHUsdT8iLT4gbG9hZGluZyBzdGFydHVwc2VydmljZSI6Ii0+IHJlZGlyZWN0aW5nIHRvIC9kZXBsb3kgKHNldHVwIHNjcmVlbikiKSx1PyhpLnN0YXJ0dXBDaGVja1NlcnZpY2UudXBkYXRlU3RlcCgxLCJkb25lIiwibWFrZWRhdGEg'@; put 'Y29tcGxldGUiKSxpLnN0YXJ0dXBDaGVja1NlcnZpY2UudXBkYXRlU3RlcCgyLCJpbl9wcm9ncmVzcyIpLGkubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCkpOihpLnN0YXJ0dXBDaGVja1NlcnZpY2UudXBkYXRlU3RlcCgxLCJkb25lIiwibWFrZWRhdGEgam9iIGZvdW5kIC0gc2V0'@; put 'dXAgbmVlZGVkIiksaS5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSxpLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IikpfSx1PT57Y29uc29sZS5lcnJvcigiY2hlY2tWaXlhRGVwbG95OiBlcnJvciB3aGlsZSBsb29raW5nIGZvciBtYWtlZGF0YSBqb2IiLHUpLGkuc3Rh'@; put 'cnR1cENoZWNrU2VydmljZS51cGRhdGVTdGVwKDEsImVycm9yIixTdHJpbmcodSkpfSkpOihpLnN0YXJ0dXBDaGVja1NlcnZpY2UudXBkYXRlU3RlcCgwLCJlcnJvciIsbHx8Im5vdCBmb3VuZCIpLGkuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwobHx8IlZpeWEgc2Vydmlj'@; put 'ZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYywgb3IgQVBJIG5vdCByZWFjaGFibGUuIENoZWNrIHRoZSBBREFQVEVSIGNvbmZpZ3VyYXRpb24uIikrYFxuQXBwTG9jOiAke3J9YCkpfSkoKX12aXlhTWFrZWRhdGFTdWNjZXNzZnVsbCgpe3ZhciByPXRoaXM7cmV0dXJu'@; put 'IENyKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e2NvbnN0IGE9ci5nZXRTYXNqc0NvbmZpZygpLGw9YCR7YS5hcHBMb2N9L3NlcnZpY2VzL2FkbWluYDtjb25zb2xlLmxvZygidml5YU1ha2VkYXRhU3VjY2Vzc2Z1bGw6IGNoZWNraW5nIGZvbGRlciIsbCksci5zYXNW'@; put 'aXlhU2VydmljZS5nZXRGb2xkZXJCeVBhdGgobCkuc3Vic2NyaWJlKHU9Pntjb25zdCBnPXUuaWQ7aWYoIWcpcmV0dXJuIGNvbnNvbGUuZXJyb3IoYHZpeWFNYWtlZGF0YVN1Y2Nlc3NmdWxsOiBmb2xkZXIgSUQgbm90IHByZXNlbnQgZm9yICR7bH1gLGEpLHZvaWQgaSghMSk7ci5zYXNWaXlh'@; put 'U2VydmljZS5nZXRGb2xkZXJNZW1iZXJzKGcpLnN1YnNjcmliZShFPT57Y29uc3QgTz1FLml0ZW1zLm1hcChlZT0+ZWUubmFtZSksWj1FLml0ZW1zLnNvbWUoZWU9PiJtYWtlZGF0YSI9PT1lZS5uYW1lKTtjb25zb2xlLmxvZygidml5YU1ha2VkYXRhU3VjY2Vzc2Z1bGw6IGZvbGRlciBtZW1i'@; put 'ZXJzOiIsTy5qb2luKCIsICIpfHwiKG5vbmUpIiksY29uc29sZS5sb2coInZpeWFNYWtlZGF0YVN1Y2Nlc3NmdWxsOiBtYWtlZGF0YSBqb2IgcHJlc2VudD8iLFosWj8iLT4gc2V0dXAgbmVlZGVkIChyZWRpcmVjdCB0byAvZGVwbG95KSI6Ii0+IHNldHVwIGFscmVhZHkgZG9uZSAobG9hZCBz'@; put 'dGFydHVwc2VydmljZSkiKSxpKCFaKX0sRT0+e2NvbnNvbGUuZXJyb3IoInZpeWFNYWtlZGF0YVN1Y2Nlc3NmdWxsOiBlcnJvciBnZXR0aW5nIGZvbGRlciBtZW1iZXJzIGZvciIsbCxFKSxpKCExKX0pfSx1PT57Y29uc29sZS53YXJuKCJ2aXlhTWFrZWRhdGFTdWNjZXNzZnVsbDogZXJyb3Ig'@; put 'Z2V0dGluZyBmb2xkZXIgaW5mbyBmb3IiLGwsdSksbyh1KX0pfSl9KSgpfWFwcExvY0NoZWNrKHIpe3ZhciBpPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIG89Q3IoZnVuY3Rpb24qKGEsbCl7bGV0IGcsdT0iIjt0cnl7Zz15aWVsZCBpLnNhc2pzQWRhcHRlci5nZXRG'@; put 'b2xkZXIocil9Y2F0Y2goRSl7IkxvZ2luUmVxdWlyZWRFcnJvciI9PT1FLm5hbWU/KGkuYXBwTG9jQ2hlY2tQZW5kaW5nPSEwLGkuc2hvdWxkTG9naW4ubmV4dCghMCksYSh7Zm91bmQ6ITF9KSk6dT0iTm90Rm91bmRlRXJyb3IiPT09RS5uYW1lP0UubWVzc2FnZToiVml5YSBzZXJ2aWNlcyBh'@; put 'cmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLCBvciBBUEkgbm90IHJlYWNoYWJsZS4gQ2hlY2sgdGhlIEFEQVBURVIgY29uZmlndXJhdGlvbi4ifWlmKHUubGVuZ3RoKXJldHVybiBjb25zb2xlLndhcm4odSksYSh7Zm91bmQ6ITEsZXJyb3JNZXNzYWdlOnV9KTthKHtmb3Vu'@; put 'ZDohMH0pfSk7cmV0dXJuIGZ1bmN0aW9uKGEsbCl7cmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9YXBwTG9jQ2hlY2tQcmVBeGlvc2RBZGFwdGVyKHIpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e2xldCBsPSExO3JldHVybiBmZXRjaChgL2ZvbGRlcnMvZm9sZGVycy9A'@; put 'aXRlbT9wYXRoPSR7cn1gKS50aGVuKHU9Pig0MDQ9PT11LnN0YXR1cyYmKGw9ITApLHUudGV4dCgpKSkudGhlbih1PT57aWYodGhpcy5pc0xvZ2luUmVxdWlyZWQodSkpdGhpcy5hcHBMb2NDaGVja1BlbmRpbmc9ITAsdGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKTtlbHNle2lmKGwpcmV0dXJu'@; put 'IGNvbnNvbGUud2FybigiVml5YSBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLHRoaXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLGkoITEpO2xldCBnPW51bGw7dHJ5'@; put 'e2c9SlNPTi5wYXJzZSh1KX1jYXRjaHt9aWYoZyYmZy5odHRwU3RhdHVzQ29kZSYmNDA0PT09Zy5odHRwU3RhdHVzQ29kZSlyZXR1cm4gY29uc29sZS53YXJuKCJWaXlhIHNlcnZpY2VzIGFyZSBub3QgcHJlc2VudCBvbiB0aGUgY3VycmVudCBhcHBMb2MuIiksdGhpcy5ldmVudFNlcnZpY2Uu'@; put 'c3RhcnR1cERhdGFMb2FkZWQoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksaSghMSk7aSghMCl9fSkuY2F0Y2godT0+e2koITEpfSl9KX1pc0xvZ2luUmVxdWlyZWQocil7cmV0dXJuLzxmb3JtLithY3Rpb249IiguKkxvZ29uW14iXSopLio+L2dtLnRlc3Qocil9bG9n'@; put 'b3V0KCl7dGhpcy5zYXNqc0FkYXB0ZXIubG9nT3V0KCkudGhlbigoKT0+e2xvY2F0aW9uLnJlbG9hZCgpfSl9Z2V0U2FzanNDb25maWcoKXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25maWcoKX1nZXRTYXNSZXF1ZXN0cygpe3JldHVybiB0aGlzLnNhc2pzQWRhcHRlci5n'@; put 'ZXRTYXNSZXF1ZXN0cygpfXNldERlYnVnU3RhdGUocil7dGhpcy5zYXNqc0FkYXB0ZXIuc2V0RGVidWdTdGF0ZShyKX1nZXREZWJ1Z1VybFBhcmFtKCl7Y29uc3Qgcj10aGlzLnNhc2pzQWRhcHRlci5nZXRTYXNqc0NvbmZpZygpO3JldHVybiByLmRlYnVnPyImX2RlYnVnPSIrKHIuc2VydmVy'@; put 'VHlwZT09PV8wLlkuU2FzVml5YSYmbnVsbD09PXIudXNlQ29tcHV0ZUFwaSYmITA9PT1yLnJ1bkFzVGFzaz8xMjg6MTMxKToiIn1nZXRTYXNqc0luc3RhbmNlKCl7cmV0dXJuIHRoaXMuc2FzanNBZGFwdGVyfWdldFNlcnZlclR5cGUoKXtjb25zdCByPXRoaXMuc2FzanNBZGFwdGVyLmdldFNh'@; put 'c2pzQ29uZmlnKCk7cmV0dXJuIHIuc2VydmVyVHlwZT9yLnNlcnZlclR5cGU6IlNBU1ZJWUEifWdldEV4ZWN1dGlvblBhdGgoKXtjb25zdCByPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc2pzQ29uZmlnKCk7c3dpdGNoKHIuc2VydmVyVHlwZSl7Y2FzZSBfMC5ZLlNhc1ZpeWE6cmV0dXJuIHIu'@; put 'cGF0aFNBU1ZpeWE7Y2FzZSBfMC5ZLlNhczk6cmV0dXJuIHIucGF0aFNBUzk7Y2FzZSBfMC5ZLlNhc2pzOnJldHVybiByLnBhdGhTQVNKU319Z2V0RmlsZUNvbnRlbnQocixpKXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIuZ2V0RmlsZUNvbnRlbnQocixpKX11cGRhdGVGaWxlQ29udGVudChy'@; put 'LGksbyl7cmV0dXJuIHRoaXMuc2FzanNBZGFwdGVyLnVwZGF0ZUZpbGVDb250ZW50KHIsaSxvKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKShvcihFYiksb3IocGllKSxvcih1ZCksb3IoVndlKSxvcihDaWUpLG9yKHgzKSxvcihT'@; put 'aWUpLG9yKHZjKSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5OmUuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSkpfXJldHVybiBuKCksZX0pKCkseDM9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyKXt0aGlzLmluamVjdG9yPXJ9bG9nKHIsaSl7dGhp'@; put 'cy5pbmplY3RTYXNTZXJ2aWNlKCksdGhpcy5zYXNqc0NvbmZpZz8uZGVidWcmJihpP2NvbnNvbGUubG9nKHIsaSk6Y29uc29sZS5sb2cocikpfWVycm9yKHIsaSl7Y29uc29sZS5lcnJvcihyLGkpfWxvZ1JlcXVlc3REYXRhKHIsaSl7aWYodGhpcy5sb2coIi0tLSBBZGFwdGVyIFJlcXVlc3Qg'@; put 'SW5wdXQgLS0tIiksdGhpcy5sb2cociksaSl7Zm9yKGxldCBvIG9mIE9iamVjdC5rZXlzKGkpKXRoaXMubG9nKG8saVtvXSk7dGhpcy5sb2coIi0tLS0tLSIpfWVsc2UgdGhpcy5sb2coIm5vIGRhdGEgc2VudCIpfWluamVjdFNhc1NlcnZpY2UoKXtpZighdGhpcy5zYXNqc0NvbmZpZyl7Y29u'@; put 'c3Qgcj10aGlzLmluamVjdG9yLmdldChpYyk7dGhpcy5zYXNqc0NvbmZpZz1yLmdldFNhc2pzQ29uZmlnKCl9fXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKG9yKE1sKSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0'@; put 'b3J5OmUuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgandlPWZ1bmN0aW9uIExodChuLGUpe3JldHVybiBuPT09ZXx8biE9biYmZSE9ZX0saXo9ZnVuY3Rpb24gT2h0KG4sZSl7Zm9yKHZhciB0PW4ubGVuZ3RoO3QtLTspaWYoandlKG5bdF1b'@; put 'MF0sZSkpcmV0dXJuIHQ7cmV0dXJuLTF9O3ZhciBGaHQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBZRShuKXt2YXIgZT0tMSx0PW51bGw9PW4/MDpuLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTx0Oyl7dmFyIHI9bltlXTt0aGlzLnNldChyWzBdLHJbMV0pfX1ZRS5wcm90'@; put 'b3R5cGUuY2xlYXI9ZnVuY3Rpb24gSWh0KCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sWUUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBQaHQobil7dmFyIGU9dGhpcy5fX2RhdGFfXyx0PWl6KGUsbik7cmV0dXJuISh0PDB8fCh0PT1lLmxlbmd0aC0xP2UucG9wKCk6Rmh0LmNh'@; put 'bGwoZSx0LDEpLC0tdGhpcy5zaXplLDApKX0sWUUucHJvdG90eXBlLmdldD1mdW5jdGlvbiBWaHQobil7dmFyIGU9dGhpcy5fX2RhdGFfXyx0PWl6KGUsbik7cmV0dXJuIHQ8MD92b2lkIDA6ZVt0XVsxXX0sWUUucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBqaHQobil7cmV0dXJuIGl6KHRoaXMu'@; put 'X19kYXRhX18sbik+LTF9LFlFLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gemh0KG4sZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPWl6KHQsbik7cmV0dXJuIHI8MD8oKyt0aGlzLnNpemUsdC5wdXNoKFtuLGVdKSk6dFtyXVsxXT1lLHRoaXN9O2NvbnN0IG96PVlFLFV3ZT0ib2JqZWN0Ij09dHlw'@; put 'ZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWw7dmFyIGUxdD0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmO2NvbnN0IGo1PVV3ZXx8ZTF0fHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGd2PWo1'@; put 'LlN5bWJvbDt2YXIgendlPU9iamVjdC5wcm90b3R5cGUscjF0PXp3ZS5oYXNPd25Qcm9wZXJ0eSxpMXQ9endlLnRvU3RyaW5nLEtJPWd2P2d2LnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgbDF0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIFd3ZT1ndj9ndi50b1N0cmluZ1RhZzp2b2lk'@; put 'IDA7Y29uc3QgWkU9ZnVuY3Rpb24gZjF0KG4pe3JldHVybiBudWxsPT1uP3ZvaWQgMD09PW4/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOld3ZSYmV3dlIGluIE9iamVjdChuKT9mdW5jdGlvbiBvMXQobil7dmFyIGU9cjF0LmNhbGwobixLSSksdD1uW0tJXTt0cnl7bltL'@; put 'SV09dm9pZCAwO3ZhciByPSEwfWNhdGNoe312YXIgaT1pMXQuY2FsbChuKTtyZXR1cm4gciYmKGU/bltLSV09dDpkZWxldGUgbltLSV0pLGl9KG4pOmZ1bmN0aW9uIGMxdChuKXtyZXR1cm4gbDF0LmNhbGwobil9KG4pfSxYST1mdW5jdGlvbiBwMXQobil7dmFyIGU9dHlwZW9mIG47cmV0dXJu'@; put 'IG51bGwhPW4mJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9LFl3ZT1mdW5jdGlvbiB5MXQobil7aWYoIVhJKG4pKXJldHVybiExO3ZhciBlPVpFKG4pO3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IEFz'@; put 'eW5jRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgUHJveHldIj09ZX0sRWllPWo1WyJfX2NvcmUtanNfc2hhcmVkX18iXTt2YXIgWndlPWZ1bmN0aW9uKCl7dmFyIG49L1teLl0rJC8uZXhlYyhFaWUmJkVpZS5rZXlzJiZFaWUua2V5cy5JRV9QUk9UT3x8IiIpO3JldHVybiBuPyJTeW1ib2woc3Jj'@; put 'KV8xLiIrbjoiIn0oKTt2YXIgRTF0PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztjb25zdCB4Yj1mdW5jdGlvbiBNMXQobil7aWYobnVsbCE9bil7dHJ5e3JldHVybiBFMXQuY2FsbChuKX1jYXRjaHt9dHJ5e3JldHVybiBuKyIifWNhdGNoe319cmV0dXJuIiJ9O3ZhciB4MXQ9L15cW29i'@; put 'amVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sRDF0PVJlZ0V4cCgiXiIrRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0'@; put 'eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7Y29uc3QgTzF0PWZ1bmN0aW9uIEwxdChuKXtyZXR1cm4hKCFYSShuKXx8ZnVuY3Rpb24gdzF0KG4pe3JldHVybiEhWndlJiZad2UgaW4gbn0obikpJiYoWXdlKG4pP0QxdDp4MXQpLnRlc3Qo'@; put 'eGIobikpfSxBYj1mdW5jdGlvbiBQMXQobixlKXt2YXIgdD1mdW5jdGlvbiBOMXQobixlKXtyZXR1cm4gbj8uW2VdfShuLGUpO3JldHVybiBPMXQodCk/dDp2b2lkIDB9LFFJPUFiKGo1LCJNYXAiKSxKST1BYihPYmplY3QsImNyZWF0ZSIpO3ZhciBaMXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNP'@; put 'd25Qcm9wZXJ0eTt2YXIgSzF0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gR0Uobil7dmFyIGU9LTEsdD1udWxsPT1uPzA6bi5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8dDspe3ZhciByPW5bZV07dGhpcy5zZXQoclswXSxyWzFdKX19R0UucHJvdG90eXBl'@; put 'LmNsZWFyPWZ1bmN0aW9uIEIxdCgpe3RoaXMuX19kYXRhX189Skk/SkkobnVsbCk6e30sdGhpcy5zaXplPTB9LEdFLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gVTF0KG4pe3ZhciBlPXRoaXMuaGFzKG4pJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tuXTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6'@; put 'MCxlfSxHRS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIEcxdChuKXt2YXIgZT10aGlzLl9fZGF0YV9fO2lmKEpJKXt2YXIgdD1lW25dO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PXQ/dm9pZCAwOnR9cmV0dXJuIFoxdC5jYWxsKGUsbik/ZVtuXTp2b2lkIDB9LEdFLnByb3Rv'@; put 'dHlwZS5oYXM9ZnVuY3Rpb24gWDF0KG4pe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEpJP3ZvaWQgMCE9PWVbbl06SzF0LmNhbGwoZSxuKX0sR0UucHJvdG90eXBlLnNldD1mdW5jdGlvbiBlMHQobixlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFz'@; put 'KG4pPzA6MSx0W25dPUpJJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O2NvbnN0IEd3ZT1HRSxhej1mdW5jdGlvbiBhMHQobixlKXt2YXIgdD1uLl9fZGF0YV9fO3JldHVybiBmdW5jdGlvbiBpMHQobil7dmFyIGU9dHlwZW9mIG47cmV0dXJuInN0cmlu'@; put 'ZyI9PWV8fCJudW1iZXIiPT1lfHwic3ltYm9sIj09ZXx8ImJvb2xlYW4iPT1lPyJfX3Byb3RvX18iIT09bjpudWxsPT09bn0oZSk/dFsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTp0Lm1hcH07ZnVuY3Rpb24gJEUobil7dmFyIGU9LTEsdD1udWxsPT1uPzA6bi5sZW5ndGg7'@; put 'Zm9yKHRoaXMuY2xlYXIoKTsrK2U8dDspe3ZhciByPW5bZV07dGhpcy5zZXQoclswXSxyWzFdKX19JEUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIG4wdCgpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IEd3ZSxtYXA6bmV3KFFJfHxveiksc3RyaW5nOm5ldyBHd2V9fSwk'@; put 'RS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIHMwdChuKXt2YXIgZT1heih0aGlzLG4pLmRlbGV0ZShuKTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSwkRS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIGMwdChuKXtyZXR1cm4gYXoodGhpcyxuKS5nZXQobil9LCRFLnByb3RvdHlwZS5oYXM9'@; put 'ZnVuY3Rpb24gZDB0KG4pe3JldHVybiBheih0aGlzLG4pLmhhcyhuKX0sJEUucHJvdG90eXBlLnNldD1mdW5jdGlvbiBmMHQobixlKXt2YXIgdD1heih0aGlzLG4pLHI9dC5zaXplO3JldHVybiB0LnNldChuLGUpLHRoaXMuc2l6ZSs9dC5zaXplPT1yPzA6MSx0aGlzfTtjb25zdCBNaWU9JEU7'@; put 'ZnVuY3Rpb24gcUUobil7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgb3oobik7dGhpcy5zaXplPWUuc2l6ZX1xRS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gWWh0KCl7dGhpcy5fX2RhdGFfXz1uZXcgb3osdGhpcy5zaXplPTB9LHFFLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gR2h0KG4p'@; put 'e3ZhciBlPXRoaXMuX19kYXRhX18sdD1lLmRlbGV0ZShuKTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSx0fSxxRS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIHFodChuKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQobil9LHFFLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gWGh0KG4pe3JldHVybiB0'@; put 'aGlzLl9fZGF0YV9fLmhhcyhuKX0scUUucHJvdG90eXBlLnNldD1mdW5jdGlvbiBtMHQobixlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKHQgaW5zdGFuY2VvZiBveil7dmFyIHI9dC5fX2RhdGFfXztpZighUUl8fHIubGVuZ3RoPDE5OSlyZXR1cm4gci5wdXNoKFtuLGVdKSx0aGlzLnNpemU9'@; put 'Kyt0LnNpemUsdGhpczt0PXRoaXMuX19kYXRhX189bmV3IE1pZShyKX1yZXR1cm4gdC5zZXQobixlKSx0aGlzLnNpemU9dC5zaXplLHRoaXN9O2NvbnN0IF8wdD1xRTt2YXIgdzB0PWZ1bmN0aW9uKCl7dHJ5e3ZhciBuPUFiKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gbih7fSwi'@; put 'Iix7fSksbn1jYXRjaHt9fSgpO2NvbnN0ICR3ZT13MHQscXdlPWZ1bmN0aW9uIEMwdChuLGUsdCl7Il9fcHJvdG9fXyI9PWUmJiR3ZT8kd2UobixlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp0LHdyaXRhYmxlOiEwfSk6bltlXT10fTt2YXIgRTB0PU9iamVjdC5wcm90'@; put 'b3R5cGUuaGFzT3duUHJvcGVydHk7Y29uc3QgS3dlPWZ1bmN0aW9uIE0wdChuLGUsdCl7dmFyIHI9bltlXTsoIUUwdC5jYWxsKG4sZSl8fCFqd2Uocix0KXx8dm9pZCAwPT09dCYmIShlIGluIG4pKSYmcXdlKG4sZSx0KX0sc3o9ZnVuY3Rpb24gVDB0KG4sZSx0LHIpe3ZhciBpPSF0O3R8fCh0'@; put 'PXt9KTtmb3IodmFyIG89LTEsYT1lLmxlbmd0aDsrK288YTspe3ZhciBsPWVbb10sdT1yP3IodFtsXSxuW2xdLGwsdCxuKTp2b2lkIDA7dm9pZCAwPT09dSYmKHU9bltsXSksaT9xd2UodCxsLHUpOkt3ZSh0LGwsdSl9cmV0dXJuIHR9LEtFPWZ1bmN0aW9uIGswdChuKXtyZXR1cm4gbnVsbCE9'@; put 'biYmIm9iamVjdCI9PXR5cGVvZiBufSxYd2U9ZnVuY3Rpb24gSTB0KG4pe3JldHVybiBLRShuKSYmIltvYmplY3QgQXJndW1lbnRzXSI9PVpFKG4pfTt2YXIgUXdlPU9iamVjdC5wcm90b3R5cGUsRDB0PVF3ZS5oYXNPd25Qcm9wZXJ0eSxMMHQ9UXdlLnByb3BlcnR5SXNFbnVtZXJhYmxlLE8w'@; put 'dD1Yd2UoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT9Yd2U6ZnVuY3Rpb24obil7cmV0dXJuIEtFKG4pJiZEMHQuY2FsbChuLCJjYWxsZWUiKSYmIUwwdC5jYWxsKG4sImNhbGxlZSIpfTtjb25zdCBOMHQ9TzB0LFhFPUFycmF5LmlzQXJyYXk7dmFyIEp3ZT0ib2JqZWN0Ij09dHlw'@; put 'ZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLGVDZT1Kd2UmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx0Q2U9ZUNlJiZlQ2UuZXhwb3J0cz09PUp3ZT9qNS5CdWZmZXI6dm9pZCAwO2NvbnN0'@; put 'IG5DZT0odENlP3RDZS5pc0J1ZmZlcjp2b2lkIDApfHxmdW5jdGlvbiBQMHQoKXtyZXR1cm4hMX07dmFyIHowdD0vXig/OjB8WzEtOV1cZCopJC87Y29uc3QgWTB0PWZ1bmN0aW9uIFcwdChuLGUpe3ZhciB0PXR5cGVvZiBuO3JldHVybiEhKGU9ZT8/OTAwNzE5OTI1NDc0MDk5MSkmJigibnVt'@; put 'YmVyIj09dHx8InN5bWJvbCIhPXQmJnowdC50ZXN0KG4pKSYmbj4tMSYmbiUxPT0wJiZuPGV9LHJDZT1mdW5jdGlvbiBHMHQobil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuJiZuPi0xJiZuJTE9PTAmJm48PTkwMDcxOTkyNTQ3NDA5OTF9O3ZhciBkZD17fTtkZFsiW29iamVjdCBGbG9hdDMy'@; put 'QXJyYXldIl09ZGRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWRkWyJbb2JqZWN0IEludDhBcnJheV0iXT1kZFsiW29iamVjdCBJbnQxNkFycmF5XSJdPWRkWyJbb2JqZWN0IEludDMyQXJyYXldIl09ZGRbIltvYmplY3QgVWludDhBcnJheV0iXT1kZFsiW29iamVjdCBVaW50OENsYW1wZWRB'@; put 'cnJheV0iXT1kZFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1kZFsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxkZFsiW29iamVjdCBBcmd1bWVudHNdIl09ZGRbIltvYmplY3QgQXJyYXldIl09ZGRbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09ZGRbIltvYmplY3QgQm9vbGVhbl0iXT1kZFsi'@; put 'W29iamVjdCBEYXRhVmlld10iXT1kZFsiW29iamVjdCBEYXRlXSJdPWRkWyJbb2JqZWN0IEVycm9yXSJdPWRkWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWRkWyJbb2JqZWN0IE1hcF0iXT1kZFsiW29iamVjdCBOdW1iZXJdIl09ZGRbIltvYmplY3QgT2JqZWN0XSJdPWRkWyJbb2JqZWN0IFJlZ0V4'@; put 'cF0iXT1kZFsiW29iamVjdCBTZXRdIl09ZGRbIltvYmplY3QgU3RyaW5nXSJdPWRkWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7Y29uc3QgVGllPWZ1bmN0aW9uIGIydChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSl9fTt2YXIgaUNlPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYm'@; put 'ZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsZUQ9aUNlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUseGllPWVEJiZlRC5leHBvcnRzPT09aUNlJiZVd2UucHJvY2Vzcztjb25zdCBRRT1mdW5jdGlvbigpe3RyeXty'@; put 'ZXR1cm4gZUQmJmVELnJlcXVpcmUmJmVELnJlcXVpcmUoInV0aWwiKS50eXBlc3x8eGllJiZ4aWUuYmluZGluZyYmeGllLmJpbmRpbmcoInV0aWwiKX1jYXRjaHt9fSgpO3ZhciBvQ2U9UUUmJlFFLmlzVHlwZWRBcnJheTtjb25zdCBFMnQ9b0NlP1RpZShvQ2UpOmZ1bmN0aW9uIF8ydChuKXty'@; put 'ZXR1cm4gS0UobikmJnJDZShuLmxlbmd0aCkmJiEhZGRbWkUobildfTt2YXIgVDJ0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Y29uc3QgYUNlPWZ1bmN0aW9uIHgydChuLGUpe3ZhciB0PVhFKG4pLHI9IXQmJk4wdChuKSxpPSF0JiYhciYmbkNlKG4pLG89IXQmJiFyJiYhaSYm'@; put 'RTJ0KG4pLGE9dHx8cnx8aXx8byxsPWE/ZnVuY3Rpb24geDB0KG4sZSl7Zm9yKHZhciB0PS0xLHI9QXJyYXkobik7Kyt0PG47KXJbdF09ZSh0KTtyZXR1cm4gcn0obi5sZW5ndGgsU3RyaW5nKTpbXSx1PWwubGVuZ3RoO2Zvcih2YXIgZyBpbiBuKShlfHxUMnQuY2FsbChuLGcpKSYmKCFhfHwh'@; put 'KCJsZW5ndGgiPT1nfHxpJiYoIm9mZnNldCI9PWd8fCJwYXJlbnQiPT1nKXx8byYmKCJidWZmZXIiPT1nfHwiYnl0ZUxlbmd0aCI9PWd8fCJieXRlT2Zmc2V0Ij09Zyl8fFkwdChnLHUpKSkmJmwucHVzaChnKTtyZXR1cm4gbH07dmFyIEEydD1PYmplY3QucHJvdG90eXBlO2NvbnN0IEFpZT1m'@; put 'dW5jdGlvbiBrMnQobil7dmFyIGU9biYmbi5jb25zdHJ1Y3RvcjtyZXR1cm4gbj09PSgiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5wcm90b3R5cGV8fEEydCl9LHNDZT1mdW5jdGlvbiBSMnQobixlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4oZSh0KSl9fSxEMnQ9c0NlKE9iamVjdC5r'@; put 'ZXlzLE9iamVjdCk7dmFyIE8ydD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IGxDZT1mdW5jdGlvbiBQMnQobil7cmV0dXJuIG51bGwhPW4mJnJDZShuLmxlbmd0aCkmJiFZd2Uobil9LGtpZT1mdW5jdGlvbiBIMnQobil7cmV0dXJuIGxDZShuKT9hQ2Uobik6ZnVuY3Rp'@; put 'b24gTjJ0KG4pe2lmKCFBaWUobikpcmV0dXJuIEQydChuKTt2YXIgZT1bXTtmb3IodmFyIHQgaW4gT2JqZWN0KG4pKU8ydC5jYWxsKG4sdCkmJiJjb25zdHJ1Y3RvciIhPXQmJmUucHVzaCh0KTtyZXR1cm4gZX0obil9O3ZhciBXMnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtj'@; put 'b25zdCBaMnQ9ZnVuY3Rpb24gWTJ0KG4pe2lmKCFYSShuKSlyZXR1cm4gZnVuY3Rpb24gajJ0KG4pe3ZhciBlPVtdO2lmKG51bGwhPW4pZm9yKHZhciB0IGluIE9iamVjdChuKSllLnB1c2godCk7cmV0dXJuIGV9KG4pO3ZhciBlPUFpZShuKSx0PVtdO2Zvcih2YXIgciBpbiBuKSJjb25zdHJ1'@; put 'Y3RvciI9PXImJihlfHwhVzJ0LmNhbGwobixyKSl8fHQucHVzaChyKTtyZXR1cm4gdH0sUmllPWZ1bmN0aW9uIEcydChuKXtyZXR1cm4gbENlKG4pP2FDZShuLCEwKTpaMnQobil9O3ZhciBjQ2U9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYm'@; put 'ZXhwb3J0cyx1Q2U9Y0NlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsZENlPXVDZSYmdUNlLmV4cG9ydHM9PT1jQ2U/ajUuQnVmZmVyOnZvaWQgMCxoQ2U9ZENlP2RDZS5hbGxvY1Vuc2FmZTp2b2lkIDA7Y29uc3QgZkNlPWZ1bmN0'@; put 'aW9uIHJmdCgpe3JldHVybltdfTt2YXIgb2Z0PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUscENlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsYWZ0PXBDZT9mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09bj9bXToobj1PYmplY3QobiksZnVuY3Rpb24gdGZ0KG4s'@; put 'ZSl7Zm9yKHZhciB0PS0xLHI9bnVsbD09bj8wOm4ubGVuZ3RoLGk9MCxvPVtdOysrdDxyOyl7dmFyIGE9blt0XTtlKGEsdCxuKSYmKG9baSsrXT1hKX1yZXR1cm4gb30ocENlKG4pLGZ1bmN0aW9uKGUpe3JldHVybiBvZnQuY2FsbChuLGUpfSkpfTpmQ2U7Y29uc3QgSWllPWFmdCxnQ2U9ZnVu'@; put 'Y3Rpb24gY2Z0KG4sZSl7Zm9yKHZhciB0PS0xLHI9ZS5sZW5ndGgsaT1uLmxlbmd0aDsrK3Q8cjspbltpK3RdPWVbdF07cmV0dXJuIG59LG1DZT1zQ2UoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7dmFyIGhmdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKG4p'@; put 'e2Zvcih2YXIgZT1bXTtuOylnQ2UoZSxJaWUobikpLG49bUNlKG4pO3JldHVybiBlfTpmQ2U7Y29uc3QgdkNlPWhmdCxfQ2U9ZnVuY3Rpb24gZ2Z0KG4sZSx0KXt2YXIgcj1lKG4pO3JldHVybiBYRShuKT9yOmdDZShyLHQobikpfSx2ZnQ9ZnVuY3Rpb24gbWZ0KG4pe3JldHVybiBfQ2Uobixr'@; put 'aWUsSWllKX0seWZ0PWZ1bmN0aW9uIF9mdChuKXtyZXR1cm4gX0NlKG4sUmllLHZDZSl9LERpZT1BYihqNSwiRGF0YVZpZXciKSxMaWU9QWIoajUsIlByb21pc2UiKSxPaWU9QWIoajUsIlNldCIpLE5pZT1BYihqNSwiV2Vha01hcCIpO3ZhciB5Q2U9IltvYmplY3QgTWFwXSIsYkNlPSJbb2Jq'@; put 'ZWN0IFByb21pc2VdIix3Q2U9IltvYmplY3QgU2V0XSIsQ0NlPSJbb2JqZWN0IFdlYWtNYXBdIixTQ2U9IltvYmplY3QgRGF0YVZpZXddIixNZnQ9eGIoRGllKSxUZnQ9eGIoUUkpLHhmdD14YihMaWUpLEFmdD14YihPaWUpLGtmdD14YihOaWUpLGtiPVpFOyhEaWUmJmtiKG5ldyBEaWUobmV3'@; put 'IEFycmF5QnVmZmVyKDEpKSkhPVNDZXx8UUkmJmtiKG5ldyBRSSkhPXlDZXx8TGllJiZrYihMaWUucmVzb2x2ZSgpKSE9YkNlfHxPaWUmJmtiKG5ldyBPaWUpIT13Q2V8fE5pZSYma2IobmV3IE5pZSkhPUNDZSkmJihrYj1mdW5jdGlvbihuKXt2YXIgZT1aRShuKSx0PSJbb2JqZWN0IE9iamVj'@; put 'dF0iPT1lP24uY29uc3RydWN0b3I6dm9pZCAwLHI9dD94Yih0KToiIjtpZihyKXN3aXRjaChyKXtjYXNlIE1mdDpyZXR1cm4gU0NlO2Nhc2UgVGZ0OnJldHVybiB5Q2U7Y2FzZSB4ZnQ6cmV0dXJuIGJDZTtjYXNlIEFmdDpyZXR1cm4gd0NlO2Nhc2Uga2Z0OnJldHVybiBDQ2V9cmV0dXJuIGV9'@; put 'KTtjb25zdCBGaWU9a2I7dmFyIElmdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IEVDZT1qNS5VaW50OEFycmF5LFBpZT1mdW5jdGlvbiBOZnQobil7dmFyIGU9bmV3IG4uY29uc3RydWN0b3Iobi5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEVDZShlKS5zZXQobmV3IEVD'@; put 'ZShuKSksZX07dmFyIEhmdD0vXHcqJC87dmFyIE1DZT1ndj9ndi5wcm90b3R5cGU6dm9pZCAwLFRDZT1NQ2U/TUNlLnZhbHVlT2Y6dm9pZCAwO2NvbnN0IGQzdD1mdW5jdGlvbiB1M3QobixlLHQpe3ZhciByPW4uY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZl'@; put 'cl0iOnJldHVybiBQaWUobik7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgcigrbik7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIGZ1bmN0aW9uIEZmdChuLGUpe3ZhciB0PWU/UGllKG4uYnVmZmVyKTpuLmJ1ZmZlcjtyZXR1cm4g'@; put 'bmV3IG4uY29uc3RydWN0b3IodCxuLmJ5dGVPZmZzZXQsbi5ieXRlTGVuZ3RoKX0obix0KTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2Ui'@; put 'W29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZnVuY3Rpb24gemZ0KG4sZSl7dmFyIHQ9'@; put 'ZT9QaWUobi5idWZmZXIpOm4uYnVmZmVyO3JldHVybiBuZXcgbi5jb25zdHJ1Y3Rvcih0LG4uYnl0ZU9mZnNldCxuLmxlbmd0aCl9KG4sdCk7Y2FzZSJbb2JqZWN0IE1hcF0iOmNhc2UiW29iamVjdCBTZXRdIjpyZXR1cm4gbmV3IHI7Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmNhc2UiW29iamVj'@; put 'dCBTdHJpbmddIjpyZXR1cm4gbmV3IHIobik7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOnJldHVybiBmdW5jdGlvbiBWZnQobil7dmFyIGU9bmV3IG4uY29uc3RydWN0b3Iobi5zb3VyY2UsSGZ0LmV4ZWMobikpO3JldHVybiBlLmxhc3RJbmRleD1uLmxhc3RJbmRleCxlfShuKTtjYXNlIltvYmpl'@; put 'Y3QgU3ltYm9sXSI6cmV0dXJuIGZ1bmN0aW9uIGpmdChuKXtyZXR1cm4gVENlP09iamVjdChUQ2UuY2FsbChuKSk6e319KG4pfX07dmFyIHhDZT1PYmplY3QuY3JlYXRlLGgzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt9cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFYSShlKSlyZXR1cm57fTtp'@; put 'Zih4Q2UpcmV0dXJuIHhDZShlKTtuLnByb3RvdHlwZT1lO3ZhciB0PW5ldyBuO3JldHVybiBuLnByb3RvdHlwZT12b2lkIDAsdH19KCk7Y29uc3QgZjN0PWgzdDt2YXIgQUNlPVFFJiZRRS5pc01hcDtjb25zdCBiM3Q9QUNlP1RpZShBQ2UpOmZ1bmN0aW9uIHYzdChuKXtyZXR1cm4gS0Uobikm'@; put 'JiJbb2JqZWN0IE1hcF0iPT1GaWUobil9O3ZhciBrQ2U9UUUmJlFFLmlzU2V0O2NvbnN0IE0zdD1rQ2U/VGllKGtDZSk6ZnVuY3Rpb24gQzN0KG4pe3JldHVybiBLRShuKSYmIltvYmplY3QgU2V0XSI9PUZpZShuKX07dmFyIFJDZT0iW29iamVjdCBBcmd1bWVudHNdIixJQ2U9IltvYmplY3Qg'@; put 'RnVuY3Rpb25dIixEQ2U9IltvYmplY3QgT2JqZWN0XSIscXU9e307cXVbUkNlXT1xdVsiW29iamVjdCBBcnJheV0iXT1xdVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1xdVsiW29iamVjdCBEYXRhVmlld10iXT1xdVsiW29iamVjdCBCb29sZWFuXSJdPXF1WyJbb2JqZWN0IERhdGVdIl09cXVb'@; put 'IltvYmplY3QgRmxvYXQzMkFycmF5XSJdPXF1WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1xdVsiW29iamVjdCBJbnQ4QXJyYXldIl09cXVbIltvYmplY3QgSW50MTZBcnJheV0iXT1xdVsiW29iamVjdCBJbnQzMkFycmF5XSJdPXF1WyJbb2JqZWN0IE1hcF0iXT1xdVsiW29iamVjdCBOdW1i'@; put 'ZXJdIl09cXVbRENlXT1xdVsiW29iamVjdCBSZWdFeHBdIl09cXVbIltvYmplY3QgU2V0XSJdPXF1WyJbb2JqZWN0IFN0cmluZ10iXT1xdVsiW29iamVjdCBTeW1ib2xdIl09cXVbIltvYmplY3QgVWludDhBcnJheV0iXT1xdVsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1xdVsiW29i'@; put 'amVjdCBVaW50MTZBcnJheV0iXT1xdVsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxxdVsiW29iamVjdCBFcnJvcl0iXT1xdVtJQ2VdPXF1WyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7Y29uc3QgUTN0PWZ1bmN0aW9uIGx6KG4sZSx0LHIsaSxvKXt2YXIgYSxsPTEmZSx1PTImZSxnPTQmZTtp'@; put 'Zih0JiYoYT1pP3QobixyLGksbyk6dChuKSksdm9pZCAwIT09YSlyZXR1cm4gYTtpZighWEkobikpcmV0dXJuIG47dmFyIEU9WEUobik7aWYoRSl7aWYoYT1mdW5jdGlvbiBEZnQobil7dmFyIGU9bi5sZW5ndGgsdD1uZXcgbi5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gZSYmInN0cmluZyI9PXR5'@; put 'cGVvZiBuWzBdJiZJZnQuY2FsbChuLCJpbmRleCIpJiYodC5pbmRleD1uLmluZGV4LHQuaW5wdXQ9bi5pbnB1dCksdH0obiksIWwpcmV0dXJuIGZ1bmN0aW9uIEoydChuLGUpe3ZhciB0PS0xLHI9bi5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KHIpKTsrK3Q8cjspZVt0XT1uW3RdO3JldHVybiBl'@; put 'fShuLGEpfWVsc2V7dmFyIE89RmllKG4pLFo9Tz09SUNlfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1PO2lmKG5DZShuKSlyZXR1cm4gZnVuY3Rpb24gWDJ0KG4sZSl7aWYoZSlyZXR1cm4gbi5zbGljZSgpO3ZhciB0PW4ubGVuZ3RoLHI9aENlP2hDZSh0KTpuZXcgbi5jb25zdHJ1'@; put 'Y3Rvcih0KTtyZXR1cm4gbi5jb3B5KHIpLHJ9KG4sbCk7aWYoTz09RENlfHxPPT1SQ2V8fFomJiFpKXtpZihhPXV8fFo/e306ZnVuY3Rpb24gcDN0KG4pe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBuLmNvbnN0cnVjdG9yfHxBaWUobik/e306ZjN0KG1DZShuKSl9KG4pLCFsKXJldHVybiB1'@; put 'P2Z1bmN0aW9uIGZmdChuLGUpe3JldHVybiBzeihuLHZDZShuKSxlKX0obixmdW5jdGlvbiAkMnQobixlKXtyZXR1cm4gbiYmc3ooZSxSaWUoZSksbil9KGEsbikpOmZ1bmN0aW9uIHNmdChuLGUpe3JldHVybiBzeihuLElpZShuKSxlKX0obixmdW5jdGlvbiBWMnQobixlKXtyZXR1cm4gbiYm'@; put 'c3ooZSxraWUoZSksbil9KGEsbikpfWVsc2V7aWYoIXF1W09dKXJldHVybiBpP246e307YT1kM3QobixPLGwpfX1vfHwobz1uZXcgXzB0KTt2YXIgZWU9by5nZXQobik7aWYoZWUpcmV0dXJuIGVlO28uc2V0KG4sYSksTTN0KG4pP24uZm9yRWFjaChmdW5jdGlvbihIZSl7YS5hZGQobHooSGUs'@; put 'ZSx0LEhlLG4sbykpfSk6YjN0KG4pJiZuLmZvckVhY2goZnVuY3Rpb24oSGUsV2Upe2Euc2V0KFdlLGx6KEhlLGUsdCxXZSxuLG8pKX0pO3ZhciBNZT1FP3ZvaWQgMDooZz91P3lmdDp2ZnQ6dT9SaWU6a2llKShuKTtyZXR1cm4gZnVuY3Rpb24geTB0KG4sZSl7Zm9yKHZhciB0PS0xLHI9bnVs'@; put 'bD09bj8wOm4ubGVuZ3RoOysrdDxyJiYhMSE9PWUoblt0XSx0LG4pOyk7fShNZXx8bixmdW5jdGlvbihIZSxXZSl7TWUmJihIZT1uW1dlPUhlXSksS3dlKGEsV2UsbHooSGUsZSx0LFdlLG4sbykpfSksYX0sY3o9ZnVuY3Rpb24gdHB0KG4pe3JldHVybiBRM3Qobiw1KX07dmFyIG5wdD1oKDc4'@; put 'ODU1KSxycHQ9aC5uKG5wdCk7bGV0IGZoPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3Iocil7dGhpcy5zYXNTZXJ2aWNlPXIsdGhpcy5zaG93bkxpYnJhcmllcz01MCx0aGlzLmxvYWRNb3JlQ291bnQ9NTB9Y29udmVydEpzRGF0ZVRvU2FzRGF0ZShyLGk9ImRheXMiKXtsZXQgbyxh'@; put 'PTA7bz1yIGluc3RhbmNlb2YgRGF0ZT9yOm5ldyBEYXRlKHIpLGE9bmV3IERhdGUoRGF0ZS5VVEMoby5nZXRGdWxsWWVhcigpLG8uZ2V0TW9udGgoKSxvLmdldERhdGUoKSxvLmdldEhvdXJzKCksby5nZXRNaW51dGVzKCksby5nZXRTZWNvbmRzKCkpKS52YWx1ZU9mKCk7Y29uc3QgZz1hKzMx'@; put 'NTYxOTJlNTtzd2l0Y2goaSl7Y2FzZSJkYXlzIjp7bGV0IEU9Zy84NjRlNTtyZXR1cm4gRT1NYXRoLmFicyhFKSxFPU1hdGguZmxvb3IoRSksRX1jYXNlInNlY29uZHMiOnJldHVybiBnLzFlM31yZXR1cm4gMH1jb252ZXJ0U2FzRGF5c1RvSnNEYXRlKHIsaT0iZGF5cyIpe2lmKCJudW1iZXIi'@; put 'IT10eXBlb2YgciYmKHI9cGFyc2VGbG9hdChyKSksInNlY29uZHMiPT09aSl7bGV0IHU9MWUzKnItMzE1NjE5MmU1O3JldHVybiB1Kz02MCpuZXcgRGF0ZSh1KS5nZXRUaW1lem9uZU9mZnNldCgpKjFlMyxuZXcgRGF0ZSh1KX1yZXR1cm4gbmV3IERhdGUoODY0ZTUqci0zMTU2MTkyZTUpfXRy'@; put 'ZWVPbkZpbHRlcihyLGkpe2xldCBvPXIuc2VhcmNoU3RyaW5nP3Iuc2VhcmNoU3RyaW5nOiIiLGE9aS5zcGxpdCgiLiIpWzBdLGw9aS5zcGxpdCgiLiIpWzFdLHU9YSsiQWxsIjtyW2FdJiYoclt1XXx8KHJbdV09dGhpcy5kZWVwQ2xvbmUoclthXSkpLHJbYV09dGhpcy5kZWVwQ2xvbmUoclt1'@; put 'XSksby5sZW5ndGg+MCYmKHJbYV09clthXS5maWx0ZXIobD9nPT5nW2xdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoby50b0xvd2VyQ2FzZSgpKTpnPT5nLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoby50b0xvd2VyQ2FzZSgpKSkpKX1saWJyYXJ5T25GaWx0ZXIocixpLG8pe2kubGVuZ3RoPjA/'@; put 'ci5mb3JFYWNoKGE9PnthW29dLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoaS50b0xvd2VyQ2FzZSgpKT8oYS5oaWRkZW49ITEsYS5pbkZvcmVncm91bmQ9ITApOihhLmhpZGRlbj0hMCxhLmluRm9yZWdyb3VuZD0hMSl9KToodGhpcy5yZXNldEFycmF5RmlsdGVyKHIpLHRoaXMuZGlzcGxheUxp'@; put 'YnJhcmllcyhyKSl9ZGlzcGxheUxpYnJhcmllcyhyLGkpe2k/dGhpcy5zaG93bkxpYnJhcmllcys9dGhpcy5sb2FkTW9yZUNvdW50Oih0aGlzLnNob3duTGlicmFyaWVzPTUwLHRoaXMucmVzZXRMaWJyYXJ5Rm9yZWdyb3VuZChyKSk7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aCYmbyE9PXRoaXMu'@; put 'c2hvd25MaWJyYXJpZXM7bysrKXJbb10uaW5Gb3JlZ3JvdW5kPSEwfXJlc2V0TGlicmFyeUZvcmVncm91bmQocil7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspcltpXS5pbkZvcmVncm91bmQ9ITF9bWV0YU9iamVjdE9uRmlsdGVyKHIsaSxvKXtpLmxlbmd0aD4wPyh0aGlzLnJlc2V0QXJy'@; put 'YXlGaWx0ZXIociksci5mb3JFYWNoKGE9PnthW29dLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoaS50b0xvd2VyQ2FzZSgpKXx8KGEuaGlkZGVuPSEwKX0pKTp0aGlzLnJlc2V0QXJyYXlGaWx0ZXIocil9cmVzZXRBcnJheUZpbHRlcihyKXtyLmZvckVhY2goaT0+e2kuaGlkZGVuPSExLGkuaW5G'@; put 'b3JlZ3JvdW5kJiZkZWxldGUgaS5pbkZvcmVncm91bmR9KX1jb252ZXJ0T2JqZWN0c1RvQXJyYXkocixpPSExKXtyZXR1cm4gaSYmKHI9dGhpcy5kZWVwQ2xvbmUocikpLHIubWFwKG89Pk9iamVjdC5rZXlzKG8pLm1hcChhPT5vW2FdKSl9YWRkTGVhZGluZ1plcm8ocil7cmV0dXJuInN0cmlu'@; put 'ZyIhPXR5cGVvZiByJiYocj1yLnRvU3RyaW5nKCkpLHIubGVuZ3RoPDI/IjAiK3I6cn1kZWxldGVLZXlzQW5kSGFzaChyLGksbz0hMCl7Y29uc3QgYT1vP3RoaXMuZGVlcENsb25lKHIpOnI7Zm9yKGxldCBsIG9mIGkpZGVsZXRlIGFbbF07cmV0dXJuIHJwdCgpKEpTT04uc3RyaW5naWZ5KGEp'@; put 'KS50b1N0cmluZygpfWRvd25sb2FkVGV4dEZpbGUocixpKXtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtvLnNldEF0dHJpYnV0ZSgiaHJlZiIsImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KGkpKSxvLnNldEF0dHJpYnV0ZSgi'@; put 'ZG93bmxvYWQiLHIrIi50eHQiKSxvLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyksby5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobyl9Y29udmVydEFycmF5VmFsdWVzKHIsaSl7aWYoci5sZW5ndGg8MSlyZXR1cm5bXTtzd2l0Y2go'@; put 'aSl7Y2FzZSJudW1iZXIiOnJldHVybiByLm1hcChvPT4xKm8pO2Nhc2Uic3RyaW5nIjpyZXR1cm4gci5tYXAobz0+YCR7b31gKX19aXNTdHJlYW1pbmdWaXlhKCl7cmV0dXJuIlNBU1ZJWUEiPT09dGhpcy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSYmISghbG9jYXRpb24uc2VhcmNoLnRv'@; put 'TG93ZXJDYXNlKCkuaW5jbHVkZXMoIj9fZmlsZT0iKXx8IWxvY2F0aW9uLnBhdGhuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoIi9zYXNqb2JleGVjdXRpb24iKSl9ZGVib3VuY2VDYWxsKHIsaSl7Y2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lb3V0KSx0aGlzLmRlYm91bmNlVGlt'@; put 'ZW91dD1zZXRUaW1lb3V0KGkscil9ZGVlcENsb25lKHIpe3JldHVybiBjeihyKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKShvcihpYykpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhYyxw'@; put 'cm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpLEYyPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpLG8sYSxsLHUpe3RoaXMubG9nZ2VyU2VydmljZT1yLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPWksdGhpcy5ldmVudFNlcnZpY2U9byx0aGlzLnNhc1NlcnZpY2U9'@; put 'YSx0aGlzLmhlbHBlclNlcnZpY2U9bCx0aGlzLnJvdXRlcj11LHRoaXMudXNlckNvdW50TGltaXRhdGlvbj0hMSx0aGlzLmxpY2Vuc2VLZXlEYXRhPW51bGwsdGhpcy5fbGljZW5jZVN0YXRlPWZpZSx0aGlzLmFsbEZlYXR1cmVzT249e3ZpZXdlcl9yb3dzX2FsbG93ZWQ6MS8wLGVkaXRvcl9y'@; put 'b3dzX2FsbG93ZWQ6MS8wLHN0YWdlX3Jvd3NfYWxsb3dlZDoxLzAsaGlzdG9yeV9yb3dzX2FsbG93ZWQ6MS8wLHN1Ym1pdF9yb3dzX2xpbWl0OjEvMCx0YWJsZXNfaW5fbGlicmFyeV9saW1pdDoxLzAsdmlld2JveF9saW1pdDoxLzAsbGluZWFnZV9kYWlseV9saW1pdDoxLzAsdmlld2JveDoh'@; put 'MCxmaWxlVXBsb2FkOiEwLGVkaXRSZWNvcmQ6ITAsYWRkUmVjb3JkOiEwfSx0aGlzLmZyZWVUaWVyTGljZW5jZURhdGE9e2RlbW86ITAsaG90X2xpY2Vuc2Vfa2V5OnRoaXMuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCk/LmhvdExpY2VuY2VLZXksdXNlcnNfYWxsb3dl'@; put 'ZDp0aGlzLl9saWNlbmNlU3RhdGUudXNlcnNfYWxsb3dlZHx8MSx2YWxpZF91bnRpbDpTcCgpKCkuYWRkKDEsInllYXIiKS5mb3JtYXQoIllZWVktTU0tREQiKSxzaXRlX2lkOiIiLHNpdGVfaWRfbXVsdGlwbGU6W119LHRoaXMuaXNBcHBBY3RpdmF0ZWQ9bmV3ICRpKG51bGwpLHRoaXMuaXNB'@; put 'cHBPdmVyQ2FwYWNpdHk9bmV3ICRpKCExKSx0aGlzLmN1cnJlbnRVc2VyQ2FuUmVnaXN0ZXI9bmV3ICRpKCExKSx0aGlzLmFwcExvY2tlZD1uZXcgJGkoITEpLHRoaXMubGljZW5zZUV4cGlyZXNJbkRheXM9bmV3ICRpKG51bGwpLHRoaXMuaXNBcHBGcmVlVGllcj1uZXcgJGkoITEpLHRoaXMu'@; put 'bGljZW5jZVByb2JsZW09bmV3ICRpKG51bGwpLHRoaXMuaG90X2xpY2Vuc2Vfa2V5PW5ldyAkaSh2b2lkIDApLHRoaXMubGljZW5jZVN0YXRlPW5ldyAkaSh0aGlzLl9saWNlbmNlU3RhdGUpLHRoaXMuc2FzU2VydmljZS5pbmNvcnJlY3RTaXRlSWRFbWl0dGVyLnN1YnNjcmliZShnPT57aWYo'@; put 'bnVsbCE9PXRoaXMuaXNBcHBBY3RpdmF0ZWQudmFsdWUmJiF0aGlzLmlzQXBwRnJlZVRpZXIudmFsdWUpe2NvbnN0IEU9YC9saWNlbnNpbmcva2V5P2Vycm9yPW1pc3NtYXRjaCZtaXNzbWF0Y2hJZD0ke2d9JmZvcmNlPXRydWVgO3RoaXMubGljZW5jZVByb2JsZW0ubmV4dChFKSx0aGlzLmRl'@; put 'YWN0aXZhdGVBcHAoRSl9fSl9YWN0aXZhdGlvbihyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpLmZyZWVUaWVyTGljZW5jZURhdGEuaG90X2xpY2Vuc2Vfa2V5PWkuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCk/LmhvdExpY2VuY2VLZXkseWllbGQg'@; put 'aS5zZXRTdGFydHVwc2VydmljZVJ1bGVzKHIpLHlpZWxkIGkubGljZW5zaW5nKHIuZ2xvYnZhcnMsci5TWVNTSVRFKX0pKCl9c2V0U3RhcnR1cHNlcnZpY2VSdWxlcyhyKXt0aGlzLl9saWNlbmNlU3RhdGUuZWRpdFJlY29yZD0iWUVTIiE9PXIuZ2xvYnZhcnNbMF0uRENfUkVTVFJJQ1RfRURJ'@; put 'VFJFQ09SRH1saWNlbnNpbmcocixpKXt2YXIgbz10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpZighcnx8IXJbMF0pe2NvbnN0IGw9J0Vycm9yIGdldHRpbmcgIkdsb2J2YXJzIiBmcm9tIHN0YXJ0dXBzZXJ2aWNlIHJlc3BvbnNlLic7cmV0dXJuIGNvbnNvbGUuZXJyb3IobCksby5pc0Fw'@; put 'cEFjdGl2YXRlZC5uZXh0KCExKSx2b2lkIG8ucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9saWNlbnNpbmcva2V5P2Vycm9yPWludmFsaWQmZGV0YWlscz0ke2J0b2EobCl9YCl9bGV0IGE9clswXTtyZXR1cm4gYS5MSUNFTkNFX0tFWSYmKGEuTElDRU5DRV9LRVk9YS5MSUNFTkNFX0tFWS50cmlt'@; put 'KCkpLGEuQUNUSVZBVElPTl9LRVkmJihhLkFDVElWQVRJT05fS0VZPWEuQUNUSVZBVElPTl9LRVkudHJpbSgpKSx2b2lkIDA9PT1hLkxJQ0VOQ0VfS0VZfHx2b2lkIDA9PT1hLkFDVElWQVRJT05fS0VZfHxudWxsPT1hLlJFR0lTVEVSQ09VTlR8fG51bGw9PWEuSVNSRUdJU1RFUkVEPyhjb25z'@; put 'b2xlLmVycm9yKCJTb21lIG9mIGdsb2J2YXJzIGFyZSBub3QgcHJlc2VudCIpLG8uaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksdm9pZCBvLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJFcnJvciIsIlNvbWUgb2YgdGhlIGdsb2J2YXJzIGFyZSBub3QgcHJlc2VudCBpbiB0aGUgc3RhcnR1'@; put 'cHNlcnZpY2UiKSk6YS5MSUNFTkNFX0tFWSYmYS5BQ1RJVkFUSU9OX0tFWT8oby5saWNlbmNlS2V5PWEuTElDRU5DRV9LRVksby5hY3RpdmF0aW9uS2V5PWEuQUNUSVZBVElPTl9LRVksdm9pZCh5aWVsZCBvLmRlY3J5cHRMaWNlbnNlS2V5KGEuTElDRU5DRV9LRVksYS5BQ1RJVkFUSU9OX0tF'@; put 'WSkudGhlbihmdW5jdGlvbigpe3ZhciBsPUNyKGZ1bmN0aW9uKih1KXt5aWVsZCBvLmFwcGxpY2F0aW9uQWN0aXZhdGlvbih1LGEsaSl9KTtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIGwuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxmdW5jdGlvbigpe3ZhciBsPUNyKGZ1bmN0aW9uKih1'@; put 'KXtjb25zdCBnPWBFcnJvciBkZWNyeXB0aW5nIGxpY2Vuc2Uga2V5LiAke3V9YDtjb25zb2xlLmVycm9yKGcpO2NvbnN0IEU9YC9saWNlbnNpbmcva2V5P2Vycm9yPWludmFsaWQmZGV0YWlscz0ke2J0b2EoZyl9JmZvcmNlPXRydWVgO28ubGljZW5jZVByb2JsZW0ubmV4dChFKSxzZXRUaW1l'@; put 'b3V0KCgpPT57by5hcHBsaWNhdGlvbkFjdGl2YXRpb24oby5mcmVlVGllckxpY2VuY2VEYXRhLGEsaSwhMCksby5yb3V0ZXIubmF2aWdhdGVCeVVybChFKX0pfSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpKSk6eWllbGQgby5hcHBsaWNh'@; put 'dGlvbkFjdGl2YXRpb24oby5mcmVlVGllckxpY2VuY2VEYXRhLGEsaSl9KSgpfWFwcGxpY2F0aW9uQWN0aXZhdGlvbihyLGksbyxhKXthfHwoYT0hMSksdGhpcy5zZXRTaXRlSWQociksIXIuZGVtbyYmaSYmbyYmdGhpcy5oYW5kbGVTaXRlSWRNaXNzbWF0Y2gocixpLG8sYSk7bGV0IGw9dm9p'@; put 'ZCAwIT09ci5ob3RfbGljZW5zZV9rZXk/ci5ob3RfbGljZW5zZV9rZXk6dGhpcy5ob3RfbGljZW5zZV9rZXkudmFsdWU7bHx8KGw9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3MoKT8uaG90TGljZW5jZUtleSksdGhpcy5ob3RfbGljZW5zZV9rZXkubmV4dChsKSx0'@; put 'aGlzLnVzZXJDb3VudExpbWl0YXRpb24mJnRoaXMuaGFuZGxlVXNlcnNBbGxvd2VkKHIpLHRoaXMubGljZW5zZUtleURhdGE9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShyKSx3aW5kb3cuYXBwaW5mbygpO2NvbnN0e2V4cGlyeV9kYXRlOnUsZGF5c1RvRXhwaXJ5Omd9PXRoaXMuY2Fs'@; put 'Y3VsYXRlRXhwaXJ5KHIpO2lmKHdpbmRvdy5saWNlbnNlRXhwaXJlc0luPWcsdGhpcy5saWNlbnNlRXhwaXJlc0luRGF5cy5uZXh0KGcpLGc8PTApcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkxpY2Vuc2Uga2V5IGhhcyBleHBpcmVkIiksdm9pZChpJiZvJiZ0aGlzLmhhbmRsZUV4cGlyeSh1LGks'@; put 'byxhKSk7dGhpcy5pc0FwcEZyZWVUaWVyLm5leHQoISFyLmRlbW8pLGkmJnRoaXMuaGFuZGxlVXNlclJlZ2lzdHJhdGlvbihyLGksYSksdGhpcy5kZWNvZGVMaWNlbmNlRmVhdHVyZXMociksdGhpcy5saWNlbmNlU3RhdGUubmV4dCh0aGlzLl9saWNlbmNlU3RhdGUpfWRlY29kZUxpY2VuY2VG'@; put 'ZWF0dXJlcyhyKXtpZihyLmZlYXR1cmVzKXRoaXMuX2xpY2VuY2VTdGF0ZT17Li4udGhpcy5fbGljZW5jZVN0YXRlLC4uLnZ3ZShyLmZlYXR1cmVzKX0sdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZygiTGljZW5jZSBzdGF0ZToiLHRoaXMuX2xpY2VuY2VTdGF0ZSk7ZWxzZXtpZihyLmRlbW8pcmV0'@; put 'dXJuO3RoaXMuX2xpY2VuY2VTdGF0ZT10aGlzLmFsbEZlYXR1cmVzT259fWRlY3J5cHRMaWNlbnNlS2V5KHIsaSl7dmFyIG89dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgYT1DcihmdW5jdGlvbioobCx1KXtpZighd2luZG93LmNyeXB0b3x8IXdpbmRvdy5jcnlwdG8u'@; put 'c3VidGxlKXRyeXtsZXQgZWU9YXRvYihyLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikpO2woSlNPTi5wYXJzZShlZSkpfWNhdGNoKGVlKXt1KCJFcnJvciBwYXJzaW5nIGh0dHAgbGljZW5zZSBrZXkgZGF0YS4gIitlZSl9bGV0IEUsZz15aWVsZCBvLmJhc2U2NFRvQXJyYXlCdWZmZXIo'@; put 'cikuY2F0Y2goZWU9Pnt1KGVlKX0pO2NvbnN0IE89eWllbGQgby5iYXNlNjRUb0FycmF5QnVmZmVyKGkpLmNhdGNoKGVlPT57dShlZSl9KTtpZighTylyZXR1cm4gdm9pZCB1KCJNaXNzaW5nIGFjdGl2YXRpb24ga2V5Iik7bGV0IFo7RT1PO3RyeXtaPXlpZWxkIHdpbmRvdy5jcnlwdG8uc3Vi'@; put 'dGxlLmltcG9ydEtleSgicGtjczgiLEUse25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtMjU2In0sITAsWyJkZWNyeXB0Il0pfWNhdGNoKGVlKXt1KCJVbmFibGUgdG8gaW1wb3J0IGRlY3J5cHRpb24ga2V5OiAiK2VlKX1pZihaKWlmKGcpdHJ5e3dpbmRvdy5jcnlwdG8uc3VidGxlLmRlY3J5'@; put 'cHQoe25hbWU6IlJTQS1PQUVQIixoYXNoOntuYW1lOiJTSEEtMjU2In19LFosZykudGhlbihlZT0+e2xldCB2ZT0obmV3IEtkdC5UZXh0RGVjb2RlcikuZGVjb2RlKGVlKTt0cnl7bChKU09OLnBhcnNlKHZlKSl9Y2F0Y2goTWUpe3UoIkVycm9yIHBhcnNpbmcgbGljZW5zZSBrZXkgZGF0YS4g'@; put 'IitNZSl9fSxlZT0+e3UoZWUpfSl9Y2F0Y2goZWUpe3UoZWUpfWVsc2UgdSgiTGljZW5zZSBrZXkgYnl0ZXMgbWlzc2luZyIpO2Vsc2UgdSgiVW5hYmxlIHRvIGltcG9ydCBkZWNyeXB0aW9uIGtleSIpfSk7cmV0dXJuIGZ1bmN0aW9uKGwsdSl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVu'@; put 'dHMpfX0oKSl9Z2V0SG90TGljZW5zZUtleSgpe3JldHVybiB0aGlzLmhvdF9saWNlbnNlX2tleS52YWx1ZX1nZXRMaWNlbnNlS2V5RGF0YSgpe3JldHVybiB0aGlzLmxpY2Vuc2VLZXlEYXRhfWRlYWN0aXZhdGVBcHAocil7dGhpcy5fbGljZW5jZVN0YXRlPWZpZSx0aGlzLmFwcGxpY2F0aW9u'@; put 'QWN0aXZhdGlvbih0aGlzLmZyZWVUaWVyTGljZW5jZURhdGEpLHImJnRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocil9Y2hlY2tMaW5lYWdlTGltaXQocil7aWYodGhpcy5saWNlbmNlU3RhdGUudmFsdWUubGluZWFnZV9kYWlseV9saW1pdD09PTEvMClyZXR1cm4hMTtjb25zdCBpPWxvY2Fs'@; put 'U3RvcmFnZS5nZXRJdGVtKCJsaW5lYWdlX3JlbmRlcnMiKSxvPVNwKCkoKS52YWx1ZU9mKCk7aWYoIWkpcmV0dXJuIHJ8fHRoaXMuc2V0TGluZWFnZVJlbmRlcihvLDEpLCExO2NvbnN0IGE9cGFyc2VJbnQoaS5zcGxpdCgiLCIpWzBdKSxsPXBhcnNlSW50KGkuc3BsaXQoIiwiKVsxXSk7cmV0'@; put 'dXJuIFNwKCkoYSkuaXNTYW1lKFNwKCkoKSwiZGF5Iik/bD49dGhpcy5saWNlbmNlU3RhdGUudmFsdWUubGluZWFnZV9kYWlseV9saW1pdHx8KHJ8fHRoaXMuc2V0TGluZWFnZVJlbmRlcihvLGwrMSksITEpOihyfHx0aGlzLnNldExpbmVhZ2VSZW5kZXIobywxKSwhMSl9c2V0TGluZWFnZVJl'@; put 'bmRlcihyLGkpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJsaW5lYWdlX3JlbmRlcnMiLGAke3J9LCR7aX1gKX1iYXNlNjRUb0FycmF5QnVmZmVyKHIpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbigpe3ZhciBpPUNyKGZ1bmN0aW9uKihvLGEpe28oaGllLkQocikpfSk7cmV0dXJuIGZ1bmN0'@; put 'aW9uKG8sYSl7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9YXJyYXlCdWZmZXJUb0Jhc2U2NChyKXtyZXR1cm4gbmV3IFByb21pc2UoKGksbyk9PntpKGhpZS5sKHIpKX0pfXNldFNpdGVJZChyKXtyLnNpdGVfaWRfbXVsdGlwbGU/dGhpcy5zYXNTZXJ2aWNlLnNldExpY2Vu'@; put 'c2VTaXRlSWQoci5zaXRlX2lkX211bHRpcGxlKTpyLnNpdGVfaWQmJnRoaXMuc2FzU2VydmljZS5zZXRMaWNlbnNlU2l0ZUlkKHIuc2l0ZV9pZCl9aGFuZGxlU2l0ZUlkTWlzc21hdGNoKHIsaSxvLGEpe2xldCBsPSExLHU9ITE7aWYoKCFyLnNpdGVfaWR8fHIuc2l0ZV9pZCE9PW8pJiYobD0h'@; put 'MCksKCFyLnNpdGVfaWRfbXVsdGlwbGV8fCFyLnNpdGVfaWRfbXVsdGlwbGUuaW5jbHVkZXMobykpJiYodT0hMCksbCYmdSlyZXR1cm4gY29uc29sZS5lcnJvcigiVGhlIGtleSBwcm92aWRlZCBpcyBmb3IgZGlmZmVyZW50IG9yZ2FuaXphdGlvbi4iKSx2b2lkIHNldFRpbWVvdXQoKCk9Pntj'@; put 'b25zdCBnPSIvbGljZW5zaW5nL2tleT9lcnJvcj1taXNzbWF0Y2gmZm9yY2U9dHJ1ZSI7dGhpcy5saWNlbmNlUHJvYmxlbS5uZXh0KGcpLHRoaXMuX2xpY2VuY2VTdGF0ZT1maWUsdGhpcy5hcHBsaWNhdGlvbkFjdGl2YXRpb24odGhpcy5mcmVlVGllckxpY2VuY2VEYXRhLGksbywhMCksYXx8'@; put 'dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChnKX0pfWNhbGN1bGF0ZUV4cGlyeShyKXtsZXQgaT1TcCgpKHIudmFsaWRfdW50aWwsIllZWVktTU0tREQiKS5zdGFydE9mKCJkYXkiKSxvPVNwKCkoKS5zdGFydE9mKCJkYXkiKSxhPWkuZGlmZihvLCJkYXlzIik7cmV0dXJue2V4cGlyeV9kYXRl'@; put 'OmksZGF5c1RvRXhwaXJ5OmF9fWhhbmRsZUV4cGlyeShyLGksbyxhKXtzZXRUaW1lb3V0KCgpPT57Y29uc3QgbD1gL2xpY2Vuc2luZy9rZXk/Zm9yY2U9dHJ1ZSZlcnJvcj1leHBpcmVkJmRldGFpbHM9JHtidG9hKCJFeHBpcnkgZGF0ZTogIityLmZvcm1hdCgiREQvTU0vWVlZWSIpKX1gO3Ro'@; put 'aXMubGljZW5jZVByb2JsZW0ubmV4dChsKSx0aGlzLmFwcGxpY2F0aW9uQWN0aXZhdGlvbih0aGlzLmZyZWVUaWVyTGljZW5jZURhdGEsaSxvLCEwKSxhfHx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGwpfSl9aGFuZGxlVXNlcnNBbGxvd2VkKHIpe3IuZGVtbyYmdm9pZCAwIT09dGhpcy5f'@; put 'bGljZW5jZVN0YXRlLnVzZXJzX2FsbG93ZWQmJihyLnVzZXJzX2FsbG93ZWQ9ci51c2Vyc19hbGxvd2VkPjA/ci51c2Vyc19hbGxvd2VkOnRoaXMuX2xpY2VuY2VTdGF0ZS51c2Vyc19hbGxvd2VkKSx0aGlzLl9saWNlbmNlU3RhdGUudXNlcnNfYWxsb3dlZD1yLnVzZXJzX2FsbG93ZWR9aGFu'@; put 'ZGxlVXNlclJlZ2lzdHJhdGlvbihyLGksbyl7aWYodGhpcy51c2VyQ291bnRMaW1pdGF0aW9uJiYoaS5SRUdJU1RFUkNPVU5UPnIudXNlcnNfYWxsb3dlZD8oY29uc29sZS53YXJuKCJBcHAgaGFzIG1vcmUgdXNlcnMgcmVnaXN0ZXJlZCB0aGVuIGxpY2Vuc2VkLiIpLHRoaXMuaXNBcHBPdmVy'@; put 'Q2FwYWNpdHkubmV4dCghMCkpOmkuUkVHSVNURVJDT1VOVD09PXIudXNlcnNfYWxsb3dlZCYmY29uc29sZS53YXJuKCJBcHAgaGFzIGhpdCBsaW1pdCBvZiB1c2VycyByZWdpc3RlcmVkLiIpKSwxIT09aS5JU1JFR0lTVEVSRUQpcmV0dXJuIGkuUkVHSVNURVJDT1VOVDxyLnVzZXJzX2FsbG93'@; put 'ZWR8fCF0aGlzLnVzZXJDb3VudExpbWl0YXRpb24/KGNvbnNvbGUubG9nKCJVc2VyIGNhbiByZWdpc3RlciIpLHRoaXMuY3VycmVudFVzZXJDYW5SZWdpc3Rlci5uZXh0KCEwKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQob3x8dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgi'@; put 'L2xpY2Vuc2luZy9yZWdpc3RlciIpKSk6KHRoaXMuY3VycmVudFVzZXJDYW5SZWdpc3Rlci5uZXh0KCExKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQob3x8dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9saW1pdCIpKSk7dGhpcy5pc0FwcEFjdGl2YXRl'@; put 'ZC5uZXh0KCEwKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKShvcih4Myksb3IoRWIpLG9yKHVkKSxvcihpYyksb3IoZmgpLG9yKHZjKSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5OmUuXHUwMjc1ZmFjLHBy'@; put 'b3ZpZGVkSW46InJvb3QifSkpfXJldHVybiBuKCksZX0pKCksdXo9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwsdSxnLEUpe3RoaXMubGljZW5jZVNlcnZpY2U9cix0aGlzLmV2ZW50U2VydmljZT1pLHRoaXMuc2FzU2VydmljZT1vLHRoaXMubG9nZ2VyU2Vydmlj'@; put 'ZT1hLHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlPWwsdGhpcy5yb3V0ZXI9dSx0aGlzLmFwcFN0b3JlU2VydmljZT1nLHRoaXMuc3RhcnR1cENoZWNrU2VydmljZT1FLHRoaXMuc3lzc2l0ZT1uZXcgJGkobnVsbCksdGhpcy5lbnZpcm9ubWVudEluZm89e30sdGhpcy5yZXRyeU9wdGlvbnM9e30s'@; put 'dGhpcy5zdWJzY3JpYmUoKSx0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKFo9PntaIGluc3RhbmNlb2YgQjUmJiIvZGVwbG95Ij09PVoudXJsJiZ0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpfSk7Y29uc3QgTz10aGlzLmFwcFNldHRpbmdzU2VydmljZS5zZXR0aW5n'@; put 'cy52YWx1ZTtPLnBlcnNpc3RTZWxlY3RlZFRoZW1lJiZ0aGlzLmV2ZW50U2VydmljZS50b2dnbGVEYXJrTW9kZShPLnNlbGVjdGVkVGhlbWUhPT1XRS5saWdodCYmTy5zZWxlY3RlZFRoZW1lPT09V0UuZGFyayl9c2FzU2VydmljZUluaXQoKXt0aGlzLnNhc1NlcnZpY2Uuc2FzU2VydmljZUlu'@; put 'aXQoKX1zdWJzY3JpYmUoKXt0aGlzLnNhc1NlcnZpY2UubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5zdWJzY3JpYmUoKCk9Pnt0aGlzLnN0YXJ0VXBEYXRhKCl9KSx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdFNpdGVJZEVtaXR0ZXIuc3Vic2NyaWJlKHI9Pnt0aGlzLnBhdGNoU3lzc2l0ZShy'@; put 'KX0pfWdldEVudmlyb25tZW50SW5mbygpe3JldHVybiB0aGlzLmVudmlyb25tZW50SW5mb31wYXRjaFN5c3NpdGUocil7bGV0IGk9dGhpcy5zeXNzaXRlLmdldFZhbHVlKCk7aSYmKGkuaW5jbHVkZXMocil8fChpLnB1c2gociksdGhpcy5zeXNzaXRlLm5leHQoaSkpKX1zdGFydFVwRGF0YSgp'@; put 'e3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2xldCBpPSExO3lpZWxkIHFkdCgoKT0+ci5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9zdGFydHVwc2VydmljZSIsbnVsbCksci5yZXRyeU9wdGlvbnMpLnRoZW4oZnVuY3Rpb24oKXt2YXIgbz1DcihmdW5jdGlvbiooYSl7Y29u'@; put 'c3QgbD1td2UoYS5hZGFwdGVyUmVzcG9uc2UpO2lmKGwpcmV0dXJuIGk9ITAsY29uc29sZS5lcnJvcigic3RhcnRVcERhdGE6IHN0YXJ0dXBzZXJ2aWNlIHJldHVybmVkIG1hbGZvcm1lZCByZXNwb25zZToiLGwpLHIuc3RhcnR1cENoZWNrU2VydmljZS51cGRhdGVTdGVwKDIsImVycm9yIiwi'@; put 'TWFsZm9ybWVkIHJlc3BvbnNlIiksci5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRXJyb3IiLGwpLHZvaWQgci5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKTtyLnN5c3NpdGUubmV4dChbYS5hZGFwdGVyUmVzcG9uc2UuU1lTU0lURV0pO2xldCB1PVtdO2lmKCgh'@; put 'YS5hZGFwdGVyUmVzcG9uc2UuZ2xvYnZhcnN8fGEuYWRhcHRlclJlc3BvbnNlLmdsb2J2YXJzJiYhYS5hZGFwdGVyUmVzcG9uc2UuZ2xvYnZhcnNbMF0pJiZ1LnB1c2goIkdsb2J2YXJzIiksYS5hZGFwdGVyUmVzcG9uc2Uuc2FzZGF0YXNldHN8fHUucHVzaCgiU2FzZGF0YXNldHMiKSxhLmFk'@; put 'YXB0ZXJSZXNwb25zZS5zYXNsaWJzfHx1LnB1c2goIlNhc2xpYnMiKSxhLmFkYXB0ZXJSZXNwb25zZS54bG1hcHN8fHUucHVzaCgiWExNYXBzIiksdS5sZW5ndGg+MClyZXR1cm4gaT0hMCxjb25zb2xlLmVycm9yKCJzdGFydFVwRGF0YTogc3RhcnR1cHNlcnZpY2UgbWlzc2luZyBwcm9wZXJ0'@; put 'aWVzOiIsdS5qb2luKCIsICIpKSxyLnN0YXJ0dXBDaGVja1NlcnZpY2UudXBkYXRlU3RlcCgyLCJlcnJvciIsYE1pc3Npbmc6ICR7dS5qb2luKCIsICIpfWApLHIuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIixgJHt1LmpvaW4oIiwgIil9IGFyZSBub3QgcHJlc2VudCBpbiB0'@; put 'aGUgc3RhcnR1cHNlcnZpY2VgKSx2b2lkIHIubGljZW5jZVNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQubmV4dCghMSk7Y29uc3QgZz1yLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3IuZW52aXJvbm1lbnRJbmZvPXtTWVNTSVRFOmEuYWRhcHRlclJlc3BvbnNlLlNZU1NJ'@; put 'VEUsU1lTU0NQTDphLmFkYXB0ZXJSZXNwb25zZS5TWVNTQ1BMLFNZU1RDUElQSE9TVE5BTUU6YS5hZGFwdGVyUmVzcG9uc2UuU1lTVENQSVBIT1NUTkFNRSxTWVNWTE9ORzphLmFkYXB0ZXJSZXNwb25zZS5TWVNWTE9ORyxNRU1TSVpFOmEuYWRhcHRlclJlc3BvbnNlLk1FTVNJWkUsU1lTUFJP'@; put 'Q0VTU01PREU6YS5hZGFwdGVyUmVzcG9uc2UuU1lTUFJPQ0VTU01PREUsU1lTSE9TVE5BTUU6YS5hZGFwdGVyUmVzcG9uc2UuU1lTSE9TVE5BTUUsU1lTVVNFUklEOmEuYWRhcHRlclJlc3BvbnNlLlNZU1VTRVJJRCxTWVNIT1NUSU5GT0xPTkc6YS5hZGFwdGVyUmVzcG9uc2UuU1lTSE9TVElO'@; put 'Rk9MT05HLFNZU0VOQ09ESU5HOmEuYWRhcHRlclJlc3BvbnNlLlNZU0VOQ09ESU5HLEFVVE9FWEVDOmEuYWRhcHRlclJlc3BvbnNlLkFVVE9FWEVDLFRJTUVaT05FOmEuYWRhcHRlclJlc3BvbnNlLmdsb2J2YXJzWzBdLlRJTUVaT05FLFNZU1RJTUVaT05FSURFTlQ6YS5hZGFwdGVyUmVzcG9u'@; put 'c2UuZ2xvYnZhcnNbMF0uU1lTVElNRVpPTkVJREVOVCxTWVNUSU1FWk9ORU9GRlNFVDphLmFkYXB0ZXJSZXNwb25zZS5nbG9idmFyc1swXS5TWVNUSU1FWk9ORU9GRlNFVCxJU0FETUlOOmEuYWRhcHRlclJlc3BvbnNlLmdsb2J2YXJzWzBdLklTQURNSU4sRENfQURNSU5fR1JPVVA6YS5hZGFw'@; put 'dGVyUmVzcG9uc2UuZ2xvYnZhcnNbMF0uRENfQURNSU5fR1JPVVAsQVBQX0xPQzpnPy5hcHBMb2N9O2xldCBaLGVlLEU9YS5hZGFwdGVyUmVzcG9uc2Uuc2FzZGF0YXNldHMsTz17fTtmb3IobGV0IFdlIG9mIEUpT1tXZS5MSUJSRUZdfHwoT1tXZS5MSUJSRUZdPVtdKSxPW1dlLkxJQlJFRl0u'@; put 'cHVzaChXZS5EU04pO2xldCB2ZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KE8pKSxNZT1bXTtmb3IobGV0IFdlIG9mIE9iamVjdC5rZXlzKHZlKSlNZS5wdXNoKHtMSUJSQVJZUkVGOldlLHRhYmxlczp2ZVtXZV19KTtsZXQgSGU9TWU7Wj1PLGVlPU9iamVjdC5rZXlzKE8pLHZvaWQgMCE9'@; put 'PVomJihVbi5lZGl0b3IubGlic0FuZFRhYmxlcz1aKSxVbi54bG1hcHM9YS5hZGFwdGVyUmVzcG9uc2UueGxtYXBzLm1hcChXZT0+KHtpZDpXZVswXSxkZXNjcmlwdGlvbjpXZVsxXSx0YXJnZXREUzpXZVsyXX0pKSxVbi5lZGl0b3IudHJlZU5vZGVMaWJyYXJpZXM9SGUsVW4uZWRpdG9yLmxp'@; put 'YnJhcmllcz1lZSxVbi5lZGl0b3Iuc3RhcnR1cFNldD0hMCxVbi5kY0xpYj1hLmFkYXB0ZXJSZXNwb25zZS5nbG9idmFyc1swXS5EQ0xJQix5aWVsZCByLmxpY2VuY2VTZXJ2aWNlLmFjdGl2YXRpb24oYS5hZGFwdGVyUmVzcG9uc2UpfSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBvLmFw'@; put 'cGx5KHRoaXMsYXJndW1lbnRzKX19KCkpLmNhdGNoKG89PntpPSEwLGNvbnNvbGUuZXJyb3IoInN0YXJ0VXBEYXRhOiBzdGFydHVwc2VydmljZSByZXF1ZXN0IGZhaWxlZDoiLG8pLHIuc3RhcnR1cENoZWNrU2VydmljZS51cGRhdGVTdGVwKDIsImVycm9yIiwiUmVxdWVzdCBmYWlsZWQiKSxy'@; put 'LmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJFcnJvciIsIlRoZXJlIGlzIGFuIGlzc3VlIHdpdGggc3RhcnR1cHNlcnZpY2UgcmVzcG9uc2UiKSxyLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpfSksci5sb2dnZXJTZXJ2aWNlLmxvZygiQWN0aXZhdGVkOiIsci5s'@; put 'aWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC52YWx1ZSksaXx8KHIuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksci5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC52YWx1ZT9yLnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpJiZyLnJvdXRlci5uYXZpZ2F0'@; put 'ZUJ5VXJsKCIvaG9tZSIpOiFyLnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiYhci5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSYmci5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9rZXk/ZXJyb3I9bWlzc2luZyZmb3JjZT10cnVlIikpfSkoKX1zdGF0aWMj'@; put 'ZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKShvcihGMiksb3IodWQpLG9yKGljKSxvcih4Myksb3IoSlUpLG9yKHZjKSxvcihFYiksb3IoU2llKSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5OmUuXHUwMjc1ZmFjfSkpfXJl'@; put 'dHVybiBuKCksZX0pKCksUDI9KCgpPT57Y2xhc3Mgbntyb3V0ZXI7cm91dGU7dGFiSW5kZXhBdHRyaWJ1dGU7cmVuZGVyZXI7ZWw7bG9jYXRpb25TdHJhdGVneTtyZWFjdGl2ZUhyZWY9QjEobnVsbCk7Z2V0IGhyZWYoKXtyZXR1cm4gTnUodGhpcy5yZWFjdGl2ZUhyZWYpfXNldCBocmVmKHQp'@; put 'e3RoaXMucmVhY3RpdmVIcmVmLnNldCh0KX10YXJnZXQ7cXVlcnlQYXJhbXM7ZnJhZ21lbnQ7cXVlcnlQYXJhbXNIYW5kbGluZztzdGF0ZTtpbmZvO3JlbGF0aXZlVG87aXNBbmNob3JFbGVtZW50O3N1YnNjcmlwdGlvbjtvbkNoYW5nZXM9bmV3IE1yO2FwcGxpY2F0aW9uRXJyb3JIYW5kbGVy'@; put 'PXNuKF9wKTtvcHRpb25zPXNuKHpFLHtvcHRpb25hbDohMH0pO2NvbnN0cnVjdG9yKHQscixpLG8sYSxsKXt0aGlzLnJvdXRlcj10LHRoaXMucm91dGU9cix0aGlzLnRhYkluZGV4QXR0cmlidXRlPWksdGhpcy5yZW5kZXJlcj1vLHRoaXMuZWw9YSx0aGlzLmxvY2F0aW9uU3RyYXRlZ3k9bCx0'@; put 'aGlzLnJlYWN0aXZlSHJlZi5zZXQoc24obmV3IERydCgiaHJlZiIpLHtvcHRpb25hbDohMH0pKTtjb25zdCB1PWEubmF0aXZlRWxlbWVudC50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO3RoaXMuaXNBbmNob3JFbGVtZW50PSJhIj09PXV8fCJhcmVhIj09PXV8fCEoIm9iamVjdCIhPXR5cGVvZiBj'@; put 'dXN0b21FbGVtZW50c3x8IWN1c3RvbUVsZW1lbnRzLmdldCh1KT8ub2JzZXJ2ZWRBdHRyaWJ1dGVzPy5pbmNsdWRlcz8uKCJocmVmIikpLHRoaXMuaXNBbmNob3JFbGVtZW50P3RoaXMuc2V0VGFiSW5kZXhJZk5vdE9uTmF0aXZlRWwoIjAiKTp0aGlzLnN1YnNjcmliZVRvTmF2aWdhdGlvbkV2'@; put 'ZW50c0lmTmVjZXNzYXJ5KCl9c3Vic2NyaWJlVG9OYXZpZ2F0aW9uRXZlbnRzSWZOZWNlc3NhcnkoKXtpZih2b2lkIDAhPT10aGlzLnN1YnNjcmlwdGlvbnx8IXRoaXMuaXNBbmNob3JFbGVtZW50KXJldHVybjtsZXQgdD10aGlzLnByZXNlcnZlRnJhZ21lbnQ7Y29uc3Qgcj1pPT4ibWVyZ2Ui'@; put 'PT09aXx8InByZXNlcnZlIj09PWk7dHx8PXIodGhpcy5xdWVyeVBhcmFtc0hhbmRsaW5nKSx0fHw9IXRoaXMucXVlcnlQYXJhbXNIYW5kbGluZyYmIXIodGhpcy5vcHRpb25zPy5kZWZhdWx0UXVlcnlQYXJhbXNIYW5kbGluZyksdCYmKHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMucm91dGVyLmV2'@; put 'ZW50cy5zdWJzY3JpYmUoaT0+e2kgaW5zdGFuY2VvZiBCNSYmdGhpcy51cGRhdGVIcmVmKCl9KSl9cHJlc2VydmVGcmFnbWVudD0hMTtza2lwTG9jYXRpb25DaGFuZ2U9ITE7cmVwbGFjZVVybD0hMTtzZXRUYWJJbmRleElmTm90T25OYXRpdmVFbCh0KXtudWxsIT10aGlzLnRhYkluZGV4QXR0'@; put 'cmlidXRlfHx0aGlzLmlzQW5jaG9yRWxlbWVudHx8dGhpcy5hcHBseUF0dHJpYnV0ZVZhbHVlKCJ0YWJpbmRleCIsdCl9bmdPbkNoYW5nZXModCl7dGhpcy5pc0FuY2hvckVsZW1lbnQmJih0aGlzLnVwZGF0ZUhyZWYoKSx0aGlzLnN1YnNjcmliZVRvTmF2aWdhdGlvbkV2ZW50c0lmTmVjZXNz'@; put 'YXJ5KCkpLHRoaXMub25DaGFuZ2VzLm5leHQodGhpcyl9cm91dGVyTGlua0lucHV0PW51bGw7c2V0IHJvdXRlckxpbmsodCl7bnVsbD09dD8odGhpcy5yb3V0ZXJMaW5rSW5wdXQ9bnVsbCx0aGlzLnNldFRhYkluZGV4SWZOb3RPbk5hdGl2ZUVsKG51bGwpKToodGhpcy5yb3V0ZXJMaW5rSW5w'@; put 'dXQ9Q2IodCl8fEFycmF5LmlzQXJyYXkodCk/dDpbdF0sdGhpcy5zZXRUYWJJbmRleElmTm90T25OYXRpdmVFbCgiMCIpKX1vbkNsaWNrKHQscixpLG8sYSl7Y29uc3QgbD10aGlzLnVybFRyZWU7aWYobnVsbD09PWx8fHRoaXMuaXNBbmNob3JFbGVtZW50JiYoMCE9PXR8fHJ8fGl8fG98fGF8'@; put 'fCJzdHJpbmciPT10eXBlb2YgdGhpcy50YXJnZXQmJiJfc2VsZiIhPXRoaXMudGFyZ2V0KSlyZXR1cm4hMDtjb25zdCB1PXtza2lwTG9jYXRpb25DaGFuZ2U6dGhpcy5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDp0aGlzLnJlcGxhY2VVcmwsc3RhdGU6dGhpcy5zdGF0ZSxpbmZvOnRo'@; put 'aXMuaW5mb307cmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobCx1KT8uY2F0Y2goZz0+e3RoaXMuYXBwbGljYXRpb25FcnJvckhhbmRsZXIoZyl9KSwhdGhpcy5pc0FuY2hvckVsZW1lbnR9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKX11cGRh'@; put 'dGVIcmVmKCl7Y29uc3QgdD10aGlzLnVybFRyZWU7dGhpcy5yZWFjdGl2ZUhyZWYuc2V0KG51bGwhPT10JiZ0aGlzLmxvY2F0aW9uU3RyYXRlZ3k/dGhpcy5sb2NhdGlvblN0cmF0ZWd5Py5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHQpKT8/IiI6bnVsbCl9'@; put 'YXBwbHlBdHRyaWJ1dGVWYWx1ZSh0LHIpe2NvbnN0IGk9dGhpcy5yZW5kZXJlcixvPXRoaXMuZWwubmF0aXZlRWxlbWVudDtudWxsIT09cj9pLnNldEF0dHJpYnV0ZShvLHQscik6aS5yZW1vdmVBdHRyaWJ1dGUobyx0KX1nZXQgdXJsVHJlZSgpe3JldHVybiBudWxsPT09dGhpcy5yb3V0ZXJM'@; put 'aW5rSW5wdXQ/bnVsbDpDYih0aGlzLnJvdXRlckxpbmtJbnB1dCk/dGhpcy5yb3V0ZXJMaW5rSW5wdXQ6dGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZSh0aGlzLnJvdXRlckxpbmtJbnB1dCx7cmVsYXRpdmVUbzp2b2lkIDAhPT10aGlzLnJlbGF0aXZlVG8/dGhpcy5yZWxhdGl2ZVRvOnRoaXMu'@; put 'cm91dGUscXVlcnlQYXJhbXM6dGhpcy5xdWVyeVBhcmFtcyxmcmFnbWVudDp0aGlzLmZyYWdtZW50LHF1ZXJ5UGFyYW1zSGFuZGxpbmc6dGhpcy5xdWVyeVBhcmFtc0hhbmRsaW5nLHByZXNlcnZlRnJhZ21lbnQ6dGhpcy5wcmVzZXJ2ZUZyYWdtZW50fSl9c3RhdGljIFx1MDI3NWZhYz1mdW5j'@; put 'dGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHplKHZjKSx6ZShwMSksdzUoInRhYmluZGV4IiksemUoTnQpLHplKG5vKSx6ZSh5cCkpfTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsInJvdXRlckxpbmsiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVu'@; put 'Y3Rpb24ocixpKXsxJnImJnd0KCJjbGljayIsZnVuY3Rpb24oYSl7cmV0dXJuIGkub25DbGljayhhLmJ1dHRvbixhLmN0cmxLZXksYS5zaGlmdEtleSxhLmFsdEtleSxhLm1ldGFLZXkpfSksMiZyJiZScigiaHJlZiIsaS5yZWFjdGl2ZUhyZWYoKSxyQikoInRhcmdldCIsaS50YXJnZXQpfSxp'@; put 'bnB1dHM6e3RhcmdldDoidGFyZ2V0IixxdWVyeVBhcmFtczoicXVlcnlQYXJhbXMiLGZyYWdtZW50OiJmcmFnbWVudCIscXVlcnlQYXJhbXNIYW5kbGluZzoicXVlcnlQYXJhbXNIYW5kbGluZyIsc3RhdGU6InN0YXRlIixpbmZvOiJpbmZvIixyZWxhdGl2ZVRvOiJyZWxhdGl2ZVRvIixwcmVz'@; put 'ZXJ2ZUZyYWdtZW50OlsyLCJwcmVzZXJ2ZUZyYWdtZW50IiwicHJlc2VydmVGcmFnbWVudCIsWjBdLHNraXBMb2NhdGlvbkNoYW5nZTpbMiwic2tpcExvY2F0aW9uQ2hhbmdlIiwic2tpcExvY2F0aW9uQ2hhbmdlIixaMF0scmVwbGFjZVVybDpbMiwicmVwbGFjZVVybCIsInJlcGxhY2VVcmwi'@; put 'LFowXSxyb3V0ZXJMaW5rOiJyb3V0ZXJMaW5rIn0sZmVhdHVyZXM6W2l1XX0pfXJldHVybiBufSkoKSxKRT0oKCk9PntjbGFzcyBue3JvdXRlcjtlbGVtZW50O3JlbmRlcmVyO2NkcjtsaW5rO2xpbmtzO2NsYXNzZXM9W107cm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uO2xpbmtJbnB1dENoYW5n'@; put 'ZXNTdWJzY3JpcHRpb247X2lzQWN0aXZlPSExO2dldCBpc0FjdGl2ZSgpe3JldHVybiB0aGlzLl9pc0FjdGl2ZX1yb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucz17ZXhhY3Q6ITF9O2FyaWFDdXJyZW50V2hlbkFjdGl2ZTtpc0FjdGl2ZUNoYW5nZT1uZXcgS3I7Y29uc3RydWN0b3IodCxyLGksbyxh'@; put 'KXt0aGlzLnJvdXRlcj10LHRoaXMuZWxlbWVudD1yLHRoaXMucmVuZGVyZXI9aSx0aGlzLmNkcj1vLHRoaXMubGluaz1hLHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPXQuZXZlbnRzLnN1YnNjcmliZShsPT57bCBpbnN0YW5jZW9mIEI1JiZ0aGlzLnVwZGF0ZSgpfSl9bmdBZnRlckNv'@; put 'bnRlbnRJbml0KCl7UGEodGhpcy5saW5rcy5jaGFuZ2VzLFBhKG51bGwpKS5waXBlKE9FKCkpLnN1YnNjcmliZSh0PT57dGhpcy51cGRhdGUoKSx0aGlzLnN1YnNjcmliZVRvRWFjaExpbmtPbkNoYW5nZXMoKX0pfXN1YnNjcmliZVRvRWFjaExpbmtPbkNoYW5nZXMoKXt0aGlzLmxpbmtJbnB1'@; put 'dENoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7Y29uc3QgdD1bLi4udGhpcy5saW5rcy50b0FycmF5KCksdGhpcy5saW5rXS5maWx0ZXIocj0+ISFyKS5tYXAocj0+ci5vbkNoYW5nZXMpO3RoaXMubGlua0lucHV0Q2hhbmdlc1N1YnNjcmlwdGlvbj1aMSh0KS5waXBlKE9FKCkp'@; put 'LnN1YnNjcmliZShyPT57dGhpcy5faXNBY3RpdmUhPT10aGlzLmlzTGlua0FjdGl2ZSh0aGlzLnJvdXRlcikocikmJnRoaXMudXBkYXRlKCl9KX1zZXQgcm91dGVyTGlua0FjdGl2ZSh0KXtjb25zdCByPUFycmF5LmlzQXJyYXkodCk/dDp0LnNwbGl0KCIgIik7dGhpcy5jbGFzc2VzPXIuZmls'@; put 'dGVyKGk9PiEhaSl9bmdPbkNoYW5nZXModCl7dGhpcy51cGRhdGUoKX1uZ09uRGVzdHJveSgpe3RoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5saW5rSW5wdXRDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfXVwZGF0ZSgpeyF0aGlzLmxp'@; put 'bmtzfHwhdGhpcy5yb3V0ZXIubmF2aWdhdGVkfHxxdWV1ZU1pY3JvdGFzaygoKT0+e2NvbnN0IHQ9dGhpcy5oYXNBY3RpdmVMaW5rcygpO3RoaXMuY2xhc3Nlcy5mb3JFYWNoKHI9Pnt0P3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQscik6dGhpcy5y'@; put 'ZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxyKX0pLHQmJnZvaWQgMCE9PXRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlP3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCJhcmlhLWN1cnJlbnQiLHRoaXMu'@; put 'YXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCkpOnRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCJhcmlhLWN1cnJlbnQiKSx0aGlzLl9pc0FjdGl2ZSE9PXQmJih0aGlzLl9pc0FjdGl2ZT10LHRoaXMuY2RyLm1hcmtGb3JDaGVj'@; put 'aygpLHRoaXMuaXNBY3RpdmVDaGFuZ2UuZW1pdCh0KSl9KX1pc0xpbmtBY3RpdmUodCl7Y29uc3Qgcj1mdW5jdGlvbiBncHQobil7cmV0dXJuISFuLnBhdGhzfSh0aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zKT90aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zOnRoaXMucm91dGVyTGlu'@; put 'a0FjdGl2ZU9wdGlvbnMuZXhhY3R8fCExO3JldHVybiBpPT57Y29uc3Qgbz1pLnVybFRyZWU7cmV0dXJuISFvJiZ0LmlzQWN0aXZlKG8scil9fWhhc0FjdGl2ZUxpbmtzKCl7Y29uc3QgdD10aGlzLmlzTGlua0FjdGl2ZSh0aGlzLnJvdXRlcik7cmV0dXJuIHRoaXMubGluayYmdCh0aGlzLmxp'@; put 'bmspfHx0aGlzLmxpbmtzLnNvbWUodCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHplKHZjKSx6ZShubyksemUoTnQpLHplKFVsKSx6ZShQMiw4KSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwicm91dGVyTGlua0Fj'@; put 'dGl2ZSIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihyLGksbyl7aWYoMSZyJiZGYShvLFAyLDUpLDImcil7bGV0IGE7Y2koYT11aSgpKSYmKGkubGlua3M9YSl9fSxpbnB1dHM6e3JvdXRlckxpbmtBY3RpdmVPcHRpb25zOiJyb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyIsYXJpYUN1cnJl'@; put 'bnRXaGVuQWN0aXZlOiJhcmlhQ3VycmVudFdoZW5BY3RpdmUiLHJvdXRlckxpbmtBY3RpdmU6InJvdXRlckxpbmtBY3RpdmUifSxvdXRwdXRzOntpc0FjdGl2ZUNoYW5nZToiaXNBY3RpdmVDaGFuZ2UifSxleHBvcnRBczpbInJvdXRlckxpbmtBY3RpdmUiXSxmZWF0dXJlczpbaXVdfSl9cmV0'@; put 'dXJuIG59KSgpO2NsYXNzIE9DZXt9bGV0IG1wdD0oKCk9PntjbGFzcyBue3JvdXRlcjtpbmplY3RvcjtwcmVsb2FkaW5nU3RyYXRlZ3k7bG9hZGVyO3N1YnNjcmlwdGlvbjtjb25zdHJ1Y3Rvcih0LHIsaSxvKXt0aGlzLnJvdXRlcj10LHRoaXMuaW5qZWN0b3I9cix0aGlzLnByZWxvYWRpbmdT'@; put 'dHJhdGVneT1pLHRoaXMubG9hZGVyPW99c2V0VXBQcmVsb2FkaW5nKCl7dGhpcy5zdWJzY3JpcHRpb249dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoc3UodD0+dCBpbnN0YW5jZW9mIEI1KSxORSgoKT0+dGhpcy5wcmVsb2FkKCkpKS5zdWJzY3JpYmUoKCk9Pnt9KX1wcmVsb2FkKCl7cmV0dXJu'@; put 'IHRoaXMucHJvY2Vzc1JvdXRlcyh0aGlzLmluamVjdG9yLHRoaXMucm91dGVyLmNvbmZpZyl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1wcm9jZXNzUm91dGVzKHQscil7Y29uc3QgaT1bXTtmb3IoY29uc3QgbyBvZiBy'@; put 'KXtvLnByb3ZpZGVycyYmIW8uX2luamVjdG9yJiYoby5faW5qZWN0b3I9aGooby5wcm92aWRlcnMsdCxgUm91dGU6ICR7by5wYXRofWApKTtjb25zdCBhPW8uX2luamVjdG9yPz90LGw9by5fbG9hZGVkSW5qZWN0b3I/P2E7KG8ubG9hZENoaWxkcmVuJiYhby5fbG9hZGVkUm91dGVzJiZ2b2lk'@; put 'IDA9PT1vLmNhbkxvYWR8fG8ubG9hZENvbXBvbmVudCYmIW8uX2xvYWRlZENvbXBvbmVudCkmJmkucHVzaCh0aGlzLnByZWxvYWRDb25maWcoYSxvKSksKG8uY2hpbGRyZW58fG8uX2xvYWRlZFJvdXRlcykmJmkucHVzaCh0aGlzLnByb2Nlc3NSb3V0ZXMobCxvLmNoaWxkcmVuPz9vLl9sb2Fk'@; put 'ZWRSb3V0ZXMpKX1yZXR1cm4gWjEoaSkucGlwZShPRSgpKX1wcmVsb2FkQ29uZmlnKHQscil7cmV0dXJuIHRoaXMucHJlbG9hZGluZ1N0cmF0ZWd5LnByZWxvYWQociwoKT0+e2xldCBpO2k9ci5sb2FkQ2hpbGRyZW4mJnZvaWQgMD09PXIuY2FuTG9hZD90aGlzLmxvYWRlci5sb2FkQ2hpbGRy'@; put 'ZW4odCxyKTpQYShudWxsKTtjb25zdCBvPWkucGlwZShHMChhPT5udWxsPT09YT9QYSh2b2lkIDApOihyLl9sb2FkZWRSb3V0ZXM9YS5yb3V0ZXMsci5fbG9hZGVkSW5qZWN0b3I9YS5pbmplY3Rvcix0aGlzLnByb2Nlc3NSb3V0ZXMoYS5pbmplY3Rvcj8/dCxhLnJvdXRlcykpKSk7cmV0dXJu'@; put 'IHIubG9hZENvbXBvbmVudCYmIXIuX2xvYWRlZENvbXBvbmVudD9aMShbbyx0aGlzLmxvYWRlci5sb2FkQ29tcG9uZW50KHQscildKS5waXBlKE9FKCkpOm99KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IodmMpLG9yKG5sKSxvcihPQ2UpLG9yKGNp'@; put 'ZSkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2NvbnN0IEJpZT1uZXcgRXIoIiIpO2xldCBOQ2U9KCgpPT57Y2xhc3Mgbnt1cmxTZXJpYWxpemVyO3RyYW5zaXRpb25zO3ZpZXdwb3J0'@; put 'U2Nyb2xsZXI7em9uZTtvcHRpb25zO3JvdXRlckV2ZW50c1N1YnNjcmlwdGlvbjtzY3JvbGxFdmVudHNTdWJzY3JpcHRpb247bGFzdElkPTA7bGFzdFNvdXJjZT1WSTtyZXN0b3JlZElkPTA7c3RvcmU9e307Y29uc3RydWN0b3IodCxyLGksbyxhPXt9KXt0aGlzLnVybFNlcmlhbGl6ZXI9dCx0'@; put 'aGlzLnRyYW5zaXRpb25zPXIsdGhpcy52aWV3cG9ydFNjcm9sbGVyPWksdGhpcy56b25lPW8sdGhpcy5vcHRpb25zPWEsYS5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9ufHw9ImRpc2FibGVkIixhLmFuY2hvclNjcm9sbGluZ3x8PSJkaXNhYmxlZCJ9aW5pdCgpeyJkaXNhYmxlZCIhPT10aGlz'@; put 'Lm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNldEhpc3RvcnlTY3JvbGxSZXN0b3JhdGlvbigibWFudWFsIiksdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb249dGhpcy5jcmVhdGVTY3JvbGxFdmVudHMoKSx0aGlzLnNjcm9sbEV2'@; put 'ZW50c1N1YnNjcmlwdGlvbj10aGlzLmNvbnN1bWVTY3JvbGxFdmVudHMoKX1jcmVhdGVTY3JvbGxFdmVudHMoKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9ucy5ldmVudHMuc3Vic2NyaWJlKHQ9Pnt0IGluc3RhbmNlb2YgVVU/KHRoaXMuc3RvcmVbdGhpcy5sYXN0SWRdPXRoaXMudmlld3BvcnRT'@; put 'Y3JvbGxlci5nZXRTY3JvbGxQb3NpdGlvbigpLHRoaXMubGFzdFNvdXJjZT10Lm5hdmlnYXRpb25UcmlnZ2VyLHRoaXMucmVzdG9yZWRJZD10LnJlc3RvcmVkU3RhdGU/dC5yZXN0b3JlZFN0YXRlLm5hdmlnYXRpb25JZDowKTp0IGluc3RhbmNlb2YgQjU/KHRoaXMubGFzdElkPXQuaWQsdGhp'@; put 'cy5zY2hlZHVsZVNjcm9sbEV2ZW50KHQsdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKHQudXJsQWZ0ZXJSZWRpcmVjdHMpLmZyYWdtZW50KSk6dCBpbnN0YW5jZW9mIFBFJiZ0LmNvZGU9PT16VS5JZ25vcmVkU2FtZVVybE5hdmlnYXRpb24mJih0aGlzLmxhc3RTb3VyY2U9dm9pZCAwLHRoaXMu'@; put 'cmVzdG9yZWRJZD0wLHRoaXMuc2NoZWR1bGVTY3JvbGxFdmVudCh0LHRoaXMudXJsU2VyaWFsaXplci5wYXJzZSh0LnVybCkuZnJhZ21lbnQpKX0pfWNvbnN1bWVTY3JvbGxFdmVudHMoKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9ucy5ldmVudHMuc3Vic2NyaWJlKHQ9PntpZighKHQgaW5zdGFu'@; put 'Y2VvZiBqYmUpKXJldHVybjtjb25zdCByPXtiZWhhdmlvcjoiaW5zdGFudCJ9O3QucG9zaXRpb24/InRvcCI9PT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj90aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSxyKToiZW5hYmxlZCI9PT10'@; put 'aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24odC5wb3NpdGlvbixyKTp0LmFuY2hvciYmImVuYWJsZWQiPT09dGhpcy5vcHRpb25zLmFuY2hvclNjcm9sbGluZz90aGlzLnZpZXdwb3J0U2Nyb2xsZXIu'@; put 'c2Nyb2xsVG9BbmNob3IodC5hbmNob3IpOiJkaXNhYmxlZCIhPT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oWzAsMF0pfSl9c2NoZWR1bGVTY3JvbGxFdmVudCh0LHIpe3ZhciBpPXRoaXM7dGhp'@; put 'cy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKENyKGZ1bmN0aW9uKigpe3lpZWxkIG5ldyBQcm9taXNlKG89PntzZXRUaW1lb3V0KG8pLHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU8InUiJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUobyl9KSxpLnpvbmUucnVuKCgpPT57aS50cmFuc2l0aW9u'@; put 'cy5ldmVudHMubmV4dChuZXcgamJlKHQsInBvcHN0YXRlIj09PWkubGFzdFNvdXJjZT9pLnN0b3JlW2kucmVzdG9yZWRJZF06bnVsbCxyKSl9KX0pKX1uZ09uRGVzdHJveSgpe3RoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpLHRoaXMuc2Nyb2xsRXZlbnRzU3Vi'@; put 'c2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7IWZ1bmN0aW9uIEw1KCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIil9KCl9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KX1yZXR1cm4gbn0pKCk7'@; put 'ZnVuY3Rpb24gVTUobixlKXtyZXR1cm57XHUwMjc1a2luZDpuLFx1MDI3NXByb3ZpZGVyczplfX1mdW5jdGlvbiBQQ2UoKXtjb25zdCBuPXNuKE1sKTtyZXR1cm4gZT0+e2NvbnN0IHQ9bi5nZXQoV2cpO2lmKGUhPT10LmNvbXBvbmVudHNbMF0pcmV0dXJuO2NvbnN0IHI9bi5nZXQodmMpLGk9'@; put 'bi5nZXQoSENlKTsxPT09bi5nZXQoamllKSYmci5pbml0aWFsTmF2aWdhdGlvbigpLG4uZ2V0KFZDZSxudWxsLHtvcHRpb25hbDohMH0pPy5zZXRVcFByZWxvYWRpbmcoKSxuLmdldChCaWUsbnVsbCx7b3B0aW9uYWw6ITB9KT8uaW5pdCgpLHIucmVzZXRSb290Q29tcG9uZW50VHlwZSh0LmNv'@; put 'bXBvbmVudFR5cGVzWzBdKSxpLmNsb3NlZHx8KGkubmV4dCgpLGkuY29tcGxldGUoKSxpLnVuc3Vic2NyaWJlKCkpfX1jb25zdCBIQ2U9bmV3IEVyKCIiLHtmYWN0b3J5OigpPT5uZXcgTXJ9KSxqaWU9bmV3IEVyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4xfSksVkNlPW5l'@; put 'dyBFcigiIik7ZnVuY3Rpb24gYnB0KG4pe3JldHVybiBVNSgwLFt7cHJvdmlkZTpWQ2UsdXNlRXhpc3Rpbmc6bXB0fSx7cHJvdmlkZTpPQ2UsdXNlRXhpc3Rpbmc6bn1dKX1mdW5jdGlvbiBDcHQobil7cmV0dXJuIGoxKCJOZ1JvdXRlclZpZXdUcmFuc2l0aW9ucyIpLFU1KDksW3twcm92aWRl'@; put 'OmR3ZSx1c2VWYWx1ZTpIZHR9LHtwcm92aWRlOmh3ZSx1c2VWYWx1ZTp7c2tpcE5leHRUcmFuc2l0aW9uOiEhbj8uc2tpcEluaXRpYWxUcmFuc2l0aW9uLC4uLm59fV0pfWNvbnN0IFNwdD1bVjAse3Byb3ZpZGU6TkksdXNlQ2xhc3M6RlV9LHZjLEJJLHtwcm92aWRlOnAxLHVzZUZhY3Rvcnk6'@; put 'ZnVuY3Rpb24gRkNlKG4pe3JldHVybiBuLnJvdXRlclN0YXRlLnJvb3R9LGRlcHM6W3ZjXX0sY2llLFtdXTtsZXQgV2Q9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe31zdGF0aWMgZm9yUm9vdCh0LHIpe3JldHVybntuZ01vZHVsZTpuLHByb3ZpZGVyczpbU3B0LFtdLHtwcm92aWRlOlFV'@; put 'LG11bHRpOiEwLHVzZVZhbHVlOnR9LFtdLHI/LmVycm9ySGFuZGxlcj97cHJvdmlkZTpmd2UsdXNlVmFsdWU6ci5lcnJvckhhbmRsZXJ9OltdLHtwcm92aWRlOnpFLHVzZVZhbHVlOnJ8fHt9fSxyPy51c2VIYXNoP3twcm92aWRlOnlwLHVzZUNsYXNzOmlvdH06e3Byb3ZpZGU6eXAsdXNlQ2xh'@; put 'c3M6bFN9LHtwcm92aWRlOkJpZSx1c2VGYWN0b3J5OigpPT57Y29uc3Qgbj1zbihtdHQpLGU9c24oZ2EpLHQ9c24oekUpLHI9c24oZGllKSxpPXNuKE5JKTtyZXR1cm4gdC5zY3JvbGxPZmZzZXQmJm4uc2V0T2Zmc2V0KHQuc2Nyb2xsT2Zmc2V0KSxuZXcgTkNlKGkscixuLGUsdCl9fSxyPy5w'@; put 'cmVsb2FkaW5nU3RyYXRlZ3k/YnB0KHIucHJlbG9hZGluZ1N0cmF0ZWd5KS5cdTAyNzVwcm92aWRlcnM6W10scj8uaW5pdGlhbE5hdmlnYXRpb24/eHB0KHIpOltdLHI/LmJpbmRUb0NvbXBvbmVudElucHV0cz9VNSg4LFskYmUse3Byb3ZpZGU6R1UsdXNlRXhpc3Rpbmc6JGJlfV0pLlx1MDI3'@; put 'NXByb3ZpZGVyczpbXSxyPy5lbmFibGVWaWV3VHJhbnNpdGlvbnM/Q3B0KCkuXHUwMjc1cHJvdmlkZXJzOltdLFt7cHJvdmlkZTpCQ2UsdXNlRmFjdG9yeTpQQ2V9LHtwcm92aWRlOm04ZSxtdWx0aTohMCx1c2VFeGlzdGluZzpCQ2V9XV19fXN0YXRpYyBmb3JDaGlsZCh0KXtyZXR1cm57bmdN'@; put 'b2R1bGU6bixwcm92aWRlcnM6W3twcm92aWRlOlFVLG11bHRpOiEwLHVzZVZhbHVlOnR9XX19c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1bW9kPUdpKHt0eXBlOm59KTtzdGF0aWMgXHUwMjc1aW5qPW1pKHt9KX1yZXR1cm4gbn0p'@; put 'KCk7ZnVuY3Rpb24geHB0KG4pe3JldHVyblsiZGlzYWJsZWQiPT09bi5pbml0aWFsTmF2aWdhdGlvbj9VNSgzLFtwOGUoKCk9Pntzbih2Yykuc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCl9KSx7cHJvdmlkZTpqaWUsdXNlVmFsdWU6Mn1dKS5cdTAyNzVwcm92aWRlcnM6W10sImVuYWJs'@; put 'ZWRCbG9ja2luZyI9PT1uLmluaXRpYWxOYXZpZ2F0aW9uP1U1KDIsW3twcm92aWRlOiRRLHVzZVZhbHVlOiEwfSx7cHJvdmlkZTpqaWUsdXNlVmFsdWU6MH0scDhlKCgpPT57Y29uc3QgZT1zbihNbCk7cmV0dXJuIGUuZ2V0KHhYLFByb21pc2UucmVzb2x2ZSgpKS50aGVuKCgpPT5uZXcgUHJv'@; put 'bWlzZShyPT57Y29uc3QgaT1lLmdldCh2Yyksbz1lLmdldChIQ2UpO2d3ZShpLCgpPT57cighMCl9KSxlLmdldChkaWUpLmFmdGVyUHJlYWN0aXZhdGlvbj0oKT0+KHIoITApLG8uY2xvc2VkP1BhKHZvaWQgMCk6byksaS5pbml0aWFsTmF2aWdhdGlvbigpfSkpfSldKS5cdTAyNzVwcm92aWRl'@; put 'cnM6W11dfWNvbnN0IEJDZT1uZXcgRXIoIiIpO2xldCBqQ2U9KCgpPT57Y2xhc3MgbntfcmVuZGVyZXI7X2VsZW1lbnRSZWY7b25DaGFuZ2U9dD0+e307b25Ub3VjaGVkPSgpPT57fTtjb25zdHJ1Y3Rvcih0LHIpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1yfXNldFByb3Bl'@; put 'cnR5KHQscil7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQscil9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9dH1zZXREaXNhYmxlZFN0YXRlKHQp'@; put 'e3RoaXMuc2V0UHJvcGVydHkoImRpc2FibGVkIix0KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikoemUoTnQpLHplKG5vKSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bn0pfXJldHVybiBufSkoKSxSYj0oKCk9PntjbGFzcyBuIGV4dGVuZHMgakNl'@; put 'e3N0YXRpYyBcdTAyNzVmYWM9KCgpPT57bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybih0fHwodD13YShuKSkpKGl8fG4pfX0pKCk7c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLGZlYXR1cmVzOltGb119KX1yZXR1cm4gbn0pKCk7Y29uc3QgejU9bmV3IEVyKCIiKSxScHQ9e3By'@; put 'b3ZpZGU6ejUsdXNlRXhpc3Rpbmc6VW8oKCk9PkgyKSxtdWx0aTohMH07bGV0IEgyPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBSYnt3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoImNoZWNrZWQiLHQpfXN0YXRpYyBcdTAyNzVmYWM9KCgpPT57bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKGkp'@; put 'e3JldHVybih0fHwodD13YShuKSkpKGl8fG4pfX0pKCk7c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbCIsIiJd'@; put 'LFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezEmciYmd3QoImNoYW5nZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGkub25DaGFuZ2UoYS50YXJnZXQuY2hlY2tlZCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gaS5v'@; put 'blRvdWNoZWQoKX0pfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbUnB0XSksRm9dfSl9cmV0dXJuIG59KSgpO2NvbnN0IElwdD17cHJvdmlkZTp6NSx1c2VFeGlzdGluZzpVbygoKT0+bHUpLG11bHRpOiEwfSxMcHQ9bmV3IEVyKCIiKTtsZXQgbHU9KCgpPT57Y2xhc3MgbiBleHRlbmRz'@; put 'IGpDZXtfY29tcG9zaXRpb25Nb2RlO19jb21wb3Npbmc9ITE7Y29uc3RydWN0b3IodCxyLGkpe3N1cGVyKHQsciksdGhpcy5fY29tcG9zaXRpb25Nb2RlPWksbnVsbD09dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2RlPSFmdW5jdGlvbiBEcHQoKXtjb25zdCBu'@; put 'PWw1KCk/bDUoKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVzdChuLnRvTG93ZXJDYXNlKCkpfSgpKX13cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIix0Pz8iIil9X2hhbmRsZUlucHV0KHQpeyghdGhpcy5fY29tcG9zaXRpb25Nb2RlfHx0'@; put 'aGlzLl9jb21wb3NpdGlvbk1vZGUmJiF0aGlzLl9jb21wb3NpbmcpJiZ0aGlzLm9uQ2hhbmdlKHQpfV9jb21wb3NpdGlvblN0YXJ0KCl7dGhpcy5fY29tcG9zaW5nPSEwfV9jb21wb3NpdGlvbkVuZCh0KXt0aGlzLl9jb21wb3Npbmc9ITEsdGhpcy5fY29tcG9zaXRpb25Nb2RlJiZ0aGlzLm9u'@; put 'Q2hhbmdlKHQpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShOdCksemUobm8pLHplKExwdCw4KSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siaW5wdXQiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVj'@; put 'a2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRl'@; put 'eHRhcmVhIiwibmdNb2RlbCIsIiJdLFsiIiwibmdEZWZhdWx0Q29udHJvbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24ocixpKXsxJnImJnd0KCJpbnB1dCIsZnVuY3Rpb24oYSl7cmV0dXJuIGkuX2hhbmRsZUlucHV0KGEudGFyZ2V0LnZhbHVlKX0pKCJibHVyIixmdW5jdGlvbigpe3Jl'@; put 'dHVybiBpLm9uVG91Y2hlZCgpfSkoImNvbXBvc2l0aW9uc3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIGkuX2NvbXBvc2l0aW9uU3RhcnQoKX0pKCJjb21wb3NpdGlvbmVuZCIsZnVuY3Rpb24oYSl7cmV0dXJuIGkuX2NvbXBvc2l0aW9uRW5kKGEudGFyZ2V0LnZhbHVlKX0pfSxzdGFuZGFsb25l'@; put 'OiExLGZlYXR1cmVzOltibyhbSXB0XSksRm9dfSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIHppZShuKXtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobil8fCJzdHJpbmciPT10eXBlb2Ygbj9uLmxlbmd0aDpuIGluc3RhbmNlb2YgU2V0P24uc2l6ZTpudWxsfWNvbnN0IEcxPW5l'@; put 'dyBFcigiIiksbXY9bmV3IEVyKCIiKTtmdW5jdGlvbiBXQ2Uobil7cmV0dXJuIGZ1bmN0aW9uIFVpZShuKXtyZXR1cm4gbnVsbD09bnx8MD09PXppZShuKX0obi52YWx1ZSk/e3JlcXVpcmVkOiEwfTpudWxsfWZ1bmN0aW9uIFlDZShuKXtyZXR1cm4hMD09PW4udmFsdWU/bnVsbDp7cmVxdWly'@; put 'ZWQ6ITB9fWZ1bmN0aW9uIGh6KG4pe3JldHVybiBudWxsfWZ1bmN0aW9uIEtDZShuKXtyZXR1cm4gbnVsbCE9bn1mdW5jdGlvbiBYQ2Uobil7cmV0dXJuIFpSKG4pP1oxKG4pOm59ZnVuY3Rpb24gUUNlKG4pe2xldCBlPXt9O3JldHVybiBuLmZvckVhY2godD0+e2U9bnVsbCE9dD97Li4uZSwu'@; put 'Li50fTplfSksMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gSkNlKG4sZSl7cmV0dXJuIGUubWFwKHQ9PnQobikpfWZ1bmN0aW9uIGVTZShuKXtyZXR1cm4gbi5tYXAoZT0+ZnVuY3Rpb24gTnB0KG4pe3JldHVybiFuLnZhbGlkYXRlfShlKT9lOnQ9PmUudmFsaWRh'@; put 'dGUodCkpfWZ1bmN0aW9uIFdpZShuKXtyZXR1cm4gbnVsbCE9bj9mdW5jdGlvbiB0U2Uobil7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3QgZT1uLmZpbHRlcihLQ2UpO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3JldHVybiBRQ2UoSkNlKHQsZSkpfX0oZVNlKG4pKTpudWxs'@; put 'fWZ1bmN0aW9uIFlpZShuKXtyZXR1cm4gbnVsbCE9bj9mdW5jdGlvbiBuU2Uobil7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3QgZT1uLmZpbHRlcihLQ2UpO3JldHVybiAwPT1lLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBrcHQoLi4ubil7Y29uc3QgZT1zYmUobiks'@; put 'e2FyZ3M6dCxrZXlzOnJ9PWxiZShuKSxpPW5ldyBobyhvPT57Y29uc3R7bGVuZ3RoOmF9PXQ7aWYoIWEpcmV0dXJuIHZvaWQgby5jb21wbGV0ZSgpO2NvbnN0IGw9bmV3IEFycmF5KGEpO2xldCB1PWEsZz1hO2ZvcihsZXQgRT0wO0U8YTtFKyspe2xldCBPPSExO04yKHRbRV0pLnN1YnNjcmli'@; put 'ZSh2dShvLFo9PntPfHwoTz0hMCxnLS0pLGxbRV09Wn0sKCk9PnUtLSx2b2lkIDAsKCk9PnsoIXV8fCFPKSYmKGd8fG8ubmV4dChyP2NiZShyLGwpOmwpLG8uY29tcGxldGUoKSl9KSl9fSk7cmV0dXJuIGU/aS5waXBlKFZyZShlKSk6aX0oSkNlKHQsZSkubWFwKFhDZSkpLnBpcGUoRXMoUUNl'@; put 'KSl9fShlU2UobikpOm51bGx9ZnVuY3Rpb24gclNlKG4sZSl7cmV0dXJuIG51bGw9PT1uP1tlXTpBcnJheS5pc0FycmF5KG4pP1suLi5uLGVdOltuLGVdfWZ1bmN0aW9uIFppZShuKXtyZXR1cm4gbj9BcnJheS5pc0FycmF5KG4pP246W25dOltdfWZ1bmN0aW9uIGZ6KG4sZSl7cmV0dXJuIEFy'@; put 'cmF5LmlzQXJyYXkobik/bi5pbmNsdWRlcyhlKTpuPT09ZX1mdW5jdGlvbiBhU2UobixlKXtjb25zdCB0PVppZShlKTtyZXR1cm4gWmllKG4pLmZvckVhY2goaT0+e2Z6KHQsaSl8fHQucHVzaChpKX0pLHR9ZnVuY3Rpb24gc1NlKG4sZSl7cmV0dXJuIFppZShlKS5maWx0ZXIodD0+IWZ6KG4s'@; put 'dCkpfWNsYXNzIGxTZXtnZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZTpudWxsfWdldCB2YWxpZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9Z2V0IGludmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMu'@; put 'Y29udHJvbC5pbnZhbGlkOm51bGx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlzYWJsZWQ6bnVsbH1nZXQgZW5hYmxlZCgpe3JldHVybiB0'@; put 'aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH1nZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9Z2V0IHByaXN0aW5lKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucHJpc3RpbmU6bnVsbH1nZXQgZGly'@; put 'dHkoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfWdldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXM6bnVs'@; put 'bH1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzOm51bGx9Z2V0IHZhbHVlQ2hhbmdlcygpe3JldHVybiB0'@; put 'aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9X2NvbXBvc2VkVmFsaWRhdG9yRm47X2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbjtfcmF3VmFsaWRhdG9ycz1bXTtfcmF3QXN5bmNWYWxpZGF0b3JzPVtdO19zZXRWYWxpZGF0'@; put 'b3JzKGUpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9ZXx8W10sdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1XaWUodGhpcy5fcmF3VmFsaWRhdG9ycyl9X3NldEFzeW5jVmFsaWRhdG9ycyhlKXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9ZXx8W10sdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRv'@; put 'ckZuPVlpZSh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbnx8bnVsbH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufHxudWxsfV9vbkRlc3Ryb3lD'@; put 'YWxsYmFja3M9W107X3JlZ2lzdGVyT25EZXN0cm95KGUpe3RoaXMuX29uRGVzdHJveUNhbGxiYWNrcy5wdXNoKGUpfV9pbnZva2VPbkRlc3Ryb3lDYWxsYmFja3MoKXt0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3MuZm9yRWFjaChlPT5lKCkpLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1y'@; put 'ZXNldChlPXZvaWQgMCl7dGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wucmVzZXQoZSl9aGFzRXJyb3IoZSx0KXtyZXR1cm4hIXRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLmhhc0Vycm9yKGUsdCl9Z2V0RXJyb3IoZSx0KXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5nZXRF'@; put 'cnJvcihlLHQpOm51bGx9fWNsYXNzIERmIGV4dGVuZHMgbFNle25hbWU7Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gbnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfX1jbGFzcyBWMiBleHRlbmRzIGxTZXtfcGFyZW50PW51bGw7bmFtZT1udWxsO3ZhbHVlQWNjZXNzb3I9bnVsbH1jbGFz'@; put 'cyBjU2V7X2NkO2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NkPWV9Z2V0IGlzVG91Y2hlZCgpe3JldHVybiB0aGlzLl9jZD8uY29udHJvbD8uX3RvdWNoZWQ/LigpLCEhdGhpcy5fY2Q/LmNvbnRyb2w/LnRvdWNoZWR9Z2V0IGlzVW50b3VjaGVkKCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8u'@; put 'dW50b3VjaGVkfWdldCBpc1ByaXN0aW5lKCl7cmV0dXJuIHRoaXMuX2NkPy5jb250cm9sPy5fcHJpc3RpbmU/LigpLCEhdGhpcy5fY2Q/LmNvbnRyb2w/LnByaXN0aW5lfWdldCBpc0RpcnR5KCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8uZGlydHl9Z2V0IGlzVmFsaWQoKXtyZXR1cm4g'@; put 'dGhpcy5fY2Q/LmNvbnRyb2w/Ll9zdGF0dXM/LigpLCEhdGhpcy5fY2Q/LmNvbnRyb2w/LnZhbGlkfWdldCBpc0ludmFsaWQoKXtyZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy5pbnZhbGlkfWdldCBpc1BlbmRpbmcoKXtyZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy5wZW5kaW5nfWdldCBp'@; put 'c1N1Ym1pdHRlZCgpe3JldHVybiB0aGlzLl9jZD8uX3N1Ym1pdHRlZD8uKCksISF0aGlzLl9jZD8uc3VibWl0dGVkfX1sZXQgb2M9KCgpPT57Y2xhc3MgbiBleHRlbmRzIGNTZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXco'@; put 'cnx8bikoemUoVjIsMikpfTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibmdNb2RlbCIsIiJdLFsiIiwiZm9ybUNvbnRyb2wiLCIiXV0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHIsaSl7MiZy'@; put 'JiZ3cigibmctdW50b3VjaGVkIixpLmlzVW50b3VjaGVkKSgibmctdG91Y2hlZCIsaS5pc1RvdWNoZWQpKCJuZy1wcmlzdGluZSIsaS5pc1ByaXN0aW5lKSgibmctZGlydHkiLGkuaXNEaXJ0eSkoIm5nLXZhbGlkIixpLmlzVmFsaWQpKCJuZy1pbnZhbGlkIixpLmlzSW52YWxpZCkoIm5nLXBl'@; put 'bmRpbmciLGkuaXNQZW5kaW5nKX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9dfSl9cmV0dXJuIG59KSgpLEliPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBjU2V7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHpl'@; put 'KERmLDEwKSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiZm9ybUdyb3VwTmFtZSIsIiJdLFsiIiwiZm9ybUFycmF5TmFtZSIsIiJdLFsiIiwibmdNb2RlbEdyb3VwIiwiIl0sWyIiLCJmb3JtR3JvdXAiLCIiXSxbImZvcm0iLDMsIm5nTm9Gb3JtIiwiIl0s'@; put 'WyIiLCJuZ0Zvcm0iLCIiXV0saG9zdFZhcnM6MTYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHIsaSl7MiZyJiZ3cigibmctdW50b3VjaGVkIixpLmlzVW50b3VjaGVkKSgibmctdG91Y2hlZCIsaS5pc1RvdWNoZWQpKCJuZy1wcmlzdGluZSIsaS5pc1ByaXN0aW5lKSgibmctZGlydHkiLGkuaXNE'@; put 'aXJ0eSkoIm5nLXZhbGlkIixpLmlzVmFsaWQpKCJuZy1pbnZhbGlkIixpLmlzSW52YWxpZCkoIm5nLXBlbmRpbmciLGkuaXNQZW5kaW5nKSgibmctc3VibWl0dGVkIixpLmlzU3VibWl0dGVkKX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9dfSl9cmV0dXJuIG59KSgpO2NvbnN0IHREPSJW'@; put 'QUxJRCIsZ3o9IklOVkFMSUQiLGVNPSJQRU5ESU5HIixuRD0iRElTQUJMRUQiO2NsYXNzIHRNe31jbGFzcyBkU2UgZXh0ZW5kcyB0TXt2YWx1ZTtzb3VyY2U7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMudmFsdWU9ZSx0aGlzLnNvdXJjZT10fX1jbGFzcyBxaWUgZXh0ZW5kcyB0TXtw'@; put 'cmlzdGluZTtzb3VyY2U7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMucHJpc3RpbmU9ZSx0aGlzLnNvdXJjZT10fX1jbGFzcyBLaWUgZXh0ZW5kcyB0TXt0b3VjaGVkO3NvdXJjZTtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy50b3VjaGVkPWUsdGhpcy5zb3VyY2U9dH19Y2xh'@; put 'c3MgbXogZXh0ZW5kcyB0TXtzdGF0dXM7c291cmNlO2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLnN0YXR1cz1lLHRoaXMuc291cmNlPXR9fWNsYXNzIGhTZSBleHRlbmRzIHRNe3NvdXJjZTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuc291cmNlPWV9fWNsYXNzIFhpZSBleHRl'@; put 'bmRzIHRNe3NvdXJjZTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuc291cmNlPWV9fWZ1bmN0aW9uIFFpZShuKXtyZXR1cm4odnoobik/bi52YWxpZGF0b3JzOm4pfHxudWxsfWZ1bmN0aW9uIEppZShuLGUpe3JldHVybih2eihlKT9lLmFzeW5jVmFsaWRhdG9yczpuKXx8bnVsbH1mdW5j'@; put 'dGlvbiB2eihuKXtyZXR1cm4gbnVsbCE9biYmIUFycmF5LmlzQXJyYXkobikmJiJvYmplY3QiPT10eXBlb2Ygbn1jbGFzcyBlb2V7X3BlbmRpbmdEaXJ0eT0hMTtfaGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPW51bGw7X3BlbmRpbmdUb3VjaGVkPSExO19vbkNvbGxlY3Rpb25DaGFuZ2U9'@; put 'KCk9Pnt9O191cGRhdGVPbjtfcGFyZW50PW51bGw7X2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbjtfY29tcG9zZWRWYWxpZGF0b3JGbjtfY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuO19yYXdWYWxpZGF0b3JzO19yYXdBc3luY1ZhbGlkYXRvcnM7dmFsdWU7Y29uc3RydWN0b3IoZSx0KXt0'@; put 'aGlzLl9hc3NpZ25WYWxpZGF0b3JzKGUpLHRoaXMuX2Fzc2lnbkFzeW5jVmFsaWRhdG9ycyh0KX1nZXQgdmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm59c2V0IHZhbGlkYXRvcihlKXt0aGlzLl9yYXdWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkVmFsaWRhdG9y'@; put 'Rm49ZX1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufXNldCBhc3luY1ZhbGlkYXRvcihlKXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9dGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPWV9Z2V0IHBhcmVudCgpe3JldHVybiB0'@; put 'aGlzLl9wYXJlbnR9Z2V0IHN0YXR1cygpe3JldHVybiBOdSh0aGlzLnN0YXR1c1JlYWN0aXZlKX1zZXQgc3RhdHVzKGUpe051KCgpPT50aGlzLnN0YXR1c1JlYWN0aXZlLnNldChlKSl9X3N0YXR1cz1uNCgoKT0+dGhpcy5zdGF0dXNSZWFjdGl2ZSgpKTtzdGF0dXNSZWFjdGl2ZT1CMSh2b2lk'@; put 'IDApO2dldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PXREfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09Z3p9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PWVNfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PW5EfWdldCBlbmFibGVk'@; put 'KCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09bkR9ZXJyb3JzO2dldCBwcmlzdGluZSgpe3JldHVybiBOdSh0aGlzLnByaXN0aW5lUmVhY3RpdmUpfXNldCBwcmlzdGluZShlKXtOdSgoKT0+dGhpcy5wcmlzdGluZVJlYWN0aXZlLnNldChlKSl9X3ByaXN0aW5lPW40KCgpPT50aGlzLnByaXN0aW5l'@; put 'UmVhY3RpdmUoKSk7cHJpc3RpbmVSZWFjdGl2ZT1CMSghMCk7Z2V0IGRpcnR5KCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHRvdWNoZWQoKXtyZXR1cm4gTnUodGhpcy50b3VjaGVkUmVhY3RpdmUpfXNldCB0b3VjaGVkKGUpe051KCgpPT50aGlzLnRvdWNoZWRSZWFjdGl2ZS5zZXQoZSkp'@; put 'fV90b3VjaGVkPW40KCgpPT50aGlzLnRvdWNoZWRSZWFjdGl2ZSgpKTt0b3VjaGVkUmVhY3RpdmU9QjEoITEpO2dldCB1bnRvdWNoZWQoKXtyZXR1cm4hdGhpcy50b3VjaGVkfV9ldmVudHM9bmV3IE1yO2V2ZW50cz10aGlzLl9ldmVudHMuYXNPYnNlcnZhYmxlKCk7dmFsdWVDaGFuZ2VzO3N0'@; put 'YXR1c0NoYW5nZXM7Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnMoZSl7dGhpcy5fYXNzaWduVmFsaWRhdG9ycyhlKX1zZXRBc3luY1ZhbGlkYXRv'@; put 'cnMoZSl7dGhpcy5fYXNzaWduQXN5bmNWYWxpZGF0b3JzKGUpfWFkZFZhbGlkYXRvcnMoZSl7dGhpcy5zZXRWYWxpZGF0b3JzKGFTZShlLHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnMoZSl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoYVNlKGUsdGhpcy5fcmF3QXN5'@; put 'bmNWYWxpZGF0b3JzKSl9cmVtb3ZlVmFsaWRhdG9ycyhlKXt0aGlzLnNldFZhbGlkYXRvcnMoc1NlKGUsdGhpcy5fcmF3VmFsaWRhdG9ycykpfXJlbW92ZUFzeW5jVmFsaWRhdG9ycyhlKXt0aGlzLnNldEFzeW5jVmFsaWRhdG9ycyhzU2UoZSx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1o'@; put 'YXNWYWxpZGF0b3IoZSl7cmV0dXJuIGZ6KHRoaXMuX3Jhd1ZhbGlkYXRvcnMsZSl9aGFzQXN5bmNWYWxpZGF0b3IoZSl7cmV0dXJuIGZ6KHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyxlKX1jbGVhclZhbGlkYXRvcnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3Jz'@; put 'KCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQoZT17fSl7Y29uc3QgdD0hMT09PXRoaXMudG91Y2hlZDt0aGlzLnRvdWNoZWQ9ITA7Y29uc3Qgcj1lLnNvdXJjZUNvbnRyb2w/P3RoaXM7dGhpcy5fcGFyZW50JiYhZS5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtB'@; put 'c1RvdWNoZWQoey4uLmUsc291cmNlQ29udHJvbDpyfSksdCYmITEhPT1lLmVtaXRFdmVudCYmdGhpcy5fZXZlbnRzLm5leHQobmV3IEtpZSghMCxyKSl9bWFya0FsbEFzRGlydHkoZT17fSl7dGhpcy5tYXJrQXNEaXJ0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50LHNvdXJj'@; put 'ZUNvbnRyb2w6dGhpc30pLHRoaXMuX2ZvckVhY2hDaGlsZCh0PT50Lm1hcmtBbGxBc0RpcnR5KGUpKX1tYXJrQWxsQXNUb3VjaGVkKGU9e30pe3RoaXMubWFya0FzVG91Y2hlZCh7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50LHNvdXJjZUNvbnRyb2w6dGhpc30pLHRoaXMuX2Zv'@; put 'ckVhY2hDaGlsZCh0PT50Lm1hcmtBbGxBc1RvdWNoZWQoZSkpfW1hcmtBc1VudG91Y2hlZChlPXt9KXtjb25zdCB0PSEwPT09dGhpcy50b3VjaGVkO3RoaXMudG91Y2hlZD0hMSx0aGlzLl9wZW5kaW5nVG91Y2hlZD0hMTtjb25zdCByPWUuc291cmNlQ29udHJvbD8/dGhpczt0aGlzLl9mb3JF'@; put 'YWNoQ2hpbGQoaT0+e2kubWFya0FzVW50b3VjaGVkKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnQsc291cmNlQ29udHJvbDpyfSl9KSx0aGlzLl9wYXJlbnQmJiFlLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoZSxyKSx0JiYhMSE9PWUuZW1pdEV2ZW50'@; put 'JiZ0aGlzLl9ldmVudHMubmV4dChuZXcgS2llKCExLHIpKX1tYXJrQXNEaXJ0eShlPXt9KXtjb25zdCB0PSEwPT09dGhpcy5wcmlzdGluZTt0aGlzLnByaXN0aW5lPSExO2NvbnN0IHI9ZS5zb3VyY2VDb250cm9sPz90aGlzO3RoaXMuX3BhcmVudCYmIWUub25seVNlbGYmJnRoaXMuX3BhcmVu'@; put 'dC5tYXJrQXNEaXJ0eSh7Li4uZSxzb3VyY2VDb250cm9sOnJ9KSx0JiYhMSE9PWUuZW1pdEV2ZW50JiZ0aGlzLl9ldmVudHMubmV4dChuZXcgcWllKCExLHIpKX1tYXJrQXNQcmlzdGluZShlPXt9KXtjb25zdCB0PSExPT09dGhpcy5wcmlzdGluZTt0aGlzLnByaXN0aW5lPSEwLHRoaXMuX3Bl'@; put 'bmRpbmdEaXJ0eT0hMTtjb25zdCByPWUuc291cmNlQ29udHJvbD8/dGhpczt0aGlzLl9mb3JFYWNoQ2hpbGQoaT0+e2kubWFya0FzUHJpc3RpbmUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy5fcGFyZW50JiYhZS5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91'@; put 'cGRhdGVQcmlzdGluZShlLHIpLHQmJiExIT09ZS5lbWl0RXZlbnQmJnRoaXMuX2V2ZW50cy5uZXh0KG5ldyBxaWUoITAscikpfW1hcmtBc1BlbmRpbmcoZT17fSl7dGhpcy5zdGF0dXM9ZU07Y29uc3QgdD1lLnNvdXJjZUNvbnRyb2w/P3RoaXM7ITEhPT1lLmVtaXRFdmVudCYmKHRoaXMuX2V2'@; put 'ZW50cy5uZXh0KG5ldyBteih0aGlzLnN0YXR1cyx0KSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiFlLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh7Li4uZSxzb3VyY2VDb250cm9sOnR9KX1kaXNhYmxlKGU9e30pe2Nv'@; put 'bnN0IHQ9dGhpcy5fcGFyZW50TWFya2VkRGlydHkoZS5vbmx5U2VsZik7dGhpcy5zdGF0dXM9bkQsdGhpcy5lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hpbGQoaT0+e2kuZGlzYWJsZSh7Li4uZSxvbmx5U2VsZjohMH0pfSksdGhpcy5fdXBkYXRlVmFsdWUoKTtjb25zdCByPWUuc291cmNl'@; put 'Q29udHJvbD8/dGhpczshMSE9PWUuZW1pdEV2ZW50JiYodGhpcy5fZXZlbnRzLm5leHQobmV3IGRTZSh0aGlzLnZhbHVlLHIpKSx0aGlzLl9ldmVudHMubmV4dChuZXcgbXoodGhpcy5zdGF0dXMscikpLHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFu'@; put 'Z2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoey4uLmUsc2tpcFByaXN0aW5lQ2hlY2s6dH0sdGhpcyksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKGk9PmkoITApKX1lbmFibGUoZT17fSl7Y29uc3QgdD10aGlzLl9wYXJlbnRNYXJrZWREaXJ0eShl'@; put 'Lm9ubHlTZWxmKTt0aGlzLnN0YXR1cz10RCx0aGlzLl9mb3JFYWNoQ2hpbGQocj0+e3IuZW5hYmxlKHsuLi5lLG9ubHlTZWxmOiEwfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9y'@; put 'cyh7Li4uZSxza2lwUHJpc3RpbmVDaGVjazp0fSx0aGlzKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2gocj0+cighMSkpfV91cGRhdGVBbmNlc3RvcnMoZSx0KXt0aGlzLl9wYXJlbnQmJiFlLm9ubHlTZWxmJiYodGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSks'@; put 'ZS5za2lwUHJpc3RpbmVDaGVja3x8dGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh7fSx0KSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoe30sdCkpfXNldFBhcmVudChlKXt0aGlzLl9wYXJlbnQ9ZX1nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXVwZGF0ZVZhbHVlQW5k'@; put 'VmFsaWRpdHkoZT17fSl7aWYodGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkKXtjb25zdCByPXRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCk7dGhpcy5lcnJvcnM9dGhpcy5fcnVuVmFsaWRhdG9yKCksdGhpcy5zdGF0dXM9'@; put 'dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksKHRoaXMuc3RhdHVzPT09dER8fHRoaXMuc3RhdHVzPT09ZU0pJiZ0aGlzLl9ydW5Bc3luY1ZhbGlkYXRvcihyLGUuZW1pdEV2ZW50KX1jb25zdCB0PWUuc291cmNlQ29udHJvbD8/dGhpczshMSE9PWUuZW1pdEV2ZW50JiYodGhpcy5fZXZlbnRzLm5l'@; put 'eHQobmV3IGRTZSh0aGlzLnZhbHVlLHQpKSx0aGlzLl9ldmVudHMubmV4dChuZXcgbXoodGhpcy5zdGF0dXMsdCkpLHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiFlLm9ubHlTZWxm'@; put 'JiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4uZSxzb3VyY2VDb250cm9sOnR9KX1fdXBkYXRlVHJlZVZhbGlkaXR5KGU9e2VtaXRFdmVudDohMH0pe3RoaXMuX2ZvckVhY2hDaGlsZCh0PT50Ll91cGRhdGVUcmVlVmFsaWRpdHkoZSkpLHRoaXMudXBkYXRlVmFsdWVB'@; put 'bmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMoKXt0aGlzLnN0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/bkQ6dER9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRv'@; put 'cih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcihlLHQpe2lmKHRoaXMuYXN5bmNWYWxpZGF0b3Ipe3RoaXMuc3RhdHVzPWVNLHRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj17ZW1pdEV2ZW50OiExIT09dCxzaG91bGRIYXZlRW1pdHRlZDohMSE9PWV9O2NvbnN0IHI9WENl'@; put 'KHRoaXMuYXN5bmNWYWxpZGF0b3IodGhpcykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbj1yLnN1YnNjcmliZShpPT57dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPW51bGwsdGhpcy5zZXRFcnJvcnMoaSx7ZW1pdEV2ZW50OnQsc2hvdWxkSGF2ZUVtaXR0ZWQ6'@; put 'ZX0pfSl9fV9jYW5jZWxFeGlzdGluZ1N1YnNjcmlwdGlvbigpe2lmKHRoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbil7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7Y29uc3QgZT0odGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9y'@; put 'Py5lbWl0RXZlbnR8fHRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj8uc2hvdWxkSGF2ZUVtaXR0ZWQpPz8hMTtyZXR1cm4gdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPW51bGwsZX1yZXR1cm4hMX1zZXRFcnJvcnMoZSx0PXt9KXt0aGlzLmVycm9ycz1lLHRoaXMu'@; put 'X3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09dC5lbWl0RXZlbnQsdGhpcyx0LnNob3VsZEhhdmVFbWl0dGVkKX1nZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gbnVsbD09dHx8KEFycmF5LmlzQXJyYXkodCl8fCh0PXQuc3BsaXQoIi4iKSksMD09PXQubGVuZ3RoKT9udWxsOnQucmVkdWNlKChyLGkp'@; put 'PT5yJiZyLl9maW5kKGkpLHRoaXMpfWdldEVycm9yKGUsdCl7Y29uc3Qgcj10P3RoaXMuZ2V0KHQpOnRoaXM7cmV0dXJuIHImJnIuZXJyb3JzP3IuZXJyb3JzW2VdOm51bGx9aGFzRXJyb3IoZSx0KXtyZXR1cm4hIXRoaXMuZ2V0RXJyb3IoZSx0KX1nZXQgcm9vdCgpe2xldCBlPXRoaXM7Zm9y'@; put 'KDtlLl9wYXJlbnQ7KWU9ZS5fcGFyZW50O3JldHVybiBlfV91cGRhdGVDb250cm9sc0Vycm9ycyhlLHQscil7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksZSYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLChlfHxyKSYmdGhpcy5fZXZlbnRzLm5leHQo'@; put 'bmV3IG16KHRoaXMuc3RhdHVzLHQpKSx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnMoZSx0LHIpfV9pbml0T2JzZXJ2YWJsZXMoKXt0aGlzLnZhbHVlQ2hhbmdlcz1uZXcgS3IsdGhpcy5zdGF0dXNDaGFuZ2VzPW5ldyBLcn1fY2FsY3VsYXRlU3RhdHVz'@; put 'KCl7cmV0dXJuIHRoaXMuX2FsbENvbnRyb2xzRGlzYWJsZWQoKT9uRDp0aGlzLmVycm9ycz9nejp0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3J8fHRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhlTSk/ZU06dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKGd6KT9nejp0RH1f'@; put 'YW55Q29udHJvbHNIYXZlU3RhdHVzKGUpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyh0PT50LnN0YXR1cz09PWUpfV9hbnlDb250cm9sc0RpcnR5KCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGU9PmUuZGlydHkpfV9hbnlDb250cm9sc1RvdWNoZWQoKXtyZXR1cm4gdGhpcy5fYW55Q29u'@; put 'dHJvbHMoZT0+ZS50b3VjaGVkKX1fdXBkYXRlUHJpc3RpbmUoZSx0KXtjb25zdCByPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5KCksaT10aGlzLnByaXN0aW5lIT09cjt0aGlzLnByaXN0aW5lPXIsdGhpcy5fcGFyZW50JiYhZS5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGlu'@; put 'ZShlLHQpLGkmJnRoaXMuX2V2ZW50cy5uZXh0KG5ldyBxaWUodGhpcy5wcmlzdGluZSx0KSl9X3VwZGF0ZVRvdWNoZWQoZT17fSx0KXt0aGlzLnRvdWNoZWQ9dGhpcy5fYW55Q29udHJvbHNUb3VjaGVkKCksdGhpcy5fZXZlbnRzLm5leHQobmV3IEtpZSh0aGlzLnRvdWNoZWQsdCkpLHRoaXMu'@; put 'X3BhcmVudCYmIWUub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZChlLHQpfV9vbkRpc2FibGVkQ2hhbmdlPVtdO19yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShlKXt0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9ZX1fc2V0VXBkYXRlU3RyYXRlZ3koZSl7dnooZSkmJm51'@; put 'bGwhPWUudXBkYXRlT24mJih0aGlzLl91cGRhdGVPbj1lLnVwZGF0ZU9uKX1fcGFyZW50TWFya2VkRGlydHkoZSl7cmV0dXJuIWUmJiEoIXRoaXMuX3BhcmVudHx8IXRoaXMuX3BhcmVudC5kaXJ0eSkmJiF0aGlzLl9wYXJlbnQuX2FueUNvbnRyb2xzRGlydHkoKX1fZmluZChlKXtyZXR1cm4g'@; put 'bnVsbH1fYXNzaWduVmFsaWRhdG9ycyhlKXt0aGlzLl9yYXdWYWxpZGF0b3JzPUFycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOmUsdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1mdW5jdGlvbiBVcHQobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/V2llKG4pOm58fG51bGx9KHRoaXMuX3Jh'@; put 'd1ZhbGlkYXRvcnMpfV9hc3NpZ25Bc3luY1ZhbGlkYXRvcnMoZSl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPUFycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOmUsdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPWZ1bmN0aW9uIHpwdChuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9Z'@; put 'aWUobik6bnx8bnVsbH0odGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX19Y2xhc3MgX3ogZXh0ZW5kcyBlb2V7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKFFpZSh0KSxKaWUocix0KSksdGhpcy5jb250cm9scz1lLHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMuX3NldFVwZGF0ZVN0cmF0'@; put 'ZWd5KHQpLHRoaXMuX3NldFVwQ29udHJvbHMoKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohIXRoaXMuYXN5bmNWYWxpZGF0b3J9KX1jb250cm9scztyZWdpc3RlckNvbnRyb2woZSx0KXtyZXR1cm4gdGhpcy5jb250cm9sc1tlXT90aGlzLmNv'@; put 'bnRyb2xzW2VdOih0aGlzLmNvbnRyb2xzW2VdPXQsdC5zZXRQYXJlbnQodGhpcyksdC5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSx0KX1hZGRDb250cm9sKGUsdCxyPXt9KXt0aGlzLnJlZ2lzdGVyQ29udHJvbChlLHQpLHRoaXMudXBkYXRl'@; put 'VmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OnIuZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9cmVtb3ZlQ29udHJvbChlLHQ9e30pe3RoaXMuY29udHJvbHNbZV0mJnRoaXMuY29udHJvbHNbZV0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksZGVs'@; put 'ZXRlIHRoaXMuY29udHJvbHNbZV0sdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1zZXRDb250cm9sKGUsdCxyPXt9KXt0aGlzLmNvbnRyb2xzW2VdJiZ0aGlzLmNvbnRyb2xzW2VdLl9yZWdpc3Rl'@; put 'ck9uQ29sbGVjdGlvbkNoYW5nZSgoKT0+e30pLGRlbGV0ZSB0aGlzLmNvbnRyb2xzW2VdLHQmJnRoaXMucmVnaXN0ZXJDb250cm9sKGUsdCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ci5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1jb250'@; put 'YWlucyhlKXtyZXR1cm4gdGhpcy5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShlKSYmdGhpcy5jb250cm9sc1tlXS5lbmFibGVkfXNldFZhbHVlKGUsdD17fSl7KGZ1bmN0aW9uIHBTZShuLGUsdCl7bi5fZm9yRWFjaENoaWxkKChyLGkpPT57aWYodm9pZCAwPT09dFtpXSl0aHJvdyBuZXcgV24o'@; put 'MTAwMiwiIil9KX0pKHRoaXMsMCxlKSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHI9PnsoZnVuY3Rpb24gZlNlKG4sZSx0KXtjb25zdCByPW4uY29udHJvbHM7aWYoIShlP09iamVjdC5rZXlzKHIpOnIpLmxlbmd0aCl0aHJvdyBuZXcgV24oMWUzLCIiKTtpZighclt0XSl0aHJvdyBuZXcgV24o'@; put 'MTAwMSwiIil9KSh0aGlzLCEwLHIpLHRoaXMuY29udHJvbHNbcl0uc2V0VmFsdWUoZVtyXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodCl9cGF0Y2hWYWx1ZShlLHQ9e30pe251bGwhPWUmJihPYmplY3Qua2V5cyhl'@; put 'KS5mb3JFYWNoKHI9Pntjb25zdCBpPXRoaXMuY29udHJvbHNbcl07aSYmaS5wYXRjaFZhbHVlKGVbcl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDp0LmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpKX1yZXNldChlPXt9LHQ9e30pe3RoaXMuX2ZvckVhY2hDaGls'@; put 'ZCgocixpKT0+e3IucmVzZXQoZT9lW2ldOm51bGwse29ubHlTZWxmOiEwLGVtaXRFdmVudDp0LmVtaXRFdmVudH0pfSksdGhpcy5fdXBkYXRlUHJpc3RpbmUodCx0aGlzKSx0aGlzLl91cGRhdGVUb3VjaGVkKHQsdGhpcyksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpLCExIT09dD8u'@; put 'ZW1pdEV2ZW50JiZ0aGlzLl9ldmVudHMubmV4dChuZXcgWGllKHRoaXMpKX1nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoZSx0LHIpPT4oZVtyXT10LmdldFJhd1ZhbHVlKCksZSkpfV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7bGV0IGU9dGhpcy5fcmVkdWNl'@; put 'Q2hpbGRyZW4oITEsKHQscik9PiEhci5fc3luY1BlbmRpbmdDb250cm9scygpfHx0KTtyZXR1cm4gZSYmdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMH0pLGV9X2ZvckVhY2hDaGlsZChlKXtPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKHQ9Pntjb25z'@; put 'dCByPXRoaXMuY29udHJvbHNbdF07ciYmZShyLHQpfSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoZT0+e2Uuc2V0UGFyZW50KHRoaXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSl9KX1fdXBkYXRlVmFsdWUoKXt0'@; put 'aGlzLnZhbHVlPXRoaXMuX3JlZHVjZVZhbHVlKCl9X2FueUNvbnRyb2xzKGUpe2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXModGhpcy5jb250cm9scykpaWYodGhpcy5jb250YWlucyh0KSYmZShyKSlyZXR1cm4hMDtyZXR1cm4hMX1fcmVkdWNlVmFsdWUoKXtyZXR1cm4gdGhpcy5f'@; put 'cmVkdWNlQ2hpbGRyZW4oe30sKHQscixpKT0+KChyLmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYodFtpXT1yLnZhbHVlKSx0KSl9X3JlZHVjZUNoaWxkcmVuKGUsdCl7bGV0IHI9ZTtyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKChpLG8pPT57cj10KHIsaSxvKX0pLHJ9X2FsbENvbnRyb2xz'@; put 'RGlzYWJsZWQoKXtmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRyb2xzW2VdLmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9maW5kKGUpe3JldHVybiB0'@; put 'aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGUpP3RoaXMuY29udHJvbHNbZV06bnVsbH19Y29uc3QgRGI9bmV3IEVyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5yRH0pLHJEPSJhbHdheXMiO2Z1bmN0aW9uIGlEKG4sZSx0PXJEKXt0b2UobixlKSxlLnZhbHVlQWNjZXNz'@; put 'b3Iud3JpdGVWYWx1ZShuLnZhbHVlKSwobi5kaXNhYmxlZHx8ImFsd2F5cyI9PT10KSYmZS52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGU/LihuLmRpc2FibGVkKSxmdW5jdGlvbiBacHQobixlKXtlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZSh0PT57bi5fcGVuZGluZ1Zh'@; put 'bHVlPXQsbi5fcGVuZGluZ0NoYW5nZT0hMCxuLl9wZW5kaW5nRGlydHk9ITAsImNoYW5nZSI9PT1uLnVwZGF0ZU9uJiZnU2UobixlKX0pfShuLGUpLGZ1bmN0aW9uICRwdChuLGUpe2NvbnN0IHQ9KHIsaSk9PntlLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShyKSxpJiZlLnZpZXdUb01vZGVs'@; put 'VXBkYXRlKHIpfTtuLnJlZ2lzdGVyT25DaGFuZ2UodCksZS5fcmVnaXN0ZXJPbkRlc3Ryb3koKCk9PntuLl91bnJlZ2lzdGVyT25DaGFuZ2UodCl9KX0obixlKSxmdW5jdGlvbiBHcHQobixlKXtlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoKCk9PntuLl9wZW5kaW5nVG91Y2hl'@; put 'ZD0hMCwiYmx1ciI9PT1uLnVwZGF0ZU9uJiZuLl9wZW5kaW5nQ2hhbmdlJiZnU2UobixlKSwic3VibWl0IiE9PW4udXBkYXRlT24mJm4ubWFya0FzVG91Y2hlZCgpfSl9KG4sZSksZnVuY3Rpb24gWXB0KG4sZSl7aWYoZS52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUpe2NvbnN0IHQ9'@; put 'cj0+e2UudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKHIpfTtuLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSh0KSxlLl9yZWdpc3Rlck9uRGVzdHJveSgoKT0+e24uX3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKHQpfSl9fShuLGUpfWZ1bmN0aW9uIHd6KG4sZSl7bi5mb3JFYWNo'@; put 'KHQ9Pnt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShlKX0pfWZ1bmN0aW9uIHRvZShuLGUpe2NvbnN0IHQ9ZnVuY3Rpb24gaVNlKG4pe3JldHVybiBuLl9yYXdWYWxpZGF0b3JzfShuKTtudWxsIT09ZS52YWxpZGF0b3I/bi5zZXRWYWxp'@; put 'ZGF0b3JzKHJTZSh0LGUudmFsaWRhdG9yKSk6ImZ1bmN0aW9uIj09dHlwZW9mIHQmJm4uc2V0VmFsaWRhdG9ycyhbdF0pO2NvbnN0IHI9ZnVuY3Rpb24gb1NlKG4pe3JldHVybiBuLl9yYXdBc3luY1ZhbGlkYXRvcnN9KG4pO251bGwhPT1lLmFzeW5jVmFsaWRhdG9yP24uc2V0QXN5bmNWYWxp'@; put 'ZGF0b3JzKHJTZShyLGUuYXN5bmNWYWxpZGF0b3IpKToiZnVuY3Rpb24iPT10eXBlb2YgciYmbi5zZXRBc3luY1ZhbGlkYXRvcnMoW3JdKTtjb25zdCBpPSgpPT5uLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTt3eihlLl9yYXdWYWxpZGF0b3JzLGkpLHd6KGUuX3Jhd0FzeW5jVmFsaWRhdG9y'@; put 'cyxpKX1mdW5jdGlvbiBnU2UobixlKXtuLl9wZW5kaW5nRGlydHkmJm4ubWFya0FzRGlydHkoKSxuLnNldFZhbHVlKG4uX3BlbmRpbmdWYWx1ZSx7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksZS52aWV3VG9Nb2RlbFVwZGF0ZShuLl9wZW5kaW5nVmFsdWUpLG4uX3BlbmRpbmdDaGFuZ2U9'@; put 'ITF9Y29uc3QgSnB0PXtwcm92aWRlOkRmLHVzZUV4aXN0aW5nOlVvKCgpPT5kNCl9LG9EPVByb21pc2UucmVzb2x2ZSgpO2xldCBkND0oKCk9PntjbGFzcyBuIGV4dGVuZHMgRGZ7Y2FsbFNldERpc2FibGVkU3RhdGU7Z2V0IHN1Ym1pdHRlZCgpe3JldHVybiBOdSh0aGlzLnN1Ym1pdHRlZFJl'@; put 'YWN0aXZlKX1fc3VibWl0dGVkPW40KCgpPT50aGlzLnN1Ym1pdHRlZFJlYWN0aXZlKCkpO3N1Ym1pdHRlZFJlYWN0aXZlPUIxKCExKTtfZGlyZWN0aXZlcz1uZXcgU2V0O2Zvcm07bmdTdWJtaXQ9bmV3IEtyO29wdGlvbnM7Y29uc3RydWN0b3IodCxyLGkpe3N1cGVyKCksdGhpcy5jYWxsU2V0'@; put 'RGlzYWJsZWRTdGF0ZT1pLHRoaXMuZm9ybT1uZXcgX3ooe30sV2llKHQpLFlpZShyKSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX1nZXQgcGF0'@; put 'aCgpe3JldHVybltdfWdldCBjb250cm9scygpe3JldHVybiB0aGlzLmZvcm0uY29udHJvbHN9YWRkQ29udHJvbCh0KXtvRC50aGVuKCgpPT57Y29uc3Qgcj10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7dC5jb250cm9sPXIucmVnaXN0ZXJDb250cm9sKHQubmFtZSx0LmNvbnRyb2wpLGlE'@; put 'KHQuY29udHJvbCx0LHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGUpLHQuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLmFkZCh0KX0pfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVD'@; put 'b250cm9sKHQpe29ELnRoZW4oKCk9Pntjb25zdCByPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtyJiZyLnJlbW92ZUNvbnRyb2wodC5uYW1lKSx0aGlzLl9kaXJlY3RpdmVzLmRlbGV0ZSh0KX0pfWFkZEZvcm1Hcm91cCh0KXtvRC50aGVuKCgpPT57Y29uc3Qgcj10aGlzLl9maW5kQ29u'@; put 'dGFpbmVyKHQucGF0aCksaT1uZXcgX3ooe30pOyhmdW5jdGlvbiBtU2UobixlKXt0b2UobixlKX0pKGksdCksci5yZWdpc3RlckNvbnRyb2wodC5uYW1lLGkpLGkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9KX1yZW1vdmVGb3JtR3JvdXAodCl7b0QudGhlbigoKT0+'@; put 'e2NvbnN0IHI9dGhpcy5fZmluZENvbnRhaW5lcih0LnBhdGgpO3ImJnIucmVtb3ZlQ29udHJvbCh0Lm5hbWUpfSl9Z2V0Rm9ybUdyb3VwKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9dXBkYXRlTW9kZWwodCxyKXtvRC50aGVuKCgpPT57dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNl'@; put 'dFZhbHVlKHIpfSl9c2V0VmFsdWUodCl7dGhpcy5jb250cm9sLnNldFZhbHVlKHQpfW9uU3VibWl0KHQpe3JldHVybiB0aGlzLnN1Ym1pdHRlZFJlYWN0aXZlLnNldCghMCksZnVuY3Rpb24gdlNlKG4sZSl7bi5fc3luY1BlbmRpbmdDb250cm9scygpLGUuZm9yRWFjaCh0PT57Y29uc3Qgcj10'@; put 'LmNvbnRyb2w7InN1Ym1pdCI9PT1yLnVwZGF0ZU9uJiZyLl9wZW5kaW5nQ2hhbmdlJiYodC52aWV3VG9Nb2RlbFVwZGF0ZShyLl9wZW5kaW5nVmFsdWUpLHIuX3BlbmRpbmdDaGFuZ2U9ITEpfSl9KHRoaXMuZm9ybSx0aGlzLl9kaXJlY3RpdmVzKSx0aGlzLm5nU3VibWl0LmVtaXQodCksdGhp'@; put 'cy5mb3JtLl9ldmVudHMubmV4dChuZXcgaFNlKHRoaXMuY29udHJvbCkpLCJkaWFsb2ciPT09dD8udGFyZ2V0Py5tZXRob2R9b25SZXNldCgpe3RoaXMucmVzZXRGb3JtKCl9cmVzZXRGb3JtKHQ9dm9pZCAwKXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWRSZWFjdGl2ZS5zZXQo'@; put 'ITEpfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5mb3JtLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9maW5kQ29udGFpbmVyKHQpe3JldHVybiB0LnBvcCgpLHQubGVuZ3RoP3RoaXMuZm9ybS5n'@; put 'ZXQodCk6dGhpcy5mb3JtfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShHMSwxMCksemUobXYsMTApLHplKERiLDgpKX07c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywiZm9ybUdy'@; put 'b3VwIiwiIl0sWyJuZy1mb3JtIl0sWyIiLCJuZ0Zvcm0iLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHIsaSl7MSZyJiZ3dCgic3VibWl0IixmdW5jdGlvbihhKXtyZXR1cm4gaS5vblN1Ym1pdChhKX0pKCJyZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4gaS5vblJlc2V0KCl9KX0saW5wdXRz'@; put 'OntvcHRpb25zOlswLCJuZ0Zvcm1PcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtKcHRdKSxGb119KX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gX1NlKG4sZSl7Y29u'@; put 'c3QgdD1uLmluZGV4T2YoZSk7dD4tMSYmbi5zcGxpY2UodCwxKX1mdW5jdGlvbiB5U2Uobil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09biYmMj09PU9iamVjdC5rZXlzKG4pLmxlbmd0aCYmInZhbHVlImluIG4mJiJkaXNhYmxlZCJpbiBufWNvbnN0IG9vZT1jbGFzcyBleHRl'@; put 'bmRzIGVvZXtkZWZhdWx0VmFsdWU9bnVsbDtfb25DaGFuZ2U9W107X3BlbmRpbmdWYWx1ZTtfcGVuZGluZ0NoYW5nZT0hMTtjb25zdHJ1Y3RvcihlPW51bGwsdCxyKXtzdXBlcihRaWUodCksSmllKHIsdCkpLHRoaXMuX2FwcGx5Rm9ybVN0YXRlKGUpLHRoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5'@; put 'KHQpLHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiEhdGhpcy5hc3luY1ZhbGlkYXRvcn0pLHZ6KHQpJiYodC5ub25OdWxsYWJsZXx8dC5pbml0aWFsVmFsdWVJc0RlZmF1bHQpJiYodGhpcy5kZWZhdWx0'@; put 'VmFsdWU9eVNlKGUpP2UudmFsdWU6ZSl9c2V0VmFsdWUoZSx0PXt9KXt0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT1lLHRoaXMuX29uQ2hhbmdlLmxlbmd0aCYmITEhPT10LmVtaXRNb2RlbFRvVmlld0NoYW5nZSYmdGhpcy5fb25DaGFuZ2UuZm9yRWFjaChyPT5yKHRoaXMudmFsdWUs'@; put 'ITEhPT10LmVtaXRWaWV3VG9Nb2RlbENoYW5nZSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0KX1wYXRjaFZhbHVlKGUsdD17fSl7dGhpcy5zZXRWYWx1ZShlLHQpfXJlc2V0KGU9dGhpcy5kZWZhdWx0VmFsdWUsdD17fSl7dGhpcy5fYXBwbHlGb3JtU3RhdGUoZSksdGhpcy5tYXJr'@; put 'QXNQcmlzdGluZSh0KSx0aGlzLm1hcmtBc1VudG91Y2hlZCh0KSx0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUsdCksdGhpcy5fcGVuZGluZ0NoYW5nZT0hMSwhMSE9PXQ/LmVtaXRFdmVudCYmdGhpcy5fZXZlbnRzLm5leHQobmV3IFhpZSh0aGlzKSl9X3VwZGF0ZVZhbHVlKCl7fV9hbnlDb250'@; put 'cm9scyhlKXtyZXR1cm4hMX1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfXJlZ2lzdGVyT25DaGFuZ2UoZSl7dGhpcy5fb25DaGFuZ2UucHVzaChlKX1fdW5yZWdpc3Rlck9uQ2hhbmdlKGUpe19TZSh0aGlzLl9vbkNoYW5nZSxlKX1yZWdpc3Rlck9uRGlzYWJs'@; put 'ZWRDaGFuZ2UoZSl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKGUpfV91bnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShlKXtfU2UodGhpcy5fb25EaXNhYmxlZENoYW5nZSxlKX1fZm9yRWFjaENoaWxkKGUpe31fc3luY1BlbmRpbmdDb250cm9scygpe3JldHVybiEoInN1Ym1pdCIhPT10'@; put 'aGlzLnVwZGF0ZU9ufHwodGhpcy5fcGVuZGluZ0RpcnR5JiZ0aGlzLm1hcmtBc0RpcnR5KCksdGhpcy5fcGVuZGluZ1RvdWNoZWQmJnRoaXMubWFya0FzVG91Y2hlZCgpLCF0aGlzLl9wZW5kaW5nQ2hhbmdlKXx8KHRoaXMuc2V0VmFsdWUodGhpcy5fcGVuZGluZ1ZhbHVlLHtvbmx5U2VsZjoh'@; put 'MCxlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6ITF9KSwwKSl9X2FwcGx5Rm9ybVN0YXRlKGUpe3lTZShlKT8odGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9ZS52YWx1ZSxlLmRpc2FibGVkP3RoaXMuZGlzYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSk6dGhpcy5lbmFibGUoe29u'@; put 'bHlTZWxmOiEwLGVtaXRFdmVudDohMX0pKTp0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT1lfX0saWd0PXtwcm92aWRlOlYyLHVzZUV4aXN0aW5nOlVvKCgpPT5YbCl9LGJTZT1Qcm9taXNlLnJlc29sdmUoKTtsZXQgWGw9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFYye19jaGFuZ2VEZXRl'@; put 'Y3RvclJlZjtjYWxsU2V0RGlzYWJsZWRTdGF0ZTtjb250cm9sPW5ldyBvb2U7c3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2lzRGlzYWJsZWQ7X3JlZ2lzdGVyZWQ9ITE7dmlld01vZGVsO25hbWU9IiI7aXNEaXNhYmxlZDttb2RlbDtvcHRpb25zO3VwZGF0ZT1uZXcgS3I7Y29uc3RydWN0b3Io'@; put 'dCxyLGksbyxhLGwpe3N1cGVyKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9YSx0aGlzLmNhbGxTZXREaXNhYmxlZFN0YXRlPWwsdGhpcy5fcGFyZW50PXQsdGhpcy5fc2V0VmFsaWRhdG9ycyhyKSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoaSksdGhpcy52YWx1ZUFjY2Vzc29yPWZ1bmN0'@; put 'aW9uIGlvZShuLGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0LHIsaTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSxlLmZvckVhY2gobz0+e28uY29uc3RydWN0b3I9PT1sdT90PW86ZnVuY3Rpb24gWHB0KG4pe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5jb25zdHJ1Y3Rvcik9PT1S'@; put 'Yn0obyk/cj1vOmk9b30pLGl8fHJ8fHR8fG51bGx9KDAsbyl9bmdPbkNoYW5nZXModCl7aWYodGhpcy5fY2hlY2tGb3JFcnJvcnMoKSwhdGhpcy5fcmVnaXN0ZXJlZHx8Im5hbWUiaW4gdCl7aWYodGhpcy5fcmVnaXN0ZXJlZCYmKHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuZm9ybURpcmVjdGl2'@; put 'ZSkpe2NvbnN0IHI9dC5uYW1lLnByZXZpb3VzVmFsdWU7dGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2woe25hbWU6cixwYXRoOnRoaXMuX2dldFBhdGgocil9KX10aGlzLl9zZXRVcENvbnRyb2woKX0iaXNEaXNhYmxlZCJpbiB0JiZ0aGlzLl91cGRhdGVEaXNhYmxlZCh0KSxmdW5j'@; put 'dGlvbiByb2UobixlKXtpZighbi5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtjb25zdCB0PW4ubW9kZWw7cmV0dXJuISF0LmlzRmlyc3RDaGFuZ2UoKXx8IU9iamVjdC5pcyhlLHQuY3VycmVudFZhbHVlKX0odCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLl91cGRhdGVWYWx1ZSh0'@; put 'aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fZ2V0UGF0aCh0aGlzLm5hbWUpfWdldCBmb3JtRGly'@; put 'ZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfXZpZXdUb01vZGVsVXBkYXRlKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX1fc2V0VXBDb250cm9sKCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKSx0aGlz'@; put 'Ll9pc1N0YW5kYWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhp'@; put 'cy5jb250cm9sLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9pc1N0YW5kYWxvbmUoKXtyZXR1cm4hdGhpcy5fcGFyZW50fHwhKCF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9X3NldFVwU3RhbmRhbG9uZSgpe2lEKHRoaXMuY29udHJvbCx0aGlzLHRo'@; put 'aXMuY2FsbFNldERpc2FibGVkU3RhdGUpLHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX1fY2hlY2tGb3JFcnJvcnMoKXt0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tOYW1lKCl7dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubmFtZSYmKHRoaXMu'@; put 'bmFtZT10aGlzLm9wdGlvbnMubmFtZSksdGhpcy5faXNTdGFuZGFsb25lKCl9X3VwZGF0ZVZhbHVlKHQpe2JTZS50aGVuKCgpPT57dGhpcy5jb250cm9sLnNldFZhbHVlKHQse2VtaXRWaWV3VG9Nb2RlbENoYW5nZTohMX0pLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPy5tYXJrRm9yQ2hlY2so'@; put 'KX0pfV91cGRhdGVEaXNhYmxlZCh0KXtjb25zdCByPXQuaXNEaXNhYmxlZC5jdXJyZW50VmFsdWUsaT0wIT09ciYmWjAocik7YlNlLnRoZW4oKCk9PntpJiYhdGhpcy5jb250cm9sLmRpc2FibGVkP3RoaXMuY29udHJvbC5kaXNhYmxlKCk6IWkmJnRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhp'@; put 'cy5jb250cm9sLmVuYWJsZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPy5tYXJrRm9yQ2hlY2soKX0pfV9nZXRQYXRoKHQpe3JldHVybiB0aGlzLl9wYXJlbnQ/ZnVuY3Rpb24geXoobixlKXtyZXR1cm5bLi4uZS5wYXRoLG5dfSh0LHRoaXMuX3BhcmVudCk6W3RdfXN0YXRpYyBcdTAyNzVm'@; put 'YWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShEZiw5KSx6ZShHMSwxMCksemUobXYsMTApLHplKHo1LDEwKSx6ZShVbCw4KSx6ZShEYiw4KSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwibmdNb2RlbCIsIiIsMywiZm9ybUNvbnRyb2xOYW1l'@; put 'IiwiIiwzLCJmb3JtQ29udHJvbCIsIiJdXSxpbnB1dHM6e25hbWU6Im5hbWUiLGlzRGlzYWJsZWQ6WzAsImRpc2FibGVkIiwiaXNEaXNhYmxlZCJdLG1vZGVsOlswLCJuZ01vZGVsIiwibW9kZWwiXSxvcHRpb25zOlswLCJuZ01vZGVsT3B0aW9ucyIsIm9wdGlvbnMiXX0sb3V0cHV0czp7dXBk'@; put 'YXRlOiJuZ01vZGVsQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ01vZGVsIl0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW2lndF0pLEZvLGl1XX0pfXJldHVybiBufSkoKSxMYj0oKCk9PntjbGFzcyBue3N0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3Rh'@; put 'dGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywibmdOYXRpdmVWYWxpZGF0ZSIsIiJdXSxob3N0QXR0cnM6WyJub3ZhbGlkYXRlIiwiIl0sc3RhbmRhbG9uZTohMX0pfXJldHVybiBufSkoKTtjb25zdCBvZ3Q9e3Byb3ZpZGU6ejUs'@; put 'dXNlRXhpc3Rpbmc6VW8oKCk9PkV6KSxtdWx0aTohMH07bGV0IEV6PSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBSYnt3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIix0Pz8iIil9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLm9uQ2hhbmdlPXI9Pnt0KCIiPT1yP251bGw6cGFy'@; put 'c2VGbG9hdChyKSl9fXN0YXRpYyBcdTAyNzVmYWM9KCgpPT57bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybih0fHwodD13YShuKSkpKGl8fG4pfX0pKCk7c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29u'@; put 'dHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezEmciYmd3QoImlucHV0IixmdW5jdGlvbihhKXtyZXR1cm4gaS5vbkNo'@; put 'YW5nZShhLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gaS5vblRvdWNoZWQoKX0pfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbb2d0XSksRm9dfSl9cmV0dXJuIG59KSgpO2NvbnN0IGFndD17cHJvdmlkZTp6NSx1c2VFeGlzdGluZzpVbygoKT0+TXopLG11'@; put 'bHRpOiEwfTtsZXQgc2d0PSgoKT0+e2NsYXNzIG57X2FjY2Vzc29ycz1bXTthZGQodCxyKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxyXSl9cmVtb3ZlKHQpe2ZvcihsZXQgcj10aGlzLl9hY2Nlc3NvcnMubGVuZ3RoLTE7cj49MDstLXIpaWYodGhpcy5fYWNjZXNzb3JzW3JdWzFdPT09dCly'@; put 'ZXR1cm4gdm9pZCB0aGlzLl9hY2Nlc3NvcnMuc3BsaWNlKHIsMSl9c2VsZWN0KHQpe3RoaXMuX2FjY2Vzc29ycy5mb3JFYWNoKHI9Pnt0aGlzLl9pc1NhbWVHcm91cChyLHQpJiZyWzFdIT09dCYmclsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pfV9pc1NhbWVHcm91cCh0LHIpe3JldHVybiEh'@; put 'dFswXS5jb250cm9sJiZ0WzBdLl9wYXJlbnQ9PT1yLl9jb250cm9sLl9wYXJlbnQmJnRbMV0ubmFtZT09PXIubmFtZX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMs'@; put 'cHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCksTXo9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFJie19yZWdpc3RyeTtfaW5qZWN0b3I7X3N0YXRlO19jb250cm9sO19mbjtzZXREaXNhYmxlZFN0YXRlRmlyZWQ9ITE7b25DaGFuZ2U9KCk9Pnt9O25hbWU7Zm9ybUNvbnRyb2xOYW1lO3Zh'@; put 'bHVlO2NhbGxTZXREaXNhYmxlZFN0YXRlPXNuKERiLHtvcHRpb25hbDohMH0pPz9yRDtjb25zdHJ1Y3Rvcih0LHIsaSxvKXtzdXBlcih0LHIpLHRoaXMuX3JlZ2lzdHJ5PWksdGhpcy5faW5qZWN0b3I9b31uZ09uSW5pdCgpe3RoaXMuX2NvbnRyb2w9dGhpcy5faW5qZWN0b3IuZ2V0KFYyKSx0'@; put 'aGlzLl9jaGVja05hbWUoKSx0aGlzLl9yZWdpc3RyeS5hZGQodGhpcy5fY29udHJvbCx0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKX13cml0ZVZhbHVlKHQpe3RoaXMuX3N0YXRlPXQ9PT10aGlzLnZhbHVlLHRoaXMuc2V0UHJvcGVydHkoImNoZWNrZWQi'@; put 'LHRoaXMuX3N0YXRlKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2ZuPXQsdGhpcy5vbkNoYW5nZT0oKT0+e3QodGhpcy52YWx1ZSksdGhpcy5fcmVnaXN0cnkuc2VsZWN0KHRoaXMpfX1zZXREaXNhYmxlZFN0YXRlKHQpeyh0aGlzLnNldERpc2FibGVkU3RhdGVGaXJlZHx8dHx8IndoZW5E'@; put 'aXNhYmxlZEZvckxlZ2FjeUNvZGUiPT09dGhpcy5jYWxsU2V0RGlzYWJsZWRTdGF0ZSkmJnRoaXMuc2V0UHJvcGVydHkoImRpc2FibGVkIix0KSx0aGlzLnNldERpc2FibGVkU3RhdGVGaXJlZD0hMH1maXJlVW5jaGVjayh0KXt0aGlzLndyaXRlVmFsdWUodCl9X2NoZWNrTmFtZSgpeyF0aGlz'@; put 'Lm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiYodGhpcy5uYW1lPXRoaXMuZm9ybUNvbnRyb2xOYW1lKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikoemUoTnQpLHplKG5vKSx6ZShzZ3QpLHplKE1sKSl9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6'@; put 'bixzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsInJhZGlvIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsInJhZGlvIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24ocixp'@; put 'KXsxJnImJnd0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGkub25DaGFuZ2UoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBpLm9uVG91Y2hlZCgpfSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LHN0'@; put 'YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFthZ3RdKSxGb119KX1yZXR1cm4gbn0pKCk7Y29uc3QgYW9lPW5ldyBFcigiIikscGd0PXtwcm92aWRlOno1LHVzZUV4aXN0aW5nOlVvKCgpPT5LZyksbXVsdGk6ITB9O2Z1bmN0aW9uIE1TZShuLGUpe3JldHVybiBudWxsPT1uP2Ake2V9YDooZSYm'@; put 'Im9iamVjdCI9PXR5cGVvZiBlJiYoZT0iT2JqZWN0IiksYCR7bn06ICR7ZX1gLnNsaWNlKDAsNTApKX1sZXQgS2c9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFJie3ZhbHVlO19vcHRpb25NYXA9bmV3IE1hcDtfaWRDb3VudGVyPTA7c2V0IGNvbXBhcmVXaXRoKHQpe3RoaXMuX2NvbXBhcmVXaXRo'@; put 'PXR9X2NvbXBhcmVXaXRoPU9iamVjdC5pczthcHBSZWZJbmplY3Rvcj1zbihXZykuaW5qZWN0b3I7ZGVzdHJveVJlZj1zbihNMik7Y2RyPXNuKFVsKTtfcXVldWVkV3JpdGU9ITE7X3dyaXRlVmFsdWVBZnRlclJlbmRlcigpe3RoaXMuX3F1ZXVlZFdyaXRlfHx0aGlzLmFwcFJlZkluamVjdG9y'@; put 'LmRlc3Ryb3llZHx8KHRoaXMuX3F1ZXVlZFdyaXRlPSEwLEg4KHt3cml0ZTooKT0+e3RoaXMuZGVzdHJveVJlZi5kZXN0cm95ZWR8fCh0aGlzLl9xdWV1ZWRXcml0ZT0hMSx0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSkpfX0se2luamVjdG9yOnRoaXMuYXBwUmVmSW5qZWN0b3J9KSl9d3Jp'@; put 'dGVWYWx1ZSh0KXt0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSx0aGlzLnZhbHVlPXQ7Y29uc3QgaT1NU2UodGhpcy5fZ2V0T3B0aW9uSWQodCksdCk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLGkpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1yPT57dGhpcy52YWx1ZT10aGlz'@; put 'Ll9nZXRPcHRpb25WYWx1ZShyKSx0KHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKHQpe2Zvcihjb25zdCByIG9mIHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpaWYodGhpcy5fY29tcGFyZVdpdGgo'@; put 'dGhpcy5fb3B0aW9uTWFwLmdldChyKSx0KSlyZXR1cm4gcjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUodCl7Y29uc3Qgcj1mdW5jdGlvbiBnZ3Qobil7cmV0dXJuIG4uc3BsaXQoIjoiKVswXX0odCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMocik/dGhpcy5fb3B0aW9uTWFwLmdl'@; put 'dChyKTp0fXN0YXRpYyBcdTAyNzVmYWM9KCgpPT57bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybih0fHwodD13YShuKSkpKGl8fG4pfX0pKCk7c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsIm11bHRp'@; put 'cGxlIiwiIl0sWyJzZWxlY3QiLCJmb3JtQ29udHJvbCIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsIm5nTW9kZWwiLCIiLDMsIm11bHRpcGxlIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezEmciYmd3QoImNoYW5nZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGkub25DaGFu'@; put 'Z2UoYS50YXJnZXQudmFsdWUpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGkub25Ub3VjaGVkKCl9KX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbcGd0XSksRm9dfSl9cmV0dXJuIG59KSgpLFhnPSgoKT0+e2NsYXNz'@; put 'IG57X2VsZW1lbnQ7X3JlbmRlcmVyO19zZWxlY3Q7aWQ7Y29uc3RydWN0b3IodCxyLGkpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1yLHRoaXMuX3NlbGVjdD1pLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbigpKX1zZXQgbmdWYWx1'@; put 'ZSh0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoTVNlKHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC5fd3JpdGVWYWx1ZUFmdGVyUmVuZGVyKCkpfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRF'@; put 'bGVtZW50VmFsdWUodCksdGhpcy5fc2VsZWN0JiZ0aGlzLl9zZWxlY3QuX3dyaXRlVmFsdWVBZnRlclJlbmRlcigpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9bmdPbkRlc3Ryb3ko'@; put 'KXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0Ll93cml0ZVZhbHVlQWZ0ZXJSZW5kZXIoKSl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHplKG5vKSx6ZShOdCksemUoS2csOSkp'@; put 'fTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9LHN0YW5kYWxvbmU6ITF9KX1yZXR1cm4gbn0pKCk7Y29uc3QgbWd0PXtwcm92aWRlOno1LHVzZUV4aXN0aW5nOlVvKCgpPT5s'@; put 'RCksbXVsdGk6ITB9O2Z1bmN0aW9uIFRTZShuLGUpe3JldHVybiBudWxsPT1uP2Ake2V9YDooInN0cmluZyI9PXR5cGVvZiBlJiYoZT1gJyR7ZX0nYCksZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoZT0iT2JqZWN0IiksYCR7bn06ICR7ZX1gLnNsaWNlKDAsNTApKX1sZXQgbEQ9KCgpPT57Y2xh'@; put 'c3MgbiBleHRlbmRzIFJie3ZhbHVlO19vcHRpb25NYXA9bmV3IE1hcDtfaWRDb3VudGVyPTA7c2V0IGNvbXBhcmVXaXRoKHQpe3RoaXMuX2NvbXBhcmVXaXRoPXR9X2NvbXBhcmVXaXRoPU9iamVjdC5pczt3cml0ZVZhbHVlKHQpe2xldCByO2lmKHRoaXMudmFsdWU9dCxBcnJheS5pc0FycmF5'@; put 'KHQpKXtjb25zdCBpPXQubWFwKG89PnRoaXMuX2dldE9wdGlvbklkKG8pKTtyPShvLGEpPT57by5fc2V0U2VsZWN0ZWQoaS5pbmRleE9mKGEudG9TdHJpbmcoKSk+LTEpfX1lbHNlIHI9KGksbyk9PntpLl9zZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKHIpfXJlZ2lz'@; put 'dGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1yPT57Y29uc3QgaT1bXSxvPXIuc2VsZWN0ZWRPcHRpb25zO2lmKHZvaWQgMCE9PW8pe2NvbnN0IGE9bztmb3IobGV0IGw9MDtsPGEubGVuZ3RoO2wrKyl7Y29uc3QgZz10aGlzLl9nZXRPcHRpb25WYWx1ZShhW2xdLnZhbHVlKTtpLnB1c2go'@; put 'Zyl9fWVsc2V7Y29uc3QgYT1yLm9wdGlvbnM7Zm9yKGxldCBsPTA7bDxhLmxlbmd0aDtsKyspe2NvbnN0IHU9YVtsXTtpZih1LnNlbGVjdGVkKXtjb25zdCBnPXRoaXMuX2dldE9wdGlvblZhbHVlKHUudmFsdWUpO2kucHVzaChnKX19fXRoaXMudmFsdWU9aSx0KGkpfX1fcmVnaXN0ZXJPcHRp'@; put 'b24odCl7Y29uc3Qgcj0odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5zZXQocix0KSxyfV9nZXRPcHRpb25JZCh0KXtmb3IoY29uc3QgciBvZiB0aGlzLl9vcHRpb25NYXAua2V5cygpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlv'@; put 'bk1hcC5nZXQocikuX3ZhbHVlLHQpKXJldHVybiByO3JldHVybiBudWxsfV9nZXRPcHRpb25WYWx1ZSh0KXtjb25zdCByPWZ1bmN0aW9uIHZndChuKXtyZXR1cm4gbi5zcGxpdCgiOiIpWzBdfSh0KTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhyKT90aGlzLl9vcHRpb25NYXAuZ2V0KHIp'@; put 'Ll92YWx1ZTp0fXN0YXRpYyBcdTAyNzVmYWM9KCgpPT57bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybih0fHwodD13YShuKSkpKGl8fG4pfX0pKCk7c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9s'@; put 'TmFtZSIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezEmciYmd3QoImNoYW5nZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGkub25DaGFuZ2Uo'@; put 'YS50YXJnZXQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGkub25Ub3VjaGVkKCl9KX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbbWd0XSksRm9dfSl9cmV0dXJuIG59KSgpLFFnPSgoKT0+e2NsYXNzIG57X2VsZW1l'@; put 'bnQ7X3JlbmRlcmVyO19zZWxlY3Q7aWQ7X3ZhbHVlO2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9cix0aGlzLl9zZWxlY3Q9aSx0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24odGhpcykpfXNldCBuZ1Zh'@; put 'bHVlKHQpe251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3ZhbHVlPXQsdGhpcy5fc2V0RWxlbWVudFZhbHVlKFRTZSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX1zZXQgdmFsdWUodCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10'@; put 'LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShUU2UodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSk6dGhpcy5fc2V0RWxlbWVudFZhbHVlKHQpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxl'@; put 'bWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9X3NldFNlbGVjdGVkKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwic2VsZWN0ZWQiLHQpfW5nT25EZXN0cm95KCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25N'@; put 'YXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKSh6ZShubyksemUoTnQpLHplKGxELDkpKX07c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLHNl'@; put 'bGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifSxzdGFuZGFsb25lOiExfSl9cmV0dXJuIG59KSgpO2xldCBPYj0oKCk9PntjbGFzcyBue192YWxpZGF0b3I9aHo7X29uQ2hhbmdlO19lbmFibGVkO25nT25DaGFuZ2VzKHQpe2lmKHRo'@; put 'aXMuaW5wdXROYW1lIGluIHQpe2NvbnN0IHI9dGhpcy5ub3JtYWxpemVJbnB1dCh0W3RoaXMuaW5wdXROYW1lXS5jdXJyZW50VmFsdWUpO3RoaXMuX2VuYWJsZWQ9dGhpcy5lbmFibGVkKHIpLHRoaXMuX3ZhbGlkYXRvcj10aGlzLl9lbmFibGVkP3RoaXMuY3JlYXRlVmFsaWRhdG9yKHIpOmh6'@; put 'LHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yKHQpfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1lbmFibGVkKHQpe3JldHVybiBudWxsIT10fXN0YXRpYyBcdTAyNzVmYWM9ZnVu'@; put 'Y3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpuLGZlYXR1cmVzOltpdV19KX1yZXR1cm4gbn0pKCk7Y29uc3QgYmd0PXtwcm92aWRlOkcxLHVzZUV4aXN0aW5nOlVvKCgpPT5zb2UpLG11bHRpOiEwfSx3Z3Q9e3Byb3ZpZGU6RzEsdXNlRXhpc3Rp'@; put 'bmc6VW8oKCk9PmxvZSksbXVsdGk6ITB9O2xldCBzb2U9KCgpPT57Y2xhc3MgbiBleHRlbmRzIE9ie3JlcXVpcmVkO2lucHV0TmFtZT0icmVxdWlyZWQiO25vcm1hbGl6ZUlucHV0PVowO2NyZWF0ZVZhbGlkYXRvcj10PT5XQ2U7ZW5hYmxlZCh0KXtyZXR1cm4gdH1zdGF0aWMgXHUwMjc1ZmFj'@; put 'PSgoKT0+e2xldCB0O3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4odHx8KHQ9d2EobikpKShpfHxuKX19KSgpO3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsi'@; put 'IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyIiLCJyZXF1aXJlZCIsIiIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezImciYmUnIoInJlcXVpcmVkIixp'@; put 'Ll9lbmFibGVkPyIiOm51bGwpfSxpbnB1dHM6e3JlcXVpcmVkOiJyZXF1aXJlZCJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtiZ3RdKSxGb119KX1yZXR1cm4gbn0pKCksbG9lPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBzb2V7Y3JlYXRlVmFsaWRhdG9yPXQ9PllDZTtzdGF0aWMgXHUw'@; put 'Mjc1ZmFjPSgoKT0+e2xldCB0O3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4odHx8KHQ9d2EobikpKShpfHxuKX19KSgpO3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFt'@; put 'ZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezImciYm'@; put 'UnIoInJlcXVpcmVkIixpLl9lbmFibGVkPyIiOm51bGwpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbd2d0XSksRm9dfSl9cmV0dXJuIG59KSgpO2NvbnN0IEVndD17cHJvdmlkZTpHMSx1c2VFeGlzdGluZzpVbygoKT0+Y29lKSxtdWx0aTohMH07bGV0IGNvZT0oKCk9PntjbGFzcyBu'@; put 'IGV4dGVuZHMgT2J7bWF4bGVuZ3RoO2lucHV0TmFtZT0ibWF4bGVuZ3RoIjtub3JtYWxpemVJbnB1dD10PT5mdW5jdGlvbiB4U2Uobil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuP246cGFyc2VJbnQobiwxMCl9KHQpO2NyZWF0ZVZhbGlkYXRvcj10PT5mdW5jdGlvbiAkQ2Uobil7cmV0dXJu'@; put 'IGU9Pntjb25zdCB0PWUudmFsdWU/Lmxlbmd0aD8/emllKGUudmFsdWUpO3JldHVybiBudWxsIT09dCYmdD5uP3ttYXhsZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOm4sYWN0dWFsTGVuZ3RoOnR9fTpudWxsfX0odCk7c3RhdGljIFx1MDI3NWZhYz0oKCk9PntsZXQgdDtyZXR1cm4gZnVuY3Rpb24o'@; put 'aSl7cmV0dXJuKHR8fCh0PXdhKG4pKSkoaXx8bil9fSkoKTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsIm1heGxlbmd0aCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibWF4bGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsIm1heGxlbmd0'@; put 'aCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24ocixpKXsyJnImJlJyKCJtYXhsZW5ndGgiLGkuX2VuYWJsZWQ/aS5tYXhsZW5ndGg6bnVsbCl9LGlucHV0czp7bWF4bGVuZ3RoOiJtYXhsZW5ndGgifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOlti'@; put 'byhbRWd0XSksRm9dfSl9cmV0dXJuIG59KSgpLE9TZT0oKCk9PntjbGFzcyBue3N0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NW1vZD1HaSh7dHlwZTpufSk7c3RhdGljIFx1MDI3NWluaj1taSh7fSl9cmV0dXJuIG59KSgpLGhkPSgo'@; put 'KT0+e2NsYXNzIG57c3RhdGljIHdpdGhDb25maWcodCl7cmV0dXJue25nTW9kdWxlOm4scHJvdmlkZXJzOlt7cHJvdmlkZTpEYix1c2VWYWx1ZTp0LmNhbGxTZXREaXNhYmxlZFN0YXRlPz9yRH1dfX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRp'@; put 'YyBcdTAyNzVtb2Q9R2koe3R5cGU6bn0pO3N0YXRpYyBcdTAyNzVpbmo9bWkoe2ltcG9ydHM6W09TZV19KX1yZXR1cm4gbn0pKCkseGd0PSgoKT0+e2NsYXNzIG57c3RhdGljIHdpdGhDb25maWcodCl7cmV0dXJue25nTW9kdWxlOm4scHJvdmlkZXJzOlt7cHJvdmlkZTphb2UsdXNlVmFsdWU6'@; put 'dC53YXJuT25OZ01vZGVsV2l0aEZvcm1Db250cm9sPz8iYWx3YXlzIn0se3Byb3ZpZGU6RGIsdXNlVmFsdWU6dC5jYWxsU2V0RGlzYWJsZWRTdGF0ZT8/ckR9XX19c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1bW9kPUdpKHt0eXBl'@; put 'Om59KTtzdGF0aWMgXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltPU2VdfSl9cmV0dXJuIG59KSgpO2NvbnN0IHJNPVsiYW5nbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2TDE4LDE1LjQ5bDkuMDgsOS4z'@; put 'OWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nfV0sQXA9WyJleGNsYW1hdGlvbi1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTggMTkuOEMxOC41NSAxOS44IDE5IDE5LjM1IDE5IDE4LjhWMTNDMTkgMTIuNDUgMTguNTUgMTIgMTggMTJDMTcuNDUgMTIgMTcgMTIuNDUgMTcgMTNW'@; put 'MTguOEMxNyAxOS4zNSAxNy40NSAxOS44IDE4IDE5LjhaTTE4Ljg1IDIxLjk1QzE4LjczIDIxLjg0IDE4LjYgMjEuNzUgMTguNDYgMjEuNjlDMTguMTcgMjEuNTcgMTcuODMgMjEuNTcgMTcuNTQgMjEuNjlDMTcuNCAyMS43NSAxNy4yNyAyMS44NCAxNy4xNSAyMS45NUMxNi45MyAyMi4xOCAx'@; put 'Ni44IDIyLjQ4IDE2LjggMjIuOEMxNi44IDIzLjEyIDE2LjkzIDIzLjQyIDE3LjE1IDIzLjY1QzE3LjI3IDIzLjc2IDE3LjQgMjMuODUgMTcuNTQgMjMuOTFDMTcuNjkgMjMuOTcgMTcuODQgMjQgMTggMjRDMTguMTYgMjQgMTguMzEgMjMuOTcgMTguNDYgMjMuOTFDMTguNiAyMy44NSAxOC43'@; put 'MyAyMy43NiAxOC44NSAyMy42NUMxOS4wNyAyMy40MiAxOS4yIDIzLjEyIDE5LjIgMjIuOEMxOS4yIDIyLjY0IDE5LjE3IDIyLjQ5IDE5LjExIDIyLjM0QzE5LjA1IDIyLjIgMTguOTYgMjIuMDYgMTguODUgMjEuOTVaTTE4IDZDMTEuMzggNiA2IDExLjM4IDYgMThDNiAyNC42MiAxMS4zOCAz'@; put 'MCAxOCAzMEMyNC42MiAzMCAzMCAyNC42MiAzMCAxOEMzMCAxMS4zOCAyNC42MiA2IDE4IDZaTTE4IDI4QzEyLjQ5IDI4IDggMjMuNTEgOCAxOEM4IDEyLjQ5IDEyLjQ5IDggMTggOEMyMy41MSA4IDI4IDEyLjQ5IDI4IDE4QzI4IDIzLjUxIDIzLjUxIDI4IDE4IDI4WiIvPicsc29saWQ6Jzxw'@; put 'YXRoIGQ9Ik0xOCA2QzExLjM4IDYgNiAxMS4zOCA2IDE4QzYgMjQuNjIgMTEuMzggMzAgMTggMzBDMjQuNjIgMzAgMzAgMjQuNjIgMzAgMThDMzAgMTEuMzggMjQuNjIgNiAxOCA2Wk0xNi44IDEyLjY1QzE2LjggMTEuOTkgMTcuMzQgMTEuNDUgMTggMTEuNDVDMTguNjYgMTEuNDUgMTkuMiAx'@; put 'MS45OSAxOS4yIDEyLjY1VjE4LjQ1QzE5LjIgMTkuMTEgMTguNjYgMTkuNjUgMTggMTkuNjVDMTcuMzQgMTkuNjUgMTYuOCAxOS4xMSAxNi44IDE4LjQ1VjEyLjY1Wk0xOC45OCAyNC4xNUMxOC44NCAyNC4yOCAxOC42OSAyNC4zOCAxOC41MyAyNC40NUMxOC4zNSAyNC41MiAxOC4xOCAyNC41'@; put 'NiAxOCAyNC41NkMxNy44MiAyNC41NiAxNy42NCAyNC41MyAxNy40NiAyNC40NUMxNy4zMSAyNC4zOCAxNy4xNiAyNC4yOSAxNyAyNC4xNEMxNi43NCAyMy44NyAxNi41OSAyMy41MiAxNi41OSAyMy4xNUMxNi41OSAyMi43OCAxNi43MyAyMi40NCAxNyAyMi4xNUMxNy4xNCAyMi4wMiAxNy4y'@; put 'OSAyMS45MiAxNy40NSAyMS44NUMxNy42MiAyMS43OCAxNy44IDIxLjc0IDE3Ljk5IDIxLjc0QzE4LjE4IDIxLjc0IDE4LjM2IDIxLjc4IDE4LjUzIDIxLjg1QzE4LjY4IDIxLjkyIDE4LjgzIDIyLjAyIDE4Ljk4IDIyLjE1QzE5LjEgMjIuMjcgMTkuMjEgMjIuNDMgMTkuMjggMjIuNjFDMTku'@; put 'MzUgMjIuNzkgMTkuMzkgMjIuOTYgMTkuMzkgMjMuMTRDMTkuMzkgMjMuNSAxOS4yNSAyMy44NSAxOC45NyAyNC4xNEwxOC45OCAyNC4xNVoiLz4nfV0sa3A9WyJjaGVjay1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjIuNjEgMTQuMjJMMTYuMjUgMjAuNThMMTIuNzEgMTcuMDRDMTIu'@; put 'MzIgMTYuNjUgMTEuNjkgMTYuNjUgMTEuMyAxNy4wNEMxMC45MSAxNy40MyAxMC45MSAxOC4wNiAxMS4zIDE4LjQ1TDE2LjI1IDIzLjRMMjQuMDMgMTUuNjJDMjQuNDIgMTUuMjMgMjQuNDIgMTQuNiAyNC4wMyAxNC4yMUMyMy42NCAxMy44MiAyMy4wMSAxMy44MiAyMi42MiAxNC4yMUwyMi42'@; put 'MSAxNC4yMlpNMTggNkMxMS4zOCA2IDYgMTEuMzggNiAxOEM2IDI0LjYyIDExLjM4IDMwIDE4IDMwQzI0LjYyIDMwIDMwIDI0LjYyIDMwIDE4QzMwIDExLjM4IDI0LjYyIDYgMTggNlpNMTggMjhDMTIuNDkgMjggOCAyMy41MSA4IDE4QzggMTIuNDkgMTIuNDkgOCAxOCA4QzIzLjUxIDggMjgg'@; put 'MTIuNDkgMjggMThDMjggMjMuNTEgMjMuNTEgMjggMTggMjhaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4IDZDMTEuMzggNiA2IDExLjM4IDYgMThDNiAyNC42MiAxMS4zOCAzMCAxOCAzMEMyNC42MiAzMCAzMCAyNC42MiAzMCAxOEMzMCAxMS4zOCAyNC42MiA2IDE4IDZaTTI0LjE2IDE1Ljc4'@; put 'TDE2LjI0IDIzLjdMMTEuMTUgMTguNjFDMTAuNjggMTguMTQgMTAuNjggMTcuMzggMTEuMTUgMTYuOTFDMTEuNjIgMTYuNDQgMTIuMzggMTYuNDQgMTIuODUgMTYuOTFMMTYuMjQgMjAuM0wyMi40NiAxNC4wOEMyMi45MyAxMy42MSAyMy42OSAxMy42MSAyNC4xNiAxNC4wOEMyNC42MyAxNC41'@; put 'NSAyNC42MyAxNS4zMSAyNC4xNiAxNS43OFoiLz4nfV0sTlNlPVsiZWxsaXBzaXMtaG9yaXpvbnRhbCIse291dGxpbmU6JzxwYXRoIGQ9Ik03LjggMTguMUM3LjggMTkuNzU2OCA2LjUwMTYzIDIxLjEgNC45IDIxLjFDMy4yOTgzNyAyMS4xIDIgMTkuNzU2OCAyIDE4LjFDMiAxNi40NDMxIDMu'@; put 'Mjk4MzcgMTUuMSA0LjkgMTUuMUM2LjUwMTYzIDE1LjEgNy44IDE2LjQ0MzEgNy44IDE4LjFaIi8+PHBhdGggZD0iTTE4IDIxLjFDMTkuNjAxNiAyMS4xIDIwLjkgMTkuNzU2OCAyMC45IDE4LjFDMjAuOSAxNi40NDMxIDE5LjYwMTYgMTUuMSAxOCAxNS4xQzE2LjM5ODQgMTUuMSAxNS4xIDE2'@; put 'LjQ0MzEgMTUuMSAxOC4xQzE1LjEgMTkuNzU2OCAxNi4zOTg0IDIxLjEgMTggMjEuMVoiLz48cGF0aCBkPSJNMzEuMSAyMS4xQzMyLjcwMTYgMjEuMSAzNCAxOS43NTY4IDM0IDE4LjFDMzQgMTYuNDQzMSAzMi43MDE2IDE1LjEgMzEuMSAxNS4xQzI5LjQ5ODQgMTUuMSAyOC4yIDE2LjQ0MzEg'@; put 'MjguMiAxOC4xQzI4LjIgMTkuNzU2OCAyOS40OTg0IDIxLjEgMzEuMSAyMS4xWiIvPicsb3V0bGluZUJhZGdlZDonPHBhdGggZD0iTTQuOSAyMS4xQzYuNTAxNjMgMjEuMSA3LjggMTkuNzU2OCA3LjggMTguMUM3LjggMTYuNDQzMSA2LjUwMTYzIDE1LjEgNC45IDE1LjFDMy4yOTgzNyAxNS4x'@; put 'IDIgMTYuNDQzMSAyIDE4LjFDMiAxOS43NTY4IDMuMjk4MzcgMjEuMSA0LjkgMjEuMVoiLz48cGF0aCBkPSJNMTggMjEuMUMxOS42MDE2IDIxLjEgMjAuOSAxOS43NTY4IDIwLjkgMTguMUMyMC45IDE2LjQ0MzEgMTkuNjAxNiAxNS4xIDE4IDE1LjFDMTYuMzk4NCAxNS4xIDE1LjEgMTYuNDQz'@; put 'MSAxNS4xIDE4LjFDMTUuMSAxOS43NTY4IDE2LjM5ODQgMjEuMSAxOCAyMS4xWiIvPjxwYXRoIGQ9Ik0zNCAxOC4xQzM0IDE5Ljc1NjggMzIuNzAxNiAyMS4xIDMxLjEgMjEuMUMyOS40OTg0IDIxLjEgMjguMiAxOS43NTY4IDI4LjIgMTguMUMyOC4yIDE2LjQ0MzEgMjkuNDk4NCAxNS4xIDMx'@; put 'LjEgMTUuMUMzMi43MDE2IDE1LjEgMzQgMTYuNDQzMSAzNCAxOC4xWiIvPjxwYXRoIGQ9Ik0zMCAxMUMzMi43NjE0IDExIDM1IDguNzYxNDIgMzUgNkMzNSAzLjIzODU4IDMyLjc2MTQgMSAzMCAxQzI3LjIzODYgMSAyNSAzLjIzODU4IDI1IDZDMjUgOC43NjE0MiAyNy4yMzg2IDExIDMwIDEx'@; put 'WiIvPid9XSxjRD1bIndpbmRvdy1jbG9zZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOS40MSAxOC4wMDAzTDI2LjcgMTAuNzEwM0MyNy4wMzk4IDEwLjMxMzUgMjcuMDE2OSA5LjcyMjA3IDI2LjY0NzYgOS4zNTI3QzI2LjI3ODIgOC45ODMzMyAyNS42ODY4IDguOTYwNDkgMjUuMjkgOS4zMDAy'@; put 'NkwxOCAxNi41OTAzTDEwLjcxIDkuMjkwMjZDMTAuMzEzMiA4Ljk1MDQ5IDkuNzIxODEgOC45NzMzMyA5LjM1MjQ0IDkuMzQyN0M4Ljk4MzA3IDkuNzEyMDcgOC45NjAyMyAxMC4zMDM1IDkuMzAwMDEgMTAuNzAwM0wxNi41OSAxOC4wMDAzTDkuMjkwMDEgMjUuMjkwM0M5LjAwNDYzIDI1LjUz'@; put 'NDcgOC44ODAzMiAyNS45MTg0IDguOTY4MTkgMjYuMjgzN0M5LjA1NjA3IDI2LjY0OSA5LjM0MTI5IDI2LjkzNDIgOS43MDY1OSAyNy4wMjIxQzEwLjA3MTkgMjcuMTA5OSAxMC40NTU2IDI2Ljk4NTYgMTAuNyAyNi43MDAzTDE4IDE5LjQxMDNMMjUuMjkgMjYuNzAwM0MyNS42ODY4IDI3LjA0'@; put 'IDI2LjI3ODIgMjcuMDE3MiAyNi42NDc2IDI2LjY0NzhDMjcuMDE2OSAyNi4yNzg1IDI3LjAzOTggMjUuNjg3IDI2LjcgMjUuMjkwM0wxOS40MSAxOC4wMDAzWiIvPid9XSxBZ3Q9WyJpbmZvLWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0yMSAyM0gxOVYxNUgxNkMxNS40NSAxNSAxNSAx'@; put 'NS40NSAxNSAxNkMxNSAxNi41NSAxNS40NSAxNyAxNiAxN0gxN1YyM0gxNUMxNC40NSAyMyAxNCAyMy40NSAxNCAyNEMxNCAyNC41NSAxNC40NSAyNSAxNSAyNUgyMUMyMS41NSAyNSAyMiAyNC41NSAyMiAyNEMyMiAyMy40NSAyMS41NSAyMyAyMSAyM1pNMTcuOTMgMTMuM0MxOC43IDEzLjMg'@; put 'MTkuMzMgMTIuNjcgMTkuMzMgMTEuOUMxOS4zMyAxMS4xMyAxOC43IDEwLjUgMTcuOTMgMTAuNUMxNy4xNiAxMC41IDE2LjUzIDExLjEzIDE2LjUzIDExLjlDMTYuNTMgMTIuNjcgMTcuMTYgMTMuMyAxNy45MyAxMy4zWk0xOCA2QzExLjM4IDYgNiAxMS4zOCA2IDE4QzYgMjQuNjIgMTEuMzgg'@; put 'MzAgMTggMzBDMjQuNjIgMzAgMzAgMjQuNjIgMzAgMThDMzAgMTEuMzggMjQuNjIgNiAxOCA2Wk0xOCAyOEMxMi40OSAyOCA4IDIzLjUxIDggMThDOCAxMi40OSAxMi40OSA4IDE4IDhDMjMuNTEgOCAyOCAxMi40OSAyOCAxOEMyOCAyMy41MSAyMy41MSAyOCAxOCAyOFoiLz4nLHNvbGlkOic8'@; put 'cGF0aCBkPSJNMTggNkMxMS4zOCA2IDYgMTEuMzggNiAxOEM2IDI0LjYyIDExLjM4IDMwIDE4IDMwQzI0LjYyIDMwIDMwIDI0LjYyIDMwIDE4QzMwIDExLjM4IDI0LjYyIDYgMTggNlpNMTcuOTMgMTAuM0MxOC44MSAxMC4zIDE5LjUzIDExLjAyIDE5LjUzIDExLjlDMTkuNTMgMTIuNzggMTgu'@; put 'ODEgMTMuNSAxNy45MyAxMy41QzE3LjA1IDEzLjUgMTYuMzMgMTIuNzggMTYuMzMgMTEuOUMxNi4zMyAxMS4wMiAxNy4wNSAxMC4zIDE3LjkzIDEwLjNaTTIxIDI1LjJIMTVDMTQuMzQgMjUuMiAxMy44IDI0LjY2IDEzLjggMjRDMTMuOCAyMy4zNCAxNC4zNCAyMi44IDE1IDIyLjhIMTYuOFYx'@; put 'Ny4ySDE2QzE1LjM0IDE3LjIgMTQuOCAxNi42NiAxNC44IDE2QzE0LjggMTUuMzQgMTUuMzQgMTQuOCAxNiAxNC44SDE5LjJWMjIuOEgyMUMyMS42NiAyMi44IDIyLjIgMjMuMzQgMjIuMiAyNEMyMi4yIDI0LjY2IDIxLjY2IDI1LjIgMjEgMjUuMloiLz4nfV0sRlNlPVsidGltZXMiLHtvdXRs'@; put 'aW5lOic8cGF0aCBkPSJNMTkuNDY5NiAxNy45NzMyTDI3Ljc1OTYgOS43MDU0MkMyOC4wOTk0IDkuMzA5NzIgMjguMDc2NSA4LjcxOTg3IDI3LjcwNzEgOC4zNTE0OEMyNy4zMzc4IDcuOTgzMSAyNi43NDYzIDcuOTYwMzIgMjYuMzQ5NiA4LjI5OTE5TDE4LjA1OTYgMTYuNTY3TDkuNzY5NTgg'@; put 'OC4yODkyMkM5LjM3NzQ1IDcuODk4MTQgOC43NDE3IDcuODk4MTQgOC4zNDk1OCA4LjI4OTIyQzcuOTU3NDUgOC42ODAyOSA3Ljk1NzQ1IDkuMzE0MzQgOC4zNDk1OCA5LjcwNTQyTDE2LjY0OTYgMTcuOTczMkw4LjM0OTU4IDI2LjI0MUM4LjA2NDIgMjYuNDg0OCA3LjkzOTg5IDI2Ljg2NzUg'@; put 'OC4wMjc3NyAyNy4yMzE4QzguMTE1NjQgMjcuNTk2MSA4LjQwMDg2IDI3Ljg4MDYgOC43NjYxNiAyNy45NjgyQzkuMTMxNDYgMjguMDU1OSA5LjUxNTE5IDI3LjkzMTkgOS43NTk1OCAyNy42NDczTDE4LjA1OTYgMTkuMzc5NUwyNi4zNDk2IDI3LjY0NzNDMjYuNzQ2MyAyNy45ODYxIDI3LjMz'@; put 'NzggMjcuOTYzNCAyNy43MDcxIDI3LjU5NUMyOC4wNzY1IDI3LjIyNjYgMjguMDk5NCAyNi42MzY3IDI3Ljc1OTYgMjYuMjQxTDE5LjQ2OTYgMTcuOTczMloiLz4nfV0sUFNlPVsiYW5nbGUtZG91YmxlIix7b3V0bGluZTonPHBhdGggZD0iTTI4LjM0OTEgMTcuODk5NkMyOC41Mzg0IDE4LjA4'@; put 'MzcgMjguNzk0NSAxOC4xODYzIDI5LjA2MSAxOC4xODQ4QzI5LjQ2NCAxOC4xODMxIDI5LjgyNjggMTcuOTQ1MSAyOS45ODIxIDE3LjU4MDVDMzAuMTM3NCAxNy4yMTU4IDMwLjA1NSAxNi43OTU1IDI5Ljc3MjkgMTYuNTEzM0wxOC4wMzE4IDVMNi4zMDA2NyAxNi41MTMzQzUuOTU5OTkgMTYu'@; put 'OTAzNCA1Ljk4Mjg5IDE3LjQ4NDkgNi4zNTMyNSAxNy44NDgxQzYuNzIzNiAxOC4yMTEyIDcuMzE2NiAxOC4yMzM3IDcuNzE0NDIgMTcuODk5NkwxOC4wMzE4IDcuNzgyNDZMMjguMzQ5MSAxNy44OTk2WiIvPjxwYXRoIGQ9Ik0yOC4zNDkxIDI4LjcxNDlDMjguNTM4NCAyOC44OTg5IDI4Ljc5'@; put 'NDUgMjkuMDAxNSAyOS4wNjEgMjlDMjkuNDY0IDI4Ljk5ODQgMjkuODI2OCAyOC43NjAzIDI5Ljk4MjEgMjguMzk1N0MzMC4xMzc0IDI4LjAzMTEgMzAuMDU1IDI3LjYxMDcgMjkuNzcyOSAyNy4zMjg1TDE4LjAzMTggMTUuODE1Mkw2LjMwMDY3IDI3LjMyODVDNS45NTk5OSAyNy43MTg2IDUu'@; put 'OTgyODkgMjguMzAwMSA2LjM1MzI1IDI4LjY2MzNDNi43MjM2IDI5LjAyNjUgNy4zMTY2IDI5LjA0ODkgNy43MTQ0MiAyOC43MTQ5TDE4LjAzMTggMTguNTk3N0wyOC4zNDkxIDI4LjcxNDlaIi8+J31dLGtndD1bImV2ZW50Iix7b3V0bGluZTonPHBhdGggZD0iTTE2LjE3IDI1Ljg2TDEwLjgx'@; put 'IDIwLjVDMTAuNjQ2MiAyMC4zMDg3IDEwLjU2MDYgMjAuMDYyNiAxMC41NzAzIDE5LjgxMDlDMTAuNTggMTkuNTU5MyAxMC42ODQ0IDE5LjMyMDUgMTAuODYyNCAxOS4xNDI0QzExLjA0MDUgMTguOTY0MyAxMS4yNzkzIDE4Ljg2IDExLjUzMSAxOC44NTAzQzExLjc4MjYgMTguODQwNiAxMi4w'@; put 'Mjg3IDE4LjkyNjIgMTIuMjIgMTkuMDlMMTYuMTcgMjNMMjQuODEgMTQuMzZDMjUuMDAxMyAxNC4xOTYyIDI1LjI0NzQgMTQuMTEwNiAyNS40OTkxIDE0LjEyMDNDMjUuNzUwNyAxNC4xMyAyNS45ODk1IDE0LjIzNDMgMjYuMTY3NiAxNC40MTI0QzI2LjM0NTcgMTQuNTkwNSAyNi40NSAxNC44'@; put 'MjkzIDI2LjQ1OTcgMTUuMDgwOUMyNi40Njk0IDE1LjMzMjYgMjYuMzgzOCAxNS41Nzg3IDI2LjIyIDE1Ljc3TDE2LjE3IDI1Ljg2WiIvPjxwYXRoIGQ9Ik0zMi4yNSA2SDI5VjhIMzJWMzBINC4wMDAwMVY4SDcuMDAwMDFWNkgzLjc1MDAxQzMuNTE2MjUgNi4wMDM5MSAzLjI4NTU1IDYuMDUz'@; put 'ODMgMy4wNzEwOCA2LjE0NjkxQzIuODU2NjEgNi4yMzk5OSAyLjY2MjU4IDYuMzc0NDEgMi41MDAwNyA2LjU0MjQ5QzIuMzM3NTcgNi43MTA1NyAyLjIwOTc2IDYuOTA5MDIgMi4xMjM5NiA3LjEyNjVDMi4wMzgxNiA3LjM0Mzk4IDEuOTk2MDQgNy41NzYyNCAyLjAwMDAxIDcuODFWMzAuMTlD'@; put 'MS45OTYwNCAzMC40MjM4IDIuMDM4MTYgMzAuNjU2IDIuMTIzOTYgMzAuODczNUMyLjIwOTc2IDMxLjA5MSAyLjMzNzU3IDMxLjI4OTQgMi41MDAwNyAzMS40NTc1QzIuNjYyNTggMzEuNjI1NiAyLjg1NjYxIDMxLjc2IDMuMDcxMDggMzEuODUzMUMzLjI4NTU1IDMxLjk0NjIgMy41MTYyNSAz'@; put 'MS45OTYxIDMuNzUwMDEgMzJIMzIuMjVDMzIuNDgzOCAzMS45OTYxIDMyLjcxNDUgMzEuOTQ2MiAzMi45Mjg5IDMxLjg1MzFDMzMuMTQzNCAzMS43NiAzMy4zMzc0IDMxLjYyNTYgMzMuNSAzMS40NTc1QzMzLjY2MjUgMzEuMjg5NCAzMy43OTAzIDMxLjA5MSAzMy44NzYxIDMwLjg3MzVDMzMu'@; put 'OTYxOSAzMC42NTYgMzQuMDA0IDMwLjQyMzggMzQgMzAuMTlWNy44MUMzNC4wMDQgNy41NzYyNCAzMy45NjE5IDcuMzQzOTggMzMuODc2MSA3LjEyNjVDMzMuNzkwMyA2LjkwOTAyIDMzLjY2MjUgNi43MTA1NyAzMy41IDYuNTQyNDlDMzMuMzM3NCA2LjM3NDQxIDMzLjE0MzQgNi4yMzk5OSAz'@; put 'Mi45Mjg5IDYuMTQ2OTFDMzIuNzE0NSA2LjA1MzgzIDMyLjQ4MzggNi4wMDM5MSAzMi4yNSA2WiIvPjxwYXRoIGQ9Ik0xMCAxMEMxMC4yNjUyIDEwIDEwLjUxOTYgOS44OTQ2NCAxMC43MDcxIDkuNzA3MTFDMTAuODk0NyA5LjUxOTU3IDExIDkuMjY1MjIgMTEgOVYzQzExIDIuNzM0NzggMTAu'@; put 'ODk0NyAyLjQ4MDQzIDEwLjcwNzEgMi4yOTI4OUMxMC41MTk2IDIuMTA1MzYgMTAuMjY1MiAyIDEwIDJDOS43MzQ4IDIgOS40ODA0NCAyLjEwNTM2IDkuMjkyOTEgMi4yOTI4OUM5LjEwNTM3IDIuNDgwNDMgOS4wMDAwMSAyLjczNDc4IDkuMDAwMDEgM1Y5QzkuMDAwMDEgOS4yNjUyMiA5LjEw'@; put 'NTM3IDkuNTE5NTcgOS4yOTI5MSA5LjcwNzExQzkuNDgwNDQgOS44OTQ2NCA5LjczNDggMTAgMTAgMTBaIi8+PHBhdGggZD0iTTI2IDEwQzI2LjI2NTIgMTAgMjYuNTE5NiA5Ljg5NDY0IDI2LjcwNzEgOS43MDcxMUMyNi44OTQ3IDkuNTE5NTcgMjcgOS4yNjUyMiAyNyA5VjNDMjcgMi43MzQ3'@; put 'OCAyNi44OTQ3IDIuNDgwNDMgMjYuNzA3MSAyLjI5Mjg5QzI2LjUxOTYgMi4xMDUzNiAyNi4yNjUyIDIgMjYgMkMyNS43MzQ4IDIgMjUuNDgwNCAyLjEwNTM2IDI1LjI5MjkgMi4yOTI4OUMyNS4xMDU0IDIuNDgwNDMgMjUgMi43MzQ3OCAyNSAzVjlDMjUgOS4yNjUyMiAyNS4xMDU0IDkuNTE5'@; put 'NTcgMjUuMjkyOSA5LjcwNzExQzI1LjQ4MDQgOS44OTQ2NCAyNS43MzQ4IDEwIDI2IDEwWiIvPjxwYXRoIGQ9Ik0yMyA2SDEzVjhIMjNWNloiLz4nLG91dGxpbmVBbGVydGVkOic8cGF0aCBkPSJNMjYuOTAzOSAxLjY0NjIxTDIxLjIyMjIgMTEuMTE1OUMyMC45NTI2IDExLjQ5ODQgMjAuOTI4'@; put 'MSAxMS45OTQ5IDIxLjE1ODggMTIuNDAwNUMyMS4zODk2IDEyLjgwNiAyMS44MzYzIDEzLjA1MTkgMjIuMzE0OCAxMy4wMzY3SDMzLjY4ODFDMzQuMTY2NiAxMy4wNTE5IDM0LjYxMzQgMTIuODA2IDM0Ljg0NDEgMTIuNDAwNUMzNS4wNzQ4IDExLjk5NDkgMzUuMDUwMyAxMS40OTg0IDM0Ljc4'@; put 'MDggMTEuMTE1OUwyOS4wOTkxIDEuNjQ2MjFDMjguODcxMSAxLjI2OTEzIDI4LjQ1MzIgMS4wMzczNSAyOC4wMDE1IDEuMDM3MzVDMjcuNTQ5NyAxLjAzNzM1IDI3LjEzMTkgMS4yNjkxMyAyNi45MDM5IDEuNjQ2MjFaIi8+PHBhdGggZD0iTTMyIDE1LjAzNjdIMzMuNjYzN0MzMy43NzY0IDE1'@; put 'LjAzODkgMzMuODg4NiAxNS4wMzU0IDM0IDE1LjAyNjNWMzAuMTlDMzQuMDA0IDMwLjQyMzggMzMuOTYxOSAzMC42NTYgMzMuODc2MSAzMC44NzM1QzMzLjc5MDMgMzEuMDkxIDMzLjY2MjUgMzEuMjg5NCAzMy41IDMxLjQ1NzVDMzMuMzM3NCAzMS42MjU2IDMzLjE0MzQgMzEuNzYgMzIuOTI4'@; put 'OSAzMS44NTMxQzMyLjcxNDUgMzEuOTQ2MiAzMi40ODM4IDMxLjk5NjEgMzIuMjUgMzJIMy43NTAwMUMzLjUxNjI1IDMxLjk5NjEgMy4yODU1NSAzMS45NDYyIDMuMDcxMDggMzEuODUzMUMyLjg1NjYxIDMxLjc2IDIuNjYyNTggMzEuNjI1NiAyLjUwMDA3IDMxLjQ1NzVDMi4zMzc1NyAzMS4y'@; put 'ODk0IDIuMjA5NzYgMzEuMDkxIDIuMTIzOTYgMzAuODczNUMyLjAzODE2IDMwLjY1NiAxLjk5NjA0IDMwLjQyMzggMi4wMDAwMSAzMC4xOVY3LjgxQzEuOTk2MDQgNy41NzYyNCAyLjAzODE2IDcuMzQzOTggMi4xMjM5NiA3LjEyNjVDMi4yMDk3NiA2LjkwOTAyIDIuMzM3NTcgNi43MTA1NyAy'@; put 'LjUwMDA3IDYuNTQyNDlDMi42NjI1OCA2LjM3NDQxIDIuODU2NjEgNi4yMzk5OSAzLjA3MTA4IDYuMTQ2OTFDMy4yODU1NSA2LjA1MzgzIDMuNTE2MjUgNi4wMDM5MSAzLjc1MDAxIDZINy4wMDAwMVY4SDQuMDAwMDFWMzBIMzJWMTUuMDM2N1oiLz48cGF0aCBkPSJNMjQuMTMzMyAxNS4wMzY3'@; put 'SDI2LjQ1N0MyNi40NTgzIDE1LjA1MTQgMjYuNDU5MiAxNS4wNjYxIDI2LjQ1OTcgMTUuMDgwOUMyNi40Njk0IDE1LjMzMjYgMjYuMzgzOCAxNS41Nzg3IDI2LjIyIDE1Ljc3TDE2LjE3IDI1Ljg2TDEwLjgxIDIwLjVDMTAuNjQ2MiAyMC4zMDg3IDEwLjU2MDYgMjAuMDYyNiAxMC41NzAzIDE5'@; put 'LjgxMDlDMTAuNTggMTkuNTU5MyAxMC42ODQ0IDE5LjMyMDUgMTAuODYyNCAxOS4xNDI0QzExLjA0MDUgMTguOTY0MyAxMS4yNzkzIDE4Ljg2IDExLjUzMSAxOC44NTAzQzExLjc4MjYgMTguODQwNiAxMi4wMjg3IDE4LjkyNjIgMTIuMjIgMTkuMDlMMTYuMTcgMjNMMjQuMTMzMyAxNS4wMzY3'@; put 'WiIvPjxwYXRoIGQ9Ik0yMS45NTk0IDZMMjAuNzU5NCA4SDEzVjZIMjEuOTU5NFoiLz48cGF0aCBkPSJNMTAuNzA3MSA5LjcwNzExQzEwLjUxOTYgOS44OTQ2NCAxMC4yNjUyIDEwIDEwIDEwQzkuNzM0OCAxMCA5LjQ4MDQ0IDkuODk0NjQgOS4yOTI5MSA5LjcwNzExQzkuMTA1MzcgOS41MTk1'@; put 'NyA5LjAwMDAxIDkuMjY1MjIgOS4wMDAwMSA5VjNDOS4wMDAwMSAyLjczNDc4IDkuMTA1MzcgMi40ODA0MyA5LjI5MjkxIDIuMjkyODlDOS40ODA0NCAyLjEwNTM2IDkuNzM0OCAyIDEwIDJDMTAuMjY1MiAyIDEwLjUxOTYgMi4xMDUzNiAxMC43MDcxIDIuMjkyODlDMTAuODk0NyAyLjQ4MDQz'@; put 'IDExIDIuNzM0NzggMTEgM1Y5QzExIDkuMjY1MjIgMTAuODk0NyA5LjUxOTU3IDEwLjcwNzEgOS43MDcxMVoiLz4nLG91dGxpbmVCYWRnZWQ6JzxwYXRoIGQ9Ik0xMC44MSAyMC41TDE2LjE3IDI1Ljg2TDI2LjIyIDE1LjgxQzI2LjM4MzggMTUuNjE4NyAyNi40Njk0IDE1LjM3MjYgMjYuNDU5'@; put 'NyAxNS4xMjA5QzI2LjQ1IDE0Ljg2OTMgMjYuMzQ1NyAxNC42MzA1IDI2LjE2NzYgMTQuNDUyNEMyNS45ODk1IDE0LjI3NDMgMjUuNzUwNyAxNC4xNyAyNS40OTkxIDE0LjE2MDNDMjUuMjQ3NCAxNC4xNTA2IDI1LjAwMTMgMTQuMjM2MiAyNC44MSAxNC40TDE2LjE3IDIzTDEyLjIzIDE5LjA2'@; put 'QzEyLjAzODcgMTguODk2MiAxMS43OTI2IDE4LjgxMDYgMTEuNTQxIDE4LjgyMDNDMTEuMjg5MyAxOC44MyAxMS4wNTA1IDE4LjkzNDMgMTAuODcyNCAxOS4xMTI0QzEwLjY5NDQgMTkuMjkwNSAxMC41OSAxOS41MjkzIDEwLjU4MDMgMTkuNzgwOUMxMC41NzA2IDIwLjAzMjYgMTAuNjU2MiAy'@; put 'MC4yNzg3IDEwLjgyIDIwLjQ3TDEwLjgxIDIwLjVaIi8+PHBhdGggZD0iTTEwIDEwQzEwLjI2NTIgMTAgMTAuNTE5NiA5Ljg5NDY0IDEwLjcwNzEgOS43MDcxMUMxMC44OTQ3IDkuNTE5NTcgMTEgOS4yNjUyMiAxMSA5VjNDMTEgMi43MzQ3OCAxMC44OTQ3IDIuNDgwNDMgMTAuNzA3MSAyLjI5'@; put 'Mjg5QzEwLjUxOTYgMi4xMDUzNiAxMC4yNjUyIDIgMTAgMkM5LjczNDggMiA5LjQ4MDQ0IDIuMTA1MzYgOS4yOTI5MSAyLjI5Mjg5QzkuMTA1MzcgMi40ODA0MyA5LjAwMDAxIDIuNzM0NzggOS4wMDAwMSAzVjlDOS4wMDAwMSA5LjI2NTIyIDkuMTA1MzcgOS41MTk1NyA5LjI5MjkxIDkuNzA3'@; put 'MTFDOS40ODA0NCA5Ljg5NDY0IDkuNzM0OCAxMCAxMCAxMFoiLz48cGF0aCBkPSJNMzIgMTMuMjJWMzBINC4wMDAwMVY4SDcuMDAwMDFWNkgzLjc1MDAxQzMuNTE2MjUgNi4wMDM5MSAzLjI4NTU1IDYuMDUzODMgMy4wNzEwOCA2LjE0NjkxQzIuODU2NjEgNi4yMzk5OSAyLjY2MjU4IDYuMzc0'@; put 'NDEgMi41MDAwNyA2LjU0MjQ5QzIuMzM3NTcgNi43MTA1NyAyLjIwOTc2IDYuOTA5MDIgMi4xMjM5NiA3LjEyNjVDMi4wMzgxNiA3LjM0Mzk4IDEuOTk2MDQgNy41NzYyNCAyLjAwMDAxIDcuODFWMzAuMTlDMS45OTYwNCAzMC40MjM4IDIuMDM4MTYgMzAuNjU2IDIuMTIzOTYgMzAuODczNUMy'@; put 'LjIwOTc2IDMxLjA5MSAyLjMzNzU3IDMxLjI4OTQgMi41MDAwNyAzMS40NTc1QzIuNjYyNTggMzEuNjI1NiAyLjg1NjYxIDMxLjc2IDMuMDcxMDggMzEuODUzMUMzLjI4NTU1IDMxLjk0NjIgMy41MTYyNSAzMS45OTYxIDMuNzUwMDEgMzJIMzIuMjVDMzIuNDgzOCAzMS45OTYxIDMyLjcxNDUg'@; put 'MzEuOTQ2MiAzMi45Mjg5IDMxLjg1MzFDMzMuMTQzNCAzMS43NiAzMy4zMzc0IDMxLjYyNTYgMzMuNSAzMS40NTc1QzMzLjY2MjUgMzEuMjg5NCAzMy43OTAzIDMxLjA5MSAzMy44NzYxIDMwLjg3MzVDMzMuOTYxOSAzMC42NTYgMzQuMDA0IDMwLjQyMzggMzQgMzAuMTlWMTIuMzRDMzMuMzgw'@; put 'MiAxMi43MyAzMi43MDYzIDEzLjAyNjYgMzIgMTMuMjJaIi8+PHBhdGggZD0iTTIyLjUgNkgxM1Y4SDIyLjc4QzIyLjU5NjggNy4zNDkwMyAyMi41MDI2IDYuNjc2MjUgMjIuNSA2WiIvPjxwYXRoIGQ9Ik0zMCAxMUMzMi43NjE0IDExIDM1IDguNzYxNDIgMzUgNkMzNSAzLjIzODU4IDMyLjc2'@; put 'MTQgMSAzMCAxQzI3LjIzODYgMSAyNSAzLjIzODU4IDI1IDZDMjUgOC43NjE0MiAyNy4yMzg2IDExIDMwIDExWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xMCAxMEMxMC4yNjUyIDEwIDEwLjUxOTYgOS44OTQ2NCAxMC43MDcxIDkuNzA3MTFDMTAuODk0NyA5LjUxOTU3IDExIDkuMjY1MjIgMTEg'@; put 'OVYzQzExIDIuNzM0NzggMTAuODk0NyAyLjQ4MDQzIDEwLjcwNzEgMi4yOTI4OUMxMC41MTk2IDIuMTA1MzYgMTAuMjY1MiAyIDEwIDJDOS43MzQ4IDIgOS40ODA0NCAyLjEwNTM2IDkuMjkyOTEgMi4yOTI4OUM5LjEwNTM3IDIuNDgwNDMgOS4wMDAwMSAyLjczNDc4IDkuMDAwMDEgM1Y5Qzku'@; put 'MDAwMDEgOS4yNjUyMiA5LjEwNTM3IDkuNTE5NTcgOS4yOTI5MSA5LjcwNzExQzkuNDgwNDQgOS44OTQ2NCA5LjczNDggMTAgMTAgMTBaIi8+PHBhdGggZD0iTTI2IDEwQzI2LjI2NTIgMTAgMjYuNTE5NiA5Ljg5NDY0IDI2LjcwNzEgOS43MDcxMUMyNi44OTQ3IDkuNTE5NTcgMjcgOS4yNjUy'@; put 'MiAyNyA5VjNDMjcgMi43MzQ3OCAyNi44OTQ3IDIuNDgwNDMgMjYuNzA3MSAyLjI5Mjg5QzI2LjUxOTYgMi4xMDUzNiAyNi4yNjUyIDIgMjYgMkMyNS43MzQ4IDIgMjUuNDgwNCAyLjEwNTM2IDI1LjI5MjkgMi4yOTI4OUMyNS4xMDU0IDIuNDgwNDMgMjUgMi43MzQ3OCAyNSAzVjlDMjUgOS4y'@; put 'NjUyMiAyNS4xMDU0IDkuNTE5NTcgMjUuMjkyOSA5LjcwNzExQzI1LjQ4MDQgOS44OTQ2NCAyNS43MzQ4IDEwIDI2IDEwWiIvPjxwYXRoIGQ9Ik0zMi4yNSA2SDI4LjI1VjlDMjguMjUgOS41ODM0OCAyOC4wMTgyIDEwLjE0MzEgMjcuNjA1NiAxMC41NTU2QzI3LjE5MzEgMTAuOTY4MiAyNi42'@; put 'MzM1IDExLjIgMjYuMDUgMTEuMkMyNS40NjY1IDExLjIgMjQuOTA3IDEwLjk2ODIgMjQuNDk0NCAxMC41NTU2QzI0LjA4MTggMTAuMTQzMSAyMy44NSA5LjU4MzQ4IDIzLjg1IDlWNkgxMi4yVjlDMTIuMiA5LjU4MzQ4IDExLjk2ODIgMTAuMTQzMSAxMS41NTU2IDEwLjU1NTZDMTEuMTQzMSAx'@; put 'MC45NjgyIDEwLjU4MzUgMTEuMiAxMCAxMS4yQzkuNDE2NTQgMTEuMiA4Ljg1Njk2IDEwLjk2ODIgOC40NDQzOCAxMC41NTU2QzguMDMxOCAxMC4xNDMxIDcuODAwMDEgOS41ODM0OCA3LjgwMDAxIDlWNkgzLjgwMDAxQzMuNTYyMDQgNS45OTcyOSAzLjMyNTkzIDYuMDQyMzMgMy4xMDU2NyA2'@; put 'LjEzMjQ2QzIuODg1NCA2LjIyMjU5IDIuNjg1NDUgNi4zNTU5NyAyLjUxNzYzIDYuNTI0NzNDMi4zNDk4MSA2LjY5MzQ4IDIuMjE3NTMgNi44OTQxNyAyLjEyODYzIDcuMTE0OTNDMi4wMzk3MiA3LjMzNTY5IDEuOTk1OTkgNy41NzIwNCAyLjAwMDAxIDcuODFWMzAuMTlDMS45OTYwNCAzMC40'@; put 'MjM4IDIuMDM4MTYgMzAuNjU2IDIuMTIzOTYgMzAuODczNUMyLjIwOTc2IDMxLjA5MSAyLjMzNzU3IDMxLjI4OTQgMi41MDAwNyAzMS40NTc1QzIuNjYyNTggMzEuNjI1NiAyLjg1NjYxIDMxLjc2IDMuMDcxMDggMzEuODUzMUMzLjI4NTU1IDMxLjk0NjIgMy41MTYyNSAzMS45OTYxIDMuNzUw'@; put 'MDEgMzJIMzIuMjVDMzIuNDgzOCAzMS45OTYxIDMyLjcxNDUgMzEuOTQ2MiAzMi45Mjg5IDMxLjg1MzFDMzMuMTQzNCAzMS43NiAzMy4zMzc0IDMxLjYyNTYgMzMuNSAzMS40NTc1QzMzLjY2MjUgMzEuMjg5NCAzMy43OTAzIDMxLjA5MSAzMy44NzYxIDMwLjg3MzVDMzMuOTYxOSAzMC42NTYg'@; put 'MzQuMDA0IDMwLjQyMzggMzQgMzAuMTlWNy44MUMzNC4wMDQgNy41NzYyNCAzMy45NjE5IDcuMzQzOTggMzMuODc2MSA3LjEyNjVDMzMuNzkwMyA2LjkwOTAyIDMzLjY2MjUgNi43MTA1NyAzMy41IDYuNTQyNDlDMzMuMzM3NCA2LjM3NDQxIDMzLjE0MzQgNi4yMzk5OSAzMi45Mjg5IDYuMTQ2'@; put 'OTFDMzIuNzE0NSA2LjA1MzgzIDMyLjQ4MzggNi4wMDM5MSAzMi4yNSA2Wk0yNS45NCAxNi41OEwxNi4yNyAyNi4yNUwxMSAyMC45NEMxMC43NjY1IDIwLjY4MzIgMTAuNjQwMSAyMC4zNDY5IDEwLjY0NjUgMTkuOTk5OUMxMC42NTI5IDE5LjY1MjkgMTAuNzkxOCAxOS4zMjE1IDExLjAzNDYg'@; put 'MTkuMDczNUMxMS4yNzc1IDE4LjgyNTUgMTEuNjA1OSAxOC42Nzk4IDExLjk1MjcgMTguNjY2MUMxMi4yOTk1IDE4LjY1MjUgMTIuNjM4NCAxOC43NzE5IDEyLjkgMTlMMTYuMjggMjIuMzhMMjQgMTQuNjZDMjQuMTI2NyAxNC41MzMzIDI0LjI3NzIgMTQuNDMyNyAyNC40NDI4IDE0LjM2NDJD'@; put 'MjQuNjA4MyAxNC4yOTU2IDI0Ljc4NTggMTQuMjYwMyAyNC45NjUgMTQuMjYwM0MyNS4xNDQyIDE0LjI2MDMgMjUuMzIxNyAxNC4yOTU2IDI1LjQ4NzMgMTQuMzY0MkMyNS42NTI4IDE0LjQzMjcgMjUuODAzMyAxNC41MzMzIDI1LjkzIDE0LjY2QzI2LjA1NjcgMTQuNzg2NyAyNi4xNTczIDE0'@; put 'LjkzNzIgMjYuMjI1OCAxNS4xMDI3QzI2LjI5NDQgMTUuMjY4MyAyNi4zMjk3IDE1LjQ0NTggMjYuMzI5NyAxNS42MjVDMjYuMzI5NyAxNS44MDQyIDI2LjI5NDQgMTUuOTgxNyAyNi4yMjU4IDE2LjE0NzNDMjYuMTU3MyAxNi4zMTI4IDI2LjA1NjcgMTYuNDYzMyAyNS45MyAxNi41OUwyNS45'@; put 'NCAxNi41OFoiLz4nLHNvbGlkQWxlcnRlZDonPHBhdGggZD0iTTI2LjkwMzkgMS42NDYyMUwyMS4yMjIyIDExLjExNTlDMjAuOTUyNiAxMS40OTg0IDIwLjkyODEgMTEuOTk0OSAyMS4xNTg4IDEyLjQwMDVDMjEuMzg5NiAxMi44MDYgMjEuODM2MyAxMy4wNTE5IDIyLjMxNDggMTMuMDM2N0gz'@; put 'My42ODgxQzM0LjE2NjYgMTMuMDUxOSAzNC42MTM0IDEyLjgwNiAzNC44NDQxIDEyLjQwMDVDMzUuMDc0OCAxMS45OTQ5IDM1LjA1MDMgMTEuNDk4NCAzNC43ODA4IDExLjExNTlMMjkuMDk5MSAxLjY0NjIxQzI4Ljg3MTEgMS4yNjkxMyAyOC40NTMyIDEuMDM3MzUgMjguMDAxNSAxLjAzNzM1'@; put 'QzI3LjU0OTcgMS4wMzczNSAyNy4xMzE5IDEuMjY5MTMgMjYuOTAzOSAxLjY0NjIxWiIvPjxwYXRoIGQ9Ik0yMS45NTk0IDZIMTIuMlY5QzEyLjIgOS41ODM0OCAxMS45NjgyIDEwLjE0MzEgMTEuNTU1NiAxMC41NTU2QzExLjE0MzEgMTAuOTY4MiAxMC41ODM1IDExLjIgMTAgMTEuMkM5LjQx'@; put 'NjU0IDExLjIgOC44NTY5NiAxMC45NjgyIDguNDQ0MzggMTAuNTU1NkM4LjAzMTggMTAuMTQzMSA3LjgwMDAxIDkuNTgzNDggNy44MDAwMSA5VjZIMy44MDAwMUMzLjU2MjA0IDUuOTk3MjkgMy4zMjU5MyA2LjA0MjMzIDMuMTA1NjcgNi4xMzI0NkMyLjg4NTQgNi4yMjI1OSAyLjY4NTQ1IDYu'@; put 'MzU1OTcgMi41MTc2MyA2LjUyNDczQzIuMzQ5ODEgNi42OTM0OCAyLjIxNzUzIDYuODk0MTcgMi4xMjg2MyA3LjExNDkzQzIuMDM5NzIgNy4zMzU2OSAxLjk5NTk5IDcuNTcyMDQgMi4wMDAwMSA3LjgxVjMwLjE5QzEuOTk2MDQgMzAuNDIzOCAyLjAzODE2IDMwLjY1NiAyLjEyMzk2IDMwLjg3'@; put 'MzVDMi4yMDk3NiAzMS4wOTEgMi4zMzc1NyAzMS4yODk0IDIuNTAwMDcgMzEuNDU3NUMyLjY2MjU4IDMxLjYyNTYgMi44NTY2MSAzMS43NiAzLjA3MTA4IDMxLjg1MzFDMy4yODU1NSAzMS45NDYyIDMuNTE2MjUgMzEuOTk2MSAzLjc1MDAxIDMySDMyLjI1QzMyLjQ4MzggMzEuOTk2MSAzMi43'@; put 'MTQ1IDMxLjk0NjIgMzIuOTI4OSAzMS44NTMxQzMzLjE0MzQgMzEuNzYgMzMuMzM3NCAzMS42MjU2IDMzLjUgMzEuNDU3NUMzMy42NjI1IDMxLjI4OTQgMzMuNzkwMyAzMS4wOTEgMzMuODc2MSAzMC44NzM1QzMzLjk2MTkgMzAuNjU2IDM0LjAwNCAzMC40MjM4IDM0IDMwLjE5VjE1LjAyNjND'@; put 'MzMuODg4NiAxNS4wMzU0IDMzLjc3NjQgMTUuMDM4OSAzMy42NjM3IDE1LjAzNjdIMjYuMTk2NEMyNi4yMDY4IDE1LjA1ODQgMjYuMjE2NiAxNS4wODA0IDI2LjIyNTggMTUuMTAyN0MyNi4yOTQ0IDE1LjI2ODMgMjYuMzI5NyAxNS40NDU4IDI2LjMyOTcgMTUuNjI1QzI2LjMyOTcgMTUuODA0'@; put 'MiAyNi4yOTQ0IDE1Ljk4MTcgMjYuMjI1OCAxNi4xNDczQzI2LjE1NzMgMTYuMzEyOCAyNi4wNTY3IDE2LjQ2MzMgMjUuOTMgMTYuNTlMMTYuMjcgMjYuMjVMMTEgMjAuOTRDMTAuNzY2NSAyMC42ODMyIDEwLjY0MDEgMjAuMzQ2OSAxMC42NDY1IDE5Ljk5OTlDMTAuNjUyOSAxOS42NTI5IDEw'@; put 'Ljc5MTggMTkuMzIxNSAxMS4wMzQ2IDE5LjA3MzVDMTEuMjc3NSAxOC44MjU1IDExLjYwNTkgMTguNjc5OCAxMS45NTI3IDE4LjY2NjFDMTIuMjk5NSAxOC42NTI1IDEyLjYzODQgMTguNzcxOSAxMi45IDE5TDE2LjI4IDIyLjM4TDIzLjYyMzMgMTUuMDM2N0gyMi4zMzk1QzIxLjE1NzcgMTUu'@; put 'MDYwNCAyMC4wMjMzIDE0LjQ0ODkgMTkuNDIwNiAxMy4zODkzQzE4LjgyMDQgMTIuMzM0MiAxOC44NzAzIDExLjA0MjMgMTkuNTM2MiAxMC4wMzg3TDIxLjk1OTQgNloiLz48cGF0aCBkPSJNMTAgMTBDMTAuMjY1MiAxMCAxMC41MTk2IDkuODk0NjQgMTAuNzA3MSA5LjcwNzExQzEwLjg5NDcg'@; put 'OS41MTk1NyAxMSA5LjI2NTIyIDExIDlWM0MxMSAyLjczNDc4IDEwLjg5NDcgMi40ODA0MyAxMC43MDcxIDIuMjkyODlDMTAuNTE5NiAyLjEwNTM2IDEwLjI2NTIgMiAxMCAyQzkuNzM0OCAyIDkuNDgwNDQgMi4xMDUzNiA5LjI5MjkxIDIuMjkyODlDOS4xMDUzNyAyLjQ4MDQzIDkuMDAwMDEg'@; put 'Mi43MzQ3OCA5LjAwMDAxIDNWOUM5LjAwMDAxIDkuMjY1MjIgOS4xMDUzNyA5LjUxOTU3IDkuMjkyOTEgOS43MDcxMUM5LjQ4MDQ0IDkuODk0NjQgOS43MzQ4IDEwIDEwIDEwWiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGQ9Ik0xMCAxMEMxMC4yNjUyIDEwIDEwLjUxOTYgOS44OTQ2NCAxMC43'@; put 'MDcxIDkuNzA3MTFDMTAuODk0NyA5LjUxOTU3IDExIDkuMjY1MjIgMTEgOVYzQzExIDIuNzM0NzggMTAuODk0NyAyLjQ4MDQzIDEwLjcwNzEgMi4yOTI4OUMxMC41MTk2IDIuMTA1MzYgMTAuMjY1MiAyIDEwIDJDOS43MzQ4IDIgOS40ODA0NCAyLjEwNTM2IDkuMjkyOTEgMi4yOTI4OUM5LjEw'@; put 'NTM3IDIuNDgwNDMgOS4wMDAwMSAyLjczNDc4IDkuMDAwMDEgM1Y5QzkuMDAwMDEgOS4yNjUyMiA5LjEwNTM3IDkuNTE5NTcgOS4yOTI5MSA5LjcwNzExQzkuNDgwNDQgOS44OTQ2NCA5LjczNDggMTAgMTAgMTBaIi8+PHBhdGggZD0iTTMwIDEzLjVDMjguMDEwOSAxMy41IDI2LjEwMzIgMTIu'@; put 'NzA5OCAyNC42OTY3IDExLjMwMzNDMjMuMjkwMiA5Ljg5Njc4IDIyLjUgNy45ODkxMiAyMi41IDZIMTIuMlY5QzEyLjIgOS41ODM0OCAxMS45NjgyIDEwLjE0MzEgMTEuNTU1NiAxMC41NTU2QzExLjE0MzEgMTAuOTY4MiAxMC41ODM1IDExLjIgMTAgMTEuMkM5LjQxNjU0IDExLjIgOC44NTY5'@; put 'NiAxMC45NjgyIDguNDQ0MzggMTAuNTU1NkM4LjAzMTggMTAuMTQzMSA3LjgwMDAxIDkuNTgzNDggNy44MDAwMSA5VjZIMy44MDAwMUMzLjU2MjA0IDUuOTk3MjkgMy4zMjU5MyA2LjA0MjMzIDMuMTA1NjcgNi4xMzI0NkMyLjg4NTQgNi4yMjI1OSAyLjY4NTQ1IDYuMzU1OTcgMi41MTc2MyA2'@; put 'LjUyNDczQzIuMzQ5ODEgNi42OTM0OCAyLjIxNzUzIDYuODk0MTcgMi4xMjg2MyA3LjExNDkzQzIuMDM5NzIgNy4zMzU2OSAxLjk5NTk5IDcuNTcyMDQgMi4wMDAwMSA3LjgxVjMwLjE5QzEuOTk2MDQgMzAuNDIzOCAyLjAzODE2IDMwLjY1NiAyLjEyMzk2IDMwLjg3MzVDMi4yMDk3NiAzMS4w'@; put 'OTEgMi4zMzc1NyAzMS4yODk0IDIuNTAwMDcgMzEuNDU3NUMyLjY2MjU4IDMxLjYyNTYgMi44NTY2MSAzMS43NiAzLjA3MTA4IDMxLjg1MzFDMy4yODU1NSAzMS45NDYyIDMuNTE2MjUgMzEuOTk2MSAzLjc1MDAxIDMySDMyLjI1QzMyLjQ4MzggMzEuOTk2MSAzMi43MTQ1IDMxLjk0NjIgMzIu'@; put 'OTI4OSAzMS44NTMxQzMzLjE0MzQgMzEuNzYgMzMuMzM3NCAzMS42MjU2IDMzLjUgMzEuNDU3NUMzMy42NjI1IDMxLjI4OTQgMzMuNzkwMyAzMS4wOTEgMzMuODc2MSAzMC44NzM1QzMzLjk2MTkgMzAuNjU2IDM0LjAwNCAzMC40MjM4IDM0IDMwLjE5VjEyLjM0QzMyLjgwNDEgMTMuMDk5MSAz'@; put 'MS40MTY1IDEzLjUwMTUgMzAgMTMuNVpNMjUuOTQgMTYuNThMMTYuMjcgMjYuMjVMMTEgMjAuOTRDMTAuNzY2NSAyMC42ODMyIDEwLjY0MDEgMjAuMzQ2OSAxMC42NDY1IDE5Ljk5OTlDMTAuNjUyOSAxOS42NTI5IDEwLjc5MTggMTkuMzIxNSAxMS4wMzQ2IDE5LjA3MzVDMTEuMjc3NSAxOC44'@; put 'MjU1IDExLjYwNTkgMTguNjc5OCAxMS45NTI3IDE4LjY2NjFDMTIuMjk5NSAxOC42NTI1IDEyLjYzODQgMTguNzcxOSAxMi45IDE5TDE2LjI4IDIyLjM4TDI0IDE0LjY2QzI0LjEyNjcgMTQuNTMzMyAyNC4yNzcyIDE0LjQzMjcgMjQuNDQyOCAxNC4zNjQyQzI0LjYwODMgMTQuMjk1NiAyNC43'@; put 'ODU4IDE0LjI2MDMgMjQuOTY1IDE0LjI2MDNDMjUuMTQ0MiAxNC4yNjAzIDI1LjMyMTcgMTQuMjk1NiAyNS40ODczIDE0LjM2NDJDMjUuNjUyOCAxNC40MzI3IDI1LjgwMzMgMTQuNTMzMyAyNS45MyAxNC42NkMyNi4wNTY3IDE0Ljc4NjcgMjYuMTU3MyAxNC45MzcyIDI2LjIyNTggMTUuMTAy'@; put 'N0MyNi4yOTQ0IDE1LjI2ODMgMjYuMzI5NyAxNS40NDU4IDI2LjMyOTcgMTUuNjI1QzI2LjMyOTcgMTUuODA0MiAyNi4yOTQ0IDE1Ljk4MTcgMjYuMjI1OCAxNi4xNDczQzI2LjE1NzMgMTYuMzEyOCAyNi4wNTY3IDE2LjQ2MzMgMjUuOTMgMTYuNTlMMjUuOTQgMTYuNThaIi8+PHBhdGggZD0i'@; put 'TTMwIDExQzMyLjc2MTQgMTEgMzUgOC43NjE0MiAzNSA2QzM1IDMuMjM4NTggMzIuNzYxNCAxIDMwIDFDMjcuMjM4NiAxIDI1IDMuMjM4NTggMjUgNkMyNSA4Ljc2MTQyIDI3LjIzODYgMTEgMzAgMTFaIi8+J31dLFJndD1bImNhbGVuZGFyIix7b3V0bGluZTonPHBhdGggZD0iTTIyIDIwSDIw'@; put 'VjIySDIyVjIwWk0yMCAyNkgyMlYyNEgyMFYyNlpNMjggMjRIMjZWMjZIMjhWMjRaTTI4IDIwSDI2VjIySDI4VjIwWk0yNyAxMkMyNy41NSAxMiAyOCAxMS41NSAyOCAxMVY1QzI4IDQuNDUgMjcuNTUgNCAyNyA0QzI2LjQ1IDQgMjYgNC40NSAyNiA1VjExQzI2IDExLjU1IDI2LjQ1IDEyIDI3'@; put 'IDEyWk0yMiAxNkgyMFYxOEgyMlYxNlpNMjggMTZIMjZWMThIMjhWMTZaTTI0IDhIMTJWMTBIMjRWOFpNMTAgMTZIOFYxOEgxMFYxNlpNMTAgMjBIOFYyMkgxMFYyMFpNMTAgMjRIOFYyNkgxMFYyNFpNMzMuNSA4LjU0QzMzLjE3IDguMiAzMi43MiA4LjAxIDMyLjI1IDhIMzBWMTBIMzJWMzBI'@; put 'NFYxMEg2VjhIMy43NUMzLjI4IDggMi44MyA4LjIgMi41IDguNTRDMi4xNyA4Ljg4IDIgOS4zNCAyIDkuODFWMzAuMTlDMiAzMC42NiAyLjE3IDMxLjEyIDIuNSAzMS40NkMyLjgzIDMxLjggMy4yOCAzMS45OSAzLjc1IDMySDMyLjI1QzMyLjcyIDMyIDMzLjE3IDMxLjggMzMuNSAzMS40NkMz'@; put 'My44MyAzMS4xMiAzNC4wMSAzMC42NiAzNCAzMC4xOVY5LjgxQzM0IDkuMzQgMzMuODMgOC44OCAzMy41IDguNTRaTTE0IDI2SDE2VjI0SDE0VjI2Wk0xNiAyMEgxNFYyMkgxNlYyMFpNMTYgMTZIMTRWMThIMTZWMTZaTTkgMTJDOS41NSAxMiAxMCAxMS41NSAxMCAxMVY1QzEwIDQuNDUgOS41'@; put 'NSA0IDkgNEM4LjQ1IDQgOCA0LjQ1IDggNVYxMUM4IDExLjU1IDguNDUgMTIgOSAxMloiLz4nLG91dGxpbmVBbGVydGVkOic8cGF0aCBkPSJNMjYuOTAzOSAxLjY0NjIxTDIxLjIyMjIgMTEuMTE1OUMyMC45NTI2IDExLjQ5ODQgMjAuOTI4MSAxMS45OTQ5IDIxLjE1ODggMTIuNDAwNUMyMS4z'@; put 'ODk2IDEyLjgwNiAyMS44MzYzIDEzLjA1MTkgMjIuMzE0OCAxMy4wMzY3SDMzLjY4ODFDMzQuMTY2NiAxMy4wNTE5IDM0LjYxMzQgMTIuODA2IDM0Ljg0NDEgMTIuNDAwNUMzNS4wNzQ4IDExLjk5NDkgMzUuMDUwMyAxMS40OTg0IDM0Ljc4MDggMTEuMTE1OUwyOS4wOTkxIDEuNjQ2MjFDMjgu'@; put 'ODcxMSAxLjI2OTEzIDI4LjQ1MzIgMS4wMzczNSAyOC4wMDE1IDEuMDM3MzVDMjcuNTQ5NyAxLjAzNzM1IDI3LjEzMTkgMS4yNjkxMyAyNi45MDM5IDEuNjQ2MjFaIi8+PHBhdGggZD0iTTMyIDE1LjAzNjdIMzMuNjYzN0MzMy43NzYzIDE1LjAzODkgMzMuODg4NiAxNS4wMzU0IDM0IDE1LjAy'@; put 'NjNWMzAuMTlDMzQuMDEgMzAuNjYgMzMuODMgMzEuMTIgMzMuNSAzMS40NkMzMy4xNyAzMS44IDMyLjcyIDMyIDMyLjI1IDMySDMuNzVDMy4yOCAzMS45OSAyLjgzIDMxLjggMi41IDMxLjQ2QzIuMTcgMzEuMTIgMiAzMC42NiAyIDMwLjE5VjkuODFDMiA5LjM0IDIuMTcgOC44OCAyLjUgOC41'@; put 'NEMyLjgzIDguMiAzLjI4IDggMy43NSA4SDZWMTBINFYzMEgzMlYxNS4wMzY3WiIvPjxwYXRoIGQ9Ik0yMC43NTk0IDhMMTkuNTU5NCAxMEgxMlY4SDIwLjc1OTRaIi8+PHBhdGggZD0iTTIwIDIwSDIyVjIySDIwVjIwWiIvPjxwYXRoIGQ9Ik0yMiAyNkgyMFYyNEgyMlYyNloiLz48cGF0aCBk'@; put 'PSJNMjYgMjZWMjRIMjhWMjZIMjZaIi8+PHBhdGggZD0iTTI2IDIyVjIwSDI4VjIySDI2WiIvPjxwYXRoIGQ9Ik0yMCAxNkgyMlYxOEgyMFYxNloiLz48cGF0aCBkPSJNMjYgMThWMTZIMjhWMThIMjZaIi8+PHBhdGggZD0iTTggMTZIMTBWMThIOFYxNloiLz48cGF0aCBkPSJNOCAyMEgxMFYy'@; put 'Mkg4VjIwWiIvPjxwYXRoIGQ9Ik04IDI0SDEwVjI2SDhWMjRaIi8+PHBhdGggZD0iTTE2IDI2SDE0VjI0SDE2VjI2WiIvPjxwYXRoIGQ9Ik0xNCAyMEgxNlYyMkgxNFYyMFoiLz48cGF0aCBkPSJNMTQgMTZIMTZWMThIMTRWMTZaIi8+PHBhdGggZD0iTTEwIDExQzEwIDExLjU1IDkuNTUgMTIg'@; put 'OSAxMkM4LjQ1IDEyIDggMTEuNTUgOCAxMVY1QzggNC40NSA4LjQ1IDQgOSA0QzkuNTUgNCAxMCA0LjQ1IDEwIDVWMTFaIi8+JyxvdXRsaW5lQmFkZ2VkOic8cGF0aCBkPSJNMzAgMTFDMzIuNzYxNCAxMSAzNSA4Ljc2MTQyIDM1IDZDMzUgMy4yMzg1OCAzMi43NjE0IDEgMzAgMUMyNy4yMzg2'@; put 'IDEgMjUgMy4yMzg1OCAyNSA2QzI1IDguNzYxNDIgMjcuMjM4NiAxMSAzMCAxMVoiLz48cGF0aCBkPSJNMjMuMjg5OSA4QzIzLjQ1OTQgOC41Njk2MyAyMy42OTk1IDkuMTA4ODcgMjQgOS42MDc1OVYxMEgxMlY4SDIzLjI4OTlaIi8+PHBhdGggZD0iTTM0IDExLjc0NTNDMzMuMzk2IDEyLjE2'@; put 'NjYgMzIuNzIyNCAxMi40OTUxIDMyIDEyLjcxMDFWMzBINFYxMEg2VjhIMy43NUMzLjI4IDggMi44MyA4LjIgMi41IDguNTRDMi4xNyA4Ljg4IDIgOS4zNCAyIDkuODFWMzAuMTlDMiAzMC42NiAyLjE3IDMxLjEyIDIuNSAzMS40NkMyLjgzIDMxLjggMy4yOCAzMS45OSAzLjc1IDMySDMyLjI1'@; put 'QzMyLjcyIDMyIDMzLjE3IDMxLjggMzMuNSAzMS40NkMzMy44MyAzMS4xMiAzNC4wMSAzMC42NiAzNCAzMC4xOVYxMS43NDUzWiIvPjxwYXRoIGQ9Ik0yMCAyMEgyMlYyMkgyMFYyMFoiLz48cGF0aCBkPSJNMjIgMjZIMjBWMjRIMjJWMjZaIi8+PHBhdGggZD0iTTI2IDI2VjI0SDI4VjI2SDI2'@; put 'WiIvPjxwYXRoIGQ9Ik0yNiAyMlYyMEgyOFYyMkgyNloiLz48cGF0aCBkPSJNMjAgMTZIMjJWMThIMjBWMTZaIi8+PHBhdGggZD0iTTI2IDE4VjE2SDI4VjE4SDI2WiIvPjxwYXRoIGQ9Ik04IDE2SDEwVjE4SDhWMTZaIi8+PHBhdGggZD0iTTggMjBIMTBWMjJIOFYyMFoiLz48cGF0aCBkPSJN'@; put 'OCAyNEgxMFYyNkg4VjI0WiIvPjxwYXRoIGQ9Ik0xNiAyNkgxNFYyNEgxNlYyNloiLz48cGF0aCBkPSJNMTQgMjBIMTZWMjJIMTRWMjBaIi8+PHBhdGggZD0iTTE0IDE2SDE2VjE4SDE0VjE2WiIvPjxwYXRoIGQ9Ik0xMCAxMUMxMCAxMS41NSA5LjU1IDEyIDkgMTJDOC40NSAxMiA4IDExLjU1'@; put 'IDggMTFWNUM4IDQuNDUgOC40NSA0IDkgNEM5LjU1IDQgMTAgNC40NSAxMCA1VjExWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0yNyAxMkMyNy41NSAxMiAyOCAxMS41NSAyOCAxMVY1QzI4IDQuNDUgMjcuNTUgNCAyNyA0QzI2LjQ1IDQgMjYgNC40NSAyNiA1VjExQzI2IDExLjU1IDI2LjQ1IDEy'@; put 'IDI3IDEyWk0zMy41IDguNTRDMzMuMTcgOC4yIDMyLjcyIDguMDEgMzIuMjUgOEgyOS4yVjExQzI5LjIgMTIuMjEgMjguMjEgMTMuMiAyNyAxMy4yQzI1Ljc5IDEzLjIgMjQuOCAxMi4yMSAyNC44IDExVjhIMTEuMlYxMUMxMS4yIDEyLjIxIDEwLjIxIDEzLjIgOSAxMy4yQzcuNzkgMTMuMiA2'@; put 'LjggMTIuMjEgNi44IDExVjhIMy43NUMzLjI4IDggMi44MyA4LjIgMi41IDguNTRDMi4xNyA4Ljg4IDIgOS4zNCAyIDkuODFWMzAuMTlDMiAzMC42NiAyLjE3IDMxLjEyIDIuNSAzMS40NkMyLjgzIDMxLjggMy4yOCAzMS45OSAzLjc1IDMySDMyLjI1QzMyLjcyIDMyIDMzLjE3IDMxLjggMzMu'@; put 'NSAzMS40NkMzMy44MyAzMS4xMiAzNC4wMSAzMC42NiAzNCAzMC4xOVY5LjgxQzM0IDkuMzQgMzMuODMgOC44OCAzMy41IDguNTRaTTEwLjEgMjYuMUg3LjlWMjMuOUgxMC4xVjI2LjFaTTEwLjEgMjIuMUg3LjlWMTkuOUgxMC4xVjIyLjFaTTEwLjEgMTguMUg3LjlWMTUuOUgxMC4xVjE4LjFa'@; put 'TTE2LjEgMjYuMUgxMy45VjIzLjlIMTYuMVYyNi4xWk0xNi4xIDIyLjFIMTMuOVYxOS45SDE2LjFWMjIuMVpNMTYuMSAxOC4xSDEzLjlWMTUuOUgxNi4xVjE4LjFaTTIyLjEgMjYuMUgxOS45VjIzLjlIMjIuMVYyNi4xWk0yMi4xIDIyLjFIMTkuOVYxOS45SDIyLjFWMjIuMVpNMjIuMSAxOC4x'@; put 'SDE5LjlWMTUuOUgyMi4xVjE4LjFaTTI4LjEgMjYuMUgyNS45VjIzLjlIMjguMVYyNi4xWk0yOC4xIDIyLjFIMjUuOVYxOS45SDI4LjFWMjIuMVpNMjguMSAxOC4xSDI1LjlWMTUuOUgyOC4xVjE4LjFaTTkgMTJDOS41NSAxMiAxMCAxMS41NSAxMCAxMVY1QzEwIDQuNDUgOS41NSA0IDkgNEM4'@; put 'LjQ1IDQgOCA0LjQ1IDggNVYxMUM4IDExLjU1IDguNDUgMTIgOSAxMloiLz4nLHNvbGlkQWxlcnRlZDonPHBhdGggZD0iTTI2LjkwMzkgMS42NDYyMUwyMS4yMjIyIDExLjExNTlDMjAuOTUyNiAxMS40OTg0IDIwLjkyODEgMTEuOTk0OSAyMS4xNTg4IDEyLjQwMDVDMjEuMzg5NiAxMi44MDYg'@; put 'MjEuODM2MyAxMy4wNTE5IDIyLjMxNDggMTMuMDM2N0gzMy42ODgxQzM0LjE2NjYgMTMuMDUxOSAzNC42MTM0IDEyLjgwNiAzNC44NDQxIDEyLjQwMDVDMzUuMDc0OCAxMS45OTQ5IDM1LjA1MDMgMTEuNDk4NCAzNC43ODA4IDExLjExNTlMMjkuMDk5MSAxLjY0NjIxQzI4Ljg3MTEgMS4yNjkx'@; put 'MyAyOC40NTMyIDEuMDM3MzUgMjguMDAxNSAxLjAzNzM1QzI3LjU0OTcgMS4wMzczNSAyNy4xMzE5IDEuMjY5MTMgMjYuOTAzOSAxLjY0NjIxWiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuNzU5NCA4TDE5LjUzNjIgMTAuMDM4N0MxOC44'@; put 'NzAzIDExLjA0MjMgMTguODIwNCAxMi4zMzQyIDE5LjQyMDYgMTMuMzg5M0MyMC4wMjMzIDE0LjQ0ODkgMjEuMTU3NyAxNS4wNjA0IDIyLjMzOTUgMTUuMDM2N0gzMy42NjM3QzMzLjc3NjMgMTUuMDM4OSAzMy44ODg2IDE1LjAzNTQgMzQgMTUuMDI2M1YzMC4xOUMzNC4wMSAzMC42NiAzMy44'@; put 'MyAzMS4xMiAzMy41IDMxLjQ2QzMzLjE3IDMxLjggMzIuNzIgMzIgMzIuMjUgMzJIMy43NUMzLjI4IDMxLjk5IDIuODMgMzEuOCAyLjUgMzEuNDZDMi4xNyAzMS4xMiAyIDMwLjY2IDIgMzAuMTlWOS44MUMyIDkuMzQgMi4xNyA4Ljg4IDIuNSA4LjU0QzIuODMgOC4yIDMuMjggOCAzLjc1IDhI'@; put 'Ni44VjExQzYuOCAxMi4yMSA3Ljc5IDEzLjIgOSAxMy4yQzEwLjIxIDEzLjIgMTEuMiAxMi4yMSAxMS4yIDExVjhIMjAuNzU5NFpNNy45IDIzLjlWMjYuMUgxMC4xVjIzLjlINy45Wk03LjkgMTkuOVYyMi4xSDEwLjFWMTkuOUg3LjlaTTcuOSAxNS45VjE4LjFIMTAuMVYxNS45SDcuOVpNMTMu'@; put 'OSAyNi4xSDE2LjFWMjMuOUgxMy45VjI2LjFaTTEzLjkgMjIuMUgxNi4xVjE5LjlIMTMuOVYyMi4xWk0xMy45IDE4LjFIMTYuMVYxNS45SDEzLjlWMTguMVpNMTkuOSAyNi4xSDIyLjFWMjMuOUgxOS45VjI2LjFaTTE5LjkgMjIuMUgyMi4xVjE5LjlIMTkuOVYyMi4xWk0xOS45IDE4LjFIMjIu'@; put 'MVYxNS45SDE5LjlWMTguMVpNMjUuOSAyMy45VjI2LjFIMjguMVYyMy45SDI1LjlaTTI1LjkgMTkuOVYyMi4xSDI4LjFWMTkuOUgyNS45Wk0yNS45IDE1LjlWMTguMUgyOC4xVjE1LjlIMjUuOVoiLz48cGF0aCBkPSJNMTAgMTFDMTAgMTEuNTUgOS41NSAxMiA5IDEyQzguNDUgMTIgOCAxMS41'@; put 'NSA4IDExVjVDOCA0LjQ1IDguNDUgNCA5IDRDOS41NSA0IDEwIDQuNDUgMTAgNVYxMVoiLz4nLHNvbGlkQmFkZ2VkOic8cGF0aCBkPSJNMzAgMTFDMzIuNzYxNCAxMSAzNSA4Ljc2MTQyIDM1IDZDMzUgMy4yMzg1OCAzMi43NjE0IDEgMzAgMUMyNy4yMzg2IDEgMjUgMy4yMzg1OCAyNSA2QzI1'@; put 'IDguNzYxNDIgMjcuMjM4NiAxMSAzMCAxMVoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM0IDExLjc0NTNDMzIuODY2MiAxMi41MzYyIDMxLjQ4NzIgMTMgMzAgMTNDMjkuNDA2MyAxMyAyOC44Mjk5IDEyLjkyNjEgMjguMjc5NCAxMi43ODdD'@; put 'MjcuOTE4MyAxMy4wNDY3IDI3LjQ3NjIgMTMuMiAyNyAxMy4yQzI1Ljc5IDEzLjIgMjQuOCAxMi4yMSAyNC44IDExVjEwLjY4NjJDMjQuMTEyNiA5LjkyMzkzIDIzLjU5MDQgOS4wMDk3IDIzLjI4OTkgOEgxMS4yVjExQzExLjIgMTIuMjEgMTAuMjEgMTMuMiA5IDEzLjJDNy43OSAxMy4yIDYu'@; put 'OCAxMi4yMSA2LjggMTFWOEgzLjc1QzMuMjggOCAyLjgzIDguMiAyLjUgOC41NEMyLjE3IDguODggMiA5LjM0IDIgOS44MVYzMC4xOUMyIDMwLjY2IDIuMTcgMzEuMTIgMi41IDMxLjQ2QzIuODMgMzEuOCAzLjI4IDMxLjk5IDMuNzUgMzJIMzIuMjVDMzIuNzIgMzIgMzMuMTcgMzEuOCAzMy41'@; put 'IDMxLjQ2QzMzLjgzIDMxLjEyIDM0LjAxIDMwLjY2IDM0IDMwLjE5VjExLjc0NTNaTTcuOSAyMy45VjI2LjFIMTAuMVYyMy45SDcuOVpNNy45IDE5LjlWMjIuMUgxMC4xVjE5LjlINy45Wk03LjkgMTUuOVYxOC4xSDEwLjFWMTUuOUg3LjlaTTEzLjkgMjYuMUgxNi4xVjIzLjlIMTMuOVYyNi4x'@; put 'Wk0xMy45IDIyLjFIMTYuMVYxOS45SDEzLjlWMjIuMVpNMTMuOSAxOC4xSDE2LjFWMTUuOUgxMy45VjE4LjFaTTE5LjkgMjYuMUgyMi4xVjIzLjlIMTkuOVYyNi4xWk0xOS45IDIyLjFIMjIuMVYxOS45SDE5LjlWMjIuMVpNMTkuOSAxOC4xSDIyLjFWMTUuOUgxOS45VjE4LjFaTTI1LjkgMjMu'@; put 'OVYyNi4xSDI4LjFWMjMuOUgyNS45Wk0yNS45IDE5LjlWMjIuMUgyOC4xVjE5LjlIMjUuOVpNMjUuOSAxNS45VjE4LjFIMjguMVYxNS45SDI1LjlaIi8+PHBhdGggZD0iTTEwIDExQzEwIDExLjU1IDkuNTUgMTIgOSAxMkM4LjQ1IDEyIDggMTEuNTUgOCAxMVY1QzggNC40NSA4LjQ1IDQgOSA0'@; put 'QzkuNTUgNCAxMCA0LjQ1IDEwIDVWMTFaIi8+J31dLElndD1bImZvbGRlci1vcGVuIix7b3V0bGluZTonPHBhdGggZD0iTTMzLjI2IDEzQzMzLjg0IDEyLjk5IDM0LjM4IDEzLjI2IDM0LjcxIDEzLjc0QzM1IDE0LjE2IDM1LjA4IDE0LjY5IDM0LjkyIDE1LjE4TDMwLjczIDMwLjI4QzMwLjYg'@; put 'MzAuNzIgMzAuMTkgMzEuMDIgMjkuNzMgMzFINC40MUMzLjY2IDMxLjAyIDMuMDMgMzAuNDQgMyAyOS42OVY3QzMgNS45IDMuOSA1IDUgNUgxMS40OUMxMi4xMyA1IDEyLjczIDUuMyAxMy4xMSA1LjgyTDE1LjQyIDlIMjkuMzlDMzAuNDkgOSAzMS4zOSA5LjkgMzEuMzkgMTFIMTQuOTFDMTQu'@; put 'NTkgMTEgMTQuMjkgMTAuODUgMTQuMSAxMC41OUwxMS40OSA3SDVWMjVMNy45MiAxNC42NkM3LjkyIDE0LjY2IDcuOTIgMTQuNTcgNy45MiAxNC41MkM4LjMyIDEzLjYzIDkuMTkgMTMuMDQgMTAuMTcgMTNIMzMuMjZaTTUuOSAyOUgyOC45NEwzMi44OCAxNC45NUgxMC4xNkMxMC4wMSAxNC45'@; put 'OCA5Ljg3IDE1LjA3IDkuNzggMTUuMTlMNS45IDI5WiIvPicsb3V0bGluZUFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0yNy45MDQxIDEuNjQ2MjFMMjIuMjIyNCAxMS4xMTU5QzIxLjk1MjkgMTEuNDk4NCAyMS45Mjg0IDExLjk5NDkgMjIuMTU5MSAxMi40MDA1QzIyLjM4OTggMTIuODA2IDIyLjgzNjYg'@; put 'MTMuMDUxOSAyMy4zMTUgMTMuMDM2N0gzNC42ODg0QzM1LjE2NjkgMTMuMDUxOSAzNS42MTM2IDEyLjgwNiAzNS44NDQzIDEyLjQwMDVDMzYuMDc1IDExLjk5NDkgMzYuMDUwNiAxMS40OTg0IDM1Ljc4MSAxMS4xMTU5TDMwLjA5OTMgMS42NDYyMUMyOS44NzEzIDEuMjY5MTMgMjkuNDUzNSAx'@; put 'LjAzNzM1IDI5LjAwMTcgMS4wMzczNUMyOC41NSAxLjAzNzM1IDI4LjEzMjEgMS4yNjkxMyAyNy45MDQxIDEuNjQ2MjFaIi8+PHBhdGggZD0iTTIwLjEwNTggMTFIMTQuOTEwMkMxNC41OTAyIDExIDE0LjI5MDIgMTAuODUgMTQuMTAwMiAxMC41OUwxMS40OTAyIDdINS4wMDAyNFYyNUw3Ljky'@; put 'MDI0IDE0LjY2VjE0LjUyQzguMzIwMjQgMTMuNjMgOS4xOTAyNCAxMy4wNCAxMC4xNzAyIDEzSDIwLjIzMjdDMjAuMjg2MSAxMy4xMzI2IDIwLjM0ODggMTMuMjYyNyAyMC40MjA4IDEzLjM4OTNDMjAuODgxNSAxNC4xOTkxIDIxLjY1MjcgMTQuNzQ3MiAyMi41MTgzIDE0Ljk1SDEwLjE2MDJD'@; put 'MTAuMDEwMiAxNC45OCA5Ljg3MDI0IDE1LjA3IDkuNzgwMjQgMTUuMTlMNS45MDAyNCAyOUgyOC45NDAyTDMyLjg1NTkgMTUuMDM2N0gzNC42NjM5QzM0Ljc2MzYgMTUuMDM4NyAzNC44NjMgMTUuMDM2MiAzNC45NjE3IDE1LjAyOTJDMzQuOTUwMyAxNS4wNzk4IDM0LjkzNjUgMTUuMTMwMSAz'@; put 'NC45MjAyIDE1LjE4TDMwLjczMDIgMzAuMjhDMzAuNjAwMiAzMC43MiAzMC4xOTAyIDMxLjAyIDI5LjczMDIgMzFINC40MTAyNEMzLjY2MDI0IDMxLjAyIDMuMDMwMjQgMzAuNDQgMy4wMDAyNCAyOS42OVY3QzMuMDAwMjQgNS45IDMuOTAwMjQgNSA1LjAwMDI0IDVIMTEuNDkwMkMxMi4xMzAy'@; put 'IDUgMTIuNzMwMiA1LjMgMTMuMTEwMiA1LjgyTDE1LjQyMDIgOUgyMS4xNTk3TDIwLjUzNjQgMTAuMDM4N0MyMC4zMzc4IDEwLjMzODEgMjAuMTkzOSAxMC42NjMyIDIwLjEwNTggMTFaIi8+JyxvdXRsaW5lQmFkZ2VkOic8cGF0aCBkPSJNMzEgMTFDMzMuNzYxNCAxMSAzNiA4Ljc2MTQyIDM2'@; put 'IDZDMzYgMy4yMzg1OCAzMy43NjE0IDEgMzEgMUMyOC4yMzg2IDEgMjYgMy4yMzg1OCAyNiA2QzI2IDguNzYxNDIgMjguMjM4NiAxMSAzMSAxMVoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTI2LjEwMSAxMUgxNC45MUMxNC41OSAxMSAxNC4y'@; put 'OSAxMC44NSAxNC4xIDEwLjU5TDExLjQ5IDdINVYyNUw3LjkyIDE0LjY2VjE0LjUyQzguMzIgMTMuNjMgOS4xOSAxMy4wNCAxMC4xNyAxM0gzMy4yNkMzMy44NCAxMi45OSAzNC4zOCAxMy4yNiAzNC43MSAxMy43NEMzNSAxNC4xNiAzNS4wOCAxNC42OSAzNC45MiAxNS4xOEwzMC43MyAzMC4y'@; put 'OEMzMC42IDMwLjcyIDMwLjE5IDMxLjAyIDI5LjczIDMxSDQuNDFDMy42NiAzMS4wMiAzLjAzIDMwLjQ0IDMgMjkuNjlWN0MzIDUuOSAzLjkgNSA1IDVIMTEuNDlDMTIuMTMgNSAxMi43MyA1LjMgMTMuMTEgNS44MkwxNS40MiA5SDI0LjY3MzZDMjUuMDI5NyA5Ljc0OTYgMjUuNTE1MSAxMC40'@; put 'MjU5IDI2LjEwMSAxMVpNMjguOTQgMjlINS45TDkuNzggMTUuMTlDOS44NyAxNS4wNyAxMC4wMSAxNC45OCAxMC4xNiAxNC45NUgzMi44OEwyOC45NCAyOVoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzQuNzA1OCAxMy43NEMzNC4zNzQ0IDEzLjI2NDMgMzMuODIyMyAxMi45ODYgMzMuMjM3OSAx'@; put 'M0gxMC4yNTgzQzkuMjY5NTIgMTMuMDQxNCA4LjM4ODU4IDEzLjYyOTMgNy45ODA2IDE0LjUyQzcuOTc3MjkgMTQuNTY2NiA3Ljk3NzI5IDE0LjYxMzQgNy45ODA2IDE0LjY2TDUuMDI0NjMgMjVWNy4wMDAwMUgxMS41OTQ2TDE0LjIzNjcgMTAuNTlDMTQuNDI3OSAxMC44NDg0IDE0LjczMjcg'@; put 'MTEuMDAwOCAxNS4wNTY3IDExSDMxLjM0NDlDMzEuMzQ0OSA5Ljg5NTQ0IDMwLjQzODQgOS4wMDAwMSAyOS4zMjAzIDkuMDAwMDFIMTUuNTczTDEzLjIzNDUgNS44MjAwMUMxMi44NTIyIDUuMzAzMTggMTIuMjQyNiA0Ljk5ODM1IDExLjU5NDYgNS4wMDAwMUg1LjAyNDYzQzMuOTA2NDYgNS4w'@; put 'MDAwMSAzIDUuODk1NDQgMyA3LjAwMDAxVjI5LjY5QzMuMDMyODkgMzAuNDM4OSAzLjY2ODkxIDMxLjAyMjYgNC40MjczNyAzMUgyOS42NjQ0QzMwLjEyOTMgMzEuMDE4MyAzMC41NDY5IDMwLjcyMTMgMzAuNjc2OCAzMC4yOEwzNC45MTg0IDE1LjE4QzM1LjA3ODggMTQuNjkzNSAzNS4wMDAx'@; put 'IDE0LjE2MSAzNC43MDU4IDEzLjc0WiIvPicsc29saWRBbGVydGVkOic8cGF0aCBkPSJNMjcuOTA0MSAxLjY0NjIxTDIyLjIyMjQgMTEuMTE1OUMyMS45NTI5IDExLjQ5ODQgMjEuOTI4NCAxMS45OTQ5IDIyLjE1OTEgMTIuNDAwNUMyMi4zODk4IDEyLjgwNiAyMi44MzY2IDEzLjA1MTkgMjMu'@; put 'MzE1IDEzLjAzNjdIMzQuNjg4NEMzNS4xNjY5IDEzLjA1MTkgMzUuNjEzNiAxMi44MDYgMzUuODQ0MyAxMi40MDA1QzM2LjA3NSAxMS45OTQ5IDM2LjA1MDYgMTEuNDk4NCAzNS43ODEgMTEuMTE1OUwzMC4wOTkzIDEuNjQ2MjFDMjkuODcxMyAxLjI2OTEzIDI5LjQ1MzUgMS4wMzczNSAyOS4w'@; put 'MDE3IDEuMDM3MzVDMjguNTUgMS4wMzczNSAyOC4xMzIxIDEuMjY5MTMgMjcuOTA0MSAxLjY0NjIxWiIvPjxwYXRoIGQ9Ik0yMC4yMzI1IDEzQzIwLjI4NTggMTMuMTMyNiAyMC4zNDg1IDEzLjI2MjcgMjAuNDIwNiAxMy4zODkzQzIxLjAyMzMgMTQuNDQ4OSAyMi4xNTc3IDE1LjA2MDQgMjMu'@; put 'MzM5NSAxNS4wMzY3SDM0LjY2MzdDMzQuNzYyOSAxNS4wMzg3IDM0Ljg2MTggMTUuMDM2MiAzNC45NjAxIDE1LjAyOTNDMzQuOTQ4NyAxNS4wNzk5IDM0LjkzNDggMTUuMTMwMiAzNC45MTg0IDE1LjE4TDMwLjY3NjggMzAuMjhDMzAuNTQ2OSAzMC43MjEzIDMwLjEyOTMgMzEuMDE4MyAyOS42'@; put 'NjQ0IDMxSDQuNDI3MzdDMy42Njg5MSAzMS4wMjI2IDMuMDMyODkgMzAuNDM4OSAzIDI5LjY5VjcuMDAwMDFDMyA1Ljg5NTQ0IDMuOTA2NDYgNS4wMDAwMSA1LjAyNDYzIDUuMDAwMDFIMTEuNTk0NkMxMi4yNDI2IDQuOTk4MzUgMTIuODUyMiA1LjMwMzE4IDEzLjIzNDUgNS44MjAwMUwxNS41'@; put 'NzMgOS4wMDAwMUgyMS4xNTk0TDIwLjUzNjIgMTAuMDM4N0MyMC4zMzc1IDEwLjMzODEgMjAuMTkzNyAxMC42NjMyIDIwLjEwNTYgMTFIMTUuMDU2N0MxNC43MzI3IDExLjAwMDggMTQuNDI3OSAxMC44NDg0IDE0LjIzNjcgMTAuNTlMMTEuNTk0NiA3LjAwMDAxSDUuMDI0NjNWMjVMNy45ODA2'@; put 'IDE0LjY2QzcuOTc3MjkgMTQuNjEzNCA3Ljk3NzI5IDE0LjU2NjYgNy45ODA2IDE0LjUyQzguMzg4NTggMTMuNjI5MyA5LjI2OTUyIDEzLjA0MTQgMTAuMjU4MyAxM0gyMC4yMzI1WiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGQ9Ik0zMSAxMUMzMy43NjE0IDExIDM2IDguNzYxNDIgMzYgNkMz'@; put 'NiAzLjIzODU4IDMzLjc2MTQgMSAzMSAxQzI4LjIzODYgMSAyNiAzLjIzODU4IDI2IDZDMjYgOC43NjE0MiAyOC4yMzg2IDExIDMxIDExWiIvPjxwYXRoIGQ9Ik0yNC42NzM2IDkuMDAwMDFDMjUuMDI5NyA5Ljc0OTYxIDI1LjUxNTEgMTAuNDI1OSAyNi4xMDEgMTFIMTUuMDU2N0MxNC43MzI3'@; put 'IDExLjAwMDggMTQuNDI3OSAxMC44NDg0IDE0LjIzNjcgMTAuNTlMMTEuNTk0NiA3LjAwMDAxSDUuMDI0NjNWMjVMNy45ODA2IDE0LjY2QzcuOTc3MjkgMTQuNjEzNCA3Ljk3NzI5IDE0LjU2NjYgNy45ODA2IDE0LjUyQzguMzg4NTggMTMuNjI5MyA5LjI2OTUyIDEzLjA0MTQgMTAuMjU4MyAx'@; put 'M0gzMy4yMzc5QzMzLjgyMjMgMTIuOTg2IDM0LjM3NDQgMTMuMjY0MyAzNC43MDU4IDEzLjc0QzM1LjAwMDEgMTQuMTYxIDM1LjA3ODggMTQuNjkzNSAzNC45MTg0IDE1LjE4TDMwLjY3NjggMzAuMjhDMzAuNTQ2OSAzMC43MjEzIDMwLjEyOTMgMzEuMDE4MyAyOS42NjQ0IDMxSDQuNDI3MzdD'@; put 'My42Njg5MSAzMS4wMjI2IDMuMDMyODkgMzAuNDM4OSAzIDI5LjY5VjcuMDAwMDFDMyA1Ljg5NTQ0IDMuOTA2NDYgNS4wMDAwMSA1LjAyNDYzIDUuMDAwMDFIMTEuNTk0NkMxMi4yNDI2IDQuOTk4MzUgMTIuODUyMiA1LjMwMzE4IDEzLjIzNDUgNS44MjAwMUwxNS41NzMgOS4wMDAwMUgyNC42'@; put 'NzM2WiIvPid9XSxEZ3Q9WyJtaW51cyIse291dGxpbmU6JzxwYXRoIGQ9Ik0yNiAxN0gxMEM5LjQ0NzcyIDE3IDkgMTcuNDQ3NyA5IDE4QzkgMTguNTUyMyA5LjQ0NzcyIDE5IDEwIDE5SDI2QzI2LjU1MjMgMTkgMjcgMTguNTUyMyAyNyAxOEMyNyAxNy40NDc3IDI2LjU1MjMgMTcgMjYgMTda'@; put 'Ii8+J31dLExndD1bInBsdXMiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjkuOTk5OSAxN0gxOC45OTk5VjZDMTguOTk5OSA1LjQ0NzcyIDE4LjU1MjIgNSAxNy45OTk5IDVDMTcuNDQ3NiA1IDE2Ljk5OTkgNS40NDc3MiAxNi45OTk5IDZWMTdINS45OTk5MkM1LjQ0NzY0IDE3IDQuOTk5OTIgMTcu'@; put 'NDQ3NyA0Ljk5OTkyIDE4QzQuOTg5OTQgMTguMjYzIDUuMDk0MjcgMTguNTE3NCA1LjI4NiAxOC42OTc2QzUuNDc3NzMgMTguODc3OCA1LjczODA5IDE4Ljk2NjIgNS45OTk5MiAxOC45NEgxNi45OTk5VjMwQzE2Ljk5OTkgMzAuNTUyMyAxNy40NDc2IDMxIDE3Ljk5OTkgMzFDMTguNTUyMiAz'@; put 'MSAxOC45OTk5IDMwLjU1MjMgMTguOTk5OSAzMFYxOUgyOS45OTk5QzMwLjU1MjIgMTkgMzAuOTk5OSAxOC41NTIzIDMwLjk5OTkgMThDMzAuOTk5OSAxNy40NDc3IDMwLjU1MjIgMTcgMjkuOTk5OSAxN1oiLz4nfV0sT2d0PVsiZXllLWhpZGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjQuNTQ5'@; put 'NSAyMC40MzAxQzI0LjgyOTQgMTkuNjcwMSAyNC45ODkzIDE4Ljg2MDEgMjQuOTg5MyAxOC4wMDAxQzI0Ljk4OTMgMTQuMTQwMSAyMS44NTA4IDExLjAwMDEgMTcuOTkyNiAxMS4wMDAxQzE3LjEzMyAxMS4wMDAxIDE2LjMyMzMgMTEuMTYwMSAxNS41NjM3IDExLjQ0MDFMMTcuMjAyOSAxMy4w'@; put 'ODAxQzE3LjQ2MjggMTMuMDQwMSAxNy43MjI3IDEzLjAwMDEgMTcuOTkyNiAxMy4wMDAxQzIwLjc1MTMgMTMuMDAwMSAyMi45OTAyIDE1LjI0MDEgMjIuOTkwMiAxOC4wMDAxQzIyLjk5MDIgMTguMjcwMSAyMi45NTAyIDE4LjUzMDEgMjIuOTEwMyAxOC43OTAxTDI0LjU0OTUgMjAuNDMwMVpN'@; put 'MTcuOTkyNiA5LjAwMDA2QzIzLjk4OTggOS4wMDAwNiAyOS4zOTcyIDEyLjUyMDEgMzEuODk2IDE4LjAwMDFDMzAuODk2NSAyMC4xOTAxIDI5LjQyNzIgMjIuMDYwMSAyNy42NDggMjMuNTMwMUwyOS4wNjc0IDI0Ljk1MDFDMzEuMTI2NCAyMy4yMjAxIDMyLjgwNTYgMjAuOTkwMSAzMy45MTUx'@; put 'IDE4LjM5MDFDMzQuMDI1IDE4LjE0MDEgMzQuMDI1IDE3Ljg2MDEgMzMuOTE1MSAxNy42MTAxQzMxLjE4NjQgMTEuMTYwMSAyNC45MzkzIDcuMDAwMDYgMTguMDAyNiA3LjAwMDA2QzE1Ljk3MzUgNy4wMDAwNiAxNC4wMDQ0IDcuMzcwMDYgMTIuMTY1MyA4LjAzMDA2TDEzLjc0NDYgOS42MTAw'@; put 'NkMxNS4xMDM5IDkuMjEwMDYgMTYuNTMzMiA5LjAwMDA2IDE4LjAwMjYgOS4wMDAwNkgxNy45OTI2Wk0zLjcwOTI2IDIuMjkwMDZDMy4zMTk0NCAxLjkwMDA2IDIuNjc5NzQgMS45MDAwNiAyLjI4OTkyIDIuMjkwMDZDMS45MDAxIDIuNjgwMDYgMS45MDAxIDMuMzIwMDYgMi4yODk5MiAzLjcx'@; put 'MDA2TDguNDc3MDIgOS45MDAwNkM1LjcwODMyIDExLjc0MDEgMy40NDkzOCAxNC4zODAxIDIuMDgwMDIgMTcuNjEwMUMxLjk3MDA3IDE3Ljg2MDEgMS45NzAwNyAxOC4xNDAxIDIuMDgwMDIgMTguMzkwMUM0LjgwODc0IDI0Ljg0MDEgMTEuMDU1OCAyOS4wMDAxIDE3Ljk5MjYgMjkuMDAwMUMy'@; put 'MC43NDEzIDI5LjAwMDEgMjMuMzcgMjguMzQwMSAyNS43MTg5IDI3LjE1MDFMMzIuMjc1OSAzMy43MTAxQzMyLjQ3NTggMzMuOTEwMSAzMi43MjU3IDM0LjAwMDEgMzIuOTg1NSAzNC4wMDAxQzMzLjI0NTQgMzQuMDAwMSAzMy40OTUzIDMzLjkwMDEgMzMuNjk1MiAzMy43MTAxQzM0LjA4NSAz'@; put 'My4zMjAxIDM0LjA4NSAzMi42OTAxIDMzLjY5NTIgMzIuMzAwMUwzLjcwOTI2IDIuMjkwMDZaTTEzLjgzNDUgMTUuMjUwMUwyMC43NDEzIDIyLjE2MDFDMTkuOTUxNiAyMi42ODAxIDE5LjAxMjEgMjMuMDAwMSAxNy45OTI2IDIzLjAwMDFDMTUuMjMzOSAyMy4wMDAxIDEyLjk5NDkgMjAuNzYw'@; put 'MSAxMi45OTQ5IDE4LjAwMDFDMTIuOTk0OSAxNi45ODAxIDEzLjMwNDggMTYuMDQwMSAxMy44MzQ1IDE1LjI1MDFaTTE3Ljk5MjYgMjcuMDAwMUMxMS45OTU0IDI3LjAwMDEgNi41ODc5MSAyMy40ODAxIDQuMDg5MDggMTguMDAwMUM1LjM2ODQ4IDE1LjE5MDEgNy40Mjc1MSAxMi45MTAxIDku'@; put 'OTI2MzQgMTEuMzQwMUwxMi40MDUyIDEzLjgyMDFDMTEuNTI1NiAxNC45OTAxIDEwLjk5NTggMTYuNDMwMSAxMC45OTU4IDE4LjAwMDFDMTAuOTk1OCAyMS44NjAxIDE0LjEzNDQgMjUuMDAwMSAxNy45OTI2IDI1LjAwMDFDMTkuNTYxOCAyNS4wMDAxIDIxLjAwMTIgMjQuNDcwMSAyMi4xNzA2'@; put 'IDIzLjU5MDFMMjQuMjI5NiAyNS42NTAxQzIyLjMxMDUgMjYuNTIwMSAyMC4xOTE1IDI3LjAwMDEgMTcuOTkyNiAyNy4wMDAxWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xNy45OTI2IDkuMDAwMDZDMjMuOTg5OCA5LjAwMDA2IDI5LjM5NzIgMTIuNTIwMSAzMS44OTYgMTguMDAwMUMzMC44OTY1'@; put 'IDIwLjE5MDEgMjkuNDI3MiAyMi4wNjAxIDI3LjY0OCAyMy41MzAxTDI5LjA2NzQgMjQuOTUwMUMzMS4xMjY0IDIzLjIyMDEgMzIuODA1NiAyMC45OTAxIDMzLjkxNTEgMTguMzkwMUMzNC4wMjUgMTguMTQwMSAzNC4wMjUgMTcuODYwMSAzMy45MTUxIDE3LjYxMDFDMzEuMTg2NCAxMS4xNjAx'@; put 'IDI0LjkzOTMgNy4wMDAwNiAxOC4wMDI2IDcuMDAwMDZDMTUuOTczNSA3LjAwMDA2IDE0LjAwNDQgNy4zNzAwNiAxMi4xNjUzIDguMDMwMDZMMTMuNzQ0NiA5LjYxMDA2QzE1LjEwMzkgOS4yMTAwNiAxNi41MzMyIDkuMDAwMDYgMTguMDAyNiA5LjAwMDA2SDE3Ljk5MjZaTTMuNzA5MjYgMi4y'@; put 'OTAwNkMzLjMxOTQ0IDEuOTAwMDYgMi42Nzk3NCAxLjkwMDA2IDIuMjg5OTIgMi4yOTAwNkMxLjkwMDEgMi42ODAwNiAxLjkwMDEgMy4zMjAwNiAyLjI4OTkyIDMuNzEwMDZMOC40NzcwMiA5LjkwMDA2QzUuNzA4MzIgMTEuNzQwMSAzLjQ0OTM4IDE0LjM4MDEgMi4wODAwMiAxNy42MTAxQzEu'@; put 'OTcwMDcgMTcuODYwMSAxLjk3MDA3IDE4LjE0MDEgMi4wODAwMiAxOC4zOTAxQzQuODA4NzQgMjQuODQwMSAxMS4wNTU4IDI5LjAwMDEgMTcuOTkyNiAyOS4wMDAxQzIwLjc0MTMgMjkuMDAwMSAyMy4zNyAyOC4zNDAxIDI1LjcxODkgMjcuMTUwMUwzMi4yNzU5IDMzLjcxMDFDMzIuNDc1OCAz'@; put 'My45MTAxIDMyLjcyNTcgMzQuMDAwMSAzMi45ODU1IDM0LjAwMDFDMzMuMjQ1NCAzNC4wMDAxIDMzLjQ5NTMgMzMuOTAwMSAzMy42OTUyIDMzLjcxMDFDMzQuMDg1IDMzLjMyMDEgMzQuMDg1IDMyLjY5MDEgMzMuNjk1MiAzMi4zMDAxTDMuNzA5MjYgMi4yOTAwNlpNMTcuOTkyNiAyNy4wMDAx'@; put 'QzExLjk5NTQgMjcuMDAwMSA2LjU4NzkxIDIzLjQ4MDEgNC4wODkwOCAxOC4wMDAxQzUuMzY4NDggMTUuMTkwMSA3LjQyNzUxIDEyLjkxMDEgOS45MjYzNCAxMS4zNDAxTDEyLjQwNTIgMTMuODIwMUMxMS41MjU2IDE0Ljk5MDEgMTAuOTk1OCAxNi40MzAxIDEwLjk5NTggMTguMDAwMUMxMC45'@; put 'OTU4IDIxLjg2MDEgMTQuMTM0NCAyNS4wMDAxIDE3Ljk5MjYgMjUuMDAwMUMxOS41NjE4IDI1LjAwMDEgMjEuMDAxMiAyNC40NzAxIDIyLjE3MDYgMjMuNTkwMUwyNC4yMjk2IDI1LjY1MDFDMjIuMzEwNSAyNi41MjAxIDIwLjE5MTUgMjcuMDAwMSAxNy45OTI2IDI3LjAwMDFaTTE1LjU2Mzcg'@; put 'MTEuNDQwMUwyNC41NDk1IDIwLjQzMDFDMjQuODI5NCAxOS42NzAxIDI0Ljk4OTMgMTguODYwMSAyNC45ODkzIDE4LjAwMDFDMjQuOTg5MyAxNC4xNDAxIDIxLjg1MDggMTEuMDAwMSAxNy45OTI2IDExLjAwMDFDMTcuMTMzIDExLjAwMDEgMTYuMzIzMyAxMS4xNjAxIDE1LjU2MzcgMTEuNDQw'@; put 'MVoiLz4nfV0sTmd0PVsiZXllIix7b3V0bGluZTonPHBhdGggZD0iTTE3Ljk5NzYgMTFDMTQuMTM4MiAxMSAxMC45OTg3IDE0LjE0IDEwLjk5ODcgMThDMTAuOTk4NyAyMS44NiAxNC4xMzgyIDI1IDE3Ljk5NzYgMjVDMjEuODU3IDI1IDI0Ljk5NjUgMjEuODYgMjQuOTk2NSAxOEMyNC45OTY1'@; put 'IDE0LjE0IDIxLjg1NyAxMSAxNy45OTc2IDExWk0xNy45OTc2IDIzQzE1LjIzOCAyMyAxMi45OTgzIDIwLjc2IDEyLjk5ODMgMThDMTIuOTk4MyAxNS4yNCAxNS4yMzggMTMgMTcuOTk3NiAxM0MyMC43NTcxIDEzIDIyLjk5NjggMTUuMjQgMjIuOTk2OCAxOEMyMi45OTY4IDIwLjc2IDIwLjc1'@; put 'NzEgMjMgMTcuOTk3NiAyM1pNMzMuOTE1MSAxNy42MUMzMS4xODU1IDExLjE3IDI0LjkzNjUgNyAxNy45OTc2IDdDMTEuMDU4NiA3IDQuODA5NjIgMTEuMTcgMi4wODAwNSAxNy42MUMxLjk3MDA2IDE3Ljg2IDEuOTcwMDYgMTguMTQgMi4wODAwNSAxOC4zOUM0LjgwOTYyIDI0Ljg0IDExLjA1'@; put 'ODYgMjkgMTcuOTk3NiAyOUMyNC45MzY1IDI5IDMxLjE4NTUgMjQuODMgMzMuOTE1MSAxOC4zOUMzNC4wMjUxIDE4LjE0IDM0LjAyNTEgMTcuODYgMzMuOTE1MSAxNy42MVpNMTcuOTk3NiAyN0MxMS45OTg1IDI3IDYuNTg5MzQgMjMuNDggNC4wODk3MyAxOEM2LjU4OTM0IDEyLjUyIDExLjk5'@; put 'ODUgOSAxNy45OTc2IDlDMjMuOTk2NiA5IDI5LjQwNTggMTIuNTIgMzEuOTA1NCAxOEMyOS40MDU4IDIzLjQ4IDIzLjk5NjYgMjcgMTcuOTk3NiAyN1oiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTcuOTk3NiAxMUMxNC4xMzgyIDExIDEwLjk5ODcgMTQuMTQgMTAuOTk4NyAxOEMxMC45OTg3IDIx'@; put 'Ljg2IDE0LjEzODIgMjUgMTcuOTk3NiAyNUMyMS44NTcgMjUgMjQuOTk2NSAyMS44NiAyNC45OTY1IDE4QzI0Ljk5NjUgMTQuMTQgMjEuODU3IDExIDE3Ljk5NzYgMTFaTTMzLjkxNTEgMTcuNjFDMzEuMTg1NSAxMS4xNyAyNC45MzY1IDcgMTcuOTk3NiA3QzExLjA1ODYgNyA0LjgwOTYyIDEx'@; put 'LjE3IDIuMDgwMDUgMTcuNjFDMS45NzAwNiAxNy44NiAxLjk3MDA2IDE4LjE0IDIuMDgwMDUgMTguMzlDNC44MDk2MiAyNC44NCAxMS4wNTg2IDI5IDE3Ljk5NzYgMjlDMjQuOTM2NSAyOSAzMS4xODU1IDI0LjgzIDMzLjkxNTEgMTguMzlDMzQuMDI1MSAxOC4xNCAzNC4wMjUxIDE3Ljg2IDMz'@; put 'LjkxNTEgMTcuNjFaTTE3Ljk5NzYgMjdDMTEuOTk4NSAyNyA2LjU4OTM0IDIzLjQ4IDQuMDg5NzMgMThDNi41ODkzNCAxMi41MiAxMS45OTg1IDkgMTcuOTk3NiA5QzIzLjk5NjYgOSAyOS40MDU4IDEyLjUyIDMxLjkwNTQgMThDMjkuNDA1OCAyMy40OCAyMy45OTY2IDI3IDE3Ljk5NzYgMjda'@; put 'Ii8+J31dLEZndD1bImVsbGlwc2lzLXZlcnRpY2FsIix7b3V0bGluZTonPHBhdGggZD0iTTIxLjEwMDEgNC45QzIxLjEwMDEgNi41MDE2MyAxOS43NTcgNy44IDE4LjEwMDEgNy44QzE2LjQ0MzIgNy44IDE1LjEwMDEgNi41MDE2MyAxNS4xMDAxIDQuOUMxNS4xMDAxIDMuMjk4MzcgMTYuNDQz'@; put 'MiAyIDE4LjEwMDEgMkMxOS43NTcgMiAyMS4xMDAxIDMuMjk4MzcgMjEuMTAwMSA0LjlaIi8+PHBhdGggZD0iTTE4LjEwMDEgMjAuOUMxOS43NTcgMjAuOSAyMS4xMDAxIDE5LjYwMTYgMjEuMTAwMSAxOEMyMS4xMDAxIDE2LjM5ODQgMTkuNzU3IDE1LjEgMTguMTAwMSAxNS4xQzE2LjQ0MzIg'@; put 'MTUuMSAxNS4xMDAxIDE2LjM5ODQgMTUuMTAwMSAxOEMxNS4xMDAxIDE5LjYwMTYgMTYuNDQzMiAyMC45IDE4LjEwMDEgMjAuOVoiLz48cGF0aCBkPSJNMTguMTAwMSAzNEMxOS43NTcgMzQgMjEuMTAwMSAzMi43MDE2IDIxLjEwMDEgMzEuMUMyMS4xMDAxIDI5LjQ5ODQgMTkuNzU3IDI4LjIg'@; put 'MTguMTAwMSAyOC4yQzE2LjQ0MzIgMjguMiAxNS4xMDAxIDI5LjQ5ODQgMTUuMTAwMSAzMS4xQzE1LjEwMDEgMzIuNzAxNiAxNi40NDMyIDM0IDE4LjEwMDEgMzRaIi8+JyxvdXRsaW5lQmFkZ2VkOic8cGF0aCBkPSJNMjEuMTAwMSA0LjlDMjEuMTAwMSA2LjUwMTYzIDE5Ljc1NyA3LjggMTgu'@; put 'MTAwMSA3LjhDMTYuNDQzMiA3LjggMTUuMTAwMSA2LjUwMTYzIDE1LjEwMDEgNC45QzE1LjEwMDEgMy4yOTgzNyAxNi40NDMyIDIgMTguMTAwMSAyQzE5Ljc1NyAyIDIxLjEwMDEgMy4yOTgzNyAyMS4xMDAxIDQuOVoiLz48cGF0aCBkPSJNMTguMTAwMSAyMC45QzE5Ljc1NyAyMC45IDIxLjEw'@; put 'MDEgMTkuNjAxNiAyMS4xMDAxIDE4QzIxLjEwMDEgMTYuMzk4NCAxOS43NTcgMTUuMSAxOC4xMDAxIDE1LjFDMTYuNDQzMiAxNS4xIDE1LjEwMDEgMTYuMzk4NCAxNS4xMDAxIDE4QzE1LjEwMDEgMTkuNjAxNiAxNi40NDMyIDIwLjkgMTguMTAwMSAyMC45WiIvPjxwYXRoIGQ9Ik0xOC4xMDAx'@; put 'IDM0QzE5Ljc1NyAzNCAyMS4xMDAxIDMyLjcwMTYgMjEuMTAwMSAzMS4xQzIxLjEwMDEgMjkuNDk4NCAxOS43NTcgMjguMiAxOC4xMDAxIDI4LjJDMTYuNDQzMiAyOC4yIDE1LjEwMDEgMjkuNDk4NCAxNS4xMDAxIDMxLjFDMTUuMTAwMSAzMi43MDE2IDE2LjQ0MzIgMzQgMTguMTAwMSAzNFoi'@; put 'Lz48cGF0aCBkPSJNMzAgMTFDMzIuNzYxNCAxMSAzNSA4Ljc2MTQyIDM1IDZDMzUgMy4yMzg1OCAzMi43NjE0IDEgMzAgMUMyNy4yMzg2IDEgMjUgMy4yMzg1OCAyNSA2QzI1IDguNzYxNDIgMjcuMjM4NiAxMSAzMCAxMVoiLz4nfV0sUGd0PVsidmlldy1jb2x1bW5zIix7b3V0bGluZTonPHBh'@; put 'dGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMSA1SDVDMy44OTU0MyA1IDMgNS44OTU0MyAzIDdWMjlDMyAzMC4xMDQ2IDMuODk1NDMgMzEgNSAzMUgzMUMzMi4xMDQ2IDMxIDMzIDMwLjEwNDYgMzMgMjlWN0MzMyA1Ljg5NTQzIDMyLjEwNDYgNSAzMSA1'@; put 'Wk0xMyAyOUg1VjdIMTNWMjlaTTE1IDI5SDIzVjdIMTVWMjlaIi8+J31dLEhndD1bImFycm93Iix7b3V0bGluZTonPHBhdGggZD0iTTI3LjY1MDQgMTUuNjM0MUwxNy45OTUxIDZMOC4zMzk4MSAxNS42MzQxQzguMDI4NjkgMTUuODcxNyA3Ljg4NDMyIDE2LjI2OTUgNy45NzAzIDE2LjY1MjFD'@; put 'OC4wNTYyOSAxNy4wMzQ3IDguMzU2ODUgMTcuMzMxOSA4LjczOTUyIDE3LjQxMjdDOS4xMjIxOSAxNy40OTM1IDkuNTE2NjcgMTcuMzQzIDkuNzQ5MTIgMTcuMDI3NkwxNi45OTU2IDkuODE5NTVWMjguOTk3NUMxNi45OTU2IDI5LjU1MTIgMTcuNDQzMSAzMCAxNy45OTUxIDMwQzE4LjU0NzEg'@; put 'MzAgMTguOTk0NiAyOS41NTEyIDE4Ljk5NDYgMjguOTk3NVY5LjgxOTU1TDI2LjI0MTEgMTcuMDI3NkMyNi42MzMgMTcuNDE3OSAyNy4yNjYyIDE3LjQxNTcgMjcuNjU1NCAxNy4wMjI2QzI4LjA0NDUgMTYuNjI5NSAyOC4wNDIzIDE1Ljk5NDMgMjcuNjUwNCAxNS42MDRWMTUuNjM0MVoiLz4n'@; put 'fV0sVmd0PVsic3RlcC1mb3J3YXJkLTIiLHtvdXRsaW5lOic8cGF0aCBkPSJNNy4wODg5MyA2LjUyMDAzQzYuOTI2NDMgNi42NzY0NSA2Ljc5NzM0IDYuODYzMTUgNi43MDkyMSA3LjA2OTIxQzYuNjIxMDggNy4yNzUyNiA2LjU3NTY4IDcuNDk2NTIgNi41NzU2OCA3LjcyMDAzQzYuNTc1Njgg'@; put 'Ny45NDM1MyA2LjYyMTA4IDguMTY0NzkgNi43MDkyMSA4LjM3MDg1QzYuNzk3MzQgOC41NzY5IDYuOTI2NDMgOC43NjM2MSA3LjA4ODkzIDguOTIwMDNMMTYuNjg3MiAxOEw3LjEyOTY0IDI3LjA4QzYuODI5NzcgMjcuMzk5MSA2LjY2NTU0IDI3LjgxODggNi42NzA2NSAyOC4yNTNDNi42NzU3'@; put 'NiAyOC42ODcyIDYuODQ5ODIgMjkuMTAzMSA3LjE1NzEyIDI5LjQxNTJDNy40NjQ0MiAyOS43Mjc0IDcuODgxNjYgMjkuOTEyMSA4LjMyMzIzIDI5LjkzMTZDOC43NjQ4IDI5Ljk1MTEgOS4xOTcyMSAyOS44MDM4IDkuNTMxNzYgMjkuNTJMMjEuNjY0NSAxOEw5LjUzMTc2IDYuNDcwMDNDOS4z'@; put 'Njg1MSA2LjMxNDgyIDkuMTc1NTkgNi4xOTI5MyA4Ljk2NDEzIDYuMTExMzdDOC43NTI2NyA2LjAyOTgyIDguNTI2ODYgNS45OTAyMiA4LjI5OTc0IDUuOTk0ODdDOC4wNzI2MiA1Ljk5OTUyIDcuODQ4NjkgNi4wNDgzMiA3LjY0MDg3IDYuMTM4NDZDNy40MzMwNSA2LjIyODU5IDcuMjQ1NDYg'@; put 'Ni4zNTgyOCA3LjA4ODkzIDYuNTIwMDNaIi8+PHBhdGggZD0iTTI2Ljg0NTMgNUMyNi4zODY0IDUgMjUuOTQ2MyA1LjE3OTExIDI1LjYyMTggNS40OTc5MkMyNS4yOTczIDUuODE2NzMgMjUuMTE1IDYuMjQ5MTMgMjUuMTE1IDYuN1YyOS4zQzI1LjExNSAyOS43NTA5IDI1LjI5NzMgMzAuMTgz'@; put 'MyAyNS42MjE4IDMwLjUwMjFDMjUuOTQ2MyAzMC44MjA5IDI2LjM4NjQgMzEgMjYuODQ1MyAzMUMyNy4zMDQzIDMxIDI3Ljc0NDQgMzAuODIwOSAyOC4wNjg5IDMwLjUwMjFDMjguMzkzNCAzMC4xODMzIDI4LjU3NTcgMjkuNzUwOSAyOC41NzU3IDI5LjNWNi43QzI4LjU3NTcgNi4yNDkxMyAy'@; put 'OC4zOTM0IDUuODE2NzMgMjguMDY4OSA1LjQ5NzkyQzI3Ljc0NDQgNS4xNzkxMSAyNy4zMDQzIDUgMjYuODQ1MyA1WiIvPid9XSxCZ3Q9WyJmaWx0ZXItZ3JpZC1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE4IDJD'@; put 'OS4xNjM0NCAyIDIgOS4xNjM0NCAyIDE4QzIgMjYuODM2NiA5LjE2MzQ0IDM0IDE4IDM0QzI2LjgzNjYgMzQgMzQgMjYuODM2NiAzNCAxOEMzNCAxMy43NTY1IDMyLjMxNDMgOS42ODY4NyAyOS4zMTM3IDYuNjg2MjlDMjYuMzEzMSAzLjY4NTcxIDIyLjI0MzUgMiAxOCAyWk0xOCAzMkMxMC4y'@; put 'NjggMzIgNCAyNS43MzIgNCAxOEM0IDEwLjI2OCAxMC4yNjggNCAxOCA0QzI1LjczMiA0IDMyIDEwLjI2OCAzMiAxOEMzMiAyMS43MTMgMzAuNTI1IDI1LjI3NCAyNy44OTk1IDI3Ljg5OTVDMjUuMjc0IDMwLjUyNSAyMS43MTMgMzIgMTggMzJaTTE3IDI2Ljg2TDE1IDI1Ljg2VjIwLjY4TDgu'@; put 'NDIgMTRDOC4xNTY3OSAxMy43MzMgOC4wMDY0IDEzLjM3NDkgOCAxM1YxMkM4IDExLjQ0NzcgOC40NDc3MiAxMSA5IDExSDI3QzI3LjU1MjMgMTEgMjggMTEuNDQ3NyAyOCAxMlYxM0MyNy45OTM2IDEzLjM3NDkgMjcuODQzMiAxMy43MzMgMjcuNTggMTRMMjEgMjAuNjhWMjlMMTkgMjhMMTku'@; put 'MDMgMjAuMjdDMTkuMDMxMSAyMC4wMDc3IDE5LjEzNTMgMTkuNzU2MyAxOS4zMiAxOS41N0wyNS43OSAxM0gxMC4yM0wxNi43MSAxOS41N0MxNi44OTQ3IDE5Ljc1NjMgMTYuOTk4OSAyMC4wMDc3IDE3IDIwLjI3VjI2Ljg2WiIvPicsc29saWQ6JzxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIg'@; put 'Y2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTggMkM5LjE2MzQ0IDIgMiA5LjE2MzQ0IDIgMThDMiAyNi44MzY2IDkuMTYzNDQgMzQgMTggMzRDMjYuODM2NiAzNCAzNCAyNi44MzY2IDM0IDE4QzM0IDEzLjc1NjUgMzIuMzE0MyA5LjY4Njg3IDI5LjMxMzcgNi42ODYyOUMyNi4zMTMxIDMuNjg1'@; put 'NzEgMjIuMjQzNSAyIDE4IDJaTTE4IDMyQzEwLjI2OCAzMiA0IDI1LjczMiA0IDE4QzQgMTAuMjY4IDEwLjI2OCA0IDE4IDRDMjUuNzMyIDQgMzIgMTAuMjY4IDMyIDE4QzMyIDIxLjcxMyAzMC41MjUgMjUuMjc0IDI3Ljg5OTUgMjcuODk5NUMyNS4yNzQgMzAuNTI1IDIxLjcxMyAzMiAxOCAz'@; put 'MlpNOCAxMi4xMlYxMUgyNy45OFYxMi4xNEMyNy45NzgxIDEyLjI3MTkgMjcuOTI0MiAxMi4zOTc3IDI3LjgzIDEyLjQ5TDIwLjcxIDE5Ljc0QzIwLjYwODEgMTkuODI5OSAyMC41NDM4IDE5Ljk1NDggMjAuNTMgMjAuMDlWMjguNDhDMjAuNTMwMyAyOC42NTI4IDIwLjQ0MTUgMjguODEzNCAy'@; put 'MC4yOTUgMjguOTA1QzIwLjE0ODUgMjguOTk2NiAxOS45NjUxIDI5LjAwNiAxOS44MSAyOC45M0wxNS44NiAyNy41MkMxNS42ODgzIDI3LjQzNTkgMTUuNTc5NiAyNy4yNjEyIDE1LjU4IDI3LjA3VjIwLjE4QzE1LjU3ODEgMjAuMDQ4MSAxNS41MjQyIDE5LjkyMjMgMTUuNDMgMTkuODNMOC4x'@; put 'NSAxMi40N0M4LjA1NTc5IDEyLjM3NzcgOC4wMDE4OCAxMi4yNTE5IDggMTIuMTJaIi8+J31dLGpndD1bImZpbHRlci1ncmlkIix7b3V0bGluZTonPHBhdGggZD0iTTE1IDIzLjg2TDE3IDI0Ljg2VjE4LjI3QzE2Ljk5ODkgMTguMDA3NyAxNi44OTQ3IDE3Ljc1NjMgMTYuNzEgMTcuNTdMMTAu'@; put 'MjMgMTFIMjUuNzlMMTkuMzIgMTcuNTdDMTkuMTM1MyAxNy43NTYzIDE5LjAzMTEgMTguMDA3NyAxOS4wMyAxOC4yN0wxOSAyNkwyMSAyN1YxOC42OEwyNy41OCAxMkMyNy44NDMyIDExLjczMyAyNy45OTM2IDExLjM3NDkgMjggMTFWMTBDMjggOS40NDc3MiAyNy41NTIzIDkgMjcgOUg5Qzgu'@; put 'NDQ3NzIgOSA4IDkuNDQ3NzIgOCAxMFYxMUM4LjAwNjQgMTEuMzc0OSA4LjE1Njc5IDExLjczMyA4LjQyIDEyTDE1IDE4LjY4VjIzLjg2WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik04IDlWMTAuMTIxMkM4LjAwMTg4IDEwLjI1MzIgOC4wNTU4NSAxMC4zNzkxIDguMTUwMTUgMTAuNDcxNkwxNS40'@; put 'Mzc0IDE3LjgzOTNDMTUuNTMxNyAxNy45MzE3IDE1LjU4NTcgMTguMDU3NyAxNS41ODc2IDE4LjE4OTdWMjUuMDg3QzE1LjU4NzIgMjUuMjc4NCAxNS42OTYgMjUuNDUzMiAxNS44Njc5IDI1LjUzNzVMMTkuODIxOCAyNi45NDg5QzE5Ljk3NzEgMjcuMDI1IDIwLjE2MDcgMjcuMDE1NiAyMC4z'@; put 'MDczIDI2LjkyMzlDMjAuNDUzOSAyNi44MzIzIDIwLjU0MjkgMjYuNjcxNCAyMC41NDI1IDI2LjQ5ODVWMTguMDk5NkMyMC41NTY0IDE3Ljk2NDMgMjAuNjIwNyAxNy44MzkyIDIwLjcyMjcgMTcuNzQ5MkwyNy44NDk4IDEwLjQ5MTZDMjcuOTQ0MiAxMC4zOTkyIDI3Ljk5ODEgMTAuMjczMiAy'@; put 'OCAxMC4xNDEyVjlIOFoiLz4nfV0sdW9lPVsiZXJyb3Itc3RhbmRhcmQiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTggMjIuNjFDMTcuNDQ3NyAyMi42MSAxNyAyMi4xNjIzIDE3IDIxLjYxVjkuNjFDMTcgOS4wNTc3MiAxNy40NDc3IDguNjEgMTggOC42MUMxOC41NTIzIDguNjEgMTkgOS4wNTc3'@; put 'MiAxOSA5LjYxVjIxLjYxQzE5IDIyLjE2MjMgMTguNTUyMyAyMi42MSAxOCAyMi42MVoiLz48cGF0aCBkPSJNMTkuMzMgMjYuMDZDMTkuMzMgMjYuNzk0NSAxOC43MzQ1IDI3LjM5IDE4IDI3LjM5QzE3LjI2NTUgMjcuMzkgMTYuNjcgMjYuNzk0NSAxNi42NyAyNi4wNkMxNi42NyAyNS4zMjU1'@; put 'IDE3LjI2NTUgMjQuNzMgMTggMjQuNzNDMTguNzM0NSAyNC43MyAxOS4zMyAyNS4zMjU1IDE5LjMzIDI2LjA2WiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMiAxOEMyIDI2LjgzNjYgOS4xNjM0NCAzNCAxOCAzNEMyMi4yNDM1IDM0IDI2LjMx'@; put 'MzEgMzIuMzE0MyAyOS4zMTM3IDI5LjMxMzdDMzIuMzE0MyAyNi4zMTMxIDM0IDIyLjI0MzUgMzQgMThDMzQgOS4xNjM0NCAyNi44MzY2IDIgMTggMkM5LjE2MzQ0IDIgMiA5LjE2MzQ0IDIgMThaTTQgMThDNCAxMC4yNjggMTAuMjY4IDQgMTggNEMyNS43MzIgNCAzMiAxMC4yNjggMzIgMThD'@; put 'MzIgMjUuNzMyIDI1LjczMiAzMiAxOCAzMkMxMC4yNjggMzIgNCAyNS43MzIgNCAxOFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTggMkM5LjE2IDIgMiA5LjE2IDIgMThDMiAyNi44NCA5LjE2IDM0IDE4IDM0QzIyLjI0IDM0IDI2LjMxIDMyLjMxIDI5LjMxIDI5LjMxQzMyLjMxIDI2LjMxIDM0'@; put 'IDIyLjI0IDM0IDE4QzM0IDkuMTYgMjYuODQgMiAxOCAyWk0xNyA5LjYxQzE3IDkuMDYgMTcuNDUgOC42MSAxOCA4LjYxQzE4LjU1IDguNjEgMTkgOS4wNiAxOSA5LjYxVjIxLjYxQzE5IDIyLjE2IDE4LjU1IDIyLjYxIDE4IDIyLjYxQzE3LjQ1IDIyLjYxIDE3IDIyLjE2IDE3IDIxLjYxVjku'@; put 'NjFaTTE4IDI3LjI2QzE3LjM0IDI3LjI2IDE2LjggMjYuNzIgMTYuOCAyNi4wNkMxNi44IDI1LjQgMTcuMzQgMjQuODYgMTggMjQuODZDMTguNjYgMjQuODYgMTkuMiAyNS40IDE5LjIgMjYuMDZDMTkuMiAyNi43MiAxOC42NiAyNy4yNiAxOCAyNy4yNloiLz4nfV0sVWd0PVsiaGVscCIse291'@; put 'dGxpbmU6JzxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMiAxOEMyIDkuMTYzNDQgOS4xNjM0NCAyIDE4IDJDMjIuMjQzNSAyIDI2LjMxMzEgMy42ODU3MSAyOS4zMTM3IDYuNjg2MjlDMzIuMzE0MyA5LjY4Njg3IDM0IDEzLjc1NjUgMzQgMThDMzQg'@; put 'MjYuODM2NiAyNi44MzY2IDM0IDE4IDM0QzkuMTYzNDQgMzQgMiAyNi44MzY2IDIgMThaTTQgMThDNCAyNS43MzIgMTAuMjY4IDMyIDE4IDMyQzIxLjcxMyAzMiAyNS4yNzQgMzAuNTI1IDI3Ljg5OTUgMjcuODk5NUMzMC41MjUgMjUuMjc0IDMyIDIxLjcxMyAzMiAxOEMzMiAxMC4yNjggMjUu'@; put 'NzMyIDQgMTggNEMxMC4yNjggNCA0IDEwLjI2OCA0IDE4Wk0xOC4yOSA4LjkyQzE2LjA5NjEgOC44ODM3NCAxMy45OTk4IDkuODI1NiAxMi41NyAxMS40OUMxMi4zNzE4IDExLjY3MzcgMTIuMjU2MyAxMS45Mjk4IDEyLjI1IDEyLjJDMTIuMjQ5OSAxMi40NDkzIDEyLjM1MDkgMTIuNjg4IDEy'@; put 'LjUzIDEyLjg2MTRDMTIuNzA5MSAxMy4wMzQ4IDEyLjk1MDggMTMuMTI4MSAxMy4yIDEzLjEyQzEzLjQ2NDIgMTMuMTEzNSAxMy43MTY4IDEzLjAxMDMgMTMuOTEgMTIuODNDMTQuOTkxNiAxMS41NjI1IDE2LjU3MzcgMTAuODMxNyAxOC4yNCAxMC44M0MyMC42IDEwLjgzIDIyLjA3IDEyLjM1'@; put 'IDIyLjA3IDE0LjI0VjE0LjI5QzIyLjA3IDE2LjUgMjAuMzEgMTcuNzMgMTcuNTMgMTcuOTRDMTcuMzAyMyAxNy45NDg4IDE3LjA4OTIgMTguMDU0MiAxNi45NDQxIDE4LjIyOTlDMTYuNzk5IDE4LjQwNTYgMTYuNzM1NyAxOC42MzQ4IDE2Ljc3IDE4Ljg2VjIxLjYxQzE2LjgyMTUgMjIuMTIy'@; put 'OSAxNy4yNTQ1IDIyLjUxMjYgMTcuNzcgMjIuNTFIMTcuODhDMTguMzkyOSAyMi40NTg1IDE4Ljc4MjYgMjIuMDI1NSAxOC43OCAyMS41MVYxOS40NUMyMS43OCAxOS4wMyAyNC4yMSAxNy40NSAyNC4yMSAxNC4xN1YxNC4xMkMyNC4xOCAxMS4xMiAyMS44NCA4LjkyIDE4LjI5IDguOTJaTTE5'@; put 'LjAzIDI2LjJDMTkuMDMgMjYuODkwNCAxOC40NzA0IDI3LjQ1IDE3Ljc4IDI3LjQ1QzE3LjA4OTYgMjcuNDUgMTYuNTMgMjYuODkwNCAxNi41MyAyNi4yQzE2LjUzIDI1LjUwOTYgMTcuMDg5NiAyNC45NSAxNy43OCAyNC45NUMxOC40NzA0IDI0Ljk1IDE5LjAzIDI1LjUwOTYgMTkuMDMgMjYu'@; put 'MloiLz4nLG91dGxpbmVCYWRnZWQ6JzxwYXRoIGQ9Ik0zMy4wMDEzIDEyLjc2ODlDMzIuMzk1OSAxMy4wNDYyIDMxLjc1NTkgMTMuMjQwNiAzMS4wOTg2IDEzLjM0NjdDMzMuMjYzNiAxOS41MTA4IDMwLjg3NjMgMjYuMzUyOCAyNS4zNDY1IDI5LjgzMkMxOS44MTY3IDMzLjMxMTIgMTIuNjE1'@; put 'NCAzMi41MDIgNy45OTU2OSAyNy44ODIyQzMuMzc1OTcgMjMuMjYyNSAyLjU2Njc0IDE2LjA2MTMgNi4wNDU5MiAxMC41MzE1QzkuNTI1MDkgNS4wMDE2MiAxNi4zNjcxIDIuNjE0MjkgMjIuNTMxMiA0Ljc3OTM4QzIyLjYzNzUgNC4xMjIwNSAyMi44MzE4IDMuNDgyMDQgMjMuMTA5IDIuODc2'@; put 'NjNDMTYuMDY0OSAwLjQ0MDk0NiA4LjI3MTk5IDMuMTkyMDUgNC4zMTgyMyA5LjUxMDI5QzAuMzY0NDc2IDE1LjgyODUgMS4yOTczNiAyNC4wMzk5IDYuNTY3NjcgMjkuMzEwM0MxMS44MzggMzQuNTgwNiAyMC4wNDk0IDM1LjUxMzUgMjYuMzY3NiAzMS41NTk3QzMyLjY4NTkgMjcuNjA1OSAz'@; put 'NS40MzcgMTkuODEzMSAzMy4wMDEzIDEyLjc2ODlaIi8+PHBhdGggZD0iTTE3LjcxOTYgMjcuMzUzM0MxOC40MDczIDI3LjM1MzMgMTguOTY0OCAyNi43OTU4IDE4Ljk2NDggMjYuMTA4MUMxOC45NjQ4IDI1LjQyMDMgMTguNDA3MyAyNC44NjI4IDE3LjcxOTYgMjQuODYyOEMxNy4wMzE4IDI0'@; put 'Ljg2MjggMTYuNDc0MyAyNS40MjAzIDE2LjQ3NDMgMjYuMTA4MUMxNi40NzQzIDI2Ljc5NTggMTcuMDMxOCAyNy4zNTMzIDE3LjcxOTYgMjcuMzUzM1oiLz48cGF0aCBkPSJNMjQuMDk1MyAxNC4wNzM5VjE0LjEyMzhDMjQuMDk1MyAxNy4zOTEzIDIxLjY3NDUgMTguOTM1NCAxOC43MjU3IDE5'@; put 'LjM4MzdWMjEuNDM1OUMxOC43MjgzIDIxLjk0OTQgMTguMzQwMSAyMi4zODA3IDE3LjgyOTEgMjIuNDMyMUgxNy43MTk2QzE3LjIwNiAyMi40MzQ3IDE2Ljc3NDcgMjIuMDQ2NSAxNi43MjMzIDIxLjUzNTVWMTguNzk1OUMxNi42ODkxIDE4LjU3MTYgMTYuNzUyMiAxOC4zNDMyIDE2Ljg5Njgg'@; put 'MTguMTY4MkMxNy4wNDEzIDE3Ljk5MzIgMTcuMjUzNyAxNy44ODgyIDE3LjQ4MDUgMTcuODc5NEMyMC4yNDk5IDE3LjY3MDIgMjIuMDAzMiAxNi40NDQ5IDIyLjAwMzIgMTQuMjQzM1YxNC4xOTM1QzIyLjAwMzIgMTIuMzEwNyAyMC41Mzg4IDEwLjc5NjQgMTguMTg3OCAxMC43OTY0QzE2LjUy'@; put 'NzggMTAuNzk4MiAxNC45NTE3IDExLjUyNjEgMTMuODc0MiAxMi43ODg4QzEzLjY4MTcgMTIuOTY4NCAxMy40MzAxIDEzLjA3MTIgMTMuMTY2OSAxMy4wNzc3QzEyLjkxODcgMTMuMDg1OCAxMi42Nzc4IDEyLjk5MjkgMTIuNDk5NCAxMi44MjAxQzEyLjMyMSAxMi42NDczIDEyLjIyMDQgMTIu'@; put 'NDA5NiAxMi4yMjA1IDEyLjE2MTJDMTIuMjI2OCAxMS44OTIxIDEyLjM0MTggMTEuNjM2OSAxMi41MzkzIDExLjQ1MzlDMTMuOTYzNyA5Ljc5NTg1IDE2LjA1MiA4Ljg1NzU3IDE4LjIzNzYgOC44OTM2OUMyMS43NjQxIDguODkzNjkgMjQuMDk1MyAxMS4wODUzIDI0LjA5NTMgMTQuMDczOVoi'@; put 'Lz48cGF0aCBkPSJNMzAgMTFDMzIuNzYxNCAxMSAzNSA4Ljc2MTQyIDM1IDZDMzUgMy4yMzg1OCAzMi43NjE0IDEgMzAgMUMyNy4yMzg2IDEgMjUgMy4yMzg1OCAyNSA2QzI1IDguNzYxNDIgMjcuMjM4NiAxMSAzMCAxMVoiLz4nLHNvbGlkOic8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNs'@; put 'aXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE4IDJDOS4xNjM0NCAyIDIgOS4xNjM0NCAyIDE4QzIgMjYuODM2NiA5LjE2MzQ0IDM0IDE4IDM0QzI2LjgzNjYgMzQgMzQgMjYuODM2NiAzNCAxOEMzNCAxMy43NTY1IDMyLjMxNDMgOS42ODY4NyAyOS4zMTM3IDYuNjg2MjlDMjYuMzEzMSAzLjY4NTcx'@; put 'IDIyLjI0MzUgMiAxOCAyWk0xNy43OCAyNy44NUMxNy4xMTI2IDI3Ljg1IDE2LjUxMSAyNy40NDggMTYuMjU1NiAyNi44MzE0QzE2LjAwMDIgMjYuMjE0OSAxNi4xNDE0IDI1LjUwNTIgMTYuNjEzMyAyNS4wMzMzQzE3LjA4NTIgMjQuNTYxNCAxNy43OTQ5IDI0LjQyMDIgMTguNDExNCAyNC42'@; put 'NzU2QzE5LjAyOCAyNC45MzEgMTkuNDMgMjUuNTMyNiAxOS40MyAyNi4yQzE5LjQzIDI3LjExMTMgMTguNjkxMyAyNy44NSAxNy43OCAyNy44NVpNMTkuMTUgMjEuNTFWMTkuNzlDMjIuNjEgMTkuMiAyNC41OCAxNy4xNiAyNC41OCAxNC4xMUMyNC41OCAxMC44MSAyMiA4LjUxIDE4LjMgOC41'@; put 'MUMxNi4wMDA1IDguNDc0NTIgMTMuODAzMyA5LjQ1OTU2IDEyLjMgMTEuMkMxMi4wMzA0IDExLjQ2MzYgMTEuODc1OSAxMS44MjMgMTEuODcgMTIuMkMxMS44ODMgMTIuNzUxNiAxMi4yMjggMTMuMjQwNiAxMi43NDMyIDEzLjQzOEMxMy4yNTg1IDEzLjYzNTMgMTMuODQxOSAxMy41MDE4IDE0'@; put 'LjIyIDEzLjFDMTUuMjA5MiAxMS45MDY5IDE2LjY3MDQgMTEuMjA1NiAxOC4yMiAxMS4xOEMyMC4yNCAxMS4xOCAyMS42NSAxMi40MiAyMS42NSAxNC4yNUMyMS42NSAxNi44IDE5LjA0IDE3LjM4IDE3LjQ3IDE3LjVDMTcuMTQ0OCAxNy41MTc1IDE2Ljg0MDkgMTcuNjY3NCAxNi42MjkzIDE3'@; put 'LjkxNUMxNi40MTc2IDE4LjE2MjUgMTYuMzE2NyAxOC40ODYgMTYuMzUgMTguODFWMjEuNTdDMTYuMzYwNCAyMS45MjcyIDE2LjUxMzEgMjIuMjY1NSAxNi43NzQxIDIyLjUwOTZDMTcuMDM1MSAyMi43NTM3IDE3LjM4MjkgMjIuODgzNSAxNy43NCAyMi44N0gxNy44NUMxOC41NzUzIDIyLjgz'@; put 'MjkgMTkuMTQ1NiAyMi4yMzYyIDE5LjE1IDIxLjUxWiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzMuMDAxMyAxMi43Njg5QzMwLjE2NTkgMTQuMDY4OCAyNi44MjEyIDEzLjQ2NzkgMjQuNjE1NiAxMS4yNjIzQzIy'@; put 'LjQxMDEgOS4wNTY3NCAyMS44MDkxIDUuNzEyIDIzLjEwOSAyLjg3NjYzQzE2LjA2NDkgMC40NDA5NDYgOC4yNzE5OSAzLjE5MjA1IDQuMzE4MjMgOS41MTAyOUMwLjM2NDQ3NiAxNS44Mjg1IDEuMjk3MzYgMjQuMDM5OSA2LjU2NzY3IDI5LjMxMDNDMTEuODM4IDM0LjU4MDYgMjAuMDQ5NCAz'@; put 'NS41MTM1IDI2LjM2NzYgMzEuNTU5N0MzMi42ODU5IDI3LjYwNTkgMzUuNDM3IDE5LjgxMzEgMzMuMDAxMyAxMi43Njg5Wk0xNy43MTk2IDI3LjcxMkMxNy4wNTQ3IDI3LjcxMiAxNi40NTU0IDI3LjMxMTUgMTYuMjAwOSAyNi42OTczQzE1Ljk0NjUgMjYuMDgzIDE2LjA4NzIgMjUuMzc2IDE2'@; put 'LjU1NzMgMjQuOTA1OUMxNy4wMjc0IDI0LjQzNTggMTcuNzM0NCAyNC4yOTUyIDE4LjM0ODYgMjQuNTQ5NkMxOC45NjI4IDI0LjgwNCAxOS4zNjMzIDI1LjQwMzQgMTkuMzYzMyAyNi4wNjgyQzE5LjM3NCAyNi41MTEgMTkuMjA1NiAyNi45Mzk0IDE4Ljg5NjIgMjcuMjU2NEMxOC41ODY3IDI3'@; put 'LjU3MzMgMTguMTYyNSAyNy43NTE5IDE3LjcxOTYgMjcuNzUxOFYyNy43MTJaTTE5LjA4NDQgMjEuMzk2VjE5LjcyMjRDMjIuNTMxMiAxOS4xMzQ3IDI0LjQ5MzcgMTcuMTAyNCAyNC40OTM3IDE0LjAyNDFDMjQuNDkzNyAxMC43MzY3IDIxLjkyMzUgOC40NDU0IDE4LjIzNzYgOC40NDU0QzE1'@; put 'Ljk0NjggOC40MTAwNiAxMy43NTggOS4zOTEzNiAxMi4yNjA0IDExLjEyNTJDMTEuOTkxOCAxMS4zODc4IDExLjgzNzkgMTEuNzQ1OCAxMS44MzIgMTIuMTIxNEMxMS44NDUgMTIuNjcwOSAxMi4xODg2IDEzLjE1ODEgMTIuNzAxOSAxMy4zNTQ3QzEzLjIxNTIgMTMuNTUxMiAxMy43OTY0IDEz'@; put 'LjQxODIgMTQuMTczMSAxMy4wMThDMTUuMTU4NiAxMS44Mjk0IDE2LjYxNDEgMTEuMTMwNyAxOC4xNTc5IDExLjEwNTNDMjAuMTcwMiAxMS4xMDUzIDIxLjU3NDkgMTIuMzQwNiAyMS41NzQ5IDE0LjE2MzZDMjEuNTc0OSAxNi43MDM5IDE4Ljk3NDggMTcuMjgxNyAxNy40MTA3IDE3LjQwMTND'@; put 'MTcuMDg2NyAxNy40MTg2IDE2Ljc4NCAxNy41NjgxIDE2LjU3MzIgMTcuODE0N0MxNi4zNjIzIDE4LjA2MTMgMTYuMjYxOCAxOC4zODM1IDE2LjI5NSAxOC43MDYzVjIxLjQ1NThDMTYuMzA1NCAyMS44MTE3IDE2LjQ1NzUgMjIuMTQ4NyAxNi43MTc1IDIyLjM5MTlDMTYuOTc3NSAyMi42MzUx'@; put 'IDE3LjMyMzkgMjIuNzY0MyAxNy42Nzk3IDIyLjc1MDlIMTcuNzg5M0MxOC41MTE4IDIyLjcxMzkgMTkuMDggMjIuMTE5NSAxOS4wODQ0IDIxLjM5NloiLz48cGF0aCBkPSJNMzAgMTFDMzIuNzYxNCAxMSAzNSA4Ljc2MTQyIDM1IDZDMzUgMy4yMzg1OCAzMi43NjE0IDEgMzAgMUMyNy4yMzg2'@; put 'IDEgMjUgMy4yMzg1OCAyNSA2QzI1IDguNzYxNDIgMjcuMjM4NiAxMSAzMCAxMVoiLz4nfV0semd0PVsiaW5mby1zdGFuZGFyZCIse291dGxpbmU6JzxwYXRoIGQ9Ik0yIDE4QzIgMjYuODQgOS4xNiAzNCAxOCAzNEMyMi4yNCAzNCAyNi4zMSAzMi4zMSAyOS4zMSAyOS4zMUMzMi4zMSAyNi4z'@; put 'MSAzNCAyMi4yNCAzNCAxOEMzNCA5LjE2IDI2Ljg0IDIgMTggMkM5LjE2IDIgMiA5LjE2IDIgMThaTTQgMThDNCAxMC4yNyAxMC4yNyA0IDE4IDRDMjUuNzMgNCAzMiAxMC4yNyAzMiAxOEMzMiAyNS43MyAyNS43MyAzMiAxOCAzMkMxMC4yNyAzMiA0IDI1LjczIDQgMThaTTIxIDI1SDE5VjE0'@; put 'SDE2QzE1LjQ1IDE0IDE1IDE0LjQ1IDE1IDE1QzE1IDE1LjU1IDE1LjQ1IDE2IDE2IDE2SDE3VjI1SDE1QzE0LjQ1IDI1IDE0IDI1LjQ1IDE0IDI2QzE0IDI2LjU1IDE0LjQ1IDI3IDE1IDI3SDIxQzIxLjU1IDI3IDIyIDI2LjU1IDIyIDI2QzIyIDI1LjQ1IDIxLjU1IDI1IDIxIDI1Wk0xOS4z'@; put 'NyAxMC40NUMxOS4zNyAxMS4yMiAxOC43NCAxMS44NSAxNy45NyAxMS44NUMxNy4yIDExLjg1IDE2LjU3IDExLjIyIDE2LjU3IDEwLjQ1QzE2LjU3IDkuNjggMTcuMiA5LjA1IDE3Ljk3IDkuMDVDMTguNzQgOS4wNSAxOS4zNyA5LjY4IDE5LjM3IDEwLjQ1WiIvPicsc29saWQ6JzxwYXRoIGQ9'@; put 'Ik0xOCAyQzkuMTYgMiAyIDkuMTYgMiAxOEMyIDI2Ljg0IDkuMTYgMzQgMTggMzRDMjIuMjQgMzQgMjYuMzEgMzIuMzEgMjkuMzEgMjkuMzFDMzIuMzEgMjYuMzEgMzQgMjIuMjQgMzQgMThDMzQgOS4xNiAyNi44NCAyIDE4IDJaTTE3Ljk3IDguODVDMTguODUgOC44NSAxOS41NyA5LjU3IDE5'@; put 'LjU3IDEwLjQ1QzE5LjU3IDExLjMzIDE4Ljg1IDEyLjA1IDE3Ljk3IDEyLjA1QzE3LjA5IDEyLjA1IDE2LjM3IDExLjMzIDE2LjM3IDEwLjQ1QzE2LjM3IDkuNTcgMTcuMDkgOC44NSAxNy45NyA4Ljg1Wk0yMSAyNy4ySDE1QzE0LjM0IDI3LjIgMTMuOCAyNi42NiAxMy44IDI2QzEzLjggMjUu'@; put 'MzQgMTQuMzQgMjQuOCAxNSAyNC44SDE2LjhWMTYuMkgxNkMxNS4zNCAxNi4yIDE0LjggMTUuNjYgMTQuOCAxNUMxNC44IDE0LjM0IDE1LjM0IDEzLjggMTYgMTMuOEgxOS4yVjI0LjhIMjFDMjEuNjYgMjQuOCAyMi4yIDI1LjM0IDIyLjIgMjZDMjIuMiAyNi42NiAyMS42NiAyNy4yIDIxIDI3'@; put 'LjJaIi8+J31dLFdndD1bIm5vdGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjgsMzBINlY4SDE5LjIybDItMkg2QTIsMiwwLDAsMCw0LDhWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1bC0yLDJaIi8+PHBhdGggZD0iTTMzLjUzLDUuODQsMzAuMTYsMi40N2ExLjYxLDEuNjEs'@; put 'MCwwLDAtMi4yOCwwTDE0LjE3LDE2LjI2bC0xLjExLDQuODFBMS42MSwxLjYxLDAsMCwwLDE0LjYzLDIzLDEuNjksMS42OSwwLDAsMCwxNSwyM2w0Ljg1LTEuMDdMMzMuNTMsOC4xMkExLjYxLDEuNjEsMCwwLDAsMzMuNTMsNS44NFpNMTguODEsMjAuMDhsLTMuNjYuODFMMTYsMTcuMjYsMjYu'@; put 'MzIsNi44N2wyLjgyLDIuODJaTTMwLjI3LDguNTYsMjcuNDUsNS43NCwyOSw0LjE2LDMxLjg0LDdaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTMzLDYuNCwyOS4zLDIuN2ExLjcxLDEuNzEsMCwwLDAtMi4zNiwwTDIzLjY1LDZINkEyLDIsMCwwLDAsNCw4VjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwy'@; put 'LDAsMCwwLDItMlYxMS43NmwzLTNBMS42NywxLjY3LDAsMCwwLDMzLDYuNFpNMTguODMsMjAuMTNsLTQuMTkuOTMsMS00LjE1LDkuNTUtOS41NywzLjIzLDMuMjNaTTI5LjUsOS40MywyNi4yNyw2LjJsMS44NS0xLjg1LDMuMjMsMy4yM1oiLz4nfV0sZG9lPVsic3VjY2Vzcy1zdGFuZGFyZCIs'@; put 'e291dGxpbmU6JzxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTggMkM5LjE2MzQ0IDIgMiA5LjE2MzQ0IDIgMThDMiAyNi44MzY2IDkuMTYzNDQgMzQgMTggMzRDMjYuODM2NiAzNCAzNCAyNi44MzY2IDM0IDE4QzM0IDEzLjc1NjUgMzIuMzE0MyA5'@; put 'LjY4Njg3IDI5LjMxMzcgNi42ODYyOUMyNi4zMTMxIDMuNjg1NzEgMjIuMjQzNSAyIDE4IDJaTTE4IDMyQzEwLjI2OCAzMiA0IDI1LjczMiA0IDE4QzQgMTAuMjY4IDEwLjI2OCA0IDE4IDRDMjUuNzMyIDQgMzIgMTAuMjY4IDMyIDE4QzMyIDIxLjcxMyAzMC41MjUgMjUuMjc0IDI3Ljg5OTUg'@; put 'MjcuODk5NUMyNS4yNzQgMzAuNTI1IDIxLjcxMyAzMiAxOCAzMlpNMjYuNTkgMTIuMUMyNi45OCAxMS43MTIzIDI3LjYxIDExLjcxMjMgMjggMTIuMUMyOC4xODkzIDEyLjI4NzggMjguMjk1OCAxMi41NDM0IDI4LjI5NTggMTIuODFDMjguMjk1OCAxMy4wNzY2IDI4LjE4OTMgMTMuMzMyMiAy'@; put 'OCAxMy41MkwxNS40OSAyNkw4IDE4LjUzQzcuNjE4OTIgMTguMTE4NSA3LjY0MzU1IDE3LjQ3NjEgOC4wNTUgMTcuMDk1QzguNDY2NDUgMTYuNzEzOSA5LjEwODkyIDE2LjczODUgOS40OSAxNy4xNUwxNS40OSAyMy4xNUwyNi41OSAxMi4xWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0yOS4zMSA2'@; put 'LjY5QzI2LjMxIDMuNjkgMjIuMjQgMiAxOCAyQzkuMTYgMiAyIDkuMTYgMiAxOEMyIDI2Ljg0IDkuMTYgMzQgMTggMzRDMjYuODQgMzQgMzQgMjYuODQgMzQgMThDMzQgMTMuNzYgMzIuMzEgOS42OSAyOS4zMSA2LjY5Wk0yOC4xNCAxMy42NEwxNS42MyAyNi4xMkwxNS40OSAyNi4yNkwxNS4z'@; put 'NSAyNi4xMkw3Ljg1IDE4LjY0QzcuMzkgMTguMTUgNy40MiAxNy4zOCA3LjkyIDE2LjkyQzguMTUgMTYuNzEgOC40NCAxNi42IDguNzUgMTYuNkM5LjA5IDE2LjYgOS40MSAxNi43NCA5LjY0IDE2Ljk4TDE1LjUgMjIuODRMMjYuNDYgMTEuOTNDMjYuNjkgMTEuNyAyNi45OSAxMS41OCAyNy4z'@; put 'MSAxMS41OEMyNy42MyAxMS41OCAyNy45MyAxMS43IDI4LjE2IDExLjkzQzI4LjM5IDEyLjE1IDI4LjUxIDEyLjQ2IDI4LjUxIDEyLjc4QzI4LjUxIDEzLjEgMjguMzggMTMuNDEgMjguMTYgMTMuNjNMMjguMTQgMTMuNjRaIi8+J31dLFlndD1bIndhcm5pbmctc3RhbmRhcmQiLHtvdXRsaW5l'@; put 'Oic8cGF0aCBkPSJNMTguMDAwMSAyMi45OTMyQzE4LjU1MDEgMjIuOTkzMiAxOS4wMDAxIDIyLjU0MzQgMTkuMDAwMSAyMS45OTM2VjEwLjk5NzVDMTkuMDAwMSAxMC40NDc3IDE4LjU1MDEgOS45OTc4NiAxOC4wMDAxIDkuOTk3ODZDMTcuNDUwMSA5Ljk5Nzg2IDE3LjAwMDEgMTAuNDQ3NyAx'@; put 'Ny4wMDAxIDEwLjk5NzVWMjEuOTkzNkMxNy4wMDAxIDIyLjU0MzQgMTcuNDUwMSAyMi45OTMyIDE4LjAwMDEgMjIuOTkzMlpNMzMuNTYwMSAyNy4yMTE3TDIwLjc4MDEgNS41Nzk0NEMyMC4yMDAxIDQuNTg5NzkgMTkuMTYwMSA0IDE4LjAwMDEgNEMxNi44NDAxIDQgMTUuODAwMSA0LjU4OTc5'@; put 'IDE1LjIyMDEgNS41Nzk0NEwyLjQ0MDEgMjcuMjExN0MxLjg1MDEgMjguMjExNCAxLjg1MDEgMjkuNDAwOSAyLjQzMDEgMzAuNDAwNkMzLjAxMDEgMzEuNDAwMiA0LjA2MDEgMzIgNS4yMjAxIDMySDMwLjc3MDFDMzEuOTQwMSAzMiAzMi45ODAxIDMxLjQwMDIgMzMuNTYwMSAzMC40MDA2QzM0'@; put 'LjE0MDEgMjkuNDAwOSAzNC4xNDAxIDI4LjIxMTQgMzMuNTUwMSAyNy4yMTE3SDMzLjU2MDFaTTMxLjgxMDEgMjkuNDAwOUMzMS43MTAxIDI5LjU4MDkgMzEuNDAwMSAyOS45OTA3IDMwLjc4MDEgMjkuOTkwN0g1LjIzMDFDNC42MTAxIDI5Ljk5MDcgNC4zMDAxIDI5LjU4MDkgNC4yMDAxIDI5'@; put 'LjQwMDlDNC4xMDAxIDI5LjIyMSAzLjg5MDEgMjguNzUxMiA0LjIwMDEgMjguMjMxM0wxNi45ODAxIDYuNTg5MDhDMTcuMjkwMSA2LjA2OTI2IDE3LjgwMDEgNi4wMDkyOCAxOC4wMDAxIDYuMDA5MjhDMTguMjAwMSA2LjAwOTI4IDE4LjcxMDEgNi4wNjkyNiAxOS4wMjAxIDYuNTg5MDhMMzEu'@; put 'NzkwMSAyOC4yMjEzQzMyLjEwMDEgMjguNzUxMiAzMS45MDAxIDI5LjIyMSAzMS43OTAxIDI5LjM5MDlMMzEuODEwMSAyOS40MDA5Wk0xOC4wMTAxIDI1LjAwMjVDMTcuMjgwMSAyNS4wMDI1IDE2LjY4MDEgMjUuNjAyMyAxNi42ODAxIDI2LjMzMkMxNi42ODAxIDI3LjA2MTggMTcuMjgwMSAy'@; put 'Ny42NjE1IDE4LjAxMDEgMjcuNjYxNUMxOC43NDAxIDI3LjY2MTUgMTkuMzQwMSAyNy4wNjE4IDE5LjM0MDEgMjYuMzMyQzE5LjM0MDEgMjUuNjAyMyAxOC43NDAxIDI1LjAwMjUgMTguMDEwMSAyNS4wMDI1WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0zMy41NjAxIDI3LjIyTDIwLjc4MDEgNS41'@; put 'OEMyMC4yMDAxIDQuNTkgMTkuMTYwMSA0IDE4LjAwMDEgNEMxNi44NDAxIDQgMTUuODAwMSA0LjU5IDE1LjIyMDEgNS41OEwyLjQ0MDA2IDI3LjIyQzEuODUwMDYgMjguMjIgMS44NTAwNiAyOS40MSAyLjQ0MDA2IDMwLjQxQzMuMDIwMDYgMzEuNDEgNC4wNzAwNiAzMi4wMSA1LjIzMDA2IDMy'@; put 'LjAxSDMwLjc4MDFDMzEuOTUwMSAzMi4wMSAzMi45OTAxIDMxLjQxIDMzLjU3MDEgMzAuNDFDMzQuMTUwMSAyOS40MSAzNC4xNTAxIDI4LjIyIDMzLjU2MDEgMjcuMjJaTTE2LjkwMDEgMTFDMTYuOTAwMSAxMC4zOSAxNy4zOTAxIDkuOSAxOC4wMDAxIDkuOUMxOC42MTAxIDkuOSAxOS4xMDAx'@; put 'IDEwLjM5IDE5LjEwMDEgMTFWMjJDMTkuMTAwMSAyMi42MSAxOC42MTAxIDIzLjEgMTguMDAwMSAyMy4xQzE3LjM5MDEgMjMuMSAxNi45MDAxIDIyLjYxIDE2LjkwMDEgMjJWMTFaTTE4LjAwMDEgMjcuNzZDMTcuMjEwMSAyNy43NiAxNi41NzAxIDI3LjEyIDE2LjU3MDEgMjYuMzNDMTYuNTcw'@; put 'MSAyNS41NCAxNy4yMTAxIDI0LjkgMTguMDAwMSAyNC45QzE4Ljc5MDEgMjQuOSAxOS40MzAxIDI1LjU0IDE5LjQzMDEgMjYuMzNDMTkuNDMwMSAyNy4xMiAxOC43OTAxIDI3Ljc2IDE4LjAwMDEgMjcuNzZaIi8+J31dLFpndD1bImNpcmNsZSIse291dGxpbmU6JzxwYXRoIGZpbGwtcnVsZT0i'@; put 'ZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNCAxOEM0IDEwLjI2OCAxMC4yNjggNCAxOCA0QzI1LjczMiA0IDMyIDEwLjI2OCAzMiAxOEMzMiAyNS43MzIgMjUuNzMyIDMyIDE4IDMyQzEwLjI2OCAzMiA0IDI1LjczMiA0IDE4Wk02IDE4QzYgMjQuNjI3NCAxMS4zNzI2IDMwIDE4'@; put 'IDMwQzIxLjE4MjYgMzAgMjQuMjM0OCAyOC43MzU3IDI2LjQ4NTMgMjYuNDg1M0MyOC43MzU3IDI0LjIzNDggMzAgMjEuMTgyNiAzMCAxOEMzMCAxMS4zNzI2IDI0LjYyNzQgNiAxOCA2QzExLjM3MjYgNiA2IDExLjM3MjYgNiAxOFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTggNEMxMC4yNjgg'@; put 'NCA0IDEwLjI2OCA0IDE4QzQgMjUuNzMyIDEwLjI2OCAzMiAxOCAzMkMyNS43MzIgMzIgMzIgMjUuNzMyIDMyIDE4QzMyIDEwLjI2OCAyNS43MzIgNCAxOCA0WiIvPid9XSxHZ3Q9WyJkb3QtY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4IDExQzE5LjM4NDUgMTEgMjAuNzM3OSAxMS40'@; put 'MTA1IDIxLjg4OSAxMi4xNzk3QzIzLjA0MDEgMTIuOTQ4OSAyMy45Mzc0IDE0LjA0MjEgMjQuNDY3MiAxNS4zMjEyQzI0Ljk5NyAxNi42MDAzIDI1LjEzNTYgMTguMDA3OCAyNC44NjU1IDE5LjM2NTZDMjQuNTk1NCAyMC43MjM1IDIzLjkyODcgMjEuOTcwOCAyMi45NDk4IDIyLjk0OThDMjEu'@; put 'OTcwOCAyMy45Mjg3IDIwLjcyMzUgMjQuNTk1NCAxOS4zNjU2IDI0Ljg2NTVDMTguMDA3OCAyNS4xMzU2IDE2LjYwMDMgMjQuOTk3IDE1LjMyMTIgMjQuNDY3MkMxNC4wNDIxIDIzLjkzNzQgMTIuOTQ4OSAyMy4wNDAxIDEyLjE3OTcgMjEuODg5QzExLjQxMDUgMjAuNzM3OSAxMSAxOS4zODQ1'@; put 'IDExIDE4QzExIDE2LjE0MzUgMTEuNzM3NSAxNC4zNjMgMTMuMDUwMyAxMy4wNTAzQzE0LjM2MyAxMS43Mzc1IDE2LjE0MzUgMTEgMTggMTFaIi8+PHBhdGggZD0iTTE4IDM0QzE0LjgzNTUgMzQgMTEuNzQyMSAzMy4wNjE2IDkuMTEwODggMzEuMzAzNUM2LjQ3OTcgMjkuNTQ1NCA0LjQyODk0'@; put 'IDI3LjA0NjYgMy4yMTc5MyAyNC4xMjI5QzIuMDA2OTMgMjEuMTk5MyAxLjY5MDA4IDE3Ljk4MjMgMi4zMDc0NCAxNC44Nzg2QzIuOTI0ODEgMTEuNzc0OSA0LjQ0ODY2IDguOTIzOTQgNi42ODYzIDYuNjg2M0M4LjkyMzk0IDQuNDQ4NjYgMTEuNzc0OSAyLjkyNDgxIDE0Ljg3ODYgMi4zMDc0'@; put 'NEMxNy45ODIzIDEuNjkwMDggMjEuMTk5MyAyLjAwNjkzIDI0LjEyMjkgMy4yMTc5M0MyNy4wNDY2IDQuNDI4OTQgMjkuNTQ1NCA2LjQ3OTcgMzEuMzAzNSA5LjExMDg4QzMzLjA2MTYgMTEuNzQyMSAzNCAxNC44MzU1IDM0IDE4QzM0IDIyLjI0MzUgMzIuMzE0MyAyNi4zMTMxIDI5LjMxMzcg'@; put 'MjkuMzEzN0MyNi4zMTMxIDMyLjMxNDMgMjIuMjQzNSAzNCAxOCAzNFpNMTggNC4wMDAwMUMxNS4yMzExIDQuMDAwMDEgMTIuNTI0MyA0LjgyMTA5IDEwLjIyMiA2LjM1OTQzQzcuOTE5NzQgNy44OTc3NyA2LjEyNTMyIDEwLjA4NDMgNS4wNjU2OSAxMi42NDI0QzQuMDA2MDcgMTUuMjAwNiAz'@; put 'LjcyODgyIDE4LjAxNTUgNC4yNjkwMSAyMC43MzEzQzQuODA5MjEgMjMuNDQ3IDYuMTQyNTggMjUuOTQxNiA4LjEwMDUxIDI3Ljg5OTVDMTAuMDU4NCAyOS44NTc0IDEyLjU1MyAzMS4xOTA4IDE1LjI2ODcgMzEuNzMxQzE3Ljk4NDUgMzIuMjcxMiAyMC43OTk0IDMxLjk5MzkgMjMuMzU3NiAz'@; put 'MC45MzQzQzI1LjkxNTcgMjkuODc0NyAyOC4xMDIyIDI4LjA4MDMgMjkuNjQwNiAyNS43NzhDMzEuMTc4OSAyMy40NzU3IDMyIDIwLjc2ODkgMzIgMThDMzIgMTQuMjg3IDMwLjUyNSAxMC43MjYgMjcuODk5NSA4LjEwMDUxQzI1LjI3NCA1LjQ3NSAyMS43MTMgNC4wMDAwMSAxOCA0LjAwMDAx'@; put 'WiIvPid9XTtmdW5jdGlvbiBob2UobixlPXJhKXtyZXR1cm4gbj1uPz8kZ3QsYWQoKHQscik9PntsZXQgaSxvPSEwO3Quc3Vic2NyaWJlKHZ1KHIsYT0+e2NvbnN0IGw9ZShhKTsob3x8IW4oaSxsKSkmJihvPSExLGk9bCxyLm5leHQoYSkpfSkpfSl9ZnVuY3Rpb24gJGd0KG4sZSl7cmV0dXJu'@; put 'IG49PT1lfWNsYXNzIEtndCBleHRlbmRzIEFye2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKX1zY2hlZHVsZShlLHQ9MCl7cmV0dXJuIHRoaXN9fWNvbnN0IHh6PXtzZXRJbnRlcnZhbChuLGUsLi4udCl7Y29uc3R7ZGVsZWdhdGU6cn09eHo7cmV0dXJuIHI/LnNldEludGVydmFsP3Iuc2V0SW50'@; put 'ZXJ2YWwobixlLC4uLnQpOnNldEludGVydmFsKG4sZSwuLi50KX0sY2xlYXJJbnRlcnZhbChuKXtjb25zdHtkZWxlZ2F0ZTplfT14ejtyZXR1cm4oZT8uY2xlYXJJbnRlcnZhbHx8Y2xlYXJJbnRlcnZhbCkobil9LGRlbGVnYXRlOnZvaWQgMH07Y2xhc3MgZm9lIGV4dGVuZHMgS2d0e2NvbnN0'@; put 'cnVjdG9yKGUsdCl7c3VwZXIoZSx0KSx0aGlzLnNjaGVkdWxlcj1lLHRoaXMud29yaz10LHRoaXMucGVuZGluZz0hMX1zY2hlZHVsZShlLHQ9MCl7dmFyIHI7aWYodGhpcy5jbG9zZWQpcmV0dXJuIHRoaXM7dGhpcy5zdGF0ZT1lO2NvbnN0IGk9dGhpcy5pZCxvPXRoaXMuc2NoZWR1bGVyO3Jl'@; put 'dHVybiBudWxsIT1pJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKG8saSx0KSksdGhpcy5wZW5kaW5nPSEwLHRoaXMuZGVsYXk9dCx0aGlzLmlkPW51bGwhPT0ocj10aGlzLmlkKSYmdm9pZCAwIT09cj9yOnRoaXMucmVxdWVzdEFzeW5jSWQobyx0aGlzLmlkLHQpLHRoaXN9cmVxdWVz'@; put 'dEFzeW5jSWQoZSx0LHI9MCl7cmV0dXJuIHh6LnNldEludGVydmFsKGUuZmx1c2guYmluZChlLHRoaXMpLHIpfXJlY3ljbGVBc3luY0lkKGUsdCxyPTApe2lmKG51bGwhPXImJnRoaXMuZGVsYXk9PT1yJiYhMT09PXRoaXMucGVuZGluZylyZXR1cm4gdDtudWxsIT10JiZ4ei5jbGVhckludGVy'@; put 'dmFsKHQpfWV4ZWN1dGUoZSx0KXtpZih0aGlzLmNsb3NlZClyZXR1cm4gbmV3IEVycm9yKCJleGVjdXRpbmcgYSBjYW5jZWxsZWQgYWN0aW9uIik7dGhpcy5wZW5kaW5nPSExO2NvbnN0IHI9dGhpcy5fZXhlY3V0ZShlLHQpO2lmKHIpcmV0dXJuIHI7ITE9PT10aGlzLnBlbmRpbmcmJm51bGwh'@; put 'PXRoaXMuaWQmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsdGhpcy5pZCxudWxsKSl9X2V4ZWN1dGUoZSx0KXtsZXQgaSxyPSExO3RyeXt0aGlzLndvcmsoZSl9Y2F0Y2gobyl7cj0hMCxpPW98fG5ldyBFcnJvcigiU2NoZWR1bGVkIGFjdGlvbiB0aHJldyBm'@; put 'YWxzeSBlcnJvciIpfWlmKHIpcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSxpfXVuc3Vic2NyaWJlKCl7aWYoIXRoaXMuY2xvc2VkKXtjb25zdHtpZDplLHNjaGVkdWxlcjp0fT10aGlzLHthY3Rpb25zOnJ9PXQ7dGhpcy53b3JrPXRoaXMuc3RhdGU9dGhpcy5zY2hlZHVsZXI9bnVsbCx0aGlz'@; put 'LnBlbmRpbmc9ITEsVHQocix0aGlzKSxudWxsIT1lJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKHQsZSxudWxsKSksdGhpcy5kZWxheT1udWxsLHN1cGVyLnVuc3Vic2NyaWJlKCl9fX1jb25zdCBwb2U9e25vdzooKT0+KHBvZS5kZWxlZ2F0ZXx8RGF0ZSkubm93KCksZGVsZWdhdGU6'@; put 'dm9pZCAwfTtjbGFzcyB1RHtjb25zdHJ1Y3RvcihlLHQ9dUQubm93KXt0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3I9ZSx0aGlzLm5vdz10fXNjaGVkdWxlKGUsdD0wLHIpe3JldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsZSkuc2NoZWR1bGUocix0KX19dUQubm93PXBv'@; put 'ZS5ub3c7Y2xhc3MgZ29lIGV4dGVuZHMgdUR7Y29uc3RydWN0b3IoZSx0PXVELm5vdyl7c3VwZXIoZSx0KSx0aGlzLmFjdGlvbnM9W10sdGhpcy5fYWN0aXZlPSExfWZsdXNoKGUpe2NvbnN0e2FjdGlvbnM6dH09dGhpcztpZih0aGlzLl9hY3RpdmUpcmV0dXJuIHZvaWQgdC5wdXNoKGUpO2xl'@; put 'dCByO3RoaXMuX2FjdGl2ZT0hMDtkb3tpZihyPWUuZXhlY3V0ZShlLnN0YXRlLGUuZGVsYXkpKWJyZWFrfXdoaWxlKGU9dC5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEscil7Zm9yKDtlPXQuc2hpZnQoKTspZS51bnN1YnNjcmliZSgpO3Rocm93IHJ9fX1jb25zdCBBej1uZXcgZ29lKGZv'@; put 'ZSksWGd0PUF6O2Z1bmN0aW9uIE5iKG4sZT1Beil7cmV0dXJuIGFkKCh0LHIpPT57bGV0IGk9bnVsbCxvPW51bGwsYT1udWxsO2NvbnN0IGw9KCk9PntpZihpKXtpLnVuc3Vic2NyaWJlKCksaT1udWxsO2NvbnN0IGc9bztvPW51bGwsci5uZXh0KGcpfX07ZnVuY3Rpb24gdSgpe2NvbnN0IGc9'@; put 'YStuLEU9ZS5ub3coKTtpZihFPGcpcmV0dXJuIGk9dGhpcy5zY2hlZHVsZSh2b2lkIDAsZy1FKSx2b2lkIHIuYWRkKGkpO2woKX10LnN1YnNjcmliZSh2dShyLGc9PntvPWcsYT1lLm5vdygpLGl8fChpPWUuc2NoZWR1bGUodSxuKSxyLmFkZChpKSl9LCgpPT57bCgpLHIuY29tcGxldGUoKX0s'@; put 'dm9pZCAwLCgpPT57bz1pPW51bGx9KSl9KX1jb25zdCBRZ3Q9WyJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIl0sSmd0PVsiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSxlbXQ9WyJvbiIsIm9mZiJdO2Z1bmN0aW9uIEpnKG4sZSx0LHIpe2lmKFpuKHQpJiYo'@; put 'cj10LHQ9dm9pZCAwKSxyKXJldHVybiBKZyhuLGUsdCkucGlwZShWcmUocikpO2NvbnN0W2ksb109ZnVuY3Rpb24gcm10KG4pe3JldHVybiBabihuLmFkZEV2ZW50TGlzdGVuZXIpJiZabihuLnJlbW92ZUV2ZW50TGlzdGVuZXIpfShuKT9KZ3QubWFwKGE9Pmw9Pm5bYV0oZSxsLHQpKTpmdW5j'@; put 'dGlvbiB0bXQobil7cmV0dXJuIFpuKG4uYWRkTGlzdGVuZXIpJiZabihuLnJlbW92ZUxpc3RlbmVyKX0obik/UWd0Lm1hcChIU2UobixlKSk6ZnVuY3Rpb24gbm10KG4pe3JldHVybiBabihuLm9uKSYmWm4obi5vZmYpfShuKT9lbXQubWFwKEhTZShuLGUpKTpbXTtpZighaSYmUHJlKG4pKXJl'@; put 'dHVybiBHMChhPT5KZyhhLGUsdCkpKE4yKG4pKTtpZighaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGV2ZW50IHRhcmdldCIpO3JldHVybiBuZXcgaG8oYT0+e2NvbnN0IGw9KC4uLnUpPT5hLm5leHQoMTx1Lmxlbmd0aD91OnVbMF0pO3JldHVybiBpKGwpLCgpPT5vKGwpfSl9ZnVu'@; put 'Y3Rpb24gSFNlKG4sZSl7cmV0dXJuIHQ9PnI9Pm5bdF0oZSxyKX1jbGFzcyBkRCBleHRlbmRzIE1ye2NvbnN0cnVjdG9yKGU9MS8wLHQ9MS8wLHI9cG9lKXtzdXBlcigpLHRoaXMuX2J1ZmZlclNpemU9ZSx0aGlzLl93aW5kb3dUaW1lPXQsdGhpcy5fdGltZXN0YW1wUHJvdmlkZXI9cix0aGlz'@; put 'Ll9idWZmZXI9W10sdGhpcy5faW5maW5pdGVUaW1lV2luZG93PSEwLHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz10PT09MS8wLHRoaXMuX2J1ZmZlclNpemU9TWF0aC5tYXgoMSxlKSx0aGlzLl93aW5kb3dUaW1lPU1hdGgubWF4KDEsdCl9bmV4dChlKXtjb25zdHtpc1N0b3BwZWQ6dCxfYnVm'@; put 'ZmVyOnIsX2luZmluaXRlVGltZVdpbmRvdzppLF90aW1lc3RhbXBQcm92aWRlcjpvLF93aW5kb3dUaW1lOmF9PXRoaXM7dHx8KHIucHVzaChlKSwhaSYmci5wdXNoKG8ubm93KCkrYSkpLHRoaXMuX3RyaW1CdWZmZXIoKSxzdXBlci5uZXh0KGUpfV9zdWJzY3JpYmUoZSl7dGhpcy5fdGhyb3dJ'@; put 'ZkNsb3NlZCgpLHRoaXMuX3RyaW1CdWZmZXIoKTtjb25zdCB0PXRoaXMuX2lubmVyU3Vic2NyaWJlKGUpLHtfaW5maW5pdGVUaW1lV2luZG93OnIsX2J1ZmZlcjppfT10aGlzLG89aS5zbGljZSgpO2ZvcihsZXQgYT0wO2E8by5sZW5ndGgmJiFlLmNsb3NlZDthKz1yPzE6MillLm5leHQob1th'@; put 'XSk7cmV0dXJuIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoZSksdH1fdHJpbUJ1ZmZlcigpe2NvbnN0e19idWZmZXJTaXplOmUsX3RpbWVzdGFtcFByb3ZpZGVyOnQsX2J1ZmZlcjpyLF9pbmZpbml0ZVRpbWVXaW5kb3c6aX09dGhpcyxvPShpPzE6MikqZTtpZihlPDEvMCYmbzxyLmxl'@; put 'bmd0aCYmci5zcGxpY2UoMCxyLmxlbmd0aC1vKSwhaSl7Y29uc3QgYT10Lm5vdygpO2xldCBsPTA7Zm9yKGxldCB1PTE7dTxyLmxlbmd0aCYmclt1XTw9YTt1Kz0yKWw9dTtsJiZyLnNwbGljZSgwLGwrMSl9fX1mdW5jdGlvbiBtb2UobixlLC4uLnQpe2lmKCEwPT09ZSlyZXR1cm4gdm9pZCBu'@; put 'KCk7aWYoITE9PT1lKXJldHVybjtjb25zdCByPW5ldyB2bih7bmV4dDooKT0+e3IudW5zdWJzY3JpYmUoKSxuKCl9fSk7cmV0dXJuIE4yKGUoLi4udCkpLnN1YnNjcmliZShyKX1mdW5jdGlvbiBWU2UobixlLHQpe2xldCByLGk9ITE7cmV0dXJuIG4mJiJvYmplY3QiPT10eXBlb2Ygbj8oe2J1'@; put 'ZmZlclNpemU6cj0xLzAsd2luZG93VGltZTplPTEvMCxyZWZDb3VudDppPSExLHNjaGVkdWxlcjp0fT1uKTpyPW4/PzEvMCxmdW5jdGlvbiBpbXQobj17fSl7Y29uc3R7Y29ubmVjdG9yOmU9KCk9Pm5ldyBNcixyZXNldE9uRXJyb3I6dD0hMCxyZXNldE9uQ29tcGxldGU6cj0hMCxyZXNldE9u'@; put 'UmVmQ291bnRaZXJvOmk9ITB9PW47cmV0dXJuIG89PntsZXQgYSxsLHUsZz0wLEU9ITEsTz0hMTtjb25zdCBaPSgpPT57bD8udW5zdWJzY3JpYmUoKSxsPXZvaWQgMH0sZWU9KCk9PntaKCksYT11PXZvaWQgMCxFPU89ITF9LHZlPSgpPT57Y29uc3QgTWU9YTtlZSgpLE1lPy51bnN1YnNjcmli'@; put 'ZSgpfTtyZXR1cm4gYWQoKE1lLEhlKT0+e2crKywhTyYmIUUmJlooKTtjb25zdCBXZT11PXU/P2UoKTtIZS5hZGQoKCk9PntnLS0sMD09PWcmJiFPJiYhRSYmKGw9bW9lKHZlLGkpKX0pLFdlLnN1YnNjcmliZShIZSksIWEmJmc+MCYmKGE9bmV3IHZuKHtuZXh0OmF0PT5XZS5uZXh0KGF0KSxl'@; put 'cnJvcjphdD0+e089ITAsWigpLGw9bW9lKGVlLHQsYXQpLFdlLmVycm9yKGF0KX0sY29tcGxldGU6KCk9PntFPSEwLFooKSxsPW1vZShlZSxyKSxXZS5jb21wbGV0ZSgpfX0pLE4yKE1lKS5zdWJzY3JpYmUoYSkpfSkobyl9fSh7Y29ubmVjdG9yOigpPT5uZXcgZEQocixlLHQpLHJlc2V0T25F'@; put 'cnJvcjohMCxyZXNldE9uQ29tcGxldGU6ITEscmVzZXRPblJlZkNvdW50WmVybzppfSl9ZnVuY3Rpb24gaEQoLi4ubil7Y29uc3QgZT1BSShuKSx0PWZ1bmN0aW9uIHBjdChuLGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgSHJlKG4pP24ucG9wKCk6ZX0obiwxLzApLHI9bjtyZXR1cm4gci5s'@; put 'ZW5ndGg/MT09PXIubGVuZ3RoP04yKHJbMF0pOk9FKHQpKFoxKHIsZSkpOkVwfXZhciBicz1mdW5jdGlvbihuKXtyZXR1cm4gbltuLlN0YXRlPTBdPSJTdGF0ZSIsbltuLlRyYW5zaXRpb249MV09IlRyYW5zaXRpb24iLG5bbi5TZXF1ZW5jZT0yXT0iU2VxdWVuY2UiLG5bbi5Hcm91cD0zXT0i'@; put 'R3JvdXAiLG5bbi5BbmltYXRlPTRdPSJBbmltYXRlIixuW24uS2V5ZnJhbWVzPTVdPSJLZXlmcmFtZXMiLG5bbi5TdHlsZT02XT0iU3R5bGUiLG5bbi5UcmlnZ2VyPTddPSJUcmlnZ2VyIixuW24uUmVmZXJlbmNlPThdPSJSZWZlcmVuY2UiLG5bbi5BbmltYXRlQ2hpbGQ9OV09IkFuaW1hdGVD'@; put 'aGlsZCIsbltuLkFuaW1hdGVSZWY9MTBdPSJBbmltYXRlUmVmIixuW24uUXVlcnk9MTFdPSJRdWVyeSIsbltuLlN0YWdnZXI9MTJdPSJTdGFnZ2VyIixufShic3x8e30pO2NvbnN0IHQ3PSIqIjtmdW5jdGlvbiBScChuLGUpe3JldHVybnt0eXBlOmJzLlRyaWdnZXIsbmFtZTpuLGRlZmluaXRp'@; put 'b25zOmUsb3B0aW9uczp7fX19ZnVuY3Rpb24geTAobixlPW51bGwpe3JldHVybnt0eXBlOmJzLkFuaW1hdGUsc3R5bGVzOmUsdGltaW5nczpufX1mdW5jdGlvbiB2bChuKXtyZXR1cm57dHlwZTpicy5TdHlsZSxzdHlsZXM6bixvZmZzZXQ6bnVsbH19ZnVuY3Rpb24ga3oobixlLHQpe3JldHVy'@; put 'bnt0eXBlOmJzLlN0YXRlLG5hbWU6bixzdHlsZXM6ZSxvcHRpb25zOnR9fWZ1bmN0aW9uIGFtdChuKXtyZXR1cm57dHlwZTpicy5LZXlmcmFtZXMsc3RlcHM6bn19ZnVuY3Rpb24gcGgobixlLHQ9bnVsbCl7cmV0dXJue3R5cGU6YnMuVHJhbnNpdGlvbixleHByOm4sYW5pbWF0aW9uOmUsb3B0'@; put 'aW9uczp0fX1jbGFzcyBmRHtfb25Eb25lRm5zPVtdO19vblN0YXJ0Rm5zPVtdO19vbkRlc3Ryb3lGbnM9W107X29yaWdpbmFsT25Eb25lRm5zPVtdO19vcmlnaW5hbE9uU3RhcnRGbnM9W107X3N0YXJ0ZWQ9ITE7X2Rlc3Ryb3llZD0hMTtfZmluaXNoZWQ9ITE7X3Bvc2l0aW9uPTA7cGFyZW50'@; put 'UGxheWVyPW51bGw7dG90YWxUaW1lO2NvbnN0cnVjdG9yKGU9MCx0PTApe3RoaXMudG90YWxUaW1lPWUrdH1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKGU9PmUoKSksdGhpcy5fb25Eb25lRm5zPVtdKX1vblN0'@; put 'YXJ0KGUpe3RoaXMuX29yaWdpbmFsT25TdGFydEZucy5wdXNoKGUpLHRoaXMuX29uU3RhcnRGbnMucHVzaChlKX1vbkRvbmUoZSl7dGhpcy5fb3JpZ2luYWxPbkRvbmVGbnMucHVzaChlKSx0aGlzLl9vbkRvbmVGbnMucHVzaChlKX1vbkRlc3Ryb3koZSl7dGhpcy5fb25EZXN0cm95Rm5zLnB1'@; put 'c2goZSl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWluaXQoKXt9cGxheSgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydCgpLHRoaXMudHJpZ2dlck1pY3JvdGFzaygpKSx0aGlzLl9zdGFydGVkPSEwfXRyaWdnZXJNaWNyb3Rhc2soKXtxdWV1ZU1pY3JvdGFz'@; put 'aygoKT0+dGhpcy5fb25GaW5pc2goKSl9X29uU3RhcnQoKXt0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goZT0+ZSgpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdfXBhdXNlKCl7fXJlc3RhcnQoKXt9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhp'@; put 'cy5fZGVzdHJveWVkPSEwLHRoaXMuaGFzU3RhcnRlZCgpfHx0aGlzLl9vblN0YXJ0KCksdGhpcy5maW5pc2goKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaChlPT5lKCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLl9zdGFydGVkPSExLHRoaXMuX2ZpbmlzaGVkPSEx'@; put 'LHRoaXMuX29uU3RhcnRGbnM9dGhpcy5fb3JpZ2luYWxPblN0YXJ0Rm5zLHRoaXMuX29uRG9uZUZucz10aGlzLl9vcmlnaW5hbE9uRG9uZUZuc31zZXRQb3NpdGlvbihlKXt0aGlzLl9wb3NpdGlvbj10aGlzLnRvdGFsVGltZT9lKnRoaXMudG90YWxUaW1lOjF9Z2V0UG9zaXRpb24oKXtyZXR1'@; put 'cm4gdGhpcy50b3RhbFRpbWU/dGhpcy5fcG9zaXRpb24vdGhpcy50b3RhbFRpbWU6MX10cmlnZ2VyQ2FsbGJhY2soZSl7Y29uc3QgdD0ic3RhcnQiPT1lP3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO3QuZm9yRWFjaChyPT5yKCkpLHQubGVuZ3RoPTB9fWNsYXNzIEJTZXtfb25E'@; put 'b25lRm5zPVtdO19vblN0YXJ0Rm5zPVtdO19maW5pc2hlZD0hMTtfc3RhcnRlZD0hMTtfZGVzdHJveWVkPSExO19vbkRlc3Ryb3lGbnM9W107cGFyZW50UGxheWVyPW51bGw7dG90YWxUaW1lPTA7cGxheWVycztjb25zdHJ1Y3RvcihlKXt0aGlzLnBsYXllcnM9ZTtsZXQgdD0wLHI9MCxpPTA7'@; put 'Y29uc3Qgbz10aGlzLnBsYXllcnMubGVuZ3RoOzA9PW8/cXVldWVNaWNyb3Rhc2soKCk9PnRoaXMuX29uRmluaXNoKCkpOnRoaXMucGxheWVycy5mb3JFYWNoKGE9PnthLm9uRG9uZSgoKT0+eysrdD09byYmdGhpcy5fb25GaW5pc2goKX0pLGEub25EZXN0cm95KCgpPT57KytyPT1vJiZ0aGlz'@; put 'Ll9vbkRlc3Ryb3koKX0pLGEub25TdGFydCgoKT0+eysraT09byYmdGhpcy5fb25TdGFydCgpfSl9KSx0aGlzLnRvdGFsVGltZT10aGlzLnBsYXllcnMucmVkdWNlKChhLGwpPT5NYXRoLm1heChhLGwudG90YWxUaW1lKSwwKX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2Zp'@; put 'bmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKGU9PmUoKSksdGhpcy5fb25Eb25lRm5zPVtdKX1pbml0KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goZT0+ZS5pbml0KCkpfW9uU3RhcnQoZSl7dGhpcy5fb25TdGFydEZucy5wdXNoKGUpfV9vblN0YXJ0KCl7dGhpcy5oYXNTdGFydGVk'@; put 'KCl8fCh0aGlzLl9zdGFydGVkPSEwLHRoaXMuX29uU3RhcnRGbnMuZm9yRWFjaChlPT5lKCkpLHRoaXMuX29uU3RhcnRGbnM9W10pfW9uRG9uZShlKXt0aGlzLl9vbkRvbmVGbnMucHVzaChlKX1vbkRlc3Ryb3koZSl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2goZSl9aGFzU3RhcnRlZCgpe3Jl'@; put 'dHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLnBhcmVudFBsYXllcnx8dGhpcy5pbml0KCksdGhpcy5fb25TdGFydCgpLHRoaXMucGxheWVycy5mb3JFYWNoKGU9PmUucGxheSgpKX1wYXVzZSgpe3RoaXMucGxheWVycy5mb3JFYWNoKGU9PmUucGF1c2UoKSl9cmVzdGFydCgpe3RoaXMu'@; put 'cGxheWVycy5mb3JFYWNoKGU9PmUucmVzdGFydCgpKX1maW5pc2goKXt0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKGU9PmUuZmluaXNoKCkpfWRlc3Ryb3koKXt0aGlzLl9vbkRlc3Ryb3koKX1fb25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJv'@; put 'eWVkPSEwLHRoaXMuX29uRmluaXNoKCksdGhpcy5wbGF5ZXJzLmZvckVhY2goZT0+ZS5kZXN0cm95KCkpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKGU9PmUoKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMucGxheWVycy5mb3JFYWNoKGU9PmUucmVzZXQoKSksdGhp'@; put 'cy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITF9c2V0UG9zaXRpb24oZSl7Y29uc3QgdD1lKnRoaXMudG90YWxUaW1lO3RoaXMucGxheWVycy5mb3JFYWNoKHI9Pntjb25zdCBpPXIudG90YWxUaW1lP01hdGgubWluKDEsdC9yLnRvdGFsVGltZSk6MTty'@; put 'LnNldFBvc2l0aW9uKGkpfSl9Z2V0UG9zaXRpb24oKXtjb25zdCBlPXRoaXMucGxheWVycy5yZWR1Y2UoKHQscik9Pm51bGw9PT10fHxyLnRvdGFsVGltZT50LnRvdGFsVGltZT9yOnQsbnVsbCk7cmV0dXJuIG51bGwhPWU/ZS5nZXRQb3NpdGlvbigpOjB9YmVmb3JlRGVzdHJveSgpe3RoaXMu'@; put 'cGxheWVycy5mb3JFYWNoKGU9PntlLmJlZm9yZURlc3Ryb3kmJmUuYmVmb3JlRGVzdHJveSgpfSl9dHJpZ2dlckNhbGxiYWNrKGUpe2NvbnN0IHQ9InN0YXJ0Ij09ZT90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZuczt0LmZvckVhY2gocj0+cigpKSx0Lmxlbmd0aD0wfX1sZXQgX29l'@; put 'O3RyeXtfb2U9dHlwZW9mIEludGw8InUiJiZJbnRsLnY4QnJlYWtJdGVyYXRvcn1jYXRjaHtfb2U9ITF9bGV0IHlvZSxwRD0oKCk9PntjbGFzcyBue19wbGF0Zm9ybUlkPXNuKGxkKTtpc0Jyb3dzZXI9dGhpcy5fcGxhdGZvcm1JZD9IYyh0aGlzLl9wbGF0Zm9ybUlkKToib2JqZWN0Ij09dHlw'@; put 'ZW9mIGRvY3VtZW50JiYhIWRvY3VtZW50O0VER0U9dGhpcy5pc0Jyb3dzZXImJi8oZWRnZSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1RSSURFTlQ9dGhpcy5pc0Jyb3dzZXImJi8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7QkxJTks9dGhpcy5pc0Jy'@; put 'b3dzZXImJiEoIXdpbmRvdy5jaHJvbWUmJiFfb2UpJiZ0eXBlb2YgQ1NTPCJ1IiYmIXRoaXMuRURHRSYmIXRoaXMuVFJJREVOVDtXRUJLSVQ9dGhpcy5pc0Jyb3dzZXImJi9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF0aGlzLkJMSU5LJiYhdGhpcy5FREdFJiYh'@; put 'dGhpcy5UUklERU5UO0lPUz10aGlzLmlzQnJvd3NlciYmL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEoIk1TU3RyZWFtImluIHdpbmRvdyk7RklSRUZPWD10aGlzLmlzQnJvd3NlciYmLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51'@; put 'c2VyQWdlbnQpO0FORFJPSUQ9dGhpcy5pc0Jyb3dzZXImJi9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuVFJJREVOVDtTQUZBUkk9dGhpcy5pc0Jyb3dzZXImJi9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiZ0aGlzLldFQktJVDtjb25zdHJ1'@; put 'Y3Rvcigpe31zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gYm9lKG4pe2lmKGZ1bmN0aW9u'@; put 'IHNtdCgpe2lmKG51bGw9PXlvZSl7Y29uc3Qgbj10eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50LmhlYWQ6bnVsbDt5b2U9ISghbnx8IW4uY3JlYXRlU2hhZG93Um9vdCYmIW4uYXR0YWNoU2hhZG93KX1yZXR1cm4geW9lfSgpKXtjb25zdCBlPW4uZ2V0Um9vdE5vZGU/bi5nZXRSb290Tm9k'@; put 'ZSgpOm51bGw7aWYodHlwZW9mIFNoYWRvd1Jvb3Q8InUiJiZTaGFkb3dSb290JiZlIGluc3RhbmNlb2YgU2hhZG93Um9vdClyZXR1cm4gZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBSeihuKXtyZXR1cm4gbi5jb21wb3NlZFBhdGg/bi5jb21wb3NlZFBhdGgoKVswXTpuLnRhcmdldH1jb25zdCBJ'@; put 'ej1uZXcgV2Vha01hcDtsZXQgalNlPSgoKT0+e2NsYXNzIG57X2FwcFJlZjtfaW5qZWN0b3I9c24oTWwpO19lbnZpcm9ubWVudEluamVjdG9yPXNuKG5sKTtsb2FkKHQpe2NvbnN0IHI9dGhpcy5fYXBwUmVmPXRoaXMuX2FwcFJlZnx8dGhpcy5faW5qZWN0b3IuZ2V0KFdnKTtsZXQgaT1Jei5n'@; put 'ZXQocik7aXx8KGk9e2xvYWRlcnM6bmV3IFNldCxyZWZzOltdfSxJei5zZXQocixpKSxyLm9uRGVzdHJveSgoKT0+e0l6LmdldChyKT8ucmVmcy5mb3JFYWNoKG89Pm8uZGVzdHJveSgpKSxJei5kZWxldGUocil9KSksaS5sb2FkZXJzLmhhcyh0KXx8KGkubG9hZGVycy5hZGQodCksaS5yZWZz'@; put 'LnB1c2goZkkodCx7ZW52aXJvbm1lbnRJbmplY3Rvcjp0aGlzLl9lbnZpcm9ubWVudEluamVjdG9yfSkpKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlk'@; put 'ZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCksY210PSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbIm5nLWNvbXBvbmVudCJdXSxleHBvcnRBczpbImNka1Zp'@; put 'c3VhbGx5SGlkZGVuIl0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24ocixpKXt9LHN0eWxlczpbIi5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9z'@; put 'aXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7bGVmdDowfVtkaXI9cnRsXSAuY2RrLXZpc3VhbGx5LWhpZGRlbntsZWZ0OmF1dG87cmlnaHQ6MH1cbiJdLGVuY2Fw'@; put 'c3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pfXJldHVybiBufSkoKSx1bXQ9KCgpPT57Y2xhc3MgbntfcGxhdGZvcm09c24ocEQpO2NvbnN0cnVjdG9yKCl7fWlzRGlzYWJsZWQodCl7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfWlzVmlzaWJsZSh0KXtyZXR1cm4gZnVu'@; put 'Y3Rpb24gaG10KG4pe3JldHVybiEhKG4ub2Zmc2V0V2lkdGh8fG4ub2Zmc2V0SGVpZ2h0fHwiZnVuY3Rpb24iPT10eXBlb2Ygbi5nZXRDbGllbnRSZWN0cyYmbi5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9KHQpJiYidmlzaWJsZSI9PT1nZXRDb21wdXRlZFN0eWxlKHQpLnZpc2liaWxpdHl9'@; put 'aXNUYWJiYWJsZSh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiExO2NvbnN0IHI9ZnVuY3Rpb24gZG10KG4pe3RyeXtyZXR1cm4gbi5mcmFtZUVsZW1lbnR9Y2F0Y2h7cmV0dXJuIG51bGx9fShmdW5jdGlvbiBibXQobil7cmV0dXJuIG4ub3duZXJEb2N1bWVudCYmbi5v'@; put 'd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9KHQpKTtpZihyJiYoLTE9PT16U2Uocil8fCF0aGlzLmlzVmlzaWJsZShyKSkpcmV0dXJuITE7bGV0IGk9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG89elNlKHQpO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxl'@; put 'Iik/LTEhPT1vOiEoImlmcmFtZSI9PT1pfHwib2JqZWN0Ij09PWl8fHRoaXMuX3BsYXRmb3JtLldFQktJVCYmdGhpcy5fcGxhdGZvcm0uSU9TJiYhZnVuY3Rpb24gX210KG4pe2xldCBlPW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSx0PSJpbnB1dCI9PT1lJiZuLnR5cGU7cmV0dXJuInRleHQi'@; put 'PT09dHx8InBhc3N3b3JkIj09PXR8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9KHQpKSYmKCJhdWRpbyI9PT1pPyEhdC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikmJi0xIT09bzoidmlkZW8iPT09aT8tMSE9PW8mJihudWxsIT09b3x8dGhpcy5fcGxhdGZvcm0uRklSRUZPWHx8dC5o'@; put 'YXNBdHRyaWJ1dGUoImNvbnRyb2xzIikpOnQudGFiSW5kZXg+PTApfWlzRm9jdXNhYmxlKHQscil7cmV0dXJuIGZ1bmN0aW9uIHltdChuKXtyZXR1cm4hZnVuY3Rpb24gcG10KG4pe3JldHVybiBmdW5jdGlvbiBtbXQobil7cmV0dXJuImlucHV0Ij09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp'@; put 'fShuKSYmImhpZGRlbiI9PW4udHlwZX0obikmJihmdW5jdGlvbiBmbXQobil7bGV0IGU9bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJidXR0b24iPT09ZXx8InRleHRhcmVhIj09PWV9KG4pfHxmdW5jdGlvbiBnbXQobil7cmV0dXJu'@; put 'IGZ1bmN0aW9uIHZtdChuKXtyZXR1cm4iYSI9PW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0obikmJm4uaGFzQXR0cmlidXRlKCJocmVmIil9KG4pfHxuLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fFVTZShuKSl9KHQpJiYhdGhpcy5pc0Rpc2FibGVkKHQpJiYocj8uaWdub3Jl'@; put 'VmlzaWJpbGl0eXx8dGhpcy5pc1Zpc2libGUodCkpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtmdW5j'@; put 'dGlvbiBVU2Uobil7aWYoIW4uaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHx2b2lkIDA9PT1uLnRhYkluZGV4KXJldHVybiExO2xldCBlPW4uZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO3JldHVybiEoIWV8fGlzTmFOKHBhcnNlSW50KGUsMTApKSl9ZnVuY3Rpb24gelNlKG4pe2lmKCFVU2Uo'@; put 'bikpcmV0dXJuIG51bGw7Y29uc3QgZT1wYXJzZUludChuLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8IiIsMTApO3JldHVybiBpc05hTihlKT8tMTplfWNsYXNzIHdtdHtfZWxlbWVudDtfY2hlY2tlcjtfbmdab25lO19kb2N1bWVudDtfaW5qZWN0b3I7X3N0YXJ0QW5jaG9yO19lbmRBbmNo'@; put 'b3I7X2hhc0F0dGFjaGVkPSExO3N0YXJ0QW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCk7ZW5kQW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpO2dldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9'@; put 'c2V0IGVuYWJsZWQoZSl7dGhpcy5fZW5hYmxlZD1lLHRoaXMuX3N0YXJ0QW5jaG9yJiZ0aGlzLl9lbmRBbmNob3ImJih0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleChlLHRoaXMuX3N0YXJ0QW5jaG9yKSx0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleChlLHRoaXMuX2VuZEFuY2hvcikpfV9l'@; put 'bmFibGVkPSEwO2NvbnN0cnVjdG9yKGUsdCxyLGksbz0hMSxhKXt0aGlzLl9lbGVtZW50PWUsdGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1yLHRoaXMuX2RvY3VtZW50PWksdGhpcy5faW5qZWN0b3I9YSxvfHx0aGlzLmF0dGFjaEFuY2hvcnMoKX1kZXN0cm95KCl7Y29uc3QgZT10aGlz'@; put 'Ll9zdGFydEFuY2hvcix0PXRoaXMuX2VuZEFuY2hvcjtlJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKSxlLnJlbW92ZSgpKSx0JiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5lbmRBbmNob3JMaXN0ZW5lciksdC5y'@; put 'ZW1vdmUoKSksdGhpcy5fc3RhcnRBbmNob3I9dGhpcy5fZW5kQW5jaG9yPW51bGwsdGhpcy5faGFzQXR0YWNoZWQ9ITF9YXR0YWNoQW5jaG9ycygpe3JldHVybiEhdGhpcy5faGFzQXR0YWNoZWR8fCh0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9zdGFydEFuY2hv'@; put 'cnx8KHRoaXMuX3N0YXJ0QW5jaG9yPXRoaXMuX2NyZWF0ZUFuY2hvcigpLHRoaXMuX3N0YXJ0QW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpKSx0aGlzLl9lbmRBbmNob3J8fCh0aGlzLl9lbmRBbmNob3I9dGhpcy5fY3JlYXRlQW5jaG9y'@; put 'KCksdGhpcy5fZW5kQW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLmVuZEFuY2hvckxpc3RlbmVyKSl9KSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJih0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX3N0YXJ0QW5jaG9yLHRoaXMuX2VsZW1l'@; put 'bnQpLHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fZW5kQW5jaG9yLHRoaXMuX2VsZW1lbnQubmV4dFNpYmxpbmcpLHRoaXMuX2hhc0F0dGFjaGVkPSEwKSx0aGlzLl9oYXNBdHRhY2hlZCl9Zm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeShlKXtyZXR1cm4g'@; put 'bmV3IFByb21pc2UodD0+e3RoaXMuX2V4ZWN1dGVPblN0YWJsZSgoKT0+dCh0aGlzLmZvY3VzSW5pdGlhbEVsZW1lbnQoZSkpKX0pfWZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnRXaGVuUmVhZHkoZSl7cmV0dXJuIG5ldyBQcm9taXNlKHQ9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCk9PnQo'@; put 'dGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KGUpKSl9KX1mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnRXaGVuUmVhZHkoZSl7cmV0dXJuIG5ldyBQcm9taXNlKHQ9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCk9PnQodGhpcy5mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoZSkpKX0pfV9n'@; put 'ZXRSZWdpb25Cb3VuZGFyeShlKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2Nkay1mb2N1cy1yZWdpb24tJHtlfV0sIFtjZGtGb2N1c1JlZ2lvbiR7ZX1dLCBbY2RrLWZvY3VzLSR7ZX1dYCk7cmV0dXJuInN0YXJ0Ij09ZT90Lmxlbmd0aD90WzBdOnRoaXMuX2dl'@; put 'dEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpOnQubGVuZ3RoP3RbdC5sZW5ndGgtMV06dGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50KX1mb2N1c0luaXRpYWxFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJb'@; put 'Y2RrLWZvY3VzLWluaXRpYWxdLCBbY2RrRm9jdXNJbml0aWFsXSIpO2lmKHQpe2lmKCF0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHQpKXtjb25zdCByPXRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHQpO3JldHVybiByPy5mb2N1cyhlKSwhIXJ9cmV0dXJuIHQuZm9jdXMoZSksITB9'@; put 'cmV0dXJuIHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudChlKX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoInN0YXJ0Iik7cmV0dXJuIHQmJnQuZm9jdXMoZSksISF0fWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudChlKXtj'@; put 'b25zdCB0PXRoaXMuX2dldFJlZ2lvbkJvdW5kYXJ5KCJlbmQiKTtyZXR1cm4gdCYmdC5mb2N1cyhlKSwhIXR9aGFzQXR0YWNoZWQoKXtyZXR1cm4gdGhpcy5faGFzQXR0YWNoZWR9X2dldEZpcnN0VGFiYmFibGVFbGVtZW50KGUpe2lmKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUoZSkmJnRo'@; put 'aXMuX2NoZWNrZXIuaXNUYWJiYWJsZShlKSlyZXR1cm4gZTtjb25zdCB0PWUuY2hpbGRyZW47Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2NvbnN0IGk9dFtyXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERT90aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0'@; put 'W3JdKTpudWxsO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X2dldExhc3RUYWJiYWJsZUVsZW1lbnQoZSl7aWYodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShlKSYmdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKGUpKXJldHVybiBlO2NvbnN0IHQ9ZS5jaGlsZHJlbjtmb3IobGV0IHI9dC5s'@; put 'ZW5ndGgtMTtyPj0wO3ItLSl7Y29uc3QgaT10W3JdLm5vZGVUeXBlPT09dGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFP3RoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQodFtyXSk6bnVsbDtpZihpKXJldHVybiBpfXJldHVybiBudWxsfV9jcmVhdGVBbmNob3IoKXtjb25zdCBlPXRoaXMu'@; put 'X2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0aGlzLl9lbmFibGVkLGUpLGUuY2xhc3NMaXN0LmFkZCgiY2RrLXZpc3VhbGx5LWhpZGRlbiIpLGUuY2xhc3NMaXN0LmFkZCgiY2RrLWZvY3VzLXRyYXAtYW5jaG9yIiksZS5z'@; put 'ZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGV9X3RvZ2dsZUFuY2hvclRhYkluZGV4KGUsdCl7ZT90LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIik6dC5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iil9dG9nZ2xlQW5jaG9ycyhlKXt0aGlzLl9zdGFydEFuY2hvciYmdGhp'@; put 'cy5fZW5kQW5jaG9yJiYodGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgoZSx0aGlzLl9zdGFydEFuY2hvciksdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgoZSx0aGlzLl9lbmRBbmNob3IpKX1fZXhlY3V0ZU9uU3RhYmxlKGUpe3RoaXMuX2luamVjdG9yP0g4KGUse2luamVjdG9yOnRoaXMu'@; put 'X2luamVjdG9yfSk6c2V0VGltZW91dChlKX19bGV0IHdvZT0oKCk9PntjbGFzcyBue19jaGVja2VyPXNuKHVtdCk7X25nWm9uZT1zbihnYSk7X2RvY3VtZW50PXNuKFRsKTtfaW5qZWN0b3I9c24oTWwpO2NvbnN0cnVjdG9yKCl7c24oalNlKS5sb2FkKGNtdCl9Y3JlYXRlKHQscj0hMSl7cmV0'@; put 'dXJuIG5ldyB3bXQodCx0aGlzLl9jaGVja2VyLHRoaXMuX25nWm9uZSx0aGlzLl9kb2N1bWVudCxyLHRoaXMuX2luamVjdG9yKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAy'@; put 'NzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX1yZXR1cm4gbn0pKCksV1NlPSgoKT0+e2NsYXNzIG57X2VsZW1lbnRSZWY9c24obm8pO19mb2N1c1RyYXBGYWN0b3J5PXNuKHdvZSk7Zm9jdXNUcmFwO19wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbDtnZXQgZW5hYmxlZCgpe3JldHVybiB0'@; put 'aGlzLmZvY3VzVHJhcD8uZW5hYmxlZHx8ITF9c2V0IGVuYWJsZWQodCl7dGhpcy5mb2N1c1RyYXAmJih0aGlzLmZvY3VzVHJhcC5lbmFibGVkPXQpfWF1dG9DYXB0dXJlO2NvbnN0cnVjdG9yKCl7c24ocEQpLmlzQnJvd3NlciYmKHRoaXMuZm9jdXNUcmFwPXRoaXMuX2ZvY3VzVHJhcEZhY3Rv'@; put 'cnkuY3JlYXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwhMCkpfW5nT25EZXN0cm95KCl7dGhpcy5mb2N1c1RyYXA/LmRlc3Ryb3koKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKSx0aGlzLl9w'@; put 'cmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c1RyYXA/LmF0dGFjaEFuY2hvcnMoKSx0aGlzLmF1dG9DYXB0dXJlJiZ0aGlzLl9jYXB0dXJlRm9jdXMoKX1uZ0RvQ2hlY2soKXt0aGlzLmZvY3VzVHJhcCYmIXRoaXMuZm9jdXNUcmFw'@; put 'Lmhhc0F0dGFjaGVkKCkmJnRoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCByPXQuYXV0b0NhcHR1cmU7ciYmIXIuZmlyc3RDaGFuZ2UmJnRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuZm9jdXNUcmFwPy5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9jYXB0dXJl'@; put 'Rm9jdXMoKX1fY2FwdHVyZUZvY3VzKCl7dGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PWZ1bmN0aW9uIGxtdCgpe2xldCBuPXR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50P2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ6bnVsbDtmb3IoO24mJm4uc2hhZG93Um9vdDspe2NvbnN0IGU9'@; put 'bi5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7aWYoZT09PW4pYnJlYWs7bj1lfXJldHVybiBufSgpLHRoaXMuZm9jdXNUcmFwPy5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1'@; put 'ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNka1RyYXBGb2N1cyIsIiJdXSxpbnB1dHM6e2VuYWJsZWQ6WzIsImNka1RyYXBGb2N1cyIsImVuYWJsZWQiLFowXSxhdXRvQ2FwdHVyZTpbMiwiY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUiLCJhdXRvQ2FwdHVyZSIsWjBdfSxleHBvcnRB'@; put 'czpbImNka1RyYXBGb2N1cyJdLGZlYXR1cmVzOltpdV19KX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gWVNlKG49MCxlLHQ9WGd0KXtsZXQgcj0tMTtyZXR1cm4gbnVsbCE9ZSYmKGFiZShlKT90PWU6cj1lKSxuZXcgaG8oaT0+e2xldCBvPWZ1bmN0aW9uIEVtdChuKXtyZXR1cm4gbiBpbnN0YW5j'@; put 'ZW9mIERhdGUmJiFpc05hTihuKX0obik/K24tdC5ub3coKTpuO288MCYmKG89MCk7bGV0IGE9MDtyZXR1cm4gdC5zY2hlZHVsZShmdW5jdGlvbigpe2kuY2xvc2VkfHwoaS5uZXh0KGErKyksMDw9cj90aGlzLnNjaGVkdWxlKHZvaWQgMCxyKTppLmNvbXBsZXRlKCkpfSxvKX0pfWNvbnN0IGdE'@; put 'PXtzY2hlZHVsZShuKXtsZXQgZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsdD1jYW5jZWxBbmltYXRpb25GcmFtZTtjb25zdHtkZWxlZ2F0ZTpyfT1nRDtyJiYoZT1yLnJlcXVlc3RBbmltYXRpb25GcmFtZSx0PXIuY2FuY2VsQW5pbWF0aW9uRnJhbWUpO2NvbnN0IGk9ZShvPT57dD12b2lkIDAs'@; put 'bihvKX0pO3JldHVybiBuZXcgQXIoKCk9PnQ/LihpKSl9LHJlcXVlc3RBbmltYXRpb25GcmFtZSguLi5uKXtjb25zdHtkZWxlZ2F0ZTplfT1nRDtyZXR1cm4oZT8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpKC4uLm4pfSxjYW5jZWxBbmltYXRpb25GcmFt'@; put 'ZSguLi5uKXtjb25zdHtkZWxlZ2F0ZTplfT1nRDtyZXR1cm4oZT8uY2FuY2VsQW5pbWF0aW9uRnJhbWV8fGNhbmNlbEFuaW1hdGlvbkZyYW1lKSguLi5uKX0sZGVsZWdhdGU6dm9pZCAwfSxaU2U9bmV3IGNsYXNzIHhtdCBleHRlbmRzIGdvZXtmbHVzaChlKXtsZXQgdDt0aGlzLl9hY3RpdmU9'@; put 'ITAsZT90PWUuaWQ6KHQ9dGhpcy5fc2NoZWR1bGVkLHRoaXMuX3NjaGVkdWxlZD12b2lkIDApO2NvbnN0e2FjdGlvbnM6cn09dGhpcztsZXQgaTtlPWV8fHIuc2hpZnQoKTtkb3tpZihpPWUuZXhlY3V0ZShlLnN0YXRlLGUuZGVsYXkpKWJyZWFrfXdoaWxlKChlPXJbMF0pJiZlLmlkPT09dCYm'@; put 'ci5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsaSl7Zm9yKDsoZT1yWzBdKSYmZS5pZD09PXQmJnIuc2hpZnQoKTspZS51bnN1YnNjcmliZSgpO3Rocm93IGl9fX0oY2xhc3MgVG10IGV4dGVuZHMgZm9le2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KSx0aGlzLnNjaGVkdWxlcj1lLHRo'@; put 'aXMud29yaz10fXJlcXVlc3RBc3luY0lkKGUsdCxyPTApe3JldHVybiBudWxsIT09ciYmcj4wP3N1cGVyLnJlcXVlc3RBc3luY0lkKGUsdCxyKTooZS5hY3Rpb25zLnB1c2godGhpcyksZS5fc2NoZWR1bGVkfHwoZS5fc2NoZWR1bGVkPWdELnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+ZS5m'@; put 'bHVzaCh2b2lkIDApKSkpfXJlY3ljbGVBc3luY0lkKGUsdCxyPTApe3ZhciBpO2lmKG51bGwhPXI/cj4wOnRoaXMuZGVsYXk+MClyZXR1cm4gc3VwZXIucmVjeWNsZUFzeW5jSWQoZSx0LHIpO2NvbnN0e2FjdGlvbnM6b309ZTtudWxsIT10JiZ0PT09ZS5fc2NoZWR1bGVkJiYobnVsbD09PShp'@; put 'PW9bby5sZW5ndGgtMV0pfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmlkKSE9PXQmJihnRC5jYW5jZWxBbmltYXRpb25GcmFtZSh0KSxlLl9zY2hlZHVsZWQ9dm9pZCAwKX19KTtmdW5jdGlvbiBGYihuLGU9MCl7cmV0dXJuIGZ1bmN0aW9uIFJtdChuKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChu'@; put 'KSkmJiFpc05hTihOdW1iZXIobikpfShuKT9OdW1iZXIobik6Mj09PWFyZ3VtZW50cy5sZW5ndGg/ZTowfWZ1bmN0aW9uIG43KG4pe3JldHVybiBuIGluc3RhbmNlb2Ygbm8/bi5uYXRpdmVFbGVtZW50Om59bGV0IENvZSxJbXQ9MTtjb25zdCBEej17fTtmdW5jdGlvbiBHU2Uobil7cmV0dXJu'@; put 'IG4gaW4gRHomJihkZWxldGUgRHpbbl0sITApfWNvbnN0IERtdD17c2V0SW1tZWRpYXRlKG4pe2NvbnN0IGU9SW10Kys7cmV0dXJuIER6W2VdPSEwLENvZXx8KENvZT1Qcm9taXNlLnJlc29sdmUoKSksQ29lLnRoZW4oKCk9PkdTZShlKSYmbigpKSxlfSxjbGVhckltbWVkaWF0ZShuKXtHU2Uo'@; put 'bil9fSx7c2V0SW1tZWRpYXRlOkxtdCxjbGVhckltbWVkaWF0ZTpPbXR9PURtdCxMej17c2V0SW1tZWRpYXRlKC4uLm4pe2NvbnN0e2RlbGVnYXRlOmV9PUx6O3JldHVybihlPy5zZXRJbW1lZGlhdGV8fExtdCkoLi4ubil9LGNsZWFySW1tZWRpYXRlKG4pe2NvbnN0e2RlbGVnYXRlOmV9PUx6'@; put 'O3JldHVybihlPy5jbGVhckltbWVkaWF0ZXx8T210KShuKX0sZGVsZWdhdGU6dm9pZCAwfSxQbXQ9bmV3IGNsYXNzIEZtdCBleHRlbmRzIGdvZXtmbHVzaChlKXt0aGlzLl9hY3RpdmU9ITA7Y29uc3QgdD10aGlzLl9zY2hlZHVsZWQ7dGhpcy5fc2NoZWR1bGVkPXZvaWQgMDtjb25zdHthY3Rp'@; put 'b25zOnJ9PXRoaXM7bGV0IGk7ZT1lfHxyLnNoaWZ0KCk7ZG97aWYoaT1lLmV4ZWN1dGUoZS5zdGF0ZSxlLmRlbGF5KSlicmVha313aGlsZSgoZT1yWzBdKSYmZS5pZD09PXQmJnIuc2hpZnQoKSk7aWYodGhpcy5fYWN0aXZlPSExLGkpe2Zvcig7KGU9clswXSkmJmUuaWQ9PT10JiZyLnNoaWZ0'@; put 'KCk7KWUudW5zdWJzY3JpYmUoKTt0aHJvdyBpfX19KGNsYXNzIE5tdCBleHRlbmRzIGZvZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCksdGhpcy5zY2hlZHVsZXI9ZSx0aGlzLndvcms9dH1yZXF1ZXN0QXN5bmNJZChlLHQscj0wKXtyZXR1cm4gbnVsbCE9PXImJnI+MD9zdXBlci5yZXF1'@; put 'ZXN0QXN5bmNJZChlLHQscik6KGUuYWN0aW9ucy5wdXNoKHRoaXMpLGUuX3NjaGVkdWxlZHx8KGUuX3NjaGVkdWxlZD1Mei5zZXRJbW1lZGlhdGUoZS5mbHVzaC5iaW5kKGUsdm9pZCAwKSkpKX1yZWN5Y2xlQXN5bmNJZChlLHQscj0wKXt2YXIgaTtpZihudWxsIT1yP3I+MDp0aGlzLmRlbGF5'@; put 'PjApcmV0dXJuIHN1cGVyLnJlY3ljbGVBc3luY0lkKGUsdCxyKTtjb25zdHthY3Rpb25zOm99PWU7bnVsbCE9dCYmKG51bGw9PT0oaT1vW28ubGVuZ3RoLTFdKXx8dm9pZCAwPT09aT92b2lkIDA6aS5pZCkhPT10JiYoTHouY2xlYXJJbW1lZGlhdGUodCksZS5fc2NoZWR1bGVkPT09dCYmKGUu'@; put 'X3NjaGVkdWxlZD12b2lkIDApKX19KTtmdW5jdGlvbiBTb2UobixlPUF6KXtyZXR1cm4gZnVuY3Rpb24gSG10KG4pe3JldHVybiBhZCgoZSx0KT0+e2xldCByPSExLGk9bnVsbCxvPW51bGwsYT0hMTtjb25zdCBsPSgpPT57aWYobz8udW5zdWJzY3JpYmUoKSxvPW51bGwscil7cj0hMTtjb25z'@; put 'dCBnPWk7aT1udWxsLHQubmV4dChnKX1hJiZ0LmNvbXBsZXRlKCl9LHU9KCk9PntvPW51bGwsYSYmdC5jb21wbGV0ZSgpfTtlLnN1YnNjcmliZSh2dSh0LGc9PntyPSEwLGk9ZyxvfHxOMihuKGcpKS5zdWJzY3JpYmUobz12dSh0LGwsdSkpfSwoKT0+e2E9ITAsKCFyfHwhb3x8by5jbG9zZWQp'@; put 'JiZ0LmNvbXBsZXRlKCl9KSl9KX0oKCk9PllTZShuLGUpKX1jb25zdCBCbXQ9bmV3IEVyKCJjZGstZGlyLWRvYyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gam10KCl7cmV0dXJuIHNuKFRsKX19KSxVbXQ9L14oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1'@; put 'cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pL2k7bGV0IGlNPSgoKT0+e2NsYXNzIG57Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWVTaWduYWwoKX12YWx1ZVNpZ25hbD1CMSgibHRyIik7Y2hh'@; put 'bmdlPW5ldyBLcjtjb25zdHJ1Y3Rvcigpe2NvbnN0IHQ9c24oQm10LHtvcHRpb25hbDohMH0pO3QmJnRoaXMudmFsdWVTaWduYWwuc2V0KGZ1bmN0aW9uIHptdChuKXtjb25zdCBlPW4/LnRvTG93ZXJDYXNlKCl8fCIiO3JldHVybiJhdXRvIj09PWUmJnR5cGVvZiBuYXZpZ2F0b3I8InUiJiZu'@; put 'YXZpZ2F0b3I/Lmxhbmd1YWdlP1VtdC50ZXN0KG5hdmlnYXRvci5sYW5ndWFnZSk/InJ0bCI6Imx0ciI6InJ0bCI9PT1lPyJydGwiOiJsdHIifSgodC5ib2R5P3QuYm9keS5kaXI6bnVsbCl8fCh0LmRvY3VtZW50RWxlbWVudD90LmRvY3VtZW50RWxlbWVudC5kaXI6bnVsbCl8fCJsdHIiKSl9'@; put 'bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSko'@; put 'KTt2YXIgVzU9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5OT1JNQUw9MF09Ik5PUk1BTCIsbltuLk5FR0FURUQ9MV09Ik5FR0FURUQiLG5bbi5JTlZFUlRFRD0yXT0iSU5WRVJURUQiLG59KFc1fHx7fSk7bGV0IE96LFBiO2Z1bmN0aW9uIG1EKCl7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVu'@; put 'dHx8IWRvY3VtZW50KXJldHVybiBXNS5OT1JNQUw7aWYobnVsbD09T3ope2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT1uLnN0eWxlO24uZGlyPSJydGwiLGUud2lkdGg9IjFweCIsZS5vdmVyZmxvdz0iYXV0byIsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUucG9pbnRl'@; put 'ckV2ZW50cz0ibm9uZSIsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikscj10LnN0eWxlO3Iud2lkdGg9IjJweCIsci5oZWlnaHQ9IjFweCIsbi5hcHBlbmRDaGlsZCh0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLE96PVc1'@; put 'Lk5PUk1BTCwwPT09bi5zY3JvbGxMZWZ0JiYobi5zY3JvbGxMZWZ0PTEsT3o9MD09PW4uc2Nyb2xsTGVmdD9XNS5ORUdBVEVEOlc1LklOVkVSVEVEKSxuLnJlbW92ZSgpfXJldHVybiBPen1jbGFzcyBZbXR7fWNsYXNzIEdtdCBleHRlbmRzIFltdHtfZGF0YTtjb25zdHJ1Y3RvcihlKXtzdXBl'@; put 'cigpLHRoaXMuX2RhdGE9ZX1jb25uZWN0KCl7cmV0dXJuIHhJKHRoaXMuX2RhdGEpP3RoaXMuX2RhdGE6UGEodGhpcy5fZGF0YSl9ZGlzY29ubmVjdCgpe319dmFyIHZEPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uUkVQTEFDRUQ9MF09IlJFUExBQ0VEIixuW24uSU5TRVJURUQ9MV09IklOU0VS'@; put 'VEVEIixuW24uTU9WRUQ9Ml09Ik1PVkVEIixuW24uUkVNT1ZFRD0zXT0iUkVNT1ZFRCIsbn0odkR8fHt9KTtjb25zdCBFb2U9bmV3IEVyKCJfVmlld1JlcGVhdGVyIik7Y2xhc3MgJFNle3ZpZXdDYWNoZVNpemU9MjA7X3ZpZXdDYWNoZT1bXTthcHBseUNoYW5nZXMoZSx0LHIsaSxvKXtlLmZv'@; put 'ckVhY2hPcGVyYXRpb24oKGEsbCx1KT0+e2xldCBnLEU7bnVsbD09YS5wcmV2aW91c0luZGV4PyhnPXRoaXMuX2luc2VydFZpZXcoKCk9PnIoYSxsLHUpLHUsdCxpKGEpKSxFPWc/dkQuSU5TRVJURUQ6dkQuUkVQTEFDRUQpOm51bGw9PXU/KHRoaXMuX2RldGFjaEFuZENhY2hlVmlldyhsLHQp'@; put 'LEU9dkQuUkVNT1ZFRCk6KGc9dGhpcy5fbW92ZVZpZXcobCx1LHQsaShhKSksRT12RC5NT1ZFRCksbyYmbyh7Y29udGV4dDpnPy5jb250ZXh0LG9wZXJhdGlvbjpFLHJlY29yZDphfSl9KX1kZXRhY2goKXtmb3IoY29uc3QgZSBvZiB0aGlzLl92aWV3Q2FjaGUpZS5kZXN0cm95KCk7dGhpcy5f'@; put 'dmlld0NhY2hlPVtdfV9pbnNlcnRWaWV3KGUsdCxyLGkpe2NvbnN0IG89dGhpcy5faW5zZXJ0Vmlld0Zyb21DYWNoZSh0LHIpO2lmKG8pcmV0dXJuIHZvaWQoby5jb250ZXh0LiRpbXBsaWNpdD1pKTtjb25zdCBhPWUoKTtyZXR1cm4gci5jcmVhdGVFbWJlZGRlZFZpZXcoYS50ZW1wbGF0ZVJl'@; put 'ZixhLmNvbnRleHQsYS5pbmRleCl9X2RldGFjaEFuZENhY2hlVmlldyhlLHQpe2NvbnN0IHI9dC5kZXRhY2goZSk7dGhpcy5fbWF5YmVDYWNoZVZpZXcocix0KX1fbW92ZVZpZXcoZSx0LHIsaSl7Y29uc3Qgbz1yLmdldChlKTtyZXR1cm4gci5tb3ZlKG8sdCksby5jb250ZXh0LiRpbXBsaWNp'@; put 'dD1pLG99X21heWJlQ2FjaGVWaWV3KGUsdCl7aWYodGhpcy5fdmlld0NhY2hlLmxlbmd0aDx0aGlzLnZpZXdDYWNoZVNpemUpdGhpcy5fdmlld0NhY2hlLnB1c2goZSk7ZWxzZXtjb25zdCByPXQuaW5kZXhPZihlKTstMT09PXI/ZS5kZXN0cm95KCk6dC5yZW1vdmUocil9fV9pbnNlcnRWaWV3'@; put 'RnJvbUNhY2hlKGUsdCl7Y29uc3Qgcj10aGlzLl92aWV3Q2FjaGUucG9wKCk7cmV0dXJuIHImJnQuaW5zZXJ0KHIsZSkscnx8bnVsbH19Y29uc3QgJG10PVsiY29udGVudFdyYXBwZXIiXSxxbXQ9WyIqIl0scVNlPW5ldyBFcigiVklSVFVBTF9TQ1JPTExfU1RSQVRFR1kiKTtjbGFzcyBLbXR7'@; put 'X3Njcm9sbGVkSW5kZXhDaGFuZ2U9bmV3IE1yO3Njcm9sbGVkSW5kZXhDaGFuZ2U9dGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKGhvZSgpKTtfdmlld3BvcnQ9bnVsbDtfaXRlbVNpemU7X21pbkJ1ZmZlclB4O19tYXhCdWZmZXJQeDtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5faXRl'@; put 'bVNpemU9ZSx0aGlzLl9taW5CdWZmZXJQeD10LHRoaXMuX21heEJ1ZmZlclB4PXJ9YXR0YWNoKGUpe3RoaXMuX3ZpZXdwb3J0PWUsdGhpcy5fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpLHRoaXMuX3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKX1kZXRhY2goKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hh'@; put 'bmdlLmNvbXBsZXRlKCksdGhpcy5fdmlld3BvcnQ9bnVsbH11cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZShlLHQscil7dGhpcy5faXRlbVNpemU9ZSx0aGlzLl9taW5CdWZmZXJQeD10LHRoaXMuX21heEJ1ZmZlclB4PXIsdGhpcy5fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpLHRoaXMuX3VwZGF0'@; put 'ZVJlbmRlcmVkUmFuZ2UoKX1vbkNvbnRlbnRTY3JvbGxlZCgpe3RoaXMuX3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKX1vbkRhdGFMZW5ndGhDaGFuZ2VkKCl7dGhpcy5fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpLHRoaXMuX3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKX1vbkNvbnRlbnRSZW5kZXJlZCgp'@; put 'e31vblJlbmRlcmVkT2Zmc2V0Q2hhbmdlZCgpe31zY3JvbGxUb0luZGV4KGUsdCl7dGhpcy5fdmlld3BvcnQmJnRoaXMuX3ZpZXdwb3J0LnNjcm9sbFRvT2Zmc2V0KGUqdGhpcy5faXRlbVNpemUsdCl9X3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKXt0aGlzLl92aWV3cG9ydCYmdGhpcy5fdmll'@; put 'd3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0aGlzLl92aWV3cG9ydC5nZXREYXRhTGVuZ3RoKCkqdGhpcy5faXRlbVNpemUpfV91cGRhdGVSZW5kZXJlZFJhbmdlKCl7aWYoIXRoaXMuX3ZpZXdwb3J0KXJldHVybjtjb25zdCBlPXRoaXMuX3ZpZXdwb3J0LmdldFJlbmRlcmVkUmFuZ2UoKSx0'@; put 'PXtzdGFydDplLnN0YXJ0LGVuZDplLmVuZH0scj10aGlzLl92aWV3cG9ydC5nZXRWaWV3cG9ydFNpemUoKSxpPXRoaXMuX3ZpZXdwb3J0LmdldERhdGFMZW5ndGgoKTtsZXQgbz10aGlzLl92aWV3cG9ydC5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCksYT10aGlzLl9pdGVtU2l6ZT4wP28vdGhpcy5f'@; put 'aXRlbVNpemU6MDtpZih0LmVuZD5pKXtjb25zdCB1PU1hdGguY2VpbChyL3RoaXMuX2l0ZW1TaXplKSxnPU1hdGgubWF4KDAsTWF0aC5taW4oYSxpLXUpKTthIT1nJiYoYT1nLG89Zyp0aGlzLl9pdGVtU2l6ZSx0LnN0YXJ0PU1hdGguZmxvb3IoYSkpLHQuZW5kPU1hdGgubWF4KDAsTWF0aC5t'@; put 'aW4oaSx0LnN0YXJ0K3UpKX1jb25zdCBsPW8tdC5zdGFydCp0aGlzLl9pdGVtU2l6ZTtpZihsPHRoaXMuX21pbkJ1ZmZlclB4JiYwIT10LnN0YXJ0KXtjb25zdCB1PU1hdGguY2VpbCgodGhpcy5fbWF4QnVmZmVyUHgtbCkvdGhpcy5faXRlbVNpemUpO3Quc3RhcnQ9TWF0aC5tYXgoMCx0LnN0'@; put 'YXJ0LXUpLHQuZW5kPU1hdGgubWluKGksTWF0aC5jZWlsKGErKHIrdGhpcy5fbWluQnVmZmVyUHgpL3RoaXMuX2l0ZW1TaXplKSl9ZWxzZXtjb25zdCB1PXQuZW5kKnRoaXMuX2l0ZW1TaXplLShvK3IpO2lmKHU8dGhpcy5fbWluQnVmZmVyUHgmJnQuZW5kIT1pKXtjb25zdCBnPU1hdGguY2Vp'@; put 'bCgodGhpcy5fbWF4QnVmZmVyUHgtdSkvdGhpcy5faXRlbVNpemUpO2c+MCYmKHQuZW5kPU1hdGgubWluKGksdC5lbmQrZyksdC5zdGFydD1NYXRoLm1heCgwLE1hdGguZmxvb3IoYS10aGlzLl9taW5CdWZmZXJQeC90aGlzLl9pdGVtU2l6ZSkpKX19dGhpcy5fdmlld3BvcnQuc2V0UmVuZGVy'@; put 'ZWRSYW5nZSh0KSx0aGlzLl92aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQoTWF0aC5yb3VuZCh0aGlzLl9pdGVtU2l6ZSp0LnN0YXJ0KSksdGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZS5uZXh0KE1hdGguZmxvb3IoYSkpfX1sZXQgTno9KCgpPT57Y2xhc3Mgbntfbmdab25lPXNu'@; put 'KGdhKTtfcGxhdGZvcm09c24ocEQpO19yZW5kZXJlcj1zbihnYykuY3JlYXRlUmVuZGVyZXIobnVsbCxudWxsKTtfY2xlYW51cEdsb2JhbExpc3RlbmVyO2NvbnN0cnVjdG9yKCl7fV9zY3JvbGxlZD1uZXcgTXI7X3Njcm9sbGVkQ291bnQ9MDtzY3JvbGxDb250YWluZXJzPW5ldyBNYXA7cmVn'@; put 'aXN0ZXIodCl7dGhpcy5zY3JvbGxDb250YWluZXJzLmhhcyh0KXx8dGhpcy5zY3JvbGxDb250YWluZXJzLnNldCh0LHQuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KHQpKSl9ZGVyZWdpc3Rlcih0KXtjb25zdCByPXRoaXMuc2Nyb2xsQ29udGFp'@; put 'bmVycy5nZXQodCk7ciYmKHIudW5zdWJzY3JpYmUoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZGVsZXRlKHQpKX1zY3JvbGxlZCh0PTIwKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyP25ldyBobyhyPT57dGhpcy5fY2xlYW51cEdsb2JhbExpc3RlbmVyfHwodGhpcy5fY2xlYW51'@; put 'cEdsb2JhbExpc3RlbmVyPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dGhpcy5fcmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsInNjcm9sbCIsKCk9PnRoaXMuX3Njcm9sbGVkLm5leHQoKSkpKTtjb25zdCBpPXQ+MD90aGlzLl9zY3JvbGxlZC5waXBlKFNvZSh0KSkuc3Vi'@; put 'c2NyaWJlKHIpOnRoaXMuX3Njcm9sbGVkLnN1YnNjcmliZShyKTtyZXR1cm4gdGhpcy5fc2Nyb2xsZWRDb3VudCsrLCgpPT57aS51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbGVkQ291bnQtLSx0aGlzLl9zY3JvbGxlZENvdW50fHwodGhpcy5fY2xlYW51cEdsb2JhbExpc3RlbmVyPy4oKSx0'@; put 'aGlzLl9jbGVhbnVwR2xvYmFsTGlzdGVuZXI9dm9pZCAwKX19KTpQYSgpfW5nT25EZXN0cm95KCl7dGhpcy5fY2xlYW51cEdsb2JhbExpc3RlbmVyPy4oKSx0aGlzLl9jbGVhbnVwR2xvYmFsTGlzdGVuZXI9dm9pZCAwLHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKCh0LHIpPT50aGlz'@; put 'LmRlcmVnaXN0ZXIocikpLHRoaXMuX3Njcm9sbGVkLmNvbXBsZXRlKCl9YW5jZXN0b3JTY3JvbGxlZCh0LHIpe2NvbnN0IGk9dGhpcy5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModCk7cmV0dXJuIHRoaXMuc2Nyb2xsZWQocikucGlwZShzdShvPT4hb3x8aS5pbmRleE9mKG8pPi0xKSl9'@; put 'Z2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpe2NvbnN0IHI9W107cmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKChpLG8pPT57dGhpcy5fc2Nyb2xsYWJsZUNvbnRhaW5zRWxlbWVudChvLHQpJiZyLnB1c2gobyl9KSxyfV9zY3JvbGxhYmxlQ29udGFpbnNFbGVtZW50'@; put 'KHQscil7bGV0IGk9bjcociksbz10LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O2Rve2lmKGk9PW8pcmV0dXJuITB9d2hpbGUoaT1pLnBhcmVudEVsZW1lbnQpO3JldHVybiExfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3'@; put 'NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxLU2U9KCgpPT57Y2xhc3MgbntlbGVtZW50UmVmPXNuKG5vKTtzY3JvbGxEaXNwYXRjaGVyPXNuKE56KTtuZ1pvbmU9c24oZ2EpO2Rpcj1zbihpTSx7b3B0aW9uYWw6'@; put 'ITB9KTtfc2Nyb2xsRWxlbWVudD10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtfZGVzdHJveWVkPW5ldyBNcjtfcmVuZGVyZXI9c24oTnQpO19jbGVhbnVwU2Nyb2xsO19lbGVtZW50U2Nyb2xsZWQ9bmV3IE1yO2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7dGhpcy5fY2xlYW51cFNj'@; put 'cm9sbD10aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX3Njcm9sbEVsZW1lbnQsInNjcm9sbCIsdD0+dGhpcy5fZWxlbWVudFNjcm9sbGVkLm5leHQodCkpKSx0aGlzLnNjcm9sbERpc3BhdGNoZXIucmVnaXN0ZXIodGhpcyl9bmdP'@; put 'bkRlc3Ryb3koKXt0aGlzLl9jbGVhbnVwU2Nyb2xsPy4oKSx0aGlzLl9lbGVtZW50U2Nyb2xsZWQuY29tcGxldGUoKSx0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfWVsZW1lbnRT'@; put 'Y3JvbGxlZCgpe3JldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsZWR9Z2V0RWxlbWVudFJlZigpe3JldHVybiB0aGlzLmVsZW1lbnRSZWZ9c2Nyb2xsVG8odCl7Y29uc3Qgcj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxpPXRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU7bnVs'@; put 'bD09dC5sZWZ0JiYodC5sZWZ0PWk/dC5lbmQ6dC5zdGFydCksbnVsbD09dC5yaWdodCYmKHQucmlnaHQ9aT90LnN0YXJ0OnQuZW5kKSxudWxsIT10LmJvdHRvbSYmKHQudG9wPXIuc2Nyb2xsSGVpZ2h0LXIuY2xpZW50SGVpZ2h0LXQuYm90dG9tKSxpJiZtRCgpIT1XNS5OT1JNQUw/KG51bGwh'@; put 'PXQubGVmdCYmKHQucmlnaHQ9ci5zY3JvbGxXaWR0aC1yLmNsaWVudFdpZHRoLXQubGVmdCksbUQoKT09VzUuSU5WRVJURUQ/dC5sZWZ0PXQucmlnaHQ6bUQoKT09VzUuTkVHQVRFRCYmKHQubGVmdD10LnJpZ2h0Py10LnJpZ2h0OnQucmlnaHQpKTpudWxsIT10LnJpZ2h0JiYodC5sZWZ0PXIu'@; put 'c2Nyb2xsV2lkdGgtci5jbGllbnRXaWR0aC10LnJpZ2h0KSx0aGlzLl9hcHBseVNjcm9sbFRvT3B0aW9ucyh0KX1fYXBwbHlTY3JvbGxUb09wdGlvbnModCl7Y29uc3Qgcj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDshZnVuY3Rpb24gV210KCl7aWYobnVsbD09UGIpe2lmKCJvYmpl'@; put 'Y3QiIT10eXBlb2YgZG9jdW1lbnR8fCFkb2N1bWVudHx8ImZ1bmN0aW9uIiE9dHlwZW9mIEVsZW1lbnR8fCFFbGVtZW50KXJldHVybiBQYj0hMSxQYjtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/LnN0eWxlJiYic2Nyb2xsQmVoYXZpb3IiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50'@; put 'LnN0eWxlKVBiPSEwO2Vsc2V7Y29uc3Qgbj1FbGVtZW50LnByb3RvdHlwZS5zY3JvbGxUbztQYj0hIW4mJiEvXHtccypcW25hdGl2ZSBjb2RlXF1ccypcfS8udGVzdChuLnRvU3RyaW5nKCkpfX1yZXR1cm4gUGJ9KCk/KG51bGwhPXQudG9wJiYoci5zY3JvbGxUb3A9dC50b3ApLG51bGwhPXQu'@; put 'bGVmdCYmKHIuc2Nyb2xsTGVmdD10LmxlZnQpKTpyLnNjcm9sbFRvKHQpfW1lYXN1cmVTY3JvbGxPZmZzZXQodCl7Y29uc3Qgcj0ibGVmdCIsaT0icmlnaHQiLG89dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYoInRvcCI9PXQpcmV0dXJuIG8uc2Nyb2xsVG9wO2lmKCJib3R0b20i'@; put 'PT10KXJldHVybiBvLnNjcm9sbEhlaWdodC1vLmNsaWVudEhlaWdodC1vLnNjcm9sbFRvcDtjb25zdCBhPXRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU7cmV0dXJuInN0YXJ0Ij09dD90PWE/aTpyOiJlbmQiPT10JiYodD1hP3I6aSksYSYmbUQoKT09VzUuSU5WRVJURUQ/dD09cj9v'@; put 'LnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgtby5zY3JvbGxMZWZ0Om8uc2Nyb2xsTGVmdDphJiZtRCgpPT1XNS5ORUdBVEVEP3Q9PXI/by5zY3JvbGxMZWZ0K28uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aDotby5zY3JvbGxMZWZ0OnQ9PXI/by5zY3JvbGxMZWZ0Om8uc2Nyb2xsV2lkdGgt'@; put 'by5jbGllbnRXaWR0aC1vLnNjcm9sbExlZnR9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNkay1zY3JvbGxhYmxlIiwiIl0sWyIiLCJjZGtTY3JvbGxhYmxlIiwiIl1dfSl9'@; put 'cmV0dXJuIG59KSgpLEZ6PSgoKT0+e2NsYXNzIG57X3BsYXRmb3JtPXNuKHBEKTtfbGlzdGVuZXJzO192aWV3cG9ydFNpemU7X2NoYW5nZT1uZXcgTXI7X2RvY3VtZW50PXNuKFRsKTtjb25zdHJ1Y3Rvcigpe2NvbnN0IHQ9c24oZ2EpLHI9c24oZ2MpLmNyZWF0ZVJlbmRlcmVyKG51bGwsbnVs'@; put 'bCk7dC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcil7Y29uc3QgaT1vPT50aGlzLl9jaGFuZ2UubmV4dChvKTt0aGlzLl9saXN0ZW5lcnM9W3IubGlzdGVuKCJ3aW5kb3ciLCJyZXNpemUiLGkpLHIubGlzdGVuKCJ3aW5kb3ciLCJvcmllbnRhdGlv'@; put 'bmNoYW5nZSIsaSldfXRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgpPT50aGlzLl92aWV3cG9ydFNpemU9bnVsbCl9KX1uZ09uRGVzdHJveSgpe3RoaXMuX2xpc3RlbmVycz8uZm9yRWFjaCh0PT50KCkpLHRoaXMuX2NoYW5nZS5jb21wbGV0ZSgpfWdldFZpZXdwb3J0U2l6ZSgpe3RoaXMuX3Zp'@; put 'ZXdwb3J0U2l6ZXx8dGhpcy5fdXBkYXRlVmlld3BvcnRTaXplKCk7Y29uc3QgdD17d2lkdGg6dGhpcy5fdmlld3BvcnRTaXplLndpZHRoLGhlaWdodDp0aGlzLl92aWV3cG9ydFNpemUuaGVpZ2h0fTtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHwodGhpcy5fdmlld3BvcnRTaXpl'@; put 'PW51bGwpLHR9Z2V0Vmlld3BvcnRSZWN0KCl7Y29uc3QgdD10aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx7d2lkdGg6cixoZWlnaHQ6aX09dGhpcy5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm57dG9wOnQudG9wLGxlZnQ6dC5sZWZ0LGJvdHRvbTp0LnRvcCtpLHJpZ2h0OnQubGVm'@; put 'dCtyLGhlaWdodDppLHdpZHRoOnJ9fWdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybnt0b3A6MCxsZWZ0OjB9O2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQscj10aGlzLl9nZXRXaW5kb3coKSxpPXQuZG9jdW1lbnRFbGVtZW50LG89'@; put 'aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOi1vLnRvcHx8dC5ib2R5LnNjcm9sbFRvcHx8ci5zY3JvbGxZfHxpLnNjcm9sbFRvcHx8MCxsZWZ0Oi1vLmxlZnR8fHQuYm9keS5zY3JvbGxMZWZ0fHxyLnNjcm9sbFh8fGkuc2Nyb2xsTGVmdHx8MH19Y2hhbmdlKHQ9MjApe3Jl'@; put 'dHVybiB0PjA/dGhpcy5fY2hhbmdlLnBpcGUoU29lKHQpKTp0aGlzLl9jaGFuZ2V9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV91cGRhdGVWaWV3cG9ydFNpemUoKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3RoaXMuX3ZpZXdwb3J0'@; put 'U2l6ZT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/e3dpZHRoOnQuaW5uZXJXaWR0aCxoZWlnaHQ6dC5pbm5lckhlaWdodH06e3dpZHRoOjAsaGVpZ2h0OjB9fXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2Vu'@; put 'Om4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtjb25zdCBYU2U9bmV3IEVyKCJWSVJUVUFMX1NDUk9MTEFCTEUiKTtsZXQgUVNlPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBLU2V7Y29uc3RydWN0b3IoKXtzdXBlcigpfW1lYXN1cmVWaWV3cG9y'@; put 'dFNpemUodCl7Y29uc3Qgcj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtyZXR1cm4iaG9yaXpvbnRhbCI9PT10P3IuY2xpZW50V2lkdGg6ci5jbGllbnRIZWlnaHR9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1ZGlyPSRy'@; put 'KHt0eXBlOm4sZmVhdHVyZXM6W0ZvXX0pfXJldHVybiBufSkoKTtjb25zdCBlNHQ9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZTwidSI/WlNlOlBtdDtsZXQgb009KCgpPT57Y2xhc3MgbiBleHRlbmRzIFFTZXtlbGVtZW50UmVmPXNuKG5vKTtfY2hhbmdlRGV0ZWN0b3JSZWY9c24oVWwp'@; put 'O19zY3JvbGxTdHJhdGVneT1zbihxU2Use29wdGlvbmFsOiEwfSk7c2Nyb2xsYWJsZT1zbihYU2Use29wdGlvbmFsOiEwfSk7X3BsYXRmb3JtPXNuKHBEKTtfZGV0YWNoZWRTdWJqZWN0PW5ldyBNcjtfcmVuZGVyZWRSYW5nZVN1YmplY3Q9bmV3IE1yO2dldCBvcmllbnRhdGlvbigpe3JldHVy'@; put 'biB0aGlzLl9vcmllbnRhdGlvbn1zZXQgb3JpZW50YXRpb24odCl7dGhpcy5fb3JpZW50YXRpb24hPT10JiYodGhpcy5fb3JpZW50YXRpb249dCx0aGlzLl9jYWxjdWxhdGVTcGFjZXJTaXplKCkpfV9vcmllbnRhdGlvbj0idmVydGljYWwiO2FwcGVuZE9ubHk9ITE7c2Nyb2xsZWRJbmRleENo'@; put 'YW5nZT1uZXcgaG8odD0+dGhpcy5fc2Nyb2xsU3RyYXRlZ3kuc2Nyb2xsZWRJbmRleENoYW5nZS5zdWJzY3JpYmUocj0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+dGhpcy5uZ1pvbmUucnVuKCgpPT50Lm5leHQocikpKSkpO19jb250ZW50V3JhcHBlcjtyZW5kZXJlZFJhbmdlU3RyZWFt'@; put 'PXRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0O190b3RhbENvbnRlbnRTaXplPTA7X3RvdGFsQ29udGVudFdpZHRoPUIxKCIiKTtfdG90YWxDb250ZW50SGVpZ2h0PUIxKCIiKTtfcmVuZGVyZWRDb250ZW50VHJhbnNmb3JtO19yZW5kZXJlZFJhbmdlPXtzdGFydDowLGVuZDowfTtfZGF0YUxl'@; put 'bmd0aD0wO192aWV3cG9ydFNpemU9MDtfZm9yT2Y7X3JlbmRlcmVkQ29udGVudE9mZnNldD0wO19yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITE7X2NoYW5nZURldGVjdGlvbk5lZWRlZD1CMSghMSk7X3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uPVtdO192aWV3cG9ydENoYW5n'@; put 'ZXM9QXIuRU1QVFk7X2luamVjdG9yPXNuKE1sKTtfaXNEZXN0cm95ZWQ9ITE7Y29uc3RydWN0b3IoKXtzdXBlcigpO2NvbnN0IHQ9c24oRnopO3RoaXMuX3ZpZXdwb3J0Q2hhbmdlcz10LmNoYW5nZSgpLnN1YnNjcmliZSgoKT0+e3RoaXMuY2hlY2tWaWV3cG9ydFNpemUoKX0pLHRoaXMuc2Ny'@; put 'b2xsYWJsZXx8KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNkay12aXJ0dWFsLXNjcm9sbGFibGUiKSx0aGlzLnNjcm9sbGFibGU9dGhpcyk7Y29uc3Qgcj1mdW5jdGlvbiBVdmUobixlKXtjb25zdCB0PWU/LmluamVjdG9yPz9zbihNbCk7bGV0IGkscj0h'@; put 'MCE9PWU/Lm1hbnVhbENsZWFudXA/dC5nZXQoTTIpOm51bGw7Y29uc3Qgbz10LmdldChPQSxudWxsLHtvcHRpb25hbDohMH0pLGE9dC5nZXQobTgpO3JldHVybiBudWxsIT09bz8oaT1mdW5jdGlvbiBHaXQobixlLHQpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShaaXQpO3JldHVybiByLnZpZXc9'@; put 'bixyLnpvbmU9dHlwZW9mIFpvbmU8InUiP1pvbmUuY3VycmVudDpudWxsLHIubm90aWZpZXI9ZSxyLmZuPVd2ZShyLHQpLG5bMjNdPz89bmV3IFNldCxuWzIzXS5hZGQociksci5jb25zdW1lck1hcmtlZERpcnR5KHIpLHJ9KG8udmlldyxhLG4pLHIgaW5zdGFuY2VvZiBKUCYmci5fbFZpZXc9'@; put 'PT1vLnZpZXcmJihyPW51bGwpKTppPWZ1bmN0aW9uICRpdChuLGUsdCl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKFlpdCk7cmV0dXJuIHIuZm49V3ZlKHIsbiksci5zY2hlZHVsZXI9ZSxyLm5vdGlmaWVyPXQsci56b25lPXR5cGVvZiBab25lPCJ1Ij9ab25lLmN1cnJlbnQ6bnVsbCxyLnNjaGVk'@; put 'dWxlci5hZGQociksci5ub3RpZmllci5ub3RpZnkoMTIpLHJ9KG4sdC5nZXQob0gpLGEpLGkuaW5qZWN0b3I9dCxudWxsIT09ciYmKGkub25EZXN0cm95Rm49ci5vbkRlc3Ryb3koKCk9PmkuZGVzdHJveSgpKSksbmV3IFdpdChpKX0oKCk9Pnt0aGlzLl9jaGFuZ2VEZXRlY3Rpb25OZWVkZWQo'@; put 'KSYmdGhpcy5fZG9DaGFuZ2VEZXRlY3Rpb24oKX0se2luamVjdG9yOnNuKFdnKS5pbmplY3Rvcn0pO3NuKE0yKS5vbkRlc3Ryb3koKCk9PntyLmRlc3Ryb3koKX0pfW5nT25Jbml0KCl7dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiYodGhpcy5zY3JvbGxhYmxlPT09dGhpcyYmc3VwZXIubmdP'@; put 'bkluaXQoKSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3RoaXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5hdHRhY2godGhpcyksdGhpcy5zY3JvbGxhYmxlLmVsZW1lbnRTY3JvbGxlZCgp'@; put 'LnBpcGUocWcobnVsbCksU29lKDAsZTR0KSx2MCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFNjcm9sbGVkKCkpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKX0pKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmRldGFj'@; put 'aCgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmRldGFjaCgpLHRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fZGV0YWNoZWRTdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fdmlld3BvcnRDaGFuZ2VzLnVuc3Vic2NyaWJlKCksdGhpcy5faXNEZXN0cm95ZWQ9ITAsc3Vw'@; put 'ZXIubmdPbkRlc3Ryb3koKX1hdHRhY2godCl7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9mb3JPZj10LHRoaXMuX2Zvck9mLmRhdGFTdHJlYW0ucGlwZSh2MCh0aGlzLl9kZXRhY2hlZFN1YmplY3QpKS5zdWJzY3JpYmUocj0+e2NvbnN0IGk9ci5sZW5ndGg7aSE9'@; put 'PXRoaXMuX2RhdGFMZW5ndGgmJih0aGlzLl9kYXRhTGVuZ3RoPWksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25EYXRhTGVuZ3RoQ2hhbmdlZCgpKSx0aGlzLl9kb0NoYW5nZURldGVjdGlvbigpfSl9KX1kZXRhY2goKXt0aGlzLl9mb3JPZj1udWxsLHRoaXMuX2RldGFjaGVkU3ViamVjdC5uZXh0'@; put 'KCl9Z2V0RGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9kYXRhTGVuZ3RofWdldFZpZXdwb3J0U2l6ZSgpe3JldHVybiB0aGlzLl92aWV3cG9ydFNpemV9Z2V0UmVuZGVyZWRSYW5nZSgpe3JldHVybiB0aGlzLl9yZW5kZXJlZFJhbmdlfW1lYXN1cmVCb3VuZGluZ0NsaWVudFJlY3RXaXRoU2Ny'@; put 'b2xsT2Zmc2V0KHQpe3JldHVybiB0aGlzLmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RdfXNldFRvdGFsQ29udGVudFNpemUodCl7dGhpcy5fdG90YWxDb250ZW50U2l6ZSE9PXQmJih0aGlzLl90b3RhbENvbnRlbnRTaXplPXQsdGhpcy5f'@; put 'Y2FsY3VsYXRlU3BhY2VyU2l6ZSgpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKSl9c2V0UmVuZGVyZWRSYW5nZSh0KXsoZnVuY3Rpb24gSm10KG4sZSl7cmV0dXJuIG4uc3RhcnQ9PWUuc3RhcnQmJm4uZW5kPT1lLmVuZH0pKHRoaXMuX3JlbmRlcmVkUmFuZ2UsdCl8fCh0aGlz'@; put 'LmFwcGVuZE9ubHkmJih0PXtzdGFydDowLGVuZDpNYXRoLm1heCh0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCx0LmVuZCl9KSx0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdC5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2U9dCksdGhpcy5fbWFya0NoYW5nZURldGVjdGlvbk5lZWRlZCgoKT0+dGhp'@; put 'cy5fc2Nyb2xsU3RyYXRlZ3kub25Db250ZW50UmVuZGVyZWQoKSkpfWdldE9mZnNldFRvUmVuZGVyZWRDb250ZW50U3RhcnQoKXtyZXR1cm4gdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlP251bGw6dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0fXNldFJlbmRlcmVk'@; put 'Q29udGVudE9mZnNldCh0LHI9InRvLXN0YXJ0Iil7dD10aGlzLmFwcGVuZE9ubHkmJiJ0by1zdGFydCI9PT1yPzA6dDtjb25zdCBvPSJob3Jpem9udGFsIj09dGhpcy5vcmllbnRhdGlvbixhPW8/IlgiOiJZIjtsZXQgdT1gdHJhbnNsYXRlJHthfSgke051bWJlcigobyYmdGhpcy5kaXImJiJy'@; put 'dGwiPT10aGlzLmRpci52YWx1ZT8tMToxKSp0KX1weClgO3RoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldD10LCJ0by1lbmQiPT09ciYmKHUrPWAgdHJhbnNsYXRlJHthfSgtMTAwJSlgLHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT0hMCksdGhpcy5fcmVuZGVyZWRD'@; put 'b250ZW50VHJhbnNmb3JtIT11JiYodGhpcy5fcmVuZGVyZWRDb250ZW50VHJhbnNmb3JtPXUsdGhpcy5fbWFya0NoYW5nZURldGVjdGlvbk5lZWRlZCgoKT0+e3RoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT8odGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0LT10aGlz'@; put 'Lm1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCksdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPSExLHRoaXMuc2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldCkpOnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uUmVuZGVyZWRP'@; put 'ZmZzZXRDaGFuZ2VkKCl9KSl9c2Nyb2xsVG9PZmZzZXQodCxyPSJhdXRvIil7Y29uc3QgaT17YmVoYXZpb3I6cn07Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj9pLnN0YXJ0PXQ6aS50b3A9dCx0aGlzLnNjcm9sbGFibGUuc2Nyb2xsVG8oaSl9c2Nyb2xsVG9JbmRleCh0LHI9ImF1'@; put 'dG8iKXt0aGlzLl9zY3JvbGxTdHJhdGVneS5zY3JvbGxUb0luZGV4KHQscil9bWVhc3VyZVNjcm9sbE9mZnNldCh0KXtsZXQgcjtyZXR1cm4gcj10aGlzLnNjcm9sbGFibGU9PXRoaXM/aT0+c3VwZXIubWVhc3VyZVNjcm9sbE9mZnNldChpKTppPT50aGlzLnNjcm9sbGFibGUubWVhc3VyZVNj'@; put 'cm9sbE9mZnNldChpKSxNYXRoLm1heCgwLHIodD8/KCJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/InN0YXJ0IjoidG9wIikpLXRoaXMubWVhc3VyZVZpZXdwb3J0T2Zmc2V0KCkpfW1lYXN1cmVWaWV3cG9ydE9mZnNldCh0KXtsZXQgcjtjb25zdCBpPSJsZWZ0IixvPSJyaWdodCIs'@; put 'YT0icnRsIj09dGhpcy5kaXI/LnZhbHVlO3I9InN0YXJ0Ij09dD9hP286aToiZW5kIj09dD9hP2k6bzp0fHwoImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8ibGVmdCI6InRvcCIpO2NvbnN0IGw9dGhpcy5zY3JvbGxhYmxlLm1lYXN1cmVCb3VuZGluZ0NsaWVudFJlY3RXaXRoU2Ny'@; put 'b2xsT2Zmc2V0KHIpO3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtyXS1sfW1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCl7Y29uc3QgdD10aGlzLl9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50O3JldHVybiJob3Jpem9u'@; put 'dGFsIj09PXRoaXMub3JpZW50YXRpb24/dC5vZmZzZXRXaWR0aDp0Lm9mZnNldEhlaWdodH1tZWFzdXJlUmFuZ2VTaXplKHQpe3JldHVybiB0aGlzLl9mb3JPZj90aGlzLl9mb3JPZi5tZWFzdXJlUmFuZ2VTaXplKHQsdGhpcy5vcmllbnRhdGlvbik6MH1jaGVja1ZpZXdwb3J0U2l6ZSgpe3Ro'@; put 'aXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5vbkRhdGFMZW5ndGhDaGFuZ2VkKCl9X21lYXN1cmVWaWV3cG9ydFNpemUoKXt0aGlzLl92aWV3cG9ydFNpemU9dGhpcy5zY3JvbGxhYmxlLm1lYXN1cmVWaWV3cG9ydFNpemUodGhpcy5vcmllbnRhdGlvbil9'@; put 'X21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQodCl7dCYmdGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb24ucHVzaCh0KSwhTnUodGhpcy5fY2hhbmdlRGV0ZWN0aW9uTmVlZGVkKSYmdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgp'@; put 'PT57dGhpcy5uZ1pvbmUucnVuKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0aW9uTmVlZGVkLnNldCghMCl9KX0pfSl9X2RvQ2hhbmdlRGV0ZWN0aW9uKCl7dGhpcy5faXNEZXN0cm95ZWR8fHRoaXMubmdab25lLnJ1bigoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygp'@; put 'LHRoaXMuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPXRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSxIOCgoKT0+e3RoaXMuX2NoYW5nZURldGVjdGlvbk5lZWRlZC5zZXQoITEpO2NvbnN0IHQ9dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb247'@; put 'dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb249W107Zm9yKGNvbnN0IHIgb2YgdClyKCl9LHtpbmplY3Rvcjp0aGlzLl9pbmplY3Rvcn0pfSl9X2NhbGN1bGF0ZVNwYWNlclNpemUoKXt0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQuc2V0KCJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRp'@; put 'b24/IiI6YCR7dGhpcy5fdG90YWxDb250ZW50U2l6ZX1weGApLHRoaXMuX3RvdGFsQ29udGVudFdpZHRoLnNldCgiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP2Ake3RoaXMuX3RvdGFsQ29udGVudFNpemV9cHhgOiIiKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVy'@; put 'biBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihyLGkpe2lmKDEmciYmV28oJG10LDcpLDImcil7bGV0IG87Y2kobz11aSgpKSYmKGkuX2NvbnRlbnRXcmFw'@; put 'cGVyPW8uZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihyLGkpezImciYmd3IoImNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIiwiaG9yaXpvbnRhbCI9PT1p'@; put 'Lm9yaWVudGF0aW9uKSgiY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIiwiaG9yaXpvbnRhbCIhPT1pLm9yaWVudGF0aW9uKX0saW5wdXRzOntvcmllbnRhdGlvbjoib3JpZW50YXRpb24iLGFwcGVuZE9ubHk6WzIsImFwcGVuZE9ubHkiLCJhcHBlbmRPbmx5IixaMF19'@; put 'LG91dHB1dHM6e3Njcm9sbGVkSW5kZXhDaGFuZ2U6InNjcm9sbGVkSW5kZXhDaGFuZ2UifSxmZWF0dXJlczpbYm8oW3twcm92aWRlOktTZSx1c2VGYWN0b3J5Oih0LHIpPT50fHxyLGRlcHM6W1tuZXcgdzgsbmV3IHZ5KFhTZSldLG5dfV0pLEZvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6cW10LGRl'@; put 'Y2xzOjQsdmFyczo0LGNvbnN0czpbWyJjb250ZW50V3JhcHBlciIsIiJdLFsxLCJjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyIl0sWzEsImNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24ocixpKXsxJnImJihmbygpLCRSKDAsImRpdiIsMSww'@; put 'KSxXcigyKSxxUigpLERqKDMsImRpdiIsMikpLDImciYmKGllKDMpLE8yKCJ3aWR0aCIsaS5fdG90YWxDb250ZW50V2lkdGgoKSkoImhlaWdodCIsaS5fdG90YWxDb250ZW50SGVpZ2h0KCkpKX0sc3R5bGVzOlsiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0e2Rpc3BsYXk6YmxvY2s7cG9z'@; put 'aXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9LmNkay12aXJ0dWFsLXNjcm9sbGFibGV7b3ZlcmZsb3c6YXV0bzt3aWxsLWNoYW5nZTpzY3JvbGwtcG9zaXRpb247Y29udGFpbjpzdHJpY3R9LmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246'@; put 'YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NvbnRhaW46Y29udGVudH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwt'@; put 'Y29udGVudC13cmFwcGVye21pbi1oZWlnaHQ6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlv'@; put 'bi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nk'@; put 'a1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO21hcmdpbi1sZWZ0OjA7bWFy'@; put 'Z2luLXJpZ2h0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4td2lkdGg6MTAwJX0uY2RrLXZp'@; put 'cnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdy'@; put 'YXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9u'@; put 'LXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdp'@; put 'ZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye2hlaWdodDoxcHg7dHJhbnNmb3JtLW9yaWdpbjowIDA7ZmxleDowIDAgYXV0b31bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDB9XG4iXSxlbmNhcHN1'@; put 'bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KX1yZXR1cm4gbn0pKCk7ZnVuY3Rpb24gSlNlKG4sZSx0KXtpZighdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpcmV0dXJuIDA7Y29uc3QgaT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiJob3Jpem9udGFsIj09PW4/InN0YXJ0Ij09'@; put 'PWU/aS5sZWZ0OmkucmlnaHQ6InN0YXJ0Ij09PWU/aS50b3A6aS5ib3R0b219bGV0IFB6PSgoKT0+e2NsYXNzIG57X3ZpZXdDb250YWluZXJSZWY9c24oRHMpO190ZW1wbGF0ZT1zbihGYyk7X2RpZmZlcnM9c24oYXYpO192aWV3UmVwZWF0ZXI9c24oRW9lKTtfdmlld3BvcnQ9c24ob00se3Nr'@; put 'aXBTZWxmOiEwfSk7dmlld0NoYW5nZT1uZXcgTXI7X2RhdGFTb3VyY2VDaGFuZ2VzPW5ldyBNcjtnZXQgY2RrVmlydHVhbEZvck9mKCl7cmV0dXJuIHRoaXMuX2Nka1ZpcnR1YWxGb3JPZn1zZXQgY2RrVmlydHVhbEZvck9mKHQpe3RoaXMuX2Nka1ZpcnR1YWxGb3JPZj10LGZ1bmN0aW9uIFpt'@; put 'dChuKXtyZXR1cm4gbiYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29ubmVjdCYmIShuIGluc3RhbmNlb2YgenJlKX0odCk/dGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dCh0KTp0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KG5ldyBHbXQoeEkodCk/dDpBcnJheS5mcm9tKHR8fFtdKSkp'@; put 'fV9jZGtWaXJ0dWFsRm9yT2Y7Z2V0IGNka1ZpcnR1YWxGb3JUcmFja0J5KCl7cmV0dXJuIHRoaXMuX2Nka1ZpcnR1YWxGb3JUcmFja0J5fXNldCBjZGtWaXJ0dWFsRm9yVHJhY2tCeSh0KXt0aGlzLl9uZWVkc1VwZGF0ZT0hMCx0aGlzLl9jZGtWaXJ0dWFsRm9yVHJhY2tCeT10PyhyLGkpPT50'@; put 'KHIrKHRoaXMuX3JlbmRlcmVkUmFuZ2U/dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydDowKSxpKTp2b2lkIDB9X2Nka1ZpcnR1YWxGb3JUcmFja0J5O3NldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGUodCl7dCYmKHRoaXMuX25lZWRzVXBkYXRlPSEwLHRoaXMuX3RlbXBsYXRlPXQpfWdldCBjZGtW'@; put 'aXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUoKXtyZXR1cm4gdGhpcy5fdmlld1JlcGVhdGVyLnZpZXdDYWNoZVNpemV9c2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSh0KXt0aGlzLl92aWV3UmVwZWF0ZXIudmlld0NhY2hlU2l6ZT1GYih0KX1kYXRhU3RyZWFtPXRoaXMuX2Rh'@; put 'dGFTb3VyY2VDaGFuZ2VzLnBpcGUocWcobnVsbCksZnVuY3Rpb24gVm10KCl7cmV0dXJuIGFkKChuLGUpPT57bGV0IHQscj0hMTtuLnN1YnNjcmliZSh2dShlLGk9Pntjb25zdCBvPXQ7dD1pLHImJmUubmV4dChbbyxpXSkscj0hMH0pKX0pfSgpLG0wKChbdCxyXSk9PnRoaXMuX2NoYW5nZURh'@; put 'dGFTb3VyY2UodCxyKSksVlNlKDEpKTtfZGlmZmVyPW51bGw7X2RhdGE7X3JlbmRlcmVkSXRlbXM7X3JlbmRlcmVkUmFuZ2U7X25lZWRzVXBkYXRlPSExO19kZXN0cm95ZWQ9bmV3IE1yO2NvbnN0cnVjdG9yKCl7Y29uc3QgdD1zbihnYSk7dGhpcy5kYXRhU3RyZWFtLnN1YnNjcmliZShyPT57'@; put 'dGhpcy5fZGF0YT1yLHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCl9KSx0aGlzLl92aWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLnBpcGUodjAodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKHI9Pnt0aGlzLl9yZW5kZXJlZFJhbmdlPXIsdGhpcy52aWV3Q2hhbmdlLm9ic2VydmVy'@; put 'cy5sZW5ndGgmJnQucnVuKCgpPT50aGlzLnZpZXdDaGFuZ2UubmV4dCh0aGlzLl9yZW5kZXJlZFJhbmdlKSksdGhpcy5fb25SZW5kZXJlZERhdGFDaGFuZ2UoKX0pLHRoaXMuX3ZpZXdwb3J0LmF0dGFjaCh0aGlzKX1tZWFzdXJlUmFuZ2VTaXplKHQscil7aWYodC5zdGFydD49dC5lbmQpcmV0'@; put 'dXJuIDA7Y29uc3QgaT10LnN0YXJ0LXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQsbz10LmVuZC10LnN0YXJ0O2xldCBhLGw7Zm9yKGxldCB1PTA7dTxvO3UrKyl7Y29uc3QgZz10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldCh1K2kpO2lmKGcmJmcucm9vdE5vZGVzLmxlbmd0aCl7YT1sPWcu'@; put 'cm9vdE5vZGVzWzBdO2JyZWFrfX1mb3IobGV0IHU9by0xO3U+LTE7dS0tKXtjb25zdCBnPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KHUraSk7aWYoZyYmZy5yb290Tm9kZXMubGVuZ3RoKXtsPWcucm9vdE5vZGVzW2cucm9vdE5vZGVzLmxlbmd0aC0xXTticmVha319cmV0dXJuIGEmJmw/'@; put 'SlNlKHIsImVuZCIsbCktSlNlKHIsInN0YXJ0IixhKTowfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlciYmdGhpcy5fbmVlZHNVcGRhdGUpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fcmVuZGVyZWRJdGVtcyk7dD90aGlzLl9hcHBseUNoYW5nZXModCk6dGhpcy5fdXBkYXRl'@; put 'Q29udGV4dCgpLHRoaXMuX25lZWRzVXBkYXRlPSExfX1uZ09uRGVzdHJveSgpe3RoaXMuX3ZpZXdwb3J0LmRldGFjaCgpLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQodm9pZCAwKSx0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMudmlld0NoYW5nZS5jb21wbGV0'@; put 'ZSgpLHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fdmlld1JlcGVhdGVyLmRldGFjaCgpfV9vblJlbmRlcmVkRGF0YUNoYW5nZSgpe3RoaXMuX3JlbmRlcmVkUmFuZ2UmJih0aGlzLl9yZW5kZXJlZEl0ZW1zPXRoaXMuX2RhdGEuc2xpY2Uo'@; put 'dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCx0aGlzLl9yZW5kZXJlZFJhbmdlLmVuZCksdGhpcy5fZGlmZmVyfHwodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0aGlzLl9yZW5kZXJlZEl0ZW1zKS5jcmVhdGUoKHQscik9PnRoaXMuY2RrVmlydHVhbEZvclRyYWNrQnk/dGhpcy5j'@; put 'ZGtWaXJ0dWFsRm9yVHJhY2tCeSh0LHIpOnIpKSx0aGlzLl9uZWVkc1VwZGF0ZT0hMCl9X2NoYW5nZURhdGFTb3VyY2UodCxyKXtyZXR1cm4gdCYmdC5kaXNjb25uZWN0KHRoaXMpLHRoaXMuX25lZWRzVXBkYXRlPSEwLHI/ci5jb25uZWN0KHRoaXMpOlBhKCl9X3VwZGF0ZUNvbnRleHQoKXtj'@; put 'b25zdCB0PXRoaXMuX2RhdGEubGVuZ3RoO2xldCByPXRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoO2Zvcig7ci0tOyl7Y29uc3QgaT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldChyKTtpLmNvbnRleHQuaW5kZXg9dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCtyLGkuY29udGV4dC5j'@; put 'b3VudD10LHRoaXMuX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXMoaS5jb250ZXh0KSxpLmRldGVjdENoYW5nZXMoKX19X2FwcGx5Q2hhbmdlcyh0KXt0aGlzLl92aWV3UmVwZWF0ZXIuYXBwbHlDaGFuZ2VzKHQsdGhpcy5fdmlld0NvbnRhaW5lclJlZiwobyxhLGwpPT50aGlzLl9n'@; put 'ZXRFbWJlZGRlZFZpZXdBcmdzKG8sbCksbz0+by5pdGVtKSx0LmZvckVhY2hJZGVudGl0eUNoYW5nZShvPT57dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQoby5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PW8uaXRlbX0pO2NvbnN0IHI9dGhpcy5fZGF0YS5sZW5ndGg7bGV0IGk9'@; put 'dGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGg7Zm9yKDtpLS07KXtjb25zdCBvPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KGkpO28uY29udGV4dC5pbmRleD10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0K2ksby5jb250ZXh0LmNvdW50PXIsdGhpcy5fdXBkYXRlQ29tcHV0ZWRDb250'@; put 'ZXh0UHJvcGVydGllcyhvLmNvbnRleHQpfX1fdXBkYXRlQ29tcHV0ZWRDb250ZXh0UHJvcGVydGllcyh0KXt0LmZpcnN0PTA9PT10LmluZGV4LHQubGFzdD10LmluZGV4PT09dC5jb3VudC0xLHQuZXZlbj10LmluZGV4JTI9PTAsdC5vZGQ9IXQuZXZlbn1fZ2V0RW1iZWRkZWRWaWV3QXJncyh0'@; put 'LHIpe3JldHVybnt0ZW1wbGF0ZVJlZjp0aGlzLl90ZW1wbGF0ZSxjb250ZXh0OnskaW1wbGljaXQ6dC5pdGVtLGNka1ZpcnR1YWxGb3JPZjp0aGlzLl9jZGtWaXJ0dWFsRm9yT2YsaW5kZXg6LTEsY291bnQ6LTEsZmlyc3Q6ITEsbGFzdDohMSxvZGQ6ITEsZXZlbjohMX0saW5kZXg6cn19c3Rh'@; put 'dGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQodCxyKXtyZXR1cm4hMH1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2RrVmlydHVhbEZvciIsIiIsImNka1ZpcnR1YWxGb3JP'@; put 'ZiIsIiJdXSxpbnB1dHM6e2Nka1ZpcnR1YWxGb3JPZjoiY2RrVmlydHVhbEZvck9mIixjZGtWaXJ0dWFsRm9yVHJhY2tCeToiY2RrVmlydHVhbEZvclRyYWNrQnkiLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZToiY2RrVmlydHVhbEZvclRlbXBsYXRlIixjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNo'@; put 'ZVNpemU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSJ9LGZlYXR1cmVzOltibyhbe3Byb3ZpZGU6RW9lLHVzZUNsYXNzOiRTZX1dKV19KX1yZXR1cm4gbn0pKCksdDR0PSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtz'@; put 'dGF0aWMgXHUwMjc1bW9kPUdpKHt0eXBlOm59KTtzdGF0aWMgXHUwMjc1aW5qPW1pKHt9KX1yZXR1cm4gbn0pKCk7Y29uc3QgTW9lPXt9O2xldCBuNHQ9KCgpPT57Y2xhc3MgbntfYXBwSWQ9c24oTDkpO2dldElkKHQpe3JldHVybiJuZyIhPT10aGlzLl9hcHBJZCYmKHQrPXRoaXMuX2FwcElk'@; put 'KSxNb2UuaGFzT3duUHJvcGVydHkodCl8fChNb2VbdF09MCksYCR7dH0ke01vZVt0XSsrfWB9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJv'@; put 'b3QifSl9cmV0dXJuIG59KSgpO2Z1bmN0aW9uIFRvZShuKXtjb25zdCBlPW4uY2xvbmVOb2RlKCEwKSx0PWUucXVlcnlTZWxlY3RvckFsbCgiW2lkXSIpLHI9bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2UucmVtb3ZlQXR0cmlidXRlKCJpZCIpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsr'@; put 'KXRbaV0ucmVtb3ZlQXR0cmlidXRlKCJpZCIpO3JldHVybiJjYW52YXMiPT09cj9uRWUobixlKTooImlucHV0Ij09PXJ8fCJzZWxlY3QiPT09cnx8InRleHRhcmVhIj09PXIpJiZ0RWUobixlKSxlRWUoImNhbnZhcyIsbixlLG5FZSksZUVlKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCIsbixl'@; put 'LHRFZSksZX1mdW5jdGlvbiBlRWUobixlLHQscil7Y29uc3QgaT1lLnF1ZXJ5U2VsZWN0b3JBbGwobik7aWYoaS5sZW5ndGgpe2NvbnN0IG89dC5xdWVyeVNlbGVjdG9yQWxsKG4pO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKXIoaVthXSxvW2FdKX19bGV0IGk0dD0wO2Z1bmN0aW9uIHRF'@; put 'ZShuLGUpeyJmaWxlIiE9PWUudHlwZSYmKGUudmFsdWU9bi52YWx1ZSksInJhZGlvIj09PWUudHlwZSYmZS5uYW1lJiYoZS5uYW1lPWBtYXQtY2xvbmUtJHtlLm5hbWV9LSR7aTR0Kyt9YCl9ZnVuY3Rpb24gbkVlKG4sZSl7Y29uc3QgdD1lLmdldENvbnRleHQoIjJkIik7aWYodCl0cnl7dC5k'@; put 'cmF3SW1hZ2UobiwwLDApfWNhdGNoe319ZnVuY3Rpb24geG9lKG4pe2NvbnN0IGU9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOmUudG9wLHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tLGxlZnQ6ZS5sZWZ0LHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0LHg6'@; put 'ZS54LHk6ZS55fX1mdW5jdGlvbiBBb2UobixlLHQpe2NvbnN0e3RvcDpyLGJvdHRvbTppLGxlZnQ6byxyaWdodDphfT1uO3JldHVybiB0Pj1yJiZ0PD1pJiZlPj1vJiZlPD1hfWZ1bmN0aW9uIF9EKG4sZSx0KXtuLnRvcCs9ZSxuLmJvdHRvbT1uLnRvcCtuLmhlaWdodCxuLmxlZnQrPXQsbi5y'@; put 'aWdodD1uLmxlZnQrbi53aWR0aH1mdW5jdGlvbiByRWUobixlLHQscil7Y29uc3R7dG9wOmkscmlnaHQ6byxib3R0b206YSxsZWZ0Omwsd2lkdGg6dSxoZWlnaHQ6Z309bixFPXUqZSxPPWcqZTtyZXR1cm4gcj5pLU8mJnI8YStPJiZ0PmwtRSYmdDxvK0V9Y2xhc3MgaUVle19kb2N1bWVudDtw'@; put 'b3NpdGlvbnM9bmV3IE1hcDtjb25zdHJ1Y3RvcihlKXt0aGlzLl9kb2N1bWVudD1lfWNsZWFyKCl7dGhpcy5wb3NpdGlvbnMuY2xlYXIoKX1jYWNoZShlKXt0aGlzLmNsZWFyKCksdGhpcy5wb3NpdGlvbnMuc2V0KHRoaXMuX2RvY3VtZW50LHtzY3JvbGxQb3NpdGlvbjp0aGlzLmdldFZpZXdw'@; put 'b3J0U2Nyb2xsUG9zaXRpb24oKX0pLGUuZm9yRWFjaCh0PT57dGhpcy5wb3NpdGlvbnMuc2V0KHQse3Njcm9sbFBvc2l0aW9uOnt0b3A6dC5zY3JvbGxUb3AsbGVmdDp0LnNjcm9sbExlZnR9LGNsaWVudFJlY3Q6eG9lKHQpfSl9KX1oYW5kbGVTY3JvbGwoZSl7Y29uc3QgdD1SeihlKSxyPXRo'@; put 'aXMucG9zaXRpb25zLmdldCh0KTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBpPXIuc2Nyb2xsUG9zaXRpb247bGV0IG8sYTtpZih0PT09dGhpcy5fZG9jdW1lbnQpe2NvbnN0IGc9dGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7bz1nLnRvcCxhPWcubGVmdH1lbHNlIG89dC5zY3Jv'@; put 'bGxUb3AsYT10LnNjcm9sbExlZnQ7Y29uc3QgbD1pLnRvcC1vLHU9aS5sZWZ0LWE7cmV0dXJuIHRoaXMucG9zaXRpb25zLmZvckVhY2goKGcsRSk9PntnLmNsaWVudFJlY3QmJnQhPT1FJiZ0LmNvbnRhaW5zKEUpJiZfRChnLmNsaWVudFJlY3QsbCx1KX0pLGkudG9wPW8saS5sZWZ0PWEse3Rv'@; put 'cDpsLGxlZnQ6dX19Z2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpe3JldHVybnt0b3A6d2luZG93LnNjcm9sbFksbGVmdDp3aW5kb3cuc2Nyb2xsWH19fWZ1bmN0aW9uIG9FZShuLGUpe2NvbnN0IHQ9bi5yb290Tm9kZXM7aWYoMT09PXQubGVuZ3RoJiZ0WzBdLm5vZGVUeXBlPT09ZS5FTEVN'@; put 'RU5UX05PREUpcmV0dXJuIHRbMF07Y29uc3Qgcj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmZvckVhY2goaT0+ci5hcHBlbmRDaGlsZChpKSkscn1mdW5jdGlvbiBrb2UobixlLHQpe2ZvcihsZXQgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe2NvbnN0IGk9ZVtyXTtp'@; put 'P24uc2V0UHJvcGVydHkocixpLHQ/LmhhcyhyKT8iaW1wb3J0YW50IjoiIik6bi5yZW1vdmVQcm9wZXJ0eShyKX1yZXR1cm4gbn1mdW5jdGlvbiBhTShuLGUpe2NvbnN0IHQ9ZT8iIjoibm9uZSI7a29lKG4uc3R5bGUseyJ0b3VjaC1hY3Rpb24iOmU/IiI6Im5vbmUiLCItd2Via2l0LXVzZXIt'@; put 'ZHJhZyI6ZT8iIjoibm9uZSIsIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciI6ZT8iIjoidHJhbnNwYXJlbnQiLCJ1c2VyLXNlbGVjdCI6dCwiLW1zLXVzZXItc2VsZWN0Ijp0LCItd2Via2l0LXVzZXItc2VsZWN0Ijp0LCItbW96LXVzZXItc2VsZWN0Ijp0fSl9ZnVuY3Rpb24gYUVlKG4s'@; put 'ZSx0KXtrb2Uobi5zdHlsZSx7cG9zaXRpb246ZT8iIjoiZml4ZWQiLHRvcDplPyIiOiIwIixvcGFjaXR5OmU/IiI6IjAiLGxlZnQ6ZT8iIjoiLTk5OWVtIn0sdCl9ZnVuY3Rpb24gSHoobixlKXtyZXR1cm4gZSYmIm5vbmUiIT1lP24rIiAiK2U6bn1mdW5jdGlvbiBzRWUobixlKXtuLnN0eWxl'@; put 'LndpZHRoPWAke2Uud2lkdGh9cHhgLG4uc3R5bGUuaGVpZ2h0PWAke2UuaGVpZ2h0fXB4YCxuLnN0eWxlLnRyYW5zZm9ybT15RChlLmxlZnQsZS50b3ApfWZ1bmN0aW9uIHlEKG4sZSl7cmV0dXJuYHRyYW5zbGF0ZTNkKCR7TWF0aC5yb3VuZChuKX1weCwgJHtNYXRoLnJvdW5kKGUpfXB4LCAw'@; put 'KWB9ZnVuY3Rpb24gbEVlKG4pe2NvbnN0IGU9bi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm1zIik+LTE/MToxZTM7cmV0dXJuIHBhcnNlRmxvYXQobikqZX1mdW5jdGlvbiBSb2UobixlKXtyZXR1cm4gbi5nZXRQcm9wZXJ0eVZhbHVlKGUpLnNwbGl0KCIsIikubWFwKHI9PnIudHJpbSgpKX1j'@; put 'b25zdCBzNHQ9bmV3IFNldChbInBvc2l0aW9uIl0pO2NsYXNzIGw0dHtfZG9jdW1lbnQ7X3Jvb3RFbGVtZW50O19kaXJlY3Rpb247X2luaXRpYWxEb21SZWN0O19wcmV2aWV3VGVtcGxhdGU7X3ByZXZpZXdDbGFzcztfcGlja3VwUG9zaXRpb25PblBhZ2U7X2luaXRpYWxUcmFuc2Zvcm07X3pJ'@; put 'bmRleDtfcmVuZGVyZXI7X3ByZXZpZXdFbWJlZGRlZFZpZXc7X3ByZXZpZXc7Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fcHJldmlld31jb25zdHJ1Y3RvcihlLHQscixpLG8sYSxsLHUsZyxFKXt0aGlzLl9kb2N1bWVudD1lLHRoaXMuX3Jvb3RFbGVtZW50PXQsdGhpcy5fZGlyZWN0aW9u'@; put 'PXIsdGhpcy5faW5pdGlhbERvbVJlY3Q9aSx0aGlzLl9wcmV2aWV3VGVtcGxhdGU9byx0aGlzLl9wcmV2aWV3Q2xhc3M9YSx0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZT1sLHRoaXMuX2luaXRpYWxUcmFuc2Zvcm09dSx0aGlzLl96SW5kZXg9Zyx0aGlzLl9yZW5kZXJlcj1FfWF0dGFjaChl'@; put 'KXt0aGlzLl9wcmV2aWV3PXRoaXMuX2NyZWF0ZVByZXZpZXcoKSxlLmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXcpLGNFZSh0aGlzLl9wcmV2aWV3KSYmdGhpcy5fcHJldmlldy5zaG93UG9wb3ZlcigpfWRlc3Ryb3koKXt0aGlzLl9wcmV2aWV3LnJlbW92ZSgpLHRoaXMuX3ByZXZpZXdFbWJl'@; put 'ZGRlZFZpZXc/LmRlc3Ryb3koKSx0aGlzLl9wcmV2aWV3PXRoaXMuX3ByZXZpZXdFbWJlZGRlZFZpZXc9bnVsbH1zZXRUcmFuc2Zvcm0oZSl7dGhpcy5fcHJldmlldy5zdHlsZS50cmFuc2Zvcm09ZX1nZXRCb3VuZGluZ0NsaWVudFJlY3QoKXtyZXR1cm4gdGhpcy5fcHJldmlldy5nZXRCb3Vu'@; put 'ZGluZ0NsaWVudFJlY3QoKX1hZGRDbGFzcyhlKXt0aGlzLl9wcmV2aWV3LmNsYXNzTGlzdC5hZGQoZSl9Z2V0VHJhbnNpdGlvbkR1cmF0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGE0dChuKXtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUobiksdD1Sb2UoZSwidHJhbnNpdGlvbi1wcm9wZXJ0eSIp'@; put 'LHI9dC5maW5kKGw9PiJ0cmFuc2Zvcm0iPT09bHx8ImFsbCI9PT1sKTtpZighcilyZXR1cm4gMDtjb25zdCBpPXQuaW5kZXhPZihyKSxvPVJvZShlLCJ0cmFuc2l0aW9uLWR1cmF0aW9uIiksYT1Sb2UoZSwidHJhbnNpdGlvbi1kZWxheSIpO3JldHVybiBsRWUob1tpXSkrbEVlKGFbaV0pfSh0'@; put 'aGlzLl9wcmV2aWV3KX1hZGRFdmVudExpc3RlbmVyKGUsdCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLl9wcmV2aWV3LGUsdCl9X2NyZWF0ZVByZXZpZXcoKXtjb25zdCBlPXRoaXMuX3ByZXZpZXdUZW1wbGF0ZSx0PXRoaXMuX3ByZXZpZXdDbGFzcyxyPWU/ZS50ZW1wbGF0'@; put 'ZTpudWxsO2xldCBpO2lmKHImJmUpe2NvbnN0IG89ZS5tYXRjaFNpemU/dGhpcy5faW5pdGlhbERvbVJlY3Q6bnVsbCxhPWUudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcocixlLmNvbnRleHQpO2EuZGV0ZWN0Q2hhbmdlcygpLGk9b0VlKGEsdGhpcy5fZG9jdW1lbnQpLHRoaXMu'@; put 'X3ByZXZpZXdFbWJlZGRlZFZpZXc9YSxlLm1hdGNoU2l6ZT9zRWUoaSxvKTppLnN0eWxlLnRyYW5zZm9ybT15RCh0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS54LHRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLnkpfWVsc2UgaT1Ub2UodGhpcy5fcm9vdEVsZW1lbnQpLHNFZShpLHRoaXMu'@; put 'X2luaXRpYWxEb21SZWN0KSx0aGlzLl9pbml0aWFsVHJhbnNmb3JtJiYoaS5zdHlsZS50cmFuc2Zvcm09dGhpcy5faW5pdGlhbFRyYW5zZm9ybSk7cmV0dXJuIGtvZShpLnN0eWxlLHsicG9pbnRlci1ldmVudHMiOiJub25lIixtYXJnaW46Y0VlKGkpPyIwIGF1dG8gMCAwIjoiMCIscG9zaXRp'@; put 'b246ImZpeGVkIix0b3A6IjAiLGxlZnQ6IjAiLCJ6LWluZGV4Ijp0aGlzLl96SW5kZXgrIiJ9LHM0dCksYU0oaSwhMSksaS5jbGFzc0xpc3QuYWRkKCJjZGstZHJhZy1wcmV2aWV3IiksaS5zZXRBdHRyaWJ1dGUoInBvcG92ZXIiLCJtYW51YWwiKSxpLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlz'@; put 'Ll9kaXJlY3Rpb24pLHQmJihBcnJheS5pc0FycmF5KHQpP3QuZm9yRWFjaChvPT5pLmNsYXNzTGlzdC5hZGQobykpOmkuY2xhc3NMaXN0LmFkZCh0KSksaX19ZnVuY3Rpb24gY0VlKG4pe3JldHVybiJzaG93UG9wb3ZlciJpbiBufWNvbnN0IGM0dD17cGFzc2l2ZTohMH0sdUVlPXtwYXNzaXZl'@; put 'OiExfSx1NHQ9e3Bhc3NpdmU6ITEsY2FwdHVyZTohMH0sZEVlPSJjZGstZHJhZy1wbGFjZWhvbGRlciIsaEVlPW5ldyBTZXQoWyJwb3NpdGlvbiJdKTtjbGFzcyBoNHR7X2NvbmZpZztfZG9jdW1lbnQ7X25nWm9uZTtfdmlld3BvcnRSdWxlcjtfZHJhZ0Ryb3BSZWdpc3RyeTtfcmVuZGVyZXI7'@; put 'X3Jvb3RFbGVtZW50Q2xlYW51cHM7X2NsZWFudXBTaGFkb3dSb290U2VsZWN0U3RhcnQ7X3ByZXZpZXc7X3ByZXZpZXdDb250YWluZXI7X3BsYWNlaG9sZGVyUmVmO19wbGFjZWhvbGRlcjtfcGlja3VwUG9zaXRpb25JbkVsZW1lbnQ7X3BpY2t1cFBvc2l0aW9uT25QYWdlO19tYXJrZXI7X2Fu'@; put 'Y2hvcj1udWxsO19wYXNzaXZlVHJhbnNmb3JtPXt4OjAseTowfTtfYWN0aXZlVHJhbnNmb3JtPXt4OjAseTowfTtfaW5pdGlhbFRyYW5zZm9ybTtfaGFzU3RhcnRlZERyYWdnaW5nPUIxKCExKTtfaGFzTW92ZWQ7X2luaXRpYWxDb250YWluZXI7X2luaXRpYWxJbmRleDtfcGFyZW50UG9zaXRp'@; put 'b25zO19tb3ZlRXZlbnRzPW5ldyBNcjtfcG9pbnRlckRpcmVjdGlvbkRlbHRhO19wb2ludGVyUG9zaXRpb25BdExhc3REaXJlY3Rpb25DaGFuZ2U7X2xhc3RLbm93blBvaW50ZXJQb3NpdGlvbjtfcm9vdEVsZW1lbnQ7X293bmVyU1ZHRWxlbWVudDtfcm9vdEVsZW1lbnRUYXBIaWdobGlnaHQ7'@; put 'X3BvaW50ZXJNb3ZlU3Vic2NyaXB0aW9uPUFyLkVNUFRZO19wb2ludGVyVXBTdWJzY3JpcHRpb249QXIuRU1QVFk7X3Njcm9sbFN1YnNjcmlwdGlvbj1Bci5FTVBUWTtfcmVzaXplU3Vic2NyaXB0aW9uPUFyLkVNUFRZO19sYXN0VG91Y2hFdmVudFRpbWU7X2RyYWdTdGFydFRpbWU7X2JvdW5k'@; put 'YXJ5RWxlbWVudD1udWxsO19uYXRpdmVJbnRlcmFjdGlvbnNFbmFibGVkPSEwO19pbml0aWFsRG9tUmVjdDtfcHJldmlld1JlY3Q7X2JvdW5kYXJ5UmVjdDtfcHJldmlld1RlbXBsYXRlO19wbGFjZWhvbGRlclRlbXBsYXRlO19oYW5kbGVzPVtdO19kaXNhYmxlZEhhbmRsZXM9bmV3IFNldDtf'@; put 'ZHJvcENvbnRhaW5lcjtfZGlyZWN0aW9uPSJsdHIiO19wYXJlbnREcmFnUmVmO19jYWNoZWRTaGFkb3dSb290O2xvY2tBeGlzPW51bGw7ZHJhZ1N0YXJ0RGVsYXk9MDtwcmV2aWV3Q2xhc3M7c2NhbGU9MTtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fCEoIXRoaXMuX2Ry'@; put 'b3BDb250YWluZXJ8fCF0aGlzLl9kcm9wQ29udGFpbmVyLmRpc2FibGVkKX1zZXQgZGlzYWJsZWQoZSl7ZSE9PXRoaXMuX2Rpc2FibGVkJiYodGhpcy5fZGlzYWJsZWQ9ZSx0aGlzLl90b2dnbGVOYXRpdmVEcmFnSW50ZXJhY3Rpb25zKCksdGhpcy5faGFuZGxlcy5mb3JFYWNoKHQ9PmFNKHQs'@; put 'ZSkpKX1fZGlzYWJsZWQ9ITE7YmVmb3JlU3RhcnRlZD1uZXcgTXI7c3RhcnRlZD1uZXcgTXI7cmVsZWFzZWQ9bmV3IE1yO2VuZGVkPW5ldyBNcjtlbnRlcmVkPW5ldyBNcjtleGl0ZWQ9bmV3IE1yO2Ryb3BwZWQ9bmV3IE1yO21vdmVkPXRoaXMuX21vdmVFdmVudHM7ZGF0YTtjb25zdHJhaW5Q'@; put 'b3NpdGlvbjtjb25zdHJ1Y3RvcihlLHQscixpLG8sYSxsKXt0aGlzLl9jb25maWc9dCx0aGlzLl9kb2N1bWVudD1yLHRoaXMuX25nWm9uZT1pLHRoaXMuX3ZpZXdwb3J0UnVsZXI9byx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5PWEsdGhpcy5fcmVuZGVyZXI9bCx0aGlzLndpdGhSb290RWxlbWVu'@; put 'dChlKS53aXRoUGFyZW50KHQucGFyZW50RHJhZ1JlZnx8bnVsbCksdGhpcy5fcGFyZW50UG9zaXRpb25zPW5ldyBpRWUociksYS5yZWdpc3RlckRyYWdJdGVtKHRoaXMpfWdldFBsYWNlaG9sZGVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9wbGFjZWhvbGRlcn1nZXRSb290RWxlbWVudCgpe3Jl'@; put 'dHVybiB0aGlzLl9yb290RWxlbWVudH1nZXRWaXNpYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlzRHJhZ2dpbmcoKT90aGlzLmdldFBsYWNlaG9sZGVyRWxlbWVudCgpOnRoaXMuZ2V0Um9vdEVsZW1lbnQoKX13aXRoSGFuZGxlcyhlKXt0aGlzLl9oYW5kbGVzPWUubWFwKHI9Pm43KHIpKSx0'@; put 'aGlzLl9oYW5kbGVzLmZvckVhY2gocj0+YU0ocix0aGlzLmRpc2FibGVkKSksdGhpcy5fdG9nZ2xlTmF0aXZlRHJhZ0ludGVyYWN0aW9ucygpO2NvbnN0IHQ9bmV3IFNldDtyZXR1cm4gdGhpcy5fZGlzYWJsZWRIYW5kbGVzLmZvckVhY2gocj0+e3RoaXMuX2hhbmRsZXMuaW5kZXhPZihyKT4t'@; put 'MSYmdC5hZGQocil9KSx0aGlzLl9kaXNhYmxlZEhhbmRsZXM9dCx0aGlzfXdpdGhQcmV2aWV3VGVtcGxhdGUoZSl7cmV0dXJuIHRoaXMuX3ByZXZpZXdUZW1wbGF0ZT1lLHRoaXN9d2l0aFBsYWNlaG9sZGVyVGVtcGxhdGUoZSl7cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGU9ZSx0'@; put 'aGlzfXdpdGhSb290RWxlbWVudChlKXtjb25zdCB0PW43KGUpO2lmKHQhPT10aGlzLl9yb290RWxlbWVudCl7dGhpcy5fcmVtb3ZlUm9vdEVsZW1lbnRMaXN0ZW5lcnMoKTtjb25zdCByPXRoaXMuX3JlbmRlcmVyO3RoaXMuX3Jvb3RFbGVtZW50Q2xlYW51cHM9dGhpcy5fbmdab25lLnJ1bk91'@; put 'dHNpZGVBbmd1bGFyKCgpPT5bci5saXN0ZW4odCwibW91c2Vkb3duIix0aGlzLl9wb2ludGVyRG93bix1RWUpLHIubGlzdGVuKHQsInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLGM0dCksci5saXN0ZW4odCwiZHJhZ3N0YXJ0Iix0aGlzLl9uYXRpdmVEcmFnU3RhcnQsdUVlKV0pLHRo'@; put 'aXMuX2luaXRpYWxUcmFuc2Zvcm09dm9pZCAwLHRoaXMuX3Jvb3RFbGVtZW50PXR9cmV0dXJuIHR5cGVvZiBTVkdFbGVtZW50PCJ1IiYmdGhpcy5fcm9vdEVsZW1lbnQgaW5zdGFuY2VvZiBTVkdFbGVtZW50JiYodGhpcy5fb3duZXJTVkdFbGVtZW50PXRoaXMuX3Jvb3RFbGVtZW50Lm93bmVy'@; put 'U1ZHRWxlbWVudCksdGhpc313aXRoQm91bmRhcnlFbGVtZW50KGUpe3JldHVybiB0aGlzLl9ib3VuZGFyeUVsZW1lbnQ9ZT9uNyhlKTpudWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLGUmJih0aGlzLl9yZXNpemVTdWJzY3JpcHRpb249dGhpcy5fdmlld3BvcnRS'@; put 'dWxlci5jaGFuZ2UoMTApLnN1YnNjcmliZSgoKT0+dGhpcy5fY29udGFpbkluc2lkZUJvdW5kYXJ5T25SZXNpemUoKSkpLHRoaXN9d2l0aFBhcmVudChlKXtyZXR1cm4gdGhpcy5fcGFyZW50RHJhZ1JlZj1lLHRoaXN9ZGlzcG9zZSgpe3RoaXMuX3JlbW92ZVJvb3RFbGVtZW50TGlzdGVuZXJz'@; put 'KCksdGhpcy5pc0RyYWdnaW5nKCkmJnRoaXMuX3Jvb3RFbGVtZW50Py5yZW1vdmUoKSx0aGlzLl9tYXJrZXI/LnJlbW92ZSgpLHRoaXMuX2Rlc3Ryb3lQcmV2aWV3KCksdGhpcy5fZGVzdHJveVBsYWNlaG9sZGVyKCksdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5yZW1vdmVEcmFnSXRlbSh0aGlz'@; put 'KSx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLmJlZm9yZVN0YXJ0ZWQuY29tcGxldGUoKSx0aGlzLnN0YXJ0ZWQuY29tcGxldGUoKSx0aGlzLnJlbGVhc2VkLmNvbXBsZXRlKCksdGhpcy5lbmRlZC5jb21wbGV0ZSgpLHRoaXMuZW50ZXJlZC5jb21wbGV0ZSgpLHRoaXMuZXhpdGVkLmNv'@; put 'bXBsZXRlKCksdGhpcy5kcm9wcGVkLmNvbXBsZXRlKCksdGhpcy5fbW92ZUV2ZW50cy5jb21wbGV0ZSgpLHRoaXMuX2hhbmRsZXM9W10sdGhpcy5fZGlzYWJsZWRIYW5kbGVzLmNsZWFyKCksdGhpcy5fZHJvcENvbnRhaW5lcj12b2lkIDAsdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vi'@; put 'c2NyaWJlKCksdGhpcy5fcGFyZW50UG9zaXRpb25zLmNsZWFyKCksdGhpcy5fYm91bmRhcnlFbGVtZW50PXRoaXMuX3Jvb3RFbGVtZW50PXRoaXMuX293bmVyU1ZHRWxlbWVudD10aGlzLl9wbGFjZWhvbGRlclRlbXBsYXRlPXRoaXMuX3ByZXZpZXdUZW1wbGF0ZT10aGlzLl9tYXJrZXI9dGhp'@; put 'cy5fcGFyZW50RHJhZ1JlZj1udWxsfWlzRHJhZ2dpbmcoKXtyZXR1cm4gdGhpcy5faGFzU3RhcnRlZERyYWdnaW5nKCkmJnRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuaXNEcmFnZ2luZyh0aGlzKX1yZXNldCgpe3RoaXMuX3Jvb3RFbGVtZW50LnN0eWxlLnRyYW5zZm9ybT10aGlzLl9pbml0aWFs'@; put 'VHJhbnNmb3JtfHwiIix0aGlzLl9hY3RpdmVUcmFuc2Zvcm09e3g6MCx5OjB9LHRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm09e3g6MCx5OjB9fXJlc2V0VG9Cb3VuZGFyeSgpe2lmKHRoaXMuX2JvdW5kYXJ5RWxlbWVudCYmdGhpcy5fcm9vdEVsZW1lbnQmJmZ1bmN0aW9uIG80dChuLGUpe3JldHVy'@; put 'biBlLmxlZnQ8bi5sZWZ0fHxlLmxlZnQrZS53aWR0aD5uLnJpZ2h0fHxlLnRvcDxuLnRvcHx8ZS50b3ArZS5oZWlnaHQ+bi5ib3R0b219KHRoaXMuX2JvdW5kYXJ5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9yb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo'@; put 'KSkpe2NvbnN0IGU9dGhpcy5fYm91bmRhcnlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQ9dGhpcy5fcm9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bGV0IHI9MCxpPTA7dC5sZWZ0PGUubGVmdD9yPWUubGVmdC10LmxlZnQ6dC5yaWdodD5lLnJpZ2h0JiYocj1l'@; put 'LnJpZ2h0LXQucmlnaHQpLHQudG9wPGUudG9wP2k9ZS50b3AtdC50b3A6dC5ib3R0b20+ZS5ib3R0b20mJihpPWUuYm90dG9tLXQuYm90dG9tKTtsZXQgbD10aGlzLl9hY3RpdmVUcmFuc2Zvcm0ueCtyLHU9dGhpcy5fYWN0aXZlVHJhbnNmb3JtLnkraTt0aGlzLl9yb290RWxlbWVudC5zdHls'@; put 'ZS50cmFuc2Zvcm09eUQobCx1KSx0aGlzLl9hY3RpdmVUcmFuc2Zvcm09e3g6bCx5OnV9LHRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm09e3g6bCx5OnV9fX1kaXNhYmxlSGFuZGxlKGUpeyF0aGlzLl9kaXNhYmxlZEhhbmRsZXMuaGFzKGUpJiZ0aGlzLl9oYW5kbGVzLmluZGV4T2YoZSk+LTEmJih0'@; put 'aGlzLl9kaXNhYmxlZEhhbmRsZXMuYWRkKGUpLGFNKGUsITApKX1lbmFibGVIYW5kbGUoZSl7dGhpcy5fZGlzYWJsZWRIYW5kbGVzLmhhcyhlKSYmKHRoaXMuX2Rpc2FibGVkSGFuZGxlcy5kZWxldGUoZSksYU0oZSx0aGlzLmRpc2FibGVkKSl9d2l0aERpcmVjdGlvbihlKXtyZXR1cm4gdGhp'@; put 'cy5fZGlyZWN0aW9uPWUsdGhpc31fd2l0aERyb3BDb250YWluZXIoZSl7dGhpcy5fZHJvcENvbnRhaW5lcj1lfWdldEZyZWVEcmFnUG9zaXRpb24oKXtjb25zdCBlPXRoaXMuaXNEcmFnZ2luZygpP3RoaXMuX2FjdGl2ZVRyYW5zZm9ybTp0aGlzLl9wYXNzaXZlVHJhbnNmb3JtO3JldHVybnt4'@; put 'OmUueCx5OmUueX19c2V0RnJlZURyYWdQb3NpdGlvbihlKXtyZXR1cm4gdGhpcy5fYWN0aXZlVHJhbnNmb3JtPXt4OjAseTowfSx0aGlzLl9wYXNzaXZlVHJhbnNmb3JtLng9ZS54LHRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueT1lLnksdGhpcy5fZHJvcENvbnRhaW5lcnx8dGhpcy5fYXBwbHlS'@; put 'b290RWxlbWVudFRyYW5zZm9ybShlLngsZS55KSx0aGlzfXdpdGhQcmV2aWV3Q29udGFpbmVyKGUpe3JldHVybiB0aGlzLl9wcmV2aWV3Q29udGFpbmVyPWUsdGhpc31fc29ydEZyb21MYXN0UG9pbnRlclBvc2l0aW9uKCl7Y29uc3QgZT10aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb247'@; put 'ZSYmdGhpcy5fZHJvcENvbnRhaW5lciYmdGhpcy5fdXBkYXRlQWN0aXZlRHJvcENvbnRhaW5lcih0aGlzLl9nZXRDb25zdHJhaW5lZFBvaW50ZXJQb3NpdGlvbihlKSxlKX1fcmVtb3ZlTGlzdGVuZXJzKCl7dGhpcy5fcG9pbnRlck1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlz'@; put 'Ll9wb2ludGVyVXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jbGVhbnVwU2hhZG93Um9vdFNlbGVjdFN0YXJ0Py4oKSx0aGlzLl9jbGVhbnVwU2hhZG93Um9vdFNlbGVjdFN0YXJ0PXZvaWQgMH1fZGVzdHJv'@; put 'eVByZXZpZXcoKXt0aGlzLl9wcmV2aWV3Py5kZXN0cm95KCksdGhpcy5fcHJldmlldz1udWxsfV9kZXN0cm95UGxhY2Vob2xkZXIoKXt0aGlzLl9hbmNob3I/LnJlbW92ZSgpLHRoaXMuX3BsYWNlaG9sZGVyPy5yZW1vdmUoKSx0aGlzLl9wbGFjZWhvbGRlclJlZj8uZGVzdHJveSgpLHRoaXMu'@; put 'X3BsYWNlaG9sZGVyPXRoaXMuX2FuY2hvcj10aGlzLl9wbGFjZWhvbGRlclJlZj1udWxsfV9wb2ludGVyRG93bj1lPT57aWYodGhpcy5iZWZvcmVTdGFydGVkLm5leHQoKSx0aGlzLl9oYW5kbGVzLmxlbmd0aCl7Y29uc3QgdD10aGlzLl9nZXRUYXJnZXRIYW5kbGUoZSk7dCYmIXRoaXMuX2Rp'@; put 'c2FibGVkSGFuZGxlcy5oYXModCkmJiF0aGlzLmRpc2FibGVkJiZ0aGlzLl9pbml0aWFsaXplRHJhZ1NlcXVlbmNlKHQsZSl9ZWxzZSB0aGlzLmRpc2FibGVkfHx0aGlzLl9pbml0aWFsaXplRHJhZ1NlcXVlbmNlKHRoaXMuX3Jvb3RFbGVtZW50LGUpfTtfcG9pbnRlck1vdmU9ZT0+e2NvbnN0'@; put 'IHQ9dGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGUpO2lmKCF0aGlzLl9oYXNTdGFydGVkRHJhZ2dpbmcoKSl7aWYoTWF0aC5hYnModC54LXRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLngpK01hdGguYWJzKHQueS10aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS55KT49dGhpcy5f'@; put 'Y29uZmlnLmRyYWdTdGFydFRocmVzaG9sZCl7Y29uc3QgbD1EYXRlLm5vdygpPj10aGlzLl9kcmFnU3RhcnRUaW1lK3RoaXMuX2dldERyYWdTdGFydERlbGF5KGUpLHU9dGhpcy5fZHJvcENvbnRhaW5lcjtpZighbClyZXR1cm4gdm9pZCB0aGlzLl9lbmREcmFnU2VxdWVuY2UoZSk7KCF1fHwh'@; put 'dS5pc0RyYWdnaW5nKCkmJiF1LmlzUmVjZWl2aW5nKCkpJiYoZS5jYW5jZWxhYmxlJiZlLnByZXZlbnREZWZhdWx0KCksdGhpcy5faGFzU3RhcnRlZERyYWdnaW5nLnNldCghMCksdGhpcy5fbmdab25lLnJ1bigoKT0+dGhpcy5fc3RhcnREcmFnU2VxdWVuY2UoZSkpKX1yZXR1cm59ZS5jYW5j'@; put 'ZWxhYmxlJiZlLnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgcj10aGlzLl9nZXRDb25zdHJhaW5lZFBvaW50ZXJQb3NpdGlvbih0KTtpZih0aGlzLl9oYXNNb3ZlZD0hMCx0aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb249dCx0aGlzLl91cGRhdGVQb2ludGVyRGlyZWN0aW9uRGVsdGEociks'@; put 'dGhpcy5fZHJvcENvbnRhaW5lcil0aGlzLl91cGRhdGVBY3RpdmVEcm9wQ29udGFpbmVyKHIsdCk7ZWxzZXtjb25zdCBpPXRoaXMuY29uc3RyYWluUG9zaXRpb24/dGhpcy5faW5pdGlhbERvbVJlY3Q6dGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2Usbz10aGlzLl9hY3RpdmVUcmFuc2Zvcm07'@; put 'by54PXIueC1pLngrdGhpcy5fcGFzc2l2ZVRyYW5zZm9ybS54LG8ueT1yLnktaS55K3RoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueSx0aGlzLl9hcHBseVJvb3RFbGVtZW50VHJhbnNmb3JtKG8ueCxvLnkpfXRoaXMuX21vdmVFdmVudHMub2JzZXJ2ZXJzLmxlbmd0aCYmdGhpcy5fbmdab25lLnJ1'@; put 'bigoKT0+e3RoaXMuX21vdmVFdmVudHMubmV4dCh7c291cmNlOnRoaXMscG9pbnRlclBvc2l0aW9uOnIsZXZlbnQ6ZSxkaXN0YW5jZTp0aGlzLl9nZXREcmFnRGlzdGFuY2UociksZGVsdGE6dGhpcy5fcG9pbnRlckRpcmVjdGlvbkRlbHRhfSl9KX07X3BvaW50ZXJVcD1lPT57dGhpcy5fZW5k'@; put 'RHJhZ1NlcXVlbmNlKGUpfTtfZW5kRHJhZ1NlcXVlbmNlKGUpe2lmKHRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuaXNEcmFnZ2luZyh0aGlzKSYmKHRoaXMuX3JlbW92ZUxpc3RlbmVycygpLHRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuc3RvcERyYWdnaW5nKHRoaXMpLHRoaXMuX3RvZ2dsZU5hdGl2'@; put 'ZURyYWdJbnRlcmFjdGlvbnMoKSx0aGlzLl9oYW5kbGVzJiYodGhpcy5fcm9vdEVsZW1lbnQuc3R5bGUud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I9dGhpcy5fcm9vdEVsZW1lbnRUYXBIaWdobGlnaHQpLHRoaXMuX2hhc1N0YXJ0ZWREcmFnZ2luZygpKSlpZih0aGlzLnJlbGVhc2VkLm5leHQo'@; put 'e3NvdXJjZTp0aGlzLGV2ZW50OmV9KSx0aGlzLl9kcm9wQ29udGFpbmVyKXRoaXMuX2Ryb3BDb250YWluZXIuX3N0b3BTY3JvbGxpbmcoKSx0aGlzLl9hbmltYXRlUHJldmlld1RvUGxhY2Vob2xkZXIoKS50aGVuKCgpPT57dGhpcy5fY2xlYW51cERyYWdBcnRpZmFjdHMoZSksdGhpcy5fY2xl'@; put 'YW51cENhY2hlZERpbWVuc2lvbnMoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnN0b3BEcmFnZ2luZyh0aGlzKX0pO2Vsc2V7dGhpcy5fcGFzc2l2ZVRyYW5zZm9ybS54PXRoaXMuX2FjdGl2ZVRyYW5zZm9ybS54O2NvbnN0IHQ9dGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGUpO3Ro'@; put 'aXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueT10aGlzLl9hY3RpdmVUcmFuc2Zvcm0ueSx0aGlzLl9uZ1pvbmUucnVuKCgpPT57dGhpcy5lbmRlZC5uZXh0KHtzb3VyY2U6dGhpcyxkaXN0YW5jZTp0aGlzLl9nZXREcmFnRGlzdGFuY2UodCksZHJvcFBvaW50OnQsZXZlbnQ6ZX0pfSksdGhpcy5fY2xl'@; put 'YW51cENhY2hlZERpbWVuc2lvbnMoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnN0b3BEcmFnZ2luZyh0aGlzKX19X3N0YXJ0RHJhZ1NlcXVlbmNlKGUpe2JEKGUpJiYodGhpcy5fbGFzdFRvdWNoRXZlbnRUaW1lPURhdGUubm93KCkpLHRoaXMuX3RvZ2dsZU5hdGl2ZURyYWdJbnRlcmFjdGlv'@; put 'bnMoKTtjb25zdCB0PXRoaXMuX2dldFNoYWRvd1Jvb3QoKSxyPXRoaXMuX2Ryb3BDb250YWluZXI7aWYodCYmdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fY2xlYW51cFNoYWRvd1Jvb3RTZWxlY3RTdGFydD10aGlzLl9yZW5kZXJlci5saXN0ZW4odCwic2VsZWN0'@; put 'c3RhcnQiLGY0dCx1NHQpfSkscil7Y29uc3QgaT10aGlzLl9yb290RWxlbWVudCxvPWkucGFyZW50Tm9kZSxhPXRoaXMuX3BsYWNlaG9sZGVyPXRoaXMuX2NyZWF0ZVBsYWNlaG9sZGVyRWxlbWVudCgpLGw9dGhpcy5fbWFya2VyPXRoaXMuX21hcmtlcnx8dGhpcy5fZG9jdW1lbnQuY3JlYXRl'@; put 'Q29tbWVudCgiIik7by5pbnNlcnRCZWZvcmUobCxpKSx0aGlzLl9pbml0aWFsVHJhbnNmb3JtPWkuc3R5bGUudHJhbnNmb3JtfHwiIix0aGlzLl9wcmV2aWV3PW5ldyBsNHQodGhpcy5fZG9jdW1lbnQsdGhpcy5fcm9vdEVsZW1lbnQsdGhpcy5fZGlyZWN0aW9uLHRoaXMuX2luaXRpYWxEb21S'@; put 'ZWN0LHRoaXMuX3ByZXZpZXdUZW1wbGF0ZXx8bnVsbCx0aGlzLnByZXZpZXdDbGFzc3x8bnVsbCx0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZSx0aGlzLl9pbml0aWFsVHJhbnNmb3JtLHRoaXMuX2NvbmZpZy56SW5kZXh8fDFlMyx0aGlzLl9yZW5kZXJlciksdGhpcy5fcHJldmlldy5hdHRh'@; put 'Y2godGhpcy5fZ2V0UHJldmlld0luc2VydGlvblBvaW50KG8sdCkpLGFFZShpLCExLGhFZSksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvLnJlcGxhY2VDaGlsZChhLGkpKSx0aGlzLnN0YXJ0ZWQubmV4dCh7c291cmNlOnRoaXMsZXZlbnQ6ZX0pLHIuc3RhcnQoKSx0aGlzLl9p'@; put 'bml0aWFsQ29udGFpbmVyPXIsdGhpcy5faW5pdGlhbEluZGV4PXIuZ2V0SXRlbUluZGV4KHRoaXMpfWVsc2UgdGhpcy5zdGFydGVkLm5leHQoe3NvdXJjZTp0aGlzLGV2ZW50OmV9KSx0aGlzLl9pbml0aWFsQ29udGFpbmVyPXRoaXMuX2luaXRpYWxJbmRleD12b2lkIDA7dGhpcy5fcGFyZW50'@; put 'UG9zaXRpb25zLmNhY2hlKHI/ci5nZXRTY3JvbGxhYmxlUGFyZW50cygpOltdKX1faW5pdGlhbGl6ZURyYWdTZXF1ZW5jZShlLHQpe3RoaXMuX3BhcmVudERyYWdSZWYmJnQuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3Qgcj10aGlzLmlzRHJhZ2dpbmcoKSxpPWJEKHQpLG89IWkmJjAhPT10LmJ1'@; put 'dHRvbixhPXRoaXMuX3Jvb3RFbGVtZW50LGw9UnoodCksdT0haSYmdGhpcy5fbGFzdFRvdWNoRXZlbnRUaW1lJiZ0aGlzLl9sYXN0VG91Y2hFdmVudFRpbWUrODAwPkRhdGUubm93KCksZz1pP2Z1bmN0aW9uIGttdChuKXtjb25zdCBlPW4udG91Y2hlcyYmbi50b3VjaGVzWzBdfHxuLmNoYW5n'@; put 'ZWRUb3VjaGVzJiZuLmNoYW5nZWRUb3VjaGVzWzBdO3JldHVybiEoIWV8fC0xIT09ZS5pZGVudGlmaWVyfHxudWxsIT1lLnJhZGl1c1gmJjEhPT1lLnJhZGl1c1h8fG51bGwhPWUucmFkaXVzWSYmMSE9PWUucmFkaXVzWSl9KHQpOmZ1bmN0aW9uIEFtdChuKXtyZXR1cm4gMD09PW4uYnV0dG9u'@; put 'c3x8MD09PW4uZGV0YWlsfSh0KTtpZihsJiZsLmRyYWdnYWJsZSYmIm1vdXNlZG93biI9PT10LnR5cGUmJnQucHJldmVudERlZmF1bHQoKSxyfHxvfHx1fHxnKXJldHVybjtpZih0aGlzLl9oYW5kbGVzLmxlbmd0aCl7Y29uc3QgWj1hLnN0eWxlO3RoaXMuX3Jvb3RFbGVtZW50VGFwSGlnaGxp'@; put 'Z2h0PVoud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3J8fCIiLFoud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I9InRyYW5zcGFyZW50In10aGlzLl9oYXNNb3ZlZD0hMSx0aGlzLl9oYXNTdGFydGVkRHJhZ2dpbmcuc2V0KHRoaXMuX2hhc01vdmVkKSx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlz'@; put 'Ll9pbml0aWFsRG9tUmVjdD10aGlzLl9yb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9wb2ludGVyTW92ZVN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnBvaW50ZXJNb3ZlLnN1YnNjcmliZSh0aGlzLl9wb2ludGVyTW92ZSksdGhpcy5fcG9pbnRl'@; put 'clVwU3Vic2NyaXB0aW9uPXRoaXMuX2RyYWdEcm9wUmVnaXN0cnkucG9pbnRlclVwLnN1YnNjcmliZSh0aGlzLl9wb2ludGVyVXApLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnNjcm9sbGVkKHRoaXMuX2dldFNoYWRvd1Jvb3QoKSkuc3Vic2NyaWJl'@; put 'KFo9PnRoaXMuX3VwZGF0ZU9uU2Nyb2xsKFopKSx0aGlzLl9ib3VuZGFyeUVsZW1lbnQmJih0aGlzLl9ib3VuZGFyeVJlY3Q9eG9lKHRoaXMuX2JvdW5kYXJ5RWxlbWVudCkpO2NvbnN0IEU9dGhpcy5fcHJldmlld1RlbXBsYXRlO3RoaXMuX3BpY2t1cFBvc2l0aW9uSW5FbGVtZW50PUUmJkUu'@; put 'dGVtcGxhdGUmJiFFLm1hdGNoU2l6ZT97eDowLHk6MH06dGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uSW5FbGVtZW50KHRoaXMuX2luaXRpYWxEb21SZWN0LGUsdCk7Y29uc3QgTz10aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZT10aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb249dGhpcy5f'@; put 'Z2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKHQpO3RoaXMuX3BvaW50ZXJEaXJlY3Rpb25EZWx0YT17eDowLHk6MH0sdGhpcy5fcG9pbnRlclBvc2l0aW9uQXRMYXN0RGlyZWN0aW9uQ2hhbmdlPXt4Ok8ueCx5Ok8ueX0sdGhpcy5fZHJhZ1N0YXJ0VGltZT1EYXRlLm5vdygpLHRoaXMuX2RyYWdE'@; put 'cm9wUmVnaXN0cnkuc3RhcnREcmFnZ2luZyh0aGlzLHQpfV9jbGVhbnVwRHJhZ0FydGlmYWN0cyhlKXthRWUodGhpcy5fcm9vdEVsZW1lbnQsITAsaEVlKSx0aGlzLl9tYXJrZXIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodGhpcy5fcm9vdEVsZW1lbnQsdGhpcy5fbWFya2VyKSx0aGlzLl9k'@; put 'ZXN0cm95UHJldmlldygpLHRoaXMuX2Rlc3Ryb3lQbGFjZWhvbGRlcigpLHRoaXMuX2luaXRpYWxEb21SZWN0PXRoaXMuX2JvdW5kYXJ5UmVjdD10aGlzLl9wcmV2aWV3UmVjdD10aGlzLl9pbml0aWFsVHJhbnNmb3JtPXZvaWQgMCx0aGlzLl9uZ1pvbmUucnVuKCgpPT57Y29uc3QgdD10aGlz'@; put 'Ll9kcm9wQ29udGFpbmVyLHI9dC5nZXRJdGVtSW5kZXgodGhpcyksaT10aGlzLl9nZXRQb2ludGVyUG9zaXRpb25PblBhZ2UoZSksbz10aGlzLl9nZXREcmFnRGlzdGFuY2UoaSksYT10Ll9pc092ZXJDb250YWluZXIoaS54LGkueSk7dGhpcy5lbmRlZC5uZXh0KHtzb3VyY2U6dGhpcyxkaXN0'@; put 'YW5jZTpvLGRyb3BQb2ludDppLGV2ZW50OmV9KSx0aGlzLmRyb3BwZWQubmV4dCh7aXRlbTp0aGlzLGN1cnJlbnRJbmRleDpyLHByZXZpb3VzSW5kZXg6dGhpcy5faW5pdGlhbEluZGV4LGNvbnRhaW5lcjp0LHByZXZpb3VzQ29udGFpbmVyOnRoaXMuX2luaXRpYWxDb250YWluZXIsaXNQb2lu'@; put 'dGVyT3ZlckNvbnRhaW5lcjphLGRpc3RhbmNlOm8sZHJvcFBvaW50OmksZXZlbnQ6ZX0pLHQuZHJvcCh0aGlzLHIsdGhpcy5faW5pdGlhbEluZGV4LHRoaXMuX2luaXRpYWxDb250YWluZXIsYSxvLGksZSksdGhpcy5fZHJvcENvbnRhaW5lcj10aGlzLl9pbml0aWFsQ29udGFpbmVyfSl9X3Vw'@; put 'ZGF0ZUFjdGl2ZURyb3BDb250YWluZXIoe3g6ZSx5OnR9LHt4OnIseTppfSl7bGV0IG89dGhpcy5faW5pdGlhbENvbnRhaW5lci5fZ2V0U2libGluZ0NvbnRhaW5lckZyb21Qb3NpdGlvbih0aGlzLGUsdCk7IW8mJnRoaXMuX2Ryb3BDb250YWluZXIhPT10aGlzLl9pbml0aWFsQ29udGFpbmVy'@; put 'JiZ0aGlzLl9pbml0aWFsQ29udGFpbmVyLl9pc092ZXJDb250YWluZXIoZSx0KSYmKG89dGhpcy5faW5pdGlhbENvbnRhaW5lciksbyYmbyE9PXRoaXMuX2Ryb3BDb250YWluZXImJnRoaXMuX25nWm9uZS5ydW4oKCk9Pntjb25zdCBhPXRoaXMuX2Ryb3BDb250YWluZXIuZ2V0SXRlbUluZGV4'@; put 'KHRoaXMpLGw9dGhpcy5fZHJvcENvbnRhaW5lci5nZXRJdGVtQXRJbmRleChhKzEpPy5nZXRWaXNpYmxlRWxlbWVudCgpfHxudWxsO3RoaXMuZXhpdGVkLm5leHQoe2l0ZW06dGhpcyxjb250YWluZXI6dGhpcy5fZHJvcENvbnRhaW5lcn0pLHRoaXMuX2Ryb3BDb250YWluZXIuZXhpdCh0aGlz'@; put 'KSx0aGlzLl9jb25kaXRpb25hbGx5SW5zZXJ0QW5jaG9yKG8sdGhpcy5fZHJvcENvbnRhaW5lcixsKSx0aGlzLl9kcm9wQ29udGFpbmVyPW8sdGhpcy5fZHJvcENvbnRhaW5lci5lbnRlcih0aGlzLGUsdCxvPT09dGhpcy5faW5pdGlhbENvbnRhaW5lciYmby5zb3J0aW5nRGlzYWJsZWQ/dGhp'@; put 'cy5faW5pdGlhbEluZGV4OnZvaWQgMCksdGhpcy5lbnRlcmVkLm5leHQoe2l0ZW06dGhpcyxjb250YWluZXI6byxjdXJyZW50SW5kZXg6by5nZXRJdGVtSW5kZXgodGhpcyl9KX0pLHRoaXMuaXNEcmFnZ2luZygpJiYodGhpcy5fZHJvcENvbnRhaW5lci5fc3RhcnRTY3JvbGxpbmdJZk5lY2Vz'@; put 'c2FyeShyLGkpLHRoaXMuX2Ryb3BDb250YWluZXIuX3NvcnRJdGVtKHRoaXMsZSx0LHRoaXMuX3BvaW50ZXJEaXJlY3Rpb25EZWx0YSksdGhpcy5jb25zdHJhaW5Qb3NpdGlvbj90aGlzLl9hcHBseVByZXZpZXdUcmFuc2Zvcm0oZSx0KTp0aGlzLl9hcHBseVByZXZpZXdUcmFuc2Zvcm0oZS10'@; put 'aGlzLl9waWNrdXBQb3NpdGlvbkluRWxlbWVudC54LHQtdGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQueSkpfV9hbmltYXRlUHJldmlld1RvUGxhY2Vob2xkZXIoKXtpZighdGhpcy5faGFzTW92ZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGU9dGhpcy5fcGxhY2Vob2xk'@; put 'ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5fcHJldmlldy5hZGRDbGFzcygiY2RrLWRyYWctYW5pbWF0aW5nIiksdGhpcy5fYXBwbHlQcmV2aWV3VHJhbnNmb3JtKGUubGVmdCxlLnRvcCk7Y29uc3QgdD10aGlzLl9wcmV2aWV3LmdldFRyYW5zaXRpb25EdXJhdGlvbigpO3JldHVy'@; put 'biAwPT09dD9Qcm9taXNlLnJlc29sdmUoKTp0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pm5ldyBQcm9taXNlKHI9Pntjb25zdCBpPWw9PnsoIWx8fHRoaXMuX3ByZXZpZXcmJlJ6KGwpPT09dGhpcy5fcHJldmlldy5lbGVtZW50JiYidHJhbnNmb3JtIj09PWwucHJvcGVydHlO'@; put 'YW1lKSYmKGEoKSxyKCksY2xlYXJUaW1lb3V0KG8pKX0sbz1zZXRUaW1lb3V0KGksMS41KnQpLGE9dGhpcy5fcHJldmlldy5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixpKX0pKX1fY3JlYXRlUGxhY2Vob2xkZXJFbGVtZW50KCl7Y29uc3QgZT10aGlzLl9wbGFjZWhvbGRlclRl'@; put 'bXBsYXRlLHQ9ZT9lLnRlbXBsYXRlOm51bGw7bGV0IHI7cmV0dXJuIHQ/KHRoaXMuX3BsYWNlaG9sZGVyUmVmPWUudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodCxlLmNvbnRleHQpLHRoaXMuX3BsYWNlaG9sZGVyUmVmLmRldGVjdENoYW5nZXMoKSxyPW9FZSh0aGlzLl9wbGFj'@; put 'ZWhvbGRlclJlZix0aGlzLl9kb2N1bWVudCkpOnI9VG9lKHRoaXMuX3Jvb3RFbGVtZW50KSxyLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLHIuY2xhc3NMaXN0LmFkZChkRWUpLHJ9X2dldFBvaW50ZXJQb3NpdGlvbkluRWxlbWVudChlLHQscil7Y29uc3QgaT10PT09dGhpcy5fcm9vdEVs'@; put 'ZW1lbnQ/bnVsbDp0LG89aT9pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOmUsYT1iRChyKT9yLnRhcmdldFRvdWNoZXNbMF06cixsPXRoaXMuX2dldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtyZXR1cm57eDpvLmxlZnQtZS5sZWZ0KyhhLnBhZ2VYLW8ubGVmdC1sLmxlZnQpLHk6by50b3At'@; put 'ZS50b3ArKGEucGFnZVktby50b3AtbC50b3ApfX1fZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLHI9YkQoZSk/ZS50b3VjaGVzWzBdfHxlLmNoYW5nZWRUb3VjaGVzWzBdfHx7cGFnZVg6MCxwYWdlWTowfTplLGk9'@; put 'ci5wYWdlWC10LmxlZnQsbz1yLnBhZ2VZLXQudG9wO2lmKHRoaXMuX293bmVyU1ZHRWxlbWVudCl7Y29uc3QgYT10aGlzLl9vd25lclNWR0VsZW1lbnQuZ2V0U2NyZWVuQ1RNKCk7aWYoYSl7Y29uc3QgbD10aGlzLl9vd25lclNWR0VsZW1lbnQuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gbC54'@; put 'PWksbC55PW8sbC5tYXRyaXhUcmFuc2Zvcm0oYS5pbnZlcnNlKCkpfX1yZXR1cm57eDppLHk6b319X2dldENvbnN0cmFpbmVkUG9pbnRlclBvc2l0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fZHJvcENvbnRhaW5lcj90aGlzLl9kcm9wQ29udGFpbmVyLmxvY2tBeGlzOm51bGw7bGV0e3g6cix5Oml9'@; put 'PXRoaXMuY29uc3RyYWluUG9zaXRpb24/dGhpcy5jb25zdHJhaW5Qb3NpdGlvbihlLHRoaXMsdGhpcy5faW5pdGlhbERvbVJlY3QsdGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQpOmU7aWYoIngiPT09dGhpcy5sb2NrQXhpc3x8IngiPT09dD9pPXRoaXMuX3BpY2t1cFBvc2l0aW9uT25Q'@; put 'YWdlLnktKHRoaXMuY29uc3RyYWluUG9zaXRpb24/dGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQueTowKTooInkiPT09dGhpcy5sb2NrQXhpc3x8InkiPT09dCkmJihyPXRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLngtKHRoaXMuY29uc3RyYWluUG9zaXRpb24/dGhpcy5fcGlja3Vw'@; put 'UG9zaXRpb25JbkVsZW1lbnQueDowKSksdGhpcy5fYm91bmRhcnlSZWN0KXtjb25zdHt4Om8seTphfT10aGlzLmNvbnN0cmFpblBvc2l0aW9uP3t4OjAseTowfTp0aGlzLl9waWNrdXBQb3NpdGlvbkluRWxlbWVudCxsPXRoaXMuX2JvdW5kYXJ5UmVjdCx7d2lkdGg6dSxoZWlnaHQ6Z309dGhp'@; put 'cy5fZ2V0UHJldmlld1JlY3QoKSxFPWwudG9wK2EsTz1sLmJvdHRvbS0oZy1hKTtyPWZFZShyLGwubGVmdCtvLGwucmlnaHQtKHUtbykpLGk9ZkVlKGksRSxPKX1yZXR1cm57eDpyLHk6aX19X3VwZGF0ZVBvaW50ZXJEaXJlY3Rpb25EZWx0YShlKXtjb25zdHt4OnQseTpyfT1lLGk9dGhpcy5f'@; put 'cG9pbnRlckRpcmVjdGlvbkRlbHRhLG89dGhpcy5fcG9pbnRlclBvc2l0aW9uQXRMYXN0RGlyZWN0aW9uQ2hhbmdlLGE9TWF0aC5hYnModC1vLngpLGw9TWF0aC5hYnMoci1vLnkpO3JldHVybiBhPnRoaXMuX2NvbmZpZy5wb2ludGVyRGlyZWN0aW9uQ2hhbmdlVGhyZXNob2xkJiYoaS54PXQ+'@; put 'by54PzE6LTEsby54PXQpLGw+dGhpcy5fY29uZmlnLnBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQmJihpLnk9cj5vLnk/MTotMSxvLnk9ciksaX1fdG9nZ2xlTmF0aXZlRHJhZ0ludGVyYWN0aW9ucygpe2lmKCF0aGlzLl9yb290RWxlbWVudHx8IXRoaXMuX2hhbmRsZXMpcmV0dXJu'@; put 'O2NvbnN0IGU9dGhpcy5faGFuZGxlcy5sZW5ndGg+MHx8IXRoaXMuaXNEcmFnZ2luZygpO2UhPT10aGlzLl9uYXRpdmVJbnRlcmFjdGlvbnNFbmFibGVkJiYodGhpcy5fbmF0aXZlSW50ZXJhY3Rpb25zRW5hYmxlZD1lLGFNKHRoaXMuX3Jvb3RFbGVtZW50LGUpKX1fcmVtb3ZlUm9vdEVsZW1l'@; put 'bnRMaXN0ZW5lcnMoKXt0aGlzLl9yb290RWxlbWVudENsZWFudXBzPy5mb3JFYWNoKGU9PmUoKSksdGhpcy5fcm9vdEVsZW1lbnRDbGVhbnVwcz12b2lkIDB9X2FwcGx5Um9vdEVsZW1lbnRUcmFuc2Zvcm0oZSx0KXtjb25zdCByPTEvdGhpcy5zY2FsZSxpPXlEKGUqcix0KnIpLG89dGhpcy5f'@; put 'cm9vdEVsZW1lbnQuc3R5bGU7bnVsbD09dGhpcy5faW5pdGlhbFRyYW5zZm9ybSYmKHRoaXMuX2luaXRpYWxUcmFuc2Zvcm09by50cmFuc2Zvcm0mJiJub25lIiE9by50cmFuc2Zvcm0/by50cmFuc2Zvcm06IiIpLG8udHJhbnNmb3JtPUh6KGksdGhpcy5faW5pdGlhbFRyYW5zZm9ybSl9X2Fw'@; put 'cGx5UHJldmlld1RyYW5zZm9ybShlLHQpe2NvbnN0IHI9dGhpcy5fcHJldmlld1RlbXBsYXRlPy50ZW1wbGF0ZT92b2lkIDA6dGhpcy5faW5pdGlhbFRyYW5zZm9ybSxpPXlEKGUsdCk7dGhpcy5fcHJldmlldy5zZXRUcmFuc2Zvcm0oSHooaSxyKSl9X2dldERyYWdEaXN0YW5jZShlKXtjb25z'@; put 'dCB0PXRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlO3JldHVybiB0P3t4OmUueC10LngseTplLnktdC55fTp7eDowLHk6MH19X2NsZWFudXBDYWNoZWREaW1lbnNpb25zKCl7dGhpcy5fYm91bmRhcnlSZWN0PXRoaXMuX3ByZXZpZXdSZWN0PXZvaWQgMCx0aGlzLl9wYXJlbnRQb3NpdGlvbnMu'@; put 'Y2xlYXIoKX1fY29udGFpbkluc2lkZUJvdW5kYXJ5T25SZXNpemUoKXtsZXR7eDplLHk6dH09dGhpcy5fcGFzc2l2ZVRyYW5zZm9ybTtpZigwPT09ZSYmMD09PXR8fHRoaXMuaXNEcmFnZ2luZygpfHwhdGhpcy5fYm91bmRhcnlFbGVtZW50KXJldHVybjtjb25zdCByPXRoaXMuX3Jvb3RFbGVt'@; put 'ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dGhpcy5fYm91bmRhcnlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKDA9PT1pLndpZHRoJiYwPT09aS5oZWlnaHR8fDA9PT1yLndpZHRoJiYwPT09ci5oZWlnaHQpcmV0dXJuO2NvbnN0IG89aS5sZWZ0LXIubGVmdCxhPXIu'@; put 'cmlnaHQtaS5yaWdodCxsPWkudG9wLXIudG9wLHU9ci5ib3R0b20taS5ib3R0b207aS53aWR0aD5yLndpZHRoPyhvPjAmJihlKz1vKSxhPjAmJihlLT1hKSk6ZT0wLGkuaGVpZ2h0PnIuaGVpZ2h0PyhsPjAmJih0Kz1sKSx1PjAmJih0LT11KSk6dD0wLChlIT09dGhpcy5fcGFzc2l2ZVRyYW5z'@; put 'Zm9ybS54fHx0IT09dGhpcy5fcGFzc2l2ZVRyYW5zZm9ybS55KSYmdGhpcy5zZXRGcmVlRHJhZ1Bvc2l0aW9uKHt5OnQseDplfSl9X2dldERyYWdTdGFydERlbGF5KGUpe2NvbnN0IHQ9dGhpcy5kcmFnU3RhcnREZWxheTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/dDpiRChlKT90LnRvdWNo'@; put 'OnQ/dC5tb3VzZTowfV91cGRhdGVPblNjcm9sbChlKXtjb25zdCB0PXRoaXMuX3BhcmVudFBvc2l0aW9ucy5oYW5kbGVTY3JvbGwoZSk7aWYodCl7Y29uc3Qgcj1SeihlKTt0aGlzLl9ib3VuZGFyeVJlY3QmJnIhPT10aGlzLl9ib3VuZGFyeUVsZW1lbnQmJnIuY29udGFpbnModGhpcy5fYm91'@; put 'bmRhcnlFbGVtZW50KSYmX0QodGhpcy5fYm91bmRhcnlSZWN0LHQudG9wLHQubGVmdCksdGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2UueCs9dC5sZWZ0LHRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLnkrPXQudG9wLHRoaXMuX2Ryb3BDb250YWluZXJ8fCh0aGlzLl9hY3RpdmVUcmFuc2Zv'@; put 'cm0ueC09dC5sZWZ0LHRoaXMuX2FjdGl2ZVRyYW5zZm9ybS55LT10LnRvcCx0aGlzLl9hcHBseVJvb3RFbGVtZW50VHJhbnNmb3JtKHRoaXMuX2FjdGl2ZVRyYW5zZm9ybS54LHRoaXMuX2FjdGl2ZVRyYW5zZm9ybS55KSl9fV9nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHRo'@; put 'aXMuX3BhcmVudFBvc2l0aW9ucy5wb3NpdGlvbnMuZ2V0KHRoaXMuX2RvY3VtZW50KT8uc2Nyb2xsUG9zaXRpb258fHRoaXMuX3BhcmVudFBvc2l0aW9ucy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCl9X2dldFNoYWRvd1Jvb3QoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fY2FjaGVkU2hh'@; put 'ZG93Um9vdCYmKHRoaXMuX2NhY2hlZFNoYWRvd1Jvb3Q9Ym9lKHRoaXMuX3Jvb3RFbGVtZW50KSksdGhpcy5fY2FjaGVkU2hhZG93Um9vdH1fZ2V0UHJldmlld0luc2VydGlvblBvaW50KGUsdCl7Y29uc3Qgcj10aGlzLl9wcmV2aWV3Q29udGFpbmVyfHwiZ2xvYmFsIjtpZigicGFyZW50Ij09'@; put 'PXIpcmV0dXJuIGU7aWYoImdsb2JhbCI9PT1yKXtjb25zdCBpPXRoaXMuX2RvY3VtZW50O3JldHVybiB0fHxpLmZ1bGxzY3JlZW5FbGVtZW50fHxpLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHxpLm1vekZ1bGxTY3JlZW5FbGVtZW50fHxpLm1zRnVsbHNjcmVlbkVsZW1lbnR8fGkuYm9keX1y'@; put 'ZXR1cm4gbjcocil9X2dldFByZXZpZXdSZWN0KCl7cmV0dXJuKCF0aGlzLl9wcmV2aWV3UmVjdHx8IXRoaXMuX3ByZXZpZXdSZWN0LndpZHRoJiYhdGhpcy5fcHJldmlld1JlY3QuaGVpZ2h0KSYmKHRoaXMuX3ByZXZpZXdSZWN0PXRoaXMuX3ByZXZpZXc/dGhpcy5fcHJldmlldy5nZXRCb3Vu'@; put 'ZGluZ0NsaWVudFJlY3QoKTp0aGlzLl9pbml0aWFsRG9tUmVjdCksdGhpcy5fcHJldmlld1JlY3R9X25hdGl2ZURyYWdTdGFydD1lPT57aWYodGhpcy5faGFuZGxlcy5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fZ2V0VGFyZ2V0SGFuZGxlKGUpO3QmJiF0aGlzLl9kaXNhYmxlZEhhbmRsZXMuaGFz'@; put 'KHQpJiYhdGhpcy5kaXNhYmxlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfWVsc2UgdGhpcy5kaXNhYmxlZHx8ZS5wcmV2ZW50RGVmYXVsdCgpfTtfZ2V0VGFyZ2V0SGFuZGxlKGUpe3JldHVybiB0aGlzLl9oYW5kbGVzLmZpbmQodD0+ZS50YXJnZXQmJihlLnRhcmdldD09PXR8fHQuY29udGFpbnMo'@; put 'ZS50YXJnZXQpKSl9X2NvbmRpdGlvbmFsbHlJbnNlcnRBbmNob3IoZSx0LHIpe2lmKGU9PT10aGlzLl9pbml0aWFsQ29udGFpbmVyKXRoaXMuX2FuY2hvcj8ucmVtb3ZlKCksdGhpcy5fYW5jaG9yPW51bGw7ZWxzZSBpZih0PT09dGhpcy5faW5pdGlhbENvbnRhaW5lciYmdC5oYXNBbmNob3Ip'@; put 'e2NvbnN0IGk9dGhpcy5fYW5jaG9yPz89VG9lKHRoaXMuX3BsYWNlaG9sZGVyKTtpLmNsYXNzTGlzdC5yZW1vdmUoZEVlKSxpLmNsYXNzTGlzdC5hZGQoImNkay1kcmFnLWFuY2hvciIpLGkuc3R5bGUudHJhbnNmb3JtPSIiLHI/ci5iZWZvcmUoaSk6bjcodC5lbGVtZW50KS5hcHBlbmRDaGls'@; put 'ZChpKX19fWZ1bmN0aW9uIGZFZShuLGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxuKSl9ZnVuY3Rpb24gYkQobil7cmV0dXJuInQiPT09bi50eXBlWzBdfWZ1bmN0aW9uIGY0dChuKXtuLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gSW9lKG4sZSx0KXtjb25zdCByPXdEKGUs'@; put 'bi5sZW5ndGgtMSksaT13RCh0LG4ubGVuZ3RoLTEpO2lmKHI9PT1pKXJldHVybjtjb25zdCBvPW5bcl0sYT1pPHI/LTE6MTtmb3IobGV0IGw9cjtsIT09aTtsKz1hKW5bbF09bltsK2FdO25baV09b31mdW5jdGlvbiB3RChuLGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKGUsbikpfWNs'@; put 'YXNzIHBFZXtfZHJhZ0Ryb3BSZWdpc3RyeTtfZWxlbWVudDtfc29ydFByZWRpY2F0ZTtfaXRlbVBvc2l0aW9ucz1bXTtfYWN0aXZlRHJhZ2dhYmxlcztvcmllbnRhdGlvbj0idmVydGljYWwiO2RpcmVjdGlvbjtjb25zdHJ1Y3RvcihlKXt0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5PWV9X3ByZXZp'@; put 'b3VzU3dhcD17ZHJhZzpudWxsLGRlbHRhOjAsb3ZlcmxhcHM6ITF9O3N0YXJ0KGUpe3RoaXMud2l0aEl0ZW1zKGUpfXNvcnQoZSx0LHIsaSl7Y29uc3Qgbz10aGlzLl9pdGVtUG9zaXRpb25zLGE9dGhpcy5fZ2V0SXRlbUluZGV4RnJvbVBvaW50ZXJQb3NpdGlvbihlLHQscixpKTtpZigtMT09'@; put 'PWEmJm8ubGVuZ3RoPjApcmV0dXJuIG51bGw7Y29uc3QgbD0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uLHU9by5maW5kSW5kZXgoSGU9PkhlLmRyYWc9PT1lKSxnPW9bYV0sTz1nLmNsaWVudFJlY3QsWj11PmE/MTotMSxlZT10aGlzLl9nZXRJdGVtT2Zmc2V0UHgob1t1XS5jbGll'@; put 'bnRSZWN0LE8sWiksdmU9dGhpcy5fZ2V0U2libGluZ09mZnNldFB4KHUsbyxaKSxNZT1vLnNsaWNlKCk7cmV0dXJuIElvZShvLHUsYSksby5mb3JFYWNoKChIZSxXZSk9PntpZihNZVtXZV09PT1IZSlyZXR1cm47Y29uc3QgYXQ9SGUuZHJhZz09PWUsQ3Q9YXQ/ZWU6dmUsQXQ9YXQ/ZS5nZXRQ'@; put 'bGFjZWhvbGRlckVsZW1lbnQoKTpIZS5kcmFnLmdldFJvb3RFbGVtZW50KCk7SGUub2Zmc2V0Kz1DdDtjb25zdCBLdD1NYXRoLnJvdW5kKEhlLm9mZnNldCooMS9IZS5kcmFnLnNjYWxlKSk7bD8oQXQuc3R5bGUudHJhbnNmb3JtPUh6KGB0cmFuc2xhdGUzZCgke0t0fXB4LCAwLCAwKWAsSGUu'@; put 'aW5pdGlhbFRyYW5zZm9ybSksX0QoSGUuY2xpZW50UmVjdCwwLEN0KSk6KEF0LnN0eWxlLnRyYW5zZm9ybT1IeihgdHJhbnNsYXRlM2QoMCwgJHtLdH1weCwgMClgLEhlLmluaXRpYWxUcmFuc2Zvcm0pLF9EKEhlLmNsaWVudFJlY3QsQ3QsMCkpfSksdGhpcy5fcHJldmlvdXNTd2FwLm92ZXJs'@; put 'YXBzPUFvZShPLHQsciksdGhpcy5fcHJldmlvdXNTd2FwLmRyYWc9Zy5kcmFnLHRoaXMuX3ByZXZpb3VzU3dhcC5kZWx0YT1sP2kueDppLnkse3ByZXZpb3VzSW5kZXg6dSxjdXJyZW50SW5kZXg6YX19ZW50ZXIoZSx0LHIsaSl7Y29uc3Qgbz1udWxsPT1pfHxpPDA/dGhpcy5fZ2V0SXRlbUlu'@; put 'ZGV4RnJvbVBvaW50ZXJQb3NpdGlvbihlLHQscik6aSxhPXRoaXMuX2FjdGl2ZURyYWdnYWJsZXMsbD1hLmluZGV4T2YoZSksdT1lLmdldFBsYWNlaG9sZGVyRWxlbWVudCgpO2xldCBnPWFbb107aWYoZz09PWUmJihnPWFbbysxXSksIWcmJihudWxsPT1vfHwtMT09PW98fG88YS5sZW5ndGgt'@; put 'MSkmJnRoaXMuX3Nob3VsZEVudGVyQXNGaXJzdENoaWxkKHQscikmJihnPWFbMF0pLGw+LTEmJmEuc3BsaWNlKGwsMSksZyYmIXRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuaXNEcmFnZ2luZyhnKSl7Y29uc3QgRT1nLmdldFJvb3RFbGVtZW50KCk7RS5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9y'@; put 'ZSh1LEUpLGEuc3BsaWNlKG8sMCxlKX1lbHNlIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodSksYS5wdXNoKGUpO3Uuc3R5bGUudHJhbnNmb3JtPSIiLHRoaXMuX2NhY2hlSXRlbVBvc2l0aW9ucygpfXdpdGhJdGVtcyhlKXt0aGlzLl9hY3RpdmVEcmFnZ2FibGVzPWUuc2xpY2UoKSx0aGlz'@; put 'Ll9jYWNoZUl0ZW1Qb3NpdGlvbnMoKX13aXRoU29ydFByZWRpY2F0ZShlKXt0aGlzLl9zb3J0UHJlZGljYXRlPWV9cmVzZXQoKXt0aGlzLl9hY3RpdmVEcmFnZ2FibGVzPy5mb3JFYWNoKGU9Pntjb25zdCB0PWUuZ2V0Um9vdEVsZW1lbnQoKTtpZih0KXtjb25zdCByPXRoaXMuX2l0ZW1Qb3Np'@; put 'dGlvbnMuZmluZChpPT5pLmRyYWc9PT1lKT8uaW5pdGlhbFRyYW5zZm9ybTt0LnN0eWxlLnRyYW5zZm9ybT1yfHwiIn19KSx0aGlzLl9pdGVtUG9zaXRpb25zPVtdLHRoaXMuX2FjdGl2ZURyYWdnYWJsZXM9W10sdGhpcy5fcHJldmlvdXNTd2FwLmRyYWc9bnVsbCx0aGlzLl9wcmV2aW91c1N3'@; put 'YXAuZGVsdGE9MCx0aGlzLl9wcmV2aW91c1N3YXAub3ZlcmxhcHM9ITF9Z2V0QWN0aXZlSXRlbXNTbmFwc2hvdCgpe3JldHVybiB0aGlzLl9hY3RpdmVEcmFnZ2FibGVzfWdldEl0ZW1JbmRleChlKXtyZXR1cm4gdGhpcy5fZ2V0VmlzdWFsSXRlbVBvc2l0aW9ucygpLmZpbmRJbmRleCh0PT50'@; put 'LmRyYWc9PT1lKX1nZXRJdGVtQXRJbmRleChlKXtyZXR1cm4gdGhpcy5fZ2V0VmlzdWFsSXRlbVBvc2l0aW9ucygpW2VdPy5kcmFnfHxudWxsfXVwZGF0ZU9uU2Nyb2xsKGUsdCl7dGhpcy5faXRlbVBvc2l0aW9ucy5mb3JFYWNoKCh7Y2xpZW50UmVjdDpyfSk9PntfRChyLGUsdCl9KSx0aGlz'@; put 'Ll9pdGVtUG9zaXRpb25zLmZvckVhY2goKHtkcmFnOnJ9KT0+e3RoaXMuX2RyYWdEcm9wUmVnaXN0cnkuaXNEcmFnZ2luZyhyKSYmci5fc29ydEZyb21MYXN0UG9pbnRlclBvc2l0aW9uKCl9KX13aXRoRWxlbWVudENvbnRhaW5lcihlKXt0aGlzLl9lbGVtZW50PWV9X2NhY2hlSXRlbVBvc2l0'@; put 'aW9ucygpe2NvbnN0IGU9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbjt0aGlzLl9pdGVtUG9zaXRpb25zPXRoaXMuX2FjdGl2ZURyYWdnYWJsZXMubWFwKHQ9Pntjb25zdCByPXQuZ2V0VmlzaWJsZUVsZW1lbnQoKTtyZXR1cm57ZHJhZzp0LG9mZnNldDowLGluaXRpYWxUcmFuc2Zv'@; put 'cm06ci5zdHlsZS50cmFuc2Zvcm18fCIiLGNsaWVudFJlY3Q6eG9lKHIpfX0pLnNvcnQoKHQscik9PmU/dC5jbGllbnRSZWN0LmxlZnQtci5jbGllbnRSZWN0LmxlZnQ6dC5jbGllbnRSZWN0LnRvcC1yLmNsaWVudFJlY3QudG9wKX1fZ2V0VmlzdWFsSXRlbVBvc2l0aW9ucygpe3JldHVybiJo'@; put 'b3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24mJiJydGwiPT09dGhpcy5kaXJlY3Rpb24/dGhpcy5faXRlbVBvc2l0aW9ucy5zbGljZSgpLnJldmVyc2UoKTp0aGlzLl9pdGVtUG9zaXRpb25zfV9nZXRJdGVtT2Zmc2V0UHgoZSx0LHIpe2NvbnN0IGk9Imhvcml6b250YWwiPT09dGhpcy5v'@; put 'cmllbnRhdGlvbjtsZXQgbz1pP3QubGVmdC1lLmxlZnQ6dC50b3AtZS50b3A7cmV0dXJuLTE9PT1yJiYobys9aT90LndpZHRoLWUud2lkdGg6dC5oZWlnaHQtZS5oZWlnaHQpLG99X2dldFNpYmxpbmdPZmZzZXRQeChlLHQscil7Y29uc3QgaT0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0'@; put 'aW9uLG89dFtlXS5jbGllbnRSZWN0LGE9dFtlKy0xKnJdO2xldCBsPW9baT8id2lkdGgiOiJoZWlnaHQiXSpyO2lmKGEpe2NvbnN0IHU9aT8ibGVmdCI6InRvcCIsZz1pPyJyaWdodCI6ImJvdHRvbSI7LTE9PT1yP2wtPWEuY2xpZW50UmVjdFt1XS1vW2ddOmwrPW9bdV0tYS5jbGllbnRSZWN0'@; put 'W2ddfXJldHVybiBsfV9zaG91bGRFbnRlckFzRmlyc3RDaGlsZChlLHQpe2lmKCF0aGlzLl9hY3RpdmVEcmFnZ2FibGVzLmxlbmd0aClyZXR1cm4hMTtjb25zdCByPXRoaXMuX2l0ZW1Qb3NpdGlvbnMsaT0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uO2lmKHJbMF0uZHJhZyE9PXRo'@; put 'aXMuX2FjdGl2ZURyYWdnYWJsZXNbMF0pe2NvbnN0IGE9cltyLmxlbmd0aC0xXS5jbGllbnRSZWN0O3JldHVybiBpP2U+PWEucmlnaHQ6dD49YS5ib3R0b219e2NvbnN0IGE9clswXS5jbGllbnRSZWN0O3JldHVybiBpP2U8PWEubGVmdDp0PD1hLnRvcH19X2dldEl0ZW1JbmRleEZyb21Qb2lu'@; put 'dGVyUG9zaXRpb24oZSx0LHIsaSl7Y29uc3Qgbz0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uLGE9dGhpcy5faXRlbVBvc2l0aW9ucy5maW5kSW5kZXgoKHtkcmFnOmwsY2xpZW50UmVjdDp1fSk9PmwhPT1lJiYoKCFpfHxsIT09dGhpcy5fcHJldmlvdXNTd2FwLmRyYWd8fCF0aGlz'@; put 'Ll9wcmV2aW91c1N3YXAub3ZlcmxhcHN8fChvP2kueDppLnkpIT09dGhpcy5fcHJldmlvdXNTd2FwLmRlbHRhKSYmKG8/dD49TWF0aC5mbG9vcih1LmxlZnQpJiZ0PE1hdGguZmxvb3IodS5yaWdodCk6cj49TWF0aC5mbG9vcih1LnRvcCkmJnI8TWF0aC5mbG9vcih1LmJvdHRvbSkpKSk7cmV0'@; put 'dXJuLTEhPT1hJiZ0aGlzLl9zb3J0UHJlZGljYXRlKGEsZSk/YTotMX19Y2xhc3MgZzR0e19kb2N1bWVudDtfZHJhZ0Ryb3BSZWdpc3RyeTtfZWxlbWVudDtfc29ydFByZWRpY2F0ZTtfcm9vdE5vZGU7X2FjdGl2ZUl0ZW1zO19wcmV2aW91c1N3YXA9e2RyYWc6bnVsbCxkZWx0YVg6MCxkZWx0'@; put 'YVk6MCxvdmVybGFwczohMX07X3JlbGF0ZWROb2Rlcz1bXTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2RvY3VtZW50PWUsdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeT10fXN0YXJ0KGUpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5jaGlsZE5vZGVzO3RoaXMuX3JlbGF0ZWROb2Rlcz1bXTtmb3IobGV0'@; put 'IHI9MDtyPHQubGVuZ3RoO3IrKyl7Y29uc3QgaT10W3JdO3RoaXMuX3JlbGF0ZWROb2Rlcy5wdXNoKFtpLGkubmV4dFNpYmxpbmddKX10aGlzLndpdGhJdGVtcyhlKX1zb3J0KGUsdCxyLGkpe2NvbnN0IG89dGhpcy5fZ2V0SXRlbUluZGV4RnJvbVBvaW50ZXJQb3NpdGlvbihlLHQsciksYT10'@; put 'aGlzLl9wcmV2aW91c1N3YXA7aWYoLTE9PT1vfHx0aGlzLl9hY3RpdmVJdGVtc1tvXT09PWUpcmV0dXJuIG51bGw7Y29uc3QgbD10aGlzLl9hY3RpdmVJdGVtc1tvXTtpZihhLmRyYWc9PT1sJiZhLm92ZXJsYXBzJiZhLmRlbHRhWD09PWkueCYmYS5kZWx0YVk9PT1pLnkpcmV0dXJuIG51bGw7'@; put 'Y29uc3QgdT10aGlzLmdldEl0ZW1JbmRleChlKSxnPWUuZ2V0UGxhY2Vob2xkZXJFbGVtZW50KCksRT1sLmdldFJvb3RFbGVtZW50KCk7bz51P0UuYWZ0ZXIoZyk6RS5iZWZvcmUoZyksSW9lKHRoaXMuX2FjdGl2ZUl0ZW1zLHUsbyk7Y29uc3QgTz10aGlzLl9nZXRSb290Tm9kZSgpLmVsZW1l'@; put 'bnRGcm9tUG9pbnQodCxyKTtyZXR1cm4gYS5kZWx0YVg9aS54LGEuZGVsdGFZPWkueSxhLmRyYWc9bCxhLm92ZXJsYXBzPUU9PT1PfHxFLmNvbnRhaW5zKE8pLHtwcmV2aW91c0luZGV4OnUsY3VycmVudEluZGV4Om99fWVudGVyKGUsdCxyLGkpe2NvbnN0IG89dGhpcy5fYWN0aXZlSXRlbXMu'@; put 'aW5kZXhPZihlKTtvPi0xJiZ0aGlzLl9hY3RpdmVJdGVtcy5zcGxpY2UobywxKTtsZXQgYT1udWxsPT1pfHxpPDA/dGhpcy5fZ2V0SXRlbUluZGV4RnJvbVBvaW50ZXJQb3NpdGlvbihlLHQscik6aTstMT09PWEmJihhPXRoaXMuX2dldENsb3Nlc3RJdGVtSW5kZXhUb1BvaW50ZXIoZSx0LHIp'@; put 'KTtjb25zdCBsPXRoaXMuX2FjdGl2ZUl0ZW1zW2FdO2wmJiF0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LmlzRHJhZ2dpbmcobCk/KHRoaXMuX2FjdGl2ZUl0ZW1zLnNwbGljZShhLDAsZSksbC5nZXRSb290RWxlbWVudCgpLmJlZm9yZShlLmdldFBsYWNlaG9sZGVyRWxlbWVudCgpKSk6KHRoaXMu'@; put 'X2FjdGl2ZUl0ZW1zLnB1c2goZSksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChlLmdldFBsYWNlaG9sZGVyRWxlbWVudCgpKSl9d2l0aEl0ZW1zKGUpe3RoaXMuX2FjdGl2ZUl0ZW1zPWUuc2xpY2UoKX13aXRoU29ydFByZWRpY2F0ZShlKXt0aGlzLl9zb3J0UHJlZGljYXRlPWV9cmVzZXQo'@; put 'KXtjb25zdCBlPXRoaXMuX2VsZW1lbnQsdD10aGlzLl9wcmV2aW91c1N3YXA7Zm9yKGxldCByPXRoaXMuX3JlbGF0ZWROb2Rlcy5sZW5ndGgtMTtyPi0xO3ItLSl7Y29uc3RbaSxvXT10aGlzLl9yZWxhdGVkTm9kZXNbcl07aS5wYXJlbnROb2RlPT09ZSYmaS5uZXh0U2libGluZyE9PW8mJihu'@; put 'dWxsPT09bz9lLmFwcGVuZENoaWxkKGkpOm8ucGFyZW50Tm9kZT09PWUmJmUuaW5zZXJ0QmVmb3JlKGksbykpfXRoaXMuX3JlbGF0ZWROb2Rlcz1bXSx0aGlzLl9hY3RpdmVJdGVtcz1bXSx0LmRyYWc9bnVsbCx0LmRlbHRhWD10LmRlbHRhWT0wLHQub3ZlcmxhcHM9ITF9Z2V0QWN0aXZlSXRl'@; put 'bXNTbmFwc2hvdCgpe3JldHVybiB0aGlzLl9hY3RpdmVJdGVtc31nZXRJdGVtSW5kZXgoZSl7cmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW1zLmluZGV4T2YoZSl9Z2V0SXRlbUF0SW5kZXgoZSl7cmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW1zW2VdfHxudWxsfXVwZGF0ZU9uU2Nyb2xsKCl7dGhpcy5f'@; put 'YWN0aXZlSXRlbXMuZm9yRWFjaChlPT57dGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5pc0RyYWdnaW5nKGUpJiZlLl9zb3J0RnJvbUxhc3RQb2ludGVyUG9zaXRpb24oKX0pfXdpdGhFbGVtZW50Q29udGFpbmVyKGUpe2UhPT10aGlzLl9lbGVtZW50JiYodGhpcy5fZWxlbWVudD1lLHRoaXMuX3Jv'@; put 'b3ROb2RlPXZvaWQgMCl9X2dldEl0ZW1JbmRleEZyb21Qb2ludGVyUG9zaXRpb24oZSx0LHIpe2NvbnN0IGk9dGhpcy5fZ2V0Um9vdE5vZGUoKS5lbGVtZW50RnJvbVBvaW50KE1hdGguZmxvb3IodCksTWF0aC5mbG9vcihyKSksbz1pP3RoaXMuX2FjdGl2ZUl0ZW1zLmZpbmRJbmRleChhPT57'@; put 'Y29uc3QgbD1hLmdldFJvb3RFbGVtZW50KCk7cmV0dXJuIGk9PT1sfHxsLmNvbnRhaW5zKGkpfSk6LTE7cmV0dXJuLTEhPT1vJiZ0aGlzLl9zb3J0UHJlZGljYXRlKG8sZSk/bzotMX1fZ2V0Um9vdE5vZGUoKXtyZXR1cm4gdGhpcy5fcm9vdE5vZGV8fCh0aGlzLl9yb290Tm9kZT1ib2UodGhp'@; put 'cy5fZWxlbWVudCl8fHRoaXMuX2RvY3VtZW50KSx0aGlzLl9yb290Tm9kZX1fZ2V0Q2xvc2VzdEl0ZW1JbmRleFRvUG9pbnRlcihlLHQscil7aWYoMD09PXRoaXMuX2FjdGl2ZUl0ZW1zLmxlbmd0aClyZXR1cm4tMTtpZigxPT09dGhpcy5fYWN0aXZlSXRlbXMubGVuZ3RoKXJldHVybiAwO2xl'@; put 'dCBpPTEvMCxvPS0xO2ZvcihsZXQgYT0wO2E8dGhpcy5fYWN0aXZlSXRlbXMubGVuZ3RoO2ErKyl7Y29uc3QgbD10aGlzLl9hY3RpdmVJdGVtc1thXTtpZihsIT09ZSl7Y29uc3R7eDp1LHk6Z309bC5nZXRSb290RWxlbWVudCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEU9TWF0aC5oeXBv'@; put 'dCh0LXUsci1nKTtFPGkmJihpPUUsbz1hKX19cmV0dXJuIG99fXZhciBlbT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLk5PTkU9MF09Ik5PTkUiLG5bbi5VUD0xXT0iVVAiLG5bbi5ET1dOPTJdPSJET1dOIixufShlbXx8e30pLExmPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uTk9ORT0wXT0iTk9O'@; put 'RSIsbltuLkxFRlQ9MV09IkxFRlQiLG5bbi5SSUdIVD0yXT0iUklHSFQiLG59KExmfHx7fSk7Y2xhc3MgbTR0e19kcmFnRHJvcFJlZ2lzdHJ5O19uZ1pvbmU7X3ZpZXdwb3J0UnVsZXI7ZWxlbWVudDtkaXNhYmxlZD0hMTtzb3J0aW5nRGlzYWJsZWQ9ITE7bG9ja0F4aXM9bnVsbDthdXRvU2Ny'@; put 'b2xsRGlzYWJsZWQ9ITE7YXV0b1Njcm9sbFN0ZXA9MjtoYXNBbmNob3I9ITE7ZW50ZXJQcmVkaWNhdGU9KCk9PiEwO3NvcnRQcmVkaWNhdGU9KCk9PiEwO2JlZm9yZVN0YXJ0ZWQ9bmV3IE1yO2VudGVyZWQ9bmV3IE1yO2V4aXRlZD1uZXcgTXI7ZHJvcHBlZD1uZXcgTXI7c29ydGVkPW5ldyBN'@; put 'cjtyZWNlaXZpbmdTdGFydGVkPW5ldyBNcjtyZWNlaXZpbmdTdG9wcGVkPW5ldyBNcjtkYXRhO19jb250YWluZXI7X2lzRHJhZ2dpbmc9ITE7X3BhcmVudFBvc2l0aW9ucztfc29ydFN0cmF0ZWd5O19kb21SZWN0O19kcmFnZ2FibGVzPVtdO19zaWJsaW5ncz1bXTtfYWN0aXZlU2libGluZ3M9'@; put 'bmV3IFNldDtfdmlld3BvcnRTY3JvbGxTdWJzY3JpcHRpb249QXIuRU1QVFk7X3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uPWVtLk5PTkU7X2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb249TGYuTk9ORTtfc2Nyb2xsTm9kZTtfc3RvcFNjcm9sbFRpbWVycz1uZXcgTXI7X2NhY2hlZFNoYWRvd1Jv'@; put 'b3Q9bnVsbDtfZG9jdW1lbnQ7X3Njcm9sbGFibGVFbGVtZW50cz1bXTtfaW5pdGlhbFNjcm9sbFNuYXA7X2RpcmVjdGlvbj0ibHRyIjtjb25zdHJ1Y3RvcihlLHQscixpLG8pe3RoaXMuX2RyYWdEcm9wUmVnaXN0cnk9dCx0aGlzLl9uZ1pvbmU9aSx0aGlzLl92aWV3cG9ydFJ1bGVyPW87Y29u'@; put 'c3QgYT10aGlzLmVsZW1lbnQ9bjcoZSk7dGhpcy5fZG9jdW1lbnQ9cix0aGlzLndpdGhPcmllbnRhdGlvbigidmVydGljYWwiKS53aXRoRWxlbWVudENvbnRhaW5lcihhKSx0LnJlZ2lzdGVyRHJvcENvbnRhaW5lcih0aGlzKSx0aGlzLl9wYXJlbnRQb3NpdGlvbnM9bmV3IGlFZShyKX1kaXNw'@; put 'b3NlKCl7dGhpcy5fc3RvcFNjcm9sbGluZygpLHRoaXMuX3N0b3BTY3JvbGxUaW1lcnMuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuYmVmb3JlU3RhcnRlZC5jb21wbGV0ZSgpLHRoaXMuZW50ZXJlZC5jb21wbGV0ZSgpLHRo'@; put 'aXMuZXhpdGVkLmNvbXBsZXRlKCksdGhpcy5kcm9wcGVkLmNvbXBsZXRlKCksdGhpcy5zb3J0ZWQuY29tcGxldGUoKSx0aGlzLnJlY2VpdmluZ1N0YXJ0ZWQuY29tcGxldGUoKSx0aGlzLnJlY2VpdmluZ1N0b3BwZWQuY29tcGxldGUoKSx0aGlzLl9hY3RpdmVTaWJsaW5ncy5jbGVhcigpLHRo'@; put 'aXMuX3Njcm9sbE5vZGU9bnVsbCx0aGlzLl9wYXJlbnRQb3NpdGlvbnMuY2xlYXIoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnJlbW92ZURyb3BDb250YWluZXIodGhpcyl9aXNEcmFnZ2luZygpe3JldHVybiB0aGlzLl9pc0RyYWdnaW5nfXN0YXJ0KCl7dGhpcy5fZHJhZ2dpbmdTdGFydGVk'@; put 'KCksdGhpcy5fbm90aWZ5UmVjZWl2aW5nU2libGluZ3MoKX1lbnRlcihlLHQscixpKXt0aGlzLl9kcmFnZ2luZ1N0YXJ0ZWQoKSxudWxsPT1pJiZ0aGlzLnNvcnRpbmdEaXNhYmxlZCYmKGk9dGhpcy5fZHJhZ2dhYmxlcy5pbmRleE9mKGUpKSx0aGlzLl9zb3J0U3RyYXRlZ3kuZW50ZXIoZSx0'@; put 'LHIsaSksdGhpcy5fY2FjaGVQYXJlbnRQb3NpdGlvbnMoKSx0aGlzLl9ub3RpZnlSZWNlaXZpbmdTaWJsaW5ncygpLHRoaXMuZW50ZXJlZC5uZXh0KHtpdGVtOmUsY29udGFpbmVyOnRoaXMsY3VycmVudEluZGV4OnRoaXMuZ2V0SXRlbUluZGV4KGUpfSl9ZXhpdChlKXt0aGlzLl9yZXNldCgp'@; put 'LHRoaXMuZXhpdGVkLm5leHQoe2l0ZW06ZSxjb250YWluZXI6dGhpc30pfWRyb3AoZSx0LHIsaSxvLGEsbCx1PXt9KXt0aGlzLl9yZXNldCgpLHRoaXMuZHJvcHBlZC5uZXh0KHtpdGVtOmUsY3VycmVudEluZGV4OnQscHJldmlvdXNJbmRleDpyLGNvbnRhaW5lcjp0aGlzLHByZXZpb3VzQ29u'@; put 'dGFpbmVyOmksaXNQb2ludGVyT3ZlckNvbnRhaW5lcjpvLGRpc3RhbmNlOmEsZHJvcFBvaW50OmwsZXZlbnQ6dX0pfXdpdGhJdGVtcyhlKXtjb25zdCB0PXRoaXMuX2RyYWdnYWJsZXM7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZXM9ZSxlLmZvckVhY2gocj0+ci5fd2l0aERyb3BDb250YWluZXIo'@; put 'dGhpcykpLHRoaXMuaXNEcmFnZ2luZygpJiYodC5maWx0ZXIoaT0+aS5pc0RyYWdnaW5nKCkpLmV2ZXJ5KGk9Pi0xPT09ZS5pbmRleE9mKGkpKT90aGlzLl9yZXNldCgpOnRoaXMuX3NvcnRTdHJhdGVneS53aXRoSXRlbXModGhpcy5fZHJhZ2dhYmxlcykpLHRoaXN9d2l0aERpcmVjdGlvbihl'@; put 'KXtyZXR1cm4gdGhpcy5fZGlyZWN0aW9uPWUsdGhpcy5fc29ydFN0cmF0ZWd5IGluc3RhbmNlb2YgcEVlJiYodGhpcy5fc29ydFN0cmF0ZWd5LmRpcmVjdGlvbj1lKSx0aGlzfWNvbm5lY3RlZFRvKGUpe3JldHVybiB0aGlzLl9zaWJsaW5ncz1lLnNsaWNlKCksdGhpc313aXRoT3JpZW50YXRp'@; put 'b24oZSl7aWYoIm1peGVkIj09PWUpdGhpcy5fc29ydFN0cmF0ZWd5PW5ldyBnNHQodGhpcy5fZG9jdW1lbnQsdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeSk7ZWxzZXtjb25zdCB0PW5ldyBwRWUodGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeSk7dC5kaXJlY3Rpb249dGhpcy5fZGlyZWN0aW9uLHQub3Jp'@; put 'ZW50YXRpb249ZSx0aGlzLl9zb3J0U3RyYXRlZ3k9dH1yZXR1cm4gdGhpcy5fc29ydFN0cmF0ZWd5LndpdGhFbGVtZW50Q29udGFpbmVyKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fc29ydFN0cmF0ZWd5LndpdGhTb3J0UHJlZGljYXRlKCh0LHIpPT50aGlzLnNvcnRQcmVkaWNhdGUodCxyLHRo'@; put 'aXMpKSx0aGlzfXdpdGhTY3JvbGxhYmxlUGFyZW50cyhlKXtjb25zdCB0PXRoaXMuX2NvbnRhaW5lcjtyZXR1cm4gdGhpcy5fc2Nyb2xsYWJsZUVsZW1lbnRzPS0xPT09ZS5pbmRleE9mKHQpP1t0LC4uLmVdOmUuc2xpY2UoKSx0aGlzfXdpdGhFbGVtZW50Q29udGFpbmVyKGUpe2lmKGU9PT10'@; put 'aGlzLl9jb250YWluZXIpcmV0dXJuIHRoaXM7bjcodGhpcy5lbGVtZW50KTtjb25zdCByPXRoaXMuX3Njcm9sbGFibGVFbGVtZW50cy5pbmRleE9mKHRoaXMuX2NvbnRhaW5lciksaT10aGlzLl9zY3JvbGxhYmxlRWxlbWVudHMuaW5kZXhPZihlKTtyZXR1cm4gcj4tMSYmdGhpcy5fc2Nyb2xs'@; put 'YWJsZUVsZW1lbnRzLnNwbGljZShyLDEpLGk+LTEmJnRoaXMuX3Njcm9sbGFibGVFbGVtZW50cy5zcGxpY2UoaSwxKSx0aGlzLl9zb3J0U3RyYXRlZ3kmJnRoaXMuX3NvcnRTdHJhdGVneS53aXRoRWxlbWVudENvbnRhaW5lcihlKSx0aGlzLl9jYWNoZWRTaGFkb3dSb290PW51bGwsdGhpcy5f'@; put 'c2Nyb2xsYWJsZUVsZW1lbnRzLnVuc2hpZnQoZSksdGhpcy5fY29udGFpbmVyPWUsdGhpc31nZXRTY3JvbGxhYmxlUGFyZW50cygpe3JldHVybiB0aGlzLl9zY3JvbGxhYmxlRWxlbWVudHN9Z2V0SXRlbUluZGV4KGUpe3JldHVybiB0aGlzLl9pc0RyYWdnaW5nP3RoaXMuX3NvcnRTdHJhdGVn'@; put 'eS5nZXRJdGVtSW5kZXgoZSk6dGhpcy5fZHJhZ2dhYmxlcy5pbmRleE9mKGUpfWdldEl0ZW1BdEluZGV4KGUpe3JldHVybiB0aGlzLl9pc0RyYWdnaW5nP3RoaXMuX3NvcnRTdHJhdGVneS5nZXRJdGVtQXRJbmRleChlKTp0aGlzLl9kcmFnZ2FibGVzW2VdfHxudWxsfWlzUmVjZWl2aW5nKCl7'@; put 'cmV0dXJuIHRoaXMuX2FjdGl2ZVNpYmxpbmdzLnNpemU+MH1fc29ydEl0ZW0oZSx0LHIsaSl7aWYodGhpcy5zb3J0aW5nRGlzYWJsZWR8fCF0aGlzLl9kb21SZWN0fHwhckVlKHRoaXMuX2RvbVJlY3QsLjA1LHQscikpcmV0dXJuO2NvbnN0IG89dGhpcy5fc29ydFN0cmF0ZWd5LnNvcnQoZSx0'@; put 'LHIsaSk7byYmdGhpcy5zb3J0ZWQubmV4dCh7cHJldmlvdXNJbmRleDpvLnByZXZpb3VzSW5kZXgsY3VycmVudEluZGV4Om8uY3VycmVudEluZGV4LGNvbnRhaW5lcjp0aGlzLGl0ZW06ZX0pfV9zdGFydFNjcm9sbGluZ0lmTmVjZXNzYXJ5KGUsdCl7aWYodGhpcy5hdXRvU2Nyb2xsRGlzYWJs'@; put 'ZWQpcmV0dXJuO2xldCByLGk9ZW0uTk9ORSxvPUxmLk5PTkU7aWYodGhpcy5fcGFyZW50UG9zaXRpb25zLnBvc2l0aW9ucy5mb3JFYWNoKChhLGwpPT57bD09PXRoaXMuX2RvY3VtZW50fHwhYS5jbGllbnRSZWN0fHxyfHxyRWUoYS5jbGllbnRSZWN0LC4wNSxlLHQpJiYoW2ksb109ZnVuY3Rp'@; put 'b24gdjR0KG4sZSx0LHIsaSl7Y29uc3Qgbz12RWUoZSxpKSxhPV9FZShlLHIpO2xldCBsPWVtLk5PTkUsdT1MZi5OT05FO2lmKG8pe2NvbnN0IGc9bi5zY3JvbGxUb3A7bz09PWVtLlVQP2c+MCYmKGw9ZW0uVVApOm4uc2Nyb2xsSGVpZ2h0LWc+bi5jbGllbnRIZWlnaHQmJihsPWVtLkRPV04p'@; put 'fWlmKGEpe2NvbnN0IGc9bi5zY3JvbGxMZWZ0OyJydGwiPT09dD9hPT09TGYuUklHSFQ/ZzwwJiYodT1MZi5SSUdIVCk6bi5zY3JvbGxXaWR0aCtnPm4uY2xpZW50V2lkdGgmJih1PUxmLkxFRlQpOmE9PT1MZi5MRUZUP2c+MCYmKHU9TGYuTEVGVCk6bi5zY3JvbGxXaWR0aC1nPm4uY2xpZW50'@; put 'V2lkdGgmJih1PUxmLlJJR0hUKX1yZXR1cm5bbCx1XX0obCxhLmNsaWVudFJlY3QsdGhpcy5fZGlyZWN0aW9uLGUsdCksKGl8fG8pJiYocj1sKSl9KSwhaSYmIW8pe2NvbnN0e3dpZHRoOmEsaGVpZ2h0Omx9PXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTaXplKCksdT17d2lkdGg6'@; put 'YSxoZWlnaHQ6bCx0b3A6MCxyaWdodDphLGJvdHRvbTpsLGxlZnQ6MH07aT12RWUodSx0KSxvPV9FZSh1LGUpLHI9d2luZG93fXImJihpIT09dGhpcy5fdmVydGljYWxTY3JvbGxEaXJlY3Rpb258fG8hPT10aGlzLl9ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9ufHxyIT09dGhpcy5fc2Nyb2xs'@; put 'Tm9kZSkmJih0aGlzLl92ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbj1pLHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb249byx0aGlzLl9zY3JvbGxOb2RlPXIsKGl8fG8pJiZyP3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcih0aGlzLl9zdGFydFNjcm9sbEludGVydmFsKTp0aGlz'@; put 'Ll9zdG9wU2Nyb2xsaW5nKCkpfV9zdG9wU2Nyb2xsaW5nKCl7dGhpcy5fc3RvcFNjcm9sbFRpbWVycy5uZXh0KCl9X2RyYWdnaW5nU3RhcnRlZCgpe2NvbnN0IGU9dGhpcy5fY29udGFpbmVyLnN0eWxlO3RoaXMuYmVmb3JlU3RhcnRlZC5uZXh0KCksdGhpcy5faXNEcmFnZ2luZz0hMCx0aGlz'@; put 'Ll9pbml0aWFsU2Nyb2xsU25hcD1lLm1zU2Nyb2xsU25hcFR5cGV8fGUuc2Nyb2xsU25hcFR5cGV8fCIiLGUuc2Nyb2xsU25hcFR5cGU9ZS5tc1Njcm9sbFNuYXBUeXBlPSJub25lIix0aGlzLl9zb3J0U3RyYXRlZ3kuc3RhcnQodGhpcy5fZHJhZ2dhYmxlcyksdGhpcy5fY2FjaGVQYXJlbnRQ'@; put 'b3NpdGlvbnMoKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2xpc3RlblRvU2Nyb2xsRXZlbnRzKCl9X2NhY2hlUGFyZW50UG9zaXRpb25zKCl7dGhpcy5fcGFyZW50UG9zaXRpb25zLmNhY2hlKHRoaXMuX3Njcm9sbGFibGVFbGVtZW50cyks'@; put 'dGhpcy5fZG9tUmVjdD10aGlzLl9wYXJlbnRQb3NpdGlvbnMucG9zaXRpb25zLmdldCh0aGlzLl9jb250YWluZXIpLmNsaWVudFJlY3R9X3Jlc2V0KCl7dGhpcy5faXNEcmFnZ2luZz0hMTtjb25zdCBlPXRoaXMuX2NvbnRhaW5lci5zdHlsZTtlLnNjcm9sbFNuYXBUeXBlPWUubXNTY3JvbGxT'@; put 'bmFwVHlwZT10aGlzLl9pbml0aWFsU2Nyb2xsU25hcCx0aGlzLl9zaWJsaW5ncy5mb3JFYWNoKHQ9PnQuX3N0b3BSZWNlaXZpbmcodGhpcykpLHRoaXMuX3NvcnRTdHJhdGVneS5yZXNldCgpLHRoaXMuX3N0b3BTY3JvbGxpbmcoKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51'@; put 'bnN1YnNjcmliZSgpLHRoaXMuX3BhcmVudFBvc2l0aW9ucy5jbGVhcigpfV9zdGFydFNjcm9sbEludGVydmFsPSgpPT57dGhpcy5fc3RvcFNjcm9sbGluZygpLGZ1bmN0aW9uIE1tdChuPTAsZT1Beil7cmV0dXJuIG48MCYmKG49MCksWVNlKG4sbixlKX0oMCxaU2UpLnBpcGUodjAodGhpcy5f'@; put 'c3RvcFNjcm9sbFRpbWVycykpLnN1YnNjcmliZSgoKT0+e2NvbnN0IGU9dGhpcy5fc2Nyb2xsTm9kZSx0PXRoaXMuYXV0b1Njcm9sbFN0ZXA7dGhpcy5fdmVydGljYWxTY3JvbGxEaXJlY3Rpb249PT1lbS5VUD9lLnNjcm9sbEJ5KDAsLXQpOnRoaXMuX3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9u'@; put 'PT09ZW0uRE9XTiYmZS5zY3JvbGxCeSgwLHQpLHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb249PT1MZi5MRUZUP2Uuc2Nyb2xsQnkoLXQsMCk6dGhpcy5faG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbj09PUxmLlJJR0hUJiZlLnNjcm9sbEJ5KHQsMCl9KX07X2lzT3ZlckNvbnRhaW5l'@; put 'cihlLHQpe3JldHVybiBudWxsIT10aGlzLl9kb21SZWN0JiZBb2UodGhpcy5fZG9tUmVjdCxlLHQpfV9nZXRTaWJsaW5nQ29udGFpbmVyRnJvbVBvc2l0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5fc2libGluZ3MuZmluZChpPT5pLl9jYW5SZWNlaXZlKGUsdCxyKSl9X2NhblJlY2VpdmUoZSx0'@; put 'LHIpe2lmKCF0aGlzLl9kb21SZWN0fHwhQW9lKHRoaXMuX2RvbVJlY3QsdCxyKXx8IXRoaXMuZW50ZXJQcmVkaWNhdGUoZSx0aGlzKSlyZXR1cm4hMTtjb25zdCBpPXRoaXMuX2dldFNoYWRvd1Jvb3QoKS5lbGVtZW50RnJvbVBvaW50KHQscik7cmV0dXJuISFpJiYoaT09PXRoaXMuX2NvbnRh'@; put 'aW5lcnx8dGhpcy5fY29udGFpbmVyLmNvbnRhaW5zKGkpKX1fc3RhcnRSZWNlaXZpbmcoZSx0KXtjb25zdCByPXRoaXMuX2FjdGl2ZVNpYmxpbmdzOyFyLmhhcyhlKSYmdC5ldmVyeShpPT50aGlzLmVudGVyUHJlZGljYXRlKGksdGhpcyl8fHRoaXMuX2RyYWdnYWJsZXMuaW5kZXhPZihpKT4t'@; put 'MSkmJihyLmFkZChlKSx0aGlzLl9jYWNoZVBhcmVudFBvc2l0aW9ucygpLHRoaXMuX2xpc3RlblRvU2Nyb2xsRXZlbnRzKCksdGhpcy5yZWNlaXZpbmdTdGFydGVkLm5leHQoe2luaXRpYXRvcjplLHJlY2VpdmVyOnRoaXMsaXRlbXM6dH0pKX1fc3RvcFJlY2VpdmluZyhlKXt0aGlzLl9hY3Rp'@; put 'dmVTaWJsaW5ncy5kZWxldGUoZSksdGhpcy5fdmlld3BvcnRTY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnJlY2VpdmluZ1N0b3BwZWQubmV4dCh7aW5pdGlhdG9yOmUscmVjZWl2ZXI6dGhpc30pfV9saXN0ZW5Ub1Njcm9sbEV2ZW50cygpe3RoaXMuX3ZpZXdwb3J0U2Ny'@; put 'b2xsU3Vic2NyaXB0aW9uPXRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuc2Nyb2xsZWQodGhpcy5fZ2V0U2hhZG93Um9vdCgpKS5zdWJzY3JpYmUoZT0+e2lmKHRoaXMuaXNEcmFnZ2luZygpKXtjb25zdCB0PXRoaXMuX3BhcmVudFBvc2l0aW9ucy5oYW5kbGVTY3JvbGwoZSk7dCYmdGhpcy5fc29y'@; put 'dFN0cmF0ZWd5LnVwZGF0ZU9uU2Nyb2xsKHQudG9wLHQubGVmdCl9ZWxzZSB0aGlzLmlzUmVjZWl2aW5nKCkmJnRoaXMuX2NhY2hlUGFyZW50UG9zaXRpb25zKCl9KX1fZ2V0U2hhZG93Um9vdCgpe2lmKCF0aGlzLl9jYWNoZWRTaGFkb3dSb290KXtjb25zdCBlPWJvZSh0aGlzLl9jb250YWlu'@; put 'ZXIpO3RoaXMuX2NhY2hlZFNoYWRvd1Jvb3Q9ZXx8dGhpcy5fZG9jdW1lbnR9cmV0dXJuIHRoaXMuX2NhY2hlZFNoYWRvd1Jvb3R9X25vdGlmeVJlY2VpdmluZ1NpYmxpbmdzKCl7Y29uc3QgZT10aGlzLl9zb3J0U3RyYXRlZ3kuZ2V0QWN0aXZlSXRlbXNTbmFwc2hvdCgpLmZpbHRlcih0PT50'@; put 'LmlzRHJhZ2dpbmcoKSk7dGhpcy5fc2libGluZ3MuZm9yRWFjaCh0PT50Ll9zdGFydFJlY2VpdmluZyh0aGlzLGUpKX19ZnVuY3Rpb24gdkVlKG4sZSl7Y29uc3R7dG9wOnQsYm90dG9tOnIsaGVpZ2h0Oml9PW4sbz0uMDUqaTtyZXR1cm4gZT49dC1vJiZlPD10K28/ZW0uVVA6ZT49ci1vJiZl'@; put 'PD1yK28/ZW0uRE9XTjplbS5OT05FfWZ1bmN0aW9uIF9FZShuLGUpe2NvbnN0e2xlZnQ6dCxyaWdodDpyLHdpZHRoOml9PW4sbz0uMDUqaTtyZXR1cm4gZT49dC1vJiZlPD10K28/TGYuTEVGVDplPj1yLW8mJmU8PXIrbz9MZi5SSUdIVDpMZi5OT05FfWNvbnN0IENEPXtjYXB0dXJlOiEwfSxE'@; put 'b2U9e3Bhc3NpdmU6ITEsY2FwdHVyZTohMH07bGV0IF80dD0oKCk9PntjbGFzcyBue3N0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJuZy1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsi'@; put 'Y2RrLWRyYWctcmVzZXRzLWNvbnRhaW5lciIsIiJdLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHIsaSl7fSxzdHlsZXM6WyJAbGF5ZXIgY2RrLXJlc2V0c3suY2RrLWRyYWctcHJldmlld3tiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7cGFkZGluZzowO2NvbG9yOmluaGVy'@; put 'aXQ7aW5zZXQ6YXV0b319LmNkay1kcmFnLXBsYWNlaG9sZGVyICosLmNkay1kcmFnLXByZXZpZXcgKntwb2ludGVyLWV2ZW50czpub25lICFpbXBvcnRhbnR9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KX1yZXR1cm4gbn0pKCksTG9lPSgoKT0+e2NsYXNzIG57X25n'@; put 'Wm9uZT1zbihnYSk7X2RvY3VtZW50PXNuKFRsKTtfc3R5bGVMb2FkZXI9c24oalNlKTtfcmVuZGVyZXI9c24oZ2MpLmNyZWF0ZVJlbmRlcmVyKG51bGwsbnVsbCk7X2NsZWFudXBEb2N1bWVudFRvdWNobW92ZTtfc2Nyb2xsPW5ldyBNcjtfZHJvcEluc3RhbmNlcz1uZXcgU2V0O19kcmFnSW5z'@; put 'dGFuY2VzPW5ldyBTZXQ7X2FjdGl2ZURyYWdJbnN0YW5jZXM9QjEoW10pO19nbG9iYWxMaXN0ZW5lcnM7X2RyYWdnaW5nUHJlZGljYXRlPXQ9PnQuaXNEcmFnZ2luZygpO19kb21Ob2Rlc1RvRGlyZWN0aXZlcz1udWxsO3BvaW50ZXJNb3ZlPW5ldyBNcjtwb2ludGVyVXA9bmV3IE1yO2NvbnN0'@; put 'cnVjdG9yKCl7fXJlZ2lzdGVyRHJvcENvbnRhaW5lcih0KXt0aGlzLl9kcm9wSW5zdGFuY2VzLmhhcyh0KXx8dGhpcy5fZHJvcEluc3RhbmNlcy5hZGQodCl9cmVnaXN0ZXJEcmFnSXRlbSh0KXt0aGlzLl9kcmFnSW5zdGFuY2VzLmFkZCh0KSwxPT09dGhpcy5fZHJhZ0luc3RhbmNlcy5zaXpl'@; put 'JiZ0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9jbGVhbnVwRG9jdW1lbnRUb3VjaG1vdmU/LigpLHRoaXMuX2NsZWFudXBEb2N1bWVudFRvdWNobW92ZT10aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5fZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fcGVyc2lz'@; put 'dGVudFRvdWNobW92ZUxpc3RlbmVyLERvZSl9KX1yZW1vdmVEcm9wQ29udGFpbmVyKHQpe3RoaXMuX2Ryb3BJbnN0YW5jZXMuZGVsZXRlKHQpfXJlbW92ZURyYWdJdGVtKHQpe3RoaXMuX2RyYWdJbnN0YW5jZXMuZGVsZXRlKHQpLHRoaXMuc3RvcERyYWdnaW5nKHQpLDA9PT10aGlzLl9kcmFn'@; put 'SW5zdGFuY2VzLnNpemUmJnRoaXMuX2NsZWFudXBEb2N1bWVudFRvdWNobW92ZT8uKCl9c3RhcnREcmFnZ2luZyh0LHIpe2lmKCEodGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcygpLmluZGV4T2YodCk+LTEpJiYodGhpcy5fc3R5bGVMb2FkZXIubG9hZChfNHQpLHRoaXMuX2FjdGl2ZURyYWdJ'@; put 'bnN0YW5jZXMudXBkYXRlKGk9PlsuLi5pLHRdKSwxPT09dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcygpLmxlbmd0aCkpe2NvbnN0IGk9ci50eXBlLnN0YXJ0c1dpdGgoInRvdWNoIiksbz1sPT50aGlzLnBvaW50ZXJVcC5uZXh0KGwpLGE9W1sic2Nyb2xsIixsPT50aGlzLl9zY3JvbGwubmV4'@; put 'dChsKSxDRF0sWyJzZWxlY3RzdGFydCIsdGhpcy5fcHJldmVudERlZmF1bHRXaGlsZURyYWdnaW5nLERvZV1dO2k/YS5wdXNoKFsidG91Y2hlbmQiLG8sQ0RdLFsidG91Y2hjYW5jZWwiLG8sQ0RdKTphLnB1c2goWyJtb3VzZXVwIixvLENEXSksaXx8YS5wdXNoKFsibW91c2Vtb3ZlIixsPT50'@; put 'aGlzLnBvaW50ZXJNb3ZlLm5leHQobCksRG9lXSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fZ2xvYmFsTGlzdGVuZXJzPWEubWFwKChbbCx1LGddKT0+dGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX2RvY3VtZW50LGwsdSxnKSl9KX19c3RvcERyYWdnaW5n'@; put 'KHQpe3RoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMudXBkYXRlKHI9Pntjb25zdCBpPXIuaW5kZXhPZih0KTtyZXR1cm4gaT4tMT8oci5zcGxpY2UoaSwxKSxbLi4ucl0pOnJ9KSwwPT09dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcygpLmxlbmd0aCYmdGhpcy5fY2xlYXJHbG9iYWxMaXN0ZW5l'@; put 'cnMoKX1pc0RyYWdnaW5nKHQpe3JldHVybiB0aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzKCkuaW5kZXhPZih0KT4tMX1zY3JvbGxlZCh0KXtjb25zdCByPVt0aGlzLl9zY3JvbGxdO3JldHVybiB0JiZ0IT09dGhpcy5fZG9jdW1lbnQmJnIucHVzaChuZXcgaG8oaT0+dGhpcy5fbmdab25lLnJ1'@; put 'bk91dHNpZGVBbmd1bGFyKCgpPT57Y29uc3Qgbz10aGlzLl9yZW5kZXJlci5saXN0ZW4odCwic2Nyb2xsIixhPT57dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcygpLmxlbmd0aCYmaS5uZXh0KGEpfSxDRCk7cmV0dXJuKCk9PntvKCl9fSkpKSxoRCguLi5yKX1yZWdpc3RlckRpcmVjdGl2ZU5v'@; put 'ZGUodCxyKXt0aGlzLl9kb21Ob2Rlc1RvRGlyZWN0aXZlcz8/PW5ldyBXZWFrTWFwLHRoaXMuX2RvbU5vZGVzVG9EaXJlY3RpdmVzLnNldCh0LHIpfXJlbW92ZURpcmVjdGl2ZU5vZGUodCl7dGhpcy5fZG9tTm9kZXNUb0RpcmVjdGl2ZXM/LmRlbGV0ZSh0KX1nZXREcmFnRGlyZWN0aXZlRm9y'@; put 'Tm9kZSh0KXtyZXR1cm4gdGhpcy5fZG9tTm9kZXNUb0RpcmVjdGl2ZXM/LmdldCh0KXx8bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMuX2RyYWdJbnN0YW5jZXMuZm9yRWFjaCh0PT50aGlzLnJlbW92ZURyYWdJdGVtKHQpKSx0aGlzLl9kcm9wSW5zdGFuY2VzLmZvckVhY2godD0+dGhpcy5yZW1v'@; put 'dmVEcm9wQ29udGFpbmVyKHQpKSx0aGlzLl9kb21Ob2Rlc1RvRGlyZWN0aXZlcz1udWxsLHRoaXMuX2NsZWFyR2xvYmFsTGlzdGVuZXJzKCksdGhpcy5wb2ludGVyTW92ZS5jb21wbGV0ZSgpLHRoaXMucG9pbnRlclVwLmNvbXBsZXRlKCl9X3ByZXZlbnREZWZhdWx0V2hpbGVEcmFnZ2luZz10'@; put 'PT57dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcygpLmxlbmd0aD4wJiZ0LnByZXZlbnREZWZhdWx0KCl9O19wZXJzaXN0ZW50VG91Y2htb3ZlTGlzdGVuZXI9dD0+e3RoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMoKS5sZW5ndGg+MCYmKHRoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMoKS5zb21l'@; put 'KHRoaXMuX2RyYWdnaW5nUHJlZGljYXRlKSYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucG9pbnRlck1vdmUubmV4dCh0KSl9O19jbGVhckdsb2JhbExpc3RlbmVycygpe3RoaXMuX2dsb2JhbExpc3RlbmVycz8uZm9yRWFjaCh0PT50KCkpLHRoaXMuX2dsb2JhbExpc3RlbmVycz12b2lkIDB9'@; put 'c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9cmV0dXJuIG59KSgpO2NvbnN0IHk0dD17ZHJhZ1N0YXJ0VGhyZXNob2xkOjUscG9p'@; put 'bnRlckRpcmVjdGlvbkNoYW5nZVRocmVzaG9sZDo1fTtsZXQgVno9KCgpPT57Y2xhc3MgbntfZG9jdW1lbnQ9c24oVGwpO19uZ1pvbmU9c24oZ2EpO192aWV3cG9ydFJ1bGVyPXNuKEZ6KTtfZHJhZ0Ryb3BSZWdpc3RyeT1zbihMb2UpO19yZW5kZXJlcj1zbihnYykuY3JlYXRlUmVuZGVyZXIo'@; put 'bnVsbCxudWxsKTtjb25zdHJ1Y3Rvcigpe31jcmVhdGVEcmFnKHQscj15NHQpe3JldHVybiBuZXcgaDR0KHQscix0aGlzLl9kb2N1bWVudCx0aGlzLl9uZ1pvbmUsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LHRoaXMuX3JlbmRlcmVyKX1jcmVhdGVEcm9wTGlz'@; put 'dCh0KXtyZXR1cm4gbmV3IG00dCh0LHRoaXMuX2RyYWdEcm9wUmVnaXN0cnksdGhpcy5fZG9jdW1lbnQsdGhpcy5fbmdab25lLHRoaXMuX3ZpZXdwb3J0UnVsZXIpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rv'@; put 'a2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtjb25zdCBTRD1uZXcgRXIoIkNES19EUkFHX1BBUkVOVCIpLHlFZT1uZXcgRXIoIkNka0RyYWdIYW5kbGUiKTtsZXQgYkVlPSgoKT0+e2NsYXNzIG57ZWxlbWVudD1zbihubyk7X3BhcmVu'@; put 'dERyYWc9c24oU0Qse29wdGlvbmFsOiEwLHNraXBTZWxmOiEwfSk7X2RyYWdEcm9wUmVnaXN0cnk9c24oTG9lKTtfc3RhdGVDaGFuZ2VzPW5ldyBNcjtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPXQsdGhpcy5fc3Rh'@; put 'dGVDaGFuZ2VzLm5leHQodGhpcyl9X2Rpc2FibGVkPSExO2NvbnN0cnVjdG9yKCl7dGhpcy5fcGFyZW50RHJhZz8uX2FkZEhhbmRsZSh0aGlzKX1uZ0FmdGVyVmlld0luaXQoKXtpZighdGhpcy5fcGFyZW50RHJhZyl7bGV0IHQ9dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxl'@; put 'bWVudDtmb3IoO3Q7KXtjb25zdCByPXRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuZ2V0RHJhZ0RpcmVjdGl2ZUZvck5vZGUodCk7aWYocil7dGhpcy5fcGFyZW50RHJhZz1yLHIuX2FkZEhhbmRsZSh0aGlzKTticmVha310PXQucGFyZW50RWxlbWVudH19fW5nT25EZXN0cm95KCl7dGhpcy5fcGFy'@; put 'ZW50RHJhZz8uX3JlbW92ZUhhbmRsZSh0aGlzKSx0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2RrRHJhZ0hhbmRsZSIs'@; put 'IiJdXSxob3N0QXR0cnM6WzEsImNkay1kcmFnLWhhbmRsZSJdLGlucHV0czp7ZGlzYWJsZWQ6WzIsImNka0RyYWdIYW5kbGVEaXNhYmxlZCIsImRpc2FibGVkIixaMF19LGZlYXR1cmVzOltibyhbe3Byb3ZpZGU6eUVlLHVzZUV4aXN0aW5nOm59XSldfSl9cmV0dXJuIG59KSgpO2NvbnN0IE9v'@; put 'ZT1uZXcgRXIoIkNES19EUkFHX0NPTkZJRyIpLE5vZT1uZXcgRXIoIkNka0Ryb3BMaXN0Iik7bGV0IEZvZT0oKCk9PntjbGFzcyBue2VsZW1lbnQ9c24obm8pO2Ryb3BDb250YWluZXI9c24oTm9lLHtvcHRpb25hbDohMCxza2lwU2VsZjohMH0pO19uZ1pvbmU9c24oZ2EpO192aWV3Q29udGFp'@; put 'bmVyUmVmPXNuKERzKTtfZGlyPXNuKGlNLHtvcHRpb25hbDohMH0pO19jaGFuZ2VEZXRlY3RvclJlZj1zbihVbCk7X3NlbGZIYW5kbGU9c24oeUVlLHtvcHRpb25hbDohMCxzZWxmOiEwfSk7X3BhcmVudERyYWc9c24oU0Qse29wdGlvbmFsOiEwLHNraXBTZWxmOiEwfSk7X2RyYWdEcm9wUmVn'@; put 'aXN0cnk9c24oTG9lKTtfZGVzdHJveWVkPW5ldyBNcjtfaGFuZGxlcz1uZXcgJGkoW10pO19wcmV2aWV3VGVtcGxhdGU7X3BsYWNlaG9sZGVyVGVtcGxhdGU7X2RyYWdSZWY7ZGF0YTtsb2NrQXhpcz1udWxsO3Jvb3RFbGVtZW50U2VsZWN0b3I7Ym91bmRhcnlFbGVtZW50O2RyYWdTdGFydERl'@; put 'bGF5O2ZyZWVEcmFnUG9zaXRpb247Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHwhKCF0aGlzLmRyb3BDb250YWluZXJ8fCF0aGlzLmRyb3BDb250YWluZXIuZGlzYWJsZWQpfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD10LHRoaXMuX2RyYWdSZWYuZGlzYWJs'@; put 'ZWQ9dGhpcy5fZGlzYWJsZWR9X2Rpc2FibGVkO2NvbnN0cmFpblBvc2l0aW9uO3ByZXZpZXdDbGFzcztwcmV2aWV3Q29udGFpbmVyO3NjYWxlPTE7c3RhcnRlZD1uZXcgS3I7cmVsZWFzZWQ9bmV3IEtyO2VuZGVkPW5ldyBLcjtlbnRlcmVkPW5ldyBLcjtleGl0ZWQ9bmV3IEtyO2Ryb3BwZWQ9'@; put 'bmV3IEtyO21vdmVkPW5ldyBobyh0PT57Y29uc3Qgcj10aGlzLl9kcmFnUmVmLm1vdmVkLnBpcGUoRXMoaT0+KHtzb3VyY2U6dGhpcyxwb2ludGVyUG9zaXRpb246aS5wb2ludGVyUG9zaXRpb24sZXZlbnQ6aS5ldmVudCxkZWx0YTppLmRlbHRhLGRpc3RhbmNlOmkuZGlzdGFuY2V9KSkpLnN1'@; put 'YnNjcmliZSh0KTtyZXR1cm4oKT0+e3IudW5zdWJzY3JpYmUoKX19KTtfaW5qZWN0b3I9c24oTWwpO2NvbnN0cnVjdG9yKCl7Y29uc3QgdD10aGlzLmRyb3BDb250YWluZXIscj1zbihPb2Use29wdGlvbmFsOiEwfSksaT1zbihWeik7dGhpcy5fZHJhZ1JlZj1pLmNyZWF0ZURyYWcodGhpcy5l'@; put 'bGVtZW50LHtkcmFnU3RhcnRUaHJlc2hvbGQ6ciYmbnVsbCE9ci5kcmFnU3RhcnRUaHJlc2hvbGQ/ci5kcmFnU3RhcnRUaHJlc2hvbGQ6NSxwb2ludGVyRGlyZWN0aW9uQ2hhbmdlVGhyZXNob2xkOnImJm51bGwhPXIucG9pbnRlckRpcmVjdGlvbkNoYW5nZVRocmVzaG9sZD9yLnBvaW50ZXJE'@; put 'aXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQ6NSx6SW5kZXg6cj8uekluZGV4fSksdGhpcy5fZHJhZ1JlZi5kYXRhPXRoaXMsdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5yZWdpc3RlckRpcmVjdGl2ZU5vZGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsdGhpcyksciYmdGhpcy5fYXNzaWduRGVm'@; put 'YXVsdHMociksdCYmKHQuYWRkSXRlbSh0aGlzKSx0Ll9kcm9wTGlzdFJlZi5iZWZvcmVTdGFydGVkLnBpcGUodjAodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5fZHJhZ1JlZi5zY2FsZT10aGlzLnNjYWxlfSkpLHRoaXMuX3N5bmNJbnB1dHModGhpcy5fZHJhZ1JlZiks'@; put 'dGhpcy5faGFuZGxlRXZlbnRzKHRoaXMuX2RyYWdSZWYpfWdldFBsYWNlaG9sZGVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9kcmFnUmVmLmdldFBsYWNlaG9sZGVyRWxlbWVudCgpfWdldFJvb3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2RyYWdSZWYuZ2V0Um9vdEVsZW1lbnQoKX1yZXNldCgp'@; put 'e3RoaXMuX2RyYWdSZWYucmVzZXQoKX1yZXNldFRvQm91bmRhcnkoKXt0aGlzLl9kcmFnUmVmLnJlc2V0VG9Cb3VuZGFyeSgpfWdldEZyZWVEcmFnUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ1JlZi5nZXRGcmVlRHJhZ1Bvc2l0aW9uKCl9c2V0RnJlZURyYWdQb3NpdGlvbih0KXt0aGlz'@; put 'Ll9kcmFnUmVmLnNldEZyZWVEcmFnUG9zaXRpb24odCl9bmdBZnRlclZpZXdJbml0KCl7SDgoKCk9Pnt0aGlzLl91cGRhdGVSb290RWxlbWVudCgpLHRoaXMuX3NldHVwSGFuZGxlc0xpc3RlbmVyKCksdGhpcy5fZHJhZ1JlZi5zY2FsZT10aGlzLnNjYWxlLHRoaXMuZnJlZURyYWdQb3NpdGlv'@; put 'biYmdGhpcy5fZHJhZ1JlZi5zZXRGcmVlRHJhZ1Bvc2l0aW9uKHRoaXMuZnJlZURyYWdQb3NpdGlvbil9LHtpbmplY3Rvcjp0aGlzLl9pbmplY3Rvcn0pfW5nT25DaGFuZ2VzKHQpe2NvbnN0IHI9dC5yb290RWxlbWVudFNlbGVjdG9yLGk9dC5mcmVlRHJhZ1Bvc2l0aW9uO3ImJiFyLmZpcnN0'@; put 'Q2hhbmdlJiZ0aGlzLl91cGRhdGVSb290RWxlbWVudCgpLHRoaXMuX2RyYWdSZWYuc2NhbGU9dGhpcy5zY2FsZSxpJiYhaS5maXJzdENoYW5nZSYmdGhpcy5mcmVlRHJhZ1Bvc2l0aW9uJiZ0aGlzLl9kcmFnUmVmLnNldEZyZWVEcmFnUG9zaXRpb24odGhpcy5mcmVlRHJhZ1Bvc2l0aW9uKX1u'@; put 'Z09uRGVzdHJveSgpe3RoaXMuZHJvcENvbnRhaW5lciYmdGhpcy5kcm9wQ29udGFpbmVyLnJlbW92ZUl0ZW0odGhpcyksdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5yZW1vdmVEaXJlY3RpdmVOb2RlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFu'@; put 'Z3VsYXIoKCk9Pnt0aGlzLl9oYW5kbGVzLmNvbXBsZXRlKCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9kcmFnUmVmLmRpc3Bvc2UoKX0pfV9hZGRIYW5kbGUodCl7Y29uc3Qgcj10aGlzLl9oYW5kbGVzLmdldFZhbHVlKCk7ci5wdXNo'@; put 'KHQpLHRoaXMuX2hhbmRsZXMubmV4dChyKX1fcmVtb3ZlSGFuZGxlKHQpe2NvbnN0IHI9dGhpcy5faGFuZGxlcy5nZXRWYWx1ZSgpLGk9ci5pbmRleE9mKHQpO2k+LTEmJihyLnNwbGljZShpLDEpLHRoaXMuX2hhbmRsZXMubmV4dChyKSl9X3NldFByZXZpZXdUZW1wbGF0ZSh0KXt0aGlzLl9w'@; put 'cmV2aWV3VGVtcGxhdGU9dH1fcmVzZXRQcmV2aWV3VGVtcGxhdGUodCl7dD09PXRoaXMuX3ByZXZpZXdUZW1wbGF0ZSYmKHRoaXMuX3ByZXZpZXdUZW1wbGF0ZT1udWxsKX1fc2V0UGxhY2Vob2xkZXJUZW1wbGF0ZSh0KXt0aGlzLl9wbGFjZWhvbGRlclRlbXBsYXRlPXR9X3Jlc2V0UGxhY2Vo'@; put 'b2xkZXJUZW1wbGF0ZSh0KXt0PT09dGhpcy5fcGxhY2Vob2xkZXJUZW1wbGF0ZSYmKHRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGU9bnVsbCl9X3VwZGF0ZVJvb3RFbGVtZW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtsZXQgcj10O3RoaXMucm9vdEVsZW1lbnRTZWxl'@; put 'Y3RvciYmKHI9dm9pZCAwIT09dC5jbG9zZXN0P3QuY2xvc2VzdCh0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3IpOnQucGFyZW50RWxlbWVudD8uY2xvc2VzdCh0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3IpKSx0aGlzLl9kcmFnUmVmLndpdGhSb290RWxlbWVudChyfHx0KX1fZ2V0Qm91bmRhcnlF'@; put 'bGVtZW50KCl7Y29uc3QgdD10aGlzLmJvdW5kYXJ5RWxlbWVudDtyZXR1cm4gdD8ic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCh0KTpuNyh0KTpudWxsfV9zeW5jSW5wdXRzKHQpe3QuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCk9PntpZigh'@; put 'dC5pc0RyYWdnaW5nKCkpe2NvbnN0IHI9dGhpcy5fZGlyLGk9dGhpcy5kcmFnU3RhcnREZWxheSxvPXRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGU/e3RlbXBsYXRlOnRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGUudGVtcGxhdGVSZWYsY29udGV4dDp0aGlzLl9wbGFjZWhvbGRlclRlbXBsYXRl'@; put 'LmRhdGEsdmlld0NvbnRhaW5lcjp0aGlzLl92aWV3Q29udGFpbmVyUmVmfTpudWxsLGE9dGhpcy5fcHJldmlld1RlbXBsYXRlP3t0ZW1wbGF0ZTp0aGlzLl9wcmV2aWV3VGVtcGxhdGUudGVtcGxhdGVSZWYsY29udGV4dDp0aGlzLl9wcmV2aWV3VGVtcGxhdGUuZGF0YSxtYXRjaFNpemU6dGhp'@; put 'cy5fcHJldmlld1RlbXBsYXRlLm1hdGNoU2l6ZSx2aWV3Q29udGFpbmVyOnRoaXMuX3ZpZXdDb250YWluZXJSZWZ9Om51bGw7dC5kaXNhYmxlZD10aGlzLmRpc2FibGVkLHQubG9ja0F4aXM9dGhpcy5sb2NrQXhpcyx0LnNjYWxlPXRoaXMuc2NhbGUsdC5kcmFnU3RhcnREZWxheT0ib2JqZWN0'@; put 'Ij09dHlwZW9mIGkmJmk/aTpGYihpKSx0LmNvbnN0cmFpblBvc2l0aW9uPXRoaXMuY29uc3RyYWluUG9zaXRpb24sdC5wcmV2aWV3Q2xhc3M9dGhpcy5wcmV2aWV3Q2xhc3MsdC53aXRoQm91bmRhcnlFbGVtZW50KHRoaXMuX2dldEJvdW5kYXJ5RWxlbWVudCgpKS53aXRoUGxhY2Vob2xkZXJU'@; put 'ZW1wbGF0ZShvKS53aXRoUHJldmlld1RlbXBsYXRlKGEpLndpdGhQcmV2aWV3Q29udGFpbmVyKHRoaXMucHJldmlld0NvbnRhaW5lcnx8Imdsb2JhbCIpLHImJnQud2l0aERpcmVjdGlvbihyLnZhbHVlKX19KSx0LmJlZm9yZVN0YXJ0ZWQucGlwZShNcCgxKSkuc3Vic2NyaWJlKCgpPT57aWYo'@; put 'dGhpcy5fcGFyZW50RHJhZylyZXR1cm4gdm9pZCB0LndpdGhQYXJlbnQodGhpcy5fcGFyZW50RHJhZy5fZHJhZ1JlZik7bGV0IHI9dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtmb3IoO3I7KXtjb25zdCBpPXRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuZ2V0RHJhZ0Rp'@; put 'cmVjdGl2ZUZvck5vZGUocik7aWYoaSl7dC53aXRoUGFyZW50KGkuX2RyYWdSZWYpO2JyZWFrfXI9ci5wYXJlbnRFbGVtZW50fX0pfV9oYW5kbGVFdmVudHModCl7dC5zdGFydGVkLnN1YnNjcmliZShyPT57dGhpcy5zdGFydGVkLmVtaXQoe3NvdXJjZTp0aGlzLGV2ZW50OnIuZXZlbnR9KSx0'@; put 'aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLHQucmVsZWFzZWQuc3Vic2NyaWJlKHI9Pnt0aGlzLnJlbGVhc2VkLmVtaXQoe3NvdXJjZTp0aGlzLGV2ZW50OnIuZXZlbnR9KX0pLHQuZW5kZWQuc3Vic2NyaWJlKHI9Pnt0aGlzLmVuZGVkLmVtaXQoe3NvdXJjZTp0aGlz'@; put 'LGRpc3RhbmNlOnIuZGlzdGFuY2UsZHJvcFBvaW50OnIuZHJvcFBvaW50LGV2ZW50OnIuZXZlbnR9KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLHQuZW50ZXJlZC5zdWJzY3JpYmUocj0+e3RoaXMuZW50ZXJlZC5lbWl0KHtjb250YWluZXI6ci5jb250YWluZXIu'@; put 'ZGF0YSxpdGVtOnRoaXMsY3VycmVudEluZGV4OnIuY3VycmVudEluZGV4fSl9KSx0LmV4aXRlZC5zdWJzY3JpYmUocj0+e3RoaXMuZXhpdGVkLmVtaXQoe2NvbnRhaW5lcjpyLmNvbnRhaW5lci5kYXRhLGl0ZW06dGhpc30pfSksdC5kcm9wcGVkLnN1YnNjcmliZShyPT57dGhpcy5kcm9wcGVk'@; put 'LmVtaXQoe3ByZXZpb3VzSW5kZXg6ci5wcmV2aW91c0luZGV4LGN1cnJlbnRJbmRleDpyLmN1cnJlbnRJbmRleCxwcmV2aW91c0NvbnRhaW5lcjpyLnByZXZpb3VzQ29udGFpbmVyLmRhdGEsY29udGFpbmVyOnIuY29udGFpbmVyLmRhdGEsaXNQb2ludGVyT3ZlckNvbnRhaW5lcjpyLmlzUG9p'@; put 'bnRlck92ZXJDb250YWluZXIsaXRlbTp0aGlzLGRpc3RhbmNlOnIuZGlzdGFuY2UsZHJvcFBvaW50OnIuZHJvcFBvaW50LGV2ZW50OnIuZXZlbnR9KX0pfV9hc3NpZ25EZWZhdWx0cyh0KXtjb25zdHtsb2NrQXhpczpyLGRyYWdTdGFydERlbGF5OmksY29uc3RyYWluUG9zaXRpb246byxwcmV2'@; put 'aWV3Q2xhc3M6YSxib3VuZGFyeUVsZW1lbnQ6bCxkcmFnZ2luZ0Rpc2FibGVkOnUscm9vdEVsZW1lbnRTZWxlY3RvcjpnLHByZXZpZXdDb250YWluZXI6RX09dDt0aGlzLmRpc2FibGVkPXU/PyExLHRoaXMuZHJhZ1N0YXJ0RGVsYXk9aXx8MCx0aGlzLmxvY2tBeGlzPXJ8fG51bGwsbyYmKHRo'@; put 'aXMuY29uc3RyYWluUG9zaXRpb249byksYSYmKHRoaXMucHJldmlld0NsYXNzPWEpLGwmJih0aGlzLmJvdW5kYXJ5RWxlbWVudD1sKSxnJiYodGhpcy5yb290RWxlbWVudFNlbGVjdG9yPWcpLEUmJih0aGlzLnByZXZpZXdDb250YWluZXI9RSl9X3NldHVwSGFuZGxlc0xpc3RlbmVyKCl7dGhp'@; put 'cy5faGFuZGxlcy5waXBlKGYxKHQ9Pntjb25zdCByPXQubWFwKGk9PmkuZWxlbWVudCk7dGhpcy5fc2VsZkhhbmRsZSYmdGhpcy5yb290RWxlbWVudFNlbGVjdG9yJiZyLnB1c2godGhpcy5lbGVtZW50KSx0aGlzLl9kcmFnUmVmLndpdGhIYW5kbGVzKHIpfSksbTAodD0+aEQoLi4udC5tYXAo'@; put 'cj0+ci5fc3RhdGVDaGFuZ2VzLnBpcGUocWcocikpKSkpLHYwKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSh0PT57Y29uc3Qgcj10aGlzLl9kcmFnUmVmLGk9dC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7dC5kaXNhYmxlZD9yLmRpc2FibGVIYW5kbGUoaSk6ci5lbmFibGVIYW5kbGUoaSl9'@; put 'KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2RrRHJhZyIsIiJdXSxob3N0QXR0cnM6WzEsImNkay1kcmFnIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24o'@; put 'cixpKXsyJnImJndyKCJjZGstZHJhZy1kaXNhYmxlZCIsaS5kaXNhYmxlZCkoImNkay1kcmFnLWRyYWdnaW5nIixpLl9kcmFnUmVmLmlzRHJhZ2dpbmcoKSl9LGlucHV0czp7ZGF0YTpbMCwiY2RrRHJhZ0RhdGEiLCJkYXRhIl0sbG9ja0F4aXM6WzAsImNka0RyYWdMb2NrQXhpcyIsImxvY2tB'@; put 'eGlzIl0scm9vdEVsZW1lbnRTZWxlY3RvcjpbMCwiY2RrRHJhZ1Jvb3RFbGVtZW50Iiwicm9vdEVsZW1lbnRTZWxlY3RvciJdLGJvdW5kYXJ5RWxlbWVudDpbMCwiY2RrRHJhZ0JvdW5kYXJ5IiwiYm91bmRhcnlFbGVtZW50Il0sZHJhZ1N0YXJ0RGVsYXk6WzAsImNka0RyYWdTdGFydERlbGF5'@; put 'IiwiZHJhZ1N0YXJ0RGVsYXkiXSxmcmVlRHJhZ1Bvc2l0aW9uOlswLCJjZGtEcmFnRnJlZURyYWdQb3NpdGlvbiIsImZyZWVEcmFnUG9zaXRpb24iXSxkaXNhYmxlZDpbMiwiY2RrRHJhZ0Rpc2FibGVkIiwiZGlzYWJsZWQiLFowXSxjb25zdHJhaW5Qb3NpdGlvbjpbMCwiY2RrRHJhZ0NvbnN0'@; put 'cmFpblBvc2l0aW9uIiwiY29uc3RyYWluUG9zaXRpb24iXSxwcmV2aWV3Q2xhc3M6WzAsImNka0RyYWdQcmV2aWV3Q2xhc3MiLCJwcmV2aWV3Q2xhc3MiXSxwcmV2aWV3Q29udGFpbmVyOlswLCJjZGtEcmFnUHJldmlld0NvbnRhaW5lciIsInByZXZpZXdDb250YWluZXIiXSxzY2FsZTpbMiwi'@; put 'Y2RrRHJhZ1NjYWxlIiwic2NhbGUiLE1pdF19LG91dHB1dHM6e3N0YXJ0ZWQ6ImNka0RyYWdTdGFydGVkIixyZWxlYXNlZDoiY2RrRHJhZ1JlbGVhc2VkIixlbmRlZDoiY2RrRHJhZ0VuZGVkIixlbnRlcmVkOiJjZGtEcmFnRW50ZXJlZCIsZXhpdGVkOiJjZGtEcmFnRXhpdGVkIixkcm9wcGVk'@; put 'OiJjZGtEcmFnRHJvcHBlZCIsbW92ZWQ6ImNka0RyYWdNb3ZlZCJ9LGV4cG9ydEFzOlsiY2RrRHJhZyJdLGZlYXR1cmVzOltibyhbe3Byb3ZpZGU6U0QsdXNlRXhpc3Rpbmc6bn1dKSxpdV19KX1yZXR1cm4gbn0pKCk7Y29uc3QgUG9lPW5ldyBFcigiQ2RrRHJvcExpc3RHcm91cCIpO2xldCB3'@; put 'RWU9KCgpPT57Y2xhc3MgbntfaXRlbXM9bmV3IFNldDtkaXNhYmxlZD0hMTtuZ09uRGVzdHJveSgpe3RoaXMuX2l0ZW1zLmNsZWFyKCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltb'@; put 'IiIsImNka0Ryb3BMaXN0R3JvdXAiLCIiXV0saW5wdXRzOntkaXNhYmxlZDpbMiwiY2RrRHJvcExpc3RHcm91cERpc2FibGVkIiwiZGlzYWJsZWQiLFowXX0sZXhwb3J0QXM6WyJjZGtEcm9wTGlzdEdyb3VwIl0sZmVhdHVyZXM6W2JvKFt7cHJvdmlkZTpQb2UsdXNlRXhpc3Rpbmc6bn1dKV19'@; put 'KX1yZXR1cm4gbn0pKCksQ0VlPSgoKT0+e2NsYXNzIG57ZWxlbWVudD1zbihubyk7X2NoYW5nZURldGVjdG9yUmVmPXNuKFVsKTtfc2Nyb2xsRGlzcGF0Y2hlcj1zbihOeik7X2Rpcj1zbihpTSx7b3B0aW9uYWw6ITB9KTtfZ3JvdXA9c24oUG9lLHtvcHRpb25hbDohMCxza2lwU2VsZjohMH0p'@; put 'O19sYXRlc3RTb3J0ZWRSZWZzO19kZXN0cm95ZWQ9bmV3IE1yO19zY3JvbGxhYmxlUGFyZW50c1Jlc29sdmVkO3N0YXRpYyBfZHJvcExpc3RzPVtdO19kcm9wTGlzdFJlZjtjb25uZWN0ZWRUbz1bXTtkYXRhO29yaWVudGF0aW9uO2lkPXNuKG40dCkuZ2V0SWQoImNkay1kcm9wLWxpc3QtIik7'@; put 'bG9ja0F4aXM9bnVsbDtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fCEhdGhpcy5fZ3JvdXAmJnRoaXMuX2dyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kcm9wTGlzdFJlZi5kaXNhYmxlZD10aGlzLl9kaXNhYmxlZD10fV9kaXNhYmxlZDtzb3J0aW5n'@; put 'RGlzYWJsZWQ7ZW50ZXJQcmVkaWNhdGU9KCk9PiEwO3NvcnRQcmVkaWNhdGU9KCk9PiEwO2F1dG9TY3JvbGxEaXNhYmxlZDthdXRvU2Nyb2xsU3RlcDtlbGVtZW50Q29udGFpbmVyU2VsZWN0b3I7aGFzQW5jaG9yO2Ryb3BwZWQ9bmV3IEtyO2VudGVyZWQ9bmV3IEtyO2V4aXRlZD1uZXcgS3I7'@; put 'c29ydGVkPW5ldyBLcjtfdW5zb3J0ZWRJdGVtcz1uZXcgU2V0O2NvbnN0cnVjdG9yKCl7Y29uc3QgdD1zbihWeikscj1zbihPb2Use29wdGlvbmFsOiEwfSk7dGhpcy5fZHJvcExpc3RSZWY9dC5jcmVhdGVEcm9wTGlzdCh0aGlzLmVsZW1lbnQpLHRoaXMuX2Ryb3BMaXN0UmVmLmRhdGE9dGhp'@; put 'cyxyJiZ0aGlzLl9hc3NpZ25EZWZhdWx0cyhyKSx0aGlzLl9kcm9wTGlzdFJlZi5lbnRlclByZWRpY2F0ZT0oaSxvKT0+dGhpcy5lbnRlclByZWRpY2F0ZShpLmRhdGEsby5kYXRhKSx0aGlzLl9kcm9wTGlzdFJlZi5zb3J0UHJlZGljYXRlPShpLG8sYSk9PnRoaXMuc29ydFByZWRpY2F0ZShp'@; put 'LG8uZGF0YSxhLmRhdGEpLHRoaXMuX3NldHVwSW5wdXRTeW5jU3Vic2NyaXB0aW9uKHRoaXMuX2Ryb3BMaXN0UmVmKSx0aGlzLl9oYW5kbGVFdmVudHModGhpcy5fZHJvcExpc3RSZWYpLG4uX2Ryb3BMaXN0cy5wdXNoKHRoaXMpLHRoaXMuX2dyb3VwJiZ0aGlzLl9ncm91cC5faXRlbXMuYWRk'@; put 'KHRoaXMpfWFkZEl0ZW0odCl7dGhpcy5fdW5zb3J0ZWRJdGVtcy5hZGQodCksdC5fZHJhZ1JlZi5fd2l0aERyb3BDb250YWluZXIodGhpcy5fZHJvcExpc3RSZWYpLHRoaXMuX2Ryb3BMaXN0UmVmLmlzRHJhZ2dpbmcoKSYmdGhpcy5fc3luY0l0ZW1zV2l0aFJlZih0aGlzLmdldFNvcnRlZEl0'@; put 'ZW1zKCkubWFwKHI9PnIuX2RyYWdSZWYpKX1yZW1vdmVJdGVtKHQpe2lmKHRoaXMuX3Vuc29ydGVkSXRlbXMuZGVsZXRlKHQpLHRoaXMuX2xhdGVzdFNvcnRlZFJlZnMpe2NvbnN0IHI9dGhpcy5fbGF0ZXN0U29ydGVkUmVmcy5pbmRleE9mKHQuX2RyYWdSZWYpO3I+LTEmJih0aGlzLl9sYXRl'@; put 'c3RTb3J0ZWRSZWZzLnNwbGljZShyLDEpLHRoaXMuX3N5bmNJdGVtc1dpdGhSZWYodGhpcy5fbGF0ZXN0U29ydGVkUmVmcykpfX1nZXRTb3J0ZWRJdGVtcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX3Vuc29ydGVkSXRlbXMpLnNvcnQoKHQscik9PnQuX2RyYWdSZWYuZ2V0VmlzaWJsZUVs'@; put 'ZW1lbnQoKS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihyLl9kcmFnUmVmLmdldFZpc2libGVFbGVtZW50KCkpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HPy0xOjEpfW5nT25EZXN0cm95KCl7Y29uc3QgdD1uLl9kcm9wTGlzdHMuaW5kZXhPZih0aGlzKTt0Pi0xJiZuLl9kcm9w'@; put 'TGlzdHMuc3BsaWNlKHQsMSksdGhpcy5fZ3JvdXAmJnRoaXMuX2dyb3VwLl9pdGVtcy5kZWxldGUodGhpcyksdGhpcy5fbGF0ZXN0U29ydGVkUmVmcz12b2lkIDAsdGhpcy5fdW5zb3J0ZWRJdGVtcy5jbGVhcigpLHRoaXMuX2Ryb3BMaXN0UmVmLmRpc3Bvc2UoKSx0aGlzLl9kZXN0cm95ZWQu'@; put 'bmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9zZXR1cElucHV0U3luY1N1YnNjcmlwdGlvbih0KXt0aGlzLl9kaXImJnRoaXMuX2Rpci5jaGFuZ2UucGlwZShxZyh0aGlzLl9kaXIudmFsdWUpLHYwKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZShyPT50LndpdGhEaXJlY3Rp'@; put 'b24ocikpLHQuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCk9Pntjb25zdCByPWZ1bmN0aW9uIHI0dChuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uOltuXX0odGhpcy5jb25uZWN0ZWRUbykubWFwKGk9PiJzdHJpbmciPT10eXBlb2YgaT9uLl9kcm9wTGlzdHMuZmluZChhPT5hLmlkPT09'@; put 'aSk6aSk7aWYodGhpcy5fZ3JvdXAmJnRoaXMuX2dyb3VwLl9pdGVtcy5mb3JFYWNoKGk9PnstMT09PXIuaW5kZXhPZihpKSYmci5wdXNoKGkpfSksIXRoaXMuX3Njcm9sbGFibGVQYXJlbnRzUmVzb2x2ZWQpe2NvbnN0IGk9dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5nZXRBbmNlc3RvclNjcm9s'@; put 'bENvbnRhaW5lcnModGhpcy5lbGVtZW50KS5tYXAobz0+by5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudCk7dGhpcy5fZHJvcExpc3RSZWYud2l0aFNjcm9sbGFibGVQYXJlbnRzKGkpLHRoaXMuX3Njcm9sbGFibGVQYXJlbnRzUmVzb2x2ZWQ9ITB9aWYodGhpcy5lbGVtZW50Q29udGFp'@; put 'bmVyU2VsZWN0b3Ipe2NvbnN0IGk9dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmVsZW1lbnRDb250YWluZXJTZWxlY3Rvcik7dC53aXRoRWxlbWVudENvbnRhaW5lcihpKX10LmRpc2FibGVkPXRoaXMuZGlzYWJsZWQsdC5sb2NrQXhpcz10aGlzLmxvY2tB'@; put 'eGlzLHQuc29ydGluZ0Rpc2FibGVkPXRoaXMuc29ydGluZ0Rpc2FibGVkLHQuYXV0b1Njcm9sbERpc2FibGVkPXRoaXMuYXV0b1Njcm9sbERpc2FibGVkLHQuYXV0b1Njcm9sbFN0ZXA9RmIodGhpcy5hdXRvU2Nyb2xsU3RlcCwyKSx0Lmhhc0FuY2hvcj10aGlzLmhhc0FuY2hvcix0LmNvbm5l'@; put 'Y3RlZFRvKHIuZmlsdGVyKGk9PmkmJmkhPT10aGlzKS5tYXAoaT0+aS5fZHJvcExpc3RSZWYpKS53aXRoT3JpZW50YXRpb24odGhpcy5vcmllbnRhdGlvbil9KX1faGFuZGxlRXZlbnRzKHQpe3QuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9zeW5jSXRlbXNXaXRoUmVmKHRo'@; put 'aXMuZ2V0U29ydGVkSXRlbXMoKS5tYXAocj0+ci5fZHJhZ1JlZikpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSksdC5lbnRlcmVkLnN1YnNjcmliZShyPT57dGhpcy5lbnRlcmVkLmVtaXQoe2NvbnRhaW5lcjp0aGlzLGl0ZW06ci5pdGVtLmRhdGEsY3VycmVudElu'@; put 'ZGV4OnIuY3VycmVudEluZGV4fSl9KSx0LmV4aXRlZC5zdWJzY3JpYmUocj0+e3RoaXMuZXhpdGVkLmVtaXQoe2NvbnRhaW5lcjp0aGlzLGl0ZW06ci5pdGVtLmRhdGF9KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLHQuc29ydGVkLnN1YnNjcmliZShyPT57dGhp'@; put 'cy5zb3J0ZWQuZW1pdCh7cHJldmlvdXNJbmRleDpyLnByZXZpb3VzSW5kZXgsY3VycmVudEluZGV4OnIuY3VycmVudEluZGV4LGNvbnRhaW5lcjp0aGlzLGl0ZW06ci5pdGVtLmRhdGF9KX0pLHQuZHJvcHBlZC5zdWJzY3JpYmUocj0+e3RoaXMuZHJvcHBlZC5lbWl0KHtwcmV2aW91c0luZGV4'@; put 'OnIucHJldmlvdXNJbmRleCxjdXJyZW50SW5kZXg6ci5jdXJyZW50SW5kZXgscHJldmlvdXNDb250YWluZXI6ci5wcmV2aW91c0NvbnRhaW5lci5kYXRhLGNvbnRhaW5lcjpyLmNvbnRhaW5lci5kYXRhLGl0ZW06ci5pdGVtLmRhdGEsaXNQb2ludGVyT3ZlckNvbnRhaW5lcjpyLmlzUG9pbnRl'@; put 'ck92ZXJDb250YWluZXIsZGlzdGFuY2U6ci5kaXN0YW5jZSxkcm9wUG9pbnQ6ci5kcm9wUG9pbnQsZXZlbnQ6ci5ldmVudH0pLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSksaEQodC5yZWNlaXZpbmdTdGFydGVkLHQucmVjZWl2aW5nU3RvcHBlZCkuc3Vic2NyaWJl'@; put 'KCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X2Fzc2lnbkRlZmF1bHRzKHQpe2NvbnN0e2xvY2tBeGlzOnIsZHJhZ2dpbmdEaXNhYmxlZDppLHNvcnRpbmdEaXNhYmxlZDpvLGxpc3RBdXRvU2Nyb2xsRGlzYWJsZWQ6YSxsaXN0T3JpZW50YXRpb246bH09dDt0'@; put 'aGlzLmRpc2FibGVkPWk/PyExLHRoaXMuc29ydGluZ0Rpc2FibGVkPW8/PyExLHRoaXMuYXV0b1Njcm9sbERpc2FibGVkPWE/PyExLHRoaXMub3JpZW50YXRpb249bHx8InZlcnRpY2FsIix0aGlzLmxvY2tBeGlzPXJ8fG51bGx9X3N5bmNJdGVtc1dpdGhSZWYodCl7dGhpcy5fbGF0ZXN0U29y'@; put 'dGVkUmVmcz10LHRoaXMuX2Ryb3BMaXN0UmVmLndpdGhJdGVtcyh0KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2RrRHJvcExpc3QiLCIiXSxbImNkay1kcm9wLWxpc3Qi'@; put 'XV0saG9zdEF0dHJzOlsxLCJjZGstZHJvcC1saXN0Il0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24ocixpKXsyJnImJihScigiaWQiLGkuaWQpLHdyKCJjZGstZHJvcC1saXN0LWRpc2FibGVkIixpLmRpc2FibGVkKSgiY2RrLWRyb3AtbGlzdC1kcmFnZ2luZyIsaS5fZHJvcExp'@; put 'c3RSZWYuaXNEcmFnZ2luZygpKSgiY2RrLWRyb3AtbGlzdC1yZWNlaXZpbmciLGkuX2Ryb3BMaXN0UmVmLmlzUmVjZWl2aW5nKCkpKX0saW5wdXRzOntjb25uZWN0ZWRUbzpbMCwiY2RrRHJvcExpc3RDb25uZWN0ZWRUbyIsImNvbm5lY3RlZFRvIl0sZGF0YTpbMCwiY2RrRHJvcExpc3REYXRh'@; put 'IiwiZGF0YSJdLG9yaWVudGF0aW9uOlswLCJjZGtEcm9wTGlzdE9yaWVudGF0aW9uIiwib3JpZW50YXRpb24iXSxpZDoiaWQiLGxvY2tBeGlzOlswLCJjZGtEcm9wTGlzdExvY2tBeGlzIiwibG9ja0F4aXMiXSxkaXNhYmxlZDpbMiwiY2RrRHJvcExpc3REaXNhYmxlZCIsImRpc2FibGVkIixa'@; put 'MF0sc29ydGluZ0Rpc2FibGVkOlsyLCJjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZCIsInNvcnRpbmdEaXNhYmxlZCIsWjBdLGVudGVyUHJlZGljYXRlOlswLCJjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlIiwiZW50ZXJQcmVkaWNhdGUiXSxzb3J0UHJlZGljYXRlOlswLCJjZGtEcm9wTGlz'@; put 'dFNvcnRQcmVkaWNhdGUiLCJzb3J0UHJlZGljYXRlIl0sYXV0b1Njcm9sbERpc2FibGVkOlsyLCJjZGtEcm9wTGlzdEF1dG9TY3JvbGxEaXNhYmxlZCIsImF1dG9TY3JvbGxEaXNhYmxlZCIsWjBdLGF1dG9TY3JvbGxTdGVwOlswLCJjZGtEcm9wTGlzdEF1dG9TY3JvbGxTdGVwIiwiYXV0b1Nj'@; put 'cm9sbFN0ZXAiXSxlbGVtZW50Q29udGFpbmVyU2VsZWN0b3I6WzAsImNka0Ryb3BMaXN0RWxlbWVudENvbnRhaW5lciIsImVsZW1lbnRDb250YWluZXJTZWxlY3RvciJdLGhhc0FuY2hvcjpbMiwiY2RrRHJvcExpc3RIYXNBbmNob3IiLCJoYXNBbmNob3IiLFowXX0sb3V0cHV0czp7ZHJvcHBl'@; put 'ZDoiY2RrRHJvcExpc3REcm9wcGVkIixlbnRlcmVkOiJjZGtEcm9wTGlzdEVudGVyZWQiLGV4aXRlZDoiY2RrRHJvcExpc3RFeGl0ZWQiLHNvcnRlZDoiY2RrRHJvcExpc3RTb3J0ZWQifSxleHBvcnRBczpbImNka0Ryb3BMaXN0Il0sZmVhdHVyZXM6W2JvKFt7cHJvdmlkZTpQb2UsdXNlVmFs'@; put 'dWU6dm9pZCAwfSx7cHJvdmlkZTpOb2UsdXNlRXhpc3Rpbmc6bn1dKV19KX1yZXR1cm4gbn0pKCksU0VlPSgoKT0+e2NsYXNzIG57c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1bW9kPUdpKHt0eXBlOm59KTtzdGF0aWMgXHUwMjc1'@; put 'aW5qPW1pKHtwcm92aWRlcnM6W1Z6XSxpbXBvcnRzOlt0NHRdfSl9cmV0dXJuIG59KSgpO2NvbnN0IGVzPVsiKiJdLEU0dD1bW1siY2xyLWFjY29yZGlvbi10aXRsZSJdLFsiY2xyLXN0ZXAtdGl0bGUiXV0sW1siY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiJdLFsiY2xyLXN0ZXAtZGVzY3Jp'@; put 'cHRpb24iXV0sIioiXSxNNHQ9WyJjbHItYWNjb3JkaW9uLXRpdGxlLCBjbHItc3RlcC10aXRsZSIsImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24sIGNsci1zdGVwLWRlc2NyaXB0aW9uIiwiKiJdO2Z1bmN0aW9uIFQ0dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw5KSx3'@; put 'dCgiQHRvZ2dsZS5kb25lIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkuY29sbGFwc2VQYW5lbE9uQW5pbWF0aW9uRG9uZShpKSl9KSxKKDEsImRpdiIsMTApLFdyKDIsMiksdGUoKSgpfTImbiYmcnQoIkB0b2dnbGUiLHZvaWQgMCl9ZnVu'@; put 'Y3Rpb24geDR0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7bWwoMCksSigxLCJkaXYiLDIpKDIsImRpdiIsMykoMywiYnV0dG9uIiw0LDApLEFjKDUsImFzeW5jIiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnRvZ2dsZVBhbmVsKCkpfSksSig2LCJzcGFu'@; put 'Iiw1KSxJdCg3LCJjZHMtaWNvbiIsNiksdGUoKSxXcig4KSxXcig5LDEpLHRlKCkoKSxKKDEwLCJkaXYiLDcpLFluKDExLFQ0dCwzLDEsImRpdiIsOCksdGUoKSgpLHJsKCl9aWYoMiZuKXtsZXQgdDtjb25zdCByPWUuJGltcGxpY2l0LGk9VGUoKTtpZSgpLHJ0KCJuZ0NsYXNzIixpLmdldFBh'@; put 'bmVsU3RhdGVDbGFzc2VzKHIpKSxpZSgpLFJyKCJyb2xlIixpLmhlYWRpbmdFbmFibGVkfHxpLmV4cGxpY2l0SGVhZGluZ0xldmVsPyJoZWFkaW5nIjpudWxsKSgiYXJpYS1sZXZlbCIsaS5oZWFkaW5nRW5hYmxlZHx8aS5leHBsaWNpdEhlYWRpbmdMZXZlbD9pLmhlYWRpbmdMZXZlbDpudWxs'@; put 'KSxpZSgpLHdyKCJjbHItYWNjb3JkaW9uLWhlYWRlci1oYXMtZGVzY3JpcHRpb24iLChudWxsPT0odD1UZCg1LDE0LGkuYWNjb3JkaW9uRGVzY3JpcHRpb24uY2hhbmdlcykpP251bGw6dC5sZW5ndGgpfHxpLmFjY29yZGlvbkRlc2NyaXB0aW9uLmxlbmd0aCkscnQoImlkIixpLmdldEFjY29y'@; put 'ZGlvbkhlYWRlcklkKHIudGVtcGxhdGVJZCkpKCJkaXNhYmxlZCIsci5kaXNhYmxlZCksUnIoImFyaWEtY29udHJvbHMiLCFyLmRpc2FibGVkJiZyLm9wZW4/aS5nZXRBY2NvcmRpb25Db250ZW50SWQoci50ZW1wbGF0ZUlkKTpudWxsKSgiYXJpYS1leHBhbmRlZCIsci5vcGVuKSxpZSg3KSxy'@; put 'dCgiQHNraXBJbml0aWFsUmVuZGVyIix2b2lkIDApKCJpZCIsaS5nZXRBY2NvcmRpb25Db250ZW50SWQoci50ZW1wbGF0ZUlkKSksUnIoImFyaWEtaGlkZGVuIiwhci5vcGVuKSgiYXJpYS1sYWJlbGxlZGJ5IixpLmdldEFjY29yZGlvbkhlYWRlcklkKHIudGVtcGxhdGVJZCkpLGllKCkscnQo'@; put 'Im5nSWYiLHIub3Blbil9fWNvbnN0IHE0dD1bImNsckxvYWRpbmciLCIiXTtmdW5jdGlvbiBLNHQobixlKXsxJm4mJihtbCgwKSxJdCgxLCJzcGFuIiwzKSxybCgpKSwyJm4mJihpZSgpLHJ0KCJAc3Bpbm5lciIsdm9pZCAwKSl9ZnVuY3Rpb24gWDR0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXdu'@; put 'KCk7bWwoMCksSigxLCJzcGFuIiw0KSx3dCgiQHZhbGlkYXRlZC5kb25lIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5sb2FkaW5nU3RhdGVDaGFuZ2UoaS5idXR0b25TdGF0ZS5ERUZBVUxUKSl9KSx0ZSgpLHJsKCl9MiZuJiYoaWUoKSxydCgiQHZhbGlkYXRl'@; put 'ZCIsdm9pZCAwKSl9ZnVuY3Rpb24gUTR0KG4sZSl7MSZuJiYoSigwLCJzcGFuIiw1KSxXcigxKSx0ZSgpKSwyJm4mJnJ0KCJAZGVmYXVsdEJ1dHRvbiIsdm9pZCAwKX1mdW5jdGlvbiBKNHQobixlKXtpZigxJm4mJihtbCgwKSxKKDEsImJ1dHRvbiIsMSksSXQoMiwiY2RzLWljb24iLDIpLHRl'@; put 'KCkscmwoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxScigiYXJpYS1sYWJlbCIsdC5zaWducG9zdFRyaWdnZXJBcmlhTGFiZWx8fHQuY29tbW9uU3RyaW5ncy5rZXlzLnNpZ25wb3N0VG9nZ2xlKSxpZSgpLFJyKCJ0aXRsZSIsdC5jb21tb25TdHJpbmdzLmtleXMuaW5mbyl9fWNvbnN0IGU1'@; put 'dD1bW1siY2xyLXNpZ25wb3N0LXRpdGxlIl1dLCIqIl0sdDV0PVsiY2xyLXNpZ25wb3N0LXRpdGxlIiwiKiJdLG41dD1bW1siIiwiY2xyQ2hlY2tib3giLCIiXSxbIiIsImNsclRvZ2dsZSIsIiJdXSxbWyJsYWJlbCJdXV0scjV0PVsiW2NsckNoZWNrYm94XSxbY2xyVG9nZ2xlXSIsImxhYmVs'@; put 'Il07ZnVuY3Rpb24gaTV0KG4sZSl7MSZuJiZJdCgwLCJsYWJlbCIpfWNvbnN0IG81dD1bW1sibGFiZWwiXV0sW1siY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1si'@; put 'Y2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sYTV0PVsibGFiZWwiLCJjbHItY2hlY2tib3gtd3JhcHBlcixjbHItdG9nZ2xlLXdyYXBwZXIiLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiBzNXQobixlKXsxJm4m'@; put 'Jkl0KDAsImxhYmVsIil9ZnVuY3Rpb24gbDV0KG4sZSl7MSZuJiYoSigwLCJkaXYiLDMpLFdyKDEsMiksdGUoKSl9ZnVuY3Rpb24gYzV0KG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gdTV0KG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsNyl9ZnVuY3Rpb24gZDV0KG4s'@; put 'ZSl7MSZuJiZXcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIGg1dChuLGUpezEmbiYmV3IoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9ZnVuY3Rpb24gZjV0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDMpLFluKDEsYzV0LDEsMCwiY2RzLWljb24iLDQpKDIsdTV0'@; put 'LDEsMCwiY2RzLWljb24iLDUpKDMsZDV0LDEsMCwibmctY29udGVudCIsMCkoNCxoNXQsMSwwLCJuZy1jb250ZW50IiwwKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJuZ0lmIix0LnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIix0LnNob3dWYWxpZCksaWUoKSxydCgibmdJ'@; put 'ZiIsdC5zaG93SW52YWxpZCksaWUoKSxydCgibmdJZiIsdC5zaG93VmFsaWQpfX1jb25zdCBwNXQ9WyJjbHJLZXlGb2N1cyIsIiJdLHk1dD1bW1sibGFiZWwiXV0sW1siIiwiY2xySW5wdXRQcmVmaXgiLCIiXV0sW1siIiwiY2xySW5wdXQiLCIiXV0sW1siIiwiY2xySW5wdXRTdWZmaXgiLCIi'@; put 'XV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLGI1dD1bImxhYmVsIiwiW2NscklucHV0UHJlZml4XSIsIltjbHJJbnB1dF0iLCJbY2xySW5wdXRTdWZmaXhdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwi'@; put 'Y2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gdzV0KG4sZSl7MSZuJiZJdCgwLCJsYWJlbCIpfWZ1bmN0aW9uIEM1dChuLGUpezEmbiYmSXQoMCwiY2RzLWljb24iLDYpfWZ1bmN0aW9uIFM1dChuLGUpezEmbiYmSXQoMCwiY2RzLWljb24iLDcpfWZ1'@; put 'bmN0aW9uIEU1dChuLGUpezEmbiYmV3IoMCw0LFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIE01dChuLGUpezEmbiYmV3IoMCw1LFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiBUNXQobixlKXsxJm4mJldyKDAsNixbIipuZ0lmIiwic2hvd1ZhbGlkIl0pfWZ1bmN0'@; put 'aW9uIE41dChuLGUpezEmbiYmV3IoMCl9Y29uc3QgRjV0PVsidGFiQ29udGVudFByb2plY3RlZFJlZiJdO2Z1bmN0aW9uIFA1dChuLGUpe2lmKDEmbiYmKEooMCwic2VjdGlvbiIsMSksV3IoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7d3IoImFjdGl2ZSIsdC5hY3RpdmUpLHJ0KCJpZCIs'@; put 'dC50YWJDb250ZW50SWQpKCJoaWRkZW4iLCF0LmFjdGl2ZSksUnIoImFyaWEtbGFiZWxsZWRieSIsdC5hcmlhTGFiZWxsZWRCeSkoImFyaWEtaGlkZGVuIiwhdC5hY3RpdmUpfX1jb25zdCBINXQ9WyJ0YWJDb250ZW50Vmlld0NvbnRhaW5lciJdLFY1dD1bW1siY2xyLXRhYnMtYWN0aW9ucyJd'@; put 'XV0sQjV0PVsiY2xyLXRhYnMtYWN0aW9ucyJdO2Z1bmN0aW9uIGo1dChuLGUpe2lmKDEmbiYmKG1sKDApLEooMSwibGkiLDUpLGF1KDIsNiksdGUoKSxybCgpKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW1wbGljaXQ7aWUoMikscnQoIm5nVGVtcGxhdGVPdXRsZXQiLHQudGVtcGxhdGVSZWZDb250'@; put 'YWluZXIudGVtcGxhdGUpfX1mdW5jdGlvbiBVNXQobixlKXtpZigxJm4mJihtbCgwKSxZbigxLGo1dCwzLDEsIm5nLWNvbnRhaW5lciIsNCkscmwoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoKTtpZSgpLHJ0KCJuZ0lmIix0LnRhYnNJZD09PXIudGFic0lkJiYhdC5pbk92ZXJm'@; put 'bG93KX19ZnVuY3Rpb24gejV0KG4sZSl7MSZuJiZhdSgwLDYpLDImbiYmcnQoIm5nVGVtcGxhdGVPdXRsZXQiLFRlKCkuJGltcGxpY2l0LnRlbXBsYXRlUmVmQ29udGFpbmVyLnRlbXBsYXRlKX1mdW5jdGlvbiBXNXQobixlKXtpZigxJm4mJihtbCgwKSxZbigxLHo1dCwxLDEsIm5nLWNvbnRh'@; put 'aW5lciIsMTMpLHJsKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKDMpO2llKCkscnQoIm5nSWYiLHQudGFic0lkPT09ci50YWJzSWQmJnQuaW5PdmVyZmxvdyl9fWZ1bmN0aW9uIFk1dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRhYi1vdmVyZmxvdy1jb250'@; put 'ZW50IiwxMiksd3QoImtleWRvd24uZXNjYXBlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5jbG9zZU9uRXNjYXBlS2V5KCkpfSxQOCkoImNsaWNrIixmdW5jdGlvbihpKXtZZSh0KSxUZSgpO2NvbnN0IG89b28oNCk7cmV0dXJuIFhlKFRlKCkuY2xvc2VPbk91dHNpZGVDbGlj'@; put 'ayhpLG8pKX0sUDgpKCJmb2N1c291dCIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLmNsb3NlT25Gb2N1c091dChpKSl9KSxZbigxLFc1dCwyLDEsIm5nLWNvbnRhaW5lciIsMyksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7aWUoKSxydCgibmdGb3JPZiIsdC50YWJMaW5r'@; put 'RGlyZWN0aXZlcyl9fWZ1bmN0aW9uIFo1dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO21sKDApLEooMSwiZGl2Iiw3KSgyLCJsaSIsOCkoMywiYnV0dG9uIiw5LDEpLHd0KCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuX21vdXNlZG93bj0hMCl9KSgiZm9j'@; put 'dXMiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkub3Blbk92ZXJmbG93T25Gb2N1cygpKX0pKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS50b2dnbGVPdmVyZmxvd09uQ2xpY2soKSl9KSxJdCg1LCJjZHMtaWNvbiIsMTApLHRlKCkoKSxZbig2LFk1dCwy'@; put 'LDEsImNsci10YWItb3ZlcmZsb3ctY29udGVudCIsMTEpLHRlKCkscmwoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHdyKCJvcGVuIix0LnRvZ2dsZVNlcnZpY2Uub3BlbiksaWUoMiksd3IoImFjdGl2ZSIsdC5hY3RpdmVUYWJJbk92ZXJmbG93KSgib3BlbiIsdC50b2dnbGVTZXJ2aWNl'@; put 'Lm9wZW4pLFJyKCJ0YWJpbmRleCIsdC5hY3RpdmVUYWJJbk92ZXJmbG93JiYhdC50b2dnbGVTZXJ2aWNlLm9wZW4/MDotMSkoInRpdGxlIix0LmNvbW1vblN0cmluZ3Mua2V5cy5tb3JlKSxpZSgyKSxScigic3RhdHVzIix0LnRvZ2dsZVNlcnZpY2Uub3Blbj8iaW5mbyI6bnVsbCkoInRpdGxl'@; put 'Iix0LmNvbW1vblN0cmluZ3Mua2V5cy5tb3JlKSxpZSgpLHJ0KCJuZ0lmIix0LnRvZ2dsZVNlcnZpY2Uub3Blbil9fWZ1bmN0aW9uIEc1dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiwzKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCku'@; put 'dG9nZ2xlQnlCdXR0b24oKSl9KSxJdCgxLCJjZHMtaWNvbiIsNCksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTt3cigib24tY29sbGFwc2UiLHQuY29sbGFwc2VkKSxScigiYXJpYS1jb250cm9scyIsdC5jb250ZW50SWQpKCJhcmlhLWV4cGFuZGVkIix0LmFyaWFFeHBhbmRlZCkoImFyaWEt'@; put 'bGFiZWwiLHQudG9nZ2xlTGFiZWx8fHQuY29tbW9uU3RyaW5ncy5rZXlzLnZlcnRpY2FsTmF2VG9nZ2xlKSxpZSgpLFJyKCJkaXJlY3Rpb24iLHQuY29sbGFwc2VkPyJyaWdodCI6ImxlZnQiKX19ZnVuY3Rpb24gJDV0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDUp'@; put 'LHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5jb2xsYXBzZWQ9ITEpfSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtScigiYXJpYS1jb250cm9scyIsdC5jb250ZW50SWQpKCJhcmlhLWxhYmVsIix0LnRvZ2dsZUxhYmVsfHx0LmNvbW1vblN0cmluZ3Mua2V5'@; put 'cy52ZXJ0aWNhbE5hdlRvZ2dsZSl9fWNvbnN0IFg1dD1bImNsclZlcnRpY2FsTmF2TGluayIsIiJdLFE1dD1bW1siIiwiY2xyVmVydGljYWxOYXZJY29uIiwiIl1dLCIqIl0sSjV0PVsiW2NsclZlcnRpY2FsTmF2SWNvbl0iLCIqIl07ZnVuY3Rpb24gZTZ0KG4sZSl7aWYoMSZuJiYoSigwLCJ0'@; put 'aCIsNCkoMSwic3BhbiIpLFNlKDIpLHRlKCkoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKCksUnIoImFyaWEtbGFiZWwiLHQuZGF5KSxpZSgpLHByKHQubmFycm93KX19ZnVuY3Rpb24gdDZ0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJ0ZCIsNykoMSwiY2xyLWRheSIs'@; put 'OCksd3QoInNlbGVjdERheSIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLnNldFNlbGVjdGVkRGF5KGkpKX0pLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7aWUoKSxydCgiY2xyRGF5VmlldyIsdCl9fWZ1bmN0aW9uIG42dChuLGUpe2lmKDEmbiYmKEooMCwi'@; put 'dHIiLDUpLFluKDEsdDZ0LDIsMSwidGQiLDYpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLHJ0KCJuZ0Zvck9mIix0KX19ZnVuY3Rpb24gcjZ0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDEwKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3Qg'@; put 'aT1ZZSh0KS5pbmRleDtyZXR1cm4gWGUoVGUoKS5jaGFuZ2VNb250aChpKSl9KSgibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLmluZGV4O3JldHVybiBYZShUZSgpLm9uSG92ZXIoaSkpfSksU2UoMSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1lLmlu'@; put 'ZGV4LGk9VGUoKTt3cigiaXMtc2VsZWN0ZWQiLGkuaXNTZWxlY3RlZChyKSkoImlzLXN0YXJ0LXJhbmdlIixpLmdldElzUmFuZ2VTdGFydE1vbnRoKHIpKSgiaXMtZW5kLXJhbmdlIixpLmdldElzUmFuZ2VFbmRNb250aChyKSkoImluLXJhbmdlIixpLmlzSW5SYW5nZShyKSkoImlzLXRvZGF5'@; put 'IixpLmNhbGVuZGFyWWVhcj09PWkuY3VycmVudENhbGVuZGFyWWVhciYmcj09PWkuY3VycmVudENhbGVuZGFyTW9udGgpLFJyKCJ0YWJpbmRleCIsaS5nZXRUYWJJbmRleChyKSksaWUoKSxTcigiICIsdCwiICIpfX1mdW5jdGlvbiBpNnQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAs'@; put 'ImJ1dHRvbiIsMTApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS5jaGFuZ2VZZWFyKGkpKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgpLm9uSG92ZXIoaSkp'@; put 'fSksU2UoMSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgpO3dyKCJpcy1zZWxlY3RlZCIsdD09PXIuc2VsZWN0ZWRTdGFydFllYXJ8fHQ9PT1yLnNlbGVjdGVkRW5kWWVhcikoImlzLXN0YXJ0LXJhbmdlIixyLmdldElzUmFuZ2VTdGFydFllYXIodCkpKCJpcy1lbmQt'@; put 'cmFuZ2UiLHIuZ2V0SXNSYW5nZUVuZFllYXIodCkpKCJpbi1yYW5nZSIsci5pc0luUmFuZ2UodCkpKCJpcy10b2RheSIsci5pc0N1cnJlbnRDYWxlbmRhclllYXIodCkpLFJyKCJ0YWJpbmRleCIsci5nZXRUYWJJbmRleCh0KSksaWUoKSxTcigiICIsdCwiICIpfX1mdW5jdGlvbiBvNnQobixl'@; put 'KXtpZigxJm4pe2NvbnN0IHQ9d24oKTttbCgwKSxKKDEsImEiLDYpLHd0KCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMikub25SYW5nZU9wdGlvblNlbGVjdChpKSl9KSgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0'@; put 'KS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKDIpLm9uUmFuZ2VPcHRpb25TZWxlY3QoaSkpfSksU2UoMiksdGUoKSxybCgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLFJyKCJhcmlhLWxhYmVsIixudWxsPT10P251bGw6dC5sYWJlbCksaWUoKSxTcigiICIsdC5sYWJlbCwiICIp'@; put 'fX1mdW5jdGlvbiBhNnQobixlKXsxJm4mJmF1KDApfWZ1bmN0aW9uIHM2dChuLGUpe2lmKDEmbiYmKG1sKDApLEooMSwiY2xyLXZlcnRpY2FsLW5hdiIsMiksWW4oMixvNnQsMywyLCJuZy1jb250YWluZXIiLDMpLHRlKCksSigzLCJkaXYiLDQpLFluKDQsYTZ0LDEsMCwibmctY29udGFpbmVy'@; put 'Iiw1KSx0ZSgpLHJsKCkpLDImbil7Y29uc3QgdD1UZSgpLHI9b28oMik7aWUoMikscnQoIm5nRm9yT2YiLHQuZGF0ZVJhbmdlT3B0aW9ucyksaWUoMikscnQoIm5nVGVtcGxhdGVPdXRsZXQiLHIpfX1mdW5jdGlvbiBsNnQobixlKXsxJm4mJkl0KDAsImNsci1tb250aHBpY2tlciIpfWZ1bmN0'@; put 'aW9uIGM2dChuLGUpezEmbiYmSXQoMCwiY2xyLXllYXJwaWNrZXIiKX1mdW5jdGlvbiB1NnQobixlKXsxJm4mJkl0KDAsImNsci1kYXlwaWNrZXIiKX1mdW5jdGlvbiBkNnQobixlKXsxJm4mJkl0KDAsImNsci1kYXRlcGlja2VyLWFjdGlvbnMiKX1mdW5jdGlvbiBoNnQobixlKXtpZigxJm4m'@; put 'JlluKDAsbDZ0LDEsMCwiY2xyLW1vbnRocGlja2VyIiw3KSgxLGM2dCwxLDAsImNsci15ZWFycGlja2VyIiw3KSgyLHU2dCwxLDAsImNsci1kYXlwaWNrZXIiLDcpKDMsZDZ0LDEsMCwiY2xyLWRhdGVwaWNrZXItYWN0aW9ucyIsNyksMiZuKXtjb25zdCB0PVRlKCk7cnQoIm5nSWYiLHQuaXNN'@; put 'b250aFZpZXcpLGllKCkscnQoIm5nSWYiLHQuaXNZZWFyVmlldyksaWUoKSxydCgibmdJZiIsdC5pc0RheVZpZXcpLGllKCkscnQoIm5nSWYiLHQuaGFzQWN0aW9uQnV0dG9ucyl9fWNvbnN0IGY2dD1bImFjdGlvbkJ1dHRvbiJdLHA2dD1bW1sibGFiZWwiXV0sW1siIiwiY2xyRGF0ZSIsIiJd'@; put 'XSxbWyIiLCJjbHJTdGFydERhdGUiLCIiXV0sW1siIiwiY2xyRW5kRGF0ZSIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sZzZ0PVsibGFiZWwiLCJbY2xyRGF0ZV0iLCJbY2xyU3RhcnREYXRl'@; put 'XSIsIltjbHJFbmREYXRlXSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIG02dChuLGUpezEmbiYmSXQoMCwibGFiZWwiKX1mdW5jdGlvbiB2NnQobixlKXsxJm4mJihtbCgwKSxXcigxLDIpLEooMiwic3Bh'@; put 'biIsOSksU2UoMywiLSIpLHRlKCksV3IoNCwzKSxybCgpKX1mdW5jdGlvbiBfNnQobixlKXsxJm4mJihKKDAsImJ1dHRvbiIsMTAsMCksSXQoMiwiY2RzLWljb24iLDExKSx0ZSgpKSwyJm4mJnJ0KCJkaXNhYmxlZCIsVGUoKS5pc0lucHV0RGF0ZURpc2FibGVkKX1mdW5jdGlvbiB5NnQobixl'@; put 'KXsxJm4mJkl0KDAsImNsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlciIsMTIpfWZ1bmN0aW9uIGI2dChuLGUpezEmbiYmSXQoMCwiY2RzLWljb24iLDEzKX1mdW5jdGlvbiB3NnQobixlKXsxJm4mJkl0KDAsImNkcy1pY29uIiwxNCl9ZnVuY3Rpb24gQzZ0KG4sZSl7MSZuJiZXcigwLDQsWyIq'@; put 'bmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gUzZ0KG4sZSl7MSZuJiZXcigwLDUsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIEU2dChuLGUpezEmbiYmV3IoMCw2LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgQTZ0PVtbWyJsYWJlbCJdXSxbWyIiLCJjbHJOdW1i'@; put 'ZXJJbnB1dCIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sazZ0PVsibGFiZWwiLCJbY2xyTnVtYmVySW5wdXRdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJj'@; put 'bHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gUjZ0KG4sZSl7MSZuJiZJdCgwLCJsYWJlbCIpfWZ1bmN0aW9uIEk2dChuLGUpezEmbiYmSXQoMCwiY2RzLWljb24iLDExKX1mdW5jdGlvbiBENnQobixlKXsxJm4mJkl0KDAsImNkcy1pY29uIiwxMil9ZnVuY3Rpb24gTDZ0KG4sZSl7MSZu'@; put 'JiZXcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gTzZ0KG4sZSl7MSZuJiZXcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIE42dChuLGUpezEmbiYmV3IoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgRjZ0PVtbWyIiLCJjbHJSYWRp'@; put 'byIsIiJdXSxbWyJsYWJlbCJdXV0sUDZ0PVsiW2NsclJhZGlvXSIsImxhYmVsIl07ZnVuY3Rpb24gSDZ0KG4sZSl7MSZuJiZJdCgwLCJsYWJlbCIpfWNvbnN0IFY2dD1bW1sibGFiZWwiXV0sW1siY2xyLXJhZGlvLXdyYXBwZXIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1j'@; put 'b250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLEI2dD1bImxhYmVsIiwiY2xyLXJhZGlvLXdyYXBwZXIiLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiBqNnQobixlKXsxJm4mJkl0'@; put 'KDAsImxhYmVsIil9ZnVuY3Rpb24gVTZ0KG4sZSl7MSZuJiYoSigwLCJkaXYiLDMpLFdyKDEsMiksdGUoKSl9ZnVuY3Rpb24gejZ0KG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gVzZ0KG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsNyl9ZnVuY3Rpb24gWTZ0KG4sZSl7'@; put 'MSZuJiZXcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIFo2dChuLGUpezEmbiYmV3IoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9ZnVuY3Rpb24gRzZ0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDMpLFluKDEsejZ0LDEsMCwiY2RzLWljb24iLDQpKDIsVzZ0LDEs'@; put 'MCwiY2RzLWljb24iLDUpKDMsWTZ0LDEsMCwibmctY29udGVudCIsMCkoNCxaNnQsMSwwLCJuZy1jb250ZW50IiwwKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJuZ0lmIix0LnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIix0LnNob3dWYWxpZCksaWUoKSxydCgibmdJZiIs'@; put 'dC5zaG93SW52YWxpZCksaWUoKSxydCgibmdJZiIsdC5zaG93VmFsaWQpfX1jb25zdCAkNnQ9W1tbImxhYmVsIl1dLFtbIiIsImNsclNlbGVjdCIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0s'@; put 'cTZ0PVsibGFiZWwiLCJbY2xyU2VsZWN0XSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIEs2dChuLGUpezEmbiYmSXQoMCwibGFiZWwiKX1mdW5jdGlvbiBYNnQobixlKXsxJm4mJkl0KDAsImNkcy1pY29u'@; put 'Iiw1KX1mdW5jdGlvbiBRNnQobixlKXsxJm4mJkl0KDAsImNkcy1pY29uIiw2KX1mdW5jdGlvbiBKNnQobixlKXsxJm4mJldyKDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiBlOHQobixlKXsxJm4mJldyKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24g'@; put 'dDh0KG4sZSl7MSZuJiZXcigwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCBuOHQ9W1tbImxhYmVsIl1dLFtbIiIsImNsclRleHRhcmVhIiwiIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxbWyJjbHItY29udHJvbC1zdWNjZXNzIl1d'@; put 'XSxyOHQ9WyJsYWJlbCIsIltjbHJUZXh0YXJlYV0iLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiBpOHQobixlKXsxJm4mJkl0KDAsImxhYmVsIil9ZnVuY3Rpb24gbzh0KG4sZSl7MSZuJiZJdCgwLCJjZHMt'@; put 'aWNvbiIsNSl9ZnVuY3Rpb24gYTh0KG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gczh0KG4sZSl7MSZuJiZXcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gbDh0KG4sZSl7MSZuJiZXcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0'@; put 'aW9uIGM4dChuLGUpezEmbiYmV3IoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgdTh0PVsiYW5jaG9yIl07ZnVuY3Rpb24gZDh0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDQpKDEsImRpdiIsNSkoMiwiYnV0dG9uIiw2KSxJdCgzLCJjZHMtaWNvbiIsNyksdGUoKSgpLFdyKDQp'@; put 'LHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO3J0KCJpZCIsdC5wb3BvdmVySWQpLFJyKCJhcmlhLWxhYmVsIix0LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRhZ3JpZEZpbHRlckRpYWxvZ0FyaWFMYWJlbCksaWUoMyksUnIoInRpdGxlIix0LmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSl9fWNvbnN0'@; put 'IGg4dD1bImlucHV0X2xvdyJdLGY4dD1bImlucHV0Il0scDh0PVsiY29sdW1uUG9ydGFsIl07ZnVuY3Rpb24gZzh0KG4sZSl7MSZuJiZXcigwKX1jb25zdCBtOHQ9WyJyZXNpemVUcmFja2VyIl0sdjh0PVsiY29sdW1uSGFuZGxlIl0sXzh0PVtbWyJjbHItZGctZmlsdGVyIl0sWyJjbHItZGct'@; put 'c3RyaW5nLWZpbHRlciJdLFsiY2xyLWRnLW51bWVyaWMtZmlsdGVyIl1dLCIqIl0seTh0PVsiY2xyLWRnLWZpbHRlciwgY2xyLWRnLXN0cmluZy1maWx0ZXIsIGNsci1kZy1udW1lcmljLWZpbHRlciIsIioiXTtmdW5jdGlvbiBiOHQobixlKXsxJm4mJmF1KDApfWZ1bmN0aW9uIHc4dChuLGUp'@; put 'ezEmbiYmSXQoMCwiY2RzLWljb24iLDEwKSwyJm4mJlJyKCJkaXJlY3Rpb24iLFRlKDIpLnNvcnREaXJlY3Rpb24pfWZ1bmN0aW9uIEM4dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiw3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCku'@; put 'c29ydCgpKX0pLFluKDEsYjh0LDEsMCwibmctY29udGFpbmVyIiw4KSgyLHc4dCwxLDEsImNkcy1pY29uIiw5KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLHI9b28oNik7aWUoKSxydCgibmdUZW1wbGF0ZU91dGxldCIsciksaWUoKSxydCgibmdJZiIsdC5zb3J0RGlyZWN0aW9uKX19ZnVu'@; put 'Y3Rpb24gUzh0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItZGctc3RyaW5nLWZpbHRlciIsMTEpLGhpKCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLmZpbHRlclZhbHVlLGkpfHwoby5maWx0ZXJWYWx1'@; put 'ZT1pKSxYZShpKX0pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7cnQoImNsckZpbHRlclBsYWNlaG9sZGVyIix0LmZpbHRlclN0cmluZ1BsYWNlaG9sZGVyKSgiY2xyRGdTdHJpbmdGaWx0ZXIiLHQucmVnaXN0ZXJlZCksZGkoImNsckZpbHRlclZhbHVlIix0LmZpbHRlclZhbHVlKX19ZnVu'@; put 'Y3Rpb24gRTh0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItZGctbnVtZXJpYy1maWx0ZXIiLDEyKSxoaSgiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKTtyZXR1cm4gZmkoby5maWx0ZXJWYWx1ZSxpKXx8KG8uZmlsdGVyVmFs'@; put 'dWU9aSksWGUoaSl9KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpO3J0KCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsdC5maWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlcikoImNsckZpbHRlck1pblBsYWNlaG9sZGVyIix0LmZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyKSgiY2xyRGdOdW1l'@; put 'cmljRmlsdGVyIix0LnJlZ2lzdGVyZWQpLGRpKCJjbHJGaWx0ZXJWYWx1ZSIsdC5maWx0ZXJWYWx1ZSl9fWZ1bmN0aW9uIE04dChuLGUpezEmbiYmV3IoMCwxKX1mdW5jdGlvbiBUOHQobixlKXsxJm4mJmF1KDApfWZ1bmN0aW9uIHg4dChuLGUpe2lmKDEmbiYmKEooMCwic3BhbiIsMTMpLFlu'@; put 'KDEsVDh0LDEsMCwibmctY29udGFpbmVyIiw4KSx0ZSgpKSwyJm4pe1RlKCk7Y29uc3QgdD1vbyg2KTtpZSgpLHJ0KCJuZ1RlbXBsYXRlT3V0bGV0Iix0KX19ZnVuY3Rpb24gQTh0KG4sZSl7MSZuJiZJdCgwLCJjbHItZGctY29sdW1uLXNlcGFyYXRvciIpfWZ1bmN0aW9uIGs4dChuLGUpezEm'@; put 'biYmSXQoMCwiZGl2Iiw0KX1mdW5jdGlvbiBSOHQobixlKXsxJm4mJldyKDAsMCxbIipuZ0lmIiwiZW1wdHlEYXRhZ3JpZCJdKX1jb25zdCBJOHQ9WyJjZWxsUG9ydGFsIl07ZnVuY3Rpb24gRDh0KG4sZSl7MSZuJiZXcigwKX1jb25zdCBMOHQ9WyJyb3dQb3J0YWwiXTtmdW5jdGlvbiBPOHQo'@; put 'bixlKXsxJm4mJldyKDApfWNvbnN0IE44dD1bImRldGFpbEJ1dHRvbiJdLEY4dD1bInN0aWNreUNlbGxzIl0sUDh0PVsic2Nyb2xsYWJsZUNlbGxzIl0sSDh0PVsiY2FsY3VsYXRlZENlbGxzIl0sVjh0PVtbWyJjbHItZGctcm93LWRldGFpbCJdXSxbWyJjbHItZGctY2VsbCJdXSxbWyJjbHIt'@; put 'ZGctYWN0aW9uLW92ZXJmbG93Il1dXSxCOHQ9WyJjbHItZGctcm93LWRldGFpbCIsImNsci1kZy1jZWxsIiwiY2xyLWRnLWFjdGlvbi1vdmVyZmxvdyJdLGo4dD1uPT4oeyJpcy1yZXBsYWNlZCI6bn0pLEVFZT1uPT4oeyJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIjpufSk7ZnVuY3Rpb24g'@; put 'VTh0KG4sZSl7fWZ1bmN0aW9uIHo4dChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiwxMCksWW4oMSxVOHQsMCwwLCJuZy10ZW1wbGF0ZSIsMTEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKSxyPW9vKDYpO3J0KCJjbHJFeHBhbmRUcmlnZ2VyIix0LmV4cGFu'@; put 'ZEFuaW1hdGlvblRyaWdnZXIpLGllKCkscnQoIm5nVGVtcGxhdGVPdXRsZXQiLHIpfX1mdW5jdGlvbiBXOHQobixlKXt9ZnVuY3Rpb24gWTh0KG4sZSl7MSZuJiZZbigwLFc4dCwwLDAsIm5nLXRlbXBsYXRlIiwxMSksMiZuJiYoVGUoMikscnQoIm5nVGVtcGxhdGVPdXRsZXQiLG9vKDYpKSl9'@; put 'ZnVuY3Rpb24gWjh0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDkpLHd0KCJtb3VzZWRvd24iLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgpLmNsZWFyUmFuZ2VzKGkpKX0pKCJjbGljayIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBY'@; put 'ZShvLnNlbGVjdFJvdyghby5zZWxlY3RlZCxpKSl9KSxZbigxLHo4dCwyLDIsImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiIsNykoMixZOHQsMSwxLG51bGwsOCksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJuZ0lmIix0LmV4cGFuZC5leHBhbmRhYmxlKSxpZSgpLHJ0KCJu'@; put 'Z0lmIiwhdC5leHBhbmQuZXhwYW5kYWJsZSl9fWZ1bmN0aW9uIEc4dChuLGUpe31mdW5jdGlvbiAkOHQobixlKXtpZigxJm4mJihKKDAsImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiIsMTApLFluKDEsRzh0LDAsMCwibmctdGVtcGxhdGUiLDExKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKSxy'@; put 'PW9vKDYpO3J0KCJjbHJFeHBhbmRUcmlnZ2VyIix0LmV4cGFuZEFuaW1hdGlvblRyaWdnZXIpLGllKCkscnQoIm5nVGVtcGxhdGVPdXRsZXQiLHIpfX1mdW5jdGlvbiBxOHQobixlKXt9ZnVuY3Rpb24gSzh0KG4sZSl7MSZuJiZZbigwLHE4dCwwLDAsIm5nLXRlbXBsYXRlIiwxMSksMiZuJiYo'@; put 'VGUoKSxydCgibmdUZW1wbGF0ZU91dGxldCIsb28oNikpKX1mdW5jdGlvbiBYOHQobixlKXsxJm4mJldyKDApfWZ1bmN0aW9uIFE4dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwyMSkoMSwiZGl2IiwyMikoMiwiaW5wdXQiLDIzKSx3dCgibmdNb2RlbENoYW5nZSIsZnVu'@; put 'Y3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLnRvZ2dsZShpKSl9KSx0ZSgpLEooMywibGFiZWwiLDI0KSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgyKS5jbGVhclJhbmdlcyhpKSl9KSxKKDQsInNwYW4iLDI1KSxTZSg1KSx0ZSgpKCkoKSgpfWlmKDIm'@; put 'bil7Y29uc3QgdD1UZSgyKTtydCgibmdDbGFzcyIsdDQoNyxFRWUsIXQuY2xyRGdTZWxlY3RhYmxlKSksaWUoMikscnQoIm5nTW9kZWwiLHQuc2VsZWN0ZWQpKCJpZCIsdC5jaGVja2JveElkKSgiZGlzYWJsZWQiLCF0LmNsckRnU2VsZWN0YWJsZXx8bnVsbCksUnIoImFyaWEtZGlzYWJsZWQi'@; put 'LCF0LmNsckRnU2VsZWN0YWJsZXx8bnVsbCksaWUoKSxydCgiZm9yIix0LmNoZWNrYm94SWQpLGllKDIpLHByKHQuY2xyRGdSb3dTZWxlY3Rpb25MYWJlbHx8dC5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0KX19ZnVuY3Rpb24gSjh0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJk'@; put 'aXYiLDIxKSgxLCJjbHItcmFkaW8td3JhcHBlciIpKDIsImlucHV0IiwyNiksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMik7cmV0dXJuIGZpKG8uc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGUsaSl8fChvLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPWkp'@; put 'LFhlKGkpfSksdGUoKSxKKDMsImxhYmVsIiwyNykoNCwic3BhbiIsMjUpLFNlKDUpLHRlKCkoKSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO3J0KCJuZ0NsYXNzIix0NCgxMCxFRWUsIXQuY2xyRGdTZWxlY3RhYmxlKSksaWUoMikscnQoImlkIix0LnJhZGlvSWQpKCJuYW1lIix0LnNlbGVj'@; put 'dGlvbi5pZCsiLXJhZGlvIikoInZhbHVlIix0Lml0ZW0pLGRpKCJuZ01vZGVsIix0LnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlKSxydCgiY2hlY2tlZCIsdC5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT09PXQuaXRlbSkoImRpc2FibGVkIiwhdC5jbHJEZ1NlbGVjdGFibGV8fG51bGwpLFJyKCJh'@; put 'cmlhLWRpc2FibGVkIiwhdC5jbHJEZ1NlbGVjdGFibGV8fG51bGwpLGllKCkscnQoImZvciIsdC5yYWRpb0lkKSxpZSgyKSxwcih0LmNsckRnUm93U2VsZWN0aW9uTGFiZWx8fHQuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdCl9fWZ1bmN0aW9uIGU3dChuLGUpezEmbiYmKEooMCwiZGl2Iiwy'@; put 'OCksV3IoMSwyKSx0ZSgpKX1mdW5jdGlvbiB0N3QobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsMzIpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoNCkudG9nZ2xlRXhwYW5kKCkpfSksSXQoMSwiY2RzLWljb24iLDMzKSx0ZSgpfWlmKDIm'@; put 'bil7Y29uc3QgdD1UZSg0KTtScigiYXJpYS1leHBhbmRlZCIsdC5leHBhbmQuZXhwYW5kZWQpKCJhcmlhLWxhYmVsIix0LmV4cGFuZC5leHBhbmRlZD90LmNsckRnRGV0YWlsQ2xvc2VMYWJlbDp0LmNsckRnRGV0YWlsT3BlbkxhYmVsKSgiYXJpYS1jb250cm9scyIsdC5leHBhbmQuaGFzRXhw'@; put 'YW5kVGVtcGxhdGUmJiF0LmV4cGFuZC5leHBhbmRlZD9udWxsOnQuZXhwYW5kYWJsZUlkKSxpZSgpLFJyKCJkaXJlY3Rpb24iLHQuZXhwYW5kLmV4cGFuZGVkPyJkb3duIjoicmlnaHQiKSgidGl0bGUiLHQuZXhwYW5kLmV4cGFuZGVkP3QuY29tbW9uU3RyaW5ncy5rZXlzLmNvbGxhcHNlOnQu'@; put 'Y29tbW9uU3RyaW5ncy5rZXlzLmV4cGFuZCl9fWZ1bmN0aW9uIG43dChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXNwaW5uZXIiLDM0KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoKSxwcih0LmNvbW1vblN0cmluZ3Mua2V5cy5sb2FkaW5nKX19ZnVuY3Rpb24gcjd0KG4sZSl7'@; put 'aWYoMSZuJiYobWwoMCksWW4oMSx0N3QsMiw1LCJidXR0b24iLDMwKSgyLG43dCwyLDEsImNsci1zcGlubmVyIiwzMSkscmwoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKCkscnQoIm5nSWYiLCF0LmV4cGFuZC5sb2FkaW5nKSxpZSgpLHJ0KCJuZ0lmIix0LmV4cGFuZC5sb2FkaW5nKX19ZnVu'@; put 'Y3Rpb24gaTd0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDI5KSxZbigxLHI3dCwzLDIsIm5nLWNvbnRhaW5lciIsOCksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCkscnQoIm5nSWYiLHQuZXhwYW5kLmV4cGFuZGFibGUpfX1mdW5jdGlvbiBvN3QobixlKXtpZigxJm4pe2NvbnN0IHQ9'@; put 'd24oKTtKKDAsImJ1dHRvbiIsMzcsNSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9b28oMSksbz1UZSgzKTtyZXR1cm4gWGUoby5kZXRhaWxTZXJ2aWNlLnRvZ2dsZShvLml0ZW0saSkpfSksSXQoMiwiY2RzLWljb24iLDM4KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgz'@; put 'KTt3cigiaXMtb3BlbiIsdC5kZXRhaWxTZXJ2aWNlLmlzUm93T3Blbih0Lml0ZW0pKSxydCgiZGlzYWJsZWQiLHQuZGV0YWlsRGlzYWJsZWQpLFJyKCJhcmlhLWxhYmVsIix0LmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKHQuaXRlbSk/dC5jbHJEZ0RldGFpbENsb3NlTGFiZWw6dC5jbHJEZ0Rl'@; put 'dGFpbE9wZW5MYWJlbCkoImFyaWEtZXhwYW5kZWQiLHQuZGV0YWlsU2VydmljZS5pc1Jvd09wZW4odC5pdGVtKSkoImFyaWEtY29udHJvbHMiLHQuZGV0YWlsU2VydmljZS5pZCksaWUoMiksUnIoImRpcmVjdGlvbiIsdC5kZXRhaWxTZXJ2aWNlLmlzUm93T3Blbih0Lml0ZW0pPyJsZWZ0Ijoi'@; put 'cmlnaHQiKSgidGl0bGUiLHQuZGV0YWlsU2VydmljZS5pc1Jvd09wZW4odC5pdGVtKT90LmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZTp0LmNvbW1vblN0cmluZ3Mua2V5cy5vcGVuKX19ZnVuY3Rpb24gYTd0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDM1KSxZbigxLG83dCwzLDgsImJ1dHRv'@; put 'biIsMzYpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLHJ0KCJuZ0lmIiwhdC5kZXRhaWxIaWRkZW4pfX1mdW5jdGlvbiBzN3QobixlKXt9ZnVuY3Rpb24gbDd0KG4sZSl7MSZuJiZZbigwLHM3dCwwLDAsIm5nLXRlbXBsYXRlIiwxMSksMiZuJiYoVGUoMikscnQoIm5nVGVtcGxhdGVP'@; put 'dXRsZXQiLG9vKDQpKSl9ZnVuY3Rpb24gYzd0KG4sZSl7fWZ1bmN0aW9uIHU3dChuLGUpezEmbiYmWW4oMCxjN3QsMCwwLCJuZy10ZW1wbGF0ZSIsMTEpLDImbiYmKFRlKDIpLHJ0KCJuZ1RlbXBsYXRlT3V0bGV0Iixvbyg0KSkpfWZ1bmN0aW9uIGQ3dChuLGUpezEmbiYmSXQoMCwiY2xyLWRn'@; put 'LWNlbGwiLDM5KX1mdW5jdGlvbiBoN3QobixlKXtpZigxJm4mJihKKDAsImRpdiIsMTIpKDEsImRpdiIsMTMpLG1sKDIsbnVsbCwzKSxZbig0LFE4dCw2LDksImRpdiIsMTQpKDUsSjh0LDYsMTIsImRpdiIsMTQpKDYsZTd0LDIsMCwiZGl2IiwxNSkoNyxpN3QsMiwxLCJkaXYiLDE2KSg4LGE3'@; put 'dCwyLDEsImRpdiIsMTcpLHJsKCksdGUoKSxKKDksImRpdiIsMTgpKDEwLCJkaXYiLDE5KSxXcigxMSwxKSxhdSgxMixudWxsLDQpLHRlKCksWW4oMTQsbDd0LDEsMSxudWxsLDgpKDE1LHU3dCwxLDEsbnVsbCw4KSx0ZSgpLFluKDE2LGQ3dCwxLDAsImNsci1kZy1jZWxsIiwyMCksdGUoKSks'@; put 'MiZuKXtjb25zdCB0PVRlKCk7d3IoImRhdGFncmlkLXJvdy1kZXRhaWwtb3BlbiIsdC5kZXRhaWxTZXJ2aWNlLmlzUm93T3Blbih0Lml0ZW0pKSxydCgiaWQiLHQuaWQpLGllKDQpLHJ0KCJuZ0lmIix0LnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09dC5TRUxFQ1RJT05fVFlQRS5NdWx0aSks'@; put 'aWUoKSxydCgibmdJZiIsdC5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXQuU0VMRUNUSU9OX1RZUEUuU2luZ2xlKSxpZSgpLHJ0KCJuZ0lmIix0LnJvd0FjdGlvblNlcnZpY2UuaGFzQWN0aW9uYWJsZVJvdyksaWUoKSxydCgibmdJZiIsdC5nbG9iYWxFeHBhbmRhYmxlLmhhc0V4cGFuZGFi'@; put 'bGVSb3cpLGllKCkscnQoIm5nSWYiLHQuZGV0YWlsU2VydmljZS5lbmFibGVkKSxpZSgpLHJ0KCJuZ0NsYXNzIix0NCgxMixqOHQsdC5yZXBsYWNlZCYmdC5leHBhbmRlZCkpLGllKDUpLHJ0KCJuZ0lmIix0LnJlcGxhY2VkJiYhdC5leHBhbmQubG9hZGluZyksaWUoKSxydCgibmdJZiIsIXQu'@; put 'cmVwbGFjZWQmJiF0LmV4cGFuZC5sb2FkaW5nKSxpZSgpLHJ0KCJuZ0lmIix0LnNrZWxldG9uTG9hZGluZyl9fWNvbnN0IGY3dD1bImRhdGFncmlkIl0scDd0PVsiZGF0YWdyaWRUYWJsZSJdLGc3dD1bInNjcm9sbGFibGVDb2x1bW5zIl0sbTd0PVsicHJvamVjdGVkRGlzcGxheUNvbHVtbnMi'@; put 'XSx2N3Q9WyJwcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMiXSxfN3Q9WyJkaXNwbGF5ZWRSb3dzIl0seTd0PVsiY2FsY3VsYXRpb25Sb3dzIl0sYjd0PVsic2VsZWN0QWxsQ2hlY2tib3giXSx3N3Q9W1tbImNsci1kZy1hY3Rpb24tYmFyIl1dLFtbImNsci1kZy1wbGFjZWhvbGRlciJdXSxb'@; put 'WyJjbHItZGctZm9vdGVyIl1dLFtbIiIsImNscklmRGV0YWlsIiwiIl0sWyJjbHItZGctZGV0YWlsIl1dXSxDN3Q9WyJjbHItZGctYWN0aW9uLWJhciIsImNsci1kZy1wbGFjZWhvbGRlciIsImNsci1kZy1mb290ZXIiLCJbY2xySWZEZXRhaWxdLGNsci1kZy1kZXRhaWwiXTtmdW5jdGlvbiBT'@; put 'N3QobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsMzApKDEsImlucHV0IiwzMSw2KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgyKTtyZXR1cm4gZmkoby5hbGxTZWxlY3RlZCxpKXx8KG8uYWxsU2VsZWN0ZWQ9aSksWGUoaSl9KSx0'@; put 'ZSgpLEooMywibGFiZWwiLDMyKSg0LCJzcGFuIiwzMyksU2UoNSksdGUoKSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKCkscnQoImlkIix0LnNlbGVjdEFsbElkKSxkaSgibmdNb2RlbCIsdC5hbGxTZWxlY3RlZCksUnIoImFyaWEtbGFiZWwiLHQuY29tbW9uU3RyaW5ncy5rZXlzLnNl'@; put 'bGVjdEFsbCksaWUoMikscnQoImZvciIsdC5zZWxlY3RBbGxJZCksaWUoMikscHIodC5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0QWxsKX19ZnVuY3Rpb24gRTd0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDI3KSx3dCgia2V5ZG93bi5zcGFjZSIsZnVuY3Rpb24oaSl7'@; put 'cmV0dXJuIFllKHQpLFhlKFRlKCkudG9nZ2xlQWxsU2VsZWN0ZWQoaSkpfSksWW4oMSxTN3QsNiw1LCJkaXYiLDI4KSxJdCgyLCJkaXYiLDI5KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpO2llKCkscnQoIm5nSWYiLCF0LnZpcnR1YWxTY3JvbGx8fHQuY3VzdG9tU2VsZWN0QWxsRW5hYmxl'@; put 'ZCl9fWZ1bmN0aW9uIE03dChuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwzNCkoMSwiZGl2IiwzMyksU2UoMiksdGUoKSxJdCgzLCJkaXYiLDI5KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgyKSxwcih0LmNsckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsKX19ZnVuY3Rpb24gVDd0KG4s'@; put 'ZSl7aWYoMSZuJiYoSigwLCJkaXYiLDM1KSgxLCJkaXYiLDMzKSxTZSgyKSx0ZSgpLEl0KDMsImRpdiIsMjkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDIpLHByKHQuY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsKX19ZnVuY3Rpb24geDd0KG4sZSl7aWYoMSZuJiYoSigwLCJk'@; put 'aXYiLDM2KSgxLCJkaXYiLDMzKSxTZSgyKSx0ZSgpLEl0KDMsImRpdiIsMjkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDIpLHByKHQuY2xyRGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbCl9fWZ1bmN0aW9uIEE3dChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWRnLXJvdyIsMzcpKDEsImNs'@; put 'ci1kZy1jZWxsIiksSXQoMiwiY2xyLXNwaW5uZXIiLDM4KSxKKDMsInNwYW4iKSxTZSg0KSx0ZSgpKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoNCkscHIodC5jb21tb25TdHJpbmdzLmtleXMubG9hZGluZyl9fWZ1bmN0aW9uIGs3dChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWRnLXJvdyIs'@; put 'MzcpKDEsImNsci1kZy1jZWxsIiksSXQoMiwiY2xyLXNwaW5uZXIiLDM4KSxKKDMsInNwYW4iKSxTZSg0KSx0ZSgpKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoNCkscHIodC5jb21tb25TdHJpbmdzLmtleXMubG9hZGluZyl9fWZ1bmN0aW9uIFI3dChuLGUpezEmbiYmSXQoMCwiY2xyLWRn'@; put 'LXBsYWNlaG9sZGVyIil9ZnVuY3Rpb24gSTd0KG4sZSl7MSZuJiYoSigwLCJkaXYiLDM5KSgxLCJjbHItc3Bpbm5lciIsMzgpLFNlKDIsIkxvYWRpbmciKSx0ZSgpKCkpfWNvbnN0IEw3dD1bImFsbFNlbGVjdGVkIl07ZnVuY3Rpb24gTzd0KG4sZSl7fWZ1bmN0aW9uIE43dChuLGUpe2lmKDEm'@; put 'bil7Y29uc3QgdD13bigpO0ooMCwibGkiKSgxLCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDIsImlucHV0IiwxMyksd3QoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgyKS50b2dnbGVDb2x1bW5TdGF0ZShvLCFpKSl9KSx0'@; put 'ZSgpLEooMywibGFiZWwiKSxZbig0LE83dCwwLDAsIm5nLXRlbXBsYXRlIiwxNCksdGUoKSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoMik7aWUoMikscnQoImRpc2FibGVkIixyLmhhc09ubHlPbmVWaXNpYmxlQ29sdW1uJiYhdC5oaWRkZW4pKCJuZ01vZGVsIiwhdC5o'@; put 'aWRkZW4pLGllKDIpLHJ0KCJuZ1RlbXBsYXRlT3V0bGV0Iix0LnRpdGxlVGVtcGxhdGVSZWYpfX1mdW5jdGlvbiBGN3QobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsMykoMSwiZGl2Iiw0KSgyLCJkaXYiLDUsMCksU2UoNCksdGUoKSxKKDUsImgyIiksU2UoNiksdGUoKSxK'@; put 'KDcsImJ1dHRvbiIsNiksSXQoOCwiY2RzLWljb24iLDcpLEooOSwic3BhbiIsOCksU2UoMTApLHRlKCkoKSgpLEooMTEsInVsIiw5KSxZbigxMixON3QsNSwzLCJsaSIsMTApLHRlKCksSigxMywiZGl2IiwxMSkoMTQsImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiIsMTIpLHd0KCJjbHJB'@; put 'bGxTZWxlY3RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5hbGxDb2x1bW5zU2VsZWN0ZWQoKSl9KSx0ZSgpKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtydCgiaWQiLHQucG9wb3ZlcklkKSxScigiYXJpYS1sYWJlbCIsdC5jb21tb25TdHJpbmdzLmtleXMuc2hvd0NvbHVt'@; put 'bnNNZW51RGVzY3JpcHRpb24pLGllKDQpLHByKHQuY29tbW9uU3RyaW5ncy5rZXlzLmFsbENvbHVtbnNTZWxlY3RlZCksaWUoMikscHIodC5jb21tb25TdHJpbmdzLmtleXMuc2hvd0NvbHVtbnMpLGllKCksUnIoImFyaWEtbGFiZWwiLHQuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSxpZSgp'@; put 'LFJyKCJ0aXRsZSIsdC5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpLGllKDIpLHByKHQuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSxpZSgyKSxydCgibmdGb3JPZiIsdC5oaWRlYWJsZUNvbHVtblN0YXRlcykoIm5nRm9yVHJhY2tCeSIsdC50cmFja0J5Rm4pfX1jb25zdCBNRWU9WyJ0aXRs'@; put 'ZSJdLEg3dD1bW1siY2xyLWRnLXBhZ2luYXRpb24iXV0sIioiXSxWN3Q9WyJjbHItZGctcGFnaW5hdGlvbiIsIioiXTtmdW5jdGlvbiBCN3QobixlKXtpZigxJm4mJihtbCgwKSxKKDEsImRpdiIsMSkoMiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDIpLEl0KDMsImlucHV0IiwzKSxKKDQsImxh'@; put 'YmVsIiksU2UoNSksdGUoKSxKKDYsInNwYW4iLDQpLFNlKDcpLHRlKCkoKSgpLHJsKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDUpLHByKHQuc2VsZWN0aW9uLmN1cnJlbnQubGVuZ3RoKSxpZSgyKSxwcih0LmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RlZFJvd3MpfX1mdW5jdGlvbiBqN3Qo'@; put 'bixlKXsxJm4mJkl0KDAsImNsci1kZy1jb2x1bW4tdG9nZ2xlIil9ZnVuY3Rpb24gVTd0KG4sZSl7aWYoMSZuJiYobWwoMCksWW4oMSxqN3QsMSwwLCJjbHItZGctY29sdW1uLXRvZ2dsZSIsMCksSigyLCJkaXYiLDUpLFdyKDMsMSksdGUoKSxybCgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgp'@; put 'LHJ0KCJuZ0lmIix0Lmhhc0hpZGVhYmxlQ29sdW1ucyl9fWZ1bmN0aW9uIHo3dChuLGUpe2lmKDEmbiYmKEooMCwib3B0aW9uIiw0KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoIm5nVmFsdWUiLHQpLGllKCkscHIodCl9fWNvbnN0IFc3dD1bImN1cnJlbnRQYWdl'@; put 'SW5wdXQiXSxZN3Q9WyIqIixbWyJjbHItZGctcGFnZS1zaXplIl1dXSxaN3Q9WyIqIiwiY2xyLWRnLXBhZ2Utc2l6ZSJdO2Z1bmN0aW9uIEc3dChuLGUpezEmbiYmKEooMCwiZGl2Iiw2KSxXcigxLDEpLHRlKCkpfWZ1bmN0aW9uICQ3dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwi'@; put 'aW5wdXQiLDE4LDEpLHd0KCJrZXlkb3duLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoMykudXBkYXRlQ3VycmVudFBhZ2UoaSkpfSkoImJsdXIiLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgzKS52ZXJpZnlDdXJyZW50UGFnZShpKSl9KSx0ZSgpfWlmKDIm'@; put 'bil7Y29uc3QgdD1UZSgzKTtydCgic2l6ZSIsdC5wYWdlLmxhc3QudG9TdHJpbmcoKS5sZW5ndGgpKCJ2YWx1ZSIsdC5wYWdlLmN1cnJlbnQpLFJyKCJhcmlhLWxhYmVsIix0LmNvbW1vblN0cmluZ3Mua2V5cy5jdXJyZW50UGFnZSl9fWZ1bmN0aW9uIHE3dChuLGUpe2lmKDEmbiYmKEooMCwi'@; put 'c3BhbiIpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLHByKHQucGFnZS5jdXJyZW50KX19ZnVuY3Rpb24gSzd0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDcpKDEsImJ1dHRvbiIsOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxY'@; put 'ZShUZSgyKS5wYWdlLmN1cnJlbnQ9MSl9KSxKKDIsInNwYW4iLDkpLFNlKDMpLHRlKCksSXQoNCwiY2RzLWljb24iLDEwKSx0ZSgpLEooNSwiYnV0dG9uIiwxMSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIFhlKGkucGFnZS5jdXJyZW50PWkucGFn'@; put 'ZS5jdXJyZW50LTEpfSksSig2LCJzcGFuIiw5KSxTZSg3KSx0ZSgpLEl0KDgsImNkcy1pY29uIiwxMiksdGUoKSxZbig5LCQ3dCwyLDMsImlucHV0IiwxMykoMTAscTd0LDIsMSwibmctdGVtcGxhdGUiLG51bGwsMCxjZCksU2UoMTIsIiBceGEwL1x4YTAiKSxKKDEzLCJzcGFuIiksU2UoMTQp'@; put 'LHRlKCksSigxNSwiYnV0dG9uIiwxNCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIFhlKGkucGFnZS5jdXJyZW50PWkucGFnZS5jdXJyZW50KzEpfSksSigxNiwic3BhbiIsOSksU2UoMTcpLHRlKCksSXQoMTgsImNkcy1pY29uIiwxNSksdGUoKSxK'@; put 'KDE5LCJidXR0b24iLDE2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgyKTtyZXR1cm4gWGUoaS5wYWdlLmN1cnJlbnQ9aS5wYWdlLmxhc3QpfSksSigyMCwic3BhbiIsOSksU2UoMjEpLHRlKCksSXQoMjIsImNkcy1pY29uIiwxNyksdGUoKSgpfWlmKDImbil7Y29u'@; put 'c3QgdD1vbygxMSkscj1UZSgyKTtpZSgpLHJ0KCJkaXNhYmxlZCIsci5wYWdlLmN1cnJlbnQ8PTEpLFJyKCJhcmlhLWxhYmVsIixyLmNvbW1vblN0cmluZ3Mua2V5cy5maXJzdFBhZ2UpLGllKDIpLHByKHIuY29tbW9uU3RyaW5ncy5rZXlzLmZpcnN0UGFnZSksaWUoMikscnQoImRpc2FibGVk'@; put 'IixyLnBhZ2UuY3VycmVudDw9MSksUnIoImFyaWEtbGFiZWwiLHIuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzUGFnZSksaWUoMikscHIoci5jb21tb25TdHJpbmdzLmtleXMucHJldmlvdXNQYWdlKSxpZSgyKSxydCgibmdJZiIsIXIuZGlzYWJsZUN1cnJlbnRQYWdlSW5wdXQpKCJuZ0lm'@; put 'RWxzZSIsdCksaWUoNCksUnIoImFyaWEtbGFiZWwiLHIuY29tbW9uU3RyaW5ncy5rZXlzLnRvdGFsUGFnZXMpLGllKCkscHIoci5wYWdlLmxhc3QpLGllKCkscnQoImRpc2FibGVkIixyLnBhZ2UuY3VycmVudD49ci5wYWdlLmxhc3QpLFJyKCJhcmlhLWxhYmVsIixyLmNvbW1vblN0cmluZ3Mu'@; put 'a2V5cy5uZXh0UGFnZSksaWUoMikscHIoci5jb21tb25TdHJpbmdzLmtleXMubmV4dFBhZ2UpLGllKDIpLHJ0KCJkaXNhYmxlZCIsci5wYWdlLmN1cnJlbnQ+PXIucGFnZS5sYXN0KSxScigiYXJpYS1sYWJlbCIsci5jb21tb25TdHJpbmdzLmtleXMubGFzdFBhZ2UpLGllKDIpLHByKHIuY29t'@; put 'bW9uU3RyaW5ncy5rZXlzLmxhc3RQYWdlKX19ZnVuY3Rpb24gWDd0KG4sZSl7aWYoMSZuJiYobWwoMCksWW4oMSxHN3QsMiwwLCJkaXYiLDMpLEooMiwiZGl2Iiw0KSxXcigzKSx0ZSgpLFluKDQsSzd0LDIzLDE2LCJkaXYiLDUpLHJsKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCkscnQoIm5n'@; put 'SWYiLHQuX3BhZ2VTaXplQ29tcG9uZW50KSxpZSgzKSxydCgibmdJZiIsdC5wYWdlLmxhc3Q+MSl9fWZ1bmN0aW9uIFE3dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO21sKDApLEooMSwiZGl2IiwxOSksU2UoMiksdGUoKSxKKDMsImRpdiIsNykoNCwiYnV0dG9uIiwxMSksd3QoImNsaWNr'@; put 'IixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5wYWdlLmN1cnJlbnQ9aS5wYWdlLmN1cnJlbnQtMSl9KSxKKDUsInNwYW4iLDkpLFNlKDYpLHRlKCksSXQoNywiY2RzLWljb24iLDEyKSx0ZSgpLEooOCwic3BhbiIpLFNlKDkpLHRlKCksSigxMCwiYnV0dG9uIiwx'@; put 'NCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5wYWdlLmN1cnJlbnQ9aS5wYWdlLmN1cnJlbnQrMSl9KSxKKDExLCJzcGFuIiw5KSxTZSgxMiksdGUoKSxJdCgxMywiY2RzLWljb24iLDE1KSx0ZSgpKCkscmwoKX1pZigyJm4pe2NvbnN0IHQ9'@; put 'VGUoKTtpZSgyKSxlNCgiICIsdC5wYWdlLmZpcnN0SXRlbSsxLCItIix0LnBhZ2UubGFzdEl0ZW0rMSwiIC8gIix0LnBhZ2UudG90YWxJdGVtcywiICIpLGllKDIpLHJ0KCJkaXNhYmxlZCIsdC5wYWdlLmN1cnJlbnQ8PTEpLFJyKCJhcmlhLWxhYmVsIix0LmNvbW1vblN0cmluZ3Mua2V5cy5w'@; put 'cmV2aW91c1BhZ2UpLGllKDIpLHByKHQuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzUGFnZSksaWUoMykscHIodC5wYWdlLmN1cnJlbnQpLGllKCkscnQoImRpc2FibGVkIix0LnBhZ2UuY3VycmVudD49dC5wYWdlLmxhc3QpLFJyKCJhcmlhLWxhYmVsIix0LmNvbW1vblN0cmluZ3Mua2V5'@; put 'cy5uZXh0UGFnZSksaWUoMikscHIodC5jb21tb25TdHJpbmdzLmtleXMubmV4dFBhZ2UpfX1jb25zdCBuOXQ9W1tbImNsci1zdGFjay1sYWJlbCJdXSwiKiIsW1siY2xyLXN0YWNrLWJsb2NrIl1dXSxyOXQ9WyJjbHItc3RhY2stbGFiZWwiLCIqIiwiY2xyLXN0YWNrLWJsb2NrIl07ZnVuY3Rp'@; put 'b24gaTl0KG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsNyksMiZuJiZScigiZGlyZWN0aW9uIixUZSgpLmNhcmV0RGlyZWN0aW9uKX1mdW5jdGlvbiBvOXQobixlKXtpZigxJm4mJihKKDAsInNwYW4iLDgpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCkscHIodC5jb21tb25T'@; put 'dHJpbmdzLmtleXMuc3RhY2tWaWV3Q2hhbmdlZCl9fWZ1bmN0aW9uIGE5dChuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw5KSxXcigxLDIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO08yKCJoZWlnaHQiLHQuZXhwYW5kZWQ/ImF1dG8iOjApLFJyKCJpZCIsdC5nZXRTdGFja0NoaWxkcmVuSWQo'@; put 'KSkoImFyaWEtbGFiZWxsZWRieSIsdC5sYWJlbGxlZEJ5SWQpfX1jb25zdCBzOXQ9W1tbImNsci1zdGFjay1oZWFkZXIiXV0sIioiXSxsOXQ9WyJjbHItc3RhY2staGVhZGVyIiwiKiJdO2Z1bmN0aW9uIGQ5dChuLGUpezEmbiYmYXUoMCl9ZnVuY3Rpb24gaDl0KG4sZSl7aWYoMSZuJiYobWwo'@; put 'MCksWW4oMSxkOXQsMSwwLCJuZy1jb250YWluZXIiLDIpLHJsKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKDIpO2llKCkscnQoIm5nVGVtcGxhdGVPdXRsZXQiLHIuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbi50ZW1wbGF0ZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Iixy'@; put 'LmdldENvbnRleHQodCkpfX1mdW5jdGlvbiBmOXQobixlKXtpZigxJm4mJihtbCgwKSxZbigxLGg5dCwyLDIsIm5nLWNvbnRhaW5lciIsMSkscmwoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxydCgibmdGb3JPZiIsKG51bGw9PXQucGFyZW50P251bGw6dC5wYXJlbnQuY2hpbGRyZW4pfHx0'@; put 'LmNoaWxkcmVuKX19Y29uc3QgcDl0PVsiY29udGVudENvbnRhaW5lciJdLGc5dD1bW1siY2xyLXRyZWUtbm9kZSJdXSxbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dLCIqIl0sbTl0PVsiY2xyLXRyZWUtbm9kZSIsIltjbHJJZkV4cGFuZGVkXSIsIioiXTtmdW5jdGlvbiB2OXQobixlKXtpZigx'@; put 'Jm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsOSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmV4cGFuZFNlcnZpY2UudG9nZ2xlKCkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmZvY3VzVHJlZU5vZGUoKSl9KSxJdCgx'@; put 'LCJjZHMtaWNvbiIsMTApLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7cnQoImRpc2FibGVkIix0LmRpc2FibGVkKSxpZSgpLFJyKCJkaXJlY3Rpb24iLHQuZXhwYW5kU2VydmljZS5leHBhbmRlZD8iZG93biI6InJpZ2h0Iil9fWZ1bmN0aW9uIF85dChuLGUpezEmbiYmKEooMCwiZGl2Iiwx'@; put 'MSksSXQoMSwic3BhbiIsMTIpLHRlKCkpfWZ1bmN0aW9uIHk5dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwxMykoMSwiaW5wdXQiLDE0KSx3dCgiY2hhbmdlIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5fbW9kZWwudG9nZ2xlU2VsZWN0'@; put 'aW9uKGkuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKSl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuZm9jdXNUcmVlTm9kZSgpKX0pLHRlKCksSigyLCJsYWJlbCIsMTUpLGF1KDMsMTYpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKSxyPW9vKDcpO2llKCkscnQo'@; put 'ImlkIix0Lm5vZGVJZCsiLWNoZWNrIikoImRpc2FibGVkIix0LmRpc2FibGVkKSgiY2hlY2tlZCIsdC5fbW9kZWwuc2VsZWN0ZWQudmFsdWU9PT10LlNUQVRFUy5TRUxFQ1RFRCkoImluZGV0ZXJtaW5hdGUiLHQuX21vZGVsLnNlbGVjdGVkLnZhbHVlPT09dC5TVEFURVMuSU5ERVRFUk1JTkFU'@; put 'RSksaWUoKSxydCgiZm9yIix0Lm5vZGVJZCsiLWNoZWNrIiksaWUoKSxydCgibmdUZW1wbGF0ZU91dGxldCIscil9fWZ1bmN0aW9uIGI5dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwxNyksd3QoIm1vdXNldXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCku'@; put 'Zm9jdXNUcmVlTm9kZSgpKX0pLGF1KDEsMTYpLHRlKCl9aWYoMiZuKXtUZSgpO2NvbnN0IHQ9b28oNyk7aWUoKSxydCgibmdUZW1wbGF0ZU91dGxldCIsdCl9fWZ1bmN0aW9uIHc5dChuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxOSkoMSwic3BhbiIpLFNlKDIpLHRlKCkoKSksMiZuKXtjb25z'@; put 'dCB0PVRlKDIpO2llKDIpLFNyKCIgIix0LmFyaWFTZWxlY3RlZD90LmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RlZFRyZWVOb2RlOnQuY29tbW9uU3RyaW5ncy5rZXlzLnVuc2VsZWN0ZWRUcmVlTm9kZSl9fWZ1bmN0aW9uIEM5dChuLGUpe2lmKDEmbiYmKFdyKDAsMiksWW4oMSx3OXQsMywx'@; put 'LCJkaXYiLDE4KSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxydCgibmdJZiIsdC5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZXx8dC5hcmlhU2VsZWN0ZWQpfX1mdW5jdGlvbiBTOXQobixlKXsxJm4mJkl0KDAsImNsci1yZWN1cnNpdmUtY2hpbGRyZW4iLDEpLDImbiYmcnQoImNoaWxkcmVu'@; put 'IixUZSgpLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24ucm9vdCl9ZnVuY3Rpb24gRTl0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDQpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikuY2xvc2UoKSl9KSxJdCgxLCJjZHMtaWNvbiIs'@; put 'NSksdGUoKX0yJm4mJlJyKCJhcmlhLWxhYmVsIixUZSgyKS5jbHJDbG9zZUJ1dHRvbkFyaWFMYWJlbCl9ZnVuY3Rpb24gTTl0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDEpKDEsImRpdiIsMiksV3IoMiksdGUoKSxZbigzLEU5dCwyLDEsImJ1dHRvbiIsMyksdGUoKSksMiZuKXtjb25zdCB0'@; put 'PVRlKCk7d3IoImFsZXJ0LXNtIix0LmlzU21hbGwpKCJhbGVydC1saWdodHdlaWdodCIsdC5pc0xpZ2h0d2VpZ2h0KSgiYWxlcnQtYXBwLWxldmVsIix0LmlzQXBwTGV2ZWwpLHJ0KCJuZ0NsYXNzIix0LmFsZXJ0Q2xhc3MpLGllKDMpLHJ0KCJuZ0lmIix0LmNsb3NhYmxlKX19ZnVuY3Rpb24g'@; put 'VDl0KG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsMyl9ZnVuY3Rpb24geDl0KG4sZSl7aWYoMSZuJiZJdCgwLCJjZHMtaWNvbiIsNCksMiZuKXtjb25zdCB0PVRlKCk7UnIoInNoYXBlIix0Lmljb25TZXJ2aWNlLmFsZXJ0SWNvblNoYXBlKSgiYXJpYS1sYWJlbCIsdC5pY29uU2Vydmlj'@; put 'ZS5hbGVydEljb25UaXRsZSl9fWNvbnN0IEE5dD1bW1siY2xyLWFsZXJ0Il1dXSxrOXQ9WyJjbHItYWxlcnQiXTtmdW5jdGlvbiBSOXQobixlKXsxJm4mJkl0KDAsImNsci1hbGVydHMtcGFnZXIiLDIpLDImbiYmcnQoImNsckN1cnJlbnRBbGVydEluZGV4IixUZSgpLmN1cnJlbnRBbGVydElu'@; put 'ZGV4KX1jb25zdCBJOXQ9WyJjbHJJbnRlcm5hbE1vZGFsQ29udGVudFRlbXBsYXRlIl0sVEVlPVsiYm9keSJdLEQ5dD1bW1siIiw4LCJsZWFkaW5nLWJ1dHRvbiJdXSxbWyIiLDgsIm1vZGFsLXRpdGxlIl1dLFtbIiIsOCwibW9kYWwtYm9keSJdXSxbWyIiLDgsIm1vZGFsLWZvb3RlciJdXV0s'@; put 'TDl0PVsiLmxlYWRpbmctYnV0dG9uIiwiLm1vZGFsLXRpdGxlIiwiLm1vZGFsLWJvZHkiLCIubW9kYWwtZm9vdGVyIl07ZnVuY3Rpb24gTzl0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDE0KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRl'@; put 'KDMpLmNsb3NlKCkpfSksSXQoMSwiY2RzLWljb24iLDE1KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgzKTtScigiYXJpYS1sYWJlbCIsdC5jbG9zZUJ1dHRvbkFyaWFMYWJlbHx8dC5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpfX1mdW5jdGlvbiBOOXQobixlKXtpZigxJm4mJihKKDAsImRp'@; put 'diIsOCkoMSwiZGl2Iiw5KSgyLCJkaXYiLDEwKSxXcigzKSxKKDQsImRpdiIsMTEsMCksV3IoNiwxKSx0ZSgpLFluKDcsTzl0LDIsMSwiYnV0dG9uIiwxMiksdGUoKSxKKDgsImRpdiIsMTMsMSksV3IoMTAsMiksdGUoKSxXcigxMSwzKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSg0'@; put 'KSxydCgiaWQiLHQubW9kYWxJZCksaWUoMykscnQoIm5nSWYiLHQuY2xvc2FibGUpfX1mdW5jdGlvbiBGOXQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsNCkoMSwiZGl2Iiw1KSx3dCgiQGZhZGVNb3ZlLmRvbmUiLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgp'@; put 'LmZhZGVEb25lKGkpKX0pLEooMiwiZGl2Iiw2KSxTZSgzKSx0ZSgpLFluKDQsTjl0LDEyLDIsImRpdiIsNyksSig1LCJkaXYiLDYpLFNlKDYpLHRlKCkoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgpO3dyKCJtb2RhbC1mdWxsLXNjcmVlbiIsImZ1bGwtc2NyZWVuIj09dC5zaXplKSxpZSgpLHdy'@; put 'KCJtb2RhbC1zbSIsInNtIj09dC5zaXplKSgibW9kYWwtbGciLCJsZyI9PXQuc2l6ZSkoIm1vZGFsLXhsIiwieGwiPT10LnNpemUpLHJ0KCJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSIsITApKCJAZmFkZU1vdmUiLHQuZmFkZU1vdmUpLFJyKCJhcmlhLWhpZGRlbiIsIXQuX29wZW4pKCJhcmlh'@; put 'LWxhYmVsbGVkYnkiLHQubGFiZWxsZWRCeXx8dC5tb2RhbElkKSxpZSgyKSxwcih0LmNvbW1vblN0cmluZ3Mua2V5cy5tb2RhbENvbnRlbnRTdGFydCksaWUoKSxydCgibmdJZiIsIXQubW9kYWxDb250ZW50VGVtcGxhdGUpKCJuZ0lmRWxzZSIsdC5tb2RhbENvbnRlbnRUZW1wbGF0ZSksaWUo'@; put 'MikscHIodC5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50RW5kKX19ZnVuY3Rpb24gUDl0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDE2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuYmFja2Ryb3BDbGljaygpKX0pLHRlKCl9'@; put 'MiZuJiZydCgiQGZhZGUiLHZvaWQgMCl9ZnVuY3Rpb24gajl0KG4sZSl7aWYoMSZuJiYoSigwLCJzcGFuIiksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxwcih0LmRpc3BsYXlWYWx1ZSl9fWxldCBjdT0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rp'@; put 'b24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWljb24iXV0sc3RhbmRhbG9uZTohMX0pLG59KSgpLEpzPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1'@; put 'MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjZHMtaWNvbiJdXSxzdGFuZGFsb25lOiExfSksbn0pKCksV2w9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3'@; put 'NWluaj1taSh7aW1wb3J0czpbcW9dfSksbn0pKCk7Y2xhc3MgRUR7fXZhciBPZj1mdW5jdGlvbihuKXtyZXR1cm4gbltuLkRFRkFVTFQ9MF09IkRFRkFVTFQiLG5bbi5MT0FESU5HPTFdPSJMT0FESU5HIixuW24uU1VDQ0VTUz0yXT0iU1VDQ0VTUyIsbltuLkVSUk9SPTNdPSJFUlJPUiIsbn0o'@; put 'T2Z8fHt9KTtsZXQgJDA9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLmxpc3RlbmVyPXQsdGhpcy5fbG9hZGluZ1N0YXRlPU9mLkRFRkFVTFR9Z2V0IGxvYWRpbmdTdGF0ZSgpe3JldHVybiB0aGlzLl9sb2FkaW5nU3RhdGV9c2V0IGxvYWRpbmdTdGF0ZSh0KXshMD09PXQ/dD1P'@; put 'Zi5MT0FESU5HOnR8fCh0PU9mLkRFRkFVTFQpLHQhPT10aGlzLl9sb2FkaW5nU3RhdGUmJih0aGlzLl9sb2FkaW5nU3RhdGU9dCx0aGlzLmxpc3RlbmVyJiZ0aGlzLmxpc3RlbmVyLmxvYWRpbmdTdGF0ZUNoYW5nZSh0KSl9bmdPbkRlc3Ryb3koKXt0aGlzLmxvYWRpbmdTdGF0ZT1PZi5ERUZB'@; put 'VUxUfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShFRCw4KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsckxvYWRpbmciLCIiXV0saW5wdXRzOntsb2FkaW5nU3RhdGU6WzAsImNsckxvYWRpbmciLCJsb2FkaW5n'@; put 'U3RhdGUiXX0sc3RhbmRhbG9uZTohMX0pLG59KSgpLE5mPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLmV4cGFuZGFibGU9MCx0aGlzLmhhc0V4cGFuZFRlbXBsYXRlPSExLHRoaXMuX2xvYWRpbmc9ITEsdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fZXhwYW5kQ2hhbmdlPW5ldyBN'@; put 'cn1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLl9sb2FkaW5nfXNldCBsb2FkaW5nKHQpeyh0PSEhdCkhPT10aGlzLl9sb2FkaW5nJiYodGhpcy5fbG9hZGluZz10KX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5fZXhwYW5kZWR9c2V0IGV4cGFuZGVkKHQpeyh0PSEhdCkhPT10aGlzLl9l'@; put 'eHBhbmRlZCYmKHRoaXMuX2V4cGFuZGVkPXQsdGhpcy5fZXhwYW5kQ2hhbmdlLm5leHQodCkpfWdldCBleHBhbmRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZXhwYW5kQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfXRvZ2dsZSgpe3RoaXMuZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfWxvYWRpbmdTdGF0'@; put 'ZUNoYW5nZSh0KXt0aGlzLmxvYWRpbmc9dD09PU9mLkxPQURJTkd9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGZ2dD0wO2Z1bmN0aW9uIFBoKCl7cmV0'@; put 'dXJuImNsci1pZC0iK2Z2dCsrfWxldCB4RWU9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24iXSxbImNsci1zdGVw'@; put 'LWRlc2NyaXB0aW9uIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiIsITApfSxzdGFuZGFsb25lOiExLG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0'@; put 'LHIpezEmdCYmKGZvKCksV3IoMCkpfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxufSkoKTtjb25zdCBoND0iMC4ycyBlYXNlLWluLW91dCIscHZ0PVtScCgic2tpcEluaXRpYWxSZW5kZXIiLFtwaCgiOmVudGVyIixbXSldKSxScCgidG9nZ2xlIixbcGgoInZvaWQgPT4g'@; put 'KiIsW3ZsKHtkaXNwbGF5OiJibG9jayIsaGVpZ2h0OjB9KSx5MChoNCx2bCh7aGVpZ2h0OiIqIn0pKV0pXSldLEhvZT0oUnAoInNraXBJbml0aWFsUmVuZGVyIixbcGgoIjplbnRlciIsW10pXSksUnAoInRvZ2dsZSIsW3BoKCJ2b2lkID0+ICoiLFt2bCh7ZGlzcGxheToiYmxvY2siLGhlaWdo'@; put 'dDowfSkseTAoaDQsdmwoe2hlaWdodDoiKiJ9KSldKSxwaCgiKiA9PiB2b2lkIixbdmwoe2Rpc3BsYXk6ImJsb2NrIn0pLHkwKGg0LHZsKHtoZWlnaHQ6MCxkaXNwbGF5OiJub25lIn0pKV0pXSkse29wZW46Ik9wZW4iLGNsb3NlOiJDbG9zZSIsc2hvdzoiU2hvdyIsaGlkZToiSGlkZSIsYXBw'@; put 'bHk6IkFwcGx5IixjYW5jZWw6IkNhbmNlbCIsZXhwYW5kOiJFeHBhbmQiLGNvbGxhcHNlOiJDb2xsYXBzZSIsbW9yZToiTW9yZSIsc2VsZWN0OiJTZWxlY3QiLHNlbGVjdEFsbDoiU2VsZWN0IEFsbCIscHJldmlvdXM6IlByZXZpb3VzIixuZXh0OiJOZXh0IixjdXJyZW50OiJKdW1wIHRvIGN1'@; put 'cnJlbnQiLGluZm86IkluZm8iLHN1Y2Nlc3M6IlN1Y2Nlc3MiLHdhcm5pbmc6Ildhcm5pbmciLGRhbmdlcjoiRXJyb3IiLG5ldXRyYWw6Ik5ldXRyYWwiLHVua25vd246IlVua25vd24iLHJvd0FjdGlvbnM6IkF2YWlsYWJsZSBhY3Rpb25zIixwaWNrQ29sdW1uczoiTWFuYWdlIENvbHVtbnMi'@; put 'LHNob3dDb2x1bW5zOiJTaG93IENvbHVtbnMiLHNvcnRDb2x1bW46IlNvcnQgQ29sdW1uIixmaXJzdFBhZ2U6IkZpcnN0IFBhZ2UiLGxhc3RQYWdlOiJMYXN0IFBhZ2UiLG5leHRQYWdlOiJOZXh0IFBhZ2UiLHByZXZpb3VzUGFnZToiUHJldmlvdXMgUGFnZSIsY3VycmVudFBhZ2U6IkN1cnJl'@; put 'bnQgUGFnZSIsdG90YWxQYWdlczoiVG90YWwgUGFnZXMiLGZpbHRlckl0ZW1zOiJGaWx0ZXIgaXRlbXMiLG1pblZhbHVlOiJNaW4gdmFsdWUiLG1heFZhbHVlOiJNYXggdmFsdWUiLG1vZGFsQ29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgTW9kYWwgQ29udGVudCIsbW9kYWxDb250ZW50RW5k'@; put 'OiJFbmQgb2YgTW9kYWwgQ29udGVudCIsc2lkZVBhbmVsUGluOiJQaW4gU2lkZSBQYW5lbCIsc2hvd0NvbHVtbnNNZW51RGVzY3JpcHRpb246IlNob3cgb3IgaGlkZSBjb2x1bW5zIG1lbnUiLGFsbENvbHVtbnNTZWxlY3RlZDoiQWxsIGNvbHVtbnMgc2VsZWN0ZWQiLHNpZ25wb3N0VG9nZ2xl'@; put 'OiJTaWducG9zdCBUb2dnbGUiLHNpZ25wb3N0Q2xvc2U6IkNsb3NlIixsb2FkaW5nOiJMb2FkaW5nIixkZXRhaWxQYW5lU3RhcnQ6IlN0YXJ0IG9mIHJvdyBkZXRhaWxzIixkZXRhaWxQYW5lRW5kOiJFbmQgb2Ygcm93IGRldGFpbHMiLHNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbDoiU2luZ2xl'@; put 'IHNlbGVjdGlvbiBoZWFkZXIiLHNpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWw6IlNpbmdsZSBhY3Rpb25hYmxlIGhlYWRlciIsZGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbDoiVG9nZ2xlIG1vcmUgcm93IGNvbnRlbnQiLGRhdGFncmlkRmlsdGVyQXJpYUxhYmVsOiJ7Q09MVU1OfSBmaWx0ZXIi'@; put 'LGRhdGFncmlkRmlsdGVyTGFiZWw6IntDT0xVTU59IGZpbHRlciIsZGF0YWdyaWRGaWx0ZXJEaWFsb2dBcmlhTGFiZWw6IkZpbHRlciBkaWFsb2ciLGNvbHVtblNlcGFyYXRvckFyaWFMYWJlbDoiQ29sdW1uIHJlc2l6ZSBoYW5kbGUiLGNvbHVtblNlcGFyYXRvckRlc2NyaXB0aW9uOiJVc2Ug'@; put 'bGVmdCBvciByaWdodCBrZXkgdG8gcmVzaXplIHRoZSBjb2x1bW4iLGZyb21MYWJlbDoiRnJvbSIsdG9MYWJlbDoiVG8iLGFsZXJ0Q2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIGFsZXJ0IixhbGVydE5leHRBbGVydEFyaWFMYWJlbDoiTmV4dCBhbGVydCBtZXNzYWdlLCB7Q1VSUkVOVH0g'@; put 'b2Yge0NPVU5UfSIsYWxlcnRQcmV2aW91c0FsZXJ0QXJpYUxhYmVsOiJQcmV2aW91cyBhbGVydCBtZXNzYWdlLCB7Q1VSUkVOVH0gb2Yge0NPVU5UfSIsZGF0ZXBpY2tlckRpYWxvZ0xhYmVsOiJDaG9vc2UgZGF0ZSIsZGF0ZXBpY2tlclRvZ2dsZUNob29zZURhdGVMYWJlbDoiQ2hvb3NlIGRh'@; put 'dGUiLGRhdGVwaWNrZXJUb2dnbGVDaGFuZ2VEYXRlTGFiZWw6IkNoYW5nZSBkYXRlLCB7U0VMRUNURURfREFURX0iLGRhdGVwaWNrZXJQcmV2aW91c01vbnRoOiJQcmV2aW91cyBtb250aCIsZGF0ZXBpY2tlckN1cnJlbnRNb250aDoiQ3VycmVudCBtb250aCIsZGF0ZXBpY2tlck5leHRNb250'@; put 'aDoiTmV4dCBtb250aCIsZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlOiJQcmV2aW91cyBkZWNhZGUiLGRhdGVwaWNrZXJOZXh0RGVjYWRlOiJOZXh0IGRlY2FkZSIsZGF0ZXBpY2tlckN1cnJlbnREZWNhZGU6IkN1cnJlbnQgZGVjYWRlIixkYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0OiJTZWxl'@; put 'Y3QgbW9udGgsIHRoZSBjdXJyZW50IG1vbnRoIGlzIHtDQUxFTkRBUl9NT05USH0iLGRhdGVwaWNrZXJTZWxlY3RZZWFyVGV4dDoiU2VsZWN0IHllYXIsIHRoZSBjdXJyZW50IHllYXIgaXMge0NBTEVOREFSX1lFQVJ9IixkYXRlcGlja2VyU2VsZWN0ZWRMYWJlbDoie0ZVTExfREFURX0gLSBT'@; put 'ZWxlY3RlZCIsc3RhY2tWaWV3Q2hhbmdlZDoiVmFsdWUgY2hhbmdlZC4iLHJlc3BvbnNpdmVOYXZUb2dnbGVPcGVuOiJPcGVuIG5hdmlnYXRpb24gbWVudSIscmVzcG9uc2l2ZU5hdlRvZ2dsZUNsb3NlOiJDbG9zZSBuYXZpZ2F0aW9uIG1lbnUiLHJlc3BvbnNpdmVOYXZPdmVyZmxvd09wZW46'@; put 'Ik9wZW4gbmF2aWdhdGlvbiBvdmVyZmxvdyBtZW51IixyZXNwb25zaXZlTmF2T3ZlcmZsb3dDbG9zZToiQ2xvc2UgbmF2aWdhdGlvbiBvdmVyZmxvdyBtZW51Iix2ZXJ0aWNhbE5hdlRvZ2dsZToiVG9nZ2xlIHZlcnRpY2FsIG5hdmlnYXRpb24iLHRpbWVsaW5lU3RlcE5vdFN0YXJ0ZWQ6Ik5v'@; put 'dCBzdGFydGVkIix0aW1lbGluZVN0ZXBDdXJyZW50OiJDdXJyZW50Iix0aW1lbGluZVN0ZXBTdWNjZXNzOiJDb21wbGV0ZWQiLHRpbWVsaW5lU3RlcEVycm9yOiJFcnJvciIsdGltZWxpbmVTdGVwUHJvY2Vzc2luZzoiSW4gcHJvZ3Jlc3MiLGNvbWJvYm94RGVsZXRlOiJEZWxldGUgc2VsZWN0'@; put 'ZWQgb3B0aW9uIixjb21ib2JveFNlYXJjaGluZzonU2VhcmNoaW5nIGZvciBtYXRjaGVzIGZvciAie0lOUFVUfSInLGNvbWJvYm94U2VsZWN0aW9uOiJTZWxlY3Rpb24iLGNvbWJvYm94U2VsZWN0ZWQ6IlNlbGVjdGVkIixjb21ib2JveE5vUmVzdWx0czoiTm8gcmVzdWx0cyIsY29tYm9ib3hP'@; put 'cGVuOiJTaG93IG9wdGlvbnMiLGRhdGFncmlkRXhwYW5kYWJsZUJlZ2lubmluZ09mOiJCZWdpbm5pbmcgb2YiLGRhdGFncmlkRXhwYW5kYWJsZUVuZE9mOiJFbmQgb2YiLGRhdGFncmlkRXhwYW5kYWJsZVJvd0NvbnRlbnQ6IkV4cGFuZGFibGUgcm93IGNvbnRlbnQiLGRhdGFncmlkRXhwYW5k'@; put 'YWJsZVJvd3NIZWxwZXJUZXh0OiJTY3JlZW4gcmVhZGVyIHRhYmxlIGNvbW1hbmRzIG1heSBub3Qgd29yayBmb3Igdmlld2luZyBleHBhbmRlZCBjb250ZW50LCBwbGVhc2UgdXNlIHlvdXIgc2NyZWVuIHJlYWRlcidzIGJyb3dzZSBtb2RlIHRvIHJlYWQgdGhlIGNvbnRlbnQgZXhwb3NlZCBi'@; put 'eSB0aGlzIGJ1dHRvbiIsd2l6YXJkU3RlcDoiU3RlcCIsd2l6YXJkU3RlcFN1Y2Nlc3M6IkNvbXBsZXRlZCIsd2l6YXJkU3RlcEVycm9yOiJFcnJvciIsd2l6YXJkU3RlcG5hdkFyaWFMYWJlbDoiV2l6YXJkIHN0ZXBzIixwYXNzd29yZEhpZGU6IkhpZGUgcGFzc3dvcmQgZm9yIHtMQUJFTH0i'@; put 'LHBhc3N3b3JkU2hvdzoiU2hvdyBwYXNzd29yZCBmb3Ige0xBQkVMfSIsc2VsZWN0ZWRSb3dzOiJTZWxlY3RlZCByb3dzIixzdGVwQ29tcGxldGU6IlN0ZXAge1NURVB9IGNvbXBsZXRlIixzdGVwRXJyb3I6IkVycm9yIGluIHN0ZXAge1NURVB9Iixicm93c2U6IkJyb3dzZSIsZmlsZUNvdW50'@; put 'OiJ7Q09VTlR9IGZpbGVzIixjbGVhckZpbGU6IkNsZWFyIHtGSUxFfSIsY2xlYXJGaWxlczoiQ2xlYXIge0NPVU5UfSBmaWxlcyIsc2VsZWN0ZWRUcmVlTm9kZToic2VsZWN0ZWQiLHVuc2VsZWN0ZWRUcmVlTm9kZToidW5zZWxlY3RlZCIsYnJlYWRjcnVtYnNMYWJlbDoiYnJlYWRjcnVtYnMi'@; put 'LGV4cGFuZEJyZWFkY3J1bWJzTGFiZWw6IkV4cGFuZCBicmVhZGNydW1icyJ9KTtsZXQgaWw9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0cmluZ3M9SG9lfWdldCBrZXlzKCl7cmV0dXJuIHRoaXMuX3N0cmluZ3N9bG9jYWxpemUodCl7dGhpcy5fc3RyaW5ncz17Li4udGhp'@; put 'cy5fc3RyaW5ncywuLi50fX1wYXJzZSh0LHI9e30pe2NvbnN0IGk9T2JqZWN0LmtleXMocik7bGV0IG89dDtyZXR1cm4gaS5sZW5ndGgmJmkuZm9yRWFjaChhPT57bz1vLnJlcGxhY2UoYHske2F9fWAsclthXSl9KSxvfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l'@; put 'dyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxufSkoKTt2YXIgZjQ9ZnVuY3Rpb24obil7cmV0dXJuIG4uSW5hY3RpdmU9ImluYWN0aXZlIixuLkVycm9yPSJlcnJvciIsbi5Db21wbGV0ZT0iY29tcGxldGUi'@; put 'LG59KGY0fHx7fSksTUQ9ZnVuY3Rpb24obil7cmV0dXJuIG4uRGVmYXVsdD0iZGVmYXVsdCIsbi5NdWx0aT0ibXVsdGkiLG59KE1EfHx7fSk7bGV0IG12dD0wO2NsYXNzIHZ2dHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaWQ9ZSx0aGlzLmFjY29yZGlvbklkPXQsdGhpcy5zdGF0dXM9ZjQuSW5h'@; put 'Y3RpdmUsdGhpcy5pbmRleD1udWxsLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5vcGVuPSExLHRoaXMudGVtcGxhdGVJZD1gJHt0aGlzLmlkfS0ke3RoaXMuYWNjb3JkaW9uSWR9YH19Y2xhc3MgQUVle2NvbnN0cnVjdG9yKCl7dGhpcy5zdHJhdGVneT1NRC5EZWZhdWx0LHRoaXMuYWNjb3JkaW9u'@; put 'Q291bnQ9bXZ0KyssdGhpcy5fcGFuZWxzPXt9fWdldCBwYW5lbHMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcGFuZWxzKS5tYXAoZT0+dGhpcy5fcGFuZWxzW2VdKX1zZXRTdHJhdGVneShlKXt0aGlzLnN0cmF0ZWd5PWV9dXBkYXRlUGFuZWxPcmRlcihlKXtlLmZvckVhY2goKHQscik9'@; put 'PnRoaXMuX3BhbmVsc1t0XS5pbmRleD1yKSx0aGlzLnJlbW92ZU9sZFBhbmVscyhlKX1hZGRQYW5lbChlLHQ9ITEpe3RoaXMuX3BhbmVsc1tlXT1uZXcgdnZ0KGUsdGhpcy5hY2NvcmRpb25Db3VudCksdGhpcy5fcGFuZWxzW2VdLm9wZW49dH10b2dnbGVQYW5lbChlLHQpe2NvbnN0IGk9dm9p'@; put 'ZCAwIT09dD90OiF0aGlzLl9wYW5lbHNbZV0ub3BlbjtpJiZ0aGlzLnN0cmF0ZWd5PT09TUQuRGVmYXVsdCYmdGhpcy5jbG9zZUFsbFBhbmVscygpLHRoaXMuX3BhbmVsc1tlXS5vcGVuPWl9ZGlzYWJsZVBhbmVsKGUsdCl7dGhpcy5fcGFuZWxzW2VdLmRpc2FibGVkPXR9Y2xvc2VBbGxQYW5l'@; put 'bHMoKXt0aGlzLnBhbmVscy5mb3JFYWNoKGU9PnRoaXMuX3BhbmVsc1tlLmlkXS5vcGVuPSExKX1yZW1vdmVPbGRQYW5lbHMoZSl7dGhpcy5wYW5lbHMuZmlsdGVyKHQ9PnZvaWQgMD09PWUuZmluZChyPT5yPT09dC5pZCkpLmZvckVhY2godD0+ZGVsZXRlIHRoaXMuX3BhbmVsc1t0LmlkXSl9'@; put 'fWxldCBURD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5hY2NvcmRpb249bmV3IEFFZSx0aGlzLl9wYW5lbHNDaGFuZ2VzPW5ldyAkaSh0aGlzLmFjY29yZGlvbi5wYW5lbHMpfWdldFBhbmVsQ2hhbmdlcyh0KXtyZXR1cm4gdGhpcy5fcGFuZWxzQ2hhbmdlcy5waXBlKEVzKHI9'@; put 'PnIuZmluZChpPT5pLmlkPT09dCkpKX1zZXRTdHJhdGVneSh0KXt0aGlzLmFjY29yZGlvbi5zZXRTdHJhdGVneSh0KX1hZGRQYW5lbCh0LHI9ITEpe3RoaXMuYWNjb3JkaW9uLmFkZFBhbmVsKHQsciksdGhpcy5lbWl0VXBkYXRlZFBhbmVscygpfXRvZ2dsZVBhbmVsKHQscil7dGhpcy5hY2Nv'@; put 'cmRpb24udG9nZ2xlUGFuZWwodCxyKSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9ZGlzYWJsZVBhbmVsKHQscil7dGhpcy5hY2NvcmRpb24uZGlzYWJsZVBhbmVsKHQsciksdGhpcy5lbWl0VXBkYXRlZFBhbmVscygpfXVwZGF0ZVBhbmVsT3JkZXIodCl7dGhpcy5hY2NvcmRpb24udXBkYXRl'@; put 'UGFuZWxPcmRlcih0KSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9ZW1pdFVwZGF0ZWRQYW5lbHMoKXt0aGlzLl9wYW5lbHNDaGFuZ2VzLm5leHQodGhpcy5hY2NvcmRpb24ucGFuZWxzKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1'@; put 'cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCksQno9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEpe3RoaXMucGFyZW50PXQsdGhpcy5jb21tb25TdHJpbmdzPXIsdGhpcy5hY2NvcmRpb25TZXJ2aWNlPWksdGhpcy5pZkV4cGFuZFNlcnZpY2U9'@; put 'byx0aGlzLmNkcj1hLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5wYW5lbE9wZW49ITEsdGhpcy5oZWFkaW5nRW5hYmxlZD0hMSx0aGlzLnBhbmVsT3BlbkNoYW5nZT1uZXcgS3IsdGhpcy5faWQ9UGgoKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKHQpe3RoaXMuX2lkPXR9Z2V0IHBh'@; put 'bmVsTnVtYmVyKCl7cmV0dXJuIHRoaXMuX3BhbmVsSW5kZXgrMX1nZXQgaGVhZGluZ0xldmVsKCl7cmV0dXJuIHRoaXMuZXhwbGljaXRIZWFkaW5nTGV2ZWw/dGhpcy5leHBsaWNpdEhlYWRpbmdMZXZlbDp0aGlzLnBhcmVudD80OjN9bmdPbkluaXQoKXt0aGlzLnBhbmVsPXRoaXMuYWNjb3Jk'@; put 'aW9uU2VydmljZS5nZXRQYW5lbENoYW5nZXModGhpcy5pZCkucGlwZShmMSh0PT50aGlzLmVtaXRQYW5lbENoYW5nZSh0KSkpLHRoaXMuYWNjb3JkaW9uU2VydmljZS5hZGRQYW5lbCh0aGlzLmlkLHRoaXMucGFuZWxPcGVuKSx0aGlzLmFjY29yZGlvblNlcnZpY2UudG9nZ2xlUGFuZWwodGhp'@; put 'cy5pZCx0aGlzLnBhbmVsT3BlbiksdGhpcy5hY2NvcmRpb25TZXJ2aWNlLmRpc2FibGVQYW5lbCh0aGlzLmlkLHRoaXMuZGlzYWJsZWQpfW5nT25DaGFuZ2VzKHQpe3RoaXMucGFuZWwmJnQucGFuZWxPcGVuJiZ0LnBhbmVsT3Blbi5jdXJyZW50VmFsdWUhPT10LnBhbmVsT3Blbi5wcmV2aW91'@; put 'c1ZhbHVlJiZ0aGlzLmFjY29yZGlvblNlcnZpY2UudG9nZ2xlUGFuZWwodGhpcy5pZCx0LnBhbmVsT3Blbi5jdXJyZW50VmFsdWUpLHRoaXMucGFuZWwmJnQuZGlzYWJsZWQmJnQuZGlzYWJsZWQuY3VycmVudFZhbHVlIT09dC5kaXNhYmxlZC5wcmV2aW91c1ZhbHVlJiZ0aGlzLmFjY29yZGlv'@; put 'blNlcnZpY2UuZGlzYWJsZVBhbmVsKHRoaXMuaWQsdC5kaXNhYmxlZC5jdXJyZW50VmFsdWUpfXRvZ2dsZVBhbmVsKCl7dGhpcy5hY2NvcmRpb25TZXJ2aWNlLnRvZ2dsZVBhbmVsKHRoaXMuaWQpfWNvbGxhcHNlUGFuZWxPbkFuaW1hdGlvbkRvbmUodCl7dC5vcGVufHwodGhpcy5pZkV4cGFu'@; put 'ZFNlcnZpY2UuZXhwYW5kZWQ9ITEpfWdldFBhbmVsU3RhdGVDbGFzc2VzKHQpe3JldHVybmBjbHItYWNjb3JkaW9uLXBhbmVsLSR7dC5zdGF0dXN9ICR7dC5vcGVuPyJjbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4iOiIifWB9Z2V0QWNjb3JkaW9uQ29udGVudElkKHQpe3JldHVybmBjbHItYWNj'@; put 'b3JkaW9uLWNvbnRlbnQtJHt0fSdgfWdldEFjY29yZGlvbkhlYWRlcklkKHQpe3JldHVybmBjbHItYWNjb3JkaW9uLWhlYWRlci0ke3R9YH1zdGVwQ29tcGxldGVUZXh0KHQpe3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuc3RlcENvbXBs'@; put 'ZXRlLHtTVEVQOnQudG9TdHJpbmcoKX0pfXN0ZXBFcnJvclRleHQodCl7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zdGVwRXJyb3Ise1NURVA6dC50b1N0cmluZygpfSl9ZW1pdFBhbmVsQ2hhbmdlKHQpe3QuaW5kZXghPT10aGlzLl9w'@; put 'YW5lbEluZGV4JiYodGhpcy5fcGFuZWxJbmRleD10LmluZGV4LHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSksdC5vcGVuIT09dGhpcy5wYW5lbE9wZW4mJih0aGlzLnBhbmVsT3BlbkNoYW5nZS5lbWl0KHQub3BlbiksdGhpcy5wYW5lbE9wZW49dC5vcGVuKSx0Lm9wZW4mJih0aGlzLmlmRXhw'@; put 'YW5kU2VydmljZS5leHBhbmRlZD0hMCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKG4sMTIpLHplKGlsKSx6ZShURCksemUoTmYpLHplKFVsKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tcGFu'@; put 'ZWwiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmRmEoaSx4RWUsNCksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci5hY2NvcmRpb25EZXNjcmlwdGlvbj1vKX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiY2xyLWFjY29y'@; put 'ZGlvbi1wYW5lbCIsITApKCJjbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkIixyLmRpc2FibGVkKX0saW5wdXRzOntkaXNhYmxlZDpbMCwiY2xyQWNjb3JkaW9uUGFuZWxEaXNhYmxlZCIsImRpc2FibGVkIl0scGFuZWxPcGVuOlswLCJjbHJBY2NvcmRpb25QYW5lbE9wZW4iLCJwYW5lbE9w'@; put 'ZW4iXSxoZWFkaW5nRW5hYmxlZDpbMCwiY2xyQWNjb3JkaW9uUGFuZWxIZWFkaW5nRW5hYmxlZCIsImhlYWRpbmdFbmFibGVkIl0sZXhwbGljaXRIZWFkaW5nTGV2ZWw6WzAsImNsckFjY29yZGlvblBhbmVsSGVhZGluZ0xldmVsIiwiZXhwbGljaXRIZWFkaW5nTGV2ZWwiXX0sb3V0cHV0czp7'@; put 'cGFuZWxPcGVuQ2hhbmdlOiJjbHJBY2NvcmRpb25QYW5lbE9wZW5DaGFuZ2UifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbTmZdKSxpdV0sbmdDb250ZW50U2VsZWN0b3JzOk00dCxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1siaGVhZGVyQnV0dG9uIiwiIl0sWzQsIm5nSWYiXSxbMywi'@; put 'bmdDbGFzcyJdLFsxLCJjbHItYWNjb3JkaW9uLWhlYWRlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uIiwzLCJjbGljayIsImlkIiwiZGlzYWJsZWQiXSxbMSwiY2xyLWFjY29yZGlvbi1zdGF0dXMiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rp'@; put 'b24iLCJyaWdodCIsMSwiY2xyLWFjY29yZGlvbi1hbmdsZSJdLFsicm9sZSIsInJlZ2lvbiIsMSwiY2xyLWFjY29yZGlvbi1jb250ZW50LXJlZ2lvbiIsMywiaWQiXSxbImNsYXNzIiwiY2xyLWFjY29yZGlvbi1jb250ZW50Iiw0LCJuZ0lmIl0sWzEsImNsci1hY2NvcmRpb24tY29udGVudCJd'@; put 'LFsxLCJjbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhFNHQpLFluKDAseDR0LDEyLDE2LCJuZy1jb250YWluZXIiLDEpLEFjKDEsImFzeW5jIikpLDImdCYmcnQoIm5nSWYiLFRkKDEsMSxyLnBhbmVsKSl9LGRlcGVuZGVuY2ll'@; put 'czpbRmgsWXMsSnMsbUldLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246cHZ0fSxjaGFuZ2VEZXRlY3Rpb246MH0pLG59KSgpLGtFZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuYWNjb3JkaW9uU2VydmljZT10LHRoaXMubXVsdGlQYW5lbD0hMSx0aGlzLnN1YnNj'@; put 'cmlwdGlvbnM9W119bmdPbkluaXQoKXt0aGlzLnNldEFjY29yZGlvblN0cmF0ZWd5KCl9bmdPbkNoYW5nZXModCl7dC5tdWx0aVBhbmVsLmN1cnJlbnRWYWx1ZSE9PXQubXVsdGlQYW5lbC5wcmV2aW91c1ZhbHVlJiZ0aGlzLnNldEFjY29yZGlvblN0cmF0ZWd5KCl9bmdBZnRlclZpZXdJbml0'@; put 'KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JET01DaGFuZ2VzKCkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51bnN1YnNjcmliZSgpKX1zZXRBY2NvcmRpb25TdHJhdGVneSgpe3RoaXMuYWNjb3JkaW9uU2VydmljZS5zZXRT'@; put 'dHJhdGVneSh0aGlzLm11bHRpUGFuZWw/TUQuTXVsdGk6TUQuRGVmYXVsdCl9bGlzdGVuRm9yRE9NQ2hhbmdlcygpe3JldHVybiB0aGlzLnBhbmVscy5jaGFuZ2VzLnBpcGUocWcodGhpcy5wYW5lbHMpKS5zdWJzY3JpYmUodD0+dGhpcy5hY2NvcmRpb25TZXJ2aWNlLnVwZGF0ZVBhbmVsT3Jk'@; put 'ZXIodC50b0FycmF5KCkubWFwKHI9PnIuaWQpKSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKFREKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24iXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24o'@; put 'dCxyLGkpe2lmKDEmdCYmRmEoaSxCeiw0KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLnBhbmVscz1vKX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiY2xyLWFjY29yZGlvbiIsITApfSxpbnB1dHM6e211bHRpUGFuZWw6WzAsImNsckFjY29yZGlv'@; put 'bk11bHRpUGFuZWwiLCJtdWx0aVBhbmVsIl19LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtURF0pLGl1XSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFdyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5n'@; put 'ZURldGVjdGlvbjowfSksbn0pKCksUkVlPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uLWNvbnRlbnQiXSxbImNsci1zdGVwLWNvbnRl'@; put 'bnQiXV0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFdyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbn0pKCksSUVlPSgoKT0+e2NsYXNzIG57fXJldHVy'@; put 'biBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uLXRpdGxlIl0sWyJjbHItc3RlcC10aXRsZSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYm'@; put 'd3IoImNsci1hY2NvcmRpb24tdGl0bGUiLCEwKX0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFdyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbn0pKCks'@; put 'c009KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuZGlzYWJsZUNob2NvbGF0ZUNoZWNrPSExLHRoaXMuX2Nob2NvbGF0ZT1uZXcgTXJ9Z2V0IGNob2NvbGF0ZSgpe3JldHVybiB0aGlzLl9jaG9jb2xhdGUuYXNPYnNlcnZhYmxlKCl9bmdBZnRlclZpZXdDaGVja2VkKCl7dGhpcy5k'@; put 'aXNhYmxlQ2hvY29sYXRlQ2hlY2t8fHRoaXMuX2Nob2NvbGF0ZS5uZXh0KCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHN0YW5kYWxvbmU6ITF9KSxufSkoKSxsTT0oKCk9PntjbGFzcyBue2NvbnN0cnVj'@; put 'dG9yKHQscil7dGhpcy5zdWJzY3JpcHRpb249ci5jaG9jb2xhdGUuc3Vic2NyaWJlKCgpPT57dGhpcy5sYXRlc3RGbGF2b3IhPT10aGlzLmZsYXZvciYmKHIuZGlzYWJsZUNob2NvbGF0ZUNoZWNrPSEwLHQuZGV0ZWN0Q2hhbmdlcygpLHIuZGlzYWJsZUNob2NvbGF0ZUNoZWNrPSExKX0pfW5n'@; put 'QWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMubGF0ZXN0Rmxhdm9yPXRoaXMuZmxhdm9yfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoVWwpLHplKHNNKSl9LG4u'@; put 'XHUwMjc1ZGlyPSRyKHt0eXBlOm4sc3RhbmRhbG9uZTohMX0pLG59KSgpLFZvZT0oKCk9PntjbGFzcyBuIGV4dGVuZHMgc017fXJldHVybiBuLlx1MDI3NWZhYz0oKCk9PntsZXQgZTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuKGV8fChlPXdhKG4pKSkocnx8bil9fSkoKSxuLlx1MDI3NWRp'@; put 'cj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uIl1dLHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W0ZvXX0pLG59KSgpLERFZT0oKCk9PntjbGFzcyBuIGV4dGVuZHMgbE17Y29uc3RydWN0b3IodCxyLGkpe2lmKCFyKXRocm93IG5ldyBFcnJvcigiY2xyLWFjY29yZGlvbi1w'@; put 'YW5lbCBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBjbHItYWNjb3JkaW9uIik7c3VwZXIodCxyKSx0aGlzLmV4cGFuZD1pfWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5leHBhbmQuZXhwYW5kZWR9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4p'@; put 'KHplKFVsKSx6ZShWb2UsOCksemUoTmYpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbi1wYW5lbCJdXSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxufSkoKSxMRWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25z'@; put 'KHJNLEFwLGtwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8sV2xdfSksbn0pKCksQ3Z0PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1m'@; put 'dW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdsLExFZSxMRWVdfSksbn0pKCk7dmFyIE1vPWZ1bmN0aW9uKG4pe3JldHVybiBuLkFycm93TGVmdD0iQXJyb3dMZWZ0IixuLkFycm93VXA9IkFy'@; put 'cm93VXAiLG4uQXJyb3dSaWdodD0iQXJyb3dSaWdodCIsbi5BcnJvd0Rvd249IkFycm93RG93biIsbi5CYWNrc3BhY2U9IkJhY2tzcGFjZSIsbi5UYWI9IlRhYiIsbi5FbnRlcj0iRW50ZXIiLG4uRXNjYXBlPSJFc2NhcGUiLG4uU3BhY2U9IlNwYWNlIixuLlNwYWNlYmFyPSIgIixuLkhvbWU9'@; put 'IkhvbWUiLG4uRW5kPSJFbmQiLG4uUGFnZURvd249IlBhZ2VEb3duIixuLlBhZ2VVcD0iUGFnZVVwIixufShNb3x8e30pLEhiPWZ1bmN0aW9uKG4pe3JldHVybiBuLkFycm93VXA9IlVwIixuLkFycm93RG93bj0iRG93biIsbi5BcnJvd1JpZ2h0PSJSaWdodCIsbi5BcnJvd0xlZnQ9IkxlZnQi'@; put 'LG4uU3BhY2U9IlNwYWNlYmFyIixuLkVzY2FwZT0iRXNjIixufShIYnx8e30pO2Z1bmN0aW9uIHRtKG4pe3JldHVybiBuPT09TW8uQXJyb3dVcHx8bj09PUhiLkFycm93VXA/TW8uQXJyb3dVcDpuPT09TW8uQXJyb3dEb3dufHxuPT09SGIuQXJyb3dEb3duP01vLkFycm93RG93bjpuPT09TW8u'@; put 'QXJyb3dSaWdodHx8bj09PUhiLkFycm93UmlnaHQ/TW8uQXJyb3dSaWdodDpuPT09TW8uQXJyb3dMZWZ0fHxuPT09SGIuQXJyb3dMZWZ0P01vLkFycm93TGVmdDpuPT09TW8uU3BhY2V8fG49PT1IYi5TcGFjZT9Nby5TcGFjZTpuPT09TW8uRXNjYXBlfHxuPT09SGIuRXNjYXBlP01vLkVzY2Fw'@; put 'ZTpufWZ1bmN0aW9uIGpvZShuKXtjb25zdCBlPXRtKG4ua2V5KTsoZT09PU1vLkFycm93VXB8fGU9PT1Nby5BcnJvd0Rvd258fGU9PT1Nby5BcnJvd0xlZnR8fGU9PT1Nby5BcnJvd1JpZ2h0KSYmbi5wcmV2ZW50RGVmYXVsdCgpfWxldCBLdT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7'@; put 'dGhpcy5fb3Blbj0hMSx0aGlzLl9vcGVuQ2hhbmdlPW5ldyBNcix0aGlzLl9vcGVuRXZlbnRDaGFuZ2U9bmV3IE1yLHRoaXMuX3BvcG92ZXJBbGlnbmVkPW5ldyBNcix0aGlzLl9wb3BvdmVyVmlzaWJsZT1uZXcgTXJ9Z2V0IG9wZW5DaGFuZ2UoKXtyZXR1cm4gdGhpcy5fb3BlbkNoYW5nZS5h'@; put 'c09ic2VydmFibGUoKX1nZXQgcG9wb3ZlclZpc2libGUoKXtyZXR1cm4gdGhpcy5fcG9wb3ZlclZpc2libGUuYXNPYnNlcnZhYmxlKCl9Z2V0IG9wZW5FdmVudCgpe3JldHVybiB0aGlzLl9vcGVuRXZlbnR9c2V0IG9wZW5FdmVudCh0KXt0aGlzLl9vcGVuRXZlbnQ9dCx0aGlzLl9vcGVuRXZl'@; put 'bnRDaGFuZ2UubmV4dCh0KX1nZXQgb3Blbigpe3JldHVybiB0aGlzLl9vcGVufXNldCBvcGVuKHQpe3RoaXMuX29wZW4hPT0odD0hIXQpJiYodGhpcy5fb3Blbj10LHRoaXMuX29wZW5DaGFuZ2UubmV4dCh0KSl9Z2V0IG9yaWdpbmFsRXZlbnQoKXtyZXR1cm4gdGhpcy5fb3BlbkV2ZW50fWdl'@; put 'dCBwb3BvdmVyQWxpZ25lZCgpe3JldHVybiB0aGlzLl9wb3BvdmVyQWxpZ25lZC5hc09ic2VydmFibGUoKX1nZXRFdmVudENoYW5nZSgpe3JldHVybiB0aGlzLl9vcGVuRXZlbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9dG9nZ2xlV2l0aEV2ZW50KHQpe2pvZSh0KSx0aGlzLm9wZW5FdmVudD10'@; put 'LHRoaXMub3Blbj0hdGhpcy5vcGVufXBvcG92ZXJWaXNpYmxlRW1pdCh0KXt0aGlzLl9wb3BvdmVyVmlzaWJsZS5uZXh0KHQpfXBvcG92ZXJBbGlnbmVkRW1pdCh0KXt0aGlzLl9wb3BvdmVyQWxpZ25lZC5uZXh0KHQpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l'@; put 'dyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxBRD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLnJlbmRlcmVyPXQsdGhpcy5zbWFydE9wZW5TZXJ2aWNlPXIsdGhpcy5kb2N1bWVudD1pLHRoaXMub3V0c2lk'@; put 'ZUNsaWNrQ2xvc2U9ITAsdGhpcy5zY3JvbGxUb0Nsb3NlPSEwLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChyLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKG89PntvPyh0aGlzLmFkZEVzY2FwZUxpc3RlbmVyKCksdGhpcy5hZGRDbGlja0xpc3RlbmVyKCksdGhp'@; put 'cy5hZGRTY3JvbGxMaXN0ZW5lcigpKTp0aGlzLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCl9KSxyLmdldEV2ZW50Q2hhbmdlKCkuc3Vic2NyaWJlKG89Pnt0aGlzLmlnbm9yZWRFdmVudD1vfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51bnN1YnNj'@; put 'cmliZSgpKSx0aGlzLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCl9YWRkU2Nyb2xsTGlzdGVuZXIoKXt0aGlzLnNjcm9sbFRvQ2xvc2UmJih0aGlzLmRvY3VtZW50U2Nyb2xsZXI9SmcodGhpcy5kb2N1bWVudCwic2Nyb2xsIix7Y2FwdHVyZTohMH0pLHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9u'@; put 'PXRoaXMuZG9jdW1lbnRTY3JvbGxlci5waXBlKHN1KHRoaXMudGVzdEZvclNtYXJ0UG9wb3ZlckNvbnRlbnRDb250YWluZXIpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3Blbj0hMSx0aGlzLnNldEFuY2hvckZvY3VzKCl9KSl9cmVtb3ZlU2Nyb2xsTGlzdGVuZXIo'@; put 'KXt0aGlzLmRvY3VtZW50U2Nyb2xsZXImJih0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLGRlbGV0ZSB0aGlzLmRvY3VtZW50U2Nyb2xsZXIpfWFkZENsaWNrTGlzdGVuZXIoKXt0aGlzLm91dHNpZGVDbGlja0Nsb3NlJiYodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXI9'@; put 'dGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwiY2xpY2siLHQ9Pnt0PT09dGhpcy5pZ25vcmVkRXZlbnQ/ZGVsZXRlIHRoaXMuaWdub3JlZEV2ZW50Oih0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3Blbj0hMSx0LnRhcmdldC5mb2N1cygpKX0pKX1yZW1vdmVDbGlja0xpc3RlbmVy'@; put 'KCl7dGhpcy5vdXRzaWRlQ2xpY2tDbG9zZSYmKGRlbGV0ZSB0aGlzLmlnbm9yZWRFdmVudCx0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciYmKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCksZGVsZXRlIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSl9YWRkRXNjYXBlTGlzdGVuZXIo'@; put 'KXt0aGlzLmVzY2FwZUxpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsImtleWRvd24uZXNjYXBlIiwoKT0+e3RoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuPSExLHRoaXMuc2V0QW5jaG9yRm9jdXMoKX0pfXJlbW92ZUVzY2FwZUxpc3RlbmVyKCl7dGhpcy5lc2Nh'@; put 'cGVMaXN0ZW5lciYmKHRoaXMuZXNjYXBlTGlzdGVuZXIoKSxkZWxldGUgdGhpcy5lc2NhcGVMaXN0ZW5lcil9c2V0Q2xvc2VGb2N1cygpe3RoaXMuY2xvc2VCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfXNldEFuY2hvckZvY3VzKCl7dGhpcy5hbmNob3JCdXR0b25SZWYubmF0aXZl'@; put 'RWxlbWVudC5mb2N1cygpfXRlc3RGb3JTbWFydFBvcG92ZXJDb250ZW50Q29udGFpbmVyKHQpe2xldCByPXQudGFyZ2V0O2Zvcig7ci5jbGFzc0xpc3QmJiJib2R5IiE9PXIucGFyZW50RWxlbWVudC5sb2NhbE5hbWU7KXI9ci5wYXJlbnRFbGVtZW50O3JldHVybiEhci5jbGFzc0xpc3QmJiFy'@; put 'LmNsYXNzTGlzdC5jb250YWlucygiY2xyLXBvcG92ZXItY29udGVudCIpfXJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCl7dGhpcy5yZW1vdmVTY3JvbGxMaXN0ZW5lcigpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lcigpLHRoaXMucmVtb3ZlRXNjYXBlTGlzdGVuZXIoKX19cmV0dXJuIG4uXHUw'@; put 'Mjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoTnQpLG9yKEt1KSxvcihUbCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGtEPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyKXt0LmFuY2hvckJ1dHRvblJlZj1y'@; put 'fX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShBRCksemUobm8pKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyUG9wb3ZlckFuY2hvciIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIp'@; put 'ezImdCYmd3IoImNsci1hbmNob3IiLCEwKX0sc3RhbmRhbG9uZTohMX0pLG59KSgpLEZFZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLmVsZW1lbnRSZWY9dCx0aGlzLnNtYXJ0RXZlbnRzU2VydmljZT1yLHRoaXMuc21hcnRPcGVuU2VydmljZT1pLHRoaXMuY2xvc2VD'@; put 'aGFuZ2U9bmV3IEtyLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChpLm9wZW5DaGFuZ2UucGlwZShzdShvPT4hbykpLnN1YnNjcmliZSgoKT0+e3RoaXMuY2xvc2VDaGFuZ2UubmV4dCgpfSkpfWhhbmRsZUNsaWNrKHQpe3RoaXMuc21hcnRPcGVuU2Vydmlj'@; put 'ZS50b2dnbGVXaXRoRXZlbnQodCksdGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uuc2V0QW5jaG9yRm9jdXMoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5jbG9zZUJ1dHRvblJlZj10aGlzLmVsZW1lbnRSZWYsdGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uuc2V0Q2xv'@; put 'c2VGb2N1cygpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51bnN1YnNjcmliZSgpKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUobm8pLHplKEFEKSx6ZShLdSkpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpu'@; put 'LHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsxJnQmJnd0KCJjbGljayIsZnVuY3Rpb24obyl7cmV0dXJuIHIuaGFuZGxlQ2xpY2sobyl9KSwyJnQmJndyKCJjbHItc21hcnQtY2xvc2UtYnV0'@; put 'dG9uIiwhMCl9LG91dHB1dHM6e2Nsb3NlQ2hhbmdlOiJjbHJQb3BvdmVyT25DbG9zZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITF9KSxufSkoKTt2YXIgQjI9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5WRVJUSUNBTD0wXT0iVkVSVElDQUwiLG5bbi5IT1JJWk9OVEFMPTFdPSJIT1JJWk9OVEFMIixu'@; put 'fShCMnx8e30pLFFsPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uU1RBUlQ9MF09IlNUQVJUIixuW24uQ0VOVEVSPS41XT0iQ0VOVEVSIixuW24uRU5EPTFdPSJFTkQiLG59KFFsfHx7fSksUkQ9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5CT1RUT009MF09IkJPVFRPTSIsbltuLkxFRlQ9MV09IkxF'@; put 'RlQiLG5bbi5SSUdIVD0yXT0iUklHSFQiLG5bbi5UT1A9M109IlRPUCIsbn0oUkR8fHt9KTtjb25zdCB5dj1uPT4oey4uLm4sc2lkZTotMSpuLnNpZGV9KSxyNz0obixlKT0+e2NvbnN0IHQ9bi5jb250ZW50KyhlPy41Oi0uNSk7cmV0dXJuIHQ8MHx8dD4xP246ey4uLm4sY29udGVudDp0fX07'@; put 'ZnVuY3Rpb24gY00obixlLHQpe3JldHVybiByPT5lKG4ociksdCl9ZnVuY3Rpb24gSXAobixlLHQpe2xldCByPWUubGVmdCxpPWUudG9wO3N3aXRjaChuLmF4aXMrbi5zaWRlKXtjYXNlLTE6cis9UEVlKG4sZSx0KSxpLT10LmhlaWdodDticmVhaztjYXNlIDE6cis9UEVlKG4sZSx0KSxpKz1l'@; put 'LmhlaWdodDticmVhaztjYXNlIDA6ci09dC53aWR0aCxpKz1IRWUobixlLHQpO2JyZWFrO2Nhc2UgMjpyKz1lLndpZHRoLGkrPUhFZShuLGUsdCl9cmV0dXJue3hPZmZzZXQ6cix5T2Zmc2V0Oml9fWZ1bmN0aW9uIFBFZShuLGUsdCl7bGV0IHI9MDtzd2l0Y2gobi5hbmNob3Ipe2Nhc2UgUWwu'@; put 'U1RBUlQ6YnJlYWs7Y2FzZSBRbC5DRU5URVI6cis9ZS53aWR0aC8yO2JyZWFrO2Nhc2UgUWwuRU5EOnIrPWUud2lkdGh9c3dpdGNoKG4uY29udGVudCl7Y2FzZSBRbC5TVEFSVDpicmVhaztjYXNlIFFsLkNFTlRFUjpyLT10LndpZHRoLzI7YnJlYWs7Y2FzZSBRbC5FTkQ6ci09dC53aWR0aH1y'@; put 'ZXR1cm4gcn1mdW5jdGlvbiBIRWUobixlLHQpe2xldCByPTA7c3dpdGNoKG4uYW5jaG9yKXtjYXNlIFFsLlNUQVJUOmJyZWFrO2Nhc2UgUWwuQ0VOVEVSOnIrPWUuaGVpZ2h0LzI7YnJlYWs7Y2FzZSBRbC5FTkQ6cis9ZS5oZWlnaHR9c3dpdGNoKG4uY29udGVudCl7Y2FzZSBRbC5TVEFSVDpi'@; put 'cmVhaztjYXNlIFFsLkNFTlRFUjpyLT10LmhlaWdodC8yO2JyZWFrO2Nhc2UgUWwuRU5EOnItPXQuaGVpZ2h0fXJldHVybiByfWxldCBWRWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIpe3RoaXMuZXZlbnRTZXJ2aWNlPXQsdGhpcy5wbGF0Zm9ybUlkPXIsdGhpcy5fc2hvdWxkUmVh'@; put 'bGlnbj1uZXcgTXIsdGhpcy5zaG91bGRSZWFsaWduPXRoaXMuX3Nob3VsZFJlYWxpZ24uYXNPYnNlcnZhYmxlKCl9cmVhbGlnbigpe3RoaXMuX3Nob3VsZFJlYWxpZ24ubmV4dCgpfWFsaWduQ29udGVudCh0KXtpZighSGModGhpcy5wbGF0Zm9ybUlkKSlyZXR1cm57eE9mZnNldDowLHlPZmZz'@; put 'ZXQ6MH07dGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzPXRoaXMuZXZlbnRTZXJ2aWNlLmFuY2hvckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHM9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLmNvbnRl'@; put 'bnRPZmZzZXRzPUlwKHRoaXMucG9zaXRpb24sdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2NvbnN0IHI9ZnVuY3Rpb24gRXZ0KG4sZSl7Y29uc3QgdD1bXSxyX2JvdHRvbT1uLnlPZmZzZXQrZS5oZWlnaHQscl9sZWZ0PW4ueE9mZnNldCxyX3Jp'@; put 'Z2h0PW4ueE9mZnNldCtlLndpZHRoO3JldHVybiBuLnlPZmZzZXQ+PTB8fHQucHVzaChSRC5UT1ApLHJfbGVmdD49MHx8dC5wdXNoKFJELkxFRlQpLHJfYm90dG9tPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KXx8dC5wdXNoKFJE'@; put 'LkJPVFRPTSkscl9yaWdodDw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpfHx0LnB1c2goUkQuUklHSFQpLHR9KHRoaXMuY29udGVudE9mZnNldHMsdGhpcy5jdXJyZW50Q29udGVudENvb3JkcyksaT1yLnJlZHVjZSgobyxhKT0+byth'@; put 'LDApO3JldHVybiAxPT09ci5sZW5ndGgmJnRoaXMucG9zaXRpb24uYXhpcz09PUIyLlZFUlRJQ0FMP3RoaXMuaGFuZGxlVmVydGljYWxBeGlzT25lVmlvbGF0aW9uKGkpOjE9PT1yLmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09QjIuSE9SSVpPTlRBTD90aGlzLmhhbmRsZUhvcml6b250'@; put 'YWxBeGlzT25lVmlvbGF0aW9uKGkpOjI9PT1yLmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09QjIuVkVSVElDQUw/dGhpcy5oYW5kbGVWZXJ0aWNhbEF4aXNUd29WaW9sYXRpb25zKGkpOjI9PT1yLmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09QjIuSE9SSVpPTlRBTCYmdGhpcy5o'@; put 'YW5kbGVIb3Jpem9udGFsQXhpc1R3b1Zpb2xhdGlvbnMoaSksdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcy50b3A8MCYmKHRoaXMuY29udGVudE9mZnNldHMueU9mZnNldCs9TWF0aC5hYnModGhpcy5jdXJyZW50Q29udGVudENvb3Jkcy50b3ApKSx0aGlzLmNvbnRlbnRPZmZzZXRzLnlPZmZz'@; put 'ZXQrdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLnk8MCYmKHRoaXMuY29udGVudE9mZnNldHMueU9mZnNldD0wLXRoaXMuY3VycmVudENvbnRlbnRDb29yZHMudG9wKSx0aGlzLmNvbnRlbnRPZmZzZXRzfWhhbmRsZVZlcnRpY2FsQXhpc09uZVZpb2xhdGlvbih0KXtzd2l0Y2godCl7Y2FzZSAw'@; put 'OmNhc2UgMzp0aGlzLmNvbnRlbnRPZmZzZXRzPUlwKHl2KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVhaztjYXNlIDE6dGhpcy5jb250ZW50T2Zmc2V0cz1JcCh0aGlzLnBvc2l0aW9uLHRoaXMuY3VycmVudEFu'@; put 'Y2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKSx0aGlzLmNvbnRlbnRPZmZzZXRzLnhPZmZzZXQ8MCYmKHRoaXMuY29udGVudE9mZnNldHMueE9mZnNldD0xMCk7YnJlYWs7Y2FzZSAyOnRoaXMuY29udGVudE9mZnNldHM9SXAocjcodGhpcy5wb3NpdGlvbiwhMCksdGhpcy5j'@; put 'dXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpfX1oYW5kbGVWZXJ0aWNhbEF4aXNUd29WaW9sYXRpb25zKHQpe3N3aXRjaCh0KXtjYXNlIDU6e2NvbnN0IHI9Y00oeXYscjcsITApO3RoaXMuY29udGVudE9mZnNldHM9SXAocih0aGlzLnBvc2l0aW9uKSx0aGlz'@; put 'LmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSA0Ontjb25zdCByPWNNKHl2LHI3LCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPUlwKHIodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRl'@; put 'bnRDb29yZHMpO2JyZWFrfWNhc2UgMzpkZWZhdWx0OmJyZWFrO2Nhc2UgMjp7Y29uc3Qgcj1jTSh5dixyNywhMCk7dGhpcy5jb250ZW50T2Zmc2V0cz1JcChyKHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha31j'@; put 'YXNlIDE6e2NvbnN0IHI9Y00oeXYscjcsITEpO3RoaXMuY29udGVudE9mZnNldHM9SXAocih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9fX1oYW5kbGVIb3Jpem9udGFsQXhpc09uZVZpb2xhdGlvbih0KXtz'@; put 'd2l0Y2godCl7Y2FzZSAxOmNhc2UgMjp0aGlzLmNvbnRlbnRPZmZzZXRzPUlwKHl2KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVhaztjYXNlIDA6dGhpcy5jb250ZW50T2Zmc2V0cz1JcChyNyh0aGlzLnBvc2l0'@; put 'aW9uLCEwKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWs7Y2FzZSAzOnRoaXMuY29udGVudE9mZnNldHM9SXAocjcodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMp'@; put 'fX1oYW5kbGVIb3Jpem9udGFsQXhpc1R3b1Zpb2xhdGlvbnModCl7c3dpdGNoKHQpe2Nhc2UgNTpjYXNlIDQ6e2NvbnN0IHI9Y00oeXYscjcsITEpO3RoaXMuY29udGVudE9mZnNldHM9SXAocih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29u'@; put 'dGVudENvb3Jkcyk7YnJlYWt9Y2FzZSAzOmRlZmF1bHQ6YnJlYWs7Y2FzZSAyOmNhc2UgMTp7Y29uc3Qgcj1jTSh5dixyNywhMCk7dGhpcy5jb250ZW50T2Zmc2V0cz1JcChyKHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRz'@; put 'KTticmVha319fX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKShvcihBRCksb3IobGQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxJRD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8s'@; put 'YSxsLHUpe3RoaXMuZG9jdW1lbnQ9dCx0aGlzLmNvbnRhaW5lcj1yLHRoaXMudGVtcGxhdGU9aSx0aGlzLnJlbmRlcmVyPW8sdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZT1hLHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlPWwsdGhpcy5zbWFydE9wZW5TZXJ2aWNlPXUsdGhpcy5zdWJzY3JpcHRp'@; put 'b25zPVtdLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPW51bGwsdGhpcy5zaG91bGRSZWFsaWduPSExLHRoaXMucHJldmlvdXNDb250ZW50SGVpZ2h0PW51bGwsdGhpcy5jaGVja0NvbGxlY3Rvcj1uZXcgS3J9c2V0IG9wZW4odCl7dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ISF0fXNl'@; put 'dCBjb250ZW50QXQodCl7dGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5wb3NpdGlvbj10fXNldCBvdXRzaWRlQ2xpY2tDbG9zZSh0KXt0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5vdXRzaWRlQ2xpY2tDbG9zZT0hIXR9c2V0IHNjcm9sbFRvQ2xvc2UodCl7dGhpcy5zbWFydEV2ZW50c1NlcnZp'@; put 'Y2Uuc2Nyb2xsVG9DbG9zZT0hIXR9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7aWYodGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW4mJnRoaXMudmlldyl7Y29uc3QgdD10aGlzLnZpZXcucm9vdE5vZGVzWzBdLm9mZnNldEhlaWdodDsodGhpcy5zaG91bGRSZWFsaWdufHxudWxsIT09dGhpcy5w'@; put 'cmV2aW91c0NvbnRlbnRIZWlnaHQmJnRoaXMucHJldmlvdXNDb250ZW50SGVpZ2h0IT09dCkmJih0aGlzLnByZXZpb3VzQ29udGVudEhlaWdodD10LHRoaXMuY2hlY2tDb2xsZWN0b3IuZW1pdCgpKX19bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zbWFy'@; put 'dE9wZW5TZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0P3RoaXMuYWRkQ29udGVudCgpOnRoaXMucmVtb3ZlQ29udGVudCgpfSksdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5zaG91bGRSZWFsaWduLnN1YnNjcmliZSgoKT0+e3RoaXMuc2hvdWxkUmVhbGlnbj0hMH0pLHRoaXMu'@; put 'Y2hlY2tDb2xsZWN0b3IucGlwZShOYigwKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5hbGlnbkNvbnRlbnQoKSx0aGlzLnNob3VsZFJlYWxpZ249ITEsdGhpcy52aWV3JiYodGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCJvcGFjaXR5IiwiMSIpLHRoaXMuc21h'@; put 'cnRPcGVuU2VydmljZS5wb3BvdmVyVmlzaWJsZUVtaXQoITApKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMucmVtb3ZlQ29udGVudCgpLHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9YWRkQ29udGVudCgpe3RoaXMudmlldz10aGlzLmNvbnRhaW5lci5jcmVh'@; put 'dGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7Y29uc3RbdF09dGhpcy52aWV3LnJvb3ROb2Rlczt0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5jb250ZW50UmVmPXQsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0LCJjbHItcG9wb3Zlci1jb250ZW50IiksdGhpcy5yZW5kZXJlci5zZXRTdHls'@; put 'ZSh0LCJ0b3AiLCIwcHgiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHQsImxlZnQiLCIwcHgiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHQsIm9wYWNpdHkiLCIwIiksdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm49dGhpcy5yZW5kZXJlci5saXN0ZW4odCwiY2xpY2siLHI9Pnt0aGlzLnNt'@; put 'YXJ0T3BlblNlcnZpY2Uub3BlbkV2ZW50PXJ9KSx0aGlzLnZpZXcucm9vdE5vZGVzLmZvckVhY2gocj0+e3RoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LHIpfSksdGhpcy5zaG91bGRSZWFsaWduPSEwfXJlbW92ZUNvbnRlbnQoKXt0aGlzLnZpZXcmJih0aGlz'@; put 'LnJlbW92ZUNsaWNrTGlzdGVuZXJGbiYmKHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuKCksdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm49bnVsbCksdGhpcy52aWV3LnJvb3ROb2Rlcy5mb3JFYWNoKHQ9PnRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LHQp'@; put 'KSx0aGlzLmNvbnRhaW5lci5jbGVhcigpLGRlbGV0ZSB0aGlzLnZpZXcsdGhpcy5zbWFydE9wZW5TZXJ2aWNlLnBvcG92ZXJWaXNpYmxlRW1pdCghMSkpfWFsaWduQ29udGVudCgpe2lmKCF0aGlzLnZpZXcpcmV0dXJuO2NvbnN0IHQ9dGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5hbGlnbkNv'@; put 'bnRlbnQodGhpcy52aWV3LnJvb3ROb2Rlc1swXSk7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZpZXcucm9vdE5vZGVzWzBdLCJ0b3AiLGAke3QueU9mZnNldH1weGApLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwibGVmdCIsYCR7dC54T2Zmc2V0'@; put 'fXB4YCksdGhpcy5zbWFydE9wZW5TZXJ2aWNlLnBvcG92ZXJBbGlnbmVkRW1pdCh0aGlzLnZpZXcucm9vdE5vZGVzWzBdKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoVGwpLHplKERzKSx6ZShGYyksemUoTnQpLHplKFZFZSksemUoQUQpLHpl'@; put 'KEt1KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJDb250ZW50IiwiIl1dLGlucHV0czp7b3BlbjpbMCwiY2xyUG9wb3ZlckNvbnRlbnQiLCJvcGVuIl0sY29udGVudEF0OlswLCJjbHJQb3BvdmVyQ29udGVudEF0IiwiY29udGVudEF0Il0sb3V0'@; put 'c2lkZUNsaWNrQ2xvc2U6WzAsImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsIm91dHNpZGVDbGlja0Nsb3NlIl0sc2Nyb2xsVG9DbG9zZTpbMCwiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIiwic2Nyb2xsVG9DbG9zZSJdfSxzdGFuZGFsb25lOiExfSksbn0p'@; put 'KCksREQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnNtYXJ0T3BlblNlcnZpY2U9dCx0aGlzLm9wZW5DbG9zZUNoYW5nZT1uZXcgS3IsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHQub3BlbkNoYW5nZS5zdWJzY3JpYmUocj0+e3RoaXMu'@; put 'b3BlbkNsb3NlQ2hhbmdlLm5leHQocil9KSl9aGFuZGxlQ2xpY2sodCl7dGhpcy5zbWFydE9wZW5TZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudCh0KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9fXJldHVybiBuLlx1MDI3NWZhYz1m'@; put 'dW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKEt1KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b24iLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsxJnQmJnd0KCJjbGljayIsZnVu'@; put 'Y3Rpb24obyl7cmV0dXJuIHIuaGFuZGxlQ2xpY2sobyl9KSwyJnQmJndyKCJjbHItc21hcnQtb3Blbi1jbG9zZSIsITApfSxvdXRwdXRzOntvcGVuQ2xvc2VDaGFuZ2U6ImNsclBvcG92ZXJPcGVuQ2xvc2VDaGFuZ2UifSxzdGFuZGFsb25lOiExfSksbn0pKCksTEQ9KCgpPT57Y2xhc3Mgbnt9'@; put 'cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7fSksbn0pKCk7dmFyIERwPWZ1bmN0aW9uKG4pe3JldHVybiBuLlVQPSJ1cCIsbi5ET1dOPSJkb3duIixuLkxFRlQ9ImxlZnQiLG4u'@; put 'UklHSFQ9InJpZ2h0IixufShEcHx8e30pO2xldCBPRD0oKCk9PntsZXQgbj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlbmRlcmVyPXQsdGhpcy5fdW5saXN0ZW5GdW5jcz1bXX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXJlc2V0KHQpe3RoaXMuX2N1cnJlbnQ9dH1s'@; put 'aXN0ZW5Ub0Fycm93S2V5cyh0KXt0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odCwia2V5ZG93bi5hcnJvd3VwIiwoKT0+IXRoaXMubW92ZShEcC5VUCkpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odCwia2V5ZG93'@; put 'bi5hcnJvd2Rvd24iLCgpPT4hdGhpcy5tb3ZlKERwLkRPV04pKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHQsImtleWRvd24uYXJyb3dsZWZ0IiwoKT0+IXRoaXMubW92ZShEcC5MRUZUKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJl'@; put 'bmRlcmVyLmxpc3Rlbih0LCJrZXlkb3duLmFycm93cmlnaHQiLCgpPT4hdGhpcy5tb3ZlKERwLlJJR0hUKSkpfXJlZ2lzdGVyQ29udGFpbmVyKHQscj0iMCIpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHQsInRhYmluZGV4IixyKSx0aGlzLmxpc3RlblRvQXJyb3dLZXlzKHQpLHRoaXMu'@; put 'X3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0LCJrZXlkb3duLnNwYWNlIiwoKT0+IXRoaXMuYWN0aXZhdGVDdXJyZW50KCkpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odCwia2V5ZG93bi5lbnRlciIsKCk9PiF0aGlzLmFj'@; put 'dGl2YXRlQ3VycmVudCgpKSl9bW92ZVRvKHQpe3ZvaWQgMCE9PXQmJih0aGlzLmN1cnJlbnQmJnRoaXMuY3VycmVudC5ibHVyKCksdC5mb2N1cygpLHRoaXMuX2N1cnJlbnQ9dCl9bW92ZSh0KXtsZXQgcj0hMTtpZih0aGlzLmN1cnJlbnQpe2NvbnN0IGk9dGhpcy5jdXJyZW50W3RdO2kmJih4'@; put 'SShpKT9pOlBhKGkpKS5zdWJzY3JpYmUoYT0+e2EmJih0aGlzLm1vdmVUbyhhKSxyPSEwKX0pfXJldHVybiByfWFjdGl2YXRlQ3VycmVudCgpe3JldHVybiEoIXRoaXMuY3VycmVudHx8IXRoaXMuY3VycmVudC5hY3RpdmF0ZXx8KHRoaXMuY3VycmVudC5hY3RpdmF0ZSgpLDApKX1kZXRhY2hM'@; put 'aXN0ZW5lcnMoKXt0aGlzLl91bmxpc3RlbkZ1bmNzLmZvckVhY2godD0+dCgpKX19O3JldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKE50KSl9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y29uc3Qg'@; put 'VUVlPXtwcm92aWRlOk9ELHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTXZ0KG4sZSl7cmV0dXJuIG58fG5ldyBPRChlKX0sZGVwczpbW25ldyB3OCxuZXcgcW0sT0RdLE50XX07dmFyIG5tPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uQkVGT1JFPS0xXT0iQkVGT1JFIixuW24uQUZURVI9MV09IkFGVEVS'@; put 'IixufShubXx8e30pO2NsYXNzIEEze31BM1sidG9wLXJpZ2h0Il09e2F4aXM6QjIuVkVSVElDQUwsc2lkZTpubS5CRUZPUkUsYW5jaG9yOlFsLkVORCxjb250ZW50OlFsLkVORH0sQTNbInRvcC1sZWZ0Il09e2F4aXM6QjIuVkVSVElDQUwsc2lkZTpubS5CRUZPUkUsYW5jaG9yOlFsLlNUQVJU'@; put 'LGNvbnRlbnQ6UWwuU1RBUlR9LEEzWyJib3R0b20tcmlnaHQiXT17YXhpczpCMi5WRVJUSUNBTCxzaWRlOm5tLkFGVEVSLGFuY2hvcjpRbC5FTkQsY29udGVudDpRbC5FTkR9LEEzWyJib3R0b20tbGVmdCJdPXtheGlzOkIyLlZFUlRJQ0FMLHNpZGU6bm0uQUZURVIsYW5jaG9yOlFsLlNUQVJU'@; put 'LGNvbnRlbnQ6UWwuU1RBUlR9LEEzWyJyaWdodC10b3AiXT17YXhpczpCMi5IT1JJWk9OVEFMLHNpZGU6bm0uQUZURVIsYW5jaG9yOlFsLkNFTlRFUixjb250ZW50OlFsLkVORH0sQTNbInJpZ2h0LWJvdHRvbSJdPXtheGlzOkIyLkhPUklaT05UQUwsc2lkZTpubS5BRlRFUixhbmNob3I6UWwu'@; put 'U1RBUlQsY29udGVudDpRbC5TVEFSVH0sQTNbImxlZnQtdG9wIl09e2F4aXM6QjIuSE9SSVpPTlRBTCxzaWRlOm5tLkJFRk9SRSxhbmNob3I6UWwuQ0VOVEVSLGNvbnRlbnQ6UWwuRU5EfSxBM1sibGVmdC1ib3R0b20iXT17YXhpczpCMi5IT1JJWk9OVEFMLHNpZGU6bm0uQkVGT1JFLGFuY2hv'@; put 'cjpRbC5TVEFSVCxjb250ZW50OlFsLlNUQVJUfTtjb25zdCBVej1uZXcgRXIoIlBPUE9WRVJfSE9TVF9BTkNIT1IiKTtsZXQgVHZ0PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy50b2dnbGVTZXJ2aWNlPXQsdGhpcy5sYXN0T3BlbkNoYW5nZT1udWxsfW5nT25Jbml0KCl7dGhp'@; put 'cy5zdWJzY3JpcHRpb249dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLmxhc3RPcGVuQ2hhbmdlPXR9KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfW9uRXNjYXBlS2V5KHQpe251bGwhPT10aGlzLmxhc3RPcGVu'@; put 'Q2hhbmdlJiYoITE9PT10aGlzLmxhc3RPcGVuQ2hhbmdlJiZ0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubGFzdE9wZW5DaGFuZ2U9bnVsbCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKEt1KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4saG9z'@; put 'dEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgia2V5dXAuZXNjYXBlIixmdW5jdGlvbihvKXtyZXR1cm4gci5vbkVzY2FwZUtleShvKX0pfX0pLG59KSgpLGk3PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1'@; put 'MDI3NWRpcj0kcih7dHlwZTpuLGZlYXR1cmVzOltibyhbS3UsQUQsVkVlLHtwcm92aWRlOlV6LHVzZUV4aXN0aW5nOm5vfV0pLHpnKFtUdnRdKV19KSxufSkoKTtjbGFzcyB6b2V7c3RhdGljIGxpbmtQYXJlbnQoZSx0LHIpe2UuZm9yRWFjaChpPT5pW3JdPXQpfXN0YXRpYyBsaW5rVmVydGlj'@; put 'YWwoZSx0PSEwKXtlLmZvckVhY2goKHIsaSk9PntpPjAmJihyLnVwPWVbaS0xXSksaTxlLmxlbmd0aC0xJiYoci5kb3duPWVbaSsxXSl9KSx0JiZlLmxlbmd0aD4xJiYoZVswXS51cD1lW2UubGVuZ3RoLTFdLGVbZS5sZW5ndGgtMV0uZG93bj1lWzBdKX19bGV0IGJ2PSgoKT0+e2NsYXNzIG57'@; put 'dXNlckRlZmluZWRXaWR0aCh0KXtjb25zdCByPXQuY2xvbmVOb2RlKCEwKTtyLmlkJiYoci5pZD1yLmlkKyItY2xvbmUiKSxyLmNsYXNzTGlzdC5hZGQoImRhdGFncmlkLWNlbGwtd2lkdGgtemVybyIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocik7Y29uc3QgaT10aGlzLmNsaWVudFJl'@; put 'Y3Qocikud2lkdGg7cmV0dXJuIHIucmVtb3ZlKCksaX1zY3JvbGxCYXJXaWR0aCh0KXtyZXR1cm4gdC5vZmZzZXRXaWR0aC10LmNsaWVudFdpZHRofXNjcm9sbFdpZHRoKHQpe3JldHVybiB0LnNjcm9sbFdpZHRofHwwfWNvbXB1dGVkSGVpZ2h0KHQpe3JldHVybiBwYXJzZUludChnZXRDb21w'@; put 'dXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpLDEwKX1jbGllbnRSZWN0KHQpe2NvbnN0IHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOnBhcnNlSW50KHIudG9wLDEwKSxib3R0b206cGFyc2VJbnQoci5ib3R0b20sMTApLGxlZnQ6cGFyc2VJbnQo'@; put 'ci5sZWZ0LDEwKSxyaWdodDpwYXJzZUludChyLnJpZ2h0LDEwKSx3aWR0aDpwYXJzZUludChyLndpZHRoLDEwKSxoZWlnaHQ6cGFyc2VJbnQoci5oZWlnaHQsMTApfX1taW5XaWR0aCh0KXtyZXR1cm4gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKCJtaW4t'@; put 'd2lkdGgiKSwxMCl9Zm9jdXModCl7dC5mb2N1cygpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSx6ej0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQs'@; put 'cixpKXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmRvbUFkYXB0ZXI9cix0aGlzLnJlbmRlcmVyPWksdGhpcy5jbHJFeHBhbmRUcmlnZ2VyPSExLHRoaXMuc3RhcnRIZWlnaHQ9MH1nZXQgZXhwYW5kQW5pbWF0aW9uKCl7cmV0dXJue3ZhbHVlOnRoaXMuY2xyRXhwYW5kVHJpZ2dlcixwYXJhbXM6e3N0'@; put 'YXJ0SGVpZ2h0OnRoaXMuc3RhcnRIZWlnaHR9fX1hbmltYXRpb25TdGFydCh0KXsidm9pZCIhPT10LmZyb21TdGF0ZSYmdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwib3ZlcmZsb3ciLCJoaWRkZW4iKX1hbmltYXRpb25Eb25lKHQpeyJ2b2lkIiE9'@; put 'PXQuZnJvbVN0YXRlJiYodGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwib3ZlcmZsb3ciKSx0aGlzLnVwZGF0ZVN0YXJ0SGVpZ2h0KCkpfXVwZGF0ZVN0YXJ0SGVpZ2h0KCl7dGhpcy5zdGFydEhlaWdodD10aGlzLmRvbUFkYXB0ZXIuY29tcHV0'@; put 'ZWRIZWlnaHQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpfHwwfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShubyksemUoYnYpLHplKE50KSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1leHBhbmRhYmxlLWFu'@; put 'aW1hdGlvbiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmbm5lKCJAZXhwYW5kQW5pbWF0aW9uLnN0YXJ0IixmdW5jdGlvbihvKXtyZXR1cm4gci5hbmltYXRpb25TdGFydChvKX0pKCJAZXhwYW5kQW5pbWF0aW9uLmRvbmUiLGZ1bmN0aW9uKG8pe3JldHVy'@; put 'biByLmFuaW1hdGlvbkRvbmUobyl9KSwyJnQmJlF0ZSgiQGV4cGFuZEFuaW1hdGlvbiIsci5leHBhbmRBbmltYXRpb24pfSxpbnB1dHM6e2NsckV4cGFuZFRyaWdnZXI6ImNsckV4cGFuZFRyaWdnZXIifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbYnZdKV0sbmdDb250ZW50U2VsZWN0'@; put 'b3JzOmVzLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W1JwKCJleHBhbmRBbmltYXRpb24iLFtwaCgidHJ1ZSA8PT4gZmFsc2UiLFt2bCh7aGVpZ2h0OiJ7e3N0YXJ0SGVpZ2h0'@; put 'fX1weCJ9KSx5MCgiMC4ycyBlYXNlLWluLW91dCIsdmwoe2hlaWdodDoiKiJ9KSldKV0pXX19KSxufSkoKSxXb2U9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWlu'@; put 'aj1taSh7aW1wb3J0czpbcW9dfSksbn0pKCkseHZ0PTA7Y29uc3QgZE09bmV3IEVyKCJJRl9BQ1RJVkVfSUQiKSxrdnQ9e3Byb3ZpZGU6ZE0sdXNlRmFjdG9yeTpmdW5jdGlvbiBBdnQoKXtyZXR1cm4rK3h2dH19O2xldCBWYj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5fY3Vy'@; put 'cmVudENoYW5nZT1uZXcgTXJ9Z2V0IGN1cnJlbnRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY3VycmVudENoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KHQpe3RoaXMuX2N1cnJlbnQhPT10JiYodGhpcy5fY3VycmVudD10'@; put 'LHRoaXMuX2N1cnJlbnRDaGFuZ2UubmV4dCh0KSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGhNPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxy'@; put 'LGksbyl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9dCx0aGlzLmlkPXIsdGhpcy50ZW1wbGF0ZT1pLHRoaXMuY29udGFpbmVyPW8sdGhpcy5hY3RpdmVDaGFuZ2U9bmV3IEtyKCExKSx0aGlzLndhc0FjdGl2ZT0hMSx0aGlzLmNoZWNrQW5kVXBkYXRlVmlldyh0LmN1cnJlbnQpLHRoaXMuc3Vic2Ny'@; put 'aXB0aW9uPXQuY3VycmVudENoYW5nZS5zdWJzY3JpYmUoYT0+e3RoaXMuY2hlY2tBbmRVcGRhdGVWaWV3KGEpfSl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH1zZXQgYWN0aXZlKHQpe3QmJih0aGlzLmlmQWN0aXZlU2VydmljZS5j'@; put 'dXJyZW50PXRoaXMuaWQpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX11cGRhdGVWaWV3KHQpe3Q/dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCl9Y2hlY2tBbmRVcGRhdGVW'@; put 'aWV3KHQpe2NvbnN0IHI9dD09PXRoaXMuaWQ7ciE9PXRoaXMud2FzQWN0aXZlJiYodGhpcy51cGRhdGVWaWV3KHIpLHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQociksdGhpcy53YXNBY3RpdmU9cil9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKFZi'@; put 'KSx6ZShkTSksemUoRmMpLHplKERzKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNscklmQWN0aXZlIiwiIl1dLGlucHV0czp7YWN0aXZlOlswLCJjbHJJZkFjdGl2ZSIsImFjdGl2ZSJdfSxvdXRwdXRzOnthY3RpdmVDaGFuZ2U6ImNscklmQWN0aXZlQ2hhbmdl'@; put 'In0sc3RhbmRhbG9uZTohMX0pLG59KSgpLExwPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGkpe3RoaXMudG9nZ2xlU2VydmljZT10LHRoaXMudGVtcGxhdGU9cix0aGlzLmNvbnRhaW5lcj1pLHRoaXMub3BlbkNoYW5nZT1uZXcgS3IoITEpLHRoaXMuc3Vic2NyaXB0aW9uPXQub3Bl'@; put 'bkNoYW5nZS5zdWJzY3JpYmUobz0+e3RoaXMudXBkYXRlVmlldyhvKSx0aGlzLm9wZW5DaGFuZ2UuZW1pdChvKX0pfWdldCBvcGVuKCl7cmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVufXNldCBvcGVuKHQpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPXR9bmdPbkRlc3Ryb3koKXt0aGlz'@; put 'LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXVwZGF0ZVZpZXcodCl7dD90aGlzLmNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk6dGhpcy5jb250YWluZXIuY2xlYXIoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8biko'@; put 'emUoS3UpLHplKEZjKSx6ZShEcykpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJjbHJJZk9wZW4iLCIiXV0saW5wdXRzOntvcGVuOlswLCJjbHJJZk9wZW4iLCJvcGVuIl19LG91dHB1dHM6e29wZW5DaGFuZ2U6ImNscklmT3BlbkNoYW5nZSJ9LHN0YW5kYWxvbmU6'@; put 'ITF9KSxufSkoKSx6RWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEpe3RoaXMudGVtcGxhdGU9dCx0aGlzLmNvbnRhaW5lcj1yLHRoaXMuZWw9aSx0aGlzLnJlbmRlcmVyPW8sdGhpcy5leHBhbmQ9YSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBLcighMCksdGhpcy5fZXhw'@; put 'YW5kZWQ9ITEsdGhpcy5fc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goYS5leHBhbmRDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy51cGRhdGVWaWV3KCksdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KGEuZXhwYW5kZWQpfSkpLGEuaGFzRXhwYW5kVGVtcGxhdGU9'@; put 'ISF0fWdldCBleHBhbmRlZCgpe3JldHVybiB0aGlzLl9leHBhbmRlZH1zZXQgZXhwYW5kZWQodCl7ImJvb2xlYW4iPT10eXBlb2YgdCYmKHRoaXMuZXhwYW5kLmV4cGFuZGVkPXQsdGhpcy5fZXhwYW5kZWQ9dCl9bmdPbkluaXQoKXt0aGlzLmV4cGFuZC5leHBhbmRhYmxlKyssdGhpcy51cGRh'@; put 'dGVWaWV3KCl9bmdPbkRlc3Ryb3koKXt0aGlzLmV4cGFuZC5leHBhbmRhYmxlLS0sdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9dXBkYXRlVmlldygpe2lmKCF0aGlzLmV4cGFuZC5leHBhbmRlZHx8MD09PXRoaXMuY29udGFpbmVyLmxlbmd0aClpZih0'@; put 'aGlzLnRlbXBsYXRlKXRoaXMuZXhwYW5kLmV4cGFuZGVkP3RoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlKTp0aGlzLmNvbnRhaW5lci5jbGVhcigpO2Vsc2UgdHJ5e3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkaXNw'@; put 'bGF5Iix0aGlzLmV4cGFuZC5leHBhbmRlZD9udWxsOiJub25lIil9Y2F0Y2h7fX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoRmMsOCksemUoRHMpLHplKG5vKSx6ZShOdCksemUoTmYpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3Rv'@; put 'cnM6W1siIiwiY2xySWZFeHBhbmRlZCIsIiJdXSxpbnB1dHM6e2V4cGFuZGVkOlswLCJjbHJJZkV4cGFuZGVkIiwiZXhwYW5kZWQiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNscklmRXhwYW5kZWRDaGFuZ2UifSxzdGFuZGFsb25lOiExfSksbn0pKCkscm09KCgpPT57Y2xhc3Mgbnt9'@; put 'cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW9dfSksbn0pKCk7Y29uc3QgUnZ0PXtwcm92aWRlOm5ldyBFcigiRk9DVVNfT05fVklFV19JTklUIiksdXNlVmFs'@; put 'dWU6ITB9O2xldCBXej0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtwcm92aWRlcnM6W1J2dF0saW1wb3J0czpbcW9dfSksbn0pKCksRHZ0PSgoKT0+'@; put 'e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdsLExEXX0pLG59KSgpLGltPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyKXt0aGlz'@; put 'LmVsPXQsdGhpcy5yZW5kZXJlcj1yLHRoaXMuY2xyTG9hZGluZ0NoYW5nZT1uZXcgS3IoITEpLHRoaXMuYnV0dG9uU3RhdGU9T2YsdGhpcy5zdGF0ZT1PZi5ERUZBVUxUfWxvYWRpbmdTdGF0ZUNoYW5nZSh0KXtpZih0IT09dGhpcy5zdGF0ZSl7c3dpdGNoKHRoaXMuc3RhdGU9dCx0KXtjYXNl'@; put 'IE9mLkRFRkFVTFQ6dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIiksdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRyYW5zZm9ybSIpLHRoaXMuZGlzYWJsZWR8fHRoaXMucmVuZGVyZXIucmVtb3Zl'@; put 'QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiKTticmVhaztjYXNlIE9mLkxPQURJTkc6dGhpcy5zZXRFeHBsaWNpdEJ1dHRvbldpZHRoKCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRyYW5zZm9ybSIsInRyYW5zbGF0ZXoo'@; put 'MCkiKSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIiwiIik7YnJlYWs7Y2FzZSBPZi5TVUNDRVNTOnRoaXMuc2V0RXhwbGljaXRCdXR0b25XaWR0aCgpO2JyZWFrO2Nhc2UgT2YuRVJST1I6dGhpcy5sb2FkaW5nU3RhdGVDaGFuZ2Uo'@; put 'T2YuREVGQVVMVCl9dGhpcy5jbHJMb2FkaW5nQ2hhbmdlLmVtaXQodCl9fXNldEV4cGxpY2l0QnV0dG9uV2lkdGgoKXtpZih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQmJnRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qpe2NvbnN0IHQ9dGhpcy5lbC5uYXRpdmVFbGVt'@; put 'ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9TWF0aC5tYXgoNDIsdC53aWR0aCk7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixgJHtyfXB4YCl9fX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6'@; put 'ZShubyksemUoTnQpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siYnV0dG9uIiwiY2xyTG9hZGluZyIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmUnIoImRpc2FibGVkIixyLmRpc2FibGVkPyIiOm51bGwpfSxpbnB1dHM6e2Rp'@; put 'c2FibGVkOiJkaXNhYmxlZCJ9LG91dHB1dHM6e2NsckxvYWRpbmdDaGFuZ2U6ImNsckxvYWRpbmdDaGFuZ2UifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbe3Byb3ZpZGU6RUQsdXNlRXhpc3Rpbmc6bn1dKV0sYXR0cnM6cTR0LG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczo0LHZh'@; put 'cnM6NSxjb25zdHM6W1szLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwiY2xyLWxvYWRpbmctYnRuLWNvbnRlbnQiLDQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwic3Bp'@; put 'bm5lci1jaGVjayJdLFsxLCJjbHItbG9hZGluZy1idG4tY29udGVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksSigwLCJzcGFuIiwwKSxZbigxLEs0dCwyLDEsIm5nLWNvbnRhaW5lciIsMSkoMixYNHQsMiwxLCJuZy1jb250YWluZXIiLDEpKDMsUTR0LDIsMSwic3Bh'@; put 'biIsMiksdGUoKSksMiZ0JiYocnQoIkBwYXJlbnQiLHZvaWQgMCkoIm5nU3dpdGNoIixyLnN0YXRlKSxpZSgpLHJ0KCJuZ1N3aXRjaENhc2UiLHIuYnV0dG9uU3RhdGUuTE9BRElORyksaWUoKSxydCgibmdTd2l0Y2hDYXNlIixyLmJ1dHRvblN0YXRlLlNVQ0NFU1MpLGllKCkscnQoIm5nU3dp'@; put 'dGNoQ2FzZSIsci5idXR0b25TdGF0ZS5ERUZBVUxUKSl9LGRlcGVuZGVuY2llczpbQUUsU1VdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W1JwKCJwYXJlbnQiLFtwaCgiOmVudGVyIixbXSldKSxScCgiZGVmYXVsdEJ1dHRvbiIsW3BoKCI6ZW50ZXIiLFt2bCh7b3BhY2l0eTow'@; put 'fSkseTAoIjIwMG1zIDEwMG1zIGVhc2UtaW4iLHZsKHtvcGFjaXR5OjF9KSldKSxwaCgiOmxlYXZlIixbdmwoe29wYWNpdHk6MH0pXSldKSxScCgic3Bpbm5lciIsW3BoKCI6ZW50ZXIiLFt2bCh7b3BhY2l0eTowfSkseTAoIjIwMG1zIDEwMG1zIGVhc2UtaW4iLHZsKHtvcGFjaXR5OjF9KSld'@; put 'KSxwaCgiOmxlYXZlIixbdmwoe29wYWNpdHk6MX0pLHkwKCIxMDBtcyBlYXNlLW91dCIsdmwoe29wYWNpdHk6MH0pKV0pXSksUnAoInZhbGlkYXRlZCIsW3BoKCI6ZW50ZXIiLFt5MCgiNjAwbXMiLGFtdChbdmwoe3RyYW5zZm9ybToic2NhbGUoMCwwKSIsb2Zmc2V0OjB9KSx2bCh7b3BhY2l0'@; put 'eToxLG9mZnNldDouMn0pLHZsKHt0cmFuc2Zvcm06InNjYWxlKDEuMiwxLjIpIixvZmZzZXQ6LjR9KSx2bCh7dHJhbnNmb3JtOiJzY2FsZSguOSwuOSkiLG9mZnNldDouNn0pLHZsKHt0cmFuc2Zvcm06InNjYWxlKDEsMSkiLG9mZnNldDoxfSldKSldKSxwaCgiOmxlYXZlIixbdmwoe29wYWNp'@; put 'dHk6MX0pLHkwKCIxMDBtcyBlYXNlLW91dCIsdmwoe29wYWNpdHk6MH0pKV0pXSldfX0pLG59KSgpLE92dD0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1p'@; put 'KHtpbXBvcnRzOltxb119KSxufSkoKSxOdnQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25zKE5TZSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2lt'@; put 'cG9ydHM6W092dCxEdnRdfSksbn0pKCksRnZ0PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJuZy1jb21wb25lbnQiXV0sc3RhbmRhbG9uZTohMSxkZWNsczow'@; put 'LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpe30sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksTkQ9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7'@; put 'fSksbn0pKCksUHZ0PTAsT3A9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2lkPSJjbHItZm9ybS1jb250cm9sLSIrICsrUHZ0LHRoaXMuX2lkQ2hhbmdlPW5ldyAkaSh0aGlzLl9pZCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZCh0KXt0aGlzLl9pZD10LHRoaXMu'@; put 'X2lkQ2hhbmdlLm5leHQodCl9Z2V0IGlkQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2lkQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9'@; put 'KSxufSkoKSxIdnQ9MCxCYj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5faWQ9ImNsci1mb3JtLWNvbnRhaW5lci0iKyArK0h2dCx0aGlzLl9pZENoYW5nZT1uZXcgJGkodGhpcy5faWQpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7dGhpcy5faWQ9dCx0aGlz'@; put 'Ll9pZENoYW5nZS5uZXh0KHQpfWdldCBpZENoYW5nZSgpe3JldHVybiB0aGlzLl9pZENoYW5nZS5hc09ic2VydmFibGUoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFj'@; put 'fSksbn0pKCk7bGV0IFlvZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscil7dGhpcy5jb250cm9sSWRTZXJ2aWNlPXQsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9cix0aGlzLmNvbnRyb2xJZFN1ZmZpeD0iYWJzdHJhY3QifWdldCBpZCgpe3JldHVybiB0aGlzLmNvbnRhaW5lcklkU2Vy'@; put 'dmljZT9gJHt0aGlzLmNvbnRhaW5lcklkU2VydmljZS5pZH0tJHt0aGlzLmNvbnRyb2xJZFN1ZmZpeH1gOnRoaXMuY29udHJvbElkU2VydmljZT9gJHt0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWR9LSR7dGhpcy5jb250cm9sSWRTdWZmaXh9YDpudWxsfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVu'@; put 'Y3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShPcCw4KSx6ZShCYiw4KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc3RhbmRhbG9uZTohMX0pLG59KSgpLFZ2dD0oKCk9PntjbGFzcyBuIGV4dGVuZHMgWW9le2NvbnN0cnVjdG9yKHQscil7c3VwZXIodCxyKSx0aGlzLmNvbnRyb2xJZFNl'@; put 'cnZpY2U9dCx0aGlzLmNvbnRhaW5lcklkU2VydmljZT1yLHRoaXMuY29udHJvbElkU3VmZml4PSJlcnJvciJ9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKE9wLDgpLHplKEJiLDgpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6'@; put 'W1siY2xyLWNvbnRyb2wtZXJyb3IiXV0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJihScigiaWQiLHIuaWQpLHdyKCJjbHItc3VidGV4dCIsITApKCJlcnJvciIsITApKX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9dLG5nQ29udGVudFNlbGVjdG9yczpl'@; put 'cyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksV3IoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxZej0oKCk9PntjbGFzcyBuIGV4dGVuZHMgWW9le2NvbnN0cnVjdG9yKHQscil7c3VwZXIodCxyKSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9dCx0'@; put 'aGlzLmNvbnRhaW5lcklkU2VydmljZT1yLHRoaXMuY29udHJvbElkU3VmZml4PSJoZWxwZXIifX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShPcCw4KSx6ZShCYiw4KSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1j'@; put 'b250cm9sLWhlbHBlciJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmKFJyKCJpZCIsci5pZCksd3IoImNsci1zdWJ0ZXh0IiwhMCkpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb10sbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczowLHRl'@; put 'bXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLGoyPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLl9hZGRpdGlvbmFsQ29udHJvbHM9W10sdGhpcy5fY29udHJvbENoYW5nZXM9bmV3IE1yLHRoaXMuX2FkZGl0aW9u'@; put 'YWxDb250cm9sc0NoYW5nZXM9bmV3IE1yLHRoaXMuX2hlbHBlcnM9bmV3IE1yfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuX2NvbnRyb2x9Z2V0IGNvbnRyb2xDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NvbnRyb2xDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfWdldCBhZGRpdGlvbmFsQ29udHJv'@; put 'bHMoKXtyZXR1cm4gdGhpcy5fYWRkaXRpb25hbENvbnRyb2xzfWdldCBhZGRpdGlvbmFsQ29udHJvbHNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2FkZGl0aW9uYWxDb250cm9sc0NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IGhhc0FkZGl0aW9uYWxDb250cm9scygpe3JldHVybiEhdGhpcy5f'@; put 'YWRkaXRpb25hbENvbnRyb2xzPy5sZW5ndGh9Z2V0IGhlbHBlcnNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5faGVscGVycy5hc09ic2VydmFibGUoKX1zZXRDb250cm9sKHQpe3RoaXMuX2NvbnRyb2w9dCx0aGlzLl9jb250cm9sQ2hhbmdlcy5uZXh0KHQpfWFkZEFkZGl0aW9uYWxDb250cm9sKHQp'@; put 'e3RoaXMuX2FkZGl0aW9uYWxDb250cm9scy5wdXNoKHQpLHRoaXMuX2FkZGl0aW9uYWxDb250cm9sc0NoYW5nZXMubmV4dCh0aGlzLl9hZGRpdGlvbmFsQ29udHJvbHMpfXNldEhlbHBlcnModCl7dGhpcy5faGVscGVycy5uZXh0KHQpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7'@; put 'cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKTt2YXIgazM9ZnVuY3Rpb24obil7cmV0dXJuIG4uTk9ORT0iTk9ORSIsbi5WQUxJRD0iVkFMSUQiLG4uSU5WQUxJRD0iSU5WQUxJRCIsbn0oazN8fHt9KTtsZXQgUjM9'@; put 'KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnRyaWdnZXJTdGF0dXNDaGFuZ2VTdWJqZWN0PW5ldyBNcix0aGlzLnN0YXR1c0NoYW5nZXM9dGhpcy5nZXRTdGF0dXNDaGFuZ2VzKHQpLnBpcGUoVlNlKDEpKX10cmlnZ2VyU3RhdHVzQ2hhbmdlKCl7dGhpcy50cmlnZ2VyU3RhdHVz'@; put 'Q2hhbmdlU3ViamVjdC5uZXh0KCl9Z2V0U3RhdHVzQ2hhbmdlcyh0KXtyZXR1cm4gX2IoW3QuY29udHJvbENoYW5nZXMsdC5hZGRpdGlvbmFsQ29udHJvbHNDaGFuZ2VzLnBpcGUocWcoW10pKV0pLnBpcGUobTAoKFtyLGldKT0+e2lmKHIpe2NvbnN0IG89W3IsLi4uaV07cmV0dXJuIGhEKF9i'@; put 'KG8ubWFwKGE9PmEuc3RhdHVzQ2hhbmdlcykpLHRoaXMudHJpZ2dlclN0YXR1c0NoYW5nZVN1YmplY3QucGlwZShFcygoKT0+by5tYXAoYT0+YS5zdGF0dXMpKSkpfXJldHVybiBFcH0pLEVzKHI9PnIuaW5jbHVkZXMoazMuSU5WQUxJRCk/azMuSU5WQUxJRDpyLmluY2x1ZGVzKGszLlZBTElE'@; put 'KT9rMy5WQUxJRDprMy5OT05FKSxxZyhrMy5OT05FKSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKGoyKSl9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y2xhc3MgWnp7fWZ1bmN0aW9uIEdF'@; put 'ZShuKXtyZXR1cm5bbix7cHJvdmlkZTpaeix1c2VFeGlzdGluZzpufV19ZnVuY3Rpb24gJEVlKG4sZSx0KXtyZXR1cm4gaG8uY3JlYXRlKHI9PntlKHIpO2NvbnN0IGk9bi5zdWJzY3JpYmUocik7cmV0dXJuKCk9PntpLnVuc3Vic2NyaWJlKCksdCYmdChyKX19KX1sZXQgR3o9KCgpPT57Y2xh'@; put 'c3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEpe3RoaXMucmVuZGVyZXI9dCx0aGlzLnBhcmVudD1yLHRoaXMudG9nZ2xlU2VydmljZT1pLHRoaXMuZm9jdXNTZXJ2aWNlPW8sdGhpcy5wbGF0Zm9ybUlkPWEsdGhpcy5pZD1QaCgpLHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyV2hlbkNsb3NlZD0h'@; put 'MSx0aGlzLl91bmxpc3RlbkZ1bmNzPVtdLHRoaXMucmVzZXRDaGlsZHJlbigpLHRoaXMubW92ZVRvRmlyc3RJdGVtV2hlbk9wZW4oKSxyfHx0aGlzLmhhbmRsZVJvb3RGb2N1cygpfWdldCB0cmlnZ2VyKCl7cmV0dXJuIHRoaXMuX3RyaWdnZXJ9c2V0IHRyaWdnZXIodCl7dGhpcy5fdHJpZ2dl'@; put 'cj10LHRoaXMucGFyZW50P3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0LCJrZXlkb3duLmFycm93cmlnaHQiLHI9PnRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQocikpKToodGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVy'@; put 'ZXIubGlzdGVuKHQsImtleWRvd24uYXJyb3d1cCIscj0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChyKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0LCJrZXlkb3duLmFycm93ZG93biIscj0+dGhpcy50b2dnbGVTZXJ2aWNlLnRv'@; put 'Z2dsZVdpdGhFdmVudChyKSkpLHRoaXMuZm9jdXNTZXJ2aWNlLmxpc3RlblRvQXJyb3dLZXlzKHQpKX1nZXQgY29udGFpbmVyKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn1zZXQgY29udGFpbmVyKHQpe3RoaXMuX2NvbnRhaW5lcj10LHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJl'@; put 'bmRlcmVyLmxpc3Rlbih0LCJrZXlkb3duLnRhYiIscj0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChyKSkpLHRoaXMucGFyZW50P3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0LCJrZXlkb3duLmVzY2FwZSIscj0+e3RoaXMuZm9jdXNT'@; put 'ZXJ2aWNlLm1vdmUoRHAuTEVGVCksci5zdG9wUHJvcGFnYXRpb24oKX0pKToodGhpcy5mb2N1c1NlcnZpY2UucmVnaXN0ZXJDb250YWluZXIodCksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHQsImtleWRvd24uZXNjYXBlIixyPT50aGlzLnRvZ2dsZVNl'@; put 'cnZpY2UudG9nZ2xlV2l0aEV2ZW50KHIpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHQsImJsdXIiLHI9Pnt0aGlzLmNoaWxkcmVuLnBpcGUoTXAoMSkpLnN1YnNjcmliZShvPT5vLmZvckVhY2goYT0+YS5ibHVyKCkpKTtjb25zdCBpPXIucmVsYXRl'@; put 'ZFRhcmdldHx8ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpJiZIYyh0aGlzLnBsYXRmb3JtSWQpJiYodC5jb250YWlucyhpKXx8aT09PXRoaXMudHJpZ2dlcil8fCh0aGlzLmZvY3VzQmFja09uVHJpZ2dlcldoZW5DbG9zZWQ9ITEsdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITEpfSkpKX1uZ09u'@; put 'RGVzdHJveSgpe3RoaXMuX3VubGlzdGVuRnVuY3MuZm9yRWFjaCh0PT50KCkpLHRoaXMuZm9jdXNTZXJ2aWNlLmRldGFjaExpc3RlbmVycygpfW1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCl7Y29uc3QgdD10aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUocj0+e3ImJnRo'@; put 'aXMudG9nZ2xlU2VydmljZS5vcmlnaW5hbEV2ZW50JiZzZXRUaW1lb3V0KCgpPT57dGhpcy5mb2N1c1NlcnZpY2UubW92ZVRvKHRoaXMpLHRoaXMuZm9jdXNTZXJ2aWNlLm1vdmUodGhpcy5wYXJlbnQ/RHAuUklHSFQ6RHAuRE9XTil9KX0pO3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKT0+'@; put 'dC51bnN1YnNjcmliZSgpKX1oYW5kbGVSb290Rm9jdXMoKXtjb25zdCB0PXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShyPT57cnx8KHRoaXMuZm9jdXNTZXJ2aWNlLnJlc2V0KHRoaXMpLHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyV2hlbkNsb3NlZCYmdGhpcy5mb2N1'@; put 'cygpKSx0aGlzLmZvY3VzQmFja09uVHJpZ2dlcldoZW5DbG9zZWQ9cn0pO3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKT0+dC51bnN1YnNjcmliZSgpKX1mb2N1cygpe3RoaXMudHJpZ2dlciYmSGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50cmlnZ2VyLmZvY3VzKCl9Ymx1cigpe3RoaXMu'@; put 'dHJpZ2dlciYmSGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50cmlnZ2VyLmJsdXIoKX1hY3RpdmF0ZSgpe0hjKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5jbGljaygpfXJlc2V0Q2hpbGRyZW4oKXt0aGlzLmNoaWxkcmVuPW5ldyBkRCgxKSx0aGlzLnBhcmVudD90aGlzLnJpZ2h0'@; put 'PXRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShFcyh0PT50WzBdKSk6KHRoaXMuZG93bj10aGlzLm9wZW5BbmRHZXRDaGlsZHJlbigpLnBpcGUoRXModD0+dFswXSkpLHRoaXMudXA9dGhpcy5vcGVuQW5kR2V0Q2hpbGRyZW4oKS5waXBlKEVzKHQ9PnRbdC5sZW5ndGgtMV0pKSl9YWRk'@; put 'Q2hpbGRyZW4odCl7em9lLmxpbmtWZXJ0aWNhbCh0KSx0aGlzLnBhcmVudCYmem9lLmxpbmtQYXJlbnQodCx0aGlzLmNsb3NlQW5kR2V0VGhpcygpLERwLkxFRlQpLHRoaXMuY2hpbGRyZW4ubmV4dCh0KX1vcGVuQW5kR2V0Q2hpbGRyZW4oKXtyZXR1cm4gJEVlKHRoaXMuY2hpbGRyZW4sKCk9'@; put 'PnRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwKX1jbG9zZUFuZEdldFRoaXMoKXtyZXR1cm4gJEVlKFBhKHRoaXMpLCgpPT50aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKE50KSxvcihuLDEyKSxv'@; put 'cihLdSksb3IoT0QpLG9yKGxkKSl9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y29uc3QgQnZ0PUdFZShHeik7bGV0IEZEPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLl9jaGFuZ2VzPW5ldyBNcn1nZXQgY2hhbmdlcygpe3Jl'@; put 'dHVybiB0aGlzLl9jaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfWNsb3NlTWVudXMoKXt0aGlzLl9jaGFuZ2VzLm5leHQoITEpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9'@; put 'KSxufSkoKTtjb25zdCBVdnQ9e3Byb3ZpZGU6RkQsdXNlRmFjdG9yeTpmdW5jdGlvbiBqdnQobil7cmV0dXJuIG58fG5ldyBGRH0sZGVwczpbW25ldyB3OCxuZXcgcW0sRkRdXX07bGV0IG83PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyxhKXt0aGlzLnBhcmVudD10LHRoaXMu'@; put 'dG9nZ2xlU2VydmljZT1yLHRoaXMuZm9jdXNIYW5kbGVyPWksdGhpcy5pc01lbnVDbG9zYWJsZT0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goYS5jaGFuZ2VzLnN1YnNjcmliZShsPT5yLm9wZW49bCkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHIu'@; put 'b3BlbkNoYW5nZS5zdWJzY3JpYmUoKCk9Pm8ubWFya0ZvckNoZWNrKCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKG4sMTIpLHpl'@; put 'KEt1KSx6ZShHeiksemUoVWwpLHplKEZEKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1kcm9wZG93biJdXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImRyb3Bkb3duIiwhMCkoIm9wZW4iLHIudG9nZ2xlU2VydmljZS5v'@; put 'cGVuKX0saW5wdXRzOntpc01lbnVDbG9zYWJsZTpbMCwiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCJpc01lbnVDbG9zYWJsZSJdfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbVXZ0LFVFZSxCdnRdKSx6ZyhbaTddKV0sbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczow'@; put 'LHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpO3ZhciBBaT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLlJJR0hUX0NFTlRFUj0wXT0iUklHSFRfQ0VOVEVSIixuW24uUklHSFRfVE9QPTFdPSJSSUdIVF9UT1AiLG5bbi5SSUdI'@; put 'VF9CT1RUT009Ml09IlJJR0hUX0JPVFRPTSIsbltuLlRPUF9DRU5URVI9M109IlRPUF9DRU5URVIiLG5bbi5UT1BfUklHSFQ9NF09IlRPUF9SSUdIVCIsbltuLlRPUF9MRUZUPTVdPSJUT1BfTEVGVCIsbltuLkJPVFRPTV9DRU5URVI9Nl09IkJPVFRPTV9DRU5URVIiLG5bbi5CT1RUT01fUklH'@; put 'SFQ9N109IkJPVFRPTV9SSUdIVCIsbltuLkJPVFRPTV9MRUZUPThdPSJCT1RUT01fTEVGVCIsbltuLkxFRlRfQ0VOVEVSPTldPSJMRUZUX0NFTlRFUiIsbltuLkxFRlRfVE9QPTEwXT0iTEVGVF9UT1AiLG5bbi5MRUZUX0JPVFRPTT0xMV09IkxFRlRfQk9UVE9NIixufShBaXx8e30pO2NsYXNz'@; put 'IFl2dHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLmJvdW5kT25TY3JvbGxMaXN0ZW5lcj10aGlzLmVtaXRTY3JvbGxFdmVudC5iaW5kKHRoaXMpLHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnRzPVtdLGUuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixlLnN0eWxlLnRvcD0wLGUu'@; put 'c3R5bGUuYm90dG9tPSJhdXRvIixlLnN0eWxlLmxlZnQ9MCxlLnN0eWxlLnJpZ2h0PSJhdXRvIn1hbmNob3IoZSx0LHIse29mZnNldFg6aT0wLG9mZnNldFk6bz0wLHVzZUFuY2hvclBhcmVudDphPSExfT17fSl7dGhpcy5hZGRTY3JvbGxFdmVudExpc3RlbmVycyhlKSxhJiYoZT1lLnBhcmVu'@; put 'dE5vZGUpLGUuc3R5bGUucG9zaXRpb249InN0YXRpYyI7Y29uc3QgbD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHU9dGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBnPWwubGVmdC11LmxlZnQraSxFPWwudG9wLXUudG9wK287c3dpdGNoKHQpe2Nhc2UgQWkuTEVG'@; put 'VF9UT1A6Y2FzZSBBaS5UT1BfTEVGVDpicmVhaztjYXNlIEFpLlRPUF9DRU5URVI6Zys9bC53aWR0aC8yO2JyZWFrO2Nhc2UgQWkuVE9QX1JJR0hUOmNhc2UgQWkuUklHSFRfVE9QOmcrPWwud2lkdGg7YnJlYWs7Y2FzZSBBaS5MRUZUX0JPVFRPTTpjYXNlIEFpLkJPVFRPTV9MRUZUOkUrPWwu'@; put 'aGVpZ2h0O2JyZWFrO2Nhc2UgQWkuQk9UVE9NX0NFTlRFUjpFKz1sLmhlaWdodCxnKz1sLndpZHRoLzI7YnJlYWs7Y2FzZSBBaS5CT1RUT01fUklHSFQ6Y2FzZSBBaS5SSUdIVF9CT1RUT006RSs9bC5oZWlnaHQsZys9bC53aWR0aDticmVhaztjYXNlIEFpLkxFRlRfQ0VOVEVSOkUrPWwuaGVp'@; put 'Z2h0LzI7YnJlYWs7Y2FzZSBBaS5SSUdIVF9DRU5URVI6RSs9bC5oZWlnaHQvMixnKz1sLndpZHRofXN3aXRjaChyKXtjYXNlIEFpLkxFRlRfVE9QOmNhc2UgQWkuVE9QX0xFRlQ6YnJlYWs7Y2FzZSBBaS5UT1BfQ0VOVEVSOmctPXUud2lkdGgvMjticmVhaztjYXNlIEFpLlRPUF9SSUdIVDpj'@; put 'YXNlIEFpLlJJR0hUX1RPUDpnLT11LndpZHRoO2JyZWFrO2Nhc2UgQWkuTEVGVF9CT1RUT006Y2FzZSBBaS5CT1RUT01fTEVGVDpFLT11LmhlaWdodDticmVhaztjYXNlIEFpLkJPVFRPTV9DRU5URVI6RS09dS5oZWlnaHQsZy09dS53aWR0aC8yO2JyZWFrO2Nhc2UgQWkuQk9UVE9NX1JJR0hU'@; put 'OmNhc2UgQWkuUklHSFRfQk9UVE9NOkUtPXUuaGVpZ2h0LGctPXUud2lkdGg7YnJlYWs7Y2FzZSBBaS5MRUZUX0NFTlRFUjpFLT11LmhlaWdodC8yO2JyZWFrO2Nhc2UgQWkuUklHSFRfQ0VOVEVSOkUtPXUuaGVpZ2h0LzIsZy09dS53aWR0aH1jb25zdCBPPWdldENvbXB1dGVkU3R5bGUodGhp'@; put 'cy5lbGVtZW50KSxaPXBhcnNlSW50KE8ubWFyZ2luTGVmdCwxMCksZWU9cGFyc2VJbnQoTy5tYXJnaW5SaWdodCwxMCksdmU9cGFyc2VJbnQoTy5tYXJnaW5Ub3AsMTApLE1lPXBhcnNlSW50KE8ubWFyZ2luQm90dG9tLDEwKTtzd2l0Y2godCl7Y2FzZSBBaS5MRUZUX1RPUDpjYXNlIEFpLlRP'@; put 'UF9MRUZUOmNhc2UgQWkuVE9QX1JJR0hUOmNhc2UgQWkuUklHSFRfVE9QOihyPT09QWkuQk9UVE9NX1JJR0hUfHxyPT09QWkuUklHSFRfQk9UVE9NKSYmKEUtPU1lLGctPWVlKSwocj09PUFpLkJPVFRPTV9MRUZUfHxyPT09QWkuTEVGVF9CT1RUT00pJiYoRS09dmUsZys9WiksKHI9PT1BaS5U'@; put 'T1BfTEVGVHx8cj09PUFpLkxFRlRfVE9QKSYmKEUrPXZlLGcrPVopLChyPT09QWkuVE9QX1JJR0hUfHxyPT09QWkuUklHSFRfVE9QKSYmKEUrPXZlLGctPWVlKTticmVhaztjYXNlIEFpLkxFRlRfQk9UVE9NOmNhc2UgQWkuQk9UVE9NX0xFRlQ6Y2FzZSBBaS5CT1RUT01fUklHSFQ6Y2FzZSBB'@; put 'aS5SSUdIVF9CT1RUT006KHI9PT1BaS5CT1RUT01fTEVGVHx8cj09PUFpLkxFRlRfQk9UVE9NKSYmKEUtPU1lLGcrPVopLChyPT09QWkuQk9UVE9NX1JJR0hUfHxyPT09QWkuUklHSFRfQk9UVE9NKSYmKEUtPU1lLGctPWVlKSwocj09PUFpLlRPUF9MRUZUfHxyPT09QWkuTEVGVF9UT1ApJiYo'@; put 'RSs9dmUsZys9WiksKHI9PT1BaS5UT1BfUklHSFR8fHI9PT1BaS5SSUdIVF9UT1ApJiYoRSs9dmUsZy09ZWUpO2JyZWFrO2Nhc2UgQWkuVE9QX0NFTlRFUjpFLT1NZSxnKz1aLGctPWVlO2JyZWFrO2Nhc2UgQWkuQk9UVE9NX0NFTlRFUjpFKz12ZSxnKz1aLGctPWVlO2JyZWFrO2Nhc2UgQWku'@; put 'TEVGVF9DRU5URVI6RSs9dmUsRS09TWUsZy09ZWU7YnJlYWs7Y2FzZSBBaS5SSUdIVF9DRU5URVI6RSs9dmUsRS09TWUsZys9Wn1yZXR1cm4gdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWCgke01hdGgucm91bmQoZyl9cHgpIHRyYW5zbGF0ZVkoJHtNYXRoLnJvdW5k'@; put 'KEUpfXB4KWAsdGhpcy5fc2Nyb2xsLmFzT2JzZXJ2YWJsZSgpfXJlbGVhc2UoKXt0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPSIiLHRoaXMucmVtb3ZlU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoKX1pc1Bvc2l0aW9uZWQoZSl7Y29uc3QgdD1nZXRDb21wdXRlZFN0eWxlKGUpLnBvc2l0aW9u'@; put 'O3JldHVybiJyZWxhdGl2ZSI9PT10fHwiYWJzb2x1dGUiPT09dHx8ImZpeGVkIj09PXR9ZW1pdFNjcm9sbEV2ZW50KCl7dGhpcy5fc2Nyb2xsLm5leHQoKX1hZGRTY3JvbGxFdmVudExpc3RlbmVycyhlKXt0aGlzLl9zY3JvbGw9bmV3IE1yO2NvbnN0IHQ9ZTtsZXQgcj1lO2Zvcig7ciYmciE9'@; put 'PWRvY3VtZW50JiYodGhpcy5zY3JvbGxzKHIpJiYoci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuYm91bmRPblNjcm9sbExpc3RlbmVyKSx0aGlzLnNjcm9sbGFibGVFbGVtZW50cy5wdXNoKHIpKSxyPT09dHx8IXRoaXMuaXNQb3NpdGlvbmVkKHIpKTspcj1yLnBhcmVudE5vZGV9'@; put 'cmVtb3ZlU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoKXtmb3IoY29uc3QgZSBvZiB0aGlzLnNjcm9sbGFibGVFbGVtZW50cyllLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5ib3VuZE9uU2Nyb2xsTGlzdGVuZXIpO3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMu'@; put 'X3Njcm9sbCYmKHRoaXMuX3Njcm9sbC5jb21wbGV0ZSgpLGRlbGV0ZSB0aGlzLl9zY3JvbGwpfXNjcm9sbHMoZSl7Y29uc3QgdD1nZXRDb21wdXRlZFN0eWxlKGUpO3JldHVybiJzY3JvbGwiPT09dC5vdmVyZmxvd1h8fCJhdXRvIj09PXQub3ZlcmZsb3dYfHwic2Nyb2xsIj09PXQub3ZlcmZs'@; put 'b3dZfHwiYXV0byI9PT10Lm92ZXJmbG93WX19Y29uc3QgUUVlPSJpcy1vZmYtc2NyZWVuIjtsZXQgWm9lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyKXt0aGlzLnBhcmVudEhvc3Q9cix0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITEsdGhpcy5wb3BvdmVyT3B0aW9ucz17fSx0aGlz'@; put 'LnVwZGF0ZUFuY2hvcj0hMSx0aGlzLmRvY3VtZW50RVNDTGlzdGVuZXI9bnVsbCx0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2tDYWxsYmFjaz1pPT57dGhpcy5hbmNob3JFbGVtLmNvbnRhaW5zKGkudGFyZ2V0KXx8KHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExKX0sdGhpcy5lbD10LmdldChu'@; put 'byksdGhpcy50b2dnbGVTZXJ2aWNlPXQuZ2V0KEt1KSx0aGlzLnJlbmRlcmVyPXQuZ2V0KE50KSx0aGlzLm5nWm9uZT10LmdldChnYSksdGhpcy5yZWY9dC5nZXQoVWwpLHRoaXMuYW5jaG9yRWxlbT1yLm5hdGl2ZUVsZW1lbnQsdGhpcy5wb3BvdmVySW5zdGFuY2U9bmV3IFl2dCh0aGlzLmVs'@; put 'Lm5hdGl2ZUVsZW1lbnQpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnBpcGUocWcodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4pKS5zdWJzY3JpYmUoaT0+e2k/KHRoaXMuYW5jaG9yKCksdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpLHRoaXMucmVuZGVy'@; put 'ZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LFFFZSkpOih0aGlzLnJlbGVhc2UoKSx0aGlzLmRldGFjaEVTQ0xpc3RlbmVyKCksdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsUUVlKSl9KSx0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmKHRo'@; put 'aXMuYW5jaG9yKCksdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnVwZGF0ZUFuY2hvciYmKHRoaXMudXBkYXRlQW5jaG9yPSExLHRoaXMucG9wb3Zlckluc3RhbmNlLmFuY2hvcih0aGlzLmFuY2hvckVsZW0sdGhpcy5hbmNob3JQb2ludCx0aGlz'@; put 'LnBvcG92ZXJQb2ludCx0aGlzLnBvcG92ZXJPcHRpb25zKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMX0pLHRoaXMuYXR0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbGVhc2UoKSx0aGlzLmRldGFjaEVTQ0xpc3RlbmVy'@; put 'KCksdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1hbmNob3IoKXt0aGlzLnVwZGF0ZUFuY2hvcj0hMH1yZWxlYXNlKCl7dGhpcy5kZXRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpLHRoaXMucG9wb3Zlckluc3RhbmNlLnJlbGVhc2UoKX1hdHRhY2hFU0NMaXN0ZW5lcigpe3RoaXMu'@; put 'cG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXJ8fHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsImtleWRvd24iLHQ9Pnt0JiZ0LmtleSYmdG0odC5rZXkp'@; put 'PT09TW8uRXNjYXBlJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKX0pfSl9KX1kZXRhY2hFU0NMaXN0ZW5lcigpe3RoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lciYmKHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcigp'@; put 'LHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcj1udWxsKX1hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpe3RoaXMuY2xvc2VPbk91dHNpZGVDbGljayYmdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJmRvY3VtZW50JiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiZkb2N1bWVudC5hZGRFdmVu'@; put 'dExpc3RlbmVyKCJjbGljayIsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2ssITApfWRldGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCl7dGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrJiZkb2N1bWVudCYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQucmVtb3Zl'@; put 'RXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuY2xvc2VPbk91dHNpZGVDbGlja0NhbGxiYWNrLCEwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoTWwpLHplKG5vLDQpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzdGFuZGFsb25lOiExfSks'@; put 'bn0pKCksamI9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFpvZXtjb25zdHJ1Y3Rvcih0LHIsaSxvKXtpZighcil0aHJvdyBuZXcgRXJyb3IoImNsci1kcm9wZG93bi1tZW51IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRyb3Bkb3duIik7c3VwZXIodCxyKSxpPyh0aGlzLmFu'@; put 'Y2hvclBvaW50PUFpLlJJR0hUX1RPUCx0aGlzLnBvcG92ZXJQb2ludD1BaS5MRUZUX1RPUCk6KHRoaXMuYW5jaG9yUG9pbnQ9QWkuQk9UVE9NX0xFRlQsdGhpcy5wb3BvdmVyUG9pbnQ9QWkuTEVGVF9UT1ApLHRoaXMucG9wb3Zlck9wdGlvbnMuYWxsb3dNdWx0aXBsZU9wZW49ITAsdGhpcy5w'@; put 'b3BvdmVyT3B0aW9ucy5pZ25vcmVHbG9iYWxFU0NMaXN0ZW5lcj0hMCx0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5mb2N1c0hhbmRsZXI9b31zZXQgcG9zaXRpb24odCl7c3dpdGNoKHQpe2Nhc2UidG9wLXJpZ2h0Ijp0aGlzLmFuY2hvclBvaW50PUFpLlRPUF9SSUdIVCx0aGlz'@; put 'LnBvcG92ZXJQb2ludD1BaS5SSUdIVF9CT1RUT007YnJlYWs7Y2FzZSJ0b3AtbGVmdCI6dGhpcy5hbmNob3JQb2ludD1BaS5UT1BfTEVGVCx0aGlzLnBvcG92ZXJQb2ludD1BaS5MRUZUX0JPVFRPTTticmVhaztjYXNlImJvdHRvbS1yaWdodCI6dGhpcy5hbmNob3JQb2ludD1BaS5CT1RUT01f'@; put 'UklHSFQsdGhpcy5wb3BvdmVyUG9pbnQ9QWkuUklHSFRfVE9QO2JyZWFrO2Nhc2UiYm90dG9tLWxlZnQiOmRlZmF1bHQ6dGhpcy5hbmNob3JQb2ludD1BaS5CT1RUT01fTEVGVCx0aGlzLnBvcG92ZXJQb2ludD1BaS5MRUZUX1RPUDticmVhaztjYXNlInJpZ2h0LXRvcCI6dGhpcy5hbmNob3JQ'@; put 'b2ludD1BaS5SSUdIVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9QWkuTEVGVF9UT1A7YnJlYWs7Y2FzZSJyaWdodC1ib3R0b20iOnRoaXMuYW5jaG9yUG9pbnQ9QWkuUklHSFRfQk9UVE9NLHRoaXMucG9wb3ZlclBvaW50PUFpLkxFRlRfQk9UVE9NO2JyZWFrO2Nhc2UibGVmdC10b3AiOnRoaXMu'@; put 'YW5jaG9yUG9pbnQ9QWkuTEVGVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9QWkuUklHSFRfVE9QO2JyZWFrO2Nhc2UibGVmdC1ib3R0b20iOnRoaXMuYW5jaG9yUG9pbnQ9QWkuTEVGVF9CT1RUT00sdGhpcy5wb3BvdmVyUG9pbnQ9QWkuUklHSFRfQk9UVE9NfX1uZ0FmdGVyQ29udGVudEluaXQo'@; put 'KXt0aGlzLmZvY3VzSGFuZGxlci5jb250YWluZXI9dGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMuaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9PnRoaXMuZm9jdXNIYW5kbGVyLmFkZENoaWxkcmVuKHRoaXMuaXRlbXMudG9BcnJheSgpKSksdGhpcy5pdGVtcy5ub3RpZnlPbkNoYW5nZXMo'@; put 'KX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5mb2N1c0hhbmRsZXIucmVzZXRDaGlsZHJlbigpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShNbCksemUoVXosOCksemUobiwxMiksemUoR3opKX0sbi5cdTAyNzVjbXA9'@; put 'UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRyb3Bkb3duLW1lbnUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmRmEoaSxaeiw0KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLml0ZW1zPW8pfX0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24o'@; put 'dCxyKXsyJnQmJihScigicm9sZSIsIm1lbnUiKSx3cigiZHJvcGRvd24tbWVudSIsITApKX0saW5wdXRzOntwb3NpdGlvbjpbMCwiY2xyUG9zaXRpb24iLCJwb3NpdGlvbiJdfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb10sbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczow'@; put 'LHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLFViPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyl7dGhpcy50b2dnbGVTZXJ2aWNlPXIsdGhpcy5pc1Jvb3RMZXZlbFRvZ2dsZT0hMCx0LnBhcmVudCYmKHRo'@; put 'aXMuaXNSb290TGV2ZWxUb2dnbGU9ITEpLG8udHJpZ2dlcj1pLm5hdGl2ZUVsZW1lbnR9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbn1vbkRyb3Bkb3duVHJpZ2dlckNsaWNrKHQpe3RoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQodCl9fXJldHVy'@; put 'biBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKG83KSx6ZShLdSksemUobm8pLHplKEd6KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsckRyb3Bkb3duVHJpZ2dlciIsIiJdLFsiIiwiY2xyRHJvcGRvd25Ub2dnbGUiLCIiXV0s'@; put 'aG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgiY2xpY2siLGZ1bmN0aW9uKG8pe3JldHVybiByLm9uRHJvcGRvd25UcmlnZ2VyQ2xpY2sobyl9KSwyJnQmJihScigiYXJpYS1oYXNwb3B1cCIsIm1lbnUiKSgiYXJpYS1leHBhbmRlZCIsci5hY3RpdmUpLHdy'@; put 'KCJkcm9wZG93bi10b2dnbGUiLHIuaXNSb290TGV2ZWxUb2dnbGUpKCJkcm9wZG93bi1pdGVtIiwhci5pc1Jvb3RMZXZlbFRvZ2dsZSkoImV4cGFuZGFibGUiLCFyLmlzUm9vdExldmVsVG9nZ2xlKSgiYWN0aXZlIixyLmFjdGl2ZSkpfSxzdGFuZGFsb25lOiExfSksbn0pKCk7Y29uc3QgWnZ0'@; put 'PVt7cHJvdmlkZTpaeix1c2VDbGFzczooKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLmVsPXQsdGhpcy5yZW5kZXJlcj1yLHRoaXMucGxhdGZvcm1JZD1pLHRoaXMuaWQ9UGgoKSx0aGlzLmRpc2FibGVkPSExLHIuc2V0QXR0cmlidXRlKHQubmF0aXZlRWxlbWVudCwiaWQi'@; put 'LHRoaXMuaWQpLHIuc2V0QXR0cmlidXRlKHQubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCItMSIpfWZvY3VzKCl7SGModGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCIwIiksdGhpcy5lbC5uYXRp'@; put 'dmVFbGVtZW50LmZvY3VzKCksdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pKX1ibHVyKCl7SGModGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRl'@; put 'KHRoaXMuZWwubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCItMSIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5ibHVyKCkpfWFjdGl2YXRlKCl7SGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXty'@; put 'ZXR1cm4gbmV3KHR8fG4pKG9yKG5vKSxvcihOdCksb3IobGQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKX1dO2xldCBwTT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLmRyb3Bkb3duPXQsdGhpcy5fZHJvcGRvd25T'@; put 'ZXJ2aWNlPXIsdGhpcy5mb2N1c2FibGVJdGVtPWl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5mb2N1c2FibGVJdGVtLmRpc2FibGVkPSEhdHx8IiI9PT10fWdldCBkcm9wZG93bkl0ZW1JZCgpe3JldHVybiB0'@; put 'aGlzLmZvY3VzYWJsZUl0ZW0uaWR9c2V0IGRyb3Bkb3duSXRlbUlkKHQpe3RoaXMuZm9jdXNhYmxlSXRlbS5pZD10fW9uRHJvcGRvd25JdGVtQ2xpY2soKXtpZih0aGlzLmRyb3Bkb3duLmlzTWVudUNsb3NhYmxlJiYhdGhpcy5kaXNhYmxlZCYmdGhpcy5kcm9wZG93bi50b2dnbGVTZXJ2aWNl'@; put 'Lm9wZW4pe2NvbnN0IHQ9dGhpcy5maW5kUm9vdERyb3Bkb3duKCk7dC5mb2N1c0hhbmRsZXIuZm9jdXMoKSx0LmZvY3VzSGFuZGxlci5mb2N1c0JhY2tPblRyaWdnZXJXaGVuQ2xvc2VkPSExfXNldFRpbWVvdXQoKCk9Pnt0aGlzLmRyb3Bkb3duLmlzTWVudUNsb3NhYmxlJiYhdGhpcy5kaXNh'@; put 'YmxlZCYmdGhpcy5fZHJvcGRvd25TZXJ2aWNlLmNsb3NlTWVudXMoKX0pfW9uU3BhY2VLZXlkb3duKHQpe3RoaXMuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uSWZEaXNhYmxlZCh0KX1vbkVudGVyS2V5ZG93bih0KXt0aGlzLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbklmRGlzYWJsZWQodCl9'@; put 'c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uSWZEaXNhYmxlZCh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfWZpbmRSb290RHJvcGRvd24oKXtsZXQgdD10aGlzLmRyb3Bkb3duO2Zvcig7dC5wYXJlbnQ7KXQ9dC5wYXJl'@; put 'bnQ7cmV0dXJuIHR9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKG83KSx6ZShGRCksemUoWnopKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyRHJvcGRvd25JdGVtIiwiIl1dLGhvc3RWYXJzOjcsaG9zdEJpbmRp'@; put 'bmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHIub25Ecm9wZG93bkl0ZW1DbGljaygpfSkoImtleWRvd24uc3BhY2UiLGZ1bmN0aW9uKG8pe3JldHVybiByLm9uU3BhY2VLZXlkb3duKG8pfSkoImtleWRvd24uZW50ZXIiLGZ1bmN0aW9uKG8pe3Jl'@; put 'dHVybiByLm9uRW50ZXJLZXlkb3duKG8pfSksMiZ0JiYoUnIoInJvbGUiLCJtZW51aXRlbSIpKCJhcmlhLWRpc2FibGVkIixyLmRpc2FibGVkKSgiaWQiLHIuZHJvcGRvd25JdGVtSWQpLHdyKCJkaXNhYmxlZCIsci5kaXNhYmxlZCkoImRyb3Bkb3duLWl0ZW0iLCEwKSl9LGlucHV0czp7ZGlz'@; put 'YWJsZWQ6WzAsImNsckRpc2FibGVkIiwiZGlzYWJsZWQiXSxkcm9wZG93bkl0ZW1JZDpbMCwiaWQiLCJkcm9wZG93bkl0ZW1JZCJdfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbWnZ0XSldfSksbn0pKCksR29lPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlv'@; put 'bih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLHJtLFdsXX0pLG59KSgpLCRvZT0oKCk9PntjbGFzcyBue3NldCB0cmlnZ2VyRWwodCl7dGhpcy5fdHJpZ2dlckVsPXR9Zm9jdXNUcmlnZ2VyKCl7dGhpcy5f'@; put 'dHJpZ2dlckVsJiZ0aGlzLl90cmlnZ2VyRWwuZm9jdXMoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCkscW9lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0'@; put 'b3IoKXt0aGlzLl9pZD1uZXcgTXJ9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkLmFzT2JzZXJ2YWJsZSgpfXNldElkKHQpe3RoaXMuX2lkLm5leHQodCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFj'@; put 'dG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLCR6PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyxhLGwpe3RoaXMudG9nZ2xlU2VydmljZT10LHRoaXMuZWw9cix0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlPWksdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlcj1vLHRoaXMucGxhdGZvcm1J'@; put 'ZD1sLHRoaXMuYXJpYUV4cGFuZGVkPSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmRvY3VtZW50PWF9bmdPbkluaXQoKXt0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyLnRyaWdnZXJFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b2dn'@; put 'bGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLmFyaWFFeHBhbmRlZD10O2NvbnN0IHI9dGhpcy5pc09wZW47dGhpcy5pc09wZW49dCwhdGhpcy5pc09wZW4mJnImJnRoaXMuZm9jdXNPbkNsb3NlKCl9KSx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlLmlkLnN1YnNjcmliZSh0'@; put 'PT50aGlzLmFyaWFDb250cm9sPXQpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9b25TaWducG9zdFRyaWdnZXJDbGljayh0KXt0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KHQpfWZvY3VzT25DbG9zZSgpe0hj'@; put 'KHRoaXMucGxhdGZvcm1JZCkmJiF0aGlzLmlzT3BlbiYmdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dGhpcy5kb2N1bWVudC5ib2R5JiZ0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyLmZvY3VzVHJpZ2dlcigpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l'@; put 'dyh0fHxuKSh6ZShLdSksemUobm8pLHplKHFvZSksemUoJG9lKSx6ZShUbCksemUobGQpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIl1dLGhvc3RBdHRyczpbMSwic2lnbnBvc3QtdHJpZ2dlciJdLGhvc3RWYXJzOjQsaG9z'@; put 'dEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgiY2xpY2siLGZ1bmN0aW9uKG8pe3JldHVybiByLm9uU2lnbnBvc3RUcmlnZ2VyQ2xpY2sobyl9KSwyJnQmJihScigiYXJpYS1leHBhbmRlZCIsci5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIixyLmFyaWFDb250cm9sKSx3cigi'@; put 'YWN0aXZlIixyLmlzT3BlbikpfSxzdGFuZGFsb25lOiExfSksbn0pKCkscXo9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbW1vblN0cmluZ3M9dCx0aGlzLnVzZUN1c3RvbVRyaWdnZXI9ITF9c2V0IGN1c3RvbVRyaWdnZXIodCl7dGhpcy51c2VDdXN0b21UcmlnZ2VyPSEh'@; put 'dH19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoaWwpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLXNpZ25wb3N0Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixpKXtpZigxJnQmJkZhKGksJHosNSksMiZ0'@; put 'KXtsZXQgbztjaShvPXVpKCkpJiYoci5jdXN0b21UcmlnZ2VyPW8uZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJzaWducG9zdCIsITApfSxpbnB1dHM6e3NpZ25wb3N0VHJpZ2dlckFyaWFMYWJlbDpbMCwiY2xyU2lnbnBvc3RUcmlnZ2Vy'@; put 'QXJpYUxhYmVsIiwic2lnbnBvc3RUcmlnZ2VyQXJpYUxhYmVsIl19LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFskb2UscW9lXSksemcoW2k3XSldLG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xy'@; put 'U2lnbnBvc3RUcmlnZ2VyIiwiIiwxLCJzaWducG9zdC1hY3Rpb24iLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1saW5rIl0sWyJzaGFwZSIsImluZm8tY2lyY2xlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxZbigwLEo0dCwzLDIsIm5nLWNvbnRhaW5lciIs'@; put 'MCksV3IoMSkpLDImdCYmcnQoIm5nSWYiLCFyLnVzZUN1c3RvbVRyaWdnZXIpfSxkZXBlbmRlbmNpZXM6W1lzLEpzLCR6XSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKTtjb25zdCBHdnQ9eyJ0b3AtbGVmdCI6e2FuY2hvclBvaW50OkFpLlRPUF9DRU5URVIscG9wb3ZlclBvaW50OkFpLkJPVFRP'@; put 'TV9SSUdIVCxvZmZzZXRZOi0xNixvZmZzZXRYOjB9LCJ0b3AtbWlkZGxlIjp7YW5jaG9yUG9pbnQ6QWkuVE9QX0NFTlRFUixwb3BvdmVyUG9pbnQ6QWkuQk9UVE9NX0NFTlRFUixvZmZzZXRZOi0xNixvZmZzZXRYOjB9LCJ0b3AtcmlnaHQiOnthbmNob3JQb2ludDpBaS5UT1BfQ0VOVEVSLHBv'@; put 'cG92ZXJQb2ludDpBaS5CT1RUT01fTEVGVCxvZmZzZXRZOi0xNixvZmZzZXRYOjB9LCJyaWdodC10b3AiOnthbmNob3JQb2ludDpBaS5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OkFpLkxFRlRfQk9UVE9NLG9mZnNldFk6MCxvZmZzZXRYOjE2fSwicmlnaHQtbWlkZGxlIjp7YW5jaG9yUG9p'@; put 'bnQ6QWkuUklHSFRfQ0VOVEVSLHBvcG92ZXJQb2ludDpBaS5MRUZUX0NFTlRFUixvZmZzZXRZOjAsb2Zmc2V0WDoxNn0sInJpZ2h0LWJvdHRvbSI6e2FuY2hvclBvaW50OkFpLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6QWkuTEVGVF9UT1Asb2Zmc2V0WTowLG9mZnNldFg6MTZ9LCJib3R0'@; put 'b20tcmlnaHQiOnthbmNob3JQb2ludDpBaS5CT1RUT01fQ0VOVEVSLHBvcG92ZXJQb2ludDpBaS5UT1BfTEVGVCxvZmZzZXRZOjE2LG9mZnNldFg6MH0sImJvdHRvbS1taWRkbGUiOnthbmNob3JQb2ludDpBaS5CT1RUT01fQ0VOVEVSLHBvcG92ZXJQb2ludDpBaS5UT1BfQ0VOVEVSLG9mZnNl'@; put 'dFk6MTYsb2Zmc2V0WDowfSwiYm90dG9tLWxlZnQiOnthbmNob3JQb2ludDpBaS5CT1RUT01fQ0VOVEVSLHBvcG92ZXJQb2ludDpBaS5UT1BfUklHSFQsb2Zmc2V0WToxNixvZmZzZXRYOjB9LCJsZWZ0LWJvdHRvbSI6e2FuY2hvclBvaW50OkFpLkxFRlRfQ0VOVEVSLHBvcG92ZXJQb2ludDpB'@; put 'aS5SSUdIVF9UT1Asb2Zmc2V0WTowLG9mZnNldFg6LTE2fSwibGVmdC1taWRkbGUiOnthbmNob3JQb2ludDpBaS5MRUZUX0NFTlRFUixwb3BvdmVyUG9pbnQ6QWkuUklHSFRfQ0VOVEVSLG9mZnNldFk6MCxvZmZzZXRYOi0xNn0sImxlZnQtdG9wIjp7YW5jaG9yUG9pbnQ6QWkuTEVGVF9DRU5U'@; put 'RVIscG9wb3ZlclBvaW50OkFpLlJJR0hUX0JPVFRPTSxvZmZzZXRZOjAsb2Zmc2V0WDotMTZ9LGRlZmF1bHQ6e2FuY2hvclBvaW50OkFpLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6QWkuTEVGVF9DRU5URVIsb2Zmc2V0WTowLG9mZnNldFg6MTZ9fSwkdnQ9WyJ0b3AtbGVmdCIsInRvcC1t'@; put 'aWRkbGUiLCJ0b3AtcmlnaHQiLCJyaWdodC10b3AiLCJyaWdodC1taWRkbGUiLCJyaWdodC1ib3R0b20iLCJib3R0b20tcmlnaHQiLCJib3R0b20tbWlkZGxlIiwiYm90dG9tLWxlZnQiLCJsZWZ0LWJvdHRvbSIsImxlZnQtbWlkZGxlIiwibGVmdC10b3AiXTtsZXQgSkVlPSgoKT0+e2NsYXNz'@; put 'IG4gZXh0ZW5kcyBab2V7Y29uc3RydWN0b3IodCxyLGksbyxhLGwsdSl7aWYoc3VwZXIodCxyKSx0aGlzLmNvbW1vblN0cmluZ3M9aSx0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyPWEsdGhpcy5wbGF0Zm9ybUlkPWwsdGhpcy5zaWducG9zdENvbnRlbnRJZD1QaCgpLCFyKXRocm93IG5ldyBF'@; put 'cnJvcigiY2xyLXNpZ25wb3N0LWNvbnRlbnQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHItc2lnbnBvc3QiKTt0aGlzLnBvc2l0aW9uPSJyaWdodC1taWRkbGUiLHRoaXMuY2xvc2VPbk91dHNpZGVDbGljaz0hMCxvLnNldElkKHRoaXMuc2lnbnBvc3RDb250ZW50SWQpLHRo'@; put 'aXMuZG9jdW1lbnQ9dX1nZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259c2V0IHBvc2l0aW9uKHQpe3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMucG9zaXRpb24pLHRoaXMuX3Bvc2l0aW9uPXQmJiR2dC5pbmRleE9mKHQpPi0x'@; put 'P3Q6InJpZ2h0LW1pZGRsZSIsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5wb3NpdGlvbik7Y29uc3Qgcj1HdnRbdGhpcy5wb3NpdGlvbl07dGhpcy5hbmNob3JQb2ludD1yLmFuY2hvclBvaW50LHRoaXMucG9wb3ZlclBvaW50PXIucG9wb3ZlclBv'@; put 'aW50LHRoaXMucG9wb3Zlck9wdGlvbnMub2Zmc2V0WT1yLm9mZnNldFksdGhpcy5wb3BvdmVyT3B0aW9ucy5vZmZzZXRYPXIub2Zmc2V0WH1jbG9zZSgpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSxIYyh0aGlzLnBsYXRmb3Jt'@; put 'SWQpJiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlci5mb2N1c1RyaWdnZXIoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoTWwpLHpl'@; put 'KFV6LDgpLHplKGlsKSx6ZShxb2UpLHplKCRvZSksemUobGQpLHplKFRsKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1zaWducG9zdC1jb250ZW50Il1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiYoTzUoImlkIixyLnNpZ25w'@; put 'b3N0Q29udGVudElkKSx3cigic2lnbnBvc3QtY29udGVudCIsITApKX0saW5wdXRzOntzaWducG9zdENsb3NlQXJpYUxhYmVsOlswLCJjbHJTaWducG9zdENsb3NlQXJpYUxhYmVsIiwic2lnbnBvc3RDbG9zZUFyaWFMYWJlbCJdLHBvc2l0aW9uOlswLCJjbHJQb3NpdGlvbiIsInBvc2l0aW9u'@; put 'Il19LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W0ZvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6dDV0LGRlY2xzOjgsdmFyczozLGNvbnN0czpbWzEsInNpZ25wb3N0LXdyYXAiXSxbMSwicG9wb3Zlci1wb2ludGVyIl0sWzEsInNpZ25wb3N0LWNvbnRlbnQtaGVhZGVyIl0sWyJ0eXBlIiwiYnV0dG9u'@; put 'IiwxLCJzaWducG9zdC1hY3Rpb24iLCJjbG9zZSIsMywiY2xpY2siXSxbInNoYXBlIiwid2luZG93LWNsb3NlIl0sWyJ0YWJpbmRleCIsIjAiLDEsInNpZ25wb3N0LWNvbnRlbnQtYm9keSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKGU1dCksSigwLCJkaXYiLDApLEl0KDEs'@; put 'ImRpdiIsMSksSigyLCJkaXYiLDIpLFdyKDMpLEooNCwiYnV0dG9uIiwzKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHIuY2xvc2UoKX0pLEl0KDUsImNkcy1pY29uIiw0KSx0ZSgpKCksSig2LCJkaXYiLDUpLFdyKDcsMSksdGUoKSgpKSwyJnQmJihpZSg0KSxScigiYXJpYS1sYWJl'@; put 'bCIsci5zaWducG9zdENsb3NlQXJpYUxhYmVsfHxyLmNvbW1vblN0cmluZ3Mua2V5cy5zaWducG9zdENsb3NlKSgiYXJpYS1jb250cm9scyIsci5zaWducG9zdENvbnRlbnRJZCksaWUoKSxScigidGl0bGUiLHIuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSl9LGRlcGVuZGVuY2llczpbSnNd'@; put 'LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLHF2dD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMoY0QsQWd0KX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1t'@; put 'aSh7aW1wb3J0czpbcW8sV2wsV3oscm1dfSksbn0pKCksS29lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLl9pZD1uZXcgTXJ9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkLmFzT2JzZXJ2YWJsZSgpfXVwZGF0ZUlkKHQpe3RoaXMuX2lkLm5leHQodCl9fXJldHVybiBuLlx1MDI3'@; put 'NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLFhvZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMudG9nZ2xlU2VydmljZT10fW9uTW91c2VFbnRlclRyaWdnZXIoKXt0'@; put 'aGlzLm1vdXNlT3ZlclRyaWdnZXI9ITAsdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITB9b25Nb3VzZUxlYXZlVHJpZ2dlcigpe3RoaXMubW91c2VPdmVyVHJpZ2dlcj0hMSx0aGlzLmhpZGVJZk1vdXNlT3V0KCl9b25Nb3VzZUVudGVyQ29udGVudCgpe3RoaXMubW91c2VPdmVyQ29udGVudD0h'@; put 'MH1vbk1vdXNlTGVhdmVDb250ZW50KCl7dGhpcy5tb3VzZU92ZXJDb250ZW50PSExLHRoaXMuaGlkZUlmTW91c2VPdXQoKX1oaWRlSWZNb3VzZU91dCgpe3NldFRpbWVvdXQoKCk9PnshdGhpcy5tb3VzZU92ZXJUcmlnZ2VyJiYhdGhpcy5tb3VzZU92ZXJDb250ZW50JiYodGhpcy50b2dnbGVT'@; put 'ZXJ2aWNlLm9wZW49ITEpfSwwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoS3UpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSx3dj0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVm'@; put 'YWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLXRvb2x0aXAiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJ0b29sdGlwIiwhMCl9LHN0YW5kYWxvbmU6ITEsZmVhdHVy'@; put 'ZXM6W2JvKFtLb2UsWG9lXSksemcoW2k3XSldLG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksV3IoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKTtjb25zdCBYdnQ9WyJib3R0b20tbGVmdCIsImJvdHRvbS1y'@; put 'aWdodCIsInRvcC1sZWZ0IiwidG9wLXJpZ2h0IiwicmlnaHQiLCJsZWZ0Il0sUXZ0PVsieHMiLCJzbSIsIm1kIiwibGciXTtsZXQgQ3Y9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFpvZXtjb25zdHJ1Y3Rvcih0LHIsaSxvKXtpZihzdXBlcih0LHIpLHRoaXMudG9vbHRpcElkU2VydmljZT1pLHRo'@; put 'aXMudG9vbHRpcE1vdXNlU2VydmljZT1vLCFyKXRocm93IG5ldyBFcnJvcigiY2xyLXRvb2x0aXAtY29udGVudCBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBhIGNsci10b29sdGlwIik7dGhpcy5pZD1QaCgpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7Y29uc3Qg'@; put 'cj10fHwiIjt0aGlzLl9pZD1yLHRoaXMudG9vbHRpcElkU2VydmljZS51cGRhdGVJZChyKX1nZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259c2V0IHBvc2l0aW9uKHQpe2NvbnN0IHI9dGhpcy5fcG9zaXRpb24saT1YdnQuaW5jbHVkZXModCk/dDoicmlnaHQiO3N3aXRjaCh0'@; put 'aGlzLl9wb3NpdGlvbj1pLHRoaXMudXBkYXRlQ3NzQ2xhc3Moe29sZENsYXNzOmB0b29sdGlwLSR7cn1gLG5ld0NsYXNzOmB0b29sdGlwLSR7aX1gfSksaSl7Y2FzZSJ0b3AtcmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9QWkuVE9QX0NFTlRFUix0aGlzLnBvcG92ZXJQb2ludD1BaS5MRUZUX0JP'@; put 'VFRPTTticmVhaztjYXNlInRvcC1sZWZ0Ijp0aGlzLmFuY2hvclBvaW50PUFpLlRPUF9DRU5URVIsdGhpcy5wb3BvdmVyUG9pbnQ9QWkuUklHSFRfQk9UVE9NO2JyZWFrO2Nhc2UiYm90dG9tLXJpZ2h0Ijp0aGlzLmFuY2hvclBvaW50PUFpLkJPVFRPTV9DRU5URVIsdGhpcy5wb3BvdmVyUG9p'@; put 'bnQ9QWkuTEVGVF9UT1A7YnJlYWs7Y2FzZSJib3R0b20tbGVmdCI6dGhpcy5hbmNob3JQb2ludD1BaS5CT1RUT01fQ0VOVEVSLHRoaXMucG9wb3ZlclBvaW50PUFpLlJJR0hUX1RPUDticmVhaztjYXNlInJpZ2h0Ijp0aGlzLmFuY2hvclBvaW50PUFpLlJJR0hUX0NFTlRFUix0aGlzLnBvcG92'@; put 'ZXJQb2ludD1BaS5MRUZUX1RPUDticmVhaztjYXNlImxlZnQiOnRoaXMuYW5jaG9yUG9pbnQ9QWkuTEVGVF9DRU5URVIsdGhpcy5wb3BvdmVyUG9pbnQ9QWkuUklHSFRfVE9QO2JyZWFrO2RlZmF1bHQ6IWZ1bmN0aW9uIEt2dChuKXt0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCB2YWx1ZTog'@; put 'JHtufWApfShpKX19Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1zZXQgc2l6ZSh0KXtjb25zdCByPXRoaXMuX3NpemUsaT1RdnQuaW5jbHVkZXModCk/dDoic20iO3RoaXMuX3NpemU9aSx0aGlzLnVwZGF0ZUNzc0NsYXNzKHtvbGRDbGFzczpgdG9vbHRpcC0ke3J9YCxuZXdDbGFzczpg'@; put 'dG9vbHRpcC0ke2l9YH0pfW5nT25Jbml0KCl7dGhpcy5zaXplPXRoaXMuc2l6ZXx8InNtIix0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb258fCJyaWdodCJ9b25Nb3VzZUVudGVyKCl7dGhpcy50b29sdGlwTW91c2VTZXJ2aWNlLm9uTW91c2VFbnRlckNvbnRlbnQoKX1vbk1vdXNlTGVhdmUo'@; put 'KXt0aGlzLnRvb2x0aXBNb3VzZVNlcnZpY2Uub25Nb3VzZUxlYXZlQ29udGVudCgpfXVwZGF0ZUNzc0NsYXNzKHtvbGRDbGFzczp0LG5ld0NsYXNzOnJ9KXt0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCx0KSx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRo'@; put 'aXMuZWwubmF0aXZlRWxlbWVudCxyKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoTWwpLHplKFV6LDgpLHplKEtvZSksemUoWG9lKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci10b29sdGlwLWNvbnRlbnQiXV0s'@; put 'aG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsxJnQmJnd0KCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiByLm9uTW91c2VFbnRlcigpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHIub25Nb3VzZUxlYXZlKCl9KSwyJnQmJihPNSgiaWQiLHIuaWQp'@; put 'LFJyKCJyb2xlIiwidG9vbHRpcCIpLE8yKCJvcGFjaXR5IiwxKSx3cigidG9vbHRpcC1jb250ZW50IiwhMCkpfSxpbnB1dHM6e2lkOiJpZCIscG9zaXRpb246WzAsImNsclBvc2l0aW9uIiwicG9zaXRpb24iXSxzaXplOlswLCJjbHJTaXplIiwic2l6ZSJdfSxzdGFuZGFsb25lOiExLGZlYXR1'@; put 'cmVzOltGb10sbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLFN2PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGkpe3RoaXMudG9nZ2xlU2Vydmlj'@; put 'ZT10LHRoaXMudG9vbHRpcE1vdXNlU2VydmljZT1pLHRoaXMuc3Vicz1bXSx0aGlzLnN1YnMucHVzaChyLmlkLnN1YnNjcmliZShvPT50aGlzLmFyaWFEZXNjcmliZWRCeT1vKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfXNob3dUb29sdGlw'@; put 'KCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITB9aGlkZVRvb2x0aXAoKXt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMX1vbk1vdXNlRW50ZXIoKXt0aGlzLnRvb2x0aXBNb3VzZVNlcnZpY2Uub25Nb3VzZUVudGVyVHJpZ2dlcigpfW9uTW91c2VMZWF2ZSgpe3RoaXMudG9vbHRpcE1vdXNl'@; put 'U2VydmljZS5vbk1vdXNlTGVhdmVUcmlnZ2VyKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKEt1KSx6ZShLb2UpLHplKFhvZSkpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJjbHJUb29sdGlwVHJpZ2dlciIsIiJd'@; put 'XSxob3N0QXR0cnM6WyJ0YWJpbmRleCIsIjAiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmd3QoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiByLnNob3dUb29sdGlwKCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gci5oaWRlVG9vbHRpcCgpfSkoIm1v'@; put 'dXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHIub25Nb3VzZUVudGVyKCl9KSgibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtyZXR1cm4gci5vbk1vdXNlTGVhdmUoKX0pLDImdCYmKFJyKCJhcmlhLWRlc2NyaWJlZGJ5IixyLmFyaWFEZXNjcmliZWRCeSkoInJvbGUiLCJidXR0b24iKSx3cigi'@; put 'dG9vbHRpcC10cmlnZ2VyIiwhMCkpfSxzdGFuZGFsb25lOiExfSksbn0pKCksSnZ0PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3Fv'@; put 'LHJtLFdsXX0pLG59KSgpLGVfdD0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltHb2UscXZ0LEp2dF19KSxufSkoKTt2YXIgemI9ZnVu'@; put 'Y3Rpb24obil7cmV0dXJuIG4uVkVSVElDQUw9InZlcnRpY2FsIixuLkhPUklaT05UQUw9Imhvcml6b250YWwiLG4uQ09NUEFDVD0iY29tcGFjdCIsbn0oemJ8fHt9KTtsZXQgWjU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMubWluTGFiZWxTaXplPTEsdGhpcy5tYXhMYWJlbFNp'@; put 'emU9MTIsdGhpcy5sYXlvdXQ9emIuSE9SSVpPTlRBTCx0aGlzLmxheW91dFZhbHVlcz1PYmplY3Qua2V5cyh6YikubWFwKHQ9PnpiW3RdKSx0aGlzLl9sYWJlbFNpemU9Mn1nZXQgbGFiZWxTaXplKCl7cmV0dXJuIHRoaXMuX2xhYmVsU2l6ZX1zZXQgbGFiZWxTaXplKHQpe3RoaXMubGFiZWxT'@; put 'aXplSXNWYWxpZCh0KSYmKHRoaXMuX2xhYmVsU2l6ZT10KX1nZXQgbGF5b3V0Q2xhc3MoKXtyZXR1cm5gY2xyLWZvcm0tJHt0aGlzLmxheW91dH1gfWlzVmVydGljYWwoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT16Yi5WRVJUSUNBTH1pc0hvcml6b250YWwoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9'@; put 'PT16Yi5IT1JJWk9OVEFMfWlzQ29tcGFjdCgpe3JldHVybiB0aGlzLmxheW91dD09PXpiLkNPTVBBQ1R9aXNWYWxpZCh0KXtyZXR1cm4gdGhpcy5sYXlvdXRWYWx1ZXMuaW5kZXhPZih0KT4tMX1sYWJlbFNpemVJc1ZhbGlkKHQpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj10aGlz'@; put 'Lm1pbkxhYmVsU2l6ZSYmdDw9dGhpcy5tYXhMYWJlbFNpemV9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGVsPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0'@; put 'b3IodCxyLGksbyxhKXt0aGlzLmNvbnRyb2xJZFNlcnZpY2U9dCx0aGlzLmxheW91dFNlcnZpY2U9cix0aGlzLm5nQ29udHJvbFNlcnZpY2U9aSx0aGlzLnJlbmRlcmVyPW8sdGhpcy5lbD1hLHRoaXMuZW5hYmxlR3JpZD0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W119Z2V0IGxhYmVsVGV4dCgp'@; put 'e3JldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQmJnRoaXMuZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudH1uZ09uSW5pdCgpe3RoaXMuaWRBdHRyPXRoaXMuaWRJbnB1dCwodGhpcy5jb250cm9sSWRTZXJ2aWNlfHx0aGlzLm5nQ29udHJvbFNlcnZpY2UpJiZ0aGlzLnJlbmRlcmVyLmFk'@; put 'ZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiY2xyLWNvbnRyb2wtbGFiZWwiKSx0aGlzLmVuYWJsZUdyaWQmJnRoaXMubGF5b3V0U2VydmljZSYmIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCkmJnRoaXMuZWwubmF0aXZlRWxlbWVudCYmdGhpcy5lbC5uYXRpdmVFbGVtZW50'@; put 'LmNsYXNzTmFtZS5pbmRleE9mKCJjbHItY29sIik8MCYmKHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJjbHItY29sLTEyIiksdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsYGNsci1jb2wtbWQtJHt0aGlzLmxheW91dFNl'@; put 'cnZpY2UubGFiZWxTaXplfWApKSx0aGlzLmNvbnRyb2xJZFNlcnZpY2UmJiF0aGlzLmZvckF0dHImJnRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuY29udHJvbElkU2VydmljZS5pZENoYW5nZS5zdWJzY3JpYmUodD0+e3RoaXMuZm9yQXR0cj10LHRoaXMuaWRBdHRyPXRoaXMuaWRJbnB1'@; put 'dHx8YCR7dH0tbGFiZWxgfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51bnN1YnNjcmliZSgpKX1kaXNhYmxlR3JpZCgpe3RoaXMuZW5hYmxlR3JpZD0hMX1vbkNsaWNrKHQpe3RoaXMucHJldmVudERlZmF1bHRPblNpZ25wb3N0VGFyZ2V0KHQpfXBy'@; put 'ZXZlbnREZWZhdWx0T25TaWducG9zdFRhcmdldCh0KXt0aGlzLnNpZ25wb3N0JiZ0aGlzLnNpZ25wb3N0Lm5hdGl2ZUVsZW1lbnQmJnRoaXMuc2lnbnBvc3QubmF0aXZlRWxlbWVudC5jb250YWlucyh0LnRhcmdldCkmJnQucHJldmVudERlZmF1bHQoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1'@; put 'bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoT3AsOCksemUoWjUsOCksemUoajIsOCksemUoTnQpLHplKG5vKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbImxhYmVsIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixpKXtpZigxJnQmJkZhKGkscXosNSxu'@; put 'byksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci5zaWducG9zdD1vLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgiY2xpY2siLGZ1bmN0aW9uKG8pe3JldHVybiByLm9uQ2xpY2sobyl9KSwyJnQmJlJyKCJpZCIsci5pZEF0dHIpKCJmb3Ii'@; put 'LHIuZm9yQXR0cil9LGlucHV0czp7aWRJbnB1dDpbMCwiaWQiLCJpZElucHV0Il0sZm9yQXR0cjpbMCwiZm9yIiwiZm9yQXR0ciJdfSxzdGFuZGFsb25lOiExfSksbn0pKCksdF90PSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBZb2V7Y29uc3RydWN0b3IodCxyKXtzdXBlcih0LHIpLHRoaXMuY29u'@; put 'dHJvbElkU2VydmljZT10LHRoaXMuY29udGFpbmVySWRTZXJ2aWNlPXIsdGhpcy5jb250cm9sSWRTdWZmaXg9InN1Y2Nlc3MifX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShPcCw4KSx6ZShCYiw4KSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4s'@; put 'c2VsZWN0b3JzOltbImNsci1jb250cm9sLXN1Y2Nlc3MiXV0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJihScigiaWQiLHIuaWQpLHdyKCJjbHItc3VidGV4dCIsITApKCJzdWNjZXNzIiwhMCkpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb10sbmdDb250'@; put 'ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLEkzPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy5sYXlvdXRTZXJ2aWNlPXQsdGhpcy5jbGFzc05hbWU9'@; put 'IiJ9Y29udHJvbENsYXNzKHQ9azMuTk9ORSxyPSExLGk9IiIpe2NvbnN0IG89W3RoaXMuY2xhc3NOYW1lLGldO3N3aXRjaCh0KXtjYXNlIGszLlZBTElEOm8ucHVzaCgiY2xyLXN1Y2Nlc3MiKTticmVhaztjYXNlIGszLklOVkFMSUQ6by5wdXNoKCJjbHItZXJyb3IiKX1yZXR1cm4gciYmdGhp'@; put 'cy5sYXlvdXRTZXJ2aWNlJiYtMT09PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoImNsci1jb2wiKSYmby5wdXNoKGBjbHItY29sLW1kLSR7dGhpcy5sYXlvdXRTZXJ2aWNlLm1heExhYmVsU2l6ZS10aGlzLmxheW91dFNlcnZpY2UubGFiZWxTaXplfSBjbHItY29sLTEyYCksby5qb2luKCIgIiku'@; put 'dHJpbSgpfWluaXRDb250cm9sQ2xhc3ModCxyKXtyJiZyLmNsYXNzTmFtZSYmKHRoaXMuY2xhc3NOYW1lPXIuY2xhc3NOYW1lLHIuY2xhc3NOYW1lLnNwbGl0KCIgIikuZm9yRWFjaChvPT57by5zdGFydHNXaXRoKCJjbHItY29sIikmJnQucmVtb3ZlQ2xhc3MocixvKX0pKX19cmV0dXJuIG4u'@; put 'XHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoWjUsOCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLFdiPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyl7dGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZp'@; put 'Y2U9dCx0aGlzLmxheW91dFNlcnZpY2U9cix0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9aSx0aGlzLm5nQ29udHJvbFNlcnZpY2U9byx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShhPT57dGhpcy5zdGF0ZT1h'@; put 'LHNldFRpbWVvdXQoKCk9Pnt0aGlzLnVwZGF0ZUhlbHBlcnMoKX0pfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG8uY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKGE9Pnt0aGlzLmNvbnRyb2w9YX0pLG8uYWRkaXRpb25hbENvbnRyb2xzQ2hhbmdlcy5zdWJzY3JpYmUoYT0+e3RoaXMuYWRk'@; put 'aXRpb25hbENvbnRyb2xzPWF9KSl9Z2V0IHNob3dIZWxwZXIoKXtyZXR1cm4hIXRoaXMuY29udHJvbEhlbHBlckNvbXBvbmVudH1nZXQgc2hvd1ZhbGlkKCl7cmV0dXJuIHRoaXMudG91Y2hlZCYmdGhpcy5zdGF0ZT09PWszLlZBTElEJiZ0aGlzLnN1Y2Nlc3NNZXNzYWdlUHJlc2VudH1nZXQg'@; put 'c2hvd0ludmFsaWQoKXtyZXR1cm4gdGhpcy50b3VjaGVkJiZ0aGlzLnN0YXRlPT09azMuSU5WQUxJRCYmdGhpcy5lcnJvck1lc3NhZ2VQcmVzZW50fWdldCBzdWNjZXNzTWVzc2FnZVByZXNlbnQoKXtyZXR1cm4hIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnR9Z2V0IGVycm9yTWVzc2Fn'@; put 'ZVByZXNlbnQoKXtyZXR1cm4hIXRoaXMuY29udHJvbEVycm9yQ29tcG9uZW50fWdldCB0b3VjaGVkKCl7cmV0dXJuISghdGhpcy5jb250cm9sPy50b3VjaGVkJiYhdGhpcy5hZGRpdGlvbmFsQ29udHJvbHM/LnNvbWUodD0+dC50b3VjaGVkKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy51'@; put 'cGRhdGVIZWxwZXJzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfWNvbnRyb2xDbGFzcygpe3JldHVybiB0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2UuY29udHJvbENsYXNzKCF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50'@; put 'JiZ0aGlzLnN0YXRlPT09azMuVkFMSUR8fCF0aGlzLnRvdWNoZWQ/azMuTk9ORTp0aGlzLnN0YXRlLHRoaXMuYWRkR3JpZCgpKX1hZGRHcmlkKCl7cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZSYmIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCl9dXBkYXRlSGVscGVycygpe3RoaXMu'@; put 'bmdDb250cm9sU2VydmljZSYmdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLnNldEhlbHBlcnMoe3Nob3c6dGhpcy5zaG93SW52YWxpZHx8dGhpcy5zaG93SGVscGVyfHx0aGlzLnNob3dWYWxpZCxzaG93SW52YWxpZDp0aGlzLnNob3dJbnZhbGlkLHNob3dIZWxwZXI6dGhpcy5zaG93SGVscGVyLHNo'@; put 'b3dWYWxpZDp0aGlzLnNob3dWYWxpZH0pfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShSMyksemUoWjUsOCksemUoSTMpLHplKGoyKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEm'@; put 'dCYmKEZhKGksZWwsNSksRmEoaSx0X3QsNSksRmEoaSxWdnQsNSksRmEoaSxZeiw1KSksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci5sYWJlbD1vLmZpcnN0KSxjaShvPXVpKCkpJiYoci5jb250cm9sU3VjY2Vzc0NvbXBvbmVudD1vLmZpcnN0KSxjaShvPXVpKCkpJiYoci5jb250cm9sRXJy'@; put 'b3JDb21wb25lbnQ9by5maXJzdCksY2kobz11aSgpKSYmKHIuY29udHJvbEhlbHBlckNvbXBvbmVudD1vLmZpcnN0KX19LHN0YW5kYWxvbmU6ITF9KSxufSkoKTtjbGFzcyBLentjb25zdHJ1Y3RvcihlLHQscj0wKXtpZih0aGlzLmluamVjdG9yPXQuaW5qZWN0b3IsIXRoaXMuaW5qZWN0b3Iu'@; put 'Z2V0KGUsbnVsbCkpe2NvbnN0IGk9dGhpcy5pbmplY3Rvci5nZXQoTGgpLG89dGhpcy5pbmplY3Rvci5nZXQobm8pO3QuY3JlYXRlQ29tcG9uZW50KGkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRnZ0KSk7Y29uc3QgYT1pLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGUpLGw9W107bFtyXT1b'@; put 'by5uYXRpdmVFbGVtZW50XTtjb25zdCB1PXQuY3JlYXRlQ29tcG9uZW50KGEsdm9pZCAwLHZvaWQgMCxsKTt0LnJlbW92ZSgwKSx0aGlzLmluamVjdG9yPXUuaW5qZWN0b3J9fWdldChlLHQpe3JldHVybiB0aGlzLmluamVjdG9yLmdldChlLHQpfX1sZXQgUW9lPSgoKT0+e2NsYXNzIG57Y29u'@; put 'c3RydWN0b3IoKXt0aGlzLl90b3VjaGVkPW5ldyBNcn1nZXQgdG91Y2hlZENoYW5nZSgpe3JldHVybiB0aGlzLl90b3VjaGVkLmFzT2JzZXJ2YWJsZSgpfW1hcmtBc1RvdWNoZWQoKXt0aGlzLl90b3VjaGVkLm5leHQoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBu'@; put 'ZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7dmFyIEpvZT1mdW5jdGlvbihuKXtyZXR1cm4gbi5GT1JNPSJmb3JtIixuLk1PREVMPSJtb2RlbCIsbn0oSm9lfHx7fSk7bGV0IFliPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3Io'@; put 'dCxyLGksbyxhLGwpe3RoaXMudmNyPXQsdGhpcy53cmFwcGVyVHlwZT1yLHRoaXMuX25nQ29udHJvbD1vLHRoaXMucmVuZGVyZXI9YSx0aGlzLmVsPWwsdGhpcy5pbmRleD0wLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmFkZGl0aW9uYWxEaWZmZXI9bmV3IE1hcCxpJiYodGhpcy5uZ0Nv'@; put 'bnRyb2xTZXJ2aWNlPWkuZ2V0KGoyLG51bGwpLHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPWkuZ2V0KFIzLG51bGwpLHRoaXMuY29udHJvbENsYXNzU2VydmljZT1pLmdldChJMyxudWxsKSx0aGlzLm1hcmtDb250cm9sU2VydmljZT1pLmdldChRb2UsbnVsbCksdGhpcy5kaWZmZXJzPWku'@; put 'Z2V0KGRJLG51bGwpKSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2UmJnRoaXMuY29udHJvbENsYXNzU2VydmljZS5pbml0Q29udHJvbENsYXNzKGEsbC5uYXRpdmVFbGVtZW50KSx0aGlzLm1hcmtDb250cm9sU2VydmljZSYmdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5tYXJrQ29udHJv'@; put 'bFNlcnZpY2UudG91Y2hlZENoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLm1hcmtBc1RvdWNoZWQoKX0pKSx0aGlzLm5nQ29udHJvbFNlcnZpY2UmJnRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubmdDb250cm9sU2VydmljZS5oZWxwZXJzQ2hhbmdlLnN1YnNjcmliZSh1PT57dGhpcy5z'@; put 'ZXRBcmlhRGVzY3JpYmVkQnkodSl9KSl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZCh0KXt0aGlzLl9pZD10LHRoaXMuY29udHJvbElkU2VydmljZSYmKHRoaXMuY29udHJvbElkU2VydmljZS5pZD10KX1nZXQgaGFzQWRkaXRpb25hbENvbnRyb2xzKCl7cmV0dXJuIHRoaXMuYWRk'@; put 'aXRpb25hbERpZmZlci5zaXplPjB9bmdPbkluaXQoKXt0aGlzLl9jb250YWluZXJJbmplY3Rvcj1uZXcgS3oodGhpcy53cmFwcGVyVHlwZSx0aGlzLnZjcix0aGlzLmluZGV4KSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9dGhpcy5fY29udGFpbmVySW5qZWN0b3IuZ2V0KE9wKSx0aGlzLmNvbnRh'@; put 'aW5lcklkU2VydmljZT10aGlzLl9jb250YWluZXJJbmplY3Rvci5nZXQoQmIsbnVsbCksdGhpcy5faWQ/dGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkPXRoaXMuX2lkOnRoaXMuX2lkPXRoaXMuY29udHJvbElkU2VydmljZS5pZCx0aGlzLm5nQ29udHJvbFNlcnZpY2UmJnRoaXMuX25nQ29udHJv'@; put 'bCYmKHRoaXMubmdDb250cm9sU2VydmljZS5jb250cm9sPyh0aGlzLm5nQ29udHJvbD10aGlzLm5nQ29udHJvbFNlcnZpY2UuY29udHJvbCx0aGlzLm5nQ29udHJvbFNlcnZpY2UuYWRkQWRkaXRpb25hbENvbnRyb2wodGhpcy5fbmdDb250cm9sKSx0aGlzLmFkZGl0aW9uYWxEaWZmZXIuc2V0'@; put 'KHRoaXMuX25nQ29udHJvbCx0aGlzLmRpZmZlcnMuZmluZCh0aGlzLl9uZ0NvbnRyb2wpLmNyZWF0ZSgpKSk6KHRoaXMubmdDb250cm9sPXRoaXMuX25nQ29udHJvbCx0aGlzLm5nQ29udHJvbFNlcnZpY2Uuc2V0Q29udHJvbCh0aGlzLm5nQ29udHJvbCksdGhpcy5kaWZmZXI9dGhpcy5kaWZm'@; put 'ZXJzLmZpbmQodGhpcy5fbmdDb250cm9sKS5jcmVhdGUoKSkpfW5nRG9DaGVjaygpe2lmKHRoaXMudHJpZ2dlckRvQ2hlY2sodGhpcy5kaWZmZXIsdGhpcy5uZ0NvbnRyb2wpLHRoaXMuaGFzQWRkaXRpb25hbENvbnRyb2xzKWZvcihjb25zdFt0LHJdb2YgdGhpcy5hZGRpdGlvbmFsRGlmZmVy'@; put 'KXRoaXMudHJpZ2dlckRvQ2hlY2socix0KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQ/LnVuc3Vic2NyaWJlKCkpfXRyaWdnZXJWYWxpZGF0aW9uKCl7dGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2UmJnRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlLnRy'@; put 'aWdnZXJTdGF0dXNDaGFuZ2UoKX1nZXRQcm92aWRlckZyb21Db250YWluZXIodCxyKXt0cnl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lckluamVjdG9yLmdldCh0LHIpfWNhdGNoe3JldHVybiByfX10cmlnZ2VyRG9DaGVjayh0LHIpe2lmKHQpe2NvbnN0IGk9dC5kaWZmKHIpO2kmJmkuZm9yRWFj'@; put 'aENoYW5nZWRJdGVtKG89Pnsoby5rZXk9PT1Kb2UuRk9STXx8by5rZXk9PT1Kb2UuTU9ERUwpJiZvLmN1cnJlbnRWYWx1ZSE9PW8ucHJldmlvdXNWYWx1ZSYmdGhpcy50cmlnZ2VyVmFsaWRhdGlvbigpfSl9fW1hcmtBc1RvdWNoZWQoKXt0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9s'@; put 'LmNvbnRyb2wubWFya0FzVG91Y2hlZCgpLHRoaXMubmdDb250cm9sLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKSx0aGlzLm5nQ29udHJvbFNlcnZpY2UmJnRoaXMubmdDb250cm9sU2VydmljZS5oYXNBZGRpdGlvbmFsQ29udHJvbHMmJnRoaXMubmdDb250cm9sU2VydmljZS5h'@; put 'ZGRpdGlvbmFsQ29udHJvbHM/LmZvckVhY2godD0+e3QuY29udHJvbC5tYXJrQXNUb3VjaGVkKCksdC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX0pfXNldEFyaWFEZXNjcmliZWRCeSh0KXtpZih0LnNob3cpe2NvbnN0IHI9dGhpcy5nZXRBcmlhRGVzY3JpYmVkQnlJZCh0KTtp'@; put 'ZihudWxsIT09cilyZXR1cm4gdm9pZCB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImFyaWEtZGVzY3JpYmVkYnkiLHIpfXRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiYXJpYS1kZXNjcmliZWRieSIp'@; put 'fWdldEFyaWFEZXNjcmliZWRCeUlkKHQpe2NvbnN0IHI9dGhpcy5jb250YWluZXJJZFNlcnZpY2U/LmlkfHx0aGlzLmNvbnRyb2xJZFNlcnZpY2U/LmlkO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IGk9W2Ake3J9LWhlbHBlcmBdO3JldHVybiB0LnNob3dJbnZhbGlkP2kucHVzaChgJHtyfS1l'@; put 'cnJvcmApOnQuc2hvd1ZhbGlkJiZpLnB1c2goYCR7cn0tc3VjY2Vzc2ApLGkuam9pbigiICIpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShEcyksemUoWkEpLHplKE1sKSx6ZShWMiksemUoTnQpLHplKG5vKSl9LG4uXHUwMjc1ZGlyPSRyKHt0'@; put 'eXBlOm4saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsxJnQmJnd0KCJibHVyIixmdW5jdGlvbigpe3JldHVybiByLnRyaWdnZXJWYWxpZGF0aW9uKCl9KSwyJnQmJk81KCJpZCIsci5pZCl9LGlucHV0czp7aWQ6ImlkIn0sc3RhbmRhbG9uZTohMX0pLG59KSgpLG5NZT0o'@; put 'KCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscil7dGhpcy5sYXlvdXRTZXJ2aWNlPXQsdGhpcy5tYXJrQ29udHJvbFNlcnZpY2U9cn1zZXQgbGFiZWxTaXplKHQpe2NvbnN0IHI9cGFyc2VJbnQodCwxMCl8fDI7dGhpcy5sYXlvdXRTZXJ2aWNlLmxhYmVsU2l6ZT1yfW9uRm9ybVN1Ym1pdCgp'@; put 'e3RoaXMubWFya0FzVG91Y2hlZCgpfW1hcmtBc1RvdWNoZWQoKXt0aGlzLm1hcmtDb250cm9sU2VydmljZS5tYXJrQXNUb3VjaGVkKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKFo1KSx6ZShRb2UpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6'@; put 'bixzZWxlY3RvcnM6W1siIiwiY2xyRm9ybSIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiZGYShpLGVsLDUpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIubGFiZWxzPW8pfX0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsxJnQmJnd0'@; put 'KCJzdWJtaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHIub25Gb3JtU3VibWl0KCl9KSwyJnQmJndyKCJjbHItZm9ybSIsITApKCJjbHItZm9ybS1ob3Jpem9udGFsIixyLmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkpKCJjbHItZm9ybS1jb21wYWN0IixyLmxheW91dFNlcnZpY2UuaXNDb21w'@; put 'YWN0KCkpfSxpbnB1dHM6e2xhYmVsU2l6ZTpbMCwiY2xyTGFiZWxTaXplIiwibGFiZWxTaXplIl19LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtaNSxRb2VdKV19KSxufSkoKSxnaD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMoQXAsa3ApfX1yZXR1cm4gbi5c'@; put 'dTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxXbF19KSxufSkoKTtjb25zdCBlYWU9bmV3IEVyKCJJU19UT0dHTEUiKSxvX3Q9e3Byb3ZpZGU6ZWFlLHVzZUZhY3Rvcnk6ZnVu'@; put 'Y3Rpb24gaV90KCl7cmV0dXJuIG5ldyAkaSghMSl9fTtsZXQgRmY9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnRvZ2dsZT0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godC5zdWJzY3JpYmUocj0+e3RoaXMudG9nZ2xlPXJ9KSl9bmdP'@; put 'bkluaXQoKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLmRpc2FibGVHcmlkKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShlYWUpKX0s'@; put 'bi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiYoRmEoaSxlbCw3KSxGYShpLFUyLDcpKSwyJnQpe2xldCBvO2NpKG89dWko'@; put 'KSkmJihyLmxhYmVsPW8uZmlyc3QpLGNpKG89dWkoKSkmJihyLmNoZWNrYm94PW8uZmlyc3QpfX0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJjbHItY2hlY2tib3gtd3JhcHBlciIsIXIudG9nZ2xlKSgiY2xyLWNoZWNrYm94LXdyYXBwZXItZGlzYWJs'@; put 'ZWQiLG51bGw9PXIuY2hlY2tib3g/bnVsbDpyLmNoZWNrYm94LmNvbnRyb2xEaXNhYmxlZCkoImNsci10b2dnbGUtd3JhcHBlciIsci50b2dnbGUpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbT3Asb190XSldLG5nQ29udGVudFNlbGVjdG9yczpyNXQsZGVjbHM6Myx2YXJzOjEsY29u'@; put 'c3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKG41dCksV3IoMCksV3IoMSwxKSxZbigyLGk1dCwxLDAsImxhYmVsIiwwKSksMiZ0JiYoaWUoMikscnQoIm5nSWYiLCFyLmxhYmVsKSl9LGRlcGVuZGVuY2llczpbWXMsZWxdLGVuY2Fwc3VsYXRpb246Mn0p'@; put 'LG59KSgpLFUyPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBZYntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCl7c3VwZXIodCxGZixyLGksbyxhKSx0aGlzLmNvbnRyb2w9aSx0aGlzLnRvZ2dsZT1sfWdldCBjb250cm9sRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sPy5kaXNhYmxlZH1uZ09u'@; put 'SW5pdCgpe3N1cGVyLm5nT25Jbml0KCk7Y29uc3QgdD10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihlYWUsbnVsbCk7dCYmbnVsbCE9PXRoaXMudG9nZ2xlJiZ0Lm5leHQoITApfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShEcyksemUo'@; put 'TWwpLHplKFYyLDEwKSx6ZShOdCksemUobm8pLHc1KCJjbHJUb2dnbGUiKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsckNoZWNrYm94IiwiIl0sWyIiLCJjbHJUb2dnbGUiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQm'@; put 'JlJyKCJyb2xlIixudWxsIT09ci50b2dnbGU/InN3aXRjaCI6bnVsbCl9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W0ZvXX0pLG59KSgpLEV2PSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBXYntjb25zdHJ1Y3Rvcih0LHIsaSxvKXtzdXBlcihvLHQscixpKSx0aGlzLmxheW91dFNlcnZpY2U9dCx0'@; put 'aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9cix0aGlzLm5nQ29udHJvbFNlcnZpY2U9aSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1vLHRoaXMuaW5saW5lPSExfWdldCBjbHJJbmxpbmUoKXtyZXR1cm4gdGhpcy5pbmxpbmV9c2V0IGNscklubGluZSh0KXt0aGlzLmlubGluZT0ic3RyaW5n'@; put 'Ij09dHlwZW9mIHQ/ImZhbHNlIiE9PXQ6ISF0fWdldCBhbGxDaGVja2JveGVzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sPy5kaXNhYmxlZCYmKCF0aGlzLmFkZGl0aW9uYWxDb250cm9scz8ubGVuZ3RofHx0aGlzLmFkZGl0aW9uYWxDb250cm9scy5ldmVyeSh0PT50LmRpc2FibGVk'@; put 'KSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXRBcmlhUm9sZXMoKX1zZXRBcmlhUm9sZXMoKXt0aGlzLnJvbGU9dGhpcy5jaGVja2JveGVzLmxlbmd0aD8iZ3JvdXAiOm51bGx9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKFo1LDgpLHpl'@; put 'KEkzKSx6ZShqMiksemUoUjMpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWNoZWNrYm94LWNvbnRhaW5lciJdLFsiY2xyLXRvZ2dsZS1jb250YWluZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmRmEoaSxVMiw1KSwyJnQpe2xl'@; put 'dCBvO2NpKG89dWkoKSkmJihyLmNoZWNrYm94ZXM9byl9fSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmKFJyKCJyb2xlIixyLnJvbGUpLHdyKCJjbHItZm9ybS1jb250cm9sIiwhMCkoImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiLHIuYWxsQ2hlY2tib3hl'@; put 'c0Rpc2FibGVkKSgiY2xyLXJvdyIsci5hZGRHcmlkKCkpKX0saW5wdXRzOntjbHJJbmxpbmU6ImNscklubGluZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtSMyxqMixJMyxCYl0pLEZvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6YTV0LGRlY2xzOjYsdmFyczo2LGNvbnN0czpbWzQsIm5n'@; put 'SWYiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsImNsci1zdWJ0ZXh0LXdyYXBwZXIiLDQsIm5nSWYiXSxbMSwiY2xyLXN1YnRleHQtd3JhcHBlciJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2ly'@; put 'Y2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIs'@; put 'ImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWlj'@; put 'b24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhvNXQpLFdyKDApLFluKDEsczV0LDEsMCwibGFiZWwiLDApLEooMiwiZGl2IiwxKSxXcigzLDEpLFluKDQsbDV0LDIsMCwiZGl2IiwyKSg1LGY1dCw1LDQsImRpdiIsMiksdGUoKSksMiZ0JiYoaWUoKSxydCgibmdJZiIsIXIu'@; put 'bGFiZWwmJnIuYWRkR3JpZCgpKSxpZSgpLHdyKCJjbHItY29udHJvbC1pbmxpbmUiLHIuY2xySW5saW5lKSxydCgibmdDbGFzcyIsci5jb250cm9sQ2xhc3MoKSksaWUoMikscnQoIm5nSWYiLHIuc2hvd0hlbHBlciksaWUoKSxydCgibmdJZiIsci5zaG93SW52YWxpZHx8ci5zaG93VmFsaWQp'@; put 'KX0sZGVwZW5kZW5jaWVzOltGaCxZcyxKcyxlbF0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksYV90PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt6bC5hZGRJY29ucyhBcCxrcCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1v'@; put 'ZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdsLGdoLE5ELGdoXX0pLG59KSgpO2Z1bmN0aW9uIHA0KG4pe3JldHVybiBudWxsIT09biYmKCJzdHJpbmciPT10eXBlb2Ygbj9uLmxlbmd0aD49MDoiYm9vbGVhbiI9PXR5cGVvZiBuJiZuKX1sZXQgejI9KCgpPT57'@; put 'Y2xhc3MgbntnZXQgc3Bpbm5lckNsYXNzKCl7cmV0dXJuITB9Z2V0IGlubGluZUNsYXNzKCl7cmV0dXJuIHRoaXMuX2lubGluZX1zZXQgY2xySW5saW5lKHQpe3RoaXMuX2lubGluZT1wNCh0KX1nZXQgaW52ZXJzZUNsYXNzKCl7cmV0dXJuIHRoaXMuX2ludmVyc2V9c2V0IGNsckludmVyc2Uo'@; put 'dCl7dGhpcy5faW52ZXJzZT1wNCh0KX1nZXQgc21hbGxDbGFzcygpe3JldHVybiB0aGlzLl9zbWFsbH1zZXQgY2xyU21hbGwodCl7dGhpcy5fc21hbGw9cDQodCl9Z2V0IG1lZGl1bUNsYXNzKCl7cmV0dXJuIXRoaXMuX3NtYWxsJiZ0aGlzLl9tZWRpdW19c2V0IGNsck1lZGl1bSh0KXt0aGlz'@; put 'Ll9tZWRpdW09cDQodCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItc3Bpbm5lciJdXSxob3N0VmFyczoxMSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJihScigi'@; put 'YXJpYS1idXN5IiwhMCksd3IoInNwaW5uZXIiLHIuc3Bpbm5lckNsYXNzKSgic3Bpbm5lci1pbmxpbmUiLHIuaW5saW5lQ2xhc3MpKCJzcGlubmVyLWludmVyc2UiLHIuaW52ZXJzZUNsYXNzKSgic3Bpbm5lci1zbSIsci5zbWFsbENsYXNzKSgic3Bpbm5lci1tZCIsci5tZWRpdW1DbGFzcykp'@; put 'fSxpbnB1dHM6e2NscklubGluZToiY2xySW5saW5lIixjbHJJbnZlcnNlOiJjbHJJbnZlcnNlIixjbHJTbWFsbDoiY2xyU21hbGwiLGNsck1lZGl1bToiY2xyTWVkaXVtIn0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rp'@; put 'b24odCxyKXsxJnQmJihmbygpLFdyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksZ009KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0'@; put 'czpbcW9dfSksbn0pKCk7dmFyIE12PWZ1bmN0aW9uKG4pe3JldHVybiBuLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsbi5IT1JJWk9OVEFMPSJob3Jpem9udGFsIixuLkJPVEg9ImJvdGgiLG59KE12fHx7fSk7bGV0IHJNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscil7dGhpcy5lbGVtZW50'@; put 'UmVmPXQsdGhpcy5wbGF0Zm9ybUlkPXJ9Z2V0IG5hdGl2ZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9Zm9jdXMoKXtIYyh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfX1yZXR1cm4gbi5cdTAyNzVm'@; put 'YWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShubyksemUobGQpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyS2V5Rm9jdXNJdGVtIiwiIl1dLHN0YW5kYWxvbmU6ITF9KSxufSkoKSxtTT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3Ro'@; put 'aXMuZWxlbWVudFJlZj10LHRoaXMuZGlyZWN0aW9uPU12LlZFUlRJQ0FMLHRoaXMuZm9jdXNPbkxvYWQ9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuZm9jdXNDaGFuZ2U9bmV3IEtyLHRoaXMuX2N1cnJlbnQ9MH1nZXQgZm9jdXNhYmxlSXRlbXMoKXtyZXR1cm4gdGhpcy5fZm9jdXNh'@; put 'YmxlSXRlbXM/dGhpcy5fZm9jdXNhYmxlSXRlbXM6dGhpcy5jbHJLZXlGb2N1c0l0ZW1zP3RoaXMuY2xyS2V5Rm9jdXNJdGVtcy50b0FycmF5KCk6W119c2V0IGZvY3VzYWJsZUl0ZW1zKHQpe0FycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoJiYodGhpcy5fZm9jdXNhYmxlSXRlbXM9dCx0aGlz'@; put 'LmluaXRpYWxpemVGb2N1cygpKX1nZXQgbmF0aXZlRWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KHQpe3RoaXMuX2N1cnJlbnQhPT10JiYodGhpcy5fY3VycmVudD10KX1n'@; put 'ZXQgY3VycmVudEl0ZW0oKXtyZXR1cm4gdGhpcy5mb2N1c2FibGVJdGVtc1t0aGlzLl9jdXJyZW50XX1nZXQgY3VycmVudEl0ZW1FbGVtZW50KCl7cmV0dXJuIHRoaXMuY3VycmVudEl0ZW0ubmF0aXZlRWxlbWVudD90aGlzLmN1cnJlbnRJdGVtLm5hdGl2ZUVsZW1lbnQ6dGhpcy5jdXJyZW50'@; put 'SXRlbX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvckl0ZW1VcGRhdGVzKCkpLHRoaXMuaW5pdGlhbGl6ZUZvY3VzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfWhh'@; put 'bmRsZUtleWJvYXJkRXZlbnQodCl7aWYodGhpcy5jdXJyZW50SXRlbUVsZW1lbnQhPT10LnRhcmdldCl7Y29uc3Qgcj10aGlzLmdldEl0ZW1Qb3NpdGlvbih0LnRhcmdldCk7dGhpcy5wb3NpdGlvbkluUmFuZ2UocikmJih0aGlzLmN1cnJlbnQ9cil9dGhpcy5wcmV2S2V5UHJlc3NlZCh0KSYm'@; put 'dGhpcy5jdXJyZW50Rm9jdXNJc05vdEZpcnN0SXRlbSgpP3RoaXMubW92ZVRvKHRoaXMuY3VycmVudC0xKTp0aGlzLm5leHRLZXlQcmVzc2VkKHQpJiZ0aGlzLmN1cnJlbnRGb2N1c0lzTm90TGFzdEl0ZW0oKT90aGlzLm1vdmVUbyh0aGlzLmN1cnJlbnQrMSk6dC5jb2RlPT09TW8uSG9tZT90'@; put 'aGlzLm1vdmVUbygwKTp0LmNvZGU9PT1Nby5FbmQmJnRoaXMubW92ZVRvKHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoLTEpLGpvZSh0KX1zZXRDbGlja2VkSXRlbUN1cnJlbnQodCl7Y29uc3Qgcj10aGlzLmdldEl0ZW1Qb3NpdGlvbih0LnRhcmdldCk7cj4tMSYmdGhpcy5tb3ZlVG8ocil9'@; put 'Zm9jdXNDdXJyZW50KCl7dGhpcy5jdXJyZW50SXRlbS5mb2N1cygpLHRoaXMuZm9jdXNDaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KX1tb3ZlVG8odCl7dGhpcy5wb3NpdGlvbkluUmFuZ2UodCkmJih0aGlzLmN1cnJlbnQ9dCx0aGlzLmZvY3VzQ3VycmVudCgpKX1wb3NpdGlvbkluUmFuZ2Uo'@; put 'dCl7cmV0dXJuIHQ+PTAmJnQ8dGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGh9Y3VycmVudEZvY3VzSXNOb3RGaXJzdEl0ZW0oKXtyZXR1cm4gdGhpcy5fY3VycmVudC0xPj0wfWN1cnJlbnRGb2N1c0lzTm90TGFzdEl0ZW0oKXtyZXR1cm4gdGhpcy5fY3VycmVudCsxPHRoaXMuZm9jdXNhYmxl'@; put 'SXRlbXMubGVuZ3RofWluaXRpYWxpemVGb2N1cygpe3RoaXMuZm9jdXNhYmxlSXRlbXMmJnRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoJiYodGhpcy5fY3VycmVudD49dGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgmJih0aGlzLl9jdXJyZW50PXRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3Ro'@; put 'LTEpLHRoaXMuZm9jdXNPbkxvYWQmJih0aGlzLmN1cnJlbnRJdGVtLmZvY3VzKCksdGhpcy5mb2N1c0NoYW5nZS5lbWl0KCkpKX1uZXh0S2V5UHJlc3NlZCh0KXtjb25zdCByPXRtKHQua2V5KTtzd2l0Y2godGhpcy5kaXJlY3Rpb24pe2Nhc2UgTXYuVkVSVElDQUw6cmV0dXJuIHI9PT1Nby5B'@; put 'cnJvd0Rvd247Y2FzZSBNdi5IT1JJWk9OVEFMOnJldHVybiByPT09TW8uQXJyb3dSaWdodDtjYXNlIE12LkJPVEg6cmV0dXJuIHI9PT1Nby5BcnJvd0Rvd258fHI9PT1Nby5BcnJvd1JpZ2h0O2RlZmF1bHQ6cmV0dXJuITF9fXByZXZLZXlQcmVzc2VkKHQpe2NvbnN0IHI9dG0odC5rZXkpO3N3'@; put 'aXRjaCh0aGlzLmRpcmVjdGlvbil7Y2FzZSBNdi5WRVJUSUNBTDpyZXR1cm4gcj09PU1vLkFycm93VXA7Y2FzZSBNdi5IT1JJWk9OVEFMOnJldHVybiByPT09TW8uQXJyb3dMZWZ0O2Nhc2UgTXYuQk9USDpyZXR1cm4gcj09PU1vLkFycm93VXB8fHI9PT1Nby5BcnJvd0xlZnQ7ZGVmYXVsdDpy'@; put 'ZXR1cm4hMX19Z2V0SXRlbVBvc2l0aW9uKHQpe3JldHVybiB0aGlzLl9mb2N1c2FibGVJdGVtcz90aGlzLmZvY3VzYWJsZUl0ZW1zLmluZGV4T2YodCk6dGhpcy5mb2N1c2FibGVJdGVtcy5tYXAocj0+ci5uYXRpdmVFbGVtZW50KS5pbmRleE9mKHQpfWxpc3RlbkZvckl0ZW1VcGRhdGVzKCl7'@; put 'cmV0dXJuIHRoaXMuY2xyS2V5Rm9jdXNJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuaW5pdGlhbGl6ZUZvY3VzKCl9KX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUobm8pKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3Rv'@; put 'cnM6W1siIiwiY2xyS2V5Rm9jdXMiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmRmEoaSxyTWUsNSksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci5jbHJLZXlGb2N1c0l0ZW1zPW8pfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgia2V5'@; put 'ZG93biIsZnVuY3Rpb24obyl7cmV0dXJuIHIuaGFuZGxlS2V5Ym9hcmRFdmVudChvKX0pKCJjbGljayIsZnVuY3Rpb24obyl7cmV0dXJuIHIuc2V0Q2xpY2tlZEl0ZW1DdXJyZW50KG8pfSl9LGlucHV0czp7ZGlyZWN0aW9uOlswLCJjbHJEaXJlY3Rpb24iLCJkaXJlY3Rpb24iXSxmb2N1c09u'@; put 'TG9hZDpbMCwiY2xyRm9jdXNPbkxvYWQiLCJmb2N1c09uTG9hZCJdLGZvY3VzYWJsZUl0ZW1zOlswLCJjbHJLZXlGb2N1cyIsImZvY3VzYWJsZUl0ZW1zIl19LG91dHB1dHM6e2ZvY3VzQ2hhbmdlOiJjbHJGb2N1c0NoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsYXR0cnM6cDV0LG5nQ29udGVudFNl'@; put 'bGVjdG9yczplcyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksV3IoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSx0YWU9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUw'@; put 'Mjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW9dfSksbn0pKCk7Y2xhc3Mgc190e2NvbnRhaW5zSXRlbShlKXtyZXR1cm4hIXRoaXMubW9kZWwmJnRoaXMubW9kZWwuaW5jbHVkZXMoZSl9c2VsZWN0KGUpe3RoaXMuYWRkSXRlbShlKX11bnNlbGVjdChlKXt0'@; put 'aGlzLnJlbW92ZUl0ZW0oZSl9aXNFbXB0eSgpe3JldHVybiEodGhpcy5tb2RlbCYmdGhpcy5tb2RlbC5sZW5ndGg+MCl9cG9wKCl7bGV0IGU7cmV0dXJuIHRoaXMubW9kZWwmJnRoaXMubW9kZWwubGVuZ3RoPjAmJihlPXRoaXMubW9kZWxbdGhpcy5tb2RlbC5sZW5ndGgtMV0sdGhpcy5yZW1v'@; put 'dmVJdGVtKGUpKSxlfXRvU3RyaW5nKGUsdD0tMSl7bGV0IHI9IiI7cmV0dXJuIHRoaXMubW9kZWwmJih0Pi0xP3RoaXMubW9kZWxbdF0mJihyKz1lJiZ0aGlzLm1vZGVsW3RdW2VdP3RoaXMubW9kZWxbdF1bZV06dGhpcy5tb2RlbFt0XS50b1N0cmluZygpKTp0aGlzLm1vZGVsLmZvckVhY2go'@; put 'aT0+e3IrPWUmJmlbZV0/aVtlXTppLnRvU3RyaW5nKCkscis9IiAifSkpLHIudHJpbSgpfWFkZEl0ZW0oZSl7dGhpcy5jb250YWluc0l0ZW0oZSl8fCh0aGlzLm1vZGVsPXRoaXMubW9kZWx8fFtdLHRoaXMubW9kZWwucHVzaChlKSl9cmVtb3ZlSXRlbShlKXtpZihudWxsPT10aGlzLm1vZGVs'@; put 'KXJldHVybjtjb25zdCB0PXRoaXMubW9kZWwuaW5kZXhPZihlKTt0Pi0xJiZ0aGlzLm1vZGVsLnNwbGljZSh0LDEpLDA9PT10aGlzLm1vZGVsLmxlbmd0aCYmKHRoaXMubW9kZWw9bnVsbCl9fWNsYXNzIGxfdHtjb250YWluc0l0ZW0oZSl7cmV0dXJuIHRoaXMubW9kZWw9PT1lfXNlbGVjdChl'@; put 'KXt0aGlzLm1vZGVsPWV9dW5zZWxlY3QoZSl7dGhpcy5jb250YWluc0l0ZW0oZSkmJih0aGlzLm1vZGVsPW51bGwpfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5tb2RlbH1wb3AoKXtjb25zdCBlPXRoaXMubW9kZWw7cmV0dXJuIHRoaXMubW9kZWw9bnVsbCxlfXRvU3RyaW5nKGUpe3JldHVybiB0'@; put 'aGlzLm1vZGVsP2UmJnRoaXMubW9kZWxbZV0/dGhpcy5tb2RlbFtlXTp0aGlzLm1vZGVsLnRvU3RyaW5nKCk6IiJ9fWNsYXNzIGNfdCBleHRlbmRzIGxfdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9jdXNDaGFuZ2VkPW5ldyAkaShudWxsKX1nZXQgZm9jdXND'@; put 'aGFuZ2VkKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQ2hhbmdlZC5hc09ic2VydmFibGUoKX1zZWxlY3QoZSl7dGhpcy5tb2RlbCE9PWUmJih0aGlzLm1vZGVsPWUsdGhpcy5fZm9jdXNDaGFuZ2VkLm5leHQoZSkpfX1sZXQgdV90PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLmxvYWRp'@; put 'bmc9ITEsdGhpcy5zaG93QWxsT3B0aW9ucz0hMCx0aGlzLl9jdXJyZW50SW5wdXQ9IiIsdGhpcy5faW5wdXRDaGFuZ2VkPW5ldyAkaSgiIiksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZD1uZXcgZEQoMSksdGhpcy5pbnB1dENoYW5nZWQ9dGhpcy5faW5wdXRDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgp'@; put 'fWdldCBjdXJyZW50SW5wdXQoKXtyZXR1cm4gdGhpcy5fY3VycmVudElucHV0fXNldCBjdXJyZW50SW5wdXQodCl7IiI9PT10JiYhdGhpcy5tdWx0aXNlbGVjdGFibGUmJnRoaXMuc2V0U2VsZWN0aW9uVmFsdWUobnVsbCksdGhpcy5fY3VycmVudElucHV0PXQsdGhpcy5faW5wdXRDaGFuZ2Vk'@; put 'Lm5leHQodCl9Z2V0IHNlbGVjdGlvbkNoYW5nZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5hc09ic2VydmFibGUoKX1nZXQgbXVsdGlzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwgaW5zdGFuY2VvZiBzX3R9c2VsZWN0KHQpe251bGw9PXR8fHRoaXMu'@; put 'c2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVtKHQpfHwodGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX10b2dnbGUodCl7bnVsbCE9dCYmKHRoaXMuc2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVt'@; put 'KHQpP3RoaXMuc2VsZWN0aW9uTW9kZWwudW5zZWxlY3QodCk6dGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX11bnNlbGVjdCh0KXtudWxsPT10fHwhdGhpcy5zZWxlY3Rpb25Nb2RlbC5jb250YWlu'@; put 'c0l0ZW0odCl8fCh0aGlzLnNlbGVjdGlvbk1vZGVsLnVuc2VsZWN0KHQpLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQubmV4dCh0aGlzLnNlbGVjdGlvbk1vZGVsKSl9c2V0U2VsZWN0aW9uVmFsdWUodCl7IXRoaXMuc2VsZWN0aW9uTW9kZWx8fHRoaXMuc2VsZWN0aW9uTW9kZWwubW9kZWw9PT10'@; put 'fHwhdGhpcy5zZWxlY3Rpb25Nb2RlbC5tb2RlbCYmIXR8fCh0aGlzLnNlbGVjdGlvbk1vZGVsLm1vZGVsPXQsdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4u'@; put 'XHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7R0VlKCgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyl7dGhpcy50b2dnbGVTZXJ2aWNlPXIsdGhpcy5zZWxlY3Rpb25TZXJ2aWNlPWksdGhpcy5wbGF0Zm9ybUlkPW8sdGhpcy5wc2V1ZG9G'@; put 'b2N1cz1uZXcgY190LHRoaXMub3B0aW9uRGF0YT1bXSx0aGlzLmhhbmRsZUZvY3VzU3Vic2NyaXB0aW9uKCksdGhpcy5yZW5kZXJlcj10LmNyZWF0ZVJlbmRlcmVyKG51bGwsbnVsbCl9Z2V0IHRyaWdnZXIoKXtyZXR1cm4gdGhpcy5fdHJpZ2dlcn1zZXQgdHJpZ2dlcih0KXt0aGlzLl90cmln'@; put 'Z2VyPXQsdGhpcy5hZGRGb2N1c09uQmx1ckxpc3RlbmVyKHQpfWdldCBsaXN0Ym94KCl7cmV0dXJuIHRoaXMuX2xpc3Rib3h9c2V0IGxpc3Rib3godCl7dGhpcy5fbGlzdGJveD10LHRoaXMuYWRkRm9jdXNPbkJsdXJMaXN0ZW5lcih0KX1nZXQgdGV4dElucHV0KCl7cmV0dXJuIHRoaXMuX3Rl'@; put 'eHRJbnB1dH1zZXQgdGV4dElucHV0KHQpe3RoaXMuX3RleHRJbnB1dD10LHRoaXMucmVuZGVyZXIubGlzdGVuKHQsImtleWRvd24iLHI9PiF0aGlzLmhhbmRsZVRleHRJbnB1dChyKSksdGhpcy5hZGRGb2N1c09uQmx1ckxpc3RlbmVyKHQpfWZvY3VzSW5wdXQoKXt0aGlzLnRleHRJbnB1dCYm'@; put 'SGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50ZXh0SW5wdXQuZm9jdXMoKX1mb2N1c0ZpcnN0QWN0aXZlKCl7aWYodGhpcy5vcHRpb25EYXRhLmxlbmd0aD4wKWlmKHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpdGhpcy5wc2V1ZG9Gb2N1cy5zZWxlY3Qo'@; put 'dGhpcy5vcHRpb25EYXRhWzBdKTtlbHNle2xldCB0O3Q9dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZT90aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWxbMF06dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsO2NvbnN0'@; put 'IHI9dGhpcy5vcHRpb25EYXRhLmZpbmQoaT0+aS52YWx1ZT09PXQpO3RoaXMucHNldWRvRm9jdXMuc2VsZWN0KHJ8fHRoaXMub3B0aW9uRGF0YVswXSksdGhpcy5zY3JvbGxJbnRvU2VsZWN0ZWRNb2RlbCgiYXV0byIpfX1hZGRPcHRpb25WYWx1ZXModCl7dGhpcy5vcHRpb25EYXRhPXR9aGFu'@; put 'ZGxlRm9jdXNTdWJzY3JpcHRpb24oKXt0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUodD0+e3R8fCh0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsPW51bGwpfSl9bW92ZUZvY3VzVG8odCl7bGV0IHI9dGhpcy5vcHRpb25EYXRhLmZpbmRJbmRleChpPT5pLmVxdWFscyh0aGlz'@; put 'LnBzZXVkb0ZvY3VzLm1vZGVsKSk7dD09PURwLlVQPy0xPT09cnx8MD09PXI/cj10aGlzLm9wdGlvbkRhdGEubGVuZ3RoLTE6ci0tOnQ9PT1EcC5ET1dOJiYoLTE9PT1yfHxyPT09dGhpcy5vcHRpb25EYXRhLmxlbmd0aC0xP3I9MDpyKyspLHRoaXMucHNldWRvRm9jdXMuc2VsZWN0KHRoaXMu'@; put 'b3B0aW9uRGF0YVtyXSksdGhpcy5zY3JvbGxJbnRvU2VsZWN0ZWRNb2RlbCgpfW9wZW5BbmRNb3ZlVG8odCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4/dGhpcy5tb3ZlRm9jdXNUbyh0KToodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2UucGlwZShNcCgxKSkuc3Vic2NyaWJlKHI9Pnty'@; put 'JiZ0aGlzLm1vdmVGb2N1c1RvKHQpfSksdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITApfWhhbmRsZVRleHRJbnB1dCh0KXtsZXQgcj0hMTtjb25zdCBpPXRtKHQua2V5KTtpZih0KXN3aXRjaChpKXtjYXNlIE1vLkVudGVyOnRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiZ0aGlzLnBzZXVkb0Zv'@; put 'Y3VzLm1vZGVsJiYodGhpcy5zZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZT90aGlzLnNlbGVjdGlvblNlcnZpY2UudG9nZ2xlKHRoaXMucHNldWRvRm9jdXMubW9kZWwudmFsdWUpOnRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3QodGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC52YWx1'@; put 'ZSkscj0hMCk7YnJlYWs7Y2FzZSBNby5TcGFjZTp0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbnx8KHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwLHI9ITApO2JyZWFrO2Nhc2UgTW8uQXJyb3dVcDp0aGlzLnByZXZlbnRWaWV3cG9ydFNjcm9sbGluZyh0KSx0aGlzLm9wZW5BbmRNb3ZlVG8oRHAu'@; put 'VVApLHI9ITA7YnJlYWs7Y2FzZSBNby5BcnJvd0Rvd246dGhpcy5wcmV2ZW50Vmlld3BvcnRTY3JvbGxpbmcodCksdGhpcy5vcGVuQW5kTW92ZVRvKERwLkRPV04pLHI9ITA7YnJlYWs7ZGVmYXVsdDp0LmtleSE9PU1vLlRhYiYmKCF0aGlzLnNlbGVjdGlvblNlcnZpY2UubXVsdGlzZWxlY3Rh'@; put 'YmxlfHx0LmtleSE9PU1vLkJhY2tzcGFjZSkmJnQua2V5IT09TW8uRXNjYXBlJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJih0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMCl9cmV0dXJuIHJ9c2Nyb2xsSW50b1NlbGVjdGVkTW9kZWwodD0ic21vb3RoIil7dGhpcy5wc2V1ZG9Gb2N1cy5t'@; put 'b2RlbCYmdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC5lbCYmdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC5lbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6dCxibG9jazoiY2VudGVyIixpbmxpbmU6Im5lYXJlc3QifSl9cHJldmVudFZpZXdwb3J0U2Nyb2xsaW5nKHQpe3QucHJldmVudERlZmF1bHQo'@; put 'KSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWFkZEZvY3VzT25CbHVyTGlzdGVuZXIodCl7SGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5yZW5kZXJlci5saXN0ZW4odCwiYmx1ciIscj0+e3RoaXMuZm9jdXNPdXRPZkNvbXBvbmVudChyKSYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVu'@; put 'PSExLHRoaXMuY29tcG9uZW50Q2RSZWYmJnRoaXMuY29tcG9uZW50Q2RSZWYuZGV0ZWN0Q2hhbmdlcygpKX0pfWZvY3VzT3V0T2ZDb21wb25lbnQodCl7Y29uc3Qgcj10LnJlbGF0ZWRUYXJnZXR8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuISh0aGlzLnRleHRJbnB1dC5jb250YWlu'@; put 'cyhyKXx8dGhpcy50cmlnZ2VyLmNvbnRhaW5zKHIpfHx0aGlzLmxpc3Rib3guY29udGFpbnMocikpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKShvcihnYyksb3IoS3UpLG9yKHVfdCksb3IobGQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZh'@; put 'Y3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSk7bGV0IGRfdD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMoQXAsa3Asck0sY0QpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4u'@; put 'XHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxoZCxXbCx0YWUsZ2gscm0sTEQsZ00sZ2gscm1dfSksbn0pKCksWHo9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFdie31yZXR1cm4gbi5cdTAyNzVmYWM9KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShuKSkpKHJ8'@; put 'fG4pfX0pKCksbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWlucHV0LWNvbnRhaW5lciJdXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIs'@; put 'bnVsbD09ci5jb250cm9sP251bGw6ci5jb250cm9sLmRpc2FibGVkKSgiY2xyLXJvdyIsci5hZGRHcmlkKCkpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbUjMsajIsT3AsSTNdKSxGb10sbmdDb250ZW50U2VsZWN0b3JzOmI1dCxkZWNsczoxMyx2YXJzOjcsY29uc3RzOltbNCwibmdJ'@; put 'ZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbMSwiY2xyLWlucHV0LWdyb3VwIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIi'@; put 'LCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwi'@; put 'c3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlv'@; put 'bih0LHIpezEmdCYmKGZvKHk1dCksV3IoMCksWW4oMSx3NXQsMSwwLCJsYWJlbCIsMCksSigyLCJkaXYiLDEpKDMsImRpdiIsMikoNCwiZGl2IiwzKSxXcig1LDEpLFdyKDYsMiksV3IoNywzKSx0ZSgpLFluKDgsQzV0LDEsMCwiY2RzLWljb24iLDQpKDksUzV0LDEsMCwiY2RzLWljb24iLDUp'@; put 'LHRlKCksWW4oMTAsRTV0LDEsMCwibmctY29udGVudCIsMCkoMTEsTTV0LDEsMCwibmctY29udGVudCIsMCkoMTIsVDV0LDEsMCwibmctY29udGVudCIsMCksdGUoKSksMiZ0JiYoaWUoKSxydCgibmdJZiIsIXIubGFiZWwmJnIuYWRkR3JpZCgpKSxpZSgpLHJ0KCJuZ0NsYXNzIixyLmNvbnRy'@; put 'b2xDbGFzcygpKSxpZSg2KSxydCgibmdJZiIsci5zaG93SW52YWxpZCksaWUoKSxydCgibmdJZiIsci5zaG93VmFsaWQpLGllKCkscnQoIm5nSWYiLHIuc2hvd0hlbHBlciksaWUoKSxydCgibmdJZiIsci5zaG93SW52YWxpZCksaWUoKSxydCgibmdJZiIsci5zaG93VmFsaWQpKX0sZGVwZW5k'@; put 'ZW5jaWVzOltGaCxZcyxKcyxlbF0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksUGY9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFlie2NvbnN0cnVjdG9yKHQscixpLG8sYSl7c3VwZXIodCxYeixyLGksbyxhKSx0aGlzLmluZGV4PTEsIm51bWJlciI9PT10aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0'@; put 'QXR0cmlidXRlKCJ0eXBlIikmJmNvbnNvbGUud2FybignV2FybmluZzogSW5wdXRzIG9mIHR5cGUgIm51bWJlciIgc2hvdWxkIHV0aWxpemUgdGhlIG51bWJlci1pbnB1dCBjb21wb25lbnQgZm9yIHByb3BlciBoYW5kbGluZy5cblxuICBFeGFtcGxlIHVzYWdlOlxuICA8Y2xyLW51bWJlci1p'@; put 'bnB1dC1jb250YWluZXI+XG4gICAgPGxhYmVsPk51bWJlciBJbnB1dDwvbGFiZWw+XG4gICAgPGlucHV0IGNsck51bWJlcklucHV0IHR5cGU9Im51bWJlciIvPlxuICA8L2Nsci1udW1iZXItaW5wdXQtY29udGFpbmVyPlxuICAgICAgJyl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0'@; put 'KXtyZXR1cm4gbmV3KHR8fG4pKHplKERzKSx6ZShNbCksemUoVjIsMTApLHplKE50KSx6ZShubykpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJjbHJJbnB1dCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImNsci1p'@; put 'bnB1dCIsITApfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxufSkoKSxpTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25zKEFwLGtwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0'@; put 'eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8saGQsV2wsZ2gsZ2hdfSksbn0pKCksdk09KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZvY3VzZWQ9bmV3ICRpKCExKX1nZXQgZm9jdXNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZC5hc09ic2VydmFibGUo'@; put 'KX1zZXQgZm9jdXNlZCh0KXt0aGlzLl9mb2N1c2VkLm5leHQodCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGhfdD0oKCk9PntjbGFzcyBue2NvbnN0'@; put 'cnVjdG9yKCl7emwuYWRkSWNvbnMoQXAsa3ApfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxpTWUsV2xdfSksbn0pKCksZl90PSgoKT0+e2NsYXNzIG57'@; put 'fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdsLE5ELFdkXX0pLG59KSgpLHBfdD0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rp'@; put 'b24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxXbF19KSxufSkoKSxiX3Q9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1'@; put 'bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8sV2wsR29lXX0pLG59KSgpLHNNZT0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1si'@; put 'bmctY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmV28oRmMsNSksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci50ZW1wbGF0ZT1pLmZpcnN0KX19LHN0YW5kYWxvbmU6ITEsbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1'@; put 'bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxZbigwLE41dCwxLDAsIm5nLXRlbXBsYXRlIikpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSx3X3Q9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBl'@; put 'Om59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW9dfSksbn0pKCksVHY9KCgpPT57Y2xhc3MgbiBleHRlbmRzIHNNe31yZXR1cm4gbi5cdTAyNzVmYWM9KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShuKSkpKHJ8fG4pfX0pKCksbi5cdTAyNzVkaXI9'@; put 'JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLXRhYnMiXV0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9dfSksbn0pKCksWmI9KCgpPT57Y2xhc3MgbiBleHRlbmRzIGxNe2NvbnN0cnVjdG9yKHQscixpLG8pe2lmKCFyKXRocm93IG5ldyBFcnJvcigiY2xyVGFiTGluayBhbmQgY2xyLXRh'@; put 'Yi1jb250ZW50IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLXRhYnMiKTtzdXBlcih0LHIpLHRoaXMuaWZBY3RpdmU9byx0aGlzLmlkPWl9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmlmQWN0aXZlLmN1cnJlbnQ9PT10aGlzLmlkfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVu'@; put 'Y3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShVbCksemUoVHYsOCksemUoZE0pLHplKFZiKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsclRhYkxpbmsiLCIiXSxbImNsci10YWItY29udGVudCJdXSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxu'@; put 'fSkoKTt2YXIgR2I9ZnVuY3Rpb24obil7cmV0dXJuIG4uSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsbi5WRVJUSUNBTD0idmVydGljYWwiLG59KEdifHx7fSk7bGV0IFBEPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLmxheW91dD1HYi5IT1JJWk9OVEFMLHRoaXMuX2NoaWxkcmVu'@; put 'PVtdfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLl9jaGlsZHJlbn1nZXQgYWN0aXZlVGFiKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4uZmluZCh0PT50LmFjdGl2ZSl9Z2V0IG92ZXJmbG93VGFicygpe3JldHVybiB0aGlzLmxheW91dD09PUdiLlZFUlRJQ0FMP1tdOnRoaXMuY2hpbGRyZW4u'@; put 'ZmlsdGVyKHQ9PiEwPT09dC50YWJMaW5rLmluT3ZlcmZsb3cpfXJlZ2lzdGVyKHQpe3RoaXMuX2NoaWxkcmVuLnB1c2godCl9dW5yZWdpc3Rlcih0KXtjb25zdCByPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtyPi0xJiZ0aGlzLmNoaWxkcmVuLnNwbGljZShyLDEpfX1yZXR1cm4gbi5cdTAy'@; put 'NzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxDX3Q9MCx4dj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLmlmQWN0aXZlU2VydmljZT10LHRoaXMuaWQ9cix0'@; put 'aGlzLnRhYnNTZXJ2aWNlPWksdGhpcy50YWJDb250ZW50SWR8fCh0aGlzLnRhYkNvbnRlbnRJZD0iY2xyLXRhYi1jb250ZW50LSIrQ190KyspfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD09PXRoaXMuaWR9Z2V0IGFyaWFMYWJlbGxlZEJ5KCl7cmV0'@; put 'dXJuIHRoaXMudGFic1NlcnZpY2UuY2hpbGRyZW4uZmluZCh0PT50LnRhYkxpbmsuaWQ9PT10aGlzLmlkKT8udGFiTGluaz8udGFiTGlua0lkfXNldCB0ZW1wbGF0ZVJlZih0KXt0aGlzLnZpZXdSZWY9dGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lci5jcmVhdGVFbWJl'@; put 'ZGRlZFZpZXcodCl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMudGFic1NlcnZpY2UudGFiQ29udGVudFZpZXdDb250YWluZXIuaW5kZXhPZih0aGlzLnZpZXdSZWYpO3Q+LTEmJnRoaXMudGFic1NlcnZpY2UudGFiQ29udGVudFZpZXdDb250YWluZXIucmVtb3ZlKHQpfX1yZXR1cm4gbi5c'@; put 'dTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShWYiksemUoZE0pLHplKFBEKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci10YWItY29udGVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxyKXtpZigxJnQmJldvKEY1dCw3KSwyJnQpe2xl'@; put 'dCBpO2NpKGk9dWkoKSkmJihyLnRlbXBsYXRlUmVmPWkuZmlyc3QpfX0saW5wdXRzOnt0YWJDb250ZW50SWQ6WzAsImlkIiwidGFiQ29udGVudElkIl19LHN0YW5kYWxvbmU6ITEsbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJ0YWJDb250ZW50UHJvamVj'@; put 'dGVkUmVmIiwiIl0sWyJyb2xlIiwidGFicGFuZWwiLDEsInRhYi1jb250ZW50IiwzLCJpZCIsImhpZGRlbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksWW4oMCxQNXQsMiw2LCJuZy10ZW1wbGF0ZSIsbnVsbCwwLGNkKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLFNf'@; put 'dD0wO2NvbnN0IHJhZT1uZXcgRXIoIlRBQlNfSUQiKSxNX3Q9e3Byb3ZpZGU6cmFlLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gRV90KCl7cmV0dXJuImNsci10YWJzLSIrU190Kyt9fTtsZXQgVF90PTAsQXY9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCx1KXt0aGlzLmlmQWN0'@; put 'aXZlU2VydmljZT10LHRoaXMuaWQ9cix0aGlzLmVsPWksdGhpcy50YWJzU2VydmljZT1sLHRoaXMudGFic0lkPXUsdGhpcy50YWJMaW5rSWR8fCh0aGlzLnRhYkxpbmtJZD0iY2xyLXRhYi1saW5rLSIrVF90KyspO2NvbnN0IGc9by5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShzTWUpO3RoaXMu'@; put 'dGVtcGxhdGVSZWZDb250YWluZXI9YS5jcmVhdGVDb21wb25lbnQoZyx2b2lkIDAsdm9pZCAwLFtbaS5uYXRpdmVFbGVtZW50XV0pLmluc3RhbmNlfWdldCBpbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMuX2luT3ZlcmZsb3cmJnRoaXMudGFic1NlcnZpY2UubGF5b3V0IT09R2IuVkVSVElDQUx9'@; put 'c2V0IGluT3ZlcmZsb3codCl7dGhpcy5faW5PdmVyZmxvdz10fWdldCBhZGRMaW5rQ2xhc3Nlcygpe3JldHVybiF0aGlzLmluT3ZlcmZsb3d9Z2V0IGFyaWFDb250cm9scygpe3JldHVybiB0aGlzLnRhYnNTZXJ2aWNlLmNoaWxkcmVuLmZpbmQodD0+dC50YWJMaW5rPT09dGhpcyk/LnRhYkNv'@; put 'bnRlbnQ/LnRhYkNvbnRlbnRJZH1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfWdldCB0YWJpbmRleCgpe3JldHVybiB0aGlzLmFjdGl2ZT8wOi0xfWFjdGl2YXRlKCl7dGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD10aGlzLmlk'@; put 'fX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShWYiksemUoZE0pLHplKG5vKSx6ZShMaCksemUoRHMpLHplKFBEKSx6ZShyYWUpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyVGFiTGluayIsIiJdXSxob3N0QXR0'@; put 'cnM6WyJyb2xlIiwidGFiIiwidHlwZSIsImJ1dHRvbiJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmFjdGl2YXRlKCl9KSwyJnQmJihPNSgiaWQiLHIudGFiTGlua0lkKSxScigiYXJpYS1jb250cm9s'@; put 'cyIsci5hcmlhQ29udHJvbHMpKCJhcmlhLXNlbGVjdGVkIixyLmFjdGl2ZSkoInRhYmluZGV4IixyLnRhYmluZGV4KSx3cigiYnRuIiwhMCkoImJ0bi1saW5rIixyLmFkZExpbmtDbGFzc2VzKSgibmF2LWxpbmsiLHIuYWRkTGlua0NsYXNzZXMpKCJhY3RpdmUiLHIuYWN0aXZlKSl9LGlucHV0'@; put 'czp7dGFiTGlua0lkOlswLCJpZCIsInRhYkxpbmtJZCJdLGluT3ZlcmZsb3c6WzAsImNsclRhYkxpbmtJbk92ZXJmbG93IiwiaW5PdmVyZmxvdyJdfSxzdGFuZGFsb25lOiExfSksbn0pKCksa3Y9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9'@; put 'dCx0aGlzLmlkPXIsdGhpcy50YWJzU2VydmljZT1pLGkucmVnaXN0ZXIodGhpcyl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH1uZ09uRGVzdHJveSgpe3RoaXMudGFic1NlcnZpY2UudW5yZWdpc3Rlcih0aGlzKX19cmV0dXJuIG4u'@; put 'XHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoVmIpLHplKGRNKSx6ZShQRCkpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItdGFiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixpKXtpZigxJnQmJihGYShpLEF2LDcpLEZhKGks'@; put 'eHYsNykpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIudGFiTGluaz1vLmZpcnN0KSxjaShvPXVpKCkpJiYoci50YWJDb250ZW50PW8uZmlyc3QpfX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW2t2dF0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6MSx2YXJzOjAsdGVtcGxh'@; put 'dGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFdyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksbE1lPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIi'@; put 'LCJjbHJUYWJBY3Rpb24iLCIiXV0saG9zdEF0dHJzOlsidGFiaW5kZXgiLCIwIl0sc3RhbmRhbG9uZTohMX0pLG59KSgpLGlhZT0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxl'@; put 'Y3RvcnM6W1siY2xyLXRhYi1vdmVyZmxvdy1jb250ZW50Il1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiZHJvcGRvd24tbWVudSIsITApfSxzdGFuZGFsb25lOiExLG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpm'@; put 'dW5jdGlvbih0LHIpezEmdCYmKGZvKCksV3IoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSwkYj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8sYSl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9dCx0aGlzLnRvZ2dsZVNlcnZpY2U9cix0aGlzLnRhYnNTZXJ2aWNlPWksdGhpcy50'@; put 'YWJzSWQ9byx0aGlzLmNvbW1vblN0cmluZ3M9YSx0aGlzLnRhYkxpbmtFbGVtZW50cz1bXSx0aGlzLl9tb3VzZWRvd249ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzPVtdfWdldCBsYXlvdXQoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5sYXlvdXR9'@; put 'c2V0IGxheW91dCh0KXtPYmplY3Qua2V5cyhHYikubWFwKHI9PkdiW3JdKS5pbmRleE9mKHQpPj0wJiYodGhpcy50YWJzU2VydmljZS5sYXlvdXQ9dCl9Z2V0IHRhYkxpbmtEaXJlY3RpdmVzKCl7cmV0dXJuIHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzfWdldCBhY3RpdmVUYWJJbk92ZXJmbG93'@; put 'KCl7cmV0dXJuIHRoaXMudGFic1NlcnZpY2Uub3ZlcmZsb3dUYWJzLmluZGV4T2YodGhpcy50YWJzU2VydmljZS5hY3RpdmVUYWIpPi0xfWdldCBhY3RpdmVUYWJQb3NpdGlvbigpe3JldHVybiB0aGlzLl90YWJMaW5rRGlyZWN0aXZlcy5maW5kSW5kZXgodD0+dC5hY3RpdmUpfWdldCBpc0N1'@; put 'cnJlbnRJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMua2V5Rm9jdXMuY3VycmVudD49dGhpcy5vdmVyZmxvd1Bvc2l0aW9ufWdldCBpc1ZlcnRpY2FsKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09R2IuVkVSVElDQUx9c2V0IHRhYk92ZXJmbG93RWwodCl7dGhpcy5fdGFiT3ZlcmZsb3dFbD10JiZ0'@; put 'Lm5hdGl2ZUVsZW1lbnQsdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJnQmJnRoaXMua2V5Rm9jdXMuZm9jdXNDdXJyZW50KCl9Z2V0IG92ZXJmbG93UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fdGFiTGlua0RpcmVjdGl2ZXMuZmlsdGVyKHQ9PiF0LmluT3ZlcmZsb3cpLmxlbmd0aH1zZXQgdGFi'@; put 'Q29udGVudFZpZXdDb250YWluZXIodCl7dGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lcj10fW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yVGFiTGlua0NoYW5nZXMoKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1'@; put 'c2godGhpcy5saXN0ZWRGb3JUYWJzQWN0aW9uc0NoYW5nZXMoKSksdHlwZW9mIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ+InUiJiZ0aGlzLnRhYkxpbmtEaXJlY3RpdmVzWzBdJiZ0aGlzLnRhYkxpbmtEaXJlY3RpdmVzWzBdLmFjdGl2YXRlKCksdGhpcy5rZXlGb2N1cy5jdXJyZW50'@; put 'PXRoaXMuYWN0aXZlVGFiUG9zaXRpb259bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT57dC51bnN1YnNjcmliZSgpfSl9dG9nZ2xlT3ZlcmZsb3dPblBvc2l0aW9uKHQpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPXQ+PXRoaXMub3ZlcmZsb3dQb3NpdGlvbn1y'@; put 'ZXNldEtleUZvY3VzQ3VycmVudFRvQWN0aXZlKHQpeyF0aGlzLmtleUZvY3VzLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KSYmdGhpcy5rZXlGb2N1cy5jdXJyZW50IT09dGhpcy5hY3RpdmVUYWJQb3NpdGlvbiYmKHRoaXMua2V5Rm9jdXMuY3VycmVudD10aGlzLmFj'@; put 'dGl2ZVRhYlBvc2l0aW9uKX10b2dnbGVPdmVyZmxvd09uQ2xpY2soKXt0aGlzLmtleUZvY3VzLm1vdmVUbyh0aGlzLmlzQ3VycmVudEluT3ZlcmZsb3cmJnRoaXMudG9nZ2xlU2VydmljZS5vcGVuP3RoaXMub3ZlcmZsb3dQb3NpdGlvbi0xOnRoaXMub3ZlcmZsb3dQb3NpdGlvbiksdGhpcy5f'@; put 'bW91c2Vkb3duPSExfW9wZW5PdmVyZmxvd09uRm9jdXMoKXshdGhpcy5fbW91c2Vkb3duJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJnRoaXMua2V5Rm9jdXMubW92ZVRvKHRoaXMuYWN0aXZlVGFiUG9zaXRpb24pfWNsb3NlT25Gb2N1c091dCh0KXshdGhpcy5fdGFiT3ZlcmZsb3dFbC5j'@; put 'b250YWlucyh0LnJlbGF0ZWRUYXJnZXQpJiZ0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmIXRoaXMuX21vdXNlZG93biYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExLHRoaXMudGFiTGlua0VsZW1lbnRzW3RoaXMuYWN0aXZlVGFiUG9zaXRpb25dPT09dC5yZWxhdGVkVGFyZ2V0JiYodGhp'@; put 'cy5rZXlGb2N1cy5jdXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb24pKX1jbG9zZU9uRXNjYXBlS2V5KCl7dGhpcy5rZXlGb2N1cy5tb3ZlVG8odGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfWNsb3NlT25PdXRzaWRlQ2xpY2sodCxyKXtjb25zdCBpPXRoaXMudGFic0FjdGlvbnMuc29tZShv'@; put 'PT5vLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModC50YXJnZXQpKTt0LnRhcmdldD09PXJ8fHIuY29udGFpbnModC50YXJnZXQpfHxpfHwhdGhpcy5fdGFiT3ZlcmZsb3dFbC5jb250YWlucyh0LnRhcmdldCkmJnRoaXMuaXNDdXJyZW50SW5PdmVyZmxvdyYmdGhpcy5rZXlGb2N1cy5tb3ZlVG8o'@; put 'dGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfXNldFRhYkxpbmtFbGVtZW50cygpe3RoaXMuX3RhYkxpbmtEaXJlY3RpdmVzPXRoaXMudGFicy5tYXAodD0+dC50YWJMaW5rKSx0aGlzLnRhYkxpbmtFbGVtZW50cz10aGlzLl90YWJMaW5rRGlyZWN0aXZlcy5tYXAodD0+dC5lbC5uYXRpdmVFbGVt'@; put 'ZW50KSx0aGlzLnRhYnNBY3Rpb25zJiZ0aGlzLnRhYnNBY3Rpb25zJiZ0aGlzLnRhYkxpbmtFbGVtZW50cy5wdXNoKC4uLnRoaXMudGFic0FjdGlvbnMubWFwKHQ9PnQubmF0aXZlRWxlbWVudCkpfWxpc3RlbkZvclRhYkxpbmtDaGFuZ2VzKCl7cmV0dXJuIHRoaXMudGFicy5jaGFuZ2VzLnBp'@; put 'cGUocWcodGhpcy50YWJzLm1hcCh0PT50LnRhYkxpbmspKSkuc3Vic2NyaWJlKCgpPT50aGlzLnNldFRhYkxpbmtFbGVtZW50cygpKX1saXN0ZWRGb3JUYWJzQWN0aW9uc0NoYW5nZXMoKXtyZXR1cm4gdGhpcy50YWJzQWN0aW9ucy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+dGhpcy5zZXRUYWJM'@; put 'aW5rRWxlbWVudHMoKSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKFZiKSx6ZShLdSksemUoUEQpLHplKHJhZSksemUoaWwpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLXRhYnMiXV0sY29udGVudFF1ZXJpZXM6'@; put 'ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmKEZhKGksbE1lLDUsbm8pLEZhKGksa3YsNCkpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIudGFic0FjdGlvbnM9byksY2kobz11aSgpKSYmKHIudGFicz1vKX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmKFdvKG1NLDcpLFdvKGlh'@; put 'ZSw1LG5vKSxXbyhINXQsNyxEcykpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIua2V5Rm9jdXM9aS5maXJzdCksY2koaT11aSgpKSYmKHIudGFiT3ZlcmZsb3dFbD1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci50YWJDb250ZW50Vmlld0NvbnRhaW5lcj1pLmZpcnN0KX19LGhvc3RWYXJzOjIs'@; put 'aG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigidGFicy12ZXJ0aWNhbCIsci5pc1ZlcnRpY2FsKX0saW5wdXRzOntsYXlvdXQ6WzAsImNsckxheW91dCIsImxheW91dCJdfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbVmIsUEQsTV90XSksemcoW2k3XSldLG5nQ29udGVu'@; put 'dFNlbGVjdG9yczpCNXQsZGVjbHM6Nix2YXJzOjMsY29uc3RzOltbInRhYkNvbnRlbnRWaWV3Q29udGFpbmVyIiwiIl0sWyJ0YWJPdmVyZmxvd1RyaWdnZXIiLCIiXSxbInJvbGUiLCJ0YWJsaXN0IiwiY2xyRGlyZWN0aW9uIiwiYm90aCIsMSwibmF2IiwzLCJjbHJGb2N1c0NoYW5nZSIsImZv'@; put 'Y3Vzb3V0IiwiY2xyS2V5Rm9jdXMiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzQsIm5nSWYiXSxbInJvbGUiLCJwcmVzZW50YXRpb24iLDEsIm5hdi1pdGVtIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiXSxbInJvbGUiLCJwcmVzZW50YXRpb24iLDEsInRhYnMtb3ZlcmZsb3ciLCJib3R0b20t'@; put 'cmlnaHQiXSxbInJvbGUiLCJhcHBsaWNhdGlvbiIsMSwibmF2LWl0ZW0iXSxbInR5cGUiLCJidXR0b24iLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImJ0biIsImJ0bi1saW5rIiwibmF2LWxpbmsiLCJkcm9wZG93bi10b2dnbGUiLDMsIm1vdXNlZG93biIsImZvY3VzIiwiY2xpY2siXSxbInNo'@; put 'YXBlIiwiZWxsaXBzaXMtaG9yaXpvbnRhbCJdLFszLCJrZXlkb3duLmVzY2FwZSIsImNsaWNrIiwiZm9jdXNvdXQiLDQsIm5nSWYiXSxbMywia2V5ZG93bi5lc2NhcGUiLCJjbGljayIsImZvY3Vzb3V0Il0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiLDQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rp'@; put 'b24odCxyKXtpZigxJnQpe2NvbnN0IGk9d24oKTtmbyhWNXQpLEooMCwidWwiLDIpLHd0KCJjbHJGb2N1c0NoYW5nZSIsZnVuY3Rpb24oYSl7cmV0dXJuIFllKGkpLFhlKHIudG9nZ2xlT3ZlcmZsb3dPblBvc2l0aW9uKGEpKX0pKCJmb2N1c291dCIsZnVuY3Rpb24oYSl7cmV0dXJuIFllKGkp'@; put 'LFhlKHIucmVzZXRLZXlGb2N1c0N1cnJlbnRUb0FjdGl2ZShhKSl9KSxZbigxLFU1dCwyLDEsIm5nLWNvbnRhaW5lciIsMykoMixaNXQsNywxMSwibmctY29udGFpbmVyIiw0KSxXcigzKSx0ZSgpLGF1KDQsbnVsbCwwKX0yJnQmJihydCgiY2xyS2V5Rm9jdXMiLHIudGFiTGlua0VsZW1lbnRz'@; put 'KSxpZSgpLHJ0KCJuZ0Zvck9mIixyLnRhYkxpbmtEaXJlY3RpdmVzKSxpZSgpLHJ0KCJuZ0lmIixyLnRhYnNTZXJ2aWNlLm92ZXJmbG93VGFicy5sZW5ndGg+MCkpfSxkZXBlbmRlbmNpZXM6W1JmLFlzLElmLEpzLG1NLGlhZV0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCkseF90PSgoKT0+e2Ns'@; put 'YXNzIG57Y29uc3RydWN0b3IoKXt6bC5hZGRJY29ucyhOU2UpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxybSxXbCx3X3QsdGFlLHJtXX0pLG59KSgp'@; put 'LG9hZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5uYXZHcm91cENvdW50PTB9cmVnaXN0ZXJOYXZHcm91cCgpe3RoaXMubmF2R3JvdXBDb3VudCsrfXVucmVnaXN0ZXJOYXZHcm91cCgpe3RoaXMubmF2R3JvdXBDb3VudC0tfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24o'@; put 'dCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxhYWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2ljb25zPTB9Z2V0IGhhc0ljb25zKCl7cmV0dXJuIHRoaXMuX2ljb25zPjB9cmVnaXN0ZXJJ'@; put 'Y29uKCl7dGhpcy5faWNvbnMrK311bnJlZ2lzdGVySWNvbigpe3RoaXMuX2ljb25zLS19fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLHNhZT0oKCk9Pntj'@; put 'bGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5fYW5pbWF0ZU9uQ29sbGFwc2VkPW5ldyBNcix0aGlzLl9jb2xsYXBzZWRDaGFuZ2VkPW5ldyBNcix0aGlzLl9jb2xsYXBzZWQ9ITEsdGhpcy5fY29sbGFwc2libGU9ITF9Z2V0IGFuaW1hdGVPbkNvbGxhcHNlZCgpe3JldHVybiB0aGlzLl9hbmlt'@; put 'YXRlT25Db2xsYXBzZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IGNvbGxhcHNlZENoYW5nZWQoKXtyZXR1cm4gdGhpcy5fY29sbGFwc2VkQ2hhbmdlZC5hc09ic2VydmFibGUoKX1nZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNlZH1zZXQgY29sbGFwc2VkKHQpe3Q9ISF0LHRoaXMu'@; put 'Y29sbGFwc2libGUmJnRoaXMuX2NvbGxhcHNlZCE9PXQmJnRoaXMudXBkYXRlQ29sbGFwc2VCZWhhdmlvcih0KX1nZXQgY29sbGFwc2libGUoKXtyZXR1cm4gdGhpcy5fY29sbGFwc2libGV9c2V0IGNvbGxhcHNpYmxlKHQpe3RoaXMuX2NvbGxhcHNpYmxlIT09KHQ9ISF0KSYmKCF0JiZ0aGlz'@; put 'LmNvbGxhcHNlZCYmdGhpcy51cGRhdGVDb2xsYXBzZUJlaGF2aW9yKCExKSx0aGlzLl9jb2xsYXBzaWJsZT10KX11cGRhdGVDb2xsYXBzZUJlaGF2aW9yKHQpe3RoaXMuX2FuaW1hdGVPbkNvbGxhcHNlZC5uZXh0KHQpLHRoaXMuX2NvbGxhcHNlZD10LHRoaXMuX2NvbGxhcHNlZENoYW5nZWQu'@; put 'bmV4dCh0KX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCksbGFlPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyl7dGhpcy5fbmF2U2Vydmlj'@; put 'ZT10LHRoaXMuX25hdkljb25TZXJ2aWNlPXIsdGhpcy5fbmF2R3JvdXBSZWdpc3RyYXRpb25TZXJ2aWNlPWksdGhpcy5jb21tb25TdHJpbmdzPW8sdGhpcy5jb250ZW50SWQ9UGgoKSx0aGlzLl9jb2xsYXBzZWRDaGFuZ2VkPW5ldyBLcighMCksdGhpcy5fc3ViPXQuY29sbGFwc2VkQ2hhbmdl'@; put 'ZC5zdWJzY3JpYmUoYT0+e3RoaXMuX2NvbGxhcHNlZENoYW5nZWQuZW1pdChhKX0pfWdldCBjb2xsYXBzaWJsZSgpe3JldHVybiB0aGlzLl9uYXZTZXJ2aWNlLmNvbGxhcHNpYmxlfXNldCBjb2xsYXBzaWJsZSh0KXt0aGlzLl9uYXZTZXJ2aWNlLmNvbGxhcHNpYmxlPXR9Z2V0IGNvbGxhcHNl'@; put 'ZCgpe3JldHVybiB0aGlzLl9uYXZTZXJ2aWNlLmNvbGxhcHNlZH1zZXQgY29sbGFwc2VkKHQpe3RoaXMuX25hdlNlcnZpY2UuY29sbGFwc2VkPXR9Z2V0IGhhc05hdkdyb3Vwcygpe3JldHVybiB0aGlzLl9uYXZHcm91cFJlZ2lzdHJhdGlvblNlcnZpY2UubmF2R3JvdXBDb3VudD4wfWdldCBo'@; put 'YXNJY29ucygpe3JldHVybiB0aGlzLl9uYXZJY29uU2VydmljZS5oYXNJY29uc31nZXQgYXJpYUV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuY29sbGFwc2libGU/dGhpcy5jb2xsYXBzZWQ/ImZhbHNlIjoidHJ1ZSI6bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMuX3N1Yi51bnN1YnNjcmliZSgpfXRv'@; put 'Z2dsZUJ5QnV0dG9uKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShzYWUpLHplKGFhZSksemUob2FlKSx6ZShpbCkpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJj'@; put 'bHItdmVydGljYWwtbmF2Il1dLGhvc3RBdHRyczpbMSwiY2xyLXZlcnRpY2FsLW5hdiJdLGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiaXMtY29sbGFwc2VkIixyLmNvbGxhcHNlZCkoImhhcy1uYXYtZ3JvdXBzIixyLmhhc05hdkdyb3VwcykoImhhcy1p'@; put 'Y29ucyIsci5oYXNJY29ucyl9LGlucHV0czp7dG9nZ2xlTGFiZWw6WzAsImNsclZlcnRpY2FsTmF2VG9nZ2xlTGFiZWwiLCJ0b2dnbGVMYWJlbCJdLGNvbGxhcHNpYmxlOlswLCJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNpYmxlIiwiY29sbGFwc2libGUiXSxjb2xsYXBzZWQ6WzAsImNsclZlcnRp'@; put 'Y2FsTmF2Q29sbGFwc2VkIiwiY29sbGFwc2VkIl19LG91dHB1dHM6e19jb2xsYXBzZWRDaGFuZ2VkOiJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNlZENoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtzYWUsYWFlLG9hZV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6NCx2'@; put 'YXJzOjMsY29uc3RzOltbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm5hdi10cmlnZ2VyIiwzLCJvbi1jb2xsYXBzZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsIm5hdi1jb250ZW50IiwzLCJpZCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwibmF2LWJ0biIsImFyaWEtaGlkZGVuIiwidHJ1'@; put 'ZSIsInRhYmluZGV4IiwiLTEiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJuYXYtdHJpZ2dlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUtZG91YmxlIiwxLCJuYXYtdHJpZ2dlci1pY29uIl0sWyJ0eXBlIiwiYnV0dG9uIiwiYXJpYS1oaWRkZW4iLCJ0cnVl'@; put 'IiwidGFiaW5kZXgiLCItMSIsMSwibmF2LWJ0biIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFluKDAsRzV0LDIsNiwiYnV0dG9uIiwwKSxKKDEsImRpdiIsMSksV3IoMiksWW4oMywkNXQsMSwyLCJidXR0b24iLDIpLHRlKCkpLDImdCYmKHJ0KCJuZ0lm'@; put 'IixyLmNvbGxhcHNpYmxlKSxpZSgpLHJ0KCJpZCIsci5jb250ZW50SWQpLGllKDIpLHJ0KCJuZ0lmIixyLmNvbGxhcHNpYmxlJiZyLmNvbGxhcHNlZCkpfSxkZXBlbmRlbmNpZXM6W1lzLEpzXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxjYWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigp'@; put 'e3RoaXMuX2V4cGFuZENoYW5nZT1uZXcgTXJ9Z2V0IGV4cGFuZENoYW5nZSgpe3JldHVybiB0aGlzLl9leHBhbmRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9ZXhwYW5kKCl7dGhpcy5fZXhwYW5kQ2hhbmdlLm5leHQoITApfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l'@; put 'dyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSx1YWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy5kZXN0cm95JD1uZXcgTXIsaSYmSmcodC5uYXRpdmVFbGVtZW50LCJjbGljayIpLnBpcGUodjAodGhpcy5k'@; put 'ZXN0cm95JCkpLnN1YnNjcmliZSgoKT0+e2kuZXhwYW5kKCksci5tYXJrRm9yQ2hlY2soKX0pfW5nT25EZXN0cm95KCl7dGhpcy5kZXN0cm95JC5uZXh0KCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKG5vKSx6ZShVbCksemUoY2FlLDgpKX0s'@; put 'bi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyVmVydGljYWxOYXZMaW5rIiwiIl1dLGhvc3RBdHRyczpbMSwibmF2LWxpbmsiXSxzdGFuZGFsb25lOiExLGF0dHJzOlg1dCxuZ0NvbnRlbnRTZWxlY3RvcnM6SjV0LGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsIm5h'@; put 'di10ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oUTV0KSxXcigwKSxKKDEsInNwYW4iLDApLFdyKDIsMSksdGUoKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLGNNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMock0sUFNlKX19cmV0dXJu'@; put 'IG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8sV2wscm0sV3oscm0sV2wsV3pdfSksbn0pKCksSV90PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5j'@; put 'dGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3BfdCxiX3QseF90LGNNZSxmX3RdfSksbn0pKCksX009KCgpPT57Y2xhc3MgbiBleHRlbmRzIFdTZXtjb25zdHJ1Y3Rvcih0LHIsaSl7c3VwZXIodCxyLGkp'@; put 'fX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShubyksemUod29lKSx6ZShUbCw4KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNka1RyYXBGb2N1cyIsIiJdXSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxu'@; put 'fSkoKSxKej0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHt9KSxufSkoKTtjb25zdCBMX3Q9L2QrLittKy4reSsvaSxPX3Q9L20rLitkKy4reSsvaSxO'@; put 'X3Q9L2QrfG0rfHkrL2ksRl90PS9cZCsvZyxQX3Q9L01vYmkvaSxIX3Q9L1x1MjAwZi9nLGVXPXtuYW1lOiJMSVRUTEVfRU5ESUFOIixmb3JtYXQ6WyJERCIsIk1NIiwiWVlZWSJdfSxwYWU9e25hbWU6Ik1JRERMRV9FTkRJQU4iLGZvcm1hdDpbIk1NIiwiREQiLCJZWVlZIl19LFZfdD17bmFt'@; put 'ZToiQklHX0VORElBTiIsZm9ybWF0OlsiWVlZWSIsIk1NIiwiREQiXX07ZnVuY3Rpb24gZE1lKG4sZSl7cmV0dXJuIG5ldyBEYXRlKG4sZSsxLDApLmdldERhdGUoKX1jbGFzcyBXX3R7Y29uc3RydWN0b3IoZSx0PSExLHI9ITEsaT0hMSxvPSExLGE9ITEsbD0hMSx1PSExKXt0aGlzLmRheU1v'@; put 'ZGVsPWUsdGhpcy5pc1RvZGF5c0RhdGU9dCx0aGlzLmlzRXhjbHVkZWQ9cix0aGlzLmlzRGlzYWJsZWQ9aSx0aGlzLmlzU2VsZWN0ZWQ9byx0aGlzLmlzRm9jdXNhYmxlPWEsdGhpcy5pc1JhbmdlU3RhcnREYXk9bCx0aGlzLmlzUmFuZ2VFbmREYXk9dX1nZXQgdGFiSW5kZXgoKXtyZXR1cm4g'@; put 'dGhpcy5pc0ZvY3VzYWJsZT8wOi0xfX1jbGFzcyBEM3tjb25zdHJ1Y3RvcihlLHQscil7dGhpcy55ZWFyPWUsdGhpcy5tb250aD10LHRoaXMuZGF0ZT1yfWlzRXF1YWwoZSl7cmV0dXJuISFlJiZ0aGlzLnllYXI9PT1lLnllYXImJnRoaXMubW9udGg9PT1lLm1vbnRoJiZ0aGlzLmRhdGU9PT1l'@; put 'LmRhdGV9dG9EYXRlKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMueWVhcix0aGlzLm1vbnRoLHRoaXMuZGF0ZSl9aW5jcmVtZW50QnkoZSl7Y29uc3QgdD1uZXcgRGF0ZSh0aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRhdGUrZSk7cmV0dXJuIG5ldyBEMyh0LmdldEZ1bGxZZWFyKCksdC5nZXRN'@; put 'b250aCgpLHQuZ2V0RGF0ZSgpKX1jbG9uZSgpe3JldHVybiBuZXcgRDModGhpcy55ZWFyLHRoaXMubW9udGgsdGhpcy5kYXRlKX10b0NvbXBhcmlzb25TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnllYXJ9JHt0aGlzLnBhZCh0aGlzLm1vbnRoKX0ke3RoaXMucGFkKHRoaXMuZGF0ZSl9YH10b0Rh'@; put 'dGVTdHJpbmcoKXtyZXR1cm4gdGhpcy50b0RhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcodm9pZCAwLHt3ZWVrZGF5OiJsb25nIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIix5ZWFyOiJudW1lcmljIn0pfWlzQmVmb3JlKGUsdD0hMSl7cmV0dXJuIHQ/dGhpcy50b0RhdGUoKS5nZXRUaW1l'@; put 'KCk8PWU/LnRvRGF0ZSgpLmdldFRpbWUoKTp0aGlzLnRvRGF0ZSgpLmdldFRpbWUoKTxlPy50b0RhdGUoKS5nZXRUaW1lKCl9aXNBZnRlcihlLHQ9ITEpe3JldHVybiB0P3RoaXMudG9EYXRlKCkuZ2V0VGltZSgpPj1lPy50b0RhdGUoKS5nZXRUaW1lKCk6dGhpcy50b0RhdGUoKS5nZXRUaW1l'@; put 'KCk+ZT8udG9EYXRlKCkuZ2V0VGltZSgpfXBhZChlKXtyZXR1cm4gZTwxMD9gMCR7ZX1gOmAke2V9YH19Y2xhc3MgWV90e2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhLGwpe3RoaXMuY2FsZW5kYXI9ZSx0aGlzLnNlbGVjdGVkRGF5PXQsdGhpcy5zZWxlY3RlZEVuZERheT1yLHRoaXMuZm9jdXNh'@; put 'YmxlRGF5PWksdGhpcy50b2RheT1vLHRoaXMuZmlyc3REYXlPZldlZWs9YSx0aGlzLmV4Y2x1ZGVkRGF0ZXM9bCx0aGlzLmN1cnJNb250aERheVZpZXdzPVtdLHRoaXMuaW5pdGlhbGl6ZUNhbGVuZGFyVmlldygpfWdldCBjYWxlbmRhclZpZXcoKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXJWaWV3'@; put 'fXVwZGF0ZUZvY3VzYWJsZURheShlKXt0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITEpLHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyhlLCEwKSx0aGlzLmZvY3VzYWJsZURheT1lfXVwZGF0ZVNlbGVjdGVkRGF5KGUpe3RoaXMuc2V0U2VsZWN0ZWREYXkodGhpcy5zZWxl'@; put 'Y3RlZERheSwhMSksdGhpcy5zZWxlY3RlZERheT1lLHRoaXMuc2V0U2VsZWN0ZWREYXkoZSwhMCl9dXBkYXRlU2VsZWN0ZWRFbmREYXkoZSl7dGhpcy5zZXRTZWxlY3RlZERheSh0aGlzLnNlbGVjdGVkRW5kRGF5LCExKSx0aGlzLnNlbGVjdGVkRW5kRGF5PWUsdGhpcy5zZXRTZWxlY3RlZERh'@; put 'eShlLCEwKX1pbml0aWFsaXplQ2FsZW5kYXJWaWV3KCl7Y29uc3QgZT10aGlzLmNhbGVuZGFyLnByZXZpb3VzTW9udGgoKSx0PXRoaXMuY2FsZW5kYXIubmV4dE1vbnRoKCkscj10aGlzLm51bURheXNGcm9tUHJldk1vbnRoSW5DYWxWaWV3KHRoaXMuY2FsZW5kYXIueWVhcix0aGlzLmNhbGVu'@; put 'ZGFyLm1vbnRoKSxpPTQyLSh0aGlzLmNhbGVuZGFyLmRheXMubGVuZ3RoK3IpO2xldCBvPVtdLGE9W107cj4wJiYobz10aGlzLmdlbmVyYXRlRGF5Vmlld01vZGVscyhlLmRheXMuc2xpY2UoLTEqciksITAsITEpKSx0aGlzLmN1cnJNb250aERheVZpZXdzPXRoaXMuZ2VuZXJhdGVEYXlWaWV3'@; put 'TW9kZWxzKHRoaXMuY2FsZW5kYXIuZGF5cywhMSwhMCksaT4wJiYoYT10aGlzLmdlbmVyYXRlRGF5Vmlld01vZGVscyh0LmRheXMuc2xpY2UoMCxpKSwhMCwhMSkpLHRoaXMuX2NhbGVuZGFyVmlldz10aGlzLmdlbmVyYXRlQ2FsZW5kYXJWaWV3KG8sdGhpcy5jdXJyTW9udGhEYXlWaWV3cyxh'@; put 'KSx0aGlzLmluaXRpYWxpemVTZWxlY3RlZERheSgpLHRoaXMuaW5pdGlhbGl6ZUZvY3VzYWJsZURheSgpfWlzRGF0ZUV4Y2x1ZGVkKGUpe2NvbnN0e21pbkRhdGU6dCxtYXhEYXRlOnJ9PXRoaXMuZXhjbHVkZWREYXRlcyxpPXQudG9Db21wYXJpc29uU3RyaW5nKCksbz1yLnRvQ29tcGFyaXNv'@; put 'blN0cmluZygpLGE9ZS50b0NvbXBhcmlzb25TdHJpbmcoKTtyZXR1cm4hKGE+PWkmJmE8PW8pfWdlbmVyYXRlRGF5Vmlld01vZGVscyhlLHQscil7Y29uc3QgaT1lLm1hcChvPT5uZXcgV190KG8sITEsdCx0aGlzLmlzRGF0ZUV4Y2x1ZGVkKG8pLCExLCExKSk7cmV0dXJuIHImJnRoaXMuY2Fs'@; put 'ZW5kYXIuaXNEYXlJbkNhbGVuZGFyKHRoaXMudG9kYXkpJiYoaVt0aGlzLnRvZGF5LmRhdGUtMV0uaXNUb2RheXNEYXRlPSEwKSxpfW51bURheXNGcm9tUHJldk1vbnRoSW5DYWxWaWV3KGUsdCl7Y29uc3Qgcj1mdW5jdGlvbiBqX3QobixlLHQpe3JldHVybiBuZXcgRGF0ZShuLGUsdCkuZ2V0'@; put 'RGF5KCl9KGUsdCwxKTtyZXR1cm4gcj49dGhpcy5maXJzdERheU9mV2Vlaz9yLXRoaXMuZmlyc3REYXlPZldlZWs6NytyLXRoaXMuZmlyc3REYXlPZldlZWt9aXNEYXlJbkNhbGVuZGFyVmlldyhlKXtyZXR1cm4hIXRoaXMuY2FsZW5kYXIuaXNEYXlJbkNhbGVuZGFyKGUpfWdlbmVyYXRlQ2Fs'@; put 'ZW5kYXJWaWV3KGUsdCxyKXtjb25zdCBpPVsuLi5lLC4uLnQsLi4ucl0sbz1bXTtmb3IobGV0IGE9MDthPDY7YSsrKW9bYV09aS5zbGljZSg3KmEsNyooYSsxKSk7cmV0dXJuIG99aW5pdGlhbGl6ZVNlbGVjdGVkRGF5KCl7dGhpcy5zZXRTZWxlY3RlZERheSh0aGlzLnNlbGVjdGVkRGF5LCEw'@; put 'KSx0aGlzLnNldFNlbGVjdGVkRGF5KHRoaXMuc2VsZWN0ZWRFbmREYXksITApfWluaXRpYWxpemVGb2N1c2FibGVEYXkoKXt0aGlzLmZvY3VzYWJsZURheSYmdGhpcy5pc0RheUluQ2FsZW5kYXJWaWV3KHRoaXMuZm9jdXNhYmxlRGF5KT90aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1'@; put 'c2FibGVEYXksITApOnRoaXMuc2VsZWN0ZWREYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLnNlbGVjdGVkRGF5KT8odGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMuc2VsZWN0ZWREYXksITApLHRoaXMuZm9jdXNhYmxlRGF5PXRoaXMuc2VsZWN0ZWREYXkuY2xvbmUoKSk6dGhp'@; put 'cy5zZWxlY3RlZEVuZERheSYmdGhpcy5pc0RheUluQ2FsZW5kYXJWaWV3KHRoaXMuc2VsZWN0ZWRFbmREYXkpPyh0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5zZWxlY3RlZEVuZERheSwhMCksdGhpcy5mb2N1c2FibGVEYXk9dGhpcy5zZWxlY3RlZEVuZERheS5jbG9uZSgpKTp0aGlzLmlz'@; put 'RGF5SW5DYWxlbmRhclZpZXcodGhpcy50b2RheSk/KHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyh0aGlzLnRvZGF5LCEwKSx0aGlzLmZvY3VzYWJsZURheT10aGlzLnRvZGF5LmNsb25lKCkpOih0aGlzLmZvY3VzYWJsZURheT1uZXcgRDModGhpcy5jYWxlbmRhci55ZWFyLHRoaXMuY2FsZW5kYXIu'@; put 'bW9udGgsMTUpLHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyh0aGlzLmZvY3VzYWJsZURheSwhMCkpfXNldEZvY3VzYWJsZUZsYWcoZSx0KXtlJiYodGhpcy5jdXJyTW9udGhEYXlWaWV3c1tlLmRhdGUtMV0uaXNGb2N1c2FibGU9dCl9c2V0U2VsZWN0ZWREYXkoZSx0KXtlJiZ0aGlzLmlzRGF5SW5D'@; put 'YWxlbmRhclZpZXcoZSkmJih0aGlzLmN1cnJNb250aERheVZpZXdzW2U/LmRhdGUtMV0uaXNTZWxlY3RlZD10KX19bGV0IFZEPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy5sb2NhbGU9dCx0aGlzLl9maXJzdERheU9mV2Vlaz0wLHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURhdGEo'@; put 'KX1nZXQgZmlyc3REYXlPZldlZWsoKXtyZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWt9Z2V0IGxvY2FsZURheXMoKXtyZXR1cm4gdGhpcy5fbG9jYWxlRGF5c31nZXQgbG9jYWxlRGF5c05hcnJvdygpe3JldHVybiB0aGlzLl9sb2NhbGVEYXlzLm1hcCh0PT50Lm5hcnJvdyl9Z2V0IGxvY2Fs'@; put 'ZU1vbnRoc0FiYnJldmlhdGVkKCl7cmV0dXJuIHRoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkfWdldCBsb2NhbGVNb250aHNXaWRlKCl7cmV0dXJuIHRoaXMuX2xvY2FsZU1vbnRoc1dpZGV9Z2V0IGxvY2FsZURhdGVGb3JtYXQoKXtyZXR1cm4gdGhpcy5fbG9jYWxlRGF0ZUZvcm1hdH1p'@; put 'bml0aWFsaXplTG9jYWxlRGF0YSgpe3RoaXMuaW5pdGlhbGl6ZUZpcnN0RGF5T2ZXZWVrKCksdGhpcy5pbml0aWFsaXplTG9jYWxlRGF0ZUZvcm1hdCgpLHRoaXMuaW5pdGlhbGl6ZUxvY2FsZU1vbnRoc0FiYnJldmlhdGVkKCksdGhpcy5pbml0aWFsaXplTG9jYWxlTW9udGhzV2lkZSgpLHRo'@; put 'aXMuaW5pdGlhbGl6ZUxvY2FsZURheXMoKX1pbml0aWFsaXplTG9jYWxlRGF5cygpe2NvbnN0IHQ9W10scj1QbmUodGhpcy5sb2NhbGUsWTEuU3RhbmRhbG9uZSxWYy5XaWRlKS5zbGljZSgpLGk9UG5lKHRoaXMubG9jYWxlLFkxLlN0YW5kYWxvbmUsVmMuTmFycm93KS5zbGljZSgpLG89dGhp'@; put 'cy5maXJzdERheU9mV2Vlaztmb3IobGV0IGE9MDthPDc7YSsrKXQucHVzaCh7ZGF5OnJbYV0sbmFycm93OmlbYV19KTtpZihvPjApe2NvbnN0IGE9dC5zcGxpY2UoMCxvKTt0LnB1c2goLi4uYSl9dGhpcy5fbG9jYWxlRGF5cz10fWluaXRpYWxpemVMb2NhbGVNb250aHNBYmJyZXZpYXRlZCgp'@; put 'e3RoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkPUhuZSh0aGlzLmxvY2FsZSxZMS5TdGFuZGFsb25lLFZjLkFiYnJldmlhdGVkKS5zbGljZSgpfWluaXRpYWxpemVMb2NhbGVNb250aHNXaWRlKCl7dGhpcy5fbG9jYWxlTW9udGhzV2lkZT1IbmUodGhpcy5sb2NhbGUsWTEuU3RhbmRhbG9u'@; put 'ZSxWYy5XaWRlKS5zbGljZSgpfWluaXRpYWxpemVGaXJzdERheU9mV2Vlaygpe3RoaXMuX2ZpcnN0RGF5T2ZXZWVrPWZ1bmN0aW9uIGNvdChuKXtyZXR1cm4gTDIobilbR3UuRmlyc3REYXlPZldlZWtdfSh0aGlzLmxvY2FsZSl9aW5pdGlhbGl6ZUxvY2FsZURhdGVGb3JtYXQoKXt0aGlzLl9s'@; put 'b2NhbGVEYXRlRm9ybWF0PWZ1bmN0aW9uIHBJKG4sZSl7cmV0dXJuIEdnKEwyKG4pW0d1LkRhdGVGb3JtYXRdLGUpfSh0aGlzLmxvY2FsZSxNMy5TaG9ydCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKEY1KSl9LG4uXHUwMjc1cHJvdj1Kbih7'@; put 'dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y2xhc3MgTDN7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnllYXI9ZSx0aGlzLm1vbnRoPXQsdGhpcy5pbml0aWFsaXplRGF5c0luQ2FsZW5kYXIoKX1pc0VxdWFsKGUpe3JldHVybiEhZSYmdGhpcy55ZWFyPT09ZS55ZWFyJiZ0aGlz'@; put 'Lm1vbnRoPT09ZS5tb250aH1pc0RheUluQ2FsZW5kYXIoZSl7cmV0dXJuISFlJiZ0aGlzLnllYXI9PT1lLnllYXImJnRoaXMubW9udGg9PT1lLm1vbnRofXByZXZpb3VzTW9udGgoKXtyZXR1cm4gMD09PXRoaXMubW9udGg/bmV3IEwzKHRoaXMueWVhci0xLDExKTpuZXcgTDModGhpcy55ZWFy'@; put 'LHRoaXMubW9udGgtMSl9bmV4dE1vbnRoKCl7cmV0dXJuIDExPT09dGhpcy5tb250aD9uZXcgTDModGhpcy55ZWFyKzEsMCk6bmV3IEwzKHRoaXMueWVhcix0aGlzLm1vbnRoKzEpfXByZXZpb3VzWWVhcigpe3JldHVybiBuZXcgTDModGhpcy55ZWFyLTEsdGhpcy5tb250aCl9bmV4dFllYXIo'@; put 'KXtyZXR1cm4gbmV3IEwzKHRoaXMueWVhcisxLHRoaXMubW9udGgpfWluaXRpYWxpemVEYXlzSW5DYWxlbmRhcigpe2NvbnN0IGU9ZE1lKHRoaXMueWVhcix0aGlzLm1vbnRoKTt0aGlzLmRheXM9QXJyYXkoZSkuZmlsbChudWxsKS5tYXAoKHQscik9Pm5ldyBEMyh0aGlzLnllYXIsdGhpcy5t'@; put 'b250aCxyKzEpKX19bGV0IE5wPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLmlzUmFuZ2VQaWNrZXI9ITEsdGhpcy5oYXNBY3Rpb25CdXR0b25zPSExLHRoaXMuX3RvZGF5c0Z1bGxEYXRlPW5ldyBEYXRlLHRoaXMuX3NlbGVjdGVkRGF5Q2hhbmdlPW5ldyBNcix0aGlzLl9zZWxl'@; put 'Y3RlZEVuZERheUNoYW5nZT1uZXcgTXIsdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2U9bmV3IE1yLHRoaXMuX2ZvY3VzT25DYWxlbmRhckNoYW5nZT1uZXcgTXIsdGhpcy5fcmVmcmVzaENhbGVuZGFyVmlldz1uZXcgTXIsdGhpcy5fZm9jdXNlZERheUNoYW5nZT1uZXcgTXJ9Z2V0IHRv'@; put 'ZGF5KCl7cmV0dXJuIHRoaXMuX3RvZGF5fWdldCBkaXNwbGF5ZWRDYWxlbmRhcigpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhcn1nZXQgc2VsZWN0ZWREYXlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXlDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IHNlbGVjdGVkRW5k'@; put 'RGF5Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkRW5kRGF5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBkaXNwbGF5ZWRDYWxlbmRhckNoYW5nZSgpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNPbkNhbGVuZGFyQ2hh'@; put 'bmdlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzT25DYWxlbmRhckNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNlZERheUNoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c2VkRGF5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZjEodD0+dGhpcy5mb2N1c2VkRGF5PXQpKX1nZXQgcmVmcmVz'@; put 'aENhbGVuZGFyVmlldygpe3JldHVybiB0aGlzLl9yZWZyZXNoQ2FsZW5kYXJWaWV3LmFzT2JzZXJ2YWJsZSgpfW5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZCh0LHtlbWl0RXZlbnQ6cn09e2VtaXRFdmVudDohMH0pe2lmKHRoaXMuaXNSYW5nZVBpY2tlcil7Y29uc3R7c3RhcnREYXRlOmksZW5k'@; put 'RGF0ZTpvfT10O2kmJm8/KHRoaXMuc2V0U2VsZWN0ZWREYXkoaSxyKSx0aGlzLnNldFNlbGVjdGVkRW5kRGF5KG8scikpOihudWxsIT09byYmdGhpcy5zZXRTZWxlY3RlZEVuZERheShvLHIpLG51bGwhPT1pJiZ0aGlzLnNldFNlbGVjdGVkRGF5KGkscikpfWVsc2UgdGhpcy5zZXRTZWxlY3Rl'@; put 'ZERheSh0LHIpO3RoaXMuX3JlZnJlc2hDYWxlbmRhclZpZXcubmV4dCgpfWluaXRpYWxpemVDYWxlbmRhcigpe3RoaXMuZm9jdXNlZERheT1udWxsLHRoaXMuaW5pdGlhbGl6ZVRvZGF5c0RhdGUoKSx0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhcj10aGlzLnNlbGVjdGVkRGF5P25ldyBMMyh0aGlz'@; put 'LnNlbGVjdGVkRGF5LnllYXIsdGhpcy5zZWxlY3RlZERheS5tb250aCk6bmV3IEwzKHRoaXMudG9kYXkueWVhcix0aGlzLnRvZGF5Lm1vbnRoKX1jaGFuZ2VNb250aCh0KXt0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKG5ldyBMMyh0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci55ZWFyLHQpKX1j'@; put 'aGFuZ2VZZWFyKHQpe3RoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIobmV3IEwzKHQsdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIubW9udGgpKX1tb3ZlVG9OZXh0TW9udGgoKXt0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyLm5leHRNb250aCgpKX1tb3Zl'@; put 'VG9QcmV2aW91c01vbnRoKCl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcih0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5wcmV2aW91c01vbnRoKCkpfW1vdmVUb05leHRZZWFyKCl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcih0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5uZXh0WWVhcigpKX1t'@; put 'b3ZlVG9QcmV2aW91c1llYXIoKXt0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyLnByZXZpb3VzWWVhcigpKX1tb3ZlVG9DdXJyZW50TW9udGgoKXt0aGlzLmRpc3BsYXllZENhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcih0aGlzLnRvZGF5KXx8dGhpcy5z'@; put 'ZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgTDModGhpcy50b2RheS55ZWFyLHRoaXMudG9kYXkubW9udGgpKSx0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2UubmV4dCgpfW1vdmVUb1NwZWNpZmljTW9udGgodCl7dGhpcy5kaXNwbGF5ZWRDYWxlbmRhci5pc0RheUluQ2FsZW5kYXIodCl8fHRo'@; put 'aXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIobmV3IEwzKHQueWVhcix0Lm1vbnRoKSl9aW5jcmVtZW50Rm9jdXNEYXkodCl7dGhpcy5ob3ZlcmVkRGF5PXRoaXMuZm9jdXNlZERheT10aGlzLmZvY3VzZWREYXkuaW5jcmVtZW50QnkodCksdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIuaXNEYXlJbkNh'@; put 'bGVuZGFyKHRoaXMuZm9jdXNlZERheSk/dGhpcy5fZm9jdXNlZERheUNoYW5nZS5uZXh0KHRoaXMuZm9jdXNlZERheSk6dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgTDModGhpcy5mb2N1c2VkRGF5LnllYXIsdGhpcy5mb2N1c2VkRGF5Lm1vbnRoKSksdGhpcy5fZm9jdXNPbkNhbGVu'@; put 'ZGFyQ2hhbmdlLm5leHQoKX1yZXNldFNlbGVjdGVkRGF5KCl7dGhpcy5zZWxlY3RlZERheT10aGlzLnBlcnNpc3RlZERhdGUsdGhpcy5zZWxlY3RlZEVuZERheT10aGlzLnBlcnNpc3RlZEVuZERhdGV9Y29udmVydERhdGVUb0RheU1vZGVsKHQpe3JldHVybiBuZXcgRDModC5nZXRGdWxsWWVh'@; put 'cigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSl9c2V0U2VsZWN0ZWREYXkodCxyKXt0aGlzLnNlbGVjdGVkRGF5PXQsciYmdGhpcy5fc2VsZWN0ZWREYXlDaGFuZ2UubmV4dCh0KX1zZXRTZWxlY3RlZEVuZERheSh0LHIpe3RoaXMuc2VsZWN0ZWRFbmREYXk9dCxyJiZ0aGlzLl9zZWxlY3Rl'@; put 'ZEVuZERheUNoYW5nZS5uZXh0KHQpfXNldERpc3BsYXllZENhbGVuZGFyKHQpe3RoaXMuX2Rpc3BsYXllZENhbGVuZGFyLmlzRXF1YWwodCl8fCh0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhcj10LHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyQ2hhbmdlLm5leHQoKSl9aW5pdGlhbGl6ZVRvZGF5c0Rh'@; put 'dGUoKXt0aGlzLl90b2RheXNGdWxsRGF0ZT1uZXcgRGF0ZSx0aGlzLl90b2RheT1uZXcgRDModGhpcy5fdG9kYXlzRnVsbERhdGUuZ2V0RnVsbFllYXIoKSx0aGlzLl90b2RheXNGdWxsRGF0ZS5nZXRNb250aCgpLHRoaXMuX3RvZGF5c0Z1bGxEYXRlLmdldERhdGUoKSl9fXJldHVybiBuLlx1'@; put 'MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLFJ2PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLnBsYXRmb3JtSWQ9cn1mb2N1c0Nl'@; put 'bGwodCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5uZ1pvbmVJc1N0YWJsZUluQnJvd3NlcigpLnN1YnNjcmliZSgoKT0+e2NvbnN0IHI9dC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1t0YWJpbmRleD0iMCJdJyk7ciYmci5mb2N1cygpfSl9KX1mb2N1'@; put 'c0lucHV0KHQpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dGhpcy5uZ1pvbmVJc1N0YWJsZUluQnJvd3NlcigpLnN1YnNjcmliZSgoKT0+dC5mb2N1cygpKSl9ZWxlbWVudElzRm9jdXNlZCh0KXtyZXR1cm4gSGModGhpcy5wbGF0Zm9ybUlkKSYmZG9jdW1lbnQuYWN0aXZl'@; put 'RWxlbWVudD09PXR9bmdab25lSXNTdGFibGVJbkJyb3dzZXIoKXtyZXR1cm4gdGhpcy5fbmdab25lLm9uU3RhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodXYoKSxzdSgoKT0+SGModGhpcy5wbGF0Zm9ybUlkKSkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0'@; put 'fHxuKShvcihnYSksb3IobGQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxzNz0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlzYWJsZWREYXRlcz17bWluRGF0ZTpuZXcgRDMoMCwwLDEpLG1heERhdGU6bmV3IEQzKDk5'@; put 'OTksMTEsMzEpfSx0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0PSJkZC9NTS95Iix0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9ZVcsdGhpcy5kZWxpbWl0ZXJzPVsiLyIsIi8iXSx0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0PXQubG9jYWxlRGF0ZUZvcm1hdCx0aGlzLmluaXRpYWxpemVMb2Nh'@; put 'bGVEaXNwbGF5Rm9ybWF0KCl9Z2V0IHBsYWNlaG9sZGVyVGV4dCgpe2NvbnN0IHQ9dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0LmZvcm1hdDtyZXR1cm4gdFswXSt0aGlzLmRlbGltaXRlcnNbMF0rdFsxXSt0aGlzLmRlbGltaXRlcnNbMV0rdFsyXX1zZXRNaW5EYXRlKHQpe2lmKHQpe2NvbnN0'@; put 'W3IsaSxvXT10LnNwbGl0KCItIikubWFwKGE9PnBhcnNlSW50KGEsMTApKTt0aGlzLmRpc2FibGVkRGF0ZXMubWluRGF0ZT1uZXcgRDMocixpLTEsbyl9ZWxzZSB0aGlzLmRpc2FibGVkRGF0ZXMubWluRGF0ZT1uZXcgRDMoMCwwLDEpfXNldE1heERhdGUodCl7aWYodCl7Y29uc3RbcixpLG9d'@; put 'PXQuc3BsaXQoIi0iKS5tYXAoYT0+cGFyc2VJbnQoYSwxMCkpO3RoaXMuZGlzYWJsZWREYXRlcy5tYXhEYXRlPW5ldyBEMyhyLGktMSxvKX1lbHNlIHRoaXMuZGlzYWJsZWREYXRlcy5tYXhEYXRlPW5ldyBEMyg5OTk5LDExLDMxKX1zZXRSYW5nZU9wdGlvbnModCl7Y29uc3Qgcj10aGlzLnZh'@; put 'bGlkYXRlRGF0ZVJhbmdlT3B0aW9ucyh0KTt0aGlzLmRhdGVSYW5nZU9wdGlvbnM9cnx8W119Z2V0UmFuZ2VPcHRpb25zKCl7cmV0dXJuIHRoaXMuZGF0ZVJhbmdlT3B0aW9uc310b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcodCl7aWYodCl7aWYoaXNOYU4odC5nZXRUaW1lKCkpKXJldHVy'@; put 'biIiO2NvbnN0IHI9dC5nZXREYXRlKCksaT10LmdldE1vbnRoKCkrMSxvPXI+OT9yLnRvU3RyaW5nKCk6IjAiK3IsYT1pPjk/aS50b1N0cmluZygpOiIwIitpO3JldHVybiB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9PT1lVz9vK3RoaXMuZGVsaW1pdGVyc1swXSthK3RoaXMuZGVsaW1pdGVy'@; put 'c1sxXSt0LmdldEZ1bGxZZWFyKCk6dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PT09cGFlP2ErdGhpcy5kZWxpbWl0ZXJzWzBdK28rdGhpcy5kZWxpbWl0ZXJzWzFdK3QuZ2V0RnVsbFllYXIoKTp0LmdldEZ1bGxZZWFyKCkrdGhpcy5kZWxpbWl0ZXJzWzBdK2ErdGhpcy5kZWxpbWl0ZXJzWzFd'@; put 'K299cmV0dXJuIiJ9Z2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcodCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDtjb25zdCByPXQubWF0Y2goRl90KTtpZighcnx8MyE9PXIubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0W2ksbyxhXT1yO3JldHVybiB0aGlzLmxvY2Fs'@; put 'ZURpc3BsYXlGb3JtYXQ9PT1lVz90aGlzLnZhbGlkYXRlQW5kR2V0RGF0ZShhLG8saSk6dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PT09cGFlP3RoaXMudmFsaWRhdGVBbmRHZXREYXRlKGEsaSxvKTp0aGlzLnZhbGlkYXRlQW5kR2V0RGF0ZShpLG8sYSl9dmFsaWRhdGVEYXRlUmFuZ2VPcHRp'@; put 'b25zKHQpe2NvbnN0IHI9W107cmV0dXJuIHQ/LmZvckVhY2goaT0+ezIhPT1pPy52YWx1ZT8ubGVuZ3RofHwiW29iamVjdCBEYXRlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaT8udmFsdWVbMF0pfHwiW29iamVjdCBEYXRlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3Ry'@; put 'aW5nLmNhbGwoaT8udmFsdWVbMV0pfHxyLnB1c2goaSl9KSxyfWluaXRpYWxpemVMb2NhbGVEaXNwbGF5Rm9ybWF0KCl7Y29uc3QgdD10aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0LnRvTG9jYWxlTG93ZXJDYXNlKCk7dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PUxfdC50ZXN0KHQpP2VXOk9f'@; put 'dC50ZXN0KHQpP3BhZTpWX3QsdGhpcy5leHRyYWN0RGVsaW1pdGVycygpfWV4dHJhY3REZWxpbWl0ZXJzKCl7aWYodGhpcy5jbGRyTG9jYWxlRGF0ZUZvcm1hdCl7Y29uc3Qgcj10aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0LnJlcGxhY2UoSF90LCIiKS5zcGxpdChOX3QpO3ImJjQ9PT1yLmxl'@; put 'bmd0aD90aGlzLmRlbGltaXRlcnM9W3JbMV0sclsyXV06Y29uc29sZS5lcnJvcigiVW5leHBlY3RlZCBkYXRlIGZvcm1hdCByZWNlaXZlZC4gRGVsaW1pdGVycyBleHRyYWN0ZWQ6ICIscil9fWlzVmFsaWRNb250aCh0KXtyZXR1cm4gdD4tMSYmdDwxMn1pc1ZhbGlkRGF0ZSh0LHIsaSl7cmV0'@; put 'dXJuIGk+MCYmaTw9ZE1lKHQscil9dmFsaWRhdGVBbmRHZXREYXRlKHQscixpKXtjb25zdCBvPSt0LGE9K3ItMSxsPStpO2lmKCF0aGlzLmlzVmFsaWRNb250aChhKXx8IXRoaXMuaXNWYWxpZERhdGUobyxhLGwpKXJldHVybiBudWxsO2NvbnN0IHU9ZnVuY3Rpb24gVV90KG4pe2lmKG4+OTk5'@; put 'OXx8bj4xMDAmJm48OTk5fHxuPDEwKXJldHVybi0xO2lmKG4+OTk5KXJldHVybiBuO2NvbnN0IGU9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpO2xldCByPW4rMTAwKk1hdGguZmxvb3IoZS8xMDApO3JldHVybiByPmUrMjAmJihyLT0xMDApLHJ9KG8pO3JldHVybi0xIT09dT9uZXcgRGF0ZSh1'@; put 'LGEsbCk6bnVsbH19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoVkQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxiTT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5fdG91Y2hl'@; put 'ZENoYW5nZT1uZXcgTXIsdGhpcy5fZGlydHlDaGFuZ2U9bmV3IE1yfWdldCB0b3VjaGVkQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX3RvdWNoZWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGRpcnR5Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX2RpcnR5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfW1hcmtB'@; put 'c1RvdWNoZWQoKXt0aGlzLl90b3VjaGVkQ2hhbmdlLm5leHQoKX1tYXJrQXNEaXJ0eSgpe3RoaXMuX2RpcnR5Q2hhbmdlLm5leHQoKX1zZXREaXNhYmxlZCh0KXt0aGlzLmRpc2FibGVkPXR9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3'@; put 'NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGhNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscil7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPXQsdGhpcy5jb21tb25TdHJpbmdzPXIsdGhpcy5vblNlbGVjdERheT1uZXcgS3J9Z2V0IGRheVZp'@; put 'ZXcoKXtyZXR1cm4gdGhpcy5fZGF5Vmlld31zZXQgZGF5Vmlldyh0KXt0aGlzLl9kYXlWaWV3PXR9Z2V0IGRheVN0cmluZygpe3JldHVybiB0aGlzLmRheVZpZXcuaXNTZWxlY3RlZD90aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclNl'@; put 'bGVjdGVkTGFiZWwse0ZVTExfREFURTp0aGlzLl9kYXlWaWV3LmRheU1vZGVsLnRvRGF0ZVN0cmluZygpfSk6dGhpcy5fZGF5Vmlldy5kYXlNb2RlbC50b0RhdGVTdHJpbmcoKX1nZXQgaXNSYW5nZVN0YXJ0RGF5KCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1Jhbmdl'@; put 'UGlja2VyJiZ0aGlzLmRheVZpZXc/LmRheU1vZGVsPy50b0NvbXBhcmlzb25TdHJpbmcoKT09PXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheT8udG9Db21wYXJpc29uU3RyaW5nKCl9Z2V0IGlzUmFuZ2VFbmREYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25T'@; put 'ZXJ2aWNlLmlzUmFuZ2VQaWNrZXImJnRoaXMuZGF5Vmlldz8uZGF5TW9kZWw/LnRvQ29tcGFyaXNvblN0cmluZygpPT09dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5Py50b0NvbXBhcmlzb25TdHJpbmcoKX1ob3Zlckxpc3RlbmVyKCl7dGhpcy5kYXlWaWV3Lmlz'@; put 'RGlzYWJsZWR8fCh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaG92ZXJlZERheT10aGlzLmRheVZpZXcuZGF5TW9kZWwpfW9uRGF5Vmlld0ZvY3VzKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzZWREYXk9dGhpcy5kYXlWaWV3LmRheU1vZGVsfXNlbGVjdERheSgpe3Ro'@; put 'aXMuZGF5Vmlldy5pc0Rpc2FibGVkfHx0aGlzLm9uU2VsZWN0RGF5LmVtaXQodGhpcy5kYXlWaWV3LmRheU1vZGVsKX1pc0luUmFuZ2UoKXtyZXR1cm4hIXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyJiYodGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVj'@; put 'dGVkRGF5JiZ0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXk/dGhpcy5fZGF5Vmlldy5kYXlNb2RlbD8uaXNBZnRlcih0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkpJiZ0aGlzLl9kYXlWaWV3LmRheU1vZGVsPy5pc0JlZm9yZSh0aGlzLl9k'@; put 'YXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXkpOiEoIXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheXx8dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5KSYmdGhpcy5fZGF5Vmlldy5kYXlNb2RlbD8uaXNBZnRlcih0aGlzLl9k'@; put 'YXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkpJiZ0aGlzLl9kYXlWaWV3LmRheU1vZGVsPy5pc0JlZm9yZSh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaG92ZXJlZERheSwhMCkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShO'@; put 'cCksemUoaWwpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRheSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmd3QoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHIuaG92ZXJMaXN0ZW5lcigpfSksMiZ0JiZ3cigi'@; put 'ZGF5IiwhMCl9LGlucHV0czp7ZGF5VmlldzpbMCwiY2xyRGF5VmlldyIsImRheVZpZXciXX0sb3V0cHV0czp7b25TZWxlY3REYXk6InNlbGVjdERheSJ9LHN0YW5kYWxvbmU6ITEsZGVjbHM6Mix2YXJzOjE5LGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwxLCJkYXktYnRuIiwzLCJjbGljayIs'@; put 'ImZvY3VzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoSigwLCJidXR0b24iLDApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gci5zZWxlY3REYXkoKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gci5vbkRheVZpZXdGb2N1cygpfSksU2UoMSksdGUoKSksMiZ0JiYo'@; put 'd3IoImlzLXRvZGF5IixyLmRheVZpZXcuaXNUb2RheXNEYXRlKSgiaXMtZXhjbHVkZWQiLHIuZGF5Vmlldy5pc0V4Y2x1ZGVkKSgiaXMtZGlzYWJsZWQiLHIuZGF5Vmlldy5pc0Rpc2FibGVkKSgiaXMtc2VsZWN0ZWQiLHIuZGF5Vmlldy5pc1NlbGVjdGVkKSgiaW4tcmFuZ2UiLHIuaXNJblJh'@; put 'bmdlKCkpKCJpcy1zdGFydC1yYW5nZSIsci5pc1JhbmdlU3RhcnREYXkpKCJpcy1lbmQtcmFuZ2UiLHIuaXNSYW5nZUVuZERheSksUnIoInRhYmluZGV4IixyLmRheVZpZXcudGFiSW5kZXgpKCJhcmlhLWN1cnJlbnQiLHIuZGF5Vmlldy5pc1RvZGF5c0RhdGU/ImRhdGUiOiJmYWxzZSIpKCJh'@; put 'cmlhLWxhYmVsIixyLmRheVN0cmluZykoImFyaWEtc2VsZWN0ZWQiLHIuZGF5Vmlldy5pc1NlbGVjdGVkKSxpZSgpLFNyKCIgIixyLmRheVZpZXcuZGF5TW9kZWwuZGF0ZSwiICIpKX0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksZk1lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGks'@; put 'byxhLGwsdSl7dGhpcy5fbG9jYWxlSGVscGVyU2VydmljZT10LHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZT1yLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2U9aSx0aGlzLl9kYXRlSU9TZXJ2aWNlPW8sdGhpcy5fZWxSZWY9YSx0aGlzLl9kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPWws'@; put 'dGhpcy5fdG9nZ2xlU2VydmljZT11LHRoaXMuX3N1YnM9W10sdGhpcy5nZW5lcmF0ZUNhbGVuZGFyVmlldygpLHRoaXMuaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKX1nZXQgbG9jYWxlRGF5cygpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZURheXN9Z2V0IGNhbGVu'@; put 'ZGFyKCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhcn1nZXQgc2VsZWN0ZWREYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5fWdldCBzZWxlY3RlZEVuZERheSgpe3JldHVybiB0aGlzLl9kYXRlTmF2'@; put 'aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXl9Z2V0IGZvY3VzZWREYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzZWREYXl9Z2V0IHRvZGF5KCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS50b2RheX1uZ0FmdGVyVmlld0luaXQoKXt0'@; put 'aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZil9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzLmZvckVhY2godD0+dC51bnN1YnNjcmliZSgpKX1vbktleURvd24odCl7aWYodCYmdGhpcy5mb2N1c2VkRGF5KXN3aXRjaCh0bSh0LmtleSkpe2Nhc2UgTW8u'@; put 'QXJyb3dVcDp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmluY3JlbWVudEZvY3VzRGF5KC03KTticmVhaztjYXNlIE1vLkFycm93RG93bjp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmluY3JlbWVudEZvY3VzRGF5'@; put 'KDcpO2JyZWFrO2Nhc2UgTW8uQXJyb3dMZWZ0OnQucHJldmVudERlZmF1bHQoKSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5jcmVtZW50Rm9jdXNEYXkoLTEpO2JyZWFrO2Nhc2UgTW8uQXJyb3dSaWdodDp0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2'@; put 'aWNlLmluY3JlbWVudEZvY3VzRGF5KDEpfX1zZXRTZWxlY3RlZERheSh0KXtjb25zdCByPXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5oYXNBY3Rpb25CdXR0b25zLGk9dGhpcy51cGRhdGVDYWxlbmRhclZpZXdNb2RhbCh0KTt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uubm90aWZ5'@; put 'U2VsZWN0ZWREYXlDaGFuZ2VkKGkse2VtaXRFdmVudDohcn0pLHJ8fCh0aGlzLl9kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc0RpcnR5KCksdGhpcy52YWxpZGF0ZUFuZENsb3NlRGF0ZVBpY2tlcigpKX1pbml0aWFsaXplU3Vic2NyaXB0aW9ucygpe3RoaXMuX3N1YnMucHVzaCh0aGlz'@; put 'Ll9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5nZW5lcmF0ZUNhbGVuZGFyVmlldygpfSkpLHRoaXMuX3N1YnMucHVzaCh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZm9jdXNlZERheUNoYW5nZS5zdWJzY3JpYmUo'@; put 'dD0+e3RoaXMuY2FsZW5kYXJWaWV3TW9kZWwudXBkYXRlRm9jdXNhYmxlRGF5KHQpfSkpLHRoaXMuX3N1YnMucHVzaCh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZm9jdXNPbkNhbGVuZGFyQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9j'@; put 'dXNDZWxsKHRoaXMuX2VsUmVmKX0pKSx0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnJlZnJlc2hDYWxlbmRhclZpZXcuc3Vic2NyaWJlKCgpPT57dGhpcy5yZWZyZXNoQ2FsZW5kYXJWaWV3TW9kYWwoKX0pKX12YWxpZGF0ZUFuZENsb3NlRGF0ZVBpY2tlcigp'@; put 'eyh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciYmdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5JiZ0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXl8fCF0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5n'@; put 'ZVBpY2tlciYmdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5KSYmKHRoaXMuX3RvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9dXBkYXRlQ2FsZW5kYXJWaWV3TW9kYWwodCl7Y29uc3Qgcj10aGlzLmNhbGVuZGFyVmlld01vZGVsLnNlbGVjdGVkRGF5fHxudWxsLGk9dGhpcy5f'@; put 'ZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXI7bGV0IG89dGhpcy5jYWxlbmRhclZpZXdNb2RlbC5zZWxlY3RlZEVuZERheXx8bnVsbDtyZXR1cm4gaT8hcnx8ciYmb3x8ciYmdD8uaXNCZWZvcmUocik/KHRoaXMuY2FsZW5kYXJWaWV3TW9kZWwudXBkYXRlU2VsZWN0ZWREYXko'@; put 'dCksbyYmKG89dm9pZCAwLHRoaXMuY2FsZW5kYXJWaWV3TW9kZWwudXBkYXRlU2VsZWN0ZWRFbmREYXkobykpKTp0aGlzLmNhbGVuZGFyVmlld01vZGVsLnVwZGF0ZVNlbGVjdGVkRW5kRGF5KHQpOnRoaXMuY2FsZW5kYXJWaWV3TW9kZWwudXBkYXRlU2VsZWN0ZWREYXkodCksaT97c3RhcnRE'@; put 'YXRlOnRoaXMuY2FsZW5kYXJWaWV3TW9kZWwuc2VsZWN0ZWREYXksZW5kRGF0ZTp0aGlzLmNhbGVuZGFyVmlld01vZGVsLnNlbGVjdGVkRW5kRGF5fTp0aGlzLmNhbGVuZGFyVmlld01vZGVsLnNlbGVjdGVkRGF5fXJlZnJlc2hDYWxlbmRhclZpZXdNb2RhbCgpe3RoaXMuY2FsZW5kYXJWaWV3'@; put 'TW9kZWwudXBkYXRlU2VsZWN0ZWREYXkodGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5KSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciYmdGhpcy5jYWxlbmRhclZpZXdNb2RlbC51cGRhdGVTZWxlY3RlZEVuZERheSh0aGlzLl9kYXRlTmF2'@; put 'aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXkpfWdlbmVyYXRlQ2FsZW5kYXJWaWV3KCl7dGhpcy5jYWxlbmRhclZpZXdNb2RlbD1uZXcgWV90KHRoaXMuY2FsZW5kYXIsdGhpcy5zZWxlY3RlZERheSx0aGlzLnNlbGVjdGVkRW5kRGF5LHRoaXMuZm9jdXNlZERheSx0aGlzLnRvZGF5LHRo'@; put 'aXMuX2xvY2FsZUhlbHBlclNlcnZpY2UuZmlyc3REYXlPZldlZWssdGhpcy5fZGF0ZUlPU2VydmljZS5kaXNhYmxlZERhdGVzKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoVkQpLHplKE5wKSx6ZShSdiksemUoczcpLHplKG5vKSx6ZShiTSks'@; put 'emUoS3UpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWNhbGVuZGFyIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmd3QoImtleWRvd24iLGZ1bmN0aW9uKG8pe3JldHVybiByLm9uS2V5RG93bihvKX0pfSxzdGFuZGFsb25lOiExLGRlY2xzOjQs'@; put 'dmFyczoyLGNvbnN0czpbWyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJjYWxlbmRhci10YWJsZSJdLFsxLCJjYWxlbmRhci1yb3ciLCJ3ZWVrZGF5cyJdLFsiY2xhc3MiLCJjYWxlbmRhci1jZWxsIHdlZWtkYXkiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJjYWxlbmRhci1yb3ci'@; put 'LDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjYWxlbmRhci1jZWxsIiwid2Vla2RheSJdLFsxLCJjYWxlbmRhci1yb3ciXSxbImNsYXNzIiwiY2FsZW5kYXItY2VsbCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNhbGVuZGFyLWNlbGwiXSxbMywic2VsZWN0RGF5IiwiY2xyRGF5VmlldyJd'@; put 'XSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKEooMCwidGFibGUiLDApKDEsInRyIiwxKSxZbigyLGU2dCwzLDIsInRoIiwyKSx0ZSgpLFluKDMsbjZ0LDIsMSwidHIiLDMpLHRlKCkpLDImdCYmKGllKDIpLHJ0KCJuZ0Zvck9mIixyLmxvY2FsZURheXMpLGllKCkscnQoIm5nRm9yT2Yi'@; put 'LHIuY2FsZW5kYXJWaWV3TW9kZWwuY2FsZW5kYXJWaWV3KSl9LGRlcGVuZGVuY2llczpbUmYsaE1lXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSx0Vz0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvY3VtZW50PXQsdGhpcy5faXNVc2VyQWdlbnRNb2JpbGU9ITEsdCYmKHRo'@; put 'aXMuX2lzVXNlckFnZW50TW9iaWxlPVBfdC50ZXN0KHQuZGVmYXVsdFZpZXcubmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5faW5uZXJXaWR0aD10LmRlZmF1bHRWaWV3LmlubmVyV2lkdGgpfWdldCBpc0VuYWJsZWQoKXtyZXR1cm4hKHRoaXMuX2RvY3VtZW50JiZ0aGlzLl9pbm5lcldpZHRo'@; put 'PDc2OCYmdGhpcy5faXNVc2VyQWdlbnRNb2JpbGUpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKShvcihUbCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLGdhZT0oKCk9PntjbGFzcyBuIGV4dGVu'@; put 'ZHMgWWJ7Y29uc3RydWN0b3IodCxyLGksbyxhLGwsdSxnLEUsTyxaLGVlLHZlKXtzdXBlcih0LG5XLHIsYSxvLGkpLHRoaXMuZWw9aSx0aGlzLnJlbmRlcmVyPW8sdGhpcy5jb250cm9sPWEsdGhpcy5jb250YWluZXI9bCx0aGlzLmRhdGVJT1NlcnZpY2U9dSx0aGlzLmRhdGVOYXZpZ2F0aW9u'@; put 'U2VydmljZT1nLHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlPUUsdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPU8sdGhpcy5wbGF0Zm9ybUlkPVosdGhpcy5mb2N1c1NlcnZpY2U9ZWUsdGhpcy5kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPXZlLHRoaXMuaW5kZXg9MX1nZXQgZGlzYWJs'@; put 'ZWQoKXtyZXR1cm4gdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlP3RoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5kaXNhYmxlZHx8ISF0aGlzLmNvbnRyb2w/LmNvbnRyb2w/LmRpc2FibGVkOm51bGx9c2V0IGRpc2FibGVkKHQpe3RoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZSYmdGhp'@; put 'cy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLnNldERpc2FibGVkKHA0KHQpKX1nZXQgcGxhY2Vob2xkZXJUZXh0KCl7cmV0dXJuIHRoaXMucGxhY2Vob2xkZXI/dGhpcy5wbGFjZWhvbGRlcjp0aGlzLmRhdGVJT1NlcnZpY2UucGxhY2Vob2xkZXJUZXh0fWdldCBpbnB1dFR5cGUoKXtyZXR1cm4g'@; put 'SGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKT8iZGF0ZSI6InRleHQifW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLnBvcHVsYXRlU2VydmljZXNGcm9tQ29udGFpbmVyQ29tcG9uZW50KCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhp'@; put 'cy5saXN0ZW5Gb3JVc2VyU2VsZWN0ZWREYXlDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JDb250cm9sVmFsdWVDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JUb3VjaENoYW5nZXMoKSx0aGlzLmxpc3RlbkZvckRpcnR5Q2hhbmdlcygpLHRoaXMubGlzdGVuRm9ySW5wdXRSZWZvY3VzKCkpfW5nQWZ0'@; put 'ZXJWaWV3SW5pdCgpe3RoaXMucHJvY2Vzc0luaXRpYWxJbnB1dHMoKX1zZXRGb2N1c1N0YXRlcygpe3RoaXMuc2V0Rm9jdXMoITApfXRyaWdnZXJWYWxpZGF0aW9uKCl7c3VwZXIudHJpZ2dlclZhbGlkYXRpb24oKSx0aGlzLnNldEZvY3VzKCExKX1vblZhbHVlQ2hhbmdlKHQpe2NvbnN0IHI9'@; put 'dGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKHQudmFsdWUpO2lmKHRoaXMudXNpbmdDbGFyaXR5RGF0ZXBpY2tlcigpJiZyKXRoaXMudXBkYXRlRGF0ZShyLCEwKTtlbHNlIGlmKHRoaXMudXNpbmdOYXRpdmVEYXRlcGlja2VyKCkpe2NvbnN0W2ksbyxhXT10'@; put 'LnZhbHVlLnNwbGl0KCItIik7dGhpcy51cGRhdGVEYXRlKG5ldyBEYXRlKCtpLCtvLTEsK2EpLCEwKX1lbHNlIHRoaXMuZW1pdERhdGVPdXRwdXQobnVsbCl9ZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCl7cmV0dXJuISF0aGlzLmNvbnRyb2x9c2V0RGF0ZSh0KXsic3RyaW5nIj09dHlwZW9m'@; put 'IHQmJih0PW5ldyBEYXRlKHQpKSx0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZSE9PXQmJnRoaXMudXBkYXRlRGF0ZSh0KSx0aGlzLmluaXRpYWxDbHJEYXRlSW5wdXRWYWx1ZXx8KHRoaXMuaW5pdGlhbENsckRhdGVJbnB1dFZhbHVlPXQpfXVzaW5nQ2xhcml0eURhdGVwaWNrZXIoKXtyZXR1cm4g'@; put 'dGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UuaXNFbmFibGVkfXVzaW5nTmF0aXZlRGF0ZXBpY2tlcigpe3JldHVybiF0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZS5pc0VuYWJsZWR9c2V0Rm9jdXModCl7dGhpcy5mb2N1c1NlcnZpY2UmJih0aGlzLmZvY3VzU2VydmljZS5mb2N1'@; put 'c2VkPXQpfXBvcHVsYXRlU2VydmljZXNGcm9tQ29udGFpbmVyQ29tcG9uZW50KCl7dGhpcy5jb250YWluZXJ8fCh0aGlzLmRhdGVJT1NlcnZpY2U9dGhpcy5nZXRQcm92aWRlckZyb21Db250YWluZXIoczcpLHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9t'@; put 'Q29udGFpbmVyKE5wKSx0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcih0VyksdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKGJNKSl9cHJvY2Vzc0luaXRpYWxJbnB1dHMoKXt0'@; put 'aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpP3RoaXMudXBkYXRlRGF0ZSh0aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcodGhpcy5jb250cm9sLnZhbHVlKSk6dGhpcy51cGRhdGVEYXRlKHRoaXMuaW5pdGlhbENsckRhdGVJbnB1dFZhbHVlKX11cGRh'@; put 'dGVEYXRlKHQscj0hMSl7Y29uc3QgaT10aGlzLmdldFZhbGlkRGF0ZVZhbHVlRnJvbURhdGUodCk7aWYocj90aGlzLmVtaXREYXRlT3V0cHV0KGkpOnRoaXMucHJldmlvdXNEYXRlQ2hhbmdlPWksdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Upe2NvbnN0IG89aT9uZXcgRDMoaS5nZXRGdWxs'@; put 'WWVhcigpLGkuZ2V0TW9udGgoKSxpLmdldERhdGUoKSk6bnVsbDt0aGlzLnVwZGF0ZURheU1vZGVsKG8pfXRoaXMudXBkYXRlSW5wdXQoaSl9dXBkYXRlSW5wdXQodCl7aWYodCl7Y29uc3Qgcj10aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHQpO3RoaXMu'@; put 'dXNpbmdOYXRpdmVEYXRlcGlja2VyKCk/KHQuc2V0TWludXRlcyh0LmdldE1pbnV0ZXMoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpLHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ2YWx1ZUFzRGF0ZSIsdCkpOnRoaXMuZGF0ZXBpY2tlckhhc0Zvcm1D'@; put 'b250cm9sKCkmJnIhPT10aGlzLmNvbnRyb2wudmFsdWU/dGhpcy5jb250cm9sLmNvbnRyb2wuc2V0VmFsdWUocik6dGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixyKSx0aGlzLnZhbGlkYXRlRGF0ZVJhbmdlKCl9ZWxzZSB0aGlzLnJlbmRl'@; put 'cmVyLnNldFByb3BlcnR5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwidmFsdWUiLCIiKX1nZXRWYWxpZERhdGVWYWx1ZUZyb21EYXRlKHQpe2lmKHRoaXMuZGF0ZUlPU2VydmljZSl7Y29uc3Qgcj10aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHQpO3JldHVy'@; put 'biB0aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcocil9cmV0dXJuIG51bGx9ZW1pdERhdGVPdXRwdXQodCl7IWZ1bmN0aW9uIHpfdChuLGUpe3JldHVybiBuIGluc3RhbmNlb2YgRGF0ZSYmZSBpbnN0YW5jZW9mIERhdGUmJm4uZ2V0RnVsbFllYXIoKT09PWUu'@; put 'Z2V0RnVsbFllYXIoKSYmbi5nZXRNb250aCgpPT09ZS5nZXRNb250aCgpJiZuLmdldERhdGUoKT09PWUuZ2V0RGF0ZSgpfSh0LHRoaXMucHJldmlvdXNEYXRlQ2hhbmdlKT8odGhpcy5kYXRlQ2hhbmdlLmVtaXQodCksdGhpcy5wcmV2aW91c0RhdGVDaGFuZ2U9dCk6IXQmJnRoaXMucHJldmlv'@; put 'dXNEYXRlQ2hhbmdlJiYodGhpcy5kYXRlQ2hhbmdlLmVtaXQobnVsbCksdGhpcy5wcmV2aW91c0RhdGVDaGFuZ2U9bnVsbCl9bGlzdGVuRm9yQ29udHJvbFZhbHVlQ2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpP3RoaXMuY29udHJvbC52YWx1ZUNoYW5n'@; put 'ZXMucGlwZShzdSgoKT0+IXRoaXMuZGF0ZXBpY2tlckZvY3VzU2VydmljZS5lbGVtZW50SXNGb2N1c2VkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkpKS5zdWJzY3JpYmUodD0+dGhpcy51cGRhdGVEYXRlKHRoaXMuZGF0ZUlPU2VydmljZS5nZXREYXRlVmFsdWVGcm9tRGF0ZVN0cmluZyh0KSkp'@; put 'Om51bGx9bGlzdGVuRm9yVXNlclNlbGVjdGVkRGF5Q2hhbmdlcygpe3JldHVybiB0aGlzLnVzZXJTZWxlY3RlZERheUNoYW5nZS5zdWJzY3JpYmUodD0+dGhpcy51cGRhdGVEYXRlKHQ/LnRvRGF0ZSgpLCEwKSl9bGlzdGVuRm9yVG91Y2hDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0ZUZvcm1D'@; put 'b250cm9sU2VydmljZS50b3VjaGVkQ2hhbmdlLnBpcGUoc3UoKCk9PnRoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCkpKS5zdWJzY3JpYmUoKCk9PnRoaXMuY29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKSl9bGlzdGVuRm9yRGlydHlDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0'@; put 'ZUZvcm1Db250cm9sU2VydmljZS5kaXJ0eUNoYW5nZS5waXBlKHN1KCgpPT50aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpKSkuc3Vic2NyaWJlKCgpPT50aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNEaXJ0eSgpKX1saXN0ZW5Gb3JJbnB1dFJlZm9jdXMoKXtyZXR1cm4gdGhpcy5k'@; put 'YXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlDaGFuZ2UucGlwZShzdSh0PT4hIXQmJiF0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyKSkuc3Vic2NyaWJlKCgpPT50aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNJbnB1dCh0aGlzLmVsLm5hdGl2'@; put 'ZUVsZW1lbnQpKX12YWxpZGF0ZURhdGVSYW5nZSgpe2lmKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXIpe2NvbnN0IHQ9dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPy5jb250cm9sLHI9dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPy5hZGRpdGlvbmFsQ29udHJvbHM7dGhpcy5k'@; put 'YXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LmlzQmVmb3JlKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5LCEwKSYmKHQ/Lmhhc0Vycm9yKCJyYW5nZSIpfHxyPy5zb21lKG89Pm8uaGFzRXJyb3IoInJhbmdlIikpKSYmKHQuY29udHJvbD8udXBkYXRl'@; put 'VmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksci5mb3JFYWNoKG89PntvPy5jb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pKX19fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKERzKSx6ZShNbCks'@; put 'emUobm8pLHplKE50KSx6ZShWMiwxMCksemUoVW8oKCk9Pm5XKSw4KSx6ZShzNyw4KSx6ZShOcCw4KSx6ZSh0Vyw4KSx6ZShiTSw4KSx6ZShsZCksemUodk0sOCksemUoUnYpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEm'@; put 'dCYmd3QoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiByLnNldEZvY3VzU3RhdGVzKCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gci50cmlnZ2VyVmFsaWRhdGlvbigpfSkoImNoYW5nZSIsZnVuY3Rpb24obyl7cmV0dXJuIHIub25WYWx1ZUNoYW5nZShvLnRhcmdldCl9KSwyJnQmJihP'@; put 'NSgiZGlzYWJsZWQiLHIuZGlzYWJsZWQpLFJyKCJwbGFjZWhvbGRlciIsci5wbGFjZWhvbGRlclRleHQpKCJ0eXBlIixyLmlucHV0VHlwZSkpfSxpbnB1dHM6e3BsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9d'@; put 'fSksbn0pKCkscE1lPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBnYWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuZGF0ZUNoYW5nZT1uZXcgS3IoITEpLHRoaXMuaW5wdXRXaWR0aD0xM31zZXQgZGF0ZSh0KXt0aGlzLnNldERhdGUodCl9Z2V0IGlucHV0U2l6ZSgpe3Jl'@; put 'dHVybiB0aGlzLmlucHV0V2lkdGh9Z2V0IHVzZXJTZWxlY3RlZERheUNoYW5nZSgpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZEVuZERheUNoYW5nZX10cmlnZ2VyQ29udHJvbElucHV0VmFsaWRhdGlvbigpe3RoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9s'@; put 'KCkmJih0aGlzLmNvbnRyb2wuY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5jb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh0aGlzLmNvbnRyb2wuY29udHJvbC5lcnJvcnMpKX11cGRhdGVEYXlNb2RlbCh0KXt0aGlzLmRhdGVOYXZpZ2F0aW9u'@; put 'U2VydmljZS5wZXJzaXN0ZWRFbmREYXRlPXRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5PXR9fXJldHVybiBuLlx1MDI3NWZhYz0oKCk9PntsZXQgZTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuKGV8fChlPXdhKG4pKSkocnx8bil9fSkoKSxuLlx1MDI3NWRpcj0k'@; put 'cih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJjbHJFbmREYXRlIiwiIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiYoUnIoInNpemUiLHIuaW5wdXRTaXplKSx3cigiY2xyLWlucHV0IiwhMCkpfSxpbnB1dHM6e2lucHV0V2lkdGg6ImlucHV0V2lkdGgiLGRh'@; put 'dGU6WzAsImNsckVuZERhdGUiLCJkYXRlIl19LG91dHB1dHM6e2RhdGVDaGFuZ2U6ImNsckVuZERhdGVDaGFuZ2UifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbUnZdKSxGb119KSxufSkoKSxtYWU9KCgpPT57Y2xhc3MgbiBleHRlbmRzIGdhZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4u'@; put 'LmFyZ3VtZW50cyksdGhpcy5kYXRlQ2hhbmdlPW5ldyBLcighMSl9c2V0IGRhdGUodCl7dGhpcy5zZXREYXRlKHQpfXNldCBtaW4odCl7dGhpcy5kYXRlSU9TZXJ2aWNlLnNldE1pbkRhdGUodCksdGhpcy50cmlnZ2VyQ29udHJvbFZhbGlkYXRpb24oKX1zZXQgbWF4KHQpe3RoaXMuZGF0ZUlP'@; put 'U2VydmljZS5zZXRNYXhEYXRlKHQpLHRoaXMudHJpZ2dlckNvbnRyb2xWYWxpZGF0aW9uKCl9Z2V0IHVzZXJTZWxlY3RlZERheUNoYW5nZSgpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheUNoYW5nZX11cGRhdGVEYXlNb2RlbCh0KXt0aGlzLmRhdGVOYXZp'@; put 'Z2F0aW9uU2VydmljZS5wZXJzaXN0ZWREYXRlPXRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5PXR9dHJpZ2dlckNvbnRyb2xWYWxpZGF0aW9uKCl7dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSYmKHRoaXMuY29udHJvbC5jb250cm9sPy51cGRhdGVWYWx1ZUFu'@; put 'ZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmNvbnRyb2wuY29udHJvbD8uc2V0RXJyb3JzKHRoaXMuY29udHJvbC5jb250cm9sLmVycm9ycykpfX1yZXR1cm4gbi5cdTAyNzVmYWM9KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShuKSkpKHJ8fG4p'@; put 'fX0pKCksbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyRGF0ZSIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImNsci1pbnB1dCIsITApfSxpbnB1dHM6e2RhdGU6WzAsImNsckRhdGUiLCJkYXRlIl0sbWluOiJtaW4i'@; put 'LG1heDoibWF4In0sb3V0cHV0czp7ZGF0ZUNoYW5nZToiY2xyRGF0ZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtSdl0pLEZvXX0pLG59KSgpLGdNZT0oKCk9PntjbGFzcyBuIGV4dGVuZHMgZ2Fle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRh'@; put 'dGVDaGFuZ2U9bmV3IEtyKCExKSx0aGlzLmlucHV0V2lkdGg9MTN9c2V0IGRhdGUodCl7dGhpcy5zZXREYXRlKHQpfWdldCBpbnB1dFNpemUoKXtyZXR1cm4gdGhpcy5pbnB1dFdpZHRofWdldCB1c2VyU2VsZWN0ZWREYXlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZp'@; put 'Y2Uuc2VsZWN0ZWREYXlDaGFuZ2V9dHJpZ2dlckNvbnRyb2xJbnB1dFZhbGlkYXRpb24oKXt0aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpJiYodGhpcy5jb250cm9sLmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pLHRoaXMuY29udHJvbC5jb250'@; put 'cm9sPy5zZXRFcnJvcnModGhpcy5jb250cm9sLmNvbnRyb2wuZXJyb3JzKSl9dXBkYXRlRGF5TW9kZWwodCl7dGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UucGVyc2lzdGVkRGF0ZT10aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheT10fX1yZXR1cm4gbi5cdTAyNzVmYWM9'@; put 'KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShuKSkpKHJ8fG4pfX0pKCksbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyU3RhcnREYXRlIiwiIl1dLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiYo'@; put 'UnIoInNpemUiLHIuaW5wdXRTaXplKSxPMigidGV4dC1hbGlnbiIsInJpZ2h0Iiksd3IoImNsci1pbnB1dCIsITApKX0saW5wdXRzOntpbnB1dFdpZHRoOiJpbnB1dFdpZHRoIixkYXRlOlswLCJjbHJTdGFydERhdGUiLCJkYXRlIl19LG91dHB1dHM6e2RhdGVDaGFuZ2U6ImNsclN0YXJ0RGF0'@; put 'ZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtSdl0pLEZvXX0pLG59KSgpLHdNPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLnBvc2l0aW9uPUEzWyJib3R0b20tbGVmdCJdLHRoaXMuX2N1cnJlbnRWaWV3PSJEQVlWSUVXIn1nZXQgaXNEYXlWaWV3KCl7cmV0'@; put 'dXJuIkRBWVZJRVciPT09dGhpcy5fY3VycmVudFZpZXd9Z2V0IGlzWWVhclZpZXcoKXtyZXR1cm4iWUVBUlZJRVciPT09dGhpcy5fY3VycmVudFZpZXd9Z2V0IGlzTW9udGhWaWV3KCl7cmV0dXJuIk1PTlRIVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31jaGFuZ2VUb01vbnRoVmlldygpe3Ro'@; put 'aXMuX2N1cnJlbnRWaWV3PSJNT05USFZJRVcifWNoYW5nZVRvWWVhclZpZXcoKXt0aGlzLl9jdXJyZW50Vmlldz0iWUVBUlZJRVcifWNoYW5nZVRvRGF5Vmlldygpe3RoaXMuX2N1cnJlbnRWaWV3PSJEQVlWSUVXIn19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXco'@; put 'dHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCksbU1lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyxhLGwpe3RoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2U9dCx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2U9cix0aGlz'@; put 'Ll9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPWksdGhpcy5fZWxSZWY9byx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2U9YSx0aGlzLmNvbW1vblN0cmluZ3M9bCx0aGlzLl9mb2N1c2VkTW9udGhJbmRleD10aGlzLmNhbGVuZGFyTW9udGhJbmRleH1nZXQgbW9udGhOYW1lcygpe3JldHVybiB0aGlz'@; put 'Ll9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc1dpZGV9Z2V0IGNhbGVuZGFyTW9udGhJbmRleCgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIubW9udGh9Z2V0IGNhbGVuZGFyRW5kTW9udGhJbmRleCgpe3JldHVybiB0aGlzLl9k'@; put 'YXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXk/Lm1vbnRofWdldCB5ZWFyQXR0clN0cmluZygpe3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclNlbGVjdFllYXJUZXh0LHtDQUxFTkRBUl9ZRUFSOnRoaXMu'@; put 'Y2FsZW5kYXJZZWFyLnRvU3RyaW5nKCl9KX1nZXQgY2FsZW5kYXJZZWFyKCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhci55ZWFyfWdldCBjdXJyZW50Q2FsZW5kYXJZZWFyKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpfWdldCBj'@; put 'dXJyZW50Q2FsZW5kYXJNb250aCgpe3JldHVybihuZXcgRGF0ZSkuZ2V0TW9udGgoKX1nZXRJc1JhbmdlU3RhcnRNb250aCh0KXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXImJnRoaXMuY2FsZW5kYXJZZWFyPT09dGhpcy5fZGF0ZU5hdmlnYXRpb25T'@; put 'ZXJ2aWNlLnNlbGVjdGVkRGF5Py55ZWFyJiZ0PT09dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Py5tb250aH1nZXRJc1JhbmdlRW5kTW9udGgodCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyJiZ0aGlzLmNhbGVuZGFyWWVh'@; put 'cj09PXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZEVuZERheT8ueWVhciYmdD09PXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZEVuZERheT8ubW9udGh9Y2hhbmdlVG9ZZWFyVmlldygpe3RoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb1llYXJW'@; put 'aWV3KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfW9uS2V5RG93bih0KXtpZih0KXtjb25zdCByPXRtKHQua2V5KTtyPT09TW8uQXJyb3dVcCYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg+MT8odC5wcmV2ZW50'@; put 'RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4LT0yLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKSk6cj09PU1vLkFycm93RG93biYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg8MTA/KHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1'@; put 'c2VkTW9udGhJbmRleCs9Mix0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZikpOnI9PT1Nby5BcnJvd1JpZ2h0JiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleDwxMT8odC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4KyssdGhp'@; put 'cy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpyPT09TW8uQXJyb3dMZWZ0JiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleD4wJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4LS0sdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2Vy'@; put 'dmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKX19aXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Py55ZWFyPT09dGhpcy5jYWxlbmRhclllYXImJnQ9PT10aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/Lm1v'@; put 'bnRofHx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXk/LnllYXI9PT10aGlzLmNhbGVuZGFyWWVhciYmdD09PXRoaXMuY2FsZW5kYXJFbmRNb250aEluZGV4fW9uSG92ZXIodCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmhvdmVyZWRNb250aD10fWNoYW5n'@; put 'ZU1vbnRoKHQpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5jaGFuZ2VNb250aCh0KSx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9EYXlWaWV3KCl9Z2V0VGFiSW5kZXgodCl7cmV0dXJuIHQ9PT10aGlzLl9mb2N1c2VkTW9udGhJbmRleD8wOi0xfW5leHRZZWFyKCl7dGhp'@; put 'cy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb05leHRZZWFyKCl9cHJldmlvdXNZZWFyKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb1ByZXZpb3VzWWVhcigpfWN1cnJlbnRZZWFyKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb0N1cnJlbnRNb250'@; put 'aCgpfWlzSW5SYW5nZSh0KXtyZXR1cm4hIXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyJiYodGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5JiZ0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXk/dGhpcy5jYWxlbmRh'@; put 'clllYXI9PT10aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkueWVhciYmdD50aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkubW9udGgmJnRoaXMuY2FsZW5kYXJZZWFyPT09dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5'@; put 'LnllYXImJnQ8dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5Lm1vbnRofHx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkueWVhciE9PXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZEVuZERheS55ZWFyJiZ0aGlzLmNhbGVu'@; put 'ZGFyWWVhcj09PXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheS55ZWFyJiZ0PnRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheS5tb250aHx8dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5LnllYXIhPT10aGlzLl9kYXRlTmF2'@; put 'aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXkueWVhciYmdGhpcy5jYWxlbmRhclllYXI9PT10aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXkueWVhciYmdDx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXkubW9udGh8fHRoaXMuY2Fs'@; put 'ZW5kYXJZZWFyPnRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheS55ZWFyJiZ0aGlzLmNhbGVuZGFyWWVhcjx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXkueWVhcjohKCF0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXl8'@; put 'fHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZEVuZERheSkmJih0aGlzLmNhbGVuZGFyWWVhcj09PXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheS55ZWFyJiZ0PnRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheS5tb250aCYmdDx0'@; put 'aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaG92ZXJlZE1vbnRofHx0aGlzLmNhbGVuZGFyWWVhcj50aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkueWVhciYmdDx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaG92ZXJlZE1vbnRoKSl9fXJldHVybiBuLlx1MDI3'@; put 'NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKFZEKSx6ZShOcCksemUoUnYpLHplKG5vKSx6ZSh3TSksemUoaWwpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLW1vbnRocGlja2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJhcHBsaWNhdGlvbiJd'@; put 'LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgia2V5ZG93biIsZnVuY3Rpb24obyl7cmV0dXJuIHIub25LZXlEb3duKG8pfSksMiZ0JiZ3cigibW9udGhwaWNrZXIiLCEwKX0sc3RhbmRhbG9uZTohMSxkZWNsczoxMyx2YXJzOjEwLGNvbnN0czpbWzEsImNh'@; put 'bGVuZGFyLWhlYWRlciIsImluLW1vbnRocGlja2VyIl0sWzEsInllYXItdmlldy1zd2l0Y2hlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwieWVhcnBpY2tlci10cmlnZ2VyIiwzLCJjbGljayJdLFsxLCJjYWxlbmRhci1zd2l0Y2hlcnMiXSxbInR5cGUiLCJidXR0b24i'@; put 'LDEsImNhbGVuZGFyLWJ0biIsInN3aXRjaGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiXSxbInNoYXBlIiwiZXZlbnQiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdLFsxLCJtb250aHMiXSxbInR5cGUiLCJidXR0b24iLCJj'@; put 'bGFzcyIsImNhbGVuZGFyLWJ0biBtb250aCIsMywiaXMtc2VsZWN0ZWQiLCJpcy1zdGFydC1yYW5nZSIsImlzLWVuZC1yYW5nZSIsImluLXJhbmdlIiwiaXMtdG9kYXkiLCJjbGljayIsIm1vdXNlZW50ZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5k'@; put 'YXItYnRuIiwibW9udGgiLDMsImNsaWNrIiwibW91c2VlbnRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKEooMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImJ1dHRvbiIsMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmNoYW5nZVRvWWVhclZpZXcoKX0pLFNlKDMp'@; put 'LHRlKCkoKSxKKDQsImRpdiIsMykoNSwiYnV0dG9uIiw0KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHIucHJldmlvdXNZZWFyKCl9KSxJdCg2LCJjZHMtaWNvbiIsNSksdGUoKSxKKDcsImJ1dHRvbiIsNCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmN1cnJlbnRZZWFy'@; put 'KCl9KSxJdCg4LCJjZHMtaWNvbiIsNiksdGUoKSxKKDksImJ1dHRvbiIsNCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLm5leHRZZWFyKCl9KSxJdCgxMCwiY2RzLWljb24iLDcpLHRlKCkoKSgpLEooMTEsImRpdiIsOCksWW4oMTIscjZ0LDIsMTIsImJ1dHRvbiIsOSksdGUoKSks'@; put 'MiZ0JiYoaWUoMiksUnIoImFyaWEtbGFiZWwiLHIueWVhckF0dHJTdHJpbmcpKCJ0aXRsZSIsci55ZWFyQXR0clN0cmluZyksaWUoKSxTcigiICIsci5jYWxlbmRhclllYXIsIiAiKSxpZSgyKSxScigiYXJpYS1sYWJlbCIsci5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3Vz'@; put 'TW9udGgpLGllKCksUnIoInRpdGxlIixyLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNNb250aCksaWUoKSxScigiYXJpYS1sYWJlbCIsci5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlckN1cnJlbnRNb250aCksaWUoKSxScigidGl0bGUiLHIuY29tbW9uU3RyaW5n'@; put 'cy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50TW9udGgpLGllKCksUnIoImFyaWEtbGFiZWwiLHIuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0TW9udGgpLGllKCksUnIoInRpdGxlIixyLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dE1vbnRoKSxpZSgyKSxydCgibmdG'@; put 'b3JPZiIsci5tb250aE5hbWVzKSl9LGRlcGVuZGVuY2llczpbUmYsSnNdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpO2NsYXNzIEJEe2NvbnN0cnVjdG9yKGUpe3RoaXMueWVhcj1lLHRoaXMueWVhclJhbmdlPVtdLHRoaXMuZ2VuZXJhdGVZZWFyUmFuZ2UoKX1nZXQgbWlkZGxlWWVhcigpe3Jl'@; put 'dHVybiB0aGlzLnllYXJSYW5nZVtNYXRoLmZsb29yKHRoaXMueWVhclJhbmdlLmxlbmd0aC8yKV19bmV4dERlY2FkZSgpe3JldHVybiBuZXcgQkQodGhpcy55ZWFyKzEwKX1wcmV2aW91c0RlY2FkZSgpe3JldHVybiBuZXcgQkQodGhpcy55ZWFyLTEwKX1jdXJyZW50RGVjYWRlKCl7cmV0dXJu'@; put 'IG5ldyBCRCgobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpfWluUmFuZ2UoZSl7cmV0dXJuIHRoaXMueWVhclJhbmdlLmluZGV4T2YoZSk+LTF9Z2VuZXJhdGVZZWFyUmFuZ2UoKXtjb25zdCB0PXRoaXMueWVhci10aGlzLnllYXIlMTA7dGhpcy55ZWFyUmFuZ2U9dGhpcy5nZW5lcmF0ZVJhbmdl'@; put 'KHQsdCsxMCl9Z2VuZXJhdGVSYW5nZShlLHQpe3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6dC1lfSwocixpKT0+aStlKX19bGV0IF9NZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8sYSl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPXQsdGhpcy5fdmlld01hbmFnZXJT'@; put 'ZXJ2aWNlPXIsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZT1pLHRoaXMuX2VsUmVmPW8sdGhpcy5jb21tb25TdHJpbmdzPWEsdGhpcy55ZWFyUmFuZ2VNb2RlbD1uZXcgQkQodGhpcy5jYWxlbmRhclllYXIpLHRoaXMuX2ZvY3VzZWRZZWFyPXRoaXMuY2FsZW5kYXJZZWFyfWdldCBzZWxl'@; put 'Y3RlZFN0YXJ0WWVhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LnllYXJ9Z2V0IHNlbGVjdGVkRW5kWWVhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWRFbmREYXk/LnllYXJ9Z2V0IGNhbGVuZGFyWWVhcigp'@; put 'e3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIueWVhcn1pc0N1cnJlbnRDYWxlbmRhclllYXIodCl7cmV0dXJuIHQ9PT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCl9Z2V0SXNSYW5nZVN0YXJ0WWVhcih0KXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmln'@; put 'YXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXImJnQ9PT10aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LnllYXJ9Z2V0SXNSYW5nZUVuZFllYXIodCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyJiZ0PT09dGhpcy5fZGF0ZU5h'@; put 'dmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5Py55ZWFyfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKX1vbktleURvd24odCl7aWYodCl7Y29uc3Qgcj10bSh0LmtleSk7cj09PU1vLkFycm93VXA/KHQucHJl'@; put 'dmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5KC0yKSk6cj09PU1vLkFycm93RG93bj8odC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoMikpOnI9PT1Nby5BcnJvd1JpZ2h0Pyh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5pbmNyZW1lbnRG'@; put 'b2N1c1llYXJCeSgxKSk6cj09PU1vLkFycm93TGVmdCYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5KC0xKSl9fWNoYW5nZVllYXIodCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmNoYW5nZVllYXIodCksdGhpcy5fdmlld01hbmFnZXJTZXJ2aWNl'@; put 'LmNoYW5nZVRvRGF5VmlldygpfW9uSG92ZXIodCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmhvdmVyZWRZZWFyPXR9cHJldmlvdXNEZWNhZGUoKXt0aGlzLnllYXJSYW5nZU1vZGVsPXRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKX1jdXJyZW50RGVjYWRlKCl7dGhp'@; put 'cy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS50b2RheS55ZWFyKXx8KHRoaXMueWVhclJhbmdlTW9kZWw9dGhpcy55ZWFyUmFuZ2VNb2RlbC5jdXJyZW50RGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRo'@; put 'aXMuX2VsUmVmKX1uZXh0RGVjYWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbD10aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKX1nZXRUYWJJbmRleCh0KXtyZXR1cm4gdGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2ZvY3VzZWRZZWFyKXx8KHRoaXMuX2ZvY3VzZWRZZWFy'@; put 'PXRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLmNhbGVuZGFyWWVhcik/dGhpcy5jYWxlbmRhclllYXI6dGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuc2VsZWN0ZWRFbmRZZWFyKT90aGlzLnNlbGVjdGVkRW5kWWVhcjp0aGlzLnllYXJSYW5nZU1vZGVsLm1pZGRsZVll'@; put 'YXIpLHRoaXMuX2ZvY3VzZWRZZWFyPT09dD8wOi0xfWlzSW5SYW5nZSh0KXtyZXR1cm4hIXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyJiYodGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Py55ZWFyJiZ0aGlzLnNlbGVjdGVkRW5kWWVhcj90'@; put 'PnRoaXMuc2VsZWN0ZWRTdGFydFllYXImJnQ8dGhpcy5zZWxlY3RlZEVuZFllYXI6ISghdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Py55ZWFyfHx0aGlzLnNlbGVjdGVkRW5kWWVhcikmJnQ+dGhpcy5zZWxlY3RlZFN0YXJ0WWVhciYmdDx0aGlzLl9kYXRlTmF2aWdh'@; put 'dGlvblNlcnZpY2UuaG92ZXJlZFllYXIpfWNoYW5nZVRvRGF5Vmlldygpe3RoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb0RheVZpZXcoKX1pbmNyZW1lbnRGb2N1c1llYXJCeSh0KXt0aGlzLl9mb2N1c2VkWWVhcj10aGlzLl9mb2N1c2VkWWVhcit0LHRoaXMueWVhclJhbmdlTW9k'@; put 'ZWwuaW5SYW5nZSh0aGlzLl9mb2N1c2VkWWVhcil8fCh0aGlzLnllYXJSYW5nZU1vZGVsPXQ+MD90aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKTp0aGlzLnllYXJSYW5nZU1vZGVsLnByZXZpb3VzRGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxs'@; put 'KHRoaXMuX2VsUmVmKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoTnApLHplKHdNKSx6ZShSdiksemUobm8pLHplKGlsKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci15ZWFycGlja2VyIl1dLGhvc3RBdHRyczpb'@; put 'InJvbGUiLCJhcHBsaWNhdGlvbiJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MSZ0JiZ3dCgia2V5ZG93biIsZnVuY3Rpb24obyl7cmV0dXJuIHIub25LZXlEb3duKG8pfSksMiZ0JiZ3cigieWVhcnBpY2tlciIsITApfSxzdGFuZGFsb25lOiExLGRlY2xzOjEzLHZh'@; put 'cnM6OSxjb25zdHM6W1sxLCJjYWxlbmRhci1oZWFkZXIiXSxbMSwiY2FsZW5kYXItcGlja2VycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwieWVhcnBpY2tlci10cmlnZ2VyIiwieWVhci1yYW5nZSIsMywiY2xpY2siXSxbMSwieWVhci1zd2l0Y2hlcnMiXSxbInR5cGUi'@; put 'LCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsInN3aXRjaGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiXSxbInNoYXBlIiwiZXZlbnQiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdLFsxLCJ5ZWFycyJdLFsidHlwZSIsImJ1'@; put 'dHRvbiIsImNsYXNzIiwiY2FsZW5kYXItYnRuIHllYXIiLDMsImlzLXNlbGVjdGVkIiwiaXMtc3RhcnQtcmFuZ2UiLCJpcy1lbmQtcmFuZ2UiLCJpbi1yYW5nZSIsImlzLXRvZGF5IiwiY2xpY2siLCJtb3VzZWVudGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInR5cGUiLCJidXR0b24iLDEs'@; put 'ImNhbGVuZGFyLWJ0biIsInllYXIiLDMsImNsaWNrIiwibW91c2VlbnRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKEooMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImJ1dHRvbiIsMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmNoYW5nZVRvRGF5VmlldygpfSks'@; put 'U2UoMyksdGUoKSgpLEooNCwiZGl2IiwzKSg1LCJidXR0b24iLDQpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gci5wcmV2aW91c0RlY2FkZSgpfSksSXQoNiwiY2RzLWljb24iLDUpLHRlKCksSig3LCJidXR0b24iLDQpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gci5jdXJy'@; put 'ZW50RGVjYWRlKCl9KSxJdCg4LCJjZHMtaWNvbiIsNiksdGUoKSxKKDksImJ1dHRvbiIsNCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLm5leHREZWNhZGUoKX0pLEl0KDEwLCJjZHMtaWNvbiIsNyksdGUoKSgpKCksSigxMSwiZGl2Iiw4KSxZbigxMixpNnQsMiwxMiwiYnV0dG9u'@; put 'Iiw5KSx0ZSgpKSwyJnQmJihpZSgzKSxOaCgiICIsci55ZWFyUmFuZ2VNb2RlbC55ZWFyUmFuZ2VbMF0sIiAtICIsci55ZWFyUmFuZ2VNb2RlbC55ZWFyUmFuZ2Vbci55ZWFyUmFuZ2VNb2RlbC55ZWFyUmFuZ2UubGVuZ3RoLTFdLCIgIiksaWUoMiksUnIoImFyaWEtbGFiZWwiLHIuY29tbW9u'@; put 'U3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZSksaWUoKSxScigidGl0bGUiLHIuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZSksaWUoKSxScigiYXJpYS1sYWJlbCIsci5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlckN1cnJlbnREZWNh'@; put 'ZGUpLGllKCksUnIoInRpdGxlIixyLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudERlY2FkZSksaWUoKSxScigiYXJpYS1sYWJlbCIsci5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlck5leHREZWNhZGUpLGllKCksUnIoInRpdGxlIixyLmNvbW1vblN0cmluZ3Mua2V5'@; put 'cy5kYXRlcGlja2VyTmV4dERlY2FkZSksaWUoMikscnQoIm5nRm9yT2YiLHIueWVhclJhbmdlTW9kZWwueWVhclJhbmdlKSl9LGRlcGVuZGVuY2llczpbUmYsSnNdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLHlNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8pe3RoaXMuX3Zp'@; put 'ZXdNYW5hZ2VyU2VydmljZT10LHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZT1yLHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2U9aSx0aGlzLmNvbW1vblN0cmluZ3M9b31nZXQgbW9udGhBdHRyU3RyaW5nKCl7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0'@; put 'cmluZ3Mua2V5cy5kYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0LHtDQUxFTkRBUl9NT05USDp0aGlzLmNhbGVuZGFyTW9udGh9KX1nZXQgeWVhckF0dHJTdHJpbmcoKXtyZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJTZWxl'@; put 'Y3RZZWFyVGV4dCx7Q0FMRU5EQVJfWUVBUjp0aGlzLmNhbGVuZGFyWWVhci50b1N0cmluZygpfSl9Z2V0IGNhbGVuZGFyTW9udGgoKXtyZXR1cm4gdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2NhbGVNb250aHNBYmJyZXZpYXRlZFt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlz'@; put 'cGxheWVkQ2FsZW5kYXIubW9udGhdfWdldCBjYWxlbmRhclllYXIoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLnllYXJ9Y2hhbmdlVG9Nb250aFZpZXcoKXt0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9Nb250aFZpZXcoKX1j'@; put 'aGFuZ2VUb1llYXJWaWV3KCl7dGhpcy5fdmlld01hbmFnZXJTZXJ2aWNlLmNoYW5nZVRvWWVhclZpZXcoKX1uZXh0TW9udGgoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UubW92ZVRvTmV4dE1vbnRoKCl9cHJldmlvdXNNb250aCgpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5t'@; put 'b3ZlVG9QcmV2aW91c01vbnRoKCl9Y3VycmVudE1vbnRoKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb0N1cnJlbnRNb250aCgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZSh3TSksemUoTnApLHplKFZEKSx6ZShpbCkpfSxu'@; put 'Llx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGF5cGlja2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJhcHBsaWNhdGlvbiJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiZGF5cGlja2VyIiwhMCl9LHN0YW5kYWxvbmU6ITEsZGVj'@; put 'bHM6MTgsdmFyczoxNCxjb25zdHM6W1sxLCJjbHItc3Itb25seSJdLFsxLCJjYWxlbmRhci1oZWFkZXIiXSxbMSwiY2FsZW5kYXItcGlja2VycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwibW9udGhwaWNrZXItdHJpZ2dlciIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0'@; put 'b24iLDEsImNhbGVuZGFyLWJ0biIsInllYXJwaWNrZXItdHJpZ2dlciIsMywiY2xpY2siXSxbMSwiY2FsZW5kYXItc3dpdGNoZXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJzd2l0Y2hlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJs'@; put 'ZWZ0Il0sWyJzaGFwZSIsImV2ZW50Il0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwicmlnaHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihKKDAsImRpdiIsMCksU2UoMSksdGUoKSxKKDIsImRpdiIsMSkoMywiZGl2IiwyKSg0LCJidXR0b24iLDMpLHd0KCJjbGljayIs'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gci5jaGFuZ2VUb01vbnRoVmlldygpfSksU2UoNSksdGUoKSxKKDYsImJ1dHRvbiIsNCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmNoYW5nZVRvWWVhclZpZXcoKX0pLFNlKDcpLHRlKCkoKSxKKDgsImRpdiIsNSkoOSwiYnV0dG9uIiw2KSx3dCgi'@; put 'Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHIucHJldmlvdXNNb250aCgpfSksSXQoMTAsImNkcy1pY29uIiw3KSx0ZSgpLEooMTEsImJ1dHRvbiIsNiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmN1cnJlbnRNb250aCgpfSksSXQoMTIsImNkcy1pY29uIiw4KSx0ZSgpLEooMTMs'@; put 'ImJ1dHRvbiIsNiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLm5leHRNb250aCgpfSksSXQoMTQsImNkcy1pY29uIiw5KSx0ZSgpKCkoKSxJdCgxNSwiY2xyLWNhbGVuZGFyIiksSigxNiwiZGl2IiwwKSxTZSgxNyksdGUoKSksMiZ0JiYoaWUoKSxwcihyLmNvbW1vblN0cmluZ3Mu'@; put 'a2V5cy5tb2RhbENvbnRlbnRTdGFydCksaWUoMyksUnIoImFyaWEtbGFiZWwiLHIubW9udGhBdHRyU3RyaW5nKSgidGl0bGUiLHIubW9udGhBdHRyU3RyaW5nKSxpZSgpLFNyKCIgIixyLmNhbGVuZGFyTW9udGgsIiAiKSxpZSgpLFJyKCJhcmlhLWxhYmVsIixyLnllYXJBdHRyU3RyaW5nKSgi'@; put 'dGl0bGUiLHIueWVhckF0dHJTdHJpbmcpLGllKCksU3IoIiAiLHIuY2FsZW5kYXJZZWFyLCIgIiksaWUoMiksUnIoImFyaWEtbGFiZWwiLHIuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c01vbnRoKSxpZSgpLFJyKCJ0aXRsZSIsci5jb21tb25TdHJpbmdzLmtleXMuZGF0'@; put 'ZXBpY2tlclByZXZpb3VzTW9udGgpLGllKCksUnIoImFyaWEtbGFiZWwiLHIuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50TW9udGgpLGllKCksUnIoInRpdGxlIixyLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudE1vbnRoKSxpZSgpLFJyKCJhcmlhLWxh'@; put 'YmVsIixyLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dE1vbnRoKSxpZSgpLFJyKCJ0aXRsZSIsci5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlck5leHRNb250aCksaWUoMykscHIoci5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50RW5kKSl9LGRlcGVuZGVuY2ll'@; put 'czpbSnMsZk1lXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxiTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvKXt0aGlzLmNvbW1vblN0cmluZ3M9dCx0aGlzLnRvZ2dsZVNlcnZpY2U9cix0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZT1pLHRoaXMuZGF0ZUZvcm1Db250cm9s'@; put 'U2VydmljZT1vfWFwcGx5KCl7dGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciYmdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkmJnRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5Pyh0aGlzLmRhdGVOYXZpZ2F0aW9uU2Vy'@; put 'dmljZS5ub3RpZnlTZWxlY3RlZERheUNoYW5nZWQoe3N0YXJ0RGF0ZTp0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheSxlbmREYXRlOnRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5fSksdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtB'@; put 'c0RpcnR5KCkpOiF0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyJiZ0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheSYmKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZCh0aGlzLmRhdGVOYXZpZ2F0aW9u'@; put 'U2VydmljZS5zZWxlY3RlZERheSksdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc0RpcnR5KCkpLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExfWNhbmNlbCgpe3RoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnJlc2V0U2VsZWN0ZWREYXkoKSx0aGlzLnRvZ2dsZVNlcnZpY2Uu'@; put 'b3Blbj0hMX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoaWwpLHplKEt1KSx6ZShOcCksemUoYk0pKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRhdGVwaWNrZXItYWN0aW9ucyJdXSxob3N0VmFyczoyLGhvc3RC'@; put 'aW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImRhdGVwaWNrZXItYWN0aW9ucyIsITApfSxzdGFuZGFsb25lOiExLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXV0sdGVt'@; put 'cGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihKKDAsImJ1dHRvbiIsMCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmNhbmNlbCgpfSksU2UoMSksdGUoKSxKKDIsImJ1dHRvbiIsMSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KCl9KSxTZSgzKSx0ZSgpKSwy'@; put 'JnQmJihpZSgpLHByKHIuY29tbW9uU3RyaW5ncy5rZXlzLmNhbmNlbCksaWUoMikscHIoci5jb21tb25TdHJpbmdzLmtleXMuYXBwbHkpKX0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksd01lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyl7dGhpcy5jb21tb25TdHJpbmdzPXQs'@; put 'dGhpcy52aWV3TWFuYWdlclNlcnZpY2U9cix0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZT1pLHRoaXMuZGF0ZUlPU2VydmljZT1vfWdldCBpc01vbnRoVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc01vbnRoVmlld31nZXQgaXNZZWFyVmlldygpe3JldHVybiB0aGlz'@; put 'LnZpZXdNYW5hZ2VyU2VydmljZS5pc1llYXJWaWV3fWdldCBpc0RheVZpZXcoKXtyZXR1cm4gdGhpcy52aWV3TWFuYWdlclNlcnZpY2UuaXNEYXlWaWV3fWdldCBoYXNSYW5nZU9wdGlvbnMoKXtyZXR1cm4hIXRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPy5pc1JhbmdlUGlja2VyJiYhIXRo'@; put 'aXMuZGF0ZVJhbmdlT3B0aW9ucz8ubGVuZ3RofWdldCBoYXNBY3Rpb25CdXR0b25zKCl7cmV0dXJuIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmhhc0FjdGlvbkJ1dHRvbnN9Z2V0IGRhdGVSYW5nZU9wdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRlSU9TZXJ2aWNlLmdldFJhbmdlT3B0aW9u'@; put 'cygpfW9uUmFuZ2VPcHRpb25TZWxlY3QodCl7Y29uc3Qgcj10aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5jb252ZXJ0RGF0ZVRvRGF5TW9kZWwodD8udmFsdWVbMF0pLGk9dGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuY29udmVydERhdGVUb0RheU1vZGVsKHQ/LnZhbHVlWzFdKTt0aGlz'@; put 'LmRhdGVOYXZpZ2F0aW9uU2VydmljZS5ub3RpZnlTZWxlY3RlZERheUNoYW5nZWQoe3N0YXJ0RGF0ZTpyLGVuZERhdGU6aX0se2VtaXRFdmVudDohdGhpcy5oYXNBY3Rpb25CdXR0b25zfSksdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UubW92ZVRvU3BlY2lmaWNNb250aChyKX19cmV0dXJu'@; put 'IG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoaWwpLHplKHdNKSx6ZShOcCksemUoczcpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJkaWFsb2ci'@; put 'XSxob3N0VmFyczo4LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmKFJyKCJhcmlhLW1vZGFsIiwhMCkoImFyaWEtbGFiZWwiLHIuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJEaWFsb2dMYWJlbCksd3IoImRhdGVwaWNrZXIiLCEwKSgiaGFzLXJhbmdlLW9wdGlvbiIsci5o'@; put 'YXNSYW5nZU9wdGlvbnMpKCJoYXMtYWN0aW9uLWJ1dHRvbnMiLHIuaGFzQWN0aW9uQnV0dG9ucykpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbUnZdKV0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImNhbGVuZGFyVmlldyIsIiJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbMSwiY2xy'@; put 'LWRhdGUtcmFuZ2UtcGlja2VyLW5hdiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiZGF0ZXBpY2tlci12aWV3LW1hbmFnZXIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwiaHJlZiIsImphdmFzY3JpcHQ6dm9pZCgwKSIsInRhYmluZGV4Iiwi'@; put 'MCIsMywia2V5dXAuZW50ZXIiLCJjbGljayJdLFs0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7aWYoMSZ0JiZZbigwLHM2dCw1LDIsIm5nLWNvbnRhaW5lciIsMSkoMSxoNnQsNCw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwwLGNkKSwyJnQpe2NvbnN0IGk9b28oMik7cnQoIm5nSWYi'@; put 'LHIuaGFzUmFuZ2VPcHRpb25zKSgibmdJZkVsc2UiLGkpfX0sZGVwZW5kZW5jaWVzOltSZixZcyxJZixsYWUsdWFlLG1NZSxfTWUseU1lLGJNZV0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksblc9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFdie2NvbnN0cnVjdG9yKHQscixpLG8sYSxsLHUsZyxF'@; put 'LE8sWixlZSx2ZSxNZSl7aWYoc3VwZXIoTWUsZWUsWix2ZSksdGhpcy5yZW5kZXJlcj10LHRoaXMuZWxlbT1yLHRoaXMudG9nZ2xlU2VydmljZT1pLHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPW8sdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U9YSx0aGlzLmRhdGVGb3JtQ29udHJv'@; put 'bFNlcnZpY2U9bCx0aGlzLmRhdGVJT1NlcnZpY2U9dSx0aGlzLmNvbW1vblN0cmluZ3M9Zyx0aGlzLnZpZXdNYW5hZ2VyU2VydmljZT1PLHRoaXMuY29udHJvbENsYXNzU2VydmljZT1aLHRoaXMubGF5b3V0U2VydmljZT1lZSx0aGlzLm5nQ29udHJvbFNlcnZpY2U9dmUsdGhpcy5pZkNvbnRy'@; put 'b2xTdGF0ZVNlcnZpY2U9TWUsdGhpcy5mb2N1cz0hMSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChFLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShIZT0+e3RoaXMuZm9jdXM9SGV9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goaS5vcGVuQ2hhbmdlLnN1YnNjcmliZSgoKT0+e2wubWFya0FzVG91'@; put 'Y2hlZCgpfSkpLG8pe2NvbnN0IEhlPXIubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7by5oYXNBY3Rpb25CdXR0b25zPW8uaXNSYW5nZVBpY2tlcj0iY2xyLWRhdGUtcmFuZ2UtY29udGFpbmVyIj09PUhlfX1zZXQgc2hvd0FjdGlvbkJ1dHRvbnModCl7dGhpcy5kYXRlTmF2'@; put 'aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciYmIXQ/Y29uc29sZS5lcnJvcigiRXJyb3IhIFRoZSBkYXRlIHJhbmdlIHBpY2tlciByZXF1aXJlcyBhY3Rpb24gYnV0dG9ucywgW3Nob3dBY3Rpb25CdXR0b25zXSBjYW5ub3QgYmUgdHVybmVkIG9mZi4iKTp0aGlzLmRhdGVOYXZpZ2F0aW9u'@; put 'U2VydmljZS5oYXNBY3Rpb25CdXR0b25zPXR9c2V0IGNsclBvc2l0aW9uKHQpe3QmJkEzW3RdJiYodGhpcy52aWV3TWFuYWdlclNlcnZpY2UucG9zaXRpb249QTNbdF0pfXNldCByYW5nZU9wdGlvbnModCl7dGhpcy5kYXRlSU9TZXJ2aWNlLnNldFJhbmdlT3B0aW9ucyh0KX1zZXQgbWluKHQp'@; put 'e3RoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXI/KHRoaXMuZGF0ZUlPU2VydmljZS5zZXRNaW5EYXRlKHQpLHRoaXMuY2xyU3RhcnREYXRlSW5wdXQ/LnRyaWdnZXJDb250cm9sSW5wdXRWYWxpZGF0aW9uKCksdGhpcy5jbHJFbmREYXRlSW5wdXQ/LnRyaWdnZXJDb250'@; put 'cm9sSW5wdXRWYWxpZGF0aW9uKCkpOmNvbnNvbGUuZXJyb3IoIkVycm9yISBUaGUgZGF0ZSBjb250YWluZXIgW21pbl0gaW5wdXQgb25seSB3b3JrcyBmb3IgZGF0ZSByYW5nZSBwaWNrZXJzLiBVc2UgdGhlIG5hdGl2ZSBgbWluYCBhdHRyaWJ1dGUvcHJvcGVydHkgZm9yIHNpbmdsZS1kYXRl'@; put 'IGlucHV0cy4iKX1zZXQgbWF4KHQpe3RoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXI/KHRoaXMuZGF0ZUlPU2VydmljZS5zZXRNYXhEYXRlKHQpLHRoaXMuY2xyU3RhcnREYXRlSW5wdXQ/LnRyaWdnZXJDb250cm9sSW5wdXRWYWxpZGF0aW9uKCksdGhpcy5jbHJFbmRE'@; put 'YXRlSW5wdXQ/LnRyaWdnZXJDb250cm9sSW5wdXRWYWxpZGF0aW9uKCkpOmNvbnNvbGUuZXJyb3IoIkVycm9yISBUaGUgZGF0ZSBjb250YWluZXIgW21heF0gaW5wdXQgb25seSB3b3JrcyBmb3IgZGF0ZSByYW5nZSBwaWNrZXJzLiBVc2UgdGhlIG5hdGl2ZSBgbWF4YCBhdHRyaWJ1dGUvcHJv'@; put 'cGVydHkgZm9yIHNpbmdsZS1kYXRlIGlucHV0cy4iKX1zZXQgYWN0aW9uQnV0dG9uKHQpe3RoaXMudG9nZ2xlQnV0dG9uPXR9Z2V0IHBvcG92ZXJQb3NpdGlvbigpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5wb3NpdGlvbn1nZXQgb3Blbigpe3JldHVybiB0aGlzLnRvZ2dsZVNl'@; put 'cnZpY2Uub3Blbn1nZXQgaXNFbmFibGVkKCl7cmV0dXJuIHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZH1nZXQgaXNJbnB1dERhdGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5kaXNhYmxlZHx8dGhpcy5kYXRlRm9ybUNvbnRyb2xT'@; put 'ZXJ2aWNlJiZ0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlzYWJsZWR9Z2V0IGlzUmFuZ2VQaWNrZXIoKXtyZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlcn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmRhdGVSYW5nZVN0cnVjdHVyYWxDaGVja3MoKSx0'@; put 'aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUodD0+e3Q/dGhpcy5pbml0aWFsaXplQ2FsZW5kYXIoKToodGhpcy50b2dnbGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnJl'@; put 'c2V0U2VsZWN0ZWREYXkoKSl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpKX1nZXRUb2dnbGVCdXR0b25MYWJlbCh0KXtpZih0KXtjb25zdCByPXRoaXMuZGF0ZUlPU2VydmljZS50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcodC50b0Rh'@; put 'dGUoKSk7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hhbmdlRGF0ZUxhYmVsLHtTRUxFQ1RFRF9EQVRFOnJ9KX1yZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZUNob29z'@; put 'ZURhdGVMYWJlbH1saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheUNoYW5nZS5waXBlKHFnKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5KSkuc3Vic2NyaWJlKHQ9PntpZih0aGlzLmlzRW5hYmxl'@; put 'ZCl7Y29uc3Qgcj10aGlzLmdldFRvZ2dsZUJ1dHRvbkxhYmVsKHQpLGk9dGhpcy50b2dnbGVCdXR0b24ubmF0aXZlRWxlbWVudDt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShpLCJhcmlhLWxhYmVsIixyKSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShpLCJ0aXRsZSIscil9fSl9aW5p'@; put 'dGlhbGl6ZUNhbGVuZGFyKCl7dGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbGl6ZUNhbGVuZGFyKCl9ZGF0ZVJhbmdlU3RydWN0dXJhbENoZWNrcygpe3RoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXImJih0aGlzLmNsckRhdGVJbnB1dCYmY29uc29sZS5l'@; put 'cnJvcigiRXJyb3IhIGNsci1kYXRlLXJhbmdlLWNvbnRhaW5lciBtdXN0IGNvbnRhaW4gY2xyU3RhcnREYXRlIGFuZCBjbHJFbmREYXRlIGlucHV0cyIpLHRoaXMuY2xyU3RhcnREYXRlSW5wdXR8fGNvbnNvbGUuZXJyb3IoIkVycm9yISBjbHItZGF0ZS1yYW5nZS1jb250YWluZXIgbXVzdCBj'@; put 'b250YWluIGNsclN0YXJ0RGF0ZSBpbnB1dCIpLHRoaXMuY2xyRW5kRGF0ZUlucHV0fHxjb25zb2xlLmVycm9yKCJFcnJvciEgY2xyLWRhdGUtcmFuZ2UtY29udGFpbmVyIG11c3QgY29udGFpbiBjbHJFbmREYXRlIGlucHV0IikpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0'@; put 'dXJuIG5ldyh0fHxuKSh6ZShOdCksemUobm8pLHplKEt1KSx6ZShOcCksemUodFcpLHplKGJNKSx6ZShzNyksemUoaWwpLHplKHZNKSx6ZSh3TSksemUoSTMpLHplKFo1LDgpLHplKGoyKSx6ZShSMykpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGF0ZS1jb250'@; put 'YWluZXIiXSxbImNsci1kYXRlLXJhbmdlLWNvbnRhaW5lciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiYoRmEoaSxtYWUsNSksRmEoaSxnTWUsNSksRmEoaSxwTWUsNSkpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIuY2xyRGF0ZUlucHV0PW8uZmlyc3QpLGNp'@; put 'KG89dWkoKSkmJihyLmNsclN0YXJ0RGF0ZUlucHV0PW8uZmlyc3QpLGNpKG89dWkoKSkmJihyLmNsckVuZERhdGVJbnB1dD1vLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmV28oZjZ0LDUpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIuYWN0aW9uQnV0dG9uPWku'@; put 'Zmlyc3QpfX0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJjbHItZGF0ZS1jb250YWluZXIiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsci5pc0lucHV0RGF0ZURpc2FibGVkKSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItcm93Iixy'@; put 'LmFkZEdyaWQoKSl9LGlucHV0czp7c2hvd0FjdGlvbkJ1dHRvbnM6InNob3dBY3Rpb25CdXR0b25zIixjbHJQb3NpdGlvbjoiY2xyUG9zaXRpb24iLHJhbmdlT3B0aW9uczoicmFuZ2VPcHRpb25zIixtaW46Im1pbiIsbWF4OiJtYXgifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbT3As'@; put 'VkQsSTMsdk0sajIsczcsTnAsdFcsYk0sd00sUjNdKSx6ZyhbaTddKSxGb10sbmdDb250ZW50U2VsZWN0b3JzOmc2dCxkZWNsczoxNCx2YXJzOjE1LGNvbnN0czpbWyJhY3Rpb25CdXR0b24iLCIiXSxbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxb'@; put 'ImNsclBvcG92ZXJBbmNob3IiLCIiLDEsImNsci1pbnB1dC13cmFwcGVyIl0sWzEsImNsci1pbnB1dC1ncm91cCJdLFsidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b24iLCIiLCJjbGFzcyIsImNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiIsMywiZGlzYWJsZWQi'@; put 'LDQsIm5nSWYiXSxbImNka1RyYXBGb2N1cyIsIiIsNCwiY2xyUG9wb3ZlckNvbnRlbnQiLCJjbHJQb3BvdmVyQ29udGVudEF0IiwiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIl0sWyJjbGFzcyIsImNsci12YWxp'@; put 'ZGF0ZS1pY29uIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlh'@; put 'LWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbMSwiZGF0ZS1yYW5nZS1zZXBhcmF0b3IiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwxLCJjbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24iLDMsImRpc2FibGVkIl0sWyJzdGF0dXMiLCJpbmZvIiwi'@; put 'c2hhcGUiLCJjYWxlbmRhciJdLFsiY2RrVHJhcEZvY3VzIiwiIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwi'@; put 'c3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhwNnQpLFdyKDApLFluKDEsbTZ0LDEsMCwibGFiZWwiLDEpLEooMiwiZGl2IiwyKSgzLCJkaXYiLDMpKDQsImRpdiIsNCksWW4oNSx2NnQs'@; put 'NSwwLCJuZy1jb250YWluZXIiLDEpLFdyKDYsMSksWW4oNyxfNnQsMywxLCJidXR0b24iLDUpKDgseTZ0LDEsMCwiY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIiw2KSx0ZSgpLFluKDksYjZ0LDEsMCwiY2RzLWljb24iLDcpKDEwLHc2dCwxLDAsImNkcy1pY29uIiw4KSx0ZSgpLFluKDEx'@; put 'LEM2dCwxLDAsIm5nLWNvbnRlbnQiLDEpKDEyLFM2dCwxLDAsIm5nLWNvbnRlbnQiLDEpKDEzLEU2dCwxLDAsIm5nLWNvbnRlbnQiLDEpLHRlKCkpLDImdCYmKGllKCkscnQoIm5nSWYiLCFyLmxhYmVsJiZyLmFkZEdyaWQoKSksaWUoKSxydCgibmdDbGFzcyIsci5jb250cm9sQ2xhc3MoKSks'@; put 'aWUoMiksd3IoImNsci1mb2N1cyIsci5mb2N1cyksaWUoKSxydCgibmdJZiIsci5pc1JhbmdlUGlja2VyKSxpZSgyKSxydCgibmdJZiIsci5pc0VuYWJsZWQpLGllKCkscnQoImNsclBvcG92ZXJDb250ZW50IixyLm9wZW4pKCJjbHJQb3BvdmVyQ29udGVudEF0IixyLnBvcG92ZXJQb3NpdGlv'@; put 'bikoImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsITApKCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiLCEwKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dWYWxpZCksaWUoKSxydCgibmdJZiIsci5zaG93SGVs'@; put 'cGVyKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dWYWxpZCkpfSxkZXBlbmRlbmNpZXM6W0ZoLFlzLF9NLGtELERELElELEpzLGVsLHdNZV0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksQ01lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7'@; put 'dGhpcy5kYXRlSU9TZXJ2aWNlPXR9dmFsaWRhdGUodCl7aWYodGhpcy5kYXRlSU9TZXJ2aWNlKXtjb25zdCByPXRoaXMuZGF0ZUlPU2VydmljZS5nZXREYXRlVmFsdWVGcm9tRGF0ZVN0cmluZyh0LnZhbHVlKSxpPXRoaXMuZGF0ZUlPU2VydmljZS5kaXNhYmxlZERhdGVzLm1pbkRhdGUudG9E'@; put 'YXRlKCksbz10aGlzLmRhdGVJT1NlcnZpY2UuZGlzYWJsZWREYXRlcy5tYXhEYXRlLnRvRGF0ZSgpO2lmKHImJnI8aSlyZXR1cm57bWluOnttaW46aS50b0xvY2FsZURhdGVTdHJpbmcoKSxhY3R1YWw6ci50b0xvY2FsZURhdGVTdHJpbmcoKX19O2lmKHImJnI+bylyZXR1cm57bWF4OnttYXg6'@; put 'by50b0xvY2FsZURhdGVTdHJpbmcoKSxhY3R1YWw6ci50b0xvY2FsZURhdGVTdHJpbmcoKX19fXJldHVybiBudWxsfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShzNyw4KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIs'@; put 'ImNsckRhdGUiLCIiXSxbIiIsImNsclN0YXJ0RGF0ZSIsIiJdLFsiIiwiY2xyRW5kRGF0ZSIsIiJdXSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbe3Byb3ZpZGU6RzEsdXNlRXhpc3Rpbmc6bixtdWx0aTohMH1dKV19KSxufSkoKSxaX3Q9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigp'@; put 'e3psLmFkZEljb25zKEFwLGtwLHJNLGtndCxSZ3QpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxKeixORCxybSxMRCxXbCxnaCxjTWVdfSksbn0pKCks'@; put 'JF90PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt6bC5hZGRJY29ucyhJZ3QpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxXbCxnaCxnaF19KSxu'@; put 'fSkoKSxTTWU9KCgpPT57Y2xhc3MgbiBleHRlbmRzIFdie2NvbnN0cnVjdG9yKHQscixpLG8sYSl7c3VwZXIoYSxyLHQsaSksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9YSx0aGlzLmZvY3VzPSExLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG8uZm9jdXNDaGFuZ2Uuc3Vic2NyaWJlKGw9'@; put 'PnRoaXMuZm9jdXM9bCkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShJMyksemUoWjUsOCksemUoajIpLHplKHZNKSx6ZShSMykpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItbnVtYmVyLWlucHV0LWNvbnRhaW5l'@; put 'ciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiZGYShpLEVNZSw1KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLmlucHV0PW8uZmlyc3QpfX0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJjbHItZm9ybS1jb250cm9sIiwh'@; put 'MCkoImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiLG51bGw9PXIuY29udHJvbD9udWxsOnIuY29udHJvbC5kaXNhYmxlZCkoImNsci1mb3JtLWNvbnRyb2wtcmVhZG9ubHkiLHIuaW5wdXQucmVhZG9ubHkpKCJjbHItcm93IixyLmFkZEdyaWQoKSl9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6'@; put 'W2JvKFt2TSxSMyxqMixPcCxJM10pLEZvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6azZ0LGRlY2xzOjE3LHZhcnM6MTEsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLW51bWJlci1pbnB1dC13cmFwcGVyIl0sWzEsImNsci1p'@; put 'bnB1dC1ncm91cCJdLFsxLCJjbHItaW5wdXQtZ3JvdXAtYWN0aW9ucyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJzaGFwZSIsIm1pbnVzIiwic2l6ZSIsInNtIl0sWzEsImNsci1udW1iZXItaW5wdXQt'@; put 'c2VwYXJhdG9yIl0sWyJzaGFwZSIsInBsdXMiLCJzaXplIiwic20iXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItdmFs'@; put 'aWRhdGUtaWNvbiIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxp'@; put 'ZGF0ZS1pY29uIl0sWyJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oQTZ0KSxXcigwKSxZbigxLFI2dCwxLDAsImxhYmVsIiww'@; put 'KSxKKDIsImRpdiIsMSkoMywiZGl2IiwyKSg0LCJkaXYiLDMpLFdyKDUsMSksSig2LCJkaXYiLDQpKDcsImJ1dHRvbiIsNSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmlucHV0LnN0ZXBEb3duKCl9KSxJdCg4LCJjZHMtaWNvbiIsNiksdGUoKSxJdCg5LCJkaXYiLDcpLEooMTAs'@; put 'ImJ1dHRvbiIsNSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLmlucHV0LnN0ZXBVcCgpfSksSXQoMTEsImNkcy1pY29uIiw4KSx0ZSgpKCkoKSxZbigxMixJNnQsMSwwLCJjZHMtaWNvbiIsOSkoMTMsRDZ0LDEsMCwiY2RzLWljb24iLDEwKSx0ZSgpLFluKDE0LEw2dCwxLDAsIm5n'@; put 'LWNvbnRlbnQiLDApKDE1LE82dCwxLDAsIm5nLWNvbnRlbnQiLDApKDE2LE42dCwxLDAsIm5nLWNvbnRlbnQiLDApLHRlKCkpLDImdCYmKGllKCkscnQoIm5nSWYiLCFyLmxhYmVsJiZyLmFkZEdyaWQoKSksaWUoKSxydCgibmdDbGFzcyIsci5jb250cm9sQ2xhc3MoKSksaWUoMiksd3IoImNs'@; put 'ci1mb2N1cyIsci5mb2N1cyksaWUoMykscnQoImRpc2FibGVkIixudWxsPT1yLmNvbnRyb2w/bnVsbDpyLmNvbnRyb2wuZGlzYWJsZWQpLGllKDMpLHJ0KCJkaXNhYmxlZCIsbnVsbD09ci5jb250cm9sP251bGw6ci5jb250cm9sLmRpc2FibGVkKSxpZSgyKSxydCgibmdJZiIsci5zaG93SW52'@; put 'YWxpZCksaWUoKSxydCgibmdJZiIsci5zaG93VmFsaWQpLGllKCkscnQoIm5nSWYiLHIuc2hvd0hlbHBlciksaWUoKSxydCgibmdJZiIsci5zaG93SW52YWxpZCksaWUoKSxydCgibmdJZiIsci5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltGaCxZcyxKcyxlbF0sZW5jYXBzdWxhdGlvbjoy'@; put 'fSksbn0pKCksRU1lPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBZYntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCl7aWYoc3VwZXIocixTTWUsaSxvLGEsbCksdGhpcy5mb2N1c1NlcnZpY2U9dCx0aGlzLmNvbnRyb2w9byx0aGlzLmVsPWwsdGhpcy5pbmRleD0xLCF0KXRocm93IG5ldyBFcnJvcigi'@; put 'Y2xyTnVtYmVySW5wdXQgcmVxdWlyZXMgYmVpbmcgd3JhcHBlZCBpbiA8Y2xyLW51bWJlci1pbnB1dC1jb250YWluZXI+Iil9Z2V0IHJlYWRvbmx5KCl7cmV0dXJuIG51bGwhPT10aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJyZWFkb25seSIpfXRyaWdnZXJGb2N1cygpeyF0'@; put 'aGlzLnJlYWRvbmx5JiZ0aGlzLmZvY3VzU2VydmljZSYmKHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzZWQ9ITApfXRyaWdnZXJWYWxpZGF0aW9uKCl7dGhpcy5yZWFkb25seXx8KHN1cGVyLnRyaWdnZXJWYWxpZGF0aW9uKCksdGhpcy5mb2N1c1NlcnZpY2UmJih0aGlzLmZvY3VzU2VydmljZS5m'@; put 'b2N1c2VkPSExKSl9c3RlcFVwKCl7dGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0ZXBVcCgpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiaW5wdXQiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSksdGhpcy5jb250cm9sLmNvbnRyb2wubWFya0FsbEFz'@; put 'VG91Y2hlZCgpfXN0ZXBEb3duKCl7dGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0ZXBEb3duKCksdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJpbnB1dCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pKSx0aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQWxs'@; put 'QXNUb3VjaGVkKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKHZNLDgpLHplKERzKSx6ZShNbCksemUoVjIsMTApLHplKE50KSx6ZShubykpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1i'@; put 'ZXIiLCJjbHJOdW1iZXJJbnB1dCIsIiJdXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmd3QoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiByLnRyaWdnZXJGb2N1cygpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHIudHJpZ2dlclZhbGlkYXRpb24oKX0p'@; put 'LDImdCYmd3IoImNsci1pbnB1dCIsITApKCJjbHItbnVtYmVyLWlucHV0IiwhMCl9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W0ZvXX0pLG59KSgpLHFfdD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMoQXAsa3AsRGd0LExndCl9fXJldHVybiBuLlx1MDI3NWZhYz1m'@; put 'dW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLGhkLFdsLGdoLGdoXX0pLG59KSgpLFFfdD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMoT2d0LE5ndCxBcCxrcCl9fXJl'@; put 'dHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLGhkLFdsLGdoLGdoXX0pLG59KSgpLHZhZT0oKCk9PntjbGFzcyBue25nT25Jbml0KCl7dGhpcy5sYWJlbCYmdGhp'@; put 'cy5sYWJlbC5kaXNhYmxlR3JpZCgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLXJhZGlvLXdyYXBwZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEm'@; put 'dCYmRmEoaSxlbCw3KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLmxhYmVsPW8uZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJjbHItcmFkaW8td3JhcHBlciIsITApfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbT3BdKV0sbmdD'@; put 'b250ZW50U2VsZWN0b3JzOlA2dCxkZWNsczozLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oRjZ0KSxXcigwKSxXcigxLDEpLFluKDIsSDZ0LDEsMCwibGFiZWwiLDApKSwyJnQmJihpZSgyKSxydCgibmdJZiIsIXIubGFiZWwpKX0s'@; put 'ZGVwZW5kZW5jaWVzOltZcyxlbF0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksX2FlPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBZYntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEpe3N1cGVyKHQsdmFlLHIsaSxvLGEpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxu'@; put 'KSh6ZShEcyksemUoTWwpLHplKFYyLDEwKSx6ZShOdCksemUobm8pKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xyUmFkaW8iLCIiXV0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9dfSksbn0pKCksSl90PSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBXYntjb25z'@; put 'dHJ1Y3Rvcih0LHIsaSxvKXtzdXBlcihvLHQscixpKSx0aGlzLmxheW91dFNlcnZpY2U9dCx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9cix0aGlzLm5nQ29udHJvbFNlcnZpY2U9aSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1vLHRoaXMuaW5saW5lPSExLHRoaXMuX2dlbmVyYXRlZElk'@; put 'PVBoKCl9Z2V0IGNscklubGluZSgpe3JldHVybiB0aGlzLmlubGluZX1zZXQgY2xySW5saW5lKHQpe3RoaXMuaW5saW5lPSJzdHJpbmciPT10eXBlb2YgdD8iZmFsc2UiIT09dDohIXR9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXRBcmlhUm9sZXMoKSx0aGlzLnNldEFyaWFMYWJlbGxl'@; put 'ZEJ5KCl9c2V0QXJpYVJvbGVzKCl7dGhpcy5yb2xlPXRoaXMucmFkaW9zLmxlbmd0aD8icmFkaW9ncm91cCI6bnVsbH1zZXRBcmlhTGFiZWxsZWRCeSgpe2NvbnN0IHQ9dGhpcy5ncm91cExhYmVsPy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKTt0P3RoaXMuYXJpYUxhYmVsbGVk'@; put 'Qnk9dGhpcy5yYWRpb3MubGVuZ3RoP3Q6bnVsbDoodGhpcy5ncm91cExhYmVsPy5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuX2dlbmVyYXRlZElkKSx0aGlzLmFyaWFMYWJlbGxlZEJ5PXRoaXMucmFkaW9zLmxlbmd0aD90aGlzLl9nZW5lcmF0ZWRJZDpudWxsKX19cmV0'@; put 'dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoWjUsOCksemUoSTMpLHplKGoyKSx6ZShSMykpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItcmFkaW8tY29udGFpbmVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixp'@; put 'KXtpZigxJnQmJihGYShpLGVsLDcsbm8pLEZhKGksX2FlLDUpKSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLmdyb3VwTGFiZWw9by5maXJzdCksY2kobz11aSgpKSYmKHIucmFkaW9zPW8pfX0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJihScigicm9sZSIs'@; put 'ci5yb2xlKSgiYXJpYS1sYWJlbGxlZGJ5IixyLmFyaWFMYWJlbGxlZEJ5KSx3cigiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1yLmNvbnRyb2w/bnVsbDpyLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixyLmFkZEdyaWQoKSkpfSxp'@; put 'bnB1dHM6e2NscklubGluZToiY2xySW5saW5lIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW2oyLFIzLEkzLEJiXSksRm9dLG5nQ29udGVudFNlbGVjdG9yczpCNnQsZGVjbHM6Nix2YXJzOjYsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5n'@; put 'Q2xhc3MiXSxbImNsYXNzIiwiY2xyLXN1YnRleHQtd3JhcHBlciIsNCwibmdJZiJdLFsxLCJjbHItc3VidGV4dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIs'@; put 'InRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2Vy'@; put 'IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZv'@; put 'KFY2dCksV3IoMCksWW4oMSxqNnQsMSwwLCJsYWJlbCIsMCksSigyLCJkaXYiLDEpLFdyKDMsMSksWW4oNCxVNnQsMiwwLCJkaXYiLDIpKDUsRzZ0LDUsNCwiZGl2IiwyKSx0ZSgpKSwyJnQmJihpZSgpLHJ0KCJuZ0lmIiwhci5sYWJlbCYmci5hZGRHcmlkKCkpLGllKCksd3IoImNsci1jb250'@; put 'cm9sLWlubGluZSIsci5jbHJJbmxpbmUpLHJ0KCJuZ0NsYXNzIixyLmNvbnRyb2xDbGFzcygpKSxpZSgyKSxydCgibmdJZiIsci5zaG93SGVscGVyKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dWYWxpZHx8ci5zaG93SW52YWxpZCkpfSxkZXBlbmRlbmNpZXM6W0ZoLFlzLGVsLEpzXSxlbmNhcHN1'@; put 'bGF0aW9uOjJ9KSxufSkoKSxleXQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25zKEFwLGtwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0'@; put 'czpbcW8sZ2gsTkQsV2wsZ2hdfSksbn0pKCksdHl0PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt6bC5hZGRJY29ucyhBcCxrcCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9'@; put 'bWkoe2ltcG9ydHM6W3FvLGdoLE5ELFdsLGdoXX0pLG59KSgpLENNPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBXYntjb25zdHJ1Y3Rvcih0LHIsaSxvKXtzdXBlcihvLHQscixpKSx0aGlzLmxheW91dFNlcnZpY2U9dCx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9cix0aGlzLm5nQ29udHJvbFNl'@; put 'cnZpY2U9aSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1vLHRoaXMubXVsdGk9ITF9bmdPbkluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm5nQ29udHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKHQ9Pnt0JiYodGhpcy5tdWx0aT10LnZhbHVlQWNjZXNz'@; put 'b3IgaW5zdGFuY2VvZiBsRCx0aGlzLmNvbnRyb2w9dCl9KSl9d3JhcHBlckNsYXNzKCl7cmV0dXJuIHRoaXMubXVsdGk/ImNsci1tdWx0aXNlbGVjdC13cmFwcGVyIjoiY2xyLXNlbGVjdC13cmFwcGVyIn19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8biko'@; put 'emUoWjUsOCksemUoSTMpLHplKGoyKSx6ZShSMykpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItc2VsZWN0LWNvbnRhaW5lciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiZGYShpLGxELDUpLDImdCl7bGV0IG87Y2kobz11aSgpKSYm'@; put 'KHIubXVsdGlwbGU9by5maXJzdCl9fSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsbnVsbD09ci5jb250cm9sP251bGw6ci5jb250cm9sLmRpc2FibGVkKSgiY2xy'@; put 'LXJvdyIsci5hZGRHcmlkKCkpfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbUjMsajIsT3AsSTNdKSxGb10sbmdDb250ZW50U2VsZWN0b3JzOnE2dCxkZWNsczoxMCx2YXJzOjgsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxb'@; put 'MywibmdDbGFzcyJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1j'@; put 'aXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2st'@; put 'Y2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygkNnQpLFdyKDApLFluKDEsSzZ0LDEsMCwibGFiZWwiLDApLEooMiwiZGl2IiwxKSgzLCJkaXYiLDIpLFdy'@; put 'KDQsMSksWW4oNSxYNnQsMSwwLCJjZHMtaWNvbiIsMykoNixRNnQsMSwwLCJjZHMtaWNvbiIsNCksdGUoKSxZbig3LEo2dCwxLDAsIm5nLWNvbnRlbnQiLDApKDgsZTh0LDEsMCwibmctY29udGVudCIsMCkoOSx0OHQsMSwwLCJuZy1jb250ZW50IiwwKSx0ZSgpKSwyJnQmJihpZSgpLHJ0KCJu'@; put 'Z0lmIiwhci5sYWJlbCYmci5hZGRHcmlkKCkpLGllKCkscnQoIm5nQ2xhc3MiLHIuY29udHJvbENsYXNzKCkpLGllKCkscnQoIm5nQ2xhc3MiLHIud3JhcHBlckNsYXNzKCkpLGllKDIpLHJ0KCJuZ0lmIixyLnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dWYWxpZCksaWUoKSxy'@; put 'dCgibmdJZiIsci5zaG93SGVscGVyKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dWYWxpZCkpfSxkZXBlbmRlbmNpZXM6W0ZoLFlzLEpzLGVsXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxxYj0oKCk9PntjbGFzcyBuIGV4dGVuZHMgWWJ7Y29u'@; put 'c3RydWN0b3IodCxyLGksbyxhKXtzdXBlcih0LENNLHIsaSxvLGEpLHRoaXMuaW5kZXg9MX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoRHMpLHplKE1sKSx6ZShWMiwxMCksemUoTnQpLHplKG5vKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4s'@; put 'c2VsZWN0b3JzOltbIiIsImNsclNlbGVjdCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImNsci1zZWxlY3QiLCEwKX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbRm9dfSksbn0pKCksbnl0PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt6'@; put 'bC5hZGRJY29ucyhBcCxrcCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLGhkLFdsLGdoLGdoXX0pLG59KSgpLE1NZT0oKCk9PntjbGFzcyBuIGV4dGVu'@; put 'ZHMgV2J7fXJldHVybiBuLlx1MDI3NWZhYz0oKCk9PntsZXQgZTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuKGV8fChlPXdhKG4pKSkocnx8bil9fSkoKSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItdGV4dGFyZWEtY29udGFpbmVyIl1dLGhvc3RWYXJzOjYsaG9z'@; put 'dEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1yLmNvbnRyb2w/bnVsbDpyLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixyLmFkZEdyaWQoKSl9LHN0YW5kYWxvbmU6ITEsZmVh'@; put 'dHVyZXM6W2JvKFtSMyxqMixPcCxJM10pLEZvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6cjh0LGRlY2xzOjEwLHZhcnM6Nyxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItdGV4dGFyZWEtd3JhcHBlciJdLFsiY2xhc3MiLCJj'@; put 'bHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNz'@; put 'IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2Vz'@; put 'cyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhuOHQpLFdyKDApLFluKDEsaTh0LDEsMCwibGFiZWwiLDApLEooMiwiZGl2IiwxKSgzLCJkaXYiLDIpLFdyKDQsMSksWW4oNSxvOHQsMSwwLCJjZHMt'@; put 'aWNvbiIsMykoNixhOHQsMSwwLCJjZHMtaWNvbiIsNCksdGUoKSxZbig3LHM4dCwxLDAsIm5nLWNvbnRlbnQiLDApKDgsbDh0LDEsMCwibmctY29udGVudCIsMCkoOSxjOHQsMSwwLCJuZy1jb250ZW50IiwwKSx0ZSgpKSwyJnQmJihpZSgpLHJ0KCJuZ0lmIiwhci5sYWJlbCYmci5hZGRHcmlk'@; put 'KCkpLGllKCkscnQoIm5nQ2xhc3MiLHIuY29udHJvbENsYXNzKCkpLGllKDMpLHJ0KCJuZ0lmIixyLnNob3dJbnZhbGlkKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dWYWxpZCksaWUoKSxydCgibmdJZiIsci5zaG93SGVscGVyKSxpZSgpLHJ0KCJuZ0lmIixyLnNob3dJbnZhbGlkKSxpZSgpLHJ0'@; put 'KCJuZ0lmIixyLnNob3dWYWxpZCkpfSxkZXBlbmRlbmNpZXM6W0ZoLFlzLEpzLGVsXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxyVz0oKCk9PntjbGFzcyBuIGV4dGVuZHMgWWJ7Y29uc3RydWN0b3IodCxyLGksbyxhKXtzdXBlcih0LE1NZSxyLGksbyxhKSx0aGlzLmluZGV4PTF9fXJldHVy'@; put 'biBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKERzKSx6ZShNbCksemUoVjIsMTApLHplKE50KSx6ZShubykpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJjbHJUZXh0YXJlYSIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpm'@; put 'dW5jdGlvbih0LHIpezImdCYmd3IoImNsci10ZXh0YXJlYSIsITApfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxufSkoKSxyeXQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25zKEFwLGtwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVy'@; put 'biBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8saGQsV2wsZ2gsZ2hdfSksbn0pKCksVE1lPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1v'@; put 'ZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLGdoLGFfdCxkX3QsWl90LCRfdCxpTWUsUV90LGV5dCxueXQscnl0LHR5dCxoX3QscV90XX0pLG59KSgpLHhNZT0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0'@; put 'fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxb119KSxufSkoKSxpeXQ9KCgpPT57Y2xhc3MgbiBleHRlbmRzIEZvZXtjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCx1LGcsRSl7c3VwZXIodCxyLGksbyxhLGwsdSxnLEUpfX1yZXR1cm4gbi5c'@; put 'dTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShubyksemUoTm9lLDgpLHplKFRsLDgpLHplKGdhKSx6ZShEcyksemUoT29lLDgpLHplKGlNKSx6ZShWeiksemUoVWwpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2RrRHJhZyIsIiJdXSxz'@; put 'dGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxufSkoKSxveXQ9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7fSksbn0pKCksYXl0PSgoKT0+e2Ns'@; put 'YXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvXX0pLG59KSgpO2NsYXNzIGlXe31sZXQgakQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3Ro'@; put 'aXMubmJDaGFuZ2VzPTAsdGhpcy5fY2hhbmdlPW5ldyBNcn1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1jaGFuZ2VTdGFydCgpe3RoaXMubmJDaGFuZ2VzKyt9Y2hhbmdlRG9uZSgpezA9PT0tLXRoaXMubmJDaGFuZ2VzJiZ0aGlzLl9jaGFuZ2UubmV4'@; put 'dCgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxJdj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RhdGVEZWJvdW5jZXI9dCx0aGlz'@; put 'LmFjdGl2YXRlZD0hMSx0aGlzLl9zaXplPTAsdGhpcy5fY3VycmVudD0xLHRoaXMuX2NoYW5nZT1uZXcgTXIsdGhpcy5wcmV2ZW50RW1pdD0hMSx0aGlzLl9zaXplQ2hhbmdlPW5ldyBNcn1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfXNldCBzaXplKHQpe2NvbnN0IHI9dGhpcy5fc2l6'@; put 'ZTt0IT09ciYmKHRoaXMucHJldmVudEVtaXR8fHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9zaXplPXQsdGhpcy5fY3VycmVudD0wPT09dD8xOk1hdGguZmxvb3Ioci90Kih0aGlzLl9jdXJyZW50LTEpKSsxLHRoaXMucHJldmVudEVtaXR8fCh0aGlzLl9jaGFuZ2Uu'@; put 'bmV4dCh0aGlzLl9jdXJyZW50KSx0aGlzLl9zaXplQ2hhbmdlLm5leHQodGhpcy5fc2l6ZSksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCkpKSx0aGlzLnByZXZlbnRFbWl0PSExfWdldCB0b3RhbEl0ZW1zKCl7cmV0dXJuIHRoaXMuX3RvdGFsSXRlbXN8fDB9c2V0IHRvdGFsSXRl'@; put 'bXModCl7dGhpcy5fdG90YWxJdGVtcz10LHRoaXMuY3VycmVudD50aGlzLmxhc3QmJih0aGlzLmN1cnJlbnQ9dGhpcy5sYXN0KX1nZXQgbGFzdCgpe3JldHVybiB0aGlzLl9sYXN0P3RoaXMuX2xhc3Q6dGhpcy5zaXplPjAmJnRoaXMudG90YWxJdGVtcz9NYXRoLmNlaWwodGhpcy50b3RhbEl0'@; put 'ZW1zL3RoaXMuc2l6ZSk6MX1zZXQgbGFzdCh0KXt0aGlzLl9sYXN0PXR9Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IHNpemVDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fc2l6ZUNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudCgpe3JldHVy'@; put 'biB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KHQpe3QhPT10aGlzLl9jdXJyZW50JiYodGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX2N1cnJlbnQ9dCx0aGlzLl9jaGFuZ2UubmV4dCh0KSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKSl9Z2V0IGZpcnN0'@; put 'SXRlbSgpe3JldHVybiAwPT09dGhpcy5fdG90YWxJdGVtcz8tMTowPT09dGhpcy5zaXplPzA6KHRoaXMuY3VycmVudC0xKSp0aGlzLnNpemV9Z2V0IGxhc3RJdGVtKCl7aWYoMD09PXRoaXMuX3RvdGFsSXRlbXMpcmV0dXJuLTE7aWYoMD09PXRoaXMuc2l6ZSlyZXR1cm4gdGhpcy50b3RhbEl0'@; put 'ZW1zLTE7bGV0IHQ9dGhpcy5jdXJyZW50KnRoaXMuc2l6ZS0xO3JldHVybiB0aGlzLnRvdGFsSXRlbXMmJih0PU1hdGgubWluKHQsdGhpcy50b3RhbEl0ZW1zLTEpKSx0fXByZXZpb3VzKCl7dGhpcy5jdXJyZW50PjEmJnRoaXMuY3VycmVudC0tfW5leHQoKXt0aGlzLmN1cnJlbnQ8dGhpcy5s'@; put 'YXN0JiZ0aGlzLmN1cnJlbnQrK31yZXNldFBhZ2VTaXplKHQ9ITEpe3RoaXMucHJldmVudEVtaXQ9dCx0aGlzLnNpemU9MH19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoakQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5c'@; put 'dTAyNzVmYWN9KSxufSkoKSxsNz0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscil7dGhpcy5fcGFnZT10LHRoaXMuc3RhdGVEZWJvdW5jZXI9cix0aGlzLl9jaGFuZ2U9bmV3IE1yLHRoaXMuX2FsbD1bXX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUo'@; put 'KX1oYXNBY3RpdmVGaWx0ZXJzKCl7Zm9yKGNvbnN0e2ZpbHRlcjp0fW9mIHRoaXMuX2FsbClpZih0JiZ0LmlzQWN0aXZlKCkpcmV0dXJuITA7cmV0dXJuITF9Z2V0QWN0aXZlRmlsdGVycygpe2NvbnN0IHQ9W107Zm9yKGNvbnN0e2ZpbHRlcjpyfW9mIHRoaXMuX2FsbClyJiZyLmlzQWN0aXZl'@; put 'KCkmJnQucHVzaChyKTtyZXR1cm4gdH1hZGQodCl7Y29uc3Qgcj10LmNoYW5nZXMuc3Vic2NyaWJlKCgpPT50aGlzLnJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoW3RdKSk7bGV0IGk9ITE7Y29uc3Qgbz1uZXcgb1codCwoKT0+e2lmKGkpcmV0dXJuO3IudW5zdWJzY3JpYmUoKTtjb25z'@; put 'dCBhPXRoaXMuX2FsbC5maW5kSW5kZXgobD0+bC5maWx0ZXI9PT10KTthPj0wJiZ0aGlzLl9hbGwuc3BsaWNlKGEsMSksdC5pc0FjdGl2ZSgpJiZ0aGlzLnJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoW10pLGk9ITB9KTtyZXR1cm4gdGhpcy5fYWxsLnB1c2gobyksdC5pc0FjdGl2ZSgp'@; put 'JiZ0aGlzLnJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoW3RdKSxvfWFjY2VwdHModCl7Zm9yKGNvbnN0e2ZpbHRlcjpyfW9mIHRoaXMuX2FsbClpZihyJiZyLmlzQWN0aXZlKCkmJiFyLmFjY2VwdHModCkpcmV0dXJuITE7cmV0dXJuITB9cmVzZXRQYWdlQW5kRW1pdEZpbHRlckNoYW5n'@; put 'ZSh0KXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fcGFnZS5jdXJyZW50PTEsdGhpcy5fY2hhbmdlLm5leHQodCksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9y'@; put 'KEl2KSxvcihqRCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpO2NsYXNzIG9Xe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maWx0ZXI9ZSx0aGlzLnVucmVnaXN0ZXI9dH19bGV0IGFXPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhp'@; put 'cy5maWx0ZXJzPXR9Z2V0IGZpbHRlcigpe3JldHVybiB0aGlzLnJlZ2lzdGVyZWQmJnRoaXMucmVnaXN0ZXJlZC5maWx0ZXJ9bmdPbkRlc3Ryb3koKXt0aGlzLmRlbGV0ZUZpbHRlcigpfXNldEZpbHRlcih0KXt0aGlzLmRlbGV0ZUZpbHRlcigpLHQgaW5zdGFuY2VvZiBvVz90aGlzLnJlZ2lz'@; put 'dGVyZWQ9dDp0JiYodGhpcy5yZWdpc3RlcmVkPXRoaXMuZmlsdGVycy5hZGQodCkpfWRlbGV0ZUZpbHRlcigpe3RoaXMucmVnaXN0ZXJlZCYmKHRoaXMucmVnaXN0ZXJlZC51bnJlZ2lzdGVyKCksZGVsZXRlIHRoaXMucmVnaXN0ZXJlZCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0'@; put 'KXtyZXR1cm4gbmV3KHR8fG4pKHplKGw3KSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc3RhbmRhbG9uZTohMX0pLG59KSgpO2NsYXNzIEFNZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnV0aWxzPWV9a2V5VXAoZSl7Y29uc3QgdD10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpO2lm'@; put 'KDA9PT1lLnkpcmV0dXJuIHQ7dC55PWUueS0xO2NvbnN0IHI9dGhpcy51dGlscy5pc0FjdGlvbkNlbGwoZSk7cmV0dXJuIHRoaXMudXRpbHMuaXNTaW5nbGVDZWxsRXhwYW5kZWRSb3codC55KSYmIXImJnRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk/dC54PTA6dGhpcy51dGlscy5pc0Rl'@; put 'dGFpbHNSb3codC55KSYmKHI/dC55PXQueS0xOnQueD10LngtdGhpcy51dGlscy5hY3Rpb25DZWxsQ291bnQoZS55KSksdH1rZXlEb3duKGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKTtpZihlLnk+PSh0aGlzLnV0aWxzLnJvd3M/dGhpcy51dGlscy5yb3dz'@; put 'Lmxlbmd0aC0xOjApKXJldHVybiB0O2NvbnN0IGk9dGhpcy51dGlscy5pc0FjdGlvbkNlbGwoZSk7cmV0dXJuIHQueT1lLnkrMSwhaSYmdGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKHQueSkmJih0Lnk9dC55KzEsdC54PXRoaXMudXRpbHMuaXNTaW5nbGVDZWxsRXhwYW5kZWRSb3codC55KT8w'@; put 'OnQueC10aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudChlLnkpKSx0fWtleUxlZnQoZSl7Y29uc3QgdD10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpO3JldHVybiAwPT09ZS54fHwodC54PWUueC0xKSx0fWtleVJpZ2h0KGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0'@; put 'Q2VsbENvb3JkcyhlKSxyPXRoaXMudXRpbHMucm93cz8ubGVuZ3RoLTE/dGhpcy51dGlscy5nZXRDZWxsc0ZvclJvdygwKS5sZW5ndGgtMTowO3JldHVybiB0Lng9ZS54PHI/dC54KzE6dC54LHR9a2V5RW5kKGUsdCl7Y29uc3Qgcj10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUp'@; put 'LGk9dGhpcy51dGlscy5yb3dzP3RoaXMudXRpbHMucm93cy5sZW5ndGgtMTowO3JldHVybiByLng9aT90aGlzLnV0aWxzLmdldENlbGxzRm9yUm93KDApLmxlbmd0aC0xOjAsdCYmKHIueT1pLHRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHIueSkmJihyLng9dGhpcy51dGlscy5nZXRDZWxsc0Zv'@; put 'clJvdyhyLnkpLmxlbmd0aC0xKSkscn1rZXlIb21lKGUsdCl7Y29uc3Qgcj10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpO3JldHVybiByLng9MCx0JiYoci55PTApLHJ9a2V5UGFnZVVwKGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKSxyPXRo'@; put 'aXMudXRpbHMuaXRlbXNQZXJQYWdlO3JldHVybiB0Lnk9ZS55LXI+MD9lLnktcisxOjEsdGhpcy51dGlscy5pc0FjdGlvbkNlbGwoZSk/dGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KSYmKHQueT10LnktMSk6dGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KT90Lng9dGhpcy51dGlscy5p'@; put 'c1NpbmdsZUNlbGxFeHBhbmRlZFJvdyh0LnkpPzA6dC54LXRoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KGUueSk6dGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKHQueSkmJih0Lnk9dC55KzEsdC54PXRoaXMudXRpbHMuaXNTaW5nbGVDZWxsRXhwYW5kZWRSb3codC55KT8wOnQueC10aGlzLnV0'@; put 'aWxzLmFjdGlvbkNlbGxDb3VudChlLnkpKSx0fWtleVBhZ2VEb3duKGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKSxyPXRoaXMudXRpbHMucm93cz90aGlzLnV0aWxzLnJvd3MubGVuZ3RoLTE6MCxpPXRoaXMudXRpbHMuaXRlbXNQZXJQYWdlO3JldHVybiB0'@; put 'Lnk9ZS55K2k+PXI/cjplLnkraSx0aGlzLnV0aWxzLmlzQWN0aW9uQ2VsbChlKSYmdGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KT90Lnk9dC55LTE6dGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KSYmdGhpcy51dGlscy5pc1NpbmdsZUNlbGxFeHBhbmRlZFJvdyh0LnkpP3QueD0wOnRo'@; put 'aXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk/dC54PXQueC10aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudChlLnkpOnRoaXMudXRpbHMuaXNSb3dSZXBsYWNlZCh0LnkpJiYodC55PXQueSsxLHQueD10aGlzLnV0aWxzLmlzU2luZ2xlQ2VsbEV4cGFuZGVkUm93KHQueSk/MDp0LngtdGhpcy51'@; put 'dGlscy5hY3Rpb25DZWxsQ291bnQoZS55KSksdH19Y2xhc3Mga01lIGV4dGVuZHMgQU1le2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfWtleVVwKGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKTtpZigwPT09ZS55KXJldHVybiB0O2lmKHQueT1lLnktMSx0aGlz'@; put 'LnV0aWxzLmlzQWN0aW9uQ2VsbChlKSl0aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpJiZ0Lnk+MCYmKHQueT10LnktMSk7ZWxzZSBzd2l0Y2godGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKGUueSkmJih0Lnk9dC55LTEpLCEwKXtjYXNlIHRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk6'@; put 'dC54PTA7YnJlYWs7Y2FzZSExPT09dGhpcy51dGlscy5pc0RldGFpbHNSb3coZS55KTp0Lng9ZS54O2JyZWFrO2RlZmF1bHQ6dC54PXRoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KHQueSl9cmV0dXJuIHR9a2V5RG93bihlKXtjb25zdCB0PXRoaXMudXRpbHMuY3JlYXRlTmV4dENlbGxDb29y'@; put 'ZHMoZSkscj10aGlzLnV0aWxzLnJvd3M/dGhpcy51dGlscy5yb3dzLmxlbmd0aC0xOjA7cmV0dXJuIGUueT49cnx8KHQueT1lLnkrMSx0aGlzLnV0aWxzLmlzQWN0aW9uQ2VsbChlKT90Lnk9dC55PHI/dC55KzE6dC55Oih0aGlzLnV0aWxzLmlzUm93UmVwbGFjZWQodC55KSYmKHQueT10Lnkr'@; put 'MSksdC54PXRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk/MDp0aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudCh0LnkpKSksdH1rZXlMZWZ0KGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKTtyZXR1cm4gdGhpcy51dGlscy5pc0RldGFpbHNSb3coZS55KXx8'@; put 'dGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKGUueSk/KDAhPT1lLng/dC54PWUueC0xOnRoaXMudXRpbHMuaXNBY3Rpb25DZWxsKGUpfHwodC55PWUueS0xLHQueD10aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudCh0LnkpLTEpLHQpOnN1cGVyLmtleUxlZnQoZSl9a2V5UmlnaHQoZSl7Y29uc3Qg'@; put 'dD10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpO2lmKCF0aGlzLnV0aWxzLmlzRGV0YWlsc1JvdyhlLnkpJiYhdGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKGUueSkpcmV0dXJuIHN1cGVyLmtleVJpZ2h0KGUpO2NvbnN0IHI9dGhpcy51dGlscy5yb3dzPy5sZW5ndGgtMT90aGlz'@; put 'LnV0aWxzLmdldENlbGxzRm9yUm93KDApLmxlbmd0aC0xOjA7cmV0dXJuIGUueD49cnx8KHRoaXMudXRpbHMuaXNBY3Rpb25DZWxsKGUpJiZlLng9PT10aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudChlLngpLTEmJnRoaXMudXRpbHMuaXNSb3dSZXBsYWNlZChlLnkpJiYhdGhpcy51dGlscy5p'@; put 'c0RldGFpbHNSb3coZS55KT8odC55PWUueSsxLHQueD0wKTp0Lng9ZS54KzEpLHR9a2V5RW5kKGUsdCl7Y29uc3Qgcj10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpO3JldHVybiF0aGlzLnV0aWxzLmlzRGV0YWlsc1JvdyhlLnkpJiYhdGhpcy51dGlscy5pc1Jvd1JlcGxhY2Vk'@; put 'KGUueSl8fHQ/c3VwZXIua2V5RW5kKGUsdCk6KHIueD10aGlzLnV0aWxzLmdldENlbGxzRm9yUm93KGUueSkubGVuZ3RoLTEscil9a2V5SG9tZShlLHQpe2NvbnN0IHI9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKTtyZXR1cm4gdGhpcy51dGlscy5pc0RldGFpbHNSb3coZS55'@; put 'KXx8dGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKGUueSk/KHIueD0wLHIueT1lLnktMSx0JiYoci55PTApLHIpOnN1cGVyLmtleUhvbWUoZSx0KX1rZXlQYWdlVXAoZSl7Y29uc3QgdD10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpLHI9dGhpcy51dGlscy5pdGVtc1BlclBhZ2U7'@; put 'cmV0dXJuIHQueT1lLnktcj4wP2UueS1yKzE6MSx0aGlzLnV0aWxzLmlzQWN0aW9uQ2VsbChlKT90aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpJiYodC55PXQueS0xKTp0aGlzLnV0aWxzLmlzUm93UmVwbGFjZWQodC55KT90aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpfHwodC55PXQu'@; put 'eSsxLHQueD0wKTp0aGlzLnV0aWxzLmlzRGV0YWlsc1JvdyhlLnkpP3RoaXMudXRpbHMuaXNEZXRhaWxzUm93KGUueSkmJih0aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpfHwodC54PXRoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KHQueSkpKTp0aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0'@; put 'LnkpJiYodC54PTApLHR9a2V5UGFnZURvd24oZSl7Y29uc3QgdD10aGlzLnV0aWxzLmNyZWF0ZU5leHRDZWxsQ29vcmRzKGUpLHI9dGhpcy51dGlscy5yb3dzP3RoaXMudXRpbHMucm93cy5sZW5ndGgtMTowLGk9dGhpcy51dGlscy5pdGVtc1BlclBhZ2U7cmV0dXJuIHQueT1lLnkraT49cj9y'@; put 'OmUueStpLHRoaXMudXRpbHMuaXNBY3Rpb25DZWxsKGUpP3RoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSkmJih0Lnk9dC55LTEpOnRoaXMudXRpbHMuaXNSb3dSZXBsYWNlZCh0LnkpP3QueTxyJiYhdGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KSYmKHQueT10LnkrMSk6dGhpcy51dGls'@; put 'cy5pc0RldGFpbHNSb3coZS55KSYmIXRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk/dC54PWUueCt0aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudCh0LnkpOnRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSkmJih0Lng9MCksdH19Y2xhc3Mgc3l0IGV4dGVuZHMga01le2NvbnN0cnVjdG9y'@; put 'KGUpe3N1cGVyKGUpfWtleVVwKGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKTtpZigwPT09ZS55KXJldHVybiB0O2lmKHQueT1lLnktMSx0aGlzLnV0aWxzLmlzU2luZ2xlQ2VsbEV4cGFuZGVkUm93KHQueSkpcmV0dXJuIHN1cGVyLmtleVVwKGUpO2NvbnN0'@; put 'IHI9dGhpcy51dGlscy5pc0FjdGlvbkNlbGwoZSk7cmV0dXJuIHImJnRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk/dC55PXQueS0xOnRoaXMudXRpbHMuaXNSb3dSZXBsYWNlZCh0LnkpPyh0Lnk9dC55LTEsdGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KXx8KHQueD1lLngrdGhpcy51'@; put 'dGlscy5hY3Rpb25DZWxsQ291bnQodC55KSkpOnRoaXMudXRpbHMuaXNEZXRhaWxzUm93KGUueSkmJiF0aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpP3QueD1lLngrdGhpcy51dGlscy5hY3Rpb25DZWxsQ291bnQodC55KTohciYmdGhpcy51dGlscy5pc0RldGFpbHNSb3codC55KSYmKHQu'@; put 'eD1lLngtdGhpcy51dGlscy5hY3Rpb25DZWxsQ291bnQoZS55KSksdH1rZXlEb3duKGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKSxyPXRoaXMudXRpbHMucm93cz90aGlzLnV0aWxzLnJvd3MubGVuZ3RoLTE6MCxpPXI/dGhpcy51dGlscy5nZXRDZWxsc0Zv'@; put 'clJvdygwKS5sZW5ndGgtMTowO3JldHVybiBlLnk+PXI/dDoodC55PWUueSsxLHRoaXMudXRpbHMuaXNTaW5nbGVDZWxsRXhwYW5kZWRSb3codC55KT9zdXBlci5rZXlEb3duKGUpOih0aGlzLnV0aWxzLmlzQWN0aW9uQ2VsbChlKXx8dGhpcy51dGlscy5pc1Jvd1JlcGxhY2VkKHQueSk/dC55'@; put 'PXQueTxyP3QueSsxOnQueS0xOnQueD10aGlzLnV0aWxzLmdldENlbGxzRm9yUm93KGUueSkubGVuZ3RoPmk/ZS54LXRoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KGUueSk6ZS54K3RoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KHQueSksdCkpfWtleUxlZnQoZSl7cmV0dXJuIHN1cGVyLmtl'@; put 'eUxlZnQoZSl9a2V5UmlnaHQoZSl7cmV0dXJuIHN1cGVyLmtleVJpZ2h0KGUpfWtleUVuZChlLHQpe3JldHVybiBzdXBlci5rZXlFbmQoZSx0KX1rZXlIb21lKGUsdCl7cmV0dXJuIHN1cGVyLmtleUhvbWUoZSx0KX1rZXlQYWdlVXAoZSl7Y29uc3QgdD10aGlzLnV0aWxzLmNyZWF0ZU5leHRD'@; put 'ZWxsQ29vcmRzKGUpLHI9dGhpcy51dGlscy5pdGVtc1BlclBhZ2U7cmV0dXJuIHQueT1lLnktcj4wP2UueS1yKzE6MSx0aGlzLnV0aWxzLmlzU2luZ2xlQ2VsbEV4cGFuZGVkUm93KHQueSk/c3VwZXIua2V5UGFnZVVwKGUpOih0aGlzLnV0aWxzLmlzQWN0aW9uQ2VsbChlKT90aGlzLnV0aWxz'@; put 'LmlzRGV0YWlsc1Jvdyh0LnkpJiYodC55PXQueS0xKTp0aGlzLnV0aWxzLmlzUm93UmVwbGFjZWQodC55KT90aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpfHwodC55PXQueSsxLHQueD1lLngrdGhpcy51dGlscy5hY3Rpb25DZWxsQ291bnQodC55KSk6dGhpcy51dGlscy5pc0RldGFpbHNS'@; put 'b3coZS55KSYmIXRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSk/dC54PWUueCt0aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudCh0LnkpOnRoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSkmJih0Lng9ZS54LXRoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KGUueSkpLHQpfWtleVBhZ2VEb3du'@; put 'KGUpe2NvbnN0IHQ9dGhpcy51dGlscy5jcmVhdGVOZXh0Q2VsbENvb3JkcyhlKSxyPXRoaXMudXRpbHMucm93cz90aGlzLnV0aWxzLnJvd3MubGVuZ3RoLTE6MCxpPXRoaXMudXRpbHMuaXRlbXNQZXJQYWdlO3JldHVybiB0Lnk9ZS55K2k+PXI/cjplLnkraSx0aGlzLnV0aWxzLmlzU2luZ2xl'@; put 'Q2VsbEV4cGFuZGVkUm93KHQueSk/c3VwZXIua2V5UGFnZURvd24oZSk6KHRoaXMudXRpbHMuaXNBY3Rpb25DZWxsKGUpP3RoaXMudXRpbHMuaXNEZXRhaWxzUm93KHQueSkmJih0Lnk9dC55LTEpOnRoaXMudXRpbHMuaXNSb3dSZXBsYWNlZCh0LnkpJiYhdGhpcy51dGlscy5pc0RldGFpbHNS'@; put 'b3codC55KT90Lnk8ciYmKHQueT10LnkrMSx0Lng9ZS54K3RoaXMudXRpbHMuYWN0aW9uQ2VsbENvdW50KHQueSkpOnRoaXMudXRpbHMuaXNEZXRhaWxzUm93KGUueSkmJiF0aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpP3QueD1lLngrdGhpcy51dGlscy5hY3Rpb25DZWxsQ291bnQodC55'@; put 'KTp0aGlzLnV0aWxzLmlzRGV0YWlsc1Jvdyh0LnkpJiYodC54PWUueC10aGlzLnV0aWxzLmFjdGlvbkNlbGxDb3VudChlLnkpKSx0KX19Y2xhc3MgbHl0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ob3N0PWUsdGhpcy5jb25maWc9dH1nZXQgZ3JpZCgpe3JldHVybiB0aGlzLmhvc3Q/LnF1ZXJ5'@; put 'U2VsZWN0b3IodGhpcy5jb25maWcua2V5R3JpZCl9Z2V0IHJvd3MoKXtyZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRSb3dzKX1nZXQgY2VsbHMoKXtyZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdy'@; put 'aWRDZWxscyl9Z2V0IGN1cnJlbnRDZWxsQ29vcmRpbmF0ZXMoKXtjb25zdCBlPXRoaXMuY2VsbHM/QXJyYXkuZnJvbSh0aGlzLmNlbGxzKS5maW5kKGk9PiIwIj09PWkuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpKTpudWxsLHQ9ZT9lLmNsb3Nlc3QodGhpcy5jb25maWcua2V5R3JpZFJvd3Mp'@; put 'Om51bGw7cmV0dXJue3g6dCYmZT9BcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbCh0aGlzLmNvbmZpZy5rZXlHcmlkQ2VsbHMpKS5pbmRleE9mKGUpOjAseTp0JiZlJiZ0aGlzLnJvd3M/QXJyYXkuZnJvbSh0aGlzLnJvd3MpLmluZGV4T2YodCk6MH19Z2V0IGl0ZW1zUGVyUGFnZSgpe3Jl'@; put 'dHVybiBNYXRoLmZsb29yKHRoaXMuaG9zdD8ucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkIikuY2xpZW50SGVpZ2h0L3RoaXMucm93c1swXS5jbGllbnRIZWlnaHQpLTF8fDB9Z2V0TmV4dEl0ZW1Db29yZGluYXRlKGUpe2NvbnN0IHQ9dGhpcy5jdXJyZW50Q2VsbENvb3JkaW5hdGVzLHI9dGhp'@; put 'cy5nZXROYXZTdHJhdGVneSh0KTtzd2l0Y2goZS5rZXkpe2Nhc2UgTW8uQXJyb3dVcDpyZXR1cm4gci5rZXlVcCh0KTtjYXNlIE1vLkFycm93RG93bjpyZXR1cm4gci5rZXlEb3duKHQpO2Nhc2UicnRsIj09PXRoaXMuaG9zdC5kaXI/TW8uQXJyb3dSaWdodDpNby5BcnJvd0xlZnQ6cmV0dXJu'@; put 'IHIua2V5TGVmdCh0KTtjYXNlInJ0bCI9PT10aGlzLmhvc3QuZGlyP01vLkFycm93TGVmdDpNby5BcnJvd1JpZ2h0OnJldHVybiByLmtleVJpZ2h0KHQpO2Nhc2UgTW8uSG9tZTpyZXR1cm4gci5rZXlIb21lKHQsZS5jdHJsS2V5KTtjYXNlIE1vLkVuZDpyZXR1cm4gci5rZXlFbmQodCxlLmN0'@; put 'cmxLZXkpO2Nhc2UgTW8uUGFnZVVwOnJldHVybiByLmtleVBhZ2VVcCh0KTtjYXNlIE1vLlBhZ2VEb3duOnJldHVybiByLmtleVBhZ2VEb3duKHQpO2RlZmF1bHQ6cmV0dXJuIHR9fWdldENlbGxzRm9yUm93KGUpe3JldHVybiB0aGlzLnJvd3NbZV0ucXVlcnlTZWxlY3RvckFsbCh0aGlzLmNv'@; put 'bmZpZy5rZXlHcmlkQ2VsbHMpfWlzRXhwYW5kZWRSb3coZSl7Y29uc3QgdD10aGlzLnJvd3NbZV0ucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkLXJvdy1kZXRhaWwiKTtyZXR1cm4hIXQmJiJub25lIiE9PXQuc3R5bGUuZGlzcGxheX1pc0RldGFpbHNSb3coZSl7cmV0dXJuIHRoaXMucm93c1tl'@; put 'XS5jbGFzc0xpc3QuY29udGFpbnMoImRhdGFncmlkLXJvdy1kZXRhaWwiKX1pc1Jvd1JlcGxhY2VkKGUpe3JldHVybiEhdGhpcy5yb3dzW2VdLmNsb3Nlc3QoImNsci1kZy1yb3cuZGF0YWdyaWQtcm93LXJlcGxhY2VkIil9aXNTaW5nbGVDZWxsRXhwYW5kZWRSb3coZSl7cmV0dXJuIDE9PT10'@; put 'aGlzLnJvd3NbZV0/LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb25maWcua2V5R3JpZENlbGxzKS5sZW5ndGh9YWN0aW9uQ2VsbENvdW50KGUpe3JldHVybiB0aGlzLmFjdGlvbkNlbGxzQXNBcnJheShlKS5sZW5ndGh9YWN0aW9uQ2VsbHNBc0FycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKHRo'@; put 'aXMucm93c1tlXS5xdWVyeVNlbGVjdG9yQWxsKCIuZGF0YWdyaWQtcm93LXN0aWNreSAuZGF0YWdyaWQtY2VsbCwgLmRhdGFncmlkLXJvdy1zdGlja3kgLmRhdGFncmlkLWNvbHVtbiIpKX1pc0FjdGlvbkNlbGwoZSl7cmV0dXJuISF0aGlzLmFjdGlvbkNlbGxzQXNBcnJheShlLnkpW2UueF19'@; put 'Y3JlYXRlTmV4dENlbGxDb29yZHMoZSl7cmV0dXJue3g6ZS54LHk6ZS55fX1nZXROYXZTdHJhdGVneShlKXtzd2l0Y2goITApe2Nhc2UgdGhpcy5pc1NpbmdsZUNlbGxFeHBhbmRlZFJvdyhlLnkpOnJldHVybiBuZXcga01lKHRoaXMpO2Nhc2UgdGhpcy5pc0RldGFpbHNSb3coZS55KTpjYXNl'@; put 'IHRoaXMuaXNFeHBhbmRlZFJvdyhlLnkpOnJldHVybiBuZXcgc3l0KHRoaXMpO2RlZmF1bHQ6cmV0dXJuIG5ldyBBTWUodGhpcyl9fX1jb25zdCBSTWU9WyJhW2hyZWZdIiwiYXJlYVtocmVmXSIsImlucHV0Om5vdChbZGlzYWJsZWRdKSIsImJ1dHRvbjpub3QoW2Rpc2FibGVkXSkiLCJzZWxl'@; put 'Y3Q6bm90KFtkaXNhYmxlZF0pIiwidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pIiwiaWZyYW1lIiwib2JqZWN0IiwiZW1iZWQiLCJbY29udGVudGVkaXRhYmxlPXRydWVdIiwiW3JvbGU9YnV0dG9uXTpub3QoW2Rpc2FibGVkXSkiXTtmdW5jdGlvbiB1eXQobil7Y29uc3QgZT1STWUuam9pbigi'@; put 'LCIpO3JldHVybiBuLm1hdGNoZXMoZSl9bGV0IHNXPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy56b25lPXQsdGhpcy5za2lwSXRlbUZvY3VzPSExLHRoaXMubGlzdGVuZXJzQWRkZWQ9ITEsdGhpcy5kZXN0cm95JD1uZXcgTXIsdGhpcy5fYWN0aXZlQ2VsbD1udWxsLHRoaXMu'@; put 'Y29uZmlnPXtrZXlHcmlkUm93czonW3JvbGU9cm93XTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyKTpub3QoW3N0eWxlKj0iZGlzcGxheTogbm9uZSJdKScsa2V5R3JpZENlbGxzOiJbcm9sZT1ncmlkY2VsbF06bm90KC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uKTpub3QoLmRhdGFncmlkLXBs'@; put 'YWNlaG9sZGVyLWNvbnRlbnQpLCBbcm9sZT1jb2x1bW5oZWFkZXJdOm5vdCguZGF0YWdyaWQtaGlkZGVuLWNvbHVtbik6bm90KC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250ZW50KSwgLmRhdGFncmlkLWRldGFpbC1jYXJldCIsa2V5R3JpZDoiW3JvbGU9Z3JpZF0ifX1uZ09uRGVzdHJveSgp'@; put 'e3RoaXMuZGVzdHJveSQubmV4dCgpLHRoaXMuZGVzdHJveSQuY29tcGxldGUoKX1hZGRMaXN0ZW5lcnMoKXt0aGlzLmxpc3RlbmVyc0FkZGVkfHwodGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57SmcodGhpcy5rZXlOYXZVdGlscy5ncmlkLCJtb3VzZWRvd24iKS5waXBlKHYwKHRo'@; put 'aXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodD0+e2lmKDE9PT10LmJ1dHRvbnMmJiF0LmN0cmxLZXkpe2NvbnN0IHI9dGhpcy5rZXlOYXZVdGlscy5jZWxscz9BcnJheS5mcm9tKHRoaXMua2V5TmF2VXRpbHMuY2VsbHMpLmZpbmQoaT0+aT09PXQudGFyZ2V0fHxpPT09dC50YXJnZXQuY2xvc2Vz'@; put 'dCh0aGlzLmNvbmZpZy5rZXlHcmlkQ2VsbHMpKTpudWxsO3ImJnRoaXMuc2V0QWN0aXZlQ2VsbChyLHtrZWVwRm9jdXM6dXl0KHQudGFyZ2V0KX0pfX0pLEpnKHRoaXMua2V5TmF2VXRpbHMuZ3JpZCwid2hlZWwiKS5waXBlKHYwKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlz'@; put 'LnJlbW92ZUFjdGl2ZUNlbGwoKX0pLEpnKHRoaXMua2V5TmF2VXRpbHMuZ3JpZCwiZm9jdXNvdXQiKS5waXBlKE5iKDApLHYwKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmtleU5hdlV0aWxzLmdyaWQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHRoaXMu'@; put 'cmVtb3ZlQWN0aXZlQ2VsbCgpfSksSmcodGhpcy5rZXlOYXZVdGlscy5ncmlkLCJrZXlkb3duIikucGlwZSh2MCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHQ9PntpZigoIXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZHJhZy1oYW5kbGUiKXx8dC5rZXkhPT1Nby5BcnJvd0xlZnQm'@; put 'JnQua2V5IT09TW8uQXJyb3dSaWdodCkmJih0LmtleT09PU1vLkFycm93VXB8fHQua2V5PT09TW8uQXJyb3dEb3dufHx0LmtleT09PU1vLkFycm93TGVmdHx8dC5rZXk9PT1Nby5BcnJvd1JpZ2h0fHx0LmtleT09PU1vLkVuZHx8dC5rZXk9PT1Nby5Ib21lfHx0LmtleT09PU1vLlBhZ2VVcHx8'@; put 'dC5rZXk9PT1Nby5QYWdlRG93bikpe2NvbnN0IHI9dGhpcy5rZXlOYXZVdGlscy5nZXROZXh0SXRlbUNvb3JkaW5hdGUodCksaT10aGlzLmtleU5hdlV0aWxzLnJvd3M/QXJyYXkuZnJvbSh0aGlzLmtleU5hdlV0aWxzLmdldENlbGxzRm9yUm93KHIueSkpW3IueF06bnVsbDtpJiZ0aGlzLnNl'@; put 'dEFjdGl2ZUNlbGwoaSksdC5wcmV2ZW50RGVmYXVsdCgpfX0pfSksdGhpcy5saXN0ZW5lcnNBZGRlZD0hMCl9aW5pdGlhbGl6ZUtleUdyaWQodCl7dGhpcy5rZXlOYXZVdGlscz1uZXcgbHl0KHQsdGhpcy5jb25maWcpLHRoaXMuYWRkTGlzdGVuZXJzKCksdGhpcy5yZXNldEtleUdyaWQoKX1y'@; put 'ZXNldEtleUdyaWQoKXt0aGlzLmtleU5hdlV0aWxzLmNlbGxzPy5mb3JFYWNoKHI9PnIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIikpLCh0aGlzLmtleU5hdlV0aWxzLmNlbGxzP3RoaXMua2V5TmF2VXRpbHMuY2VsbHNbMF06bnVsbCk/LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIw'@; put 'Iil9cmVtb3ZlQWN0aXZlQ2VsbCgpe3RoaXMuX2FjdGl2ZUNlbGw9bnVsbH1nZXRBY3RpdmVDZWxsKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUNlbGx9c2V0QWN0aXZlQ2VsbCh0LHtrZWVwRm9jdXM6cn09e2tlZXBGb2N1czohMX0pe2NvbnN0IGk9dGhpcy5rZXlOYXZVdGlscy5jZWxscz9BcnJh'@; put 'eS5mcm9tKHRoaXMua2V5TmF2VXRpbHMuY2VsbHMpLmZpbmQobz0+IjAiPT09by5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikpOm51bGw7aWYoaSYmaS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksdGhpcy5fYWN0aXZlQ2VsbD10'@; put 'LCF0aGlzLnNraXBJdGVtRm9jdXMmJiFyKXtsZXQgbztpZigiY29sdW1uaGVhZGVyIj09PXQuZ2V0QXR0cmlidXRlKCJyb2xlIikpbz10O2Vsc2V7Y29uc3QgYT1mdW5jdGlvbiBjeXQobil7Y29uc3QgdD1bLi4uUk1lLCdbdGFiaW5kZXg9IjAiXTpub3QoW2Rpc2FibGVkXSknXS5qb2luKCIs'@; put 'Iik7cmV0dXJuIEFycmF5LmZyb20obi5xdWVyeVNlbGVjdG9yQWxsKHQpKX0odCk7bz1hLmxlbmd0aD9hWzBdOnR9by5mb2N1cygpfX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoZ2EpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rv'@; put 'cnk6bi5cdTAyNzVmYWN9KSxufSkoKSxVRD0oKCk9PntjbGFzcyBuIGV4dGVuZHMgYVd7Y29uc3RydWN0b3IodCxyLGksbyxhLGwpe3N1cGVyKHQpLHRoaXMuY29tbW9uU3RyaW5ncz1yLHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlPWksdGhpcy5wbGF0Zm9ybUlkPW8sdGhpcy5lbGVtZW50UmVm'@; put 'PWEsdGhpcy5rZXlOYXZpZ2F0aW9uPWwsdGhpcy5vcGVuQ2hhbmdlPW5ldyBLcighMSksdGhpcy5hcmlhRXhwYW5kZWQ9ITEsdGhpcy5wb3BvdmVySWQ9UGgoKSx0aGlzLnNtYXJ0UG9zaXRpb249e2F4aXM6QjIuVkVSVElDQUwsc2lkZTpubS5BRlRFUixhbmNob3I6UWwuRU5ELGNvbnRlbnQ6'@; put 'UWwuRU5EfSx0aGlzLl9vcGVuPSExLHRoaXMuc3Vicz1bXSx0aGlzLnN1YnMucHVzaChpLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKHU9Pnt0aGlzLm9wZW49dSx0aGlzLmFyaWFFeHBhbmRlZD11fSkpfWdldCBvcGVuKCl7cmV0dXJuIHRoaXMuX29wZW59c2V0IG9wZW4odCl7dGhpcy5vcGVuIT09'@; put 'KHQ9ISF0KSYmKHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlLm9wZW49dCx0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0KSwhdCYmSGModGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMua2V5TmF2aWdhdGlvbiYmKHRoaXMua2V5TmF2aWdhdGlvbi5z'@; put 'a2lwSXRlbUZvY3VzPXQpLHRoaXMuX29wZW49dCl9c2V0IGN1c3RvbUZpbHRlcih0KXt0aGlzLnNldEZpbHRlcih0KX1nZXQgYWN0aXZlKCl7cmV0dXJuISF0aGlzLmZpbHRlciYmdGhpcy5maWx0ZXIuaXNBY3RpdmUoKX1uZ09uQ2hhbmdlcygpe3NldFRpbWVvdXQoKCk9Pnt0aGlzLnNldFRv'@; put 'Z2dsZUJ1dHRvbkFyaWFMYWJlbCgpfSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vicy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9c2V0VG9nZ2xlQnV0dG9uQXJpYUxhYmVsKCl7Y29uc3QgaT10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2xv'@; put 'c2VzdCgiY2xyLWRnLWNvbHVtbiIpPy5xdWVyeVNlbGVjdG9yKCIuZGF0YWdyaWQtY29sdW1uLXRpdGxlIik/LnRleHRDb250ZW50LnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3RoaXMudG9nZ2xlQnV0dG9uQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1v'@; put 'blN0cmluZ3Mua2V5cy5kYXRhZ3JpZEZpbHRlckFyaWFMYWJlbCx7Q09MVU1OOml8fCIifSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKGw3KSx6ZShpbCksemUoS3UpLHplKGxkKSx6ZShubyksemUoc1csOCkpfSxuLlx1MDI3NWNtcD1Qcih7'@; put 'dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGctZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmV28odTh0LDUsbm8pLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIuYW5jaG9yPWkuZmlyc3QpfX0saW5wdXRzOntvcGVuOlswLCJjbHJEZ0ZpbHRlck9wZW4iLCJvcGVu'@; put 'Il0sY3VzdG9tRmlsdGVyOlswLCJjbHJEZ0ZpbHRlciIsImN1c3RvbUZpbHRlciJdfSxvdXRwdXRzOntvcGVuQ2hhbmdlOiJjbHJEZ0ZpbHRlck9wZW5DaGFuZ2UifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhbe3Byb3ZpZGU6aVcsdXNlRXhpc3Rpbmc6bn1dKSxGbyxpdV0sbmdDb250'@; put 'ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjQsdmFyczoxMyxjb25zdHM6W1siYW5jaG9yIiwiIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyUG9wb3ZlckFuY2hvciIsIiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b24iLCIiLDEsImRhdGFncmlkLWZpbHRlci10b2dnbGUiXSxbInNvbGlkIiwiIl0s'@; put 'WyJjbGFzcyIsImRhdGFncmlkLWZpbHRlciIsImNka1RyYXBGb2N1cyIsIiIsInJvbGUiLCJkaWFsb2ciLDMsImlkIiw0LCJjbHJQb3BvdmVyQ29udGVudCIsImNsclBvcG92ZXJDb250ZW50QXQiLCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJjbHJQb3BvdmVyQ29u'@; put 'dGVudFNjcm9sbFRvQ2xvc2UiXSxbImNka1RyYXBGb2N1cyIsIiIsInJvbGUiLCJkaWFsb2ciLDEsImRhdGFncmlkLWZpbHRlciIsMywiaWQiXSxbMSwiZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiLDEs'@; put 'ImNsb3NlIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksSigwLCJidXR0b24iLDEsMCksSXQoMiwiY2RzLWljb24iLDIpLHRlKCksWW4oMyxkOHQsNSwzLCJkaXYiLDMpKSwyJnQmJih3cigiZGF0YWdyaWQtZmlsdGVyLW9wZW4i'@; put 'LHIub3BlbikoImRhdGFncmlkLWZpbHRlcmVkIixyLmFjdGl2ZSksUnIoImFyaWEtbGFiZWwiLHIudG9nZ2xlQnV0dG9uQXJpYUxhYmVsKSgiYXJpYS1leHBhbmRlZCIsci5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIixyLnBvcG92ZXJJZCksaWUoMiksUnIoInN0YXR1cyIsci5hY3Rp'@; put 'dmU/ImluZm8iOm51bGwpKCJzaGFwZSIsci5hY3RpdmU/ImZpbHRlci1ncmlkLWNpcmNsZSI6ImZpbHRlci1ncmlkIiksaWUoKSxydCgiY2xyUG9wb3ZlckNvbnRlbnQiLHIub3BlbikoImNsclBvcG92ZXJDb250ZW50QXQiLHIuc21hcnRQb3NpdGlvbikoImNsclBvcG92ZXJDb250ZW50T3V0'@; put 'c2lkZUNsaWNrVG9DbG9zZSIsITApKCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiLCEwKSl9LGRlcGVuZGVuY2llczpbX00sSnMsa0QsRkVlLERELElEXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKTtjbGFzcyB5YWV7Y29uc3RydWN0b3IoZSl7dGhpcy5wcm9wPWUsZS5pbmRleE9m'@; put 'KCIuIik+PTAmJih0aGlzLnNwbGl0UHJvcD1lLnNwbGl0KCIuIikpfWdldFByb3BWYWx1ZShlKXtpZih0aGlzLnNwbGl0UHJvcCl7bGV0IHQ9ZTtmb3IoY29uc3QgciBvZiB0aGlzLnNwbGl0UHJvcCl7aWYobnVsbD09PXR8fHR5cGVvZiB0PiJ1Inx8dHlwZW9mIHRbcl0+InUiKXJldHVybjt0'@; put 'PXRbcl19cmV0dXJuIHR9cmV0dXJuIGVbdGhpcy5wcm9wXX19Y2xhc3MgbFd7Y29uc3RydWN0b3IoZSx0PSExKXt0aGlzLnByb3A9ZSx0aGlzLmV4YWN0PXQsdGhpcy5uZXN0ZWRQcm9wPW5ldyB5YWUoZSl9YWNjZXB0cyhlLHQscil7Y29uc3QgaT10aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZh'@; put 'bHVlKGUpO3JldHVybiEodm9pZCAwPT09aXx8bnVsbCE9PXQmJigibnVtYmVyIiE9dHlwZW9mIGl8fGk8dCl8fG51bGwhPT1yJiYoIm51bWJlciIhPXR5cGVvZiBpfHxpPnIpKX19Y2xhc3MgS2J7Y29uc3RydWN0b3IoZSl7dGhpcy5maWx0ZXJGbj1lLHRoaXMuX2NoYW5nZXM9bmV3IE1yLHRo'@; put 'aXMuX2xvdz1udWxsLHRoaXMuX2hpZ2g9bnVsbH1nZXQgY2hhbmdlcygpe3JldHVybiB0aGlzLl9jaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfWdldCB2YWx1ZSgpe3JldHVyblt0aGlzLl9sb3csdGhpcy5faGlnaF19c2V0IHZhbHVlKGUpe2NvbnN0IHQ9ZVswXSxyPWVbMV07KHQhPT10aGlzLl9s'@; put 'b3d8fHIhPT10aGlzLl9oaWdoKSYmKHRoaXMuX2xvdz10LHRoaXMuX2hpZ2g9cix0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2xvdyx0aGlzLl9oaWdoXSkpfWdldCBsb3coKXtyZXR1cm4gdGhpcy5fbG93fXNldCBsb3coZSl7ZSE9PXRoaXMuX2xvdyYmKHRoaXMuX2xvdz1lLHRoaXMuX2No'@; put 'YW5nZXMubmV4dChbdGhpcy5fbG93LHRoaXMuX2hpZ2hdKSl9Z2V0IGhpZ2goKXtyZXR1cm4gdGhpcy5faGlnaH1zZXQgaGlnaChlKXtlIT09dGhpcy5faGlnaCYmKHRoaXMuX2hpZ2g9ZSx0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2xvdyx0aGlzLl9oaWdoXSkpfWdldCBzdGF0ZSgpe3Jl'@; put 'dHVybiB0aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgbFc/e3Byb3BlcnR5OnRoaXMuZmlsdGVyRm4ucHJvcCxsb3c6dGhpcy5fbG93LGhpZ2g6dGhpcy5faGlnaH06dGhpc31pc0FjdGl2ZSgpe3JldHVybiBudWxsIT09dGhpcy5fbG93fHxudWxsIT09dGhpcy5oaWdofWFjY2VwdHMoZSl7cmV0'@; put 'dXJuIHRoaXMuZmlsdGVyRm4uYWNjZXB0cyhlLHRoaXMuX2xvdyx0aGlzLl9oaWdoKX1lcXVhbHMoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBLYiYmKGUuZmlsdGVyRm4gaW5zdGFuY2VvZiBsVz90aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgbFcmJmUuZmlsdGVyRm4ucHJvcD09PXRoaXMuZmls'@; put 'dGVyRm4ucHJvcCYmZS5sb3c9PT10aGlzLl9sb3cmJmUuaGlnaD09PXRoaXMuX2hpZ2g6ZT09PXRoaXMpfX1sZXQgSU1lPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBhV3tjb25zdHJ1Y3Rvcih0LHIsaSxvLGEpe3N1cGVyKHQpLHRoaXMuZG9tQWRhcHRlcj1yLHRoaXMuY29tbW9uU3RyaW5ncz1p'@; put 'LHRoaXMucG9wb3ZlclRvZ2dsZVNlcnZpY2U9byx0aGlzLm5nWm9uZT1hLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2U9bmV3IEtyLHRoaXMub3Blbj0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W119Z2V0IHZhbHVlKCl7cmV0dXJuW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXX1zZXQg'@; put 'dmFsdWUodCl7dGhpcy5maWx0ZXImJkFycmF5LmlzQXJyYXkodCk/dCYmKHRbMF0hPT10aGlzLmZpbHRlci5sb3d8fHRbMV0hPT10aGlzLmZpbHRlci5oaWdoKSYmKHRoaXMuZmlsdGVyLmxvdz0ibnVtYmVyIj09dHlwZW9mIHRbMF0/dFswXTpudWxsLHRoaXMuZmlsdGVyLmhpZ2g9Im51bWJl'@; put 'ciI9PXR5cGVvZiB0WzFdP3RbMV06bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQodCkpOnRoaXMuaW5pdEZpbHRlclZhbHVlcz10fXNldCBjdXN0b21OdW1lcmljRmlsdGVyKHQpe3RoaXMuc2V0RmlsdGVyKHQgaW5zdGFuY2VvZiBvVz90Om5ldyBLYih0KSksdGhpcy5pbml0Rmls'@; put 'dGVyVmFsdWVzJiYodGhpcy52YWx1ZT10aGlzLmluaXRGaWx0ZXJWYWx1ZXMsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlcyl9Z2V0IG1heFBsYWNlaG9sZGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5tYXhQbGFjZWhvbGRlcnx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMubWF4VmFsdWV9Z2V0'@; put 'IG1pblBsYWNlaG9sZGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5taW5QbGFjZWhvbGRlcnx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMubWluVmFsdWV9Z2V0IGZyb21MYWJlbFZhbHVlKCl7cmV0dXJuIHRoaXMuZnJvbUxhYmVsfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5mcm9tTGFiZWx9Z2V0'@; put 'IHRvTGFiZWxWYWx1ZSgpe3JldHVybiB0aGlzLnRvTGFiZWx8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnRvTGFiZWx9Z2V0IGxvdygpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdGhpcy5maWx0ZXIubG93JiZpc0Zpbml0ZSh0aGlzLmZpbHRlci5sb3cpP3RoaXMuZmlsdGVyLmxvdzpudWxs'@; put 'fXNldCBsb3codCl7Im51bWJlciI9PXR5cGVvZiB0JiZ0IT09dGhpcy5maWx0ZXIubG93Pyh0aGlzLmZpbHRlci5sb3c9dCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXSkpOiJudW1iZXIiIT10eXBlb2YgdCYmKHRoaXMuZmls'@; put 'dGVyLmxvdz1udWxsLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hdKSl9Z2V0IGhpZ2goKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHRoaXMuZmlsdGVyLmhpZ2gmJmlzRmluaXRlKHRoaXMuZmlsdGVyLmhpZ2gpP3RoaXMuZmls'@; put 'dGVyLmhpZ2g6bnVsbH1zZXQgaGlnaCh0KXsibnVtYmVyIj09dHlwZW9mIHQmJnQhPT10aGlzLmZpbHRlci5oaWdoPyh0aGlzLmZpbHRlci5oaWdoPXQsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKToibnVtYmVyIiE9dHlw'@; put 'ZW9mIHQmJih0aGlzLmZpbHRlci5oaWdoPW51bGwsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnBvcG92ZXJUb2dnbGVTZXJ2aWNlLm9w'@; put 'ZW5DaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLm9wZW49dCx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpfSl9KX0pKX1uZ09uRGVzdHJveSgp'@; put 'e3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+e3QudW5zdWJzY3JpYmUoKX0pfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShsNyksemUoYnYpLHplKGlsKSx6ZShLdSksemUoZ2EpKX0sbi5cdTAyNzVj'@; put 'bXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRnLW51bWVyaWMtZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmKFdvKGg4dCw1KSxXbyhVRCw1KSksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci5pbnB1dD1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5maWx0'@; put 'ZXJDb250YWluZXI9aS5maXJzdCl9fSxpbnB1dHM6e21pblBsYWNlaG9sZGVyOlswLCJjbHJGaWx0ZXJNaW5QbGFjZWhvbGRlciIsIm1pblBsYWNlaG9sZGVyIl0sbWF4UGxhY2Vob2xkZXI6WzAsImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwibWF4UGxhY2Vob2xkZXIiXSxmcm9tTGFiZWw6'@; put 'WzAsImNsckZpbHRlckZyb21MYWJlbCIsImZyb21MYWJlbCJdLHRvTGFiZWw6WzAsImNsckZpbHRlclRvTGFiZWwiLCJ0b0xhYmVsIl0sdmFsdWU6WzAsImNsckZpbHRlclZhbHVlIiwidmFsdWUiXSxjdXN0b21OdW1lcmljRmlsdGVyOlswLCJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjdXN0b21O'@; put 'dW1lcmljRmlsdGVyIl19LG91dHB1dHM6e2ZpbHRlclZhbHVlQ2hhbmdlOiJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFt7cHJvdmlkZTppVyx1c2VFeGlzdGluZzpufV0pLEZvXSxkZWNsczoxMix2YXJzOjEwLGNvbnN0czpbWyJpbnB1dF9sb3ci'@; put 'LCIiXSxbImlucHV0X2hpZ2giLCIiXSxbMywiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIiwiY2xyRGdGaWx0ZXIiLCJjbHJEZ0ZpbHRlck9wZW4iXSxbMSwiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItZm9ybSJdLFsxLCJjbHItY29udHJvbC1sYWJlbCJdLFsiY2xyTnVtYmVySW5wdXQiLCIiLCJ0'@; put 'eXBlIiwibnVtYmVyIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwibmFtZSIsImxvdyIsMSwiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXQiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwicGxhY2Vob2xkZXIiXSxbImNsck51bWJlcklucHV0IiwiIiwidHlwZSIsIm51bWJlciIsImF1'@; put 'dG9jb21wbGV0ZSIsIm9mZiIsIm5hbWUiLCJoaWdoIiwxLCJkYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJwbGFjZWhvbGRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpe2lmKDEmdCl7Y29uc3QgaT13bigpO0ooMCwiY2xyLWRn'@; put 'LWZpbHRlciIsMiksaGkoImNsckRnRmlsdGVyT3BlbkNoYW5nZSIsZnVuY3Rpb24oYSl7cmV0dXJuIFllKGkpLGZpKHIub3BlbixhKXx8KHIub3Blbj1hKSxYZShhKX0pLEooMSwiZGl2IiwzKSgyLCJjbHItbnVtYmVyLWlucHV0LWNvbnRhaW5lciIpKDMsImxhYmVsIiw0KSxTZSg0KSx0ZSgp'@; put 'LEooNSwiaW5wdXQiLDUsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGEpe3JldHVybiBZZShpKSxmaShyLmxvdyxhKXx8KHIubG93PWEpLFhlKGEpfSksdGUoKSgpLEooNywiY2xyLW51bWJlci1pbnB1dC1jb250YWluZXIiKSg4LCJsYWJlbCIsNCksU2UoOSksdGUoKSxKKDEwLCJp'@; put 'bnB1dCIsNiwxKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oYSl7cmV0dXJuIFllKGkpLGZpKHIuaGlnaCxhKXx8KHIuaGlnaD1hKSxYZShhKX0pLHRlKCkoKSgpKCl9MiZ0JiYocnQoImNsckRnRmlsdGVyIixyLnJlZ2lzdGVyZWQpLGRpKCJjbHJEZ0ZpbHRlck9wZW4iLHIub3Blbiks'@; put 'aWUoNCkscHIoci5mcm9tTGFiZWxWYWx1ZSksaWUoKSxkaSgibmdNb2RlbCIsci5sb3cpLHJ0KCJwbGFjZWhvbGRlciIsci5taW5QbGFjZWhvbGRlclZhbHVlKSxScigiYXJpYS1sYWJlbCIsci5taW5QbGFjZWhvbGRlclZhbHVlKSxpZSg0KSxwcihyLnRvTGFiZWxWYWx1ZSksaWUoKSxkaSgi'@; put 'bmdNb2RlbCIsci5oaWdoKSxydCgicGxhY2Vob2xkZXIiLHIubWF4UGxhY2Vob2xkZXJWYWx1ZSksUnIoImFyaWEtbGFiZWwiLHIubWF4UGxhY2Vob2xkZXJWYWx1ZSkpfSxkZXBlbmRlbmNpZXM6W2VsLEVNZSxTTWUsbHUsRXosb2MsWGwsVURdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpO2Ns'@; put 'YXNzIGNXe2NvbnN0cnVjdG9yKGUsdD0hMSl7dGhpcy5wcm9wPWUsdGhpcy5leGFjdD10LHRoaXMubmVzdGVkUHJvcD1uZXcgeWFlKGUpfWFjY2VwdHMoZSx0KXtjb25zdCByPXRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoZSk7cmV0dXJuISh0eXBlb2Ygcj4idSIpJiYodGhpcy5leGFj'@; put 'dD8oIiIrcikudG9Mb3dlckNhc2UoKT09PXQ6KCIiK3IpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0KT49MCl9fWNsYXNzIFhie2NvbnN0cnVjdG9yKGUpe3RoaXMuZmlsdGVyRm49ZSx0aGlzLl9jaGFuZ2VzPW5ldyBNcix0aGlzLl9sb3dlckNhc2VWYWx1ZT0iIix0aGlzLl9yYXdWYWx1ZT0i'@; put 'In1nZXQgY2hhbmdlcygpe3JldHVybiB0aGlzLl9jaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfWdldCBsb3dlckNhc2VWYWx1ZSgpe3JldHVybiB0aGlzLl9sb3dlckNhc2VWYWx1ZX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5maWx0ZXJGbiBpbnN0YW5jZW9mIGNXP3twcm9wZXJ0eTp0aGlzLmZp'@; put 'bHRlckZuLnByb3AsdmFsdWU6dGhpcy52YWx1ZX06dGhpc31nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fcmF3VmFsdWV9c2V0IHZhbHVlKGUpe2V8fChlPSIiKSxlIT09dGhpcy5fcmF3VmFsdWUmJih0aGlzLl9yYXdWYWx1ZT1lLHRoaXMuX2xvd2VyQ2FzZVZhbHVlPWUudG9Mb3dlckNhc2Uo'@; put 'KS50cmltKCksdGhpcy5fY2hhbmdlcy5uZXh0KGUpKX1pc0FjdGl2ZSgpe3JldHVybiEhdGhpcy52YWx1ZX1hY2NlcHRzKGUpe3JldHVybiB0aGlzLmZpbHRlckZuLmFjY2VwdHMoZSx0aGlzLmxvd2VyQ2FzZVZhbHVlKX1lcXVhbHMoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBYYiYmKGUuZmls'@; put 'dGVyRm4gaW5zdGFuY2VvZiBjVz90aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgY1cmJmUuZmlsdGVyRm4ucHJvcD09PXRoaXMuZmlsdGVyRm4ucHJvcCYmZS52YWx1ZT09PXRoaXMudmFsdWU6ZT09PXRoaXMpfX1sZXQgU009KCgpPT57Y2xhc3MgbiBleHRlbmRzIGFXe2NvbnN0cnVjdG9yKHQs'@; put 'cixpLG8sYSxsLHUpe3N1cGVyKHQpLHRoaXMuZG9tQWRhcHRlcj1yLHRoaXMuY29tbW9uU3RyaW5ncz1pLHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlPW8sdGhpcy5lbGVtZW50UmVmPWEsdGhpcy5jZHI9bCx0aGlzLm5nWm9uZT11LHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2U9bmV3IEtyLHRoaXMu'@; put 'b3Blbj0hMSx0aGlzLmxhYmVsVmFsdWU9IiIsdGhpcy5zdWJzPVtdfXNldCBjdXN0b21TdHJpbmdGaWx0ZXIodCl7dGhpcy5zZXRGaWx0ZXIodCBpbnN0YW5jZW9mIG9XP3Q6bmV3IFhiKHQpKSx0aGlzLmluaXRGaWx0ZXJWYWx1ZSYmKHRoaXMudmFsdWU9dGhpcy5pbml0RmlsdGVyVmFsdWUs'@; put 'ZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5maWx0ZXIudmFsdWV9c2V0IHZhbHVlKHQpe3RoaXMuZmlsdGVyJiYic3RyaW5nIj09dHlwZW9mIHQ/KHR8fCh0PSIiKSx0IT09dGhpcy5maWx0ZXIudmFsdWUmJih0aGlzLmZpbHRlci52YWx1ZT10'@; put 'LHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdCh0KSkpOnRoaXMuaW5pdEZpbHRlclZhbHVlPXR9Z2V0IHBsYWNlaG9sZGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5wbGFjZWhvbGRlcnx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZmlsdGVySXRlbXN9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5z'@; put 'dWJzLnB1c2godGhpcy5zbWFydFRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUodD0+e3RoaXMub3Blbj10LHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5kb21BZGFwdGVyLmZvY3VzKHRoaXMuaW5wdXQu'@; put 'bmF0aXZlRWxlbWVudCl9KX0pfSkpfW5nT25DaGFuZ2VzKCl7c2V0VGltZW91dCgoKT0+e3RoaXMuc2V0RmlsdGVyTGFiZWwoKSx0aGlzLmNkci5tYXJrRm9yQ2hlY2soKX0pfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLnN1YnMuZm9yRWFjaCh0PT50LnVuc3Vic2Ny'@; put 'aWJlKCkpfXNldEZpbHRlckxhYmVsKCl7aWYodGhpcy5sYWJlbClyZXR1cm4gdm9pZCh0aGlzLmxhYmVsVmFsdWU9dGhpcy5sYWJlbCk7Y29uc3Qgcj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2xvc2VzdCgiY2xyLWRnLWNvbHVtbiIpPy5xdWVyeVNlbGVjdG9yKCIuZGF0YWdy'@; put 'aWQtY29sdW1uLXRpdGxlIik7dGhpcy5sYWJlbFZhbHVlPXRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRhZ3JpZEZpbHRlckxhYmVsLHtDT0xVTU46cj8udGV4dENvbnRlbnQudHJpbSgpfHwiIn0pfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rp'@; put 'b24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShsNyksemUoYnYpLHplKGlsKSx6ZShLdSksemUobm8pLHplKFVsKSx6ZShnYSkpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGctc3RyaW5nLWZpbHRlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxyKXtpZigxJnQm'@; put 'JihXbyhmOHQsNSksV28oVUQsNSkpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIuaW5wdXQ9aS5maXJzdCksY2koaT11aSgpKSYmKHIuZmlsdGVyQ29udGFpbmVyPWkuZmlyc3QpfX0saW5wdXRzOntwbGFjZWhvbGRlcjpbMCwiY2xyRmlsdGVyUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciJd'@; put 'LGxhYmVsOlswLCJjbHJGaWx0ZXJMYWJlbCIsImxhYmVsIl0sY3VzdG9tU3RyaW5nRmlsdGVyOlswLCJjbHJEZ1N0cmluZ0ZpbHRlciIsImN1c3RvbVN0cmluZ0ZpbHRlciJdLHZhbHVlOlswLCJjbHJGaWx0ZXJWYWx1ZSIsInZhbHVlIl19LG91dHB1dHM6e2ZpbHRlclZhbHVlQ2hhbmdlOiJj'@; put 'bHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFt7cHJvdmlkZTppVyx1c2VFeGlzdGluZzpufV0pLEZvLGl1XSxkZWNsczo2LHZhcnM6Nixjb25zdHM6W1siaW5wdXQiLCIiXSxbMywiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIiwiY2xyRGdGaWx0ZXIiLCJj'@; put 'bHJEZ0ZpbHRlck9wZW4iXSxbInR5cGUiLCJ0ZXh0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwibmFtZSIsInNlYXJjaCIsImNscklucHV0IiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCIsInBsYWNlaG9sZGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7aWYoMSZ0KXtjb25zdCBp'@; put 'PXduKCk7SigwLCJjbHItZGctZmlsdGVyIiwxKSxoaSgiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIixmdW5jdGlvbihhKXtyZXR1cm4gWWUoaSksZmkoci5vcGVuLGEpfHwoci5vcGVuPWEpLFhlKGEpfSksSigxLCJjbHItaW5wdXQtY29udGFpbmVyIikoMiwibGFiZWwiKSxTZSgzKSx0ZSgpLEoo'@; put 'NCwiaW5wdXQiLDIsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGEpe3JldHVybiBZZShpKSxmaShyLnZhbHVlLGEpfHwoci52YWx1ZT1hKSxYZShhKX0pLHRlKCkoKSgpfTImdCYmKHJ0KCJjbHJEZ0ZpbHRlciIsci5yZWdpc3RlcmVkKSxkaSgiY2xyRGdGaWx0ZXJPcGVuIixyLm9w'@; put 'ZW4pLGllKDMpLHByKHIubGFiZWxWYWx1ZSksaWUoKSxkaSgibmdNb2RlbCIsci52YWx1ZSkscnQoInBsYWNlaG9sZGVyIixyLnBsYWNlaG9sZGVyVmFsdWUpLFJyKCJhcmlhLWxhYmVsIixyLnBsYWNlaG9sZGVyVmFsdWUpKX0sZGVwZW5kZW5jaWVzOltlbCxQZixYeixsdSxvYyxYbCxVRF0s'@; put 'ZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksRHY9KCgpPT57Y2xhc3MgbiBleHRlbmRzIHNNe31yZXR1cm4gbi5cdTAyNzVmYWM9KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShuKSkpKHJ8fG4pfX0pKCksbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3Rv'@; put 'cnM6W1siY2xyLWRhdGFncmlkIl1dLHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W0ZvXX0pLG59KSgpLEVNPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLmFjdGlvbmFibGVDb3VudD0wfWdldCBoYXNBY3Rpb25hYmxlUm93KCl7cmV0dXJuIHRoaXMuYWN0aW9uYWJsZUNvdW50PjB9'@; put 'cmVnaXN0ZXIoKXt0aGlzLmFjdGlvbmFibGVDb3VudCsrfXVucmVnaXN0ZXIoKXt0aGlzLmFjdGlvbmFibGVDb3VudC0tfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9'@; put 'KSxufSkoKSxRYj0oKCk9PntjbGFzcyBuIGV4dGVuZHMgbE17Y29uc3RydWN0b3IodCxyLGkpe2lmKCFyKXRocm93IG5ldyBFcnJvcigiY2xyLWRnLXJvdyBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBhIGNsci1kYXRhZ3JpZCIpO3N1cGVyKHQsciksdGhpcy5yb3dBY3Rpb25zPWl9'@; put 'Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLnJvd0FjdGlvbnMuaGFzQWN0aW9uYWJsZVJvd319cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoVWwpLHplKER2LDgpLHplKEVNKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbImNs'@; put 'ci1kYXRhZ3JpZCJdLFsiY2xyLWRnLXJvdyJdXSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxufSkoKSxETWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnBsYXRmb3JtSWQ9dCx0aGlzLm1vZGFsU3RhY2s9W10sdGhpcy5rZXlVcEV2ZW50TGlzdGVuZXI9dGhpcy5v'@; put 'bktleVVwLmJpbmQodGhpcyl9dHJhY2tNb2RhbE9wZW4odCl7ITE9PT10aGlzLm1vZGFsU3RhY2suaW5jbHVkZXModCkmJnRoaXMubW9kYWxTdGFjay51bnNoaWZ0KHQpLEhjKHRoaXMucGxhdGZvcm1JZCkmJmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMua2V5'@; put 'VXBFdmVudExpc3RlbmVyKX10cmFja01vZGFsQ2xvc2UodCl7Y29uc3Qgcj10aGlzLm1vZGFsU3RhY2suaW5kZXhPZih0KTtyPi0xJiZ0aGlzLm1vZGFsU3RhY2suc3BsaWNlKHIsMSksMD09PXRoaXMubW9kYWxTdGFjay5sZW5ndGgmJkhjKHRoaXMucGxhdGZvcm1JZCkmJmRvY3VtZW50LmJv'@; put 'ZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMua2V5VXBFdmVudExpc3RlbmVyKX1vbktleVVwKHQpe3RoaXMubW9kYWxTdGFjay5sZW5ndGgmJnRtKHQua2V5KT09PU1vLkVzY2FwZSYmKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpLHRoaXMubW9kYWxTdGFja1swXS5j'@; put 'bG9zZSgpKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IobGQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxufSkoKSxnND0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9y'@; put 'KHQpe3RoaXMubW9kYWxTdGFja1NlcnZpY2U9dCx0aGlzLnByZXZlbnRTY3JvbGw9ITEsdGhpcy50b2dnbGVTdGF0ZT0hMSx0aGlzLl9lbmFibGVkPSExLHRoaXMuX3N0YXRlPW5ldyAkaSh0aGlzLnRvZ2dsZVN0YXRlKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBl'@; put 'bmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dH1nZXQgcHJldmVudEZvY3VzU2Nyb2xsKCl7cmV0dXJuIHRoaXMucHJldmVudFNjcm9sbH1zZXQgcHJldmVudEZvY3VzU2Nyb2xsKHQpe3RoaXMucHJldmVudFNjcm9sbD10fWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmNhY2hlfWdldCBzdGF0ZUNo'@; put 'YW5nZSgpe3JldHVybiB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKX1nZXQgaXNPcGVuKCl7cmV0dXJuITA9PT10aGlzLnRvZ2dsZVN0YXRlfW9wZW4odCxyKXt0aGlzLmNhY2hlPXQsdGhpcy5idXR0b249cix0aGlzLnRvZ2dsZVN0YXRlPSEwLHRoaXMuX3N0YXRlLm5leHQodGhpcy50b2dn'@; put 'bGVTdGF0ZSksdGhpcy5tb2RhbFN0YWNrU2VydmljZS50cmFja01vZGFsT3Blbih0aGlzKX1jbG9zZSgpe3RoaXMudG9nZ2xlU3RhdGU9ITEsdGhpcy5yZXR1cm5Gb2N1cygpLHRoaXMuX3N0YXRlLm5leHQodGhpcy50b2dnbGVTdGF0ZSksdGhpcy5tb2RhbFN0YWNrU2VydmljZS50cmFja01v'@; put 'ZGFsQ2xvc2UodGhpcyl9cmV0dXJuRm9jdXMoKXt0aGlzLmJ1dHRvbiYmKHRoaXMuYnV0dG9uLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOnRoaXMucHJldmVudEZvY3VzU2Nyb2xsfSksdGhpcy5idXR0b249bnVsbCl9dG9nZ2xlKHQscil7dGhpcy5pc1Jvd09wZW4odCl8fCF0P3RoaXMuY2xvc2Uo'@; put 'KTp0aGlzLm9wZW4odCxyKX1pc1Jvd09wZW4odCl7cmV0dXJuISghdGhpcy50b2dnbGVTdGF0ZXx8dGhpcy5jYWNoZSE9PXQpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKShvcihETWUpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6'@; put 'bi5cdTAyNzVmYWN9KSxufSkoKSxNTT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuZGV0YWlsU2VydmljZT10LHRoaXMuZXhwYW5kYWJsZUNvdW50PTB9Z2V0IGhhc0V4cGFuZGFibGVSb3coKXtyZXR1cm4hdGhpcy5kZXRhaWxTZXJ2aWNlLmVuYWJsZWQmJnRoaXMuZXhwYW5k'@; put 'YWJsZUNvdW50PjB9cmVnaXN0ZXIoKXt0aGlzLmV4cGFuZGFibGVDb3VudCsrfXVucmVnaXN0ZXIoKXt0aGlzLmV4cGFuZGFibGVDb3VudC0tfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKShvcihnNCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4s'@; put 'ZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgpLEpiPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBsTXtjb25zdHJ1Y3Rvcih0LHIsaSl7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJjbHItZGctcm93IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRhdGFncmlkIik7c3VwZXIodCxy'@; put 'KSx0aGlzLmV4cGFuZGFibGVDb3VudD1pfWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlQ291bnQuaGFzRXhwYW5kYWJsZVJvd319cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoVWwpLHplKER2LDgpLHplKE1NKSl9LG4uXHUwMjc1'@; put 'ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdLFsiY2xyLWRnLXJvdyJdXSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltGb119KSxufSkoKTtjbGFzcyB1V3tjb25zdHJ1Y3RvcihlKXt0aGlzLnByb3A9ZSx0aGlzLm5lc3RlZFByb3A9bmV3IHlhZShlKX1jb21wYXJl'@; put 'KGUsdCl7bGV0IHI9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShlKSxpPXRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUodCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiByJiYocj1yLnRvTG93ZXJDYXNlKCkpLCJzdHJpbmciPT10eXBlb2YgaSYmKGk9aS50b0xvd2VyQ2FzZSgpKSx0'@; put 'eXBlb2Ygcj4idSJ8fG51bGw9PT1yP3R5cGVvZiBpPiJ1Inx8bnVsbD09PWk/MDoxOnR5cGVvZiBpPiJ1Inx8bnVsbD09PWl8fHI8aT8tMTpyPmk/MTowfX12YXIgRnA9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5VTlNPUlRFRD0wXT0iVU5TT1JURUQiLG5bbi5BU0M9MV09IkFTQyIsbltuLkRF'@; put 'U0M9LTFdPSJERVNDIixufShGcHx8e30pO2NvbnN0IFRNPSJkYXRhZ3JpZC1maXhlZC13aWR0aCIsekQ9ImRhdGFncmlkLWhpZGRlbi1jb2x1bW4iO2xldCBiYWU9KCgpPT57Y2xhc3MgbntuZ0FmdGVyVmlld0luaXQoKXt0aGlzLmNvbHVtblZpZXc9dGhpcy50ZW1wbGF0ZVJlZi5jcmVhdGVF'@; put 'bWJlZGRlZFZpZXcobnVsbCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNvbHVtblZpZXcuZGVzdHJveSgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siZGctd3JhcHBlZC1jb2x1bW4iXV0s'@; put 'dmlld1F1ZXJ5OmZ1bmN0aW9uKHQscil7aWYoMSZ0JiZXbyhwOHQsNSksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci50ZW1wbGF0ZVJlZj1pLmZpcnN0KX19LHN0YW5kYWxvbmU6ITEsbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJjb2x1bW5Qb3J0YWwi'@; put 'LCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFluKDAsZzh0LDEsMCwibmctdGVtcGxhdGUiLG51bGwsMCxjZCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxkVz0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RhdGVEZWJvdW5jZXI9dCx0aGlzLl9y'@; put 'ZXZlcnNlPSExLHRoaXMuX2NoYW5nZT1uZXcgTXJ9Z2V0IGNvbXBhcmF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcGFyYXRvcn1zZXQgY29tcGFyYXRvcih0KXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fY29tcGFyYXRvcj10LHRoaXMuZW1pdENoYW5nZSgpLHRoaXMu'@; put 'c3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpfWdldCByZXZlcnNlKCl7cmV0dXJuIHRoaXMuX3JldmVyc2V9c2V0IHJldmVyc2UodCl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX3JldmVyc2U9dCx0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLnN0YXRlRGVib3VuY2Vy'@; put 'LmNoYW5nZURvbmUoKX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX10b2dnbGUodCxyKXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5jb21wYXJhdG9yPT09dD90aGlzLl9yZXZlcnNlPXR5cGVvZiByPCJ1IiYmcnx8IXRoaXMu'@; put 'X3JldmVyc2U6KHRoaXMuX2NvbXBhcmF0b3I9dCx0aGlzLl9yZXZlcnNlPXR5cGVvZiByPCJ1IiYmciksdGhpcy5lbWl0Q2hhbmdlKCksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9Y2xlYXIoKXt0aGlzLmNvbXBhcmF0b3I9bnVsbH1jb21wYXJlKHQscil7cmV0dXJuKHRoaXMu'@; put 'cmV2ZXJzZT8tMToxKSp0aGlzLmNvbXBhcmF0b3IuY29tcGFyZSh0LHIpfWVtaXRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2UubmV4dCh0aGlzKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoakQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZh'@; put 'Y3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKTt2YXIgbTQ9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5BTElHTl9DT0xVTU5TPTBdPSJBTElHTl9DT0xVTU5TIixuW24uQ0FMQ1VMQVRFX01PREVfT049MV09IkNBTENVTEFURV9NT0RFX09OIixuW24uQ0FMQ1VMQVRFX01PREVfT0ZGPTJdPSJDQUxD'@; put 'VUxBVEVfTU9ERV9PRkYiLG5bbi5DTEVBUl9XSURUSFM9M109IkNMRUFSX1dJRFRIUyIsbltuLkNPTVBVVEVfQ09MVU1OX1dJRFRIUz00XT0iQ09NUFVURV9DT0xVTU5fV0lEVEhTIixufShtNHx8e30pO2xldCBldz0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVuZGVyU3Rl'@; put 'cD1uZXcgTXIsdGhpcy5hbHJlYWR5U2l6ZWQ9ITF9Z2V0IHJlbmRlclN0ZXAoKXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RlcC5hc09ic2VydmFibGUoKX1maWx0ZXJSZW5kZXJTdGVwcyh0KXtyZXR1cm4gdGhpcy5yZW5kZXJTdGVwLnBpcGUoc3Uocj0+dD09PXIpKX1yZXNpemUoKXt0aGlzLl9y'@; put 'ZW5kZXJTdGVwLm5leHQobTQuQ0FMQ1VMQVRFX01PREVfT04pLHRoaXMuYWxyZWFkeVNpemVkJiZ0aGlzLl9yZW5kZXJTdGVwLm5leHQobTQuQ0xFQVJfV0lEVEhTKSx0aGlzLl9yZW5kZXJTdGVwLm5leHQobTQuQ09NUFVURV9DT0xVTU5fV0lEVEhTKSx0aGlzLl9yZW5kZXJTdGVwLm5leHQo'@; put 'bTQuQUxJR05fQ09MVU1OUyksdGhpcy5hbHJlYWR5U2l6ZWQ9ITAsdGhpcy5fcmVuZGVyU3RlcC5uZXh0KG00LkNBTENVTEFURV9NT0RFX09GRil9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9y'@; put 'eTpuLlx1MDI3NWZhY30pLG59KSgpLHdhZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLmVsPXQsdGhpcy5kb21BZGFwdGVyPXIsdGhpcy5vcmdhbml6ZXI9aSx0aGlzLl9yZXNpemVkQnk9MH1nZXQgcmVzaXplZEJ5KCl7cmV0dXJuIHRoaXMuX3Jlc2l6ZWRCeX1nZXQg'@; put 'bWluQ29sdW1uV2lkdGgoKXtyZXR1cm4gdGhpcy5kb21BZGFwdGVyLm1pbldpZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCl8fDk2fWdldCBtYXhSZXNpemVSYW5nZSgpe3JldHVybiB0aGlzLndpZHRoQmVmb3JlUmVzaXplLXRoaXMubWluQ29sdW1uV2lkdGh9Z2V0IHdpZHRoQWZ0ZXJSZXNp'@; put 'emUoKXtyZXR1cm4gdGhpcy53aWR0aEJlZm9yZVJlc2l6ZSt0aGlzLl9yZXNpemVkQnl9c3RhcnRSZXNpemUoKXt0aGlzLl9yZXNpemVkQnk9MCx0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9ITAsdGhpcy53aWR0aEJlZm9yZVJlc2l6ZT10aGlzLmRvbUFkYXB0ZXIuY2xpZW50UmVjdCh0'@; put 'aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLndpZHRofWVuZFJlc2l6ZSgpe3RoaXMub3JnYW5pemVyLnJlc2l6ZSgpfWNhbGN1bGF0ZVJlc2l6ZSh0KXt0PC10aGlzLm1heFJlc2l6ZVJhbmdlPyh0aGlzLl9yZXNpemVkQnk9LXRoaXMubWF4UmVzaXplUmFuZ2UsdGhpcy5pc1dpdGhpbk1heFJlc2l6'@; put 'ZVJhbmdlPSExKToodGhpcy5fcmVzaXplZEJ5PXQsdGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlPSEwKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3Iobm8pLG9yKGJ2KSxvcihldykpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9y'@; put 'eTpuLlx1MDI3NWZhY30pLG59KSgpLENhZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMucGxhdGZvcm1JZD10fWdldCB0YWJsZVJlZigpe3JldHVybiB0aGlzLl90YWJsZVJlZn1zZXQgdGFibGVSZWYodCl7dGhpcy5fdGFibGVSZWY9dH1zZXQgdGFibGUodCl7SGModGhpcy5w'@; put 'bGF0Zm9ybUlkKSYmdC5uYXRpdmVFbGVtZW50JiYodGhpcy50YWJsZVJlZj10Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkLXRhYmxlIikpfWdldENvbHVtbkRyYWdIZWlnaHQoKXtyZXR1cm4gdGhpcy50YWJsZVJlZj9gJHt0aGlzLnRhYmxlUmVmLmNsaWVudEhlaWdo'@; put 'dH1weGA6bnVsbH19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IobGQpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSxPTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCl7'@; put 'dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZT10LHRoaXMucmVuZGVyZXI9cix0aGlzLm5nWm9uZT1pLHRoaXMudGFibGVTaXplU2VydmljZT1vLHRoaXMuY29tbW9uU3RyaW5nPWEsdGhpcy5kb2N1bWVudD1sLHRoaXMuY29sdW1uU2VwYXJhdG9ySWQ9UGgoKSx0aGlzLnJlc2l6ZVN0YXJ0ZWRP'@; put 'bktleURvd249ITEsdGhpcy51bmxpc3RlbmVycz1bXX1nZXQgZGVzY3JpcHRpb25JZCgpe3JldHVybmAke3RoaXMuY29sdW1uU2VwYXJhdG9ySWR9LWFyaWEtZGVzY3JpYmVkYnlgfWdldCByZXNpemVUcmFja2VyRWwoKXtyZXR1cm4gdGhpcy5yZXNpemVUcmFja2VyUmVmLm5hdGl2ZUVsZW1l'@; put 'bnR9Z2V0IGNvbHVtbkhhbmRsZUVsKCl7cmV0dXJuIHRoaXMuY29sdW1uSGFuZGxlUmVmLm5hdGl2ZUVsZW1lbnR9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLnVubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odGhp'@; put 'cy5jb2x1bW5IYW5kbGVFbCwia2V5ZG93biIsdD0+e3RoaXMuc2hvd1RyYWNrZXJPbkZpcnN0S2V5RG93bih0KSx0aGlzLm1vdmVUcmFja2VyT25LZXlEb3duKHQpfSkpLHRoaXMudW5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmNvbHVtbkhhbmRsZUVsLCJrZXl1'@; put 'cCIsdD0+e3RoaXMuaGlkZVRyYWNrZXJPbktleVVwKHQpfSkpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLnVubGlzdGVuZXJzLmZvckVhY2godD0+dCgpKX1zaG93VHJhY2tlcigpe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2Uuc3RhcnRSZXNpemUoKTtjb25zdCB0PXRoaXMudGFibGVTaXplU2Vy'@; put 'dmljZS5nZXRDb2x1bW5EcmFnSGVpZ2h0KCk7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiaGVpZ2h0Iix0KSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJkaXNwbGF5IiwiYmxvY2siKX1tb3ZlVHJhY2tlcih0KXt0aGlz'@; put 'LmNvbHVtblJlc2l6ZXJTZXJ2aWNlLmNhbGN1bGF0ZVJlc2l6ZSh0KSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGVYKCR7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnl9cHgpYCksdGhpcy5yZW5kZXJl'@; put 'ci5zZXRTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksImN1cnNvciIsImNvbC1yZXNpemUiKSx0aGlzLnJlZEZsYWdUcmFja2VyKCl9aGlkZVRyYWNrZXIoKXt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLmVuZFJlc2l6ZSgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFj'@; put 'a2VyRWwsImRpc3BsYXkiLCJub25lIiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwidHJhbnNmb3JtIiwidHJhbnNsYXRlWCgwcHgpIiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbHVtbkhhbmRsZUVsLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVY'@; put 'KDBweCkiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwiY3Vyc29yIiwiYXV0byIpfXNob3dUcmFja2VyT25GaXJzdEtleURvd24odCl7IXRoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93biYmKHRoaXMuaXNBcnJvd0xlZnRLZXlFdmVudCh0KXx8dGhpcy5pc0Fy'@; put 'cm93UmlnaHRLZXlFdmVudCh0KSkmJih0aGlzLnJlc2l6ZVN0YXJ0ZWRPbktleURvd249ITAsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwib24tYXJyb3cta2V5LXJlc2l6ZSIpLHRoaXMuc2hvd1RyYWNrZXIoKSl9bW92ZVRyYWNrZXJPbktleURvd24odCl7'@; put 'dGhpcy5pc0Fycm93TGVmdEtleUV2ZW50KHQpPyh0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubW92ZVRyYWNrZXIodGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnktMTIpKTp0aGlzLmlzQXJyb3dSaWdodEtleUV2ZW50KHQpJiYodC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm1v'@; put 'dmVUcmFja2VyKHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5KzEyKSl9aGlkZVRyYWNrZXJPbktleVVwKHQpe3RoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93biYmKHRoaXMuaXNBcnJvd0xlZnRLZXlFdmVudCh0KXx8dGhpcy5pc0Fycm93UmlnaHRLZXlFdmVudCh0KSkmJih0'@; put 'aGlzLnJlc2l6ZVN0YXJ0ZWRPbktleURvd249ITEsdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwib24tYXJyb3cta2V5LXJlc2l6ZSIpLHRoaXMuaGlkZVRyYWNrZXIoKSx0aGlzLmNvbHVtbkhhbmRsZUVsLmZvY3VzKCkpfXJlZEZsYWdUcmFja2VyKCl7'@; put 'dGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlIT09dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlJiYodGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlPXRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UuaXNXaXRoaW5NYXhSZXNpemVSYW5nZSx0aGlzLmlz'@; put 'V2l0aGluTWF4UmVzaXplUmFuZ2U/dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZXhjZWVkZWQtbWF4Iik6dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZXhjZWVkZWQtbWF4IikpfWlzQXJyb3dMZWZ0S2V5RXZlbnQo'@; put 'dCl7cmV0dXJuIHRtKHQua2V5KT09PU1vLkFycm93TGVmdH1pc0Fycm93UmlnaHRLZXlFdmVudCh0KXtyZXR1cm4gdG0odC5rZXkpPT09TW8uQXJyb3dSaWdodH19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUod2FlKSx6ZShOdCksemUoZ2EpLHpl'@; put 'KENhZSksemUoaWwpLHplKFRsKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4tc2VwYXJhdG9yIl1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmKFdvKG04dCw1KSxXbyh2OHQsNSkpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIu'@; put 'cmVzaXplVHJhY2tlclJlZj1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5jb2x1bW5IYW5kbGVSZWY9aS5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IiLCEwKX0sc3RhbmRhbG9uZTohMSxkZWNs'@; put 'czo2LHZhcnM6NCxjb25zdHM6W1siY29sdW1uSGFuZGxlIiwiIl0sWyJyZXNpemVUcmFja2VyIiwiIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2RrRHJhZyIsIiIsImNka0RyYWdMb2NrQXhpcyIsIngiLDEsImRhdGFncmlkLWNvbHVtbi1oYW5kbGUiLDMsImNka0RyYWdTdGFydGVkIiwiY2RrRHJh'@; put 'Z01vdmVkIiwiY2RrRHJhZ0VuZGVkIl0sWzEsImNsci1zci1vbmx5Il0sWzEsImRhdGFncmlkLWNvbHVtbi1yZXNpemUtdHJhY2tlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpe2lmKDEmdCl7Y29uc3QgaT13bigpO0ooMCwiYnV0dG9uIiwyLDApLHd0KCJjZGtEcmFnU3RhcnRlZCIsZnVu'@; put 'Y3Rpb24oKXtyZXR1cm4gWWUoaSksWGUoci5zaG93VHJhY2tlcigpKX0pKCJjZGtEcmFnTW92ZWQiLGZ1bmN0aW9uKGEpe3JldHVybiBZZShpKSxYZShyLm1vdmVUcmFja2VyKGEuZGlzdGFuY2UueCkpfSkoImNka0RyYWdFbmRlZCIsZnVuY3Rpb24oYSl7cmV0dXJuIFllKGkpLHIuaGlkZVRy'@; put 'YWNrZXIoKSxYZShhLnNvdXJjZS5fZHJhZ1JlZi5yZXNldCgpKX0pLHRlKCksSigyLCJzcGFuIiwzKSxTZSgzKSx0ZSgpLEl0KDQsImRpdiIsNCwxKX0yJnQmJihScigiYXJpYS1sYWJlbCIsci5jb21tb25TdHJpbmcua2V5cy5jb2x1bW5TZXBhcmF0b3JBcmlhTGFiZWwpKCJhcmlhLWRlc2Ny'@; put 'aWJlZGJ5IixyLmRlc2NyaXB0aW9uSWQpLGllKDIpLFJyKCJpZCIsci5kZXNjcmlwdGlvbklkKSxpZSgpLFNyKCIgIixyLmNvbW1vblN0cmluZy5rZXlzLmNvbHVtblNlcGFyYXRvckRlc2NyaXB0aW9uLCIgIikpfSxkZXBlbmRlbmNpZXM6W2l5dF0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCks'@; put 'dHc9KCgpPT57Y2xhc3MgbiBleHRlbmRzIGFXe2NvbnN0cnVjdG9yKHQscixpLG8sYSxsKXtzdXBlcihpKSx0aGlzLmVsPXQsdGhpcy5fc29ydD1yLHRoaXMudmNyPW8sdGhpcy5kZXRhaWxTZXJ2aWNlPWEsdGhpcy5jaGFuZ2VEZXRlY3RvclJlZj1sLHRoaXMuc29ydE9yZGVyQ2hhbmdlPW5l'@; put 'dyBLcix0aGlzLmZpbHRlclZhbHVlQ2hhbmdlPW5ldyBLcix0aGlzLmN1c3RvbUZpbHRlcj0hMSx0aGlzLl9jb2xUeXBlPSJzdHJpbmciLHRoaXMuX3NvcnRPcmRlcj1GcC5VTlNPUlRFRCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5fc2hvd1NlcGFyYXRvcj0hMCx0aGlzLnN1YnNjcmlw'@; put 'dGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvclNvcnRpbmdDaGFuZ2VzKCkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yRGV0YWlsUGFuZUNoYW5nZXMoKSl9Z2V0IGlzSGlkZGVuKCl7cmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo'@; put 'ekQpfWdldCBzaG93U2VwYXJhdG9yKCl7cmV0dXJuIHRoaXMuX3Nob3dTZXBhcmF0b3J9c2V0IHNob3dTZXBhcmF0b3IodCl7dGhpcy5fc2hvd1NlcGFyYXRvcj10LHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IGNvbFR5cGUoKXtyZXR1cm4gdGhpcy5fY29sVHlw'@; put 'ZX1zZXQgY29sVHlwZSh0KXt0aGlzLl9jb2xUeXBlPXR9Z2V0IGZpZWxkKCl7cmV0dXJuIHRoaXMuX2ZpZWxkfXNldCBmaWVsZCh0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0aGlzLl9maWVsZD10LHRoaXMuX3NvcnRCeXx8KHRoaXMuX3NvcnRCeT1uZXcgdVcodCkpKX1nZXQgc29ydEJ5KCl7'@; put 'cmV0dXJuIHRoaXMuX3NvcnRCeX1zZXQgc29ydEJ5KHQpeyJzdHJpbmciPT10eXBlb2YgdD90aGlzLl9zb3J0Qnk9bmV3IHVXKHQpOnQ/dGhpcy5fc29ydEJ5PXQ6dGhpcy5maWVsZD90aGlzLl9zb3J0Qnk9bmV3IHVXKHRoaXMuZmllbGQpOmRlbGV0ZSB0aGlzLl9zb3J0Qnl9Z2V0IHNvcnRP'@; put 'cmRlcigpe3JldHVybiB0aGlzLl9zb3J0T3JkZXJ9c2V0IHNvcnRPcmRlcih0KXtpZighKHR5cGVvZiB0PiJ1IikmJnRoaXMuX3NvcnRPcmRlciE9PXQpc3dpdGNoKHQpe2Nhc2UgRnAuQVNDOnRoaXMuc29ydCghMSk7YnJlYWs7Y2FzZSBGcC5ERVNDOnRoaXMuc29ydCghMCk7YnJlYWs7ZGVm'@; put 'YXVsdDp0aGlzLl9zb3J0LmNsZWFyKCl9fXNldCB1cGRhdGVGaWx0ZXJWYWx1ZSh0KXt0aGlzLmZpbHRlcj90aGlzLmZpbHRlciBpbnN0YW5jZW9mIFhiPygoIXR8fCJzdHJpbmciIT10eXBlb2YgdCkmJih0PSIiKSx0IT09dGhpcy5maWx0ZXIudmFsdWUmJih0aGlzLmZpbHRlci52YWx1ZT10'@; put 'KSk6dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBLYiYmKCghdHx8ISh0IGluc3RhbmNlb2YgQXJyYXkpKSYmKHQ9W251bGwsbnVsbF0pLDI9PT10Lmxlbmd0aCYmKHRbMF0hPT10aGlzLmZpbHRlci52YWx1ZVswXXx8dFsxXSE9PXRoaXMuZmlsdGVyLnZhbHVlWzFdKSYmKHRoaXMuZmlsdGVyLnZh'@; put 'bHVlPXQpKTp0aGlzLmluaXRGaWx0ZXJWYWx1ZT10fXNldCBwcm9qZWN0ZWRGaWx0ZXIodCl7dCYmKHRoaXMuZGVsZXRlRmlsdGVyKCksdGhpcy5jdXN0b21GaWx0ZXI9ITApfWdldCBzb3J0YWJsZSgpe3JldHVybiEhdGhpcy5fc29ydEJ5fWdldCBhcmlhU29ydCgpe3N3aXRjaCh0aGlzLl9z'@; put 'b3J0T3JkZXIpe2Nhc2UgRnAuQVNDOnJldHVybiJhc2NlbmRpbmciO2Nhc2UgRnAuREVTQzpyZXR1cm4iZGVzY2VuZGluZyI7ZGVmYXVsdDpyZXR1cm4ibm9uZSJ9fWdldCBzb3J0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3NvcnREaXJlY3Rpb259Z2V0IGZpbHRlclZhbHVlKCl7cmV0dXJu'@; put 'IHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgWGJ8fHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgS2I/dGhpcy5maWx0ZXIudmFsdWU6bnVsbH1zZXQgZmlsdGVyVmFsdWUodCl7KHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgWGJ8fHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgS2IpJiYodGhpcy51cGRhdGVG'@; put 'aWx0ZXJWYWx1ZT10LHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlci52YWx1ZSkpfWdldCBfdmlldygpe3JldHVybiB0aGlzLndyYXBwZWRJbmplY3Rvci5nZXQoYmFlLHRoaXMudmNyKS5jb2x1bW5WaWV3fW5nT25Jbml0KCl7dGhpcy53cmFwcGVkSW5qZWN0b3I9bmV3'@; put 'IEt6KGJhZSx0aGlzLnZjcil9bmdPbkNoYW5nZXModCl7dC5jb2xUeXBlJiZ0LmNvbFR5cGUuY3VycmVudFZhbHVlJiZ0LmNvbFR5cGUuY3VycmVudFZhbHVlIT09dC5jb2xUeXBlLnByZXZpb3VzVmFsdWUmJiF0aGlzLmN1c3RvbUZpbHRlciYmIXRoaXMuZmlsdGVyJiZ0aGlzLmNvbFR5cGUm'@; put 'JnRoaXMuZmllbGQmJnRoaXMuc2V0dXBEZWZhdWx0RmlsdGVyKHRoaXMuZmllbGQsdGhpcy5jb2xUeXBlKSx0LmZpZWxkJiZ0LmZpZWxkLmN1cnJlbnRWYWx1ZSYmdC5maWVsZC5jdXJyZW50VmFsdWUhPT10LmZpZWxkLnByZXZpb3VzVmFsdWUmJiF0aGlzLmN1c3RvbUZpbHRlciYmdGhpcy5j'@; put 'b2xUeXBlJiZ0aGlzLnNldHVwRGVmYXVsdEZpbHRlcih0aGlzLmZpZWxkLHRoaXMuY29sVHlwZSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9c29ydCh0KXt0aGlzLnNvcnRhYmxlJiYodGhp'@; put 'cy5fc29ydC50b2dnbGUodGhpcy5fc29ydEJ5LHQpLHRoaXMuX3NvcnRPcmRlcj10aGlzLl9zb3J0LnJldmVyc2U/RnAuREVTQzpGcC5BU0MsdGhpcy5fc29ydERpcmVjdGlvbj10aGlzLl9zb3J0T3JkZXI9PT1GcC5ERVNDPyJkb3duIjoidXAiLHRoaXMuc29ydE9yZGVyQ2hhbmdlLmVtaXQo'@; put 'dGhpcy5fc29ydE9yZGVyKSl9bGlzdGVuRm9yRGV0YWlsUGFuZUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5kZXRhaWxTZXJ2aWNlLnN0YXRlQ2hhbmdlLnN1YnNjcmliZSh0PT57dGhpcy5zaG93U2VwYXJhdG9yIT09IXQmJih0aGlzLnNob3dTZXBhcmF0b3I9IXQpfSl9bGlzdGVuRm9yU29ydGlu'@; put 'Z0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5fc29ydC5jaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc29ydE9yZGVyIT09RnAuVU5TT1JURUQmJnQuY29tcGFyYXRvciE9PXRoaXMuX3NvcnRCeSYmKHRoaXMuX3NvcnRPcmRlcj1G'@; put 'cC5VTlNPUlRFRCx0aGlzLnNvcnRPcmRlckNoYW5nZS5lbWl0KHRoaXMuX3NvcnRPcmRlciksdGhpcy5fc29ydERpcmVjdGlvbj1udWxsKX0pfXNldHVwRGVmYXVsdEZpbHRlcih0LHIpeyJudW1iZXIiPT09cj90aGlzLnNldEZpbHRlcihuZXcgS2IobmV3IGxXKHQpKSk6InN0cmluZyI9PT1y'@; put 'JiZ0aGlzLnNldEZpbHRlcihuZXcgWGIobmV3IGNXKHQpKSksdGhpcy5maWx0ZXImJnRoaXMuaW5pdEZpbHRlclZhbHVlJiYodGhpcy51cGRhdGVGaWx0ZXJWYWx1ZT10aGlzLmluaXRGaWx0ZXJWYWx1ZSxkZWxldGUgdGhpcy5pbml0RmlsdGVyVmFsdWUpfX1yZXR1cm4gbi5cdTAyNzVmYWM9'@; put 'ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShubyksemUoZFcpLHplKGw3KSx6ZShEcyksemUoZzQpLHplKFVsKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4iXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYm'@; put 'RmEoaSxpVyw1KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLnByb2plY3RlZEZpbHRlcj1vLmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJjb2x1bW5oZWFkZXIiXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmKFJyKCJhcmlhLXNvcnQiLHIuYXJpYVNv'@; put 'cnQpLHdyKCJkYXRhZ3JpZC1jb2x1bW4iLCEwKSl9LGlucHV0czp7ZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXI6WzAsImNsckZpbHRlclN0cmluZ1BsYWNlaG9sZGVyIiwiZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIiXSxmaWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlcjpbMCwiY2xyRmlsdGVyTnVt'@; put 'YmVyTWF4UGxhY2Vob2xkZXIiLCJmaWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlciJdLGZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyOlswLCJjbHJGaWx0ZXJOdW1iZXJNaW5QbGFjZWhvbGRlciIsImZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyIl0sY29sVHlwZTpbMCwiY2xyRGdDb2xUeXBl'@; put 'IiwiY29sVHlwZSJdLGZpZWxkOlswLCJjbHJEZ0ZpZWxkIiwiZmllbGQiXSxzb3J0Qnk6WzAsImNsckRnU29ydEJ5Iiwic29ydEJ5Il0sc29ydE9yZGVyOlswLCJjbHJEZ1NvcnRPcmRlciIsInNvcnRPcmRlciJdLHVwZGF0ZUZpbHRlclZhbHVlOlswLCJjbHJGaWx0ZXJWYWx1ZSIsInVwZGF0'@; put 'ZUZpbHRlclZhbHVlIl19LG91dHB1dHM6e3NvcnRPcmRlckNoYW5nZToiY2xyRGdTb3J0T3JkZXJDaGFuZ2UiLGZpbHRlclZhbHVlQ2hhbmdlOiJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W3pnKFtpN10pLEZvLGl1XSxuZ0NvbnRlbnRTZWxlY3RvcnM6'@; put 'eTh0LGRlY2xzOjksdmFyczo1LGNvbnN0czpbWyJjb2x1bW5UaXRsZSIsIiJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4tZmxleCJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiLCJ0eXBlIiwiYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFszLCJjbHJGaWx0ZXJQbGFjZWhvbGRl'@; put 'ciIsImNsckRnU3RyaW5nRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUiLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsImNsckZpbHRlck1pblBsYWNlaG9sZGVyIiwiY2xyRGdOdW1lcmljRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUi'@; put 'LCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiZGF0YWdyaWQtY29sdW1uLXRpdGxlIiwzLCJjbGljayJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0s'@; put 'WyJzaGFwZSIsImFycm93IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwiY2xhc3MiLCJzb3J0LWljb24iLDQsIm5nSWYiXSxbInNoYXBlIiwiYXJyb3ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsInNvcnQtaWNvbiJdLFszLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsImNsckZpbHRlclBsYWNlaG9s'@; put 'ZGVyIiwiY2xyRGdTdHJpbmdGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSJdLFszLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLCJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSJdLFsxLCJk'@; put 'YXRhZ3JpZC1jb2x1bW4tdGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhfOHQpLEooMCwiZGl2IiwxKSxZbigxLEM4dCwzLDIsImJ1dHRvbiIsMiksV3IoMiksWW4oMyxTOHQsMSwzLCJjbHItZGctc3RyaW5nLWZpbHRlciIsMykoNCxFOHQsMSw0LCJjbHItZGctbnVt'@; put 'ZXJpYy1maWx0ZXIiLDQpKDUsTTh0LDEsMCwibmctdGVtcGxhdGUiLG51bGwsMCxjZCkoNyx4OHQsMiwxLCJzcGFuIiw1KSg4LEE4dCwxLDAsImNsci1kZy1jb2x1bW4tc2VwYXJhdG9yIiw2KSx0ZSgpKSwyJnQmJihpZSgpLHJ0KCJuZ0lmIixyLnNvcnRhYmxlKSxpZSgyKSxydCgibmdJZiIs'@; put 'ci5maWVsZCYmIXIuY3VzdG9tRmlsdGVyJiYic3RyaW5nIj09ci5jb2xUeXBlKSxpZSgpLHJ0KCJuZ0lmIixyLmZpZWxkJiYhci5jdXN0b21GaWx0ZXImJiJudW1iZXIiPT1yLmNvbFR5cGUpLGllKDMpLHJ0KCJuZ0lmIiwhci5zb3J0YWJsZSksaWUoKSxydCgibmdJZiIsci5zaG93U2VwYXJh'@; put 'dG9yKSl9LGRlcGVuZGVuY2llczpbWXMsSWYsSnMsT01lLElNZSxTTV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbn0pKCksYzc9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy5fZmlsdGVycz10LHRoaXMuX3NvcnQ9cix0aGlzLl9wYWdlPWksdGhp'@; put 'cy5sb2FkaW5nPSExLHRoaXMuX3NtYXJ0PSExLHRoaXMuX2Rpc3BsYXllZD1bXSx0aGlzLl9jaGFuZ2U9bmV3IE1yLHRoaXMuX2FsbENoYW5nZXM9bmV3IE1yLHRoaXMudHJhY2tCeT1vPT5vfWdldCBzbWFydCgpe3JldHVybiB0aGlzLl9zbWFydH1nZXQgYWxsKCl7cmV0dXJuIHRoaXMuX2Fs'@; put 'bH1zZXQgYWxsKHQpe3RoaXMuX2FsbD10LHRoaXMuZW1pdEFsbENoYW5nZXModCksdGhpcy5zbWFydD90aGlzLl9maWx0ZXJJdGVtcygpOih0aGlzLl9kaXNwbGF5ZWQ9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9Z2V0IGRpc3BsYXllZCgpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWR9Z2V0IGNoYW5n'@; put 'ZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGFsbENoYW5nZXMoKXtyZXR1cm4gdGhpcy5fYWxsQ2hhbmdlcy5hc09ic2VydmFibGUoKX1nZXQgdW5pbml0aWFsaXplZCgpe3JldHVybiF0aGlzLl9hbGx9ZGVzdHJveSgpe3RoaXMuX2ZpbHRlcnNTdWImJnRoaXMu'@; put 'X2ZpbHRlcnNTdWIudW5zdWJzY3JpYmUoKSx0aGlzLl9zb3J0U3ViJiZ0aGlzLl9zb3J0U3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fcGFnZVN1YiYmdGhpcy5fcGFnZVN1Yi51bnN1YnNjcmliZSgpfXNtYXJ0ZW5Eb3duKCl7dGhpcy5fc21hcnQ9ITEsdGhpcy5kZXN0cm95KCl9c21hcnRlblVw'@; put 'KCl7dGhpcy5fc21hcnQ9ITAsdGhpcy5fZmlsdGVyc1N1Yj10aGlzLl9maWx0ZXJzLmNoYW5nZS5zdWJzY3JpYmUoKCk9PnRoaXMuX2ZpbHRlckl0ZW1zKCkpLHRoaXMuX3NvcnRTdWI9dGhpcy5fc29ydC5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5fc29ydC5jb21wYXJhdG9yP3RoaXMu'@; put 'X3NvcnRJdGVtcygpOnRoaXMuX2ZpbHRlckl0ZW1zKCl9KSx0aGlzLl9wYWdlU3ViPXRoaXMuX3BhZ2UuY2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5fY2hhbmdlUGFnZSgpKX1yZWZyZXNoKCl7dGhpcy5zbWFydCYmdGhpcy5fZmlsdGVySXRlbXMoKX1lbWl0Q2hhbmdlKCl7dGhpcy5fY2hh'@; put 'bmdlLm5leHQodGhpcy5kaXNwbGF5ZWQpfWVtaXRBbGxDaGFuZ2VzKHQpe3RoaXMuX2FsbENoYW5nZXMubmV4dCh0KX1fZmlsdGVySXRlbXMoKXt0aGlzLnVuaW5pdGlhbGl6ZWR8fCh0aGlzLl9maWx0ZXJlZD10aGlzLl9maWx0ZXJzLmhhc0FjdGl2ZUZpbHRlcnMoKT90aGlzLl9hbGwuZmls'@; put 'dGVyKHQ9PnRoaXMuX2ZpbHRlcnMuYWNjZXB0cyh0KSk6dGhpcy5fYWxsLnNsaWNlKCksdGhpcy5fcGFnZS50b3RhbEl0ZW1zPXRoaXMuX2ZpbHRlcmVkLmxlbmd0aCx0aGlzLl9zb3J0SXRlbXMoKSl9X3NvcnRJdGVtcygpe3RoaXMudW5pbml0aWFsaXplZHx8KHRoaXMuX3NvcnQuY29tcGFy'@; put 'YXRvciYmdGhpcy5fZmlsdGVyZWQuc29ydCgodCxyKT0+dGhpcy5fc29ydC5jb21wYXJlKHQscikpLHRoaXMuX2NoYW5nZVBhZ2UoKSl9X2NoYW5nZVBhZ2UoKXt0aGlzLnVuaW5pdGlhbGl6ZWR8fHRoaXMuX3BhZ2UuYWN0aXZhdGVkJiYwPT09dGhpcy5fcGFnZS5zaXplfHwodGhpcy5fZGlz'@; put 'cGxheWVkPXRoaXMuX3BhZ2Uuc2l6ZT4wP3RoaXMuX2ZpbHRlcmVkLnNsaWNlKHRoaXMuX3BhZ2UuZmlyc3RJdGVtLHRoaXMuX3BhZ2UubGFzdEl0ZW0rMSk6dGhpcy5fZmlsdGVyZWQsdGhpcy5lbWl0Q2hhbmdlKCkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l'@; put 'dyh0fHxuKShvcihsNyksb3IoZFcpLG9yKEl2KSl9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCkseE09KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvKXt0aGlzLnRlbXBsYXRlPXQsdGhpcy5kaWZmZXJzPXIsdGhpcy5pdGVtcz1p'@; put 'LHRoaXMuZGlmZmVyPW51bGwsdGhpcy5zdWJzY3JpcHRpb25zPVtdLGkuc21hcnRlblVwKCksdGhpcy5pdGVyYWJsZVByb3h5PW5ldyBSZihvLHQsciksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goaS5jaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLml0ZXJhYmxlUHJveHkubmdGb3JPZj1hLHRo'@; put 'aXMuaXRlcmFibGVQcm94eS5uZ0RvQ2hlY2soKX0pKX1zZXQgcmF3SXRlbXModCl7dGhpcy5fcmF3SXRlbXM9dHx8W119c2V0IHRyYWNrQnkodCl7dGhpcy5pdGVyYWJsZVByb3h5Lm5nRm9yVHJhY2tCeT10fXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKHQscil7cmV0dXJuITB9bmdE'@; put 'b0NoZWNrKCl7dGhpcy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZCh0aGlzLl9yYXdJdGVtcykuY3JlYXRlKHRoaXMuaXRlcmFibGVQcm94eS5uZ0ZvclRyYWNrQnkpKSx0aGlzLmRpZmZlciYmdGhpcy5kaWZmZXIuZGlmZih0aGlzLl9yYXdJdGVtcykmJih0aGlzLml0'@; put 'ZW1zLmFsbD10aGlzLl9yYXdJdGVtcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShGYyksemUoYXYpLHplKGM3KSx6ZShEcykpfSxu'@; put 'Llx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLCJjbHJEZ0l0ZW1zIiwiIiwiY2xyRGdJdGVtc09mIiwiIl1dLGlucHV0czp7cmF3SXRlbXM6WzAsImNsckRnSXRlbXNPZiIsInJhd0l0ZW1zIl0sdHJhY2tCeTpbMCwiY2xyRGdJdGVtc1RyYWNrQnkiLCJ0cmFja0J5Il19LHN0'@; put 'YW5kYWxvbmU6ITF9KSxufSkoKSxTYWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLml0ZW1zPXR9Z2V0IGVtcHR5RGF0YWdyaWQoKXtyZXR1cm4hKHRoaXMuaXRlbXMubG9hZGluZ3x8dGhpcy5pdGVtcy5kaXNwbGF5ZWQmJjAhPT10aGlzLml0ZW1zLmRpc3BsYXllZC5sZW5n'@; put 'dGgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShjNykpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGctcGxhY2Vob2xkZXIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndy'@; put 'KCJkYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250YWluZXIiLCEwKX0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbMSwiZGF0YWdyaWQtcGxhY2Vob2xkZXIiXSxbImNsYXNzIiwiZGF0YWdyaWQtcGxhY2Vob2xkZXItaW1hZ2UiLDQs'@; put 'Im5nSWYiXSxbMSwiZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGVudCJdLFs0LCJuZ0lmIl0sWzEsImRhdGFncmlkLXBsYWNlaG9sZGVyLWltYWdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxKKDAsImRpdiIsMCksWW4oMSxrOHQsMSwwLCJkaXYiLDEpLEooMiwic3Bh'@; put 'biIsMiksWW4oMyxSOHQsMSwwLCJuZy1jb250ZW50IiwzKSx0ZSgpKCkpLDImdCYmKHdyKCJkYXRhZ3JpZC1lbXB0eSIsci5lbXB0eURhdGFncmlkKSxpZSgpLHJ0KCJuZ0lmIixyLmVtcHR5RGF0YWdyaWQpLGllKDIpLHJ0KCJuZ0lmIixyLmVtcHR5RGF0YWdyaWQpKX0sZGVwZW5kZW5jaWVz'@; put 'OltZc10sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksRWFlPSgoKT0+e2NsYXNzIG57bmdBZnRlclZpZXdJbml0KCl7dGhpcy5jZWxsVmlldz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMuY2VsbFZpZXcuZGVzdHJveSgpfX1yZXR1'@; put 'cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siZGctd3JhcHBlZC1jZWxsIl1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmV28oSTh0LDUpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYm'@; put 'KHIudGVtcGxhdGVSZWY9aS5maXJzdCl9fSxzdGFuZGFsb25lOiExLG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1siY2VsbFBvcnRhbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksWW4oMCxEOHQsMSwwLCJuZy10ZW1wbGF0ZSIs'@; put 'bnVsbCwwLGNkKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLHY0PSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy52Y3I9dH1nZXQgX3ZpZXcoKXtyZXR1cm4gdGhpcy53cmFwcGVkSW5qZWN0b3IuZ2V0KEVhZSx0aGlzLnZjcikuY2VsbFZpZXd9bmdPbkluaXQoKXt0aGlzLndy'@; put 'YXBwZWRJbmplY3Rvcj1uZXcgS3ooRWFlLHRoaXMudmNyKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoRHMpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRnLWNlbGwiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rp'@; put 'b24odCxyLGkpe2lmKDEmdCYmRmEoaSxxeiw0KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLnNpZ25wb3N0PW8pfX0saG9zdEF0dHJzOlsicm9sZSIsImdyaWRjZWxsIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJkYXRhZ3JpZC1jZWxsIiwhMCko'@; put 'ImRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIiLHIuc2lnbnBvc3QubGVuZ3RoPjApfSxzdGFuZGFsb25lOiExLG5nQ29udGVudFNlbGVjdG9yczplcyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksV3IoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxufSko'@; put 'KSxOTWU9MCxXRD0oKCk9PntjbGFzcyBuIGV4dGVuZHMgTmZ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuZXhwYW5kYWJsZUlkPSIiLHRoaXMuX3JlcGxhY2U9bmV3ICRpKCExKSx0aGlzLl9hbmltYXRlPW5ldyBNcixOTWUrKyx0aGlzLmV4cGFuZGFibGVJZD0iY2xyLWRnLWV4cGFuZGFi'@; put 'bGUtcm93LSIrTk1lfWdldCBleHBhbmRlZCgpe3JldHVybiB0aGlzLl9leHBhbmRlZH1zZXQgZXhwYW5kZWQodCl7KHQ9ISF0KSE9PXRoaXMuX2V4cGFuZGVkJiYodGhpcy5fZXhwYW5kZWQ9dCx0aGlzLl9hbmltYXRlLm5leHQoKSx0aGlzLl9leHBhbmRDaGFuZ2UubmV4dCh0KSl9Z2V0IHJl'@; put 'cGxhY2UoKXtyZXR1cm4gdGhpcy5fcmVwbGFjZS5hc09ic2VydmFibGUoKX1nZXQgYW5pbWF0ZSgpe3JldHVybiB0aGlzLl9hbmltYXRlLmFzT2JzZXJ2YWJsZSgpfWxvYWRpbmdTdGF0ZUNoYW5nZSh0KXtzdXBlci5sb2FkaW5nU3RhdGVDaGFuZ2UodCksdCE9PU9mLkxPQURJTkcmJnRoaXMu'@; put 'X2FuaW1hdGUubmV4dCgpfXNldFJlcGxhY2UodCl7dGhpcy5fcmVwbGFjZS5uZXh0KHQpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKTt2YXIgQU09ZnVu'@; put 'Y3Rpb24obil7cmV0dXJuIG5bbi5ESVNQTEFZPTBdPSJESVNQTEFZIixuW24uQ0FMQ1VMQVRFPTFdPSJDQUxDVUxBVEUiLG59KEFNfHx7fSksQmM9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5Ob25lPTBdPSJOb25lIixuW24uU2luZ2xlPTFdPSJTaW5nbGUiLG5bbi5NdWx0aT0yXT0iTXVsdGki'@; put 'LG59KEJjfHx7fSk7bGV0IE1hZT0oKCk9PntjbGFzcyBue25nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMucm93Vmlldz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMucm93Vmlldy5kZXN0cm95KCl9fXJldHVybiBuLlx1MDI3NWZhYz1m'@; put 'dW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJkZy13cmFwcGVkLXJvdyJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxyKXtpZigxJnQmJldvKEw4dCw1KSwyJnQpe2xldCBpO2NpKGk9dWkoKSkmJihyLnRlbXBsYXRlUmVmPWku'@; put 'Zmlyc3QpfX0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbInJvd1BvcnRhbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKCksWW4oMCxPOHQsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLGNkKSl9LGVuY2Fw'@; put 'c3VsYXRpb246Mn0pLG59KSgpLGh5dD0wLGtNPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyKXt0aGlzLl9pdGVtcz10LHRoaXMucHJlc2VydmVTZWxlY3Rpb249ITEsdGhpcy5zaGlmdFByZXNzZWQ9ITEsdGhpcy5yb3dTZWxlY3Rpb25Nb2RlPSExLHRoaXMucHJldlNlbGVjdGlvblJl'@; put 'ZnM9W10sdGhpcy5sb2NrZWRSZWZzPVtdLHRoaXMudmFsdWVDb2xsZWN0b3I9bmV3IE1yLHRoaXMuX3NlbGVjdGlvblR5cGU9QmMuTm9uZSx0aGlzLl9jaGFuZ2U9bmV3IE1yLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmlkPSJjbHItZGctc2VsZWN0aW9uIitoeXQrKyx0aGlzLnN1YnNj'@; put 'cmlwdGlvbnMucHVzaChyLmNoYW5nZS5zdWJzY3JpYmUoKCk9PnshdGhpcy5fc2VsZWN0YWJsZXx8dGhpcy5wcmVzZXJ2ZVNlbGVjdGlvbnx8dGhpcy5jbGVhclNlbGVjdGlvbigpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHQuYWxsQ2hhbmdlcy5zdWJzY3JpYmUoaT0+e2NvbnN0IG89'@; put 'W107c3dpdGNoKHRoaXMuc2VsZWN0aW9uVHlwZSl7Y2FzZSBCYy5Ob25lOmJyZWFrO2Nhc2UgQmMuU2luZ2xlOntsZXQgYSxsPSExO3RoaXMuY3VycmVudFNpbmdsZSYmIXRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZiYmKHRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj10LnRyYWNrQnko'@; put 'dGhpcy5jdXJyZW50U2luZ2xlKSksaS5mb3JFYWNoKHU9Pntjb25zdCBnPXQudHJhY2tCeSh1KTt0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9PT1nJiYoYT11LGw9ITApLHRoaXMubG9ja2VkUmVmcy5pbmRleE9mKGcpPi0xJiZvLnB1c2goZyl9KSx0LnNtYXJ0JiYhYSYmKGw9ITApLHNl'@; put 'dFRpbWVvdXQoKCk9PntsJiYodGhpcy5jdXJyZW50U2luZ2xlPWEpfSwwKTticmVha31jYXNlIEJjLk11bHRpOntsZXQgYT10aGlzLmN1cnJlbnQuc2xpY2UoKSxsPSExO3RoaXMuY3VycmVudC5sZW5ndGg+MCYmdGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5sZW5ndGghPT10aGlzLmN1cnJlbnQu'@; put 'bGVuZ3RoJiYodGhpcy5wcmV2U2VsZWN0aW9uUmVmcz1bXSx0aGlzLmN1cnJlbnQuZm9yRWFjaCh1PT57dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5wdXNoKHQudHJhY2tCeSh1KSl9KSksaS5mb3JFYWNoKHU9Pntjb25zdCBnPXQudHJhY2tCeSh1KTt0aGlzLmxvY2tlZFJlZnMuaW5kZXhPZihn'@; put 'KT4tMSYmby5wdXNoKGcpfSksYS5sZW5ndGg+MCYmKGkuZm9yRWFjaCh1PT57Y29uc3QgZz10LnRyYWNrQnkodSksRT10aGlzLnByZXZTZWxlY3Rpb25SZWZzLmluZGV4T2YoZyk7RT4tMSYmKGFbRV09dSxsPSEwKX0pLHQuc21hcnQmJihhPWEuZmlsdGVyKHU9PmkuaW5kZXhPZih1KT4tMSks'@; put 'dGhpcy5jdXJyZW50Lmxlbmd0aCE9PWEubGVuZ3RoJiYobD0hMCkpLHNldFRpbWVvdXQoKCk9PntsJiYodGhpcy5jdXJyZW50PWEpfSwwKSk7YnJlYWt9fXRoaXMubG9ja2VkUmVmcz1vfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudmFsdWVDb2xsZWN0b3IucGlwZShOYigwKSku'@; put 'c3Vic2NyaWJlKCgpPT50aGlzLmVtaXRDaGFuZ2UoKSkpfWdldCBzZWxlY3Rpb25UeXBlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGV9c2V0IHNlbGVjdGlvblR5cGUodCl7dCE9PXRoaXMuc2VsZWN0aW9uVHlwZSYmKHRoaXMuX3NlbGVjdGlvblR5cGU9dCx0PT09QmMuTm9uZT9kZWxl'@; put 'dGUgdGhpcy5jdXJyZW50OnRoaXMudXBkYXRlQ3VycmVudChbXSwhMSkpfWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9c2V0IGN1cnJlbnQodCl7dGhpcy51cGRhdGVDdXJyZW50KHQsITApfWdldCBjdXJyZW50U2luZ2xlKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRTaW5nbGV9'@; put 'c2V0IGN1cnJlbnRTaW5nbGUodCl7dCE9PXRoaXMuX2N1cnJlbnRTaW5nbGUmJih0aGlzLl9jdXJyZW50U2luZ2xlPXQsdCYmKHRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj10aGlzLl9pdGVtcy50cmFja0J5KHQpKSx0aGlzLmVtaXRDaGFuZ2UoKSl9Z2V0IGNoYW5nZSgpe3JldHVybiB0'@; put 'aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IF9zZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGU9PT1CYy5NdWx0aXx8dGhpcy5fc2VsZWN0aW9uVHlwZT09PUJjLlNpbmdsZX1jbGVhclNlbGVjdGlvbigpe3RoaXMuX2N1cnJlbnQ9W10sdGhpcy5wcmV2U2VsZWN0'@; put 'aW9uUmVmcz1bXSx0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9bnVsbCx0aGlzLl9jdXJyZW50U2luZ2xlPW51bGwsdGhpcy5lbWl0Q2hhbmdlKCl9ZGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9dXBkYXRlQ3VycmVudCh0LHIpe3Ro'@; put 'aXMuX2N1cnJlbnQ9dCxyJiZ0aGlzLnZhbHVlQ29sbGVjdG9yLm5leHQodCl9aXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uVHlwZT09PUJjLlNpbmdsZT90aGlzLmN1cnJlbnRTaW5nbGU9PT10OnRoaXMuX3NlbGVjdGlvblR5cGU9PT1CYy5NdWx0aSYmdGhpcy5jdXJyZW50'@; put 'LmluZGV4T2YodCk+PTB9c2V0U2VsZWN0ZWQodCxyKXtjb25zdCBpPXRoaXMuY3VycmVudD90aGlzLmN1cnJlbnQuaW5kZXhPZih0KTotMTtzd2l0Y2godGhpcy5fc2VsZWN0aW9uVHlwZSl7Y2FzZSBCYy5Ob25lOmNhc2UgQmMuU2luZ2xlOmJyZWFrO2Nhc2UgQmMuTXVsdGk6aT49MCYmIXI/'@; put 'dGhpcy5kZXNlbGVjdEl0ZW0oaSk6aTwwJiZyJiZ0aGlzLnNlbGVjdEl0ZW0odCl9fWlzQWxsU2VsZWN0ZWQoKXtpZih0aGlzLl9zZWxlY3Rpb25UeXBlIT09QmMuTXVsdGl8fCF0aGlzLl9pdGVtcy5kaXNwbGF5ZWQpcmV0dXJuITE7Y29uc3QgdD10aGlzLl9pdGVtcy5kaXNwbGF5ZWQuZmls'@; put 'dGVyKG89PiExPT09dGhpcy5pc0xvY2tlZChvKSk7cmV0dXJuISh0Lmxlbmd0aDwxKSYmdC5maWx0ZXIobz0+dGhpcy5jdXJyZW50LmluZGV4T2Yobyk+LTEpLmxlbmd0aD09PXQubGVuZ3RofWxvY2tJdGVtKHQscil7aWYodGhpcy5jYW5JdEJlTG9ja2VkKCkpe2NvbnN0IGk9dGhpcy5faXRl'@; put 'bXMudHJhY2tCeSh0KTshMD09PXI/dGhpcy5sb2NrZWRSZWZzLnB1c2goaSk6dGhpcy5sb2NrZWRSZWZzPXRoaXMubG9ja2VkUmVmcy5maWx0ZXIobz0+aSE9PW8pfX1pc0xvY2tlZCh0KXtpZih0aGlzLmNhbkl0QmVMb2NrZWQoKSl7Y29uc3Qgcj10aGlzLl9pdGVtcy50cmFja0J5KHQpO3Jl'@; put 'dHVybiB0aGlzLmxvY2tlZFJlZnMuaW5kZXhPZihyKT4tMX1yZXR1cm4hMX10b2dnbGVBbGwoKXt0aGlzLl9zZWxlY3Rpb25UeXBlPT09QmMuTm9uZXx8dGhpcy5fc2VsZWN0aW9uVHlwZT09PUJjLlNpbmdsZXx8KHRoaXMuaXNBbGxTZWxlY3RlZCgpP3RoaXMuX2l0ZW1zLmRpc3BsYXllZC5m'@; put 'b3JFYWNoKHQ9Pntjb25zdCByPXRoaXMuY3VycmVudC5pbmRleE9mKHQpO3I+LTEmJiExPT09dGhpcy5pc0xvY2tlZCh0KSYmdGhpcy5kZXNlbGVjdEl0ZW0ocil9KTp0aGlzLl9pdGVtcy5kaXNwbGF5ZWQuZm9yRWFjaCh0PT57dGhpcy5jdXJyZW50LmluZGV4T2YodCk8MCYmITE9PT10aGlz'@; put 'LmlzTG9ja2VkKHQpJiZ0aGlzLnNlbGVjdEl0ZW0odCl9KSl9c2VsZWN0SXRlbSh0KXt0aGlzLmN1cnJlbnQ9dGhpcy5jdXJyZW50LmNvbmNhdCh0KSx0aGlzLnByZXZTZWxlY3Rpb25SZWZzLnB1c2godGhpcy5faXRlbXMudHJhY2tCeSh0KSl9ZGVzZWxlY3RJdGVtKHQpe2lmKHRoaXMuY3Vy'@; put 'cmVudD10aGlzLmN1cnJlbnQuc2xpY2UoMCx0KS5jb25jYXQodGhpcy5jdXJyZW50LnNsaWNlKHQrMSkpLHQ8dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5sZW5ndGgpe2NvbnN0IHI9dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5zcGxpY2UodCwxKTt0aGlzLmxvY2tlZFJlZnM9dGhpcy5sb2NrZWRS'@; put 'ZWZzLmZpbHRlcihpPT5pIT09clswXSl9fWNhbkl0QmVMb2NrZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uVHlwZSE9PUJjLk5vbmV9ZW1pdENoYW5nZSgpe3RoaXMuX3NlbGVjdGlvblR5cGU9PT1CYy5TaW5nbGU/dGhpcy5fY2hhbmdlLm5leHQodGhpcy5jdXJyZW50U2luZ2xlKTp0aGlz'@; put 'Ll9zZWxlY3Rpb25UeXBlPT09QmMuTXVsdGkmJnRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuY3VycmVudCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKGM3KSxvcihsNykpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3'@; put 'NWZhY30pLG59KSgpLFRhZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXc9bmV3ICRpKEFNLkRJU1BMQVkpLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0LmZpbHRlclJlbmRlclN0ZXBzKG00LkNBTENVTEFURV9NT0RFX09OKS5z'@; put 'dWJzY3JpYmUoKCk9PnRoaXMuX3ZpZXcubmV4dChBTS5DQUxDVUxBVEUpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godC5maWx0ZXJSZW5kZXJTdGVwcyhtNC5DQUxDVUxBVEVfTU9ERV9PRkYpLnN1YnNjcmliZSgoKT0+dGhpcy5fdmlldy5uZXh0KEFNLkRJU1BMQVkpKSl9Z2V0IHZpZXco'@; put 'KXtyZXR1cm4gdGhpcy5fdmlldy5hc09ic2VydmFibGUoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKGV3KSl9LG4uXHUwMjc1cHJv'@; put 'dj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCkseGFlPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy5zZWxlY3Rpb249dH1vblNlbGVjdGlvbkNlbGxDbGljayh0KXt0aGlzLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25Nb2RlfHwiTEFCRUwiIT09dC50YXJn'@; put 'ZXQudGFnTmFtZSYmIklOUFVUIiE9PXQudGFyZ2V0LnRhZ05hbWUmJnQudGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik/LmNsaWNrKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKGtNKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2Vs'@; put 'ZWN0b3JzOltbIiIsOCwiZGF0YWdyaWQtc2VsZWN0Il1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezEmdCYmd3QoImNsaWNrIixmdW5jdGlvbihvKXtyZXR1cm4gci5vblNlbGVjdGlvbkNlbGxDbGljayhvKX0pfSxzdGFuZGFsb25lOiExfSksbn0pKCksRzU9KCgpPT57Y2xhc3Mgbntj'@; put 'b25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy5lbD10LHRoaXMucmVuZGVyZXI9cix0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goaS5maWx0ZXJSZW5kZXJTdGVwcyhtNC5DTEVBUl9XSURUSFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jbGVhcldpZHRoKCkpKX1uZ09u'@; put 'RGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSksdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXJlc2V0U3RhdGUodCl7dGhpcy5zZXRXaWR0aCh0KSx0aGlzLnNldEhpZGRlbih0'@; put 'KX1zZXRXaWR0aCh0KXt0LnN0cmljdFdpZHRoP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LFRNKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxUTSksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2'@; put 'ZUVsZW1lbnQsIndpZHRoIix0LndpZHRoKyJweCIpfXNldEhpZGRlbih0KXt0LmhpZGRlbj90aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCx6RCk6dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsekQpfWNsZWFyV2lkdGgo'@; put 'KXt0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxUTSksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixudWxsKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUo'@; put 'bm8pLHplKE50KSx6ZShldykpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGctY2VsbCJdXSxzdGFuZGFsb25lOiExfSksbn0pKCksaFc9MCxMdj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8sYSxsLHUsZyxFLE8sWixlZSl7dGhpcy5zZWxlY3Rp'@; put 'b249dCx0aGlzLnJvd0FjdGlvblNlcnZpY2U9cix0aGlzLmdsb2JhbEV4cGFuZGFibGU9aSx0aGlzLmV4cGFuZD1vLHRoaXMuZGV0YWlsU2VydmljZT1hLHRoaXMuZGlzcGxheU1vZGU9bCx0aGlzLnZjcj11LHRoaXMuY29tbW9uU3RyaW5ncz1PLHRoaXMuaXRlbXM9Wix0aGlzLmRvY3VtZW50'@; put 'PWVlLHRoaXMuc2VsZWN0ZWRDaGFuZ2VkPW5ldyBLcighMSksdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgS3IoITEpLHRoaXMuZGV0YWlsRGlzYWJsZWQ9ITEsdGhpcy5kZXRhaWxIaWRkZW49ITEsdGhpcy5za2VsZXRvbkxvYWRpbmc9ITEsdGhpcy5kaXNwbGF5Q2VsbHM9ITEsdGhpcy5leHBh'@; put 'bmRBbmltYXRpb25UcmlnZ2VyPSExLHRoaXMuU0VMRUNUSU9OX1RZUEU9QmMsdGhpcy5pdGVtQ2hhbmdlcz1uZXcgZEQoMSksdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fZGV0YWlsT3BlbkxhYmVsPSIiLHRoaXMuX2RldGFpbENsb3NlTGFiZWw9IiIsdGhpcy5fcm93U2VsZWN0aW9uTGFiZWw9'@; put 'IiIsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3NlbGVjdGFibGU9ITAsaFcrKyx0aGlzLmlkPSJjbHItZGctcm93IitoVyx0aGlzLnJhZGlvSWQ9ImNsci1kZy1yb3ctcmQiK2hXLHRoaXMuY2hlY2tib3hJZD0iY2xyLWRnLXJvdy1jYiIraFcsdGhpcy5leHBhbmRhYmxlSWQ9by5leHBh'@; put 'bmRhYmxlSWQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goX2Ioby5yZXBsYWNlLG8uZXhwYW5kQ2hhbmdlKS5zdWJzY3JpYmUoKFt2ZSxNZV0pPT57dmUmJk1lPyh0aGlzLnJlcGxhY2VkPSEwLGcuYWRkQ2xhc3MoRS5uYXRpdmVFbGVtZW50LCJkYXRhZ3JpZC1yb3ctcmVwbGFjZWQiKSk6KHRo'@; put 'aXMucmVwbGFjZWQ9ITEsZy5yZW1vdmVDbGFzcyhFLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLXJvdy1yZXBsYWNlZCIpKX0pKX1nZXQgaXRlbSgpe3JldHVybiB0aGlzLl9pdGVtfXNldCBpdGVtKHQpe3RoaXMuX2l0ZW09dCx0aGlzLml0ZW1DaGFuZ2VzLm5leHQodCksdGhpcy5jbHJEZ1Nl'@; put 'bGVjdGFibGU9dGhpcy5fc2VsZWN0YWJsZX1nZXQgY2xyRGdTZWxlY3RhYmxlKCl7cmV0dXJuIXRoaXMuc2VsZWN0aW9uLmlzTG9ja2VkKHRoaXMuaXRlbSl9c2V0IGNsckRnU2VsZWN0YWJsZSh0KXt0aGlzLml0ZW0mJnRoaXMuc2VsZWN0aW9uLmxvY2tJdGVtKHRoaXMuaXRlbSwiZmFsc2Ui'@; put 'PT09dHx8ITE9PT10KSx0aGlzLl9zZWxlY3RhYmxlPXR9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1CYy5Ob25lP3RoaXMuX3NlbGVjdGVkOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5pdGVtKX1zZXQgc2VsZWN0ZWQodCl7dGhp'@; put 'cy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PUJjLk5vbmU/dGhpcy5fc2VsZWN0ZWQ9dDoodCYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PUJjLk11bHRpP3RoaXMucmFuZ2VTZWxlY3QoKTp0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0PW51bGwsdGhpcy5zZWxlY3Rpb24uc2V0'@; put 'U2VsZWN0ZWQodGhpcy5pdGVtLHQpKX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5leHBhbmQuZXhwYW5kZWR9c2V0IGV4cGFuZGVkKHQpe3RoaXMuZXhwYW5kLmV4cGFuZGVkPXR9Z2V0IGNsckRnRGV0YWlsT3BlbkxhYmVsKCl7cmV0dXJuIHRoaXMuX2RldGFpbE9wZW5MYWJlbD90aGlz'@; put 'Ll9kZXRhaWxPcGVuTGFiZWw6dGhpcy5jb21tb25TdHJpbmdzLmtleXMub3Blbn1zZXQgY2xyRGdEZXRhaWxPcGVuTGFiZWwodCl7dGhpcy5fZGV0YWlsT3BlbkxhYmVsPXR9Z2V0IGNsckRnRGV0YWlsQ2xvc2VMYWJlbCgpe3JldHVybiB0aGlzLl9kZXRhaWxDbG9zZUxhYmVsP3RoaXMuX2Rl'@; put 'dGFpbENsb3NlTGFiZWw6dGhpcy5jb21tb25TdHJpbmdzLmtleXMuY2xvc2V9c2V0IGNsckRnRGV0YWlsQ2xvc2VMYWJlbCh0KXt0aGlzLl9kZXRhaWxDbG9zZUxhYmVsPXR9Z2V0IGNsckRnUm93U2VsZWN0aW9uTGFiZWwoKXtyZXR1cm4gdGhpcy5fcm93U2VsZWN0aW9uTGFiZWw/dGhpcy5f'@; put 'cm93U2VsZWN0aW9uTGFiZWw6dGhpcy5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0fXNldCBjbHJEZ1Jvd1NlbGVjdGlvbkxhYmVsKHQpe3RoaXMuX3Jvd1NlbGVjdGlvbkxhYmVsPXR9Z2V0IF92aWV3KCl7cmV0dXJuIHRoaXMud3JhcHBlZEluamVjdG9yLmdldChNYWUsdGhpcy52Y3IpLnJv'@; put 'd1ZpZXd9bmdPbkluaXQoKXt0aGlzLndyYXBwZWRJbmplY3Rvcj1uZXcgS3ooTWFlLHRoaXMudmNyKSx0aGlzLnNlbGVjdGlvbi5sb2NrSXRlbSh0aGlzLml0ZW0sITE9PT10aGlzLmNsckRnU2VsZWN0YWJsZSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5kZ0NlbGxzLmNoYW5nZXMuc3Vi'@; put 'c2NyaWJlKCgpPT57dGhpcy5kZ0NlbGxzLmZvckVhY2godD0+e3QuX3ZpZXcuZGVzdHJveWVkfHx0aGlzLl9zY3JvbGxhYmxlQ2VsbHMuaW5zZXJ0KHQuX3ZpZXcpfSl9KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmRpc3BsYXlNb2RlLnZpZXcuc3Vi'@; put 'c2NyaWJlKHQ9Pntmb3IobGV0IHI9dGhpcy5fc2Nyb2xsYWJsZUNlbGxzLmxlbmd0aDtyPjA7ci0tKXRoaXMuX3Njcm9sbGFibGVDZWxscy5kZXRhY2goKTtmb3IobGV0IHI9dGhpcy5fY2FsY3VsYXRlZENlbGxzLmxlbmd0aDtyPjA7ci0tKXRoaXMuX2NhbGN1bGF0ZWRDZWxscy5kZXRhY2go'@; put 'KTt0PT09QU0uQ0FMQ1VMQVRFPyh0aGlzLmRpc3BsYXlDZWxscz0hMSx0aGlzLmRnQ2VsbHMuZm9yRWFjaChyPT57ci5fdmlldy5kZXN0cm95ZWR8fHRoaXMuX2NhbGN1bGF0ZWRDZWxscy5pbnNlcnQoci5fdmlldyl9KSk6KHRoaXMuZGlzcGxheUNlbGxzPSEwLHRoaXMuZGdDZWxscy5mb3JF'@; put 'YWNoKHI9PntyLl92aWV3LmRlc3Ryb3llZHx8dGhpcy5fc2Nyb2xsYWJsZUNlbGxzLmluc2VydChyLl92aWV3KX0pKX0pLHRoaXMuZXhwYW5kLmFuaW1hdGUuc3Vic2NyaWJlKCgpPT57dGhpcy5leHBhbmRBbmltYXRpb25UcmlnZ2VyPSF0aGlzLmV4cGFuZEFuaW1hdGlvblRyaWdnZXJ9KSl9'@; put 'bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfXRvZ2dsZSh0PSF0aGlzLnNlbGVjdGVkKXt0IT09dGhpcy5zZWxlY3RlZCYmKHRoaXMuc2VsZWN0ZWQ9dCx0aGlzLnNlbGVjdGVkQ2hhbmdlZC5lbWl0KHQpKX10b2dnbGVFeHBhbmQo'@; put 'KXt0aGlzLmV4cGFuZC5leHBhbmRhYmxlJiYodGhpcy5leHBhbmRBbmltYXRpb24udXBkYXRlU3RhcnRIZWlnaHQoKSx0aGlzLmV4cGFuZGVkPSF0aGlzLmV4cGFuZGVkLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKSl9Y2xlYXJSYW5nZXModCl7dC5zaGlmdEtleSYm'@; put 'KHRoaXMuZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCksLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJGaXJlZm94IikmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGUoITApKSl9c2VsZWN0Um93KHQ9IXRoaXMuc2VsZWN0ZWQs'@; put 'cil7IkxBQkVMIiE9PXIudGFyZ2V0LnRhZ05hbWUmJih0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09dGhpcy5TRUxFQ1RJT05fVFlQRS5TaW5nbGU/dGhpcy5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT10aGlzLml0ZW06dGhpcy50b2dnbGUodCkpfXJhbmdlU2VsZWN0KCl7Y29uc3Qg'@; put 'dD10aGlzLml0ZW1zLmRpc3BsYXllZDtpZighdClyZXR1cm47Y29uc3Qgcj10LmluZGV4T2YodGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCk7aWYodGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCYmdGhpcy5zZWxlY3Rpb24uY3VycmVudC5pbmNsdWRlcyh0aGlzLnNlbGVjdGlvbi5yYW5nZVN0'@; put 'YXJ0KSYmdGhpcy5zZWxlY3Rpb24uc2hpZnRQcmVzc2VkJiYtMSE9PXIpe2NvbnN0IGk9dC5pbmRleE9mKHRoaXMuaXRlbSksbz1uZXcgU2V0KHRoaXMuc2VsZWN0aW9uLmN1cnJlbnQuY29uY2F0KHQuc2xpY2UoTWF0aC5taW4ocixpKSxNYXRoLm1heChyLGkpKzEpKSk7dGhpcy5zZWxlY3Rp'@; put 'b24uY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnB1c2goLi4ubyl9ZWxzZSB0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0PXRoaXMuaXRlbX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoa00pLHplKEVNKSx6ZShNTSks'@; put 'emUoV0QpLHplKGc0KSx6ZShUYWUpLHplKERzKSx6ZShOdCksemUobm8pLHplKGlsKSx6ZShjNyksemUoVGwpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRnLXJvdyJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiZGYShpLHY0LDQp'@; put 'LDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIuZGdDZWxscz1vKX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmKFdvKHp6LDUpLFdvKE44dCw1KSxXbyhGOHQsNSxEcyksV28oUDh0LDUsRHMpLFdvKEg4dCw1LERzKSksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci5leHBhbmRB'@; put 'bmltYXRpb249aS5maXJzdCksY2koaT11aSgpKSYmKHIuZGV0YWlsQnV0dG9uPWkuZmlyc3QpLGNpKGk9dWkoKSkmJihyLl9zdGlja3lDZWxscz1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5fc2Nyb2xsYWJsZUNlbGxzPWkuZmlyc3QpLGNpKGk9dWkoKSkmJihyLl9jYWxjdWxhdGVkQ2VsbHM9'@; put 'aS5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwicm93Z3JvdXAiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmKFJyKCJhcmlhLW93bnMiLHIuaWQpLHdyKCJkYXRhZ3JpZC1yb3ciLCEwKSgiZGF0YWdyaWQtcm93LXNrZWxldG9uIixyLnNrZWxldG9uTG9h'@; put 'ZGluZykoImRhdGFncmlkLXNlbGVjdGVkIixyLnNlbGVjdGVkKSl9LGlucHV0czp7ZGV0YWlsRGlzYWJsZWQ6WzAsImNsckRnRGV0YWlsRGlzYWJsZWQiLCJkZXRhaWxEaXNhYmxlZCJdLGRldGFpbEhpZGRlbjpbMCwiY2xyRGdEZXRhaWxIaWRkZW4iLCJkZXRhaWxIaWRkZW4iXSxza2VsZXRv'@; put 'bkxvYWRpbmc6WzAsImNsckRnU2tlbGV0b25Mb2FkaW5nIiwic2tlbGV0b25Mb2FkaW5nIl0saXRlbTpbMCwiY2xyRGdJdGVtIiwiaXRlbSJdLGNsckRnU2VsZWN0YWJsZToiY2xyRGdTZWxlY3RhYmxlIixzZWxlY3RlZDpbMCwiY2xyRGdTZWxlY3RlZCIsInNlbGVjdGVkIl0sZXhwYW5kZWQ6'@; put 'WzAsImNsckRnRXhwYW5kZWQiLCJleHBhbmRlZCJdLGNsckRnRGV0YWlsT3BlbkxhYmVsOiJjbHJEZ0RldGFpbE9wZW5MYWJlbCIsY2xyRGdEZXRhaWxDbG9zZUxhYmVsOiJjbHJEZ0RldGFpbENsb3NlTGFiZWwiLGNsckRnUm93U2VsZWN0aW9uTGFiZWw6ImNsckRnUm93U2VsZWN0aW9uTGFi'@; put 'ZWwifSxvdXRwdXRzOntzZWxlY3RlZENoYW5nZWQ6ImNsckRnU2VsZWN0ZWRDaGFuZ2UiLGV4cGFuZGVkQ2hhbmdlOiJjbHJEZ0V4cGFuZGVkQ2hhbmdlIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW1dELHtwcm92aWRlOk5mLHVzZUV4aXN0aW5nOldEfSx7cHJvdmlkZTpFRCx1c2VF'@; put 'eGlzdGluZzpXRH1dKV0sbmdDb250ZW50U2VsZWN0b3JzOkI4dCxkZWNsczo5LHZhcnM6Myxjb25zdHM6W1siZGV0YWlsIiwiIl0sWyJyb3dDb250ZW50IiwiIl0sWyJjYWxjdWxhdGVkQ2VsbHMiLCIiXSxbInN0aWNreUNlbGxzIiwiIl0sWyJzY3JvbGxhYmxlQ2VsbHMiLCIiXSxbImRldGFp'@; put 'bEJ1dHRvbiIsIiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1yb3ctY2xpY2thYmxlIiwzLCJtb3VzZWRvd24iLCJjbGljayIsNCwibmdJZiJdLFszLCJjbHJFeHBhbmRUcmlnZ2VyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LWNsaWNrYWJsZSIsMywibW91c2Vkb3duIiwi'@; put 'Y2xpY2siXSxbMywiY2xyRXhwYW5kVHJpZ2dlciJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicm93IiwxLCJkYXRhZ3JpZC1yb3ctbWFzdGVyIiwiZGF0YWdyaWQtcm93LWZsZXgiLDMsImlkIl0sWzEsImRhdGFncmlkLXJvdy1zdGlja3kiXSxbImNsYXNzIiwiZGF0YWdyaWQt'@; put 'c2VsZWN0IGRhdGFncmlkLWZpeGVkLWNvbHVtbiBkYXRhZ3JpZC1jZWxsIiwicm9sZSIsImdyaWRjZWxsIiwzLCJuZ0NsYXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLXJvdy1hY3Rpb25zIGRhdGFncmlkLWZpeGVkLWNvbHVtbiBkYXRhZ3JpZC1jZWxsIiwicm9sZSIsImdyaWRj'@; put 'ZWxsIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtZGV0YWlsLWNhcmV0IGRhdGFncmlkLWZpeGVkLWNv'@; put 'bHVtbiBkYXRhZ3JpZC1jZWxsIiwicm9sZSIsImdyaWRjZWxsIiw0LCJuZ0lmIl0sWzEsImRhdGFncmlkLXJvdy1zY3JvbGxhYmxlIiwzLCJuZ0NsYXNzIl0sWzEsImRhdGFncmlkLXNjcm9sbGluZy1jZWxscyJdLFsiY2xhc3MiLCJza2VsZXRvbi1sb2FkaW5nIiw0LCJuZ0lmIl0sWyJyb2xl'@; put 'IiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLXNlbGVjdCIsImRhdGFncmlkLWZpeGVkLWNvbHVtbiIsImRhdGFncmlkLWNlbGwiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbInRhYmluZGV4IiwiLTEiLCJ0eXBlIiwiY2hlY2tib3giLDMsIm5nTW9kZWxDaGFuZ2Ui'@; put 'LCJuZ01vZGVsIiwiaWQiLCJkaXNhYmxlZCJdLFsxLCJjbHItY29udHJvbC1sYWJlbCIsImNsci1jb2wtbnVsbCIsMywiY2xpY2siLCJmb3IiXSxbMSwiY2xyLXNyLW9ubHkiXSxbInRhYmluZGV4IiwiLTEiLCJ0eXBlIiwicmFkaW8iLCJjbHJSYWRpbyIsIiIsMywibmdNb2RlbENoYW5nZSIs'@; put 'ImlkIiwibmFtZSIsInZhbHVlIiwibmdNb2RlbCIsImNoZWNrZWQiLCJkaXNhYmxlZCJdLFsxLCJjbHItY29udHJvbC1sYWJlbCIsImNsci1jb2wtbnVsbCIsMywiZm9yIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1u'@; put 'IiwiZGF0YWdyaWQtY2VsbCJdLFsicm9sZSIsImdyaWRjZWxsIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsidGFiaW5kZXgiLCItMSIsInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImRhdGFncmlkLWV4cGFu'@; put 'ZGFibGUtY2FyZXQtYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xyU21hbGwiLCIiLDQsIm5nSWYiXSxbInRhYmluZGV4IiwiLTEiLCJ0eXBlIiwiYnV0dG9uIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbiIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLDEs'@; put 'ImRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbiJdLFsiY2xyU21hbGwiLCIiXSxbInJvbGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtZGV0YWlsLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsidGFiaW5kZXgiLCItMSIsInR5cGUiLCJidXR0'@; put 'b24iLCJjbGFzcyIsImRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24iLCJhcmlhLWhhc3BvcHVwIiwiZGlhbG9nIiwzLCJkaXNhYmxlZCIsImlzLW9wZW4iLCJjbGljayIsNCwibmdJZiJdLFsidGFiaW5kZXgiLCItMSIsInR5cGUiLCJidXR0b24iLCJhcmlhLWhhc3BvcHVwIiwiZGlhbG9n'@; put 'IiwxLCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJzaGFwZSIsImFuZ2xlLWRvdWJsZSIsMSwiZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24iXSxbMSwic2tlbGV0b24tbG9hZGluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYm'@; put 'KGZvKFY4dCksWW4oMCxaOHQsMywyLCJkaXYiLDYpKDEsJDh0LDIsMiwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiw3KSgyLEs4dCwxLDEsbnVsbCw4KSgzLFg4dCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDAsY2QpKDUsaDd0LDE3LDE0LCJuZy10ZW1wbGF0ZSIsbnVsbCwxLGNkKSxhdSg3'@; put 'LG51bGwsMikpLDImdCYmKHJ0KCJuZ0lmIixyLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25Nb2RlKSxpZSgpLHJ0KCJuZ0lmIiwhci5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZSYmci5leHBhbmQuZXhwYW5kYWJsZSksaWUoKSxydCgibmdJZiIsIXIuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1v'@; put 'ZGUmJiFyLmV4cGFuZC5leHBhbmRhYmxlKSl9LGRlcGVuZGVuY2llczpbRmgsWXMsSWYsSnMsZWwsX2FlLHZhZSxsdSxIMixNeixvYyxYbCx6eix6Mix2NCx4YWUsRzVdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpO3ZhciBIZj1mdW5jdGlvbihuKXtyZXR1cm4gbltuLldJRFRIPTBdPSJXSURU'@; put 'SCIsbltuLkhJRERFTj0xXT0iSElEREVOIixuW24uSU5JVElBTElaRT0yXT0iSU5JVElBTElaRSIsbn0oSGZ8fHt9KTtjb25zdCBmeXQ9T2JqZWN0LmtleXMoSGYpLm1hcChuPT5IZltuXSkuZmlsdGVyKG49Pm49PT1wYXJzZUludChuLDEwKSYmbiE9PUhmLklOSVRJQUxJWkUpO2xldCB1Nz0o'@; put 'KCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5jb2x1bW5zPVtdLHRoaXMuY29sdW1uc1N0YXRlQ2hhbmdlPW5ldyAkaShudWxsKSx0aGlzLl9jYWNoZT1bXX1nZXQgY29sdW1uU3RhdGVzKCl7cmV0dXJuIHRoaXMuY29sdW1ucy5tYXAodD0+dC52YWx1ZSl9Z2V0IGhhc0hpZGVhYmxl'@; put 'Q29sdW1ucygpe3JldHVybiB0aGlzLmNvbHVtblN0YXRlcy5maWx0ZXIodD0+dC5oaWRlYWJsZSkubGVuZ3RoPjB9Z2V0IHZpc2libGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uU3RhdGVzLmZpbHRlcih0PT4hdC5oaWRkZW4pfWNhY2hlKCl7dGhpcy5fY2FjaGU9dGhpcy5jb2x1bW5z'@; put 'Lm1hcCh0PT57Y29uc3Qgcj17Li4udC52YWx1ZX07cmV0dXJuIGRlbGV0ZSByLmNoYW5nZXMscn0pfWhhc0NhY2hlKCl7cmV0dXJuISF0aGlzLl9jYWNoZS5sZW5ndGh9cmVzZXRUb0xhc3RDYWNoZSgpe3RoaXMuX2NhY2hlLmZvckVhY2goKHQscik9Pntjb25zdCBpPXsuLi50LGNoYW5nZXM6'@; put 'Znl0fTt0aGlzLmNvbHVtbnNbcl0ubmV4dChpKSx0aGlzLmNvbHVtbnNTdGF0ZUNoYW5nZS5uZXh0KGkpfSksdGhpcy5fY2FjaGU9W119ZW1pdFN0YXRlQ2hhbmdlQXQodCxyKXt0aGlzLmNvbHVtbnNbdF0mJnRoaXMuZW1pdFN0YXRlQ2hhbmdlKHRoaXMuY29sdW1uc1t0XSxyKX1lbWl0U3Rh'@; put 'dGVDaGFuZ2UodCxyKXtjb25zdCBpPXsuLi50LnZhbHVlLC4uLnJ9O3QubmV4dChpKSx0aGlzLmNvbHVtbnNTdGF0ZUNoYW5nZS5uZXh0KGkpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6'@; put 'bi5cdTAyNzVmYWN9KSxufSkoKTtjb25zdCBweXQ9e2l0ZW1TaXplOjMyLG1pbkJ1ZmZlclB4OjIwMCxtYXhCdWZmZXJQeDo0MDB9O2xldCBGTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCx1LGcsRSxPLFosZWUsdmUpe3RoaXMuY2hhbmdlRGV0ZWN0b3JSZWY9dCx0'@; put 'aGlzLml0ZXJhYmxlRGlmZmVycz1yLHRoaXMuaXRlbXM9aSx0aGlzLm5nWm9uZT1vLHRoaXMucmVuZGVyZXIyPWEsdGhpcy50ZW1wbGF0ZVJlZj1sLHRoaXMudmlld0NvbnRhaW5lclJlZj11LHRoaXMuZGlyZWN0aW9uYWxpdHk9Zyx0aGlzLnNjcm9sbERpc3BhdGNoZXI9RSx0aGlzLnZpZXdw'@; put 'b3J0UnVsZXI9Tyx0aGlzLmRhdGFncmlkPVosdGhpcy5jb2x1bW5zU2VydmljZT1lZSx0aGlzLmluamVjdG9yPXZlLHRoaXMucmVuZGVyZWRSYW5nZUNoYW5nZT1uZXcgS3IsdGhpcy5wZXJzaXN0SXRlbXM9ITAsdGhpcy5fY2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbElucHV0cz17Li4ucHl0'@; put 'fSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy50b3BJbmRleD0wLHRoaXMubXV0YXRpb25DaGFuZ2VzPW5ldyBNdXRhdGlvbk9ic2VydmVyKE1lPT57TWUuZm9yRWFjaChIZT0+e0hlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImRhdGFncmlkLWNvbXBhY3QiKSYmdGhpcy5pdGVtU2l6'@; put 'ZT4yNCYmKHRoaXMuaXRlbVNpemU9MjQpfSl9KSx0aGlzLnZpZXdSZXBlYXRlcj1uZXcgJFNlLHRoaXMuY2RrVmlydHVhbEZvcklucHV0cz17Y2RrVmlydHVhbEZvclRyYWNrQnk6TWU9Pk1lfSxpLnNtYXJ0ZW5VcCgpLFouZGV0YWlsU2VydmljZS5wcmV2ZW50Rm9jdXNTY3JvbGw9ITAsdGhp'@; put 'cy5kYXRhZ3JpZEVsZW1lbnRSZWY9Wi5lbCx0aGlzLmNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZT0yMCx0aGlzLm11dGF0aW9uQ2hhbmdlcy5vYnNlcnZlKHRoaXMuZGF0YWdyaWRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQse2F0dHJpYnV0ZUZpbHRlcjpbImNsYXNzIl0sYXR0cmli'@; put 'dXRlT2xkVmFsdWU6ITB9KSx0aGlzLnZpcnR1YWxTY3JvbGxTdHJhdGVneT1uZXcgS210KHRoaXMuX2Nka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGxJbnB1dHMuaXRlbVNpemUsdGhpcy5fY2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbElucHV0cy5taW5CdWZmZXJQeCx0aGlzLl9jZGtGaXhlZFNp'@; put 'emVWaXJ0dWFsU2Nyb2xsSW5wdXRzLm1heEJ1ZmZlclB4KX1nZXQgY2RrVmlydHVhbEZvck9mKCl7cmV0dXJuIHRoaXMuY2RrVmlydHVhbEZvcklucHV0cy5jZGtWaXJ0dWFsRm9yT2Z9c2V0IGNka1ZpcnR1YWxGb3JPZih0KXt0aGlzLmNka1ZpcnR1YWxGb3JJbnB1dHMuY2RrVmlydHVhbEZv'@; put 'ck9mPXQsdGhpcy5pdGVtcy5hbGw9dCx0aGlzLnVwZGF0ZUNka1ZpcnR1YWxGb3JJbnB1dHMoKX1nZXQgY2RrVmlydHVhbEZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5jZGtWaXJ0dWFsRm9ySW5wdXRzLmNka1ZpcnR1YWxGb3JUcmFja0J5fXNldCBjZGtWaXJ0dWFsRm9yVHJhY2tCeSh0KXt0'@; put 'aGlzLmNka1ZpcnR1YWxGb3JJbnB1dHMuY2RrVmlydHVhbEZvclRyYWNrQnk9dCx0aGlzLnVwZGF0ZUNka1ZpcnR1YWxGb3JJbnB1dHMoKX1nZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlKCl7cmV0dXJuIHRoaXM/LmNka1ZpcnR1YWxGb3JJbnB1dHM/LmNka1ZpcnR1YWxGb3JUZW1wbGF0ZX1z'@; put 'ZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlKHQpe3RoaXMuY2RrVmlydHVhbEZvcklucHV0cy5jZGtWaXJ0dWFsRm9yVGVtcGxhdGU9dCx0aGlzLnVwZGF0ZUNka1ZpcnR1YWxGb3JJbnB1dHMoKX1nZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplKCl7cmV0dXJuIHRoaXMuY2RrVmly'@; put 'dHVhbEZvcklucHV0cy5jZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemV9c2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSh0KXt0aGlzLmNka1ZpcnR1YWxGb3JJbnB1dHMuY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplPUZiKHQpLHRoaXMudXBkYXRlQ2RrVmlydHVh'@; put 'bEZvcklucHV0cygpfWdldCBpdGVtU2l6ZSgpe3JldHVybiB0aGlzLl9jZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsSW5wdXRzLml0ZW1TaXplfXNldCBpdGVtU2l6ZSh0KXt0aGlzLl9jZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsSW5wdXRzLml0ZW1TaXplPUZiKHQpLHRoaXMudXBkYXRlRml4'@; put 'ZWRTaXplVmlydHVhbFNjcm9sbElucHV0cygpfWdldCBtaW5CdWZmZXJQeCgpe3JldHVybiB0aGlzLl9jZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsSW5wdXRzLm1pbkJ1ZmZlclB4fXNldCBtaW5CdWZmZXJQeCh0KXt0aGlzLl9jZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsSW5wdXRzLm1pbkJ1'@; put 'ZmZlclB4PUZiKHQpLHRoaXMudXBkYXRlRml4ZWRTaXplVmlydHVhbFNjcm9sbElucHV0cygpfWdldCBtYXhCdWZmZXJQeCgpe3JldHVybiB0aGlzLl9jZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsSW5wdXRzLm1heEJ1ZmZlclB4fXNldCBtYXhCdWZmZXJQeCh0KXt0aGlzLl9jZGtGaXhlZFNp'@; put 'emVWaXJ0dWFsU2Nyb2xsSW5wdXRzLm1heEJ1ZmZlclB4PUZiKHQpLHRoaXMudXBkYXRlRml4ZWRTaXplVmlydHVhbFNjcm9sbElucHV0cygpfXNldCBkYXRhUmFuZ2UodCl7dCYmKHRoaXMuaXRlbXMuc21hcnQmJnRoaXMuaXRlbXMuc21hcnRlbkRvd24oKSx0aGlzLnRvdGFsSXRlbXM9dC50'@; put 'b3RhbCx0aGlzLnVwZGF0ZURhdGFSYW5nZSh0LnNraXAsdC5kYXRhKSl9Z2V0IHRvdGFsSXRlbXMoKXtyZXR1cm4gdGhpcy5fdG90YWxJdGVtc31zZXQgdG90YWxJdGVtcyh0KXt0aGlzLl90b3RhbEl0ZW1zPXR9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5pbmplY3Rvci5ydW5JbkNvbnRleHQo'@; put 'KCk9Pnt0aGlzLnZpcnR1YWxTY3JvbGxWaWV3cG9ydD10aGlzLmNyZWF0ZVZpcnR1YWxTY3JvbGxWaWV3cG9ydEZvckRhdGFncmlkKHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYsdGhpcy5uZ1pvbmUsdGhpcy5yZW5kZXJlcjIsdGhpcy5kaXJlY3Rpb25hbGl0eSx0aGlzLnNjcm9sbERpc3BhdGNo'@; put 'ZXIsdGhpcy52aWV3cG9ydFJ1bGVyLHRoaXMuZGF0YWdyaWRFbGVtZW50UmVmLHRoaXMudmlydHVhbFNjcm9sbFN0cmF0ZWd5KSx0aGlzLmNka1ZpcnR1YWxGb3I9ZnVuY3Rpb24gbXl0KG4sZSx0LHIsaSxvKXtpZigranMubWFqb3I8MTkpcmV0dXJuIG5ldyBQeihuLGUsdCxyLGksbyk7e2Nv'@; put 'bnN0IGE9TWwuY3JlYXRlKHtwYXJlbnQ6c24obmwpLHByb3ZpZGVyczpbe3Byb3ZpZGU6b00sdXNlVmFsdWU6aX1dfSk7cmV0dXJuIE1sLmNyZWF0ZSh7cGFyZW50OmEscHJvdmlkZXJzOlt7cHJvdmlkZTpEcyx1c2VWYWx1ZTpufSx7cHJvdmlkZTpGYyx1c2VWYWx1ZTplfSx7cHJvdmlkZTph'@; put 'dix1c2VWYWx1ZTp0fSx7cHJvdmlkZTpFb2UsdXNlVmFsdWU6cn0se3Byb3ZpZGU6Z2EsdXNlVmFsdWU6b30se3Byb3ZpZGU6UHosdXNlQ2xhc3M6UHp9XX0pLmdldChQeil9fSh0aGlzLnZpZXdDb250YWluZXJSZWYsdGhpcy50ZW1wbGF0ZVJlZix0aGlzLml0ZXJhYmxlRGlmZmVycyx0aGlz'@; put 'LnZpZXdSZXBlYXRlcix0aGlzLnZpcnR1YWxTY3JvbGxWaWV3cG9ydCx0aGlzLm5nWm9uZSksdGhpcy52aXJ0dWFsU2Nyb2xsVmlld3BvcnQubmdPbkluaXQoKX0pLHRoaXMuZ3JpZFJvbGVFbGVtZW50PXRoaXMuZGF0YWdyaWRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rv'@; put 'cignW3JvbGU9ImdyaWQiXScpLHRoaXMudXBkYXRlQ2RrVmlydHVhbEZvcklucHV0cygpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuaXRlbXMuY2hhbmdlLnN1YnNjcmliZSh0PT57dGhpcy5pdGVtcy5zbWFydCYmKHRoaXMuY2RrVmlydHVhbEZvci5jZGtWaXJ0dWFsRm9yT2Y9dCl9'@; put 'KSx0aGlzLmNka1ZpcnR1YWxGb3IuZGF0YVN0cmVhbS5zdWJzY3JpYmUodD0+e3RoaXMudXBkYXRlQXJpYVJvd0NvdW50KHQubGVuZ3RoKX0pLHRoaXMudmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbGVkSW5kZXhDaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLnRvcEluZGV4PXR9KSx0aGlz'@; put 'LnZpcnR1YWxTY3JvbGxWaWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLnN1YnNjcmliZSh0PT57dGhpcy5yZW5kZXJlZFJhbmdlQ2hhbmdlLmVtaXQodCl9KSx0aGlzLmRhdGFncmlkLnJlZnJlc2guc3Vic2NyaWJlKHQ9Pnt0LmZpbHRlcnMmJnRoaXMuc2Nyb2xsVG9JbmRleCgwKX0pLHRo'@; put 'aXMuY29sdW1uc1NlcnZpY2UuY29sdW1uc1N0YXRlQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMudmlld1JlcGVhdGVyLmRldGFjaCgpfSkpfW5nRG9DaGVjaygpe3RoaXMuY2RrVmlydHVhbEZvcj8ubmdEb0NoZWNrKCksdGhpcy51cGRhdGVBcmlhUm93SW5kZXhlcygpfW5nT25EZXN0cm95'@; put 'KCl7dGhpcy5jZGtWaXJ0dWFsRm9yPy5uZ09uRGVzdHJveSgpLHRoaXMudmlydHVhbFNjcm9sbFZpZXdwb3J0Py5uZ09uRGVzdHJveSgpLHRoaXMubXV0YXRpb25DaGFuZ2VzPy5kaXNjb25uZWN0KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+e3QudW5zdWJzY3JpYmUoKX0pfXNj'@; put 'cm9sbFVwKHQscj0iYXV0byIpe3RoaXMuc2Nyb2xsVG9JbmRleCh0aGlzLnRvcEluZGV4LXQscil9c2Nyb2xsRG93bih0LHI9ImF1dG8iKXt0aGlzLnNjcm9sbFRvSW5kZXgodGhpcy50b3BJbmRleCt0LHIpfXNjcm9sbFRvSW5kZXgodCxyPSJhdXRvIil7dGhpcy52aXJ0dWFsU2Nyb2xsVmll'@; put 'd3BvcnQ/LnNjcm9sbFRvSW5kZXgodCxyKX11cGRhdGVEYXRhUmFuZ2UodCxyKXtsZXQgaT10aGlzLmNka1ZpcnR1YWxGb3JPZjsoIXRoaXMucGVyc2lzdEl0ZW1zfHwhaXx8aT8ubGVuZ3RoIT09dGhpcy50b3RhbEl0ZW1zKSYmKGk9QXJyYXkodGhpcy50b3RhbEl0ZW1zKSksaS5zcGxpY2Uo'@; put 'dCxyLmxlbmd0aCwuLi5yKSx0aGlzLmNka1ZpcnR1YWxGb3JPZj1BcnJheS5mcm9tKGkpfXVwZGF0ZUNka1ZpcnR1YWxGb3JJbnB1dHMoKXtpZih0aGlzLmNka1ZpcnR1YWxGb3IpZm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXModGhpcy5jZGtWaXJ0dWFsRm9ySW5wdXRzKSl0aGlzLmNka1Zp'@; put 'cnR1YWxGb3JbdF0hPT10aGlzLmNka1ZpcnR1YWxGb3JJbnB1dHNbdF0mJih0aGlzLmNka1ZpcnR1YWxGb3JbdF09dGhpcy5jZGtWaXJ0dWFsRm9ySW5wdXRzW3RdKX11cGRhdGVGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsSW5wdXRzKCl7dGhpcy52aXJ0dWFsU2Nyb2xsU3RyYXRlZ3kmJnRoaXMu'@; put 'dmlydHVhbFNjcm9sbFN0cmF0ZWd5LnVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHRoaXMuX2Nka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGxJbnB1dHMuaXRlbVNpemUsdGhpcy5fY2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbElucHV0cy5taW5CdWZmZXJQeCx0aGlzLl9jZGtGaXhlZFNpemVWaXJ0'@; put 'dWFsU2Nyb2xsSW5wdXRzLm1heEJ1ZmZlclB4KX11cGRhdGVBcmlhUm93Q291bnQodCl7dGhpcy5ncmlkUm9sZUVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgiYXJpYS1yb3djb3VudCIsdC50b1N0cmluZygpKX11cGRhdGVBcmlhUm93SW5kZXhlcygpe2ZvcihsZXQgdD0wO3Q8dGhpcy52aWV3Q29u'@; put 'dGFpbmVyUmVmLmxlbmd0aDt0Kyspe2NvbnN0IHI9dGhpcy52aWV3Q29udGFpbmVyUmVmLmdldCh0KTtyLnJvb3ROb2Rlcy5maW5kKGw9PiJDTFItREctUk9XIj09PWwudGFnTmFtZSk/LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPSJyb3ciXScpPy5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgi'@; put 'LChyLmNvbnRleHQuaW5kZXgrMSkudG9TdHJpbmcoKSl9fWNyZWF0ZVZpcnR1YWxTY3JvbGxWaWV3cG9ydEZvckRhdGFncmlkKHQscixpLG8sYSxsLHUsZyl7Y29uc3QgRT11Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkIiksTz11Lm5hdGl2ZUVsZW1lbnQucXVlcnlT'@; put 'ZWxlY3RvcigiLmRhdGFncmlkLXRhYmxlIiksWj11Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkLXJvd3MiKTtsZXQgdmU9MCxNZT0wO2Z1bmN0aW9uIEhlKCl7Wi5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVkoJHt2ZX1weClgLFouc3R5bGUuaGVpZ2h0PU1lLXZl'@; put 'KyJweCJ9Y29uc3QgV2U9ZnVuY3Rpb24gZ3l0KG4sZSx0LHIsaSxvLGEsbCx1KXtyZXR1cm4ranMubWFqb3I8MTk/bmV3IG9NKG4sZSx0LGksbyxhLGwsdSk6TWwuY3JlYXRlKHtwYXJlbnQ6c24obmwpLHByb3ZpZGVyczpbe3Byb3ZpZGU6bm8sdXNlVmFsdWU6bn0se3Byb3ZpZGU6VWwsdXNl'@; put 'VmFsdWU6ZX0se3Byb3ZpZGU6Z2EsdXNlVmFsdWU6dH0se3Byb3ZpZGU6TnQsdXNlVmFsdWU6cn0se3Byb3ZpZGU6cVNlLHVzZVZhbHVlOml9LHtwcm92aWRlOmlNLHVzZVZhbHVlOm99LHtwcm92aWRlOk56LHVzZVZhbHVlOmF9LHtwcm92aWRlOkZ6LHVzZVZhbHVlOmx9LHtwcm92aWRlOlFT'@; put 'ZSx1c2VWYWx1ZTp1fSx7cHJvdmlkZTpvTSx1c2VDbGFzczpvTX1dfSkuZ2V0KG9NKX0oe25hdGl2ZUVsZW1lbnQ6RX0sdCxyLGksZyxvLGEsbCxudWxsKTtyZXR1cm4gV2UuX2NvbnRlbnRXcmFwcGVyPXtuYXRpdmVFbGVtZW50OntzdHlsZTp7c2V0IHRyYW5zZm9ybShhdCl7dmU9dm9pZCAw'@; put 'PT09YXQ/MDorL3RyYW5zbGF0ZVlcKChbMC05XSspcHhcKS8uZXhlYyhhdCk/LlsxXSxIZSgpfX19fSxXZS5zZXRUb3RhbENvbnRlbnRTaXplPWF0PT57TWU9YXQsTy5zdHlsZS5oZWlnaHQ9YCR7TWV9cHhgLEhlKCl9LFdlfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJu'@; put 'IG5ldyh0fHxuKSh6ZShVbCksemUoYXYpLHplKGM3KSx6ZShnYSksemUoTnQpLHplKEZjKSx6ZShEcyksemUoaU0pLHplKE56KSx6ZShGeiksemUoVW8oKCk9Pk52KSksemUodTcpLHplKG5sKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsclZpcnR1YWxTY3Jv'@; put 'bGwiLCIiXSxbIiIsIkNsclZpcnR1YWxTY3JvbGwiLCIiXV0saW5wdXRzOntwZXJzaXN0SXRlbXM6WzAsImNsclZpcnR1YWxQZXJzaXN0SXRlbXMiLCJwZXJzaXN0SXRlbXMiXSxjZGtWaXJ0dWFsRm9yT2Y6WzAsImNsclZpcnR1YWxSb3dzT2YiLCJjZGtWaXJ0dWFsRm9yT2YiXSxjZGtWaXJ0'@; put 'dWFsRm9yVHJhY2tCeTpbMCwiY2xyVmlydHVhbFJvd3NUcmFja0J5IiwiY2RrVmlydHVhbEZvclRyYWNrQnkiXSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6WzAsImNsclZpcnR1YWxSb3dzVGVtcGxhdGUiLCJjZGtWaXJ0dWFsRm9yVGVtcGxhdGUiXSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNo'@; put 'ZVNpemU6WzAsImNsclZpcnR1YWxSb3dzVGVtcGxhdGVDYWNoZVNpemUiLCJjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUiXSxpdGVtU2l6ZTpbMCwiY2xyVmlydHVhbFJvd3NJdGVtU2l6ZSIsIml0ZW1TaXplIl0sbWluQnVmZmVyUHg6WzAsImNsclZpcnR1YWxSb3dzTWluQnVmZmVy'@; put 'UHgiLCJtaW5CdWZmZXJQeCJdLG1heEJ1ZmZlclB4OlswLCJjbHJWaXJ0dWFsUm93c01heEJ1ZmZlclB4IiwibWF4QnVmZmVyUHgiXSxkYXRhUmFuZ2U6WzAsImNsclZpcnR1YWxEYXRhUmFuZ2UiLCJkYXRhUmFuZ2UiXX0sb3V0cHV0czp7cmVuZGVyZWRSYW5nZUNoYW5nZToicmVuZGVyZWRS'@; put 'YW5nZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtjN10pXX0pLG59KSgpLFBNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8pe3RoaXMuZmlsdGVycz10LHRoaXMuc29ydD1yLHRoaXMucGFnZT1pLHRoaXMuZGVib3VuY2VyPW8sdGhpcy5jaGFuZ2U9dGhp'@; put 'cy5kZWJvdW5jZXIuY2hhbmdlLnBpcGUoRXMoKCk9PnRoaXMuc3RhdGUpKX1nZXQgc3RhdGUoKXtjb25zdCB0PXt9O3RoaXMucGFnZS5zaXplPjAmJih0LnBhZ2U9e2Zyb206dGhpcy5wYWdlLmZpcnN0SXRlbSx0bzp0aGlzLnBhZ2UubGFzdEl0ZW0sc2l6ZTp0aGlzLnBhZ2Uuc2l6ZSxjdXJy'@; put 'ZW50OnRoaXMucGFnZS5jdXJyZW50fSksdGhpcy5zb3J0LmNvbXBhcmF0b3ImJih0LnNvcnQ9dGhpcy5zb3J0LmNvbXBhcmF0b3IgaW5zdGFuY2VvZiB1Vz97Ynk6dGhpcy5zb3J0LmNvbXBhcmF0b3IucHJvcCxyZXZlcnNlOnRoaXMuc29ydC5yZXZlcnNlfTp7Ynk6dGhpcy5zb3J0LmNvbXBh'@; put 'cmF0b3IscmV2ZXJzZTp0aGlzLnNvcnQucmV2ZXJzZX0pO2NvbnN0IHI9dGhpcy5maWx0ZXJzLmdldEFjdGl2ZUZpbHRlcnMoKTtpZihyLmxlbmd0aD4wKXt0LmZpbHRlcnM9W107Zm9yKGNvbnN0IGkgb2Ygcil0LmZpbHRlcnMucHVzaChpLnN0YXRlP2kuc3RhdGU6aSl9cmV0dXJuIHR9fXJl'@; put 'dHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKG9yKGw3KSxvcihkVyksb3IoSXYpLG9yKGpEKSl9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCksT3Y9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlz'@; put 'LmNvbHVtbnNTZXJ2aWNlPXQsdGhpcy5zdWJzY3JpcHRpb25zPVtdfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc2V0Q2VsbHNTdGF0ZSgpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuY2VsbHMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNldENlbGxzU3RhdGUoKX0pKX1u'@; put 'Z09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9c2V0Q2VsbHNTdGF0ZSgpe3RoaXMuY2VsbHMubGVuZ3RoPT09dGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxlbmd0aCYmdGhpcy5jZWxscy5mb3JFYWNoKCh0LHIpPT57dGhpcy5j'@; put 'b2x1bW5zU2VydmljZS5jb2x1bW5zW3JdJiZ0LnJlc2V0U3RhdGUodGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zW3JdLnZhbHVlKX0pfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZSh1NykpfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVj'@; put 'dG9yczpbWyJjbHItZGctcm93Il0sWyJjbHItZGctcm93LWRldGFpbCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiYoRmEoaSxuLDUpLEZhKGksRzUsNCkpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIuZXhwYW5kYWJsZVJvdz1vLmZpcnN0KSxjaShvPXVpKCkp'@; put 'JiYoci5jZWxscz1vKX19LHN0YW5kYWxvbmU6ITF9KSxufSkoKSxOdj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8sYSxsLHUsZyxFLE8sWixlZSx2ZSxNZSxIZSl7dGhpcy5vcmdhbml6ZXI9dCx0aGlzLml0ZW1zPXIsdGhpcy5leHBhbmRhYmxlUm93cz1pLHRoaXMuc2VsZWN0'@; put 'aW9uPW8sdGhpcy5yb3dBY3Rpb25TZXJ2aWNlPWEsdGhpcy5zdGF0ZVByb3ZpZGVyPWwsdGhpcy5kaXNwbGF5TW9kZT11LHRoaXMucmVuZGVyZXI9Zyx0aGlzLmRldGFpbFNlcnZpY2U9RSx0aGlzLmRvY3VtZW50PU8sdGhpcy5lbD1aLHRoaXMucGFnZT1lZSx0aGlzLmNvbW1vblN0cmluZ3M9'@; put 'dmUsdGhpcy5rZXlOYXZpZ2F0aW9uPU1lLHRoaXMuem9uZT1IZSx0aGlzLmNsckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCx0aGlzLmNsckRnU2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbD10aGlzLmNv'@; put 'bW1vblN0cmluZ3Mua2V5cy5zaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsLHRoaXMuY2xyRGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsLHRoaXMuY2xyRGdEaXNhYmxlUGFnZUZvY3VzPSExLHRoaXMuc2Vs'@; put 'ZWN0ZWRDaGFuZ2VkPW5ldyBLcighMSksdGhpcy5zaW5nbGVTZWxlY3RlZENoYW5nZWQ9bmV3IEtyKCExKSx0aGlzLnJlZnJlc2g9bmV3IEtyKCExKSx0aGlzLmN1c3RvbVNlbGVjdEFsbEVuYWJsZWQ9ITEsdGhpcy5jdXN0b21TZWxlY3RBbGw9bmV3IEtyLHRoaXMuU0VMRUNUSU9OX1RZUEU9'@; put 'QmMsdGhpcy5fc3Vic2NyaXB0aW9ucz1bXTtjb25zdCBXZT1QaCgpO3RoaXMuc2VsZWN0QWxsSWQ9ImNsci1kZy1zZWxlY3QtYWxsLSIrV2UsRS5pZD1XZX1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLml0ZW1zLmxvYWRpbmd9c2V0IGxvYWRpbmcodCl7dGhpcy5pdGVtcy5sb2FkaW5nPXR9'@; put 'c2V0IHNlbGVjdGVkKHQpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9dD9CYy5NdWx0aTpCYy5Ob25lLHRoaXMuc2VsZWN0aW9uLnVwZGF0ZUN1cnJlbnQodCwhMSl9c2V0IHNpbmdsZVNlbGVjdGVkKHQpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9QmMuU2luZ2xlLHQ/dGhp'@; put 'cy5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT10OnRoaXMuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGUmJih0aGlzLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPW51bGwpfXNldCBjbHJEZ1ByZXNlcnZlU2VsZWN0aW9uKHQpe3RoaXMuc2VsZWN0aW9uLnByZXNlcnZlU2VsZWN0aW9uPXR9c2V0IHJv'@; put 'd1NlbGVjdGlvbk1vZGUodCl7dGhpcy5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZT10fXNldCB0cmFja0J5KHQpe3RoaXMuaXRlbXMudHJhY2tCeT10fWdldCBhbGxTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc0FsbFNlbGVjdGVkKCl9c2V0IGFsbFNlbGVjdGVkKHQpe3Ro'@; put 'aXMuY3VzdG9tU2VsZWN0QWxsRW5hYmxlZD90aGlzLmN1c3RvbVNlbGVjdEFsbC5lbWl0KHQpOnRoaXMuc2VsZWN0aW9uLnRvZ2dsZUFsbCgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuaXRlbXMuc21hcnR8fCh0aGlzLml0ZW1zLmFsbD10aGlzLnJvd3MubWFwKHI9PnIuaXRlbSkpO2Nv'@; put 'bnN0IHQ9dGhpcy5yb3dzLmNoYW5nZXMucGlwZShtMChyPT5oRChQYShyLm1hcChpPT5pLml0ZW0pKSxfYihyLm1hcChpPT5pLml0ZW1DaGFuZ2VzKSkucGlwZShOYigwKSkpKSk7dGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHQuc3Vic2NyaWJlKHI9Pnt0aGlzLml0ZW1zLnNtYXJ0fHwodGhp'@; put 'cy5pdGVtcy5hbGw9cil9KSx0aGlzLnJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pntmb3IobGV0IHI9dGhpcy5fZGlzcGxheWVkUm93cy5sZW5ndGgtMTtyPj0wO3ItLSl0aGlzLl9kaXNwbGF5ZWRSb3dzLmdldChyKS5kZXN0cm95ZWQmJnRoaXMuX2Rpc3BsYXllZFJvd3MucmVtb3ZlKHIp'@; put 'O2lmKHRoaXMucm93cy5mb3JFYWNoKHI9Pnt0aGlzLl9kaXNwbGF5ZWRSb3dzLmluc2VydChyLl92aWV3KX0pLHRoaXMudXBkYXRlRGV0YWlsU3RhdGUoKSx0aGlzLnZpcnR1YWxTY3JvbGwpe2NvbnN0IHI9dGhpcy5rZXlOYXZpZ2F0aW9uLmdldEFjdGl2ZUNlbGwoKTtyJiZ0aGlzLnpvbmUu'@; put 'cnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntzZXRUaW1lb3V0KCgpPT50aGlzLmtleU5hdmlnYXRpb24uc2V0QWN0aXZlQ2VsbChyKSl9KX19KSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5rZXlOYXZpZ2F0aW9uLmluaXRpYWxpemVLZXlHcmlkKHRoaXMuZWwubmF0aXZlRWxlbWVudCksdGhpcy51'@; put 'cGRhdGVEZXRhaWxTdGF0ZSgpLHRoaXMucmVmcmVzaC5lbWl0KHRoaXMuc3RhdGVQcm92aWRlci5zdGF0ZSksdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RhdGVQcm92aWRlci5jaGFuZ2Uuc3Vic2NyaWJlKHQ9PnRoaXMucmVmcmVzaC5lbWl0KHQpKSx0aGlzLnNlbGVjdGlvbi5j'@; put 'aGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09QmMuU2luZ2xlP3RoaXMuc2luZ2xlU2VsZWN0ZWRDaGFuZ2VkLmVtaXQodCk6dGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PUJjLk11bHRpJiZ0aGlzLnNlbGVjdGVkQ2hhbmdlZC5lbWl0KHQp'@; put 'fSksdGhpcy5wYWdlLmNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmtleU5hdmlnYXRpb24ucmVzZXRLZXlHcmlkKCksdGhpcy5jbHJEZ0Rpc2FibGVQYWdlRm9jdXN8fHRoaXMuZGF0YWdyaWRUYWJsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCl9KSx0aGlzLmRpc3BsYXlNb2RlLnZpZXcuc3Vi'@; put 'c2NyaWJlKHQ9Pntmb3IobGV0IHI9dGhpcy5fcHJvamVjdGVkRGlzcGxheUNvbHVtbnMubGVuZ3RoO3I+MDtyLS0pdGhpcy5fcHJvamVjdGVkRGlzcGxheUNvbHVtbnMuZGV0YWNoKCk7Zm9yKGxldCByPXRoaXMuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucy5sZW5ndGg7cj4wO3ItLSl0'@; put 'aGlzLl9wcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMuZGV0YWNoKCk7Zm9yKGxldCByPXRoaXMuX2NhbGN1bGF0aW9uUm93cy5sZW5ndGg7cj4wO3ItLSl0aGlzLl9jYWxjdWxhdGlvblJvd3MuZGV0YWNoKCk7Zm9yKGxldCByPXRoaXMuX2Rpc3BsYXllZFJvd3MubGVuZ3RoO3I+MDtyLS0p'@; put 'dGhpcy5fZGlzcGxheWVkUm93cy5kZXRhY2goKTt0PT09QU0uRElTUExBWT8odGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIiksdGhpcy5jb2x1bW5zLmZvckVhY2gocj0+e3RoaXMuX3Byb2plY3RlZERpc3Bs'@; put 'YXlDb2x1bW5zLmluc2VydChyLl92aWV3KX0pLHRoaXMucm93cy5mb3JFYWNoKHI9Pnt0aGlzLl9kaXNwbGF5ZWRSb3dzLmluc2VydChyLl92aWV3KX0pKToodGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIiksdGhp'@; put 'cy5jb2x1bW5zLmZvckVhY2gocj0+e3RoaXMuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucy5pbnNlcnQoci5fdmlldyl9KSx0aGlzLnJvd3MuZm9yRWFjaChyPT57dGhpcy5fY2FsY3VsYXRpb25Sb3dzLmluc2VydChyLl92aWV3KX0pKX0pKSx0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3Vs'@; put 'YXIoKCk9Pnt0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goSmcodGhpcy5kb2N1bWVudC5ib2R5LCJrZXlkb3duIikuc3Vic2NyaWJlKHQ9PnsiU2hpZnQiPT09dC5rZXkmJih0aGlzLnNlbGVjdGlvbi5zaGlmdFByZXNzZWQ9ITApfSksSmcodGhpcy5kb2N1bWVudC5ib2R5LCJrZXl1cCIpLnN1'@; put 'YnNjcmliZSh0PT57IlNoaWZ0Ij09PXQua2V5JiYodGhpcy5zZWxlY3Rpb24uc2hpZnRQcmVzc2VkPSExKX0pKX0pfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9dG9nZ2xlQWxsU2VsZWN0ZWQodCl7dC5wcmV2ZW50RGVmYXVs'@; put 'dCgpLHRoaXMuc2VsZWN0QWxsQ2hlY2tib3g/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKX1yZXNpemUoKXt0aGlzLm9yZ2FuaXplci5yZXNpemUoKX11cGRhdGVEZXRhaWxTdGF0ZSgpe2lmKHRoaXMuZGV0YWlsU2VydmljZS5zdGF0ZSYmdGhpcy5kZXRhaWxTZXJ2aWNlLmlzT3Blbil7Y29uc3Qg'@; put 'dD10aGlzLnJvd3MuZmluZChyPT50aGlzLml0ZW1zLnRyYWNrQnkoci5pdGVtKT09PXRoaXMuaXRlbXMudHJhY2tCeSh0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGUpKTt0P3RoaXMuZGV0YWlsU2VydmljZS5vcGVuKHQuaXRlbSx0LmRldGFpbEJ1dHRvbi5uYXRpdmVFbGVtZW50KTp0aGlzLnZp'@; put 'cnR1YWxTY3JvbGx8fHNldFRpbWVvdXQoKCk9Pnt0aGlzLmRldGFpbFNlcnZpY2UuY2xvc2UoKX0pfX1kYXRhQ2hhbmdlZCgpe3RoaXMuaXRlbXMucmVmcmVzaCgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShldyksemUoYzcpLHplKE1NKSx6'@; put 'ZShrTSksemUoRU0pLHplKFBNZSksemUoVGFlKSx6ZShOdCksemUoZzQpLHplKFRsKSx6ZShubyksemUoSXYpLHplKGlsKSx6ZShzVyksemUoZ2EpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlkIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQs'@; put 'cixpKXtpZigxJnQmJihGYShpLEZNZSw1KSxGYShpLHhNLDUpLEZhKGksU2FlLDUpLEZhKGksdHcsNCksRmEoaSxMdiw0KSksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci52aXJ0dWFsU2Nyb2xsPW8uZmlyc3QpLGNpKG89dWkoKSkmJihyLml0ZXJhdG9yPW8uZmlyc3QpLGNpKG89dWkoKSkm'@; put 'JihyLnBsYWNlaG9sZGVyPW8uZmlyc3QpLGNpKG89dWkoKSkmJihyLmNvbHVtbnM9byksY2kobz11aSgpKSYmKHIucm93cz1vKX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmKFdvKGY3dCw1LG5vKSxXbyhwN3QsNSxubyksV28oZzd0LDUsRHMpLFdvKG03dCw1LERzKSxXbyh2'@; put 'N3QsNSxEcyksV28oXzd0LDUsRHMpLFdvKHk3dCw1LERzKSxXbyhiN3QsNSkpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIuZGF0YWdyaWQ9aS5maXJzdCksY2koaT11aSgpKSYmKHIuZGF0YWdyaWRUYWJsZT1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5zY3JvbGxhYmxlQ29sdW1ucz1pLmZp'@; put 'cnN0KSxjaShpPXVpKCkpJiYoci5fcHJvamVjdGVkRGlzcGxheUNvbHVtbnM9aS5maXJzdCksY2koaT11aSgpKSYmKHIuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucz1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5fZGlzcGxheWVkUm93cz1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5fY2Fs'@; put 'Y3VsYXRpb25Sb3dzPWkuZmlyc3QpLGNpKGk9dWkoKSkmJihyLnNlbGVjdEFsbENoZWNrYm94PWkuZmlyc3QpfX0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJkYXRhZ3JpZC1ob3N0IiwhMCkoImRhdGFncmlkLWRldGFpbC1vcGVuIixyLmRldGFpbFNl'@; put 'cnZpY2UuaXNPcGVuKX0saW5wdXRzOntsb2FkaW5nTW9yZUl0ZW1zOlswLCJjbHJMb2FkaW5nTW9yZUl0ZW1zIiwibG9hZGluZ01vcmVJdGVtcyJdLGNsckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsOiJjbHJEZ1NpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCIsY2xyRGdTaW5nbGVBY3Rpb25h'@; put 'YmxlQXJpYUxhYmVsOiJjbHJEZ1NpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWwiLGNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWw6ImNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWwiLGNsckRnRGlzYWJsZVBhZ2VGb2N1czoiY2xyRGdEaXNhYmxlUGFnZUZvY3VzIixjdXN0b21TZWxlY3RB'@; put 'bGxFbmFibGVkOlswLCJjbHJEZ0N1c3RvbVNlbGVjdEFsbEVuYWJsZWQiLCJjdXN0b21TZWxlY3RBbGxFbmFibGVkIl0sbG9hZGluZzpbMCwiY2xyRGdMb2FkaW5nIiwibG9hZGluZyJdLHNlbGVjdGVkOlswLCJjbHJEZ1NlbGVjdGVkIiwic2VsZWN0ZWQiXSxzaW5nbGVTZWxlY3RlZDpbMCwi'@; put 'Y2xyRGdTaW5nbGVTZWxlY3RlZCIsInNpbmdsZVNlbGVjdGVkIl0sY2xyRGdQcmVzZXJ2ZVNlbGVjdGlvbjoiY2xyRGdQcmVzZXJ2ZVNlbGVjdGlvbiIscm93U2VsZWN0aW9uTW9kZTpbMCwiY2xyRGdSb3dTZWxlY3Rpb24iLCJyb3dTZWxlY3Rpb25Nb2RlIl0sdHJhY2tCeTpbMCwiY2xyRGdJ'@; put 'dGVtc1RyYWNrQnkiLCJ0cmFja0J5Il19LG91dHB1dHM6e3NlbGVjdGVkQ2hhbmdlZDoiY2xyRGdTZWxlY3RlZENoYW5nZSIsc2luZ2xlU2VsZWN0ZWRDaGFuZ2VkOiJjbHJEZ1NpbmdsZVNlbGVjdGVkQ2hhbmdlIixyZWZyZXNoOiJjbHJEZ1JlZnJlc2giLGN1c3RvbVNlbGVjdEFsbDoiY2xy'@; put 'RGdDdXN0b21TZWxlY3RBbGwifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltibyhba00sZFcsbDcsSXYsYzcsZXcsRU0sTU0sakQsZzQsUE1lLENhZSx1NyxUYWUsc1ddKV0sbmdDb250ZW50U2VsZWN0b3JzOkM3dCxkZWNsczozNSx2YXJzOjksY29uc3RzOltbImRhdGFncmlkIiwiIl0sWyJk'@; put 'YXRhZ3JpZFRhYmxlIiwiIl0sWyJwcm9qZWN0ZWREaXNwbGF5Q29sdW1ucyIsIiJdLFsiZGlzcGxheWVkUm93cyIsIiJdLFsicHJvamVjdGVkQ2FsY3VsYXRpb25Db2x1bW5zIiwiIl0sWyJjYWxjdWxhdGlvblJvd3MiLCIiXSxbInNlbGVjdEFsbENoZWNrYm94IiwiIl0sWzEsImRhdGFncmlk'@; put 'LW91dGVyLXdyYXBwZXIiXSxbMSwiZGF0YWdyaWQtaW5uZXItd3JhcHBlciJdLFsxLCJkYXRhZ3JpZCJdLFsxLCJkYXRhZ3JpZC10YWJsZS13cmFwcGVyIl0sWyJyb2xlIiwiZ3JpZCIsInRhYmluZGV4IiwiLTEiLDEsImRhdGFncmlkLXRhYmxlIl0sWyJyb2xlIiwicm93Z3JvdXAiLDEsImRh'@; put 'dGFncmlkLWhlYWRlciJdLFsicm9sZSIsInJvdyIsMSwiZGF0YWdyaWQtcm93Il0sWzEsImRhdGFncmlkLXJvdy1tYXN0ZXIiLCJkYXRhZ3JpZC1yb3ctZmxleCJdLFsxLCJkYXRhZ3JpZC1yb3ctc3RpY2t5Il0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1'@; put 'bW4gZGF0YWdyaWQtc2VsZWN0IGRhdGFncmlkLWZpeGVkLWNvbHVtbiIsMywia2V5ZG93bi5zcGFjZSIsNCwibmdJZiJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsImNsYXNzIiwiZGF0YWdyaWQtY29sdW1uIGRhdGFncmlkLXNlbGVjdCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDQsIm5nSWYi'@; put 'XSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImRhdGFncmlkLWNvbHVtbiBkYXRhZ3JpZC1yb3ctYWN0aW9ucyBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDQsIm5nSWYiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImRhdGFncmlkLWNvbHVtbiBkYXRhZ3JpZC1leHBh'@; put 'bmRhYmxlLWNhcmV0IGRhdGFncmlkLWZpeGVkLWNvbHVtbiIsNCwibmdJZiJdLFsxLCJkYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZSJdLFsicm9sZSIsInByZXNlbnRhdGlvbiIsMSwiZGF0YWdyaWQtcm93cyJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1yb3ctbG9hZGluZyIsNCwibmdJZiJdLFs0LCJu'@; put 'Z0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLXNwaW5uZXIiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUiXSxbMSwiZGF0YWdyaWQtY2FsY3VsYXRpb24taGVhZGVyIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1z'@; put 'ZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiXSxbImNsYXNzIiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciJdLFsxLCJjbHItY2hlY2tib3gtd3JhcHBlciJdLFsidHlwZSIsImNoZWNr'@; put 'Ym94IiwidGFiaW5kZXgiLCItMSIsMywibmdNb2RlbENoYW5nZSIsImlkIiwibmdNb2RlbCJdLFsxLCJjbHItY29udHJvbC1sYWJlbCIsImNsci1jb2wtbnVsbCIsMywiZm9yIl0sWzEsImNsci1zci1vbmx5Il0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJk'@; put 'YXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImRhdGFncmlkLWNvbHVtbiIsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3Jp'@; put 'ZC1jb2x1bW4iLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWzEsImRhdGFncmlkLXJvdy1sb2FkaW5nIl0sWyJjbHJNZWRpdW0iLCIiXSxbMSwiZGF0YWdyaWQtc3Bpbm5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKHc3'@; put 'dCksV3IoMCksSigxLCJkaXYiLDcpKDIsImRpdiIsOCkoMywiZGl2Iiw5LDApKDUsImRpdiIsMTApKDYsImRpdiIsMTEsMSkoOCwiZGl2IiwxMikoOSwiZGl2IiwxMykoMTAsImRpdiIsMTQpKDExLCJkaXYiLDE1KSxZbigxMixFN3QsMywxLCJkaXYiLDE2KSgxMyxNN3QsNCwxLCJkaXYiLDE3'@; put 'KSgxNCxUN3QsNCwxLCJkaXYiLDE4KSgxNSx4N3QsNCwxLCJkaXYiLDE5KSx0ZSgpLEooMTYsImRpdiIsMjApLGF1KDE3LG51bGwsMiksdGUoKSgpKCkoKSxKKDE5LCJkaXYiLDIxKSxZbigyMCxBN3QsNSwxLCJjbHItZGctcm93IiwyMiksYXUoMjEsbnVsbCwzKSxZbigyMyxrN3QsNSwxLCJj'@; put 'bHItZGctcm93IiwyMiksV3IoMjQsMSksWW4oMjUsUjd0LDEsMCwiY2xyLWRnLXBsYWNlaG9sZGVyIiwyMyksdGUoKSgpKCkoKSxXcigyNiwyKSxZbigyNyxJN3QsMywwLCJkaXYiLDI0KSx0ZSgpLFdyKDI4LDMpLHRlKCksSigyOSwiZGl2IiwyNSkoMzAsImRpdiIsMjYpLGF1KDMxLG51bGws'@; put 'NCksdGUoKSxhdSgzMyxudWxsLDUpLHRlKCkpLDImdCYmKGllKDMpLFJyKCJhcmlhLWhpZGRlbiIsISFyLmRldGFpbFNlcnZpY2UuaXNPcGVufHxudWxsKSxpZSg5KSxydCgibmdJZiIsci5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXIuU0VMRUNUSU9OX1RZUEUuTXVsdGkpLGllKCkscnQo'@; put 'Im5nSWYiLHIuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1yLlNFTEVDVElPTl9UWVBFLlNpbmdsZSksaWUoKSxydCgibmdJZiIsci5yb3dBY3Rpb25TZXJ2aWNlLmhhc0FjdGlvbmFibGVSb3cpLGllKCkscnQoIm5nSWYiLHIuZXhwYW5kYWJsZVJvd3MuaGFzRXhwYW5kYWJsZVJvd3x8ci5k'@; put 'ZXRhaWxTZXJ2aWNlLmVuYWJsZWQpLGllKDUpLHJ0KCJuZ0lmIixyLmxvYWRpbmdNb3JlSXRlbXMpLGllKDMpLHJ0KCJuZ0lmIixyLmxvYWRpbmdNb3JlSXRlbXMpLGllKDIpLHJ0KCJuZ0lmIiwhci5wbGFjZWhvbGRlciksaWUoMikscnQoIm5nSWYiLHIubG9hZGluZykpfSxkZXBlbmRlbmNp'@; put 'ZXM6W1lzLGVsLEgyLG9jLFhsLHoyLHY0LFNhZSxMdix4YWUsRzUsT3YsUWIsSmJdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpO2NvbnN0IGJ5dD1uPT5uO2xldCBITWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIpe3RoaXMuY29tbW9uU3RyaW5ncz10LHRoaXMuY29sdW1uc1NlcnZp'@; put 'Y2U9cix0aGlzLmFsbFNlbGVjdGVkPW5ldyBLcn1nZXQgY2xyQWxsU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5hbGxTZWxlY3RlZC5hc09ic2VydmFibGUoKX1nZXQgYWxsSGlkZWFibGVzVmlzaWJsZSgpe3JldHVybiAwPT09dGhpcy5oaWRlYWJsZUNvbHVtbnMoKS5maWx0ZXIodD0+dC52YWx1'@; put 'ZS5oaWRkZW4pLmxlbmd0aH1zZWxlY3RBbGwoKXt0aGlzLmhpZGVhYmxlQ29sdW1ucygpLmZvckVhY2godD0+dGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2UodCx7aGlkZGVuOiExLGNoYW5nZXM6W0hmLkhJRERFTl19KSksdGhpcy5hbGxTZWxlY3RlZC5uZXh0KCEwKX1oaWRl'@; put 'YWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmZpbHRlcih0PT50LnZhbHVlLmhpZGVhYmxlKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoaWwpLHplKHU3KSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4s'@; put 'c2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiJdXSxvdXRwdXRzOntjbHJBbGxTZWxlY3RlZDoiY2xyQWxsU2VsZWN0ZWQifSxzdGFuZGFsb25lOiExLGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGlu'@; put 'ayIsInN3aXRjaC1idXR0b24iLDMsImNsaWNrIiwiZGlzYWJsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihKKDAsImJ1dHRvbiIsMCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLnNlbGVjdEFsbCgpfSksU2UoMSksdGUoKSksMiZ0JiYocnQoImRpc2FibGVkIixy'@; put 'LmFsbEhpZGVhYmxlc1Zpc2libGUpLGllKCksU3IoIiAiLHIuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdEFsbCwiICIpKX0sZW5jYXBzdWxhdGlvbjoyfSksbn0pKCksVk1lPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGkpe3RoaXMuY29tbW9uU3RyaW5ncz10LHRoaXMuY29sdW1u'@; put 'c1NlcnZpY2U9cix0aGlzLnBvcG92ZXJJZD1QaCgpLHRoaXMub3BlblN0YXRlPSExLHRoaXMuc21hcnRQb3NpdGlvbj17YXhpczpCMi5WRVJUSUNBTCxzaWRlOm5tLkJFRk9SRSxhbmNob3I6UWwuU1RBUlQsY29udGVudDpRbC5TVEFSVH0sdGhpcy50cmFja0J5Rm49Ynl0LHRoaXMuc3Vic2Ny'@; put 'aXB0aW9uPWkub3BlbkNoYW5nZS5zdWJzY3JpYmUobz0+dGhpcy5vcGVuU3RhdGU9byl9Z2V0IGFsbENvbHVtbnNWaXNpYmxlKCl7cmV0dXJuIHRoaXMuX2FsbENvbHVtbnNWaXNpYmxlfXNldCBhbGxDb2x1bW5zVmlzaWJsZSh0KXt0aGlzLl9hbGxDb2x1bW5zVmlzaWJsZT10fWdldCBoaWRl'@; put 'YWJsZUNvbHVtblN0YXRlcygpe3JldHVybiB0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKHI9PnIudmFsdWUuaGlkZWFibGUpLm1hcChyPT5yLnZhbHVlKX1nZXQgaGFzT25seU9uZVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxl'@; put 'bmd0aC10aGlzLmhpZGVhYmxlQ29sdW1uU3RhdGVzLmxlbmd0aD09PTAmJjE9PT10aGlzLmhpZGVhYmxlQ29sdW1uU3RhdGVzLmZpbHRlcihyPT4hci5oaWRkZW4pLmxlbmd0aH1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9dG9nZ2xlQ29sdW1uU3RhdGUo'@; put 'dCxyKXtjb25zdCBpPXRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5maWx0ZXIobz0+by52YWx1ZT09PXQpWzBdO3RoaXMuY29sdW1uc1NlcnZpY2UuZW1pdFN0YXRlQ2hhbmdlKGkse2hpZGRlbjpyLGNoYW5nZXM6W0hmLkhJRERFTl19KX10b2dnbGVTd2l0Y2hQYW5lbCgpe3RoaXMub3Bl'@; put 'blN0YXRlPSF0aGlzLm9wZW5TdGF0ZX1hbGxDb2x1bW5zU2VsZWN0ZWQoKXt0aGlzLmFsbFNlbGVjdGVkRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKGlsKSx6ZSh1NyksemUoS3UpKX0sbi5c'@; put 'dTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRnLWNvbHVtbi10b2dnbGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQscil7aWYoMSZ0JiZXbyhMN3QsNSxubyksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci5hbGxTZWxlY3RlZEVsZW1lbnQ9aS5maXJzdCl9fSxob3N0VmFy'@; put 'czo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmd3IoImNvbHVtbi1zd2l0Y2gtd3JhcHBlciIsITApKCJhY3RpdmUiLHIub3BlblN0YXRlKX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbemcoW2k3XSldLGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWyJhbGxTZWxlY3RlZCIsIiJd'@; put 'LFsicm9sZSIsImJ1dHRvbiIsInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyQW5jaG9yIiwiIiwiY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvbiIsIiIsMSwiYnRuIiwiYnRuLXNtIiwiY29sdW1uLXRvZ2dsZS0tYWN0aW9uIl0sWyJjbGFzcyIsImNvbHVtbi1zd2l0Y2giLCJyb2xlIiwiZGlh'@; put 'bG9nIiwiY2RrVHJhcEZvY3VzIiwiIiwzLCJpZCIsNCwiY2xyUG9wb3ZlckNvbnRlbnQiLCJjbHJQb3BvdmVyQ29udGVudEF0IiwiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIl0sWyJyb2xlIiwiZGlhbG9nIiwi'@; put 'Y2RrVHJhcEZvY3VzIiwiIiwxLCJjb2x1bW4tc3dpdGNoIiwzLCJpZCJdLFsxLCJzd2l0Y2gtaGVhZGVyIl0sWyJ0YWJpbmRleCIsIi0xIiwxLCJjbHItc3Itb25seSJdLFsiY2xyUG9wb3ZlckNsb3NlQnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxp'@; put 'bmsiLCJ0b2dnbGUtc3dpdGNoLWNsb3NlLWJ1dHRvbiJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiLCJhcmlhLWhpZGRlbiIsInRydWUiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwic3dpdGNoLWNvbnRlbnQiLCJsaXN0LXVuc3R5bGVkIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJh'@; put 'Y2tCeSJdLFsxLCJzd2l0Y2gtZm9vdGVyIl0sWzMsImNsckFsbFNlbGVjdGVkIl0sWyJjbHJDaGVja2JveCIsIiIsInR5cGUiLCJjaGVja2JveCIsMywibmdNb2RlbENoYW5nZSIsImRpc2FibGVkIiwibmdNb2RlbCJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il1dLHRlbXBsYXRlOmZ1bmN0aW9u'@; put 'KHQscil7MSZ0JiYoSigwLCJidXR0b24iLDEpLFNlKDEpLHRlKCksWW4oMixGN3QsMTUsOSwiZGl2IiwyKSksMiZ0JiYoUnIoImFyaWEtY29udHJvbHMiLHIucG9wb3ZlcklkKSgiYXJpYS1leHBhbmRlZCIsci5vcGVuU3RhdGUpKCJhcmlhLWhhc3BvcHVwIiwibWVudSIpLGllKCksU3IoIiAi'@; put 'LHIuY29tbW9uU3RyaW5ncy5rZXlzLnBpY2tDb2x1bW5zLCIgIiksaWUoKSxydCgiY2xyUG9wb3ZlckNvbnRlbnQiLHIub3BlblN0YXRlKSgiY2xyUG9wb3ZlckNvbnRlbnRBdCIsci5zbWFydFBvc2l0aW9uKSgiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwhMCkoImNs'@; put 'clBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSIsITApKX0sZGVwZW5kZW5jaWVzOltSZixJZixfTSxKcyxlbCxVMixGZixIMixvYyxYbCxrRCxGRWUsREQsSUQsSE1lXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKSxqTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLmV4cGFu'@; put 'ZGFibGVSb3dzQ291bnQ9dCx0JiZ0LnJlZ2lzdGVyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQmJnRoaXMuZXhwYW5kYWJsZVJvd3NDb3VudC51bnJlZ2lzdGVyKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKE1N'@; put 'LDgpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siIiwiY2xySWZFeHBhbmRlZCIsIiJdXSxzdGFuZGFsb25lOiExfSksbn0pKCksZlc9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvKXt0aGlzLnNlbGVjdGlvbj10LHRoaXMuZGV0YWlsU2VydmljZT1yLHRo'@; put 'aXMuY29sdW1uc1NlcnZpY2U9aSx0aGlzLmNvbW1vblN0cmluZ3M9byx0aGlzLlNFTEVDVElPTl9UWVBFPUJjfWdldCBoYXNIaWRlYWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5oYXNIaWRlYWJsZUNvbHVtbnN9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0'@; put 'KXtyZXR1cm4gbmV3KHR8fG4pKHplKGtNKSx6ZShnNCksemUodTcpLHplKGlsKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1kZy1mb290ZXIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJkYXRhZ3JpZC1mb290ZXIi'@; put 'LCEwKX0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6Vjd0LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWzQsIm5nSWYiXSxbMSwiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCJdLFsxLCJkYXRhZ3JpZC1mb290ZXItc2VsZWN0Il0sWyJjbHJDaGVja2JveCIsIiIsInR5cGUiLCJj'@; put 'aGVja2JveCIsImNoZWNrZWQiLCJjaGVja2VkIiwiZGlzYWJsZWQiLCIiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwiZGF0YWdyaWQtZm9vdGVyLWRlc2NyaXB0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oSDd0KSxZbigwLEI3dCw4LDIsIm5nLWNvbnRhaW5lciIsMCko'@; put 'MSxVN3QsNCwxLCJuZy1jb250YWluZXIiLDApLFdyKDIpKSwyJnQmJihydCgibmdJZiIsci5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXIuU0VMRUNUSU9OX1RZUEUuTXVsdGkmJnIuc2VsZWN0aW9uLmN1cnJlbnQubGVuZ3RoPjApLGllKCkscnQoIm5nSWYiLCFyLmRldGFpbFNlcnZpY2Uu'@; put 'aXNPcGVuKSl9LGRlcGVuZGVuY2llczpbWXMsZWwsVTIsRmYsVk1lXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKTtjb25zdCBBYWU9bmV3IEVyKCJDT0xVTU5fU1RBVEUiKSxFeXQ9e3Byb3ZpZGU6QWFlLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gU3l0KCl7cmV0dXJuIG5ldyAkaSh7Y2hhbmdlczpb'@; put 'XX0pfX07bGV0IFlEPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCl7dGhpcy5wYWdlPXQsdGhpcy5wYWdlU2l6ZU9wdGlvbnNJZD1QaCgpfW5nT25Jbml0KCl7KCF0aGlzLnBhZ2VTaXplT3B0aW9uc3x8MD09PXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aCkmJih0aGlzLnBhZ2VTaXpl'@; put 'T3B0aW9ucz1bdGhpcy5wYWdlLnNpemVdKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoSXYpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2Utc2l6ZSJdXSxpbnB1dHM6e3BhZ2VTaXplT3B0aW9uczpb'@; put 'MCwiY2xyUGFnZVNpemVPcHRpb25zIiwicGFnZVNpemVPcHRpb25zIl0scGFnZVNpemVPcHRpb25zSWQ6WzAsImNsclBhZ2VTaXplT3B0aW9uc0lkIiwicGFnZVNpemVPcHRpb25zSWQiXX0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6NSx2YXJzOjYsY29uc3Rz'@; put 'OltbMywiZm9yIl0sWzEsImNsci1zZWxlY3Qtd3JhcHBlciJdLFszLCJuZ01vZGVsQ2hhbmdlIiwiaWQiLCJuZ01vZGVsIl0sWzMsIm5nVmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJuZ1ZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxKKDAsImxhYmVs'@; put 'IiwwKSxXcigxKSx0ZSgpLEooMiwiZGl2IiwxKSgzLCJzZWxlY3QiLDIpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihvKXtyZXR1cm4gZmkoci5wYWdlLnNpemUsbyl8fChyLnBhZ2Uuc2l6ZT1vKSxvfSksWW4oNCx6N3QsMiwyLCJvcHRpb24iLDMpLHRlKCkoKSksMiZ0JiYocnQoImZv'@; put 'ciIsci5wYWdlU2l6ZU9wdGlvbnNJZCksaWUoMyksd3IoImNsci1wYWdlLXNpemUtc2VsZWN0IiwhMCkscnQoImlkIixyLnBhZ2VTaXplT3B0aW9uc0lkKSxkaSgibmdNb2RlbCIsci5wYWdlLnNpemUpLGllKCkscnQoIm5nRm9yT2YiLHIucGFnZVNpemVPcHRpb25zKSl9LGRlcGVuZGVuY2ll'@; put 'czpbUmYsZWwsWGcsUWcsS2csb2MsWGxdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLHBXPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGkpe3RoaXMucGFnZT10LHRoaXMuY29tbW9uU3RyaW5ncz1yLHRoaXMuZGV0YWlsU2VydmljZT1pLHRoaXMuY3VycmVudENoYW5nZWQ9bmV3IEty'@; put 'KCExKSx0LmFjdGl2YXRlZD0hMH1nZXQgcGFnZVNpemUoKXtyZXR1cm4gdGhpcy5wYWdlLnNpemV9c2V0IHBhZ2VTaXplKHQpeyJudW1iZXIiPT10eXBlb2YgdCYmKHRoaXMucGFnZS5zaXplPXQpfWdldCB0b3RhbEl0ZW1zKCl7cmV0dXJuIHRoaXMucGFnZS50b3RhbEl0ZW1zfXNldCB0b3Rh'@; put 'bEl0ZW1zKHQpeyJudW1iZXIiPT10eXBlb2YgdCYmKHRoaXMucGFnZS50b3RhbEl0ZW1zPXQpfWdldCBsYXN0UGFnZSgpe3JldHVybiB0aGlzLnBhZ2UubGFzdH1zZXQgbGFzdFBhZ2UodCl7Im51bWJlciI9PXR5cGVvZiB0JiYodGhpcy5wYWdlLmxhc3Q9dCl9Z2V0IGN1cnJlbnRQYWdlKCl7'@; put 'cmV0dXJuIHRoaXMucGFnZS5jdXJyZW50fXNldCBjdXJyZW50UGFnZSh0KXsibnVtYmVyIj09dHlwZW9mIHQmJih0aGlzLnBhZ2UuY3VycmVudD10KX1nZXQgZmlyc3RJdGVtKCl7cmV0dXJuIHRoaXMucGFnZS5maXJzdEl0ZW19Z2V0IGxhc3RJdGVtKCl7cmV0dXJuIHRoaXMucGFnZS5sYXN0'@; put 'SXRlbX1nZXQgbWlkZGxlUGFnZXMoKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLnBhZ2UuY3VycmVudD4xJiZ0LnB1c2godGhpcy5wYWdlLmN1cnJlbnQtMSksdC5wdXNoKHRoaXMucGFnZS5jdXJyZW50KSx0aGlzLnBhZ2UuY3VycmVudDx0aGlzLnBhZ2UubGFzdCYmdC5wdXNoKHRoaXMucGFn'@; put 'ZS5jdXJyZW50KzEpLHR9bmdPbkluaXQoKXt0aGlzLnBhZ2Uuc2l6ZXx8KHRoaXMucGFnZS5zaXplPTEwKSx0aGlzLl9wYWdlU3Vic2NyaXB0aW9uPXRoaXMucGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKHQ9PnRoaXMuY3VycmVudENoYW5nZWQuZW1pdCh0KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnBh'@; put 'Z2UucmVzZXRQYWdlU2l6ZSghMCksdGhpcy5fcGFnZVN1YnNjcmlwdGlvbiYmdGhpcy5fcGFnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXByZXZpb3VzKCl7dGhpcy5wYWdlLnByZXZpb3VzKCl9bmV4dCgpe3RoaXMucGFnZS5uZXh0KCl9dmVyaWZ5Q3VycmVudFBhZ2UodCl7cGFyc2VJ'@; put 'bnQodC50YXJnZXQudmFsdWUsMTApIT09dGhpcy5wYWdlLmN1cnJlbnQmJih0LnRhcmdldC52YWx1ZT10aGlzLnBhZ2UuY3VycmVudCl9dXBkYXRlQ3VycmVudFBhZ2UodCl7Y29uc3Qgcj1wYXJzZUludCh0LnRhcmdldC52YWx1ZSwxMCk7aXNOYU4ocil8fCh0aGlzLnBhZ2UuY3VycmVudD1y'@; put 'PDE/MTpyPnRoaXMucGFnZS5sYXN0P3RoaXMucGFnZS5sYXN0OnIpLHRoaXMuY3VycmVudFBhZ2VJbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlPXRoaXMucGFnZS5jdXJyZW50LnRvU3RyaW5nKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHpl'@; put 'KEl2KSx6ZShpbCksemUoZzQpKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2luYXRpb24iXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmRmEoaSxZRCw1KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLl9wYWdlU2l6ZUNv'@; put 'bXBvbmVudD1vLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LHIpe2lmKDEmdCYmV28oVzd0LDUpLDImdCl7bGV0IGk7Y2koaT11aSgpKSYmKHIuY3VycmVudFBhZ2VJbnB1dFJlZj1pLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigi'@; put 'cGFnaW5hdGlvbiIsITApfSxpbnB1dHM6e2Rpc2FibGVDdXJyZW50UGFnZUlucHV0OlswLCJjbHJEZ1BhZ2VJbnB1dERpc2FibGVkIiwiZGlzYWJsZUN1cnJlbnRQYWdlSW5wdXQiXSxwYWdlU2l6ZTpbMCwiY2xyRGdQYWdlU2l6ZSIsInBhZ2VTaXplIl0sdG90YWxJdGVtczpbMCwiY2xyRGdU'@; put 'b3RhbEl0ZW1zIiwidG90YWxJdGVtcyJdLGxhc3RQYWdlOlswLCJjbHJEZ0xhc3RQYWdlIiwibGFzdFBhZ2UiXSxjdXJyZW50UGFnZTpbMCwiY2xyRGdQYWdlIiwiY3VycmVudFBhZ2UiXX0sb3V0cHV0czp7Y3VycmVudENoYW5nZWQ6ImNsckRnUGFnZUNoYW5nZSJ9LHN0YW5kYWxvbmU6ITEs'@; put 'bmdDb250ZW50U2VsZWN0b3JzOlo3dCxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1sicmVhZE9ubHkiLCIiXSxbImN1cnJlbnRQYWdlSW5wdXQiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJwYWdpbmF0aW9uLXNpemUiLDQsIm5nSWYiXSxbMSwicGFnaW5hdGlvbi1kZXNjcmlwdGlvbiJdLFsi'@; put 'Y2xhc3MiLCJwYWdpbmF0aW9uLWxpc3QiLDQsIm5nSWYiXSxbMSwicGFnaW5hdGlvbi1zaXplIl0sWzEsInBhZ2luYXRpb24tbGlzdCJdLFsidHlwZSIsImJ1dHRvbiIsMSwicGFnaW5hdGlvbi1maXJzdCIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsxLCJjbHItc3Itb25seSJdLFsic2hhcGUi'@; put 'LCJzdGVwLWZvcndhcmQtMiIsImRpcmVjdGlvbiIsImRvd24iXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tcHJldmlvdXMiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJsZWZ0Il0sWyJ0eXBlIiwidGV4dCIsImNsYXNzIiwicGFn'@; put 'aW5hdGlvbi1jdXJyZW50IGNsci1pbnB1dCIsMywic2l6ZSIsInZhbHVlIiwia2V5ZG93bi5lbnRlciIsImJsdXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsidHlwZSIsImJ1dHRvbiIsMSwicGFnaW5hdGlvbi1uZXh0IiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJzaGFwZSIsImFuZ2xlIiwi'@; put 'ZGlyZWN0aW9uIiwicmlnaHQiXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tbGFzdCIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsic2hhcGUiLCJzdGVwLWZvcndhcmQtMiIsImRpcmVjdGlvbiIsInVwIl0sWyJ0eXBlIiwidGV4dCIsMSwicGFnaW5hdGlvbi1jdXJyZW50IiwiY2xy'@; put 'LWlucHV0IiwzLCJrZXlkb3duLmVudGVyIiwiYmx1ciIsInNpemUiLCJ2YWx1ZSJdLFsxLCJwYWdpbmF0aW9uLWRlc2NyaXB0aW9uLWNvbXBhY3QiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhZN3QpLFluKDAsWDd0LDUsMiwibmctY29udGFpbmVyIiwyKSgxLFE3dCwxNCwx'@; put 'MCwibmctY29udGFpbmVyIiwyKSksMiZ0JiYocnQoIm5nSWYiLCFyLmRldGFpbFNlcnZpY2UuaXNPcGVuKSxpZSgpLHJ0KCJuZ0lmIixyLmRldGFpbFNlcnZpY2UuaXNPcGVuKSl9LGRlcGVuZGVuY2llczpbWXMsSnNdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLG53PSgoKT0+e2NsYXNzIG57'@; put 'Y29uc3RydWN0b3IodCxyLGksbyxhLGwsdSl7dGhpcy5lbD10LHRoaXMucmVuZGVyZXI9cix0aGlzLmRvbUFkYXB0ZXI9byx0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlPWEsdGhpcy5jb2x1bW5zU2VydmljZT1sLHRoaXMuY29sdW1uU3RhdGU9dSx0aGlzLnJlc2l6ZUVtaXR0ZXI9bmV3IEty'@; put 'LHRoaXMud2lkdGhTZXQ9ITEsdGhpcy5hdXRvU2V0PSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChpLmZpbHRlclJlbmRlclN0ZXBzKG00LkNMRUFSX1dJRFRIUykuc3Vic2NyaWJlKCgpPT50aGlzLmNsZWFyV2lkdGgoKSkpfW5nT25EZXN0cm95KCl7'@; put 'dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51bnN1YnNjcmliZSgpKX1nZXRDb2x1bW5XaWR0aFN0YXRlKCl7Y29uc3QgdD10aGlzLmRldGVjdFN0cmljdFdpZHRoKCk7cmV0dXJue3dpZHRoOnRoaXMuY29tcHV0ZVdpZHRoKHQpLHN0cmljdFdpZHRoOnR9fXNldENvbHVtblN0YXRl'@; put 'KHQpe3RoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1uc1t0XT10aGlzLmNvbHVtblN0YXRlfXNldFdpZHRoKHQpe3Quc3RyaWN0V2lkdGg/KHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5JiYodGhpcy5yZXNpemVFbWl0dGVyLmVtaXQodC53aWR0aCksdGhpcy5yZW5kZXJlci5z'@; put 'ZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIix0LndpZHRoKyJweCIpLHRoaXMud2lkdGhTZXQ9ITEpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LFRNKSx0aGlzLmF1dG9TZXQ9ITEpOih0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRo'@; put 'aXMuZWwubmF0aXZlRWxlbWVudCxUTSksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIix0LndpZHRoKyJweCIpLHRoaXMud2lkdGhTZXQ9ITAsdGhpcy5hdXRvU2V0PSEwKX1zZXRIaWRkZW4odCl7dC5oaWRkZW4/dGhpcy5yZW5kZXJlci5hZGRD'@; put 'bGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsekQpOnRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHpEKX1jbGVhcldpZHRoKCl7dGhpcy53aWR0aFNldCYmIXRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5JiZ0aGlzLnJlbmRlcmVyLnNl'@; put 'dFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLG51bGwpLHRoaXMuYXV0b1NldCYmdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsVE0pfWRldGVjdFN0cmljdFdpZHRoKCl7cmV0dXJuIHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVz'@; put 'aXplZEJ5P3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2Uud2lkdGhBZnRlclJlc2l6ZTp0aGlzLmF1dG9TZXQ/MDp0aGlzLmRvbUFkYXB0ZXIudXNlckRlZmluZWRXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpfWNvbXB1dGVXaWR0aCh0KXtsZXQgcj10O3JldHVybiByfHwocj10aGlzLmRv'@; put 'bUFkYXB0ZXIuc2Nyb2xsV2lkdGgodGhpcy5lbC5uYXRpdmVFbGVtZW50KSkscn19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUobm8pLHplKE50KSx6ZShldyksemUoYnYpLHplKHdhZSksemUodTcpLHplKEFhZSkpfSxuLlx1MDI3NWRpcj0kcih7'@; put 'dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uIl1dLG91dHB1dHM6e3Jlc2l6ZUVtaXR0ZXI6ImNsckRnQ29sdW1uUmVzaXplIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW3dhZSxFeXRdKV19KSxufSkoKSxBeXQ9KCgpPT57Y2xhc3Mgbnt1c2VyRGVmaW5lZFdpZHRoKHQp'@; put 'e3JldHVybiAwfXNjcm9sbEJhcldpZHRoKHQpe3JldHVybiAwfXNjcm9sbFdpZHRoKHQpe3JldHVybiAwfWNvbXB1dGVkSGVpZ2h0KHQpe3JldHVybiAwfWNsaWVudFJlY3QodCl7cmV0dXJue3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9fW1pbldpZHRo'@; put 'KHQpe3JldHVybiAwfWZvY3VzKHQpe319cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y29uc3Qga3l0PW49PkhjKG4pP25ldyBidjpuZXcgQXl0O2xldCBS'@; put 'TT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8sYSxsLHUsZyxFLE8sWixlZSl7dGhpcy5kYXRhZ3JpZD10LHRoaXMub3JnYW5pemVyPXIsdGhpcy5pdGVtcz1pLHRoaXMucGFnZT1vLHRoaXMuZWw9YSx0aGlzLnJlbmRlcmVyPWwsdGhpcy50YWJsZVNpemVTZXJ2aWNlPWcsdGhp'@; put 'cy5jb2x1bW5zU2VydmljZT1FLHRoaXMubmdab25lPU8sdGhpcy5rZXlOYXZpZ2F0aW9uPVosdGhpcy5jaGFuZ2VEZXRlY3RvclJlZj1lZSx0aGlzLl9oZWlnaHRTZXQ9ITEsdGhpcy5zaG91bGRTdGFiaWxpemVDb2x1bW5zPSEwLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmludGVyc2Vj'@; put 'dGlvbk9ic2VydmVyPW51bGwsdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGU9ITEsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goci5maWx0ZXJSZW5kZXJTdGVwcyhtNC5DT01QVVRFX0NPTFVNTl9XSURUSFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jb21wdXRlSGVhZGVyc1dpZHRoKCkpKSx0aGlzLnN1'@; put 'YnNjcmlwdGlvbnMucHVzaChvLnNpemVDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5faGVpZ2h0U2V0JiZ0aGlzLnJlc2V0RGF0YWdyaWRIZWlnaHQoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh1LnN0YXRlQ2hhbmdlLnN1YnNjcmliZSh2ZT0+dGhpcy50b2dnbGVEZXRhaWxQYW5l'@; put 'KHZlKSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGkuY2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5zaG91bGRTdGFiaWxpemVDb2x1bW5zPSEwKSl9bmdPbkluaXQoKXt0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnNTdGF0ZUNoYW5nZS5zdWJzY3JpYmUodD0+dGhpcy5jb2x1bW5TdGF0'@; put 'ZUNoYW5nZWQodCkpLG51bGw9PT10aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50JiYodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFt0XSk9PnsodGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudHx8dC5pc0ludGVyc2Vj'@; put 'dGluZykmJnRoaXMuY29sdW1uc1NpemVzU3RhYmxlJiYodGhpcy5jb2x1bW5zU2l6ZXNTdGFibGU9ITEsdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKSl9KSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVy'@; put 'Lm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXR1cENvbHVtbnMoKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmhlYWRlcnMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNldHVwQ29sdW1ucygpLHRoaXMuY29sdW1u'@; put 'c1NpemVzU3RhYmxlPSExLHRoaXMuc3RhYmlsaXplQ29sdW1ucygpfSkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMudGFibGVTaXplU2VydmljZS50YWJsZT10aGlzLmVsfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe3RoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucyYmdGhpcy5zdGFiaWxpemVDb2x1'@; put 'bW5zKCksdGhpcy5zaG91bGRDb21wdXRlSGVpZ2h0KCkmJnRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57c2V0VGltZW91dCgoKT0+e3RoaXMuY29tcHV0ZURhdGFncmlkSGVpZ2h0KCl9KX0pfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51'@; put 'bnN1YnNjcmliZSgpKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCl9dG9nZ2xlRGV0YWlsUGFuZSh0KXt0aGlzLmhlYWRlcnMmJih0JiYhdGhpcy5jb2x1bW5zU2VydmljZS5oYXNDYWNoZSgpPyh0aGlzLmNvbHVtbnNTZXJ2aWNlLmNhY2hlKCksdGhpcy5jb2x1bW5z'@; put 'U2VydmljZS52aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChyLGkpPT57aT4wJiZ0aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZUF0KHIuY29sdW1uSW5kZXgse2NoYW5nZXM6W0hmLkhJRERFTl0saGlkZGVuOnR9KX0pKTp0fHx0aGlzLmNvbHVtbnNTZXJ2aWNlLnJlc2V0VG9MYXN0'@; put 'Q2FjaGUoKSl9c2V0dXBDb2x1bW5zKCl7dGhpcy5oZWFkZXJzLmZvckVhY2goKHQscik9PnQuc2V0Q29sdW1uU3RhdGUocikpLHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5zcGxpY2UodGhpcy5oZWFkZXJzLmxlbmd0aCksdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmZvckVhY2go'@; put 'KHQscik9Pnt0aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZSh0LHtjaGFuZ2VzOltIZi5JTklUSUFMSVpFXSxjb2x1bW5JbmRleDpyfSl9KX1zaG91bGRDb21wdXRlSGVpZ2h0KCl7cmV0dXJuIXRoaXMuX2hlaWdodFNldCYmdGhpcy5wYWdlLnNpemU+MCYmdGhpcy5pdGVtcy5k'@; put 'aXNwbGF5ZWQubGVuZ3RoPT09dGhpcy5wYWdlLnNpemV9Y29tcHV0ZURhdGFncmlkSGVpZ2h0KCl7Y29uc3QgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLmhlaWdodDt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwi'@; put 'aGVpZ2h0Iix0KSx0aGlzLl9oZWlnaHRTZXQ9ITB9cmVzZXREYXRhZ3JpZEhlaWdodCgpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJoZWlnaHQiLCIiKSx0aGlzLl9oZWlnaHRTZXQ9ITF9Y29tcHV0ZUhlYWRlcnNXaWR0aCgpe2NvbnN0IHQ9dGhpcy5o'@; put 'ZWFkZXJzLmxlbmd0aCxyPXRoaXMuaGVhZGVycy5tYXAobz0+by5nZXRDb2x1bW5XaWR0aFN0YXRlKCkpO2xldCBpPSEwO3RoaXMuaGVhZGVycy5mb3JFYWNoKChvLGEpPT57Y29uc3QgbD17Y2hhbmdlczpbSGYuV0lEVEhdLC4uLnJbYV19O2wuc3RyaWN0V2lkdGh8fChpPSExKSx0PT09YSsx'@; put 'JiZpJiYobC5zdHJpY3RXaWR0aD0wKSx0aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZUF0KGEsbCl9KX1jb2x1bW5TdGF0ZUNoYW5nZWQodCl7aWYoIXRoaXMuaGVhZGVyc3x8bnVsbD09dC5jb2x1bW5JbmRleClyZXR1cm47Y29uc3Qgcj10LmNvbHVtbkluZGV4O3QuY2hhbmdl'@; put 'cyYmdC5jaGFuZ2VzLmxlbmd0aCYmdC5jaGFuZ2VzLmZvckVhY2goaT0+e3N3aXRjaChpKXtjYXNlIEhmLldJRFRIOnRoaXMuaGVhZGVycy5nZXQocikuc2V0V2lkdGgodCksdGhpcy5yb3dzLmZvckVhY2gobz0+e28/LmNlbGxzLmxlbmd0aD09PXRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1u'@; put 'cy5sZW5ndGgmJihvLmNlbGxzLmdldChyKS5zZXRXaWR0aCh0KSxvLmV4cGFuZGFibGVSb3c/LmNlbGxzLmdldChyKT8uc2V0V2lkdGgodCkpfSk7YnJlYWs7Y2FzZSBIZi5ISURERU46dGhpcy5oZWFkZXJzLmdldChyKS5zZXRIaWRkZW4odCksdGhpcy5yb3dzLmZvckVhY2gobz0+e28uY2Vs'@; put 'bHMmJm8uY2VsbHMubGVuZ3RoJiYoby5jZWxscy5nZXQocikuc2V0SGlkZGVuKHQpLG8uZXhwYW5kYWJsZVJvdz8uY2VsbHMuZ2V0KHIpPy5zZXRIaWRkZW4odCkpfSksdGhpcy51cGRhdGVDb2x1bW5TZXBhcmF0b3JzVmlzaWJpbGl0eSgpLHRoaXMua2V5TmF2aWdhdGlvbi5yZXNldEtleUdy'@; put 'aWQoKTticmVhaztjYXNlIEhmLklOSVRJQUxJWkU6dC5oaWRlYWJsZSYmdC5oaWRkZW4mJih0aGlzLmhlYWRlcnMuZ2V0KHIpLnNldEhpZGRlbih0KSx0aGlzLnJvd3MuZm9yRWFjaChvPT57by5zZXRDZWxsc1N0YXRlKCksby5leHBhbmRhYmxlUm93Py5zZXRDZWxsc1N0YXRlKCl9KSl9fSl9'@; put 'c3RhYmlsaXplQ29sdW1ucygpe3RoaXMuY29sdW1uc1NpemVzU3RhYmxlfHx0aGlzLml0ZW1zLmRpc3BsYXllZC5sZW5ndGg+MCYmKHRoaXMub3JnYW5pemVyLnJlc2l6ZSgpLHRoaXMuY29sdW1uc1NpemVzU3RhYmxlPSEwKX11cGRhdGVDb2x1bW5TZXBhcmF0b3JzVmlzaWJpbGl0eSgpe2Nv'@; put 'bnN0IHQ9dGhpcy5kYXRhZ3JpZC5jb2x1bW5zLmZpbHRlcihyPT4hci5pc0hpZGRlbik7dC5mb3JFYWNoKChyLGkpPT57aT09PXQubGVuZ3RoLTE/ci5zaG93U2VwYXJhdG9yPSExOnIuc2hvd1NlcGFyYXRvcnx8KHIuc2hvd1NlcGFyYXRvcj0hMCl9KX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1'@; put 'bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoTnYpLHplKGV3KSx6ZShjNyksemUoSXYpLHplKG5vKSx6ZShOdCksemUoZzQpLHplKENhZSksemUodTcpLHplKGdhKSx6ZShzVyksemUoVWwpKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlkIl1d'@; put 'LGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixpKXtpZigxJnQmJihGYShpLG53LDQpLEZhKGksT3YsNCkpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIuaGVhZGVycz1vKSxjaShvPXVpKCkpJiYoci5yb3dzPW8pfX0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW3twcm92aWRlOmJ2'@; put 'LHVzZUZhY3Rvcnk6a3l0LGRlcHM6W2xkXX1dKV19KSxufSkoKSxSeXQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25zKEZndCxQZ3QsY0QsSGd0LEZTZSxWZ3QsUFNlLEJndCxqZ3QpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxu'@; put 'KX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxveXQsSnosV2wsVE1lLGhkLFdvZSxybSxheXQseE1lLGdNLExELHRhZV19KSxufSkoKSxVTWU9KCgpPT57Y2xhc3Mgbnt9cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBu'@; put 'ZXcodHx8bil9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1zdGFjay1jb250ZW50Il1dLHN0YW5kYWxvbmU6ITF9KSxufSkoKSxrYWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2dlbmVyYXRlZElkPW51bGwsdGhpcy5faWQ9bnVsbH1nZXQgaWQo'@; put 'KXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKHQpe3RoaXMuX2lkPSJzdHJpbmciPT10eXBlb2YgdCYmIiIhPT10P3Q6dGhpcy5fZ2VuZXJhdGVkSWQrIiJ9bmdPbkluaXQoKXt0aGlzLl9nZW5lcmF0ZWRJZD0iY2xyLXN0YWNrLWxhYmVsLSIrUGgoKSx0aGlzLmlkfHwodGhpcy5faWQ9dGhpcy5f'@; put 'Z2VuZXJhdGVkSWQrIiIpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLXN0YWNrLWxhYmVsIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZS'@; put 'cigiaWQiLHIuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LHN0YW5kYWxvbmU6ITEsbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLHpNZT0oKCk9PntjbGFzcyBu'@; put 'e2NvbnN0cnVjdG9yKHQscil7dGhpcy5wYXJlbnQ9dCx0aGlzLmNvbW1vblN0cmluZ3M9cix0aGlzLmV4cGFuZGVkPSExLHRoaXMuZXhwYW5kYWJsZT0hMSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBLcighMSksdGhpcy5mb2N1c2VkPSExLHRoaXMudW5pcXVlSWQ9UGgoKSx0aGlzLl9jaGFu'@; put 'Z2VkQ2hpbGRyZW49MCx0aGlzLl9mdWxseUluaXRpYWxpemVkPSExLHRoaXMuX2NoYW5nZWQ9ITEsdCYmdC5hZGRDaGlsZCgpfXNldCBzZXRDaGFuZ2VkVmFsdWUodCl7dGhpcy5fY2hhbmdlZD10LHRoaXMucGFyZW50JiZ0aGlzLl9mdWxseUluaXRpYWxpemVkJiYodD90aGlzLnBhcmVudC5f'@; put 'Y2hhbmdlZENoaWxkcmVuKys6dGhpcy5wYXJlbnQuX2NoYW5nZWRDaGlsZHJlbi0tKX1nZXQgZ2V0Q2hhbmdlZFZhbHVlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZWR8fHRoaXMuX2NoYW5nZWRDaGlsZHJlbj4wJiYhdGhpcy5leHBhbmRlZH1nZXQgb25TdGFja0xhYmVsRm9jdXMoKXtyZXR1cm4g'@; put 'dGhpcy5leHBhbmRhYmxlJiYhdGhpcy5leHBhbmRlZCYmdGhpcy5mb2N1c2VkfWdldCBsYWJlbGxlZEJ5SWQoKXtyZXR1cm4gdGhpcy5zdGFja0Jsb2NrVGl0bGUuaWR9Z2V0IGhlYWRpbmdMZXZlbCgpe3JldHVybiB0aGlzLmFyaWFMZXZlbD90aGlzLmFyaWFMZXZlbCsiIjp0aGlzLnBhcmVu'@; put 'dD8iNCI6IjMifWdldCBjYXJldERpcmVjdGlvbigpe3JldHVybiB0aGlzLmV4cGFuZGVkPyJkb3duIjoicmlnaHQifWdldCByb2xlKCl7cmV0dXJuIHRoaXMuZXhwYW5kYWJsZT8iYnV0dG9uIjpudWxsfWdldCB0YWJJbmRleCgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/IjAiOm51bGx9Z2V0'@; put 'IGFyaWFFeHBhbmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/dGhpcy5leHBhbmRlZD8idHJ1ZSI6ImZhbHNlIjpudWxsfW5nT25Jbml0KCl7dGhpcy5fZnVsbHlJbml0aWFsaXplZD0hMH1hZGRDaGlsZCgpe3RoaXMuZXhwYW5kYWJsZT0hMH10b2dnbGVFeHBhbmQodCl7V01lKHQpfHx0'@; put 'aGlzLmV4cGFuZGFibGUmJih0aGlzLmV4cGFuZGVkPSF0aGlzLmV4cGFuZGVkLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKSl9Z2V0U3RhY2tDaGlsZHJlbklkKCl7cmV0dXJuIHRoaXMuZXhwYW5kZWQ/YGNsci1zdGFjay1jaGlsZHJlbi0ke3RoaXMudW5pcXVlSWR9'@; put 'YDpudWxsfXByZXZlbnREZWZhdWx0SWZOb3RJbnB1dEV2ZW50KHQpe1dNZSh0KXx8dC5wcmV2ZW50RGVmYXVsdCgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShuLDEyKSx6ZShpbCkpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9y'@; put 'czpbWyJjbHItc3RhY2stYmxvY2siXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxyLGkpe2lmKDEmdCYmRmEoaSxrYWUsNSksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci5zdGFja0Jsb2NrVGl0bGU9by5maXJzdCl9fSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxy'@; put 'KXsyJnQmJihScigicm9sZSIsImhlYWRpbmciKSgiYXJpYS1sZXZlbCIsci5oZWFkaW5nTGV2ZWwpLHdyKCJzdGFjay1ibG9jayIsITApKCJzdGFjay1ibG9jay1leHBhbmRlZCIsci5leHBhbmRlZCkoInN0YWNrLWJsb2NrLWV4cGFuZGFibGUiLHIuZXhwYW5kYWJsZSkoInN0YWNrLWJsb2Nr'@; put 'LWNoYW5nZWQiLHIuZ2V0Q2hhbmdlZFZhbHVlKSgib24tZm9jdXMiLHIub25TdGFja0xhYmVsRm9jdXMpKX0saW5wdXRzOntleHBhbmRlZDpbMCwiY2xyU2JFeHBhbmRlZCIsImV4cGFuZGVkIl0sZXhwYW5kYWJsZTpbMCwiY2xyU2JFeHBhbmRhYmxlIiwiZXhwYW5kYWJsZSJdLGFyaWFMZXZl'@; put 'bDpbMCwiY2xyU3RhY2tWaWV3TGV2ZWwiLCJhcmlhTGV2ZWwiXSxzZXRDaGFuZ2VkVmFsdWU6WzAsImNsclNiTm90aWZ5Q2hhbmdlIiwic2V0Q2hhbmdlZFZhbHVlIl19LG91dHB1dHM6e2V4cGFuZGVkQ2hhbmdlOiJjbHJTYkV4cGFuZGVkQ2hhbmdlIn0sc3RhbmRhbG9uZTohMSxuZ0NvbnRl'@; put 'bnRTZWxlY3RvcnM6cjl0LGRlY2xzOjksdmFyczo5LGNvbnN0czpbWzEsInN0YWNrLWJsb2NrLWxhYmVsIiwzLCJjbGljayIsImtleXVwLmVudGVyIiwia2V5dXAuc3BhY2UiLCJrZXlkb3duLnNwYWNlIiwiZm9jdXMiLCJibHVyIiwiaWQiXSxbInNoYXBlIiwiYW5nbGUiLCJjbGFzcyIsInN0'@; put 'YWNrLWJsb2NrLWNhcmV0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzEsInN0YWNrLXZpZXcta2V5Il0sWzEsInN0YWNrLWJsb2NrLWNvbnRlbnQiXSxbMSwic3RhY2stY2hpbGRyZW4iLDMsImNsckV4cGFuZFRyaWdnZXIiXSxbInJvbGUiLCJyZWdpb24i'@; put 'LDMsImhlaWdodCIsNCwibmdJZiJdLFsic2hhcGUiLCJhbmdsZSIsMSwic3RhY2stYmxvY2stY2FyZXQiXSxbMSwiY2xyLXNyLW9ubHkiXSxbInJvbGUiLCJyZWdpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbyhuOXQpLEooMCwiZGl2IiwwKSx3dCgiY2xpY2siLGZ1bmN0'@; put 'aW9uKG8pe3JldHVybiByLnRvZ2dsZUV4cGFuZChvKX0pKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24obyl7cmV0dXJuIHIudG9nZ2xlRXhwYW5kKG8pfSkoImtleXVwLnNwYWNlIixmdW5jdGlvbihvKXtyZXR1cm4gci50b2dnbGVFeHBhbmQobyl9KSgia2V5ZG93bi5zcGFjZSIsZnVuY3Rpb24o'@; put 'byl7cmV0dXJuIHIucHJldmVudERlZmF1bHRJZk5vdElucHV0RXZlbnQobyl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHIuZm9jdXNlZD0hMH0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiByLmZvY3VzZWQ9ITF9KSxZbigxLGk5dCwxLDEsImNkcy1pY29uIiwxKSgyLG85dCwyLDEs'@; put 'InNwYW4iLDIpLEooMywiZGl2IiwzKSxXcig0KSx0ZSgpLEooNSwiZGl2Iiw0KSxXcig2LDEpLHRlKCkoKSxKKDcsImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiIsNSksWW4oOCxhOXQsMiw0LCJkaXYiLDYpLHRlKCkpLDImdCYmKHJ0KCJpZCIsci51bmlxdWVJZCksUnIoInJvbGUiLHIucm9s'@; put 'ZSkoInRhYmluZGV4IixyLnRhYkluZGV4KSgiYXJpYS1leHBhbmRlZCIsci5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIixyLmdldFN0YWNrQ2hpbGRyZW5JZCgpKSxpZSgpLHJ0KCJuZ0lmIixyLmV4cGFuZGFibGUpLGllKCkscnQoIm5nSWYiLHIuZ2V0Q2hhbmdlZFZhbHVlKSxpZSg1'@; put 'KSxydCgiY2xyRXhwYW5kVHJpZ2dlciIsci5leHBhbmRlZCksaWUoKSxydCgibmdJZiIsci5leHBhbmRlZCkpfSxkZXBlbmRlbmNpZXM6W1lzLEpzLHp6XSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKTtmdW5jdGlvbiBXTWUobil7Y29uc3QgZT1uPy50YXJnZXQ7cmV0dXJuISFlPy50YWdOYW1l'@; put 'JiZbIklOUFVUIiwiVEVYVEFSRUEiLCJCVVRUT04iLCJBIiwiU0VMRUNUIiwiT1BUSU9OIl0uaW5jbHVkZXMoZS50YWdOYW1lKX1sZXQgUmFlPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlw'@; put 'ZTpuLHNlbGVjdG9yczpbWyJjbHItc3RhY2stdmlldyJdXSxzdGFuZGFsb25lOiExLG5nQ29udGVudFNlbGVjdG9yczpsOXQsZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbMSwic3RhY2stdmlldyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKGZvKHM5dCksV3IoMCksSigxLCJkaXYi'@; put 'LDApLFdyKDIsMSksdGUoKSl9LGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLER5dD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnMock0pfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0p'@; put 'LG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxoZCxXbCx4TWVdfSksbn0pKCkscnc9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuc2VsZWN0YWJsZT0hMSx0aGlzLmVhZ2VyPSEwLHRoaXMuY2hpbGRyZW5GZXRjaGVkPW5ldyBNcn19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0'@; put 'aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y29uc3QgWU1lPXtwcm92aWRlOnJ3LHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTHl0KG4pe3JldHVybiBufHxuZXcgcnd9LGRlcHM6W1tuZXcgdzgsbmV3IHFt'@; put 'LHJ3XV19O2xldCBaTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlPXQsdGhpcy5leHBhbmRTZXJ2aWNlPXIsciYmKHRoaXMuc3Vic2NyaXB0aW9uPXIuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZShpPT57IWkmJnRoaXMucGFyZW50JiYhdC5lYWdl'@; put 'ciYmdC5yZWN1cnNpb24mJnRoaXMucGFyZW50LmNsZWFyQ2hpbGRyZW4oKX0pKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldEFyaWFSb2xlcygpfXNob3VsZFJlbmRlcigpe3JldHVybiB0aGlzLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24mJih0aGlzLmZlYXR1cmVzU2VydmljZS5l'@; put 'YWdlcnx8IXRoaXMuZXhwYW5kU2VydmljZXx8dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkKX1nZXRDb250ZXh0KHQpe3JldHVybnskaW1wbGljaXQ6dC5tb2RlbCxjbHJNb2RlbDp0fX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNj'@; put 'cmliZSgpfXNldEFyaWFSb2xlcygpe3RoaXMucm9sZT10aGlzLnBhcmVudD8iZ3JvdXAiOm51bGx9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKHJ3KSx6ZShOZiw4KSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1y'@; put 'ZWN1cnNpdmUtY2hpbGRyZW4iXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJlJyKCJyb2xlIixyLnJvbGUpfSxpbnB1dHM6e3BhcmVudDoicGFyZW50IixjaGlsZHJlbjoiY2hpbGRyZW4ifSxzdGFuZGFsb25lOiExLGRlY2xzOjEsdmFyczoxLGNvbnN0czpb'@; put 'WzQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmWW4oMCxmOXQsMiwxLCJuZy1jb250YWluZXIiLDApLDImdCYmcnQoIm5nSWYiLHIuc2hvdWxk'@; put 'UmVuZGVyKCkpfSxkZXBlbmRlbmNpZXM6W1JmLFlzLElmXSxlbmNhcHN1bGF0aW9uOjJ9KSxufSkoKTt2YXIgZzE9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5VTlNFTEVDVEVEPTBdPSJVTlNFTEVDVEVEIixuW24uU0VMRUNURUQ9MV09IlNFTEVDVEVEIixuW24uSU5ERVRFUk1JTkFURT0yXT0i'@; put 'SU5ERVRFUk1JTkFURSIsbn0oZzF8fHt9KTtjbGFzcyBHTWV7Y29uc3RydWN0b3IoKXt0aGlzLmxvYWRpbmckPW5ldyAkaSghMSksdGhpcy5zZWxlY3RlZD1uZXcgJGkoZzEuVU5TRUxFQ1RFRCksdGhpcy5fbG9hZGluZz0hMX1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLl9sb2FkaW5nfXNl'@; put 'dCBsb2FkaW5nKGUpe3RoaXMuX2xvYWRpbmc9ZSx0aGlzLmxvYWRpbmckLm5leHQoZSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuISghdGhpcy5fZGlzYWJsZWQmJiF0aGlzLnBhcmVudD8uZGlzYWJsZWQpfXNldCBkaXNhYmxlZChlKXt0aGlzLl9kaXNhYmxlZD1lfWRlc3Ryb3koKXt0aGlzLnNl'@; put 'bGVjdGVkLmNvbXBsZXRlKCl9c2V0U2VsZWN0ZWQoZSx0LHIpe2UhPT10aGlzLnNlbGVjdGVkLnZhbHVlJiYodGhpcy5zZWxlY3RlZC5uZXh0KGUpLHImJmUhPT1nMS5JTkRFVEVSTUlOQVRFJiZ0aGlzLmNoaWxkcmVuJiZ0aGlzLmNoaWxkcmVuLmZvckVhY2goaT0+e2kuZGlzYWJsZWR8fGku'@; put 'c2V0U2VsZWN0ZWQoZSwhMSwhMCl9KSx0JiZ0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuX3VwZGF0ZVNlbGVjdGlvbkZyb21DaGlsZHJlbigpKX10b2dnbGVTZWxlY3Rpb24oZSl7dGhpcy5kaXNhYmxlZHx8dGhpcy5zZXRTZWxlY3RlZCh0aGlzLnNlbGVjdGVkLnZhbHVlPT09ZzEuU0VMRUNU'@; put 'RUQ/ZzEuVU5TRUxFQ1RFRDpnMS5TRUxFQ1RFRCwhMCxlKX1fdXBkYXRlU2VsZWN0aW9uRnJvbUNoaWxkcmVuKCl7Y29uc3QgZT10aGlzLmNvbXB1dGVTZWxlY3Rpb25TdGF0ZUZyb21DaGlsZHJlbigpO2UhPT10aGlzLnNlbGVjdGVkLnZhbHVlJiYodGhpcy5zZWxlY3RlZC5uZXh0KGUpLHRo'@; put 'aXMucGFyZW50JiZ0aGlzLnBhcmVudC5fdXBkYXRlU2VsZWN0aW9uRnJvbUNoaWxkcmVuKCkpfWNvbXB1dGVTZWxlY3Rpb25TdGF0ZUZyb21DaGlsZHJlbigpe2xldCBlPSExLHQ9ITE7Zm9yKGNvbnN0IHIgb2YgdGhpcy5jaGlsZHJlbilzd2l0Y2goci5zZWxlY3RlZC52YWx1ZSl7Y2FzZSBn'@; put 'MS5JTkRFVEVSTUlOQVRFOmlmKHIuZGlzYWJsZWQpY29udGludWU7cmV0dXJuIGcxLklOREVURVJNSU5BVEU7Y2FzZSBnMS5TRUxFQ1RFRDppZihlPSEwLHQpcmV0dXJuIGcxLklOREVURVJNSU5BVEU7YnJlYWs7ZGVmYXVsdDppZih0PSEwLGUpcmV0dXJuIGcxLklOREVURVJNSU5BVEV9cmV0'@; put 'dXJuIGU/dD9nMS5VTlNFTEVDVEVEOmcxLlNFTEVDVEVEOmcxLlVOU0VMRUNURUR9fWNsYXNzIGdXIGV4dGVuZHMgR01le2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKCksdGhpcy5nZXRDaGlsZHJlbj1yLHRoaXMuZmVhdHVyZXNTZXJ2aWNlPWksdGhpcy5jaGlsZHJlbkZldGNoZWQ9ITEs'@; put 'dGhpcy5fY2hpbGRyZW49W10sdGhpcy5tb2RlbD1lLHRoaXMucGFyZW50PXR9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuZmV0Y2hDaGlsZHJlbigpLHRoaXMuX2NoaWxkcmVufXNldCBjaGlsZHJlbihlKXt0aGlzLl9jaGlsZHJlbj1lfWRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbiYm'@; put 'dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxzdXBlci5kZXN0cm95KCl9Y2xlYXJDaGlsZHJlbigpe3RoaXMuX2NoaWxkcmVuLmZvckVhY2goZT0+ZS5kZXN0cm95KCkpLGRlbGV0ZSB0aGlzLl9jaGlsZHJlbix0aGlzLmNoaWxkcmVuRmV0Y2hlZD0hMX1mZXRjaENoaWxkcmVuKCl7'@; put 'aWYodGhpcy5jaGlsZHJlbkZldGNoZWQpcmV0dXJuO2NvbnN0IGU9dGhpcy5nZXRDaGlsZHJlbih0aGlzLm1vZGVsKTshZnVuY3Rpb24gT3l0KG4pe3JldHVybiBuJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi50aGVufShlKT94SShlKT8odGhpcy5sb2FkaW5nPSEwLHRoaXMuc3Vic2NyaXB0aW9u'@; put 'PWUuc3Vic2NyaWJlKHQ9Pnt0aGlzLl9jaGlsZHJlbj10aGlzLndyYXBDaGlsZHJlbih0KSx0aGlzLmxvYWRpbmc9ITF9KSk6dGhpcy5fY2hpbGRyZW49ZT90aGlzLndyYXBDaGlsZHJlbihlKTpbXToodGhpcy5sb2FkaW5nPSEwLGUudGhlbih0PT57dGhpcy5fY2hpbGRyZW49dGhpcy53cmFw'@; put 'Q2hpbGRyZW4odCksdGhpcy5sb2FkaW5nPSExfSkpLHRoaXMuY2hpbGRyZW5GZXRjaGVkPSEwLHRoaXMuZmVhdHVyZXNTZXJ2aWNlJiZ0aGlzLmZlYXR1cmVzU2VydmljZS5jaGlsZHJlbkZldGNoZWQubmV4dCgpfXdyYXBDaGlsZHJlbihlKXtyZXR1cm4gZS5tYXAodD0+bmV3IGdXKHQsdGhp'@; put 'cyx0aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKSl9fWxldCAkTWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSl7dGhpcy50ZW1wbGF0ZT10LHRoaXMuZmVhdHVyZXNTZXJ2aWNlPXIsdGhpcy5jZHI9aX1uZ09uQ2hhbmdlcygpe2xldCB0O3Q9QXJyYXkuaXNB'@; put 'cnJheSh0aGlzLm5vZGVzKT90aGlzLm5vZGVzLm1hcChyPT5uZXcgZ1cocixudWxsLHRoaXMuZ2V0Q2hpbGRyZW4sdGhpcy5mZWF0dXJlc1NlcnZpY2UpKTpbbmV3IGdXKHRoaXMubm9kZXMsbnVsbCx0aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKV0sdGhpcy5jaGlsZHJl'@; put 'bkZldGNoU3Vic2NyaXB0aW9ufHwodGhpcy5jaGlsZHJlbkZldGNoU3Vic2NyaXB0aW9uPXRoaXMuZmVhdHVyZXNTZXJ2aWNlLmNoaWxkcmVuRmV0Y2hlZC5waXBlKE5iKDApKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCl9KSksdGhpcy5mZWF0dXJlc1NlcnZpY2Uu'@; put 'cmVjdXJzaW9uPXt0ZW1wbGF0ZTp0aGlzLnRlbXBsYXRlLHJvb3Q6dH19bmdPbkRlc3Ryb3koKXt0aGlzLmNoaWxkcmVuRmV0Y2hTdWJzY3JpcHRpb24mJnRoaXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7'@; put 'cmV0dXJuIG5ldyh0fHxuKSh6ZShGYyksemUocncpLHplKFVsKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsImNsclJlY3Vyc2l2ZUZvciIsIiIsImNsclJlY3Vyc2l2ZUZvck9mIiwiIl1dLGlucHV0czp7bm9kZXM6WzAsImNsclJlY3Vyc2l2ZUZvck9mIiwibm9k'@; put 'ZXMiXSxnZXRDaGlsZHJlbjpbMCwiY2xyUmVjdXJzaXZlRm9yR2V0Q2hpbGRyZW4iLCJnZXRDaGlsZHJlbiJdfSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltpdV19KSxufSkoKSxJYWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZvY3VzUmVxdWVzdD1uZXcgTXIsdGhpcy5f'@; put 'Zm9jdXNDaGFuZ2U9bmV3IE1yfWdldCBmb2N1c1JlcXVlc3QoKXtyZXR1cm4gdGhpcy5fZm9jdXNSZXF1ZXN0LmFzT2JzZXJ2YWJsZSgpfWdldCBmb2N1c0NoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c0NoYW5nZS5hc09ic2VydmFibGUoKX1mb2N1c05vZGUodCl7dCYmdGhpcy5fZm9jdXNS'@; put 'ZXF1ZXN0Lm5leHQodC5ub2RlSWQpfWJyb2FkY2FzdEZvY3VzZWROb2RlKHQpe3RoaXMuZm9jdXNlZE5vZGVJZCE9PXQmJih0aGlzLmZvY3VzZWROb2RlSWQ9dCx0aGlzLl9mb2N1c0NoYW5nZS5uZXh0KHQpKX1mb2N1c1BhcmVudCh0KXt0JiZ0aGlzLmZvY3VzTm9kZSh0LnBhcmVudCl9Zm9j'@; put 'dXNGaXJzdFZpc2libGVOb2RlKCl7dGhpcy5mb2N1c05vZGUodGhpcy5yb290Tm9kZU1vZGVscyYmdGhpcy5yb290Tm9kZU1vZGVsc1swXSl9Zm9jdXNMYXN0VmlzaWJsZU5vZGUoKXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRMYXN0VmlzaWJsZUluVHJlZSgpKX1mb2N1c05vZGVBYm92ZSh0'@; put 'KXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmROb2RlQWJvdmUodCkpfWZvY3VzTm9kZUJlbG93KHQpe3RoaXMuZm9jdXNOb2RlKHRoaXMuZmluZE5vZGVCZWxvdyh0KSl9Zm9jdXNOb2RlU3RhcnRzV2l0aCh0LHIpe3RoaXMuZm9jdXNOb2RlKHRoaXMuZmluZENsb3Nlc3ROb2RlU3RhcnRzV2l0'@; put 'aCh0LHIpKX1maW5kU2libGluZ3ModCl7cmV0dXJuIHQucGFyZW50P3QucGFyZW50LmNoaWxkcmVuOnRoaXMucm9vdE5vZGVNb2RlbHN9ZmluZExhc3RWaXNpYmxlSW5Ob2RlKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQuZXhwYW5kZWQmJnQuY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IHI9'@; put 'dC5jaGlsZHJlbjtyZXR1cm4gdGhpcy5maW5kTGFzdFZpc2libGVJbk5vZGUocltyLmxlbmd0aC0xXSl9cmV0dXJuIHR9ZmluZE5leHRGb2N1c2FibGUodCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLmZpbmRTaWJsaW5ncyh0KSxpPXIuaW5kZXhPZih0KTtyZXR1cm4gaTxyLmxl'@; put 'bmd0aC0xP3JbaSsxXTppPT09ci5sZW5ndGgtMT90aGlzLmZpbmROZXh0Rm9jdXNhYmxlKHQucGFyZW50KTpudWxsfWZpbmRMYXN0VmlzaWJsZUluVHJlZSgpe3JldHVybiB0aGlzLmZpbmRMYXN0VmlzaWJsZUluTm9kZSh0aGlzLnJvb3ROb2RlTW9kZWxzJiZ0aGlzLnJvb3ROb2RlTW9kZWxz'@; put 'Lmxlbmd0aCYmdGhpcy5yb290Tm9kZU1vZGVsc1t0aGlzLnJvb3ROb2RlTW9kZWxzLmxlbmd0aC0xXSl9ZmluZE5vZGVBYm92ZSh0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCByPXRoaXMuZmluZFNpYmxpbmdzKHQpLGk9ci5pbmRleE9mKHQpO3JldHVybiAwPT09aT90LnBhcmVudDppPjA/'@; put 'dGhpcy5maW5kTGFzdFZpc2libGVJbk5vZGUocltpLTFdKTpudWxsfWZpbmROb2RlQmVsb3codCl7cmV0dXJuIHQ/dC5leHBhbmRlZCYmdC5jaGlsZHJlbi5sZW5ndGg+MD90LmNoaWxkcmVuWzBdOnRoaXMuZmluZE5leHRGb2N1c2FibGUodCk6bnVsbH1maW5kRGVzY2VuZGVudE5vZGVTdGFy'@; put 'dHNXaXRoKHQscil7aWYoci5leHBhbmRlZCYmci5jaGlsZHJlbi5sZW5ndGg+MClmb3IoY29uc3QgaSBvZiByLmNoaWxkcmVuKXtjb25zdCBvPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKHQsaSk7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH1maW5kU2libGluZ05vZGVTdGFydHNXaXRoKHQs'@; put 'cil7Y29uc3QgaT10aGlzLmZpbmRTaWJsaW5ncyhyKTtmb3IobGV0IGE9aS5pbmRleE9mKHIpKzE7YTxpLmxlbmd0aDthKyspe2NvbnN0IHU9dGhpcy5maW5kTm9kZVN0YXJ0c1dpdGgodCxpW2FdKTtpZih1KXJldHVybiB1fXJldHVybiBudWxsfWZpbmRSb290Tm9kZVN0YXJ0c1dpdGgodCxy'@; put 'KXtmb3IoY29uc3QgaSBvZiB0aGlzLnJvb3ROb2RlTW9kZWxzKXtpZihyLnBhcmVudCYmci5wYXJlbnQ9PT1pKWNvbnRpbnVlO2NvbnN0IG89dGhpcy5maW5kTm9kZVN0YXJ0c1dpdGgodCxpKTtpZihvKXJldHVybiBvfXJldHVybiBudWxsfWZpbmROb2RlU3RhcnRzV2l0aCh0LHIpe3JldHVy'@; put 'biByP3IudGV4dENvbnRlbnQuc3RhcnRzV2l0aCh0KT9yOnRoaXMuZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aCh0LHIpOm51bGx9ZmluZENsb3Nlc3ROb2RlU3RhcnRzV2l0aCh0LHIpe2lmKCFyKXJldHVybiBudWxsO2NvbnN0IGk9dGhpcy5maW5kRGVzY2VuZGVudE5vZGVTdGFydHNX'@; put 'aXRoKHQscik7aWYoaSlyZXR1cm4gaTtjb25zdCBvPXRoaXMuZmluZFNpYmxpbmdOb2RlU3RhcnRzV2l0aCh0LHIpO3JldHVybiBvfHwodGhpcy5maW5kUm9vdE5vZGVTdGFydHNXaXRoKHQscil8fHRoaXMuZmluZE5vZGVTdGFydHNXaXRoKHQsci5wYXJlbnQpKX19cmV0dXJuIG4uXHUwMjc1'@; put 'ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCk7Y2xhc3MgTnl0IGV4dGVuZHMgR01le2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5wYXJlbnQ9ZSxlJiZlLl9hZGRDaGlsZCh0aGlz'@; put 'KSx0aGlzLmNoaWxkcmVuPVtdfWRlc3Ryb3koKXt0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuX3JlbW92ZUNoaWxkKHRoaXMpLHN1cGVyLmRlc3Ryb3koKX1fYWRkQ2hpbGQoZSl7dGhpcy5jaGlsZHJlbi5wdXNoKGUpfV9yZW1vdmVDaGlsZChlKXtjb25zdCB0PXRoaXMuY2hpbGRyZW4uaW5k'@; put 'ZXhPZihlKTt0Pi0xJiZ0aGlzLmNoaWxkcmVuLnNwbGljZSh0LDEpfX1sZXQgZDc9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsPXR9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhY3RpdmUiKX1hY3RpdmF0'@; put 'ZSgpe3RoaXMuZWwubmF0aXZlRWxlbWVudCYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrJiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUobm8pKX0sbi5cdTAyNzVkaXI9JHIoe3R5cGU6'@; put 'bixzZWxlY3RvcnM6W1siIiw4LCJjbHItdHJlZW5vZGUtbGluayJdXSxzdGFuZGFsb25lOiExfSksbn0pKCksTzM9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0LHIsaSxvLGEsbCx1LGcpe3RoaXMucGxhdGZvcm1JZD10LHRoaXMuZmVhdHVyZXNTZXJ2aWNlPWksdGhpcy5leHBhbmRTZXJ2'@; put 'aWNlPW8sdGhpcy5jb21tb25TdHJpbmdzPWEsdGhpcy5mb2N1c01hbmFnZXI9bCx0aGlzLmVsZW1lbnRSZWY9dSx0aGlzLnNlbGVjdGVkQ2hhbmdlPW5ldyBLcighMSksdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgS3IsdGhpcy5TVEFURVM9ZzEsdGhpcy5pc01vZGVsTG9hZGluZz0hMSx0aGlz'@; put 'Lm5vZGVJZD1QaCgpLHRoaXMuY29udGVudENvbnRhaW5lclRhYmluZGV4PS0xLHRoaXMuc2tpcEVtaXRDaGFuZ2U9ITEsdGhpcy50eXBlQWhlYWRLZXlCdWZmZXI9IiIsdGhpcy50eXBlQWhlYWRLZXlFdmVudD1uZXcgTXIsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX21vZGVsPWkucmVj'@; put 'dXJzaW9uP2cudmlldz9nLnZpZXcuY29udGV4dC5jbHJNb2RlbDpnLl9sVmlld1s4XS5jbHJNb2RlbDpuZXcgTnl0KHI/ci5fbW9kZWw6bnVsbCksdGhpcy5fbW9kZWwubm9kZUlkPXRoaXMubm9kZUlkfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9tb2RlbC5kaXNhYmxlZH1zZXQgZGlz'@; put 'YWJsZWQodCl7dGhpcy5fbW9kZWwuZGlzYWJsZWQ9dH1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fbW9kZWwuc2VsZWN0ZWQudmFsdWV9c2V0IHNlbGVjdGVkKHQpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGU9ITAsKG51bGw9PT10fHx0eXBlb2YgdD4idSIpJiYodD1nMS5V'@; put 'TlNFTEVDVEVEKSwiYm9vbGVhbiI9PXR5cGVvZiB0JiYodD10P2cxLlNFTEVDVEVEOmcxLlVOU0VMRUNURUQpLHRoaXMuc2tpcEVtaXRDaGFuZ2U9ITAsdGhpcy5fbW9kZWwuc2V0U2VsZWN0ZWQodCx0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlcix0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdl'@; put 'ciksdGhpcy5za2lwRW1pdENoYW5nZT0hMX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkfXNldCBleHBhbmRlZCh0KXt0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9dH1zZXQgY2xyRm9yVHlwZUFoZWFkKHQpe3RoaXMuX21vZGVsLnRleHRDb250'@; put 'ZW50PXFNZSh0fHx0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCl9Z2V0IGFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLmlzU2VsZWN0YWJsZSgpP3RoaXMuX21vZGVsLnNlbGVjdGVkLnZhbHVlPT09ZzEuU0VMRUNURUQ6ISF0aGlzLnRyZWVOb2RlTGluaz8uYWN0'@; put 'aXZlfHxudWxsfWdldCB0cmVlTm9kZUxpbmsoKXtyZXR1cm4gdGhpcy50cmVlTm9kZUxpbmtMaXN0JiZ0aGlzLnRyZWVOb2RlTGlua0xpc3QuZmlyc3R9Z2V0IGlzUGFyZW50KCl7cmV0dXJuIHRoaXMuX21vZGVsLmNoaWxkcmVuJiZ0aGlzLl9tb2RlbC5jaGlsZHJlbi5sZW5ndGg+MH1uZ09u'@; put 'SW5pdCgpe3RoaXMuX21vZGVsLmV4cGFuZGVkPXRoaXMuZXhwYW5kZWQsdGhpcy5fbW9kZWwuZGlzYWJsZWQ9dGhpcy5kaXNhYmxlZCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9tb2RlbC5zZWxlY3RlZC5waXBlKHN1KCgpPT4hdGhpcy5za2lwRW1pdENoYW5nZSkpLnN1YnNjcmli'@; put 'ZSh0PT57dGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHQpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRDaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodCksdGhpcy5fbW9kZWwuZXhwYW5kZWQ9dH0pKSx0aGlz'@; put 'LnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmZvY3VzTWFuYWdlci5mb2N1c1JlcXVlc3Quc3Vic2NyaWJlKHQ9Pnt0aGlzLm5vZGVJZD09PXQmJnRoaXMuZm9jdXNUcmVlTm9kZSgpfSksdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNDaGFuZ2Uuc3Vic2NyaWJlKHQ9Pnt0aGlzLmNoZWNrVGFiSW5k'@; put 'ZXgodCl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5fbW9kZWwubG9hZGluZyQucGlwZShOYigwKSkuc3Vic2NyaWJlKHQ9PnRoaXMuaXNNb2RlbExvYWRpbmc9dCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudHlwZUFoZWFkS2V5'@; put 'RXZlbnQucGlwZShOYigyMDApKS5zdWJzY3JpYmUodD0+e3RoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZVN0YXJ0c1dpdGgodCx0aGlzLl9tb2RlbCksdGhpcy50eXBlQWhlYWRLZXlCdWZmZXI9IiJ9KSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fbW9kZWwudGV4dENvbnRlbnR8fCh0aGlz'@; put 'Ll9tb2RlbC50ZXh0Q29udGVudD1xTWUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX21vZGVsLmRlc3Ryb3koKSx0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfWlzRXhwYW5kYWJsZSgp'@; put 'e3JldHVybiB0eXBlb2YgdGhpcy5leHBhbmRhYmxlPCJ1Ij90aGlzLmV4cGFuZGFibGU6ISF0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kYWJsZXx8dGhpcy5pc1BhcmVudH1pc1NlbGVjdGFibGUoKXtyZXR1cm4gdGhpcy5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZX1mb2N1c1RyZWVOb2Rl'@; put 'KCl7Y29uc3QgdD10aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudDtIYyh0aGlzLnBsYXRmb3JtSWQpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09dCYmKHRoaXMuc2V0VGFiSW5kZXgoMCksdC5mb2N1cygpLHQuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0Iixpbmxp'@; put 'bmU6Im5lYXJlc3QifSkpfWJyb2FkY2FzdEZvY3VzT25Db250YWluZXIoKXt0aGlzLmZvY3VzTWFuYWdlci5icm9hZGNhc3RGb2N1c2VkTm9kZSh0aGlzLm5vZGVJZCl9b25LZXlEb3duKHQpe3N3aXRjaChqb2UodCksdG0odC5rZXkpKXtjYXNlIE1vLkFycm93VXA6dGhpcy5mb2N1c01hbmFn'@; put 'ZXIuZm9jdXNOb2RlQWJvdmUodGhpcy5fbW9kZWwpO2JyZWFrO2Nhc2UgTW8uQXJyb3dEb3duOnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTticmVhaztjYXNlIE1vLkFycm93UmlnaHQ6dGhpcy5leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpO2JyZWFrO2Nh'@; put 'c2UgTW8uQXJyb3dMZWZ0OnRoaXMuY29sbGFwc2VPckZvY3VzUGFyZW50KCk7YnJlYWs7Y2FzZSBNby5Ib21lOnQucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzTWFuYWdlci5mb2N1c0ZpcnN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIE1vLkVuZDp0LnByZXZlbnREZWZhdWx0KCksdGhp'@; put 'cy5mb2N1c01hbmFnZXIuZm9jdXNMYXN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIE1vLkVudGVyOnRoaXMudG9nZ2xlRXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpO2JyZWFrO2Nhc2UgTW8uU3BhY2U6Y2FzZSBNby5TcGFjZWJhcjp0LnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVFeHBh'@; put 'bmRPclRyaWdnZXJEZWZhdWx0KCk7YnJlYWs7ZGVmYXVsdDppZih0aGlzLl9tb2RlbC50ZXh0Q29udGVudCYmZnVuY3Rpb24gU3Z0KG4pe2NvbnN0IGU9bi5rZXk7cmV0dXJuIGUudG9Mb3dlckNhc2UoKSE9PWUudG9VcHBlckNhc2UoKXx8ZT49IjAiJiZlPD0iOSJ9KHQpKXJldHVybiB0aGlz'@; put 'LnR5cGVBaGVhZEtleUJ1ZmZlcis9dC5rZXksdm9pZCB0aGlzLnR5cGVBaGVhZEtleUV2ZW50Lm5leHQodGhpcy50eXBlQWhlYWRLZXlCdWZmZXIpfXRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIifXNldFRhYkluZGV4KHQpe3RoaXMuY29udGVudENvbnRhaW5lclRhYmluZGV4PXQsdGhpcy5j'@; put 'b250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsdC50b1N0cmluZygpKX1jaGVja1RhYkluZGV4KHQpe0hjKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMubm9kZUlkIT09dCYmLTEhPT10aGlzLmNvbnRlbnRDb250YWluZXJUYWJpbmRleCYmdGhpcy5z'@; put 'ZXRUYWJJbmRleCgtMSl9dG9nZ2xlRXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLmlzRXhwYW5kYWJsZSgpJiYhdGhpcy5pc1NlbGVjdGFibGUoKT90aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9IXRoaXMuZXhwYW5kZWQ6dGhpcy50cmlnZ2VyRGVmYXVs'@; put 'dEFjdGlvbigpKX1leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLmV4cGFuZGVkP3RoaXMuaXNQYXJlbnQmJnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTp0aGlzLmlzRXhwYW5kYWJsZSgpJiYodGhpcy5leHBhbmRTZXJ2'@; put 'aWNlLmV4cGFuZGVkPSEwKSl9Y29sbGFwc2VPckZvY3VzUGFyZW50KCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuZXhwYW5kZWQ/dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSExOnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzUGFyZW50KHRoaXMuX21vZGVsKSl9dHJpZ2dlckRlZmF1bHRBY3Rp'@; put 'b24oKXt0aGlzLnRyZWVOb2RlTGluaz90aGlzLnRyZWVOb2RlTGluay5hY3RpdmF0ZSgpOnRoaXMuaXNTZWxlY3RhYmxlKCkmJnRoaXMuX21vZGVsLnRvZ2dsZVNlbGVjdGlvbih0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlcil9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1'@; put 'cm4gbmV3KHR8fG4pKHplKGxkKSx6ZShuLDEyKSx6ZShydyksemUoTmYpLHplKGlsKSx6ZShJYWUpLHplKG5vKSx6ZShNbCkpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItdHJlZS1ub2RlIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixpKXtpZigxJnQm'@; put 'JkZhKGksZDcsNCksMiZ0KXtsZXQgbztjaShvPXVpKCkpJiYoci50cmVlTm9kZUxpbmtMaXN0PW8pfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQscil7aWYoMSZ0JiZXbyhwOXQsNyxubyksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci5jb250ZW50Q29udGFpbmVyPWkuZmlyc3QpfX0saG9zdFZh'@; put 'cnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxyKXsyJnQmJndyKCJjbHItdHJlZS1ub2RlIiwhMCkoImRpc2FibGVkIixyLl9tb2RlbC5kaXNhYmxlZCl9LGlucHV0czp7ZXhwYW5kYWJsZTpbMCwiY2xyRXhwYW5kYWJsZSIsImV4cGFuZGFibGUiXSxkaXNhYmxlZDpbMCwiY2xyRGlzYWJs'@; put 'ZWQiLCJkaXNhYmxlZCJdLHNlbGVjdGVkOlswLCJjbHJTZWxlY3RlZCIsInNlbGVjdGVkIl0sZXhwYW5kZWQ6WzAsImNsckV4cGFuZGVkIiwiZXhwYW5kZWQiXSxjbHJGb3JUeXBlQWhlYWQ6ImNsckZvclR5cGVBaGVhZCJ9LG91dHB1dHM6e3NlbGVjdGVkQ2hhbmdlOiJjbHJTZWxlY3RlZENo'@; put 'YW5nZSIsZXhwYW5kZWRDaGFuZ2U6ImNsckV4cGFuZGVkQ2hhbmdlIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW1lNZSxOZix7cHJvdmlkZTpFRCx1c2VFeGlzdGluZzpOZn1dKV0sbmdDb250ZW50U2VsZWN0b3JzOm05dCxkZWNsczoxMix2YXJzOjEyLGNvbnN0czpbWyJjb250ZW50'@; put 'Q29udGFpbmVyIiwiIl0sWyJ0cmVlbm9kZUNvbnRlbnQiLCIiXSxbInJvbGUiLCJ0cmVlaXRlbSIsInRhYmluZGV4IiwiLTEiLDEsImNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXIiLDMsImtleWRvd24iLCJmb2N1cyJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwidHlwZSIsImJ1dHRv'@; put 'biIsInRhYmluZGV4IiwiLTEiLCJjbGFzcyIsImNsci10cmVlbm9kZS1jYXJldCIsMywiZGlzYWJsZWQiLCJjbGljayIsImZvY3VzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY2hlY2tib3gtd3Jh'@; put 'cHBlciBjbHItdHJlZW5vZGUtY2hlY2tib3giLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXRyZWVub2RlLWNvbnRlbnQiLDMsIm1vdXNldXAiLDQsIm5nSWYiXSxbMSwiY2xyLXRyZWVub2RlLWNoaWxkcmVuIl0sWzMsInBhcmVudCJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwidHlwZSIsImJ1'@; put 'dHRvbiIsInRhYmluZGV4IiwiLTEiLDEsImNsci10cmVlbm9kZS1jYXJldCIsMywiY2xpY2siLCJmb2N1cyIsImRpc2FibGVkIl0sWyJzaGFwZSIsImFuZ2xlIiwxLCJjbHItdHJlZW5vZGUtY2FyZXQtaWNvbiJdLFsxLCJjbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXIiXSxbMSwiY2xy'@; put 'LXRyZWVub2RlLXNwaW5uZXIiLCJzcGlubmVyIl0sWzEsImNsci1jaGVja2JveC13cmFwcGVyIiwiY2xyLXRyZWVub2RlLWNoZWNrYm94Il0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJ0eXBlIiwiY2hlY2tib3giLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItY2hlY2tib3giLDMsImNoYW5nZSIs'@; put 'ImZvY3VzIiwiaWQiLCJkaXNhYmxlZCIsImNoZWNrZWQiLCJpbmRldGVybWluYXRlIl0sWzEsImNsci1jb250cm9sLWxhYmVsIiwzLCJmb3IiXSxbMywibmdUZW1wbGF0ZU91dGxldCJdLFsxLCJjbHItdHJlZW5vZGUtY29udGVudCIsMywibW91c2V1cCJdLFsiY2xhc3MiLCJjbHItc3Itb25s'@; put 'eSIsNCwibmdJZiJdLFsxLCJjbHItc3Itb25seSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpe2lmKDEmdCl7Y29uc3QgaT13bigpO2ZvKGc5dCksSigwLCJkaXYiLDIsMCksd3QoImtleWRvd24iLGZ1bmN0aW9uKGEpe3JldHVybiBZZShpKSxYZShyLm9uS2V5RG93bihhKSl9KSgiZm9jdXMi'@; put 'LGZ1bmN0aW9uKCl7cmV0dXJuIFllKGkpLFhlKHIuYnJvYWRjYXN0Rm9jdXNPbkNvbnRhaW5lcigpKX0pLFluKDIsdjl0LDIsMiwiYnV0dG9uIiwzKSgzLF85dCwyLDAsImRpdiIsNCkoNCx5OXQsNCw2LCJkaXYiLDUpKDUsYjl0LDIsMSwiZGl2Iiw2KSg2LEM5dCwyLDEsIm5nLXRlbXBsYXRl'@; put 'IixudWxsLDEsY2QpLHRlKCksSig4LCJkaXYiLDcpLFdyKDkpLFdyKDEwLDEpLEl0KDExLCJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIiw4KSx0ZSgpfTImdCYmKHdyKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixyLmRpc2FibGVkKSxScigiYXJpYS1kaXNhYmxlZCIsci5kaXNhYmxlZCko'@; put 'ImFyaWEtZXhwYW5kZWQiLHIuaXNFeHBhbmRhYmxlKCk/ci5leHBhbmRlZDpudWxsKSgiYXJpYS1zZWxlY3RlZCIsci5hcmlhU2VsZWN0ZWQpLGllKDIpLHJ0KCJuZ0lmIixyLmlzRXhwYW5kYWJsZSgpJiYhci5pc01vZGVsTG9hZGluZyYmIXIuZXhwYW5kU2VydmljZS5sb2FkaW5nKSxpZSgp'@; put 'LHJ0KCJuZ0lmIixyLmV4cGFuZFNlcnZpY2UubG9hZGluZ3x8ci5pc01vZGVsTG9hZGluZyksaWUoKSxydCgibmdJZiIsci5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZSksaWUoKSxydCgibmdJZiIsIXIuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUpLGllKDMpLHJ0KCJAdG9nZ2xlQ2hp'@; put 'bGRyZW5BbmltIixyLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ/ImV4cGFuZGVkIjoiY29sbGFwc2VkIiksUnIoInJvbGUiLHIuaXNFeHBhbmRhYmxlKCkmJiFyLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24/Imdyb3VwIjpudWxsKSxpZSgzKSxydCgicGFyZW50IixyLl9tb2RlbCkpfSxkZXBl'@; put 'bmRlbmNpZXM6W1lzLElmLEpzLFpNZV0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbUnAoInRvZ2dsZUNoaWxkcmVuQW5pbSIsW3BoKCJjb2xsYXBzZWQgPT4gZXhwYW5kZWQiLFt2bCh7aGVpZ2h0OjB9KSx5MCgyMDAsdmwoe2hlaWdodDoiKiJ9KSldKSxwaCgiZXhwYW5kZWQg'@; put 'PT4gY29sbGFwc2VkIixbdmwoe2hlaWdodDoiKiJ9KSx5MCgyMDAsdmwoe2hlaWdodDowfSkpXSksa3ooImV4cGFuZGVkIix2bCh7aGVpZ2h0OiIqIiwib3ZlcmZsb3cteSI6InZpc2libGUifSkpLGt6KCJjb2xsYXBzZWQiLHZsKHtoZWlnaHQ6MH0pKV0pXX19KSxufSkoKTtmdW5jdGlvbiBx'@; put 'TWUobil7cmV0dXJuIG4udG9Mb2NhbGVMb3dlckNhc2UoKS50cmltKCl9bGV0IFBwPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGksbyxhKXt0aGlzLmZlYXR1cmVzU2VydmljZT10LHRoaXMuZm9jdXNNYW5hZ2VyU2VydmljZT1yLHRoaXMucmVuZGVyZXI9aSx0aGlzLmVsPW8sdGhp'@; put 'cy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX2lzTXVsdGlTZWxlY3RhYmxlPSExO2NvbnN0IGw9YS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+Smcoby5uYXRpdmVFbGVtZW50LCJmb2N1c2luIikuc3Vic2NyaWJlKHU9Pnt1LnRhcmdldD09PW8ubmF0aXZlRWxlbWVudCYmKHIuZm9jdXNGaXJzdFZp'@; put 'c2libGVOb2RlKCksaS5yZW1vdmVBdHRyaWJ1dGUoby5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIpKX0pKTt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChsKX1zZXQgbGF6eSh0KXt0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlcj0hdH1nZXQgaXNNdWx0aVNlbGVjdGFibGUoKXtyZXR1cm4gdGhp'@; put 'cy5faXNNdWx0aVNlbGVjdGFibGV9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXRSb290Tm9kZXMoKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvb3ROb2Rlcy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuc2V0TXVsdGlTZWxlY3RhYmxlKCksdGhpcy5zZXRSb290Tm9k'@; put 'ZXMoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHQ9PnQudW5zdWJzY3JpYmUoKSl9c2V0TXVsdGlTZWxlY3RhYmxlKCl7dGhpcy5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZSYmdGhpcy5yb290Tm9kZXMubGVuZ3RoPjA/KHRoaXMuX2lzTXVsdGlTZWxl'@; put 'Y3RhYmxlPSEwLHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiYXJpYS1tdWx0aXNlbGVjdGFibGUiLCJ0cnVlIikpOih0aGlzLl9pc011bHRpU2VsZWN0YWJsZT0hMSx0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVs'@; put 'ZW1lbnQsImFyaWEtbXVsdGlzZWxlY3RhYmxlIikpfXNldFJvb3ROb2Rlcygpe3RoaXMuZm9jdXNNYW5hZ2VyU2VydmljZS5yb290Tm9kZU1vZGVscz10aGlzLnJvb3ROb2Rlcy5tYXAodD0+dC5fbW9kZWwpLmZpbHRlcih0PT4hdC5wYXJlbnQpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rp'@; put 'b24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShydyksemUoSWFlKSx6ZShOdCksemUobm8pLHplKGdhKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci10cmVlIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQscixpKXtpZigxJnQmJkZhKGksTzMsNCksMiZ0KXts'@; put 'ZXQgbztjaShvPXVpKCkpJiYoci5yb290Tm9kZXM9byl9fSxob3N0QXR0cnM6WyJ0YWJpbmRleCIsIjAiXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmUnIoInJvbGUiLCJ0cmVlIil9LGlucHV0czp7bGF6eTpbMCwiY2xyTGF6eSIsImxhenkiXX0sc3RhbmRh'@; put 'bG9uZTohMSxmZWF0dXJlczpbYm8oW1lNZSxJYWVdKV0sbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWzMsImNoaWxkcmVuIiw0LCJuZ0lmIl0sWzMsImNoaWxkcmVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oKSxXcigwKSxZbigxLFM5'@; put 'dCwxLDEsImNsci1yZWN1cnNpdmUtY2hpbGRyZW4iLDApKSwyJnQmJihpZSgpLHJ0KCJuZ0lmIixyLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24pKX0sZGVwZW5kZW5jaWVzOltZcyxaTWVdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLEh5dD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7'@; put 'emwuYWRkSWNvbnMock0pfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxXbCxXb2VdfSksbn0pKCksVnl0PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1'@; put 'MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W1J5dCxEeXQsSHl0XX0pLG59KSgpO2NvbnN0IEJ5dD1bImluZm8iLCJ3YXJuaW5nIiwiZGFuZ2VyIiwic3VjY2VzcyIsIm5ldXRyYWwi'@; put 'LCJ1bmtub3duIiwibG9hZGluZyJdO2xldCBEYWU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbW1vblN0cmluZ3M9dCx0aGlzLmRlZmF1bHRJY29uU2hhcGU9ImluZm8tc3RhbmRhcmQiLHRoaXMuX2FsZXJ0SWNvblNoYXBlPSIiLHRoaXMuX2FsZXJ0VHlwZT0iaW5mbyJ9'@; put 'Z2V0IGFsZXJ0VHlwZSgpe3JldHVybiB0aGlzLl9hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZSh0KXtCeXQuaW5kZXhPZih0KT4tMSYmKHRoaXMuX2FsZXJ0VHlwZT10KX1nZXQgYWxlcnRJY29uU2hhcGUoKXtyZXR1cm4iIj09PXRoaXMuX2FsZXJ0SWNvblNoYXBlP3RoaXMuaWNvbkluZm9Gcm9t'@; put 'VHlwZSh0aGlzLl9hbGVydFR5cGUpLnNoYXBlOnRoaXMuX2FsZXJ0SWNvblNoYXBlfXNldCBhbGVydEljb25TaGFwZSh0KXt0P3QhPT10aGlzLl9hbGVydEljb25TaGFwZSYmKHRoaXMuX2FsZXJ0SWNvblNoYXBlPXQpOnRoaXMuX2FsZXJ0SWNvblNoYXBlPSIifWdldCBhbGVydEljb25UaXRs'@; put 'ZSgpe3JldHVybiB0aGlzLmljb25JbmZvRnJvbVR5cGUodGhpcy5fYWxlcnRUeXBlKS50aXRsZX1pY29uSW5mb0Zyb21UeXBlKHQpe2NvbnN0IHI9e3NoYXBlOiIiLGNzc0NsYXNzOiIiLHRpdGxlOiIifTtzd2l0Y2godCl7Y2FzZSJ3YXJuaW5nIjpyLnNoYXBlPSJ3YXJuaW5nLXN0YW5kYXJk'@; put 'IixyLmNzc0NsYXNzPSJhbGVydC13YXJuaW5nIixyLnRpdGxlPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLndhcm5pbmc7YnJlYWs7Y2FzZSJkYW5nZXIiOnIuc2hhcGU9ImVycm9yLXN0YW5kYXJkIixyLmNzc0NsYXNzPSJhbGVydC1kYW5nZXIiLHIudGl0bGU9dGhpcy5jb21tb25TdHJpbmdz'@; put 'LmtleXMuZGFuZ2VyO2JyZWFrO2Nhc2Uic3VjY2VzcyI6ci5zaGFwZT0ic3VjY2Vzcy1zdGFuZGFyZCIsci5jc3NDbGFzcz0iYWxlcnQtc3VjY2VzcyIsci50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zdWNjZXNzO2JyZWFrO2Nhc2UibmV1dHJhbCI6ci5zaGFwZT0ibm90ZSIsci5j'@; put 'c3NDbGFzcz0iYWxlcnQtbmV1dHJhbCIsci50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5uZXV0cmFsO2JyZWFrO2Nhc2UidW5rbm93biI6ci5zaGFwZT0iaGVscCIsci5jc3NDbGFzcz0iYWxlcnQtbmV1dHJhbCIsci50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy51bmtub3du'@; put 'O2JyZWFrO2Nhc2UibG9hZGluZyI6ci5zaGFwZT0ibG9hZGluZyIsci5jc3NDbGFzcz0iYWxlcnQtbmV1dHJhbCIsci50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy51bmtub3duO2JyZWFrO2RlZmF1bHQ6ci5zaGFwZT10aGlzLmRlZmF1bHRJY29uU2hhcGUsci5jc3NDbGFzcz0iYWxl'@; put 'cnQtaW5mbyIsci50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5pbmZvfXJldHVybiByfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKShvcihpbCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pLG59KSgp'@; put 'LG1XPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IoKXt0aGlzLl9jaGFuZ2U9bmV3IE1yfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KHQpe3QhPT10aGlzLl9jdXJy'@; put 'ZW50JiYodGhpcy5fY3VycmVudD10LHRoaXMuX2NoYW5nZS5uZXh0KHQpKX1nZXQgYWN0aXZlQWxlcnRzKCl7cmV0dXJuIHRoaXMuYWxsQWxlcnRzJiZ0aGlzLmFsbEFsZXJ0cy5maWx0ZXIodD0+IXQuX2Nsb3NlZCl9Z2V0IGN1cnJlbnRBbGVydCgpe3JldHVybiB0aGlzLmFjdGl2ZUFsZXJ0'@; put 'cyYmdGhpcy5hY3RpdmVBbGVydHNbdGhpcy5jdXJyZW50XX1zZXQgY3VycmVudEFsZXJ0KHQpe3RoaXMuY3VycmVudD10aGlzLmFjdGl2ZUFsZXJ0cy5pbmRleE9mKHQpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLmFjdGl2ZUFsZXJ0cyYmdGhpcy5hY3RpdmVBbGVydHMubGVuZ3RofHwwfW1h'@; put 'bmFnZSh0KXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmFsbEFsZXJ0cz10LHRoaXMuY3VycmVudD0ibnVtYmVyIj09dHlwZW9mIHRoaXMuX2N1cnJlbnQ/dGhpcy5fY3VycmVudDowLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuY3VycmVu'@; put 'dCksdGhpcy5zdWJzY3JpcHRpb249dGhpcy5hbGxBbGVydHMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmN1cnJlbnQ+PXRoaXMuYWxsQWxlcnRzLmxlbmd0aCYmKHRoaXMuY3VycmVudD1NYXRoLm1heCgwLHRoaXMuYWxsQWxlcnRzLmxlbmd0aC0xKSl9KX1uZXh0KCl7dGhpcy5fY3Vy'@; put 'cmVudD10aGlzLmN1cnJlbnQ9PT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgtMT8wOnRoaXMuY3VycmVudCsxLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpfXByZXZpb3VzKCl7MCE9PXRoaXMuYWN0aXZlQWxlcnRzLmxlbmd0aCYmKHRoaXMuX2N1cnJlbnQ9MD09PXRoaXMuY3Vy'@; put 'cmVudD90aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgtMTp0aGlzLmN1cnJlbnQtMSx0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KSl9b3BlbigpezAhPT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgmJih0aGlzLmN1cnJlbnRBbGVydHx8KHRoaXMuX2N1cnJlbnQ9MCksdGhpcy5fY2hh'@; put 'bmdlLm5leHQodGhpcy5fY3VycmVudCkpfWNsb3NlKHQpezAhPT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgmJih0JiYodGhpcy5fY3VycmVudD1NYXRoLm1heCgwLHRoaXMuY3VycmVudC0xKSksdGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3VycmVudCkpfWRlc3Ryb3koKXt0aGlzLnN1YnNj'@; put 'cmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSksbn0pKCksWkQ9KCgpPT57Y2xhc3Mgbntjb25z'@; put 'dHJ1Y3Rvcih0LHIsaSxvLGEsbCl7dGhpcy5pY29uU2VydmljZT10LHRoaXMuY2RyPXIsdGhpcy5tdWx0aUFsZXJ0U2VydmljZT1pLHRoaXMuY29tbW9uU3RyaW5ncz1vLHRoaXMucmVuZGVyZXI9YSx0aGlzLmhvc3RFbGVtZW50PWwsdGhpcy5pc1NtYWxsPSExLHRoaXMuY2xvc2FibGU9ITAs'@; put 'dGhpcy5pc0FwcExldmVsPSExLHRoaXMuY2xyQ2xvc2VCdXR0b25BcmlhTGFiZWw9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuYWxlcnRDbG9zZUJ1dHRvbkFyaWFMYWJlbCx0aGlzLl9jbG9zZWRDaGFuZ2VkPW5ldyBLcighMSksdGhpcy5fY2xvc2VkPSExLHRoaXMuc3Vic2NyaXB0aW9ucz1b'@; put 'XSx0aGlzLl9pc0xpZ2h0d2VpZ2h0PSExfWdldCBpc0xpZ2h0d2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2lzTGlnaHR3ZWlnaHR9c2V0IGlzTGlnaHR3ZWlnaHQodCl7dGhpcy5faXNMaWdodHdlaWdodD10LHRoaXMuY29uZmlnQWxlcnRUeXBlKHRoaXMuX29yaWdBbGVydFR5cGUpfWdldCBhbGVy'@; put 'dFR5cGUoKXtyZXR1cm4gdGhpcy5pY29uU2VydmljZS5hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZSh0KXt0aGlzLl9vcmlnQWxlcnRUeXBlPXQsdGhpcy5jb25maWdBbGVydFR5cGUodCl9c2V0IGFsZXJ0SWNvblNoYXBlKHQpe3RoaXMuaWNvblNlcnZpY2UuYWxlcnRJY29uU2hhcGU9dH1zZXQg'@; put 'Y2xvc2VkKHQpe3QmJiF0aGlzLl9jbG9zZWQ/dGhpcy5jbG9zZSgpOiF0JiZ0aGlzLl9jbG9zZWQmJnRoaXMub3BlbigpfWdldCBhbGVydENsYXNzKCl7cmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuaWNvbkluZm9Gcm9tVHlwZSh0aGlzLmljb25TZXJ2aWNlLmFsZXJ0VHlwZSkuY3NzQ2xhc3N9'@; put 'Z2V0IGhpZGRlbigpe3JldHVybiB0aGlzLl9oaWRkZW59c2V0IGhpZGRlbih0KXt0IT09dGhpcy5faGlkZGVuJiYodGhpcy5faGlkZGVuPXQsdGhpcy5faGlkZGVuP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCJhbGVydC1oaWRkZW4iKTp0'@; put 'aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwiYWxlcnQtaGlkZGVuIiksdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKX1uZ09uSW5pdCgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UmJnRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubXVs'@; put 'dGlBbGVydFNlcnZpY2UuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmhpZGRlbj10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydCE9PXRoaXN9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCh0PT50LnVuc3Vic2NyaWJlKCkpfWNvbmZpZ0Fs'@; put 'ZXJ0VHlwZSh0KXt0aGlzLmljb25TZXJ2aWNlLmFsZXJ0VHlwZT10fW9wZW4oKXt0aGlzLl9jbG9zZWQ9ITEsdGhpcy5tdWx0aUFsZXJ0U2VydmljZSYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5vcGVuKCksdGhpcy5fY2xvc2VkQ2hhbmdlZC5lbWl0KCExKX1jbG9zZSgpe2lmKCF0aGlzLmNs'@; put 'b3NhYmxlKXJldHVybjtjb25zdCB0PXRoaXMubXVsdGlBbGVydFNlcnZpY2U/LmN1cnJlbnRBbGVydD09PXRoaXM7dGhpcy5fY2xvc2VkPSEwLHRoaXMubXVsdGlBbGVydFNlcnZpY2U/LmFjdGl2ZUFsZXJ0cyYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jbG9zZSh0KSx0aGlzLl9jbG9zZWRD'@; put 'aGFuZ2VkLmVtaXQoITApfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShEYWUpLHplKFVsKSx6ZShtVyw4KSx6ZShpbCksemUoTnQpLHplKG5vKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1hbGVydCJdXSxpbnB1'@; put 'dHM6e2lzU21hbGw6WzAsImNsckFsZXJ0U2l6ZVNtYWxsIiwiaXNTbWFsbCJdLGNsb3NhYmxlOlswLCJjbHJBbGVydENsb3NhYmxlIiwiY2xvc2FibGUiXSxpc0FwcExldmVsOlswLCJjbHJBbGVydEFwcExldmVsIiwiaXNBcHBMZXZlbCJdLGNsckNsb3NlQnV0dG9uQXJpYUxhYmVsOiJjbHJD'@; put 'bG9zZUJ1dHRvbkFyaWFMYWJlbCIsaXNMaWdodHdlaWdodDpbMCwiY2xyQWxlcnRMaWdodHdlaWdodCIsImlzTGlnaHR3ZWlnaHQiXSxhbGVydFR5cGU6WzAsImNsckFsZXJ0VHlwZSIsImFsZXJ0VHlwZSJdLGFsZXJ0SWNvblNoYXBlOlswLCJjbHJBbGVydEljb24iLCJhbGVydEljb25TaGFw'@; put 'ZSJdLGNsb3NlZDpbMCwiY2xyQWxlcnRDbG9zZWQiLCJjbG9zZWQiXX0sb3V0cHV0czp7X2Nsb3NlZENoYW5nZWQ6ImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbYm8oW0RhZV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZXMsZGVjbHM6MSx2YXJzOjEsY29u'@; put 'c3RzOltbImNsYXNzIiwiYWxlcnQiLDMsIm5nQ2xhc3MiLCJhbGVydC1zbSIsImFsZXJ0LWxpZ2h0d2VpZ2h0IiwiYWxlcnQtYXBwLWxldmVsIiw0LCJuZ0lmIl0sWzEsImFsZXJ0IiwzLCJuZ0NsYXNzIl0sWzEsImFsZXJ0LWl0ZW1zIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJjbG9z'@; put 'ZSIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImNsb3NlIiwzLCJjbGljayJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLFluKDAsTTl0LDQsOCwiZGl2IiwwKSksMiZ0JiZydCgibmdJZiIsIXIuX2Ns'@; put 'b3NlZCl9LGRlcGVuZGVuY2llczpbRmgsWXMsSnNdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLEtNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMuaWNvblNlcnZpY2U9dH19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoRGFlKSl9'@; put 'LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1hbGVydC1pdGVtIl1dLGhvc3RBdHRyczpbMSwiYWxlcnQtaXRlbSJdLHN0YW5kYWxvbmU6ITEsbmdDb250ZW50U2VsZWN0b3JzOmVzLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImFsZXJ0LWljb24td3JhcHBlciJd'@; put 'LFsiY2xhc3MiLCJhbGVydC1zcGlubmVyIiwiY2xySW5saW5lIiwiIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFsZXJ0LWljb24iLCJyb2xlIiwiaW1nIiw0LCJuZ0lmIl0sWyJjbHJJbmxpbmUiLCIiLDEsImFsZXJ0LXNwaW5uZXIiXSxbInJvbGUiLCJpbWciLDEsImFsZXJ0LWljb24iXV0sdGVt'@; put 'cGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihmbygpLEooMCwiZGl2IiwwKSxZbigxLFQ5dCwxLDAsImNsci1zcGlubmVyIiwxKSgyLHg5dCwxLDIsImNkcy1pY29uIiwyKSx0ZSgpLFdyKDMpKSwyJnQmJihpZSgpLHJ0KCJuZ0lmIiwibG9hZGluZyI9PT1yLmljb25TZXJ2aWNlLmFsZXJ0SWNv'@; put 'blNoYXBlKSxpZSgpLHJ0KCJuZ0lmIiwibG9hZGluZyIhPT1yLmljb25TZXJ2aWNlLmFsZXJ0SWNvblNoYXBlKSl9LGRlcGVuZGVuY2llczpbWXMsSnMsejJdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLEdEPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXty'@; put 'ZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWRpcj0kcih7dHlwZTpuLHNlbGVjdG9yczpbWyIiLDgsImFsZXJ0LXRleHQiXV0sc3RhbmRhbG9uZTohMX0pLG59KSgpLFhNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscil7dGhpcy5tdWx0aUFsZXJ0U2VydmljZT10LHRoaXMuY29tbW9u'@; put 'U3RyaW5ncz1yLHRoaXMuY3VycmVudEFsZXJ0Q2hhbmdlPW5ldyBLcighMSksdGhpcy5jdXJyZW50QWxlcnRJbmRleENoYW5nZT1uZXcgS3J9Z2V0IGN1cnJlbnRBbGVydCgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydH1zZXQgY3VycmVudEFsZXJ0KHQpe3Qm'@; put 'Jih0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydD10KX1nZXQgY3VycmVudEFsZXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50fXNldCBjdXJyZW50QWxlcnRJbmRleCh0KXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQ9dH1nZXQg'@; put 'cHJldmlvdXNBbGVydEFyaWFMYWJlbCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50QWxlcnRJbmRleCsxO3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuYWxlcnRQcmV2aW91c0FsZXJ0QXJpYUxhYmVsLHtDVVJSRU5UOigxPT09dD90aGlzLm11'@; put 'bHRpQWxlcnRTZXJ2aWNlLmNvdW50OnQtMSkudG9TdHJpbmcoKSxDT1VOVDp0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50LnRvU3RyaW5nKCl9KX1nZXQgbmV4dEFsZXJ0QXJpYUxhYmVsKCl7Y29uc3QgdD10aGlzLmN1cnJlbnRBbGVydEluZGV4KzE7cmV0dXJuIHRoaXMuY29tbW9uU3Ry'@; put 'aW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5hbGVydE5leHRBbGVydEFyaWFMYWJlbCx7Q1VSUkVOVDoodD09PXRoaXMubXVsdGlBbGVydFNlcnZpY2UuY291bnQ/MTp0KzEpLnRvU3RyaW5nKCksQ09VTlQ6dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jb3VudC50b1N0cmluZygp'@; put 'fSl9bmdPbkluaXQoKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlQ2hhbmdlcz10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKHQ9Pnt0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlLmVtaXQodCksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2UuZW1pdCh0aGlzLm11bHRp'@; put 'QWxlcnRTZXJ2aWNlLmFjdGl2ZUFsZXJ0c1t0XSl9KX1uZ09uRGVzdHJveSgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2VDaGFuZ2VzLnVuc3Vic2NyaWJlKCl9cGFnZVVwKCl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5uZXh0KCl9cGFnZURvd24oKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLnBy'@; put 'ZXZpb3VzKCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKG1XKSx6ZShpbCkpfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItYWxlcnRzLXBhZ2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQs'@; put 'cil7MiZ0JiZ3cigiYWxlcnRzLXBhZ2VyIiwhMCl9LGlucHV0czp7Y3VycmVudEFsZXJ0OlswLCJjbHJDdXJyZW50QWxlcnQiLCJjdXJyZW50QWxlcnQiXSxjdXJyZW50QWxlcnRJbmRleDpbMCwiY2xyQ3VycmVudEFsZXJ0SW5kZXgiLCJjdXJyZW50QWxlcnRJbmRleCJdfSxvdXRwdXRzOntj'@; put 'dXJyZW50QWxlcnRDaGFuZ2U6ImNsckN1cnJlbnRBbGVydENoYW5nZSIsY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U6ImNsckN1cnJlbnRBbGVydEluZGV4Q2hhbmdlIn0sc3RhbmRhbG9uZTohMSxkZWNsczo5LHZhcnM6Nixjb25zdHM6W1sxLCJhbGVydHMtcGFnZXItY29udHJvbCJdLFsxLCJh'@; put 'bGVydHMtcGFnZS1kb3duIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJhbGVydHMtcGFnZXItYnV0dG9uIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiXSxbMSwiYWxlcnRzLXBhZ2VyLXRleHQiXSxbMSwiYWxlcnRzLXBhZ2UtdXAiXSxbInNoYXBlIiwiYW5n'@; put 'bGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKEooMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImJ1dHRvbiIsMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiByLnBhZ2VEb3duKCl9KSxJdCgzLCJjZHMtaWNvbiIsMyksdGUoKSgpLEoo'@; put 'NCwiZGl2Iiw0KSxTZSg1KSx0ZSgpLEooNiwiZGl2Iiw1KSg3LCJidXR0b24iLDIpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gci5wYWdlVXAoKX0pLEl0KDgsImNkcy1pY29uIiw2KSx0ZSgpKCkoKSksMiZ0JiYoaWUoMiksUnIoImFyaWEtbGFiZWwiLHIucHJldmlvdXNBbGVydEFy'@; put 'aWFMYWJlbCksaWUoKSxScigidGl0bGUiLHIuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzKSxpZSgyKSxOaCgiIixyLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQrMSwiIC8gIixyLm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50KSxpZSgyKSxScigiYXJpYS1sYWJlbCIsci5uZXh0QWxlcnRB'@; put 'cmlhTGFiZWwpLGllKCksUnIoInRpdGxlIixyLmNvbW1vblN0cmluZ3Mua2V5cy5uZXh0KSl9LGRlcGVuZGVuY2llczpbSnNdLGVuY2Fwc3VsYXRpb246Mn0pLG59KSgpLFFNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQpe3RoaXMubXVsdGlBbGVydFNlcnZpY2U9dCx0aGlzLmN1cnJl'@; put 'bnRBbGVydENoYW5nZT1uZXcgS3IoITEpLHRoaXMuY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U9bmV3IEtyKCExKSx0aGlzLnN1YnNjcmlwdGlvbnM9W119c2V0IGFsbEFsZXJ0cyh0KXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLm1hbmFnZSh0KX1zZXQgX2lucHV0Q3VycmVudEluZGV4KHQpe051'@; put 'bWJlci5pc0ludGVnZXIodCkmJnQ+PTAmJih0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQ9dCl9Z2V0IGN1cnJlbnRBbGVydEluZGV4KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudH1zZXQgY3VycmVudEFsZXJ0SW5kZXgodCl7dGhpcy5tdWx0aUFsZXJ0U2Vy'@; put 'dmljZS5jdXJyZW50PXR9Z2V0IGN1cnJlbnRBbGVydCgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydH1zZXQgY3VycmVudEFsZXJ0KHQpe3QmJih0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydD10KX1nZXQgYWxlcnRzKCl7cmV0dXJuIHRoaXMu'@; put 'YWxsQWxlcnRzLmZpbHRlcih0PT4hMT09PXQuaGlkZGVuKX1nZXQgY3VycmVudEFsZXJ0VHlwZSgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydD90aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydC5hbGVydFR5cGU6IiJ9bmdBZnRlckNvbnRlbnRJ'@; put 'bml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jaGFuZ2VzLnN1YnNjcmliZSh0PT57dGhpcy5jdXJyZW50QWxlcnRJbmRleENoYW5nZS5uZXh0KHQpLHRoaXMuY3VycmVudEFsZXJ0Q2hhbmdlLm5leHQodGhpcy5tdWx0aUFsZXJ0U2VydmljZS5j'@; put 'dXJyZW50QWxlcnQpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godD0+dC51bnN1YnNjcmliZSgpKSx0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmRlc3Ryb3koKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUobVcp'@; put 'KX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1siY2xyLWFsZXJ0cyJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiZGYShpLFpELDQpLDImdCl7bGV0IG87Y2kobz11aSgpKSYmKHIuYWxsQWxlcnRzPW8pfX0saG9zdFZhcnM6MTIsaG9zdEJpbmRp'@; put 'bmdzOmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigiYWxlcnRzIiwhMCkoImFsZXJ0LWRhbmdlciIsImRhbmdlciI9PXIuY3VycmVudEFsZXJ0VHlwZSkoImFsZXJ0LWluZm8iLCJpbmZvIj09ci5jdXJyZW50QWxlcnRUeXBlKSgiYWxlcnQtc3VjY2VzcyIsInN1Y2Nlc3MiPT1yLmN1cnJlbnRBbGVy'@; put 'dFR5cGUpKCJhbGVydC13YXJuaW5nIiwid2FybmluZyI9PXIuY3VycmVudEFsZXJ0VHlwZSkoImFsZXJ0LW5ldXRyYWwiLCJuZXV0cmFsIj09ci5jdXJyZW50QWxlcnRUeXBlKX0saW5wdXRzOntfaW5wdXRDdXJyZW50SW5kZXg6WzAsImNsckN1cnJlbnRBbGVydEluZGV4IiwiX2lucHV0Q3Vy'@; put 'cmVudEluZGV4Il0sY3VycmVudEFsZXJ0OlswLCJjbHJDdXJyZW50QWxlcnQiLCJjdXJyZW50QWxlcnQiXX0sb3V0cHV0czp7Y3VycmVudEFsZXJ0Q2hhbmdlOiJjbHJDdXJyZW50QWxlcnRDaGFuZ2UiLGN1cnJlbnRBbGVydEluZGV4Q2hhbmdlOiJjbHJDdXJyZW50QWxlcnRJbmRleENoYW5n'@; put 'ZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFttV10pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6azl0LGRlY2xzOjMsdmFyczoxLGNvbnN0czpbWzEsImFsZXJ0cy13cmFwcGVyIl0sWzMsImNsckN1cnJlbnRBbGVydEluZGV4Iiw0LCJuZ0lmIl0sWzMsImNsckN1cnJlbnRBbGVydEluZGV4'@; put 'Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oQTl0KSxKKDAsImRpdiIsMCksWW4oMSxSOXQsMSwxLCJjbHItYWxlcnRzLXBhZ2VyIiwxKSxXcigyKSx0ZSgpKSwyJnQmJihpZSgpLHJ0KCJuZ0lmIixyLm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50PjEpKX0sZGVwZW5kZW5jaWVz'@; put 'OltZcyxYTWVdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpibG9ja30iXX0pLG59KSgpLEpNZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnModW9lLFVndCx6Z3QsV2d0LGRvZSxZZ3QsY0QpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7'@; put 'cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxXbCxHb2UsZ01dfSksbn0pKCksanl0PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3'@; put 'NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W0pNZV19KSxufSkoKSxlVGU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2N1bWVudD10fXN0b3BTY3JvbGxpbmcoKXt0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoIm5vLXNjcm9s'@; put 'bGluZyIpfXJlc3VtZVNjcm9sbGluZygpe3RoaXMuX2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJuby1zY3JvbGxpbmciKSYmdGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJuby1zY3JvbGxpbmciKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQp'@; put 'e3JldHVybiBuZXcodHx8bikob3IoVGwpKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KSxufSkoKSx0VGU9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMuZmFkZU1vdmU9ImZhZGVEb3duIix0aGlzLmJhY2tkcm9wPSEwfX1yZXR1cm4gbi5c'@; put 'dTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVwcm92PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxufSkoKSx4ZD0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8pe3RoaXMuX3Njcm9sbGluZ1Nl'@; put 'cnZpY2U9dCx0aGlzLmNvbW1vblN0cmluZ3M9cix0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlPWksdGhpcy5jb25maWd1cmF0aW9uPW8sdGhpcy5tb2RhbElkPVBoKCksdGhpcy5fb3Blbj0hMSx0aGlzLl9vcGVuQ2hhbmdlZD1uZXcgS3IoITEpLHRoaXMuY2xvc2FibGU9ITAsdGhpcy5jbG9zZUJ1'@; put 'dHRvbkFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSx0aGlzLnNpemU9Im1kIix0aGlzLnN0YXRpY0JhY2tkcm9wPSEwLHRoaXMuc2tpcEFuaW1hdGlvbj0hMSx0aGlzLnN0b3BDbG9zZT0hMSx0aGlzLmFsdENsb3NlPW5ldyBLcighMSksdGhpcy5ieXBhc3NTY3JvbGxT'@; put 'ZXJ2aWNlPSExfWdldCBmYWRlTW92ZSgpe3JldHVybiB0aGlzLnNraXBBbmltYXRpb24/IiI6dGhpcy5jb25maWd1cmF0aW9uLmZhZGVNb3ZlfXNldCBmYWRlTW92ZSh0KXt0aGlzLmNvbmZpZ3VyYXRpb24uZmFkZU1vdmU9dH1nZXQgYmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5jb25maWd1cmF0'@; put 'aW9uLmJhY2tkcm9wfW5nT25DaGFuZ2VzKHQpeyF0aGlzLmJ5cGFzc1Njcm9sbFNlcnZpY2UmJnQmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCJfb3BlbiIpJiYodC5fb3Blbi5jdXJyZW50VmFsdWU/KHRoaXMuX3Njcm9sbGluZ1NlcnZpY2Uuc3RvcFNjcm9sbGlu'@; put 'ZygpLHRoaXMubW9kYWxTdGFja1NlcnZpY2UudHJhY2tNb2RhbE9wZW4odGhpcykpOnRoaXMuX3Njcm9sbGluZ1NlcnZpY2UucmVzdW1lU2Nyb2xsaW5nKCkpfW5nT25EZXN0cm95KCl7dGhpcy5fc2Nyb2xsaW5nU2VydmljZS5yZXN1bWVTY3JvbGxpbmcoKX1vcGVuKCl7dGhpcy5fb3Blbnx8'@; put 'KHRoaXMuX29wZW49ITAsdGhpcy5fb3BlbkNoYW5nZWQuZW1pdCghMCksdGhpcy5tb2RhbFN0YWNrU2VydmljZS50cmFja01vZGFsT3Blbih0aGlzKSl9YmFja2Ryb3BDbGljaygpe3RoaXMuc3RhdGljQmFja2Ryb3A/dGhpcy50aXRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk6dGhpcy5jbG9z'@; put 'ZSgpfWNsb3NlKCl7dGhpcy5zdG9wQ2xvc2U/dGhpcy5hbHRDbG9zZS5lbWl0KCExKTohdGhpcy5jbG9zYWJsZXx8IXRoaXMuX29wZW58fCh0aGlzLl9vcGVuPSExKX1mYWRlRG9uZSh0KXsidm9pZCI9PT10LnRvU3RhdGUmJih0aGlzLl9vcGVuQ2hhbmdlZC5lbWl0KCExKSx0aGlzLm1vZGFs'@; put 'U3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxDbG9zZSh0aGlzKSl9c2Nyb2xsVG9wKCl7dGhpcy5ib2R5RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKDAsMCl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pKHplKGVUZSksemUoaWwpLHplKERN'@; put 'ZSksemUodFRlKSl9LG4uXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImNsci1tb2RhbCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LHIsaSl7aWYoMSZ0JiZGYShpLEk5dCw1KSwyJnQpe2xldCBvO2NpKG89dWkoKSkmJihyLm1vZGFsQ29udGVudFRlbXBsYXRlPW8uZmly'@; put 'c3QpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQscil7aWYoMSZ0JiYoV28oTUVlLDUpLFdvKFRFZSw1KSksMiZ0KXtsZXQgaTtjaShpPXVpKCkpJiYoci50aXRsZT1pLmZpcnN0KSxjaShpPXVpKCkpJiYoci5ib2R5RWxlbWVudFJlZj1pLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdz'@; put 'OmZ1bmN0aW9uKHQscil7MiZ0JiZ3cigib3BlbiIsci5fb3Blbil9LGlucHV0czp7X29wZW46WzAsImNsck1vZGFsT3BlbiIsIl9vcGVuIl0sY2xvc2FibGU6WzAsImNsck1vZGFsQ2xvc2FibGUiLCJjbG9zYWJsZSJdLGNsb3NlQnV0dG9uQXJpYUxhYmVsOlswLCJjbHJNb2RhbENsb3NlQnV0'@; put 'dG9uQXJpYUxhYmVsIiwiY2xvc2VCdXR0b25BcmlhTGFiZWwiXSxzaXplOlswLCJjbHJNb2RhbFNpemUiLCJzaXplIl0sc3RhdGljQmFja2Ryb3A6WzAsImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCJzdGF0aWNCYWNrZHJvcCJdLHNraXBBbmltYXRpb246WzAsImNsck1vZGFsU2tpcEFuaW1h'@; put 'dGlvbiIsInNraXBBbmltYXRpb24iXSxzdG9wQ2xvc2U6WzAsImNsck1vZGFsUHJldmVudENsb3NlIiwic3RvcENsb3NlIl0sbGFiZWxsZWRCeTpbMCwiY2xyTW9kYWxMYWJlbGxlZEJ5SWQiLCJsYWJlbGxlZEJ5Il0sYnlwYXNzU2Nyb2xsU2VydmljZTpbMCwiY2xyTW9kYWxPdmVycmlkZVNj'@; put 'cm9sbFNlcnZpY2UiLCJieXBhc3NTY3JvbGxTZXJ2aWNlIl19LG91dHB1dHM6e19vcGVuQ2hhbmdlZDoiY2xyTW9kYWxPcGVuQ2hhbmdlIixhbHRDbG9zZToiY2xyTW9kYWxBbHRlcm5hdGVDbG9zZSJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFtdLFtlVGVdKSxpdV0sbmdDb250ZW50'@; put 'U2VsZWN0b3JzOkw5dCxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1sidGl0bGUiLCIiXSxbImJvZHkiLCIiXSxbImNsYXNzIiwibW9kYWwiLDMsIm1vZGFsLWZ1bGwtc2NyZWVuIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm1vZGFsLWJhY2tkcm9wIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwzLCJjbGlj'@; put 'ayIsNCwibmdJZiJdLFsxLCJtb2RhbCJdLFsiY2RrVHJhcEZvY3VzIiwiIiwicm9sZSIsImRpYWxvZyIsImFyaWEtbW9kYWwiLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciLDMsImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl0sWzEsImNsci1zci1vbmx5Il0sWyJjbGFzcyIsIm1vZGFsLWNvbnRl'@; put 'bnQtd3JhcHBlciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWzEsIm1vZGFsLWNvbnRlbnQtd3JhcHBlciJdLFsxLCJtb2RhbC1jb250ZW50Il0sWzEsIm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSJdLFsiY2RrRm9jdXNJbml0aWFsIiwiIiwidGFiaW5kZXgiLCItMSIsMSwibW9kYWwtdGl0bGUt'@; put 'd3JhcHBlciIsMywiaWQiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImNsb3NlIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJtb2RhbC1ib2R5LXdyYXBwZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImNsb3NlIiwzLCJjbGljayJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiXSxbImFyaWEt'@; put 'aGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtYmFja2Ryb3AiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7MSZ0JiYoZm8oRDl0KSxZbigwLEY5dCw3LDE2LCJkaXYiLDIpKDEsUDl0LDEsMSwiZGl2IiwzKSksMiZ0JiYocnQoIm5nSWYiLHIuX29wZW4pLGllKCkscnQoIm5nSWYi'@; put 'LHIuYmFja2Ryb3ApKX0sZGVwZW5kZW5jaWVzOltZcyxfTSxKc10sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbUnAoImZhZGVNb3ZlIixbcGgoIiogPT4gZmFkZURvd24iLFt2bCh7b3BhY2l0eTowLHRyYW5zZm9ybToidHJhbnNsYXRlKDAsIC0yNSUpIn0pLHkwKCIwLjJzIGVh'@; put 'c2UtaW4tb3V0IildKSxwaCgiZmFkZURvd24gPT4gKiIsW3kwKCIwLjJzIGVhc2UtaW4tb3V0Iix2bCh7b3BhY2l0eTowLHRyYW5zZm9ybToidHJhbnNsYXRlKDAsIC0yNSUpIn0pKV0pLHBoKCIqID0+IGZhZGVMZWZ0Iixbdmwoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgyNSUs'@; put 'IDApIn0pLHkwKCIwLjJzIGVhc2UtaW4tb3V0IildKSxwaCgiZmFkZUxlZnQgPT4gKiIsW3kwKCIwLjJzIGVhc2UtaW4tb3V0Iix2bCh7b3BhY2l0eTowLHRyYW5zZm9ybToidHJhbnNsYXRlKDI1JSwgMCkifSkpXSldKSxScCgiZmFkZSIsW3BoKCJ2b2lkID0+ICoiLFt2bCh7b3BhY2l0eTow'@; put 'fSkseTAoIjAuMnMgZWFzZS1pbi1vdXQiLHZsKHtvcGFjaXR5Oi44NX0pKV0pLHBoKCIqID0+IHZvaWQiLFt5MCgiMC4ycyBlYXNlLWluLW91dCIsdmwoe29wYWNpdHk6MH0pKV0pXSldfX0pLG59KSgpLG1oPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGkpe3RoaXMucmVuZGVyZXI9'@; put 'dCx0aGlzLmhvc3Q9cix0aGlzLnRhYmluZGV4PSIwIix0aGlzLnVubGlzdGVuZXJzPVtdLGkucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLm9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+dGhpcy5hZGRPclJlbW92ZVRhYkluZGV4KCkpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShy'@; put 'Lm5hdGl2ZUVsZW1lbnQpLHRoaXMudW5saXN0ZW5lcnMucHVzaCh0Lmxpc3RlbihyLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLCgpPT57dGhpcy5hZGRPclJlbW92ZVRhYkluZGV4KCl9KSx0Lmxpc3RlbihyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlZG93biIsKCk9Pnt0aGlzLnJlbW92ZVRhYklu'@; put 'ZGV4KCl9KSl9KX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy51bmxpc3RlbmVycy5sZW5ndGg7KXRoaXMudW5saXN0ZW5lcnMucG9wKCkoKTt0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLm9ic2VydmVyPW51bGx9YWRkVGFiSW5kZXgoKXt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0'@; put 'ZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLHRoaXMudGFiaW5kZXgpfXJlbW92ZVRhYkluZGV4KCl7dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4Iil9YWRkT3JSZW1vdmVUYWJJbmRleCgpe2NvbnN0IHQ9'@; put 'dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDt0JiZ0LmNsaWVudEhlaWdodDx0LnNjcm9sbEhlaWdodD90aGlzLmFkZFRhYkluZGV4KCk6dGhpcy5yZW1vdmVUYWJJbmRleCgpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKSh6ZShO'@; put 'dCksemUobm8pLHplKGdhKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIsOCwibW9kYWwtYm9keSJdXSxzdGFuZGFsb25lOiExfSksbn0pKCksdlc9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3psLmFkZEljb25zKGNEKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1'@; put 'bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bil9LG4uXHUwMjc1bW9kPUdpKHt0eXBlOm59KSxuLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8sSnosV2wsV2xdfSksbn0pKCksVXl0PSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4p'@; put 'fSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLEp6LFdsLHZXLHZXLFdsXX0pLG59KSgpLG5UZT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5tYXg9MTAwLHRoaXMudmFsdWU9MCx0aGlzLmV4dGVybmFsSWQ9IiJ9Z2V0IGlkKCl7'@; put 'cmV0dXJuIHRoaXMuX0lEfXNldCBpZCh0KXt0aGlzLl9JRD10LHRoaXMuZXh0ZXJuYWxJZD1udWxsfWdldCBwcm9ncmVzc0NsYXNzKCl7cmV0dXJuITB9c2V0IGNsckNvbXBhY3QodCl7dGhpcy5fY29tcGFjdD1wNCh0KX1nZXQgY29tcGFjdENsYXNzKCl7cmV0dXJuIHRoaXMuX2NvbXBhY3R9'@; put 'c2V0IGNsckxhYmVsZWQodCl7dGhpcy5fbGFiZWxlZD1wNCh0KX1nZXQgbGFiZWxlZENsYXNzKCl7cmV0dXJuIHRoaXMuX2xhYmVsZWR9c2V0IGNsckZhZGUodCl7dGhpcy5fZmFkZT1wNCh0KX1nZXQgZmFkZUNsYXNzKCl7cmV0dXJuIHRoaXMuX2ZhZGV9c2V0IGNsckxvb3AodCl7dGhpcy5f'@; put 'bG9vcD1wNCh0KX1nZXQgbG9vcENsYXNzKCl7cmV0dXJuIHRoaXMuX2xvb3B9Z2V0IHdhcm5pbmdDbGFzcygpe3JldHVybiJ3YXJuaW5nIj09PXRoaXMuY29sb3J9Z2V0IHN1Y2Nlc3NDbGFzcygpe3JldHVybiJzdWNjZXNzIj09PXRoaXMuY29sb3J9Z2V0IGRhbmdlckNsYXNzKCl7cmV0dXJu'@; put 'ImRhbmdlciI9PT10aGlzLmNvbG9yfXNldCBjbHJGbGFzaCh0KXt0aGlzLl9mbGFzaD1wNCh0KX1nZXQgZmxhc2hDbGFzcygpe3JldHVybiB0aGlzLl9mbGFzaH1zZXQgY2xyRmxhc2hEYW5nZXIodCl7dGhpcy5fZmxhc2hEYW5nZXI9cDQodCl9Z2V0IGZsYXNoRGFuZ2VyQ2xhc3MoKXtyZXR1'@; put 'cm4gdGhpcy5fZmxhc2hEYW5nZXJ9Z2V0IGRpc3BsYXlWYWx1ZSgpe3JldHVybiB0aGlzLmRpc3BsYXl2YWw/dGhpcy5kaXNwbGF5dmFsOmAke3RoaXMudmFsdWV8fDB9JWB9ZGlzcGxheVN0cmluZ1ZhbHVlKCl7cmV0dXJuIHRoaXMuX2xhYmVsZWR9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5j'@; put 'dGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NWNtcD1Qcih7dHlwZTpuLHNlbGVjdG9yczpbWyJjbHItcHJvZ3Jlc3MtYmFyIl1dLGhvc3RWYXJzOjIxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LHIpezImdCYmKFJyKCJpZCIsci5leHRlcm5hbElkKSx3cigicHJvZ3Jlc3MiLHIu'@; put 'cHJvZ3Jlc3NDbGFzcykoImNvbXBhY3QiLHIuY29tcGFjdENsYXNzKSgibGFiZWxlZCIsci5sYWJlbGVkQ2xhc3MpKCJwcm9ncmVzcy1mYWRlIixyLmZhZGVDbGFzcykoImxvb3AiLHIubG9vcENsYXNzKSgid2FybmluZyIsci53YXJuaW5nQ2xhc3MpKCJzdWNjZXNzIixyLnN1Y2Nlc3NDbGFz'@; put 'cykoImRhbmdlciIsci5kYW5nZXJDbGFzcykoImZsYXNoIixyLmZsYXNoQ2xhc3MpKCJmbGFzaC1kYW5nZXIiLHIuZmxhc2hEYW5nZXJDbGFzcykpfSxpbnB1dHM6e21heDpbMCwiY2xyTWF4IiwibWF4Il0sZGlzcGxheXZhbDpbMCwiY2xyRGlzcGxheXZhbCIsImRpc3BsYXl2YWwiXSxjb2xv'@; put 'cjpbMCwiY2xyQ29sb3IiLCJjb2xvciJdLHZhbHVlOlswLCJjbHJWYWx1ZSIsInZhbHVlIl0saWQ6ImlkIixjbHJDb21wYWN0OiJjbHJDb21wYWN0IixjbHJMYWJlbGVkOiJjbHJMYWJlbGVkIixjbHJGYWRlOiJjbHJGYWRlIixjbHJMb29wOiJjbHJMb29wIixjbHJGbGFzaDoiY2xyRmxhc2gi'@; put 'LGNsckZsYXNoRGFuZ2VyOiJjbHJGbGFzaERhbmdlciJ9LHN0YW5kYWxvbmU6ITEsZGVjbHM6Mix2YXJzOjUsY29uc3RzOltbMywiaWQiXSxbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LHIpezEmdCYmKEl0KDAsInByb2dyZXNzIiwwKSxZbigxLGo5dCwyLDEsInNwYW4iLDEpKSwy'@; put 'JnQmJihydCgiaWQiLHIuaWQpLFJyKCJtYXgiLHIubWF4KSgidmFsdWUiLHIudmFsdWUpKCJkYXRhLWRpc3BsYXl2YWwiLHIuZGlzcGxheVZhbHVlKSxpZSgpLHJ0KCJuZ0lmIixyLmRpc3BsYXlTdHJpbmdWYWx1ZSgpKSl9LGRlcGVuZGVuY2llczpbWXNdLGVuY2Fwc3VsYXRpb246Mn0pLG59'@; put 'KSgpLHp5dD0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxb119KSxufSkoKSxZeXQ9KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigp'@; put 'e3psLmFkZEljb25zKFpndCxHZ3QsdW9lLGRvZSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdsLGdNLFdsLGdNXX0pLG59KSgpLEt5dD0oKCk9Pntj'@; put 'bGFzcyBue2NvbnN0cnVjdG9yKCl7emwuYWRkSWNvbnModW9lLGRvZSl9fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLHZXLEpNZV19KSxufSkoKSxxMD0o'@; put 'KCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltqeXQsVnl0LFdsLHZXLFdvZSxybSxXeixOdnQsVE1lLElfdCxlX3QsS3l0LFV5dCxDdnQs'@; put 'Z00senl0LExELFl5dF19KSxufSkoKSxYeXQ9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGkpe3RoaXMuc2FzU2VydmljZT1yLHRoaXMubG9nZ2VyU2VydmljZT1pLHRoaXMuX3N1YnNjcmlwdGlvbj1uZXcgQXIsdGhpcy5sb2FkaW5nPSExLHRoaXMuYWxlcnRDbG9zZWQ9ITAs'@; put 'dGhpcy5kYXRhPXt1c2VyOm51bGwscGFzczpudWxsfX1uZ09uSW5pdCgpeyJSZWRpcmVjdGVkIiE9PXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLmxvZ2luTWVjaGFuaXNtJiYodGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuc2FzU2VydmljZS5zaG91bGRMb2dpbi5zdWJzY3JpYmUo'@; put 'aT0+e3RoaXMuaXNBY3RpdmU9aTtsZXQgbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5Iik7byYmKGk/by5jbGFzc0xpc3QuYWRkKCJzaG91bGQtbG9naW4iKTpvLmNsYXNzTGlzdC5yZW1vdmUoInNob3VsZC1sb2dpbiIpKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlv'@; put 'bi51bnN1YnNjcmliZSgpfXN1Ym1pdCgpe3RoaXMubG9hZGluZ3x8KHRoaXMubG9hZGluZz0hMCx0aGlzLmRhdGEudXNlciYmdGhpcy5kYXRhLnBhc3MmJnRoaXMuc2FzU2VydmljZS5sb2dpbih0aGlzLmRhdGEudXNlcix0aGlzLmRhdGEucGFzcykudGhlbihyPT57dGhpcy5sb2FkaW5nPSEx'@; put 'LHJ8fCh0aGlzLmVycm9yTXNnPSJVc2VybmFtZSBvciBwYXNzd29yZCBpbnZhbGlkIix0aGlzLmFsZXJ0Q2xvc2VkPSExKX0scj0+e3RoaXMubG9nZ2VyU2VydmljZS5sb2cociksdGhpcy5sb2FkaW5nPSExLHRoaXMuZXJyb3JNc2c9cix0aGlzLmFsZXJ0Q2xvc2VkPSExfSkpfXN0YXRpYyNl'@; put 'PW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKGljKSx6ZSh4MykpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtbG9naW4iXV0sc3RhbmRhbG9uZTohMSxkZWNsczoyMCx2YXJzOjksY29uc3RzOltbMSwibG9n'@; put 'aW4tc2lkZWJhci13cmFwcGVyIl0sWzEsImxvZ2luLXNpZGViYXIiLCJzaWRlQmFyUHJvcHMiXSxbInNyYyIsIi9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvaW1hZ2VzL2RhdGFjb250cm9sbGVyLnN2ZyIsImFsdCIsImRhdGFj'@; put 'b250cm9sbGVyIGxvZ28iLDEsImxvZ2luLWxvZ28iXSxbMSwibG9naW4iLDMsIm5nU3VibWl0Il0sWzEsInRpdGxlIl0sWzEsIndlbGNvbWUiXSxbMSwiaGludCJdLFsxLCJsb2dpbi1ncm91cCJdLFsiY2xySW5wdXQiLCIiLCJuYW1lIiwidXNlciIsInR5cGUiLCJ0ZXh0IiwicGxhY2Vob2xk'@; put 'ZXIiLCJVc2VybmFtZSIsMSwidXNlcm5hbWUiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJjbHJJbnB1dCIsIiIsIm5hbWUiLCJwYXNzIiwidHlwZSIsInBhc3N3b3JkIiwicGxhY2Vob2xkZXIiLCJQYXNzd29yZCIsMSwicGFzc3dvcmQiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01v'@; put 'ZGVsIl0sWzMsImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIiwiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRDbG9zZWQiXSxbImNsci1hbGVydC1pdGVtIiwiIiwxLCJhbGVydC1pdGVtIl0sWzEsImFsZXJ0LXRleHQiXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNz'@; put 'IiwzLCJjbHJMb2FkaW5nIiwiZGlzYWJsZWQiXSxbMSwib3ZlcmxheSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmKEooMCwiZGl2IiwwKSgxLCJkaXYiLDEpLEl0KDIsImltZyIsMiksSigzLCJmb3JtIiwzKSx3dCgibmdTdWJtaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIG8uc3VibWl0'@; put 'KCl9KSxKKDQsImxhYmVsIiw0KSg1LCJoMyIsNSksU2UoNiwiV2VsY29tZSB0byIpLHRlKCksU2UoNywiIERhdGEgQ29udHJvbGxlciAiKSxKKDgsImg0Iiw2KSxTZSg5LCJDYXB0dXJlLCBSZXZpZXcsIGFuZCBBcHByb3ZlIiksdGUoKSgpLEooMTAsImRpdiIsNykoMTEsImlucHV0Iiw4KSxo'@; put 'aSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8uZGF0YS51c2VyLGwpfHwoby5kYXRhLnVzZXI9bCksbH0pLHRlKCksSigxMiwiaW5wdXQiLDkpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5kYXRhLnBhc3MsbCl8fChvLmRhdGEucGFz'@; put 'cz1sKSxsfSksdGUoKSxKKDEzLCJjbHItYWxlcnQiLDEwKSxoaSgiY2xyQWxlcnRDbG9zZWRDaGFuZ2UiLGZ1bmN0aW9uKGwpe3JldHVybiBmaShvLmFsZXJ0Q2xvc2VkLGwpfHwoby5hbGVydENsb3NlZD1sKSxsfSksSigxNCwiZGl2IiwxMSkoMTUsInNwYW4iLDEyKSxTZSgxNiksdGUoKSgp'@; put 'KCksSigxNywiYnV0dG9uIiwxMyksU2UoMTgsIiBMb2cgaW4gIiksdGUoKSgpKCkoKSxJdCgxOSwiZGl2IiwxNCksdGUoKSksMiZpJiYod3IoImFjdGl2ZSIsby5pc0FjdGl2ZSksaWUoMTEpLGRpKCJuZ01vZGVsIixvLmRhdGEudXNlciksaWUoKSxkaSgibmdNb2RlbCIsby5kYXRhLnBhc3Mp'@; put 'LGllKCkscnQoImNsckFsZXJ0VHlwZSIsImFsZXJ0LWRhbmdlciIpLGRpKCJjbHJBbGVydENsb3NlZCIsby5hbGVydENsb3NlZCksaWUoMykscHIoby5lcnJvck1zZyksaWUoKSxydCgiY2xyTG9hZGluZyIsby5sb2FkaW5nKSgiZGlzYWJsZWQiLG8ubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6'@; put 'W0xiLGx1LG9jLEliLFhsLGQ0LFpELEdELCQwLGltLGVsLFBmXSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtmdW5jdGlvbiBReXQobixlKXsxJm4mJihKKDAsInNwYW4iLDYpLFNlKDEsImxvYWRpbmciKSx0ZSgpKX1mdW5jdGlvbiBKeXQobixlKXsxJm4mJihKKDAsInNw'@; put 'YW4iLDcpLFNlKDEsImxvYWRlZCIpLHRlKCkpfWZ1bmN0aW9uIGVidChuLGUpezEmbiYmKEooMCwic3BhbiIsOCksU2UoMSwiZmFpbGVkIiksdGUoKSl9ZnVuY3Rpb24gdGJ0KG4sZSl7aWYoMSZuJiYoSigwLCJwIikoMSwiY29kZSIpLFNlKDIpLHRlKCksU2UoMywiIFx4YTAgIiksdnQoNCxR'@; put 'eXQsMiwwLCJzcGFuIiw2KSx2dCg1LEp5dCwyLDAsInNwYW4iLDcpLHZ0KDYsZWJ0LDIsMCwic3BhbiIsOCksdGUoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKDIpLHByKHQucHJvZ3JhbSksaWUoMiksX3QodC5ydW5uaW5nPzQ6LTEpLGllKCksX3QoIXQucnVubmluZyYmdC5zdWNj'@; put 'ZXNzZnVsPzU6LTEpLGllKCksX3QodC5ydW5uaW5nfHx0LnN1Y2Nlc3NmdWw/LTE6Nil9fWZ1bmN0aW9uIG5idChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXNpZ25wb3N0LWNvbnRlbnQiLDUpLF9vKDEsdGJ0LDcsNCwicCIsbnVsbCxDbyksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7cnQoImNs'@; put 'clBvc2l0aW9uIiwiYm90dG9tLW1pZGRsZSIpLGllKCkseW8odC5yZXF1ZXN0cyl9fWxldCByYnQ9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMubG9hZGluZz0hMSx0aGlzLnJlcXVlc3RzPVtdLHRoaXMuX2xvYWRpbmdTdWI9bmV3IEFyfW5nT25Jbml0KCl7fW5nT25E'@; put 'ZXN0cm95KCl7dGhpcy5fbG9hZGluZ1N1Yi51bnN1YnNjcmliZSgpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtbG9hZGluZy1pbmRpY2F0b3IiXV0s'@; put 'c3RhbmRhbG9uZTohMSxkZWNsczo2LHZhcnM6Nixjb25zdHM6W1sxLCJsb2FkaW5nLWluZGljYXRvciJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwxLCJzcGlubmVyIiwic3Bpbm5lci1zbSIsInNwaW5uZXItaW52ZXJzZSJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwic2hhcGUiLCJj'@; put 'aGVjayIsInNpemUiLCIyMCIsMSwiaXMtaW5mbyJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwic2hhcGUiLCJlcnJvciIsInNpemUiLCIyNCIsMSwiaXMtZXJyb3IiXSxbMywiY2xyUG9zaXRpb24iLDQsImNscklmT3BlbiJdLFszLCJjbHJQb3NpdGlvbiJdLFsxLCJydW5uaW5nIl0sWzEs'@; put 'InN1Y2Nlc3MiXSxbMSwiZmFpbCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmKEooMCwiZGl2IiwwKSgxLCJjbHItc2lnbnBvc3QiKSxJdCgyLCJzcGFuIiwxKSgzLCJjbHItaWNvbiIsMikoNCwiY2xyLWljb24iLDMpLFluKDUsbmJ0LDMsMSwiY2xyLXNpZ25wb3N0LWNvbnRlbnQi'@; put 'LDQpLHRlKCkoKSksMiZpJiYoaWUoMiksTzIoImRpc3BsYXkiLG8ubG9hZGluZz8iaW5saW5lLWJsb2NrIjoibm9uZSIpLGllKCksTzIoImRpc3BsYXkiLCFvLmxvYWRpbmcmJm8ucmVxdWVzdHMubGVuZ3RoPjAmJm8ucmVxdWVzdHNbMF0uc3VjY2Vzc2Z1bD8iaW5saW5lLWJsb2NrIjoibm9u'@; put 'ZSIpLGllKCksTzIoImRpc3BsYXkiLCFvLmxvYWRpbmcmJm8ucmVxdWVzdHMubGVuZ3RoPjAmJiFvLnJlcXVlc3RzWzBdLnN1Y2Nlc3NmdWw/ImlubGluZS1ibG9jayI6Im5vbmUiKSl9LGRlcGVuZGVuY2llczpbY3UsTHAscXosSkVlLCR6XSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4o'@; put 'KSxlfSkoKTtmdW5jdGlvbiBpYnQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNkcy1pY29uIiwxMSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnRvZ2dsZURhcmtNb2RlKCEwKSl9KSx0ZSgpfX1mdW5jdGlvbiBvYnQobixlKXtpZigxJm4pe2Nv'@; put 'bnN0IHQ9d24oKTtKKDAsImNkcy1pY29uIiwxMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnRvZ2dsZURhcmtNb2RlKCExKSl9KSx0ZSgpfX1mdW5jdGlvbiBhYnQobixlKXtpZigxJm4mJihKKDAsInNwYW4iKSxJdCgxLCJpbWciLDEzKSx0ZSgpKSwyJm4p'@; put 'e2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJzcmMiLHpqKHQuZ2V0UGljdHVyZVVybCgpKSxLayl9fWZ1bmN0aW9uIHNidChuLGUpe2lmKDEmbiYmKEooMCwic3BhbiIsMTQpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO3dyKCJoaWRkZW4iLDA9PT10LmZhaWxlZFJlcXMubGVuZ3RoKSxp'@; put 'ZSgpLHByKHQuZmFpbGVkUmVxcy5sZW5ndGgpfX1mdW5jdGlvbiBsYnQobixlKXtpZigxJm4mJihKKDAsInNwYW4iLDE1KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTt3cigiaGlkZGVuIiwwPT09dC5kZWJ1Z0xvZ3MubGVuZ3RoKSxpZSgpLHByKHQuZGVidWdMb2dzLmxlbmd0aCl9'@; put 'fWZ1bmN0aW9uIGNidChuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDkpfWZ1bmN0aW9uIHVidChuLGUpezEmbiYmKEooMCwiYSIsMjEpKDEsInNwYW4iLDI3KSxTZSgyLCJEb2N1bWVudGF0aW9uIiksdGUoKSgpKX1mdW5jdGlvbiBkYnQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAs'@; put 'ImNsci1kcm9wZG93bi1tZW51IiwxNikoMSwiZGl2IiwxNywwKSgzLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMTgpLHd0KCJjbGljayIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1vbygyKTtyZXR1cm4gWGUoVGUoKS5vbkRlYnVnUm93Q2xpY2soaSxvKSl9KSxKKDQsImNsci10b2dnbGUt'@; put 'd3JhcHBlciIpKDUsImlucHV0IiwxOSksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKTtyZXR1cm4gZmkoby5zYXNqc0NvbmZpZy5kZWJ1ZyxpKXx8KG8uc2FzanNDb25maWcuZGVidWc9aSksWGUoaSl9KSx3dCgibmdNb2RlbENoYW5nZSIsZnVuY3Rp'@; put 'b24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbkRlYnVnTW9kZUNoYW5nZSgpKX0pLHRlKCksSig2LCJsYWJlbCIpLFNlKDcsIkRlYnVnIE1vZGUiKSx0ZSgpKCkoKSgpLEooOCwiYSIsMjApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vcGVuUmVxdWVzdHNN'@; put 'b2RhbCgpKX0pLEooOSwic3BhbiIpLFNlKDEwLCJTQVMgUmVxdWVzdHMiKSx0ZSgpKCksdnQoMTEsdWJ0LDMsMCwiYSIsMjEpLEl0KDEyLCJkaXYiLDIyKSxKKDEzLCJhIiwyMykoMTQsInNwYW4iKSxTZSgxNSwiU3lzdGVtIiksdGUoKSgpLEooMTYsImEiLDI0KSx3dCgiY2xpY2siLGZ1bmN0'@; put 'aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgpLmxvZ291dChpKSl9KSxKKDE3LCJzcGFuIiksU2UoMTgsIkxvZyBPdXQiKSx0ZSgpLEl0KDE5LCJjbHItaWNvbiIsMjUpLHRlKCksSigyMCwiZGl2IiwyNikoMjEsInNwYW4iKSxTZSgyMiksdGUoKSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7'@; put 'aWUoNSksZGkoIm5nTW9kZWwiLHQuc2FzanNDb25maWcuZGVidWcpLGllKDYpLF90KHQuaXNEZXBsb3lQYWdlPy0xOjExKSxpZSgxMSksU3IoInYiLHQuY29tbWl0VmVyKX19bGV0IGhidD0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEpe3RoaXMudXNlclNlcnZpY2U9'@; put 'cix0aGlzLnNhc1NlcnZpY2U9aSx0aGlzLmV2ZW50U2VydmljZT1vLHRoaXMucm91dGVyPWEsdGhpcy51c2VyTmFtZT0iTm90IGxvZ2dlZCBpbiIsdGhpcy5yZXFTdWI9bmV3IEFyLHRoaXMudXNlclN1Yj1uZXcgQXIsdGhpcy5hcHBMb2dzPVtdLHRoaXMuZGVidWdMb2dzPVtdLHRoaXMuZmFp'@; put 'bGVkUmVxcz1bXSx0aGlzLnNhc0Vycm9ycz1bXSx0aGlzLmlzVml5YT0hMSx0aGlzLnNhc2pzQ29uZmlnPW5ldyB4cC5TQVNqc0NvbmZpZyx0aGlzLnJlcXVlc3RzQ291bnQ9MCx0aGlzLmNvbW1pdFZlcj0iIix0aGlzLmRhcmtNb2RlPXRoaXMuZXZlbnRTZXJ2aWNlLmRhcmtNb2RlfW5nT25J'@; put 'bml0KCl7dGhpcy51c2VyU3ViPXRoaXMudXNlclNlcnZpY2UudXNlckNoYW5nZS5zdWJzY3JpYmUocj0+e3RoaXMudXNlck5hbWU9ci51c2VybmFtZX0pLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksIlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZp'@; put 'Zy5zZXJ2ZXJUeXBlJiYodGhpcy5pc1ZpeWE9ITApLHRoaXMuY29tbWl0VmVyPSJ2Ny4xNi4wIi5yZXBsYWNlKCJ2IiwiIikrIi5nNzkxODllZiJ9bmdPbkRlc3Ryb3koKXt0aGlzLnJlcVN1Yi51bnN1YnNjcmliZSgpLHRoaXMudXNlclN1Yi51bnN1YnNjcmliZSgpfXRvZ2dsZURhcmtNb2Rl'@; put 'KHIpe3RoaXMuZXZlbnRTZXJ2aWNlLnRvZ2dsZURhcmtNb2RlKHIpfW9wZW5SZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub3BlblJlcXVlc3RzTW9kYWwoKX1vbkRlYnVnTW9kZUNoYW5nZShyKXt0aGlzLnNhc2pzQ29uZmlnJiZ0aGlzLnNhc1NlcnZpY2Uuc2V0RGVidWdTdGF0'@; put 'ZSh0aGlzLnNhc2pzQ29uZmlnLmRlYnVnKX1vbkRlYnVnUm93Q2xpY2socixpKXtyLnN0b3BQcm9wYWdhdGlvbigpLFVuLnVzZXJEcm9wZG93bkNvbmZpZy5jbG9zZU9uRGVidWdDbGljayYmc2V0VGltZW91dCgoKT0+e2kuY2xpY2soKX0sMzAwKX1sb2dvdXQocil7ci5wcmV2ZW50RGVmYXVs'@; put 'dCgpO3RyeXt0aGlzLnNhc1NlcnZpY2UubG9nb3V0KCl9Y2F0Y2goaSl7Y29uc29sZS5lcnJvcihpKX19Z2V0UGljdHVyZVVybCgpe3JldHVybmAke3RoaXMuc2FzanNDb25maWcuc2VydmVyVXJsfS9pZGVudGl0aWVzL3VzZXJzLyR7dGhpcy51c2VyTmFtZX0vYXZhdGFyL2NvbnRlbnRgfWdl'@; put 'dCBpc0RlcGxveVBhZ2UoKXtyZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZShwaWUpLHplKGljKSx6ZSh1ZCksemUodmMpKX0sdGhpcy5cdTAyNzVjbXA9'@; put 'UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWhlYWRlci1hY3Rpb25zIl1dLHN0YW5kYWxvbmU6ITEsZGVjbHM6MTQsdmFyczo3LGNvbnN0czpbWyJkcm9wZG93bkl0ZW1EZWJ1ZyIsIiJdLFsxLCJoZWFkZXItYWN0aW9ucyJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVy'@; put 'Il0sWyJzaXplIiwibWQiLCJzaGFwZSIsIm1vb24iLCJpbnZlcnNlIiwiZmFsc2UiLCJzb2xpZCIsImZhbHNlIiwxLCJ0aGVtZS10b2dnbGUtaWNvbiIsImN1cnNvci1wb2ludGVyIl0sWyJzaXplIiwibWQiLCJzaGFwZSIsInN1biIsImludmVyc2UiLCJmYWxzZSIsInNvbGlkIiwiZmFsc2Ui'@; put 'LDEsInRoZW1lLXRvZ2dsZS1pY29uIiwiY3Vyc29yLXBvaW50ZXIiXSxbMSwiYXBwLW5hdi1kcm9wZG93biJdLFsiY2xyRHJvcGRvd25Ub2dnbGUiLCIiLDEsIm5hdi10ZXh0IiwiY29sb3Itd2hpdGUiLCJ1c2VyLW5hdi10b2dnbGUiXSxbMSwiYmFkZ2UiLCJiYWRnZS1kYW5nZXIiLDMsImhp'@; put 'ZGRlbiJdLFsxLCJiYWRnZSIsImJhZGdlLWluZm8iLDMsImhpZGRlbiJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjYXJldCBkb3duIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsNCwiY2xySWZPcGVuIl0sWyJzaXplIiwibWQiLCJzaGFwZSIsIm1vb24iLCJpbnZl'@; put 'cnNlIiwiZmFsc2UiLCJzb2xpZCIsImZhbHNlIiwxLCJ0aGVtZS10b2dnbGUtaWNvbiIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2l6ZSIsIm1kIiwic2hhcGUiLCJzdW4iLCJpbnZlcnNlIiwiZmFsc2UiLCJzb2xpZCIsImZhbHNlIiwxLCJ0aGVtZS10b2dnbGUtaWNvbiIsImN1'@; put 'cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsiYWx0IiwicHJvZmlsZSBwaWN0dXJlIiwxLCJhdmF0YXItaW1nIiwzLCJzcmMiXSxbMSwiYmFkZ2UiLCJiYWRnZS1kYW5nZXIiXSxbMSwiYmFkZ2UiLCJiYWRnZS1pbmZvIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCJdLFsiY2xyRHJv'@; put 'cGRvd25JdGVtIiwiIiwxLCJkZWJ1Zy1zd2l0Y2gtaXRlbSJdLFsxLCJ0b2dnbGUtc3dpdGNoIiwzLCJjbGljayJdLFsiaWQiLCJkZWJ1Zy10b2dnbGUxIiwidHlwZSIsImNoZWNrYm94IiwiY2xyVG9nZ2xlIiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsiY2xyRHJvcGRvd25J'@; put 'dGVtIiwiIiwzLCJjbGljayJdLFsidGFyZ2V0IiwiX2JsYW5rIiwiaHJlZiIsImh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pbyIsImNsckRyb3Bkb3duSXRlbSIsIiJdLFsxLCJzZXBhcmF0b3IiXSxbImhyZWYiLCIuLi4iLCJyb3V0ZXJMaW5rIiwiL3N5c3RlbSIsImNsckRyb3Bkb3du'@; put 'SXRlbSIsIiJdLFsiaHJlZiIsIi4uLiIsImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwibG9nb3V0IiwxLCJjbHItbG9nb3V0Il0sWzEsImNvcHlSaWdodCJdLFsxLCJkcm9wZG93bi10ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0aW9u'@; put 'KGksbyl7MSZpJiYoSigwLCJkaXYiLDEpKDEsImRpdiIsMiksdnQoMixpYnQsMSwwLCJjZHMtaWNvbiIsMyksdnQoMyxvYnQsMSwwLCJjZHMtaWNvbiIsNCksdGUoKSxJdCg0LCJhcHAtbG9hZGluZy1pbmRpY2F0b3IiKSxKKDUsImNsci1kcm9wZG93biIsNSkoNiwiYnV0dG9uIiw2KSg3LCJz'@; put 'cGFuIiksU2UoOCksdGUoKSx2dCg5LGFidCwyLDIsInNwYW4iKSx2dCgxMCxzYnQsMiwzLCJzcGFuIiw3KSx2dCgxMSxsYnQsMiwzLCJzcGFuIiw4KSx2dCgxMixjYnQsMSwwLCJjbHItaWNvbiIsOSksdGUoKSxZbigxMyxkYnQsMjMsMywiY2xyLWRyb3Bkb3duLW1lbnUiLDEwKSx0ZSgpKCkp'@; put 'LDImaSYmKGllKDIpLF90KG8uZGFya01vZGUudmFsdWU/LTE6MiksaWUoKSxfdChvLmRhcmtNb2RlLnZhbHVlPzM6LTEpLGllKDUpLHByKG8udXNlck5hbWUpLGllKCksX3QoIk5vdCBsb2dnZWQgaW4iIT09by51c2VyTmFtZSYmby5pc1ZpeWE/OTotMSksaWUoKSxfdChvLnNhc2pzQ29uZmln'@; put 'LmRlYnVnPy0xOjEwKSxpZSgpLF90KG8uc2FzanNDb25maWcuZGVidWc/MTE6LTEpLGllKCksX3Qoby5pc1ZpeWE/LTE6MTIpKX0sZGVwZW5kZW5jaWVzOltIMixvYyxYbCxQMixjdSxKcyxMcCxlbCxVMixFdixGZixvNyxqYixVYixwTSxyYnRdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4g'@; put 'bigpLGV9KSgpLG1UZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7dGhpcy5hbGVydHM9bmV3IE1yfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTpl'@; put 'Llx1MDI3NWZhY30pKX1yZXR1cm4gbigpLGV9KSgpO2Z1bmN0aW9uIGZidChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWFsZXJ0IiwxKSxoaSgiY2xyQWxlcnRDbG9zZWRDaGFuZ2UiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0O3JldHVybiBmaShvLmNs'@; put 'b3NlZCxpKXx8KG8uY2xvc2VkPWkpLFhlKGkpfSksd3QoImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5vbkFsZXJ0Q2xvc2UoKSl9KSxKKDEsImRpdiIsMikoMiwic3BhbiIsMyksU2UoMyksdGUoKSgpKCl9aWYoMiZuKXtjb25zdCB0PWUu'@; put 'JGltcGxpY2l0O3J0KCJjbHJBbGVydFR5cGUiLHQudHlwZSkoImNsckFsZXJ0QXBwTGV2ZWwiLCEwKSxkaSgiY2xyQWxlcnRDbG9zZWQiLHQuY2xvc2VkKSxpZSgzKSxTcigiICIsdC5tZXNzYWdlLCIgIil9fWZ1bmN0aW9uIHBidChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWFsZXJ0cyIpLF9v'@; put 'KDEsZmJ0LDQsNCwiY2xyLWFsZXJ0IiwwLENvKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHlvKHQuYWxlcnRzKX19bGV0IGdidD0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIpe3RoaXMuX2FsZXJ0c1NlcnZpY2U9cix0aGlzLmFsZXJ0cz1bXSx0aGlzLmhhc09wZW5B'@; put 'bGVydD0hMSx0aGlzLmFsZXJ0c1N1Yj1uZXcgQXJ9bmdPbkluaXQoKXt0aGlzLmFsZXJ0c1N1Yj10aGlzLl9hbGVydHNTZXJ2aWNlLmFsZXJ0cy5zdWJzY3JpYmUocj0+e3RoaXMuYWxlcnRzLnB1c2gociksdGhpcy5oYXNPcGVuQWxlcnQ9ITAsci5lcnImJmNvbnNvbGUuZXJyb3Ioci5lcnIp'@; put 'fSl9b25BbGVydENsb3NlKCl7dGhpcy5oYXNPcGVuQWxlcnQ9dGhpcy5hbGVydHMuc29tZShyPT4hci5jbG9zZWQpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKG1UZSkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNl'@; put 'bGVjdG9yczpbWyJhcHAtYWxlcnRzIl1dLHN0YW5kYWxvbmU6ITEsZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbMywiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRBcHBMZXZlbCIsImNsckFsZXJ0Q2xvc2VkIl0sWzMsImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIiwiY2xyQWxlcnRUeXBlIiwiY2xyQWxl'@; put 'cnRBcHBMZXZlbCIsImNsckFsZXJ0Q2xvc2VkIl0sWzEsImFsZXJ0LWl0ZW0iXSxbMSwiYWxlcnQtdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmdnQoMCxwYnQsMywwLCJjbHItYWxlcnRzIiksMiZpJiZfdChvLmhhc09wZW5BbGVydD8wOi0xKX0sZGVwZW5kZW5jaWVzOlta'@; put 'RCxRTWUsR0RdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpLF9XPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IoKXt0aGlzLmNsYXNzZXM9IiJ9bmdPbkluaXQoKXt9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXco'@; put 'aXx8ZSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImNvbnRhY3QtbGluayJdXSxpbnB1dHM6e2NsYXNzZXM6ImNsYXNzZXMifSxzdGFuZGFsb25lOiExLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWyJocmVmIiwibWFpbHRvOnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIu'@; put 'aW8/c3ViamVjdD1MaWNlbmNlIiwzLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJhIiwwKSxTZSgxLCJzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksdGUoKSksMiZpJiYod3IoInVuc2V0IiwiIiE9PW8uY2xhc3NlcykscnQoIm5nQ2xhc3MiLG8uY2xh'@; put 'c3NlcykpfSxkZXBlbmRlbmNpZXM6W0ZoXSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKSx2VGU9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMub3B0aW9uc1N1YmplY3QkPW5ldyBNcix0aGlzLnJlc3VsdENoYW5nZSQ9bmV3IE1yfW9wZW4ocil7cmV0'@; put 'dXJuIHRoaXMub3B0aW9uc1N1YmplY3QkLm5leHQoe29wZW46ITAsLi4ucn0pLHRoaXMucmVzdWx0Q2hhbmdlJD1uZXcgTXIsdGhpcy5yZXN1bHRDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpfWNsb3NlKHIpe3RoaXMub3B0aW9uc1N1YmplY3QkLm5leHQoe29wZW46ITF9KSx0aGlzLnJlc3VsdENo'@; put 'YW5nZSQubmV4dCh7cGFzc3dvcmQ6cn0pLHRoaXMucmVzdWx0Q2hhbmdlJC5jb21wbGV0ZSgpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhYyxw'@; put 'cm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpO2Z1bmN0aW9uIG1idChuLGUpezEmbiYmKEooMCwicCIsOCksU2UoMSwiU29ycnkgdGhhdCBkaWRuJ3Qgd29yaywgdHJ5IGFnYWluLiIpLHRlKCkpfWZ1bmN0aW9uIHZidChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwi'@; put 'ZGl2IiwxKSgxLCJjbHItbW9kYWwiLDIpKDIsImgzIiwzKSxTZSgzLCIgUGFzc3dvcmQgUHJvdGVjdGVkIEZpbGUgIiksdGUoKSxKKDQsImRpdiIsNCkoNSwicCIsNSksU2UoNiwiUGxlYXNlIGVudGVyIHBhc3N3b3JkOiIpLHRlKCksSig3LCJpbnB1dCIsNiwwKSxoaSgibmdNb2RlbENoYW5n'@; put 'ZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLnBhc3N3b3JkSW5wdXQsaSl8fChvLnBhc3N3b3JkSW5wdXQ9aSksWGUoaSl9KSx0ZSgpKCksSig5LCJkaXYiLDcpKDEwLCJkaXYiKSx2dCgxMSxtYnQsMiwwLCJwIiw4KSx0ZSgpLEooMTIsImRpdiIsOSkoMTMs'@; put 'ImJ1dHRvbiIsMTApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5jbG9zZSgpKX0pLFNlKDE0LCIgQ2FuY2VsICIpLHRlKCksSigxNSwiYnV0dG9uIiwxMSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9b28oOCk7cmV0dXJuIFhlKFRlKCku'@; put 'Y2xvc2UoaS52YWx1ZSkpfSksU2UoMTYsIiBVbmxvY2sgIiksdGUoKSgpKCkoKSgpfWlmKDImbil7Y29uc3QgdD1lLHI9b28oOCksaT1UZSgpO2llKCkscnQoImNsck1vZGFsT3BlbiIsdC5vcGVuKSgiY2xyTW9kYWxTaXplIiwibWQiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDYpLGRp'@; put 'KCJuZ01vZGVsIixpLnBhc3N3b3JkSW5wdXQpLGllKDQpLF90KHQuZXJyb3I/MTE6LTEpLGllKDQpLHJ0KCJkaXNhYmxlZCIsci52YWx1ZS5sZW5ndGg8MSl9fWxldCBfYnQ9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyKXt0aGlzLmV4Y2VsUGFzc3dvcmRNb2RhbFNlcnZpY2U9'@; put 'cix0aGlzLm9wdGlvbnMkPXRoaXMuZXhjZWxQYXNzd29yZE1vZGFsU2VydmljZS5vcHRpb25zU3ViamVjdCQsdGhpcy5maWxlVW5sb2NrRXJyb3I9ITEsdGhpcy5wYXNzd29yZElucHV0PSIifWNsb3NlKHIpe3RoaXMucGFzc3dvcmRJbnB1dD0iIix0aGlzLmV4Y2VsUGFzc3dvcmRNb2RhbFNl'@; put 'cnZpY2UuY2xvc2Uocil9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUodlRlKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1leGNlbC1wYXNzd29yZC1tb2RhbCJdXSxzdGFuZGFsb25lOiEx'@; put 'LGRlY2xzOjIsdmFyczozLGNvbnN0czpbWyJmaWxlUGFzc3dvcmRJbnB1dCIsIiJdLFsxLCJleGNlbC1wYXNzd29yZC1yb290Il0sWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRl'@; put 'ciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm1vZGFsLWJvZHkiLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJtLTAiXSxbImRhdGEtbHBpZ25vcmUiLCJ0cnVlIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwiaWQiLCJmaWxlUGFzc3dvcmRJbnB1dCIsInR5cGUi'@; put 'LCJ0ZXh0IiwxLCJjbHItaW5wdXQiLCJkaXNhYmxlLXBhc3N3b3JkLW1hbmFnZXIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsxLCJtLTAiLCJjb2xvci1yZWQiXSxbMSwiYnV0dG9ucyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNt'@; put 'IiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbGljayIsImRpc2FibGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7aWYoMSZpJiYodnQoMCx2YnQsMTcsNiwiZGl2IiwxKSxBYygx'@; put 'LCJhc3luYyIpKSwyJmkpe2xldCBhO190KChhPVRkKDEsMSxvLm9wdGlvbnMkKSk/MDotMSxhKX19LGRlcGVuZGVuY2llczpbbHUsb2MsWGwseGQsbWgsbUldLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpLHFEPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IoKXt0'@; put 'aGlzLmZpbGVPdmVyPSExLHRoaXMuZmlsZURyb3BwZWQ9bmV3IEtyLHRoaXMuZmlsZURyYWdnZWRPdmVyPW5ldyBLcn1vbkRyYWdPdmVyKHIpe3IucHJldmVudERlZmF1bHQoKSxyLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY29udGFpbnNGaWxlcyhyKSYmIXRoaXMuZmlsZU92ZXImJih0aGlz'@; put 'LmZpbGVPdmVyPSEwLHRoaXMuZmlsZURyYWdnZWRPdmVyLmVtaXQoKSl9b25EcmFnTGVhdmUocil7ci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5maWxlT3Zlcj0hMX1vbmRyb3Aocil7ci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCksdGhp'@; put 'cy5maWxlT3Zlcj0hMTtjb25zdCBpPXIuZGF0YVRyYW5zZmVyLmZpbGVzO2kubGVuZ3RoPjAmJnRoaXMuZmlsZURyb3BwZWQuZW1pdChpKX1jb250YWluc0ZpbGVzKHIpe2lmKHImJnIuZGF0YVRyYW5zZmVyJiZyLmRhdGFUcmFuc2Zlci50eXBlcylmb3IobGV0IGk9MDtpPHIuZGF0YVRyYW5z'@; put 'ZmVyLnR5cGVzLmxlbmd0aDtpKyspaWYoIkZpbGVzIj09ci5kYXRhVHJhbnNmZXIudHlwZXNbaV0pcmV0dXJuITB9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1ZGlyPSRyKHt0eXBlOmUsc2VsZWN0b3JzOltb'@; put 'IiIsImFwcERyYWdOZHJvcCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihpLG8pezEmaSYmd3QoImRyYWdvdmVyIixmdW5jdGlvbihsKXtyZXR1cm4gby5vbkRyYWdPdmVyKGwpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24obCl7cmV0dXJuIG8ub25EcmFnTGVhdmUobCl9'@; put 'KSgiZHJvcCIsZnVuY3Rpb24obCl7cmV0dXJuIG8ub25kcm9wKGwpfSksMiZpJiZ3cigiZmlsZW92ZXIiLG8uZmlsZU92ZXIpfSxvdXRwdXRzOntmaWxlRHJvcHBlZDoiZmlsZURyb3BwZWQiLGZpbGVEcmFnZ2VkT3ZlcjoiZmlsZURyYWdnZWRPdmVyIn0sc3RhbmRhbG9uZTohMX0pKX1yZXR1'@; put 'cm4gbigpLGV9KSgpO2NvbnN0IF9UZT0oKT0+W107ZnVuY3Rpb24geWJ0KG4sZSl7MSZuJiYoSigwLCJwIiw0KSxTZSgxLCJObyByZXF1ZXN0cyBtYWRlIiksdGUoKSl9ZnVuY3Rpb24gYmJ0KG4sZSl7MSZuJiYoSigwLCJzcGFuIiksSXQoMSwiY2xyLWljb24iLDEwKSx0ZSgpKX1mdW5jdGlv'@; put 'biB3YnQobixlKXsxJm4mJihKKDAsInNwYW4iKSxJdCgxLCJjbHItaWNvbiIsMTEpLHRlKCkpfWZ1bmN0aW9uIENidChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMTcpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdCxv'@; put 'PVRlKDMpLiRpbmRleDtyZXR1cm4gWGUoVGUoMikuZ29Ub0xvZ0xpbmUoaSwicmVxdWVzdF8iK28sImVycm9yIikpfSksSigxLCJidXR0b24iLDE4KSxTZSgyKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKDIpLFNyKCIgIix0LCIgIil9fWZ1bmN0aW9uIFNidChuLGUp'@; put 'e2lmKDEmbiYmKEooMCwiY2xyLXRyZWUtbm9kZSIsMTIpLEl0KDEsImNsci1pY29uIiwxNiksU2UoMiksX28oMyxDYnQsMywxLCJjbHItdHJlZS1ub2RlIixudWxsLENvKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMikuJGltcGxpY2l0O2llKDIpLFNyKCIgRXJyb3JzICgiLHQubG9nRXJyb3Jz'@; put 'Lmxlbmd0aCwiKSAiKSxpZSgpLHlvKHQubG9nRXJyb3JzfHxtYygxLF9UZSkpfX1mdW5jdGlvbiBFYnQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDE3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQsbz1UZSgzKS4k'@; put 'aW5kZXg7cmV0dXJuIFhlKFRlKDIpLmdvVG9Mb2dMaW5lKGksInJlcXVlc3RfIitvLCJ3YXJuaW5nIikpfSksSigxLCJidXR0b24iLDE4KSxTZSgyKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKDIpLFNyKCIgIix0LCIgIil9fWZ1bmN0aW9uIE1idChuLGUpe2lmKDEm'@; put 'biYmKEooMCwiY2xyLXRyZWUtbm9kZSIsMTIpLEl0KDEsImNsci1pY29uIiwxOSksU2UoMiksX28oMyxFYnQsMywxLCJjbHItdHJlZS1ub2RlIixudWxsLENvKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMikuJGltcGxpY2l0O2llKDIpLFNyKCIgV2FybmluZ3MgKCIsdC5sb2dXYXJuaW5ncy5s'@; put 'ZW5ndGgsIikgIiksaWUoKSx5byh0LmxvZ1dhcm5pbmdzfHxtYygxLF9UZSkpfX1mdW5jdGlvbiBUYnQobixlKXsxJm4mJkl0KDAsImRpdiIsMTMpLDImbiYmcnQoImlubmVySFRNTCIsVGUoMikuJGltcGxpY2l0LmxvZ0ZpbGUseDUpfWZ1bmN0aW9uIHhidChuLGUpezEmbiYmSXQoMCwiZGl2'@; put 'IiwxNCksMiZuJiZydCgidGV4dENvbnRlbnQiLFRlKDIpLiRpbXBsaWNpdC5sb2dGaWxlKX1mdW5jdGlvbiBBYnQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsMjApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpLiRpbXBsaWNpdDtyZXR1'@; put 'cm4gWGUoVGUoMikuZG93bmxvYWRMb2coaS5sb2dGaWxlKSl9KSxTZSgxLCIgRG93bmxvYWQgIiksdGUoKX19ZnVuY3Rpb24ga2J0KG4sZSl7aWYoMSZuJiYoSigwLCJjbHItdGFiLWNvbnRlbnQiKSgxLCJjbHItdHJlZSIpLHZ0KDIsU2J0LDUsMiwiY2xyLXRyZWUtbm9kZSIsMTIpLHZ0KDMs'@; put 'TWJ0LDUsMiwiY2xyLXRyZWUtbm9kZSIsMTIpLHRlKCksdnQoNCxUYnQsMSwxLCJkaXYiLDEzKSx2dCg1LHhidCwxLDEsImRpdiIsMTQpLHZ0KDYsQWJ0LDIsMCwiYnV0dG9uIiwxNSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0LHI9VGUoMik7aWUoMiksX3QodC5sb2dFcnJv'@; put 'cnM/MjotMSksaWUoKSxfdCh0LmxvZ1dhcm5pbmdzPzM6LTEpLGllKCksX3QoIlNBU1ZJWUEiIT09ci5zZXJ2ZXJUeXBlPzQ6LTEpLGllKCksX3QoIlNBU1ZJWUEiPT09ci5zZXJ2ZXJUeXBlPzU6LTEpLGllKCksX3QodC5sb2dGaWxlLmxlbmd0aD4wPzY6LTEpfX1mdW5jdGlvbiBSYnQobixl'@; put 'KXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsMjApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMikuZG93bmxvYWRTb3VyY2VDb2RlKGkuc291cmNlQ29kZSkpfSksU2UoMSwiIERvd25sb2FkICIpLHRl'@; put 'KCl9fWZ1bmN0aW9uIElidChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyMSksU2UoMiksdGUoKSx2dCgzLFJidCwyLDAsImJ1dHRvbiIsMTUpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDtpZSgyKSxTcigiICIsdC5zb3VyY2VDb2RlLCIg'@; put 'IiksaWUoKSxfdCh0LnNvdXJjZUNvZGUubGVuZ3RoPjA/MzotMSl9fWZ1bmN0aW9uIERidChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiwyMCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMikuJGltcGxpY2l0O3JldHVybiBYZShUZSgyKS5k'@; put 'b3dubG9hZEdlbmVyYXRlZENvZGUoaS5nZW5lcmF0ZWRDb2RlKSl9KSxTZSgxLCIgRG93bmxvYWQgIiksdGUoKX19ZnVuY3Rpb24gTGJ0KG4sZSl7aWYoMSZuJiYoSigwLCJjbHItdGFiLWNvbnRlbnQiKSgxLCJkaXYiLDIxKSxTZSgyKSx0ZSgpLHZ0KDMsRGJ0LDIsMCwiYnV0dG9uIiwxNSks'@; put 'dGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKDIpLFNyKCIgIix0LmdlbmVyYXRlZENvZGUsIiAiKSxpZSgpLF90KHQuZ2VuZXJhdGVkQ29kZS5sZW5ndGg+MD8zOi0xKX19ZnVuY3Rpb24gT2J0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDI3KSx3dCgi'@; put 'Y2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKDMpLiRpbXBsaWNpdC5zZWxlY3RlZFRhYmxlPWkua2V5KX0pLFNlKDEpLHRlKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O3dyKCJzZWxlY3RlZCIsVGUoMykuJGltcGxpY2l0LnNlbGVj'@; put 'dGVkVGFibGU9PT10LmtleSksaWUoKSxTcigiICIsdC5rZXksIiAiKX19ZnVuY3Rpb24gTmJ0KG4sZSl7aWYoMSZuJiYoSigwLCJjbHItZHJvcGRvd24tbWVudSIpLF9vKDEsT2J0LDIsMywiZGl2IiwyNixDbyksQWMoMywia2V5dmFsdWUiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMikuJGlt'@; put 'cGxpY2l0O2llKCkseW8oVGQoMywwLHQuU0FTV09SSykpfX1mdW5jdGlvbiBGYnQobixlKXtpZigxJm4mJihKKDAsInAiLDI4KSgxLCJzdHJvbmciKSxTZSgyKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgzKS4kaW1wbGljaXQ7aWUoMiksU3IoIiIsdC5zZWxlY3RlZFRhYmxlLCIgKGZpcnN0'@; put 'IDEwIHJvd3MpICIpfX1mdW5jdGlvbiBQYnQobixlKXtpZigxJm4mJihKKDAsInRoIiksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKCksU3IoIiAiLHQua2V5LCIgIil9fWZ1bmN0aW9uIEhidChuLGUpe2lmKDEmbiYmKEooMCwidGQiKSxTZSgxKSx0ZSgpKSwyJm4p'@; put 'e2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgpLiRpbXBsaWNpdDtpZSgpLFNyKCIgIixyW3Qua2V5XSwiICIpfX1mdW5jdGlvbiBWYnQobixlKXtpZigxJm4mJihKKDAsInRyIiksX28oMSxIYnQsMiwxLCJ0ZCIsbnVsbCxDbyksQWMoMywia2V5dmFsdWUiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9'@; put 'VGUoNCkuJGltcGxpY2l0O2llKCkseW8oVGQoMywwLHQuU0FTV09SS1t0LnNlbGVjdGVkVGFibGVdLmZpcnN0MTByb3dzWzBdKSl9fWZ1bmN0aW9uIEJidChuLGUpe2lmKDEmbiYmKEooMCwidGFibGUiLDMwKSgxLCJ0aGVhZCIpKDIsInRyIiksX28oMyxQYnQsMiwxLCJ0aCIsbnVsbCxDbyks'@; put 'QWMoNSwia2V5dmFsdWUiKSx0ZSgpKCksSig2LCJ0Ym9keSIpLF9vKDcsVmJ0LDQsMiwidHIiLG51bGwsQ28pLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDMpLiRpbXBsaWNpdDtpZSgzKSx5byhUZCg1LDAsdC5TQVNXT1JLW3Quc2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJvd3NbMF0pKSxpZSg0'@; put 'KSx5byh0LlNBU1dPUktbdC5zZWxlY3RlZFRhYmxlXS5maXJzdDEwcm93cyl9fWZ1bmN0aW9uIGpidChuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRhYi1jb250ZW50IiksdnQoMSxGYnQsMywxLCJwIiwyOCksSigyLCJkaXYiLDI5KSx2dCgzLEJidCw5LDIsInRhYmxlIiwzMCksdGUoKSgpKSwy'@; put 'Jm4pe2NvbnN0IHQ9VGUoMikuJGltcGxpY2l0O2llKCksX3QodC5zZWxlY3RlZFRhYmxlPzE6LTEpLGllKDIpLF90KHQuc2VsZWN0ZWRUYWJsZT8zOi0xKX19ZnVuY3Rpb24gVWJ0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdGFiIikoMSwiY2xyLWRyb3Bkb3duIiwyMiko'@; put 'MiwiYnV0dG9uIiwyMyksU2UoMywiIFNBUyBXb3JrIFRhYmxlcyAiKSxJdCg0LCJjbHItaWNvbiIsMjQpLHRlKCksWW4oNSxOYnQsNCwyLCJjbHItZHJvcGRvd24tbWVudSIsMjUpLHRlKCksWW4oNixqYnQsNCwyLCJuZy10ZW1wbGF0ZSIsOSksaGkoImNscklmQWN0aXZlQ2hhbmdlIixmdW5j'@; put 'dGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDMpO3JldHVybiBmaShvLnRhYmxlc0FjdGl2ZSxpKXx8KG8udGFibGVzQWN0aXZlPWkpLFhlKGkpfSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoKSxydCgiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCEwKSxpZSg1KSxkaSgiY2xySWZB'@; put 'Y3RpdmUiLHQudGFibGVzQWN0aXZlKX19ZnVuY3Rpb24gemJ0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItc3RhY2stYmxvY2siLDUpKDEsImNsci1zdGFjay1sYWJlbCIpLFNlKDIpLEooMywic3BhbiIsNiksdnQoNCxiYnQsMiwwLCJzcGFuIiksdnQoNSx3YnQsMiwwLCJz'@; put 'cGFuIiksdGUoKSgpLEooNiwiY2xyLXN0YWNrLWNvbnRlbnQiKSxTZSg3KSx0ZSgpLEooOCwiY2xyLXN0YWNrLWJsb2NrIiw3KSg5LCJjbHItc3RhY2stY29udGVudCIpKDEwLCJjbHItdGFicyIpKDExLCJjbHItdGFiIikoMTIsImJ1dHRvbiIsOCksU2UoMTMsIlNBUyBMb2ciKSx0ZSgpLFlu'@; put 'KDE0LGtidCw3LDUsIm5nLXRlbXBsYXRlIiw5KSxoaSgiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMik7cmV0dXJuIGZpKG8uc2FzTG9nQWN0aXZlLGkpfHwoby5zYXNMb2dBY3RpdmU9aSksWGUoaSl9KSx0ZSgpLEooMTUsImNsci10YWIiKSgxNiwi'@; put 'YnV0dG9uIiw4KSxTZSgxNywiU0FTIFNvdXJjZSBDb2RlIiksdGUoKSxZbigxOCxJYnQsNCwyLCJuZy10ZW1wbGF0ZSIsOSksaGkoImNscklmQWN0aXZlQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDIpO3JldHVybiBmaShvLnNhc1NvdXJjZUNvZGVBY3RpdmUsaSl8fChv'@; put 'LnNhc1NvdXJjZUNvZGVBY3RpdmU9aSksWGUoaSl9KSx0ZSgpLEooMTksImNsci10YWIiKSgyMCwiYnV0dG9uIiw4KSxTZSgyMSwiU0FTIEdlbmVyYXRlZCBDb2RlIiksdGUoKSxZbigyMixMYnQsNCwyLCJuZy10ZW1wbGF0ZSIsOSksaGkoImNscklmQWN0aXZlQ2hhbmdlIixmdW5jdGlvbihp'@; put 'KXtZZSh0KTtjb25zdCBvPVRlKDIpO3JldHVybiBmaShvLnNhc0dlbmVyYXRlZENvZGVBY3RpdmUsaSl8fChvLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9aSksWGUoaSl9KSx0ZSgpLHZ0KDIzLFVidCw3LDIsImNsci10YWIiKSx0ZSgpKCkoKSgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNp'@; put 'dCxyPWUuJGluZGV4LGk9VGUoMik7cnQoImlkIiwicmVxdWVzdF8iK3IpKCJjbHJTdGFja1ZpZXdMZXZlbCIsMSksaWUoMiksU3IoIiAiLHQuc2VydmljZUxpbmssIiAiKSxpZSgyKSxfdCgobnVsbD09dC5sb2dXYXJuaW5ncz9udWxsOnQubG9nV2FybmluZ3MubGVuZ3RoKT4wPzQ6LTEpLGll'@; put 'KCksX3QoKG51bGw9PXQubG9nRXJyb3JzP251bGw6dC5sb2dFcnJvcnMubGVuZ3RoKT4wPzU6LTEpLGllKDIpLHByKHQucGFyc2VkVGltZXN0YW1wKSxpZSg3KSxkaSgiY2xySWZBY3RpdmUiLGkuc2FzTG9nQWN0aXZlKSxpZSg0KSxkaSgiY2xySWZBY3RpdmUiLGkuc2FzU291cmNlQ29kZUFj'@; put 'dGl2ZSksaWUoNCksZGkoImNscklmQWN0aXZlIixpLnNhc0dlbmVyYXRlZENvZGVBY3RpdmUpLGllKCksX3QodC5TQVNXT1JLPzIzOi0xKX19ZnVuY3Rpb24gV2J0KG4sZSl7aWYoMSZuJiYoSigwLCJjbHItc3RhY2stdmlldyIpLF9vKDEsemJ0LDI0LDEwLCJjbHItc3RhY2stYmxvY2siLDUs'@; put 'Q28pLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCkseW8odC5zYXNqc1JlcXVlc3RzKX19bGV0IFlidD0oKCk9Pnt2YXIgbjtjbGFzcyBle2dldCBvcGVuZWQoKXtyZXR1cm4gdGhpcy5fb3BlbmVkfXNldCBvcGVuZWQocil7dGhpcy5fb3BlbmVkPXIsciYmdGhpcy5tb2RhbE9wZW5lZCgp'@; put 'LHRoaXMubG9nZ2VyU2VydmljZS5sb2codGhpcy5zYXNqc1JlcXVlc3RzKX1jb25zdHJ1Y3RvcihyLGksbyl7dGhpcy5zYXNTZXJ2aWNlPXIsdGhpcy5sb2dnZXJTZXJ2aWNlPWksdGhpcy5oZWxwZXJTZXJ2aWNlPW8sdGhpcy5fb3BlbmVkPSExLHRoaXMub3BlbmVkQ2hhbmdlPW5ldyBLcix0'@; put 'aGlzLnNhc0xvZ0FjdGl2ZT0hMCx0aGlzLnNhc1NvdXJjZUNvZGVBY3RpdmU9ITEsdGhpcy5zYXNHZW5lcmF0ZWRDb2RlQWN0aXZlPSExLHRoaXMudGFibGVzQWN0aXZlPSExLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5zYXNqc1JlcXVl'@; put 'c3RzPVtdLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5zZXJ2ZXJUeXBlPXRoaXMuc2FzU2VydmljZS5nZXRTZXJ2ZXJUeXBlKCl9bmdPbkluaXQoKXt9cGFyc2VMb2dUaW1lc3RhbXAocil7cmV0dXJuYCR7dGhpcy5mb3JtYXRUaW1lc3Rh'@; put 'bXAocil9ICR7dGhpcy50aW1lc3RhbXBGcm9tTm93KHIpfWB9Y3V0QXBwTG9jKHIpe3JldHVybiByLnJlcGxhY2UodGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MrIi8iLCIiKX1mb3JtYXRUaW1lc3RhbXAocil7cmV0dXJuIFNwKCkocikuZm9ybWF0KCk/U3AoKShyKS5mb3JtYXQoImRkZGQsIE1N'@; put 'TU0gRG8gWVlZWSwgaDptbTpzcyBhIik6cn10aW1lc3RhbXBGcm9tTm93KHIpe3JldHVybiBTcCgpKHIpLmZvcm1hdCgpP2AgKCR7U3AoKShyKS5mcm9tTm93KCl9KWA6IiJ9bW9kYWxPcGVuQ2hhbmdlKHIpe3RoaXMub3BlbmVkPXIsdGhpcy5vcGVuZWRDaGFuZ2UuZW1pdCh0aGlzLm9wZW5l'@; put 'ZCl9bW9kYWxPcGVuZWQoKXt0aGlzLnNhc2pzUmVxdWVzdHM9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc1JlcXVlc3RzKCk7Zm9yKGxldCByIG9mIHRoaXMuc2FzanNSZXF1ZXN0cyl0aGlzLnBhcnNlRXJyb3JzQW5kV2FybmluZ3Mociksci5zZXJ2aWNlTGluaz10aGlzLmN1dEFwcExvYyhyLnNl'@; put 'cnZpY2VMaW5rKSxyLnBhcnNlZFRpbWVzdGFtcD10aGlzLnBhcnNlTG9nVGltZXN0YW1wKHIudGltZXN0YW1wKX1nb1RvTG9nTGluZShyLGksbyl7Y29uc3QgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtpfSAubG9nLXdyYXBwZXIuc2FzbG9nYCk7aWYoYSlpZigiU0FTVklZQSI9PT10'@; put 'aGlzLnNlcnZlclR5cGUpe2NvbnN0IHU9KGEudGV4dENvbnRlbnR8fCIiKS5zcGxpdCgiXG4iKTtsZXQgZz0tMTtmb3IobGV0IGVlPTA7ZWU8dS5sZW5ndGg7ZWUrKylpZih1W2VlXS5pbmNsdWRlcyhyKSl7Zz1lZTticmVha31pZigtMT09PWcpcmV0dXJuO2NvbnN0IEU9ZG9jdW1lbnQuY3Jl'@; put 'YXRlRWxlbWVudCgiZGl2Iik7RS5jbGFzc05hbWU9InRlbXAtbGluZS1oZWlnaHQtY2FsYyIsRS50ZXh0Q29udGVudD0iWCIsYS5hcHBlbmRDaGlsZChFKTtjb25zdCBPPUUuY2xpZW50SGVpZ2h0O2EucmVtb3ZlQ2hpbGQoRSksYS5zY3JvbGxUb3A9TypnO2NvbnN0IFo9ZG9jdW1lbnQuY3Jl'@; put 'YXRlRWxlbWVudCgiZGl2Iik7Wi5jbGFzc05hbWU9ImxpbmUtaGlnaGxpZ2h0LW92ZXJsYXkgIisoImVycm9yIj09PW8/ImVycm9yLWhpZ2hsaWdodCI6Indhcm5pbmctaGlnaGxpZ2h0IiksWi5jbGFzc0xpc3QuYWRkKCJ0ZW1wLWhlaWdodC1zZXR0ZXIiKSxkb2N1bWVudC5kb2N1bWVudEVs'@; put 'ZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tbGluZS1oZWlnaHQiLGAke099cHhgKSxaLmNsYXNzTGlzdC5hZGQoImxpbmUtcG9zaXRpb24tc2V0dGVyIiksZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLWxpbmUtdG9wIixPKmcrInB4IiksYS5hcHBlbmRD'@; put 'aGlsZChaKSxzZXRUaW1lb3V0KCgpPT57YS5jb250YWlucyhaKSYmYS5yZW1vdmVDaGlsZChaKX0sM2UzKX1lbHNle2NvbnN0IGw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgIyR7aX0gLmxvZy13cmFwcGVyLnNhc2xvZyBmb250YCk7Zm9yKGxldCB1IG9mIEFycmF5LmZyb20obCkpaWYo'@; put 'dS50ZXh0Q29udGVudD8uaW5jbHVkZXMocikpe2Euc2Nyb2xsVG9wPXUub2Zmc2V0VG9wLWEub2Zmc2V0VG9wLHUuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0ZWQtbGluZSIpLHNldFRpbWVvdXQoKCk9Pnt1LmNsYXNzTGlzdC5yZW1vdmUoImhpZ2hsaWdodGVkLWxpbmUiKX0sM2UzKTticmVh'@; put 'a319fXBhcnNlRXJyb3JzQW5kV2FybmluZ3Mocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aWYoIXJ8fCFyLmxvZ0ZpbGV8fCJzdHJpbmciIT10eXBlb2Ygci5sb2dGaWxlfHx2b2lkIDAhPT1yLmxvZ0Vycm9yc3x8dm9pZCAwIT09ci5sb2dXYXJuaW5ncylyZXR1cm47bGV0'@; put 'IG89W10sYT1bXSxsPXIubG9nRmlsZS5zcGxpdCgiXG4iKSx1PVsuLi5sXTtmb3IobGV0IGc9MDtnPGwubGVuZ3RoO2crKyl7aWYoLzwuKj5FUlJPUi9nbS50ZXN0KGxbZ10pKXtsZXQgRT1sW2ddLnN1YnN0cmluZyhsW2ddLmluZGV4T2YoIkUiKSxsW2ddLmxlbmd0aC0xKTtvLnB1c2goRSl9'@; put 'ZWxzZS9eRVJST1IvZ20udGVzdChsW2ddKSYmKG8ucHVzaChsW2ddKSwiU0FTVklZQSIhPT1pLnNlcnZlclR5cGUmJihsW2ddPSc8Zm9udCBjbGFzcz0iZXJyb3ItbGluZSI+JytsW2ddKyI8L2ZvbnQ+IikpO2lmKC88Lio+V0FSTklORy9nbS50ZXN0KGxbZ10pKXtsZXQgRT1sW2ddLnN1YnN0'@; put 'cmluZyhsW2ddLmluZGV4T2YoIlciKSxsW2ddLmxlbmd0aC0xKTthLnB1c2goRSl9ZWxzZS9eV0FSTklORy9nbS50ZXN0KGxbZ10pJiYoYS5wdXNoKGxbZ10pLCJTQVNWSVlBIiE9PWkuc2VydmVyVHlwZSYmKGxbZ109Jzxmb250IGNsYXNzPSJ3YXJuaW5nLWxpbmUiPicrbFtnXSsiPC9mb250'@; put 'PiIpKX1pLmxvZ2dlclNlcnZpY2UubG9nKGEpLCJTQVNWSVlBIj09PWkuc2VydmVyVHlwZSYmKHIub3JpZ2luYWxMb2dGaWxlPXUuam9pbigiXG4iKSxyLmxvZ0ZpbGVMaW5lTWFwPXt9LG8uZm9yRWFjaChnPT57Zm9yKGxldCBFPTA7RTx1Lmxlbmd0aDtFKyspaWYodVtFXS5pbmNsdWRlcyhn'@; put 'KSl7ci5sb2dGaWxlTGluZU1hcC5lcnJvcnN8fChyLmxvZ0ZpbGVMaW5lTWFwLmVycm9ycz17fSksci5sb2dGaWxlTGluZU1hcC5lcnJvcnNbZ109RTticmVha319KSxhLmZvckVhY2goZz0+e2ZvcihsZXQgRT0wO0U8dS5sZW5ndGg7RSsrKWlmKHVbRV0uaW5jbHVkZXMoZykpe3IubG9nRmls'@; put 'ZUxpbmVNYXAud2FybmluZ3N8fChyLmxvZ0ZpbGVMaW5lTWFwLndhcm5pbmdzPXt9KSxyLmxvZ0ZpbGVMaW5lTWFwLndhcm5pbmdzW2ddPUU7YnJlYWt9fSkpLHIubG9nRmlsZT1sLmpvaW4oIlxuIiksci5sb2dFcnJvcnM9byxyLmxvZ1dhcm5pbmdzPWF9KSgpfWRvd25sb2FkTG9nKHIpe2Nv'@; put 'bnN0IGk9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYGxvZ0ZpbGUtJHtpfWAscil9ZG93bmxvYWRTb3VyY2VDb2RlKHIpe2NvbnN0IGk9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZp'@; put 'bGUoYHNvdXJjZUNvZGUtJHtpfWAscil9ZG93bmxvYWRHZW5lcmF0ZWRDb2RlKHIpe2NvbnN0IGk9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYGdlbmVyYXRlZENvZGUtJHtpfWAscil9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1'@; put 'ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoaWMpLHplKHgzKSx6ZShmaCkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtcmVxdWVzdHMtbW9kYWwiXV0saW5wdXRzOntvcGVuZWQ6Im9wZW5lZCJ9LG91dHB1dHM6e29wZW5lZENoYW5nZToi'@; put 'b3BlbmVkQ2hhbmdlIn0sc3RhbmRhbG9uZTohMSxkZWNsczo4LHZhcnM6NCxjb25zdHM6W1siY2xyTW9kYWxTaXplIiwieGwiLDEsInJlcXVlc3RzLW1vZGFsIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibXQtMCIsImQtaW5s'@; put 'aW5lLWJsb2NrIl0sWzEsIm1vZGFsLWJvZHkiLCJoLTcwdmgiXSxbMSwibm8tcmVxcyJdLFszLCJpZCIsImNsclN0YWNrVmlld0xldmVsIl0sWzEsIm1sLTEwIl0sWzEsImNvbnRlbnQiXSxbImNsclRhYkxpbmsiLCIiXSxbMywiY2xySWZBY3RpdmVDaGFuZ2UiLCJjbHJJZkFjdGl2ZSJdLFsi'@; put 'c2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsIm1iLTUiLCJjb2xvci1ncmVlbiJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi10cmlhbmdsZSIsMSwibWItNSIsImNvbG9yLXJlZCJdLFsxLCJlcnItbGlua3MiXSxbMSwibG9nLXdyYXBwZXIiLCJzYXNsb2ciLDMsImlubmVySFRNTCJdLFsx'@; put 'LCJsb2ctd3JhcHBlciIsInNhc2xvZyIsInZpeWEiLDMsInRleHRDb250ZW50Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tbGluayJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi10cmlhbmdsZSIsMSwiY29sb3ItcmVkIl0sWzMsImNsaWNrIl0sWzEsImNsci10cmVlbm9kZS1saW5r'@; put 'Il0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsMSwiY29sb3ItZ3JlZW4iXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1saW5rIiwzLCJjbGljayJdLFsxLCJsb2ctd3JhcHBlciJdLFsiY2xyVGFiTGluayIsIiIsMSwid29yay10YWJsZXMtZHJvcGRvd24iLDMsImNsckNs'@; put 'b3NlTWVudU9uSXRlbUNsaWNrIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFs0LCJjbHJJZk9wZW4iXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMSwiZHJvcGRvd24taXRlbSIsMywic2VsZWN0ZWQiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMSwi'@; put 'ZHJvcGRvd24taXRlbSIsMywiY2xpY2siXSxbMSwibXQtMTAiXSxbMSwibWluLWgtNTB2aCJdLFsxLCJ0YWJsZSIsIm10LTEwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJjbHItbW9kYWwiLDApLHd0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGwpe3JldHVy'@; put 'biBvLm1vZGFsT3BlbkNoYW5nZShsKX0pLEooMSwiaDMiLDEpLFNlKDIsIiBSZXF1ZXN0IEhpc3RvcnkgIiksSigzLCJwIiwyKSxTZSg0KSx0ZSgpKCksSig1LCJkaXYiLDMpLHZ0KDYseWJ0LDIsMCwicCIsNCksdnQoNyxXYnQsMywwLCJjbHItc3RhY2stdmlldyIpLHRlKCkoKSksMiZpJiYo'@; put 'cnQoImNsck1vZGFsT3BlbiIsby5vcGVuZWQpLGllKDQpLFNyKCJBcHAgTG9jYXRpb246ICIsby5zYXNqc0NvbmZpZy5hcHBMb2MpLGllKDIpLF90KG8uc2FzanNSZXF1ZXN0cy5sZW5ndGg8MT82Oi0xKSxpZSgpLF90KG8ub3BlbmVkJiZvLnNhc2pzUmVxdWVzdHMubGVuZ3RoPjA/NzotMSkp'@; put 'fSxkZXBlbmRlbmNpZXM6W1JhZSx6TWUsa2FlLFVNZSxQcCxPMyxkNyxjdSx4ZCxtaCxoTSxMcCx4dixrdiwkYixBdixUdixaYixvNyxqYixVYixwTSxFVV0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y2xhc3MgWmJ0e2NvbnN0cnVjdG9yKCl7dGhpcy5zYXNTZXJ2aWNl'@; put 'PW51bGwsdGhpcy5tZXNzYWdlPSIiLHRoaXMuZGV0YWlscz1uZXcgeVRlfX1jbGFzcyB5VGV7fWZ1bmN0aW9uIEdidChuLGUpe2lmKDEmbiYmKEooMCwicCIsMiksU2UoMSwiIFNBUyBTZXJ2aWNlOiAiKSxKKDIsInN0cm9uZyIpLFNlKDMpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUo'@; put 'MykscHIodC5kYXRhLnNhc1NlcnZpY2UpfX1mdW5jdGlvbiAkYnQobixlKXtpZigxJm4mJihKKDAsImRpdiIsNSkoMSwicCIpKDIsInN0cm9uZyIpLFNlKDMsIlNZU1dBUk5JTkdURVhUOiIpLHRlKCksU2UoNCksdGUoKSxKKDUsInAiKSg2LCJzdHJvbmciKSxTZSg3LCJTWVNFUlJPUlRFWFQ6'@; put 'IiksdGUoKSxTZSg4KSx0ZSgpLEooOSwicCIpKDEwLCJzdHJvbmciKSxTZSgxMSwiTUFDOiIpLHRlKCksU2UoMTIpLHRlKCksSigxMywicCIpKDE0LCJzdHJvbmciKSxTZSgxNSwiX1BST0dSQU06IiksdGUoKSxTZSgxNiksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSg0KSxTcigiICIs'@; put 'dC5kYXRhLmRldGFpbHMuU1lTV0FSTklOR1RFWFQsIiAiKSxpZSg0KSxTcigiICIsdC5kYXRhLmRldGFpbHMuU1lTRVJST1JURVhUKSxpZSg0KSxTcigiICIsdC5kYXRhLmRldGFpbHMuTUFDKSxpZSg0KSxTcigiICIsdC5kYXRhLmRldGFpbHMuX1BST0dSQU0pfX1mdW5jdGlvbiBxYnQobixl'@; put 'KXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLm9wZW5Db25maWd1cmF0b3IoKSl9KSxTZSgxLCIgT3BlbiBjb25maWd1cmF0b3IgIiksdGUoKX19ZnVuY3Rpb24gS2J0KG4sZSl7aWYoMSZuKXtj'@; put 'b25zdCB0PXduKCk7SigwLCJidXR0b24iLDgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vcGVuUmVxdWVzdHNNb2RhbCgpKX0pLFNlKDEsIiBPcGVuIHJlcXVlc3RzIG1vZGFsICIpLHRlKCl9fWZ1bmN0aW9uIFhidChuLGUpe2lmKDEmbil7Y29uc3QgdD13'@; put 'bigpO0ooMCwiYnV0dG9uIiw4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuZG93bmxvYWRMb2coKSl9KSxTZSgxLCIgRG93bmxvYWQgbG9nICIpLHRlKCl9fWZ1bmN0aW9uIFFidChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiw4KSx3'@; put 'dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuY2xvc2VBYm9ydE1vZGFsKCkpfSksU2UoMSwiIENsb3NlICIpLHRlKCl9fWZ1bmN0aW9uIEpidChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiw4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIFllKHQpLFhlKFRlKCkucmVsb2FkKCkpfSksU2UoMSwiIFJlbG9hZCAiKSx0ZSgpfX1sZXQgZXd0PSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpLG8sYSl7dGhpcy5oZWxwZXJTZXJ2aWNlPXIsdGhpcy5ldmVudFNlcnZpY2U9aSx0aGlzLnNhc1NlcnZpY2U9byx0aGlz'@; put 'LnJvdXRlcj1hLHRoaXMub25Db25maXJtTW9kYWxDbGljaz1uZXcgS3IsdGhpcy5kYXRhPW5ldyBaYnQsdGhpcy5mb3JjZVJlbG9hZD0hMSx0aGlzLm1vZGFsRW5hYmxlZD0hMCx0aGlzLmRlZmF1bHREYXRhPXttb2RhbFRpdGxlOiJBYm9ydCBNZXNzYWdlIixzYXNTZXJ2aWNlOm51bGwsbWVz'@; put 'c2FnZToiIixkZXRhaWxzOm5ldyB5VGV9fW5nT25Jbml0KCl7bGV0IHI9ey4uLnRoaXMuZGVmYXVsdERhdGEsLi4udGhpcy5kYXRhfTt0aGlzLmRhdGE9cn1zaG93Q29uZmlndXJhdG9yQnV0dG9uKHIpe2NvbnN0IGk9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCk7cmV0dXJuIHI/'@; put 'LmluY2x1ZGVzKCJzdGFydHVwc2VydmljZSIpJiZpLnNlcnZlclR5cGU9PT1fMC5ZLlNhczl9Y2xvc2VBYm9ydE1vZGFsKCl7dGhpcy5vbkNvbmZpcm1Nb2RhbENsaWNrLmVtaXQoKX1vcGVuQ29uZmlndXJhdG9yKCl7dGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSx0aGlz'@; put 'LnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksdGhpcy5jbG9zZUFib3J0TW9kYWwoKX1kb3dubG9hZExvZygpe3RoaXMuaGVscGVyU2VydmljZS5kb3dubG9hZFRleHRGaWxlKGAke3RoaXMuZGF0YS5zYXNTZXJ2aWNlfS1MT0dgLHRoaXMuZGF0YS5kZXRhaWxzPy5MT0d8fCJFcnJv'@; put 'ciBwYXJzaW5nIHRoZSBsb2ciKX1vcGVuUmVxdWVzdHNNb2RhbCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9wZW5SZXF1ZXN0c01vZGFsKCl9cmVsb2FkKCl7bG9jYXRpb24ucmVsb2FkKCl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSko'@; put 'emUoZmgpLHplKHVkKSx6ZShpYyksemUodmMpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWluZm8tbW9kYWwiXV0saW5wdXRzOntkYXRhOiJkYXRhIixmb3JjZVJlbG9hZDoiZm9yY2VSZWxvYWQifSxvdXRwdXRzOntvbkNvbmZpcm1Nb2RhbENsaWNrOiJv'@; put 'bkNvbmZpcm1Nb2RhbENsaWNrIn0sc3RhbmRhbG9uZTohMSxkZWNsczoxMyx2YXJzOjEyLGNvbnN0czpbWyJhcHBEcmFnTmRyb3AiLCIiLDEsImNsci1hYm9ydC1tb2RhbCIsMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9z'@; put 'YWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJzYXNTZXJ2aWNlIiwibXQtMCJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsImFib3J0TXNnIiwzLCJpbm5lckhUTUwiXSxbMSwic3lzdGV4dCJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5'@; put 'Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihKKDAsImNsci1tb2RhbCIsMCksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8ubW9kYWxFbmFibGVkLGwp'@; put 'fHwoby5tb2RhbEVuYWJsZWQ9bCksbH0pLEooMSwiaDMiLDEpLFNlKDIpLHZ0KDMsR2J0LDQsMSwicCIsMiksdGUoKSxKKDQsImRpdiIsMyksSXQoNSwiZGl2Iiw0KSx2dCg2LCRidCwxNyw0LCJkaXYiLDUpLHRlKCksSig3LCJkaXYiLDYpLHZ0KDgscWJ0LDIsMCwiYnV0dG9uIiw3KSx2dCg5'@; put 'LEtidCwyLDAsImJ1dHRvbiIsNyksdnQoMTAsWGJ0LDIsMCwiYnV0dG9uIiw3KSx2dCgxMSxRYnQsMiwwLCJidXR0b24iLDcpLHZ0KDEyLEpidCwyLDAsImJ1dHRvbiIsNyksdGUoKSgpKSwyJmkmJihkaSgiY2xyTW9kYWxPcGVuIixvLm1vZGFsRW5hYmxlZCkscnQoImNsck1vZGFsU2l6ZSIs'@; put 'InhsIikoImNsck1vZGFsQ2xvc2FibGUiLCFvLmZvcmNlUmVsb2FkKSxpZSgyKSxTcigiICIsby5kYXRhLm1vZGFsVGl0bGUsIiAiKSxpZSgpLF90KG8uZGF0YS5zYXNTZXJ2aWNlJiZvLmRhdGEuc2FzU2VydmljZS5sZW5ndGg+MD8zOi0xKSxpZSgyKSxydCgiaW5uZXJIVE1MIixvLmRhdGEu'@; put 'bWVzc2FnZSx4NSksaWUoKSxfdChudWxsIT09by5kYXRhLmRldGFpbHM/NjotMSksaWUoMiksX3Qoby5zaG93Q29uZmlndXJhdG9yQnV0dG9uKG8uZGF0YS5zYXNTZXJ2aWNlKT84Oi0xKSxpZSgpLF90KG51bGwhPT1vLmRhdGEuZGV0YWlscz85Oi0xKSxpZSgpLF90KG51bGwhPW8uZGF0YS5k'@; put 'ZXRhaWxzJiZvLmRhdGEuZGV0YWlscy5MT0cmJihudWxsPT1vLmRhdGEuZGV0YWlsc3x8bnVsbD09by5kYXRhLmRldGFpbHMuTE9HP251bGw6by5kYXRhLmRldGFpbHMuTE9HLnRyaW0oKSkubGVuZ3RoPjA/MTA6LTEpLGllKCksX3Qoby5mb3JjZVJlbG9hZD8tMToxMSksaWUoKSxfdChvLmZv'@; put 'cmNlUmVsb2FkPzEyOi0xKSl9LGRlcGVuZGVuY2llczpbeGQsbWgscURdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IHR3dD0oKT0+WyIvIl0sYlRlPSgpPT5bIi92aWV3Il0sd1RlPSgpPT5bIi9ob21lIl0sT2FlPSgpPT5bIi9yZXZpZXcvc3VibWl0dGVkIl0s'@; put 'bnd0PSgpPT5bIi9yZXZpZXcvYXBwcm92ZSJdLHJ3dD0oKT0+WyIvcmV2aWV3L2hpc3RvcnkiXSxpd3Q9KG4sZSk9PmUubGFiZWw7ZnVuY3Rpb24gb3d0KG4sZSl7MSZuJiYoSigwLCJkaXYiLDEzKSgxLCJkaXYiLDE0KSgyLCJkaXYiLDE1KSxJdCgzLCJjZHMtaWNvbiIsMTYpLHRlKCksSig0'@; put 'LCJkaXYiLDE3KSxTZSg1LCIgRGF0YSBDb250cm9sbGVyIChGUkVFIFRpZXIpIC0gdG8gdXBncmFkZSBjb250YWN0ICIpLEl0KDYsImNvbnRhY3QtbGluayIsMTgpLHRlKCkoKSgpLEooNywiYSIsMTkpLFNlKDgsIlVwZGF0ZSBMaWNlbmNlIEtleSIpLHRlKCkpfWZ1bmN0aW9uIGF3dChuLGUp'@; put 'e2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwxMykoMSwiZGl2IiwxNCkoMiwiZGl2IiwxNSksSXQoMywiY2RzLWljb24iLDE2KSx0ZSgpLEooNCwiZGl2IiwxNyksU2UoNSwiIERhdGEgQ29udHJvbGxlciAoRlJFRSBUaWVyKSAtIFByb2JsZW0gd2l0aCBsaWNlbmNlICIpLHRlKCko'@; put 'KSgpLEooNiwiYSIsMjApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDMpO3JldHVybiBYZShpLmxpY2VuY2VQcm9ibGVtRGV0YWlscyhpLmxpY2VuY2VQcm9ibGVtLnZhbHVlKSl9KSxTZSg3LCJNb3JlIGRldGFpbHMiKSx0ZSgpfX1mdW5jdGlvbiBzd3QobixlKXtp'@; put 'ZigxJm4mJihKKDAsImRpdiIsMTEpLHZ0KDEsb3d0LDksMCksdnQoMixhd3QsOCwwKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoKSxfdChudWxsPT09dC5saWNlbmNlUHJvYmxlbS52YWx1ZT8xOi0xKSxpZSgpLF90KG51bGwhPT10LmxpY2VuY2VQcm9ibGVtLnZhbHVlPzI6LTEpfX1m'@; put 'dW5jdGlvbiBsd3QobixlKXsxJm4mJihKKDAsImEiLDE5KSxTZSgxLCJVcGRhdGUgTGljZW5jZSBLZXkiKSx0ZSgpKX1mdW5jdGlvbiBjd3QobixlKXtpZigxJm4mJihKKDAsImRpdiIsMTIpKDEsImRpdiIsMTMpKDIsImRpdiIsMTQpKDMsImRpdiIsMTUpLEl0KDQsImNkcy1pY29uIiwxNiks'@; put 'dGUoKSxKKDUsImRpdiIsMTcpLFNlKDYpLEl0KDcsImNvbnRhY3QtbGluayIsMTgpLFNlKDgpLHRlKCkoKSgpLHZ0KDksbHd0LDIsMCwiYSIsMTkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSg2KSxOaCgiIFRoaXMgbGljZW5zZSBrZXkgd2lsbCBleHBpcmUgaW4gIix0LmxpY2Vuc2VF'@; put 'eHBpcmluZ0RheXMsIiAiLDE9PT10LmxpY2Vuc2VFeHBpcmluZ0RheXM/ImRheSI6ImRheXMiLCIuIFBsZWFzZSBjb250YWN0ICIpLGllKDIpLFNyKCIgb3IgeW91ciByZXNlbGxlciB0byBhcnJhbmdlIGFkZGl0aW9uYWwgbGljZW5jZSBmb3Igc2l0ZSBpZCAiLHQuc3lzc2l0ZS5nZXRWYWx1'@; put 'ZSgpLCIuICIpLGllKCksX3QodC5mcmVlVGllckJhbm5lcj8tMTo5KX19ZnVuY3Rpb24gdXd0KG4sZSl7MSZuJiYoSigwLCJhIiwxOSksU2UoMSwiVXBkYXRlIExpY2VuY2UgS2V5IiksdGUoKSl9ZnVuY3Rpb24gZHd0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDEyKSgxLCJkaXYiLDEzKSgy'@; put 'LCJkaXYiLDE0KSgzLCJkaXYiLDE1KSxJdCg0LCJjZHMtaWNvbiIsMTYpLHRlKCksSig1LCJkaXYiLDE3KSxTZSg2LCIgVGhlIHJlZ2lzdGVyZWQgbnVtYmVyIG9mIHVzZXJzIGV4Y2VlZHMgdGhlIGxpbWl0IHNwZWNpZmllZCBmb3IgeW91ciBsaWNlbnNlLiBQbGVhc2UgY29udGFjdCAiKSxJ'@; put 'dCg3LCJjb250YWN0LWxpbmsiLDE4KSxTZSg4KSx0ZSgpKCkoKSx2dCg5LHV3dCwyLDAsImEiLDE5KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoOCksU3IoIiBvciB5b3VyIHJlc2VsbGVyIHRvIGFycmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlIGZvciBzaXRlIGlkICIsdC5zeXNzaXRl'@; put 'LmdldFZhbHVlKCksIi4gIiksaWUoKSxfdCh0LmxpY2Vuc2VFeHBpcmluZ0RheXN8fHQuZnJlZVRpZXJCYW5uZXI/LTE6OSl9fWZ1bmN0aW9uIGh3dChuLGUpe2lmKDEmbiYmKHZ0KDAsc3d0LDMsMiwiZGl2IiwxMSksdnQoMSxjd3QsMTAsNCwiZGl2IiwxMiksdnQoMixkd3QsMTAsMiwiZGl2'@; put 'IiwxMikpLDImbil7Y29uc3QgdD1UZSgpO190KHQuZnJlZVRpZXJCYW5uZXImJighdC5saWNlbnNlRXhwaXJpbmdEYXlzfHx0LmxpY2Vuc2VFeHBpcmluZ0RheXM8MCk/MDotMSksaWUoKSxfdCh0LmxpY2Vuc2VFeHBpcmluZ0RheXMmJiF0LmZyZWVUaWVyQmFubmVyPzE6LTEpLGllKCksX3Qo'@; put 'dC5hcHBPdmVyQ2FwYWNpdHk/MjotMSl9fWZ1bmN0aW9uIGZ3dChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwyNiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS50b2dnbGVTaWRlYmFyKCkpfSksSXQoMSwiY2xyLWljb24iLDI3KSx0ZSgp'@; put 'fX1mdW5jdGlvbiBwd3QobixlKXsxJm4mJihKKDAsImNsci1kcm9wZG93bi1tZW51IiwzNSkoMSwiYSIsMzYpLFNlKDIsIlZJRVciKSx0ZSgpLEooMywiYSIsMzYpLFNlKDQsIkxPQUQiKSx0ZSgpLEooNSwiYSIsMzYpLFNlKDYsIlJFVklFVyIpLHRlKCkoKSksMiZuJiYoaWUoKSxydCgicm91'@; put 'dGVyTGluayIsbWMoMyxiVGUpKSxpZSgyKSxydCgicm91dGVyTGluayIsbWMoNCx3VGUpKSxpZSgyKSxydCgicm91dGVyTGluayIsbWMoNSxPYWUpKSl9ZnVuY3Rpb24gZ3d0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDI4KSgxLCJjbHItZHJvcGRvd24iKSgyLCJidXR0b24iLDI5KSxTZSgz'@; put 'LCIgTWVudSAiKSx0ZSgpLFluKDQscHd0LDcsNiwiY2xyLWRyb3Bkb3duLW1lbnUiLDMwKSx0ZSgpKCksSig1LCJkaXYiLDMxKSg2LCJhIiwzMiksU2UoNywiVklFVyIpLHRlKCksSig4LCJhIiwzMyksU2UoOSwiTE9BRCIpLHRlKCksSigxMCwiYSIsMzQpLFNlKDExLCJSRVZJRVciKSx0ZSgp'@; put 'KCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSg2KSxydCgicm91dGVyTGluayIsbWMoNyxiVGUpKSxpZSgyKSx3cigiYWN0aXZlIix0LnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXRvciIpfHx0LnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXQtcmVjb3JkIil8fHQucm91dGVyLnVybC5pbmNsdWRl'@; put 'cygiaG9tZSIpKSxydCgicm91dGVyTGluayIsbWMoOCx3VGUpKSxpZSgyKSx3cigiYWN0aXZlIix0LnJvdXRlci51cmwuaW5jbHVkZXMoInN1Ym1pdHRlZCIpfHx0LnJvdXRlci51cmwuaW5jbHVkZXMoImFwcHJvdmUiKXx8dC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJoaXN0b3J5IikpLHJ0KCJy'@; put 'b3V0ZXJMaW5rIixtYyg5LE9hZSkpfX1mdW5jdGlvbiBtd3QobixlKXtpZigxJm4mJihKKDAsImhlYWRlciIsMSksdnQoMSxmd3QsMiwwLCJkaXYiLDIxKSxKKDIsImRpdiIsMjIpKDMsImEiLDIzKSxJdCg0LCJpbWciLDI0KSg1LCJpbWciLDI1KSx0ZSgpKCksdnQoNixnd3QsMTIsMTApLEl0'@; put 'KDcsImFwcC1oZWFkZXItYWN0aW9ucyIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC5pc01haW5Sb3V0ZSgidmlldyIpfHx0LmlzTWFpblJvdXRlKCJob21lIikmJiF0LnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpPzE6LTEpLGllKDIpLHJ0KCJyb3V0ZXJMaW5r'@; put 'IixtYygzLHR3dCkpLGllKDMpLF90KHQucm91dGVyLnVybC5pbmNsdWRlcygiZGVwbG95Iil8fHQucm91dGVyLnVybC5pbmNsdWRlcygibGljZW5zaW5nIik/LTE6Nil9fWZ1bmN0aW9uIHZ3dChuLGUpe2lmKDEmbiYmKEooMCwibmF2IiwyKSgxLCJ1bCIsMzcpKDIsImxpIiwzOCkoMywiYSIs'@; put 'MzIpLFNlKDQsIlNVQk1JVCIpLHRlKCkoKSxKKDUsImxpIiwzOCkoNiwiYSIsMzIpLFNlKDcsIkFQUFJPVkUiKSx0ZSgpKCksSig4LCJsaSIsMzgpKDksImEiLDMyKSxTZSgxMCwiSElTVE9SWSIpLHRlKCkoKSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDMpLHJ0KCJyb3V0ZXJMaW5rIixt'@; put 'Yyg1LE9hZSkpLGllKDMpLHdyKCJhY3RpdmUiLHQucm91dGVyLnVybC5pbmNsdWRlcygiYXBwcm92ZSIpKSxydCgicm91dGVyTGluayIsbWMoNixud3QpKSxpZSgzKSxydCgicm91dGVyTGluayIsbWMoNyxyd3QpKX19ZnVuY3Rpb24gX3d0KG4sZSl7MSZuJiZJdCgwLCJhcHAtYWxlcnRzIil9'@; put 'ZnVuY3Rpb24geXd0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDQpKDEsImJ1dHRvbiIsMzkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5iYWNrVG9FZGl0b3IoKSl9KSxJdCgyLCJjbHItaWNvbiIsNDApLFNlKDMsIiBCYWNrIHRvIEVk'@; put 'aXQgdGFibGUgIiksdGUoKSgpfX1mdW5jdGlvbiBid3QobixlKXsxJm4mJkl0KDAsInJvdXRlci1vdXRsZXQiKX1mdW5jdGlvbiB3d3QobixlKXsxJm4mJkl0KDAsImFwcC1hbGVydHMiKX1mdW5jdGlvbiBDd3QobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImFwcC1pbmZvLW1vZGFs'@; put 'Iiw0MSksd3QoIm9uQ29uZmlybU1vZGFsQ2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkuY2xvc2VBYm9ydE1vZGFsKGkuaWQpKX0pLHRlKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoKTtydCgiZGF0YSIsdCkoImZvcmNl'@; put 'UmVsb2FkIiwhci5zdGFydHVwRGF0YUxvYWRlZCYmMT09PXIuc2FzanNBYm9ydHMubGVuZ3RoKX19ZnVuY3Rpb24gU3d0KG4sZSl7MSZuJiYoSigwLCJkaXYiLDQzKSxJdCgxLCJkaXYiLDQ1KSgyLCJkaXYiLDQ2KSgzLCJkaXYiLDQ3KSx0ZSgpKX1mdW5jdGlvbiBFd3QobixlKXsxJm4mJkl0'@; put 'KDAsImNsci1pY29uIiw1MCl9ZnVuY3Rpb24gTXd0KG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsNTEpfWZ1bmN0aW9uIFR3dChuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDUyKX1mdW5jdGlvbiB4d3QobixlKXsxJm4mJkl0KDAsImNsci1pY29uIiw1Myl9ZnVuY3Rpb24gQXd0KG4s'@; put 'ZSl7aWYoMSZuJiYoSigwLCJzcGFuIiw1NSksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKCkscHIodC5kZXRhaWwpfX1mdW5jdGlvbiBrd3QobixlKXtpZigxJm4mJihKKDAsImRpdiIsNDkpLHZ0KDEsRXd0LDEsMCwiY2xyLWljb24iLDUwKSgyLE13dCwxLDAs'@; put 'ImNsci1zcGlubmVyIiw1MSkoMyxUd3QsMSwwLCJjbHItaWNvbiIsNTIpKDQseHd0LDEsMCwiY2xyLWljb24iLDUzKSxKKDUsInNwYW4iLDU0KSxTZSg2KSx0ZSgpLHZ0KDcsQXd0LDIsMSwic3BhbiIsNTUpLHRlKCkpLDImbil7bGV0IHQ7Y29uc3Qgcj1lLiRpbXBsaWNpdDt3cigic3RhcnR1'@; put 'cC1jaGVjay0tZXJyb3IiLCJlcnJvciI9PT1yLnN0YXR1cykoInN0YXJ0dXAtY2hlY2stLWRvbmUiLCJkb25lIj09PXIuc3RhdHVzKSxpZSgpLF90KCJwZW5kaW5nIj09PSh0PXIuc3RhdHVzKT8xOiJpbl9wcm9ncmVzcyI9PT10PzI6ImRvbmUiPT09dD8zOiJlcnJvciI9PT10PzQ6LTEpLGll'@; put 'KDUpLHByKHIubGFiZWwpLGllKCksX3Qoci5kZXRhaWw/NzotMSl9fWZ1bmN0aW9uIFJ3dChuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw0NCksX28oMSxrd3QsOCw3LCJkaXYiLDQ4LGl3dCksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCkseW8odC5zdGFydHVwU3RlcHMpfX1mdW5jdGlv'@; put 'biBJd3QobixlKXtpZigxJm4mJihKKDAsImRpdiIsMTApLEl0KDEsImltZyIsNDIpLHZ0KDIsU3d0LDQsMCwiZGl2Iiw0MyksdnQoMyxSd3QsMywwLCJkaXYiLDQ0KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgyKSxfdChudWxsPT09dC5hcHBBY3RpdmU/MjotMSksaWUoKSxfdCh0LnN0'@; put 'YXJ0dXBTdGVwcy5sZW5ndGg+MD8zOi0xKX19emwuYWRkSWNvbnMoWyJtb29uIix7b3V0bGluZTonPHBhdGggZD0iTTE4LjExIDMyLjAwMDNDMTAuMzMgMzIuMDAwMyA0IDI1LjcyMDMgNCAxNy45OTAzQzQgMTAuMjYwMyAxMC4wMyA0LjIwMDMgMTcuNzMgNC4wMDAzQzE4LjE1IDMuOTkwMyAx'@; put 'OC41MiA0LjIzMDMgMTguNjggNC42MTAzQzE4Ljg0IDQuOTkwMyAxOC43NSA1LjQzMDMgMTguNDYgNS43MjAzQzE2LjY5IDcuNDUwMyAxNS43MSA5Ljc2MDMgMTUuNzEgMTIuMjEwM0MxNS43MSAxNy4yNDAzIDE5LjgzIDIxLjMzMDMgMjQuOTEgMjEuMzMwM0MyNi45IDIxLjMzMDMgMjguOCAy'@; put 'MC43MDAzIDMwLjQxIDE5LjUxMDNDMzAuNzQgMTkuMjcwMyAzMS4xOSAxOS4yNTAzIDMxLjUzIDE5LjQ2MDNDMzEuODggMTkuNjgwMyAzMi4wNiAyMC4wODAzIDMxLjk5IDIwLjQ5MDNDMzAuNzggMjcuMTYwMyAyNC45NCAzMi4wMDAzIDE4LjExIDMyLjAwMDNaTTE1LjQzIDYuMjkwM0M5Ljk5'@; put 'IDcuNDgwMyA2IDEyLjI0MDMgNiAxNy45OTAzQzYgMjQuNjEwMyAxMS40MyAzMC4wMDAzIDE4LjExIDMwLjAwMDNDMjMuMTYgMzAuMDAwMyAyNy41OCAyNi45MjAzIDI5LjM3IDIyLjQwMDNDMjcuOTcgMjMuMDEwMyAyNi40NiAyMy4zMjAzIDI0LjkxIDIzLjMyMDNDMTguNzQgMjMuMzIwMyAx'@; put 'My43MSAxOC4zMzAzIDEzLjcxIDEyLjIwMDNDMTMuNzEgMTAuMDcwMyAxNC4zMSA4LjAzMDMgMTUuNDMgNi4yODAzVjYuMjkwM1oiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTguMTEgMzIuMDAwM0MxMC4zMyAzMi4wMDAzIDQgMjUuNzIwMyA0IDE3Ljk5MDNDNCAxMC4yNjAzIDEwLjAzIDQuMjAw'@; put 'MyAxNy43MyA0LjAwMDNDMTguMTUgMy45OTAzIDE4LjUyIDQuMjMwMyAxOC42OCA0LjYxMDNDMTguODQgNC45OTAzIDE4Ljc1IDUuNDMwMyAxOC40NiA1LjcyMDNDMTYuNjkgNy40NTAzIDE1LjcxIDkuNzYwMyAxNS43MSAxMi4yMTAzQzE1LjcxIDE3LjI0MDMgMTkuODMgMjEuMzMwMyAyNC45'@; put 'MSAyMS4zMzAzQzI2LjkgMjEuMzMwMyAyOC44IDIwLjcwMDMgMzAuNDEgMTkuNTEwM0MzMC43NCAxOS4yNzAzIDMxLjE5IDE5LjI1MDMgMzEuNTMgMTkuNDYwM0MzMS44OCAxOS42ODAzIDMyLjA2IDIwLjA4MDMgMzEuOTkgMjAuNDkwM0MzMC43OCAyNy4xNjAzIDI0Ljk0IDMyLjAwMDMgMTgu'@; put 'MTEgMzIuMDAwM1oiLz4nfV0sWyJzdW4iLHtvdXRsaW5lOic8cGF0aCBkPSJNOC44MSAxMC4yMkM5LjAxIDEwLjQyIDkuMjYgMTAuNTEgOS41MiAxMC41MUM5Ljc4IDEwLjUxIDEwLjAzIDEwLjQxIDEwLjIzIDEwLjIyQzEwLjYyIDkuODMgMTAuNjIgOS4yIDEwLjIzIDguODFMOC4xMSA2LjY5'@; put 'QzcuNzIgNi4zIDcuMDkgNi4zIDYuNyA2LjY5QzYuMzEgNy4wOCA2LjMxIDcuNzEgNi43IDguMUw4LjgyIDEwLjIySDguODFaTTcgMThDNyAxNy40NSA2LjU1IDE3IDYgMTdIM0MyLjQ1IDE3IDIgMTcuNDUgMiAxOEMyIDE4LjU1IDIuNDUgMTkgMyAxOUg2QzYuNTUgMTkgNyAxOC41NSA3IDE4'@; put 'Wk0xOCA3QzE4LjU1IDcgMTkgNi41NSAxOSA2VjNDMTkgMi40NSAxOC41NSAyIDE4IDJDMTcuNDUgMiAxNyAyLjQ1IDE3IDNWNkMxNyA2LjU1IDE3LjQ1IDcgMTggN1pNMjYuNDkgMTAuNTFDMjYuNzUgMTAuNTEgMjcgMTAuNDEgMjcuMiAxMC4yMkwyOS4zMiA4LjFDMjkuNzEgNy43MSAyOS43'@; put 'MSA3LjA4IDI5LjMyIDYuNjlDMjguOTMgNi4zIDI4LjMgNi4zIDI3LjkxIDYuNjlMMjUuNzkgOC44MUMyNS40IDkuMiAyNS40IDkuODMgMjUuNzkgMTAuMjJDMjUuOTkgMTAuNDIgMjYuMjQgMTAuNTEgMjYuNSAxMC41MUgyNi40OVpNOC44MSAyNS43OEw2LjY5IDI3LjlDNi4zIDI4LjI5IDYu'@; put 'MyAyOC45MiA2LjY5IDI5LjMxQzYuODkgMjkuNTEgNy4xNCAyOS42IDcuNCAyOS42QzcuNjYgMjkuNiA3LjkxIDI5LjUgOC4xMSAyOS4zMUwxMC4yMyAyNy4xOUMxMC42MiAyNi44IDEwLjYyIDI2LjE3IDEwLjIzIDI1Ljc4QzkuODQgMjUuMzkgOS4yMSAyNS4zOSA4LjgyIDI1Ljc4SDguODFa'@; put 'TTMzIDE3SDMwQzI5LjQ1IDE3IDI5IDE3LjQ1IDI5IDE4QzI5IDE4LjU1IDI5LjQ1IDE5IDMwIDE5SDMzQzMzLjU1IDE5IDM0IDE4LjU1IDM0IDE4QzM0IDE3LjQ1IDMzLjU1IDE3IDMzIDE3Wk0xOCA5QzEzLjA0IDkgOSAxMy4wNCA5IDE4QzkgMjIuOTYgMTMuMDQgMjcgMTggMjdDMjIuOTYg'@; put 'MjcgMjcgMjIuOTYgMjcgMThDMjcgMTMuMDQgMjIuOTYgOSAxOCA5Wk0xOCAyNUMxNC4xNCAyNSAxMSAyMS44NiAxMSAxOEMxMSAxNC4xNCAxNC4xNCAxMSAxOCAxMUMyMS44NiAxMSAyNSAxNC4xNCAyNSAxOEMyNSAyMS44NiAyMS44NiAyNSAxOCAyNVpNMjcuMTkgMjUuNzhDMjYuOCAyNS4z'@; put 'OSAyNi4xNyAyNS4zOSAyNS43OCAyNS43OEMyNS4zOSAyNi4xNyAyNS4zOSAyNi44IDI1Ljc4IDI3LjE5TDI3LjkgMjkuMzFDMjguMSAyOS41MSAyOC4zNSAyOS42IDI4LjYxIDI5LjZDMjguODcgMjkuNiAyOS4xMiAyOS41IDI5LjMyIDI5LjMxQzI5LjcxIDI4LjkyIDI5LjcxIDI4LjI5IDI5'@; put 'LjMyIDI3LjlMMjcuMiAyNS43OEgyNy4xOVpNMTggMjlDMTcuNDUgMjkgMTcgMjkuNDUgMTcgMzBWMzNDMTcgMzMuNTUgMTcuNDUgMzQgMTggMzRDMTguNTUgMzQgMTkgMzMuNTUgMTkgMzNWMzBDMTkgMjkuNDUgMTguNTUgMjkgMTggMjlaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTguODEgMjUu'@; put 'NzhMNi42OSAyNy45QzYuMyAyOC4yOSA2LjMgMjguOTIgNi42OSAyOS4zMUM2Ljg5IDI5LjUxIDcuMTQgMjkuNiA3LjQgMjkuNkM3LjY2IDI5LjYgNy45MSAyOS41IDguMTEgMjkuMzFMMTAuMjMgMjcuMTlDMTAuNjIgMjYuOCAxMC42MiAyNi4xNyAxMC4yMyAyNS43OEM5Ljg0IDI1LjM5IDku'@; put 'MjEgMjUuMzkgOC44MiAyNS43OEg4LjgxWk03IDE4QzcgMTcuNDUgNi41NSAxNyA2IDE3SDNDMi40NSAxNyAyIDE3LjQ1IDIgMThDMiAxOC41NSAyLjQ1IDE5IDMgMTlINkM2LjU1IDE5IDcgMTguNTUgNyAxOFpNOC44MSAxMC4yMkM5LjAxIDEwLjQyIDkuMjYgMTAuNTEgOS41MiAxMC41MUM5'@; put 'Ljc4IDEwLjUxIDEwLjAzIDEwLjQxIDEwLjIzIDEwLjIyQzEwLjYyIDkuODMgMTAuNjIgOS4yIDEwLjIzIDguODFMOC4xMSA2LjY5QzcuNzIgNi4zIDcuMDkgNi4zIDYuNyA2LjY5QzYuMzEgNy4wOCA2LjMxIDcuNzEgNi43IDguMUw4LjgyIDEwLjIySDguODFaTTI2LjQ5IDEwLjUxQzI2Ljc1'@; put 'IDEwLjUxIDI3IDEwLjQxIDI3LjIgMTAuMjJMMjkuMzIgOC4xQzI5LjcxIDcuNzEgMjkuNzEgNy4wOCAyOS4zMiA2LjY5QzI4LjkzIDYuMyAyOC4zIDYuMyAyNy45MSA2LjY5TDI1Ljc5IDguODFDMjUuNCA5LjIgMjUuNCA5LjgzIDI1Ljc5IDEwLjIyQzI1Ljk5IDEwLjQyIDI2LjI0IDEwLjUx'@; put 'IDI2LjUgMTAuNTFIMjYuNDlaTTE4IDdDMTguNTUgNyAxOSA2LjU1IDE5IDZWM0MxOSAyLjQ1IDE4LjU1IDIgMTggMkMxNy40NSAyIDE3IDIuNDUgMTcgM1Y2QzE3IDYuNTUgMTcuNDUgNyAxOCA3Wk0xOCAyOUMxNy40NSAyOSAxNyAyOS40NSAxNyAzMFYzM0MxNyAzMy41NSAxNy40NSAzNCAx'@; put 'OCAzNEMxOC41NSAzNCAxOSAzMy41NSAxOSAzM1YzMEMxOSAyOS40NSAxOC41NSAyOSAxOCAyOVpNMzMgMTdIMzBDMjkuNDUgMTcgMjkgMTcuNDUgMjkgMThDMjkgMTguNTUgMjkuNDUgMTkgMzAgMTlIMzNDMzMuNTUgMTkgMzQgMTguNTUgMzQgMThDMzQgMTcuNDUgMzMuNTUgMTcgMzMgMTda'@; put 'TTI3LjE5IDI1Ljc4QzI2LjggMjUuMzkgMjYuMTcgMjUuMzkgMjUuNzggMjUuNzhDMjUuMzkgMjYuMTcgMjUuMzkgMjYuOCAyNS43OCAyNy4xOUwyNy45IDI5LjMxQzI4LjEgMjkuNTEgMjguMzUgMjkuNiAyOC42MSAyOS42QzI4Ljg3IDI5LjYgMjkuMTIgMjkuNSAyOS4zMiAyOS4zMUMyOS43'@; put 'MSAyOC45MiAyOS43MSAyOC4yOSAyOS4zMiAyNy45TDI3LjIgMjUuNzhIMjcuMTlaTTE4IDlDMTMuMDQgOSA5IDEzLjA0IDkgMThDOSAyMi45NiAxMy4wNCAyNyAxOCAyN0MyMi45NiAyNyAyNyAyMi45NiAyNyAxOEMyNyAxMy4wNCAyMi45NiA5IDE4IDlaIi8+J31dLFsiZXhjbGFtYXRpb24t'@; put 'dHJpYW5nbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTcuOTk0MyAyMC44QzE4LjU0NCAyMC44IDE4Ljk5MzggMjAuMzUgMTguOTkzOCAxOS44VjE0QzE4Ljk5MzggMTMuNDUgMTguNTQ0IDEzIDE3Ljk5NDMgMTNDMTcuNDQ0NSAxMyAxNi45OTQ3IDEzLjQ1IDE2Ljk5NDcgMTRWMTkuOEMxNi45'@; put 'OTQ3IDIwLjM1IDE3LjQ0NDUgMjAuOCAxNy45OTQzIDIwLjhaTTE4Ljg0MzkgMjIuOTVDMTguNzIzOSAyMi44NCAxOC41OTQgMjIuNzUgMTguNDU0MSAyMi42OUMxOC4xNjQyIDIyLjU3IDE3LjgyNDMgMjIuNTcgMTcuNTM0NSAyMi42OUMxNy4zOTQ1IDIyLjc1IDE3LjI2NDYgMjIuODQgMTcu'@; put 'MTQ0NiAyMi45NUMxNi45MjQ3IDIzLjE4IDE2Ljc5NDggMjMuNDggMTYuNzk0OCAyMy44QzE2Ljc5NDggMjQuMTIgMTYuOTI0NyAyNC40MiAxNy4xNDQ2IDI0LjY1QzE3LjI2NDYgMjQuNzYgMTcuMzk0NSAyNC44NSAxNy41MzQ1IDI0LjkxQzE3LjY4NDQgMjQuOTcgMTcuODM0MyAyNSAxNy45'@; put 'OTQzIDI1QzE4LjE1NDIgMjUgMTguMzA0MSAyNC45NyAxOC40NTQxIDI0LjkxQzE4LjU5NCAyNC44NSAxOC43MjM5IDI0Ljc2IDE4Ljg0MzkgMjQuNjVDMTkuMDYzOCAyNC40MiAxOS4xOTM3IDI0LjEyIDE5LjE5MzcgMjMuOEMxOS4xOTM3IDIzLjY0IDE5LjE2MzcgMjMuNDkgMTkuMTAzOCAy'@; put 'My4zNEMxOS4wNDM4IDIzLjIgMTguOTUzOCAyMy4wNiAxOC44NDM5IDIyLjk1Wk0zMC41OTg2IDI1LjQzTDIwLjY2MzEgNy41N0MyMC4xMTMzIDYuNTkgMTkuMTIzOCA2IDE3Ljk5NDMgNkMxNi44NjQ4IDYgMTUuODc1MiA2LjU5IDE1LjMyNTQgNy41N0w1LjM4OTg4IDI1LjQzQzQuODUwMTIg'@; put 'MjYuMzkgNC44NzAxMSAyNy41MyA1LjQxOTg3IDI4LjQ4QzUuOTY5NjIgMjkuNDMgNi45NTkxOCAzMCA4LjA1ODY5IDMwSDI3LjkyOThDMjkuMDI5MyAzMCAzMC4wMDg5IDI5LjQzIDMwLjU2ODYgMjguNDhDMzEuMTI4NCAyNy41MyAzMS4xMzg0IDI2LjM5IDMwLjU5ODYgMjUuNDNaTTI4Ljg0'@; put 'OTQgMjcuNDdDMjguNzU5NSAyNy42MyAyOC40Nzk2IDI4IDI3LjkzOTggMjhIOC4wNTg2OUM3LjUwODk0IDI4IDcuMjM5MDYgMjcuNjMgNy4xNDkxIDI3LjQ3QzcuMDU5MTQgMjcuMzEgNi44NjkyMiAyNi44OSA3LjE0OTEgMjYuNDFMMTcuMDY0NyA4LjU1QzE3LjMzNDYgOC4wNiAxNy44MDQz'@; put 'IDggMTcuOTg0MyA4QzE4LjE2NDIgOCAxOC42MzQgOC4wNSAxOC45MDM5IDguNTVMMjguODM5NCAyNi40MUMyOS4xMDkzIDI2Ljg5IDI4LjkxOTQgMjcuMzEgMjguODI5NCAyNy40N0gyOC44NDk0WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0zMC41OTg2IDI1LjQzTDIwLjY2MzEgNy41N0MyMC4x'@; put 'MTMzIDYuNTkgMTkuMTIzOCA2IDE3Ljk5NDMgNkMxNi44NjQ4IDYgMTUuODc1MiA2LjU5IDE1LjMyNTQgNy41N0w1LjM4OTg4IDI1LjQzQzQuODUwMTIgMjYuMzkgNC44NzAxMSAyNy41MyA1LjQxOTg3IDI4LjQ4QzUuOTY5NjIgMjkuNDMgNi45NTkxOCAzMCA4LjA1ODY5IDMwSDI3LjkyOThD'@; put 'MjkuMDI5MyAzMCAzMC4wMDg5IDI5LjQzIDMwLjU2ODYgMjguNDhDMzEuMTI4NCAyNy41MyAzMS4xMzg0IDI2LjM5IDMwLjU5ODYgMjUuNDNaTTE2Ljc5NDggMTMuNUMxNi43OTQ4IDEyLjg0IDE3LjMzNDYgMTIuMyAxNy45OTQzIDEyLjNDMTguNjU0IDEyLjMgMTkuMTkzNyAxMi44NCAxOS4x'@; put 'OTM3IDEzLjVWMTkuM0MxOS4xOTM3IDE5Ljk2IDE4LjY1NCAyMC41IDE3Ljk5NDMgMjAuNUMxNy4zMzQ2IDIwLjUgMTYuNzk0OCAxOS45NiAxNi43OTQ4IDE5LjNWMTMuNVpNMTguOTczOCAyNUMxOC44MzM5IDI1LjEzIDE4LjY4NCAyNS4yMyAxOC41MjQgMjUuM0MxOC4zNDQxIDI1LjM3IDE4'@; put 'LjE3NDIgMjUuNDEgMTcuOTk0MyAyNS40MUMxNy44MTQzIDI1LjQxIDE3LjYzNDQgMjUuMzggMTcuNDU0NSAyNS4zQzE3LjMwNDYgMjUuMjMgMTcuMTU0NiAyNS4xMyAxNi45OTQ3IDI0Ljk5QzE2LjczNDggMjQuNzIgMTYuNTg0OSAyNC4zNyAxNi41ODQ5IDI0QzE2LjU4NDkgMjMuNjMgMTYu'@; put 'NzI0OCAyMy4yOSAxNi45OTQ3IDIzQzE3LjEzNDYgMjIuODcgMTcuMjg0NiAyMi43NyAxNy40NDQ1IDIyLjdDMTcuNjE0NCAyMi42MyAxNy43OTQzIDIyLjU5IDE3Ljk4NDMgMjIuNTlDMTguMTc0MiAyMi41OSAxOC4zNTQxIDIyLjYzIDE4LjUyNCAyMi43QzE4LjY3NCAyMi43NyAxOC44MjM5'@; put 'IDIyLjg3IDE4Ljk3MzggMjNDMTkuMDkzOCAyMy4xMiAxOS4yMDM3IDIzLjI4IDE5LjI3MzcgMjMuNDZDMTkuMzQzNyAyMy42NCAxOS4zODM2IDIzLjgxIDE5LjM4MzYgMjMuOTlDMTkuMzgzNiAyNC4zNSAxOS4yNDM3IDI0LjcgMTguOTYzOCAyNC45OUwxOC45NzM4IDI1WiIvPid9XSxbInRh'@; put 'YmxlIix7b3V0bGluZTonPHBhdGggZD0iTTMzIDE4QzMzLjU1IDE4IDM0IDE3LjU1IDM0IDE3QzM0IDE2LjQ1IDMzLjU1IDE2IDMzIDE2SDI4VjhIMzNDMzMuNTUgOCAzNCA3LjU1IDM0IDdDMzQgNi40NSAzMy41NSA2IDMzIDZIOFYzQzggMi40NSA3LjU1IDIgNyAyQzYuNDUgMiA2IDIuNDUg'@; put 'NiAzVjZIM0MyLjQ1IDYgMiA2LjQ1IDIgN0MyIDcuNTUgMi40NSA4IDMgOEg2VjMzQzYgMzMuNTUgNi40NSAzNCA3IDM0QzcuNTUgMzQgOCAzMy41NSA4IDMzVjI4SDE2VjMzQzE2IDMzLjU1IDE2LjQ1IDM0IDE3IDM0QzE3LjU1IDM0IDE4IDMzLjU1IDE4IDMzVjI4SDI2VjMzQzI2IDMzLjU1'@; put 'IDI2LjQ1IDM0IDI3IDM0QzI3LjU1IDM0IDI4IDMzLjU1IDI4IDMzVjI4SDMzQzMzLjU1IDI4IDM0IDI3LjU1IDM0IDI3QzM0IDI2LjQ1IDMzLjU1IDI2IDMzIDI2SDI4VjE4SDMzWk0xNiAyNkg4VjE4SDE2VjI2Wk0xNiAxNkg4VjhIMTZWMTZaTTI2IDI2SDE4VjE4SDI2VjI2Wk0yNiAxNkgx'@; put 'OFY4SDI2VjE2WiIvPid9XSxbInRyYXNoIix7b3V0bGluZTonPHBhdGggZD0iTTI3Ljk4IDMxQzI4IDMxLjI1IDI3LjkyIDMxLjQ5IDI3Ljc2IDMxLjY4QzI3LjYgMzEuODcgMjcuMzcgMzEuOTggMjcuMTIgMzJIOC44NUM4LjYgMzEuOTggOC4zNyAzMS44NyA4LjIxIDMxLjY4QzguMDUgMzEu'@; put 'NDkgNy45NyAzMS4yNSA3Ljk5IDMxVjExLjAzSDUuOTdWMzFDNS45NSAzMS43OCA2LjI0IDMyLjUzIDYuNzggMzMuMDlDNy4zMiAzMy42NSA4LjA2IDMzLjk4IDguODUgMzRIMjcuMTJDMjcuOSAzMy45OCAyOC42NSAzMy42NiAyOS4xOSAzMy4wOUMyOS43MyAzMi41MiAzMC4wMiAzMS43NyAz'@; put 'MCAzMVYxMS4wM0gyNy45OFYzMVpNMTMgMTIuOThWMjcuOThIMTUuMDJWMTIuOThIMTNaTTE1IDRIMjFWNkgyM1Y0QzIzIDIuOSAyMi4xIDIgMjEgMkgxNUMxMy45IDIgMTMgMi45IDEzIDRWNkgxNVY0Wk0zMC45OSA2Ljk4SDUuMDFDNC40NSA2Ljk4IDQgNy40MyA0IDcuOThDNCA4LjUzIDQu'@; put 'NDUgOC45OCA1LjAxIDguOThIMzAuOTlDMzEuNTUgOC45OCAzMiA4LjUzIDMyIDcuOThDMzIgNy40MyAzMS41NSA2Ljk4IDMwLjk5IDYuOThaTTIwLjk4IDEyLjk4VjI3Ljk4SDIzVjEyLjk4SDIwLjk4WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xNSA0SDIxVjZIMjNWNEMyMyAyLjkgMjIuMSAy'@; put 'IDIxIDJIMTVDMTMuOSAyIDEzIDIuOSAxMyA0VjZIMTVWNFpNMzAuOTkgNi45OEg1LjAxQzQuNDUgNi45OCA0IDcuNDMgNCA3Ljk4QzQgOC41MyA0LjQ1IDguOTggNS4wMSA4Ljk4SDMwLjk5QzMxLjU1IDguOTggMzIgOC41MyAzMiA3Ljk4QzMyIDcuNDMgMzEuNTUgNi45OCAzMC45OSA2Ljk4'@; put 'Wk01Ljk3IDExLjAzVjMxQzUuOTUgMzEuNzggNi4yNCAzMi41MyA2Ljc4IDMzLjA5QzcuMzIgMzMuNjUgOC4wNiAzMy45OCA4Ljg1IDM0SDI3LjEyQzI3LjkgMzMuOTggMjguNjUgMzMuNjYgMjkuMTkgMzMuMDlDMjkuNzMgMzIuNTIgMzAuMDIgMzEuNzcgMzAgMzFWMTEuMDNINS45N1pNMjAu'@; put 'NzkgMjguODJWMTVIMjMuMjFWMjlIMjAuNzlWMjguODJaTTEyLjgxIDI4LjgyVjE1SDE1LjIzVjI5SDEyLjgxVjI4LjgyWiIvPid9XSxbInByb2Nlc3Mtb24tdm0iLHtvdXRsaW5lOic8cGF0aCBkPSJNMTIgMTQuNTAwMVYyNC41MDAxQzEyIDI1LjA1MDEgMTIuNDUgMjUuNTAwMSAxMyAyNS41'@; put 'MDAxSDIzQzIzLjU1IDI1LjUwMDEgMjQgMjUuMDUwMSAyNCAyNC41MDAxVjE0LjUwMDFDMjQgMTMuOTUwMSAyMy41NSAxMy41MDAxIDIzIDEzLjUwMDFIMTNDMTIuNDUgMTMuNTAwMSAxMiAxMy45NTAxIDEyIDE0LjUwMDFaTTE0IDE1LjUwMDFIMjJWMjMuNTAwMUgxNFYxNS41MDAxWk01LjI2'@; put 'IDIyLjI4MDFDNS44MSAyMi4yMDAxIDYuMTkgMjEuNzAwMSA2LjExIDIxLjE1MDFDNi4wMyAyMC42MTAxIDYgMjAuMDUwMSA2IDE5LjQ5MDFDNiAxMy40MTAxIDEwLjU1IDguMzkwMDYgMTYuNDcgNy42MTAwNkwxNi4yOSA3Ljc5MDA2QzE1LjkgOC4xODAwNiAxNS45IDguODEwMDYgMTYuMjkg'@; put 'OS4yMDAwNkMxNi40OSA5LjQwMDA2IDE2Ljc0IDkuNDkwMDYgMTcgOS40OTAwNkMxNy4yNiA5LjQ5MDA2IDE3LjUxIDkuMzkwMDYgMTcuNzEgOS4yMDAwNkwyMC40MiA2LjQ5MDA2TDE3LjcxIDMuNzkwMDZDMTcuMzIgMy40MDAwNiAxNi42OSAzLjQwMDA2IDE2LjMgMy43OTAwNkMxNS45MSA0'@; put 'LjE4MDA2IDE1LjkxIDQuODEwMDYgMTYuMyA1LjIwMDA2TDE2LjY2IDUuNTYwMDZDOS41NiA2LjI1MDA2IDQgMTIuMjMwMSA0IDE5LjUwMDFDNCAyMC4xNTAxIDQuMDQgMjAuODAwMSA0LjEzIDIxLjQzMDFDNC4yIDIxLjkzMDEgNC42MyAyMi4yOTAxIDUuMTIgMjIuMjkwMUM1LjE2IDIyLjI5'@; put 'MDEgNS4yMSAyMi4yOTAxIDUuMjYgMjIuMjkwMVYyMi4yODAxWk0yMy42NyAzMC4wNzAxQzIxLjk0IDMxLjAwMDEgMTkuOTggMzEuNDkwMSAxOCAzMS40OTAxQzE0LjMgMzEuNDkwMSAxMC44MyAyOS43NjAxIDguNTcgMjYuOTAwMUw4LjgzIDI2Ljk0MDFDOS4zOCAyNy4wNDAxIDkuODkgMjYu'@; put 'NjYwMSA5Ljk4IDI2LjEyMDFDMTAuMDcgMjUuNTgwMSA5LjcgMjUuMDYwMSA5LjE2IDI0Ljk3MDFMNS4zOCAyNC4zNDAxTDQuNzUgMjguMTIwMUM0LjY2IDI4LjY2MDEgNS4wMyAyOS4xODAxIDUuNTcgMjkuMjcwMUM1LjYzIDI5LjI3MDEgNS42OCAyOS4yODAxIDUuNzQgMjkuMjgwMUM2LjIy'@; put 'IDI5LjI4MDEgNi42NCAyOC45MzAxIDYuNzMgMjguNDUwMUw2LjgyIDI3LjkyMDFDOS40NSAzMS40MDAxIDEzLjU5IDMzLjUwMDEgMTggMzMuNTAwMUMyMC4zMSAzMy41MDAxIDIyLjYgMzIuOTMwMSAyNC42MiAzMS44NDAxQzI1LjExIDMxLjU4MDEgMjUuMjkgMzAuOTcwMSAyNS4wMyAzMC40'@; put 'OTAxQzI0Ljc3IDMwLjAwMDEgMjQuMTYgMjkuODIwMSAyMy42OCAzMC4wODAxTDIzLjY3IDMwLjA3MDFaTTMwLjA5IDI2LjgzMDFMMjkuOSAyNi44NjAxQzMxLjI2IDI0LjY2MDEgMzIgMjIuMTIwMSAzMiAxOS40OTAxQzMyIDEzLjkwMDEgMjguNjggOC44NTAwNiAyMy41NSA2LjYzMDA2QzIz'@; put 'LjA0IDYuNDEwMDYgMjIuNDYgNi42NDAwNiAyMi4yNCA3LjE1MDA2QzIyLjAyIDcuNjYwMDYgMjIuMjUgOC4yNTAwNiAyMi43NiA4LjQ2MDA2QzI3LjE2IDEwLjM2MDEgMzAuMDEgMTQuNjkwMSAzMC4wMSAxOS40ODAxQzMwLjAxIDIxLjgwMDEgMjkuMzQgMjQuMDQwMSAyOC4xIDI1Ljk2MDFM'@; put 'MjcuOTkgMjUuMzIwMUMyNy45IDI0Ljc4MDEgMjcuMzkgMjQuNDAwMSAyNi44NCAyNC41MDAxQzI2LjMgMjQuNTkwMSAyNS45MyAyNS4xMDAxIDI2LjAyIDI1LjY1MDFMMjYuNjQgMjkuNDMwMUwzMC40MiAyOC44MTAxQzMwLjk2IDI4LjcyMDEgMzEuMzMgMjguMjEwMSAzMS4yNCAyNy42NjAx'@; put 'QzMxLjE1IDI3LjEyMDEgMzAuNjQgMjYuNzQwMSAzMC4wOSAyNi44NDAxVjI2LjgzMDFaIi8+J31dKTtsZXQgRHd0PSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpLG8sYSxsLHUsZyxFLE8sWil7dGhpcy5hcHBTZXJ2aWNlPXIsdGhpcy5saWNlbmNlU2VydmljZT1pLHRoaXMu'@; put 'cm91dGVyPW8sdGhpcy5yb3V0ZT1hLHRoaXMubG9jYXRpb249bCx0aGlzLmV2ZW50U2VydmljZT11LHRoaXMuYXBwU3RvcmVTZXJ2aWNlPWcsdGhpcy5zdGFydHVwQ2hlY2tTZXJ2aWNlPUUsdGhpcy5jZHI9Tyx0aGlzLmVsZW1lbnRSZWY9Wix0aGlzLmxpY2Vuc2VFeHBpcmluZ0RheXM9bnVs'@; put 'bCx0aGlzLnNhc2pzQWJvcnRzPVtdLHRoaXMuZWRpdG9yQWN0aXZlPSExLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSx0aGlzLmZyZWVUaWVyQmFubmVyPXRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBGcmVlVGllci52YWx1ZSx0aGlzLmxpY2VuY2VQcm9ibGVtPXRoaXMubGljZW5jZVNlcnZpY2Uu'@; put 'bGljZW5jZVByb2JsZW0sdGhpcy5hcHBPdmVyQ2FwYWNpdHk9ITEsdGhpcy5hcHBBY3RpdmU9bnVsbCx0aGlzLnJlcXVlc3RzTW9kYWw9ITEsdGhpcy5zaG93UmVnaXN0cmF0aW9uPSEwLHRoaXMuc3RhcnR1cERhdGFMb2FkZWQ9ITEsdGhpcy5zdGFydHVwU3RlcHM9W10sdGhpcy5kZW1vTGlt'@; put 'aXROb3RpY2U9e29wZW46ITEsZmVhdHVyZU5hbWU6IiJ9LHRoaXMuc3lzc2l0ZT10aGlzLmFwcFNlcnZpY2Uuc3lzc2l0ZSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLmVtYmVkPVVuLmVtYmVkLHRoaXMucGFyc2VEY0FkYXB0ZXJTZXR0'@; put 'aW5ncygpLHRoaXMuc3RhcnR1cENoZWNrU2VydmljZS5zdGVwcyQuc3Vic2NyaWJlKHZlPT57dGhpcy5zdGFydHVwU3RlcHM9dmV9KSx3aW5kb3cuYXBwaW5mbz0oKT0+e2NvbnNvbGUudGFibGUoeyJBZGFwdGVyIHZlcnNpb24iOiI0LjE5LjAiLCJBcHAgdmVyc2lvbiI6InY3LjE2LjAiLnJl'@; put 'cGxhY2UoInYiLCIiKSwiQnVpbGQgdGltZXN0YW1wIjpTcCgpKHBhcnNlSW50KCIxNzkwNTg2NTg3MTU3IikpLmZvcm1hdCgiREQtTU1NLVlZWVkgSEg6TU0iKSwiLi4uIjoiLi4uIn0pfSx0aGlzLnN1YnNjcmliZVRvTGljZW5zZUV2ZW50cygpLHRoaXMuY29tbWl0VmVyPSJ2Ny4xNi4wIi5y'@; put 'ZXBsYWNlKCJ2IiwiIikrIi5nNzkxODllZiIsby5ldmVudHMuc3Vic2NyaWJlKHZlPT57aWYodGhpcy5yb3V0ZVVybD10aGlzLnJvdXRlci51cmwsdHlwZW9mIHRoaXMucm91dGVVcmw8InUiJiZ0aGlzLnJvdXRlVXJsLmxlbmd0aD40KXtsZXQgTWU9dGhpcy5yb3V0ZVVybC5zcGxpdCgiLyIp'@; put 'WzFdOyJlZGl0b3IiPT09TWU/KHRoaXMuZXJyVG9wPSEwLHRoaXMuZWRpdG9yQWN0aXZlPSEwLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSk6ImhvbWUiPT09TWU/KHRoaXMuZXJyVG9wPSExLHRoaXMuZWRpdG9yQWN0aXZlPSEwLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSk6KHRoaXMuZXJyVG9wPSEw'@; put 'LHRoaXMuZWRpdG9yQWN0aXZlPSExKSxVbi5yb290UGFyYW09TWV9dHlwZW9mIHRoaXMucm91dGVVcmw8InUiJiZ0aGlzLnJvdXRlVXJsLmxlbmd0aD42JiYodGhpcy5hcHByb3ZlQWN0aXZlPSEhdGhpcy5yb3V0ZVVybC5pbmNsdWRlcygiYXBwcm92ZURldCIpfHwhIXRoaXMucm91dGVVcmwu'@; put 'aW5jbHVkZXMoInRvYXBwcm92ZSIpKX0pO2NvbnN0IGVlPXdpbmRvdy5sb2NhdGlvbi5oYXNoLnNwbGl0KCI/IilbMV07aWYoZWUmJm51bGwhPT1uZXcgVVJMU2VhcmNoUGFyYW1zKGVlKS5nZXQoImVtYmVkIikpe2NvbnN0IHZlPWZ1bmN0aW9uIE5hdChuKXtpZighbilyZXR1cm4hMTtjb25z'@; put 'dCBlPW5ldyBVUkxTZWFyY2hQYXJhbXMobikuZ2V0KCJlbWJlZCIpO3JldHVybiBudWxsIT09ZSYmKCJ2YSI9PT1lPyJ2YSI6ImZhbHNlIiE9PWUpfShlZSk7VW4uZW1iZWQ9dmUsdGhpcy5lbWJlZD12ZX10aGlzLnN1YnNjcmliZVRvU2hvd0Fib3J0TW9kYWwoKSx0aGlzLnN1YnNjcmliZVRv'@; put 'UmVxdWVzdHNNb2RhbCgpLHRoaXMuc3Vic2NyaWJlVG9TdGFydHVwRGF0YSgpLHRoaXMuc3Vic2NyaWJlVG9BcHBBY3RpdmUoKSx0aGlzLnN1YnNjcmliZVRvRGVtb0xpbWl0TW9kYWwoKSx3aW5kb3cuZnJhbWVFbGVtZW50JiYod2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0'@; put 'eWxlIiwiaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZSIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhbGxvd2Z1bGxzY3JlZW4iLCIiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIiksd2luZG93LmZy'@; put 'YW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1hcmdpbmhlaWdodCIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWFyZ2lud2lkdGgiLCIwIiksd2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsImF1dG8iKSx3aW5kb3cuZm9jdXMoKSl9'@; put 'cGFyc2VEY0FkYXB0ZXJTZXR0aW5ncygpe2NvbnN0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2FzanMiKTtpZighcilyZXR1cm4gdGhpcy5saWNlbmNlU2VydmljZS5kZWFjdGl2YXRlQXBwKCksdm9pZCBzZXRUaW1lb3V0KCgpPT57dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9k'@; put 'YWwobnVsbCwiUGxlYXNlIG1ha2Ugc3VyZSAnU0FTSlMnIHRhZyB3aXRoIGNvbmZpZyBhdHRyaWJ1dGVzIGlzIGFkZGVkIHRvIGluZGV4Lmh0bWwiLG51bGwsIlNBU2pzIENvbmZpZyBub3QgZm91bmQiKX0pO2NvbnN0IGk9YT0+ci5nZXRBdHRyaWJ1dGUoYSl8fHZvaWQgMCxvPXtzZXJ2ZXJV'@; put 'cmw6aSgic2VydmVyVXJsIil8fCIiLGFwcExvYzppKCJhcHBMb2MiKXx8IiIsc2VydmVyVHlwZTppKCJzZXJ2ZXJUeXBlIiksbG9naW5NZWNoYW5pc206aSgibG9naW5NZWNoYW5pc20iKXx8IiIsYWRtaW5Hcm91cDppKCJhZG1pbkdyb3VwIil8fCIiLGRjUGF0aDppKCJkY1BhdGgiKXx8IiIs'@; put 'ZGVidWc6InRydWUiPT09aSgiZGVidWciKXx8ITEsdXNlQ29tcHV0ZUFwaTp0aGlzLnBhcnNlQ29tcHV0ZUFwaShpKCJ1c2VDb21wdXRlQXBpIikpLHJ1bkFzVGFzazoidHJ1ZSI9PT1pKCJydW5Bc1Rhc2siKXx8ITEsY29udGV4dE5hbWU6aSgiY29udGV4dE5hbWUiKXx8IiIsaG90TGljZW5j'@; put 'ZUtleTppKCJob3RMaWNlbmNlS2V5Iil8fCIifTt0aGlzLmRjQWRhcHRlclNldHRpbmdzPW8sdGhpcy5hcHBTdG9yZVNlcnZpY2Uuc2V0RGNBZGFwdGVyU2V0dGluZ3MobyksdGhpcy5hcHBTZXJ2aWNlLnNhc1NlcnZpY2VJbml0KCl9bGljZW5jZVByb2JsZW1EZXRhaWxzKHIpe3RoaXMucm91'@; put 'dGVyLm5hdmlnYXRlQnlVcmwocil9cGFyc2VDb21wdXRlQXBpKHIpe3JldHVybiB2b2lkIDA9PT1yfHwidW5kZWZpbmVkIj09PXJ8fCJudWxsIj09PXI/bnVsbDoidHJ1ZSI9PT1yfHwhMX1zdWJzY3JpYmVUb0RlbW9MaW1pdE1vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub25EZW1vTGltaXRN'@; put 'b2RhbFNob3cuc3Vic2NyaWJlKHI9Pnt0aGlzLmRlbW9MaW1pdE5vdGljZT17b3BlbjohMCxmZWF0dXJlTmFtZTpyfX0pfXN1YnNjcmliZVRvTGljZW5zZUV2ZW50cygpe3RoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBGcmVlVGllci5zdWJzY3JpYmUocj0+e3RoaXMuZnJlZVRpZXJCYW5uZXI9'@; put 'cn0pLHRoaXMubGljZW5jZVNlcnZpY2UubGljZW5zZUV4cGlyZXNJbkRheXMuc3Vic2NyaWJlKHI9PntyJiZyPD0xNCYmKHRoaXMubGljZW5zZUV4cGlyaW5nRGF5cz1yKX0pLHRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBPdmVyQ2FwYWNpdHkuc3Vic2NyaWJlKHI9Pnt0aGlzLmFwcE92ZXJD'@; put 'YXBhY2l0eT1yfSl9c3Vic2NyaWJlVG9BcHBBY3RpdmUoKXt0aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnN1YnNjcmliZShyPT57dGhpcy5hcHBBY3RpdmU9cn0pfXN1YnNjcmliZVRvU2hvd0Fib3J0TW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vblNob3dBYm9ydE1vZGFs'@; put 'LnN1YnNjcmliZShyPT57ci5pZD10aGlzLnNhc2pzQWJvcnRzLmxlbmd0aCsxLHRoaXMuc2FzanNBYm9ydHMucHVzaChyKSx0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCl9KX1zdWJzY3JpYmVUb1N0YXJ0dXBEYXRhKCl7dGhpcy5ldmVudFNlcnZpY2Uub25TdGFydHVwRGF0YUxvYWRlZC5zdWJz'@; put 'Y3JpYmUoKCk9Pnt0aGlzLnN0YXJ0dXBEYXRhTG9hZGVkPSEwfSl9c3Vic2NyaWJlVG9SZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub25SZXF1ZXN0c01vZGFsT3Blbi5zdWJzY3JpYmUocj0+e3RoaXMucmVxdWVzdHNNb2RhbD0hMH0pfWNsb3NlQWJvcnRNb2RhbChyKXtsZXQg'@; put 'aT10aGlzLnNhc2pzQWJvcnRzLmZpbmRJbmRleChvPT5vLmlkPT09cik7dGhpcy5zYXNqc0Fib3J0cy5zcGxpY2UoaSwxKX10b2dnbGVTaWRlYmFyKCl7dGhpcy5ldmVudFNlcnZpY2UudG9nZ2xlU2lkZWJhcigpfWlzTWFpblJvdXRlKHIpe3JldHVybiB0aGlzLnJvdXRlci51cmwuaW5jbHVk'@; put 'ZXMocil9b3BlbkxpY2VuY2luZ1BhZ2UoKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvbGljZW5zaW5nL3VwZGF0ZSIpfWdldCB2YUVkaXRvckxpYmRzKCl7Y29uc3Qgcj1Vbi5lZGl0b3I7cmV0dXJuIHI/LmxpYnJhcnkmJnI/LnRhYmxlP2Ake3IubGlicmFyeX0uJHtyLnRhYmxlfWA6'@; put 'IiJ9YmFja1RvRWRpdG9yKCl7dGhpcy52YUVkaXRvckxpYmRzJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIi9lZGl0b3IvIit0aGlzLnZhRWRpdG9yTGliZHNdLHtxdWVyeVBhcmFtczp7ZW1iZWQ6InZhIn19KX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0'@; put 'dXJuIG5ldyhpfHxlKSh6ZSh1eiksemUoRjIpLHplKHZjKSx6ZShwMSksemUoVjApLHplKHVkKSx6ZShFYiksemUoU2llKSx6ZShVbCksemUobm8pKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1sibXktYXBwIl1dLHN0YW5kYWxvbmU6ITEsZGVjbHM6MjIsdmFyczox'@; put 'NCxjb25zdHM6W1sxLCJtYWluLWNvbnRhaW5lciJdLFsxLCJhcHAtaGVhZGVyIl0sWzEsInN1Ym5hdiJdLFszLCJvcGVuZWRDaGFuZ2UiLCJvcGVuZWQiXSxbMSwidmEtYmFjay1iYXIiXSxbMywiZGF0YSIsImZvcmNlUmVsb2FkIl0sWyJhcHBEcmFnTmRyb3AiLCIiLDEsInBvc2l0aW9uLXJl'@; put 'bGF0aXZlIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxTaXplIl0sWzEsIm1vZGFsLXRpdGxlIl0sWyJzaXplIiwiMjAiLCJzaGFwZSIsImxvY2siXSxbMSwibW9kYWwtYm9keSJdLFsxLCJhcHAtbG9hZGluZyJdLFsi'@; put 'aWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsMSwiYWxlcnQiLCJhbGVydC1hcHAtbGV2ZWwiLCJhbGVydC13YXJuaW5nIl0sWyJpZCIsImRlbW8tYmFubmVyIiwicm9sZSIsImFsZXJ0IiwxLCJhbGVydCIsImFsZXJ0LWFwcC1sZXZlbCIsImFsZXJ0LWRhbmdlciJdLFsxLCJhbGVy'@; put 'dC1pdGVtcyJdLFsxLCJhbGVydC1pdGVtIiwic3RhdGljIl0sWzEsImFsZXJ0LWljb24td3JhcHBlciJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwxLCJhbGVydC1pY29uIl0sWzEsImFsZXJ0LXRleHQiXSxbImNsYXNzZXMiLCJjb2xvci13aGl0ZSJdLFsicm91dGVyTGluayIsIi9s'@; put 'aWNlbnNpbmcvdXBkYXRlIiwxLCJ1cGRhdGUta2V5Il0sWzEsInVwZGF0ZS1rZXkiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLCJhcmlhLWxhYmVsIiwiVG9nZ2xlIHNpZGViYXIiLDEsImN1cnNvci1wb2ludGVyIiwic2VsZWN0LW5vbmUiLCJtbC0xMCIs'@; put 'ImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJsb2dvIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsiaHJlZiIsIiMiLDEsIm5hdi1saW5rIiwzLCJyb3V0ZXJMaW5rIl0sWyJzcmMiLCIvU0FTSm9i'@; put 'RXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2ltYWdlcy9kYy1sb2dvLnN2ZyIsImFsdCIsImRhdGFjb250cm9sbGVyIGxvZ28gd2l0aG91dCB0ZXh0IiwxLCJ3aXRob3V0LXRleHQiLCJkLWJsb2NrIiwiZC1tZC1ub25lIl0sWyJzcmMiLCIv'@; put 'U0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2ltYWdlcy9kYXRhY29udHJvbGxlci5zdmciLCJhbHQiLCJkYXRhY29udHJvbGxlciBsb2dvIiwxLCJ3aXRoLXRleHQiLCJkLW5vbmUiLCJkLW1kLWJsb2NrIl0sWyJ0eXBlIiwiYnV0'@; put 'dG9uIiwiYXJpYS1sYWJlbCIsIlRvZ2dsZSBzaWRlYmFyIiwxLCJjdXJzb3ItcG9pbnRlciIsInNlbGVjdC1ub25lIiwibWwtMTAiLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLDMsImNsaWNrIl0sWyJzaXplIiwiMjQiLCJz'@; put 'aGFwZSIsInRyZWUtdmlldyIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsxLCJoZWFkZXItbmF2IiwiZC1mbGV4IiwiZC1zbS1ub25lIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLCJhcmlhLWxhYmVsIiwidG9nZ2xlIHNldHRpbmdzIG1lbnUiLDEsIm5hdi1pY29uIiwiY29sb3Itd2hpdGUt'@; put 'aSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsNCwiY2xySWZPcGVuIl0sWzEsImhlYWRlci1uYXYiLCJkLW5vbmUiLCJkLXNtLWZsZXgiXSxbInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDEsIm5hdi1saW5rIiwibmF2LXRleHQiLDMsInJvdXRlckxpbmsiXSxbMSwibmF2LWxp'@; put 'bmsiLCJuYXYtdGV4dCIsMywicm91dGVyTGluayJdLFsxLCJuYXYtbGluayIsIm5hdi10ZXh0IiwiY3Vyc29yLXBvaW50ZXIiLDMsInJvdXRlckxpbmsiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLWxlZnQiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywicm91dGVyTGluayJdLFsxLCJuYXYi'@; put 'XSxbMSwibmF2LWl0ZW0iXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjYXJldCIsImRpciIsImxlZnQiLCJzaXplIiwiMTYiXSxbMywib25Db25maXJtTW9kYWxDbGljayIs'@; put 'ImRhdGEiLCJmb3JjZVJlbG9hZCJdLFsic3JjIiwiL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9pbWFnZXMvZGF0YWNvbnRyb2xsZXIuc3ZnIiwiYWx0IiwiZGF0YWNvbnRyb2xsZXIgbG9nbyIsMSwibG9hZGluZy1sb2dvIl0s'@; put 'WzEsInNsaWRlciJdLFsxLCJzdGFydHVwLWNoZWNrcyJdLFsxLCJsaW5lIl0sWzEsInN1YmxpbmUiLCJpbmMiXSxbMSwic3VibGluZSIsImRlYyJdLFsxLCJzdGFydHVwLWNoZWNrIiwzLCJzdGFydHVwLWNoZWNrLS1lcnJvciIsInN0YXJ0dXAtY2hlY2stLWRvbmUiXSxbMSwic3RhcnR1cC1j'@; put 'aGVjayJdLFsic2hhcGUiLCJjaXJjbGUiLDEsImlzLXNvbGlkIiwic3RhcnR1cC1jaGVja19faWNvbi0tcGVuZGluZyJdLFsiY2xyU21hbGwiLCIiXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwxLCJpcy1zb2xpZCIsInN0YXJ0dXAtY2hlY2tfX2ljb24tLWRvbmUiXSxbInNoYXBlIiwiZXhj'@; put 'bGFtYXRpb24tY2lyY2xlIiwxLCJpcy1zb2xpZCIsInN0YXJ0dXAtY2hlY2tfX2ljb24tLWVycm9yIl0sWzEsInN0YXJ0dXAtY2hlY2tfX2xhYmVsIl0sWzEsInN0YXJ0dXAtY2hlY2tfX2RldGFpbCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmKEooMCwiZGl2IiwwKSx2dCgxLGh3'@; put 'dCwzLDMpLHZ0KDIsbXd0LDgsNCwiaGVhZGVyIiwxKSx2dCgzLHZ3dCwxMSw4LCJuYXYiLDIpLHZ0KDQsX3d0LDEsMCwiYXBwLWFsZXJ0cyIpLEooNSwiYXBwLXJlcXVlc3RzLW1vZGFsIiwzKSxoaSgib3BlbmVkQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5yZXF1ZXN0c01vZGFs'@; put 'LGwpfHwoby5yZXF1ZXN0c01vZGFsPWwpLGx9KSx0ZSgpLEl0KDYsImFwcC1leGNlbC1wYXNzd29yZC1tb2RhbCIpLHZ0KDcseXd0LDQsMCwiZGl2Iiw0KSx2dCg4LGJ3dCwxLDAsInJvdXRlci1vdXRsZXQiKSxJdCg5LCJhcHAtbG9naW4iKSx2dCgxMCx3d3QsMSwwLCJhcHAtYWxlcnRzIiks'@; put 'X28oMTEsQ3d0LDEsMiwiYXBwLWluZm8tbW9kYWwiLDUsQ28pLEooMTMsImNsci1tb2RhbCIsNiksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8uZGVtb0xpbWl0Tm90aWNlLm9wZW4sbCl8fChvLmRlbW9MaW1pdE5vdGljZS5vcGVuPWwpLGx9KSxKKDE0'@; put 'LCJoMyIsNyksU2UoMTUpLEl0KDE2LCJjbHItaWNvbiIsOCksdGUoKSxKKDE3LCJkaXYiLDkpLFNlKDE4LCIgQ29udGFjdCAiKSxJdCgxOSwiY29udGFjdC1saW5rIiksU2UoMjApLHRlKCkoKSgpLHZ0KDIxLEl3dCw0LDIsImRpdiIsMTApKSwyJmkmJihpZSgpLF90KG8ucm91dGVyLnVybC5p'@; put 'bmNsdWRlcygibGljZW5zaW5nIik/LTE6MSksaWUoKSxfdChvLmVtYmVkPy0xOjIpLGllKCksX3QoIW8uZW1iZWQmJihvLnJvdXRlci51cmwuaW5jbHVkZXMoInN1Ym1pdHRlZCIpfHxvLnJvdXRlci51cmwuaW5jbHVkZXMoImFwcHJvdmUiKXx8by5yb3V0ZXIudXJsLmluY2x1ZGVzKCJoaXN0'@; put 'b3J5IikpPzM6LTEpLGllKCksX3Qoby5lcnJUb3A/LTE6NCksaWUoKSxkaSgib3BlbmVkIixvLnJlcXVlc3RzTW9kYWwpLGllKDIpLF90KCJ2YSI9PT1vLmVtYmVkJiZvLnZhRWRpdG9yTGliZHMmJiFvLmlzTWFpblJvdXRlKCIvZWRpdG9yIik/NzotMSksaWUoKSxfdChvLnN0YXJ0dXBEYXRh'@; put 'TG9hZGVkPzg6LTEpLGllKDIpLF90KG8uZXJyVG9wPzEwOi0xKSxpZSgpLHlvKG8uc2FzanNBYm9ydHMpLGllKDIpLGRpKCJjbHJNb2RhbE9wZW4iLG8uZGVtb0xpbWl0Tm90aWNlLm9wZW4pLHJ0KCJjbHJNb2RhbENsb3NhYmxlIiwhMCkoImNsck1vZGFsU2l6ZSIsImxnIiksaWUoMiksU3Io'@; put 'IiBMb2NrZWQgRmVhdHVyZSAoIixvLmRlbW9MaW1pdE5vdGljZS5mZWF0dXJlTmFtZSwiKSAiKSxpZSg1KSxTcigiIHdpdGggeW91ciBzaXRlIGlkICgiLG8uc3lzc2l0ZS52YWx1ZSwiKSB0byBhY3RpdmF0ZSEgIiksaWUoKSxfdChvLnN0YXJ0dXBEYXRhTG9hZGVkPy0xOjIxKSl9LGRlcGVu'@; put 'ZGVuY2llczpbZTcsUDIsSkUsWHl0LGhidCxnYnQsX1csX2J0LEdELGN1LEpzLHhkLG1oLExwLG83LGpiLFViLHBNLHoyLHFELFlidCxld3RdLHN0eWxlczpbIi52YS1iYWNrLWJhcntwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRl'@; put 'bnQ6ZmxleC1zdGFydDtwYWRkaW5nOi4zNXJlbSAuNnJlbTtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMDgpfVxuIl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7ZnVuY3Rpb24gU1RlKG4pe3JldHVybiBuZXcgV24o'@; put 'M2UzLCExKX1mdW5jdGlvbiBVd3Qobil7cmV0dXJuIG5ldyBXbigzMDAyLCExKX1mdW5jdGlvbiBQdihuKXtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IGZEO2Nhc2UgMTpyZXR1cm4gblswXTtkZWZhdWx0OnJldHVybiBuZXcgQlNlKG4pfX1mdW5jdGlvbiBFVGUobixlLHQ9'@; put 'bmV3IE1hcCxyPW5ldyBNYXApe2NvbnN0IGk9W10sbz1bXTtsZXQgYT0tMSxsPW51bGw7aWYoZS5mb3JFYWNoKHU9Pntjb25zdCBnPXUuZ2V0KCJvZmZzZXQiKSxFPWc9PWEsTz1FJiZsfHxuZXcgTWFwO3UuZm9yRWFjaCgoWixlZSk9PntsZXQgdmU9ZWUsTWU9WjtpZigib2Zmc2V0IiE9PWVl'@; put 'KXN3aXRjaCh2ZT1uLm5vcm1hbGl6ZVByb3BlcnR5TmFtZSh2ZSxpKSxNZSl7Y2FzZSIhIjpNZT10LmdldChlZSk7YnJlYWs7Y2FzZSB0NzpNZT1yLmdldChlZSk7YnJlYWs7ZGVmYXVsdDpNZT1uLm5vcm1hbGl6ZVN0eWxlVmFsdWUoZWUsdmUsTWUsaSl9Ty5zZXQodmUsTWUpfSksRXx8by5w'@; put 'dXNoKE8pLGw9TyxhPWd9KSxpLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiBKd3QoKXtyZXR1cm4gbmV3IFduKDM1MDIsITEpfSgpO3JldHVybiBvfWZ1bmN0aW9uIE5hZShuLGUsdCxyKXtzd2l0Y2goZSl7Y2FzZSJzdGFydCI6bi5vblN0YXJ0KCgpPT5yKHQmJkZhZSh0LCJzdGFydCIsbikpKTti'@; put 'cmVhaztjYXNlImRvbmUiOm4ub25Eb25lKCgpPT5yKHQmJkZhZSh0LCJkb25lIixuKSkpO2JyZWFrO2Nhc2UiZGVzdHJveSI6bi5vbkRlc3Ryb3koKCk9PnIodCYmRmFlKHQsImRlc3Ryb3kiLG4pKSl9fWZ1bmN0aW9uIEZhZShuLGUsdCl7Y29uc3Qgbz1QYWUobi5lbGVtZW50LG4udHJpZ2dl'@; put 'ck5hbWUsbi5mcm9tU3RhdGUsbi50b1N0YXRlLGV8fG4ucGhhc2VOYW1lLHQudG90YWxUaW1lPz9uLnRvdGFsVGltZSwhIXQuZGlzYWJsZWQpLGE9bi5fZGF0YTtyZXR1cm4gbnVsbCE9YSYmKG8uX2RhdGE9YSksb31mdW5jdGlvbiBQYWUobixlLHQscixpPSIiLG89MCxhKXtyZXR1cm57ZWxl'@; put 'bWVudDpuLHRyaWdnZXJOYW1lOmUsZnJvbVN0YXRlOnQsdG9TdGF0ZTpyLHBoYXNlTmFtZTppLHRvdGFsVGltZTpvLGRpc2FibGVkOiEhYX19ZnVuY3Rpb24gSHAobixlLHQpe2xldCByPW4uZ2V0KGUpO3JldHVybiByfHxuLnNldChlLHI9dCkscn1mdW5jdGlvbiBNVGUobil7Y29uc3QgZT1u'@; put 'LmluZGV4T2YoIjoiKTtyZXR1cm5bbi5zdWJzdHJpbmcoMSxlKSxuLnNsaWNlKGUrMSldfWNvbnN0IGRDdD10eXBlb2YgZG9jdW1lbnQ+InUiP251bGw6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2Z1bmN0aW9uIEhhZShuKXtjb25zdCBlPW4ucGFyZW50Tm9kZXx8bi5ob3N0fHxudWxsO3Jl'@; put 'dHVybiBlPT09ZEN0P251bGw6ZX1sZXQgaXc9bnVsbCxUVGU9ITE7ZnVuY3Rpb24geFRlKG4sZSl7Zm9yKDtlOyl7aWYoZT09PW4pcmV0dXJuITA7ZT1IYWUoZSl9cmV0dXJuITF9ZnVuY3Rpb24gQVRlKG4sZSx0KXtpZih0KXJldHVybiBBcnJheS5mcm9tKG4ucXVlcnlTZWxlY3RvckFsbChl'@; put 'KSk7Y29uc3Qgcj1uLnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIHI/W3JdOltdfWNvbnN0IFZhZT0ibmctbGVhdmUiLHlXPSJuZy10cmlnZ2VyIixiVz0iLm5nLXRyaWdnZXIiLElUZT0ibmctYW5pbWF0aW5nIixCYWU9Ii5uZy1hbmltYXRpbmciO2Z1bmN0aW9uIGg3KG4pe2lmKCJudW1iZXIi'@; put 'PT10eXBlb2YgbilyZXR1cm4gbjtjb25zdCBlPW4ubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpLyk7cmV0dXJuIWV8fGUubGVuZ3RoPDI/MDpqYWUocGFyc2VGbG9hdChlWzFdKSxlWzJdKX1mdW5jdGlvbiBqYWUobixlKXtyZXR1cm4icyI9PT1lPzFlMypuOm59ZnVuY3Rpb24gd1cobixlLHQp'@; put 'e3JldHVybiBuLmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpP246ZnVuY3Rpb24gX0N0KG4sZSx0KXtsZXQgcixpPTAsbz0iIjtpZigic3RyaW5nIj09dHlwZW9mIG4pe2NvbnN0IGE9bi5tYXRjaCh2Q3QpO2lmKG51bGw9PT1hKXJldHVybiBlLnB1c2goU1RlKCkpLHtkdXJhdGlvbjowLGRl'@; put 'bGF5OjAsZWFzaW5nOiIifTtyPWphZShwYXJzZUZsb2F0KGFbMV0pLGFbMl0pO2NvbnN0IGw9YVszXTtudWxsIT1sJiYoaT1qYWUocGFyc2VGbG9hdChsKSxhWzRdKSk7Y29uc3QgdT1hWzVdO3UmJihvPXUpfWVsc2Ugcj1uO2lmKCF0KXtsZXQgYT0hMSxsPWUubGVuZ3RoO3I8MCYmKGUucHVz'@; put 'aChmdW5jdGlvbiBMd3QoKXtyZXR1cm4gbmV3IFduKDMxMDAsITEpfSgpKSxhPSEwKSxpPDAmJihlLnB1c2goZnVuY3Rpb24gT3d0KCl7cmV0dXJuIG5ldyBXbigzMTAxLCExKX0oKSksYT0hMCksYSYmZS5zcGxpY2UobCwwLFNUZSgpKX1yZXR1cm57ZHVyYXRpb246cixkZWxheTppLGVhc2lu'@; put 'ZzpvfX0obixlLHQpfWNvbnN0IHZDdD0vXigtP1tcLlxkXSspKG0/cykoPzpccysoLT9bXC5cZF0rKShtP3MpKT8oPzpccysoWy1hLXpdKyg/OlwoLis/XCkpPykpPyQvaTtmdW5jdGlvbiAkNShuLGUsdCl7ZS5mb3JFYWNoKChyLGkpPT57Y29uc3Qgbz16YWUoaSk7dCYmIXQuaGFzKGkpJiZ0'@; put 'LnNldChpLG4uc3R5bGVbb10pLG4uc3R5bGVbb109cn0pfWZ1bmN0aW9uIG93KG4sZSl7ZS5mb3JFYWNoKCh0LHIpPT57Y29uc3QgaT16YWUocik7bi5zdHlsZVtpXT0iIn0pfWZ1bmN0aW9uIEtEKG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4pPzE9PW4ubGVuZ3RoP25bMF06ZnVuY3Rpb24g'@; put 'b210KG4sZT1udWxsKXtyZXR1cm57dHlwZTpicy5TZXF1ZW5jZSxzdGVwczpuLG9wdGlvbnM6ZX19KG4pOm59Y29uc3QgVWFlPW5ldyBSZWdFeHAoInt7XFxzKiguKz8pXFxzKn19IiwiZyIpO2Z1bmN0aW9uIERUZShuKXtsZXQgZT1bXTtpZigic3RyaW5nIj09dHlwZW9mIG4pe2xldCB0O2Zv'@; put 'cig7dD1VYWUuZXhlYyhuKTspZS5wdXNoKHRbMV0pO1VhZS5sYXN0SW5kZXg9MH1yZXR1cm4gZX1mdW5jdGlvbiBYRChuLGUsdCl7Y29uc3Qgcj1gJHtufWAsaT1yLnJlcGxhY2UoVWFlLChvLGEpPT57bGV0IGw9ZVthXTtyZXR1cm4gbnVsbD09bCYmKHQucHVzaChmdW5jdGlvbiBGd3QoKXty'@; put 'ZXR1cm4gbmV3IFduKDMwMDMsITEpfSgpKSxsPSIiKSxsLnRvU3RyaW5nKCl9KTtyZXR1cm4gaT09cj9uOml9Y29uc3Qgd0N0PS8tKyhbYS16MC05XSkvZztmdW5jdGlvbiB6YWUobil7cmV0dXJuIG4ucmVwbGFjZSh3Q3QsKC4uLmUpPT5lWzFdLnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIFZw'@; put 'KG4sZSx0KXtzd2l0Y2goZS50eXBlKXtjYXNlIGJzLlRyaWdnZXI6cmV0dXJuIG4udmlzaXRUcmlnZ2VyKGUsdCk7Y2FzZSBicy5TdGF0ZTpyZXR1cm4gbi52aXNpdFN0YXRlKGUsdCk7Y2FzZSBicy5UcmFuc2l0aW9uOnJldHVybiBuLnZpc2l0VHJhbnNpdGlvbihlLHQpO2Nhc2UgYnMuU2Vx'@; put 'dWVuY2U6cmV0dXJuIG4udmlzaXRTZXF1ZW5jZShlLHQpO2Nhc2UgYnMuR3JvdXA6cmV0dXJuIG4udmlzaXRHcm91cChlLHQpO2Nhc2UgYnMuQW5pbWF0ZTpyZXR1cm4gbi52aXNpdEFuaW1hdGUoZSx0KTtjYXNlIGJzLktleWZyYW1lczpyZXR1cm4gbi52aXNpdEtleWZyYW1lcyhlLHQpO2Nh'@; put 'c2UgYnMuU3R5bGU6cmV0dXJuIG4udmlzaXRTdHlsZShlLHQpO2Nhc2UgYnMuUmVmZXJlbmNlOnJldHVybiBuLnZpc2l0UmVmZXJlbmNlKGUsdCk7Y2FzZSBicy5BbmltYXRlQ2hpbGQ6cmV0dXJuIG4udmlzaXRBbmltYXRlQ2hpbGQoZSx0KTtjYXNlIGJzLkFuaW1hdGVSZWY6cmV0dXJuIG4u'@; put 'dmlzaXRBbmltYXRlUmVmKGUsdCk7Y2FzZSBicy5RdWVyeTpyZXR1cm4gbi52aXNpdFF1ZXJ5KGUsdCk7Y2FzZSBicy5TdGFnZ2VyOnJldHVybiBuLnZpc2l0U3RhZ2dlcihlLHQpO2RlZmF1bHQ6dGhyb3cgZnVuY3Rpb24gUHd0KCl7cmV0dXJuIG5ldyBXbigzMDA0LCExKX0oKX19ZnVuY3Rp'@; put 'b24gV2FlKG4sZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4pW2VdfWxldCBZYWU9KCgpPT57Y2xhc3Mgbnt2YWxpZGF0ZVN0eWxlUHJvcGVydHkodCl7cmV0dXJuIGZ1bmN0aW9uIGZDdChuKXtpd3x8KGl3PWZ1bmN0aW9uIHBDdCgpe3JldHVybiB0eXBlb2YgZG9jdW1lbnQ8'@; put 'InUiP2RvY3VtZW50LmJvZHk6bnVsbH0oKXx8e30sVFRlPSEhaXcuc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIGl3LnN0eWxlKTtsZXQgZT0hMDtyZXR1cm4gaXcuc3R5bGUmJiFmdW5jdGlvbiBoQ3Qobil7cmV0dXJuImVia2l0Ij09bi5zdWJzdHJpbmcoMSw2KX0obikmJihlPW4gaW4g'@; put 'aXcuc3R5bGUsIWUmJlRUZSYmKGU9IldlYmtpdCIrbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnNsaWNlKDEpaW4gaXcuc3R5bGUpKSxlfSh0KX1jb250YWluc0VsZW1lbnQodCxyKXtyZXR1cm4geFRlKHQscil9Z2V0UGFyZW50RWxlbWVudCh0KXtyZXR1cm4gSGFlKHQpfXF1ZXJ5KHQs'@; put 'cixpKXtyZXR1cm4gQVRlKHQscixpKX1jb21wdXRlU3R5bGUodCxyLGkpe3JldHVybiBpfHwiIn1hbmltYXRlKHQscixpLG8sYSxsPVtdLHUpe3JldHVybiBuZXcgZkQoaSxvKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVwcm92'@; put 'PUpuKHt0b2tlbjpuLGZhY3Rvcnk6bi5cdTAyNzVmYWN9KX1yZXR1cm4gbn0pKCk7Y2xhc3MgWmFle3N0YXRpYyBOT09QPW5ldyBZYWV9Y2xhc3MgR2Fle31jb25zdCBrQ3Q9bmV3IFNldChbIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhl'@; put 'aWdodCIsImxlZnQiLCJ0b3AiLCJib3R0b20iLCJyaWdodCIsImZvbnRTaXplIiwib3V0bGluZVdpZHRoIiwib3V0bGluZU9mZnNldCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nUmlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5MZWZ0IiwibWFy'@; put 'Z2luQm90dG9tIiwibWFyZ2luUmlnaHQiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJXaWR0aCIsImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwidGV4dEluZGVudCIsInBlcnNwZWN0aXZlIl0pO2NsYXNzIE9U'@; put 'ZSBleHRlbmRzIEdhZXtub3JtYWxpemVQcm9wZXJ0eU5hbWUoZSx0KXtyZXR1cm4gemFlKGUpfW5vcm1hbGl6ZVN0eWxlVmFsdWUoZSx0LHIsaSl7bGV0IG89IiI7Y29uc3QgYT1yLnRvU3RyaW5nKCkudHJpbSgpO2lmKGtDdC5oYXModCkmJjAhPT1yJiYiMCIhPT1yKWlmKCJudW1iZXIiPT10'@; put 'eXBlb2YgcilvPSJweCI7ZWxzZXtjb25zdCBsPXIubWF0Y2goL15bKy1dP1tcZFwuXSsoW2Etel0qKSQvKTtsJiYwPT1sWzFdLmxlbmd0aCYmaS5wdXNoKGZ1bmN0aW9uIEh3dCgpe3JldHVybiBuZXcgV24oMzAwNSwhMSl9KCkpfXJldHVybiBhK299fWNvbnN0IFNXPW5ldyBTZXQoWyJ0cnVl'@; put 'IiwiMSJdKSxFVz1uZXcgU2V0KFsiZmFsc2UiLCIwIl0pO2Z1bmN0aW9uIE5UZShuLGUpe2NvbnN0IHQ9U1cuaGFzKG4pfHxFVy5oYXMobikscj1TVy5oYXMoZSl8fEVXLmhhcyhlKTtyZXR1cm4oaSxvKT0+e2xldCBhPSIqIj09bnx8bj09aSxsPSIqIj09ZXx8ZT09bztyZXR1cm4hYSYmdCYm'@; put 'ImJvb2xlYW4iPT10eXBlb2YgaSYmKGE9aT9TVy5oYXMobik6RVcuaGFzKG4pKSwhbCYmciYmImJvb2xlYW4iPT10eXBlb2YgbyYmKGw9bz9TVy5oYXMoZSk6RVcuaGFzKGUpKSxhJiZsfX1jb25zdCBMQ3Q9bmV3IFJlZ0V4cCgicyo6c2VsZnMqLD8iLCJnIik7ZnVuY3Rpb24gcWFlKG4sZSx0'@; put 'LHIpe3JldHVybiBuZXcgT0N0KG4pLmJ1aWxkKGUsdCxyKX1jbGFzcyBPQ3R7X2RyaXZlcjtjb25zdHJ1Y3RvcihlKXt0aGlzLl9kcml2ZXI9ZX1idWlsZChlLHQscil7Y29uc3QgaT1uZXcgUEN0KHQpO3JldHVybiB0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKGkpLFZwKHRo'@; put 'aXMsS0QoZSksaSl9X3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoZSl7ZS5jdXJyZW50UXVlcnlTZWxlY3Rvcj0iIixlLmNvbGxlY3RlZFN0eWxlcz1uZXcgTWFwLGUuY29sbGVjdGVkU3R5bGVzLnNldCgiIixuZXcgTWFwKSxlLmN1cnJlbnRUaW1lPTB9dmlzaXRUcmlnZ2VyKGUsdCl7'@; put 'bGV0IHI9dC5xdWVyeUNvdW50PTAsaT10LmRlcENvdW50PTA7Y29uc3Qgbz1bXSxhPVtdO3JldHVybiJAIj09ZS5uYW1lLmNoYXJBdCgwKSYmdC5lcnJvcnMucHVzaChmdW5jdGlvbiBWd3QoKXtyZXR1cm4gbmV3IFduKDMwMDYsITEpfSgpKSxlLmRlZmluaXRpb25zLmZvckVhY2gobD0+e2lm'@; put 'KHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUodCksbC50eXBlPT1icy5TdGF0ZSl7Y29uc3QgdT1sLGc9dS5uYW1lO2cudG9TdHJpbmcoKS5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2goRT0+e3UubmFtZT1FLG8ucHVzaCh0aGlzLnZpc2l0U3RhdGUodSx0KSl9KSx1Lm5hbWU9'@; put 'Z31lbHNlIGlmKGwudHlwZT09YnMuVHJhbnNpdGlvbil7Y29uc3QgdT10aGlzLnZpc2l0VHJhbnNpdGlvbihsLHQpO3IrPXUucXVlcnlDb3VudCxpKz11LmRlcENvdW50LGEucHVzaCh1KX1lbHNlIHQuZXJyb3JzLnB1c2goZnVuY3Rpb24gQnd0KCl7cmV0dXJuIG5ldyBXbigzMDA3LCExKX0o'@; put 'KSl9KSx7dHlwZTpicy5UcmlnZ2VyLG5hbWU6ZS5uYW1lLHN0YXRlczpvLHRyYW5zaXRpb25zOmEscXVlcnlDb3VudDpyLGRlcENvdW50Omksb3B0aW9uczpudWxsfX12aXNpdFN0YXRlKGUsdCl7Y29uc3Qgcj10aGlzLnZpc2l0U3R5bGUoZS5zdHlsZXMsdCksaT1lLm9wdGlvbnMmJmUub3B0'@; put 'aW9ucy5wYXJhbXN8fG51bGw7aWYoci5jb250YWluc0R5bmFtaWNTdHlsZXMpe2NvbnN0IG89bmV3IFNldCxhPWl8fHt9O3Iuc3R5bGVzLmZvckVhY2gobD0+e2wgaW5zdGFuY2VvZiBNYXAmJmwuZm9yRWFjaCh1PT57RFRlKHUpLmZvckVhY2goZz0+e2EuaGFzT3duUHJvcGVydHkoZyl8fG8u'@; put 'YWRkKGcpfSl9KX0pLG8uc2l6ZSYmdC5lcnJvcnMucHVzaChmdW5jdGlvbiBqd3QoKXtyZXR1cm4gbmV3IFduKDMwMDgsITEpfSgwLG8udmFsdWVzKCkpKX1yZXR1cm57dHlwZTpicy5TdGF0ZSxuYW1lOmUubmFtZSxzdHlsZTpyLG9wdGlvbnM6aT97cGFyYW1zOml9Om51bGx9fXZpc2l0VHJh'@; put 'bnNpdGlvbihlLHQpe3QucXVlcnlDb3VudD0wLHQuZGVwQ291bnQ9MDtjb25zdCByPVZwKHRoaXMsS0QoZS5hbmltYXRpb24pLHQpLGk9ZnVuY3Rpb24gUkN0KG4sZSl7Y29uc3QgdD1bXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/bi5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2gocj0+ZnVu'@; put 'Y3Rpb24gSUN0KG4sZSx0KXtpZigiOiI9PW5bMF0pe2NvbnN0IHU9ZnVuY3Rpb24gREN0KG4sZSl7c3dpdGNoKG4pe2Nhc2UiOmVudGVyIjpyZXR1cm4idm9pZCA9PiAqIjtjYXNlIjpsZWF2ZSI6cmV0dXJuIiogPT4gdm9pZCI7Y2FzZSI6aW5jcmVtZW50IjpyZXR1cm4odCxyKT0+cGFyc2VG'@; put 'bG9hdChyKT5wYXJzZUZsb2F0KHQpO2Nhc2UiOmRlY3JlbWVudCI6cmV0dXJuKHQscik9PnBhcnNlRmxvYXQocik8cGFyc2VGbG9hdCh0KTtkZWZhdWx0OnJldHVybiBlLnB1c2goZnVuY3Rpb24gWHd0KCl7cmV0dXJuIG5ldyBXbigzMDE2LCExKX0oKSksIiogPT4gKiJ9fShuLHQpO2lmKCJm'@; put 'dW5jdGlvbiI9PXR5cGVvZiB1KXJldHVybiB2b2lkIGUucHVzaCh1KTtuPXV9Y29uc3Qgcj1uLm1hdGNoKC9eKFwqfFstXHddKylccyooPD9bPS1dPilccyooXCp8Wy1cd10rKSQvKTtpZihudWxsPT1yfHxyLmxlbmd0aDw0KXJldHVybiB0LnB1c2goZnVuY3Rpb24gS3d0KCl7cmV0dXJuIG5l'@; put 'dyBXbigzMDE1LCExKX0oKSksZTtjb25zdCBpPXJbMV0sbz1yWzJdLGE9clszXTtlLnB1c2goTlRlKGksYSkpLCI8Ij09b1swXSYmKCIqIiE9aXx8IioiIT1hKSYmZS5wdXNoKE5UZShhLGkpKX0ocix0LGUpKTp0LnB1c2gobiksdH0oZS5leHByLHQuZXJyb3JzKTtyZXR1cm57dHlwZTpicy5U'@; put 'cmFuc2l0aW9uLG1hdGNoZXJzOmksYW5pbWF0aW9uOnIscXVlcnlDb3VudDp0LnF1ZXJ5Q291bnQsZGVwQ291bnQ6dC5kZXBDb3VudCxvcHRpb25zOmF3KGUub3B0aW9ucyl9fXZpc2l0U2VxdWVuY2UoZSx0KXtyZXR1cm57dHlwZTpicy5TZXF1ZW5jZSxzdGVwczplLnN0ZXBzLm1hcChyPT5W'@; put 'cCh0aGlzLHIsdCkpLG9wdGlvbnM6YXcoZS5vcHRpb25zKX19dmlzaXRHcm91cChlLHQpe2NvbnN0IHI9dC5jdXJyZW50VGltZTtsZXQgaT0wO2NvbnN0IG89ZS5zdGVwcy5tYXAoYT0+e3QuY3VycmVudFRpbWU9cjtjb25zdCBsPVZwKHRoaXMsYSx0KTtyZXR1cm4gaT1NYXRoLm1heChpLHQu'@; put 'Y3VycmVudFRpbWUpLGx9KTtyZXR1cm4gdC5jdXJyZW50VGltZT1pLHt0eXBlOmJzLkdyb3VwLHN0ZXBzOm8sb3B0aW9uczphdyhlLm9wdGlvbnMpfX12aXNpdEFuaW1hdGUoZSx0KXtjb25zdCByPWZ1bmN0aW9uIFZDdChuLGUpe2lmKG4uaGFzT3duUHJvcGVydHkoImR1cmF0aW9uIikpcmV0'@; put 'dXJuIG47aWYoIm51bWJlciI9PXR5cGVvZiBuKXJldHVybiBLYWUod1cobixlKS5kdXJhdGlvbiwwLCIiKTtjb25zdCB0PW47aWYodC5zcGxpdCgvXHMrLykuc29tZShvPT4ieyI9PW8uY2hhckF0KDApJiYieyI9PW8uY2hhckF0KDEpKSl7Y29uc3Qgbz1LYWUoMCwwLCIiKTtyZXR1cm4gby5k'@; put 'eW5hbWljPSEwLG8uc3RyVmFsdWU9dCxvfWNvbnN0IGk9d1codCxlKTtyZXR1cm4gS2FlKGkuZHVyYXRpb24saS5kZWxheSxpLmVhc2luZyl9KGUudGltaW5ncyx0LmVycm9ycyk7dC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9cjtsZXQgaSxvPWUuc3R5bGVzP2Uuc3R5bGVzOnZsKHt9KTtpZihv'@; put 'LnR5cGU9PWJzLktleWZyYW1lcylpPXRoaXMudmlzaXRLZXlmcmFtZXMobyx0KTtlbHNle2xldCBhPWUuc3R5bGVzLGw9ITE7aWYoIWEpe2w9ITA7Y29uc3QgZz17fTtyLmVhc2luZyYmKGcuZWFzaW5nPXIuZWFzaW5nKSxhPXZsKGcpfXQuY3VycmVudFRpbWUrPXIuZHVyYXRpb24rci5kZWxh'@; put 'eTtjb25zdCB1PXRoaXMudmlzaXRTdHlsZShhLHQpO3UuaXNFbXB0eVN0ZXA9bCxpPXV9cmV0dXJuIHQuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwse3R5cGU6YnMuQW5pbWF0ZSx0aW1pbmdzOnIsc3R5bGU6aSxvcHRpb25zOm51bGx9fXZpc2l0U3R5bGUoZSx0KXtjb25zdCByPXRoaXMu'@; put 'X21ha2VTdHlsZUFzdChlLHQpO3JldHVybiB0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KHIsdCkscn1fbWFrZVN0eWxlQXN0KGUsdCl7Y29uc3Qgcj1bXSxpPUFycmF5LmlzQXJyYXkoZS5zdHlsZXMpP2Uuc3R5bGVzOltlLnN0eWxlc107Zm9yKGxldCBsIG9mIGkpInN0cmluZyI9PXR5cGVvZiBs'@; put 'P2w9PT10Nz9yLnB1c2gobCk6dC5lcnJvcnMucHVzaChVd3QoKSk6ci5wdXNoKG5ldyBNYXAoT2JqZWN0LmVudHJpZXMobCkpKTtsZXQgbz0hMSxhPW51bGw7cmV0dXJuIHIuZm9yRWFjaChsPT57aWYobCBpbnN0YW5jZW9mIE1hcCYmKGwuaGFzKCJlYXNpbmciKSYmKGE9bC5nZXQoImVhc2lu'@; put 'ZyIpLGwuZGVsZXRlKCJlYXNpbmciKSksIW8pKWZvcihsZXQgdSBvZiBsLnZhbHVlcygpKWlmKHUudG9TdHJpbmcoKS5pbmRleE9mKCJ7eyIpPj0wKXtvPSEwO2JyZWFrfX0pLHt0eXBlOmJzLlN0eWxlLHN0eWxlczpyLGVhc2luZzphLG9mZnNldDplLm9mZnNldCxjb250YWluc0R5bmFtaWNT'@; put 'dHlsZXM6byxvcHRpb25zOm51bGx9fV92YWxpZGF0ZVN0eWxlQXN0KGUsdCl7Y29uc3Qgcj10LmN1cnJlbnRBbmltYXRlVGltaW5ncztsZXQgaT10LmN1cnJlbnRUaW1lLG89dC5jdXJyZW50VGltZTtyJiZvPjAmJihvLT1yLmR1cmF0aW9uK3IuZGVsYXkpLGUuc3R5bGVzLmZvckVhY2goYT0+'@; put 'eyJzdHJpbmciIT10eXBlb2YgYSYmYS5mb3JFYWNoKChsLHUpPT57Y29uc3QgZz10LmNvbGxlY3RlZFN0eWxlcy5nZXQodC5jdXJyZW50UXVlcnlTZWxlY3RvciksRT1nLmdldCh1KTtsZXQgTz0hMDtFJiYobyE9aSYmbz49RS5zdGFydFRpbWUmJmk8PUUuZW5kVGltZSYmKHQuZXJyb3JzLnB1'@; put 'c2goZnVuY3Rpb24gend0KCl7cmV0dXJuIG5ldyBXbigzMDEwLCExKX0oKSksTz0hMSksbz1FLnN0YXJ0VGltZSksTyYmZy5zZXQodSx7c3RhcnRUaW1lOm8sZW5kVGltZTppfSksdC5vcHRpb25zJiZmdW5jdGlvbiBiQ3QobixlLHQpe2NvbnN0IHI9ZS5wYXJhbXN8fHt9LGk9RFRlKG4pO2ku'@; put 'bGVuZ3RoJiZpLmZvckVhY2gobz0+e3IuaGFzT3duUHJvcGVydHkobyl8fHQucHVzaChmdW5jdGlvbiBOd3QoKXtyZXR1cm4gbmV3IFduKDMwMDEsITEpfSgpKX0pfShsLHQub3B0aW9ucyx0LmVycm9ycyl9KX0pfXZpc2l0S2V5ZnJhbWVzKGUsdCl7Y29uc3Qgcj17dHlwZTpicy5LZXlmcmFt'@; put 'ZXMsc3R5bGVzOltdLG9wdGlvbnM6bnVsbH07aWYoIXQuY3VycmVudEFuaW1hdGVUaW1pbmdzKXJldHVybiB0LmVycm9ycy5wdXNoKGZ1bmN0aW9uIFd3dCgpe3JldHVybiBuZXcgV24oMzAxMSwhMSl9KCkpLHI7bGV0IG89MDtjb25zdCBhPVtdO2xldCBsPSExLHU9ITEsZz0wO2NvbnN0IEU9'@; put 'ZS5zdGVwcy5tYXAoV2U9Pntjb25zdCBhdD10aGlzLl9tYWtlU3R5bGVBc3QoV2UsdCk7bGV0IEN0PW51bGwhPWF0Lm9mZnNldD9hdC5vZmZzZXQ6ZnVuY3Rpb24gSEN0KG4pe2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gbnVsbDtsZXQgZT1udWxsO2lmKEFycmF5LmlzQXJyYXkobikp'@; put 'bi5mb3JFYWNoKHQ9PntpZih0IGluc3RhbmNlb2YgTWFwJiZ0Lmhhcygib2Zmc2V0Iikpe2NvbnN0IHI9dDtlPXBhcnNlRmxvYXQoci5nZXQoIm9mZnNldCIpKSxyLmRlbGV0ZSgib2Zmc2V0Iil9fSk7ZWxzZSBpZihuIGluc3RhbmNlb2YgTWFwJiZuLmhhcygib2Zmc2V0Iikpe2NvbnN0IHQ9'@; put 'bjtlPXBhcnNlRmxvYXQodC5nZXQoIm9mZnNldCIpKSx0LmRlbGV0ZSgib2Zmc2V0Iil9cmV0dXJuIGV9KGF0LnN0eWxlcyksQXQ9MDtyZXR1cm4gbnVsbCE9Q3QmJihvKyssQXQ9YXQub2Zmc2V0PUN0KSx1PXV8fEF0PDB8fEF0PjEsbD1sfHxBdDxnLGc9QXQsYS5wdXNoKEF0KSxhdH0pO3Um'@; put 'JnQuZXJyb3JzLnB1c2goZnVuY3Rpb24gWXd0KCl7cmV0dXJuIG5ldyBXbigzMDEyLCExKX0oKSksbCYmdC5lcnJvcnMucHVzaChmdW5jdGlvbiBad3QoKXtyZXR1cm4gbmV3IFduKDMyMDAsITEpfSgpKTtjb25zdCBPPWUuc3RlcHMubGVuZ3RoO2xldCBaPTA7bz4wJiZvPE8/dC5lcnJvcnMu'@; put 'cHVzaChmdW5jdGlvbiBHd3QoKXtyZXR1cm4gbmV3IFduKDMyMDIsITEpfSgpKTowPT1vJiYoWj0xLyhPLTEpKTtjb25zdCBlZT1PLTEsdmU9dC5jdXJyZW50VGltZSxNZT10LmN1cnJlbnRBbmltYXRlVGltaW5ncyxIZT1NZS5kdXJhdGlvbjtyZXR1cm4gRS5mb3JFYWNoKChXZSxhdCk9Pntj'@; put 'b25zdCBDdD1aPjA/YXQ9PWVlPzE6WiphdDphW2F0XSxBdD1DdCpIZTt0LmN1cnJlbnRUaW1lPXZlK01lLmRlbGF5K0F0LE1lLmR1cmF0aW9uPUF0LHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QoV2UsdCksV2Uub2Zmc2V0PUN0LHIuc3R5bGVzLnB1c2goV2UpfSkscn12aXNpdFJlZmVyZW5jZShl'@; put 'LHQpe3JldHVybnt0eXBlOmJzLlJlZmVyZW5jZSxhbmltYXRpb246VnAodGhpcyxLRChlLmFuaW1hdGlvbiksdCksb3B0aW9uczphdyhlLm9wdGlvbnMpfX12aXNpdEFuaW1hdGVDaGlsZChlLHQpe3JldHVybiB0LmRlcENvdW50Kysse3R5cGU6YnMuQW5pbWF0ZUNoaWxkLG9wdGlvbnM6YXco'@; put 'ZS5vcHRpb25zKX19dmlzaXRBbmltYXRlUmVmKGUsdCl7cmV0dXJue3R5cGU6YnMuQW5pbWF0ZVJlZixhbmltYXRpb246dGhpcy52aXNpdFJlZmVyZW5jZShlLmFuaW1hdGlvbix0KSxvcHRpb25zOmF3KGUub3B0aW9ucyl9fXZpc2l0UXVlcnkoZSx0KXtjb25zdCByPXQuY3VycmVudFF1ZXJ5'@; put 'U2VsZWN0b3IsaT1lLm9wdGlvbnN8fHt9O3QucXVlcnlDb3VudCsrLHQuY3VycmVudFF1ZXJ5PWU7Y29uc3RbbyxhXT1mdW5jdGlvbiBOQ3Qobil7Y29uc3QgZT0hIW4uc3BsaXQoL1xzKixccyovKS5maW5kKHQ9PiI6c2VsZiI9PXQpO3JldHVybiBlJiYobj1uLnJlcGxhY2UoTEN0LCIiKSks'@; put 'bj1uLnJlcGxhY2UoL0BcKi9nLGJXKS5yZXBsYWNlKC9AXHcrL2csdD0+YlcrIi0iK3Quc2xpY2UoMSkpLnJlcGxhY2UoLzphbmltYXRpbmcvZyxCYWUpLFtuLGVdfShlLnNlbGVjdG9yKTt0LmN1cnJlbnRRdWVyeVNlbGVjdG9yPXIubGVuZ3RoP3IrIiAiK286byxIcCh0LmNvbGxlY3RlZFN0'@; put 'eWxlcyx0LmN1cnJlbnRRdWVyeVNlbGVjdG9yLG5ldyBNYXApO2NvbnN0IGw9VnAodGhpcyxLRChlLmFuaW1hdGlvbiksdCk7cmV0dXJuIHQuY3VycmVudFF1ZXJ5PW51bGwsdC5jdXJyZW50UXVlcnlTZWxlY3Rvcj1yLHt0eXBlOmJzLlF1ZXJ5LHNlbGVjdG9yOm8sbGltaXQ6aS5saW1pdHx8'@; put 'MCxvcHRpb25hbDohIWkub3B0aW9uYWwsaW5jbHVkZVNlbGY6YSxhbmltYXRpb246bCxvcmlnaW5hbFNlbGVjdG9yOmUuc2VsZWN0b3Isb3B0aW9uczphdyhlLm9wdGlvbnMpfX12aXNpdFN0YWdnZXIoZSx0KXt0LmN1cnJlbnRRdWVyeXx8dC5lcnJvcnMucHVzaChmdW5jdGlvbiAkd3QoKXty'@; put 'ZXR1cm4gbmV3IFduKDMwMTMsITEpfSgpKTtjb25zdCByPSJmdWxsIj09PWUudGltaW5ncz97ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiZnVsbCJ9OndXKGUudGltaW5ncyx0LmVycm9ycywhMCk7cmV0dXJue3R5cGU6YnMuU3RhZ2dlcixhbmltYXRpb246VnAodGhpcyxLRChlLmFuaW1h'@; put 'dGlvbiksdCksdGltaW5nczpyLG9wdGlvbnM6bnVsbH19fWNsYXNzIFBDdHtlcnJvcnM7cXVlcnlDb3VudD0wO2RlcENvdW50PTA7Y3VycmVudFRyYW5zaXRpb249bnVsbDtjdXJyZW50UXVlcnk9bnVsbDtjdXJyZW50UXVlcnlTZWxlY3Rvcj1udWxsO2N1cnJlbnRBbmltYXRlVGltaW5ncz1u'@; put 'dWxsO2N1cnJlbnRUaW1lPTA7Y29sbGVjdGVkU3R5bGVzPW5ldyBNYXA7b3B0aW9ucz1udWxsO3Vuc3VwcG9ydGVkQ1NTUHJvcGVydGllc0ZvdW5kPW5ldyBTZXQ7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcnM9ZX19ZnVuY3Rpb24gYXcobil7cmV0dXJuIG4/KG49ey4uLm59KS5wYXJhbXMm'@; put 'JihuLnBhcmFtcz1mdW5jdGlvbiBGQ3Qobil7cmV0dXJuIG4/ey4uLm59Om51bGx9KG4ucGFyYW1zKSk6bj17fSxufWZ1bmN0aW9uIEthZShuLGUsdCl7cmV0dXJue2R1cmF0aW9uOm4sZGVsYXk6ZSxlYXNpbmc6dH19ZnVuY3Rpb24gWGFlKG4sZSx0LHIsaSxvLGE9bnVsbCxsPSExKXtyZXR1'@; put 'cm57dHlwZToxLGVsZW1lbnQ6bixrZXlmcmFtZXM6ZSxwcmVTdHlsZVByb3BzOnQscG9zdFN0eWxlUHJvcHM6cixkdXJhdGlvbjppLGRlbGF5Om8sdG90YWxUaW1lOmkrbyxlYXNpbmc6YSxzdWJUaW1lbGluZTpsfX1jbGFzcyBNV3tfbWFwPW5ldyBNYXA7Z2V0KGUpe3JldHVybiB0aGlzLl9t'@; put 'YXAuZ2V0KGUpfHxbXX1hcHBlbmQoZSx0KXtsZXQgcj10aGlzLl9tYXAuZ2V0KGUpO3J8fHRoaXMuX21hcC5zZXQoZSxyPVtdKSxyLnB1c2goLi4udCl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9fWNvbnN0IFVDdD1uZXcgUmVnRXhw'@; put 'KCI6ZW50ZXIiLCJnIiksV0N0PW5ldyBSZWdFeHAoIjpsZWF2ZSIsImciKTtmdW5jdGlvbiBRYWUobixlLHQscixpLG89bmV3IE1hcCxhPW5ldyBNYXAsbCx1LGc9W10pe3JldHVybihuZXcgWUN0KS5idWlsZEtleWZyYW1lcyhuLGUsdCxyLGksbyxhLGwsdSxnKX1jbGFzcyBZQ3R7YnVpbGRL'@; put 'ZXlmcmFtZXMoZSx0LHIsaSxvLGEsbCx1LGcsRT1bXSl7Zz1nfHxuZXcgTVc7Y29uc3QgTz1uZXcgSmFlKGUsdCxnLGksbyxFLFtdKTtPLm9wdGlvbnM9dTtjb25zdCBaPXUuZGVsYXk/aDcodS5kZWxheSk6MDtPLmN1cnJlbnRUaW1lbGluZS5kZWxheU5leHRTdGVwKFopLE8uY3VycmVudFRp'@; put 'bWVsaW5lLnNldFN0eWxlcyhbYV0sbnVsbCxPLmVycm9ycyx1KSxWcCh0aGlzLHIsTyk7Y29uc3QgZWU9Ty50aW1lbGluZXMuZmlsdGVyKHZlPT52ZS5jb250YWluc0FuaW1hdGlvbigpKTtpZihlZS5sZW5ndGgmJmwuc2l6ZSl7bGV0IHZlO2ZvcihsZXQgTWU9ZWUubGVuZ3RoLTE7TWU+PTA7'@; put 'TWUtLSl7Y29uc3QgSGU9ZWVbTWVdO2lmKEhlLmVsZW1lbnQ9PT10KXt2ZT1IZTticmVha319dmUmJiF2ZS5hbGxvd09ubHlUaW1lbGluZVN0eWxlcygpJiZ2ZS5zZXRTdHlsZXMoW2xdLG51bGwsTy5lcnJvcnMsdSl9cmV0dXJuIGVlLmxlbmd0aD9lZS5tYXAodmU9PnZlLmJ1aWxkS2V5ZnJh'@; put 'bWVzKCkpOltYYWUodCxbXSxbXSxbXSwwLFosIiIsITEpXX12aXNpdFRyaWdnZXIoZSx0KXt9dmlzaXRTdGF0ZShlLHQpe312aXNpdFRyYW5zaXRpb24oZSx0KXt9dmlzaXRBbmltYXRlQ2hpbGQoZSx0KXtjb25zdCByPXQuc3ViSW5zdHJ1Y3Rpb25zLmdldCh0LmVsZW1lbnQpO2lmKHIpe2Nv'@; put 'bnN0IGk9dC5jcmVhdGVTdWJDb250ZXh0KGUub3B0aW9ucyksbz10LmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxhPXRoaXMuX3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKHIsaSxpLm9wdGlvbnMpO28hPWEmJnQudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGEpfXQucHJldmlvdXNOb2RlPWV9'@; put 'dmlzaXRBbmltYXRlUmVmKGUsdCl7Y29uc3Qgcj10LmNyZWF0ZVN1YkNvbnRleHQoZS5vcHRpb25zKTtyLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLHRoaXMuX2FwcGx5QW5pbWF0aW9uUmVmRGVsYXlzKFtlLm9wdGlvbnMsZS5hbmltYXRpb24ub3B0aW9uc10sdCxyKSx0aGlzLnZpc2l0'@; put 'UmVmZXJlbmNlKGUuYW5pbWF0aW9uLHIpLHQudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKHIuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSx0LnByZXZpb3VzTm9kZT1lfV9hcHBseUFuaW1hdGlvblJlZkRlbGF5cyhlLHQscil7Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3Qgbz1pPy5kZWxh'@; put 'eTtpZihvKXtjb25zdCBhPSJudW1iZXIiPT10eXBlb2Ygbz9vOmg3KFhEKG8saT8ucGFyYW1zPz97fSx0LmVycm9ycykpO3IuZGVsYXlOZXh0U3RlcChhKX19fV92aXNpdFN1Ykluc3RydWN0aW9ucyhlLHQscil7bGV0IG89dC5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWU7Y29uc3QgYT1u'@; put 'dWxsIT1yLmR1cmF0aW9uP2g3KHIuZHVyYXRpb24pOm51bGwsbD1udWxsIT1yLmRlbGF5P2g3KHIuZGVsYXkpOm51bGw7cmV0dXJuIDAhPT1hJiZlLmZvckVhY2godT0+e2NvbnN0IGc9dC5hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUodSxhLGwpO289TWF0aC5tYXgobyxnLmR1cmF0aW9u'@; put 'K2cuZGVsYXkpfSksb312aXNpdFJlZmVyZW5jZShlLHQpe3QudXBkYXRlT3B0aW9ucyhlLm9wdGlvbnMsITApLFZwKHRoaXMsZS5hbmltYXRpb24sdCksdC5wcmV2aW91c05vZGU9ZX12aXNpdFNlcXVlbmNlKGUsdCl7Y29uc3Qgcj10LnN1YkNvbnRleHRDb3VudDtsZXQgaT10O2NvbnN0IG89'@; put 'ZS5vcHRpb25zO2lmKG8mJihvLnBhcmFtc3x8by5kZWxheSkmJihpPXQuY3JlYXRlU3ViQ29udGV4dChvKSxpLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLG51bGwhPW8uZGVsYXkpKXtpLnByZXZpb3VzTm9kZS50eXBlPT1icy5TdHlsZSYmKGkuY3VycmVudFRpbWVsaW5lLnNuYXBzaG90'@; put 'Q3VycmVudFN0eWxlcygpLGkucHJldmlvdXNOb2RlPVRXKTtjb25zdCBhPWg3KG8uZGVsYXkpO2kuZGVsYXlOZXh0U3RlcChhKX1lLnN0ZXBzLmxlbmd0aCYmKGUuc3RlcHMuZm9yRWFjaChhPT5WcCh0aGlzLGEsaSkpLGkuY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgp'@; put 'LGkuc3ViQ29udGV4dENvdW50PnImJmkudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCkpLHQucHJldmlvdXNOb2RlPWV9dmlzaXRHcm91cChlLHQpe2NvbnN0IHI9W107bGV0IGk9dC5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWU7Y29uc3Qgbz1lLm9wdGlvbnMmJmUub3B0aW9ucy5kZWxh'@; put 'eT9oNyhlLm9wdGlvbnMuZGVsYXkpOjA7ZS5zdGVwcy5mb3JFYWNoKGE9Pntjb25zdCBsPXQuY3JlYXRlU3ViQ29udGV4dChlLm9wdGlvbnMpO28mJmwuZGVsYXlOZXh0U3RlcChvKSxWcCh0aGlzLGEsbCksaT1NYXRoLm1heChpLGwuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxyLnB1'@; put 'c2gobC5jdXJyZW50VGltZWxpbmUpfSksci5mb3JFYWNoKGE9PnQuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMoYSkpLHQudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGkpLHQucHJldmlvdXNOb2RlPWV9X3Zpc2l0VGltaW5nKGUsdCl7aWYoZS5keW5hbWlj'@; put 'KXtjb25zdCByPWUuc3RyVmFsdWU7cmV0dXJuIHdXKHQucGFyYW1zP1hEKHIsdC5wYXJhbXMsdC5lcnJvcnMpOnIsdC5lcnJvcnMpfXJldHVybntkdXJhdGlvbjplLmR1cmF0aW9uLGRlbGF5OmUuZGVsYXksZWFzaW5nOmUuZWFzaW5nfX12aXNpdEFuaW1hdGUoZSx0KXtjb25zdCByPXQuY3Vy'@; put 'cmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuX3Zpc2l0VGltaW5nKGUudGltaW5ncyx0KSxpPXQuY3VycmVudFRpbWVsaW5lO3IuZGVsYXkmJih0LmluY3JlbWVudFRpbWUoci5kZWxheSksaS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk7Y29uc3Qgbz1lLnN0eWxlO28udHlwZT09YnMuS2V5ZnJh'@; put 'bWVzP3RoaXMudmlzaXRLZXlmcmFtZXMobyx0KToodC5pbmNyZW1lbnRUaW1lKHIuZHVyYXRpb24pLHRoaXMudmlzaXRTdHlsZShvLHQpLGkuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCkpLHQuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdC5wcmV2aW91c05vZGU9ZX12aXNpdFN0eWxlKGUs'@; put 'dCl7Y29uc3Qgcj10LmN1cnJlbnRUaW1lbGluZSxpPXQuY3VycmVudEFuaW1hdGVUaW1pbmdzOyFpJiZyLmhhc0N1cnJlbnRTdHlsZVByb3BlcnRpZXMoKSYmci5mb3J3YXJkRnJhbWUoKTtjb25zdCBvPWkmJmkuZWFzaW5nfHxlLmVhc2luZztlLmlzRW1wdHlTdGVwP3IuYXBwbHlFbXB0eVN0'@; put 'ZXAobyk6ci5zZXRTdHlsZXMoZS5zdHlsZXMsbyx0LmVycm9ycyx0Lm9wdGlvbnMpLHQucHJldmlvdXNOb2RlPWV9dmlzaXRLZXlmcmFtZXMoZSx0KXtjb25zdCByPXQuY3VycmVudEFuaW1hdGVUaW1pbmdzLGk9dC5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24sbz1yLmR1cmF0aW9uLGw9dC5j'@; put 'cmVhdGVTdWJDb250ZXh0KCkuY3VycmVudFRpbWVsaW5lO2wuZWFzaW5nPXIuZWFzaW5nLGUuc3R5bGVzLmZvckVhY2godT0+e2wuZm9yd2FyZFRpbWUoKHUub2Zmc2V0fHwwKSpvKSxsLnNldFN0eWxlcyh1LnN0eWxlcyx1LmVhc2luZyx0LmVycm9ycyx0Lm9wdGlvbnMpLGwuYXBwbHlTdHls'@; put 'ZXNUb0tleWZyYW1lKCl9KSx0LmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKGwpLHQudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGkrbyksdC5wcmV2aW91c05vZGU9ZX12aXNpdFF1ZXJ5KGUsdCl7Y29uc3Qgcj10LmN1cnJlbnRUaW1lbGluZS5jdXJyZW50'@; put 'VGltZSxpPWUub3B0aW9uc3x8e30sbz1pLmRlbGF5P2g3KGkuZGVsYXkpOjA7byYmKHQucHJldmlvdXNOb2RlLnR5cGU9PT1icy5TdHlsZXx8MD09ciYmdC5jdXJyZW50VGltZWxpbmUuaGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpKSYmKHQuY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3Vy'@; put 'cmVudFN0eWxlcygpLHQucHJldmlvdXNOb2RlPVRXKTtsZXQgYT1yO2NvbnN0IGw9dC5pbnZva2VRdWVyeShlLnNlbGVjdG9yLGUub3JpZ2luYWxTZWxlY3RvcixlLmxpbWl0LGUuaW5jbHVkZVNlbGYsISFpLm9wdGlvbmFsLHQuZXJyb3JzKTt0LmN1cnJlbnRRdWVyeVRvdGFsPWwubGVuZ3Ro'@; put 'O2xldCB1PW51bGw7bC5mb3JFYWNoKChnLEUpPT57dC5jdXJyZW50UXVlcnlJbmRleD1FO2NvbnN0IE89dC5jcmVhdGVTdWJDb250ZXh0KGUub3B0aW9ucyxnKTtvJiZPLmRlbGF5TmV4dFN0ZXAobyksZz09PXQuZWxlbWVudCYmKHU9Ty5jdXJyZW50VGltZWxpbmUpLFZwKHRoaXMsZS5hbmlt'@; put 'YXRpb24sTyksTy5jdXJyZW50VGltZWxpbmUuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksYT1NYXRoLm1heChhLE8uY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKX0pLHQuY3VycmVudFF1ZXJ5SW5kZXg9MCx0LmN1cnJlbnRRdWVyeVRvdGFsPTAsdC50cmFuc2Zvcm1JbnRvTmV3VGltZWxp'@; put 'bmUoYSksdSYmKHQuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXModSksdC5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpLHQucHJldmlvdXNOb2RlPWV9dmlzaXRTdGFnZ2VyKGUsdCl7Y29uc3Qgcj10LnBhcmVudENvbnRleHQsaT10'@; put 'LmN1cnJlbnRUaW1lbGluZSxvPWUudGltaW5ncyxhPU1hdGguYWJzKG8uZHVyYXRpb24pLGw9YSoodC5jdXJyZW50UXVlcnlUb3RhbC0xKTtsZXQgdT1hKnQuY3VycmVudFF1ZXJ5SW5kZXg7c3dpdGNoKG8uZHVyYXRpb248MD8icmV2ZXJzZSI6by5lYXNpbmcpe2Nhc2UicmV2ZXJzZSI6dT1s'@; put 'LXU7YnJlYWs7Y2FzZSJmdWxsIjp1PXIuY3VycmVudFN0YWdnZXJUaW1lfWNvbnN0IEU9dC5jdXJyZW50VGltZWxpbmU7dSYmRS5kZWxheU5leHRTdGVwKHUpO2NvbnN0IE89RS5jdXJyZW50VGltZTtWcCh0aGlzLGUuYW5pbWF0aW9uLHQpLHQucHJldmlvdXNOb2RlPWUsci5jdXJyZW50U3Rh'@; put 'Z2dlclRpbWU9aS5jdXJyZW50VGltZS1PKyhpLnN0YXJ0VGltZS1yLmN1cnJlbnRUaW1lbGluZS5zdGFydFRpbWUpfX1jb25zdCBUVz17fTtjbGFzcyBKYWV7X2RyaXZlcjtlbGVtZW50O3N1Ykluc3RydWN0aW9ucztfZW50ZXJDbGFzc05hbWU7X2xlYXZlQ2xhc3NOYW1lO2Vycm9yczt0aW1l'@; put 'bGluZXM7cGFyZW50Q29udGV4dD1udWxsO2N1cnJlbnRUaW1lbGluZTtjdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbDtwcmV2aW91c05vZGU9VFc7c3ViQ29udGV4dENvdW50PTA7b3B0aW9ucz17fTtjdXJyZW50UXVlcnlJbmRleD0wO2N1cnJlbnRRdWVyeVRvdGFsPTA7Y3VycmVudFN0YWdn'@; put 'ZXJUaW1lPTA7Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEsbCx1KXt0aGlzLl9kcml2ZXI9ZSx0aGlzLmVsZW1lbnQ9dCx0aGlzLnN1Ykluc3RydWN0aW9ucz1yLHRoaXMuX2VudGVyQ2xhc3NOYW1lPWksdGhpcy5fbGVhdmVDbGFzc05hbWU9byx0aGlzLmVycm9ycz1hLHRoaXMudGltZWxpbmVz'@; put 'PWwsdGhpcy5jdXJyZW50VGltZWxpbmU9dXx8bmV3IHhXKHRoaXMuX2RyaXZlcix0LDApLGwucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSl9Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfXVwZGF0ZU9wdGlvbnMoZSx0KXtpZighZSlyZXR1cm47Y29uc3Qgcj1lO2xl'@; put 'dCBpPXRoaXMub3B0aW9ucztudWxsIT1yLmR1cmF0aW9uJiYoaS5kdXJhdGlvbj1oNyhyLmR1cmF0aW9uKSksbnVsbCE9ci5kZWxheSYmKGkuZGVsYXk9aDcoci5kZWxheSkpO2NvbnN0IG89ci5wYXJhbXM7aWYobyl7bGV0IGE9aS5wYXJhbXM7YXx8KGE9dGhpcy5vcHRpb25zLnBhcmFtcz17'@; put 'fSksT2JqZWN0LmtleXMobykuZm9yRWFjaChsPT57KCF0fHwhYS5oYXNPd25Qcm9wZXJ0eShsKSkmJihhW2xdPVhEKG9bbF0sYSx0aGlzLmVycm9ycykpfSl9fV9jb3B5T3B0aW9ucygpe2NvbnN0IGU9e307aWYodGhpcy5vcHRpb25zKXtjb25zdCB0PXRoaXMub3B0aW9ucy5wYXJhbXM7aWYo'@; put 'dCl7Y29uc3Qgcj1lLnBhcmFtcz17fTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGk9PntyW2ldPXRbaV19KX19cmV0dXJuIGV9Y3JlYXRlU3ViQ29udGV4dChlPW51bGwsdCxyKXtjb25zdCBpPXR8fHRoaXMuZWxlbWVudCxvPW5ldyBKYWUodGhpcy5fZHJpdmVyLGksdGhpcy5zdWJJbnN0cnVj'@; put 'dGlvbnMsdGhpcy5fZW50ZXJDbGFzc05hbWUsdGhpcy5fbGVhdmVDbGFzc05hbWUsdGhpcy5lcnJvcnMsdGhpcy50aW1lbGluZXMsdGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayhpLHJ8fDApKTtyZXR1cm4gby5wcmV2aW91c05vZGU9dGhpcy5wcmV2aW91c05vZGUsby5jdXJyZW50QW5pbWF0'@; put 'ZVRpbWluZ3M9dGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3Msby5vcHRpb25zPXRoaXMuX2NvcHlPcHRpb25zKCksby51cGRhdGVPcHRpb25zKGUpLG8uY3VycmVudFF1ZXJ5SW5kZXg9dGhpcy5jdXJyZW50UXVlcnlJbmRleCxvLmN1cnJlbnRRdWVyeVRvdGFsPXRoaXMuY3VycmVudFF1ZXJ5'@; put 'VG90YWwsby5wYXJlbnRDb250ZXh0PXRoaXMsdGhpcy5zdWJDb250ZXh0Q291bnQrKyxvfXRyYW5zZm9ybUludG9OZXdUaW1lbGluZShlKXtyZXR1cm4gdGhpcy5wcmV2aW91c05vZGU9VFcsdGhpcy5jdXJyZW50VGltZWxpbmU9dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayh0aGlzLmVsZW1l'@; put 'bnQsZSksdGhpcy50aW1lbGluZXMucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSksdGhpcy5jdXJyZW50VGltZWxpbmV9YXBwZW5kSW5zdHJ1Y3Rpb25Ub1RpbWVsaW5lKGUsdCxyKXtjb25zdCBpPXtkdXJhdGlvbjp0Pz9lLmR1cmF0aW9uLGRlbGF5OnRoaXMuY3VycmVudFRpbWVsaW5lLmN1'@; put 'cnJlbnRUaW1lKyhyPz8wKStlLmRlbGF5LGVhc2luZzoiIn0sbz1uZXcgWkN0KHRoaXMuX2RyaXZlcixlLmVsZW1lbnQsZS5rZXlmcmFtZXMsZS5wcmVTdHlsZVByb3BzLGUucG9zdFN0eWxlUHJvcHMsaSxlLnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lKTtyZXR1cm4gdGhpcy50aW1lbGluZXMu'@; put 'cHVzaChvKSxpfWluY3JlbWVudFRpbWUoZSl7dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24rZSl9ZGVsYXlOZXh0U3RlcChlKXtlPjAmJnRoaXMuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4dFN0ZXAoZSl9aW52b2tlUXVlcnko'@; put 'ZSx0LHIsaSxvLGEpe2xldCBsPVtdO2lmKGkmJmwucHVzaCh0aGlzLmVsZW1lbnQpLGUubGVuZ3RoPjApe2U9KGU9ZS5yZXBsYWNlKFVDdCwiLiIrdGhpcy5fZW50ZXJDbGFzc05hbWUpKS5yZXBsYWNlKFdDdCwiLiIrdGhpcy5fbGVhdmVDbGFzc05hbWUpO2xldCBnPXRoaXMuX2RyaXZlci5x'@; put 'dWVyeSh0aGlzLmVsZW1lbnQsZSwxIT1yKTswIT09ciYmKGc9cjwwP2cuc2xpY2UoZy5sZW5ndGgrcixnLmxlbmd0aCk6Zy5zbGljZSgwLHIpKSxsLnB1c2goLi4uZyl9cmV0dXJuIW8mJjA9PWwubGVuZ3RoJiZhLnB1c2goZnVuY3Rpb24gcXd0KCl7cmV0dXJuIG5ldyBXbigzMDE0LCExKX0o'@; put 'KSksbH19Y2xhc3MgeFd7X2RyaXZlcjtlbGVtZW50O3N0YXJ0VGltZTtfZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwO2R1cmF0aW9uPTA7ZWFzaW5nPW51bGw7X3ByZXZpb3VzS2V5ZnJhbWU9bmV3IE1hcDtfY3VycmVudEtleWZyYW1lPW5ldyBNYXA7X2tleWZyYW1lcz1uZXcgTWFwO19z'@; put 'dHlsZVN1bW1hcnk9bmV3IE1hcDtfbG9jYWxUaW1lbGluZVN0eWxlcz1uZXcgTWFwO19nbG9iYWxUaW1lbGluZVN0eWxlcztfcGVuZGluZ1N0eWxlcz1uZXcgTWFwO19iYWNrRmlsbD1uZXcgTWFwO19jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9bnVsbDtjb25zdHJ1Y3RvcihlLHQscixpKXt0'@; put 'aGlzLl9kcml2ZXI9ZSx0aGlzLmVsZW1lbnQ9dCx0aGlzLnN0YXJ0VGltZT1yLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1pLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cHx8KHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1uZXcgTWFwKSx0aGlz'@; put 'Ll9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuZ2V0KHQpLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzfHwodGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcyx0aGlzLl9lbGVtZW50VGltZWxp'@; put 'bmVTdHlsZXNMb29rdXAuc2V0KHQsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykpLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWNvbnRhaW5zQW5pbWF0aW9uKCl7c3dpdGNoKHRoaXMuX2tleWZyYW1lcy5zaXplKXtjYXNlIDA6cmV0dXJuITE7Y2FzZSAxOnJldHVybiB0aGlzLmhhc0N1cnJlbnRT'@; put 'dHlsZVByb3BlcnRpZXMoKTtkZWZhdWx0OnJldHVybiEwfX1oYXNDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRLZXlmcmFtZS5zaXplPjB9Z2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuc3RhcnRUaW1lK3RoaXMuZHVyYXRpb259ZGVsYXlOZXh0U3Rl'@; put 'cChlKXtjb25zdCB0PTE9PT10aGlzLl9rZXlmcmFtZXMuc2l6ZSYmdGhpcy5fcGVuZGluZ1N0eWxlcy5zaXplO3RoaXMuZHVyYXRpb258fHQ/KHRoaXMuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZStlKSx0JiZ0aGlzLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKTp0aGlzLnN0YXJ0VGlt'@; put 'ZSs9ZX1mb3JrKGUsdCl7cmV0dXJuIHRoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksbmV3IHhXKHRoaXMuX2RyaXZlcixlLHR8fHRoaXMuY3VycmVudFRpbWUsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwKX1fbG9hZEtleWZyYW1lKCl7dGhpcy5fY3VycmVudEtleWZyYW1l'@; put 'JiYodGhpcy5fcHJldmlvdXNLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWUpLHRoaXMuX2N1cnJlbnRLZXlmcmFtZT10aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pLHRoaXMuX2N1cnJlbnRLZXlmcmFtZXx8KHRoaXMuX2N1cnJlbnRLZXlmcmFtZT1uZXcgTWFwLHRoaXMu'@; put 'X2tleWZyYW1lcy5zZXQodGhpcy5kdXJhdGlvbix0aGlzLl9jdXJyZW50S2V5ZnJhbWUpKX1mb3J3YXJkRnJhbWUoKXt0aGlzLmR1cmF0aW9uKz0xLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWZvcndhcmRUaW1lKGUpe3RoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksdGhpcy5kdXJhdGlvbj1l'@; put 'LHRoaXMuX2xvYWRLZXlmcmFtZSgpfV91cGRhdGVTdHlsZShlLHQpe3RoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuc2V0KGUsdCksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMuc2V0KGUsdCksdGhpcy5fc3R5bGVTdW1tYXJ5LnNldChlLHt0aW1lOnRoaXMuY3VycmVudFRpbWUsdmFsdWU6'@; put 'dH0pfWFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZSE9PXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1hcHBseUVtcHR5U3RlcChlKXtlJiZ0aGlzLl9wcmV2aW91c0tleWZyYW1lLnNldCgiZWFzaW5nIixlKTtmb3IobGV0W3Qscl1v'@; put 'ZiB0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcyl0aGlzLl9iYWNrRmlsbC5zZXQodCxyfHx0NyksdGhpcy5fY3VycmVudEtleWZyYW1lLnNldCh0LHQ3KTt0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1lfXNldFN0eWxlcyhlLHQscixpKXt0JiZ0'@; put 'aGlzLl9wcmV2aW91c0tleWZyYW1lLnNldCgiZWFzaW5nIix0KTtjb25zdCBvPWkmJmkucGFyYW1zfHx7fSxhPWZ1bmN0aW9uIEdDdChuLGUpe2NvbnN0IHQ9bmV3IE1hcDtsZXQgcjtyZXR1cm4gbi5mb3JFYWNoKGk9PntpZigiKiI9PT1pKXtyPz89ZS5rZXlzKCk7Zm9yKGxldCBvIG9mIHIp'@; put 'dC5zZXQobyx0Nyl9ZWxzZSBmb3IobGV0W28sYV1vZiBpKXQuc2V0KG8sYSl9KSx0fShlLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKTtmb3IobGV0W2wsdV1vZiBhKXtjb25zdCBnPVhEKHUsbyxyKTt0aGlzLl9wZW5kaW5nU3R5bGVzLnNldChsLGcpLHRoaXMuX2xvY2FsVGltZWxpbmVT'@; put 'dHlsZXMuaGFzKGwpfHx0aGlzLl9iYWNrRmlsbC5zZXQobCx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcy5nZXQobCk/P3Q3KSx0aGlzLl91cGRhdGVTdHlsZShsLGcpfX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXswIT10aGlzLl9wZW5kaW5nU3R5bGVzLnNpemUmJih0aGlzLl9wZW5kaW5n'@; put 'U3R5bGVzLmZvckVhY2goKGUsdCk9Pnt0aGlzLl9jdXJyZW50S2V5ZnJhbWUuc2V0KHQsZSl9KSx0aGlzLl9wZW5kaW5nU3R5bGVzLmNsZWFyKCksdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcy5mb3JFYWNoKChlLHQpPT57dGhpcy5fY3VycmVudEtleWZyYW1lLmhhcyh0KXx8dGhpcy5fY3Vy'@; put 'cmVudEtleWZyYW1lLnNldCh0LGUpfSkpfXNuYXBzaG90Q3VycmVudFN0eWxlcygpe2ZvcihsZXRbZSx0XW9mIHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpdGhpcy5fcGVuZGluZ1N0eWxlcy5zZXQoZSx0KSx0aGlzLl91cGRhdGVTdHlsZShlLHQpfWdldEZpbmFsS2V5ZnJhbWUoKXtyZXR1'@; put 'cm4gdGhpcy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0aW9uKX1nZXQgcHJvcGVydGllcygpe2NvbnN0IGU9W107Zm9yKGxldCB0IGluIHRoaXMuX2N1cnJlbnRLZXlmcmFtZSllLnB1c2godCk7cmV0dXJuIGV9bWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhlKXtlLl9zdHlsZVN1bW1h'@; put 'cnkuZm9yRWFjaCgodCxyKT0+e2NvbnN0IGk9dGhpcy5fc3R5bGVTdW1tYXJ5LmdldChyKTsoIWl8fHQudGltZT5pLnRpbWUpJiZ0aGlzLl91cGRhdGVTdHlsZShyLHQudmFsdWUpfSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2NvbnN0IGU9bmV3IFNl'@; put 'dCx0PW5ldyBTZXQscj0xPT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJjA9PT10aGlzLmR1cmF0aW9uO2xldCBpPVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKChsLHUpPT57Y29uc3QgZz1uZXcgTWFwKFsuLi50aGlzLl9iYWNrRmlsbCwuLi5sXSk7Zy5mb3JFYWNoKChFLE8pPT57IiEiPT09'@; put 'RT9lLmFkZChPKTpFPT09dDcmJnQuYWRkKE8pfSkscnx8Zy5zZXQoIm9mZnNldCIsdS90aGlzLmR1cmF0aW9uKSxpLnB1c2goZyl9KTtjb25zdCBvPVsuLi5lLnZhbHVlcygpXSxhPVsuLi50LnZhbHVlcygpXTtpZihyKXtjb25zdCBsPWlbMF0sdT1uZXcgTWFwKGwpO2wuc2V0KCJvZmZzZXQi'@; put 'LDApLHUuc2V0KCJvZmZzZXQiLDEpLGk9W2wsdV19cmV0dXJuIFhhZSh0aGlzLmVsZW1lbnQsaSxvLGEsdGhpcy5kdXJhdGlvbix0aGlzLnN0YXJ0VGltZSx0aGlzLmVhc2luZywhMSl9fWNsYXNzIFpDdCBleHRlbmRzIHhXe2tleWZyYW1lcztwcmVTdHlsZVByb3BzO3Bvc3RTdHlsZVByb3Bz'@; put 'O19zdHJldGNoU3RhcnRpbmdLZXlmcmFtZTt0aW1pbmdzO2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhLGw9ITEpe3N1cGVyKGUsdCxhLmRlbGF5KSx0aGlzLmtleWZyYW1lcz1yLHRoaXMucHJlU3R5bGVQcm9wcz1pLHRoaXMucG9zdFN0eWxlUHJvcHM9byx0aGlzLl9zdHJldGNoU3RhcnRpbmdL'@; put 'ZXlmcmFtZT1sLHRoaXMudGltaW5ncz17ZHVyYXRpb246YS5kdXJhdGlvbixkZWxheTphLmRlbGF5LGVhc2luZzphLmVhc2luZ319Y29udGFpbnNBbmltYXRpb24oKXtyZXR1cm4gdGhpcy5rZXlmcmFtZXMubGVuZ3RoPjF9YnVpbGRLZXlmcmFtZXMoKXtsZXQgZT10aGlzLmtleWZyYW1lcyx7'@; put 'ZGVsYXk6dCxkdXJhdGlvbjpyLGVhc2luZzppfT10aGlzLnRpbWluZ3M7aWYodGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUmJnQpe2NvbnN0IG89W10sYT1yK3QsbD10L2EsdT1uZXcgTWFwKGVbMF0pO3Uuc2V0KCJvZmZzZXQiLDApLG8ucHVzaCh1KTtjb25zdCBnPW5ldyBNYXAoZVsw'@; put 'XSk7Zy5zZXQoIm9mZnNldCIsSFRlKGwpKSxvLnB1c2goZyk7Y29uc3QgRT1lLmxlbmd0aC0xO2ZvcihsZXQgTz0xO088PUU7TysrKXtsZXQgWj1uZXcgTWFwKGVbT10pO2NvbnN0IGVlPVouZ2V0KCJvZmZzZXQiKTtaLnNldCgib2Zmc2V0IixIVGUoKHQrZWUqcikvYSkpLG8ucHVzaChaKX1y'@; put 'PWEsdD0wLGk9IiIsZT1vfXJldHVybiBYYWUodGhpcy5lbGVtZW50LGUsdGhpcy5wcmVTdHlsZVByb3BzLHRoaXMucG9zdFN0eWxlUHJvcHMscix0LGksITApfX1mdW5jdGlvbiBIVGUobixlPTMpe2NvbnN0IHQ9TWF0aC5wb3coMTAsZS0xKTtyZXR1cm4gTWF0aC5yb3VuZChuKnQpL3R9ZnVu'@; put 'Y3Rpb24gVlRlKG4sZSx0LHIsaSxvLGEsbCx1LGcsRSxPLFope3JldHVybnt0eXBlOjAsZWxlbWVudDpuLHRyaWdnZXJOYW1lOmUsaXNSZW1vdmFsVHJhbnNpdGlvbjppLGZyb21TdGF0ZTp0LGZyb21TdHlsZXM6byx0b1N0YXRlOnIsdG9TdHlsZXM6YSx0aW1lbGluZXM6bCxxdWVyaWVkRWxl'@; put 'bWVudHM6dSxwcmVTdHlsZVByb3BzOmcscG9zdFN0eWxlUHJvcHM6RSx0b3RhbFRpbWU6TyxlcnJvcnM6Wn19Y29uc3QgZXNlPXt9O2NsYXNzIEJUZXtfdHJpZ2dlck5hbWU7YXN0O19zdGF0ZVN0eWxlcztjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5fdHJpZ2dlck5hbWU9ZSx0aGlzLmFzdD10'@; put 'LHRoaXMuX3N0YXRlU3R5bGVzPXJ9bWF0Y2goZSx0LHIsaSl7cmV0dXJuIGZ1bmN0aW9uICRDdChuLGUsdCxyLGkpe3JldHVybiBuLnNvbWUobz0+byhlLHQscixpKSl9KHRoaXMuYXN0Lm1hdGNoZXJzLGUsdCxyLGkpfWJ1aWxkU3R5bGVzKGUsdCxyKXtsZXQgaT10aGlzLl9zdGF0ZVN0eWxl'@; put 'cy5nZXQoIioiKTtyZXR1cm4gdm9pZCAwIT09ZSYmKGk9dGhpcy5fc3RhdGVTdHlsZXMuZ2V0KGU/LnRvU3RyaW5nKCkpfHxpKSxpP2kuYnVpbGRTdHlsZXModCxyKTpuZXcgTWFwfWJ1aWxkKGUsdCxyLGksbyxhLGwsdSxnLEUpe2NvbnN0IE89W10sWj10aGlzLmFzdC5vcHRpb25zJiZ0aGlz'@; put 'LmFzdC5vcHRpb25zLnBhcmFtc3x8ZXNlLHZlPXRoaXMuYnVpbGRTdHlsZXMocixsJiZsLnBhcmFtc3x8ZXNlLE8pLE1lPXUmJnUucGFyYW1zfHxlc2UsSGU9dGhpcy5idWlsZFN0eWxlcyhpLE1lLE8pLFdlPW5ldyBTZXQsYXQ9bmV3IE1hcCxDdD1uZXcgTWFwLEF0PSJ2b2lkIj09PWksS3Q9'@; put 'e3BhcmFtczpqVGUoTWUsWiksZGVsYXk6dGhpcy5hc3Qub3B0aW9ucz8uZGVsYXl9LHF0PUU/W106UWFlKGUsdCx0aGlzLmFzdC5hbmltYXRpb24sbyxhLHZlLEhlLEt0LGcsTyk7bGV0IGduPTA7cmV0dXJuIHF0LmZvckVhY2goVG49Pntnbj1NYXRoLm1heChUbi5kdXJhdGlvbitUbi5kZWxh'@; put 'eSxnbil9KSxPLmxlbmd0aD9WVGUodCx0aGlzLl90cmlnZ2VyTmFtZSxyLGksQXQsdmUsSGUsW10sW10sYXQsQ3QsZ24sTyk6KHF0LmZvckVhY2goVG49Pntjb25zdCBDbj1Ubi5lbGVtZW50LHFyPUhwKGF0LENuLG5ldyBTZXQpO1RuLnByZVN0eWxlUHJvcHMuZm9yRWFjaChUcj0+cXIuYWRk'@; put 'KFRyKSk7Y29uc3QgJG49SHAoQ3QsQ24sbmV3IFNldCk7VG4ucG9zdFN0eWxlUHJvcHMuZm9yRWFjaChUcj0+JG4uYWRkKFRyKSksQ24hPT10JiZXZS5hZGQoQ24pfSksVlRlKHQsdGhpcy5fdHJpZ2dlck5hbWUscixpLEF0LHZlLEhlLHF0LFsuLi5XZS52YWx1ZXMoKV0sYXQsQ3QsZ24pKX19'@; put 'ZnVuY3Rpb24galRlKG4sZSl7Y29uc3QgdD17Li4uZX07cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKFtyLGldKT0+e251bGwhPWkmJih0W3JdPWkpfSksdH1jbGFzcyBxQ3R7c3R5bGVzO2RlZmF1bHRQYXJhbXM7bm9ybWFsaXplcjtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5z'@; put 'dHlsZXM9ZSx0aGlzLmRlZmF1bHRQYXJhbXM9dCx0aGlzLm5vcm1hbGl6ZXI9cn1idWlsZFN0eWxlcyhlLHQpe2NvbnN0IHI9bmV3IE1hcCxpPWpUZShlLHRoaXMuZGVmYXVsdFBhcmFtcyk7cmV0dXJuIHRoaXMuc3R5bGVzLnN0eWxlcy5mb3JFYWNoKG89Pnsic3RyaW5nIiE9dHlwZW9mIG8m'@; put 'Jm8uZm9yRWFjaCgoYSxsKT0+e2EmJihhPVhEKGEsaSx0KSk7Y29uc3QgdT10aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplUHJvcGVydHlOYW1lKGwsdCk7YT10aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplU3R5bGVWYWx1ZShsLHUsYSx0KSxyLnNldChsLGEpfSl9KSxyfX1jbGFzcyBYQ3R7bmFt'@; put 'ZTthc3Q7X25vcm1hbGl6ZXI7dHJhbnNpdGlvbkZhY3Rvcmllcz1bXTtmYWxsYmFja1RyYW5zaXRpb247c3RhdGVzPW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMubmFtZT1lLHRoaXMuYXN0PXQsdGhpcy5fbm9ybWFsaXplcj1yLHQuc3RhdGVzLmZvckVhY2goaT0+e3RoaXMuc3Rh'@; put 'dGVzLnNldChpLm5hbWUsbmV3IHFDdChpLnN0eWxlLGkub3B0aW9ucyYmaS5vcHRpb25zLnBhcmFtc3x8e30scikpfSksVVRlKHRoaXMuc3RhdGVzLCJ0cnVlIiwiMSIpLFVUZSh0aGlzLnN0YXRlcywiZmFsc2UiLCIwIiksdC50cmFuc2l0aW9ucy5mb3JFYWNoKGk9Pnt0aGlzLnRyYW5zaXRp'@; put 'b25GYWN0b3JpZXMucHVzaChuZXcgQlRlKGUsaSx0aGlzLnN0YXRlcykpfSksdGhpcy5mYWxsYmFja1RyYW5zaXRpb249ZnVuY3Rpb24gUUN0KG4sZSl7cmV0dXJuIG5ldyBCVGUobix7dHlwZTpicy5UcmFuc2l0aW9uLGFuaW1hdGlvbjp7dHlwZTpicy5TZXF1ZW5jZSxzdGVwczpbXSxvcHRp'@; put 'b25zOm51bGx9LG1hdGNoZXJzOlsoYSxsKT0+ITBdLG9wdGlvbnM6bnVsbCxxdWVyeUNvdW50OjAsZGVwQ291bnQ6MH0sZSl9KGUsdGhpcy5zdGF0ZXMpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbihlLHQscixpKXty'@; put 'ZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQoYT0+YS5tYXRjaChlLHQscixpKSl8fG51bGx9bWF0Y2hTdHlsZXMoZSx0LHIpe3JldHVybiB0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbi5idWlsZFN0eWxlcyhlLHQscil9fWZ1bmN0aW9uIFVUZShuLGUsdCl7bi5oYXMoZSk/bi5o'@; put 'YXModCl8fG4uc2V0KHQsbi5nZXQoZSkpOm4uaGFzKHQpJiZuLnNldChlLG4uZ2V0KHQpKX1jb25zdCBKQ3Q9bmV3IE1XO2NsYXNzIGVTdHtib2R5Tm9kZTtfZHJpdmVyO19ub3JtYWxpemVyO19hbmltYXRpb25zPW5ldyBNYXA7X3BsYXllcnNCeUlkPW5ldyBNYXA7cGxheWVycz1bXTtjb25z'@; put 'dHJ1Y3RvcihlLHQscil7dGhpcy5ib2R5Tm9kZT1lLHRoaXMuX2RyaXZlcj10LHRoaXMuX25vcm1hbGl6ZXI9cn1yZWdpc3RlcihlLHQpe2NvbnN0IHI9W10sbz1xYWUodGhpcy5fZHJpdmVyLHQscixbXSk7aWYoci5sZW5ndGgpdGhyb3cgZnVuY3Rpb24gZUN0KCl7cmV0dXJuIG5ldyBXbigz'@; put 'NTAzLCExKX0oKTt0aGlzLl9hbmltYXRpb25zLnNldChlLG8pfV9idWlsZFBsYXllcihlLHQscil7Y29uc3QgaT1lLmVsZW1lbnQsbz1FVGUodGhpcy5fbm9ybWFsaXplcixlLmtleWZyYW1lcyx0LHIpO3JldHVybiB0aGlzLl9kcml2ZXIuYW5pbWF0ZShpLG8sZS5kdXJhdGlvbixlLmRlbGF5'@; put 'LGUuZWFzaW5nLFtdLCEwKX1jcmVhdGUoZSx0LHI9e30pe2NvbnN0IGk9W10sbz10aGlzLl9hbmltYXRpb25zLmdldChlKTtsZXQgYTtjb25zdCBsPW5ldyBNYXA7aWYobz8oYT1RYWUodGhpcy5fZHJpdmVyLHQsbywibmctZW50ZXIiLFZhZSxuZXcgTWFwLG5ldyBNYXAscixKQ3QsaSksYS5m'@; put 'b3JFYWNoKEU9Pntjb25zdCBPPUhwKGwsRS5lbGVtZW50LG5ldyBNYXApO0UucG9zdFN0eWxlUHJvcHMuZm9yRWFjaChaPT5PLnNldChaLG51bGwpKX0pKTooaS5wdXNoKGZ1bmN0aW9uIHRDdCgpe3JldHVybiBuZXcgV24oMzMwMCwhMSl9KCkpLGE9W10pLGkubGVuZ3RoKXRocm93IGZ1bmN0'@; put 'aW9uIG5DdCgpe3JldHVybiBuZXcgV24oMzUwNCwhMSl9KCk7bC5mb3JFYWNoKChFLE8pPT57RS5mb3JFYWNoKChaLGVlKT0+e0Uuc2V0KGVlLHRoaXMuX2RyaXZlci5jb21wdXRlU3R5bGUoTyxlZSx0NykpfSl9KTtjb25zdCBnPVB2KGEubWFwKEU9Pntjb25zdCBPPWwuZ2V0KEUuZWxlbWVu'@; put 'dCk7cmV0dXJuIHRoaXMuX2J1aWxkUGxheWVyKEUsbmV3IE1hcCxPKX0pKTtyZXR1cm4gdGhpcy5fcGxheWVyc0J5SWQuc2V0KGUsZyksZy5vbkRlc3Ryb3koKCk9PnRoaXMuZGVzdHJveShlKSksdGhpcy5wbGF5ZXJzLnB1c2goZyksZ31kZXN0cm95KGUpe2NvbnN0IHQ9dGhpcy5fZ2V0UGxh'@; put 'eWVyKGUpO3QuZGVzdHJveSgpLHRoaXMuX3BsYXllcnNCeUlkLmRlbGV0ZShlKTtjb25zdCByPXRoaXMucGxheWVycy5pbmRleE9mKHQpO3I+PTAmJnRoaXMucGxheWVycy5zcGxpY2UociwxKX1fZ2V0UGxheWVyKGUpe2NvbnN0IHQ9dGhpcy5fcGxheWVyc0J5SWQuZ2V0KGUpO2lmKCF0KXRo'@; put 'cm93IGZ1bmN0aW9uIHJDdCgpe3JldHVybiBuZXcgV24oMzMwMSwhMSl9KCk7cmV0dXJuIHR9bGlzdGVuKGUsdCxyLGkpe2NvbnN0IG89UGFlKHQsIiIsIiIsIiIpO3JldHVybiBOYWUodGhpcy5fZ2V0UGxheWVyKGUpLHIsbyxpKSwoKT0+e319Y29tbWFuZChlLHQscixpKXtpZigicmVnaXN0'@; put 'ZXIiPT1yKXJldHVybiB2b2lkIHRoaXMucmVnaXN0ZXIoZSxpWzBdKTtpZigiY3JlYXRlIj09cilyZXR1cm4gdm9pZCB0aGlzLmNyZWF0ZShlLHQsaVswXXx8e30pO2NvbnN0IG89dGhpcy5fZ2V0UGxheWVyKGUpO3N3aXRjaChyKXtjYXNlInBsYXkiOm8ucGxheSgpO2JyZWFrO2Nhc2UicGF1'@; put 'c2UiOm8ucGF1c2UoKTticmVhaztjYXNlInJlc2V0IjpvLnJlc2V0KCk7YnJlYWs7Y2FzZSJyZXN0YXJ0IjpvLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6by5maW5pc2goKTticmVhaztjYXNlImluaXQiOm8uaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOm8uc2V0UG9zaXRp'@; put 'b24ocGFyc2VGbG9hdChpWzBdKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0aGlzLmRlc3Ryb3koZSl9fX1jb25zdCB6VGU9Im5nLWFuaW1hdGUtcXVldWVkIix0c2U9Im5nLWFuaW1hdGUtZGlzYWJsZWQiLG9TdD1bXSxXVGU9e25hbWVzcGFjZUlkOiIiLHNldEZvclJlbW92YWw6ITEsc2V0Rm9y'@; put 'TW92ZTohMSxoYXNBbmltYXRpb246ITEscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITF9LGFTdD17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yTW92ZTohMSxzZXRGb3JSZW1vdmFsOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMH0sXzQ9Il9fbmdfcmVtb3ZlZCI7Y2xhc3Mg'@; put 'bnNle25hbWVzcGFjZUlkO3ZhbHVlO29wdGlvbnM7Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfWNvbnN0cnVjdG9yKGUsdD0iIil7dGhpcy5uYW1lc3BhY2VJZD10O2NvbnN0IHI9ZSYmZS5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKTtpZih0aGlzLnZhbHVlPWZ1bmN0'@; put 'aW9uIHVTdChuKXtyZXR1cm4gbj8/bnVsbH0ocj9lLnZhbHVlOmUpLHIpe2NvbnN0e3ZhbHVlOm8sLi4uYX09ZTt0aGlzLm9wdGlvbnM9YX1lbHNlIHRoaXMub3B0aW9ucz17fTt0aGlzLm9wdGlvbnMucGFyYW1zfHwodGhpcy5vcHRpb25zLnBhcmFtcz17fSl9YWJzb3JiT3B0aW9ucyhlKXtj'@; put 'b25zdCB0PWUucGFyYW1zO2lmKHQpe2NvbnN0IHI9dGhpcy5vcHRpb25zLnBhcmFtcztPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGk9PntudWxsPT1yW2ldJiYocltpXT10W2ldKX0pfX19Y29uc3QgUUQ9InZvaWQiLHJzZT1uZXcgbnNlKFFEKTtjbGFzcyBzU3R7aWQ7aG9zdEVsZW1lbnQ7X2Vu'@; put 'Z2luZTtwbGF5ZXJzPVtdO190cmlnZ2Vycz1uZXcgTWFwO19xdWV1ZT1bXTtfZWxlbWVudExpc3RlbmVycz1uZXcgTWFwO19ob3N0Q2xhc3NOYW1lO2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmlkPWUsdGhpcy5ob3N0RWxlbWVudD10LHRoaXMuX2VuZ2luZT1yLHRoaXMuX2hvc3RDbGFzc05h'@; put 'bWU9Im5nLXRucy0iK2Usb20odCx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1saXN0ZW4oZSx0LHIsaSl7aWYoIXRoaXMuX3RyaWdnZXJzLmhhcyh0KSl0aHJvdyBmdW5jdGlvbiBpQ3QoKXtyZXR1cm4gbmV3IFduKDMzMDIsITEpfSgpO2lmKG51bGw9PXJ8fDA9PXIubGVuZ3RoKXRocm93IGZ1bmN0'@; put 'aW9uIG9DdCgpe3JldHVybiBuZXcgV24oMzMwMywhMSl9KCk7aWYoIWZ1bmN0aW9uIGRTdChuKXtyZXR1cm4ic3RhcnQiPT1ufHwiZG9uZSI9PW59KHIpKXRocm93IGZ1bmN0aW9uIGFDdCgpe3JldHVybiBuZXcgV24oMzQwMCwhMSl9KCk7Y29uc3Qgbz1IcCh0aGlzLl9lbGVtZW50TGlzdGVu'@; put 'ZXJzLGUsW10pLGE9e25hbWU6dCxwaGFzZTpyLGNhbGxiYWNrOml9O28ucHVzaChhKTtjb25zdCBsPUhwKHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQsZSxuZXcgTWFwKTtyZXR1cm4gbC5oYXModCl8fChvbShlLHlXKSxvbShlLHlXKyItIit0KSxsLnNldCh0LHJzZSkpLCgpPT57dGhp'@; put 'cy5fZW5naW5lLmFmdGVyRmx1c2goKCk9Pntjb25zdCB1PW8uaW5kZXhPZihhKTt1Pj0wJiZvLnNwbGljZSh1LDEpLHRoaXMuX3RyaWdnZXJzLmhhcyh0KXx8bC5kZWxldGUodCl9KX19cmVnaXN0ZXIoZSx0KXtyZXR1cm4hdGhpcy5fdHJpZ2dlcnMuaGFzKGUpJiYodGhpcy5fdHJpZ2dlcnMu'@; put 'c2V0KGUsdCksITApfV9nZXRUcmlnZ2VyKGUpe2NvbnN0IHQ9dGhpcy5fdHJpZ2dlcnMuZ2V0KGUpO2lmKCF0KXRocm93IGZ1bmN0aW9uIHNDdCgpe3JldHVybiBuZXcgV24oMzQwMSwhMSl9KCk7cmV0dXJuIHR9dHJpZ2dlcihlLHQscixpPSEwKXtjb25zdCBvPXRoaXMuX2dldFRyaWdnZXIo'@; put 'dCksYT1uZXcgaXNlKHRoaXMuaWQsdCxlKTtsZXQgbD10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldChlKTtsfHwob20oZSx5Vyksb20oZSx5VysiLSIrdCksdGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5zZXQoZSxsPW5ldyBNYXApKTtsZXQgdT1sLmdldCh0KTtjb25zdCBn'@; put 'PW5ldyBuc2Uocix0aGlzLmlkKTtpZighKHImJnIuaGFzT3duUHJvcGVydHkoInZhbHVlIikpJiZ1JiZnLmFic29yYk9wdGlvbnModS5vcHRpb25zKSxsLnNldCh0LGcpLHV8fCh1PXJzZSksZy52YWx1ZSE9PVFEJiZ1LnZhbHVlPT09Zy52YWx1ZSl7aWYoIWZ1bmN0aW9uIHBTdChuLGUpe2Nv'@; put 'bnN0IHQ9T2JqZWN0LmtleXMobikscj1PYmplY3Qua2V5cyhlKTtpZih0Lmxlbmd0aCE9ci5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IG89dFtpXTtpZighZS5oYXNPd25Qcm9wZXJ0eShvKXx8bltvXSE9PWVbb10pcmV0dXJuITF9cmV0dXJuITB9'@; put 'KHUucGFyYW1zLGcucGFyYW1zKSl7Y29uc3QgTWU9W10sSGU9by5tYXRjaFN0eWxlcyh1LnZhbHVlLHUucGFyYW1zLE1lKSxXZT1vLm1hdGNoU3R5bGVzKGcudmFsdWUsZy5wYXJhbXMsTWUpO01lLmxlbmd0aD90aGlzLl9lbmdpbmUucmVwb3J0RXJyb3IoTWUpOnRoaXMuX2VuZ2luZS5hZnRl'@; put 'ckZsdXNoKCgpPT57b3coZSxIZSksJDUoZSxXZSl9KX1yZXR1cm59Y29uc3QgWj1IcCh0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudCxlLFtdKTtaLmZvckVhY2goTWU9PntNZS5uYW1lc3BhY2VJZD09dGhpcy5pZCYmTWUudHJpZ2dlck5hbWU9PXQmJk1lLnF1ZXVlZCYmTWUuZGVzdHJv'@; put 'eSgpfSk7bGV0IGVlPW8ubWF0Y2hUcmFuc2l0aW9uKHUudmFsdWUsZy52YWx1ZSxlLGcucGFyYW1zKSx2ZT0hMTtpZighZWUpe2lmKCFpKXJldHVybjtlZT1vLmZhbGxiYWNrVHJhbnNpdGlvbix2ZT0hMH1yZXR1cm4gdGhpcy5fZW5naW5lLnRvdGFsUXVldWVkUGxheWVycysrLHRoaXMuX3F1'@; put 'ZXVlLnB1c2goe2VsZW1lbnQ6ZSx0cmlnZ2VyTmFtZTp0LHRyYW5zaXRpb246ZWUsZnJvbVN0YXRlOnUsdG9TdGF0ZTpnLHBsYXllcjphLGlzRmFsbGJhY2tUcmFuc2l0aW9uOnZlfSksdmV8fChvbShlLHpUZSksYS5vblN0YXJ0KCgpPT57TE0oZSx6VGUpfSkpLGEub25Eb25lKCgpPT57bGV0'@; put 'IE1lPXRoaXMucGxheWVycy5pbmRleE9mKGEpO01lPj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKE1lLDEpO2NvbnN0IEhlPXRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmdldChlKTtpZihIZSl7bGV0IFdlPUhlLmluZGV4T2YoYSk7V2U+PTAmJkhlLnNwbGljZShXZSwxKX19KSx0aGlz'@; put 'LnBsYXllcnMucHVzaChhKSxaLnB1c2goYSksYX1kZXJlZ2lzdGVyKGUpe3RoaXMuX3RyaWdnZXJzLmRlbGV0ZShlKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmZvckVhY2godD0+dC5kZWxldGUoZSkpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZm9yRWFjaCgodCxyKT0+e3RoaXMu'@; put 'X2VsZW1lbnRMaXN0ZW5lcnMuc2V0KHIsdC5maWx0ZXIoaT0+aS5uYW1lIT1lKSl9KX1jbGVhckVsZW1lbnRDYWNoZShlKXt0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmRlbGV0ZShlKSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmRlbGV0ZShlKTtjb25zdCB0PXRoaXMuX2VuZ2luZS5w'@; put 'bGF5ZXJzQnlFbGVtZW50LmdldChlKTt0JiYodC5mb3JFYWNoKHI9PnIuZGVzdHJveSgpKSx0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5kZWxldGUoZSkpfV9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2VycyhlLHQpe2NvbnN0IHI9dGhpcy5fZW5naW5lLmRyaXZlci5xdWVyeShl'@; put 'LGJXLCEwKTtyLmZvckVhY2goaT0+e2lmKGlbXzRdKXJldHVybjtjb25zdCBvPXRoaXMuX2VuZ2luZS5mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQoaSk7by5zaXplP28uZm9yRWFjaChhPT5hLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbihpLHQsITEsITApKTp0aGlzLmNsZWFyRWxlbWVudENhY2hl'@; put 'KGkpfSksdGhpcy5fZW5naW5lLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKT0+ci5mb3JFYWNoKGk9PnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUoaSkpKX10cmlnZ2VyTGVhdmVBbmltYXRpb24oZSx0LHIsaSl7Y29uc3Qgbz10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldChlKSxh'@; put 'PW5ldyBNYXA7aWYobyl7Y29uc3QgbD1bXTtpZihvLmZvckVhY2goKHUsZyk9PntpZihhLnNldChnLHUudmFsdWUpLHRoaXMuX3RyaWdnZXJzLmhhcyhnKSl7Y29uc3QgRT10aGlzLnRyaWdnZXIoZSxnLFFELGkpO0UmJmwucHVzaChFKX19KSxsLmxlbmd0aClyZXR1cm4gdGhpcy5fZW5naW5l'@; put 'Lm1hcmtFbGVtZW50QXNSZW1vdmVkKHRoaXMuaWQsZSwhMCx0LGEpLHImJlB2KGwpLm9uRG9uZSgoKT0+dGhpcy5fZW5naW5lLnByb2Nlc3NMZWF2ZU5vZGUoZSkpLCEwfXJldHVybiExfXByZXBhcmVMZWF2ZUFuaW1hdGlvbkxpc3RlbmVycyhlKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRMaXN0'@; put 'ZW5lcnMuZ2V0KGUpLHI9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQoZSk7aWYodCYmcil7Y29uc3QgaT1uZXcgU2V0O3QuZm9yRWFjaChvPT57Y29uc3QgYT1vLm5hbWU7aWYoaS5oYXMoYSkpcmV0dXJuO2kuYWRkKGEpO2NvbnN0IHU9dGhpcy5fdHJpZ2dlcnMuZ2V0KGEpLmZh'@; put 'bGxiYWNrVHJhbnNpdGlvbixnPXIuZ2V0KGEpfHxyc2UsRT1uZXcgbnNlKFFEKSxPPW5ldyBpc2UodGhpcy5pZCxhLGUpO3RoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OmUsdHJpZ2dlck5hbWU6YSx0cmFuc2l0aW9uOnUsZnJvbVN0'@; put 'YXRlOmcsdG9TdGF0ZTpFLHBsYXllcjpPLGlzRmFsbGJhY2tUcmFuc2l0aW9uOiEwfSl9KX19cmVtb3ZlTm9kZShlLHQpe2NvbnN0IHI9dGhpcy5fZW5naW5lO2lmKGUuY2hpbGRFbGVtZW50Q291bnQmJnRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKGUsdCksdGhpcy50cmln'@; put 'Z2VyTGVhdmVBbmltYXRpb24oZSx0LCEwKSlyZXR1cm47bGV0IGk9ITE7aWYoci50b3RhbEFuaW1hdGlvbnMpe2NvbnN0IG89ci5wbGF5ZXJzLmxlbmd0aD9yLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldChlKTpbXTtpZihvJiZvLmxlbmd0aClpPSEwO2Vsc2V7bGV0IGE9ZTtmb3IoO2E9'@; put 'YS5wYXJlbnROb2RlOylpZihyLnN0YXRlc0J5RWxlbWVudC5nZXQoYSkpe2k9ITA7YnJlYWt9fX1pZih0aGlzLnByZXBhcmVMZWF2ZUFuaW1hdGlvbkxpc3RlbmVycyhlKSxpKXIubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCxlLCExLHQpO2Vsc2V7Y29uc3Qgbz1lW180XTsoIW98fG89'@; put 'PT1XVGUpJiYoci5hZnRlckZsdXNoKCgpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKGUpKSxyLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnMoZSksci5fb25SZW1vdmFsQ29tcGxldGUoZSx0KSl9fWluc2VydE5vZGUoZSx0KXtvbShlLHRoaXMuX2hvc3RDbGFzc05hbWUpfWRyYWluUXVldWVkVHJh'@; put 'bnNpdGlvbnMoZSl7Y29uc3QgdD1bXTtyZXR1cm4gdGhpcy5fcXVldWUuZm9yRWFjaChyPT57Y29uc3QgaT1yLnBsYXllcjtpZihpLmRlc3Ryb3llZClyZXR1cm47Y29uc3Qgbz1yLmVsZW1lbnQsYT10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldChvKTthJiZhLmZvckVhY2gobD0+e2lmKGwu'@; put 'bmFtZT09ci50cmlnZ2VyTmFtZSl7Y29uc3QgdT1QYWUobyxyLnRyaWdnZXJOYW1lLHIuZnJvbVN0YXRlLnZhbHVlLHIudG9TdGF0ZS52YWx1ZSk7dS5fZGF0YT1lLE5hZShyLnBsYXllcixsLnBoYXNlLHUsbC5jYWxsYmFjayl9fSksaS5tYXJrZWRGb3JEZXN0cm95P3RoaXMuX2VuZ2luZS5h'@; put 'ZnRlckZsdXNoKCgpPT57aS5kZXN0cm95KCl9KTp0LnB1c2gocil9KSx0aGlzLl9xdWV1ZT1bXSx0LnNvcnQoKHIsaSk9Pntjb25zdCBvPXIudHJhbnNpdGlvbi5hc3QuZGVwQ291bnQsYT1pLnRyYW5zaXRpb24uYXN0LmRlcENvdW50O3JldHVybiAwPT1vfHwwPT1hP28tYTp0aGlzLl9lbmdp'@; put 'bmUuZHJpdmVyLmNvbnRhaW5zRWxlbWVudChyLmVsZW1lbnQsaS5lbGVtZW50KT8xOi0xfSl9ZGVzdHJveShlKXt0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT50LmRlc3Ryb3koKSksdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModGhpcy5ob3N0RWxlbWVudCxlKX19Y2xhc3Mg'@; put 'bFN0e2JvZHlOb2RlO2RyaXZlcjtfbm9ybWFsaXplcjtwbGF5ZXJzPVtdO25ld0hvc3RFbGVtZW50cz1uZXcgTWFwO3BsYXllcnNCeUVsZW1lbnQ9bmV3IE1hcDtwbGF5ZXJzQnlRdWVyaWVkRWxlbWVudD1uZXcgTWFwO3N0YXRlc0J5RWxlbWVudD1uZXcgTWFwO2Rpc2FibGVkTm9kZXM9bmV3'@; put 'IFNldDt0b3RhbEFuaW1hdGlvbnM9MDt0b3RhbFF1ZXVlZFBsYXllcnM9MDtfbmFtZXNwYWNlTG9va3VwPXt9O19uYW1lc3BhY2VMaXN0PVtdO19mbHVzaEZucz1bXTtfd2hlblF1aWV0Rm5zPVtdO25hbWVzcGFjZXNCeUhvc3RFbGVtZW50PW5ldyBNYXA7Y29sbGVjdGVkRW50ZXJFbGVtZW50'@; put 'cz1bXTtjb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzPVtdO29uUmVtb3ZhbENvbXBsZXRlPShlLHQpPT57fTtfb25SZW1vdmFsQ29tcGxldGUoZSx0KXt0aGlzLm9uUmVtb3ZhbENvbXBsZXRlKGUsdCl9Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuYm9keU5vZGU9ZSx0aGlzLmRyaXZlcj10LHRoaXMu'@; put 'X25vcm1hbGl6ZXI9cn1nZXQgcXVldWVkUGxheWVycygpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxpc3QuZm9yRWFjaCh0PT57dC5wbGF5ZXJzLmZvckVhY2gocj0+e3IucXVldWVkJiZlLnB1c2gocil9KX0pLGV9Y3JlYXRlTmFtZXNwYWNlKGUsdCl7Y29uc3Qgcj1uZXcg'@; put 'c1N0KGUsdCx0aGlzKTtyZXR1cm4gdGhpcy5ib2R5Tm9kZSYmdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KHRoaXMuYm9keU5vZGUsdCk/dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3Qocix0KToodGhpcy5uZXdIb3N0RWxlbWVudHMuc2V0KHQsciksdGhpcy5jb2xsZWN0RW50ZXJFbGVt'@; put 'ZW50KHQpKSx0aGlzLl9uYW1lc3BhY2VMb29rdXBbZV09cn1fYmFsYW5jZU5hbWVzcGFjZUxpc3QoZSx0KXtjb25zdCByPXRoaXMuX25hbWVzcGFjZUxpc3QsaT10aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50O2lmKHIubGVuZ3RoLTE+PTApe2xldCBhPSExLGw9dGhpcy5kcml2ZXIuZ2V0'@; put 'UGFyZW50RWxlbWVudCh0KTtmb3IoO2w7KXtjb25zdCB1PWkuZ2V0KGwpO2lmKHUpe2NvbnN0IGc9ci5pbmRleE9mKHUpO3Iuc3BsaWNlKGcrMSwwLGUpLGE9ITA7YnJlYWt9bD10aGlzLmRyaXZlci5nZXRQYXJlbnRFbGVtZW50KGwpfWF8fHIudW5zaGlmdChlKX1lbHNlIHIucHVzaChlKTty'@; put 'ZXR1cm4gaS5zZXQodCxlKSxlfXJlZ2lzdGVyKGUsdCl7bGV0IHI9dGhpcy5fbmFtZXNwYWNlTG9va3VwW2VdO3JldHVybiByfHwocj10aGlzLmNyZWF0ZU5hbWVzcGFjZShlLHQpKSxyfXJlZ2lzdGVyVHJpZ2dlcihlLHQscil7bGV0IGk9dGhpcy5fbmFtZXNwYWNlTG9va3VwW2VdO2kmJmku'@; put 'cmVnaXN0ZXIodCxyKSYmdGhpcy50b3RhbEFuaW1hdGlvbnMrK31kZXN0cm95KGUsdCl7ZSYmKHRoaXMuYWZ0ZXJGbHVzaCgoKT0+e30pLHRoaXMuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT57Y29uc3Qgcj10aGlzLl9mZXRjaE5hbWVzcGFjZShlKTt0aGlzLm5hbWVzcGFjZXNCeUhv'@; put 'c3RFbGVtZW50LmRlbGV0ZShyLmhvc3RFbGVtZW50KTtjb25zdCBpPXRoaXMuX25hbWVzcGFjZUxpc3QuaW5kZXhPZihyKTtpPj0wJiZ0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShpLDEpLHIuZGVzdHJveSh0KSxkZWxldGUgdGhpcy5fbmFtZXNwYWNlTG9va3VwW2VdfSkpfV9mZXRjaE5h'@; put 'bWVzcGFjZShlKXtyZXR1cm4gdGhpcy5fbmFtZXNwYWNlTG9va3VwW2VdfWZldGNoTmFtZXNwYWNlc0J5RWxlbWVudChlKXtjb25zdCB0PW5ldyBTZXQscj10aGlzLnN0YXRlc0J5RWxlbWVudC5nZXQoZSk7aWYocilmb3IobGV0IGkgb2Ygci52YWx1ZXMoKSlpZihpLm5hbWVzcGFjZUlkKXtj'@; put 'b25zdCBvPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGkubmFtZXNwYWNlSWQpO28mJnQuYWRkKG8pfXJldHVybiB0fXRyaWdnZXIoZSx0LHIsaSl7aWYoQVcodCkpe2NvbnN0IG89dGhpcy5fZmV0Y2hOYW1lc3BhY2UoZSk7aWYobylyZXR1cm4gby50cmlnZ2VyKHQscixpKSwhMH1yZXR1cm4hMX1p'@; put 'bnNlcnROb2RlKGUsdCxyLGkpe2lmKCFBVyh0KSlyZXR1cm47Y29uc3Qgbz10W180XTtpZihvJiZvLnNldEZvclJlbW92YWwpe28uc2V0Rm9yUmVtb3ZhbD0hMSxvLnNldEZvck1vdmU9ITA7Y29uc3QgYT10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuaW5kZXhPZih0KTthPj0wJiZ0aGlz'@; put 'LmNvbGxlY3RlZExlYXZlRWxlbWVudHMuc3BsaWNlKGEsMSl9aWYoZSl7Y29uc3QgYT10aGlzLl9mZXRjaE5hbWVzcGFjZShlKTthJiZhLmluc2VydE5vZGUodCxyKX1pJiZ0aGlzLmNvbGxlY3RFbnRlckVsZW1lbnQodCl9Y29sbGVjdEVudGVyRWxlbWVudChlKXt0aGlzLmNvbGxlY3RlZEVu'@; put 'dGVyRWxlbWVudHMucHVzaChlKX1tYXJrRWxlbWVudEFzRGlzYWJsZWQoZSx0KXt0P3RoaXMuZGlzYWJsZWROb2Rlcy5oYXMoZSl8fCh0aGlzLmRpc2FibGVkTm9kZXMuYWRkKGUpLG9tKGUsdHNlKSk6dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyhlKSYmKHRoaXMuZGlzYWJsZWROb2Rlcy5kZWxl'@; put 'dGUoZSksTE0oZSx0c2UpKX1yZW1vdmVOb2RlKGUsdCxyKXtpZihBVyh0KSl7Y29uc3QgaT1lP3RoaXMuX2ZldGNoTmFtZXNwYWNlKGUpOm51bGw7aT9pLnJlbW92ZU5vZGUodCxyKTp0aGlzLm1hcmtFbGVtZW50QXNSZW1vdmVkKGUsdCwhMSxyKTtjb25zdCBvPXRoaXMubmFtZXNwYWNlc0J5'@; put 'SG9zdEVsZW1lbnQuZ2V0KHQpO28mJm8uaWQhPT1lJiZvLnJlbW92ZU5vZGUodCxyKX1lbHNlIHRoaXMuX29uUmVtb3ZhbENvbXBsZXRlKHQscil9bWFya0VsZW1lbnRBc1JlbW92ZWQoZSx0LHIsaSxvKXt0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMucHVzaCh0KSx0W180XT17bmFtZXNw'@; put 'YWNlSWQ6ZSxzZXRGb3JSZW1vdmFsOmksaGFzQW5pbWF0aW9uOnIscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITEscHJldmlvdXNUcmlnZ2Vyc1ZhbHVlczpvfX1saXN0ZW4oZSx0LHIsaSxvKXtyZXR1cm4gQVcodCk/dGhpcy5fZmV0Y2hOYW1lc3BhY2UoZSkubGlzdGVuKHQscixpLG8pOigpPT57'@; put 'fX1fYnVpbGRJbnN0cnVjdGlvbihlLHQscixpLG8pe3JldHVybiBlLnRyYW5zaXRpb24uYnVpbGQodGhpcy5kcml2ZXIsZS5lbGVtZW50LGUuZnJvbVN0YXRlLnZhbHVlLGUudG9TdGF0ZS52YWx1ZSxyLGksZS5mcm9tU3RhdGUub3B0aW9ucyxlLnRvU3RhdGUub3B0aW9ucyx0LG8pfWRlc3Ry'@; put 'b3lJbm5lckFuaW1hdGlvbnMoZSl7bGV0IHQ9dGhpcy5kcml2ZXIucXVlcnkoZSxiVywhMCk7dC5mb3JFYWNoKHI9PnRoaXMuZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KHIpKSwwIT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LnNpemUmJih0PXRoaXMuZHJpdmVyLnF1'@; put 'ZXJ5KGUsQmFlLCEwKSx0LmZvckVhY2gocj0+dGhpcy5maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KHIpKSl9ZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldChlKTt0JiZ0LmZvckVhY2gocj0+'@; put 'e3IucXVldWVkP3IubWFya2VkRm9yRGVzdHJveT0hMDpyLmRlc3Ryb3koKX0pfWZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldChlKTt0JiZ0LmZvckVhY2gocj0+ci5maW5pc2goKSl9d2hlblJl'@; put 'bmRlcmluZ0RvbmUoKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2lmKHRoaXMucGxheWVycy5sZW5ndGgpcmV0dXJuIFB2KHRoaXMucGxheWVycykub25Eb25lKCgpPT5lKCkpO2UoKX0pfXByb2Nlc3NMZWF2ZU5vZGUoZSl7Y29uc3QgdD1lW180XTtpZih0JiZ0LnNldEZvclJlbW92YWwpe2lm'@; put 'KGVbXzRdPVdUZSx0Lm5hbWVzcGFjZUlkKXt0aGlzLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnMoZSk7Y29uc3Qgcj10aGlzLl9mZXRjaE5hbWVzcGFjZSh0Lm5hbWVzcGFjZUlkKTtyJiZyLmNsZWFyRWxlbWVudENhY2hlKGUpfXRoaXMuX29uUmVtb3ZhbENvbXBsZXRlKGUsdC5zZXRGb3JSZW1v'@; put 'dmFsKX1lLmNsYXNzTGlzdD8uY29udGFpbnModHNlKSYmdGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQoZSwhMSksdGhpcy5kcml2ZXIucXVlcnkoZSwiLm5nLWFuaW1hdGUtZGlzYWJsZWQiLCEwKS5mb3JFYWNoKHI9Pnt0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZChyLCExKX0pfWZsdXNo'@; put 'KGU9LTEpe2xldCB0PVtdO2lmKHRoaXMubmV3SG9zdEVsZW1lbnRzLnNpemUmJih0aGlzLm5ld0hvc3RFbGVtZW50cy5mb3JFYWNoKChyLGkpPT50aGlzLl9iYWxhbmNlTmFtZXNwYWNlTGlzdChyLGkpKSx0aGlzLm5ld0hvc3RFbGVtZW50cy5jbGVhcigpKSx0aGlzLnRvdGFsQW5pbWF0aW9u'@; put 'cyYmdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aClmb3IobGV0IHI9MDtyPHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg7cisrKW9tKHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50c1tyXSwibmctc3Rhci1pbnNlcnRlZCIpO2lmKHRoaXMuX25hbWVzcGFjZUxp'@; put 'c3QubGVuZ3RoJiYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnN8fHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGgpKXtjb25zdCByPVtdO3RyeXt0PXRoaXMuX2ZsdXNoQW5pbWF0aW9ucyhyLGUpfWZpbmFsbHl7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspcltpXSgpfX1lbHNl'@; put 'IGZvcihsZXQgcj0wO3I8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aDtyKyspdGhpcy5wcm9jZXNzTGVhdmVOb2RlKHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1tyXSk7aWYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMu'@; put 'bGVuZ3RoPTAsdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX2ZsdXNoRm5zLmZvckVhY2gocj0+cigpKSx0aGlzLl9mbHVzaEZucz1bXSx0aGlzLl93aGVuUXVpZXRGbnMubGVuZ3RoKXtjb25zdCByPXRoaXMuX3doZW5RdWlldEZuczt0aGlzLl93aGVuUXVpZXRG'@; put 'bnM9W10sdC5sZW5ndGg/UHYodCkub25Eb25lKCgpPT57ci5mb3JFYWNoKGk9PmkoKSl9KTpyLmZvckVhY2goaT0+aSgpKX19cmVwb3J0RXJyb3IoZSl7dGhyb3cgZnVuY3Rpb24gbEN0KCl7cmV0dXJuIG5ldyBXbigzNDAyLCExKX0oKX1fZmx1c2hBbmltYXRpb25zKGUsdCl7Y29uc3Qgcj1u'@; put 'ZXcgTVcsaT1bXSxvPW5ldyBNYXAsYT1bXSxsPW5ldyBNYXAsdT1uZXcgTWFwLGc9bmV3IE1hcCxFPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2goQW49PntFLmFkZChBbik7Y29uc3QgSHI9dGhpcy5kcml2ZXIucXVlcnkoQW4sIi5uZy1hbmltYXRlLXF1ZXVlZCIsITApO2Zv'@; put 'cihsZXQgdGk9MDt0aTxIci5sZW5ndGg7dGkrKylFLmFkZChIclt0aV0pfSk7Y29uc3QgTz10aGlzLmJvZHlOb2RlLFo9QXJyYXkuZnJvbSh0aGlzLnN0YXRlc0J5RWxlbWVudC5rZXlzKCkpLGVlPUdUZShaLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cyksdmU9bmV3IE1hcDtsZXQgTWU9'@; put 'MDtlZS5mb3JFYWNoKChBbixIcik9Pntjb25zdCB0aT0ibmctZW50ZXIiK01lKys7dmUuc2V0KEhyLHRpKSxBbi5mb3JFYWNoKGZyPT5vbShmcix0aSkpfSk7Y29uc3QgSGU9W10sV2U9bmV3IFNldCxhdD1uZXcgU2V0O2ZvcihsZXQgQW49MDtBbjx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVu'@; put 'dHMubGVuZ3RoO0FuKyspe2NvbnN0IEhyPXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1tBbl0sdGk9SHJbXzRdO3RpJiZ0aS5zZXRGb3JSZW1vdmFsJiYoSGUucHVzaChIciksV2UuYWRkKEhyKSx0aS5oYXNBbmltYXRpb24/dGhpcy5kcml2ZXIucXVlcnkoSHIsIi5uZy1zdGFyLWluc2Vy'@; put 'dGVkIiwhMCkuZm9yRWFjaChmcj0+V2UuYWRkKGZyKSk6YXQuYWRkKEhyKSl9Y29uc3QgQ3Q9bmV3IE1hcCxBdD1HVGUoWixBcnJheS5mcm9tKFdlKSk7QXQuZm9yRWFjaCgoQW4sSHIpPT57Y29uc3QgdGk9VmFlK01lKys7Q3Quc2V0KEhyLHRpKSxBbi5mb3JFYWNoKGZyPT5vbShmcix0aSkp'@; put 'fSksZS5wdXNoKCgpPT57ZWUuZm9yRWFjaCgoQW4sSHIpPT57Y29uc3QgdGk9dmUuZ2V0KEhyKTtBbi5mb3JFYWNoKGZyPT5MTShmcix0aSkpfSksQXQuZm9yRWFjaCgoQW4sSHIpPT57Y29uc3QgdGk9Q3QuZ2V0KEhyKTtBbi5mb3JFYWNoKGZyPT5MTShmcix0aSkpfSksSGUuZm9yRWFjaChB'@; put 'bj0+e3RoaXMucHJvY2Vzc0xlYXZlTm9kZShBbil9KX0pO2NvbnN0IEt0PVtdLHF0PVtdO2ZvcihsZXQgQW49dGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgtMTtBbj49MDtBbi0tKXRoaXMuX25hbWVzcGFjZUxpc3RbQW5dLmRyYWluUXVldWVkVHJhbnNpdGlvbnModCkuZm9yRWFjaCh0aT0+'@; put 'e2NvbnN0IGZyPXRpLnBsYXllcixlaT10aS5lbGVtZW50O2lmKEt0LnB1c2goZnIpLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpe2NvbnN0IGthPWVpW180XTtpZihrYSYma2Euc2V0Rm9yTW92ZSl7aWYoa2EucHJldmlvdXNUcmlnZ2Vyc1ZhbHVlcyYma2EucHJldmlvdXNU'@; put 'cmlnZ2Vyc1ZhbHVlcy5oYXModGkudHJpZ2dlck5hbWUpKXtjb25zdCBhbz1rYS5wcmV2aW91c1RyaWdnZXJzVmFsdWVzLmdldCh0aS50cmlnZ2VyTmFtZSksdXQ9dGhpcy5zdGF0ZXNCeUVsZW1lbnQuZ2V0KHRpLmVsZW1lbnQpO2lmKHV0JiZ1dC5oYXModGkudHJpZ2dlck5hbWUpKXtjb25z'@; put 'dCBIdD11dC5nZXQodGkudHJpZ2dlck5hbWUpO0h0LnZhbHVlPWFvLHV0LnNldCh0aS50cmlnZ2VyTmFtZSxIdCl9fXJldHVybiB2b2lkIGZyLmRlc3Ryb3koKX19Y29uc3QgUG89IU98fCF0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQoTyxlaSksSG89Q3QuZ2V0KGVpKSx4aT12ZS5nZXQo'@; put 'ZWkpLFRvPXRoaXMuX2J1aWxkSW5zdHJ1Y3Rpb24odGkscix4aSxIbyxQbyk7aWYoVG8uZXJyb3JzJiZUby5lcnJvcnMubGVuZ3RoKXJldHVybiB2b2lkIHF0LnB1c2goVG8pO2lmKFBvKXJldHVybiBmci5vblN0YXJ0KCgpPT5vdyhlaSxUby5mcm9tU3R5bGVzKSksZnIub25EZXN0cm95KCgp'@; put 'PT4kNShlaSxUby50b1N0eWxlcykpLHZvaWQgaS5wdXNoKGZyKTtpZih0aS5pc0ZhbGxiYWNrVHJhbnNpdGlvbilyZXR1cm4gZnIub25TdGFydCgoKT0+b3coZWksVG8uZnJvbVN0eWxlcykpLGZyLm9uRGVzdHJveSgoKT0+JDUoZWksVG8udG9TdHlsZXMpKSx2b2lkIGkucHVzaChmcik7Y29u'@; put 'c3Qgd3M9W107VG8udGltZWxpbmVzLmZvckVhY2goa2E9PntrYS5zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT0hMCx0aGlzLmRpc2FibGVkTm9kZXMuaGFzKGthLmVsZW1lbnQpfHx3cy5wdXNoKGthKX0pLFRvLnRpbWVsaW5lcz13cyxyLmFwcGVuZChlaSxUby50aW1lbGluZXMpLGEucHVzaCh7'@; put 'aW5zdHJ1Y3Rpb246VG8scGxheWVyOmZyLGVsZW1lbnQ6ZWl9KSxUby5xdWVyaWVkRWxlbWVudHMuZm9yRWFjaChrYT0+SHAobCxrYSxbXSkucHVzaChmcikpLFRvLnByZVN0eWxlUHJvcHMuZm9yRWFjaCgoa2EsYW8pPT57aWYoa2Euc2l6ZSl7bGV0IHV0PXUuZ2V0KGFvKTt1dHx8dS5zZXQo'@; put 'YW8sdXQ9bmV3IFNldCksa2EuZm9yRWFjaCgoSHQsZG4pPT51dC5hZGQoZG4pKX19KSxUby5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKChrYSxhbyk9PntsZXQgdXQ9Zy5nZXQoYW8pO3V0fHxnLnNldChhbyx1dD1uZXcgU2V0KSxrYS5mb3JFYWNoKChIdCxkbik9PnV0LmFkZChkbikpfSl9KTtp'@; put 'ZihxdC5sZW5ndGgpe2NvbnN0IEFuPVtdO3F0LmZvckVhY2goSHI9PntBbi5wdXNoKGZ1bmN0aW9uIGNDdCgpe3JldHVybiBuZXcgV24oMzUwNSwhMSl9KCkpfSksS3QuZm9yRWFjaChIcj0+SHIuZGVzdHJveSgpKSx0aGlzLnJlcG9ydEVycm9yKEFuKX1jb25zdCBnbj1uZXcgTWFwLFRuPW5l'@; put 'dyBNYXA7YS5mb3JFYWNoKEFuPT57Y29uc3QgSHI9QW4uZWxlbWVudDtyLmhhcyhIcikmJihUbi5zZXQoSHIsSHIpLHRoaXMuX2JlZm9yZUFuaW1hdGlvbkJ1aWxkKEFuLnBsYXllci5uYW1lc3BhY2VJZCxBbi5pbnN0cnVjdGlvbixnbikpfSksaS5mb3JFYWNoKEFuPT57Y29uc3QgSHI9QW4u'@; put 'ZWxlbWVudDt0aGlzLl9nZXRQcmV2aW91c1BsYXllcnMoSHIsITEsQW4ubmFtZXNwYWNlSWQsQW4udHJpZ2dlck5hbWUsbnVsbCkuZm9yRWFjaChmcj0+e0hwKGduLEhyLFtdKS5wdXNoKGZyKSxmci5kZXN0cm95KCl9KX0pO2NvbnN0IENuPUhlLmZpbHRlcihBbj0+cVRlKEFuLHUsZykpLHFy'@; put 'PW5ldyBNYXA7WlRlKHFyLHRoaXMuZHJpdmVyLGF0LGcsdDcpLmZvckVhY2goQW49PntxVGUoQW4sdSxnKSYmQ24ucHVzaChBbil9KTtjb25zdCBUcj1uZXcgTWFwO2VlLmZvckVhY2goKEFuLEhyKT0+e1pUZShUcix0aGlzLmRyaXZlcixuZXcgU2V0KEFuKSx1LCIhIil9KSxDbi5mb3JFYWNo'@; put 'KEFuPT57Y29uc3QgSHI9cXIuZ2V0KEFuKSx0aT1Uci5nZXQoQW4pO3FyLnNldChBbixuZXcgTWFwKFsuLi5Icj8uZW50cmllcygpPz9bXSwuLi50aT8uZW50cmllcygpPz9bXV0pKX0pO2NvbnN0IHJpPVtdLGZuPVtdLHlyPXt9O2EuZm9yRWFjaChBbj0+e2NvbnN0e2VsZW1lbnQ6SHIscGxh'@; put 'eWVyOnRpLGluc3RydWN0aW9uOmZyfT1BbjtpZihyLmhhcyhIcikpe2lmKEUuaGFzKEhyKSlyZXR1cm4gdGkub25EZXN0cm95KCgpPT4kNShIcixmci50b1N0eWxlcykpLHRpLmRpc2FibGVkPSEwLHRpLm92ZXJyaWRlVG90YWxUaW1lKGZyLnRvdGFsVGltZSksdm9pZCBpLnB1c2godGkpO2xl'@; put 'dCBlaT15cjtpZihUbi5zaXplPjEpe2xldCBIbz1Icjtjb25zdCB4aT1bXTtmb3IoO0hvPUhvLnBhcmVudE5vZGU7KXtjb25zdCBUbz1Ubi5nZXQoSG8pO2lmKFRvKXtlaT1UbzticmVha314aS5wdXNoKEhvKX14aS5mb3JFYWNoKFRvPT5Ubi5zZXQoVG8sZWkpKX1jb25zdCBQbz10aGlzLl9i'@; put 'dWlsZEFuaW1hdGlvbih0aS5uYW1lc3BhY2VJZCxmcixnbixvLFRyLHFyKTtpZih0aS5zZXRSZWFsUGxheWVyKFBvKSxlaT09PXlyKXJpLnB1c2godGkpO2Vsc2V7Y29uc3QgSG89dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldChlaSk7SG8mJkhvLmxlbmd0aCYmKHRpLnBhcmVudFBsYXllcj1Q'@; put 'dihIbykpLGkucHVzaCh0aSl9fWVsc2Ugb3coSHIsZnIuZnJvbVN0eWxlcyksdGkub25EZXN0cm95KCgpPT4kNShIcixmci50b1N0eWxlcykpLGZuLnB1c2godGkpLEUuaGFzKEhyKSYmaS5wdXNoKHRpKX0pLGZuLmZvckVhY2goQW49Pntjb25zdCBIcj1vLmdldChBbi5lbGVtZW50KTtpZihI'@; put 'ciYmSHIubGVuZ3RoKXtjb25zdCB0aT1QdihIcik7QW4uc2V0UmVhbFBsYXllcih0aSl9fSksaS5mb3JFYWNoKEFuPT57QW4ucGFyZW50UGxheWVyP0FuLnN5bmNQbGF5ZXJFdmVudHMoQW4ucGFyZW50UGxheWVyKTpBbi5kZXN0cm95KCl9KTtmb3IobGV0IEFuPTA7QW48SGUubGVuZ3RoO0Fu'@; put 'Kyspe2NvbnN0IEhyPUhlW0FuXSx0aT1IcltfNF07aWYoTE0oSHIsVmFlKSx0aSYmdGkuaGFzQW5pbWF0aW9uKWNvbnRpbnVlO2xldCBmcj1bXTtpZihsLnNpemUpe2xldCBQbz1sLmdldChIcik7UG8mJlBvLmxlbmd0aCYmZnIucHVzaCguLi5Qbyk7bGV0IEhvPXRoaXMuZHJpdmVyLnF1ZXJ5'@; put 'KEhyLEJhZSwhMCk7Zm9yKGxldCB4aT0wO3hpPEhvLmxlbmd0aDt4aSsrKXtsZXQgVG89bC5nZXQoSG9beGldKTtUbyYmVG8ubGVuZ3RoJiZmci5wdXNoKC4uLlRvKX19Y29uc3QgZWk9ZnIuZmlsdGVyKFBvPT4hUG8uZGVzdHJveWVkKTtlaS5sZW5ndGg/aFN0KHRoaXMsSHIsZWkpOnRoaXMu'@; put 'cHJvY2Vzc0xlYXZlTm9kZShIcil9cmV0dXJuIEhlLmxlbmd0aD0wLHJpLmZvckVhY2goQW49Pnt0aGlzLnBsYXllcnMucHVzaChBbiksQW4ub25Eb25lKCgpPT57QW4uZGVzdHJveSgpO2NvbnN0IEhyPXRoaXMucGxheWVycy5pbmRleE9mKEFuKTt0aGlzLnBsYXllcnMuc3BsaWNlKEhyLDEp'@; put 'fSksQW4ucGxheSgpfSkscml9YWZ0ZXJGbHVzaChlKXt0aGlzLl9mbHVzaEZucy5wdXNoKGUpfWFmdGVyRmx1c2hBbmltYXRpb25zRG9uZShlKXt0aGlzLl93aGVuUXVpZXRGbnMucHVzaChlKX1fZ2V0UHJldmlvdXNQbGF5ZXJzKGUsdCxyLGksbyl7bGV0IGE9W107aWYodCl7Y29uc3QgbD10'@; put 'aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldChlKTtsJiYoYT1sKX1lbHNle2NvbnN0IGw9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldChlKTtpZihsKXtjb25zdCB1PSFvfHxvPT1RRDtsLmZvckVhY2goZz0+e2cucXVldWVkfHwhdSYmZy50cmlnZ2VyTmFtZSE9aXx8YS5wdXNoKGcp'@; put 'fSl9fXJldHVybihyfHxpKSYmKGE9YS5maWx0ZXIobD0+IShyJiZyIT1sLm5hbWVzcGFjZUlkfHxpJiZpIT1sLnRyaWdnZXJOYW1lKSkpLGF9X2JlZm9yZUFuaW1hdGlvbkJ1aWxkKGUsdCxyKXtjb25zdCBvPXQuZWxlbWVudCxhPXQuaXNSZW1vdmFsVHJhbnNpdGlvbj92b2lkIDA6ZSxsPXQu'@; put 'aXNSZW1vdmFsVHJhbnNpdGlvbj92b2lkIDA6dC50cmlnZ2VyTmFtZTtmb3IoY29uc3QgdSBvZiB0LnRpbWVsaW5lcyl7Y29uc3QgZz11LmVsZW1lbnQsRT1nIT09byxPPUhwKHIsZyxbXSk7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKGcsRSxhLGwsdC50b1N0YXRlKS5mb3JFYWNoKGVlPT57'@; put 'Y29uc3QgdmU9ZWUuZ2V0UmVhbFBsYXllcigpO3ZlLmJlZm9yZURlc3Ryb3kmJnZlLmJlZm9yZURlc3Ryb3koKSxlZS5kZXN0cm95KCksTy5wdXNoKGVlKX0pfW93KG8sdC5mcm9tU3R5bGVzKX1fYnVpbGRBbmltYXRpb24oZSx0LHIsaSxvLGEpe2NvbnN0IGw9dC50cmlnZ2VyTmFtZSx1PXQu'@; put 'ZWxlbWVudCxnPVtdLEU9bmV3IFNldCxPPW5ldyBTZXQsWj10LnRpbWVsaW5lcy5tYXAodmU9Pntjb25zdCBNZT12ZS5lbGVtZW50O0UuYWRkKE1lKTtjb25zdCBIZT1NZVtfNF07aWYoSGUmJkhlLnJlbW92ZWRCZWZvcmVRdWVyaWVkKXJldHVybiBuZXcgZkQodmUuZHVyYXRpb24sdmUuZGVs'@; put 'YXkpO2NvbnN0IFdlPU1lIT09dSxhdD1mdW5jdGlvbiBmU3Qobil7Y29uc3QgZT1bXTtyZXR1cm4gJFRlKG4sZSksZX0oKHIuZ2V0KE1lKXx8b1N0KS5tYXAoZ249PmduLmdldFJlYWxQbGF5ZXIoKSkpLmZpbHRlcihnbj0+ISFnbi5lbGVtZW50JiZnbi5lbGVtZW50PT09TWUpLEN0PW8uZ2V0'@; put 'KE1lKSxBdD1hLmdldChNZSksS3Q9RVRlKHRoaXMuX25vcm1hbGl6ZXIsdmUua2V5ZnJhbWVzLEN0LEF0KSxxdD10aGlzLl9idWlsZFBsYXllcih2ZSxLdCxhdCk7aWYodmUuc3ViVGltZWxpbmUmJmkmJk8uYWRkKE1lKSxXZSl7Y29uc3QgZ249bmV3IGlzZShlLGwsTWUpO2duLnNldFJlYWxQ'@; put 'bGF5ZXIocXQpLGcucHVzaChnbil9cmV0dXJuIHF0fSk7Zy5mb3JFYWNoKHZlPT57SHAodGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudCx2ZS5lbGVtZW50LFtdKS5wdXNoKHZlKSx2ZS5vbkRvbmUoKCk9PmZ1bmN0aW9uIGNTdChuLGUsdCl7bGV0IHI9bi5nZXQoZSk7aWYocil7aWYoci5s'@; put 'ZW5ndGgpe2NvbnN0IGk9ci5pbmRleE9mKHQpO3Iuc3BsaWNlKGksMSl9MD09ci5sZW5ndGgmJm4uZGVsZXRlKGUpfXJldHVybiByfSh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LHZlLmVsZW1lbnQsdmUpKX0pLEUuZm9yRWFjaCh2ZT0+b20odmUsSVRlKSk7Y29uc3QgZWU9UHYoWik7'@; put 'cmV0dXJuIGVlLm9uRGVzdHJveSgoKT0+e0UuZm9yRWFjaCh2ZT0+TE0odmUsSVRlKSksJDUodSx0LnRvU3R5bGVzKX0pLE8uZm9yRWFjaCh2ZT0+e0hwKGksdmUsW10pLnB1c2goZWUpfSksZWV9X2J1aWxkUGxheWVyKGUsdCxyKXtyZXR1cm4gdC5sZW5ndGg+MD90aGlzLmRyaXZlci5hbmlt'@; put 'YXRlKGUuZWxlbWVudCx0LGUuZHVyYXRpb24sZS5kZWxheSxlLmVhc2luZyxyKTpuZXcgZkQoZS5kdXJhdGlvbixlLmRlbGF5KX19Y2xhc3MgaXNle25hbWVzcGFjZUlkO3RyaWdnZXJOYW1lO2VsZW1lbnQ7X3BsYXllcj1uZXcgZkQ7X2NvbnRhaW5zUmVhbFBsYXllcj0hMTtfcXVldWVkQ2Fs'@; put 'bGJhY2tzPW5ldyBNYXA7ZGVzdHJveWVkPSExO3BhcmVudFBsYXllcj1udWxsO21hcmtlZEZvckRlc3Ryb3k9ITE7ZGlzYWJsZWQ9ITE7cXVldWVkPSEwO3RvdGFsVGltZT0wO2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLm5hbWVzcGFjZUlkPWUsdGhpcy50cmlnZ2VyTmFtZT10LHRoaXMuZWxl'@; put 'bWVudD1yfXNldFJlYWxQbGF5ZXIoZSl7dGhpcy5fY29udGFpbnNSZWFsUGxheWVyfHwodGhpcy5fcGxheWVyPWUsdGhpcy5fcXVldWVkQ2FsbGJhY2tzLmZvckVhY2goKHQscik9Pnt0LmZvckVhY2goaT0+TmFlKGUscix2b2lkIDAsaSkpfSksdGhpcy5fcXVldWVkQ2FsbGJhY2tzLmNsZWFy'@; put 'KCksdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSEwLHRoaXMub3ZlcnJpZGVUb3RhbFRpbWUoZS50b3RhbFRpbWUpLHRoaXMucXVldWVkPSExKX1nZXRSZWFsUGxheWVyKCl7cmV0dXJuIHRoaXMuX3BsYXllcn1vdmVycmlkZVRvdGFsVGltZShlKXt0aGlzLnRvdGFsVGltZT1lfXN5bmNQbGF5'@; put 'ZXJFdmVudHMoZSl7Y29uc3QgdD10aGlzLl9wbGF5ZXI7dC50cmlnZ2VyQ2FsbGJhY2smJmUub25TdGFydCgoKT0+dC50cmlnZ2VyQ2FsbGJhY2soInN0YXJ0IikpLGUub25Eb25lKCgpPT50aGlzLmZpbmlzaCgpKSxlLm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KCkpfV9xdWV1ZUV2ZW50'@; put 'KGUsdCl7SHAodGhpcy5fcXVldWVkQ2FsbGJhY2tzLGUsW10pLnB1c2godCl9b25Eb25lKGUpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkb25lIixlKSx0aGlzLl9wbGF5ZXIub25Eb25lKGUpfW9uU3RhcnQoZSl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoInN0YXJ0'@; put 'IixlKSx0aGlzLl9wbGF5ZXIub25TdGFydChlKX1vbkRlc3Ryb3koZSl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRlc3Ryb3kiLGUpLHRoaXMuX3BsYXllci5vbkRlc3Ryb3koZSl9aW5pdCgpe3RoaXMuX3BsYXllci5pbml0KCl9aGFzU3RhcnRlZCgpe3JldHVybiF0aGlzLnF1'@; put 'ZXVlZCYmdGhpcy5fcGxheWVyLmhhc1N0YXJ0ZWQoKX1wbGF5KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGxheSgpfXBhdXNlKCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGF1c2UoKX1yZXN0YXJ0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzdGFydCgpfWZp'@; put 'bmlzaCgpe3RoaXMuX3BsYXllci5maW5pc2goKX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5fcGxheWVyLmRlc3Ryb3koKX1yZXNldCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc2V0KCl9c2V0UG9zaXRpb24oZSl7dGhpcy5xdWV1ZWR8fHRoaXMuX3BsYXllci5z'@; put 'ZXRQb3NpdGlvbihlKX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnF1ZXVlZD8wOnRoaXMuX3BsYXllci5nZXRQb3NpdGlvbigpfXRyaWdnZXJDYWxsYmFjayhlKXtjb25zdCB0PXRoaXMuX3BsYXllcjt0LnRyaWdnZXJDYWxsYmFjayYmdC50cmlnZ2VyQ2FsbGJhY2soZSl9fWZ1bmN0aW9u'@; put 'IEFXKG4pe3JldHVybiBuJiYxPT09bi5ub2RlVHlwZX1mdW5jdGlvbiBZVGUobixlKXtjb25zdCB0PW4uc3R5bGUuZGlzcGxheTtyZXR1cm4gbi5zdHlsZS5kaXNwbGF5PWU/PyJub25lIix0fWZ1bmN0aW9uIFpUZShuLGUsdCxyLGkpe2NvbnN0IG89W107dC5mb3JFYWNoKHU9Pm8ucHVzaChZ'@; put 'VGUodSkpKTtjb25zdCBhPVtdO3IuZm9yRWFjaCgodSxnKT0+e2NvbnN0IEU9bmV3IE1hcDt1LmZvckVhY2goTz0+e2NvbnN0IFo9ZS5jb21wdXRlU3R5bGUoZyxPLGkpO0Uuc2V0KE8sWiksKCFafHwwPT1aLmxlbmd0aCkmJihnW180XT1hU3QsYS5wdXNoKGcpKX0pLG4uc2V0KGcsRSl9KTts'@; put 'ZXQgbD0wO3JldHVybiB0LmZvckVhY2godT0+WVRlKHUsb1tsKytdKSksYX1mdW5jdGlvbiBHVGUobixlKXtjb25zdCB0PW5ldyBNYXA7aWYobi5mb3JFYWNoKGw9PnQuc2V0KGwsW10pKSwwPT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBpPW5ldyBTZXQoZSksbz1uZXcgTWFwO2Z1bmN0aW9u'@; put 'IGEobCl7aWYoIWwpcmV0dXJuIDE7bGV0IHU9by5nZXQobCk7aWYodSlyZXR1cm4gdTtjb25zdCBnPWwucGFyZW50Tm9kZTtyZXR1cm4gdT10LmhhcyhnKT9nOmkuaGFzKGcpPzE6YShnKSxvLnNldChsLHUpLHV9cmV0dXJuIGUuZm9yRWFjaChsPT57Y29uc3QgdT1hKGwpOzEhPT11JiZ0Lmdl'@; put 'dCh1KS5wdXNoKGwpfSksdH1mdW5jdGlvbiBvbShuLGUpe24uY2xhc3NMaXN0Py5hZGQoZSl9ZnVuY3Rpb24gTE0obixlKXtuLmNsYXNzTGlzdD8ucmVtb3ZlKGUpfWZ1bmN0aW9uIGhTdChuLGUsdCl7UHYodCkub25Eb25lKCgpPT5uLnByb2Nlc3NMZWF2ZU5vZGUoZSkpfWZ1bmN0aW9uICRU'@; put 'ZShuLGUpe2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCByPW5bdF07ciBpbnN0YW5jZW9mIEJTZT8kVGUoci5wbGF5ZXJzLGUpOmUucHVzaChyKX19ZnVuY3Rpb24gcVRlKG4sZSx0KXtjb25zdCByPXQuZ2V0KG4pO2lmKCFyKXJldHVybiExO2xldCBpPWUuZ2V0KG4pO3JldHVy'@; put 'biBpP3IuZm9yRWFjaChvPT5pLmFkZChvKSk6ZS5zZXQobixyKSx0LmRlbGV0ZShuKSwhMH1jbGFzcyBKRHtfZHJpdmVyO19ub3JtYWxpemVyO190cmFuc2l0aW9uRW5naW5lO190aW1lbGluZUVuZ2luZTtfdHJpZ2dlckNhY2hlPXt9O29uUmVtb3ZhbENvbXBsZXRlPShlLHQpPT57fTtjb25z'@; put 'dHJ1Y3RvcihlLHQscil7dGhpcy5fZHJpdmVyPXQsdGhpcy5fbm9ybWFsaXplcj1yLHRoaXMuX3RyYW5zaXRpb25FbmdpbmU9bmV3IGxTdChlLmJvZHksdCxyKSx0aGlzLl90aW1lbGluZUVuZ2luZT1uZXcgZVN0KGUuYm9keSx0LHIpLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFs'@; put 'Q29tcGxldGU9KGksbyk9PnRoaXMub25SZW1vdmFsQ29tcGxldGUoaSxvKX1yZWdpc3RlclRyaWdnZXIoZSx0LHIsaSxvKXtjb25zdCBhPWUrIi0iK2k7bGV0IGw9dGhpcy5fdHJpZ2dlckNhY2hlW2FdO2lmKCFsKXtjb25zdCB1PVtdLEU9cWFlKHRoaXMuX2RyaXZlcixvLHUsW10pO2lmKHUu'@; put 'bGVuZ3RoKXRocm93IGZ1bmN0aW9uIFF3dCgpe3JldHVybiBuZXcgV24oMzQwNCwhMSl9KCk7bD1mdW5jdGlvbiBLQ3QobixlLHQpe3JldHVybiBuZXcgWEN0KG4sZSx0KX0oaSxFLHRoaXMuX25vcm1hbGl6ZXIpLHRoaXMuX3RyaWdnZXJDYWNoZVthXT1sfXRoaXMuX3RyYW5zaXRpb25Fbmdp'@; put 'bmUucmVnaXN0ZXJUcmlnZ2VyKHQsaSxsKX1yZWdpc3RlcihlLHQpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVnaXN0ZXIoZSx0KX1kZXN0cm95KGUsdCl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5kZXN0cm95KGUsdCl9b25JbnNlcnQoZSx0LHIsaSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2lu'@; put 'ZS5pbnNlcnROb2RlKGUsdCxyLGkpfW9uUmVtb3ZlKGUsdCxyKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlbW92ZU5vZGUoZSx0LHIpfWRpc2FibGVBbmltYXRpb25zKGUsdCl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5tYXJrRWxlbWVudEFzRGlzYWJsZWQoZSx0KX1wcm9jZXNzKGUsdCxy'@; put 'LGkpe2lmKCJAIj09ci5jaGFyQXQoMCkpe2NvbnN0W28sYV09TVRlKHIpO3RoaXMuX3RpbWVsaW5lRW5naW5lLmNvbW1hbmQobyx0LGEsaSl9ZWxzZSB0aGlzLl90cmFuc2l0aW9uRW5naW5lLnRyaWdnZXIoZSx0LHIsaSl9bGlzdGVuKGUsdCxyLGksbyl7aWYoIkAiPT1yLmNoYXJBdCgwKSl7'@; put 'Y29uc3RbYSxsXT1NVGUocik7cmV0dXJuIHRoaXMuX3RpbWVsaW5lRW5naW5lLmxpc3RlbihhLHQsbCxvKX1yZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5saXN0ZW4oZSx0LHIsaSxvKX1mbHVzaChlPS0xKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmZsdXNoKGUpfWdldCBwbGF5ZXJz'@; put 'KCl7cmV0dXJuWy4uLnRoaXMuX3RyYW5zaXRpb25FbmdpbmUucGxheWVycywuLi50aGlzLl90aW1lbGluZUVuZ2luZS5wbGF5ZXJzXX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9YWZ0ZXJGbHVzaEFuaW1hdGlv'@; put 'bnNEb25lKGUpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKGUpfX1sZXQgbVN0PSgoKT0+e2NsYXNzIG57X2VsZW1lbnQ7X3N0YXJ0U3R5bGVzO19lbmRTdHlsZXM7c3RhdGljIGluaXRpYWxTdHlsZXNCeUVsZW1lbnQ9bmV3IFdlYWtNYXA7X3N0YXRl'@; put 'PTA7X2luaXRpYWxTdHlsZXM7Y29uc3RydWN0b3IodCxyLGkpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9zdGFydFN0eWxlcz1yLHRoaXMuX2VuZFN0eWxlcz1pO2xldCBvPW4uaW5pdGlhbFN0eWxlc0J5RWxlbWVudC5nZXQodCk7b3x8bi5pbml0aWFsU3R5bGVzQnlFbGVtZW50LnNldCh0LG89'@; put 'bmV3IE1hcCksdGhpcy5faW5pdGlhbFN0eWxlcz1vfXN0YXJ0KCl7dGhpcy5fc3RhdGU8MSYmKHRoaXMuX3N0YXJ0U3R5bGVzJiYkNSh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzLHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTEpfWZpbmlzaCgpe3RoaXMuc3RhcnQo'@; put 'KSx0aGlzLl9zdGF0ZTwyJiYoJDUodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXMmJigkNSh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX3N0YXRlPTEpfWRlc3Ryb3koKXt0aGlzLmZpbmlz'@; put 'aCgpLHRoaXMuX3N0YXRlPDMmJihuLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuZGVsZXRlKHRoaXMuX2VsZW1lbnQpLHRoaXMuX3N0YXJ0U3R5bGVzJiYob3codGhpcy5fZWxlbWVudCx0aGlzLl9zdGFydFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX2VuZFN0eWxlcyYmKG93'@; put 'KHRoaXMuX2VsZW1lbnQsdGhpcy5fZW5kU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksJDUodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9zdGF0ZT0zKX19cmV0dXJuIG59KSgpO2Z1bmN0aW9uIG9zZShuKXtsZXQgZT1udWxsO3JldHVybiBuLmZvckVhY2go'@; put 'KHQscik9PnsoZnVuY3Rpb24gdlN0KG4pe3JldHVybiJkaXNwbGF5Ij09PW58fCJwb3NpdGlvbiI9PT1ufSkocikmJihlPWV8fG5ldyBNYXAsZS5zZXQocix0KSl9KSxlfWNsYXNzIEtUZXtlbGVtZW50O2tleWZyYW1lcztvcHRpb25zO19zcGVjaWFsU3R5bGVzO19vbkRvbmVGbnM9W107X29u'@; put 'U3RhcnRGbnM9W107X29uRGVzdHJveUZucz1bXTtfZHVyYXRpb247X2RlbGF5O19pbml0aWFsaXplZD0hMTtfZmluaXNoZWQ9ITE7X3N0YXJ0ZWQ9ITE7X2Rlc3Ryb3llZD0hMTtfZmluYWxLZXlmcmFtZTtfb3JpZ2luYWxPbkRvbmVGbnM9W107X29yaWdpbmFsT25TdGFydEZucz1bXTtkb21Q'@; put 'bGF5ZXI9bnVsbDt0aW1lPTA7cGFyZW50UGxheWVyPW51bGw7Y3VycmVudFNuYXBzaG90PW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0LHIsaSl7dGhpcy5lbGVtZW50PWUsdGhpcy5rZXlmcmFtZXM9dCx0aGlzLm9wdGlvbnM9cix0aGlzLl9zcGVjaWFsU3R5bGVzPWksdGhpcy5fZHVyYXRpb249'@; put 'ci5kdXJhdGlvbix0aGlzLl9kZWxheT1yLmRlbGF5fHwwLHRoaXMudGltZT10aGlzLl9kdXJhdGlvbit0aGlzLl9kZWxheX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKGU9PmUoKSksdGhpcy5fb25Eb25lRm5z'@; put 'PVtdKX1pbml0KCl7dGhpcy5fYnVpbGRQbGF5ZXIoKSYmdGhpcy5fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl9X2J1aWxkUGxheWVyKCl7aWYodGhpcy5faW5pdGlhbGl6ZWQpcmV0dXJuIHRoaXMuZG9tUGxheWVyO3RoaXMuX2luaXRpYWxpemVkPSEwO2NvbnN0IGU9dGhpcy5rZXlmcmFt'@; put 'ZXMsdD10aGlzLl90cmlnZ2VyV2ViQW5pbWF0aW9uKHRoaXMuZWxlbWVudCxlLHRoaXMub3B0aW9ucyk7aWYoIXQpcmV0dXJuIHRoaXMuX29uRmluaXNoKCksbnVsbDt0aGlzLmRvbVBsYXllcj10LHRoaXMuX2ZpbmFsS2V5ZnJhbWU9ZS5sZW5ndGg/ZVtlLmxlbmd0aC0xXTpuZXcgTWFwO2Nv'@; put 'bnN0IHI9KCk9PnRoaXMuX29uRmluaXNoKCk7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiZmluaXNoIixyKSx0aGlzLm9uRGVzdHJveSgoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZmluaXNoIixyKX0pLHR9X3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpe3RoaXMuX2RlbGF5P3Ro'@; put 'aXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKTp0aGlzLmRvbVBsYXllcj8ucGF1c2UoKX1fY29udmVydEtleWZyYW1lc1RvT2JqZWN0KGUpe2NvbnN0IHQ9W107cmV0dXJuIGUuZm9yRWFjaChyPT57dC5wdXNoKE9iamVjdC5mcm9tRW50cmllcyhyKSl9KSx0fV90cmlnZ2VyV2ViQW5pbWF0aW9u'@; put 'KGUsdCxyKXtjb25zdCBpPXRoaXMuX2NvbnZlcnRLZXlmcmFtZXNUb09iamVjdCh0KTt0cnl7cmV0dXJuIGUuYW5pbWF0ZShpLHIpfWNhdGNoe3JldHVybiBudWxsfX1vblN0YXJ0KGUpe3RoaXMuX29yaWdpbmFsT25TdGFydEZucy5wdXNoKGUpLHRoaXMuX29uU3RhcnRGbnMucHVzaChlKX1v'@; put 'bkRvbmUoZSl7dGhpcy5fb3JpZ2luYWxPbkRvbmVGbnMucHVzaChlKSx0aGlzLl9vbkRvbmVGbnMucHVzaChlKX1vbkRlc3Ryb3koZSl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2goZSl9cGxheSgpe2NvbnN0IGU9dGhpcy5fYnVpbGRQbGF5ZXIoKTtlJiYodGhpcy5oYXNTdGFydGVkKCl8fCh0'@; put 'aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2godD0+dCgpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITAsdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5zdGFydCgpKSxlLnBsYXkoKSl9cGF1c2UoKXt0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllcj8u'@; put 'cGF1c2UoKX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllciYmKHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZmluaXNoKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLmRvbVBsYXllci5maW5pc2goKSl9cmVzZXQoKXt0aGlzLl9yZXNldERvbVBsYXll'@; put 'clN0YXRlKCksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fb25TdGFydEZucz10aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMsdGhpcy5fb25Eb25lRm5zPXRoaXMuX29yaWdpbmFsT25Eb25lRm5zfV9yZXNldERvbVBsYXllclN0YXRl'@; put 'KCl7dGhpcy5kb21QbGF5ZXI/LmNhbmNlbCgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fcmVzZXREb21QbGF5ZXJT'@; put 'dGF0ZSgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goZT0+ZSgpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXNldFBvc2l0aW9uKGUpe3RoaXMuZG9tUGxheWVyfHx0'@; put 'aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllciYmKHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lPWUqdGhpcy50aW1lKX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLmRvbVBsYXllcj8rKHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lPz8wKS90aGlzLnRpbWU6dGhpcy5faW5pdGlhbGl6ZWQ/'@; put 'MTowfWdldCB0b3RhbFRpbWUoKXtyZXR1cm4gdGhpcy5fZGVsYXkrdGhpcy5fZHVyYXRpb259YmVmb3JlRGVzdHJveSgpe2NvbnN0IGU9bmV3IE1hcDt0aGlzLmhhc1N0YXJ0ZWQoKSYmdGhpcy5fZmluYWxLZXlmcmFtZS5mb3JFYWNoKChyLGkpPT57Im9mZnNldCIhPT1pJiZlLnNldChpLHRo'@; put 'aXMuX2ZpbmlzaGVkP3I6V2FlKHRoaXMuZWxlbWVudCxpKSl9KSx0aGlzLmN1cnJlbnRTbmFwc2hvdD1lfXRyaWdnZXJDYWxsYmFjayhlKXtjb25zdCB0PSJzdGFydCI9PT1lP3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO3QuZm9yRWFjaChyPT5yKCkpLHQubGVuZ3RoPTB9fWNs'@; put 'YXNzIFhUZXt2YWxpZGF0ZVN0eWxlUHJvcGVydHkoZSl7cmV0dXJuITB9dmFsaWRhdGVBbmltYXRhYmxlU3R5bGVQcm9wZXJ0eShlKXtyZXR1cm4hMH1jb250YWluc0VsZW1lbnQoZSx0KXtyZXR1cm4geFRlKGUsdCl9Z2V0UGFyZW50RWxlbWVudChlKXtyZXR1cm4gSGFlKGUpfXF1ZXJ5KGUs'@; put 'dCxyKXtyZXR1cm4gQVRlKGUsdCxyKX1jb21wdXRlU3R5bGUoZSx0LHIpe3JldHVybiBXYWUoZSx0KX1hbmltYXRlKGUsdCxyLGksbyxhPVtdKXtjb25zdCB1PXtkdXJhdGlvbjpyLGRlbGF5OmksZmlsbDowPT1pPyJib3RoIjoiZm9yd2FyZHMifTtvJiYodS5lYXNpbmc9byk7Y29uc3QgZz1u'@; put 'ZXcgTWFwLEU9YS5maWx0ZXIoZWU9PmVlIGluc3RhbmNlb2YgS1RlKTsoZnVuY3Rpb24gQ0N0KG4sZSl7cmV0dXJuIDA9PT1ufHwwPT09ZX0pKHIsaSkmJkUuZm9yRWFjaChlZT0+e2VlLmN1cnJlbnRTbmFwc2hvdC5mb3JFYWNoKCh2ZSxNZSk9Pmcuc2V0KE1lLHZlKSl9KTtsZXQgTz1mdW5j'@; put 'dGlvbiB5Q3Qobil7cmV0dXJuIG4ubGVuZ3RoP25bMF1pbnN0YW5jZW9mIE1hcD9uOm4ubWFwKGU9Pm5ldyBNYXAoT2JqZWN0LmVudHJpZXMoZSkpKTpbXX0odCkubWFwKGVlPT5uZXcgTWFwKGVlKSk7Tz1mdW5jdGlvbiBTQ3QobixlLHQpe2lmKHQuc2l6ZSYmZS5sZW5ndGgpe2xldCByPWVb'@; put 'MF0saT1bXTtpZih0LmZvckVhY2goKG8sYSk9PntyLmhhcyhhKXx8aS5wdXNoKGEpLHIuc2V0KGEsbyl9KSxpLmxlbmd0aClmb3IobGV0IG89MTtvPGUubGVuZ3RoO28rKyl7bGV0IGE9ZVtvXTtpLmZvckVhY2gobD0+YS5zZXQobCxXYWUobixsKSkpfX1yZXR1cm4gZX0oZSxPLGcpO2NvbnN0'@; put 'IFo9ZnVuY3Rpb24gZ1N0KG4sZSl7bGV0IHQ9bnVsbCxyPW51bGw7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPyh0PW9zZShlWzBdKSxlLmxlbmd0aD4xJiYocj1vc2UoZVtlLmxlbmd0aC0xXSkpKTplIGluc3RhbmNlb2YgTWFwJiYodD1vc2UoZSkpLHR8fHI/bmV3IG1TdChu'@; put 'LHQscik6bnVsbH0oZSxPKTtyZXR1cm4gbmV3IEtUZShlLE8sdSxaKX19Y29uc3QgUVRlPSJALmRpc2FibGVkIjtjbGFzcyBKVGV7bmFtZXNwYWNlSWQ7ZGVsZWdhdGU7ZW5naW5lO19vbkRlc3Ryb3k7XHUwMjc1dHlwZT0wO2NvbnN0cnVjdG9yKGUsdCxyLGkpe3RoaXMubmFtZXNwYWNlSWQ9'@; put 'ZSx0aGlzLmRlbGVnYXRlPXQsdGhpcy5lbmdpbmU9cix0aGlzLl9vbkRlc3Ryb3k9aX1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9ZGVzdHJveU5vZGUoZSl7dGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZT8uKGUpfWRlc3Ryb3koKXt0aGlzLmVuZ2luZS5kZXN0cm95KHRo'@; put 'aXMubmFtZXNwYWNlSWQsdGhpcy5kZWxlZ2F0ZSksdGhpcy5lbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT57cXVldWVNaWNyb3Rhc2soKCk9Pnt0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX0pfSksdGhpcy5fb25EZXN0cm95Py4oKX1jcmVhdGVFbGVtZW50KGUsdCl7cmV0dXJu'@; put 'IHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChlLHQpfWNyZWF0ZUNvbW1lbnQoZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudChlKX1jcmVhdGVUZXh0KGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQoZSl9YXBwZW5kQ2hpbGQoZSx0KXt0aGlzLmRlbGVn'@; put 'YXRlLmFwcGVuZENoaWxkKGUsdCksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCx0LGUsITEpfWluc2VydEJlZm9yZShlLHQscixpPSEwKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZShlLHQsciksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCx0'@; put 'LGUsaSl9cmVtb3ZlQ2hpbGQoZSx0LHIsaSl7aT90aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKGUsdCxyLGkpOnRoaXMucGFyZW50Tm9kZSh0KSYmdGhpcy5lbmdpbmUub25SZW1vdmUodGhpcy5uYW1lc3BhY2VJZCx0LHRoaXMuZGVsZWdhdGUpfXNlbGVjdFJvb3RFbGVtZW50KGUsdCl7cmV0'@; put 'dXJuIHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQoZSx0KX1wYXJlbnROb2RlKGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUoZSl9bmV4dFNpYmxpbmcoZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcoZSl9c2V0QXR0cmlidXRlKGUsdCxyLGkpe3Ro'@; put 'aXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKGUsdCxyLGkpfXJlbW92ZUF0dHJpYnV0ZShlLHQscil7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUoZSx0LHIpfWFkZENsYXNzKGUsdCl7dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyhlLHQpfXJlbW92ZUNsYXNzKGUsdCl7dGhpcy5kZWxlZ2F0'@; put 'ZS5yZW1vdmVDbGFzcyhlLHQpfXNldFN0eWxlKGUsdCxyLGkpe3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUoZSx0LHIsaSl9cmVtb3ZlU3R5bGUoZSx0LHIpe3RoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUoZSx0LHIpfXNldFByb3BlcnR5KGUsdCxyKXsiQCI9PXQuY2hhckF0KDApJiZ0PT1RVGU/'@; put 'dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyhlLCEhcik6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eShlLHQscil9c2V0VmFsdWUoZSx0KXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKGUsdCl9bGlzdGVuKGUsdCxyLGkpe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihlLHQscixpKX1kaXNhYmxl'@; put 'QW5pbWF0aW9ucyhlLHQpe3RoaXMuZW5naW5lLmRpc2FibGVBbmltYXRpb25zKGUsdCl9fWNsYXNzIF9TdCBleHRlbmRzIEpUZXtmYWN0b3J5O2NvbnN0cnVjdG9yKGUsdCxyLGksbyl7c3VwZXIodCxyLGksbyksdGhpcy5mYWN0b3J5PWUsdGhpcy5uYW1lc3BhY2VJZD10fXNldFByb3BlcnR5'@; put 'KGUsdCxyKXsiQCI9PXQuY2hhckF0KDApPyIuIj09dC5jaGFyQXQoMSkmJnQ9PVFUZT90aGlzLmRpc2FibGVBbmltYXRpb25zKGUscj12b2lkIDA9PT1yfHwhIXIpOnRoaXMuZW5naW5lLnByb2Nlc3ModGhpcy5uYW1lc3BhY2VJZCxlLHQuc2xpY2UoMSkscik6dGhpcy5kZWxlZ2F0ZS5zZXRQ'@; put 'cm9wZXJ0eShlLHQscil9bGlzdGVuKGUsdCxyLGkpe2lmKCJAIj09dC5jaGFyQXQoMCkpe2NvbnN0IG89ZnVuY3Rpb24geVN0KG4pe3N3aXRjaChuKXtjYXNlImJvZHkiOnJldHVybiBkb2N1bWVudC5ib2R5O2Nhc2UiZG9jdW1lbnQiOnJldHVybiBkb2N1bWVudDtjYXNlIndpbmRvdyI6cmV0'@; put 'dXJuIHdpbmRvdztkZWZhdWx0OnJldHVybiBufX0oZSk7bGV0IGE9dC5zbGljZSgxKSxsPSIiO3JldHVybiJAIiE9YS5jaGFyQXQoMCkmJihbYSxsXT1mdW5jdGlvbiBiU3Qobil7Y29uc3QgZT1uLmluZGV4T2YoIi4iKTtyZXR1cm5bbi5zdWJzdHJpbmcoMCxlKSxuLnNsaWNlKGUrMSldfShh'@; put 'KSksdGhpcy5lbmdpbmUubGlzdGVuKHRoaXMubmFtZXNwYWNlSWQsbyxhLGwsdT0+e3RoaXMuZmFjdG9yeS5zY2hlZHVsZUxpc3RlbmVyQ2FsbGJhY2sodS5fZGF0YXx8LTEscix1KX0pfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihlLHQscixpKX19Y2xhc3Mgd1N0e2RlbGVnYXRlO2Vu'@; put 'Z2luZTtfem9uZTtfY3VycmVudElkPTA7X21pY3JvdGFza0lkPTE7X2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXTtfcmVuZGVyZXJDYWNoZT1uZXcgTWFwO19jZFJlY3VyRGVwdGg9MDtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5kZWxlZ2F0ZT1lLHRoaXMuZW5naW5lPXQsdGhpcy5fem9u'@; put 'ZT1yLHQub25SZW1vdmFsQ29tcGxldGU9KGksbyk9PntvPy5yZW1vdmVDaGlsZChudWxsLGkpfX1jcmVhdGVSZW5kZXJlcihlLHQpe2NvbnN0IGk9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVSZW5kZXJlcihlLHQpO2lmKCFlfHwhdD8uZGF0YT8uYW5pbWF0aW9uKXtjb25zdCBnPXRoaXMuX3JlbmRl'@; put 'cmVyQ2FjaGU7bGV0IEU9Zy5nZXQoaSk7cmV0dXJuIEV8fChFPW5ldyBKVGUoIiIsaSx0aGlzLmVuZ2luZSwoKT0+Zy5kZWxldGUoaSkpLGcuc2V0KGksRSkpLEV9Y29uc3Qgbz10LmlkLGE9dC5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsrLHRoaXMuZW5naW5lLnJl'@; put 'Z2lzdGVyKGEsZSk7Y29uc3QgbD1nPT57QXJyYXkuaXNBcnJheShnKT9nLmZvckVhY2gobCk6dGhpcy5lbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKG8sYSxlLGcubmFtZSxnKX07cmV0dXJuIHQuZGF0YS5hbmltYXRpb24uZm9yRWFjaChsKSxuZXcgX1N0KHRoaXMsYSxpLHRoaXMuZW5naW5lKX1i'@; put 'ZWdpbigpe3RoaXMuX2NkUmVjdXJEZXB0aCsrLHRoaXMuZGVsZWdhdGUuYmVnaW4mJnRoaXMuZGVsZWdhdGUuYmVnaW4oKX1fc2NoZWR1bGVDb3VudFRhc2soKXtxdWV1ZU1pY3JvdGFzaygoKT0+e3RoaXMuX21pY3JvdGFza0lkKyt9KX1zY2hlZHVsZUxpc3RlbmVyQ2FsbGJhY2soZSx0LHIp'@; put 'e2lmKGU+PTAmJmU8dGhpcy5fbWljcm90YXNrSWQpcmV0dXJuIHZvaWQgdGhpcy5fem9uZS5ydW4oKCk9PnQocikpO2NvbnN0IGk9dGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyOzA9PWkubGVuZ3RoJiZxdWV1ZU1pY3JvdGFzaygoKT0+e3RoaXMuX3pvbmUucnVuKCgpPT57aS5mb3JF'@; put 'YWNoKG89Pntjb25zdFthLGxdPW87YShsKX0pLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXX0pfSksaS5wdXNoKFt0LHJdKX1lbmQoKXt0aGlzLl9jZFJlY3VyRGVwdGgtLSwwPT10aGlzLl9jZFJlY3VyRGVwdGgmJnRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0'@; put 'aGlzLl9zY2hlZHVsZUNvdW50VGFzaygpLHRoaXMuZW5naW5lLmZsdXNoKHRoaXMuX21pY3JvdGFza0lkKX0pLHRoaXMuZGVsZWdhdGUuZW5kJiZ0aGlzLmRlbGVnYXRlLmVuZCgpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIHRoaXMuZW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9Y29t'@; put 'cG9uZW50UmVwbGFjZWQoZSl7dGhpcy5lbmdpbmUuZmx1c2goKSx0aGlzLmRlbGVnYXRlLmNvbXBvbmVudFJlcGxhY2VkPy4oZSl9fWxldCBTU3Q9KCgpPT57Y2xhc3MgbiBleHRlbmRzIEpEe2NvbnN0cnVjdG9yKHQscixpKXtzdXBlcih0LHIsaSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZsdXNo'@; put 'KCl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKG9yKFRsKSxvcihaYWUpLG9yKEdhZSkpfTtzdGF0aWMgXHUwMjc1cHJvdj1Kbih7dG9rZW46bixmYWN0b3J5Om4uXHUwMjc1ZmFjfSl9cmV0dXJuIG59KSgpO2NvbnN0IGV4ZT1be3Byb3ZpZGU6R2FlLHVz'@; put 'ZUZhY3Rvcnk6ZnVuY3Rpb24gRVN0KCl7cmV0dXJuIG5ldyBPVGV9fSx7cHJvdmlkZTpKRCx1c2VDbGFzczpTU3R9LHtwcm92aWRlOmdjLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTVN0KG4sZSx0KXtyZXR1cm4gbmV3IHdTdChuLGUsdCl9LGRlcHM6W29yZSxKRCxnYV19XSx0eGU9W3twcm92aWRl'@; put 'OlphZSx1c2VDbGFzczpZYWV9LHtwcm92aWRlOmxWLHVzZVZhbHVlOiJOb29wQW5pbWF0aW9ucyJ9LC4uLmV4ZV0sYXNlPVt7cHJvdmlkZTpaYWUsdXNlRmFjdG9yeTooKT0+bmV3IFhUZX0se3Byb3ZpZGU6bFYsdXNlRmFjdG9yeTooKT0+IkJyb3dzZXJBbmltYXRpb25zIn0sLi4uZXhlXTts'@; put 'ZXQgVFN0PSgoKT0+e2NsYXNzIG57c3RhdGljIHdpdGhDb25maWcodCl7cmV0dXJue25nTW9kdWxlOm4scHJvdmlkZXJzOnQuZGlzYWJsZUFuaW1hdGlvbnM/dHhlOmFzZX19c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1bW9kPUdp'@; put 'KHt0eXBlOm59KTtzdGF0aWMgXHUwMjc1aW5qPW1pKHtwcm92aWRlcnM6YXNlLGltcG9ydHM6W01fZV19KX1yZXR1cm4gbn0pKCkseFN0PSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9u'@; put 'KGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1ub3QtZm91bmQiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbMSwiY29udGVudC1hcmVh'@; put 'Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJkaXYiLDApKDEsInAiKSxTZSgyLCI0MDQgLSBOb3QgRm91bmQiKSx0ZSgpKCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKSxueGU9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe31kb3du'@; put 'bG9hZEZpbGUocixpLG89InR4dCIpe2xldCBhPW5ldyBCbG9iKFtyXSx7dHlwZToidGV4dC9wbGFpbiJ9KTtpZihuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5ORVQiKT4wKXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYihhLGAke2l9LiR7b31gKTtlbHNle2xl'@; put 'dCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtsLmhyZWY9ImRhdGE6dGV4dC9wbGFpbiwiK2VuY29kZVVSSUNvbXBvbmVudChyKSxsLmRvd25sb2FkPWAke2l9LiR7b31gLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobCksbC5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp'@; put 'bGQobCl9fXJlYWRGaWxlKHIpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e2xldCBhPW5ldyBGaWxlUmVhZGVyO2Eub25sb2FkPSgpPT57YS5yZXN1bHQmJmkoSlNPTi5wYXJzZShhLnJlc3VsdC50b1N0cmluZygpKSl9LGEucmVhZEFzVGV4dChyKX0pfWNsZWFyVXBsb2FkSW5wdXQocil7'@; put 'ci50YXJnZXQudmFsdWU9IiJ9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5OmUuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSkpfXJldHVybiBuKCksZX0pKCk7'@; put 'dmFyIHk0PWgoNTk0OCk7Y29uc3Qgc3NlPWZ1bmN0aW9uIGtTdChuKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIG58fEtFKG4pJiYiW29iamVjdCBTeW1ib2xdIj09WkUobil9O3ZhciBSU3Q9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sSVN0PS9e'@; put 'XHcqJC87ZnVuY3Rpb24gbHNlKG4sZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG58fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgdD1mdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxpPWU/ZS5hcHBs'@; put 'eSh0aGlzLHIpOnJbMF0sbz10LmNhY2hlO2lmKG8uaGFzKGkpKXJldHVybiBvLmdldChpKTt2YXIgYT1uLmFwcGx5KHRoaXMscik7cmV0dXJuIHQuY2FjaGU9by5zZXQoaSxhKXx8byxhfTtyZXR1cm4gdC5jYWNoZT1uZXcobHNlLkNhY2hlfHxNaWUpLHR9bHNlLkNhY2hlPU1pZTtjb25zdCBO'@; put 'U3Q9bHNlO3ZhciBWU3Q9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csQlN0PS9cXChcXCk/L2csalN0PWZ1bmN0aW9uIFBTdChuKXt2YXIgZT1OU3QobixmdW5j'@; put 'dGlvbihyKXtyZXR1cm4gNTAwPT09dC5zaXplJiZ0LmNsZWFyKCkscn0pLHQ9ZS5jYWNoZTtyZXR1cm4gZX0oZnVuY3Rpb24obil7dmFyIGU9W107cmV0dXJuIDQ2PT09bi5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLG4ucmVwbGFjZShWU3QsZnVuY3Rpb24odCxyLGksbyl7ZS5wdXNoKGk/'@; put 'by5yZXBsYWNlKEJTdCwiJDEiKTpyfHx0KX0pLGV9KTtjb25zdCBVU3Q9alN0O3ZhciByeGU9Z3Y/Z3YucHJvdG90eXBlOnZvaWQgMCxpeGU9cnhlP3J4ZS50b1N0cmluZzp2b2lkIDA7Y29uc3QgWlN0PWZ1bmN0aW9uIG94ZShuKXtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIG47aWYo'@; put 'WEUobikpcmV0dXJuIGZ1bmN0aW9uIHpTdChuLGUpe2Zvcih2YXIgdD0tMSxyPW51bGw9PW4/MDpuLmxlbmd0aCxpPUFycmF5KHIpOysrdDxyOylpW3RdPWUoblt0XSx0LG4pO3JldHVybiBpfShuLG94ZSkrIiI7aWYoc3NlKG4pKXJldHVybiBpeGU/aXhlLmNhbGwobik6IiI7dmFyIGU9bisi'@; put 'IjtyZXR1cm4iMCI9PWUmJjEvbj09LTEvMD8iLTAiOmV9LEtTdD1mdW5jdGlvbiBxU3QobixlKXtyZXR1cm4gWEUobik/bjpmdW5jdGlvbiBEU3QobixlKXtpZihYRShuKSlyZXR1cm4hMTt2YXIgdD10eXBlb2YgbjtyZXR1cm4hKCJudW1iZXIiIT10JiYic3ltYm9sIiE9dCYmImJvb2xlYW4i'@; put 'IT10JiZudWxsIT1uJiYhc3NlKG4pKXx8SVN0LnRlc3Qobil8fCFSU3QudGVzdChuKXx8bnVsbCE9ZSYmbiBpbiBPYmplY3QoZSl9KG4sZSk/W25dOlVTdChmdW5jdGlvbiBHU3Qobil7cmV0dXJuIG51bGw9PW4/IiI6WlN0KG4pfShuKSl9LEpTdD1mdW5jdGlvbiBRU3Qobil7aWYoInN0cmlu'@; put 'ZyI9PXR5cGVvZiBufHxzc2UobikpcmV0dXJuIG47dmFyIGU9bisiIjtyZXR1cm4iMCI9PWUmJjEvbj09LTEvMD8iLTAiOmV9LCRjPWZ1bmN0aW9uIG5FdChuLGUsdCl7dmFyIHI9bnVsbD09bj92b2lkIDA6ZnVuY3Rpb24gZUV0KG4sZSl7Zm9yKHZhciB0PTAscj0oZT1LU3QoZSxuKSkubGVu'@; put 'Z3RoO251bGwhPW4mJnQ8cjspbj1uW0pTdChlW3QrK10pXTtyZXR1cm4gdCYmdD09cj9uOnZvaWQgMH0obixlKTtyZXR1cm4gdm9pZCAwPT09cj90OnJ9O2xldCBCcD0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvKXt0aGlzLnNhc1NlcnZpY2U9cix0aGlzLmhlbHBlclNl'@; put 'cnZpY2U9aSx0aGlzLmxvZ2dlclNlcnZpY2U9byx0aGlzLnJlc3BvbnNlPW5ldyBNcix0aGlzLmNoYW5nZWRUYWJsZT1uZXcgTXIsdGhpcy5kZXRhaWxzPW5ldyBNcix0aGlzLmRpZmZzPW5ldyBNcix0aGlzLmNvbHVtbnM9bmV3IE1yLHRoaXMudmFsdWVzPW5ldyBNcix0aGlzLmZpbHRlcj1u'@; put 'ZXcgTXIsdGhpcy5xdWVyeT1uZXcgTXIsdGhpcy5zdWJtaXR0RGV0YWlsPW5ldyBNcix0aGlzLnJlbW92ZVF1ZXJ5PW5ldyBNcix0aGlzLnNldFN1Ym1pdD1uZXcgTXIsdGhpcy5zZXRTdWJtaXRMaXN0PW5ldyBNcix0aGlzLnN1Ym1pdHNIYW5kb2ZmPW51bGwsdGhpcy5saWJzUHJvbWlzZT1u'@; put 'dWxsfWNhbGxTZXJ2aWNlKHIsaSxvLGEpe3ZhciBsPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2NvbnN0IHU9e307cmV0dXJuIHVbaV09W3JdLHtkYXRhOih5aWVsZCBsLnNhc1NlcnZpY2UucmVxdWVzdChvLHUpKS5hZGFwdGVyUmVzcG9uc2UsbGliZHM6YX19KSgpfXVwZGF0ZVRhYmxl'@; put 'KHIsaSxvLGEsbCx1LGcpe3ZhciBFPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2xldCBPPXtqc2RhdGE6aX07aWYobCl7bGV0IGVlPUUucGFyc2VGb3JtYXRzKGwpO08uJGpzZGF0YT17Zm9ybWF0czplZX19cmV0dXJuIE9bb109W3JdLHlpZWxkIEUuc2FzU2VydmljZS5yZXF1ZXN0KGEs'@; put 'TyxnLHtzdXBwcmVzc0Vycm9yQWJvcnRNb2RhbDp1LHN1cHByZXNzU3VjY2Vzc0Fib3J0TW9kYWw6dX0pfSkoKX1nZXRBcHByb3ZhbHMocixpLG8pe3ZhciBhPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2xldCBsPXt9O3JldHVybiBsW2ldPVtyXSwoeWllbGQgYS5zYXNTZXJ2aWNlLnJl'@; put 'cXVlc3QobyxsKSkuYWRhcHRlclJlc3BvbnNlfSkoKX1zZW5kRGV0YWlscyhyLGksbyl7dmFyIGE9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7bGV0IGw9T2JqZWN0LmFzc2lnbih7c3ViOiEwfSxyKTthLnN1Ym1pdHREZXRhaWwubmV4dCh7ZGF0YTpvW2ldLHZpZXdEYXRhOmx9KX0pKCl9'@; put 'Z2V0U3VibWl0dHMoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyZXR1cm4oeWllbGQgci5zYXNTZXJ2aWNlLnJlcXVlc3QoImVkaXRvcnMvZ2V0c3VibWl0cyIsbnVsbCkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9aGFuZG9mZlN1Ym1pdHMocil7dGhpcy5zdWJtaXRzSGFuZG9m'@; put 'Zj1yfHxudWxsfXRha2VTdWJtaXRzSGFuZG9mZigpe2NvbnN0IHI9dGhpcy5zdWJtaXRzSGFuZG9mZjtyZXR1cm4gdGhpcy5zdWJtaXRzSGFuZG9mZj1udWxsLHJ9dmlld0xpYnMoKXtyZXR1cm4gdGhpcy5saWJzUHJvbWlzZXx8KHRoaXMubGlic1Byb21pc2U9dGhpcy5zYXNTZXJ2aWNlLnJl'@; put 'cXVlc3QoInB1YmxpYy92aWV3bGlicyIsbnVsbCkudGhlbihyPT5yLmFkYXB0ZXJSZXNwb25zZSkuY2F0Y2gocj0+e3Rocm93IHRoaXMubGlic1Byb21pc2U9bnVsbCxyfSkpLHRoaXMubGlic1Byb21pc2V9cmVmcmVzaExpYkluZm8ocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24q'@; put 'KCl7Y29uc3Qgbz17bGliMnJlZnJlc2g6W3tsaWJyZWY6cn1dfTtyZXR1cm4oeWllbGQgaS5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9yZWZyZXNobGliaW5mbyIsbykpLmFkYXB0ZXJSZXNwb25zZX0pKCl9dmlld1RhYmxlcyhyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbioo'@; put 'KXtsZXQgbz17U0FTQ29udHJvbFRhYmxlOlt7TVBMSUI6cn1dfTtyZXR1cm4oeWllbGQgaS5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3dGFibGVzIixvKSkuYWRhcHRlclJlc3BvbnNlfSkoKX12aWV3RGF0YShyLGkpe3ZhciBvPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2xl'@; put 'dCBhPXtTQVNDb250cm9sVGFibGU6W3tMSUJEUzpyLEZJTFRFUl9SSzppfV19O3JldHVybih5aWVsZCBvLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3ZpZXdkYXRhIixhKSkuYWRhcHRlclJlc3BvbnNlfSkoKX12aWV3RGF0YVNlYXJjaChyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5j'@; put 'dGlvbioobyxhPSExLGwsdSl7bGV0IEU9e1NBU0NvbnRyb2xUYWJsZTpbe1NFQVJDSFRZUEU6by5sZW5ndGg+MD9hPyJOVU0iOiJDSEFSIjoiTk9ORSIsU0VBUkNIVkFMOm8sTElCRFM6bCxGSUxURVJfUks6dX1dfTtyZXR1cm4oeWllbGQgaS5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92'@; put 'aWV3ZGF0YSIsRSkpLmFkYXB0ZXJSZXNwb25zZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1nZXRYTE1hcFJ1bGVzKHIpe3ZhciBpPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2NvbnN0IG89e2dldHhsbWFwc19pbjpbe1hMTUFQX0lEOnJ9XX07cmV0dXJuKHlpZWxkIGkuc2FzU2Vydmlj'@; put 'ZS5yZXF1ZXN0KCJlZGl0b3JzL2dldHhsbWFwcyIsbykpLmFkYXB0ZXJSZXNwb25zZX0pKCl9c2hvd0RpZmZzKHIsaSxvKXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgbD17fTtyZXR1cm4gbFtpXT1bcl0sKHlpZWxkIGEuc2FzU2VydmljZS5yZXF1ZXN0KG8sbCx7dXNl'@; put 'Q29tcHV0ZUFwaTpudWxsfSkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9cmVqZWN0aW5nKHIsaSxvKXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgbD17fTtyZXR1cm4gbFtpXT1bcl0sKHlpZWxkIGEuc2FzU2VydmljZS5yZXF1ZXN0KG8sbCx7dXNlQ29tcHV0ZUFwaTpudWxs'@; put 'fSkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9YXBwcm92ZVRhYmxlKHIsaSxvKXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgbD17fTtyZXR1cm4gbFtpXT1bcl0sKHlpZWxkIGEuc2FzU2VydmljZS5yZXF1ZXN0KG8sbCkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9Z2V0SGlzdG9y'@; put 'eShyLGksbyl7dmFyIGE9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7bGV0IGw9e307cmV0dXJuIGxbaV09W3JdLCh5aWVsZCBhLnNhc1NlcnZpY2UucmVxdWVzdChvLGwpKS5hZGFwdGVyUmVzcG9uc2V9KSgpfXNldFF1ZXJ5VmFyaWFibGVzKHIsaSl7dGhpcy5jb2x1bW5zLm5leHQoe2Rh'@; put 'dGE6e2NvbHM6aX0sbGliZHM6cn0pfWdldENoYW5nZUluZm8ocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7bGV0IGE9e1NBU0NvbnRyb2xUYWJsZTpbe1RBQkxFOnJ9XX07cmV0dXJuKHlpZWxkIGkuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Y2hhbmdlaW5mbyIs'@; put 'YSkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9Z2V0UXVlcnlWYWx1ZXMocixpLG8sYSxsKXt2YXIgdT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgZz17aXdhbnQ6W3tsaWJkczppLGNvbDpyLC4uLmEmJntTVEFSVFJPVzphfSwuLi5sJiZ7Uk9XUzpsfX1dfTtyZXR1cm4gby5sZW5ndGg+'@; put 'MCYmKGcuRklMVEVSUVVFUlk9byksKHlpZWxkIHUuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Y29sdmFscyIsZykuY2F0Y2goRT0+e3Rocm93IEV9KSkuYWRhcHRlclJlc3BvbnNlfSkoKX1zYXZlUXVlcnkocixpKXt2YXIgbz10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQg'@; put 'YT17aXdhbnQ6W3tmaWx0ZXJfdGFibGU6cn1dLGZpbHRlcnF1ZXJ5Oml9O2NvbnN0IGw9eWllbGQgby5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92YWxpZGF0ZWZpbHRlciIsYSk7cmV0dXJuIG8uZmlsdGVyLm5leHQobCksbC5hZGFwdGVyUmVzcG9uc2V9KSgpfW9wZW5UYWJsZShyKXt2'@; put 'YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgbz17aXdhbnQ6W3t0YWJsZV9pZDpyfV19O3JldHVybih5aWVsZCBpLnNhc1NlcnZpY2UucmVxdWVzdCgiYXVkaXRvcnMvZ2V0c3RhZ2V0YWJsZSIsbykpLmFkYXB0ZXJSZXNwb25zZX0pKCl9Y2hlY2tPcGVyYXRvcihyLGksbyl7'@; put 'bGV0IGE7c3dpdGNoKHIpe2Nhc2UiQkVUV0VFTiI6aSBpbnN0YW5jZW9mIEFycmF5JiYoIiIhPT1pWzBdJiYiIiE9PWlbMV0/YT1pWzBdKyIgQU5EICIraVsxXToiIiE9PWlbMF0mJiIiPT09aVsxXT8oaVsxXT0iLiIsYT1pWzBdKyIgQU5EICIraVsxXSk6IiI9PT1pWzBdJiYiIiE9PWlbMV0/'@; put 'KGlbMF09Ii4iLGE9aVswXSsiIEFORCAiK2lbMV0pOihpWzBdPSIuIixpWzFdPSIuIixhPWlbMF0rIiBBTkQgIitpWzFdKSk7YnJlYWs7Y2FzZSJJTiI6Y2FzZSJOT1QgSU4iOmxldCB1PVtdO2lmKHR5cGVvZiBpPCJ1Iilmb3IobGV0IGc9MDtnPGkubGVuZ3RoO2crKykhMD09PWlbZ10uY2hl'@; put 'Y2tlZCYmKCJjaGFyIj09PW8/KCJzdHJpbmciPT10eXBlb2YgaVtnXS52YWwmJihpW2ddLnZhbD1pW2ddLnZhbC5yZXBsYWNlKCInIiwiJyciKSksdS5wdXNoKCInIitpW2ddLnZhbCsiJyIpKToobnVsbD09PWlbZ10udmFsJiYoaVtnXS52YWw9Ii4iKSx1LnB1c2goaVtnXS52YWwpKSk7aT0i'@; put 'KCIrdSsiKSI7YnJlYWs7Y2FzZSJDT05UQUlOUyI6cj0iPyI7YnJlYWs7Y2FzZSJOT1QgRVFVQUwiOnI9Im5lIn1yZXR1cm4ibnVtIj09PW8mJm51bGw9PT1pJiYoaT0iLiIpLCJQbGVhc2Ugc2VsZWN0IHZhbHVlIj09PWkmJihpPSIiKSwtMSE9PVsiPSIsIj4iLCI8IiwiPD0iLCI+PSIsIm5l'@; put 'Il0uaW5kZXhPZihyKSYmIm51bSI9PT1vJiYiIj09PWkmJihpPSIuIiksIkJFVFdFRU4iPT09cj97dmFsdWU6YSxvcGVyYXRvcjpyfTp7dmFsdWU6aSxvcGVyYXRvcjpyfX13aGVyZUNsYXVzZUNyZWF0b3IocixpLG8pe2xldCBnLFosYT0iIixFPSIiLE89W107Zm9yKGxldCB2ZT0wO3ZlPHIu'@; put 'cXVlcnlPYmoubGVuZ3RoO3ZlKyspe2xldCBNZT0iIixIZT1yLnF1ZXJ5T2JqW3ZlXTtmb3IobGV0IFdlPTA7V2U8SGUuZWxlbWVudHMubGVuZ3RoO1dlKyspe2xldCBDdCxhdD1IZS5lbGVtZW50c1tXZV07Zz1XZTxIZS5lbGVtZW50cy5sZW5ndGgtMT9IZS5jbGF1c2VMb2dpYzoiIjtmb3Io'@; put 'bGV0IENuPTA7Q248YXQudmFsdWVzLmxlbmd0aDtDbisrKXtpZigic3RyaW5nIj09dHlwZW9mIGF0LnZhbHVlJiYibnVtYmVyIj09dHlwZW9mIGF0LnZhbHVlc1tDbl0uZm9ybWF0dGVkKWF0LnZhbHVlPT09SlNPTi5zdHJpbmdpZnkoYXQudmFsdWVzW0NuXS5mb3JtYXR0ZWQpJiYoQ3Q9YXQu'@; put 'dmFsdWVzW0NuXS51bmZvcm1hdHRlZCk7ZWxzZXtsZXQgJG49Im51bWJlciIhPXR5cGVvZiBhdC52YWx1ZXNbQ25dLmZvcm1hdHRlZCYmbnVsbCE9PWF0LnZhbHVlc1tDbl0uZm9ybWF0dGVkP2F0LnZhbHVlc1tDbl0uZm9ybWF0dGVkLnRyaW0oKTphdC52YWx1ZXNbQ25dLmZvcm1hdHRlZDth'@; put 'dC52YWx1ZT09PSRuJiYoQ3Q9YXQudmFsdWVzW0NuXS51bmZvcm1hdHRlZCl9IlBsZWFzZSBzZWxlY3QgdmFsdWUiPT09YXQudmFsdWUmJi0xIT09WyI9IiwiPiIsIjwiLCI8PSIsIj49IiwibmUiXS5pbmRleE9mKGF0Lm9wZXJhdG9yKSYmKEN0PSIiKSwoIkNPTlRBSU5TIj09PWF0Lm9wZXJh'@; put 'dG9yfHwiTElLRSI9PT1hdC5vcGVyYXRvcnx8IkJFR0lOU19XSVRIIj09PWF0Lm9wZXJhdG9yKSYmKEN0PWF0LnZhbHVlKX1pZihDdHx8KEN0PWF0LnZhbHVlKSxhdC52YWx1ZSBpbnN0YW5jZW9mIEFycmF5JiYiQkVUV0VFTiI9PT1hdC5vcGVyYXRvcil7Q3Q9W10sQ3QucHVzaChhdC52YWx1'@; put 'ZVswXSksQ3QucHVzaChhdC52YWx1ZVsxXSk7Zm9yKGxldCBDbj0wO0NuPGF0LnZhbHVlcy5sZW5ndGg7Q24rKylDdFswXT09PWF0LnZhbHVlc1tDbl0uZm9ybWF0dGVkJiYoQ3RbMF09YXQudmFsdWVzW0NuXS51bmZvcm1hdHRlZCksQ3RbMV09PT1hdC52YWx1ZXNbQ25dLmZvcm1hdHRlZCYm'@; put 'KEN0WzFdPWF0LnZhbHVlc1tDbl0udW5mb3JtYXR0ZWQpfWlmKGF0LnZhbHVlIGluc3RhbmNlb2YgQXJyYXkmJigiSU4iPT09YXQub3BlcmF0b3J8fCJOT1QgSU4iPT09YXQub3BlcmF0b3IpKXtDdD1bXSxDdD1hdC52YWx1ZTtmb3IobGV0IENuPTA7Q248YXQudmFsdWVzLmxlbmd0aDtDbisr'@; put 'KUN0W0NuXSYmQ3RbQ25dLnZhbD09PWF0LnZhbHVlc1tDbl0uZm9ybWF0dGVkJiYoQ3RbQ25dLnZhbD1hdC52YWx1ZXNbQ25dLnVuZm9ybWF0dGVkKX1sZXQgQXQ9YXQudHlwZTtjb25zdCBLdD1hdC52YWx1ZVZhcmlhYmxlO2xldCBUbixxdD1udWxsPT09YXQudmFyaWFibGU/IiI6YXQudmFy'@; put 'aWFibGUsZ249bnVsbD09PWF0Lm9wZXJhdG9yPyIiOmF0Lm9wZXJhdG9yO1RuPXRoaXMuY2hlY2tPcGVyYXRvcihnbixDdCxBdCkudmFsdWUsInN0cmluZyI9PXR5cGVvZiBUbiYmIigiIT09VG5bMF0mJihUbj1Ubi5yZXBsYWNlKCInIiwiJyciKSksZ249dGhpcy5jaGVja09wZXJhdG9yKGdu'@; put 'LFRuLEF0KS5vcGVyYXRvciwiY2hhciI9PT1BdCYmIklOIiE9PWduJiYiTk9UIElOIiE9PWduPyh0eXBlb2YgVG4+InUiJiYoVG49IiIpLFRuPUt0PyIgIitUbisiICI6IiAnIitUbisiJyAiLE1lPU1lKyIgIitxdCsiICIrZ24rVG4rZyk6KCJudW0iPT09QXQmJnR5cGVvZiBUbj4idSImJihU'@; put 'bj0iLiIpLFRuPXR5cGVvZiBUbj4idSI/IiI6IiAiK1RuKyIgIixNZT1NZSsiICIrcXQrIiAiK2duK1RuK2cpfU8ucHVzaChNZSl9RT0iIjtmb3IobGV0IHZlPTA7dmU8Ty5sZW5ndGg7dmUrKylaPXZlPE8ubGVuZ3RoLTE/aToiIixFPTE9PT1PLmxlbmd0aD9PWzBdOkUrIiAoIitPW3ZlXSsi'@; put 'KSAiK1o7cmV0dXJuIGE9RS5zdWJzdHIoMSkuc2xpY2UoMCwtMSksRT0iV0hFUkUiK0UrIjsiLHRoaXMucXVlcnkubmV4dCh7d2hlcmVDbGF1c2U6RSxzdHJpbmc6YSxvYmo6cixsaWJkczpvfSkse3doZXJlQ2xhdXNlOkUsc3RyaW5nOmF9fWNyZWF0ZUZpbHRlclF1ZXJ5VGFibGUocil7Y29u'@; put 'c3QgaT1bXTtyZXR1cm4gci5maWx0ZXJHcm91cHMuZm9yRWFjaCgobyxhKT0+e28uZmlsdGVyQ2xhdXNlcy5mb3JFYWNoKGw9PntsZXQgdT0iIjsiQkVUV0VFTiI9PT1sLm9wZXJhdG9yP3U9YCR7bC52YWx1ZVswXX0gQU5EICR7bC52YWx1ZVsxXX1gOiJJTiI9PT1sLm9wZXJhdG9yfHwiTk9U'@; put 'IElOIj09PWwub3BlcmF0b3I/KGwudmFsdWUuZm9yRWFjaChnPT57aWYoZy5jaGVja2VkKXtjb25zdCBFPWcudmFsOyJzdHJpbmciIT10eXBlb2YgRXx8KDAseTQuaXNTcGVjaWFsTWlzc2luZykoRSkmJiJjaGFyIiE9PWwudHlwZT91Lmxlbmd0aD4wP3UrPWAsJHtFfWA6dT1gKCR7RX1gOnUu'@; put 'bGVuZ3RoPjA/dSs9YCwnJHtFLnJlcGxhY2UoLycvZywiJyciKX0nYDp1PWAoJyR7RS5yZXBsYWNlKC8nL2csIicnIil9J2B9fSksdS5sZW5ndGg+MCYmKHUrPSIpIikpOiIiPT09bC52YWx1ZT91PSJjaGFyIj09PWwudHlwZT8iJyAnIjoiLiI6ImNoYXIiPT09bC50eXBlJiYhbC52YWx1ZVZh'@; put 'cmlhYmxlJiYodT1gJyR7bC52YWx1ZS5yZXBsYWNlKC8nL2csIicnIil9J2ApLGkucHVzaCh7R1JPVVBfTE9HSUM6ci5ncm91cExvZ2ljLFNVQkdST1VQX0xPR0lDOm8uY2xhdXNlTG9naWN8fCJBTkQiLFNVQkdST1VQX0lEOmEsVkFSSUFCTEVfTk06bC52YXJpYWJsZSxPUEVSQVRPUl9OTTps'@; put 'Lm9wZXJhdG9yLFJBV19WQUxVRTp1fHxsLnZhbHVlfSl9KX0pLGl9aW5pdGlhbGl6ZUdsb2JhbEZpbHRlckNsYXVzZShyLGkpe2NvbnN0IG89e3F1ZXJ5T2JqOltdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6JGMoVW4scikuZmlsdGVyLnF1ZXJ5WzBdLkdST1VQX0xPR0lDfTskYyhVbixy'@; put 'KS5maWx0ZXIuY2xhdXNlcz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKG8pLCRjKFVuLHIpLmZpbHRlci5ncm91cExvZ2ljPSRjKFVuLHIpLmZpbHRlci5xdWVyeVswXS5HUk9VUF9MT0dJQztsZXQgYT0iIixsPXtlbGVtZW50czpbXX0sdT0wOyRjKFVuLHIpLmZpbHRlci5xdWVyeS5m'@; put 'b3JFYWNoKGc9Pntjb25zdCBFPXt9O2ZvcihsZXQgTz0wO088aS5sZW5ndGg7TysrKWlmKGlbT10uTkFNRT09PWcuVkFSSUFCTEVfTk0pe2lmKGE9Zy5TVUJHUk9VUF9MT0dJQyxFLmRkdHlwZT1pW09dLkREVFlQRSxFLnR5cGU9aVtPXS5UWVBFLEUub3BlcmF0b3JzPSJudW0iPT09aVtPXS5U'@; put 'WVBFP1VuLm9wZXJhdG9ycy5udW1PcGVyYXRvcnM6VW4ub3BlcmF0b3JzLmNoYXJPcGVyYXRvcnMsRS5sb2dpYz1udWxsLEUub3BlcmF0b3I9Zy5PUEVSQVRPUl9OTSxFLnZhcmlhYmxlPWcuVkFSSUFCTEVfTk0sImNoYXIiPT09aVtPXS5UWVBFKWlmKCJJTiI9PT1nLk9QRVJBVE9SX05NfHwi'@; put 'Tk9UIElOIj09PWcuT1BFUkFUT1JfTk0pe2NvbnN0IFo9W10sdmU9Zy5SQVdfVkFMVUUuc2xpY2UoMSwtMSkuc3BsaXQoIicsJyIpOzE9PT12ZS5sZW5ndGg/Wi5wdXNoKHtjaGVja2VkOiEwLHZhbDp2ZVswXS5zbGljZSgxLC0xKS5yZXBsYWNlKC8nJy9nLCInIil9KTp2ZS5mb3JFYWNoKChN'@; put 'ZSxIZSk9PntaLnB1c2goMD09PUhlP3tjaGVja2VkOiEwLHZhbDpNZS5zbGljZSgxKS5yZXBsYWNlKC8nJy9nLCInIil9OkhlPT09dmUubGVuZ3RoLTE/e2NoZWNrZWQ6ITAsdmFsOk1lLnNsaWNlKDAsLTEpLnJlcGxhY2UoLycnL2csIiciKX06e2NoZWNrZWQ6ITAsdmFsOk1lLnJlcGxhY2Uo'@; put 'LycnL2csIiciKX0pfSksRS52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFopfWVsc2UgRS52YWx1ZT1nLlJBV19WQUxVRS5zbGljZSgxLC0xKS5yZXBsYWNlKC8nJy9nLCInIik7ZWxzZSBpZigiSU4iPT09Zy5PUEVSQVRPUl9OTXx8Ik5PVCBJTiI9PT1nLk9QRVJBVE9SX05N'@; put 'KXtjb25zdCBaPVtdO2cuUkFXX1ZBTFVFLnNsaWNlKDEsLTEpLnNwbGl0KCIsIikuZm9yRWFjaCgoTWUsSGUpPT57Wi5wdXNoKHtjaGVja2VkOiEwLHZhbDpNZX0pfSksRS52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFopfWVsc2UgaWYoIkJFVFdFRU4iPT09Zy5PUEVSQVRP'@; put 'Ul9OTSl7Y29uc3QgWj1nLlJBV19WQUxVRS5zcGxpdCgiIEFORCAiKTtFLnZhbHVlPVp9ZWxzZSBFLnZhbHVlPWcuUkFXX1ZBTFVFO0UudmFsdWVzPVtdLHU9PT1nLlNVQkdST1VQX0lEfHwoJGMoVW4scikuZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlzLmhlbHBlclNlcnZpY2Uu'@; put 'ZGVlcENsb25lKGwpKSwkYyhVbixyKS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialt1XS5jbGF1c2VMb2dpYz1hLCRjKFVuLHIpLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW3VdLmludmFsaWRDbGF1c2U9ITEsdSsrLGwuZWxlbWVudHM9W10pLGwuZWxlbWVudHMucHVzaCh0aGlzLmhlbHBlclNl'@; put 'cnZpY2UuZGVlcENsb25lKEUpKTticmVha319KSxsLmVsZW1lbnRzLmxlbmd0aD4wJiYoJGMoVW4scikuZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGwpKSwkYyhVbixyKS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialt1XS5jbGF1c2VM'@; put 'b2dpYz1hLCRjKFVuLHIpLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW3VdLmludmFsaWRDbGF1c2U9ITEpLCRjKFVuLHIpLmZpbHRlci5xdWVyeT1bXX1yZW1vdmVDbGF1c2UoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgaT0hMDtyZXR1cm4gci5yZW1vdmVRdWVyeS5u'@; put 'ZXh0KGkpLGl9KSgpfXNwZWNDb252ZXJzaW9uKHIpe2xldCBpPXt9LG89W107aWYobz1yLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5OQU1FLnRvVXBwZXJDYXNlKCl9KSxyIGluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKyspaVtvW2FdXT0xPT09clthXS5UWVBF'@; put 'P3tjb2xUeXBlOiJudW0iLGNvbExlbmd0aDpyW2FdLkxFTkdUSH06e2NvbFR5cGU6InN0cmluZyIsY29sTGVuZ3RoOnJbYV0uTEVOR1RIfTtyZXR1cm4gaX1zZXRTdWJtaXRSZWFkeSgpe3RoaXMuc2V0U3VibWl0Lm5leHQoITApfXBhcnNlRm9ybWF0cyhyKXtjb25zdCBpPXt9LG89ci52YXJz'@; put 'O2ZvcihsZXQgYSBvZiBPYmplY3Qua2V5cyhvKSl7Y29uc3QgbD1vW2FdLnR5cGUsdT1vW2FdLmxlbmd0aDsibnVtIj09PWw/aVthXT0iYmVzdC4iOiJjaGFyIj09PWwmJihpW2FdPWAkY2hhciR7dX0uYCl9cmV0dXJuIGl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9u'@; put 'KGkpe3JldHVybiBuZXcoaXx8ZSkob3IoaWMpLG9yKGZoKSxvcih4MykpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhY30pKX1yZXR1cm4gbigpLGV9KSgpO2Z1bmN0aW9uIHJFdChuLGUpezEmbiYmKEooMCwic3BhbiIsMzApLFNlKDEsIiBMb2FkaW5n'@; put 'Li4uICIpLHRlKCksSigyLCJwIiksU2UoMywiRGVwbG95aW5nLi4uIiksdGUoKSl9ZnVuY3Rpb24gaUV0KG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsMzkpfWZ1bmN0aW9uIG9FdChuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDM2KX1mdW5jdGlvbiBhRXQobixlKXtpZigxJm4mJihKKDAs'@; put 'ImRpdiIsMzMpLHZ0KDEsaUV0LDEsMCwiY2xyLWljb24iLDM5KSx2dCgyLG9FdCwxLDAsImNsci1pY29uIiwzNiksSigzLCJwIiksU2UoNCwiRGVwbG95IFNBUyBKb2JzIiksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoKSxfdCghMD09PXQuYXV0b0RlcGxveVN0YXR1cy5kZXBsb3lT'@; put 'ZXJ2aWNlUGFjaz8xOi0xKSxpZSgpLF90KHQuYXV0b0RlcGxveVN0YXR1cy5kZXBsb3lTZXJ2aWNlUGFjaz8yOi0xKX19ZnVuY3Rpb24gc0V0KG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsMzkpfWZ1bmN0aW9uIGxFdChuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDM2KX1mdW5jdGlvbiBj'@; put 'RXQobixlKXtpZigxJm4mJihKKDAsImRpdiIsMzMpLHZ0KDEsc0V0LDEsMCwiY2xyLWljb24iLDM5KSx2dCgyLGxFdCwxLDAsImNsci1pY29uIiwzNiksSigzLCJwIiksU2UoNCwiQ3JlYXRlIGRhdGFiYXNlIiksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoKSxfdCh0LmF1dG9EZXBs'@; put 'b3lTdGF0dXMucnVuTWFrZURhdGE/MTotMSksaWUoKSxfdCghMT09PXQuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YT8yOi0xKX19ZnVuY3Rpb24gdUV0KG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsMzYpfWZ1bmN0aW9uIGRFdChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwi'@; put 'cCIsMzEpLFNlKDEsIkRvbmUiKSx0ZSgpLEl0KDIsImhyIiwzMiksdnQoMyxhRXQsNSwyLCJkaXYiLDMzKSx2dCg0LGNFdCw1LDIsImRpdiIsMzMpLEl0KDUsImhyIiwzMiksSig2LCJkaXYiLDM0KSg3LCJidXR0b24iLDM1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhl'@; put 'KFRlKDIpLm5hdmlnYXRlVG9Ib21lKCkpfSksdnQoOCx1RXQsMSwwLCJjbHItaWNvbiIsMzYpLFNlKDksIiBMQVVOQ0ggIiksdGUoKSxKKDEwLCJidXR0b24iLDM3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgyKTtyZXR1cm4gWGUoaS5kb3dubG9hZEZpbGUoaS5t'@; put 'YWtlRGF0YVJlc3BvbnNlLCJjcmVhdGUtZGF0YWJhc2UtbG9nIiwidHh0IikpfSksU2UoMTEsIiBEb3dubG9hZCBsb2cgIiksdGUoKSgpLEl0KDEyLCJociIsMzIpLEooMTMsImRpdiIsMzQpKDE0LCJidXR0b24iLDM4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgy'@; put 'KTtyZXR1cm4gaS5hdXRvZGVwbG95aW5nPSExLFhlKGkuYXV0b2RlcGxveURvbmU9ITEpfSksU2UoMTUsIiBDbG9zZSAiKSx0ZSgpLEooMTYsImJ1dHRvbiIsMzgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikub3BlblNhc1JlcXVlc3RzTW9kYWwoKSl9KSxT'@; put 'ZSgxNywiIFNBUyBSZXF1ZXN0cyAiKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKDMpLF90KG51bGwhPT10LmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s/MzotMSksaWUoKSxfdChudWxsIT09dC5hdXRvRGVwbG95U3RhdHVzLnJ1bk1ha2VEYXRhPzQ6LTEpLGll'@; put 'KDQpLF90KCExPT09dC5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrfHwhMT09PXQuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YT84Oi0xKX19ZnVuY3Rpb24gaEV0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDApKDEsImRpdiIsMjkpLHZ0KDIsckV0LDQsMCksdnQoMyxk'@; put 'RXQsMTgsMyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgyKSxfdCh0LmF1dG9kZXBsb3lEb25lPy0xOjIpLGllKCksX3QodC5hdXRvZGVwbG95RG9uZT8zOi0xKX19ZnVuY3Rpb24gZkV0KG4sZSl7aWYoMSZuJiYoU2UoMCwiICgiKSxKKDEsInN0cm9uZyIpLFNlKDIpLHRlKCksU2Uo'@; put 'MywiKSAiKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMikscHIobnVsbD09dC5jdXJyZW50VXNlckluZm8/bnVsbDp0LmN1cnJlbnRVc2VySW5mby5pZCl9fWZ1bmN0aW9uIHBFdChuLGUpe2lmKDEmbiYmKEooMCwib3B0aW9uIiw0MSksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PWUuJGltcGxp'@; put 'Y2l0O3J0KCJ2YWx1ZSIsdC5pZCksaWUoKSxTcigiICIsdC5uYW1lLCIgIil9fWZ1bmN0aW9uIGdFdChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwic2VsZWN0Iiw0MCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKTtyZXR1cm4gZmkoby5z'@; put 'ZWxlY3RlZEFkbWluR3JvdXAsaSl8fChvLnNlbGVjdGVkQWRtaW5Hcm91cD1pKSxYZShpKX0pLF9vKDEscEV0LDIsMiwib3B0aW9uIiw0MSxDbyksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtkaSgibmdNb2RlbCIsdC5zZWxlY3RlZEFkbWluR3JvdXApLGllKCkseW8odC5hZG1pbkdyb3Vw'@; put 'cyl9fWZ1bmN0aW9uIG1FdChuLGUpezEmbiYmSXQoMCwiY2xyLXNwaW5uZXIiLDE4KX1mdW5jdGlvbiB2RXQobixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsNDEpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgidmFsdWUiLHQpLGllKCksU3IoIiAiLHQsIiAiKX19'@; put 'ZnVuY3Rpb24gX0V0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJzZWxlY3QiLDQ0KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgyKTtyZXR1cm4gZmkoby5zZWxlY3RlZEJhdGNoSWQsaSl8fChvLnNlbGVjdGVkQmF0Y2hJZD1pKSxYZShp'@; put 'KX0pLHd0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5vbkJhdGNoSWRDaGFuZ2UoKSl9KSxfbygxLHZFdCwyLDIsIm9wdGlvbiIsNDEsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2RpKCJuZ01vZGVsIix0LnNlbGVjdGVkQmF0Y2hJZCks'@; put 'aWUoKSx5byh0LmJhdGNoSWRzKX19ZnVuY3Rpb24geUV0KG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsMTgpfWZ1bmN0aW9uIGJFdChuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwzKSgxLCJsYWJlbCIsNDIpLFNlKDIsIkJhdGNoIElEIiksdGUoKSxKKDMsInAiLDUpLFNlKDQsIiBUaGUg'@; put 'YmF0Y2ggaWRlbnRpdHkgKCIpLEooNSwiY29kZSIpLFNlKDYsInJ1blNlcnZlckFzIiksdGUoKSxTZSg3LCIpIHVuZGVyIHdoaWNoIERhdGEgQ29udHJvbGxlciBqb2JzIHdpbGwgZXhlY3V0ZS4gSXQgaXMgdXNlZCB0byBmaWx0ZXIgdGhlIENvbXB1dGUgQ29udGV4dCBkcm9wZG93biBiZWxv'@; put 'dyB0byBvbmx5IHRoZSBjb250ZXh0cyBydW5uaW5nIGFzIHRoaXMgaWRlbnRpdHkuICIpLHRlKCksSig4LCJkaXYiLDYpKDksImRpdiIsMTEpLHZ0KDEwLF9FdCwzLDEsInNlbGVjdCIsNDMpLHZ0KDExLHlFdCwxLDAsImNsci1zcGlubmVyIiwxOCksdGUoKSgpKCkpLDImbil7Y29uc3QgdD1U'@; put 'ZSgpO2llKDEwKSxfdCh0LmNvbXB1dGVDb250ZXh0c0xvYWRpbmc/LTE6MTApLGllKCksX3QodC5jb21wdXRlQ29udGV4dHNMb2FkaW5nPzExOi0xKX19ZnVuY3Rpb24gd0V0KG4sZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iLDQxKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGlj'@; put 'aXQ7cnQoInZhbHVlIix0LmlkKSxpZSgpLFNyKCIgIix0Lm5hbWUsIiAiKX19ZnVuY3Rpb24gQ0V0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJzZWxlY3QiLDQ1KSx3dCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKCkub25Db21wdXRlQ29u'@; put 'dGV4dENoYW5nZShpKSl9KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLnNlbGVjdGVkQ29tcHV0ZUNvbnRleHQsaSl8fChvLnNlbGVjdGVkQ29tcHV0ZUNvbnRleHQ9aSksWGUoaSl9KSxfbygxLHdFdCwyLDIsIm9wdGlvbiIs'@; put 'NDEsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7ZGkoIm5nTW9kZWwiLHQuc2VsZWN0ZWRDb21wdXRlQ29udGV4dCksaWUoKSx5byh0LmdldEZpbHRlcmVkQ29tcHV0ZUNvbnRleHRzKCkpfX1mdW5jdGlvbiBTRXQobixlKXsxJm4mJkl0KDAsImNsci1zcGlubmVyIiwxOCl9ZnVuY3Rp'@; put 'b24gRUV0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDMpKDEsImxhYmVsIiw0KSxTZSgyLCJSdW5uaW5nIGFzIHVzZXIiKSx0ZSgpLEooMywicCIsNSksU2UoNCwiIFRoZSBpZGVudGl0eSB1bmRlciB3aGljaCBEYXRhIENvbnRyb2xsZXIgam9icyB3aWxsIHJ1biB3aXRoIHRoZSBzZWxlY3Rl'@; put 'ZCBjb21wdXRlIGNvbnRleHQuIFRoaXMgdXNlciBtdXN0IGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIERDIExvYyBhYm92ZS4gIiksdGUoKSxKKDUsImRpdiIsNikoNiwiZGl2Iiw3KSg3LCJwIiw4KSg4LCJzdHJvbmciKSxTZSg5KSx0ZSgpKCkoKSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2ll'@; put 'KDkpLHByKHQucnVubmluZ0FzVXNlcil9fWxldCBNRXQ9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwsdSl7dGhpcy5ldmVudFNlcnZpY2U9cix0aGlzLmRlcGxveVNlcnZpY2U9aSx0aGlzLnNhc1NlcnZpY2U9byx0aGlzLnNhc1ZpeWFTZXJ2aWNlPWEsdGhpcy5s'@; put 'b2dnZXJTZXJ2aWNlPWwsdGhpcy5oZWxwZXJTZXJ2aWNlPXUsdGhpcy5zYXNKc0NvbmZpZz1uZXcgeHAuU0FTanNDb25maWcsdGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyBLcix0aGlzLnNl'@; put 'bGVjdGVkQ29tcHV0ZUNvbnRleHQ9IiIsdGhpcy5tYWtlRGF0YVJlc3BvbnNlPSIiLHRoaXMuanNvbkZpbGU9bnVsbCx0aGlzLmF1dG9kZXBsb3lpbmc9ITEsdGhpcy5hdXRvZGVwbG95RG9uZT0hMSx0aGlzLnJlY3JlYXRlRGF0YWJhc2VNb2RhbD0hMSx0aGlzLmlzU3VibWl0dGluZ0pzb249'@; put 'ITEsdGhpcy5pc0pzb25TdWJtaXR0ZWQ9ITEsdGhpcy5yZWNyZWF0ZURhdGFiYXNlPSEwLHRoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSExLHRoaXMuYWRtaW5Hcm91cHNMb2FkaW5nPSExLHRoaXMuY3VycmVudFVzZXJJbmZvTG9hZGluZz0hMSx0aGlzLmNvbXB1dGVDb250ZXh0c0xvYWRp'@; put 'bmc9ITEsdGhpcy5hZG1pbkdyb3Vwcz1bXSx0aGlzLmNvbXB1dGVDb250ZXh0SW5mb3M9W10sdGhpcy5iYXRjaElkcz1bXSx0aGlzLnNlbGVjdGVkQmF0Y2hJZD0iIix0aGlzLnNob3dBbGxDb250ZXh0cz0hMSx0aGlzLmFsbEFkbWluR3JvdXBzPVtdLHRoaXMubWVtYmVyQWRtaW5Hcm91cHM9'@; put 'W10sdGhpcy5zaG93QWxsR3JvdXBzPSExLHRoaXMuY3VycmVudFVzZXJJbmZvPW51bGwsdGhpcy5jb21wdXRlQ29udGV4dHM9W10sdGhpcy5hdXRvRGVwbG95U3RhdHVzPXtkZXBsb3lTZXJ2aWNlUGFjazpudWxsLHJ1bk1ha2VEYXRhOm51bGx9LHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNT'@; put 'ZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5kZXBsb3lJbk5ld1dpbmRvdz0hMCx0aGlzLm1ha2VkYXRhUG9sbEludGVydmFsPW51bGx9bmdPbkluaXQoKXt0aGlzLmxvYWREYXRhKCl9bG9hZERhdGEoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXt5aWVsZCByLmdldEN1'@; put 'cnJlbnRVc2VyKCkseWllbGQgci5nZXRBZG1pbkdyb3VwcygpLHlpZWxkIHIuZ2V0Q29tcHV0ZUNvbnRleHRzKCksc2V0VGltZW91dCgoKT0+e3Iuc2VsZWN0ZWRDb21wdXRlQ29udGV4dCYmci5vbkNvbXB1dGVDb250ZXh0Q2hhbmdlKHIuc2VsZWN0ZWRDb21wdXRlQ29udGV4dCl9LDUwMCl9'@; put 'KSgpfWdldENvbXB1dGVDb250ZXh0cygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e3IuY29tcHV0ZUNvbnRleHRzTG9hZGluZz0hMCxyLnNhc1ZpeWFTZXJ2aWNlLmdldENvbXB1dGVDb250ZXh0cygpLnN1YnNjcmliZShmdW5j'@; put 'dGlvbigpe3ZhciBhPUNyKGZ1bmN0aW9uKihsKXtyLmNvbXB1dGVDb250ZXh0cz1sLml0ZW1zLHlpZWxkIHIuZ2V0Q29tcHV0ZUNvbnRleHREZXRhaWxzKCksci5jb21wdXRlQ29udGV4dHNMb2FkaW5nPSExLGkoKX0pO3JldHVybiBmdW5jdGlvbihsKXtyZXR1cm4gYS5hcHBseSh0aGlzLGFy'@; put 'Z3VtZW50cyl9fSgpLGE9PntvKGEpfSl9KX0pKCl9Z2V0Q29tcHV0ZUNvbnRleHREZXRhaWxzKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc3QgaT15aWVsZCBQcm9taXNlLmFsbChyLmNvbXB1dGVDb250ZXh0cy5tYXAobD0+bmV3IFByb21pc2UodT0+e3Iuc2FzVml5'@; put 'YVNlcnZpY2UuZ2V0Q29tcHV0ZUNvbnRleHRCeUlkKGwuaWQpLnN1YnNjcmliZShnPT57dSh7aWQ6bC5pZCxuYW1lOmwubmFtZSxydW5BczpyLmV4dHJhY3RSdW5BcyhnKSxyZXVzYWJsZToidHJ1ZSI9PT1nLmF0dHJpYnV0ZXM/LnJldXNlU2VydmVyUHJvY2Vzc2VzfSl9LGc9PntyLmxvZ2dl'@; put 'clNlcnZpY2UuZXJyb3IoYEVycm9yIHdoaWxlIGdldHRpbmcgY29tcHV0ZSBjb250ZXh0ICR7bC5uYW1lfWAsZyksdSh7aWQ6bC5pZCxuYW1lOmwubmFtZSxydW5BczpudWxsLHJldXNhYmxlOiExfSl9KX0pKSk7ci5jb21wdXRlQ29udGV4dEluZm9zPWksci5iYXRjaElkcz1bLi4ubmV3IFNl'@; put 'dChpLmZpbHRlcihsPT5sLnJldXNhYmxlJiZsLnJ1bkFzKS5tYXAobD0+bC5ydW5BcykpXSxyLmJhdGNoSWRzLmxlbmd0aCYmKHIuc2VsZWN0ZWRCYXRjaElkPXIuYmF0Y2hJZHNbMF0pO2NvbnN0IG89ci5nZXRGaWx0ZXJlZENvbXB1dGVDb250ZXh0cygpLGE9by5maW5kKGw9PiJTQVMgSm9i'@; put 'IEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiPT09bC5uYW1lKXx8b1swXTthJiYoci5zZWxlY3RlZENvbXB1dGVDb250ZXh0PWEuaWQpfSkoKX1leHRyYWN0UnVuQXMocil7cmV0dXJuIHIuYXR0cmlidXRlcz8ucnVuU2VydmVyQXN8fG51bGx9Z2V0RmlsdGVyZWRDb21wdXRlQ29udGV4dHMo'@; put 'KXtyZXR1cm4gdGhpcy5zaG93QWxsQ29udGV4dHM/dGhpcy5jb21wdXRlQ29udGV4dEluZm9zOnRoaXMuY29tcHV0ZUNvbnRleHRJbmZvcy5maWx0ZXIocj0+ci5yZXVzYWJsZSYmci5ydW5Bcz09PXRoaXMuc2VsZWN0ZWRCYXRjaElkKX1vbkJhdGNoSWRDaGFuZ2UoKXt0aGlzLmVuc3VyZVNl'@; put 'bGVjdGVkQ29tcHV0ZUNvbnRleHQoKX1vblNob3dBbGxDb250ZXh0c0NoYW5nZSgpe3RoaXMuZW5zdXJlU2VsZWN0ZWRDb21wdXRlQ29udGV4dCgpfWVuc3VyZVNlbGVjdGVkQ29tcHV0ZUNvbnRleHQoKXtjb25zdCByPXRoaXMuZ2V0RmlsdGVyZWRDb21wdXRlQ29udGV4dHMoKTtyLnNvbWUo'@; put 'bz0+by5pZD09PXRoaXMuc2VsZWN0ZWRDb21wdXRlQ29udGV4dCl8fCh0aGlzLnNlbGVjdGVkQ29tcHV0ZUNvbnRleHQ9ci5sZW5ndGg/clswXS5pZDoiIiksdGhpcy51cGRhdGVSdW5uaW5nQXNVc2VyKCl9dXBkYXRlUnVubmluZ0FzVXNlcigpe2NvbnN0IHI9dGhpcy5jb21wdXRlQ29udGV4'@; put 'dEluZm9zLmZpbmQoaT0+aS5pZD09PXRoaXMuc2VsZWN0ZWRDb21wdXRlQ29udGV4dCk7dGhpcy5ydW5uaW5nQXNVc2VyPXI/LnJ1bkFzfHx0aGlzLmN1cnJlbnRVc2VySW5mbz8uaWR8fCJ1bmtub3duIn1nZXRDdXJyZW50VXNlcigpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigp'@; put 'e3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e3IuY3VycmVudFVzZXJJbmZvTG9hZGluZz0hMCxyLnNhc1ZpeWFTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkuc3Vic2NyaWJlKGE9PntyLmN1cnJlbnRVc2VySW5mb0xvYWRpbmc9ITEsci5jdXJyZW50VXNlckluZm89YSxyLmRjUGF0aD1gL2V4'@; put 'cG9ydC92aXlhL2hvbWVzLyR7YS5pZH1gLGkoKX0sYT0+e2NvbnNvbGUuZXJyb3IoIkVycm9yIHdoaWxlIGdldHRpbmcgY3VycmVudCB1c2VyIixhKSxvKGEpfSl9KX0pKCl9Z2V0QWRtaW5Hcm91cHMoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21p'@; put 'c2UoKGksbyk9PntyLmFkbWluR3JvdXBzTG9hZGluZz0hMCxyLnNhc1ZpeWFTZXJ2aWNlLmdldEFkbWluR3JvdXBzKCkuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7dmFyIGE9Q3IoZnVuY3Rpb24qKGwpe3IuYWxsQWRtaW5Hcm91cHM9bC5pdGVtcy5tYXAodT0+KHtpZDp1LmlkLG5hbWU6dS5uYW1l'@; put 'fSkpLHlpZWxkIHIuZ2V0TWVtYmVyQWRtaW5Hcm91cHMoKSxyLmFwcGx5QWRtaW5Hcm91cEZpbHRlcigpLHIuYWRtaW5Hcm91cHNMb2FkaW5nPSExLGkoKX0pO3JldHVybiBmdW5jdGlvbihsKXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKX0pfSkoKX1nZXRNZW1iZXJBZG1p'@; put 'bkdyb3Vwcygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZShpPT57ci5zYXNWaXlhU2VydmljZS5nZXRDdXJyZW50VXNlckdyb3VwTWVtYmVyc2hpcHMoKS5zdWJzY3JpYmUobz0+e2NvbnN0IGE9by5pdGVtcy5tYXAobD0+bC5pZCk7ci5tZW1i'@; put 'ZXJBZG1pbkdyb3Vwcz1yLmFsbEFkbWluR3JvdXBzLmZpbHRlcihsPT5hLmluY2x1ZGVzKGwuaWQpKSxpKCl9LG89PntyLmxvZ2dlclNlcnZpY2UuZXJyb3IoIkVycm9yIHdoaWxlIGdldHRpbmcgdXNlciBncm91cCBtZW1iZXJzaGlwcyIsbyksci5tZW1iZXJBZG1pbkdyb3Vwcz1yLmFsbEFk'@; put 'bWluR3JvdXBzLGkoKX0pfSl9KSgpfW9uU2hvd0FsbEdyb3Vwc0NoYW5nZSgpe3RoaXMuYXBwbHlBZG1pbkdyb3VwRmlsdGVyKCl9YXBwbHlBZG1pbkdyb3VwRmlsdGVyKCl7dGhpcy5hZG1pbkdyb3Vwcz10aGlzLnNob3dBbGxHcm91cHN8fCF0aGlzLm1lbWJlckFkbWluR3JvdXBzLmxlbmd0'@; put 'aD90aGlzLmFsbEFkbWluR3JvdXBzOnRoaXMubWVtYmVyQWRtaW5Hcm91cHMsIXRoaXMuYWRtaW5Hcm91cHMuc29tZShpPT5pLmlkPT09dGhpcy5zZWxlY3RlZEFkbWluR3JvdXApJiZ0aGlzLmFkbWluR3JvdXBzLmxlbmd0aCYmKHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPXRoaXMuYWRtaW5H'@; put 'cm91cHNbMF0uaWQpfW9uQ29tcHV0ZUNvbnRleHRDaGFuZ2Uocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aS5zZWxlY3RlZENvbXB1dGVDb250ZXh0PXIsaS51cGRhdGVSdW5uaW5nQXNVc2VyKCl9KSgpfWdldENvbXB1dGVDb250ZXh0TmFtZShyKXtyZXR1cm4gdGhpcy5j'@; put 'b21wdXRlQ29udGV4dHMuZmluZChpPT5pLmlkPT09cik/Lm5hbWV8fHZvaWQgMH1leGVjdXRlSnNvbigpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3IuaXNTdWJtaXR0aW5nSnNvbj0hMDt0cnl7eWllbGQgci5zYXNKcy5kZXBsb3lTZXJ2aWNlUGFjayhyLmpzb25GaWxlLHIu'@; put 'ZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvYyx2b2lkIDAsdm9pZCAwLCEwKSxyLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITAsci5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2goaSl7bGV0IG89IiI7cmV0dXJuIG89InN0cmluZyIhPXR5cGVvZiBpLm1lc3NhZ2U/SlNPTi5z'@; put 'dHJpbmdpZnkoaSkucmVwbGFjZSgvXFwvZ20sIiIpOmkubWVzc2FnZSxyLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITEsci5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRGVwbG95IGVycm9yIixgRXhjZXB0aW9uOiBcbiAkeyIiIT09bz9vOml9YCksci5hdXRvZGVw'@; put 'bG95aW5nPSExLHZvaWQoci5hdXRvZGVwbG95RG9uZT0hMSl9ci5pc1N1Ym1pdHRpbmdKc29uPSExfSkoKX1ydW5BdXRvRGVwbG95KCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKGk9ITEpe3IuZGVwbG95SW5OZXdXaW5kb3d8fChyLmF1dG9kZXBsb3lpbmc9ITApLGkmJnIuZXhl'@; put 'Y3V0ZUpzb24oKSxyLnJlY3JlYXRlRGF0YWJhc2U/ci5jcmVhdGVEYXRhYmFzZSgpOnIuZGVwbG95SW5OZXdXaW5kb3d8fChyLmF1dG9kZXBsb3lEb25lPSEwKX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jcmVhdGVEYXRhYmFzZSgpe2xldCByPXtmcm9tanM6W3tBRE1JTjp0aGlzLnNlbGVj'@; put 'dGVkQWRtaW5Hcm91cCxEQ1BBVEg6dGhpcy5kY1BhdGh9XX0saT10aGlzLnNhc0pzQ29uZmlnLmNvbnRleHROYW1lO2lmKHRoaXMuc2VsZWN0ZWRDb21wdXRlQ29udGV4dC5sZW5ndGgmJnRoaXMuY29tcHV0ZUNvbnRleHRzLmxlbmd0aCl7Y29uc3QgYT10aGlzLmdldENvbXB1dGVDb250ZXh0'@; put 'TmFtZSh0aGlzLnNlbGVjdGVkQ29tcHV0ZUNvbnRleHQpO2EmJihpPWEpfWxldCBvPXt1c2VDb21wdXRlQXBpOm51bGwsY29udGV4dE5hbWU6aSxkZWJ1ZzohMH07dGhpcy5kZXBsb3lJbk5ld1dpbmRvdz90aGlzLnJ1bk1ha2VkYXRhSW5OZXdXaW5kb3coe2NvbnRleHROYW1lOmksYWRtaW46'@; put 'dGhpcy5zZWxlY3RlZEFkbWluR3JvdXAsZGNQYXRoOnRoaXMuZGNQYXRofSk6dGhpcy5zYXNKcy5yZXF1ZXN0KCJzZXJ2aWNlcy9hZG1pbi9tYWtlZGF0YSIscixvLCgpPT57dGhpcy5zYXNTZXJ2aWNlLnNob3VsZExvZ2luLm5leHQoITApfSkudGhlbihhPT57dGhpcy5hdXRvZGVwbG95RG9u'@; put 'ZT0hMDt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGEpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1hfXRoaXMuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YT0hIShhLnJlc3VsdCYmYS5yZXN1bHQubGVuZ3RoPjApLHR5cGVvZiBhLnNhc2pzQWJvcnQ8'@; put 'InUiJiZ0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgibWFrZWRhdGEiLGEuc2FzanNBYm9ydFswXS5NU0cse1NZU1dBUk5JTkdURVhUOmEuU1lTV0FSTklOR1RFWFQsU1lTRVJST1JURVhUOmEuU1lTRVJST1JURVhULE1BQzphLnNhc2pzQWJvcnRbMF0uTUFDLF9QUk9HUkFNOmEu'@; put 'X1BST0dSQU19KSx0aGlzLmhlbHBlclNlcnZpY2UuaXNTdHJlYW1pbmdWaXlhKCkmJnRoaXMudXBkYXRlSW5kZXhIdG1sQ29tcHV0ZUNvbnRleHQoKX0pLmNhdGNoKGE9Pnt0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgibWFrZWRhdGEiLEpTT04uc3RyaW5naWZ5KGEpKSx0aGlz'@; put 'LmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGE9ITEsdGhpcy5hdXRvZGVwbG95RG9uZT0hMDt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGEpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1hfX0pfXJ1bk1ha2VkYXRhSW5OZXdXaW5kb3cocil7bGV0IGk9'@; put 'dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsbz10aGlzLnNhc2pzQ29uZmlnLmFwcExvYztjb25zdCBhPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oaSthKyIvP19wcm9ncmFtPSIrbysiL3NlcnZpY2VzL2FkbWluL21ha2VkYXRhIitgJl9jb250ZXh0'@; put 'bmFtZT0ke3IuY29udGV4dE5hbWV9YCtgJmFkbWluPSR7ci5hZG1pbn1gK2AmZGNwYXRoPSR7ci5kY1BhdGh9Jl9kZWJ1Zz0xMzFgKSx0aGlzLnBvbGxNYWtlZGF0YUNvbXBsZXRpb24oKX1wb2xsTWFrZWRhdGFDb21wbGV0aW9uKCl7dmFyIHI9dGhpczt0aGlzLm1ha2VkYXRhUG9sbEludGVy'@; put 'dmFsJiZjbGVhckludGVydmFsKHRoaXMubWFrZWRhdGFQb2xsSW50ZXJ2YWwpO2xldCBpPTA7dGhpcy5tYWtlZGF0YVBvbGxJbnRlcnZhbD1zZXRJbnRlcnZhbChDcihmdW5jdGlvbiooKXtpKyssY29uc29sZS5sb2coYHBvbGxNYWtlZGF0YUNvbXBsZXRpb246IGNoZWNraW5nIGlmIG1ha2Vk'@; put 'YXRhIGlzIGdvbmUgKGF0dGVtcHQgJHtpfS8xMjApYCk7dHJ5eyh5aWVsZCByLnNhc1NlcnZpY2Uudml5YU1ha2VkYXRhU3VjY2Vzc2Z1bGwoKSkmJihjb25zb2xlLmxvZygicG9sbE1ha2VkYXRhQ29tcGxldGlvbjogbWFrZWRhdGEgam9iIGlzIGdvbmUsIHJlbG9hZGluZyBhcHAiKSxjbGVh'@; put 'ckludGVydmFsKHIubWFrZWRhdGFQb2xsSW50ZXJ2YWwpLHIubWFrZWRhdGFQb2xsSW50ZXJ2YWw9bnVsbCx3aW5kb3cubG9jYXRpb24uaHJlZj13aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKX1jYXRjaChhKXtjb25zb2xlLmVycm9yKCJwb2xsTWFrZWRhdGFDb21wbGV0aW9u'@; put 'OiBlcnJvciBjaGVja2luZyIsYSl9aT49MTIwJiYoY29uc29sZS53YXJuKCJwb2xsTWFrZWRhdGFDb21wbGV0aW9uOiB0aW1lZCBvdXQgYWZ0ZXIgMTAgbWludXRlcywgc3RvcHBpbmcgcG9sbCIpLGNsZWFySW50ZXJ2YWwoci5tYWtlZGF0YVBvbGxJbnRlcnZhbCksci5tYWtlZGF0YVBvbGxJ'@; put 'bnRlcnZhbD1udWxsKX0pLDVlMyl9dXBkYXRlSW5kZXhIdG1sQ29tcHV0ZUNvbnRleHQoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtjb25zdCBpPWxvY2F0aW9uLnNlYXJjaC5zcGxpdCgiLyIpLnBvcCgpLG89aT8uaW5jbHVkZXMoIi4iKT9pOnZvaWQgMDtpZighbylyZXR1'@; put 'cm4gdm9pZCByLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJXZSBjb3VsZCBub3QgZmlndXJlIG91dCB0aGUgZmlsZSBuYW1lIG9mIGBpbmRleC5odG1sYCBiYXNlZCBvbiB0aGUgdXJsLiIpO2NvbnN0IGE9eWllbGQgci5zYXNTZXJ2aWNlLmdldEZpbGVDb250ZW50KGAke3Iu'@; put 'YXBwTG9jfS9zZXJ2aWNlc2Asbyk7aWYoIWEpcmV0dXJuIHZvaWQgci5sb2dnZXJTZXJ2aWNlLmVycm9yKGBGYWlsZWQgdG8gZ2V0ICR7b30gYXQgJHtyLmFwcExvY30vc2VydmljZXNgKTtjb25zdCBsPXIuZ2V0Q29tcHV0ZUNvbnRleHROYW1lKHIuc2VsZWN0ZWRDb21wdXRlQ29udGV4dCk7'@; put 'aWYoIWwpcmV0dXJuIHZvaWQgci5sb2dnZXJTZXJ2aWNlLmVycm9yKGBDb21wdXRlIGNvbnRleHQgbmFtZSBub3QgZm91bmQgZm9yIElEOiAke3Iuc2VsZWN0ZWRDb21wdXRlQ29udGV4dH0gfCBMaXN0OiAke0pTT04uc3RyaW5naWZ5KHIuY29tcHV0ZUNvbnRleHRzKX1gKTtjb25zdCB1PWEu'@; put 'cmVwbGFjZSgvY29udGV4dG5hbWU9IlteIl0qIi9nLCgpPT5gY29udGV4dG5hbWU9IiR7bH0iYCk7eWllbGQgci5zYXNTZXJ2aWNlLnVwZGF0ZUZpbGVDb250ZW50KGAke3IuYXBwTG9jfS9zZXJ2aWNlc2Asbyx1KS5jYXRjaChnPT57ci5sb2dnZXJTZXJ2aWNlLmVycm9yKGBGYWlsZWQgdG8g'@; put 'dXBkYXRlIERhdGFDb250cm9sbGVyLmh0bWw6ICR7Z31gKX0pfSkoKX1kb3dubG9hZEZpbGUocixpLG89InR4dCIpe3RoaXMuZGVwbG95U2VydmljZS5kb3dubG9hZEZpbGUocixpLG8pfW9uSnNvbkZpbGVDaGFuZ2Uocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7bGV0IG89'@; put 'ci50YXJnZXQuZmlsZXNbMF07aS5qc29uRmlsZT15aWVsZCBpLmRlcGxveVNlcnZpY2UucmVhZEZpbGUobyl9KSgpfXJlY3JlYXRlRGF0YWJhc2VDbGlja2VkKHIpeyEwPT09ci50YXJnZXQuY2hlY2tlZCYmKHRoaXMucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSEwKX1jbGVhclVwbG9hZElucHV0'@; put 'KHIpe3RoaXMuZGVwbG95U2VydmljZS5jbGVhclVwbG9hZElucHV0KHIpfW9wZW5TYXNSZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub3BlblJlcXVlc3RzTW9kYWwoKX1uYXZpZ2F0ZVRvSG9tZSgpe3RoaXMub25OYXZpZ2F0ZVRvSG9tZS5lbWl0KCl9c3RhdGljI2U9bj0oKT0+'@; put 'KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUodWQpLHplKG54ZSksemUoaWMpLHplKENpZSksemUoeDMpLHplKGZoKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1hdXRvbWF0aWMtZGVwbG95Il1dLGlucHV0czp7c2Fz'@; put 'SnM6InNhc0pzIixzYXNKc0NvbmZpZzoic2FzSnNDb25maWciLGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0ZXJTZXR0aW5ncyIsYXBwTG9jOiJhcHBMb2MiLGRjUGF0aDoiZGNQYXRoIixzZWxlY3RlZEFkbWluR3JvdXA6InNlbGVjdGVkQWRtaW5Hcm91cCJ9LG91dHB1dHM6e29uTmF2aWdh'@; put 'dGVUb0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxzdGFuZGFsb25lOiExLGRlY2xzOjc0LHZhcnM6MTUsY29uc3RzOltbMSwiYXV0by1kZXBsb3kiXSxbMSwidGV4dC1jZW50ZXIiLCJteS0xNSJdLFsxLCJkZXBsb3ktaW50cm8iXSxbMSwiZGVwbG95LWZpZWxkIl0sWzEsImNsci1jb250cm9s'@; put 'LWxhYmVsIl0sWzEsImRlcGxveS1maWVsZC1kZXNjcmlwdGlvbiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbMSwibS0wIl0sWyJmb3IiLCJkY2xvYyIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVy'@; put 'IiwiZGMtbG9jLWlucHV0LXdyYXBwZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiLCJzbWFsbC1tdCJdLFsiY2xySW5wdXQiLCIiLCJuYW1lIiwiZGNsb2MiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJmb3IiLCJhZG1pbkdyb3VwIiwxLCJjbHItY29udHJvbC1sYWJlbCJdLFsx'@; put 'LCJtdC0wIl0sWyJpZCIsInNob3ctYWxsLWdyb3Vwcy10b2dnbGUiLCJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJmb3IiLCJzaG93LWFsbC1ncm91cHMtdG9nZ2xlIl0sWyJjbHJTZWxlY3QiLCIiLCJuYW1lIiwiYWRtaW5H'@; put 'cm91cCIsMywibmdNb2RlbCJdLFsiY2xySW5saW5lIiwiIiwxLCJzcGlubmVyLXNtIl0sWyJmb3IiLCJjb21wdXRlQ29udGV4dCIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbImlkIiwic2hvdy1hbGwtY29udGV4dHMtdG9nZ2xlIiwidHlwZSIsImNoZWNrYm94IiwiY2xyVG9nZ2xlIiwiIiwz'@; put 'LCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsiZm9yIiwic2hvdy1hbGwtY29udGV4dHMtdG9nZ2xlIl0sWyJjbHJTZWxlY3QiLCIiLCJuYW1lIiwiY29tcHV0ZUNvbnRleHQiLDMsIm5nTW9kZWwiXSxbMSwiYnRuLWF1dG9kZXBsb3kiLCJidG4iLCJidG4tcHJpbWFyeSIsImQtaW5saW5l'@; put 'LWJsb2NrIiwibXItMTAiLDMsImNsaWNrIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIs'@; put 'ImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsxLCJzcGlubmVyLWJveCJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1tZCJdLFsxLCJtLTAiLCJhbGlnbi1zZWxmLXN0YXJ0Il0sWzEsInctMTAwIl0sWzEsImRlcGxveS1zdGF0dXMtcm93Il0sWzEsImJ1dHRvbnMiXSxbMSwiYnRu'@; put 'IiwiYnRuLXByaW1hcnkiLCJtdC0xNSIsIm1yLTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsInRpbWVzLWNpcmNsZSIsMSwiZGVwbG95LWVycm9yIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5LW91dGxpbmUiLCJtdC0xNSIsIm1yLTAiLDMsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5LW91'@; put 'dGxpbmUiLCJtdC0xNSIsIm1yLTAiLCJhbGlnbi1zZWxmLWVuZCIsMywiY2xpY2siXSxbInNoYXBlIiwic3VjY2Vzcy1zdGFuZGFyZCIsMSwiZGVwbG95LXN1Y2Nlc3MiXSxbImNsclNlbGVjdCIsIiIsIm5hbWUiLCJhZG1pbkdyb3VwIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsz'@; put 'LCJ2YWx1ZSJdLFsiZm9yIiwiYmF0Y2hJZCIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbImNsclNlbGVjdCIsIiIsIm5hbWUiLCJiYXRjaElkIiwzLCJuZ01vZGVsIl0sWyJjbHJTZWxlY3QiLCIiLCJuYW1lIiwiYmF0Y2hJZCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbImNsclNl'@; put 'bGVjdCIsIiIsIm5hbWUiLCJjb21wdXRlQ29udGV4dCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJih2dCgwLGhFdCw0LDIsImRpdiIsMCksSigxLCJoNCIsMSksU2UoMiwiVml5YSBEZXBsb3kiKSx0ZSgpLEooMywicCIsMiksU2Uo'@; put 'NCwiIENvbmZpZ3VyZSBhbmQgZGVwbG95IERhdGEgQ29udHJvbGxlciB0byB5b3VyIFZpeWEgZW52aXJvbm1lbnQuIERlcGxveW1lbnQgY3JlYXRlcyB0aGUgYmFja2VuZCBTQVMgc2VydmljZXMgYW5kIHRoZSBjb250cm9sIGxpYnJhcnkgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uXG4iKSx0'@; put 'ZSgpLEl0KDUsImhyIiksSig2LCJkaXYiLDMpKDcsImxhYmVsIiw0KSxTZSg4LCJBcHAgTG9jIiksdGUoKSxKKDksInAiLDUpLFNlKDEwLCIgVGhlIFNBUyBkcml2ZSBmb2xkZXIgaW4gd2hpY2ggdGhlIERhdGEgQ29udHJvbGxlciBmcm9udGVuZCBhbmQgc2VydmljZXMgYXJlIGRlcGxveWVk'@; put 'LiBEZXJpdmVkIGZyb20geW91ciBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24gXHUyMDE0IGl0IGNhbm5vdCBiZSBjaGFuZ2VkIGhlcmUuICIpLHRlKCksSigxMSwiZGl2Iiw2KSgxMiwiZGl2Iiw3KSgxMywicCIsOCksU2UoMTQpLHRlKCkoKSgpKCksSigxNSwiZGl2IiwzKSgxNiwibGFiZWwi'@; put 'LDkpLFNlKDE3LCJEQyBMb2MiKSx0ZSgpLEooMTgsInAiLDUpLFNlKDE5LCIgQSBwaHlzaWNhbCBkaXJlY3Rvcnkgb24gdGhlIGNvbXB1dGUgc2VydmVyIHRvIHdoaWNoIHRoZSBkZXBsb3ltZW50IHVzZXIgY2FuIHdyaXRlLiBEYXRhIENvbnRyb2xsZXIgc3RvcmVzIGl0cyBjb250cm9sIHRh'@; put 'Ymxlcywgc3RhZ2luZyBhcmVhIGFuZCBhdWRpdCBoaXN0b3J5IGhlcmUuICIpLHRlKCksSigyMCwiZGl2IiwxMCkoMjEsImRpdiIsMTEpKDIyLCJpbnB1dCIsMTIpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5kY1BhdGgsbCl8fChvLmRjUGF0aD1sKSxsfSks'@; put 'dGUoKSgpKCkoKSxKKDIzLCJkaXYiLDMpKDI0LCJsYWJlbCIsMTMpLFNlKDI1LCJTQVMgQWRtaW4gZ3JvdXAiKSx0ZSgpLEooMjYsInAiLDUpLFNlKDI3LCIgVGhlIGdyb3VwIHlvdSBzZWxlY3QgYmVjb21lcyB0aGUgRGF0YSBDb250cm9sbGVyIEFkbWluIEdyb3VwIFx1MjAxNCBldmVyeW9u'@; put 'ZSBpbiBpdCB3aWxsIGhhdmUgdW5yZXN0cmljdGVkIGFjY2VzcyB0byBEYXRhIENvbnRyb2xsZXIuIEJ5IGRlZmF1bHQgdGhlIGxpc3QgaXMgZmlsdGVyZWQgdG8gdGhlIGdyb3VwcyB5b3VyIGlkZW50aXR5ICIpLHZ0KDI4LGZFdCw0LDEpLFNlKDI5LCIgaXMgYSBtZW1iZXIgb2YuIFRvZ2ds'@; put 'ZSBiZWxvdyB0byBsaXN0IGV2ZXJ5IGdyb3VwIG9uIHRoZSBWaXlhIHNlcnZlci4gIiksdGUoKSxKKDMwLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMTQpKDMxLCJjbHItdG9nZ2xlLXdyYXBwZXIiKSgzMiwiaW5wdXQiLDE1KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJu'@; put 'IGZpKG8uc2hvd0FsbEdyb3VwcyxsKXx8KG8uc2hvd0FsbEdyb3Vwcz1sKSxsfSksd3QoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25TaG93QWxsR3JvdXBzQ2hhbmdlKCl9KSx0ZSgpLEooMzMsImxhYmVsIiwxNiksU2UoMzQsIlNob3cgYWxsIGdyb3VwcyIpLHRlKCko'@; put 'KSgpLEooMzUsImRpdiIsNikoMzYsImRpdiIsMTEpLHZ0KDM3LGdFdCwzLDEsInNlbGVjdCIsMTcpLHZ0KDM4LG1FdCwxLDAsImNsci1zcGlubmVyIiwxOCksdGUoKSgpKCksdnQoMzksYkV0LDEyLDIsImRpdiIsMyksSig0MCwiZGl2IiwzKSg0MSwibGFiZWwiLDE5KSxTZSg0MiwiQ29tcHV0'@; put 'ZSBDb250ZXh0IiksdGUoKSxKKDQzLCJwIiw1KSxTZSg0NCwiIFRoZSBjb21wdXRlIGNvbnRleHQgdXNlZCB0byBydW4gdGhlIERhdGEgQ29udHJvbGxlciBzZXJ2aWNlcyAoaW5jbHVkaW5nIHRoZSAiKSxKKDQ1LCJjb2RlIiksU2UoNDYsIm1ha2VkYXRhIiksdGUoKSxTZSg0NywiIGRlcGxv'@; put 'eW1lbnQgam9iKS4gT25seSByZXVzYWJsZSBjb250ZXh0cyBtYXRjaGluZyB0aGUgc2VsZWN0ZWQgQmF0Y2ggSUQgYXJlIHNob3duLCB1bmxlc3MgdGhlIHRvZ2dsZSBiZWxvdyBpcyBlbmFibGVkLiAiKSx0ZSgpLEooNDgsImNsci10b2dnbGUtY29udGFpbmVyIiwxNCkoNDksImNsci10b2dn'@; put 'bGUtd3JhcHBlciIpKDUwLCJpbnB1dCIsMjApLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5zaG93QWxsQ29udGV4dHMsbCl8fChvLnNob3dBbGxDb250ZXh0cz1sKSxsfSksd3QoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25TaG93QWxs'@; put 'Q29udGV4dHNDaGFuZ2UoKX0pLHRlKCksSig1MSwibGFiZWwiLDIxKSxTZSg1MiwiU2hvdyBhbGwgY29tcHV0ZSBjb250ZXh0cyIpLHRlKCkoKSgpLEooNTMsImRpdiIsNikoNTQsImRpdiIsMTEpLHZ0KDU1LENFdCwzLDEsInNlbGVjdCIsMjIpLHZ0KDU2LFNFdCwxLDAsImNsci1zcGlubmVy'@; put 'IiwxOCksdGUoKSgpKCksdnQoNTcsRUV0LDEwLDEsImRpdiIsMyksSXQoNTgsImhyIiksSig1OSwiYnV0dG9uIiwyMyksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLnJ1bkF1dG9EZXBsb3koKX0pLFNlKDYwLCIgRGVwbG95XG4iKSx0ZSgpLEooNjEsImNsci1tb2RhbCIsMjQpLGhp'@; put 'KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGwpe3JldHVybiBmaShvLnJlY3JlYXRlRGF0YWJhc2VNb2RhbCxsKXx8KG8ucmVjcmVhdGVEYXRhYmFzZU1vZGFsPWwpLGx9KSxKKDYyLCJoMyIsMjUpLFNlKDYzLCJXYXJuaW5nIiksdGUoKSxKKDY0LCJkaXYiLDI2KSxTZSg2NSwiIFRo'@; put 'aXMgYWN0aW9uIHdpbGwgcmVjcmVhdGUgdGhlIGRhdGFiYXNlIChpZiBpdCBleGlzdHMpLiBGb3IgYW4gaW5pdGlhbCBkZXBsb3ltZW50LCB0aGlzIGlzIGV4cGVjdGVkLiBJZiB0aGlzIGlzIGEgcmUtZGVwbG95bWVudCwgeW91IHdpbGwgbG9zZSBhbnkgZXhpc3RpbmcgdGFibGVzIGluICIp'@; put 'LEooNjYsInN0cm9uZyIpLFNlKDY3KSx0ZSgpLFNlKDY4LCIuICIpLHRlKCksSig2OSwiZGl2IiwyNykoNzAsImJ1dHRvbiIsMjgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gby5yZWNyZWF0ZURhdGFiYXNlTW9kYWw9ITEsby5yZWNyZWF0ZURhdGFiYXNlPSExfSksU2UoNzEsIiBD'@; put 'YW5jZWwgIiksdGUoKSxKKDcyLCJidXR0b24iLDI4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSExLG8ucmVjcmVhdGVEYXRhYmFzZT0hMH0pLFNlKDczLCIgT2sgIiksdGUoKSgpKCkpLDImaSYmKF90KG8uYXV0b2RlcGxveWluZz8wOi0x'@; put 'KSxpZSgxNCkscHIoby5hcHBMb2MpLGllKDgpLGRpKCJuZ01vZGVsIixvLmRjUGF0aCksaWUoNiksX3QobnVsbCE9by5jdXJyZW50VXNlckluZm8mJm8uY3VycmVudFVzZXJJbmZvLmlkPzI4Oi0xKSxpZSg0KSxkaSgibmdNb2RlbCIsby5zaG93QWxsR3JvdXBzKSxpZSg1KSxfdChvLmFkbWlu'@; put 'R3JvdXBzTG9hZGluZz8tMTozNyksaWUoKSxfdChvLmFkbWluR3JvdXBzTG9hZGluZz8zODotMSksaWUoKSxfdChvLnNob3dBbGxDb250ZXh0cz8tMTozOSksaWUoMTEpLGRpKCJuZ01vZGVsIixvLnNob3dBbGxDb250ZXh0cyksaWUoNSksX3Qoby5jb21wdXRlQ29udGV4dHNMb2FkaW5nPy0x'@; put 'OjU1KSxpZSgpLF90KG8uY29tcHV0ZUNvbnRleHRzTG9hZGluZz81NjotMSksaWUoKSxfdChvLnJ1bm5pbmdBc1VzZXI/NTc6LTEpLGllKDQpLGRpKCJjbHJNb2RhbE9wZW4iLG8ucmVjcmVhdGVEYXRhYmFzZU1vZGFsKSxydCgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDYpLHByKG8uZGNQ'@; put 'YXRoKSl9LGRlcGVuZGVuY2llczpbWGcsUWcsbHUsSDIsS2csb2MsWGwsY3UseGQsbWgsZWwsVTIsRXYsRmYsUGYscWIsejJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IGNzZT0oKT0+KHtzdGFuZGFsb25lOiEwfSk7ZnVuY3Rpb24gVEV0KG4sZSl7MSZuJiYo'@; put 'SigwLCJkaXYiLDQpKDEsInAiLDUpLFNlKDIsIlBsZWFzZSBsb2cgaW4gZmlyc3QiKSx0ZSgpLEooMywibGFiZWwiLDYpLFNlKDQsIlVzZXJuYW1lIiksdGUoKSxKKDUsImRpdiIsNykoNiwiZGl2Iiw4KSxJdCg3LCJpbnB1dCIsOSksdGUoKSgpLEooOCwibGFiZWwiLDEwKSxTZSg5LCJQYXNz'@; put 'd29yZCIpLHRlKCksSigxMCwiZGl2Iiw3KSgxMSwiZGl2Iiw4KSxJdCgxMiwiaW5wdXQiLDExKSx0ZSgpKCksSigxMywiYnV0dG9uIiwxMiksU2UoMTQsIkxvZyBpbiIpLHRlKCkoKSl9ZnVuY3Rpb24geEV0KG4sZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iLDE4KSxTZSgxKSx0ZSgpKSwyJm4p'@; put 'e2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoInZhbHVlIix0LmlkKSxpZSgpLFNyKCIgIix0Lm5hbWUsIiAiKX19ZnVuY3Rpb24gQUV0KG4sZSl7aWYoMSZuJiYoSigwLCJzcGFuIiksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKCksU3IoIiggIix0LmF0dHJpYnV0'@; put 'ZXMuc3lzVXNlcklkLCIgKSIpfX1mdW5jdGlvbiBrRXQobixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsMTgpLFNlKDEpLHZ0KDIsQUV0LDIsMSwic3BhbiIpLEFjKDMsImpzb24iKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoInZhbHVlIix0Lm5hbWUpLGllKCksU3IoIiAi'@; put 'LHQubmFtZSwiICIpLGllKCksX3QoInt9IiE9VGQoMywzLHQuYXR0cmlidXRlcyk/MjotMSl9fWZ1bmN0aW9uIFJFdChuLGUpezEmbiYmKEooMCwic3BhbiIpLFNlKDEsIkpTT04gU3VibWl0dGVkIFN1Y2Nlc3NmdWxseSIpLHRlKCkpfWZ1bmN0aW9uIElFdChuLGUpe2lmKDEmbil7Y29uc3Qg'@; put 'dD13bigpO0ooMCwiYnV0dG9uIiwzNCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5kb3dubG9hZFNhc1ByZWNvZGVGaWxlKCkpfSksSXQoMSwiY2xyLWljb24iLDM1KSx0ZSgpfX1mdW5jdGlvbiBERXQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAs'@; put 'InAiLDM2KSxTZSgxLCJGaWxlIGV4ZWN1dGUgY29tcGxldGVkIiksdGUoKSxJdCgyLCJociIpLEooMywiZGl2IikoNCwiYnV0dG9uIiwzNyksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIFhlKGkuZG93bmxvYWRGaWxlKGkuam9iTG9nLCJleGVjdXRl'@; put 'LXNjcmlwdC1sb2ciLCJ0eHQiKSl9KSxTZSg1LCIgRG93bmxvYWQgbG9nICIpLHRlKCkoKX19ZnVuY3Rpb24gTEV0KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDM4KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoKSxTcigiICIsdC5tYWtlRGF0YVJlc3BvbnNlLCIgIil9fWZ1'@; put 'bmN0aW9uIE9FdChuLGUpezEmbiYmKEooMCwic3BhbiIsMjMpLFNlKDEsIiBWYWxpZGF0aW5nIGRlcGxveS4uLiAiKSx0ZSgpLEooMiwic3BhbiIpLFNlKDMsIiBWYWxpZGF0aW5nIGRlcGxveS4uLiAiKSx0ZSgpKX1mdW5jdGlvbiBORXQobixlKXsxJm4mJihJdCgwLCJjbHItaWNvbiIsNDEp'@; put 'LEooMSwic3BhbiIpLFNlKDIsIiBWYWxpZGF0aW9uIGZhaWxlZCAiKSx0ZSgpKX1mdW5jdGlvbiBGRXQobixlKXsxJm4mJihJdCgwLCJjbHItaWNvbiIsNDIpLEooMSwic3BhbiIpLFNlKDIsIiBWYWxpZGF0aW9uIHN1Y2NlZWRlZCAiKSx0ZSgpKX1mdW5jdGlvbiBQRXQobixlKXtpZigxJm4m'@; put 'JihKKDAsImRpdiIsNDApLHZ0KDEsT0V0LDQsMCksdnQoMixORXQsMywwKSx2dCgzLEZFdCwzLDApLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLF90KHQuaXNWYWxpZGF0aW5nPzE6LTEpLGllKCksX3QodC5pc1ZhbGlkYXRpbmd8fCJlcnJvciIhPT10LnZhbGlkYXRpb25TdGF0ZT8t'@; put 'MToyKSxpZSgpLF90KHQuaXNWYWxpZGF0aW5nfHwic3VjY2VzcyIhPT10LnZhbGlkYXRpb25TdGF0ZT8tMTozKX19ZnVuY3Rpb24gSEV0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJwIiwzNiksU2UoMSwiQ3JlYXRlIERhdGFiYXNlIENvbXBsZXRlZCIpLHRlKCksSXQoMiwiaHIi'@; put 'KSx2dCgzLExFdCwyLDEsImRpdiIsMzgpLEooNCwiYnV0dG9uIiwzOSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5uYXZpZ2F0ZVRvSG9tZSgpKX0pLFNlKDUsIiBMZXQncyBnZXQgc3RhcnRlZCAiKSx0ZSgpLEooNiwiYnV0dG9uIiwzOSksd3QoImNsaWNr'@; put 'IixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIFhlKGkuZG93bmxvYWRGaWxlKGkubWFrZURhdGFSZXNwb25zZSwiY3JlYXRlLWRhdGFiYXNlLWxvZyIsInR4dCIpKX0pLFNlKDcsIiBEb3dubG9hZCBsb2cgIiksdGUoKSxKKDgsImJ1dHRvbiIsMzkpLHd0KCJjbGljayIs'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikudmFsaWRhdGVEZXBsb3koKSl9KSxTZSg5LCIgVmFsaWRhdGUgIiksdGUoKSx2dCgxMCxQRXQsNCwzLCJkaXYiLDQwKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7aWUoMyksX3QodC5tYWtlRGF0YVJlc3BvbnNlLmxlbmd0aD4wPzM6LTEp'@; put 'LGllKDcpLF90KCJub25lIiE9PXQudmFsaWRhdGlvblN0YXRlfHx0LmlzVmFsaWRhdGluZz8xMDotMSl9fWZ1bmN0aW9uIFZFdChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZm9ybSIpKDEsImRpdiIsMTMpKDIsImxhYmVsIiwxNCksU2UoMywiQWRtaW4gZ3JvdXAiKSx0ZSgpLEoo'@; put 'NCwiZGl2IiwxNSkoNSwiZGl2IiwxNikoNiwic2VsZWN0IiwxNyksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKTtyZXR1cm4gZmkoby5zZWxlY3RlZEFkbWluR3JvdXAsaSl8fChvLnNlbGVjdGVkQWRtaW5Hcm91cD1pKSxYZShpKX0pLF9vKDcseEV0'@; put 'LDIsMiwib3B0aW9uIiwxOCxDbyksdGUoKSgpKCkoKSxKKDksImRpdiIsMTMpKDEwLCJkaXYiKSgxMSwibGFiZWwiLDE0KSxTZSgxMiwiQ29udGV4dCIpLHRlKCksSigxMywiZGl2IiwxNSkoMTQsImRpdiIsMTYpKDE1LCJzZWxlY3QiLDE5KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24o'@; put 'aSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLnNlbGVjdGVkQ29udGV4dCxpKXx8KG8uc2VsZWN0ZWRDb250ZXh0PWkpLFhlKGkpfSksX28oMTYsa0V0LDQsNSwib3B0aW9uIiwxOCxDbyksdGUoKSgpKCksSigxOCwiYnV0dG9uIiwyMCksd3QoImNsaWNrIixmdW5jdGlvbigpe3Jl'@; put 'dHVybiBZZSh0KSxYZShUZSgpLmV4ZWN1dGFibGVDb250ZXh0KCkpfSksSXQoMTksImNsci1pY29uIiwyMSksdGUoKSgpLEooMjAsImRpdiIsMjIpKDIxLCJzcGFuIiwyMyksU2UoMjIsIiBMb2FkaW5nIGNvbnRleHRzLi4uICIpLHRlKCksSigyMywic3BhbiIpLFNlKDI0LCIgTG9hZGluZyBj'@; put 'b250ZXh0cy4uLiAiKSx0ZSgpKCksSigyNSwibGFiZWwiLDI0KSxTZSgyNiwiREMgTG9jIiksdGUoKSxKKDI3LCJkaXYiLDcpKDI4LCJkaXYiLDgpKDI5LCJpbnB1dCIsMjUpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCk7cmV0dXJuIGZpKG8uZGNQ'@; put 'YXRoLGkpfHwoby5kY1BhdGg9aSksWGUoaSl9KSx3dCgiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuc2F2ZURjUGF0aCgpKX0pLHRlKCkoKSgpLEooMzAsInAiLDI2KSxTZSgzMSwiIFNlbGVjdCBKU09OIGZpbGUgdG8gdXBsb2FkIChqc29uIGJ1aWxkIGZpbGUg'@; put 'cHJlbG9hZGVkKTogIiksdGUoKSxKKDMyLCJkaXYiLDI3KSgzMywiaW5wdXQiLDI4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgpLmNsZWFyVXBsb2FkSW5wdXQoaSkpfSkoImNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKCkub25Kc29u'@; put 'RmlsZUNoYW5nZShpKSl9KSx0ZSgpKCksSigzNCwiZGl2IiwyOSkoMzUsImJ1dHRvbiIsMzApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5leGVjdXRlSnNvbigpKX0pLFNlKDM2LCIgU1VCTUlUIEpTT04gIiksdGUoKSx2dCgzNyxSRXQsMiwwLCJzcGFuIiks'@; put 'dGUoKSxKKDM4LCJwIiwyNiksU2UoMzksIlNlbGVjdCBTQVMgZmlsZSB0byB1cGxvYWQ6IiksdGUoKSxKKDQwLCJkaXYiLDI3KSg0MSwiaW5wdXQiLDI4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgpLmNsZWFyVXBsb2FkSW5wdXQoaSkpfSkoImNoYW5nZSIs'@; put 'ZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBvLm9uU2FzRmlsZUNoYW5nZShpKSxYZShvLmRvd25sb2FkRmlsZUJ0bj0hMCl9KSx0ZSgpLHZ0KDQyLElFdCwyLDAsImJ1dHRvbiIsMzEpLHRlKCksSig0MywiZGl2IiwyOSkoNDQsImJ1dHRvbiIsMzIpLHd0KCJjbGljayIs'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5leGVjdXRlU0FTKCkpfSksU2UoNDUsIiBTVUJNSVQgIiksdGUoKSgpKCksdnQoNDYsREV0LDYsMCksSig0NywiYnV0dG9uIiwzMyksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmNyZWF0ZURhdGFiYXNl'@; put 'KCkpfSksU2UoNDgsIiBDcmVhdGUgRGF0YWJhc2UgIiksdGUoKSx2dCg0OSxIRXQsMTEsMiksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSg2KSxkaSgibmdNb2RlbCIsdC5zZWxlY3RlZEFkbWluR3JvdXApLHJ0KCJuZ01vZGVsT3B0aW9ucyIsbWMoMTcsY3NlKSksaWUoKSx5byh0LmFk'@; put 'bWluR3JvdXBzKSxpZSgzKSx3cigiaGlkZGVuIix0LmNvbnRleHRzTG9hZGluZyksaWUoNSksZGkoIm5nTW9kZWwiLHQuc2VsZWN0ZWRDb250ZXh0KSxydCgibmdNb2RlbE9wdGlvbnMiLG1jKDE4LGNzZSkpLGllKCkseW8odC5hbGxDb250ZXh0cyksaWUoNCksd3IoImhpZGRlbiIsIXQuY29u'@; put 'dGV4dHNMb2FkaW5nKSxpZSg5KSxkaSgibmdNb2RlbCIsdC5kY1BhdGgpLHJ0KCJuZ01vZGVsT3B0aW9ucyIsbWMoMTksY3NlKSksaWUoNikscnQoImNsckxvYWRpbmciLHQuaXNTdWJtaXR0aW5nSnNvbiksaWUoMiksX3QodC5pc0pzb25TdWJtaXR0ZWQ/Mzc6LTEpLGllKDUpLF90KHQuZG93'@; put 'bmxvYWRGaWxlQnRuPzQyOi0xKSxpZSgyKSxydCgiY2xyTG9hZGluZyIsdC5leGVjdXRpbmdTY3JpcHQpLGllKDIpLF90KHQuam9iTG9nLmxlbmd0aD4wPzQ2Oi0xKSxpZSgpLHJ0KCJjbHJMb2FkaW5nIix0LmNyZWF0ZURhdGFiYXNlTG9hZGluZyksaWUoMiksX3QodC5tYWtlRGF0YVJlc3Bv'@; put 'bnNlLmxlbmd0aD4wPzQ5Oi0xKX19bGV0IEJFdD0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEpe3RoaXMuc2FzU2VydmljZT1yLHRoaXMuZXZlbnRTZXJ2aWNlPWksdGhpcy5sb2dnZXJTZXJ2aWNlPW8sdGhpcy5kZXBsb3lTZXJ2aWNlPWEsdGhpcy5zYXNKc0NvbmZp'@; put 'Zz1uZXcgeHAuU0FTanNDb25maWcsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyBLcix0aGlzLm5lZWRzTG9naW49ITEsdGhpcy5hZG1pbkdyb3Vwcz1bXSx0aGlzLmFsbENvbnRleHRzPVtdLHRoaXMuYXBwTG9jPSIiLHRoaXMuZGNQYXRoPSIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSIi'@; put 'LHRoaXMuc2VsZWN0ZWRDb250ZXh0PSIiLHRoaXMuam9iTG9nPSIiLHRoaXMubWFrZURhdGFSZXNwb25zZT0iIix0aGlzLmxpbmVzT2ZDb2RlPVtdLHRoaXMuZmlsZU5hbWU9IiIsdGhpcy5wcmVsb2FkZWRGaWxlPSEwLHRoaXMuZXhlY3V0ZVNBU0VuYWJsZWQ9ITEsdGhpcy5jb250ZXh0c0xv'@; put 'YWRpbmc9ITEsdGhpcy5jcmVhdGVEYXRhYmFzZUxvYWRpbmc9ITEsdGhpcy5leGVjdXRpbmdTY3JpcHQ9ITEsdGhpcy5kb3dubG9hZEZpbGVCdG49ITEsdGhpcy5pc1ZhbGlkYXRpbmc9ITEsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMSx0aGlzLmlzSnNvblN1'@; put 'Ym1pdHRlZD0hMSx0aGlzLnZhbGlkYXRpb25TdGF0ZT0ibm9uZSJ9bmdPbkluaXQoKXt9ZXhlY3V0YWJsZUNvbnRleHQoKXtyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7fSkoKX1jbGVhclVwbG9hZElucHV0KHIpe3RoaXMuZGVwbG95U2VydmljZS5jbGVhclVwbG9hZElucHV0KHIpfW9uU2FzRmls'@; put 'ZUNoYW5nZShyKXt0aGlzLnByZWxvYWRlZEZpbGU9ITE7bGV0IGk9ci50YXJnZXQuZmlsZXNbMF07dGhpcy5maWxlTmFtZT1pLm5hbWU7bGV0IG89bmV3IEZpbGVSZWFkZXI7by5vbmxvYWQ9KCk9PntvLnJlc3VsdCYmKHRoaXMubGluZXNPZkNvZGU9by5yZXN1bHQuc3BsaXQoIlxuIiksdGhp'@; put 'cy5saW5lc09mQ29kZT10aGlzLmxpbmVzT2ZDb2RlLmZpbHRlcihhPT4iIiE9PWEmJm51bGwhPT1hKSx0aGlzLmV4ZWN1dGVTQVNFbmFibGVkPSEwLHRoaXMuYWRkUHJlY29kZUxpbmVzKCkpfSxvLnJlYWRBc1RleHQoaSl9b25Kc29uRmlsZUNoYW5nZShyKXt2YXIgaT10aGlzO3JldHVybiBD'@; put 'cihmdW5jdGlvbiooKXtsZXQgbz1yLnRhcmdldC5maWxlc1swXTtpLmpzb25GaWxlPXlpZWxkIGkuZGVwbG95U2VydmljZS5yZWFkRmlsZShvKX0pKCl9YWRkUHJlY29kZUxpbmVzKCl7dGhpcy5saW5lc09mQ29kZS51bnNoaWZ0KGAlbGV0IGNvbnRleHQ9JHt0aGlzLnNlbGVjdGVkQ29udGV4'@; put 'dH07YCxgJWxldCBhcHBMb2M9JHt0aGlzLmFwcExvY307YCxgJWxldCBhZG1pbj0ke3RoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwfTtgLGAlbGV0IGRjcGF0aD0ke3RoaXMuZGNQYXRofTtgKX1kb3dubG9hZFNhc1ByZWNvZGVGaWxlKCl7bGV0IHI9dGhpcy5saW5lc09mQ29kZS5qb2luKCJcbiIp'@; put 'LGk9dGhpcy5maWxlTmFtZS5zcGxpdCgiLiIpWzBdO3RoaXMuZG93bmxvYWRGaWxlKHIsaSwic2FzIil9ZG93bmxvYWRGaWxlKHIsaSxvPSJ0eHQiKXt0aGlzLmRlcGxveVNlcnZpY2UuZG93bmxvYWRGaWxlKHIsaSxvKX1zYXZlRGNQYXRoKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oImRlcGxv'@; put 'eV9kY19sb2MiLHRoaXMuZGNQYXRoKX1leGVjdXRlSnNvbigpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3IuaXNTdWJtaXR0aW5nSnNvbj0hMDt0cnl7eWllbGQgci5zYXNKcy5kZXBsb3lTZXJ2aWNlUGFjayhyLmpzb25GaWxlLHIuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExv'@; put 'Y3x8IiIsdm9pZCAwLHZvaWQgMCwhMCksci5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2goaSl7bGV0IG89IiI7cmV0dXJuIG89InN0cmluZyIhPXR5cGVvZiBpLm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkoaSkucmVwbGFjZSgvXFwvZ20sIiIpOmkubWVzc2FnZSx2b2lkIHIuZXZlbnRTZXJ2aWNl'@; put 'LnNob3dJbmZvTW9kYWwoIkRlcGxveSBlcnJvciIsYEV4Y2VwdGlvbjogXG4gJHsiIiE9PW8/bzppfWApfXIuaXNTdWJtaXR0aW5nSnNvbj0hMX0pKCl9ZXhlY3V0ZVNBUygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3IuZXhlY3V0aW5nU2NyaXB0PSEwLHIuam9iTG9nPSIi'@; put 'LHIubWFrZURhdGFSZXNwb25zZT0iIjt0cnl7bGV0IGk9eWllbGQgci5zYXNKcy5leGVjdXRlU2NyaXB0KHtmaWxlTmFtZTpyLmZpbGVOYW1lLGxpbmVzT2ZDb2RlOnIubGluZXNPZkNvZGUsY29udGV4dE5hbWU6ci5zZWxlY3RlZENvbnRleHR9KTtyLmxvZ2dlclNlcnZpY2UubG9nKGkpLCJz'@; put 'dHJpbmciPT10eXBlb2YgaS5sb2cmJihpLmxvZz1KU09OLnBhcnNlKGkubG9nKSksImVycm9yIj09PWkuam9iU3RhdHVzP2FsZXJ0KCJFcnJvciEiKTpyLmpvYkxvZz1pLmxvZy5pdGVtcz9pLmxvZy5pdGVtcy5tYXAobz0+by5saW5lKS5qb2luKCJcbiIpOkpTT04uc3RyaW5naWZ5KGkubG9n'@; put 'KSxyLmV4ZWN1dGluZ1NjcmlwdD0hMX1jYXRjaHtyLmV4ZWN1dGluZ1NjcmlwdD0hMX19KSgpfWNyZWF0ZURhdGFiYXNlKHI9ITApe2lmKHIpe2xldCBsPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLnNlcnZlclVybCsiL1NBU0pvYkV4ZWN1dGlvbi8/X3Byb2dyYW09Iit0aGlz'@; put 'LmRjQWRhcHRlclNldHRpbmdzPy5hcHBMb2N8fCIvYWRtaW4vbWFrZWRhdGEmQURNSU49Iit0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cCsiJkRDUEFUSD0iK3RoaXMuZGNQYXRoKyImX2RlYnVnPTEzMSI7cmV0dXJuIHZvaWQgd2luZG93Lm9wZW4obCwiX2JsYW5rIil9dGhpcy5jcmVhdGVEYXRh'@; put 'YmFzZUxvYWRpbmc9ITAsdGhpcy5zYXNKcy5yZXF1ZXN0KCJzZXJ2aWNlcy9hZG1pbi9tYWtlZGF0YSIse2Zyb21qczpbe0FETUlOOnRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwLERDUEFUSDp0aGlzLmRjUGF0aH1dfSx7dXNlQ29tcHV0ZUFwaTpudWxsLGNvbnRleHROYW1lOnRoaXMuc2FzSnND'@; put 'b25maWcuY29udGV4dE5hbWUsZGVidWc6ITB9LCgpPT57dGhpcy5zYXNTZXJ2aWNlLnNob3VsZExvZ2luLm5leHQoITApfSkudGhlbihhPT57dHJ5e3RoaXMubWFrZURhdGFSZXNwb25zZT1KU09OLnN0cmluZ2lmeShhKX1jYXRjaHt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9YX10aGlzLmNyZWF0'@; put 'ZURhdGFiYXNlTG9hZGluZz0hMX0pLmNhdGNoKGE9Pnt0aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMTt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGEpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1hfX0pfW5hdmlnYXRlVG9Ib21lKCl7dGhpcy5vbk5h'@; put 'dmlnYXRlVG9Ib21lLmVtaXQoKX12YWxpZGF0ZURlcGxveSgpe3RoaXMuaXNWYWxpZGF0aW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvc3RhcnR1cHNlcnZpY2UiLG51bGwpLnRoZW4ocj0+e3RoaXMubG9nZ2VyU2VydmljZS5sb2coci5hZGFwdGVyUmVzcG9uc2UpO2Nv'@; put 'bnN0IGk9bXdlKHIuYWRhcHRlclJlc3BvbnNlKTtpPyh0aGlzLnZhbGlkYXRpb25TdGF0ZT0iZXJyb3IiLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIixpKSk6dGhpcy52YWxpZGF0aW9uU3RhdGU9ci5hZGFwdGVyUmVzcG9uc2Uuc2FzbGlicz8ic3VjY2VzcyI6ImVy'@; put 'cm9yIix0aGlzLmlzVmFsaWRhdGluZz0hMX0pLmNhdGNoKHI9Pnt0aGlzLmlzVmFsaWRhdGluZz0hMSx0aGlzLnZhbGlkYXRpb25TdGF0ZT0iZXJyb3IifSl9ZGVsZXRlS2V5cygpe2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJkZXBsb3lfZGNfbG9jIil9c3RhdGljI2U9bj0oKT0+KHRoaXMu'@; put 'XHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoaWMpLHplKHVkKSx6ZSh4MyksemUobnhlKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1tYW51YWwtZGVwbG95Il1dLGlucHV0czp7c2FzSnM6InNhc0pzIixzYXNKc0NvbmZpZzoi'@; put 'c2FzSnNDb25maWciLGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0ZXJTZXR0aW5ncyJ9LG91dHB1dHM6e29uTmF2aWdhdGVUb0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxzdGFuZGFsb25lOiExLGRlY2xzOjksdmFyczozLGNvbnN0czpbWzEsImNhcmQtaGVhZGVyIiwicG9zaXRpb24tcmVs'@; put 'YXRpdmUiXSxbMSwiZC1pbmxpbmUtYmxvY2siLCJtbC0xMCIsIm1iLTEwIiwibXQtMCJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsImNsZWFyLW1lbW9yeS1idXR0b24iLCJwb3NpdGlvbi1hYnNvbHV0ZSIsMywiY2xpY2siXSxbMSwiY2FyZC1ibG9jayJdLFsiaWQiLCJsb2dpbkZvcm0iLDEs'@; put 'ImQtbm9uZSJdLFsxLCJtYi0xMCJdLFsiZm9yIiwidXNlcm5hbWUiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWzEsIm1iLTEwIiwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1pbnB1dC13cmFwcGVyIl0sWyJ0eXBlIiwidGV4dCIsImlkIiwidXNlcm5hbWUiLDEsImNsci1pbnB1'@; put 'dCJdLFsiZm9yIiwicGFzc3dvcmQiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWyJ0eXBlIiwicGFzc3dvcmQiLCJpZCIsInBhc3N3b3JkIiwxLCJjbHItaW5wdXQiXSxbImlkIiwibG9naW5CdG4iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1ub25lIl0sWzEsImNsci1mb3JtLWNvbnRyb2wi'@; put 'XSxbImZvciIsInNlbGVjdC1mdWxsIiwxLCJjbHItY29udHJvbC1sYWJlbCJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLXNlbGVjdC13cmFwcGVyIl0sWyJuYW1lIiwic2VsZWN0ZWRBZG1pbkdyb3VwIiwiaWQiLCJhZG1pbkdyb3Vwc1NlbGVjdCIsMSwiY2xyLXNlbGVj'@; put 'dCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyJdLFszLCJ2YWx1ZSJdLFsibmFtZSIsInNlbGVjdGVkQ29udGV4dCIsMSwiY2xyLXNlbGVjdCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyJdLFsidHlwZSIsImJ1dHRvbiIs'@; put 'ImlkIiwiY29udGV4dHMtYnRuIiwxLCJidG4iLCJidG4taWNvbiIsMywiY2xpY2siXSxbInNoYXBlIiwicGxheSJdLFsxLCJkLWZsZXgiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwibXItMTAiXSxbImZvciIsImRjbG9jIiwxLCJtdC0yMCIsImNsci1jb250cm9sLWxhYmVsIl0s'@; put 'WyJuYW1lIiwiZGNQYXRoIiwidHlwZSIsInRleHQiLCJpZCIsImRjbG9jIiwxLCJjbHItaW5wdXQiLDMsIm5nTW9kZWxDaGFuZ2UiLCJmb2N1c291dCIsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyJdLFsxLCJtdC0xMCJdLFsxLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiJdLFsidHlwZSIsImZp'@; put 'bGUiLDMsImNsaWNrIiwiY2hhbmdlIl0sWzEsIm10LTIwIiwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJpZCIsIiIsMSwibXQtMCIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1pY29uIiwibWluLXctMCIsInctNDAiXSxbImlkIiwiZGVw'@; put 'bG95IiwxLCJtdC0wIiwzLCJjbGljayIsImNsckxvYWRpbmciXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0xMCIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1pY29uIiwibWluLXctMCIsInctNDAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25s'@; put 'b2FkIl0sWzEsIm1iLTAiLCJtdC0xMCJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsIm10LTAiLCJtci0yMCIsMywiY2xpY2siXSxbMSwibG9nLXdyYXBwZXIiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0xNSIsMywiY2xpY2siXSxbMSwidmFsaWRhdGlvbi1iYXIiXSxbInNoYXBlIiwi'@; put 'ZXhjbGFtYXRpb24tY2lyY2xlIiwxLCJpcy1lcnJvciJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLDEsImlzLXN1Y2Nlc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihKKDAsImRpdiIsMCksU2UoMSwiIENvbmZpZ3VyYXRvciAiKSxKKDIsInAiLDEpLFNlKDMpLHRlKCksSig0'@; put 'LCJidXR0b24iLDIpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gby5kZWxldGVLZXlzKCl9KSxTZSg1LCIgQ2xlYXIgbWVtb3J5ICIpLHRlKCkoKSxKKDYsImRpdiIsMyksdnQoNyxURXQsMTUsMCwiZGl2Iiw0KSx2dCg4LFZFdCw1MCwyMCwiZm9ybSIpLHRlKCkpLDImaSYmKGllKDMp'@; put 'LFNyKCJBcHAgTG9jYXRpb246ICIsby5hcHBMb2MpLGllKDQpLF90KG8ubmVlZHNMb2dpbj83Oi0xKSxpZSgpLF90KG8ubmVlZHNMb2dpbj8tMTo4KSl9LGRlcGVuZGVuY2llczpbTGIsWGcsUWcsbHUsS2csb2MsSWIsWGwsZDQsY3UsJDAsaW0sZWwsS25lXSxlbmNhcHN1bGF0aW9uOjJ9KSl9'@; put 'cmV0dXJuIG4oKSxlfSkoKTtmdW5jdGlvbiBqRXQobixlKXsxJm4mJihKKDAsImRpdiIsMCksSXQoMSwicHJvZ3Jlc3MiKSx0ZSgpKX1mdW5jdGlvbiBVRXQobixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsMTEpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgidmFs'@; put 'dWUiLHQuR1JPVVBOQU1FKSxpZSgpLE5oKCIgIix0LkdST1VQTkFNRSwiIC0gIix0LkdST1VQREVTQywiICIpfX1sZXQgekV0PSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpLG8pe3RoaXMuc2FzU2VydmljZT1yLHRoaXMuc2FzanNTZXJ2aWNlPWksdGhpcy5sb2NhdGlvbj1v'@; put 'LHRoaXMuc2FzSnNDb25maWc9bmV3IHhwLlNBU2pzQ29uZmlnLHRoaXMub25OYXZpZ2F0ZVRvSG9tZT1uZXcgS3IsdGhpcy5kY0RpcmVjdG9yeT0iIix0aGlzLmRjQWRtaW5Hcm91cD0iRENERUZBVUxUIix0aGlzLk1FVEFQRVJTT049Im4vYSIsdGhpcy5NRVRBVVNFUj0ibi9hIix0aGlzLlNZ'@; put 'U1VTRVJJRD0ibi9hIix0aGlzLlNZU0hPU1ROQU1FPSJuL2EiLHRoaXMuU1lTVkxPTkc9Im4vYSIsdGhpcy5kY0FkbWluR3JvdXBMaXN0PVtdLHRoaXMubG9hZGluZz0hMSx0aGlzLnNob3dMb2dvdXQ9ITEsdGhpcy50bXBEaXJlY3Rvcmllcz17bGludXg6Ii90bXAvRGF0YUNvbnRyb2xsZXIi'@; put 'LHdpbmRvd3M6IkM6XFxEYXRhQ29udHJvbGxlciJ9fW5nT25Jbml0KCl7dGhpcy5nZXRVc2VyR3JvdXBzKCksdGhpcy5nZXRTZXJ2ZXJJbmZvKCl9Z2V0U2VydmVySW5mbygpe3RoaXMuc2FzanNTZXJ2aWNlLmdldFNlcnZlckluZm8oKS5zdWJzY3JpYmUocj0+eyJkZXNrdG9wIiE9PXIubW9k'@; put 'ZSYmKHRoaXMuc2hvd0xvZ291dD0hMCl9KX1nZXRVc2VyR3JvdXBzKCl7dGhpcy5sb2FkaW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJncm91cHNieW1lbWJlciIsbnVsbCkudGhlbihyPT57dGhpcy5NRVRBUEVSU09OPXIuYWRhcHRlclJlc3BvbnNlLk1GX0dF'@; put 'VFVTRVIsdGhpcy5TWVNVU0VSSUQ9ci5hZGFwdGVyUmVzcG9uc2UuU1lTVVNFUklELHRoaXMuU1lTSE9TVE5BTUU9ci5hZGFwdGVyUmVzcG9uc2UuU1lTSE9TVE5BTUUsdGhpcy5TWVNWTE9ORz1yLmFkYXB0ZXJSZXNwb25zZS5TWVNWTE9ORyx0aGlzLmRjRGlyZWN0b3J5PXRoaXMudG1wRGly'@; put 'ZWN0b3JpZXNbWyJMIiwiSCIsIkEiLCJTIl0uaW5jbHVkZXMoci5hZGFwdGVyUmVzcG9uc2UuU1lTU0NQTC5zdWJzdHJpbmcoMCwxKSk/ImxpbnV4Ijoid2luZG93cyJdLHRoaXMuZGNBZG1pbkdyb3VwTGlzdD1yLmFkYXB0ZXJSZXNwb25zZS5ncm91cHMsdGhpcy5kY0FkbWluR3JvdXA9dGhp'@; put 'cy5kY0FkbWluR3JvdXBMaXN0WzBdLkdST1VQTkFNRSx0aGlzLmxvYWRpbmc9ITF9LHI9Pnt0aGlzLmxvYWRpbmc9ITF9KX1tYWtlRGF0YSgpe2xldCBpPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7Y29uc3Qgbz10aGlzLnNhc0pzQ29uZmlnLmFwcExvYztsZXQgYT10aGlz'@; put 'LnNhc0pzQ29uZmlnLnNlcnZlclVybCxsPXRoaXMuZGNEaXJlY3Rvcnk7dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09XzAuWS5TYXNqcz90aGlzLnNhc1NlcnZpY2Uuc2FzanNNYWtlZGF0YUNoZWNraW5nKCkudGhlbihnPT57ZyYmKHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCIv'@; put 'IiksbG9jYXRpb24ucmVsb2FkKCkpfSk6dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09XzAuWS5TYXM5JiYoYT0iIixpPXdpbmRvdy5sb2NhdGlvbi5vcmlnaW4raSsiLyIsbD1lbmNvZGVVUklDb21wb25lbnQodGhpcy5kY0RpcmVjdG9yeSkpLHdpbmRvdy5vcGVuKGAke2F8fCIifSR7'@; put 'aX0/X3Byb2dyYW09JHtvfS9zZXJ2aWNlcy9hZG1pbi9tYWtlZGF0YSZhZG1pbj0ke3RoaXMuZGNBZG1pbkdyb3VwfSZwYXRoPSR7bH0mX2RlYnVnPTEzMWAsIl9ibGFuayIpfWxvZ291dCgpe3RoaXMuc2FzU2VydmljZS5sb2dvdXQoKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9'@; put 'ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZShpYyksemUoVndlKSx6ZShWMCkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtc2FzanMtY29uZmlndXJhdG9yIl1dLGlucHV0czp7c2FzSnM6InNhc0pzIixzYXNKc0NvbmZpZzoic2FzSnNDb25maWci'@; put 'LGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0ZXJTZXR0aW5ncyJ9LG91dHB1dHM6e29uTmF2aWdhdGVUb0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxzdGFuZGFsb25lOiExLGRlY2xzOjQ1LHZhcnM6OSxjb25zdHM6W1sxLCJ0aGluUHJvZ3Jlc3MiLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jl'@; put 'c3MiLCJsb29wIl0sWzEsInRleHQtY2VudGVyIiwibXktMTUiXSxbMSwibGlnaHQiXSxbMSwibS0wIl0sWzEsIm0tMCIsIm10LTEwIl0sWzEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBw'@; put 'ZXIiXSxbInBsYWNlaG9sZGVyIiwiVHlwZSBpbiBkaXJlY3RvcnkiLDEsImNsci1pbnB1dCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbMSwibWItMTAiLCJtdC0wIiwidy01MHZ3Il0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWzMsInZhbHVl'@; put 'Il0sWzEsImNsci1mbGV4Il0sWzEsImJ0biIsImJ0bi1zdWNjZXNzIiwibXQtMTUiLCJ0ZXh0LWNlbnRlciIsMywiY2xpY2siXSxbMSwiY2FyZC10ZXh0IiwicGItMTAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJih2dCgwLGpFdCwyLDAsImRpdiIsMCksSigxLCJoNCIsMSksU2Uo'@; put 'MiwiU2FzanMgRGVwbG95IiksdGUoKSxJdCgzLCJociIsMiksSig0LCJwIiwzKSxTZSg1LCIgVG8gY29uZmlndXJlIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhOSwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOlxuIiksdGUoKSxKKDYsInAiLDQpLFNlKDcsIiBQbGVh'@; put 'c2Ugc3BlY2lmeSBhIHBoeXNpY2FsIGRpcmVjdG9yeSAob24gdGhlICIpLEooOCwic3Ryb25nIiksU2UoOSksdGUoKSxTZSgxMCwiIGNvbXB1dGUgc2VydmVyKSBiZWxvdywgdG8gd2hpY2ggdXNlciAiKSxKKDExLCJzdHJvbmciKSxTZSgxMiksdGUoKSxTZSgxMywiIGNhbiB3cml0ZSwgb24g'@; put 'YmVoYWxmIG9mIERhdGEgQ29udHJvbGxlci5cbiIpLHRlKCksSigxNCwibGFiZWwiLDUpLFNlKDE1LCJEQyBTdGFnaW5nIERpcmVjdG9yeSIpLHRlKCksSigxNiwiZGl2Iiw2KSgxNywiZGl2Iiw3KSgxOCwiaW5wdXQiLDgpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4g'@; put 'Zmkoby5kY0RpcmVjdG9yeSxsKXx8KG8uZGNEaXJlY3Rvcnk9bCksbH0pLHRlKCkoKSgpLEooMTksInAiLDQpLFNlKDIwLCIgQmVsb3cgYXJlIHRoZSBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCB5b3UgYmVsb25nLiBUaGUgZ3JvdXAgeW91IHNlbGVjdCB3aWxsIGJlY29tZSB0aGUgRGF0YSBD'@; put 'b250cm9sbGVyIEFkbWluIEdyb3VwLCBhbmQgZXZlcnlvbmUgaW4gaXQgd2lsbCBoYXZlIHVucmVzdHJpY3RlZCBhY2Nlc3MgdG8gRGF0YSBDb250cm9sbGVyLlxuIiksdGUoKSxKKDIxLCJsYWJlbCIsNSksU2UoMjIsIkRhdGEgQ29udHJvbGxlciBBZG1pbiBncm91cCIpLHRlKCksSigyMywi'@; put 'Y2xyLXNlbGVjdC1jb250YWluZXIiLDkpKDI0LCJzZWxlY3QiLDEwKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8uZGNBZG1pbkdyb3VwLGwpfHwoby5kY0FkbWluR3JvdXA9bCksbH0pLF9vKDI1LFVFdCwyLDMsIm9wdGlvbiIsMTEsQ28pLHRlKCkoKSxKKDI3'@; put 'LCJwIiw0KSxTZSgyOCwiIE5vdywgY3JlYXRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFuZCBkZXBsb3kgdGhlIGNvbnRyb2wgbGlicmFyeSB1c2luZyB0aGUgYWRtaW4gZ3JvdXAgc2VsZWN0ZWQgYWJvdmU6XG4iKSx0ZSgpLEooMjksImRpdiIsMTIpKDMwLCJidXR0b24iLDEzKSx3dCgiY2xp'@; put 'Y2siLGZ1bmN0aW9uKCl7cmV0dXJuIG8ubWFrZURhdGEoKX0pLFNlKDMxLCIgU1VCTUlUICIpLHRlKCkoKSxJdCgzMiwiaHIiLDIpLEooMzMsImRpdiIsMTQpKDM0LCJwIiksU2UoMzUsIllvdSBhcmUgY29ubmVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBjcmVkZW50aWFsczoiKSx0ZSgpLEoo'@; put 'MzYsInVsIikoMzcsImxpIiksU2UoMzgpLHRlKCksSigzOSwibGkiKSxTZSg0MCksdGUoKSxKKDQxLCJsaSIpLFNlKDQyKSx0ZSgpLEooNDMsImxpIiksU2UoNDQpLHRlKCkoKSgpKSwyJmkmJihfdChvLmxvYWRpbmc/MDotMSksaWUoOSksU3IoIiAiLG8uU1lTSE9TVE5BTUUpLGllKDMpLHBy'@; put 'KG8uU1lTVVNFUklEKSxpZSg2KSxkaSgibmdNb2RlbCIsby5kY0RpcmVjdG9yeSksaWUoNiksZGkoIm5nTW9kZWwiLG8uZGNBZG1pbkdyb3VwKSxpZSgpLHlvKG8uZGNBZG1pbkdyb3VwTGlzdCksaWUoMTMpLFNyKCJNRVRBUEVSU09OOiAiLG8uTUVUQVBFUlNPTiksaWUoMiksU3IoIlNZU1VT'@; put 'RVJJRDogIixvLlNZU1VTRVJJRCksaWUoMiksU3IoIlNZU0hPU1ROQU1FOiAiLG8uU1lTSE9TVE5BTUUpLGllKDIpLFNyKCJTWVNWTE9ORzogIixvLlNZU1ZMT05HKSl9LGRlcGVuZGVuY2llczpbWGcsUWcsbHUsS2csb2MsWGwsZWwscWIsQ01dLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4g'@; put 'bigpLGV9KSgpO2Z1bmN0aW9uIFdFdChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwyKSgxLCJkaXYiLDMpLFNlKDIsIlRlcm1zIGFuZCBDb25kaXRpb25zIiksdGUoKSxKKDMsImRpdiIsNCkoNCwiZGl2Iiw1KSg1LCJwIiw2KSxTZSg2LCIgVGhlIERlbW8gdmVyc2lvbiBv'@; put 'ZiBEYXRhIENvbnRyb2xsZXIgaXMgZnJlZSBmb3IgRVZBTFVBVElPTiBwdXJwb3NlcyBvbmx5LiBCZWZvcmUgcHJvY2VlZGluZyB3aXRoIGNvbmZpZ3VyYXRpb24sIHBsZWFzZSBjb25maXJtIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwgYW5kIGFncmVlZCB0byB0aGUgIiksSig3'@; put 'LCJhIiw3KSxTZSg4LCJEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YTkgRXZhbHVhdGlvbiBBZ3JlZW1lbnQiKSx0ZSgpLFNlKDksIi4gIiksdGUoKSgpLEl0KDEwLCJociIsOCksSigxMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgxMiwiaW5wdXQiLDkpLHd0KCJjaGFuZ2UiLGZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIFllKHQpLFhlKFRlKCkudGVybXNBZ3JlZUNoYW5nZSgpKX0pLHRlKCksSigxMywibGFiZWwiKSxTZSgxNCwiSSBoYXZlIHJlYWQgYW5kIGFncmVlIHRvIHRoZSB0ZXJtcyBvZiB0aGUgIiksSigxNSwiYSIsNyksU2UoMTYsIkRhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhOSBF'@; put 'dmFsdWF0aW9uIEFncmVlbWVudCIpLHRlKCkoKSgpKCkoKX19ZnVuY3Rpb24gWUV0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDEwKSgxLCJhcHAtYXV0b21hdGljLWRlcGxveSIsMTIpLHd0KCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxY'@; put 'ZShUZSgzKS5vbk5hdmlnYXRlVG9Ib21lKCkpfSksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLHJ0KCJzYXNKcyIsdC5zYXNKcykoInNhc0pzQ29uZmlnIix0LnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLHQuZGNBZGFwdGVyU2V0dGluZ3MpKCJhcHBMb2MiLHQu'@; put 'YXBwTG9jKSgiZGNQYXRoIix0LmRjUGF0aCkoInNlbGVjdGVkQWRtaW5Hcm91cCIsdC5zZWxlY3RlZEFkbWluR3JvdXApfX1mdW5jdGlvbiBaRXQobixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsMTEpKDEsImFwcC1tYW51YWwtZGVwbG95IiwxMyksd3QoIm9uTmF2aWdhdGVU'@; put 'b0hvbWUiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDMpO2llKCkscnQoInNhc0pzIix0LnNhc0pzKSgic2FzSnNDb25maWciLHQuc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIs'@; put 'dC5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIEdFdChuLGUpe2lmKDEmbiYmKHZ0KDAsWUV0LDIsNiwiZGl2IiwxMCksdnQoMSxaRXQsMiwzLCJkaXYiLDExKSksMiZuKXtjb25zdCB0PVRlKDIpO190KHQuYXV0b2RlcGxveT8wOi0xKSxpZSgpLF90KHQuYXV0b2RlcGxveT8tMToxKX19'@; put 'ZnVuY3Rpb24gJEV0KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDEwKSgxLCJhcHAtc2FzanMtY29uZmlndXJhdG9yIiwxMyksd3QoIm9uTmF2aWdhdGVUb0hvbWUiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSx0ZSgp'@; put 'KCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKCkscnQoInNhc0pzIix0LnNhc0pzKSgic2FzSnNDb25maWciLHQuc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsdC5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIHFFdChuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwi'@; put 'ZGl2IiwxMCkoMSwiYXBwLXNhc2pzLWNvbmZpZ3VyYXRvciIsMTMpLHd0KCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5vbk5hdmlnYXRlVG9Ib21lKCkpfSksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLHJ0KCJzYXNKcyIsdC5z'@; put 'YXNKcykoInNhc0pzQ29uZmlnIix0LnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLHQuZGNBZGFwdGVyU2V0dGluZ3MpfX1mdW5jdGlvbiBLRXQobixlKXtpZigxJm4mJnZ0KDAsR0V0LDIsMikoMSwkRXQsMiwzLCJkaXYiLDEwKSgyLHFFdCwyLDMsImRpdiIsMTApLDImbil7bGV0'@; put 'IHQ7Y29uc3Qgcj1UZSgpO190KCh0PSEwKT09KHIuc2FzSnNDb25maWcuc2VydmVyVHlwZT09PXIuU2VydmVyVHlwZS5TYXNWaXlhKT8wOnQ9PT0oci5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09ci5TZXJ2ZXJUeXBlLlNhc2pzKT8xOnQ9PT0oci5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09'@; put 'ci5TZXJ2ZXJUeXBlLlNhczkpPzI6LTEpfX1sZXQgYXhlPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpLG8sYSl7dGhpcy5hcHBTdG9yZVNlcnZpY2U9cix0aGlzLnNhc1NlcnZpY2U9aSx0aGlzLmxvZ2dlclNlcnZpY2U9byx0aGlzLnJvdXRlcj1hLHRoaXMuc3RlcD0wLHRo'@; put 'aXMuYWRtaW5Hcm91cHM9W10sdGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5hdXRvZGVwbG95PSEwLHRoaXMuanNvbkZpbGU9bnVsbCx0aGlzLnNhc0pzQ29uZmlnPW5ldyB4cC5TQVNqc0NvbmZpZyx0aGlzLlNlcnZlclR5cGU9'@; put 'XzAuWSx0aGlzLmRjQWRhcHRlclNldHRpbmdzPXRoaXMuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCksdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJtYW51YWxkZXBsb3kiKSYmKHRoaXMuYXV0b2RlcGxveT0hMSksdGhpcy5zYXNKcz10aGlzLnNhc1NlcnZpY2UuZ2V0'@; put 'U2FzanNJbnN0YW5jZSgpLHRoaXMuc2FzSnNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5hcHBMb2M9dGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz8uYXBwTG9jfHwiIn1uZ09uSW5pdCgpe3RoaXMuc2V0RGVwbG95RGVmYXVsdHMoKX1zZXREZXBsb3lEZWZhdWx0'@; put 'cygpe3RoaXMuZGNQYXRoPXRoaXMuZGNBZGFwdGVyU2V0dGluZ3M/LmRjUGF0aHx8IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9dGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz8uYWRtaW5Hcm91cHx8IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXB8fCh0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cD0i'@; put 'U0FTQWRtaW5pc3RyYXRvcnMiKX10ZXJtc0FncmVlQ2hhbmdlKCl7dGhpcy5hdXRvZGVwbG95fHx0aGlzLmdldEFkbWluR3JvdXBzKCksdGhpcy5zdGVwKyt9Z2V0QWRtaW5Hcm91cHMoKXtmZXRjaCh0aGlzLnNhc0pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvZ3JvdXBzP3NvcnRC'@; put 'eT1uYW1lJmxpbWl0PTUwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4ocj0+ci50ZXh0KCkpLnRoZW4ocj0+e2xldCBpO3RyeXtpPUpTT04ucGFyc2Uocil9Y2F0Y2gobyl7Y29uc29sZS5lcnJvcihvKX1pJiYodGhpcy5hZG1pbkdyb3Vwcz1pLml0ZW1z'@; put 'LHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPXRoaXMuYWRtaW5Hcm91cHNbMF0uaWQpfSl9b25OYXZpZ2F0ZVRvSG9tZSgpe3dpbmRvdy5vcGVuKGxvY2F0aW9uLmhyZWYuc3BsaXQoIiMiKVswXSwiX2JsYW5rIil9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3Jl'@; put 'dHVybiBuZXcoaXx8ZSkoemUoRWIpLHplKGljKSx6ZSh4MyksemUodmMpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWRlcGxveSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczo0LHZhcnM6Mixjb25z'@; put 'dHM6W1sxLCJjb250ZW50LWFyZWEiLCJwb3NpdGlvbi1yZWxhdGl2ZSJdLFsxLCJjbHItcm93Il0sWyJpZCIsIlRDUyIsMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJjYXJkLWJsb2NrIl0sWzEsImNhcmQtdGV4dCJdLFsxLCJtdC0wIl0sWyJocmVmIiwiaHR0cHM6Ly9kb2NzLmRh'@; put 'dGFjb250cm9sbGVyLmlvL2V2YWx1YXRpb24tbGljZW5jZS1hZ3JlZW1lbnQiLCJ0YXJnZXQiLCJfYmxhbmsiXSxbMSwibGlnaHQiXSxbImNsckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwzLCJjaGFuZ2UiXSxbMSwiYXV0b2RlcGxveS1zZWN0aW9uIiwiY2FyZCJdLFsiaWQiLCJt'@; put 'YWluYm9keSIsMSwiY2FyZCJdLFszLCJvbk5hdmlnYXRlVG9Ib21lIiwic2FzSnMiLCJzYXNKc0NvbmZpZyIsImRjQWRhcHRlclNldHRpbmdzIiwiYXBwTG9jIiwiZGNQYXRoIiwic2VsZWN0ZWRBZG1pbkdyb3VwIl0sWzMsIm9uTmF2aWdhdGVUb0hvbWUiLCJzYXNKcyIsInNhc0pzQ29uZmln'@; put 'IiwiZGNBZGFwdGVyU2V0dGluZ3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihKKDAsIm1haW4iLDApKDEsImRpdiIsMSksdnQoMixXRXQsMTcsMCwiZGl2IiwyKSx0ZSgpLHZ0KDMsS0V0LDMsMSksdGUoKSksMiZpJiYoaWUoMiksX3QoMD09PW8uc3RlcD8yOi0xKSxpZSgpLF90'@; put 'KG8uc3RlcD4wPzM6LTEpKX0sZGVwZW5kZW5jaWVzOltlbCxVMixGZixNRXQsQkV0LHpFdF0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgWEV0PVt7cGF0aDoiIixjb21wb25lbnQ6YXhlfSx7cGF0aDoibWFudWFsZGVwbG95Iixjb21wb25lbnQ6YXhlfV07bGV0'@; put 'IFFFdD0oKCk9Pnt2YXIgbjtjbGFzcyBle3N0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NW1vZD1HaSh7dHlwZTplfSksdGhpcy5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W1dkLmZvckNoaWxkKFhFdCksV2RdfSkp'@; put 'fXJldHVybiBuKCksZX0pKCksSkV0PSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8saGQs'@; put 'cTAsUUV0XX0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IGI0PW49PlsidGFiaW5kZXgiLG5dLHVNdD0oKT0+WyJyb2xlIiwiZ3JpZGNlbGwiXSxkTXQ9KCk9Plsicm9sZSIsImdyaWRjZWxsIGJ1dHRvbiJdLGhNdD0oKT0+WyJyb2xlIiwicm93aGVhZGVyIl0sZk10PSgpPT5bInJvbGUiLCJj'@; put 'b2x1bW5oZWFkZXIiXSxoeGU9KCk9Plsicm9sZSIsInJvdyJdLFNNdD0oKT0+WyJzY29wZSIsImNvbCJdLEVNdD0oKT0+WyJzY29wZSIsInJvdyJdLE4zPW49PlsiYXJpYS1sYWJlbCIsbl0sVE10PW49PlsiYXJpYS1sYWJlbGxlZGJ5IixuXSx4TXQ9bj0+WyJhcmlhLWRlc2NyaWJlZGJ5Iixu'@; put 'XSx0TD0obj0hMCk9PlsiYXJpYS1kaXNhYmxlZCIsbl0scHhlPW49PlsiYXJpYS1oYXNwb3B1cCIsbl0sZ3hlPW49PlsiYXJpYS1yb3djb3VudCIsbl0sZHNlPW49PlsiYXJpYS1jb2xjb3VudCIsbl0sbXhlPW49PlsiYXJpYS1yb3dpbmRleCIsbl0saHNlPW49PlsiYXJpYS1jb2xpbmRleCIs'@; put 'bl0sYW09bj0+WyJhcmlhLWV4cGFuZGVkIixuXSx5eGU9bj0+WyJhcmlhLWNoZWNrZWQiLG5dLElNdD1uPT5bImFyaWEtY29udHJvbHMiLG5dLExNdD1uPT5bImFyaWEtbGl2ZSIsbl0sT010PW49PlsiYXJpYS1yZWxldmFudCIsbl0sTk10PW49PlsiYXJpYS1zZXRzaXplIixuXSxGTXQ9bj0+'@; put 'WyJhcmlhLXBvc2luc2V0IixuXTtmdW5jdGlvbiB3eGUobil7Y29uc3QgZT1uLmxlbmd0aDtsZXQgdD0wO2Zvcig7dDxlOyluW3RdPVtuW3RdXSx0Kz0xfWZ1bmN0aW9uIHBzZShuLGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dDspbi5wdXNoKGVbcl0pLHIrPTF9ZnVuY3Rp'@; put 'b24gbkwobil7Y29uc3QgZT1bXTtpZighbnx8MD09PW4ubGVuZ3RofHwhblswXXx8MD09PW5bMF0ubGVuZ3RoKXJldHVybiBlO2NvbnN0IHQ9bi5sZW5ndGgscj1uWzBdLmxlbmd0aDtmb3IobGV0IGk9MDtpPHQ7aSsrKWZvcihsZXQgbz0wO288cjtvKyspZVtvXXx8KGVbb109W10pLGVbb11b'@; put 'aV09bltpXVtvXTtyZXR1cm4gZX1mdW5jdGlvbiBtMShuLGUsdCxyKXtsZXQgaT0tMTtjb25zdCBvPUFycmF5LmlzQXJyYXkobik/bjpBcnJheS5mcm9tKG4pLGE9by5sZW5ndGg7ciYmYSYmKGkrPTEsdD1vW2ldKTtsZXQgbD10O2ZvcihpKz0xO2k8YTspbD1lKGwsb1tpXSxpLG8pLGkrPTE7'@; put 'cmV0dXJuIGx9ZnVuY3Rpb24gSHYobixlKXtsZXQgdD0wO2NvbnN0IHI9QXJyYXkuaXNBcnJheShuKT9uOkFycmF5LmZyb20obiksaT1yLmxlbmd0aCxvPVtdO2xldCBhPS0xO2Zvcig7dDxpOyl7Y29uc3QgbD1yW3RdO2UobCx0LHIpJiYoYSs9MSxvW2FdPWwpLHQrPTF9cmV0dXJuIG99ZnVu'@; put 'Y3Rpb24gX2MobixlKXtsZXQgdD0wO2NvbnN0IHI9QXJyYXkuaXNBcnJheShuKT9uOkFycmF5LmZyb20obiksaT1yLmxlbmd0aCxvPVtdO2xldCBhPS0xO2Zvcig7dDxpOylhKz0xLG9bYV09ZShyW3RdLHQsciksdCs9MTtyZXR1cm4gb31mdW5jdGlvbiBYbihuLGUpe2xldCByLHQ9MDtyPUFy'@; put 'cmF5LmlzQXJyYXkobik/bjpBcnJheS5mcm9tKG4pO2NvbnN0IGk9ci5sZW5ndGg7Zm9yKDt0PGkmJiExIT09ZShyW3RdLHQscik7KXQrPTE7cmV0dXJuIHJ9ZnVuY3Rpb24gQ3hlKG4pe3JldHVybiBtMShuLChlLHQpPT5lK3QsMCl9ZnVuY3Rpb24gSE10KG4pe3JldHVybiBtMShuLChlLHQp'@; put 'PT52b2lkIDAhPT1lJiZlPnQ/ZTp0LG5bMF0pfWZ1bmN0aW9uIFZNdChuKXtyZXR1cm4gbTEobiwoZSx0KT0+dm9pZCAwIT09ZSYmZTx0P2U6dCxuWzBdKX1mdW5jdGlvbiBCTXQobil7cmV0dXJuIG4ubGVuZ3RoP0N4ZShuKS9uLmxlbmd0aDowfWZ1bmN0aW9uIFN4ZShuKXtyZXR1cm4gbTEo'@; put 'biwoZSx0KT0+ZS5jb25jYXQoQXJyYXkuaXNBcnJheSh0KT9TeGUodCk6dCksW10pfWZ1bmN0aW9uIGdzZShuKXtjb25zdCBlPVtdO3JldHVybiBYbihuLHQ9PnstMT09PWUuaW5kZXhPZih0KSYmZS5wdXNoKHQpfSksZX1mdW5jdGlvbiByTCguLi5uKXtjb25zdFtlLC4uLnRdPVsuLi5uXTts'@; put 'ZXQgcj1lO3JldHVybiBYbih0LGk9PntyPXIuZmlsdGVyKG89PiFpLmluY2x1ZGVzKG8pKX0pLHJ9ZnVuY3Rpb24gRXhlKC4uLm4pe2NvbnN0IGU9W107bGV0IHQ7WG4obiwobCx1KT0+eyJmdW5jdGlvbiI9PXR5cGVvZiBsP3U9PT1uLmxlbmd0aC0xJiYodD1sKTplLnB1c2gobCl9KTtjb25z'@; put 'dCByPXQ/KGwsdSk9PnUuc29tZShnPT50KGwsZykpOihsLHUpPT51LmluY2x1ZGVzKGwpLFtpLC4uLm9dPWU7bGV0IGE9aTtyZXR1cm4gWG4obyxsPT57YT1hLmZpbHRlcih1PT5yKHUsbCkpfSksYX1mdW5jdGlvbiBqTXQoLi4ubil7Y29uc3RbZSwuLi50XT1bLi4ubl0scj1uZXcgU2V0KGUp'@; put 'O3JldHVybiBYbih0LGk9PntYbihpLG89PntyLmhhcyhvKXx8ci5hZGQobyl9KX0pLEFycmF5LmZyb20ocil9ZnVuY3Rpb24gbXNlKG4sZT0iICIpe3JldHVybiBuLnNwbGl0KGUpfWZ1bmN0aW9uIE14ZShuLGU9IiAiKXtyZXR1cm4gbi5qb2luKGUpfWZ1bmN0aW9uIHljKG4sLi4uZSl7cmV0'@; put 'dXJuIG0xKEFycmF5LmZyb20obiksKHIsaSxvKT0+citpLnJlcGxhY2UoL1xyP1xuXHMqL2csIiIpKyhlW29dP2Vbb106IiIpLCIiKS50cmltKCl9ZnVuY3Rpb24gc3cobiwuLi5lKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7dC5pbm5lckhUTUw9QXJyYXku'@; put 'ZnJvbShuKS5yZWR1Y2UoKG8sYSxsKT0+bythKyhlW2xdPz8iIiksIiIpO2NvbnN0IHI9dC5jb250ZW50LmNsb25lTm9kZSghMCksaT17fTtyZXR1cm4gci5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWZdIikuZm9yRWFjaChvPT57Y29uc3QgYT1vLmRhdGFzZXQucmVmPz9udWxsO2RlbGV0'@; put 'ZSBvLmRhdGFzZXQucmVmLG51bGwhPT1hJiYoaVthXT1vKX0pLHtmcmFnbWVudDpyLHJlZnM6aX19ZnVuY3Rpb24gUGwobil7bGV0IGU7c3dpdGNoKHR5cGVvZiBuKXtjYXNlInN0cmluZyI6Y2FzZSJudW1iZXIiOmU9YCR7bn1gO2JyZWFrO2Nhc2Uib2JqZWN0IjplPW51bGw9PT1uPyIiOm4u'@; put 'dG9TdHJpbmcoKTticmVhaztjYXNlInVuZGVmaW5lZCI6ZT0iIjticmVhaztkZWZhdWx0OmU9bi50b1N0cmluZygpfXJldHVybiBlfWZ1bmN0aW9uIFpvKG4pe3JldHVybiB0eXBlb2YgbjwidSJ9ZnVuY3Rpb24gWHUobil7cmV0dXJuIHR5cGVvZiBuPiJ1In1mdW5jdGlvbiBBbChuKXtyZXR1'@; put 'cm4gbnVsbD09PW58fCIiPT09bnx8WHUobil9ZnVuY3Rpb24gVHhlKG4pe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pfWNvbnN0IGlMPSJsZW5ndGgiLG9MPW49PnBhcnNlSW50KG4sMTYpLHh4ZT1uPT5wYXJzZUludChuLDEwKSxE'@; put 'Vz0obixlLHQpPT5uLnN1YnN0cihlLHQpLGFMPW49PihuLmNvZGVQb2ludEF0KDApPz8wKS02NSx2c2U9bj0+YCR7bn1gLnJlcGxhY2UoL1wtL2csIiIpO2xldCBBeGU9ITE7Y29uc3Qga3hlPXtpbnZhbGlkOigpPT55Y2AKICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlz'@; put 'IGludmFsaWQuXHgyMAogICAgSWYgeW91IG5lZWQgYW55IGhlbHAsIGNvbnRhY3QgdXMgYXQgc3VwcG9ydEBoYW5kc29udGFibGUuY29tLmAsZXhwaXJlZDooe2tleVZhbGlkaXR5RGF0ZTpuLGhvdFZlcnNpb246ZX0pPT55Y2AKICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxl'@; put 'IGV4cGlyZWQgb24gJHtufSwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZFx4MjAKICAgIHZlcnNpb24gJHtlfS4gUmVuZXcgeW91ciBsaWNlbnNlIGtleSBhdCBoYW5kc29udGFibGUuY29tIG9yIGRvd25ncmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3JceDIwCiAg'@; put 'ICB0byAke259LiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzYWxlc0BoYW5kc29udGFibGUuY29tLmAsbWlzc2luZzooKT0+eWNgCiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFj'@; put 'dGl2YXRlIHRoZSBwcm9kdWN0Llx4MjAKICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWN0aXZhdGUgSGFuZHNvbnRhYmxlIHRvIHVzZSBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgYnlceDIwCiAgICBwYXNzaW5nIHRoZSBrZXk6ICdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlv'@; put 'bicuIElmIHlvdSBuZWVkIGFueSBoZWxwLCBjb250YWN0XHgyMAogICAgdXMgYXQgc3VwcG9ydEBoYW5kc29udGFibGUuY29tLmAsbm9uX2NvbW1lcmNpYWw6KCk9PiIifSxSeGU9e2ludmFsaWQ6KCk9PnljYAogICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgaXMgaW52YWxp'@; put 'ZC5ceDIwCiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+UmVhZCBtb3JlPC9hPiBvbiBob3cgdG9ceDIwCiAgICBpbnN0YWxsIGl0IHByb3Blcmx5IG9yIGNvbnRhY3QgdXMgYXQgPGEg'@; put 'aHJlZj0ibWFpbHRvOnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbSI+c3VwcG9ydEBoYW5kc29udGFibGUuY29tPC9hPi5gLGV4cGlyZWQ6KHtrZXlWYWxpZGl0eURhdGU6bixob3RWZXJzaW9uOmV9KT0+eWNgCiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9u'@; put 'ICR7bn0sIGFuZCBpcyBub3QgdmFsaWQgZm9yIHRoZSBpbnN0YWxsZWRceDIwCiAgICB2ZXJzaW9uICR7ZX0uIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9wcmljaW5nIiB0YXJnZXQ9Il9ibGFuayI+UmVuZXc8L2E+IHlvdXJceDIwCiAgICBsaWNlbnNlIGtleSBvciBkb3du'@; put 'Z3JhZGUgdG8gYSB2ZXJzaW9uIHJlbGVhc2VkIHByaW9yIHRvICR7bn0uIElmIHlvdSBuZWVkIGFueVx4MjAKICAgIGhlbHAsIGNvbnRhY3QgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOnNhbGVzQGhhbmRzb250YWJsZS5jb20iPnNhbGVzQGhhbmRzb250YWJsZS5jb208L2E+LmAsbWlzc2luZzoo'@; put 'KT0+eWNgCiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0Llx4MjAKICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWN0aXZhdGUgSGFuZHNvbnRhYmxlIHRvIHVzZSBm'@; put 'b3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgYnlceDIwCiAgICBwYXNzaW5nIHRoZSBrZXk6ICdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbicuXHgyMAogICAgPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29udGFibGUuY29tL2RvY3MvdHV0b3JpYWwtbGljZW5zZS1rZXkuaHRtbCIgdGFy'@; put 'Z2V0PSJfYmxhbmsiPlJlYWQgbW9yZTwvYT4gYWJvdXQgaXQgaW5ceDIwCiAgICB0aGUgZG9jdW1lbnRhdGlvbiBvciBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbTwvYT4uYCxub25fY29tbWVy'@; put 'Y2lhbDooKT0+IiJ9O2Z1bmN0aW9uIEl4ZSh7Y2xhc3NOYW1lOm4sa2V5OmUsZWxlbWVudDp0LHJlbGVhc2VEYXRlOnJ9KXtjb25zdCBpPSFBbChlKSxvPSJzdHJpbmciPT10eXBlb2YgZSYmKCJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbiI9PT1lLnRvTG93ZXJDYXNlKCl8fCJodDY4'@; put 'ZS0xZjJiNy00NzE1OC03MGIwNS0wODQyZiI9PT1lLnRvTG93ZXJDYXNlKCkpLGE9IjE4LjAuMCI7bGV0IGwsdT0iaW52YWxpZCIsZz0iaW52YWxpZCI7Y29uc3QgRT1mdW5jdGlvbiBXTXQobil7bGV0IGU9W11baUxdLHQ9ZTtpZihuW2lMXSE9PWFMKCJaIikpcmV0dXJuITE7Zm9yKGxldCBy'@; put 'PSIiLGk9IkI8SDRQKyIuc3BsaXQoIiIpLG89YUwoaS5zaGlmdCgpPz8iQSIpO287bz1hTChpLnNoaWZ0KCk/PyJBIikpLS1vPCIiW2lMXT90fD0oeHhlKGAke3h4ZShvTChyKSsob0woRFcobixNYXRoLmFicyhvKSwyKSkrU3RyaW5nKFtdKSkucGFkU3RhcnQoMiwiMCIpKX1gKSU5N3x8Mik+'@; put 'PjE6cj1EVyhuLG8sbz8xPT09aVtpTF0/OTo4OjYpO3JldHVybiB0PT09ZX0oZT12c2UoZXx8IiIpKTtpZihvKXU9Im5vbl9jb21tZXJjaWFsIixnPSJ2YWxpZCI7ZWxzZSBpZihpfHxFKWlmKEUpe2NvbnN0IE89cj8/IjMwLzA2LzIwMjYiPz8iIixbWixlZSx2ZV09Ty5zcGxpdCgiLyIpLm1h'@; put 'cChOdW1iZXIpLE1lPU1hdGguZmxvb3IoRGF0ZS5VVEModmUsZWUtMSxaKS84NjRlNSksSGU9KG49Pm9MKERXKHZzZShuKSxvTCgiMTIiKSxhTCgiRiIpKSkvKG9MKERXKHZzZShuKSxhTCgiQiIpLH5+IVtdW2lMXSkpfHw5KSkoZSk7bD1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4tVVMi'@; put 'LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiIyLWRpZ2l0Iix0aW1lWm9uZToiVVRDIn0pLmZvcm1hdCg4NjRlNSooSGUrMSkpLE1lPkhlPyh1PSJleHBpcmVkIixnPSJleHBpcmVkIik6KHU9InZhbGlkIixnPSJ2YWxpZCIpfWVsc2UgdT0iaW52YWxpZCIsZz0iaW52YWxpZCI7'@; put 'ZWxzZSB1PSJtaXNzaW5nIixnPSJtaXNzaW5nIjtpZih0eXBlb2YgbG9jYXRpb248InUiJiYvXihbYS16MC05XC1dK1wuKT9ceDY4XHg2MVx4NkVceDY0XHg3M1x4NkZceDZFXHg3NFx4NjFceDYyXHg2Q1x4NjVceDJFXHg2M1x4NkZceDZEJC9pLnRlc3QobG9jYXRpb24uaG9zdCkmJih1PSJ2'@; put 'YWxpZCIsZz0idmFsaWQiKSwhQXhlJiYidmFsaWQiIT09dSYmKGt4ZVt1XSh7a2V5VmFsaWRpdHlEYXRlOmwsaG90VmVyc2lvbjphfSkmJmNvbnNvbGVbIm5vbl9jb21tZXJjaWFsIj09PXU/ImluZm8iOiJ3YXJuIl0oa3hlW3VdKHtrZXlWYWxpZGl0eURhdGU6bCxob3RWZXJzaW9uOmF9KSks'@; put 'QXhlPSEwKSwidmFsaWQiIT09ZyYmdCYmUnhlW2ddKHtrZXlWYWxpZGl0eURhdGU6bCxob3RWZXJzaW9uOmF9KSl7Y29uc3QgWj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gWi5jbGFzc05hbWU9YGhhbmRzb250'@; put 'YWJsZSAke259YCxlZS5jbGFzc05hbWU9YCR7bn1faW5uZXJgLGVlLmlubmVySFRNTD1SeGVbZ10oe2tleVZhbGlkaXR5RGF0ZTpsLGhvdFZlcnNpb246YX0pLFouYXBwZW5kQ2hpbGQoZWUpLHQuYXBwZW5kQ2hpbGQoWiksWn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBKcihuKXt0aHJvdyBuZXcg'@; put 'RXJyb3Iobix7Y2F1c2U6e2hhbmRzb250YWJsZTohMH19KX1mdW5jdGlvbiBPTShuKXtsZXQgZTtpZihBcnJheS5pc0FycmF5KG4pKWU9bi5sZW5ndGg/bmV3IEFycmF5KG4ubGVuZ3RoKS5maWxsKG51bGwpOltdO2Vsc2V7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2FjKG4sKHIsaSk9'@; put 'PnsiX19jaGlsZHJlbiIhPT1pJiYodFtpXT1yJiYib2JqZWN0Ij09dHlwZW9mIHImJiFBcnJheS5pc0FycmF5KHIpP09NKHIpOkFycmF5LmlzQXJyYXkocik/ci5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgclswXSYmIUFycmF5LmlzQXJyYXkoclswXSk/W09NKHJbMF0pXTpbXTpudWxsKX0p'@; put 'LGU9dH1yZXR1cm4gZX1mdW5jdGlvbiBEeGUobixlKXtyZXR1cm4gZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxuLnByb3RvdHlwZT1uZXcgZSxuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uLG59ZnVuY3Rpb24gWWQobixlLHQpe2NvbnN0IHI9QXJyYXkuaXNBcnJheSh0KTtyZXR1cm4gYWMo'@; put 'ZSwoaSxvKT0+eyJfX3Byb3RvX18iPT09b3x8ImNvbnN0cnVjdG9yIj09PW98fCJwcm90b3R5cGUiPT09b3x8KCExPT09cnx8dC5pbmNsdWRlcyhvKSkmJihuW29dPWkpfSksbn1mdW5jdGlvbiBMVyhuLGUpe2FjKGUsKHQscik9PntpZigiX19wcm90b19fIj09PXJ8fCJjb25zdHJ1Y3RvciI9'@; put 'PT1yfHwicHJvdG90eXBlIj09PXIpcmV0dXJuO2NvbnN0IGk9ZVtyXTtpJiYib2JqZWN0Ij09dHlwZW9mIGk/KG5bcl18fChuW3JdPUFycmF5LmlzQXJyYXkoaSk/W106IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGkpP2k6e30pLExXKG5bcl0saSkp'@; put 'Om5bcl09aX0pfWZ1bmN0aW9uIEFkKG4pe2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJuIG4ubWFwKGU9PkFkKGUpKTtpZihuIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUobik7aWYoIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09bil7Y29uc3QgZT17fTtmb3IoY29uc3RbdCxy'@; put 'XW9mIE9iamVjdC5lbnRyaWVzKG4pKSJfX3Byb3RvX18iPT09dHx8ImNvbnN0cnVjdG9yIj09PXR8fCJwcm90b3R5cGUiPT09dHx8KGVbdF09QWQocikpO3JldHVybiBlfXJldHVybiBufWZ1bmN0aW9uIHE1KG4pe2NvbnN0IGU9e307cmV0dXJuIGFjKG4sKHQscik9PntlW3JdPXR9KSxlfWZ1'@; put 'bmN0aW9uIFpNdChuLGUpe2NvbnN0IHQ9YF8ke259YDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpc1t0XSYmKHRoaXNbdF09ZnVuY3Rpb24gWU10KG4pe2xldCBlPW47cmV0dXJuKEFycmF5LmlzQXJyYXkoZSl8fENhKGUpKSYmKGU9QWQoZSkpLGV9KGUpKSx0aGlzW3Rd'@; put 'fX1mdW5jdGlvbiBHTXQobil7Y29uc3QgZT1gXyR7bn1gO3JldHVybiBmdW5jdGlvbih0KXt0aGlzW2VdPXR9fWZ1bmN0aW9uIFlsKG4sLi4uZSl7cmV0dXJuIG4uTUlYSU5TfHwobi5NSVhJTlM9W10pLFhuKGUsdD0+e24uTUlYSU5TLnB1c2godC5NSVhJTl9OQU1FKSxhYyh0LChyLGkpPT57'@; put 'dm9pZCAwIT09bi5wcm90b3R5cGVbaV0mJkpyKGBNaXhpbiBjb25mbGljdC4gUHJvcGVydHkgJyR7aX0nIGFscmVhZHkgZXhpc3QgYW5kIGNhbm5vdCBiZSBvdmVyd3JpdHRlbi5gKSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9uLnByb3RvdHlwZVtpXT1yOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShu'@; put 'LnByb3RvdHlwZSxpLHtnZXQ6Wk10KGksciksc2V0OkdNdChpKSxjb25maWd1cmFibGU6ITB9KX0pfSksbn1mdW5jdGlvbiBnNyhuLGUpe2NvbnN0IHQ9cj0+dm9pZCAwPT09cj8idW5kZWZpbmVkIjpBcnJheS5pc0FycmF5KHIpP2BbJHtyLm1hcCh0KS5qb2luKCIsIil9XWA6ciBpbnN0YW5j'@; put 'ZW9mIERhdGU/SlNPTi5zdHJpbmdpZnkocik6bnVsbCE9PXImJiJvYmplY3QiPT10eXBlb2Ygcj9geyR7T2JqZWN0LmVudHJpZXMocikuc29ydCgoW29dLFthXSk9Pm8ubG9jYWxlQ29tcGFyZShhKSkubWFwKChbbyxhXSk9PmAke0pTT04uc3RyaW5naWZ5KG8pfToke3QoYSl9YCkuam9pbigi'@; put 'LCIpfX1gOkpTT04uc3RyaW5naWZ5KHIpO3JldHVybiB0KG4pPT09dChlKX1mdW5jdGlvbiBDYShuKXtyZXR1cm4ga2Qobil9ZnVuY3Rpb24ga2Qobil7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobil9ZnVuY3Rpb24gSzUobixlLHQs'@; put 'cil7ci52YWx1ZT10LHIud3JpdGFibGU9ITEhPT1yLndyaXRhYmxlLHIuZW51bWVyYWJsZT0hMSE9PXIuZW51bWVyYWJsZSxyLmNvbmZpZ3VyYWJsZT0hMSE9PXIuY29uZmlndXJhYmxlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGUscil9ZnVuY3Rpb24gYWMobixlKXtjb25zdCB0PW47Zm9y'@; put 'KGNvbnN0IHIgaW4gdClpZigoIXQuaGFzT3duUHJvcGVydHl8fHQuaGFzT3duUHJvcGVydHkmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpKSYmITE9PT1lKHRbcl0scixuKSlicmVhaztyZXR1cm4gbn1mdW5jdGlvbiBzTChuLGUpe2NvbnN0IHQ9ZS5zcGxpdCgi'@; put 'LiIpO2xldCByPW47Zm9yKGNvbnN0IGkgb2YgdClpZihyPXJbaV0sdm9pZCAwPT09cilyZXR1cm47cmV0dXJuIHJ9ZnVuY3Rpb24gbEwobixlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZXx8bnVsbD09PW58fCJvYmplY3QiIT10eXBlb2YgbilyZXR1cm47Y29uc3Qgcj1lLnNwbGl0KCIuIik7'@; put 'bGV0IGk9bjtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rPTEpe2NvbnN0IGE9cltvXTtpZigiX19wcm90b19fIj09PWF8fCJjb25zdHJ1Y3RvciI9PT1hfHwicHJvdG90eXBlIj09PWEpcmV0dXJuO2lmKG8hPT1yLmxlbmd0aC0xKXtSZChpLGEpfHwoaVthXT17fSk7Y29uc3QgbD1pW2FdO2lm'@; put 'KCFrZChsKSlyZXR1cm47aT1sfWVsc2UgT2JqZWN0LmRlZmluZVByb3BlcnR5KGksYSx7dmFsdWU6dCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX1mdW5jdGlvbiBPVyhuKXtpZighQ2EobikpcmV0dXJuIDA7Y29uc3QgZT1mdW5jdGlvbih0KXtsZXQgcj0w'@; put 'O3JldHVybiBrZCh0KT9hYyh0LChpLG8pPT57Il9fY2hpbGRyZW4iIT09byYmKHIrPWUoaSkpfSk6cis9MSxyfTtyZXR1cm4gZShuKX1mdW5jdGlvbiBWZihuLGU9InZhbHVlIil7Y29uc3QgdD1gXyR7ZX1gLHI9e190b3VjaGVkOiExLFt0XTpuLGlzVG91Y2hlZCgpe3JldHVybiEhdGhpcy5f'@; put 'dG91Y2hlZH0sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSx7Z2V0KCl7cmV0dXJuIHRoaXNbdF19LHNldChpKXt0aGlzLl90b3VjaGVkPSEwLHRoaXNbdF09aX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxyfWZ1bmN0aW9uIFJkKG4sZSl7'@; put 'cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGUpfWZ1bmN0aW9uIGNMKG4sZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBufHxudWxsPT09bilyZXR1cm4gZTtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBuO2NvbnN0IHQ9e307cmV0dXJu'@; put 'IE9iamVjdC5rZXlzKGUpLmZvckVhY2gocj0+e2NvbnN0IGk9ZVtyXSxvPW5bcl07dFtyXT1rZChpKT9jTChrZChvKT9vOnt9LGkpOlJkKG4scikmJnZvaWQgMCE9PW8/bzppfSksT2JqZWN0LmtleXMobikuZm9yRWFjaChyPT57UmQodCxyKXx8KHRbcl09bltyXSl9KSx0fWZ1bmN0aW9uIE5X'@; put 'KG49e30sZT17fSl7Y29uc3QgdD17Li4ubn07cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2gocj0+e2lmKCJfX3Byb3RvX18iPT09cnx8ImNvbnN0cnVjdG9yIj09PXJ8fCJwcm90b3R5cGUiPT09cilyZXR1cm47Y29uc3QgaT1lW3JdLG89dFtyXTt0W3JdPWtkKGkpJiZrZChvKT9OVyhv'@; put 'LGkpOml9KSx0fWZ1bmN0aW9uIGIwKG4pe3JldHVybiBrZChuKSYmWm8obi5rZXkpJiZabyhuLnZhbHVlKX1mdW5jdGlvbiB1TChuKXtyZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShuKX1mdW5jdGlvbiBkTChuKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUobil9ZnVu'@; put 'Y3Rpb24gX3NlKCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB3aW5kb3d9ZnVuY3Rpb24gTHhlKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUifWxldCBOTTtmdW5jdGlvbiBPeGUobixlPXt9KXtyZXR1cm4gTk18fChOTT0ib2JqZWN0Ij09dHlwZW9mIEludGw/bmV3IEludGwuQ29sbGF0b3Io'@; put 'bixlKS5jb21wYXJlOiJmdW5jdGlvbiI9PXR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmU/KHQscik9PmAke3R9YC5sb2NhbGVDb21wYXJlKHIpOih0LHIpPT50PT09cj8wOnQ+cj8tMToxLE5NKX1jb25zdCBqcD1uPT57Y29uc3QgZT17dmFsdWU6ITEsdGVzdCh0LHIpe2Uu'@; put 'dmFsdWU9bih0LHIpfX07cmV0dXJuIGV9LFg1PXtjaHJvbWU6anAoKG4sZSk9Pi9DaHJvbWUvLnRlc3QobikmJi9Hb29nbGUvLnRlc3QoZT8/IiIpKSxjaHJvbWVXZWJLaXQ6anAobj0+L0NyaU9TLy50ZXN0KG4pKSxlZGdlOmpwKG49Pi9FZGdlLy50ZXN0KG4pKSxlZGdlV2ViS2l0OmpwKG49'@; put 'Pi9FZGdpT1MvLnRlc3QobikpLGZpcmVmb3g6anAobj0+L0ZpcmVmb3gvLnRlc3QobikpLGZpcmVmb3hXZWJLaXQ6anAobj0+L0Z4aU9TLy50ZXN0KG4pKSxtb2JpbGU6anAobj0+L0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkv'@; put 'aS50ZXN0KG4pKSxzYWZhcmk6anAoKG4sZSk9Pi9TYWZhcmkvLnRlc3QobikmJi9BcHBsZSBDb21wdXRlci8udGVzdChlPz8iIikpLHNhZmFyaUJlZm9yZTI2MTpqcCgobixlKT0+e2lmKCEvU2FmYXJpLy50ZXN0KG4pfHwhL0FwcGxlIENvbXB1dGVyLy50ZXN0KGU/PyIiKSlyZXR1cm4hMTtj'@; put 'b25zdCB0PS9WZXJzaW9uXC8oXGQrKD86XC5cZCspPykvaS5leGVjKG4pO3JldHVybih0P051bWJlci5wYXJzZUZsb2F0KHRbMV0pOjApPDI2LjF9KX0sRk09e21hYzpqcChuPT4vXk1hYy8udGVzdChuKSksd2luOmpwKG49Pi9eV2luLy50ZXN0KG4pKSxsaW51eDpqcChuPT4vXkxpbnV4Ly50'@; put 'ZXN0KG4pKSxpb3M6anAobj0+L2lQaG9uZXxpUGFkfGlQb2QvaS50ZXN0KG4pKX07ZnVuY3Rpb24gTnhlKHt1c2VyQWdlbnQ6bj1uYXZpZ2F0b3IudXNlckFnZW50LHZlbmRvcjplPW5hdmlnYXRvci52ZW5kb3J9PXt9KXthYyhYNSwoe3Rlc3Q6dH0pPT50KG4sZSkpfWZ1bmN0aW9uIEZ4ZSh7'@; put 'cGxhdGZvcm06bj1uYXZpZ2F0b3IucGxhdGZvcm19PXt9KXthYyhGTSwoe3Rlc3Q6ZX0pPT5lKG4pKX1mdW5jdGlvbiBQeGUoKXtyZXR1cm4gWDUuY2hyb21lLnZhbHVlfWZ1bmN0aW9uIEh4ZSgpe3JldHVybiBYNS5jaHJvbWVXZWJLaXQudmFsdWV9ZnVuY3Rpb24gRlcoKXtyZXR1cm4gWDUu'@; put 'ZmlyZWZveC52YWx1ZX1mdW5jdGlvbiBWeGUoKXtyZXR1cm4gWDUuZmlyZWZveFdlYktpdC52YWx1ZX1mdW5jdGlvbiBoTCgpe3JldHVybiBYNS5zYWZhcmkudmFsdWV9ZnVuY3Rpb24gQnhlKCl7cmV0dXJuIFg1LnNhZmFyaUJlZm9yZTI2MS52YWx1ZX1mdW5jdGlvbiBqeGUoKXtyZXR1cm4g'@; put 'WDUuZWRnZS52YWx1ZX1mdW5jdGlvbiAkTXQoKXtyZXR1cm4gWDUuZWRnZVdlYktpdC52YWx1ZX1mdW5jdGlvbiBRNSgpe3JldHVybiBYNS5tb2JpbGUudmFsdWV9ZnVuY3Rpb24geXNlKCl7cmV0dXJuIEZNLmlvcy52YWx1ZX1mdW5jdGlvbiBQVyh7bWF4VG91Y2hQb2ludHM6bn09bmF2aWdh'@; put 'dG9yKXtyZXR1cm4obj8/MCk+MiYmRk0ubWFjLnZhbHVlfWZ1bmN0aW9uIEhXKCl7cmV0dXJuIEZNLndpbi52YWx1ZX1mdW5jdGlvbiBsdygpe3JldHVybiBGTS5tYWMudmFsdWV9ZnVuY3Rpb24gcU10KCl7cmV0dXJuIEZNLmxpbnV4LnZhbHVlfWZ1bmN0aW9uIEswKG4pe3JldHVybiBuWzBd'@; put 'LnRvVXBwZXJDYXNlKCkrbi5zdWJzdHIoMSl9ZnVuY3Rpb24gS010KC4uLm4pe2NvbnN0IGU9W107bGV0IHQ9bi5sZW5ndGg7Zm9yKDt0Oyl7dC09MTtjb25zdCByPVBsKG5bdF0pLnRvTG93ZXJDYXNlKCk7LTE9PT1lLmluZGV4T2YocikmJmUucHVzaChyKX1yZXR1cm4gMT09PWUubGVuZ3Ro'@; put 'fWZ1bmN0aW9uIFZXKCl7Y29uc3Qgbj1uZXcgVWludDE2QXJyYXkoNCk7cmV0dXJuIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKSxBcnJheS5mcm9tKG4sZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoNCwiMCIpKS5qb2luKCIiKX1mdW5jdGlvbiBic2Uobil7aWYoInN0'@; put 'cmluZyIhPXR5cGVvZiBuKXJldHVybiExO3RyeXtjb25zdCBlPUpTT04ucGFyc2Uobik7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZX1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gd3NlKG4pe3JldHVybi9eKD86XGRcZD8lfDEwMCUpJC8udGVzdChuKX1mdW5jdGlvbiBmTChu'@; put 'LGU9e30pe3JldHVybmAke259YC5yZXBsYWNlKC8oPzpcXCk/XFsoW15bXF1dKyldL2csKHQscik9PiJcXCI9PT10LmNoYXJBdCgwKT90LnN1YnN0cigxLHQubGVuZ3RoLTEpOnZvaWQgMD09PWVbcl0/IiI6U3RyaW5nKGVbcl0pKX1mdW5jdGlvbiBzbShuKXtjb25zdCBlPVN0cmluZyhuKTts'@; put 'ZXQgdD0iIixyPTAsaT0hMSxvPSIiO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBsPWVbYV07cj4wJiYhaSYmKCciJz09PWx8fCInIj09PWwpPyhpPSEwLG89bCk6aSYmbD09PW8/aT0hMTppfHwiPCIhPT1sPyFpJiYiPiI9PT1sJiZyPjA/ci09MTowPT09ciYmKHQrPWwpOnIr'@; put 'PTF9cmV0dXJuIHR9ZnVuY3Rpb24gWE10KG4pe3JldHVybiBufWZ1bmN0aW9uIFBNKG4pe3JldHVybiJzdHJpbmciIT10eXBlb2Ygbj9uOm4ucmVwbGFjZSgvKFtBLVpdKS9nLCItJDEiKS5yZXBsYWNlQWxsKCJfIiwiLSIpLnRvTG93ZXJDYXNlKCl9THhlKCkmJihOeGUoKSxGeGUoKSk7Y29u'@; put 'c3QgUU10PSJJXHUwMTMwXHhjY1x4Y2RcdTAxMjgiLnRvTG93ZXJDYXNlKCksenhlPW5ldyBNYXA7ZnVuY3Rpb24gdjEobixlKXtyZXR1cm4gZnVuY3Rpb24gSk10KG4pe2NvbnN0IGU9enhlLmdldChuKTtpZih2b2lkIDAhPT1lKXJldHVybiBlO2xldCB0O3RyeXt0PSJJXHUwMTMwXHhjY1x4'@; put 'Y2RcdTAxMjgiLnRvTG9jYWxlTG93ZXJDYXNlKG4pIT09UU10fWNhdGNoe3Q9ITF9cmV0dXJuIHp4ZS5zZXQobix0KSx0fShlKT9uLnRvTG9jYWxlTG93ZXJDYXNlKGUpOm4udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB0VHQoLi4ubil7Wm8oY29uc29sZSkmJmNvbnNvbGUubG9nKC4uLm4pfWZ1'@; put 'bmN0aW9uIEhhKC4uLm4pe1pvKGNvbnNvbGUpJiZjb25zb2xlLndhcm4oLi4ubil9Y29uc3QgV3hlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIENzZShuLGUsLi4udCl7bGV0IHI9V3hlLmdldChuKTt2b2lkIDA9PT1yJiYocj1uZXcgU2V0LFd4ZS5zZXQobixyKSksIXIuaGFzKGUpJiYoci5hZGQo'@; put 'ZSksSGEoLi4udCkpfWZ1bmN0aW9uIEJXKG4pe1pvKGNvbnNvbGUpJiZjb25zb2xlLndhcm4oYERlcHJlY2F0ZWQ6ICR7bn1gKX1mdW5jdGlvbiBtNyguLi5uKXtabyhjb25zb2xlKSYmY29uc29sZS5lcnJvciguLi5uKX1mdW5jdGlvbiBZeGUobixlPTApe2xldCB0PS0xLHI9bnVsbCxpPW47'@; put 'Zm9yKDtudWxsIT09aTspe2lmKHQ9PT1lKXtyPWhzKGkpP2k6bnVsbDticmVha31iTChpKT9pPWkuaG9zdDoodCs9MSxpPWkucGFyZW50Tm9kZSl9cmV0dXJuIHJ9ZnVuY3Rpb24gcEwobixlKXtjb25zdCB0PW4uY2xvc2VzdCgiLmhhbmRzb250YWJsZSIpO3JldHVybiEhdCYmKHQucGFyZW50'@; put 'Tm9kZT09PWV8fHQ9PT1lKX1mdW5jdGlvbiBBYShuKXtyZXR1cm4gbi50YXJnZXR9ZnVuY3Rpb24gWnhlKG4pe2NvbnN0e2ZyYW1lRWxlbWVudDplfT1uO3JldHVybiBuLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKG4ucGFyZW50KSYmZSBpbnN0YW5jZW9mIEhUTUxJRnJhbWVFbGVt'@; put 'ZW50P2U6bnVsbH1mdW5jdGlvbiB2NyhuKXtyZXR1cm4gWnhlKG4pP24ucGFyZW50Om51bGx9ZnVuY3Rpb24gclR0KG4pe3JldHVybiEhT2JqZWN0LmdldFByb3RvdHlwZU9mKG4ucGFyZW50KX1mdW5jdGlvbiBWdihuLGU9W10sdCl7Y29uc3R7RUxFTUVOVF9OT0RFOnJ9PU5vZGU7bGV0IG89'@; put 'bjtmb3IoO251bGwhPW8mJm8hPT10Oyl7Y29uc3R7bm9kZVR5cGU6YSxub2RlTmFtZTpsfT1vO2lmKGE9PT1yJiZocyhvKSYmKGUuaW5jbHVkZXMobCl8fGUuaW5jbHVkZXMobykpKXJldHVybiBvO289Ykwobyk/by5ob3N0Om8ucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBnTChu'@; put 'LGUsdCl7Y29uc3Qgcj1bXTtsZXQgaT1ocyhuKT9uOm51bGw7Zm9yKDtpJiYoaT1WdihpLGUsdCksaSYmKCF0fHx0LmNvbnRhaW5zKGkpKSk7KWlmKHIucHVzaChpKSxiTChpKSl7Y29uc3R7aG9zdDphfT1pO2k9aHMoYSk/YTpudWxsfWVsc2UgaT1pLnBhcmVudEVsZW1lbnQ7Y29uc3Qgbz1y'@; put 'Lmxlbmd0aDtyZXR1cm4gbz9yW28tMV06bnVsbH1mdW5jdGlvbiBHeGUobixlKXtjb25zdCB0PXtlbGVtZW50OnZvaWQgMCxjbGFzc05hbWVzOltdfTtsZXQgcj1uO2Zvcig7bnVsbCE9PXImJnIhPT1uLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYhdC5lbGVtZW50Oyl7aWYoInN0'@; put 'cmluZyI9PXR5cGVvZiBlJiZyLmNsYXNzTGlzdC5jb250YWlucyhlKSl0LmVsZW1lbnQ9cix0LmNsYXNzTmFtZXMucHVzaChlKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBSZWdFeHApe2NvbnN0IGk9QXJyYXkuZnJvbShyLmNsYXNzTGlzdCkuZmlsdGVyKG89PmUudGVzdChvKSk7aS5sZW5ndGgm'@; put 'Jih0LmVsZW1lbnQ9cix0LmNsYXNzTmFtZXMucHVzaCguLi5pKSl9cj1yLnBhcmVudEVsZW1lbnR9cmV0dXJuIHR9ZnVuY3Rpb24gQnYobixlKXtsZXQgdD1uLnBhcmVudE5vZGUscj1bXTtmb3IoInN0cmluZyI9PXR5cGVvZiBlP3I9biBpbnN0YW5jZW9mIERvY3VtZW50P0FycmF5LmZyb20o'@; put 'bi5xdWVyeVNlbGVjdG9yQWxsKGUpKTpBcnJheS5mcm9tKG4ub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpKTpyLnB1c2goZSk7bnVsbCE9PXQ7KXtpZihyLmluZGV4T2YodCk+LTEpcmV0dXJuITA7dD10LnBhcmVudE5vZGV9cmV0dXJuITF9ZnVuY3Rpb24gJHhlKG4pe2xldCBl'@; put 'PTAsdD1uO2lmKHQucHJldmlvdXNTaWJsaW5nKWZvcig7dD10LnByZXZpb3VzU2libGluZzspZSs9MTtyZXR1cm4gZX1mdW5jdGlvbiBqdihuLGUsdCl7Y29uc3Qgcj10LnBhcmVudEVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoYC5odF9jbG9uZV8ke259YCk7cmV0dXJuISFyJiZyLmNvbnRhaW5z'@; put 'KGUpfWZ1bmN0aW9uIGN3KG4pe2lmKCFufHwhbi5jbGFzc0xpc3R8fCFuLnBhcmVudE5vZGV8fCFuLnBhcmVudE5vZGUucGFyZW50Tm9kZXx8bi5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbkhlYWRlciIpfHwibm9uZSI9PT1uLnN0eWxlLmRpc3BsYXkpcmV0dXJuITE7Y29uc3QgZT1uLnBh'@; put 'cmVudE5vZGUsdD1BcnJheS5mcm9tKGU/LnBhcmVudE5vZGU/LmNoaWxkTm9kZXM/P1tdKTtyZXR1cm4oZT90LmluZGV4T2YoZSk6LTEpKyhOdW1iZXIucGFyc2VJbnQobi5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKT8/IiIsMTApfHwxKT49dC5sZW5ndGh9ZnVuY3Rpb24gcXhlKG4pe3JldHVy'@; put 'biBuJiZuLmxlbmd0aD9uLmZpbHRlcihlPT4hIWUpOltdfWZ1bmN0aW9uIEt4ZShuLGUpe2lmKCFufHwhbi5sZW5ndGgpcmV0dXJuIGU/e3JlZ2V4RnJlZTpbXSxyZWdleGVzOltdfTpbXTtjb25zdCB0PVtdLHI9W107cmV0dXJuIHIucHVzaCguLi5uLmZpbHRlcihpPT57Y29uc3Qgbz1pIGlu'@; put 'c3RhbmNlb2YgUmVnRXhwO3JldHVybiBvJiZlJiZ0LnB1c2goaSksIW99KSksZT97cmVnZXhGcmVlOnIscmVnZXhlczp0fTpyfWZ1bmN0aW9uIExhKG4sZSl7cmV0dXJuIHZvaWQgMCE9PW4uY2xhc3NMaXN0JiYic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZSYmbi5jbGFzc0xpc3QuY29udGFp'@; put 'bnMoZSl9ZnVuY3Rpb24gWXIobixlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoIiAiKSksKGU9cXhlKGUpKS5sZW5ndGg+MCYmbi5jbGFzc0xpc3QuYWRkKC4uLmUpfWZ1bmN0aW9uIGtvKG4sZSl7InN0cmluZyI9PXR5cGVvZiBlP2U9ZS5zcGxpdCgiICIpOmUgaW5zdGFuY2Vv'@; put 'ZiBSZWdFeHAmJihlPVtlXSk7bGV0e3JlZ2V4RnJlZTp0LHJlZ2V4ZXM6cn09S3hlKGUsITApO3Q9cXhlKHQpLHQubGVuZ3RoPjAmJm4uY2xhc3NMaXN0LnJlbW92ZSguLi50KSxyLmZvckVhY2goaT0+e24uY2xhc3NMaXN0LmZvckVhY2gobz0+e2kudGVzdChvKSYmbi5jbGFzc0xpc3QucmVt'@; put 'b3ZlKG8pfSl9KX1mdW5jdGlvbiBLbyhuLGU9W10sdCl7QXJyYXkuaXNBcnJheShlKXx8KGU9W1tlLHQ/PyIiXV0pLGUuZm9yRWFjaChyPT57QXJyYXkuaXNBcnJheShyKSYmIiIhPT1yWzBdJiZuLnNldEF0dHJpYnV0ZShyWzBdLFN0cmluZyhyWzFdKSl9KX1mdW5jdGlvbiB3NChuLGU9W10p'@; put 'eyJzdHJpbmciPT10eXBlb2YgZT9lPWUuc3BsaXQoIiAiKTplIGluc3RhbmNlb2YgUmVnRXhwJiYoZT1bZV0pO2NvbnN0e3JlZ2V4RnJlZTp0LHJlZ2V4ZXM6cn09S3hlKGUsITApO2lmKHQuZm9yRWFjaChpPT57IiIhPT1pJiZuLnJlbW92ZUF0dHJpYnV0ZShpKX0pLHIubGVuZ3RoPjApe2Nv'@; put 'bnN0IGk9bi5nZXRBdHRyaWJ1dGVOYW1lcygpO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBhPWlbb107Zm9yKGxldCBsPTA7bDxyLmxlbmd0aDtsKyspaWYocltsXS50ZXN0KGEpKXtuLnJlbW92ZUF0dHJpYnV0ZShhKTticmVha319fX1mdW5jdGlvbiBTc2Uobil7aWYoMz09'@; put 'PW4ubm9kZVR5cGUpbi5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChuKTtlbHNlIGlmKFsiVEFCTEUiLCJUSEVBRCIsIlRCT0RZIiwiVEZPT1QiLCJUUiJdLmluZGV4T2Yobi5ub2RlTmFtZSk+LTEpe2NvbnN0IGU9bi5jaGlsZE5vZGVzO2ZvcihsZXQgdD1lLmxlbmd0aC0xO3Q+PTA7dC0tKVNz'@; put 'ZShlW3RdKX19ZnVuY3Rpb24gQzQobil7bGV0IGU7Zm9yKDtlPW4ubGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKGUpfWNvbnN0IFh4ZT0vKDwoW14+XSopPnwmKFteO10qKTspLyxFc2U9InNhbml0aXplciIsaVR0PXt9O2Z1bmN0aW9uIF83KG4sZSx0PSEwLHI9ImlubmVySFRNTCIsaT1pVHQp'@; put 'e2lmKFh4ZS50ZXN0KGUpKXtsZXQgbzsiZnVuY3Rpb24iPT10eXBlb2YgdD9vPXQoZSxyKTooITEhPT10JiZDc2UoaSxFc2UsYEhUTUwgY29udGVudCBpcyBiZWluZyB3cml0dGVuIHRvIHRoZSBET00gKCIke3J9Iikgd2l0aG91dCBhIHNhbml0aXplci4gQ29uZmlndXJlIHRoZSAic2FuaXRp'@; put 'emVyIiBvcHRpb24gdG8gcHJldmVudCBYU1MgdnVsbmVyYWJpbGl0aWVzLmApLG89ZSksbi5pbm5lckhUTUw9b31lbHNlIHk3KG4sZSl9ZnVuY3Rpb24geTcobixlKXtjb25zdCB0PW4uZmlyc3RDaGlsZDt0JiYzPT09dC5ub2RlVHlwZSYmbnVsbD09PXQubmV4dFNpYmxpbmc/dC50ZXh0Q29u'@; put 'dGVudD1lOihDNChuKSxuLmFwcGVuZENoaWxkKG4ub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSkpfWZ1bmN0aW9uIFV2KG4pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuLmNoZWNrVmlzaWJpbGl0eSlyZXR1cm4gbi5jaGVja1Zpc2liaWxpdHkoKTtjb25zdCBlPW4ub3duZXJEb2N1'@; put 'bWVudC5kb2N1bWVudEVsZW1lbnQsdD1uLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7bGV0IHI9bjtmb3IoO3IhPT1lOyl7aWYobnVsbD09PXIpcmV0dXJuITE7aWYoYkwocikpe2NvbnN0IGk9ci5ob3N0O3JldHVybiBVdihpLmltcGw/aS5pbXBsOmkpfWlmKHIubm9kZVR5cGU9PT1Ob2Rl'@; put 'LkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpcmV0dXJuITE7aWYoci5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZocyhyKSYmIm5vbmUiPT09dD8uZ2V0Q29tcHV0ZWRTdHlsZShyKS5kaXNwbGF5KXJldHVybiExO3I9ci5wYXJlbnROb2RlfXJldHVybiEwfWZ1bmN0aW9uIFF4ZShuKXtj'@; put 'b25zdCB0PW4ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztsZXQgcj1uO2Zvcig7ci5wYXJlbnRFbGVtZW50Oyl7aWYoIjBweCI9PT1yLnN0eWxlLmhlaWdodHx8IjAiPT09ci5zdHlsZS5oZWlnaHQpe2NvbnN0IGk9dD8uZ2V0Q29tcHV0ZWRTdHlsZShyKS5nZXRQcm9wZXJ0eVZhbHVlKCJv'@; put 'dmVyZmxvdyIpO3JldHVybiJoaWRkZW4iPT09aXx8ImNsaXAiPT09aX1yPXIucGFyZW50RWxlbWVudH1yZXR1cm4hMX1mdW5jdGlvbiBYMChuKXtjb25zdCBlPW4ub3duZXJEb2N1bWVudCx0PWUuZGVmYXVsdFZpZXcscj1lLmRvY3VtZW50RWxlbWVudDtsZXQgbyxhLGwsaT1uO2ZvcihvPWku'@; put 'b2Zmc2V0TGVmdCxhPWkub2Zmc2V0VG9wLGw9aTsoaT1ocyhpLm9mZnNldFBhcmVudCk/aS5vZmZzZXRQYXJlbnQ6bnVsbCkmJmkhPT1lLmJvZHkmJiJvZmZzZXRMZWZ0ImluIGk7KW8rPWkub2Zmc2V0TGVmdCxhKz1pLm9mZnNldFRvcCxsPWk7cmV0dXJuIGwmJiJmaXhlZCI9PT1sLnN0eWxl'@; put 'LnBvc2l0aW9uJiYobys9KHQ/LnBhZ2VYT2Zmc2V0Pz8wKXx8ci5zY3JvbGxMZWZ0LGErPSh0Py5wYWdlWU9mZnNldD8/MCl8fHIuc2Nyb2xsVG9wKSx7bGVmdDpvLHRvcDphfX1mdW5jdGlvbiBKeGUobj13aW5kb3cpe3JldHVybiBuLnNjcm9sbFl9ZnVuY3Rpb24gZUFlKG49d2luZG93KXty'@; put 'ZXR1cm4gbi5zY3JvbGxYfWZ1bmN0aW9uIGpXKG4sZT13aW5kb3cpe3JldHVybiBuIGluc3RhbmNlb2YgV2luZG93P0p4ZShlKTpuLnNjcm9sbFRvcH1mdW5jdGlvbiBNc2UobixlPXdpbmRvdyl7cmV0dXJuIG4gaW5zdGFuY2VvZiBXaW5kb3c/ZUFlKGUpOm4uc2Nyb2xsTGVmdH1mdW5jdGlv'@; put 'biBtTChuKXtjb25zdCBlPW4ub3duZXJEb2N1bWVudCx0PWUuZGVmYXVsdFZpZXcscj1bImF1dG8iLCJzY3JvbGwiXTtsZXQgaT1uLnBhcmVudEVsZW1lbnQ7Zm9yKDtpJiZpLnN0eWxlJiZlLmJvZHkhPT1pOyl7bGV0e292ZXJmbG93Om8sb3ZlcmZsb3dYOmEsb3ZlcmZsb3dZOmx9PWkuc3R5'@; put 'bGU7aWYoW28sYSxsXS5pbmNsdWRlcygic2Nyb2xsIikpcmV0dXJuIGk7aWYodCYmKHtvdmVyZmxvdzpvLG92ZXJmbG93WDphLG92ZXJmbG93WTpsfT10LmdldENvbXB1dGVkU3R5bGUoaSkpLHIuaW5jbHVkZXMobyl8fHIuaW5jbHVkZXMoYSl8fHIuaW5jbHVkZXMobCl8fGkuY2xpZW50SGVp'@; put 'Z2h0PD1pLnNjcm9sbEhlaWdodCsxJiYoci5pbmNsdWRlcyhsKXx8ci5pbmNsdWRlcyhvKSl8fGkuY2xpZW50V2lkdGg8PWkuc2Nyb2xsV2lkdGgrMSYmKHIuaW5jbHVkZXMoYSl8fHIuaW5jbHVkZXMobykpKXJldHVybiBpO2k9aS5wYXJlbnRFbGVtZW50fXJldHVybiB0Pz9lLmRvY3VtZW50'@; put 'RWxlbWVudH1mdW5jdGlvbiB0QWUobil7cmV0dXJuIG4uc2Nyb2xsSGVpZ2h0LW4uY2xpZW50SGVpZ2h0fWZ1bmN0aW9uIG5BZShuKXtyZXR1cm4gbi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRofWZ1bmN0aW9uIEhNKG4pe2NvbnN0IGU9bi5vd25lckRvY3VtZW50LHQ9ZS5kZWZhdWx0Vmll'@; put 'dztsZXQgcj1uLnBhcmVudEVsZW1lbnQ7Zm9yKDtyJiZyLnN0eWxlJiZlLmJvZHkhPT1yOyl7aWYoInZpc2libGUiIT09ci5zdHlsZS5vdmVyZmxvdyYmIiIhPT1yLnN0eWxlLm92ZXJmbG93KXJldHVybiByO2lmKHQpe2NvbnN0IGk9dC5nZXRDb21wdXRlZFN0eWxlKHIpLG89WyJzY3JvbGwi'@; put 'LCJoaWRkZW4iLCJhdXRvIiwiY2xpcCJdLGE9aS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpLGw9aS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdy15IiksdT1pLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93LXgiKTtpZihvLmluY2x1ZGVzKGEpfHxvLmluY2x1ZGVzKGwpfHxvLmlu'@; put 'Y2x1ZGVzKHUpKXJldHVybiByfXI9ci5wYXJlbnRFbGVtZW50fXJldHVybiB0Pz9lLmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiB1dyhuLGUsdD13aW5kb3cpe2lmKCFuKXJldHVybjtpZihuIGluc3RhbmNlb2YgV2luZG93KXJldHVybiJ3aWR0aCI9PT1lP2Ake24uaW5uZXJXaWR0aH1weGA6'@; put 'ImhlaWdodCI9PT1lP2Ake24uaW5uZXJIZWlnaHR9cHhgOnZvaWQgMDtjb25zdCByPW4uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8bi5zdHlsZVtlXTtpZigiIiE9PXImJnZvaWQgMCE9PXIpcmV0dXJuIHI7Y29uc3QgaT10LmdldENvbXB1dGVkU3R5bGUobiksbz1pLmdldFByb3BlcnR5'@; put 'VmFsdWUoZSl8fGlbZV07cmV0dXJuIiIhPT1vJiZ2b2lkIDAhPT1vP286dm9pZCAwfWZ1bmN0aW9uIG9UdChuLGUpe2xldCB0PSExO3JldHVybiBlIGluc3RhbmNlb2YgQ1NTU3R5bGVSdWxlJiZlLnNlbGVjdG9yVGV4dCYmKCJtc01hdGNoZXNTZWxlY3RvciJpbiBuJiYiZnVuY3Rpb24iPT10'@; put 'eXBlb2Ygbi5tc01hdGNoZXNTZWxlY3Rvcj90PW4ubXNNYXRjaGVzU2VsZWN0b3IoZS5zZWxlY3RvclRleHQpOm4ubWF0Y2hlcyYmKHQ9bi5tYXRjaGVzKGUuc2VsZWN0b3JUZXh0KSkpLHR9ZnVuY3Rpb24gWmQobil7cmV0dXJuIG4ub2Zmc2V0V2lkdGh9ZnVuY3Rpb24gSGgobil7cmV0dXJu'@; put 'IG4ub2Zmc2V0SGVpZ2h0fWZ1bmN0aW9uIGR3KG4pe3JldHVybiBuIGluc3RhbmNlb2YgV2luZG93P24uaW5uZXJIZWlnaHQ6bi5jbGllbnRIZWlnaHR9ZnVuY3Rpb24gVHNlKG4pe3JldHVybiBuIGluc3RhbmNlb2YgV2luZG93P24uaW5uZXJXaWR0aDpuLmNsaWVudFdpZHRofWZ1bmN0aW9u'@; put 'IGFUdChuLGUsdCl7bi5hZGRFdmVudExpc3RlbmVyKGUsdCwhMSl9ZnVuY3Rpb24gc1R0KG4sZSx0KXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LCExKX1mdW5jdGlvbiB4c2Uobil7cmV0dXJuIG4uc2VsZWN0aW9uU3RhcnQ/bi5zZWxlY3Rpb25TdGFydDowfWZ1bmN0aW9uIHJBZShuKXty'@; put 'ZXR1cm4gbi5zZWxlY3Rpb25FbmQ/bi5zZWxlY3Rpb25FbmQ6MH1mdW5jdGlvbiBsVHQobj13aW5kb3cpe2NvbnN0IGU9bi5kb2N1bWVudDtsZXQgdD0iIjtyZXR1cm4gbi5nZXRTZWxlY3Rpb24/dD1uLmdldFNlbGVjdGlvbigpPy50b1N0cmluZygpPz8iIjoic2VsZWN0aW9uImluIGUmJmUu'@; put 'c2VsZWN0aW9uJiYiQ29udHJvbCIhPT1lLnNlbGVjdGlvbi50eXBlJiYodD1lLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLnRleHQpLHR9ZnVuY3Rpb24gQXNlKG49d2luZG93KXtpZihuLmdldFNlbGVjdGlvbil7Y29uc3QgZT1uLmdldFNlbGVjdGlvbigpO2U/LmVtcHR5P2UuZW1wdHkoKTpl'@; put 'Py5yZW1vdmVBbGxSYW5nZXMmJmUucmVtb3ZlQWxsUmFuZ2VzKCl9fWZ1bmN0aW9uIHZMKG4sZSx0KXtpZih2b2lkIDA9PT10JiYodD1lKSxuLnNldFNlbGVjdGlvblJhbmdlKXtuLmZvY3VzKCk7dHJ5e24uc2V0U2VsZWN0aW9uUmFuZ2UoZSx0KX1jYXRjaHtjb25zdCBpPW4ucGFyZW50RWxl'@; put 'bWVudDtpZihpKXtjb25zdCBvPWkuc3R5bGUuZGlzcGxheTtpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixuLnNldFNlbGVjdGlvblJhbmdlKGUsdCksaS5zdHlsZS5kaXNwbGF5PW99fX19bGV0IGtzZTtmdW5jdGlvbiBpQWUobj1kb2N1bWVudCl7cmV0dXJuIEhXKCk/TnVtYmVyLmlzSW50ZWdl'@; put 'cihuLmRlZmF1bHRWaWV3Py5kZXZpY2VQaXhlbFJhdGlvfHwxKT8wOjI6MH1mdW5jdGlvbiBHZChuPWRvY3VtZW50KXtyZXR1cm4gdm9pZCAwPT09a3NlJiYoa3NlPWZ1bmN0aW9uIGNUdChuPWRvY3VtZW50KXtjb25zdCBlPShyPSExKT0+e2NvbnN0IGk9bi5jcmVhdGVFbGVtZW50KCJkaXYi'@; put 'KTtpLnN0eWxlLmhlaWdodD0iMjAwcHgiLGkuc3R5bGUud2lkdGg9IjEwMCUiO2NvbnN0IG89bi5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmNsYXNzTGlzdC5hZGQoImh0U2Nyb2xsYmFyVGVzdCIpLHImJm8uY2xhc3NMaXN0LmFkZCgiaHRTY3JvbGxiYXJTYWZhcmlUZXN0Iiksby5zdHlsZS5i'@; put 'b3hTaXppbmc9ImNvbnRlbnQtYm94IixvLnN0eWxlLmhlaWdodD0iMTUwcHgiLG8uc3R5bGUubGVmdD0iMHB4IixvLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLG8uc3R5bGUucG9zaXRpb249ImFic29sdXRlIixvLnN0eWxlLnRvcD0iMHB4IixvLnN0eWxlLndpZHRoPSIyMDBweCIsby5zdHls'@; put 'ZS52aXNpYmlsaXR5PSJoaWRkZW4iLG8uYXBwZW5kQ2hpbGQoaSksbi5ib2R5LmFwcGVuZENoaWxkKG8pO2NvbnN0IGE9aS5vZmZzZXRXaWR0aDtvLnN0eWxlLm92ZXJmbG93PSJzY3JvbGwiO2xldCBsPWkub2Zmc2V0V2lkdGg7cmV0dXJuIGE9PT1sJiYobD1vLmNsaWVudFdpZHRoKSxuLmJv'@; put 'ZHkucmVtb3ZlQ2hpbGQobyksYS1sfSx0PWUoKTtyZXR1cm4gMCE9PXR8fCFCeGUoKXx8UTUoKXx8UFcoKT90OmUoITApfShuKSksa3NlfWZ1bmN0aW9uIFJzZShuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIFdpbmRvdz9uLmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0Pm4uaW5uZXJIZWlnaHQ6'@; put 'bi5vZmZzZXRXaWR0aCE9PW4uY2xpZW50V2lkdGh9ZnVuY3Rpb24gSXNlKG4pe3JldHVybiBuIGluc3RhbmNlb2YgV2luZG93P24uZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aD5uLmlubmVyV2lkdGg6bi5vZmZzZXRIZWlnaHQhPT1uLmNsaWVudEhlaWdodH1mdW5jdGlvbiBVVyhuLGUsdCl7'@; put 'bi5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZTNkKCR7ZX0sJHt0fSwwKWB9ZnVuY3Rpb24gdVR0KG4pe2xldCBlO3JldHVybiBuLnN0eWxlLnRyYW5zZm9ybSYmIiIhPT0oZT1uLnN0eWxlLnRyYW5zZm9ybSk/WyJ0cmFuc2Zvcm0iLGVdOi0xfWZ1bmN0aW9uIF9MKG4pe24uc3R5bGUudHJh'@; put 'bnNmb3JtJiYiIiE9PW4uc3R5bGUudHJhbnNmb3JtJiYobi5zdHlsZS50cmFuc2Zvcm09IiIpfWZ1bmN0aW9uIHlMKG4pe3JldHVybiBuJiYoWyJJTlBVVCIsIlNFTEVDVCIsIlRFWFRBUkVBIl0uaW5kZXhPZihuLm5vZGVOYW1lKT4tMXx8InRydWUiPT09bi5jb250ZW50RWRpdGFibGUpfWZ1'@; put 'bmN0aW9uIFZNKG4pe3JldHVybiB5TChuKSYmISgiaG90SW5wdXQiaW4gbi5kYXRhc2V0KX1mdW5jdGlvbiBkVHQobil7Y29uc3QgZT1uLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDtocyhlKSYmIVZNKGUpJiYobiBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnR8fG4gaW5zdGFuY2Vv'@; put 'ZiBIVE1MVGV4dEFyZWFFbGVtZW50KSYmbi5zZWxlY3QoKX1mdW5jdGlvbiBEc2Uobil7cmV0dXJuIW4ucGFyZW50Tm9kZX1mdW5jdGlvbiBvQWUobixlKXtuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKHIsaSk9PntyLmZvckVhY2gobz0+e28uaXNJbnRlcnNlY3RpbmcmJihlKCksaS5kaXNj'@; put 'b25uZWN0KCkpfSl9KS5vYnNlcnZlKG4pfWZ1bmN0aW9uIExzZShuLGU9ITAsdD0hMCl7Y29uc3Qgcj1uLm93bmVyRG9jdW1lbnQsaT1yLmNyZWF0ZVJhbmdlKCksbz1yLmRlZmF1bHRWaWV3Py5nZXRTZWxlY3Rpb24oKTtpZihLbyhuLCJjb250ZW50ZWRpdGFibGUiLCEwKSx0KXtjb25zdCBh'@; put 'PVsiYXJpYS1oaWRkZW4iLCJ0cnVlIl07S28obixhWzBdLGFbMV0pfWUmJllyKG4sImludmlzaWJsZVNlbGVjdGlvbiIpLGkuc2VsZWN0Tm9kZUNvbnRlbnRzKG4pLG8/LnJlbW92ZUFsbFJhbmdlcygpLG8/LmFkZFJhbmdlKGkpfWZ1bmN0aW9uIE9zZShuLGU9ITApe2NvbnN0IHQ9bi5vd25l'@; put 'ckRvY3VtZW50LmRlZmF1bHRWaWV3Py5nZXRTZWxlY3Rpb24oKTtuLmhhc0F0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSYmbi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksdD8ucmVtb3ZlQWxsUmFuZ2VzKCksZSYma28obiwiaW52aXNpYmxlU2VsZWN0aW9uIiksbi5yZW1vdmVBdHRy'@; put 'aWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfWZ1bmN0aW9uIGFBZShuLGUsdD0hMCl7THNlKG4sdCksZSgpLE9zZShuLHQpfWZ1bmN0aW9uIGhzKG4pe2lmKCJvYmplY3QiIT10eXBlb2Ygbnx8bnVsbD09PW4pcmV0dXJuITE7Y29uc3QgZT1uLm93bmVyRG9jdW1lbnQ/LmRlZmF1bHRWaWV3Py5F'@; put 'bGVtZW50O3JldHVybiEhKGUmJm4gaW5zdGFuY2VvZiBlKX1mdW5jdGlvbiBOc2Uobil7cmV0dXJuIGhzKG4pJiYoIlREIj09PW4udGFnTmFtZXx8IlRIIj09PW4udGFnTmFtZSl9ZnVuY3Rpb24gaFR0KG4pe3JldHVybiJJTlBVVCI9PT1uLnRhZ05hbWV9ZnVuY3Rpb24gYkwobil7cmV0dXJu'@; put 'IG4ubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUmJiJob3N0ImluIG59ZnVuY3Rpb24gZlR0KG4sZSl7cmV0dXJuIG4uY2hpbGROb2Rlc1tlXXx8bnVsbH1mdW5jdGlvbiBfYShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbn1mdW5jdGlvbiBzQWUobixlPTIwMCl7'@; put 'bGV0IHQ9MDtjb25zdCByPXtsYXN0Q2FsbFRocm90dGxlZDohMH07bGV0IGk9bnVsbDtyZXR1cm4gZnVuY3Rpb24gbyguLi5hKXtjb25zdCBsPURhdGUubm93KCk7bGV0IHU9ITE7ci5sYXN0Q2FsbFRocm90dGxlZD0hMCx0fHwodD1sLHU9ITApO2NvbnN0IGc9ZS0obC10KTtyZXR1cm4gdT8o'@; put 'ci5sYXN0Q2FsbFRocm90dGxlZD0hMSxuLmFwcGx5KHRoaXMsYSkpOihpJiZjbGVhclRpbWVvdXQoaSksaT1zZXRUaW1lb3V0KCgpPT57ci5sYXN0Q2FsbFRocm90dGxlZD0hMSxuLmFwcGx5KHRoaXMsYSksdD0wLGk9bnVsbH0sZykpLHJ9fWZ1bmN0aW9uIHBUdChuLGU9MjAwLHQ9MTApe2Nv'@; put 'bnN0IHI9c0FlKG4sZSk7bGV0IGk9dDtmdW5jdGlvbiBhKC4uLmwpe3JldHVybiBpPyhpLT0xLG4uYXBwbHkodGhpcyxsKSk6ci5hcHBseSh0aGlzLGwpfXJldHVybiBhLmNsZWFySGl0cz1mdW5jdGlvbiBvKCl7aT10fSxhfWZ1bmN0aW9uIEJNKG4sZT0yMDApe2xldCByLHQ9bnVsbDtmdW5j'@; put 'dGlvbiBpKC4uLmEpe3JldHVybiB0JiZjbGVhclRpbWVvdXQodCksdD1zZXRUaW1lb3V0KCgpPT57dD1udWxsLHI9bi5hcHBseSh0aGlzLGEpfSxlKSxyfXJldHVybiBpLmNhbmNlbD1mdW5jdGlvbiBvKCl7bnVsbCE9PXQmJihjbGVhclRpbWVvdXQodCksdD1udWxsKX0saX1mdW5jdGlvbiBn'@; put 'VHQoLi4ubil7Y29uc3RbZSwuLi50XT1uO3JldHVybiBmdW5jdGlvbiguLi5pKXtyZXR1cm4gbTEodCwobyxhKT0+YShvKSxlLmFwcGx5KHRoaXMsaSkpfX1mdW5jdGlvbiBtVHQobiwuLi5lKXtyZXR1cm4gZnVuY3Rpb24oLi4ucil7cmV0dXJuIG4uYXBwbHkodGhpcyxlLmNvbmNhdChyKSl9'@; put 'fWZ1bmN0aW9uIGxBZShuKXtjb25zdCBlPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbiguLi5vKXtjb25zdCBhPXIuY29uY2F0KG8pO2xldCBsO3JldHVybiBsPWEubGVuZ3RoPj1lP24uYXBwbHkodGhpcyxhKTp0KGEpLGx9fShbXSl9ZnVuY3Rpb24gdlR0'@; put 'KG4pe2NvbnN0IGU9bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IGE9ci5jb25jYXQoby5yZXZlcnNlKCkpO2xldCBsO3JldHVybiBsPWEubGVuZ3RoPj1lP24uYXBwbHkodGhpcyxhKTp0KGEpLGx9fShbXSl9ZnVuY3Rpb24gRnNlKG4s'@; put 'ZSx0LHIsaSxvLGEsbCl7cmV0dXJuIFpvKGwpP24uY2FsbChlLHQscixpLG8sYSxsKTpabyhhKT9uLmNhbGwoZSx0LHIsaSxvLGEpOlpvKG8pP24uY2FsbChlLHQscixpLG8pOlpvKGkpP24uY2FsbChlLHQscixpKTpabyhyKT9uLmNhbGwoZSx0LHIpOlpvKHQpP24uY2FsbChlLHQpOm4uY2Fs'@; put 'bChlKX1jb25zdCBFYT17QUxUOjE4LEFSUk9XX0RPV046NDAsQVJST1dfTEVGVDozNyxBUlJPV19SSUdIVDozOSxBUlJPV19VUDozOCxBVURJT19ET1dOOkZXKCk/MTgyOjE3NCxBVURJT19NVVRFOkZXKCk/MTgxOjE3MyxBVURJT19VUDpGVygpPzE4MzoxNzUsQkFDS1NQQUNFOjgsQ0FQU19M'@; put 'T0NLOjIwLENPTU1BOjE4OCxDT01NQU5EX0xFRlQ6OTEsQ09NTUFORF9SSUdIVDo5MyxDT01NQU5EX0ZJUkVGT1g6MjI0LENPTlRST0w6MTcsREVMRVRFOjQ2LEVORDozNSxFTlRFUjoxMyxFU0NBUEU6MjcsRjE6MTEyLEYyOjExMyxGMzoxMTQsRjQ6MTE1LEY1OjExNixGNjoxMTcsRjc6MTE4'@; put 'LEY4OjExOSxGOToxMjAsRjEwOjEyMSxGMTE6MTIyLEYxMjoxMjMsRjEzOjEyNCxGMTQ6MTI1LEYxNToxMjYsRjE2OjEyNyxGMTc6MTI4LEYxODoxMjksRjE5OjEzMCxIT01FOjM2LElOU0VSVDo0NSxNRURJQV9ORVhUOjE3NixNRURJQV9QTEFZX1BBVVNFOjE3OSxNRURJQV9QUkVWOjE3NyxN'@; put 'RURJQV9TVE9QOjE3OCxOVUxMOjAsTlVNX0xPQ0s6MTQ0LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBBVVNFOjE5LFBFUklPRDoxOTAsU0NST0xMX0xPQ0s6MTQ1LFNISUZUOjE2LFNQQUNFOjMyLFRBQjo5LEE6NjUsQzo2NyxEOjY4LEY6NzAsTDo3NixPOjc5LFA6ODAsUzo4MyxWOjg2LFg6'@; put 'ODgsWTo4OSxaOjkwfSxfVHQ9W0VhLkFMVCxFYS5BUlJPV19ET1dOLEVhLkFSUk9XX0xFRlQsRWEuQVJST1dfUklHSFQsRWEuQVJST1dfVVAsRWEuQVVESU9fRE9XTixFYS5BVURJT19NVVRFLEVhLkFVRElPX1VQLEVhLkJBQ0tTUEFDRSxFYS5DQVBTX0xPQ0ssRWEuREVMRVRFLEVhLkVORCxF'@; put 'YS5FTlRFUixFYS5FU0NBUEUsRWEuRjEsRWEuRjIsRWEuRjMsRWEuRjQsRWEuRjUsRWEuRjYsRWEuRjcsRWEuRjgsRWEuRjksRWEuRjEwLEVhLkYxMSxFYS5GMTIsRWEuRjEzLEVhLkYxNCxFYS5GMTUsRWEuRjE2LEVhLkYxNyxFYS5GMTgsRWEuRjE5LEVhLkhPTUUsRWEuSU5TRVJULEVhLk1F'@; put 'RElBX05FWFQsRWEuTUVESUFfUExBWV9QQVVTRSxFYS5NRURJQV9QUkVWLEVhLk1FRElBX1NUT1AsRWEuTlVMTCxFYS5OVU1fTE9DSyxFYS5QQUdFX0RPV04sRWEuUEFHRV9VUCxFYS5QQVVTRSxFYS5TQ1JPTExfTE9DSyxFYS5TSElGVCxFYS5UQUJdO2Z1bmN0aW9uIFBzZShuKXtyZXR1cm4g'@; put 'MzI9PT1ufHxuPj00OCYmbjw9NTd8fG4+PTk2JiZuPD0xMTF8fG4+PTE4NiYmbjw9MTkyfHxuPj0yMTkmJm48PTIyMnx8bj49MjI2fHxuPj02NSYmbjw9OTB9ZnVuY3Rpb24gY0FlKG4pe3JldHVybiBfVHQuaW5jbHVkZXMobil9ZnVuY3Rpb24geVR0KG4pe2NvbnN0IGU9W107cmV0dXJuIGx3'@; put 'KCk/ZS5wdXNoKEVhLkNPTU1BTkRfTEVGVCxFYS5DT01NQU5EX1JJR0hULEVhLkNPTU1BTkRfRklSRUZPWCk6ZS5wdXNoKEVhLkNPTlRST0wpLGUuaW5jbHVkZXMobil9ZnVuY3Rpb24gdUFlKG4pe3JldHVybltFYS5DT05UUk9MLEVhLkNPTU1BTkRfTEVGVCxFYS5DT01NQU5EX1JJR0hULEVh'@; put 'LkNPTU1BTkRfRklSRUZPWF0uaW5jbHVkZXMobil9ZnVuY3Rpb24gaHcobixlKXtjb25zdCB0PWUuc3BsaXQoInwiKTtsZXQgcj0hMTtyZXR1cm4gWG4odCxpPT57aWYobj09PUVhW2ldKXJldHVybiByPSEwLCExfSkscn1mdW5jdGlvbiBGMyhuKXtuLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25F'@; put 'bmFibGVkPSExLG4uY2FuY2VsQnViYmxlPSEwfWZ1bmN0aW9uIEo1KG4pe3JldHVybiExPT09bi5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uRW5hYmxlZH1mdW5jdGlvbiB6dihuKXtyZXR1cm4gMj09PW4uYnV0dG9ufWZ1bmN0aW9uIHpXKG4pe3JldHVybiAwPT09bi5idXR0b259ZnVuY3Rpb24g'@; put 'ZEFlKG4pe3JldHVybiAxPT09bi5idXR0b259ZnVuY3Rpb24gaEFlKG4pe3JldHVybiB0eXBlb2YgVG91Y2hFdmVudDwidSImJm4gaW5zdGFuY2VvZiBUb3VjaEV2ZW50fWZ1bmN0aW9uIGZBZShuLGUpe2NvbnN0IHQ9e3g6bi5vZmZzZXRYLHk6bi5vZmZzZXRZfTtsZXQgcj1BYShuKTtpZigh'@; put 'aHMoZSl8fHIhPT1lJiZyLmNvbnRhaW5zKGUpKXJldHVybiB0O2Zvcig7ciE9PWU7KXQueCs9ci5vZmZzZXRMZWZ0LHQueSs9ci5vZmZzZXRUb3Ascj1yLm9mZnNldFBhcmVudDtyZXR1cm4gdH1jb25zdCBmdz1bImFmdGVyQ2VsbE1ldGFSZXNldCIsImFmdGVyQ2hhbmdlIiwiYWZ0ZXJDb250'@; put 'ZXh0TWVudURlZmF1bHRPcHRpb25zIiwiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLCJiZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsImFmdGVyQ29udGV4dE1lbnVIaWRlIiwiYmVmb3JlQ29udGV4dE1lbnVTaG93IiwiYWZ0'@; put 'ZXJDb250ZXh0TWVudVNob3ciLCJhZnRlckNvcHlMaW1pdCIsImJlZm9yZUNyZWF0ZUNvbCIsImFmdGVyQ29sdW1uU2VxdWVuY2VDYWNoZVVwZGF0ZSIsImFmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2UiLCJhZnRlckNyZWF0ZUNvbCIsImJlZm9yZUNyZWF0ZVJvdyIsImFmdGVyQ3JlYXRlUm93'@; put 'IiwiYmVmb3JlQWx0ZXIiLCJhZnRlckRlc2VsZWN0IiwiYWZ0ZXJEZXN0cm95IiwiYWZ0ZXJEb2N1bWVudEtleURvd24iLCJhZnRlckRyYXdTZWxlY3Rpb24iLCJiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsImJlZm9yZUNvbXBvc2l0aW9uU3RhcnQiLCJhZnRlckdldENlbGxNZXRhIiwi'@; put 'YWZ0ZXJHZXRDb2xIZWFkZXIiLCJhZnRlckdldFJvd0hlYWRlciIsImFmdGVySW5pdCIsImFmdGVyTG9hZERhdGEiLCJhZnRlclVwZGF0ZURhdGEiLCJhZnRlckRhdGFQcm92aWRlckZldGNoIiwiYWZ0ZXJEYXRhUHJvdmlkZXJGZXRjaEVycm9yIiwiYWZ0ZXJEYXRhUHJvdmlkZXJGZXRjaEFi'@; put 'b3J0IiwiaGFzRXh0ZXJuYWxEYXRhU291cmNlIiwiYmVmb3JlUm93c011dGF0aW9uIiwiYWZ0ZXJSb3dzTXV0YXRpb24iLCJhZnRlclJvd3NNdXRhdGlvbkVycm9yIiwiYWZ0ZXJNb21lbnR1bVNjcm9sbCIsImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIiwiYWZ0ZXJPbkNlbGxDb3JuZXJE'@; put 'YmxDbGljayIsImFmdGVyT25DZWxsTW91c2VEb3duIiwiYWZ0ZXJPbkNlbGxNb3VzZVVwIiwiYWZ0ZXJPbkNlbGxDb250ZXh0TWVudSIsImFmdGVyT25DZWxsTW91c2VPdmVyIiwiYWZ0ZXJPbkNlbGxNb3VzZU91dCIsImFmdGVyT25DZWxsTW91c2VPdmVyT3V0c2lkZSIsImFmdGVyUmVtb3Zl'@; put 'Q29sIiwiYWZ0ZXJSZW1vdmVSb3ciLCJiZWZvcmVSZW5kZXJlciIsImFmdGVyUmVuZGVyZXIiLCJhZnRlclJvd1NlcXVlbmNlQ2FjaGVVcGRhdGUiLCJhZnRlclJvd1NlcXVlbmNlQ2hhbmdlIiwiYmVmb3JlVmlld3BvcnRTY3JvbGxWZXJ0aWNhbGx5IiwiYmVmb3JlVmlld3BvcnRTY3JvbGxI'@; put 'b3Jpem9udGFsbHkiLCJiZWZvcmVWaWV3cG9ydFNjcm9sbCIsImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IiwiYWZ0ZXJTY3JvbGwiLCJhZnRlclNlbGVjdGlvbiIsImFmdGVyU2VsZWN0aW9uQnlQcm9wIiwiYWZ0ZXJTZWxlY3Rpb25FbmQiLCJhZnRl'@; put 'clNlbGVjdGlvbkVuZEJ5UHJvcCIsImFmdGVyU2VsZWN0aW9uRm9jdXNTZXQiLCJiZWZvcmVTZWxlY3RDb2x1bW5zIiwiYWZ0ZXJTZWxlY3RDb2x1bW5zIiwiYmVmb3JlU2VsZWN0Um93cyIsImFmdGVyU2VsZWN0Um93cyIsImJlZm9yZVNlbGVjdEFsbCIsImFmdGVyU2VsZWN0QWxsIiwiYWZ0'@; put 'ZXJTZXRDZWxsTWV0YSIsImFmdGVyUmVtb3ZlQ2VsbE1ldGEiLCJhZnRlclNldERhdGFBdENlbGwiLCJhZnRlclNldERhdGFBdFJvd1Byb3AiLCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLCJhZnRlclNldFRoZW1lIiwiYWZ0ZXJVcGRhdGVTZXR0aW5ncyIsImFmdGVyVmFsaWRhdGUiLCJi'@; put 'ZWZvcmVMYW5ndWFnZUNoYW5nZSIsImFmdGVyTGFuZ3VhZ2VDaGFuZ2UiLCJiZWZvcmVBdXRvZmlsbCIsImFmdGVyQXV0b2ZpbGwiLCJiZWZvcmVDZWxsQWxpZ25tZW50IiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlQ2hhbmdlUmVuZGVyIiwiYmVmb3JlSGVpZ2h0Q2hhbmdlIiwiYmVmb3JlV2lk'@; put 'dGhDaGFuZ2UiLCJiZWZvcmVEcmF3Qm9yZGVycyIsImJlZm9yZUdldENlbGxNZXRhIiwiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLCJiZWZvcmVJbml0IiwiYmVmb3JlSW5pdFdhbGtvbnRhYmxlIiwiYmVmb3JlTG9hZERhdGEiLCJiZWZvcmVVcGRhdGVEYXRhIiwiYmVmb3JlRGF0YVByb3ZpZGVy'@; put 'RmV0Y2giLCJiZWZvcmVLZXlEb3duIiwiYmVmb3JlT25DZWxsTW91c2VEb3duIiwiYmVmb3JlT25DZWxsTW91c2VVcCIsImJlZm9yZU9uQ2VsbENvbnRleHRNZW51IiwiYmVmb3JlT25DZWxsTW91c2VPdmVyIiwiYmVmb3JlT25DZWxsTW91c2VPdXQiLCJiZWZvcmVPbkNlbGxNb3VzZU92ZXJP'@; put 'dXRzaWRlIiwiYmVmb3JlUmVtb3ZlQ29sIiwiYmVmb3JlUmVtb3ZlUm93IiwiYmVmb3JlVmlld1JlbmRlciIsImFmdGVyVmlld1JlbmRlciIsImJlZm9yZVJlbmRlciIsImFmdGVyUmVuZGVyIiwiYmVmb3JlUm93V3JhcCIsImJlZm9yZUNvbHVtbldyYXAiLCJiZWZvcmVTZXRDZWxsTWV0YSIs'@; put 'ImJlZm9yZVNlbGVjdGlvbkZvY3VzU2V0IiwiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLCJiZWZvcmVTZXRSYW5nZVN0YXJ0IiwiYmVmb3JlU2V0UmFuZ2VFbmQiLCJiZWZvcmVTZWxlY3Rpb25IaWdobGlnaHRTZXQiLCJiZWZvcmVUb3VjaFNjcm9sbCIsImJlZm9yZVZhbGlkYXRlIiwiYmVm'@; put 'b3JlVmFsdWVSZW5kZXIiLCJjb25zdHJ1Y3QiLCJpbml0IiwibW9kaWZ5Q29sSGVhZGVyIiwibW9kaWZ5Q29sV2lkdGgiLCJtb2RpZnlGaWx0ZXJzTXVsdGlTZWxlY3RWYWx1ZSIsIm1vZGlmeUZvY3VzZWRFbGVtZW50IiwibW9kaWZ5Um93SGVhZGVyIiwibW9kaWZ5Um93SGVpZ2h0IiwibW9k'@; put 'aWZ5Um93SGVpZ2h0QnlPdmVybGF5TmFtZSIsIm1vZGlmeURhdGEiLCJtb2RpZnlTb3VyY2VEYXRhIiwibW9kaWZ5Um93RGF0YSIsIm1vZGlmeUdldENlbGxDb29yZHMiLCJtb2RpZnlHZXRDb29yZHNFbGVtZW50IiwibW9kaWZ5Rm9jdXNPblRhYk5hdmlnYXRpb24iLCJiZWZvcmVIaWdobGln'@; put 'aHRpbmdSb3dIZWFkZXIiLCJiZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXIiLCJiZWZvcmVDb2x1bW5Tb3J0IiwiYWZ0ZXJDb2x1bW5Tb3J0IiwibW9kaWZ5QXV0b2ZpbGxSYW5nZSIsIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLCJiZWZvcmVDdXQiLCJhZnRlckN1dCIsImJlZm9yZUNvcHki'@; put 'LCJhZnRlckNvcHkiLCJiZWZvcmVQYXN0ZSIsImFmdGVyUGFzdGUiLCJiZWZvcmVDb2x1bW5GcmVlemUiLCJhZnRlckNvbHVtbkZyZWV6ZSIsImJlZm9yZUNvbHVtbk1vdmUiLCJhZnRlckNvbHVtbk1vdmUiLCJiZWZvcmVDb2x1bW5VbmZyZWV6ZSIsImFmdGVyQ29sdW1uVW5mcmVlemUiLCJi'@; put 'ZWZvcmVSb3dNb3ZlIiwiYWZ0ZXJSb3dNb3ZlIiwiYmVmb3JlQ29sdW1uUmVzaXplIiwiYWZ0ZXJDb2x1bW5SZXNpemUiLCJiZWZvcmVSb3dSZXNpemUiLCJhZnRlclJvd1Jlc2l6ZSIsImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIiwiYWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnMi'@; put 'LCJiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgiLCJiZWZvcmVGaWx0ZXIiLCJhZnRlckZpbHRlciIsImJlZm9yZVBhZ2VDaGFuZ2UiLCJhZnRlclBhZ2VDaGFuZ2UiLCJiZWZvcmVQYWdlU2l6ZUNoYW5nZSIsImFmdGVyUGFnZVNpemVDaGFuZ2UiLCJhZnRlclBhZ2VTaXplVmlzaWJpbGl0'@; put 'eUNoYW5nZSIsImFmdGVyUGFnZUNvdW50ZXJWaXNpYmlsaXR5Q2hhbmdlIiwiYWZ0ZXJQYWdlTmF2aWdhdGlvblZpc2liaWxpdHlDaGFuZ2UiLCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIiwiYWZ0ZXJOYW1lZEV4cHJlc3Npb25BZGRlZCIsImFmdGVyTmFtZWRFeHByZXNzaW9uUmVtb3Zl'@; put 'ZCIsImFmdGVyU2hlZXRBZGRlZCIsImFmdGVyU2hlZXRSZW5hbWVkIiwiYWZ0ZXJTaGVldFJlbW92ZWQiLCJtb2RpZnlDb2x1bW5IZWFkZXJIZWlnaHQiLCJtb2RpZnlDb2x1bW5IZWFkZXJWYWx1ZSIsImJlZm9yZVVuZG8iLCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLCJhZnRlclVuZG8iLCJh'@; put 'ZnRlclVuZG9TdGFja0NoYW5nZSIsImJlZm9yZVJlZG8iLCJiZWZvcmVSZWRvU3RhY2tDaGFuZ2UiLCJhZnRlclJlZG8iLCJhZnRlclJlZG9TdGFja0NoYW5nZSIsIm1vZGlmeVJvd0hlYWRlcldpZHRoIiwibW9kaWZ5VHJhbnNmb3JtRm9jdXMiLCJtb2RpZnlUcmFuc2Zvcm1TdGFydCIsIm1v'@; put 'ZGlmeVRyYW5zZm9ybUVuZCIsImFmdGVyTW9kaWZ5VHJhbnNmb3JtRm9jdXMiLCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQiLCJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIiwiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0'@; put 'b3JPdmVycmlkZSIsImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIiwiYmVmb3JlSGlkZVJvd3MiLCJhZnRlckhpZGVSb3dzIiwiYmVmb3JlVW5oaWRlUm93cyIsImFmdGVyVW5oaWRlUm93cyIsImJlZm9yZUhpZGVDb2x1bW5zIiwiYWZ0ZXJIaWRlQ29sdW1ucyIsImJlZm9yZVVuaGlkZUNvbHVt'@; put 'bnMiLCJhZnRlclVuaGlkZUNvbHVtbnMiLCJiZWZvcmVUcmltUm93IiwiYWZ0ZXJUcmltUm93IiwiYmVmb3JlVW50cmltUm93IiwiYWZ0ZXJVbnRyaW1Sb3ciLCJiZWZvcmVEcm9wZG93bk1lbnVTaG93IiwiYWZ0ZXJEcm9wZG93bk1lbnVTaG93IiwiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIiwi'@; put 'YmVmb3JlQWRkQ2hpbGQiLCJhZnRlckFkZENoaWxkIiwiYmVmb3JlRGV0YWNoQ2hpbGQiLCJhZnRlckRldGFjaENoaWxkIiwiYmVmb3JlQmVnaW5FZGl0aW5nIiwiYWZ0ZXJEaWFsb2dIaWRlIiwiYWZ0ZXJEaWFsb2dTaG93IiwiYmVmb3JlRGlhbG9nSGlkZSIsImJlZm9yZURpYWxvZ1Nob3ci'@; put 'LCJkaWFsb2dGb2N1c1ByZXZpb3VzRWxlbWVudCIsImRpYWxvZ0ZvY3VzTmV4dEVsZW1lbnQiLCJhZnRlckRpYWxvZ0ZvY3VzIiwiYmVmb3JlTG9hZGluZ1Nob3ciLCJhZnRlckxvYWRpbmdTaG93IiwiYmVmb3JlTG9hZGluZ0hpZGUiLCJhZnRlckxvYWRpbmdIaWRlIiwiYmVmb3JlRW1wdHlE'@; put 'YXRhU3RhdGVTaG93IiwiYWZ0ZXJFbXB0eURhdGFTdGF0ZVNob3ciLCJiZWZvcmVFbXB0eURhdGFTdGF0ZUhpZGUiLCJhZnRlckVtcHR5RGF0YVN0YXRlSGlkZSIsImJlZm9yZU5vdGlmaWNhdGlvblNob3ciLCJhZnRlck5vdGlmaWNhdGlvblNob3ciLCJiZWZvcmVOb3RpZmljYXRpb25IaWRl'@; put 'IiwiYWZ0ZXJOb3RpZmljYXRpb25IaWRlIiwiYWZ0ZXJCZWdpbkVkaXRpbmciLCJiZWZvcmVNZXJnZUNlbGxzIiwiYWZ0ZXJNZXJnZUNlbGxzIiwiYmVmb3JlVW5tZXJnZUNlbGxzIiwiYWZ0ZXJVbm1lcmdlQ2VsbHMiLCJhZnRlckxpc3RlbiIsImFmdGVyVW5saXN0ZW4iLCJhZnRlclJlZnJl'@; put 'c2hEaW1lbnNpb25zIiwiYmVmb3JlUmVmcmVzaERpbWVuc2lvbnMiLCJiZWZvcmVDb2x1bW5Db2xsYXBzZSIsImFmdGVyQ29sdW1uQ29sbGFwc2UiLCJiZWZvcmVDb2x1bW5FeHBhbmQiLCJhZnRlckNvbHVtbkV4cGFuZCIsIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCJdLEhzZT1uZXcgTWFw'@; put 'KFtbIm1vZGlmeVJvdyIsIjguMC4wIl0sWyJtb2RpZnlDb2wiLCI4LjAuMCJdLFsidW5tb2RpZnlSb3ciLCI4LjAuMCJdLFsidW5tb2RpZnlDb2wiLCI4LjAuMCJdLFsic2tpcExlbmd0aENhY2hlIiwiOC4wLjAiXSxbImhpZGRlbkNvbHVtbiIsIjguMC4wIl0sWyJoaWRkZW5Sb3ciLCI4LjAu'@; put 'MCJdLFsicGVyc2lzdGVudFN0YXRlU2F2ZSIsIjE3LjAuMCJdLFsicGVyc2lzdGVudFN0YXRlTG9hZCIsIjE3LjAuMCJdLFsicGVyc2lzdGVudFN0YXRlUmVzZXQiLCIxNy4wLjAiXV0pLFZzZT1uZXcgTWFwKFtdKTtmdW5jdGlvbiBwQWUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlw'@; put 'ZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGdBZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5v'@; put 'bi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBRMChuLGUpe3JldHVybiBmdW5jdGlvbiBiVHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGdBZShuLGUsImdldCIpKX1mdW5jdGlvbiBCc2UobixlLHQpe3BBZShuLGUpLGUuc2V0KG4sdCl9'@; put 'ZnVuY3Rpb24ganNlKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gd1R0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10'@; put 'fX0obixnQWUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIG1BZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH12YXIgVXA9bmV3IFdlYWtNYXAsak09bmV3IFdl'@; put 'YWtNYXAsV1c9bmV3IFdlYWtNYXAsVXNlPW5ldyBXZWFrU2V0O2NsYXNzIHZBZXtnZXRIb29rcyhlKXtyZXR1cm4gUTAodGhpcyxVcCkuZ2V0KGUpPz9bXX1hZGQoZSx0LHI9e30pe1EwKHRoaXMsVXApLmhhcyhlKXx8KG1BZSh0aGlzLFVzZSxfQWUpLmNhbGwodGhpcyxlKSxmdy5wdXNoKGUp'@; put 'KTtjb25zdCBpPVEwKHRoaXMsVXApLmdldChlKT8/W10sbz1pLmZpbmQoRT0+RS5jYWxsYmFjaz09PXQpO2lmKG8pcmV0dXJuIHZvaWQoITA9PT1vLnNraXAmJihvLnNraXA9ITEpKTtjb25zdCBhPU51bWJlci5pc0ludGVnZXIoci5vcmRlckluZGV4KT9yLm9yZGVySW5kZXg/PzA6MCxsPSEh'@; put 'ci5ydW5PbmNlLHU9ISFyLmluaXRpYWxIb29rO2xldCBnPSExO2lmKHUpe2NvbnN0IEU9aS5maW5kKE89Pk8uaW5pdGlhbEhvb2spO0UmJihFLmNhbGxiYWNrPXQsZz0hMCl9aWYoIWcpe2kucHVzaCh7Y2FsbGJhY2s6dCxvcmRlckluZGV4OmEscnVuT25jZTpsLGluaXRpYWxIb29rOnUsc2tp'@; put 'cDohMX0pO2xldCBFPVEwKHRoaXMsV1cpLmhhcyhlKTshRSYmMCE9PWEmJihFPSEwLFEwKHRoaXMsV1cpLmFkZChlKSksRSYmaS5sZW5ndGg+MSYmUTAodGhpcyxVcCkuc2V0KGUsaS50b1NvcnRlZCgoTyxaKT0+Ty5vcmRlckluZGV4LVoub3JkZXJJbmRleCkpfX1oYXMoZSl7cmV0dXJuIFEw'@; put 'KHRoaXMsVXApLmhhcyhlKSYmKFEwKHRoaXMsVXApLmdldChlKT8ubGVuZ3RoPz8wKT4wfXJlbW92ZShlLHQpe2lmKCFRMCh0aGlzLFVwKS5oYXMoZSkpcmV0dXJuITE7Y29uc3Qgcj1RMCh0aGlzLFVwKS5nZXQoZSk/P1tdLGk9ci5maW5kKG89Pm8uY2FsbGJhY2s9PT10KTtpZihpKXtsZXQg'@; put 'bz1RMCh0aGlzLGpNKS5nZXQoZSk/PzA7cmV0dXJuIGkuc2tpcD0hMCxvKz0xLG8+MTAwJiYoUTAodGhpcyxVcCkuc2V0KGUsci5maWx0ZXIoYT0+IWEuc2tpcCkpLG89MCksUTAodGhpcyxqTSkuc2V0KGUsbyksITB9cmV0dXJuITF9ZGVzdHJveSgpe1EwKHRoaXMsVXApLmNsZWFyKCksUTAo'@; put 'dGhpcyxqTSkuY2xlYXIoKX1jb25zdHJ1Y3RvcigpeyhmdW5jdGlvbiBDVHQobixlKXtwQWUobixlKSxlLmFkZChuKX0pKHRoaXMsVXNlKSxCc2UodGhpcyxVcCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksQnNlKHRoaXMsak0se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEJzZSh0'@; put 'aGlzLFdXLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxqc2UodGhpcyxVcCxuZXcgTWFwKSxqc2UodGhpcyxqTSxuZXcgTWFwKSxqc2UodGhpcyxXVyxuZXcgU2V0KSxmdy5mb3JFYWNoKGU9Pm1BZSh0aGlzLFVzZSxfQWUpLmNhbGwodGhpcyxlKSl9fWZ1bmN0aW9uIF9BZShuKXtRMCh0'@; put 'aGlzLFVwKS5zZXQobixbXSksUTAodGhpcyxqTSkuc2V0KG4sMCl9ZnVuY3Rpb24geUFlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWNvbnN0IFRUdD15Y2BU'@; put 'aGUgcGx1Z2luIGhvb2sgIltob29rTmFtZV0iIHdhcyByZW1vdmVkIGluIEhhbmRzb250YWJsZSBbcmVtb3ZlZEluVmVyc2lvbl0uXHgyMAogIFBsZWFzZSBjb25zdWx0IHJlbGVhc2Ugbm90ZXMgaHR0cHM6Ly9naXRodWIuY29tL2hhbmRzb250YWJsZS9oYW5kc29udGFibGUvcmVsZWFzZXMv'@; put 'dGFnL1tyZW1vdmVkSW5WZXJzaW9uXSB0b1x4MjAKICBsZWFybiBhYm91dCB0aGUgbWlncmF0aW9uIHBhdGguYDt2YXIgenNlPW5ldyBXZWFrU2V0O2NsYXNzIEdve3N0YXRpYyBnZXRTaW5nbGV0b24oKXtyZXR1cm4gZnVuY3Rpb24gQVR0KCl7cmV0dXJuIHhUdH0oKX1nZXRCdWNrZXQoZT1u'@; put 'dWxsKXtyZXR1cm4gZT8oZS5wbHVnaW5Ib29rQnVja2V0fHwoZS5wbHVnaW5Ib29rQnVja2V0PW5ldyB2QWUpLGUucGx1Z2luSG9va0J1Y2tldCk6dGhpcy5nbG9iYWxCdWNrZXR9YWRkKGUsdCxyPW51bGwsaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/WG4odCxvPT50aGlzLmFkZChlLG8s'@; put 'cikpOihIc2UuaGFzKGUpJiZIYShmTChUVHQse2hvb2tOYW1lOmUscmVtb3ZlZEluVmVyc2lvbjpIc2UuZ2V0KGUpfSkpLFZzZS5oYXMoZSkmJkhhKFZzZS5nZXQoZSkpLHRoaXMuZ2V0QnVja2V0KHIpLmFkZChlLHQse29yZGVySW5kZXg6aSxydW5PbmNlOiExfSkpLHRoaXN9b25jZShlLHQs'@; put 'cj1udWxsLGkpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP1huKHQsbz0+dGhpcy5vbmNlKGUsbyxyKSk6dGhpcy5nZXRCdWNrZXQocikuYWRkKGUsdCx7b3JkZXJJbmRleDppLHJ1bk9uY2U6ITB9KSx0aGlzfWFkZEFzRml4ZWQoZSx0LHI9bnVsbCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/'@; put 'WG4odCxpPT50aGlzLmFkZEFzRml4ZWQoZSxpLHIpKTp0aGlzLmdldEJ1Y2tldChyKS5hZGQoZSx0LHtpbml0aWFsSG9vazohMH0pLHRoaXN9cmVtb3ZlKGUsdCxyPW51bGwpe3JldHVybiB0aGlzLmdldEJ1Y2tldChyKS5yZW1vdmUoZSx0KX1oYXMoZSx0PW51bGwpe3JldHVybiB0aGlzLmdl'@; put 'dEJ1Y2tldCh0KS5oYXMoZSl9cnVuKGUsdCxyLGksbyxhLGwsdSl7cmV0dXJuIHI9eUFlKHRoaXMsenNlLGJBZSkuY2FsbCh0aGlzLHRoaXMuZ2V0QnVja2V0KCkuZ2V0SG9va3ModCksZSx0LG51bGwscixpLG8sYSxsLHUpLHlBZSh0aGlzLHpzZSxiQWUpLmNhbGwodGhpcyx0aGlzLmdldEJ1'@; put 'Y2tldChlKS5nZXRIb29rcyh0KSxlLHQsZSxyLGksbyxhLGwsdSl9ZGVzdHJveShlPW51bGwpe3RoaXMuZ2V0QnVja2V0KGUpLmRlc3Ryb3koKX1yZWdpc3RlcihlKXt0aGlzLmlzUmVnaXN0ZXJlZChlKXx8ZncucHVzaChlKX1kZXJlZ2lzdGVyKGUpe3RoaXMuaXNSZWdpc3RlcmVkKGUpJiZm'@; put 'dy5zcGxpY2UoZncuaW5kZXhPZihlKSwxKX1pc0RlcHJlY2F0ZWQoZSl7cmV0dXJuIFZzZS5oYXMoZSl8fEhzZS5oYXMoZSl9aXNSZWdpc3RlcmVkKGUpe3JldHVybiBmdy5pbmRleE9mKGUpPj0wfWdldFJlZ2lzdGVyZWQoKXtyZXR1cm4gZnd9Y29uc3RydWN0b3IoKXsoZnVuY3Rpb24gTVR0'@; put 'KG4sZSl7KGZ1bmN0aW9uIEVUdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfSkodGhpcyx6c2UpLHRoaXMuZ2xvYmFsQnVj'@; put 'a2V0PW5ldyB2QWV9fWZ1bmN0aW9uIGJBZShuLGUsdCxyLGksbyxhLGwsdSxnKXtjb25zdCBFPW4/bi5sZW5ndGg6MDtsZXQgTz0wO2lmKEUpZm9yKDtPPEU7KXtpZighbltPXXx8bltPXS5za2lwKXtPKz0xO2NvbnRpbnVlfWNvbnN0IFo9RnNlKG5bT10uY2FsbGJhY2ssZSxpLG8sYSxsLHUs'@; put 'Zyk7dm9pZCAwIT09WiYmKGk9WiksbltPXSYmbltPXS5ydW5PbmNlJiZ0aGlzLnJlbW92ZSh0LG5bT10uY2FsbGJhY2ssciksTys9MX1yZXR1cm4gaX1jb25zdCB4VHQ9bmV3IEdvLHdMPW5ldyBNYXA7ZnVuY3Rpb24genAobj0iY29tbW9uIil7d0wuaGFzKG4pfHx3TC5zZXQobixuZXcgTWFw'@; put 'KTtjb25zdCBlPXdMLmdldChuKTtyZXR1cm57cmVnaXN0ZXI6ZnVuY3Rpb24gdCh1LGcpe2Uuc2V0KHUsZyl9LGdldEl0ZW06ZnVuY3Rpb24gcih1KXtyZXR1cm4gZS5nZXQodSl9LGhhc0l0ZW06ZnVuY3Rpb24gaSh1KXtyZXR1cm4gZS5oYXModSl9LGdldE5hbWVzOmZ1bmN0aW9uIG8oKXty'@; put 'ZXR1cm5bLi4uZS5rZXlzKCldfSxnZXRWYWx1ZXM6ZnVuY3Rpb24gYSgpe3JldHVyblsuLi5lLnZhbHVlcygpXX0sY2xlYXI6ZnVuY3Rpb24gbCgpe3dMLmRlbGV0ZShuKSxlLmNsZWFyKCl9fX1mdW5jdGlvbiBrVHQobixlKXtyZXR1cm4gd0w/LmdldChuLmd1aWQpPy5nZXQoZSl9ZnVuY3Rp'@; put 'b24gd0FlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIFVNKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIElUdChuLGUpe3JldHVybiBl'@; put 'LmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sd0FlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIENBZShuLGUsdCl7KGZ1bmN0aW9uIFJUdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdp'@; put 'Y2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gU0FlKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gRFR0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0'@; put 'IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix3QWUobixlLCJzZXQiKSx0KSx0fWNvbnN0e3JlZ2lzdGVyOkxUdCxnZXRJdGVtOkVBZSxoYXNJdGVtOk1BZSxnZXROYW1lczpPVHR9PXpwKCJlZGl0b3JzIik7dmFyIFlXPW5ldyBXZWFrTWFwLHpNPW5ldyBXZWFrTWFw'@; put 'O2NsYXNzIE5UdHtnZXRDb25zdHJ1Y3Rvcigpe3JldHVybiBVTSh0aGlzLFlXKX1nZXRJbnN0YW5jZShlKXtyZXR1cm4gZS5ndWlkIGluIFVNKHRoaXMsek0pfHwoVU0odGhpcyx6TSlbZS5ndWlkXT1uZXcoVU0odGhpcyxZVykpKGUpKSxVTSh0aGlzLHpNKVtlLmd1aWRdfWNvbnN0cnVjdG9y'@; put 'KGUpe0NBZSh0aGlzLFlXLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxDQWUodGhpcyx6TSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksU0FlKHRoaXMsek0se30pLFNBZSh0aGlzLFlXLGUpO2NvbnN0IHQ9VU0odGhpcyx6TSk7R28uZ2V0U2luZ2xldG9uKCkuYWRkKCJhZnRlckRl'@; put 'c3Ryb3kiLGZ1bmN0aW9uKCl7dFt0aGlzLmd1aWRdPW51bGx9KX19Y29uc3QgV3NlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFlzZShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbn1mdW5jdGlvbiBUQWUobil7cmV0dXJuIFlzZShuKXx8SnIoIkVkaXRvciBjbGFzcyBtdXN0IGJlIGEgY29u'@; put 'c3RydWN0b3IgZnVuY3Rpb24uIiksbn1mdW5jdGlvbiBaVyhuKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG4/VEFlKG4pOihNQWUobil8fEpyKGBObyByZWdpc3RlcmVkIGVkaXRvciBmb3VuZCB1bmRlciAiJHtufSIgbmFtZWApLEVBZShuKS5nZXRDb25zdHJ1Y3RvcigpKX1mdW5jdGlvbiBK'@; put 'MChuLGUpe2xldCB0PSJzdHJpbmciPT10eXBlb2Ygbj9uOm51bGwscj1lO24mJllzZShuKSYmKHI9bix0PW4uRURJVE9SX1RZUEU/P251bGwpLHJ8fEpyKCJFZGl0b3IgY2xhc3MgaXMgcmVxdWlyZWQgdG8gcmVnaXN0ZXIgYW4gZWRpdG9yLiIpO2NvbnN0IGk9VEFlKHIpLG89bmV3IE5UdChp'@; put 'KTtudWxsIT09dCYmTFR0KHQsbyksV3NlLnNldChpLG8pfWxldCBHVz0wO2NvbnN0IFcyPWNsYXNzIFBUdHthZGRFdmVudExpc3RlbmVyKGUsdCxyLGk9ITEpe2lmKCF0aGlzLmNvbnRleHQpcmV0dXJuKCk9Pnt9O2NvbnN0IG89cjtmdW5jdGlvbiBhKGwpe28uY2FsbCh0aGlzLGZ1bmN0aW9u'@; put 'IEhUdChuKXtjb25zdCBlPW4uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO3JldHVybiBuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbj1mdW5jdGlvbigpe2UuYXBwbHkodGhpcyksRjModGhpcyl9LG59KGwpKX1yZXR1cm4gdGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLnB1c2goe2VsZW1l'@; put 'bnQ6ZSxldmVudDp0LGNhbGxiYWNrOnIsY2FsbGJhY2tQcm94eTphLG9wdGlvbnM6aSxldmVudE1hbmFnZXI6dGhpc30pLGUuYWRkRXZlbnRMaXN0ZW5lcih0LGEsaSksR1crPTEsKCk9Pnt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LHIpfX1yZW1vdmVFdmVudExpc3RlbmVyKGUsdCxy'@; put 'LGk9ITEpe2lmKCF0aGlzLmNvbnRleHQpcmV0dXJuO2xldCBhLG89dGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLmxlbmd0aDtmb3IoO287KWlmKG8tPTEsYT10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnNbb10sYS5ldmVudD09PXQmJmEuZWxlbWVudD09PWUpe2lmKHImJnIhPT1hLmNh'@; put 'bGxiYWNrfHxpJiZhLmV2ZW50TWFuYWdlciE9PXRoaXMpY29udGludWU7dGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLnNwbGljZShvLDEpLGEuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGEuZXZlbnQsYS5jYWxsYmFja1Byb3h5LGEub3B0aW9ucyksR1ctPTF9fWNsZWFyRXZlbnRz'@; put 'KGU9ITEpe2lmKCF0aGlzLmNvbnRleHQpcmV0dXJuO2xldCB0PXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVycy5sZW5ndGg7Zm9yKDt0Oyl7dC09MTtjb25zdCByPXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc1t0XTtlJiZyLmV2ZW50TWFuYWdlciE9PXRoaXN8fCh0aGlzLmNvbnRleHQu'@; put 'ZXZlbnRMaXN0ZW5lcnMuc3BsaWNlKHQsMSksci5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoci5ldmVudCxyLmNhbGxiYWNrUHJveHksci5vcHRpb25zKSxHVy09MSl9fWNsZWFyKCl7dGhpcy5jbGVhckV2ZW50cygpfWRlc3Ryb3koKXt0aGlzLmNsZWFyRXZlbnRzKCksdGhpcy5jb250'@; put 'ZXh0PW51bGx9ZGVzdHJveVdpdGhPd25FdmVudHNPbmx5KCl7dGhpcy5jbGVhckV2ZW50cyghMCksdGhpcy5jb250ZXh0PW51bGx9ZmlyZUV2ZW50KGUsdCl7bGV0IHI9ImRvY3VtZW50ImluIGU/ZS5kb2N1bWVudDp2b2lkIDAsaT0id2luZG93ImluIGU/ZTp2b2lkIDA7cnx8KHI9ZS5vd25l'@; put 'ckRvY3VtZW50P2Uub3duZXJEb2N1bWVudDplLGk9ci5kZWZhdWx0Vmlldyk7Y29uc3Qgbz17YnViYmxlczohMCxjYW5jZWxhYmxlOiJtb3VzZW1vdmUiIT09dCx2aWV3OmksZGV0YWlsOjAsc2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjEsY2xpZW50WToxLGN0cmxLZXk6ITEsYWx0S2V5'@; put 'OiExLHNoaWZ0S2V5OiExLG1ldGFLZXk6ITEsYnV0dG9uOjAscmVsYXRlZFRhcmdldDp2b2lkIDB9O2xldCBhO3IuY3JlYXRlRXZlbnQ/KGE9ci5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKSxhLmluaXRNb3VzZUV2ZW50KHQsby5idWJibGVzLG8uY2FuY2VsYWJsZSxvLnZpZXcsby5kZXRh'@; put 'aWwsby5zY3JlZW5YLG8uc2NyZWVuWSxvLmNsaWVudFgsby5jbGllbnRZLG8uY3RybEtleSxvLmFsdEtleSxvLnNoaWZ0S2V5LG8ubWV0YUtleSxvLmJ1dHRvbixvLnJlbGF0ZWRUYXJnZXR8fHIuYm9keS5wYXJlbnROb2RlKSk6YT1yLmNyZWF0ZUV2ZW50T2JqZWN0KCksZS5kaXNwYXRjaEV2'@; put 'ZW50P2UuZGlzcGF0Y2hFdmVudChhKTplLmZpcmVFdmVudChgb24ke3R9YCxhKX1jb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuY29udGV4dD1lfHx0aGlzLHRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc3x8KHRoaXMuY29udGV4dC5ldmVudExpc3RlbmVycz1bXSl9fTtmdW5jdGlvbiBac2Uo'@; put 'bixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24geEFlKG4sZSl7KGZ1bmN0aW9uIEJUdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJy'@; put 'b3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfXZhciBHc2U9bmV3IFdlYWtTZXQsQUFlPW5ldyBXZWFrU2V0O2NsYXNzICRzZXtnZXRBY3RpdmVFZGl0b3IoKXtyZXR1cm4gdGhpcy5hY3Rp'@; put 'dmVFZGl0b3J9cHJlcGFyZUVkaXRvcigpe2lmKHRoaXMuYWN0aXZlRWRpdG9yJiZ0aGlzLmFjdGl2ZUVkaXRvci5pc1dhaXRpbmcoKSlyZXR1cm4gdm9pZCB0aGlzLmNsb3NlRWRpdG9yKCExLCExLEU9PntFJiZ0aGlzLnByZXBhcmVFZGl0b3IoKX0pO2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2Vs'@; put 'ZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7aWYoIWV8fGUuaXNIZWFkZXIoKSlyZXR1cm47Y29uc3R7cm93OnQsY29sOnJ9PWUsaT10LG89cixhPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixpLG8sITEsIm1ldGEiKTtsZXQgbD1pLHU9bztpZihBcnJheS5p'@; put 'c0FycmF5KGEpJiYoW2wsdV09YSksdGhpcy5jZWxsUHJvcGVydGllcz10aGlzLmhvdC5nZXRDZWxsTWV0YShsLHUpLCF0aGlzLmlzQ2VsbEVkaXRhYmxlKCkpcmV0dXJuIHZvaWQgdGhpcy5jbGVhckFjdGl2ZUVkaXRvcigpO2NvbnN0IGc9dGhpcy5ob3QuZ2V0Q2VsbChpLG8sITApO2lmKGcp'@; put 'e2NvbnN0IEU9dGhpcy5ob3QuZ2V0Q2VsbEVkaXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKSxPPXRoaXMuaG90LmNvbFRvUHJvcCh1KSxaPXRoaXMuaG90LmdldFNvdXJjZURhdGFBdENlbGwodGhpcy5ob3QudG9QaHlzaWNhbFJvdyhsKSx1KTt0aGlzLmFjdGl2ZUVkaXRvcj1mdW5jdGlvbiBG'@; put 'VHQobixlKXtsZXQgdDtyZXR1cm4gWXNlKG4pPyhXc2UuZ2V0KG4pfHxKMChudWxsLG4pLHQ9V3NlLmdldChuKSk6InN0cmluZyI9PXR5cGVvZiBuP3Q9RUFlKG4pOkpyKCdPbmx5IHN0cmluZ3MgYW5kIGZ1bmN0aW9ucyBjYW4gYmUgcGFzc2VkIGFzICJlZGl0b3IiIHBhcmFtZXRlcicpLHR8'@; put 'fEpyKGBObyBlZGl0b3IgcmVnaXN0ZXJlZCB1bmRlciBuYW1lICIke259ImApLHQuZ2V0SW5zdGFuY2UoZSl9KEUsdGhpcy5ob3QpLHRoaXMuYWN0aXZlRWRpdG9yLnByZXBhcmUoaSxvLE8sZyxaLHRoaXMuY2VsbFByb3BlcnRpZXMpfX1pc0VkaXRvck9wZW5lZCgpe3JldHVybiB0aGlzLmFj'@; put 'dGl2ZUVkaXRvciYmdGhpcy5hY3RpdmVFZGl0b3IuaXNPcGVuZWQoKX1vcGVuRWRpdG9yKGUsdCxyPSExKXtpZighdGhpcy5pc0NlbGxFZGl0YWJsZSgpKXJldHVybiB2b2lkIHRoaXMuY2xlYXJBY3RpdmVFZGl0b3IoKTtjb25zdCBpPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUo'@; put 'KTtsZXQgbz10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQmVnaW5FZGl0aW5nIixpLmhpZ2hsaWdodC5yb3csaS5oaWdobGlnaHQuY29sLGUsdCxyKTt0IGluc3RhbmNlb2YgTW91c2VFdmVudCYmImJvb2xlYW4iIT10eXBlb2YgbyYmKG89MD09PXRoaXMuaG90LnNlbGVjdGlvbi5nZXRMYXll'@; put 'ckxldmVsKCkmJmkuaXNTaW5nbGUoKSksITEhPT1vPyh0aGlzLmFjdGl2ZUVkaXRvcnx8KHRoaXMuaG90LnNjcm9sbFRvRm9jdXNlZENlbGwoKSx0aGlzLnByZXBhcmVFZGl0b3IoKSksdGhpcy5hY3RpdmVFZGl0b3ImJihyJiZ0aGlzLmFjdGl2ZUVkaXRvci5lbmFibGVGdWxsRWRpdE1vZGUo'@; put 'KSx0aGlzLmFjdGl2ZUVkaXRvci5iZWdpbkVkaXRpbmcoZSx0KSkpOnRoaXMuY2xlYXJBY3RpdmVFZGl0b3IoKX1jbG9zZUVkaXRvcihlPSExLHQ9ITEscil7dGhpcy5hY3RpdmVFZGl0b3I/dGhpcy5hY3RpdmVFZGl0b3IuZmluaXNoRWRpdGluZyhlLHQscik6ciYmcighMSl9Y2xvc2VFZGl0'@; put 'b3JBbmRTYXZlQ2hhbmdlcyhlKXt0aGlzLmNsb3NlRWRpdG9yKCExLGUpfWNsb3NlRWRpdG9yQW5kUmVzdG9yZU9yaWdpbmFsVmFsdWUoZSl7dGhpcy5jbG9zZUVkaXRvcighMCxlKX1jbGVhckFjdGl2ZUVkaXRvcigpe3RoaXMuYWN0aXZlRWRpdG9yPXZvaWQgMH1pc0NlbGxFZGl0YWJsZSgp'@; put 'e2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFlKXJldHVybiExO2NvbnN0IHQ9dGhpcy5ob3QuZ2V0Q2VsbEVkaXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKSx7cm93OnIsY29sOml9PWUuaGlnaGxpZ2h0O2lmKG51bGw9PT1yfHxudWxsPT09aSlyZXR1cm4h'@; put 'MTtjb25zdHtyb3dJbmRleE1hcHBlcjpvLGNvbHVtbkluZGV4TWFwcGVyOmF9PXRoaXMuaG90LGw9by5pc0hpZGRlbih0aGlzLmhvdC50b1BoeXNpY2FsUm93KHIpKXx8YS5pc0hpZGRlbih0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGkpKTtyZXR1cm4hKHRoaXMuY2VsbFByb3BlcnRpZXMu'@; put 'cmVhZE9ubHl8fCF0fHxsKX1tb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlcihlKXtpZighdGhpcy5ob3QuZ2V0U2VsZWN0ZWQoKSlyZXR1cm47Y29uc3QgdD17Li4uImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMudGFibGVNZXRhLmVudGVyTW92ZXM/dGhpcy50YWJsZU1ldGEuZW50ZXJNb3ZlcyhlKTp0'@; put 'aGlzLnRhYmxlTWV0YS5lbnRlck1vdmVzfTtlLnNoaWZ0S2V5JiYodC5yb3c9LSh0LnJvdz8/MCksdC5jb2w9LSh0LmNvbD8/MCkpLHRoaXMuaG90LnNlbGVjdGlvbi5pc011bHRpcGxlKCk/dGhpcy5zZWxlY3Rpb24udHJhbnNmb3JtRm9jdXModC5yb3c/PzAsdC5jb2w/PzApOnRoaXMuc2Vs'@; put 'ZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KHQucm93Pz8wLHQuY29sPz8wLCEwKX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfWNvbnN0cnVjdG9yKGUsdCxyKXt4QWUodGhpcyxHc2UpLHhBZSh0aGlzLEFBZSksdGhpcy5kZXN0cm95ZWQ9ITEs'@; put 'dGhpcy5ob3Q9ZSx0aGlzLnRhYmxlTWV0YT10LHRoaXMuc2VsZWN0aW9uPXIsdGhpcy5ldmVudE1hbmFnZXI9bmV3IFcyKGUpLHRoaXMuaG90LmFkZEhvb2soImFmdGVyRG9jdW1lbnRLZXlEb3duIixpPT5ac2UodGhpcyxHc2Usa0FlKS5jYWxsKHRoaXMsaSkpLHRoaXMuaG90LmFkZEhvb2so'@; put 'ImJlZm9yZUNvbXBvc2l0aW9uU3RhcnQiLGk9PlpzZSh0aGlzLEdzZSxrQWUpLmNhbGwodGhpcyxpKSksdGhpcy5ob3Qudmlldy5fd3QudXBkYXRlKCJvbkNlbGxEYmxDbGljayIsKGksbyxhKT0+WnNlKHRoaXMsQUFlLGpUdCkuY2FsbCh0aGlzLGksbykpfX1mdW5jdGlvbiBrQWUobil7Y29u'@; put 'c3QgZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIXRoaXMuaG90LmlzTGlzdGVuaW5nKCl8fCFlfHxlLmhpZ2hsaWdodC5pc0hlYWRlcigpfHxKNShuKSlyZXR1cm47Y29uc3R7a2V5Q29kZTp0fT1uLHI9KG4uY3RybEtleXx8bi5tZXRhS2V5KSYmIW4uYWx0S2V5Oygh'@; put 'dGhpcy5hY3RpdmVFZGl0b3J8fHRoaXMuYWN0aXZlRWRpdG9yJiYhdGhpcy5hY3RpdmVFZGl0b3IuaXNXYWl0aW5nKCkpJiYhY0FlKHQpJiYhdUFlKHQpJiYhciYmIXRoaXMuaXNFZGl0b3JPcGVuZWQoKSYmdGhpcy5vcGVuRWRpdG9yKCIiLG4pfWZ1bmN0aW9uIGpUdChuLGUpe2U/LmlzQ2Vs'@; put 'bCgpJiYodGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpP3RoaXMuY2xlYXJBY3RpdmVFZGl0b3IoKTp0aGlzLm9wZW5FZGl0b3IobnVsbCxuLCEwKSl9Y29uc3QgUkFlPW5ldyBXZWFrTWFwOyRzZS5nZXRJbnN0YW5jZT1mdW5jdGlvbihuLGUsdCl7bGV0IHI9'@; put 'UkFlLmdldChuKTtyZXR1cm4gcnx8KHI9bmV3ICRzZShuLGUsdCksUkFlLnNldChuLHIpKSxyfTtjb25zdCBVVHQ9JHNlLElBZT17IiZuYnNwOyI6IiAiLCImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+In0selR0PW5ldyBSZWdFeHAoT2JqZWN0LmtleXMoSUFlKS5tYXAobj0+YCgk'@; put 'e259KWApLmpvaW4oInwiKSwiZ2kiKTtmdW5jdGlvbiBxc2Uobil7Y29uc3QgZT1uLmhhc0NvbEhlYWRlcnMoKSx0PW4uaGFzUm93SGVhZGVycygpLHI9W2U/LTE6MCx0Py0xOjAsbi5jb3VudFJvd3MoKS0xLG4uY291bnRDb2xzKCktMV0saT1uLmdldERhdGEoLi4uciksbz1pLmxlbmd0aCxh'@; put 'PW8+MD9pWzBdLmxlbmd0aDowLGw9WyI8dGFibGU+IiwiPC90YWJsZT4iXSx1PWU/WyI8dGhlYWQ+IiwiPC90aGVhZD4iXTpbXSxnPVsiPHRib2R5PiIsIjwvdGJvZHk+Il0sRT10PzE6MCxPPWU/MTowO2ZvcihsZXQgWj0wO1o8bztaKz0xKXtjb25zdCBlZT1lJiYwPT09Wix2ZT1bXTtmb3Io'@; put 'bGV0IEhlPTA7SGU8YTtIZSs9MSl7Y29uc3QgV2U9IWVlJiZ0JiYwPT09SGU7bGV0IGF0PSIiO2lmKGVlKWF0PWA8dGg+JHtuLmdldENvbEhlYWRlcihIZS1FKX08L3RoPmA7ZWxzZSBpZihXZSlhdD1gPHRoPiR7bi5nZXRSb3dIZWFkZXIoWi1PKX08L3RoPmA7ZWxzZXtjb25zdCBDdD1pW1pd'@; put 'W0hlXSx7aGlkZGVuOkF0LHJvd3NwYW46S3QsY29sc3BhbjpxdH09bi5nZXRDZWxsTWV0YShaLU8sSGUtRSk7aWYoIUF0KXtjb25zdCBnbj1bXTtpZihLdCYmZ24ucHVzaChgcm93c3Bhbj0iJHtLdH0iYCkscXQmJmduLnB1c2goYGNvbHNwYW49IiR7cXR9ImApLEFsKEN0KSlhdD1gPHRkICR7'@; put 'Z24uam9pbigiICIpfT48L3RkPmA7ZWxzZXtjb25zdCBUbj1TdHJpbmcoQ3QpLnJlcGxhY2VBbGwoIjwiLCImbHQ7IikucmVwbGFjZUFsbCgiPiIsIiZndDsiKS5yZXBsYWNlKC8oPGJyKFxzKnxcLyk+KFxyXG58XG4pP3xcclxufFxuKS9nLCI8YnI+XHJcbiIpLnJlcGxhY2UoL1x4MjAvZ2ks'@; put 'IiZuYnNwOyIpLnJlcGxhY2UoL1x0L2dpLCImIzk7Iik7YXQ9YDx0ZCAke2duLmpvaW4oIiAiKX0+JHtUbn08L3RkPmB9fX12ZS5wdXNoKGF0KX1jb25zdCBNZT1bIjx0cj4iLC4uLnZlLCI8L3RyPiJdLmpvaW4oIiIpO2VlP3Uuc3BsaWNlKDEsMCxNZSk6Zy5zcGxpY2UoLTEsMCxNZSl9cmV0'@; put 'dXJuIGwuc3BsaWNlKDEsMCx1LmpvaW4oIiIpLGcuam9pbigiIikpLGwuam9pbigiIil9ZnVuY3Rpb24gS3NlKG4pe2NvbnN0IGU9bi5sZW5ndGgsdD1bIjx0YWJsZT4iXTtmb3IobGV0IHI9MDtyPGU7cis9MSl7Y29uc3QgaT1uW3JdLG89aS5sZW5ndGgsYT1bXTswPT09ciYmdC5wdXNoKCI8'@; put 'dGJvZHk+Iik7Zm9yKGxldCBsPTA7bDxvO2wrPTEpe2NvbnN0IHU9aVtsXSxnPUFsKHUpPyIiOnUudG9TdHJpbmcoKS5yZXBsYWNlQWxsKCImIiwiJmFtcDsiKS5yZXBsYWNlQWxsKCI8IiwiJmx0OyIpLnJlcGxhY2VBbGwoIj4iLCImZ3Q7IikucmVwbGFjZSgvKDxicihccyp8XC8pPihcclxu'@; put 'fFxuKT98XHJcbnxcbikvZywiPGJyPlxyXG4iKS5yZXBsYWNlKC9ceDIwezIsfS9naSxFPT5gPHNwYW4gc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4keyImbmJzcDsiLnJlcGVhdChFLmxlbmd0aC0xKX0gPC9zcGFuPmApLnJlcGxhY2UoL1x0L2dpLCImIzk7Iik7YS5wdXNoKGA8dGQ+JHtn'@; put 'fTwvdGQ+YCl9dC5wdXNoKCI8dHI+IiwuLi5hLCI8L3RyPiIpLHIrMT09PWUmJnQucHVzaCgiPC90Ym9keT4iKX1yZXR1cm4gdC5wdXNoKCI8L3RhYmxlPiIpLHQuam9pbigiIil9Y29uc3QgREFlPS88dGRcYltePl0qPi9pLFlUdD0vPFwvXHMqdGRccyo+L2ksWlR0PS88cC4qPz4vZztmdW5j'@; put 'dGlvbiBHVHQobixlKXtsZXQgdD0xLHI9ZTtmb3IoO3Q+MDspe2NvbnN0IGk9bi5zdWJzdHJpbmcociksbz1pLm1hdGNoKERBZSksYT1pLm1hdGNoKFlUdCk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgbD1yKyhhLmluZGV4Pz8wKSx1PWFbMF0ubGVuZ3RoLGc9bz9yKyhvLmluZGV4Pz8wKTpu'@; put 'Lmxlbmd0aDtpZihnPGwpdCs9MSxyPWcrKG8/LlswXS5sZW5ndGg/PzApO2Vsc2V7aWYodC09MSwwPT09dClyZXR1cm57c3RhcnQ6bCxsZW5ndGg6dX07cj1sK3V9fXJldHVybiBudWxsfWZ1bmN0aW9uIExBZShuKXtjb25zdCBlPVtdO2xldCB0PTA7Zm9yKDt0PG4ubGVuZ3RoOyl7Y29uc3Qg'@; put 'cj1uLnN1YnN0cmluZyh0KS5tYXRjaChEQWUpO2lmKCFyKXtlLnB1c2gobi5zdWJzdHJpbmcodCkpO2JyZWFrfWNvbnN0IGk9dCsoci5pbmRleD8/MCksbz1yWzBdLGE9aStvLmxlbmd0aDtlLnB1c2gobi5zdWJzdHJpbmcodCxpKSk7Y29uc3QgbD1HVHQobixhKTtpZighbCl7ZS5wdXNoKG4u'@; put 'c3Vic3RyaW5nKGkpKTticmVha31sZXQgTyxFPW4uc3Vic3RyaW5nKGksbC5zdGFydCtsLmxlbmd0aCkuc3Vic3RyaW5nKG8ubGVuZ3RoLGwuc3RhcnQtaSkudHJpbSgpLnJlcGxhY2VBbGwoL1xuXHMrL2csIiAiKS5yZXBsYWNlQWxsKFpUdCwiXG4iKS5yZXBsYWNlKC9eXG4rLywiIikucmVw'@; put 'bGFjZUFsbCgvPFwvKC4qKT5ccyskL2dtLCI8LyQxPiIpO2Rve089RSxFPUUucmVwbGFjZSgvPCg/IWJyXGIpW14+XSs+L2dpLCIiKX13aGlsZShFIT09Tyk7RT1FLnJlcGxhY2VBbGwoL14mbmJzcDskL2dtLCIiKSxlLnB1c2goYCR7b30ke0V9PC90ZD5gKSx0PWwuc3RhcnQrbC5sZW5ndGh9'@; put 'cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gWHNlKG4sZT1kb2N1bWVudCl7Y29uc3QgdD17fSxyPWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGk9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKTtyLmFwcGVuZENoaWxkKGkpO2xldCBvPW47aWYoInN0cmluZyI9PXR5cGVvZiBvKXtjb25zdCBB'@; put 'dD1MQWUobyk7aS5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLEF0KSxvPWkucXVlcnlTZWxlY3RvcigidGFibGUiKX1pZighb3x8IWZ1bmN0aW9uIFdUdChuKXtyZXR1cm4iVEFCTEUiPT09KG4mJm4ubm9kZU5hbWV8fCIiKX0obykpcmV0dXJuO2NvbnN0IGE9byxsPWkucXVlcnlT'@; put 'ZWxlY3RvcignbWV0YVtuYW1lJD0iZW5lcmF0b3IiXScpLHU9bnVsbCE9PWEucXVlcnlTZWxlY3RvcigidGJvZHkgdGgiKSxnPWEucXVlcnlTZWxlY3RvcigidHIiKSxFPWc/QXJyYXkuZnJvbShnLmNlbGxzKS5yZWR1Y2UoKEF0LEt0KT0+QXQrS3QuY29sU3BhbiwwKS0odT8xOjApOjAsTz1h'@; put 'LnRGb290JiZBcnJheS5mcm9tKGEudEZvb3Qucm93cyl8fFtdLFo9W107bGV0IGVlPSExLHZlPTAsTWU9MDtpZihhLnRIZWFkKXtjb25zdCBBdD1BcnJheS5mcm9tKGEudEhlYWQucm93cykuZmlsdGVyKEt0PT57Y29uc3QgcXQ9bnVsbCE9PUt0LnF1ZXJ5U2VsZWN0b3IoInRkIik7cmV0dXJu'@; put 'IHF0JiZaLnB1c2goS3QpLCFxdH0pO3ZlPUF0Lmxlbmd0aCxlZT12ZT4wLHZlPjE/dC5uZXN0ZWRIZWFkZXJzPUFycmF5LmZyb20oQXQpLnJlZHVjZSgoS3QscXQpPT57Y29uc3QgZ249QXJyYXkuZnJvbShxdC5jZWxscykucmVkdWNlKChUbixDbixxcik9PntpZih1JiYwPT09cXIpcmV0dXJu'@; put 'IFRuO2NvbnN0e2NvbFNwYW46JG4saW5uZXJIVE1MOlRyfT1DbjtyZXR1cm4gVG4ucHVzaCgkbj4xP3tsYWJlbDpUcixjb2xzcGFuOiRufTpUciksVG59LFtdKTtyZXR1cm4gS3QucHVzaChnbiksS3R9LFtdKTplZSYmKHQuY29sSGVhZGVycz1BcnJheS5mcm9tKEF0WzBdLmNoaWxkcmVuKS5y'@; put 'ZWR1Y2UoKEt0LHF0LGduKT0+KHUmJjA9PT1nbnx8S3QucHVzaChxdC5pbm5lckhUTUwpLEt0KSxbXSkpfVoubGVuZ3RoJiYodC5maXhlZFJvd3NUb3A9Wi5sZW5ndGgpLE8ubGVuZ3RoJiYodC5maXhlZFJvd3NCb3R0b209Ty5sZW5ndGgpO2NvbnN0IEhlPVsuLi5aLC4uLkFycmF5LmZyb20o'@; put 'YS50Qm9kaWVzKS5yZWR1Y2UoKEF0LEt0KT0+KEFycmF5LmZyb20oS3Qucm93cykuZm9yRWFjaChxdD0+e0F0LnB1c2gocXQpfSksQXQpLFtdKSwuLi5PXTtNZT1IZS5sZW5ndGg7Y29uc3QgV2U9QXJyYXkuZnJvbSh7bGVuZ3RoOk1lfSwoKT0+QXJyYXkuZnJvbSh7bGVuZ3RoOkV9KSksYXQ9'@; put 'W10sQ3Q9W107Zm9yKGxldCBBdD0wO0F0PE1lO0F0Kyspe2NvbnN0IHF0PUFycmF5LmZyb20oSGVbQXRdLmNlbGxzKSxnbj1xdC5sZW5ndGg7Zm9yKGxldCBUbj0wO1RuPGduO1RuKyspe2NvbnN0IENuPXF0W1RuXSx7bm9kZU5hbWU6cXIsaW5uZXJIVE1MOiRuLHJvd1NwYW46VHIsY29sU3Bh'@; put 'bjpyaX09Q24sZm49V2VbQXRdLmZpbmRJbmRleCh5cj0+dm9pZCAwPT09eXIpO2lmKCJURCI9PT1xcil7aWYoVHI+MXx8cmk+MSl7Zm9yKGxldCB0aT1BdDt0aTxBdCtUcjt0aSsrKWlmKHRpPE1lKWZvcihsZXQgZnI9Zm47ZnI8Zm4rcmk7ZnIrKylXZVt0aV1bZnJdPW51bGw7Y29uc3QgQW49'@; put 'Q24uZ2V0QXR0cmlidXRlKCJzdHlsZSIpO0FuJiZBbi5pbmNsdWRlcygibXNvLWlnbm9yZTpjb2xzcGFuIil8fGF0LnB1c2goe2NvbDpmbixyb3c6QXQscm93c3BhbjpUcixjb2xzcGFuOnJpfSl9bGV0IHlyPSIiO3lyPWwmJi9leGNlbC9naS50ZXN0KGwuY29udGVudCk/JG4ucmVwbGFjZSgv'@; put 'W1xyXG5dW1x4MjBdezAsMn0vZywiICIpLnJlcGxhY2UoLzxicihccyp8XC8pPltcclxuXT9bXHgyMF17MCwzfS9naW0sIlxyXG4iKTokbi5yZXBsYWNlKC88YnIoXHMqfFwvKT5bXHJcbl0/L2dpbSwiXHJcbiIpLFdlW0F0XVtmbl09eXIucmVwbGFjZSh6VHQsQW49PklBZVtBbl0pfWVsc2Ug'@; put 'Q3QucHVzaCgkbil9fXJldHVybiBhdC5sZW5ndGgmJih0Lm1lcmdlQ2VsbHM9YXQpLEN0Lmxlbmd0aCYmKHQucm93SGVhZGVycz1DdCksV2UubGVuZ3RoJiYodC5kYXRhPVdlKSx0fWZ1bmN0aW9uIHcwKG4sZT1bXSl7aWYoIm51bWJlciI9PXR5cGVvZiBuKXJldHVybiFpc05hTihuKSYmaXNG'@; put 'aW5pdGUobik7aWYoInN0cmluZyI9PXR5cGVvZiBuKXtpZigwPT09bi5sZW5ndGgpcmV0dXJuITE7aWYoMT09PW4ubGVuZ3RoKXJldHVybi9cZC8udGVzdChuKTtjb25zdCB0PUFycmF5LmZyb20obmV3IFNldChbIi4iLC4uLmVdKSkubWFwKHI9PmBcXCR7cn1gKS5qb2luKCJ8Iik7cmV0dXJu'@; put 'IG5ldyBSZWdFeHAoYF5bKy1dPygoKCR7dH0pP1xcZCsoKCR7dH0pXFxkKyk/KGVbKy1dP1xcZCspPyl8KDB4W2EtZlxcZF0rKSkkYCwiaSIpLnRlc3Qobi50cmltKCkpfXJldHVybiJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4mJiJudW1iZXIiPT10eXBlb2Ygbi52YWx1ZU9mKCkmJiEo'@; put 'biBpbnN0YW5jZW9mIERhdGUpfWZ1bmN0aW9uIE9BZShuKXtyZXR1cm4gdzAobixbIiwiXSl9ZnVuY3Rpb24gUXNlKG4sZSl7cmV0dXJuIi4iPT09ZSYmInN0cmluZyI9PXR5cGVvZiBuJiYvXlsrLV0/WzEtOV1cZHswLDJ9KCxcZHszfSkrJC8udGVzdChuLnRyaW0oKSl9ZnVuY3Rpb24gSnNl'@; put 'KG4sZSl7cmV0dXJuIiwiPT09ZSYmInN0cmluZyI9PXR5cGVvZiBuJiYvXlsrLV0/WzEtOV1cZHswLDJ9KFwuXGR7M30pKyQvLnRlc3Qobi50cmltKCkpfWZ1bmN0aW9uIGVsZShuLGUpe3JldHVybiIsIj09PWUmJiJzdHJpbmciPT10eXBlb2YgbiYmL15bKy1dP1sxLTldXGR7MCwyfShcLlxk'@; put 'ezN9KSssXGQrJC8udGVzdChuLnRyaW0oKSl9ZnVuY3Rpb24gVmEobixlLHQpe2xldCByLGksbztmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGU/KHI9LTEsaT1uLG89ZSk6KHI9bi0xLGk9ZSxvPXQpOysrcjw9aSYmITEhPT1vKHIpOyk7fWZ1bmN0aW9uIHRsZShuLGUsdCl7bGV0IGksbyxyPW4r'@; put 'MTtmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGU/KG89ZSxpPTApOihvPXQsaT1lKTstLXI+PWkmJiExIT09byhyKTspO31mdW5jdGlvbiBubGUobixlKXtyZXR1cm4gZT1OdW1iZXIucGFyc2VJbnQoZS50b1N0cmluZygpLnJlcGxhY2UoIiUiLCIiKSwxMCksZT1pc05hTihlKT8wOmUsTnVtYmVy'@; put 'LnBhcnNlSW50KFN0cmluZyhuKmUvMTAwKSwxMCl9ZnVuY3Rpb24gVnMobixlLHQpe3JldHVybiBNYXRoLm1pbihuLGUpPT09bj9lOk1hdGgubWF4KG4sdCk9PT1uP3Q6bn1mdW5jdGlvbiBOQWUobixlPXt9KXtjb25zdHtkZWNpbWFsU2VwYXJhdG9yOnR9PWUscj1uLnRyaW0oKTtpZihRc2Uo'@; put 'bix0KSlyZXR1cm4gTnVtYmVyLnBhcnNlRmxvYXQoci5yZXBsYWNlQWxsKCIsIiwiIikpO2lmKEpzZShuLHQpKXJldHVybiBOdW1iZXIucGFyc2VGbG9hdChyLnJlcGxhY2VBbGwoIi4iLCIiKSk7aWYoZWxlKG4sdCkpcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KHIucmVwbGFjZUFsbCgiLiIs'@; put 'IiIpLnJlcGxhY2UoIiwiLCIuIikpO2NvbnN0IGk9ci5yZXBsYWNlKCIsIiwiLiIpO3JldHVybiExPT09aXNOYU4oTnVtYmVyLnBhcnNlRmxvYXQoaSkpP051bWJlci5wYXJzZUZsb2F0KGkpOm51bGx9ZnVuY3Rpb24gcHcobil7cmV0dXJuIE51bWJlci5pc0ludGVnZXIobikmJiJudW1iZXIi'@; put 'PT10eXBlb2YgbiYmbj49MH1jb25zdCBGQWU9bmV3IE1hcChbWyJhc2MiLFstMSwxXV0sWyJkZXNjIixbMSwtMV1dXSkscVR0PW49PmBUaGUgcHJpb3JpdHkgJyR7bn0nIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuYCxLVHQ9bj0+YFRoZSBwcmlvcml0eSAnJHtufScgaXMgbm90IGEg'@; put 'bnVtYmVyLmAsUVR0PW49PmBUaGUgaWQgJyR7bn0nIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuYDtmdW5jdGlvbiBDTCh7ZXJyb3JJZEV4aXN0czpufT17fSl7Y29uc3QgZT1uZXcgTWFwLHQ9X2Eobik/bjpRVHQ7ZnVuY3Rpb24gdSgpe3JldHVyblsuLi5lXX1mdW5jdGlvbiBFKE8p'@; put 'e3JldHVybiBlLmhhcyhPKX1yZXR1cm57YWRkSXRlbTpmdW5jdGlvbiByKE8sWil7RShPKSYmSnIoU3RyaW5nKHQoTykpKSxlLnNldChPLFopfSxjbGVhcjpmdW5jdGlvbiBvKCl7ZS5jbGVhcigpfSxnZXRJZDpmdW5jdGlvbiBhKE8pe2NvbnN0W1pdPXUoKS5maW5kKChbZWUsdmVdKT0+Tz09'@; put 'PXZlJiZlZSl8fFtudWxsXTtyZXR1cm4gWn0sZ2V0SXRlbTpmdW5jdGlvbiBsKE8pe3JldHVybiBlLmdldChPKX0sZ2V0SXRlbXM6dSxnZXRWYWx1ZXM6ZnVuY3Rpb24gZygpe3JldHVyblsuLi5lLnZhbHVlcygpXX0saGFzSXRlbTpFLHJlbW92ZUl0ZW06ZnVuY3Rpb24gaShPKXtyZXR1cm4g'@; put 'ZS5kZWxldGUoTyl9fX1jb25zdCBKVHQ9bj0+YCcke259JyB2YWx1ZSBpcyBhbHJlYWR5IGRlY2xhcmVkIGluIGEgdW5pcXVlIHNldC5gLGlsZT1uPT5gVGhlcmUgaXMgYWxyZWFkeSByZWdpc3RlcmVkICIke259IiBwbHVnaW4uYCxQQWU9ZnVuY3Rpb24gWFR0KHtlcnJvclByaW9yaXR5RXhp'@; put 'c3RzOm4sZXJyb3JQcmlvcml0eU5hTjplfT17fSl7Y29uc3QgdD1uZXcgTWFwLHI9X2Eobik/bjpxVHQsaT1fYShlKT9lOktUdDtyZXR1cm57YWRkSXRlbTpmdW5jdGlvbiBvKGwsdSl7dzAobCl8fEpyKFN0cmluZyhpKGwpKSksdC5oYXMobCkmJkpyKFN0cmluZyhyKGwpKSksdC5zZXQobCx1'@; put 'KX0sZ2V0SXRlbXM6ZnVuY3Rpb24gYShsPSJhc2MiKXtjb25zdFt1LGddPUZBZS5nZXQobCl8fEZBZS5nZXQoImFzYyIpO3JldHVyblsuLi50XS5zb3J0KChFLE8pPT5FWzBdPE9bMF0/dTpnKS5tYXAoRT0+RVsxXSl9fX0oe2Vycm9yUHJpb3JpdHlFeGlzdHM6bj0+YFRoZXJlIGlzIGFscmVh'@; put 'ZHkgcmVnaXN0ZXJlZCBwbHVnaW4gb24gcHJpb3JpdHkgIiR7bn0iLmAsZXJyb3JQcmlvcml0eU5hTjpuPT5gVGhlIHByaW9yaXR5ICIke259IiBpcyBub3QgYSBudW1iZXIuYH0pLEhBZT1mdW5jdGlvbiBleHQoe2Vycm9ySXRlbUV4aXN0czpufT17fSl7Y29uc3QgZT1uZXcgU2V0LHQ9X2Eo'@; put 'bik/bjpKVHQ7cmV0dXJue2FkZEl0ZW06ZnVuY3Rpb24gcihhKXtlLmhhcyhhKSYmSnIoU3RyaW5nKHQoYSkpKSxlLmFkZChhKX0sY2xlYXI6ZnVuY3Rpb24gbygpe2UuY2xlYXIoKX0sZ2V0SXRlbXM6ZnVuY3Rpb24gaSgpe3JldHVyblsuLi5lXX19fSh7ZXJyb3JJdGVtRXhpc3RzOmlsZX0p'@; put 'LG9sZT1DTCh7ZXJyb3JJZEV4aXN0czppbGV9KTtmdW5jdGlvbiBhbGUoKXtyZXR1cm5bLi4uUEFlLmdldEl0ZW1zKCksLi4uSEFlLmdldEl0ZW1zKCldfWZ1bmN0aW9uIFNMKG4pe2NvbnN0IGU9SzAobik7cmV0dXJuIG9sZS5nZXRJdGVtKGUpfWZ1bmN0aW9uIG9sKG4sZSx0KXtjb25zdFty'@; put 'LGksb109ZnVuY3Rpb24gcnh0KG4sZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49KGU9bikuUExVR0lOX0tFWSx0PWUuUExVR0lOX1BSSU9SSVRZKSxbbixlLHRdfShuLGUsdCk7dm9pZCAwPT09U0wocikmJmZ1bmN0aW9uIG54dChuLGUsdCl7Y29uc3Qgcj1LMChuKTtvbGUu'@; put 'aGFzSXRlbShyKSYmSnIoaWxlKHIpKSx2b2lkIDA9PT10P0hBZS5hZGRJdGVtKHIpOlBBZS5hZGRJdGVtKHQsciksb2xlLmFkZEl0ZW0ocixlKX0ocixpLG8pfWNvbnN0e3JlZ2lzdGVyOml4dCxnZXRJdGVtOm94dCxoYXNJdGVtOlZBZSxnZXROYW1lczpheHR9PXpwKCJyZW5kZXJlcnMiKTtm'@; put 'dW5jdGlvbiAkVyhuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOihWQWUobil8fEpyKGBObyByZWdpc3RlcmVkIHJlbmRlcmVyIGZvdW5kIHVuZGVyICIke259IiBuYW1lYCksb3h0KG4pKX1mdW5jdGlvbiBDMChuLGUpeyJzdHJpbmciIT10eXBlb2YgbiYmKGU9bixuPW4uUkVOREVS'@; put 'RVJfVFlQRSksaXh0KG4sZSl9Y29uc3R7cmVnaXN0ZXI6c3h0LGdldEl0ZW06bHh0LGhhc0l0ZW06QkFlLGdldE5hbWVzOmN4dH09enAoInZhbGlkYXRvcnMiKTtmdW5jdGlvbiBzbGUobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjooQkFlKG4pfHxKcihgTm8gcmVnaXN0ZXJlZCB2'@; put 'YWxpZGF0b3IgZm91bmQgdW5kZXIgIiR7bn0iIG5hbWVgKSxseHQobikpfWZ1bmN0aW9uIGU2KG4sZSl7InN0cmluZyIhPXR5cGVvZiBuJiYoZT1uLG49bi5WQUxJREFUT1JfVFlQRSksc3h0KG4sZSl9ZnVuY3Rpb24gakFlKG4sZSx0LHIsaSl7bGV0IG89MDtmb3IobGV0IGE9dDthPD1yO2Er'@; put 'Kyl7Y29uc3QgbD1uLmdldENlbGwoe3JvdzplLGNvbDphfSwhMCk7aWYoIShsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKWNvbnRpbnVlO2NvbnN0IHU9bC5vZmZzZXRXaWR0aDtpZihpPG8rdSlyZXR1cm4gYTtvKz11fXJldHVybiBudWxsfWZ1bmN0aW9uIGxsZShuLGUsdCxyLGkpe2xldCBv'@; put 'PTA7Zm9yKGxldCBhPXQ7YTw9cjthKyspe2NvbnN0IGw9bi5nZXRDZWxsKHtyb3c6YSxjb2w6ZX0sITApO2lmKCEobCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSljb250aW51ZTtjb25zdCB1PWwub2Zmc2V0SGVpZ2h0O2lmKGk8byt1KXJldHVybiBhO28rPXV9cmV0dXJuIG51bGx9ZnVuY3Rp'@; put 'b24gVUFlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB6QWUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJh'@; put 'dHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gVmkobixlKXtyZXR1cm4gZnVuY3Rpb24gdXh0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix6QWUobixlLCJnZXQiKSl9ZnVu'@; put 'Y3Rpb24gZTIobixlLHQpe1VBZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gWHMobixlLHQpe3JldHVybiBmdW5jdGlvbiBkeHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQg'@; put 'cmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHpBZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gYjcobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0'@; put 'dXJuIHR9ZnVuY3Rpb24gY2xlKG4sZSl7VUFlKG4sZSksZS5hZGQobil9dmFyICQxPW5ldyBXZWFrTWFwLFdNPW5ldyBXZWFrTWFwLHZoPW5ldyBXZWFrTWFwLEVMPW5ldyBXZWFrTWFwLHFXPW5ldyBXZWFrTWFwLFAzPW5ldyBXZWFrTWFwLEtXPW5ldyBXZWFrTWFwLFlNPW5ldyBXZWFrTWFw'@; put 'LFkyPW5ldyBXZWFrTWFwLFdwPW5ldyBXZWFrTWFwLGd3PW5ldyBXZWFrTWFwLG13PW5ldyBXZWFrTWFwLFd2PW5ldyBXZWFrTWFwLFl2PW5ldyBXZWFrTWFwLFpNPW5ldyBXZWFrTWFwLEdNPW5ldyBXZWFrTWFwLFp2PW5ldyBXZWFrTWFwLFlBZT1uZXcgV2Vha1NldCxaQWU9bmV3IFdlYWtT'@; put 'ZXQsR3Y9bmV3IFdlYWtTZXQ7ZnVuY3Rpb24gcHh0KG4sZSl7Y29uc3QgdD1WaSh0aGlzLCQxKS5nZXRTZXR0aW5nKCJydGxNb2RlIikscj1WaSh0aGlzLEtXKS5jYWxsKHRoaXMpLGk9VmkodGhpcywkMSkuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSxvPVZpKHRoaXMsJDEpLmdl'@; put 'dFNldHRpbmcoImZpeGVkUm93c1RvcCIpLGE9VmkodGhpcywkMSkuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksbD1yLnd0U2Nyb2xsLmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZVJvdygpLHU9ci53dFNjcm9sbC5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpLGc9ci53dFNjcm9s'@; put 'bC5nZXRGaXJzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKSxFPXIud3RTY3JvbGwuZ2V0TGFzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKSxPPVZpKHRoaXMsdmgpLnd0Um9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksWj1WaSh0aGlzLCQxKS5nZXRTZXR0aW5nKCJjb2x1bW5I'@; put 'ZWFkZXJzIikubGVuZ3RoPjA/ci53dFZpZXdwb3J0LmdldENvbHVtbkhlYWRlckhlaWdodCgpOjAsZWU9VmkodGhpcywkMSkuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aD4wP3Iud3RWaWV3cG9ydC5nZXRSb3dIZWFkZXJXaWR0aCgpOjAse3Jvb3RXaW5kb3c6dmV9PVZpKHRoaXMs'@; put 'V00pLE1lPXIud3RWaWV3cG9ydC5pc0hvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdygpP01hdGgubWluKDAsTy5sZWZ0KTpPLmxlZnQsSGU9ci53dFZpZXdwb3J0LmlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpP01hdGgubWluKDAsTy50b3ApOk8udG9wLFdlPXIud3RWaWV3'@; put 'cG9ydC5pc0hvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdygpP3ZlLmlubmVyV2lkdGg6Ty5sZWZ0K3Iud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCkrZWUsYXQ9ci53dFZpZXdwb3J0LmlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpP3ZlLmlubmVySGVpZ2h0Ok8udG9w'@; put 'K3Iud3RWaWV3cG9ydC5nZXRWaWV3cG9ydEhlaWdodCgpK1osQ3Q9VnMobixNZSxXZSksQXQ9VnMoZSxIZSxhdCk7bGV0IEt0PW51bGw7aWYoaT4wKXtjb25zdCBnbj1yLmdldENlbGwoe3JvdzpsLGNvbDowfSwhMCk7aWYoZ24gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3QgVG49Z24u'@; put 'Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7S3Q9akFlKHIsbCwwLGktMSx0P1RuLnJpZ2h0LUN0OkN0LVRuLmxlZnQpfX1pZihudWxsPT09S3Qpe2NvbnN0IGduPXIuZ2V0Q2VsbCh7cm93OmwsY29sOmd9LCEwKTtpZihnbiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBUbj1nbi5nZXRC'@; put 'b3VuZGluZ0NsaWVudFJlY3QoKSxDbj10P1RuLnJpZ2h0LUN0OkN0LVRuLmxlZnQ7S3Q9akFlKHIsbCxnLEUsQ24pLG51bGw9PT1LdCYmKEt0PUNuPDA/ZzpFKX1lbHNlIEt0PWd9bGV0IHF0PW51bGw7aWYobz4wKXtjb25zdCBnbj1yLmdldENlbGwoe3JvdzowLGNvbDpnfSwhMCk7Z24gaW5z'@; put 'dGFuY2VvZiBIVE1MRWxlbWVudCYmKHF0PWxsZShyLGcsMCxvLTEsQXQtZ24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSl9aWYobnVsbD09PXF0JiZhPjApe2NvbnN0IGduPVZpKHRoaXMsJDEpLmdldFNldHRpbmcoInRvdGFsUm93cyIpLFRuPWduLWEsQ249Z24tMSxxcj1yLmdldENl'@; put 'bGwoe3JvdzpUbixjb2w6Z30sITApO2lmKHFyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe2NvbnN0IFRyPUF0LXFyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtUcj49MCYmKHF0PWxsZShyLGcsVG4sQ24sVHIpLG51bGw9PT1xdCYmKHF0PUNuKSl9fWlmKG51bGw9PT1xdCl7Y29uc3Qg'@; put 'Z249ci5nZXRDZWxsKHtyb3c6bCxjb2w6Z30sITApO2duIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ/KHF0PWxsZShyLGcsbCx1LEF0LWduLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCksbnVsbD09PXF0JiYocXQ9dSkpOnF0PWx9cmV0dXJue2Nvb3JkczpyLmNyZWF0ZUNlbGxDb29yZHMo'@; put 'cXQsS3QpLGlzT3V0c2lkZTpuPE1lfHxuPldlfHxlPEhlfHxlPmF0fX1mdW5jdGlvbiBneHQobil7YjcodGhpcyxHdix2dykuY2FsbCh0aGlzKTtjb25zdCBlPW4udG91Y2hlc1swXTtlJiYoWHModGhpcyxXdix7eDplLmNsaWVudFgseTplLmNsaWVudFl9KSxYcyh0aGlzLGd3LHNldFRpbWVv'@; put 'dXQoKCk9PntYcyh0aGlzLGd3LG51bGwpLFhzKHRoaXMsbXcsITApLFhzKHRoaXMsV3YsbnVsbCksdGhpcy5vbk1vdXNlRG93bihuKSxWaSh0aGlzLFdwKVswXT1udWxsLFZpKHRoaXMsV3ApWzFdPW51bGwsbnVsbCE9PVZpKHRoaXMsWTIpWzBdJiZjbGVhclRpbWVvdXQoVmkodGhpcyxZMilb'@; put 'MF0pLG51bGwhPT1WaSh0aGlzLFkyKVsxXSYmY2xlYXJUaW1lb3V0KFZpKHRoaXMsWTIpWzFdKTtjb25zdCB0PW4udGFyZ2V0O2lmKCF0KXJldHVybjtjb25zdCByPW5ldyBNb3VzZUV2ZW50KCJjb250ZXh0bWVudSIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjbGllbnRYOmUuY2xpZW50'@; put 'WCxjbGllbnRZOmUuY2xpZW50WSxzY3JlZW5YOmUuc2NyZWVuWCxzY3JlZW5ZOmUuc2NyZWVuWX0pO3QuZGlzcGF0Y2hFdmVudChyKX0sNTAwKSkpfWZ1bmN0aW9uIHZ3KCl7bnVsbCE9PVZpKHRoaXMsZ3cpJiYoY2xlYXJUaW1lb3V0KFZpKHRoaXMsZ3cpKSxYcyh0aGlzLGd3LG51bGwpKSxY'@; put 'cyh0aGlzLFd2LG51bGwpfWNvbnN0IEdBZT1jbGFzcyBmeHR7cmVnaXN0ZXJFdmVudHMoKXtWaSh0aGlzLFAzKS5hZGRFdmVudExpc3RlbmVyKFZpKHRoaXMsdmgpLmhvbGRlciwiY29udGV4dG1lbnUiLHI9PnRoaXMub25Db250ZXh0TWVudShyKSksVmkodGhpcyxQMykuYWRkRXZlbnRMaXN0'@; put 'ZW5lcihWaSh0aGlzLHZoKS5UQUJMRSwibW91c2VvdmVyIixyPT50aGlzLm9uTW91c2VPdmVyKHIpKSxWaSh0aGlzLFAzKS5hZGRFdmVudExpc3RlbmVyKFZpKHRoaXMsdmgpLlRBQkxFLCJtb3VzZW91dCIscj0+dGhpcy5vbk1vdXNlT3V0KHIpKSxWaSh0aGlzLHZoKS5pc01hc3RlciYmKFZp'@; put 'KHRoaXMsUDMpLmFkZEV2ZW50TGlzdGVuZXIoVmkodGhpcyxXTSkucm9vdERvY3VtZW50LCJtb3VzZW1vdmUiLHI9PnRoaXMub25Nb3VzZU1vdmUocikpLFZpKHRoaXMsUDMpLmFkZEV2ZW50TGlzdGVuZXIoVmkodGhpcyxXTSkucm9vdERvY3VtZW50LCJtb3VzZXVwIiwoKT0+e1hzKHRoaXMs'@; put 'R00sITEpLFhzKHRoaXMsWnYsbnVsbCl9KSk7Y29uc3QgZT0oKT0+e1ZpKHRoaXMsUDMpLmFkZEV2ZW50TGlzdGVuZXIoVmkodGhpcyx2aCkuaG9sZGVyLCJ0b3VjaHN0YXJ0IixyPT50aGlzLm9uVG91Y2hTdGFydChyKSksVmkodGhpcyxQMykuYWRkRXZlbnRMaXN0ZW5lcihWaSh0aGlzLHZo'@; put 'KS5ob2xkZXIsInRvdWNoZW5kIixyPT50aGlzLm9uVG91Y2hFbmQocikpLFZpKHRoaXMsUDMpLmFkZEV2ZW50TGlzdGVuZXIoVmkodGhpcyx2aCkuaG9sZGVyLCJ0b3VjaG1vdmUiLHI9PnRoaXMub25Ub3VjaE1vdmUocikpLFZpKHRoaXMsUDMpLmFkZEV2ZW50TGlzdGVuZXIoVmkodGhpcyx2'@; put 'aCkuaG9sZGVyLCJzY3JvbGwiLCgpPT50aGlzLm9uSG9sZGVyU2Nyb2xsKCkpfTtRNSgpP2UoKTooX3NlKCkmJmUoKSwoKCk9PntWaSh0aGlzLFAzKS5hZGRFdmVudExpc3RlbmVyKFZpKHRoaXMsdmgpLmhvbGRlciwibW91c2V1cCIscj0+dGhpcy5vbk1vdXNlVXAocikpLFZpKHRoaXMsUDMp'@; put 'LmFkZEV2ZW50TGlzdGVuZXIoVmkodGhpcyx2aCkuaG9sZGVyLCJtb3VzZWRvd24iLHI9PnRoaXMub25Nb3VzZURvd24ocikpfSkoKSl9c2VsZWN0ZWRDZWxsV2FzVG91Y2hlZChlKXtjb25zdCByPXRoaXMucGFyZW50Q2VsbChlKS5jb29yZHM7aWYoVmkodGhpcyxZTSkmJnIpe2NvbnN0W2ks'@; put 'b109W3Iucm93LFZpKHRoaXMsWU0pLmZyb20ucm93XSxbYSxsXT1bci5jb2wsVmkodGhpcyxZTSkuZnJvbS5jb2xdO3JldHVybiBpPT09byYmYT09PWx9cmV0dXJuITF9cGFyZW50Q2VsbChlKXtjb25zdCB0PXtjb29yZHM6bnVsbCxURDpudWxsfSxpPWdMKGUsWyJURCIsIlRIIl0sVmkodGhp'@; put 'cyx2aCkuVEFCTEUpLG89ZTtpZihpKXQuY29vcmRzPVZpKHRoaXMsdmgpLmdldENvb3JkcyhpKSx0LlREPWk7ZWxzZSBpZihMYShvLCJ3dEJvcmRlciIpJiZMYShvLCJjdXJyZW50Iikpe2NvbnN0IGE9VmkodGhpcyxFTCkuZ2V0Rm9jdXNTZWxlY3Rpb24oKT8uY2VsbFJhbmdlO2EmJih0LmNv'@; put 'b3Jkcz1hLmhpZ2hsaWdodCx0LlREPVZpKHRoaXMsdmgpLmdldENlbGwodC5jb29yZHMpKX1lbHNlIGlmKExhKG8sInd0Qm9yZGVyIikmJkxhKG8sImFyZWEiKSl7Y29uc3QgYT1WaSh0aGlzLEVMKS5nZXRBcmVhU2VsZWN0aW9uKCk/LmNlbGxSYW5nZTthJiYodC5jb29yZHM9YS50byx0LlRE'@; put 'PVZpKHRoaXMsdmgpLmdldENlbGwodC5jb29yZHMpKX1yZXR1cm4gdH1vbk1vdXNlRG93bihlKXtjb25zdCB0PVZpKHRoaXMsV00pLnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50LHI9QWEoZSksaT1sPT5ZeGUocixsKSxvPUFhKGUpO2lmKHQmJiFbIlREIiwiVEgiXS5pbmNsdWRlcyh0Lm5v'@; put 'ZGVOYW1lKSYmKG89PT10fHxpKDApPT09dHx8aSgxKT09PXQpKXJldHVybjtjb25zdCBhPXRoaXMucGFyZW50Q2VsbChvKTtMYShvLCJjb3JuZXIiKT9WaSh0aGlzLCQxKS5nZXRTZXR0aW5nKCJvbkNlbGxDb3JuZXJNb3VzZURvd24iLGUsbyk6YS5URCYmKFhzKHRoaXMsR00sITApLFhzKHRo'@; put 'aXMsWnYsbnVsbCksVmkodGhpcywkMSkuaGFzKCJvbkNlbGxNb3VzZURvd24iKSYmdGhpcy5jYWxsTGlzdGVuZXIoIm9uQ2VsbE1vdXNlRG93biIsZSxhLmNvb3JkcyxhLlREKSksKDA9PT1lLmJ1dHRvbnx8dGhpcy50b3VjaEFwcGxpZWQpJiZhLlREJiYoVmkodGhpcyxXcClbMF09YS5URCxu'@; put 'dWxsIT09VmkodGhpcyxZMilbMF0mJmNsZWFyVGltZW91dChWaSh0aGlzLFkyKVswXSksVmkodGhpcyxZMilbMF09c2V0VGltZW91dCgoKT0+e1ZpKHRoaXMsV3ApWzBdPW51bGx9LDFlMykpfW9uQ29udGV4dE1lbnUoZSl7aWYoYjcodGhpcyxHdix2dykuY2FsbCh0aGlzKSxWaSh0aGlzLCQx'@; put 'KS5oYXMoIm9uQ2VsbENvbnRleHRNZW51Iikpe2NvbnN0IHQ9dGhpcy5wYXJlbnRDZWxsKEFhKGUpKTt0LlREJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsQ29udGV4dE1lbnUiLGUsdC5jb29yZHMsdC5URCl9fW9uTW91c2VPdmVyKGUpe2lmKCFWaSh0aGlzLCQxKS5oYXMoIm9uQ2VsbE1v'@; put 'dXNlT3ZlciIpKXJldHVybjtjb25zdCB0PVZpKHRoaXMsdmgpLlRBQkxFLHI9Z0woQWEoZSksWyJURCIsIlRIIl0sdCksaT1WaSh0aGlzLHFXKXx8dGhpcztpZihyJiZyIT09aS5sYXN0TW91c2VPdmVyJiZCdihyLHQpKXtpLmxhc3RNb3VzZU92ZXI9cjtjb25zdCBvPVZpKHRoaXMsdmgpLmdl'@; put 'dENvb3JkcyhyKTtvJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdmVyIixlLG8scil9fW9uTW91c2VNb3ZlKGUpe2lmKCFWaSh0aGlzLEdNKSlyZXR1cm47Y29uc3R7Y29vcmRzOnQsaXNPdXRzaWRlOnJ9PWI3KHRoaXMsWUFlLHB4dCkuY2FsbCh0aGlzLGUuY2xpZW50WCxlLmNs'@; put 'aWVudFkpO2lmKHIpe2NvbnN0IGk9VmkodGhpcyxadik7aWYoIWl8fGkucm93IT09dC5yb3d8fGkuY29sIT09dC5jb2wpe2NvbnN0IG89VmkodGhpcyx2aCkuZ2V0Q2VsbCh0KTtvIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJihYcyh0aGlzLFp2LHtyb3c6dC5yb3csY29sOnQuY29sfSksdGhp'@; put 'cy5jYWxsTGlzdGVuZXIoIm9uQ2VsbE1vdXNlT3Zlck91dHNpZGUiLGUsdCxvKSl9fWVsc2UgWHModGhpcyxadixudWxsKX1vbk1vdXNlT3V0KGUpe2lmKCFWaSh0aGlzLCQxKS5oYXMoIm9uQ2VsbE1vdXNlT3V0IikpcmV0dXJuO2NvbnN0IHQ9VmkodGhpcyx2aCkuVEFCTEUscj1nTChBYShl'@; put 'KSxbIlREIiwiVEgiXSx0KSxpPWdMKGUucmVsYXRlZFRhcmdldCxbIlREIiwiVEgiXSx0KSxvPVZpKHRoaXMscVcpfHx0aGlzO2lmKHImJnIhPT1pJiZCdihyLHQpKXtjb25zdCBhPVZpKHRoaXMsdmgpLmdldENvb3JkcyhyKTthJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdXQi'@; put 'LGUsYSxyKSxudWxsPT09aSYmKG8ubGFzdE1vdXNlT3Zlcj1udWxsKX19b25Nb3VzZVVwKGUpe1hzKHRoaXMsR00sITEpLFhzKHRoaXMsWnYsbnVsbCk7Y29uc3QgdD10aGlzLnBhcmVudENlbGwoQWEoZSkpO3QuVEQmJlZpKHRoaXMsJDEpLmhhcygib25DZWxsTW91c2VVcCIpJiZ0aGlzLmNh'@; put 'bGxMaXN0ZW5lcigib25DZWxsTW91c2VVcCIsZSx0LmNvb3Jkcyx0LlREKSwoMD09PWUuYnV0dG9ufHx0aGlzLnRvdWNoQXBwbGllZCkmJih0LlREJiZ0LlREPT09VmkodGhpcyxXcClbMF0mJnQuVEQ9PT1WaSh0aGlzLFdwKVsxXT8oTGEoQWEoZSksImNvcm5lciIpP3RoaXMuY2FsbExpc3Rl'@; put 'bmVyKCJvbkNlbGxDb3JuZXJEYmxDbGljayIsZSx0LmNvb3Jkcyx0LlREKTp0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsRGJsQ2xpY2siLGUsdC5jb29yZHMsdC5URCksVmkodGhpcyxXcClbMF09bnVsbCxWaSh0aGlzLFdwKVsxXT1udWxsKTp0LlREJiZ0LlREPT09VmkodGhpcyxXcClbMF0m'@; put 'JihWaSh0aGlzLFdwKVsxXT10LlRELG51bGwhPT1WaSh0aGlzLFkyKVsxXSYmY2xlYXJUaW1lb3V0KFZpKHRoaXMsWTIpWzFdKSxWaSh0aGlzLFkyKVsxXT1zZXRUaW1lb3V0KCgpPT57VmkodGhpcyxXcClbMV09bnVsbH0sNTAwKSkpfW9uVG91Y2hTdGFydChlKXtYcyh0aGlzLFlNLFZpKHRo'@; put 'aXMsRUwpLmdldEZvY3VzU2VsZWN0aW9uKCk/LmNlbGxSYW5nZT8/bnVsbCksdGhpcy50b3VjaEFwcGxpZWQ9ITAsWHModGhpcyxZdiwhMSksWHModGhpcyxtdywhMSksWHModGhpcyxaTSxlKSxiNyh0aGlzLFpBZSxneHQpLmNhbGwodGhpcyxlKX1vblRvdWNoRW5kKGUpe2NvbnN0IHQ9Vmko'@; put 'dGhpcyxZdikscj0hdCYmIVZpKHRoaXMsbXcpJiZudWxsIT09VmkodGhpcyxaTSksaT1WaSh0aGlzLFpNKTtiNyh0aGlzLEd2LHZ3KS5jYWxsKHRoaXMpLFhzKHRoaXMsWk0sbnVsbCksciYmbnVsbCE9PWkmJnRoaXMub25Nb3VzZURvd24oaSk7Y29uc3Qgbz1BYShlKSxhPXRoaXMucGFyZW50'@; put 'Q2VsbChvKT8uY29vcmRzO2lmKGUuY2FuY2VsYWJsZSYmbnVsbCE9YSYmKGEucm93Pz8tMSk+PTAmJihhLmNvbD8/LTEpPj0wJiZWaSh0aGlzLCQxKS5nZXRTZXR0aW5nKCJpc0RhdGFWaWV3SW5zdGFuY2UiKSl7Y29uc3QgZz1bIkEiLCJCVVRUT04iLCJJTlBVVCJdOyh5c2UoKSYmKEh4ZSgp'@; put 'fHxWeGUoKSkmJnRoaXMuc2VsZWN0ZWRDZWxsV2FzVG91Y2hlZChvKSYmIWcuaW5jbHVkZXMoby50YWdOYW1lKXx8IXRoaXMuc2VsZWN0ZWRDZWxsV2FzVG91Y2hlZChvKSYmKCJJTlBVVCIhPT1vLnRhZ05hbWV8fCJjaGVja2JveCIhPT1vLnR5cGUpKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSgh'@; put 'dHx8VmkodGhpcyxtdykpJiZ0aGlzLm9uTW91c2VVcChlKSx0aGlzLnRvdWNoQXBwbGllZD0hMSxYcyh0aGlzLFl2LCExKSxYcyh0aGlzLG13LCExKX1vbkhvbGRlclNjcm9sbCgpe3RoaXMubW9tZW50dW1TY3JvbGxpbmd8fCh0aGlzLm1vbWVudHVtU2Nyb2xsaW5nPXt9KSx0aGlzLnRvdWNo'@; put 'QXBwbGllZCYmWHModGhpcyxZdiwhMCksYjcodGhpcyxHdix2dykuY2FsbCh0aGlzKSxjbGVhclRpbWVvdXQodGhpcy5tb21lbnR1bVNjcm9sbGluZy5fdGltZW91dCksdGhpcy5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nfHxWaSh0aGlzLCQxKS5nZXRTZXR0aW5nKCJvbkJlZm9yZVRvdWNo'@; put 'U2Nyb2xsIiksdGhpcy5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nPSEwLHRoaXMubW9tZW50dW1TY3JvbGxpbmcuX3RpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMudG91Y2hBcHBsaWVkfHwodGhpcy5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nPSExLFZpKHRoaXMsJDEpLmdldFNldHRp'@; put 'bmcoIm9uQWZ0ZXJNb21lbnR1bVNjcm9sbCIpKX0sMjAwKX1vblRvdWNoTW92ZShlKXtpZihudWxsPT09VmkodGhpcyxXdikpcmV0dXJuO2NvbnN0IHQ9ZS50b3VjaGVzWzBdO2lmKCF0KXJldHVybiBYcyh0aGlzLFl2LCEwKSx2b2lkIGI3KHRoaXMsR3YsdncpLmNhbGwodGhpcyk7Y29uc3Qg'@; put 'cj1NYXRoLmFicyh0LmNsaWVudFgtVmkodGhpcyxXdikueCksaT1NYXRoLmFicyh0LmNsaWVudFktVmkodGhpcyxXdikueSk7KHI+MTB8fGk+MTApJiYoWHModGhpcyxZdiwhMCksYjcodGhpcyxHdix2dykuY2FsbCh0aGlzKSl9Y2FsbExpc3RlbmVyKGUsdCxyLGkpe2NvbnN0IG89VmkodGhp'@; put 'cywkMSkuZ2V0U2V0dGluZ1B1cmUoZSk7byYmbyh0LHIsaSxWaSh0aGlzLEtXKS5jYWxsKHRoaXMpKX1kZXN0cm95KCl7bnVsbCE9PVZpKHRoaXMsWTIpWzBdJiZjbGVhclRpbWVvdXQoVmkodGhpcyxZMilbMF0pLG51bGwhPT1WaSh0aGlzLFkyKVsxXSYmY2xlYXJUaW1lb3V0KFZpKHRoaXMs'@; put 'WTIpWzFdKSxiNyh0aGlzLEd2LHZ3KS5jYWxsKHRoaXMpLHRoaXMubW9tZW50dW1TY3JvbGxpbmcmJmNsZWFyVGltZW91dCh0aGlzLm1vbWVudHVtU2Nyb2xsaW5nLl90aW1lb3V0KSxWaSh0aGlzLFAzKS5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEsbD1udWxsKXtjbGUodGhp'@; put 'cyxZQWUpLGNsZSh0aGlzLFpBZSksY2xlKHRoaXMsR3YpLGUyKHRoaXMsJDEse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsV00se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsdmgse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsRUwse3dy'@; put 'aXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMscVcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsUDMse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsS1cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsWU0se3dyaXRhYmxlOiEw'@; put 'LHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsWTIse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsV3Ase3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsZ3cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsbXcse3dyaXRhYmxlOiEwLHZhbHVlOnZv'@; put 'aWQgMH0pLGUyKHRoaXMsV3Yse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsWXYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsWk0se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUyKHRoaXMsR00se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGUy'@; put 'KHRoaXMsWnYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhzKHRoaXMsWU0sbnVsbCksWHModGhpcyxZMixbbnVsbCxudWxsXSksWHModGhpcyxXcCxbbnVsbCxudWxsXSksWHModGhpcyxndyxudWxsKSxYcyh0aGlzLG13LCExKSxYcyh0aGlzLFd2LG51bGwpLFhzKHRoaXMsWXYsITEp'@; put 'LFhzKHRoaXMsWk0sbnVsbCksWHModGhpcyxHTSwhMSksWHModGhpcyxadixudWxsKSxYcyh0aGlzLCQxLHIpLFhzKHRoaXMsV00sdCksWHModGhpcyx2aCxvKSxYcyh0aGlzLEVMLGEpLFhzKHRoaXMscVcsbCksWHModGhpcyxQMyxpKSxYcyh0aGlzLEtXLGUpLHRoaXMucmVnaXN0ZXJFdmVu'@; put 'dHMoKX19LHZ4dD1jbGFzcyBteHR7b2Zmc2V0dGVkKGUpe3JldHVybiBlK3RoaXMub2Zmc2V0fXVuT2Zmc2V0dGVkKGUpe3JldHVybiBlLXRoaXMub2Zmc2V0fXJlbmRlcmVkVG9Tb3VyY2UoZSl7cmV0dXJuIHRoaXMub2Zmc2V0dGVkKGUpfXNvdXJjZVRvUmVuZGVyZWQoZSl7cmV0dXJuIHRo'@; put 'aXMudW5PZmZzZXR0ZWQoZSl9b2Zmc2V0dGVkVEgoZSl7cmV0dXJuIGUtdGhpcy5jb3VudFRIfXVuT2Zmc2V0dGVkVEgoZSl7cmV0dXJuIGUrdGhpcy5jb3VudFRIfXZpc2libGVSb3dIZWFkZWRDb2x1bW5Ub1NvdXJjZUNvbHVtbihlKXtyZXR1cm4gdGhpcy5yZW5kZXJlZFRvU291cmNlKHRo'@; put 'aXMub2Zmc2V0dGVkVEgoZSkpfXNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbihlKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZFRIKHRoaXMuc291cmNlVG9SZW5kZXJlZChlKSl9Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMub2Zmc2V0PWUsdGhpcy50b3RhbD10LHRoaXMuY291'@; put 'bnRUSD1yfX0seXh0PWNsYXNzIF94dHtvZmZzZXR0ZWQoZSl7cmV0dXJuIGUrdGhpcy5vZmZzZXR9dW5PZmZzZXR0ZWQoZSl7cmV0dXJuIGUtdGhpcy5vZmZzZXR9cmVuZGVyZWRUb1NvdXJjZShlKXtyZXR1cm4gdGhpcy5vZmZzZXR0ZWQoZSl9c291cmNlVG9SZW5kZXJlZChlKXtyZXR1cm4g'@; put 'dGhpcy51bk9mZnNldHRlZChlKX1vZmZzZXR0ZWRUSChlKXtyZXR1cm4gZS10aGlzLmNvdW50VEh9dW5PZmZzZXR0ZWRUSChlKXtyZXR1cm4gZSt0aGlzLmNvdW50VEh9dmlzaWJsZUNvbEhlYWRlZFJvd1RvU291cmNlUm93KGUpe3JldHVybiB0aGlzLnJlbmRlcmVkVG9Tb3VyY2UodGhpcy5v'@; put 'ZmZzZXR0ZWRUSChlKSl9c291cmNlUm93VG9WaXNpYmxlQ29sSGVhZGVkUm93KGUpe3JldHVybiB0aGlzLnVuT2Zmc2V0dGVkVEgodGhpcy5zb3VyY2VUb1JlbmRlcmVkKGUpKX1jb25zdHJ1Y3RvcihlLHQscil7dGhpcy5vZmZzZXQ9ZSx0aGlzLnRvdGFsPXQsdGhpcy5jb3VudFRIPXJ9fTtj'@; put 'bGFzcyBieHR7c2V0U2l6ZShlKXt0aGlzLm5leHRTaXplPWV9c2V0T2Zmc2V0KGUpe3RoaXMubmV4dE9mZnNldD1lfWNvbnN0cnVjdG9yKCl7dGhpcy5uZXh0U2l6ZT0wLHRoaXMubmV4dE9mZnNldD0wfX1jbGFzcyBDeHR7c2V0U2l6ZShlKXt0aGlzLnNpemUuc2V0U2l6ZShlKX1zZXRPZmZz'@; put 'ZXQoZSl7dGhpcy5zaXplLnNldE9mZnNldChlKX1nZXRWaWV3U2l6ZSgpe3JldHVybiB0aGlzLnNpemV9aXNTaGFyZWQoKXtyZXR1cm4gbnVsbCE9PXRoaXMuc2hhcmVkU2l6ZX1pc1BsYWNlT24oZSl7cmV0dXJuIHRoaXMud29ya2luZ1NwYWNlPT09ZX1hcHBlbmQoZSl7dGhpcy53b3JraW5n'@; put 'U3BhY2U9MSxlLndvcmtpbmdTcGFjZT0yLHRoaXMuc2hhcmVkU2l6ZT1lLmdldFZpZXdTaXplKCl9cHJlcGVuZChlKXt0aGlzLndvcmtpbmdTcGFjZT0yLGUud29ya2luZ1NwYWNlPTEsdGhpcy5zaGFyZWRTaXplPWUuZ2V0Vmlld1NpemUoKX1jb25zdHJ1Y3Rvcigpe3RoaXMuc2l6ZT1uZXcg'@; put 'Ynh0LHRoaXMud29ya2luZ1NwYWNlPTAsdGhpcy5zaGFyZWRTaXplPW51bGx9fWNsYXNzIE1Me3NldFNpemUoZSl7cmV0dXJuIHRoaXMuc2l6ZVNldC5zZXRTaXplKGUpLHRoaXN9c2V0T2Zmc2V0KGUpe3JldHVybiB0aGlzLnNpemVTZXQuc2V0T2Zmc2V0KGUpLHRoaXN9aXNTaGFyZWRWaWV3'@; put 'U2V0KCl7cmV0dXJuIHRoaXMuc2l6ZVNldC5pc1NoYXJlZCgpfWdldE5vZGUoZSl7cmV0dXJuIGU8dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg/dGhpcy5jb2xsZWN0ZWROb2Rlc1tlXTpudWxsfWdldEN1cnJlbnROb2RlKCl7Y29uc3QgZT10aGlzLmNvbGxlY3RlZE5vZGVzLmxlbmd0aDty'@; put 'ZXR1cm4gZT4wP3RoaXMuY29sbGVjdGVkTm9kZXNbZS0xXTpudWxsfWdldFJlbmRlcmVkQ2hpbGRDb3VudCgpe2NvbnN0e3Jvb3ROb2RlOmUsc2l6ZVNldDp0fT10aGlzO2xldCByPTA7aWYodGhpcy5pc1NoYXJlZFZpZXdTZXQoKSl7bGV0IGk9ZS5maXJzdEVsZW1lbnRDaGlsZDtmb3IoO2k7'@; put 'KXtpZihpLnRhZ05hbWU9PT10aGlzLmNoaWxkTm9kZVR5cGUpcis9MTtlbHNlIGlmKHQuaXNQbGFjZU9uKDEpKWJyZWFrO2k9aS5uZXh0RWxlbWVudFNpYmxpbmd9fWVsc2Ugcj1lLmNoaWxkRWxlbWVudENvdW50O3JldHVybiByfXN0YXJ0KCl7dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg9'@; put 'MCx0aGlzLnZpc3VhbEluZGV4PTA7Y29uc3R7cm9vdE5vZGU6ZSxzaXplU2V0OnR9PXRoaXMscj10aGlzLmlzU2hhcmVkVmlld1NldCgpLHtuZXh0U2l6ZTppfT10LmdldFZpZXdTaXplKCk7bGV0IG89dGhpcy5nZXRSZW5kZXJlZENoaWxkQ291bnQoKTtmb3IoO288aTspe2NvbnN0IGw9dGhp'@; put 'cy5ub2Rlc1Bvb2woKTshcnx8dC5pc1BsYWNlT24oMik/ZS5hcHBlbmRDaGlsZChsKTplLmluc2VydEJlZm9yZShsLGUuZmlyc3RDaGlsZCksbys9MX1jb25zdCBhPXImJnQuaXNQbGFjZU9uKDEpO2Zvcig7bz5pOyl7Y29uc3QgbD1hP2UuZmlyc3RDaGlsZDplLmxhc3RDaGlsZDtsJiZlLnJl'@; put 'bW92ZUNoaWxkKGwpLG8tPTF9fXJlbmRlcigpe2NvbnN0e3Jvb3ROb2RlOmUsc2l6ZVNldDp0fT10aGlzO2xldCByPXRoaXMudmlzdWFsSW5kZXg7dGhpcy5pc1NoYXJlZFZpZXdTZXQoKSYmdC5pc1BsYWNlT24oMikmJnQuc2hhcmVkU2l6ZSYmKHIrPXQuc2hhcmVkU2l6ZS5uZXh0U2l6ZSk7'@; put 'bGV0IGk9ZS5jaGlsZHJlbltyXTtpZihpKXtpZihpLnRhZ05hbWUhPT10aGlzLmNoaWxkTm9kZVR5cGUpe2NvbnN0IG89dGhpcy5ub2Rlc1Bvb2woKTtpLnJlcGxhY2VXaXRoKG8pLGk9b319ZWxzZSBpPXRoaXMubm9kZXNQb29sKCksZS5hcHBlbmRDaGlsZChpKTt0aGlzLmNvbGxlY3RlZE5v'@; put 'ZGVzLnB1c2goaSksdGhpcy52aXN1YWxJbmRleCs9MX1lbmQoKXt9Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuc2l6ZVNldD1uZXcgQ3h0LHRoaXMuY29sbGVjdGVkTm9kZXM9W10sdGhpcy52aXN1YWxJbmRleD0wLHRoaXMucm9vdE5vZGU9ZSx0aGlzLm5vZGVzUG9vbD10LHRoaXMuY2hpbGRO'@; put 'b2RlVHlwZT0ic3RyaW5nIj09dHlwZW9mIHI/ci50b1VwcGVyQ2FzZSgpOnJ9fWNsYXNzICRBZSBleHRlbmRzIE1Me3ByZXBlbmRWaWV3KGUpe3JldHVybiB0aGlzLnNpemVTZXQucHJlcGVuZChlLnNpemVTZXQpLGUuc2l6ZVNldC5hcHBlbmQodGhpcy5zaXplU2V0KSx0aGlzfWFwcGVuZFZp'@; put 'ZXcoZSl7cmV0dXJuIHRoaXMuc2l6ZVNldC5hcHBlbmQoZS5zaXplU2V0KSxlLnNpemVTZXQucHJlcGVuZCh0aGlzLnNpemVTZXQpLHRoaXN9fWNsYXNzIFN4dHtzZXRSb290RG9jdW1lbnQoZSl7dGhpcy5yb290RG9jdW1lbnQ9ZX1vYnRhaW4oZSx0KXtyZXR1cm4gdGhpcy5yb290RG9jdW1l'@; put 'bnQuY3JlYXRlRWxlbWVudCh0aGlzLm5vZGVUeXBlKX1jb25zdHJ1Y3RvcihlKXt0aGlzLm5vZGVUeXBlPWUudG9VcHBlckNhc2UoKX19Y2xhc3MgJE17c2V0VGFibGUoZSl7dGhpcy5ub2Rlc1Bvb2wmJnRoaXMubm9kZXNQb29sLnNldFJvb3REb2N1bWVudChlLnJvb3REb2N1bWVudCksdGhp'@; put 'cy50YWJsZT1lfXJlbmRlcigpe31jb25zdHJ1Y3RvcihlLHQpe3RoaXMubm9kZXNQb29sPW51bGwsdGhpcy5yZW5kZXJlZE5vZGVzPTAsdGhpcy5ub2Rlc1Bvb2w9InN0cmluZyI9PXR5cGVvZiBlP25ldyBTeHQoZSk6bnVsbCx0aGlzLm5vZGVUeXBlPWUsdm9pZCAwIT09dCYmKHRoaXMucm9v'@; put 'dE5vZGU9dCl9fWNsYXNzIEV4dCBleHRlbmRzICRNe29idGFpbk9yZGVyVmlldyhlKXtyZXR1cm4gdGhpcy5vcmRlclZpZXdzLmhhcyhlKXx8dGhpcy5vcmRlclZpZXdzLnNldChlLG5ldyAkQWUoZSwoKT0+dGhpcy5ub2Rlc1Bvb2wub2J0YWluKCksdGhpcy5ub2RlVHlwZSkpLHRoaXMub3Jk'@; put 'ZXJWaWV3cy5nZXQoZSl9cmVuZGVyKCl7Y29uc3R7cm93c1RvUmVuZGVyOmUscm93SGVhZGVyRnVuY3Rpb25zOnQscm93SGVhZGVyc0NvdW50OnIscm93czppLGNlbGxzOm99PXRoaXMudGFibGU7Zm9yKGxldCBhPTA7YTxlO2ErKyl7Y29uc3QgbD10aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9T'@; put 'b3VyY2UoYSksdT1pLmdldFJlbmRlcmVkTm9kZShhKTtpZighdSljb250aW51ZTtjb25zdCBnPXRoaXMub2J0YWluT3JkZXJWaWV3KHUpLEU9by5vYnRhaW5PcmRlclZpZXcodSk7Zy5hcHBlbmRWaWV3KEUpLnNldFNpemUocikuc2V0T2Zmc2V0KDApLnN0YXJ0KCk7Zm9yKGxldCBPPTA7Tzxy'@; put 'O08rKyl7Zy5yZW5kZXIoKTtjb25zdCBaPWcuZ2V0Q3VycmVudE5vZGUoKTtaJiYoWi5jbGFzc05hbWU9IiIsWi5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksdzQoWixbL2FyaWEtKC4qKS8sL3JvbGUvXSksdGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJktvKFosW2hNdCgpLEVNdCgpLGhz'@; put 'ZShPKzEpLGI0KC0xKV0pLHRbT10obCxaLE8pKX1nLmVuZCgpfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCJUSCIpLHRoaXMub3JkZXJWaWV3cz1uZXcgV2Vha01hcH19Y2xhc3MgTXh0IGV4dGVuZHMgJE17Z2V0UmVuZGVyZWROb2RlKGUpe3JldHVybiB0aGlzLm9yZGVyVmlldy5nZXROb2RlKGUp'@; put 'fXJlbmRlcigpe2NvbnN0e2NvbHVtbkhlYWRlcnNDb3VudDplfT10aGlzLnRhYmxlO3RoaXMudGFibGUuaXNBcmlhRW5hYmxlZCgpJiZLbyh0aGlzLnJvb3ROb2RlLFtbInJvbGUiLCJyb3dncm91cCJdXSksdGhpcy5vcmRlclZpZXcuc2V0U2l6ZShlKS5zZXRPZmZzZXQoMCkuc3RhcnQoKTtm'@; put 'b3IobGV0IHQ9MDt0PGU7dCsrKXt0aGlzLm9yZGVyVmlldy5yZW5kZXIoKTtjb25zdCByPXRoaXMub3JkZXJWaWV3LmdldEN1cnJlbnROb2RlKCk7ciYmdGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJktvKHIsW2h4ZSgpLG14ZSh0KzEpXSl9dGhpcy5vcmRlclZpZXcuZW5kKCl9Y29uc3Ry'@; put 'dWN0b3IoZSl7c3VwZXIoIlRSIixlKSx0aGlzLm9yZGVyVmlldz1uZXcgTUwoZSwoKT0+dGhpcy5ub2Rlc1Bvb2wub2J0YWluKCksdGhpcy5ub2RlVHlwZSl9fWNsYXNzIFR4dCBleHRlbmRzICRNe29idGFpbk9yZGVyVmlldyhlKXtyZXR1cm4gdGhpcy5vcmRlclZpZXdzLmhhcyhlKXx8dGhp'@; put 'cy5vcmRlclZpZXdzLnNldChlLG5ldyBNTChlLCgpPT50aGlzLm5vZGVzUG9vbC5vYnRhaW4oKSx0aGlzLm5vZGVUeXBlKSksdGhpcy5vcmRlclZpZXdzLmdldChlKX1yZW5kZXIoKXtjb25zdHtjb2x1bW5IZWFkZXJzQ291bnQ6ZSxjb2x1bW5IZWFkZXJGdW5jdGlvbnM6dCxjb2x1bW5zVG9S'@; put 'ZW5kZXI6cixyb3dIZWFkZXJzQ291bnQ6aSxjb2x1bW5IZWFkZXJSb3dzOm99PXRoaXMudGFibGUsYT1yK2k7Zm9yKGxldCBsPTA7bDxlO2wrKyl7Y29uc3QgdT1vLmdldFJlbmRlcmVkTm9kZShsKTtpZighdSljb250aW51ZTtjb25zdCBnPXRoaXMub2J0YWluT3JkZXJWaWV3KHUpO2cuc2V0'@; put 'U2l6ZShhKS5zZXRPZmZzZXQoMCkuc3RhcnQoKTtmb3IobGV0IEU9MDtFPGE7RSsrKXtnLnJlbmRlcigpO2NvbnN0IE89RS1pLFo9dGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKE8pLGVlPWcuZ2V0Q3VycmVudE5vZGUoKTtlZSYmKGVlLmNsYXNzTmFtZT0iIixlZS5yZW1vdmVB'@; put 'dHRyaWJ1dGUoInN0eWxlIiksdzQoZWUsWy9hcmlhLSguKikvLC9yb2xlL10pLHRoaXMudGFibGUuaXNBcmlhRW5hYmxlZCgpJiZLbyhlZSxbaHNlKEUrMSksYjQoLTEpLGZNdCgpLC4uLk8+PTA/W1NNdCgpXTpbZE10KCksTjMoIlNlbGVjdCB3aG9sZSBncmlkIildXSksdFtsXShaLGVlLGwp'@; put 'KX1nLmVuZCgpfX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCJUSCIpLHRoaXMub3JkZXJWaWV3cz1uZXcgV2Vha01hcH19bGV0IHFBZT0hMTtjbGFzcyB4eHQgZXh0ZW5kcyAkTXtyZW5kZXIoKXtjb25zdHtjb2x1bW5zVG9SZW5kZXI6ZSxyb3dIZWFkZXJzQ291bnQ6dH09dGhpcy50YWJsZSxyPWUr'@; put 'dDshcUFlJiZlPjFlMyYmKHFBZT0hMCxIYSh5Y2BQZXJmb3JtYW5jZSB0aXA6IEhhbmRzb250YWJsZSByZW5kZXJlZCBtb3JlIHRoYW4gMTAwMCB2aXNpYmxlIGNvbHVtbnMuXHgyMAogICAgICAgIENvbnNpZGVyIGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgcmVuZGVyZWQgY29sdW1ucyBieSBz'@; put 'cGVjaWZ5aW5nIHRoZSB0YWJsZSB3aWR0aCBhbmQvb3JceDIwCiAgICAgICAgdHVybmluZyBvZmYgdGhlICJyZW5kZXJBbGxDb2x1bW5zIiBvcHRpb24uYCkpLHRoaXMub3JkZXJWaWV3LnNldFNpemUocikuc2V0T2Zmc2V0KDApLnN0YXJ0KCk7Zm9yKGxldCBvPTA7bzxyO28rKyl7dGhpcy5v'@; put 'cmRlclZpZXcucmVuZGVyKCk7Y29uc3QgYT10aGlzLm9yZGVyVmlldy5nZXRDdXJyZW50Tm9kZSgpO2lmKGEpaWYobzx0KXtjb25zdCBsPXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShvKTthLnN0eWxlLndpZHRoPWAke3RoaXMudGFibGUuY29sdW1uVXRpbHMuZ2V0SGVhZGVy'@; put 'V2lkdGgobCl9cHhgfWVsc2V7Y29uc3QgbD10aGlzLnRhYmxlLnJlbmRlcmVkQ29sdW1uVG9Tb3VyY2Uoby10KTthLnN0eWxlLndpZHRoPWAke3RoaXMudGFibGUuY29sdW1uVXRpbHMuZ2V0V2lkdGgobCl9cHhgfX10aGlzLm9yZGVyVmlldy5lbmQoKTtjb25zdCBpPXRoaXMucm9vdE5vZGUu'@; put 'Zmlyc3RDaGlsZDtpJiZZcihpLCJyb3dIZWFkZXIiKX1jb25zdHJ1Y3RvcihlKXtzdXBlcigiQ09MIixlKSx0aGlzLm9yZGVyVmlldz1uZXcgTUwoZSwoKT0+dGhpcy5ub2Rlc1Bvb2wub2J0YWluKCksdGhpcy5ub2RlVHlwZSl9fWxldCBLQWU9ITE7Y2xhc3MgQXh0IGV4dGVuZHMgJE17Z2V0'@; put 'UmVuZGVyZWROb2RlKGUpe3JldHVybiB0aGlzLm9yZGVyVmlldy5nZXROb2RlKGUpfXJlbmRlcigpe2NvbnN0e3Jvd3NUb1JlbmRlcjplfT10aGlzLnRhYmxlOyFLQWUmJmU+MWUzJiYoS0FlPSEwLEhhKHljYFBlcmZvcm1hbmNlIHRpcDogSGFuZHNvbnRhYmxlIHJlbmRlcmVkIG1vcmUgdGhh'@; put 'biAxMDAwIHZpc2libGUgcm93cy5ceDIwCiAgICAgICAgQ29uc2lkZXIgbGltaXRpbmcgdGhlIG51bWJlciBvZiByZW5kZXJlZCByb3dzIGJ5IHNwZWNpZnlpbmcgdGhlIHRhYmxlIGhlaWdodCBhbmQvb3JceDIwCiAgICAgICAgdHVybmluZyBvZmYgdGhlICJyZW5kZXJBbGxSb3dzIiBvcHRp'@; put 'b24uYCkpLHRoaXMudGFibGUuaXNBcmlhRW5hYmxlZCgpJiZLbyh0aGlzLnJvb3ROb2RlLFtbInJvbGUiLCJyb3dncm91cCJdXSksdGhpcy5vcmRlclZpZXcuc2V0U2l6ZShlKS5zZXRPZmZzZXQodGhpcy50YWJsZS5yZW5kZXJlZFJvd1RvU291cmNlKDApKS5zdGFydCgpO2ZvcihsZXQgdD0w'@; put 'O3Q8ZTt0Kyspe3RoaXMub3JkZXJWaWV3LnJlbmRlcigpO2NvbnN0IHI9dGhpcy5vcmRlclZpZXcuZ2V0Q3VycmVudE5vZGUoKSxpPXRoaXMudGFibGUucmVuZGVyZWRSb3dUb1NvdXJjZSh0KTtyJiYodGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJktvKHIsW2h4ZSgpLG14ZShpKyh0aGlz'@; put 'LnRhYmxlLnJvd1V0aWxzPy5kYXRhQWNjZXNzT2JqZWN0Py5jb2x1bW5IZWFkZXJzPy5sZW5ndGg/PzApKzEpXSksKGkrMSklMj09MD9MYShyLCJodF9fcm93X2V2ZW4iKXx8KGtvKHIsImh0X19yb3dfb2RkIiksWXIociwiaHRfX3Jvd19ldmVuIikpOkxhKHIsImh0X19yb3dfb2RkIil8fChr'@; put 'byhyLCJodF9fcm93X2V2ZW4iKSxZcihyLCJodF9fcm93X29kZCIpKSl9dGhpcy5vcmRlclZpZXcuZW5kKCl9Y29uc3RydWN0b3IoZSl7c3VwZXIoIlRSIixlKSx0aGlzLm9yZGVyVmlldz1uZXcgTUwoZSwoKT0+dGhpcy5ub2Rlc1Bvb2wub2J0YWluKCksdGhpcy5ub2RlVHlwZSl9fWNsYXNz'@; put 'IGt4dCBleHRlbmRzICRNe29idGFpbk9yZGVyVmlldyhlKXtyZXR1cm4gdGhpcy5vcmRlclZpZXdzLmhhcyhlKXx8dGhpcy5vcmRlclZpZXdzLnNldChlLG5ldyAkQWUoZSwoKT0+dGhpcy5ub2Rlc1Bvb2wub2J0YWluKCksdGhpcy5ub2RlVHlwZSkpLHRoaXMub3JkZXJWaWV3cy5nZXQoZSl9'@; put 'cmVuZGVyKCl7Y29uc3R7cm93c1RvUmVuZGVyOmUsY29sdW1uc1RvUmVuZGVyOnQscm93czpyLHJvd0hlYWRlcnM6aX09dGhpcy50YWJsZTtmb3IobGV0IG89MDtvPGU7bysrKXtjb25zdCBhPXRoaXMudGFibGUucmVuZGVyZWRSb3dUb1NvdXJjZShvKSxsPXIuZ2V0UmVuZGVyZWROb2RlKG8p'@; put 'O2lmKCFsKWNvbnRpbnVlO2NvbnN0IHU9dGhpcy5vYnRhaW5PcmRlclZpZXcobCksZz1pLm9idGFpbk9yZGVyVmlldyhsKTt1LnByZXBlbmRWaWV3KGcpLnNldFNpemUodCkuc2V0T2Zmc2V0KDApLnN0YXJ0KCk7Zm9yKGxldCBFPTA7RTx0O0UrKyl7dS5yZW5kZXIoKTtjb25zdCBPPXRoaXMu'@; put 'dGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShFKSxaPXUuZ2V0Q3VycmVudE5vZGUoKTtaJiYoTGEoWiwiaGlkZSIpfHwoWi5jbGFzc05hbWU9IiIpLFoucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLFoucmVtb3ZlQXR0cmlidXRlKCJkaXIiKSx3NChaLFsvYXJpYS0oLiopLywvcm9sZS9d'@; put 'KSx0aGlzLnRhYmxlLmNlbGxSZW5kZXJlcihhLE8sWiksdGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJktvKFosWy4uLlouaGFzQXR0cmlidXRlKCJyb2xlIik/W106W3VNdCgpXSxiNCgtMSksaHNlKE8rKHRoaXMudGFibGUucm93VXRpbHM/LmRhdGFBY2Nlc3NPYmplY3Q/LnJvd0hlYWRl'@; put 'cnM/Lmxlbmd0aD8/MCkrMSldKSl9dS5lbmQoKX19Y29uc3RydWN0b3IoKXtzdXBlcigiVEQiKSx0aGlzLm9yZGVyVmlld3M9bmV3IFdlYWtNYXB9fWNsYXNzIFJ4dHtzZXRBY3RpdmVPdmVybGF5TmFtZShlKXt0aGlzLmFjdGl2ZU92ZXJsYXlOYW1lPWV9c2V0QXhpc1V0aWxzKGUsdCl7dGhp'@; put 'cy5yb3dVdGlscz1lLHRoaXMuY29sdW1uVXRpbHM9dH1zZXRWaWV3cG9ydFNpemUoZSx0KXt0aGlzLnJvd3NUb1JlbmRlcj1lLHRoaXMuY29sdW1uc1RvUmVuZGVyPXR9c2V0RmlsdGVycyhlLHQpe3RoaXMucm93RmlsdGVyPWUsdGhpcy5jb2x1bW5GaWx0ZXI9dH1zZXRIZWFkZXJDb250ZW50'@; put 'UmVuZGVyZXJzKGUsdCl7dGhpcy5yb3dIZWFkZXJGdW5jdGlvbnM9ZSx0aGlzLnJvd0hlYWRlcnNDb3VudD1lLmxlbmd0aCx0aGlzLmNvbHVtbkhlYWRlckZ1bmN0aW9ucz10LHRoaXMuY29sdW1uSGVhZGVyc0NvdW50PXQubGVuZ3RofXNldFJlbmRlcmVycyh7cm93SGVhZGVyczplLGNvbHVt'@; put 'bkhlYWRlclJvd3M6dCxjb2x1bW5IZWFkZXJzOnIsY29sR3JvdXA6aSxyb3dzOm8sY2VsbHM6YX0pe2Uuc2V0VGFibGUodGhpcyksdC5zZXRUYWJsZSh0aGlzKSxyLnNldFRhYmxlKHRoaXMpLGkuc2V0VGFibGUodGhpcyksby5zZXRUYWJsZSh0aGlzKSxhLnNldFRhYmxlKHRoaXMpLHRoaXMu'@; put 'cm93SGVhZGVycz1lLHRoaXMuY29sdW1uSGVhZGVyUm93cz10LHRoaXMuY29sdW1uSGVhZGVycz1yLHRoaXMuY29sR3JvdXA9aSx0aGlzLnJvd3M9byx0aGlzLmNlbGxzPWF9cmVuZGVyZWRSb3dUb1NvdXJjZShlKXtyZXR1cm4gdGhpcy5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShlKX1y'@; put 'ZW5kZXJlZENvbHVtblRvU291cmNlKGUpe3JldHVybiB0aGlzLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKGUpfWlzQXJpYUVuYWJsZWQoKXtyZXR1cm4gdGhpcy5yb3dVdGlscy53dFNldHRpbmdzLmdldFNldHRpbmcoImFyaWFUYWdzIil9cmVuZGVyKCl7dGhpcy5jb2x1bW5IZWFk'@; put 'ZXJSb3dzLnJlbmRlcigpLHRoaXMuY29sdW1uSGVhZGVycy5yZW5kZXIoKSx0aGlzLnJvd3MucmVuZGVyKCksdGhpcy5yb3dIZWFkZXJzLnJlbmRlcigpLHRoaXMuY2VsbHMucmVuZGVyKCksdGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLmNvbEdyb3VwLnJlbmRlcigp'@; put 'O2NvbnN0e3Jvd3NUb1JlbmRlcjplLHJvd3M6dH09dGhpcztmb3IobGV0IHI9MDtyPGU7cisrKXtjb25zdCBpPXQuZ2V0UmVuZGVyZWROb2RlKHIpLG89dGhpcy5yb3dVdGlscztpZihpJiZpLmZpcnN0Q2hpbGQpe2NvbnN0IGE9dGhpcy5yZW5kZXJlZFJvd1RvU291cmNlKHIpLGw9by5nZXRI'@; put 'ZWlnaHRCeU92ZXJsYXlOYW1lKGEsdGhpcy5hY3RpdmVPdmVybGF5TmFtZSksZz10aGlzLnN0eWxlc0hhbmRsZXIuYXJlQ2VsbHNCb3JkZXJCb3goKT8wOjE7aS5maXJzdENoaWxkLnN0eWxlLmhlaWdodD1sP2wtZysicHgiOiIifX19Y29uc3RydWN0b3IoZSx7Y2VsbFJlbmRlcmVyOnQsc3R5'@; put 'bGVzSGFuZGxlcjpyfT17fSl7dGhpcy5yb3dIZWFkZXJzPW51bGwsdGhpcy5jb2x1bW5IZWFkZXJSb3dzPW51bGwsdGhpcy5jb2x1bW5IZWFkZXJzPW51bGwsdGhpcy5jb2xHcm91cD1udWxsLHRoaXMucm93cz1udWxsLHRoaXMuY2VsbHM9bnVsbCx0aGlzLnJvd0ZpbHRlcj1udWxsLHRoaXMu'@; put 'Y29sdW1uRmlsdGVyPW51bGwsdGhpcy5yb3dVdGlscz1udWxsLHRoaXMuY29sdW1uVXRpbHM9bnVsbCx0aGlzLnJvd3NUb1JlbmRlcj0wLHRoaXMuY29sdW1uc1RvUmVuZGVyPTAsdGhpcy5yb3dIZWFkZXJGdW5jdGlvbnM9W10sdGhpcy5yb3dIZWFkZXJzQ291bnQ9MCx0aGlzLmNvbHVtbkhl'@; put 'YWRlckZ1bmN0aW9ucz1bXSx0aGlzLmNvbHVtbkhlYWRlcnNDb3VudD0wLHRoaXMucm9vdE5vZGU9ZSx0aGlzLnJvb3REb2N1bWVudD10aGlzLnJvb3ROb2RlLm93bmVyRG9jdW1lbnQsdGhpcy5jZWxsUmVuZGVyZXI9dCx0aGlzLnN0eWxlc0hhbmRsZXI9cn19Y2xhc3MgSXh0e3NldEFjdGl2'@; put 'ZU92ZXJsYXlOYW1lKGUpe3JldHVybiB0aGlzLnJlbmRlcmVyLnNldEFjdGl2ZU92ZXJsYXlOYW1lKGUpLHRoaXN9c2V0RmlsdGVycyhlLHQpe3JldHVybiB0aGlzLnJlbmRlcmVyLnNldEZpbHRlcnMoZSx0KSx0aGlzfXNldFZpZXdwb3J0U2l6ZShlLHQpe3JldHVybiB0aGlzLnJlbmRlcmVy'@; put 'LnNldFZpZXdwb3J0U2l6ZShlLHQpLHRoaXN9c2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhlLHQpe3JldHVybiB0aGlzLnJlbmRlcmVyLnNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMoZSx0KSx0aGlzfXJlbmRlcigpe3RoaXMucmVuZGVyZXIucmVuZGVyKCl9Y29uc3RydWN0b3Ioe1RBQkxF'@; put 'OmUsVEhFQUQ6dCxDT0xHUk9VUDpyLFRCT0RZOmkscm93VXRpbHM6byxjb2x1bW5VdGlsczphLGNlbGxSZW5kZXJlcjpsLHN0eWxlc0hhbmRsZXI6dX09e30pe3RoaXMucmVuZGVyZXI9bmV3IFJ4dChlLHtjZWxsUmVuZGVyZXI6bCxzdHlsZXNIYW5kbGVyOnV9KSx0aGlzLnJlbmRlcmVyLnNl'@; put 'dFJlbmRlcmVycyh7cm93SGVhZGVyczpuZXcgRXh0LGNvbHVtbkhlYWRlclJvd3M6bmV3IE14dCh0KSxjb2x1bW5IZWFkZXJzOm5ldyBUeHQsY29sR3JvdXA6bmV3IHh4dChyKSxyb3dzOm5ldyBBeHQoaSksY2VsbHM6bmV3IGt4dH0pLHRoaXMucmVuZGVyZXIuc2V0QXhpc1V0aWxzKG8sYSl9'@; put 'fWNsYXNzIER4dHtnZXRXaWR0aChlKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbldpZHRoIixlKXx8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5XaWR0aCIpfWdldEhlYWRlckhlaWdodChlKXtsZXQgdD10aGlzLnd0U2V0dGluZ3Mu'@; put 'Z2V0U2V0dGluZygic3R5bGVzSGFuZGxlciIpLmdldERlZmF1bHRSb3dIZWlnaHQoKTtjb25zdCByPXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbZV07cmV0dXJuIHZvaWQgMCE9PXImJih0PXQ/TWF0aC5tYXgodCxyKTpyKSx0fWdldEhl'@; put 'YWRlcldpZHRoKGUpe2NvbnN0e2NvbHVtbkZpbHRlcjp0fT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RUYWJsZTtpZih0KXJldHVybiB0aGlzLmhlYWRlcldpZHRocy5nZXQodC5zb3VyY2VUb1JlbmRlcmVkKGUpKX1jYWxjdWxhdGVXaWR0aHMoKXtjb25zdHt3dFNldHRpbmdzOmV9PXRoaXM7'@; put 'bGV0IHQ9ZS5nZXRTZXR0aW5nKCJyb3dIZWFkZXJXaWR0aCIpO2lmKHQ9ZS5nZXRTZXR0aW5nKCJvbk1vZGlmeVJvd0hlYWRlcldpZHRoIix0KSxudWxsIT10KXtjb25zdCByPWUuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aCxpPWUuZ2V0U2V0dGluZygiZGVmYXVsdENvbHVtbldp'@; put 'ZHRoIik7Zm9yKGxldCBvPTA7bzxyO28rKyl7bGV0IGE9QXJyYXkuaXNBcnJheSh0KT90W29dOnQ7YT1hPz9pLHRoaXMuaGVhZGVyV2lkdGhzLnNldChvLGEpfX19Y29uc3RydWN0b3IoZSx0KXt0aGlzLmhlYWRlcldpZHRocz1uZXcgTWFwLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1lLHRoaXMu'@; put 'd3RTZXR0aW5ncz10fX1jbGFzcyBMeHR7Z2V0SGVpZ2h0KGUpe2xldCB0PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWlnaHQiLGUpO2NvbnN0IHI9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkUm93c1tlXTtyZXR1cm4gdm9pZCAwIT09ciYmKHQ9'@; put 'dm9pZCAwPT09dD9yOk1hdGgubWF4KHQscikpLHR9Z2V0SGVpZ2h0QnlPdmVybGF5TmFtZShlLHQpe2xldCByPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWlnaHRCeU92ZXJsYXlOYW1lIixlLHQpO2NvbnN0IGk9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3Zl'@; put 'cnNpemVkUm93c1tlXTtyZXR1cm4gdm9pZCAwIT09aSYmKHI9dm9pZCAwPT09cj9pOk1hdGgubWF4KHIsaSkpLHJ9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9ZSx0aGlzLnd0U2V0dGluZ3M9dH19Y29uc3QgJHY9InRvcCIsdDY9ImJvdHRvbSIscXY9ImlubGluZV9z'@; put 'dGFydCIsX3c9InRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIixLdj0iYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIiLFhBZT1bJHYsdDYscXYsX3csS3ZdLE94dD1uZXcgTWFwKFtbJHYsYGh0X2Nsb25lXyR7JHZ9YF0sW3Q2LGBodF9jbG9uZV8ke3Q2fWBdLFtxdixgaHRfY2xvbmVfJHtxdn0g'@; put 'aHRfY2xvbmVfbGVmdGBdLFtfdyxgaHRfY2xvbmVfJHtfd30gaHRfY2xvbmVfdG9wX2xlZnRfY29ybmVyYF0sW0t2LGBodF9jbG9uZV8ke0t2fSBodF9jbG9uZV9ib3R0b21fbGVmdF9jb3JuZXJgXV0pLEtNPWNsYXNzIE54dHthbGlnbk92ZXJsYXlzV2l0aFRyaW1taW5nQ29udGFpbmVyKCl7'@; put 'fW1hcmtPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzKCl7fWlzKGUpe3JldHVybiB0aGlzLm5hbWU9PT1lfWZpeFRhYmxlRG9tVHJlZSgpe2NvbnN0IGU9dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQ7dGhpcy5UQk9EWT10aGlzLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoInRib2R5IiksdGhpcy5U'@; put 'Qk9EWXx8KHRoaXMuVEJPRFk9ZS5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLHRoaXMuVEFCTEUuYXBwZW5kQ2hpbGQodGhpcy5UQk9EWSkpLHRoaXMuVEhFQUQ9dGhpcy5UQUJMRS5xdWVyeVNlbGVjdG9yKCJ0aGVhZCIpLHRoaXMuVEhFQUR8fCh0aGlzLlRIRUFEPWUuY3JlYXRlRWxlbWVudCgi'@; put 'dGhlYWQiKSx0aGlzLlRBQkxFLmluc2VydEJlZm9yZSh0aGlzLlRIRUFELHRoaXMuVEJPRFkpKSx0aGlzLkNPTEdST1VQPXRoaXMuVEFCTEUucXVlcnlTZWxlY3RvcigiY29sZ3JvdXAiKSx0aGlzLkNPTEdST1VQfHwodGhpcy5DT0xHUk9VUD1lLmNyZWF0ZUVsZW1lbnQoImNvbGdyb3VwIiks'@; put 'dGhpcy5UQUJMRS5pbnNlcnRCZWZvcmUodGhpcy5DT0xHUk9VUCx0aGlzLlRIRUFEKSl9Y3JlYXRlU3ByZWFkZXIoZSl7Y29uc3QgdD1lLnBhcmVudE5vZGU7bGV0IHI7cmV0dXJuKCF0fHx0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREV8fCFocyh0KXx8IUxhKHQsInd0SG9sZGVyIikp'@; put 'JiYocj10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyLmNsYXNzTmFtZT0id3RTcHJlYWRlciIsdCYmZS5iZWZvcmUociksci5hcHBlbmRDaGlsZChlKSksciYmKHIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLnd0U2V0dGluZ3MuZ2V0'@; put 'U2V0dGluZygiYXJpYVRhZ3MiKSYmS28ocixbWyJyb2xlIiwicHJlc2VudGF0aW9uIl1dKSkscn1jcmVhdGVIaWRlcihlKXtjb25zdCB0PWUucGFyZW50Tm9kZTtsZXQgcjtyZXR1cm4oIXR8fHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8IWhzKHQpfHwhTGEodCwid3RIb2xkZXIi'@; put 'KSkmJihyPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuY2xhc3NOYW1lPSJ3dEhpZGVyIix0JiZlLmJlZm9yZShyKSxyLmFwcGVuZENoaWxkKGUpKSxyJiZ0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiYXJpYVRhZ3MiKSYmS28ocixbWyJy'@; put 'b2xlIiwicHJlc2VudGF0aW9uIl1dKSxyfWNyZWF0ZUhvbGRlcihlKXtjb25zdCB0PWUucGFyZW50Tm9kZTtsZXQgcjtpZighdHx8dC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFfHwhaHModCl8fCFMYSh0LCJ3dEhvbGRlciIpKXtpZihyPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3Vt'@; put 'ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixyLmNsYXNzTmFtZT0id3RIb2xkZXIiLHRoaXMuaXNNYXN0ZXImJktvKHIsW2I0KC0xKV0pLHQmJmUuYmVmb3JlKHIpLHRoaXMuaXNNYXN0ZXIpe2NvbnN0IGk9ci5wYXJlbnROb2RlO2hzKGkpJiYo'@; put 'aS5jbGFzc05hbWUrPSJodF9tYXN0ZXIgaGFuZHNvbnRhYmxlIixpLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZ1B1cmUoInJ0bE1vZGUiKT8icnRsIjoibHRyIiksdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImFyaWFUYWdzIikmJktvKGksW1sicm9s'@; put 'ZSIsInByZXNlbnRhdGlvbiJdXSkpfXIuYXBwZW5kQ2hpbGQoZSl9cmV0dXJuIHImJnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJhcmlhVGFncyIpJiZLbyhyLFtbInJvbGUiLCJwcmVzZW50YXRpb24iXV0pLHJ9ZHJhdyhlPSExKXtjb25zdHt3dFNldHRpbmdzOnR9PXRoaXMse3d0T3Zl'@; put 'cmxheXM6cix3dFZpZXdwb3J0Oml9PXRoaXMuZGF0YUFjY2Vzc09iamVjdCxsPSh0LmdldFNldHRpbmcoInRvdGFsUm93cyIpLHQuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksdC5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikpLHU9bC5sZW5ndGgsZz10LmdldFNldHRpbmcoImNvbHVtbkhl'@; put 'YWRlcnMiKSxFPWcubGVuZ3RoO2xldCBPPWU7aWYodGhpcy5pc01hc3RlciYmKHIuYmVmb3JlRHJhdygpLHRoaXMuaG9sZGVyT2Zmc2V0PVgwKHRoaXMuaG9sZGVyKSxpLnJvd0hlaWdodENhY2hlLmVuc3VyZUJ1aWx0KCksaS5jb2x1bW5XaWR0aENhY2hlLmVuc3VyZUJ1aWx0KCksTz1pLmNy'@; put 'ZWF0ZUNhbGN1bGF0b3JzKE8pLHUmJiF0LmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0IikpKXtjb25zdCBlZT1yLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLHZlPXRoaXMuY29ycmVjdEhlYWRlcldpZHRoO3RoaXMuY29ycmVjdEhlYWRlcldpZHRoPTAhPT1l'@; put 'ZSx2ZSE9PXRoaXMuY29ycmVjdEhlYWRlcldpZHRoJiYoTz0hMSl9aWYoTyl0aGlzLmlzTWFzdGVyJiYoci5yZWZyZXNoKCEwKSx0aGlzLnN5bmNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzV2l0aEZyb3plbk92ZXJsYXlzKCkpO2Vsc2V7dGhpcy50YWJsZU9mZnNldD10aGlzLmlzTWFzdGVyP1gw'@; put 'KHRoaXMuVEFCTEUpOnRoaXMuZGF0YUFjY2Vzc09iamVjdC5wYXJlbnRUYWJsZU9mZnNldDtjb25zdCBlZT1NYXRoLm1heCh0aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKSwwKSx2ZT1NYXRoLm1heCh0aGlzLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKSwwKTt0aGlzLnJvd0ZpbHRlcj1uZXcg'@; put 'eXh0KGVlLHQuZ2V0U2V0dGluZygidG90YWxSb3dzIiksRSksdGhpcy5jb2x1bW5GaWx0ZXI9bmV3IHZ4dCh2ZSx0LmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLHUpO2xldCBNZT0hMDtpZih0aGlzLmlzTWFzdGVyKXt0aGlzLmFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIo'@; put 'KTtjb25zdCBIZT17fTt0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiYmVmb3JlRHJhdyIsITAsSGUpLE1lPSEwIT09SGUuc2tpcFJlbmRlcn1NZSYmKHRoaXMudGFibGVSZW5kZXJlci5zZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzKGwsZyksKHRoaXMuaXModDYpfHx0aGlzLmlzKEt2KSkm'@; put 'JnRoaXMudGFibGVSZW5kZXJlci5zZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzKGwsW10pLHRoaXMucmVzZXRPdmVyc2l6ZWRSb3dzKCksdGhpcy50YWJsZVJlbmRlcmVyLnNldEFjdGl2ZU92ZXJsYXlOYW1lKHRoaXMubmFtZSkuc2V0Vmlld3BvcnRTaXplKHRoaXMuZ2V0UmVuZGVyZWRSb3dz'@; put 'Q291bnQoKSx0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCkpLnNldEZpbHRlcnModGhpcy5yb3dGaWx0ZXIsdGhpcy5jb2x1bW5GaWx0ZXIpLnJlbmRlcigpLHRoaXMuaXNNYXN0ZXImJnRoaXMubWFya092ZXJzaXplZENvbHVtbkhlYWRlcnMoKSx0aGlzLmFkanVzdENvbHVtbkhlYWRl'@; put 'ckhlaWdodHMoKSx0aGlzLmlzTWFzdGVyJiZ0aGlzLnN5bmNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzV2l0aERPTSgpLCh0aGlzLmlzTWFzdGVyfHx0aGlzLmlzKHQ2KSkmJnRoaXMubWFya092ZXJzaXplZFJvd3MoKSx0aGlzLmlzTWFzdGVyPyh0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygi'@; put 'ZXh0ZXJuYWxSb3dDYWxjdWxhdG9yIil8fChpLnJvd0hlaWdodENhY2hlLmVuc3VyZUJ1aWx0KCksaS5jb2x1bW5XaWR0aENhY2hlLmVuc3VyZUJ1aWx0KCksaS5jcmVhdGVWaXNpYmxlQ2FsY3VsYXRvcnMoKSksci5yZWZyZXNoKCExKSx0aGlzLnN5bmNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJz'@; put 'V2l0aEZyb3plbk92ZXJsYXlzKCksci5hcHBseVRvRE9NKCksdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uRHJhdyIsITApKTp0aGlzLmlzKHQ2KSYmdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNsb25lU291cmNlLnd0T3ZlcmxheXMuYWRqdXN0RWxlbWVudHNTaXplKCkpfWxldCBaPSEx'@; put 'O3JldHVybiB0aGlzLmlzTWFzdGVyJiYoWj1yLnRvcE92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCksci5ib3R0b21PdmVybGF5LmNsb25lJiYoWj1yLmJvdHRvbU92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCl8fFopLFo9ci5pbmxpbmVTdGFydE92ZXJsYXkucmVzZXRGaXhlZFBvc2l0'@; put 'aW9uKCl8fFosci50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnIudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpLHIuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5JiZyLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZSYm'@; put 'ci5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCkpLFo/KHIucmVmcmVzaEFsbCgpLHIuYWRqdXN0RWxlbWVudHNTaXplKCkpOnRoaXMuZGF0YUFjY2Vzc09iamVjdC5zZWxlY3Rpb25NYW5hZ2VyLnNldEFjdGl2ZU92ZXJsYXkodGhpcy5mYWNhZGVH'@; put 'ZXR0ZXIoKSkucmVuZGVyKE8pLHRoaXMuaXNNYXN0ZXImJnIuYWZ0ZXJEcmF3KCksdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmRyYXduPSEwLHRoaXN9bWFya0lmT3ZlcnNpemVkQ29sdW1uSGVhZGVyKGUpe2NvbnN0IHQ9dGhpcy5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShlKTtsZXQg'@; put 'cj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aDtjb25zdCBpPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzdHlsZXNIYW5kbGVyIikuZ2V0RGVmYXVsdFJvd0hlaWdodCgpO2xldCBvLGEsbDtjb25zdCB1PXRoaXMud3RTZXR0aW5ncy5nZXRT'@; put 'ZXR0aW5nKCJjb2x1bW5IZWFkZXJIZWlnaHQiKXx8W107Zm9yKDtyOyl7aWYoci09MSxvPXRoaXMuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KHIpLGE9dGhpcy5nZXRDb2x1bW5IZWFkZXIodCxyKSwhYSljb250aW51ZTtsPWR3KGEpLCghbyYmaTxsfHxvPGwpJiYodGhpcy5kYXRhQWNjZXNzT2Jq'@; put 'ZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1tyXT1sKSxBcnJheS5pc0FycmF5KHUpP251bGwhPXVbcl0mJih0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW3JdPXVbcl0pOmlzTmFOKHUpfHwodGhpcy5kYXRhQWNjZXNz'@; put 'T2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1tyXT11KTtjb25zdCBnPUFycmF5LmlzQXJyYXkodSk/dVtyXT8/MDp1Oyh0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW3JdPz8wKTxnJiYodGhpcy5kYXRhQWNjZXNz'@; put 'T2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1tyXT1nKX19YWRqdXN0Q29sdW1uSGVhZGVySGVpZ2h0cygpe2NvbnN0e3d0U2V0dGluZ3M6ZX09dGhpcyx0PXRoaXMuVEhFQUQuY2hpbGROb2RlcyxyPXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJz'@; put 'aXplZENvbHVtbkhlYWRlcnM7Zm9yKGxldCBvPTAsYT1lLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg7bzxhO28rKylpZihyW29dKXtpZighdFtvXXx8MD09PXRbb10uY2hpbGROb2Rlcy5sZW5ndGgpcmV0dXJuO2NvbnN0IGw9dFtvXS5jaGlsZE5vZGVzWzBdO2hzKGwpJiYo'@; put 'bC5zdHlsZS5oZWlnaHQ9YCR7cltvXX1weGApfX1zeW5jT3ZlcnNpemVkQ29sdW1uSGVhZGVyc1dpdGhET00oKXtjb25zdHt3dFNldHRpbmdzOmV9PXRoaXMsdD10aGlzLlRIRUFELmNoaWxkTm9kZXMscj10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5I'@; put 'ZWFkZXJzO2ZvcihsZXQgYT0wLGw9ZS5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO2E8bDthKyspe2lmKCF0W2FdfHwhclthXSljb250aW51ZTtjb25zdCB1PXRbYV0sZz1ocyh1KT9kdyh1KTowO2c+KHJbYV0/PzApKzEmJihyW2FdPWcpfX1zeW5jT3ZlcnNpemVkQ29sdW1u'@; put 'SGVhZGVyc1dpdGhGcm96ZW5PdmVybGF5cygpe2NvbnN0e3d0T3ZlcmxheXM6ZX09dGhpcy5kYXRhQWNjZXNzT2JqZWN0LHQ9ZS50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXk/LmNsb25lO2lmKCF0Py53dFRhYmxlPy5USEVBRClyZXR1cm47Y29uc3Qgcj10aGlzLnd0U2V0dGluZ3MuZ2V0'@; put 'U2V0dGluZygiY29sdW1uSGVhZGVycyIpO2lmKCFyLmxlbmd0aClyZXR1cm47Y29uc3QgaT10Lnd0VGFibGUuVEhFQUQuY2hpbGROb2RlcyxvPWUudG9wT3ZlcmxheT8uY2xvbmUsYT1bdGhpcy5USEVBRCxvPy53dFRhYmxlPy5USEVBRF07Zm9yKGxldCB1PTAsZz1yLmxlbmd0aDt1PGc7dSsr'@; put 'KXtjb25zdCBFPWlbdV07aWYoIShFIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKWNvbnRpbnVlO2NvbnN0IE89RS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7YS5mb3JFYWNoKFo9Pntjb25zdCBlZT1aPy5jaGlsZE5vZGVzW3VdO2lmKCEoZWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVu'@; put 'dCl8fDA9PT1lZS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm47Y29uc3QgdmU9ZWUuY2hpbGROb2Rlc1swXTt2ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZNYXRoLmFicyhlZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQtTyk+LjEmJih2ZS5zdHlsZS5oZWlnaHQ9YCR7T31weGAp'@; put 'fSl9fXJlc2V0T3ZlcnNpemVkUm93cygpe2NvbnN0e3d0U2V0dGluZ3M6ZX09dGhpcyx7d3RWaWV3cG9ydDp0fT10aGlzLmRhdGFBY2Nlc3NPYmplY3Q7aWYoKHRoaXMuaXNNYXN0ZXJ8fHRoaXMuaXModDYpKSYmIWUuZ2V0U2V0dGluZygiZXh0ZXJuYWxSb3dDYWxjdWxhdG9yIikpe2NvbnN0'@; put 'IHI9dGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IG89dGhpcy5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShpKTt0Lm92ZXJzaXplZFJvd3MmJnQub3ZlcnNpemVkUm93c1tvXSYmKHQub3ZlcnNpemVkUm93c1tvXT12b2lkIDApfX19Z2V0'@; put 'Q2VsbChlKXtpZihudWxsPT09ZS5yb3d8fG51bGw9PT1lLmNvbClyZXR1cm4tNTtsZXQgdD1lLnJvdyxyPWUuY29sO2NvbnN0IGk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uTW9kaWZ5R2V0Q2VsbENvb3JkcyIsdCxyLCF0aGlzLmlzTWFzdGVyLCJyZW5kZXIiKTtpZihpJiZBcnJh'@; put 'eS5pc0FycmF5KGkpJiYoW3Qscl09aSksdGhpcy5pc1Jvd0JlZm9yZVJlbmRlcmVkUm93cyh0KSlyZXR1cm4tMTtpZih0aGlzLmlzUm93QWZ0ZXJSZW5kZXJlZFJvd3ModCkpcmV0dXJuLTI7aWYodGhpcy5pc0NvbHVtbkJlZm9yZVJlbmRlcmVkQ29sdW1ucyhyKSlyZXR1cm4tMztpZih0aGlz'@; put 'LmlzQ29sdW1uQWZ0ZXJSZW5kZXJlZENvbHVtbnMocikpcmV0dXJuLTQ7Y29uc3Qgbz10aGlzLmdldFJvdyh0KTshbyYmdD49MCYmSnIoIlRSIHdhcyBleHBlY3RlZCB0byBiZSByZW5kZXJlZCBidXQgaXMgbm90Iik7Y29uc3QgbD0oITEhPT1vP286bnVsbCk/LmNoaWxkTm9kZXNbdGhpcy5j'@; put 'b2x1bW5GaWx0ZXIuc291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uKHIpXTtyZXR1cm4hbCYmcj49MCYmSnIoIlREIG9yIFRIIHdhcyBleHBlY3RlZCB0byBiZSByZW5kZXJlZCBidXQgaXMgbm90IiksbH1nZXRSb3coZSl7bGV0IHQ9bnVsbCxyPW51bGw7cmV0dXJuIGU8MD8o'@; put 'dD10aGlzLnJvd0ZpbHRlcj8uc291cmNlUm93VG9WaXNpYmxlQ29sSGVhZGVkUm93KGUpLHI9dGhpcy5USEVBRCk6KHQ9dGhpcy5yb3dGaWx0ZXI/LnNvdXJjZVRvUmVuZGVyZWQoZSkscj10aGlzLlRCT0RZKSxudWxsIT10JiZudWxsIT09ciYmIShyLmNoaWxkTm9kZXMubGVuZ3RoPHQrMSkm'@; put 'JnIuY2hpbGROb2Rlc1t0XX1nZXRDb2x1bW5IZWFkZXIoZSx0PTApe2NvbnN0IGk9dGhpcy5USEVBRC5jaGlsZE5vZGVzW3RdPy5jaGlsZE5vZGVzW3RoaXMuY29sdW1uRmlsdGVyLnNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbihlKV07cmV0dXJuIGhzKGkpP2k6dm9pZCAw'@; put 'fWdldENvbHVtbkhlYWRlcnMoZSl7Y29uc3QgdD1bXSxyPXRoaXMuY29sdW1uRmlsdGVyLnNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbihlKTtyZXR1cm4gdGhpcy5USEVBRC5jaGlsZE5vZGVzLmZvckVhY2goaT0+e2NvbnN0IG89aS5jaGlsZE5vZGVzW3JdO05zZShvKSYm'@; put 'dC5wdXNoKG8pfSksdH1nZXRSb3dIZWFkZXIoZSx0PTApe2lmKHQ+PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoKXJldHVybjtjb25zdCBpPXRoaXMucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoZSksbz1pPDA/dGhpcy5yb3dGaWx0ZXIuc291cmNl'@; put 'Um93VG9WaXNpYmxlQ29sSGVhZGVkUm93KGUpOmksdT0oaTwwP3RoaXMuVEhFQUQ6dGhpcy5UQk9EWSk/LmNoaWxkTm9kZXNbb10/LmNoaWxkTm9kZXNbdF07cmV0dXJuIGhzKHUpP3U6dm9pZCAwfWdldFJvd0hlYWRlcnMoZSl7Y29uc3QgdD1bXSxyPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0'@; put 'aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IGE9dGhpcy5UQk9EWS5jaGlsZE5vZGVzW3RoaXMucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoZSldPy5jaGlsZE5vZGVzW2ldO2EmJnQucHVzaChhKX1yZXR1cm4gdH1nZXRDb29yZHMoZSl7bGV0'@; put 'IHQ9ZTtpZigiVEQiIT09dC5ub2RlTmFtZSYmIlRIIiE9PXQubm9kZU5hbWUmJih0PVZ2KHQsWyJURCIsIlRIIl0pKSxudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCByPXQucGFyZW50Tm9kZTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBpPXIucGFyZW50Tm9kZTtpZighaSlyZXR1cm4gbnVs'@; put 'bDtsZXQgbz1ocyhyKT8keGUocik6MCxhPU5zZSh0KT90LmNlbGxJbmRleDowO2p2KF93LHQsdGhpcy53dFJvb3RFbGVtZW50KXx8anYoJHYsdCx0aGlzLnd0Um9vdEVsZW1lbnQpPyJUSEVBRCI9PT1pLm5vZGVOYW1lJiYoby09aS5jaGlsZE5vZGVzLmxlbmd0aCk6anYoS3YsdCx0aGlzLnd0'@; put 'Um9vdEVsZW1lbnQpfHxqdih0Nix0LHRoaXMud3RSb290RWxlbWVudCk/bz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiktaS5jaGlsZE5vZGVzLmxlbmd0aCtvOmk9PT10aGlzLlRIRUFEP289dGhpcy5yb3dGaWx0ZXIudmlzaWJsZUNvbEhlYWRlZFJvd1RvU291cmNl'@; put 'Um93KG8pOnRoaXMucm93RmlsdGVyJiYobz10aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKG8pKSxqdihfdyx0LHRoaXMud3RSb290RWxlbWVudCl8fGp2KHF2LHQsdGhpcy53dFJvb3RFbGVtZW50KXx8anYoS3YsdCx0aGlzLnd0Um9vdEVsZW1lbnQpP2E9dGhpcy5jb2x1bW5GaWx0'@; put 'ZXIub2Zmc2V0dGVkVEgoYSk6dGhpcy5jb2x1bW5GaWx0ZXImJihhPXRoaXMuY29sdW1uRmlsdGVyLnZpc2libGVSb3dIZWFkZWRDb2x1bW5Ub1NvdXJjZUNvbHVtbihhKSk7Y29uc3QgbD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25Nb2RpZnlHZXRDb29yZHNFbGVtZW50IixvLGEp'@; put 'O3JldHVybiBsJiZBcnJheS5pc0FycmF5KGwpJiYoW28sYV09bCksdGhpcy53b3QuY3JlYXRlQ2VsbENvb3JkcyhvLGEpfW1hcmtPdmVyc2l6ZWRSb3dzKCl7aWYodGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImV4dGVybmFsUm93Q2FsY3VsYXRvciIpKXJldHVybjtsZXQgZT10aGlzLlRC'@; put 'T0RZLmNoaWxkTm9kZXMubGVuZ3RoO2NvbnN0IHQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInN0eWxlc0hhbmRsZXIiKSxyPWUqdC5nZXREZWZhdWx0Um93SGVpZ2h0KCksaT1kdyh0aGlzLlRCT0RZKS0xLG89dC5hcmVDZWxsc0JvcmRlckJveCgpLGE9bz9IaDpkdyxsPW8/MDoxLHU9'@; put 'bz8xOjA7bGV0IGcsRSxPLFosZWU7aWYocj09PWkmJiF0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIikpcmV0dXJuO2NvbnN0e3d0Vmlld3BvcnQ6dmV9PXRoaXMuZGF0YUFjY2Vzc09iamVjdDtsZXQgTWU9ITE7Zm9yKDtlOyl7ZS09MSxPPXRoaXMucm93Rmls'@; put 'dGVyLnJlbmRlcmVkVG9Tb3VyY2UoZSksZz10aGlzLmdldFJvd0hlaWdodChPKSxaPXRoaXMuZ2V0VHJGb3JSb3coTyksZWU9Wi5xdWVyeVNlbGVjdG9yKCJ0aCIpO2NvbnN0IEhlPTA9PT1lP3U6MDtFPWVlP2EoZWUpOmEoWiktbCwoIWcmJnQuZ2V0RGVmYXVsdFJvd0hlaWdodCgpPEUtSGV8'@; put 'fHZvaWQgMCE9PWcmJmc8RSkmJihvfHwoRSs9MSksdmUub3ZlcnNpemVkUm93c1tPXT1FLE1lPSEwKX1NZSYmdmUucm93SGVpZ2h0Q2FjaGUuaW52YWxpZGF0ZSgpfWdldFRyRm9yUm93KGUpe3JldHVybiB0aGlzLlRCT0RZLmNoaWxkTm9kZXNbdGhpcy5yb3dGaWx0ZXIuc291cmNlVG9SZW5k'@; put 'ZXJlZChlKV19aXNDb2x1bW5IZWFkZXJSZW5kZXJlZChlKXtpZihlPj0wKXJldHVybiExO2NvbnN0IHI9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGg7cmV0dXJuIE1hdGguYWJzKGUpPD1yfWlzUm93SGVhZGVyUmVuZGVyZWQoZSl7aWYoZT49MClyZXR1'@; put 'cm4hMTtjb25zdCByPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO3JldHVybiBNYXRoLmFicyhlKTw9cn1pc1Jvd0JlZm9yZVJlbmRlcmVkUm93cyhlKXtjb25zdCB0PXRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpO3JldHVybiBlPDAmJnQ8PTA/'@; put 'IXRoaXMuaXNSb3dIZWFkZXJSZW5kZXJlZChlKTplPHR9aXNSb3dBZnRlclJlbmRlcmVkUm93cyhlKXtyZXR1cm4gZT50aGlzLmdldExhc3RSZW5kZXJlZFJvdygpfWlzQ29sdW1uQmVmb3JlUmVuZGVyZWRDb2x1bW5zKGUpe2NvbnN0IHQ9dGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCk7'@; put 'cmV0dXJuIGU8MCYmdDw9MD8hdGhpcy5pc0NvbHVtbkhlYWRlclJlbmRlcmVkKGUpOmU8dH1pc0NvbHVtbkFmdGVyUmVuZGVyZWRDb2x1bW5zKGUpe3JldHVybiB0aGlzLmNvbHVtbkZpbHRlciYmZT50aGlzLmdldExhc3RSZW5kZXJlZENvbHVtbigpfWlzQ29sdW1uQWZ0ZXJWaWV3cG9ydChl'@; put 'KXtyZXR1cm4gdGhpcy5jb2x1bW5GaWx0ZXImJmU+dGhpcy5nZXRMYXN0VmlzaWJsZUNvbHVtbigpfWlzUm93QWZ0ZXJWaWV3cG9ydChlKXtyZXR1cm4gdGhpcy5yb3dGaWx0ZXImJmU+dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpfWlzQ29sdW1uQmVmb3JlVmlld3BvcnQoZSl7cmV0dXJuIHRo'@; put 'aXMuY29sdW1uRmlsdGVyJiZ0aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGUpPDAmJmU+PTB9aXNMYXN0Um93RnVsbHlWaXNpYmxlKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFZpc2libGVSb3coKT09PXRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9aXNMYXN0Q29sdW1uRnVsbHlW'@; put 'aXNpYmxlKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKT09PXRoaXMuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl9YWxsUm93c0luVmlld3BvcnQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpPT09dGhpcy5nZXRWaXNpYmxlUm93c0Nv'@; put 'dW50KCl9YWxsQ29sdW1uc0luVmlld3BvcnQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpPT09dGhpcy5nZXRWaXNpYmxlQ29sdW1uc0NvdW50KCl9Z2V0Um93SGVpZ2h0KGUpe3JldHVybiB0aGlzLnJvd1V0aWxzLmdldEhlaWdodChlKX1nZXRD'@; put 'b2x1bW5IZWFkZXJIZWlnaHQoZSl7cmV0dXJuIHRoaXMuY29sdW1uVXRpbHMuZ2V0SGVhZGVySGVpZ2h0KGUpfWdldENvbHVtbldpZHRoKGUpe3JldHVybiB0aGlzLmNvbHVtblV0aWxzLmdldFdpZHRoKGUpfWhhc0RlZmluZWRTaXplKCl7cmV0dXJuIHRoaXMuaGFzVGFibGVIZWlnaHQmJnRo'@; put 'aXMuaGFzVGFibGVXaWR0aH1nZXRXaWR0aCgpe3JldHVybiBaZCh0aGlzLlRBQkxFKX1nZXRIZWlnaHQoKXtyZXR1cm4gSGgodGhpcy5UQUJMRSl9Z2V0VG90YWxXaWR0aCgpe2NvbnN0IGU9WmQodGhpcy5oaWRlcik7cmV0dXJuIDAhPT1lP2U6dGhpcy5nZXRXaWR0aCgpfWdldFRvdGFsSGVp'@; put 'Z2h0KCl7Y29uc3QgZT1IaCh0aGlzLmhpZGVyKTtyZXR1cm4gMCE9PWU/ZTp0aGlzLmdldEhlaWdodCgpfWlzVmlzaWJsZSgpe3JldHVybiBVdih0aGlzLlRBQkxFKX1fbW9kaWZ5Um93SGVhZGVyV2lkdGgoZSl7bGV0IHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSgpOmU7cmV0dXJuIEFycmF5'@; put 'LmlzQXJyYXkocik/KHI9Wy4uLnJdLHJbci5sZW5ndGgtMV09dGhpcy5fY29ycmVjdFJvd0hlYWRlcldpZHRoKHJbci5sZW5ndGgtMV0pKTpyPXRoaXMuX2NvcnJlY3RSb3dIZWFkZXJXaWR0aChyKSxyfV9jb3JyZWN0Um93SGVhZGVyV2lkdGgoZSl7bGV0IHQ9Im51bWJlciI9PXR5cGVvZiBl'@; put 'P2U6dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5XaWR0aCIpO3JldHVybiB0aGlzLmNvcnJlY3RIZWFkZXJXaWR0aCYmKHQrPTEpLHR9ZGVzdHJveSgpe31jb25zdHJ1Y3RvcihlLHQscixpLG8pe3RoaXMuVEJPRFk9bnVsbCx0aGlzLlRIRUFEPW51bGwsdGhpcy5D'@; put 'T0xHUk9VUD1udWxsLHRoaXMuaGFzVGFibGVIZWlnaHQ9ITAsdGhpcy5oYXNUYWJsZVdpZHRoPSEwLHRoaXMuaXNUYWJsZVZpc2libGU9ITEsdGhpcy50YWJsZU9mZnNldD0wLHRoaXMuaG9sZGVyT2Zmc2V0PTAsdGhpcy5kb21CaW5kaW5ncz1yLHRoaXMuaXNNYXN0ZXI9Im1hc3RlciI9PT1v'@; put 'LHRoaXMubmFtZT1vLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1lLHRoaXMuZmFjYWRlR2V0dGVyPXQsdGhpcy53dFNldHRpbmdzPWksdGhpcy5pbnN0YW5jZT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud290LHRoaXMud290PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53b3QsdGhpcy5UQUJMRT1yLnJv'@; put 'b3RUYWJsZSxTc2UodGhpcy5UQUJMRSksdGhpcy5zcHJlYWRlcj10aGlzLmNyZWF0ZVNwcmVhZGVyKHRoaXMuVEFCTEUpLHRoaXMuaGlkZXI9dGhpcy5jcmVhdGVIaWRlcih0aGlzLnNwcmVhZGVyKSx0aGlzLmhvbGRlcj10aGlzLmNyZWF0ZUhvbGRlcih0aGlzLmhpZGVyKSx0aGlzLnd0Um9v'@; put 'dEVsZW1lbnQ9dGhpcy5ob2xkZXIucGFyZW50Tm9kZSx0aGlzLmlzTWFzdGVyJiZ0aGlzLmFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIoKSx0aGlzLmZpeFRhYmxlRG9tVHJlZSgpLHRoaXMucm93RmlsdGVyPW51bGwsdGhpcy5jb2x1bW5GaWx0ZXI9bnVsbCx0aGlzLmNvcnJl'@; put 'Y3RIZWFkZXJXaWR0aD0hMTtjb25zdCBhPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nUHVyZSgicm93SGVhZGVyV2lkdGgiKTt0aGlzLnd0U2V0dGluZ3MudXBkYXRlKCJyb3dIZWFkZXJXaWR0aCIsKCk9PnRoaXMuX21vZGlmeVJvd0hlYWRlcldpZHRoKGEpKSx0aGlzLnJvd1V0aWxzPW5l'@; put 'dyBMeHQodGhpcy5kYXRhQWNjZXNzT2JqZWN0LHRoaXMud3RTZXR0aW5ncyksdGhpcy5jb2x1bW5VdGlscz1uZXcgRHh0KHRoaXMuZGF0YUFjY2Vzc09iamVjdCx0aGlzLnd0U2V0dGluZ3MpLHRoaXMudGFibGVSZW5kZXJlcj1uZXcgSXh0KHtUQUJMRTp0aGlzLlRBQkxFLFRIRUFEOnRoaXMu'@; put 'VEhFQUQ/P3ZvaWQgMCxDT0xHUk9VUDp0aGlzLkNPTEdST1VQPz92b2lkIDAsVEJPRFk6dGhpcy5UQk9EWT8/dm9pZCAwLHJvd1V0aWxzOnRoaXMucm93VXRpbHMsY29sdW1uVXRpbHM6dGhpcy5jb2x1bW5VdGlscyxjZWxsUmVuZGVyZXI6dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJl'@; put 'KCJjZWxsUmVuZGVyZXIiKSxzdHlsZXNIYW5kbGVyOnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzdHlsZXNIYW5kbGVyIil9KX19LFFBZT17Z2V0Rmlyc3RSZW5kZXJlZFJvdygpe3JldHVybiAwPT09dGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpPy0xOjB9LGdldEZpcnN0VmlzaWJs'@; put 'ZVJvdygpe3JldHVybiB0aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKX0sZ2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpfSxnZXRMYXN0UmVuZGVyZWRSb3coKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLTF9'@; put 'LGdldExhc3RWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9LGdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9LGdldFJlbmRlcmVkUm93c0NvdW50KCl7cmV0dXJuIE1hdGgubWluKHRoaXMud3RT'@; put 'ZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8/MCx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIikpfSxnZXRWaXNpYmxlUm93c0NvdW50KCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKX0sZ2V0Q29sdW1uSGVhZGVyc0NvdW50KCl7cmV0'@; put 'dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb2x1bW5IZWFkZXJzLmxlbmd0aH19O0s1KFFBZSwiTUlYSU5fTkFNRSIsInN0aWNreVJvd3NUb3AiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3QgSkFlPVFBZSxla2U9e2dldEZpcnN0UmVuZGVyZWRDb2x1bW4oKXtjb25zdCBu'@; put 'PXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblJlbmRlcmVkO3JldHVybiBudWxsPT09bj8tMTpufSxnZXRGaXJzdFZpc2libGVDb2x1bW4oKXtjb25zdCBuPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblZpc2libGU7cmV0dXJuIG51bGw9PT1uPy0xOm59LGdldEZp'@; put 'cnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpe2NvbnN0IG49dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Q29sdW1uUGFydGlhbGx5VmlzaWJsZTtyZXR1cm4gbnVsbD09PW4/LTE6bn0sZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl7Y29uc3Qgbj10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5k'@; put 'Q29sdW1uUmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1uPy0xOm59LGdldExhc3RWaXNpYmxlQ29sdW1uKCl7Y29uc3Qgbj10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5kQ29sdW1uVmlzaWJsZTtyZXR1cm4gbnVsbD09PW4/LTE6bn0sZ2V0TGFzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKXtjb25z'@; put 'dCBuPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRDb2x1bW5QYXJ0aWFsbHlWaXNpYmxlO3JldHVybiBudWxsPT09bj8tMTpufSxnZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRDb2x1bW5zUmVuZGVyZWR9LGdldFZpc2libGVDb2x1'@; put 'bW5zQ291bnQoKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Q29sdW1uc1Zpc2libGV9LGdldFJvd0hlYWRlcnNDb3VudCgpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3Qucm93SGVhZGVycy5sZW5ndGh9fTtLNShla2UsIk1JWElOX05BTUUiLCJjYWxjdWxhdGVkQ29s'@; put 'dW1ucyIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCB1bGU9ZWtlO2NsYXNzIGRsZSBleHRlbmRzIEtNe2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCxyLGksJHYpfX1ZbChkbGUsSkFlKSxZbChkbGUsdWxlKTtjb25zdCBIeHQ9ZGxlO2Z1bmN0aW9uIEpXKG4sZSx0'@; put 'KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIHRrZShuLGUpeyhmdW5jdGlvbiBWeHQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD'@; put 'YW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLmFkZChuKX12YXIgaGxlPW5ldyBXZWFrU2V0LGZsZT1uZXcgV2Vha1NldDtmdW5jdGlvbiBua2Uobil7Y29uc3R7d3RTZXR0aW5nczplLGlubGluZVN0YXJ0T3Zl'@; put 'cmxheTp0LHd0VGFibGU6cix3dFZpZXdwb3J0OmksdG90YWxDb2x1bW5zOm8scm9vdFdpbmRvdzphfT10aGlzLmRhdGFBY2Nlc3NPYmplY3Q7aWYodC5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PWEpe2xldCB1PW51bGw7aWYoZS5nZXRTZXR0aW5nKCJydGxNb2RlIikpe2NvbnN0IEU9'@; put 'ci5UQUJMRS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt1PU1hdGguYWJzKEUucmlnaHQtYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgpfWVsc2UgdT1YMChyLnd0Um9vdEVsZW1lbnQpLmxlZnQ7Y29uc3QgZz1NYXRoLmFicyhNc2UoYSxhKSk7aWYodT5nKXtjb25zdCBF'@; put 'PVRzZShhKTtsZXQgTz1pLmdldFJvd0hlYWRlcldpZHRoKCk7Zm9yKGxldCBaPTE7Wjw9bztaKyspaWYoTys9dC5zdW1DZWxsU2l6ZXMoWi0xLFopLHUrTy1nPj1FKXtuPVotMjticmVha319fXJldHVybiBufWZ1bmN0aW9uIHJrZShuKXtjb25zdHt0b3BPdmVybGF5OmUsd3RUYWJsZTp0LHd0'@; put 'Vmlld3BvcnQ6cix0b3RhbFJvd3M6aSxyb290V2luZG93Om99PXRoaXMuZGF0YUFjY2Vzc09iamVjdDtpZihlLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09byl7Y29uc3QgYT1YMCh0Lnd0Um9vdEVsZW1lbnQpLGw9alcobyxvKTtpZihhLnRvcD5sKXtjb25zdCB1PWR3KG8pO2xldCBn'@; put 'PXIuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCk7Zm9yKGxldCBFPTE7RTw9aTtFKyspaWYoZys9ZS5zdW1DZWxsU2l6ZXMoRS0xLEUpLGEudG9wK2ctbD49dSl7bj1FLTI7YnJlYWt9fX1yZXR1cm4gbn1jb25zdCBqeHQ9Y2xhc3MgQnh0e3Njcm9sbFZpZXdwb3J0KGUsdCxyKXtpZihlLmNvbDww'@; put 'fHxlLnJvdzwwKXJldHVybiExO2NvbnN0IGk9dGhpcy5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShlLmNvbCx0KSxvPXRoaXMuc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGUucm93LHIpO3JldHVybiBpfHxvfXNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGUsdD0iYXV0byIpe2NvbnN0'@; put 'e2RyYXduOnIsdG90YWxDb2x1bW5zOml9PXRoaXMuZGF0YUFjY2Vzc09iamVjdDtpZighcilyZXR1cm4hMTtjb25zdCBvPVZmKHQpO2lmKGU9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25CZWZvcmVWaWV3cG9ydFNjcm9sbEhvcml6b250YWxseSIsZSxv'@; put 'KSwhTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTwwfHxlPmkpcmV0dXJuITE7dD1vLnZhbHVlO2NvbnN0e2ZpeGVkQ29sdW1uc1N0YXJ0OmEsaW5saW5lU3RhcnRPdmVybGF5Omx9PXRoaXMuZGF0YUFjY2Vzc09iamVjdCx1PSJhdXRvIj09PXQ7aWYodSYmZTxhKXJldHVybiExO2NvbnN0IGc9dGhp'@; put 'cy5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSxFPXRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKTtsZXQgTz0hMTtyZXR1cm4odSYmKGU8Z3x8ZT5FKXx8IXUpJiYoTz1sLnNjcm9sbFRvKGUsdT9lPj10aGlzLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCk6ImVuZCI9PT10KSksT31z'@; put 'Y3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoZSx0PSJhdXRvIil7Y29uc3R7ZHJhd246cix0b3RhbFJvd3M6aX09dGhpcy5kYXRhQWNjZXNzT2JqZWN0O2lmKCFyKXJldHVybiExO2NvbnN0IG89VmYodCk7aWYoZT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJv'@; put 'bkJlZm9yZVZpZXdwb3J0U2Nyb2xsVmVydGljYWxseSIsZSxvKSwhTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTwwfHxlPmkpcmV0dXJuITE7dD1vLnZhbHVlO2NvbnN0e2ZpeGVkUm93c0JvdHRvbTphLGZpeGVkUm93c1RvcDpsLHRvcE92ZXJsYXk6dX09dGhpcy5kYXRhQWNjZXNzT2JqZWN0LGc9'@; put 'ImF1dG8iPT09dDtpZihnJiYoZTxsfHxlPmktYS0xKSlyZXR1cm4hMTtjb25zdCBFPXRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93KCksTz10aGlzLmdldExhc3RWaXNpYmxlUm93KCk7bGV0IFo9ITE7cmV0dXJuKGcmJihlPEV8fGU+Tyl8fCFnKSYmKFo9dS5zY3JvbGxUbyhlLGc/ZT49dGhpcy5n'@; put 'ZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpOiJib3R0b20iPT09dCkpLFp9Z2V0Rmlyc3RWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldEZpcnN0VmlzaWJsZVJvdygpfWdldExhc3RWaXNpYmxlUm93KCl7cmV0dXJuIEpXKHRoaXMsZmxlLHJr'@; put 'ZSkuY2FsbCh0aGlzLHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldExhc3RWaXNpYmxlUm93KCkpfWdldEZpcnN0UGFydGlhbGx5VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RUYWJsZS5nZXRGaXJzdFBhcnRpYWxseVZpc2libGVSb3coKX1nZXRM'@; put 'YXN0UGFydGlhbGx5VmlzaWJsZVJvdygpe3JldHVybiBKVyh0aGlzLGZsZSxya2UpLmNhbGwodGhpcyx0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RUYWJsZS5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpKX1nZXRGaXJzdFZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNz'@; put 'T2JqZWN0Lnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCl9Z2V0TGFzdFZpc2libGVDb2x1bW4oKXtyZXR1cm4gSlcodGhpcyxobGUsbmtlKS5jYWxsKHRoaXMsdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuZ2V0TGFzdFZpc2libGVDb2x1bW4oKSl9Z2V0Rmlyc3RQYXJ0aWFs'@; put 'bHlWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpfWdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIEpXKHRoaXMsaGxlLG5rZSkuY2FsbCh0aGlzLHRoaXMuZGF0YUFj'@; put 'Y2Vzc09iamVjdC53dFRhYmxlLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCkpfWNvbnN0cnVjdG9yKGUpe3RrZSh0aGlzLGhsZSksdGtlKHRoaXMsZmxlKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9ZX19O2Z1bmN0aW9uIGlrZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBU'@; put 'eXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBYTShuLGUpe3JldHVybiBmdW5jdGlvbiB6eHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGlrZShuLGUs'@; put 'ImdldCIpKX1mdW5jdGlvbiBwbGUobixlLHQpe3JldHVybiBmdW5jdGlvbiBXeHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtl'@; put 'LnZhbHVlPXR9fShuLGlrZShuLGUsInNldCIpLHQpLHR9dmFyIG42PW5ldyBXZWFrTWFwO2NsYXNzIGVZe2lzVmFsaWQoZSl7Y29uc3R7Y291bnRSb3dzOnQsY291bnRDb2xzOnIsY291bnRSb3dIZWFkZXJzOmksY291bnRDb2xIZWFkZXJzOm99PXtjb3VudFJvd3M6MCxjb3VudENvbHM6MCxj'@; put 'b3VudFJvd0hlYWRlcnM6MCxjb3VudENvbEhlYWRlcnM6MCwuLi5lfTtpZighTnVtYmVyLmlzSW50ZWdlcih0aGlzLnJvdyl8fCFOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuY29sKSlyZXR1cm4hMTtjb25zdCBhPXRoaXMucm93LGw9dGhpcy5jb2w7cmV0dXJuIShhPC1vfHxsPC1pfHxhPj10fHxs'@; put 'Pj1yKX1pc1NldCgpe3JldHVybiBudWxsIT09dGhpcy5yb3cmJm51bGwhPT10aGlzLmNvbH1pc0VxdWFsKGUpe3JldHVybiBlPT09dGhpc3x8dGhpcy5yb3c9PT1lLnJvdyYmdGhpcy5jb2w9PT1lLmNvbH1pc0hlYWRlcigpe3JldHVybiF0aGlzLmlzQ2VsbCgpfWlzQ2VsbCgpe3JldHVybiBu'@; put 'dWxsIT09dGhpcy5yb3cmJm51bGwhPT10aGlzLmNvbCYmdGhpcy5yb3c+PTAmJnRoaXMuY29sPj0wfWlzUnRsKCl7cmV0dXJuIFhNKHRoaXMsbjYpfWlzU291dGhFYXN0T2YoZSl7aWYobnVsbD09PXRoaXMucm93fHxudWxsPT09dGhpcy5jb2x8fG51bGw9PT1lLnJvd3x8bnVsbD09PWUuY29s'@; put 'KXJldHVybiExO2NvbnN0IHI9dGhpcy5jb2wsbz1lLmNvbDtyZXR1cm4gdGhpcy5yb3c+PWUucm93JiYoWE0odGhpcyxuNik/cjw9bzpyPj1vKX1pc05vcnRoV2VzdE9mKGUpe2lmKG51bGw9PT10aGlzLnJvd3x8bnVsbD09PXRoaXMuY29sfHxudWxsPT09ZS5yb3d8fG51bGw9PT1lLmNvbCly'@; put 'ZXR1cm4hMTtjb25zdCByPXRoaXMuY29sLG89ZS5jb2w7cmV0dXJuIHRoaXMucm93PD1lLnJvdyYmKFhNKHRoaXMsbjYpP3I+PW86cjw9byl9aXNTb3V0aFdlc3RPZihlKXtpZihudWxsPT09dGhpcy5yb3d8fG51bGw9PT10aGlzLmNvbHx8bnVsbD09PWUucm93fHxudWxsPT09ZS5jb2wpcmV0'@; put 'dXJuITE7Y29uc3Qgcj10aGlzLmNvbCxvPWUuY29sO3JldHVybiB0aGlzLnJvdz49ZS5yb3cmJihYTSh0aGlzLG42KT9yPj1vOnI8PW8pfWlzTm9ydGhFYXN0T2YoZSl7aWYobnVsbD09PXRoaXMucm93fHxudWxsPT09dGhpcy5jb2x8fG51bGw9PT1lLnJvd3x8bnVsbD09PWUuY29sKXJldHVy'@; put 'biExO2NvbnN0IHI9dGhpcy5jb2wsbz1lLmNvbDtyZXR1cm4gdGhpcy5yb3c8PWUucm93JiYoWE0odGhpcyxuNik/cjw9bzpyPj1vKX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5yb3c9bnVsbD09PXRoaXMucm93P3RoaXMucm93Ok1hdGgubWF4KHRoaXMucm93LDApLHRoaXMuY29sPW51bGw9'@; put 'PT10aGlzLmNvbD90aGlzLmNvbDpNYXRoLm1heCh0aGlzLmNvbCwwKSx0aGlzfWFzc2lnbihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlPy5yb3cpJiYodGhpcy5yb3c9ZS5yb3cpLE51bWJlci5pc0ludGVnZXIoZT8uY29sKSYmKHRoaXMuY29sPWUuY29sKSxlIGluc3RhbmNlb2YgZVkm'@; put 'JnBsZSh0aGlzLG42LGUuaXNSdGwoKSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgZVkodGhpcy5yb3c/P3ZvaWQgMCx0aGlzLmNvbD8/dm9pZCAwLFhNKHRoaXMsbjYpKX10b09iamVjdCgpe3JldHVybntyb3c6dGhpcy5yb3csY29sOnRoaXMuY29sfX1jb25zdHJ1Y3RvcihlLHQscj0hMSl7'@; put 'KGZ1bmN0aW9uIFl4dChuLGUsdCl7KGZ1bmN0aW9uIFV4dChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuc2V0KG4sdCl9KSh0aGlzLG42'@; put 'LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLnJvdz1udWxsLHRoaXMuY29sPW51bGwscGxlKHRoaXMsbjYsITEpLHBsZSh0aGlzLG42LHIpLHR5cGVvZiBlPCJ1IiYmKHRoaXMucm93PWUpLHR5cGVvZiB0PCJ1IiYmKHRoaXMuY29sPXQpfX1jb25zdCB0WT1lWTtmdW5jdGlvbiBv'@; put 'a2UobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGFrZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVt'@; put 'cHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBZcChuLGUpe3JldHVybiBmdW5jdGlvbiBaeHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGFrZShuLGUsImdldCIpKX1mdW5jdGlv'@; put 'biBza2UobixlLHQpe3JldHVybiBmdW5jdGlvbiBHeHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLGFr'@; put 'ZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gWnIobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9dmFyIFoyPW5ldyBXZWFrTWFwLHpyPW5ldyBXZWFrU2V0O2Ns'@; put 'YXNzIGdsZXtzZXRIaWdobGlnaHQoZSl7cmV0dXJuIHRoaXMuaGlnaGxpZ2h0PWUuY2xvbmUoKSx0aGlzfXNldEZyb20oZSl7cmV0dXJuIHRoaXMuZnJvbT1lLmNsb25lKCksdGhpc31zZXRUbyhlKXtyZXR1cm4gdGhpcy50bz1lLmNsb25lKCksdGhpc31ub3JtYWxpemUoKXtyZXR1cm4gdGhp'@; put 'cy5oaWdobGlnaHQubm9ybWFsaXplKCksdGhpcy5mcm9tLm5vcm1hbGl6ZSgpLHRoaXMudG8ubm9ybWFsaXplKCksdGhpc31pc1ZhbGlkKGUpe3JldHVybiB0aGlzLmZyb20uaXNWYWxpZChlKSYmdGhpcy50by5pc1ZhbGlkKGUpfWlzU2luZ2xlKCl7cmV0dXJuIHRoaXMuaXNTaW5nbGVDZWxs'@; put 'KCl8fHRoaXMuaXNTaW5nbGVIZWFkZXIoKX1pc1NpbmdsZUNlbGwoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZnJvbS5yb3cmJm51bGwhPT10aGlzLmZyb20uY29sJiZudWxsIT09dGhpcy50by5yb3cmJm51bGwhPT10aGlzLnRvLmNvbCYmWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJv'@; put 'bS5yb3cpPj0wJiZ0aGlzLmZyb20ucm93PT09dGhpcy50by5yb3cmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmZyb20uY29sKT49MCYmdGhpcy5mcm9tLmNvbD09PXRoaXMudG8uY29sfWlzU2luZ2xlSGVhZGVyKCl7cmV0dXJuIG51bGwhPT10aGlzLmZyb20ucm93JiZudWxsIT09'@; put 'dGhpcy5mcm9tLmNvbCYmbnVsbCE9PXRoaXMudG8ucm93JiZudWxsIT09dGhpcy50by5jb2wmJihacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy5mcm9tLnJvdyk8MHx8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpPDApJiZ0aGlzLmZyb20ucm93PT09dGhpcy50'@; put 'by5yb3cmJnRoaXMuZnJvbS5jb2w9PT10aGlzLnRvLmNvbH1pc0hlYWRlcigpe3JldHVybiEoIXRoaXMuZnJvbS5pc0hlYWRlcigpfHwhdGhpcy50by5pc0hlYWRlcigpKXx8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpPDAmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhp'@; put 'cyx0aGlzLnRvLmNvbCk8MHx8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpPDAmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdyk8MH1jb250YWluc0hlYWRlcnMoKXtyZXR1cm4gdGhpcy5mcm9tLmlzSGVhZGVyKCl8fHRoaXMudG8uaXNIZWFkZXIo'@; put 'KX1nZXRPdXRlckhlaWdodCgpe3JldHVybiBNYXRoLm1heChacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy5mcm9tLnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMudG8ucm93KSktTWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpy'@; put 'KHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpKzF9Z2V0T3V0ZXJXaWR0aCgpe3JldHVybiBNYXRoLm1heChacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy5mcm9tLmNvbCksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMudG8uY29sKSktTWF0aC5taW4oWnIodGhp'@; put 'cyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpKzF9Z2V0SGVpZ2h0KCl7aWYoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpPDAmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRv'@; put 'LnJvdyk8MClyZXR1cm4gMDtjb25zdCBlPU1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmZyb20ucm93KSwwKSx0PU1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdyksMCk7cmV0dXJuIE1hdGgubWF4KGUsdCktTWF0aC5taW4oZSx0KSsx'@; put 'fWdldFdpZHRoKCl7aWYoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpPDAmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCk8MClyZXR1cm4gMDtjb25zdCBlPU1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmZyb20uY29sKSww'@; put 'KSx0PU1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCksMCk7cmV0dXJuIE1hdGgubWF4KGUsdCktTWF0aC5taW4oZSx0KSsxfWdldENlbGxzQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRXaWR0aCgpKnRoaXMuZ2V0SGVpZ2h0KCl9aW5jbHVkZXMoZSl7aWYobnVs'@; put 'bD09PXRoaXMuZnJvbS5yb3d8fG51bGw9PT10aGlzLmZyb20uY29sfHxudWxsPT09dGhpcy50by5yb3d8fG51bGw9PT10aGlzLnRvLmNvbHx8bnVsbD09PWUucm93fHxudWxsPT09ZS5jb2wpcmV0dXJuITE7Y29uc3QgdD1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5yb3cpLHI9WnIodGhp'@; put 'cyx6cixHcikuY2FsbCh0aGlzLGUuY29sKSxpPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLG89dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpO3JldHVybiBacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsaS5yb3cpPD10JiZacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsby5yb3cp'@; put 'Pj10JiZacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsaS5jb2wpPD1yJiZacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsby5jb2wpPj1yfWluY2x1ZGVzUmFuZ2UoZSl7cmV0dXJuIHRoaXMuaW5jbHVkZXMoZS5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkpJiZ0aGlzLmluY2x1ZGVzKGUuZ2V0T3V0'@; put 'ZXJCb3R0b21FbmRDb3JuZXIoKSl9aXNFcXVhbChlKXtpZihudWxsPT09dGhpcy5mcm9tLnJvd3x8bnVsbD09PXRoaXMuZnJvbS5jb2x8fG51bGw9PT10aGlzLnRvLnJvd3x8bnVsbD09PXRoaXMudG8uY29sfHxudWxsPT09ZS5mcm9tLnJvd3x8bnVsbD09PWUuZnJvbS5jb2x8fG51bGw9PT1l'@; put 'LnRvLnJvd3x8bnVsbD09PWUudG8uY29sKXJldHVybiExO2NvbnN0IHQ9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLHI9TWF0aC5tYXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlz'@; put 'LHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLGk9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpLG89TWF0aC5tYXgoWnIodGhpcyx6'@; put 'cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpLGE9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLnRvLnJvdykpLGw9TWF0aC5tYXgo'@; put 'WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLnRvLnJvdykpLHU9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLnRvLmNvbCkpLGc9TWF0aC5t'@; put 'YXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLnRvLmNvbCkpO3JldHVybiB0PT09YSYmcj09PWwmJmk9PT11JiZvPT09Z31vdmVybGFwcyhlKXtyZXR1cm4gZS5pc1NvdXRoRWFzdE9mKHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0'@; put 'Q29ybmVyKCkpJiZlLmlzTm9ydGhXZXN0T2YodGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkpfWlzU291dGhFYXN0T2YoZSl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCkuaXNTb3V0aEVhc3RPZihlKXx8dGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCku'@; put 'aXNTb3V0aEVhc3RPZihlKX1pc05vcnRoV2VzdE9mKGUpe3JldHVybiB0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmlzTm9ydGhXZXN0T2YoZSl8fHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLmlzTm9ydGhXZXN0T2YoZSl9aXNPdmVybGFwcGluZ0hvcml6b250YWxseShl'@; put 'KXtyZXR1cm4gWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKS5jb2wpPj1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkuY29sKSYmWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZ2V0T3V0ZXJU'@; put 'b3BFbmRDb3JuZXIoKS5jb2wpPD1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5nZXRPdXRlclRvcEVuZENvcm5lcigpLmNvbCl8fFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKS5jb2wpPD1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5n'@; put 'ZXRPdXRlclRvcEVuZENvcm5lcigpLmNvbCkmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKS5jb2wpPj1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkuY29sKX1pc092ZXJsYXBwaW5nVmVydGlj'@; put 'YWxseShlKXtyZXR1cm4gWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpLnJvdyk+PVpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5yb3cpJiZacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhp'@; put 'cy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkucm93KTw9WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpLnJvdyl8fFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCkucm93KTw9WnIodGhpcyx6'@; put 'cixHcikuY2FsbCh0aGlzLGUuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpLnJvdykmJlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCkucm93KT49WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLnJv'@; put 'dyl9ZXhwYW5kKGUsdD0hMCl7Y29uc3Qgcj10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxpPXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtpZihacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5yb3cpPFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxyLnJvdyl8fFpyKHRoaXMs'@; put 'enIsR3IpLmNhbGwodGhpcyxlLmNvbCk8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHIuY29sKXx8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUucm93KT5acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsaS5yb3cpfHxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5jb2wpPlpyKHRoaXMsenIs'@; put 'R3IpLmNhbGwodGhpcyxpLmNvbCkpe2NvbnN0IG89dGhpcy5nZXRWZXJ0aWNhbERpcmVjdGlvbigpLGE9dGhpcy5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCk7cmV0dXJuIHRoaXMuZnJvbT10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxy'@; put 'LnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUucm93KSksTWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHIuY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5jb2wpKSksdGhpcy50bz10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KFpyKHRoaXMsenIs'@; put 'R3IpLmNhbGwodGhpcyxpLnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUucm93KSksTWF0aC5tYXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGkuY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5jb2wpKSksdCYmKChacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5yb3cp'@; put 'PFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxyLnJvdykmJiJOLVMiPT09b3x8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUucm93KT5acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsaS5yb3cpJiYiUy1OIj09PW8pJiZ0aGlzLmZsaXBEaXJlY3Rpb25WZXJ0aWNhbGx5KCksKFpyKHRoaXMsenIs'@; put 'R3IpLmNhbGwodGhpcyxlLmNvbCk8WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHIuY29sKSYmIlctRSI9PT1hfHxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5jb2wpPlpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxpLmNvbCkmJiJFLVciPT09YSkmJnRoaXMuZmxpcERpcmVjdGlvbkhvcml6'@; put 'b250YWxseSgpKSwhMH1yZXR1cm4hMX1leHBhbmRCeVJhbmdlKGUsdD0hMCl7aWYodGhpcy5pbmNsdWRlc1JhbmdlKGUpfHwhdGhpcy5vdmVybGFwcyhlKSlyZXR1cm4hMTtjb25zdCByPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGk9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5l'@; put 'cigpLG89dGhpcy5nZXREaXJlY3Rpb24oKSxhPWUuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGw9ZS5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLHU9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHIucm93KSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsYS5yb3cpKSxnPU1h'@; put 'dGgubWluKFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxyLmNvbCksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGEuY29sKSksRT1NYXRoLm1heChacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsaS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxsLnJvdykpLE89TWF0aC5tYXgoWnIodGhp'@; put 'cyx6cixHcikuY2FsbCh0aGlzLGkuY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsbC5jb2wpKSxaPXRoaXMuX2NyZWF0ZUNlbGxDb29yZHModSxnKSxlZT10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKEUsTyk7cmV0dXJuIHRoaXMuZnJvbT1aLHRoaXMudG89ZWUsdGhpcy5zZXREaXJlY3Rp'@; put 'b24obyksdCYmKHRoaXMuaGlnaGxpZ2h0LnJvdz09PXRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLnJvdyYmIk4tUyI9PT10aGlzLmdldFZlcnRpY2FsRGlyZWN0aW9uKCkmJnRoaXMuZmxpcERpcmVjdGlvblZlcnRpY2FsbHkoKSx0aGlzLmhpZ2hsaWdodC5jb2w9PT10aGlzLmdl'@; put 'dE91dGVyVG9wUmlnaHRDb3JuZXIoKS5jb2wmJiJXLUUiPT09dGhpcy5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCkmJnRoaXMuZmxpcERpcmVjdGlvbkhvcml6b250YWxseSgpKSwhMH1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5mcm9tLmlzTm9ydGhXZXN0T2YodGhpcy50byk/Ik5XLVNF'@; put 'Ijp0aGlzLmZyb20uaXNOb3J0aEVhc3RPZih0aGlzLnRvKT8iTkUtU1ciOnRoaXMuZnJvbS5pc1NvdXRoRWFzdE9mKHRoaXMudG8pPyJTRS1OVyI6dGhpcy5mcm9tLmlzU291dGhXZXN0T2YodGhpcy50byk/IlNXLU5FIjoiTlctU0UifXNldERpcmVjdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSJO'@; put 'Vy1TRSI6W3RoaXMuZnJvbSx0aGlzLnRvXT1bdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKSx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKV07YnJlYWs7Y2FzZSJORS1TVyI6W3RoaXMuZnJvbSx0aGlzLnRvXT1bdGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCksdGhpcy5n'@; put 'ZXRPdXRlckJvdHRvbUxlZnRDb3JuZXIoKV07YnJlYWs7Y2FzZSJTRS1OVyI6W3RoaXMuZnJvbSx0aGlzLnRvXT1bdGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCksdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKV07YnJlYWs7Y2FzZSJTVy1ORSI6W3RoaXMuZnJvbSx0aGlzLnRv'@; put 'XT1bdGhpcy5nZXRPdXRlckJvdHRvbUxlZnRDb3JuZXIoKSx0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKV19fWdldFZlcnRpY2FsRGlyZWN0aW9uKCl7cmV0dXJuWyJORS1TVyIsIk5XLVNFIl0uaW5kZXhPZih0aGlzLmdldERpcmVjdGlvbigpKT4tMT8iTi1TIjoiUy1OIn1nZXRIb3Jp'@; put 'em9udGFsRGlyZWN0aW9uKCl7cmV0dXJuWyJOVy1TRSIsIlNXLU5FIl0uaW5kZXhPZih0aGlzLmdldERpcmVjdGlvbigpKT4tMT8iVy1FIjoiRS1XIn1nZXRJbmxpbmVEaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCk9PT0oWXAodGhpcyxaMik/IkUtVyI6'@; put 'IlctRSIpPyJzdGFydC1lbmQiOiJlbmQtc3RhcnQifWZsaXBEaXJlY3Rpb25WZXJ0aWNhbGx5KCl7c3dpdGNoKHRoaXMuZ2V0RGlyZWN0aW9uKCkpe2Nhc2UiTlctU0UiOnRoaXMuc2V0RGlyZWN0aW9uKCJTVy1ORSIpO2JyZWFrO2Nhc2UiTkUtU1ciOnRoaXMuc2V0RGlyZWN0aW9uKCJTRS1O'@; put 'VyIpO2JyZWFrO2Nhc2UiU0UtTlciOnRoaXMuc2V0RGlyZWN0aW9uKCJORS1TVyIpO2JyZWFrO2Nhc2UiU1ctTkUiOnRoaXMuc2V0RGlyZWN0aW9uKCJOVy1TRSIpfX1mbGlwRGlyZWN0aW9uSG9yaXpvbnRhbGx5KCl7c3dpdGNoKHRoaXMuZ2V0RGlyZWN0aW9uKCkpe2Nhc2UiTlctU0UiOnRo'@; put 'aXMuc2V0RGlyZWN0aW9uKCJORS1TVyIpO2JyZWFrO2Nhc2UiTkUtU1ciOnRoaXMuc2V0RGlyZWN0aW9uKCJOVy1TRSIpO2JyZWFrO2Nhc2UiU0UtTlciOnRoaXMuc2V0RGlyZWN0aW9uKCJTVy1ORSIpO2JyZWFrO2Nhc2UiU1ctTkUiOnRoaXMuc2V0RGlyZWN0aW9uKCJTRS1OVyIpfX1nZXRU'@; put 'b3BTdGFydENvcm5lcigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmZyb20ucm93KSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy50by5yb3cpKSxNYXRoLm1pbihacih0aGlzLHpyLEdyKS5jYWxsKHRo'@; put 'aXMsdGhpcy5mcm9tLmNvbCksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMudG8uY29sKSkpLm5vcm1hbGl6ZSgpfWdldFRvcExlZnRDb3JuZXIoKXtyZXR1cm4gWXAodGhpcyxaMik/dGhpcy5nZXRUb3BFbmRDb3JuZXIoKTp0aGlzLmdldFRvcFN0YXJ0Q29ybmVyKCl9Z2V0Qm90dG9t'@; put 'RW5kQ29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLE1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0'@; put 'aGlzLmZyb20uY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy50by5jb2wpKSkubm9ybWFsaXplKCl9Z2V0Qm90dG9tUmlnaHRDb3JuZXIoKXtyZXR1cm4gWXAodGhpcyxaMik/dGhpcy5nZXRCb3R0b21TdGFydENvcm5lcigpOnRoaXMuZ2V0Qm90dG9tRW5kQ29ybmVyKCl9Z2V0'@; put 'VG9wRW5kQ29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLE1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhp'@; put 'cyx0aGlzLmZyb20uY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy50by5jb2wpKSkubm9ybWFsaXplKCl9Z2V0VG9wUmlnaHRDb3JuZXIoKXtyZXR1cm4gWXAodGhpcyxaMik/dGhpcy5nZXRUb3BTdGFydENvcm5lcigpOnRoaXMuZ2V0VG9wRW5kQ29ybmVyKCl9Z2V0Qm90dG9t'@; put 'U3RhcnRDb3JuZXIoKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1heChacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy5mcm9tLnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMudG8ucm93KSksTWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlz'@; put 'LHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpKS5ub3JtYWxpemUoKX1nZXRCb3R0b21MZWZ0Q29ybmVyKCl7cmV0dXJuIFlwKHRoaXMsWjIpP3RoaXMuZ2V0Qm90dG9tRW5kQ29ybmVyKCk6dGhpcy5nZXRCb3R0b21TdGFydENvcm5lcigpfWdl'@; put 'dE91dGVyVG9wU3RhcnRDb3JuZXIoKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbihacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy5mcm9tLnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMudG8ucm93KSksTWF0aC5taW4oWnIodGhpcyx6cixHciku'@; put 'Y2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpKX1nZXRPdXRlclRvcExlZnRDb3JuZXIoKXtyZXR1cm4gWXAodGhpcyxaMik/dGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpOnRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigp'@; put 'fWdldE91dGVyQm90dG9tRW5kQ29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLE1hdGgubWF4KFpyKHRoaXMsenIs'@; put 'R3IpLmNhbGwodGhpcyx0aGlzLmZyb20uY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy50by5jb2wpKSl9Z2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpe3JldHVybiBZcCh0aGlzLFoyKT90aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKTp0aGlzLmdldE91dGVyQm90'@; put 'dG9tRW5kQ29ybmVyKCl9Z2V0T3V0ZXJUb3BFbmRDb3JuZXIoKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbihacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy5mcm9tLnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMudG8ucm93KSksTWF0aC5tYXgo'@; put 'WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpKX1nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCl7cmV0dXJuIFlwKHRoaXMsWjIpP3RoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpOnRoaXMuZ2V0T3V0'@; put 'ZXJUb3BFbmRDb3JuZXIoKX1nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLE1h'@; put 'dGgubWluKFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmZyb20uY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdGhpcy50by5jb2wpKSl9Z2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCl7cmV0dXJuIFlwKHRoaXMsWjIpP3RoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTp0'@; put 'aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKX1pc0Nvcm5lcihlKXtyZXR1cm4gZS5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCkpfHxlLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkpfHxlLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbUxl'@; put 'ZnRDb3JuZXIoKSl8fGUuaXNFcXVhbCh0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKSl9Z2V0T3Bwb3NpdGVDb3JuZXIoZSl7aWYoZSBpbnN0YW5jZW9mIHRZKXtpZihlLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpKSlyZXR1cm4gdGhpcy5nZXRPdXRlclRv'@; put 'cFN0YXJ0Q29ybmVyKCk7aWYoZS5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpKSlyZXR1cm4gdGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpO2lmKGUuaXNFcXVhbCh0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCkpKXJldHVybiB0aGlzLmdldE91dGVyQm90dG9t'@; put 'U3RhcnRDb3JuZXIoKTtpZihlLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkpKXJldHVybiB0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCl9fWdldEJvcmRlcnNTaGFyZWRXaXRoKGUpe2lmKCF0aGlzLmluY2x1ZGVzUmFuZ2UoZSkpcmV0dXJuW107Y29uc3QgdF90'@; put 'b3A9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5yb3cpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLnJvdykpLHRfYm90dG9tPU1hdGgubWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLmZyb20ucm93KSxacih0aGlzLHpyLEdyKS5j'@; put 'YWxsKHRoaXMsdGhpcy50by5yb3cpKSx0X2xlZnQ9TWF0aC5taW4oWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMuZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpLHRfcmlnaHQ9TWF0aC5tYXgoWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHRoaXMu'@; put 'ZnJvbS5jb2wpLFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0aGlzLnRvLmNvbCkpLHJfdG9wPU1hdGgubWluKFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLmZyb20ucm93KSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS50by5yb3cpKSxyX2JvdHRvbT1NYXRoLm1heChacih0aGlzLHpy'@; put 'LEdyKS5jYWxsKHRoaXMsZS5mcm9tLnJvdyksWnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUudG8ucm93KSkscl9sZWZ0PU1hdGgubWluKFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLmZyb20uY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS50by5jb2wpKSxyX3JpZ2h0PU1hdGgu'@; put 'bWF4KFpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLmZyb20uY29sKSxacih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS50by5jb2wpKSxpPVtdO3JldHVybiB0X3RvcD09PXJfdG9wJiZpLnB1c2goInRvcCIpLHRfcmlnaHQ9PT1yX3JpZ2h0JiZpLnB1c2goWXAodGhpcyxaMik/ImxlZnQiOiJy'@; put 'aWdodCIpLHRfYm90dG9tPT09cl9ib3R0b20mJmkucHVzaCgiYm90dG9tIiksdF9sZWZ0PT09cl9sZWZ0JiZpLnB1c2goWXAodGhpcyxaMik/InJpZ2h0IjoibGVmdCIpLGl9Z2V0SW5uZXIoKXtjb25zdCBlPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHQ9dGhpcy5nZXRPdXRlckJv'@; put 'dHRvbUVuZENvcm5lcigpLHI9W107aWYobnVsbD09PWUucm93fHxudWxsPT09ZS5jb2x8fG51bGw9PT10LnJvd3x8bnVsbD09PXQuY29sKXJldHVybiByO2NvbnN0IGk9WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLGUucm93KSxvPVpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLmNvbCksYT1a'@; put 'cih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdC5yb3cpLGw9WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHQuY29sKTtmb3IobGV0IHU9aTt1PD1hO3UrKylmb3IobGV0IGc9bztnPD1sO2crKykodGhpcy5mcm9tLnJvdyE9PXV8fHRoaXMuZnJvbS5jb2whPT1nKSYmKHRoaXMudG8ucm93IT09dXx8'@; put 'dGhpcy50by5jb2whPT1nKSYmci5wdXNoKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHModSxnKSk7cmV0dXJuIHJ9Z2V0QWxsKCl7Y29uc3QgZT10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSx0PXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKSxyPVtdO2lmKG51bGw9PT1lLnJvd3x8'@; put 'bnVsbD09PWUuY29sfHxudWxsPT09dC5yb3d8fG51bGw9PT10LmNvbClyZXR1cm4gcjtjb25zdCBpPVpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxlLnJvdyksbz1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsZS5jb2wpLGE9WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHQucm93KSxsPVpyKHRo'@; put 'aXMsenIsR3IpLmNhbGwodGhpcyx0LmNvbCk7Zm9yKGxldCB1PWk7dTw9YTt1KyspZm9yKGxldCBnPW87Zzw9bDtnKyspci5wdXNoKGk9PT11JiZvPT09Zz9lOmE9PT11JiZsPT09Zz90OnRoaXMuX2NyZWF0ZUNlbGxDb29yZHModSxnKSk7cmV0dXJuIHJ9Zm9yQWxsKGUpe2NvbnN0IHQ9dGhp'@; put 'cy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkscj10aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk7aWYobnVsbD09PXQucm93fHxudWxsPT09dC5jb2x8fG51bGw9PT1yLnJvd3x8bnVsbD09PXIuY29sKXJldHVybjtjb25zdCBpPVpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyx0LnJvdyks'@; put 'bz1acih0aGlzLHpyLEdyKS5jYWxsKHRoaXMsdC5jb2wpLGE9WnIodGhpcyx6cixHcikuY2FsbCh0aGlzLHIucm93KSxsPVpyKHRoaXMsenIsR3IpLmNhbGwodGhpcyxyLmNvbCk7Zm9yKGxldCB1PWk7dTw9YTt1KyspZm9yKGxldCBnPW87Zzw9bDtnKyspaWYoITE9PT1lKHUsZykpcmV0dXJu'@; put 'fWNsb25lKCl7cmV0dXJuIG5ldyBnbGUodGhpcy5oaWdobGlnaHQsdGhpcy5mcm9tLHRoaXMudG8sWXAodGhpcyxaMikpfXRvT2JqZWN0KCl7cmV0dXJue2Zyb206dGhpcy5mcm9tLnRvT2JqZWN0KCksdG86dGhpcy50by50b09iamVjdCgpfX1fY3JlYXRlQ2VsbENvb3JkcyhlLHQpe3JldHVy'@; put 'biBuZXcgdFkoZT8/dm9pZCAwLHQ/P3ZvaWQgMCxZcCh0aGlzLFoyKSl9Y29uc3RydWN0b3IoZSx0PWUscj1lLGk9ITEpeyhmdW5jdGlvbiBxeHQobixlKXtva2UobixlKSxlLmFkZChuKX0pKHRoaXMsenIpLGZ1bmN0aW9uICR4dChuLGUsdCl7b2tlKG4sZSksZS5zZXQobix0KX0odGhpcyxa'@; put 'Mix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksc2tlKHRoaXMsWjIsITEpLHRoaXMuaGlnaGxpZ2h0PWUuY2xvbmUoKSx0aGlzLmZyb209dC5jbG9uZSgpLHRoaXMudG89ci5jbG9uZSgpLHNrZSh0aGlzLFoyLGkpfX1mdW5jdGlvbiBHcihuKXtyZXR1cm4gbj8/MH1jb25zdCBuWT1nbGU7'@; put 'Y2xhc3MgbWxle2dldCBldmVudE1hbmFnZXIoKXtyZXR1cm4gbmV3IFcyKHRoaXMpfWdldCByb290RG9jdW1lbnQoKXtyZXR1cm4gdGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnR9Z2V0IHJvb3RXaW5kb3coKXtyZXR1cm4gdGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93fWdldFNldHRp'@; put 'bmcoZSwuLi50KXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoZSwuLi50KX11cGRhdGUoZSx0KXt0aGlzLnd0U2V0dGluZ3MudXBkYXRlKGUsdCl9ZmluZE9yaWdpbmFsSGVhZGVycygpe2NvbnN0IGU9W107aWYodGhpcy53dFRhYmxlLlRIRUFEJiZ0aGlzLnd0VGFibGUuVEhF'@; put 'QUQuY2hpbGROb2Rlcy5sZW5ndGgmJnRoaXMud3RUYWJsZS5USEVBRC5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXMubGVuZ3RoKXtmb3IobGV0IHQ9MCxyPXRoaXMud3RUYWJsZS5USEVBRC5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXMubGVuZ3RoO3Q8cjt0KyspZS5wdXNoKHRoaXMud3RUYWJs'@; put 'ZS5USEVBRC5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbdF0uaW5uZXJIVE1MKTt0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aHx8dGhpcy53dFNldHRpbmdzLnVwZGF0ZSgiY29sdW1uSGVhZGVycyIsW2Z1bmN0aW9uKHQscil7eTcocixlW3RdKX1d'@; put 'KX19Y3JlYXRlQ2VsbENvb3JkcyhlLHQpe3JldHVybiBuZXcgdFkoZSx0LHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIikpfWNyZWF0ZUNlbGxSYW5nZShlLHQscil7cmV0dXJuIG5ldyBuWShlLHQscix0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicnRsTW9kZSIpKX1k'@; put 'cmF3KGU9ITEpe3JldHVybiB0aGlzLmRyYXdJbnRlcnJ1cHRlZD0hMSwhdGhpcy53dFRhYmxlLmlzVmlzaWJsZSgpfHxReGUodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSk/dGhpcy5kcmF3SW50ZXJydXB0ZWQ9ITA6dGhpcy53dFRhYmxlLmRyYXcoZSksdGhpc31nZXRD'@; put 'ZWxsKGUsdD0hMSl7aWYobnVsbD09PWUucm93fHxudWxsPT09ZS5jb2wpcmV0dXJuO2lmKCF0KXJldHVybiB0aGlzLnd0VGFibGUuZ2V0Q2VsbChlKTtjb25zdCByPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKSxpPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJm'@; put 'aXhlZFJvd3NUb3AiKSxvPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxhPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO3JldHVybiBlLnJvdzxpJiZlLmNvbDxhP3RoaXMud3RPdmVybGF5cy50b3BJbmxpbmVTdGFy'@; put 'dENvcm5lck92ZXJsYXkuY2xvbmU/Lnd0VGFibGUuZ2V0Q2VsbChlKTplLnJvdzxpP3RoaXMud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lPy53dFRhYmxlLmdldENlbGwoZSk6ZS5jb2w8YSYmZS5yb3c+PXItbz90aGlzLnd0T3ZlcmxheXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVy'@; put 'bGF5Py5jbG9uZT8ud3RUYWJsZS5nZXRDZWxsKGUpOmUuY29sPGE/dGhpcy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZT8ud3RUYWJsZS5nZXRDZWxsKGUpOmUucm93PHImJmUucm93Pj1yLW8/dGhpcy53dE92ZXJsYXlzLmJvdHRvbU92ZXJsYXk/LmNsb25lPy53dFRhYmxl'@; put 'LmdldENlbGwoZSk6dGhpcy53dFRhYmxlLmdldENlbGwoZSl9c2Nyb2xsVmlld3BvcnQoZSx0LHIpe3JldHVybiBudWxsIT09ZS5yb3cmJm51bGwhPT1lLmNvbCYmdGhpcy53dFNjcm9sbC5zY3JvbGxWaWV3cG9ydChlLHQscil9c2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkoZSx0KXtyZXR1'@; put 'cm4gdGhpcy53dFNjcm9sbC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShlLHQpfXNjcm9sbFZpZXdwb3J0VmVydGljYWxseShlLHQpe3JldHVybiB0aGlzLnd0U2Nyb2xsLnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShlLHQpfWdldFZpZXdwb3J0KCl7cmV0dXJuW3RoaXMud3RUYWJsZS5n'@; put 'ZXRGaXJzdFZpc2libGVSb3coKSx0aGlzLnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCksdGhpcy53dFRhYmxlLmdldExhc3RWaXNpYmxlUm93KCksdGhpcy53dFRhYmxlLmdldExhc3RWaXNpYmxlQ29sdW1uKCldfWdldE92ZXJsYXlCeU5hbWUoZSl7cmV0dXJuIG51bGx9ZXhwb3J0'@; put 'U2V0dGluZ3NBc0NsYXNzTmFtZXMoKXt9ZGVzdHJveSgpe3RoaXMud3RPdmVybGF5cy5kZXN0cm95KCksdGhpcy53dEV2ZW50LmRlc3Ryb3koKX1jcmVhdGVTY3JvbGxEYW8oKXtjb25zdCBlPXRoaXM7cmV0dXJue2dldCBkcmF3bigpe3JldHVybiBlLmRyYXdufSxnZXQgdG9wT3ZlcmxheSgp'@; put 'e3JldHVybiBlLnd0T3ZlcmxheXMudG9wT3ZlcmxheX0sZ2V0IGlubGluZVN0YXJ0T3ZlcmxheSgpe3JldHVybiBlLnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5fSxnZXQgd3RUYWJsZSgpe3JldHVybiBlLnd0VGFibGV9LGdldCB3dFZpZXdwb3J0KCl7cmV0dXJuIGUud3RWaWV3cG9y'@; put 'dH0sZ2V0IHd0U2V0dGluZ3MoKXtyZXR1cm4gZS53dFNldHRpbmdzfSxnZXQgcm9vdFdpbmRvdygpe3JldHVybiBlLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3d9LGdldCB0b3RhbFJvd3MoKXtyZXR1cm4gZS53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpfSxnZXQgdG90YWxDb2x1'@; put 'bW5zKCl7cmV0dXJuIGUud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKX0sZ2V0IGZpeGVkUm93c1RvcCgpe3JldHVybiBlLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIil9LGdldCBmaXhlZFJvd3NCb3R0b20oKXtyZXR1cm4gZS53dFNldHRpbmdzLmdl'@; put 'dFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpfSxnZXQgZml4ZWRDb2x1bW5zU3RhcnQoKXtyZXR1cm4gZS53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iil9fX1nZXRUYWJsZURhbygpe2NvbnN0IGU9dGhpcztyZXR1cm57Z2V0IHdvdCgpe3JldHVybiBlfSxnZXQg'@; put 'cGFyZW50VGFibGVPZmZzZXQoKXtyZXR1cm4gZS5jbG9uZVNvdXJjZS53dFRhYmxlLnRhYmxlT2Zmc2V0fSxnZXQgY2xvbmVTb3VyY2UoKXtyZXR1cm4gZS5jbG9uZVNvdXJjZX0sZ2V0IHdvcmtzcGFjZVdpZHRoKCl7cmV0dXJuIGUud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VXaWR0aCgpfSxn'@; put 'ZXQgd3RWaWV3cG9ydCgpe3JldHVybiBlLnd0Vmlld3BvcnR9LGdldCB3dE92ZXJsYXlzKCl7cmV0dXJuIGUud3RPdmVybGF5c30sZ2V0IHNlbGVjdGlvbk1hbmFnZXIoKXtyZXR1cm4gZS5zZWxlY3Rpb25NYW5hZ2VyfSxnZXQgZHJhd24oKXtyZXR1cm4gZS5kcmF3bn0sc2V0IGRyYXduKHQp'@; put 'e2UuZHJhd249dH0sZ2V0IHd0VGFibGUoKXtyZXR1cm4gZS53dFRhYmxlfSxnZXQgc3RhcnRDb2x1bW5SZW5kZXJlZCgpe3JldHVybiBlLnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3I/LnN0YXJ0Q29sdW1uPz9udWxsfSxnZXQgc3RhcnRDb2x1bW5WaXNpYmxlKCl7cmV0dXJu'@; put 'IGUud3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I/LnN0YXJ0Q29sdW1uPz9udWxsfSxnZXQgc3RhcnRDb2x1bW5QYXJ0aWFsbHlWaXNpYmxlKCl7cmV0dXJuIGUud3RWaWV3cG9ydC5jb2x1bW5zUGFydGlhbGx5VmlzaWJsZUNhbGN1bGF0b3I/LnN0YXJ0Q29sdW1uPz9udWxs'@; put 'fSxnZXQgZW5kQ29sdW1uUmVuZGVyZWQoKXtyZXR1cm4gZS53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yPy5lbmRDb2x1bW4/P251bGx9LGdldCBlbmRDb2x1bW5WaXNpYmxlKCl7cmV0dXJuIGUud3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I/LmVuZENvbHVt'@; put 'bj8/bnVsbH0sZ2V0IGVuZENvbHVtblBhcnRpYWxseVZpc2libGUoKXtyZXR1cm4gZS53dFZpZXdwb3J0LmNvbHVtbnNQYXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvcj8uZW5kQ29sdW1uPz9udWxsfSxnZXQgY291bnRDb2x1bW5zUmVuZGVyZWQoKXtyZXR1cm4gZS53dFZpZXdwb3J0LmNvbHVt'@; put 'bnNSZW5kZXJDYWxjdWxhdG9yPy5jb3VudD8/MH0sZ2V0IGNvdW50Q29sdW1uc1Zpc2libGUoKXtyZXR1cm4gZS53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcj8uY291bnQ/PzB9LGdldCBzdGFydFJvd1JlbmRlcmVkKCl7cmV0dXJuIGUud3RWaWV3cG9ydC5yb3dzUmVuZGVy'@; put 'Q2FsY3VsYXRvcj8uc3RhcnRSb3c/P251bGx9LGdldCBzdGFydFJvd1Zpc2libGUoKXtyZXR1cm4gZS53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj8uc3RhcnRSb3c/P251bGx9LGdldCBzdGFydFJvd1BhcnRpYWxseVZpc2libGUoKXtyZXR1cm4gZS53dFZpZXdwb3J0LnJvd3NQ'@; put 'YXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvcj8uc3RhcnRSb3c/P251bGx9LGdldCBlbmRSb3dSZW5kZXJlZCgpe3JldHVybiBlLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/LmVuZFJvdz8/bnVsbH0sZ2V0IGVuZFJvd1Zpc2libGUoKXtyZXR1cm4gZS53dFZpZXdwb3J0LnJvd3NW'@; put 'aXNpYmxlQ2FsY3VsYXRvcj8uZW5kUm93Pz9udWxsfSxnZXQgZW5kUm93UGFydGlhbGx5VmlzaWJsZSgpe3JldHVybiBlLnd0Vmlld3BvcnQucm93c1BhcnRpYWxseVZpc2libGVDYWxjdWxhdG9yPy5lbmRSb3c/P251bGx9LGdldCBjb3VudFJvd3NSZW5kZXJlZCgpe3JldHVybiBlLnd0Vmll'@; put 'd3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/LmNvdW50Pz8wfSxnZXQgY291bnRSb3dzVmlzaWJsZSgpe3JldHVybiBlLnd0Vmlld3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yPy5jb3VudD8/MH0sZ2V0IGNvbHVtbkhlYWRlcnMoKXtyZXR1cm4gZS53dFNldHRpbmdzLmdldFNldHRpbmco'@; put 'ImNvbHVtbkhlYWRlcnMiKX0sZ2V0IHJvd0hlYWRlcnMoKXtyZXR1cm4gZS53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKX19fWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5ndWlkPWB3dF8ke1ZXKCl9YCx0aGlzLmRyYXdJbnRlcnJ1cHRlZD0hMSx0aGlzLmRyYXduPSExLHRoaXMu'@; put 'YWN0aXZlT3ZlcmxheU5hbWU9Im1hc3RlciIsdGhpcy5kb21CaW5kaW5ncz17cm9vdFRhYmxlOmUscm9vdERvY3VtZW50OmUub3duZXJEb2N1bWVudCxyb290V2luZG93OmUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld30sdGhpcy53dFNldHRpbmdzPXQsdGhpcy53dFNjcm9sbD1uZXcganh0'@; put 'KHRoaXMuY3JlYXRlU2Nyb2xsRGFvKCkpfX1jbGFzcyBLeHQgZXh0ZW5kcyBtbGV7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKGUsdCk7Y29uc3QgaT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZmFjYWRlIix0aGlzKTt0aGlzLmNsb25lU291cmNlPXIuc291cmNlLHRoaXMuY2xvbmVP'@; put 'dmVybGF5PXIub3ZlcmxheSx0aGlzLnd0VGFibGU9dGhpcy5jbG9uZU92ZXJsYXkuY3JlYXRlVGFibGUodGhpcy5nZXRUYWJsZURhbygpLGksdGhpcy5kb21CaW5kaW5ncyx0aGlzLnd0U2V0dGluZ3MpLHRoaXMud3RWaWV3cG9ydD1yLnZpZXdwb3J0LHRoaXMuc2VsZWN0aW9uTWFuYWdlcj1y'@; put 'LnNlbGVjdGlvbk1hbmFnZXIsdGhpcy53dEV2ZW50PW5ldyBHQWUoaSx0aGlzLmRvbUJpbmRpbmdzLHRoaXMud3RTZXR0aW5ncyx0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnd0VGFibGUsdGhpcy5zZWxlY3Rpb25NYW5hZ2VyLHIuZXZlbnQpLHRoaXMuZmluZE9yaWdpbmFsSGVhZGVycygpfX1j'@; put 'bGFzcyBUTHtoYXNSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKXtyZXR1cm4gdGhpcy5uZWVkRnVsbFJlbmRlciE9PXRoaXMuc2hvdWxkQmVSZW5kZXJlZCgpfXVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoZSl7ImJlZm9yZSI9PT1lJiZ0aGlzLnNob3VsZEJlUmVuZGVyZWQoKT90aGlzLm5lZWRGdWxs'@; put 'UmVuZGVyPSEwOiJhZnRlciI9PT1lJiYhdGhpcy5zaG91bGRCZVJlbmRlcmVkKCkmJih0aGlzLm5lZWRGdWxsUmVuZGVyPSExKX1zaG91bGRCZVJlbmRlcmVkKCl7cmV0dXJuITB9dXBkYXRlVHJpbW1pbmdDb250YWluZXIoKXt0aGlzLnRyaW1taW5nQ29udGFpbmVyPUhNKHRoaXMuaGlkZXIu'@; put 'cGFyZW50Tm9kZT8ucGFyZW50Tm9kZT8/dGhpcy5oaWRlcil9dXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCl7Y29uc3R7d3RUYWJsZTplfT10aGlzLndvdCx7cm9vdFdpbmRvdzp0fT10aGlzLmRvbUJpbmRpbmdzLHI9dC5nZXRDb21wdXRlZFN0eWxlKGUud3RSb290RWxlbWVudC5wYXJl'@; put 'bnROb2RlKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpLGk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO3RoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9ImhpZGRlbiI9PT1yfHwiY2xpcCI9PT1yP3RoaXMud290Lnd0VGFibGUuaG9sZGVy'@; put 'OiJob3Jpem9udGFsIj09PWkmJnRoaXMudHlwZT09PSR2fHwidmVydGljYWwiPT09aSYmdGhpcy50eXBlPT09cXY/dDptTChlLlRBQkxFKX1nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbihlLHQscil7aWYoIXRoaXMuY2xvbmV8fCExPT09dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5jb250YWlu'@; put 'cyhlKSlyZXR1cm4gdm9pZCBIYShgVGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgbm90IGEgY2hpbGQgb2YgdGhlICR7dGhpcy50eXBlfSBvdmVybGF5YCk7Y29uc3QgaT10aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LG89cjx0aGlz'@; put 'Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSxhPXQ8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLGw9dD49dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJm'@; put 'aXhlZFJvd3NCb3R0b20iKSx1PXRoaXMuY2xvbmUud3RUYWJsZS5zcHJlYWRlcixnPXtzdGFydDp0aGlzLmdldFJlbGF0aXZlU3RhcnRQb3NpdGlvbih1KSx0b3A6dS5vZmZzZXRUb3B9LEU9e3N0YXJ0OnRoaXMuZ2V0UmVsYXRpdmVTdGFydFBvc2l0aW9uKGUpLHRvcDplLm9mZnNldFRvcH07'@; put 'bGV0IE89bnVsbDtyZXR1cm4gTz1pP3RoaXMuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb25XaXRoaW5XaW5kb3coYSxvLEUsZyk6dGhpcy5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbkhvbGRlcihhLGwsbyxFLGcpLE99Z2V0UmVsYXRpdmVTdGFydFBvc2l0aW9uKGUpe3JldHVybiB0aGlz'@; put 'LmlzUnRsKCk/ZS5vZmZzZXRQYXJlbnQub2Zmc2V0V2lkdGgtZS5vZmZzZXRMZWZ0LWUub2Zmc2V0V2lkdGg6ZS5vZmZzZXRMZWZ0fWdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uV2l0aGluV2luZG93KGUsdCxyLGkpe2NvbnN0IG89dGhpcy53b3Qud3RUYWJsZS53dFJvb3RFbGVtZW50LmdldEJv'@; put 'dW5kaW5nQ2xpZW50UmVjdCgpLGE9dGhpcy53b3Qud3RPdmVybGF5cy5zY3JvbGxhYmxlRWxlbWVudCE9PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxsX2hvcml6b250YWw9YT90aGlzLndvdC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpOjAs'@; put 'bF92ZXJ0aWNhbD1hP3RoaXMud290Lnd0T3ZlcmxheXMudG9wT3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpOjA7bGV0IHU9MCxnPTA7aWYodCl7bGV0IEU9by5sZWZ0O3RoaXMuaXNSdGwoKSYmKEU9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LmlubmVyV2lkdGgtKG8ubGVmdCtvLndp'@; put 'ZHRoK0dkKCkpKSx1PUU8PTA/LTEqRTowfWVsc2UgdT1pLnN0YXJ0LWxfaG9yaXpvbnRhbDtyZXR1cm4gZz1lJiZ0aGlzLmNsb25lP3RoaXMuY2xvbmUud3RUYWJsZS5UQUJMRS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Atby50b3A6aS50b3AtbF92ZXJ0aWNhbCx7c3RhcnQ6ci5zdGFy'@; put 'dCt1LHRvcDpyLnRvcCtnfX1nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbkhvbGRlcihlLHQscixpLG8pe2NvbnN0IGFfaG9yaXpvbnRhbD10aGlzLndvdC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLGFfdmVydGljYWw9dGhpcy53b3Qud3RP'@; put 'dmVybGF5cy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCk7bGV0IGw9MCx1PTA7aWYocnx8KGw9YV9ob3Jpem9udGFsLW8uc3RhcnQpLHQmJnRoaXMuY2xvbmUpe2NvbnN0IGc9dGhpcy53b3Qud3RUYWJsZS53dFJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3U9LTEq'@; put 'dGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCtnLnRvcH1lbHNlIGV8fCh1PWFfdmVydGljYWwtby50b3ApO3JldHVybntzdGFydDppLnN0YXJ0LWwsdG9wOmkudG9wLXV9fW1ha2VDbG9uZSgpey0xPT09WEFlLmluZGV4T2YodGhpcy50eXBlKSYm'@; put 'SnIoYENsb25lIHR5cGUgIiR7dGhpcy50eXBlfSIgaXMgbm90IHN1cHBvcnRlZC5gKTtjb25zdHt3dFRhYmxlOmUsd3RTZXR0aW5nczp0fT10aGlzLndvdCx7cm9vdERvY3VtZW50OnIscm9vdFdpbmRvdzppfT10aGlzLmRvbUJpbmRpbmdzLG89ci5jcmVhdGVFbGVtZW50KCJkaXYiKSxhPXIu'@; put 'Y3JlYXRlRWxlbWVudCgidGFibGUiKSxsPWUud3RSb290RWxlbWVudC5wYXJlbnROb2RlO2x8fEpyKCJUaGUgV2Fsa29udGFibGUgcm9vdCBlbGVtZW50IGhhcyBubyBwYXJlbnQgbm9kZS4iKSxvLmNsYXNzTmFtZT1gJHtPeHQuZ2V0KHRoaXMudHlwZSl9IGhhbmRzb250YWJsZWAsby5zZXRB'@; put 'dHRyaWJ1dGUoImRpciIsdGhpcy5pc1J0bCgpPyJydGwiOiJsdHIiKSxvLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsby5zdHlsZS50b3A9IjAiLG8uc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHRoaXMuaXNSdGwoKT9vLnN0eWxlLnJpZ2h0PSIwIjpvLnN0eWxlLmxlZnQ9IjAiLHQuZ2V0'@; put 'U2V0dGluZygiYXJpYVRhZ3MiKSYmS28obyxbWyJyb2xlIiwicHJlc2VudGF0aW9uIl1dKSxhLmNsYXNzTmFtZT1lLlRBQkxFLmNsYXNzTmFtZTtjb25zdCB1PWUuVEFCTEUuZ2V0QXR0cmlidXRlKCJyb2xlIik7dSYmYS5zZXRBdHRyaWJ1dGUoInJvbGUiLHUpLG8uYXBwZW5kQ2hpbGQoYSks'@; put 'bC5hcHBlbmRDaGlsZChvKTtjb25zdCBnPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxFPWkuZ2V0Q29tcHV0ZWRTdHlsZShsKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpO3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PSJo'@; put 'aWRkZW4iPT09RXx8ImNsaXAiPT09RT9lLmhvbGRlcjoiaG9yaXpvbnRhbCI9PT1nJiZ0aGlzLnR5cGU9PT0kdnx8InZlcnRpY2FsIj09PWcmJnRoaXMudHlwZT09PXF2P2k6bUwoZS5UQUJMRSksbmV3IEt4dChhLHRoaXMud3RTZXR0aW5ncyx7c291cmNlOnRoaXMud290LG92ZXJsYXk6dGhp'@; put 'cyx2aWV3cG9ydDp0aGlzLndvdC53dFZpZXdwb3J0LGV2ZW50OnRoaXMud290Lnd0RXZlbnQsc2VsZWN0aW9uTWFuYWdlcjp0aGlzLndvdC5zZWxlY3Rpb25NYW5hZ2VyfSl9cmVmcmVzaChlPSExKXtpZih0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmNsb25lKXtjb25zdCB0PXRoaXMuY2xv'@; put 'bmUuY2xvbmVTb3VyY2U7dC5hY3RpdmVPdmVybGF5TmFtZT10aGlzLmNsb25lLnd0VGFibGUubmFtZSx0aGlzLmNsb25lLmRyYXcoZSksdC5hY3RpdmVPdmVybGF5TmFtZT0ibWFzdGVyIn19cmVzZXQoKXtpZighdGhpcy5jbG9uZSlyZXR1cm47Y29uc3QgZT10aGlzLmNsb25lLnd0VGFibGUu'@; put 'aG9sZGVyO1tlLnN0eWxlLHRoaXMuY2xvbmUud3RUYWJsZS5oaWRlci5zdHlsZSxlLnBhcmVudE5vZGUuc3R5bGVdLmZvckVhY2goYT0+e2Eud2lkdGg9IiIsYS5oZWlnaHQ9IiJ9KX1pc1J0bCgpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicnRsTW9kZSIpfWRlc3Ryb3ko'@; put 'KXt0aGlzLmNsb25lPy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfWNvbnN0cnVjdG9yKGUsdCxyLGksbyl7SzUodGhpcywid290IixlLHt3cml0YWJsZTohMX0pLHRoaXMuZG9tQmluZGluZ3M9byx0aGlzLmZhY2FkZUdldHRlcj10LHRoaXMud3RTZXR0aW5ncz1pO2NvbnN0e1RBQkxFOmEsaGlk'@; put 'ZXI6bCxzcHJlYWRlcjp1LGhvbGRlcjpnLHd0Um9vdEVsZW1lbnQ6RX09dGhpcy53b3Qud3RUYWJsZTt0aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMudHlwZT1yLHRoaXMuVEFCTEU9YSx0aGlzLmhpZGVyPWwsdGhpcy5zcHJlYWRlcj11LHRoaXMuaG9sZGVyPWcsdGhpcy53dFJvb3RFbGVt'@; put 'ZW50PUUsdGhpcy50cmltbWluZ0NvbnRhaW5lcj1ITSh0aGlzLmhpZGVyLnBhcmVudE5vZGU/LnBhcmVudE5vZGU/P3RoaXMuaGlkZXIpLHRoaXMubmVlZEZ1bGxSZW5kZXI9dGhpcy5zaG91bGRCZVJlbmRlcmVkKCksdGhpcy5jbG9uZT10aGlzLm1ha2VDbG9uZSgpfX1jb25zdCB2bGU9bj0+'@; put 'e2NvbnN0IGU9bi53dFNldHRpbmdzLmdldFNldHRpbmcoInN0eWxlc0hhbmRsZXIiKSx0PWUuZ2V0Q1NTVmFyaWFibGVWYWx1ZSgiY2VsbC1hdXRvZmlsbC1zaXplIikscj1lLmdldENTU1ZhcmlhYmxlVmFsdWUoImNlbGwtYXV0b2ZpbGwtYm9yZGVyLXdpZHRoIiksaT1lLmdldENTU1Zhcmlh'@; put 'YmxlVmFsdWUoImNlbGwtYXV0b2ZpbGwtYm9yZGVyLWNvbG9yIik7cmV0dXJuIE9iamVjdC5mcmVlemUoe3dpZHRoOnQsaGVpZ2h0OnQsYm9yZGVyV2lkdGg6cixib3JkZXJTdHlsZToic29saWQiLGJvcmRlckNvbG9yOml9KX07Y2xhc3MgWHh0IGV4dGVuZHMgVEx7Y3JlYXRlVGFibGUoLi4u'@; put 'ZSl7cmV0dXJuIG5ldyBIeHQoLi4uZSl9c2hvdWxkQmVSZW5kZXJlZCgpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVyVG9wT3ZlcmxheSIpfXJlc2V0Rml4ZWRQb3NpdGlvbigpe2lmKCEodGhpcy5uZWVkRnVsbFJlbmRlciYmdGhpcy5zaG91bGRCZVJl'@; put 'bmRlcmVkKCkmJnRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUmJnRoaXMuY2xvbmUpKXJldHVybiExO2NvbnN0IGU9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLHtyb290V2luZG93OnR9PXRoaXMuZG9tQmluZGluZ3Mscj10aGlzLnd0U2V0dGluZ3MuZ2V0'@; put 'U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7bGV0IGk9MCxvPSExO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXIhPT10fHxyJiYidmVydGljYWwiPT09cilpPXRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKSxfTChlKTtlbHNle2NvbnN0e3d0VGFibGU6bH09dGhpcy53b3QsdT1sLmhpZGVyLmdl'@; put 'dEJvdW5kaW5nQ2xpZW50UmVjdCgpO289TWF0aC5jZWlsKHUuYm90dG9tKT09PWUub2Zmc2V0SGVpZ2h0LGk9dGhpcy5nZXRPdmVybGF5T2Zmc2V0KCksVVcoZSwiMHB4IixgJHtpfXB4YCl9Y29uc3QgYT10aGlzLmFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbihpLG8pO3JldHVybiB0aGlz'@; put 'LmFkanVzdEVsZW1lbnRzU2l6ZSgpLGF9c2V0U2Nyb2xsUG9zaXRpb24oZSl7Y29uc3R7cm9vdFdpbmRvdzp0fT10aGlzLmRvbUJpbmRpbmdzLHI9dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCxpPXIsbz0oKT0+cj09PXQ/dC5zY3JvbGxZOmkuc2Nyb2xsVG9wLGw9bygpO2xldCB1'@; put 'PSExO3JldHVybiBlIT09bCYmKGc9ZSxyPT09dD90LnNjcm9sbFRvKHQuc2Nyb2xsWCxnKTppLnNjcm9sbFRvcD1nLHU9bCE9PW8oKSksdTt2YXIgZ31vblNjcm9sbCgpe3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbEhvcml6b250YWxseSIpfXN1bUNlbGxTaXplcyhlLHQp'@; put 'e2NvbnN0IGk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInN0eWxlc0hhbmRsZXIiKS5nZXREZWZhdWx0Um93SGVpZ2h0KCk7bGV0IG89ZSxhPTA7Zm9yKDtvPHQ7KXtjb25zdCBsPXRoaXMud290Lnd0VGFibGUuZ2V0Um93SGVpZ2h0KG8pO2ErPXZvaWQgMD09PWw/aTpsLG8rPTF9cmV0'@; put 'dXJuIGF9YWRqdXN0RWxlbWVudHNTaXplKCl7dGhpcy51cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpLHRoaXMubmVlZEZ1bGxSZW5kZXImJih0aGlzLmFkanVzdFJvb3RFbGVtZW50U2l6ZSgpLHRoaXMuYWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpKX1hZGp1c3RSb290RWxlbWVudFNpemUoKXtp'@; put 'ZighdGhpcy5jbG9uZSlyZXR1cm47Y29uc3R7d3RUYWJsZTplLHd0Vmlld3BvcnQ6dH09dGhpcy53b3Qse3Jvb3REb2N1bWVudDpyLHJvb3RXaW5kb3c6aX09dGhpcy5kb21CaW5kaW5ncyxhPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZS5zdHlsZSxsPXRoaXMud3RTZXR0'@; put 'aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09aXx8Imhvcml6b250YWwiPT09bCl7bGV0IGc9dC5nZXRXb3Jrc3BhY2VXaWR0aCgpO3QuaGFzVmVydGljYWxTY3JvbGwoKSYmKGctPUdkKHIpKSxnPU1hdGgubWluKGcsZS53dFJv'@; put 'b3RFbGVtZW50LnNjcm9sbFdpZHRoKSxhLndpZHRoPWAke2d9cHhgfWVsc2UgYS53aWR0aD0iIjt0aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnN0eWxlLndpZHRoPWEud2lkdGg7bGV0IHU9SGgodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKTtlLmhhc0RlZmluZWRTaXplKCl8fCh1PTApLGEu'@; put 'aGVpZ2h0PWAke3V9cHhgfWFkanVzdFJvb3RDaGlsZHJlblNpemUoKXtpZighdGhpcy5jbG9uZSlyZXR1cm47Y29uc3R7aG9sZGVyOmV9PXRoaXMuY2xvbmUud3RUYWJsZSx0PXZsZSh0aGlzLndvdCkscj10aGlzLndvdC5zZWxlY3Rpb25NYW5hZ2VyLmdldEZvY3VzU2VsZWN0aW9uKCk/cGFy'@; put 'c2VJbnQodC5oZWlnaHQsMTApLzI6MDt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUud2lkdGg9dGhpcy5oaWRlci5zdHlsZS53aWR0aDtjb25zdCBpPWUucGFyZW50Tm9kZTtlLnN0eWxlLndpZHRoPWkuc3R5bGUud2lkdGgsZS5zdHlsZS5oZWlnaHQ9YCR7cGFyc2VJbnQoaS5zdHls'@; put 'ZS5oZWlnaHQsMTApK3J9cHhgfWFwcGx5VG9ET00oKXtjb25zdCBlPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8/MDsibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/LnN0YXJ0UG9zaXRpb24/dGhpcy5zcHJl'@; put 'YWRlci5zdHlsZS50b3A9YCR7dGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9ufXB4YDowPT09ZT90aGlzLnNwcmVhZGVyLnN0eWxlLnRvcD0iMCI6SnIoIkluY29ycmVjdCB2YWx1ZSBvZiB0aGUgcm93c1JlbmRlckNhbGN1bGF0b3IiKSx0aGlz'@; put 'LnNwcmVhZGVyLnN0eWxlLmJvdHRvbT0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9c3luY092ZXJsYXlPZmZzZXQoKXtpZighdGhpcy5jbG9uZSlyZXR1cm47Y29uc3QgZT10aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVmdCIse3NwcmVhZGVyOnR9PXRo'@; put 'aXMuY2xvbmUud3RUYWJsZTt0LnN0eWxlW2VdPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcj8uc3RhcnRQb3NpdGlvbj9gJHt0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb259'@; put 'cHhgOiIifXNjcm9sbFRvKGUsdCl7Y29uc3R7d290OnIsd3RTZXR0aW5nczppfT10aGlzLGE9KHIuY2xvbmVTb3VyY2U/ci5jbG9uZVNvdXJjZTpyKS53dFRhYmxlLmhvbGRlcixsPWkuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLGc9MD09PWkuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9w'@; put 'IikmJmwubGVuZ3RoPjAmJiFMYShhLnBhcmVudE5vZGUsImlubmVyQm9yZGVyVG9wIik/MTowO2xldCBFPXRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSxPPTA7aWYodCYmKHRoaXMud290Lnd0VGFibGUuZ2V0Um93SGVpZ2h0KGUpPz8wKT50aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdw'@; put 'b3J0SGVpZ2h0KCkmJih0PSExKSx0JiZhLm9mZnNldEhlaWdodCE9PWEuY2xpZW50SGVpZ2h0JiYoTz1HZCh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLHQpe2NvbnN0IFo9aS5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxlZT1pLmdldFNldHRpbmcoInRvdGFsUm93cyIp'@; put 'O0UrPXRoaXMuc3VtQ2VsbFNpemVzKDAsZSsxKSxFLT1yLnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRIZWlnaHQoKS10aGlzLnN1bUNlbGxTaXplcyhlZS1aLGVlKSxFKz0xLEUrPWd9ZWxzZSBFKz10aGlzLnN1bUNlbGxTaXplcyhpLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLGUpO3JldHVy'@; put 'biBFKz1PLHRBZSh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50KT09PUUtZyYmZz4wJiZ0aGlzLndvdC53dE92ZXJsYXlzLmV4cGFuZEhpZGVyVmVydGljYWxseUJ5KGcpLHRoaXMuc2V0U2Nyb2xsUG9zaXRpb24oRSl9Z2V0VGFibGVQYXJlbnRPZmZzZXQoKXtyZXR1cm4gdGhpcy5t'@; put 'YWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdz90aGlzLndvdC53dFRhYmxlLmhvbGRlck9mZnNldC50b3A6MH1nZXRTY3JvbGxQb3NpdGlvbigpe3JldHVybiBqVyh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmlu'@; put 'ZGluZ3Mucm9vdFdpbmRvdyl9Z2V0T3ZlcmxheU9mZnNldCgpe2NvbnN0e3Jvb3RXaW5kb3c6ZX09dGhpcy5kb21CaW5kaW5ncyx0PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtsZXQgcj0wO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXI9PT1lJiYoIXR8'@; put 'fCJ2ZXJ0aWNhbCIhPT10KSl7Y29uc3QgYT10aGlzLndvdC53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCktKHRoaXMuY2xvbmU/dGhpcy5jbG9uZS53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCk6MCk7cj1NYXRoLm1heCh0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktdGhpcy5nZXRUYWJsZVBhcmVu'@; put 'dE9mZnNldCgpLDApLHI+YSYmKHI9MCl9cmV0dXJuIHJ9YWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0aW9uKGUsdD0hMSl7Y29uc3R7d3RTZXR0aW5nczpyfT10aGlzLGk9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxvPXIuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIik/PzAs'@; put 'YT0iaG9yaXpvbnRhbCI9PT1yLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO28/a28oaSwiZW1wdHlDb2x1bW5zIik6WXIoaSwiZW1wdHlDb2x1bW5zIik7bGV0IGw9ITE7aWYoIXQmJiFhKXtjb25zdCB1PXIuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksZz10aGlzLmNhY2hlZEZp'@; put 'eGVkUm93c1RvcCE9PXUsRT1yLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKTtpZigoZ3x8MD09PXUpJiZFLmxlbmd0aD4wKXtjb25zdCBPPUxhKGksImlubmVyQm9yZGVyVG9wIik7dGhpcy5jYWNoZWRGaXhlZFJvd3NUb3A9ci5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSxlfHwwPT09'@; put 'ci5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8oWXIoaSwiaW5uZXJCb3JkZXJUb3AiKSxsPSFPKTooa28oaSwiaW5uZXJCb3JkZXJUb3AiKSxsPU8pfX1yZXR1cm4gbH1jb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcihlLHQsJHYscixpKSx0aGlzLmNhY2hlZEZpeGVkUm93c1RvcD0tMSx0aGlz'@; put 'LmNhY2hlZEZpeGVkUm93c1RvcD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIil9fWNvbnN0IGxrZT17Z2V0Rmlyc3RSZW5kZXJlZFJvdygpe2NvbnN0IG49dGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpO3JldHVybiAwPT09bj8tMToodGhpcy53dFNldHRpbmdz'@; put 'LmdldFNldHRpbmcoInRvdGFsUm93cyIpPz8wKS1ufSxnZXRGaXJzdFZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCl9LGdldEZpcnN0UGFydGlhbGx5VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKX0sZ2V0TGFzdFJlbmRl'@; put 'cmVkUm93KCl7cmV0dXJuIDA9PT10aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCk/LTE6KHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8/MCktMX0sZ2V0TGFzdFZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0TGFzdFBhcnRp'@; put 'YWxseVZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0UmVuZGVyZWRSb3dzQ291bnQoKXtyZXR1cm4gTWF0aC5taW4odGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpPz8wLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhl'@; put 'ZFJvd3NCb3R0b20iKSl9LGdldFZpc2libGVSb3dzQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpfSxnZXRDb2x1bW5IZWFkZXJzQ291bnQ6KCk9PjB9O0s1KGxrZSwiTUlYSU5fTkFNRSIsInN0aWNreVJvd3NCb3R0b20iLHt3cml0YWJsZTohMSxlbnVtZXJhYmxl'@; put 'OiExfSk7Y29uc3QgY2tlPWxrZTtjbGFzcyBfbGUgZXh0ZW5kcyBLTXtjb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcihlLHQscixpLHQ2KX19WWwoX2xlLGNrZSksWWwoX2xlLHVsZSk7Y29uc3QgSnh0PV9sZTtjbGFzcyBlQXQgZXh0ZW5kcyBUTHtjcmVhdGVUYWJsZSguLi5lKXtyZXR1cm4g'@; put 'bmV3IEp4dCguLi5lKX1zaG91bGRCZVJlbmRlcmVkKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5Iil9cmVzZXRGaXhlZFBvc2l0aW9uKCl7aWYoISh0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnNob3VsZEJlUmVuZGVyZWQo'@; put 'KSYmdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSYmdGhpcy5jbG9uZSkpcmV0dXJuITE7Y29uc3R7cm9vdFdpbmRvdzplfT10aGlzLmRvbUJpbmRpbmdzLHQ9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlO3Quc3R5bGUudG9wPSIiO2xldCByPTA7Y29uc3Qg'@; put 'aT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWV8fGkmJiJ2ZXJ0aWNhbCI9PT1pKXI9dGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLHRoaXMucmVwb3NpdGlvbk92ZXJsYXkoKTtlbHNle3I9dGhpcy5nZXRP'@; put 'dmVybGF5T2Zmc2V0KCk7Y29uc3QgYT10aGlzLndvdC53dFRhYmxlLlRBQkxFLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdT1NYXRoLm1heCgwLGEuYm90dG9tLWwuYm90dG9tKTt0LnN0eWxlLmJvdHRv'@; put 'bT1yLXUrInB4In1jb25zdCBvPXRoaXMuYWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0aW9uKHIpO3JldHVybiB0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSgpLG99cmVwb3NpdGlvbk92ZXJsYXkoKXtpZighdGhpcy5jbG9uZSlyZXR1cm47Y29uc3R7d3RUYWJsZTplLHd0Vmlld3BvcnQ6dH09dGhp'@; put 'cy53b3Qse3Jvb3REb2N1bWVudDpyfT10aGlzLmRvbUJpbmRpbmdzLGk9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlO2xldCBvPTA7dC5oYXNWZXJ0aWNhbFNjcm9sbCgpfHwobys9dC5nZXRXb3Jrc3BhY2VIZWlnaHQoKS1lLmdldFRvdGFsSGVpZ2h0KCkpLHQuaGFzVmVy'@; put 'dGljYWxTY3JvbGwoKSYmdC5oYXNIb3Jpem9udGFsU2Nyb2xsKCkmJihvKz1HZChyKSksaS5zdHlsZS5ib3R0b209YCR7b31weGB9c2V0U2Nyb2xsUG9zaXRpb24oZSl7Y29uc3R7cm9vdFdpbmRvdzp0fT10aGlzLmRvbUJpbmRpbmdzLHI9dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVu'@; put 'dCxpPXIsbz0oKT0+cj09PXQ/dC5zY3JvbGxZOmkuc2Nyb2xsVG9wLGw9bygpO2xldCB1PSExO3JldHVybiBlIT09bCYmKGc9ZSxyPT09dD90LnNjcm9sbFRvKHQuc2Nyb2xsWCxnKTppLnNjcm9sbFRvcD1nLHU9bCE9PW8oKSksdTt2YXIgZ31vblNjcm9sbCgpe3RoaXMud3RTZXR0aW5ncy5n'@; put 'ZXRTZXR0aW5nKCJvblNjcm9sbEhvcml6b250YWxseSIpfXN1bUNlbGxTaXplcyhlLHQpe2NvbnN0e3d0VGFibGU6cix3dFNldHRpbmdzOml9PXRoaXMud290LG89aS5nZXRTZXR0aW5nKCJzdHlsZXNIYW5kbGVyIikuZ2V0RGVmYXVsdFJvd0hlaWdodCgpO2xldCBhPWUsbD0wO2Zvcig7YTx0'@; put 'Oyl7Y29uc3QgdT1yLmdldFJvd0hlaWdodChhKTtsKz12b2lkIDA9PT11P286dSxhKz0xfXJldHVybiBsfWFkanVzdEVsZW1lbnRzU2l6ZSgpe3RoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSx0aGlzLm5lZWRGdWxsUmVuZGVyJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0'@; put 'aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9YWRqdXN0Um9vdEVsZW1lbnRTaXplKCl7aWYoIXRoaXMuY2xvbmUpcmV0dXJuO2NvbnN0e3d0VGFibGU6ZSx3dFZpZXdwb3J0OnR9PXRoaXMud290LHtyb290RG9jdW1lbnQ6cixyb290V2luZG93Oml9PXRoaXMuZG9tQmluZGluZ3MsYT10'@; put 'aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUuc3R5bGUsbD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWl8fCJob3Jpem9udGFsIj09PWwpe2xldCBnPXQuZ2V0V29ya3NwYWNlV2lkdGgo'@; put 'KTt0Lmhhc1ZlcnRpY2FsU2Nyb2xsKCkmJihnLT1HZChyKSksZz1NYXRoLm1pbihnLGUud3RSb290RWxlbWVudC5zY3JvbGxXaWR0aCksYS53aWR0aD1gJHtnfXB4YH1lbHNlIGEud2lkdGg9IiI7dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5zdHlsZS53aWR0aD1hLndpZHRoO2xldCB1PUho'@; put 'KHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7ZS5oYXNEZWZpbmVkU2l6ZSgpfHwodT0wKSxhLmhlaWdodD1gJHt1fXB4YH1hZGp1c3RSb290Q2hpbGRyZW5TaXplKCl7aWYoIXRoaXMuY2xvbmUpcmV0dXJuO2NvbnN0e2hvbGRlcjplfT10aGlzLmNsb25lLnd0VGFibGU7dGhpcy5jbG9uZS53'@; put 'dFRhYmxlLmhpZGVyLnN0eWxlLndpZHRoPXRoaXMuaGlkZXIuc3R5bGUud2lkdGg7Y29uc3QgdD1lLnBhcmVudE5vZGU7ZS5zdHlsZS53aWR0aD10LnN0eWxlLndpZHRoLGUuc3R5bGUuaGVpZ2h0PXQuc3R5bGUuaGVpZ2h0fWFwcGx5VG9ET00oKXtjb25zdCBlPXRoaXMud3RTZXR0aW5ncy5n'@; put 'ZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTsibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/LnN0YXJ0UG9zaXRpb24/dGhpcy5zcHJlYWRlci5zdHlsZS50b3A9YCR7dGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5z'@; put 'dGFydFBvc2l0aW9ufXB4YDowPT09ZT90aGlzLnNwcmVhZGVyLnN0eWxlLnRvcD0iMCI6SnIoIkluY29ycmVjdCB2YWx1ZSBvZiB0aGUgcm93c1JlbmRlckNhbGN1bGF0b3IiKSx0aGlzLnNwcmVhZGVyLnN0eWxlLmJvdHRvbT0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVy'@; put 'bGF5T2Zmc2V0KCl9c3luY092ZXJsYXlPZmZzZXQoKXtpZighdGhpcy5jbG9uZSlyZXR1cm47Y29uc3QgZT10aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVmdCIse3NwcmVhZGVyOnR9PXRoaXMuY2xvbmUud3RUYWJsZTt0LnN0eWxlW2VdPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3'@; put 'cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcj8uc3RhcnRQb3NpdGlvbj9gJHt0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb259cHhgOiIifXNjcm9sbFRvKGUsdCl7bGV0IHI9dGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpO2NvbnN0'@; put 'IG89KHRoaXMud290LmNsb25lU291cmNlP3RoaXMud290LmNsb25lU291cmNlOnRoaXMud290KS53dFRhYmxlLmhvbGRlcjtsZXQgYT0wO3JldHVybiB0JiZvLm9mZnNldEhlaWdodCE9PW8uY2xpZW50SGVpZ2h0JiYoYT1HZCh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLHQ/KHIr'@; put 'PXRoaXMuc3VtQ2VsbFNpemVzKDAsZSsxKSxyLT10aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdwb3J0SGVpZ2h0KCkscis9MSk6cis9dGhpcy5zdW1DZWxsU2l6ZXModGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGUpLHIrPWEsdGhpcy5zZXRTY3JvbGxQ'@; put 'b3NpdGlvbihyKX1nZXRUYWJsZVBhcmVudE9mZnNldCgpe3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93P3RoaXMud290Lnd0VGFibGUuaG9sZGVyT2Zmc2V0LnRvcDowfWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJu'@; put 'IGpXKHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsdGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93KX1nZXRPdmVybGF5T2Zmc2V0KCl7Y29uc3R7cm9vdFdpbmRvdzplfT10aGlzLmRvbUJpbmRpbmdzLHQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxv'@; put 'dyIpO2xldCByPTA7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lcj09PWUmJighdHx8InZlcnRpY2FsIiE9PXQpJiZ0aGlzLmNsb25lKXtjb25zdCBpPXRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKSxhPWktdGhpcy5jbG9uZS53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCksbD10aGlz'@; put 'LmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O3I9TWF0aC5tYXgodGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLXRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS1sK2ksMCkscj5hJiYocj0wKX1yZXR1cm4gcn1hZGp1c3RIZWFkZXJCb3JkZXJz'@; put 'UG9zaXRpb24oZSl7Y29uc3QgdD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIikscj10aGlzLmNhY2hlZEZpeGVkUm93c0JvdHRvbSE9PXQsaT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpO2xldCBvPSExO2lmKChyfHwwPT09'@; put 'dCkmJmkubGVuZ3RoPjApe2NvbnN0IGE9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxsPUxhKGEsImlubmVyQm9yZGVyQm90dG9tIik7dGhpcy5jYWNoZWRGaXhlZFJvd3NCb3R0b209dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGV8fDA9'@; put 'PT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik/KFlyKGEsImlubmVyQm9yZGVyQm90dG9tIiksbz0hbCk6KGtvKGEsImlubmVyQm9yZGVyQm90dG9tIiksbz1sKX1yZXR1cm4gb31jb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcihlLHQsdDYscixpKSx0aGlzLmNhY2hl'@; put 'ZEZpeGVkUm93c0JvdHRvbT0tMSx0aGlzLmNhY2hlZEZpeGVkUm93c0JvdHRvbT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIil9fWNvbnN0IHVrZT17Z2V0Rmlyc3RSZW5kZXJlZFJvdygpe2NvbnN0IG49dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Um93'@; put 'UmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1uPy0xOm59LGdldEZpcnN0VmlzaWJsZVJvdygpe2NvbnN0IG49dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Um93VmlzaWJsZTtyZXR1cm4gbnVsbD09PW4/LTE6bn0sZ2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7Y29uc3Qgbj10aGlzLmRh'@; put 'dGFBY2Nlc3NPYmplY3Quc3RhcnRSb3dQYXJ0aWFsbHlWaXNpYmxlO3JldHVybiBudWxsPT09bj8tMTpufSxnZXRMYXN0UmVuZGVyZWRSb3coKXtjb25zdCBuPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRSb3dSZW5kZXJlZDtyZXR1cm4gbnVsbD09PW4/LTE6bn0sZ2V0TGFzdFZpc2libGVS'@; put 'b3coKXtjb25zdCBuPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRSb3dWaXNpYmxlO3JldHVybiBudWxsPT09bj8tMTpufSxnZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpe2NvbnN0IG49dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZFJvd1BhcnRpYWxseVZpc2libGU7cmV0dXJuIG51bGw9'@; put 'PT1uPy0xOm59LGdldFJlbmRlcmVkUm93c0NvdW50KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb3VudFJvd3NSZW5kZXJlZH0sZ2V0VmlzaWJsZVJvd3NDb3VudCgpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRSb3dzVmlzaWJsZX0sZ2V0Q29sdW1uSGVhZGVy'@; put 'c0NvdW50KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb2x1bW5IZWFkZXJzLmxlbmd0aH19O0s1KHVrZSwiTUlYSU5fTkFNRSIsImNhbGN1bGF0ZWRSb3dzIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IGRrZT11a2UsaGtlPXtnZXRGaXJzdFJlbmRlcmVkQ29s'@; put 'dW1uKCl7cmV0dXJuIDA9PT10aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCk/LTE6MH0sZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpfSxnZXRGaXJzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5nZXRG'@; put 'aXJzdFJlbmRlcmVkQ29sdW1uKCl9LGdldExhc3RSZW5kZXJlZENvbHVtbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCktMX0sZ2V0TGFzdFZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX0sZ2V0TGFzdFBhcnRpYWxseVZp'@; put 'c2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX0sZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKXtyZXR1cm4gTWF0aC5taW4odGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpPz8wLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5n'@; put 'KCJmaXhlZENvbHVtbnNTdGFydCIpKX0sZ2V0VmlzaWJsZUNvbHVtbnNDb3VudCgpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCl9LGdldFJvd0hlYWRlcnNDb3VudCgpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3Qucm93SGVhZGVycy5sZW5ndGh9fTtLNShoa2Us'@; put 'Ik1JWElOX05BTUUiLCJzdGlja3lDb2x1bW5zU3RhcnQiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3QgeWxlPWhrZTtjbGFzcyBibGUgZXh0ZW5kcyBLTXtjb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcihlLHQscixpLHF2KX19WWwoYmxlLGRrZSksWWwoYmxlLHlsZSk7Y29u'@; put 'c3QgckF0PWJsZTtjbGFzcyBpQXQgZXh0ZW5kcyBUTHtjcmVhdGVUYWJsZSguLi5lKXtyZXR1cm4gbmV3IHJBdCguLi5lKX1zaG91bGRCZVJlbmRlcmVkKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJJbmxpbmVTdGFydE92ZXJsYXkiKX1yZXNldEZp'@; put 'eGVkUG9zaXRpb24oKXtjb25zdHt3dFRhYmxlOmV9PXRoaXMud290O2lmKCEodGhpcy5uZWVkRnVsbFJlbmRlciYmdGhpcy5zaG91bGRCZVJlbmRlcmVkKCkmJmUuaG9sZGVyLnBhcmVudE5vZGUmJnRoaXMuY2xvbmUpKXJldHVybiExO2NvbnN0e3Jvb3RXaW5kb3c6dH09dGhpcy5kb21CaW5k'@; put 'aW5ncyxyPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxpPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtsZXQgbz0wO3RoaXMudHJpbW1pbmdDb250YWluZXIhPT10fHxpJiYiaG9yaXpvbnRhbCI9PT1pPyhvPXRoaXMuZ2V0U2Nyb2xs'@; put 'UG9zaXRpb24oKSxfTChyKSk6KG89dGhpcy5nZXRPdmVybGF5T2Zmc2V0KCkqKHRoaXMuaXNSdGwoKT8tMToxKSxVVyhyLGAke299cHhgLCIwcHgiKSk7Y29uc3QgYT10aGlzLmFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbihvKTtyZXR1cm4gdGhpcy5hZGp1c3RFbGVtZW50c1NpemUoKSxh'@; put 'fXNldFNjcm9sbFBvc2l0aW9uKGUpe2NvbnN0e3Jvb3RXaW5kb3c6dH09dGhpcy5kb21CaW5kaW5ncyxyPXRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsaT1yLG89KCk9PnI9PT10P3Quc2Nyb2xsWDppLnNjcm9sbExlZnQ7dGhpcy5pc1J0bCgpJiYoZT0tZSk7Y29uc3QgbD1vKCk7'@; put 'bGV0IHU9ITE7cmV0dXJuIGUhPT1sJiYoZz1lLHI9PT10P3Quc2Nyb2xsVG8oZyx0LnNjcm9sbFkpOmkuc2Nyb2xsTGVmdD1nLHU9bCE9PW8oKSksdTt2YXIgZ31vblNjcm9sbCgpe3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbFZlcnRpY2FsbHkiKX1zdW1DZWxsU2l6ZXMo'@; put 'ZSx0KXtjb25zdCByPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Q29sdW1uV2lkdGgiKTtsZXQgaT1lLG89MDtmb3IoO2k8dDspbys9dGhpcy53b3Qud3RUYWJsZS5nZXRDb2x1bW5XaWR0aChpKXx8cixpKz0xO3JldHVybiBvfWFkanVzdEVsZW1lbnRzU2l6ZSgpe3RoaXMu'@; put 'dXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSx0aGlzLm5lZWRGdWxsUmVuZGVyJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9YWRqdXN0Um9vdEVsZW1lbnRTaXplKCl7aWYoIXRoaXMuY2xvbmUpcmV0dXJuO2NvbnN0e3d0VGFi'@; put 'bGU6ZSx3dFZpZXdwb3J0OnR9PXRoaXMud290LHtyb290RG9jdW1lbnQ6cixyb290V2luZG93Oml9PXRoaXMuZG9tQmluZGluZ3MsYT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUuc3R5bGUsbD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93'@; put 'Iik7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWl8fCJ2ZXJ0aWNhbCI9PT1sKXtsZXQgZz10LmdldFdvcmtzcGFjZUhlaWdodCgpO2lmKHQuaGFzSG9yaXpvbnRhbFNjcm9sbCgpKXtjb25zdCBFPWUuaG9sZGVyLmNsaWVudEhlaWdodDtnPUU+MD9FOmctR2Qocil9Zz1NYXRoLm1pbihn'@; put 'LGUud3RSb290RWxlbWVudC5zY3JvbGxIZWlnaHQpLGEuaGVpZ2h0PWAke2d9cHhgfWVsc2UgYS5oZWlnaHQ9IiI7dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5zdHlsZS5oZWlnaHQ9YS5oZWlnaHQ7Y29uc3QgdT1aZCh0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO2Eud2lkdGg9YCR7dX1w'@; put 'eGB9YWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpe2lmKCF0aGlzLmNsb25lKXJldHVybjtjb25zdHtob2xkZXI6ZX09dGhpcy5jbG9uZS53dFRhYmxlLHQ9dmxlKHRoaXMud290KSxyPXRoaXMud290LnNlbGVjdGlvbk1hbmFnZXIuZ2V0Rm9jdXNTZWxlY3Rpb24oKT9wYXJzZUludCh0LndpZHRo'@; put 'LDEwKS8yOjA7dGhpcy5jbG9uZS53dFRhYmxlLmhpZGVyLnN0eWxlLmhlaWdodD10aGlzLmhpZGVyLnN0eWxlLmhlaWdodDtjb25zdCBpPWUucGFyZW50Tm9kZTtlLnN0eWxlLmhlaWdodD1pLnN0eWxlLmhlaWdodCxlLnN0eWxlLndpZHRoPWAke3BhcnNlSW50KGkuc3R5bGUud2lkdGgsMTAp'@; put 'K3J9cHhgfWFwcGx5VG9ET00oKXtjb25zdCBlPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKSx0PXRoaXMuaXNSdGwoKT8icmlnaHQiOiJsZWZ0IjsibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3I/LnN0'@; put 'YXJ0UG9zaXRpb24/dGhpcy5zcHJlYWRlci5zdHlsZVt0XT1gJHt0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb259cHhgOjA9PT1lP3RoaXMuc3ByZWFkZXIuc3R5bGVbdF09IjAiOkpyKCJJbmNvcnJlY3QgdmFsdWUgb2YgdGhlIGNvbHVt'@; put 'bnNSZW5kZXJDYWxjdWxhdG9yIiksdGhpcy5pc1J0bCgpP3RoaXMuc3ByZWFkZXIuc3R5bGUubGVmdD0iIjp0aGlzLnNwcmVhZGVyLnN0eWxlLnJpZ2h0PSIiLHRoaXMubmVlZEZ1bGxSZW5kZXImJnRoaXMuc3luY092ZXJsYXlPZmZzZXQoKX1zeW5jT3ZlcmxheU9mZnNldCgpe3RoaXMuY2xv'@; put 'bmUmJih0aGlzLmNsb25lLnd0VGFibGUuc3ByZWFkZXIuc3R5bGUudG9wPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvcj8uc3RhcnRQb3NpdGlvbj9gJHt0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0'@; put 'UG9zaXRpb259cHhgOiIiKX1zY3JvbGxUbyhlLHQpe2NvbnN0e3d0U2V0dGluZ3M6cn09dGhpcyxpPXIuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLG89ci5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLGw9KHRoaXMud290LmNsb25lU291cmNlP3RoaXMud290LmNsb25lU291cmNl'@; put 'OnRoaXMud290KS53dFRhYmxlLmhvbGRlcix1PTA9PT1vJiZpLmxlbmd0aD4wJiYhTGEobC5wYXJlbnROb2RlLCJpbm5lckJvcmRlcklubGluZVN0YXJ0Iik/MTowO2xldCBnPXRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSxFPTA7cmV0dXJuIHQmJnRoaXMud290Lnd0VGFibGUuZ2V0Q29s'@; put 'dW1uV2lkdGgoZSk+dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCkmJih0PSExKSx0JiZsLm9mZnNldFdpZHRoIT09bC5jbGllbnRXaWR0aCYmKEU9R2QodGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSx0PyhnKz10aGlzLnN1bUNlbGxTaXplcygwLGUrMSksZy09'@; put 'dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCksZys9dSk6Zys9dGhpcy5zdW1DZWxsU2l6ZXModGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0IiksZSksZys9RSxuQWUodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCk9PT1nLXUm'@; put 'JnU+MCYmdGhpcy53b3Qud3RPdmVybGF5cy5leHBhbmRIaWRlckhvcml6b250YWxseUJ5KHUpLHRoaXMuc2V0U2Nyb2xsUG9zaXRpb24oZyl9Z2V0VGFibGVQYXJlbnRPZmZzZXQoKXtsZXQgdD0wO3JldHVybiF0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iikm'@; put 'JnRoaXMudHJpbW1pbmdDb250YWluZXI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cmJih0PXRoaXMud290Lnd0VGFibGUuaG9sZGVyT2Zmc2V0LmxlZnQpLHR9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gTWF0aC5hYnMoTXNlKHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1l'@; put 'bnQsdGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93KSl9Z2V0T3ZlcmxheU9mZnNldCgpe2NvbnN0e3Jvb3RXaW5kb3c6ZX09dGhpcy5kb21CaW5kaW5ncyx0PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtsZXQgcj0wO3JldHVybiB0aGlzLnRyaW1taW5n'@; put 'Q29udGFpbmVyIT09ZXx8dCYmImhvcml6b250YWwiPT09dHx8KHI9dGhpcy5pc1J0bCgpP01hdGguYWJzKE1hdGgubWluKHRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKS10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksMCkpOk1hdGgubWF4KHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS10aGlz'@; put 'LmdldFRhYmxlUGFyZW50T2Zmc2V0KCksMCkscj50aGlzLndvdC53dFRhYmxlLmdldFRvdGFsV2lkdGgoKS0odGhpcy5jbG9uZT90aGlzLmNsb25lLnd0VGFibGUuZ2V0VG90YWxXaWR0aCgpOjApJiYocj0wKSkscn1hZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24oZSl7Y29uc3R7d3RTZXR0'@; put 'aW5nczp0fT10aGlzLHI9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxpPXQuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLG89dC5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLGE9dC5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKSxsPSJ2ZXJ0aWNhbCI9PT10LmdldFNl'@; put 'dHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO2E/a28ociwiZW1wdHlSb3dzIik6WXIociwiZW1wdHlSb3dzIik7bGV0IHU9ITE7aWYoIWwpaWYobyYmIWkubGVuZ3RoKVlyKHIsImlubmVyQm9yZGVyTGVmdCBpbm5lckJvcmRlcklubGluZVN0YXJ0Iik7ZWxzZSBpZighbyYmaS5sZW5ndGgpe2Nv'@; put 'bnN0IGc9TGEociwiaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpO2U/KFlyKHIsImlubmVyQm9yZGVyTGVmdCBpbm5lckJvcmRlcklubGluZVN0YXJ0IiksdT0hZyk6KGtvKHIsImlubmVyQm9yZGVyTGVmdCBpbm5lckJvcmRlcklubGluZVN0YXJ0IiksdT1nKX1yZXR1cm4gdX1jb25zdHJ1Y3Rv'@; put 'cihlLHQscixpKXtzdXBlcihlLHQscXYscixpKX19Y2xhc3Mgd2xlIGV4dGVuZHMgS017Y29uc3RydWN0b3IoZSx0LHIsaSl7c3VwZXIoZSx0LHIsaSxfdyl9fVlsKHdsZSxKQWUpLFlsKHdsZSx5bGUpO2NvbnN0IG9BdD13bGU7Y2xhc3MgYUF0IGV4dGVuZHMgVEx7Y3JlYXRlVGFibGUoLi4u'@; put 'ZSl7cmV0dXJuIG5ldyBvQXQoLi4uZSl9c2hvdWxkQmVSZW5kZXJlZCgpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVyVG9wT3ZlcmxheSIpJiZ0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVySW5saW5lU3RhcnRPdmVybGF5Iil9'@; put 'c2V0U2Nyb2xsUG9zaXRpb24oZSl7cmV0dXJuITF9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gMH1nZXRUYWJsZVBhcmVudE9mZnNldCgpe3JldHVybiAwfWdldE92ZXJsYXlPZmZzZXQoKXtyZXR1cm4gMH1vblNjcm9sbCgpe31zdW1DZWxsU2l6ZXMoZSx0KXtyZXR1cm4gMH1hZGp1c3RF'@; put 'bGVtZW50c1NpemUoKXt9YXBwbHlUb0RPTSgpe31zY3JvbGxUbyhlLHQpe3JldHVybiExfXJlc2V0Rml4ZWRQb3NpdGlvbigpe2lmKHRoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwhdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZXx8IXRoaXMuY2xvbmUpcmV0dXJuITE7'@; put 'Y29uc3QgZT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGU7dGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdz9VVyhlLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKSoodGhpcy5pc1J0bCgpPy0xOjEp'@; put 'KyJweCIsYCR7dGhpcy50b3BPdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKX1weGApOl9MKGUpO2xldCB0PUhoKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7Y29uc3Qgcj1aZCh0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO3JldHVybiB0aGlzLndvdC53dFRhYmxlLmhhc0RlZmluZWRTaXpl'@; put 'KCl8fCh0PTApLGUuc3R5bGUuaGVpZ2h0PWAke3R9cHhgLGUuc3R5bGUud2lkdGg9YCR7cn1weGAsITB9Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEpe3N1cGVyKGUsdCxfdyxyLGkpLHRoaXMudG9wT3ZlcmxheT1vLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5PWF9fWNsYXNzIENsZSBleHRlbmRz'@; put 'IEtNe2NvbnN0cnVjdG9yKGUsdCxyLGkpe3N1cGVyKGUsdCxyLGksS3YpfX1ZbChDbGUsY2tlKSxZbChDbGUseWxlKTtjb25zdCBzQXQ9Q2xlO2NsYXNzIGxBdCBleHRlbmRzIFRMe2NyZWF0ZVRhYmxlKC4uLmUpe3JldHVybiBuZXcgc0F0KC4uLmUpfXNob3VsZEJlUmVuZGVyZWQoKXtyZXR1'@; put 'cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlckJvdHRvbU92ZXJsYXkiKSYmdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfXJlc2V0Rml4ZWRQb3NpdGlvbigpe2NvbnN0e3dvdDplfT10aGlzO3RoaXMu'@; put 'dXBkYXRlVHJpbW1pbmdDb250YWluZXIoKTtjb25zdHtjbG9uZTp0fT10aGlzO2lmKCFlLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGV8fCF0KXJldHVybiExO2NvbnN0IHI9dC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlO2lmKHIuc3R5bGUudG9wPSIiLHRoaXMudHJpbW1pbmdDb250YWlu'@; put 'ZXI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cpe2NvbnN0IGE9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpLGw9dGhpcy53b3Qud3RUYWJsZS5UQUJMRS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx1PXRoaXMud290Lnd0VGFibGUuaG9sZGVyLmdldEJv'@; put 'dW5kaW5nQ2xpZW50UmVjdCgpLGc9TWF0aC5tYXgoMCxsLmJvdHRvbS11LmJvdHRvbSksRT10aGlzLmJvdHRvbU92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpLWc7ci5zdHlsZVt0aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVmdCJdPWAke2F9cHhgLHIuc3R5bGUuYm90dG9tPWAke0V9cHhgfWVs'@; put 'c2UgX0wociksdGhpcy5yZXBvc2l0aW9uT3ZlcmxheSgpO2xldCBpPUhoKHQud3RUYWJsZS5UQUJMRSk7Y29uc3Qgbz1aZCh0Lnd0VGFibGUuVEFCTEUpO3JldHVybiB0aGlzLndvdC53dFRhYmxlLmhhc0RlZmluZWRTaXplKCl8fChpPTApLHIuc3R5bGUuaGVpZ2h0PWAke2l9cHhgLHIuc3R5'@; put 'bGUud2lkdGg9YCR7b31weGAsITB9c2V0U2Nyb2xsUG9zaXRpb24oZSl7cmV0dXJuITF9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gMH1nZXRUYWJsZVBhcmVudE9mZnNldCgpe3JldHVybiAwfWdldE92ZXJsYXlPZmZzZXQoKXtyZXR1cm4gMH1vblNjcm9sbCgpe31zdW1DZWxsU2l6ZXMo'@; put 'ZSx0KXtyZXR1cm4gMH1hZGp1c3RFbGVtZW50c1NpemUoKXt9YXBwbHlUb0RPTSgpe31zY3JvbGxUbyhlLHQpe3JldHVybiExfXJlcG9zaXRpb25PdmVybGF5KCl7aWYoIXRoaXMuY2xvbmUpcmV0dXJuO2NvbnN0e3d0VGFibGU6ZSx3dFZpZXdwb3J0OnR9PXRoaXMud290LHtyb290RG9jdW1l'@; put 'bnQ6cn09dGhpcy5kb21CaW5kaW5ncyxpPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZTtsZXQgbz0wO3QuaGFzVmVydGljYWxTY3JvbGwoKXx8KG8rPXQuZ2V0V29ya3NwYWNlSGVpZ2h0KCktZS5nZXRUb3RhbEhlaWdodCgpKSx0Lmhhc1ZlcnRpY2FsU2Nyb2xsKCkmJnQu'@; put 'aGFzSG9yaXpvbnRhbFNjcm9sbCgpJiYobys9R2QocikpLGkuc3R5bGUuYm90dG9tPWAke299cHhgfWNvbnN0cnVjdG9yKGUsdCxyLGksbyxhKXtzdXBlcihlLHQsS3YscixpKSx0aGlzLmJvdHRvbU92ZXJsYXk9byx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheT1hfX1mdW5jdGlvbiBma2Uobixl'@; put 'KXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHBrZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0'@; put 'byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBxMShuLGUpe3JldHVybiBmdW5jdGlvbiBjQXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLHBrZShuLGUsImdldCIpKX1mdW5jdGlvbiBTbGUo'@; put 'bixlLHQpe2ZrZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gUzQobixlLHQpe3JldHVybiBmdW5jdGlvbiB1QXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5'@; put 'IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHBrZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gRnUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVu'@; put 'Y3Rpb24gcjYobixlKXtma2UobixlKSxlLmFkZChuKX12YXIgQmY9bmV3IFdlYWtNYXAsRTQ9bmV3IFdlYWtNYXAseXc9bmV3IFdlYWtNYXAsZ2tlPW5ldyBXZWFrU2V0LHJZPW5ldyBXZWFrU2V0LGlZPW5ldyBXZWFrU2V0LG1rZT1uZXcgV2Vha1NldCxFbGU9bmV3IFdlYWtTZXQsUU09bmV3'@; put 'IFdlYWtTZXQsb1k9bmV3IFdlYWtTZXQsdmtlPW5ldyBXZWFrU2V0LHhMPW5ldyBXZWFrU2V0LEFMPW5ldyBXZWFrU2V0O2NsYXNzIGRBdHtyZWdpc3Rlckxpc3RlbmVycygpe2NvbnN0e2V2ZW50TWFuYWdlcjplLGRvbUJpbmRpbmdzOntyb290RG9jdW1lbnQ6dH19PXExKHRoaXMsQmYpO3Ex'@; put 'KHRoaXMsRTQpJiYoUzQodGhpcyxFNCwhMSksRnUodGhpcyxRTSxrTCkuY2FsbCh0aGlzLCJyZWxhdGl2ZSIsMCwwKSksUzQodGhpcyx5dywhMSksZS5hZGRFdmVudExpc3RlbmVyKHQsIm1vdXNlZG93biIscj0+e3IgaW5zdGFuY2VvZiBNb3VzZUV2ZW50JiZTNCh0aGlzLHl3LEZ1KHRoaXMs'@; put 'dmtlLHBBdCkuY2FsbCh0aGlzLHIpKX0pLGUuYWRkRXZlbnRMaXN0ZW5lcih0LCJtb3VzZXVwIiwoKT0+e1M0KHRoaXMseXcsITEpLHExKHRoaXMsRTQpJiZ0aGlzLmRlYWN0aXZhdGUoKX0pfXRyeUFjdGl2YXRlKGUsdCl7cTEodGhpcyx5dykmJiFxMSh0aGlzLEU0KSYmIWhMKCkmJihlfHx0'@; put 'KSYmRnUodGhpcyxna2UsaEF0KS5jYWxsKHRoaXMpfXN5bmNPZmZzZXRzKCl7aWYoIXExKHRoaXMsRTQpKXJldHVybjtjb25zdCBlPXExKHRoaXMsQmYpLHt3dFZpZXdwb3J0OnR9PWUud290LHI9dC5yb3dzUmVuZGVyQ2FsY3VsYXRvcj8uc3RhcnRQb3NpdGlvbixpPXQuY29sdW1uc1JlbmRl'@; put 'ckNhbGN1bGF0b3I/LnN0YXJ0UG9zaXRpb247aWYoIm51bWJlciIhPXR5cGVvZiByfHwibnVtYmVyIiE9dHlwZW9mIGkpcmV0dXJuO2NvbnN0IG89ci1GdSh0aGlzLHJZLE1sZSkuY2FsbCh0aGlzKSxhPWktRnUodGhpcyxpWSxUbGUpLmNhbGwodGhpcyk7RnUodGhpcyxRTSxrTCkuY2FsbCh0'@; put 'aGlzLCJzdGlja3kiLG8sYSl9ZGVzdHJveSgpe3ExKHRoaXMsRTQpJiZGdSh0aGlzLFFNLGtMKS5jYWxsKHRoaXMsInJlbGF0aXZlIiwwLDApLFM0KHRoaXMsRTQsITEpLFM0KHRoaXMseXcsITEpfWRlYWN0aXZhdGUoKXtjb25zdCBlPXExKHRoaXMsQmYpLHQ9ZS53dFRhYmxlLnNwcmVhZGVy'@; put 'LHt3dFZpZXdwb3J0OnJ9PWUud290LG89ZS53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKT8icmlnaHQiOiJsZWZ0IjtlLnJlZnJlc2hBbGwoKTtjb25zdCBhPU51bWJlci5wYXJzZUludCh0LnN0eWxlLnRvcCwxMCl8fDAsbD1OdW1iZXIucGFyc2VJbnQodC5zdHlsZVtvXSwxMCl8'@; put 'fDAsdT1yLnJvd3NSZW5kZXJDYWxjdWxhdG9yPy5zdGFydFBvc2l0aW9uLGc9ci5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcj8uc3RhcnRQb3NpdGlvbixFPSJudW1iZXIiPT10eXBlb2YgdT91LWE6RnUodGhpcyxyWSxNbGUpLmNhbGwodGhpcyksTz0ibnVtYmVyIj09dHlwZW9mIGc/Zy1sOkZ1'@; put 'KHRoaXMsaVksVGxlKS5jYWxsKHRoaXMpO0Z1KHRoaXMsbWtlLGZBdCkuY2FsbCh0aGlzLEUsTyksUzQodGhpcyxFNCwhMSksRnUodGhpcyxRTSxrTCkuY2FsbCh0aGlzLCJyZWxhdGl2ZSIsMCwwKSxlLnJlZnJlc2hBbGwoKSxlLmFwcGx5VG9ET00oKX1jb25zdHJ1Y3RvcihlKXtyNih0aGlz'@; put 'LGdrZSkscjYodGhpcyxyWSkscjYodGhpcyxpWSkscjYodGhpcyxta2UpLHI2KHRoaXMsRWxlKSxyNih0aGlzLFFNKSxyNih0aGlzLG9ZKSxyNih0aGlzLHZrZSkscjYodGhpcyx4TCkscjYodGhpcyxBTCksU2xlKHRoaXMsQmYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFNsZSh0aGlz'@; put 'LEU0LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxTbGUodGhpcyx5dyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUzQodGhpcyxFNCwhMSksUzQodGhpcyx5dywhMSksUzQodGhpcyxCZixlKX19ZnVuY3Rpb24gaEF0KCl7Y29uc3Qgbj1xMSh0aGlzLEJmKSxlPW4ud3RUYWJsZS5z'@; put 'cHJlYWRlcixyPW4ud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIik/InJpZ2h0IjoibGVmdCIsbz0oTnVtYmVyLnBhcnNlSW50KGUuc3R5bGUudG9wLDEwKXx8MCktRnUodGhpcyxyWSxNbGUpLmNhbGwodGhpcyksbD0oTnVtYmVyLnBhcnNlSW50KGUuc3R5bGVbcl0sMTApfHwwKS1G'@; put 'dSh0aGlzLGlZLFRsZSkuY2FsbCh0aGlzKTtTNCh0aGlzLEU0LCEwKSxGdSh0aGlzLFFNLGtMKS5jYWxsKHRoaXMsInN0aWNreSIsbyxsKX1mdW5jdGlvbiBNbGUoKXtjb25zdHt0b3BPdmVybGF5Om59PXExKHRoaXMsQmYpO3JldHVybiBuLmdldFNjcm9sbFBvc2l0aW9uKCktbi5nZXRUYWJs'@; put 'ZVBhcmVudE9mZnNldCgpfWZ1bmN0aW9uIFRsZSgpe2NvbnN0e2lubGluZVN0YXJ0T3ZlcmxheTpufT1xMSh0aGlzLEJmKTtyZXR1cm4gRnUodGhpcyxBTCxzWSkuY2FsbCh0aGlzKSYmRnUodGhpcyx4TCxhWSkuY2FsbCh0aGlzKT9NYXRoLmFicyhuLmdldFNjcm9sbFBvc2l0aW9uKCkpOk1h'@; put 'dGguYWJzKG4uZ2V0U2Nyb2xsUG9zaXRpb24oKSktbi5nZXRUYWJsZVBhcmVudE9mZnNldCgpfWZ1bmN0aW9uIGZBdChuLGUpe2NvbnN0IHQ9cTEodGhpcyxCZik7aWYoRnUodGhpcyx4TCxhWSkuY2FsbCh0aGlzKSl7Y29uc3R7cm9vdFdpbmRvdzpyfT10LmRvbUJpbmRpbmdzLGk9RnUodGhp'@; put 'cyxBTCxzWSkuY2FsbCh0aGlzKT9lOmUrdC5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKTtyLnNjcm9sbFRvKGksbit0LnRvcE92ZXJsYXkuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSl9ZWxzZSB0Lnd0VGFibGUuaG9sZGVyLnNjcm9sbFRvcD1uLHQud3RUYWJsZS5o'@; put 'b2xkZXIuc2Nyb2xsTGVmdD1GdSh0aGlzLEFMLHNZKS5jYWxsKHRoaXMpPy1lOmV9ZnVuY3Rpb24gX2tlKG4pe24uc3R5bGUudG9wPSIiLG4uc3R5bGUuYm90dG9tPSIiLG4uc3R5bGUubGVmdD0iIixuLnN0eWxlLnJpZ2h0PSIifWZ1bmN0aW9uIGtMKG4sZSx0KXtjb25zdCByPXExKHRoaXMs'@; put 'QmYpLGk9ci53dFRhYmxlLnNwcmVhZGVyLG89RnUodGhpcyxBTCxzWSkuY2FsbCh0aGlzKSxhPW8/InJpZ2h0IjoibGVmdCIsbD0ic3RpY2t5Ij09PW47aS5zdHlsZS5wb3NpdGlvbj1uLGw/KGkuc3R5bGUudG9wPWAke2V9cHhgLGkuc3R5bGUuYm90dG9tPSIiLGkuc3R5bGVbYV09YCR7dH1w'@; put 'eGAsaS5zdHlsZVtvPyJsZWZ0IjoicmlnaHQiXT0iIik6RnUodGhpcyxFbGUsX2tlKS5jYWxsKHRoaXMsaSksIUZ1KHRoaXMseEwsYVkpLmNhbGwodGhpcykmJihGdSh0aGlzLG9ZLHhsZSkuY2FsbCh0aGlzLHIuaW5saW5lU3RhcnRPdmVybGF5LG4sbCxlLG51bGwsbyksRnUodGhpcyxvWSx4'@; put 'bGUpLmNhbGwodGhpcyxyLnRvcE92ZXJsYXksbixsLG51bGwsdCxvKSxGdSh0aGlzLG9ZLHhsZSkuY2FsbCh0aGlzLHIuYm90dG9tT3ZlcmxheSxuLGwsbnVsbCx0LG8pKX1mdW5jdGlvbiB4bGUobixlLHQscixpLG8pe2lmKCFuLm5lZWRGdWxsUmVuZGVyfHwhbi5jbG9uZSlyZXR1cm47Y29u'@; put 'c3QgYT1uLmNsb25lLnd0VGFibGUuc3ByZWFkZXIsbD1vPyJyaWdodCI6ImxlZnQiO2Euc3R5bGUucG9zaXRpb249ZSx0PyhudWxsIT09ciYmKGEuc3R5bGUudG9wPWAke3J9cHhgKSxudWxsIT09aSYmKGEuc3R5bGVbbF09YCR7aX1weGAsYS5zdHlsZVtvPyJsZWZ0IjoicmlnaHQiXT0iIikp'@; put 'OkZ1KHRoaXMsRWxlLF9rZSkuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIHBBdChuKXtyZXR1cm4gRnUodGhpcyx4TCxhWSkuY2FsbCh0aGlzKT9uLnRhcmdldD09PXExKHRoaXMsQmYpLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6bi50YXJnZXQ9PT1xMSh0aGlzLEJm'@; put 'KS5zY3JvbGxhYmxlRWxlbWVudH1mdW5jdGlvbiBhWSgpe3JldHVybiBxMSh0aGlzLEJmKS5zY3JvbGxhYmxlRWxlbWVudD09PXExKHRoaXMsQmYpLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3d9ZnVuY3Rpb24gc1koKXtyZXR1cm4gcTEodGhpcyxCZikud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJy'@; put 'dGxNb2RlIil9ZnVuY3Rpb24geWtlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBia2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBu'@; put 'ZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gXzEobixlKXtyZXR1cm4gZnVuY3Rpb24gZ0F0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixia2Uo'@; put 'bixlLCJnZXQiKSl9ZnVuY3Rpb24gWHYobixlLHQpe3lrZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24geTEobixlLHQpe3JldHVybiBmdW5jdGlvbiBtQXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0'@; put 'dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLGJrZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gUkwobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9u'@; put 'LWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gbFkobixlKXt5a2UobixlKSxlLmFkZChuKX12YXIgYnc9bmV3IFdlYWtNYXAsSUw9bmV3IFdlYWtNYXAsREw9bmV3IFdlYWtNYXAsTEw9bmV3IFdlYWtNYXAsd3c9bmV3IFdlYWtNYXAsUXY9bmV3IFdlYWtNYXAsY1k9bmV3IFdlYWtNYXAs'@; put 'Q3c9bmV3IFdlYWtNYXAsd2tlPW5ldyBXZWFrU2V0LENrZT1uZXcgV2Vha1NldCxTa2U9bmV3IFdlYWtTZXQsQWxlPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIHlBdCgpe3kxKHRoaXMsREwsdGhpcy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCkpLHkxKHRoaXMsTEwsdGhpcy5pbmxpbmVT'@; put 'dGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKSl9ZnVuY3Rpb24gYkF0KCl7Y29uc3Qgbj10aGlzLnRvcE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKTtyZXR1cm4gXzEodGhpcyxETCkhPT1uJiYoeTEodGhpcyxETCxuKSwhMCl9ZnVuY3Rpb24gd0F0KCl7Y29uc3Qgbj10aGlzLmlu'@; put 'bGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpO3JldHVybiBfMSh0aGlzLExMKSE9PW4mJih5MSh0aGlzLExMLG4pLCEwKX1mdW5jdGlvbiBFa2UoKXt0aGlzLmRlc3Ryb3llZHx8dGhpcy51cGRhdGVMYXN0U3ByZWFkZXJTaXplKCkmJnRoaXMuYWRqdXN0RWxlbWVudHNTaXpl'@; put 'KCl9Y29uc3QgQ0F0PWNsYXNzIF9BdHtnZXRPdmVybGF5cyhlPSExKXtjb25zdCB0PVsuLi5fMSh0aGlzLGJ3KV07cmV0dXJuIGUmJnQucHVzaCh0aGlzLnd0VGFibGUpLHR9aW5pdEJyb3dzZXJMaW5lSGVpZ2h0KCl7Y29uc3R7cm9vdFdpbmRvdzplLHJvb3REb2N1bWVudDp0fT10aGlzLmRv'@; put 'bUJpbmRpbmdzLHI9ZS5nZXRDb21wdXRlZFN0eWxlKHQuYm9keSksaT1wYXJzZUludChyLmxpbmVIZWlnaHQsMTApLG89MS4yKnBhcnNlSW50KHIuZm9udFNpemUsMTApO3RoaXMuYnJvd3NlckxpbmVIZWlnaHQ9aXx8b31pbml0T3ZlcmxheXMoKXtjb25zdCBlPVt0aGlzLndvdCx0aGlzLmZh'@; put 'Y2FkZUdldHRlcix0aGlzLnd0U2V0dGluZ3MsdGhpcy5kb21CaW5kaW5nc107dGhpcy50b3BPdmVybGF5PW5ldyBYeHQoZVswXSxlWzFdLGVbMl0sZVszXSksdGhpcy5ib3R0b21PdmVybGF5PW5ldyBlQXQoZVswXSxlWzFdLGVbMl0sZVszXSksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXk9bmV3'@; put 'IGlBdChlWzBdLGVbMV0sZVsyXSxlWzNdKSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT1uZXcgYUF0KGVbMF0sZVsxXSxlWzJdLGVbM10sdGhpcy50b3BPdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5KSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT1u'@; put 'ZXcgbEF0KGVbMF0sZVsxXSxlWzJdLGVbM10sdGhpcy5ib3R0b21PdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5KSx5MSh0aGlzLGJ3LFt0aGlzLnRvcE92ZXJsYXksdGhpcy5ib3R0b21PdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LHRoaXMudG9wSW5saW5lU3RhcnRDb3Ju'@; put 'ZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XSl9YmVmb3JlRHJhdygpe3kxKHRoaXMsSUwsXzEodGhpcyxidykucmVkdWNlKChlLHQpPT50Lmhhc1JlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpfHxlLCExKSksXzEodGhpcyxidykuZm9yRWFjaChlPT5lLnVwZGF0'@; put 'ZVN0YXRlT2ZSZW5kZXJpbmcoImJlZm9yZSIpKX1hZnRlckRyYXcoKXt0aGlzLnN5bmNTY3JvbGxXaXRoTWFzdGVyKCksXzEodGhpcyxidykuZm9yRWFjaChlPT57Y29uc3QgdD1lLmhhc1JlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpO2UudXBkYXRlU3RhdGVPZlJlbmRlcmluZygiYWZ0ZXIiKSx0'@; put 'JiYhZS5uZWVkRnVsbFJlbmRlciYmZS5yZXNldCgpfSl9cmVmcmVzaEFsbCgpe2lmKHRoaXMud290LmRyYXduKXtpZighdGhpcy53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiB2b2lkIHRoaXMuZGVzdHJveSgpO3RoaXMud290LmRyYXcoITApLHRoaXMudmVydGljYWxTY3JvbGxp'@; put 'bmcmJlJMKHRoaXMsQ2tlLGJBdCkuY2FsbCh0aGlzKSYmdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkub25TY3JvbGwoKSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmcmJlJMKHRoaXMsU2tlLHdBdCkuY2FsbCh0aGlzKSYmdGhpcy50b3BPdmVybGF5Lm9uU2Nyb2xsKCksdGhpcy52ZXJ0aWNhbFNj'@; put 'cm9sbGluZz0hMSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9ITF9fXJlZ2lzdGVyTGlzdGVuZXJzKCl7Y29uc3R7cm9vdERvY3VtZW50OmUscm9vdFdpbmRvdzp0fT10aGlzLmRvbUJpbmRpbmdzLHttYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudDpyfT10aGlzLnRvcE92ZXJsYXkse21haW5U'@; put 'YWJsZVNjcm9sbGFibGVFbGVtZW50Oml9PXRoaXMuaW5saW5lU3RhcnRPdmVybGF5O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZS5kb2N1bWVudEVsZW1lbnQsImtleWRvd24iLEU9PnRoaXMub25LZXlEb3duKEUpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3Rl'@; put 'bmVyKGUuZG9jdW1lbnRFbGVtZW50LCJrZXl1cCIsKCk9PnRoaXMub25LZXlVcCgpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsInZpc2liaWxpdHljaGFuZ2UiLCgpPT50aGlzLm9uS2V5VXAoKSksXzEodGhpcyxDdykucmVnaXN0ZXJMaXN0ZW5lcnMoKSx0aGlzLmV2'@; put 'ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHIsInNjcm9sbCIsRT0+dGhpcy5vblRhYmxlU2Nyb2xsKEUpLHtwYXNzaXZlOiEwfSksciE9PWkmJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaSwic2Nyb2xsIixFPT50aGlzLm9uVGFibGVTY3JvbGwoRSkse3Bhc3NpdmU6'@; put 'ITB9KTtjb25zdCBvPXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQ9PT10LGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRXaGVlbCIpLGw9e3Bhc3NpdmU6b307bGV0IGc7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLnd0VGFibGUud3RSb290RWxlbWVu'@; put 'dCwid2hlZWwiLEU9PnRoaXMub25DbG9uZVdoZWVsKEUsYSksbCksW3RoaXMudG9wT3ZlcmxheSx0aGlzLmJvdHRvbU92ZXJsYXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJs'@; put 'YXldLmZvckVhY2goRT0+e0UuY2xvbmUmJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoRS5jbG9uZS53dFRhYmxlLmhvbGRlciwid2hlZWwiLE89PnRoaXMub25DbG9uZVdoZWVsKE8sYSksbCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQsInJlc2l6'@; put 'ZSIsKCk9Pnt1TCgoKT0+e2NsZWFyVGltZW91dChnKSx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25XaW5kb3dSZXNpemUiKSxnPXNldFRpbWVvdXQoKCk9Pnt5MSh0aGlzLHd3LDApfSwyMDApfSl9KSxvfHx0aGlzLnd0VGFibGUud3RSb290RWxlbWVudC5wYXJlbnRFbGVtZW50JiZ0'@; put 'aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQucGFyZW50RWxlbWVudCl9b25UYWJsZVNjcm9sbChlKXtjb25zdCB0PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxyPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFi'@; put 'bGVFbGVtZW50LGk9dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LG89ZS50YXJnZXQ7dGhpcy5rZXlQcmVzc2VkJiYoaSE9PXQmJm8hPT10JiYhKGkgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmQWEoZSkuY29udGFpbnMoaSkpfHxyIT09dCYmbyE9PXQmJiEociBp'@; put 'bnN0YW5jZW9mIEhUTUxFbGVtZW50JiZBYShlKS5jb250YWlucyhyKSkpfHx0aGlzLnN5bmNTY3JvbGxQb3NpdGlvbnMoKX1vbkNsb25lV2hlZWwoZSx0KXtpZihlLmN0cmxLZXkpcmV0dXJuO2NvbnN0e3Jvb3RXaW5kb3c6cn09dGhpcy5kb21CaW5kaW5ncyxpPXRoaXMuaW5saW5lU3RhcnRP'@; put 'dmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LG89dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LGE9ZS50YXJnZXQsbD1vIT09ciYmYSE9PXImJiEoYSBpbnN0YW5jZW9mIE5vZGUmJm8gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmYS5jb250YWlucyhv'@; put 'KSksdT1pIT09ciYmYSE9PXImJiEoYSBpbnN0YW5jZW9mIE5vZGUmJmkgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmYS5jb250YWlucyhpKSk7aWYodGhpcy5rZXlQcmVzc2VkJiYobHx8dSl8fHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQ9PT1yKXJldHVybjtjb25zdCBnPXRoaXMudHJhbnNsYXRl'@; put 'TW91c2VXaGVlbFRvU2Nyb2xsKGUpOyh0fHx0aGlzLnNjcm9sbGFibGVFbGVtZW50IT09ciYmZykmJmUucHJldmVudERlZmF1bHQoKX1vbktleURvd24oZSl7dGhpcy5rZXlQcmVzc2VkPWh3KGUua2V5Q29kZSwiQVJST1dfVVB8QVJST1dfUklHSFR8QVJST1dfRE9XTnxBUlJPV19MRUZUIil9'@; put 'b25LZXlVcCgpe3RoaXMua2V5UHJlc3NlZD0hMX10cmFuc2xhdGVNb3VzZVdoZWVsVG9TY3JvbGwoZSl7bGV0IHQscjshZnVuY3Rpb24gdkF0KG4pe3JldHVybiJ3aGVlbERlbHRhWSJpbiBufHwid2hlZWxEZWx0YVgiaW4gbn0oZSk/KHQ9ZS5kZWx0YVkscj1lLmRlbHRhWCk6KHQ9aXNOYU4o'@; put 'ZS5kZWx0YVkpPy0xKihlLndoZWVsRGVsdGFZPz8wKTplLmRlbHRhWSxyPWlzTmFOKGUuZGVsdGFYKT8tMSooZS53aGVlbERlbHRhWD8/MCk6ZS5kZWx0YVgpLDE9PT1lLmRlbHRhTW9kZSYmKHIrPXIqdGhpcy5icm93c2VyTGluZUhlaWdodCx0Kz10KnRoaXMuYnJvd3NlckxpbmVIZWlnaHQp'@; put 'O2NvbnN0IGk9dGhpcy5zY3JvbGxWZXJ0aWNhbGx5KHQpLG89dGhpcy5zY3JvbGxIb3Jpem9udGFsbHkocik7cmV0dXJuIGl8fG99c2Nyb2xsVmVydGljYWxseShlKXtpZighKHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpcmV0dXJuITE7Y29uc3QgdD10'@; put 'aGlzLnNjcm9sbGFibGVFbGVtZW50LHI9dC5zY3JvbGxUb3A7cmV0dXJuIHQuc2Nyb2xsVG9wKz1lLHIhPT10LnNjcm9sbFRvcH1zY3JvbGxIb3Jpem9udGFsbHkoZSl7aWYoISh0aGlzLnNjcm9sbGFibGVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXJldHVybiExO2NvbnN0IHQ9'@; put 'dGhpcy5zY3JvbGxhYmxlRWxlbWVudCxyPXQuc2Nyb2xsTGVmdDtyZXR1cm4gdC5zY3JvbGxMZWZ0Kz1lLHIhPT10LnNjcm9sbExlZnR9c3luY1Njcm9sbFBvc2l0aW9ucygpe2lmKHRoaXMuZGVzdHJveWVkKXJldHVybjtjb25zdCBlPXRoaXMudG9wT3ZlcmxheS5jbG9uZT8ud3RUYWJsZS5o'@; put 'b2xkZXIsdD10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZT8ud3RUYWJsZS5ob2xkZXIscj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7bGV0IGk9dGhpcy5zY3JvbGxhYmxlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50P3RoaXMuc2Nyb2xs'@; put 'YWJsZUVsZW1lbnQuc2Nyb2xsTGVmdDowLG89dGhpcy5zY3JvbGxhYmxlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50P3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wOjA7aWYodGhpcy53b3Qud3RWaWV3cG9ydC5pc0hvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdygp'@; put 'JiYoImJvb2xlYW4iPT10eXBlb2YgciYmcnx8Imhvcml6b250YWwiIT09cikmJnRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQgaW5zdGFuY2VvZiBXaW5kb3cmJihpPXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsWCksdGhpcy53b3Qud3RWaWV3cG9ydC5pc1ZlcnRpY2FsbHlTY3JvbGxhYmxl'@; put 'QnlXaW5kb3coKSYmKCJib29sZWFuIj09dHlwZW9mIHImJnJ8fCJ2ZXJ0aWNhbCIhPT1yKSYmdGhpcy5zY3JvbGxhYmxlRWxlbWVudCBpbnN0YW5jZW9mIFdpbmRvdyYmKG89dGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxZKSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9dGhpcy5sYXN0'@; put 'U2Nyb2xsWCE9PWksdGhpcy52ZXJ0aWNhbFNjcm9sbGluZz10aGlzLmxhc3RTY3JvbGxZIT09byx0aGlzLmxhc3RTY3JvbGxYPWksdGhpcy5sYXN0U2Nyb2xsWT1vLF8xKHRoaXMsQ3cpLnRyeUFjdGl2YXRlKHRoaXMudmVydGljYWxTY3JvbGxpbmcsdGhpcy5ob3Jpem9udGFsU2Nyb2xsaW5n'@; put 'KSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmcpe2hzKGUpJiYoZS5zY3JvbGxMZWZ0PWkpO2NvbnN0IGE9dGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyP3RoaXMuYm90dG9tT3ZlcmxheS5jbG9uZT8ud3RUYWJsZS5ob2xkZXI6bnVsbDthJiYoYS5zY3JvbGxMZWZ0PWkpfXRoaXMu'@; put 'dmVydGljYWxTY3JvbGxpbmcmJmhzKHQpJiYodC5zY3JvbGxUb3A9dGhpcy53b3Qud3RWaWV3cG9ydC5pc1ZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3coKT8wOm8pLHRoaXMucmVmcmVzaEFsbCgpLF8xKHRoaXMsQ3cpLnN5bmNPZmZzZXRzKCl9c3luY1Njcm9sbFdpdGhNYXN0ZXIoKXtp'@; put 'ZighXzEodGhpcyxJTCkpcmV0dXJuO2NvbnN0IGU9dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50O2lmKCEoZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSlyZXR1cm47Y29uc3R7c2Nyb2xsTGVmdDp0LHNjcm9sbFRvcDpyfT1lO3RoaXMudG9wT3ZlcmxheS5uZWVk'@; put 'RnVsbFJlbmRlciYmdGhpcy50b3BPdmVybGF5LmNsb25lJiYodGhpcy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuaG9sZGVyLnNjcm9sbExlZnQ9dCksdGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJih0aGlzLmJvdHRvbU92ZXJs'@; put 'YXkuY2xvbmUud3RUYWJsZS5ob2xkZXIuc2Nyb2xsTGVmdD10KSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUmJih0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5zY3JvbGxUb3A9'@; put 'cikseTEodGhpcyxJTCwhMSl9dXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50cygpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyRXZlbnRzKCEwKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS51cGRhdGVNYWluU2Nyb2xsYWJsZUVsZW1lbnQoKSx0aGlzLnRvcE92ZXJsYXkudXBkYXRlTWFpblNj'@; put 'cm9sbGFibGVFbGVtZW50KCksdGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmJvdHRvbU92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCk7Y29uc3R7d3RUYWJsZTplfT10aGlzLHtyb290V2luZG93OnR9PXRoaXMuZG9tQmluZGluZ3Mscj1lLnd0Um9v'@; put 'dEVsZW1lbnQucGFyZW50Tm9kZSxpPW51bGwhPT1yJiYxPT09ci5ub2RlVHlwZT90LmdldENvbXB1dGVkU3R5bGUocikuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3ciKToiIjt0aGlzLnNjcm9sbGFibGVFbGVtZW50PSJoaWRkZW4iPT09aXx8ImNsaXAiPT09aT9lLmhvbGRlcjptTChlLlRB'@; put 'QkxFKSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCl9ZGVzdHJveSgpe18xKHRoaXMsY1kpLmNhbmNlbCgpLG51bGwhPT1fMSh0aGlzLFF2KSYmKGNsZWFyVGltZW91dChfMSh0aGlzLFF2KSkseTEodGhpcyxRdixudWxsKSksdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCksXzEodGhp'@; put 'cyxDdykuZGVzdHJveSgpLHRoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLnRvcE92ZXJsYXkuZGVzdHJveSgpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhpcy5ib3R0b21PdmVybGF5LmRlc3Ryb3koKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5kZXN0cm95KCksdGhpcy50'@; put 'b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tSW5s'@; put 'aW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3llZD0hMH1yZWZyZXNoKGU9ITEpe3RoaXMudmVydGljYWxTY3JvbGxpbmd8fHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZz9fMSh0aGlzLGNZKS5jYWxsKHRoaXMpOlJMKHRoaXMsQWxlLEVrZSkuY2FsbCh0aGlzKSx0'@; put 'aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tT3ZlcmxheS5yZWZyZXNoKGUpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LnJlZnJlc2goZSksdGhpcy50b3BPdmVybGF5LnJlZnJlc2goZSksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMudG9wSW5saW5l'@; put 'U3RhcnRDb3JuZXJPdmVybGF5LnJlZnJlc2goZSksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lJiZ0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZWZyZXNoKGUpfXVwZGF0ZUxh'@; put 'c3RTcHJlYWRlclNpemUoKXtjb25zdCBlPXRoaXMud3RUYWJsZS5zcHJlYWRlcix0PWUuY2xpZW50V2lkdGgscj1lLmNsaWVudEhlaWdodCxpPXQhPT10aGlzLnNwcmVhZGVyTGFzdFNpemUud2lkdGh8fHIhPT10aGlzLnNwcmVhZGVyTGFzdFNpemUuaGVpZ2h0O3JldHVybiBpJiYodGhpcy5z'@; put 'cHJlYWRlckxhc3RTaXplLndpZHRoPXQsdGhpcy5zcHJlYWRlckxhc3RTaXplLmhlaWdodD1yKSxpfWFkanVzdEVsZW1lbnRzU2l6ZSgpe2NvbnN0e3d0Vmlld3BvcnQ6ZX09dGhpcy53b3Qse3d0VGFibGU6dH09dGhpcyx7cm9vdFdpbmRvdzpyfT10aGlzLmRvbUJpbmRpbmdzLGk9dGhpcy5z'@; put 'Y3JvbGxhYmxlRWxlbWVudD09PXIsbz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksYT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiksbD1lLmdldFJvd0hlYWRlcldpZHRoKCksdT1lLmdldENvbHVtbkhlYWRlckhlaWdodCgpLGc9dGhp'@; put 'cy53dFNldHRpbmdzLmdldFNldHRpbmcoImV4dGVybmFsUm93Q2FsY3VsYXRvciIpPzA6MSxFPXUrdGhpcy50b3BPdmVybGF5LnN1bUNlbGxTaXplcygwLGEpK2csTz1sK3RoaXMuaW5saW5lU3RhcnRPdmVybGF5LnN1bUNlbGxTaXplcygwLG8pLGVlPXQuaGlkZXIuc3R5bGUsSGU9KCgpPT4h'@; put 'aSYmdGhpcy5zY3JvbGxhYmxlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZ0aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcD5NYXRoLm1heCgwLEUtdC5ob2xkZXIuY2xpZW50SGVpZ2h0KSkoKT8xOjAsV2U9KCgpPT4haSYmdGhpcy5zY3JvbGxhYmxlRWxlbWVudCBpbnN0'@; put 'YW5jZW9mIEhUTUxFbGVtZW50JiZ0aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQ+TWF0aC5tYXgoMCxPLXQuaG9sZGVyLmNsaWVudFdpZHRoKSkoKT8xOjA7ZWUud2lkdGg9YCR7TytXZX1weGAsZWUuaGVpZ2h0PWAke0UrSGV9cHhgLHRoaXMudG9wT3ZlcmxheS5hZGp1c3RFbGVt'@; put 'ZW50c1NpemUoKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlzLmJvdHRvbU92ZXJsYXkuYWRqdXN0RWxlbWVudHNTaXplKCl9ZXhwYW5kSGlkZXJWZXJ0aWNhbGx5QnkoZSl7Y29uc3R7d3RUYWJsZTp0fT10aGlzO3QuaGlkZXIuc3R5bGUuaGVpZ2h0'@; put 'PWAke3BhcnNlSW50KHQuaGlkZXIuc3R5bGUuaGVpZ2h0LDEwKStlfXB4YH1leHBhbmRIaWRlckhvcml6b250YWxseUJ5KGUpe2NvbnN0e3d0VGFibGU6dH09dGhpczt0LmhpZGVyLnN0eWxlLndpZHRoPWAke3BhcnNlSW50KHQuaGlkZXIuc3R5bGUud2lkdGgsMTApK2V9cHhgfWFwcGx5VG9E'@; put 'T00oKXt0aGlzLnd0VGFibGUuaXNWaXNpYmxlKCkmJih0aGlzLnRvcE92ZXJsYXkuYXBwbHlUb0RPTSgpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhpcy5ib3R0b21PdmVybGF5LmFwcGx5VG9ET00oKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5hcHBseVRvRE9NKCksXzEodGhpcyxD'@; put 'dykuc3luY09mZnNldHMoKSl9Z2V0UGFyZW50T3ZlcmxheShlKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgcj1udWxsO3JldHVybiBYbihbdGhpcy50b3BPdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LHRoaXMuYm90dG9tT3ZlcmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3Zl'@; put 'cmxheSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheV0saT0+e2kmJmkuY2xvbmUmJmkuY2xvbmUud3RUYWJsZS5UQUJMRS5jb250YWlucyhlKSYmKHI9aS5jbG9uZSl9KSxyfXN5bmNPdmVybGF5VGFibGVDbGFzc05hbWVzKCl7Y29uc3QgZT10aGlzLnd0VGFibGUuVEFCTEU7'@; put 'WG4oW3RoaXMudG9wT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheSx0aGlzLmJvdHRvbU92ZXJsYXksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXldLHI9PntyJiZyLmNsb25lJiYoci5jbG9uZS53dFRhYmxl'@; put 'LlRBQkxFLmNsYXNzTmFtZT1lLmNsYXNzTmFtZSl9KX1jb25zdHJ1Y3RvcihlLHQscixpLG8sYSl7bFkodGhpcyx3a2UpLGxZKHRoaXMsQ2tlKSxsWSh0aGlzLFNrZSksbFkodGhpcyxBbGUpLFh2KHRoaXMsYncse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFh2KHRoaXMsSUwse3dyaXRh'@; put 'YmxlOiEwLHZhbHVlOnZvaWQgMH0pLFh2KHRoaXMsREwse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFh2KHRoaXMsTEwse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFh2KHRoaXMsd3cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFh2KHRoaXMsUXYse3dyaXRhYmxlOiEwLHZh'@; put 'bHVlOnZvaWQgMH0pLFh2KHRoaXMsY1kse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFh2KHRoaXMsQ3cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuc2Nyb2xsYmFyU2l6ZT0wLHRoaXMuZGVzdHJveWVkPSExLHRoaXMua2V5UHJlc3NlZD0hMSx0aGlzLnNwcmVhZGVyTGFz'@; put 'dFNpemU9e3dpZHRoOm51bGwsaGVpZ2h0Om51bGx9LHRoaXMudmVydGljYWxTY3JvbGxpbmc9ITEsdGhpcy5ob3Jpem9udGFsU2Nyb2xsaW5nPSExLHRoaXMubGFzdFNjcm9sbFg9MCx0aGlzLmxhc3RTY3JvbGxZPTAseTEodGhpcyxidyxbXSkseTEodGhpcyxJTCwhMSkseTEodGhpcyxETCxu'@; put 'dWxsKSx5MSh0aGlzLExMLG51bGwpLHkxKHRoaXMsd3csMCkseTEodGhpcyxRdixudWxsKSx5MSh0aGlzLGNZLEJNKFJMKHRoaXMsQWxlLEVrZSkuYmluZCh0aGlzKSwyMDApKSx5MSh0aGlzLEN3LG5ldyBkQXQodGhpcykpLHRoaXMucmVzaXplT2JzZXJ2ZXI9bmV3IFJlc2l6ZU9ic2VydmVy'@; put 'KE89Pnt1TCgoKT0+eyFBcnJheS5pc0FycmF5KE8pfHwhTy5sZW5ndGh8fCh5MSh0aGlzLHd3LF8xKHRoaXMsd3cpKzEpLDMwMD09PV8xKHRoaXMsd3cpJiYoSGEoIlRoZSBSZXNpemVPYnNlcnZlciBjYWxsYmFjayB3YXMgZmlyZWQgdG9vIG1hbnkgdGltZXMgaW4gZGlyZWN0IHN1Y2Nlc3Np'@; put 'b24uXG5UaGlzIG1heSBiZSBkdWUgdG8gYW4gaW5maW5pdGUgbG9vcCBjYXVzZWQgYnkgc2V0dGluZyBhIGR5bmFtaWMgaGVpZ2h0L3dpZHRoIChmb3IgZXhhbXBsZSwgd2l0aCB0aGUgYGR2aGAgdW5pdHMpIHRvIGEgSGFuZHNvbnRhYmxlIGNvbnRhaW5lcidzIHBhcmVudC4gXG5UaGUgb2Jz'@; put 'ZXJ2ZXIgd2lsbCBiZSBkaXNjb25uZWN0ZWQuIiksdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCkpLG51bGwhPT1fMSh0aGlzLFF2KSYmY2xlYXJUaW1lb3V0KF8xKHRoaXMsUXYpKSx5MSh0aGlzLFF2LHNldFRpbWVvdXQoKCk9Pnt5MSh0aGlzLHd3LDApfSwxMDApKSx0aGlzLnd0'@; put 'U2V0dGluZ3MuZ2V0U2V0dGluZygib25Db250YWluZXJFbGVtZW50UmVzaXplIikpfSl9KSx0aGlzLndvdD1lLHRoaXMud3RTZXR0aW5ncz1pLHRoaXMuZG9tQmluZGluZ3M9cix0aGlzLmZhY2FkZUdldHRlcj10LHRoaXMud3RUYWJsZT1hO2NvbnN0e3Jvb3REb2N1bWVudDpsLHJvb3RXaW5k'@; put 'b3c6dX09dGhpcy5kb21CaW5kaW5nczt0aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMuZXZlbnRNYW5hZ2VyPW8sdGhpcy5zY3JvbGxiYXJTaXplPUdkKGwpO2NvbnN0IGc9YS53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUsRT1udWxsIT09ZyYmMT09PWcubm9kZVR5cGUmJigoKT0+e2NvbnN0'@; put 'IE89dS5nZXRDb21wdXRlZFN0eWxlKGcpLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iik7cmV0dXJuImhpZGRlbiI9PT1PfHwiY2xpcCI9PT1PfSkoKTt0aGlzLnNjcm9sbGFibGVFbGVtZW50PUU/YS5ob2xkZXI6bUwoYS5UQUJMRSksdGhpcy5pbml0T3ZlcmxheXMoKSxSTCh0aGlzLHdr'@; put 'ZSx5QXQpLmNhbGwodGhpcyksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5rZXlQcmVzc2VkPSExLHRoaXMuc3ByZWFkZXJMYXN0U2l6ZT17d2lkdGg6bnVsbCxoZWlnaHQ6bnVsbH0sdGhpcy52ZXJ0aWNhbFNjcm9sbGluZz0hMSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9ITEsdGhpcy5pbml0'@; put 'QnJvd3NlckxpbmVIZWlnaHQoKSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCksdGhpcy5sYXN0U2Nyb2xsWD11LnNjcm9sbFgsdGhpcy5sYXN0U2Nyb2xsWT11LnNjcm9sbFl9fTtjbGFzcyBTQXR7Z2V0RGVmYXVsdHMoKXtyZXR1cm57ZmFjYWRlOnZvaWQgMCx0YWJsZTp2b2lkIDAsaXNEYXRh'@; put 'Vmlld0luc3RhbmNlOiEwLGV4dGVybmFsUm93Q2FsY3VsYXRvcjohMSxjdXJyZW50Um93Q2xhc3NOYW1lOm51bGwsY3VycmVudENvbHVtbkNsYXNzTmFtZTpudWxsLHByZXZlbnRPdmVyZmxvdzooKT0+ITEscHJldmVudFdoZWVsOiExLGRhdGE6dm9pZCAwLGZpeGVkQ29sdW1uc1N0YXJ0OjAs'@; put 'Zml4ZWRSb3dzVG9wOjAsZml4ZWRSb3dzQm90dG9tOjAsc2hvdWxkUmVuZGVySW5saW5lU3RhcnRPdmVybGF5OigpPT50aGlzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik+MHx8dGhpcy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoPjAsc2hvdWxkUmVuZGVyVG9wT3Zl'@; put 'cmxheTooKT0+dGhpcy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKT4wfHx0aGlzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg+MCxzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5OigpPT50aGlzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpPjAsbWluU3BhcmVSb3dz'@; put 'OjAscm93SGVhZGVyczooKT0+W10sY29sdW1uSGVhZGVyczooKT0+W10sdG90YWxSb3dzOnZvaWQgMCx0b3RhbENvbHVtbnM6dm9pZCAwLGNlbGxSZW5kZXJlcjooZSx0LHIpPT57eTcocix0aGlzLmdldFNldHRpbmcoImRhdGEiLGUsdCk/PyIiKX0sY29sdW1uV2lkdGgoKXt9LHJvd0hlaWdo'@; put 'dCgpe30scm93SGVpZ2h0QnlPdmVybGF5TmFtZSgpe30sZGVmYXVsdENvbHVtbldpZHRoOjUwLHNlbGVjdGlvbnM6bnVsbCxoaWRlQm9yZGVyT25Nb3VzZURvd25PdmVyOiExLHZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlOm51bGwsdmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJp'@; put 'ZGU6bnVsbCx2aWV3cG9ydFJvd1JlbmRlcmluZ1RocmVzaG9sZDpudWxsLHZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nVGhyZXNob2xkOm51bGwsb25DZWxsTW91c2VEb3duOm51bGwsb25DZWxsQ29udGV4dE1lbnU6bnVsbCxvbkNlbGxNb3VzZU92ZXI6bnVsbCxvbkNlbGxNb3VzZU92ZXJPdXRz'@; put 'aWRlOm51bGwsb25DZWxsTW91c2VPdXQ6bnVsbCxvbkNlbGxNb3VzZVVwOm51bGwsb25DZWxsRGJsQ2xpY2s6bnVsbCxvbkNlbGxDb3JuZXJNb3VzZURvd246bnVsbCxvbkNlbGxDb3JuZXJEYmxDbGljazpudWxsLGJlZm9yZURyYXc6bnVsbCxvbkRyYXc6bnVsbCxvbkJlZm9yZVJlbW92ZUNl'@; put 'bGxDbGFzc05hbWVzOm51bGwsb25BZnRlckRyYXdTZWxlY3Rpb246bnVsbCxvbkJlZm9yZURyYXdCb3JkZXJzOm51bGwsb25CZWZvcmVWaWV3cG9ydFNjcm9sbEhvcml6b250YWxseTplPT5lLG9uQmVmb3JlVmlld3BvcnRTY3JvbGxWZXJ0aWNhbGx5OmU9PmUsb25TY3JvbGxIb3Jpem9udGFs'@; put 'bHk6bnVsbCxvblNjcm9sbFZlcnRpY2FsbHk6bnVsbCxvbkJlZm9yZVRvdWNoU2Nyb2xsOm51bGwsb25BZnRlck1vbWVudHVtU2Nyb2xsOm51bGwsb25Nb2RpZnlSb3dIZWFkZXJXaWR0aDpudWxsLG9uTW9kaWZ5R2V0Q2VsbENvb3JkczpudWxsLG9uTW9kaWZ5R2V0Q29vcmRzRWxlbWVudDpu'@; put 'dWxsLG9uTW9kaWZ5R2V0Q29vcmRzOm51bGwsb25CZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXI6ZT0+ZSxvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjplPT5lLG9uV2luZG93UmVzaXplOm51bGwsb25Db250YWluZXJFbGVtZW50UmVzaXplOm51bGwscmVuZGVyQWxsQ29sdW1u'@; put 'czohMSxyZW5kZXJBbGxSb3dzOiExLGdyb3VwczohMSxyb3dIZWFkZXJXaWR0aDpudWxsLGNvbHVtbkhlYWRlckhlaWdodDpudWxsLGhlYWRlckNsYXNzTmFtZTpudWxsLHJ0bE1vZGU6ITEsYXJpYVRhZ3M6ITAsc3R5bGVzSGFuZGxlcjpudWxsfX11cGRhdGUoZSx0KXtyZXR1cm4gdm9pZCAw'@; put 'PT09dD9hYyhlLChyLGkpPT57dGhpcy5zZXR0aW5nc1tpXT1yfSk6dGhpcy5zZXR0aW5nc1tlXT10LHRoaXN9Z2V0U2V0dGluZyhlLHQscixpLG8pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNldHRpbmdzW2VdP3RoaXMuc2V0dGluZ3NbZV0odCxyLGksbyk6dm9pZCAwIT09dCYm'@; put 'QXJyYXkuaXNBcnJheSh0aGlzLnNldHRpbmdzW2VdKT90aGlzLnNldHRpbmdzW2VdW3RdOnRoaXMuc2V0dGluZ3NbZV19Z2V0U2V0dGluZ1B1cmUoZSl7cmV0dXJuIHRoaXMuc2V0dGluZ3NbZV19aGFzKGUpe3JldHVybiEhdGhpcy5zZXR0aW5nc1tlXX1jb25zdHJ1Y3RvcihlKXt0aGlzLnNl'@; put 'dHRpbmdzPXt9LHRoaXMuZGVmYXVsdHM9T2JqZWN0LmZyZWV6ZSh0aGlzLmdldERlZmF1bHRzKCkpLGFjKHRoaXMuZGVmYXVsdHMsKHQscik9Pnt2b2lkIDAhPT1lW3JdP3RoaXMuc2V0dGluZ3Nbcl09ZVtyXTp2b2lkIDA9PT10P0pyKGBBIHJlcXVpcmVkIHNldHRpbmcgIiR7cn0iIHdhcyBu'@; put 'b3QgcHJvdmlkZWRgKTp0aGlzLnNldHRpbmdzW3JdPXR9KX19ZnVuY3Rpb24gTWtlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9u'@; put 'IEpNKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIE1BdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sTWtlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIHVZKG4sZSx0KXsoZnVuY3Rpb24gRUF0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90'@; put 'IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBIMyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIFRBdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFi'@; put 'bGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sTWtlKG4sZSwic2V0IiksdCksdH12YXIgSnY9bmV3IFdlYWtNYXAsZVQ9bmV3IFdlYWtNYXAsdFQ9bmV3IFdlYWtNYXAsT0w9bmV3IFdlYWtNYXA7'@; put 'Y2xhc3Mga2xlIGV4dGVuZHMgS017YWxpZ25PdmVybGF5c1dpdGhUcmltbWluZ0NvbnRhaW5lcigpe2NvbnN0IGU9SnYuaGFzKHRoaXMpLHQ9SE0odGhpcy53dFJvb3RFbGVtZW50KSx7cm9vdFdpbmRvdzpyfT10aGlzLmRvbUJpbmRpbmdzO2lmKHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7'@; put 'aWYoZSl7aWYoSk0odGhpcyxPTCkhPT10KXtKTSh0aGlzLGVUKT8uZGlzY29ubmVjdCgpLEpNKHRoaXMsdFQpPy5kaXNjb25uZWN0KCksSDModGhpcyxKdixudWxsKSxIMyh0aGlzLE9MLHQpO2NvbnN0IHZlPSgpPT57SDModGhpcyxKdixudWxsKX0sTWU9bmV3IFJlc2l6ZU9ic2VydmVyKHZl'@; put 'KTtNZS5vYnNlcnZlKHQpLEgzKHRoaXMsZVQsTWUpO2NvbnN0IEhlPW5ldyBSZXNpemVPYnNlcnZlcih2ZSk7SGUub2JzZXJ2ZSh0aGlzLmhpZGVyKSxIMyh0aGlzLHRULEhlKX1jb25zdCBpPXQub2Zmc2V0V2lkdGgsbz10Lm9mZnNldEhlaWdodCxhPXQuc2Nyb2xsV2lkdGgsbD10LnNjcm9s'@; put 'bEhlaWdodCx1PXV3KHQsIm92ZXJmbG93IixyKT8/IiIsZz11dyh0LCJoZWlnaHQiLHIpPz8iIixFPXRoaXMuaGlkZXIub2Zmc2V0SGVpZ2h0LE89dGhpcy5oaWRlci5vZmZzZXRXaWR0aCxaPUpNKHRoaXMsSnYpO2lmKG51bGwhPT1aJiZaLnRyaW1taW5nT2Zmc2V0V2lkdGg9PT1pJiZaLnRy'@; put 'aW1taW5nT2Zmc2V0SGVpZ2h0PT09byYmWi50cmltbWluZ1Njcm9sbFdpZHRoPT09YSYmWi50cmltbWluZ1Njcm9sbEhlaWdodD09PWwmJloudHJpbW1pbmdPdmVyZmxvdz09PXUmJloudHJpbW1pbmdIZWlnaHQ9PT1nJiZaLmhpZGVyT2Zmc2V0SGVpZ2h0PT09RSYmWi5oaWRlck9mZnNldFdp'@; put 'ZHRoPT09Tyl7Y29uc3QgdmU9dGhpcy5ob2xkZXIuc3R5bGU7dmUud2lkdGg9Wi5ob2xkZXJXaWR0aCx2ZS5oZWlnaHQ9Wi5ob2xkZXJIZWlnaHQsdmUub3ZlcmZsb3c9IiIsdGhpcy5oYXNUYWJsZUhlaWdodD1aLmhhc1RhYmxlSGVpZ2h0LHRoaXMuaGFzVGFibGVXaWR0aD1aLmhhc1RhYmxl'@; put 'V2lkdGh9ZWxzZXtjb25zdCB2ZT10LnBhcmVudEVsZW1lbnQsTWU9dGhpcy5ob2xkZXIuc3R5bGU7bGV0IEhlPWksV2U9bztjb25zdCBhdD1bImF1dG8iLCJoaWRkZW4iLCJzY3JvbGwiLCJjbGlwIl0sQ3Q9dT91LnNwbGl0KCIgIikuc29tZShDbj0+YXQuaW5jbHVkZXMoQ24pKTpbdXcodCwi'@; put 'b3ZlcmZsb3dYIixyKSx1dyh0LCJvdmVyZmxvd1kiLHIpXS5zb21lKENuPT5DbiYmYXQuaW5jbHVkZXMoQ24pKTtsZXQgQXQ9ImF1dG8iPT09ZztpZih2ZSYmQ3Qpe2NvbnN0IENuPXQuY2xvbmVOb2RlKCExKTtDbi5zdHlsZS5vdmVyZmxvdz0iYXV0byIsQ24uc3R5bGUucG9zaXRpb249ImFi'@; put 'c29sdXRlIixDbi5zdHlsZS5ib3JkZXI9IjAiLENuLnN0eWxlLnBhZGRpbmc9IjAiLHQubmV4dEVsZW1lbnRTaWJsaW5nP3ZlLmluc2VydEJlZm9yZShDbix0Lm5leHRFbGVtZW50U2libGluZyk6dmUuYXBwZW5kQ2hpbGQoQ24pO2NvbnN0IHFyPXBhcnNlSW50KHIuZ2V0Q29tcHV0ZWRTdHls'@; put 'ZShDbikuaGVpZ2h0LDEwKTtpZih2ZS5yZW1vdmVDaGlsZChDbiksMD09PXFyKXtXZT0wO2NvbnN0ICRuPXIuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxUcj0kbi5vdmVyZmxvd1gscmk9JG4ub3ZlcmZsb3dZOygiYXV0byI9PT1Ucnx8InNjcm9sbCI9PT1UcikmJiJhdXRvIiE9PXJpJiYic2Nyb2xs'@; put 'IiE9PXJpJiYoQXQ9ITApfX1XZT1NYXRoLm1pbihXZSxsKSxIZT1NYXRoLm1pbihIZSxhKTtjb25zdCBLdD1BdD8iYXV0byI6YCR7V2V9cHhgLHF0PWAke0hlfXB4YCxnbj0iYXV0byI9PT1LdHx8V2U+MCxUbj1IZT4wO01lLmhlaWdodD1LdCxNZS53aWR0aD1xdCxNZS5vdmVyZmxvdz0iIix0'@; put 'aGlzLmhhc1RhYmxlSGVpZ2h0PWduLHRoaXMuaGFzVGFibGVXaWR0aD1UbixIZT4wJiZIMyh0aGlzLEp2LHt0cmltbWluZ09mZnNldFdpZHRoOmksdHJpbW1pbmdPZmZzZXRIZWlnaHQ6byx0cmltbWluZ1Njcm9sbFdpZHRoOmEsdHJpbW1pbmdTY3JvbGxIZWlnaHQ6bCx0cmltbWluZ092ZXJm'@; put 'bG93OnUsdHJpbW1pbmdIZWlnaHQ6ZyxoaWRlck9mZnNldEhlaWdodDpFLGhpZGVyT2Zmc2V0V2lkdGg6Tyxob2xkZXJXaWR0aDpxdCxob2xkZXJIZWlnaHQ6S3QsaGFzVGFibGVIZWlnaHQ6Z24saGFzVGFibGVXaWR0aDpUbn0pfX19ZWxzZSB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygi'@; put 'cHJldmVudE92ZXJmbG93Iil8fCh0aGlzLmhvbGRlci5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsdGhpcy53dFJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIik7dGhpcy5pc1RhYmxlVmlzaWJsZT1Vdih0aGlzLlRBQkxFKX1tYXJrT3ZlcnNpemVkQ29sdW1uSGVhZGVycygp'@; put 'e2NvbnN0e3d0U2V0dGluZ3M6ZX09dGhpcyx7d3RWaWV3cG9ydDp0fT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qscj0ibWFzdGVyIixvPWUuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aDtpZihvJiYhdC5oYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkW3JdKXtjb25zdCBs'@; put 'PWUuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aCx1PXRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKTtmb3IobGV0IGc9MDtnPG87ZysrKWZvcihsZXQgRT0tMSpsO0U8dTtFKyspdGhpcy5tYXJrSWZPdmVyc2l6ZWRDb2x1bW5IZWFkZXIoRSk7dC5oYXNPdmVyc2l6ZWRDb2x1'@; put 'bW5IZWFkZXJzTWFya2VkW3JdPSEwfX1kZXN0cm95KCl7Sk0odGhpcyxlVCk/LmRpc2Nvbm5lY3QoKSxKTSh0aGlzLHRUKT8uZGlzY29ubmVjdCgpLEgzKHRoaXMsSnYsbnVsbCksSDModGhpcyxlVCxudWxsKSxIMyh0aGlzLHRULG51bGwpLEgzKHRoaXMsT0wsbnVsbCl9Y29uc3RydWN0b3Io'@; put 'ZSx0LHIsaSl7c3VwZXIoZSx0LHIsaSwibWFzdGVyIiksdVkodGhpcyxKdix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdVkodGhpcyxlVCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdVkodGhpcyx0VCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdVkodGhpcyxPTCx7d3Jp'@; put 'dGFibGU6ITAsdmFsdWU6dm9pZCAwfSksSDModGhpcyxKdixudWxsKSxIMyh0aGlzLGVULG51bGwpLEgzKHRoaXMsdFQsbnVsbCksSDModGhpcyxPTCxudWxsKX19WWwoa2xlLGRrZSksWWwoa2xlLHVsZSk7Y29uc3QgeEF0PWtsZTtmdW5jdGlvbiBUa2Uobix7dG90YWxDb3VudDplLHplcm9C'@; put 'YXNlZFNjcm9sbE9mZnNldDp0LHNjcm9sbEVuZDpyLHBvc2l0aW9uQ2FjaGU6aSxzZXRTaXplRmllbGQ6byxzZXRUb3RhbENhbGN1bGF0ZWQ6YSxnZXRUb3RhbENhbGN1bGF0ZWQ6bH0pe24uX2luaXRpYWxpemUobik7bGV0IHU9MDt0PjAmJmU+MCYmKHU9aS5maW5kSW5kZXhBdE9mZnNldCh0'@; put 'KSxhKG4saS5nZXRPZmZzZXQodSkpKTtsZXQgZz0tMTtmb3IobGV0IEU9dTtFPGU7RSsrKXtjb25zdCBPPWkuZ2V0U2l6ZUF0KEUpO2lmKG8obixPKSxuLl9wcm9jZXNzKEUsbiksZz1FLGEobixsKG4pK08pLGwobik+PXIpe24ubmVlZFJldmVyc2U9ITE7YnJlYWt9fW4ubGFzdFByb2Nlc3Nl'@; put 'ZEluZGV4PWcsbi5fZmluYWxpemUobil9Y2xhc3MgeGtle19pbml0aWFsaXplKGUpe3RoaXMuY2FsY3VsYXRpb25UeXBlcy5mb3JFYWNoKChbdCxyXSk9Pnt0aGlzLmNhbGN1bGF0aW9uUmVzdWx0cy5zZXQodCxyKSxyLmluaXRpYWxpemUoZSl9KX1fcHJvY2VzcyhlLHQpe3RoaXMuY2FsY3Vs'@; put 'YXRpb25UeXBlcy5mb3JFYWNoKChbLHJdKT0+ci5wcm9jZXNzKGUsdCkpfV9maW5hbGl6ZShlKXt0aGlzLmNhbGN1bGF0aW9uVHlwZXMuZm9yRWFjaCgoWyx0XSk9PnQuZmluYWxpemUoZSkpfWdldFJlc3VsdHNGb3IoZSl7cmV0dXJuIHRoaXMuY2FsY3VsYXRpb25SZXN1bHRzLmdldChlKX1j'@; put 'b25zdHJ1Y3RvcihlKXt0aGlzLmNhbGN1bGF0aW9uVHlwZXM9W10sdGhpcy5jYWxjdWxhdGlvblJlc3VsdHM9bmV3IE1hcCx0aGlzLmNhbGN1bGF0aW9uVHlwZXM9ZX19Y2xhc3MgQUF0IGV4dGVuZHMgeGtle2NhbGN1bGF0ZSgpe3RoaXMucG9zaXRpb25DYWNoZSYmVGtlKHRoaXMse3RvdGFs'@; put 'Q291bnQ6dGhpcy50b3RhbFJvd3MsemVyb0Jhc2VkU2Nyb2xsT2Zmc2V0OnRoaXMuemVyb0Jhc2VkU2Nyb2xsT2Zmc2V0LHNjcm9sbEVuZDp0aGlzLmlubmVyVmlld3BvcnRIZWlnaHQscG9zaXRpb25DYWNoZTp0aGlzLnBvc2l0aW9uQ2FjaGUsc2V0U2l6ZUZpZWxkOihlLHQpPT57ZS5yb3dI'@; put 'ZWlnaHQ9dH0sc2V0VG90YWxDYWxjdWxhdGVkOihlLHQpPT57ZS50b3RhbENhbGN1bGF0ZWRIZWlnaHQ9dH0sZ2V0VG90YWxDYWxjdWxhdGVkOmU9PmUudG90YWxDYWxjdWxhdGVkSGVpZ2h0fSl9Z2V0UmVzdWx0c0ZvcihlKXtyZXR1cm4gdGhpcy5jYWxjdWxhdGlvblJlc3VsdHMuZ2V0KGUp'@; put 'fWdldFJvd0hlaWdodChlKXtyZXR1cm4gdGhpcy5wb3NpdGlvbkNhY2hlPy5nZXRTaXplQXQoZSk/PzB9Y29uc3RydWN0b3Ioe2NhbGN1bGF0aW9uVHlwZXM6ZSx2aWV3cG9ydEhlaWdodDp0LHNjcm9sbE9mZnNldDpyLHRvdGFsUm93czppLG92ZXJyaWRlRm46byxob3Jpem9udGFsU2Nyb2xs'@; put 'YmFySGVpZ2h0OmEscm93SGVpZ2h0Q2FjaGU6bH0pe3N1cGVyKGUpLHRoaXMudmlld3BvcnRIZWlnaHQ9MCx0aGlzLnNjcm9sbE9mZnNldD0wLHRoaXMuemVyb0Jhc2VkU2Nyb2xsT2Zmc2V0PTAsdGhpcy50b3RhbFJvd3M9MCx0aGlzLnJvd0hlaWdodD0wLHRoaXMub3ZlcnJpZGVGbj1udWxs'@; put 'LHRoaXMuaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodD0wLHRoaXMuaW5uZXJWaWV3cG9ydEhlaWdodD0wLHRoaXMudG90YWxDYWxjdWxhdGVkSGVpZ2h0PTAsdGhpcy5uZWVkUmV2ZXJzZT0hMCx0aGlzLnBvc2l0aW9uQ2FjaGU9bnVsbCx0aGlzLmxhc3RQcm9jZXNzZWRJbmRleD0tMSx0aGlz'@; put 'LnZpZXdwb3J0SGVpZ2h0PXQsdGhpcy5zY3JvbGxPZmZzZXQ9cix0aGlzLnplcm9CYXNlZFNjcm9sbE9mZnNldD1NYXRoLm1heChyLDApLHRoaXMudG90YWxSb3dzPWksdGhpcy5vdmVycmlkZUZuPW8sdGhpcy5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0PWE/PzAsdGhpcy5pbm5lclZpZXdw'@; put 'b3J0SGVpZ2h0PXRoaXMuemVyb0Jhc2VkU2Nyb2xsT2Zmc2V0K3RoaXMudmlld3BvcnRIZWlnaHQtdGhpcy5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0LHRoaXMucG9zaXRpb25DYWNoZT1sLHRoaXMuY2FsY3VsYXRlKCl9fWNsYXNzIGtBdCBleHRlbmRzIHhrZXtjYWxjdWxhdGUoKXt0aGlz'@; put 'LnBvc2l0aW9uQ2FjaGUmJlRrZSh0aGlzLHt0b3RhbENvdW50OnRoaXMudG90YWxDb2x1bW5zLHplcm9CYXNlZFNjcm9sbE9mZnNldDp0aGlzLnplcm9CYXNlZFNjcm9sbE9mZnNldCxzY3JvbGxFbmQ6dGhpcy56ZXJvQmFzZWRTY3JvbGxPZmZzZXQrdGhpcy52aWV3cG9ydFdpZHRoLHBvc2l0'@; put 'aW9uQ2FjaGU6dGhpcy5wb3NpdGlvbkNhY2hlLHNldFNpemVGaWVsZDooZSx0KT0+e2UuY29sdW1uV2lkdGg9dH0sc2V0VG90YWxDYWxjdWxhdGVkOihlLHQpPT57ZS50b3RhbENhbGN1bGF0ZWRXaWR0aD10fSxnZXRUb3RhbENhbGN1bGF0ZWQ6ZT0+ZS50b3RhbENhbGN1bGF0ZWRXaWR0aH0p'@; put 'fWdldFJlc3VsdHNGb3IoZSl7cmV0dXJuIHRoaXMuY2FsY3VsYXRpb25SZXN1bHRzLmdldChlKX1nZXRDb2x1bW5XaWR0aChlKXtyZXR1cm4gdGhpcy5wb3NpdGlvbkNhY2hlPy5nZXRTaXplQXQoZSk/PzB9Y29uc3RydWN0b3Ioe2NhbGN1bGF0aW9uVHlwZXM6ZSx2aWV3cG9ydFdpZHRoOnQs'@; put 'c2Nyb2xsT2Zmc2V0OnIsdG90YWxDb2x1bW5zOmksb3ZlcnJpZGVGbjpvLGlubGluZVN0YXJ0T2Zmc2V0OmEsY29sdW1uV2lkdGhDYWNoZTpsfSl7c3VwZXIoZSksdGhpcy52aWV3cG9ydFdpZHRoPTAsdGhpcy5zY3JvbGxPZmZzZXQ9MCx0aGlzLnplcm9CYXNlZFNjcm9sbE9mZnNldD0wLHRo'@; put 'aXMudG90YWxDb2x1bW5zPTAsdGhpcy5jb2x1bW5XaWR0aD0wLHRoaXMub3ZlcnJpZGVGbj1udWxsLHRoaXMuaW5saW5lU3RhcnRPZmZzZXQ9MCx0aGlzLnRvdGFsQ2FsY3VsYXRlZFdpZHRoPTAsdGhpcy5uZWVkUmV2ZXJzZT0hMCx0aGlzLnBvc2l0aW9uQ2FjaGU9bnVsbCx0aGlzLmxhc3RQ'@; put 'cm9jZXNzZWRJbmRleD0tMSx0aGlzLnZpZXdwb3J0V2lkdGg9dCx0aGlzLnNjcm9sbE9mZnNldD1yLHRoaXMuemVyb0Jhc2VkU2Nyb2xsT2Zmc2V0PU1hdGgubWF4KHIsMCksdGhpcy50b3RhbENvbHVtbnM9aSx0aGlzLm92ZXJyaWRlRm49byx0aGlzLmlubGluZVN0YXJ0T2Zmc2V0PWEsdGhp'@; put 'cy5wb3NpdGlvbkNhY2hlPWwsdGhpcy5jYWxjdWxhdGUoKX19Y2xhc3MgUkF0e2luaXRpYWxpemUoe3RvdGFsUm93czplfSl7dGhpcy5jb3VudD1lLHRoaXMuZW5kUm93PXRoaXMuY291bnQtMX1wcm9jZXNzKCl7fWZpbmFsaXplKCl7fWNvbnN0cnVjdG9yKCl7dGhpcy5jb3VudD0wLHRoaXMu'@; put 'c3RhcnRSb3c9MCx0aGlzLmVuZFJvdz0wLHRoaXMuc3RhcnRQb3NpdGlvbj0wLHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hMH19Y2xhc3MgQWtle2luaXRpYWxpemUoKXt9cHJvY2VzcyhlLHQpe2NvbnN0e3RvdGFsQ2FsY3VsYXRlZEhlaWdodDpyLHplcm9CYXNlZFNjcm9s'@; put 'bE9mZnNldDppLGlubmVyVmlld3BvcnRIZWlnaHQ6b309dDtyPD1pJiYodGhpcy5zdGFydFJvdz1lKSxyPj1pJiZyPD1vJiZudWxsPT09dGhpcy5zdGFydFJvdyYmKHRoaXMuc3RhcnRSb3c9ZSksdGhpcy5lbmRSb3c9ZX1maW5hbGl6ZShlKXtjb25zdHtzY3JvbGxPZmZzZXQ6dCx2aWV3cG9y'@; put 'dEhlaWdodDpyLGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQ6aSx0b3RhbFJvd3M6byxuZWVkUmV2ZXJzZTphLHBvc2l0aW9uQ2FjaGU6bCxyb3dIZWlnaHQ6dX09ZTtpZihsKXtpZih0aGlzLmVuZFJvdz09PW8tMSYmYSlmb3IodGhpcy5zdGFydFJvdz10aGlzLmVuZFJvdzt0aGlzLnN0YXJ0'@; put 'Um93PjA7KXtjb25zdCBFPWwuZ2V0T2Zmc2V0KHRoaXMuZW5kUm93KSt1LWwuZ2V0T2Zmc2V0KHRoaXMuc3RhcnRSb3ctMSk7aWYodGhpcy5zdGFydFJvdy09MSxFPj1yLWkpYnJlYWt9dGhpcy5zdGFydFBvc2l0aW9uPW51bGwhPT10aGlzLnN0YXJ0Um93P2wuZ2V0T2Zmc2V0KHRoaXMuc3Rh'@; put 'cnRSb3cpOm51bGwsdGhpcy5pc1Zpc2libGVJblRyaW1taW5nQ29udGFpbmVyPSEodCtyLWk8MHx8dD5sLmdldE9mZnNldChlLmxhc3RQcm9jZXNzZWRJbmRleCkrdSksbnVsbCE9PXRoaXMuZW5kUm93JiZvPHRoaXMuZW5kUm93JiYodGhpcy5lbmRSb3c9by0xKSxudWxsIT09dGhpcy5zdGFy'@; put 'dFJvdyYmbnVsbCE9PXRoaXMuZW5kUm93JiYodGhpcy5jb3VudD10aGlzLmVuZFJvdy10aGlzLnN0YXJ0Um93KzEpfX1jb25zdHJ1Y3Rvcigpe3RoaXMuY291bnQ9MCx0aGlzLnN0YXJ0Um93PW51bGwsdGhpcy5lbmRSb3c9bnVsbCx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCx0aGlzLmlzVmlz'@; put 'aWJsZUluVHJpbW1pbmdDb250YWluZXI9ITF9fWNsYXNzIElBdCBleHRlbmRzIEFrZXtmaW5hbGl6ZShlKXtzdXBlci5maW5hbGl6ZShlKTtjb25zdHtvdmVycmlkZUZuOnQsdG90YWxSb3dzOnIscG9zaXRpb25DYWNoZTppfT1lO2lmKG51bGwhPT10aGlzLnN0YXJ0Um93JiYiZnVuY3Rpb24i'@; put 'PT10eXBlb2YgdCl7Y29uc3Qgbz10aGlzLnN0YXJ0Um93LGE9dGhpcy5lbmRSb3c7dCh0aGlzKSx0aGlzLnJvd1N0YXJ0T2Zmc2V0PW8tdGhpcy5zdGFydFJvdyx0aGlzLnJvd0VuZE9mZnNldD1udWxsIT09dGhpcy5lbmRSb3cmJm51bGwhPT1hP3RoaXMuZW5kUm93LWE6MH1udWxsIT09dGhp'@; put 'cy5zdGFydFJvdyYmdGhpcy5zdGFydFJvdzwwJiYodGhpcy5zdGFydFJvdz0wKSx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCE9PXRoaXMuc3RhcnRSb3cmJmk/aS5nZXRPZmZzZXQodGhpcy5zdGFydFJvdyk6bnVsbCxudWxsIT09dGhpcy5lbmRSb3cmJnI8dGhpcy5lbmRSb3cmJih0aGlzLmVu'@; put 'ZFJvdz1yLTEpLG51bGwhPT10aGlzLnN0YXJ0Um93JiZudWxsIT09dGhpcy5lbmRSb3cmJih0aGlzLmNvdW50PXRoaXMuZW5kUm93LXRoaXMuc3RhcnRSb3crMSl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksdGhpcy5yb3dTdGFydE9mZnNldD0wLHRoaXMucm93RW5kT2Zmc2V0PTB9'@; put 'fWNsYXNzIERBdHtpbml0aWFsaXplKCl7fXByb2Nlc3MoZSx0KXtjb25zdHt0b3RhbENhbGN1bGF0ZWRIZWlnaHQ6cix6ZXJvQmFzZWRTY3JvbGxPZmZzZXQ6aSxpbm5lclZpZXdwb3J0SGVpZ2h0Om8scm93SGVpZ2h0OmF9PXQ7cj49aSYmcithPD1vJiYobnVsbD09PXRoaXMuc3RhcnRSb3cm'@; put 'Jih0aGlzLnN0YXJ0Um93PWUpLHRoaXMuZW5kUm93PWUpfWZpbmFsaXplKGUpe2NvbnN0e3Njcm9sbE9mZnNldDp0LHZpZXdwb3J0SGVpZ2h0OnIsaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodDppLHRvdGFsUm93czpvLG5lZWRSZXZlcnNlOmEscG9zaXRpb25DYWNoZTpsLHJvd0hlaWdodDp1'@; put 'fT1lO2lmKCFsKXJldHVybjtpZih0aGlzLmVuZFJvdz09PW8tMSYmYSlmb3IodGhpcy5zdGFydFJvdz10aGlzLmVuZFJvdzt0aGlzLnN0YXJ0Um93PjA7KXtjb25zdCBPPWwuZ2V0T2Zmc2V0KHRoaXMuZW5kUm93KSt1LWwuZ2V0T2Zmc2V0KHRoaXMuc3RhcnRSb3ctMSk7aWYoTzw9ci1pJiYo'@; put 'dGhpcy5zdGFydFJvdy09MSksTz49ci1pKWJyZWFrfXRoaXMuc3RhcnRQb3NpdGlvbj1udWxsIT09dGhpcy5zdGFydFJvdz9sLmdldE9mZnNldCh0aGlzLnN0YXJ0Um93KTpudWxsO2NvbnN0IGc9dCtyLWksRT1udWxsPT09dGhpcy5zdGFydFJvdz8wOmUuZ2V0Um93SGVpZ2h0KHRoaXMuc3Rh'@; put 'cnRSb3cpO3RoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hKGc8RXx8dD5sLmdldE9mZnNldChlLmxhc3RQcm9jZXNzZWRJbmRleCkpLG51bGwhPT10aGlzLmVuZFJvdyYmbzx0aGlzLmVuZFJvdyYmKHRoaXMuZW5kUm93PW8tMSksbnVsbCE9PXRoaXMuc3RhcnRSb3cmJm51bGwh'@; put 'PT10aGlzLmVuZFJvdyYmKHRoaXMuY291bnQ9dGhpcy5lbmRSb3ctdGhpcy5zdGFydFJvdysxKX1jb25zdHJ1Y3Rvcigpe3RoaXMuY291bnQ9MCx0aGlzLnN0YXJ0Um93PW51bGwsdGhpcy5lbmRSb3c9bnVsbCx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCx0aGlzLmlzVmlzaWJsZUluVHJpbW1p'@; put 'bmdDb250YWluZXI9ITF9fWNsYXNzIExBdHtpbml0aWFsaXplKHt0b3RhbENvbHVtbnM6ZX0pe3RoaXMuY291bnQ9ZSx0aGlzLmVuZENvbHVtbj10aGlzLmNvdW50LTF9cHJvY2Vzcygpe31maW5hbGl6ZSgpe31jb25zdHJ1Y3Rvcigpe3RoaXMuY291bnQ9MCx0aGlzLnN0YXJ0Q29sdW1uPTAs'@; put 'dGhpcy5lbmRDb2x1bW49MCx0aGlzLnN0YXJ0UG9zaXRpb249MCx0aGlzLmlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXI9ITB9fWNsYXNzIGtrZXtpbml0aWFsaXplKCl7fXByb2Nlc3MoZSx0KXtjb25zdHt0b3RhbENhbGN1bGF0ZWRXaWR0aDpyLHplcm9CYXNlZFNjcm9sbE9mZnNldDpp'@; put 'LHZpZXdwb3J0V2lkdGg6b309dDtyPD1pJiYodGhpcy5zdGFydENvbHVtbj1lKSxyPj1pJiZyPD1pKyhpPjA/bysxOm8pJiZudWxsPT10aGlzLnN0YXJ0Q29sdW1uJiYodGhpcy5zdGFydENvbHVtbj1lKSx0aGlzLmVuZENvbHVtbj1lfWZpbmFsaXplKGUpe2NvbnN0e3Njcm9sbE9mZnNldDp0'@; put 'LHZpZXdwb3J0V2lkdGg6cixpbmxpbmVTdGFydE9mZnNldDppLHplcm9CYXNlZFNjcm9sbE9mZnNldDpvLHRvdGFsQ29sdW1uczphLG5lZWRSZXZlcnNlOmwscG9zaXRpb25DYWNoZTp1LGNvbHVtbldpZHRoOmd9PWU7aWYodSl7aWYodGhpcy5lbmRDb2x1bW49PT1hLTEmJmwpZm9yKHRoaXMu'@; put 'c3RhcnRDb2x1bW49dGhpcy5lbmRDb2x1bW47dGhpcy5zdGFydENvbHVtbj4wOyl7Y29uc3QgWj11LmdldE9mZnNldCh0aGlzLmVuZENvbHVtbikrZy11LmdldE9mZnNldCh0aGlzLnN0YXJ0Q29sdW1uLTEpO2lmKHRoaXMuc3RhcnRDb2x1bW4tPTEsWj5yKWJyZWFrfXRoaXMuc3RhcnRQb3Np'@; put 'dGlvbj1udWxsIT09dGhpcy5zdGFydENvbHVtbj91LmdldE9mZnNldCh0aGlzLnN0YXJ0Q29sdW1uKTpudWxsLHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hKHQrci0obz4wP3IrMTpyKTwtMSppfHx0PnUuZ2V0T2Zmc2V0KGUubGFzdFByb2Nlc3NlZEluZGV4KStnfHwtMSp0'@; put 'LXI+MCksbnVsbCE9PXRoaXMuZW5kQ29sdW1uJiZhPHRoaXMuZW5kQ29sdW1uJiYodGhpcy5lbmRDb2x1bW49YS0xKSxudWxsIT09dGhpcy5zdGFydENvbHVtbiYmbnVsbCE9PXRoaXMuZW5kQ29sdW1uJiYodGhpcy5jb3VudD10aGlzLmVuZENvbHVtbi10aGlzLnN0YXJ0Q29sdW1uKzEpfX1j'@; put 'b25zdHJ1Y3Rvcigpe3RoaXMuY291bnQ9MCx0aGlzLnN0YXJ0Q29sdW1uPW51bGwsdGhpcy5lbmRDb2x1bW49bnVsbCx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCx0aGlzLmlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXI9ITF9fWNsYXNzIE9BdCBleHRlbmRzIGtrZXtmaW5hbGl6ZShlKXtz'@; put 'dXBlci5maW5hbGl6ZShlKTtjb25zdHtvdmVycmlkZUZuOnQsdG90YWxDb2x1bW5zOnIscG9zaXRpb25DYWNoZTppfT1lO2lmKG51bGwhPT10aGlzLnN0YXJ0Q29sdW1uJiYiZnVuY3Rpb24iPT10eXBlb2YgdCl7Y29uc3Qgbz10aGlzLnN0YXJ0Q29sdW1uLGE9dGhpcy5lbmRDb2x1bW47dCh0'@; put 'aGlzKSx0aGlzLmNvbHVtblN0YXJ0T2Zmc2V0PW8tdGhpcy5zdGFydENvbHVtbix0aGlzLmNvbHVtbkVuZE9mZnNldD1udWxsIT09dGhpcy5lbmRDb2x1bW4mJm51bGwhPT1hP3RoaXMuZW5kQ29sdW1uLWE6MH1udWxsIT09dGhpcy5zdGFydENvbHVtbiYmdGhpcy5zdGFydENvbHVtbjwwJiYo'@; put 'dGhpcy5zdGFydENvbHVtbj0wKSx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCE9PXRoaXMuc3RhcnRDb2x1bW4mJmk/aS5nZXRPZmZzZXQodGhpcy5zdGFydENvbHVtbik6bnVsbCxudWxsIT09dGhpcy5lbmRDb2x1bW4mJnI8dGhpcy5lbmRDb2x1bW4mJih0aGlzLmVuZENvbHVtbj1yLTEpLG51'@; put 'bGwhPT10aGlzLnN0YXJ0Q29sdW1uJiZudWxsIT09dGhpcy5lbmRDb2x1bW4mJih0aGlzLmNvdW50PXRoaXMuZW5kQ29sdW1uLXRoaXMuc3RhcnRDb2x1bW4rMSl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksdGhpcy5jb2x1bW5TdGFydE9mZnNldD0wLHRoaXMuY29sdW1uRW5kT2Zm'@; put 'c2V0PTB9fWNsYXNzIE5BdHtpbml0aWFsaXplKCl7fXByb2Nlc3MoZSx0KXtjb25zdHt0b3RhbENhbGN1bGF0ZWRXaWR0aDpyLHplcm9CYXNlZFNjcm9sbE9mZnNldDppLHZpZXdwb3J0V2lkdGg6byxjb2x1bW5XaWR0aDphfT10O3I+PWkmJnIrYTw9aSsoaT4wP28rMTpvKSYmKG51bGw9PXRo'@; put 'aXMuc3RhcnRDb2x1bW4mJih0aGlzLnN0YXJ0Q29sdW1uPWUpLHRoaXMuZW5kQ29sdW1uPWUpfWZpbmFsaXplKGUpe2NvbnN0e3Njcm9sbE9mZnNldDp0LHZpZXdwb3J0V2lkdGg6cixpbmxpbmVTdGFydE9mZnNldDppLHplcm9CYXNlZFNjcm9sbE9mZnNldDpvLHRvdGFsQ29sdW1uczphLG5l'@; put 'ZWRSZXZlcnNlOmwscG9zaXRpb25DYWNoZTp1LGNvbHVtbldpZHRoOmd9PWU7aWYoIXUpcmV0dXJuO2lmKHRoaXMuZW5kQ29sdW1uPT09YS0xJiZsKWZvcih0aGlzLnN0YXJ0Q29sdW1uPXRoaXMuZW5kQ29sdW1uO3RoaXMuc3RhcnRDb2x1bW4+MDspe2NvbnN0IGVlPXUuZ2V0T2Zmc2V0KHRo'@; put 'aXMuZW5kQ29sdW1uKStnLXUuZ2V0T2Zmc2V0KHRoaXMuc3RhcnRDb2x1bW4tMSk7aWYoZWU8PXImJih0aGlzLnN0YXJ0Q29sdW1uLT0xKSxlZT49cilicmVha310aGlzLnN0YXJ0UG9zaXRpb249bnVsbCE9PXRoaXMuc3RhcnRDb2x1bW4/dS5nZXRPZmZzZXQodGhpcy5zdGFydENvbHVtbik6'@; put 'bnVsbDtjb25zdCBPPXQrci0obz4wP3IrMTpyKSxaPW51bGw9PT10aGlzLnN0YXJ0Q29sdW1uPzA6ZS5nZXRDb2x1bW5XaWR0aCh0aGlzLnN0YXJ0Q29sdW1uKTt0aGlzLmlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXI9IShPPC0xKml8fHQ+dS5nZXRPZmZzZXQoZS5sYXN0UHJvY2Vzc2Vk'@; put 'SW5kZXgpfHwtMSp0LXI+LTEqWiksbnVsbCE9PXRoaXMuZW5kQ29sdW1uJiZhPHRoaXMuZW5kQ29sdW1uJiYodGhpcy5lbmRDb2x1bW49YS0xKSxudWxsIT09dGhpcy5zdGFydENvbHVtbiYmbnVsbCE9PXRoaXMuZW5kQ29sdW1uJiYodGhpcy5jb3VudD10aGlzLmVuZENvbHVtbi10aGlzLnN0'@; put 'YXJ0Q29sdW1uKzEpfWNvbnN0cnVjdG9yKCl7dGhpcy5jb3VudD0wLHRoaXMuc3RhcnRDb2x1bW49bnVsbCx0aGlzLmVuZENvbHVtbj1udWxsLHRoaXMuc3RhcnRQb3NpdGlvbj1udWxsLHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hMX19ZnVuY3Rpb24gUmtlKG4sZSx0KXtp'@; put 'ZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIGRZKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFBBdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxs'@; put 'KG4pOmUudmFsdWV9KG4sUmtlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIFJsZShuLGUsdCl7KGZ1bmN0aW9uIEZBdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0'@; put 'Iil9KShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gSWxlKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gSEF0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2'@; put 'YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixSa2UobixlLCJzZXQiKSx0KSx0fXZhciBoWT1uZXcgV2Vha01hcCxEbGU9bmV3IFdlYWtNYXAsTGxlPW5ldyBXZWFrTWFwO2NsYXNzIElrZXtidWlsZCgpe2NvbnN0IGU9ZFkodGhpcyxoWSkuY2FsbCh0aGlzKSx0PWRZKHRoaXMsRGxlKSxyPWRZ'@; put 'KHRoaXMsTGxlKS5jYWxsKHRoaXMpO3RoaXMudG90YWxJdGVtcz1lLHRoaXMucHJlZml4U3VtPW5ldyBGbG9hdDY0QXJyYXkoZSsxKSx0aGlzLnByZWZpeFN1bVswXT0wO2ZvcihsZXQgaT0wO2k8ZTtpKyspe2NvbnN0IG89dChpKTt0aGlzLnByZWZpeFN1bVtpKzFdPXRoaXMucHJlZml4U3Vt'@; put 'W2ldKyhpc05hTihvKT9yOm8pfX1nZXRPZmZzZXQoZSl7cmV0dXJuIXRoaXMucHJlZml4U3VtfHxlPD0wPzA6ZT49dGhpcy50b3RhbEl0ZW1zP3RoaXMucHJlZml4U3VtW3RoaXMudG90YWxJdGVtc106dGhpcy5wcmVmaXhTdW1bZV19ZmluZEluZGV4QXRPZmZzZXQoZSl7aWYoIXRoaXMuaXNC'@; put 'dWlsdCgpfHxlPD0wfHwwPT09dGhpcy50b3RhbEl0ZW1zKXJldHVybiAwO2xldCB0PTAscj10aGlzLnRvdGFsSXRlbXM7Zm9yKDt0PHI7KXtjb25zdCBpPXQrcj4+PjE7dGhpcy5wcmVmaXhTdW1baSsxXTw9ZT90PWkrMTpyPWl9cmV0dXJuIE1hdGgubWluKHQsdGhpcy50b3RhbEl0ZW1zLTEp'@; put 'fWdldFNpemVBdChlKXtyZXR1cm4hdGhpcy5wcmVmaXhTdW18fGU8MHx8ZT49dGhpcy50b3RhbEl0ZW1zPzA6dGhpcy5wcmVmaXhTdW1bZSsxXS10aGlzLnByZWZpeFN1bVtlXX1lbnN1cmVCdWlsdCgpeyghdGhpcy5pc0J1aWx0KCl8fHRoaXMudG90YWxJdGVtcyE9PWRZKHRoaXMsaFkpLmNh'@; put 'bGwodGhpcykpJiZ0aGlzLmJ1aWxkKCl9Z2V0VG90YWxTaXplKCl7cmV0dXJuIHRoaXMucHJlZml4U3VtP3RoaXMucHJlZml4U3VtW3RoaXMudG90YWxJdGVtc106MH1pbnZhbGlkYXRlKCl7dGhpcy5wcmVmaXhTdW09bnVsbCx0aGlzLnRvdGFsSXRlbXM9MH1pc0J1aWx0KCl7cmV0dXJuIG51'@; put 'bGwhPT10aGlzLnByZWZpeFN1bX1jb25zdHJ1Y3Rvcih7dG90YWxJdGVtc0ZuOmUsc2l6ZUZuOnQsZGVmYXVsdFNpemVGbjpyfSl7UmxlKHRoaXMsaFkse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsZSh0aGlzLERsZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmxlKHRoaXMs'@; put 'TGxlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLnByZWZpeFN1bT1udWxsLHRoaXMudG90YWxJdGVtcz0wLElsZSh0aGlzLGhZLGUpLElsZSh0aGlzLERsZSx0KSxJbGUodGhpcyxMbGUscil9fWNvbnN0IEJBdD1jbGFzcyBWQXR7Z2V0V29ya3NwYWNlSGVpZ2h0KCl7Y29uc3Qg'@; put 'ZT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCx0PXRoaXMuZGF0YUFjY2Vzc09iamVjdC50b3BPdmVybGF5VHJpbW1pbmdDb250YWluZXI7bGV0IHI9MDtyZXR1cm4gcj10PT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93P2UuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDpI'@; put 'aCh0KT4wJiZ0LmNsaWVudEhlaWdodD4wP3QuY2xpZW50SGVpZ2h0Ok1hdGgubWF4KGUuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCwxKSxyfWdldFZpZXdwb3J0SGVpZ2h0KCl7bGV0IGU9dGhpcy5nZXRXb3Jrc3BhY2VIZWlnaHQoKTtjb25zdCB0PXRoaXMuZ2V0Q29sdW1uSGVhZGVy'@; put 'SGVpZ2h0KCk7cmV0dXJuIHQ+MCYmKGUtPXQpLGV9Z2V0V29ya3NwYWNlV2lkdGgoKXtjb25zdHtyb290RG9jdW1lbnQ6ZSxyb290V2luZG93OnR9PXRoaXMuZG9tQmluZGluZ3Mscj10aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250YWluZXI7bGV0'@; put 'IGk7aWYocj09PXQpe2NvbnN0IG89dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpO2k9dGhpcy53dFRhYmxlLmhvbGRlci5vZmZzZXRXaWR0aCx0aGlzLmdldFJvd0hlYWRlcldpZHRoKCkrdGhpcy5zdW1Db2x1bW5XaWR0aHMoMCxvKT5pJiYoaT1lLmRvY3VtZW50'@; put 'RWxlbWVudC5jbGllbnRXaWR0aCl9ZWxzZSBpPXIuY2xpZW50V2lkdGg7cmV0dXJuIGl9Z2V0Vmlld3BvcnRXaWR0aCgpe2NvbnN0IGU9dGhpcy5nZXRXb3Jrc3BhY2VXaWR0aCgpLHQ9dGhpcy5nZXRSb3dIZWFkZXJXaWR0aCgpO3JldHVybiB0PjA/ZS10OmV9aGFzVmVydGljYWxTY3JvbGwo'@; put 'KXtpZih0aGlzLmlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpKXtjb25zdCBvPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyZXR1cm4gby5zY3JvbGxIZWlnaHQ+by5jbGllbnRIZWlnaHR9Y29uc3R7aG9sZGVyOmUsaGlkZXI6dH09dGhpcy53'@; put 'dFRhYmxlLGk9dC5vZmZzZXRIZWlnaHQ7cmV0dXJuIGUuY2xpZW50SGVpZ2h0PGl8fGk+dGhpcy5nZXRXb3Jrc3BhY2VIZWlnaHQoKX1oYXNIb3Jpem9udGFsU2Nyb2xsKCl7aWYodGhpcy5pc1ZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3coKSl7Y29uc3QgaT10aGlzLmRvbUJpbmRpbmdz'@; put 'LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGkuc2Nyb2xsV2lkdGg+aS5jbGllbnRXaWR0aH1jb25zdHtoaWRlcjplfT10aGlzLnd0VGFibGUsdD1lLm9mZnNldFdpZHRoLHI9dGhpcy5oYXNWZXJ0aWNhbFNjcm9sbCgpP0dkKCk6MDtyZXR1cm4gdD50aGlzLmdldFdvcmtz'@; put 'cGFjZVdpZHRoKCktcn1pc1ZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3coKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvd31pc0hvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRv'@; put 'dygpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250YWluZXI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3d9c3VtQ29sdW1uV2lkdGhzKGUsdCl7bGV0IHI9MCxpPWU7Zm9yKDtpPHQ7KXIrPXRoaXMud3RUYWJsZS5nZXRDb2x1'@; put 'bW5XaWR0aChpKSxpKz0xO3JldHVybiByfWdldFdvcmtzcGFjZU9mZnNldCgpe3JldHVybiBYMCh0aGlzLnd0VGFibGUuaG9sZGVyKX1nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg/aXNOYU4o'@; put 'dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQpJiYodGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9dGhpcy53dFRhYmxlLlRIRUFEP0hoKHRoaXMud3RUYWJsZS5USEVBRCk6MCk6dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9MCx0aGlzLmNvbHVtbkhlYWRlckhlaWdodH1nZXRSb3dIZWFkZXJXaWR0aCgp'@; put 'e2NvbnN0IGU9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcldpZHRoIiksdD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpO2lmKGUpe3RoaXMucm93SGVhZGVyV2lkdGg9MDtmb3IobGV0IHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspe2NvbnN0IG89'@; put 'QXJyYXkuaXNBcnJheShlKT9lW3JdOmU7dGhpcy5yb3dIZWFkZXJXaWR0aCs9bz8/TmFOfX1pZihpc05hTih0aGlzLnJvd0hlYWRlcldpZHRoKSlpZih0Lmxlbmd0aCl7bGV0IHI9dGhpcy53dFRhYmxlLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoIlRIIik7dGhpcy5yb3dIZWFkZXJXaWR0aD0wO2Zv'@; put 'cihsZXQgaT0wLG89dC5sZW5ndGg7aTxvO2krKylyPyh0aGlzLnJvd0hlYWRlcldpZHRoKz1aZChyKSxyPXIubmV4dFNpYmxpbmcpOnRoaXMucm93SGVhZGVyV2lkdGgrPTUwfWVsc2UgdGhpcy5yb3dIZWFkZXJXaWR0aD0wO3JldHVybiB0aGlzLnJvd0hlYWRlcldpZHRoPXRoaXMud3RTZXR0'@; put 'aW5ncy5nZXRTZXR0aW5nKCJvbk1vZGlmeVJvd0hlYWRlcldpZHRoIix0aGlzLnJvd0hlYWRlcldpZHRoKXx8dGhpcy5yb3dIZWFkZXJXaWR0aCx0aGlzLnJvd0hlYWRlcldpZHRofWNyZWF0ZVJvd3NDYWxjdWxhdG9yKGU9WyJyZW5kZXJlZCIsImZ1bGx5VmlzaWJsZSIsInBhcnRpYWxseVZp'@; put 'c2libGUiXSl7Y29uc3R7d3RTZXR0aW5nczp0LHd0VGFibGU6cn09dGhpcyxpPXQuZ2V0U2V0dGluZygidG90YWxSb3dzIik7bGV0IGEsbCxvPXRoaXMuZ2V0Vmlld3BvcnRIZWlnaHQoKTt0aGlzLnJvd0hlYWRlcldpZHRoPU5hTjtsZXQgdT10aGlzLmRhdGFBY2Nlc3NPYmplY3QudG9wU2Ny'@; put 'b2xsUG9zaXRpb24tdGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcFBhcmVudE9mZnNldDtjb25zdCBnPXQuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksRT10LmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpO3JldHVybiBnJiZ1Pj0wJiYobD10aGlzLmRhdGFBY2Nlc3NPYmplY3QudG9w'@; put 'T3ZlcmxheS5zdW1DZWxsU2l6ZXMoMCxnKSx1Kz1sLG8tPWwpLEUmJnRoaXMuZGF0YUFjY2Vzc09iamVjdC5ib3R0b21PdmVybGF5LmNsb25lJiYobD10aGlzLmRhdGFBY2Nlc3NPYmplY3QuYm90dG9tT3ZlcmxheS5zdW1DZWxsU2l6ZXMoaS1FLGkpLG8tPWwpLGE9ci5ob2xkZXIuY2xpZW50'@; put 'SGVpZ2h0PT09ci5ob2xkZXIub2Zmc2V0SGVpZ2h0PzA6R2QodGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpLG5ldyBBQXQoe2NhbGN1bGF0aW9uVHlwZXM6ZS5mbGF0TWFwKE89Pntjb25zdCBaPXRoaXMucm93c0NhbGN1bGF0b3JUeXBlcy5nZXQoTyk7cmV0dXJuIFo/W1tPLFooKV1d'@; put 'OltdfSksdmlld3BvcnRIZWlnaHQ6byxzY3JvbGxPZmZzZXQ6dSx0b3RhbFJvd3M6aSxvdmVycmlkZUZuOnQuZ2V0U2V0dGluZ1B1cmUoInZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIiksaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodDphLHJvd0hlaWdodENhY2hlOnRoaXMucm93SGVp'@; put 'Z2h0Q2FjaGV9KX1jcmVhdGVDb2x1bW5zQ2FsY3VsYXRvcihlPVsicmVuZGVyZWQiLCJmdWxseVZpc2libGUiLCJwYXJ0aWFsbHlWaXNpYmxlIl0pe2NvbnN0e3d0U2V0dGluZ3M6dCx3dFRhYmxlOnJ9PXRoaXMsaT10LmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpO2xldCBvPXRoaXMuZ2V0'@; put 'Vmlld3BvcnRXaWR0aCgpLGE9TWF0aC5hYnModGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0U2Nyb2xsUG9zaXRpb24pLXRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydFBhcmVudE9mZnNldDt0aGlzLmNvbHVtbkhlYWRlckhlaWdodD1OYU47Y29uc3QgbD10LmdldFNl'@; put 'dHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7aWYobCYmYT49MCl7Y29uc3QgdT10aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5LnN1bUNlbGxTaXplcygwLGwpO2ErPXUsby09dX1yZXR1cm4gci5ob2xkZXIuY2xpZW50V2lkdGghPT1yLmhvbGRlci5vZmZzZXRXaWR0'@; put 'aCYmKG8tPUdkKHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSksbmV3IGtBdCh7Y2FsY3VsYXRpb25UeXBlczplLmZsYXRNYXAodT0+e2NvbnN0IGc9dGhpcy5jb2x1bW5zQ2FsY3VsYXRvclR5cGVzLmdldCh1KTtyZXR1cm4gZz9bW3UsZygpXV06W119KSx2aWV3cG9ydFdpZHRoOm8s'@; put 'c2Nyb2xsT2Zmc2V0OmEsdG90YWxDb2x1bW5zOmksb3ZlcnJpZGVGbjp0LmdldFNldHRpbmdQdXJlKCJ2aWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIpLGlubGluZVN0YXJ0T2Zmc2V0OnRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydFBhcmVudE9mZnNldCxjb2x1bW5X'@; put 'aWR0aENhY2hlOnRoaXMuY29sdW1uV2lkdGhDYWNoZX0pfWNyZWF0ZUNhbGN1bGF0b3JzKGU9ITEpe2NvbnN0e3d0U2V0dGluZ3M6dH09dGhpcyxyPXRoaXMuY3JlYXRlUm93c0NhbGN1bGF0b3IoKSxpPXRoaXMuY3JlYXRlQ29sdW1uc0NhbGN1bGF0b3IoKTtpZihlJiYhdC5nZXRTZXR0aW5n'@; put 'KCJyZW5kZXJBbGxSb3dzIikpe2NvbnN0IG89ci5nZXRSZXN1bHRzRm9yKCJmdWxseVZpc2libGUiKSxhPXIuZ2V0UmVzdWx0c0ZvcigicGFydGlhbGx5VmlzaWJsZSIpO2U9dGhpcy5hcmVBbGxQcm9wb3NlZFZpc2libGVSb3dzQWxyZWFkeVJlbmRlcmVkKG8sYSl9aWYoZSYmIXQuZ2V0U2V0'@; put 'dGluZygicmVuZGVyQWxsQ29sdW1ucyIpKXtjb25zdCBvPWkuZ2V0UmVzdWx0c0ZvcigiZnVsbHlWaXNpYmxlIiksYT1pLmdldFJlc3VsdHNGb3IoInBhcnRpYWxseVZpc2libGUiKTtlPXRoaXMuYXJlQWxsUHJvcG9zZWRWaXNpYmxlQ29sdW1uc0FscmVhZHlSZW5kZXJlZChvLGEpfXJldHVy'@; put 'biBlfHwodGhpcy5yb3dzUmVuZGVyQ2FsY3VsYXRvcj1yLmdldFJlc3VsdHNGb3IoInJlbmRlcmVkIik/P251bGwsdGhpcy5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcj1pLmdldFJlc3VsdHNGb3IoInJlbmRlcmVkIik/P251bGwpLHRoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yPXIuZ2V0UmVz'@; put 'dWx0c0ZvcigiZnVsbHlWaXNpYmxlIik/P251bGwsdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I9aS5nZXRSZXN1bHRzRm9yKCJmdWxseVZpc2libGUiKT8/bnVsbCx0aGlzLnJvd3NQYXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvcj1yLmdldFJlc3VsdHNGb3IoInBhcnRpYWxseVZpc2li'@; put 'bGUiKT8/bnVsbCx0aGlzLmNvbHVtbnNQYXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvcj1pLmdldFJlc3VsdHNGb3IoInBhcnRpYWxseVZpc2libGUiKT8/bnVsbCxlfWNyZWF0ZVZpc2libGVDYWxjdWxhdG9ycygpe2NvbnN0IGU9dGhpcy5jcmVhdGVSb3dzQ2FsY3VsYXRvcihbImZ1bGx5Vmlz'@; put 'aWJsZSIsInBhcnRpYWxseVZpc2libGUiXSksdD10aGlzLmNyZWF0ZUNvbHVtbnNDYWxjdWxhdG9yKFsiZnVsbHlWaXNpYmxlIiwicGFydGlhbGx5VmlzaWJsZSJdKTt0aGlzLnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj1lLmdldFJlc3VsdHNGb3IoImZ1bGx5VmlzaWJsZSIpPz9udWxsLHRoaXMu'@; put 'Y29sdW1uc1Zpc2libGVDYWxjdWxhdG9yPXQuZ2V0UmVzdWx0c0ZvcigiZnVsbHlWaXNpYmxlIik/P251bGwsdGhpcy5yb3dzUGFydGlhbGx5VmlzaWJsZUNhbGN1bGF0b3I9ZS5nZXRSZXN1bHRzRm9yKCJwYXJ0aWFsbHlWaXNpYmxlIik/P251bGwsdGhpcy5jb2x1bW5zUGFydGlhbGx5Vmlz'@; put 'aWJsZUNhbGN1bGF0b3I9dC5nZXRSZXN1bHRzRm9yKCJwYXJ0aWFsbHlWaXNpYmxlIik/P251bGx9YXJlQWxsUHJvcG9zZWRWaXNpYmxlUm93c0FscmVhZHlSZW5kZXJlZChlLHQpe2lmKCEodGhpcy5yb3dzVmlzaWJsZUNhbGN1bGF0b3ImJnRoaXMucm93c1JlbmRlckNhbGN1bGF0b3ImJmUm'@; put 'JnQpKXJldHVybiExO2xldHtzdGFydFJvdzpyLGVuZFJvdzppfT1lO2NvbnN0e3N0YXJ0Um93Om8sZW5kUm93OmF9PXQ7aWYobnVsbD09PXImJm51bGw9PT1pKXtpZighZS5pc1Zpc2libGVJblRyaW1taW5nQ29udGFpbmVyJiZudWxsIT09byYmIXRoaXMud3RUYWJsZS5pc1Jvd0JlZm9yZVJl'@; put 'bmRlcmVkUm93cyhvKSYmbnVsbCE9PWEmJiF0aGlzLnd0VGFibGUuaXNSb3dBZnRlclJlbmRlcmVkUm93cyhhKSlyZXR1cm4hMDtyPW8saT1hfWlmKG51bGw9PT1yfHxudWxsPT09aSlyZXR1cm4hMTtjb25zdHtzdGFydFJvdzpsLGVuZFJvdzp1LHJvd1N0YXJ0T2Zmc2V0Omcscm93RW5kT2Zm'@; put 'c2V0OkV9PXRoaXMucm93c1JlbmRlckNhbGN1bGF0b3I7aWYobnVsbD09PWx8fG51bGw9PT11KXJldHVybiExO2NvbnN0IE89dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLTEsWj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidmlld3BvcnRSb3dSZW5kZXJpbmdU'@; put 'aHJlc2hvbGQiKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFomJk51bWJlci5pc0ludGVnZXIoWikmJlo+MD8ocj1NYXRoLm1heCgwLHItTWF0aC5taW4oZyxaKSksaT1NYXRoLm1pbihPLGkrTWF0aC5taW4oRSxaKSkpOiJhdXRvIj09PVomJihyPU1hdGgubWF4KDAsci1NYXRoLmNlaWwoZy8y'@; put 'KSksaT1NYXRoLm1pbihPLGkrTWF0aC5jZWlsKEUvMikpKSwhKHI8bHx8cj09PWwmJnI+MHx8aT51fHxpPT09dSYmaTxPKX1hcmVBbGxQcm9wb3NlZFZpc2libGVDb2x1bW5zQWxyZWFkeVJlbmRlcmVkKGUsdCl7aWYoISh0aGlzLmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvciYmdGhpcy5jb2x1'@; put 'bW5zUmVuZGVyQ2FsY3VsYXRvciYmZSYmdCkpcmV0dXJuITE7bGV0e3N0YXJ0Q29sdW1uOnIsZW5kQ29sdW1uOml9PWU7Y29uc3R7c3RhcnRDb2x1bW46byxlbmRDb2x1bW46YX09dDtpZihudWxsPT09ciYmbnVsbD09PWkpe2lmKCFlLmlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXImJm51'@; put 'bGwhPT1vJiYhdGhpcy53dFRhYmxlLmlzQ29sdW1uQmVmb3JlUmVuZGVyZWRDb2x1bW5zKG8pJiZudWxsIT09YSYmIXRoaXMud3RUYWJsZS5pc0NvbHVtbkFmdGVyUmVuZGVyZWRDb2x1bW5zKGEpKXJldHVybiEwO3I9byxpPWF9aWYobnVsbD09PXJ8fG51bGw9PT1pKXJldHVybiExO2NvbnN0'@; put 'e3N0YXJ0Q29sdW1uOmwsZW5kQ29sdW1uOnUsY29sdW1uU3RhcnRPZmZzZXQ6Zyxjb2x1bW5FbmRPZmZzZXQ6RX09dGhpcy5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcjtpZihudWxsPT09bHx8bnVsbD09PXUpcmV0dXJuITE7Y29uc3QgTz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90'@; put 'YWxDb2x1bW5zIiktMSxaPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ2aWV3cG9ydENvbHVtblJlbmRlcmluZ1RocmVzaG9sZCIpO3JldHVybiJudW1iZXIiPT10eXBlb2YgWiYmTnVtYmVyLmlzSW50ZWdlcihaKSYmWj4wPyhyPU1hdGgubWF4KDAsci1NYXRoLm1pbihnLFopKSxpPU1h'@; put 'dGgubWluKE8saStNYXRoLm1pbihFLFopKSk6ImF1dG8iPT09WiYmKHI9TWF0aC5tYXgoMCxyLU1hdGguY2VpbChnLzIpKSxpPU1hdGgubWluKE8saStNYXRoLmNlaWwoRS8yKSkpLCEocjxsfHxyPT09bCYmcj4wfHxpPnV8fGk9PT11JiZpPE8pfWludmFsaWRhdGVSb3dIZWlnaHRDYWNoZSgp'@; put 'e3RoaXMucm93SGVpZ2h0Q2FjaGUuaW52YWxpZGF0ZSgpfWludmFsaWRhdGVDb2x1bW5XaWR0aENhY2hlKCl7dGhpcy5jb2x1bW5XaWR0aENhY2hlLmludmFsaWRhdGUoKX1pbnZhbGlkYXRlQWxsQ2FjaGVzKCl7dGhpcy5yb3dIZWlnaHRDYWNoZS5pbnZhbGlkYXRlKCksdGhpcy5jb2x1bW5X'@; put 'aWR0aENhY2hlLmludmFsaWRhdGUoKX1yZXNldEhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQoKXthYyh0aGlzLmhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQsKGUsdCxyKT0+e3JbdF09dm9pZCAwfSl9Y29uc3RydWN0b3IoZSx0LHIsaSxvKXt0aGlzLmRhdGFBY2Nlc3NP'@; put 'YmplY3Q9ZSx0aGlzLndvdD1lLndvdCx0aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMuZG9tQmluZGluZ3M9dCx0aGlzLnd0U2V0dGluZ3M9cix0aGlzLnd0VGFibGU9byx0aGlzLm92ZXJzaXplZFJvd3M9e30sdGhpcy5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzPXt9LHRoaXMuaGFzT3ZlcnNp'@; put 'emVkQ29sdW1uSGVhZGVyc01hcmtlZD17fSx0aGlzLmNsaWVudEhlaWdodD0wLHRoaXMucm93SGVhZGVyV2lkdGg9TmFOLHRoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yPW51bGwsdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I9bnVsbCx0aGlzLnJvd3NDYWxjdWxhdG9yVHlwZXM9bmV3'@; put 'IE1hcChbWyJyZW5kZXJlZCIsKCk9PnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyZW5kZXJBbGxSb3dzIik/bmV3IFJBdDpuZXcgSUF0XSxbImZ1bGx5VmlzaWJsZSIsKCk9Pm5ldyBEQXRdLFsicGFydGlhbGx5VmlzaWJsZSIsKCk9Pm5ldyBBa2VdXSksdGhpcy5jb2x1bW5zQ2FsY3Vs'@; put 'YXRvclR5cGVzPW5ldyBNYXAoW1sicmVuZGVyZWQiLCgpPT50aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicmVuZGVyQWxsQ29sdW1ucyIpP25ldyBMQXQ6bmV3IE9BdF0sWyJmdWxseVZpc2libGUiLCgpPT5uZXcgTkF0XSxbInBhcnRpYWxseVZpc2libGUiLCgpPT5uZXcga2tlXV0pLHRo'@; put 'aXMucm93SGVpZ2h0Q2FjaGU9bmV3IElrZSh7dG90YWxJdGVtc0ZuOigpPT5yLmdldFNldHRpbmcoInRvdGFsUm93cyIpLHNpemVGbjphPT5vLmdldFJvd0hlaWdodChhKT8/TmFOLGRlZmF1bHRTaXplRm46KCk9PnIuZ2V0U2V0dGluZygic3R5bGVzSGFuZGxlciIpLmdldERlZmF1bHRSb3dI'@; put 'ZWlnaHQoKX0pLHRoaXMuY29sdW1uV2lkdGhDYWNoZT1uZXcgSWtlKHt0b3RhbEl0ZW1zRm46KCk9PnIuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksc2l6ZUZuOmE9Pm8uZ2V0Q29sdW1uV2lkdGgoYSksZGVmYXVsdFNpemVGbjooKT0+NTB9KSx0aGlzLmV2ZW50TWFuYWdlcj1pLHRoaXMu'@; put 'ZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LCJyZXNpemUiLCgpPT57dGhpcy5jbGllbnRIZWlnaHQ9dGhpcy5nZXRXb3Jrc3BhY2VIZWlnaHQoKX0pfX07ZnVuY3Rpb24gRGtlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVF'@; put 'cnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBMa2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24t'@; put 'aW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gJGQobixlKXtyZXR1cm4gZnVuY3Rpb24gakF0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixMa2UobixlLCJnZXQiKSl9ZnVuY3Rpb24gT2tlKG4sZSx0KXtEa2UobixlKSxlLnNldChuLHQpfWZ1'@; put 'bmN0aW9uIGZZKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gVUF0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0o'@; put 'bixMa2UobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIE9sZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBOa2UobixlKXtEa2UobixlKSxlLmFk'@; put 'ZChuKX12YXIgbG09bmV3IFdlYWtNYXAsdDI9bmV3IFdlYWtNYXAsRmtlPW5ldyBXZWFrU2V0LE5sZT1uZXcgV2Vha1NldDtjbGFzcyB6QXR7c2V0QWN0aXZlT3ZlcmxheShlKXtyZXR1cm4gZlkodGhpcyx0MixlKSx0aGlzfXNldEFjdGl2ZVNlbGVjdGlvbihlKXtyZXR1cm4gZlkodGhpcyxs'@; put 'bSxlKSx0aGlzfXNjYW4oKXtjb25zdCBlPSRkKHRoaXMsbG0pLnNldHRpbmdzLnNlbGVjdGlvblR5cGUsdD1uZXcgU2V0O3JldHVybiJhY3RpdmUtaGVhZGVyIj09PWU/KHRoaXMuc2NhbkNvbHVtbnNJbkhlYWRlcnNSYW5nZShyPT50LmFkZChyKSksdGhpcy5zY2FuUm93c0luSGVhZGVyc1Jh'@; put 'bmdlKHI9PnQuYWRkKHIpKSk6ImFyZWEiPT09ZT90aGlzLnNjYW5DZWxsc1JhbmdlKHI9PnQuYWRkKHIpKToiZm9jdXMiPT09ZT8odGhpcy5zY2FuQ29sdW1uc0luSGVhZGVyc1JhbmdlKHI9PnQuYWRkKHIpKSx0aGlzLnNjYW5Sb3dzSW5IZWFkZXJzUmFuZ2Uocj0+dC5hZGQocikpLHRoaXMu'@; put 'c2NhbkNlbGxzUmFuZ2Uocj0+dC5hZGQocikpKToiZmlsbCI9PT1lP3RoaXMuc2NhbkNlbGxzUmFuZ2Uocj0+dC5hZGQocikpOiJoZWFkZXIiPT09ZT8odGhpcy5zY2FuQ29sdW1uc0luSGVhZGVyc1JhbmdlKHI9PnQuYWRkKHIpKSx0aGlzLnNjYW5Sb3dzSW5IZWFkZXJzUmFuZ2Uocj0+dC5h'@; put 'ZGQocikpKToicm93Ij09PWU/KHRoaXMuc2NhblJvd3NJbkhlYWRlcnNSYW5nZShyPT50LmFkZChyKSksdGhpcy5zY2FuUm93c0luQ2VsbHNSYW5nZShyPT50LmFkZChyKSkpOiJjb2x1bW4iPT09ZSYmKHRoaXMuc2NhbkNvbHVtbnNJbkhlYWRlcnNSYW5nZShyPT50LmFkZChyKSksdGhpcy5z'@; put 'Y2FuQ29sdW1uc0luQ2VsbHNSYW5nZShyPT50LmFkZChyKSkpLHR9c2NhbkNvbHVtbnNJbkhlYWRlcnNSYW5nZShlKXtjb25zdFt0LHIsaSxvXT0kZCh0aGlzLGxtKS5nZXRDb3JuZXJzKCkse3d0VGFibGU6YX09JGQodGhpcyx0MiksbD1hLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCksdT1h'@; put 'LmdldENvbHVtbkhlYWRlcnNDb3VudCgpO2xldCBnPTA7Zm9yKGxldCBFPS1hLmdldFJvd0hlYWRlcnNDb3VudCgpO0U8bDtFKyspe2NvbnN0IE89YS5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShFKTtpZighKE88cnx8Tz5vKSl7Zm9yKGxldCBaPS11O1o8MDtaKyspe2lmKFo8dHx8'@; put 'Wj5pKWNvbnRpbnVlO2NvbnN0IGVlPVordTtsZXQgdmU9YS5nZXRDb2x1bW5IZWFkZXIoTyxlZSk7Y29uc3QgTWU9JGQodGhpcyx0MikuZ2V0U2V0dGluZygib25CZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXIiLE8sZWUse3NlbGVjdGlvblR5cGU6JGQodGhpcyxsbSkuc2V0dGluZ3Mu'@; put 'c2VsZWN0aW9uVHlwZSxjb2x1bW5DdXJzb3I6ZyxzZWxlY3Rpb25XaWR0aDpvLXIrMX0pO251bGwhPT1NZSYmKE1lIT09TyYmKHZlPWEuZ2V0Q29sdW1uSGVhZGVyKE1lLGVlKSksaHModmUpJiZlKHZlKSl9Zys9MX19fXNjYW5Sb3dzSW5IZWFkZXJzUmFuZ2UoZSl7Y29uc3RbdCxyLGksb109'@; put 'JGQodGhpcyxsbSkuZ2V0Q29ybmVycygpLHt3dFRhYmxlOmF9PSRkKHRoaXMsdDIpLGw9YS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLHU9YS5nZXRSb3dIZWFkZXJzQ291bnQoKTtsZXQgZz0wO2ZvcihsZXQgRT0tYS5nZXRDb2x1bW5IZWFkZXJzQ291bnQoKTtFPGw7RSsrKXtjb25zdCBPPWEu'@; put 'cm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoRSk7aWYoIShPPHR8fE8+aSkpe2ZvcihsZXQgWj0tdTtaPDA7WisrKXtpZihaPHJ8fFo+byljb250aW51ZTtjb25zdCBlZT1aK3U7bGV0IHZlPWEuZ2V0Um93SGVhZGVyKE8sZWUpO2NvbnN0IE1lPSRkKHRoaXMsdDIpLmdldFNldHRpbmcoIm9u'@; put 'QmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyIixPLGVlLHtzZWxlY3Rpb25UeXBlOiRkKHRoaXMsbG0pLnNldHRpbmdzLnNlbGVjdGlvblR5cGUscm93Q3Vyc29yOmcsc2VsZWN0aW9uSGVpZ2h0OmktdCsxfSk7bnVsbCE9PU1lJiYoTWUhPT1PJiYodmU9YS5nZXRSb3dIZWFkZXIoTWUsZWUp'@; put 'KSxocyh2ZSkmJmUodmUpKX1nKz0xfX19c2NhbkNlbGxzUmFuZ2UoZSl7Y29uc3R7d3RUYWJsZTp0fT0kZCh0aGlzLHQyKTtPbGUodGhpcyxGa2UsV0F0KS5jYWxsKHRoaXMsKHIsaSk9Pntjb25zdCBvPXQuZ2V0Q2VsbCgkZCh0aGlzLHQyKS5jcmVhdGVDZWxsQ29vcmRzKHIsaSkpO2lmKCFo'@; put 'cyhvKSlyZXR1cm47Y29uc3QgYT0kZCh0aGlzLHQyKS5nZXRTZXR0aW5nKCJvbkFmdGVyRHJhd1NlbGVjdGlvbiIscixpLCRkKHRoaXMsbG0pLnNldHRpbmdzLmxheWVyTGV2ZWwpOyJzdHJpbmciPT10eXBlb2YgYSYmWXIobyxhKSxlKG8pfSl9c2NhblJvd3NJbkNlbGxzUmFuZ2UoZSl7Y29u'@; put 'c3RbdCwscl09JGQodGhpcyxsbSkuZ2V0Q29ybmVycygpLHt3dFRhYmxlOml9PSRkKHRoaXMsdDIpO09sZSh0aGlzLE5sZSxQa2UpLmNhbGwodGhpcywobyxhKT0+e2lmKG8+PXQmJm88PXIpe2NvbnN0IGw9aS5nZXRDZWxsKCRkKHRoaXMsdDIpLmNyZWF0ZUNlbGxDb29yZHMobyxhKSk7aHMo'@; put 'bCkmJmUobCl9fSl9c2NhbkNvbHVtbnNJbkNlbGxzUmFuZ2UoZSl7Y29uc3RbLHQsLHJdPSRkKHRoaXMsbG0pLmdldENvcm5lcnMoKSx7d3RUYWJsZTppfT0kZCh0aGlzLHQyKTtPbGUodGhpcyxObGUsUGtlKS5jYWxsKHRoaXMsKG8sYSk9PntpZihhPj10JiZhPD1yKXtjb25zdCBsPWkuZ2V0'@; put 'Q2VsbCgkZCh0aGlzLHQyKS5jcmVhdGVDZWxsQ29vcmRzKG8sYSkpO2hzKGwpJiZlKGwpfX0pfWNvbnN0cnVjdG9yKCl7TmtlKHRoaXMsRmtlKSxOa2UodGhpcyxObGUpLE9rZSh0aGlzLGxtLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPa2UodGhpcyx0Mix7d3JpdGFibGU6ITAsdmFs'@; put 'dWU6dm9pZCAwfSksZlkodGhpcyxsbSxudWxsKSxmWSh0aGlzLHQyLG51bGwpfX1mdW5jdGlvbiBXQXQobil7bGV0W2UsdCxyLGldPSRkKHRoaXMsbG0pLmdldENvcm5lcnMoKTtpZihlPDAmJnI8MHx8dDwwJiZpPDApcmV0dXJuO2NvbnN0e3d0VGFibGU6b309JGQodGhpcyx0MiksYT1lIT09'@; put 'cnx8dCE9PWk7aWYodD1NYXRoLm1heCh0Pz8wLDApLGk9TWF0aC5tYXgoaT8/MCwwKSxlPU1hdGgubWF4KGU/PzAsMCkscj1NYXRoLm1heChyPz8wLDApLGEpe2lmKHQ9TWF0aC5tYXgodCxvLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKSksaT1NYXRoLm1pbihpLG8uZ2V0TGFzdFJlbmRlcmVk'@; put 'Q29sdW1uKCkpLGU9TWF0aC5tYXgoZSxvLmdldEZpcnN0UmVuZGVyZWRSb3coKSkscj1NYXRoLm1pbihyLG8uZ2V0TGFzdFJlbmRlcmVkUm93KCkpLGk8dHx8cjxlKXJldHVybn1lbHNlIGlmKCFocyhvLmdldENlbGwoJGQodGhpcyx0MikuY3JlYXRlQ2VsbENvb3JkcyhlLHQpKSkpcmV0dXJu'@; put 'O2ZvcihsZXQgbD1lO2w8PXI7bCs9MSlmb3IobGV0IHU9dDt1PD1pO3UrPTEpbihsLHUpfWZ1bmN0aW9uIFBrZShuKXtjb25zdHt3dFRhYmxlOmV9PSRkKHRoaXMsdDIpLHQ9ZS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLHI9ZS5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpO2ZvcihsZXQgaT0w'@; put 'O2k8dDtpKz0xKXtjb25zdCBvPWUucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoaSk7Zm9yKGxldCBhPTA7YTxyO2ErPTEpbihvLGUuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoYSkpfX1jb25zdCBIa2U9Imh0LWJvcmRlci1zdHlsZS0iLFZrZT1jbGFzcyBHQXR7cmVnaXN0ZXJM'@; put 'aXN0ZW5lcnMoKXtjb25zdCBlPXRoaXMud290LnJvb3REb2N1bWVudC5ib2R5O2lmKHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwibW91c2Vkb3duIiwoKT0+dGhpcy5vbk1vdXNlRG93bigpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsIm1vdXNl'@; put 'dXAiLCgpPT50aGlzLm9uTW91c2VVcCgpKSx0aGlzLm1haW4pZm9yKGxldCB0PTAscj10aGlzLm1haW4uY2hpbGROb2Rlcy5sZW5ndGg7dDxyO3QrKyl7Y29uc3QgaT10aGlzLm1haW47dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihpLmNoaWxkTm9kZXNbdF0sIm1vdXNlZW50'@; put 'ZXIiLGE9PnRoaXMub25Nb3VzZUVudGVyKGEsaS5jaGlsZE5vZGVzW3RdKSl9fW9uTW91c2VEb3duKCl7dGhpcy5tb3VzZURvd249ITB9b25Nb3VzZVVwKCl7dGhpcy5tb3VzZURvd249ITF9b25Nb3VzZUVudGVyKGUsdCl7aWYoIXRoaXMubW91c2VEb3dufHwhdGhpcy53b3QuZ2V0U2V0dGlu'@; put 'ZygiaGlkZUJvcmRlck9uTW91c2VEb3duT3ZlciIpKXJldHVybjtlLnByZXZlbnREZWZhdWx0KCksRjMoZSk7Y29uc3Qgcj10aGlzLndvdC5yb290RG9jdW1lbnQuYm9keSxpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5zdHlsZS5kaXNwbGF5PSJub25lIjtjb25zdCBhPWw9PnsoZnVu'@; put 'Y3Rpb24gbyhsKXtpZihsLmNsaWVudFk8TWF0aC5mbG9vcihpLnRvcCl8fGwuY2xpZW50WT5NYXRoLmNlaWwoaS50b3AraS5oZWlnaHQpfHxsLmNsaWVudFg8TWF0aC5mbG9vcihpLmxlZnQpfHxsLmNsaWVudFg+TWF0aC5jZWlsKGkubGVmdCtpLndpZHRoKSlyZXR1cm4hMH0pKGwpJiYodGhp'@; put 'cy5ldmVudE1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLCJtb3VzZW1vdmUiLGEpLHQuc3R5bGUuZGlzcGxheT0iYmxvY2siKX07dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihyLCJtb3VzZW1vdmUiLGEpfWNyZWF0ZUJvcmRlcnMoZSl7Y29uc3R7cm9vdERvY3VtZW50'@; put 'OnR9PXRoaXMud290O3RoaXMubWFpbj10LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2NvbnN0IHI9WyJ0b3AiLCJzdGFydCIsImJvdHRvbSIsImVuZCIsImNvcm5lciJdO2xldCBpPXRoaXMubWFpbi5zdHlsZTtpLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaS50b3A9IjAiLGkubGVmdD0iMCI7Y29uc3Qg'@; put 'bz1bXTtmb3IobGV0IHU9MDt1PDU7dSsrKXtjb25zdCBnPXJbdV0sRT10LmNyZWF0ZUVsZW1lbnQoImRpdiIpLE89ZWU9Pntjb25zdCB2ZT10aGlzLnNldHRpbmdzW2ddO3JldHVybiB2ZSYmdmVbZWVdP3ZlW2VlXTplLmJvcmRlcj8uW2VlXX07RS5jbGFzc05hbWU9YHd0Qm9yZGVyICR7dGhp'@; put 'cy5zZXR0aW5ncy5jbGFzc05hbWV8fCIifWAsdGhpcy5zZXR0aW5nc1tnXT8uaGlkZSYmKEUuY2xhc3NOYW1lKz0iIGhpZGRlbiIpLGk9RS5zdHlsZTtjb25zdCBaPU8oInN0eWxlIik7Wj8oWyJzdGFydCIsImVuZCJdLmluY2x1ZGVzKGcpP0UuY2xhc3NOYW1lKz1gICR7SGtlfSR7Wn0tdmVy'@; put 'dGljYWxgOkUuY2xhc3NOYW1lKz1gICR7SGtlfSR7Wn0taG9yaXpvbnRhbGAsaS5zZXRQcm9wZXJ0eSgiLS1odC1jdXN0b20tYm9yZGVyLXNpemUiLGAke08oIndpZHRoIil9cHhgKSxpLnNldFByb3BlcnR5KCItLWh0LWN1c3RvbS1ib3JkZXItY29sb3IiLFN0cmluZyhPKCJjb2xvciIpPz8i'@; put 'IikpKTppLmJhY2tncm91bmRDb2xvcj1TdHJpbmcoTygiY29sb3IiKT8/IiIpLGkuaGVpZ2h0PWAke08oIndpZHRoIil9cHhgLGkud2lkdGg9YCR7Tygid2lkdGgiKX1weGAsby5wdXNoKEUpLHRoaXMubWFpbi5hcHBlbmRDaGlsZChFKX10aGlzLnRvcD1vWzBdLHRoaXMuc3RhcnQ9b1sxXSx0'@; put 'aGlzLmJvdHRvbT1vWzJdLHRoaXMuZW5kPW9bM10sdGhpcy50b3BTdHlsZT10aGlzLnRvcC5zdHlsZSx0aGlzLnN0YXJ0U3R5bGU9dGhpcy5zdGFydC5zdHlsZSx0aGlzLmJvdHRvbVN0eWxlPXRoaXMuYm90dG9tLnN0eWxlLHRoaXMuZW5kU3R5bGU9dGhpcy5lbmQuc3R5bGUsdGhpcy5jb3Ju'@; put 'ZXI9b1s0XSx0aGlzLmNvcm5lci5jbGFzc05hbWUrPSIgY29ybmVyIix0aGlzLmNvcm5lclN0eWxlPXRoaXMuY29ybmVyLnN0eWxlLHRoaXMuY29ybmVyU3R5bGUud2lkdGg9YCR7dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGh9cHhgLHRoaXMuY29ybmVyU3R5bGUuaGVpZ2h0PWAke3Ro'@; put 'aXMuY29ybmVyRGVmYXVsdFN0eWxlLmhlaWdodH1weGAsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXI9W2Ake3RoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlcldpZHRofXB4YCx0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5ib3JkZXJTdHlsZSx0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5ib3Jk'@; put 'ZXJDb2xvcl0uam9pbigiICIpLFE1KCkmJnRoaXMuaW5zdGFuY2UuZ2V0U2V0dGluZygiaXNEYXRhVmlld0luc3RhbmNlIikmJnRoaXMuY3JlYXRlTXVsdGlwbGVTZWxlY3RvckhhbmRsZXMoKSx0aGlzLmRpc2FwcGVhcigpO2NvbnN0e3d0VGFibGU6YX09dGhpcy53b3Q7bGV0IGw9YS5ib3Jk'@; put 'ZXJzSG9sZGVyO2x8fChsPXQuY3JlYXRlRWxlbWVudCgiZGl2IiksbC5jbGFzc05hbWU9Imh0Qm9yZGVycyIsYS5ib3JkZXJzSG9sZGVyPWwsYS5zcHJlYWRlci5hcHBlbmRDaGlsZChsKSksbC5hcHBlbmRDaGlsZCh0aGlzLm1haW4pfWNyZWF0ZU11bHRpcGxlU2VsZWN0b3JIYW5kbGVzKCl7'@; put 'Y29uc3R7cm9vdERvY3VtZW50OmUsd3RTZXR0aW5nczp0fT10aGlzLndvdCxyPXQuZ2V0U2V0dGluZygic3R5bGVzSGFuZGxlciIpLGk9ci5nZXRDU1NWYXJpYWJsZVZhbHVlKCJjZWxsLW1vYmlsZS1oYW5kbGUtc2l6ZSIpLG89ci5nZXRDU1NWYXJpYWJsZVZhbHVlKCJjZWxsLW1vYmlsZS1o'@; put 'YW5kbGUtYm9yZGVyLXJhZGl1cyIpLGE9ci5nZXRDU1NWYXJpYWJsZVZhbHVlKCJjZWxsLW1vYmlsZS1oYW5kbGUtYmFja2dyb3VuZC1jb2xvciIpLGw9ci5nZXRDU1NWYXJpYWJsZVZhbHVlKCJjZWxsLW1vYmlsZS1oYW5kbGUtYmFja2dyb3VuZC1vcGFjaXR5IiksdT1yLmdldENTU1Zhcmlh'@; put 'YmxlVmFsdWUoImNlbGwtbW9iaWxlLWhhbmRsZS1ib3JkZXItd2lkdGgiKSxnPXIuZ2V0Q1NTVmFyaWFibGVWYWx1ZSgiY2VsbC1tb2JpbGUtaGFuZGxlLWJvcmRlci1jb2xvciIpO3RoaXMuc2VsZWN0aW9uSGFuZGxlcz17dG9wOmUuY3JlYXRlRWxlbWVudCgiZGl2IiksdG9wSGl0QXJlYTpl'@; put 'LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGJvdHRvbTplLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGJvdHRvbUhpdEFyZWE6ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxzdHlsZXM6e319LHRoaXMuc2VsZWN0aW9uSGFuZGxlcy50b3AuY2xhc3NOYW1lPSJ0b3BTZWxlY3Rpb25IYW5kbGUgdG9wTGVmdFNl'@; put 'bGVjdGlvbkhhbmRsZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcEhpdEFyZWEuY2xhc3NOYW1lPSJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSB0b3BMZWZ0U2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b20uY2xhc3NOYW1lPSJib3R0b21T'@; put 'ZWxlY3Rpb25IYW5kbGUgYm90dG9tUmlnaHRTZWxlY3Rpb25IYW5kbGUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b21IaXRBcmVhLmNsYXNzTmFtZT0iYm90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEgYm90dG9tUmlnaHRTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIsdGhpcy5zZWxl'@; put 'Y3Rpb25IYW5kbGVzLnN0eWxlcz17dG9wOnRoaXMuc2VsZWN0aW9uSGFuZGxlcy50b3Auc3R5bGUsdG9wSGl0QXJlYTp0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wSGl0QXJlYS5zdHlsZSxib3R0b206dGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbS5zdHlsZSxib3R0b21IaXRBcmVhOnRo'@; put 'aXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b21IaXRBcmVhLnN0eWxlfTtjb25zdCBPPVt0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbUhpdEFyZWEsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BIaXRBcmVhXTtmb3IoY29uc3QgWiBvZiBPKVoucG9zaXRpb249ImFi'@; put 'c29sdXRlIixaLmhlaWdodD0iNDBweCIsWi53aWR0aD0iNDBweCIsWi5ib3JkZXJSYWRpdXM9YCR7cGFyc2VJbnQoU3RyaW5nKDQwLzEuNSksMTApfXB4YDtmb3IoY29uc3QgWiBvZlt0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbSx0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5'@; put 'bGVzLnRvcF0pWi5wb3NpdGlvbj0iYWJzb2x1dGUiLFouaGVpZ2h0PWAke2l9cHhgLFoud2lkdGg9YCR7aX1weGAsWi5ib3JkZXJSYWRpdXM9YCR7b31weGAsWi5iYWNrZ3JvdW5kPWBjb2xvci1taXgoaW4gc3JnYiwgJHthfSAke2x9JSwgdHJhbnNwYXJlbnQpYCxaLmJvcmRlcj1gJHt1fXB4'@; put 'IHNvbGlkICR7Z31gfWlzU291dGhFYXN0T2ZBcmVhU2VsZWN0aW9uKGUsdCl7Y29uc3Qgcj10aGlzLndvdC5zZWxlY3Rpb25NYW5hZ2VyLmdldEFyZWFTZWxlY3Rpb24oKTtpZighcilyZXR1cm4hMTtpZighci5jZWxsUmFuZ2UpcmV0dXJuITA7Y29uc3QgaT1yLmNlbGxSYW5nZS5nZXRCb3R0'@; put 'b21FbmRDb3JuZXIoKTtyZXR1cm4gaS5yb3c9PT1lJiZpLmNvbD09PXR9dXBkYXRlTXVsdGlwbGVTZWxlY3Rpb25IYW5kbGVzUG9zaXRpb24oZSx0LHIsaSxvLGEpe2NvbnN0IHU9dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIik/InJpZ2h0IjoibGVmdCIse3RvcDpn'@; put 'LHRvcEhpdEFyZWE6RSxib3R0b206Tyxib3R0b21IaXRBcmVhOlp9PXRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMsZWU9cGFyc2VJbnQoZy5ib3JkZXJXaWR0aCwxMCksdmU9cGFyc2VJbnQoZy53aWR0aCwxMCksTWU9cGFyc2VJbnQoRS53aWR0aCwxMCksSGU9dGhpcy53b3Qud3RUYWJs'@; put 'ZS5nZXRXaWR0aCgpLFdlPXRoaXMud290Lnd0VGFibGUuZ2V0SGVpZ2h0KCk7Zy50b3A9YCR7cGFyc2VJbnQoU3RyaW5nKHItdmUtMSksMTApfXB4YCxnW3VdPWAke3BhcnNlSW50KFN0cmluZyhpLXZlLTEpLDEwKX1weGAsRS50b3A9YCR7cGFyc2VJbnQoU3RyaW5nKHItTWUvNCozKSwxMCl9'@; put 'cHhgLEVbdV09YCR7cGFyc2VJbnQoU3RyaW5nKGktTWUvNCozKSwxMCl9cHhgO2NvbnN0IGF0PU1hdGgubWluKHBhcnNlSW50KFN0cmluZyhpK28pLDEwKSxIZS12ZS0yKmVlKSxDdD1NYXRoLm1pbihwYXJzZUludChTdHJpbmcoaStvLU1lLzQpLDEwKSxIZS1NZS0yKmVlKTtPW3VdPWAke2F0'@; put 'fXB4YCxaW3VdPWAke0N0fXB4YDtjb25zdCBBdD1NYXRoLm1pbihwYXJzZUludChTdHJpbmcocithKSwxMCksV2UtdmUtMiplZSksS3Q9TWF0aC5taW4ocGFyc2VJbnQoU3RyaW5nKHIrYS1NZS80KSwxMCksV2UtTWUtMiplZSk7Ty50b3A9YCR7QXR9cHhgLFoudG9wPWAke0t0fXB4YDtjb25z'@; put 'dCBxdD10aGlzLnNldHRpbmdzLmJvcmRlcj8uY29ybmVyVmlzaWJsZTtxdCYmImZ1bmN0aW9uIj09dHlwZW9mIHF0JiZxdCgpPyhnLmRpc3BsYXk9ImJsb2NrIixFLmRpc3BsYXk9ImJsb2NrIix0aGlzLmlzU291dGhFYXN0T2ZBcmVhU2VsZWN0aW9uKGUsdCk/KE8uZGlzcGxheT0iYmxvY2si'@; put 'LFouZGlzcGxheT0iYmxvY2siKTooTy5kaXNwbGF5PSJub25lIixaLmRpc3BsYXk9Im5vbmUiKSk6KGcuZGlzcGxheT0ibm9uZSIsTy5kaXNwbGF5PSJub25lIixFLmRpc3BsYXk9Im5vbmUiLFouZGlzcGxheT0ibm9uZSIpLGU9PT10aGlzLndvdC53dFNldHRpbmdzLmdldFNldHRpbmcoImZp'@; put 'eGVkUm93c1RvcCIpfHx0PT09dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpPyhnLnpJbmRleD0iOTk5OSIsRS56SW5kZXg9Ijk5OTkiKTooZy56SW5kZXg9IiIsRS56SW5kZXg9IiIpfWFwcGVhcihlKXtpZih0aGlzLmRpc2FibGVkKXJldHVybjts'@; put 'ZXRbdCxyLGksb109ZTtpZih0PDAmJmk8MHx8cjwwJiZvPDApcmV0dXJuIHZvaWQgdGhpcy5kaXNhcHBlYXIoKTtjb25zdHt3dFRhYmxlOmEscm9vdERvY3VtZW50Omwscm9vdFdpbmRvdzp1fT10aGlzLndvdCxnPXQhPT1pfHxyIT09byxFPWEuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpLE89YS5n'@; put 'ZXRMYXN0UmVuZGVyZWRSb3coKSxaPWEuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpLGVlPWEuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCk7aWYoWjwwJiZlZTwwfHxFPDAmJk88MClyZXR1cm4gdm9pZCB0aGlzLmRpc2FwcGVhcigpO2xldCB2ZTtpZihnKXtpZihyPU1hdGgubWF4KHIsWiksbz1N'@; put 'YXRoLm1pbihvLGVlKSx0PU1hdGgubWF4KHQsRSksaT1NYXRoLm1pbihpLE8pLG88cnx8aTx0KXJldHVybiB2b2lkIHRoaXMuZGlzYXBwZWFyKCk7aWYodmU9YS5nZXRDZWxsKHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHModCxyKSksIWhzKHZlKSlyZXR1cm4gdm9pZCB0aGlzLmRpc2FwcGVh'@; put 'cigpfWVsc2UgaWYodmU9YS5nZXRDZWxsKHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHModCxyKSksIWhzKHZlKSlyZXR1cm4gdm9pZCB0aGlzLmRpc2FwcGVhcigpO2NvbnN0IE1lPWc/YS5nZXRDZWxsKHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHMoaSxvKSk6dmUsSGU9dmUsV2U9aHMoTWUp'@; put 'P01lOkhlLGF0PVgwKEhlKSxDdD1nP1gwKFdlKTphdCxBdD1YMChhLlRBQkxFKSxLdD1hdC50b3AscXQ9YXQubGVmdCxnbj10aGlzLndvdC53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKTtsZXQgVG49MCxDbj0wO2lmKGduKXtjb25zdCBmcj1aZChhLlRBQkxFKSxlaT1aZChIZSk7'@; put 'Q249cXQrZWktQ3QubGVmdCxUbj11LmlubmVyV2lkdGgtcXQtZWktKHUuaW5uZXJXaWR0aC1BdC5sZWZ0LWZyKS0xfWVsc2UgQ249Q3QubGVmdCtaZChXZSktcXQsVG49cXQtQXQubGVmdC0xO2lmKHRoaXMuaXNFbnRpcmVDb2x1bW5TZWxlY3RlZCh0LGkpKXtjb25zdCBlaT10aGlzLmdldERp'@; put 'bWVuc2lvbnNGcm9tSGVhZGVyKCJjb2x1bW5zIixyLG8sdCxBdCk7bGV0IFBvPW51bGw7ZWkmJihbUG8sVG4sQ25dPWVpKSxQbyYmKHZlPVBvKX1sZXQgcXI9S3QtQXQudG9wLTEsJG49Q3QudG9wK0hoKFdlKS1LdDtpZih0aGlzLmlzRW50aXJlUm93U2VsZWN0ZWQocixvKSl7Y29uc3QgZWk9'@; put 'dGhpcy5nZXREaW1lbnNpb25zRnJvbUhlYWRlcigicm93cyIsdCxpLHIsQXQpO2xldCBQbz1udWxsO2VpJiYoW1BvLHFyLCRuXT1laSksUG8mJih2ZT1Qbyl9Y29uc3QgVHI9dS5nZXRDb21wdXRlZFN0eWxlKEhlKTtwYXJzZUludChUci5ib3JkZXJUb3BXaWR0aCwxMCk+MCYmKHFyKz0xLCRu'@; put 'PSRuPjA/JG4tMTowKSxwYXJzZUludChUcltnbj8iYm9yZGVyUmlnaHRXaWR0aCI6ImJvcmRlckxlZnRXaWR0aCJdLDEwKT4wJiYoVG4rPTEsQ249Q24+MD9Dbi0xOjApO2NvbnN0IHJpPWduPyJyaWdodCI6ImxlZnQiLGZuPU1hdGguY2VpbCgodGhpcy5zZXR0aW5ncy5ib3JkZXI/LndpZHRo'@; put 'Pz8wKS8yKTt0aGlzLnRvcFN0eWxlLnRvcD1gJHtxcn1weGAsdGhpcy50b3BTdHlsZVtyaV09YCR7VG59cHhgLHRoaXMudG9wU3R5bGUud2lkdGg9YCR7Q24rZm59cHhgLHRoaXMudG9wU3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuc3RhcnRTdHlsZS50b3A9YCR7cXJ9cHhgLHRoaXMuc3Rh'@; put 'cnRTdHlsZVtyaV09YCR7VG59cHhgLHRoaXMuc3RhcnRTdHlsZS5oZWlnaHQ9YCR7JG4rZm59cHhgLHRoaXMuc3RhcnRTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5ib3R0b21TdHlsZS50b3A9YCR7cXIrJG4tcGFyc2VJbnQodGhpcy5ib3R0b21TdHlsZS5oZWlnaHQsMTApK2ZufXB4YCx0'@; put 'aGlzLmJvdHRvbVN0eWxlW3JpXT1gJHtUbn1weGAsdGhpcy5ib3R0b21TdHlsZS53aWR0aD1gJHtDbitmbn1weGAsdGhpcy5ib3R0b21TdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5lbmRTdHlsZS50b3A9YCR7cXJ9cHhgLHRoaXMuZW5kU3R5bGVbcmldPWAke1RuK0NuLXBhcnNlSW50KHRo'@; put 'aXMuZW5kU3R5bGUud2lkdGgsMTApK2ZufXB4YCx0aGlzLmVuZFN0eWxlLmhlaWdodD1gJHskbitmbn1weGAsdGhpcy5lbmRTdHlsZS5kaXNwbGF5PSJibG9jayI7bGV0IHlyPXRoaXMuc2V0dGluZ3MuYm9yZGVyPy5jb3JuZXJWaXNpYmxlO3lyPSJmdW5jdGlvbiI9PXR5cGVvZiB5cj95cih0'@; put 'aGlzLnNldHRpbmdzLmxheWVyTGV2ZWwpOnlyO2NvbnN0IEFuPXRoaXMud290LmdldFNldHRpbmcoIm9uTW9kaWZ5R2V0Q2VsbENvb3JkcyIsaSxvLCExLCJyZW5kZXIiKTtsZXRbSHIsdGldPVtpLG9dO2lmKEFuJiZBcnJheS5pc0FycmF5KEFuKSYmKFssLEhyLHRpXT1BbiksIVE1KCkmJnly'@; put 'JiZ0aGlzLmlzU291dGhFYXN0T2ZBcmVhU2VsZWN0aW9uKEhyLHRpKSl7Y29uc3QgZnI9TnVtYmVyKHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlcldpZHRoKTt0aGlzLmNvcm5lclN0eWxlLnRvcD1xciskbit0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LWZyKyJweCIsdGhpcy5j'@; put 'b3JuZXJTdHlsZVtyaV09VG4rQ24rdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldC1OdW1iZXIodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuYm9yZGVyV2lkdGgpKyJweCIsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJSaWdodFdpZHRoPWAke3RoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRl'@; put 'cldpZHRofXB4YCx0aGlzLmNvcm5lclN0eWxlLmJvcmRlckxlZnRXaWR0aD1gJHt0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5ib3JkZXJXaWR0aH1weGAsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJCb3R0b21XaWR0aD1gJHt0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5ib3JkZXJXaWR0aH1weGAs'@; put 'dGhpcy5jb3JuZXJTdHlsZS53aWR0aD1TdHJpbmcodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgpLHRoaXMuY29ybmVyU3R5bGUuZGlzcGxheT0ibm9uZSI7bGV0IGVpPUhNKGEuVEFCTEUpO2NvbnN0IFBvPU9iamVjdC5pcyhlaSx1KTtQbyYmKGVpPWwuZG9jdW1lbnRFbGVtZW50KTtj'@; put 'b25zdCBIbz1wYXJzZUludChTdHJpbmcodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuYm9yZGVyV2lkdGgpLDEwKS0xLHhpPU1hdGguY2VpbChwYXJzZUludChTdHJpbmcodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgpLDEwKS8yKTtpZihNYXRoLmNlaWwocGFyc2VJbnQoU3RyaW5nKHRo'@; put 'aXMuY29ybmVyRGVmYXVsdFN0eWxlLmhlaWdodCksMTApLzIpLG89PT10aGlzLndvdC5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKS0xKXtjb25zdCB3cz1Qbz9XZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0OldlLm9mZnNldExlZnQ7bGV0IHRzPSExLGthPTA7aWYoZ24/KGthPXdz'@; put 'LXBhcnNlSW50KFN0cmluZyh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCksMTApLzIsdHM9a2E8MCk6KGthPXdzK1pkKFdlKStwYXJzZUludChTdHJpbmcodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgpLDEwKS8yLHRzPWthPj1Uc2UoZWkpKSx0cyl7Y29uc3QgYW89TWF0aC5m'@; put 'bG9vcihUbitDbit0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LXhpLUhvKTtZcih0aGlzLmNvcm5lciwid3RDb3JuZXJJbmxpbmVFbmRFZGdlIiksdGhpcy5jb3JuZXJTdHlsZVtyaV09YW8tMSsicHgifX1lbHNlIGtvKHRoaXMuY29ybmVyLCJ3dENvcm5lcklubGluZUVuZEVkZ2UiKTtp'@; put 'ZihpPT09dGhpcy53b3QuZ2V0U2V0dGluZygidG90YWxSb3dzIiktMSl7Y29uc3Qgd3M9UG8/V2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOldlLm9mZnNldFRvcCx0cz1wYXJzZUludChTdHJpbmcodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuaGVpZ2h0KSwxMCkvMjtpZih3cytIaChX'@; put 'ZSkrdHM+PWR3KGVpKSl7Y29uc3QgdXQ9TWF0aC5mbG9vcihxciskbit0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LXRzLUhvKTtZcih0aGlzLmNvcm5lciwid3RDb3JuZXJCbG9ja0VuZEVkZ2UiKSx0aGlzLmNvcm5lclN0eWxlLnRvcD11dC0xKyJweCJ9fWVsc2Uga28odGhpcy5jb3Ju'@; put 'ZXIsInd0Q29ybmVyQmxvY2tFbmRFZGdlIik7dGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5PSJibG9jayJ9ZWxzZSB0aGlzLmNvcm5lclN0eWxlLmRpc3BsYXk9Im5vbmUiO1E1KCkmJnRoaXMuaW5zdGFuY2UuZ2V0U2V0dGluZygiaXNEYXRhVmlld0luc3RhbmNlIikmJnRoaXMudXBkYXRlTXVs'@; put 'dGlwbGVTZWxlY3Rpb25IYW5kbGVzUG9zaXRpb24oaSxvLHFyLFRuLENuLCRuKX1pc0VudGlyZUNvbHVtblNlbGVjdGVkKGUsdCl7cmV0dXJuIGU9PT10aGlzLndvdC53dFRhYmxlLmdldEZpcnN0UmVuZGVyZWRSb3coKSYmdD09PXRoaXMud290Lnd0VGFibGUuZ2V0TGFzdFJlbmRlcmVkUm93'@; put 'KCl9aXNFbnRpcmVSb3dTZWxlY3RlZChlLHQpe3JldHVybiBlPT09dGhpcy53b3Qud3RUYWJsZS5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCkmJnQ9PT10aGlzLndvdC53dFRhYmxlLmdldExhc3RSZW5kZXJlZENvbHVtbigpfWdldERpbWVuc2lvbnNGcm9tSGVhZGVyKGUsdCxyLGksbyl7Y29u'@; put 'c3R7d3RUYWJsZTphfT10aGlzLndvdCxsPWEud3RSb290RWxlbWVudC5wYXJlbnROb2RlO2xldCB1PW51bGwsZz1udWxsLEU9bnVsbCxPPW51bGwsWj1udWxsLGVlPW51bGwsdmU9bnVsbCxNZT1udWxsO3N3aXRjaChlKXtjYXNlInJvd3MiOnU9KC4uLkhlKT0+YS5nZXRSb3dIZWFkZXIoSGVb'@; put 'MF0sSGVbMV0pLGc9SGU9PkhoKEhlKSxFPSJodF9fc2VsZWN0aW9uLS1yb3dzIixlZT0idG9wIjticmVhaztjYXNlImNvbHVtbnMiOnU9KC4uLkhlKT0+YS5nZXRDb2x1bW5IZWFkZXIoSGVbMF0sSGVbMV0pLGc9SGU9PlpkKEhlKSxFPSJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIixlZT0ibGVm'@; put 'dCJ9aWYoRSYmbC5jbGFzc0xpc3QuY29udGFpbnMoRSkpe2NvbnN0IEhlPXRoaXMud290LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg7aWYodmU9dT8uKHQsSGUtaSksTWU9dT8uKHIsSGUtaSksIXZlfHwhTWUpcmV0dXJuITE7Y29uc3QgV2U9WDAodmUpLGF0PVgwKE1lKSxD'@; put 'dD1XZVtlZV07cmV0dXJuIE89Q3Qtb1tlZV0tMSxaPWF0W2VlXStnKE1lKS1DdCxbdmUsTyxaXX1yZXR1cm4hMX1jaGFuZ2VCb3JkZXJTdHlsZShlLHQpe2NvbnN0IHI9dGhpc1tlXSxpPXIuc3R5bGUsbz10W2VdOyFvfHxvLmhpZGU/WXIociwiaGlkZGVuIik6KExhKHIsImhpZGRlbiIpJiZr'@; put 'byhyLCJoaWRkZW4iKSxpLmJhY2tncm91bmRDb2xvcj1TdHJpbmcoby5jb2xvcj8/IiIpLCgidG9wIj09PWV8fCJib3R0b20iPT09ZSkmJihpLmhlaWdodD1gJHtvLndpZHRofXB4YCksKCJzdGFydCI9PT1lfHwiZW5kIj09PWUpJiYoaS53aWR0aD1gJHtvLndpZHRofXB4YCkpfWNoYW5nZUJv'@; put 'cmRlclRvRGVmYXVsdFN0eWxlKGUpe2NvbnN0IHI9dGhpc1tlXS5zdHlsZTtyLmJhY2tncm91bmRDb2xvcj0iIzAwMCIsci53aWR0aD0iMXB4IixyLmhlaWdodD0iMXB4In10b2dnbGVIaWRkZW5DbGFzcyhlLHQpe3RoaXMuY2hhbmdlQm9yZGVyVG9EZWZhdWx0U3R5bGUoZSk7Y29uc3Qgcj10'@; put 'aGlzW2VdO3Q/WXIociwiaGlkZGVuIik6a28ociwiaGlkZGVuIil9ZGlzYXBwZWFyKCl7dGhpcy50b3BTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmJvdHRvbVN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc3RhcnRTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmVuZFN0eWxlLmRpc3BsYXk9'@; put 'Im5vbmUiLHRoaXMuY29ybmVyU3R5bGUuZGlzcGxheT0ibm9uZSIsUTUoKSYmdGhpcy5pbnN0YW5jZS5nZXRTZXR0aW5nKCJpc0RhdGFWaWV3SW5zdGFuY2UiKSYmKHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5z'@; put 'dHlsZXMudG9wSGl0QXJlYS5kaXNwbGF5PSJub25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbS5kaXNwbGF5PSJub25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbUhpdEFyZWEuZGlzcGxheT0ibm9uZSIpfWRlc3Ryb3koKXt0aGlzLmV2ZW50TWFu'@; put 'YWdlci5kZXN0cm95V2l0aE93bkV2ZW50c09ubHkoKSx0aGlzLm1haW4/LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKHRoaXMubWFpbil9Y29uc3RydWN0b3IoZSx0KXt0JiYodGhpcy5ldmVudE1hbmFnZXI9ZS5ldmVudE1hbmFnZXIsdGhpcy5pbnN0YW5jZT1lLHRoaXMud290PWUsdGhpcy5z'@; put 'ZXR0aW5ncz10LHRoaXMubW91c2VEb3duPSExLHRoaXMubWFpbj1udWxsLHRoaXMudG9wPW51bGwsdGhpcy5ib3R0b209bnVsbCx0aGlzLnN0YXJ0PW51bGwsdGhpcy5lbmQ9bnVsbCx0aGlzLnRvcFN0eWxlPW51bGwsdGhpcy5ib3R0b21TdHlsZT1udWxsLHRoaXMuc3RhcnRTdHlsZT1udWxs'@; put 'LHRoaXMuZW5kU3R5bGU9bnVsbCx0aGlzLmNvcm5lckRlZmF1bHRTdHlsZT12bGUodGhpcy5pbnN0YW5jZSksdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldD0tTWF0aC5jZWlsKHBhcnNlSW50KFN0cmluZyh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCksMTApLzIpLHRoaXMuY29y'@; put 'bmVyPW51bGwsdGhpcy5jb3JuZXJTdHlsZT1udWxsLHRoaXMuY3JlYXRlQm9yZGVycyh0KSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCkpfX07ZnVuY3Rpb24gQmtlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0'@; put 'ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBqa2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gdGwo'@; put 'bixlKXtyZXR1cm4gZnVuY3Rpb24gJEF0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixqa2UobixlLCJnZXQiKSl9ZnVuY3Rpb24gclQobixlLHQpe0JrZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gU3cobixlLHQpe3JldHVybiBmdW5jdGlvbiBxQXQobixl'@; put 'LHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLGprZShuLGUsInNldCIpLHQpLHR9dmFyIG4yPW5ldyBXZWFrTWFw'@; put 'LFYzPW5ldyBXZWFrTWFwLHBZPW5ldyBXZWFrTWFwLGlUPW5ldyBXZWFrTWFwLGdZPW5ldyBXZWFrTWFwLHc3PW5ldyBXZWFrTWFwLFVrZT1uZXcgV2Vha1NldDtjbGFzcyBRQXR7c2V0QWN0aXZlT3ZlcmxheShlKXtyZXR1cm4gU3codGhpcyxuMixlKSx0bCh0aGlzLHBZKS5zZXRBY3RpdmVP'@; put 'dmVybGF5KHRsKHRoaXMsbjIpKSx0bCh0aGlzLGlUKS5oYXModGwodGhpcyxuMikpfHx0bCh0aGlzLGlUKS5zZXQodGwodGhpcyxuMiksbmV3IFNldCksdGhpc31nZXRGb2N1c1NlbGVjdGlvbigpe3JldHVybiBudWxsIT09dGwodGhpcyxWMyk/dGwodGhpcyxWMykuZ2V0Rm9jdXMoKTpudWxs'@; put 'fWdldEFyZWFTZWxlY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRsKHRoaXMsVjMpP3RsKHRoaXMsVjMpLmNyZWF0ZUxheWVyZWRBcmVhKCk6bnVsbH1nZXRCb3JkZXJJbnN0YW5jZShlKXtpZighZS5zZXR0aW5ncy5ib3JkZXIpcmV0dXJuIG51bGw7aWYodGwodGhpcyx3NykuaGFzKGUpKXtjb25z'@; put 'dCByPXRsKHRoaXMsdzcpLmdldChlKTtpZihyLmhhcyh0bCh0aGlzLG4yKSkpcmV0dXJuIHIuZ2V0KHRsKHRoaXMsbjIpKTtjb25zdCBpPW5ldyBWa2UodGwodGhpcyxuMiksZS5zZXR0aW5ncyk7cmV0dXJuIHIuc2V0KHRsKHRoaXMsbjIpLGkpLGl9Y29uc3QgdD1uZXcgVmtlKHRsKHRoaXMs'@; put 'bjIpLGUuc2V0dGluZ3MpO3JldHVybiB0bCh0aGlzLHc3KS5zZXQoZSxuZXcgTWFwKFtbdGwodGhpcyxuMiksdF1dKSksdH1nZXRCb3JkZXJJbnN0YW5jZXMoZSl7cmV0dXJuIEFycmF5LmZyb20odGwodGhpcyx3NykuZ2V0KGUpPy52YWx1ZXMoKT8/W10pfWRlc3Ryb3lCb3JkZXJzKGUpe3Rs'@; put 'KHRoaXMsdzcpLmdldChlKT8uZm9yRWFjaCh0PT50LmRlc3Ryb3koKSksdGwodGhpcyx3NykuZGVsZXRlKGUpfXJlZnJlc2hBbGxCb3JkZXJIYW5kbGVTdHlsZXMoKXt0bCh0aGlzLHc3KS5mb3JFYWNoKGU9PntlLmZvckVhY2godD0+eyJ1cGRhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlc1N0'@; put 'eWxlcyJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC51cGRhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlc1N0eWxlcyYmdC51cGRhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlc1N0eWxlcygpfSl9KX1yZW5kZXIoZSl7aWYobnVsbD09PXRsKHRoaXMsVjMpKXJldHVybjtlJiZmdW5jdGlvbiBL'@; put 'QXQobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9KHRoaXMsVWtlLEpBdCkuY2FsbCh0aGlzKTtjb25zdCB0PUFycmF5LmZyb20odGwodGhpcyxWMykpLHI9bmV3'@; put 'IE1hcCxpPW5ldyBNYXA7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGE9dFtvXSx7Y2xhc3NOYW1lOmwsaGVhZGVyQXR0cmlidXRlczp1LGNyZWF0ZUxheWVyczpnLHNlbGVjdGlvblR5cGU6RX09YS5zZXR0aW5nczt0bCh0aGlzLGdZKS5oYXMoYSl8fCh0bCh0aGlzLGdZKS5h'@; put 'ZGQoYSksYS5hZGRMb2NhbEhvb2soImRlc3Ryb3kiLCgpPT50aGlzLmRlc3Ryb3lCb3JkZXJzKGEpKSk7Y29uc3QgTz10aGlzLmdldEJvcmRlckluc3RhbmNlKGEpO2lmKGEuaXNFbXB0eSgpKXtPPy5kaXNhcHBlYXIoKTtjb250aW51ZX1sJiZ0bCh0aGlzLHBZKS5zZXRBY3RpdmVTZWxlY3Rp'@; put 'b24oYSkuc2NhbigpLmZvckVhY2godmU9PntpZihyLmhhcyh2ZSkpe2NvbnN0IE1lPXIuZ2V0KHZlKTtNZS5oYXMobCkmJiEwPT09Zz9NZS5zZXQobCwoTWUuZ2V0KGwpPz8wKSsxKTpNZS5zZXQobCwxKX1lbHNlIHIuc2V0KHZlLG5ldyBNYXAoW1tsLDFdXSkpO2lmKHUmJihpLmhhcyh2ZSl8'@; put 'fGkuc2V0KHZlLFtdKSwiVEgiPT09dmUubm9kZU5hbWUpKXtjb25zdCBNZT11O2kuZ2V0KHZlKS5wdXNoKC4uLk1lKX19KTtjb25zdCBaPWEuZ2V0Q29ybmVycygpO3RsKHRoaXMsbjIpLmdldFNldHRpbmcoIm9uQmVmb3JlRHJhd0JvcmRlcnMiLFosRSksTz8uYXBwZWFyKFopfXIuZm9yRWFj'@; put 'aCgobyxhKT0+e2NvbnN0IGw9QXJyYXkuZnJvbShvKS5tYXAoKFt1LGddKT0+MT09PWc/dTpbdSwuLi5BcnJheS5mcm9tKHtsZW5ndGg6Zy0xfSwoRSxPKT0+YCR7dX0tJHtPKzF9YCldKS5mbGF0KCk7bC5mb3JFYWNoKHU9PnRsKHRoaXMsaVQpLmdldCh0bCh0aGlzLG4yKSk/LmFkZCh1KSks'@; put 'WXIoYSxsKSwiVEQiPT09YS5ub2RlTmFtZSYmQXJyYXkuaXNBcnJheSh0bCh0aGlzLFYzKS5vcHRpb25zPy5jZWxsQXR0cmlidXRlcykmJktvKGEsdGwodGhpcyxWMykub3B0aW9ucy5jZWxsQXR0cmlidXRlcyl9KSxBcnJheS5mcm9tKGkua2V5cygpKS5mb3JFYWNoKG89PntLbyhvLFsuLi5p'@; put 'LmdldChvKV0pfSl9Y29uc3RydWN0b3IoZSl7KGZ1bmN0aW9uIFhBdChuLGUpe0JrZShuLGUpLGUuYWRkKG4pfSkodGhpcyxVa2UpLHJUKHRoaXMsbjIse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJUKHRoaXMsVjMse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJUKHRoaXMscFks'@; put 'e3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJUKHRoaXMsaVQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJUKHRoaXMsZ1kse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJUKHRoaXMsdzcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFN3KHRoaXMsbjIsbnVsbCksU3co'@; put 'dGhpcyxwWSxuZXcgekF0KSxTdyh0aGlzLGlULG5ldyBXZWFrTWFwKSxTdyh0aGlzLGdZLG5ldyBXZWFrU2V0KSxTdyh0aGlzLHc3LG5ldyBNYXApLFN3KHRoaXMsVjMsZSl9fWZ1bmN0aW9uIEpBdCgpe2NvbnN0IG49dGwodGhpcyxpVCkuZ2V0KHRsKHRoaXMsbjIpKTtpZighbilyZXR1cm47'@; put 'Y29uc3QgZT10bCh0aGlzLG4yKS53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uQmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXMiKTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4uYWRkKGVbdF0pO24uZm9yRWFjaCh0PT57Y29uc3Qgcj10bCh0aGlzLG4y'@; put 'KS53dFRhYmxlLlRBQkxFLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3R9YCk7bGV0IGk9W107QXJyYXkuaXNBcnJheSh0bCh0aGlzLFYzKS5vcHRpb25zPy5jZWxsQXR0cmlidXRlcykmJihpPXRsKHRoaXMsVjMpLm9wdGlvbnMuY2VsbEF0dHJpYnV0ZXMubWFwKG89Pm9bMF0pKSxBcnJheS5pc0Fy'@; put 'cmF5KHRsKHRoaXMsVjMpLm9wdGlvbnM/LmhlYWRlckF0dHJpYnV0ZXMpJiYoaT1bLi4uaSwuLi50bCh0aGlzLFYzKS5vcHRpb25zLmhlYWRlckF0dHJpYnV0ZXMubWFwKG89Pm9bMF0pXSk7Zm9yKGxldCBvPTAsYT1yLmxlbmd0aDtvPGE7bysrKWtvKHJbb10sdCksdzQocltvXSxpKX0pLG4u'@; put 'Y2xlYXIoKX1jbGFzcyBla3QgZXh0ZW5kcyBtbGV7ZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMoKXtjb25zdCB0PVtdLHI9W107YWMoe3Jvd0hlYWRlcnM6Imh0Um93SGVhZGVycyIsY29sdW1uSGVhZGVyczoiaHRDb2x1bW5IZWFkZXJzIn0sKGksbyk9Pnt0aGlzLnd0U2V0dGluZ3MuZ2V0'@; put 'U2V0dGluZyhvKS5sZW5ndGgmJnIucHVzaChpKSx0LnB1c2goaSl9KSxrbyh0aGlzLnd0VGFibGUud3RSb290RWxlbWVudC5wYXJlbnROb2RlLHQpLFlyKHRoaXMud3RUYWJsZS53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUscil9ZGVzdHJveSgpe3RoaXMud3RUYWJsZS5kZXN0cm95KCksc3Vw'@; put 'ZXIuZGVzdHJveSgpfWdldE92ZXJsYXlCeU5hbWUoZSl7aWYoIVhBZS5pbmNsdWRlcyhlKSlyZXR1cm4gbnVsbDtjb25zdCB0PWUucmVwbGFjZSgvXyhbYS16XSkvZywocixpKT0+aS50b1VwcGVyQ2FzZSgpKTtyZXR1cm4gdGhpcy53dE92ZXJsYXlzW2Ake3R9T3ZlcmxheWBdPz9udWxsfWdl'@; put 'dFZpZXdwb3J0RGFvKCl7cmV0dXJuKGU9Pih7Z2V0IHdvdCgpe3JldHVybiBlfSxnZXQgdG9wT3ZlcmxheVRyaW1taW5nQ29udGFpbmVyKCl7cmV0dXJuIGUud3RPdmVybGF5cy50b3BPdmVybGF5LnRyaW1taW5nQ29udGFpbmVyfSxnZXQgaW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250'@; put 'YWluZXIoKXtyZXR1cm4gZS53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS50cmltbWluZ0NvbnRhaW5lcn0sZ2V0IHRvcFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIGUud3RPdmVybGF5cy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCl9LGdldCB0b3BQYXJlbnRPZmZzZXQoKXty'@; put 'ZXR1cm4gZS53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKX0sZ2V0IGlubGluZVN0YXJ0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gZS53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpfSxnZXQgaW5saW5lU3RhcnRQYXJl'@; put 'bnRPZmZzZXQoKXtyZXR1cm4gZS53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRUYWJsZVBhcmVudE9mZnNldCgpfSxnZXQgdG9wT3ZlcmxheSgpe3JldHVybiBlLnd0T3ZlcmxheXMudG9wT3ZlcmxheX0sZ2V0IGlubGluZVN0YXJ0T3ZlcmxheSgpe3JldHVybiBlLnd0T3Zlcmxh'@; put 'eXMuaW5saW5lU3RhcnRPdmVybGF5fSxnZXQgYm90dG9tT3ZlcmxheSgpe3JldHVybiBlLnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheX19KSkodGhpcyl9Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLG5ldyBTQXQodCkpO2NvbnN0IHI9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZhY2Fk'@; put 'ZSIsdGhpcyk7dGhpcy53dFRhYmxlPW5ldyB4QXQodGhpcy5nZXRUYWJsZURhbygpLHIsdGhpcy5kb21CaW5kaW5ncyx0aGlzLnd0U2V0dGluZ3MpLHRoaXMud3RWaWV3cG9ydD1uZXcgQkF0KHRoaXMuZ2V0Vmlld3BvcnREYW8oKSx0aGlzLmRvbUJpbmRpbmdzLHRoaXMud3RTZXR0aW5ncyx0'@; put 'aGlzLmV2ZW50TWFuYWdlcix0aGlzLnd0VGFibGUpLHRoaXMuc2VsZWN0aW9uTWFuYWdlcj1uZXcgUUF0KHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzZWxlY3Rpb25zIikpLHRoaXMud3RFdmVudD1uZXcgR0FlKHIsdGhpcy5kb21CaW5kaW5ncyx0aGlzLnd0U2V0dGluZ3MsdGhpcy5l'@; put 'dmVudE1hbmFnZXIsdGhpcy53dFRhYmxlLHRoaXMuc2VsZWN0aW9uTWFuYWdlciksdGhpcy53dE92ZXJsYXlzPW5ldyBDQXQodGhpcyxyLHRoaXMuZG9tQmluZGluZ3MsdGhpcy53dFNldHRpbmdzLHRoaXMuZXZlbnRNYW5hZ2VyLHRoaXMud3RUYWJsZSksdGhpcy5leHBvcnRTZXR0aW5nc0Fz'@; put 'Q2xhc3NOYW1lcygpLHRoaXMuZmluZE9yaWdpbmFsSGVhZGVycygpfX1jbGFzcyBGbGV7X2luaXRGcm9tU2V0dGluZ3MoZSl7ZS5mYWNhZGU9dD0+e2NvbnN0IHI9bmV3IEZsZSh0KTtyZXR1cm4oKT0+cn0sdGhpcy5fd290PW5ldyBla3QoZS50YWJsZSxlKX1nZXQgZ3VpZCgpe3JldHVybiB0'@; put 'aGlzLl93b3QuZ3VpZH1nZXQgcm9vdERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX3dvdC5kb21CaW5kaW5ncy5yb290RG9jdW1lbnR9Z2V0IHJvb3RXaW5kb3coKXtyZXR1cm4gdGhpcy5fd290LmRvbUJpbmRpbmdzLnJvb3RXaW5kb3d9Z2V0IHd0U2V0dGluZ3MoKXtyZXR1cm4gdGhpcy5fd290'@; put 'Lnd0U2V0dGluZ3N9Z2V0IGNsb25lU291cmNlKCl7cmV0dXJuIHRoaXMuX3dvdC5jbG9uZVNvdXJjZX1nZXQgY2xvbmVPdmVybGF5KCl7cmV0dXJuIHRoaXMuX3dvdC5jbG9uZU92ZXJsYXl9Z2V0IHNlbGVjdGlvbk1hbmFnZXIoKXtyZXR1cm4gdGhpcy5fd290LnNlbGVjdGlvbk1hbmFnZXJ9'@; put 'Z2V0IHd0Vmlld3BvcnQoKXtyZXR1cm4gdGhpcy5fd290Lnd0Vmlld3BvcnR9Z2V0IHd0T3ZlcmxheXMoKXtyZXR1cm4gdGhpcy5fd290Lnd0T3ZlcmxheXN9Z2V0IHd0VGFibGUoKXtyZXR1cm4gdGhpcy5fd290Lnd0VGFibGV9Z2V0IHd0RXZlbnQoKXtyZXR1cm4gdGhpcy5fd290Lnd0RXZl'@; put 'bnR9Z2V0IHd0U2Nyb2xsKCl7cmV0dXJuIHRoaXMuX3dvdC53dFNjcm9sbH1nZXQgZHJhd24oKXtyZXR1cm4gdGhpcy5fd290LmRyYXdufXNldCBkcmF3bihlKXt0aGlzLl93b3QuZHJhd249ZX1nZXQgYWN0aXZlT3ZlcmxheU5hbWUoKXtyZXR1cm4gdGhpcy5fd290LmFjdGl2ZU92ZXJsYXlO'@; put 'YW1lfWdldCBkcmF3SW50ZXJydXB0ZWQoKXtyZXR1cm4gdGhpcy5fd290LmRyYXdJbnRlcnJ1cHRlZH1zZXQgZHJhd0ludGVycnVwdGVkKGUpe3RoaXMuX3dvdC5kcmF3SW50ZXJydXB0ZWQ9ZX1nZXQgbGFzdE1vdXNlT3Zlcigpe3JldHVybiB0aGlzLl93b3QubGFzdE1vdXNlT3Zlcn1zZXQg'@; put 'bGFzdE1vdXNlT3ZlcihlKXt0aGlzLl93b3QubGFzdE1vdXNlT3Zlcj1lfWdldCBtb21lbnR1bVNjcm9sbGluZygpe3JldHVybiB0aGlzLl93b3QubW9tZW50dW1TY3JvbGxpbmd9c2V0IG1vbWVudHVtU2Nyb2xsaW5nKGUpe3RoaXMuX3dvdC5tb21lbnR1bVNjcm9sbGluZz1lfWdldCB0b3Vj'@; put 'aEFwcGxpZWQoKXtyZXR1cm4gdGhpcy5fd290LnRvdWNoQXBwbGllZH1zZXQgdG91Y2hBcHBsaWVkKGUpe3RoaXMuX3dvdC50b3VjaEFwcGxpZWQ9ZX1nZXQgZG9tQmluZGluZ3MoKXtyZXR1cm4gdGhpcy5fd290LmRvbUJpbmRpbmdzfWdldCBldmVudExpc3RlbmVycygpe3JldHVybiB0aGlz'@; put 'Ll93b3QuZXZlbnRMaXN0ZW5lcnN9c2V0IGV2ZW50TGlzdGVuZXJzKGUpe3RoaXMuX3dvdC5ldmVudExpc3RlbmVycz1lfWdldCBldmVudE1hbmFnZXIoKXtyZXR1cm4gdGhpcy5fd290LmV2ZW50TWFuYWdlcn1jcmVhdGVDZWxsQ29vcmRzKGUsdCl7cmV0dXJuIHRoaXMuX3dvdC5jcmVhdGVD'@; put 'ZWxsQ29vcmRzKGUsdCl9Y3JlYXRlQ2VsbFJhbmdlKGUsdCxyKXtyZXR1cm4gdGhpcy5fd290LmNyZWF0ZUNlbGxSYW5nZShlLHQscil9ZHJhdyhlPSExKXtyZXR1cm4gdGhpcy5fd290LmRyYXcoZSksdGhpc31nZXRDZWxsKGUsdD0hMSl7cmV0dXJuIHRoaXMuX3dvdC5nZXRDZWxsKGUsdCl9'@; put 'c2Nyb2xsVmlld3BvcnQoZSx0LHIpe3JldHVybiB0aGlzLl93b3Quc2Nyb2xsVmlld3BvcnQoZSx0LHIpfXNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGUsdCl7cmV0dXJuIHRoaXMuX3dvdC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShlLHQpfXNjcm9sbFZpZXdwb3J0VmVydGljYWxs'@; put 'eShlLHQpe3JldHVybiB0aGlzLl93b3Quc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGUsdCl9Z2V0Vmlld3BvcnQoKXtyZXR1cm4gdGhpcy5fd290LmdldFZpZXdwb3J0KCl9Z2V0T3ZlcmxheU5hbWUoKXtyZXR1cm4gdGhpcy5fd290LmNsb25lT3ZlcmxheT90aGlzLl93b3QuY2xvbmVPdmVy'@; put 'bGF5LnR5cGU6Im1hc3RlciJ9Z2V0T3ZlcmxheUJ5TmFtZShlKXtyZXR1cm4gdGhpcy5fd290LmdldE92ZXJsYXlCeU5hbWUoZSl9ZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMoKXt0aGlzLl93b3QuZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMoKX11cGRhdGUoZSx0KXtyZXR1cm4gdGhp'@; put 'cy5fd290Lnd0U2V0dGluZ3MudXBkYXRlKGUsdCksdGhpc31nZXRTZXR0aW5nKGUsdCxyLGksbyl7cmV0dXJuIHRoaXMuX3dvdC53dFNldHRpbmdzLmdldFNldHRpbmcoZSx0LHIsaSxvKX1oYXNTZXR0aW5nKGUpe3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5ncy5oYXMoZSl9ZGVzdHJveSgp'@; put 'e3RoaXMuX3dvdC5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSl7ZSBpbnN0YW5jZW9mIG1sZT90aGlzLl93b3Q9ZTp0aGlzLl9pbml0RnJvbVNldHRpbmdzKGUpfX1mdW5jdGlvbiB6a2Uoe2lzU2hpZnRLZXk6bixpc0xlZnRDbGljazplLGlzUmlnaHRDbGljazp0LGNvb3JkczpyLHNlbGVjdGlv'@; put 'bjppLGNvbnRyb2xsZXI6byxjZWxsQ29vcmRzRmFjdG9yeTphfSl7Y29uc3QgbD1pLHU9bC5pc1NlbGVjdGVkKCk/bC5nZXRTZWxlY3RlZFJhbmdlKCkuY3VycmVudCgpOm51bGwsZz1sLmlzU2VsZWN0ZWRCeUNvcm5lcigpLEU9bC5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKTtsLm1hcmtTb3Vy'@; put 'Y2UoIm1vdXNlIik7Y29uc3QgTz1yLnJvdz8/LTEsWj1yLmNvbD8/LTE7aWYobiYmdSlPPj0wJiZaPj0wJiYhby5jZWxsP2wuc2V0UmFuZ2VFbmQocik6ZyYmTzwwJiYhby5jb2x1bW4/bC5zZXRSYW5nZUVuZChhKHUudG8ucm93Pz8wLFopKTpFJiZaPDAmJiFvLnJvdz9sLnNldFJhbmdlRW5k'@; put 'KGEoTyx1LnRvLmNvbD8/MCkpOighZyYmIUUmJlo8MHx8ZyYmWjwwKSYmIW8ucm93P2wuc2VsZWN0Um93cyhNYXRoLm1heCh1LmZyb20ucm93Pz8wLDApLE8sWik6KCFnJiYhRSYmTzwwfHxFJiZPPDApJiYhby5jb2x1bW4mJmwuc2VsZWN0Q29sdW1ucyhNYXRoLm1heCh1LmZyb20uY29sPz8w'@; put 'LDApLFosTyk7ZWxzZXtjb25zdCBlZT0hbC5pbkluU2VsZWN0aW9uKHIpLHZlPWV8fHQmJmVlO088MCYmWj49MCYmIW8uY29sdW1uP3ZlJiZsLnNlbGVjdENvbHVtbnMoWixaLE8pOlo8MCYmTz49MCYmIW8ucm93P3ZlJiZsLnNlbGVjdFJvd3MoTyxPLFopOlo+PTAmJk8+PTAmJiFvLmNlbGw/'@; put 'dmUmJmwuc2V0UmFuZ2VTdGFydChyKTpaPDAmJk88MCYmbC5zZWxlY3RBbGwoITAsITAse2Rpc2FibGVIZWFkZXJzSGlnaGxpZ2h0OiEwLGZvY3VzUG9zaXRpb246e3JvdzowLGNvbDowfX0pfWwubWFya0VuZFNvdXJjZSgpfWZ1bmN0aW9uIFdrZSh7aXNMZWZ0Q2xpY2s6bixjb29yZHM6ZSxz'@; put 'ZWxlY3Rpb246dCxjb250cm9sbGVyOnIsY2VsbENvb3Jkc0ZhY3Rvcnk6aX0pe2lmKCFuKXJldHVybjtjb25zdCBvPXQsYT1vLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpLGw9by5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSx1PW8udGFibGVQcm9wcy5jb3VudENvbHMoKSxnPW8udGFibGVQ'@; put 'cm9wcy5jb3VudFJvd3MoKTtvLm1hcmtTb3VyY2UoIm1vdXNlIiksbCYmIXIuY29sdW1uP28uc2V0UmFuZ2VFbmQoaShnLTEsZS5jb2w/PzApKTphJiYhci5yb3c/by5zZXRSYW5nZUVuZChpKGUucm93Pz8wLHUtMSkpOnIuY2VsbHx8by5zZXRSYW5nZUVuZChlKSxvLm1hcmtFbmRTb3VyY2Uo'@; put 'KX1mdW5jdGlvbiBZa2Uoe2lzTGVmdENsaWNrOm4sc2VsZWN0aW9uOmUsY2VsbFJhbmdlTWFwcGVyOnR9KXtjb25zdCByPWUsaT1yLnNldHRpbmdzLmRpc2FibGVWaXN1YWxTZWxlY3Rpb24sbz0hMD09PWl8fCJzdHJpbmciPT10eXBlb2YgaSYmaS5sZW5ndGg+MHx8QXJyYXkuaXNBcnJheShp'@; put 'KSYmaS5sZW5ndGg+MDtpZighbnx8Im11bHRpcGxlIiE9PXIuc2V0dGluZ3Muc2VsZWN0aW9uTW9kZXx8bylyZXR1cm47Y29uc3QgYT1yLmdldFNlbGVjdGVkUmFuZ2UoKSxsPWEuY2xvbmUoKS5tYXAoZz0+dC50b1JlbmRlcmFibGUoZykpLHU9bC5jdXJyZW50KCk7aWYodSYmbC5zaXplKCk+'@; put 'MSYmIXUuaXNIZWFkZXIoKSYmIXIuaXNNdWx0aXBsZSh1KSl7Y29uc3QgZz1sLmZpbmRBbGwodSk7Zy5sZW5ndGg9PT1sLnNpemUoKT8oZS5tYXJrU291cmNlKCJkZXNlbGVjdCIpLGEucG9wKCksZS5yZWZyZXNoKCksZS5tYXJrRW5kU291cmNlKCkpOmcubGVuZ3RoPjEmJihlLm1hcmtTb3Vy'@; put 'Y2UoImRlc2VsZWN0IiksYS5yZW1vdmVMYXllcnMoZy5tYXAoKHtsYXllcjpFfSk9PkUpKSxlLnJlZnJlc2goKSxlLm1hcmtFbmRTb3VyY2UoKSl9fWNvbnN0IHRrdD1uZXcgTWFwKFtbInRvdWNoc3RhcnQiLHprZV0sWyJ0b3VjaGVuZCIsWWtlXSxbIm1vdXNlZG93biIsemtlXSxbIm1vdXNl'@; put 'b3ZlciIsV2tlXSxbIm1vdXNlbW92ZSIsV2tlXSxbIm1vdXNldXAiLFlrZV1dKTtmdW5jdGlvbiBtWShuLGUpe2NvbnN0IHQ9dGt0LmdldChuLnR5cGUpO3QmJnQoe2lzU2hpZnRLZXk6bi5zaGlmdEtleSxpc0xlZnRDbGljazp6VyhuKXx8InRvdWNoc3RhcnQiPT09bi50eXBlLGlzUmlnaHRD'@; put 'bGljazp6dihuKSwuLi5lfSl9Y29uc3QgWmtlPW5ldyBXZWFrTWFwLFBsZT1TeW1ib2woInJvb3RJbnN0YW5jZSIpO2Z1bmN0aW9uIHIyKG4pe3JldHVybiBaa2UuaGFzKG4pfWZ1bmN0aW9uIEdrZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFs'@; put 'aXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gJGtlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUu'@; put 'Z2V0KG4pfWZ1bmN0aW9uIElkKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIGlrdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sJGtlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGk2KG4sZSx0KXtHa2UobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIHV1KG4sZSx0KXtyZXR1'@; put 'cm4gZnVuY3Rpb24gb2t0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obiwka2UobixlLCJzZXQiKSx0KSx0'@; put 'fWZ1bmN0aW9uIGVfKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIHZZKG4sZSl7R2tlKG4sZSksZS5hZGQobil9dmFyIF9ZPW5ldyBXZWFrTWFw'@; put 'LE5MPW5ldyBXZWFrTWFwLEZMPW5ldyBXZWFrTWFwLG82PW5ldyBXZWFrTWFwLGNtPW5ldyBXZWFrTWFwLHlZPW5ldyBXZWFrTWFwLGJZPW5ldyBXZWFrTWFwLHRfPW5ldyBXZWFrTWFwLFBMPW5ldyBXZWFrTWFwLG9UPW5ldyBXZWFrTWFwLEhMPW5ldyBXZWFrU2V0LEhsZT1uZXcgV2Vha1Nl'@; put 'dCxxa2U9bmV3IFdlYWtTZXQsS2tlPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIHdZKG4pe3JldHVybiBuLnNvdXJjZUNhcGFiaWxpdGllcz8hMD09PW4uc291cmNlQ2FwYWJpbGl0aWVzLmZpcmVzVG91Y2hFdmVudHM6SWQodGhpcyxQTCl9ZnVuY3Rpb24gWGtlKCl7cmV0dXJuIHBhcnNlSW50KHRo'@; put 'aXMuaG90LnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgiYXJpYS1jb2xjb3VudCIpPz8iMCIsMTApfWZ1bmN0aW9uIHNrdChuKXtjb25zdCBlPWVfKHRoaXMsSGxlLFhrZSkuY2FsbCh0aGlzKStuO0tvKHRoaXMuaG90LnJvb3RFbGVtZW50LFtkc2UoZSldKX1mdW5jdGlvbiBsa3QoKXtjb25z'@; put 'dCBuPXRoaXMuaG90LnJvb3RFbGVtZW50O3RoaXMuaGFzVmVydGljYWxTY3JvbGwoKT9ZcihuLCJodEhhc1Njcm9sbFkiKTprbyhuLCJodEhhc1Njcm9sbFkiKSx0aGlzLmlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpP1lyKG4sImh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRv'@; put 'dyIpOmtvKG4sImh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdyIpLHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbCgpP1lyKG4sImh0SGFzU2Nyb2xsWCIpOmtvKG4sImh0SGFzU2Nyb2xsWCIpLHRoaXMuaXNIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3coKT9ZcihuLCJodEhvcml6'@; put 'b250YWxseVNjcm9sbGFibGVCeVdpbmRvdyIpOmtvKG4sImh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93IiksMD09PUdkKCk/WXIobiwiaHRTY3JvbGxiYXJIaWRkZW4iKTprbyhuLCJodFNjcm9sbGJhckhpZGRlbiIpfWNvbnN0IGNrdD1jbGFzcyBha3R7cmVuZGVyKCl7aWYoIXRo'@; put 'aXMuaG90LmlzUmVuZGVyU3VzcGVuZGVkKCkpe2NvbnN0IGU9dGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyO3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSZW5kZXIiLGUpLHRoaXMuX3d0LmRyYXcoIWUpLGVfKHRoaXMsS2tlLGxrdCkuY2FsbCh0aGlzKSx0aGlzLnBvc3Rwb25lZEFkanVzdEVs'@; put 'ZW1lbnRzU2l6ZSYmKHRoaXMucG9zdHBvbmVkQWRqdXN0RWxlbWVudHNTaXplPSExLHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCEwKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVuZGVyIixlKSx0aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITF9fWFkanVzdEVsZW1lbnRzU2l6ZShlPSEx'@; put 'KXtlP3RoaXMuX3d0Lnd0T3ZlcmxheXMuYWRqdXN0RWxlbWVudHNTaXplKCk6dGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemU9ITB9Z2V0Q2VsbEF0Q29vcmRzKGUsdCl7Y29uc3Qgcj10aGlzLl93dC5nZXRDZWxsKGUsdCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiByJiZyPDA/bnVs'@; put 'bDpyfXNjcm9sbFZpZXdwb3J0KGUsdCxyKXtyZXR1cm4gdGhpcy5fd3Quc2Nyb2xsVmlld3BvcnQoZSx0LHIpfXNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGUsdCl7cmV0dXJuIHRoaXMuX3d0LnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGUsdCl9c2Nyb2xsVmlld3BvcnRWZXJ0aWNh'@; put 'bGx5KGUsdCl7cmV0dXJuIHRoaXMuX3d0LnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShlLHQpfWNyZWF0ZUVsZW1lbnRzKCl7Y29uc3R7cm9vdEVsZW1lbnQ6ZSxyb290RG9jdW1lbnQ6dH09dGhpcy5ob3Qscj1lLmdldEF0dHJpYnV0ZSgic3R5bGUiKTtyJiYoZS5kYXRhc2V0Lm9yaWdpbmFs'@; put 'c3R5bGU9ciksWXIoZSwiaGFuZHNvbnRhYmxlIiksdXUodGhpcyxjbSx0LmNyZWF0ZUVsZW1lbnQoInRhYmxlIikpLFlyKElkKHRoaXMsY20pLCJodENvcmUiKSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLnRhYmxlQ2xhc3NOYW1lJiZZcihJZCh0aGlzLGNtKSx0aGlzLmhvdC5nZXRTZXR0aW5n'@; put 'cygpLnRhYmxlQ2xhc3NOYW1lKSx0aGlzLnNldHRpbmdzLmFyaWFUYWdzJiYoS28oSWQodGhpcyxjbSksW1sicm9sZSIsInByZXNlbnRhdGlvbiJdXSksS28oZSxbWyJyb2xlIiwidHJlZWdyaWQiXSxneGUoLTEpLGRzZSh0aGlzLmhvdC5jb3VudENvbHMoKSksWyJhcmlhLW11bHRpc2VsZWN0'@; put 'YWJsZSIsInRydWUiXV0pKSx0aGlzLlRIRUFEPXQuY3JlYXRlRWxlbWVudCgidGhlYWQiKSxJZCh0aGlzLGNtKS5hcHBlbmRDaGlsZCh0aGlzLlRIRUFEKSx0aGlzLlRCT0RZPXQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSxJZCh0aGlzLGNtKS5hcHBlbmRDaGlsZCh0aGlzLlRCT0RZKSx0aGlz'@; put 'LmhvdC50YWJsZT1JZCh0aGlzLGNtKSx0aGlzLmhvdC5jb250YWluZXIuaW5zZXJ0QmVmb3JlKElkKHRoaXMsY20pLHRoaXMuaG90LmNvbnRhaW5lci5maXJzdENoaWxkKX1yZWdpc3RlckV2ZW50cygpe2NvbnN0e3Jvb3RXcmFwcGVyRWxlbWVudDplLHJvb3RFbGVtZW50OnQscm9vdERvY3Vt'@; put 'ZW50OnIsc2VsZWN0aW9uOmkscm9vdFdpbmRvdzpvfT10aGlzLmhvdCxhPXIuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCwibW91c2Vkb3duIix1PT57ZV8odGhpcyxITCx3WSkuY2FsbCh0aGlzLHUpfHxkQWUodSl8fCh1dSh0aGlzLEZMLCEw'@; put 'KSx0aGlzLmlzVGV4dFNlbGVjdGlvbkFsbG93ZWQoQWEodSkpfHwoQXNlKG8pLHUucHJldmVudERlZmF1bHQoKSxvLmZvY3VzKCkpKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCwibW91c2V1cCIsdT0+e2VfKHRoaXMsSEwsd1kpLmNhbGwodGhpcyx1KXx8dXUodGhp'@; put 'cyxGTCwhMSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQsIm1vdXNlbW92ZSIsdT0+e0lkKHRoaXMsRkwpJiYhdGhpcy5pc1RleHRTZWxlY3Rpb25BbGxvd2VkKEFhKHUpKSYmKHRoaXMuc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24mJkFzZShvKSx1LnByZXZlbnRE'@; put 'ZWZhdWx0KCkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJrZXl1cCIsdT0+e2kuaXNJblByb2dyZXNzKCkmJiF1LnNoaWZ0S2V5JiZpLmZpbmlzaCgpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJtb3VzZXVwIix1PT57aWYoaS5pc0lu'@; put 'UHJvZ3Jlc3MoKSYmelcodSkmJmkuZmluaXNoKCksdXUodGhpcyxvNiwhMSksZV8odGhpcyxITCx3WSkuY2FsbCh0aGlzLHUpKXJldHVybjtjb25zdCBnPVZNKHIuYWN0aXZlRWxlbWVudCk7eUwoci5hY3RpdmVFbGVtZW50KSYmIWd8fChnfHwhaS5pc1NlbGVjdGVkKCkmJiFpLmlzU2VsZWN0'@; put 'ZWRCeUFueUhlYWRlcigpJiYhKGU/P3QpLmNvbnRhaW5zKHUudGFyZ2V0KSYmIXp2KHUpKSYmdGhpcy5ob3QudW5saXN0ZW4oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYSwiY29udGV4dG1lbnUiLHU9PntpLmlzSW5Qcm9ncmVzcygpJiZ6dih1KSYmKGkuZmluaXNo'@; put 'KCksdXUodGhpcyxvNiwhMSkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJ0b3VjaGVuZCIsKCk9PntpLmlzSW5Qcm9ncmVzcygpJiZpLmZpbmlzaCgpLHV1KHRoaXMsbzYsITEpLHV1KHRoaXMsUEwsITApLG51bGwhPT1JZCh0aGlzLG9UKSYmY2xlYXJUaW1lb3V0'@; put 'KElkKHRoaXMsb1QpKSx1dSh0aGlzLG9ULHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9Pnt1dSh0aGlzLFBMLCExKSx1dSh0aGlzLG9ULG51bGwpfSw0MDApKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYSwibW91c2Vkb3duIix1PT57Y29uc3QgZz11LnRhcmdl'@; put 'dCxFPXUuY2xpZW50WCxPPXUuY2xpZW50WTtsZXQgWj11LnRhcmdldDtpZihJZCh0aGlzLG82KXx8IXR8fCF0aGlzLmhvdC52aWV3fHxlXyh0aGlzLEhMLHdZKS5jYWxsKHRoaXMsdSkpcmV0dXJuO2NvbnN0e2hvbGRlcjplZX09dGhpcy5fd3Qud3RUYWJsZTtpZihaPT09ZWUpe2NvbnN0IE1l'@; put 'PUdkKHIpO2lmKHIuZWxlbWVudEZyb21Qb2ludChFK01lLE8pIT09ZWV8fHIuZWxlbWVudEZyb21Qb2ludChFLE8rTWUpIT09ZWUpcmV0dXJufWVsc2V7Y29uc3R7cm9vdFBvcnRhbEVsZW1lbnQ6TWV9PXRoaXMuaG90O2Zvcig7WiE9PWE7KXtpZihudWxsPT09Wil7aWYodS5pc1RhcmdldFdl'@; put 'YkNvbXBvbmVudClicmVhaztyZXR1cm59aWYoWj09PXR8fFo9PT1NZSlyZXR1cm47Wj1aLnBhcmVudE5vZGV9fSgiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5zZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM/dGhpcy5zZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMoZyk6dGhpcy5z'@; put 'ZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMpP3RoaXMuaG90LmRlc2VsZWN0Q2VsbCgpOnRoaXMuaG90LmRlc3Ryb3lFZGl0b3IoITEsITEpfSk7bGV0IGw9djcobyk7Zm9yKDtudWxsIT09bDspdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihsLmRvY3VtZW50LmRvY3Vt'@; put 'ZW50RWxlbWVudCwiY2xpY2siLCgpPT57dGhpcy5ob3QudW5saXN0ZW4oKX0pLGw9djcobCk7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJZCh0aGlzLGNtKSwic2VsZWN0c3RhcnQiLHU9Pnt0aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9ufHx5TChBYSh1KSl8fHUu'@; put 'cHJldmVudERlZmF1bHQoKX0pfWludmFsaWRhdGVJbmRleFNpemVzQ2FjaGUoKXt0aGlzLl93dC53dFZpZXdwb3J0LmludmFsaWRhdGVSb3dIZWlnaHRDYWNoZSgpLHRoaXMuX3d0Lnd0Vmlld3BvcnQuaW52YWxpZGF0ZUNvbHVtbldpZHRoQ2FjaGUoKX1pbnZhbGlkYXRlQ29sdW1uV2lkdGhD'@; put 'YWNoZSgpe3RoaXMuX3d0Lnd0Vmlld3BvcnQuaW52YWxpZGF0ZUNvbHVtbldpZHRoQ2FjaGUoKX1pbnZhbGlkYXRlUm93SGVpZ2h0Q2FjaGUoKXt0aGlzLl93dC53dFZpZXdwb3J0LmludmFsaWRhdGVSb3dIZWlnaHRDYWNoZSgpfXRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29y'@; put 'ZHMoe3JvdzplLGNvbDp0fSl7cmV0dXJuIHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKC4uLnRoaXMudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbEluZGV4KGUsdCkpfXRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChlLHQpe2NvbnN0IHI9ZT49MD90aGlzLmhv'@; put 'dC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGUpOmUsaT10Pj0wP3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodCk6dDtyZXR1cm5bbnVsbD09PXI/ZTpyLG51bGw9PT1pP3Q6aV19Y291bnRSZW5kZXJh'@; put 'YmxlSW5kZXhlcyhlLHQpe2NvbnN0IHI9TWF0aC5taW4oZS5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLHQpLGk9ZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoci0xLC0xKTtyZXR1cm4gbnVsbD09PWk/MDooZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGkpPz8wKSsxfWNv'@; put 'dW50UmVuZGVyYWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy5jb3VudFJlbmRlcmFibGVJbmRleGVzKHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLHRoaXMuc2V0dGluZ3MubWF4Q29scyl9Y291bnRSZW5kZXJhYmxlUm93cygpe3JldHVybiB0aGlzLmNvdW50UmVuZGVyYWJsZUluZGV4ZXMo'@; put 'dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsdGhpcy5zZXR0aW5ncy5tYXhSb3dzKX1jb3VudE5vdEhpZGRlblJvd0luZGV4ZXMoZSx0KXtyZXR1cm4gdGhpcy5jb3VudE5vdEhpZGRlbkluZGV4ZXMoZSx0LHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLHRoaXMuY291bnRSZW5kZXJhYmxlUm93cygp'@; put 'KX1jb3VudE5vdEhpZGRlbkNvbHVtbkluZGV4ZXMoZSx0KXtyZXR1cm4gdGhpcy5jb3VudE5vdEhpZGRlbkluZGV4ZXMoZSx0LHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLHRoaXMuY291bnRSZW5kZXJhYmxlQ29sdW1ucygpKX1jb3VudE5vdEhpZGRlbkluZGV4ZXMoZSx0LHIsaSl7aWYo'@; put 'aXNOYU4oZSl8fGU8MClyZXR1cm4gMDtjb25zdCBhPXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGUsdDwwPy0xOjEpLGw9ci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGEpO2lmKG51bGw9PT1sfHwhTnVtYmVyLmlzSW50ZWdlcihsKSlyZXR1cm4gMDtsZXQgdT0wO3JldHVybiB0'@; put 'PDA/dT1sKzE6dD4wJiYodT1pLWwpLHV9Y291bnROb3RIaWRkZW5GaXhlZENvbHVtbnNTdGFydCgpe2NvbnN0IGU9dGhpcy5ob3QuY291bnRDb2xzKCksdD1NYXRoLm1pbihOdW1iZXIodGhpcy5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydCl8fDAsZSktMTtyZXR1cm4gdGhpcy5jb3VudE5v'@; put 'dEhpZGRlbkNvbHVtbkluZGV4ZXModCwtMSl9Y291bnROb3RIaWRkZW5GaXhlZFJvd3NUb3AoKXtjb25zdCBlPXRoaXMuaG90LmNvdW50Um93cygpLHQ9TWF0aC5taW4oTnVtYmVyKHRoaXMuc2V0dGluZ3MuZml4ZWRSb3dzVG9wKXx8MCxlKS0xO3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVu'@; put 'Um93SW5kZXhlcyh0LC0xKX1jb3VudE5vdEhpZGRlbkZpeGVkUm93c0JvdHRvbSgpe2NvbnN0IGU9dGhpcy5ob3QuY291bnRSb3dzKCksdD1NYXRoLm1heChlLShOdW1iZXIodGhpcy5zZXR0aW5ncy5maXhlZFJvd3NCb3R0b20pfHwwKSwwKTtyZXR1cm4gdGhpcy5jb3VudE5vdEhpZGRlblJv'@; put 'd0luZGV4ZXModCwxKX1jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZShlLHQpe2xldCByPTA7Zm9yKGxldCBpPWU7aTw9dDtpKyspbnVsbCE9PXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoaSkmJihyKz0xKTtyZXR1cm4gcn1jb3Vu'@; put 'dFJlbmRlcmFibGVSb3dzSW5SYW5nZShlLHQpe2xldCByPTA7Zm9yKGxldCBpPWU7aTw9dDtpKyspbnVsbCE9PXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoaSkmJihyKz0xKTtyZXR1cm4gcn1pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5'@; put 'T3ZlcmxheXMoKXtjb25zdCBlPXRoaXMuY291bnROb3RIaWRkZW5GaXhlZFJvd3NUb3AoKSt0aGlzLmNvdW50Tm90SGlkZGVuRml4ZWRSb3dzQm90dG9tKCksdD10aGlzLmNvdW50Tm90SGlkZGVuRml4ZWRDb2x1bW5zU3RhcnQoKTtyZXR1cm4gdGhpcy5ob3QuY291bnRSZW5kZXJlZFJvd3Mo'@; put 'KT5lJiZ0aGlzLmhvdC5jb3VudFJlbmRlcmVkQ29scygpPnR9aW5pdGlhbGl6ZVdhbGtvbnRhYmxlKCl7Y29uc3QgZT17YXJpYVRhZ3M6dGhpcy5zZXR0aW5ncy5hcmlhVGFncyxydGxNb2RlOnRoaXMuaG90LmlzUnRsKCksZXh0ZXJuYWxSb3dDYWxjdWxhdG9yOnRoaXMuaG90LmdldFBsdWdp'@; put 'bigiYXV0b1Jvd1NpemUiKSYmdGhpcy5ob3QuZ2V0UGx1Z2luKCJhdXRvUm93U2l6ZSIpLmlzRW5hYmxlZCgpLHRhYmxlOklkKHRoaXMsY20pLGlzRGF0YVZpZXdJbnN0YW5jZTooKT0+cjIodGhpcy5ob3QpLHByZXZlbnRPdmVyZmxvdzooKT0+dGhpcy5zZXR0aW5ncy5wcmV2ZW50T3ZlcmZs'@; put 'b3cscHJldmVudFdoZWVsOigpPT50aGlzLnNldHRpbmdzLnByZXZlbnRXaGVlbCx2aWV3cG9ydENvbHVtblJlbmRlcmluZ1RocmVzaG9sZDooKT0+dGhpcy5zZXR0aW5ncy52aWV3cG9ydENvbHVtblJlbmRlcmluZ1RocmVzaG9sZCx2aWV3cG9ydFJvd1JlbmRlcmluZ1RocmVzaG9sZDooKT0+'@; put 'dGhpcy5zZXR0aW5ncy52aWV3cG9ydFJvd1JlbmRlcmluZ1RocmVzaG9sZCxkYXRhOihvLGEpPT57Y29uc3RbbCx1XT10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChvLGEpO3JldHVybiB0aGlzLmhvdC5nZXREYXRhQXRDZWxsKGwsdSl9LHRvdGFsUm93czooKT0+'@; put 'dGhpcy5jb3VudFJlbmRlcmFibGVSb3dzKCksdG90YWxDb2x1bW5zOigpPT50aGlzLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKSxmaXhlZENvbHVtbnNTdGFydDooKT0+dGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkQ29sdW1uc1N0YXJ0KCksZml4ZWRSb3dzVG9wOigpPT50aGlzLmNvdW50Tm90'@; put 'SGlkZGVuRml4ZWRSb3dzVG9wKCksZml4ZWRSb3dzQm90dG9tOigpPT50aGlzLmNvdW50Tm90SGlkZGVuRml4ZWRSb3dzQm90dG9tKCksc2hvdWxkUmVuZGVySW5saW5lU3RhcnRPdmVybGF5OigpPT4odGhpcy5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydD8/MCk+MHx8ZS5yb3dIZWFkZXJz'@; put 'KCkubGVuZ3RoPjAsc2hvdWxkUmVuZGVyVG9wT3ZlcmxheTooKT0+KHRoaXMuc2V0dGluZ3MuZml4ZWRSb3dzVG9wPz8wKT4wfHxlLmNvbHVtbkhlYWRlcnMoKS5sZW5ndGg+MCxzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5OigpPT4odGhpcy5zZXR0aW5ncy5maXhlZFJvd3NCb3R0b20/PzAp'@; put 'PjAsbWluU3BhcmVSb3dzOigpPT50aGlzLnNldHRpbmdzLm1pblNwYXJlUm93cyxyZW5kZXJBbGxSb3dzOnRoaXMuc2V0dGluZ3MucmVuZGVyQWxsUm93cyxyZW5kZXJBbGxDb2x1bW5zOnRoaXMuc2V0dGluZ3MucmVuZGVyQWxsQ29sdW1ucyxyb3dIZWFkZXJzOigpPT57Y29uc3Qgbz1bXTty'@; put 'ZXR1cm4gdGhpcy5ob3QuaGFzUm93SGVhZGVycygpJiZvLnB1c2goKGEsbCk9Pntjb25zdCB1PWE+PTA/dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChhKTphO3RoaXMuYXBwZW5kUm93SGVhZGVyKHUsbCl9KSx0aGlzLmhvdC5ydW5Ib29rcygi'@; put 'YWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnMiLG8pLHV1KHRoaXMsTkwsby5sZW5ndGgpLHRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3MmJmVfKHRoaXMsSGxlLFhrZSkuY2FsbCh0aGlzKT09PXRoaXMuaG90LmNvdW50Q29scygpJiZlXyh0aGlzLHFrZSxza3QpLmNhbGwodGhpcyxJ'@; put 'ZCh0aGlzLE5MKSksb30sY29sdW1uSGVhZGVyczooKT0+e2NvbnN0IG89W107cmV0dXJuIHRoaXMuaG90Lmhhc0NvbEhlYWRlcnMoKSYmby5wdXNoKChhLGwpPT57Y29uc3QgdT1hPj0wP3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYSk6'@; put 'YTt0aGlzLmFwcGVuZENvbEhlYWRlcih1LGwpfSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIixvKSx1dSh0aGlzLF9ZLG8ubGVuZ3RoKSxvfSxjb2x1bW5XaWR0aDpvPT57Y29uc3QgYT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1'@; put 'YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pO3JldHVybiB0aGlzLmhvdC5nZXRDb2xXaWR0aChudWxsPT09YT9vOmEpfSxyb3dIZWlnaHQ6bz0+e2NvbnN0IGE9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChvKTtyZXR1cm4gdGhpcy5ob3QuZ2V0'@; put 'Um93SGVpZ2h0KG51bGw9PT1hP286YSl9LHJvd0hlaWdodEJ5T3ZlcmxheU5hbWU6KG8sYSk9Pntjb25zdCBsPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgobyksdT1udWxsPT09bD9vOmw7cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJtb2Rp'@; put 'ZnlSb3dIZWlnaHRCeU92ZXJsYXlOYW1lIix0aGlzLmhvdC5nZXRSb3dIZWlnaHQodSksdSxhKX0sY2VsbFJlbmRlcmVyOihvLGEsbCk9Pntjb25zdFt1LGddPXRoaXMudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbEluZGV4KG8sYSksRT10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5'@; put 'R2V0Q2VsbENvb3JkcyIsdSxnLCExLCJtZXRhIik7bGV0IE89dSxaPWc7QXJyYXkuaXNBcnJheShFKSYmKFtPLFpdPUUpO2NvbnN0IGVlPXRoaXMuaG90LmdldENlbGxNZXRhKE8sWiksdmU9dGhpcy5ob3QuY29sVG9Qcm9wKFopO2xldCBNZT10aGlzLmhvdC5nZXREYXRhQXRSb3dQcm9wKE8s'@; put 'dmUpO3RoaXMuaG90Lmhhc0hvb2soImJlZm9yZVZhbHVlUmVuZGVyIikmJihNZT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVmFsdWVSZW5kZXIiLE1lLGVlKSk7Y29uc3QgSGU9dGhpcy5ob3QuZ2V0Q2VsbFJlbmRlcmVyKGVlKTtsZXQgV2U9TWU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGVl'@; put 'LnZhbHVlRm9ybWF0dGVyKVdlPWVlLnZhbHVlRm9ybWF0dGVyKFdlLGVlKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBIZSYmInZhbHVlRm9ybWF0dGVyImluIEhlKXtjb25zdHt2YWx1ZUZvcm1hdHRlcjpDdH09SGU7ImZ1bmN0aW9uIj09dHlwZW9mIEN0JiYoV2U9Q3QuY2FsbChlZSxX'@; put 'ZSxlZSkpfXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSZW5kZXJlciIsbCx1LGcsdmUsTWUsZWUpO2NvbnN0IGF0PVt0aGlzLmhvdCxsLHUsZyx2ZSxXZSxlZV07SGUoLi4uYXQpLGVlLl9pc0Jhc2VSZW5kZXJlckNhbGxlZHx8dGhpcy5ob3QuZ2V0Q2VsbFJlbmRlcmVyKHtyZW5kZXJlcjoi'@; put 'YmFzZSJ9KSguLi5hdCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVuZGVyZXIiLGwsdSxnLHZlLE1lLGVlKSxlZS5faXNCYXNlUmVuZGVyZXJDYWxsZWQ9ITF9LHNlbGVjdGlvbnM6dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodCxoaWRlQm9yZGVyT25Nb3VzZURvd25PdmVyOigpPT50'@; put 'aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uLG9uV2luZG93UmVzaXplOigpPT57dGhpcy5ob3QmJiF0aGlzLmhvdC5pc0Rlc3Ryb3llZCYmdGhpcy5ob3QucmVmcmVzaERpbWVuc2lvbnMoKX0sb25Db250YWluZXJFbGVtZW50UmVzaXplOigpPT57dGhpcy5ob3QmJiF0aGlzLmhvdC5p'@; put 'c0Rlc3Ryb3llZCYmVXYodGhpcy5ob3Qucm9vdEVsZW1lbnQpJiZ0aGlzLmhvdC5yZWZyZXNoRGltZW5zaW9ucygpfSxvbkNlbGxNb3VzZURvd246KG8sYSxsLHUpPT57Y29uc3QgZz10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoYSksRT17cm93OiExLGNvbHVt'@; put 'bjohMSxjZWxsOiExfTt0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmFjdGl2ZVd0PXUsdXUodGhpcyxvNiwhMCksdXUodGhpcyx0Xyx7cm93Om8uY2xpZW50WCxjb2w6by5jbGllbnRZfSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsbyxnLGwsRSksIUo1KG8pJiYo'@; put 'bVkobyx7Y29vcmRzOmcsc2VsZWN0aW9uOnRoaXMuaG90LnNlbGVjdGlvbixjb250cm9sbGVyOkUsY2VsbENvb3Jkc0ZhY3Rvcnk6KE8sWik9PnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKE8sWil9KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLG8sZyxsKSx0'@; put 'aGlzLmFjdGl2ZVd0PXRoaXMuX3d0KX0sb25DZWxsQ29udGV4dE1lbnU6KG8sYSxsLHUpPT57Y29uc3QgZz10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoYSk7dGhpcy5hY3RpdmVXdD11LHV1KHRoaXMsbzYsITEpLHRoaXMuaG90LnNlbGVjdGlvbi5pc0luUHJv'@; put 'Z3Jlc3MoKSYmdGhpcy5ob3Quc2VsZWN0aW9uLmZpbmlzaCgpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxDb250ZXh0TWVudSIsbyxnLGwpLCFKNShvKSYmKHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixvLGcsbCksdGhpcy5hY3RpdmVXdD10aGlz'@; put 'Ll93dCl9LG9uQ2VsbE1vdXNlT3V0OihvLGEsbCx1KT0+e2NvbnN0IGc9dGhpcy50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKGEpO3RoaXMuYWN0aXZlV3Q9dSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlT25DZWxsTW91c2VPdXQiLG8sZyxsKSwhSjUobykmJih0aGlz'@; put 'LmhvdC5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxNb3VzZU91dCIsbyxnLGwpLHRoaXMuYWN0aXZlV3Q9dGhpcy5fd3QpfSxvbkNlbGxNb3VzZU92ZXI6KG8sYSxsLHUpPT57Y29uc3QgZz10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoYSksRT17cm93OiExLGNvbHVt'@; put 'bjohMSxjZWxsOiExfTt0aGlzLmFjdGl2ZVd0PXUsdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsbyxnLGwsRSksIUo1KG8pJiYoSWQodGhpcyxvNikmJighSWQodGhpcyx0Xyl8fElkKHRoaXMsdF8pLnJvdyE9PW8uY2xpZW50WHx8SWQodGhpcyx0XykuY29sIT09'@; put 'by5jbGllbnRZKSYmbVkobyx7Y29vcmRzOmcsc2VsZWN0aW9uOnRoaXMuaG90LnNlbGVjdGlvbixjb250cm9sbGVyOkUsY2VsbENvb3Jkc0ZhY3Rvcnk6KE8sWik9PnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKE8sWil9KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxNb3VzZU92'@; put 'ZXIiLG8sZyxsKSx0aGlzLmFjdGl2ZVd0PXRoaXMuX3d0LHV1KHRoaXMsdF8sbnVsbCkpfSxvbkNlbGxNb3VzZU92ZXJPdXRzaWRlOihvLGEsbCx1KT0+e2NvbnN0IGc9dGhpcy50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKGEpLEU9e3JvdzohMSxjb2x1bW46ITEsY2Vs'@; put 'bDohMX07dGhpcy5hY3RpdmVXdD11LHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXJPdXRzaWRlIixvLGcsbCxFKSwhSjUobykmJihtWShvLHtjb29yZHM6ZyxzZWxlY3Rpb246dGhpcy5ob3Quc2VsZWN0aW9uLGNvbnRyb2xsZXI6RSxjZWxsQ29vcmRzRmFjdG9yeToo'@; put 'TyxaKT0+dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoTyxaKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlT3Zlck91dHNpZGUiLG8sZyxsKSx0aGlzLmFjdGl2ZVd0PXRoaXMuX3d0LHV1KHRoaXMsdF8sbnVsbCkpfSxvbkNlbGxNb3VzZVVwOihvLGEsbCx1KT0+e2Nv'@; put 'bnN0IGc9dGhpcy50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKGEpO3RoaXMuYWN0aXZlV3Q9dSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlT25DZWxsTW91c2VVcCIsbyxnLGwpLCFKNShvKSYmIXRoaXMuaG90LmlzRGVzdHJveWVkJiYobVkobyx7Y29vcmRzOmcsc2Vs'@; put 'ZWN0aW9uOnRoaXMuaG90LnNlbGVjdGlvbixjZWxsUmFuZ2VNYXBwZXI6a1R0KHRoaXMuaG90LCJjZWxsUmFuZ2VNYXBwZXIiKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlVXAiLG8sZyxsKSx0aGlzLmFjdGl2ZVd0PXRoaXMuX3d0KX0sb25DZWxsQ29ybmVyTW91c2VE'@; put 'b3duOm89PntvLnByZXZlbnREZWZhdWx0KCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixvKX0sb25DZWxsQ29ybmVyRGJsQ2xpY2s6bz0+e28ucHJldmVudERlZmF1bHQoKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGlj'@; put 'ayIsbyl9LGJlZm9yZURyYXc6KG8sYSk9PnRoaXMuYmVmb3JlUmVuZGVyKG8sYSksb25EcmF3Om89PnRoaXMuYWZ0ZXJSZW5kZXIobyksb25CZWZvcmVWaWV3cG9ydFNjcm9sbFZlcnRpY2FsbHk6KG8sYSk9Pntjb25zdCBsPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLHU9bzwwO2xldCBnPW87'@; put 'aWYoIXUpe2NvbnN0IEU9bC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pO2lmKG51bGw9PT1FKXJldHVybiBvO2c9RX1yZXR1cm4gZz10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVmlld3BvcnRTY3JvbGxWZXJ0aWNhbGx5IixnLGEpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVW'@; put 'aWV3cG9ydFNjcm9sbCIpLHU/ZzpsLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoZyl9LG9uQmVmb3JlVmlld3BvcnRTY3JvbGxIb3Jpem9udGFsbHk6KG8sYSk9Pntjb25zdCBsPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLHU9bzwwO2xldCBnPW87aWYoIXUpe2NvbnN0IEU9bC5n'@; put 'ZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pO2lmKG51bGw9PT1FKXJldHVybiBvO2c9RX1yZXR1cm4gZz10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVmlld3BvcnRTY3JvbGxIb3Jpem9udGFsbHkiLGcsYSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVZpZXdwb3J0U2Nyb2xsIiks'@; put 'dT9nOmwuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChnKX0sb25TY3JvbGxWZXJ0aWNhbGx5OigpPT57dGhpcy5ob3QucnVuSG9va3MoImFmdGVyU2Nyb2xsVmVydGljYWxseSIpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNjcm9sbCIpfSxvblNjcm9sbEhvcml6b250YWxseTooKT0+'@; put 'e3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNjcm9sbCIpfSxvbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzOigpPT50aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXMiKSxvbkJl'@; put 'Zm9yZUhpZ2hsaWdodGluZ1Jvd0hlYWRlcjoobyxhLGwpPT57Y29uc3QgdT10aGlzLmhvdC5yb3dJbmRleE1hcHBlcixnPW88MDtsZXQgRT1vO2d8fChFPXUuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChvKT8/byk7Y29uc3QgTz10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlSGlnaGxp'@; put 'Z2h0aW5nUm93SGVhZGVyIixFLGEsbCk7cmV0dXJuIGc/Tzp1LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoTywxKSl9LG9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyOihvLGEsbCk9Pntjb25zdCB1PXRoaXMuaG90LmNvbHVt'@; put 'bkluZGV4TWFwcGVyLGc9bzwwO2xldCBFPW87Z3x8KEU9dS5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pPz9vKTtjb25zdCBPPXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXIiLEUsYSxsKTtyZXR1cm4gZz9POnUuZ2V0UmVuZGVyYWJsZUZy'@; put 'b21WaXN1YWxJbmRleCh1LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChPLDEpKX0sb25BZnRlckRyYXdTZWxlY3Rpb246KG8sYSxsKT0+e2xldCB1O2NvbnN0W2csRV09dGhpcy50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgobyxhKSxPPXRoaXMuaG90LnNlbGVjdGlvbi5n'@; put 'ZXRTZWxlY3RlZFJhbmdlKCk7aWYoTy5zaXplKCk+MCl7Y29uc3QgZWU9Ty5wZWVrQnlJbmRleChsPz8wKTt1PVtlZS5mcm9tLnJvdyxlZS5mcm9tLmNvbCxlZS50by5yb3csZWUudG8uY29sXX1yZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoImFmdGVyRHJhd1NlbGVjdGlvbiIsZyxFLHUsbCl9'@; put 'LG9uQmVmb3JlRHJhd0JvcmRlcnM6KG8sYSk9Pntjb25zdFtsLHUsZyxFXT1vLE89W3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgobCksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh1KSx0'@; put 'aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGcpLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoRSldO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJhd0JvcmRlcnMiLE8sYSl9'@; put 'LG9uQmVmb3JlVG91Y2hTY3JvbGw6KCk9PnRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVUb3VjaFNjcm9sbCIpLG9uQWZ0ZXJNb21lbnR1bVNjcm9sbDooKT0+dGhpcy5ob3QucnVuSG9va3MoImFmdGVyTW9tZW50dW1TY3JvbGwiKSxvbk1vZGlmeVJvd0hlYWRlcldpZHRoOm89PnRoaXMuaG90'@; put 'LnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWFkZXJXaWR0aCIsbyksb25Nb2RpZnlHZXRDZWxsQ29vcmRzOihvLGEsbCx1KT0+e2NvbnN0IGc9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsRT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlcixPPWE+PTA/RS5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUlu'@; put 'ZGV4KGEpOmEsWj1vPj0wP2cuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChvKTpvLGVlPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixaLE8sbCx1KTtpZihBcnJheS5pc0FycmF5KGVlKSl7Y29uc3RbdmUsTWUsSGUsV2VdPWVlO3JldHVyblt2ZT49MD9nLmdl'@; put 'dFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoZy5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodmUsMSkpOnZlLE1lPj0wP0UuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChFLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChNZSwxKSk6TWUsSGU+PTA/Zy5nZXRSZW5kZXJhYmxlRnJvbVZp'@; put 'c3VhbEluZGV4KGcuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEhlLC0xKSk6SGUsV2U+PTA/RS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEUuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFdlLC0xKSk6V2VdfX0sb25Nb2RpZnlHZXRDb29yZHNFbGVtZW50OihvLGEpPT57Y29uc3Qg'@; put 'bD10aGlzLmhvdC5yb3dJbmRleE1hcHBlcix1PXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGc9YT49MD91LmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYSk6YSxFPW8+PTA/bC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pOm8sTz10aGlzLmhvdC5ydW5Ib29rcygibW9k'@; put 'aWZ5R2V0Q29vcmRzRWxlbWVudCIsRSxnKTtpZihBcnJheS5pc0FycmF5KE8pKXtjb25zdFtaLGVlXT1PO3JldHVybltaPj0wP2wuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChsLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChaLDEpKTpaLGVlPj0wP3UuZ2V0UmVuZGVyYWJsZUZyb21W'@; put 'aXN1YWxJbmRleCh1LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChlZSwxKSk6ZWVdfX0sdmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGU6bz0+e2NvbnN0IGE9ImF1dG8iPT09dGhpcy5zZXR0aW5ncy52aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldD8xOnRoaXMuc2V0dGluZ3Mudmlld3Bv'@; put 'cnRSb3dSZW5kZXJpbmdPZmZzZXQ7aWYoKGE/PzApPjApe2NvbnN0IGw9dGhpcy5jb3VudFJlbmRlcmFibGVSb3dzKCksZz1vLmVuZFJvdztvLnN0YXJ0Um93PU1hdGgubWF4KG8uc3RhcnRSb3ctKGE/PzApLDApLG8uZW5kUm93PU1hdGgubWluKGcrKGE/PzApLGwtMSl9dGhpcy5ob3QucnVu'@; put 'SG9va3MoImFmdGVyVmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGUiLG8pfSx2aWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZTpvPT57Y29uc3QgYT0iYXV0byI9PT10aGlzLnNldHRpbmdzLnZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0PzE6dGhpcy5zZXR0aW5ncy52aWV3'@; put 'cG9ydENvbHVtblJlbmRlcmluZ09mZnNldDtpZigoYT8/MCk+MCl7Y29uc3QgbD10aGlzLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKSxnPW8uZW5kQ29sdW1uO28uc3RhcnRDb2x1bW49TWF0aC5tYXgoby5zdGFydENvbHVtbi0oYT8/MCksMCksby5lbmRDb2x1bW49TWF0aC5taW4oZysoYT8/'@; put 'MCksbC0xKX10aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsbyl9LHJvd0hlYWRlcldpZHRoOigpPT50aGlzLnNldHRpbmdzLnJvd0hlYWRlcldpZHRoLGNvbHVtbkhlYWRlckhlaWdodDooKT0+e2NvbnN0IG89dGhpcy5ob3QucnVuSG9v'@; put 'a3MoIm1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIpO3JldHVybiB0aGlzLnNldHRpbmdzLmNvbHVtbkhlYWRlckhlaWdodHx8b30sc3R5bGVzSGFuZGxlcjooKT0+dGhpcy5ob3Quc3R5bGVzSGFuZGxlcn07dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUluaXRXYWxrb250YWJsZSIsZSksdGhp'@; put 'cy5fd3Q9bmV3IEZsZShlKSx0aGlzLmFjdGl2ZVd0PXRoaXMuX3d0O2NvbnN0IHQ9dGhpcy5fd3Qud3RUYWJsZS5zcHJlYWRlcix7d2lkdGg6cixoZWlnaHQ6aX09dGhpcy5ob3Qucm9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5zZXRMYXN0U2l6ZShyLGkpLHRoaXMu'@; put 'ZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCwibW91c2Vkb3duIixvPT57by50YXJnZXQ9PT10JiYzPT09by53aGljaCYmby5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCwiY29udGV4dG1lbnUiLG89PntvLnRhcmdldD09PXQm'@; put 'JjM9PT1vLndoaWNoJiZvLnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJjbGljayIsKCk9Pnt0aGlzLnNldHRpbmdzLm9ic2VydmVET01WaXNpYmlsaXR5JiZ0aGlzLl93'@; put 'dC5kcmF3SW50ZXJydXB0ZWQmJnRoaXMuaG90LnJlbmRlcigpfSl9aXNUZXh0U2VsZWN0aW9uQWxsb3dlZChlKXtpZih5TChlKSlyZXR1cm4hMDtjb25zdCB0PUJ2KGUsdGhpcy5fd3Qud3RUYWJsZS5zcHJlYWRlcik7aWYoITA9PT10aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZ0'@; put 'KXJldHVybiEwO2NvbnN0IHI9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5pc1NpbmdsZUNlbGwoKT8/ITE7cmV0dXJuISEoImNlbGwiPT09dGhpcy5zZXR0aW5ncy5mcmFnbWVudFNlbGVjdGlvbiYmciYmdHx8IXRoaXMuc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24mJnRo'@; put 'aXMuaXNDZWxsRWRpdGVkKCkmJnIpfWlzTW91c2VEb3duKCl7cmV0dXJuIElkKHRoaXMsbzYpfWlzQ2VsbEVkaXRlZCgpe3JldHVybiB0aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKT8uaXNPcGVuZWQoKX1iZWZvcmVSZW5kZXIoZSx0KXtlJiZ0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVmll'@; put 'd1JlbmRlciIsdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyLHQpfWFmdGVyUmVuZGVyKGUpe2UmJnRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclZpZXdSZW5kZXIiLHRoaXMuaG90LmZvcmNlRnVsbFJlbmRlcil9YXBwZW5kUm93SGVhZGVyKGUsdCl7aWYodC5maXJzdENoaWxkKXtjb25zdCByPXQu'@; put 'Zmlyc3RDaGlsZDtpZighTGEociwicmVsYXRpdmUiKSlyZXR1cm4gQzQodCksdm9pZCB0aGlzLmFwcGVuZFJvd0hlYWRlcihlLHQpO3RoaXMudXBkYXRlQ2VsbEhlYWRlcihyLnF1ZXJ5U2VsZWN0b3IoIi5yb3dIZWFkZXIiKSxlLHRoaXMuaG90LmdldFJvd0hlYWRlcil9ZWxzZXtjb25zdHty'@; put 'b290RG9jdW1lbnQ6cixnZXRSb3dIZWFkZXI6aX09dGhpcy5ob3Qsbz1yLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGE9ci5jcmVhdGVFbGVtZW50KCJzcGFuIik7by5jbGFzc05hbWU9InJlbGF0aXZlIixhLmNsYXNzTmFtZT0icm93SGVhZGVyIix0aGlzLnVwZGF0ZUNlbGxIZWFkZXIoYSxlLGkp'@; put 'LG8uYXBwZW5kQ2hpbGQoYSksdC5hcHBlbmRDaGlsZChvKX10aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJHZXRSb3dIZWFkZXIiLGUsdCl9YXBwZW5kQ29sSGVhZGVyKGUsdCxyPXRoaXMuaG90LmdldENvbEhlYWRlcixpPTApe2NvbnN0IG89KCk9Pntjb25zdCBhPWU+PTA/dGhpcy5ob3QuZ2V0'@; put 'Q29sdW1uTWV0YShlKS5oZWFkZXJDbGFzc05hbWU6bnVsbDtyZXR1cm4gYT8oQXJyYXkuaXNBcnJheShhKT9hOmEuc3BsaXQoIiAiKSkuZmxhdE1hcCh1PT51LnNwbGl0KCIgIikpLmZpbHRlcih1PT51Lmxlbmd0aD4wKTpbXX07aWYodC5maXJzdENoaWxkKXtjb25zdCBhPXQuZmlyc3RDaGls'@; put 'ZDtMYShhLCJyZWxhdGl2ZSIpPyh0aGlzLnVwZGF0ZUNlbGxIZWFkZXIoYS5xdWVyeVNlbGVjdG9yKCIuY29sSGVhZGVyIiksZSxyLGkpLGEuY2xhc3NOYW1lPSIiLFlyKGEsWyJyZWxhdGl2ZSIsLi4ubygpXSkpOihDNCh0KSx0aGlzLmFwcGVuZENvbEhlYWRlcihlLHQscixpKSl9ZWxzZXtj'@; put 'b25zdHtyb290RG9jdW1lbnQ6YX09dGhpcy5ob3QsbD1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHU9YS5jcmVhdGVFbGVtZW50KCJzcGFuIiksZz1vKCk7bC5jbGFzc0xpc3QuYWRkKCJyZWxhdGl2ZSIsLi4uZyksdS5jbGFzc05hbWU9ImNvbEhlYWRlciIsdGhpcy5zZXR0aW5ncy5hcmlhVGFn'@; put 'cyYmKEtvKGwsW1sicm9sZSIsInByZXNlbnRhdGlvbiJdXSksS28odSxbWyJyb2xlIiwicHJlc2VudGF0aW9uIl1dKSksdGhpcy51cGRhdGVDZWxsSGVhZGVyKHUsZSxyLGkpLGwuYXBwZW5kQ2hpbGQodSksdC5hcHBlbmRDaGlsZChsKX10aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJHZXRDb2xI'@; put 'ZWFkZXIiLGUsdCxpKX11cGRhdGVDZWxsSGVhZGVyKGUsdCxyLGk9MCl7bGV0IG89dDtjb25zdCBhPXRoaXMuX3d0Lnd0T3ZlcmxheXMuZ2V0UGFyZW50T3ZlcmxheShlKXx8dGhpcy5fd3Q7ZS5wYXJlbnROb2RlJiYoTGEoZSwiY29sSGVhZGVyIik/bz1hLnd0VGFibGUuY29sdW1uRmlsdGVy'@; put 'LnNvdXJjZVRvUmVuZGVyZWQodCk6TGEoZSwicm93SGVhZGVyIikmJihvPWEud3RUYWJsZS5yb3dGaWx0ZXIuc291cmNlVG9SZW5kZXJlZCh0KSkpLG8+LTE/XzcoZSxTdHJpbmcocih0LGkpKSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLnNhbml0aXplcj8/ITAsImhlYWRlciIsdGhpcy5ob3Qu'@; put 'cm9vdEdyaWRFbGVtZW50Pz92b2lkIDApOih5NyhlLCJceGEwIiksWXIoZSwiY29ybmVySGVhZGVyIikpfW1heGltdW1WaXNpYmxlRWxlbWVudFdpZHRoKGUpe2NvbnN0IHI9dGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VXaWR0aCgpLWU7cmV0dXJuIHI+MD9yOjB9bWF4aW11bVZp'@; put 'c2libGVFbGVtZW50SGVpZ2h0KGUpe2NvbnN0IHI9dGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VIZWlnaHQoKS1lO3JldHVybiByPjA/cjowfXNldExhc3RTaXplKGUsdCl7dXUodGhpcyx5WSxlKSx1dSh0aGlzLGJZLHQpfWdldExhc3RTaXplKCl7cmV0dXJue3dpZHRoOklkKHRo'@; put 'aXMseVkpLGhlaWdodDpJZCh0aGlzLGJZKX19Z2V0Rmlyc3RSZW5kZXJlZFZpc2libGVSb3coKXtpZighdGhpcy5fd3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLHQ9ZS5nZXRWaXN1YWxGcm9tUmVu'@; put 'ZGVyYWJsZUluZGV4KHRoaXMuX3d0Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpKTtyZXR1cm4gZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodD8/MCwxKX1nZXRMYXN0UmVuZGVyZWRWaXNpYmxlUm93KCl7aWYoIXRoaXMuX3d0Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0'@; put 'b3IpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmhvdC5yb3dJbmRleE1hcHBlcix0PWUuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFRhYmxlLmdldExhc3RSZW5kZXJlZFJvdygpKTtyZXR1cm4gZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodD8/dGhpcy5ob3Qu'@; put 'Y291bnRSb3dzKCktMSwtMSl9Z2V0Rmlyc3RSZW5kZXJlZFZpc2libGVDb2x1bW4oKXtpZighdGhpcy5fd3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLHQ9ZS5nZXRWaXN1YWxGcm9tUmVu'@; put 'ZGVyYWJsZUluZGV4KHRoaXMuX3d0Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpKTtyZXR1cm4gZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodD8/MCwxKX1nZXRMYXN0UmVuZGVyZWRWaXNpYmxlQ29sdW1uKCl7aWYoIXRoaXMuX3d0Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRl'@; put 'ckNhbGN1bGF0b3IpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlcix0PWUuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFRhYmxlLmdldExhc3RSZW5kZXJlZENvbHVtbigpKTtyZXR1cm4gZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5k'@; put 'ZXgodD8/dGhpcy5ob3QuY291bnRDb2xzKCktMSwtMSl9Z2V0Rmlyc3RGdWxseVZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFNjcm9sbC5nZXRGaXJzdFZpc2libGVSb3coKSl9Z2V0TGFz'@; put 'dEZ1bGx5VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuX3d0Lnd0U2Nyb2xsLmdldExhc3RWaXNpYmxlUm93KCkpfWdldEZpcnN0RnVsbHlWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIHRoaXMuaG90LmNv'@; put 'bHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodGhpcy5fd3Qud3RTY3JvbGwuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCkpfWdldExhc3RGdWxseVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJl'@; put 'bmRlcmFibGVJbmRleCh0aGlzLl93dC53dFNjcm9sbC5nZXRMYXN0VmlzaWJsZUNvbHVtbigpKX1nZXRGaXJzdFBhcnRpYWxseVZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFNjcm9sbC5n'@; put 'ZXRGaXJzdFBhcnRpYWxseVZpc2libGVSb3coKSl9Z2V0TGFzdFBhcnRpYWxseVZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFNjcm9sbC5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygp'@; put 'KX1nZXRGaXJzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFNjcm9sbC5nZXRGaXJzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKSl9Z2V0TGFzdFBhcnRpYWxs'@; put 'eVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLl93dC53dFNjcm9sbC5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpKX1nZXRDb2x1bW5IZWFkZXJzQ291bnQoKXtyZXR1cm4gSWQo'@; put 'dGhpcyxfWSl9Z2V0Um93SGVhZGVyc0NvdW50KCl7cmV0dXJuIElkKHRoaXMsTkwpfWdldFZpZXdwb3J0V2lkdGgoKXtyZXR1cm4gdGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCl9Z2V0V29ya3NwYWNlV2lkdGgoKXtyZXR1cm4gdGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRX'@; put 'b3Jrc3BhY2VXaWR0aCgpfWdldFZpZXdwb3J0SGVpZ2h0KCl7cmV0dXJuIHRoaXMuX3d0Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRIZWlnaHQoKX1nZXRXb3Jrc3BhY2VIZWlnaHQoKXtyZXR1cm4gdGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VIZWlnaHQoKX1nZXRFbGVtZW50T3Zl'@; put 'cmxheU5hbWUoZSl7cmV0dXJuKHRoaXMuX3d0Lnd0T3ZlcmxheXMuZ2V0UGFyZW50T3ZlcmxheShlKT8/dGhpcy5fd3QpLnd0VGFibGUubmFtZX1nZXRPdmVybGF5QnlOYW1lKGUpe3JldHVybiB0aGlzLl93dC5nZXRPdmVybGF5QnlOYW1lKGUpfWdldEFjdGl2ZU92ZXJsYXlOYW1lKCl7cmV0'@; put 'dXJuIHRoaXMuX3d0LmFjdGl2ZU92ZXJsYXlOYW1lfWlzVmlzaWJsZSgpe3JldHVybiB0aGlzLl93dC53dFRhYmxlLmlzVmlzaWJsZSgpfWhhc1ZlcnRpY2FsU2Nyb2xsKCl7cmV0dXJuIHRoaXMuX3d0Lnd0Vmlld3BvcnQuaGFzVmVydGljYWxTY3JvbGwoKX1oYXNIb3Jpem9udGFsU2Nyb2xs'@; put 'KCl7cmV0dXJuIHRoaXMuX3d0Lnd0Vmlld3BvcnQuaGFzSG9yaXpvbnRhbFNjcm9sbCgpfWdldFRhYmxlV2lkdGgoKXtyZXR1cm4gdGhpcy5fd3Qud3RUYWJsZS5nZXRXaWR0aCgpfWdldFRhYmxlSGVpZ2h0KCl7cmV0dXJuIHRoaXMuX3d0Lnd0VGFibGUuZ2V0SGVpZ2h0KCl9Z2V0VG90YWxU'@; put 'YWJsZVdpZHRoKCl7cmV0dXJuIHRoaXMuX3d0Lnd0VGFibGUuZ2V0VG90YWxXaWR0aCgpfWdldFRvdGFsVGFibGVIZWlnaHQoKXtyZXR1cm4gdGhpcy5fd3Qud3RUYWJsZS5nZXRUb3RhbEhlaWdodCgpfWdldFRhYmxlT2Zmc2V0KCl7cmV0dXJuIHRoaXMuX3d0Lnd0Vmlld3BvcnQuZ2V0V29y'@; put 'a3NwYWNlT2Zmc2V0KCl9Z2V0VGFibGVTY3JvbGxQb3NpdGlvbigpe3JldHVybntsZWZ0OnRoaXMuX3d0Lnd0VGFibGUuaG9sZGVyLnNjcm9sbExlZnQsdG9wOnRoaXMuX3d0Lnd0VGFibGUuaG9sZGVyLnNjcm9sbFRvcH19c2V0VGFibGVTY3JvbGxQb3NpdGlvbihlKXt0aGlzLl93dC53dFRh'@; put 'YmxlLmhvbGRlci5zY3JvbGxMZWZ0PWUubGVmdCx0aGlzLl93dC53dFRhYmxlLmhvbGRlci5zY3JvbGxUb3A9ZS50b3B9Z2V0Um93SGVhZGVyV2lkdGgoKXtyZXR1cm4gdGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRSb3dIZWFkZXJXaWR0aCgpfWdldENvbHVtbkhlYWRlckhlaWdodCgpe3JldHVy'@; put 'biB0aGlzLl93dC53dFZpZXdwb3J0LmdldENvbHVtbkhlYWRlckhlaWdodCgpfWlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpe3JldHVybiB0aGlzLl93dC53dFZpZXdwb3J0LmlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpfWlzSG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5'@; put 'V2luZG93KCl7cmV0dXJuIHRoaXMuX3d0Lnd0Vmlld3BvcnQuaXNIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3coKX1kZXN0cm95KCl7dGhpcy5fd3QuZGVzdHJveSgpLHRoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvcihlKXt2WSh0aGlzLEhMKSx2WSh0aGlzLEhs'@; put 'ZSksdlkodGhpcyxxa2UpLHZZKHRoaXMsS2tlKSxpNih0aGlzLF9ZLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLE5MLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLEZMLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLG82LHt3cml0YWJs'@; put 'ZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLGNtLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLHlZLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLGJZLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLHRfLHt3cml0YWJsZTohMCx2YWx1'@; put 'ZTp2b2lkIDB9KSxpNih0aGlzLFBMLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxpNih0aGlzLG9ULHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx1dSh0aGlzLF9ZLDApLHV1KHRoaXMsTkwsMCksdGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemU9ITEsdXUodGhpcyxGTCwh'@; put 'MSksdXUodGhpcyxvNiwhMSksdXUodGhpcyxjbSxudWxsKSx1dSh0aGlzLHlZLDApLHV1KHRoaXMsYlksMCksdXUodGhpcyx0XyxudWxsKSx1dSh0aGlzLFBMLCExKSx1dSh0aGlzLG9ULG51bGwpLHRoaXMuaG90PWUsdGhpcy5ldmVudE1hbmFnZXI9bmV3IFcyKHRoaXMuaG90KSx0aGlzLnNl'@; put 'dHRpbmdzPXRoaXMuaG90LmdldFNldHRpbmdzKCksdGhpcy5jcmVhdGVFbGVtZW50cygpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmluaXRpYWxpemVXYWxrb250YWJsZSgpfX07ZnVuY3Rpb24gQ1kobil7bGV0IHIsZT1uKzEsdD0iIjtmb3IoO2U+MDspcj0oZS0xKSUyNix0PVN0cmlu'@; put 'Zy5mcm9tQ2hhckNvZGUoNjUrcikrdCxlPXBhcnNlSW50KFN0cmluZygoZS1yKS8yNiksMTApO3JldHVybiB0fWZ1bmN0aW9uIHVrdChuKXtsZXQgZT0wO2lmKG4pZm9yKGxldCB0PTAscj1uLmxlbmd0aC0xO3Q8bi5sZW5ndGg7dCs9MSxyLT0xKWUrPTI2KipyKigiQUJDREVGR0hJSktMTU5P'@; put 'UFFSU1RVVldYWVoiLmluZGV4T2Yoblt0XSkrMSk7cmV0dXJuIGUtPTEsZX1mdW5jdGlvbiBka3Qobj0xMDAsZT00KXtjb25zdCB0PVtdO2xldCByLGk7Zm9yKHI9MDtyPG47cisrKXtjb25zdCBvPVtdO2ZvcihpPTA7aTxlO2krKylvLnB1c2goQ1koaSkrKHIrMSkpO3QucHVzaChvKX1yZXR1'@; put 'cm4gdH1mdW5jdGlvbiBoa3Qobj0xMDAsZT00KXtjb25zdCB0PVtdO2xldCByLGk7Zm9yKHI9MDtyPG47cisrKXtjb25zdCBvPXt9O2ZvcihpPTA7aTxlO2krKylvW2Bwcm9wJHtpfWBdPUNZKGkpKyhyKzEpO3QucHVzaChvKX1yZXR1cm4gdH1mdW5jdGlvbiBma3QobixlKXtjb25zdCB0PVtd'@; put 'O2xldCByO2ZvcihsZXQgaT0wO2k8bjtpKyspe3I9W107Zm9yKGxldCBvPTA7bzxlO28rKylyLnB1c2goIiIpO3QucHVzaChyKX1yZXR1cm4gdH1mdW5jdGlvbiBCbGUobixlPTApe2xldCB0PW47Y29uc3Qgcj1bXTtyZXR1cm4oIUFycmF5LmlzQXJyYXkobil8fCFBcnJheS5pc0FycmF5KG5b'@; put 'MF0pKSYmKHQ9W25dKSx0LmZvckVhY2goKGksbyk9PntBcnJheS5pc0FycmF5KGkpP2kuZm9yRWFjaCgoYSxsKT0+e3IucHVzaChbbytlLGwsYV0pfSk6T2JqZWN0LmtleXMoaSkuZm9yRWFjaChhPT57ci5wdXNoKFtvK2UsYSxpW2FdXSl9KX0pLHJ9ZnVuY3Rpb24gSmtlKG4sZSx0KXtyZXR1'@; put 'cm4gbi5zb21lKChbcixpXSk9PnI9PT1lJiZpPT09dCl9ZnVuY3Rpb24gamxlKG4pe2xldCBlPTA7cmV0dXJuIEFycmF5LmlzQXJyYXkobikmJihuWzBdJiZBcnJheS5pc0FycmF5KG5bMF0pP2U9blswXS5sZW5ndGg6blswXSYmQ2EoblswXSkmJihlPU9XKG5bMF0pKSksZX1mdW5jdGlvbiBV'@; put 'bGUobil7cmV0dXJuISEoQXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGgmJm4uZXZlcnkoZT0+QXJyYXkuaXNBcnJheShlKSkpfWZ1bmN0aW9uIGVSZShuKXtyZXR1cm4hIShBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aCYmbi5ldmVyeShlPT4ib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJheS5p'@; put 'c0FycmF5KGUpJiZudWxsIT09ZSkpfWZ1bmN0aW9uIHRSZShuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLnNsaWNlKCk6bnVsbCE9PW4mJiJvYmplY3QiPT10eXBlb2Ygbj97Li4ubn06bn1jb25zdCBuUmU9e19sb2NhbEhvb2tzOk9iamVjdC5jcmVhdGUobnVsbCksYWRkTG9jYWxIb29r'@; put 'KG4sZSl7cmV0dXJuIHRoaXMuX2xvY2FsSG9va3Nbbl18fCh0aGlzLl9sb2NhbEhvb2tzW25dPVtdKSx0aGlzLl9sb2NhbEhvb2tzW25dLnB1c2goZSksdGhpc30scmVtb3ZlTG9jYWxIb29rKG4sZSl7aWYodGhpcy5fbG9jYWxIb29rc1tuXSl7Y29uc3QgdD10aGlzLl9sb2NhbEhvb2tzW25d'@; put 'LmluZGV4T2YoZSk7dD4tMSYmdGhpcy5fbG9jYWxIb29rc1tuXS5zcGxpY2UodCwxKX1yZXR1cm4gdGhpc30scnVuTG9jYWxIb29rcyhuLGUsdCxyLGksbyxhKXtpZih0aGlzLl9sb2NhbEhvb2tzW25dKXtjb25zdCBsPXRoaXMuX2xvY2FsSG9va3Nbbl0ubGVuZ3RoO2ZvcihsZXQgdT0wO3U8'@; put 'bDt1KyspRnNlKHRoaXMuX2xvY2FsSG9va3Nbbl1bdV0sdGhpcyxlLHQscixpLG8sYSl9fSxjbGVhckxvY2FsSG9va3MoKXtyZXR1cm4gdGhpcy5fbG9jYWxIb29rcz17fSx0aGlzfX07SzUoblJlLCJNSVhJTl9OQU1FIiwibG9jYWxIb29rcyIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9'@; put 'KTtjb25zdCBfaD1uUmU7Y2xhc3MgRXd7Z2V0VmFsdWVzKGUpe3JldHVybiB0aGlzLmluZGV4ZWRWYWx1ZXN9Z2V0VmFsdWVBdEluZGV4KGUpe2NvbnN0IHQ9dGhpcy5pbmRleGVkVmFsdWVzO2lmKGU8dC5sZW5ndGgpcmV0dXJuIHRbZV19c2V0VmFsdWVzKGUpe3RoaXMuaW5kZXhlZFZhbHVl'@; put 'cz1lLnNsaWNlKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX1zZXRWYWx1ZUF0SW5kZXgoZSx0KXtyZXR1cm4gZTx0aGlzLmluZGV4ZWRWYWx1ZXMubGVuZ3RoJiYodGhpcy5pbmRleGVkVmFsdWVzW2VdPXQsdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKSwhMCl9Y2xlYXIoKXt0'@; put 'aGlzLnNldERlZmF1bHRWYWx1ZXMoKX1nZXRMZW5ndGgoKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZXMoKS5sZW5ndGh9c2V0RGVmYXVsdFZhbHVlcyhlPXRoaXMuaW5kZXhlZFZhbHVlcy5sZW5ndGgpe3RoaXMuaW5kZXhlZFZhbHVlcy5sZW5ndGg9MCxfYSh0aGlzLmluaXRWYWx1ZU9yRm4pP1Zh'@; put 'KDAsZS0xLHQ9PnRoaXMuaW5kZXhlZFZhbHVlcy5wdXNoKHRoaXMuaW5pdFZhbHVlT3JGbih0KSkpOlZhKDAsZS0xLCgpPT50aGlzLmluZGV4ZWRWYWx1ZXMucHVzaCh0aGlzLmluaXRWYWx1ZU9yRm4pKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIpfWluaXQoZSl7cmV0dXJuIHRoaXMu'@; put 'c2V0RGVmYXVsdFZhbHVlcyhlKSx0aGlzLnJ1bkxvY2FsSG9va3MoImluaXQiKSx0aGlzfWluc2VydChlLHQpe3RoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9cmVtb3ZlKGUpe3RoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9ZGVzdHJveSgpe3RoaXMuY2xlYXJMb2NhbEhvb2tzKCks'@; put 'dGhpcy5pbmRleGVkVmFsdWVzPVtdLHRoaXMuaW5pdFZhbHVlT3JGbj1udWxsfWNvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5pbmRleGVkVmFsdWVzPVtdLHRoaXMuaW5pdFZhbHVlT3JGbj1lfX1mdW5jdGlvbiBTWShuLGUsdCxyKXtjb25zdCBpPXQubGVuZ3RoP3RbMF06dm9pZCAwO3JldHVy'@; put 'blsuLi5uLnNsaWNlKDAsaSksLi4udC5tYXAoKG8sYSk9Pl9hKHIpP3IobyxhKTpyKSwuLi52b2lkIDA9PT1pP1tdOm4uc2xpY2UoaSldfWZ1bmN0aW9uIEVZKG4sZSl7cmV0dXJuIEh2KG4sKHQscik9PiExPT09ZS5pbmNsdWRlcyhyKSl9WWwoRXcsX2gpO2NsYXNzIG5fIGV4dGVuZHMgRXd7'@; put 'aW5zZXJ0KGUsdCl7dGhpcy5pbmRleGVkVmFsdWVzPVNZKHRoaXMuaW5kZXhlZFZhbHVlcywwLHQsdGhpcy5pbml0VmFsdWVPckZuKSxzdXBlci5pbnNlcnQoZSx0KX1yZW1vdmUoZSl7dGhpcy5pbmRleGVkVmFsdWVzPUVZKHRoaXMuaW5kZXhlZFZhbHVlcyxlKSxzdXBlci5yZW1vdmUoZSl9'@; put 'fWNsYXNzIFZMIGV4dGVuZHMgbl97Z2V0SGlkZGVuSW5kZXhlcygpe3JldHVybiBtMSh0aGlzLmdldFZhbHVlcygpLChlLHQscik9Pih0JiZlLnB1c2gociksZSksW10pfWNvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKGUpfX1mdW5jdGlvbiByUmUobixlLHQpe3JldHVyblsuLi5uLnNsaWNlKDAs'@; put 'ZSksLi4udCwuLi5uLnNsaWNlKGUpXX1mdW5jdGlvbiBNWShuLGUpe3JldHVybiBIdihuLHQ9PiExPT09ZS5pbmNsdWRlcyh0KSl9ZnVuY3Rpb24gemxlKG4sZSl7cmV0dXJuIF9jKG4sdD0+dC1lLmZpbHRlcihyPT5yPHQpLmxlbmd0aCl9ZnVuY3Rpb24gV2xlKG4sZSl7Y29uc3QgdD1lWzBd'@; put 'LHI9ZS5sZW5ndGg7cmV0dXJuIF9jKG4saT0+aT49dD9pK3I6aSl9Y2xhc3MgVFkgZXh0ZW5kcyBFd3tnZXRWYWx1ZXMoKXtyZXR1cm4gdGhpcy5vcmRlck9mSW5kZXhlcy5tYXAoZT0+dGhpcy5pbmRleGVkVmFsdWVzW2VdKX1zZXRWYWx1ZXMoZSl7dGhpcy5vcmRlck9mSW5kZXhlcz1bLi4u'@; put 'QXJyYXkoZS5sZW5ndGgpLmtleXMoKV0sc3VwZXIuc2V0VmFsdWVzKGUpfXNldFZhbHVlQXRJbmRleChlLHQscj10aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aCl7cmV0dXJuIGU8dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aCYmKHRoaXMuaW5kZXhlZFZhbHVlc1tlXT10LCExPT09dGhpcy5v'@; put 'cmRlck9mSW5kZXhlcy5pbmNsdWRlcyhlKSYmdGhpcy5vcmRlck9mSW5kZXhlcy5zcGxpY2UociwwLGUpLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIiksITApfWNsZWFyVmFsdWUoZSl7dGhpcy5vcmRlck9mSW5kZXhlcz1NWSh0aGlzLm9yZGVyT2ZJbmRleGVzLFtlXSksX2EodGhpcy5p'@; put 'bml0VmFsdWVPckZuKT9zdXBlci5zZXRWYWx1ZUF0SW5kZXgoZSx0aGlzLmluaXRWYWx1ZU9yRm4oZSkpOnN1cGVyLnNldFZhbHVlQXRJbmRleChlLHRoaXMuaW5pdFZhbHVlT3JGbil9Z2V0TGVuZ3RoKCl7cmV0dXJuIHRoaXMub3JkZXJPZkluZGV4ZXMubGVuZ3RofXNldERlZmF1bHRWYWx1'@; put 'ZXMoZT10aGlzLmluZGV4ZWRWYWx1ZXMubGVuZ3RoKXt0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aD0wLHN1cGVyLnNldERlZmF1bHRWYWx1ZXMoZSl9aW5zZXJ0KGUsdCl7dGhpcy5pbmRleGVkVmFsdWVzPVNZKHRoaXMuaW5kZXhlZFZhbHVlcywwLHQsdGhpcy5pbml0VmFsdWVPckZuKSx0'@; put 'aGlzLm9yZGVyT2ZJbmRleGVzPVdsZSh0aGlzLm9yZGVyT2ZJbmRleGVzLHQpLHN1cGVyLmluc2VydChlLHQpfXJlbW92ZShlKXt0aGlzLmluZGV4ZWRWYWx1ZXM9RVkodGhpcy5pbmRleGVkVmFsdWVzLGUpLHRoaXMub3JkZXJPZkluZGV4ZXM9TVkodGhpcy5vcmRlck9mSW5kZXhlcyxlKSx0'@; put 'aGlzLm9yZGVyT2ZJbmRleGVzPXpsZSh0aGlzLm9yZGVyT2ZJbmRleGVzLGUpLHN1cGVyLnJlbW92ZShlKX1nZXRFbnRyaWVzKCl7cmV0dXJuIHRoaXMub3JkZXJPZkluZGV4ZXMubWFwKGU9PltlLHRoaXMuZ2V0VmFsdWVBdEluZGV4KGUpXSl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4u'@; put 'ZSksdGhpcy5vcmRlck9mSW5kZXhlcz1bXX19Y2xhc3MgYVQgZXh0ZW5kcyBuX3tnZXRUcmltbWVkSW5kZXhlcygpe3JldHVybiBtMSh0aGlzLmdldFZhbHVlcygpLChlLHQscik9Pih0JiZlLnB1c2gociksZSksW10pfWNvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKGUpfX1jb25zdCBpUmU9bmV3'@; put 'IE1hcChbWyJoaWRpbmciLFZMXSxbImluZGV4IixFd10sWyJsaW5rZWRQaHlzaWNhbEluZGV4VG9WYWx1ZSIsVFldLFsicGh5c2ljYWxJbmRleFRvVmFsdWUiLG5fXSxbInRyaW1taW5nIixhVF1dKTtjbGFzcyBvUmUgZXh0ZW5kcyBFd3tnZXRWYWx1ZXMoKXtyZXR1cm4gdGhpcy5pbmRleGVk'@; put 'VmFsdWVzfWluc2VydChlLHQpe2NvbnN0IHI9V2xlKHRoaXMuZ2V0VmFsdWVzKCksdCk7dGhpcy5pbmRleGVkVmFsdWVzPXJSZShyLGUsdCksc3VwZXIuaW5zZXJ0KGUsdCl9cmVtb3ZlKGUpe2NvbnN0IHQ9TVkodGhpcy5nZXRWYWx1ZXMoKSxlKTt0aGlzLmluZGV4ZWRWYWx1ZXM9emxlKHQs'@; put 'ZSksc3VwZXIucmVtb3ZlKGUpfWNvbnN0cnVjdG9yKCl7c3VwZXIoZT0+ZSl9fWxldCBZbGU9MDtjbGFzcyBabGV7cmVnaXN0ZXIoZSx0KXshMT09PXRoaXMuY29sbGVjdGlvbi5oYXMoZSkmJih0aGlzLmNvbGxlY3Rpb24uc2V0KGUsdCksdC5hZGRMb2NhbEhvb2soImNoYW5nZSIsKCk9PnRo'@; put 'aXMucnVuTG9jYWxIb29rcygiY2hhbmdlIix0KSksWWxlKz0xKX11bnJlZ2lzdGVyKGUpe2NvbnN0IHQ9dGhpcy5jb2xsZWN0aW9uLmdldChlKTt2b2lkIDAhPT10JiYodC5kZXN0cm95KCksdGhpcy5jb2xsZWN0aW9uLmRlbGV0ZShlKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsdCks'@; put 'WWxlLT0xKX11bnJlZ2lzdGVyQWxsKCl7dGhpcy5jb2xsZWN0aW9uLmZvckVhY2goKGUsdCk9PnRoaXMudW5yZWdpc3Rlcih0KSksdGhpcy5jb2xsZWN0aW9uLmNsZWFyKCl9Z2V0KGUpe3JldHVybiBYdShlKT9BcnJheS5mcm9tKHRoaXMuY29sbGVjdGlvbi52YWx1ZXMoKSk6dGhpcy5jb2xs'@; put 'ZWN0aW9uLmdldChlKX1nZXRMZW5ndGgoKXtyZXR1cm4gdGhpcy5jb2xsZWN0aW9uLnNpemV9cmVtb3ZlRnJvbUV2ZXJ5KGUpe3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKHQ9Pnt0LnJlbW92ZShlKX0pfWluc2VydFRvRXZlcnkoZSx0KXt0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChyPT57ci5p'@; put 'bnNlcnQoZSx0KX0pfWluaXRFdmVyeShlKXt0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaCh0PT57dC5pbml0KGUpfSl9Y29uc3RydWN0b3IoKXt0aGlzLmNvbGxlY3Rpb249bmV3IE1hcH19WWwoWmxlLF9oKTtjbGFzcyBhUmUgZXh0ZW5kcyBabGV7Z2V0TWVyZ2VkVmFsdWVzKGU9ITApe2lmKCEw'@; put 'PT09ZSlyZXR1cm4gdGhpcy5tZXJnZWRWYWx1ZXNDYWNoZTtpZigwPT09dGhpcy5nZXRMZW5ndGgoKSlyZXR1cm5bXTtjb25zdCB0PV9jKHRoaXMuZ2V0KCksbz0+by5nZXRWYWx1ZXMoKSkscj1bXSxpPVpvKHRbMF0pJiZ0WzBdLmxlbmd0aHx8MDtmb3IobGV0IG89MDtvPGk7bys9MSl7Y29u'@; put 'c3QgYT1bXTtmb3IobGV0IGw9MDtsPHRoaXMuZ2V0TGVuZ3RoKCk7bCs9MSlhLnB1c2godFtsXVtvXSk7ci5wdXNoKGEpfXJldHVybiBfYyhyLHRoaXMuYWdncmVnYXRpb25GdW5jdGlvbil9Z2V0TWVyZ2VkVmFsdWVBdEluZGV4KGUsdCl7Y29uc3Qgcj10aGlzLmdldE1lcmdlZFZhbHVlcyh0'@; put 'KVtlXTtyZXR1cm4gWm8ocik/cjp0aGlzLmZhbGxiYWNrVmFsdWV9dXBkYXRlQ2FjaGUoKXt0aGlzLm1lcmdlZFZhbHVlc0NhY2hlPXRoaXMuZ2V0TWVyZ2VkVmFsdWVzKCExKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy5tZXJnZWRWYWx1ZXNDYWNoZT1bXSx0aGlzLmFnZ3JlZ2F0'@; put 'aW9uRnVuY3Rpb249ZSx0aGlzLmZhbGxiYWNrVmFsdWU9dH19ZnVuY3Rpb24gc1JlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9u'@; put 'IGxSZShuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIHlrdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sc1Jl'@; put 'KG4sZSwic2V0IiksdCksdH12YXIgeFk9bmV3IFdlYWtNYXA7Y2xhc3MgY1Jle3N1YnNjcmliZShlKXtyZXR1cm4gdGhpcy5hZGRMb2NhbEhvb2soImNoYW5nZSIsZSksdGhpcy5fd3JpdGUoZnVuY3Rpb24gYmt0KG4sZSl7cmV0dXJuIGZ1bmN0aW9uIF9rdChuLGUpe3JldHVybiBlLmdldD9l'@; put 'LmdldC5jYWxsKG4pOmUudmFsdWV9KG4sc1JlKG4sZSwiZ2V0IikpfSh0aGlzLHhZKSksdGhpc311bnN1YnNjcmliZSgpe3JldHVybiB0aGlzLnJ1bkxvY2FsSG9va3MoInVuc3Vic2NyaWJlIiksdGhpcy5jbGVhckxvY2FsSG9va3MoKSx0aGlzfV93cml0ZShlKXtyZXR1cm4gZS5sZW5ndGg+'@; put 'MCYmdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLGUpLHRoaXN9X3dyaXRlSW5pdGlhbENoYW5nZXMoZSl7bFJlKHRoaXMseFksZSl9Y29uc3RydWN0b3IoKXsoZnVuY3Rpb24gd2t0KG4sZSx0KXsoZnVuY3Rpb24gdmt0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigi'@; put 'Q2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX0pKHRoaXMseFkse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGxSZSh0aGlzLHhZLFtdKX19ZnVuY3Rpb24gdVJlKG4sZSl7Y29uc3QgdD1b'@; put 'XTtsZXQgcj0wLGk9MDtmb3IoO3I8bi5sZW5ndGgmJmk8ZS5sZW5ndGg7cisrLGkrKyluW3JdIT09ZVtpXSYmdC5wdXNoKHtvcDoicmVwbGFjZSIsaW5kZXg6aSxvbGRWYWx1ZTpuW3JdLG5ld1ZhbHVlOmVbaV19KTtmb3IoO3I8ZS5sZW5ndGg7cisrKXQucHVzaCh7b3A6Imluc2VydCIsaW5k'@; put 'ZXg6cixvbGRWYWx1ZTp2b2lkIDAsbmV3VmFsdWU6ZVtyXX0pO2Zvcig7aTxuLmxlbmd0aDtpKyspdC5wdXNoKHtvcDoicmVtb3ZlIixpbmRleDppLG9sZFZhbHVlOm5baV0sbmV3VmFsdWU6dm9pZCAwfSk7cmV0dXJuIHR9ZnVuY3Rpb24gZFJlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cg'@; put 'bmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIHVtKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFNrdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sZFJl'@; put 'KG4sZSwiZ2V0IikpfWZ1bmN0aW9uIEJMKG4sZSx0KXsoZnVuY3Rpb24gQ2t0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0'@; put 'KX1mdW5jdGlvbiBDNyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIEVrdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9'@; put 'dH19KG4sZFJlKG4sZSwic2V0IiksdCksdH1ZbChjUmUsX2gpO3ZhciBqTD1uZXcgV2Vha01hcCxzVD1uZXcgV2Vha01hcCxVTD1uZXcgV2Vha01hcCx6TD1uZXcgV2Vha01hcCxXTD1uZXcgV2Vha01hcDtjbGFzcyBNa3R7Y3JlYXRlT2JzZXJ2ZXIoKXtjb25zdCBlPW5ldyBjUmU7cmV0dXJu'@; put 'IHVtKHRoaXMsakwpLmFkZChlKSxlLmFkZExvY2FsSG9vaygidW5zdWJzY3JpYmUiLCgpPT57dW0odGhpcyxqTCkuZGVsZXRlKGUpfSksZS5fd3JpdGVJbml0aWFsQ2hhbmdlcyh1UmUodW0odGhpcyxzVCksdW0odGhpcyxVTCkpKSxlfWVtaXQoZSl7bGV0IHQ9dW0odGhpcyxVTCk7KCF1bSh0'@; put 'aGlzLHpMKXx8dW0odGhpcyxzVCkubGVuZ3RoIT09ZS5sZW5ndGgpJiYoMD09PWUubGVuZ3RoP2U9bmV3IEFycmF5KHQubGVuZ3RoKS5maWxsKHVtKHRoaXMsV0wpKTpDNyh0aGlzLHNULG5ldyBBcnJheShlLmxlbmd0aCkuZmlsbCh1bSh0aGlzLFdMKSkpLHVtKHRoaXMsekwpfHwoQzcodGhp'@; put 'cyx6TCwhMCksdD11bSh0aGlzLHNUKSkpO2NvbnN0IHI9dVJlKHQsZSk7dW0odGhpcyxqTCkuZm9yRWFjaChpPT5pLl93cml0ZShyKSksQzcodGhpcyxVTCxlKX1jb25zdHJ1Y3Rvcih7aW5pdGlhbEluZGV4VmFsdWU6ZX09e30pe0JMKHRoaXMsakwse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQg'@; put 'MH0pLEJMKHRoaXMsc1Qse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEJMKHRoaXMsVUwse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEJMKHRoaXMsekwse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEJMKHRoaXMsV0wse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEM3KHRo'@; put 'aXMsakwsbmV3IFNldCksQzcodGhpcyxzVCxbXSksQzcodGhpcyxVTCxbXSksQzcodGhpcyx6TCwhMSksQzcodGhpcyxXTCwhMSksQzcodGhpcyxXTCxlPz8hMSl9fWZ1bmN0aW9uIGhSZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRo'@; put 'ZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gZlJlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4p'@; put 'fWZ1bmN0aW9uIGRtKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFRrdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sZlJlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIHBSZShuLGUsdCl7aFJlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBHbGUobixlLHQpe3JldHVybiBm'@; put 'dW5jdGlvbiB4a3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLGZSZShuLGUsInNldCIpLHQpLHR9ZnVu'@; put 'Y3Rpb24gQVkobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gJGxlKG4sZSl7aFJlKG4sZSksZS5hZGQobil9dmFyIGE2PW5ldyBXZWFrTWFwLE13'@; put 'PW5ldyBXZWFrTWFwLGdSZT1uZXcgV2Vha1NldCxxbGU9bmV3IFdlYWtTZXQsbVJlPW5ldyBXZWFrU2V0O2NsYXNzIEtsZXtzdXNwZW5kT3BlcmF0aW9ucygpe3RoaXMuaXNCYXRjaGVkPSEwfXJlc3VtZU9wZXJhdGlvbnMoKXt0aGlzLmlzQmF0Y2hlZD0hMSx0aGlzLnVwZGF0ZUNhY2hlKCks'@; put 'QVkodGhpcyxtUmUsa2t0KS5jYWxsKHRoaXMpfWNyZWF0ZUNoYW5nZXNPYnNlcnZlcihlKXtyZXR1cm4iaGlkaW5nIiE9PWUmJkpyKGBVbnN1cHBvcnRlZCBpbmRleCBtYXAgdHlwZSAiJHtlfSIuYCksdGhpcy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZS5jcmVhdGVPYnNlcnZlcigpfWNyZWF0'@; put 'ZUFuZFJlZ2lzdGVySW5kZXhNYXAoZSx0LHIpe3JldHVybiB0aGlzLnJlZ2lzdGVyTWFwKGUsZnVuY3Rpb24gZ2t0KG4sZT1udWxsKXtyZXR1cm4gaVJlLmhhcyhuKXx8SnIoYFRoZSBwcm92aWRlZCBtYXAgdHlwZSAoIiR7bn0iKSBkb2VzIG5vdCBleGlzdC5gKSxuZXcoaVJlLmdldChuKSko'@; put 'ZSl9KHQscikpfXJlZ2lzdGVyTWFwKGUsdCl7KHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5nZXQoZSl8fHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0KGUpfHx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5nZXQoZSkpJiZKcihgTWFwIHdpdGggbmFtZSAiJHtlfSIgaGFzIGJl'@; put 'ZW4gYWxyZWFkeSByZWdpc3RlcmVkLmApLHQgaW5zdGFuY2VvZiBhVD90aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24ucmVnaXN0ZXIoZSx0KTp0IGluc3RhbmNlb2YgVkw/dGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5yZWdpc3RlcihlLHQpOnRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9u'@; put 'LnJlZ2lzdGVyKGUsdCk7Y29uc3Qgcj10aGlzLmdldE51bWJlck9mSW5kZXhlcygpO3JldHVybiByPjAmJnQuaW5pdChyKSx0fXVucmVnaXN0ZXJNYXAoZSl7dGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXIoZSksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lz'@; put 'dGVyKGUpLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXIoZSl9dW5yZWdpc3RlckFsbCgpe3RoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyQWxsKCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyQWxsKCksdGhpcy52YXJpb3VzTWFw'@; put 'c0NvbGxlY3Rpb24udW5yZWdpc3RlckFsbCgpfWdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KGUpe2NvbnN0IHQ9dGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlW2VdO3JldHVybiBabyh0KT90Om51bGx9Z2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5y'@; put 'ZW5kZXJhYmxlUGh5c2ljYWxJbmRleGVzQ2FjaGVbZV07cmV0dXJuIFpvKHQpP3Q6bnVsbH1nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleChlKXtyZXR1cm4gdGhpcy5mcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXNDYWNoZS5nZXQoZSk/P251bGx9Z2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJ'@; put 'bmRleChlKXtyZXR1cm4gdGhpcy5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleCh0aGlzLmdldFBoeXNpY2FsRnJvbVJlbmRlcmFibGVJbmRleChlKSl9Z2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChlKXtyZXR1cm4gdGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hl'@; put 'LmdldChlKT8/bnVsbH1nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZSx0LHI9ITEpe2lmKG51bGw9PT10aGlzLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KGUpKXJldHVybiBudWxsO2lmKHRoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5oYXMoZSkpcmV0dXJuIGU7'@; put 'Y29uc3Qgbz1BcnJheS5mcm9tKHRoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5rZXlzKCkpO2xldCBhPS0xO3JldHVybiBhPXQ+MD9vLmZpbmRJbmRleChsPT5udWxsIT09bCYmbD5lKTpvLnJldmVyc2UoKS5maW5kSW5kZXgobD0+bnVsbCE9PWwmJmw8ZSksLTE9PT1h'@; put 'P3I/dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZSwtdCwhMSk6bnVsbDpvW2FdfWluaXRUb0xlbmd0aChlPXRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCkpe3RoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZT1bLi4ubmV3IEFycmF5KGUpLmtleXMoKV0sdGhpcy5ub3RIaWRkZW5JbmRl'@; put 'eGVzQ2FjaGU9Wy4uLm5ldyBBcnJheShlKS5rZXlzKCldLHRoaXMuc3VzcGVuZE9wZXJhdGlvbnMoKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9ImluaXQiLHRoaXMuaW5kZXhlc1NlcXVlbmNlLmluaXQoZSksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPXZvaWQgMCx0aGlzLnRyaW1taW5n'@; put 'TWFwc0NvbGxlY3Rpb24uaW5pdEV2ZXJ5KGUpLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpLHRoaXMuc3VzcGVuZE9wZXJhdGlvbnMoKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmluaXRFdmVyeShlKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5pbml0RXZlcnkoZSksdGhpcy5yZXN1'@; put 'bWVPcGVyYXRpb25zKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJpbml0Iil9Zml0VG9MZW5ndGgoZSl7Y29uc3QgdD10aGlzLmdldE51bWJlck9mSW5kZXhlcygpO2lmKGU8dCl7Y29uc3Qgcj1bLi4uQXJyYXkodGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKS1lKS5rZXlzKCldLm1hcChpPT5pK2Up'@; put 'O3RoaXMucmVtb3ZlSW5kZXhlcyhyKX1lbHNlIHRoaXMuaW5zZXJ0SW5kZXhlcyh0LGUtdCl9Z2V0SW5kZXhlc1NlcXVlbmNlKCl7cmV0dXJuIHRoaXMuaW5kZXhlc1NlcXVlbmNlLmdldFZhbHVlcygpfXNldEluZGV4ZXNTZXF1ZW5jZShlKXt2b2lkIDA9PT10aGlzLmluZGV4ZXNDaGFuZ2VT'@; put 'b3VyY2UmJih0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9InVwZGF0ZSIpLHRoaXMuaW5kZXhlc1NlcXVlbmNlLnNldFZhbHVlcyhlKSwidXBkYXRlIj09PXRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZSYmKHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZT12b2lkIDApfWdldE5vdFRyaW1tZWRJbmRl'@; put 'eGVzKGU9ITApe3JldHVybiEwPT09ZT90aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGU6dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5maWx0ZXIocj0+ITE9PT10aGlzLmlzVHJpbW1lZChyKSl9Z2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKXtyZXR1cm4gdGhpcy5nZXROb3RUcmltbWVk'@; put 'SW5kZXhlcygpLmxlbmd0aH1nZXROb3RIaWRkZW5JbmRleGVzKGU9ITApe3JldHVybiEwPT09ZT90aGlzLm5vdEhpZGRlbkluZGV4ZXNDYWNoZTp0aGlzLmdldEluZGV4ZXNTZXF1ZW5jZSgpLmZpbHRlcihyPT4hMT09PXRoaXMuaXNIaWRkZW4ocikpfWdldE5vdEhpZGRlbkluZGV4ZXNMZW5n'@; put 'dGgoKXtyZXR1cm4gdGhpcy5nZXROb3RIaWRkZW5JbmRleGVzKCkubGVuZ3RofWdldFJlbmRlcmFibGVJbmRleGVzKGU9ITApe3JldHVybiEwPT09ZT90aGlzLnJlbmRlcmFibGVQaHlzaWNhbEluZGV4ZXNDYWNoZTp0aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzKCkuZmlsdGVyKHI9PiExPT09'@; put 'dGhpcy5pc0hpZGRlbihyKSl9Z2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJhYmxlSW5kZXhlcygpLmxlbmd0aH1nZXROdW1iZXJPZkluZGV4ZXMoKXtyZXR1cm4gdGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5sZW5ndGh9bW92ZUluZGV4ZXMoZSx0'@; put 'KXsibnVtYmVyIj09dHlwZW9mIGUmJihlPVtlXSk7Y29uc3Qgcj1fYyhlLGc9PnRoaXMuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoZykpLmZpbHRlcihnPT5udWxsIT09ZyksaT10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCksbz1lLmxlbmd0aCxhPU1ZKHRoaXMuZ2V0SW5k'@; put 'ZXhlc1NlcXVlbmNlKCksciksbD1hLmZpbHRlcihnPT4hMT09PXRoaXMuaXNUcmltbWVkKGcpKTtsZXQgdT1hLmluZGV4T2YobFtsLmxlbmd0aC0xXSkrMTt0K288aSYmKHU9YS5pbmRleE9mKGxbdF0pKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9Im1vdmUiLHRoaXMuc2V0SW5kZXhlc1Nl'@; put 'cXVlbmNlKHJSZShhLHUscikpLHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZT12b2lkIDB9aXNUcmltbWVkKGUpe3JldHVybiB0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVBdEluZGV4KGUpfWlzSGlkZGVuKGUpe3JldHVybiB0aGlzLmhpZGluZ01hcHNDb2xsZWN0'@; put 'aW9uLmdldE1lcmdlZFZhbHVlQXRJbmRleChlKX1pbnNlcnRJbmRleGVzKGUsdCxyPSJzdGFydCIpe2NvbnN0IGk9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlcygpW2VdLG89Wm8oaSk/aTp0aGlzLmdldE51bWJlck9mSW5kZXhlcygpLGE9dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5pbmNs'@; put 'dWRlcyhpKT90aGlzLmdldEluZGV4ZXNTZXF1ZW5jZSgpLmluZGV4T2YoaSk6dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKSxsPV9jKG5ldyBBcnJheSh0KS5maWxsKG8pLChnLEUpPT5nK0UpO3RoaXMuc3VzcGVuZE9wZXJhdGlvbnMoKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9Imluc2Vy'@; put 'dCIsdGhpcy5pbmRleGVzU2VxdWVuY2UuaW5zZXJ0KGEsbCksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPXZvaWQgMDtjb25zdCB1PSJlbmQiPT09cj9sLm1hcChnPT5nKzEpOmw7dGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLmluc2VydFRvRXZlcnkoYSx1KSx0aGlzLmhpZGluZ01hcHND'@; put 'b2xsZWN0aW9uLmluc2VydFRvRXZlcnkoYSx1KSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5pbnNlcnRUb0V2ZXJ5KGEsdSksdGhpcy5yZXN1bWVPcGVyYXRpb25zKCl9cmVtb3ZlSW5kZXhlcyhlKXt0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNl'@; put 'PSJyZW1vdmUiLHRoaXMuaW5kZXhlc1NlcXVlbmNlLnJlbW92ZShlKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9dm9pZCAwLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5yZW1vdmVGcm9tRXZlcnkoZSksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5yZW1vdmVGcm9tRXZlcnkoZSks'@; put 'dGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24ucmVtb3ZlRnJvbUV2ZXJ5KGUpLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpfW9ic2VydmVNYXBDaGFuZ2UoZSx0KXtyZXR1cm4oZSBpbnN0YW5jZW9mIGFUfHxlIGluc3RhbmNlb2YgVkwpJiZKcignVGhlICJvYnNlcnZlTWFwQ2hhbmdlIiBtZXRo'@; put 'b2QgZG9lcyBub3Qgc3VwcG9ydCB0cmltbWluZyBvciBoaWRpbmcgbWFwcy4nKSxkbSh0aGlzLGE2KS5oYXMoZSl8fGRtKHRoaXMsYTYpLnNldChlLG5ldyBTZXQpLGRtKHRoaXMsYTYpLmdldChlKS5hZGQodCksKCk9Pntjb25zdCByPWRtKHRoaXMsYTYpLmdldChlKTtyJiYoci5kZWxldGUo'@; put 'dCksMD09PXIuc2l6ZSYmZG0odGhpcyxhNikuZGVsZXRlKGUpKX19dXBkYXRlQ2FjaGUoZT0hMSl7KCEwPT09ZXx8ITE9PT10aGlzLmlzQmF0Y2hlZCYmITA9PT0odGhpcy5pbmRleGVzU2VxdWVuY2VDaGFuZ2VkfHx0aGlzLnRyaW1tZWRJbmRleGVzQ2hhbmdlZHx8dGhpcy5oaWRkZW5JbmRl'@; put 'eGVzQ2hhbmdlZCkpJiYodGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLnVwZGF0ZUNhY2hlKCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi51cGRhdGVDYWNoZSgpLHRoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZT10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzKCExKSx0aGlzLm5vdEhp'@; put 'ZGRlbkluZGV4ZXNDYWNoZT10aGlzLmdldE5vdEhpZGRlbkluZGV4ZXMoITEpLHRoaXMucmVuZGVyYWJsZVBoeXNpY2FsSW5kZXhlc0NhY2hlPXRoaXMuZ2V0UmVuZGVyYWJsZUluZGV4ZXMoITEpLHRoaXMuY2FjaGVGcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXMoKSx0aGlzLmNhY2hlRnJv'@; put 'bVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXMoKSx0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkJiZ0aGlzLmhpZGluZ0NoYW5nZXNPYnNlcnZhYmxlLmVtaXQodGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5nZXRNZXJnZWRWYWx1ZXMoKSksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjYWNoZVVwZGF0'@; put 'ZWQiLHtpbmRleGVzU2VxdWVuY2VDaGFuZ2VkOnRoaXMuaW5kZXhlc1NlcXVlbmNlQ2hhbmdlZCx0cmltbWVkSW5kZXhlc0NoYW5nZWQ6dGhpcy50cmltbWVkSW5kZXhlc0NoYW5nZWQsaGlkZGVuSW5kZXhlc0NoYW5nZWQ6dGhpcy5oaWRkZW5JbmRleGVzQ2hhbmdlZH0pLHRoaXMuaW5kZXhl'@; put 'c1NlcXVlbmNlQ2hhbmdlZD0hMSx0aGlzLnRyaW1tZWRJbmRleGVzQ2hhbmdlZD0hMSx0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkPSExKX1jYWNoZUZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlcygpe2NvbnN0IGU9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3RoaXMuZnJv'@; put 'bVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGUuY2xlYXIoKTtmb3IobGV0IHQ9MDt0PGU7dCs9MSl7Y29uc3Qgcj10aGlzLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KHQpO3RoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGUuc2V0KHIsdCl9fWNhY2hlRnJvbVZpc3Vh'@; put 'bFRvUmVuZGVyYWJsZUluZGV4ZXMoKXtjb25zdCBlPXRoaXMuZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKTt0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuY2xlYXIoKTtmb3IobGV0IHQ9MDt0PGU7dCs9MSl7Y29uc3Qgcj10aGlzLmdldFBoeXNpY2FsRnJvbVJl'@; put 'bmRlcmFibGVJbmRleCh0KSxpPXRoaXMuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgocik7dGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLnNldChpLHQpfX1kZXN0cm95KCl7R2xlKHRoaXMsYTYsbmV3IFdlYWtNYXApLGRtKHRoaXMsTXcpLmNsZWFyKCksdGhpcy51'@; put 'bnJlZ2lzdGVyQWxsKCl9Y29uc3RydWN0b3IoKXskbGUodGhpcyxnUmUpLCRsZSh0aGlzLHFsZSksJGxlKHRoaXMsbVJlKSxwUmUodGhpcyxhNix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscFJlKHRoaXMsTXcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuaW5kZXhlc1Nl'@; put 'cXVlbmNlPW5ldyBvUmUsdGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uPW5ldyBhUmUoZT0+ZS5zb21lKHQ9PiEwPT09dCksITEpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb249bmV3IGFSZShlPT5lLnNvbWUodD0+ITA9PT10KSwhMSksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb249bmV3'@; put 'IFpsZSx0aGlzLmhpZGluZ0NoYW5nZXNPYnNlcnZhYmxlPW5ldyBNa3Qoe2luaXRpYWxJbmRleFZhbHVlOiExfSksdGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlPVtdLHRoaXMubm90SGlkZGVuSW5kZXhlc0NhY2hlPVtdLHRoaXMuaXNCYXRjaGVkPSExLHRoaXMuaW5kZXhlc1NlcXVlbmNl'@; put 'Q2hhbmdlZD0hMSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9dm9pZCAwLHRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkPSExLHRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQ9ITEsdGhpcy5yZW5kZXJhYmxlUGh5c2ljYWxJbmRleGVzQ2FjaGU9W10sdGhpcy5mcm9tUGh5c2ljYWxUb1Zpc3Vh'@; put 'bEluZGV4ZXNDYWNoZT1uZXcgTWFwLHRoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZT1uZXcgTWFwLEdsZSh0aGlzLGE2LG5ldyBXZWFrTWFwKSxHbGUodGhpcyxNdyxuZXcgU2V0KSx0aGlzLmluZGV4ZXNTZXF1ZW5jZS5hZGRMb2NhbEhvb2soImNoYW5nZSIsKCk9Pnt0'@; put 'aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9ITAsdGhpcy51cGRhdGVDYWNoZSgpLHRoaXMucnVuTG9jYWxIb29rcygiaW5kZXhlc1NlcXVlbmNlQ2hhbmdlIix0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2UpLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIix0aGlzLmluZGV4ZXNTZXF1ZW5j'@; put 'ZSxudWxsKX0pLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImNoYW5nZSIsZT0+e3RoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkPSEwLHRoaXMudXBkYXRlQ2FjaGUoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsZSx0aGlzLnRyaW1taW5nTWFwc0NvbGxl'@; put 'Y3Rpb24pfSksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImNoYW5nZSIsZT0+e3RoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQ9ITAsdGhpcy51cGRhdGVDYWNoZSgpLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixlLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24p'@; put 'fSksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGU9PntBWSh0aGlzLGdSZSxBa3QpLmNhbGwodGhpcyxlKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsZSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbil9KX19ZnVuY3Rpb24gQWt0KG4pe2Rt'@; put 'KHRoaXMsYTYpLmhhcyhuKSYmKHRoaXMuaXNCYXRjaGVkP2RtKHRoaXMsTXcpLmFkZChuKTpBWSh0aGlzLHFsZSx2UmUpLmNhbGwodGhpcyxuKSl9ZnVuY3Rpb24gdlJlKG4pe2NvbnN0IGU9ZG0odGhpcyxhNikuZ2V0KG4pO2UmJmUuZm9yRWFjaCh0PT50KG4pKX1mdW5jdGlvbiBra3QoKXtk'@; put 'bSh0aGlzLE13KS5zaXplPjAmJihkbSh0aGlzLE13KS5mb3JFYWNoKG49PkFZKHRoaXMscWxlLHZSZSkuY2FsbCh0aGlzLG4pKSxkbSh0aGlzLE13KS5jbGVhcigpKX1mdW5jdGlvbiBfUmUobil7Y29uc3QgdD0vXihbYS16QS1aXXsyfSktKFthLXpBLVpdezJ9KSQvLmV4ZWMobik7cmV0dXJu'@; put 'IHQ/YCR7dFsxXS50b0xvd2VyQ2FzZSgpfS0ke3RbMl0udG9VcHBlckNhc2UoKX1gOm59ZnVuY3Rpb24geVJlKG4pe1pvKG4pJiZtNyh5Y2BMYW5ndWFnZSB3aXRoIGNvZGUgIiR7bn0iIHdhcyBub3QgZm91bmQuIFlvdSBzaG91bGQgcmVnaXN0ZXIgcGFydGljdWxhciBsYW5ndWFnZVx4MjAK'@; put 'ICAgIGJlZm9yZSB1c2luZyBpdC4gUmVhZCBtb3JlIGFib3V0IHRoaXMgaXNzdWUgYXQ6IGh0dHBzOi8vZG9jcy5oYW5kc29udGFibGUuY29tL2kxOG4vbWlzc2luZy1sYW5ndWFnZS1jb2RlLmApfVlsKEtsZSxfaCk7Y29uc3R7cmVnaXN0ZXI6RGt0LGdldFZhbHVlczpMa3R9PXpwKCJwaHJh'@; put 'c2VGb3JtYXR0ZXJzIik7ZnVuY3Rpb24gd1JlKG4sZSl7RGt0KG4sZSl9d1JlKCJwbHVyYWxpemUiLGZ1bmN0aW9uIElrdChuLGUpe3JldHVybiBBcnJheS5pc0FycmF5KG4pJiZOdW1iZXIuaXNJbnRlZ2VyKGUpP25bZV06bn0pLHdSZSgic3Vic3RpdHV0ZSIsZnVuY3Rpb24gYlJlKG4sZSl7'@; put 'cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5tYXAodD0+YlJlKHQsZSkpOmZMKG4sZSl9KTtjb25zdCBYbGU9IkNvbW1vbjoiLGtZPWAke1hsZX1va2AsUWxlPWAke1hsZX1jYW5jZWxgLENSZT0iQ29udGV4dE1lbnU6aXRlbXMiLEpsZT1gJHtDUmV9Lm5vSXRlbXNgLGVjZT1gJHtDUmV9Lmlu'@; put 'c2VydFJvd0Fib3ZlYCx0Y2U9YCR7Q1JlfS5pbnNlcnRSb3dCZWxvd2AsbmNlPWAke0NSZX0uaW5zZXJ0Q29sdW1uT25UaGVMZWZ0YCxyY2U9YCR7Q1JlfS5pbnNlcnRDb2x1bW5PblRoZVJpZ2h0YCxpY2U9YCR7Q1JlfS5yZW1vdmVSb3dgLG9jZT1gJHtDUmV9LnJlbW92ZUNvbHVtbmAsYWNl'@; put 'PWAke0NSZX0udW5kb2Asc2NlPWAke0NSZX0ucmVkb2AsUlk9YCR7Q1JlfS5yZWFkT25seWAsbGNlPWAke0NSZX0uY2xlYXJDb2x1bW5gLGNjZT1gJHtDUmV9LmNvcHlgLHVjZT1gJHtDUmV9LmNvcHlXaXRoSGVhZGVyc2AsZGNlPWAke0NSZX0uY29weVdpdGhHcm91cEhlYWRlcnNgLGhjZT1g'@; put 'JHtDUmV9LmNvcHlIZWFkZXJzT25seWAsZmNlPWAke0NSZX0uY3V0YCxwY2U9YCR7Q1JlfS5leHBvcnRgLGdjZT1gJHtDUmV9LmV4cG9ydEZpbGVDc3ZgLG1jZT1gJHtDUmV9LmV4cG9ydEZpbGVYbHN4YCx2Y2U9YCR7Q1JlfS5mcmVlemVDb2x1bW5gLF9jZT1gJHtDUmV9LnVuZnJlZXplQ29s'@; put 'dW1uYCx5Y2U9YCR7Q1JlfS5tZXJnZUNlbGxzYCxiY2U9YCR7Q1JlfS51bm1lcmdlQ2VsbHNgLHdjZT1gJHtDUmV9LmFkZENvbW1lbnRgLENjZT1gJHtDUmV9LmVkaXRDb21tZW50YCxTY2U9YCR7Q1JlfS5yZW1vdmVDb21tZW50YCxFY2U9YCR7Q1JlfS5yZWFkT25seUNvbW1lbnRgLE1jZT1g'@; put 'JHtDUmV9LmFsaWduYCxUY2U9YCR7Q1JlfS5hbGlnbi5sZWZ0YCx4Y2U9YCR7Q1JlfS5hbGlnbi5jZW50ZXJgLEFjZT1gJHtDUmV9LmFsaWduLnJpZ2h0YCxrY2U9YCR7Q1JlfS5hbGlnbi5qdXN0aWZ5YCxSY2U9YCR7Q1JlfS5hbGlnbi50b3BgLEljZT1gJHtDUmV9LmFsaWduLm1pZGRsZWAs'@; put 'RGNlPWAke0NSZX0uYWxpZ24uYm90dG9tYCxMY2U9YCR7Q1JlfS5ib3JkZXJzYCxPY2U9YCR7Q1JlfS5ib3JkZXJzLnRvcGAsTmNlPWAke0NSZX0uYm9yZGVycy5yaWdodGAsRmNlPWAke0NSZX0uYm9yZGVycy5ib3R0b21gLFBjZT1gJHtDUmV9LmJvcmRlcnMubGVmdGAsSGNlPWAke0NSZX0u'@; put 'Ym9yZGVycy5yZW1vdmVgLFZjZT1gJHtDUmV9Lm5lc3RlZEhlYWRlcnMuaW5zZXJ0Q2hpbGRSb3dgLEJjZT1gJHtDUmV9Lm5lc3RlZEhlYWRlcnMuZGV0YWNoRnJvbVBhcmVudGAsamNlPWAke0NSZX0uaGlkZUNvbHVtbmAsVWNlPWAke0NSZX0uc2hvd0NvbHVtbmAsemNlPWAke0NSZX0uaGlk'@; put 'ZVJvd2AsV2NlPWAke0NSZX0uc2hvd1Jvd2AsamY9IkZpbHRlcnM6IixmZD1gJHtqZn1jb25kaXRpb25zYCxJWT1gJHtmZH0ubm9uZWAsWWNlPWAke2ZkfS5pc0VtcHR5YCxaY2U9YCR7ZmR9LmlzTm90RW1wdHlgLEdjZT1gJHtmZH0uaXNFcXVhbFRvYCwkY2U9YCR7ZmR9LmlzTm90RXF1YWxU'@; put 'b2AscWNlPWAke2ZkfS5iZWdpbnNXaXRoYCxLY2U9YCR7ZmR9LmVuZHNXaXRoYCxYY2U9YCR7ZmR9LmNvbnRhaW5zYCxRY2U9YCR7ZmR9LmRvZXNOb3RDb250YWluYCxOa3Q9YCR7ZmR9LmJ5VmFsdWVgLEpjZT1gJHtmZH0uZ3JlYXRlclRoYW5gLGV1ZT1gJHtmZH0uZ3JlYXRlclRoYW5PckVx'@; put 'dWFsVG9gLHR1ZT1gJHtmZH0ubGVzc1RoYW5gLG51ZT1gJHtmZH0ubGVzc1RoYW5PckVxdWFsVG9gLFlMPWAke2ZkfS5pc0JldHdlZW5gLHJ1ZT1gJHtmZH0uaXNOb3RCZXR3ZWVuYCxaTD1gJHtmZH0uYWZ0ZXJgLEdMPWAke2ZkfS5hZnRlck9yRXF1YWxgLCRMPWAke2ZkfS5iZWZvcmVgLHFM'@; put 'PWAke2ZkfS5iZWZvcmVPckVxdWFsYCxEWT1gJHtmZH0udG9kYXlgLExZPWAke2ZkfS50b21vcnJvd2AsT1k9YCR7ZmR9Lnllc3RlcmRheWAsaXVlPWAke2pmfWxhYmVscy5maWx0ZXJCeUNvbmRpdGlvbmAsb3VlPWAke2pmfWxhYmVscy5maWx0ZXJCeVZhbHVlYCxhdWU9YCR7amZ9bGFiZWxz'@; put 'LmNvbmp1bmN0aW9uYCxOWT1gJHtqZn1sYWJlbHMuZGlzanVuY3Rpb25gLEZZPWAke2pmfXZhbHVlcy5ibGFua0NlbGxzYCxzdWU9YCR7amZ9YnV0dG9ucy5zZWxlY3RBbGxgLGx1ZT1gJHtqZn1idXR0b25zLmNsZWFyYCxjdWU9YCR7amZ9YnV0dG9ucy5va2AsdXVlPWAke2pmfWJ1dHRvbnMu'@; put 'Y2FuY2VsYCxkdWU9YCR7amZ9YnV0dG9ucy5wbGFjZWhvbGRlci5zZWFyY2hgLGh1ZT1gJHtqZn1idXR0b25zLnBsYWNlaG9sZGVyLnZhbHVlYCxmdWU9YCR7amZ9YnV0dG9ucy5wbGFjZWhvbGRlci5zZWNvbmRWYWx1ZWAsczY9IlBhZ2luYXRpb246IixwdWU9YCR7czZ9c2VjdGlvbi5wYWdp'@; put 'bmF0aW9uYCxndWU9YCR7czZ9LnBhZ2VTaXplLmF1dG9gLFBZPWAke3M2fXNlY3Rpb24ucGFnZVNpemVgLG11ZT1gJHtzNn1zZWN0aW9uLmNvdW50ZXJgLHZ1ZT1gJHtzNn1zZWN0aW9uLm5hdmlnYXRpb25gLF91ZT1gJHtzNn1maXJzdFBhZ2VgLHl1ZT1gJHtzNn1wcmV2UGFnZWAsYnVlPWAk'@; put 'e3M2fW5leHRQYWdlYCx3dWU9YCR7czZ9bGFzdFBhZ2VgLEN1ZT0iQ2hlY2tib3hSZW5kZXJlcjoiLFN1ZT1gJHtDdWV9Y2hlY2tlZGAsRXVlPWAke0N1ZX11bmNoZWNrZWRgLFNSZT0iTG9hZGluZzoiLE11ZT1gJHtTUmV9dGl0bGVgLEVSZT0iTm90aWZpY2F0aW9uOiIsVHVlPWAke0VSZX1i'@; put 'dXR0b25zLmNsb3NlYCxNUmU9IkV4cG9ydEZpbGU6Iix4dWU9YCR7TVJlfWRpYWxvZy50aXRsZWAscl89IkVtcHR5RGF0YVN0YXRlOiIsQXVlPWAke3JffXRpdGxlYCxrdWU9YCR7cl99ZGVzY3JpcHRpb25gLFJ1ZT1gJHtyX310aXRsZS5maWx0ZXJzYCxJdWU9YCR7cl99ZGVzY3JpcHRpb24u'@; put 'ZmlsdGVyc2AsRHVlPWAke3JffWJ1dHRvbnMuZmlsdGVycy5yZXNldGAsTHVlPWAke3JffXRpdGxlLmxvYWRpbmdgLE91ZT1gJHtyX31kZXNjcmlwdGlvbi5sb2FkaW5nYCxUdz0iRGF0YVByb3ZpZGVyOiIsTnVlPWAke1R3fWVycm9ycy5mZXRjaGAsRnVlPWAke1R3fWVycm9ycy5jcmVhdGVg'@; put 'LFB1ZT1gJHtUd31lcnJvcnMudXBkYXRlYCxIdWU9YCR7VHd9ZXJyb3JzLnJlbW92ZWAsVnVlPWAke1R3fWVycm9ycy5yZXF1ZXN0RmFpbGVkYCxCdWU9YCR7VHd9YnV0dG9ucy5yZWZldGNoYCxUUmU9e2xhbmd1YWdlQ29kZToiZW4tVVMiLFtrWV06Ik9LIixbUWxlXToiQ2FuY2VsIixbSmxl'@; put 'XToiTm8gYXZhaWxhYmxlIG9wdGlvbnMiLFtlY2VdOiJJbnNlcnQgcm93IGFib3ZlIixbdGNlXToiSW5zZXJ0IHJvdyBiZWxvdyIsW25jZV06Ikluc2VydCBjb2x1bW4gbGVmdCIsW3JjZV06Ikluc2VydCBjb2x1bW4gcmlnaHQiLFtpY2VdOlsiUmVtb3ZlIHJvdyIsIlJlbW92ZSByb3dzIl0s'@; put 'W29jZV06WyJSZW1vdmUgY29sdW1uIiwiUmVtb3ZlIGNvbHVtbnMiXSxbYWNlXToiVW5kbyIsW3NjZV06IlJlZG8iLFtSWV06IlJlYWQgb25seSIsW2xjZV06IkNsZWFyIGNvbHVtbiIsW01jZV06IkFsaWdubWVudCIsW1RjZV06IkxlZnQiLFt4Y2VdOiJDZW50ZXIiLFtBY2VdOiJSaWdodCIs'@; put 'W2tjZV06Ikp1c3RpZnkiLFtSY2VdOiJUb3AiLFtJY2VdOiJNaWRkbGUiLFtEY2VdOiJCb3R0b20iLFt2Y2VdOiJGcmVlemUgY29sdW1uIixbX2NlXToiVW5mcmVlemUgY29sdW1uIixbTGNlXToiQm9yZGVycyIsW09jZV06IlRvcCIsW05jZV06IlJpZ2h0IixbRmNlXToiQm90dG9tIixbUGNl'@; put 'XToiTGVmdCIsW0hjZV06IlJlbW92ZSBib3JkZXIocykiLFt3Y2VdOiJBZGQgY29tbWVudCIsW0NjZV06IkVkaXQgY29tbWVudCIsW1NjZV06IkRlbGV0ZSBjb21tZW50IixbRWNlXToiUmVhZC1vbmx5IGNvbW1lbnQiLFt5Y2VdOiJNZXJnZSBjZWxscyIsW2JjZV06IlVubWVyZ2UgY2VsbHMi'@; put 'LFtjY2VdOiJDb3B5IixbdWNlXTpbIkNvcHkgd2l0aCBoZWFkZXIiLCJDb3B5IHdpdGggaGVhZGVycyJdLFtkY2VdOlsiQ29weSB3aXRoIGdyb3VwIGhlYWRlciIsIkNvcHkgd2l0aCBncm91cCBoZWFkZXJzIl0sW2hjZV06WyJDb3B5IGhlYWRlciBvbmx5IiwiQ29weSBoZWFkZXJzIG9ubHki'@; put 'XSxbZmNlXToiQ3V0IixbcGNlXToiRXhwb3J0IixbZ2NlXToiVG8gQ1NWIixbbWNlXToiVG8gRXhjZWwiLFt4dWVdOiJFeHBvcnRpbmdcdTIwMjYiLFtWY2VdOiJJbnNlcnQgY2hpbGQgcm93IixbQmNlXToiRGV0YWNoIGZyb20gcGFyZW50IixbamNlXTpbIkhpZGUgY29sdW1uIiwiSGlkZSBj'@; put 'b2x1bW5zIl0sW1VjZV06WyJTaG93IGNvbHVtbiIsIlNob3cgY29sdW1ucyJdLFt6Y2VdOlsiSGlkZSByb3ciLCJIaWRlIHJvd3MiXSxbV2NlXTpbIlNob3cgcm93IiwiU2hvdyByb3dzIl0sW0lZXToiTm9uZSIsW1ljZV06IklzIGVtcHR5IixbWmNlXToiSXMgbm90IGVtcHR5IixbR2NlXToi'@; put 'SXMgZXF1YWwgdG8iLFskY2VdOiJJcyBub3QgZXF1YWwgdG8iLFtxY2VdOiJCZWdpbnMgd2l0aCIsW0tjZV06IkVuZHMgd2l0aCIsW1hjZV06IkNvbnRhaW5zIixbUWNlXToiRG9lcyBub3QgY29udGFpbiIsW0pjZV06IkdyZWF0ZXIgdGhhbiIsW2V1ZV06IkdyZWF0ZXIgdGhhbiBvciBlcXVh'@; put 'bCB0byIsW3R1ZV06Ikxlc3MgdGhhbiIsW251ZV06Ikxlc3MgdGhhbiBvciBlcXVhbCB0byIsW1lMXToiSXMgYmV0d2VlbiIsW3J1ZV06IklzIG5vdCBiZXR3ZWVuIixbWkxdOiJBZnRlciIsW0dMXToiQWZ0ZXIgb3IgZXF1YWwgdG8iLFskTF06IkJlZm9yZSIsW3FMXToiQmVmb3JlIG9yIGVx'@; put 'dWFsIHRvIixbRFldOiJUb2RheSIsW0xZXToiVG9tb3Jyb3ciLFtPWV06Illlc3RlcmRheSIsW0ZZXToiQmxhbmsgY2VsbHMiLFtpdWVdOiJGaWx0ZXIgYnkgY29uZGl0aW9uIixbb3VlXToiRmlsdGVyIGJ5IHZhbHVlIixbYXVlXToiQW5kIixbTlldOiJPciIsW3N1ZV06IlNlbGVjdCBhbGwi'@; put 'LFtsdWVdOiJDbGVhciIsW2N1ZV06Ik9LIixbdXVlXToiQ2FuY2VsIixbZHVlXToiU2VhcmNoIixbaHVlXToiVmFsdWUiLFtmdWVdOiJTZWNvbmQgdmFsdWUiLFtwdWVdOiJQYWdpbmF0aW9uIixbUFldOiJQYWdlIHNpemUiLFtndWVdOiJBdXRvIixbbXVlXToiW3N0YXJ0XSAtIFtlbmRdIG9m'@; put 'IFt0b3RhbF0iLFt2dWVdOiJQYWdlIFtjdXJyZW50UGFnZV0gb2YgW3RvdGFsUGFnZXNdIixbX3VlXToiR28gdG8gZmlyc3QgcGFnZSIsW3l1ZV06IkdvIHRvIHByZXZpb3VzIHBhZ2UiLFtidWVdOiJHbyB0byBuZXh0IHBhZ2UiLFt3dWVdOiJHbyB0byBsYXN0IHBhZ2UiLFtTdWVdOiJDaGVj'@; put 'a2VkIixbRXVlXToiVW5jaGVja2VkIixbTXVlXToiTG9hZGluZy4uLiIsW1R1ZV06IkNsb3NlIixbQXVlXToiTm8gZGF0YSBhdmFpbGFibGUiLFtrdWVdOiJUaGVyZVx1MjAxOXMgbm90aGluZyB0byBkaXNwbGF5IHlldC4iLFtSdWVdOiJObyByZXN1bHRzIGZvdW5kIixbSXVlXToiSXQgbG9v'@; put 'a3MgbGlrZSB5b3VyIGN1cnJlbnQgZmlsdGVycyBhcmUgaGlkaW5nIGFsbCByZXN1bHRzLiIsW0R1ZV06IlJlc2V0IGZpbHRlcnMiLFtMdWVdOiJMb2FkaW5nIGRhdGEiLFtPdWVdOiJQbGVhc2Ugd2FpdC4iLFtOdWVdOiJDb3VsZCBub3QgbG9hZCBkYXRhIixbRnVlXToiQ291bGQgbm90IGNy'@; put 'ZWF0ZSByb3dzIixbUHVlXToiQ291bGQgbm90IHVwZGF0ZSByb3dzIixbSHVlXToiQ291bGQgbm90IHJlbW92ZSByb3dzIixbVnVlXToiUmVxdWVzdCBmYWlsZWQiLFtCdWVdOiJSZWZldGNoIn0sanVlPVRSZS5sYW5ndWFnZUNvZGUse3JlZ2lzdGVyOlBrdCxnZXRJdGVtOnhSZSxoYXNJdGVt'@; put 'OkhrdCxnZXRWYWx1ZXM6Vmt0fT16cCgibGFuZ3VhZ2VzRGljdGlvbmFyaWVzIik7ZnVuY3Rpb24gQVJlKG4sZSl7bGV0IHQ9bixyPWU7cmV0dXJuIENhKG4pJiYocj1uLHQ9U3RyaW5nKHIubGFuZ3VhZ2VDb2RlKSksZnVuY3Rpb24gQmt0KG4sZSl7biE9PWp1ZSYmZnVuY3Rpb24gUmt0KG4s'@; put 'ZSl7YWMoZSwodCxyKT0+e1h1KG5bcl0pJiYobltyXT10KX0pfShlLHhSZShqdWUpKX0odCxyKSxQa3QodCxBZChyKSksQWQocil9ZnVuY3Rpb24ga1JlKG4pe3JldHVybiBVdWUobik/QWQoeFJlKG4pKTpudWxsfWZ1bmN0aW9uIFV1ZShuKXtyZXR1cm4gSGt0KG4pfWZ1bmN0aW9uIFJSZShu'@; put 'LGUsdCl7Y29uc3Qgcj1rUmUobik7aWYobnVsbD09PXIpcmV0dXJuIG51bGw7Y29uc3QgaT1yW2VdO2lmKFh1KGkpKXJldHVybiBudWxsO2NvbnN0IG89ZnVuY3Rpb24gVWt0KG4sZSl7cmV0dXJuIGZ1bmN0aW9uIE9rdCgpe3JldHVybiBMa3QoKX0oKS5yZWR1Y2UoKHQscik9PnIodCxlKSxu'@; put 'KX0oaSx0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShvKT9vWzBdOm99QVJlKFRSZSk7Y29uc3QgSVJlPSJhY3RpdmUtaGVhZGVyIix6dWU9ImhlYWRlciIsSFk9ImZvY3VzIjtjbGFzcyBEUmV7aXNFbXB0eSgpe3JldHVybiBudWxsPT09dGhpcy5jZWxsUmFuZ2V9YWRkKGUpe3JldHVybiB0aGlz'@; put 'LmlzRW1wdHkoKT90aGlzLmNlbGxSYW5nZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxSYW5nZShlKTp0aGlzLmNlbGxSYW5nZS5leHBhbmQoZSksdGhpc31yZXBsYWNlKGUsdCl7aWYoIXRoaXMuaXNFbXB0eSgpKXtpZih0aGlzLmNlbGxSYW5nZS5mcm9tLmlzRXF1YWwoZSkpcmV0dXJuIHRo'@; put 'aXMuY2VsbFJhbmdlLmZyb209dCwhMDtpZih0aGlzLmNlbGxSYW5nZS50by5pc0VxdWFsKGUpKXJldHVybiB0aGlzLmNlbGxSYW5nZS50bz10LCEwfXJldHVybiExfWNsZWFyKCl7cmV0dXJuIHRoaXMuY2VsbFJhbmdlPW51bGwsdGhpc31nZXRDb3JuZXJzKCl7Y29uc3QgZT10aGlzLmNlbGxS'@; put 'YW5nZS5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCksdD10aGlzLmNlbGxSYW5nZS5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpO3JldHVybltlLnJvdz8/MCxlLmNvbD8/MCx0LnJvdz8/MCx0LmNvbD8/MF19ZGVzdHJveSgpe3RoaXMucnVuTG9jYWxIb29rcygiZGVzdHJveSIpfWNvbnN0cnVj'@; put 'dG9yKGUsdCl7dGhpcy5zZXR0aW5ncz1lLHRoaXMuY2VsbFJhbmdlPXR8fG51bGx9fVlsKERSZSxfaCk7Y29uc3QgJGt0PURSZSxTNz1jbGFzcyBxa3QgZXh0ZW5kcyAka3R7YWRkKGUpe3JldHVybiBudWxsPT09dGhpcy52aXN1YWxDZWxsUmFuZ2U/dGhpcy52aXN1YWxDZWxsUmFuZ2U9dGhp'@; put 'cy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoZSk6dGhpcy52aXN1YWxDZWxsUmFuZ2UuZXhwYW5kKGUpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy52aXN1YWxDZWxsUmFuZ2U9bnVsbCxzdXBlci5jbGVhcigpfXRyaW1Ub1Zpc2libGVDZWxsc1JhbmdlT25seShlKXtjb25zdHtmcm9tOnQs'@; put 'dG86cn09ZSxpPSJOLVMiPT09ZS5nZXRWZXJ0aWNhbERpcmVjdGlvbigpPzE6LTEsbz0ic3RhcnQtZW5kIj09PWUuZ2V0SW5saW5lRGlyZWN0aW9uKCk/MTotMSxhPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkNvb3Jkcyh0LGksbyksbD10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5Db29yZHMo'@; put 'ciwtaSwtbyk7aWYobnVsbD09PWF8fG51bGw9PT1sKXJldHVybiBudWxsO2NvbnN0IHU9YS5yb3c/PzAsZz1sLnJvdz8/MCxFPWEuY29sPz8wLE89bC5jb2w/PzA7cmV0dXJuIDE9PT1pJiZ1Pmd8fC0xPT09aSYmdTxnfHwxPT09byYmRT5PfHwtMT09PW8mJkU8Tz9udWxsOnRoaXMuc2V0dGlu'@; put 'Z3MuY3JlYXRlQ2VsbFJhbmdlKGEsYSxsKX1nZXROZWFyZXN0Tm90SGlkZGVuQ29vcmRzKGUsdCxyPXQpe2lmKG51bGw9PT1lLnJvd3x8bnVsbD09PWUuY29sKXJldHVybiBudWxsO2NvbnN0IGk9dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodGhpcy5zZXR0aW5ncy5yb3dJbmRleE1h'@; put 'cHBlcixlLnJvdyx0KTtpZihudWxsPT09aSlyZXR1cm4gbnVsbDtjb25zdCBvPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHRoaXMuc2V0dGluZ3MuY29sdW1uSW5kZXhNYXBwZXIsZS5jb2wscik7cmV0dXJuIG51bGw9PT1vP251bGw6dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsQ29v'@; put 'cmRzKGksbyl9Z2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGUsdCxyKXtyZXR1cm4gdDwwP3Q6ZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodCxyKX1jb21taXQoKXtpZihudWxsPT09dGhpcy52aXN1YWxDZWxsUmFuZ2UpcmV0dXJuIHRoaXM7Y29uc3QgZT10aGlzLnRyaW1Ub1Zpc2libGVD'@; put 'ZWxsc1JhbmdlT25seSh0aGlzLnZpc3VhbENlbGxSYW5nZSk7cmV0dXJuIHRoaXMuY2VsbFJhbmdlPW51bGw9PT1lP251bGw6dGhpcy5jcmVhdGVSZW5kZXJhYmxlQ2VsbFJhbmdlKGUuZnJvbSxlLnRvKSx0aGlzfXN5bmNXaXRoKGUpe2NvbnN0IHQ9ZS5mcm9tLmNsb25lKCkubm9ybWFsaXpl'@; put 'KCkscj0iTi1TIj09PWUuZ2V0VmVydGljYWxEaXJlY3Rpb24oKT8xOi0xLGk9IlctRSI9PT1lLmdldEhvcml6b250YWxEaXJlY3Rpb24oKT8xOi0xLG89dGhpcy52aXN1YWxDZWxsUmFuZ2U/dGhpcy5zZXR0aW5ncy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHModGhpcy52aXN1YWxDZWxsUmFu'@; put 'Z2UuaGlnaGxpZ2h0KTpudWxsO2xldCBhPW51bGw7aWYoKG51bGw9PT1vfHxudWxsPT09by5jb2x8fG51bGw9PT1vLnJvdykmJihhPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkNvb3Jkcyh0LHIsaSkpLG51bGwhPT1hJiZlLmluY2x1ZGVzKGEpKXtjb25zdCBsPWUuaGlnaGxpZ2h0LmNsb25l'@; put 'KCk7aWYoKGwucm93Pz8tMSk+PTAmJihsLnJvdz1hLnJvdyksKGwuY29sPz8tMSk+PTAmJihsLmNvbD1hLmNvbCksbnVsbD09PXRoaXMuY2VsbFJhbmdlKXtjb25zdCB1PXRoaXMuc2V0dGluZ3MudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKGwpO3RoaXMuY2VsbFJhbmdlPXRoaXMuc2V0dGlu'@; put 'Z3MuY3JlYXRlQ2VsbFJhbmdlKHUpfWUuc2V0SGlnaGxpZ2h0KGwpfXJldHVybiJmb2N1cyI9PT10aGlzLnNldHRpbmdzLnNlbGVjdGlvblR5cGUmJm51bGwhPT1vJiZudWxsPT09YSYmbnVsbCE9PXRoaXMudmlzdWFsQ2VsbFJhbmdlJiZlLnNldEhpZ2hsaWdodCh0aGlzLnZpc3VhbENlbGxS'@; put 'YW5nZS5oaWdobGlnaHQpLHRoaXN9Z2V0Q29ybmVycygpe2NvbnN0e2Zyb206ZSx0bzp0fT10aGlzLmNlbGxSYW5nZTtyZXR1cm5bTWF0aC5taW4oZS5yb3c/PzAsdC5yb3c/PzApLE1hdGgubWluKGUuY29sPz8wLHQuY29sPz8wKSxNYXRoLm1heChlLnJvdz8/MCx0LnJvdz8/MCksTWF0aC5t'@; put 'YXgoZS5jb2w/PzAsdC5jb2w/PzApXX1nZXRWaXN1YWxDb3JuZXJzKCl7Y29uc3QgZT10aGlzLmNlbGxSYW5nZSx0PXRoaXMuc2V0dGluZ3MucmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKGUuZ2V0VG9wU3RhcnRDb3JuZXIoKSkscj10aGlzLnNldHRpbmdzLnJlbmRlcmFibGVUb1Zpc3VhbENv'@; put 'b3JkcyhlLmdldEJvdHRvbUVuZENvcm5lcigpKTtyZXR1cm5bdC5yb3csdC5jb2wsci5yb3csci5jb2xdfWNyZWF0ZVJlbmRlcmFibGVDZWxsUmFuZ2UoZSx0KXtjb25zdCByPXRoaXMuc2V0dGluZ3MudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKGUpLGk9dGhpcy5zZXR0aW5ncy52aXN1YWxU'@; put 'b1JlbmRlcmFibGVDb29yZHModCk7cmV0dXJuIG51bGw9PT1yLnJvd3x8bnVsbD09PXIuY29sfHxudWxsPT09aS5yb3d8fG51bGw9PT1pLmNvbD9udWxsOnRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbFJhbmdlKHIscixpKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsbnVsbCksdGhpcy52aXN1'@; put 'YWxDZWxsUmFuZ2U9bnVsbCx0aGlzLnZpc3VhbENlbGxSYW5nZT10fHxudWxsLHRoaXMuY29tbWl0KCl9fTtmdW5jdGlvbiBZdWUoe2FjdGl2ZUhlYWRlckNsYXNzTmFtZTpuLC4uLmV9KXtyZXR1cm4gbmV3IFM3KHtjbGFzc05hbWU6biwuLi5lLHNlbGVjdGlvblR5cGU6SVJlfSl9ZnVuY3Rp'@; put 'b24gS2t0KHthcmVhQ29ybmVyVmlzaWJsZTpuLC4uLmV9KXtyZXR1cm4gbmV3IFM3KHtjbGFzc05hbWU6ImFyZWEiLGNyZWF0ZUxheWVyczohMCxib3JkZXI6e3dpZHRoOjEsY29sb3I6IiM0Yjg5ZmYiLGNvcm5lclZpc2libGU6bn0sLi4uZSxzZWxlY3Rpb25UeXBlOiJhcmVhIn0pfWZ1bmN0'@; put 'aW9uIFhrdCh7Li4ubn0pe3JldHVybiBuZXcgUzcoe2NsYXNzTmFtZToiaGlnaGxpZ2h0IiwuLi5uLHNlbGVjdGlvblR5cGU6ImFyZWEifSl9ZnVuY3Rpb24gUWt0KHtjb2x1bW5DbGFzc05hbWU6biwuLi5lfSl7cmV0dXJuIG5ldyBTNyh7Y2xhc3NOYW1lOm4sLi4uZSxzZWxlY3Rpb25UeXBl'@; put 'OiJjb2x1bW4ifSl9ZnVuY3Rpb24gTFJlKHtoZWFkZXJDbGFzc05hbWU6biwuLi5lfSl7cmV0dXJuIG5ldyBTNyh7Y2xhc3NOYW1lOm4sLi4uZSxzZWxlY3Rpb25UeXBlOnp1ZX0pfWZ1bmN0aW9uIG5SdCh7cm93Q2xhc3NOYW1lOm4sLi4uZX0pe3JldHVybiBuZXcgUzcoe2NsYXNzTmFtZTpu'@; put 'LC4uLmUsc2VsZWN0aW9uVHlwZToicm93In0pfWZ1bmN0aW9uIEU3KG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fXZhciBsNj1uZXcgV2Vha1NldDtjbGFzcyBv'@; put 'UnR7aXNFbmFibGVkRm9yKGUsdCl7bGV0IHI9ZTtlPT09SFkmJihyPSJjdXJyZW50Iik7Y29uc3QgaT10aGlzLm9wdGlvbnMuZGlzYWJsZWRDZWxsU2VsZWN0aW9uO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBpKXJldHVybiEwO2xldCBvPWkodC5yb3csdC5jb2wpO3JldHVybiJzdHJpbmciPT10'@; put 'eXBlb2YgbyYmKG89W29dKSwhb3x8QXJyYXkuaXNBcnJheShvKSYmIW8uaW5jbHVkZXMocil9dXNlTGF5ZXJMZXZlbChlPTApe3JldHVybiB0aGlzLmxheWVyTGV2ZWw9ZSx0aGlzfWdldEZvY3VzKCl7cmV0dXJuIHRoaXMuZm9jdXN9Z2V0RmlsbCgpe3JldHVybiB0aGlzLmZpbGx9Y3JlYXRl'@; put 'TGF5ZXJlZEFyZWEoKXtyZXR1cm4gRTcodGhpcyxsNixNNykuY2FsbCh0aGlzLHRoaXMubGF5ZXJlZEFyZWFzLEtrdCl9Z2V0TGF5ZXJlZEFyZWFzKCl7cmV0dXJuWy4uLnRoaXMubGF5ZXJlZEFyZWFzLnZhbHVlcygpXX1jcmVhdGVBcmVhKCl7cmV0dXJuIEU3KHRoaXMsbDYsTTcpLmNhbGwo'@; put 'dGhpcyx0aGlzLmFyZWFzLFhrdCl9Z2V0QXJlYXMoKXtyZXR1cm5bLi4udGhpcy5hcmVhcy52YWx1ZXMoKV19Y3JlYXRlUm93SGVhZGVyKCl7cmV0dXJuIEU3KHRoaXMsbDYsTTcpLmNhbGwodGhpcyx0aGlzLnJvd0hlYWRlcnMsTFJlKX1nZXRSb3dIZWFkZXJzKCl7cmV0dXJuWy4uLnRoaXMu'@; put 'cm93SGVhZGVycy52YWx1ZXMoKV19Y3JlYXRlQ29sdW1uSGVhZGVyKCl7cmV0dXJuIEU3KHRoaXMsbDYsTTcpLmNhbGwodGhpcyx0aGlzLmNvbHVtbkhlYWRlcnMsTFJlKX1nZXRDb2x1bW5IZWFkZXJzKCl7cmV0dXJuWy4uLnRoaXMuY29sdW1uSGVhZGVycy52YWx1ZXMoKV19Y3JlYXRlQWN0'@; put 'aXZlUm93SGVhZGVyKCl7cmV0dXJuIEU3KHRoaXMsbDYsTTcpLmNhbGwodGhpcyx0aGlzLmFjdGl2ZVJvd0hlYWRlcnMsWXVlKX1nZXRBY3RpdmVSb3dIZWFkZXJzKCl7cmV0dXJuWy4uLnRoaXMuYWN0aXZlUm93SGVhZGVycy52YWx1ZXMoKV19Y3JlYXRlQWN0aXZlQ29sdW1uSGVhZGVyKCl7'@; put 'cmV0dXJuIEU3KHRoaXMsbDYsTTcpLmNhbGwodGhpcyx0aGlzLmFjdGl2ZUNvbHVtbkhlYWRlcnMsWXVlKX1nZXRBY3RpdmVDb2x1bW5IZWFkZXJzKCl7cmV0dXJuWy4uLnRoaXMuYWN0aXZlQ29sdW1uSGVhZGVycy52YWx1ZXMoKV19Y3JlYXRlQWN0aXZlQ29ybmVySGVhZGVyKCl7cmV0dXJu'@; put 'IEU3KHRoaXMsbDYsTTcpLmNhbGwodGhpcyx0aGlzLmFjdGl2ZUNvcm5lckhlYWRlcnMsWXVlKX1nZXRBY3RpdmVDb3JuZXJIZWFkZXJzKCl7cmV0dXJuWy4uLnRoaXMuYWN0aXZlQ29ybmVySGVhZGVycy52YWx1ZXMoKV19Y3JlYXRlUm93SGlnaGxpZ2h0KCl7cmV0dXJuIEU3KHRoaXMsbDYs'@; put 'TTcpLmNhbGwodGhpcyx0aGlzLnJvd0hpZ2hsaWdodHMsblJ0KX1nZXRSb3dIaWdobGlnaHRzKCl7cmV0dXJuWy4uLnRoaXMucm93SGlnaGxpZ2h0cy52YWx1ZXMoKV19Y3JlYXRlQ29sdW1uSGlnaGxpZ2h0KCl7cmV0dXJuIEU3KHRoaXMsbDYsTTcpLmNhbGwodGhpcyx0aGlzLmNvbHVtbkhp'@; put 'Z2hsaWdodHMsUWt0KX1nZXRDb2x1bW5IaWdobGlnaHRzKCl7cmV0dXJuWy4uLnRoaXMuY29sdW1uSGlnaGxpZ2h0cy52YWx1ZXMoKV19Z2V0Q3VzdG9tU2VsZWN0aW9ucygpe3JldHVyblsuLi50aGlzLmN1c3RvbVNlbGVjdGlvbnMudmFsdWVzKCldfWFkZEN1c3RvbVNlbGVjdGlvbihlKXt0'@; put 'aGlzLmN1c3RvbVNlbGVjdGlvbnMucHVzaChmdW5jdGlvbiBlUnQoe2JvcmRlcjpuLHZpc3VhbENlbGxSYW5nZTplLC4uLnR9KXtyZXR1cm4gbmV3IFM3KHsuLi5uLC4uLnQsc2VsZWN0aW9uVHlwZToiY3VzdG9tLXNlbGVjdGlvbiJ9LGUpfSh7Li4udGhpcy5vcHRpb25zLC4uLmV9KSl9dXBk'@; put 'YXRlSGlnaGxpZ2h0Q2xhc3NOYW1lcyhlKXsicm93Q2xhc3NOYW1lImluIGUmJih0aGlzLm9wdGlvbnMucm93Q2xhc3NOYW1lPWUucm93Q2xhc3NOYW1lLFhuKHRoaXMucm93SGlnaGxpZ2h0cy52YWx1ZXMoKSx0PT57dC5zZXR0aW5ncy5jbGFzc05hbWU9ZS5yb3dDbGFzc05hbWV9KSksImNv'@; put 'bHVtbkNsYXNzTmFtZSJpbiBlJiYodGhpcy5vcHRpb25zLmNvbHVtbkNsYXNzTmFtZT1lLmNvbHVtbkNsYXNzTmFtZSxYbih0aGlzLmNvbHVtbkhpZ2hsaWdodHMudmFsdWVzKCksdD0+e3Quc2V0dGluZ3MuY2xhc3NOYW1lPWUuY29sdW1uQ2xhc3NOYW1lfSkpLCJoZWFkZXJDbGFzc05hbWUi'@; put 'aW4gZSYmKHRoaXMub3B0aW9ucy5oZWFkZXJDbGFzc05hbWU9ZS5oZWFkZXJDbGFzc05hbWUsWG4odGhpcy5yb3dIZWFkZXJzLnZhbHVlcygpLHQ9Pnt0LnNldHRpbmdzLmNsYXNzTmFtZT1lLmhlYWRlckNsYXNzTmFtZX0pLFhuKHRoaXMuY29sdW1uSGVhZGVycy52YWx1ZXMoKSx0PT57dC5z'@; put 'ZXR0aW5ncy5jbGFzc05hbWU9ZS5oZWFkZXJDbGFzc05hbWV9KSksImFjdGl2ZUhlYWRlckNsYXNzTmFtZSJpbiBlJiYodGhpcy5vcHRpb25zLmFjdGl2ZUhlYWRlckNsYXNzTmFtZT1lLmFjdGl2ZUhlYWRlckNsYXNzTmFtZSxYbih0aGlzLmFjdGl2ZVJvd0hlYWRlcnMudmFsdWVzKCksdD0+'@; put 'e3Quc2V0dGluZ3MuY2xhc3NOYW1lPWUuYWN0aXZlSGVhZGVyQ2xhc3NOYW1lfSksWG4odGhpcy5hY3RpdmVDb2x1bW5IZWFkZXJzLnZhbHVlcygpLHQ9Pnt0LnNldHRpbmdzLmNsYXNzTmFtZT1lLmFjdGl2ZUhlYWRlckNsYXNzTmFtZX0pLFhuKHRoaXMuYWN0aXZlQ29ybmVySGVhZGVycy52'@; put 'YWx1ZXMoKSx0PT57dC5zZXR0aW5ncy5jbGFzc05hbWU9ZS5hY3RpdmVIZWFkZXJDbGFzc05hbWV9KSl9Y2xlYXIoKXt0aGlzLmZvY3VzLmNsZWFyKCksdGhpcy5maWxsLmNsZWFyKCksdGhpcy5hcmVhcy5mb3JFYWNoKGU9PmUuY2xlYXIoKSksdGhpcy5sYXllcmVkQXJlYXMuZm9yRWFjaChl'@; put 'PT5lLmNsZWFyKCkpLHRoaXMucm93SGVhZGVycy5mb3JFYWNoKGU9PmUuY2xlYXIoKSksdGhpcy5jb2x1bW5IZWFkZXJzLmZvckVhY2goZT0+ZS5jbGVhcigpKSx0aGlzLmFjdGl2ZVJvd0hlYWRlcnMuZm9yRWFjaChlPT5lLmNsZWFyKCkpLHRoaXMuYWN0aXZlQ29sdW1uSGVhZGVycy5mb3JF'@; put 'YWNoKGU9PmUuY2xlYXIoKSksdGhpcy5hY3RpdmVDb3JuZXJIZWFkZXJzLmZvckVhY2goZT0+ZS5jbGVhcigpKSx0aGlzLnJvd0hpZ2hsaWdodHMuZm9yRWFjaChlPT5lLmNsZWFyKCkpLHRoaXMuY29sdW1uSGlnaGxpZ2h0cy5mb3JFYWNoKGU9PmUuY2xlYXIoKSl9W1N5bWJvbC5pdGVyYXRv'@; put 'cl0oKXtyZXR1cm5bdGhpcy5mb2N1cyx0aGlzLmZpbGwsLi4udGhpcy5hcmVhcy52YWx1ZXMoKSwuLi50aGlzLmxheWVyZWRBcmVhcy52YWx1ZXMoKSwuLi50aGlzLnJvd0hlYWRlcnMudmFsdWVzKCksLi4udGhpcy5jb2x1bW5IZWFkZXJzLnZhbHVlcygpLC4uLnRoaXMuYWN0aXZlUm93SGVh'@; put 'ZGVycy52YWx1ZXMoKSwuLi50aGlzLmFjdGl2ZUNvbHVtbkhlYWRlcnMudmFsdWVzKCksLi4udGhpcy5hY3RpdmVDb3JuZXJIZWFkZXJzLnZhbHVlcygpLC4uLnRoaXMucm93SGlnaGxpZ2h0cy52YWx1ZXMoKSwuLi50aGlzLmNvbHVtbkhpZ2hsaWdodHMudmFsdWVzKCksLi4udGhpcy5jdXN0'@; put 'b21TZWxlY3Rpb25zXVtTeW1ib2wuaXRlcmF0b3JdKCl9Y29uc3RydWN0b3IoZSl7KGZ1bmN0aW9uIGlSdChuLGUpeyhmdW5jdGlvbiByUnQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3'@; put 'aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLmFkZChuKX0pKHRoaXMsbDYpLHRoaXMubGF5ZXJMZXZlbD0wLHRoaXMubGF5ZXJlZEFyZWFzPW5ldyBNYXAsdGhpcy5hcmVhcz1uZXcgTWFwLHRoaXMucm93SGVhZGVycz1uZXcgTWFwLHRoaXMuY29sdW1uSGVhZGVycz1uZXcgTWFwLHRoaXMu'@; put 'YWN0aXZlUm93SGVhZGVycz1uZXcgTWFwLHRoaXMuYWN0aXZlQ29sdW1uSGVhZGVycz1uZXcgTWFwLHRoaXMuYWN0aXZlQ29ybmVySGVhZGVycz1uZXcgTWFwLHRoaXMucm93SGlnaGxpZ2h0cz1uZXcgTWFwLHRoaXMuY29sdW1uSGlnaGxpZ2h0cz1uZXcgTWFwLHRoaXMuY3VzdG9tU2VsZWN0'@; put 'aW9ucz1bXSx0aGlzLm9wdGlvbnM9ZSx0aGlzLmZvY3VzPWZ1bmN0aW9uIEprdCh7Y2VsbENvcm5lclZpc2libGU6biwuLi5lfSl7cmV0dXJuIG5ldyBTNyh7Y2xhc3NOYW1lOiJjdXJyZW50IixoZWFkZXJBdHRyaWJ1dGVzOltbImFyaWEtc2VsZWN0ZWQiLCJ0cnVlIl1dLGJvcmRlcjp7d2lk'@; put 'dGg6Mixjb2xvcjoiIzRiODlmZiIsY29ybmVyVmlzaWJsZTpufSwuLi5lLHNlbGVjdGlvblR5cGU6SFl9KX0oZSksdGhpcy5maWxsPWZ1bmN0aW9uIHRSdCh7Li4ubn0pe3JldHVybiBuZXcgUzcoe2NsYXNzTmFtZToiZmlsbCIsYm9yZGVyOnt3aWR0aDoxLGNvbG9yOiIjZmYwMDAwIn0sLi4u'@; put 'bixzZWxlY3Rpb25UeXBlOiJmaWxsIn0pfShlKX19ZnVuY3Rpb24gTTcobixlKXtjb25zdCB0PXRoaXMubGF5ZXJMZXZlbDtpZihuLmhhcyh0KSlyZXR1cm4gbi5nZXQodCk7Y29uc3Qgcj1lKHtsYXllckxldmVsOnQsLi4udGhpcy5vcHRpb25zfSk7cmV0dXJuIG4uc2V0KHQscikscn1jb25z'@; put 'dCBhUnQ9b1J0O2NsYXNzIFp1ZXtpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLnNpemUoKX1zZXQoZSl7cmV0dXJuIHRoaXMuY2xlYXIoKSx0aGlzLnJhbmdlcy5wdXNoKHRoaXMuY3JlYXRlQ2VsbFJhbmdlKGUpKSx0aGlzfWFkZChlKXtyZXR1cm4gdGhpcy5yYW5nZXMucHVzaCh0aGlzLmNy'@; put 'ZWF0ZUNlbGxSYW5nZShlKSksdGhpc31wdXNoKGUpe3JldHVybiB0aGlzLnJhbmdlcy5wdXNoKGUpLHRoaXN9cG9wKCl7cmV0dXJuIHRoaXMucmFuZ2VzLnBvcCgpfWN1cnJlbnQoKXtyZXR1cm4gdGhpcy5wZWVrQnlJbmRleCh0aGlzLnNpemUoKS0xKX1wcmV2aW91cygpe3JldHVybiB0aGlz'@; put 'LnBlZWtCeUluZGV4KHRoaXMuc2l6ZSgpLTIpfWluY2x1ZGVzKGUsdD0oKT0+ITApe3JldHVybiB0aGlzLnJhbmdlcy5zb21lKChyLGkpPT5yLmluY2x1ZGVzKGUpJiZ0KHIsaSkpfWZpbmRBbGwoZSl7Y29uc3QgdD1bXTtyZXR1cm4gdGhpcy5yYW5nZXMuZm9yRWFjaCgocixpKT0+e3IuaXNF'@; put 'cXVhbChlKSYmdC5wdXNoKHtyYW5nZTpyLGxheWVyOml9KX0pLHR9cmVtb3ZlKGUpe3JldHVybiB0aGlzLnJhbmdlcz10aGlzLnJhbmdlcy5maWx0ZXIodD0+IWUuc29tZShyPT5yLmlzRXF1YWwodCkpKSx0aGlzfXJlbW92ZUxheWVycyhlKXtyZXR1cm4gdGhpcy5yYW5nZXM9dGhpcy5yYW5n'@; put 'ZXMuZmlsdGVyKCh0LHIpPT4hZS5pbmNsdWRlcyhyKSksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLnJhbmdlcy5sZW5ndGg9MCx0aGlzfXNpemUoKXtyZXR1cm4gdGhpcy5yYW5nZXMubGVuZ3RofWNsb25lKCl7Y29uc3QgZT1uZXcgWnVlKHRoaXMuY3JlYXRlQ2VsbFJhbmdlKTtyZXR1cm4g'@; put 'ZS5yYW5nZXM9dGhpcy5yYW5nZXMubWFwKHQ9PnQuY2xvbmUoKSksZX1tYXAoZSl7cmV0dXJuIHRoaXMucmFuZ2VzPXRoaXMucmFuZ2VzLm1hcCgodCxyKT0+ZSh0LHIpKSx0aGlzfXBlZWtCeUluZGV4KGU9MCl7bGV0IHQ7cmV0dXJuIGU+PTAmJmU8dGhpcy5zaXplKCkmJih0PXRoaXMucmFu'@; put 'Z2VzW2VdKSx0fVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMucmFuZ2VzW1N5bWJvbC5pdGVyYXRvcl0oKX1jb25zdHJ1Y3RvcihlKXt0aGlzLnJhbmdlcz1bXSx0aGlzLmNyZWF0ZUNlbGxSYW5nZT1lfX1jb25zdCBzUnQ9WnVlO2Z1bmN0aW9uIE9SZShuLGUpe2lmKGUuaGFzKG4p'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gTlJlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZh'@; put 'dGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIGIxKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIGxSdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sTlJlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIEd1ZShuLGUsdCl7T1JlKG4s'@; put 'ZSksZS5zZXQobix0KX1mdW5jdGlvbiBpXyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGNSdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVs'@; put 'ZCIpO2UudmFsdWU9dH19KG4sTlJlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBkdShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBUNyhuLGUp'@; put 'e09SZShuLGUpLGUuYWRkKG4pfXZhciB4Nz1uZXcgV2Vha01hcCxvXz1uZXcgV2Vha01hcCxCMz1uZXcgV2Vha01hcCwkdWU9bmV3IFdlYWtTZXQscXVlPW5ldyBXZWFrU2V0LEt1ZT1uZXcgV2Vha1NldCxWWT1uZXcgV2Vha1NldCxLTD1uZXcgV2Vha1NldCxYTD1uZXcgV2Vha1NldCxRTD1u'@; put 'ZXcgV2Vha1NldCxYdWU9bmV3IFdlYWtTZXQseHc9bmV3IFdlYWtTZXQ7Y2xhc3MgUXVle3NldEFjdGl2ZUxheWVySW5kZXgoZSl7aV8odGhpcyxvXyxlKX1nZXRDdXJyZW50U2VsZWN0aW9uKCl7cmV0dXJuIGIxKHRoaXMseDcpLnBlZWtCeUluZGV4KGIxKHRoaXMsb18pKX10cmFuc2Zvcm1T'@; put 'dGFydChlLHQscj0hMSl7aV8odGhpcyxCMyx0aGlzLmNhbGN1bGF0ZU9mZnNldCgpKTtjb25zdCBpPXRoaXMudGFibGVBcGkuY3JlYXRlQ2VsbENvb3JkcyhlLHQpO2xldCBvPXRoaXMuZ2V0Q3VycmVudFNlbGVjdGlvbigpLmhpZ2hsaWdodDtjb25zdCBhPXRoaXMudGFibGVBcGkudmlzdWFs'@; put 'VG9SZW5kZXJhYmxlQ29vcmRzKG8pO2xldCBsPTAsdT0wO2lmKHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlVHJhbnNmb3JtU3RhcnQiLGkpLG51bGwhPT1hLnJvdyYmbnVsbCE9PWEuY29sKXtsZXR7d2lkdGg6ZyxoZWlnaHQ6RX09ZHUodGhpcyxWWSxKdWUpLmNhbGwodGhpcyk7Y29uc3R7'@; put 'cm93Ok8sY29sOlp9PWR1KHRoaXMsWHVlLFZSZSkuY2FsbCh0aGlzLG8pLGVlPXRoaXMudGFibGVBcGkuZml4ZWRSb3dzQm90dG9tKCksdmU9dGhpcy50YWJsZUFwaS5taW5TcGFyZVJvd3MoKSxNZT10aGlzLnRhYmxlQXBpLm1pblNwYXJlQ29scygpLEhlPXRoaXMudGFibGVBcGkuYXV0b1dy'@; put 'YXBSb3coKSxXZT10aGlzLnRhYmxlQXBpLmF1dG9XcmFwQ29sKCksYXQ9dGhpcy50YWJsZUFwaS5jcmVhdGVDZWxsQ29vcmRzKChPPz8wKSsoaS5yb3c/PzApLChaPz8wKSsoaS5jb2w/PzApKTtpZigoYXQucm93Pz8wKT49RSl7Y29uc3QgS3Q9VmYociYmdmU+MCYmMD09PWVlKSxxdD0oYXQu'@; put 'Y29sPz8wKSsxLGduPXF0Pj1nLFRuPXRoaXMudGFibGVBcGkuY3JlYXRlQ2VsbENvb3JkcygoYXQucm93Pz8wKS1FLGduP3F0LWc6cXQpO2lmKHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlQ29sdW1uV3JhcCIsS3QsZHUodGhpcyx4dyxsVCkuY2FsbCh0aGlzLFRuKSxnbiksS3QudmFsdWUp'@; put 'dGhpcy5ydW5Mb2NhbEhvb2tzKCJpbnNlcnRSb3dSZXF1aXJlIix0aGlzLmNvdW50UmVuZGVyYWJsZVJvd3MoKSk7ZWxzZSBpZihXZSl7aWYodGhpcy5zaG91bGRTd2l0Y2hTZWxlY3Rpb25MYXllcigpJiZnbiYmYjEodGhpcyx4Nykuc2l6ZSgpPjEpe2R1KHRoaXMsJHVlLEZSZSkuY2FsbCh0'@; put 'aGlzKTtjb25zdCBDbj1kdSh0aGlzLEtMLEJZKS5jYWxsKHRoaXMsImZvcndhcmQiKTtudWxsIT09Q24mJlRuLmFzc2lnbihDbil9YXQuYXNzaWduKFRuKX19ZWxzZSBpZigoYXQucm93Pz8wKTwwKXtjb25zdCBLdD1WZihXZSkscXQ9KGF0LmNvbD8/MCktMSxnbj1xdDwwLFRuPXRoaXMudGFi'@; put 'bGVBcGkuY3JlYXRlQ2VsbENvb3JkcyhFKyhhdC5yb3c/PzApLGduP2crcXQ6cXQpO2lmKHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlQ29sdW1uV3JhcCIsS3QsZHUodGhpcyx4dyxsVCkuY2FsbCh0aGlzLFRuKSxnbiksV2Upe2lmKHRoaXMuc2hvdWxkU3dpdGNoU2VsZWN0aW9uTGF5ZXIo'@; put 'KSYmZ24mJmIxKHRoaXMseDcpLnNpemUoKT4xKXtkdSh0aGlzLHF1ZSxQUmUpLmNhbGwodGhpcyk7Y29uc3QgQ249ZHUodGhpcyxLTCxCWSkuY2FsbCh0aGlzLCJiYWNrd2FyZCIpO251bGwhPT1DbiYmVG4uYXNzaWduKENuKX1hdC5hc3NpZ24oVG4pfX1pZigoe3dpZHRoOmcsaGVpZ2h0OkV9'@; put 'PWR1KHRoaXMsVlksSnVlKS5jYWxsKHRoaXMpKSwoYXQuY29sPz8wKT49Zyl7Y29uc3QgS3Q9VmYociYmTWU+MCkscXQ9KGF0LnJvdz8/MCkrMSxnbj1xdD49RSxUbj10aGlzLnRhYmxlQXBpLmNyZWF0ZUNlbGxDb29yZHMoZ24/cXQtRTpxdCwoYXQuY29sPz8wKS1nKTtpZih0aGlzLnJ1bkxv'@; put 'Y2FsSG9va3MoImJlZm9yZVJvd1dyYXAiLEt0LGR1KHRoaXMseHcsbFQpLmNhbGwodGhpcyxUbiksZ24pLEt0LnZhbHVlKXRoaXMucnVuTG9jYWxIb29rcygiaW5zZXJ0Q29sUmVxdWlyZSIsdGhpcy5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCkpO2Vsc2UgaWYoSGUpe2lmKHRoaXMuc2hvdWxk'@; put 'U3dpdGNoU2VsZWN0aW9uTGF5ZXIoKSYmZ24mJmIxKHRoaXMseDcpLnNpemUoKT4xKXtkdSh0aGlzLCR1ZSxGUmUpLmNhbGwodGhpcyk7Y29uc3QgQ249ZHUodGhpcyxLTCxCWSkuY2FsbCh0aGlzLCJmb3J3YXJkIik7bnVsbCE9PUNuJiZUbi5hc3NpZ24oQ24pfWF0LmFzc2lnbihUbil9fWVs'@; put 'c2UgaWYoKGF0LmNvbD8/MCk8MCl7Y29uc3QgS3Q9VmYoSGUpLHF0PShhdC5yb3c/PzApLTEsZ249cXQ8MCxUbj10aGlzLnRhYmxlQXBpLmNyZWF0ZUNlbGxDb29yZHMoZ24/RStxdDpxdCxnKyhhdC5jb2w/PzApKTtpZih0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVJvd1dyYXAiLEt0LGR1'@; put 'KHRoaXMseHcsbFQpLmNhbGwodGhpcyxUbiksZ24pLEhlKXtpZih0aGlzLnNob3VsZFN3aXRjaFNlbGVjdGlvbkxheWVyKCkmJmduJiZiMSh0aGlzLHg3KS5zaXplKCk+MSl7ZHUodGhpcyxxdWUsUFJlKS5jYWxsKHRoaXMpO2NvbnN0IENuPWR1KHRoaXMsS0wsQlkpLmNhbGwodGhpcywiYmFj'@; put 'a3dhcmQiKTtudWxsIT09Q24mJlRuLmFzc2lnbihDbil9YXQuYXNzaWduKFRuKX19Y29uc3R7cm93RGlyOkN0LGNvbERpcjpBdH09ZHUodGhpcyxLdWUsSFJlKS5jYWxsKHRoaXMsYXQpO2w9Q3QsdT1BdCxvPWR1KHRoaXMseHcsbFQpLmNhbGwodGhpcyxhdCl9cmV0dXJuIHRoaXMucnVuTG9j'@; put 'YWxIb29rcygiYWZ0ZXJUcmFuc2Zvcm1TdGFydCIsbyxsLHUpLHtzZWxlY3Rpb25MYXllcjpiMSh0aGlzLG9fKSx2aXN1YWxDb29yZHM6b319dHJhbnNmb3JtRW5kKGUsdCl7aV8odGhpcyxCMyx0aGlzLmNhbGN1bGF0ZU9mZnNldCgpKTtjb25zdCByPXRoaXMudGFibGVBcGkuY3JlYXRlQ2Vs'@; put 'bENvb3JkcyhlLHQpLGk9dGhpcy5nZXRDdXJyZW50U2VsZWN0aW9uKCksbz10aGlzLnRhYmxlQXBpLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhpLmhpZ2hsaWdodCksYT1kdSh0aGlzLFhMLGpZKS5jYWxsKHRoaXMsaS50by5yb3c/PzAsaS5mcm9tLnJvdz8/MCksbD1kdSh0aGlzLFFMLFVZ'@; put 'KS5jYWxsKHRoaXMsaS50by5jb2w/PzAsaS5mcm9tLmNvbD8/MCksdT1pLnRvLmNsb25lKCk7bGV0IGc9MCxFPTA7aWYodGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVUcmFuc2Zvcm1FbmQiLHIpLG51bGwhPT1vLnJvdyYmbnVsbCE9PW8uY29sJiZudWxsIT09YSYmbnVsbCE9PWwpe2NvbnN0'@; put 'e3JvdzpPLGNvbDpafT1kdSh0aGlzLFh1ZSxWUmUpLmNhbGwodGhpcyxpLmhpZ2hsaWdodCksZWU9dGhpcy50YWJsZUFwaS5jcmVhdGVDZWxsQ29vcmRzKGErKHIucm93Pz8wKSxsKyhyLmNvbD8/MCkpLHZlPWkuZ2V0VG9wU3RhcnRDb3JuZXIoKSxNZT1pLmdldFRvcEVuZENvcm5lcigpLEhl'@; put 'PWkuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7aWYoKHIuY29sPz8wKTwwJiZsPj0oWj8/MCkmJihlZS5jb2w/PzApPChaPz8wKSl7Y29uc3QgQXQ9KGVlLmNvbD8/MCktKFo/PzApLEt0PWR1KHRoaXMsUUwsVVkpLmNhbGwodGhpcyx2ZS5jb2w/PzAsTWUuY29sPz8wKTtlZS5jb2w9KEt0Pz8wKStB'@; put 'dH1lbHNlIGlmKChyLmNvbD8/MCk+MCYmbDw9KFo/PzApJiYoZWUuY29sPz8wKT4oWj8/MCkpe2NvbnN0IEF0PWR1KHRoaXMsUUwsVVkpLmNhbGwodGhpcyxNZS5jb2w/PzAsdmUuY29sPz8wKSxLdD1NYXRoLm1heCgoZWUuY29sPz8wKS0oQXQ/PzApLDEpO2VlLmNvbD0oQXQ/PzApK0t0fWlm'@; put 'KChyLnJvdz8/MCk8MCYmYT49KE8/PzApJiYoZWUucm93Pz8wKTwoTz8/MCkpe2NvbnN0IEF0PShlZS5yb3c/PzApLShPPz8wKSxLdD1kdSh0aGlzLFhMLGpZKS5jYWxsKHRoaXMsdmUucm93Pz8wLEhlLnJvdz8/MCk7ZWUucm93PShLdD8/MCkrQXR9ZWxzZSBpZigoci5yb3c/PzApPjAmJmE8'@; put 'PShPPz8wKSYmKGVlLnJvdz8/MCk+KE8/PzApKXtjb25zdCBBdD1kdSh0aGlzLFhMLGpZKS5jYWxsKHRoaXMsSGUucm93Pz8wLHZlLnJvdz8/MCksS3Q9TWF0aC5tYXgoKGVlLnJvdz8/MCktKEF0Pz8wKSwxKTtlZS5yb3c9KEF0Pz8wKStLdH1jb25zdHtyb3dEaXI6V2UsY29sRGlyOmF0fT1k'@; put 'dSh0aGlzLEt1ZSxIUmUpLmNhbGwodGhpcyxlZSk7Zz1XZSxFPWF0O2NvbnN0IEN0PWR1KHRoaXMseHcsbFQpLmNhbGwodGhpcyxlZSk7MD09PXIucm93JiYwIT09ci5jb2w/dS5jb2w9Q3QuY29sOjAhPT1yLnJvdyYmMD09PXIuY29sP3Uucm93PUN0LnJvdzoodS5yb3c9Q3Qucm93LHUuY29s'@; put 'PUN0LmNvbCl9cmV0dXJuIHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJUcmFuc2Zvcm1FbmQiLHUsZyxFKSx7c2VsZWN0aW9uTGF5ZXI6YjEodGhpcyxvXyksdmlzdWFsQ29vcmRzOnV9fWNhbGN1bGF0ZU9mZnNldCgpe0pyKCJgY2FsY3VsYXRlT2Zmc2V0YCBpcyBub3QgaW1wbGVtZW50ZWQi'@; put 'KX1jb3VudFJlbmRlcmFibGVSb3dzKCl7SnIoImBjb3VudFJlbmRlcmFibGVSb3dzYCBpcyBub3QgaW1wbGVtZW50ZWQiKX1jb3VudFJlbmRlcmFibGVDb2x1bW5zKCl7SnIoImBjb3VudFJlbmRlcmFibGVDb2x1bW5zYCBpcyBub3QgaW1wbGVtZW50ZWQiKX1zaG91bGRTd2l0Y2hTZWxlY3Rp'@; put 'b25MYXllcigpe0pyKCJgc2hvdWxkU3dpdGNoU2VsZWN0aW9uTGF5ZXJgIGlzIG5vdCBpbXBsZW1lbnRlZCIpfWNvbnN0cnVjdG9yKGUsdCl7VDcodGhpcywkdWUpLFQ3KHRoaXMscXVlKSxUNyh0aGlzLEt1ZSksVDcodGhpcyxWWSksVDcodGhpcyxLTCksVDcodGhpcyxYTCksVDcodGhpcyxR'@; put 'TCksVDcodGhpcyxYdWUpLFQ3KHRoaXMseHcpLEd1ZSh0aGlzLHg3LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxHdWUodGhpcyxvXyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksR3VlKHRoaXMsQjMse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGlfKHRoaXMsb18sMCksaV8o'@; put 'dGhpcyxCMyx7eDowLHk6MH0pLGlfKHRoaXMseDcsZSksdGhpcy50YWJsZUFwaT10fX1mdW5jdGlvbiBGUmUoKXtjb25zdCBuPWIxKHRoaXMsb18pKzE7dGhpcy5zZXRBY3RpdmVMYXllckluZGV4KG4+PWIxKHRoaXMseDcpLnNpemUoKT8wOm4pLGlfKHRoaXMsQjMsdGhpcy5jYWxjdWxhdGVP'@; put 'ZmZzZXQoKSl9ZnVuY3Rpb24gUFJlKCl7Y29uc3Qgbj1iMSh0aGlzLG9fKS0xO3RoaXMuc2V0QWN0aXZlTGF5ZXJJbmRleChuPDA/YjEodGhpcyx4Nykuc2l6ZSgpLTE6biksaV8odGhpcyxCMyx0aGlzLmNhbGN1bGF0ZU9mZnNldCgpKX1mdW5jdGlvbiBIUmUobil7Y29uc3R7d2lkdGg6ZSxo'@; put 'ZWlnaHQ6dH09ZHUodGhpcyxWWSxKdWUpLmNhbGwodGhpcyk7bGV0IHI9MCxpPTA7cmV0dXJuKG4ucm93Pz8wKTwwPyhyPS0xLG4ucm93PTApOihuLnJvdz8/MCk+MCYmKG4ucm93Pz8wKT49dCYmKHI9MSxuLnJvdz10LTEpLChuLmNvbD8/MCk8MD8oaT0tMSxuLmNvbD0wKToobi5jb2w/PzAp'@; put 'PjAmJihuLmNvbD8/MCk+PWUmJihpPTEsbi5jb2w9ZS0xKSx7cm93RGlyOnIsY29sRGlyOml9fWZ1bmN0aW9uIEp1ZSgpe3JldHVybnt3aWR0aDpiMSh0aGlzLEIzKS54K3RoaXMuY291bnRSZW5kZXJhYmxlQ29sdW1ucygpLGhlaWdodDpiMSh0aGlzLEIzKS55K3RoaXMuY291bnRSZW5kZXJh'@; put 'YmxlUm93cygpfX1mdW5jdGlvbiBCWShuKXtpZighWyJmb3J3YXJkIiwiYmFja3dhcmQiXS5pbmNsdWRlcyhuKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuZ2V0Q3VycmVudFNlbGVjdGlvbigpLmdldFRvcFN0YXJ0Q29ybmVyKCksdD10aGlzLmdldEN1cnJlbnRTZWxlY3Rpb24oKS5nZXRC'@; put 'b3R0b21FbmRDb3JuZXIoKSxbcixpLG8sYV09ImZvcndhcmQiPT09bj9bZS5yb3csdC5yb3csZS5jb2wsdC5jb2xdOlt0LnJvdyxlLnJvdyx0LmNvbCxlLmNvbF0sbD1kdSh0aGlzLFhMLGpZKS5jYWxsKHRoaXMscj8/MCxpPz8wKSx1PWR1KHRoaXMsUUwsVVkpLmNhbGwodGhpcyxvPz8wLGE/'@; put 'PzApO3JldHVybiBudWxsPT09bHx8bnVsbD09PXU/bnVsbDp0aGlzLnRhYmxlQXBpLmNyZWF0ZUNlbGxDb29yZHMobCx1KX1mdW5jdGlvbiBqWShuLGUpe2NvbnN0IHQ9dGhpcy50YWJsZUFwaS5maW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlUm93KG4sZSk7cmV0dXJuIG51bGw9PT10P251'@; put 'bGw6YjEodGhpcyxCMykueSt0fWZ1bmN0aW9uIFVZKG4sZSl7Y29uc3QgdD10aGlzLnRhYmxlQXBpLmZpbmRGaXJzdE5vbkhpZGRlblJlbmRlcmFibGVDb2x1bW4obixlKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDpiMSh0aGlzLEIzKS54K3R9ZnVuY3Rpb24gVlJlKG4pe2NvbnN0e3JvdzplLGNv'@; put 'bDp0fT10aGlzLnRhYmxlQXBpLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhuKTtyZXR1cm4obnVsbD09PWV8fG51bGw9PT10KSYmSnIoIlJlbmRlcmFibGUgY29vcmRzIGFyZSBub3QgdmlzaWJsZS4iKSx0aGlzLnRhYmxlQXBpLmNyZWF0ZUNlbGxDb29yZHMoYjEodGhpcyxCMykueStlLGIx'@; put 'KHRoaXMsQjMpLngrdCl9ZnVuY3Rpb24gbFQobil7Y29uc3QgZT1uLmNsb25lKCk7cmV0dXJuIGUuY29sPShuLmNvbD8/MCktYjEodGhpcyxCMykueCxlLnJvdz0obi5yb3c/PzApLWIxKHRoaXMsQjMpLnksdGhpcy50YWJsZUFwaS5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoZSl9WWwoUXVl'@; put 'LF9oKTtjbGFzcyB1UnQgZXh0ZW5kcyBRdWV7Y2FsY3VsYXRlT2Zmc2V0KCl7cmV0dXJue3g6dGhpcy50YWJsZUFwaS5uYXZpZ2FibGVIZWFkZXJzKCk/dGhpcy50YWJsZUFwaS5jb3VudFJvd0hlYWRlcnMoKTowLHk6dGhpcy50YWJsZUFwaS5uYXZpZ2FibGVIZWFkZXJzKCk/dGhpcy50YWJs'@; put 'ZUFwaS5jb3VudENvbEhlYWRlcnMoKTowfX1jb3VudFJlbmRlcmFibGVSb3dzKCl7cmV0dXJuIHRoaXMudGFibGVBcGkuY291bnRSZW5kZXJhYmxlUm93cygpfWNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy50YWJsZUFwaS5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCl9c2hv'@; put 'dWxkU3dpdGNoU2VsZWN0aW9uTGF5ZXIoKXtyZXR1cm4hMX19Y2xhc3MgZFJ0IGV4dGVuZHMgUXVle2NhbGN1bGF0ZU9mZnNldCgpe2NvbnN0IGU9dGhpcy5nZXRDdXJyZW50U2VsZWN0aW9uKCkse3Jvdzp0LGNvbDpyfT1lLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxpPXQ/PzAsbz1yPz8w'@; put 'LGE9dGhpcy50YWJsZUFwaS5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZSgwLG8tMSksbD10aGlzLnRhYmxlQXBpLmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKDAsaS0xKSx1PWUuaGlnaGxpZ2h0LmlzSGVhZGVyKCksZz11P01hdGguYWJzKG8pOjAsRT11P01hdGguYWJzKGkpOjA7'@; put 'cmV0dXJue3g6bzwwP2c6LWEseTppPDA/RTotbH19Y291bnRSZW5kZXJhYmxlUm93cygpe2NvbnN0IGU9dGhpcy5nZXRDdXJyZW50U2VsZWN0aW9uKCk7cmV0dXJuIHRoaXMudGFibGVBcGkuY291bnRSZW5kZXJhYmxlUm93c0luUmFuZ2UoMCxlLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCku'@; put 'cm93Pz8wKX1jb3VudFJlbmRlcmFibGVDb2x1bW5zKCl7Y29uc3QgZT10aGlzLmdldEN1cnJlbnRTZWxlY3Rpb24oKTtyZXR1cm4gdGhpcy50YWJsZUFwaS5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZSgwLGUuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKS5jb2w/PzApfXRyYW5zZm9y'@; put 'bUVuZChlLHQpe0pyKCJgdHJhbnNmb3JtRW5kYCBpcyBub3QgdmFsaWQgZm9yIGZvY3VzIHNlbGVjdGlvbiB1c2UgYHRyYW5zZm9ybVN0YXJ0YCBpbnN0ZWFkIil9c2hvdWxkU3dpdGNoU2VsZWN0aW9uTGF5ZXIoKXtyZXR1cm4hMH19Y29uc3QgaFJ0PVszLDJdLGZSdD1bWyJudW1iZXIiXSxb'@; put 'Im51bWJlciIsInN0cmluZyJdLFsibnVtYmVyIiwidW5kZWZpbmVkIl0sWyJudW1iZXIiLCJzdHJpbmciLCJ1bmRlZmluZWQiXV0sdGRlPVN5bWJvbCgicm9vdCIpLGpSZT1TeW1ib2woImNoaWxkIik7ZnVuY3Rpb24gY1QobixlPXRkZSl7ZSE9PXRkZSYmZSE9PWpSZSYmSnIoIlRoZSBzZWNv'@; put 'bmQgYXJndW1lbnQgaXMgdXNlZCBpbnRlcm5hbGx5IG9ubHkgYW5kIGNhbm5vdCBiZSBvdmVyd3JpdHRlbi4iKTtjb25zdCB0PUFycmF5LmlzQXJyYXkobikscj1lPT09dGRlO2xldCBpPTA7aWYodCl7Y29uc3Qgbz1uWzBdOzA9PT1uLmxlbmd0aD9pPTE6ciYmbyBpbnN0YW5jZW9mIG5ZP2k9'@; put 'MzpyJiZBcnJheS5pc0FycmF5KG8pP2k9Y1QobyxqUmUpOm4ubGVuZ3RoPj0yJiZuLmxlbmd0aDw9NCYmIW4uc29tZSgobCx1KT0+IWZSdFt1XS5pbmNsdWRlcyh0eXBlb2YgbCkpJiYoaT0yKX1yZXR1cm4gaX1mdW5jdGlvbiBKTChuLHtjcmVhdGVDZWxsQ29vcmRzOmUsY3JlYXRlQ2VsbFJh'@; put 'bmdlOnQsa2VlcERpcmVjdGlvbjpyPSExLHByb3BUb0NvbDppfT17fSl7cmV0dXJuIGhSdC5pbmNsdWRlcyhuKXx8SnIoIlVuc3VwcG9ydGVkIHNlbGVjdGlvbiByYW5nZXMgc2NoZW1hIHR5cGUgd2FzIHByb3ZpZGVkLiIpLGZ1bmN0aW9uKG8pe2NvbnN0IGE9Mz09PW47bGV0IHU9YT9vLmZy'@; put 'b20ucm93Om9bMF0sZz1hP28uZnJvbS5jb2w6b1sxXSxFPWE/by50by5yb3c6b1syXSxPPWE/by50by5jb2w6b1szXTsiZnVuY3Rpb24iPT10eXBlb2YgaSYmKCJzdHJpbmciPT10eXBlb2YgZyYmKGc9aShnKSksInN0cmluZyI9PXR5cGVvZiBPJiYoTz1pKE8pKSksWHUoRSkmJihFPXUpLFh1'@; put 'KE8pJiYoTz1nKTtsZXQgWj1nLGVlPU87aWYoIXIpe2NvbnN0IFdlPXUsYXQ9RSxDdD1aLEF0PWVlO3U9TWF0aC5taW4oV2U/PzAsYXQ/PzApLFo9TWF0aC5taW4oQ3Q/PzAsQXQ/PzApLEU9TWF0aC5tYXgoV2U/PzAsYXQ/PzApLGVlPU1hdGgubWF4KEN0Pz8wLEF0Pz8wKX1jb25zdCB2ZT1h'@; put 'P28uaGlnaGxpZ2h0LmNsb25lKCk6ZSh1Pz8wLFo/PzApLE1lPWUodT8/MCxaPz8wKSxIZT1lKEU/PzAsZWU/PzApO3JldHVybiB0KHZlLE1lLEhlKX19ZnVuY3Rpb24gVVJlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUg'@; put 'cHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB6UmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rp'@; put 'b24gRGQobixlKXtyZXR1cm4gZnVuY3Rpb24gbVJ0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix6UmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gQXcobixlLHQpe1VSZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gUzAobixlLHQpe3JldHVybiBmdW5jdGlvbiB2'@; put 'UnQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHpSZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gbmRl'@; put 'KG4pe3JldHVybiJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4mJk51bWJlci5pc0ludGVnZXIobi5yb3cpJiZOdW1iZXIuaXNJbnRlZ2VyKG4uY29sKX1mdW5jdGlvbiBXUmUobixlLHQpe2lmKCF0fHxlPDApcmV0dXJuIGU7Y29uc3Qgcj1uLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChl'@; put 'LDEsITApO3JldHVybiBudWxsPT09cj9lOnJ9dmFyIFpwPW5ldyBXZWFrTWFwLHVUPW5ldyBXZWFrTWFwLGVPPW5ldyBXZWFrTWFwLEE3PW5ldyBXZWFrTWFwLHRPPW5ldyBXZWFrTWFwLGRUPW5ldyBXZWFrTWFwLG5PPW5ldyBXZWFrTWFwLFlSZT1uZXcgV2Vha1NldDtjbGFzcyBaUmV7dXBk'@; put 'YXRlSGlnaGxpZ2h0Q2xhc3NOYW1lcygpe3RoaXMuaGlnaGxpZ2h0LnVwZGF0ZUhpZ2hsaWdodENsYXNzTmFtZXMoe3Jvd0NsYXNzTmFtZTp0aGlzLnNldHRpbmdzLmN1cnJlbnRSb3dDbGFzc05hbWUsY29sdW1uQ2xhc3NOYW1lOnRoaXMuc2V0dGluZ3MuY3VycmVudENvbENsYXNzTmFtZSxo'@; put 'ZWFkZXJDbGFzc05hbWU6dGhpcy5zZXR0aW5ncy5jdXJyZW50SGVhZGVyQ2xhc3NOYW1lLGFjdGl2ZUhlYWRlckNsYXNzTmFtZTp0aGlzLnNldHRpbmdzLmFjdGl2ZUhlYWRlckNsYXNzTmFtZX0pfWdldFNlbGVjdGVkUmFuZ2UoKXtyZXR1cm4gdGhpcy5zZWxlY3RlZFJhbmdlfWdldEFjdGl2'@; put 'ZVNlbGVjdGVkUmFuZ2UoKXtyZXR1cm4gdGhpcy5zZWxlY3RlZFJhbmdlLnBlZWtCeUluZGV4KERkKHRoaXMsbk8pKX1nZXRBY3RpdmVTZWxlY3Rpb25MYXllckluZGV4KCl7cmV0dXJuIERkKHRoaXMsbk8pfXNldEFjdGl2ZVNlbGVjdGlvbkxheWVySW5kZXgoZSl7UzAodGhpcyxuTyxlKX1t'@; put 'YXJrU291cmNlKGUpe1MwKHRoaXMsdE8sZSl9bWFya0VuZFNvdXJjZSgpe1MwKHRoaXMsdE8sInVua25vd24iKX1nZXRTZWxlY3Rpb25Tb3VyY2UoKXtyZXR1cm4gRGQodGhpcyx0Tyl9c2V0RXhwZWN0ZWRMYXllcnMoZSl7UzAodGhpcyxkVCxlKX1iZWdpbigpe3RoaXMuaW5Qcm9ncmVzcz0h'@; put 'MH1maW5pc2goKXt0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyU2VsZWN0aW9uRmluaXNoZWQiLEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJhbmdlKSksdGhpcy5pblByb2dyZXNzPSExLFMwKHRoaXMsZFQsLTEpfWlzSW5Qcm9ncmVzcygpe3JldHVybiB0aGlzLmluUHJvZ3Jlc3N9c2V0UmFu'@; put 'Z2VTdGFydChlLHQscj0hMSxpPWUpe2NvbnN0IG89Im11bHRpcGxlIj09PXRoaXMuc2V0dGluZ3Muc2VsZWN0aW9uTW9kZSxhPVh1KHQpP3RoaXMudGFibGVQcm9wcy5nZXRTaG9ydGN1dE1hbmFnZXIoKS5pc0N0cmxQcmVzc2VkKCk6dCxsPWUuY2xvbmUoKTtTMCh0aGlzLEE3LCExKSxTMCh0'@; put 'aGlzLGVPLCExKSx0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVNldFJhbmdlU3RhcnQiKyhyPyJPbmx5IjoiIiksbCksKCFvfHxvJiYhYSYmWHUodCkpJiYodGhpcy5zZWxlY3RlZFJhbmdlLmNsZWFyKCksdGhpcy5oaWdobGlnaHQuZ2V0QXJlYXMoKS5mb3JFYWNoKHU9PnUuY2xlYXIoKSks'@; put 'dGhpcy5oaWdobGlnaHQuZ2V0TGF5ZXJlZEFyZWFzKCkuZm9yRWFjaCh1PT51LmNsZWFyKCkpLHRoaXMuaGlnaGxpZ2h0LmdldFJvd0hlYWRlcnMoKS5mb3JFYWNoKHU9PnUuY2xlYXIoKSksdGhpcy5oaWdobGlnaHQuZ2V0Q29sdW1uSGVhZGVycygpLmZvckVhY2godT0+dS5jbGVhcigpKSx0'@; put 'aGlzLmhpZ2hsaWdodC5nZXRBY3RpdmVSb3dIZWFkZXJzKCkuZm9yRWFjaCh1PT51LmNsZWFyKCkpLHRoaXMuaGlnaGxpZ2h0LmdldEFjdGl2ZUNvbHVtbkhlYWRlcnMoKS5mb3JFYWNoKHU9PnUuY2xlYXIoKSksdGhpcy5oaWdobGlnaHQuZ2V0QWN0aXZlQ29ybmVySGVhZGVycygpLmZvckVh'@; put 'Y2godT0+dS5jbGVhcigpKSx0aGlzLmhpZ2hsaWdodC5nZXRSb3dIaWdobGlnaHRzKCkuZm9yRWFjaCh1PT51LmNsZWFyKCkpLHRoaXMuaGlnaGxpZ2h0LmdldENvbHVtbkhpZ2hsaWdodHMoKS5mb3JFYWNoKHU9PnUuY2xlYXIoKSkpLHRoaXMuc2VsZWN0ZWRSYW5nZS5hZGQobCkuY3VycmVu'@; put 'dCgpPy5zZXRIaWdobGlnaHQoaS5jbG9uZSgpKSwwPT09dGhpcy5nZXRMYXllckxldmVsKCkmJih0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuY2xlYXIoKSx0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuY2xlYXIoKSkscnx8dGhpcy5zZXRSYW5nZUVuZChlKX1zZXRSYW5nZVN0YXJ0T25s'@; put 'eShlLHQscj1lKXt0aGlzLnNldFJhbmdlU3RhcnQoZSx0LCEwLHIpfXNldFJhbmdlRW5kKGUsdD10aGlzLmdldExheWVyTGV2ZWwoKSl7aWYodGhpcy5zZWxlY3RlZFJhbmdlLmlzRW1wdHkoKSlyZXR1cm47dGhpcy5zZXRBY3RpdmVTZWxlY3Rpb25MYXllckluZGV4KHQpO2NvbnN0IHI9ZS5j'@; put 'bG9uZSgpLGk9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLG89dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLGE9dGhpcy5nZXRBY3RpdmVTZWxlY3RlZFJhbmdlKCk/LmNsb25lKCkuc2V0VG8oZSkuaXNTaW5nbGVIZWFkZXIoKTtpZigoaT4wfHxvPjApJiYoMD09PWkmJihyLmNvbD8/'@; put 'MCk8MCYmIWF8fDA9PT1vJiYoci5yb3c/PzApPDAmJiFhKSlyZXR1cm47dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZXRSYW5nZUVuZCIsciksdGhpcy5iZWdpbigpO2NvbnN0IGw9dGhpcy5nZXRBY3RpdmVTZWxlY3RlZFJhbmdlKCk7aWYoIWwpcmV0dXJuO2lmKHRoaXMuc2V0dGluZ3Mu'@; put 'bmF2aWdhYmxlSGVhZGVyc3x8bC5oaWdobGlnaHQubm9ybWFsaXplKCksInNpbmdsZSI9PT10aGlzLnNldHRpbmdzLnNlbGVjdGlvbk1vZGUpbC5zZXRGcm9tKGwuaGlnaGxpZ2h0KSxsLnNldFRvKGwuaGlnaGxpZ2h0KTtlbHNle2NvbnN0IGc9bC5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCks'@; put 'RT1sLmdldFZlcnRpY2FsRGlyZWN0aW9uKCksTz10aGlzLmlzTXVsdGlwbGUoKTtsLnNldFRvKHIpLE8mJihnIT09bC5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCl8fDE9PT1sLmdldFdpZHRoKCkmJiFsLmluY2x1ZGVzKGwuaGlnaGxpZ2h0KSkmJmwuZnJvbS5hc3NpZ24oe2NvbDpsLmhpZ2hs'@; put 'aWdodC5jb2w/P3ZvaWQgMH0pLE8mJihFIT09bC5nZXRWZXJ0aWNhbERpcmVjdGlvbigpfHwxPT09bC5nZXRIZWlnaHQoKSYmIWwuaW5jbHVkZXMobC5oaWdobGlnaHQpKSYmbC5mcm9tLmFzc2lnbih7cm93OmwuaGlnaGxpZ2h0LnJvdz8/dm9pZCAwfSl9aT4wJiZvPjAmJighdGhpcy5zZXR0'@; put 'aW5ncy5uYXZpZ2FibGVIZWFkZXJzfHx0aGlzLnNldHRpbmdzLm5hdmlnYWJsZUhlYWRlcnMmJiFsLmlzU2luZ2xlSGVhZGVyKCkpJiZsLnRvLm5vcm1hbGl6ZSgpLHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlSGlnaGxpZ2h0U2V0IiksdGhpcy5zZXRSYW5nZUZvY3VzKHRoaXMuZ2V0QWN0'@; put 'aXZlU2VsZWN0ZWRSYW5nZSgpPy5oaWdobGlnaHQ/P2wuaGlnaGxpZ2h0LHQpLHRoaXMuYXBwbHlBbmRDb21taXQodGhpcy5nZXRBY3RpdmVTZWxlY3RlZFJhbmdlKCk/P2wsdCk7Y29uc3QgdT0tMT09PURkKHRoaXMsZFQpfHx0aGlzLnNlbGVjdGVkUmFuZ2Uuc2l6ZSgpPT09RGQodGhpcyxk'@; put 'VCk7dGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNldFJhbmdlRW5kIixlLHUpfWFwcGx5QW5kQ29tbWl0KGU9dGhpcy5nZXRBY3RpdmVTZWxlY3RlZFJhbmdlKCksdD10aGlzLmdldExheWVyTGV2ZWwoKSl7aWYoIWUpcmV0dXJuO2NvbnN0IHI9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygp'@; put 'LGk9dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpO3RoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwodCk7Y29uc3Qgbz10aGlzLmhpZ2hsaWdodC5jcmVhdGVBcmVhKCksYT10aGlzLmhpZ2hsaWdodC5jcmVhdGVMYXllcmVkQXJlYSgpLGw9dGhpcy5oaWdobGlnaHQuY3JlYXRlUm93SGVh'@; put 'ZGVyKCksdT10aGlzLmhpZ2hsaWdodC5jcmVhdGVDb2x1bW5IZWFkZXIoKSxnPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUFjdGl2ZVJvd0hlYWRlcigpLEU9dGhpcy5oaWdobGlnaHQuY3JlYXRlQWN0aXZlQ29sdW1uSGVhZGVyKCksTz10aGlzLmhpZ2hsaWdodC5jcmVhdGVBY3RpdmVDb3JuZXJI'@; put 'ZWFkZXIoKSxaPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZVJvd0hpZ2hsaWdodCgpLGVlPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUNvbHVtbkhpZ2hsaWdodCgpO2lmKG8/LmNsZWFyKCksYT8uY2xlYXIoKSxsPy5jbGVhcigpLHU/LmNsZWFyKCksZz8uY2xlYXIoKSxFPy5jbGVhcigpLE8/LmNsZWFy'@; put 'KCksWj8uY2xlYXIoKSxlZT8uY2xlYXIoKSx0aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3IoImFyZWEiLGUuaGlnaGxpZ2h0KSYmKHRoaXMuaXNNdWx0aXBsZSgpfHx0Pj0xKSYmKG8/LmFkZChlLmZyb20pLmFkZChlLnRvKS5jb21taXQoKSxhPy5hZGQoZS5mcm9tKS5hZGQoZS50bykuY29t'@; put 'bWl0KCksMT09PXQpKXtjb25zdCB2ZT10aGlzLnNlbGVjdGVkUmFuZ2UucGVla0J5SW5kZXgodC0xKTt2ZSYmKHRoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwodC0xKSx0aGlzLmhpZ2hsaWdodC5jcmVhdGVBcmVhKCk/LmFkZCh2ZS5mcm9tKS5jb21taXQoKS5zeW5jV2l0aCh2ZSksdGhp'@; put 'cy5oaWdobGlnaHQuY3JlYXRlTGF5ZXJlZEFyZWEoKT8uYWRkKHZlLmZyb20pLmNvbW1pdCgpLnN5bmNXaXRoKHZlKSx0aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKHQpKX10aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3IoenVlLGUuaGlnaGxpZ2h0KSYmZnVuY3Rpb24gX1J0KG4sZSx0'@; put 'KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fSh0aGlzLFlSZSxiUnQpLmNhbGwodGhpcyxlLHIsaSxsLHUsZyxFLE8sWixlZSl9c2V0UmFuZ2VGb2N1cyhlLHQ9dGhpcy5n'@; put 'ZXRMYXllckxldmVsKCkpe2lmKHRoaXMuc2VsZWN0ZWRSYW5nZS5pc0VtcHR5KCkpcmV0dXJuO3RoaXMuc2V0QWN0aXZlU2VsZWN0aW9uTGF5ZXJJbmRleCh0KSxEZCh0aGlzLFpwKS5zZXRBY3RpdmVMYXllckluZGV4KHQpLERkKHRoaXMsdVQpLnNldEFjdGl2ZUxheWVySW5kZXgodCk7Y29u'@; put 'c3Qgcj10aGlzLmdldEFjdGl2ZVNlbGVjdGVkUmFuZ2UoKTtpZih0aGlzLmluUHJvZ3Jlc3N8fHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlU2V0Rm9jdXMiLGUpLCFyKXJldHVybjtjb25zdCBpPXRoaXMuaGlnaGxpZ2h0LmdldEZvY3VzKCk7aS5jbGVhcigpLHIuc2V0SGlnaGxpZ2h0KGUp'@; put 'LHRoaXMuaW5Qcm9ncmVzc3x8dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVIaWdobGlnaHRTZXQiKSx0aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3IoSFksci5oaWdobGlnaHQpJiZpLmFkZChyLmhpZ2hsaWdodCkuY29tbWl0KCkuc3luY1dpdGgociksdGhpcy5pblByb2dyZXNzfHwoUzAo'@; put 'dGhpcyxlTywhMCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNldEZvY3VzIixyLmhpZ2hsaWdodCkpfXRyYW5zZm9ybVN0YXJ0KGUsdCxyPSExKXtpZighdGhpcy5pc1NlbGVjdGVkKCkpcmV0dXJuO2NvbnN0e3Zpc3VhbENvb3JkczppfT1EZCh0aGlzLFpwKS50cmFuc2Zvcm1TdGFydChl'@; put 'LHQscik7dGhpcy5zZXRSYW5nZVN0YXJ0KGksdm9pZCAwLCExLGkpfXRyYW5zZm9ybUVuZChlLHQpe2lmKCF0aGlzLmlzU2VsZWN0ZWQoKSlyZXR1cm47Y29uc3R7dmlzdWFsQ29vcmRzOnIsc2VsZWN0aW9uTGF5ZXI6aX09RGQodGhpcyxacCkudHJhbnNmb3JtRW5kKGUsdCk7dGhpcy5zZXRS'@; put 'YW5nZUVuZChyLGkpfXRyYW5zZm9ybUZvY3VzKGUsdCl7aWYoIXRoaXMuaXNTZWxlY3RlZCgpKXJldHVybjtjb25zdHtzZWxlY3Rpb25MYXllcjpyLHZpc3VhbENvb3JkczppfT1EZCh0aGlzLHVUKS50cmFuc2Zvcm1TdGFydChlLHQpO3RoaXMuc2V0UmFuZ2VGb2N1cyhpLm5vcm1hbGl6ZSgp'@; put 'LHIpfXNoaWZ0Um93cyhlLHQpe2lmKCF0aGlzLmlzU2VsZWN0ZWQoKSlyZXR1cm47Y29uc3Qgcj10aGlzLmdldEFjdGl2ZVNlbGVjdGVkUmFuZ2UoKTtpZih0aGlzLmlzU2VsZWN0ZWRCeUNvcm5lcigpKXRoaXMuc2VsZWN0QWxsKCEwLCEwLHtkaXNhYmxlSGVhZGVyc0hpZ2hsaWdodDohMH0p'@; put 'O2Vsc2UgaWYociYmKHRoaXMuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fChyLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKS5yb3c/PzApPj1lKSl7Y29uc3R7ZnJvbTppLHRvOm8saGlnaGxpZ2h0OmF9PXIsbD10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksdT10aGlzLmlzU2VsZWN0'@; put 'ZWRCeVJvd0hlYWRlcigpLGc9dGhpcy5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSxFPWc/LTE6MCxPPWc/MDp0LFo9aS5yb3c9PT1vLnJvdyxlZT1IZT0+V1JlKHRoaXMudGFibGVQcm9wcy5yb3dJbmRleE1hcHBlcixIZSxaKTt0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKS5wb3AoKTtjb25z'@; put 'dCB2ZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhlZShWcygoaS5yb3c/PzApK08sRSxsLTEpKSxpLmNvbD8/MCksTWU9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoZWUoVnMoKG8ucm93Pz8wKSt0LEUsbC0xKSksby5jb2w/PzApO3RoaXMubWFya1NvdXJjZSgi'@; put 'c2hpZnQiKSwoYS5yb3c/PzApPj1lP3RoaXMuc2V0UmFuZ2VTdGFydE9ubHkodmUsITAsdGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoZWUoVnMoKGEucm93Pz8wKSt0LDAsbC0xKSksYS5jb2w/PzApKTp0aGlzLnNldFJhbmdlU3RhcnRPbmx5KHZlLCEwKSx1JiZ0aGlzLnNlbGVj'@; put 'dGVkQnlSb3dIZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSxnJiZ0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNldFJhbmdlRW5kKE1lKSx0aGlzLm1hcmtFbmRTb3VyY2UoKX19c2hpZnRDb2x1bW5zKGUsdCl7aWYoIXRo'@; put 'aXMuaXNTZWxlY3RlZCgpKXJldHVybjtjb25zdCByPXRoaXMuZ2V0QWN0aXZlU2VsZWN0ZWRSYW5nZSgpO2lmKHRoaXMuaXNTZWxlY3RlZEJ5Q29ybmVyKCkpdGhpcy5zZWxlY3RBbGwoITAsITAse2Rpc2FibGVIZWFkZXJzSGlnaGxpZ2h0OiEwfSk7ZWxzZSBpZihyJiYodGhpcy5pc1NlbGVj'@; put 'dGVkQnlSb3dIZWFkZXIoKXx8KHIuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLmNvbD8/MCk+PWUpKXtjb25zdHtmcm9tOmksdG86byxoaWdobGlnaHQ6YX09cixsPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKSx1PXRoaXMuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCksZz10aGlzLmlzU2Vs'@; put 'ZWN0ZWRCeUNvbHVtbkhlYWRlcigpLEU9dT8tMTowLE89dT8wOnQsWj1pLmNvbD09PW8uY29sLGVlPUhlPT5XUmUodGhpcy50YWJsZVByb3BzLmNvbHVtbkluZGV4TWFwcGVyLEhlLFopO3RoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLnBvcCgpO2NvbnN0IHZlPXRoaXMudGFibGVQcm9wcy5jcmVh'@; put 'dGVDZWxsQ29vcmRzKGkucm93Pz8wLGVlKFZzKChpLmNvbD8/MCkrTyxFLGwtMSkpKSxNZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhvLnJvdz8/MCxlZShWcygoby5jb2w/PzApK3QsRSxsLTEpKSk7dGhpcy5tYXJrU291cmNlKCJzaGlmdCIpLChhLmNvbD8/MCk+PWU/dGhp'@; put 'cy5zZXRSYW5nZVN0YXJ0T25seSh2ZSwhMCx0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhhLnJvdz8/MCxlZShWcygoYS5jb2w/PzApK3QsMCxsLTEpKSkpOnRoaXMuc2V0UmFuZ2VTdGFydE9ubHkodmUsITApLHUmJnRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQodGhpcy5n'@; put 'ZXRMYXllckxldmVsKCkpLGcmJnRoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLHRoaXMuc2V0UmFuZ2VFbmQoTWUpLHRoaXMubWFya0VuZFNvdXJjZSgpfX1nZXRMYXllckxldmVsKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRSYW5nZS5zaXplKCkt'@; put 'MX1pc1NlbGVjdGVkKCl7cmV0dXJuIXRoaXMuc2VsZWN0ZWRSYW5nZS5pc0VtcHR5KCl9aXNNdWx0aXBsZShlPXRoaXMuZ2V0QWN0aXZlU2VsZWN0ZWRSYW5nZSgpKXtpZighdGhpcy5pc1NlbGVjdGVkKCl8fCFlKXJldHVybiExO2NvbnN0IHQ9VmYoIWUuaXNTaW5nbGUoKSk7cmV0dXJuIHRo'@; put 'aXMucnVuTG9jYWxIb29rcygiYWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIix0KSx0LnZhbHVlfWlzRm9jdXNTZWxlY3Rpb25DaGFuZ2VkKCl7cmV0dXJuIHRoaXMuaXNTZWxlY3RlZCgpJiZEZCh0aGlzLGVPKX1pc1NlbGVjdGVkQnlSb3dIZWFkZXIoZT10aGlzLmdldExheWVyTGV2ZWwoKSl7'@; put 'cmV0dXJuIXRoaXMuaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJigtMT09PWU/dGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLnNpemU+MDp0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuaGFzKGUpKX1pc0VudGlyZVJvd1NlbGVjdGVkKGU9dGhpcy5nZXRMYXllckxldmVsKCkpe2NvbnN0IHQ9aT0+e2Nv'@; put 'bnN0e2NvbDpvfT1pLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxhPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd0hlYWRlcnMoKSxsPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKTtyZXR1cm4oYT4wJiYobz8/MCk8MHx8MD09PWEpJiZpLmdldFdpZHRoKCk9PT1sfTtpZigtMT09PWUpcmV0'@; put 'dXJuIEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJhbmdlKS5zb21lKGk9PnQoaSkpO2NvbnN0IHI9dGhpcy5zZWxlY3RlZFJhbmdlLnBlZWtCeUluZGV4KGUpO3JldHVybiEhciYmdChyKX1pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoZT10aGlzLmdldExheWVyTGV2ZWwoKSl7cmV0dXJuIXRo'@; put 'aXMuaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJigtMT09PWU/dGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLnNpemU+MDp0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuaGFzKGUpKX1pc0VudGlyZUNvbHVtblNlbGVjdGVkKGU9dGhpcy5nZXRMYXllckxldmVsKCkpe2NvbnN0IHQ9aT0+e2Nv'@; put 'bnN0e3JvdzpvfT1pLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxhPXRoaXMudGFibGVQcm9wcy5jb3VudENvbEhlYWRlcnMoKSxsPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKTtyZXR1cm4oYT4wJiYobz8/MCk8MHx8MD09PWEpJiZpLmdldEhlaWdodCgpPT09bH07aWYoLTE9PT1lKXJl'@; put 'dHVybiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSYW5nZSkuc29tZShpPT50KGkpKTtjb25zdCByPXRoaXMuc2VsZWN0ZWRSYW5nZS5wZWVrQnlJbmRleChlKTtyZXR1cm4hIXImJnQocil9aXNTZWxlY3RlZEJ5QW55SGVhZGVyKCl7cmV0dXJuIHRoaXMuaXNTZWxlY3RlZEJ5Um93SGVhZGVy'@; put 'KC0xKXx8dGhpcy5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoLTEpfHx0aGlzLmlzU2VsZWN0ZWRCeUNvcm5lcigpfWlzU2VsZWN0ZWRCeUNvcm5lcigpe3JldHVybiB0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuaGFzKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSYmdGhpcy5zZWxlY3RlZEJ5'@; put 'Um93SGVhZGVyLmhhcyh0aGlzLmdldExheWVyTGV2ZWwoKSl9aW5JblNlbGVjdGlvbihlKXtyZXR1cm4gdGhpcy5zZWxlY3RlZFJhbmdlLmluY2x1ZGVzKGUpfWlzQ2VsbENvcm5lclZpc2libGUoKXtyZXR1cm4gdGhpcy5zZXR0aW5ncy5maWxsSGFuZGxlJiYhdGhpcy50YWJsZVByb3BzLmlz'@; put 'RWRpdG9yT3BlbmVkKCkmJiF0aGlzLmlzTXVsdGlwbGUoKX1pc0NlbGxWaXNpYmxlKGUpe2NvbnN0IHQ9dGhpcy50YWJsZVByb3BzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhlKTtyZXR1cm4gbnVsbCE9PXQucm93JiZudWxsIT09dC5jb2x9aXNBcmVhQ29ybmVyVmlzaWJsZShlKXtyZXR1'@; put 'cm4oIU51bWJlci5pc0ludGVnZXIoZSl8fGU9PT10aGlzLmdldExheWVyTGV2ZWwoKSkmJnRoaXMuc2V0dGluZ3MuZmlsbEhhbmRsZSYmIXRoaXMudGFibGVQcm9wcy5pc0VkaXRvck9wZW5lZCgpJiZ0aGlzLmlzTXVsdGlwbGUoKX1jbGVhcigpe3RoaXMuc2VsZWN0ZWRSYW5nZS5jbGVhcigp'@; put 'LHRoaXMuaGlnaGxpZ2h0LmNsZWFyKCl9ZGVzZWxlY3QoKXt0aGlzLmlzU2VsZWN0ZWQoKSYmKHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmNsZWFyKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckRlc2VsZWN0IikpfXNlbGVjdEFsbChlPSExLHQ9ITEscj17Zm9jdXNQb3NpdGlvbjohMSxk'@; put 'aXNhYmxlSGVhZGVyc0hpZ2hsaWdodDohMX0pe2NvbnN0IGk9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLG89dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLGE9dGhpcy50YWJsZVByb3BzLmNvdW50Um93SGVhZGVycygpLGw9dGhpcy50YWJsZVByb3BzLmNvdW50Q29sSGVhZGVycygp'@; put 'LHU9dD8tbDowLGc9ZT8tYTowO2lmKDA9PT11JiYwPT09ZyYmKDA9PT1pfHwwPT09bykpcmV0dXJuO2xldCBFPXRoaXMuZ2V0QWN0aXZlU2VsZWN0ZWRSYW5nZSgpPy5oaWdobGlnaHQ7Y29uc3R7Zm9jdXNQb3NpdGlvbjpPLGRpc2FibGVIZWFkZXJzSGlnaGxpZ2h0Olp9PXI7bmRlKE8pJiYo'@; put 'RT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhWcyhPLnJvdyx1LGktMSksVnMoTy5jb2wsZyxvLTEpKSk7Y29uc3QgZWU9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHModSxnKSx2ZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhpLTEsby0xKTt0aGlz'@; put 'LmNsZWFyKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZWxlY3RBbGwiLGVlLHZlLEUpLHRoaXMuc2V0UmFuZ2VTdGFydE9ubHkoZWUsdm9pZCAwLEUpLFMwKHRoaXMsQTcsWj8/ITEpLGc8MCYmdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2ZWwoKSks'@; put 'dTwwJiZ0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNldFJhbmdlRW5kKHZlKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyU2VsZWN0QWxsIixlZSx2ZSxFKSx0aGlzLmZpbmlzaCgpfXNlbGVjdENlbGxzKGUpe2NvbnN0IHQ9Y1Qo'@; put 'ZSk7aWYoMT09PXQpcmV0dXJuITE7MD09PXQmJkpyKHljYFVuc3VwcG9ydGVkIGZvcm1hdCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlcyB3YXMgcGFzc2VkLiBUbyBzZWxlY3QgY2VsbHMgcGFzc1x4MjAKICAgICAgICB0aGUgY29vcmRpbmF0ZXMgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIChbW3Jv'@; put 'd1N0YXJ0LCBjb2x1bW5TdGFydC9jb2x1bW5Qcm9wU3RhcnQsIHJvd0VuZCxceDIwCiAgICAgICAgY29sdW1uRW5kL2NvbHVtblByb3BFbmRdXSkgb3IgYXMgYW4gYXJyYXkgb2YgQ2VsbFJhbmdlIG9iamVjdHMuYCk7Y29uc3Qgcj1KTCh0LHtjcmVhdGVDZWxsQ29vcmRzOiguLi5sKT0+dGhp'@; put 'cy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLi4ubCksY3JlYXRlQ2VsbFJhbmdlOiguLi5sKT0+dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxSYW5nZSguLi5sKSxwcm9wVG9Db2w6bD0+dGhpcy50YWJsZVByb3BzLnByb3BUb0NvbChsKSxrZWVwRGlyZWN0aW9uOiEwfSksaT10aGlz'@; put 'LnNldHRpbmdzLm5hdmlnYWJsZUhlYWRlcnMsbz17Y291bnRSb3dzOnRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKSxjb3VudENvbHM6dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLGNvdW50Um93SGVhZGVyczppP3RoaXMudGFibGVQcm9wcy5jb3VudFJvd0hlYWRlcnMoKTowLGNvdW50'@; put 'Q29sSGVhZGVyczppP3RoaXMudGFibGVQcm9wcy5jb3VudENvbEhlYWRlcnMoKTowfSxhPSFlLnNvbWUobD0+e2NvbnN0IHU9cihsKSxnPXUuaXNWYWxpZChvKTtyZXR1cm4hKGcmJiF1LmNvbnRhaW5zSGVhZGVycygpfHxnJiZ1LmNvbnRhaW5zSGVhZGVycygpJiZ1LmlzU2luZ2xlSGVhZGVy'@; put 'KCkpfSk7cmV0dXJuIGEmJih0aGlzLmNsZWFyKCksdGhpcy5zZXRFeHBlY3RlZExheWVycyhlLmxlbmd0aCksZS5mb3JFYWNoKGw9Pntjb25zdHtmcm9tOnUsdG86Z309cihsKTt0aGlzLnNldFJhbmdlU3RhcnRPbmx5KHUuY2xvbmUoKSwhMSksdGhpcy5zZXRSYW5nZUVuZChnLmNsb25lKCkp'@; put 'fSksdGhpcy5maW5pc2goKSksYX1zZWxlY3RDb2x1bW5zKGUsdD1lLHI9MCl7Y29uc3QgaT0ic3RyaW5nIj09dHlwZW9mIGU/dGhpcy50YWJsZVByb3BzLnByb3BUb0NvbChlKTplLG89InN0cmluZyI9PXR5cGVvZiB0P3RoaXMudGFibGVQcm9wcy5wcm9wVG9Db2wodCk6dCxhPXRoaXMudGFi'@; put 'bGVQcm9wcy5jb3VudFJvd3MoKSxsPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKSx1PXRoaXMudGFibGVQcm9wcy5jb3VudENvbEhlYWRlcnMoKSxnPTA9PT11PzA6LXUsRT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhnLGkpLE89dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNl'@; put 'bGxDb29yZHMoYS0xLG8pLFo9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxSYW5nZShFLEUsTykuaXNWYWxpZCh7Y291bnRSb3dzOmEsY291bnRDb2xzOmwsY291bnRSb3dIZWFkZXJzOjAsY291bnRDb2xIZWFkZXJzOnV9KTtpZihaKXtsZXQgZWU9MCx2ZT0wO25kZShyKT8oZWU9VnMoci5y'@; put 'b3c/PzAsZyxhLTEpLHZlPVZzKHIuY29sPz8wLE1hdGgubWluKGksbyksTWF0aC5tYXgoaSxvKSkpOihlZT1WcygibnVtYmVyIj09dHlwZW9mIHI/cjowLGcsYS0xKSx2ZT1pKTtjb25zdCBNZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhlZSx2ZSksSGU9MD09PXU/MDpWcyhN'@; put 'ZS5yb3c/PzAsZywtMSksV2U9YS0xLGF0PXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKEhlLGkpLEN0PXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKFdlLG8pO3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlU2VsZWN0Q29sdW1ucyIsYXQsQ3QsTWUpLHRoaXMuc2V0'@; put 'UmFuZ2VTdGFydE9ubHkoYXQsdm9pZCAwLE1lKSx0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNldFJhbmdlRW5kKEN0KSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyU2VsZWN0Q29sdW1ucyIsYXQsQ3QsTWUpLHRoaXMuZmluaXNo'@; put 'KCl9cmV0dXJuIFp9c2VsZWN0Um93cyhlLHQ9ZSxyPTApe2NvbnN0IGk9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLG89dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLGE9dGhpcy50YWJsZVByb3BzLmNvdW50Um93SGVhZGVycygpLGw9MD09PWE/MDotYSx1PXRoaXMudGFibGVQcm9w'@; put 'cy5jcmVhdGVDZWxsQ29vcmRzKGUsbCksZz10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jkcyh0LG8tMSksRT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdlKHUsdSxnKS5pc1ZhbGlkKHtjb3VudFJvd3M6aSxjb3VudENvbHM6byxjb3VudFJvd0hlYWRlcnM6YSxjb3VudENv'@; put 'bEhlYWRlcnM6MH0pO2lmKEUpe2xldCBPPTAsWj0wO25kZShyKT8oTz1WcyhyLnJvdz8/MCxNYXRoLm1pbihlLHQpLE1hdGgubWF4KGUsdCkpLFo9VnMoci5jb2w/PzAsbCxvLTEpKTooTz1lLFo9VnMoIm51bWJlciI9PXR5cGVvZiByP3I6MCxsLG8tMSkpO2NvbnN0IGVlPXRoaXMudGFibGVQ'@; put 'cm9wcy5jcmVhdGVDZWxsQ29vcmRzKE8sWiksdmU9MD09PWE/MDpWcyhlZS5jb2w/PzAsbCwtMSksTWU9by0xLEhlPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGUsdmUpLFdlPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHQsTWUpO3RoaXMucnVuTG9jYWxIb29r'@; put 'cygiYmVmb3JlU2VsZWN0Um93cyIsSGUsV2UsZWUpLHRoaXMuc2V0UmFuZ2VTdGFydE9ubHkoSGUsdm9pZCAwLGVlKSx0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNldFJhbmdlRW5kKFdlKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVy'@; put 'U2VsZWN0Um93cyIsSGUsV2UsZWUpLHRoaXMuZmluaXNoKCl9cmV0dXJuIEV9aW1wb3J0U2VsZWN0aW9uKHtyYW5nZXM6ZSxhY3RpdmVSYW5nZTp0LGFjdGl2ZVNlbGVjdGlvbkxheWVyOnIsc2VsZWN0ZWRCeVJvd0hlYWRlcjppLHNlbGVjdGVkQnlDb2x1bW5IZWFkZXI6byxkaXNhYmxlSGVh'@; put 'ZGVyc0hpZ2hsaWdodDphfSl7MCE9PWUubGVuZ3RoJiYodGhpcy5zZWxlY3RlZFJhbmdlLmNsZWFyKCksdGhpcy5oaWdobGlnaHQuY2xlYXIoKSx0aGlzLmluUHJvZ3Jlc3M9ITEsUzAodGhpcyxBNyxhKSx0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXI9bmV3IFNldChpKSx0aGlzLnNlbGVjdGVk'@; put 'QnlDb2x1bW5IZWFkZXI9bmV3IFNldChvKSx0aGlzLnNldEFjdGl2ZVNlbGVjdGlvbkxheWVySW5kZXgoMCksZS5mb3JFYWNoKChsLHUpPT57dGhpcy5zZWxlY3RlZFJhbmdlLnB1c2gobCksdGhpcy5hcHBseUFuZENvbW1pdChsLHUpfSksdGhpcy5zZXRSYW5nZUZvY3VzKHQuaGlnaGxpZ2h0'@; put 'LHIpLFMwKHRoaXMsQTcsITEpLHRoaXMuaW5Qcm9ncmVzcz0hMSl9ZXhwb3J0U2VsZWN0aW9uKCl7cmV0dXJue3JhbmdlczpBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSYW5nZSkubWFwKGU9PmUuY2xvbmUoKSksYWN0aXZlUmFuZ2U6dGhpcy5nZXRBY3RpdmVTZWxlY3RlZFJhbmdlKCksYWN0'@; put 'aXZlU2VsZWN0aW9uTGF5ZXI6dGhpcy5nZXRBY3RpdmVTZWxlY3Rpb25MYXllckluZGV4KCksc2VsZWN0ZWRCeVJvd0hlYWRlcjpBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlciksc2VsZWN0ZWRCeUNvbHVtbkhlYWRlcjpBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRCeUNvbHVt'@; put 'bkhlYWRlciksZGlzYWJsZUhlYWRlcnNIaWdobGlnaHQ6RGQodGhpcyxBNyl9fXJlZnJlc2goKXtpZighdGhpcy5pc1NlbGVjdGVkKCkpcmV0dXJuO2NvbnN0IGU9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLHQ9dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpO2lmKDA9PT1lfHwwPT09'@; put 'dClyZXR1cm4gdm9pZCB0aGlzLmRlc2VsZWN0KCk7Y29uc3Qgcj10aGlzLnNlbGVjdGVkUmFuZ2UucmFuZ2VzLm1hcChsPT5sLmNsb25lKCkpOyJ1bmtub3duIj09PXRoaXMuZ2V0U2VsZWN0aW9uU291cmNlKCkmJnRoaXMubWFya1NvdXJjZSgicmVmcmVzaCIpO2NvbnN0IG89bmV3IFNldCh0'@; put 'aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIpLGE9bmV3IFNldCh0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIpO3RoaXMuY2xlYXIoKSx0aGlzLnNldEV4cGVjdGVkTGF5ZXJzKHIubGVuZ3RoKSxyLmZvckVhY2gobD0+e2NvbnN0e2Zyb206dSx0bzpnLGhpZ2hsaWdodDpFfT1sLE89ZS0xLFo9'@; put 'dC0xO0UuYXNzaWduKHtyb3c6VnMoRS5yb3c/PzAsdGhpcy5zZXR0aW5ncy5uYXZpZ2FibGVIZWFkZXJzPy0xLzA6MCxPKSxjb2w6VnMoRS5jb2w/PzAsdGhpcy5zZXR0aW5ncy5uYXZpZ2FibGVIZWFkZXJzPy0xLzA6MCxaKX0pLHUuYXNzaWduKHtyb3c6VnModS5yb3c/PzAsLTEvMCxPKSxj'@; put 'b2w6VnModS5jb2w/PzAsLTEvMCxaKX0pLGcuYXNzaWduKHtyb3c6VnMoZy5yb3c/PzAsLTEvMCxPKSxjb2w6VnMoZy5jb2w/PzAsLTEvMCxaKX0pLHRoaXMuc2V0UmFuZ2VTdGFydE9ubHkodSwhMCxFKSx0aGlzLnNldFJhbmdlRW5kKGcpfSksdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyPW8s'@; put 'dGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyPWEsdGhpcy5maW5pc2goKSx0aGlzLm1hcmtFbmRTb3VyY2UoKX1jb21taXQoKXtpZih0aGlzLmhpZ2hsaWdodC5nZXRDdXN0b21TZWxlY3Rpb25zKCkuZm9yRWFjaChpPT57aS5jb21taXQoKX0pLCF0aGlzLmlzU2VsZWN0ZWQoKSlyZXR1cm47'@; put 'Y29uc3QgdD10aGlzLmdldExheWVyTGV2ZWwoKSxyPXRoaXMuZ2V0QWN0aXZlU2VsZWN0ZWRSYW5nZSgpO3ImJnRoaXMuaGlnaGxpZ2h0LmlzRW5hYmxlZEZvcihIWSxyLmhpZ2hsaWdodCkmJnRoaXMuaGlnaGxpZ2h0LmdldEZvY3VzKCkuY29tbWl0KCkuc3luY1dpdGgocik7Zm9yKGxldCBp'@; put 'PTA7aTx0aGlzLnNlbGVjdGVkUmFuZ2Uuc2l6ZSgpO2krPTEpe3RoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoaSk7Y29uc3Qgbz10aGlzLmhpZ2hsaWdodC5jcmVhdGVBcmVhKCksYT10aGlzLmhpZ2hsaWdodC5jcmVhdGVMYXllcmVkQXJlYSgpLGw9dGhpcy5oaWdobGlnaHQuY3JlYXRl'@; put 'Um93SGVhZGVyKCksdT10aGlzLmhpZ2hsaWdodC5jcmVhdGVDb2x1bW5IZWFkZXIoKSxnPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUFjdGl2ZVJvd0hlYWRlcigpLEU9dGhpcy5oaWdobGlnaHQuY3JlYXRlQWN0aXZlQ29sdW1uSGVhZGVyKCksTz10aGlzLmhpZ2hsaWdodC5jcmVhdGVBY3RpdmVD'@; put 'b3JuZXJIZWFkZXIoKSxaPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZVJvd0hpZ2hsaWdodCgpLGVlPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUNvbHVtbkhpZ2hsaWdodCgpO28/LmNvbW1pdCgpLGE/LmNvbW1pdCgpLGw/LmNvbW1pdCgpLHU/LmNvbW1pdCgpLGc/LmNvbW1pdCgpLEU/LmNvbW1pdCgp'@; put 'LE8/LmNvbW1pdCgpLFo/LmNvbW1pdCgpLGVlPy5jb21taXQoKX10aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKHQpfWNvbnN0cnVjdG9yKGUsdCl7KGZ1bmN0aW9uIHlSdChuLGUpe1VSZShuLGUpLGUuYWRkKG4pfSkodGhpcyxZUmUpLEF3KHRoaXMsWnAse3dyaXRhYmxlOiEwLHZhbHVl'@; put 'OnZvaWQgMH0pLEF3KHRoaXMsdVQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEF3KHRoaXMsZU8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEF3KHRoaXMsQTcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEF3KHRoaXMsdE8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0p'@; put 'LEF3KHRoaXMsZFQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEF3KHRoaXMsbk8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLnNlbGVjdGVkUmFuZ2U9bmV3IHNSdCgocixpLG8pPT50aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdl'@; put 'KHIsaSxvKSksdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyPW5ldyBTZXQsdGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyPW5ldyBTZXQsUzAodGhpcyxlTywhMSksUzAodGhpcyxBNywhMSksUzAodGhpcyx0TywidW5rbm93biIpLFMwKHRoaXMsZFQsLTEpLFMwKHRoaXMsbk8sMCksdGhpcy5z'@; put 'ZXR0aW5ncz1lLHRoaXMudGFibGVQcm9wcz10LHRoaXMuaGlnaGxpZ2h0PW5ldyBhUnQoe2hlYWRlckNsYXNzTmFtZTplLmN1cnJlbnRIZWFkZXJDbGFzc05hbWUsYWN0aXZlSGVhZGVyQ2xhc3NOYW1lOmUuYWN0aXZlSGVhZGVyQ2xhc3NOYW1lLHJvd0NsYXNzTmFtZTplLmN1cnJlbnRSb3dD'@; put 'bGFzc05hbWUsY29sdW1uQ2xhc3NOYW1lOmUuY3VycmVudENvbENsYXNzTmFtZSxjZWxsQXR0cmlidXRlczpbWyJhcmlhLXNlbGVjdGVkIiwidHJ1ZSJdXSxyb3dJbmRleE1hcHBlcjp0aGlzLnRhYmxlUHJvcHMucm93SW5kZXhNYXBwZXIsY29sdW1uSW5kZXhNYXBwZXI6dGhpcy50YWJsZVBy'@; put 'b3BzLmNvbHVtbkluZGV4TWFwcGVyLGRpc2FibGVkQ2VsbFNlbGVjdGlvbjoocixpKT0+dGhpcy50YWJsZVByb3BzLmlzRGlzYWJsZWRDZWxsU2VsZWN0aW9uKHIsaSksY2VsbENvcm5lclZpc2libGU6KCk9PnRoaXMuaXNDZWxsQ29ybmVyVmlzaWJsZSgpLGFyZWFDb3JuZXJWaXNpYmxlOnI9'@; put 'PnRoaXMuaXNBcmVhQ29ybmVyVmlzaWJsZShyKSx2aXN1YWxUb1JlbmRlcmFibGVDb29yZHM6cj0+dGhpcy50YWJsZVByb3BzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhyKSxyZW5kZXJhYmxlVG9WaXN1YWxDb29yZHM6cj0+dGhpcy50YWJsZVByb3BzLnJlbmRlcmFibGVUb1Zpc3VhbENv'@; put 'b3JkcyhyKSxjcmVhdGVDZWxsQ29vcmRzOihyLGkpPT50aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhyLGkpLGNyZWF0ZUNlbGxSYW5nZToocixpLG8pPT50aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdlKHIsaSxvKX0pLFMwKHRoaXMsWnAsbmV3IHVSdCh0aGlzLnNlbGVj'@; put 'dGVkUmFuZ2Usey4uLnRoaXMudGFibGVQcm9wcyxuYXZpZ2FibGVIZWFkZXJzOigpPT4hIWUubmF2aWdhYmxlSGVhZGVycyxmaXhlZFJvd3NCb3R0b206KCk9Pk51bWJlcihlLmZpeGVkUm93c0JvdHRvbSksbWluU3BhcmVSb3dzOigpPT5OdW1iZXIoZS5taW5TcGFyZVJvd3MpLG1pblNwYXJl'@; put 'Q29sczooKT0+TnVtYmVyKGUubWluU3BhcmVDb2xzKSxhdXRvV3JhcFJvdzooKT0+ISFlLmF1dG9XcmFwUm93LGF1dG9XcmFwQ29sOigpPT4hIWUuYXV0b1dyYXBDb2x9KSksUzAodGhpcyx1VCxuZXcgZFJ0KHRoaXMuc2VsZWN0ZWRSYW5nZSx7Li4udGhpcy50YWJsZVByb3BzLG5hdmlnYWJs'@; put 'ZUhlYWRlcnM6KCk9PiEhZS5uYXZpZ2FibGVIZWFkZXJzLGZpeGVkUm93c0JvdHRvbTooKT0+MCxtaW5TcGFyZVJvd3M6KCk9PjAsbWluU3BhcmVDb2xzOigpPT4wLGF1dG9XcmFwUm93OigpPT4hMCxhdXRvV3JhcENvbDooKT0+ITB9KSksRGQodGhpcyxacCkuYWRkTG9jYWxIb29rKCJiZWZv'@; put 'cmVUcmFuc2Zvcm1TdGFydCIsKC4uLnIpPT50aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZU1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwuLi5yKSksRGQodGhpcyxacCkuYWRkTG9jYWxIb29rKCJhZnRlclRyYW5zZm9ybVN0YXJ0IiwoLi4ucik9PnRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJNb2Rp'@; put 'ZnlUcmFuc2Zvcm1TdGFydCIsLi4ucikpLERkKHRoaXMsWnApLmFkZExvY2FsSG9vaygiYmVmb3JlVHJhbnNmb3JtRW5kIiwoLi4ucik9PnRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtRW5kIiwuLi5yKSksRGQodGhpcyxacCkuYWRkTG9jYWxIb29rKCJhZnRlclRy'@; put 'YW5zZm9ybUVuZCIsKC4uLnIpPT50aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIiwuLi5yKSksRGQodGhpcyxacCkuYWRkTG9jYWxIb29rKCJpbnNlcnRSb3dSZXF1aXJlIiwoLi4ucik9PnRoaXMucnVuTG9jYWxIb29rcygiaW5zZXJ0Um93UmVxdWlyZSIsLi4u'@; put 'cikpLERkKHRoaXMsWnApLmFkZExvY2FsSG9vaygiaW5zZXJ0Q29sUmVxdWlyZSIsKC4uLnIpPT50aGlzLnJ1bkxvY2FsSG9va3MoImluc2VydENvbFJlcXVpcmUiLC4uLnIpKSxEZCh0aGlzLFpwKS5hZGRMb2NhbEhvb2soImJlZm9yZVJvd1dyYXAiLCguLi5yKT0+dGhpcy5ydW5Mb2NhbEhv'@; put 'b2tzKCJiZWZvcmVSb3dXcmFwIiwuLi5yKSksRGQodGhpcyxacCkuYWRkTG9jYWxIb29rKCJiZWZvcmVDb2x1bW5XcmFwIiwoLi4ucik9PnRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlQ29sdW1uV3JhcCIsLi4ucikpLERkKHRoaXMsdVQpLmFkZExvY2FsSG9vaygiYmVmb3JlVHJhbnNmb3Jt'@; put 'U3RhcnQiLCguLi5yKT0+dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVNb2RpZnlUcmFuc2Zvcm1Gb2N1cyIsLi4ucikpLERkKHRoaXMsdVQpLmFkZExvY2FsSG9vaygiYWZ0ZXJUcmFuc2Zvcm1TdGFydCIsKC4uLnIpPT50aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyTW9kaWZ5VHJhbnNmb3Jt'@; put 'Rm9jdXMiLC4uLnIpKX19ZnVuY3Rpb24gYlJ0KG4sZSx0LHIsaSxvLGEsbCx1LGcpe2lmKCFuLmlzU2luZ2xlSGVhZGVyKCkpe2NvbnN0IFo9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgobi5mcm9tLnJvdz8/MCwwKSwtMSksZWU9dGhpcy50YWJsZVByb3BzLmNy'@; put 'ZWF0ZUNlbGxDb29yZHMobi50by5yb3c/PzAsLTEpLHZlPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC0xLE1hdGgubWF4KG4uZnJvbS5jb2w/PzAsMCkpLE1lPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC0xLG4udG8uY29sPz8wKTsic2luZ2xlIj09PXRoaXMu'@; put 'c2V0dGluZ3Muc2VsZWN0aW9uTW9kZT8ocj8uYWRkKFopLmNvbW1pdCgpLGk/LmFkZCh2ZSkuY29tbWl0KCksdT8uYWRkKFopLmNvbW1pdCgpLGc/LmFkZCh2ZSkuY29tbWl0KCkpOihyPy5hZGQoWikuYWRkKGVlKS5jb21taXQoKSxpPy5hZGQodmUpLmFkZChNZSkuY29tbWl0KCksdT8uYWRk'@; put 'KFopLmFkZChlZSkuY29tbWl0KCksZz8uYWRkKHZlKS5hZGQoTWUpLmNvbW1pdCgpKX1jb25zdCBFPSFEZCh0aGlzLEE3KSYmdGhpcy5pc0VudGlyZVJvd1NlbGVjdGVkKCkmJih0PjAmJnQ9PT1uLmdldFdpZHRoKCl8fDA9PT10JiZ0aGlzLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpKSxPPSFE'@; put 'ZCh0aGlzLEE3KSYmdGhpcy5pc0VudGlyZUNvbHVtblNlbGVjdGVkKCkmJihlPjAmJmU9PT1uLmdldEhlaWdodCgpfHwwPT09ZSYmdGhpcy5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSk7RSYmbz8uYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KG4uZnJv'@; put 'bS5yb3c/PzAsMCksTWF0aC5taW4oLXRoaXMudGFibGVQcm9wcy5jb3VudFJvd0hlYWRlcnMoKSwtMSkpKS5hZGQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgobi50by5yb3c/PzAsMCksLTEpKS5jb21taXQoKSxPJiZhPy5hZGQodGhpcy50YWJsZVByb3BzLmNy'@; put 'ZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4oLXRoaXMudGFibGVQcm9wcy5jb3VudENvbEhlYWRlcnMoKSwtMSksTWF0aC5tYXgobi5mcm9tLmNvbD8/MCwwKSkpLmFkZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcygtMSxNYXRoLm1heChuLnRvLmNvbD8/MCwwKSkpLmNvbW1pdCgp'@; put 'LEUmJk8mJmw/LmFkZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcygtdGhpcy50YWJsZVByb3BzLmNvdW50Q29sSGVhZGVycygpLC10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dIZWFkZXJzKCkpKS5hZGQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLTEsLTEpKS5j'@; put 'b21taXQoKX1ZbChaUmUsX2gpO2NvbnN0IHdSdD1aUmUse3JlZ2lzdGVyOkNSdCxnZXRJdGVtOlNSdCxoYXNJdGVtOkdSZSxnZXROYW1lczpFUnR9PXpwKCJjZWxsVHlwZXMiKTtmdW5jdGlvbiByZGUobil7cmV0dXJuIEdSZShuKXx8SnIoYFlvdSBkZWNsYXJlZCBjZWxsIHR5cGUgIiR7bn0i'@; put 'IGFzIGEgc3RyaW5nIHRoYXQgaXMgbm90IG1hcHBlZCB0byBhIGtub3duIG9iamVjdC5cbiAgICAgICAgICAgICAgICAgQ2VsbCB0eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIG1hcHBlZCB0byBhbiBvYmplY3QgcmVnaXN0ZXJlZCBieVxuICAgICAgICAgICAgICAgICAiSGFu'@; put 'ZHNvbnRhYmxlLmNlbGxUeXBlcy5yZWdpc3RlckNlbGxUeXBlIiBtZXRob2RgKSxTUnQobil9ZnVuY3Rpb24gVWYobixlKXsic3RyaW5nIiE9dHlwZW9mIG4mJihuPShlPW4pLkNFTExfVFlQRSk7Y29uc3R7ZWRpdG9yOnQscmVuZGVyZXI6cix2YWxpZGF0b3I6aX09ZTt0JiZKMChuLHQpLHIm'@; put 'JkMwKG4sciksaSYmZTYobixpKSxDUnQobixlKX1mdW5jdGlvbiBZWShuLGUsdD1uKXtjb25zdCByPSJzdHJpbmciPT10eXBlb2YgZS50eXBlP3JkZShlLnR5cGUpOmUudHlwZTtpZihuLl9hdXRvbWF0aWNhbGx5QXNzaWduZWRNZXRhUHJvcHMmJmFjKGUsKG8sYSk9PntuLl9hdXRvbWF0aWNh'@; put 'bGx5QXNzaWduZWRNZXRhUHJvcHMuZGVsZXRlKGEpfSksIUNhKHIpKXJldHVybjt0PT09biYmIW4uX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcyYmKG4uX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcz1uZXcgU2V0KTtjb25zdCBpPXt9O2FjKHIsKG8sYSk9PnsoZnVuY3Rp'@; put 'b24gTVJ0KG4sZSl7cmV0dXJuIkNFTExfVFlQRSIhPT1uJiYoZS5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzPy5oYXMobil8fCFSZChlLG4pKX0pKGEsdCkmJihpW2FdPW8sbi5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzPy5hZGQoYSkpfSksWWQobixpKX1mdW5jdGlv'@; put 'biBaWShuLGUpe24oKXx8SnIoYEFzc2VydGlvbiBmYWlsZWQ6ICR7ZX1gKX1mdW5jdGlvbiByTyhuKXtyZXR1cm4gbnVsbD09bn1jb25zdCAkUmU9KCk9Pih7X2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wczp2b2lkIDAsX3VzZXJEZWZpbmVkTWV0YVByb3BzOnZvaWQgMCxhY3RpdmVI'@; put 'ZWFkZXJDbGFzc05hbWU6Imh0X19hY3RpdmVfaGlnaGxpZ2h0IixhbGxvd0VtcHR5OiEwLGFsbG93SHRtbDohMSxhbGxvd0luc2VydENvbHVtbjohMCxhbGxvd0luc2VydFJvdzohMCxhbGxvd0ludmFsaWQ6ITAsYWxsb3dSZW1vdmVDb2x1bW46ITAsYWxsb3dSZW1vdmVSb3c6ITAsYXJpYVRh'@; put 'Z3M6ITAsYXV0b0NvbHVtblNpemU6dm9pZCAwLGF1dG9Sb3dTaXplOnZvaWQgMCxhdXRvV3JhcENvbDohMSxhdXRvV3JhcFJvdzohMSxiaW5kUm93c1dpdGhIZWFkZXJzOnZvaWQgMCxjZWxsOltdLGNlbGxzOnZvaWQgMCxjaGVja2VkVGVtcGxhdGU6dm9pZCAwLGNsYXNzTmFtZTp2b2lkIDAs'@; put 'Y29sSGVhZGVyczpudWxsLGNvbGxhcHNpYmxlQ29sdW1uczp2b2lkIDAsY29sdW1uSGVhZGVySGVpZ2h0OnZvaWQgMCxjb2x1bW5zOnZvaWQgMCxjb2x1bW5Tb3J0aW5nOnZvaWQgMCxjb2x1bW5TdW1tYXJ5OnZvaWQgMCxjb2xXaWR0aHM6dm9pZCAwLGNvbW1lbnRlZENlbGxDbGFzc05hbWU6'@; put 'Imh0Q29tbWVudENlbGwiLGNvbW1lbnRzOiExLGNvbnRleHRNZW51OnZvaWQgMCxjb3B5YWJsZTohMCxjb3B5UGFzdGU6ITAsY3VycmVudENvbENsYXNzTmFtZTp2b2lkIDAsY3VycmVudEhlYWRlckNsYXNzTmFtZToiaHRfX2hpZ2hsaWdodCIsY3VycmVudFJvd0NsYXNzTmFtZTp2b2lkIDAs'@; put 'Y3VzdG9tQm9yZGVyczohMSxkYXRhOnZvaWQgMCxkYXRhUHJvdmlkZXI6dm9pZCAwLGRhdGFEb3ROb3RhdGlvbjohMCxkYXRhU2NoZW1hOnZvaWQgMCxkYXRlRm9ybWF0Ont5ZWFyOiJudW1lcmljIixtb250aDoiMi1kaWdpdCIsZGF5OiIyLWRpZ2l0In0sdGltZUZvcm1hdDp7aG91cjoiMi1k'@; put 'aWdpdCIsbWludXRlOiIyLWRpZ2l0In0sZGVmYXVsdERhdGU6dm9pZCAwLGRpc2FibGVWaXN1YWxTZWxlY3Rpb246ITEsZGlhbG9nOiExLGRyYWdUb1Njcm9sbDohMCxkcm9wZG93bk1lbnU6dm9pZCAwLGVkaXRvcjp2b2lkIDAsZW1wdHlEYXRhU3RhdGU6ITEsZW50ZXJCZWdpbnNFZGl0aW5n'@; put 'OiEwLGVudGVyQ29tbWl0czohMCxlbnRlck1vdmVzOntjb2w6MCxyb3c6MX0sZXhwb3J0RmlsZTp2b2lkIDAsZmlsbEhhbmRsZTp7YXV0b0luc2VydFJvdzohMX0sZmlsdGVyOiEwLGZpbHRlcmluZ0Nhc2VTZW5zaXRpdmU6ITEsZmlsdGVyczp2b2lkIDAsZmlsdGVyU2VsZWN0ZWRJdGVtczoh'@; put 'MCxmaXhlZENvbHVtbnNMZWZ0OjAsZml4ZWRDb2x1bW5zU3RhcnQ6MCxmaXhlZFJvd3NCb3R0b206MCxmaXhlZFJvd3NUb3A6MCxmb3JtdWxhczp2b2lkIDAsZnJhZ21lbnRTZWxlY3Rpb246ITEsaGFzaExlbmd0aDp2b2lkIDAsaGFzaFJldmVhbERlbGF5OnZvaWQgMCxoYXNoU3ltYm9sOiIq'@; put 'IixoZWFkZXJDbGFzc05hbWU6dm9pZCAwLGhlaWdodDp2b2lkIDAsaGlkZGVuQ29sdW1uczp2b2lkIDAsaGlkZGVuUm93czp2b2lkIDAsaW5pdGlhbFN0YXRlOnZvaWQgMCxpbnZhbGlkQ2VsbENsYXNzTmFtZToiaHRJbnZhbGlkIixpbWVGYXN0RWRpdDohMSxpc0VtcHR5Q29sKG4pe2xldCBl'@; put 'LHQ7Y29uc3Qgcj0hIXRoaXMuZ2V0U2V0dGluZ3MoKS5kYXRhU2NoZW1hLGk9dGhpcy5nZXRTY2hlbWEoKSxvPXRoaXMuY29sVG9Qcm9wKG4pLGE9dGhpcy5jb3VudFJvd3MoKTtmb3IoZT0wO2U8YTtlKyspaWYodD10aGlzLmdldERhdGFBdENlbGwoZSxuKSwhMT09PUFsKHQpKXtpZigib2Jq'@; put 'ZWN0Ij09dHlwZW9mIHQpe2lmKCExPT09ZzcoaVtvXSx0KSlyZXR1cm4hMTtjb250aW51ZX1pZihyJiZpW29dPT09dCljb250aW51ZTtyZXR1cm4hMX1yZXR1cm4hMH0saXNFbXB0eVJvdyhuKXtsZXQgZSx0O2NvbnN0IHI9ISF0aGlzLmdldFNldHRpbmdzKCkuZGF0YVNjaGVtYSxpPXRoaXMu'@; put 'Z2V0U2NoZW1hKCksbz10aGlzLmNvdW50Q29scygpO2ZvcihlPTA7ZTxvO2UrKylpZih0PXRoaXMuZ2V0RGF0YUF0Q2VsbChuLGUpLCExPT09QWwodCkpe2NvbnN0IGE9dGhpcy5jb2xUb1Byb3AoZSk7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtpZighMT09PWc3KGlbYV0sdCkpcmV0dXJuITE7'@; put 'Y29udGludWV9aWYociYmaVthXT09PXQpY29udGludWU7cmV0dXJuITF9cmV0dXJuITB9LGxhYmVsOnZvaWQgMCxsYW5ndWFnZToiZW4tVVMiLGxheW91dERpcmVjdGlvbjoiaW5oZXJpdCIsbGF5b3V0OnZvaWQgMCxsaWNlbnNlS2V5OnZvaWQgMCxsb2NhbGU6ImVuLVVTIixsb2FkaW5nOiEx'@; put 'LG5vdGlmaWNhdGlvbjohMSxtYW51YWxDb2x1bW5GcmVlemU6dm9pZCAwLG1hbnVhbENvbHVtbk1vdmU6dm9pZCAwLG1hbnVhbENvbHVtblJlc2l6ZTp2b2lkIDAsbWFudWFsUm93TW92ZTp2b2lkIDAsbWFudWFsUm93UmVzaXplOnZvaWQgMCxtYXhDb2xzOjEvMCxtYXhSb3dzOjEvMCxtYXhT'@; put 'ZWxlY3Rpb25zOnZvaWQgMCxtZXJnZUNlbGxzOiExLG1pbkNvbHM6MCxtaW5Sb3dIZWlnaHRzOnZvaWQgMCxtaW5Sb3dzOjAsbWluU3BhcmVDb2xzOjAsbWluU3BhcmVSb3dzOjAsbXVsdGlDb2x1bW5Tb3J0aW5nOnZvaWQgMCxuYXZpZ2FibGVIZWFkZXJzOiExLHRhYk5hdmlnYXRpb246ITAs'@; put 'bmVzdGVkSGVhZGVyczp2b2lkIDAsbmVzdGVkUm93czp2b2lkIDAsbm9Xb3JkV3JhcENsYXNzTmFtZToiaHROb1dyYXAiLG51bWVyaWNGb3JtYXQ6dm9pZCAwLG9ic2VydmVET01WaXNpYmlsaXR5OiEwLG91dHNpZGVDbGlja0Rlc2VsZWN0czohMCxwYWdpbmF0aW9uOnZvaWQgMCxwbGFjZWhv'@; put 'bGRlcjp2b2lkIDAscGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lOiJodFBsYWNlaG9sZGVyIixwcmV2ZW50T3ZlcmZsb3c6ITEscHJldmVudFdoZWVsOiExLHJlYWRPbmx5OiExLHJlYWRPbmx5Q2VsbENsYXNzTmFtZToiaHREaW1tZWQiLHJlbmRlckFsbFJvd3M6ITEscmVuZGVyQWxsQ29sdW1u'@; put 'czohMSxyZW5kZXJlcjp2b2lkIDAsdmFsdWVGb3JtYXR0ZXI6dm9pZCAwLHZhbHVlUGFyc2VyOnZvaWQgMCxyb3dIZWFkZXJzOnZvaWQgMCxyb3dIZWFkZXJXaWR0aDp2b2lkIDAscm93SGVpZ2h0czp2b2lkIDAsc2VhcmNoOiExLHNlYXJjaElucHV0OiEwLHNlbGVjdGlvbk1vZGU6Im11bHRp'@; put 'cGxlIixzZWxlY3RPcHRpb25zOnZvaWQgMCxza2lwQ29sdW1uT25QYXN0ZTohMSxza2lwUm93T25QYXN0ZTohMSxzb3J0QnlSZWxldmFuY2U6ITAsc291cmNlU29ydEZ1bmN0aW9uOnZvaWQgMCxzb3VyY2U6dm9pZCAwLHN0YXJ0Q29sczo1LHN0YXJ0Um93czo1LHN0cmV0Y2hIOiJub25lIixz'@; put 'dHJpY3Q6dm9pZCAwLHRhYmxlQ2xhc3NOYW1lOnZvaWQgMCx0ZXh0RWxsaXBzaXM6ITEsdGhlbWVOYW1lOnZvaWQgMCx0aGVtZTp2b2lkIDAsaW5qZWN0Q29yZUNzczohMCx0YWJNb3Zlczp7cm93OjAsY29sOjF9LHRpdGxlOnZvaWQgMCx0cmltRHJvcGRvd246ITAsdHJpbVJvd3M6dm9pZCAw'@; put 'LHRyaW1XaGl0ZXNwYWNlOiEwLHR5cGU6InRleHQiLHVuY2hlY2tlZFRlbXBsYXRlOnZvaWQgMCx1bmRvOiEwLHZhbGlkYXRvcjp2b2lkIDAsc291cmNlRGF0YVZhbGlkYXRvcjp2b2lkIDAsc291cmNlRGF0YVdhcm5pbmdNZXNzYWdlOnZvaWQgMCx2YWx1ZUdldHRlcjp2b2lkIDAsdmFsdWVT'@; put 'ZXR0ZXI6dm9pZCAwLHZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0OiJhdXRvIix2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDoiYXV0byIsdmlld3BvcnRDb2x1bW5SZW5kZXJpbmdUaHJlc2hvbGQ6MCx2aWV3cG9ydFJvd1JlbmRlcmluZ1RocmVzaG9sZDowLHZpc2libGVSb3dzOjEw'@; put 'LHdpZHRoOnZvaWQgMCx3b3JkV3JhcDohMCxzYW5pdGl6ZXI6dm9pZCAwLHBhcnNlUGFzdGVkVmFsdWU6ITF9KTtjbGFzcyBBUnR7Z2V0TWV0YUNvbnN0cnVjdG9yKCl7cmV0dXJuIHRoaXMubWV0YUN0b3J9Z2V0TWV0YSgpe3JldHVybiB0aGlzLm1ldGF9dXBkYXRlTWV0YShlKXtZZCh0aGlz'@; put 'Lm1ldGEsZSksWVkodGhpcy5tZXRhLHsuLi5lLHR5cGU6ZS50eXBlPz90aGlzLm1ldGEudHlwZX0sZSl9Y29uc3RydWN0b3IoZSl7dGhpcy5tZXRhQ3Rvcj1jbGFzc3t9LHRoaXMubWV0YT10aGlzLm1ldGFDdG9yLnByb3RvdHlwZSxZZCh0aGlzLm1ldGEsJFJlKCkpLHRoaXMubWV0YS5pbnN0'@; put 'YW5jZT1lfX1jbGFzcyBrUnR7Z2V0TWV0YSgpe3JldHVybiB0aGlzLm1ldGF9dXBkYXRlTWV0YShlKXtZZCh0aGlzLm1ldGEsZSksWVkodGhpcy5tZXRhLGUsZSl9Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1lLmdldE1ldGFDb25zdHJ1Y3RvcigpO3RoaXMubWV0YT1uZXcgdH19Y2xhc3MgR1l7'@; put 'b2J0YWluKGUpe1pZKCgpPT5wdyhlKSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlci4iKTtjb25zdCB0PXRoaXMuX2dldFN0b3JhZ2VJbmRleEJ5S2V5KGUpO2xldCByO2lmKHQ+PTApcj10aGlzLmRhdGFbdF0sdm9pZCAwPT09ciYmKHI9dGhpcy52YWx1ZUZhY3RvcnkoZSksdGhpcy5k'@; put 'YXRhW3RdPXIpO2Vsc2V7cj10aGlzLnZhbHVlRmFjdG9yeShlKTtjb25zdCBpPXRoaXMuaG9sZXMuc2l6ZT4wP3RoaXMuaG9sZXMudmFsdWVzKCkubmV4dCgpLnZhbHVlOnZvaWQgMDt2b2lkIDAhPT1pPyh0aGlzLmhvbGVzLmRlbGV0ZShpKSx0aGlzLmRhdGFbaV09cix0aGlzLmluZGV4W2Vd'@; put 'PWkpOih0aGlzLmRhdGEucHVzaChyKSx0aGlzLmluZGV4W2VdPXRoaXMuZGF0YS5sZW5ndGgtMSl9cmV0dXJuIHJ9aW5zZXJ0KGUsdD0xKXtaWSgoKT0+cHcoZSl8fHJPKGUpLCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyIG9yIG51bGwvdW5kZWZpbmVkIGFyZ3VtZW50LiIpO2NvbnN0'@; put 'IHI9W10saT10aGlzLmRhdGEubGVuZ3RoO2ZvcihsZXQgYT0wO2E8dDthKyspci5wdXNoKGkrYSksdGhpcy5kYXRhLnB1c2godm9pZCAwKTtjb25zdCBvPXJPKGUpP3RoaXMuaW5kZXgubGVuZ3RoOmU7dGhpcy5pbmRleD1bLi4udGhpcy5pbmRleC5zbGljZSgwLG8pLC4uLnIsLi4udGhpcy5p'@; put 'bmRleC5zbGljZShvKV19cmVtb3ZlKGUsdD0xKXtaWSgoKT0+cHcoZSl8fHJPKGUpLCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyIG9yIG51bGwvdW5kZWZpbmVkIGFyZ3VtZW50LiIpO2NvbnN0IHI9dGhpcy5pbmRleC5zcGxpY2Uock8oZSk/dGhpcy5pbmRleC5sZW5ndGgtdDplLHQp'@; put 'O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtjb25zdCBvPXJbaV07Im51bWJlciI9PXR5cGVvZiBvJiZ0aGlzLmhvbGVzLmFkZChvKX19c2l6ZSgpe3JldHVybiB0aGlzLmRhdGEubGVuZ3RoLXRoaXMuaG9sZXMuc2l6ZX12YWx1ZXMoKXtyZXR1cm4gdGhpcy5kYXRhLmZpbHRlcigoZSx0'@; put 'KT0+dm9pZCAwIT09ZSYmIXRoaXMuaG9sZXMuaGFzKHQpKVtTeW1ib2wuaXRlcmF0b3JdKCl9ZW50cmllcygpe2NvbnN0IGU9W107Zm9yKGxldCBpPTA7aTx0aGlzLmRhdGEubGVuZ3RoO2krKyl7Y29uc3Qgbz10aGlzLl9nZXRLZXlCeVN0b3JhZ2VJbmRleChpKSxhPXRoaXMuZGF0YVtpXTst'@; put 'MSE9PW8mJnZvaWQgMCE9PWEmJmUucHVzaChbbyxhXSl9bGV0IHQ9MDtjb25zdCByPXtuZXh0KCl7aWYodDxlLmxlbmd0aCl7Y29uc3QgaT1lW3RdO3JldHVybiB0Kz0xLHt2YWx1ZTppLGRvbmU6ITF9fXJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19LFtTeW1ib2wuaXRlcmF0b3JdOigp'@; put 'PT5yfTtyZXR1cm4gcn1jbGVhcigpe3RoaXMuZGF0YT1bXSx0aGlzLmluZGV4PVtdLHRoaXMuaG9sZXMuY2xlYXIoKX1fZ2V0U3RvcmFnZUluZGV4QnlLZXkoZSl7cmV0dXJuIHRoaXMuaW5kZXgubGVuZ3RoPmU/dGhpcy5pbmRleFtlXTotMX1fZ2V0S2V5QnlTdG9yYWdlSW5kZXgoZSl7cmV0'@; put 'dXJuIHRoaXMuaW5kZXguaW5kZXhPZihlKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLmVudHJpZXMoKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmRhdGE9W10sdGhpcy5pbmRleD1bXSx0aGlzLmhvbGVzPW5ldyBTZXQsdGhpcy52YWx1ZUZhY3Rvcnk9ZX19Y29uc3QgUlJ0PVsiZGF0'@; put 'YSIsIndpZHRoIl07Y2xhc3MgSVJ0e3VwZGF0ZU1ldGEoZSx0KXtjb25zdCByPXRoaXMuZ2V0TWV0YShlKTtZZChyLHQpLFlZKHIsdCl9Y3JlYXRlQ29sdW1uKGUsdCl7dGhpcy5tZXRhcy5pbnNlcnQoZSx0KX1yZW1vdmVDb2x1bW4oZSx0KXt0aGlzLm1ldGFzLnJlbW92ZShlLHQpfWdldE1l'@; put 'dGEoZSl7cmV0dXJuIHRoaXMubWV0YXMub2J0YWluKGUpfWdldE1ldGFDb25zdHJ1Y3RvcihlKXtyZXR1cm4gdGhpcy5tZXRhcy5vYnRhaW4oZSkuY29uc3RydWN0b3J9Y2xlYXJDYWNoZSgpe3RoaXMubWV0YXMuY2xlYXIoKX1fY3JlYXRlTWV0YSgpe3JldHVybiBmdW5jdGlvbiBUUnQobixl'@; put 'PVtdKXtmdW5jdGlvbiB0KCl7fUR4ZSh0LG4pO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXQucHJvdG90eXBlW2Vbcl1dPXZvaWQgMDtyZXR1cm4gdH0odGhpcy5nbG9iYWxNZXRhLmdldE1ldGFDb25zdHJ1Y3RvcigpLFJSdCkucHJvdG90eXBlfWNvbnN0cnVjdG9yKGUpe3RoaXMubWV0'@; put 'YXM9bmV3IEdZKCgpPT50aGlzLl9jcmVhdGVNZXRhKCkpLHRoaXMuZ2xvYmFsTWV0YT1lLHRoaXMubWV0YXM9bmV3IEdZKCgpPT50aGlzLl9jcmVhdGVNZXRhKCkpfX1mdW5jdGlvbiBxUmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0'@; put 'KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gJFkobixlKXtyZXR1cm4gZnVuY3Rpb24gTFJ0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixxUmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gaWRlKG4sZSx0'@; put 'KXtyZXR1cm4gZnVuY3Rpb24gT1J0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixxUmUobixlLCJzZXQi'@; put 'KSx0KSx0fXZhciBhXz1uZXcgV2Vha01hcDtjbGFzcyBGUnR7ZW5hYmxlVXNlckRlZmluZWRNZXRhUmVjb3JkaW5nKCl7JFkodGhpcyxhXyk+MCYmaWRlKHRoaXMsYV8sJFkodGhpcyxhXyktMSl9ZGlzYWJsZVVzZXJEZWZpbmVkTWV0YVJlY29yZGluZygpe2lkZSh0aGlzLGFfLCRZKHRoaXMs'@; put 'YV8pKzEpfXVwZGF0ZU1ldGEoZSx0LHIpe2NvbnN0IGk9dGhpcy5nZXRNZXRhKGUsdCk7WWQoaSxyKSxZWShpLHIpfWNyZWF0ZVJvdyhlLHQpe3RoaXMubWV0YXMuaW5zZXJ0KGUsdCl9Y3JlYXRlQ29sdW1uKGUsdCl7Zm9yKGxldCByPTA7cjx0aGlzLm1ldGFzLnNpemUoKTtyKyspdGhpcy5t'@; put 'ZXRhcy5vYnRhaW4ocikuaW5zZXJ0KGUsdCl9cmVtb3ZlUm93KGUsdCl7dGhpcy5tZXRhcy5yZW1vdmUoZSx0KX1yZW1vdmVDb2x1bW4oZSx0KXtmb3IobGV0IHI9MDtyPHRoaXMubWV0YXMuc2l6ZSgpO3IrKyl0aGlzLm1ldGFzLm9idGFpbihyKS5yZW1vdmUoZSx0KX1nZXRNZXRhKGUsdCxy'@; put 'KXtjb25zdCBpPXRoaXMubWV0YXMub2J0YWluKGUpLm9idGFpbih0KTtyZXR1cm4gdm9pZCAwPT09cj9pOmlbcl19c2V0TWV0YShlLHQscixpKXtjb25zdCBvPXRoaXMubWV0YXMub2J0YWluKGUpLm9idGFpbih0KTtvLl9hdXRvbWF0aWNhbGx5QXNzaWduZWRNZXRhUHJvcHM/LmRlbGV0ZShy'@; put 'KSxvW3JdPWksMD09PSRZKHRoaXMsYV8pPyh2b2lkIDA9PT1vLl91c2VyRGVmaW5lZE1ldGFQcm9wcyYmKG8uX3VzZXJEZWZpbmVkTWV0YVByb3BzPW5ldyBTZXQpLG8uX3VzZXJEZWZpbmVkTWV0YVByb3BzLmFkZChyKSk6by5fdXNlckRlZmluZWRNZXRhUHJvcHM/LmRlbGV0ZShyKX1yZW1v'@; put 'dmVNZXRhKGUsdCxyKXtjb25zdCBpPXRoaXMubWV0YXMub2J0YWluKGUpLm9idGFpbih0KTtkZWxldGUgaVtyXSxpLl91c2VyRGVmaW5lZE1ldGFQcm9wcz8uZGVsZXRlKHIpfWdldE1ldGFzKCl7Y29uc3QgZT1bXSx0PUFycmF5LmZyb20odGhpcy5tZXRhcy52YWx1ZXMoKSk7Zm9yKGxldCBy'@; put 'PTA7cjx0Lmxlbmd0aDtyKyspWm8odFtyXSkmJmUucHVzaCguLi5BcnJheS5mcm9tKHRbcl0udmFsdWVzKCkpKTtyZXR1cm4gZX1nZXRNZXRhc0F0Um93KGUpe1pZKCgpPT5wdyhlKSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlci4iKTtjb25zdCB0PW5ldyBNYXAodGhpcy5tZXRhcyk7'@; put 'cmV0dXJuIHQuaGFzKGUpP0FycmF5LmZyb20odC5nZXQoZSkpLnNvcnQoKFtyXSxbaV0pPT5yLWkpLm1hcCgoWyxyXSk9PnIpOltdfWdldFVzZXJEZWZpbmVkTWV0YXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdFt0LHJdb2YgdGhpcy5tZXRhcylmb3IoY29uc3RbaSxvXW9mIHIpe2NvbnN0IGE9'@; put 'by5fdXNlckRlZmluZWRNZXRhUHJvcHM7dm9pZCAwIT09YSYmYS5mb3JFYWNoKGw9PntSZChvLGwpJiZlLnB1c2goe3BoeXNpY2FsUm93OnQscGh5c2ljYWxDb2x1bW46aSxrZXk6bCx2YWx1ZTpvW2xdfSl9KX1yZXR1cm4gZX1jbGVhckNhY2hlKCl7dGhpcy5tZXRhcy5jbGVhcigpfV9jcmVh'@; put 'dGVSb3coKXtyZXR1cm4gbmV3IEdZKGU9PnRoaXMuX2NyZWF0ZU1ldGEoZSkpfV9jcmVhdGVNZXRhKGUpe3JldHVybiBuZXcodGhpcy5jb2x1bW5NZXRhLmdldE1ldGFDb25zdHJ1Y3RvcihlKSl9Y29uc3RydWN0b3IoZSl7KGZ1bmN0aW9uIE5SdChuLGUsdCl7KGZ1bmN0aW9uIERSdChuLGUp'@; put 'e2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuc2V0KG4sdCl9KSh0aGlzLGFfLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLm1ldGFz'@; put 'PW5ldyBHWSgoKT0+dGhpcy5fY3JlYXRlUm93KCkpLGlkZSh0aGlzLGFfLDApLHRoaXMuY29sdW1uTWV0YT1lfX1jbGFzcyBLUmV7Z2V0R2xvYmFsTWV0YSgpe3JldHVybiB0aGlzLmdsb2JhbE1ldGEuZ2V0TWV0YSgpfXVwZGF0ZUdsb2JhbE1ldGEoZSl7dGhpcy5nbG9iYWxNZXRhLnVwZGF0'@; put 'ZU1ldGEoZSl9Z2V0VGFibGVNZXRhKCl7cmV0dXJuIHRoaXMudGFibGVNZXRhLmdldE1ldGEoKX11cGRhdGVUYWJsZU1ldGEoZSl7dGhpcy50YWJsZU1ldGEudXBkYXRlTWV0YShlKX1nZXRDb2x1bW5NZXRhKGUpe3JldHVybiB0aGlzLmNvbHVtbk1ldGEuZ2V0TWV0YShlKX11cGRhdGVDb2x1'@; put 'bW5NZXRhKGUsdCl7dGhpcy5jb2x1bW5NZXRhLnVwZGF0ZU1ldGEoZSx0KX1nZXRDZWxsTWV0YShlLHQscil7Y29uc3QgaT10aGlzLmNlbGxNZXRhLmdldE1ldGEoZSx0KTtyZXR1cm4gaS52aXN1YWxSb3c9ci52aXN1YWxSb3csaS52aXN1YWxDb2w9ci52aXN1YWxDb2x1bW4saS5yb3c9ZSxp'@; put 'LmNvbD10LHIuc2tpcE1ldGFFeHRlbnNpb258fHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJHZXRDZWxsTWV0YSIsaSksaX1nZXRDZWxsTWV0YUtleVZhbHVlKGUsdCxyKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHImJkpyKCJUaGUgcGFzc2VkIGNlbGwgbWV0YSBvYmplY3Qga2V5IGlzIG5v'@; put 'dCBhIHN0cmluZyIpLHRoaXMuY2VsbE1ldGEuZ2V0TWV0YShlLHQscil9c2V0Q2VsbE1ldGEoZSx0LHIsaSl7dGhpcy5jZWxsTWV0YS5zZXRNZXRhKGUsdCxyLGkpfXVwZGF0ZUNlbGxNZXRhKGUsdCxyKXt0aGlzLmNlbGxNZXRhLnVwZGF0ZU1ldGEoZSx0LHIpfXJlbW92ZUNlbGxNZXRhKGUs'@; put 'dCxyKXt0aGlzLmNlbGxNZXRhLnJlbW92ZU1ldGEoZSx0LHIpfWdldENlbGxzTWV0YSgpe3JldHVybiB0aGlzLmNlbGxNZXRhLmdldE1ldGFzKCl9Z2V0Q2VsbHNNZXRhQXRSb3coZSl7cmV0dXJuIHRoaXMuY2VsbE1ldGEuZ2V0TWV0YXNBdFJvdyhlKX1nZXRVc2VyRGVmaW5lZENlbGxNZXRh'@; put 'cygpe3JldHVybiB0aGlzLmNlbGxNZXRhLmdldFVzZXJEZWZpbmVkTWV0YXMoKX1lbmFibGVVc2VyRGVmaW5lZE1ldGFSZWNvcmRpbmcoKXt0aGlzLmNlbGxNZXRhLmVuYWJsZVVzZXJEZWZpbmVkTWV0YVJlY29yZGluZygpfWRpc2FibGVVc2VyRGVmaW5lZE1ldGFSZWNvcmRpbmcoKXt0aGlz'@; put 'LmNlbGxNZXRhLmRpc2FibGVVc2VyRGVmaW5lZE1ldGFSZWNvcmRpbmcoKX1jcmVhdGVSb3coZSx0PTEpe3RoaXMuY2VsbE1ldGEuY3JlYXRlUm93KGUsdCl9cmVtb3ZlUm93KGUsdD0xKXt0aGlzLmNlbGxNZXRhLnJlbW92ZVJvdyhlLHQpfWNyZWF0ZUNvbHVtbihlLHQ9MSl7dGhpcy5jZWxs'@; put 'TWV0YS5jcmVhdGVDb2x1bW4oZSx0KSx0aGlzLmNvbHVtbk1ldGEuY3JlYXRlQ29sdW1uKGUsdCl9cmVtb3ZlQ29sdW1uKGUsdD0xKXt0aGlzLmNlbGxNZXRhLnJlbW92ZUNvbHVtbihlLHQpLHRoaXMuY29sdW1uTWV0YS5yZW1vdmVDb2x1bW4oZSx0KX1jbGVhckNlbGxzQ2FjaGUoKXt0aGlz'@; put 'LmNlbGxNZXRhLmNsZWFyQ2FjaGUoKX1jbGVhckNhY2hlKCl7dGhpcy5jZWxsTWV0YS5jbGVhckNhY2hlKCksdGhpcy5jb2x1bW5NZXRhLmNsZWFyQ2FjaGUoKX1jb25zdHJ1Y3RvcihlLHQ9e30scj1bXSl7dGhpcy5ob3Q9ZSx0aGlzLmdsb2JhbE1ldGE9bmV3IEFSdChlKSx0aGlzLnRhYmxl'@; put 'TWV0YT1uZXcga1J0KHRoaXMuZ2xvYmFsTWV0YSksdGhpcy5jb2x1bW5NZXRhPW5ldyBJUnQodGhpcy5nbG9iYWxNZXRhKSx0aGlzLmNlbGxNZXRhPW5ldyBGUnQodGhpcy5jb2x1bW5NZXRhKSxyLmZvckVhY2goaT0+bmV3IGkodGhpcykpLHRoaXMuZ2xvYmFsTWV0YS51cGRhdGVNZXRhKHQp'@; put 'fX1ZbChLUmUsX2gpO2NsYXNzIFBSdHtleHRlbmRDZWxsTWV0YShlKXtjb25zdCB0PWUucm93LHI9ZS5jb2w7aWYodGhpcy5tZXRhU3luY01lbW8uZ2V0KHQpPy5oYXMocikpcmV0dXJuO2NvbnN0IGk9ZS52aXN1YWxSb3csbz1lLnZpc3VhbENvbCxhPXRoaXMubWV0YU1hbmFnZXIuaG90LGw9'@; put 'YS5jb2xUb1Byb3Aobyk7ZS5wcm9wPWwsYS5ydW5Ib29rcygiYmVmb3JlR2V0Q2VsbE1ldGEiLGksbyxlKTtjb25zdCB1PVJkKGUsInR5cGUiKT9lLnR5cGU6bnVsbDtsZXQgZz1fYShlLmNlbGxzKT9lLmNlbGxzKHQscixsKTpudWxsO3UmJihnP2cudHlwZT1nLnR5cGU/P3U6Zz17dHlwZTp1'@; put 'fSksZyYmdGhpcy5tZXRhTWFuYWdlci51cGRhdGVDZWxsTWV0YSh0LHIsZyksYS5ydW5Ib29rcygiYWZ0ZXJHZXRDZWxsTWV0YSIsaSxvLGUpLHRoaXMubWV0YVN5bmNNZW1vLmhhcyh0KXx8dGhpcy5tZXRhU3luY01lbW8uc2V0KHQsbmV3IFNldCksdGhpcy5tZXRhU3luY01lbW8uZ2V0KHQp'@; put 'LmFkZChyKX1jb25zdHJ1Y3RvcihlKXt0aGlzLm1ldGFTeW5jTWVtbz1uZXcgTWFwLHRoaXMubWV0YU1hbmFnZXI9ZSxlLmFkZExvY2FsSG9vaygiYWZ0ZXJHZXRDZWxsTWV0YSIsKC4uLnQpPT57dGhpcy5leHRlbmRDZWxsTWV0YSh0WzBdKX0pLEdvLmdldFNpbmdsZXRvbigpLmFkZCgiYmVm'@; put 'b3JlUmVuZGVyIix0PT57dCYmdGhpcy5tZXRhU3luY01lbW8uY2xlYXIoKX0sdGhpcy5tZXRhTWFuYWdlci5ob3QpfX1mdW5jdGlvbiBYUmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5z'@; put 'dGFuY2UiKTtyZXR1cm4gZS5nZXQobil9dmFyIG9kZT1uZXcgV2Vha01hcDtjbGFzcyBXUnR7ZXh0ZW5kTWV0YVByb3BzKCl7dGhpcy5wcm9wRGVzY3JpcHRvcnMuZm9yRWFjaCgoZSx0KT0+e2NvbnN0e2luaXRPbmx5OnIsdGFyZ2V0Omksb25DaGFuZ2U6b309ZSxhPSJzdHJpbmciPT10eXBl'@; put 'b2YgaSxsPWE/aTp0LHU9YF8ke2x9YDt0aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YVt1XT10aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YVtsXSxvPyh0aGlzLmluc3RhbGxQcm9wV2F0Y2hlcih0LHUsbyksYSYmdGhpcy5pbnN0YWxsUHJvcFdhdGNoZXIoaSx1LG8pKTpy'@; put 'JiYodGhpcy5pbnN0YWxsUHJvcFdhdGNoZXIodCx1LGZ1bmN0aW9uIGpSdChuLGUpe3JldHVybiBmdW5jdGlvbiBWUnQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFhSZShuLGUsImdldCIpKX0odGhpcyxvZGUpKSx0aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1l'@; put 'dGEubWV0YS5faW5pdE9ubHlTZXR0aW5nc3x8KHRoaXMubWV0YU1hbmFnZXIuZ2xvYmFsTWV0YS5tZXRhLl9pbml0T25seVNldHRpbmdzPVtdKSx0aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YS5faW5pdE9ubHlTZXR0aW5ncy5wdXNoKHQpKX0pfWluc3RhbGxQcm9wV2F0Y2hlcihl'@; put 'LHQscil7Y29uc3R7dXNhZ2VUcmFja2VyOml9PXRoaXMsbz1yLmJpbmQodGhpcyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMubWV0YU1hbmFnZXIuZ2xvYmFsTWV0YS5tZXRhLGUse2dldCgpe3JldHVybiB0aGlzW3RdfSxzZXQoYSl7Y29uc3QgbD0haS5oYXMoZSk7aS5hZGQoZSksbyhl'@; put 'LGEsbCksdGhpc1t0XT1hfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNvbnN0cnVjdG9yKGUpeyhmdW5jdGlvbiBVUnQobixlLHQpeyhmdW5jdGlvbiBIUnQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBw'@; put 'cml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfSkodGhpcyxvZGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMudXNhZ2VUcmFja2VyPW5ldyBTZXQsdGhpcy5wcm9wRGVzY3JpcHRvcnM9bmV3IE1hcChbWyJhcmlhVGFncyIse2lu'@; put 'aXRPbmx5OiEwfV0sWyJmaXhlZENvbHVtbnNMZWZ0Iix7dGFyZ2V0OiJmaXhlZENvbHVtbnNTdGFydCIsb25DaGFuZ2UodCl7dGhpcy5tZXRhTWFuYWdlci5ob3QuaXNSdGwoKSYmImZpeGVkQ29sdW1uc0xlZnQiPT09dCYmSnIoIlRoZSBgZml4ZWRDb2x1bW5zTGVmdGAgaXMgbm90IHN1cHBv'@; put 'cnRlZCBmb3IgUlRMLiBQbGVhc2UgdXNlIG9wdGlvbiBgZml4ZWRDb2x1bW5zU3RhcnRgLiIpLHRoaXMudXNhZ2VUcmFja2VyLmhhcygiZml4ZWRDb2x1bW5zTGVmdCIpJiZ0aGlzLnVzYWdlVHJhY2tlci5oYXMoImZpeGVkQ29sdW1uc1N0YXJ0IikmJkpyKCJUaGUgYGZpeGVkQ29sdW1uc0xl'@; put 'ZnRgIGFuZCBgZml4ZWRDb2x1bW5zU3RhcnRgIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBvbmx5IHRoZSBvcHRpb24gYGZpeGVkQ29sdW1uc1N0YXJ0YC4iKX19XSxbImxheW91dERpcmVjdGlvbiIse2luaXRPbmx5OiEwfV0sWyJyZW5kZXJBbGxDb2x1bW5zIix7'@; put 'aW5pdE9ubHk6ITB9XSxbInJlbmRlckFsbFJvd3MiLHtpbml0T25seTohMH1dXSksZnVuY3Rpb24gelJ0KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gQlJ0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRl'@; put 'bXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixYUmUobixlLCJzZXQiKSx0KSx0fSh0aGlzLG9kZSwodCxyLGkpPT57aXx8SnIoYFRoZSBcYCR7dH1cYCBvcHRpb24gY2FuIG5vdCBiZSB1cGRhdGVkIGFmdGVyIHRoZSBIYW5kc29udGFibGUgaXMg'@; put 'aW5pdGlhbGl6ZWQuYCl9KSx0aGlzLm1ldGFNYW5hZ2VyPWUsdGhpcy5leHRlbmRNZXRhUHJvcHMoKX19Y29uc3QgWlJ0PWNsYXNzIFlSdHttb2RpZnlSb3dEYXRhKGUpe2xldCB0O3JldHVybiB0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlSb3dEYXRhIikmJih0PXRoaXMuaG90LnJ1bkhvb2tz'@; put 'KCJtb2RpZnlSb3dEYXRhIixlKSksdm9pZCAwPT09dHx8TnVtYmVyLmlzSW50ZWdlcih0KT90aGlzLmRhdGFbZV06dH1nZXREYXRhKGU9ITEpe3JldHVybiB0aGlzLmRhdGE/Lmxlbmd0aD9lfHx0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VEYXRhIil8fHRoaXMuaG90Lmhhc0hvb2so'@; put 'Im1vZGlmeVJvd0RhdGEiKT90aGlzLmdldEJ5UmFuZ2UobnVsbCxudWxsLGUpOnRoaXMuZGF0YS5tYXAodFJlKTp0aGlzLmRhdGF9c2V0RGF0YShlKXt0aGlzLmRhdGE9ZX1nZXRBdENvbHVtbihlKXtjb25zdCB0PVtdO3JldHVybiBYbih0aGlzLmRhdGEsKHIsaSk9Pntjb25zdCBvPXRoaXMu'@; put 'Z2V0QXRDZWxsKGksZSk7dC5wdXNoKG8pfSksdH1nZXRBdFJvdyhlLHQscixpPSExKXtjb25zdCBvPXZvaWQgMD09PXQmJnZvaWQgMD09PXIse2RhdGFEb3ROb3RhdGlvbjphfT10aGlzLmhvdC5nZXRTZXR0aW5ncygpO2xldCBsPW51bGwsdT1udWxsO2lmKGw9dGhpcy5tb2RpZnlSb3dEYXRh'@; put 'KGUpLEFycmF5LmlzQXJyYXkobCkpdT1bXSxvP2wuZm9yRWFjaCgoZyxFKT0+e3VbRV09dGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChlLEUsbCl9KTpWYSh0LHIsZz0+e3VbZy10XT10aGlzLmdldEF0UGh5c2ljYWxDZWxsKGUsZyxsKX0pO2Vsc2UgaWYoQ2EobCl8fF9hKGwpKWlmKHU9aT9bXTp7'@; put 'fSwhb3x8aSl7Y29uc3QgRT10aGlzLmNvdW50Rmlyc3RSb3dLZXlzKCktMTtWYSgwLEUsTz0+e2NvbnN0IFo9dGhpcy5jb2xUb1Byb3AoTyk7aWYoTz49KHR8fDApJiZPPD0ocnx8RSkmJiFOdW1iZXIuaXNJbnRlZ2VyKFopKXtjb25zdCBlZT10aGlzLmdldEF0UGh5c2ljYWxDZWxsKGUsWixs'@; put 'KTtpP3UucHVzaChlZSk6YT9udWxsIT09dSYmbEwodSxaLGVlKTp1W1pdPWVlfX0pfWVsc2UgYWMobCwoZyxFKT0+e2NvbnN0IE89dGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChlLEUsbCk7YT9udWxsIT09dSYmbEwodSxFLE8pOnVbRV09T30pO3JldHVybiB1fXNldEF0Q2VsbChlLHQscil7bGV0'@; put 'IGk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtjb25zdCBhPU51bWJlcihlKTtpZihOdW1iZXIuaXNOYU4oYSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApcmV0dXJuO2k9YX1lbHNle2lmKCJudW1iZXIiIT10eXBlb2YgZXx8IU51bWJlci5pc0ludGVnZXIoZSl8fGU8MClyZXR1cm47aT1l'@; put 'fWlmKGk+PXRoaXMuY291bnRSb3dzKCl8fCJudW1iZXIiPT10eXBlb2YgdCYmdD49dGhpcy5jb3VudEZpcnN0Um93S2V5cygpKXJldHVybjtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VEYXRhIikpe2NvbnN0IGE9VmYocik7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJj'@; put 'ZURhdGEiLGksdCxhLCJzZXQiKSxhLmlzVG91Y2hlZCgpJiYocj1hLnZhbHVlKX1jb25zdCBvPXRoaXMubW9kaWZ5Um93RGF0YShpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKUFycmF5LmlzQXJyYXkobyk/b1t0XT1yOkNhKG8pJiZsTChvLFN0cmluZyh0KSxyKTtlbHNlIGlmKEFycmF5Lmlz'@; put 'QXJyYXkobykpe2NvbnN0IGE9TnVtYmVyKHQpOyFOdW1iZXIuaXNOYU4oYSkmJk51bWJlci5pc0ludGVnZXIoYSkmJmE+PTAmJmE8dGhpcy5jb3VudEZpcnN0Um93S2V5cygpJiYob1thXT1yKX1lbHNlIENhKG8pJiZsTChvLFN0cmluZyh0KSxyKX1nZXRBdFBoeXNpY2FsQ2VsbChlLHQscil7'@; put 'bGV0IGk9bnVsbDtpZihyKWlmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3R7ZGF0YURvdE5vdGF0aW9uOm99PXRoaXMuaG90LmdldFNldHRpbmdzKCk7aT1vP3NMKHIsdCk6clt0XX1lbHNlIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChyKTpyW3RdO2lmKHRoaXMuaG90Lmhhc0hvb2soIm1v'@; put 'ZGlmeVNvdXJjZURhdGEiKSl7Y29uc3Qgbz1WZihpKTt0aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5U291cmNlRGF0YSIsZSx0LG8sImdldCIpLG8uaXNUb3VjaGVkKCkmJihpPW8udmFsdWUpfXJldHVybiBpfWdldEF0Q2VsbChlLHQpe2NvbnN0IHI9dGhpcy5tb2RpZnlSb3dEYXRhKGUpO3Jl'@; put 'dHVybiB0aGlzLmdldEF0UGh5c2ljYWxDZWxsKGUsdGhpcy5jb2xUb1Byb3AodCkscil9Z2V0QnlSYW5nZShlPW51bGwsdD1udWxsLHI9ITEpe2xldCBpPSExLG89bnVsbCxhPW51bGwsbD1udWxsLHU9bnVsbDtudWxsPT09ZXx8bnVsbD09PXQ/KGk9ITAsbz0wLGw9dGhpcy5jb3VudFJvd3Mo'@; put 'KS0xKToobz1NYXRoLm1pbihlLnJvdyx0LnJvdyksYT1NYXRoLm1pbihlLmNvbCx0LmNvbCksbD1NYXRoLm1heChlLnJvdyx0LnJvdyksdT1NYXRoLm1heChlLmNvbCx0LmNvbCkpO2NvbnN0IGc9W107cmV0dXJuIFZhKG8sbCxFPT57Zy5wdXNoKGk/dGhpcy5nZXRBdFJvdyhFLHZvaWQgMCx2'@; put 'b2lkIDAscik6dGhpcy5nZXRBdFJvdyhFLGEsdSxyKSl9KSxnfWdldENvcHlhYmxlKGUsdCl7Y29uc3Qgcj10aGlzLnByb3BUb0NvbCh0KTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHImJnRoaXMuaG90LmdldENlbGxNZXRhKGUscikuY29weWFibGU/dGhpcy5nZXRBdENlbGwodGhpcy5ob3Qu'@; put 'dG9QaHlzaWNhbFJvdyhlKSxyKToiIn1jb3VudFJvd3MoKXtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VMZW5ndGgiKSl7Y29uc3QgZT10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5U291cmNlTGVuZ3RoIik7aWYoIm51bWJlciI9PXR5cGVvZiBlJiZOdW1iZXIuaXNJbnRlZ2Vy'@; put 'KGUpKXJldHVybiBlfXJldHVybiB0aGlzLmRhdGEubGVuZ3RofWNvdW50Rmlyc3RSb3dLZXlzKCl7cmV0dXJuIGpsZSh0aGlzLmRhdGE/P1tdKX1kZXN0cm95KCl7dGhpcy5kYXRhPW51bGwsdGhpcy5ob3Q9bnVsbH1jb25zdHJ1Y3RvcihlLHQ9W10pe3RoaXMuZGF0YVR5cGU9ImFycmF5Iix0'@; put 'aGlzLmNvbFRvUHJvcD1yPT57fSx0aGlzLnByb3BUb0NvbD1yPT57fSx0aGlzLmhvdD1lLHRoaXMuZGF0YT10fX0sUVJlPS9eKFxyXG58XG5ccnxccnxcbikvLEdSdD0vXlteXHRcclxuXSsvLEpSZT0vXlx0LztmdW5jdGlvbiAkUnQobil7bGV0IGU9MDtmb3IoO2U8bi5sZW5ndGg7KXtpZign'@; put 'Iic9PT1uW2VdKXtpZignIic9PT1uW2UrMV0pe2UrPTI7Y29udGludWV9Y29uc3QgdD1uW2UrMV07aWYodm9pZCAwPT09dHx8Ilx0Ij09PXR8fCJcciI9PT10fHwiXG4iPT09dClyZXR1cm4gZX1lKz0xfXJldHVybi0xfWZ1bmN0aW9uIHFZKG4pe2xldCBlLHQscixpLGEsbz0iIjtmb3IoZT0w'@; put 'LHQ9bi5sZW5ndGg7ZTx0O2UrPTEpe2ZvcihpPW5bZV0ubGVuZ3RoLHI9MDtyPGk7cis9MSlyPjAmJihvKz0iXHQiKSxhPW5bZV1bcl0sInN0cmluZyI9PXR5cGVvZiBhP2EuaW5kZXhPZigiXG4iKT4tMT9vKz1gIiR7YS5yZXBsYWNlQWxsKCciJywnIiInKX0iYDpvKz1hOm8rPW51bGw9PWE/'@; put 'IiI6YTtlIT09dC0xJiYobys9IlxuIil9cmV0dXJuIG99ZnVuY3Rpb24gYWRlKG4sZSl7Y29uc3R7aW5zdGFuY2U6dCx2aXN1YWxSb3c6cix2aXN1YWxDb2w6aSx2YWx1ZVNldHRlcjpvfT1lO3JldHVybiBfYShvKT9vLmNhbGwodCxuLHIsaSxlKTpufWZ1bmN0aW9uIEtZKG4sZSl7Y29uc3R7'@; put 'aW5zdGFuY2U6dCx2aXN1YWxSb3c6cix2aXN1YWxDb2w6aSx2YWx1ZUdldHRlcjpvfT1lO3JldHVybiBfYShvKT9vLmNhbGwodCxuLHIsaSxlKTpufWZ1bmN0aW9uIHNkZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBm'@; put 'aWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBsZGUobixlKXsoZnVuY3Rpb24gS1J0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3Qi'@; put 'KX0pKG4sZSksZS5hZGQobil9dmFyIGVJZT1uZXcgV2Vha1NldCx0SWU9bmV3IFdlYWtTZXQsbkllPW5ldyBXZWFrU2V0O2NsYXNzIGhUe3N0YXRpYyBnZXQgREVTVElOQVRJT05fUkVOREVSRVIoKXtyZXR1cm4gMX1zdGF0aWMgZ2V0IERFU1RJTkFUSU9OX0NMSVBCT0FSRF9HRU5FUkFUT1Io'@; put 'KXtyZXR1cm4gMn1jcmVhdGVNYXAoKXtjb25zdCBlPXRoaXMuZ2V0U2NoZW1hKCk7dHlwZW9mIGU+InUiJiZKcigidHJ5aW5nIHRvIGNyZWF0ZSBgY29sdW1uc2AgZGVmaW5pdGlvbiBidXQgeW91IGRpZG4ndCBwcm92aWRlIGBzY2hlbWFgIG5vciBgZGF0YWAiKTtjb25zdCB0PXRoaXMudGFi'@; put 'bGVNZXRhLmNvbHVtbnM7dGhpcy5jb2xUb1Byb3BDYWNoZT1bXSx0aGlzLnByb3BUb0NvbENhY2hlPW5ldyBNYXAsdD9zZGUodGhpcyxlSWUsWFJ0KS5jYWxsKHRoaXMsdCxlKTp0aGlzLnJlY3Vyc2l2ZUR1Y2tDb2x1bW5zKGUpfWNvdW50Rmlyc3RSb3dLZXlzKCl7cmV0dXJuIGpsZSh0aGlz'@; put 'LmRhdGFTb3VyY2U/P1tdKX1yZWN1cnNpdmVEdWNrQ29sdW1ucyhlLHQscil7bGV0IGk9dD8/MDtjb25zdCBvPXI/PyIiO2xldCBhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJiFBcnJheS5pc0FycmF5KGUpJiZhYyhlLChsLHUpPT57bnVsbD09PWw/KGE9byt1LHRoaXMu'@; put 'Y29sVG9Qcm9wQ2FjaGUucHVzaChhKSx0aGlzLnByb3BUb0NvbENhY2hlLnNldChhLGkpLGkrPTEpOiJvYmplY3QiPT10eXBlb2YgbCYmbnVsbCE9PWwmJihpPXRoaXMucmVjdXJzaXZlRHVja0NvbHVtbnMobCxpLGAke3V9LmApKX0pLGl9Y29sVG9Qcm9wKGUpe2lmKCExPT09TnVtYmVyLmlz'@; put 'SW50ZWdlcihlKSlyZXR1cm4gZTtjb25zdCB0PXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSk7cmV0dXJuIG51bGw9PT10P2U6dGhpcy5jb2xUb1Byb3BDYWNoZSYmWm8odGhpcy5jb2xUb1Byb3BDYWNoZVt0XSk/dGhpcy5jb2xUb1Byb3BDYWNoZVt0XTp0fXByb3BUb0NvbChlKXtjb25z'@; put 'dCB0PXRoaXMucHJvcFRvQ29sQ2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKHQpO2lmKCJudW1iZXIiIT10eXBlb2YgZSlyZXR1cm4gZTtjb25zdCByPXRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGUpO3JldHVybiBudWxsIT09cj9yOmV9'@; put 'Z2V0U2NoZW1hKCl7Y29uc3QgZT10aGlzLnRhYmxlTWV0YS5kYXRhU2NoZW1hO3JldHVybiBlPyJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoKTplOnRoaXMuZHVja1NjaGVtYX1jcmVhdGVEdWNrU2NoZW1hKCl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZSYmdGhpcy5kYXRhU291cmNlWzBdP09NKHRo'@; put 'aXMuZGF0YVNvdXJjZVswXSk6e319cmVmcmVzaER1Y2tTY2hlbWEoKXt0aGlzLmR1Y2tTY2hlbWE9dGhpcy5jcmVhdGVEdWNrU2NoZW1hKCl9Y3JlYXRlUm93KGUsdD0xLHtzb3VyY2U6cixtb2RlOmk9ImFib3ZlIn09e30pe2NvbnN0IG89dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCk7bGV0'@; put 'IGE9byxsPTAsdT1lO2lmKCgibnVtYmVyIiE9dHlwZW9mIHV8fHU+PW8pJiYodT1vKSx1PHRoaXMuaG90LmNvdW50Um93cygpJiYoYT10aGlzLmhvdC50b1BoeXNpY2FsUm93KHUpKSwhMT09PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLHUsdCxyKXx8bnVsbD09PWEpcmV0'@; put 'dXJue2RlbHRhOjB9O2NvbnN0IEU9dGhpcy50YWJsZU1ldGEubWF4Um93cyxPPXRoaXMuZ2V0U2NoZW1hKCkubGVuZ3RoLFo9W107Zm9yKDtsPHQmJm8rbDwoRT8/MS8wKTspe2xldCB2ZT1udWxsO2lmKCJhcnJheSI9PT10aGlzLmhvdC5kYXRhVHlwZSl0aGlzLnRhYmxlTWV0YS5kYXRhU2No'@; put 'ZW1hP3ZlPUFkKHRoaXMuZ2V0U2NoZW1hKCkpOih2ZT1bXSxWYShPLTEsKCk9PnZlLnB1c2gobnVsbCkpKTtlbHNlIGlmKCJmdW5jdGlvbiI9PT10aGlzLmhvdC5kYXRhVHlwZSl7Y29uc3QgTWU9dGhpcy50YWJsZU1ldGEuZGF0YVNjaGVtYTsiZnVuY3Rpb24iIT10eXBlb2YgTWUmJkpyKCJg'@; put 'ZGF0YVNjaGVtYWAgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoZW4gYGRhdGFUeXBlYCBpcyBgZnVuY3Rpb25gIiksdmU9TWUodStsKX1lbHNlIHZlPXt9LExXKHZlLHRoaXMuZ2V0U2NoZW1hKCkpO1oucHVzaCh2ZSksbCs9MX10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5pbnNlcnRJbmRleGVzKHUs'@; put 'bCksImJlbG93Ij09PWkmJihhPU1hdGgubWluKGErMSxvKSksdGhpcy5zcGxpY2VEYXRhKGEsMCxaKTtjb25zdCBlZT10aGlzLmhvdC50b1Zpc3VhbFJvdyhhKTtyZXR1cm4gdGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCk9PT1aLmxlbmd0aCYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIu'@; put 'aW5pdFRvTGVuZ3RoKHRoaXMuaG90LmdldEluaXRpYWxDb2x1bW5Db3VudCgpKSxsPjAmJihudWxsPT1lP3RoaXMubWV0YU1hbmFnZXIuY3JlYXRlUm93KG51bGwsbCk6ImF1dG8iIT09ciYmdGhpcy5tZXRhTWFuYWdlci5jcmVhdGVSb3coYSx0KSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVy'@; put 'Q3JlYXRlUm93IixlZSxsLHIpLHtkZWx0YTpsLHN0YXJ0UGh5c2ljYWxJbmRleDphfX1jcmVhdGVDb2woZSx0PTEse3NvdXJjZTpyLG1vZGU6aT0ic3RhcnQifT17fSl7dGhpcy5ob3QuaXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkKCl8fEpyKCJDYW5ub3QgY3JlYXRlIG5ldyBjb2x1bW4u'@; put 'IFdoZW4gZGF0YSBzb3VyY2UgaW4gYW4gb2JqZWN0LCB5b3UgY2FuIG9ubHkgaGF2ZSBhcyBtdWNoIGNvbHVtbnMgYXMgZGVmaW5lZCBpbiBmaXJzdCBkYXRhIHJvdywgZGF0YSBzY2hlbWEgb3IgaW4gdGhlICdjb2x1bW5zJyBzZXR0aW5nLklmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gYWRk'@; put 'IG5ldyBjb2x1bW5zLCB5b3UgaGF2ZSB0byB1c2UgYXJyYXkgZGF0YXNvdXJjZS4iKTtjb25zdCBvPXRoaXMuZGF0YVNvdXJjZT8/W10sYT10aGlzLnRhYmxlTWV0YS5tYXhDb2xzLGw9dGhpcy5ob3QuY291bnRTb3VyY2VDb2xzKCksdT10aGlzLmhvdC5jb3VudENvbHMoKSxnPXRoaXMuaG90'@; put 'LmNvdW50U291cmNlUm93cygpLEU9Im51bWJlciI9PXR5cGVvZiBlJiZlPD1sP2U6dTtpZighMT09PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVDb2wiLEUsdCxyKSlyZXR1cm57ZGVsdGE6MH07Y29uc3QgTz1FPHU/dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihFKTpsLFo9ImVu'@; put 'ZCI9PT1pP01hdGgubWluKE8rMSxsKTpPO2xldCBlZT0wO2ZvcihsZXQgdmU9WjtlZTx0JiZ1K2VlPChhPz8xLzApO3ZlKyssZWUrKylzZGUodGhpcyx0SWUsUVJ0KS5jYWxsKHRoaXMsbyx2ZSxFLHUrZWUsZyk7cmV0dXJuIGVlPjAmJihudWxsPT1lP3RoaXMubWV0YU1hbmFnZXIuY3JlYXRl'@; put 'Q29sdW1uKG51bGwsZWUpOiJhdXRvIiE9PXImJnRoaXMubWV0YU1hbmFnZXIuY3JlYXRlQ29sdW1uKFosdCkpLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoRSxlZSxpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVDb2wiLHRoaXMuaG90LnRvVmlzdWFs'@; put 'Q29sdW1uKFopLGVlLHIpLHRoaXMucmVmcmVzaER1Y2tTY2hlbWEoKSx7ZGVsdGE6ZWUsc3RhcnRQaHlzaWNhbEluZGV4Olp9fXJlbW92ZVJvdyhlLHQ9MSxyKXtsZXQgaT1OdW1iZXIuaXNJbnRlZ2VyKGUpP2U6LXQ7Y29uc3Qgbz10aGlzLnZpc3VhbFJvd3NUb1BoeXNpY2FsKGksdCksYT10'@; put 'aGlzLmhvdC5jb3VudFJvd3MoKTtpZihpPShhK2kpJWEsITE9PT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlUm93IixpLG8ubGVuZ3RoLG8scikpcmV0dXJuITE7Y29uc3QgdT1vLmxlbmd0aDtpZih0aGlzLmZpbHRlckRhdGEoaSx1LG8pLGk8dGhpcy5ob3QuY291bnRSb3dzKCkp'@; put 'e3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlbW92ZUluZGV4ZXMobyk7Y29uc3QgRT1abyh0aGlzLnRhYmxlTWV0YS5jb2x1bW5zKXx8Wm8odGhpcy50YWJsZU1ldGEuZGF0YVNjaGVtYSl8fHRoaXMudGFibGVNZXRhLmNvbEhlYWRlcnM7MD09PXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdl'@; put 'dE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCkmJiFFJiZ0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoW10pfXJldHVybiBvLnNsaWNlKDApLnNvcnQoKEUsTyk9Pk8tRSkuZm9yRWFjaChFPT57dGhpcy5tZXRhTWFuYWdlci5yZW1vdmVSb3coRSwxKX0pLHRo'@; put 'aXMuaG90LnJ1bkhvb2tzKCJhZnRlclJlbW92ZVJvdyIsaSx1LG8sciksITB9cmVtb3ZlQ29sKGUsdD0xLHIpeygib2JqZWN0Ij09PXRoaXMuaG90LmRhdGFUeXBlfHx0aGlzLnRhYmxlTWV0YS5jb2x1bW5zKSYmSnIoImNhbm5vdCByZW1vdmUgY29sdW1uIHdpdGggb2JqZWN0IGRhdGEgc291'@; put 'cmNlIG9yIGNvbHVtbnMgb3B0aW9uIHNwZWNpZmllZCIpO2xldCBpPSJudW1iZXIiIT10eXBlb2YgZT8tdDplO2k9KHRoaXMuaG90LmNvdW50Q29scygpK2kpJXRoaXMuaG90LmNvdW50Q29scygpO2NvbnN0IG89dGhpcy52aXN1YWxDb2x1bW5zVG9QaHlzaWNhbChpLHQpLGE9by5zbGljZSgw'@; put 'KS5zb3J0KChPLFopPT5aLU8pO2lmKCExPT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJlbW92ZUNvbCIsaSx0LG8scikpcmV0dXJuITE7bGV0IHU9ITA7Y29uc3QgZz1hLmxlbmd0aCxFPXRoaXMuZGF0YVNvdXJjZT8/W107Zm9yKGxldCBPPTA7TzxnO08rKyl1JiZvWzBdIT09b1tPXS1P'@; put 'JiYodT0hMSk7cmV0dXJuIHNkZSh0aGlzLG5JZSxKUnQpLmNhbGwodGhpcyxFLHUsbyxhLHQpLGk8dGhpcy5ob3QuY291bnRDb2xzKCkmJih0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZW1vdmVJbmRleGVzKG8pLCF0aGlzLnRhYmxlTWV0YS5yb3dIZWFkZXJzJiYwPT09dGhpcy5ob3Qu'@; put 'Y29sdW1uSW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSYmdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKFtdKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVtb3ZlQ29sIixpLHQsbyxyKSx0aGlzLnJlZnJlc2hEdWNrU2NoZW1hKCks'@; put 'ITB9c3BsaWNlQ29sKGUsdCxyLC4uLmkpe2NvbnN0IG89dGhpcy5ob3QuZ2V0RGF0YUF0Q29sKGUpLGE9by5zbGljZSh0LHQrcik7cHNlKGksby5zbGljZSh0K3IpKTtsZXQgdT0wO2Zvcig7dTxyOylpLnB1c2gobnVsbCksdSs9MTtyZXR1cm4gd3hlKGkpLHRoaXMuaG90LnBvcHVsYXRlRnJv'@; put 'bUFycmF5KHQsZSxpLHZvaWQgMCx2b2lkIDAsInNwbGljZUNvbCIpLGF9c3BsaWNlUm93KGUsdCxyLC4uLmkpe2NvbnN0IG89dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Um93KGUpLGE9by5zbGljZSh0LHQrcik7cHNlKGksby5zbGljZSh0K3IpKTtsZXQgdT0wO2Zvcig7dTxyOylpLnB1c2go'@; put 'bnVsbCksdSs9MTtyZXR1cm4gdGhpcy5ob3QucG9wdWxhdGVGcm9tQXJyYXkoZSx0LFtpXSx2b2lkIDAsdm9pZCAwLCJzcGxpY2VSb3ciKSxhfXNwbGljZURhdGEoZSx0LHIpe2lmKCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZURhdGFTcGxpY2UiLGUsdCxyKSl7Y29uc3Qgbz1bLi4u'@; put 'dGhpcy5kYXRhU291cmNlLnNsaWNlKDAsZSksLi4uciwuLi50aGlzLmRhdGFTb3VyY2Uuc2xpY2UoZSldO3RoaXMuZGF0YVNvdXJjZS5sZW5ndGg9MCxvLmZvckVhY2goYT0+dGhpcy5kYXRhU291cmNlLnB1c2goYSkpfX1maWx0ZXJEYXRhKGUsdCxyKXtsZXQgaT10aGlzLmhvdC5ydW5Ib29r'@; put 'cygiZmlsdGVyRGF0YSIsZSx0LHIpOyExPT09QXJyYXkuaXNBcnJheShpKSYmKGk9dGhpcy5kYXRhU291cmNlLmZpbHRlcigobyxhKT0+LTE9PT1yLmluZGV4T2YoYSkpKSx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoPTAsQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5kYXRhU291cmNl'@; put 'LGkpfWdldChlLHQpe2NvbnN0IHI9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhlKTtsZXQgaT10aGlzLmRhdGFTb3VyY2Vbcl07Y29uc3Qgbz10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5Um93RGF0YSIscik7aT0ibnVtYmVyIiE9dHlwZW9mIG8/bzppO2NvbnN0e2RhdGFEb3ROb3RhdGlvbjph'@; put 'fT10aGlzLmhvdC5nZXRTZXR0aW5ncygpO2xldCBsPW51bGw7aWYoaSYmUmQoaSx0KSlsPWlbdF07ZWxzZSBpZihhJiYic3RyaW5nIj09dHlwZW9mIHQmJnQuaW5kZXhPZigiLiIpPi0xKXtsZXQgRT1pO2lmKCFFKXJldHVybiBudWxsO2NvbnN0IE89dC5zcGxpdCgiLiIpO2ZvcihsZXQgWj0w'@; put 'LGVlPU8ubGVuZ3RoO1o8ZWU7WisrKWlmKEU9RVtPW1pdXSx0eXBlb2YgRT4idSIpcmV0dXJuIG51bGw7bD1FfWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgdCYmKGw9dCh0aGlzLmRhdGFTb3VyY2Uuc2xpY2UocixyKzEpWzBdKSk7Y29uc3QgdT10aGlzLnByb3BUb0NvbCh0KSxnPSJudW1iZXIi'@; put 'PT10eXBlb2YgdT90aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHUpOm51bGw7aWYocHcocikmJnB3KGcpJiYobD1LWShsLHRoaXMubWV0YU1hbmFnZXIuZ2V0Q2VsbE1ldGEocixnLHt2aXN1YWxSb3c6ZSx2aXN1YWxDb2x1bW46dSxza2lwTWV0YUV4dGVuc2lvbjohMH0pKSksdGhpcy5ob3Qu'@; put 'aGFzSG9vaygibW9kaWZ5RGF0YSIpKXtjb25zdCBFPVZmKGwpO3RoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlEYXRhIixlLHUsRSwiZ2V0IiksRS5pc1RvdWNoZWQoKSYmKGw9RS52YWx1ZSl9cmV0dXJuIGx9Z2V0Q29weWFibGUoZSx0KXtjb25zdCByPXRoaXMucHJvcFRvQ29sKHQpO3JldHVy'@; put 'biJudW1iZXIiPT10eXBlb2YgciYmdGhpcy5ob3QuZ2V0Q2VsbE1ldGEoZSxyKS5jb3B5YWJsZT90aGlzLmdldChlLHQpOiIifXNldChlLHQscil7Y29uc3QgaT10aGlzLmhvdC50b1BoeXNpY2FsUm93KGUpO2xldCBvPXIsYT10aGlzLmRhdGFTb3VyY2VbaV07Y29uc3QgbD10aGlzLmhvdC5y'@; put 'dW5Ib29rcygibW9kaWZ5Um93RGF0YSIsaSk7aWYoYT0ibnVtYmVyIiE9dHlwZW9mIGw/bDphLHRoaXMuaG90Lmhhc0hvb2soIm1vZGlmeURhdGEiKSl7Y29uc3QgZz1WZihvKTt0aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5RGF0YSIsZSx0aGlzLnByb3BUb0NvbCh0KSxnLCJzZXQiKSxnLmlz'@; put 'VG91Y2hlZCgpJiYobz1nLnZhbHVlKX1jb25zdHtkYXRhRG90Tm90YXRpb246dX09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTtpZihhJiZSZChhLHQpKWFbdF09bztlbHNlIGlmKHUmJiJzdHJpbmciPT10eXBlb2YgdCYmdC5pbmRleE9mKCIuIik+LTEpe2xldCBPLGc9YSxFPTA7Y29uc3QgWj10'@; put 'LnNwbGl0KCIuIik7Zm9yKEU9MCxPPVoubGVuZ3RoLTE7RTxPO0UrKyl7aWYoIl9fcHJvdG9fXyI9PT1aW0VdfHwiY29uc3RydWN0b3IiPT09WltFXXx8InByb3RvdHlwZSI9PT1aW0VdKXJldHVybjt0eXBlb2YgZ1taW0VdXT4idSImJihnW1pbRV1dPXt9KSxnPWdbWltFXV19Z1taW0VdXT1v'@; put 'fWVsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpdCh0aGlzLmRhdGFTb3VyY2Uuc2xpY2UoaSxpKzEpWzBdLG8pO2Vsc2V7aWYoIl9fcHJvdG9fXyI9PT10fHwiY29uc3RydWN0b3IiPT09dHx8InByb3RvdHlwZSI9PT10KXJldHVybjthW3RdPW99fXZpc3VhbFJvd3NUb1BoeXNpY2FsKGUs'@; put 'dCl7Y29uc3Qgcj10aGlzLmhvdC5jb3VudFJvd3MoKSxpPVtdO2xldCBsLG89KHIrZSklcixhPXQ7Zm9yKDtvPHImJmE7KWw9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhvKSxpLnB1c2gobCksYS09MSxvKz0xO3JldHVybiBpfXZpc3VhbENvbHVtbnNUb1BoeXNpY2FsKGUsdCl7Y29uc3Qgcj10'@; put 'aGlzLmhvdC5jb3VudENvbHMoKSxpPVtdO2xldCBvPShyK2UpJXIsYT10O2Zvcig7bzxyJiZhOyl7Y29uc3QgbD10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKG8pO2kucHVzaChsKSxhLT0xLG8rPTF9cmV0dXJuIGl9Y2xlYXIoKXtmb3IobGV0IGU9MDtlPHRoaXMuaG90LmNvdW50U291cmNl'@; put 'Um93cygpO2UrKylmb3IobGV0IHQ9MDt0PHRoaXMuaG90LmNvdW50Q29scygpO3QrKyl0aGlzLnNldChlLHRoaXMuY29sVG9Qcm9wKHQpLCIiKX1nZXRMZW5ndGgoKXtjb25zdCBlPXRoaXMudGFibGVNZXRhLm1heFJvd3M7bGV0IHQ7dD0oZT8/MCk8MHx8MD09PWU/MDplfHwxLzA7Y29uc3Qg'@; put 'cj10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3JldHVybiBNYXRoLm1pbihyLHQpfWdldEFsbCgpe2NvbnN0IGU9e3JvdzowLGNvbDowfSx0PXtyb3c6TWF0aC5tYXgodGhpcy5ob3QuY291bnRSb3dzKCktMSwwKSxjb2w6TWF0aC5tYXgodGhp'@; put 'cy5ob3QuY291bnRDb2xzKCktMSwwKX07cmV0dXJuIGUucm93LXQucm93IT09MHx8dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCk/dGhpcy5nZXRSYW5nZShlLHQsaFQuREVTVElOQVRJT05fUkVOREVSRVIpOltdfWNvdW50Q2FjaGVkQ29sdW1ucygpe3JldHVybiB0aGlzLmNvbFRvUHJvcENh'@; put 'Y2hlLmxlbmd0aH1nZXRSYW5nZShlLHQscil7Y29uc3QgaT1bXTtsZXQgbyxhLGw7Y29uc3QgdT10aGlzLnRhYmxlTWV0YS5tYXhSb3dzLGc9dGhpcy50YWJsZU1ldGEubWF4Q29scztpZigwPT09dXx8MD09PWcpcmV0dXJuW107Y29uc3QgRT1yPT09aFQuREVTVElOQVRJT05fQ0xJUEJPQVJE'@; put 'X0dFTkVSQVRPUj90aGlzLmdldENvcHlhYmxlOnRoaXMuZ2V0LE89TWF0aC5taW4oTWF0aC5tYXgoKHU/PzEvMCktMSwwKSxNYXRoLm1heChlLnJvdyx0LnJvdykpLFo9TWF0aC5taW4oTWF0aC5tYXgoKGc/PzEvMCktMSwwKSxNYXRoLm1heChlLmNvbCx0LmNvbCkpO2ZvcihvPU1hdGgubWlu'@; put 'KGUucm93LHQucm93KTtvPD1PO28rKyl7bD1bXTtjb25zdCBlZT1vPj0wP3RoaXMuaG90LnRvUGh5c2ljYWxSb3cobyk6bztmb3IoYT1NYXRoLm1pbihlLmNvbCx0LmNvbCk7YTw9WiYmbnVsbCE9PWVlO2ErKylsLnB1c2goRS5jYWxsKHRoaXMsbyx0aGlzLmNvbFRvUHJvcChhKSkpO251bGwh'@; put 'PT1lZSYmaS5wdXNoKGwpfXJldHVybiBpfWdldFRleHQoZSx0KXtyZXR1cm4gcVkodGhpcy5nZXRSYW5nZShlLHQsaFQuREVTVElOQVRJT05fUkVOREVSRVIpKX1nZXRDb3B5YWJsZVRleHQoZSx0KXtyZXR1cm4gcVkodGhpcy5nZXRSYW5nZShlLHQsaFQuREVTVElOQVRJT05fQ0xJUEJPQVJE'@; put 'X0dFTkVSQVRPUikpfWRlc3Ryb3koKXt0aGlzLmhvdD1udWxsLHRoaXMubWV0YU1hbmFnZXI9bnVsbCx0aGlzLmRhdGFTb3VyY2U9bnVsbCx0aGlzLmR1Y2tTY2hlbWE9bnVsbCx0aGlzLmNvbFRvUHJvcENhY2hlLmxlbmd0aD0wLHRoaXMucHJvcFRvQ29sQ2FjaGUuY2xlYXIoKSx0aGlzLnBy'@; put 'b3BUb0NvbENhY2hlPXZvaWQgMH1jb25zdHJ1Y3RvcihlLHQscil7bGRlKHRoaXMsZUllKSxsZGUodGhpcyx0SWUpLGxkZSh0aGlzLG5JZSksdGhpcy5ob3Q9ZSx0aGlzLm1ldGFNYW5hZ2VyPXIsdGhpcy50YWJsZU1ldGE9ci5nZXRUYWJsZU1ldGEoKSx0aGlzLmRhdGFTb3VyY2U9dCx0aGlz'@; put 'LmNvbFRvUHJvcENhY2hlPVtdLHRoaXMucHJvcFRvQ29sQ2FjaGU9bmV3IE1hcCx0aGlzLnJlZnJlc2hEdWNrU2NoZW1hKCksdGhpcy5jcmVhdGVNYXAoKX19ZnVuY3Rpb24gWFJ0KG4sZSl7bGV0IHQ9MCxyPTA7Y29uc3QgaT0iZnVuY3Rpb24iPT10eXBlb2YgbjtpZihpKXtjb25zdCBvPU9X'@; put 'KGUpO3Q9bz4wP286dGhpcy5jb3VudEZpcnN0Um93S2V5cygpfWVsc2UgdD1NYXRoLm1pbih0aGlzLnRhYmxlTWV0YS5tYXhDb2xzPz8xLzAsbi5sZW5ndGgpO2ZvcihsZXQgbz0wO288dDtvKyspe2NvbnN0IGE9aT9uKG8pOm5bb107aWYoQ2EoYSkpe2lmKHR5cGVvZiBhLmRhdGE8InUiKXtj'@; put 'b25zdCBsPWk/cjpvLHU9YS5kYXRhO3RoaXMuY29sVG9Qcm9wQ2FjaGVbbF09dSx0aGlzLnByb3BUb0NvbENhY2hlLnNldCh1LGwpfXIrPTF9fX1mdW5jdGlvbiBRUnQobixlLHQscixpKXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fHQ+PXIpaWYoaT4wKWZvcihsZXQgbz0wO288aTtvKz0xKXR5'@; put 'cGVvZiBuW29dPiJ1IiYmKG5bb109W10pLG5bb10ucHVzaChudWxsKTtlbHNlIG4ucHVzaChbbnVsbF0pO2Vsc2UgZm9yKGxldCBvPTA7bzxpO28rKyluW29dLnNwbGljZShlLDAsbnVsbCl9ZnVuY3Rpb24gSlJ0KG4sZSx0LHIsaSl7aWYoZSlmb3IobGV0IG89MCxhPXRoaXMuaG90LmNvdW50'@; put 'U291cmNlUm93cygpO288YTtvKyspbltvXS5zcGxpY2UodFswXSxpKSwwPT09byYmdGhpcy5tZXRhTWFuYWdlci5yZW1vdmVDb2x1bW4odFswXSxpKTtlbHNle2NvbnN0IG89ci5sZW5ndGg7Zm9yKGxldCBhPTAsbD10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTthPGw7YSsrKWZvcihsZXQg'@; put 'dT0wO3U8bzt1KyspblthXS5zcGxpY2Uoclt1XSwxKSwwPT09YSYmdGhpcy5tZXRhTWFuYWdlci5yZW1vdmVDb2x1bW4oclt1XSwxKX19Y29uc3QgaU89aFQ7ZnVuY3Rpb24gckllKG4sZSx0LHIsaSxvLGEpe2NvbnN0IGw9bi5zb3VyY2VEYXRhVmFsaWRhdG9yO2lmKCFfYShsKXx8ITA9PT1s'@; put 'KGUsbixhKSlyZXR1cm47ITE9PT1uLmFsbG93SW52YWxpZCYmaS5zZXRBdENlbGwodCxyLG51bGwpO2NvbnN0IGc9bi5zb3VyY2VEYXRhV2FybmluZ01lc3NhZ2U7aWYoZyl7Y29uc3QgRT1vLmdldChnKT8/W107RS5wdXNoKHtyb3c6dCxjb2w6cix2YWx1ZTplLG1lc3NhZ2U6Z30pLG8uc2V0'@; put 'KGcsRSl9fWZ1bmN0aW9uIGlJZShuLGUsdCxyLGksbyl7Y29uc3R7cm93SW5kZXhNYXBwZXI6YSxjb2x1bW5JbmRleE1hcHBlcjpsfT1uO2ZvcihsZXQgdT0wO3U8dDt1Kz0xKWZvcihsZXQgZz0wO2c8cjtnKz0xKXtjb25zdCBFPWEuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgodSksTz1s'@; put 'LmdldFZpc3VhbEZyb21QaHlzaWNhbEluZGV4KGcpO2lmKG51bGw9PT1FfHxudWxsPT09Tyljb250aW51ZTtjb25zdCBaPW4uZ2V0Q2VsbE1ldGEoRSxPKTtfYShaLnNvdXJjZURhdGFWYWxpZGF0b3IpJiZySWUoWixlLmdldEF0Q2VsbCh1LGcpLHUsZyxlLGksbyl9fWZ1bmN0aW9uIG9JZShu'@; put 'LGUpe2NvbnN0IHQ9bi5jb3VudFNvdXJjZVJvd3MoKSxyPW4uY291bnRTb3VyY2VDb2xzKCk7aWYoMD09PXR8fDA9PT1yKXJldHVybjtjb25zdCBpPW4uZ2V0U2V0dGluZ3MoKSxvPW4uX2dldERhdGFTb3VyY2UoKSxhPW5ldyBNYXA7aWYoZnVuY3Rpb24gckl0KG4sZSl7cmV0dXJuIF9hKGUu'@; put 'Y2VsbHMpfHxBcnJheS5pc0FycmF5KGUuY2VsbCkmJmUuY2VsbC5sZW5ndGg+MHx8bi5oYXNIb29rKCJiZWZvcmVHZXRDZWxsTWV0YSIpfHxuLmhhc0hvb2soImFmdGVyR2V0Q2VsbE1ldGEiKXx8bi5fZ2V0TWV0YU1hbmFnZXIoKS5nZXRVc2VyRGVmaW5lZENlbGxNZXRhcygpLmxlbmd0aD4w'@; put 'fShuLGkpKWlJZShuLG8sdCxyLGEsZSk7ZWxzZXtjb25zdHtmdWxsU2NhbjpsLGNvbHVtbnM6dX09ZnVuY3Rpb24gdEl0KG4sZSl7Y29uc3QgdD1uLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21QaHlzaWNhbEluZGV4KDApO2lmKG51bGw9PT10KXJldHVybntmdWxsU2NhbjohMCxjb2x1'@; put 'bW5zOltdfTtjb25zdCByPVtdO2ZvcihsZXQgaT0wO2k8ZTtpKz0xKXtjb25zdCBvPW4uY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoaSk7aWYobnVsbD09PW8pY29udGludWU7Y29uc3QgYT1uLmdldENlbGxNZXRhKHQsbyksbD1hLnNvdXJjZURhdGFWYWxp'@; put 'ZGF0b3I7aWYoX2EobCkpe2lmKCEwIT09bC5yb3dJbmRlcGVuZGVudClyZXR1cm57ZnVsbFNjYW46ITAsY29sdW1uczpbXX07ci5wdXNoKHtwaHlzaWNhbENvbHVtbjppLGNlbGxNZXRhOmF9KX19cmV0dXJue2Z1bGxTY2FuOiExLGNvbHVtbnM6cn19KG4scik7bD9pSWUobixvLHQscixhLGUp'@; put 'OmZ1bmN0aW9uIG5JdChuLGUsdCxyLGksbyl7Zm9yKGxldCBhPTA7YTx0O2ErPTEpaWYobnVsbCE9PXIoYSkpZm9yKGxldCBsPTA7bDxuLmxlbmd0aDtsKz0xKXtjb25zdHtwaHlzaWNhbENvbHVtbjp1LGNlbGxNZXRhOmd9PW5bbF07ckllKGcsZS5nZXRBdENlbGwoYSx1KSxhLHUsZSxpLG8p'@; put 'fX0odSxvLHQsRT0+bi5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleChFKSxhLGUpfWEuZm9yRWFjaCgobCx1KT0+e2FJZSh1LGwpfSl9ZnVuY3Rpb24gYUllKG4sZSl7IWZ1bmN0aW9uIG5UdCh7bG9nRnVuY3Rpb246bj10VHQsbWVzc2FnZTplPSIiLGl0ZW1zOnQ9'@; put 'W10sbWF4U2FtcGxlOnI9NSxpdGVtRm9ybWF0dGVyOmk9bz0+YCR7b31gfT17fSl7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgbz10Lmxlbmd0aCxsPW8+cj9gICAtIC4uLmFuZCAke28tcn0gbW9yZWA6IiI7bihmTChlLHtpdGVtc0NvdW50OmAke299'@; put 'IGNlbGwke28+MT8icyI6IiJ9YCxhZmZlY3RlZENlbGxzOlsiQWZmZWN0ZWQgY2VsbHM6IiwuLi50LnNsaWNlKDAscikubWFwKGc9PmAgIC0gJHtpKGcpfWApLC4uLmw/W2xdOltdXS5qb2luKCJcbiIpfSkpfSh7bG9nRnVuY3Rpb246SGEsbWVzc2FnZTpuLGl0ZW1zOmUsaXRlbUZvcm1hdHRl'@; put 'cjp0PT57Y29uc3R7cm93OnIsY29sOmksdmFsdWU6b309dCxhPVBsKG8pO3JldHVybmByb3cgJHtyfSwgY29sICR7aX0sIHZhbHVlOiAiJHthLmxlbmd0aD42ND9gJHthLnNsaWNlKDAsNjQpfS4uLmA6YX0iYH19KX1mdW5jdGlvbiBzSWUobixlLHQscil7Y29uc3R7aG90SW5zdGFuY2U6aSxk'@; put 'YXRhTWFwOm8sZGF0YVNvdXJjZTphLGludGVybmFsU291cmNlOmwsc291cmNlOnUsbWV0YU1hbmFnZXI6ZyxmaXJzdFJ1bjpFfT1yLE89SzAobCksWj1pLmdldFNldHRpbmdzKCk7aS5kYXRhVHlwZT1BcnJheS5pc0FycmF5KFouZGF0YVNjaGVtYSk/ImFycmF5IjpfYShaLmRhdGFTY2hlbWEp'@; put 'PyJmdW5jdGlvbiI6Im9iamVjdCIsbyYmby5kZXN0cm95KCksbj1pLnJ1bkhvb2tzKGBiZWZvcmUke099YCxuLEUsdSk7Y29uc3QgZWU9bmV3IGlPKGksbixnKTtlKGVlKSwib2JqZWN0Ij09dHlwZW9mIG4mJm51bGwhPT1uP24ucHVzaCYmbi5zcGxpY2V8fChuPVtuXSk6bnVsbD09PW4/bj1m'@; put 'dW5jdGlvbiBpSXQobixlLHQpe2NvbnN0IHI9ZS5nZXRTY2hlbWEoKSxpPVtdO2ZvcihsZXQgbz0wLGE9dC5zdGFydFJvd3M7bzxhO28rKyl7bGV0IGw7aWYoIm9iamVjdCIhPT1uLmRhdGFUeXBlJiYiZnVuY3Rpb24iIT09bi5kYXRhVHlwZXx8IXQuZGF0YVNjaGVtYSlpZigiYXJyYXkiPT09'@; put 'bi5kYXRhVHlwZSlsPUFkKHJbMF0pO2Vsc2V7bD1bXTtmb3IobGV0IHU9MCxnPXQuc3RhcnRDb2xzO3U8Zzt1KyspbC5wdXNoKG51bGwpfWVsc2UgbD1BZChyKTtpLnB1c2gobCl9cmV0dXJuIGl9KGksZWUsWik6SnIoYCR7bH0gb25seSBhY2NlcHRzIGFycmF5IG9mIG9iamVjdHMgb3IgYXJy'@; put 'YXkgb2YgYXJyYXlzICgke3R5cGVvZiBufSBnaXZlbilgKSxBcnJheS5pc0FycmF5KG5bMF0pJiYoaS5kYXRhVHlwZT0iYXJyYXkiKSxaLmRhdGE9bixlZS5kYXRhU291cmNlPW4sYS5kYXRhPW4sYS5kYXRhVHlwZT1pLmRhdGFUeXBlLGEuY29sVG9Qcm9wPXZlPT5lZS5jb2xUb1Byb3AodmUp'@; put 'LGEucHJvcFRvQ29sPXZlPT5lZS5wcm9wVG9Db2wodmUpLGEuY291bnRDYWNoZWRDb2x1bW5zPWVlLmNvdW50Q2FjaGVkQ29sdW1ucy5iaW5kKGVlKSx0KGVlKSxFfHxvSWUoaSxsKSxpLnJ1bkhvb2tzKGBhZnRlciR7T31gLG4sRSx1KSxFfHwoaS5ydW5Ib29rcygiYWZ0ZXJDaGFuZ2UiLG51'@; put 'bGwsbCksaS52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLGkucmVuZGVyKCkpLGkuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmS28oaS5yb290RWxlbWVudCxbZ3hlKC0xKSxkc2UoaS5jb3VudENvbHMoKSsoaS52aWV3P2kuY291bnRSb3dIZWFkZXJzKCk6MCkpXSl9ZnVuY3Rpb24gbEllKG4s'@; put 'ZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBjSWUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQg'@; put 'dG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gdUllKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIG9JdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sY0llKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGRJ'@; put 'ZShuLGUsdCl7bEllKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBoSWUobixlLHQpe3JldHVybiBmdW5jdGlvbiBhSXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBv'@; put 'bmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLGNJZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gWFkobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9'@; put 'ZnVuY3Rpb24gZkllKG4sZSl7bEllKG4sZSksZS5hZGQobil9dmFyIGNkZT1uZXcgV2Vha01hcCx1ZGU9bmV3IFdlYWtNYXAsZGRlPW5ldyBXZWFrU2V0LGhkZT1uZXcgV2Vha1NldDtjbGFzcyBzSXR7dG9SZW5kZXJhYmxlKGUpe2NvbnN0IHQ9Ik4tUyI9PT1lLmdldFZlcnRpY2FsRGlyZWN0'@; put 'aW9uKCk/MTotMSxyPSJXLUUiPT09ZS5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCk/MTotMSxpPVhZKHRoaXMsZGRlLHBJZSkuY2FsbCh0aGlzLGUuZnJvbSx0LHIpO2lmKG51bGw9PT1pKXJldHVybiBudWxsO2NvbnN0IG89WFkodGhpcyxkZGUscEllKS5jYWxsKHRoaXMsZS50bywtdCwtcik7'@; put 'aWYobnVsbD09PW8pcmV0dXJuIG51bGw7Y29uc3QgYT1lLmNsb25lKCk7cmV0dXJuIGEuZnJvbT1pLGEudG89byxhLmluY2x1ZGVzKGUuaGlnaGxpZ2h0KXx8KGEuaGlnaGxpZ2h0PWkpLGF9Y29uc3RydWN0b3Ioe3Jvd0luZGV4TWFwcGVyOmUsY29sdW1uSW5kZXhNYXBwZXI6dH0pe2ZJZSh0'@; put 'aGlzLGRkZSksZkllKHRoaXMsaGRlKSxkSWUodGhpcyxjZGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGRJZSh0aGlzLHVkZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksaEllKHRoaXMsY2RlLGUpLGhJZSh0aGlzLHVkZSx0KX19ZnVuY3Rpb24gcEllKG4sZSx0PWUpe2lmKG51'@; put 'bGw9PT1uLnJvd3x8bnVsbD09PW4uY29sKXJldHVybiBudWxsO2NvbnN0IHI9WFkodGhpcyxoZGUsZ0llKS5jYWxsKHRoaXMsdUllKHRoaXMsY2RlKSxuLnJvdyxlKTtpZihudWxsPT09cilyZXR1cm4gbnVsbDtjb25zdCBpPVhZKHRoaXMsaGRlLGdJZSkuY2FsbCh0aGlzLHVJZSh0aGlzLHVk'@; put 'ZSksbi5jb2wsdCk7cmV0dXJuIG51bGw9PT1pP251bGw6bi5jbG9uZSgpLmFzc2lnbih7cm93OnIsY29sOml9KX1mdW5jdGlvbiBnSWUobixlLHQpe3JldHVybiBlPDA/ZTpuLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChlLHQpfWZ1bmN0aW9uIGZUKG4pe2hzKG4pJiZuLnNjcm9sbEludG9W'@; put 'aWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pfWZ1bmN0aW9uIFFZKG4pe2NvbnN0e3NlbGVjdGlvbjplLHZpZXc6dH09bixyPW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLGk9ZS5nZXRTZWxlY3Rpb25Tb3VyY2UoKSxvPXQuZ2V0Rmlyc3RGdWxseVZpc2libGVDb2x1'@; put 'bW4oKT8/LTEsYT10LmdldExhc3RGdWxseVZpc2libGVDb2x1bW4oKT8/LTEsbD1yPy5nZXRUb3BTdGFydENvcm5lcigpLmNvbD8/LTEsdT1yPy5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2w/Py0xLGc9bDw9byxFPXU+PWEsTz10LmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCk/Py0xLFo9dC5n'@; put 'ZXRMYXN0RnVsbHlWaXNpYmxlUm93KCk/Py0xLGVlPXI/LmdldFRvcFN0YXJ0Q29ybmVyKCkucm93Pz8tMSx2ZT1yPy5nZXRCb3R0b21FbmRDb3JuZXIoKS5yb3c/Py0xLE1lPWVlPD1PLEhlPXZlPj1aO3JldHVybntnZXRDb21wdXRlZENvbHVtblRhcmdldDpXZT0+Im1vdXNlIj09PWl8fCJr'@; put 'ZXlib2FyZCI9PT1pP1dlLmNvbD8/LTE6ZyYmRT9yPy5oaWdobGlnaHQuY29sPz8tMTpnP2w6RT91OldlLmNvbD8/LTEsZ2V0Q29tcHV0ZWRSb3dUYXJnZXQ6V2U9PiJtb3VzZSI9PT1pfHwia2V5Ym9hcmQiPT09aT9XZS5yb3c/Py0xOk1lJiZIZT9yPy5oaWdobGlnaHQucm93Pz8tMTpNZT9l'@; put 'ZTpIZT92ZTpXZS5yb3c/Py0xfX1mdW5jdGlvbiBtSWUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHZJZShuLGUsdCl7aWYoIWUuaGFz'@; put 'KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBSYyhuLGUpe3JldHVybiBmdW5jdGlvbiBtSXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZh'@; put 'bHVlfShuLHZJZShuLGUsImdldCIpKX1mdW5jdGlvbiBrdyhuLGUsdCl7bUllKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBqMyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIHZJdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5'@; put 'cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sdkllKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBrNyhuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBm'@; put 'aWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBwVChuLGUpe21JZShuLGUpLGUuYWRkKG4pfWNvbnN0IGdUPU9iamVjdC5mcmVlemUoe0NFTEw6ImNlbGwiLE1JWEVEOiJtaXhlZCJ9KTt2YXIgcWQ9bmV3IFdlYWtNYXAsSlk9bmV3IFdlYWtNYXAsb089bmV3IFdlYWtN'@; put 'YXAsYU89bmV3IFdlYWtNYXAsc089bmV3IFdlYWtNYXAsbE89bmV3IFdlYWtNYXAsbVQ9bmV3IFdlYWtNYXAsZVo9bmV3IFdlYWtTZXQsX0llPW5ldyBXZWFrU2V0LHlJZT1uZXcgV2Vha1NldCxmZGU9bmV3IFdlYWtTZXQsYkllPW5ldyBXZWFrU2V0LHdJZT1uZXcgV2Vha1NldDtjbGFzcyBf'@; put 'SXR7aW5pdCgpe2NvbnN0IGU9UmModGhpcyxxZCkuZ2V0U2V0dGluZ3MoKTtqMyh0aGlzLEpZLGUuaW1lRmFzdEVkaXQ/Z1QuTUlYRUQ6Z1QuQ0VMTCksUmModGhpcyxxZCkuYWRkSG9vaygiYWZ0ZXJVcGRhdGVTZXR0aW5ncyIsKC4uLnQpPT5rNyh0aGlzLHdJZSxDSXQpLmNhbGwodGhpcyx0'@; put 'WzBdKSksUmModGhpcyxxZCkuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLCguLi50KT0+azcodGhpcyxmZGUsQ0llKS5jYWxsKHRoaXMpKSxSYyh0aGlzLHFkKS5hZGRIb29rKCJhZnRlclNlbGVjdGlvbkZvY3VzU2V0IiwoLi4udCk9Pms3KHRoaXMsZmRlLENJZSkuY2FsbCh0aGlzKSksUmMo'@; put 'dGhpcyxxZCkuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb25FbmQiLCguLi50KT0+azcodGhpcyx5SWUsYkl0KS5jYWxsKHRoaXMpKSxSYyh0aGlzLHFkKS5hZGRIb29rKCJhZnRlclJlbmRlciIsKC4uLnQpPT5rNyh0aGlzLGJJZSx3SXQpLmNhbGwodGhpcykpfWdldEZvY3VzTW9kZSgpe3JldHVy'@; put 'biBSYyh0aGlzLEpZKX1zZXRGb2N1c01vZGUoZSl7T2JqZWN0LnZhbHVlcyhnVCkuaW5jbHVkZXMoZSk/ajModGhpcyxKWSxlKTpIYShgIiR7ZX0iIGlzIG5vdCBhIHZhbGlkIGZvY3VzIG1vZGUuYCl9Z2V0UmVmb2N1c0RlbGF5KCl7cmV0dXJuIFJjKHRoaXMsb08pfXNldFJlZm9jdXNEZWxh'@; put 'eShlKXtqMyh0aGlzLG9PLGUpfXNldFJlZm9jdXNFbGVtZW50R2V0dGVyKGUpe2ozKHRoaXMsYU8sZSl9c3VzcGVuZCgpe2ozKHRoaXMsbVQsITApfXJlc3VtZSgpe2ozKHRoaXMsbVQsITEpfWdldFJlZm9jdXNFbGVtZW50KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFJjKHRoaXMsYU8p'@; put 'P1JjKHRoaXMsYU8pLmNhbGwodGhpcyk6UmModGhpcyxxZCkuZ2V0QWN0aXZlRWRpdG9yKCk/LlRFWFRBUkVBfWZvY3VzRWxlbWVudChlLHQpe3JldHVybiEoIWhzKGUpfHwhZS5pc0Nvbm5lY3RlZHx8KGUuZm9jdXModCksMCkpfWZvY3VzT25IaWdobGlnaHRlZENlbGwoZSl7Y29uc3QgdD1y'@; put 'PT57Y29uc3QgaT1SYyh0aGlzLHFkKS5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodDtpZighaSlyZXR1cm47bGV0IG89UmModGhpcyxxZCkucnVuSG9va3MoIm1vZGlmeUZvY3VzZWRFbGVtZW50IixpLnJvdyxpLmNvbCxyKTtocyhvKXx8KG89ciksbyYmIVJjKHRoaXMscWQp'@; put 'LmdldEFjdGl2ZUVkaXRvcigpPy5pc09wZW5lZD8uKCkmJnRoaXMuZm9jdXNFbGVtZW50KG8se3ByZXZlbnRTY3JvbGw6ITB9KX07ZT90KGUpOms3KHRoaXMsZVoscGRlKS5jYWxsKHRoaXMscj0+dChyKSl9cmVmb2N1c1RvRWRpdG9yVGV4dGFyZWEoZT1SYyh0aGlzLG9PKSl7UmModGhpcyxx'@; put 'ZCkuZ2V0U2V0dGluZ3MoKS5pbWVGYXN0RWRpdCYmIVJjKHRoaXMscWQpLmdldEFjdGl2ZUVkaXRvcigpPy5pc09wZW5lZD8uKCkmJihSYyh0aGlzLHFkKS5nZXRBY3RpdmVFZGl0b3IoKT8ucmVmcmVzaFZhbHVlPy4oKSxSYyh0aGlzLHNPKS5oYXMoZSl8fFJjKHRoaXMsc08pLnNldChlLEJN'@; put 'KCgpPT57UmModGhpcyxxZCkuaXNEZXN0cm95ZWR8fHRoaXMuZ2V0UmVmb2N1c0VsZW1lbnQoKT8uc2VsZWN0KCl9LGUpKSxSYyh0aGlzLHNPKS5nZXQoZSkoKSl9Y29uc3RydWN0b3IoZSl7cFQodGhpcyxlWikscFQodGhpcyxfSWUpLHBUKHRoaXMseUllKSxwVCh0aGlzLGZkZSkscFQodGhp'@; put 'cyxiSWUpLHBUKHRoaXMsd0llKSxrdyh0aGlzLHFkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrdyh0aGlzLEpZLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrdyh0aGlzLG9PLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrdyh0aGlzLGFPLHt3cml0YWJsZTohMCx2YWx1'@; put 'ZTp2b2lkIDB9KSxrdyh0aGlzLHNPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrdyh0aGlzLGxPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrdyh0aGlzLG1ULHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxqMyh0aGlzLG9PLDEpLGozKHRoaXMsYU8sbnVsbCksajModGhp'@; put 'cyxzTyxuZXcgTWFwKSxqMyh0aGlzLGxPLCExKSxqMyh0aGlzLG1ULCExKSxqMyh0aGlzLHFkLGUpfX1mdW5jdGlvbiBwZGUobil7Y29uc3QgZT1SYyh0aGlzLHFkKS5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodDtpZighZXx8IVJjKHRoaXMscWQpLnNlbGVjdGlvbi5pc0Nl'@; put 'bGxWaXNpYmxlKGUpKXJldHVybiB2b2lkIG4obnVsbCk7aWYobnVsbD09PWUucm93fHxudWxsPT09ZS5jb2wpcmV0dXJuIHZvaWQgbihudWxsKTtjb25zdHtyb3c6dCxjb2w6cn09ZSxpPVJjKHRoaXMscWQpLmdldENlbGwodCxyLCEwKTtudWxsPT09aT9SYyh0aGlzLHFkKS5hZGRIb29rT25j'@; put 'ZSgiYWZ0ZXJTY3JvbGwiLCgpPT57bihSYyh0aGlzLHFkKS5nZXRDZWxsKHQsciwhMCkpfSk6bihpKX1mdW5jdGlvbiB5SXQoKXtjb25zdCBuPVJjKHRoaXMsbVQpO2s3KHRoaXMsZVoscGRlKS5jYWxsKHRoaXMsZT0+e2NvbnN0IHQ9UmModGhpcyxxZCkucm9vdERvY3VtZW50LmFjdGl2ZUVs'@; put 'ZW1lbnQ7biYmdCYmVk0odCl8fCh0JiZWTSh0KSYmdC5ibHVyKCksdGhpcy5mb2N1c09uSGlnaGxpZ2h0ZWRDZWxsKGUpKX0pfWZ1bmN0aW9uIGJJdCgpe2lmKFJjKHRoaXMsbVQpKXtjb25zdCBuPVJjKHRoaXMscWQpLnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKG4mJlZNKG4pKXJl'@; put 'dHVybn1rNyh0aGlzLGVaLHBkZSkuY2FsbCh0aGlzLG49Pnt0aGlzLmdldEZvY3VzTW9kZSgpPT09Z1QuTUlYRUQmJiJURCI9PT1uPy5ub2RlTmFtZSYmdGhpcy5yZWZvY3VzVG9FZGl0b3JUZXh0YXJlYSgpfSl9ZnVuY3Rpb24gQ0llKCl7ajModGhpcyxsTywhMCl9ZnVuY3Rpb24gd0l0KCl7'@; put 'UmModGhpcyxsTykmJihqMyh0aGlzLGxPLCExKSxrNyh0aGlzLF9JZSx5SXQpLmNhbGwodGhpcykpfWZ1bmN0aW9uIENJdChuKXsiYm9vbGVhbiI9PXR5cGVvZiBuLmltZUZhc3RFZGl0JiZ0aGlzLnNldEZvY3VzTW9kZShuLmltZUZhc3RFZGl0P2dULk1JWEVEOmdULkNFTEwpfWNvbnN0IFNJ'@; put 'dD1PYmplY3QuZnJlZXplKHtJTkxJTkU6ImlubGluZSIsTU9EQUw6Im1vZGFsIn0pLGM2PU9iamVjdC5mcmVlemUoe1VOS05PV046InVua25vd24iLENMSUNLOiJjbGljayIsVEFCX0ZST01fQUJPVkU6InRhYl9mcm9tX2Fib3ZlIixUQUJfRlJPTV9CRUxPVzoidGFiX2Zyb21fYmVsb3cifSk7'@; put 'ZnVuY3Rpb24gU0llKG4sZSl7Y29uc3Qgcj1uLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gci5zdHlsZS5kaXNwbGF5PSJub25lIixyLmNsYXNzTGlzdC5hZGQoImh0Rm9jdXNDYXRjaGVyIiksci5kYXRhc2V0Lmh0Rm9jdXNTb3VyY2U9ZSxyfWZ1bmN0aW9uIEFJ'@; put 'dChuKXtjb25zdCBlPUNMKHtlcnJvcklkRXhpc3RzOnZlPT5gVGhlICIke3ZlfSIgZm9jdXMgc2NvcGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLmB9KSx0PW4uZ2V0U2hvcnRjdXRNYW5hZ2VyKCk7bGV0IHI9bnVsbDtmdW5jdGlvbiBnKHZlLE1lPWM2LlVOS05PV04pe3IhPT12ZSYmKG51bGwh'@; put 'PT1yJiZFKHIpLHI9dmUsci5hY3RpdmF0ZShNZSksdC5zZXRBY3RpdmVDb250ZXh0TmFtZSh2ZS5nZXRTaG9ydGN1dHNDb250ZXh0TmFtZSgpKSl9ZnVuY3Rpb24gRSh2ZSl7TygpLHI9PT12ZSYmKHI9bnVsbCx2ZS5kZWFjdGl2YXRlKCkpfWZ1bmN0aW9uIE8oKXtjb25zdCB2ZT1lLmdldFZh'@; put 'bHVlcygpLE1lPXZlLmZpbHRlcihIZT0+SGUucnVuT25seUlmKCkmJiJtb2RhbCI9PT1IZS5nZXRUeXBlKCkpO3ZlLmZvckVhY2goSGU9PntNZS5sZW5ndGg+MCYmTWUuaW5jbHVkZXMoSGUpfHwwPT09TWUubGVuZ3RofHxIZS5oYXNDb250YWluZXJEZXRhY2hlZCgpP0hlLmVuYWJsZSgpOkhl'@; put 'LmRpc2FibGUoKSxIZT09PXI/SGUuY29udGFpbnMobi5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudCk/SGUuZGVhY3RpdmF0ZUZvY3VzQ2F0Y2hlcnMoKTpIZS5hY3RpdmF0ZUZvY3VzQ2F0Y2hlcnMoKTpIZS5ydW5Pbmx5SWYoKT9IZS5hY3RpdmF0ZUZvY3VzQ2F0Y2hlcnMoKTpIZS5kZWFj'@; put 'dGl2YXRlRm9jdXNDYXRjaGVycygpfSl9ZnVuY3Rpb24gWih2ZSxNZSl7aWYoIXZlLmlzQ29ubmVjdGVkfHwhVXYodmUpKXJldHVybjtjb25zdCBIZT1lLmdldFZhbHVlcygpLmZpbHRlcihhdD0+YXQucnVuT25seUlmKCkpO2xldCBXZT0hMTtIZS5mb3JFYWNoKGF0PT57IVdlJiZhdC5jb250'@; put 'YWlucyh2ZSkmJihXZT0hMCxNZSE9PWM2LlVOS05PV04mJm4ubGlzdGVuKCksZyhhdCxNZSkpfSksIVdlJiZyJiYoRShyKSxuLnVubGlzdGVuKCkpfWNvbnN0IGVlPWZ1bmN0aW9uIHhJdChuLGU9e30pe2xldCB0PSExO2Z1bmN0aW9uIHIoRSl7dHx8ZS5vbkZvY3VzPy4oRSl9ZnVuY3Rpb24g'@; put 'aShFKXtlLm9uQ2xpY2s/LihFKX1mdW5jdGlvbiBvKEUpeyJUYWIiPT09RS5rZXkmJmUub25UYWJLZXlEb3duPy4oRSl9ZnVuY3Rpb24gYSgpe3Q9ITB9ZnVuY3Rpb24gbCgpe3Q9ITF9cmV0dXJue21vdW50OigpPT57bGV0IEU9bjtmb3IoO0U7KXtjb25zdHtkb2N1bWVudEVsZW1lbnQ6T309'@; put 'RS5kb2N1bWVudDtPLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHIpLE8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGkpLE8uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbyksTy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGEpLE8uYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1'@; put 'cCIsbCksRT12NyhFKX19LHVubW91bnQ6KCk9PntsZXQgRT1uO2Zvcig7RTspe2NvbnN0e2RvY3VtZW50RWxlbWVudDpPfT1FLmRvY3VtZW50O08ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsciksTy5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsaSksTy5yZW1vdmVFdmVudExp'@; put 'c3RlbmVyKCJrZXlkb3duIixvKSxPLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYSksTy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixsKSxFPXY3KEUpfX19fShuLnJvb3RXaW5kb3cse29uRm9jdXM6dmU9PntaKEFhKHZlKSxBYSh2ZSkuZGF0YXNldC5odEZvY3VzU291'@; put 'cmNlPz9jNi5VTktOT1dOKX0sb25DbGljazp2ZT0+e1ooQWEodmUpLGM2LkNMSUNLKX0sb25UYWJLZXlEb3duOigpPT57TygpfX0pO3JldHVybiBlZS5tb3VudCgpLHtnZXRBY3RpdmVTY29wZUlkOmZ1bmN0aW9uIGkoKXtyZXR1cm4gcj9lLmdldElkKHIpOm51bGx9LHJlZ2lzdGVyU2NvcGU6'@; put 'ZnVuY3Rpb24gbyh2ZSxNZSxIZT17fSl7ZS5oYXNJdGVtKHZlKSYmSnIoYFNjb3BlIHdpdGggaWQgIiR7dmV9IiBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtjb25zdCBXZT1mdW5jdGlvbiBUSXQobixlLHQ9e30pe2NvbnN0IHI9e3Nob3J0Y3V0c0NvbnRleHROYW1lOiJncmlkIix0eXBlOlNJdC5J'@; put 'TkxJTkUsY29udGFpbnM6ZWU9PmVlPT09ZXx8ZS5jb250YWlucyhlZSkscnVuT25seUlmOigpPT4hMCxlbmFibGVGb2N1c0NhdGNoZXJzOiEwLC4uLnR9LGk9ITE9PT1yLmVuYWJsZUZvY3VzQ2F0Y2hlcnM/bnVsbDpmdW5jdGlvbiBNSXQobixlKXtjb25zdCB0PVNJZShuLGM2LlRBQl9GUk9N'@; put 'X0FCT1ZFKSxyPVNJZShuLGM2LlRBQl9GUk9NX0JFTE9XKTtyZXR1cm4gZS5wcmVwZW5kKHQpLGUuYXBwZW5kKHIpLHthY3RpdmF0ZSgpe3QudGFiSW5kZXg9MCxyLnRhYkluZGV4PTB9LGRlYWN0aXZhdGUoKXt0LnRhYkluZGV4PS0xLHIudGFiSW5kZXg9LTF9LGRlc3Ryb3koKXt0LnJlbW92'@; put 'ZSgpLHIucmVtb3ZlKCl9fX0obixlKTtyZXR1cm57Z2V0VHlwZTooKT0+ci50eXBlLGhhc0NvbnRhaW5lckRldGFjaGVkOigpPT4hbi5yb290V3JhcHBlckVsZW1lbnQuY29udGFpbnMoZSksZ2V0U2hvcnRjdXRzQ29udGV4dE5hbWU6KCk9PnIuc2hvcnRjdXRzQ29udGV4dE5hbWUscnVuT25s'@; put 'eUlmOigpPT5yLnJ1bk9ubHlJZigpLGNvbnRhaW5zOmVlPT5yLmNvbnRhaW5zKGVlKSxhY3RpdmF0ZTooZWU9YzYuVU5LTk9XTik9PntyLm9uQWN0aXZhdGU/LihlZSl9LGRlYWN0aXZhdGU6KCk9PntyLm9uRGVhY3RpdmF0ZT8uKCl9LGFjdGl2YXRlRm9jdXNDYXRjaGVyczooKT0+e2k/LmFj'@; put 'dGl2YXRlKCl9LGRlYWN0aXZhdGVGb2N1c0NhdGNoZXJzOigpPT57aT8uZGVhY3RpdmF0ZSgpfSxlbmFibGU6KCk9PntlLnJlbW92ZUF0dHJpYnV0ZSgiaW5lcnQiKX0sZGlzYWJsZTooKT0+e2Uuc2V0QXR0cmlidXRlKCJpbmVydCIsInRydWUiKX0sZGVzdHJveTooKT0+e2k/LmRlc3Ryb3ko'@; put 'KX19fShuLE1lLEhlKTtlLmFkZEl0ZW0odmUsV2UpLHQuZ2V0T3JDcmVhdGVDb250ZXh0KFdlLmdldFNob3J0Y3V0c0NvbnRleHROYW1lKCkpfSx1bnJlZ2lzdGVyU2NvcGU6ZnVuY3Rpb24gYSh2ZSl7ZS5oYXNJdGVtKHZlKXx8SnIoYFNjb3BlIHdpdGggaWQgIiR7dmV9IiBub3QgZm91bmRg'@; put 'KSxlLmdldEl0ZW0odmUpLmRlc3Ryb3koKSxlLnJlbW92ZUl0ZW0odmUpfSxhY3RpdmF0ZVNjb3BlOih2ZSxNZSk9PmZ1bmN0aW9uIGwodmUsTWU9YzYuVU5LTk9XTil7ZS5oYXNJdGVtKHZlKXx8SnIoYFNjb3BlIHdpdGggaWQgIiR7dmV9IiBub3QgZm91bmRgKTtjb25zdCBIZT1NZT8/YzYu'@; put 'VU5LTk9XTjtnKGUuZ2V0SXRlbSh2ZSksSGUpfSh2ZSxNZSksZGVhY3RpdmF0ZVNjb3BlOnZlPT5mdW5jdGlvbiB1KHZlKXtlLmhhc0l0ZW0odmUpfHxKcihgU2NvcGUgd2l0aCBpZCAiJHt2ZX0iIG5vdCBmb3VuZGApLEUoZS5nZXRJdGVtKHZlKSl9KHZlKSxkZXN0cm95OigpPT5lZS51bm1v'@; put 'dW50KCl9fWZ1bmN0aW9uIGdkZShuKXtjb25zdHtyb3dJbmRleE1hcHBlcjplLGNvbHVtbkluZGV4TWFwcGVyOnR9PW4se25hdmlnYWJsZUhlYWRlcnM6cn09bi5nZXRTZXR0aW5ncygpLGk9ciYmbi5jb3VudENvbEhlYWRlcnMoKT4wPy1uLmNvdW50Q29sSGVhZGVycygpOjAsbz1yJiZuLmNv'@; put 'dW50Um93SGVhZGVycygpPjA/LW4uY291bnRSb3dIZWFkZXJzKCk6MCxhPTA9PT1pP2UuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChpKTppLGw9MD09PW8/dC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pOm87cmV0dXJuIG51bGw9PT1hfHxudWxsPT09bD9udWxsOm4uX2Ny'@; put 'ZWF0ZUNlbGxDb29yZHMoYSxsKX1mdW5jdGlvbiBtZGUobil7Y29uc3R7cm93SW5kZXhNYXBwZXI6ZSxjb2x1bW5JbmRleE1hcHBlcjp0fT1uLHtuYXZpZ2FibGVIZWFkZXJzOnJ9PW4uZ2V0U2V0dGluZ3MoKTtsZXQgaT1lLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCktMSxvPXQuZ2V0'@; put 'UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKS0xO2lmKGk8MCl7aWYoIXJ8fDA9PT1uLmNvdW50Q29sSGVhZGVycygpKXJldHVybiBudWxsO2k9LTF9aWYobzwwKXtpZighcnx8MD09PW4uY291bnRDb2xIZWFkZXJzKCkpcmV0dXJuIG51bGw7bz0tMX1yZXR1cm4gbi5fY3JlYXRlQ2VsbENvb3Jk'@; put 'cyhlLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoaSk/P2ksdC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG8pPz9vKX1jb25zdCBjTz0iZ3JpZERlZmF1bHQiLHNfPSJncmlkIix0Wj0iZ3JpZC50YWJOYXZpZ2F0aW9uIixSNz0iZWRpdG9yTWFuYWdlci5oYW5kbGluZ0VkaXRv'@; put 'ciI7ZnVuY3Rpb24gSUl0KG4pe2NvbnN0IGU9ZnVuY3Rpb24ga0l0KG4pe3JldHVybiBlPT57aWYoIWUpcmV0dXJuIG51bGw7Y29uc3R7cm93SW5kZXhNYXBwZXI6dCxjb2x1bW5JbmRleE1hcHBlcjpyfT1uO2lmKHQuaXNIaWRkZW4oZS5yb3cpfHxyLmlzSGlkZGVuKGUuY29sKSlyZXR1cm4g'@; put 'bnVsbDtjb25zdCBpPWdkZShuKSxvPW1kZShuKTtyZXR1cm4gbnVsbD09PWl8fG51bGw9PT1vP251bGw6KGUucm93PVZzKGUucm93LGkucm93Pz9lLnJvdyxvLnJvdz8/ZS5yb3cpLGUuY29sPVZzKGUuY29sLGkuY29sPz9lLmNvbCxvLmNvbD8/ZS5jb2wpLGUpfX0obiksdD17d3JhcHBlZDoh'@; put 'MSxmbGlwcGVkOiExfTtsZXQgcixpPSEwLG89ITE7bi5hZGRIb29rKCJhZnRlclNlbGVjdGlvbiIsKCk9PntpJiYocj1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0KX0pLG4uYWRkSG9vaygiYmVmb3JlUm93V3JhcCIsKHUsZyxFKT0+e3Qud3JhcHBlZD0hMCx0LmZsaXBw'@; put 'ZWQ9RX0pLG4uYWRkSG9vaygiYmVmb3JlRW1wdHlEYXRhU3RhdGVTaG93IiwoKT0+e289ITB9KSxuLmFkZEhvb2soImJlZm9yZUVtcHR5RGF0YVN0YXRlSGlkZSIsKCk9PntvPSExfSksbi5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KHNfKT8uYWRkU2hvcnRjdXRzKFt7a2V5czpb'@; put 'WyJUYWIiXSxbIlNoaWZ0IiwiVGFiIl1dLHByZXZlbnREZWZhdWx0OiExLHN0b3BQcm9wYWdhdGlvbjohMSxyZWxhdGl2ZVRvR3JvdXA6Y08sZ3JvdXA6dFoscG9zaXRpb246ImJlZm9yZSIsY2FsbGJhY2soKXtjb25zdHt0YWJOYXZpZ2F0aW9uOnV9PW4uZ2V0U2V0dGluZ3MoKTtuLmdldFNl'@; put 'bGVjdGVkUmFuZ2VBY3RpdmUoKSYmIXUmJihpPSExKX19LHtrZXlzOltbIlRhYiJdLFsiU2hpZnQiLCJUYWIiXV0scHJldmVudERlZmF1bHQ6ITEsc3RvcFByb3BhZ2F0aW9uOiExLHJlbGF0aXZlVG9Hcm91cDpjTyxncm91cDp0WixjYWxsYmFjayh1KXtjb25zdHt0YWJOYXZpZ2F0aW9uOmcs'@; put 'YXV0b1dyYXBSb3c6RX09bi5nZXRTZXR0aW5ncygpO2k9ITAsKCFnfHwhbi5zZWxlY3Rpb24uaXNTZWxlY3RlZCgpfHxFJiZ0LndyYXBwZWQmJnQuZmxpcHBlZHx8IUUmJnQud3JhcHBlZCkmJihFJiZ0LndyYXBwZWQmJnQuZmxpcHBlZCYmKHI9dS5zaGlmdEtleT9nZGUobik6bWRlKG4pKSx0'@; put 'LndyYXBwZWQ9ITEsdC5mbGlwcGVkPSExKX0scG9zaXRpb246ImFmdGVyIn1dKTtjb25zdCBsPW4ucm9vdEdyaWRDb250ZW50RWxlbWVudD8/bi5yb290RWxlbWVudDtuLmdldEZvY3VzU2NvcGVNYW5hZ2VyKCkucmVnaXN0ZXJTY29wZSgiZ3JpZCIsbCx7Y29udGFpbnM6dT0+IShsIT09dSYm'@; put 'IWwuY29udGFpbnModSkpfHxudWxsPT09dS5jbG9zZXN0KCIuaHRNZW51IikmJm4ucm9vdFBvcnRhbEVsZW1lbnQuY29udGFpbnModSkscnVuT25seUlmOigpPT57Y29uc3R7bmF2aWdhYmxlSGVhZGVyczp1fT1uLmdldFNldHRpbmdzKCk7cmV0dXJuISgob3x8IXUpJiYwPT09bi5jb3VudFJl'@; put 'bmRlcmVkUm93cygpJiYwPT09bi5jb3VudFJlbmRlcmVkQ29scygpJiZuLmNvdW50Um93SGVhZGVycygpPjAmJm4uY291bnRDb2xIZWFkZXJzKCk+MHx8ISghdSYmbi5jb3VudFJlbmRlcmVkUm93cygpPjAmJm4uY291bnRSZW5kZXJlZENvbHMoKT4wfHx1JiYobi5jb3VudFJvd0hlYWRlcnMo'@; put 'KT4wfHxuLmNvdW50Q29sSGVhZGVycygpPjApKSl9LG9uQWN0aXZhdGU6dT0+e2lmKCJ0YWJfZnJvbV9hYm92ZSI9PT11KXtjb25zdCBnPWUocik/P2dkZShuKTtpZihnKXtjb25zdCBFPW4ucnVuSG9va3MoIm1vZGlmeUZvY3VzT25UYWJOYXZpZ2F0aW9uIiwiZnJvbV9hYm92ZSIsZykse3Jv'@; put 'dzpPLGNvbDpafT1nOyExIT09RSYmbnVsbCE9PU8mJm51bGwhPT1aJiYobi5zZWxlY3RDZWxsKE8sWiksbi5nZXRGb2N1c01hbmFnZXIoKS5mb2N1c09uSGlnaGxpZ2h0ZWRDZWxsKCkpfX1lbHNlIGlmKCJ0YWJfZnJvbV9iZWxvdyI9PT11KXtjb25zdCBnPWUocik/P21kZShuKTtpZihnKXtj'@; put 'b25zdCBFPW4ucnVuSG9va3MoIm1vZGlmeUZvY3VzT25UYWJOYXZpZ2F0aW9uIiwiZnJvbV9iZWxvdyIsZykse3JvdzpPLGNvbDpafT1nOyExIT09RSYmbnVsbCE9PU8mJm51bGwhPT1aJiZuLnNlbGVjdENlbGwoTyxaKX19fX0pfWNvbnN0IEVJZT1uZXcgTWFwKFtbIiAiLCJzcGFjZSJdLFsi'@; put 'c3BhY2ViYXIiLCJzcGFjZSJdLFsic2Nyb2xsIiwic2Nyb2xsbG9jayJdLFsiZGVsIiwiZGVsZXRlIl0sWyJlc2MiLCJlc2NhcGUiXSxbIm1lZGlhbmV4dHRyYWNrIiwibWVkaWF0cmFja25leHQiXSxbIm1lZGlhcHJldmlvdXN0cmFjayIsIm1lZGlhdHJhY2twcmV2aW91cyJdLFsidm9sdW1l'@; put 'dXAiLCJhdWRpb3ZvbHVtZXVwIl0sWyJ2b2x1bWVkb3duIiwiYXVkaW92b2x1bWVkb3duIl0sWyJ2b2x1bWVtdXRlIiwiYXVkaW92b2x1bWVtdXRlIl0sWyJtdWx0aXBseSIsIioiXSxbImFkZCIsIisiXSxbImRpdmlkZSIsIi8iXSxbInN1YnRyYWN0IiwiLSJdLFsibGVmdCIsImFycm93bGVm'@; put 'dCJdLFsicmlnaHQiLCJhcnJvd3JpZ2h0Il0sWyJ1cCIsImFycm93dXAiXSxbImRvd24iLCJhcnJvd2Rvd24iXV0pLG5aPW49Pm4ubWFwKGU9Pntjb25zdCB0PWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gRUllLmhhcyh0KT9FSWUuZ2V0KHQpPz90OnR9KS5zb3J0KChlLHQpPT5lLmxvY2FsZUNv'@; put 'bXBhcmUodCkpLmpvaW4oIisiKSxNSWU9bmV3IE1hcChbWzk2LCJudW1wYWQwIl0sWzk3LCJudW1wYWQxIl0sWzk4LCJudW1wYWQyIl0sWzk5LCJudW1wYWQzIl0sWzEwMCwibnVtcGFkNCJdLFsxMDEsIm51bXBhZDUiXSxbMTAyLCJudW1wYWQ2Il0sWzEwMywibnVtcGFkNyJdLFsxMDQsIm51'@; put 'bXBhZDgiXSxbMTA1LCJudW1wYWQ5Il0sWzEwNiwibXVsdGlwbHkiXSxbMTA3LCJhZGQiXSxbMTA4LCJkZWNpbWFsIl0sWzEwOSwic3VidHJhY3QiXSxbMTEwLCJkZWNpbWFsIl0sWzExMSwiZGl2aWRlIl0sWzExMiwiZjEiXSxbMTEzLCJmMiJdLFsxMTQsImYzIl0sWzExNSwiZjQiXSxbMTE2'@; put 'LCJmNSJdLFsxMTcsImY2Il0sWzExOCwiZjciXSxbMTE5LCJmOCJdLFsxMjAsImY5Il0sWzEyMSwiZjEwIl0sWzEyMiwiZjExIl0sWzEyMywiZjEyIl0sWzE4Niwic2VtaWNvbG9uIl0sWzE4NywiZXF1YWwiXSxbMTg4LCJjb21tYSJdLFsxODksIm1pbnVzIl0sWzE5MCwicGVyaW9kIl0sWzE5'@; put 'MSwic2xhc2giXSxbMTkyLCJiYWNrcXVvdGUiXSxbMjE5LCJicmFja2V0bGVmdCJdLFsyMjAsImJhY2tzbGFzaCJdLFsyMjEsImJyYWNrZXRyaWdodCJdLFsyMjIsInF1b3RlIl1dKSx1Tz0oe3doaWNoOm4sa2V5OmV9KT0+e2lmKE1JZS5oYXMobikpcmV0dXJuIE1JZS5nZXQobik/P2UudG9M'@; put 'b3dlckNhc2UoKTtjb25zdCB0PVN0cmluZy5mcm9tQ2hhckNvZGUobikudG9Mb3dlckNhc2UoKTtyZXR1cm4vXlthLXowLTldJC8udGVzdCh0KT90OmUudG9Mb3dlckNhc2UoKX0sT0l0PVsibWV0YSIsImFsdCIsInNoaWZ0IiwiY29udHJvbCJdLGRPPW49Pk9JdC5pbmNsdWRlcyhuKSx2VD0o'@; put 'bixlPSExKT0+e2NvbnN0IHQ9W107cmV0dXJuIG4uYWx0S2V5JiZ0LnB1c2goImFsdCIpLGUmJihuLmN0cmxLZXl8fG4ubWV0YUtleSk/dC5wdXNoKCJjb250cm9sL21ldGEiKToobi5jdHJsS2V5JiZ0LnB1c2goImNvbnRyb2wiKSxuLm1ldGFLZXkmJnQucHVzaCgibWV0YSIpKSxuLnNoaWZ0'@; put 'S2V5JiZ0LnB1c2goInNoaWZ0IiksdH0sVEllPVN5bWJvbCgic2hvcnRjdXQtY29udGV4dCIpO2Z1bmN0aW9uIHhJZShuKXtyZXR1cm4gQ2EobikmJm4uX19raW5kT2Y9PT1USWV9Y29uc3QgaE89ZnVuY3Rpb24gUEl0KCl7Y29uc3Qgbj1uZXcgU2V0O3JldHVybntwcmVzcyhlKXtuLmFkZChl'@; put 'KX0scmVsZWFzZShlKXtuLmRlbGV0ZShlKX0scmVsZWFzZUFsbCgpe24uY2xlYXIoKX0saXNQcmVzc2VkOmU9Pm4uaGFzKGUpfX0oKSxmTz1uZXcgV2Vha01hcCxBSWU9bj0+e2lmKCJzdHJpbmciPT10eXBlb2Ygbi5rZXkpe2NvbnN0IGU9dU8obik7ZE8oZSkmJmhPLnByZXNzKGUpfX0sa0ll'@; put 'PW49PntpZigic3RyaW5nIj09dHlwZW9mIG4ua2V5KXtjb25zdCBlPXVPKG4pO2RPKGUpJiZoTy5yZWxlYXNlKGUpfX0sQkl0PXtuYW1lOiJlZGl0b3JDbG9zZUFuZFNhdmUiLGNhbGxiYWNrKG4pe24uX2dldEVkaXRvck1hbmFnZXIoKS5jbG9zZUVkaXRvckFuZFNhdmVDaGFuZ2VzKCl9fSxS'@; put 'SWU9e19ob29rc1N0b3JhZ2U6T2JqZWN0LmNyZWF0ZShudWxsKSxhZGRIb29rKG4sZSl7cmV0dXJuIHRoaXMuX2hvb2tzU3RvcmFnZVtuXXx8KHRoaXMuX2hvb2tzU3RvcmFnZVtuXT1bXSksdGhpcy5ob3QuYWRkSG9vayhuLGUpLHRoaXMuX2hvb2tzU3RvcmFnZVtuXS5wdXNoKGUpLHRoaXN9'@; put 'LHJlbW92ZUhvb2tzQnlLZXkobil7WG4odGhpcy5faG9va3NTdG9yYWdlW25dfHxbXSxlPT57dGhpcy5ob3QucmVtb3ZlSG9vayhuLGUpfSl9LGNsZWFySG9va3MoKXthYyh0aGlzLl9ob29rc1N0b3JhZ2UsKG4sZSk9PnRoaXMucmVtb3ZlSG9va3NCeUtleShlKSksdGhpcy5faG9va3NTdG9y'@; put 'YWdlPXt9fX07SzUoUkllLCJNSVhJTl9OQU1FIiwiaG9va3NSZWZSZWdpc3RlcmVyIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IFVJdD1SSWU7ZnVuY3Rpb24gSUllKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBw'@; put 'cml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIERJZShuLGUpeyhmdW5jdGlvbiB6SXQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFu'@; put 'IG9iamVjdCIpfSkobixlKSxlLmFkZChuKX1jb25zdCBWaD1PYmplY3QuZnJlZXplKHtWSVJHSU46IlNUQVRFX1ZJUkdJTiIsRURJVElORzoiU1RBVEVfRURJVElORyIsV0FJVElORzoiU1RBVEVfV0FJVElORyIsRklOSVNIRUQ6IlNUQVRFX0ZJTklTSEVEIn0pO3ZhciBMSWU9bmV3IFdlYWtT'@; put 'ZXQsT0llPW5ldyBXZWFrU2V0O2NsYXNzIEk3e3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4iYmFzZSJ9X2ZpcmVDYWxsYmFja3MoZSl7dGhpcy5fY2xvc2VDYWxsYmFjayYmKHRoaXMuX2Nsb3NlQ2FsbGJhY2soZSksdGhpcy5fY2xvc2VDYWxsYmFjaz1udWxsKX1pbml0KCl7fWdl'@; put 'dFZhbHVlKCl7SnIoIkVkaXRvciBnZXRWYWx1ZSgpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9c2V0VmFsdWUoZSl7SnIoIkVkaXRvciBzZXRWYWx1ZSgpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9b3BlbihlKXtKcigiRWRpdG9yIG9wZW4oKSBtZXRob2QgdW5pbXBsZW1lbnRlZCIpfWNsb3Nl'@; put 'KCl7SnIoIkVkaXRvciBjbG9zZSgpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9Zm9jdXMoKXtKcigiRWRpdG9yIGZvY3VzKCkgbWV0aG9kIHVuaW1wbGVtZW50ZWQiKX1wcmVwYXJlKGUsdCxyLGksbyxhKXt0aGlzLlREPWksdGhpcy5yb3c9ZSx0aGlzLmNvbD10LHRoaXMucHJvcD1yLHRoaXMu'@; put 'b3JpZ2luYWxWYWx1ZT1vLHRoaXMuY2VsbFByb3BlcnRpZXM9YSx0aGlzLnN0YXRlPXRoaXMuaXNPcGVuZWQoKT90aGlzLnN0YXRlOlZoLlZJUkdJTn1leHRlbmQoKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0aGlzLmNvbnN0cnVjdG9ye319c2F2ZVZhbHVlKGUsdCl7bGV0IHIsaSxvLGE7aWYo'@; put 'dCl7Y29uc3QgdT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCksZz11Py5nZXRUb3BTdGFydENvcm5lcigpLEU9dT8uZ2V0Qm90dG9tRW5kQ29ybmVyKCk7cj1nPy5yb3c/P3RoaXMucm93LGk9Zz8uY29sPz90aGlzLmNvbCxvPUU/LnJvdz8/dGhpcy5yb3csYT1FPy5jb2w/P3Ro'@; put 'aXMuY29sfWVsc2VbcixpLG8sYV09W3RoaXMucm93LHRoaXMuY29sLG51bGwsbnVsbF07Y29uc3QgbD10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIscixpLCExLCJtZXRhIik7QXJyYXkuaXNBcnJheShsKSYmKFtyLGldPWwpLHRoaXMuaG90LnBvcHVsYXRlRnJvbUFy'@; put 'cmF5KHIsaSxlLG8sYSwiZWRpdCIpfWJlZ2luRWRpdGluZyhlLHQpe2lmKHRoaXMuc3RhdGUhPT1WaC5WSVJHSU4pcmV0dXJuO2lmKG51bGw9PT10aGlzLnJvd3x8bnVsbD09PXRoaXMuY29sKXJldHVybiB2b2lkIEhhKCJFZGl0b3Igb3BlbmVkIHdpdGhvdXQgdmFsaWQgY2VsbCBjb29yZGlu'@; put 'YXRlcy4iKTtjb25zdCByPXRoaXMuaG90LGk9ci5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMucm93KSxvPXIuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh0aGlzLmNvbCk7aWYobnVsbCE9PWkmJm51bGwhPT1v'@; put 'JiZyLnZpZXcuc2Nyb2xsVmlld3BvcnQoe3JvdzppLGNvbDpvfSksdGhpcy5zdGF0ZT1WaC5FRElUSU5HLHRoaXMuaXNJbkZ1bGxFZGl0TW9kZSgpKXtjb25zdCBhPUtZKHRoaXMub3JpZ2luYWxWYWx1ZSx0aGlzLmhvdC5nZXRDZWxsTWV0YSh0aGlzLnJvdyx0aGlzLmNvbCkpLGw9InN0cmlu'@; put 'ZyI9PXR5cGVvZiBlP2U6UGwoYSk7dGhpcy5zZXRWYWx1ZShsKX10aGlzLm9wZW4odCksdGhpcy5fb3BlbmVkPSEwLHRoaXMuZm9jdXMoKSxyLnZpZXcucmVuZGVyKCksci5ydW5Ib29rcygiYWZ0ZXJCZWdpbkVkaXRpbmciLHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmFkZEhvb2soImJlZm9y'@; put 'ZURpYWxvZ1Nob3ciLCgpPT50aGlzLmNhbmNlbENoYW5nZXMoKSl9ZmluaXNoRWRpdGluZyhlLHQscil7aWYocil7Y29uc3Qgbz10aGlzLl9jbG9zZUNhbGxiYWNrO3RoaXMuX2Nsb3NlQ2FsbGJhY2s9YT0+e28mJm8oYSkscihhKSx0aGlzLmhvdC52aWV3LnJlbmRlcigpfX1pZighdGhpcy5p'@; put 'c1dhaXRpbmcoKSl7aWYodGhpcy5zdGF0ZT09PVZoLlZJUkdJTilyZXR1cm4gdm9pZCB0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57dGhpcy5fZmlyZUNhbGxiYWNrcyghMCl9KTtpZih0aGlzLnN0YXRlPT09VmguRURJVElORyl7aWYoZSlyZXR1cm4gdGhpcy5jYW5jZWxDaGFuZ2Vz'@; put 'KCksdm9pZCB0aGlzLmhvdC52aWV3LnJlbmRlcigpO2xldCBvPXRoaXMuZ2V0VmFsdWUoKTt0aGlzLmNlbGxQcm9wZXJ0aWVzLnRyaW1XaGl0ZXNwYWNlJiYobz0ic3RyaW5nIj09dHlwZW9mIG8/U3RyaW5nLnByb3RvdHlwZS50cmltLmNhbGwob3x8IiIpOm8pLCJmdW5jdGlvbiI9PXR5cGVv'@; put 'ZiB0aGlzLmNlbGxQcm9wZXJ0aWVzLnZhbHVlUGFyc2VyJiYobz10aGlzLmNlbGxQcm9wZXJ0aWVzLnZhbHVlUGFyc2VyKG8sdGhpcy5jZWxsUHJvcGVydGllcykpLHRoaXMuc3RhdGU9VmguV0FJVElORyx0aGlzLnNhdmVWYWx1ZShbW29dXSx0KSx0aGlzLmhvdC5nZXRDZWxsVmFsaWRhdG9y'@; put 'KHRoaXMuY2VsbFByb3BlcnRpZXMpP3RoaXMuaG90LmFkZEhvb2tPbmNlKCJwb3N0QWZ0ZXJWYWxpZGF0ZSIsYT0+e3RoaXMuc3RhdGU9VmguRklOSVNIRUQsdGhpcy5kaXNjYXJkRWRpdG9yKGEpfSk6KHRoaXMuc3RhdGU9VmguRklOSVNIRUQsdGhpcy5kaXNjYXJkRWRpdG9yKCEwKSl9fX1j'@; put 'YW5jZWxDaGFuZ2VzKCl7dGhpcy5zdGF0ZT1WaC5GSU5JU0hFRCx0aGlzLmRpc2NhcmRFZGl0b3IoKX1kaXNjYXJkRWRpdG9yKGUpe2lmKHRoaXMuc3RhdGU9PT1WaC5GSU5JU0hFRClpZighMT09PWUmJiEwIT09dGhpcy5jZWxsUHJvcGVydGllcy5hbGxvd0ludmFsaWQpe2lmKG51bGw9PT10'@; put 'aGlzLnJvd3x8bnVsbD09PXRoaXMuY29sKXJldHVybjt0aGlzLmhvdC5zZWxlY3RDZWxsKHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmZvY3VzKCksdGhpcy5zdGF0ZT1WaC5FRElUSU5HLHRoaXMuX2ZpcmVDYWxsYmFja3MoITEpfWVsc2UgdGhpcy5jbG9zZSgpLHRoaXMuX29wZW5lZD0hMSx0'@; put 'aGlzLl9mdWxsRWRpdE1vZGU9ITEsdGhpcy5zdGF0ZT1WaC5WSVJHSU4sdGhpcy5fZmlyZUNhbGxiYWNrcyghMCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImdyaWQiKX1lbmFibGVGdWxsRWRpdE1vZGUoKXt0aGlzLl9mdWxsRWRpdE1vZGU9'@; put 'ITB9aXNJbkZ1bGxFZGl0TW9kZSgpe3JldHVybiB0aGlzLl9mdWxsRWRpdE1vZGV9aXNPcGVuZWQoKXtyZXR1cm4gdGhpcy5fb3BlbmVkfWlzV2FpdGluZygpe3JldHVybiB0aGlzLnN0YXRlPT09VmguV0FJVElOR31nZXRFZGl0ZWRDZWxsUmVjdCgpe2NvbnN0IGU9dGhpcy5nZXRFZGl0ZWRD'@; put 'ZWxsKCk7aWYoIWUpcmV0dXJuO2NvbnN0e3d0T3ZlcmxheXM6dCx3dFZpZXdwb3J0OnJ9PXRoaXMuaG90LnZpZXcuX3d0LGk9dGhpcy5ob3Qucm9vdFdpbmRvdyxvPVgwKGUpLGE9WmQoZSksbD1YMCh0aGlzLmhvdC5yb290RWxlbWVudCksdT1aZCh0aGlzLmhvdC5yb290RWxlbWVudCksZz10'@; put 'LnRvcE92ZXJsYXk/LmhvbGRlcixFPXQuaW5saW5lU3RhcnRPdmVybGF5Py5ob2xkZXIsTz1nIT09aT9nLnNjcm9sbFRvcDowLFo9RSE9PWk/RS5zY3JvbGxMZWZ0OjAsZWU9aS5pbm5lcldpZHRoLWwubGVmdC11LHt3dFRhYmxlOnZlfT10LmdldFBhcmVudE92ZXJsYXkoZSk/P3RoaXMuaG90'@; put 'LnZpZXcuX3d0LE1lPXZlLm5hbWUsSGU9WyJtYXN0ZXIiLCJpbmxpbmVfc3RhcnQiXS5pbmNsdWRlcyhNZSk/TzowLFdlPVsibWFzdGVyIiwidG9wIiwiYm90dG9tIl0uaW5jbHVkZXMoTWUpP1o6MDtsZXQgQ3Q9by50b3AtbC50b3AtKG8udG9wPT09bC50b3A/MDoxKS1IZSxBdD0wO0F0PXRo'@; put 'aXMuaG90LmlzUnRsKCk/aS5pbm5lcldpZHRoLW8ubGVmdC1hLWVlLTErV2U6by5sZWZ0LWwubGVmdC0xLVdlLFsidG9wIiwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhNZSkmJihDdCs9dC50b3BPdmVybGF5Py5nZXRPdmVybGF5T2Zmc2V0KCk/PzApLFsiaW5saW5lX3N0'@; put 'YXJ0IiwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhNZSkmJihBdCs9TWF0aC5hYnModC5pbmxpbmVTdGFydE92ZXJsYXk/LmdldE92ZXJsYXlPZmZzZXQoKT8/MCkpO2NvbnN0IEt0PXRoaXMuaG90Lmhhc0NvbEhlYWRlcnMoKSxxdD10aGlzLmhvdC5yb3dJbmRleE1hcHBl'@; put 'ci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMucm93Pz8wKSxnbj10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMuY29sPz8wKSxDbj10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlSW5kZXhlc0xl'@; put 'bmd0aCgpLXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpOyhLdCYmKHF0Pz8wKTw9MHx8cXQ9PT1DbikmJihDdCs9MSksKGduPz8wKTw9MCYmKEF0Kz0xKTtjb25zdCBxcj1yLnJvd3NSZW5kZXJDYWxjdWxhdG9yPy5zdGFydFBvc2l0aW9uPz8wLCRuPXIu'@; put 'Y29sdW1uc1JlbmRlckNhbGN1bGF0b3I/LnN0YXJ0UG9zaXRpb24/PzAsVHI9TWF0aC5hYnModC5pbmxpbmVTdGFydE92ZXJsYXk/LmdldFNjcm9sbFBvc2l0aW9uKCk/PzApLHJpPXQudG9wT3ZlcmxheT8uZ2V0U2Nyb2xsUG9zaXRpb24oKT8/MCxmbj1HZCh0aGlzLmhvdC5yb290RG9jdW1l'@; put 'bnQpLHlyPUlJZSh0aGlzLExJZSxZSXQpLmNhbGwodGhpcyxlLE1lLHFyLHJpLGZuKSxBbj1JSWUodGhpcyxPSWUsWkl0KS5jYWxsKHRoaXMsZSxNZSx2ZSxhLCRuLFRyKSxIcj1pLmdldENvbXB1dGVkU3R5bGUoZSksdGk9dGhpcy5ob3QuaXNSdGwoKT8iYm9yZGVyUmlnaHRXaWR0aCI6ImJv'@; put 'cmRlckxlZnRXaWR0aCIsZnI9TnVtYmVyLnBhcnNlSW50KEhyW3RpXSwxMCk+MD8wOjEsZWk9TnVtYmVyLnBhcnNlSW50KEhyLmJvcmRlclRvcFdpZHRoLDEwKT4wPzA6MSxQbz1aZChlKStmcixIbz1IaChlKStlaSx4aT1nJiZSc2UoZyk/Zm46MCxUbz1FJiZJc2UoRSk/Zm46MCx3cz10aGlz'@; put 'LmhvdC52aWV3Lm1heGltdW1WaXNpYmxlRWxlbWVudFdpZHRoKEFuKS14aStmcjtyZXR1cm57dG9wOkN0LHN0YXJ0OkF0LGhlaWdodDpIbyxtYXhIZWlnaHQ6TWF0aC5tYXgodGhpcy5ob3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRIZWlnaHQoeXI/PzApLVRvK2VpLHRoaXMuaG90LnN0'@; put 'eWxlc0hhbmRsZXIuZ2V0RGVmYXVsdFJvd0hlaWdodCgpPz8wKSx3aWR0aDpQbyxtYXhXaWR0aDp3c319Z2V0RWRpdGVkQ2VsbHNMYXllckNsYXNzKCl7c3dpdGNoKHRoaXMuY2hlY2tFZGl0b3JTZWN0aW9uKCkpe2Nhc2UiaW5saW5lLXN0YXJ0IjpyZXR1cm4iaHRfY2xvbmVfbGVmdCBodF9j'@; put 'bG9uZV9pbmxpbmVfc3RhcnQiO2Nhc2UiYm90dG9tIjpyZXR1cm4iaHRfY2xvbmVfYm90dG9tIjtjYXNlImJvdHRvbS1pbmxpbmUtc3RhcnQtY29ybmVyIjpyZXR1cm4iaHRfY2xvbmVfYm90dG9tX2xlZnRfY29ybmVyIGh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyIjtjYXNl'@; put 'InRvcCI6cmV0dXJuImh0X2Nsb25lX3RvcCI7Y2FzZSJ0b3AtaW5saW5lLXN0YXJ0LWNvcm5lciI6cmV0dXJuImh0X2Nsb25lX3RvcF9sZWZ0X2Nvcm5lciBodF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciI7ZGVmYXVsdDpyZXR1cm4iaHRfY2xvbmVfbWFzdGVyIn19Z2V0RWRpdGVk'@; put 'Q2VsbCgpe3JldHVybiBudWxsPT09dGhpcy5yb3d8fG51bGw9PT10aGlzLmNvbD9udWxsOnRoaXMuaG90LmdldENlbGwodGhpcy5yb3csdGhpcy5jb2wsITApfWNoZWNrRWRpdG9yU2VjdGlvbigpe2lmKG51bGw9PT10aGlzLnJvd3x8bnVsbD09PXRoaXMuY29sKXJldHVybiIiO2NvbnN0IGU9'@; put 'dGhpcy5ob3QuY291bnRSb3dzKCksdD10aGlzLmhvdC5nZXRTZXR0aW5ncygpO2xldCByPSIiO3JldHVybiB0aGlzLnJvdzwodC5maXhlZFJvd3NUb3A/PzApP3I9dGhpcy5jb2w8KHQuZml4ZWRDb2x1bW5zU3RhcnQ/PzApPyJ0b3AtaW5saW5lLXN0YXJ0LWNvcm5lciI6InRvcCI6dC5maXhl'@; put 'ZFJvd3NCb3R0b20mJnRoaXMucm93Pj1lLXQuZml4ZWRSb3dzQm90dG9tP3I9dGhpcy5jb2w8KHQuZml4ZWRDb2x1bW5zU3RhcnQ/PzApPyJib3R0b20taW5saW5lLXN0YXJ0LWNvcm5lciI6ImJvdHRvbSI6dGhpcy5jb2w8KHQuZml4ZWRDb2x1bW5zU3RhcnQ/PzApJiYocj0iaW5saW5lLXN0'@; put 'YXJ0Iikscn1jb25zdHJ1Y3RvcihlKXtESWUodGhpcyxMSWUpLERJZSh0aGlzLE9JZSksdGhpcy5zdGF0ZT1WaC5WSVJHSU4sdGhpcy5fb3BlbmVkPSExLHRoaXMuX2Z1bGxFZGl0TW9kZT0hMSx0aGlzLl9jbG9zZUNhbGxiYWNrPW51bGwsdGhpcy5fY2xvc2VBZnRlckRhdGFDaGFuZ2U9ITAs'@; put 'dGhpcy5URD1udWxsLHRoaXMucm93PW51bGwsdGhpcy5jb2w9bnVsbCx0aGlzLnByb3A9bnVsbCx0aGlzLm9yaWdpbmFsVmFsdWU9bnVsbCx0aGlzLmhvdD1lLHRoaXMuaW5pdCgpfX1mdW5jdGlvbiBZSXQobixlLHQscixpKXtsZXQgbz1uLm9mZnNldFRvcDtjb25zdHt3dE92ZXJsYXlzOmF9'@; put 'PXRoaXMuaG90LnZpZXcuX3d0O2lmKFsiaW5saW5lX3N0YXJ0IiwibWFzdGVyIl0uaW5jbHVkZXMoZSkmJihvKz10LXIpLFsiYm90dG9tIiwiYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhlKSYmYS5ib3R0b21PdmVybGF5Py5jbG9uZSl7Y29uc3R7d3RWaWV3cG9ydDps'@; put 'LHd0VGFibGU6dX09YS5ib3R0b21PdmVybGF5LmNsb25lO28rPWwuZ2V0V29ya3NwYWNlSGVpZ2h0KCktdS5nZXRIZWlnaHQoKS1pfXJldHVybiBvfWZ1bmN0aW9uIFpJdChuLGUsdCxyLGksbyl7bGV0IGE9bi5vZmZzZXRMZWZ0O3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyhhPWE+PTA/dC5n'@; put 'ZXRXaWR0aCgpLW4ub2Zmc2V0TGVmdDpNYXRoLmFicyhhKSxhKz1pLW8tcik6WyJ0b3AiLCJtYXN0ZXIiLCJib3R0b20iXS5pbmNsdWRlcyhlKSYmKGErPWktbyksYX1ZbChJNyxVSXQpO2NvbnN0IEdJdD17bmFtZToiZWRpdG9yQ2xvc2VBbmRTYXZlQnlBcnJvd0tleXMiLGNhbGxiYWNrKG4s'@; put 'ZSx0KXtjb25zdCByPW4uX2dldEVkaXRvck1hbmFnZXIoKSxpPXIuZ2V0QWN0aXZlRWRpdG9yKCk7aT8uaXNJbkZ1bGxFZGl0TW9kZSgpJiZpPy5zdGF0ZT09PVZoLkVESVRJTkd8fChyLmNsb3NlRWRpdG9yQW5kU2F2ZUNoYW5nZXMoKSxuLmdldFNlbGVjdGVkKCkmJih0LmluY2x1ZGVzKCJh'@; put 'cnJvd2Rvd24iKT9uLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgxLDApOnQuaW5jbHVkZXMoImFycm93dXAiKT9uLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgtMSwwKTp0LmluY2x1ZGVzKCJhcnJvd2xlZnQiKT9uLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLC0xKm4uZ2V0RGlyZWN0'@; put 'aW9uRmFjdG9yKCkpOnQuaW5jbHVkZXMoImFycm93cmlnaHQiKSYmbi5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoMCxuLmdldERpcmVjdGlvbkZhY3RvcigpKSksZS5wcmV2ZW50RGVmYXVsdCgpKX19LCRJdD17bmFtZToiZWRpdG9yQ2xvc2VBbmRTYXZlQnlFbnRlciIsY2FsbGJhY2sobixl'@; put 'KXtjb25zdCB0PW4uX2dldEVkaXRvck1hbmFnZXIoKTt0LmNsb3NlRWRpdG9yQW5kU2F2ZUNoYW5nZXMoZS5jdHJsS2V5fHxlLm1ldGFLZXkpLHQubW92ZVNlbGVjdGlvbkFmdGVyRW50ZXIoZSl9fSxxSXQ9e25hbWU6ImVkaXRvckNsb3NlV2l0aG91dFNhdmluZyIsY2FsbGJhY2sobil7Y29u'@; put 'c3QgZT1uLl9nZXRFZGl0b3JNYW5hZ2VyKCk7ZS5jbG9zZUVkaXRvckFuZFJlc3RvcmVPcmlnaW5hbFZhbHVlKG4uZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpKSxlLmFjdGl2ZUVkaXRvcj8uZm9jdXMoKX19LEtJdD17bmFtZToiZWRpdG9yRmFzdE9wZW4iLGNhbGxiYWNr'@; put 'KG4sZSl7bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodD8uaXNIZWFkZXIoKXx8bi5fZ2V0RWRpdG9yTWFuYWdlcigpLm9wZW5FZGl0b3IobnVsbCxlLCEwKX19LFhJdD17bmFtZToiZWRpdG9yT3BlbiIsY2FsbGJhY2sobixlLHQpe2NvbnN0e3NlbGVjdGlvbjpyfT1uLGk9'@; put 'bi5fZ2V0RWRpdG9yTWFuYWdlcigpLG89bi5nZXRTZWxlY3RlZFJhbmdlKCksYT1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKSxsPWE/LmhpZ2hsaWdodDtpZigobz8uc29tZSh1PT5yLmlzTXVsdGlwbGUodSkpfHwobz8ubGVuZ3RoPz8wKT4xKSYmIWE/LmlzSGVhZGVyKCkmJm4uY291bnRS'@; put 'ZW5kZXJlZENvbHMoKT4wJiZuLmNvdW50UmVuZGVyZWRSb3dzKCk+MCl7Y29uc3QgdT1uLmdldFNldHRpbmdzKCksZz0iZnVuY3Rpb24iPT10eXBlb2YgdS5lbnRlck1vdmVzP3UuZW50ZXJNb3ZlcyhlKTp1LmVudGVyTW92ZXM7cmV0dXJuIHZvaWQodC5pbmNsdWRlcygic2hpZnQiKT9yLnRy'@; put 'YW5zZm9ybUZvY3VzKC0oZz8ucm93Pz8wKSwtKGc/LmNvbD8/MCkpOnIudHJhbnNmb3JtRm9jdXMoZz8ucm93Pz8wLGc/LmNvbD8/MCkpfWw/LmlzSGVhZGVyKCl8fChuLmdldFNldHRpbmdzKCkuZW50ZXJCZWdpbnNFZGl0aW5nP2kuY2VsbFByb3BlcnRpZXMucmVhZE9ubHk/aS5tb3ZlU2Vs'@; put 'ZWN0aW9uQWZ0ZXJFbnRlcihlKTppLm9wZW5FZGl0b3IobnVsbCxlLCEwKTppLm1vdmVTZWxlY3Rpb25BZnRlckVudGVyKGUpLEYzKGUpKX19LEpJdD17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Eb3duIixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZX09bix0PW4uZ2V0U2VsZWN0'@; put 'ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7IWUuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJiFlLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYodD8uaXNDZWxsKCl8fHQ/LmlzSGVhZGVyKCkmJmUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpJiYoZS5tYXJrU291cmNlKCJrZXlib2FyZCIp'@; put 'LGUudHJhbnNmb3JtRW5kKDEsMCksZS5tYXJrRW5kU291cmNlKCkpfX0sZUR0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvbkRvd25CeVZpZXdwb3J0SGVpZ2h0IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZSxyb3dJbmRleE1hcHBlcjp0fT1uLHI9bi5nZXRTZWxlY3RlZFJhbmdl'@; put 'QWN0aXZlKCk7aWYoIXIpcmV0dXJuO2NvbnN0e3RvOml9PXIsbz1pLnJvdz8/MCxhPU1hdGgubWluKG8rbi5jb3VudFZpc2libGVSb3dzKCksbi5jb3VudFJvd3MoKS0xKSxsPXQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEsLTEpO2lmKG51bGwhPT1sKXtjb25zdCB1PW4uX2NyZWF0ZUNl'@; put 'bGxDb29yZHMobCxpLmNvbD8/MCksZz1vLShuLmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCk/PzApLEU9TWF0aC5taW4oKHUucm93Pz8wKS1nLG4uY291bnRSb3dzKCktMSk7ZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VFbmQodSxuLmdldEFjdGl2ZVNlbGVjdGlvbkxheWVy'@; put 'SW5kZXgoKSksZS5tYXJrRW5kU291cmNlKCksbi5zY3JvbGxWaWV3cG9ydFRvKHtyb3c6RSx2ZXJ0aWNhbFNuYXA6InRvcCIsaG9yaXpvbnRhbFNuYXA6InN0YXJ0In0pfX19LHREdD17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25MZWZ0IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246'@; put 'ZX09bix0PW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7IWUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJiFlLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYodD8uaXNDZWxsKCl8fHQ/LmlzSGVhZGVyKCkmJmUuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpJiYoZS5tYXJr'@; put 'U291cmNlKCJrZXlib2FyZCIpLGUudHJhbnNmb3JtRW5kKDAsLTEqbi5nZXREaXJlY3Rpb25GYWN0b3IoKSksZS5tYXJrRW5kU291cmNlKCkpfX0sbkR0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblJpZ2h0IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZX09bix0PW4uZ2V0U2Vs'@; put 'ZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7IWUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJiFlLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYodD8uaXNDZWxsKCl8fHQ/LmlzSGVhZGVyKCkmJmUuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpJiYoZS5tYXJrU291cmNlKCJrZXlib2Fy'@; put 'ZCIpLGUudHJhbnNmb3JtRW5kKDAsbi5nZXREaXJlY3Rpb25GYWN0b3IoKSksZS5tYXJrRW5kU291cmNlKCkpfX0sckR0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvQ29sdW1ucyIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmV9PW4sdD1uLmdldFNlbGVjdGVkUmFuZ2VBY3Rp'@; put 'dmUoKTtpZighdClyZXR1cm47Y29uc3R7aGlnaGxpZ2h0OnIsZnJvbTppLHRvOm99PXQ7ZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCk/ZS5zZWxlY3RBbGwoITAsITApOm4uc2VsZWN0Q29sdW1ucyhpLmNvbD8/MCxvLmNvbD8/MCxyKSxlLm1hcmtF'@; put 'bmRTb3VyY2UoKX19LGlEdD17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Ub01vc3RCb3R0b20iLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplLHJvd0luZGV4TWFwcGVyOnR9PW4scj1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighcilyZXR1cm47Y29uc3R7aGlnaGxpZ2h0'@; put 'OmksZnJvbTpvLHRvOmF9PXIsbD1pLmlzSGVhZGVyKCkmJmUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCk7aWYoaS5pc0NlbGwoKXx8bCl7Y29uc3QgdT10LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChuLmNvdW50Um93cygpLTEsLTEpLGc9by5jbG9uZSgpO2cucm93PWkucm93LGUubWFya1Nv'@; put 'dXJjZSgia2V5Ym9hcmQiKSxlLnNldFJhbmdlU3RhcnQoZyx2b2lkIDAsITEsaS5jbG9uZSgpKSxsJiZlLnNlbGVjdGVkQnlSb3dIZWFkZXIuYWRkKGUuZ2V0TGF5ZXJMZXZlbCgpKSxlLnNldFJhbmdlRW5kKG4uX2NyZWF0ZUNlbGxDb29yZHModT8/MCxhLmNvbD8/MCkpLGUubWFya0VuZFNv'@; put 'dXJjZSgpfX19LG9EdD17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Ub01vc3RJbmxpbmVFbmQiLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplLGNvbHVtbkluZGV4TWFwcGVyOnR9PW4scj1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighcilyZXR1cm47Y29uc3R7aGlnaGxp'@; put 'Z2h0OmksZnJvbTpvLHRvOmF9PXI7aWYoIWUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJiFlLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiZpLmlzQ2VsbCgpKXtjb25zdCBsPXQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG4uY291bnRDb2xzKCktMSwtMSksdT1vLmNsb25lKCk7dS5jb2w9aS5j'@; put 'b2wsZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VTdGFydCh1LHZvaWQgMCwhMSxpLmNsb25lKCkpLGUuc2V0UmFuZ2VFbmQobi5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdz8/MCxsPz8wKSksZS5tYXJrRW5kU291cmNlKCl9fX0sYUR0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVj'@; put 'dGlvblRvTW9zdElubGluZVN0YXJ0IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZSxjb2x1bW5JbmRleE1hcHBlcjp0fT1uLHI9bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIXIpcmV0dXJuO2NvbnN0e2hpZ2hsaWdodDppLGZyb206byx0bzphfT1yO2lmKCFlLmlzU2VsZWN0'@; put 'ZWRCeVJvd0hlYWRlcigpJiYhZS5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmaS5pc0NlbGwoKSl7Y29uc3QgbD1OdW1iZXIobi5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0KXx8MCx1PXQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGwsMSksZz1vLmNsb25lKCk7Zy5jb2w9aS5jb2ws'@; put 'ZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VTdGFydChnLHZvaWQgMCwhMSxpLmNsb25lKCkpLGUuc2V0UmFuZ2VFbmQobi5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdz8/MCx1Pz8wKSksZS5tYXJrRW5kU291cmNlKCl9fX0sc0R0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlv'@; put 'blRvTW9zdExlZnQiLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplLGNvbHVtbkluZGV4TWFwcGVyOnR9PW4scj1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighcilyZXR1cm47Y29uc3R7aGlnaGxpZ2h0OmksZnJvbTpvLHRvOmF9PXIsbD1pLmlzSGVhZGVyKCkmJmUuaXNTZWxl'@; put 'Y3RlZEJ5Q29sdW1uSGVhZGVyKCk7aWYoaS5pc0NlbGwoKXx8bCl7Y29uc3QgdT1uLmlzUnRsKCk/dC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobi5jb3VudENvbHMoKS0xLC0xKTp0LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCgwLDEpLGc9by5jbG9uZSgpO2cuY29sPWkuY29sLGUubWFy'@; put 'a1NvdXJjZSgia2V5Ym9hcmQiKSxlLnNldFJhbmdlU3RhcnQoZyx2b2lkIDAsITEsaS5jbG9uZSgpKSxsJiZlLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRkKGUuZ2V0TGF5ZXJMZXZlbCgpKSxlLnNldFJhbmdlRW5kKG4uX2NyZWF0ZUNlbGxDb29yZHMoYS5yb3c/PzAsdT8/MCkpLGUubWFy'@; put 'a0VuZFNvdXJjZSgpfX19LGxEdD17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Ub01vc3RSaWdodCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmUsY29sdW1uSW5kZXhNYXBwZXI6dH09bixyPW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFyKXJldHVybjtjb25zdHtoaWdo'@; put 'bGlnaHQ6aSxmcm9tOm8sdG86YX09cixsPWkuaXNIZWFkZXIoKSYmZS5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKTtpZihpLmlzQ2VsbCgpfHxsKXtjb25zdCB1PW4uaXNSdGwoKT90LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCgwLDEpOnQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG4u'@; put 'Y291bnRDb2xzKCktMSwtMSksZz1vLmNsb25lKCk7Zy5jb2w9aS5jb2wsZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VTdGFydChnLHZvaWQgMCwhMSxpLmNsb25lKCkpLGwmJmUuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5hZGQoZS5nZXRMYXllckxldmVsKCkpLGUuc2V0UmFu'@; put 'Z2VFbmQobi5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdz8/MCx1Pz8wKSksZS5tYXJrRW5kU291cmNlKCl9fX0sY0R0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdFRvcCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmUscm93SW5kZXhNYXBwZXI6dH09bixyPW4uZ2V0U2Vs'@; put 'ZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFyKXJldHVybjtjb25zdHtoaWdobGlnaHQ6aSxmcm9tOm8sdG86YX09cixsPWkuaXNIZWFkZXIoKSYmZS5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKTtpZihpLmlzQ2VsbCgpfHxsKXtjb25zdCB1PXQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSks'@; put 'Zz1vLmNsb25lKCk7Zy5yb3c9aS5yb3csZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VTdGFydChnLHZvaWQgMCwhMSxpLmNsb25lKCkpLGwmJmUuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQoZS5nZXRMYXllckxldmVsKCkpLGUuc2V0UmFuZ2VFbmQobi5fY3JlYXRlQ2VsbENv'@; put 'b3Jkcyh1Pz8wLGEuY29sPz8wKSksZS5tYXJrRW5kU291cmNlKCl9fX0sdUR0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvUm93cyIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmV9PW4sdD1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighdClyZXR1cm4gdm9pZCBlLm1h'@; put 'cmtFbmRTb3VyY2UoKTtjb25zdHtoaWdobGlnaHQ6cixmcm9tOmksdG86b309dDtlLm1hcmtTb3VyY2UoImtleWJvYXJkIiksZS5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKT9lLnNlbGVjdEFsbCghMCwhMCk6bi5zZWxlY3RSb3dzKGkucm93Pz8wLG8ucm93Pz8wLHIpLGUubWFya0VuZFNv'@; put 'dXJjZSgpfX0sZER0PXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblVwIixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZX09bix0PW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7IWUuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJiFlLmlzU2VsZWN0ZWRCeUNv'@; put 'cm5lcigpJiYodD8uaXNDZWxsKCl8fHQ/LmlzSGVhZGVyKCkmJmUuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpJiYoZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUudHJhbnNmb3JtRW5kKC0xLDApLGUubWFya0VuZFNvdXJjZSgpKX19LGhEdD17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25V'@; put 'cEJ5Vmlld3BvcnRIZWlnaHQiLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplLHJvd0luZGV4TWFwcGVyOnR9PW4scj1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighcilyZXR1cm47Y29uc3R7dG86aX09cixvPWkucm93Pz8wLGE9TWF0aC5tYXgoby1uLmNvdW50VmlzaWJsZVJv'@; put 'd3MoKSwwKSxsPXQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEsMSk7aWYobnVsbCE9PWwpe2NvbnN0IHU9bi5fY3JlYXRlQ2VsbENvb3JkcyhsLGkuY29sPz8wKSxnPW8tKG4uZ2V0Rmlyc3RGdWxseVZpc2libGVSb3coKT8/MCksRT1NYXRoLm1heCgodS5yb3c/PzApLWcsMCk7ZS5tYXJr'@; put 'U291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VFbmQodSxuLmdldEFjdGl2ZVNlbGVjdGlvbkxheWVySW5kZXgoKSksZS5tYXJrRW5kU291cmNlKCksbi5zY3JvbGxWaWV3cG9ydFRvKHtyb3c6RSx2ZXJ0aWNhbFNuYXA6InRvcCIsaG9yaXpvbnRhbFNuYXA6InN0YXJ0In0pfX19LHBEdD17'@; put 'bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Eb3duIixjYWxsYmFjayh7c2VsZWN0aW9uOm59KXtuLm1hcmtTb3VyY2UoImtleWJvYXJkIiksbi50cmFuc2Zvcm1TdGFydCgxLDApLG4ubWFya0VuZFNvdXJjZSgpfX0sZ0R0PXtuYW1lOiJtb3ZlQ2VsbFNlbGVjdGlvbkRvd25CeVZpZXdwb3J0SGVp'@; put 'Z2h0IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZX09bix7bmF2aWdhYmxlSGVhZGVyczp0fT1uLmdldFNldHRpbmdzKCkscj10P24uY291bnRDb2xIZWFkZXJzKCk6MCxpPW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQucm93Pz8wO2xldCBvPW4uY291bnRWaXNp'@; put 'YmxlUm93cygpK3I7bz0wPT09bz8xOm8saT09PW4uY291bnRSb3dzKCktMT9vPTE6aStvPm4uY291bnRSb3dzKCkmJihvPW4uY291bnRSb3dzKCktaS0xKSxlLm1hcmtTb3VyY2UoImtleWJvYXJkIiksZS50cmFuc2Zvcm1TdGFydChvLDApLGUubWFya0VuZFNvdXJjZSgpO2NvbnN0IGE9bi5n'@; put 'ZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbT8/MCxsPW4uY291bnRSb3dzKCksdT1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0LnJvdz8/MDt1PDA/bi5zY3JvbGxWaWV3cG9ydFRvKHtyb3c6MH0pOmE+MCYmdT49bC1hJiZuLnNjcm9sbFZpZXdwb3J0VG8oe3Jvdzps'@; put 'LWEtMSx2ZXJ0aWNhbFNuYXA6ImJvdHRvbSJ9KX19LG1EdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25JbmxpbmVFbmQiLGNhbGxiYWNrKG4sZSl7Y29uc3R7c2VsZWN0aW9uOnR9PW4scj1uLmdldFNldHRpbmdzKCksaT1uLmdldFNlbGVjdGVkUmFuZ2UoKSxvPW4uZ2V0U2VsZWN0ZWRSYW5n'@; put 'ZUFjdGl2ZSgpLGE9ImZ1bmN0aW9uIj09dHlwZW9mIHIudGFiTW92ZXM/ci50YWJNb3ZlcyhlKTpyLnRhYk1vdmVzO3QubWFya1NvdXJjZSgia2V5Ym9hcmQiKSwoaT8uc29tZShsPT50LmlzTXVsdGlwbGUobCkpfHwoaT8ubGVuZ3RoPz8wKT4xKSYmIW8/LmlzSGVhZGVyKCkmJm4uY291bnRS'@; put 'ZW5kZXJlZENvbHMoKT4wJiZuLmNvdW50UmVuZGVyZWRSb3dzKCk+MD90LnRyYW5zZm9ybUZvY3VzKC0oYT8ucm93Pz8wKSwtKGE/LmNvbD8/MCkpOnQudHJhbnNmb3JtU3RhcnQoLShhPy5yb3c/PzApLC0oYT8uY29sPz8wKSksdC5tYXJrRW5kU291cmNlKCl9fSx2RHQ9e25hbWU6Im1vdmVD'@; put 'ZWxsU2VsZWN0aW9uSW5saW5lU3RhcnQiLGNhbGxiYWNrKG4sZSl7Y29uc3R7c2VsZWN0aW9uOnR9PW4scj1uLmdldFNldHRpbmdzKCksaT1uLmdldFNlbGVjdGVkUmFuZ2UoKSxvPW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLGE9ImZ1bmN0aW9uIj09dHlwZW9mIHIudGFiTW92ZXM/ci50'@; put 'YWJNb3ZlcyhlKTpyLnRhYk1vdmVzO3QubWFya1NvdXJjZSgia2V5Ym9hcmQiKSwoaT8uc29tZShsPT50LmlzTXVsdGlwbGUobCkpfHwoaT8ubGVuZ3RoPz8wKT4xKSYmIW8/LmlzSGVhZGVyKCkmJm4uY291bnRSZW5kZXJlZENvbHMoKT4wJiZuLmNvdW50UmVuZGVyZWRSb3dzKCk+MD90LnRy'@; put 'YW5zZm9ybUZvY3VzKGE/LnJvdz8/MCxhPy5jb2w/PzApOnQudHJhbnNmb3JtU3RhcnQoYT8ucm93Pz8wLGE/LmNvbD8/MCksdC5tYXJrRW5kU291cmNlKCl9fSxfRHQ9e25hbWU6Im1vdmVDZWxsU2VsZWN0aW9uTGVmdCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmV9PW47ZS5tYXJr'@; put 'U291cmNlKCJrZXlib2FyZCIpLGUudHJhbnNmb3JtU3RhcnQoMCwtMSpuLmdldERpcmVjdGlvbkZhY3RvcigpKSxlLm1hcmtFbmRTb3VyY2UoKX19LHlEdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25SaWdodCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmV9PW47ZS5tYXJrU291cmNl'@; put 'KCJrZXlib2FyZCIpLGUudHJhbnNmb3JtU3RhcnQoMCxuLmdldERpcmVjdGlvbkZhY3RvcigpKSxlLm1hcmtFbmRTb3VyY2UoKX19LGJEdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RCb3R0b20iLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplfT1uLHQ9bi5nZXRTZWxlY3Rl'@; put 'ZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5jb2w/PzA7bGV0IHI9bi5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobi5jb3VudFJvd3MoKS0xLC0xKTtudWxsPT09ciYmKHI9LTEpLGUuc2V0UmFuZ2VTdGFydChuLl9jcmVhdGVDZWxsQ29vcmRzKHIsdCkpfX0sd0R0'@; put 'PXtuYW1lOiJtb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdEJvdHRvbUlubGluZUVuZCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmUscm93SW5kZXhNYXBwZXI6dCxjb2x1bW5JbmRleE1hcHBlcjpyfT1uLGk9TnVtYmVyKG4uZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20pfHwwLG89'@; put 'dC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobi5jb3VudFJvd3MoKS1pLTEsLTEpLGE9ci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobi5jb3VudENvbHMoKS0xLC0xKTtlLm1hcmtTb3VyY2UoImtleWJvYXJkIiksZS5zZXRSYW5nZVN0YXJ0KG4uX2NyZWF0ZUNlbGxDb29yZHMobz8/LTEs'@; put 'YT8/LTEpKSxlLm1hcmtFbmRTb3VyY2UoKX19LENEdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RJbmxpbmVFbmQiLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplLGNvbHVtbkluZGV4TWFwcGVyOnR9PW47ZS5tYXJrU291cmNlKCJrZXlib2FyZCIpLGUuc2V0UmFuZ2VTdGFy'@; put 'dChuLl9jcmVhdGVDZWxsQ29vcmRzKG4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQucm93Pz8wLHQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG4uY291bnRDb2xzKCktMSwtMSk/PzApKSxlLm1hcmtFbmRTb3VyY2UoKX19LFNEdD17bmFtZToibW92ZUNlbGxTZWxlY3Rp'@; put 'b25Ub01vc3RJbmxpbmVTdGFydCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmUsY29sdW1uSW5kZXhNYXBwZXI6dH09bixyPU51bWJlcihuLmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQpfHwwLGk9bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5yb3c/'@; put 'PzAsbz10LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChyLDEpO2UubWFya1NvdXJjZSgia2V5Ym9hcmQiKSxlLnNldFJhbmdlU3RhcnQobi5fY3JlYXRlQ2VsbENvb3JkcyhpLG8/PzApKSxlLm1hcmtFbmRTb3VyY2UoKX19LEVEdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RMZWZ0'@; put 'IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZSxjb2x1bW5JbmRleE1hcHBlcjp0fT1uLHI9bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5yb3c/PzA7bGV0IGk9bi5pc1J0bCgpP3QuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG4uY291bnRDb2xzKCktMSwtMSk6'@; put 'dC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoMCwxKTtudWxsPT09aSYmKGk9bi5pc1J0bCgpPy0xOi1uLmNvdW50Um93SGVhZGVycygpKSxlLm1hcmtTb3VyY2UoImtleWJvYXJkIiksZS5zZXRSYW5nZVN0YXJ0KG4uX2NyZWF0ZUNlbGxDb29yZHMocixpKSksZS5tYXJrRW5kU291cmNlKCl9'@; put 'fSxNRHQ9e25hbWU6Im1vdmVDZWxsU2VsZWN0aW9uVG9Nb3N0UmlnaHQiLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplLGNvbHVtbkluZGV4TWFwcGVyOnR9PW4scj1uLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0LnJvdz8/MDtsZXQgaT1uLmlzUnRsKCk/dC5nZXRO'@; put 'ZWFyZXN0Tm90SGlkZGVuSW5kZXgoMCwxKTp0LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChuLmNvdW50Q29scygpLTEsLTEpO251bGw9PT1pJiYoaT1uLmlzUnRsKCk/LW4uY291bnRSb3dIZWFkZXJzKCk6LTEpLGUubWFya1NvdXJjZSgia2V5Ym9hcmQiKSxlLnNldFJhbmdlU3RhcnQobi5f'@; put 'Y3JlYXRlQ2VsbENvb3JkcyhyLGkpKSxlLm1hcmtFbmRTb3VyY2UoKX19LFREdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RUb3AiLGNhbGxiYWNrKG4pe2NvbnN0e3NlbGVjdGlvbjplfT1uLHQ9bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5jb2w/PzA7bGV0'@; put 'IHI9bi5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoMCwxKTtudWxsPT09ciYmKHI9LW4uY291bnRDb2xIZWFkZXJzKCkpLGUubWFya1NvdXJjZSgia2V5Ym9hcmQiKSxlLnNldFJhbmdlU3RhcnQobi5fY3JlYXRlQ2VsbENvb3JkcyhyLHQpKSxlLm1hcmtFbmRTb3Vy'@; put 'Y2UoKX19LHhEdD17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RUb3BJbmxpbmVTdGFydCIsY2FsbGJhY2sobil7Y29uc3R7c2VsZWN0aW9uOmUscm93SW5kZXhNYXBwZXI6dCxjb2x1bW5JbmRleE1hcHBlcjpyfT1uLGk9TnVtYmVyKG4uZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NUb3Ap'@; put 'fHwwLG89TnVtYmVyKG4uZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCl8fDAsYT10LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChpLDEpLGw9ci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobywxKTtlLm1hcmtTb3VyY2UoImtleWJvYXJkIiksZS5zZXRSYW5nZVN0YXJ0KG4uX2Ny'@; put 'ZWF0ZUNlbGxDb29yZHMoYT8/MCxsPz8wKSksZS5tYXJrRW5kU291cmNlKCl9fSxBRHQ9e25hbWU6Im1vdmVDZWxsU2VsZWN0aW9uVXAiLGNhbGxiYWNrKHtzZWxlY3Rpb246bn0pe24ubWFya1NvdXJjZSgia2V5Ym9hcmQiKSxuLnRyYW5zZm9ybVN0YXJ0KC0xLDApLG4ubWFya0VuZFNvdXJj'@; put 'ZSgpfX0sa0R0PXtuYW1lOiJtb3ZlQ2VsbFNlbGVjdGlvblVwQnlWaWV3cG9ydEhpZ2h0IixjYWxsYmFjayhuKXtjb25zdHtzZWxlY3Rpb246ZX09bix7bmF2aWdhYmxlSGVhZGVyczp0fT1uLmdldFNldHRpbmdzKCkscj10P24uY291bnRDb2xIZWFkZXJzKCk6MCxpPW4uZ2V0U2VsZWN0ZWRS'@; put 'YW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQucm93Pz8wO2xldCBvPW4uY291bnRWaXNpYmxlUm93cygpK3I7bz0wPT09bz8tMTotbyxpPT09LXI/bz0tMTppK288ciYmKG89LShpK3IpKSxlLm1hcmtTb3VyY2UoImtleWJvYXJkIiksZS50cmFuc2Zvcm1TdGFydChvLDApLGUubWFya0VuZFNvdXJj'@; put 'ZSgpO2NvbnN0IGE9bi5nZXRTZXR0aW5ncygpLmZpeGVkUm93c1RvcD8/MDsobi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5yb3c/PzApPGEmJm4uc2Nyb2xsVmlld3BvcnRUbyh7cm93OmEsdmVydGljYWxTbmFwOiJ0b3AifSl9fSxJRHQ9e25hbWU6ImVtcHR5U2VsZWN0'@; put 'ZWRDZWxscyIsY2FsbGJhY2sobil7bi5lbXB0eVNlbGVjdGVkQ2VsbHMoKSxuLl9nZXRFZGl0b3JNYW5hZ2VyKCkucHJlcGFyZUVkaXRvcigpfX0sRER0PXtuYW1lOiJzY3JvbGxUb0ZvY3VzZWRDZWxsIixjYWxsYmFjayhuKXtjb25zdCBlPW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5o'@; put 'aWdobGlnaHQ7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9bi5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLTEscj1uLmdldEZpcnN0RnVsbHlWaXNpYmxlQ29sdW1uKCktMSxpPW4uZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdygpKzEsbz1uLmdldExhc3RGdWxseVZpc2libGVDb2x1bW4oKSsxLGE9bi5f'@; put 'Y3JlYXRlQ2VsbENvb3Jkcyh0LHIpLGw9bi5fY3JlYXRlQ2VsbENvb3JkcyhpLG8pO2lmKCFuLl9jcmVhdGVDZWxsUmFuZ2UoYSxhLGwpLmluY2x1ZGVzKGUpJiYoKGUucm93Pz8tMSk+PTB8fChlLmNvbD8/LTEpPj0wKSl7Y29uc3QgZz17fTtpZigoZS5jb2w/Py0xKT49MCl7Y29uc3QgRT1N'@; put 'YXRoLmZsb29yKG4uY291bnRWaXNpYmxlQ29scygpLzIpO2cuY29sPU1hdGgubWF4KChlLmNvbD8/MCktRSwwKX1pZigoZS5yb3c/Py0xKT49MCl7Y29uc3QgRT1NYXRoLmZsb29yKG4uY291bnRWaXNpYmxlUm93cygpLzIpO2cucm93PU1hdGgubWF4KChlLnJvdz8/MCktRSwwKX1uLnNjcm9s'@; put 'bFZpZXdwb3J0VG8oey4uLmcsdmVydGljYWxTbmFwOiJ0b3AiLGhvcml6b250YWxTbmFwOiJzdGFydCJ9KX19fSxMRHQ9e25hbWU6InNlbGVjdEFsbENlbGxzIixjYWxsYmFjayh7c2VsZWN0aW9uOm59KXtuLm1hcmtTb3VyY2UoImtleWJvYXJkIiksbi5zZWxlY3RBbGwoITAsITAse2Rpc2Fi'@; put 'bGVIZWFkZXJzSGlnaGxpZ2h0OiEwfSksbi5tYXJrRW5kU291cmNlKCl9fSxPRHQ9e25hbWU6InNlbGVjdEFsbENlbGxzQW5kSGVhZGVycyIsY2FsbGJhY2soe3NlbGVjdGlvbjpufSl7bi5tYXJrU291cmNlKCJrZXlib2FyZCIpLG4uc2VsZWN0QWxsKCEwLCEwLHtkaXNhYmxlSGVhZGVyc0hp'@; put 'Z2hsaWdodDohMX0pLG4ubWFya0VuZFNvdXJjZSgpfX0sTkR0PXtuYW1lOiJwb3B1bGF0ZVNlbGVjdGVkQ2VsbHNEYXRhIixjYWxsYmFjayhuKXtjb25zdCBlPW4uZ2V0U2VsZWN0ZWRSYW5nZSgpO2lmKCFlKXJldHVybjtjb25zdCB0PWVbZS5sZW5ndGgtMV0uaGlnaGxpZ2h0Lm5vcm1hbGl6'@; put 'ZSgpLHI9dC5yb3c/PzAsaT10LmNvbD8/MCxvPW4uZ2V0RGF0YUF0Q2VsbChyLGkpLGE9bmV3IE1hcDtmb3IobGV0IGw9MDtsPGUubGVuZ3RoO2wrKyllW2xdLmZvckFsbCgodSxnKT0+e2lmKHU+PTAmJmc+PTAmJih1IT09cnx8ZyE9PWkpKXtjb25zdHtyZWFkT25seTpFfT1uLmdldENlbGxN'@; put 'ZXRhKHUsZyk7RXx8YS5zZXQoYCR7dX14JHtnfWAsW3UsZyxvXSl9fSk7bi5zZXREYXRhQXRDZWxsKEFycmF5LmZyb20oYS52YWx1ZXMoKSkpfX0sRkR0PXtuYW1lOiJ0YWJOYXZpZ2F0aW9uIixjYWxsYmFjayhuKXtjb25zdCBlPXt3cmFwcGVkOiExLGZsaXBwZWQ6ITF9O2xldCB0PSExLHI9'@; put 'ITE7cmV0dXJuIG4uYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLChpLG8sYSxsLHUpPT57dCYmKGUud3JhcHBlZCYmZS5mbGlwcGVkfHxyKSYmKHI9ITEsdS52YWx1ZT0hMCl9KSxuLmFkZEhvb2soImJlZm9yZVJvd1dyYXAiLChpLG8sYSk9PntlLndyYXBwZWQ9ITAsZS5mbGlwcGVkPWF9KSx7'@; put 'YmVmb3JlKCl7Y29uc3R7dGFiTmF2aWdhdGlvbjppfT1uLmdldFNldHRpbmdzKCk7dD0hMCxpfHwocj0hMCl9LGFmdGVyKGkpe2NvbnN0e3RhYk5hdmlnYXRpb246byxhdXRvV3JhcFJvdzphfT1uLmdldFNldHRpbmdzKCk7aWYodD0hMSwhb3x8IW4uc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKXx8'@; put 'YSYmZS53cmFwcGVkJiZlLmZsaXBwZWR8fCFhJiZlLndyYXBwZWQpcmV0dXJuIGUud3JhcHBlZD0hMSxlLmZsaXBwZWQ9ITEsbi5kZXNlbGVjdENlbGwoKSwhMTtpLnByZXZlbnREZWZhdWx0KCl9fX19LFBEdD1bLi4uZnVuY3Rpb24gUUl0KCl7cmV0dXJuW0JJdCxHSXQsJEl0LHFJdCxLSXQs'@; put 'WEl0XX0oKSwuLi5mdW5jdGlvbiBmRHQoKXtyZXR1cm5bSkl0LGVEdCx0RHQsbkR0LHJEdCxpRHQsb0R0LGFEdCxzRHQsbER0LGNEdCx1RHQsZER0LGhEdF19KCksLi4uZnVuY3Rpb24gUkR0KCl7cmV0dXJuW3BEdCxnRHQsbUR0LHZEdCxfRHQseUR0LGJEdCx3RHQsQ0R0LFNEdCxFRHQsTUR0'@; put 'LFREdCx4RHQsQUR0LGtEdF19KCksSUR0LEREdCxMRHQsT0R0LE5EdCxGRHRdO2Z1bmN0aW9uIE5JZShuKXtjb25zdCBlPXt9O3JldHVybiBQRHQuZm9yRWFjaCgoe25hbWU6dCxjYWxsYmFjazpyfSk9PntlW3RdPSguLi5pKT0+cihuLC4uLmkpfSksZX1mdW5jdGlvbiBIRHQobil7Y29uc3Qg'@; put 'ZT1uLmdldFNob3J0Y3V0TWFuYWdlcigpLmFkZENvbnRleHQoImVkaXRvciIpLHQ9TkllKG4pLHI9e2dyb3VwOlI3fTtlLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siRW50ZXIiXSxbIkVudGVyIiwiU2hpZnQiXV0sY2FsbGJhY2s6KGksbyk9PnQuZWRpdG9yQ2xvc2VBbmRTYXZlQnlFbnRlcihp'@; put 'LG8pfSx7a2V5czpbWyJFbnRlciIsIkNvbnRyb2wvTWV0YSJdLFsiRW50ZXIiLCJDb250cm9sL01ldGEiLCJTaGlmdCJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooaSxvKT0+dC5lZGl0b3JDbG9zZUFuZFNhdmVCeUVudGVyKGksbyl9LHtrZXlzOltbIlRhYiJdLFsiVGFiIiwiU2hpZnQi'@; put 'XSxbIlBhZ2VEb3duIl0sWyJQYWdlVXAiXV0sZm9yd2FyZFRvQ29udGV4dDpuLmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoc18pLGNhbGxiYWNrOihpLG8pPT50LmVkaXRvckNsb3NlQW5kU2F2ZShpLG8pfSx7a2V5czpbWyJBcnJvd0Rvd24iXSxbIkFycm93VXAiXSxbIkFycm93'@; put 'TGVmdCJdLFsiQXJyb3dSaWdodCJdXSxwcmV2ZW50RGVmYXVsdDohMSxjYWxsYmFjazooaSxvKT0+dC5lZGl0b3JDbG9zZUFuZFNhdmVCeUFycm93S2V5cyhpLG8pfSx7a2V5czpbWyJFc2NhcGUiXSxbIkVzY2FwZSIsIkNvbnRyb2wvTWV0YSJdXSxjYWxsYmFjazooKT0+dC5lZGl0b3JDbG9z'@; put 'ZVdpdGhvdXRTYXZpbmcoKX1dLHIpfWZ1bmN0aW9uIFZEdChuKXtjb25zdCBlPW4uZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuYWRkQ29udGV4dChzXyksdD1OSWUobikscj17cnVuT25seUlmOigpPT57Y29uc3R7bmF2aWdhYmxlSGVhZGVyczpvfT1uLmdldFNldHRpbmdzKCk7cmV0dXJuIFpvKG4u'@; put 'Z2V0U2VsZWN0ZWQoKSkmJihvfHwhbyYmbi5jb3VudFJlbmRlcmVkUm93cygpPjAmJm4uY291bnRSZW5kZXJlZENvbHMoKT4wKX0sZ3JvdXA6Y099O2UuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJGMiJdXSxjYWxsYmFjazpvPT50LmVkaXRvckZhc3RPcGVuKG8pfSx7a2V5czpbWyJFbnRlciJd'@; put 'LFsiRW50ZXIiLCJTaGlmdCJdXSxjYWxsYmFjazoobyxhKT0+dC5lZGl0b3JPcGVuKG8sYSl9LHtrZXlzOltbIkJhY2tzcGFjZSJdLFsiRGVsZXRlIl1dLGNhbGxiYWNrOigpPT50LmVtcHR5U2VsZWN0ZWRDZWxscygpfV0se2dyb3VwOlI3LHJ1bk9ubHlJZjooKT0+Wm8obi5nZXRTZWxlY3Rl'@; put 'ZCgpKX0pLGUuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250cm9sL01ldGEiLCJBIl1dLGNhbGxiYWNrOigpPT50LnNlbGVjdEFsbENlbGxzKCkscnVuT25seUlmOigpPT5abyhuLmdldFNlbGVjdGVkKCkpJiYhbi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5pc0hlYWRl'@; put 'cigpfSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJBIl1dLGNhbGxiYWNrOigpPT57fSxydW5Pbmx5SWY6KCk9PiEoIVpvKG4uZ2V0U2VsZWN0ZWQoKSl8fCFuLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0LmlzSGVhZGVyKCkpLHByZXZlbnREZWZhdWx0OiEwfSx7a2V5czpb'@; put 'WyJDb250cm9sL01ldGEiLCJTaGlmdCIsIlNwYWNlIl1dLGNhbGxiYWNrOigpPT50LnNlbGVjdEFsbENlbGxzQW5kSGVhZGVycygpfSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJFbnRlciJdXSxjYWxsYmFjazooKT0+dC5wb3B1bGF0ZVNlbGVjdGVkQ2VsbHNEYXRhKCkscnVuT25seUlmOigp'@; put 'PT5abyhuLmdldFNlbGVjdGVkKCkpJiYhbi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5pc0hlYWRlcigpJiYobi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmdldENlbGxzQ291bnQoKT8/MCk+MX0se2tleXM6W1siQ29udHJvbCIsIlNwYWNlIl1dLGNhcHR1cmVDdHJs'@; put 'OiEwLGNhbGxiYWNrOigpPT50LmV4dGVuZENlbGxzU2VsZWN0aW9uVG9Db2x1bW5zKCl9LHtrZXlzOltbIlNoaWZ0IiwiU3BhY2UiXV0sc3RvcFByb3BhZ2F0aW9uOiEwLGNhbGxiYWNrOigpPT50LmV4dGVuZENlbGxzU2VsZWN0aW9uVG9Sb3dzKCl9LHtrZXlzOltbIkFycm93VXAiXV0sY2Fs'@; put 'bGJhY2s6KCk9PnQubW92ZUNlbGxTZWxlY3Rpb25VcCgpfSx7a2V5czpbWyJBcnJvd1VwIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOigpPT50Lm1vdmVDZWxsU2VsZWN0aW9uVG9Nb3N0VG9wKCl9LHtrZXlzOltbIkFycm93VXAiLCJTaGlmdCJdXSxjYWxsYmFj'@; put 'azooKT0+dC5leHRlbmRDZWxsc1NlbGVjdGlvblVwKCl9LHtrZXlzOltbIkFycm93VXAiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+dC5leHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdFRvcCgpLHJ1bk9ubHlJZjooKT0+Wm8obi5nZXRTZWxl'@; put 'Y3RlZCgpKSYmIShuLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8bi5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpfSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6KCk9PnQubW92ZUNlbGxTZWxlY3Rpb25Eb3duKCl9LHtrZXlzOltbIkFycm93RG93'@; put 'biIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+dC5tb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdEJvdHRvbSgpfSx7a2V5czpbWyJBcnJvd0Rvd24iLCJTaGlmdCJdXSxjYWxsYmFjazooKT0+dC5leHRlbmRDZWxsc1NlbGVjdGlvbkRvd24oKX0se2tleXM6W1si'@; put 'QXJyb3dEb3duIiwiU2hpZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PnQuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Ub01vc3RCb3R0b20oKSxydW5Pbmx5SWY6KCk9PlpvKG4uZ2V0U2VsZWN0ZWQoKSkmJiEobi5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29y'@; put 'bmVyKCl8fG4uc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpKX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOigpPT50Lm1vdmVDZWxsU2VsZWN0aW9uTGVmdCgpfSx7a2V5czpbWyJBcnJvd0xlZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2Fs'@; put 'bGJhY2s6KCk9PnQubW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RMZWZ0KCl9LHtrZXlzOltbIkFycm93TGVmdCIsIlNoaWZ0Il1dLGNhbGxiYWNrOigpPT50LmV4dGVuZENlbGxzU2VsZWN0aW9uTGVmdCgpfSx7a2V5czpbWyJBcnJvd0xlZnQiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0'@; put 'dXJlQ3RybDohMCxjYWxsYmFjazooKT0+dC5leHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdExlZnQoKSxydW5Pbmx5SWY6KCk9PlpvKG4uZ2V0U2VsZWN0ZWQoKSkmJiEobi5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fG4uc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigp'@; put 'KX0se2tleXM6W1siQXJyb3dSaWdodCJdXSxjYWxsYmFjazooKT0+dC5tb3ZlQ2VsbFNlbGVjdGlvblJpZ2h0KCl9LHtrZXlzOltbIkFycm93UmlnaHQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PnQubW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RSaWdodCgp'@; put 'fSx7a2V5czpbWyJBcnJvd1JpZ2h0IiwiU2hpZnQiXV0sY2FsbGJhY2s6KCk9PnQuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25SaWdodCgpfSx7a2V5czpbWyJBcnJvd1JpZ2h0IiwiU2hpZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PnQuZXh0ZW5kQ2VsbHNT'@; put 'ZWxlY3Rpb25Ub01vc3RSaWdodCgpLHJ1bk9ubHlJZjooKT0+Wm8obi5nZXRTZWxlY3RlZCgpKSYmIShuLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8bi5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpfSx7a2V5czpbWyJIb21lIl1dLGNhcHR1cmVDdHJsOiEwLGNh'@; put 'bGxiYWNrOigpPT50Lm1vdmVDZWxsU2VsZWN0aW9uVG9Nb3N0SW5saW5lU3RhcnQoKSxydW5Pbmx5SWY6KCk9PlpvKG4uZ2V0U2VsZWN0ZWQoKSkmJm4udmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX0se2tleXM6W1siSG9tZSIsIlNoaWZ0Il1dLGNhbGxiYWNr'@; put 'OigpPT50LmV4dGVuZENlbGxzU2VsZWN0aW9uVG9Nb3N0SW5saW5lU3RhcnQoKX0se2tleXM6W1siSG9tZSIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+dC5tb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdFRvcElubGluZVN0YXJ0KCkscnVuT25seUlmOigpPT5a'@; put 'byhuLmdldFNlbGVjdGVkKCkpJiZuLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9LHtrZXlzOltbIkVuZCJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+dC5tb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdElubGluZUVuZCgpLHJ1bk9ubHlJZjooKT0+Wm8o'@; put 'bi5nZXRTZWxlY3RlZCgpKSYmbi52aWV3LmlzTWFpblRhYmxlTm90RnVsbHlDb3ZlcmVkQnlPdmVybGF5cygpfSx7a2V5czpbWyJFbmQiLCJTaGlmdCJdXSxjYWxsYmFjazooKT0+dC5leHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdElubGluZUVuZCgpfSx7a2V5czpbWyJFbmQiLCJDb250cm9s'@; put 'L01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PnQubW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RCb3R0b21JbmxpbmVFbmQoKSxydW5Pbmx5SWY6KCk9PlpvKG4uZ2V0U2VsZWN0ZWQoKSkmJm4udmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX0se2tl'@; put 'eXM6W1siUGFnZVVwIl1dLGNhbGxiYWNrOigpPT50Lm1vdmVDZWxsU2VsZWN0aW9uVXBCeVZpZXdwb3J0SGlnaHQoKX0se2tleXM6W1siUGFnZVVwIiwiU2hpZnQiXV0sY2FsbGJhY2s6KCk9PnQuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25VcEJ5Vmlld3BvcnRIZWlnaHQoKX0se2tleXM6W1siUGFn'@; put 'ZURvd24iXV0sY2FsbGJhY2s6KCk9PnQubW92ZUNlbGxTZWxlY3Rpb25Eb3duQnlWaWV3cG9ydEhlaWdodCgpfSx7a2V5czpbWyJQYWdlRG93biIsIlNoaWZ0Il1dLGNhbGxiYWNrOigpPT50LmV4dGVuZENlbGxzU2VsZWN0aW9uRG93bkJ5Vmlld3BvcnRIZWlnaHQoKX0se2tleXM6W1siVGFi'@; put 'Il1dLHByZXZlbnREZWZhdWx0OiExLGNhbGxiYWNrOm89PnQubW92ZUNlbGxTZWxlY3Rpb25JbmxpbmVTdGFydChvKX0se2tleXM6W1siU2hpZnQiLCJUYWIiXV0scHJldmVudERlZmF1bHQ6ITEsY2FsbGJhY2s6bz0+dC5tb3ZlQ2VsbFNlbGVjdGlvbklubGluZUVuZChvKX0se2tleXM6W1si'@; put 'Q29udHJvbC9NZXRhIiwiQmFja3NwYWNlIl1dLGNhbGxiYWNrOigpPT50LnNjcm9sbFRvRm9jdXNlZENlbGwoKX1dLHIpO2NvbnN0IGk9dC50YWJOYXZpZ2F0aW9uKCk7ZS5hZGRTaG9ydGN1dHMoW3trZXlzOltbIlRhYiJdLFsiU2hpZnQiLCJUYWIiXV0scHJldmVudERlZmF1bHQ6ITEsc3Rv'@; put 'cFByb3BhZ2F0aW9uOiExLHJlbGF0aXZlVG9Hcm91cDpjTyxncm91cDp0Wixwb3NpdGlvbjoiYmVmb3JlIixjYWxsYmFjazpvPT5pLmJlZm9yZShvKX0se2tleXM6W1siVGFiIl0sWyJTaGlmdCIsIlRhYiJdXSxwcmV2ZW50RGVmYXVsdDohMSxzdG9wUHJvcGFnYXRpb246ITEscmVsYXRpdmVU'@; put 'b0dyb3VwOmNPLGdyb3VwOnRaLGNhbGxiYWNrOm89PmkuYWZ0ZXIobykscG9zaXRpb246ImFmdGVyIn1dKX1mdW5jdGlvbiByWihuKXtjb25zdHtjbGFzc05hbWVzOmV9PUd4ZShuLC9odC10aGVtZS1bYS16QS1aMC05Xy1dKy8pO3JldHVybiBlLnBvcCgpfWZ1bmN0aW9uIEZJZShuLGUpe2lm'@; put 'KGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gUEllKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIr'@; put 'dCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIEJoKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFVEdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sUEllKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGxfKG4sZSx0'@; put 'KXtGSWUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIE00KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gekR0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2'@; put 'YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixQSWUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIHU2KG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9u'@; put 'IFJ3KG4sZSl7RkllKG4sZSksZS5hZGQobil9Y29uc3QgSEllPSJoYW5kc29udGFibGUtY29yZS1zdHlsZXMiO3ZhciBpWj1uZXcgV2Vha01hcCxwTz1uZXcgV2Vha01hcCxvWj1uZXcgV2Vha01hcCxhWj1uZXcgV2Vha01hcCxjXz1uZXcgV2Vha01hcCxfVD1uZXcgV2Vha01hcCx5VD1uZXcg'@; put 'V2Vha01hcCx2ZGU9bmV3IFdlYWtNYXAsVkllPW5ldyBXZWFrU2V0LEJJZT1uZXcgV2Vha1NldCxfZGU9bmV3IFdlYWtTZXQsakllPW5ldyBXZWFrU2V0LFVJZT1uZXcgV2Vha1NldCx5ZGU9bmV3IFdlYWtTZXQsYmRlPW5ldyBXZWFrU2V0O2NsYXNzIFdEdHtnZXRDU1NWYXJpYWJsZVZhbHVl'@; put 'KGUpe2lmKEJoKHRoaXMsX1QpW2AtLWh0LSR7ZX1gXSlyZXR1cm4gQmgodGhpcyxfVClbYC0taHQtJHtlfWBdO2NvbnN0IHQ9dTYodGhpcyxVSWUsJER0KS5jYWxsKHRoaXMsYC0taHQtJHtlfWApPz91Nih0aGlzLHlkZSxXSWUpLmNhbGwodGhpcyxgLS1odC0ke2V9YCk7cmV0dXJuIG51bGwh'@; put 'PT10PyhCaCh0aGlzLF9UKVtgLS1odC0ke2V9YF09dCx0KTp2b2lkIDB9Z2V0U3R5bGVGb3JURChlKXtyZXR1cm4gQmgodGhpcyx5VCk/LnRkPy5bZV19Z2V0RGVmYXVsdFJvd0hlaWdodChlKXtjb25zdCB0PXU2KHRoaXMsQkllLFpEdCkuY2FsbCh0aGlzKTtyZXR1cm4gdm9pZCAwIT09ZSYm'@; put 'ZT09PUJoKHRoaXMsaVopLnZpZXcuZ2V0Rmlyc3RSZW5kZXJlZFZpc2libGVSb3coKT8odD8/MCkrMTp0fWFyZUNlbGxzQm9yZGVyQm94KCl7cmV0dXJuImJvcmRlci1ib3giPT09dGhpcy5nZXRTdHlsZUZvclREKCJib3gtc2l6aW5nIil9dXNlVGhlbWUoZSl7InN0cmluZyI9PXR5cGVvZiBl'@; put 'JiYvaHQtdGhlbWUtLiovLnRlc3QoZSk/KHU2KHRoaXMsYmRlLFlJZSkuY2FsbCh0aGlzKSxlIT09QmgodGhpcyxwTykmJk00KHRoaXMscE8sZSksQmgodGhpcyx2ZGUpLmNhbGwodGhpcyxCaCh0aGlzLHBPKSksdTYodGhpcyxfZGUsekllKS5jYWxsKHRoaXMpKTpIYShgJHtlfSBpc24ndCBh'@; put 'IHZhbGlkIHRoZW1lIG5hbWUuIFBsZWFzZSBlbnN1cmUgaXQgZm9sbG93cyB0aGUgZm9ybWF0IGh0LXRoZW1lLTx0aGVtZS1uYW1lPi5gKX1nZXRUaGVtZU5hbWUoKXtyZXR1cm4gQmgodGhpcyxwTyl9Y2xlYXJDYWNoZSgpe3U2KHRoaXMsYmRlLFlJZSkuY2FsbCh0aGlzKSx1Nih0aGlzLF9k'@; put 'ZSx6SWUpLmNhbGwodGhpcyl9Y29uc3RydWN0b3Ioe2hvdDplLHJvb3RFbGVtZW50OnQscm9vdERvY3VtZW50OnIsb25UaGVtZUNoYW5nZTppPWE9Pnt9LGluamVjdENvcmVDc3M6bz0hMH0pe1J3KHRoaXMsVkllKSxSdyh0aGlzLEJJZSksUncodGhpcyxfZGUpLFJ3KHRoaXMsakllKSxSdyh0'@; put 'aGlzLFVJZSksUncodGhpcyx5ZGUpLFJ3KHRoaXMsYmRlKSxsXyh0aGlzLGlaLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLHBPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLG9aLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLGFaLHt3'@; put 'cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLGNfLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLF9ULHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLHlULHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxsXyh0aGlzLHZkZSx7d3JpdGFibGU6'@; put 'ITAsdmFsdWU6dm9pZCAwfSksTTQodGhpcyxhWixudWxsKSxNNCh0aGlzLF9ULHt9KSxNNCh0aGlzLHlULHt9KSxNNCh0aGlzLGlaLGUpLE00KHRoaXMsb1osdCksTTQodGhpcyxjXyxyKSxNNCh0aGlzLHZkZSxpKSxvJiZ1Nih0aGlzLFZJZSxZRHQpLmNhbGwodGhpcyl9fWZ1bmN0aW9uIFlE'@; put 'dCgpe2lmKCFCaCh0aGlzLGlaKXx8IUJoKHRoaXMsY18pfHwhQmgodGhpcyxjXykuaGVhZClyZXR1cm47Y29uc3Qgbj1CaCh0aGlzLGNfKS5nZXRFbGVtZW50QnlJZChISWUpO2lmKG4mJm4gaW5zdGFuY2VvZiBIVE1MU3R5bGVFbGVtZW50KXJldHVybjtjb25zdCBlPUJoKHRoaXMsY18pLmNy'@; put 'ZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS5pZD1ISWUsZS50ZXh0Q29udGVudD0nLyohXG4gKiBDb3B5cmlnaHQgKGMpIEhBTkRTT05DT0RFIHNwLiB6IG8uIG8uXG4gKlxuICogSEFORFNPTlRBQkxFIGlzIGEgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgSEFORFNPTkNPREUgc3AuIHogby4gby4s'@; put 'IGEgUG9saXNoIGNvcnBvcmF0aW9uIGJhc2VkIGluXG4gKiBHZHluaWEsIFBvbGFuZCwgYXQgQWxlamEgWnd5Y2llc3R3YSA5Ni05OCwgcmVnaXN0ZXJlZCBieSB0aGUgRGlzdHJpY3QgQ291cnQgaW4gR2RhbnNrIHVuZGVyIG51bWJlclxuICogNTM4NjUxLCBFVSB0YXggSUQgbnVtYmVyOiBQ'@; put 'TDU4NjIyOTQwMDIsIHNoYXJlIGNhcGl0YWw6IFBMTiA2Miw4MDAuMDAuXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3cywgaW5jbHVkaW5nIGludGVybmF0aW9uYWwgdHJlYXRpZXMsIGFuZCBkdWFsLVxuICogbGljZW5zZWQg'@; put 'LSBkZXBlbmRpbmcgb24gd2hldGhlciB5b3VyIHVzZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgbWVhbmluZyBpbnRlbmRlZCBmb3Igb3JcbiAqIHJlc3VsdGluZyBpbiBjb21tZXJjaWFsIGFkdmFudGFnZSBvciBtb25ldGFyeSBjb21wZW5zYXRpb24sIG9yIG5vdC5cbiAqXG4gKiBJZiB5'@; put 'b3VyIHVzZSBpcyBzdHJpY3RseSBwZXJzb25hbCBvciBzb2xlbHkgZm9yIGV2YWx1YXRpb24gcHVycG9zZXMsIG1lYW5pbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiB0ZXN0aW5nXG4gKiB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJl'@; put 'IG91dHNpZGUgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsXG4gKiB5b3UgYWdyZWUgdG8gYmUgYm91bmQgYnkgdGhlIHRlcm1zIGluY2x1ZGVkIGluIHRoZSAiaGFuZHNvbnRhYmxlLW5vbi1jb21tZXJjaWFsLWxpY2Vuc2UucGRmIiBmaWxlLlxuICpcbiAqIFlvdXIgdXNlIG9mIHRoaXMg'@; put 'c29mdHdhcmUgZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgaW5jbHVkZWQgaW4gYW4gYXBwbGljYWJsZVxuICogbGljZW5zZSBhZ3JlZW1lbnQuXG4gKlxuICogSW4gYW55IGNhc2UsIHlvdSBtdXN0IG5vdCBtYWtlIGFueSBzdWNoIHVzZSBvZiB0aGlz'@; put 'IHNvZnR3YXJlIGFzIHRvIGRldmVsb3Agc29mdHdhcmUgd2hpY2ggbWF5IGJlXG4gKiBjb25zaWRlcmVkIGNvbXBldGl0aXZlIHdpdGggdGhpcyBzb2Z0d2FyZS5cbiAqXG4gKiBVTkxFU1MgRVhQUkVTU0xZIEFHUkVFRCBPVEhFUldJU0UsIEhBTkRTT05DT0RFIFBST1ZJREVTIFRISVMgU09G'@; put 'VFdBUkUgT04gQU4gIkFTIElTIlxuICogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBBTkQgSU4gTk8gRVZFTlQgQU5EIFVOREVSIE5PXG4gKiBMRUdBTCBUSEVPUlksIFNIQUxMIEhBTkRTT05DT0RFIEJFIExJQUJMRSBUTyBZT1UgRk9SIERB'@; put 'TUFHRVMsIElOQ0xVRElORyBBTlkgRElSRUNULFxuICogSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkgQ0hBUkFDVEVSIEFSSVNJTkcgRlJPTVxuICogVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhJUyBTT0ZUV0FSRS5cbiAq'@; put 'XG4gKiBWZXJzaW9uOiAxOC4wLjBcbiAqIFJlbGVhc2UgZGF0ZTogMzAvMDYvMjAyNiAoYnVpbHQgYXQgMzAvMDYvMjAyNiAwODo0NTozMSlcbiAqL1xuLmh0LXJvb3Qtd3JhcHBlcntmb250LWZhbWlseTp2YXIoLS1odC1mb250LWZhbWlseSksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3Rl'@; put 'bUZvbnQsIlNlZ29lIFVJIixzYW5zLXNlcmlmO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmV9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0LXdyYXBwZXI6'@; put 'bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0X21hc3RlciAud3RIb2xkZXIsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHQtd3JhcHBlcjpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykg'@; put 'Lmh0X21hc3RlciAud3RIb2xkZXIsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHQtd3JhcHBlcjpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRfbWFzdGVyIC53dEhvbGRlciwuaHQtcm9vdC13cmFwcGVyOmhh'@; put 'cyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odC13cmFwcGVyOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRfbWFzdGVyIC53dEhvbGRlcil7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtib3gtc2hhZG93Omluc2V0'@; put 'IDAgMCAwIDFweCB2YXIoLS1odC1ib3JkZXItY29sb3IpfS5odEZvY3VzQ2F0Y2hlcntvcGFjaXR5OjA7ei1pbmRleDotMTtib3JkZXI6MDtvdXRsaW5lOjA7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW46MDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jayFpbXBvcnRh'@; put 'bnR9Lmh0LWdyaWR7ZmxleDphdXRvO21pbi1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uaHQtZ3JpZC1jb250ZW50e2hlaWdodDoxMDAlfS5odC1zbG90LXRvcCwuaHQtc2xvdC1ib3R0b217ZmxleDpub25lfS5odC1zbG90LWVsZW1lbnR7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRl'@; put 'cjoxcHggc29saWQgdmFyKC0taHQtYm9yZGVyLWNvbG9yKTt3aWR0aDoxMDAlfS5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50Om5vdCg6Zmlyc3Qtb2YtdHlwZSl7Ym9yZGVyLXRvcC13aWR0aDowfS5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50Omxhc3Qtb2YtdHlwZSwuaHQtc2xv'@; put 'dC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudDpub3QoOmxhc3Qtb2YtdHlwZSl7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50OmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXRvcC13aWR0aDowfS5odFNjcm9sbGJhclRlc3R7c2Nyb2xsYmFyLXdpZHRo'@; put 'OmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcil2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpfS5odFNjcm9sbGJhclNhZmFyaVRlc3Q6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjlweDtoZWlnaHQ6OXB4fS5oYW5kc29udGFibGV7Zm9u'@; put 'dC1mYW1pbHk6dmFyKC0taHQtZm9udC1mYW1pbHkpLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsc2Fucy1zZXJpZjtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFy'@; put 'KC0taHQtZm9udC13ZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWh0LWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLnd0SG9sZGVye3Njcm9s'@; put 'bGJhci13aWR0aDphdXRvO3Njcm9sbGJhci1jb2xvcjp2YXIoLS1odC1zY3JvbGxiYXItdGh1bWItY29sb3IpdmFyKC0taHQtc2Nyb2xsYmFyLXRyYWNrLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC53dEhvbGRlcjo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6OXB4O2hlaWdodDo5cHh9LmhhbmRz'@; put 'b250YWJsZSAud3RIb2xkZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JhY2tncm91bmQ6dmFyKC0taHQtc2Nyb2xsYmFyLXRyYWNrLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LXNjcm9sbGJhci1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlIC53dEhvbGRlcjo6LXdlYmtp'@; put 'dC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1zY3JvbGxiYXItdGh1bWItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtc2Nyb2xsYmFyLWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUgLnd0SG9sZGVyOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXJ7'@; put 'YmFja2dyb3VuZDp2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpfS5oYW5kc29udGFibGUgLnd0SG9sZGVyOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGsp'@; put 'LDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSk6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1o'@; put 'dC1zY3JvbGxiYXItYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZSAud3RIb2xkZXI6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmco'@; put 'a3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXJ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1zY3JvbGxiYXItYm9yZGVy'@; put 'LXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRGaXJzdERhdGFzZXRDb2x1bW5Ob3RSZW5kZXJlZCkgdGQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjFw'@; put 'eH0uaGFuZHNvbnRhYmxlLmh0R2hvc3RUYWJsZS5odE5lc3RlZEhlYWRlcnMgdGFibGV7Ym9yZGVyLXNwYWNpbmc6MDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LmhhbmRzb250YWJsZS5odEdob3N0VGFibGUgdGFibGUgdGhlYWQgdGh7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5oYW5kc29u'@; put 'dGFibGUuaHRHaG9zdFRhYmxlIHRhYmxlIHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odEdob3N0VGFibGUgdGFibGUgdGJvZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0ZDpmaXJzdC1jaGlsZHtoZWlnaHQ6Y2FsYyh2YXIoLS1odC1jZWxsLXZlcnRp'@; put 'Y2FsLXBhZGRpbmcpKjIgKyB2YXIoLS1odC1saW5lLWhlaWdodCkgKyAxcHgpfS5oYW5kc29udGFibGUuaHRHaG9zdFRhYmxlIHRhYmxlIHRib2R5IHRyIHRoLC5oYW5kc29udGFibGUuaHRHaG9zdFRhYmxlIHRhYmxlIHRib2R5IHRyIHRke2hlaWdodDpjYWxjKHZhcigtLWh0LWNlbGwtdmVy'@; put 'dGljYWwtcGFkZGluZykqMiArIHZhcigtLWh0LWxpbmUtaGVpZ2h0KSArIDFweCk7Ym9yZGVyLXRvcC13aWR0aDowfS5oYW5kc29udGFibGU6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykuaHRIYXNTY3JvbGxYIC5odF9tYXN0ZXIgLnd0SG9sZGVyLC5oYW5kc29udGFi'@; put 'bGU6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykuaHRIYXNTY3JvbGxZIC5odF9tYXN0ZXIgLnd0SG9sZGVyLC5oYW5kc29udGFibGU6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpLmh0SGFzU2Nyb2xsWCAuaHRfbWFzdGVyIC53dEhvbGRlciwuaGFu'@; put 'ZHNvbnRhYmxlOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KS5odEhhc1Njcm9sbFkgLmh0X21hc3RlciAud3RIb2xkZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1odC1ib3Jk'@; put 'ZXItY29sb3IpfS5oYW5kc29udGFibGUgdHIuaHRfX3Jvd19ldmVuIHRoe2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcm93LWhlYWRlci1ldmVuLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgdHIuaHRfX3Jvd19ldmVuIHRke2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcm93'@; put 'LWNlbGwtZXZlbi1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRyLmh0X19yb3dfb2RkIHRoe2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcm93LWhlYWRlci1vZGQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSB0ci5odF9fcm93X29kZCB0ZHtiYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWh0LXJvdy1jZWxsLW9kZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoLC5oYW5kc29udGFibGUgdGR7aGVpZ2h0OmNhbGModmFyKC0taHQtY2VsbC12ZXJ0aWNhbC1wYWRkaW5nKSoyICsgdmFyKC0taHQtbGluZS1oZWlnaHQpICsgMXB4KTtwYWRkaW5nOnZh'@; put 'cigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1jZWxsLWhvcml6b250YWwtcGFkZGluZyk7dmVydGljYWwtYWxpZ246dG9wO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItaW5saW5lLXdpZHRoOjAgMXB4O2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVp'@; put 'Z2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtlbXB0eS1jZWxsczpzaG93O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9y'@; put 'ZGVyLXRvcC1jb2xvcjp2YXIoLS1odC1jZWxsLXZlcnRpY2FsLWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1odC1jZWxsLXZlcnRpY2FsLWJvcmRlci1jb2xvcik7Ym9yZGVyLWlubGluZS1zdGFydC1jb2xvcjp2YXIoLS1odC1jZWxsLWhvcml6b250YWwtYm9yZGVy'@; put 'LWNvbG9yKTtib3JkZXItaW5saW5lLWVuZC1jb2xvcjp2YXIoLS1odC1jZWxsLWhvcml6b250YWwtYm9yZGVyLWNvbG9yKTtvdXRsaW5lOjA7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGUgdGguaW52aXNpYmxlU2VsZWN0aW9uLC5oYW5kc29udGFibGUgdGQuaW52aXNpYmxlU2VsZWN0'@; put 'aW9ue291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlIHRoLmludmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uLC5oYW5kc29udGFibGUgdGQuaW52aXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9LmhhbmRzb250YWJsZSB0aHt0ZXh0LWFsaWduOmNlbnRlcjtmb250'@; put 'LXdlaWdodDp2YXIoLS1odC1oZWFkZXItZm9udC13ZWlnaHQpO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1odC1oZWFkZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246cmVsYXRpdmU7'@; put 'b3ZlcmZsb3c6dmlzaWJsZX0uaGFuZHNvbnRhYmxlIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLWlubGluZS13aWR0aDowIDFweDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItaW5saW5lLWVuZC1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdGg6bGFzdC1j'@; put 'aGlsZC5odF9fYWN0aXZlX2hpZ2hsaWdodHtib3JkZXItaW5saW5lLWVuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0aDpmaXJzdC1jaGlsZHtib3JkZXItaW5saW5lLXN0YXJ0LWNvbG9yOnZhcigtLWh0LWJvcmRlci1jb2xvcil9'@; put 'LmhhbmRzb250YWJsZSB0aDpmaXJzdC1jaGlsZC5odF9fYWN0aXZlX2hpZ2hsaWdodHtib3JkZXItaW5saW5lLXN0YXJ0LWNvbG9yOnZhcigtLWh0LWhlYWRlci1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgdGg6bnRoLWNo'@; put 'aWxkKDIpe2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MXB4fS5oYW5kc29udGFibGUgdGguY3VycmVudHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdGguYWN0aXZle2NvbG9yOnZhcigtLWh0'@; put 'LWhlYWRlci1hY3RpdmUtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgdGguaHRfX2hpZ2hsaWdodHtjb2xvcjp2YXIoLS1odC1oZWFkZXItaGlnaGxpZ2h0ZWQtZm9yZWdyb3Vu'@; put 'ZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItaGlnaGxpZ2h0ZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodHtib3JkZXItY29sb3I6dmFyKC0taHQtaGVhZGVyLWFjdGl2ZS1ib3JkZXItY29sb3IpO2NvbG9y'@; put 'OnZhcigtLWh0LWhlYWRlci1hY3RpdmUtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgdGJvZHkgdHIuaHRfX3Jvd19vZGQgdGguaHRfX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxl'@; put 'IHRib2R5IHRyLmh0X19yb3dfZXZlbiB0aC5odF9faGlnaGxpZ2h0e2NvbG9yOnZhcigtLWh0LWhlYWRlci1yb3ctaGlnaGxpZ2h0ZWQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItcm93LWhpZ2hsaWdodGVkLWJhY2tncm91bmQtY29sb3IpfS5o'@; put 'YW5kc29udGFibGUgdGJvZHkgdHIuaHRfX3Jvd19vZGQgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQsLmhhbmRzb250YWJsZSB0Ym9keSB0ci5odF9fcm93X2V2ZW4gdGguaHRfX2FjdGl2ZV9oaWdobGlnaHR7Y29sb3I6dmFyKC0taHQtaGVhZGVyLXJvdy1hY3RpdmUtZm9yZWdyb3VuZC1jb2xv'@; put 'cik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItcm93LWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGg6Zmlyc3QtY2hpbGQ6ZW1wdHk6YWZ0ZXIsLmhhbmRzb250YWJsZSB0Ym9keSB0cjpmaXJzdC1vZi10eXBl'@; put 'IHRkOmZpcnN0LWNoaWxkOmVtcHR5OmFmdGVye2NvbnRlbnQ6IiI7bWluLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7ZGlzcGxheTpibG9ja30uaGFuZHNvbnRhYmxlIHRib2R5IHRyIHRoe2NvbG9yOnZhcigtLWh0LWhlYWRlci1yb3ctZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3Vu'@; put 'ZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItcm93LWJhY2tncm91bmQtY29sb3IpO3BhZGRpbmc6MH0uaGFuZHNvbnRhYmxlIHRib2R5IHRyIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JveC1zaGFkb3c6MCAtMXB4IDAgMCB2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcil9Lmhh'@; put 'bmRzb250YWJsZSB0Ym9keSB0ciB0aCAucmVsYXRpdmV7cGFkZGluZzp2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmcpO21pbi1oZWlnaHQ6MTAwJX0uaGFuZHNvbnRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRl'@; put 'ci1pbmxpbmUtc3RhcnQtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRib2R5IHRyIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLWlubGluZS1lbmQtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoZWFkIHRyIHRoe3BhZGRpbmc6MH0u'@; put 'aGFuZHNvbnRhYmxlIHRoZWFkIHRyIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JveC1zaGFkb3c6LTFweCAwIDAgMCB2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0aGVhZCB0ciB0aCAucmVsYXRpdmV7cGFkZGluZzp2YXIoLS1odC1jZWxsLXZl'@; put 'cnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmcpO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtkaXNwbGF5OmZsZXh9LmhhbmRzb250YWJsZSB0aGVhZCB0ciB0aCAucmVsYXRpdmUgLmNvbEhlYWRlcnt0ZXh0LW92ZXJm'@; put 'bG93OmVsbGlwc2lzO3ZlcnRpY2FsLWFsaWduOnRvcDtmbGV4OmF1dG87bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wLWNvbG9yOnZhcigtLWh0LWJvcmRl'@; put 'ci1jb2xvcik7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmhhbmRzb250YWJsZSB0cjpmaXJzdC1jaGlsZCB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRyOmZpcnN0LWNoaWxkIHRkLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JvcmRlci10b3AtY29sb3I6dmFyKC0taHQtaGVh'@; put 'ZGVyLWFjdGl2ZS1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdHI6bGFzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIHRyOmxhc3QtY2hpbGQgdGR7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdHI6bGFzdC1jaGlsZCB0aC5odF9f'@; put 'YWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRyOmxhc3QtY2hpbGQgdGQuaHRfX2FjdGl2ZV9oaWdobGlnaHR7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSBkaXZbY2xhc3NePWh0X2Nsb25lXSB0aGVh'@; put 'ZCAuaHRfX2hpZ2hsaWdodCAucmVsYXRpdmU6YWZ0ZXJ7Y29udGVudDoiIjtoZWlnaHQ6dmFyKC0taHQtaGVhZGVyLWhpZ2hsaWdodGVkLXNoYWRvdy1zaXplKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTti'@; put 'b3R0b206LTFweDtsZWZ0Oi0xcHg7cmlnaHQ6LTFweH0uaGFuZHNvbnRhYmxlIGRpdltjbGFzc149aHRfY2xvbmVdIHRoZWFkIHRyOm9ubHktb2YtdHlwZSAuaHRfX2hpZ2hsaWdodCAucmVsYXRpdmU6YWZ0ZXJ7Ym90dG9tOjB9LmhhbmRzb250YWJsZSBkaXZbY2xhc3NePWh0X2Nsb25lXSB0'@; put 'Ym9keSAuaHRfX2hpZ2hsaWdodCAucmVsYXRpdmU6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDp2YXIoLS1odC1oZWFkZXItaGlnaGxpZ2h0ZWQtc2hhZG93LXNpemUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRl'@; put 'O3RvcDotMXB4O2JvdHRvbTotMXB4O3JpZ2h0Oi0xcHh9LmhhbmRzb250YWJsZSBkaXZbY2xhc3NePWh0X2Nsb25lXSB0ZDpmaXJzdC1vZi10eXBle2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MXB4fS5oYW5kc29udGFibGUgdGhlYWQgdHI6bm90KDpsYXN0LWNoaWxkKSB0aHtvdmVyZmxv'@; put 'dzpoaWRkZW59LmhhbmRzb250YWJsZSAuaGlkZXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAucmVsYXRpdmV7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLnd0SGlkZXJ7d2lkdGg6MH0uaGFuZHNvbnRhYmxlIC53dFNwcmVhZGVye3dp'@; put 'ZHRoOjA7aGVpZ2h0OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRBdXRvU2l6ZXt2aXNpYmlsaXR5OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTk5MDAwcHg7bGVmdDotOTkwMDBweH0uaGFuZHNvbnRhYmxlIC5odFRleHRFbGxpcHNpc3t0ZXh0LW92ZXJm'@; put 'bG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSB0YWJsZSwuaGFuZHNvbnRhYmxlIHRib2R5LC5oYW5kc29udGFibGUgdGhlYWQsLmhhbmRzb250YWJsZSBpbnB1dCwuaGFuZHNvbnRhYmxlIHRleHRhcmVhLC5oYW5kc29udGFibGUg'@; put 'ZGl2e2JveC1zaXppbmc6Y29udGVudC1ib3h9LmhhbmRzb250YWJsZSBpbnB1dCwuaGFuZHNvbnRhYmxlIHRleHRhcmVhe21pbi1oZWlnaHQ6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIC5odENvcmV7Ym9yZGVyLXNwYWNpbmc6MDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7dGFibGUtbGF5b3V0'@; put 'OmZpeGVkO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXdpZHRoOjA7b3V0bGluZS13aWR0aDowO3dpZHRoOjA7bWFyZ2luOjB9LmhhbmRzb250YWJsZSBjb2wsLmhhbmRzb250YWJsZSBjb2wucm93SGVhZGVye3dpZHRo'@; put 'OjY0cHh9LmhhbmRzb250YWJsZSBjb2wuaGlkZGVue3dpZHRoOjAhaW1wb3J0YW50fS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIsLmhhbmRzb250YWJsZSBzcGFuLnJvd0hlYWRlcntmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhl'@; put 'aWdodCk7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSB0ci5oaWRkZW4sLmhhbmRzb250YWJsZSB0ci5oaWRkZW4gdGQsLmhhbmRzb250YWJsZSB0ci5oaWRkZW4gdGh7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgYXtjb2xvcjp2YXIoLS1odC1saW5rLWNvbG9yKX0uaGFu'@; put 'ZHNvbnRhYmxlIGE6aG92ZXJ7Y29sb3I6dmFyKC0taHQtbGluay1ob3Zlci1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRfY2xvbmVfdG9wIHRoOm50aC1jaGlsZCgyKSwuaGFuZHNvbnRhYmxlIC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciB0aDpudGgtY2hpbGQoMil7Ym9yZGVy'@; put 'LWlubGluZS13aWR0aDowIDFweH0uaGFuZHNvbnRhYmxlLmh0Um93SGVhZGVycyB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHh9LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0'@; put 'eUNvbHVtbnMpIHRib2R5IHRyIHRoLC5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVySW5saW5lU3RhcnQpOm5vdCguZW1wdHlDb2x1bW5zKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGlu'@; put 'ZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZTpub3QoLmh0R2hvc3RUYWJsZSkgdGJvZHkgdHIgdGgsLmhhbmRzb250YWJsZSAuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGU6bm90KC5o'@; put 'dF9jbG9uZV90b3ApOm5vdCguaHRHaG9zdFRhYmxlKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZHtib3JkZXItaW5saW5lLXdpZHRoOjFweCAwfS5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKSB0aGVhZCB0cjpsYXN0'@; put 'LWNoaWxkIHRoLC5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKX4uaGFuZHNvbnRhYmxlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSAuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5v'@; put 'dCguaW5uZXJCb3JkZXJCb3R0b20pIHRoZWFkIHRyLmxhc3RDaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlclRvcCk6bm90KC5pbm5lckJvcmRlckJvdHRvbSl+LmhhbmRzb250YWJsZSB0aGVhZCB0ci5sYXN0Q2hpbGQgdGh7Ym9yZGVyLWJvdHRvbS13'@; put 'aWR0aDowfS5oYW5kc29udGFibGUuaHRBdXRvUm93U2l6ZSAuaHRfbWFzdGVyLmlubmVyQm9yZGVyVG9wIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUuaHRBdXRvUm93U2l6ZSAuaHRfbWFzdGVyLmlubmVyQm9yZGVyVG9wIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkLC5o'@; put 'YW5kc29udGFibGUuaHRBdXRvUm93U2l6ZSAuaHRfbWFzdGVyLmlubmVyQm9yZGVyVG9wfi5odF9jbG9uZV9pbmxpbmVfc3RhcnQgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZS5odEF1dG9Sb3dTaXplIC5odF9tYXN0ZXIuaW5uZXJCb3JkZXJUb3B+Lmh0X2Nsb25lX2lu'@; put 'bGluZV9zdGFydCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wLXdpZHRoOjB9LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRhYmxlLmh0Q29yZT50aGVhZCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGFibGUuaHRDb3JlPnRib2R5PnRyPnRoLC5oYW5kc29udGFibGUgLmh0'@; put 'X2Nsb25lX2lubGluZV9zdGFydCB0YWJsZS5odENvcmU+dGhlYWR7dmlzaWJpbGl0eTpoaWRkZW59Lmh0X21hc3RlciwuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odF9jbG9uZV90b3AsLmh0X2Nsb25lX2JvdHRvbSwuaHRfbWFzdGVyIC53dEhvbGRlciwuaHRfY2xvbmVfaW5saW5lX3N0YXJ0'@; put 'IC53dEhvbGRlciwuaHRfY2xvbmVfdG9wIC53dEhvbGRlciwuaHRfY2xvbmVfYm90dG9tIC53dEhvbGRlcntvdmVyZmxvdzpoaWRkZW59Lmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6YXV0b31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRkW2Rpcj1sdHJde2JvcmRlci1pbmxpbmUtd2lk'@; put 'dGg6MXB4IDB9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0Ym9keSB0ciB0ZFtkaXI9bHRyXTpsYXN0LWNoaWxke2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIGRpdltjbGFzc149aHRfY2xvbmVdIHRib2R5IC5o'@; put 'dF9faGlnaGxpZ2h0IC5yZWxhdGl2ZTphZnRlcntsZWZ0Oi0xcHg7cmlnaHQ6YXV0b30uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXJ7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXI6bm90KC5odENvbHVtbkhlYWRlcnMpIC5odF9t'@; put 'YXN0ZXIgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmco'@; put 'a3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCgu'@; put 'aHRDb2x1bW5IZWFkZXJzKSAuaHRfbWFzdGVyIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmco'@; put 'Z2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29u'@; put 'dGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X21hc3RlciAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFu'@; put 'ZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1i'@; put 'b3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXI6bm90KC5odENvbHVtbkhlYWRlcnMpIC5odF9tYXN0ZXIgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5n'@; put 'KGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxl'@; put 'ZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6bm90KDps'@; put 'YW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2Qp'@; put 'LDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENv'@; put 'cmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16'@; put 'biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVh'@; put 'ZGVycykgLmh0X2Nsb25lX3RvcCAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDps'@; put 'YW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0'@; put 'LXdyYXBwZXI6bm90KC5odENvbHVtbkhlYWRlcnMpIC5odF9jbG9uZV90b3AgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYp'@; put 'LDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVy'@; put 'LXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfdG9wIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmco'@; put 'YnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3Atcmln'@; put 'aHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X2Nsb25lX3RvcCAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFu'@; put 'ZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6'@; put 'bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoOmZp'@; put 'cnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxh'@; put 'bmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6bm90'@; put 'KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmco'@; put 'c2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUg'@; put 'dGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biks'@; put 'OmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmZpcnN0'@; put 'LWNoaWxkIHRkOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxh'@; put 'bmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLnd0SG9sZGVyLC5oYW5kc29udGFi'@; put 'bGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmV7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSks'@; put 'OmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1'@; put 'ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6'@; put 'bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVn'@; put 'KSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhh'@; put 'cyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSk6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5x'@; put 'byksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRoZWFkIHRy'@; put 'OmZpcnN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSk6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xr'@; put 'KSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJs'@; put 'ZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGsp'@; put 'LDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRh'@; put 'YmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xr'@; put 'KSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29u'@; put 'dGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhi'@; put 'cWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1y'@; put 'aWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSk6aXMoOmxhbmco'@; put 'YWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxh'@; put 'bmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOm5vdCg6bGFu'@; put 'ZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6'@; put 'bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxh'@; put 'bmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCks'@; put 'OmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkOm5vdCg6'@; put 'bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNk'@; put 'KSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQ6aXMo'@; put 'OmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhz'@; put 'ZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlOm5vdCg6bGFuZyhhZSks'@; put 'OmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1'@; put 'ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENvcmU6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFu'@; put 'ZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6'@; put 'bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3Qo'@; put 'OmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhz'@; put 'ZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNo'@; put 'aWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmco'@; put 'cG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX3RvcCAuaHRDb3JlOm5vdCg6bGFuZyhhZSks'@; put 'OmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1'@; put 'ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX3RvcCAuaHRDb3Jl'@; put 'OmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxh'@; put 'bmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xv'@; put 'bmVfdG9wIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5n'@; put 'KGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRf'@; put 'Y2xvbmVfdG9wIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxh'@; put 'bmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAu'@; put 'aHRfY2xvbmVfdG9wIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2Ip'@; put 'LDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigt'@; put 'LWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfdG9wIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKTppcyg6bGFuZyhhZSksOmxhbmcoYXIp'@; put 'LDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmco'@; put 'dXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6'@; put 'bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRv'@; put 'cC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmU6aXMoOmxhbmcoYWUpLDpsYW5nKGFy'@; put 'KSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5n'@; put 'KHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5o'@; put 'dENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFu'@; put 'Zyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfaW5s'@; put 'aW5lX3N0YXJ0IC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxh'@; put 'bmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBw'@; put 'ZXIgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGds'@; put 'ayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRi'@; put 'b2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDps'@; put 'YW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9pbmxp'@; put 'bmVfc3RhcnQgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5n'@; put 'KGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQg'@; put 'dGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIp'@; put 'LDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVy'@; put 'IC5odENvcmU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFu'@; put 'ZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29y'@; put 'ZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDps'@; put 'YW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZSB0'@; put 'cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhu'@; put 'cW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6'@; put 'bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxh'@; put 'bmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlIHRy'@; put 'Omxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFv'@; put 'KSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOmlz'@; put 'KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmco'@; put 'c2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFu'@; put 'ZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6'@; put 'bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZTppcyg6'@; put 'bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNk'@; put 'KSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5o'@; put 'dF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFu'@; put 'ZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNo'@; put 'aWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMp'@; put 'LDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tIC5odENvcmUgdHI6bGFzdC1jaGlsZCB0aDpm'@; put 'aXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxh'@; put 'bmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFu'@; put 'ZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7'@; put 'Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tIC5odENvcmUgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFy'@; put 'YyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5n'@; put 'KHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxh'@; put 'bmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVy'@; put 'LXJhZGl1cyl9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tIC5odENvcmUgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhk'@; put 'diksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2Jv'@; put 'dHRvbSAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmco'@; put 'bXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xs'@; put 'WDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhr'@; put 'dSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAu'@; put 'aHRDb3JlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhw'@; put 'cyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Ny'@; put 'b2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmco'@; put 'aGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxl'@; put 'QnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxh'@; put 'bmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRv'@; put 'dykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSks'@; put 'OmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9y'@; put 'aXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmco'@; put 'Z2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxs'@; put 'eVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxh'@; put 'bmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxh'@; put 'YmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6'@; put 'bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6'@; put 'bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3Qo'@; put 'Lmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJv'@; put 'ZHkgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkKTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxh'@; put 'bmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxseVNjcm9s'@; put 'bGFibGVCeVdpbmRvdykgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJs'@; put 'ZUJ5V2luZG93KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpsYXN0'@; put 'LWNoaWxkKTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmco'@; put 'cHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmU6bm90KDpsYW5n'@; put 'KGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDps'@; put 'YW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29y'@; put 'ZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDps'@; put 'YW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdp'@; put 'bmRvdykgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cp'@; put 'IC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxZOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQpOm5v'@; put 'dCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5n'@; put 'KHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1j'@; put 'aGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQg'@; put 'dGQ6bGFzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxZOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQpOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJj'@; put 'KSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmco'@; put 'eWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpo'@; put 'YXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5oYW5kc29udGFibGUuaHQtd3Jh'@; put 'cHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkKTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2Ip'@; put 'LDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9'@; put 'OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5o'@; put 'YW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRp'@; put 'Y2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkKTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGsp'@; put 'LDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXJ7Ym9yZGVyLXJhZGl1czp2'@; put 'YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odC13cmFwcGVyOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmco'@; put 'ZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXIt'@; put 'Ym90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHQtd3JhcHBlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYp'@; put 'LDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90'@; put 'dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRfbWFzdGVyIC53dEhvbGRlcjpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDps'@; put 'YW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9y'@; put 'ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0X21hc3RlciAud3RIb2xkZXI6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhj'@; put 'a2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVz'@; put 'OjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDps'@; put 'YW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9y'@; put 'ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYp'@; put 'LDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90'@; put 'dG9tLWxlZnQtcmFkaXVzOjB9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNs'@; put 'b3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkKTpub3QoOmxhbmco'@; put 'YWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxh'@; put 'bmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH06aXMoLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLmh0LXJv'@; put 'b3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRy'@; put 'Omxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQpOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5x'@; put 'byksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfTppcyguaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGhl'@; put 'YWQgdHI6bGFzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3Qt'@; put 'Y2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCk6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxh'@; put 'bmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJh'@; put 'ZGl1czowfTppcyguaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5odC1yb290LXdyYXBw'@; put 'ZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hp'@; put 'bGQgdGg6bGFzdC1jaGlsZCk6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhw'@; put 'bmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odC13cmFwcGVyOm5vdCg6bGFuZyhhZSksOmxh'@; put 'bmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1Zyks'@; put 'OmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHQtd3JhcHBlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5n'@; put 'KGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDps'@; put 'YW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHRfbWFzdGVyIC53dEhvbGRlcjpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhh'@; put 'cmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFu'@; put 'Zyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0X21hc3RlciAud3RIb2xkZXI6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMp'@; put 'LDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5'@; put 'aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxh'@; put 'bmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3At'@; put 'bGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNr'@; put 'YiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2Jv'@; put 'cmRlci10b3AtcmlnaHQtcmFkaXVzOjB9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1z'@; put 'bG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkKTpub3QoOmxhbmco'@; put 'YWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxh'@; put 'bmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH06aXMoLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5odC1yb290LXdy'@; put 'YXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hp'@; put 'bGQgdGg6Zmlyc3QtY2hpbGQpOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmco'@; put 'cG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfTppcyguaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hp'@; put 'bGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKSwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwuaHQtcm9vdC13'@; put 'cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCk6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiks'@; put 'OmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfTppcyguaHQtcm9vdC13'@; put 'cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKSwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5o'@; put 'dC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCk6aXMoOmxhbmco'@; put 'YWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxh'@; put 'bmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyIC5odC1zbG90LWVsZW1lbnR7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaHQtcm9vdC13cmFwcGVyIC5odC1zbG90LWJvdHRvbT4uaHQtc2xv'@; put 'dC1lbGVtZW50Om5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlciAuaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudDpsYXN0LW9mLXR5cGU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSks'@; put 'OmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaHQtcm9vdC13cmFwcGVyIC5o'@; put 'dC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50Omxhc3Qtb2YtdHlwZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxh'@; put 'bmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlciAuaHQtc2xvdC10b3A+Lmh0'@; put 'LXNsb3QtZWxlbWVudDpub3QoOmZpcnN0LW9mLXR5cGUpe2JvcmRlci1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyIC5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50OmZpcnN0LW9mLXR5cGU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJx'@; put 'aSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaHQtcm9vdC13cmFwcGVy'@; put 'IC5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50OmZpcnN0LW9mLXR5cGU6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDps'@; put 'YW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5oYW5kc29udGFibGUubW9iaWxlLC5oYW5k'@; put 'c29udGFibGUubW9iaWxlIC53dEhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IzAwMDA7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmhhbmRzb250YWJsZS5tb2JpbGUgLmhhbmRzb250'@; put 'YWJsZUlucHV0OmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMnB4IHZhcigtLWh0LWFjY2VudC1jb2xvcik7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LmhhbmRzb250YWJsZSAudG9wU2VsZWN0aW9uSGFuZGxlLC5oYW5kc29udGFibGUgLnRvcFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVh'@; put 'LC5oYW5kc29udGFibGUgLmJvdHRvbVNlbGVjdGlvbkhhbmRsZSwuaGFuZHNvbnRhYmxlIC5ib3R0b21TZWxlY3Rpb25IYW5kbGUtSGl0QXJlYXtpbnNldC1pbmxpbmUtc3RhcnQ6LTEwMDAwcHg7aW5zZXQtaW5saW5lLWVuZDp1bnNldDt6LWluZGV4Ojk5OTk7dG9wOi0xMDAwMHB4fS5oYW5k'@; put 'c29udGFibGUuaGlkZS10d2VlbnthbmltYXRpb246LjJzIGZvcndhcmRzIG9wYWNpdHktaGlkZX0uaGFuZHNvbnRhYmxlLnNob3ctdHdlZW57YW5pbWF0aW9uOi4zcyBmb3J3YXJkcyBvcGFjaXR5LXNob3d9Lmh0X2Nsb25lX21hc3Rlcnt6LWluZGV4OjEwMH0uaHRfY2xvbmVfaW5saW5lX3N0'@; put 'YXJ0e3otaW5kZXg6MTIwfS5odF9jbG9uZV9ib3R0b217ei1pbmRleDoxMzB9Lmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye3otaW5kZXg6MTUwfS5odF9jbG9uZV90b3B7ei1pbmRleDoxNjB9Lmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVye3otaW5kZXg6MTgw'@; put 'fS5odF9lZGl0b3JfaGlkZGVue3otaW5kZXg6LTF9Lmh0X2VkaXRvcl92aXNpYmxle3otaW5kZXg6MjAwfS5oYW5kc29udGFibGUgdGQuYXJlYXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1odC1jZWxs'@; put 'LXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTF7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTE6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1o'@; put 'dC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTJ7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2'@; put 'YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTN7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTM6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dy'@; put 'b3VuZDp2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTR7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTQ6YmVmb3Jle2NvbnRlbnQ6IiI7'@; put 'YmFja2dyb3VuZDp2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTV7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3Jle2NvbnRl'@; put 'bnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTZ7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3Jl'@; put 'e2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTd7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTc6'@; put 'YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLCMxYTQyZTgpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSB0ZC5hcmVhOmJlZm9yZXtvcGFjaXR5Oi4xNH0uaGFuZHNvbnRhYmxlIHRkLmFy'@; put 'ZWEtMTpiZWZvcmV7b3BhY2l0eTouMjF9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3Jle29wYWNpdHk6LjI4fS5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZXtvcGFjaXR5Oi4zNX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmV7b3BhY2l0eTouNDJ9LmhhbmRzb250YWJs'@; put 'ZSB0ZC5hcmVhLTU6YmVmb3Jle29wYWNpdHk6LjQ5fS5oYW5kc29udGFibGUgdGQuYXJlYS02OmJlZm9yZXtvcGFjaXR5Oi41Nn0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7b3BhY2l0eTouNjN9LmhhbmRzb250YWJsZSB0ZC5hcmVhe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4g'@; put 'c3JnYix2YXIoLS1odC1ib3JkZXItY29sb3IpLHZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpMTAlKX0uaGFuZHNvbnRhYmxlIC53dEJvcmRlcntmb250LXNpemU6MDtwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC53dEJvcmRlcjpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlIC53'@; put 'dEJvcmRlcjpudGgtY2hpbGQoMyl7ei1pbmRleDoyfS5oYW5kc29udGFibGUgLnd0Qm9yZGVyOm50aC1jaGlsZCgyKSwuaGFuZHNvbnRhYmxlIC53dEJvcmRlcjpudGgtY2hpbGQoNCl7ei1pbmRleDoxfS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmhpZGRlbntkaXNwbGF5Om5vbmUhaW1wb3J0'@; put 'YW50fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmN1cnJlbnR7ei1pbmRleDoxMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJvcmRlci1jb2xvcikhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmFyZWF7ei1pbmRleDo4O2JhY2tncm91bmQtY29s'@; put 'b3I6dmFyKC0taHQtY2VsbC1zZWxlY3Rpb24tYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuZmlsbHt6LWluZGV4OjY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLWF1dG9maWxsLWZpbGwtYm9yZGVyLWNvbG9yLCM2ODY5NmMpIWltcG9ydGFu'@; put 'dH0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5jb3JuZXJ7Y3Vyc29yOmNyb3NzaGFpcjt6LWluZGV4OjEwO2ZvbnQtc2l6ZTowO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtY2VsbC1hdXRvZmlsbC1ib3JkZXItcmFkaXVzKSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxs'@; put 'LWF1dG9maWxsLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCkhaW1wb3J0YW50O2JvcmRlci1jb2xvcjp2YXIoLS1odC1jZWxsLWF1dG9maWxsLWJvcmRlci1jb2xvcikhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmNvcm5lcjphZnRlcntjb250ZW50OiIiO2JvcmRlci1yYWRp'@; put 'dXM6dmFyKC0taHQtY2VsbC1hdXRvZmlsbC1ib3JkZXItcmFkaXVzKTtpbnNldDptaW4oMHB4LCh2YXIoLS1odC1jZWxsLWF1dG9maWxsLXNpemUpIC0gdmFyKC0taHQtY2VsbC1hdXRvZmlsbC1oaXQtYXJlYS1zaXplKSkvMik7YmFja2dyb3VuZDowIDA7cG9zaXRpb246YWJzb2x1dGV9Lmhh'@; put 'bmRzb250YWJsZSAud3RCb3JkZXIuY29ybmVyLnd0Q29ybmVySW5saW5lRW5kRWRnZTphZnRlcntpbnNldC1pbmxpbmUtZW5kOjB9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY29ybmVyLnd0Q29ybmVyQmxvY2tFbmRFZGdlOmFmdGVye2luc2V0LWJsb2NrLWVuZDowfS5ob3QtZGlzcGxheS1s'@; put 'aWNlbnNlLWluZm97Zm9udC1mYW1pbHk6dmFyKC0taHQtZm9udC1mYW1pbHkpLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsc2Fucy1zZXJpZjtwYWRkaW5nOnZhcigtLWh0LWxpY2Vuc2UtdmVydGljYWwtcGFkZGluZywxNnB4KXZhcigtLWh0LWxpY2Vuc2Ut'@; put 'aG9yaXpvbnRhbC1wYWRkaW5nLDE2cHgpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUtc21hbGwpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0LXNtYWxsKTtjb2xvcjp2YXIoLS1odC1saWNlbnNlLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0t'@; put 'aHQtbGljZW5zZS1iYWNrZ3JvdW5kLWNvbG9yLCNmN2Y3ZjkpO3RleHQtYWxpZ246bGVmdH0uaG90LWRpc3BsYXktbGljZW5zZS1pbmZvIGF7Zm9udC1zaXplOnZhcigtLWh0LWxpY2Vuc2UtZm9udC1zaXplKTtjb2xvcjp2YXIoLS1odC1saW5rLWNvbG9yKX0uaG90LWRpc3BsYXktbGljZW5z'@; put 'ZS1pbmZvIGE6aG92ZXJ7Y29sb3I6dmFyKC0taHQtbGluay1ob3Zlci1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRBdXRvY29tcGxldGVBcnJvd3tjdXJzb3I6ZGVmYXVsdDt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpO2Zsb2F0OnJpZ2h0O3Rv'@; put 'cDpjYWxjKCh2YXIoLS1odC1saW5lLWhlaWdodCkgLSB2YXIoLS1odC1pY29uLXNpemUpKS8yKTttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO21hcmdpbi1pbmxpbmUtZW5kOjFweDtmb250LXNpemU6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRh'@; put 'YmxlIC5odEF1dG9jb21wbGV0ZUFycm93OmFmdGVye2NvbnRlbnQ6IiI7b3BhY2l0eTouNjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFycm93e2Zsb2F0OmxlZnR9LmhhbmRzb250YWJs'@; put 'ZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXR7d2lkdGg6dmFyKC0taHQtY2hlY2tib3gtc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWNoZWNrYm94LXNpemUpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjttYXJnaW46MDtvdXRsaW5lOm5vbmU7bWFyZ2luLXRvcDotMnB4O2Rp'@; put 'c3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtZW5kOnZhcigtLWh0LWdhcC1zaXplKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDps'@; put 'YXN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6dmFyKC0taHQtZ2FwLXNpemUpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOnZhcigtLWh0LWNoZWNrYm94LXNpemUpO2hlaWdodDp2YXIoLS1odC1jaGVja2JveC1zaXpl'@; put 'KTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWNoZWNrYm94LWJvcmRlci1yYWRpdXMpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtY2hlY2tib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWJhY2tncm91bmQtY29sb3IpO2JveC1zaXppbmc6Ym9y'@; put 'ZGVyLWJveDtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246YWxsIHZhcigtLWh0LXRhYmxlLXRyYW5zaXRpb24pZWFzZS1pbi1vdXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJl'@; put 'cklucHV0OmFmdGVye2NvbnRlbnQ6IiI7Y29sb3I6dmFyKC0taHQtY2hlY2tib3gtaWNvbi1jb2xvcik7cG9pbnRlci1ldmVudHM6bm9uZTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDp2YXIoLS1odC1jaGVja2JveC1zaXplKSFpbXBvcnRhbnQ7'@; put 'aGVpZ2h0OnZhcigtLWh0LWNoZWNrYm94LXNpemUpIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDpjaGVja2VkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6'@; put 'dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDpjaGVja2VkOmFmdGVye2NvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2Jv'@; put 'eFJlbmRlcmVySW5wdXQ6Y2hlY2tlZDpkaXNhYmxlZDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtZGlzYWJsZWQtYmFja2dyb3VuZC1j'@; put 'b2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6Y2hlY2tlZDpkaXNhYmxlZDphZnRlcntjb2xvcjp2YXIoLS1odC1jaGVja2JveC1jaGVja2VkLWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmNoZWNr'@; put 'ZWQ6Zm9jdXM6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1jaGVja2VkLWZvY3VzLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1jaGVja2VkLWZvY3VzLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2ti'@; put 'b3hSZW5kZXJlcklucHV0OmNoZWNrZWQ6Zm9jdXM6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1mb2N1cy1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDpmb2N1czpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNoZWNr'@; put 'Ym94LWZvY3VzLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKTtvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1odC1jaGVja2JveC1mb2N1cy1yaW5nLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVu'@; put 'ZGVyZXJJbnB1dDpmb2N1czphZnRlcntjb2xvcjp2YXIoLS1odC1jaGVja2JveC1mb2N1cy1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDpkaXNhYmxlZHtjdXJzb3I6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1'@; put 'dDpkaXNhYmxlZDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVy'@; put 'ZXJJbnB1dDpkaXNhYmxlZDphZnRlcntjb2xvcjp2YXIoLS1odC1jaGVja2JveC1kaXNhYmxlZC1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDppbmRldGVybWluYXRlOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtaW5kZXRl'@; put 'cm1pbmF0ZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDppbmRldGVybWluYXRlOmFmdGVye2NvbG9yOnZhcigtLWh0LWNo'@; put 'ZWNrYm94LWluZGV0ZXJtaW5hdGUtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6aW5kZXRlcm1pbmF0ZTpkaXNhYmxlZDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZGlzYWJsZWQtYm9yZGVyLWNv'@; put 'bG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6aW5kZXRlcm1pbmF0ZTpkaXNhYmxlZDphZnRlcntjb2xvcjp2YXIoLS1odC1j'@; put 'aGVja2JveC1pbmRldGVybWluYXRlLWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmluZGV0ZXJtaW5hdGU6Zm9jdXM6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWZvY3VzLWJvcmRl'@; put 'ci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWZvY3VzLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmluZGV0ZXJtaW5hdGU6Zm9jdXM6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtY2hl'@; put 'Y2tib3gtaW5kZXRlcm1pbmF0ZS1mb2N1cy1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dC5ub1ZhbHVle29wYWNpdHk6LjV9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVyTGFiZWx7Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6'@; put 'aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjtjb2xvcjppbmhlcml0O21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlckxhYmVsLmZ1bGxXaWR0aHt3aWR0aDoxMDAlfS5oYW5kc29udGFibGUgLmh0UGxh'@; put 'Y2Vob2xkZXJ7Y29sb3I6dmFyKC0taHQtcGxhY2Vob2xkZXItY29sb3IpfS5oYW5kc29udGFibGUgLmh0RGltbWVke2NvbG9yOnZhcigtLWh0LXJlYWQtb25seS1jb2xvcikhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2VsbC1yZWFkLW9ubHktYmFja2dyb3VuZC1jb2xv'@; put 'cikhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0TGVmdHt0ZXh0LWFsaWduOmxlZnR9LmhhbmRzb250YWJsZSAuaHRDZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmhhbmRzb250YWJsZSAuaHRSaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS5oYW5kc29udGFibGUgLmh0SnVzdGlmeXt0ZXh0LWFs'@; put 'aWduOmp1c3RpZnl9LmhhbmRzb250YWJsZSAuaHRUb3B7dmVydGljYWwtYWxpZ246dG9wfS5oYW5kc29udGFibGUgLmh0TWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaGFuZHNvbnRhYmxlIC5odEJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b219LmhhbmRzb250YWJsZSAuaHRJbnZh'@; put 'bGlke2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2VsbC1lcnJvci1iYWNrZ3JvdW5kLWNvbG9yKSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHROb1dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS5oYW5kc29udGFibGUgLmh0U2VhcmNoUmVzdWx0e2JhY2tncm91bmQtY29sb3I6dmFyKC0t'@; put 'aHQtY2VsbC1zdWNjZXNzLWJhY2tncm91bmQtY29sb3IpIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odC1tdWx0aS1zZWxlY3QtcmVuZGVyZXJ7cGFkZGluZzp2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmcpO292ZXJmbG93'@; put 'OmhpZGRlbn0uaGFuZHNvbnRhYmxlIC5odC1tdWx0aS1zZWxlY3QtY2hpcHMtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6dmFyKC0taHQtZ2FwLXNpemUpO2ZsZXgtd3JhcDpub3dyYXA7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbn0uaGFuZHNv'@; put 'bnRhYmxlIC5odC1tdWx0aS1zZWxlY3QtY2hpcHthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOnZhcigtLWh0LWdhcC1zaXplKTtwYWRkaW5nOnZhcigtLWh0LWNoaXAtdmVydGljYWwtcGFkZGluZyljYWxjKCh2YXIoLS1odC1saW5lLWhlaWdodCkgLSB2YXIoLS1odC1pY29uLXNpemUpKS8yKXZh'@; put 'cigtLWh0LWNoaXAtdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1jaGlwLWhvcml6b250YWwtcGFkZGluZyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1jaGlwLWJvcmRlci1yYWRpdXMpO2JhY2tncm91bmQ6dmFyKC0taHQtY2hpcC1iYWNrZ3JvdW5kKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym94'@; put 'LXNpemluZzpib3JkZXItYm94O2ZsZXgtc2hyaW5rOjA7bWF4LXdpZHRoOjEwMHB4O2Rpc3BsYXk6aW5saW5lLWZsZXh9LmhhbmRzb250YWJsZSAuaHQtbXVsdGktc2VsZWN0LWNoaXAtbGFiZWx7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9y'@; put 'KTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0taHQtbGluZS1oZWlnaHQsNDBweCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0taHQtbGV0dGVyLXNwYWNpbmcsMCk7cGFkZGluZzowIHZhcigtLWh0LWNoaXAtZ2FwKTtv'@; put 'dmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSAuaHQtbXVsdGktc2VsZWN0LWNoaXAtcmVtb3Zle2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWljb24tY29sb3IpO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDti'@; put 'YWNrZ3JvdW5kLXNpemU6Y29udGFpbjtmbGV4LXNocmluazowO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MDtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKSFpbXBvcnRhbnQ7aGVpZ2h0OnZh'@; put 'cigtLWh0LWljb24tc2l6ZSkhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0LW11bHRpLXNlbGVjdC1jaGlwLXJlbW92ZTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uaGFuZHNvbnRhYmxlIC5odC1tdWx0aS1zZWxlY3Qt'@; put 'Y2hpcC1yZW1vdmU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odC1tdWx0aS1zZWxlY3Qtb3ZlcmZsb3d7cGFkZGluZzp2YXIoLS1odC1jaGlwLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0t'@; put 'aHQtY2hpcC1ob3Jpem9udGFsLXBhZGRpbmcpO2JhY2tncm91bmQ6dmFyKC0taHQtY2hpcC1iYWNrZ3JvdW5kKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWNoaXAtYm9yZGVyLXJhZGl1cyk7Y29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXgt'@; put 'c2hyaW5rOjA7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleH0uaGFuZHNvbnRhYmxlSW5wdXRIb2xkZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5oYW5kc29udGFibGVJbnB1dEhvbGRlciAuaGFuZHNvbnRhYmxl'@; put 'SW5wdXR7cGFkZGluZzpjYWxjKHZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZyw0cHgpICsgMXB4KWNhbGModmFyKC0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmcsOHB4KSArIDFweCk7Y29sb3I6dmFyKC0taHQtY2VsbC1lZGl0b3ItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3Vu'@; put 'ZC1jb2xvcjp2YXIoLS1odC1jZWxsLWVkaXRvci1iYWNrZ3JvdW5kLWNvbG9yLCNmZmYpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgdmFyKC0taHQtY2VsbC1lZGl0b3ItYm9yZGVyLXdpZHRoLDJweCl2YXIoLS1odC1jZWxsLWVkaXRvci1ib3JkZXItY29sb3IsIzFhNDJlOCksMCAwIHZhcigt'@; put 'LWh0LWNlbGwtZWRpdG9yLXNoYWRvdy1ibHVyLXJhZGl1cywwKTAgdmFyKC0taHQtY2VsbC1lZGl0b3Itc2hhZG93LWNvbG9yLHRyYW5zcGFyZW50KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO291dGxpbmUtd2lkdGg6MDttYXJnaW46MDtkaXNw'@; put 'bGF5OmJsb2NrO2ZvbnQtZmFtaWx5OmluaGVyaXQhaW1wb3J0YW50O2ZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudDtsaW5lLWhlaWdodDppbmhlcml0IWltcG9ydGFudDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZUlucHV0SG9sZGVyIC5oYW5kc29u'@; put 'dGFibGVJbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmV9Lmh0U2VsZWN0RWRpdG9ye3Bvc2l0aW9uOmFic29sdXRlfS5odFNlbGVjdEVkaXRvciBzZWxlY3R7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwYWRkaW5nOmNhbGModmFyKC0taHQtY2VsbC12ZXJ0aWNhbC1wYWRkaW5nLDRweCkgKyAxcHgp'@; put 'Y2FsYyh2YXIoLS1odC1jZWxsLWhvcml6b250YWwtcGFkZGluZyw4cHgpICsgMXB4KTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztjb2xvcjp2YXIoLS1odC1jZWxsLWVkaXRvci1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNl'@; put 'bGwtZWRpdG9yLWJhY2tncm91bmQtY29sb3IsI2ZmZik7Ym94LXNoYWRvdzppbnNldCAwIDAgMCB2YXIoLS1odC1jZWxsLWVkaXRvci1ib3JkZXItd2lkdGgsMnB4KXZhcigtLWh0LWNlbGwtZWRpdG9yLWJvcmRlci1jb2xvciwjMWE0MmU4KSwwIDAgdmFyKC0taHQtY2VsbC1lZGl0b3Itc2hh'@; put 'ZG93LWJsdXItcmFkaXVzLDApMCB2YXIoLS1odC1jZWxsLWVkaXRvci1zaGFkb3ctY29sb3IsdHJhbnNwYXJlbnQpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjA7bWFyZ2luOjA7cGFkZGluZy1pbmxpbmUtZW5kOjI2cHg7cG9zaXRpb246YWJzb2x1'@; put 'dGU7aW5zZXQ6MDtvdmVyZmxvdzpoaWRkZW47Zm9udC1mYW1pbHk6aW5oZXJpdCFpbXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OmluaGVyaXQhaW1wb3J0YW50Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lIWltcG9ydGFudH0uaHRTZWxlY3RFZGl0b3Ig'@; put 'c2VsZWN0OmZvY3Vze291dGxpbmU6bm9uZX0uaHRTZWxlY3RFZGl0b3IgLmh0QXV0b2NvbXBsZXRlQXJyb3d7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmU7bWFyZ2luLWlubGluZS1lbmQ6NHB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZS5s'@; put 'aXN0Ym94e2JveC1zaGFkb3c6dmFyKC0taHQtbWVudS1zaGFkb3cteCwwKXZhcigtLWh0LW1lbnUtc2hhZG93LXksMCl2YXIoLS1odC1tZW51LXNoYWRvdy1ibHVyLDhweCljb2xvci1taXgoaW4gc3JnYix2YXIoLS1odC1tZW51LXNoYWRvdy1jb2xvciwjMDAwKXZhcigtLWh0LW1lbnUtc2hh'@; put 'ZG93LW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpO2JvcmRlcjp2YXIoLS1odC1tZW51LWJvcmRlci13aWR0aCwxcHgpc29saWQgdmFyKC0taHQtbWVudS1ib3JkZXItY29sb3IsI2U1ZTVlOSk7bWFyZ2luOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odF9tYXN0ZXJ7YmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZS5saXN0Ym94IC53dEhvbGRlcntvdmVyZmxvdzphdXRvO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IC53dEhpZGVyLC5oYW5kc29udGFibGUu'@; put 'bGlzdGJveCAuaHRDb3Jle2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxle292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoLC5o'@; put 'YW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0cjpsYXN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGR7Ym9yZGVyLWNvbG9yOiMwMDAwIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlLmxp'@; put 'c3Rib3ggdGFibGUgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRke3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIC53dEJvcmRlcnt2aXNpYmlsaXR5Omhp'@; put 'ZGRlbn0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgc3Ryb25ne2NvbG9yOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NzAwfS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0ciB0ZDpob3ZlciB0ZHtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0'@; put 'LW1lbnUtaXRlbS1ob3Zlci1jb2xvcil2YXIoLS1odC1tZW51LWl0ZW0taG92ZXItY29sb3Itb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCkhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRke3RyYW5zaXRpb246dmFyKC0t'@; put 'aHQtdGFibGUtdHJhbnNpdGlvbiliYWNrZ3JvdW5kIGVhc2UtaW4tb3V0fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0ZDpob3ZlcntjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvcil2YXIo'@; put 'LS1odC1tZW51LWl0ZW0taG92ZXItY29sb3Itb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCkhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0ZC5jdXJyZW50Om5vdChbYXJpYS1leHBhbmRlZD10cnVlXSl7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0taHQt'@; put 'YWNjZW50LWNvbG9yKX0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGQuaHREaW1tZWR7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zdHlsZTppbmhlcml0O2NvbG9yOmluaGVyaXQhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0ZC5odERpbW1lZDpub3QoLmhhbmRzb250'@; put 'YWJsZS5saXN0Ym94IHRhYmxlIHRkOmhvdmVyKXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0aGVhZCB0aHt0ZXh0LWFsaWduOmxlZnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJs'@; put 'ZSB0aGVhZCB0aCAucmVsYXRpdmV7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpICsgdmFyKC0taHQtZ2FwLXNpemUpKTtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZykgKyB2YXIoLS1odC1nYXAtc2l6ZSkp'@; put 'fS5oYW5kc29udGFibGUubGlzdGJveCAuaHRfY2xvbmVfdG9wIC53dEhpZGVye292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggLmh0X2Nsb25lX3RvcCB0YWJsZXtib3JkZXItcmFkaXVzOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odEJvcmRlcnMgZGl2e2JhY2tncm91'@; put 'bmQ6MCAwIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlLmF1dG9jb21wbGV0ZUVkaXRvciB0ci5odF9fcm93X2V2ZW4gdGgsLmhhbmRzb250YWJsZS5hdXRvY29tcGxldGVFZGl0b3IgdHIuaHRfX3Jvd19ldmVuIHRkLC5oYW5kc29udGFibGUuYXV0b2NvbXBsZXRlRWRpdG9yIHRyLmh0X19yb3df'@; put 'b2RkIHRoLC5oYW5kc29udGFibGUuYXV0b2NvbXBsZXRlRWRpdG9yIHRyLmh0X19yb3dfb2RkIHRke2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvciwjZmZmKX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGhlYWQgdGh7dGV4dC1hbGlnbjpy'@; put 'aWdodH0uaGFuZHNvbnRhYmxlRWRpdG9ye3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3J7Ym94LXNoYWRvdzp2YXIoLS1odC1tZW51LXNoYWRvdy14LDApdmFyKC0taHQtbWVudS1zaGFkb3cteSwwKXZhcigtLWh0LW1lbnUtc2hh'@; put 'ZG93LWJsdXIsOHB4KWNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtc2hhZG93LWNvbG9yLCMwMDApdmFyKC0taHQtbWVudS1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7c2Nyb2xsYmFyLXdpZHRoOmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJh'@; put 'ci10aHVtYi1jb2xvcil2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLWh0LW1lbnUtYm9yZGVyLXJhZGl1cyl2YXIoLS1odC1tZW51LWJvcmRlci1yYWRpdXMpO2JvcmRlcjp2YXIoLS1odC1tZW51LWJvcmRlci13aWR0aClzb2xpZCB2YXIo'@; put 'LS1odC1tZW51LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTt3aWR0aDptYXgtY29udGVudDttaW4td2lkdGg6MTIwcHg7cGFkZGluZzp2YXIoLS1odC1tZW51LXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtbWVudS1ob3Jpem9udGFsLXBhZGRp'@; put 'bmcpO292ZXJmbG93LXk6YXV0b30uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yLXNlYXJjaC1pbnB1dC13cmFwcGVye3BhZGRpbmc6dmFyKC0taHQtbWVudS1pdGVtLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtbWVu'@; put 'dS1pdGVtLWhvcml6b250YWwtcGFkZGluZyk7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDp2YXIoLS1odC1nYXAtc2l6ZSk7YWxpZ24tc2VsZjpzdHJldGNoO2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIC5o'@; put 'dC1tdWx0aS1zZWxlY3QtZWRpdG9yLXNlYXJjaC1pY29ue2xlZnQ6Y2FsYyh2YXIoLS1odC1tZW51LWl0ZW0taG9yaXpvbnRhbC1wYWRkaW5nKSArIDEwcHgpO29wYWNpdHk6LjU7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjE7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3Vu'@; put 'ZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIGlu'@; put 'cHV0Lmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VhcmNoLWlucHV0e2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVzOnZhcigtLWh0LWlucHV0LWJvcmRlci1yYWRpdXMpO3dpZHRoOjEwMCU7Y29sb3I6dmFyKC0taHQtaW5wdXQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3Vu'@; put 'ZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWh0LWlucHV0LWJvcmRlci1jb2xvcik7dHJhbnNpdGlvbjp2YXIoLS1odC10YWJsZS10cmFuc2l0aW9uKWFsbCBlYXNlLWluLW91dDtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5l'@; put 'LWhlaWdodCk7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7cGFkZGluZzp2YXIoLS1odC1pbnB1dC12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcpdmFyKC0taHQtaW5wdXQtdmVydGljYWwtcGFkZGluZykzMnB4fS5oYW5kc29udGFi'@; put 'bGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgaW5wdXQuaHQtbXVsdGktc2VsZWN0LWVkaXRvci1zZWFyY2gtaW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtaG92ZXItZm9yZWdyb3Vu'@; put 'ZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIGlucHV0Lmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VhcmNoLWlucHV0OmRpc2FibGVke2JvcmRl'@; put 'ci1jb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJs'@; put 'ZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciBpbnB1dC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yLXNlYXJjaC1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1mb3JlZ3JvdW5k'@; put 'LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWJhY2tncm91bmQtY29sb3IpO291dGxpbmUtb2Zmc2V0OjA7Ym94LXNoYWRvdzpub25lO291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIGlucHV0Lmh0LW11'@; put 'bHRpLXNlbGVjdC1lZGl0b3Itc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTtvcGFjaXR5Oi42fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VwYXJhdG9y'@; put 'e2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtbWVudS1ib3JkZXItY29sb3IpO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDttYXJnaW46dmFyKC0taHQtbWVudS12ZXJ0aWNhbC1wYWRkaW5nKTAgdmFyKC0taHQtbWVudS12ZXJ0aWNhbC1wYWRkaW5nKTA7cGFkZGluZzowfS5oYW5kc29udGFibGVF'@; put 'ZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWx7d2lkdGg6MTAwJTtwYWRkaW5nOnZhcigtLWh0LWdhcC1zaXplKXZhcigtLWh0LW1lbnUtaG9yaXpvbnRhbC1wYWRkaW5nKTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDttYXJnaW46MDtsaXN0LXN0'@; put 'eWxlOm5vbmU7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWwgbGl7YmFja2dyb3VuZDp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtwYWRkaW5nOnZhcigtLWh0LW1lbnUtaXRlbS12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LW1l'@; put 'bnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO2FsaWduLXNlbGY6c3RyZXRjaDthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRp'@; put 'LXNlbGVjdC1lZGl0b3IgdWwgbGkgKntjdXJzb3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpLmh0LW11bHRpLXNlbGVjdC1lZGl0b3ItaXRlbS1zZWxlY3RlZHtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1l'@; put 'bnUtaXRlbS1hY3RpdmUtY29sb3IpdmFyKC0taHQtbWVudS1pdGVtLWFjdGl2ZS1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpIGRpdntmbGV4OjEgMCAwO2FsaWduLWl0ZW1zOmNlbnRlcjtk'@; put 'aXNwbGF5OmZsZXh9LmhhbmRzb250YWJsZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciB1bCBsaSBkaXYgaW5wdXR7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO3dpZHRoOnZhcigtLWh0LWNoZWNrYm94LXNpemUpO2hlaWdodDp2YXIoLS1odC1jaGVja2Jv'@; put 'eC1zaXplKTttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWwgbGkgZGl2IGlucHV0OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0'@; put 'ZTt0b3A6MDtsZWZ0OjB9LmhhbmRzb250YWJsZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciB1bCBsaSBkaXYgaW5wdXQ6YmVmb3Jle2NvbnRlbnQ6IiI7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOnZhcigtLWh0LWNoZWNrYm94LXNpemUpO2hlaWdodDp2YXIoLS1odC1jaGVj'@; put 'a2JveC1zaXplKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWNoZWNrYm94LWJvcmRlci1yYWRpdXMpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtY2hlY2tib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWh0LWNoZWNrYm94LWJhY2tncm91bmQtY29sb3IpO2JhY2tncm91bmQt'@; put 'cG9zaXRpb246NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpIGRpdiBpbnB1dDpjaGVja2VkOmJlZm9yZXtib3Jk'@; put 'ZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpIGRpdiBpbnB1dDpj'@; put 'aGVja2VkOmFmdGVye2NvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtaWNvbi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9LmhhbmRzb250YWJsZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciB1bCBsaSBkaXYgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25l'@; put 'fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWwgbGkgZGl2IGxhYmVse2NvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7Zm9udC1zdHlsZTpub3JtYWw7'@; put 'Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1odC1sZXR0ZXItc3BhY2luZyk7d2lkdGg6MTAwJTtwYWRkaW5nOjAgMCAwIGNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO292ZXJmbG93OmhpZGRlbn0uaGFuZHNv'@; put 'bnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpOmhvdmVye2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtbWVudS1pdGVtLWhvdmVyLWNvbG9yKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50'@; put 'KX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpOmhhcyhpbnB1dDpmb2N1cyl7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1odC1tZW51LWl0ZW0taG92ZXItY29sb3IpdmFyKC0taHQtbWVudS1pdGVtLWhvdmVyLWNvbG9yLW9wYWNp'@; put 'dHksMTAwJSksdHJhbnNwYXJlbnQpfS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RDYXB0aW9ue3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1odC1pbnB1dC12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LWlucHV0LWhvcml6b250YWwtcGFkZGluZyk7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250'@; put 'LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNv'@; put 'cjpwb2ludGVyO2JvcmRlcjp2YXIoLS1odC1pbnB1dC1ib3JkZXItd2lkdGgpc29saWQgdmFyKC0taHQtaW5wdXQtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWJhY2tncm91bmQtY29s'@; put 'b3IpO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7bWFyZ2luOjA7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0taHQtaW5wdXQtaG9yaXpvbnRhbC1wYWRkaW5n'@; put 'KSArIHZhcigtLWh0LWljb24tc2l6ZSkpO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RDYXB0aW9uOmFmdGVye2NvbnRlbnQ6IiI7cmlnaHQ6Y2FsYyh2YXIoLS1odC1pbnB1dC1ob3Jpem9udGFsLXBhZGRpbmcpIC0gdmFy'@; put 'KC0taHQtaWNvbi1zaXplKS80KTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb246aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWJvcmRl'@; put 'ci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtaG92ZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0Q2FwdGlvbjpkaXNhYmxlZHtib3JkZXItY29sb3I6'@; put 'dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlT'@; put 'ZWxlY3RDYXB0aW9uOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtYmFja2dyb3VuZC1jb2xv'@; put 'cil9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdHtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3Q6Zm9jdXMgLmh0VUlTZWxlY3RDYXB0aW9ue2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1m'@; put 'b2N1cy1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtYmFja2dyb3VuZC1jb2xvcil9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb246YWZ0'@; put 'ZXJ7cmlnaHQ6YXV0bztsZWZ0OmNhbGModmFyKC0taHQtaW5wdXQtaG9yaXpvbnRhbC1wYWRkaW5nKSAtIHZhcigtLWh0LWljb24tc2l6ZSkvNCl9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbiAuaHRVSUlucHV0IGlucHV0LC5oYW5kc29udGFibGUgLmh0RmlsdGVyc01l'@; put 'bnVWYWx1ZSAuaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoIGlucHV0e3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1odC1pbnB1dC12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LWlucHV0LWhvcml6b250YWwtcGFkZGluZyk7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6dmFyKC0taHQt'@; put 'Zm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2JvcmRl'@; put 'cjp2YXIoLS1odC1pbnB1dC1ib3JkZXItd2lkdGgpc29saWQgdmFyKC0taHQtaW5wdXQtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWJhY2tncm91bmQtY29sb3IpO3RyYW5zaXRpb246'@; put 'dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7b3V0bGluZTpub25lIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXQgaW5wdXQ6aG92ZXIsLmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJ'@; put 'TXVsdGlwbGVTZWxlY3RTZWFyY2ggaW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtaG92ZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1i'@; put 'YWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXQgaW5wdXQ6ZGlzYWJsZWQsLmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RTZWFyY2ggaW5wdXQ6ZGlzYWJsZWR7Ym9yZGVyLWNv'@; put 'bG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5o'@; put 'dEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXQgaW5wdXQ6Zm9jdXMsLmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RTZWFyY2ggaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWJvcmRlci1jb2xvcik7'@; put 'Y29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXR7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzowO3Bvc2l0aW9uOnJl'@; put 'bGF0aXZlO291dGxpbmU6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0SWNvbntwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbiBpbnB1dCwuaGFuZHNvbnRhYmxlIC5odC1idXR0b257bWluLXdpZHRoOjY0cHg7cGFkZGlu'@; put 'Zzp2YXIoLS1odC1idXR0b24tdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1idXR0b24taG9yaXpvbnRhbC1wYWRkaW5nKTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtmb250LXdlaWdo'@; put 'dDp2YXIoLS1odC1mb250LXdlaWdodCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1idXR0b24tYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7Ym9yZGVy'@; put 'LXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7b3V0bGluZTpub25lIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbkNhbmNlbCBpbnB1dCwuaGFuZHNvbnRhYmxlIC5odC1idXR0b24tLXNlY29uZGFyeXtib3JkZXItY29sb3I6dmFyKC0taHQtc2Vjb25k'@; put 'YXJ5LWJ1dHRvbi1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1zZWNvbmRhcnktYnV0dG9uLWZvcmVncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJ'@; put 'QnV0dG9uQ2FuY2VsIGlucHV0OmhvdmVyLC5oYW5kc29udGFibGUgLmh0LWJ1dHRvbi0tc2Vjb25kYXJ5OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1odC1zZWNvbmRhcnktYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1zZWNvbmRhcnktYnV0'@; put 'dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWh0LXNlY29uZGFyeS1idXR0b24taG92ZXItZm9yZWdyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b25DYW5jZWwgaW5wdXQ6ZGlzYWJsZWQsLmhhbmRzb250YWJsZSAuaHQtYnV0dG9u'@; put 'LS1zZWNvbmRhcnk6ZGlzYWJsZWR7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXNlY29uZGFyeS1idXR0b24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXNlY29uZGFyeS1idXR0b24tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0t'@; put 'aHQtc2Vjb25kYXJ5LWJ1dHRvbi1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbkNhbmNlbCBpbnB1dDpmb2N1cywuaGFuZHNvbnRhYmxlIC5odC1idXR0b24tLXNlY29uZGFyeTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0taHQt'@; put 'c2Vjb25kYXJ5LWJ1dHRvbi1mb2N1cy1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1zZWNvbmRhcnktYnV0dG9uLWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JveC1z'@; put 'aGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcil9Lmh0VUlJbnB1dC5odFVJQnV0dG9uT0sgaW5wdXQsLmh0LWJ1dHRvbi0tcHJpbWFyeXtib3JkZXItY29sb3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0'@; put 'LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWZvcmVncm91bmQtY29sb3IpfS5odFVJSW5wdXQuaHRVSUJ1dHRvbk9LIGlucHV0OmhvdmVyLC5odC1idXR0b24tLXByaW1hcnk6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0'@; put 'LXByaW1hcnktYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1wcmltYXJ5LWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1wcmltYXJ5LWJ1dHRvbi1ob3Zlci1mb3JlZ3JvdW5kLWNvbG9yKX0uaHRVSUlucHV0'@; put 'Lmh0VUlCdXR0b25PSyBpbnB1dDpkaXNhYmxlZCwuaHQtYnV0dG9uLS1wcmltYXJ5OmRpc2FibGVke2JvcmRlci1jb2xvcjp2YXIoLS1odC1wcmltYXJ5LWJ1dHRvbi1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tZGlzYWJs'@; put 'ZWQtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcil9Lmh0VUlJbnB1dC5odFVJQnV0dG9uT0sgaW5wdXQ6Zm9jdXMsLmh0LWJ1dHRvbi0tcHJpbWFyeTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0taHQtcHJp'@; put 'bWFyeS1idXR0b24tZm9jdXMtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWZvY3VzLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAw'@; put 'IDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlve3BhZGRpbmc6dmFyKC0taHQtZ2FwLXNpemUpY2FsYygyKnZhcigtLWh0LWdhcC1zaXplKSk7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDp2YXIoLS1odC1nYXAtc2l6ZSk7Y3Vyc29yOnBvaW50ZXI7'@; put 'bWFyZ2luOjA7cGFkZGluZy1ib3R0b206MDtkaXNwbGF5OmlubGluZS1mbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbzpmaXJzdC1jaGlsZHtwYWRkaW5nLWlubGluZS1zdGFydDowfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlv'@; put 'XXt3aWR0aDp2YXIoLS1odC1yYWRpby1zaXplKTtoZWlnaHQ6dmFyKC0taHQtcmFkaW8tc2l6ZSk7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6Y2FsYyguNSp2YXIoLS1odC1yYWRpby1zaXplKSk7b3V0bGluZTpu'@; put 'b25lO21hcmdpbjowO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpiZWZvcmV7Y29udGVudDoiIjtib3JkZXItcmFkaXVzOmNhbGMoLjUqdmFyKC0taHQtcmFkaW8tc2l6ZSkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtcmFk'@; put 'aW8tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXJhZGlvLWJhY2tncm91bmQtY29sb3IpO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106YWZ0ZXJ7Y29udGVudDoi'@; put 'Ijtjb2xvcjp2YXIoLS1odC1yYWRpby1pY29uLWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1ib3Jk'@; put 'ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphZnRlcntjb2xvcjp2YXIoLS1odC1yYWRpby1jaGVja2VkLWljb24tY29sb3Ip'@; put 'fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmRpc2FibGVke2N1cnNvcjppbml0aWFsfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmRpc2FibGVkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQt'@; put 'cmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpkaXNhYmxlZDph'@; put 'ZnRlcntjb2xvcjp2YXIoLS1odC1yYWRpby1jaGVja2VkLWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmZvY3VzOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1mb2N1cy1ib3Jk'@; put 'ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpmb2N1czphZnRlcntjb2xvcjp2YXIoLS1odC1yYWRpby1jaGVja2Vk'@; put 'LWZvY3VzLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpkaXNhYmxlZHtjdXJzb3I6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106ZGlzYWJsZWQ6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1o'@; put 'dC1yYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlvPmlucHV0W3R5cGU9cmFkaW9dOmRpc2FibGVkOmFmdGVye2NvbG9yOnZhcigtLWh0LXJh'@; put 'ZGlvLWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpmb2N1czpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXJhZGlvLWZvY3VzLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1yYWRpby1mb2N1'@; put 'cy1iYWNrZ3JvdW5kLWNvbG9yKTtvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1odC1yYWRpby1mb2N1cy1yaW5nLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtcmFkaW8tZm9jdXMtaWNvbi1jb2xvcil9'@; put 'LmhhbmRzb250YWJsZSAuaHRVSVJhZGlvIGxhYmVse3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjppbmhlcml0fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbyBsYWJlbDpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2lu'@; put 'c2V0OjB9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbnt3aWR0aDp2YXIoLS1odC1pY29uLWJ1dHRvbi1oaXQtYXJlYS1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1idXR0b24taGl0LWFyZWEtc2l6ZSk7bWFyZ2lu'@; put 'OmNhbGMoLTEqKHZhcigtLWh0LWljb24tYnV0dG9uLWhpdC1hcmVhLXNpemUpIC0gdmFyKC0taHQtaWNvbi1zaXplKSkvMiArIDFweCk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO3RleHQtaW5kZW50Oi0xMDBweDtmbGV4LXNocmluazowO2ZvbnQtc2l6ZTowO3Bvc2l0'@; put 'aW9uOnJlbGF0aXZlO292ZXJmbG93OnZpc2libGV9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3I6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b246YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQt'@; put 'aWNvbi1zaXplKTttYXJnaW4tdG9wOmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO21hcmdpbi1sZWZ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWJvcmRlci1yYWRpdXMpO3RyYW5zaXRpb246dmFyKC0t'@; put 'aHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7ei1pbmRleDoxO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvcjphZnRlciwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0'@; put 'dG9uOmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTttYXJnaW4tdG9wOmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO21hcmdpbi1sZWZ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2JvcmRlci1y'@; put 'YWRpdXM6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWJvcmRlci1yYWRpdXMpO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7ei1pbmRleDowO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uaGFuZHNv'@; put 'bnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5leHBhbmRlZDpiZWZvcmUsLmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuaHRfbmVzdGluZ0NvbGxhcHNlOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9uLmV4cGFuZGVkOmJlZm9yZSwuaGFuZHNvbnRh'@; put 'YmxlIC5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdDb2xsYXBzZTpiZWZvcmV7Y29sb3I6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLW9wZW4taWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuZXhwYW5kZWQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuY29s'@; put 'bGFwc2libGVJbmRpY2F0b3IuaHRfbmVzdGluZ0NvbGxhcHNlOmFmdGVyLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uZXhwYW5kZWQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nQ29sbGFwc2U6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2'@; put 'YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1iYWNrZ3JvdW5kLWNvbG9yKTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmV4cGFuZGVkOmhvdmVyOmJl'@; put 'Zm9yZSwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nQ29sbGFwc2U6aG92ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uZXhwYW5kZWQ6aG92ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uaHRfbmVz'@; put 'dGluZ0NvbGxhcHNlOmhvdmVyOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1ob3Zlci1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5leHBhbmRlZDpob3ZlcjphZnRlciwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUlu'@; put 'ZGljYXRvci5odF9uZXN0aW5nQ29sbGFwc2U6aG92ZXI6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5leHBhbmRlZDpob3ZlcjphZnRlciwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdDb2xsYXBzZTpob3ZlcjphZnRlcntiYWNrZ3JvdW5k'@; put 'LWNvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWJhY2tncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0'@; put 'b3IuY29sbGFwc2VkOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nRXhwYW5kOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9uLmNvbGxhcHNlZDpiZWZvcmUsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5odF9u'@; put 'ZXN0aW5nRXhwYW5kOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tY2xvc2UtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuY29sbGFwc2VkOmFmdGVyLC5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmh0X25lc3Rp'@; put 'bmdFeHBhbmQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5jb2xsYXBzZWQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3Nl'@; put 'LWJhY2tncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9zZS1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmNvbGxhcHNlZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSAuY29sbGFw'@; put 'c2libGVJbmRpY2F0b3IuaHRfbmVzdGluZ0V4cGFuZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5jb2xsYXBzZWQ6aG92ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0V4cGFuZDpob3ZlcjpiZWZvcmV7Y29s'@; put 'b3I6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3NlLWhvdmVyLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmNvbGxhcHNlZDpob3ZlcjphZnRlciwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nRXhwYW5kOmhv'@; put 'dmVyOmFmdGVyLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uY29sbGFwc2VkOmhvdmVyOmFmdGVyLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0V4cGFuZDpob3ZlcjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRv'@; put 'bi1jbG9zZS1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tY2xvc2UtaG92ZXItYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5jb2xsYXBzaWJsZUluZGljYXRvci5j'@; put 'b2xsYXBzZWQ6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmh0X25lc3RpbmdFeHBhbmQ6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmh0X25lc3RpbmdCdXR0b24uY29sbGFwc2Vk'@; put 'OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdFeHBhbmQ6YmVmb3Jle2NvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9zZS1pY29uLWFjdGl2ZS1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5odF9f'@; put 'YWN0aXZlX2hpZ2hsaWdodCAuY29sbGFwc2libGVJbmRpY2F0b3IuY29sbGFwc2VkOmhvdmVyOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nRXhwYW5kOmhvdmVyOmJlZm9yZSwuaGFuZHNvbnRhYmxl'@; put 'IHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5odF9uZXN0aW5nQnV0dG9uLmNvbGxhcHNlZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmhvdmVyOmJlZm9yZXtjb2xvcjp2YXIoLS1o'@; put 'dC1jb2xsYXBzZS1idXR0b24tY2xvc2UtaG92ZXItaWNvbi1hY3RpdmUtY29sb3IpfS5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmV4cGFuZGVkOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5j'@; put 'b2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nQ29sbGFwc2U6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmh0X25lc3RpbmdCdXR0b24uZXhwYW5kZWQ6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmh0X25lc3Rp'@; put 'bmdCdXR0b24uaHRfbmVzdGluZ0NvbGxhcHNlOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1pY29uLWFjdGl2ZS1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuY29sbGFwc2libGVJbmRpY2F0b3IuZXhwYW5kZWQ6aG92ZXI6'@; put 'YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmh0X25lc3RpbmdDb2xsYXBzZTpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuaHRfbmVzdGluZ0J1dHRvbi5leHBhbmRlZDpo'@; put 'b3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nQ29sbGFwc2U6aG92ZXI6YmVmb3Jle2NvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWljb24tYWN0aXZlLWNvbG9yKX0uaGFu'@; put 'ZHNvbnRhYmxlIHRoZWFkIHRoLmh0Um93c3BhbkhlYWRlcit0aHtib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjB9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5odFJvd3NwYW5IZWFkZXJ7dmVydGljYWwtYWxpZ246Ym90dG9tO2hlaWdodDphdXRvO292ZXJmbG93OnZpc2libGV9LmhhbmRzb250'@; put 'YWJsZSB0aGVhZCB0aC5odFJvd3NwYW5IZWFkZXIuaHRfX2FjdGl2ZV9oaWdobGlnaHR7Ym9yZGVyLWlubGluZS1zdGFydC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcik7ei1pbmRleDoxfS5oYW5kc29udGFibGUuaHRSb3dIZWFkZXJzLmh0SGFzUm93c3Bhbkhl'@; put 'YWRlcnMgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5n'@; put 'KG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaGFuZHNvbnRhYmxlLmh0Um93SGVhZGVycy5odEhhc1Jvd3NwYW5IZWFkZXJzIHRoZWFkIHRyOmxh'@; put 'c3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6'@; put 'bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmhhbmRzb250YWJsZS5odEhhc1Jvd3NwYW5IZWFkZXJzIC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZSB0Ym9keSB0cjpm'@; put 'aXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFv'@; put 'KSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uaGFuZHNvbnRhYmxlLmh0SGFzUm93c3BhbkhlYWRlcnMgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmZp'@; put 'cnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyks'@; put 'OmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKSB0aGVhZCB0'@; put 'aC5odFJvd3NwYW5Cb3R0b21MZXZlbCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlclRvcCk6bm90KC5pbm5lckJvcmRlckJvdHRvbSl+LmhhbmRzb250YWJsZSB0aGVhZCB0aC5odFJvd3NwYW5Cb3R0b21MZXZlbHtib3JkZXItYm90dG9tLXdpZHRoOjB9LmhhbmRz'@; put 'b250YWJsZSB0aGVhZCB0aC5oaWRkZW5IZWFkZXI6bm90KDpmaXJzdC1vZi10eXBlKXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5oaWRkZW5IZWFkZXJUZXh0IC5jb2xIZWFkZXJ7b3BhY2l0eTowfS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVscz4ucmVsYXRp'@; put 'dmV7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHg7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVscyBzcGFuOmxhc3QtY2hpbGR7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0taHQtaWNvbi1zaXplKSArIDVweCl9LmhhbmRzb250YWJsZSB0aC5odF9uZXN0aW5n'@; put 'TGV2ZWxzIHNwYW4uaHRfbmVzdGluZ0xldmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVscyBzcGFuLmh0X25lc3RpbmdMZXZlbF9lbXB0eXtvcmRlcjotMjt3aWR0aDo1cHg7aGVpZ2h0OjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3Np'@; put 'dGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmh0X25lc3RpbmdMZXZlbHMgLmh0X25lc3RpbmdCdXR0b257Y3Vyc29yOnBvaW50ZXI7b3JkZXI6LTE7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW4sLmhhbmRzb250YWJsZSB0aC5hZnRl'@; put 'ckhpZGRlbkNvbHVtbntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXIsLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmUsLmhhbmRz'@; put 'b250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjphZnRlcntjb2xvcjp2YXIoLS1odC1oaWRkZW4taW5kaWNhdG9yLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3dpZHRoOjEwcHghaW1wb3J0YW50O2hlaWdodDoxMHB4IWltcG9y'@; put 'dGFudH0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cmlnaHQ6LTJweH0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7bGVmdDotMnB4fS5oYW5k'@; put 'c29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQuYmVmb3JlSGlkZGVuQ29sdW1uOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlciwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmFmdGVy'@; put 'SGlkZGVuQ29sdW1uOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmFmdGVySGlkZGVuQ29sdW1uOmFmdGVye2NvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1pY29uLWNvbG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1pY29uLWNvbG9y'@; put 'KSl9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXJ7cmlnaHQ6aW5pdGlhbDtsZWZ0Oi0ycHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSlyb3RhdGUoMTgwZGVnKX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJl'@; put 'Zm9yZXtyaWdodDotMnB4O2xlZnQ6aW5pdGlhbDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKXJvdGF0ZSgxODBkZWcpfS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93LC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3d7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJs'@; put 'ZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93OmFmdGVyLC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtaGlkZGVu'@; put 'LWluZGljYXRvci1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTt3aWR0aDoxMHB4IWltcG9ydGFudDtoZWlnaHQ6MTBweCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YWZ0ZXJ7Y29udGVudDoiIjtk'@; put 'aXNwbGF5OmJsb2NrO2JvdHRvbTotMnB4fS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt0b3A6LTJweH0uaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmJlZm9yZUhpZGRlblJvdzpiZWZvcmUsLmhhbmRz'@; put 'b250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodC5iZWZvcmVIaWRkZW5Sb3c6YWZ0ZXIsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodC5hZnRlckhpZGRlblJvdzpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodC5hZnRlckhpZGRlblJv'@; put 'dzphZnRlcntjb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtaWNvbi1jb2xvcix2YXIoLS1odC1pY29uLWFjdGl2ZS1idXR0b24taWNvbi1jb2xvcikpfS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGV7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOnZhcigtLWh0LWljb24tYnV0'@; put 'dG9uLWhpdC1hcmVhLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLWJ1dHRvbi1oaXQtYXJlYS1zaXplKTttYXJnaW46Y2FsYygtMSoodmFyKC0taHQtaWNvbi1idXR0b24taGl0LWFyZWEtc2l6ZSkgLSB2YXIoLS1odC1pY29uLXNpemUpKS8yICsgMXB4KTtib3gtc2hhZG93Om5vbmU7Y29s'@; put 'b3I6aW5oZXJpdDt6LWluZGV4OjE7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2ZsZXgtc2hyaW5rOjA7cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OnZpc2libGV9LmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZTpiZWZvcmV7Y29udGVudDoiIjt3'@; put 'aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpO21hcmdpbi10b3A6Y2FsYygtLjUqdmFyKC0taHQtaWNvbi1zaXplKSk7bWFyZ2luLWxlZnQ6Y2FsYygtLjUqdmFyKC0taHQtaWNvbi1zaXplKSk7Y29sb3I6dmFyKC0taHQtaWNvbi1idXR0b24taWNv'@; put 'bi1jb2xvcik7ei1pbmRleDoxO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBlOmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTtt'@; put 'YXJnaW4tdG9wOmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO21hcmdpbi1sZWZ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaWNvbi1idXR0b24tYm9yZGVyLXJhZGl1cyk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0taHQtaWNv'@; put 'bi1idXR0b24tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpO3otaW5kZXg6MDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCV9LmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZTpo'@; put 'b3ZlcntjdXJzb3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBlOmhvdmVyOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1ob3Zlci1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBlOmhvdmVyOmFmdGVye2JveC1zaGFkb3c6MCAwIDAgMXB4IHZh'@; put 'cigtLWh0LWljb24tYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuY2hhbmdlVHlwZTpiZWZvcmV7Y29sb3I6dmFy'@; put 'KC0taHQtaWNvbi1idXR0b24tYWN0aXZlLWljb24tY29sb3IsdmFyKC0taHQtaWNvbi1hY3RpdmUtYnV0dG9uLWljb24tY29sb3IpKX0uaGFuZHNvbnRhYmxlIC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuY2hhbmdlVHlwZTphZnRlcntib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1pY29u'@; put 'LWJ1dHRvbi1hY3RpdmUtYm9yZGVyLWNvbG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1ib3JkZXItY29sb3IpKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1iYWNr'@; put 'Z3JvdW5kLWNvbG9yKSl9LmhhbmRzb250YWJsZSAuaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNoYW5nZVR5cGU6aG92ZXI6YmVmb3Jle2NvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1ob3Zlci1pY29uLWNvbG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1ob3Zlci1pY29u'@; put 'LWNvbG9yKSl9LmhhbmRzb250YWJsZSAuaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNoYW5nZVR5cGU6aG92ZXI6YWZ0ZXJ7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0taHQtaWNvbi1idXR0b24tYWN0aXZlLWhvdmVyLWJvcmRlci1jb2xvcix2YXIoLS1odC1pY29uLWFjdGl2ZS1idXR0b24t'@; put 'aG92ZXItYm9yZGVyLWNvbG9yKSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtaG92ZXItYmFja2dyb3VuZC1jb2xvcix2YXIoLS1odC1pY29uLWFjdGl2ZS1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcikpfS5oYW5kc29udGFibGUgdGguaHRGaWx0'@; put 'ZXJzQWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaGVhZGVyLWZpbHRlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoLmh0RmlsdGVyc0FjdGl2ZS5odF9fYWN0aXZlX2hpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0'@; put 'LWhlYWRlci1hY3RpdmUtYmFja2dyb3VuZC1jb2xvciksdmFyKC0taHQtaGVhZGVyLWZpbHRlci1iYWNrZ3JvdW5kLWNvbG9yKTIwJSl9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudT4uaHRfbWFzdGVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudT4uaHRfbWFzdGVyLC5oYW5kc29u'@; put 'dGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU+Lmh0X21hc3Rlcntib3gtc2hhZG93OnZhcigtLWh0LW1lbnUtc2hhZG93LXgsMCl2YXIoLS1odC1tZW51LXNoYWRvdy15LDApdmFyKC0taHQtbWVudS1zaGFkb3ctYmx1ciw4cHgpY29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtbWVudS1z'@; put 'aGFkb3ctY29sb3IsIzAwMCl2YXIoLS1odC1tZW51LXNoYWRvdy1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KTtib3JkZXI6dmFyKC0taHQtbWVudS1ib3JkZXItd2lkdGgsMXB4KXNvbGlkIHZhcigtLWh0LW1lbnUtYm9yZGVyLWNvbG9yLCNlNWU1ZTkpO2JvcmRlci1yYWRpdXM6dmFyKC0t'@; put 'aHQtbWVudS1ib3JkZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWh0LW1lbnUtdmVydGljYWwtcGFkZGluZyw4cHgpdmFyKC0taHQtbWVudS1ob3Jpem9udGFsLXBhZGRpbmcsMCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yLCNmZmYpO292ZXJmbG93OmhpZGRl'@; put 'bn0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51Om5vdCguaHRHaG9zdFRhYmxlKSwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnU6bm90KC5odEdob3N0VGFibGUpLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU6bm90KC5odEdob3N0VGFibGUpe3otaW5kZXg6MTA2'@; put 'MDtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGV9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgLmh0X2Nsb25lX2JvdHRvbSwuaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9pbmxp'@; put 'bmVfc3RhcnQsLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51'@; put 'IC5odF9jbG9uZV90b3AsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV9ib3R0b20sLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0'@; put 'X2Nvcm5lciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX3RvcCwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5o'@; put 'dF9jbG9uZV9ib3R0b20sLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyLC5oYW5kc29udGFibGUuaHRG'@; put 'aWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlLmh0Q29yZSwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUuaHRDb3JlLC5oYW5kc29udGFi'@; put 'bGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUuaHRDb3Jle292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IC5odEN1c3RvbU1lbnVSZW5kZXJlciAudGFibGUuaHRDb3JlLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSAuaHRDdXN0b21NZW51UmVu'@; put 'ZGVyZXIgLnRhYmxlLmh0Q29yZSwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odEN1c3RvbU1lbnVSZW5kZXJlciAudGFibGUuaHRDb3Jle2JveC1zaGFkb3c6bm9uZX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51LmhhbmRzb250YWJsZTpmb2N1cywuaGFuZHNv'@; put 'bnRhYmxlLmh0Q29udGV4dE1lbnUuaGFuZHNvbnRhYmxlOmZvY3VzLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUuaGFuZHNvbnRhYmxlOmZvY3Vze291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IC53dEJvcmRlciwuaGFuZHNvbnRhYmxlLmh0'@; put 'Q29udGV4dE1lbnUgLnd0Qm9yZGVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVufS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGJvZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0ZDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRh'@; put 'YmxlLmh0RHJvcGRvd25NZW51IHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGQ6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRib2R5IHRyOmZpcnN0'@; put 'LW9mLXR5cGUgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0Ym9keSB0cjpmaXJzdC1vZi10eXBlIHRkOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGJvZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0aDpm'@; put 'aXJzdC1jaGlsZHtoZWlnaHQ6Y2FsYyh2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpKjIgKyB2YXIoLS1odC1saW5lLWhlaWdodCkgKyAxcHgpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRh'@; put 'YmxlIHRib2R5IHRyIHRkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGR7cGFkZGluZzp2YXIoLS1odC1tZW51LWl0ZW0tdmVydGljYWwtcGFkZGluZyw0cHgpdmFyKC0taHQtbWVudS1pdGVtLWhvcml6b250YWwtcGFkZGluZyw4cHgpO3do'@; put 'aXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JhY2tncm91bmQ6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvciwjZmZmKTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOnZhcigtLWh0LXRhYmxlLXRyYW5zaXRpb24pYmFja2dyb3VuZCBlYXNlLWluLW91dDtib3JkZXIt'@; put 'd2lkdGg6MDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQsLmhhbmRz'@; put 'b250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDowfS5oYW5kc29u'@; put 'dGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaW1tZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaW1t'@; put 'ZWR7Zm9udC1zdHlsZTpub3JtYWw7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0IWltcG9ydGFudH0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxl'@; put 'IHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRz'@; put 'b250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51'@; put 'IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpOmhvdmVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpub3QoLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRh'@; put 'YmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERp'@; put 'c2FibGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkKTpob3ZlciwuaGFuZHNv'@; put 'bnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIg'@; put 'dGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25k'@; put 'aXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpOmhvdmVye2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIHNy'@; put 'Z2IsdmFyKC0taHQtbWVudS1pdGVtLWhvdmVyLWNvbG9yKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpub3QoLmhhbmRzb250YWJs'@; put 'ZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3Vz'@; put 'dG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5o'@; put 'dEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkKS5jdXJyZW50Om5vdChbYXJpYS1leHBhbmRlZD10cnVlXSksLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51'@; put 'IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIs'@; put 'LmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlv'@; put 'bnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpLmN1cnJlbnQ6bm90KFthcmlhLWV4cGFuZGVkPXRydWVdKSwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxl'@; put 'IHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRz'@; put 'b250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51'@; put 'IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpLmN1cnJlbnQ6bm90KFthcmlhLWV4cGFuZGVkPXRydWVdKXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1odC1hY2NlbnQtY29sb3IpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRT'@; put 'dWJtZW51IC5odEl0ZW1XcmFwcGVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRlbVdyYXBwZXIsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRl'@; put 'bVdyYXBwZXJ7bWFyZ2luLWlubGluZS1lbmQ6Y2FsYygyKnZhcigtLWh0LWdhcC1zaXplLDRweCkgKyB2YXIoLS1odC1pY29uLXNpemUpKX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0U3VibWVudSAuaHRJdGVtV3JhcHBlcjphZnRlciwuaGFuZHNv'@; put 'bnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVye2NvbnRlbnQ6'@; put 'IiI7dG9wOjUwJTtyaWdodDpjYWxjKHZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcpICsgdmFyKC0taHQtZ2FwLXNpemUpKjIpO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZS5odERyb3Bk'@; put 'b3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTZXBhcmF0b3IsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcnti'@; put 'b3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpO2N1cnNvcjpkZWZhdWx0O2hlaWdodDowO3BhZGRpbmc6MH0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRh'@; put 'YmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVke2NvbG9yOnZhcigtLWh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6ZGVmYXVsdH0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25N'@; put 'ZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQ6aG92ZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQ6aG92ZXIsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2Fi'@; put 'bGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0taHQtZGlzYWJsZWQtY29sb3IpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRIaWRkZW4sLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRh'@; put 'YmxlIHRib2R5IHRyIHRkLmh0SGlkZGVuLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRIaWRkZW57ZGlzcGxheTpub25lfTppcyguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkOmhhcyguaHRJdGVt'@; put 'V3JhcHBlciAuc2VsZWN0ZWQpLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpoYXMoLmh0SXRlbVdyYXBwZXIgLnNlbGVjdGVkKSwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkOmhhcyguaHRJdGVtV3Jh'@; put 'cHBlciAuc2VsZWN0ZWQpKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtaXRlbS1hY3RpdmUtY29sb3IpdmFyKC0taHQtbWVudS1pdGVtLWFjdGl2ZS1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRv'@; put 'd25NZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1X'@; put 'cmFwcGVye21hcmdpbi1pbmxpbmU6Y2FsYygyKnZhcigtLWh0LWdhcC1zaXplLDRweCkpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXI6YmVmb3JlLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0'@; put 'ZCAuaHRJdGVtV3JhcHBlcjpiZWZvcmUsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcjpiZWZvcmV7dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b207bWFyZ2luLXJpZ2h0OjEycHh9LmhhbmRzb250YWJsZS5odERy'@; put 'b3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciBzcGFuLnNlbGVjdGVkLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciBzcGFuLnNlbGVjdGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9u'@; put 'c01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZHtmb250LXNpemU6MDtpbnNldDowfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlciwuaGFuZHNvbnRh'@; put 'YmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyIHNwYW4uc2VsZWN0ZWQ6YWZ0ZXJ7Y29u'@; put 'dGVudDoiIjt0b3A6NTAlO3JpZ2h0OmNhbGModmFyKC0taHQtbWVudS1pdGVtLWhvcml6b250YWwtcGFkZGluZykgKyB2YXIoLS1odC1nYXAtc2l6ZSkqMik7Y29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTp0cmFu'@; put 'c2xhdGVZKC01MCUpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIGRpdiBzcGFuLnNlbGVjdGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJz'@; put 'Q29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQtaW5saW5lLWVuZDowfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b24sLmhhbmRzb250YWJsZS5odENv'@; put 'bnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odFVJQnV0dG9uLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b257d2lkdGg6Y2FsYyg1MCUgLSB2YXIoLS1odC1nYXAtc2l6ZSkpfS5oYW5kc29udGFibGUuaHREcm9w'@; put 'ZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b24gaW5wdXQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odFVJQnV0dG9uIGlucHV0LC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQg'@; put 'Lmh0VUlCdXR0b24gaW5wdXR7d2lkdGg6MTAwJX0uaGFuZHNvbnRhYmxlIC5odFVJQ2xlYXJBbGwgYSwuaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0QWxsIGF7cGFkZGluZzp2YXIoLS1odC1nYXAtc2l6ZSk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRz'@; put 'b250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0IC5odF9tYXN0ZXIgLnd0SG9sZGVye2JhY2tncm91bmQ6MCAwO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7b3ZlcmZsb3cteTpzY3JvbGwhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdCAuaHRfbWFzdGVyIC53'@; put 'dEhvbGRlciAuaHRDb3Jle2JveC1zaGFkb3c6bm9uZX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0U3VibWVudSAuaHRJdGVtV3JhcHBlcjphZnRlcixbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJv'@; put 'ZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVyLFtkaXI9cnRsXS5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVye2xlZnQ6Y2FsYyg0KnZhcigtLWh0LWdhcC1zaXpl'@; put 'KSk7cmlnaHQ6YXV0bzt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKXJvdGF0ZSgxODBkZWcpfVtkaXI9cnRsXS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlcixbZGlyPXJ0bF0uaGFuZHNvbnRh'@; put 'YmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlcixbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyIHNwYW4uc2VsZWN0ZWQ6'@; put 'YWZ0ZXJ7bGVmdDpjYWxjKDQqdmFyKC0taHQtZ2FwLXNpemUpKTtyaWdodDphdXRvfS5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU6bm90KC5odEdob3N0VGFibGUpe3otaW5kZXg6MTA3MH0uaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGFibGUgdGQuaHRDdXN0b21NZW51'@; put 'UmVuZGVyZXJ7Y3Vyc29yOmF1dG99LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRhYmxlIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLmh0RmlsdGVyc01lbnVBY3Rpb25CYXJ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1odC1tZW51LWl0ZW0tdmVydGljYWwtcGFkZGluZyw0cHgpKjIpfS5oYW5k'@; put 'c29udGFibGUgLmh0RmlsdGVyc01lbnVMYWJlbHtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplLXNtYWxsKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodC1zbWFsbCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1o'@; put 'dC1nYXAtc2l6ZSwycHgpKjIpfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVMYWJlbDplbXB0eXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbntwYWRkaW5nLXRvcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqMykhaW1wb3J0YW50O3Bh'@; put 'ZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVDb25kaXRpb24gLmJvcmRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9u'@; put 'IC5odFVJSW5wdXR7bWFyZ2luLXRvcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqMil9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVle3BhZGRpbmctdG9wOmNhbGModmFyKC0taHQtZ2FwLXNpemUsMnB4KSozKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQg'@; put 'dmFyKC0taHQtYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudU9wZXJhdG9yc3twYWRkaW5nLXRvcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqMikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9t'@; put 'OjAhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3Rpb25Db250cm9sc3ttYXJnaW46MCBjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqLTEpO3BhZGRpbmctdG9wOmNhbGModmFyKC0taHQtZ2FwLXNpemUsMnB4KSoyKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0t'@; put 'aHQtZ2FwLXNpemUsMnB4KSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0SG90ey0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmc6Y2FsYyh2YXIoLS1odC1tZW51LWl0ZW0taG9yaXpvbnRhbC1wYWRkaW5nLDJweCkgKyB2YXIoLS1odC1nYXAtc2l6ZSwycHgp'@; put 'KjIpO3dpZHRoOmNhbGMoMTAwJSArIHZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcsMnB4KSoyICsgdmFyKC0taHQtZ2FwLXNpemUsMnB4KSo0KTttYXJnaW46MCBjYWxjKCh2YXIoLS1odC1tZW51LWl0ZW0taG9yaXpvbnRhbC1wYWRkaW5nLDJweCkgKyB2YXIoLS1odC1n'@; put 'YXAtc2l6ZSwycHgpKjIpKi0xKTtvdmVyZmxvdzppbml0aWFsIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3RIb3Q6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDtk'@; put 'aXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMXB4O2xlZnQ6MH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3RIb3QgLnd0SG9sZGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjA7b3ZlcmZsb3cteDpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRVSU11'@; put 'bHRpcGxlU2VsZWN0SG90IC53dEhvbGRlciAud3RTcHJlYWRlcntwYWRkaW5nOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpMH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3RIb3QgLnd0SG9sZGVyIHRke3BhZGRpbmc6NHB4IHZhcigtLWh0LWNlbGwtaG9yaXpvbnRhbC1wYWRk'@; put 'aW5nKTtoZWlnaHQ6YXV0byFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRVSUNsZWFyQWxsLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGx7bWFyZ2luLXJpZ2h0OnZhcigtLWh0LWdhcC1zaXplLDRweCk7bWFyZ2luLWJvdHRvbTp2YXIoLS1odC1nYXAtc2l6ZSw0cHgpO2Rpc3BsYXk6'@; put 'aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCBhLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGwgYXtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Y29sb3I6dmFyKC0taHQtbGluay1jb2xvcik7'@; put 'Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1idXR0b24tYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZSAuaHRVSUNsZWFyQWxsIGE6aG92ZXIsLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbCBhOmhvdmVye2NvbG9yOnZhcigtLWh0LWxpbmstaG92ZXItY29sb3IpfS5oYW5kc29udGFibGUg'@; put 'Lmh0VUlDbGVhckFsbCBhOmZvY3VzLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGwgYTpmb2N1c3tvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1odC1saW5rLWhvdmVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3QgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZs'@; put 'b3c6YXV0b30uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3QgLmh0X21hc3RlciAud3RIb2xkZXIgLnd0SGlkZXIsLmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0IC5odF9tYXN0ZXIgLnd0SG9sZGVyIC5odENvcmUsLmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2Vs'@; put 'ZWN0IC5odF9tYXN0ZXIgLnd0SG9sZGVyIHRyLC5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdCAuaHRfbWFzdGVyIC53dEhvbGRlciB0ZHtiYWNrZ3JvdW5kOjAgMH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGlu'@; put 'ZS1ibG9ja30uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9Le21hcmdpbi1pbmxpbmUtc3RhcnQ6MDttYXJnaW4taW5saW5lLWVuZDpjYWxjKDIqdmFyKC0taHQtZ2FwLXNpemUsMnB4KSl9LmhhbmRzb250YWJsZSAuaHRDb21tZW50Q2VsbHtwb3NpdGlvbjpyZWxhdGl2ZX0u'@; put 'aGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxsOmFmdGVye2NvbnRlbnQ6IiI7dG9wOjA7Ym9yZGVyLWlubGluZS1zdGFydDp2YXIoLS1odC1jb21tZW50cy1pbmRpY2F0b3Itc2l6ZSw0cHgpc29saWQgIzAwMDA7Ym9yZGVyLWlubGluZS1lbmQ6bm9uZTtib3JkZXItdG9wOnZhcigtLWh0LWNv'@; put 'bW1lbnRzLWluZGljYXRvci1zaXplLDRweClzb2xpZCB2YXIoLS1odC1jb21tZW50cy1pbmRpY2F0b3ItY29sb3IsIzFhNDJlOCk7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtpbnNldC1pbmxpbmUtc3RhcnQ6dW5zZXQ7aW5zZXQtaW5saW5lLWVuZDowfS5odENvbW1lbnRzQ29u'@; put 'dGFpbmVyIC5odENvbW1lbnRze3otaW5kZXg6MTA1OTtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGV9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhe2ZvbnQtZmFtaWx5OnZhcigtLWh0LWZvbnQtZmFtaWx5KSwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVt'@; put 'Rm9udCwiU2Vnb2UgVUkiLHNhbnMtc2VyaWY7Ym94LXNoYWRvdzp2YXIoLS1odC1tZW51LXNoYWRvdy14LDApdmFyKC0taHQtbWVudS1zaGFkb3cteSwwKXZhcigtLWh0LW1lbnUtc2hhZG93LWJsdXIsOHB4KWNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtc2hhZG93LWNvbG9yLCMw'@; put 'MDApdmFyKC0taHQtbWVudS1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7d2lkdGg6MjQwcHg7aGVpZ2h0Ojg4cHg7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0taHQtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWZvbnQt'@; put 'd2VpZ2h0KTtwYWRkaW5nOnZhcigtLWh0LWNvbW1lbnRzLXRleHRhcmVhLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtaG9yaXpvbnRhbC1wYWRkaW5nKTtib3JkZXI6dmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtYm9yZGVyLXdpZHRoLDFweClzb2xpZCB2'@; put 'YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1ib3JkZXItY29sb3IsdHJhbnNwYXJlbnQpO2JvcmRlci1pbmxpbmUtc3RhcnQ6dmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtYm9yZGVyLXdpZHRoLDFweClzb2xpZCB2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1ib3JkZXItY29sb3IsIzFh'@; put 'NDJlOCk7Y29sb3I6dmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9yLCNmZmYpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWFwcGVhcmFuY2U6'@; put 'bm9uZTttYXJnaW46MCAtMXB4O291dGxpbmU6MCFpbXBvcnRhbnR9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhOmZvY3Vze2JvcmRlcjp2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1mb2N1cy1ib3JkZXItd2lkdGgsMXB4KXNvbGlkIHZhcigtLWh0LWNvbW1lbnRz'@; put 'LXRleHRhcmVhLWZvY3VzLWJvcmRlci1jb2xvciwjMWE0MmU4KTtjb2xvcjp2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNvbW1lbnRzLXRleHRhcmVhLWZvY3VzLWJhY2tncm91bmQtY29sb3IsI2Zm'@; put 'Zil9Lmh0Qm9yZGVycyAud3RCb3JkZXIuaHQtYm9yZGVyLXN0eWxlLWRhc2hlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHZhcigtLWh0LWN1c3RvbS1ib3JkZXItY29sb3IpMCA1cHgsdHJhbnNwYXJlbnQgMCAxMHB4KX0u'@; put 'aHRCb3JkZXJzIC53dEJvcmRlci5odC1ib3JkZXItc3R5bGUtZGFzaGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHZhcigtLWh0LWN1c3RvbS1ib3JkZXItY29sb3IpMCA1cHgsdHJhbnNwYXJlbnQgMCAxMHB4KX0uaHRC'@; put 'b3JkZXJzIC53dEJvcmRlci5odC1ib3JkZXItc3R5bGUtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLHZhcigtLWh0LWN1c3RvbS1ib3JkZXItY29sb3IpY2FsYyh2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpLzIpLHRyYW5zcGFy'@; put 'ZW50IDApO2JhY2tncm91bmQtc2l6ZTpjYWxjKHZhcigtLWh0LWN1c3RvbS1ib3JkZXItc2l6ZSkqMil2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5odEJvcmRlcnMgLnd0Qm9yZGVyLmh0LWJvcmRlci1zdHlsZS1kb3R0ZWQtdmVydGlj'@; put 'YWx7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLHZhcigtLWh0LWN1c3RvbS1ib3JkZXItY29sb3IpY2FsYyh2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpLzIpLHRyYW5zcGFyZW50IDApO2JhY2tncm91bmQtc2l6ZTp2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNp'@; put 'emUpY2FsYyh2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpKjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC15fS5oYW5kc29udGFibGUgLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCl7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuY29sdW1uU29ydGlu'@; put 'Zzpub3QoLmluZGljYXRvckRpc2FibGVkKS5zb3J0QWN0aW9uLmFzY2VuZGluZywuaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5nOm5vdCguaW5kaWNhdG9yRGlzYWJsZWQpLnNvcnRBY3Rpb24uZGVzY2VuZGluZ3twYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1odC1pY29uLXNpemUs'@; put 'MTZweCkgKyAycHgpfS5oYW5kc29udGFibGUgLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCkuc29ydEFjdGlvbjpob3ZlcntjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZX0uaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5nOm5vdCguaW5kaWNhdG9yRGlz'@; put 'YWJsZWQpLnNvcnRBY3Rpb246YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplLDE2cHgpO3RleHQtYWxpZ246cmlnaHQ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjJweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uaGFu'@; put 'ZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uYXNjZW5kaW5nLC5oYW5kc29udGFibGUgLmh0UmlnaHQgLmNvbHVtblNvcnRpbmcuc29ydEFjdGlvbi5kZXNjZW5kaW5ne3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0taHQtaWNvbi1zaXplLDE2cHgp'@; put 'ICsgMnB4KTtwYWRkaW5nLWlubGluZS1lbmQ6MH0uaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb246YmVmb3JlLFtkaXI9cnRsXSAuaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb246YmVmb3Jle3RleHQtYWxpZ246bGVmdDtsZWZ0OjJw'@; put 'eDtyaWdodDphdXRvfVtkaXI9cnRsXSAuaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uYXNjZW5kaW5nLFtkaXI9cnRsXSAuaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uZGVzY2VuZGluZ3twYWRkaW5nLWlubGlu'@; put 'ZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLWh0LWljb24tc2l6ZSwxNnB4KSArIDJweCl9W2Rpcj1ydGxdIC5oYW5kc29udGFibGUgLmh0TGVmdCAuY29sdW1uU29ydGluZy5zb3J0QWN0aW9uLmFzY2VuZGluZyxbZGlyPXJ0bF0gLmhhbmRzb250YWJsZSAuaHRMZWZ0'@; put 'IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uZGVzY2VuZGluZ3twYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLWh0LWljb24tc2l6ZSwxNnB4KSArIDJweCk7cGFkZGluZy1pbmxpbmUtZW5kOjB9W2Rpcj1ydGxdIC5oYW5kc29udGFibGUgLmh0TGVmdCAuY29sdW1uU29ydGluZy5z'@; put 'b3J0QWN0aW9uOmJlZm9yZXt0ZXh0LWFsaWduOnJpZ2h0O2xlZnQ6YXV0bztyaWdodDoycHh9Lmh0R2hvc3RUYWJsZSAuaHRDb3JlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCk6YmVmb3Jle2NvbnRlbnQ6IioiO3BhZGRpbmctaW5saW5lLWVu'@; put 'ZDpjYWxjKHZhcigtLWh0LWljb24tc2l6ZSwxNnB4KSArIDJweCk7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YWZ0ZXJ7Y29udGVudDoiIjt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjhweDttYXJn'@; put 'aW4tdG9wOjRweDtmb250LXNpemU6OHB4O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nW2NsYXNzXj1zb3J0LV06YWZ0ZXIsLmhhbmRz'@; put 'b250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmdbY2xhc3MqPVxcIHNvcnQtXTphZnRlcntjb250ZW50OiIrIn0uaGFuZHNvbnRhYmxlIC5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTE6YWZ0ZXJ7Y29udGVudDoiMSJ9LmhhbmRzb250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNv'@; put 'cnRpbmcuc29ydC0yOmFmdGVye2NvbnRlbnQ6IjIifS5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtMzphZnRlcntjb250ZW50OiIzIn0uaGFuZHNvbnRhYmxlIC5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTQ6YWZ0ZXJ7Y29udGVudDoiNCJ9LmhhbmRz'@; put 'b250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC01OmFmdGVye2NvbnRlbnQ6IjUifS5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNjphZnRlcntjb250ZW50OiI2In0uaGFuZHNvbnRhYmxlIC5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0'@; put 'LTc6YWZ0ZXJ7Y29udGVudDoiNyJ9LmhhbmRzb250YWJsZSAuaHRSaWdodCAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YWZ0ZXIsW2Rpcj1ydGxdIC5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOmFmdGVye3RleHQtYWxpZ246bGVmdDtsZWZ0OjA7cmlnaHQ6YXV0b31b'@; put 'ZGlyPXJ0bF0gLmhhbmRzb250YWJsZSAuaHRMZWZ0IC5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcnt0ZXh0LWFsaWduOnJpZ2h0O2xlZnQ6YXV0bztyaWdodDowfS5odEdob3N0VGFibGUgdGggZGl2OmhhcyguY2hhbmdlVHlwZSkgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzpu'@; put 'b3QoLmluZGljYXRvckRpc2FibGVkKXtwYWRkaW5nLWlubGluZS1lbmQ6dmFyKC0taHQtZ2FwLXNpemUpfS5oYW5kc29udGFibGUgLmh0Um93SGVhZGVycyAuaHRfbWFzdGVyLmlubmVyQm9yZGVySW5saW5lU3RhcnR+Lmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIHRoOm50aC1j'@; put 'aGlsZCgyKSwuaGFuZHNvbnRhYmxlIC5odFJvd0hlYWRlcnMgLmh0X21hc3Rlci5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5odF9jbG9uZV9pbmxpbmVfc3RhcnQgdGQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItbGVmdDowfS5oYW5kc29udGFibGUgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRf'@; put 'Y29ybmVyIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JveC1zaGFkb3c6bm9uZX0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVye2N1cnNvcjpjb2wtcmVzaXplO29wYWNpdHk6MDt6LWluZGV4OjIxMDtiYWNrZ3JvdW5kOjAgMDt3aWR0aDoxMHB4O21hcmdpbjowO3Bvc2l0aW9u'@; put 'OmFic29sdXRlO3RvcDowfS5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXI6YWZ0ZXJ7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LXJlc2l6ZS1pbmRpY2F0b3ItY29sb3IpO2JvcmRlci1yYWRp'@; put 'dXM6MnB4O3dpZHRoOjJweDtoZWlnaHQ6Y2FsYygxMDAlIC0gMTJweCk7bWF4LWhlaWdodDoxNnB4O21hcmdpbi10b3A6LjVweDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDoxcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZSAu'@; put 'bWFudWFsQ29sdW1uUmVzaXplcjphZnRlcntsZWZ0OmF1dG87cmlnaHQ6MH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyOmhvdmVyLC5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXIuYWN0aXZle29wYWNpdHk6MX0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5S'@; put 'ZXNpemVyR3VpZGV7aW5zZXQtaW5saW5lLWVuZDp1bnNldDt3aWR0aDowO2JvcmRlci1pbmxpbmUtZW5kOjFweCBzb2xpZCB2YXIoLS1odC1hY2NlbnQtY29sb3IpO2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZTttYXJnaW4taW5saW5lLXN0YXJ0OjVweDttYXJnaW4taW5saW5lLWVuZDp1bnNl'@; put 'dDtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplckd1aWRlLmFjdGl2ZXt6LWluZGV4OjIwOTtkaXNwbGF5OmJsb2NrfS5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJ7ei1pbmRleDoyMTA7Y3Vyc29yOnJv'@; put 'dy1yZXNpemU7b3BhY2l0eTowO2JhY2tncm91bmQ6MCAwO2hlaWdodDoxMHB4O21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MH0uaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyOmFmdGVye2NvbnRlbnQ6'@; put 'IiI7YmFja2dyb3VuZDp2YXIoLS1odC1yZXNpemUtaW5kaWNhdG9yLWNvbG9yKTtib3JkZXItcmFkaXVzOjJweDt3aWR0aDpjYWxjKDEwMCUgLSAxMnB4KTttYXgtd2lkdGg6MTZweDtoZWlnaHQ6MnB4O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjFweDtsZWZ0OjUwJTt0'@; put 'cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpfS5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXI6YWZ0ZXJ7dG9wOmF1dG87Ym90dG9tOjB9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplcjpob3ZlciwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyLmFjdGl2ZXtvcGFjaXR5'@; put 'OjF9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplckd1aWRle2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWh0LWFjY2VudC1jb2xvcik7Ym9yZGVyLXRvcDpub25lO2hlaWdodDowO21hcmdpbi10b3A6NXB4O2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206'@; put 'MDtsZWZ0OjB9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplckd1aWRlLmFjdGl2ZXt6LWluZGV4OjIwOTtkaXNwbGF5OmJsb2NrfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdOm5vdChbY2xhc3MqPWZ1bGx5U2VsZWN0'@; put 'ZWRNZXJnZWRDZWxsXSk6YmVmb3Jle29wYWNpdHk6MH0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtbXVsdGlwbGVdOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRib2R5IHRk'@; put 'W3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtMF06YmVmb3Jle29wYWNpdHk6LjE0fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1m'@; put 'dWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0xXTpiZWZvcmV7b3BhY2l0eTouMjF9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTJdOmJlZm9yZXtvcGFjaXR5Oi4yOH0uaGFu'@; put 'ZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtM106YmVmb3Jle29wYWNpdHk6LjM1fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1o'@; put 'aWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC00XTpiZWZvcmV7b3BhY2l0eTouNDJ9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTVdOmJlZm9y'@; put 'ZXtvcGFjaXR5Oi40OX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtNl06YmVmb3Jle29wYWNpdHk6LjU2fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xh'@; put 'c3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC03XTpiZWZvcmV7b3BhY2l0eTouNjN9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUuYWZ0ZXItc2VsZWN0aW9uLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHQs'@; put 'LmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5hZnRlci1zZWxlY3Rpb24tLWNvbHVtbnMgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtjdXJzb3I6bW92ZTtjdXJzb3I6LW1vei1ncmFiO2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9LmhhbmRzb250YWJsZSAuaHRfX21h'@; put 'bnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zICosLmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHQsLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVt'@; put 'bnMgKiwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLm9uLW1vdmluZy0tY29sdW1ucyB0aGVhZCB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjotbW96LWdyYWJiaW5nO2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30uaGFuZHNvbnRh'@; put 'YmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgLm1hbnVhbENvbHVtblJlc2l6ZXIsLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgLm1hbnVhbENvbHVtblJlc2l6ZXJ7ZGlzcGxheTpub25lfS5oYW5kc29udGFi'@; put 'bGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodCwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS0t'@; put 'YmFja2xpZ2h0e2hlaWdodDoxMDAlO2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZXt6LWluZGV4OjIwNTtiYWNrZ3Jv'@; put 'dW5kOnZhcigtLWh0LW1vdmUtaW5kaWNhdG9yLWNvbG9yLCMxYTQyZTgpO3dpZHRoOjFweDttYXJnaW4taW5saW5lOi0uNXB4IDA7dG9wOjB9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodCwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1i'@; put 'YWNrbGlnaHR7ei1pbmRleDoyMDU7cG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1vdmUtYmFja2xpZ2h0LWNvbG9yKXZhcigtLWh0LW1vdmUtYmFja2xpZ2h0LW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpO2Rpc3BsYXk6bm9uZX0u'@; put 'aGFuZHNvbnRhYmxlIC5vbi1tb3ZpbmctLWNvbHVtbnMuc2hvdy11aSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZSwuaGFuZHNvbnRhYmxlIC5vbi1tb3ZpbmctLWNvbHVtbnMgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHQsLmhhbmRzb250YWJsZS5vbi1tb3Zpbmct'@; put 'LWNvbHVtbnMuc2hvdy11aSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZSwuaGFuZHNvbnRhYmxlLm9uLW1vdmluZy0tY29sdW1ucyAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodHtkaXNwbGF5OmJsb2NrfS5oYW5kc29udGFibGUgLnd0SGlkZXJ7cG9zaXRpb246cmVs'@; put 'YXRpdmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUuYWZ0ZXItc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmh0X19oaWdobGlnaHQsLmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS5hZnRlci1zZWxlY3Rpb24tLXJvd3MgdGJvZHkgdGguaHRfX2hpZ2hsaWdodHtjdXJz'@; put 'b3I6bW92ZTtjdXJzb3I6LW1vei1ncmFiO2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzICosLmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIHRib2R5IHRo'@; put 'Lmh0X19oaWdobGlnaHQsLmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MgKiwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLm9uLW1vdmluZy0tcm93cyB0Ym9keSB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjotbW96LWdyYWJi'@; put 'aW5nO2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MgLm1hbnVhbFJvd1Jlc2l6ZXIsLmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MgLm1hbnVh'@; put 'bFJvd1Jlc2l6ZXJ7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodCwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250'@; put 'YWJsZS5odF9fbWFudWFsUm93TW92ZS0tYmFja2xpZ2h0e3dpZHRoOjEwMCU7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5le2Jv'@; put 'cmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWh0LW1vdmUtaW5kaWNhdG9yLWNvbG9yKTt6LWluZGV4OjIwNTtsZWZ0OjB9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodCwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7ei1pbmRleDoy'@; put 'MDU7cG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1vdmUtYmFja2xpZ2h0LWNvbG9yKXZhcigtLWh0LW1vdmUtYmFja2xpZ2h0LW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpO2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlIC5vbi1t'@; put 'b3ZpbmctLXJvd3Muc2hvdy11aSAuaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZSwuaGFuZHNvbnRhYmxlIC5vbi1tb3ZpbmctLXJvd3MgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHQsLmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLXJvd3Muc2hvdy11aSAuaHRfX21hbnVhbFJvd01v'@; put 'dmUtLWd1aWRlbGluZSwuaGFuZHNvbnRhYmxlLm9uLW1vdmluZy0tcm93cyAuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodHtkaXNwbGF5OmJsb2NrfS5odC1kaWFsb2d7c2Nyb2xsYmFyLXdpZHRoOmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xv'@; put 'cil2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1odC1sZXR0ZXItc3BhY2luZyk7ei1pbmRleDoxMDYwO29wYWNpdHk6MDtib3Jk'@; put 'ZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtYm9yZGVyLWNvbG9yKTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3cteTphdXRvO2JveC1zaXpp'@; put 'bmc6Ym9yZGVyLWJveCFpbXBvcnRhbnR9Lmh0LWRpYWxvZ1tkaXI9cnRsXXtsZWZ0OmF1dG87cmlnaHQ6MH0uaHQtZGlhbG9nOmZvY3Vze2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtYWNjZW50LWNvbG9yKTtvdXRsaW5lOm5vbmV9Lmh0LWRpYWxvZzpoYXMoLmh0Rm9jdXNDYXRjaGVyOmZv'@; put 'Y3VzKXtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWh0LWFjY2VudC1jb2xvcik7b3V0bGluZTpub25lfS5odC1kaWFsb2cgKntib3gtc2l6aW5nOmJvcmRlci1ib3ghaW1wb3J0YW50fS5odC1kaWFsb2ctLWJhY2tncm91bmQtc29saWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1kaWFsb2ct'@; put 'c29saWQtYmFja2dyb3VuZC1jb2xvcil9Lmh0LWRpYWxvZy0tYmFja2dyb3VuZC1zZW1pLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtZGlhbG9nLXNlbWktdHJhbnNwYXJlbnQtYmFja2dyb3VuZC1jb2xvcil2YXIoLS1odC1kaWFsb2ct'@; put 'c2VtaS10cmFuc3BhcmVudC1iYWNrZ3JvdW5kLW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpfS5odC1kaWFsb2ctLWFuaW1hdGlvbnt0cmFuc2l0aW9uOm9wYWNpdHkgdmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbillYXNlLWluLW91dH0uaHQtZGlhbG9nLS1zaG93e29wYWNpdHk6MX0uaHQt'@; put 'ZGlhbG9nX19jb250ZW50LXdyYXBwZXJ7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjEwMCU7cGFkZGluZzpjYWxjKHZhcigtLWh0LWdhcC1zaXplKSo0KTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVy'@; put 'O2Rpc3BsYXk6ZmxleH0uaHQtZGlhbG9nX19jb250ZW50e3BhZGRpbmc6dmFyKC0taHQtZGlhbG9nLWNvbnRlbnQtcGFkZGluZy1ob3Jpem9udGFsKXZhcigtLWh0LWRpYWxvZy1jb250ZW50LXBhZGRpbmctdmVydGljYWwpO21heC13aWR0aDo0ODBweDtjb2xvcjp2YXIoLS1odC1mb3JlZ3Jv'@; put 'dW5kLWNvbG9yKTtwb3NpdGlvbjpyZWxhdGl2ZX0uaHQtZGlhbG9nX19jb250ZW50LS1iYWNrZ3JvdW5ke2JveC1zaGFkb3c6dmFyKC0taHQtc2hhZG93LXgsMCl2YXIoLS1odC1zaGFkb3cteSwwKXZhcigtLWh0LXNoYWRvdy1ibHVyLDhweCljb2xvci1taXgoaW4gc3JnYix2YXIoLS1odC1z'@; put 'aGFkb3ctY29sb3IsIzAwMCl2YXIoLS1odC1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1kaWFsb2ctY29udGVudC1ib3JkZXItcmFkaXVzKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWRpYWxvZy1jb250ZW50LWJhY2tncm91bmQt'@; put 'Y29sb3IpfS5odC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fY29udGVudC13cmFwcGVye3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMil9Lmh0LWRpYWxvZy0tY29uZmlybSAuaHQtZGlhbG9nX19jb250ZW50LXdyYXBwZXItaW5uZXJ7bWF4'@; put 'LXdpZHRoOjQ4MHB4O3BhZGRpbmc6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMik7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5o'@; put 'dC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fY29udGVudC13cmFwcGVyLWlubmVyLS1iYWNrZ3JvdW5ke2JveC1zaGFkb3c6dmFyKC0taHQtc2hhZG93LXgsMCl2YXIoLS1odC1zaGFkb3cteSwwKXZhcigtLWh0LXNoYWRvdy1ibHVyLDhweCljb2xvci1taXgoaW4gc3JnYix2YXIoLS1o'@; put 'dC1zaGFkb3ctY29sb3IsIzAwMCl2YXIoLS1odC1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1kaWFsb2ctY29udGVudC1ib3JkZXItcmFkaXVzKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWRpYWxvZy1jb250ZW50LWJhY2tncm91'@; put 'bmQtY29sb3IpfS5odC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fY29udGVudC13cmFwcGVyLWlubmVyOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcik7b3V0bGluZTpub25lfS5odC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fY29udGVu'@; put 'dHtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6dmFyKC0taHQtZ2FwLXNpemUpO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtkaXNwbGF5OmZsZXh9Lmh0LWRpYWxvZy0tY29uZmlybSAuaHQtZGlhbG9nX19jb250ZW50OmhhcyguaHQtZGlhbG9nX19idXR0b25z'@; put 'KXtnYXA6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMil9Lmh0LWRpYWxvZy0tY29uZmlybSAuaHQtZGlhbG9nX190aXRsZXtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0taHQtbGluZS1oZWln'@; put 'aHQpO21hcmdpbjowfS5odC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fZGVzY3JpcHRpb257Y29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1zZWNvbmRhcnktY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUtc21hbGwpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVp'@; put 'Z2h0LXNtYWxsKTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bWFyZ2luOjB9Lmh0LWRpYWxvZy0tY29uZmlybSAuaHQtZGlhbG9nX19idXR0b25ze2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO2ZsZXgtZmxvdzp3cmFwO2Rp'@; put 'c3BsYXk6ZmxleH0uaHQtbm90aWZpY2F0aW9ue3otaW5kZXg6MTA3MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7b3ZlcmZsb3c6dmlzaWJsZX0uaHQtbm90aWZpY2F0aW9uX19zdGFja3tvdmVyc2Nyb2xsLWJlaGF2aW9yOmNvbnRhaW47cG9pbnRlci1l'@; put 'dmVudHM6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtzY3JvbGxiYXItd2lkdGg6YXV0bztzY3JvbGxiYXItY29sb3I6dmFyKC0taHQtc2Nyb2xsYmFyLXRodW1iLWNvbG9yKXZhcigtLWh0LXNjcm9sbGJhci10cmFjay1jb2xvcik7ZmxleC1kaXJlY3Rpb246Y29sdW1u'@; put 'O2dhcDoxMHB4O21heC13aWR0aDptaW4oNDIwcHgsMTAwJSAtIDQwcHgpO21pbi1oZWlnaHQ6MDtwYWRkaW5nOjEwcHg7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbiBhdXRvfS5odC1ub3RpZmljYXRpb25fX3N0YWNrLS10b3Atc3RhcnR7dG9wOjEwcHg7'@; put 'YWxpZ24taXRlbXM6ZmxleC1zdGFydDttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDQwcHgpO2luc2V0LWlubGluZS1zdGFydDoxMHB4fS5odC1ub3RpZmljYXRpb25fX3N0YWNrLS10b3AtZW5ke3RvcDoxMHB4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO21heC1oZWlnaHQ6Y2FsYygxMDAlIC0gNDBw'@; put 'eCk7aW5zZXQtaW5saW5lLWVuZDoxMHB4fS5odC1ub3RpZmljYXRpb25fX3N0YWNrLS1ib3R0b20tc3RhcnR7Ym90dG9tOjEwcHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDQwcHgpO2luc2V0LWlubGluZS1zdGFydDoxMHB4fS5odC1ub3RpZmljYXRp'@; put 'b25fX3N0YWNrLS1ib3R0b20tZW5ke2JvdHRvbToxMHB4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO21heC1oZWlnaHQ6Y2FsYygxMDAlIC0gNDBweCk7aW5zZXQtaW5saW5lLWVuZDoxMHB4fS5odC1ub3RpZmljYXRpb25fX3RvYXN0e2JveC1zaGFkb3c6dmFyKC0taHQtc2hhZG93LXgsMCl2YXIo'@; put 'LS1odC1zaGFkb3cteSwwKXZhcigtLWh0LXNoYWRvdy1ibHVyLDhweCljb2xvci1taXgoaW4gc3JnYix2YXIoLS1odC1zaGFkb3ctY29sb3IsIzAwMCl2YXIoLS1odC1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7cG9pbnRlci1ldmVudHM6YXV0bzttYXgtd2lkdGg6MTAwJTtj'@; put 'b2xvcjp2YXIoLS1odC1ub3RpZmljYXRpb24tZm9yZWdyb3VuZC1jb2xvcix2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1ub3RpZmljYXRpb24tYmFja2dyb3VuZC1jb2xvcix2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKSk7Ym9yZGVyOjFw'@; put 'eCBzb2xpZCB2YXIoLS1odC1ub3RpZmljYXRpb24tYm9yZGVyLWNvbG9yLHZhcigtLWh0LWJvcmRlci1jb2xvcikpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyw0cHgpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUt'@; put 'aGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1odC1sZXR0ZXItc3BhY2luZyk7b3V0bGluZTpub25lO2ZsZXgtc2hyaW5rOjA7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfS5odC1ub3RpZmljYXRpb25fX3RvYXN0OmZvY3VzLXZpc2libGV7Ym94LXNoYWRvdzowIDAgMCAxcHgg'@; put 'dmFyKC0taHQtYWNjZW50LWNvbG9yKX0uaHQtbm90aWZpY2F0aW9uX190b2FzdC0tYW5pbWF0ZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IHZhcigtLWh0LXRhYmxlLXRyYW5zaXRpb24sLjE1cyllYXNlLW91dCx0cmFuc2Zvcm0gdmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbiwuMTVz'@; put 'KWVhc2Utb3V0fS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS1hbmltYXRlLmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLXN0YWNrLXRvcDpub3QoLmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLXZpc2libGUpe3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02cHgpfS5odC1ub3RpZmljYXRpb25fX3RvYXN0'@; put 'LS1hbmltYXRlLmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLXN0YWNrLWJvdHRvbTpub3QoLmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLXZpc2libGUpe3RyYW5zZm9ybTp0cmFuc2xhdGVZKDZweCl9Lmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLXZpc2libGV7b3BhY2l0eToxO3RyYW5zZm9ybTp0'@; put 'cmFuc2xhdGVZKDApfS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS1pbmZvIC5odC1ub3RpZmljYXRpb25fX2FjY2VudHtkaXNwbGF5Om5vbmV9Lmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLXN1Y2Nlc3MgLmh0LW5vdGlmaWNhdGlvbl9fYWNjZW50e2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQt'@; put 'bm90aWZpY2F0aW9uLXN1Y2Nlc3MtYWNjZW50LCMzN2JjNmMpfS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS13YXJuaW5nIC5odC1ub3RpZmljYXRpb25fX2FjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LW5vdGlmaWNhdGlvbi13YXJuaW5nLWFjY2VudCwjZmJlOTUyKX0uaHQtbm90'@; put 'aWZpY2F0aW9uX190b2FzdC0tZXJyb3IgLmh0LW5vdGlmaWNhdGlvbl9fYWNjZW50e2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtbm90aWZpY2F0aW9uLWVycm9yLWFjY2VudCwjZmE0ZDMyKX0uaHQtbm90aWZpY2F0aW9uX190b2FzdC1pbm5lcnt3aWR0aDoxMDAlO21pbi13aWR0aDowO2Rp'@; put 'cmVjdGlvbjppbmhlcml0O2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpzdHJldGNoO2dhcDowO3BhZGRpbmc6MTBweDtkaXNwbGF5OmZsZXh9Lmh0LW5vdGlmaWNhdGlvbl9fYWNjZW50e2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVzOjRweDtmbGV4OjAgMCA0cHg7'@; put 'YWxpZ24tc2VsZjpzdHJldGNoO21hcmdpbi1pbmxpbmUtZW5kOjEwcHh9Lmh0LW5vdGlmaWNhdGlvbl9fYm9keXtmbGV4OmF1dG87bWluLXdpZHRoOjB9Lmh0LW5vdGlmaWNhdGlvbl9fdGl0bGV7bWFyZ2luOjAgMCB2YXIoLS1odC1nYXAtc2l6ZSk7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQt'@; put 'c2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQsNjAwKX0uaHQtbm90aWZpY2F0aW9uX19tZXNzYWdle2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUtc21hbGwpO3dvcmQtYnJlYWs6YnJlYWstd29yZDttYXJnaW46MH0uaHQtbm90aWZpY2F0aW9uX19hY3Rpb25ze2dh'@; put 'cDp2YXIoLS1odC1nYXAtc2l6ZSk7bWFyZ2luLXRvcDp2YXIoLS1odC1nYXAtc2l6ZSk7ZmxleC13cmFwOndyYXA7ZGlzcGxheTpmbGV4fS5odC1ub3RpZmljYXRpb25fX2Nsb3Nle2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDp2YXIoLS1odC1pY29uLWJ1dHRvbi1oaXQtYXJlYS1zaXpl'@; put 'KTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1idXR0b24taGl0LWFyZWEtc2l6ZSk7Y29sb3I6dmFyKC0taHQtaWNvbi1idXR0b24taWNvbi1jb2xvcixpbmhlcml0KTtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWh0LWljb24tYnV0dG9uLWJvcmRlci1yYWRpdXMsdmFyKC0taHQt'@; put 'Ym9yZGVyLXJhZGl1cyw0cHgpKTtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6bm9uZTtmbGV4Om5vbmU7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O21hcmdpbi1pbmxpbmUtc3RhcnQ6NHB4O3BhZGRpbmc6MDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzp2aXNpYmxlfS5odC1ub3RpZmljYXRpb25f'@; put 'X2Nsb3NlOmJlZm9yZXtjb250ZW50OiIiO3RvcDo1MCU7bWFyZ2luLXRvcDpjYWxjKC0uNSp2YXIoLS1odC1pY29uLXNpemUpKTttYXJnaW4taW5saW5lLXN0YXJ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQtaW5s'@; put 'aW5lLXN0YXJ0OjUwJX0uaHQtbm90aWZpY2F0aW9uX19jbG9zZTpob3Zlcntjb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1ob3Zlci1pY29uLWNvbG9yLGluaGVyaXQpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaWNvbi1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcixjb2xvci1t'@; put 'aXgoaW4gc3JnYix2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTglLHRyYW5zcGFyZW50KSl9Lmh0LW5vdGlmaWNhdGlvbl9fY2xvc2U6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1odC1hY2NlbnQtY29sb3IpO291dGxpbmUtb2Zmc2V0OjJweH0uaGFuZHNvbnRhYmxl'@; put 'Lmh0LXBhZ2luYXRpb257d2lkdGg6MTAwJTtjb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJhci1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWh0LXBhZ2luYXRpb24tYmFyLWJhY2tncm91bmQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVp'@; put 'Z2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3cteDphdXRvfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbjpub3QoLmh0LXNsb3QtZWxlbWVudCl7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRp'@; put 'dXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdpbmF0aW9uX19pbm5lcntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjQpO3BhZGRpbmct'@; put 'aW5saW5lOnZhcigtLWh0LXBhZ2luYXRpb24tYmFyLWhvcml6b250YWwtcGFkZGluZyk7cGFkZGluZy1ibG9jazp2YXIoLS1odC1wYWdpbmF0aW9uLWJhci12ZXJ0aWNhbC1wYWRkaW5nKTtmbGV4LXdyYXA6d3JhcDttaW4td2lkdGg6MjMwcHg7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGUu'@; put 'aHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb257YWxpZ24taXRlbXM6Y2VudGVyO2dhcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplKSoyKTtkaXNwbGF5OmZsZXh9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdlLXNpemUtc2VjdGlvbl9fbGFiZWx7d2hpdGUtc3Bh'@; put 'Y2U6bm93cmFwfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVye2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9u'@; put 'IC5odC1wYWdlLXNpemUtc2VjdGlvbl9fc2VsZWN0LXdyYXBwZXIgc2VsZWN0e3BhZGRpbmctaW5saW5lLXN0YXJ0OnZhcigtLWh0LWdhcC1zaXplKTtwYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkgKyB2YXIoLS1odC1pY29uLXNpemUpKTtwYWRkaW5nLXRvcDp2'@; put 'YXIoLS1odC1nYXAtc2l6ZSk7cGFkZGluZy1ib3R0b206dmFyKC0taHQtZ2FwLXNpemUpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7Y29sb3I6dmFyKC0taHQtaW5wdXQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1'@; put 'dC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWh0LWlucHV0LWJvcmRlci1jb2xvcik7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1odC1saW5lLWhlaWdodCkgLSA0cHgpOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZTppbmhlcml0O2N1cnNvcjpwb2lu'@; put 'dGVyfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyIHNlbGVjdDpkaXNhYmxlZHtvcGFjaXR5Oi40O2N1cnNvcjpkZWZhdWx0O2NvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWZvcmVncm91bmQtY29sb3IpO2JhY2tn'@; put 'cm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdlLXNpemUtc2VjdGlvbl9fc2VsZWN0LXdy'@; put 'YXBwZXIgc2VsZWN0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtaG92ZXItYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhv'@; put 'dmVyLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdlLXNpemUtc2VjdGlvbl9fc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmZvY3Vze2NvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0t'@; put 'aHQtaW5wdXQtZm9jdXMtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWJvcmRlci1jb2xvcik7b3V0bGluZTpub25lfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyOmFmdGVy'@; put 'e2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTtwb2ludGVyLWV2ZW50czpub25lO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQtYmxvY2stZW5kOjUwJTtpbnNldC1pbmxpbmUtZW5kOnZhcigtLWh0LWdhcC1zaXplKTt0'@; put 'cmFuc2Zvcm06dHJhbnNsYXRlWSg1MCUpfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1jb3VudGVyLXNlY3Rpb257bWFyZ2luLWlubGluZS1lbmQ6YXV0b30uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9ue2FsaWduLWl0'@; put 'ZW1zOmNlbnRlcjtnYXA6MXB4O2Rpc3BsYXk6ZmxleH0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b257Zm9udC1zaXplOmluaGVyaXQ7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1ib3JkZXIt'@; put 'Y29sb3IpO2NvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1idXR0b24tYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1pY29uLWJ1dHRvbi1sYXJnZS1ib3Jk'@; put 'ZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWh0LWljb24tYnV0dG9uLWxhcmdlLXBhZGRpbmcpO2N1cnNvcjpwb2ludGVyfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2Nr'@; put 'fS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbi0tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQ7cG9pbnRlci1ldmVudHM6bm9uZTtjb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNv'@; put 'bG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlv'@; put 'biAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtib3JkZXItY29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1idXR0b24taG92ZXItYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1ob3Zlci1mb3JlZ3Jv'@; put 'dW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbjpmb2N1c3tib3JkZXItY29sb3I6dmFy'@; put 'KC0taHQtcGFnaW5hdGlvbi1idXR0b24tZm9jdXMtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWZvY3VzLWJhY2tncm91bmQtY29s'@; put 'b3IpO291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19sYWJlbHt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpjZW50ZXI7bWluLXdpZHRoOjEwMHB4fS5odC1sb2FkaW5nX19pY29uLXN2Z3t3aWR0aDp2YXIo'@; put 'LS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpO2NvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7dHJhbnNmb3JtLW9yaWdpbjo1MCU7YW5pbWF0aW9uOjFzIGxpbmVhciBpbmZpbml0ZSBodC1sb2FkaW5nLXNwaW47ZGlzcGxheTpibG9ja30uaHQtbG9hZGluZ19f'@; put 'Y29udGVudHthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO2Rpc3BsYXk6ZmxleH0uaHQtbG9hZGluZ19fdGl0bGV7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0'@; put 'OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTttYXJnaW46MH0uaHQtbG9hZGluZ19fZGVzY3JpcHRpb257Y29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1zZWNvbmRhcnktY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUtc21hbGwpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVp'@; put 'Z2h0LXNtYWxsKTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bWFyZ2luOjB9QGtleWZyYW1lcyBodC1sb2FkaW5nLXNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0uaHQtZW1wdHktZGF0YS1zdGF0ZXtzY3JvbGxiYXItd2lkdGg6YXV0bztzY3JvbGxiYXItY29s'@; put 'b3I6dmFyKC0taHQtc2Nyb2xsYmFyLXRodW1iLWNvbG9yKXZhcigtLWh0LXNjcm9sbGJhci10cmFjay1jb2xvcik7ei1pbmRleDo5OTk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyk7Ym94LXNpemlu'@; put 'Zzpib3JkZXItYm94O2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7d2lkdGg6MTAwJTtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO292ZXJmbG93LXk6YXV0b30uaHQtZW1wdHktZGF0YS1zdGF0ZSAqe2JveC1zaXppbmc6Ym9yZGVyLWJv'@; put 'eCFpbXBvcnRhbnR9Lmh0LWVtcHR5LWRhdGEtc3RhdGVfX2NvbnRlbnQtd3JhcHBlcnt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MTAwJTtwYWRkaW5nOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1'@; put 'cyk7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5odC1lbXB0eS1kYXRhLXN0YXRlX19jb250ZW50LXdyYXBwZXItaW5uZXJ7bWF4LXdpZHRoOjQ4MHB4O3BhZGRpbmc6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMik7Ym9yZGVyLXJhZGl1'@; put 'czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5odC1lbXB0eS1kYXRhLXN0YXRlX19jb250ZW50LXdyYXBwZXItaW5uZXI6Zm9jdXN7Ym94LXNoYWRvdzow'@; put 'IDAgMCAxcHggdmFyKC0taHQtYWNjZW50LWNvbG9yKTtvdXRsaW5lOm5vbmV9Lmh0LWVtcHR5LWRhdGEtc3RhdGVfX2NvbnRlbnR7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOnZhcigtLWh0LWdhcC1zaXplKTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZGlz'@; put 'cGxheTpmbGV4fS5odC1lbXB0eS1kYXRhLXN0YXRlX190aXRsZXtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0taHQtbGluZS1oZWlnaHQpO21hcmdpbjowfS5odC1lbXB0eS1kYXRhLXN0YXRl'@; put 'X19kZXNjcmlwdGlvbntjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLXNlY29uZGFyeS1jb2xvcik7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZS1zbWFsbCk7bGluZS1oZWlnaHQ6dmFyKC0taHQtbGluZS1oZWlnaHQtc21hbGwpO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWZvbnQtd2VpZ2h0'@; put 'KTttYXJnaW46MH0uaHQtZW1wdHktZGF0YS1zdGF0ZV9fYnV0dG9uc3tqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplKSoyKTtmbGV4LWZsb3c6d3JhcDtkaXNwbGF5OmZsZXh9Lmh0LWVtcHR5LWRhdGEtc3RhdGVfX2J1dHRvbnMtLWhhcy1idXR0b25z'@; put 'e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMil9Lmh0LWVtcHR5LWRhdGEtc3RhdGVfX3NwaW5uZXJ7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDttYXJnaW4tYm90dG9tOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO2JvcmRlcjoycHggc29saWQgdmFyKC0taHQtYm9yZGVy'@; put 'LWNvbG9yKTtib3JkZXItdG9wLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7Ym9yZGVyLXJhZGl1czo1MCU7ZmxleC1zaHJpbms6MDthbmltYXRpb246Ljc1cyBsaW5lYXIgaW5maW5pdGUgaHQtZW1wdHktZGF0YS1zdGF0ZS1zcGlufUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlv'@; put 'bjpyZWR1Y2Upey5odC1lbXB0eS1kYXRhLXN0YXRlX19zcGlubmVye2JvcmRlci10b3AtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTthbmltYXRpb246bm9uZX19Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWxvYWRpbmcgLmh0LWVtcHR5LWRhdGEtc3RhdGVfX2NvbnRlbnR7Z2FwOmNhbGMo'@; put 'dmFyKC0taHQtZ2FwLXNpemUpKi41KX0uaHQtZW1wdHktZGF0YS1zdGF0ZS0tZGlzYWJsZS10b3AtYm9yZGVye2JvcmRlci10b3Atd2lkdGg6MH0uaHQtZW1wdHktZGF0YS1zdGF0ZS0tZGlzYWJsZS10b3AtYm9yZGVyOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmco'@; put 'YmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmh0'@; put 'LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtdG9wLWJvcmRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpu'@; put 'KSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtaW5saW5lLWJv'@; put 'cmRlcntib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtaW5saW5lLWJvcmRlcjpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSks'@; put 'OmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVz'@; put 'OjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtaW5saW5lLWJvcmRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSks'@; put 'OmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5odC1lbXB0eS1kYXRhLXN0YXRlLS1kaXNh'@; put 'YmxlLWJvdHRvbS1ib3JkZXJ7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5odC1lbXB0eS1kYXRhLXN0YXRlLS1kaXNhYmxlLWJvdHRvbS1ib3JkZXI6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxh'@; put 'bmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaHQtZW1wdHktZGF0YS1zdGF0ZS0tZGlzYWJsZS1ib3R0b20tYm9yZGVy'@; put 'OmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxh'@; put 'bmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odC1lbXB0eS1kYXRh'@; put 'LXN0YXRlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmco'@; put 'cHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHQtZW1w'@; put 'dHktZGF0YS1zdGF0ZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiks'@; put 'OmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9QGtleWZyYW1lcyBodC1lbXB0eS1kYXRhLXN0YXRlLXNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgz'@; put 'NjBkZWcpfX0nLEJoKHRoaXMsY18pLmhlYWQuYXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24gWkR0KCl7Y29uc3Qgbj10aGlzLmdldENTU1ZhcmlhYmxlVmFsdWUoImxpbmUtaGVpZ2h0IiksZT10aGlzLmdldENTU1ZhcmlhYmxlVmFsdWUoImNlbGwtdmVydGljYWwtcGFkZGluZyIpLHQ9TWF0aC5y'@; put 'b3VuZChOdW1iZXIucGFyc2VGbG9hdCh0aGlzLmdldFN0eWxlRm9yVEQoImJvcmRlci1ib3R0b20td2lkdGgiKT8/IiIpKTtyZXR1cm4gbnVsbD09PW58fG51bGw9PT1lfHxpc05hTih0KT9udWxsOm4rMiplK3R9ZnVuY3Rpb24gekllKCl7TTQodGhpcyxhWixnZXRDb21wdXRlZFN0eWxlKEJo'@; put 'KHRoaXMsb1opKSk7Y29uc3Qgbj11Nih0aGlzLGpJZSxHRHQpLmNhbGwodGhpcyxbImJveC1zaXppbmciLCJib3JkZXItYm90dG9tLXdpZHRoIl0pO0JoKHRoaXMseVQpLnRkPXsuLi5CaCh0aGlzLHlUKS50ZCwiYm94LXNpemluZyI6blsiYm94LXNpemluZyJdLCJib3JkZXItYm90dG9tLXdp'@; put 'ZHRoIjpuWyJib3JkZXItYm90dG9tLXdpZHRoIl19fWZ1bmN0aW9uIEdEdChuKXtjb25zdCBlPUJoKHRoaXMsY18pLHQ9QmgodGhpcyxvWikscj1lLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksaT1lLmNyZWF0ZUVsZW1lbnQoInRib2R5Iiksbz1lLmNyZWF0ZUVsZW1lbnQoInRyIiksYT1lLmNy'@; put 'ZWF0ZUVsZW1lbnQoInRyIiksbD1lLmNyZWF0ZUVsZW1lbnQoInRkIik7YS5hcHBlbmRDaGlsZChsKSxpLmFwcGVuZENoaWxkKG8pLGkuYXBwZW5kQ2hpbGQoYSksci5hcHBlbmRDaGlsZChpKSx0LmFwcGVuZENoaWxkKHIpO2NvbnN0IHU9Z2V0Q29tcHV0ZWRTdHlsZShsKSxnPXt9O3JldHVy'@; put 'biBuLmZvckVhY2goRT0+e2dbRV09dS5nZXRQcm9wZXJ0eVZhbHVlKEUpfSksdC5yZW1vdmVDaGlsZChyKSxnfWZ1bmN0aW9uICREdChuKXtjb25zdCBlPU1hdGguY2VpbChOdW1iZXIucGFyc2VGbG9hdCh1Nih0aGlzLHlkZSxXSWUpLmNhbGwodGhpcyxuKT8/IiIpKTtyZXR1cm4gTnVtYmVy'@; put 'LmlzTmFOKGUpP251bGw6ZX1mdW5jdGlvbiBXSWUobil7Y29uc3QgZT1CaCh0aGlzLGFaKT8uZ2V0UHJvcGVydHlWYWx1ZShuKT8/bnVsbDtyZXR1cm4iIj09PWU/bnVsbDplfWZ1bmN0aW9uIFlJZSgpe000KHRoaXMseVQse30pLE00KHRoaXMsX1Qse30pfWxldCBHcD1udWxsLHNaPTA7Y29u'@; put 'c3QgUUR0PXtUT1A6InRvcCIsQk9UVE9NOiJib3R0b20ifSxaSWU9Imh0LXNsb3QtZWxlbWVudCIsR0llPSJsaWNlbnNlTm90aWZpY2F0aW9uIixKRHQ9YHBsdWdpbjoke0dJZX1gLCRJZT0iaG90LWRpc3BsYXktbGljZW5zZS1pbmZvIjtmdW5jdGlvbiBxSWUobil7cmV0dXJuIG4ucm9vdFNs'@; put 'b3RCb3R0b21FbGVtZW50Py5xdWVyeVNlbGVjdG9yKGAuJHskSWV9YCk/P251bGx9Y29uc3QgQ3U9KG4sZSk9PmB3aWR0aDogdmFyKC0taHQtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1odC1pY29uLXNpemUpO1xuICAtd2Via2l0LW1hc2stc2l6ZTogY29udGFpbjtcbiAgLXdlYmtp'@; put 'dC1tYXNrLWltYWdlOiB1cmwoIiR7bltlXX0iKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO2Asckx0PVsiZm9udC1mYW1pbHkiXSxpTHQ9WyJ0b2tlbnMuIiwiY29sb3JzLiIsInNpemluZy4iLCJkZW5zaXR5LiJdO2Z1bmN0aW9uIGJUKG4sZSl7aWYoInN0cmluZyI9PXR5'@; put 'cGVvZiBuJiZmdW5jdGlvbiBvTHQobil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBuJiZpTHQuc29tZShlPT5uLmluY2x1ZGVzKGUpKX0obikpcmV0dXJuIGZ1bmN0aW9uIGFMdChuKXtyZXR1cm4gbi5pbmNsdWRlcygidG9rZW5zLiIpP2B2YXIoLS1odC0ke1BNKG4uc3BsaXQoIi4iKS5zbGlj'@; put 'ZSgxKS5qb2luKCItIikpfSlgOmB2YXIoLS1odC0ke1BNKG4uc3BsaXQoIi4iKS5qb2luKCItIikpfSlgfShuKTtpZihBcnJheS5pc0FycmF5KG4pKXtpZihuLmxlbmd0aD49Mil7Y29uc3RbdCxyXT1uO3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmInN0cmluZyI9PXR5cGVvZiByP2BsaWdo'@; put 'dC1kYXJrKCR7YlQodCxlKX0sICR7YlQocixlKX0pYDoic3RyaW5nIj09dHlwZW9mIHQ/YlQodCxlKToic3RyaW5nIj09dHlwZW9mIHI/YlQocixlKToiIn1yZXR1cm4gYlQoblswXSxlKX1yZXR1cm4gZSYmckx0LmluY2x1ZGVzKGUpP1N0cmluZyhuKTpQTShTdHJpbmcobikpfWZ1bmN0aW9u'@; put 'IGxMdChuLGUsdCl7cmV0dXJuYCR7ZnVuY3Rpb24gc0x0KG4sZSl7cmV0dXJuYC0taHQtJHtuP2Ake259LWA6IiJ9JHtQTShlKX1gfShuLGUpfTogJHtiVCh0LGUpfTtgfWZ1bmN0aW9uIGdPKG4sZT0iIix0PSIiKXtsZXQgcj0iIjtyZXR1cm4gT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgo'@; put 'W2ksb10pPT57Y29uc3QgYT1QTShpKSxsPXQ/YCR7dH0tJHthfWA6YTtDYShvKT9yKz1nTyhvLGUsbCk6cis9YCR7bEx0KGUsbCxvKX1cbmB9KSxyfWZ1bmN0aW9uIEtJZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHBy'@; put 'aXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gWEllKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9u'@; put 'IFFJZShuLGUpe3JldHVybiBmdW5jdGlvbiBjTHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFhJZShuLGUsImdldCIpKX1mdW5jdGlvbiBKSWUobixlLHQpe3JldHVybiBmdW5jdGlvbiB1THQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNl'@; put 'e2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFhJZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gZURlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJv'@; put 'cigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fXZhciBtTz1uZXcgV2Vha01hcCxDZGU9bmV3IFdlYWtTZXQ7Y2xhc3MgZ0x0e2dldENsYXNzTmFtZSgpe3JldHVybiB0aGlzLnRoZW1lQ2xhc3NOYW1lfXVwZGF0ZShlKXt2YXIgdDt0'@; put 'aGlzLmhvdCYmKHZvaWQgMD09PWUuZ2V0VGhlbWVDb25maWcmJkpyKCdbVGhlbWVNYW5hZ2VyXSBUaGUgInRoZW1lIiBvcHRpb24gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUaGVtZUJ1aWxkZXIuJyksdGhpcy50aGVtZUNvbmZpZz1lLmdldFRoZW1lQ29uZmlnKCksdGhpcy50aGVtZUNsYXNz'@; put 'TmFtZT1gaHQtdGhlbWUtJHt0aGlzLnRoZW1lQ29uZmlnLm5hbWV9YCwiZnVuY3Rpb24iPT10eXBlb2YgZS5zdWJzY3JpYmUmJihudWxsPT09KHQ9UUllKHRoaXMsbU8pKXx8dm9pZCAwPT09dHx8dC5jYWxsKHRoaXMpLEpJZSh0aGlzLG1PLGUuc3Vic2NyaWJlKG89Pnt0aGlzLmhvdD8uc3R5'@; put 'bGVzSGFuZGxlciYmKHRoaXMudGhlbWVDb25maWc9byxlRGUodGhpcyxDZGUsdERlKS5jYWxsKHRoaXMpLHRoaXMuaG90LnN0eWxlc0hhbmRsZXIuY2xlYXJDYWNoZSgpLHRoaXMuaG90LnJlbmRlcigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNldFRoZW1lIix0aGlzLnRoZW1lQ2xhc3NO'@; put 'YW1lLCExKSl9KSkpLHRoaXMubW91bnQoKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTZXRUaGVtZSIsdGhpcy50aGVtZUNsYXNzTmFtZSwhMCkpfW1vdW50KCl7ZURlKHRoaXMsQ2RlLHREZSkuY2FsbCh0aGlzKX11bm1vdW50KCl7dGhpcy50aGVtZVN0eWxlcyYmdGhpcy50aGVtZVN0eWxl'@; put 'cy5yZW1vdmUoKX1kZXN0cm95KCl7dmFyIGU7bnVsbD09PShlPVFJZSh0aGlzLG1PKSl8fHZvaWQgMD09PWV8fGUuY2FsbCh0aGlzKSx0aGlzLnVubW91bnQoKSx0aGlzLmhvdC50aGVtZU1hbmFnZXI9bnVsbH1jb25zdHJ1Y3Rvcih7aG90OmUsdGhlbWVPYmplY3Q6dH0peyhmdW5jdGlvbiBo'@; put 'THQobixlKXtLSWUobixlKSxlLmFkZChuKX0pKHRoaXMsQ2RlKSxmdW5jdGlvbiBkTHQobixlLHQpe0tJZShuLGUpLGUuc2V0KG4sdCl9KHRoaXMsbU8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMudGhlbWVTdHlsZXM9bnVsbCx0aGlzLnRoZW1lQ2xhc3NOYW1lPSIiLHRoaXMu'@; put 'dGhlbWVDb25maWc9bnVsbCxKSWUodGhpcyxtTyxudWxsKSx0aGlzLmhvdD1lLHRoaXMudXBkYXRlKHQpfX1mdW5jdGlvbiB0RGUoKXtpZighKHRoaXMudGhlbWVDb25maWcmJnRoaXMuaG90JiZ0aGlzLmhvdC5yb290RG9jdW1lbnQmJnRoaXMuaG90LnJvb3RXcmFwcGVyRWxlbWVudCkpcmV0'@; put 'dXJuO2NvbnN0IG49ImF1dG8iPT09dGhpcy50aGVtZUNvbmZpZy5jb2xvclNjaGVtZT8ibGlnaHQgZGFyayI6dGhpcy50aGVtZUNvbmZpZy5jb2xvclNjaGVtZTt0aGlzLnRoZW1lU3R5bGVzfHwodGhpcy50aGVtZVN0eWxlcz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi'@; put 'c3R5bGUiKSx0aGlzLnRoZW1lU3R5bGVzLnNldEF0dHJpYnV0ZSgiZGF0YS1ob3QtdGhlbWUtc3R5bGUiLCJ0cnVlIikpLHRoaXMudGhlbWVTdHlsZXMudGV4dENvbnRlbnQ9YDp3aGVyZSguJHt0aGlzLnRoZW1lQ2xhc3NOYW1lfSkge1xuYCx0aGlzLnRoZW1lQ29uZmlnLnNpemluZyYmKHRo'@; put 'aXMudGhlbWVTdHlsZXMudGV4dENvbnRlbnQrPWdPKHRoaXMudGhlbWVDb25maWcuc2l6aW5nLCJzaXppbmciKSksdGhpcy50aGVtZUNvbmZpZy5kZW5zaXR5JiZ0aGlzLnRoZW1lQ29uZmlnLmRlbnNpdHkudHlwZSYmdGhpcy50aGVtZUNvbmZpZy5kZW5zaXR5LnNpemVzJiZ0aGlzLnRoZW1l'@; put 'Q29uZmlnLmRlbnNpdHkuc2l6ZXNbdGhpcy50aGVtZUNvbmZpZy5kZW5zaXR5LnR5cGVdJiYodGhpcy50aGVtZVN0eWxlcy50ZXh0Q29udGVudCs9Z08odGhpcy50aGVtZUNvbmZpZy5kZW5zaXR5LnNpemVzW3RoaXMudGhlbWVDb25maWcuZGVuc2l0eS50eXBlXSwiZGVuc2l0eSIpKSx0aGlz'@; put 'LnRoZW1lQ29uZmlnLmNvbG9ycyYmKHRoaXMudGhlbWVTdHlsZXMudGV4dENvbnRlbnQrPWdPKHRoaXMudGhlbWVDb25maWcuY29sb3JzLCJjb2xvcnMiKSksdGhpcy50aGVtZUNvbmZpZy50b2tlbnMmJih0aGlzLnRoZW1lU3R5bGVzLnRleHRDb250ZW50Kz1nTyh0aGlzLnRoZW1lQ29uZmln'@; put 'LnRva2VucykpLHRoaXMudGhlbWVDb25maWcuaWNvbnMmJih0aGlzLnRoZW1lU3R5bGVzLnRleHRDb250ZW50Kz0obj0+YC5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRlbVdyYXBwZXI6OmFmdGVyLFxuLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkg'@; put 'dHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOjphZnRlcixcbi5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRlbVdyYXBwZXI6OmFmdGVyLFxuLnBpa2Etc2luZ2xlIC5waWthLW5leHQge1xuICAke0N1KG4sImFycm93UmlnaHQi'@; put 'KX1cbn1cblxuLnBpa2Etc2luZ2xlIC5waWthLXByZXYge1xuICAke0N1KG4sImFycm93TGVmdCIpfVxufVxuXG4uaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyOjphZnRlciB7XG4gICR7Q3UobiwiYXJyb3dEb3duIil9XG59XG5cbi5jaGFuZ2VUeXBlOjpiZWZvcmUge1xu'@; put 'ICAke0N1KG4sIm1lbnUiKX1cbn1cblxuLmh0VUlTZWxlY3RDYXB0aW9uOjphZnRlcixcbi5odEF1dG9jb21wbGV0ZUFycm93OjphZnRlciB7XG4gICR7Q3Uobiwic2VsZWN0QXJyb3ciKX1cbn1cblxuLmNvbHVtblNvcnRpbmcuc29ydEFjdGlvbi5hc2NlbmRpbmc6OmJlZm9yZSB7XG4gICR7'@; put 'Q3UobiwiYXJyb3dOYXJyb3dVcCIpfVxufVxuXG4uY29sdW1uU29ydGluZy5zb3J0QWN0aW9uLmRlc2NlbmRpbmc6OmJlZm9yZSB7XG4gICR7Q3UobiwiYXJyb3dOYXJyb3dEb3duIil9XG59XG5cbi5odC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbiAuaHQtcGFnZS1maXJzdDo6YmVmb3JlIHtc'@; put 'biAgJHtDdShuLCJhcnJvd0xlZnRXaXRoQmFyIil9XG59XG5cbltkaXI9InJ0bCJdIC5odC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbiAuaHQtcGFnZS1maXJzdDo6YmVmb3JlIHtcbiAgJHtDdShuLCJhcnJvd1JpZ2h0V2l0aEJhciIpfVxufVxuXG4uaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rp'@; put 'b24gLmh0LXBhZ2UtcHJldjo6YmVmb3JlIHtcbiAgJHtDdShuLCJhcnJvd0xlZnQiKX1cbn1cblxuW2Rpcj0icnRsIl0gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uIC5odC1wYWdlLXByZXY6OmJlZm9yZSB7XG4gICR7Q3UobiwiYXJyb3dSaWdodCIpfVxufVxuXG4uaHQtcGFnZS1uYXZp'@; put 'Z2F0aW9uLXNlY3Rpb24gLmh0LXBhZ2UtbmV4dDo6YmVmb3JlIHtcbiAgJHtDdShuLCJhcnJvd1JpZ2h0Iil9XG59XG5cbltkaXI9InJ0bCJdIC5odC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbiAuaHQtcGFnZS1uZXh0OjpiZWZvcmUge1xuICAke0N1KG4sImFycm93TGVmdCIpfVxufVxuXG4u'@; put 'aHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb24gLmh0LXBhZ2UtbGFzdDo6YmVmb3JlIHtcbiAgJHtDdShuLCJhcnJvd1JpZ2h0V2l0aEJhciIpfVxufVxuXG5bZGlyPSJydGwiXSAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb24gLmh0LXBhZ2UtbGFzdDo6YmVmb3JlIHtcbiAgJHtDdShuLCJh'@; put 'cnJvd0xlZnRXaXRoQmFyIil9XG59XG5cbi5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciBzcGFuLnNlbGVjdGVkOjphZnRlcixcbi5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyIHNwYW4uc2VsZWN0ZWQ6OmFmdGVy'@; put 'LFxuLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyIHNwYW4uc2VsZWN0ZWQ6OmFmdGVyIHtcbiAgJHtDdShuLCJjaGVjayIpfVxufVxuXG4uaHRDaGVja2JveFJlbmRlcmVySW5wdXQge1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4u'@; put 'aHRDaGVja2JveFJlbmRlcmVySW5wdXQ6OmFmdGVyIHtcbiAgJHtDdShuLCJjaGVja2JveCIpfVxufVxuXG50aC5iZWZvcmVIaWRkZW5Db2x1bW46OmFmdGVyIHtcbiAgJHtDdShuLCJjYXJldEhpZGRlbkxlZnQiKX1cbn1cblxudGguYWZ0ZXJIaWRkZW5Db2x1bW46OmJlZm9yZSB7XG4gICR7'@; put 'Q3UobiwiY2FyZXRIaWRkZW5SaWdodCIpfVxufVxuXG50aC5iZWZvcmVIaWRkZW5Sb3c6OmFmdGVyIHtcbiAgJHtDdShuLCJjYXJldEhpZGRlblVwIil9XG59XG5cbnRoLmFmdGVySGlkZGVuUm93OjpiZWZvcmUge1xuICAke0N1KG4sImNhcmV0SGlkZGVuRG93biIpfVxufVxuXG4uY29sbGFw'@; put 'c2libGVJbmRpY2F0b3I6OmJlZm9yZSxcbi5odF9uZXN0aW5nQnV0dG9uOjpiZWZvcmUge1xuICAke0N1KG4sImNvbGxhcHNlT2ZmIil9XG59XG5cbi5jb2xsYXBzaWJsZUluZGljYXRvci5jb2xsYXBzZWQ6OmJlZm9yZSxcbi5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdFeHBhbmQ6OmJl'@; put 'Zm9yZSB7XG4gICR7Q3UobiwiY29sbGFwc2VPbiIpfVxufVxuXG4uaHRVSVJhZGlvID4gaW5wdXRbdHlwZT0icmFkaW8iXTo6YWZ0ZXIge1xuICAke0N1KG4sInJhZGlvIil9XG59XG5cbi5odC1tdWx0aS1zZWxlY3QtY2hpcC1yZW1vdmU6OmJlZm9yZSB7XG4gICR7Q3UobiwiY2hpcENsb3Nl'@; put 'Iil9XG59XG5cbi5odC1ub3RpZmljYXRpb25fX2Nsb3NlOjpiZWZvcmUge1xuICAke0N1KG4sImNoaXBDbG9zZSIpfVxufVxuXG4uaHQtbXVsdGktc2VsZWN0LWVkaXRvci1zZWFyY2gtaWNvbiB7XG4gICR7Q3Uobiwic2VhcmNoIil9XG59XG5cbi5odC1tdWx0aS1zZWxlY3QtZWRpdG9yLWl0'@; put 'ZW0tc2VsZWN0ZWQgaW5wdXQ6OmFmdGVyIHtcbiAgJHtDdShuLCJjaGVja2JveCIpfVxufWApKHRoaXMudGhlbWVDb25maWcuaWNvbnMpKSx0aGlzLnRoZW1lU3R5bGVzLnRleHRDb250ZW50Kz0ifVxuIix0aGlzLnRoZW1lU3R5bGVzLnRleHRDb250ZW50Kz1gLiR7dGhpcy50aGVtZUNsYXNz'@; put 'TmFtZX0ge1xuY29sb3Itc2NoZW1lOiAke259O1xufWAsdGhpcy50aGVtZVN0eWxlcy5wYXJlbnROb2RlIT09dGhpcy5ob3Qucm9vdFdyYXBwZXJFbGVtZW50JiZ0aGlzLmhvdC5yb290V3JhcHBlckVsZW1lbnQucHJlcGVuZCh0aGlzLnRoZW1lU3R5bGVzKX1mdW5jdGlvbiBuRGUobixlKXtp'@; put 'ZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHJEZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAi'@; put 'K3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBqaChuLGUpe3JldHVybiBmdW5jdGlvbiB2THQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLHJEZShuLGUsImdldCIpKX1mdW5jdGlvbiB2TyhuLGUs'@; put 'dCl7bkRlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBJdyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIF9MdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJp'@; put 'dmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sckRlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBsWihuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlv'@; put 'biBpRGUobixlKXtuRGUobixlKSxlLmFkZChuKX12YXIgX089bmV3IFdlYWtNYXAsJHA9bmV3IFdlYWtNYXAseU89bmV3IFdlYWtNYXAsY1o9bmV3IFdlYWtNYXAsd1Q9bmV3IFdlYWtNYXAsU2RlPW5ldyBXZWFrU2V0LEVkZT1uZXcgV2Vha1NldDtjbGFzcyB5THR7Z2V0RWxlbWVudCgpe3Jl'@; put 'dHVybiBqaCh0aGlzLF9PKX1oYXMoZSl7cmV0dXJuIGpoKHRoaXMsJHApLmhhcyhlKX1hZGQoZSx0LHI9MCl7Y29uc3QgaT1qaCh0aGlzLCRwKS5nZXQoZSksbz1pP2kuc2VxOmpoKHRoaXMseU8pO2kmJmkuZWxlbWVudC5yZW1vdmUoKSxqaCh0aGlzLHdUKSYmdC5jbGFzc0xpc3QuYWRkKGpo'@; put 'KHRoaXMsd1QpKSxqaCh0aGlzLCRwKS5zZXQoZSx7ZWxlbWVudDp0LHdlaWdodDpyLHNlcTpvfSksaXx8SXcodGhpcyx5TyxqaCh0aGlzLHlPKSsxKSxsWih0aGlzLEVkZSxhRGUpLmNhbGwodGhpcyl9cmVtb3ZlKGUpe2NvbnN0IHQ9amgodGhpcywkcCkuZ2V0KGUpO3QmJihqaCh0aGlzLHdU'@; put 'KSYmdC5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoamgodGhpcyx3VCkpLHQuZWxlbWVudC5yZW1vdmUoKSxqaCh0aGlzLCRwKS5kZWxldGUoZSkpfXNldE9yZGVyKGUpe0l3KHRoaXMsY1osQXJyYXkuaXNBcnJheShlKT9lLnNsaWNlKCk6W10pLGxaKHRoaXMsRWRlLGFEZSkuY2FsbCh0aGlz'@; put 'KX1nZXRPcmRlcigpe3JldHVybiBsWih0aGlzLFNkZSxvRGUpLmNhbGwodGhpcyl9Y2xlYXIoKXtqaCh0aGlzLCRwKS5mb3JFYWNoKGU9PmUuZWxlbWVudC5yZW1vdmUoKSksamgodGhpcywkcCkuY2xlYXIoKX1jb25zdHJ1Y3RvcihlLHtpdGVtQ2xhc3M6dD0iIn09e30pe2lEZSh0aGlzLFNk'@; put 'ZSksaURlKHRoaXMsRWRlKSx2Tyh0aGlzLF9PLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx2Tyh0aGlzLCRwLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx2Tyh0aGlzLHlPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx2Tyh0aGlzLGNaLHt3cml0YWJsZTohMCx2YWx1ZTp2'@; put 'b2lkIDB9KSx2Tyh0aGlzLHdULHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxJdyh0aGlzLCRwLG5ldyBNYXApLEl3KHRoaXMseU8sMCksSXcodGhpcyxjWixbXSksSXcodGhpcyxfTyxlKSxJdyh0aGlzLHdULHQpfX1mdW5jdGlvbiBvRGUoKXtjb25zdCBuPWpoKHRoaXMsY1opO3JldHVy'@; put 'biBBcnJheS5mcm9tKGpoKHRoaXMsJHApLmtleXMoKSkuc29ydCgoZSx0KT0+e2NvbnN0IHI9bi5pbmRleE9mKGUpLGk9bi5pbmRleE9mKHQpO2lmKC0xIT09cnx8LTEhPT1pKXJldHVybigtMT09PXI/MS8wOnIpLSgtMT09PWk/MS8wOmkpO2NvbnN0IG89amgodGhpcywkcCkuZ2V0KGUpLGE9'@; put 'amgodGhpcywkcCkuZ2V0KHQpO3JldHVybiBvLndlaWdodCE9PWEud2VpZ2h0P28ud2VpZ2h0LWEud2VpZ2h0Om8uc2VxLWEuc2VxfSl9ZnVuY3Rpb24gYURlKCl7bGV0IG49amgodGhpcyxfTykuZmlyc3RDaGlsZDtsWih0aGlzLFNkZSxvRGUpLmNhbGwodGhpcykuZm9yRWFjaChlPT57Y29u'@; put 'c3QgdD1qaCh0aGlzLCRwKS5nZXQoZSkuZWxlbWVudDt0PT09bj9uPW4ubmV4dFNpYmxpbmc6amgodGhpcyxfTykuaW5zZXJ0QmVmb3JlKHQsbil9KX1mdW5jdGlvbiBzRGUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0'@; put 'ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gbERlKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIHdMdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sc0RlKG4sZSwiZ2V0IikpfXZhciB1Wj1uZXcgV2Vha01hcDtjbGFzcyBN'@; put 'THR7Z2V0U2xvdChlKXtjb25zdCB0PWxEZSh0aGlzLHVaKS5nZXQoZSk7cmV0dXJuIHR8fEpyKGBVbmtub3duIGxheW91dCBzbG90ICIke2V9Ii5gKSx0fXJlZ2lzdGVyKGUsdCx7c2lkZTpyLHdlaWdodDppPTB9KXt0aGlzLmdldFNsb3QocikuYWRkKGUsdCxpKX11bnJlZ2lzdGVyKGUsdCl7'@; put 'dGhpcy5nZXRTbG90KHQpLnJlbW92ZShlKX1hcHBseUNvbmZpZyhlPXt9KXtPYmplY3QudmFsdWVzKFFEdCkuZm9yRWFjaCh0PT50aGlzLmdldFNsb3QodCkuc2V0T3JkZXIoZT8uW3RdPz9bXSkpfWRlc3Ryb3koKXtsRGUodGhpcyx1WikuZm9yRWFjaChlPT5lLmNsZWFyKCkpfWNvbnN0cnVj'@; put 'dG9yKGUpeyhmdW5jdGlvbiBTTHQobixlLHQpeyhmdW5jdGlvbiBiTHQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfSko'@; put 'dGhpcyx1Wix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZnVuY3Rpb24gRUx0KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gQ0x0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0'@; put 'IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixzRGUobixlLCJzZXQiKSx0KSx0fSh0aGlzLHVaLG5ldyBNYXAoT2JqZWN0LmtleXMoZSkubWFwKHQ9Plt0LG5ldyB5THQoZVt0XSx7aXRlbUNsYXNzOlpJZX0pXSkpKX19Y29uc3QgVEx0PXtzaXplXzA6IjBweCIsc2l6'@; put 'ZV8wXzU6IjJweCIsc2l6ZV8xOiI0cHgiLHNpemVfMjoiOHB4IixzaXplXzFfNToiNnB4IixzaXplXzM6IjEycHgiLHNpemVfNDoiMTZweCIsc2l6ZV81OiIyMHB4IixzaXplXzY6IjI0cHgiLHNpemVfNzoiMjhweCIsc2l6ZV84OiIzMnB4IixzaXplXzk6IjM2cHgiLHNpemVfMTA6IjQwcHgi'@; put 'LHNpemVfMF8yNToiMXB4In0seEx0PXtkZWZhdWx0OntjZWxsVmVydGljYWw6InNpemluZy5zaXplXzEiLGNlbGxIb3Jpem9udGFsOiJzaXppbmcuc2l6ZV8yIixiYXJzSG9yaXpvbnRhbDoic2l6aW5nLnNpemVfNCIsYmFyc1ZlcnRpY2FsOiJzaXppbmcuc2l6ZV8yIixnYXA6InNpemluZy5z'@; put 'aXplXzEiLGJ1dHRvbkhvcml6b250YWw6InNpemluZy5zaXplXzMiLGJ1dHRvblZlcnRpY2FsOiJzaXppbmcuc2l6ZV8xXzUiLGRpYWxvZ0hvcml6b250YWw6InNpemluZy5zaXplXzIiLGRpYWxvZ1ZlcnRpY2FsOiJzaXppbmcuc2l6ZV8yIixpbnB1dEhvcml6b250YWw6InNpemluZy5zaXpl'@; put 'XzMiLGlucHV0VmVydGljYWw6InNpemluZy5zaXplXzFfNSIsbWVudVZlcnRpY2FsOiJzaXppbmcuc2l6ZV8yIixtZW51SG9yaXpvbnRhbDoic2l6aW5nLnNpemVfMCIsbWVudUl0ZW1WZXJ0aWNhbDoic2l6aW5nLnNpemVfMSIsbWVudUl0ZW1Ib3Jpem9udGFsOiJzaXppbmcuc2l6ZV8zIn0s'@; put 'Y29tcGFjdDp7Y2VsbFZlcnRpY2FsOiJzaXppbmcuc2l6ZV8wXzUiLGNlbGxIb3Jpem9udGFsOiJzaXppbmcuc2l6ZV8xXzUiLGJhcnNIb3Jpem9udGFsOiJzaXppbmcuc2l6ZV8yIixiYXJzVmVydGljYWw6InNpemluZy5zaXplXzEiLGdhcDoic2l6aW5nLnNpemVfMF81IixidXR0b25Ib3Jp'@; put 'em9udGFsOiJzaXppbmcuc2l6ZV8yIixidXR0b25WZXJ0aWNhbDoic2l6aW5nLnNpemVfMF81IixkaWFsb2dIb3Jpem9udGFsOiJzaXppbmcuc2l6ZV8xXzUiLGRpYWxvZ1ZlcnRpY2FsOiJzaXppbmcuc2l6ZV8xXzUiLGlucHV0SG9yaXpvbnRhbDoic2l6aW5nLnNpemVfMiIsaW5wdXRWZXJ0'@; put 'aWNhbDoic2l6aW5nLnNpemVfMF81IixtZW51VmVydGljYWw6InNpemluZy5zaXplXzIiLG1lbnVIb3Jpem9udGFsOiJzaXppbmcuc2l6ZV8wIixtZW51SXRlbVZlcnRpY2FsOiJzaXppbmcuc2l6ZV8wXzUiLG1lbnVJdGVtSG9yaXpvbnRhbDoic2l6aW5nLnNpemVfMiJ9LGNvbWZvcnRhYmxl'@; put 'OntjZWxsVmVydGljYWw6InNpemluZy5zaXplXzIiLGNlbGxIb3Jpem9udGFsOiJzaXppbmcuc2l6ZV8zIixiYXJzSG9yaXpvbnRhbDoic2l6aW5nLnNpemVfNCIsYmFyc1ZlcnRpY2FsOiJzaXppbmcuc2l6ZV8yIixnYXA6InNpemluZy5zaXplXzFfNSIsYnV0dG9uSG9yaXpvbnRhbDoic2l6'@; put 'aW5nLnNpemVfNCIsYnV0dG9uVmVydGljYWw6InNpemluZy5zaXplXzIiLGRpYWxvZ0hvcml6b250YWw6InNpemluZy5zaXplXzMiLGRpYWxvZ1ZlcnRpY2FsOiJzaXppbmcuc2l6ZV8zIixpbnB1dEhvcml6b250YWw6InNpemluZy5zaXplXzQiLGlucHV0VmVydGljYWw6InNpemluZy5zaXpl'@; put 'XzIiLG1lbnVWZXJ0aWNhbDoic2l6aW5nLnNpemVfMyIsbWVudUhvcml6b250YWw6InNpemluZy5zaXplXzAiLG1lbnVJdGVtVmVydGljYWw6InNpemluZy5zaXplXzIiLG1lbnVJdGVtSG9yaXpvbnRhbDoic2l6aW5nLnNpemVfMiJ9fSxBTHQ9bmV3IFNldChbIm5hbWUiLCJzaXppbmciLCJk'@; put 'ZW5zaXR5IiwiaWNvbnMiLCJjb2xvcnMiLCJ0b2tlbnMiLCJjb2xvclNjaGVtZSJdKSxjRGU9bmV3IFNldChbImxpZ2h0IiwiZGFyayIsImF1dG8iXSksTWRlPW5ldyBTZXQoWyJkZWZhdWx0IiwiY29tcGFjdCIsImNvbWZvcnRhYmxlIl0pLGtMdD1uZXcgU2V0KFsiYXJyb3dSaWdodCIsImFy'@; put 'cm93UmlnaHRXaXRoQmFyIiwiYXJyb3dMZWZ0IiwiYXJyb3dMZWZ0V2l0aEJhciIsImFycm93RG93biIsIm1lbnUiLCJzZWxlY3RBcnJvdyIsImFycm93TmFycm93VXAiLCJhcnJvd05hcnJvd0Rvd24iLCJjaGVjayIsImNoZWNrYm94IiwiY2FyZXRIaWRkZW5MZWZ0IiwiY2FyZXRIaWRkZW5S'@; put 'aWdodCIsImNhcmV0SGlkZGVuVXAiLCJjYXJldEhpZGRlbkRvd24iLCJjb2xsYXBzZU9mZiIsImNvbGxhcHNlT24iLCJyYWRpbyIsImNoaXBDbG9zZSIsInNlYXJjaCJdKSxSTHQ9bmV3IFNldChbImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRTaXplU21hbGwiLCJsaW5lSGVpZ2h0Iiwi'@; put 'bGluZUhlaWdodFNtYWxsIiwiZm9udFdlaWdodCIsImxldHRlclNwYWNpbmciLCJnYXBTaXplIiwiaWNvblNpemUiLCJ0YWJsZVRyYW5zaXRpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXJDb2xvciIsImFjY2VudENvbG9yIiwiZm9yZWdyb3VuZENvbG9yIiwiZm9yZWdyb3VuZFNlY29uZGFy'@; put 'eUNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZFNlY29uZGFyeUNvbG9yIiwicGxhY2Vob2xkZXJDb2xvciIsInJlYWRPbmx5Q29sb3IiLCJkaXNhYmxlZENvbG9yIiwic2hhZG93Q29sb3IiLCJzaGFkb3dYIiwic2hhZG93WSIsInNoYWRvd0JsdXIiLCJzaGFkb3dPcGFjaXR5'@; put 'IiwiYmFyRm9yZWdyb3VuZENvbG9yIiwiYmFyQmFja2dyb3VuZENvbG9yIiwiYmFySG9yaXpvbnRhbFBhZGRpbmciLCJiYXJWZXJ0aWNhbFBhZGRpbmciLCJjZWxsSG9yaXpvbnRhbEJvcmRlckNvbG9yIiwiY2VsbFZlcnRpY2FsQm9yZGVyQ29sb3IiLCJjZWxsSG9yaXpvbnRhbFBhZGRpbmci'@; put 'LCJjZWxsVmVydGljYWxQYWRkaW5nIiwicm93SGVhZGVyT2RkQmFja2dyb3VuZENvbG9yIiwicm93SGVhZGVyRXZlbkJhY2tncm91bmRDb2xvciIsInJvd0NlbGxPZGRCYWNrZ3JvdW5kQ29sb3IiLCJyb3dDZWxsRXZlbkJhY2tncm91bmRDb2xvciIsImNlbGxFZGl0b3JCb3JkZXJXaWR0aCIs'@; put 'ImNlbGxFZGl0b3JCb3JkZXJDb2xvciIsImNlbGxFZGl0b3JGb3JlZ3JvdW5kQ29sb3IiLCJjZWxsRWRpdG9yQmFja2dyb3VuZENvbG9yIiwiY2VsbEVkaXRvclNoYWRvd0JsdXJSYWRpdXMiLCJjZWxsRWRpdG9yU2hhZG93Q29sb3IiLCJjZWxsU3VjY2Vzc0JhY2tncm91bmRDb2xvciIsImNl'@; put 'bGxFcnJvckJhY2tncm91bmRDb2xvciIsImNlbGxSZWFkT25seUJhY2tncm91bmRDb2xvciIsImNlbGxTZWxlY3Rpb25Cb3JkZXJDb2xvciIsImNlbGxTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IiLCJjZWxsQXV0b2ZpbGxTaXplIiwiY2VsbEF1dG9maWxsSGl0QXJlYVNpemUiLCJjZWxsQXV0'@; put 'b2ZpbGxCb3JkZXJXaWR0aCIsImNlbGxBdXRvZmlsbEJvcmRlclJhZGl1cyIsImNlbGxBdXRvZmlsbEJvcmRlckNvbG9yIiwiY2VsbEF1dG9maWxsQmFja2dyb3VuZENvbG9yIiwiY2VsbEF1dG9maWxsRmlsbEJvcmRlckNvbG9yIiwiY2VsbE1vYmlsZUhhbmRsZVNpemUiLCJjZWxsTW9iaWxl'@; put 'SGFuZGxlQm9yZGVyV2lkdGgiLCJjZWxsTW9iaWxlSGFuZGxlQm9yZGVyUmFkaXVzIiwiY2VsbE1vYmlsZUhhbmRsZUJvcmRlckNvbG9yIiwiY2VsbE1vYmlsZUhhbmRsZUJhY2tncm91bmRDb2xvciIsImNlbGxNb2JpbGVIYW5kbGVCYWNrZ3JvdW5kT3BhY2l0eSIsInJlc2l6ZUluZGljYXRv'@; put 'ckNvbG9yIiwibW92ZUJhY2tsaWdodENvbG9yIiwibW92ZUJhY2tsaWdodE9wYWNpdHkiLCJtb3ZlSW5kaWNhdG9yQ29sb3IiLCJoaWRkZW5JbmRpY2F0b3JDb2xvciIsInNjcm9sbGJhckJvcmRlclJhZGl1cyIsInNjcm9sbGJhclRyYWNrQ29sb3IiLCJzY3JvbGxiYXJUaHVtYkNvbG9yIiwi'@; put 'aGVhZGVyRm9udFdlaWdodCIsImhlYWRlckZvcmVncm91bmRDb2xvciIsImhlYWRlckJhY2tncm91bmRDb2xvciIsImhlYWRlckhpZ2hsaWdodGVkU2hhZG93U2l6ZSIsImhlYWRlckhpZ2hsaWdodGVkRm9yZWdyb3VuZENvbG9yIiwiaGVhZGVySGlnaGxpZ2h0ZWRCYWNrZ3JvdW5kQ29sb3Ii'@; put 'LCJoZWFkZXJBY3RpdmVCb3JkZXJDb2xvciIsImhlYWRlckFjdGl2ZUZvcmVncm91bmRDb2xvciIsImhlYWRlckFjdGl2ZUJhY2tncm91bmRDb2xvciIsImhlYWRlckZpbHRlckJhY2tncm91bmRDb2xvciIsImhlYWRlclJvd0ZvcmVncm91bmRDb2xvciIsImhlYWRlclJvd0JhY2tncm91bmRD'@; put 'b2xvciIsImhlYWRlclJvd0hpZ2hsaWdodGVkRm9yZWdyb3VuZENvbG9yIiwiaGVhZGVyUm93SGlnaGxpZ2h0ZWRCYWNrZ3JvdW5kQ29sb3IiLCJoZWFkZXJSb3dBY3RpdmVGb3JlZ3JvdW5kQ29sb3IiLCJoZWFkZXJSb3dBY3RpdmVCYWNrZ3JvdW5kQ29sb3IiLCJjaGVja2JveFNpemUiLCJj'@; put 'aGVja2JveEJvcmRlclJhZGl1cyIsImNoZWNrYm94Qm9yZGVyQ29sb3IiLCJjaGVja2JveEJhY2tncm91bmRDb2xvciIsImNoZWNrYm94SWNvbkNvbG9yIiwiY2hlY2tib3hGb2N1c0JvcmRlckNvbG9yIiwiY2hlY2tib3hGb2N1c0JhY2tncm91bmRDb2xvciIsImNoZWNrYm94Rm9jdXNJY29u'@; put 'Q29sb3IiLCJjaGVja2JveEZvY3VzUmluZ0NvbG9yIiwiY2hlY2tib3hEaXNhYmxlZEJvcmRlckNvbG9yIiwiY2hlY2tib3hEaXNhYmxlZEJhY2tncm91bmRDb2xvciIsImNoZWNrYm94RGlzYWJsZWRJY29uQ29sb3IiLCJjaGVja2JveENoZWNrZWRCb3JkZXJDb2xvciIsImNoZWNrYm94Q2hl'@; put 'Y2tlZEJhY2tncm91bmRDb2xvciIsImNoZWNrYm94Q2hlY2tlZEljb25Db2xvciIsImNoZWNrYm94Q2hlY2tlZEZvY3VzQm9yZGVyQ29sb3IiLCJjaGVja2JveENoZWNrZWRGb2N1c0JhY2tncm91bmRDb2xvciIsImNoZWNrYm94Q2hlY2tlZEZvY3VzSWNvbkNvbG9yIiwiY2hlY2tib3hDaGVj'@; put 'a2VkRGlzYWJsZWRCb3JkZXJDb2xvciIsImNoZWNrYm94Q2hlY2tlZERpc2FibGVkQmFja2dyb3VuZENvbG9yIiwiY2hlY2tib3hDaGVja2VkRGlzYWJsZWRJY29uQ29sb3IiLCJjaGVja2JveEluZGV0ZXJtaW5hdGVCb3JkZXJDb2xvciIsImNoZWNrYm94SW5kZXRlcm1pbmF0ZUJhY2tncm91'@; put 'bmRDb2xvciIsImNoZWNrYm94SW5kZXRlcm1pbmF0ZUljb25Db2xvciIsImNoZWNrYm94SW5kZXRlcm1pbmF0ZUZvY3VzQm9yZGVyQ29sb3IiLCJjaGVja2JveEluZGV0ZXJtaW5hdGVGb2N1c0JhY2tncm91bmRDb2xvciIsImNoZWNrYm94SW5kZXRlcm1pbmF0ZUZvY3VzSWNvbkNvbG9yIiwi'@; put 'Y2hlY2tib3hJbmRldGVybWluYXRlRGlzYWJsZWRCb3JkZXJDb2xvciIsImNoZWNrYm94SW5kZXRlcm1pbmF0ZURpc2FibGVkQmFja2dyb3VuZENvbG9yIiwiY2hlY2tib3hJbmRldGVybWluYXRlRGlzYWJsZWRJY29uQ29sb3IiLCJyYWRpb1NpemUiLCJyYWRpb0JvcmRlckNvbG9yIiwicmFk'@; put 'aW9CYWNrZ3JvdW5kQ29sb3IiLCJyYWRpb0ljb25Db2xvciIsInJhZGlvRm9jdXNCb3JkZXJDb2xvciIsInJhZGlvRm9jdXNCYWNrZ3JvdW5kQ29sb3IiLCJyYWRpb0ZvY3VzSWNvbkNvbG9yIiwicmFkaW9Gb2N1c1JpbmdDb2xvciIsInJhZGlvRGlzYWJsZWRCb3JkZXJDb2xvciIsInJhZGlv'@; put 'RGlzYWJsZWRCYWNrZ3JvdW5kQ29sb3IiLCJyYWRpb0Rpc2FibGVkSWNvbkNvbG9yIiwicmFkaW9DaGVja2VkQm9yZGVyQ29sb3IiLCJyYWRpb0NoZWNrZWRCYWNrZ3JvdW5kQ29sb3IiLCJyYWRpb0NoZWNrZWRJY29uQ29sb3IiLCJyYWRpb0NoZWNrZWRGb2N1c0JvcmRlckNvbG9yIiwicmFk'@; put 'aW9DaGVja2VkRm9jdXNCYWNrZ3JvdW5kQ29sb3IiLCJyYWRpb0NoZWNrZWRGb2N1c0ljb25Db2xvciIsInJhZGlvQ2hlY2tlZERpc2FibGVkQm9yZGVyQ29sb3IiLCJyYWRpb0NoZWNrZWREaXNhYmxlZEJhY2tncm91bmRDb2xvciIsInJhZGlvQ2hlY2tlZERpc2FibGVkSWNvbkNvbG9yIiwi'@; put 'aWNvbkJ1dHRvbkJvcmRlclJhZGl1cyIsImljb25CdXR0b25MYXJnZUJvcmRlclJhZGl1cyIsImljb25CdXR0b25MYXJnZVBhZGRpbmciLCJpY29uQnV0dG9uQm9yZGVyQ29sb3IiLCJpY29uQnV0dG9uQmFja2dyb3VuZENvbG9yIiwiaWNvbkJ1dHRvbkljb25Db2xvciIsImljb25CdXR0b25I'@; put 'aXRBcmVhU2l6ZSIsImljb25CdXR0b25Ib3ZlckJvcmRlckNvbG9yIiwiaWNvbkJ1dHRvbkhvdmVyQmFja2dyb3VuZENvbG9yIiwiaWNvbkJ1dHRvbkhvdmVySWNvbkNvbG9yIiwiaWNvbkJ1dHRvbkFjdGl2ZUJvcmRlckNvbG9yIiwiaWNvbkJ1dHRvbkFjdGl2ZUJhY2tncm91bmRDb2xvciIs'@; put 'Imljb25CdXR0b25BY3RpdmVJY29uQ29sb3IiLCJpY29uQnV0dG9uQWN0aXZlSG92ZXJCb3JkZXJDb2xvciIsImljb25CdXR0b25BY3RpdmVIb3ZlckJhY2tncm91bmRDb2xvciIsImljb25CdXR0b25BY3RpdmVIb3Zlckljb25Db2xvciIsImNvbGxhcHNlQnV0dG9uQm9yZGVyUmFkaXVzIiwi'@; put 'Y29sbGFwc2VCdXR0b25PcGVuQm9yZGVyQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbk9wZW5CYWNrZ3JvdW5kQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbk9wZW5JY29uQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbk9wZW5JY29uQWN0aXZlQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbk9wZW5Ib3ZlckJvcmRlckNv'@; put 'bG9yIiwiY29sbGFwc2VCdXR0b25PcGVuSG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbk9wZW5Ib3Zlckljb25Db2xvciIsImNvbGxhcHNlQnV0dG9uT3BlbkhvdmVySWNvbkFjdGl2ZUNvbG9yIiwiY29sbGFwc2VCdXR0b25DbG9zZUJvcmRlckNvbG9yIiwiY29sbGFwc2VC'@; put 'dXR0b25DbG9zZUJhY2tncm91bmRDb2xvciIsImNvbGxhcHNlQnV0dG9uQ2xvc2VJY29uQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbkNsb3NlSWNvbkFjdGl2ZUNvbG9yIiwiY29sbGFwc2VCdXR0b25DbG9zZUhvdmVyQm9yZGVyQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbkNsb3NlSG92ZXJCYWNrZ3Jv'@; put 'dW5kQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbkNsb3NlSG92ZXJJY29uQ29sb3IiLCJjb2xsYXBzZUJ1dHRvbkNsb3NlSG92ZXJJY29uQWN0aXZlQ29sb3IiLCJidXR0b25Cb3JkZXJSYWRpdXMiLCJidXR0b25Ib3Jpem9udGFsUGFkZGluZyIsImJ1dHRvblZlcnRpY2FsUGFkZGluZyIsInByaW1h'@; put 'cnlCdXR0b25Cb3JkZXJDb2xvciIsInByaW1hcnlCdXR0b25Gb3JlZ3JvdW5kQ29sb3IiLCJwcmltYXJ5QnV0dG9uQmFja2dyb3VuZENvbG9yIiwicHJpbWFyeUJ1dHRvbkRpc2FibGVkQm9yZGVyQ29sb3IiLCJwcmltYXJ5QnV0dG9uRGlzYWJsZWRGb3JlZ3JvdW5kQ29sb3IiLCJwcmltYXJ5'@; put 'QnV0dG9uRGlzYWJsZWRCYWNrZ3JvdW5kQ29sb3IiLCJwcmltYXJ5QnV0dG9uSG92ZXJCb3JkZXJDb2xvciIsInByaW1hcnlCdXR0b25Ib3ZlckZvcmVncm91bmRDb2xvciIsInByaW1hcnlCdXR0b25Ib3ZlckJhY2tncm91bmRDb2xvciIsInByaW1hcnlCdXR0b25Gb2N1c0JvcmRlckNvbG9y'@; put 'IiwicHJpbWFyeUJ1dHRvbkZvY3VzRm9yZWdyb3VuZENvbG9yIiwicHJpbWFyeUJ1dHRvbkZvY3VzQmFja2dyb3VuZENvbG9yIiwic2Vjb25kYXJ5QnV0dG9uQm9yZGVyQ29sb3IiLCJzZWNvbmRhcnlCdXR0b25Gb3JlZ3JvdW5kQ29sb3IiLCJzZWNvbmRhcnlCdXR0b25CYWNrZ3JvdW5kQ29s'@; put 'b3IiLCJzZWNvbmRhcnlCdXR0b25EaXNhYmxlZEJvcmRlckNvbG9yIiwic2Vjb25kYXJ5QnV0dG9uRGlzYWJsZWRGb3JlZ3JvdW5kQ29sb3IiLCJzZWNvbmRhcnlCdXR0b25EaXNhYmxlZEJhY2tncm91bmRDb2xvciIsInNlY29uZGFyeUJ1dHRvbkhvdmVyQm9yZGVyQ29sb3IiLCJzZWNvbmRh'@; put 'cnlCdXR0b25Ib3ZlckZvcmVncm91bmRDb2xvciIsInNlY29uZGFyeUJ1dHRvbkhvdmVyQmFja2dyb3VuZENvbG9yIiwic2Vjb25kYXJ5QnV0dG9uRm9jdXNCb3JkZXJDb2xvciIsInNlY29uZGFyeUJ1dHRvbkZvY3VzRm9yZWdyb3VuZENvbG9yIiwic2Vjb25kYXJ5QnV0dG9uRm9jdXNCYWNr'@; put 'Z3JvdW5kQ29sb3IiLCJjb21tZW50c1RleHRhcmVhSG9yaXpvbnRhbFBhZGRpbmciLCJjb21tZW50c1RleHRhcmVhVmVydGljYWxQYWRkaW5nIiwiY29tbWVudHNUZXh0YXJlYUJvcmRlcldpZHRoIiwiY29tbWVudHNUZXh0YXJlYUJvcmRlckNvbG9yIiwiY29tbWVudHNUZXh0YXJlYUZvcmVn'@; put 'cm91bmRDb2xvciIsImNvbW1lbnRzVGV4dGFyZWFCYWNrZ3JvdW5kQ29sb3IiLCJjb21tZW50c1RleHRhcmVhRm9jdXNCb3JkZXJXaWR0aCIsImNvbW1lbnRzVGV4dGFyZWFGb2N1c0JvcmRlckNvbG9yIiwiY29tbWVudHNUZXh0YXJlYUZvY3VzRm9yZWdyb3VuZENvbG9yIiwiY29tbWVudHNU'@; put 'ZXh0YXJlYUZvY3VzQmFja2dyb3VuZENvbG9yIiwiY29tbWVudHNJbmRpY2F0b3JTaXplIiwiY29tbWVudHNJbmRpY2F0b3JDb2xvciIsImxpY2Vuc2VIb3Jpem9udGFsUGFkZGluZyIsImxpY2Vuc2VWZXJ0aWNhbFBhZGRpbmciLCJsaWNlbnNlRm9yZWdyb3VuZENvbG9yIiwibGljZW5zZUJh'@; put 'Y2tncm91bmRDb2xvciIsImxpbmtDb2xvciIsImxpbmtIb3ZlckNvbG9yIiwiaW5wdXRCb3JkZXJXaWR0aCIsImlucHV0Qm9yZGVyUmFkaXVzIiwiaW5wdXRIb3Jpem9udGFsUGFkZGluZyIsImlucHV0VmVydGljYWxQYWRkaW5nIiwiaW5wdXRCb3JkZXJDb2xvciIsImlucHV0Rm9yZWdyb3Vu'@; put 'ZENvbG9yIiwiaW5wdXRCYWNrZ3JvdW5kQ29sb3IiLCJpbnB1dEhvdmVyQm9yZGVyQ29sb3IiLCJpbnB1dEhvdmVyRm9yZWdyb3VuZENvbG9yIiwiaW5wdXRIb3ZlckJhY2tncm91bmRDb2xvciIsImlucHV0RGlzYWJsZWRCb3JkZXJDb2xvciIsImlucHV0RGlzYWJsZWRGb3JlZ3JvdW5kQ29s'@; put 'b3IiLCJpbnB1dERpc2FibGVkQmFja2dyb3VuZENvbG9yIiwiaW5wdXRGb2N1c0JvcmRlckNvbG9yIiwiaW5wdXRGb2N1c0ZvcmVncm91bmRDb2xvciIsImlucHV0Rm9jdXNCYWNrZ3JvdW5kQ29sb3IiLCJtZW51Qm9yZGVyV2lkdGgiLCJtZW51Qm9yZGVyUmFkaXVzIiwibWVudUhvcml6b250'@; put 'YWxQYWRkaW5nIiwibWVudVZlcnRpY2FsUGFkZGluZyIsIm1lbnVJdGVtSG9yaXpvbnRhbFBhZGRpbmciLCJtZW51SXRlbVZlcnRpY2FsUGFkZGluZyIsIm1lbnVCb3JkZXJDb2xvciIsIm1lbnVTaGFkb3dYIiwibWVudVNoYWRvd1kiLCJtZW51U2hhZG93Qmx1ciIsIm1lbnVTaGFkb3dDb2xv'@; put 'ciIsIm1lbnVTaGFkb3dPcGFjaXR5IiwibWVudUl0ZW1Ib3ZlckNvbG9yIiwibWVudUl0ZW1Ib3ZlckNvbG9yT3BhY2l0eSIsIm1lbnVJdGVtQWN0aXZlQ29sb3IiLCJtZW51SXRlbUFjdGl2ZUNvbG9yT3BhY2l0eSIsImRpYWxvZ1NlbWlUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvciIsImRp'@; put 'YWxvZ1NlbWlUcmFuc3BhcmVudEJhY2tncm91bmRPcGFjaXR5IiwiZGlhbG9nU29saWRCYWNrZ3JvdW5kQ29sb3IiLCJkaWFsb2dDb250ZW50UGFkZGluZ0hvcml6b250YWwiLCJkaWFsb2dDb250ZW50UGFkZGluZ1ZlcnRpY2FsIiwiZGlhbG9nQ29udGVudEJvcmRlclJhZGl1cyIsImRpYWxv'@; put 'Z0NvbnRlbnRCYWNrZ3JvdW5kQ29sb3IiLCJub3RpZmljYXRpb25Gb3JlZ3JvdW5kQ29sb3IiLCJub3RpZmljYXRpb25CYWNrZ3JvdW5kQ29sb3IiLCJub3RpZmljYXRpb25Cb3JkZXJDb2xvciIsIm5vdGlmaWNhdGlvblN1Y2Nlc3NBY2NlbnQiLCJub3RpZmljYXRpb25XYXJuaW5nQWNjZW50'@; put 'Iiwibm90aWZpY2F0aW9uRXJyb3JBY2NlbnQiLCJwYWdpbmF0aW9uQmFyRm9yZWdyb3VuZENvbG9yIiwicGFnaW5hdGlvbkJhckJhY2tncm91bmRDb2xvciIsInBhZ2luYXRpb25CYXJIb3Jpem9udGFsUGFkZGluZyIsInBhZ2luYXRpb25CYXJWZXJ0aWNhbFBhZGRpbmciLCJwYWdpbmF0aW9u'@; put 'QnV0dG9uQm9yZGVyQ29sb3IiLCJwYWdpbmF0aW9uQnV0dG9uRm9yZWdyb3VuZENvbG9yIiwicGFnaW5hdGlvbkJ1dHRvbkJhY2tncm91bmRDb2xvciIsInBhZ2luYXRpb25CdXR0b25Ib3ZlckJvcmRlckNvbG9yIiwicGFnaW5hdGlvbkJ1dHRvbkhvdmVyRm9yZWdyb3VuZENvbG9yIiwicGFn'@; put 'aW5hdGlvbkJ1dHRvbkhvdmVyQmFja2dyb3VuZENvbG9yIiwicGFnaW5hdGlvbkJ1dHRvbkRpc2FibGVkRm9yZWdyb3VuZENvbG9yIiwicGFnaW5hdGlvbkJ1dHRvbkRpc2FibGVkQmFja2dyb3VuZENvbG9yIiwicGFnaW5hdGlvbkJ1dHRvbkRpc2FibGVkQm9yZGVyQ29sb3IiLCJwYWdpbmF0'@; put 'aW9uQnV0dG9uRm9jdXNCb3JkZXJDb2xvciIsInBhZ2luYXRpb25CdXR0b25Gb2N1c0ZvcmVncm91bmRDb2xvciIsInBhZ2luYXRpb25CdXR0b25Gb2N1c0JhY2tncm91bmRDb2xvciIsImNoaXBCYWNrZ3JvdW5kIiwiY2hpcEJvcmRlclJhZGl1cyIsImNoaXBWZXJ0aWNhbFBhZGRpbmciLCJj'@; put 'aGlwSG9yaXpvbnRhbFBhZGRpbmciLCJjaGlwR2FwIl0pO2Z1bmN0aW9uIHVEZShuKXtyZXR1cm4gY0RlLmhhcyhuKXx8SnIoYFtUaGVtZUJ1aWxkZXJdIEludmFsaWQgY29sb3Igc2NoZW1lOiAiJHtufSIuIE11c3QgYmUgb25lIG9mOiAke1suLi5jRGVdLmpvaW4oIiwgIil9LmApLG59ZnVu'@; put 'Y3Rpb24gVGRlKG4pe3JldHVybiBNZGUuaGFzKG4pfHxKcihgW1RoZW1lQnVpbGRlcl0gSW52YWxpZCBkZW5zaXR5OiAiJHtufSIuIE11c3QgYmUgb25lIG9mOiAke1suLi5NZGVdLmpvaW4oIiwgIil9LmApLG59ZnVuY3Rpb24gZERlKG4sZSl7T2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgo'@; put 'W3Qscl0pPT57Y29uc3QgaT1gJHtlfS4ke3R9YDsic3RyaW5nIiE9dHlwZW9mIHImJihDYShyKT9kRGUocixpKTpKcihgW1RoZW1lQnVpbGRlcl0gJHtpfSBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdC5gKSl9KX1mdW5jdGlvbiB4ZGUobixlLHQscj17fSl7Y29uc3R7dHlwZTppPSJr'@; put 'ZXkiLHdhcm5NaXNzaW5nOm89ITF9PXI7aWYobil7aWYoT2JqZWN0LmtleXMobikuZm9yRWFjaChsPT57ZS5oYXMobCl8fEhhKGBbVGhlbWVCdWlsZGVyXSBVbmtub3duICR7aX0ga2V5OiAiJHtsfSIgaW4gJHt0fS4gVGhpcyBtYXkgYmUgYSBjdXN0b20gJHtpfSBvciBhIHR5cG8uYCl9KSxv'@; put 'KXtjb25zdCBsPVtdO2UuZm9yRWFjaCh1PT57dSBpbiBufHxsLnB1c2godSl9KSxsLmxlbmd0aD4wJiZIYShgW1RoZW1lQnVpbGRlcl0gTWlzc2luZyAke2l9KHMpIGluICR7dH06ICR7bC5qb2luKCIsICIpfWApfX1lbHNlIG8mJkhhKGBbVGhlbWVCdWlsZGVyXSBObyAke2l9cyBwcm92aWRl'@; put 'ZCBpbiAke3R9LiBBbGwgJHtpfXMgYXJlIG1pc3NpbmcuYCl9ZnVuY3Rpb24gaERlKG4sZSx0PXt9KXtjb25zdHtyZXF1aXJlZEZpZWxkczpyPVtdfT10Oygib2JqZWN0IiE9dHlwZW9mIG58fG51bGw9PT1uKSYmSnIoYFtUaGVtZUJ1aWxkZXJdICR7ZX0gbXVzdCBiZSBhbiBvYmplY3QuYCk7'@; put 'Y29uc3QgaT1uLHtuYW1lOm8sc2l6aW5nOmEsZGVuc2l0eTpsLGljb25zOnUsY29sb3JzOmcsdG9rZW5zOkUsY29sb3JTY2hlbWU6T309aTt4ZGUoaSxBTHQsZSx7dHlwZToicGFyYW0ifSksci5mb3JFYWNoKFo9Pnt2b2lkIDA9PT1pW1pdJiZKcihgW1RoZW1lQnVpbGRlcl0gJHtlfS4ke1p9'@; put 'IGlzIHJlcXVpcmVkLmApfSksdm9pZCAwIT09byYmZnVuY3Rpb24gSUx0KG4sZSl7KCJzdHJpbmciIT10eXBlb2Ygbnx8IiI9PT1uLnRyaW0oKSkmJkpyKGBbVGhlbWVCdWlsZGVyXSAke2V9Lm5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuYCl9KG8sZSksdm9pZCAwIT09YSYmKENh'@; put 'KGEpfHxKcihgW1RoZW1lQnVpbGRlcl0gJHtlfS5zaXppbmcgbXVzdCBiZSBhbiBvYmplY3QuYCkpLHZvaWQgMCE9PWwmJighQ2EobCkmJiJzdHJpbmciIT10eXBlb2YgbCYmSnIoYFtUaGVtZUJ1aWxkZXJdICR7ZX0uZGVuc2l0eSBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdC5gKSxm'@; put 'dW5jdGlvbiBMTHQobixlKXtpZihDYShuKSl7Y29uc3QgdD1uOyghdC50eXBlfHwhdC5zaXplcykmJkpyKGBbVGhlbWVCdWlsZGVyXSAke2V9IG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGggYSAndHlwZScgYW5kICdzaXplcycgcHJvcGVydHkuYCksVGRlKFN0cmluZyh0LnR5'@; put 'cGUpKSxmdW5jdGlvbiBETHQobixlKXtDYShuKSYmIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09bj9PYmplY3Qua2V5cyhuKS5mb3JFYWNoKHQ9PntNZGUuaGFzKHQpfHxIYShgW1RoZW1lQnVpbGRlcl0gVW5rbm93biBkZW5zaXR5IHNpemUga2V5OiAiJHt0fSIgaW4gJHtlfS5zaXplcy4g'@; put 'VGhpcyBtYXkgYmUgYSBjdXN0b20gZGVuc2l0eSBzaXplIG9yIGEgdHlwby5gKX0pOkpyKGBbVGhlbWVCdWlsZGVyXSAke2V9LnNpemVzIG11c3QgYmUgYW4gb2JqZWN0LmApfSh0LnNpemVzLGAke2V9LnNpemVzYCl9ZWxzZSJzdHJpbmciPT10eXBlb2YgbiYmVGRlKG4pfShsLGAke2V9LmRl'@; put 'bnNpdHlgKSksdm9pZCAwIT09dSYmKENhKHUpfHxKcihgW1RoZW1lQnVpbGRlcl0gJHtlfS5pY29ucyBtdXN0IGJlIGFuIG9iamVjdC5gKSx4ZGUodSxrTHQsYCR7ZX0uaWNvbnNgLHt0eXBlOiJpY29uIix3YXJuTWlzc2luZzpyLmluY2x1ZGVzKCJpY29ucyIpfSkpLHZvaWQgMCE9PWcmJihD'@; put 'YShnKXx8SnIoYFtUaGVtZUJ1aWxkZXJdICR7ZX0uY29sb3JzIG11c3QgYmUgYW4gb2JqZWN0LmApLGREZShnLGAke2V9LmNvbG9yc2ApKSx2b2lkIDAhPT1FJiYoQ2EoRSl8fEpyKGBbVGhlbWVCdWlsZGVyXSAke2V9LnRva2VucyBtdXN0IGJlIGFuIG9iamVjdC5gKSx4ZGUoRSxSTHQsYCR7'@; put 'ZX0udG9rZW5zYCx7dHlwZToidG9rZW4iLHdhcm5NaXNzaW5nOnIuaW5jbHVkZXMoInRva2VucyIpfSkpLHZvaWQgMCE9PU8mJnVEZShTdHJpbmcoTykpfWZ1bmN0aW9uIGZEZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1l'@; put 'IHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gcERlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0'@; put 'aW9uIEtkKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIE9MdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4scERlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGJPKG4sZSx0KXtmRGUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIFQ0KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24g'@; put 'Tkx0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixwRGUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIENU'@; put 'KG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIEFkZShuLGUpe2ZEZShuLGUpLGUuYWRkKG4pfWNvbnN0IEZMdD1bInNpemluZyIsImljb25zIiwi'@; put 'Y29sb3JzIiwidG9rZW5zIl0sUEx0PVsibmFtZSIsImljb25zIiwiY29sb3JzIiwidG9rZW5zIl07dmFyIHFwPW5ldyBXZWFrTWFwLFNUPW5ldyBXZWFrTWFwLHdPPW5ldyBXZWFrTWFwLER3PW5ldyBXZWFrTWFwLHVfPW5ldyBXZWFrTWFwLGRaPW5ldyBXZWFrU2V0LGdEZT1uZXcgV2Vha1Nl'@; put 'dCxrZGU9bmV3IFdlYWtTZXQ7Y2xhc3MgSEx0e3N1YnNjcmliZShlKXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZSYmSnIoIltUaGVtZUJ1aWxkZXJdIGxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSxLZCh0aGlzLHdPKS5hZGQoZSksKCk9PktkKHRoaXMsd08pLmRlbGV0ZShlKX1w'@; put 'YXJhbXMoZSl7cmV0dXJuIGhEZShlLCJwYXJhbXMiKSxDVCh0aGlzLGtkZSxtRGUpLmNhbGwodGhpcyxlKSxDVCh0aGlzLGRaLFJkZSkuY2FsbCh0aGlzKSx0aGlzfXNldENvbG9yU2NoZW1lKGUpe3JldHVybiBUNCh0aGlzLER3LHVEZShlKSksS2QodGhpcyxTVCkuY29sb3JTY2hlbWU9S2Qo'@; put 'dGhpcyxEdyksS2QodGhpcyxxcCkuY29sb3JTY2hlbWU9S2QodGhpcyxEdyksQ1QodGhpcyxkWixSZGUpLmNhbGwodGhpcyksdGhpc31zZXREZW5zaXR5VHlwZShlKXtyZXR1cm4gVDQodGhpcyx1XyxUZGUoZSkpLEtkKHRoaXMsU1QpLmRlbnNpdHkudHlwZT1LZCh0aGlzLHVfKSxLZCh0aGlz'@; put 'LHFwKS5kZW5zaXR5LnR5cGU9S2QodGhpcyx1XyksQ1QodGhpcyxkWixSZGUpLmNhbGwodGhpcyksdGhpc31nZXRUaGVtZUNvbmZpZygpe3JldHVybiBLZCh0aGlzLFNUKX1jb25zdHJ1Y3RvcihlKXtBZGUodGhpcyxkWiksQWRlKHRoaXMsZ0RlKSxBZGUodGhpcyxrZGUpLGJPKHRoaXMscXAs'@; put 'e3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGJPKHRoaXMsU1Qse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGJPKHRoaXMsd08se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGJPKHRoaXMsRHcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGJPKHRoaXMsdV8se3dyaXRhYmxl'@; put 'OiEwLHZhbHVlOnZvaWQgMH0pLFQ0KHRoaXMsd08sbmV3IFNldCksVDQodGhpcyxEdywiYXV0byIpLFQ0KHRoaXMsdV8sImRlZmF1bHQiKSxoRGUoZSwidGhlbWVDb25maWciLHtyZXF1aXJlZEZpZWxkczpQTHR9KSxUNCh0aGlzLHFwLHtuYW1lOnZvaWQgMCxzaXppbmc6VEx0LGRlbnNpdHk6'@; put 'e3R5cGU6S2QodGhpcyx1Xyksc2l6ZXM6eEx0fSxpY29uczp7fSxjb2xvcnM6e30sdG9rZW5zOnt9LGNvbG9yU2NoZW1lOktkKHRoaXMsRHcpfSksQ1QodGhpcyxrZGUsbURlKS5jYWxsKHRoaXMsZSksVDQodGhpcyxxcCxLZCh0aGlzLFNUKSl9fWZ1bmN0aW9uIFJkZSgpe2NvbnN0IG49dGhp'@; put 'cy5nZXRUaGVtZUNvbmZpZygpO0tkKHRoaXMsd08pLmZvckVhY2goZT0+ZShuKSl9ZnVuY3Rpb24gVkx0KG4sZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXtjb25zdCB0PU5XKG4uZGVuc2l0eSxlKTtuLmRlbnNpdHk9dCx2b2lkIDAhPT1lLnR5cGUmJihUNCh0aGlzLHVfLGUudHlwZSksS2Qo'@; put 'dGhpcyxxcCk/LmRlbnNpdHkmJihLZCh0aGlzLHFwKS5kZW5zaXR5LnR5cGU9ZS50eXBlKSl9ZWxzZSBuLmRlbnNpdHkudHlwZT1lLFQ0KHRoaXMsdV8sZSksS2QodGhpcyxxcCk/LmRlbnNpdHkmJihLZCh0aGlzLHFwKS5kZW5zaXR5LnR5cGU9ZSl9ZnVuY3Rpb24gbURlKG4pe2NvbnN0IGU9'@; put 'QWQoS2QodGhpcyxxcCkpLHQ9bjt2b2lkIDAhPT1uLm5hbWUmJih2b2lkIDAhPT1LZCh0aGlzLHFwKS5uYW1lP0hhKCdbVGhlbWVCdWlsZGVyXSBUaGUgIm5hbWUiIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBkdXJpbmcgYHJlZ2lzdGVyVGhlbWUoKWAgYW5kIGNhbm5vdCBiZSB1cGRhdGVk'@; put 'IHZpYSBgcGFyYW1zKClgLicpOmUubmFtZT1uLm5hbWUpLEZMdC5mb3JFYWNoKHI9Pnt2b2lkIDAhPT10W3JdJiZDYSh0W3JdKSYmKGVbcl09TlcoZVtyXSx0W3JdKSl9KSx2b2lkIDAhPT1uLmRlbnNpdHkmJkNUKHRoaXMsZ0RlLFZMdCkuY2FsbCh0aGlzLGUsbi5kZW5zaXR5KSx2b2lkIDAh'@; put 'PT1uLmNvbG9yU2NoZW1lJiYoZS5jb2xvclNjaGVtZT1uLmNvbG9yU2NoZW1lLFQ0KHRoaXMsRHcsbi5jb2xvclNjaGVtZSksS2QodGhpcyxxcCk/LmNvbG9yU2NoZW1lJiYoS2QodGhpcyxxcCkuY29sb3JTY2hlbWU9bi5jb2xvclNjaGVtZSkpLFQ0KHRoaXMsU1QsZSl9ZnVuY3Rpb24gdkRl'@; put 'KG4pe3JldHVybiBuZXcgSEx0KG4pfWNvbnN0e2hhc0l0ZW06Qkx0LGdldEl0ZW06akx0LGdldE5hbWVzOlVMdCxnZXRWYWx1ZXM6ekx0LHJlZ2lzdGVyOl9EZX09enAoInRoZW1lcyIpO2Z1bmN0aW9uIEVUKG4pe3JldHVybiBCTHQobil9ZnVuY3Rpb24gQ08obil7aWYoRVQobikpcmV0dXJu'@; put 'IGpMdChuKTtIYShgVGhlbWUgIiR7bn0iIGlzIG5vdCByZWdpc3RlcmVkLiBQbGVhc2UgZW5zdXJlIGl0IGlzIHJlZ2lzdGVyZWQgYmVmb3JlIHVzaW5nIGl0LmApfWZ1bmN0aW9uIHlEZSgpe3JldHVybiBVTHQoKX1mdW5jdGlvbiBiRGUoKXtyZXR1cm4gekx0KCl9ZnVuY3Rpb24gd0RlKG4s'@; put 'ZSl7bGV0IHQ9bixyPUFkKGUpO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmQ2EoZSk/ci5uYW1lPW46InN0cmluZyIhPXR5cGVvZiBuJiZDYShuKSYmKHI9QWQobiksdD1yLm5hbWU/PyIiKSx7dGhlbWVOYW1lOnQsdGhlbWVDb25maWdPYmplY3Q6cn19ZnVuY3Rpb24gU08obixlKXtjb25z'@; put 'dHt0aGVtZU5hbWU6dCx0aGVtZUNvbmZpZ09iamVjdDpyfT13RGUobixlKSxpPXZEZShyKTtyZXR1cm4gRVQodCk/KEhhKGBUaGVtZSAiJHt0fSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkLiBSZWdpc3RyYXRpb24gc2tpcHBlZC5gKSxDTyh0KSk6KF9EZSh0LGkpLGkpfWZ1bmN0aW9uIENEZShu'@; put 'LGUpe2NvbnN0e3RoZW1lTmFtZTp0LHRoZW1lQ29uZmlnT2JqZWN0OnJ9PXdEZShuLGUpO2lmKCFFVCh0KSlyZXR1cm4gdm9pZCBIYShgVGhlbWUgIiR7dH0iIGlzIG5vdCByZWdpc3RlcmVkLiBDYW5ub3QgcmVpbml0aWFsaXplIGEgbm9uLWV4aXN0ZW50IHRoZW1lLmApO2NvbnN0IGk9dkRl'@; put 'KHIpO3JldHVybiBfRGUodCxpKSxpfWNvbnN0IFdMdD17bmFtZToibWFpbiIsZGVuc2l0eToiZGVmYXVsdCIsaWNvbnM6e2Fycm93UmlnaHQ6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicg'@; put 'ZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTYuNjQ2NDggMTAuOTM5M0w5LjkzOTM4IDcuNjQ2NDRMNi42NDY0OCA0LjM1MzU0JyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGlu'@; put 'ZWpvaW49J3JvdW5kJy8lM0UlM0Mvc3ZnJTNFJTBBIixhcnJvd1JpZ2h0V2l0aEJhcjoiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53'@; put 'My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNNC45MjkyIDQuNjQxODhMOC4yNzkzNCA3Ljk5MjAzTDQuOTI5MiAxMS4zNDIyTTExLjA3MTEgNC4wODM1M1YxMS4zNDIyJyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3Jv'@; put 'dW5kJy8lM0UlM0Mvc3ZnJTNFIixhcnJvd0xlZnQ6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUz'@; put 'Q3BhdGggZD0nTTkuNDkyNjggMTEuMjkyOUw2LjE5OTc4IDguMDAwMDFMOS40OTI2OCA0LjcwNzEyJyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJy8lM0UlM0Mvc3ZnJTNFJTBBIixhcnJvd0xlZnRXaXRoQmFyOiJk'@; put 'YXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzE2JyBoZWlnaHQ9JzE2JyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00xMS4wNzEzIDQuNjQxODhMNy43MjEx'@; put 'NSA3Ljk5MjAzTDExLjA3MTMgMTEuMzQyMk00LjkyOTM2IDQuMDgzNTNMNC45MjkzNiAxMS4zNDIyJyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJy8lM0UlM0Mvc3ZnJTNFIixhcnJvd0Rvd246ImRhdGE6aW1hZ2Uv'@; put 'c3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ2cgb3BhY2l0eT0nMC42JyUzRSUzQ3BhdGggZD0nTTExLjU4NTkgNkw4'@; put 'LjI5MzA0IDkuMjkyODlMNS4wMDAxNSA2JyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJy8lM0UlM0MvZyUzRSUzQy9zdmclM0UiLG1lbnU6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3'@; put 'aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTExLjAwMDIgNi42NjY2M0MxMS40MjYyIDYuNjY2NjMgMTEuNjQ4NyA3LjE1OTYzIDExLjM5MTcgNy40Nzgx'@; put 'M0wxMS4zNTM3IDcuNTIwMTNMOC4zNTM3MiAxMC41MjAxQzguMjY3NjIgMTAuNjA2MiA4LjE1MzA3IDEwLjY1NzkgOC4wMzE1NiAxMC42NjU2QzcuOTEwMDUgMTAuNjczMiA3Ljc4OTkyIDEwLjYzNjMgNy42OTM3MiAxMC41NjE2TDcuNjQ2NzIgMTAuNTIwMUw0LjY0NjcyIDcuNTIwMTNMNC42'@; put 'MDUyMiA3LjQ3MzEzTDQuNTc4MjIgNy40MzQ2M0w0LjU1MTIyIDcuMzg2NjNMNC41NDI3MiA3LjM2ODYzTDQuNTI5MjIgNy4zMzUxM0w0LjUxMzIyIDcuMjgxMTNMNC41MDgyMiA3LjI1NDYzTDQuNTAzMjIgNy4yMjQ2M0w0LjUwMTIyIDcuMTk2MTNWNy4xMzcxM0w0LjUwMzcyIDcuMTA4MTNM'@; put 'NC41MDgyMiA3LjA3ODEzTDQuNTEzMjIgNy4wNTIxM0w0LjUyOTIyIDYuOTk4MTNMNC41NDI3MiA2Ljk2NDYzTDQuNTc3NzIgNi44OTg2M0w0LjYxMDIyIDYuODUzNjNMNC42NDY3MiA2LjgxMzEzTDQuNjkzNzIgNi43NzE2M0w0LjczMjIyIDYuNzQ0NjNMNC43ODAyMiA2LjcxNzYzTDQuNzk4'@; put 'MjIgNi43MDkxM0w0LjgzMTcyIDYuNjk1NjNMNC44ODU3MiA2LjY3OTYzTDQuOTEyMjIgNi42NzQ2M0w0Ljk0MjIyIDYuNjY5NjNMNC45NzA3MiA2LjY2NzYzTDExLjAwMDIgNi42NjY2M1onIGZpbGw9J2N1cnJlbnRDb2xvcicvJTNFJTNDL3N2ZyUzRSUwQSIsc2VsZWN0QXJyb3c6ImRhdGE6'@; put 'aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTExLjAwMDIgNi42NjY2M0MxMS40MjYyIDYu'@; put 'NjY2NjMgMTEuNjQ4NyA3LjE1OTYzIDExLjM5MTcgNy40NzgxM0wxMS4zNTM3IDcuNTIwMTNMOC4zNTM3MiAxMC41MjAxQzguMjY3NjIgMTAuNjA2MiA4LjE1MzA3IDEwLjY1NzkgOC4wMzE1NiAxMC42NjU2QzcuOTEwMDUgMTAuNjczMiA3Ljc4OTkyIDEwLjYzNjMgNy42OTM3MiAxMC41NjE2'@; put 'TDcuNjQ2NzIgMTAuNTIwMUw0LjY0NjcyIDcuNTIwMTNMNC42MDUyMiA3LjQ3MzEzTDQuNTc4MjIgNy40MzQ2M0w0LjU1MTIyIDcuMzg2NjNMNC41NDI3MiA3LjM2ODYzTDQuNTI5MjIgNy4zMzUxM0w0LjUxMzIyIDcuMjgxMTNMNC41MDgyMiA3LjI1NDYzTDQuNTAzMjIgNy4yMjQ2M0w0LjUw'@; put 'MTIyIDcuMTk2MTNWNy4xMzcxM0w0LjUwMzcyIDcuMTA4MTNMNC41MDgyMiA3LjA3ODEzTDQuNTEzMjIgNy4wNTIxM0w0LjUyOTIyIDYuOTk4MTNMNC41NDI3MiA2Ljk2NDYzTDQuNTc3NzIgNi44OTg2M0w0LjYxMDIyIDYuODUzNjNMNC42NDY3MiA2LjgxMzEzTDQuNjkzNzIgNi43NzE2M0w0'@; put 'LjczMjIyIDYuNzQ0NjNMNC43ODAyMiA2LjcxNzYzTDQuNzk4MjIgNi43MDkxM0w0LjgzMTcyIDYuNjk1NjNMNC44ODU3MiA2LjY3OTYzTDQuOTEyMjIgNi42NzQ2M0w0Ljk0MjIyIDYuNjY5NjNMNC45NzA3MiA2LjY2NzYzTDExLjAwMDIgNi42NjY2M1onIGZpbGw9J2N1cnJlbnRDb2xvcicv'@; put 'JTNFJTNDL3N2ZyUzRSUwQSIsYXJyb3dOYXJyb3dVcDoiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNF'@; put 'JTNDcGF0aCBkPSdNOC4wMDAwOCAxMi42NjY3TDguMDAwMDggMy4zMzMzNU04LjAwMDA4IDMuMzMzMzVMNS4zMzM0MiA2LjAwMDAyTTguMDAwMDggMy4zMzMzNUwxMC42NjY3IDYuMDAwMDInIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5l'@; put 'am9pbj0ncm91bmQnLyUzRSUzQy9zdmclM0UlMEEiLGFycm93TmFycm93RG93bjoiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5v'@; put 'cmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNOC4wMDAwNCAzLjMzMzMxVjEyLjY2NjZNOC4wMDAwNCAxMi42NjY2TDEwLjY2NjcgOS45OTk5OE04LjAwMDA0IDEyLjY2NjZMNS4zMzMzNyA5Ljk5OTk4JyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJv'@; put 'a2UtbGluZWpvaW49J3JvdW5kJy8lM0UlM0Mvc3ZnJTNFJTBBIixjaGVjazoiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcv'@; put 'MjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMy4zMzMzNyA4LjAwMDAyTDYuNjY2NzEgMTEuMzMzNEwxMy4zMzM0IDQuNjY2NjknIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzRSUzQy9zdmclM0UlMEEiLGNoZWNr'@; put 'Ym94OiJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzE2JyBoZWlnaHQ9JzE2JyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J001IDhMNyAxMEwxMSA2JyBz'@; put 'dHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJy8lM0UlM0Mvc3ZnJTNFJTBBIixjYXJldEhpZGRlbkxlZnQ6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgd2lkdGg9JzEwJyBoZWlnaHQ9JzEwJyB2aWV3Qm94PScwIDAg'@; put 'MTAgMTAnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J002LjA4NDgyIDEuMzU3NzFMNi4xMTUwMyAxLjM1NTFINi4xNzY0OUw2LjIwNjcgMS4zNTc3MUw2LjIzNzk1IDEuMzYyMzlMNi4yNjUwMyAxLjM2NzZMNi4zMjEyOCAxLjM4'@; put 'NDI3TDYuMzU2MTggMS4zOTgzM0w2LjQyNDkzIDEuNDM0NzlMNi40NzE4IDEuNDY4NjRMNi41MTM5OSAxLjUwNjY3TDYuNTU3MjIgMS41NTU2Mkw2LjU4NTM0IDEuNTk1NzNMNi42MTM0NyAxLjY0NTczTDYuNjIyMzIgMS42NjQ0OEw2LjYzNjM5IDEuNjk5MzdMNi42NTMwNSAxLjc1NTYyTDYu'@; put 'NjU4MjYgMS43ODMyM0w2LjY2MzQ3IDEuODE0NDhMNi42NjU1NSAxLjg0NDE3TDYuNjY2NTkgMS44NzQ4OVY4LjEyNDg5QzYuNjY2NTkgOC41Njg2NCA2LjE1MzA1IDguODAwNDIgNS44MjEyOCA4LjUzMjcxTDUuNzc3NTMgOC40OTMxMkwyLjY1MjUzIDUuMzY4MTJDMi41NjI4NiA1LjI3ODQ0'@; put 'IDIuNTA4OTkgNS4xNTkxMiAyLjUwMTAzIDUuMDMyNTRDMi40OTMwNyA0LjkwNTk2IDIuNTMxNTcgNC43ODA4MyAyLjYwOTMgNC42ODA2MkwyLjY1MjUzIDQuNjMxNjdMNS43Nzc1MyAxLjUwNjY3TDUuODI2NDkgMS40NjM0NEw1Ljg2NjU5IDEuNDM1MzFMNS45MTY1OSAxLjQwNzE5TDUuOTM1'@; put 'MzQgMS4zOTgzM0w1Ljk3MDI0IDEuMzg0MjdMNi4wMjY0OSAxLjM2NzZMNi4wNTQwOSAxLjM2MjM5TDYuMDg0ODIgMS4zNTc3MVonIGZpbGw9J2N1cnJlbnRDb2xvcicvJTNFJTNDL3N2ZyUzRSIsY2FyZXRIaWRkZW5SaWdodDoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nMTAn'@; put 'IGhlaWdodD0nMTAnIHZpZXdCb3g9JzAgMCAxMCAxMCcgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMuMzMzMzcgMS44NzQ5OUMzLjMzMzM3IDEuNDMxMjQgMy44NDY5MiAxLjE5OTQ3IDQuMTc4NjkgMS40NjcxOEw0LjIyMjQ0'@; put 'IDEuNTA2NzZMNy4zNDc0NCA0LjYzMTc2QzcuNDM3MTEgNC43MjE0NSA3LjQ5MDk4IDQuODQwNzcgNy40OTg5NCA0Ljk2NzM1QzcuNTA2OSA1LjA5MzkyIDcuNDY4NCA1LjIxOTA1IDcuMzkwNjcgNS4zMTkyNkw3LjM0NzQ0IDUuMzY4MjJMNC4yMjI0NCA4LjQ5MzIyTDQuMTczNDggOC41MzY0'@; put 'NUw0LjEzMzM3IDguNTY0NTdMNC4wODMzNyA4LjU5MjdMNC4wNjQ2MiA4LjYwMTU1TDQuMDI5NzMgOC42MTU2MkwzLjk3MzQ4IDguNjMyMjhMMy45NDU4NyA4LjYzNzQ5TDMuOTE0NjIgOC42NDI3TDMuODg0OTQgOC42NDQ3OEwzLjg1NDIxIDguNjQ1ODJMMy44MjM0OCA4LjY0NDc4TDMuNzkz'@; put 'MjcgOC42NDIxOEwzLjc2MjAyIDguNjM3NDlMMy43MzQ5NCA4LjYzMjI4TDMuNjc4NjkgOC42MTU2MkwzLjY0Mzc5IDguNjAxNTVMMy41NzUwNCA4LjU2NTFMMy41MjgxNyA4LjUzMTI0TDMuNDg1OTggOC40OTMyMkwzLjQ0Mjc1IDguNDQ0MjZMMy40MTQ2MiA4LjQwNDE2TDMuMzg2NSA4LjM1'@; put 'NDE2TDMuMzc3NjQgOC4zMzU0MUwzLjM2MzU4IDguMzAwNTFMMy4zNDY5MiA4LjI0NDI2TDMuMzQxNzEgOC4yMTY2NkwzLjMzNjUgOC4xODU0MUwzLjMzNDQyIDguMTU1NzJMMy4zMzMzNyAxLjg3NDk5WicgZmlsbD0nY3VycmVudENvbG9yJy8lM0UlM0Mvc3ZnJTNFIixjYXJldEhpZGRlblVw'@; put 'OiJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCcgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMuNzY0MjUgMi40MzA5OUMzLjgyMTY1'@; put 'IDIuMzczNiAzLjg5ODAxIDIuMzM5MTMgMy45NzkwMiAyLjMzNDAzQzQuMDYwMDMgMi4zMjg5NCA0LjE0MDEyIDIuMzUzNTggNC4yMDQyNSAyLjQwMzMzTDQuMjM1NTggMi40MzA5OUw2LjIzNTU4IDQuNDMwOTlMNi4yNjMyNSA0LjQ2MjMzTDYuMjgxMjUgNC40ODc5OUw2LjI5OTI1IDQuNTE5'@; put 'OTlMNi4zMDQ5MiA0LjUzMTk5TDYuMzEzOTIgNC41NTQzM0w2LjMyNDU4IDQuNTkwMzNMNi4zMjc5MiA0LjYwNzk5TDYuMzMxMjUgNC42Mjc5OUw2LjMzMjU4IDQuNjQ2OTlMNi4zMzMyNSA0LjY2NjY2TDYuMzMyNTggNC42ODYzM0w2LjMzMDkyIDQuNzA1NjZMNi4zMjc5MiA0LjcyNTY2TDYu'@; put 'MzI0NTggNC43NDI5OUw2LjMxMzkyIDQuNzc4OTlMNi4zMDQ5MiA0LjgwMTMzTDYuMjgxNTggNC44NDUzM0w2LjI1OTkyIDQuODc1MzNMNi4yMzU1OCA0LjkwMjMzTDYuMjA0MjUgNC45Mjk5OUw2LjE3ODU4IDQuOTQ3OTlMNi4xNDY1OCA0Ljk2NTk5TDYuMTM0NTggNC45NzE2Nkw2LjExMjI1'@; put 'IDQuOTgwNjZMNi4wNzYyNSA0Ljk5MTMzTDYuMDU4NTggNC45OTQ2Nkw2LjAzODU4IDQuOTk3OTlMNi4wMTk1OCA0Ljk5OTMzTDUuOTk5OTIgNC45OTk5OUgxLjk5OTkyQzEuNzE1OTIgNC45OTk5OSAxLjU2NzU4IDQuNjcxMzMgMS43Mzg5MiA0LjQ1ODk5TDEuNzY0MjUgNC40MzA5OUwzLjc2'@; put 'NDI1IDIuNDMwOTlaJyBmaWxsPSdjdXJyZW50Q29sb3InLyUzRSUzQy9zdmclM0UlMEEiLGNhcmV0SGlkZGVuRG93bjoiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPSc4JyBoZWlnaHQ9JzgnIHZpZXdCb3g9JzAgMCA4IDgnIGZpbGw9J25vbmUnIHhtbG5z'@; put 'PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J001Ljk5OTkgM0M2LjI4MzkgMyA2LjQzMjI0IDMuMzI4NjcgNi4yNjA5IDMuNTQxTDYuMjM1NTcgMy41NjlMNC4yMzU1NyA1LjU2OUM0LjE3ODE3IDUuNjI2MzkgNC4xMDE4MSA1LjY2MDg3IDQuMDIwOCA1LjY2NTk2'@; put 'QzMuOTM5NzkgNS42NzEwNiAzLjg1OTcgNS42NDY0MiAzLjc5NTU3IDUuNTk2NjdMMy43NjQyNCA1LjU2OUwxLjc2NDI0IDMuNTY5TDEuNzM2NTcgMy41Mzc2N0wxLjcxODU3IDMuNTEyTDEuNzAwNTcgMy40OEwxLjY5NDkgMy40NjhMMS42ODU5IDMuNDQ1NjdMMS42NzUyNCAzLjQwOTY3TDEu'@; put 'NjcxOSAzLjM5MkwxLjY2ODU3IDMuMzcyTDEuNjY3MjQgMy4zNTNWMy4zMTM2N0wxLjY2ODkgMy4yOTQzM0wxLjY3MTkgMy4yNzQzM0wxLjY3NTI0IDMuMjU3TDEuNjg1OSAzLjIyMUwxLjY5NDkgMy4xOTg2N0wxLjcxODI0IDMuMTU0NjdMMS43Mzk5IDMuMTI0NjdMMS43NjQyNCAzLjA5NzY3'@; put 'TDEuNzk1NTcgMy4wN0wxLjgyMTI0IDMuMDUyTDEuODUzMjQgMy4wMzRMMS44NjUyNCAzLjAyODMzTDEuODg3NTcgMy4wMTkzM0wxLjkyMzU3IDMuMDA4NjdMMS45NDEyNCAzLjAwNTMzTDEuOTYxMjQgMy4wMDJMMS45ODAyNCAzLjAwMDY3TDUuOTk5OSAzWicgZmlsbD0nY3VycmVudENvbG9y'@; put 'Jy8lM0UlM0Mvc3ZnJTNFJTBBIixjb2xsYXBzZU9mZjoiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNF'@; put 'JTNDcGF0aCBkPSdNNC4zMzMyNSA4SDExLjY2NjYnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzRSUzQy9zdmclM0UlMEEiLGNvbGxhcHNlT246ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUz'@; put 'Q3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J003LjQ5OTg4IDExLjY2NjdD'@; put 'Ny40OTk4OCAxMS45NDI4IDcuNzIzNzQgMTIuMTY2NyA3Ljk5OTg4IDEyLjE2NjdDOC4yNzYwMiAxMi4xNjY3IDguNDk5ODggMTEuOTQyOCA4LjQ5OTg4IDExLjY2NjdWOC41MDAwMkgxMS42NjY2QzExLjk0MjcgOC41MDAwMiAxMi4xNjY2IDguMjc2MTYgMTIuMTY2NiA4LjAwMDAyQzEyLjE2'@; put 'NjYgNy43MjM4OCAxMS45NDI3IDcuNTAwMDIgMTEuNjY2NiA3LjUwMDAySDguNDk5ODhWNC4zMzMzN0M4LjQ5OTg4IDQuMDU3MjMgOC4yNzYwMiAzLjgzMzM3IDcuOTk5ODggMy44MzMzN0M3LjcyMzc0IDMuODMzMzcgNy40OTk4OCA0LjA1NzIzIDcuNDk5ODggNC4zMzMzN1Y3LjUwMDAySDQu'@; put 'MzMzMjVDNC4wNTcxMSA3LjUwMDAyIDMuODMzMjUgNy43MjM4OCAzLjgzMzI1IDguMDAwMDJDMy44MzMyNSA4LjI3NjE2IDQuMDU3MTEgOC41MDAwMiA0LjMzMzI1IDguNTAwMDJINy40OTk4OFYxMS42NjY3WicgZmlsbD0nY3VycmVudENvbG9yJy8lM0UlM0Mvc3ZnJTNFJTBBIixyYWRpbzoi'@; put 'ZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDY2lyY2xlIGN4PSc4JyBjeT0nOCcgcj0nNCcgZmls'@; put 'bD0nY3VycmVudENvbG9yJy8lM0UlM0Mvc3ZnJTNFJTBBIixjaGlwQ2xvc2U6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn'@; put 'LzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTEyIDRMNCAxMk00IDRMMTIgMTInIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzRSUzQy9zdmclM0UlMEEiLHNlYXJjaDoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2'@; put 'ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMicgaGVpZ2h0PSczMicgdmlld0JveD0nMCAwIDMyIDMyJyBmaWxsPSdub25lJyUzRSUzQ2cgb3BhY2l0eT0nMC41JyUzRSUzQ3BhdGggZD0nTTI4IDI4TDIwIDIwTTQgMTMuMzMzM0M0IDE0LjU1OSA0LjI0MTQx'@; put 'IDE1Ljc3MjcgNC43MTA0NiAxNi45MDVDNS4xNzk1IDE4LjAzNzQgNS44NjY5OSAxOS4wNjYzIDYuNzMzNjcgMTkuOTMzQzcuNjAwMzUgMjAuNzk5NyA4LjYyOTI1IDIxLjQ4NzIgOS43NjE2MiAyMS45NTYyQzEwLjg5NCAyMi40MjUzIDEyLjEwNzcgMjIuNjY2NyAxMy4zMzMzIDIyLjY2NjdD'@; put 'MTQuNTU5IDIyLjY2NjcgMTUuNzcyNyAyMi40MjUzIDE2LjkwNSAyMS45NTYyQzE4LjAzNzQgMjEuNDg3MiAxOS4wNjYzIDIwLjc5OTcgMTkuOTMzIDE5LjkzM0MyMC43OTk3IDE5LjA2NjMgMjEuNDg3MiAxOC4wMzc0IDIxLjk1NjIgMTYuOTA1QzIyLjQyNTMgMTUuNzcyNyAyMi42NjY3IDE0'@; put 'LjU1OSAyMi42NjY3IDEzLjMzMzNDMjIuNjY2NyAxMi4xMDc3IDIyLjQyNTMgMTAuODk0IDIxLjk1NjIgOS43NjE2MkMyMS40ODcyIDguNjI5MjUgMjAuNzk5NyA3LjYwMDM1IDE5LjkzMyA2LjczMzY3QzE5LjA2NjMgNS44NjY5OSAxOC4wMzc0IDUuMTc5NSAxNi45MDUgNC43MTA0NkMxNS43'@; put 'NzI3IDQuMjQxNDEgMTQuNTU5IDQgMTMuMzMzMyA0QzEyLjEwNzcgNCAxMC44OTQgNC4yNDE0MSA5Ljc2MTYyIDQuNzEwNDZDOC42MjkyNSA1LjE3OTUgNy42MDAzNSA1Ljg2Njk5IDYuNzMzNjcgNi43MzM2N0M1Ljg2Njk5IDcuNjAwMzUgNS4xNzk1IDguNjI5MjUgNC43MTA0NiA5Ljc2MTYy'@; put 'QzQuMjQxNDEgMTAuODk0IDQgMTIuMTA3NyA0IDEzLjMzMzNaJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFIn0sY29sb3JzOnt3aGl0ZToiI2ZmZmZmZmZm'@; put 'IixibGFjazoiIzAwMDAwMGZmIixwcmltYXJ5OnsxMDA6IiM2MTgwZmZmZiIsMjAwOiIjNTU3M2YwZmYiLDMwMDoiIzQ2NjlmNmZmIiw0MDA6IiMyZTU2ZmNmZiIsNTAwOiIjMWE0MmU4ZmYiLDYwMDoiIzE1MzViY2ZmIn0scGFsZXR0ZTp7NTA6IiNmN2Y3ZjlmZiIsMTAwOiIjZTdlN2U5ZmYi'@; put 'LDIwMDoiI2I5YjliYmZmIiwzMDA6IiNhM2EzYTNmZiIsNDAwOiIjNjg2OTZjZmYiLDUwMDoiIzQwNDE0NGZmIiw2MDA6IiMzMTMxMzJmZiIsNzAwOiIjMjgyODI5ZmYiLDgwMDoiIzIyMjIyMmZmIiw5MDA6IiMxZTFlMWZmZiIsOTUwOiIjMDUwNTA2ZmYifSx0cmFuc3BhcmVudDoiI2ZmZmZm'@; put 'ZjAwIn0sdG9rZW5zOntmb250RmFtaWx5OiJJbnRlciIsZm9udFNpemU6IjE0cHgiLGZvbnRTaXplU21hbGw6IjEycHgiLGxpbmVIZWlnaHQ6IjIwcHgiLGxpbmVIZWlnaHRTbWFsbDoiMThweCIsZm9udFdlaWdodDoiNDAwIixsZXR0ZXJTcGFjaW5nOiIwcHgiLGJvcmRlckNvbG9yOlsiY29s'@; put 'b3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0sYWNjZW50Q29sb3I6WyJjb2xvcnMucHJpbWFyeS41MDAiLCJjb2xvcnMucHJpbWFyeS4zMDAiXSxmb3JlZ3JvdW5kQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS44MDAiLCJjb2xvcnMucGFsZXR0ZS4yMDAiXSxmb3JlZ3JvdW5k'@; put 'U2Vjb25kYXJ5Q29sb3I6WyJjb2xvcnMucGFsZXR0ZS40MDAiLCJjb2xvcnMucGFsZXR0ZS4zMDAiXSxiYWNrZ3JvdW5kQ29sb3I6WyJjb2xvcnMud2hpdGUiLCJjb2xvcnMucGFsZXR0ZS45NTAiXSxiYWNrZ3JvdW5kU2Vjb25kYXJ5Q29sb3I6WyJjb2xvcnMucGFsZXR0ZS41MCIsImNvbG9y'@; put 'cy5wYWxldHRlLjkwMCJdLHBsYWNlaG9sZGVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4zMDAiLCJjb2xvcnMucGFsZXR0ZS40MDAiXSxyZWFkT25seUNvbG9yOlsiY29sb3JzLnBhbGV0dGUuNDAwIiwiY29sb3JzLnBhbGV0dGUuMzAwIl0sZGlzYWJsZWRDb2xvcjpbImNvbG9ycy5wYWxldHRl'@; put 'LjMwMCIsImNvbG9ycy5wYWxldHRlLjQwMCJdLGdhcFNpemU6ImRlbnNpdHkuZ2FwIixpY29uU2l6ZToic2l6aW5nLnNpemVfNCIsdGFibGVUcmFuc2l0aW9uOiIwLjE1cyIsYm9yZGVyUmFkaXVzOiJzaXppbmcuc2l6ZV8xIixiYXJGb3JlZ3JvdW5kQ29sb3I6InRva2Vucy5mb3JlZ3JvdW5k'@; put 'Q29sb3IiLGJhckJhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRTZWNvbmRhcnlDb2xvciIsYmFySG9yaXpvbnRhbFBhZGRpbmc6ImRlbnNpdHkuYmFyc0hvcml6b250YWwiLGJhclZlcnRpY2FsUGFkZGluZzoiZGVuc2l0eS5iYXJzVmVydGljYWwiLHNoYWRvd0NvbG9yOlsiY29s'@; put 'b3JzLnBhbGV0dGUuODAwIiwiY29sb3JzLnBhbGV0dGUuMjAwIl0sc2hhZG93WDoic2l6aW5nLnNpemVfMCIsc2hhZG93WToic2l6aW5nLnNpemVfMiIsc2hhZG93Qmx1cjoic2l6aW5nLnNpemVfNCIsc2hhZG93T3BhY2l0eToiOCUiLGNlbGxIb3Jpem9udGFsUGFkZGluZzoiZGVuc2l0eS5j'@; put 'ZWxsSG9yaXpvbnRhbCIsY2VsbFZlcnRpY2FsUGFkZGluZzoiZGVuc2l0eS5jZWxsVmVydGljYWwiLGNlbGxIb3Jpem9udGFsQm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJDb2xvciIsY2VsbFZlcnRpY2FsQm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJDb2xvciIsY2VsbFNlbGVjdGlvbkJv'@; put 'cmRlckNvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGNlbGxTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I6WyJjb2xvcnMucHJpbWFyeS40MDAiLCJjb2xvcnMucHJpbWFyeS4yMDAiXSxjZWxsU3VjY2Vzc0JhY2tncm91bmRDb2xvcjoiIzM3YmM2YzMzIixjZWxsRXJyb3JCYWNrZ3JvdW5kQ29s'@; put 'b3I6IiNmYTRkMzIzMyIsY2VsbFJlYWRPbmx5QmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYmFja2dyb3VuZFNlY29uZGFyeUNvbG9yIixjZWxsQXV0b2ZpbGxTaXplOiJzaXppbmcuc2l6ZV8xXzUiLGNlbGxBdXRvZmlsbEhpdEFyZWFTaXplOiJzaXppbmcuc2l6ZV8zIixjZWxsQXV0b2ZpbGxC'@; put 'b3JkZXJXaWR0aDoic2l6aW5nLnNpemVfMF8yNSIsY2VsbEF1dG9maWxsQm9yZGVyUmFkaXVzOiJzaXppbmcuc2l6ZV8xIixjZWxsQXV0b2ZpbGxCb3JkZXJDb2xvcjoidG9rZW5zLmJhY2tncm91bmRDb2xvciIsY2VsbEF1dG9maWxsQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYWNjZW50Q29s'@; put 'b3IiLGNlbGxBdXRvZmlsbEZpbGxCb3JkZXJDb2xvcjoidG9rZW5zLmZvcmVncm91bmRDb2xvciIsY2VsbEVkaXRvckJvcmRlcldpZHRoOiIycHgiLGNlbGxFZGl0b3JCb3JkZXJDb2xvcjoidG9rZW5zLmFjY2VudENvbG9yIixjZWxsRWRpdG9yRm9yZWdyb3VuZENvbG9yOlsiY29sb3JzLnBh'@; put 'bGV0dGUuOTUwIiwiY29sb3JzLndoaXRlIl0sY2VsbEVkaXRvckJhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRDb2xvciIsY2VsbEVkaXRvclNoYWRvd0JsdXJSYWRpdXM6IjBweCIsY2VsbEVkaXRvclNoYWRvd0NvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGNlbGxNb2JpbGVI'@; put 'YW5kbGVTaXplOiJzaXppbmcuc2l6ZV8zIixjZWxsTW9iaWxlSGFuZGxlQm9yZGVyV2lkdGg6InNpemluZy5zaXplXzBfMjUiLGNlbGxNb2JpbGVIYW5kbGVCb3JkZXJSYWRpdXM6InNpemluZy5zaXplXzMiLGNlbGxNb2JpbGVIYW5kbGVCb3JkZXJDb2xvcjoidG9rZW5zLmFjY2VudENvbG9y'@; put 'IixjZWxsTW9iaWxlSGFuZGxlQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGNlbGxNb2JpbGVIYW5kbGVCYWNrZ3JvdW5kT3BhY2l0eToiNDAlIixoZWFkZXJGb250V2VpZ2h0OiJ0b2tlbnMuZm9udFdlaWdodCIsaGVhZGVyRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuZm9y'@; put 'ZWdyb3VuZENvbG9yIixoZWFkZXJCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kU2Vjb25kYXJ5Q29sb3IiLGhlYWRlckhpZ2hsaWdodGVkU2hhZG93U2l6ZToiMHB4IixoZWFkZXJIaWdobGlnaHRlZEZvcmVncm91bmRDb2xvcjpbImNvbG9ycy5wYWxldHRlLjk1MCIsImNvbG9y'@; put 'cy53aGl0ZSJdLGhlYWRlckhpZ2hsaWdodGVkQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0saGVhZGVyQWN0aXZlQm9yZGVyQ29sb3I6WyJjb2xvcnMucHJpbWFyeS40MDAiLCJjb2xvcnMucHJpbWFyeS4yMDAiXSxoZWFkZXJBY3Rp'@; put 'dmVGb3JlZ3JvdW5kQ29sb3I6ImNvbG9ycy53aGl0ZSIsaGVhZGVyQWN0aXZlQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGhlYWRlckZpbHRlckJhY2tncm91bmRDb2xvcjoidG9rZW5zLmNlbGxTdWNjZXNzQmFja2dyb3VuZENvbG9yIixoZWFkZXJSb3dGb3JlZ3JvdW5k'@; put 'Q29sb3I6InRva2Vucy5mb3JlZ3JvdW5kQ29sb3IiLGhlYWRlclJvd0JhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRTZWNvbmRhcnlDb2xvciIsaGVhZGVyUm93SGlnaGxpZ2h0ZWRGb3JlZ3JvdW5kQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS45NTAiLCJjb2xvcnMud2hpdGUiXSxo'@; put 'ZWFkZXJSb3dIaWdobGlnaHRlZEJhY2tncm91bmRDb2xvcjpbImNvbG9ycy5wYWxldHRlLjEwMCIsImNvbG9ycy5wYWxldHRlLjcwMCJdLGhlYWRlclJvd0FjdGl2ZUZvcmVncm91bmRDb2xvcjoiY29sb3JzLndoaXRlIixoZWFkZXJSb3dBY3RpdmVCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5h'@; put 'Y2NlbnRDb2xvciIscm93SGVhZGVyT2RkQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuaGVhZGVyUm93QmFja2dyb3VuZENvbG9yIixyb3dIZWFkZXJFdmVuQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuaGVhZGVyUm93QmFja2dyb3VuZENvbG9yIixyb3dDZWxsT2RkQmFja2dyb3VuZENvbG9yOiJ0'@; put 'b2tlbnMuYmFja2dyb3VuZENvbG9yIixyb3dDZWxsRXZlbkJhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRDb2xvciIsYnV0dG9uQm9yZGVyUmFkaXVzOiJzaXppbmcuc2l6ZV8xIixidXR0b25Ib3Jpem9udGFsUGFkZGluZzoiZGVuc2l0eS5idXR0b25Ib3Jpem9udGFsIixidXR0'@; put 'b25WZXJ0aWNhbFBhZGRpbmc6ImRlbnNpdHkuYnV0dG9uVmVydGljYWwiLHByaW1hcnlCdXR0b25Cb3JkZXJDb2xvcjoiY29sb3JzLnRyYW5zcGFyZW50IixwcmltYXJ5QnV0dG9uRm9yZWdyb3VuZENvbG9yOiJjb2xvcnMud2hpdGUiLHByaW1hcnlCdXR0b25CYWNrZ3JvdW5kQ29sb3I6InRv'@; put 'a2Vucy5hY2NlbnRDb2xvciIscHJpbWFyeUJ1dHRvbkRpc2FibGVkQm9yZGVyQ29sb3I6ImNvbG9ycy50cmFuc3BhcmVudCIscHJpbWFyeUJ1dHRvbkRpc2FibGVkRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuZGlzYWJsZWRDb2xvciIscHJpbWFyeUJ1dHRvbkRpc2FibGVkQmFja2dyb3VuZENv'@; put 'bG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0scHJpbWFyeUJ1dHRvbkhvdmVyQm9yZGVyQ29sb3I6ImNvbG9ycy50cmFuc3BhcmVudCIscHJpbWFyeUJ1dHRvbkhvdmVyRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuYmFja2dyb3VuZENvbG9yIixwcmltYXJ5'@; put 'QnV0dG9uSG92ZXJCYWNrZ3JvdW5kQ29sb3I6WyJjb2xvcnMucHJpbWFyeS42MDAiLCJjb2xvcnMucHJpbWFyeS4xMDAiXSxwcmltYXJ5QnV0dG9uRm9jdXNCb3JkZXJDb2xvcjoidG9rZW5zLmJhY2tncm91bmRDb2xvciIscHJpbWFyeUJ1dHRvbkZvY3VzRm9yZWdyb3VuZENvbG9yOiJ0b2tl'@; put 'bnMuYmFja2dyb3VuZENvbG9yIixwcmltYXJ5QnV0dG9uRm9jdXNCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5hY2NlbnRDb2xvciIsc2Vjb25kYXJ5QnV0dG9uQm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJDb2xvciIsc2Vjb25kYXJ5QnV0dG9uRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuZm9y'@; put 'ZWdyb3VuZENvbG9yIixzZWNvbmRhcnlCdXR0b25CYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLHNlY29uZGFyeUJ1dHRvbkRpc2FibGVkQm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJDb2xvciIsc2Vjb25kYXJ5QnV0dG9uRGlzYWJsZWRGb3JlZ3JvdW5kQ29sb3I6'@; put 'InRva2Vucy5kaXNhYmxlZENvbG9yIixzZWNvbmRhcnlCdXR0b25EaXNhYmxlZEJhY2tncm91bmRDb2xvcjpbImNvbG9ycy5wYWxldHRlLjEwMCIsImNvbG9ycy5wYWxldHRlLjcwMCJdLHNlY29uZGFyeUJ1dHRvbkhvdmVyQm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJDb2xvciIsc2Vjb25k'@; put 'YXJ5QnV0dG9uSG92ZXJGb3JlZ3JvdW5kQ29sb3I6InRva2Vucy5mb3JlZ3JvdW5kQ29sb3IiLHNlY29uZGFyeUJ1dHRvbkhvdmVyQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0sc2Vjb25kYXJ5QnV0dG9uRm9jdXNCb3JkZXJDb2xv'@; put 'cjoidG9rZW5zLmJvcmRlckNvbG9yIixzZWNvbmRhcnlCdXR0b25Gb2N1c0ZvcmVncm91bmRDb2xvcjoidG9rZW5zLmZvcmVncm91bmRDb2xvciIsc2Vjb25kYXJ5QnV0dG9uRm9jdXNCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLGljb25CdXR0b25Cb3JkZXJSYWRp'@; put 'dXM6InNpemluZy5zaXplXzBfNSIsaWNvbkJ1dHRvbkxhcmdlQm9yZGVyUmFkaXVzOiJzaXppbmcuc2l6ZV8xIixpY29uQnV0dG9uTGFyZ2VQYWRkaW5nOiJzaXppbmcuc2l6ZV8xIixpY29uQnV0dG9uQm9yZGVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS41MCIsImNvbG9ycy5wYWxldHRlLjkw'@; put 'MCJdLGljb25CdXR0b25CYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kU2Vjb25kYXJ5Q29sb3IiLGljb25CdXR0b25JY29uQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4zMDAiLCJjb2xvcnMucGFsZXR0ZS40MDAiXSxpY29uQnV0dG9uSGl0QXJlYVNpemU6InNpemluZy5zaXplXzYi'@; put 'LGljb25CdXR0b25Ib3ZlckJvcmRlckNvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0saWNvbkJ1dHRvbkhvdmVyQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0saWNvbkJ1dHRvbkhvdmVySWNv'@; put 'bkNvbG9yOlsiY29sb3JzLnBhbGV0dGUuMzAwIiwiY29sb3JzLnBhbGV0dGUuNDAwIl0saWNvbkJ1dHRvbkFjdGl2ZUJvcmRlckNvbG9yOlsiY29sb3JzLnByaW1hcnkuNDAwIiwiY29sb3JzLnByaW1hcnkuMjAwIl0saWNvbkJ1dHRvbkFjdGl2ZUJhY2tncm91bmRDb2xvcjoidG9rZW5zLmFj'@; put 'Y2VudENvbG9yIixpY29uQnV0dG9uQWN0aXZlSWNvbkNvbG9yOiJjb2xvcnMud2hpdGUiLGljb25CdXR0b25BY3RpdmVIb3ZlckJvcmRlckNvbG9yOlsiY29sb3JzLnByaW1hcnkuNDAwIiwiY29sb3JzLnByaW1hcnkuMjAwIl0saWNvbkJ1dHRvbkFjdGl2ZUhvdmVyQmFja2dyb3VuZENvbG9y'@; put 'OlsiY29sb3JzLnByaW1hcnkuNDAwIiwiY29sb3JzLnByaW1hcnkuMjAwIl0saWNvbkJ1dHRvbkFjdGl2ZUhvdmVySWNvbkNvbG9yOiJjb2xvcnMud2hpdGUiLGNvbGxhcHNlQnV0dG9uQm9yZGVyUmFkaXVzOiJzaXppbmcuc2l6ZV8xIixjb2xsYXBzZUJ1dHRvbk9wZW5Cb3JkZXJDb2xvcjpb'@; put 'ImNvbG9ycy5wYWxldHRlLjIwMCIsImNvbG9ycy5wYWxldHRlLjUwMCJdLGNvbGxhcHNlQnV0dG9uT3BlbkJhY2tncm91bmRDb2xvcjpbImNvbG9ycy53aGl0ZSIsImNvbG9ycy5wYWxldHRlLjk1MCJdLGNvbGxhcHNlQnV0dG9uT3Blbkljb25Db2xvcjpbImNvbG9ycy5wYWxldHRlLjQwMCIs'@; put 'ImNvbG9ycy5wYWxldHRlLjMwMCJdLGNvbGxhcHNlQnV0dG9uT3Blbkljb25BY3RpdmVDb2xvcjpbImNvbG9ycy5wYWxldHRlLjQwMCIsImNvbG9ycy5wYWxldHRlLjMwMCJdLGNvbGxhcHNlQnV0dG9uT3BlbkhvdmVyQm9yZGVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4yMDAiLCJjb2xvcnMu'@; put 'cGFsZXR0ZS41MDAiXSxjb2xsYXBzZUJ1dHRvbk9wZW5Ib3ZlckJhY2tncm91bmRDb2xvcjpbImNvbG9ycy5wYWxldHRlLjUwIiwiY29sb3JzLnBhbGV0dGUuOTAwIl0sY29sbGFwc2VCdXR0b25PcGVuSG92ZXJJY29uQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS40MDAiLCJjb2xvcnMucGFsZXR0'@; put 'ZS4zMDAiXSxjb2xsYXBzZUJ1dHRvbk9wZW5Ib3Zlckljb25BY3RpdmVDb2xvcjpbImNvbG9ycy5wYWxldHRlLjQwMCIsImNvbG9ycy5wYWxldHRlLjMwMCJdLGNvbGxhcHNlQnV0dG9uQ2xvc2VCb3JkZXJDb2xvcjpbImNvbG9ycy5wYWxldHRlLjIwMCIsImNvbG9ycy5wYWxldHRlLjUwMCJd'@; put 'LGNvbGxhcHNlQnV0dG9uQ2xvc2VCYWNrZ3JvdW5kQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4xMDAiLCJjb2xvcnMucGFsZXR0ZS43MDAiXSxjb2xsYXBzZUJ1dHRvbkNsb3NlSWNvbkNvbG9yOlsiY29sb3JzLnBhbGV0dGUuNDAwIiwiY29sb3JzLnBhbGV0dGUuMzAwIl0sY29sbGFwc2VCdXR0'@; put 'b25DbG9zZUljb25BY3RpdmVDb2xvcjpbImNvbG9ycy5wYWxldHRlLjQwMCIsImNvbG9ycy5wYWxldHRlLjMwMCJdLGNvbGxhcHNlQnV0dG9uQ2xvc2VIb3ZlckJvcmRlckNvbG9yOlsiY29sb3JzLnBhbGV0dGUuMjAwIiwiY29sb3JzLnBhbGV0dGUuNTAwIl0sY29sbGFwc2VCdXR0b25DbG9z'@; put 'ZUhvdmVyQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0sY29sbGFwc2VCdXR0b25DbG9zZUhvdmVySWNvbkNvbG9yOlsiY29sb3JzLnBhbGV0dGUuNDAwIiwiY29sb3JzLnBhbGV0dGUuMzAwIl0sY29sbGFwc2VCdXR0b25DbG9zZUhv'@; put 'dmVySWNvbkFjdGl2ZUNvbG9yOlsiY29sb3JzLnBhbGV0dGUuNDAwIiwiY29sb3JzLnBhbGV0dGUuMzAwIl0sbGlua0NvbG9yOlsiY29sb3JzLnByaW1hcnkuNjAwIiwiY29sb3JzLnByaW1hcnkuMTAwIl0sbGlua0hvdmVyQ29sb3I6InRva2Vucy5hY2NlbnRDb2xvciIsaW5wdXRCb3JkZXJX'@; put 'aWR0aDoiMXB4IixpbnB1dEJvcmRlclJhZGl1czoic2l6aW5nLnNpemVfMSIsaW5wdXRIb3Jpem9udGFsUGFkZGluZzoiZGVuc2l0eS5pbnB1dEhvcml6b250YWwiLGlucHV0VmVydGljYWxQYWRkaW5nOiJkZW5zaXR5LmlucHV0VmVydGljYWwiLGlucHV0Qm9yZGVyQ29sb3I6InRva2Vucy5i'@; put 'b3JkZXJDb2xvciIsaW5wdXRGb3JlZ3JvdW5kQ29sb3I6InRva2Vucy5mb3JlZ3JvdW5kQ29sb3IiLGlucHV0QmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYmFja2dyb3VuZFNlY29uZGFyeUNvbG9yIixpbnB1dEhvdmVyQm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJDb2xvciIsaW5wdXRIb3Zl'@; put 'ckZvcmVncm91bmRDb2xvcjoidG9rZW5zLmZvcmVncm91bmRDb2xvciIsaW5wdXRIb3ZlckJhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRDb2xvciIsaW5wdXREaXNhYmxlZEJvcmRlckNvbG9yOiJ0b2tlbnMuYm9yZGVyQ29sb3IiLGlucHV0RGlzYWJsZWRGb3JlZ3JvdW5kQ29s'@; put 'b3I6InRva2Vucy5kaXNhYmxlZENvbG9yIixpbnB1dERpc2FibGVkQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMjAwIiwiY29sb3JzLnBhbGV0dGUuNTAwIl0saW5wdXRGb2N1c0JvcmRlckNvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGlucHV0Rm9jdXNGb3JlZ3JvdW5kQ29s'@; put 'b3I6InRva2Vucy5mb3JlZ3JvdW5kQ29sb3IiLGlucHV0Rm9jdXNCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLGNoZWNrYm94U2l6ZToidG9rZW5zLmljb25TaXplIixjaGVja2JveEJvcmRlclJhZGl1czoic2l6aW5nLnNpemVfMSIsY2hlY2tib3hCb3JkZXJDb2xv'@; put 'cjpbImNvbG9ycy5wYWxldHRlLjIwMCIsImNvbG9ycy5wYWxldHRlLjUwMCJdLGNoZWNrYm94QmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYmFja2dyb3VuZENvbG9yIixjaGVja2JveEljb25Db2xvcjoiY29sb3JzLnRyYW5zcGFyZW50IixjaGVja2JveEZvY3VzQm9yZGVyQ29sb3I6WyJjb2xv'@; put 'cnMucGFsZXR0ZS4yMDAiLCJjb2xvcnMucGFsZXR0ZS41MDAiXSxjaGVja2JveEZvY3VzQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYmFja2dyb3VuZENvbG9yIixjaGVja2JveEZvY3VzSWNvbkNvbG9yOiJjb2xvcnMudHJhbnNwYXJlbnQiLGNoZWNrYm94Rm9jdXNSaW5nQ29sb3I6InRva2Vu'@; put 'cy5hY2NlbnRDb2xvciIsY2hlY2tib3hEaXNhYmxlZEJvcmRlckNvbG9yOlsiY29sb3JzLnBhbGV0dGUuMjAwIiwiY29sb3JzLnBhbGV0dGUuNTAwIl0sY2hlY2tib3hEaXNhYmxlZEJhY2tncm91bmRDb2xvcjpbImNvbG9ycy5wYWxldHRlLjEwMCIsImNvbG9ycy5wYWxldHRlLjcwMCJdLGNo'@; put 'ZWNrYm94RGlzYWJsZWRJY29uQ29sb3I6ImNvbG9ycy50cmFuc3BhcmVudCIsY2hlY2tib3hDaGVja2VkQm9yZGVyQ29sb3I6WyJjb2xvcnMucHJpbWFyeS40MDAiLCJjb2xvcnMucHJpbWFyeS4yMDAiXSxjaGVja2JveENoZWNrZWRCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5hY2NlbnRDb2xv'@; put 'ciIsY2hlY2tib3hDaGVja2VkSWNvbkNvbG9yOiJjb2xvcnMud2hpdGUiLGNoZWNrYm94Q2hlY2tlZEZvY3VzQm9yZGVyQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLGNoZWNrYm94Q2hlY2tlZEZvY3VzQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGNoZWNrYm94'@; put 'Q2hlY2tlZEZvY3VzSWNvbkNvbG9yOiJjb2xvcnMud2hpdGUiLGNoZWNrYm94Q2hlY2tlZERpc2FibGVkQm9yZGVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4yMDAiLCJjb2xvcnMucGFsZXR0ZS41MDAiXSxjaGVja2JveENoZWNrZWREaXNhYmxlZEJhY2tncm91bmRDb2xvcjpbImNvbG9ycy5w'@; put 'YWxldHRlLjEwMCIsImNvbG9ycy5wYWxldHRlLjcwMCJdLGNoZWNrYm94Q2hlY2tlZERpc2FibGVkSWNvbkNvbG9yOiJ0b2tlbnMuZGlzYWJsZWRDb2xvciIsY2hlY2tib3hJbmRldGVybWluYXRlQm9yZGVyQ29sb3I6WyJjb2xvcnMucHJpbWFyeS40MDAiLCJjb2xvcnMucHJpbWFyeS4yMDAi'@; put 'XSxjaGVja2JveEluZGV0ZXJtaW5hdGVCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5hY2NlbnRDb2xvciIsY2hlY2tib3hJbmRldGVybWluYXRlSWNvbkNvbG9yOiJjb2xvcnMud2hpdGUiLGNoZWNrYm94SW5kZXRlcm1pbmF0ZUZvY3VzQm9yZGVyQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29s'@; put 'b3IiLGNoZWNrYm94SW5kZXRlcm1pbmF0ZUZvY3VzQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGNoZWNrYm94SW5kZXRlcm1pbmF0ZUZvY3VzSWNvbkNvbG9yOiJjb2xvcnMud2hpdGUiLGNoZWNrYm94SW5kZXRlcm1pbmF0ZURpc2FibGVkQm9yZGVyQ29sb3I6WyJjb2xv'@; put 'cnMucGFsZXR0ZS4yMDAiLCJjb2xvcnMucGFsZXR0ZS42MDAiXSxjaGVja2JveEluZGV0ZXJtaW5hdGVEaXNhYmxlZEJhY2tncm91bmRDb2xvcjpbImNvbG9ycy5wYWxldHRlLjIwMCIsImNvbG9ycy5wYWxldHRlLjUwMCJdLGNoZWNrYm94SW5kZXRlcm1pbmF0ZURpc2FibGVkSWNvbkNvbG9y'@; put 'OiJ0b2tlbnMuZGlzYWJsZWRDb2xvciIscmFkaW9TaXplOiJ0b2tlbnMuaWNvblNpemUiLHJhZGlvQm9yZGVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4yMDAiLCJjb2xvcnMucGFsZXR0ZS41MDAiXSxyYWRpb0JhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRDb2xvciIscmFkaW9J'@; put 'Y29uQ29sb3I6ImNvbG9ycy50cmFuc3BhcmVudCIscmFkaW9Gb2N1c0JvcmRlckNvbG9yOiJ0b2tlbnMuYm9yZGVyQ29sb3IiLHJhZGlvRm9jdXNCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLHJhZGlvRm9jdXNJY29uQ29sb3I6ImNvbG9ycy50cmFuc3BhcmVudCIs'@; put 'cmFkaW9Gb2N1c1JpbmdDb2xvcjoidG9rZW5zLmFjY2VudENvbG9yIixyYWRpb0Rpc2FibGVkQm9yZGVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4yMDAiLCJjb2xvcnMucGFsZXR0ZS41MDAiXSxyYWRpb0Rpc2FibGVkQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29s'@; put 'b3JzLnBhbGV0dGUuNzAwIl0scmFkaW9EaXNhYmxlZEljb25Db2xvcjoiY29sb3JzLnRyYW5zcGFyZW50IixyYWRpb0NoZWNrZWRCb3JkZXJDb2xvcjoidG9rZW5zLmFjY2VudENvbG9yIixyYWRpb0NoZWNrZWRCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLHJhZGlv'@; put 'Q2hlY2tlZEljb25Db2xvcjoidG9rZW5zLmFjY2VudENvbG9yIixyYWRpb0NoZWNrZWRGb2N1c0JvcmRlckNvbG9yOlsiY29sb3JzLnByaW1hcnkuNDAwIiwiY29sb3JzLnByaW1hcnkuMjAwIl0scmFkaW9DaGVja2VkRm9jdXNCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29s'@; put 'b3IiLHJhZGlvQ2hlY2tlZEZvY3VzSWNvbkNvbG9yOlsiY29sb3JzLnByaW1hcnkuNDAwIiwiY29sb3JzLnByaW1hcnkuMjAwIl0scmFkaW9DaGVja2VkRGlzYWJsZWRCb3JkZXJDb2xvcjpbImNvbG9ycy5wYWxldHRlLjIwMCIsImNvbG9ycy5wYWxldHRlLjUwMCJdLHJhZGlvQ2hlY2tlZERp'@; put 'c2FibGVkQmFja2dyb3VuZENvbG9yOlsiY29sb3JzLnBhbGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0scmFkaW9DaGVja2VkRGlzYWJsZWRJY29uQ29sb3I6InRva2Vucy5kaXNhYmxlZENvbG9yIixtb3ZlQmFja2xpZ2h0Q29sb3I6WyJjb2xvcnMucGFsZXR0ZS44MDAiLCJjb2xv'@; put 'cnMucGFsZXR0ZS4yMDAiXSxtb3ZlQmFja2xpZ2h0T3BhY2l0eToiOCUiLG1vdmVJbmRpY2F0b3JDb2xvcjoidG9rZW5zLmFjY2VudENvbG9yIixyZXNpemVJbmRpY2F0b3JDb2xvcjpbImNvbG9ycy5wYWxldHRlLjMwMCIsImNvbG9ycy5wYWxldHRlLjQwMCJdLGhpZGRlbkluZGljYXRvckNv'@; put 'bG9yOlsiY29sb3JzLnBhbGV0dGUuMzAwIiwiY29sb3JzLnBhbGV0dGUuNDAwIl0sbWVudUJvcmRlcldpZHRoOiIxcHgiLG1lbnVCb3JkZXJSYWRpdXM6InNpemluZy5zaXplXzEiLG1lbnVIb3Jpem9udGFsUGFkZGluZzoiZGVuc2l0eS5tZW51SG9yaXpvbnRhbCIsbWVudVZlcnRpY2FsUGFk'@; put 'ZGluZzoiZGVuc2l0eS5tZW51VmVydGljYWwiLG1lbnVJdGVtSG9yaXpvbnRhbFBhZGRpbmc6ImRlbnNpdHkubWVudUl0ZW1Ib3Jpem9udGFsIixtZW51SXRlbVZlcnRpY2FsUGFkZGluZzoiZGVuc2l0eS5tZW51SXRlbVZlcnRpY2FsIixtZW51Qm9yZGVyQ29sb3I6InRva2Vucy5ib3JkZXJD'@; put 'b2xvciIsbWVudVNoYWRvd1g6InRva2Vucy5zaGFkb3dYIixtZW51U2hhZG93WToidG9rZW5zLnNoYWRvd1kiLG1lbnVTaGFkb3dCbHVyOiJ0b2tlbnMuc2hhZG93Qmx1ciIsbWVudVNoYWRvd0NvbG9yOlsiY29sb3JzLnBhbGV0dGUuOTUwIiwiY29sb3JzLndoaXRlIl0sbWVudVNoYWRvd09w'@; put 'YWNpdHk6IjglIixtZW51SXRlbUhvdmVyQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS44MDAiLCJjb2xvcnMucGFsZXR0ZS4yMDAiXSxtZW51SXRlbUhvdmVyQ29sb3JPcGFjaXR5OiI0JSIsbWVudUl0ZW1BY3RpdmVDb2xvcjoidG9rZW5zLmFjY2VudENvbG9yIixtZW51SXRlbUFjdGl2ZUNvbG9y'@; put 'T3BhY2l0eToiOCUiLGNvbW1lbnRzVGV4dGFyZWFIb3Jpem9udGFsUGFkZGluZzoiZGVuc2l0eS5jZWxsSG9yaXpvbnRhbCIsY29tbWVudHNUZXh0YXJlYVZlcnRpY2FsUGFkZGluZzoiZGVuc2l0eS5jZWxsVmVydGljYWwiLGNvbW1lbnRzVGV4dGFyZWFCb3JkZXJXaWR0aDoiMXB4Iixjb21t'@; put 'ZW50c1RleHRhcmVhQm9yZGVyQ29sb3I6ImNvbG9ycy50cmFuc3BhcmVudCIsY29tbWVudHNUZXh0YXJlYUZvcmVncm91bmRDb2xvcjoidG9rZW5zLmZvcmVncm91bmRDb2xvciIsY29tbWVudHNUZXh0YXJlYUJhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRTZWNvbmRhcnlDb2xv'@; put 'ciIsY29tbWVudHNUZXh0YXJlYUZvY3VzQm9yZGVyV2lkdGg6IjFweCIsY29tbWVudHNUZXh0YXJlYUZvY3VzQm9yZGVyQ29sb3I6InRva2Vucy5hY2NlbnRDb2xvciIsY29tbWVudHNUZXh0YXJlYUZvY3VzRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuZm9yZWdyb3VuZENvbG9yIixjb21tZW50'@; put 'c1RleHRhcmVhRm9jdXNCYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLGNvbW1lbnRzSW5kaWNhdG9yU2l6ZToic2l6aW5nLnNpemVfMV81Iixjb21tZW50c0luZGljYXRvckNvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLGxpY2Vuc2VIb3Jpem9udGFsUGFkZGluZzoi'@; put 'dG9rZW5zLmJhckhvcml6b250YWxQYWRkaW5nIixsaWNlbnNlVmVydGljYWxQYWRkaW5nOiJ0b2tlbnMuYmFyVmVydGljYWxQYWRkaW5nIixsaWNlbnNlRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuYmFyRm9yZWdyb3VuZENvbG9yIixsaWNlbnNlQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYmFy'@; put 'QmFja2dyb3VuZENvbG9yIixwYWdpbmF0aW9uQmFyRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuYmFyRm9yZWdyb3VuZENvbG9yIixwYWdpbmF0aW9uQmFyQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMuYmFyQmFja2dyb3VuZENvbG9yIixwYWdpbmF0aW9uQmFySG9yaXpvbnRhbFBhZGRpbmc6InRv'@; put 'a2Vucy5iYXJIb3Jpem9udGFsUGFkZGluZyIscGFnaW5hdGlvbkJhclZlcnRpY2FsUGFkZGluZzoidG9rZW5zLmJhclZlcnRpY2FsUGFkZGluZyIscGFnaW5hdGlvbkJ1dHRvbkJvcmRlckNvbG9yOiJ0b2tlbnMucGFnaW5hdGlvbkJhckJhY2tncm91bmRDb2xvciIscGFnaW5hdGlvbkJ1dHRv'@; put 'bkZvcmVncm91bmRDb2xvcjoidG9rZW5zLmZvcmVncm91bmRTZWNvbmRhcnlDb2xvciIscGFnaW5hdGlvbkJ1dHRvbkJhY2tncm91bmRDb2xvcjoidG9rZW5zLnBhZ2luYXRpb25CYXJCYWNrZ3JvdW5kQ29sb3IiLHBhZ2luYXRpb25CdXR0b25Ib3ZlckJvcmRlckNvbG9yOlsiY29sb3JzLnBh'@; put 'bGV0dGUuMTAwIiwiY29sb3JzLnBhbGV0dGUuNzAwIl0scGFnaW5hdGlvbkJ1dHRvbkhvdmVyRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuZm9yZWdyb3VuZENvbG9yIixwYWdpbmF0aW9uQnV0dG9uSG92ZXJCYWNrZ3JvdW5kQ29sb3I6WyJjb2xvcnMucGFsZXR0ZS4xMDAiLCJjb2xvcnMucGFs'@; put 'ZXR0ZS43MDAiXSxwYWdpbmF0aW9uQnV0dG9uRGlzYWJsZWRCb3JkZXJDb2xvcjoidG9rZW5zLnBhZ2luYXRpb25CYXJCYWNrZ3JvdW5kQ29sb3IiLHBhZ2luYXRpb25CdXR0b25EaXNhYmxlZEZvcmVncm91bmRDb2xvcjoidG9rZW5zLmRpc2FibGVkQ29sb3IiLHBhZ2luYXRpb25CdXR0b25E'@; put 'aXNhYmxlZEJhY2tncm91bmRDb2xvcjoidG9rZW5zLnBhZ2luYXRpb25CYXJCYWNrZ3JvdW5kQ29sb3IiLHBhZ2luYXRpb25CdXR0b25Gb2N1c0JvcmRlckNvbG9yOiJ0b2tlbnMuYWNjZW50Q29sb3IiLHBhZ2luYXRpb25CdXR0b25Gb2N1c0ZvcmVncm91bmRDb2xvcjoidG9rZW5zLmZvcmVn'@; put 'cm91bmRDb2xvciIscGFnaW5hdGlvbkJ1dHRvbkZvY3VzQmFja2dyb3VuZENvbG9yOiJ0b2tlbnMucGFnaW5hdGlvbkJhckJhY2tncm91bmRDb2xvciIsZGlhbG9nU2VtaVRyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yOlsiY29sb3JzLndoaXRlIiwiY29sb3JzLnBhbGV0dGUuOTUwIl0sZGlh'@; put 'bG9nU2VtaVRyYW5zcGFyZW50QmFja2dyb3VuZE9wYWNpdHk6IjgwJSIsZGlhbG9nU29saWRCYWNrZ3JvdW5kQ29sb3I6WyJjb2xvcnMud2hpdGUiLCJjb2xvcnMucGFsZXR0ZS45NTAiXSxkaWFsb2dDb250ZW50UGFkZGluZ0hvcml6b250YWw6ImRlbnNpdHkuZGlhbG9nSG9yaXpvbnRhbCIs'@; put 'ZGlhbG9nQ29udGVudFBhZGRpbmdWZXJ0aWNhbDoiZGVuc2l0eS5kaWFsb2dWZXJ0aWNhbCIsZGlhbG9nQ29udGVudEJvcmRlclJhZGl1czoic2l6aW5nLnNpemVfMiIsZGlhbG9nQ29udGVudEJhY2tncm91bmRDb2xvcjoidG9rZW5zLmJhY2tncm91bmRTZWNvbmRhcnlDb2xvciIsbm90aWZp'@; put 'Y2F0aW9uRm9yZWdyb3VuZENvbG9yOiJ0b2tlbnMuZm9yZWdyb3VuZENvbG9yIixub3RpZmljYXRpb25CYWNrZ3JvdW5kQ29sb3I6InRva2Vucy5iYWNrZ3JvdW5kQ29sb3IiLG5vdGlmaWNhdGlvbkJvcmRlckNvbG9yOiJ0b2tlbnMuYmFja2dyb3VuZENvbG9yIixub3RpZmljYXRpb25TdWNj'@; put 'ZXNzQWNjZW50OiIjMzdiYzZjZmYiLG5vdGlmaWNhdGlvbldhcm5pbmdBY2NlbnQ6IiNmYmU5NTJmZiIsbm90aWZpY2F0aW9uRXJyb3JBY2NlbnQ6IiNmYTRkMzJmZiIsY2hpcEJhY2tncm91bmQ6InRva2Vucy5iYWNrZ3JvdW5kU2Vjb25kYXJ5Q29sb3IiLGNoaXBCb3JkZXJSYWRpdXM6InNp'@; put 'emluZy5zaXplXzBfNSIsY2hpcFZlcnRpY2FsUGFkZGluZzoic2l6aW5nLnNpemVfMCIsY2hpcEhvcml6b250YWxQYWRkaW5nOiJzaXppbmcuc2l6ZV8wXzUiLGNoaXBHYXA6InNpemluZy5zaXplXzEiLHNjcm9sbGJhckJvcmRlclJhZGl1czoic2l6aW5nLnNpemVfMiIsc2Nyb2xsYmFyVHJh'@; put 'Y2tDb2xvcjoidG9rZW5zLmJhY2tncm91bmRTZWNvbmRhcnlDb2xvciIsc2Nyb2xsYmFyVGh1bWJDb2xvcjpbImNvbG9ycy5wYWxldHRlLjMwMCIsImNvbG9ycy5wYWxldHRlLjQwMCJdfX07bGV0IElkZT1udWxsO2Z1bmN0aW9uIFNEZShuKXtpZigwPT09bi5sZW5ndGgpcmV0dXJuW107Y29u'@; put 'c3QgZT1bLi4ubl07cmV0dXJuIGUuc29ydCgoW3JdLFtpXSk9PnI9PT1pPzA6cj5pPzE6LTEpLG0xKGUsKHIsW2ksb10pPT57Y29uc3QgYT1yW3IubGVuZ3RoLTFdLFtsLHVdPWEsZz1sK3U7aWYoaTw9Zyl7Y29uc3QgRT1NYXRoLm1heChvLShnLWkpLDApO2FbMV0rPUV9ZWxzZSByLnB1c2go'@; put 'W2ksb10pO3JldHVybiByfSxbZVswXV0pfWNvbnN0IERkZT1uZXcgTWFwO2Z1bmN0aW9uIE1UKG4sZSx0LHIsaSxvLGEpe2NvbnN0IGw9YS5hcmlhVGFncyx1PVtdLGc9W10sRT1bXSxPPVtdO2EuX2lzQmFzZVJlbmRlcmVyQ2FsbGVkPSEwLGEuY2xhc3NOYW1lJiZZcihlLGEuY2xhc3NOYW1l'@; put 'KSxhLnJlYWRPbmx5Pyh1LnB1c2goYS5yZWFkT25seUNlbGxDbGFzc05hbWUpLGwmJk8ucHVzaChbImFyaWEtcmVhZG9ubHkiLCJ0cnVlIl0pKTpsJiZFLnB1c2goImFyaWEtcmVhZG9ubHkiKSwhMT09PWEudmFsaWQmJmEuaW52YWxpZENlbGxDbGFzc05hbWU/KHUucHVzaChhLmludmFsaWRD'@; put 'ZWxsQ2xhc3NOYW1lKSxsJiZPLnB1c2goWyJhcmlhLWludmFsaWQiLCJ0cnVlIl0pKTooZy5wdXNoKGEuaW52YWxpZENlbGxDbGFzc05hbWUpLGwmJkUucHVzaCgiYXJpYS1pbnZhbGlkIikpLCExPT09YS53b3JkV3JhcCYmYS5ub1dvcmRXcmFwQ2xhc3NOYW1lJiZ1LnB1c2goYS5ub1dvcmRX'@; put 'cmFwQ2xhc3NOYW1lKSxBbChvKSYmYS5wbGFjZWhvbGRlciYmdS5wdXNoKGEucGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lKSxhLnRleHRFbGxpcHNpcyYmdS5wdXNoKCJodFRleHRFbGxpcHNpcyIpLGtvKGUsZyksWXIoZSx1KSx3NChlLEUpLEtvKGUsTyl9ZnVuY3Rpb24gRURlKG4sZSx0KXtu'@; put 'LmFkZEV2ZW50TGlzdGVuZXIoZSx0LCExKX1mdW5jdGlvbiBNRGUobixlLHQpe24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQsITEpfWZ1bmN0aW9uIGhaKG4pe3JldHVybiBuLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShuKX1mdW5jdGlvbiBURGUobixlPXt9'@; put 'KXtjb25zdCB0PXttaW5IZWlnaHQ6MjAwLG1heEhlaWdodDozMDAsbWluV2lkdGg6MTAwLG1heFdpZHRoOjMwMCx0ZXh0Q29udGVudDpaPT5aLnZhbHVlLC4uLmV9LHI9bi5ib2R5LGk9bi5jcmVhdGVUZXh0Tm9kZSgiIiksbz1uLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtsZXQgYTtmdW5jdGlv'@; put 'biBsKCl7aS50ZXh0Q29udGVudD10LnRleHRDb250ZW50KGEpLG8uc3R5bGUucG9zaXRpb249ImFic29sdXRlIixvLnN0eWxlLmZvbnRTaXplPWhaKGEpLmZvbnRTaXplLG8uc3R5bGUuZm9udEZhbWlseT1oWihhKS5mb250RmFtaWx5LG8uc3R5bGUud2hpdGVTcGFjZT0icHJlIixyLmFwcGVu'@; put 'ZENoaWxkKG8pO2NvbnN0IFo9TnVtYmVyLnBhcnNlSW50KGhaKGEpPy5wYWRkaW5nSW5saW5lU3RhcnR8fCIwIiwxMCksZWU9TnVtYmVyLnBhcnNlSW50KGhaKGEpPy5wYWRkaW5nSW5saW5lRW5kfHwiMCIsMTApLHZlPW8uY2xpZW50V2lkdGgrWitlZSsxO3IucmVtb3ZlQ2hpbGQobyk7Y29u'@; put 'c3QgTWU9YS5zdHlsZTtNZS5oZWlnaHQ9YCR7dC5taW5IZWlnaHR9cHhgLE1lLndpZHRoPXQubWluV2lkdGg+dmU/YCR7dC5taW5XaWR0aH1weGA6dmU+dC5tYXhXaWR0aD9gJHt0Lm1heFdpZHRofXB4YDpgJHt2ZX1weGA7Y29uc3QgSGU9YS5zY3JvbGxIZWlnaHQ/YS5zY3JvbGxIZWlnaHQt'@; put 'MTowO3QubWluSGVpZ2h0PkhlP01lLmhlaWdodD1gJHt0Lm1pbkhlaWdodH1weGA6dC5tYXhIZWlnaHQ8SGU/KE1lLmhlaWdodD1gJHt0Lm1heEhlaWdodH1weGAsTWUub3ZlcmZsb3dZPSJ2aXNpYmxlIik6TWUuaGVpZ2h0PWAke0hlfXB4YH1mdW5jdGlvbiB1KCl7bi5kZWZhdWx0Vmlldy5z'@; put 'ZXRUaW1lb3V0KGwsMCl9ZnVuY3Rpb24gZyhaLGVlKXtpZigiaW5oZXJpdCI9PT1aKXJldHVybiBlZTtjb25zdCB2ZT1OdW1iZXIucGFyc2VJbnQoU3RyaW5nKFopLDEwKTtyZXR1cm4gaXNOYU4odmUpP3ZvaWQgMDp2ZX1yZXR1cm57aW5pdDpmdW5jdGlvbiBPKFosZWUsdmU9ITEpe2E9Wixm'@; put 'dW5jdGlvbiBFKFope2lmKFomJloubWluSGVpZ2h0KXtjb25zdCBlZT1nKFoubWluSGVpZ2h0LGEuY2xpZW50SGVpZ2h0KTt2b2lkIDAhPT1lZSYmKHQubWluSGVpZ2h0PWVlKX1pZihaJiZaLm1heEhlaWdodCl7Y29uc3QgZWU9ZyhaLm1heEhlaWdodCxhLmNsaWVudEhlaWdodCk7dm9pZCAw'@; put 'IT09ZWUmJih0Lm1heEhlaWdodD1lZSl9aWYoWiYmWi5taW5XaWR0aCl7Y29uc3QgZWU9ZyhaLm1pbldpZHRoLGEuY2xpZW50V2lkdGgpO3ZvaWQgMCE9PWVlJiYodC5taW5XaWR0aD1lZSl9aWYoWiYmWi5tYXhXaWR0aCl7Y29uc3QgZWU9ZyhaLm1heFdpZHRoLGEuY2xpZW50V2lkdGgpO3Zv'@; put 'aWQgMCE9PWVlJiYodC5tYXhXaWR0aD1lZSl9by5maXJzdENoaWxkfHwoby5jbGFzc05hbWU9ImF1dG9SZXNpemUiLG8uc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIixvLmFwcGVuZENoaWxkKGkpKX0oZWUpLCJURVhUQVJFQSI9PT1hLm5vZGVOYW1lJiYoYS5zdHlsZS5yZXNpemU9Im5v'@; put 'bmUiLGEuc3R5bGUuaGVpZ2h0PWAke3QubWluSGVpZ2h0fXB4YCxhLnN0eWxlLm1pbldpZHRoPWAke3QubWluV2lkdGh9cHhgLGEuc3R5bGUubWF4V2lkdGg9YCR7dC5tYXhXaWR0aH1weGAsYS5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpLHZlJiYoRURlKGEsImlucHV0IixsKSxFRGUoYSwi'@; put 'a2V5ZG93biIsdSkpLGwoKX0scmVzaXplOmwsdW5PYnNlcnZlKCl7TURlKGEsImlucHV0IixsKSxNRGUoYSwia2V5ZG93biIsdSl9fX1mdW5jdGlvbiB4RGUobixlKXtjb25zdCB0PXhzZShlKSxyPWUudmFsdWUuc3BsaXQoIlxuIik7bGV0IGk9dCxvPTA7Zm9yKGxldCBhPTA7YTxyLmxlbmd0'@; put 'aDthKyspezAhPT1hJiYobys9clthLTFdLmxlbmd0aCsxKTtjb25zdCB1PW8rclthXS5sZW5ndGg7aWYoImhvbWUiPT09bj9pPW86ImVuZCI9PT1uJiYoaT11KSx0PD11KWJyZWFrfXZMKGUsaSxpKX1NVC5SRU5ERVJFUl9UWVBFPSJiYXNlIjtjb25zdCBmWj0iaHRfZWRpdG9yX2hpZGRlbiIs'@; put 'QURlPSJ0ZXh0RWRpdG9yIjtjbGFzcyBkXyBleHRlbmRzIEk3e3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4idGV4dCJ9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5URVhUQVJFQS52YWx1ZX1zZXRWYWx1ZShlKXt0aGlzLlRFWFRBUkVBLnZhbHVlPWV9b3Blbigpe3RoaXMuX29wZW5l'@; put 'ZD0hMCx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCksdGhpcy5zaG93RWRpdGFibGVFbGVtZW50KCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImVkaXRvciIpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKX1jbG9zZSgpe3RoaXMuX29wZW5lZD0h'@; put 'MSx0aGlzLmF1dG9SZXNpemUudW5PYnNlcnZlKCkscEwodGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQsdGhpcy5ob3Qucm9vdEVsZW1lbnQpJiZ0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmhpZGVFZGl0YWJsZUVsZW1lbnQoKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKX1w'@; put 'cmVwYXJlKGUsdCxyLGksbyxhKXtjb25zdCBsPXRoaXMuc3RhdGU7aWYoc3VwZXIucHJlcGFyZShlLHQscixpLG8sYSksIWEucmVhZE9ubHkpe3RoaXMucmVmcmVzaERpbWVuc2lvbnMoITApO2NvbnN0e2FsbG93SW52YWxpZDp1fT1hO3UmJiF0aGlzLmlzT3BlbmVkKCkmJih0aGlzLlRFWFRB'@; put 'UkVBLnZhbHVlPSIiKSxsIT09VmguRklOSVNIRUQmJiF0aGlzLmlzT3BlbmVkKCkmJnRoaXMuaGlkZUVkaXRhYmxlRWxlbWVudCgpfX1iZWdpbkVkaXRpbmcoZSx0KXt0aGlzLnN0YXRlPT09VmguVklSR0lOJiYodGhpcy5URVhUQVJFQS52YWx1ZT0iIixzdXBlci5iZWdpbkVkaXRpbmcoZSx0'@; put 'KSl9Zm9jdXMoKXt0aGlzLlRFWFRBUkVBLnNlbGVjdCgpLHZMKHRoaXMuVEVYVEFSRUEsdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGgsdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGgpfWNyZWF0ZUVsZW1lbnRzKGU9InRleHRhcmVhIil7Y29uc3R7cm9vdERvY3VtZW50OnR9PXRoaXMuaG90'@; put 'O3RoaXMuVEVYVEFSRUE9dC5jcmVhdGVFbGVtZW50KGUpLEtvKHRoaXMuVEVYVEFSRUEsW1siZGF0YS1ob3QtaW5wdXQiLCIiXSxiNCgtMSldKSxZcih0aGlzLlRFWFRBUkVBLCJoYW5kc29udGFibGVJbnB1dCIpLHRoaXMudGV4dGFyZWFTdHlsZT10aGlzLlRFWFRBUkVBLnN0eWxlLHRoaXMu'@; put 'dGV4dGFyZWFTdHlsZS53aWR0aD0iMCIsdGhpcy50ZXh0YXJlYVN0eWxlLmhlaWdodD0iMCIsdGhpcy50ZXh0YXJlYVN0eWxlLm92ZXJmbG93WT0idmlzaWJsZSIsdGhpcy5URVhUQVJFQV9QQVJFTlQ9dC5jcmVhdGVFbGVtZW50KCJESVYiKSxZcih0aGlzLlRFWFRBUkVBX1BBUkVOVCwiaGFu'@; put 'ZHNvbnRhYmxlSW5wdXRIb2xkZXIiKSxMYSh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpJiZrbyh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpLFlyKHRoaXMuVEVYVEFSRUFfUEFSRU5ULGZaKSx0aGlzLnRleHRhcmVhUGFyZW50U3R5bGU9dGhpcy5U'@; put 'RVhUQVJFQV9QQVJFTlQuc3R5bGUsdGhpcy5URVhUQVJFQV9QQVJFTlQuYXBwZW5kQ2hpbGQodGhpcy5URVhUQVJFQSksdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5URVhUQVJFQV9QQVJFTlQpfWhpZGVFZGl0YWJsZUVsZW1lbnQoKXtqeGUoKSYmKHRoaXMudGV4dGFy'@; put 'ZWFTdHlsZS50ZXh0SW5kZW50PSItOTk5OTlweCIpLHRoaXMudGV4dGFyZWFTdHlsZS5vdmVyZmxvd1k9InZpc2libGUiLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZS5vcGFjaXR5PSIwIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUuaGVpZ2h0PSIxcHgiLGtvKHRoaXMuVEVYVEFSRUFfUEFS'@; put 'RU5ULHRoaXMubGF5ZXJDbGFzcyksWXIodGhpcy5URVhUQVJFQV9QQVJFTlQsZlopfXNob3dFZGl0YWJsZUVsZW1lbnQoKXt0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUuaGVpZ2h0PSIiLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZS5vdmVyZmxvdz0iIix0aGlzLnRleHRhcmVhUGFyZW50U3R5'@; put 'bGUucG9zaXRpb249IiIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlW3RoaXMuaG90LmlzUnRsKCk/ImxlZnQiOiJyaWdodCJdPSJhdXRvIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3BhY2l0eT0iMSIsdGhpcy50ZXh0YXJlYVN0eWxlLnRleHRJbmRlbnQ9IiI7Y29uc3QgZT10aGlzLlRF'@; put 'WFRBUkVBX1BBUkVOVC5jaGlsZE5vZGVzO2xldCB0PSExO1ZhKGUubGVuZ3RoLTEscj0+e2lmKExhKGVbcl0sImhhbmRzb250YWJsZUVkaXRvciIpKXJldHVybiB0PSEwLCExfSksTGEodGhpcy5URVhUQVJFQV9QQVJFTlQsZlopJiZrbyh0aGlzLlRFWFRBUkVBX1BBUkVOVCxmWiksdD8odGhp'@; put 'cy5sYXllckNsYXNzPSJodF9lZGl0b3JfdmlzaWJsZSIsWXIodGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXllckNsYXNzKSk6KHRoaXMubGF5ZXJDbGFzcz10aGlzLmdldEVkaXRlZENlbGxzTGF5ZXJDbGFzcygpLFlyKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHRoaXMubGF5ZXJDbGFzcykp'@; put 'fXJlZnJlc2hWYWx1ZSgpe2NvbnN0IGU9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh0aGlzLnJvdyksdD10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKGUsdGhpcy5jb2wpO3RoaXMub3JpZ2luYWxWYWx1ZT10LHRoaXMuc2V0VmFsdWUodCksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfXJl'@; put 'ZnJlc2hEaW1lbnNpb25zKGU9ITEpe2lmKHRoaXMuc3RhdGUhPT1WaC5FRElUSU5HJiYhZSlyZXR1cm47aWYodGhpcy5URD10aGlzLmdldEVkaXRlZENlbGwoKSwhdGhpcy5URClyZXR1cm4gdm9pZChlfHx0aGlzLmNsb3NlKCkpO2NvbnN0IHQ9dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpO2lm'@; put 'KCF0KXJldHVybjtjb25zdHt0b3A6cixzdGFydDppLHdpZHRoOm8sbWF4V2lkdGg6YSxoZWlnaHQ6bCxtYXhIZWlnaHQ6dX09dDt0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUudG9wPWAke3J9cHhgLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZVt0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6Imxl'@; put 'ZnQiXT1gJHtpfXB4YCx0aGlzLnNob3dFZGl0YWJsZUVsZW1lbnQoKTtjb25zdCBnPXRoaXMuaG90LnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLlREKTt0aGlzLlRFWFRBUkVBLnN0eWxlLmZvbnRTaXplPWcuZm9udFNpemUsdGhpcy5URVhUQVJFQS5zdHlsZS5mb250RmFtaWx5'@; put 'PWcuZm9udEZhbWlseSx0aGlzLlRFWFRBUkVBLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLlRELnN0eWxlLmJhY2tncm91bmRDb2xvcix0aGlzLmF1dG9SZXNpemUuaW5pdCh0aGlzLlRFWFRBUkVBLHttaW5XaWR0aDpNYXRoLm1pbihvLGEpLG1pbkhlaWdodDpNYXRoLm1pbihsLHUpLG1h'@; put 'eFdpZHRoOmEsbWF4SGVpZ2h0OnV9LCEwKX1iaW5kRXZlbnRzKCl7eXNlKCkmJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5URVhUQVJFQSwiZm9jdXNvdXQiLCgpPT50aGlzLmZpbmlzaEVkaXRpbmcoITEpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpv'@; put 'bnRhbGx5IiwoKT0+dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsKCk9Pnt0aGlzLnJlZnJlc2hEaW1lbnNpb25z'@; put 'KCksdGhpcy5zdGF0ZT09PVZoLkVESVRJTkcmJnRoaXMuZm9jdXMoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSb3dSZXNpemUiLCgpPT57dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpLHRoaXMuc3RhdGU9PT1WaC5FRElUSU5HJiZ0aGlzLmZvY3VzKCl9KX1kZXN0cm95KCl7dGhpcy5ldmVudE1h'@; put 'bmFnZXIuZGVzdHJveSgpLHRoaXMuY2xlYXJIb29rcygpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7Y29uc3QgdD10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKSxpPSgpPT57dGhpcy5ob3Qucm9vdERvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRUZXh0'@; put 'IiwhMSwiXG4iKX07dC5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkNvbnRyb2wiLCJFbnRlciJdXSxjYWxsYmFjazooKT0+KGkoKSwhMSkscnVuT25seUlmOm89PiF0aGlzLmhvdC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpJiYhbz8uYWx0S2V5fSx7a2V5czpbWyJNZXRhIiwiRW50ZXIiXV0sY2Fs'@; put 'bGJhY2s6KCk9PihpKCksITEpLHJ1bk9ubHlJZjooKT0+IXRoaXMuaG90LnNlbGVjdGlvbi5pc011bHRpcGxlKCl9LHtrZXlzOltbIkFsdCIsIkVudGVyIl1dLGNhbGxiYWNrOigpPT4oaSgpLCExKX0se2tleXM6W1siSG9tZSJdXSxjYWxsYmFjazoobyxhKT0+e3hEZShhPy5bMF0/PyIiLHRo'@; put 'aXMuVEVYVEFSRUEpfX0se2tleXM6W1siRW5kIl1dLGNhbGxiYWNrOihvLGEpPT57eERlKGE/LlswXT8/IiIsdGhpcy5URVhUQVJFQSl9fV0se3J1bk9ubHlJZjooKT0+Wm8odGhpcy5ob3QuZ2V0U2VsZWN0ZWQoKSksZ3JvdXA6QURlfSl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90'@; put 'LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoQURlKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmV2ZW50TWFuYWdlcj1uZXcgVzIodGhpcyksdGhpcy5hdXRvUmVzaXplPVREZSh0aGlzLmhvdC5yb290RG9jdW1l'@; put 'bnQpLHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyBXMih0aGlzKSx0aGlzLmNyZWF0ZUVsZW1lbnRzKCksdGhpcy5iaW5kRXZlbnRzKCksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsKCk9PnRoaXMuZGVzdHJveSgpKX19ZnVuY3Rpb24gRDcobixlLHQscixpLG8sYSl7bGV0IGw9'@; put 'bztBbChsKSYmYS5wbGFjZWhvbGRlciYmKGw9YS5wbGFjZWhvbGRlcik7Y29uc3QgdT1QbChsKTtsZXQgZz11O2EudHJpbVdoaXRlc3BhY2UmJihnPXUudHJpbSgpKSx5NyhlLGcpfUQ3LlJFTkRFUkVSX1RZUEU9InRleHQiO2NvbnN0IGtEZT17Q0VMTF9UWVBFOiJ0ZXh0IixlZGl0b3I6ZF8s'@; put 'cmVuZGVyZXI6RDd9LFJEZT1mdW5jdGlvbiBZTHQobixlLHQ9ITEpe2xldCByPXRoaXM7Y29uc3QgaT1uZXcgVzIocik7bGV0IG8sYSxsLHUsZyxFLE89ITA7Y29uc3QgWj17Li4uZS5pbml0aWFsU3RhdGUsLi4uZX07KGZ1bmN0aW9uIHJrdChuKXtyZXR1cm4gbj09PVBsZX0pKHQpJiZmdW5j'@; put 'dGlvbiBua3Qobil7WmtlLnNldChuLCEwKX0odGhpcyksdGhpcy5yb290Q29udGFpbmVyPW4sdGhpcy5yb290V3JhcHBlckVsZW1lbnQ9bnVsbCx0aGlzLnJvb3RHcmlkRWxlbWVudD1udWxsLHRoaXMucm9vdEdyaWRDb250ZW50RWxlbWVudD1udWxsLHRoaXMucm9vdFNsb3RUb3BFbGVtZW50'@; put 'PW51bGwsdGhpcy5yb290U2xvdEJvdHRvbUVsZW1lbnQ9bnVsbCx0aGlzLnJvb3RPdmVybGF5c0VsZW1lbnQ9bnVsbCx0aGlzLnJvb3RQb3J0YWxFbGVtZW50PW51bGwsdGhpcy5yb290RWxlbWVudD1yMih0aGlzKT9uLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bix0aGlz'@; put 'LnJvb3REb2N1bWVudD1uLm93bmVyRG9jdW1lbnQsdGhpcy5yb290V2luZG93PXRoaXMucm9vdERvY3VtZW50LmRlZmF1bHRWaWV3LHIyKHRoaXMpJiYodGhpcy5yb290V3JhcHBlckVsZW1lbnQ9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5yb290U2xvdFRv'@; put 'cEVsZW1lbnQ9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5yb290R3JpZEVsZW1lbnQ9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5yb290R3JpZENvbnRlbnRFbGVtZW50PXRoaXMucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1l'@; put 'bnQoImRpdiIpLHRoaXMucm9vdE92ZXJsYXlzRWxlbWVudD10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnJvb3RTbG90Qm90dG9tRWxlbWVudD10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnJvb3RQb3J0YWxFbGVtZW50PXRo'@; put 'aXMucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFlyKHRoaXMucm9vdEVsZW1lbnQsWyJodC13cmFwcGVyIiwiaGFuZHNvbnRhYmxlIl0pLFlyKHRoaXMucm9vdFdyYXBwZXJFbGVtZW50LCJodC1yb290LXdyYXBwZXIiKSxZcih0aGlzLnJvb3RTbG90VG9wRWxlbWVudCwiaHQt'@; put 'c2xvdC10b3AiKSxZcih0aGlzLnJvb3RHcmlkRWxlbWVudCwiaHQtZ3JpZCIpLFlyKHRoaXMucm9vdEdyaWRDb250ZW50RWxlbWVudCwiaHQtZ3JpZC1jb250ZW50IiksWXIodGhpcy5yb290T3ZlcmxheXNFbGVtZW50LCJodC1vdmVybGF5IiksWXIodGhpcy5yb290U2xvdEJvdHRvbUVsZW1l'@; put 'bnQsImh0LXNsb3QtYm90dG9tIiksdGhpcy5yb290R3JpZENvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucm9vdEVsZW1lbnQpLHRoaXMucm9vdEdyaWRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucm9vdEdyaWRDb250ZW50RWxlbWVudCksdGhpcy5yb290V3JhcHBlckVsZW1lbnQu'@; put 'YXBwZW5kQ2hpbGQodGhpcy5yb290U2xvdFRvcEVsZW1lbnQpLHRoaXMucm9vdFdyYXBwZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucm9vdEdyaWRFbGVtZW50KSx0aGlzLnJvb3RXcmFwcGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJvb3RTbG90Qm90dG9tRWxlbWVudCksdGhpcy5y'@; put 'b290V3JhcHBlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5yb290T3ZlcmxheXNFbGVtZW50KSx0aGlzLnJvb3RDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5yb290V3JhcHBlckVsZW1lbnQpLHRoaXMucm9vdFdyYXBwZXJFbGVtZW50Ll9faG90SW5zdGFuY2U9dGhpcyxZcih0aGlzLnJv'@; put 'b3RQb3J0YWxFbGVtZW50LCJodC1wb3J0YWwiKSx0aGlzLnJvb3REb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucm9vdFBvcnRhbEVsZW1lbnQpKSx0aGlzLmlzRGVzdHJveWVkPSExLHRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlcj0wLHRoaXMuZXhlY3V0aW9uU3VzcGVuZGVkQ291'@; put 'bnRlcj0wO2NvbnN0IGVlPVo/LmxheW91dERpcmVjdGlvbj8/ImluaGVyaXQiLHZlPVsicnRsIiwibHRyIl0uaW5jbHVkZXMoZWUpP2VlOnRoaXMucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQpLmRpcmVjdGlvbjt0aGlzLnJvb3RFbGVtZW50LnNldEF0dHJp'@; put 'YnV0ZSgiZGlyIix2ZSksdGhpcy5yb290V3JhcHBlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgiZGlyIix2ZSksdGhpcy5pc1J0bD1mdW5jdGlvbigpe3JldHVybiJydGwiPT09dmV9LHRoaXMuaXNMdHI9ZnVuY3Rpb24oKXtyZXR1cm4hci5pc1J0bCgpfSx0aGlzLmdldERpcmVjdGlvbkZhY3Rv'@; put 'cj1mdW5jdGlvbigpe3JldHVybiByLmlzTHRyKCk/MTotMX0sdGhpcy5zdHlsZXNIYW5kbGVyPW5ldyBXRHQoe2hvdDpyLHJvb3RFbGVtZW50OnIucm9vdEVsZW1lbnQscm9vdERvY3VtZW50OnIucm9vdERvY3VtZW50LG9uVGhlbWVDaGFuZ2U6dXQ9PntyMih0aGlzKSYmKGtvKHRoaXMucm9v'@; put 'dFdyYXBwZXJFbGVtZW50LC9odC10aGVtZS0uKi9nKSxrbyh0aGlzLnJvb3RQb3J0YWxFbGVtZW50LC9odC10aGVtZS0uKi9nKSx1dCYmKFlyKHRoaXMucm9vdFdyYXBwZXJFbGVtZW50LHV0KSxZcih0aGlzLnJvb3RQb3J0YWxFbGVtZW50LHV0KSxnZXRDb21wdXRlZFN0eWxlKHRoaXMucm9v'@; put 'dFdyYXBwZXJFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWh0LWxpbmUtaGVpZ2h0Iil8fEhhKGBUaGUgIiR7dXR9IiB0aGVtZSBpcyBlbmFibGVkLCBidXQgaXRzIHN0eWxlc2hlZXRzIGFyZSBtaXNzaW5nIG9yIG5vdCBpbXBvcnRlZCBjb3JyZWN0bHkuIEltcG9ydCB0aGUgY29ycmVj'@; put 'dCBDU1MgZmlsZXMgaW4gb3JkZXIgdG8gdXNlIHRoYXQgdGhlbWUuYCkpLHRoaXMudmlldz8uX3d0Py5zZWxlY3Rpb25NYW5hZ2VyPy5yZWZyZXNoQWxsQm9yZGVySGFuZGxlU3R5bGVzKCkpfSxpbmplY3RDb3JlQ3NzOiJib29sZWFuIiE9dHlwZW9mIGU/LmluamVjdENvcmVDc3N8fGUuaW5q'@; put 'ZWN0Q29yZUNzc30pLHRoaXMudGhlbWVNYW5hZ2VyPW51bGwsWi5sYW5ndWFnZT1mdW5jdGlvbiB6a3Qobil7bGV0IGU9X1JlKG4pO3JldHVybiBVdWUoZSl8fChlPWp1ZSx5UmUobikpLGV9KFoubGFuZ3VhZ2UpO2NvbnN0IE1lPU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyha'@; put 'KS5maWx0ZXIoKFt1dF0pPT4hKEdvLmdldFNpbmdsZXRvbigpLmlzUmVnaXN0ZXJlZCh1dCl8fEdvLmdldFNpbmdsZXRvbigpLmlzRGVwcmVjYXRlZCh1dCkpKSksSGU9bmV3IEtSZShyLE1lLFtQUnQsV1J0XSksV2U9SGUuZ2V0VGFibGVNZXRhKCksYXQ9SGUuZ2V0R2xvYmFsTWV0YSgpLEN0'@; put 'PUNMKCk7dGhpcy5jb250YWluZXI9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5yb290RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5jb250YWluZXIsdGhpcy5yb290RWxlbWVudC5maXJzdENoaWxkKSx0aGlzLmd1aWQ9YGh0XyR7VlcoKX1gLERkZS5zZXQo'@; put 'dGhpcy5ndWlkLHRoaXMpLHRoaXMuY29sdW1uSW5kZXhNYXBwZXI9bmV3IEtsZSx0aGlzLnJvd0luZGV4TWFwcGVyPW5ldyBLbGUsdGhpcy5jb2x1bW5JbmRleE1hcHBlci5hZGRMb2NhbEhvb2soImluZGV4ZXNTZXF1ZW5jZUNoYW5nZSIsdXQ9PntyLnJ1bkhvb2tzKCJhZnRlckNvbHVtblNl'@; put 'cXVlbmNlQ2hhbmdlIix1dCl9KSx0aGlzLnJvd0luZGV4TWFwcGVyLmFkZExvY2FsSG9vaygiaW5kZXhlc1NlcXVlbmNlQ2hhbmdlIix1dD0+e3IucnVuSG9va3MoImFmdGVyUm93U2VxdWVuY2VDaGFuZ2UiLHV0KX0pLGkuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLnJvb3REb2N1bWVudC5kb2N1'@; put 'bWVudEVsZW1lbnQsImNvbXBvc2l0aW9uc3RhcnQiLHV0PT57ci5ydW5Ib29rcygiYmVmb3JlQ29tcG9zaXRpb25TdGFydCIsdXQpfSksYT1uZXcgWlJ0KHIpO2NvbnN0IEF0PXpwKHRoaXMuZ3VpZCk7QXQucmVnaXN0ZXIoImNlbGxSYW5nZU1hcHBlciIsbmV3IHNJdCh7cm93SW5kZXhNYXBw'@; put 'ZXI6dGhpcy5yb3dJbmRleE1hcHBlcixjb2x1bW5JbmRleE1hcHBlcjp0aGlzLmNvbHVtbkluZGV4TWFwcGVyfSkpLCghdGhpcy5yb290RWxlbWVudC5pZHx8Imh0XyI9PT10aGlzLnJvb3RFbGVtZW50LmlkLnN1YnN0cmluZygwLDMpKSYmKHRoaXMucm9vdEVsZW1lbnQuaWQ9dGhpcy5ndWlk'@; put 'KTtsZXQgQ249bmV3IHdSdChXZSx7cm93SW5kZXhNYXBwZXI6ci5yb3dJbmRleE1hcHBlcixjb2x1bW5JbmRleE1hcHBlcjpyLmNvbHVtbkluZGV4TWFwcGVyLGNvdW50Q29sczooKT0+ci5jb3VudENvbHMoKSxjb3VudFJvd3M6KCk9PnIuY291bnRSb3dzKCkscHJvcFRvQ29sOnV0PT5vLnBy'@; put 'b3BUb0NvbCh1dCksaXNFZGl0b3JPcGVuZWQ6KCk9Pntjb25zdCB1dD1yLmdldEFjdGl2ZUVkaXRvcigpO3JldHVybiEhdXQmJnV0LmlzT3BlbmVkKCl9LGNvdW50UmVuZGVyYWJsZUNvbHVtbnM6KCk9PnIudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCksY291bnRSZW5kZXJhYmxlUm93'@; put 'czooKT0+ci52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3MoKSxjb3VudFJvd0hlYWRlcnM6KCk9PnIuY291bnRSb3dIZWFkZXJzKCksY291bnRDb2xIZWFkZXJzOigpPT5yLmNvdW50Q29sSGVhZGVycygpLGNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlOih1dCxIdCk9PnIudmlldy5jb3VudFJl'@; put 'bmRlcmFibGVSb3dzSW5SYW5nZSh1dCxIdCksY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2U6KHV0LEh0KT0+ci52aWV3LmNvdW50UmVuZGVyYWJsZUNvbHVtbnNJblJhbmdlKHV0LEh0KSxnZXRTaG9ydGN1dE1hbmFnZXI6KCk9PnIuZ2V0U2hvcnRjdXRNYW5hZ2VyKCksY3JlYXRlQ2Vs'@; put 'bENvb3JkczoodXQsSHQpPT5yLl9jcmVhdGVDZWxsQ29vcmRzKHV0LEh0KSxjcmVhdGVDZWxsUmFuZ2U6KHV0LEh0LGRuKT0+ci5fY3JlYXRlQ2VsbFJhbmdlKHV0LEh0LGRuKSx2aXN1YWxUb1JlbmRlcmFibGVDb29yZHM6dXQ9Pntjb25zdHtyb3c6SHQsY29sOmRufT11dDtyZXR1cm4gci5f'@; put 'Y3JlYXRlQ2VsbENvb3JkcyhIdD49MD9yLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoSHQpOkh0LGRuPj0wP3IuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChkbik6ZG4pfSxyZW5kZXJhYmxlVG9WaXN1YWxDb29yZHM6'@; put 'dXQ9Pntjb25zdHtyb3c6SHQsY29sOmRufT11dDtyZXR1cm4gci5fY3JlYXRlQ2VsbENvb3JkcyhIdD49MD9yLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoSHQpOkh0LGRuPj0wP3IuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJ'@; put 'bmRleChkbik6ZG4pfSxmaW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlUm93Oih1dCxIdCk9Pntjb25zdCBkbj1IdD51dD8xOi0xLFZuPU1hdGgubWluKHV0LEh0KSxJcj1NYXRoLm1heCh1dCxIdCksbmk9ci5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodXQsZG4p'@; put 'O3JldHVybiBudWxsPT09bml8fDE9PT1kbiYmbmk+SXJ8fC0xPT09ZG4mJm5pPFZuP251bGw6bmk+PTA/ci5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KG5pKTpuaX0sZmluZEZpcnN0Tm9uSGlkZGVuUmVuZGVyYWJsZUNvbHVtbjoodXQsSHQpPT57Y29uc3Qg'@; put 'ZG49SHQ+dXQ/MTotMSxWbj1NYXRoLm1pbih1dCxIdCksSXI9TWF0aC5tYXgodXQsSHQpLG5pPXIuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHV0LGRuKTtyZXR1cm4gbnVsbD09PW5pfHwxPT09ZG4mJm5pPklyfHwtMT09PWRuJiZuaTxWbj9udWxsOm5pPj0w'@; put 'P3IuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChuaSk6bml9LGlzRGlzYWJsZWRDZWxsU2VsZWN0aW9uOih1dCxIdCk9PnV0PDB8fEh0PDA/ci5nZXRTZXR0aW5ncygpLmRpc2FibGVWaXN1YWxTZWxlY3Rpb246ci5nZXRDZWxsTWV0YSh1dCxIdCkuZGlz'@; put 'YWJsZVZpc3VhbFNlbGVjdGlvbn0pO3RoaXMuc2VsZWN0aW9uPUNuO2NvbnN0IHFyPSh7aGlkZGVuSW5kZXhlc0NoYW5nZWQ6dXR9KT0+e3RoaXMuZm9yY2VGdWxsUmVuZGVyPSEwLHV0JiZ0aGlzLnNlbGVjdGlvbi5jb21taXQoKX07ZnVuY3Rpb24gVHIodXQsSHQpe2NvbnN0IGRuPSJjbGFz'@; put 'c05hbWUiPT09dXQ/ci5yb290RWxlbWVudDpyLnRhYmxlO2lmKE8pdm9pZCAwIT09SHQmJllyKGRuLEh0KTtlbHNle2xldCBWbj1bXSxJcj1bXTtpZihhdFt1dF0pe2NvbnN0IEZpPWF0W3V0XTtWbj1BcnJheS5pc0FycmF5KEZpKT9GaTptc2UoU3RyaW5nKEZpKSl9SHQmJihJcj1BcnJheS5p'@; put 'c0FycmF5KEh0KT9IdDptc2UoSHQpKTtjb25zdCBuaT1yTChWbixJciksanI9ckwoSXIsVm4pO25pLmxlbmd0aCYma28oZG4sbmkpLGpyLmxlbmd0aCYmWXIoZG4sanIpfWF0W3V0XT1IdH1mdW5jdGlvbiByaSh1dCl7bGV0IEh0O3R5cGVvZiB1dD4idSI/KEh0PUVUKCJtYWluIik/Q08oIm1h'@; put 'aW4iKTpTTyhXTHQpLEh0PUNPKCJtYWluIikpOkh0PSJmdW5jdGlvbiIhPXR5cGVvZiB1dC5nZXRUaGVtZUNvbmZpZz9TTyh1dCk6dXQsci50aGVtZU1hbmFnZXI9ZnVuY3Rpb24gbUx0KHtob3Q6bix0aGVtZU9iamVjdDplfSl7cmV0dXJuIG5ldyBnTHQoe2hvdDpuLHRoZW1lT2JqZWN0OmV9'@; put 'KX0oe2hvdDpyLHRoZW1lT2JqZWN0Okh0fSl9ZnVuY3Rpb24gZm4oKXtsZXQgdXQ9ITE7cmV0dXJue3ZhbGlkYXRvcnNJblF1ZXVlOjAsdmFsaWQ6ITAsYWRkVmFsaWRhdG9yVG9RdWV1ZSgpe3RoaXMudmFsaWRhdG9yc0luUXVldWUrPTEsdXQ9ITF9LHJlbW92ZVZhbGlkYXRvckZvcm1RdWV1'@; put 'ZSgpe3RoaXMudmFsaWRhdG9yc0luUXVldWU9dGhpcy52YWxpZGF0b3JzSW5RdWV1ZS0xPDA/MDp0aGlzLnZhbGlkYXRvcnNJblF1ZXVlLTEsdGhpcy5jaGVja0lmUXVldWVJc0VtcHR5KCl9LG9uUXVldWVFbXB0eShIdCl7fSxjaGVja0lmUXVldWVJc0VtcHR5KCl7MD09PXRoaXMudmFsaWRh'@; put 'dG9yc0luUXVldWUmJiExPT09dXQmJih1dD0hMCx0aGlzLm9uUXVldWVFbXB0eSh0aGlzLnZhbGlkKSl9fX1mdW5jdGlvbiB5cih1dCxIdCl7cmV0dXJuISFIdD8uaXNPcGVuZWQoKSYmSmtlKHV0LEh0LnJvdyxIdC5wcm9wKX1mdW5jdGlvbiBBbih1dCxIdCxkbil7aWYoIXV0Lmxlbmd0aCly'@; put 'ZXR1cm4gdm9pZCBkbigpO2NvbnN0IFZuPXIuZ2V0QWN0aXZlRWRpdG9yKCksSXI9Zm4oKTtsZXQgbmk9ITA7Y29uc3QganI9KFtnbyxZbywsU29dKT0+e2NvbnN0IFJhPXV0LmZpbmRJbmRleCgoW1ZvLGJsXSk9PlZvPT09Z28mJmJsPT09WW8pOy0xIT09UmEmJih1dFtSYV1bM109U28pfSxG'@; put 'aT0oZ28sWW8pPT57InN0cmluZyIhPXR5cGVvZiBZb3x8IVlvLmVuZHNXaXRoKCJWYWxpZGF0b3IiKXx8Z28/LmZvckVhY2goanIpfTtyLmFkZEhvb2soImFmdGVyQ2hhbmdlIixGaSksSXIub25RdWV1ZUVtcHR5PSgpPT57ci5yZW1vdmVIb29rKCJhZnRlckNoYW5nZSIsRmkpLFZuJiZuaSYm'@; put 'Vm4uX2Nsb3NlQWZ0ZXJEYXRhQ2hhbmdlJiZ5cih1dCxWbikmJlZuLmNhbmNlbENoYW5nZXMoKSxkbigpfTtmb3IobGV0IGdvPXV0Lmxlbmd0aC0xO2dvPj0wO2dvLS0pe2NvbnN0W1lvLFNvLCxSYV09dXRbZ29dLFZvPW8ucHJvcFRvQ29sKFNvKTtsZXQgYmw7Ymw9TnVtYmVyLmlzSW50ZWdl'@; put 'cihWbyk/ci5nZXRDZWxsTWV0YShZbyxWbyk6ey4uLk9iamVjdC5nZXRQcm90b3R5cGVPZihXZSksLi4uV2V9LHIuZ2V0Q2VsbFZhbGlkYXRvcihibCkmJihJci5hZGRWYWxpZGF0b3JUb1F1ZXVlKCksci52YWxpZGF0ZUNlbGwoUmEsYmwsZnVuY3Rpb24oRDEsVGgpe3JldHVybiBmdW5jdGlv'@; put 'bihmMil7ImJvb2xlYW4iIT10eXBlb2YgZjImJkpyKCJWYWxpZGF0aW9uIGVycm9yOiByZXN1bHQgaXMgbm90IGJvb2xlYW4iKSwhMT09PWYyJiYhMT09PVRoLmFsbG93SW52YWxpZCYmKG5pPSExLHV0LnNwbGljZShEMSwxKSxUaC52YWxpZD0hMCksSXIucmVtb3ZlVmFsaWRhdG9yRm9ybVF1'@; put 'ZXVlKCl9fShnbyxibCksSHQpKX1Jci5jaGVja0lmUXVldWVJc0VtcHR5KCl9ZnVuY3Rpb24gSHIodXQsSHQpe2ZvcihsZXQganI9dXQubGVuZ3RoLTE7anI+PTA7anItLSl7bGV0IEZpPSExO2lmKG51bGwhPT11dFtqcl0pe2lmKG51bGwhPXV0W2pyXVsyXXx8bnVsbCE9dXRbanJdWzNdKXtp'@; put 'ZihXZS5hbGxvd0luc2VydFJvdylmb3IoO3V0W2pyXVswXT5yLmNvdW50Um93cygpLTE7KXtjb25zdHtkZWx0YTpnb309by5jcmVhdGVSb3codm9pZCAwLHZvaWQgMCx7c291cmNlOiJhdXRvIn0pO2lmKDA9PT1nbyl7Rmk9ITA7YnJlYWt9fWlmKCJhcnJheSI9PT1yLmRhdGFUeXBlJiYoIVdl'@; put 'LmNvbHVtbnN8fDA9PT1XZS5jb2x1bW5zLmxlbmd0aCkmJldlLmFsbG93SW5zZXJ0Q29sdW1uKWZvcig7TnVtYmVyKG8ucHJvcFRvQ29sKHV0W2pyXVsxXSkpPnIuY291bnRDb2xzKCktMTspe2NvbnN0e2RlbHRhOmdvfT1vLmNyZWF0ZUNvbCh2b2lkIDAsdm9pZCAwLHtzb3VyY2U6ImF1dG8i'@; put 'fSk7aWYoMD09PWdvKXtGaT0hMDticmVha319Rml8fG8uc2V0KHV0W2pyXVswXSx1dFtqcl1bMV0sdXRbanJdWzNdKX19ZWxzZSB1dC5zcGxpY2UoanIsMSl9Y29uc3QgZG49dXQubGVuZ3RoPjAsVm49dS5nZXRBY3RpdmVFZGl0b3IoKSxJcj1Wbj8uX2Nsb3NlQWZ0ZXJEYXRhQ2hhbmdlLG5p'@; put 'PXlyKHV0LFZuKTtkbj8obC5hZGp1c3RSb3dzQW5kQ29scygpLHIucnVuSG9va3MoImJlZm9yZUNoYW5nZVJlbmRlciIsdXQsSHQpLFZuPy5pc09wZW5lZCgpJiZJciYmbmkmJnUuY2xvc2VFZGl0b3IoKSxyLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksci5yZW5kZXIoKSwoVm4/LmlzT3Bl'@; put 'bmVkKCkmJklyJiZuaXx8IVZuPy5pc09wZW5lZCgpKSYmdS5wcmVwYXJlRWRpdG9yKCksci5ydW5Ib29rcygiYWZ0ZXJDaGFuZ2UiLHV0LEh0fHwiZWRpdCIpLFZuJiZ2b2lkIDAhPT1Wbi5yZWZyZXNoVmFsdWUmJighVm4uaXNPcGVuZWQoKXx8bmkpJiZWbi5yZWZyZXNoVmFsdWUoKSk6ci5y'@; put 'ZW5kZXIoKX1mdW5jdGlvbiB0aSh1dCxIdCxkbil7cmV0dXJuIEFycmF5LmlzQXJyYXkodXQpP3V0OltbdXQsSHQsZG5dXX1mdW5jdGlvbiBmcih1dCxIdCl7Y29uc3QgZG49ci5ydW5Ib29rcygiYmVmb3JlQ2hhbmdlIix1dCxIdHx8ImVkaXQiKSxWbj11dC5maWx0ZXIoSXI9Pm51bGwhPT1J'@; put 'cik7aWYoITE9PT1kbnx8MD09PVZuLmxlbmd0aClyZXR1cm4gci5nZXRBY3RpdmVFZGl0b3IoKT8uY2FuY2VsQ2hhbmdlcygpLFtdO2ZvcihsZXQgSXI9Vm4ubGVuZ3RoLTE7SXI+PTA7SXItLSl7Y29uc3RbbmksanIsLEZpXT1WbltJcl0sZ289by5wcm9wVG9Db2woanIpO2xldCBZbztZbz1O'@; put 'dW1iZXIuaXNJbnRlZ2VyKGdvKT9yLmdldENlbGxNZXRhKG5pLGdvKTp7Li4uT2JqZWN0LmdldFByb3RvdHlwZU9mKFdlKSwuLi5XZX0sVm5bSXJdWzNdPWFkZShGaSxZbyl9cmV0dXJuIFZufXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLHV0PT57'@; put 'cXIodXQpLHRoaXMucnVuSG9va3MoImFmdGVyQ29sdW1uU2VxdWVuY2VDYWNoZVVwZGF0ZSIsdXQpfSksdGhpcy5yb3dJbmRleE1hcHBlci5hZGRMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIsdXQ9Pntxcih1dCksdGhpcy5ydW5Ib29rcygiYWZ0ZXJSb3dTZXF1ZW5jZUNhY2hlVXBkYXRlIix1'@; put 'dCl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyU2V0UmFuZ2VFbmQiLCh1dCxIdCk9Pntjb25zdCBkbj1WZighMSksVm49dGhpcy5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSYW5nZSgpLHtmcm9tOklyLHRvOm5pfT1Wbi5jdXJyZW50KCksanI9Vm4uc2l6ZSgpLTE7dGhpcy5y'@; put 'dW5Ib29rcygiYWZ0ZXJTZWxlY3Rpb24iLElyLnJvdyxJci5jb2wsbmkucm93LG5pLmNvbCxkbixqciksdGhpcy5ydW5Ib29rcygiYWZ0ZXJTZWxlY3Rpb25CeVByb3AiLElyLnJvdyxyLmNvbFRvUHJvcChJci5jb2wpLG5pLnJvdyxyLmNvbFRvUHJvcChuaS5jb2wpLGRuLGpyKTtjb25zdCBG'@; put 'aT1Dbi5nZXRTZWxlY3Rpb25Tb3VyY2UoKTtIdCYmIVsibG9hZERhdGEiLCJ1cGRhdGVEYXRhIiwiZGVzZWxlY3QiLCJzaGlmdCJdLmluY2x1ZGVzKEZpKSYmKCFkbi5pc1RvdWNoZWQoKXx8ZG4uaXNUb3VjaGVkKCkmJiFkbi52YWx1ZSkmJkUuc2Nyb2xsVG8odXQpO2NvbnN0IFlvPUNuLmlz'@; put 'U2VsZWN0ZWRCeVJvd0hlYWRlcigpLFNvPUNuLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpO1lvJiZTbz9Zcih0aGlzLnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiXSk6WW8/KGtvKHRoaXMucm9vdEVsZW1lbnQsImh0X19zZWxl'@; put 'Y3Rpb24tLWNvbHVtbnMiKSxZcih0aGlzLnJvb3RFbGVtZW50LCJodF9fc2VsZWN0aW9uLS1yb3dzIikpOlNvPyhrbyh0aGlzLnJvb3RFbGVtZW50LCJodF9fc2VsZWN0aW9uLS1yb3dzIiksWXIodGhpcy5yb290RWxlbWVudCwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyIpKTprbyh0aGlzLnJv'@; put 'b3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiXSksWyJzaGlmdCIsInJlZnJlc2giLCJsb2FkRGF0YSIsInVwZGF0ZURhdGEiLCJkZXNlbGVjdCJdLmluY2x1ZGVzKEZpKXx8dS5jbG9zZUVkaXRvcigpLFsicmVmcmVzaCIsImxvYWREYXRh'@; put 'IiwidXBkYXRlRGF0YSIsImRlc2VsZWN0Il0uaW5jbHVkZXMoRmkpfHwoci52aWV3LnJlbmRlcigpLHUucHJlcGFyZUVkaXRvcigpKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlU2V0Rm9jdXMiLHV0PT57dGhpcy5ydW5Ib29rcygiYmVmb3JlU2VsZWN0aW9uRm9jdXNT'@; put 'ZXQiLHV0LnJvdyx1dC5jb2wpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlclNldEZvY3VzIix1dD0+e2NvbnN0IEh0PVZmKCExKTt0aGlzLnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbkZvY3VzU2V0Iix1dC5yb3csdXQuY29sLEh0KSwoIUh0LmlzVG91Y2hlZCgpfHxIdC5p'@; put 'c1RvdWNoZWQoKSYmIUh0LnZhbHVlKSYmRS5zY3JvbGxUbyh1dCksdS5jbG9zZUVkaXRvcigpLHIudmlldy5yZW5kZXIoKSx1LnByZXBhcmVFZGl0b3IoKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3Rpb25GaW5pc2hlZCIsdXQ9Pntjb25zdCBIdD11dC5sZW5n'@; put 'dGgtMSx7ZnJvbTpkbix0bzpWbn09dXRbSHRdO3RoaXMucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uRW5kIixkbi5yb3csZG4uY29sLFZuLnJvdyxWbi5jb2wsSHQpLHRoaXMucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uRW5kQnlQcm9wIixkbi5yb3csci5jb2xUb1Byb3AoZG4uY29sKSxWbi5y'@; put 'b3csci5jb2xUb1Byb3AoVm4uY29sKSxIdCksWyJyZWZyZXNoIiwiZGVzZWxlY3QiXS5pbmNsdWRlcyhDbi5nZXRTZWxlY3Rpb25Tb3VyY2UoKSkmJihyLnZpZXcucmVuZGVyKCksdS5wcmVwYXJlRWRpdG9yKCkpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlcklzTXVsdGlw'@; put 'bGVTZWxlY3Rpb24iLHV0PT57Y29uc3QgSHQ9dGhpcy5ydW5Ib29rcygiYWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIix1dC52YWx1ZSk7dXQudmFsdWUmJih1dC52YWx1ZT1IdCl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyRGVzZWxlY3QiLCgpPT57dS5jbG9zZUVkaXRv'@; put 'cigpLHIudmlldy5yZW5kZXIoKSxrbyh0aGlzLnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiXSksdGhpcy5ydW5Ib29rcygiYWZ0ZXJEZXNlbGVjdCIpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVIaWdobGln'@; put 'aHRTZXQiLCgpPT5yLnJ1bkhvb2tzKCJiZWZvcmVTZWxlY3Rpb25IaWdobGlnaHRTZXQiKSkuYWRkTG9jYWxIb29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0IiwoLi4udXQpPT5yLnJ1bkhvb2tzKCJiZWZvcmVTZXRSYW5nZVN0YXJ0IiwuLi51dCkpLmFkZExvY2FsSG9vaygiYmVmb3JlU2V0UmFu'@; put 'Z2VTdGFydE9ubHkiLCguLi51dCk9PnIucnVuSG9va3MoImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IiwuLi51dCkpLmFkZExvY2FsSG9vaygiYmVmb3JlU2V0UmFuZ2VFbmQiLCguLi51dCk9PnIucnVuSG9va3MoImJlZm9yZVNldFJhbmdlRW5kIiwuLi51dCkpLmFkZExvY2FsSG9vaygiYmVm'@; put 'b3JlU2VsZWN0Q29sdW1ucyIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYmVmb3JlU2VsZWN0Q29sdW1ucyIsLi4udXQpKS5hZGRMb2NhbEhvb2soImFmdGVyU2VsZWN0Q29sdW1ucyIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYWZ0ZXJTZWxlY3RDb2x1bW5zIiwuLi51dCkpLmFkZExvY2FsSG9vaygi'@; put 'YmVmb3JlU2VsZWN0Um93cyIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYmVmb3JlU2VsZWN0Um93cyIsLi4udXQpKS5hZGRMb2NhbEhvb2soImFmdGVyU2VsZWN0Um93cyIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYWZ0ZXJTZWxlY3RSb3dzIiwuLi51dCkpLmFkZExvY2FsSG9vaygiYmVmb3JlU2Vs'@; put 'ZWN0QWxsIiwoLi4udXQpPT5yLnJ1bkhvb2tzKCJiZWZvcmVTZWxlY3RBbGwiLC4uLnV0KSkuYWRkTG9jYWxIb29rKCJhZnRlclNlbGVjdEFsbCIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYWZ0ZXJTZWxlY3RBbGwiLC4uLnV0KSkuYWRkTG9jYWxIb29rKCJiZWZvcmVNb2RpZnlUcmFuc2Zvcm1T'@; put 'dGFydCIsKC4uLnV0KT0+ci5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLC4uLnV0KSkuYWRkTG9jYWxIb29rKCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwoLi4udXQpPT5yLnJ1bkhvb2tzKCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwuLi51dCkpLmFkZExvY2FsSG9v'@; put 'aygiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtRm9jdXMiLCguLi51dCk9PnIucnVuSG9va3MoIm1vZGlmeVRyYW5zZm9ybUZvY3VzIiwuLi51dCkpLmFkZExvY2FsSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1Gb2N1cyIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1G'@; put 'b2N1cyIsLi4udXQpKS5hZGRMb2NhbEhvb2soImJlZm9yZU1vZGlmeVRyYW5zZm9ybUVuZCIsKC4uLnV0KT0+ci5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtRW5kIiwuLi51dCkpLmFkZExvY2FsSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQiLCguLi51dCk9PnIucnVuSG9va3MoImFm'@; put 'dGVyTW9kaWZ5VHJhbnNmb3JtRW5kIiwuLi51dCkpLmFkZExvY2FsSG9vaygiYmVmb3JlUm93V3JhcCIsKC4uLnV0KT0+ci5ydW5Ib29rcygiYmVmb3JlUm93V3JhcCIsLi4udXQpKS5hZGRMb2NhbEhvb2soImJlZm9yZUNvbHVtbldyYXAiLCguLi51dCk9PnIucnVuSG9va3MoImJlZm9yZUNv'@; put 'bHVtbldyYXAiLC4uLnV0KSkuYWRkTG9jYWxIb29rKCJpbnNlcnRSb3dSZXF1aXJlIix1dD0+ci5hbHRlcigiaW5zZXJ0X3Jvd19hYm92ZSIsdXQsMSwiYXV0byIpKS5hZGRMb2NhbEhvb2soImluc2VydENvbFJlcXVpcmUiLHV0PT5yLmFsdGVyKCJpbnNlcnRfY29sX3N0YXJ0Iix1dCwxLCJh'@; put 'dXRvIikpLGw9e2FsdGVyKHV0LEh0LGRuPTEsVm4sSXIpe2lmKCExIT09ci5ydW5Ib29rcygiYmVmb3JlQWx0ZXIiLHV0LEh0LGRuLFZuLElyKSl7c3dpdGNoKHV0KXtjYXNlImluc2VydF9yb3dfYmVsb3ciOmNhc2UiaW5zZXJ0X3Jvd19hYm92ZSI6Y29uc3QganI9ci5jb3VudFNvdXJjZVJv'@; put 'd3MoKTtpZihXZS5tYXhSb3dzPT09anIpcmV0dXJuO2NvbnN0IEZpPSJpbnNlcnRfcm93X2JlbG93Ij09PXV0PyJiZWxvdyI6ImFib3ZlIixZbz0ibnVtYmVyIj09dHlwZW9mIEh0P0h0OiJiZWxvdyI9PT1GaT9qcjowLHtkZWx0YTpTbyxzdGFydFBoeXNpY2FsSW5kZXg6UmF9PW8uY3JlYXRl'@; put 'Um93KFlvLGRuLHtzb3VyY2U6Vm4sbW9kZTpGaX0pO0NuLnNoaWZ0Um93cyhyLnRvVmlzdWFsUm93KFJhKSxTbyk7YnJlYWs7Y2FzZSJpbnNlcnRfY29sX3N0YXJ0IjpjYXNlImluc2VydF9jb2xfZW5kIjpjb25zdCBWbz0iaW5zZXJ0X2NvbF9lbmQiPT09dXQ/ImVuZCI6InN0YXJ0IixibD0i'@; put 'ZW5kIj09PVZvP3IuY291bnRTb3VyY2VDb2xzKCk6MCxEMT0ibnVtYmVyIj09dHlwZW9mIEh0P0h0OmJsLHtkZWx0YTpUaCxzdGFydFBoeXNpY2FsSW5kZXg6ZjJ9PW8uY3JlYXRlQ29sKEQxLGRuLHtzb3VyY2U6Vm4sbW9kZTpWb30pO2lmKFRoKXtpZihBcnJheS5pc0FycmF5KFdlLmNvbEhl'@; put 'YWRlcnMpKXtjb25zdCBHYT1bci50b1Zpc3VhbENvbHVtbihmMiksMF07R2EubGVuZ3RoKz1UaCxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KFdlLmNvbEhlYWRlcnMsR2EpfUNuLnNoaWZ0Q29sdW1ucyhyLnRvVmlzdWFsQ29sdW1uKGYyKSxUaCl9YnJlYWs7Y2FzZSJyZW1vdmVfcm93'@; put 'Ijpjb25zdCBnOT1HYT0+e2xldCBfZz0wO1huKEdhLChbX2QsTDFdKT0+e2NvbnN0IGMzPUFsKF9kKT9yLmNvdW50Um93cygpLTE6TWF0aC5tYXgoX2QtX2csMCk7aWYoTnVtYmVyLmlzSW50ZWdlcihfZCkmJihfZD1NYXRoLm1heChfZC1fZywwKSksIW8ucmVtb3ZlUm93KF9kLEwxLFZuKSly'@; put 'ZXR1cm47aWYoQ24uaXNTZWxlY3RlZCgpKXtjb25zdHtyb3c6TzF9PXIuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLmhpZ2hsaWdodDtPMT49X2QmJk8xPD1fZCtMMS0xJiZ1LmNsb3NlRWRpdG9yKCEwKX1jb25zdCB2OT1yLmNvdW50Um93cygpLG9wPVdlLmZpeGVkUm93c1RvcDtvcD49YzMr'@; put 'MSYmKFdlLmZpeGVkUm93c1RvcC09TWF0aC5taW4oTDEsb3AtYzMpKTtjb25zdCBmZj1XZS5maXhlZFJvd3NCb3R0b207aWYoZmYmJmMzPj12OS1mZiYmKFdlLmZpeGVkUm93c0JvdHRvbS09TWF0aC5taW4oTDEsZmYpKSwwPT09djkpQ24uZGVzZWxlY3QoKTtlbHNlIGlmKCJDb250ZXh0TWVu'@; put 'dS5yZW1vdmVSb3ciPT09Vm4pe2NvbnN0IE8xPUNuLmdldFNlbGVjdGVkUmFuZ2UoKSxlNT1PMS5wb3AoKTtPMS5jbGVhcigpLnNldChlNS5mcm9tKS5jdXJyZW50KCkuc2V0VG8oZTUudG8pLENuLnJlZnJlc2goKX1lbHNlIENuLnNoaWZ0Um93cyhfZCwtTDEpO19nKz1MMX0pfTtBcnJheS5p'@; put 'c0FycmF5KEh0KT9nOShTRGUoSHQpKTpnOShbW0h0LGRuXV0pO2JyZWFrO2Nhc2UicmVtb3ZlX2NvbCI6Y29uc3Qgc3k9R2E9PntsZXQgX2c9MDtYbihHYSwoW19kLEwxXSk9Pntjb25zdCBjMz1BbChfZCk/ci5jb3VudENvbHMoKS0xOk1hdGgubWF4KF9kLV9nLDApO2xldCBtOT1yLnRvUGh5'@; put 'c2ljYWxDb2x1bW4oYzMpO2lmKE51bWJlci5pc0ludGVnZXIoX2QpJiYoX2Q9TWF0aC5tYXgoX2QtX2csMCkpLCFvLnJlbW92ZUNvbChfZCxMMSxWbikpcmV0dXJuO2lmKENuLmlzU2VsZWN0ZWQoKSl7Y29uc3R7Y29sOk8xfT1yLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKS5oaWdobGlnaHQ7'@; put 'TzE+PV9kJiZPMTw9X2QrTDEtMSYmdS5jbG9zZUVkaXRvcighMCl9aWYoMD09PXIuY291bnRDb2xzKCkpQ24uZGVzZWxlY3QoKTtlbHNlIGlmKCJDb250ZXh0TWVudS5yZW1vdmVDb2x1bW4iPT09Vm4pe2NvbnN0IE8xPUNuLmdldFNlbGVjdGVkUmFuZ2UoKSxlNT1PMS5wb3AoKTtPMS5jbGVh'@; put 'cigpLnNldChlNS5mcm9tKS5jdXJyZW50KCkuc2V0VG8oZTUudG8pLENuLnJlZnJlc2goKX1lbHNlIENuLnNoaWZ0Q29sdW1ucyhfZCwtTDEpO2NvbnN0IGZmPVdlLmZpeGVkQ29sdW1uc1N0YXJ0O2ZmPj1jMysxJiYoV2UuZml4ZWRDb2x1bW5zU3RhcnQtPU1hdGgubWluKEwxLGZmLWMzKSks'@; put 'QXJyYXkuaXNBcnJheShXZS5jb2xIZWFkZXJzKSYmKHR5cGVvZiBtOT4idSImJihtOT0tMSksV2UuY29sSGVhZGVycy5zcGxpY2UobTksTDEpKSxfZys9TDF9KX07QXJyYXkuaXNBcnJheShIdCk/c3koU0RlKEh0KSk6c3koW1tIdCxkbl1dKTticmVhaztkZWZhdWx0OkpyKGBUaGVyZSBpcyBu'@; put 'byBzdWNoIGFjdGlvbiAiJHt1dH0iYCl9SXJ8fGwuYWRqdXN0Um93c0FuZENvbHMoKSxyLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksci52aWV3LnJlbmRlcigpfX0sYWRqdXN0Um93c0FuZENvbHMoKXtjb25zdCB1dD1XZS5taW5Sb3dzLEh0PVdlLm1pblNwYXJlUm93cyxkbj1XZS5taW5D'@; put 'b2xzLFZuPVdlLm1pblNwYXJlQ29scztpZih1dCl7Y29uc3QgSXI9ci5jb3VudFJvd3MoKTtJcjx1dCYmby5jcmVhdGVSb3coSXIsdXQtSXIse3NvdXJjZToiYXV0byJ9KX1pZihIdCl7Y29uc3QgSXI9ci5jb3VudEVtcHR5Um93cyghMCk7aWYoSXI8SHQpe2NvbnN0IGpyPU1hdGgubWluKEh0'@; put 'LUlyLFdlLm1heFJvd3Mtci5jb3VudFNvdXJjZVJvd3MoKSk7by5jcmVhdGVSb3coci5jb3VudFJvd3MoKSxqcix7c291cmNlOiJhdXRvIn0pfX17bGV0IElyPTA7KGRufHxWbikmJihJcj1yLmNvdW50RW1wdHlDb2xzKCEwKSk7bGV0IG5pPXIuY291bnRDb2xzKCk7aWYoZG4mJiFXZS5jb2x1'@; put 'bW5zJiZuaTxkbil7Y29uc3QganI9ZG4tbmk7SXIrPWpyLG8uY3JlYXRlQ29sKG5pLGpyLHtzb3VyY2U6ImF1dG8ifSl9aWYoVm4mJiFXZS5jb2x1bW5zJiYiYXJyYXkiPT09ci5kYXRhVHlwZSYmSXI8Vm4pe25pPXIuY291bnRDb2xzKCk7Y29uc3QgRmk9TWF0aC5taW4oVm4tSXIsV2UubWF4'@; put 'Q29scy1uaSk7by5jcmVhdGVDb2wobmksRmkse3NvdXJjZToiYXV0byJ9KX19fSxwb3B1bGF0ZUZyb21BcnJheSh1dCxIdCxkbixWbixJcil7bGV0IG5pLGpyLEZpLGdvO2NvbnN0IFlvPVtdLFNvPXt9LFJhPVtdLFZvPXV0LnJvdyxibD11dC5jb2w7aWYoanI9SHQubGVuZ3RoLDA9PT1qcily'@; put 'ZXR1cm4hMTtsZXQgRDE9MCxUaD0wO3N3aXRjaChDYShkbikmJihEMT1kbi5jb2wtYmwrMSxUaD1kbi5yb3ctVm8rMSksSXIpe2Nhc2Uic2hpZnRfZG93biI6Y29uc3QgZjI9bkwoSHQpLGc5PWYyLmxlbmd0aCxzeT1NYXRoLm1heChnOSxEMSksR2E9ci5nZXREYXRhKCkuc2xpY2UoVm8pLF9n'@; put 'PW5MKEdhKS5zbGljZShibCxibCtzeSk7Zm9yKEZpPTA7Rmk8c3k7RmkrPTEpaWYoRmk8Zzkpe2ZvcihuaT0wLGpyPWYyW0ZpXS5sZW5ndGg7bmk8VGgtanI7bmkrPTEpZjJbRmldLnB1c2goZjJbRmldW25pJWpyXSk7UmEucHVzaChmMltGaV0uY29uY2F0KEZpPF9nLmxlbmd0aD9fZ1tGaV06'@; put 'bmV3IEFycmF5KEdhLmxlbmd0aCkuZmlsbChudWxsKSkpfWVsc2UgUmEucHVzaChmMltGaSVnOV0uY29uY2F0KF9nW0ZpXSkpO3IucG9wdWxhdGVGcm9tQXJyYXkoVm8sYmwsbkwoUmEpKTticmVhaztjYXNlInNoaWZ0X3JpZ2h0Ijpjb25zdCBfZD1IdC5sZW5ndGgsTDE9TWF0aC5tYXgoX2Qs'@; put 'VGgpLGMzPXIuZ2V0RGF0YSgpLnNsaWNlKFZvKS5tYXAodDg9PnQ4LnNsaWNlKGJsKSk7Zm9yKG5pPTA7bmk8TDE7bmkrPTEpaWYobmk8X2Qpe2ZvcihGaT0wLGdvPUh0W25pXS5sZW5ndGg7Rmk8RDEtZ287RmkrPTEpSHRbbmldLnB1c2goSHRbbmldW0ZpJWdvXSk7aWYobmk8YzMubGVuZ3Ro'@; put 'KWZvcihsZXQgdDg9MDt0ODxjM1tuaV0ubGVuZ3RoO3Q4Kz0xKUh0W25pXS5wdXNoKGMzW25pXVt0OF0pO2Vsc2UgSHRbbmldLnB1c2goLi4ubmV3IEFycmF5KGMzWzBdLmxlbmd0aCkuZmlsbChudWxsKSl9ZWxzZSBIdC5wdXNoKEh0W25pJWpyXS5zbGljZSgwLEwxKS5jb25jYXQoYzNbbmld'@; put 'KSk7ci5wb3B1bGF0ZUZyb21BcnJheShWbyxibCxIdCk7YnJlYWs7ZGVmYXVsdDpTby5yb3c9dXQucm93LFNvLmNvbD11dC5jb2w7bGV0IGZmLG05PTAsdjk9MCxvcD0hMDtjb25zdCBPMT0iQXV0b2ZpbGwuZmlsbCI9PT1Wbnx8ImF1dG9maWxsLmZpbGwiPT09Vm4sZTU9ZnVuY3Rpb24oQ0Es'@; put 'bHk9bnVsbCl7Y29uc3QgXzk9SHRbQ0ElSHQubGVuZ3RoXTtyZXR1cm4gbnVsbCE9PWx5P185W2x5JV85Lmxlbmd0aF06Xzl9LHRYPUh0Lmxlbmd0aCxMUD1kbj9kbi5yb3ctdXQucm93KzE6MDtmb3IoanI9ZG4/TFA6TWF0aC5tYXgodFgsTFApLG5pPTA7bmk8anImJiEoZG4mJlNvLnJvdz5k'@; put 'bi5yb3cmJkxQPnRYfHwhV2UuYWxsb3dJbnNlcnRSb3cmJlNvLnJvdz5yLmNvdW50Um93cygpLTF8fFNvLnJvdz49V2UubWF4Um93cyk7bmkrKyl7Y29uc3QgQ0E9TzE/bmk6bmktbTksbHk9ZTUoQ0EpLmxlbmd0aCxfOT1kbj9kbi5jb2wtdXQuY29sKzE6MDtpZihnbz1kbj9fOTpNYXRoLm1h'@; put 'eChseSxfOSksU28uY29sPXV0LmNvbCxmZj1yLmdldENlbGxNZXRhKFNvLnJvdyxTby5jb2wpLCJDb3B5UGFzdGUucGFzdGUiIT09Vm4mJiJBdXRvZmlsbC5maWxsIiE9PVZuJiYiYXV0b2ZpbGwuZmlsbCIhPT1Wbnx8IWZmLnNraXBSb3dPblBhc3RlKXtmb3Iodjk9MCxGaT0wO0ZpPGdvJiYh'@; put 'KGRuJiZTby5jb2w+ZG4uY29sJiZfOT5seXx8IVdlLmFsbG93SW5zZXJ0Q29sdW1uJiZTby5jb2w+ci5jb3VudENvbHMoKS0xfHxTby5jb2w+PVdlLm1heENvbHMpO0ZpKyspe2lmKGZmPXIuZ2V0Q2VsbE1ldGEoU28ucm93LFNvLmNvbCksKCJDb3B5UGFzdGUucGFzdGUiPT09Vm58fCJBdXRv'@; put 'ZmlsbC5maWxsIj09PVZufHwiYXV0b2ZpbGwuZmlsbCI9PT1WbikmJmZmLnNraXBDb2x1bW5PblBhc3RlKXt2OSs9MSxTby5jb2wrPTEsIkNvcHlQYXN0ZS5wYXN0ZSI9PT1WbiYmKGdvKz0xKTtjb250aW51ZX1pZihmZi5yZWFkT25seSYmIlVuZG9SZWRvLnVuZG8iIT09Vm4pe1NvLmNvbCs9'@; put 'MTtjb250aW51ZX1jb25zdCBPUD0hIWZmLnZhbHVlU2V0dGVyO2xldCBwMj1lNShDQSxPMT9GaTpGaS12OSksRDA9ci5nZXRTb3VyY2VEYXRhQXRDZWxsKFNvLnJvdyxTby5jb2wpPz9udWxsO2lmKG51bGwhPT1wMiYmIm9iamVjdCI9PXR5cGVvZiBwMilpZihBcnJheS5pc0FycmF5KHAyKSYm'@; put 'bnVsbD09PUQwJiYoRDA9W10pLE9QfHwib2JqZWN0Ij09dHlwZW9mIEQwJiZudWxsIT09RDApe2lmKG51bGwhPT1EMCl7Y29uc3Qgblg9T00oQXJyYXkuaXNBcnJheShEMCk/RDA6RDBbMF18fEQwKSxyWD1PTShBcnJheS5pc0FycmF5KHAyKT9wMjpwMlswXXx8cDIpO09QfHwiZWRpdCI9PT1W'@; put 'bnx8ZzcoblgsclgpfHxBcnJheS5pc0FycmF5KG5YKSYmQXJyYXkuaXNBcnJheShyWCk/cDI9QWQocDIpOm9wPSExfX1lbHNlIG9wPSExLGZmLnBhcnNlUGFzdGVkVmFsdWUmJiJDb3B5UGFzdGUucGFzdGUiPT09Vm4mJihvcD0hMCksImVkaXQiPT09Vm4mJihvcD0hMCxwMj1BZChwMikpO2Vs'@; put 'c2UhT1AmJm51bGwhPT1EMCYmIm9iamVjdCI9PXR5cGVvZiBEMCYmKG9wPSExKTtvcCYmWW8ucHVzaChbU28ucm93LFNvLmNvbCxwMl0pLG9wPSEwLFNvLmNvbCs9MX1Tby5yb3crPTF9ZWxzZSBtOSs9MSxTby5yb3crPTEsIkNvcHlQYXN0ZS5wYXN0ZSI9PT1WbiYmKGpyKz0xKX1yLnNldERh'@; put 'dGFBdENlbGwoWW8sbnVsbCxudWxsLFZufHwicG9wdWxhdGVGcm9tQXJyYXkiKX19fSx0aGlzLmluaXQ9ZnVuY3Rpb24oKXtjb25zdCB1dD1XZS50aGVtZSxIdD1XZS50aGVtZU5hbWUsZG49clooci5yb290Q29udGFpbmVyKTtpZihyMihyKSYmIWRuJiYoQ2EodXQpfHwhdXQmJiFIdCkmJnJp'@; put 'KHV0KSxhLnNldERhdGEoV2UuZGF0YSksci5ydW5Ib29rcygiYmVmb3JlSW5pdCIpLChRNSgpfHxQVygpKSYmWXIoci5yb290RWxlbWVudCwibW9iaWxlIiksdGhpcy51cGRhdGVTZXR0aW5ncyhaLCEwKSx0aGlzLnZpZXc9bmV3IGNrdCh0aGlzKSx1PVVUdC5nZXRJbnN0YW5jZShyLFdlLENu'@; put 'KSxFPWZ1bmN0aW9uIGdJdChuKXtjb25zdHtzZWxlY3Rpb246ZX09bjtsZXQgdD0hMSxyPSExO3JldHVybntyZXN1bWUoKXtyPSExfSxzdXNwZW5kKCl7cj0hMH0sc2tpcE5leHRTY3JvbGxDeWNsZSgpe3Q9ITB9LHNjcm9sbFRvKGkpe2lmKHR8fHIpcmV0dXJuIHZvaWQodD0hMSk7bGV0IG87'@; put 'ZS5pc0ZvY3VzU2VsZWN0aW9uQ2hhbmdlZCgpP289ZnVuY3Rpb24gdUl0KG4pe3JldHVybiBlPT57bi5zY3JvbGxWaWV3cG9ydFRvKGUudG9PYmplY3QoKSwoKT0+e2NvbnN0IHQ9bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIXQpcmV0dXJuO2NvbnN0e3JvdzpyLGNvbDppfT10Lmhp'@; put 'Z2hsaWdodDtudWxsIT09ciYmbnVsbCE9PWkmJmZUKG4uZ2V0Q2VsbChyLGksITApKX0pfX0obik6ZS5pc1NlbGVjdGVkQnlDb3JuZXIoKT9vPSgpPT57fTplLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpP289ZnVuY3Rpb24gZkl0KG4pe3JldHVybiBlPT57Y29uc3QgdD1RWShuKS5nZXRDb21w'@; put 'dXRlZFJvd1RhcmdldChlKTtuLnNjcm9sbFZpZXdwb3J0VG8oe3Jvdzp0fSwoKT0+e2NvbnN0IHI9ISFuLmdldFNldHRpbmdzKCkucm93SGVhZGVycztmVChuLmdldENlbGwodCxyPy0xOjAsITApKX0pfX0obik6ZS5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKT9vPWZ1bmN0aW9uIGxJdChu'@; put 'KXtyZXR1cm4gZT0+e2NvbnN0IHQ9UVkobikuZ2V0Q29tcHV0ZWRDb2x1bW5UYXJnZXQoZSk7bi5zY3JvbGxWaWV3cG9ydFRvKHtjb2w6dH0sKCk9Pntjb25zdCByPSEhbi5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnM7ZlQobi5nZXRDZWxsKHI/LTE6MCx0LCEwKSl9KX19KG4pOjE9PT1lLmdl'@; put 'dFNlbGVjdGVkUmFuZ2UoKS5zaXplKCkmJmUuaXNNdWx0aXBsZSgpP289ZnVuY3Rpb24gZEl0KG4pe3JldHVybiBlPT57Y29uc3QgdD1RWShuKSxyPXtyb3c6dC5nZXRDb21wdXRlZFJvd1RhcmdldChlKSxjb2w6dC5nZXRDb21wdXRlZENvbHVtblRhcmdldChlKX07bi5zY3JvbGxWaWV3cG9y'@; put 'dFRvKHIsKCk9Pntjb25zdHtyb3c6aSxjb2w6b309cjtmVChuLmdldENlbGwoaSxvLCEwKSl9KX19KG4pOjEhPT1lLmdldFNlbGVjdGVkUmFuZ2UoKS5zaXplKCl8fGUuaXNNdWx0aXBsZSgpP2UuZ2V0U2VsZWN0ZWRSYW5nZSgpLnNpemUoKT4xJiYobz1mdW5jdGlvbiBoSXQobil7cmV0dXJu'@; put 'IGU9Pntjb25zdCB0PVFZKG4pLHI9e3Jvdzp0LmdldENvbXB1dGVkUm93VGFyZ2V0KGUpLGNvbDp0LmdldENvbXB1dGVkQ29sdW1uVGFyZ2V0KGUpfTtuLnNjcm9sbFZpZXdwb3J0VG8ociwoKT0+e2NvbnN0e3JvdzppLGNvbDpvfT1yO2ZUKG4uZ2V0Q2VsbChpLG8sITApKX0pfX0obikpOm89'@; put 'ZnVuY3Rpb24gcEl0KG4pe3JldHVybiBlPT57Y29uc3QgdD1uLnNlbGVjdGlvbi5nZXRTZWxlY3Rpb25Tb3VyY2UoKSx7cm93OnIsY29sOml9PWUsbz0oKT0+e2ZUKG4uZ2V0Q2VsbChyLGksITApKX07aWYocjwwJiZpPj0wKW4uc2Nyb2xsVmlld3BvcnRUbyh7Y29sOml9LG8pO2Vsc2UgaWYo'@; put 'aTwwJiZyPj0wKW4uc2Nyb2xsVmlld3BvcnRUbyh7cm93OnJ9LG8pO2Vsc2V7aWYoIm1vdXNlIj09PXQmJihpPT09bi52aWV3LmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCl8fHI9PT1uLnZpZXcuZ2V0TGFzdFBhcnRpYWxseVZpc2libGVSb3coKSkpcmV0dXJuO24uc2Nyb2xsVmll'@; put 'd3BvcnRUbyh7cm93OnIsY29sOml9LG8pfX19KG4pLG8/LihpKX19fShyKSxnLmluaXQoKSxyMih0aGlzKSl7KGZ1bmN0aW9uIHFEdChuKXtpZighR3Ape0dwPW4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxHcC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJzdGF0dXMiKSxHcC5z'@; put 'ZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsImFzc2VydGl2ZSIpLEdwLnNldEF0dHJpYnV0ZSgiYXJpYS1hdG9taWMiLCJ0cnVlIik7Y29uc3QgdD1HcC5zdHlsZTt0LnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC53aWR0aD0iMXB4Iix0LmhlaWdodD0iMXB4Iix0Lm1hcmdpbj0iLTFweCIsdC5vdmVy'@; put 'Zmxvdz0iaGlkZGVuIix0LmNsaXBQYXRoPSJyZWN0KDAgMCAwIDApIix0LndoaXRlU3BhY2U9Im5vd3JhcCIsbi5hcHBlbmRDaGlsZChHcCl9c1orPTF9KShyLnJvb3RQb3J0YWxFbGVtZW50KSxmdW5jdGlvbiB0THQobil7Y29uc3QgZT1uLnJvb3RTbG90Qm90dG9tRWxlbWVudDtpZighZSly'@; put 'ZXR1cm47Y29uc3QgdD1uLmdldFNldHRpbmdzKCkubGljZW5zZUtleSxyPXR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy5lbnY/LkhPVF9SRUxFQVNFX0RBVEU/IjMwLzA2LzIwMjYiOiIiLGk9SXhlKHtjbGFzc05hbWU6JEllLGtleTp0LGVsZW1lbnQ6ZSxyZWxlYXNlRGF0ZTpyfSk7aSYm'@; put 'KGkuY2xhc3NMaXN0LmFkZChaSWUpLGUuYXBwZW5kQ2hpbGQoaSksbi5nZXRGb2N1c1Njb3BlTWFuYWdlcigpLnJlZ2lzdGVyU2NvcGUoR0llLGkse3Nob3J0Y3V0c0NvbnRleHROYW1lOkpEdCxydW5Pbmx5SWY6KCk9Pm51bGwhPT1xSWUobiksb25BY3RpdmF0ZTpvPT57Y29uc3QgYT1mdW5j'@; put 'dGlvbiBlTHQobil7Y29uc3QgZT1xSWUobik7cmV0dXJuIGU/QXJyYXkuZnJvbShlLnF1ZXJ5U2VsZWN0b3JBbGwoImFbaHJlZl0iKSk6W119KG4pO2EubGVuZ3RoPjAmJigidGFiX2Zyb21fYWJvdmUiPT09bz9hLmF0KDApPy5mb2N1cygpOiJ0YWJfZnJvbV9iZWxvdyI9PT1vJiZhLmF0KC0x'@; put 'KT8uZm9jdXMoKSl9fSkpfShyKTtjb25zdCBWbj17dG9wOi0xLGJvdHRvbTotMX07dGhpcy5hZGRIb29rKCJhZnRlclJlbmRlciIsKCk9PntpZihyLmlzRGVzdHJveWVkKXJldHVybjtjb25zdHt2aWV3Om5pfT1yO2lmKCFuaSlyZXR1cm47bGV0IGpyPW5pLmlzSG9yaXpvbnRhbGx5U2Nyb2xs'@; put 'YWJsZUJ5V2luZG93KCk/bmkuZ2V0VG90YWxUYWJsZVdpZHRoKCk6bmkuZ2V0V29ya3NwYWNlV2lkdGgoKTswPT09anImJnIucm9vdFdyYXBwZXJFbGVtZW50JiYoanI9ci5yb290V3JhcHBlckVsZW1lbnQub2Zmc2V0V2lkdGgpLHIucm9vdFNsb3RCb3R0b21FbGVtZW50JiZqciE9PVZuLmJv'@; put 'dHRvbSYmKFZuLmJvdHRvbT1qcixyLnJvb3RTbG90Qm90dG9tRWxlbWVudC5zdHlsZS53aWR0aD1gJHtqcn1weGApLHIucm9vdFNsb3RUb3BFbGVtZW50JiZqciE9PVZuLnRvcCYmKFZuLnRvcD1qcixyLnJvb3RTbG90VG9wRWxlbWVudC5zdHlsZS53aWR0aD1gJHtqcn1weGApfSl9ci5ydW5I'@; put 'b29rcygiaW5pdCIpLHRoaXMucmVuZGVyKCksTyYmbnVsbD09PXIucm9vdEVsZW1lbnQub2Zmc2V0UGFyZW50JiZvQWUoci5yb290RWxlbWVudCwoKT0+e3Iudmlldy5fd3Qud3RPdmVybGF5cy51cGRhdGVMYXN0U3ByZWFkZXJTaXplKCksci52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHIu'@; put 'cmVuZGVyKCl9KSwib2JqZWN0Ij09dHlwZW9mIE8mJihyLnJ1bkhvb2tzKCJhZnRlckNoYW5nZSIsT1swXSxPWzFdKSxPPSExKSxyLnJ1bkhvb2tzKCJhZnRlckluaXQiKX0sdGhpcy5fY3JlYXRlQ2VsbENvb3Jkcz1mdW5jdGlvbih1dCxIdCl7cmV0dXJuIHIudmlldy5fd3QuY3JlYXRlQ2Vs'@; put 'bENvb3Jkcyh1dCxIdCl9LHRoaXMuX2NyZWF0ZUNlbGxSYW5nZT1mdW5jdGlvbih1dCxIdCxkbil7cmV0dXJuIHIudmlldy5fd3QuY3JlYXRlQ2VsbFJhbmdlKHV0LEh0LGRuKX0sdGhpcy52YWxpZGF0ZUNlbGw9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2xldCBJcj1yLmdldENlbGxWYWxpZGF0'@; put 'b3IoSHQpO2Z1bmN0aW9uIG5pKGpyLEZpPSEwKXtpZighRml8fCEwPT09SHQuaGlkZGVuKXJldHVybiB2b2lkIGRuKGpyKTtjb25zdCBnbz1IdC52aXN1YWxDb2wsWW89SHQudmlzdWFsUm93LFNvPXIuZ2V0Q2VsbChZbyxnbywhMCk7aWYoU28mJiJUSCIhPT1Tby5ub2RlTmFtZSl7Y29uc3Qg'@; put 'UmE9ci5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFlvKSxWbz1yLmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoZ28pO3Iudmlldy5fd3QuZ2V0U2V0dGluZygiY2VsbFJlbmRlcmVyIixSYSxWbyxTbyl9ZG4oanIpfWlm'@; put 'KFR4ZShJcikmJihJcj1mdW5jdGlvbihqcil7cmV0dXJuIGZ1bmN0aW9uKEZpLGdvKXtnbyhqci50ZXN0KEZpKSl9fShJcikpLF9hKElyKSl7Y29uc3QganI9X2EoSHQucHJvcCk/SHQudmlzdWFsQ29sOkh0LnByb3A7dXQ9ci5ydW5Ib29rcygiYmVmb3JlVmFsaWRhdGUiLHV0LEh0LnZpc3Vh'@; put 'bFJvdyxqcixWbiksci5fcmVnaXN0ZXJNaWNyb3Rhc2soKCk9PntJci5jYWxsKEh0LHV0LEZpPT57ciYmKEZpPXIucnVuSG9va3MoImFmdGVyVmFsaWRhdGUiLEZpLHV0LEh0LnZpc3VhbFJvdyxqcixWbiksSHQudmFsaWQ9RmksbmkoRmkpLHIucnVuSG9va3MoInBvc3RBZnRlclZhbGlkYXRl'@; put 'IixGaSx1dCxIdC52aXN1YWxSb3csanIsVm4pKX0pfSl9ZWxzZSByLl9yZWdpc3Rlck1pY3JvdGFzaygoKT0+e0h0LnZhbGlkPSEwLG5pKEh0LnZhbGlkLCExKX0pfSx0aGlzLnNldERhdGFBdENlbGw9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2NvbnN0IElyPXRpKHV0LEh0LGRuKSxuaT1bXTts'@; put 'ZXQgRmksZ28sWW8sanI9Vm47Zm9yKEZpPTAsZ289SXIubGVuZ3RoO0ZpPGdvO0ZpKyspe2NvbnN0W1JhLFZvLGJsXT1JcltGaV07Im9iamVjdCIhPXR5cGVvZiBJcltGaV0mJkpyKCJNZXRob2QgYHNldERhdGFBdENlbGxgIGFjY2VwdHMgcm93IG51bWJlciBvciBjaGFuZ2VzIGFycmF5IG9m'@; put 'IGFycmF5cyBhcyBpdHMgZmlyc3QgcGFyYW1ldGVyIiksIm51bWJlciIhPXR5cGVvZiBJcltGaV1bMV0mJkpyKCJNZXRob2QgYHNldERhdGFBdENlbGxgIGFjY2VwdHMgcm93IGFuZCBjb2x1bW4gbnVtYmVyIGFzIGl0cyBwYXJhbWV0ZXJzLiBJZiB5b3Ugd2FudCB0byB1c2Ugb2JqZWN0IHBy'@; put 'b3BlcnR5IG5hbWUsIHVzZSBtZXRob2QgYHNldERhdGFBdFJvd1Byb3BgIik7Y29uc3QgRDE9Im51bWJlciI9PXR5cGVvZiBWbz9WbzowO1lvPUQxPj10aGlzLmNvdW50Q29scygpP0QxOm8uY29sVG9Qcm9wKEQxKSxuaS5wdXNoKFtSYSxZbyxhLmdldEF0Q2VsbCh0aGlzLnRvUGh5c2ljYWxS'@; put 'b3coUmEpLFZvKSxibF0pfSFqciYmIm9iamVjdCI9PXR5cGVvZiB1dCYmKGpyPUh0KTtjb25zdCBTbz1mcihuaSxqcik7ci5ydW5Ib29rcygiYWZ0ZXJTZXREYXRhQXRDZWxsIixTbyxqciksQW4oU28sanIsKCk9PntIcihTbyxqcil9KX0sdGhpcy5zZXREYXRhQXRSb3dQcm9wPWZ1bmN0aW9u'@; put 'KHV0LEh0LGRuLFZuKXtjb25zdCBJcj10aSh1dCxIdCxkbiksbmk9W107bGV0IEZpLGdvLGpyPVZuO2ZvcihGaT0wLGdvPUlyLmxlbmd0aDtGaTxnbztGaSsrKXtjb25zdFtTbyxSYSxWb109SXJbRmldO25pLnB1c2goW1NvLFJhLGEuZ2V0QXRDZWxsKHRoaXMudG9QaHlzaWNhbFJvdyhTbyks'@; put 'UmEpLFZvXSl9IWpyJiYib2JqZWN0Ij09dHlwZW9mIHV0JiYoanI9SHQpO2NvbnN0IFlvPWZyKG5pLGpyKTtyLnJ1bkhvb2tzKCJhZnRlclNldERhdGFBdFJvd1Byb3AiLFlvLGpyKSxBbihZbyxqciwoKT0+e0hyKFlvLGpyKX0pfSx0aGlzLmxpc3Rlbj1mdW5jdGlvbigpe3ImJiFyLmlzTGlz'@; put 'dGVuaW5nKCkmJihEZGUuZm9yRWFjaCh1dD0+e3IhPT11dCYmdXQudW5saXN0ZW4oKX0pLElkZT1yLmd1aWQsci5ydW5Ib29rcygiYWZ0ZXJMaXN0ZW4iKSl9LHRoaXMudW5saXN0ZW49ZnVuY3Rpb24oKXt0aGlzLmlzTGlzdGVuaW5nKCkmJihJZGU9bnVsbCxyLnJ1bkhvb2tzKCJhZnRlclVu'@; put 'bGlzdGVuIikpfSx0aGlzLmlzTGlzdGVuaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIElkZT09PXIuZ3VpZH0sdGhpcy5kZXN0cm95RWRpdG9yPWZ1bmN0aW9uKHV0PSExLEh0PSEwKXt1LmNsb3NlRWRpdG9yKHV0KSxyLnZpZXcucmVuZGVyKCksSHQmJkNuLmlzU2VsZWN0ZWQoKSYmdS5wcmVwYXJl'@; put 'RWRpdG9yKCl9LHRoaXMucG9wdWxhdGVGcm9tQXJyYXk9ZnVuY3Rpb24odXQsSHQsZG4sVm4sSXIsbmksanIpeyJvYmplY3QiPT10eXBlb2YgZG4mJiJvYmplY3QiPT10eXBlb2YgZG5bMF18fEpyKCJwb3B1bGF0ZUZyb21BcnJheSBwYXJhbWV0ZXIgYGlucHV0YCBtdXN0IGJlIGFuIGFycmF5'@; put 'IG9mIGFycmF5cyIpO2NvbnN0IEZpPSJudW1iZXIiPT10eXBlb2YgVm4/ci5fY3JlYXRlQ2VsbENvb3JkcyhWbixJcik6dm9pZCAwO3JldHVybiBsLnBvcHVsYXRlRnJvbUFycmF5KHIuX2NyZWF0ZUNlbGxDb29yZHModXQsSHQpLGRuLEZpLG5pLGpyKX0sdGhpcy5zcGxpY2VDb2w9ZnVuY3Rp'@; put 'b24odXQsSHQsZG4sLi4uVm4pe3JldHVybiBvLnNwbGljZUNvbCh1dCxIdCxkbiwuLi5Wbil9LHRoaXMuc3BsaWNlUm93PWZ1bmN0aW9uKHV0LEh0LGRuLC4uLlZuKXtyZXR1cm4gby5zcGxpY2VSb3codXQsSHQsZG4sLi4uVm4pfSx0aGlzLmdldFNlbGVjdGVkPWZ1bmN0aW9uKCl7aWYoQ24u'@; put 'aXNTZWxlY3RlZCgpKXJldHVybiBfYyhDbi5nZXRTZWxlY3RlZFJhbmdlKCkucmFuZ2VzLCh7ZnJvbTp1dCx0bzpIdH0pPT5bdXQucm93LHV0LmNvbCxIdC5yb3csSHQuY29sXSl9LHRoaXMuZ2V0U2VsZWN0ZWRMYXN0PWZ1bmN0aW9uKCl7Y29uc3QgdXQ9ci5nZXRTZWxlY3RlZCgpO2xldCBI'@; put 'dDtyZXR1cm4gdXQmJnV0Lmxlbmd0aD4wJiYoSHQ9dXRbdXQubGVuZ3RoLTFdKSxIdH0sdGhpcy5nZXRTZWxlY3RlZEFjdGl2ZT1mdW5jdGlvbigpe2NvbnN0IHV0PXIuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCF1dClyZXR1cm47Y29uc3R7ZnJvbTpIdCx0bzpkbn09dXQ7cmV0dXJu'@; put 'W0h0LnJvdyxIdC5jb2wsZG4ucm93LGRuLmNvbF19LHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZT1mdW5jdGlvbigpe2lmKENuLmlzU2VsZWN0ZWQoKSlyZXR1cm4gQXJyYXkuZnJvbShDbi5nZXRTZWxlY3RlZFJhbmdlKCkpfSx0aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0PWZ1bmN0aW9uKCl7Y29u'@; put 'c3QgdXQ9ci5nZXRTZWxlY3RlZFJhbmdlKCk7bGV0IEh0O3JldHVybiB1dCYmdXQubGVuZ3RoPjAmJihIdD11dFt1dC5sZW5ndGgtMV0pLEh0fSx0aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gQ24uZ2V0QWN0aXZlU2VsZWN0ZWRSYW5nZSgpfSx0aGlzLmdl'@; put 'dEFjdGl2ZVNlbGVjdGlvbkxheWVySW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gQ24uZ2V0QWN0aXZlU2VsZWN0aW9uTGF5ZXJJbmRleCgpfSx0aGlzLmVtcHR5U2VsZWN0ZWRDZWxscz1mdW5jdGlvbih1dCl7aWYoIUNuLmlzU2VsZWN0ZWQoKXx8MD09PXRoaXMuY291bnRSb3dzKCl8fDA9PT10'@; put 'aGlzLmNvdW50Q29scygpKXJldHVybjtjb25zdCBIdD1bXTtYbihDbi5nZXRTZWxlY3RlZFJhbmdlKCksZG49PntpZihkbi5pc1NpbmdsZUhlYWRlcigpKXJldHVybjtjb25zdCBWbj1kbi5nZXRUb3BTdGFydENvcm5lcigpLElyPWRuLmdldEJvdHRvbUVuZENvcm5lcigpLG5pPU1hdGgubWF4'@; put 'KFZuLnJvdywwKSxqcj1NYXRoLm1pbihJci5yb3csdGhpcy5jb3VudFJvd3MoKS0xKSxGaT1NYXRoLm1heChWbi5jb2wsMCksZ289TWF0aC5taW4oSXIuY29sLHRoaXMuY291bnRDb2xzKCktMSk7bmk+anJ8fEZpPmdvfHxWYShuaSxqcixTbz0+e1ZhKEZpLGdvLFJhPT57dGhpcy5nZXRDZWxs'@; put 'TWV0YShTbyxSYSkucmVhZE9ubHl8fEh0LnB1c2goW1NvLFJhLG51bGxdKX0pfSl9KSxIdC5sZW5ndGg+MCYmdGhpcy5zZXREYXRhQXRDZWxsKEh0LHV0KX0sdGhpcy5pc1JlbmRlclN1c3BlbmRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXI+MH0sdGhp'@; put 'cy5zdXNwZW5kUmVuZGVyPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyKz0xfSx0aGlzLnJlc3VtZVJlbmRlcj1mdW5jdGlvbigpe2NvbnN0IHV0PXRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlci0xO3RoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlcj1NYXRoLm1heCh1'@; put 'dCwwKSwhdGhpcy5pc1JlbmRlclN1c3BlbmRlZCgpJiZ1dD09PXRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlciYmci52aWV3LnJlbmRlcigpfSx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMudmlldyYmKHRoaXMuZm9yY2VGdWxsUmVuZGVyPSEwLHRoaXMuaXNSZW5kZXJTdXNwZW5kZWQo'@; put 'KXx8ci52aWV3LnJlbmRlcigpKX0sdGhpcy5iYXRjaFJlbmRlcj1mdW5jdGlvbih1dCl7ci5zdXNwZW5kUmVuZGVyKCk7Y29uc3QgSHQ9dXQoKTtyZXR1cm4gci5yZXN1bWVSZW5kZXIoKSxIdH0sdGhpcy5pc0V4ZWN1dGlvblN1c3BlbmRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmV4ZWN1'@; put 'dGlvblN1c3BlbmRlZENvdW50ZXI+MH0sdGhpcy5zdXNwZW5kRXhlY3V0aW9uPWZ1bmN0aW9uKCl7dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyKz0xLHRoaXMuY29sdW1uSW5kZXhNYXBwZXIuc3VzcGVuZE9wZXJhdGlvbnMoKSx0aGlzLnJvd0luZGV4TWFwcGVyLnN1c3BlbmRPcGVy'@; put 'YXRpb25zKCl9LHRoaXMucmVzdW1lRXhlY3V0aW9uPWZ1bmN0aW9uKHV0PSExKXtjb25zdCBIdD10aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXItMTt0aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXI9TWF0aC5tYXgoSHQsMCksKCF0aGlzLmlzRXhlY3V0aW9uU3VzcGVuZGVkKCkm'@; put 'Jkh0PT09dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyfHx1dCkmJih0aGlzLmNvbHVtbkluZGV4TWFwcGVyLnJlc3VtZU9wZXJhdGlvbnMoKSx0aGlzLnJvd0luZGV4TWFwcGVyLnJlc3VtZU9wZXJhdGlvbnMoKSl9LHRoaXMuYmF0Y2hFeGVjdXRpb249ZnVuY3Rpb24odXQsSHQ9ITEp'@; put 'e3Iuc3VzcGVuZEV4ZWN1dGlvbigpO2NvbnN0IGRuPXV0KCk7cmV0dXJuIHIucmVzdW1lRXhlY3V0aW9uKEh0KSxkbn0sdGhpcy5iYXRjaD1mdW5jdGlvbih1dCl7ci5zdXNwZW5kUmVuZGVyKCksci5zdXNwZW5kRXhlY3V0aW9uKCk7Y29uc3QgSHQ9dXQoKTtyZXR1cm4gci5yZXN1bWVFeGVj'@; put 'dXRpb24oKSxyLnJlc3VtZVJlbmRlcigpLEh0fSx0aGlzLnJlZnJlc2hEaW1lbnNpb25zPWZ1bmN0aW9uKCl7aWYoIXIudmlldylyZXR1cm47Y29uc3QgdXQ9ci52aWV3LHt3aWR0aDpIdCxoZWlnaHQ6ZG59PXV0LmdldExhc3RTaXplKCkse3dpZHRoOlZuLGhlaWdodDpJcn09ci5yb290RWxl'@; put 'bWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuaT1WbiE9PUh0fHxJciE9PWRuOyExIT09ci5ydW5Ib29rcygiYmVmb3JlUmVmcmVzaERpbWVuc2lvbnMiLHt3aWR0aDpIdCxoZWlnaHQ6ZG59LHt3aWR0aDpWbixoZWlnaHQ6SXJ9LG5pKSYmKChuaXx8dXQuX3d0Lnd0T3ZlcmxheXMuc2Ny'@; put 'b2xsYWJsZUVsZW1lbnQ9PT1yLnJvb3RXaW5kb3cpJiYodXQuc2V0TGFzdFNpemUoVm4sSXIpLHV0LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHIucmVuZGVyKCkpLHIucnVuSG9va3MoImFmdGVyUmVmcmVzaERpbWVuc2lvbnMiLHt3aWR0aDpIdCxoZWlnaHQ6ZG59LHt3aWR0aDpWbixoZWlnaHQ6'@; put 'SXJ9LG5pKSl9LHRoaXMudXBkYXRlRGF0YT1mdW5jdGlvbih1dCxIdCl7c0llKHV0LGRuPT57bz1kbn0sZG49PntvPWRuLHIuY29sdW1uSW5kZXhNYXBwZXIuZml0VG9MZW5ndGgodGhpcy5nZXRJbml0aWFsQ29sdW1uQ291bnQoKSksci5yb3dJbmRleE1hcHBlci5maXRUb0xlbmd0aCh0aGlz'@; put 'LmNvdW50U291cmNlUm93cygpKSxsLmFkanVzdFJvd3NBbmRDb2xzKCksQ24ubWFya1NvdXJjZSgidXBkYXRlRGF0YSIpLENuLnJlZnJlc2goKSxDbi5tYXJrRW5kU291cmNlKCl9LHtob3RJbnN0YW5jZTpyLGRhdGFNYXA6byxkYXRhU291cmNlOmEsaW50ZXJuYWxTb3VyY2U6InVwZGF0ZURh'@; put 'dGEiLHNvdXJjZTpIdCxtZXRhTWFuYWdlcjpIZSxmaXJzdFJ1bjpPfSl9LHRoaXMubG9hZERhdGE9ZnVuY3Rpb24odXQsSHQpe3NJZSh1dCxkbj0+e289ZG59LCgpPT57SGUuY2xlYXJDZWxsc0NhY2hlKCksci5pbml0SW5kZXhNYXBwZXJzKCksbC5hZGp1c3RSb3dzQW5kQ29scygpLENuLm1h'@; put 'cmtTb3VyY2UoImxvYWREYXRhIiksQ24ucmVmcmVzaCgpLENuLm1hcmtFbmRTb3VyY2UoKSxPJiYoTz1bbnVsbCwibG9hZERhdGEiXSl9LHtob3RJbnN0YW5jZTpyLGRhdGFNYXA6byxkYXRhU291cmNlOmEsaW50ZXJuYWxTb3VyY2U6ImxvYWREYXRhIixzb3VyY2U6SHQsbWV0YU1hbmFnZXI6'@; put 'SGUsZmlyc3RSdW46T30pfSx0aGlzLmdldEluaXRpYWxDb2x1bW5Db3VudD1mdW5jdGlvbigpe2NvbnN0IHV0PVdlLmNvbHVtbnM7bGV0IEh0PTA7aWYoQXJyYXkuaXNBcnJheSh1dCkpSHQ9dXQubGVuZ3RoO2Vsc2UgaWYoX2EodXQpKWlmKCJhcnJheSI9PT1yLmRhdGFUeXBlKXtjb25zdCBk'@; put 'bj1yLmNvdW50U291cmNlQ29scygpO2ZvcihsZXQgVm49MDtWbjxkbjtWbis9MSl1dChWbikmJihIdCs9MSl9ZWxzZSgib2JqZWN0Ij09PXIuZGF0YVR5cGV8fCJmdW5jdGlvbiI9PT1yLmRhdGFUeXBlKSYmKEh0PW8uY29sVG9Qcm9wQ2FjaGUubGVuZ3RoKTtlbHNlIGlmKFpvKFdlLmRhdGFT'@; put 'Y2hlbWEpKXtjb25zdCBkbj1vLmdldFNjaGVtYSgpO0h0PUFycmF5LmlzQXJyYXkoZG4pP2RuLmxlbmd0aDpPVyhkbil9ZWxzZSBIdD1yLmNvdW50U291cmNlQ29scygpO3JldHVybiBIdH0sdGhpcy5pbml0SW5kZXhNYXBwZXJzPWZ1bmN0aW9uKCl7dGhpcy5jb2x1bW5JbmRleE1hcHBlci5p'@; put 'bml0VG9MZW5ndGgodGhpcy5nZXRJbml0aWFsQ29sdW1uQ291bnQoKSksdGhpcy5yb3dJbmRleE1hcHBlci5pbml0VG9MZW5ndGgodGhpcy5jb3VudFNvdXJjZVJvd3MoKSl9LHRoaXMuZ2V0RGF0YT1mdW5jdGlvbih1dCxIdCxkbixWbil7cmV0dXJuIFh1KHV0KT9vLmdldEFsbCgpOm8uZ2V0'@; put 'UmFuZ2Uoci5fY3JlYXRlQ2VsbENvb3Jkcyh1dCxIdCksci5fY3JlYXRlQ2VsbENvb3JkcyhkbixWbiksaU8uREVTVElOQVRJT05fUkVOREVSRVIpfSx0aGlzLmdldENvcHlhYmxlVGV4dD1mdW5jdGlvbih1dCxIdCxkbixWbil7cmV0dXJuIG8uZ2V0Q29weWFibGVUZXh0KHIuX2NyZWF0ZUNl'@; put 'bGxDb29yZHModXQsSHQpLHIuX2NyZWF0ZUNlbGxDb29yZHMoZG4sVm4pKX0sdGhpcy5nZXRDb3B5YWJsZURhdGE9ZnVuY3Rpb24odXQsSHQpe3JldHVybiBvLmdldENvcHlhYmxlKHV0LG8uY29sVG9Qcm9wKEh0KSl9LHRoaXMuZ2V0Q29weWFibGVTb3VyY2VEYXRhPWZ1bmN0aW9uKHV0LEh0'@; put 'KXtyZXR1cm4gYS5nZXRDb3B5YWJsZSh1dCxvLmNvbFRvUHJvcChIdCkpfSx0aGlzLmdldFNjaGVtYT1mdW5jdGlvbigpe3JldHVybiBvLmdldFNjaGVtYSgpfSx0aGlzLnVwZGF0ZVNldHRpbmdzPWZ1bmN0aW9uKHV0LEh0PSExKXtjb25zdCBkbj0oTz9yLmxvYWREYXRhOnIudXBkYXRlRGF0'@; put 'YSkuYmluZCh0aGlzKTtsZXQgVm4sSXI7Zm9yKFZuIGluIFpvKHV0LnJvd3MpJiZKcignVGhlICJyb3dzIiBzZXR0aW5nIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIERvIHlvdSBtZWFuIHN0YXJ0Um93cywgbWluUm93cyBvciBtYXhSb3dzPycpLFpvKHV0LmNvbHMpJiZKcignVGhlICJjb2xz'@; put 'IiBzZXR0aW5nIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIERvIHlvdSBtZWFuIHN0YXJ0Q29scywgbWluQ29scyBvciBtYXhDb2xzPycpLFpvKHV0LmdhbnR0Q2hhcnQpJiZKcignU2luY2UgOC4wLjAgdGhlICJnYW50dENoYXJ0IiBzZXR0aW5nIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuJyks'@; put 'Wm8odXQucm93SGVpZ2h0cykmJlpvKHV0Lm1pblJvd0hlaWdodHMpJiZIYSgiQm90aCBgcm93SGVpZ2h0c2AgYW5kIGBtaW5Sb3dIZWlnaHRzYCBhcmUgZGVmaW5lZCBpbiB5b3VyIGNvbmZpZ3VyYXRpb24uIEFzIG9uZSBpcyB0aGUgYWxpYXMgb2YgdGhlIG90aGVyLCBvbmx5IG9uZSBvZiB0'@; put 'aGVtIGNhbiBiZSB1c2VkIGF0IGEgdGltZS4gYHJvd0hlaWdodHNgIHdpbGwgYmUgdXNlZCBhcyB0aGUgcm93IGhlaWdodCBjb25maWd1cmF0aW9uLiIpLHV0KWlmKCJkYXRhIiE9PVZuJiYibGFuZ3VhZ2UiIT09Vm4paWYoImNsYXNzTmFtZSI9PT1WbilUcigiY2xhc3NOYW1lIix1dC5jbGFz'@; put 'c05hbWUpO2Vsc2UgaWYoInRhYmxlQ2xhc3NOYW1lIj09PVZuJiZyLnRhYmxlKVRyKCJ0YWJsZUNsYXNzTmFtZSIsdXQudGFibGVDbGFzc05hbWUpLHIudmlldy5fd3Qud3RPdmVybGF5cy5zeW5jT3ZlcmxheVRhYmxlQ2xhc3NOYW1lcygpO2Vsc2UgaWYoR28uZ2V0U2luZ2xldG9uKCkuaXNS'@; put 'ZWdpc3RlcmVkKFZuKXx8R28uZ2V0U2luZ2xldG9uKCkuaXNEZXByZWNhdGVkKFZuKSl7Y29uc3QgVm89dXRbVm5dO19hKFZvKT8oR28uZ2V0U2luZ2xldG9uKCkuYWRkQXNGaXhlZChWbixWbyxyKSxXZVtWbl09Vm8pOkFycmF5LmlzQXJyYXkoVm8pJiYoR28uZ2V0U2luZ2xldG9uKCkuYWRk'@; put 'KFZuLFZvLHIpLFdlW1ZuXT1Wbyl9ZWxzZSFIdCYmUmQodXQsVm4pJiYoYXRbVm5dPXV0W1ZuXSk7Y29uc3Qgbmk9clooci5yb290Q29udGFpbmVyKSxqcj1SZCh1dCwidGhlbWVOYW1lIiksRmk9UmQodXQsInRoZW1lIik7aWYoanImJkZpJiZIYSgiQm90aCBgdGhlbWVgIGFuZCBgdGhlbWVO'@; put 'YW1lYCBhcmUgZGVmaW5lZCBpbiB5b3VyIGNvbmZpZ3VyYXRpb24uIFRoZXNlIG9wdGlvbnMgYXJlIGFsaWFzZXMgYW5kIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLiBUaGUgYHRoZW1lTmFtZWAgb3B0aW9uIHdpbGwgYmUgaWdub3JlZC4iKSxIdCl7bGV0IFZvO0ZpJiYic3RyaW5nIj09dHlw'@; put 'ZW9mIHV0LnRoZW1lP1ZvPXV0LnRoZW1lOmpyJiYic3RyaW5nIj09dHlwZW9mIHV0LnRoZW1lTmFtZSYmdXQudGhlbWVOYW1lJiYhRmk/KFZvPXV0LnRoZW1lTmFtZSxXZS50aGVtZT11dC50aGVtZU5hbWUsV2UudGhlbWVOYW1lPXZvaWQgMCk6bmk/Vm89bmk6ci50aGVtZU1hbmFnZXImJihW'@; put 'bz1yLnRoZW1lTWFuYWdlci5nZXRDbGFzc05hbWUoKSksci51c2VUaGVtZShWbz8/bnVsbCl9ZWxzZXtjb25zdCBWbz1yLmdldEN1cnJlbnRUaGVtZU5hbWUoKTtpZihGaSYmInN0cmluZyI9PXR5cGVvZiB1dC50aGVtZSYmVm8hPT11dC50aGVtZSlyLnRoZW1lTWFuYWdlcj8udW5tb3VudCgp'@; put 'LHIudGhlbWVNYW5hZ2VyPW51bGwsci51c2VUaGVtZSh1dC50aGVtZSk7ZWxzZSBpZihqciYmIUZpJiZWbyE9PXV0LnRoZW1lTmFtZSlyLnRoZW1lTWFuYWdlcj8udW5tb3VudCgpLHIudGhlbWVNYW5hZ2VyPW51bGwsV2UudGhlbWU9dXQudGhlbWVOYW1lLFdlLnRoZW1lTmFtZT12b2lkIDAs'@; put 'ci51c2VUaGVtZSh1dC50aGVtZU5hbWUpO2Vsc2UgaWYocjIocikmJiFuaSYmQ2EodXQudGhlbWUpKWlmKG51bGw9PT1yLnRoZW1lTWFuYWdlcilyaSh1dC50aGVtZSksci51c2VUaGVtZShyLnRoZW1lTWFuYWdlci5nZXRDbGFzc05hbWUoKSk7ZWxzZXtsZXQgYmw7Ymw9ImZ1bmN0aW9uIiE9'@; put 'dHlwZW9mIHV0LnRoZW1lLmdldFRoZW1lQ29uZmlnP1NPKHV0LnRoZW1lKTp1dC50aGVtZSxyLnRoZW1lTWFuYWdlci51cGRhdGUoYmwpLHIudXNlVGhlbWUoci50aGVtZU1hbmFnZXIuZ2V0Q2xhc3NOYW1lKCkpfX0hMD09PXIucnVuSG9va3MoImhhc0V4dGVybmFsRGF0YVNvdXJjZSIpPyh1'@; put 'dC5kYXRhJiZIYSgnVGhlICJkYXRhIiBzZXR0aW5nIGlzIGlnbm9yZWQgd2hlbiAiaGFzRXh0ZXJuYWxEYXRhU291cmNlIiByZXR1cm5zIGB0cnVlYC4nKSxIdHx8UmQodXQsImRhdGEiKXx8UmQodXQsImRhdGFQcm92aWRlciIpP2RuKFtdLCJ1cGRhdGVTZXR0aW5ncyIpOnZvaWQgMCE9PXV0'@; put 'LmNvbHVtbnMmJihvLmNyZWF0ZU1hcCgpLHIuaW5pdEluZGV4TWFwcGVycygpKSk6dm9pZCAwPT09dXQuZGF0YSYmdm9pZCAwPT09V2UuZGF0YT9kbihudWxsLCJ1cGRhdGVTZXR0aW5ncyIpOnZvaWQgMCE9PXV0LmRhdGE/ZG4odXQuZGF0YSwidXBkYXRlU2V0dGluZ3MiKTp2b2lkIDAhPT11'@; put 'dC5jb2x1bW5zJiYoby5jcmVhdGVNYXAoKSxyLmluaXRJbmRleE1hcHBlcnMoKSksIU8mJnV0Lmxhbmd1YWdlJiZmdW5jdGlvbiAkbih1dCl7Y29uc3QgSHQ9X1JlKHV0KTtVdWUoSHQpPyhyLnJ1bkhvb2tzKCJiZWZvcmVMYW5ndWFnZUNoYW5nZSIsSHQpLGF0Lmxhbmd1YWdlPUh0LHIucnVu'@; put 'SG9va3MoImFmdGVyTGFuZ3VhZ2VDaGFuZ2UiLEh0KSk6eVJlKHV0KX0odXQubGFuZ3VhZ2UpO2NvbnN0IGdvPXIuY291bnRDb2xzKCksWW89V2UuY29sdW1ucztpZih2b2lkIDAhPT11dC5jZWxsfHx2b2lkIDAhPT11dC5jZWxsc3x8dm9pZCAwIT09dXQuY29sdW1ucyl7Y29uc3QgVm89SGUu'@; put 'Z2V0VXNlckRlZmluZWRDZWxsTWV0YXMoKTtIZS5jbGVhckNhY2hlKCksVm8uZm9yRWFjaCgoe3BoeXNpY2FsUm93OmJsLHBoeXNpY2FsQ29sdW1uOkQxLGtleTpUaCx2YWx1ZTpmMn0pPT57SGUuc2V0Q2VsbE1ldGEoYmwsRDEsVGgsZjIpfSl9aWYoZ28+MClmb3IoVm49MCxJcj0wO1ZuPGdv'@; put 'O1ZuKyspe2lmKFlvKXtjb25zdCBWbz1fYShZbyk/WW8oVm4pOllvW0lyXTtWbyYmSGUudXBkYXRlQ29sdW1uTWV0YShJcixWbyl9SXIrPTF9aWYoWm8odXQuY2VsbCkpe0hlLmRpc2FibGVVc2VyRGVmaW5lZE1ldGFSZWNvcmRpbmcoKTt0cnl7dXQuY2VsbC5mb3JFYWNoKFZvPT57ci5zZXRD'@; put 'ZWxsTWV0YU9iamVjdChWby5yb3csVm8uY29sLFZvKX0pfWZpbmFsbHl7SGUuZW5hYmxlVXNlckRlZmluZWRNZXRhUmVjb3JkaW5nKCl9fXIucnVuSG9va3MoImFmdGVyQ2VsbE1ldGFSZXNldCIpLE8mJm9JZShyLCJpbml0Iik7bGV0IFNvPXIucm9vdEVsZW1lbnQuc3R5bGUuaGVpZ2h0OyIi'@; put 'IT09U28mJihTbz1wYXJzZUludChyLnJvb3RFbGVtZW50LnN0eWxlLmhlaWdodCwxMCkpLEh0JiZyLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSYmKHIucm9vdEVsZW1lbnQuZGF0YXNldC5pbml0aWFsc3R5bGU9ci5yb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIik/'@; put 'PyIiKTtsZXQgUmE9dXQuaGVpZ2h0O2lmKHR5cGVvZiB1dC5oZWlnaHQ8InUiKWlmKF9hKFJhKSYmKFJhPVJhKCkpLFJhPXIucnVuSG9va3MoImJlZm9yZUhlaWdodENoYW5nZSIsUmEpLG51bGw9PT1SYSl7Y29uc3QgVm89ci5yb290RWxlbWVudC5kYXRhc2V0LmluaXRpYWxzdHlsZTtWbyYm'@; put 'KFZvLmluZGV4T2YoImhlaWdodCIpPi0xfHxWby5pbmRleE9mKCJvdmVyZmxvdyIpPi0xKT9yLnJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLFZvKTooci5yb290RWxlbWVudC5zdHlsZS5oZWlnaHQ9IiIsci5yb290RWxlbWVudC5zdHlsZS5vdmVyZmxvdz0iIil9ZWxzZSB2b2lk'@; put 'IDAhPT1SYSYmKHIucm9vdEVsZW1lbnQuc3R5bGUuaGVpZ2h0PWlzTmFOKFJhKT9gJHtSYX1gOmAke1JhfXB4YCxyLnJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJjbGlwIik7aWYodHlwZW9mIHV0LndpZHRoPCJ1Iil7bGV0IFZvPXV0LndpZHRoO19hKFZvKSYmKFZvPVZvKCkpLFZvPXIu'@; put 'cnVuSG9va3MoImJlZm9yZVdpZHRoQ2hhbmdlIixWbyksci5yb290RWxlbWVudC5zdHlsZS53aWR0aD1pc05hTihWbyk/YCR7Vm99YDpgJHtWb31weGB9aWYodHlwZW9mIHV0LmhlaWdodDwidSJ8fHR5cGVvZiB1dC53aWR0aDwidSIpe2NvbnN0IGJsPXIucm9vdEVsZW1lbnQuc3R5bGUud2lk'@; put 'dGg7aWYoIXIucm9vdEVsZW1lbnQuc3R5bGUuaGVpZ2h0KXtjb25zdCBEMT1yLnJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93WDsoIiI9PT1EMXx8ImNsaXAiPT09RDEpJiYoci5yb290RWxlbWVudC5zdHlsZS5vdmVyZmxvd1g9YmwmJiJhdXRvIiE9PWJsPyJjbGlwIjoiIil9fUh0fHwoci52'@; put 'aWV3JiYoci52aWV3Ll93dC53dFZpZXdwb3J0LnJlc2V0SGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZCgpLHIudmlldy5fd3QuZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMoKSxyLnZpZXcuaW52YWxpZGF0ZUluZGV4U2l6ZXNDYWNoZSgpKSxDbi51cGRhdGVIaWdobGlnaHRDbGFz'@; put 'c05hbWVzKCksci5ydW5Ib29rcygiYWZ0ZXJVcGRhdGVTZXR0aW5ncyIsdXQpKSxsLmFkanVzdFJvd3NBbmRDb2xzKCksci52aWV3JiYhTyYmKHIucmVuZGVyKCksci52aWV3Ll93dC53dE92ZXJsYXlzLmFkanVzdEVsZW1lbnRzU2l6ZSgpKSwhSHQmJnIudmlldyYmKCIiPT09U298fCIiPT09'@; put 'UmF8fHZvaWQgMD09PVJhKSYmU28hPT1SYSYmci52aWV3Ll93dC53dE92ZXJsYXlzLnVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudHMoKSxyMihyKSYmd3M/LmFwcGx5Q29uZmlnKFdlLmxheW91dCl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtjb25zdCB1dD1yLmdldFNlbGVjdGVkUmFu'@; put 'Z2VBY3RpdmUoKTtpZihXZS5nZXRWYWx1ZSl7aWYoX2EoV2UuZ2V0VmFsdWUpKXJldHVybiBXZS5nZXRWYWx1ZS5jYWxsKHIpO2lmKHV0JiYic3RyaW5nIj09dHlwZW9mIFdlLmdldFZhbHVlKXtjb25zdCBIdD11dC5oaWdobGlnaHQucm93Pz8wO3JldHVybiByLmdldERhdGEoKVtIdF1bV2Uu'@; put 'Z2V0VmFsdWVdfX1lbHNlIGlmKHV0KXJldHVybiByLmdldERhdGFBdENlbGwodXQuaGlnaGxpZ2h0LnJvdyx1dC5oaWdobGlnaHQuY29sKTtyZXR1cm4gbnVsbH0sdGhpcy5nZXRTZXR0aW5ncz1mdW5jdGlvbigpe3JldHVybiBXZX0sdGhpcy5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2VsZWN0'@; put 'QWxsKCksdGhpcy5lbXB0eVNlbGVjdGVkQ2VsbHMoKSx0aGlzLmRlc2VsZWN0Q2VsbCgpfSx0aGlzLmFsdGVyPWZ1bmN0aW9uKHV0LEh0LGRuLFZuLElyKXtsLmFsdGVyKHV0LEh0LGRuLFZuLElyKX0sdGhpcy5nZXRDZWxsPWZ1bmN0aW9uKHV0LEh0LGRuPSExKXtsZXQgVm49SHQsSXI9dXQ7'@; put 'aWYoSHQ+PTApe2lmKHIuY29sdW1uSW5kZXhNYXBwZXIuaXNIaWRkZW4oci50b1BoeXNpY2FsQ29sdW1uKEh0KSkpcmV0dXJuIG51bGw7Vm49ci5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEh0KX1pZih1dD49MCl7aWYoci5yb3dJbmRleE1hcHBlci5p'@; put 'c0hpZGRlbihyLnRvUGh5c2ljYWxSb3codXQpKSlyZXR1cm4gbnVsbDtJcj1yLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodXQpfXJldHVybiBudWxsPT09SXJ8fG51bGw9PT1Wbnx8dm9pZCAwPT09SXJ8fHZvaWQgMD09PVZuP251bGw6ci52aWV3LmdldENl'@; put 'bGxBdENvb3JkcyhyLl9jcmVhdGVDZWxsQ29vcmRzKElyLFZuKSxkbil9LHRoaXMuZ2V0Q29vcmRzPWZ1bmN0aW9uKHV0KXtjb25zdCBIdD1yLnZpZXcuX3d0Lnd0VGFibGUuZ2V0Q29vcmRzKHV0KTtpZihudWxsPT09SHQpcmV0dXJuIG51bGw7Y29uc3R7cm93OmRuLGNvbDpWbn09SHQ7bGV0'@; put 'IElyPWRuLG5pPVZuO3JldHVybiBudWxsIT09ZG4mJmRuPj0wJiYoSXI9ci5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGRuKSksbnVsbCE9PVZuJiZWbj49MCYmKG5pPXIuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChW'@; put 'bikpLHIuX2NyZWF0ZUNlbGxDb29yZHMoSXIsbmkpfSx0aGlzLmNvbFRvUHJvcD1mdW5jdGlvbih1dCl7cmV0dXJuIG8uY29sVG9Qcm9wKHV0KX0sdGhpcy5wcm9wVG9Db2w9ZnVuY3Rpb24odXQpe3JldHVybiBvLnByb3BUb0NvbCh1dCl9LHRoaXMudG9WaXN1YWxSb3c9dXQ9PnIucm93SW5k'@; put 'ZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgodXQpLHRoaXMudG9WaXN1YWxDb2x1bW49dXQ9PnIuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgodXQpLHRoaXMudG9QaHlzaWNhbFJvdz11dD0+ci5yb3dJbmRleE1hcHBlci5nZXRQaHlzaWNh'@; put 'bEZyb21WaXN1YWxJbmRleCh1dCksdGhpcy50b1BoeXNpY2FsQ29sdW1uPXV0PT5yLmNvbHVtbkluZGV4TWFwcGVyLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KHV0KSx0aGlzLmdldERhdGFBdENlbGw9ZnVuY3Rpb24odXQsSHQpe3JldHVybiBvLmdldCh1dCxvLmNvbFRvUHJvcChIdCkp'@; put 'fSx0aGlzLmdldERhdGFBdFJvd1Byb3A9ZnVuY3Rpb24odXQsSHQpe3JldHVybiBvLmdldCh1dCxIdCl9LHRoaXMuZ2V0RGF0YUF0Q29sPWZ1bmN0aW9uKHV0KXtjb25zdCBIdD1bXSxkbj1vLmdldFJhbmdlKHIuX2NyZWF0ZUNlbGxDb29yZHMoMCx1dCksci5fY3JlYXRlQ2VsbENvb3JkcyhX'@; put 'ZS5kYXRhLmxlbmd0aC0xLHV0KSxpTy5ERVNUSU5BVElPTl9SRU5ERVJFUik7Zm9yKGxldCBWbj0wO1ZuPGRuLmxlbmd0aDtWbis9MSlmb3IobGV0IElyPTA7SXI8ZG5bVm5dLmxlbmd0aDtJcis9MSlIdC5wdXNoKGRuW1ZuXVtJcl0pO3JldHVybiBIdH0sdGhpcy5nZXREYXRhQXRQcm9wPWZ1'@; put 'bmN0aW9uKHV0KXtjb25zdCBIdD1bXSxkbj1vLmdldFJhbmdlKHIuX2NyZWF0ZUNlbGxDb29yZHMoMCxvLnByb3BUb0NvbCh1dCkpLHIuX2NyZWF0ZUNlbGxDb29yZHMoV2UuZGF0YS5sZW5ndGgtMSxvLnByb3BUb0NvbCh1dCkpLGlPLkRFU1RJTkFUSU9OX1JFTkRFUkVSKTtmb3IobGV0IFZu'@; put 'PTA7Vm48ZG4ubGVuZ3RoO1ZuKz0xKWZvcihsZXQgSXI9MDtJcjxkbltWbl0ubGVuZ3RoO0lyKz0xKUh0LnB1c2goZG5bVm5dW0lyXSk7cmV0dXJuIEh0fSx0aGlzLmdldFNvdXJjZURhdGE9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2xldCBJcjtyZXR1cm4gSXI9dm9pZCAwPT09dXQ/YS5nZXRE'@; put 'YXRhKCk6YS5nZXRCeVJhbmdlKHIuX2NyZWF0ZUNlbGxDb29yZHModXQsSHQ/P251bGwpLHIuX2NyZWF0ZUNlbGxDb29yZHMoZG4/P251bGwsVm4/P251bGwpKSxJcn0sdGhpcy5nZXRTb3VyY2VEYXRhQXJyYXk9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2xldCBJcjtyZXR1cm4gSXI9dm9pZCAw'@; put 'PT09dXQ/YS5nZXREYXRhKCEwKTphLmdldEJ5UmFuZ2Uoci5fY3JlYXRlQ2VsbENvb3Jkcyh1dCxIdD8/bnVsbCksci5fY3JlYXRlQ2VsbENvb3Jkcyhkbj8/bnVsbCxWbj8/bnVsbCksITApLElyfSx0aGlzLmdldFNvdXJjZURhdGFBdENvbD1mdW5jdGlvbih1dCl7cmV0dXJuIGEuZ2V0QXRD'@; put 'b2x1bW4odXQpfSx0aGlzLnNldFNvdXJjZURhdGFBdENlbGw9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2NvbnN0IElyPXRpKHV0LEh0LGRuKSxuaT1yLmhhc0hvb2soImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIpLGpyPVtdLEZpPShZbyxTbyk9Pntjb25zdCBSYT1yLnRvVmlzdWFsUm93KFlv'@; put 'KSxWbz1yLnRvVmlzdWFsQ29sdW1uKFNvKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihWbyk/ci5nZXRDZWxsTWV0YShSYSxWbyk6ey4uLk9iamVjdC5nZXRQcm90b3R5cGVPZihXZSksLi4uV2V9fTtuaSYmWG4oSXIsKFtZbyxTbyxSYV0pPT57Y29uc3QgVm89YWRlKFJhLEZpKFlvLFNvKSk7'@; put 'anIucHVzaChbWW8sU28sYS5nZXRBdENlbGwoWW8sU28pLFZvXSl9KSxYbihJciwoW1lvLFNvLFJhXSk9Pntjb25zdCBWbz1GaShZbyxTbyksYmw9YWRlKFJhLFZvKTsoZnVuY3Rpb24gZUl0KG4sZSx0KXtjb25zdCByPWUuc291cmNlRGF0YVZhbGlkYXRvcjtpZighX2Eocil8fCEwPT09cihu'@; put 'LGUsdCkpcmV0dXJuITA7Y29uc3R7cm93Om8sY29sOmEsc291cmNlRGF0YVdhcm5pbmdNZXNzYWdlOmwsYWxsb3dJbnZhbGlkOnV9PWU7cmV0dXJuIGwmJmFJZShsLFt7cm93Om8sY29sOmEsdmFsdWU6bn1dKSwhMD09PXV9KShibCxWbyxWbj8/InNldFNvdXJjZURhdGFBdENlbGwiKSYmYS5z'@; put 'ZXRBdENlbGwoWW8sU28sYmwpfSksbmkmJnRoaXMucnVuSG9va3MoImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsanIsVm4pLHRoaXMucmVuZGVyKCk7Y29uc3QgZ289ci5nZXRBY3RpdmVFZGl0b3IoKTtnbyYmWm8oZ28ucmVmcmVzaFZhbHVlKSYmZ28ucmVmcmVzaFZhbHVlKCl9LHRoaXMu'@; put 'Z2V0U291cmNlRGF0YUF0Um93PWZ1bmN0aW9uKHV0KXtyZXR1cm4gYS5nZXRBdFJvdyh1dCl9LHRoaXMuZ2V0U291cmNlRGF0YUF0Q2VsbD1mdW5jdGlvbih1dCxIdCl7cmV0dXJuIGEuZ2V0QXRDZWxsKHV0LEh0KX0sdGhpcy5nZXREYXRhQXRSb3c9ZnVuY3Rpb24odXQpe3JldHVybiBvLmdl'@; put 'dFJhbmdlKHIuX2NyZWF0ZUNlbGxDb29yZHModXQsMCksci5fY3JlYXRlQ2VsbENvb3Jkcyh1dCx0aGlzLmNvdW50Q29scygpLTEpLGlPLkRFU1RJTkFUSU9OX1JFTkRFUkVSKVswXXx8W119LHRoaXMuZ2V0RGF0YVR5cGU9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2NvbnN0IElyPXZvaWQgMD09'@; put 'PXV0P1swLDAsci5jb3VudFJvd3MoKSxyLmNvdW50Q29scygpXTpbdXQsSHQsZG4sVm5dLFtuaSxqcl09SXI7bGV0WywsRmksZ29dPUlyLFlvPW51bGwsU289bnVsbDt2b2lkIDA9PT1GaSYmKEZpPW5pKSx2b2lkIDA9PT1nbyYmKGdvPWpyKTtsZXQgUmE9Im1peGVkIjtyZXR1cm4gVmEoTWF0'@; put 'aC5tYXgoTWF0aC5taW4obmksRmkpLDApLE1hdGgubWF4KG5pLEZpKSxWbz0+e2xldCBibD0hMDtyZXR1cm4gVmEoTWF0aC5tYXgoTWF0aC5taW4oanIsZ28pLDApLE1hdGgubWF4KGpyLGdvKSxEMT0+KFNvPXIuZ2V0Q2VsbE1ldGEoVm8sRDEpLnR5cGU/P251bGwsWW8/Ymw9WW89PT1TbzpZ'@; put 'bz1TbyxibCkpLFJhPWJsP1NvPz8ibWl4ZWQiOiJtaXhlZCIsYmx9KSxSYX0sdGhpcy5yZW1vdmVDZWxsTWV0YT1mdW5jdGlvbih1dCxIdCxkbil7Y29uc3RbVm4sSXJdPVtyLnRvUGh5c2ljYWxSb3codXQpLHIudG9QaHlzaWNhbENvbHVtbihIdCldO2xldCBuaT1IZS5nZXRDZWxsTWV0YUtl'@; put 'eVZhbHVlKFZuLElyLGRuKTshMSE9PXIucnVuSG9va3MoImJlZm9yZVJlbW92ZUNlbGxNZXRhIix1dCxIdCxkbixuaSkmJihIZS5yZW1vdmVDZWxsTWV0YShWbixJcixkbiksci5ydW5Ib29rcygiYWZ0ZXJSZW1vdmVDZWxsTWV0YSIsdXQsSHQsZG4sbmkpKSxuaT1udWxsfSx0aGlzLnNwbGlj'@; put 'ZUNlbGxzTWV0YT1mdW5jdGlvbih1dCxIdD0wLC4uLmRuKXtkbi5sZW5ndGg+MCYmIUFycmF5LmlzQXJyYXkoZG5bMF0pJiZKcigiVGhlIDNyZCBhcmd1bWVudCAoY2VsbE1ldGFSb3dzKSBoYXMgdG8gYmUgcGFzc2VkIGFzIGFuIGFycmF5IG9mIGNlbGwgbWV0YSBvYmplY3RzIGFycmF5LiIp'@; put 'LEh0PjAmJkhlLnJlbW92ZVJvdyhyLnRvUGh5c2ljYWxSb3codXQpLEh0KSxkbi5sZW5ndGg+MCYmWG4oZG4ucmV2ZXJzZSgpLFZuPT57SGUuY3JlYXRlUm93KHIudG9QaHlzaWNhbFJvdyh1dCkpLFhuKFZuLChJcixuaSk9Pnt0aGlzLnNldENlbGxNZXRhT2JqZWN0KHV0LG5pLElyKX0pfSks'@; put 'ci5yZW5kZXIoKX0sdGhpcy5zZXRDZWxsTWV0YU9iamVjdD1mdW5jdGlvbih1dCxIdCxkbil7Im9iamVjdCI9PXR5cGVvZiBkbiYmYWMoZG4sKFZuLElyKT0+e3RoaXMuc2V0Q2VsbE1ldGEodXQsSHQsSXIsVm4pfSl9LHRoaXMuc2V0Q2VsbE1ldGE9ZnVuY3Rpb24odXQsSHQsZG4sVm4pe2lm'@; put 'KCExPT09ci5ydW5Ib29rcygiYmVmb3JlU2V0Q2VsbE1ldGEiLHV0LEh0LGRuLFZuKSlyZXR1cm47bGV0IG5pPXV0LGpyPUh0O3V0PHIuY291bnRSb3dzKCkmJihuaT1yLnRvUGh5c2ljYWxSb3codXQpKSxIdDxyLmNvdW50Q29scygpJiYoanI9ci50b1BoeXNpY2FsQ29sdW1uKEh0KSksSGUu'@; put 'c2V0Q2VsbE1ldGEobmksanIsZG4sVm4pLHIucnVuSG9va3MoImFmdGVyU2V0Q2VsbE1ldGEiLHV0LEh0LGRuLFZuKX0sdGhpcy5nZXRDZWxsc01ldGE9ZnVuY3Rpb24oKXtyZXR1cm4gSGUuZ2V0Q2VsbHNNZXRhKCl9LHRoaXMuZ2V0Q2VsbE1ldGE9ZnVuY3Rpb24odXQsSHQsZG49e3NraXBN'@; put 'ZXRhRXh0ZW5zaW9uOiExfSl7bGV0IFZuPXIudG9QaHlzaWNhbFJvdyh1dCksSXI9ci50b1BoeXNpY2FsQ29sdW1uKEh0KTtyZXR1cm4gbnVsbD09PVZuJiYoVm49dXQpLG51bGw9PT1JciYmKElyPUh0KSxIZS5nZXRDZWxsTWV0YShWbixJcix7dmlzdWFsUm93OnV0LHZpc3VhbENvbHVtbjpI'@; put 'dCwuLi5kbn0pfSx0aGlzLmdldENvbHVtbk1ldGE9ZnVuY3Rpb24odXQpe3JldHVybiBIZS5nZXRDb2x1bW5NZXRhKHIudG9QaHlzaWNhbENvbHVtbih1dCkpfSx0aGlzLmdldENlbGxNZXRhQXRSb3c9ZnVuY3Rpb24odXQpe3JldHVybiBIZS5nZXRDZWxsc01ldGFBdFJvdyh1dCl9LHRoaXMu'@; put 'aXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkPWZ1bmN0aW9uKCl7cmV0dXJuISgib2JqZWN0Ij09PXIuZGF0YVR5cGV8fFdlLmNvbHVtbnMpfSx0aGlzLmdldENlbGxSZW5kZXJlcj1mdW5jdGlvbih1dCxIdCl7Y29uc3QgZG49Im51bWJlciI9PXR5cGVvZiB1dD9yLmdldENlbGxNZXRhKHV0'@; put 'LEh0KS5yZW5kZXJlcjp1dC5yZW5kZXJlcjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGRuPyRXKGRuKTpYdShkbik/JFcoInRleHQiKTpkbn0sdGhpcy5nZXRDZWxsRWRpdG9yPWZ1bmN0aW9uKHV0LEh0KXtjb25zdCBkbj0ibnVtYmVyIj09dHlwZW9mIHV0P3IuZ2V0Q2VsbE1ldGEodXQsSHQp'@; put 'LmVkaXRvcjp1dC5lZGl0b3I7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkbj9aVyhkbik6WHUoZG4pP1pXKCJ0ZXh0Iik6ZG59LHRoaXMuZ2V0Q2VsbFZhbGlkYXRvcj1mdW5jdGlvbih1dCxIdCl7Y29uc3QgZG49Im51bWJlciI9PXR5cGVvZiB1dD9yLmdldENlbGxNZXRhKHV0LEh0KS52YWxp'@; put 'ZGF0b3I6dXQudmFsaWRhdG9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgZG4/c2xlKGRuKTpkbn0sdGhpcy52YWxpZGF0ZUNlbGxzPWZ1bmN0aW9uKHV0KXt0aGlzLl92YWxpZGF0ZUNlbGxzKHV0KX0sdGhpcy52YWxpZGF0ZVJvd3M9ZnVuY3Rpb24odXQsSHQpe0FycmF5LmlzQXJyYXkodXQp'@; put 'fHxKcigidmFsaWRhdGVSb3dzIHBhcmFtZXRlciBgcm93c2AgbXVzdCBiZSBhbiBhcnJheSIpLHRoaXMuX3ZhbGlkYXRlQ2VsbHMoSHQsdXQpfSx0aGlzLnZhbGlkYXRlQ29sdW1ucz1mdW5jdGlvbih1dCxIdCl7QXJyYXkuaXNBcnJheSh1dCl8fEpyKCJ2YWxpZGF0ZUNvbHVtbnMgcGFyYW1l'@; put 'dGVyIGBjb2x1bW5zYCBtdXN0IGJlIGFuIGFycmF5IiksdGhpcy5fdmFsaWRhdGVDZWxscyhIdCx2b2lkIDAsdXQpfSx0aGlzLl92YWxpZGF0ZUNlbGxzPWZ1bmN0aW9uKHV0LEh0LGRuKXtjb25zdCBWbj1mbigpO3V0JiYoVm4ub25RdWV1ZUVtcHR5PXV0KTtsZXQgSXI9ci5jb3VudFJvd3Mo'@; put 'KS0xO2Zvcig7SXI+PTA7KXtpZih2b2lkIDAhPT1IdCYmLTE9PT1IdC5pbmRleE9mKElyKSl7SXItPTE7Y29udGludWV9bGV0IG5pPXIuY291bnRDb2xzKCktMTtmb3IoO25pPj0wOyl2b2lkIDA9PT1kbnx8LTEhPT1kbi5pbmRleE9mKG5pKT8oVm4uYWRkVmFsaWRhdG9yVG9RdWV1ZSgpLHIu'@; put 'dmFsaWRhdGVDZWxsKHIuZ2V0RGF0YUF0Q2VsbChJcixuaSksci5nZXRDZWxsTWV0YShJcixuaSksanI9PnsiYm9vbGVhbiIhPXR5cGVvZiBqciYmSnIoIlZhbGlkYXRpb24gZXJyb3I6IHJlc3VsdCBpcyBub3QgYm9vbGVhbiIpLCExPT09anImJihWbi52YWxpZD0hMSksVm4ucmVtb3ZlVmFs'@; put 'aWRhdG9yRm9ybVF1ZXVlKCl9LCJ2YWxpZGF0ZUNlbGxzIiksbmktPTEpOm5pLT0xO0lyLT0xfVZuLmNoZWNrSWZRdWV1ZUlzRW1wdHkoKX0sdGhpcy5nZXRSb3dIZWFkZXI9ZnVuY3Rpb24odXQpe2xldCBIdD1XZS5yb3dIZWFkZXJzLGRuPXV0O2lmKHZvaWQgMCE9PWRuJiYoZG49ci5ydW5I'@; put 'b29rcygibW9kaWZ5Um93SGVhZGVyIixkbikpLHZvaWQgMD09PWRuKXtjb25zdCBWbj1bXTtWYShyLmNvdW50Um93cygpLTEsSXI9PntWbi5wdXNoKHIuZ2V0Um93SGVhZGVyKElyKSl9KSxIdD1Wbn1lbHNlIEFycmF5LmlzQXJyYXkoSHQpJiZ2b2lkIDAhPT1IdFtkbl0/SHQ9SHRbZG5dOl9h'@; put 'KEh0KT9IdD1IdChkbik6SHQmJiJzdHJpbmciIT10eXBlb2YgSHQmJiJudW1iZXIiIT10eXBlb2YgSHQmJihIdD1kbisxKTtyZXR1cm4gSHR9LHRoaXMuaGFzUm93SGVhZGVycz1mdW5jdGlvbigpe3JldHVybiEhV2Uucm93SGVhZGVyc30sdGhpcy5oYXNDb2xIZWFkZXJzPWZ1bmN0aW9uKCl7'@; put 'aWYobnVsbCE9V2UuY29sSGVhZGVycylyZXR1cm4hIVdlLmNvbEhlYWRlcnM7Zm9yKGxldCB1dD0wLEh0PXIuY291bnRDb2xzKCk7dXQ8SHQ7dXQrKylpZihyLmdldENvbEhlYWRlcih1dCkpcmV0dXJuITA7cmV0dXJuITF9LHRoaXMuZ2V0Q29sSGVhZGVyPWZ1bmN0aW9uKHV0LEh0PS0xKXtj'@; put 'b25zdCBkbj1yLnJ1bkhvb2tzKCJtb2RpZnlDb2xIZWFkZXIiLHV0KTtpZih2b2lkIDA9PT1kbil7Y29uc3QgZ289W10sWW89ci5jb3VudENvbHMoKTtmb3IobGV0IFNvPTA7U288WW87U28rKylnby5wdXNoKHIuZ2V0Q29sSGVhZGVyKFNvKSk7cmV0dXJuIGdvfWxldCBWbj1XZS5jb2xIZWFk'@; put 'ZXJzO2NvbnN0IElyPVdlLmNvbHVtbnMsanI9ci50b1BoeXNpY2FsQ29sdW1uKGRuKSxGaT1mdW5jdGlvbihnbyl7Y29uc3QgWW89W10sU289ci5jb3VudENvbHMoKTtsZXQgUmE9MDtmb3IoO1JhPFNvO1JhKyspX2EoSXIpJiZJcihSYSkmJllvLnB1c2goUmEpO3JldHVybiBZb1tnb119KGpy'@; put 'KTtyZXR1cm4hMT09PVdlLmNvbEhlYWRlcnM/Vm49bnVsbDpJciYmX2EoSXIpJiZJcihGaSkmJklyKEZpKS50aXRsZT9Wbj1JcihGaSkudGl0bGU6SXImJiFfYShJcikmJklyW2pyXSYmSXJbanJdLnRpdGxlP1ZuPUlyW2pyXS50aXRsZTpBcnJheS5pc0FycmF5KFdlLmNvbEhlYWRlcnMpJiZ2'@; put 'b2lkIDAhPT1XZS5jb2xIZWFkZXJzW2pyXT9Wbj1XZS5jb2xIZWFkZXJzW2pyXTpfYShXZS5jb2xIZWFkZXJzKT9Wbj1XZS5jb2xIZWFkZXJzKGpyKTpXZS5jb2xIZWFkZXJzJiYic3RyaW5nIiE9dHlwZW9mIFdlLmNvbEhlYWRlcnMmJiJudW1iZXIiIT10eXBlb2YgV2UuY29sSGVhZGVycyYm'@; put 'KFZuPUNZKGRuKSksVm49ci5ydW5Ib29rcygibW9kaWZ5Q29sdW1uSGVhZGVyVmFsdWUiLFZuLHV0LEh0KSxWbn0sdGhpcy5fZ2V0Q29sV2lkdGhGcm9tU2V0dGluZ3M9ZnVuY3Rpb24odXQpe2xldCBIdDtpZih1dD49MCYmKEh0PXIuZ2V0Q2VsbE1ldGEoMCx1dCkud2lkdGgpLCh2b2lkIDA9'@; put 'PT1IdHx8SHQ9PT1XZS53aWR0aCkmJihIdD1XZS5jb2xXaWR0aHMpLG51bGwhPUh0KXtzd2l0Y2godHlwZW9mIEh0KXtjYXNlIm9iamVjdCI6SHQ9SHRbdXRdO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOkh0PUh0KHV0KX0ic3RyaW5nIj09dHlwZW9mIEh0JiYoSHQ9TnVtYmVyLnBhcnNlSW50KEh0'@; put 'LDEwKSl9cmV0dXJuIEh0fSx0aGlzLmdldENvbFdpZHRoPWZ1bmN0aW9uKHV0LEh0KXtsZXQgZG49ci5fZ2V0Q29sV2lkdGhGcm9tU2V0dGluZ3ModXQpO3JldHVybiBkbj1yLnJ1bkhvb2tzKCJtb2RpZnlDb2xXaWR0aCIsZG4sdXQsSHQpLHZvaWQgMD09PWRuJiYoZG49NTApLGRufSx0aGlz'@; put 'Ll9nZXRSb3dIZWlnaHRGcm9tU2V0dGluZ3M9ZnVuY3Rpb24odXQpe2NvbnN0IEh0PXIuc3R5bGVzSGFuZGxlci5nZXREZWZhdWx0Um93SGVpZ2h0KHV0KTtsZXQgZG49V2Uucm93SGVpZ2h0cz8/V2UubWluUm93SGVpZ2h0cztpZihudWxsIT1kbil7c3dpdGNoKHR5cGVvZiBkbil7Y2FzZSJv'@; put 'YmplY3QiOmRuPWRuW3V0XTticmVhaztjYXNlImZ1bmN0aW9uIjpkbj1kbih1dCl9InN0cmluZyI9PXR5cGVvZiBkbiYmKGRuPU51bWJlci5wYXJzZUludChkbiwxMCkpfXJldHVybiBudWxsIT1kbiYmbnVsbCE9PUh0JiZkbjxIdD9IdDpkbn0sdGhpcy5nZXRSb3dIZWlnaHQ9ZnVuY3Rpb24o'@; put 'dXQsSHQpe2xldCBkbj1yLl9nZXRSb3dIZWlnaHRGcm9tU2V0dGluZ3ModXQpO3JldHVybiBkbj1yLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWlnaHQiLGRuLHV0LEh0KSxkbn0sdGhpcy5jb3VudFNvdXJjZVJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gYS5jb3VudFJvd3MoKX0sdGhpcy5jb3VudFNv'@; put 'dXJjZUNvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gYS5jb3VudEZpcnN0Um93S2V5cygpfSx0aGlzLmNvdW50Um93cz1mdW5jdGlvbigpe3JldHVybiBvLmdldExlbmd0aCgpfSx0aGlzLmNvdW50Q29scz1mdW5jdGlvbigpe2NvbnN0IHV0PVdlLm1heENvbHMsSHQ9ci5jb2x1bW5JbmRleE1hcHBl'@; put 'ci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3JldHVybiBNYXRoLm1pbih1dCxIdCl9LHRoaXMuY291bnRSZW5kZXJlZFJvd3M9ZnVuY3Rpb24oKXtjb25zdCB1dD1yLnZpZXc7cmV0dXJuIHV0Ll93dC5kcmF3bj91dC5fd3Qud3RUYWJsZS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpOi0x'@; put 'fSx0aGlzLmNvdW50VmlzaWJsZVJvd3M9ZnVuY3Rpb24oKXtjb25zdCB1dD1yLnZpZXc7cmV0dXJuIHV0Ll93dC5kcmF3bj91dC5fd3Qud3RUYWJsZS5nZXRWaXNpYmxlUm93c0NvdW50KCk6LTF9LHRoaXMuY291bnRSZW5kZXJlZENvbHM9ZnVuY3Rpb24oKXtjb25zdCB1dD1yLnZpZXc7cmV0'@; put 'dXJuIHV0Ll93dC5kcmF3bj91dC5fd3Qud3RUYWJsZS5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpOi0xfSx0aGlzLmNvdW50VmlzaWJsZUNvbHM9ZnVuY3Rpb24oKXtjb25zdCB1dD1yLnZpZXc7cmV0dXJuIHV0Ll93dC5kcmF3bj91dC5fd3Qud3RUYWJsZS5nZXRWaXNpYmxlQ29sdW1uc0Nv'@; put 'dW50KCk6LTF9LHRoaXMuY291bnRSb3dIZWFkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHIudmlldy5nZXRSb3dIZWFkZXJzQ291bnQoKX0sdGhpcy5jb3VudENvbEhlYWRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gci52aWV3LmdldENvbHVtbkhlYWRlcnNDb3VudCgpfSx0aGlzLmNvdW50RW1wdHlS'@; put 'b3dzPWZ1bmN0aW9uKHV0PSExKXtsZXQgSHQ9MDtyZXR1cm4gdGxlKHIuY291bnRSb3dzKCktMSxkbj0+e2lmKHIuaXNFbXB0eVJvdyhkbikpSHQrPTE7ZWxzZSBpZighMD09PXV0KXJldHVybiExfSksSHR9LHRoaXMuY291bnRFbXB0eUNvbHM9ZnVuY3Rpb24odXQ9ITEpe2xldCBIdD0wO3Jl'@; put 'dHVybiB0bGUoci5jb3VudENvbHMoKS0xLGRuPT57aWYoci5pc0VtcHR5Q29sKGRuKSlIdCs9MTtlbHNlIGlmKCEwPT09dXQpcmV0dXJuITF9KSxIdH0sdGhpcy5pc0VtcHR5Um93PWZ1bmN0aW9uKHV0KXtyZXR1cm4gV2UuaXNFbXB0eVJvdy5jYWxsKHIsdXQpfSx0aGlzLmlzRW1wdHlDb2w9'@; put 'ZnVuY3Rpb24odXQpe3JldHVybiBXZS5pc0VtcHR5Q29sLmNhbGwocix1dCl9LHRoaXMuc2VsZWN0Q2VsbD1mdW5jdGlvbih1dCxIdCxkbixWbixJcj0hMCxuaT0hMCl7aWYoWHUodXQpfHxYdShIdCkpcmV0dXJuITE7Y29uc3QgZ289W1tudWxsPT11dHx8TnVtYmVyLmlzTmFOKE51bWJlcih1'@; put 'dCkpPzA6TnVtYmVyKHV0KSxudWxsPT1IdHx8Im51bWJlciI9PXR5cGVvZiBIdCYmTnVtYmVyLmlzTmFOKEh0KT8wOkh0LFh1KGRuKT92b2lkIDA6ZG4sWHUoVm4pP3ZvaWQgMDpWbl1dO3JldHVybiByLnNlbGVjdENlbGxzKGdvLElyLG5pKX0sdGhpcy5zZWxlY3RDZWxscz1mdW5jdGlvbih1'@; put 'dD1bW11dLEh0PSEwLGRuPSEwKXtsZXQgVm47ITE9PT1IdCYmRS5zdXNwZW5kKCksITE9PT1kbiYmZy5zdXNwZW5kKCk7dHJ5e1ZuPUNuLnNlbGVjdENlbGxzKHV0KX1maW5hbGx5e0UucmVzdW1lKCksZy5yZXN1bWUoKX1yZXR1cm4gVm4mJmRuJiZyLmxpc3RlbigpLFZufSx0aGlzLnNlbGVj'@; put 'dENvbHVtbnM9ZnVuY3Rpb24odXQsSHQ9dXQsZG4pe3JldHVybiBDbi5zZWxlY3RDb2x1bW5zKHV0LEh0LGRuKX0sdGhpcy5zZWxlY3RSb3dzPWZ1bmN0aW9uKHV0LEh0PXV0LGRuKXtyZXR1cm4gQ24uc2VsZWN0Um93cyh1dCxIdCxkbil9LHRoaXMuZGVzZWxlY3RDZWxsPWZ1bmN0aW9uKCl7'@; put 'Q24uZGVzZWxlY3QoKX0sdGhpcy5zZWxlY3RBbGw9ZnVuY3Rpb24odXQ9ITAsSHQ9dXQsZG4pe0Uuc2tpcE5leHRTY3JvbGxDeWNsZSgpLENuLnNlbGVjdEFsbCh1dCxIdCxkbil9O2NvbnN0IGVpPSh1dCxIdCk9PnV0LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChIdCwxLCEwKTt0aGlzLnNj'@; put 'cm9sbFZpZXdwb3J0VG89ZnVuY3Rpb24odXQsSHQpeyJudW1iZXIiPT10eXBlb2YgdXQmJih1dD17cm93OmFyZ3VtZW50c1swXSxjb2w6YXJndW1lbnRzWzFdLHZlcnRpY2FsU25hcDphcmd1bWVudHNbMl0/ImJvdHRvbSI6InRvcCIsaG9yaXpvbnRhbFNuYXA6YXJndW1lbnRzWzNdPyJlbmQi'@; put 'OiJzdGFydCIsY29uc2lkZXJIaWRkZW5JbmRleGVzOmFyZ3VtZW50c1s0XT8/ITB9KTtjb25zdHtyb3c6ZG4sY29sOlZuLGNvbnNpZGVySGlkZGVuSW5kZXhlczpJcn09dXQ/P3t9O2xldCBuaT1kbixqcj1WbjtpZihfYShIdCkmJnRoaXMuYWRkSG9va09uY2UoImFmdGVyU2Nyb2xsIixIdCks'@; put 'dm9pZCAwPT09SXJ8fElyKXtjb25zdCBTbz0oKHV0LEh0KT0+e2NvbnN0IGRuPXZvaWQgMCE9PXV0JiZOdW1iZXIuaXNJbnRlZ2VyKHV0KSYmdXQ+PTAsVm49dm9pZCAwIT09SHQmJk51bWJlci5pc0ludGVnZXIoSHQpJiZIdD49MCxJcj1kbj9laShyLnJvd0luZGV4TWFwcGVyLHV0KTp2b2lk'@; put 'IDAsbmk9Vm4/ZWkoci5jb2x1bW5JbmRleE1hcHBlcixIdCk6dm9pZCAwO3JldHVybiBudWxsIT09SXImJm51bGwhPT1uaSYme3JlbmRlcmFibGVSb3c6ZG4/ci5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KElyKT8/dm9pZCAwOnV0LHJlbmRlcmFibGVDb2x1'@; put 'bW46Vm4/ci5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KG5pKT8/dm9pZCAwOkh0fX0pKGRuLFZuKTtpZighMT09PVNvKXJldHVybiExO25pPVNvLnJlbmRlcmFibGVSb3csanI9U28ucmVuZGVyYWJsZUNvbHVtbn1jb25zdCBGaT1OdW1iZXIuaXNJbnRl'@; put 'Z2VyKG5pKSxnbz1OdW1iZXIuaXNJbnRlZ2VyKGpyKTtsZXQgWW89ITE7cmV0dXJuIEZpJiZuaT49MCYmZ28mJmpyPj0wP1lvPXIudmlldy5zY3JvbGxWaWV3cG9ydChyLl9jcmVhdGVDZWxsQ29vcmRzKG5pLGpyKSx1dC5ob3Jpem9udGFsU25hcCx1dC52ZXJ0aWNhbFNuYXApOkZpJiZuaT49'@; put 'MCYmKGdvJiZqcjwwfHwhZ28pP1lvPXIudmlldy5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkobmksdXQudmVydGljYWxTbmFwKTpnbyYmanI+PTAmJihGaSYmbmk8MHx8IUZpKSYmKFlvPXIudmlldy5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShqcix1dC5ob3Jpem9udGFsU25hcCkpLF9h'@; put 'KEh0KSYmKFlvP3RoaXMudmlldy5yZW5kZXIoKToodGhpcy5yZW1vdmVIb29rKCJhZnRlclNjcm9sbCIsSHQpLHRoaXMuX3JlZ2lzdGVyTWljcm90YXNrKCgpPT5IdCgpKSkpLFlvfSx0aGlzLnNjcm9sbFRvRm9jdXNlZENlbGw9ZnVuY3Rpb24odXQpe2lmKCFyLnNlbGVjdGlvbi5pc1NlbGVj'@; put 'dGVkKCkpcmV0dXJuITE7X2EodXQpJiZyLmFkZEhvb2tPbmNlKCJhZnRlclNjcm9sbCIsdXQpO2NvbnN0e2hpZ2hsaWdodDpIdH09ci5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCksZG49ci5zY3JvbGxWaWV3cG9ydFRvKEh0LnRvT2JqZWN0KCkpO3JldHVybiBkbj9yLnZpZXcucmVuZGVyKCk6'@; put 'X2EodXQpJiYoci5yZW1vdmVIb29rKCJhZnRlclNjcm9sbCIsdXQpLHIuX3JlZ2lzdGVyTWljcm90YXNrKCgpPT51dCgpKSksZG59LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe3IuX2NsZWFyVGltZW91dHMoKSxyLl9jbGVhck1pY3JvdGFza3MoKSxyLnZpZXcmJnIudmlldy5kZXN0cm95KCks'@; put 'YSYmYS5kZXN0cm95KCksYT1udWxsLHIyKHRoaXMpJiYoZnVuY3Rpb24gS0R0KCl7MCE9PXNaJiYoMT09PXNaJiYoR3AucmVtb3ZlKCksR3A9bnVsbCksc1otPTEpfSgpLHRoaXMuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKS5kZXN0cm95KCksd3M/LmRlc3Ryb3koKSxyLnRoZW1lTWFuYWdlcj8u'@; put 'ZGVzdHJveSgpKSx0aGlzLmdldFNob3J0Y3V0TWFuYWdlcigpLmRlc3Ryb3koKSxBdC5jbGVhcigpLEhlLmNsZWFyQ2FjaGUoKSxEZGUuZGVsZXRlKHRoaXMuZ3VpZCksaS5kZXN0cm95KCksdSYmdS5kZXN0cm95KCksci5yb290Q29udGFpbmVyJiZDNChyLnJvb3RDb250YWluZXIpLHIucm9v'@; put 'dFBvcnRhbEVsZW1lbnQmJnIucm9vdFBvcnRhbEVsZW1lbnQucmVtb3ZlKCksci5iYXRjaEV4ZWN1dGlvbigoKT0+e3Iucm93SW5kZXhNYXBwZXIuZGVzdHJveSgpLHIuY29sdW1uSW5kZXhNYXBwZXIuZGVzdHJveSgpLEN0LmdldEl0ZW1zKCkuZm9yRWFjaCgoWyx1dF0pPT57dXQuZGVzdHJv'@; put 'eSgpfSksQ3QuY2xlYXIoKSxyLnJ1bkhvb2tzKCJhZnRlckRlc3Ryb3kiKX0sITApLEdvLmdldFNpbmdsZXRvbigpLmRlc3Ryb3kociksYWMociwodXQsSHQsZG4pPT57X2EodXQpP2RuW0h0XT1mdW5jdGlvbiBIbyh1dCl7cmV0dXJuKCk9PntKcihgVGhlICIke3V0fSIgbWV0aG9kIGNhbm5v'@; put 'dCBiZSBjYWxsZWQgYmVjYXVzZSB0aGlzIEhhbmRzb250YWJsZSBpbnN0YW5jZSBoYXMgYmVlbiBkZXN0cm95ZWRgKX19KEh0KToiZ3VpZCIhPT1IdCYmKGRuW0h0XT1udWxsKX0pLHIuaXNEZXN0cm95ZWQ9ITAsbyYmby5kZXN0cm95KCksbz1udWxsLGw9bnVsbCxDbj1udWxsLHU9bnVsbCxy'@; put 'PW51bGx9LHRoaXMuZ2V0QWN0aXZlRWRpdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHU/LmdldEFjdGl2ZUVkaXRvcigpfSx0aGlzLmdldEZpcnN0UmVuZGVyZWRWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHIudmlldy5nZXRGaXJzdFJlbmRlcmVkVmlzaWJsZVJvdygpfSx0aGlzLmdldExh'@; put 'c3RSZW5kZXJlZFZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gci52aWV3LmdldExhc3RSZW5kZXJlZFZpc2libGVSb3coKX0sdGhpcy5nZXRGaXJzdFJlbmRlcmVkVmlzaWJsZUNvbHVtbj1mdW5jdGlvbigpe3JldHVybiByLnZpZXcuZ2V0Rmlyc3RSZW5kZXJlZFZpc2libGVDb2x1bW4o'@; put 'KX0sdGhpcy5nZXRMYXN0UmVuZGVyZWRWaXNpYmxlQ29sdW1uPWZ1bmN0aW9uKCl7cmV0dXJuIHIudmlldy5nZXRMYXN0UmVuZGVyZWRWaXNpYmxlQ29sdW1uKCl9LHRoaXMuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gci52aWV3LmdldEZpcnN0RnVsbHlWaXNp'@; put 'YmxlUm93KCl9LHRoaXMuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdz1mdW5jdGlvbigpe3JldHVybiByLnZpZXcuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdygpfSx0aGlzLmdldEZpcnN0RnVsbHlWaXNpYmxlQ29sdW1uPWZ1bmN0aW9uKCl7cmV0dXJuIHIudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJs'@; put 'ZUNvbHVtbigpfSx0aGlzLmdldExhc3RGdWxseVZpc2libGVDb2x1bW49ZnVuY3Rpb24oKXtyZXR1cm4gci52aWV3LmdldExhc3RGdWxseVZpc2libGVDb2x1bW4oKX0sdGhpcy5nZXRGaXJzdFBhcnRpYWxseVZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gci52aWV3LmdldEZpcnN0UGFy'@; put 'dGlhbGx5VmlzaWJsZVJvdygpfSx0aGlzLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHIudmlldy5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpfSx0aGlzLmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbj1mdW5jdGlvbigpe3JldHVybiByLnZp'@; put 'ZXcuZ2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCl9LHRoaXMuZ2V0TGFzdFBhcnRpYWxseVZpc2libGVDb2x1bW49ZnVuY3Rpb24oKXtyZXR1cm4gci52aWV3LmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCl9LHRoaXMuZ2V0UGx1Z2luPWZ1bmN0aW9uKHV0KXtyZXR1cm4g'@; put 'Q3QuZ2V0SXRlbShLMCh1dCkpfSx0aGlzLmdldFBsdWdpbk5hbWU9ZnVuY3Rpb24odXQpe3JldHVybiBDdC5nZXRJZCh1dCl9LHRoaXMuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcn0sdGhpcy5hZGRIb29rPWZ1bmN0aW9uKHV0LEh0LGRuKXtHby5nZXRTaW5nbGV0b24oKS5hZGQo'@; put 'dXQsSHQscixkbil9LHRoaXMuaGFzSG9vaz1mdW5jdGlvbih1dCl7cmV0dXJuIEdvLmdldFNpbmdsZXRvbigpLmhhcyh1dCxyKXx8R28uZ2V0U2luZ2xldG9uKCkuaGFzKHV0KX0sdGhpcy5hZGRIb29rT25jZT1mdW5jdGlvbih1dCxIdCxkbil7R28uZ2V0U2luZ2xldG9uKCkub25jZSh1dCxI'@; put 'dCxyLGRuKX0sdGhpcy5yZW1vdmVIb29rPWZ1bmN0aW9uKHV0LEh0KXtHby5nZXRTaW5nbGV0b24oKS5yZW1vdmUodXQsSHQscil9LHRoaXMucnVuSG9va3M9ZnVuY3Rpb24odXQsSHQsZG4sVm4sSXIsbmksanIpe3JldHVybiBHby5nZXRTaW5nbGV0b24oKS5ydW4ocix1dCxIdCxkbixWbixJ'@; put 'cixuaSxqcil9LHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZT1mdW5jdGlvbih1dCxIdCl7cmV0dXJuIFJSZShXZS5sYW5ndWFnZSx1dCxIdCl9LHRoaXMudG9IVE1MPSgpPT5xc2UodGhpcyksdGhpcy50b1RhYmxlRWxlbWVudD0oKT0+e2NvbnN0IEh0PXIucm9vdERvY3VtZW50LmNyZWF0ZUVs'@; put 'ZW1lbnQoImRpdiIpO3JldHVybiBIdC5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLHFzZShyKSksSHQuZmlyc3RFbGVtZW50Q2hpbGR9LHRoaXMudGltZW91dHM9W10sdGhpcy51c2VUaGVtZT11dD0+e2NvbnN0IEh0PSEhTzt0aGlzLnN0eWxlc0hhbmRsZXIudXNlVGhlbWUodXQ/'@; put 'P3ZvaWQgMCk7Y29uc3QgZG49dGhpcy5zdHlsZXNIYW5kbGVyLmdldFRoZW1lTmFtZSgpOyFIdCYmZG4mJihyWih0aGlzLnJvb3RDb250YWluZXIpJiYoa28odGhpcy5yb290Q29udGFpbmVyLC9odC10aGVtZS0uKi9nKSxZcih0aGlzLnJvb3RDb250YWluZXIsZG4pKSxyLnJlbmRlcigpLHIu'@; put 'c2Nyb2xsVmlld3BvcnRUbygwLDApKSx0aGlzLnJ1bkhvb2tzKCJhZnRlclNldFRoZW1lIixkbixIdCl9LHRoaXMuZ2V0Q3VycmVudFRoZW1lTmFtZT0oKT0+ci5zdHlsZXNIYW5kbGVyLmdldFRoZW1lTmFtZSgpPz9udWxsLHRoaXMuZ2V0VGFibGVIZWlnaHQ9KCk9PnIucm9vdEVsZW1lbnQu'@; put 'b2Zmc2V0SGVpZ2h0LHRoaXMuZ2V0VGFibGVXaWR0aD0oKT0+ci5yb290RWxlbWVudC5vZmZzZXRXaWR0aCx0aGlzLl9yZWdpc3RlclRpbWVvdXQ9ZnVuY3Rpb24odXQsSHQ9MCl7bGV0IGRuPXV0O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkbiYmKGRuPXNldFRpbWVvdXQoZG4sSHQpKSx0'@; put 'aGlzLnRpbWVvdXRzLnB1c2goZG4pLGRufSx0aGlzLl9jbGVhclRpbWVvdXRzPWZ1bmN0aW9uKCl7WG4odGhpcy50aW1lb3V0cyx1dD0+e2NsZWFyVGltZW91dCh1dCl9KX0sdGhpcy5taWNyb3Rhc2tzPVtdLHRoaXMuX3JlZ2lzdGVyTWljcm90YXNrPWZ1bmN0aW9uKHV0KXtjb25zdCBIdD17'@; put 'Y2FuY2VsbGVkOiExfTt0aGlzLm1pY3JvdGFza3MucHVzaChIdCksdGhpcy5yb290V2luZG93LnF1ZXVlTWljcm90YXNrKCgpPT57SHQuY2FuY2VsbGVkfHx1dCgpfSl9LHRoaXMuX2NsZWFyTWljcm90YXNrcz1mdW5jdGlvbigpe1huKHRoaXMubWljcm90YXNrcyx1dD0+e3V0LmNhbmNlbGxl'@; put 'ZD0hMH0pLHRoaXMubWljcm90YXNrcy5sZW5ndGg9MH0sdGhpcy5fZ2V0RWRpdG9yTWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiB1fSx0aGlzLl9nZXREYXRhU291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHRoaXMuX2dldE1ldGFNYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuIEhlfTtjb25z'@; put 'dCB4aT0oKHtvd25lcldpbmRvdzpuLGhhbmRsZUV2ZW50OmUsYmVmb3JlS2V5RG93bjp0LGFmdGVyS2V5RG93bjpyfSk9Pntjb25zdCBpPUNMKHtlcnJvcklkRXhpc3RzOldlPT5gVGhlICIke1dlfSIgY29udGV4dCBuYW1lIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5gfSk7bGV0IG89ImdyaWQi'@; put 'O2NvbnN0IGE9KFdlLGF0PSJ0YWJsZSIpPT57Y29uc3QgQ3Q9KChuLGU9InRhYmxlIik9Pntjb25zdCB0PUNMKHtlcnJvcklkRXhpc3RzOmc9PmBUaGUgIiR7Z30iIHNob3J0Y3V0IGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiB0aGUgIiR7bn0iIGNvbnRleHQuYH0pLHI9KHtrZXlzOmcsY2Fs'@; put 'bGJhY2s6RSxncm91cDpPLHJ1bk9ubHlJZjpaPSgpPT4hMCxjYXB0dXJlQ3RybDplZT0hMSxwcmV2ZW50RGVmYXVsdDp2ZT0hMCxzdG9wUHJvcGFnYXRpb246TWU9ITEscmVsYXRpdmVUb0dyb3VwOkhlLHBvc2l0aW9uOldlLGZvcndhcmRUb0NvbnRleHQ6YXR9PXt9KT0+e1h1KE8pJiZKcigi'@; put 'WW91IG5lZWQgdG8gZGVmaW5lIHRoZSBzaG9ydGN1dCdzIGdyb3VwLiIpLCExPT09X2EoRSkmJkpyKCJUaGUgc2hvcnRjdXQncyBjYWxsYmFjayBuZWVkcyB0byBiZSBhIGZ1bmN0aW9uLiIpLCExPT09QXJyYXkuaXNBcnJheShnKSYmSnIoeWNgUGFzcyB0aGUgc2hvcnRjdXRcJ3Mga2V5cyBh'@; put 'cyBhbiBhcnJheSBvZiBhcnJheXMsXHgyMAogICAgICB1c2luZyB0aGUgS2V5Ym9hcmRFdmVudC5rZXkgcHJvcGVydGllczpceDIwCiAgICAgIGRlY2xhcmUgaHR0cHM6IC8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFs'@; put 'dWVzLmApO2NvbnN0IEN0PXtjYWxsYmFjazpFLGdyb3VwOk8scnVuT25seUlmOlosY2FwdHVyZUN0cmw6ZWUscHJldmVudERlZmF1bHQ6dmUsc3RvcFByb3BhZ2F0aW9uOk1lfTtabyhIZSkmJihDdC5yZWxhdGl2ZVRvR3JvdXA9SGUsQ3QucG9zaXRpb249V2UpLHhJZShhdCkmJihDdC5mb3J3'@; put 'YXJkVG9Db250ZXh0PWF0KSxnLmZvckVhY2goQXQ9Pntjb25zdCBLdD1uWihBdCk7aWYodC5oYXNJdGVtKEt0KSl7Y29uc3QgZ249dC5nZXRJdGVtKEt0KTtsZXQgVG49Z24uZmluZEluZGV4KENuPT5Dbi5ncm91cD09PUhlKTstMSE9PVRuPyJiZWZvcmUiPT09V2U/VG4tPTE6VG4rPTE6VG49'@; put 'Z24ubGVuZ3RoLGduLnNwbGljZShUbiwwLEN0KX1lbHNlIHQuYWRkSXRlbShLdCxbQ3RdKX0pfSxvPWc9Pntjb25zdCBFPW5aKGcpO3QucmVtb3ZlSXRlbShFKX07cmV0dXJue19fa2luZE9mOlRJZSxzY29wZTplLGFkZFNob3J0Y3V0OnIsYWRkU2hvcnRjdXRzOihnLEU9e30pPT57Zy5mb3JF'@; put 'YWNoKE89PnthYyhFLChaLGVlKT0+eyExPT09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKE8sZWUpJiYoT1tlZV09RVtlZV0pfSkscihPKX0pfSxnZXRTaG9ydGN1dHM6Zz0+e2NvbnN0IEU9blooZyksTz10LmdldEl0ZW0oRSk7cmV0dXJuIFpvKE8pP08uc2xpY2UoKTpb'@; put 'XX0saGFzU2hvcnRjdXQ6Zz0+e2NvbnN0IEU9blooZyk7cmV0dXJuIHQuaGFzSXRlbShFKX0scmVtb3ZlU2hvcnRjdXRzQnlLZXlzOm8scmVtb3ZlU2hvcnRjdXRzQnlHcm91cDpnPT57dC5nZXRJdGVtcygpLmZvckVhY2goKFtPLFpdKT0+e2NvbnN0IGVlPVosdmU9ZWUuZmlsdGVyKE1lPT5N'@; put 'ZS5ncm91cCE9PWcpOzA9PT12ZS5sZW5ndGg/bygobj0+bi5zcGxpdCgiKyIpKShPKSk6KGVlLmxlbmd0aD0wLGVlLnB1c2goLi4udmUpKX0pfX19KShXZSxhdCk7cmV0dXJuIGkuYWRkSXRlbShXZSxDdCksQ3R9LGw9KCk9Pm8sdT1XZT0+aS5nZXRJdGVtKFdlKTtsZXQgTz0hMTtjb25zdCBa'@; put 'PShXZSxhdCxDdD1sKCkpPT57Y29uc3QgQXQ9eEllKEN0KT9DdDp1KEN0KTtsZXQgS3Q9ITE7aWYoIUF0Py5oYXNTaG9ydGN1dChhdCkpcmV0dXJuIEt0O2NvbnN0IHF0PUF0Py5nZXRTaG9ydGN1dHMoYXQpPz9bXTtmb3IobGV0IGduPTA7Z248cXQubGVuZ3RoO2duKyspe2NvbnN0e2NhbGxi'@; put 'YWNrOlRuLHJ1bk9ubHlJZjpDbixwcmV2ZW50RGVmYXVsdDpxcixzdG9wUHJvcGFnYXRpb246JG4sY2FwdHVyZUN0cmw6VHIsZm9yd2FyZFRvQ29udGV4dDpyaX09cXRbZ25dO2lmKCEwPT09Q24/LihXZSkpe2lmKE89VHI/PyExLEt0PSExPT09VG4oV2UsYXQpLE89ITEscXImJldlLnByZXZl'@; put 'bnREZWZhdWx0KCksJG4mJihGMyhXZSksV2Uuc3RvcFByb3BhZ2F0aW9uKCkpLEt0KWJyZWFrO3JpJiZaKFdlLGF0LHJpKX19cmV0dXJuIEt0fSxNZT1mdW5jdGlvbiBISXQobixlLHQscixpLG89bnVsbCl7Y29uc3QgYT1FPT57aWYoITEhPT1lKEUpKXtpZighMT09PXQoRSl8fDIyOT09PUUu'@; put 'a2V5Q29kZXx8InN0cmluZyIhPXR5cGVvZiBFLmtleXx8SjUoRSkpcmV0dXJuO2NvbnN0IFdlPXVPKEUpO2xldCBhdD1bXTtkTyhXZSl8fChhdD12VChFKSk7Y29uc3QgQ3Q9W1dlXS5jb25jYXQoYXQpO2xldCBBdD1pKEUsQ3QpO3JldHVybiFBdCYmKGx3KCkmJmF0LmluY2x1ZGVzKCJtZXRh'@; put 'Iil8fCFsdygpJiZhdC5pbmNsdWRlcygiY29udHJvbCIpKSYmKEF0PWkoRSxbV2VdLmNvbmNhdCh2VChFLCEwKSkpKSx2b2lkIHIoRSl9aWYoITE9PT1fYShvKXx8MjI5PT09RS5rZXlDb2RlfHwic3RyaW5nIiE9dHlwZW9mIEUua2V5fHxKNShFKSlyZXR1cm47Y29uc3QgWj11TyhFKTtsZXQg'@; put 'ZWU9W107ZE8oWil8fChlZT12VChFKSk7Y29uc3QgdmU9W1pdLmNvbmNhdChlZSk7bGV0IE1lPW8oRSx2ZSk7IU1lJiYobHcoKSYmZWUuaW5jbHVkZXMoIm1ldGEiKXx8IWx3KCkmJmVlLmluY2x1ZGVzKCJjb250cm9sIikpJiYoTWU9byhFLFtaXS5jb25jYXQodlQoRSwhMCkpKSkscihFKX0s'@; put 'bD0oKT0+e2hPLnJlbGVhc2VBbGwoKX07cmV0dXJue21vdW50OigpPT57bGV0IEU9bjtmb3IoO0U7KXtjb25zdHtkb2N1bWVudEVsZW1lbnQ6T309RS5kb2N1bWVudCxaPWZPLmdldChPKT8/MDswPT09WiYmKE8uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsQUllKSxPLmFkZEV2ZW50TGlz'@; put 'dGVuZXIoImtleXVwIixrSWUpKSxmTy5zZXQoTyxaKzEpLE8uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYSksTy5hZGRFdmVudExpc3RlbmVyKCJibHVyIixsKSxFPXY3KEUpfX0sdW5tb3VudDooKT0+e2xldCBFPW47Zm9yKDtFOyl7Y29uc3R7ZG9jdW1lbnRFbGVtZW50Ok99PUUuZG9j'@; put 'dW1lbnQsWj1mTy5nZXQoTyk/PzA7Wjw9MT8oTy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixBSWUpLE8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGtJZSksZk8uZGVsZXRlKE8pKTpmTy5zZXQoTyxaLTEpLE8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYSksTy5y'@; put 'ZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixsKSxFPXY3KEUpfX0saXNQcmVzc2VkOkU9PmhPLmlzUHJlc3NlZChFKSxyZWxlYXNlUHJlc3NlZEtleXM6KCk9PmhPLnJlbGVhc2VBbGwoKX19KG4sV2U9Pntjb25zdCBhdD1sKCksQ3Q9dShhdCk7cmV0dXJuIGUoV2UsQ3Q/LnNjb3BlPz8idGFi'@; put 'bGUiKX0sdCxyLFosKFdlLGF0KT0+e2NvbnN0IEN0PWkuZ2V0SXRlbXMoKTtmb3IobGV0IEF0PTA7QXQ8Q3QubGVuZ3RoO0F0Kz0xKXtjb25zdFssS3RdPUN0W0F0XTtpZigiZ2xvYmFsIj09PUt0LnNjb3BlJiZaKFdlLGF0LEt0KSlyZXR1cm4hMH1yZXR1cm4hMX0pO3JldHVybiBNZS5tb3Vu'@; put 'dCgpLHthZGRDb250ZXh0OmEsZ2V0QWN0aXZlQ29udGV4dE5hbWU6bCxnZXRDb250ZXh0OnUsZ2V0T3JDcmVhdGVDb250ZXh0OihXZSxhdD0idGFibGUiKT0+dShXZSk/P2EoV2UsYXQpLHNldEFjdGl2ZUNvbnRleHROYW1lOldlPT57aS5oYXNJdGVtKFdlKXx8SnIoeWNgWW91J3ZlIHRyaWVk'@; put 'IHRvIGFjdGl2YXRlIHRoZSAiJHtXZX0iIHNob3J0Y3V0IGNvbnRleHRceDIwCiAgICAgICAgdGhhdCBkb2VzIG5vdCBleGlzdC4gQmVmb3JlIGFjdGl2YXRpb24sIHJlZ2lzdGVyIHRoZSBjb250ZXh0IHVzaW5nIHRoZSAiYWRkQ29udGV4dCIgbWV0aG9kLmApLG89V2V9LGhhc0V2ZW50U2hv'@; put 'cnRjdXQ6KFdlLGF0KT0+e2NvbnN0IEN0PXUoV2UpO3JldHVybiEhQ3QmJigobixlKT0+e2lmKCJzdHJpbmciIT10eXBlb2Ygbi5rZXkpcmV0dXJuW107Y29uc3QgdD11TyhuKSxyPWRPKHQpLGk9cj9bXTp2VChuKSxhPVtbdF0uY29uY2F0KGkpXTtyZXR1cm4gcnx8KCJmdW5jdGlvbiI9PXR5'@; put 'cGVvZiBlJiZlKCk/aS5pbmNsdWRlcygibWV0YSIpOmkuaW5jbHVkZXMoImNvbnRyb2wiKSkmJmEucHVzaChbdF0uY29uY2F0KHZUKG4sITApKSksYX0pKGF0LGx3KS5zb21lKEt0PT5DdC5oYXNTaG9ydGN1dChLdCkpfSxpc0N0cmxQcmVzc2VkOigpPT4hTyYmKE1lLmlzUHJlc3NlZCgiY29u'@; put 'dHJvbCIpfHxNZS5pc1ByZXNzZWQoIm1ldGEiKSkscmVsZWFzZVByZXNzZWRLZXlzOigpPT5NZS5yZWxlYXNlUHJlc3NlZEtleXMoKSxkZXN0cm95OigpPT5NZS51bm1vdW50KCl9fSkoe2hhbmRsZUV2ZW50Oih1dCxIdCk9PiJnbG9iYWwiPT09SHR8fHIuaXNMaXN0ZW5pbmcoKSxiZWZvcmVL'@; put 'ZXlEb3duOnV0PT5yLnJ1bkhvb2tzKCJiZWZvcmVLZXlEb3duIix1dCksYWZ0ZXJLZXlEb3duOnV0PT57dGhpcy5pc0Rlc3Ryb3llZHx8ci5ydW5Ib29rcygiYWZ0ZXJEb2N1bWVudEtleURvd24iLHV0KX0sb3duZXJXaW5kb3c6dGhpcy5yb290V2luZG93fSk7dGhpcy5hZGRIb29rKCJiZWZv'@; put 'cmVPbkNlbGxNb3VzZURvd24iLHV0PT57ITE9PT11dC5jdHJsS2V5JiYhMT09PXV0Lm1ldGFLZXkmJnhpLnJlbGVhc2VQcmVzc2VkS2V5cygpfSksdGhpcy5nZXRTaG9ydGN1dE1hbmFnZXI9ZnVuY3Rpb24oKXtyZXR1cm4geGl9LGc9bmV3IF9JdChyKTtjb25zdCBUbz1yMih0aGlzKT9BSXQo'@; put 'cik6bnVsbCx3cz1yMih0aGlzKT9uZXcgTUx0KHt0b3A6ci5yb290U2xvdFRvcEVsZW1lbnQsYm90dG9tOnIucm9vdFNsb3RCb3R0b21FbGVtZW50fSk6bnVsbDt0aGlzLmdldEZvY3VzTWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiBnfSx0aGlzLmdldEZvY3VzU2NvcGVNYW5hZ2VyPWZ1bmN0'@; put 'aW9uKCl7cmV0dXJuIHIyKHIpfHxKcigiVGhlIEZvY3VzU2NvcGVNYW5hZ2VyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbWFpbiBIYW5kc29udGFibGUgaW5zdGFuY2UuIiksVG99LHRoaXMuZ2V0TGF5b3V0TWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiByMihyKXx8SnIoIlRoZSBMYXlv'@; put 'dXRNYW5hZ2VyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbWFpbiBIYW5kc29udGFibGUgaW5zdGFuY2UuIiksd3N9O2NvbnN0IHRzPVoudGhlbWUsa2E9Wi50aGVtZU5hbWUsYW89clooci5yb290Q29udGFpbmVyKTtyMihyKSYmIWFvJiYoQ2EodHMpfHwhdHMmJiFrYSkmJnJpKHRzKSxh'@; put 'bGUoKS5mb3JFYWNoKHV0PT57Y29uc3QgSHQ9U0wodXQpO0h0JiZDdC5hZGRJdGVtKHV0LG5ldyBIdCh0aGlzKSl9KSxmdW5jdGlvbiBCRHQobil7W1ZEdCxIRHRdLmZvckVhY2goZT0+ZShuKSl9KHIpLHIyKHRoaXMpJiZmdW5jdGlvbiBESXQobil7W0lJdF0uZm9yRWFjaChlPT5lKG4pKX0o'@; put 'cikseGkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImdyaWQiKSxHby5nZXRTaW5nbGV0b24oKS5ydW4ociwiY29uc3RydWN0Iil9O1VmKGtEZSksQzAoTVQpO2NvbnN0IFUzPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1uZXcgUkRlKGUsdHx8e30sUGxlKTtyZXR1cm4gci5pbml0KCkscn07VTMuZWRp'@; put 'dG9ycz17QmFzZUVkaXRvcjpJNyxUZXh0RWRpdG9yOmRffSxVMy5kb209e2VtcHR5OkM0fSxVMy5oZWxwZXI9e30sVTMuQ29yZT1mdW5jdGlvbihuLGU9e30pe3JldHVybiBuZXcgUkRlKG4sZSxQbGUpfSxVMy5EZWZhdWx0U2V0dGluZ3M9JFJlKCksVTMuaG9va3M9R28uZ2V0U2luZ2xldG9u'@; put 'KCksVTMuQ2VsbENvb3Jkcz10WSxVMy5DZWxsUmFuZ2U9blksVTMucGFja2FnZU5hbWU9ImhhbmRzb250YWJsZSIsVTMuYnVpbGREYXRlPSIzMC8wNi8yMDI2IDA4OjQ1OjMzIixVMy52ZXJzaW9uPSIxOC4wLjAiLFUzLmxhbmd1YWdlcz17ZGljdGlvbmFyeUtleXM6TixnZXRMYW5ndWFnZURp'@; put 'Y3Rpb25hcnk6a1JlLGdldExhbmd1YWdlc0RpY3Rpb25hcmllczpmdW5jdGlvbiBqa3QoKXtyZXR1cm4gVmt0KCl9LHJlZ2lzdGVyTGFuZ3VhZ2VEaWN0aW9uYXJ5OkFSZSxnZXRUcmFuc2xhdGVkUGhyYXNlOlJSZX0sVTMudGhlbWVzPXtoYXNUaGVtZTpFVCxnZXRUaGVtZTpDTyxnZXRUaGVt'@; put 'ZU5hbWVzOnlEZSxnZXRUaGVtZXM6YkRlLHJlZ2lzdGVyVGhlbWU6U08scmVpbml0VGhlbWU6Q0RlfTtjb25zdCBLcD1VMyxRTHQ9bj0+e2NvbnN0IGU9STcucHJvdG90eXBlLmV4dGVuZCgpLHQ9WyJjbG9zZSIsImZvY3VzIiwiZ2V0VmFsdWUiLCJvcGVuIiwic2V0VmFsdWUiXSxyPU9iamVj'@; put 'dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEk3LnByb3RvdHlwZSksaT1lLnByb3RvdHlwZTtyZXR1cm4gci5mb3JFYWNoKG89PntpZihuW29dKXtjb25zdCBhPWUucHJvdG90eXBlW29dO2lbb109ZnVuY3Rpb24oLi4ubCl7cmV0dXJuIHQuaW5jbHVkZXMobyl8fGEuYXBwbHkodGhpcyxsKSxuW29d'@; put 'KHRoaXMsLi4ubCl9fX0pLE9iamVjdC5rZXlzKG4pLmZvckVhY2gobz0+e3IuaW5jbHVkZXMobyl8fChpW29dPWZ1bmN0aW9uKC4uLmEpe3JldHVybiBuW29dKHRoaXMsLi4uYSl9KX0pLGV9LElEZT0oe2luaXQ6bixhZnRlck9wZW46ZSxhZnRlckluaXQ6dCxhZnRlckNsb3NlOnIsYmVmb3Jl'@; put 'T3BlbjppLGdldFZhbHVlOm8sc2V0VmFsdWU6YSxvbkZvY3VzOmwsc2hvcnRjdXRzOnUsdmFsdWU6ZyxyZW5kZXI6RSxjb25maWc6TyxzaG9ydGN1dHNHcm91cDpaLHBvc2l0aW9uOmVlLC4uLnZlfSk9PlFMdCh7aW5pdChIZSl7T2JqZWN0LmFzc2lnbihIZSx7dmFsdWU6Zyxjb25maWc6Tyxy'@; put 'ZW5kZXI6RSxwb3NpdGlvbjplZSwuLi52ZX0pLEhlLl9vcGVuZWQ9ITEsSGUuY29udGFpbmVyPUhlLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSGUuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiLCJwb3J0YWwiPT09ZWU/SGUuaG90LnJvb3RQb3J0YWxFbGVt'@; put 'ZW50LmFwcGVuZENoaWxkKEhlLmNvbnRhaW5lcik6SGUuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKEhlLmNvbnRhaW5lciksbihIZSksSGUuaW5wdXR8fEpyKCJJbnB1dCBpcyBub3QgYXNzaWduZWQuIEFzc2lnbiBpdCBpbiB0aGUgaW5pdCBjYWxsYmFjay4iKSxIZS5jb250YWluZXIu'@; put 'YXBwZW5kQ2hpbGQoSGUuaW5wdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0KEhlKSxIZS5wcmV2ZW50Q2xvc2VFbGVtZW50JiZIZS5wcmV2ZW50Q2xvc2VFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJihIZS5ldmVudE1hbmFnZXI9bmV3IFcyKEhlLmhvdCksSGUuZXZlbnRNYW5h'@; put 'Z2VyLmFkZEV2ZW50TGlzdGVuZXIoSGUucHJldmVudENsb3NlRWxlbWVudCwibW91c2Vkb3duIixXZT0+e1dlLnN0b3BQcm9wYWdhdGlvbigpfSkpLEhlLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwoKT0+SGUucmVmcmVzaERpbWVuc2lvbnM/LigpKSxIZS5hZGRIb29rKCJh'@; put 'ZnRlclNjcm9sbFZlcnRpY2FsbHkiLCgpPT5IZS5yZWZyZXNoRGltZW5zaW9ucz8uKCkpfSxnZXRWYWx1ZTpIZT0+ImZ1bmN0aW9uIj09dHlwZW9mIG8/byhIZSk6SGUudmFsdWUsc2V0VmFsdWUoSGUsV2UpeyJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoSGUsV2UpOkhlLnZhbHVlPVdlLCJmdW5j'@; put 'dGlvbiI9PXR5cGVvZiBFJiZFKEhlKX0scmVmcmVzaERpbWVuc2lvbnMoSGUpe2lmKEhlLlREPUhlLmdldEVkaXRlZENlbGwoKSwhSGUuVEQpcmV0dXJuIHZvaWQgSGUuY2xvc2UoKTtpZighSGUuX29wZW5lZClyZXR1cm47Y29uc3QgV2U9SGUuY29udGFpbmVyLnN0eWxlO2lmKFdlLmRpc3Bs'@; put 'YXk9ImJsb2NrIixXZS5wb3NpdGlvbj0iYWJzb2x1dGUiLCJwb3J0YWwiPT09ZWUpe2NvbnN0IGF0PUhlLlRELmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1dlLnRvcD1gJHtIZS5ob3Qucm9vdFdpbmRvdy5wYWdlWU9mZnNldCthdC50b3B9cHhgLFdlW0hlLmhvdC5pc1J0bCgpPyJyaWdodCI6'@; put 'ImxlZnQiXT1gJHtIZS5ob3Qucm9vdFdpbmRvdy5wYWdlWE9mZnNldCthdFtIZS5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il19cHhgfWVsc2V7Y29uc3QgYXQ9SGUuZ2V0RWRpdGVkQ2VsbFJlY3QoKTtpZighYXQpcmV0dXJuO1dlLnRvcD1gJHthdC50b3B9cHhgLFdlW0hlLmhvdC5pc1J0'@; put 'bCgpPyJyaWdodCI6ImxlZnQiXT1gJHthdC5zdGFydH1weGAsV2Uud2lkdGg9YCR7YXQud2lkdGh9cHhgLFdlLmhlaWdodD1gJHthdC5oZWlnaHR9cHhgfX0sb3BlbihIZSxXZSl7SGUuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImh0X2Nsb25lX21hc3RlciIpLEhlLl9vcGVuZWQ9ITAsSGUu'@; put 'cmVmcmVzaERpbWVuc2lvbnM/LigpLEhlLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZWRpdG9yIiksKEhlPT57Y29uc3QgYXQ9SGUuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLEN0PXtncm91cDpafTt1JiZhdC5h'@; put 'ZGRTaG9ydGN1dHModS5tYXAoQXQ9Pih7Li4uQXQscmVsYXRpdmVUb0dyb3VwOkF0LnJlbGF0aXZlVG9Hcm91cD8/ImVkaXRvck1hbmFnZXIuaGFuZGxpbmdFZGl0b3IiLHBvc2l0aW9uOkF0LnBvc2l0aW9uPz8iYmVmb3JlIixjYWxsYmFjazpLdD0+QXQuY2FsbGJhY2soSGUsS3QpfSkpLEN0'@; put 'KX0pKEhlKSxlJiZlKEhlLFdlKX0sZm9jdXMoSGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBsP2woSGUpOkhlLmNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvcignYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9Ii0xIl0pJyk/LmZv'@; put 'Y3VzKCl9LGNsb3NlKEhlKXtIZS5fb3BlbmVkPSExLEhlLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJub25lIixIZS5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgiaHRfY2xvbmVfbWFzdGVyIiksSGUuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJl'@; put 'bW92ZVNob3J0Y3V0c0J5R3JvdXAoWj8/IiIpLCJmdW5jdGlvbiI9PXR5cGVvZiByJiZyKEhlKX0scHJlcGFyZShIZSxXZSxhdCxDdCxBdCxLdCxxdCl7ImZ1bmN0aW9uIj09dHlwZW9mIGk/aShIZSx7cm93OldlLGNvbDphdCxwcm9wOkN0LHRkOkF0LG9yaWdpbmFsVmFsdWU6S3QsY2VsbFBy'@; put 'b3BlcnRpZXM6cXR9KTpIZS5zZXRWYWx1ZShLdCl9fSksRERlPW49PihlLHQscixpLG8sYSxsKT0+bih7aW5zdGFuY2U6ZSx0ZDp0LHJvdzpyLGNvbHVtbjppLHByb3A6byx2YWx1ZTphLGNlbGxQcm9wZXJ0aWVzOmx9KSxKTHQ9WyJpbnB1dFBsYWNlaG9sZGVyIl07ZnVuY3Rpb24gZU90KG4s'@; put 'ZSl7fWNvbnN0IHRPdD1bImNvbnRhaW5lciJdO2xldCBMRGU9KCgpPT57Y2xhc3Mgbnt0b3A7bGVmdDtoZWlnaHQ7d2lkdGg7c2V0IGlzVmlzaWJsZSh0KXt0aGlzLl9pc1Zpc2libGU9dH1wbGFjZWhvbGRlckN1c3RvbUNsYXNzPSJoYW5kc29udGFibGVJbnB1dEhvbGRlciBodF9jbG9uZV9t'@; put 'YXN0ZXIiO3NldCBjb21wb25lbnRSZWYodCl7dCYmdGhpcy5jb250YWluZXIuaW5zZXJ0KHQuaG9zdFZpZXcpfWNvbnRhaW5lcjtnZXQgZGlzcGxheSgpe3JldHVybiB0aGlzLl9pc1Zpc2libGU/ImJsb2NrIjoibm9uZSJ9X2lzVmlzaWJsZT0hMTtkZXRhY2hFZGl0b3IoKXt0aGlzLmNvbnRh'@; put 'aW5lci5kZXRhY2goKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1sibmctY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihyLGkpe2lmKDEmciYmV28oSkx0LDcsRHMpLDIm'@; put 'cil7bGV0IG87Y2kobz11aSgpKSYmKGkuY29udGFpbmVyPW8uZmlyc3QpfX0saW5wdXRzOnt0b3A6InRvcCIsbGVmdDoibGVmdCIsaGVpZ2h0OiJoZWlnaHQiLHdpZHRoOiJ3aWR0aCIsaXNWaXNpYmxlOiJpc1Zpc2libGUiLHBsYWNlaG9sZGVyQ3VzdG9tQ2xhc3M6InBsYWNlaG9sZGVyQ3Vz'@; put 'dG9tQ2xhc3MiLGNvbXBvbmVudFJlZjoiY29tcG9uZW50UmVmIn0sZGVjbHM6Myx2YXJzOjE2LGNvbnN0czpbWyJpbnB1dFBsYWNlaG9sZGVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHIsaSl7MSZyJiYoJFIoMCwiZGl2IiksRXRlKDEsZU90LDAsMCwibmctdGVtcGxhdGUiLG51bGwsMCxj'@; put 'ZCkscVIoKSksMiZyJiYoQmooaS5wbGFjZWhvbGRlckN1c3RvbUNsYXNzKSxPMigiZGlzcGxheSIsaS5kaXNwbGF5KSgid2lkdGgiLGkud2lkdGgsInB4IikoImhlaWdodCIsaS5oZWlnaHQsInB4IikoIm1heC13aWR0aCIsaS53aWR0aCwicHgiKSgibWF4LWhlaWdodCIsaS5oZWlnaHQsInB4'@; put 'IikoInRvcCIsaS50b3AsInB4IikoImxlZnQiLGkubGVmdCwicHgiKSl9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pfXJldHVybiBufSkoKTtjbGFzcyBuT3QgZXh0ZW5kcyBLcC5lZGl0b3JzLkJhc2VFZGl0b3J7X2NvbXBvbmVudFJlZjtfZWRpdG9yUGxhY2VIb2xkZXJS'@; put 'ZWY7X2lzUGxhY2Vob2xkZXJSZWFkeT0hMTtfZmluaXNoRWRpdFN1YnNjcmlwdGlvbjtfY2FuY2VsRWRpdFN1YnNjcmlwdGlvbjtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsdGhpcy5vbkFmdGVyUm93UmVzaXplLmJpbmQodGhpcykp'@; put 'LHRoaXMuaG90LmFkZEhvb2soImFmdGVyQ29sdW1uUmVzaXplIix0aGlzLm9uQWZ0ZXJDb2x1bW5SZXNpemUuYmluZCh0aGlzKSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJEZXN0cm95Iix0aGlzLm9uQWZ0ZXJEZXN0cm95LmJpbmQodGhpcykpfXByZXBhcmUoZSx0LHIsaSxvLGEpe2lmKCF0'@; put 'aGlzLmlzT3BlbmVkKCkpe3N1cGVyLnByZXBhcmUoZSx0LHIsaSxvLGEpO2NvbnN0IGw9dGhpcy5ob3QuZ2V0Q29sdW1uTWV0YSh0KTt0aGlzLl9pc1BsYWNlaG9sZGVyUmVhZHl8fCh0aGlzLmNyZWF0ZUVkaXRvclBsYWNlaG9sZGVyKGwuX2Vudmlyb25tZW50SW5qZWN0b3IpLHRoaXMuX2lz'@; put 'UGxhY2Vob2xkZXJSZWFkeT0hMCksdGhpcy5fY29tcG9uZW50UmVmPWwuX2VkaXRvckNvbXBvbmVudFJlZmVyZW5jZSx0aGlzLmNsZWFudXBTdWJzY3JpcHRpb25zKCksdGhpcy5fZmluaXNoRWRpdFN1YnNjcmlwdGlvbj10aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuZmluaXNoRWRpdC5w'@; put 'aXBlKE1wKDEpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmZpbmlzaEVkaXRpbmcoKX0pLHRoaXMuX2NhbmNlbEVkaXRTdWJzY3JpcHRpb249dGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmNhbmNlbEVkaXQucGlwZShNcCgxKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5jYW5jZWxDaGFuZ2VzKCl9'@; put 'KX19Y2xvc2UoKXt0aGlzLmlzT3BlbmVkKCkmJih0aGlzLnJlc2V0RWRpdG9yU3RhdGUoKSx0aGlzLl9lZGl0b3JQbGFjZUhvbGRlclJlZj8uY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmPy5pbnN0YW5jZS5kZXRhY2hFZGl0b3Io'@; put 'KSx0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlLm9uQ2xvc2UoKSl9Zm9jdXMoKXt0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlLm9uRm9jdXMoKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLl9jb21wb25lbnRSZWY/Lmluc3RhbmNlPy5nZXRWYWx1ZSgpfW9wZW4oZSl7dGhpcy5ob3Qu'@; put 'Z2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImVkaXRvciIpLHRoaXMuYXBwbHlQcm9wc1RvRWRpdG9yKCksdGhpcy5fY29tcG9uZW50UmVmPy5pbnN0YW5jZS5vbk9wZW4oZSl9c2V0VmFsdWUoZSl7dGhpcy5fY29tcG9uZW50UmVmPy5pbnN0YW5jZT8uc2V0VmFs'@; put 'dWUoZSksdGhpcy5fY29tcG9uZW50UmVmPy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9YXBwbHlQcm9wc1RvRWRpdG9yKCl7aWYoIXRoaXMuX2NvbXBvbmVudFJlZnx8IXRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmKXJldHVybjtjb25zdCBlPXRoaXMuZ2V0RWRpdGVkQ2Vs'@; put 'bFJlY3QoKTt0aGlzLmlzSW5GdWxsRWRpdE1vZGUoKXx8dGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnNldFZhbHVlKG51bGwpLHRoaXMuX2NvbXBvbmVudFJlZi5zZXRJbnB1dCgib3JpZ2luYWxWYWx1ZSIsdGhpcy5vcmlnaW5hbFZhbHVlKSx0aGlzLl9jb21wb25lbnRSZWYuc2V0SW5w'@; put 'dXQoInJvdyIsdGhpcy5yb3cpLHRoaXMuX2NvbXBvbmVudFJlZi5zZXRJbnB1dCgiY29sdW1uIix0aGlzLmNvbCksdGhpcy5fY29tcG9uZW50UmVmLnNldElucHV0KCJwcm9wIix0aGlzLnByb3ApLHRoaXMuX2NvbXBvbmVudFJlZi5zZXRJbnB1dCgiY2VsbFByb3BlcnRpZXMiLHRoaXMuY2Vs'@; put 'bFByb3BlcnRpZXMpLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJ0b3AiLGUudG9wKSx0aGlzLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgibGVmdCIsZS5zdGFydCksdGhpcy5fZWRpdG9yUGxhY2VIb2xkZXJSZWYuc2V0SW5wdXQoImhlaWdodCIsZS5oZWln'@; put 'aHQpLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJ3aWR0aCIsZS53aWR0aCksdGhpcy5fZWRpdG9yUGxhY2VIb2xkZXJSZWYuc2V0SW5wdXQoImlzVmlzaWJsZSIsITApLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJjb21wb25lbnRSZWYiLHRoaXMu'@; put 'X2NvbXBvbmVudFJlZiksdGhpcy5fZWRpdG9yUGxhY2VIb2xkZXJSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfWNyZWF0ZUVkaXRvclBsYWNlaG9sZGVyKGUpe3RoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmPWZJKExEZSx7ZW52aXJvbm1lbnRJbmplY3RvcjplfSksdGhp'@; put 'cy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZWRpdG9yUGxhY2VIb2xkZXJSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCl9b25BZnRlckNvbHVtblJlc2l6ZSgpe3RoaXMuaXNPcGVuZWQoKSYmdGhpcy5hcHBseVByb3BzVG9FZGl0b3IoKX1vbkFmdGVyUm93UmVzaXplKCl7'@; put 'dGhpcy5pc09wZW5lZCgpJiZ0aGlzLmFwcGx5UHJvcHNUb0VkaXRvcigpfW9uQWZ0ZXJEZXN0cm95KCl7dGhpcy5jbGVhbnVwU3Vic2NyaXB0aW9ucygpLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmPy5kZXN0cm95KCl9Y2xlYW51cFN1YnNjcmlwdGlvbnMoKXt0aGlzLl9maW5pc2hFZGl0'@; put 'U3Vic2NyaXB0aW9uJiYodGhpcy5fZmluaXNoRWRpdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2ZpbmlzaEVkaXRTdWJzY3JpcHRpb249dm9pZCAwKSx0aGlzLl9jYW5jZWxFZGl0U3Vic2NyaXB0aW9uJiYodGhpcy5fY2FuY2VsRWRpdFN1YnNjcmlwdGlvbi51bnN1YnNjcmli'@; put 'ZSgpLHRoaXMuX2NhbmNlbEVkaXRTdWJzY3JpcHRpb249dm9pZCAwKX1yZXNldEVkaXRvclN0YXRlKCl7dGhpcy5fZWRpdG9yUGxhY2VIb2xkZXJSZWYmJih0aGlzLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgidG9wIix2b2lkIDApLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVm'@; put 'LnNldElucHV0KCJsZWZ0Iix2b2lkIDApLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJoZWlnaHQiLHZvaWQgMCksdGhpcy5fZWRpdG9yUGxhY2VIb2xkZXJSZWYuc2V0SW5wdXQoIndpZHRoIix2b2lkIDApLHRoaXMuX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0'@; put 'KCJpc1Zpc2libGUiLCExKSx0aGlzLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgiY29tcG9uZW50UmVmIix2b2lkIDApKX19bGV0IE9EZT0oKCk9PntjbGFzcyBue3ZhbHVlPSIiO2luc3RhbmNlO3RkO3Jvdztjb2w7cHJvcDtjZWxsUHJvcGVydGllcztnZXRQcm9wcygpe3JldHVy'@; put 'biB0aGlzLmNlbGxQcm9wZXJ0aWVzPy5yZW5kZXJlclByb3BzPz97fX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bil9O3N0YXRpYyBcdTAyNzVkaXI9JHIoe3R5cGU6bixpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIsaW5zdGFuY2U6Imluc3RhbmNlIix0ZDoidGQi'@; put 'LHJvdzoicm93Iixjb2w6ImNvbCIscHJvcDoicHJvcCIsY2VsbFByb3BlcnRpZXM6ImNlbGxQcm9wZXJ0aWVzIn19KX1yZXR1cm4gbn0pKCk7Y2xhc3MgVFQgZXh0ZW5kcyBPRGV7c3RhdGljIFJFTkRFUkVSX01BUktFUj1TeW1ib2woIkhvdENlbGxSZW5kZXJlckNvbXBvbmVudCIpO3N0YXRp'@; put 'YyBcdTAyNzVmYWM9KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShUVCkpKShyfHxUVCl9fSkoKTtzdGF0aWMgXHUwMjc1Y21wPVByKHt0eXBlOlRULHNlbGVjdG9yczpbWyJob3QtY2VsbC1yZW5kZXJlciJdXSxmZWF0dXJlczpbRm9dLGRlY2xzOjAsdmFy'@; put 'czowLHRlbXBsYXRlOmZ1bmN0aW9uKHQscil7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KX1sZXQgTkRlPSgoKT0+e2NsYXNzIG57aGVpZ2h0Rml0UGFyZW50Q29udGFpbmVyPTEwMDt3aWR0aEZpdFBhcmVudENvbnRhaW5lcj0xMDA7cm93O2NvbHVtbjtwcm9wO29yaWdp'@; put 'bmFsVmFsdWU7Y2VsbFByb3BlcnRpZXM7ZmluaXNoRWRpdD1uZXcgS3I7Y2FuY2VsRWRpdD1uZXcgS3I7dmFsdWU7Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXRWYWx1ZSh0KXt0aGlzLnZhbHVlPXR9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4p'@; put 'fTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOm4saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24ocixpKXsyJnImJk8yKCJoZWlnaHQiLGkuaGVpZ2h0Rml0UGFyZW50Q29udGFpbmVyLCIlIikoIndpZHRoIixpLndpZHRoRml0UGFyZW50Q29udGFpbmVyLCIlIil9LGlucHV0czp7'@; put 'cm93OiJyb3ciLGNvbHVtbjoiY29sdW1uIixwcm9wOiJwcm9wIixvcmlnaW5hbFZhbHVlOiJvcmlnaW5hbFZhbHVlIixjZWxsUHJvcGVydGllczoiY2VsbFByb3BlcnRpZXMifSxvdXRwdXRzOntmaW5pc2hFZGl0OiJmaW5pc2hFZGl0IixjYW5jZWxFZGl0OiJjYW5jZWxFZGl0In19KX1yZXR1'@; put 'cm4gbn0pKCk7Y2xhc3MgRU8gZXh0ZW5kcyBORGV7c3RhdGljIEVESVRPUl9NQVJLRVI9U3ltYm9sKCJIb3RDZWxsRWRpdG9yQ29tcG9uZW50Iik7dGFiaW5kZXg9LTE7ZGF0YUhvdElucHV0PSIiO2hhbmRzb250YWJsZUlucHV0Q2xhc3M9ITA7b25DbG9zZSgpe31vbk9wZW4oZSl7fXN0YXRp'@; put 'YyBcdTAyNzVmYWM9KCgpPT57bGV0IGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybihlfHwoZT13YShFTykpKShyfHxFTyl9fSkoKTtzdGF0aWMgXHUwMjc1ZGlyPSRyKHt0eXBlOkVPLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQscil7MiZ0JiYoUnIoInRhYmluZGV4Iixy'@; put 'LnRhYmluZGV4KSgiZGF0YS1ob3QtaW5wdXQiLHIuZGF0YUhvdElucHV0KSx3cigiaGFuZHNvbnRhYmxlSW5wdXQiLHIuaGFuZHNvbnRhYmxlSW5wdXRDbGFzcykpfSxmZWF0dXJlczpbRm9dfSl9ZnVuY3Rpb24gTGRlKG4pe2lmKCFuLl9jb21wb25lbnRSZWZ8fCFuLl9lZGl0b3JQbGFjZUhv'@; put 'bGRlclJlZilyZXR1cm47bi5fY29tcG9uZW50UmVmLnNldElucHV0KCJvcmlnaW5hbFZhbHVlIixuLm9yaWdpbmFsVmFsdWUpLG4uX2NvbXBvbmVudFJlZi5zZXRJbnB1dCgicm93IixuLnJvdyksbi5fY29tcG9uZW50UmVmLnNldElucHV0KCJjb2x1bW4iLG4uY29sKSxuLl9jb21wb25lbnRS'@; put 'ZWYuc2V0SW5wdXQoInByb3AiLG4ucHJvcCksbi5fY29tcG9uZW50UmVmLnNldElucHV0KCJjZWxsUHJvcGVydGllcyIsbi5jZWxsUHJvcGVydGllcyk7Y29uc3QgZT1uLmhvdC5nZXRDZWxsKG4ucm93LG4uY29sKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bi5fZWRpdG9yUGxhY2VIb2xk'@; put 'ZXJSZWYuc2V0SW5wdXQoInBsYWNlaG9sZGVyQ3VzdG9tQ2xhc3MiLCIiKSxuLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgiaGVpZ2h0IixlPy5oZWlnaHQ/PzApLG4uX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJ3aWR0aCIsZT8ud2lkdGg/PzApLG4uX2VkaXRvclBs'@; put 'YWNlSG9sZGVyUmVmLnNldElucHV0KCJpc1Zpc2libGUiLCEwKSxuLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgiY29tcG9uZW50UmVmIixuLl9jb21wb25lbnRSZWYpLG4uX2VkaXRvclBsYWNlSG9sZGVyUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX1mdW5j'@; put 'dGlvbiBGRGUobil7bi5fZmluaXNoRWRpdFN1YnNjcmlwdGlvbiYmKG4uX2ZpbmlzaEVkaXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxuLl9maW5pc2hFZGl0U3Vic2NyaXB0aW9uPXZvaWQgMCksbi5fY2FuY2VsRWRpdFN1YnNjcmlwdGlvbiYmKG4uX2NhbmNlbEVkaXRTdWJzY3JpcHRp'@; put 'b24udW5zdWJzY3JpYmUoKSxuLl9jYW5jZWxFZGl0U3Vic2NyaXB0aW9uPXZvaWQgMCl9Y2xhc3MgeFQgZXh0ZW5kcyBPRGV7c3RhdGljIFJFTkRFUkVSX01BUktFUj1TeW1ib2woIkhvdENlbGxSZW5kZXJlckFkdmFuY2VkQ29tcG9uZW50Iik7c3RhdGljIFx1MDI3NWZhYz0oKCk9PntsZXQg'@; put 'ZTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuKGV8fChlPXdhKHhUKSkpKHJ8fHhUKX19KSgpO3N0YXRpYyBcdTAyNzVjbXA9UHIoe3R5cGU6eFQsc2VsZWN0b3JzOltbImhvdC1jZWxsLXJlbmRlcmVyLWFkdmFuY2VkIl1dLGZlYXR1cmVzOltGb10sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6'@; put 'ZnVuY3Rpb24odCxyKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pfWNsYXNzIE1PIGV4dGVuZHMgTkRle3N0YXRpYyBFRElUT1JfTUFSS0VSPVN5bWJvbCgiSG90Q2VsbEVkaXRvckFkdmFuY2VkQ29tcG9uZW50Iik7b25Gb2N1cyhlKXt9cG9zaXRpb249ImNvbnRhaW5l'@; put 'ciI7c2hvcnRjdXRzO3Nob3J0Y3V0c0dyb3VwO2NvbmZpZzthZnRlck9wZW4oZSx0KXt9YWZ0ZXJDbG9zZShlKXt9YWZ0ZXJJbml0KGUpe31iZWZvcmVPcGVuKGUse30pe31zdGF0aWMgXHUwMjc1ZmFjPSgoKT0+e2xldCBlO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4oZXx8KGU9d2EoTU8p'@; put 'KSkocnx8TU8pfX0pKCk7c3RhdGljIFx1MDI3NWRpcj0kcih7dHlwZTpNTyxmZWF0dXJlczpbRm9dfSl9Y29uc3QgbE90PVsiaW5zdGFuY2UiLCJ0ZCIsInJvdyIsImNvbCIsInByb3AiLCJ2YWx1ZSIsImNlbGxQcm9wZXJ0aWVzIl07ZnVuY3Rpb24gUERlKG4pe3JldHVybiBuPy5SRU5ERVJF'@; put 'Ul9NQVJLRVI9PT1UVC5SRU5ERVJFUl9NQVJLRVJ9ZnVuY3Rpb24gSERlKG4pe3JldHVybiBuPy5SRU5ERVJFUl9NQVJLRVI9PT14VC5SRU5ERVJFUl9NQVJLRVJ9bGV0IFZEZT0oKCk9PntjbGFzcyBue2FwcFJlZjtlbnZpcm9ubWVudEluamVjdG9yO190ZENvbXBvbmVudFJlZnM9bmV3IFdl'@; put 'YWtNYXA7X3RkRW1iZWRkZWRWaWV3cz1uZXcgV2Vha01hcDtfaW5zdGFuY2VDb21wb25lbnRSZWZzPW5ldyBXZWFrTWFwO19pbnN0YW5jZUVtYmVkZGVkVmlld3M9bmV3IFdlYWtNYXA7X2hvb2tlZEluc3RhbmNlcz1uZXcgV2Vha1NldDtjb25zdHJ1Y3Rvcih0LHIpe3RoaXMuYXBwUmVmPXQs'@; put 'dGhpcy5lbnZpcm9ubWVudEluamVjdG9yPXJ9Y3JlYXRlUmVuZGVyZXJGcm9tQ29tcG9uZW50KHQscj17fSxpPSExKXtsZXQgbz0hMTtyZXR1cm4oYSxsLHUsZyxFLE8sWik9Pntjb25zdCBlZT17dmFsdWU6TyxpbnN0YW5jZTphLHRkOmwscm93OnUsY29sOmcscHJvcDpFLGNlbGxQcm9wZXJ0'@; put 'aWVzOlp9O2lmKFoucmVuZGVyZXJQcm9wcz1yLE1ULmNhbGwodGhpcyxhLGwsdSxnLEUsTyxaKSx0aGlzLnJlZ2lzdGVyU3dlZXBIb29rKGEpLGZ1bmN0aW9uIGNPdChuKXtyZXR1cm4hIW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLmNyZWF0ZUVtYmVkZGVkVmlld30odCkpe3RoaXMucmVwbGFj'@; put 'ZUNlbGxDb250ZW50KGEsbCk7Y29uc3QgdmU9dGhpcy5hdHRhY2hUZW1wbGF0ZVRvRWxlbWVudCh0LGwsZWUpO3RoaXMudHJhY2tFbWJlZGRlZFZpZXcoYSxsLHZlKX1lbHNlIFBEZSh0KT90aGlzLnJlbmRlckNvbXBvbmVudChsLHQsZWUpOmNvbnNvbGUud2FybigiVGhlIHByb3ZpZGVkIHJl'@; put 'bmRlcmVyIGNvbXBvbmVudCB3YXMgbm90IHJlY29nbml6ZWQgYXMgYSB2YWxpZCBjdXN0b20gcmVuZGVyZXIuIEl0IG11c3QgZWl0aGVyIGV4dGVuZCBIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQgb3IgYmUgYSB2YWxpZCBUZW1wbGF0ZVJlZi4gUGxlYXNlIGVuc3VyZSB0aGF0IHlvdXIgY3Vz'@; put 'dG9tIHJlbmRlcmVyIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSBhbmQgaW1wb3J0ZWQgZnJvbSB0aGUgcHJvcGVyIHNvdXJjZS4iKTtyZXR1cm4gaSYmIW8mJlBEZSh0KSYmKEtwLnJlbmRlcmVycy5yZWdpc3RlclJlbmRlcmVyKHQubmFtZSx0KSxvPSEwKSxsfX1jcmVhdGVSZW5kZXJlcldp'@; put 'dGhGYWN0b3J5KHQscj17fSxpPSExKXtsZXQgbz0hMTtyZXR1cm4gRERlKCh7aW5zdGFuY2U6YSx0ZDpsLHJvdzp1LGNvbHVtbjpnLHByb3A6RSx2YWx1ZTpPLGNlbGxQcm9wZXJ0aWVzOlp9KT0+e2NvbnN0IGVlPXt2YWx1ZTpPLGluc3RhbmNlOmEsdGQ6bCxyb3c6dSxjb2w6Zyxwcm9wOkUs'@; put 'Y2VsbFByb3BlcnRpZXM6Wn07Wi5yZW5kZXJlclByb3BzPXIsTVQuY2FsbCh0aGlzLGEsbCx1LGcsRSxPLFopLHRoaXMucmVnaXN0ZXJTd2VlcEhvb2soYSksSERlKHQpP3RoaXMucmVuZGVyQ29tcG9uZW50KGwsdCxlZSk6Y29uc29sZS53YXJuKCJUaGUgcHJvdmlkZWQgcmVuZGVyZXIgY29t'@; put 'cG9uZW50IHdhcyBub3QgcmVjb2duaXplZCBhcyBhIHZhbGlkIGN1c3RvbSByZW5kZXJlci4gSXQgbXVzdCBlaXRoZXIgZXh0ZW5kIEhvdENlbGxSZW5kZXJlckFkdmFuY2VkQ29tcG9uZW50LiBQbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBjdXN0b20gcmVuZGVyZXIgaXMgaW1wbGVtZW50ZWQg'@; put 'Y29ycmVjdGx5IGFuZCBpbXBvcnRlZCBmcm9tIHRoZSBwcm9wZXIgc291cmNlLiIpLGkmJiFvJiZIRGUodCkmJihDMCh0Lm5hbWUsdCksbz0hMCl9KX1jbGVhbnVwQ29udGFpbmVyKHQscil7Y29uc3QgaT1yP3RoaXMuX2luc3RhbmNlQ29tcG9uZW50UmVmcy5nZXQocik6dm9pZCAwLG89cj90'@; put 'aGlzLl9pbnN0YW5jZUVtYmVkZGVkVmlld3MuZ2V0KHIpOnZvaWQgMDt0LnF1ZXJ5U2VsZWN0b3JBbGwoInRkIikuZm9yRWFjaChhPT57Y29uc3QgbD10aGlzLl90ZENvbXBvbmVudFJlZnMuZ2V0KGEpO2wmJih0aGlzLmRlc3Ryb3lDb21wb25lbnQobCksdGhpcy5fdGRDb21wb25lbnRSZWZz'@; put 'LmRlbGV0ZShhKSxpPy5kZWxldGUobCkpO2NvbnN0IHU9dGhpcy5fdGRFbWJlZGRlZFZpZXdzLmdldChhKTt1JiYodGhpcy5kZXN0cm95RW1iZWRkZWRWaWV3KHUpLHRoaXMuX3RkRW1iZWRkZWRWaWV3cy5kZWxldGUoYSksbz8uZGVsZXRlKHUpKX0pLGk/LmZvckVhY2goYT0+dGhpcy5kZXN0'@; put 'cm95Q29tcG9uZW50KGEpKSxvPy5mb3JFYWNoKGE9PnRoaXMuZGVzdHJveUVtYmVkZGVkVmlldyhhKSksciYmKHRoaXMuX2luc3RhbmNlQ29tcG9uZW50UmVmcy5kZWxldGUociksdGhpcy5faW5zdGFuY2VFbWJlZGRlZFZpZXdzLmRlbGV0ZShyKSl9cmVnaXN0ZXJTd2VlcEhvb2sodCl7dGhp'@; put 'cy5faG9va2VkSW5zdGFuY2VzLmhhcyh0KXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQ/LmFkZEhvb2t8fCh0aGlzLl9ob29rZWRJbnN0YW5jZXMuYWRkKHQpLHQuYWRkSG9vaygiYWZ0ZXJWaWV3UmVuZGVyIiwoKT0+dGhpcy5zd2VlcERldGFjaGVkVmlld3ModCkpKX1zd2VlcERldGFjaGVkVmll'@; put 'd3ModCl7Y29uc3Qgcj10aGlzLl9pbnN0YW5jZUNvbXBvbmVudFJlZnMuZ2V0KHQpO3I/LmZvckVhY2gobz0+e3RoaXMuaXNWaWV3Q29ubmVjdGVkKG8uaG9zdFZpZXcpfHwodGhpcy5kZXN0cm95Q29tcG9uZW50KG8pLHIuZGVsZXRlKG8pKX0pO2NvbnN0IGk9dGhpcy5faW5zdGFuY2VFbWJl'@; put 'ZGRlZFZpZXdzLmdldCh0KTtpPy5mb3JFYWNoKG89Pnt0aGlzLmlzVmlld0Nvbm5lY3RlZChvKXx8KHRoaXMuZGVzdHJveUVtYmVkZGVkVmlldyhvKSxpLmRlbGV0ZShvKSl9KX1pc1ZpZXdDb25uZWN0ZWQodCl7cmV0dXJuIHQucm9vdE5vZGVzLnNvbWUocj0+ISFyPy5pc0Nvbm5lY3RlZCl9'@; put 'cmVwbGFjZUNlbGxDb250ZW50KHQscil7Y29uc3QgaT10aGlzLl90ZENvbXBvbmVudFJlZnMuZ2V0KHIpO2kmJih0aGlzLmRlc3Ryb3lDb21wb25lbnQoaSksdGhpcy5fdGRDb21wb25lbnRSZWZzLmRlbGV0ZShyKSx0aGlzLl9pbnN0YW5jZUNvbXBvbmVudFJlZnMuZ2V0KHQpPy5kZWxldGUo'@; put 'aSkpO2NvbnN0IG89dGhpcy5fdGRFbWJlZGRlZFZpZXdzLmdldChyKTtvJiYodGhpcy5kZXN0cm95RW1iZWRkZWRWaWV3KG8pLHRoaXMuX3RkRW1iZWRkZWRWaWV3cy5kZWxldGUociksdGhpcy5faW5zdGFuY2VFbWJlZGRlZFZpZXdzLmdldCh0KT8uZGVsZXRlKG8pKSxyLmlubmVySFRNTD0i'@; put 'In10cmFja0NvbXBvbmVudFJlZih0LHIsaSl7dGhpcy5fdGRDb21wb25lbnRSZWZzLnNldChyLGkpLHRoaXMucmVnaXN0cnlGb3IodGhpcy5faW5zdGFuY2VDb21wb25lbnRSZWZzLHQpLmFkZChpKX10cmFja0VtYmVkZGVkVmlldyh0LHIsaSl7dGhpcy5fdGRFbWJlZGRlZFZpZXdzLnNldChy'@; put 'LGkpLHRoaXMucmVnaXN0cnlGb3IodGhpcy5faW5zdGFuY2VFbWJlZGRlZFZpZXdzLHQpLmFkZChpKX1yZWdpc3RyeUZvcih0LHIpe2xldCBpPXQuZ2V0KHIpO3JldHVybiBpfHwoaT1uZXcgU2V0LHQuc2V0KHIsaSkpLGl9YXR0YWNoVGVtcGxhdGVUb0VsZW1lbnQodCxyLGkpe2NvbnN0IG89'@; put 'dC5jcmVhdGVFbWJlZGRlZFZpZXcoeyRpbXBsaWNpdDppLnZhbHVlLC4uLml9KTtyZXR1cm4gby5kZXRlY3RDaGFuZ2VzKCksby5yb290Tm9kZXMuZm9yRWFjaChhPT57ci5hcHBlbmRDaGlsZChhKX0pLG99Y3JlYXRlQ29tcG9uZW50KHQscil7Y29uc3QgaT1mSSh0LHtlbnZpcm9ubWVudElu'@; put 'amVjdG9yOnRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcn0pO3JldHVybiB0aGlzLmFwcGx5SW5wdXRzKGksciksaS5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCksdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhpLmhvc3RWaWV3KSxpfXJlbmRlckNvbXBvbmVudCh0LHIsaSl7Y29uc3Qg'@; put 'bz10aGlzLl90ZENvbXBvbmVudFJlZnMuZ2V0KHQpO2lmKG8mJm8uY29tcG9uZW50VHlwZT09PXImJnRoaXMuaXNWaWV3Q29ubmVjdGVkKG8uaG9zdFZpZXcpKXJldHVybiB0aGlzLmFwcGx5SW5wdXRzKG8saSksdm9pZCBvLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTt0aGlz'@; put 'LnJlcGxhY2VDZWxsQ29udGVudChpLmluc3RhbmNlLHQpO2NvbnN0IGE9dGhpcy5jcmVhdGVDb21wb25lbnQocixpKTt0aGlzLmF0dGFjaENvbXBvbmVudFRvRWxlbWVudChhLHQpLHRoaXMudHJhY2tDb21wb25lbnRSZWYoaS5pbnN0YW5jZSx0LGEpfWFwcGx5SW5wdXRzKHQscil7bE90LmZv'@; put 'ckVhY2goaT0+e3Quc2V0SW5wdXQoaSxyW2ldKX0pfWF0dGFjaENvbXBvbmVudFRvRWxlbWVudCh0LHIpe3QuaG9zdFZpZXcucm9vdE5vZGVzLmZvckVhY2goaT0+e3IuYXBwZW5kQ2hpbGQoaSl9KX1kZXN0cm95Q29tcG9uZW50KHQpe2NvbnN0IHI9dC5ob3N0VmlldztyLmRlc3Ryb3llZHx8'@; put 'KHRoaXMuYXBwUmVmLmRldGFjaFZpZXcociksdC5kZXN0cm95KCkpfWRlc3Ryb3lFbWJlZGRlZFZpZXcodCl7dC5kZXN0cm95ZWR8fHQuZGVzdHJveSgpfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihXZyksb3IobmwpKX07c3RhdGljIFx1MDI3NXBy'@; put 'b3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKTtjb25zdCB1T3Q9bmV3IFNldChLcC5ob29rcy5nZXRSZWdpc3RlcmVkKCkpLEJEZT1TeW1ib2woImhvdFpvbmVXcmFwcGVkIik7bGV0IGpEZT0oKCk9PntjbGFzcyBue2R5'@; put 'bmFtaWNDb21wb25lbnRTZXJ2aWNlO2Vudmlyb25tZW50SW5qZWN0b3I7bmdab25lO2NvbnN0cnVjdG9yKHQscixpKXt0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlPXQsdGhpcy5lbnZpcm9ubWVudEluamVjdG9yPXIsdGhpcy5uZ1pvbmU9aX1hcHBseUN1c3RvbVNldHRpbmdzKHQscil7'@; put 'Y29uc3QgaT17Li4udH07cmV0dXJuIEFycmF5LmlzQXJyYXkoaS5jb2x1bW5zKSYmKGkuY29sdW1ucz1pLmNvbHVtbnMubWFwKG89Pih7Li4ub30pKSksdGhpcy51cGRhdGVDb2x1bW5SZW5kZXJlckZvckdpdmVuQ3VzdG9tUmVuZGVyZXIoaSksdGhpcy51cGRhdGVDb2x1bW5FZGl0b3JGb3JH'@; put 'aXZlbkN1c3RvbUVkaXRvcihpLHIpLHRoaXMudXBkYXRlQ29sdW1uVmFsaWRhdG9yRm9yR2l2ZW5DdXN0b21WYWxpZGF0b3IoaSksdGhpcy53cmFwSG9va3NJbk5nWm9uZShpKSxpfXdyYXBIb29rc0luTmdab25lKHQpe2NvbnN0IHI9dGhpcy5uZ1pvbmU7T2JqZWN0LmtleXModCkuZm9yRWFj'@; put 'aChpPT57aWYoIXVPdC5oYXMoaSkpcmV0dXJuO2NvbnN0IG89dFtpXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbyYmIW9bQkRlXSl7Y29uc3QgYT1mdW5jdGlvbiguLi5sKXtyZXR1cm4gci5ydW4oKCk9Pm8uYXBwbHkodGhpcyxsKSl9O2FbQkRlXT0hMCx0W2ldPWF9fSl9dXBkYXRlQ29sdW1u'@; put 'UmVuZGVyZXJGb3JHaXZlbkN1c3RvbVJlbmRlcmVyKHQpe0FycmF5LmlzQXJyYXkodD8uY29sdW1ucykmJnQ/LmNvbHVtbnM/LmZpbHRlcihyPT50aGlzLmlzQ3VzdG9tUmVuZGVyZXIoci5yZW5kZXJlcikpPy5mb3JFYWNoKHI9Pntjb25zdCBpPXIucmVuZGVyZXIsbz1yLnJlbmRlcmVyUHJv'@; put 'cHM/P3t9O3RoaXMuaXNBZHZhbmNlZFJlbmRlcmVyQ29tcG9uZW50UmVmVHlwZShpKT9yLnJlbmRlcmVyPXRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlUmVuZGVyZXJXaXRoRmFjdG9yeShpLG8pOih0aGlzLmlzUmVuZGVyZXJDb21wb25lbnRSZWZUeXBlKGkpfHx0aGlzLmlz'@; put 'VGVtcGxhdGVSZWYoaSkpJiYoci5yZW5kZXJlcj10aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZVJlbmRlcmVyRnJvbUNvbXBvbmVudChpLG8pKX0pfXVwZGF0ZUNvbHVtbkVkaXRvckZvckdpdmVuQ3VzdG9tRWRpdG9yKHQscil7QXJyYXkuaXNBcnJheSh0Py5jb2x1bW5zKSYm'@; put 'dC5jb2x1bW5zLmZvckVhY2goKGksbyk9Pntjb25zdCBhPXRoaXMuaXNBZHZhbmNlZEVkaXRvckNvbXBvbmVudFJlZlR5cGUoaS5lZGl0b3IpLGw9dGhpcy5pc0VkaXRvckNvbXBvbmVudFJlZlR5cGUoaS5lZGl0b3IpO2lmKCFhJiYhbClyZXR1cm47Y29uc3QgdT1pLmVkaXRvcixFPWksTz10'@; put 'aGlzLnJldXNhYmxlRWRpdG9yUmVmKHI/LltvXSxpLHUpPz9mSSh1LHtlbnZpcm9ubWVudEluamVjdG9yOnRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcn0pO0UuX2VkaXRvckNvbXBvbmVudFJlZmVyZW5jZT1PLGE/aS5lZGl0b3I9KG49PklEZSh7cG9zaXRpb246bi5pbnN0YW5jZS5wb3NpdGlv'@; put 'bixzaG9ydGN1dHM6bi5pbnN0YW5jZS5zaG9ydGN1dHMsY29uZmlnOm4uaW5zdGFuY2UuY29uZmlnLGluaXQoZSl7ZS5fY29tcG9uZW50UmVmPW4sZS5fZWRpdG9yUGxhY2VIb2xkZXJSZWY9dm9pZCAwLGUuX2ZpbmlzaEVkaXRTdWJzY3JpcHRpb249dm9pZCAwLGUuX2NhbmNlbEVkaXRTdWJz'@; put 'Y3JpcHRpb249dm9pZCAwLGZ1bmN0aW9uIGlPdChuLGUpe2UmJihuLl9lZGl0b3JQbGFjZUhvbGRlclJlZj1mSShMRGUse2Vudmlyb25tZW50SW5qZWN0b3I6ZX0pKX0oZSxlLmhvdC5fYW5ndWxhckVudmlyb25tZW50SW5qZWN0b3IpLGUuaW5wdXQ9ZS5fZWRpdG9yUGxhY2VIb2xkZXJSZWY/'@; put 'LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ/P2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuX2FmdGVyUm93UmVzaXplQ2FsbGJhY2s9KCk9PntlLmlzT3BlbmVkKCkmJkxkZShlKX0sZS5fYWZ0ZXJDb2x1bW5SZXNpemVDYWxsYmFjaz0oKT0+e2UuaXNPcGVuZWQoKSYmTGRlKGUpfSxl'@; put 'Ll9hZnRlckRlc3Ryb3lDYWxsYmFjaz0oKT0+e0ZEZShlKSxlLl9lZGl0b3JQbGFjZUhvbGRlclJlZiYmZS5fZWRpdG9yUGxhY2VIb2xkZXJSZWYuZGVzdHJveSgpfSxlLmhvdC5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsZS5fYWZ0ZXJSb3dSZXNpemVDYWxsYmFjayksZS5ob3QuYWRkSG9v'@; put 'aygiYWZ0ZXJDb2x1bW5SZXNpemUiLGUuX2FmdGVyQ29sdW1uUmVzaXplQ2FsbGJhY2spLGUuaG90LmFkZEhvb2soImFmdGVyRGVzdHJveSIsZS5fYWZ0ZXJEZXN0cm95Q2FsbGJhY2spfSxhZnRlckluaXQ6ZT0+ZS5fY29tcG9uZW50UmVmLmluc3RhbmNlLmFmdGVySW5pdD8uKGUpLGJlZm9y'@; put 'ZU9wZW46KGUsdCk9PntGRGUoZSksTGRlKGUpLGUuX2ZpbmlzaEVkaXRTdWJzY3JpcHRpb249ZS5fY29tcG9uZW50UmVmLmluc3RhbmNlLmZpbmlzaEVkaXQucGlwZShNcCgxKSkuc3Vic2NyaWJlKCgpPT57ZS5maW5pc2hFZGl0aW5nKCl9KSxlLl9jYW5jZWxFZGl0U3Vic2NyaXB0aW9uPWUu'@; put 'X2NvbXBvbmVudFJlZi5pbnN0YW5jZS5jYW5jZWxFZGl0LnBpcGUoTXAoMSkpLnN1YnNjcmliZSgoKT0+e2UuY2FuY2VsQ2hhbmdlcygpfSksZS5fY29tcG9uZW50UmVmLmluc3RhbmNlLmJlZm9yZU9wZW4/LihlLHQpfSxhZnRlck9wZW46KGUsdCk9PntlLl9jb21wb25lbnRSZWYuaW5zdGFu'@; put 'Y2UuYWZ0ZXJPcGVuPy4oZSx0KX0sb25Gb2N1czplPT5lLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uub25Gb2N1cz8uKGUpLGFmdGVyQ2xvc2U6ZT0+eyhmdW5jdGlvbiBvT3Qobil7bi5fZWRpdG9yUGxhY2VIb2xkZXJSZWYmJihuLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgidG9w'@; put 'Iix2b2lkIDApLG4uX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJsZWZ0Iix2b2lkIDApLG4uX2VkaXRvclBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJoZWlnaHQiLHZvaWQgMCksbi5fZWRpdG9yUGxhY2VIb2xkZXJSZWYuc2V0SW5wdXQoIndpZHRoIix2b2lkIDApLG4uX2VkaXRv'@; put 'clBsYWNlSG9sZGVyUmVmLnNldElucHV0KCJpc1Zpc2libGUiLCExKSxuLl9lZGl0b3JQbGFjZUhvbGRlclJlZi5zZXRJbnB1dCgiY29tcG9uZW50UmVmIix2b2lkIDApKX0pKGUpLGUuX2VkaXRvclBsYWNlSG9sZGVyUmVmPy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCksZS5f'@; put 'ZWRpdG9yUGxhY2VIb2xkZXJSZWY/Lmluc3RhbmNlLmRldGFjaEVkaXRvcigpLGUuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5hZnRlckNsb3NlPy4oZSl9LGdldFZhbHVlOmU9PmUuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5nZXRWYWx1ZSgpLHNldFZhbHVlOihlLHQpPT57ZS52YWx1ZT10LGUu'@; put 'X2NvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXRWYWx1ZSh0KSxlLl9jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfX0pKShPKTooRS5fZW52aXJvbm1lbnRJbmplY3Rvcj10aGlzLmVudmlyb25tZW50SW5qZWN0b3IsaS5lZGl0b3I9bk90KX0pfXJldXNhYmxl'@; put 'RWRpdG9yUmVmKHQscixpKXtjb25zdCBvPXQ/Ll9lZGl0b3JDb21wb25lbnRSZWZlcmVuY2U7cmV0dXJuIG8mJm8uY29tcG9uZW50VHlwZT09PWkmJnQ/LmRhdGE9PT1yLmRhdGE/bzp2b2lkIDB9dXBkYXRlQ29sdW1uVmFsaWRhdG9yRm9yR2l2ZW5DdXN0b21WYWxpZGF0b3IodCl7QXJyYXku'@; put 'aXNBcnJheSh0Py5jb2x1bW5zKSYmdD8uY29sdW1ucz8uZmlsdGVyKHI9PnRoaXMuaXNDdXN0b21WYWxpZGF0b3JGbihyLnZhbGlkYXRvcikpPy5mb3JFYWNoKHI9Pntjb25zdCBpPXIudmFsaWRhdG9yO3IudmFsaWRhdG9yPShvLGEpPT57YShpKG8pKX19KX1pc0N1c3RvbVZhbGlkYXRvckZu'@; put 'KHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYxPT09dC5sZW5ndGh9aXNFZGl0b3JDb21wb25lbnRSZWZUeXBlKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYhIXQ/Llx1MDI3NWNtcCYmdD8uRURJVE9SX01BUktFUj09PUVPLkVESVRPUl9NQVJLRVJ9aXNBZHZhbmNlZEVk'@; put 'aXRvckNvbXBvbmVudFJlZlR5cGUodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJiEhdD8uXHUwMjc1Y21wJiZ0Py5FRElUT1JfTUFSS0VSPT09TU8uRURJVE9SX01BUktFUn1pc1JlbmRlcmVyQ29tcG9uZW50UmVmVHlwZSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmISF0'@; put 'Py5cdTAyNzVjbXAmJnQ/LlJFTkRFUkVSX01BUktFUj09PVRULlJFTkRFUkVSX01BUktFUn1pc0FkdmFuY2VkUmVuZGVyZXJDb21wb25lbnRSZWZUeXBlKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYhIXQ/Llx1MDI3NWNtcCYmdD8uUkVOREVSRVJfTUFSS0VSPT09eFQuUkVOREVS'@; put 'RVJfTUFSS0VSfWlzVGVtcGxhdGVSZWYodCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNyZWF0ZUVtYmVkZGVkVmlld31pc0N1c3RvbVJlbmRlcmVyKHQpe3JldHVybiB0aGlzLmlzUmVuZGVyZXJDb21wb25lbnRSZWZUeXBlKHQpfHx0aGlzLmlzVGVtcGxhdGVSZWYodCl8fHRo'@; put 'aXMuaXNBZHZhbmNlZFJlbmRlcmVyQ29tcG9uZW50UmVmVHlwZSh0KX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcocnx8bikob3IoVkRlKSxvcihubCksb3IoZ2EpKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhY30pfXJl'@; put 'dHVybiBufSkoKTtjb25zdCBoT3Q9bmV3IEVyKCJIT1RfR0xPQkFMX0NPTkZJRyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pih7fSl9KTtsZXQgZk90PSgoKT0+e2NsYXNzIG57ZGVmYXVsdENvbmZpZz17fTtjb25maWdTdWJqZWN0PW5ldyAkaSh0aGlzLmRlZmF1bHRDb25maWcp'@; put 'O2dldCBjb25maWckKCl7cmV0dXJuIHRoaXMuY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKX1jb25zdHJ1Y3Rvcih0KXt0aGlzLmRlZmF1bHRDb25maWc9ey4uLnRoaXMuZGVmYXVsdENvbmZpZywuLi50fSx0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh0aGlzLmRlZmF1bHRDb25maWcpfXNl'@; put 'dENvbmZpZyh0KXt0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh7Li4udGhpcy5kZWZhdWx0Q29uZmlnLC4uLnR9KX1nZXRDb25maWcoKXtyZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LnZhbHVlfXJlc2V0Q29uZmlnKCl7dGhpcy5jb25maWdTdWJqZWN0Lm5leHQoey4uLnRoaXMuZGVmYXVsdENv'@; put 'bmZpZ30pfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyhyfHxuKShvcihoT3QpKX07c3RhdGljIFx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfXJldHVybiBufSkoKSxMNz0oKCk9PntjbGFzcyBue19o'@; put 'b3RTZXR0aW5nc1Jlc29sdmVyO19ob3RDb25maWc7bmdab25lO2Vudmlyb25tZW50SW5qZWN0b3I7X2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlO2RhdGE9bnVsbDtzZXR0aW5ncz17fTtjb250YWluZXI7X19ob3RJbnN0YW5jZT1udWxsO19kZXN0cm95UmVmPXNuKE0yKTtjb25zdHJ1Y3Rvcih0'@; put 'LHIsaSxvLGEpe3RoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXI9dCx0aGlzLl9ob3RDb25maWc9cix0aGlzLm5nWm9uZT1pLHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcj1vLHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlPWF9Z2V0IGhvdEluc3RhbmNlKCl7cmV0dXJuIHRoaXMuX19ob3RJ'@; put 'bnN0YW5jZSYmdGhpcy5fX2hvdEluc3RhbmNlLmlzRGVzdHJveWVkPyhjb25zb2xlLndhcm4oIlRoZSBIYW5kc29udGFibGUgaW5zdGFuY2UgYm91bmQgdG8gdGhpcyBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBhbmQgY2Fubm90IGJlIHVzZWQgcHJvcGVybHkuIiksbnVsbCk6dGhpcy5fX2hv'@; put 'dEluc3RhbmNlfXNldCBob3RJbnN0YW5jZSh0KXt0aGlzLl9faG90SW5zdGFuY2U9dH1uZ0FmdGVyVmlld0luaXQoKXtsZXQgdD10aGlzLl9ob3RTZXR0aW5nc1Jlc29sdmVyLmFwcGx5Q3VzdG9tU2V0dGluZ3ModGhpcy5zZXR0aW5ncyk7Y29uc3Qgcj10aGlzLmdldE5lZ290aWF0ZWRTZXR0'@; put 'aW5ncyh0KTt0PXsuLi50LC4uLnIsLi4ubnVsbCE9dGhpcy5kYXRhP3tkYXRhOnRoaXMuZGF0YX06e319LHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5ob3RJbnN0YW5jZT1uZXcgS3AuQ29yZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LHQpLHRoaXMuaG90'@; put 'SW5zdGFuY2UuX2FuZ3VsYXJFbnZpcm9ubWVudEluamVjdG9yPXRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcix0aGlzLmhvdEluc3RhbmNlLmluaXQoKX0pLHRoaXMuX2hvdENvbmZpZy5jb25maWckLnBpcGUoZnVuY3Rpb24gWEx0KG4pe3JldHVybiBzdSgoZSx0KT0+bjw9dCl9KDEpLGZ1bmN0'@; put 'aW9uIHV4ZShuKXtufHwobj1zbihNMikpO2NvbnN0IGU9bmV3IGhvKHQ9PntpZighbi5kZXN0cm95ZWQpcmV0dXJuIG4ub25EZXN0cm95KHQubmV4dC5iaW5kKHQpKTt0Lm5leHQoKX0pO3JldHVybiB0PT50LnBpcGUodjAoZSkpfSh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKGk9Pntp'@; put 'Zih0aGlzLmhvdEluc3RhbmNlKXtjb25zdCBvPXRoaXMuZ2V0TmVnb3RpYXRlZFNldHRpbmdzKHRoaXMuc2V0dGluZ3MpO3RoaXMudXBkYXRlSG90VGFibGUobyl9fSl9bmdPbkNoYW5nZXModCl7aWYobnVsbCE9PXRoaXMuaG90SW5zdGFuY2Upe2lmKHQuc2V0dGluZ3MmJiF0LnNldHRpbmdz'@; put 'LmZpcnN0Q2hhbmdlKXtjb25zdCByPXRoaXMuX19ob3RJbnN0YW5jZT8uZ2V0U2V0dGluZ3MoKS5jb2x1bW5zLGk9QXJyYXkuaXNBcnJheShyKT9yOnZvaWQgMCxvPXRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIuYXBwbHlDdXN0b21TZXR0aW5ncyh0LnNldHRpbmdzLmN1cnJlbnRWYWx1ZSxp'@; put 'KTtpZih0aGlzLnVwZGF0ZUhvdFRhYmxlKG8pLGkmJkFycmF5LmlzQXJyYXkoby5jb2x1bW5zKSl7Y29uc3QgYT1uZXcgU2V0KG8uY29sdW1ucy5tYXAobD0+bC5fZWRpdG9yQ29tcG9uZW50UmVmZXJlbmNlKS5maWx0ZXIobD0+ISFsKSk7aS5mb3JFYWNoKGw9PntsLl9lZGl0b3JDb21wb25l'@; put 'bnRSZWZlcmVuY2UmJiFhLmhhcyhsLl9lZGl0b3JDb21wb25lbnRSZWZlcmVuY2UpJiZsLl9lZGl0b3JDb21wb25lbnRSZWZlcmVuY2UuZGVzdHJveSgpfSl9fXQuZGF0YSYmIXQuZGF0YS5maXJzdENoYW5nZSYmdGhpcy5ob3RJbnN0YW5jZT8udXBkYXRlRGF0YSh0LmRhdGEuY3VycmVudFZh'@; put 'bHVlKX19bmdPbkRlc3Ryb3koKXt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2lmKCF0aGlzLl9faG90SW5zdGFuY2V8fHRoaXMuX19ob3RJbnN0YW5jZS5pc0Rlc3Ryb3llZClyZXR1cm47dGhpcy5jb250YWluZXImJnRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNs'@; put 'ZWFudXBDb250YWluZXIodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCx0aGlzLl9faG90SW5zdGFuY2UpO2NvbnN0IHQ9dGhpcy5fX2hvdEluc3RhbmNlLmdldFNldHRpbmdzKCkuY29sdW1uczt0JiZBcnJheS5pc0FycmF5KHQpJiZ0LmZvckVhY2gocj0+e3IuX2VkaXRvckNvbXBvbmVu'@; put 'dFJlZmVyZW5jZSYmci5fZWRpdG9yQ29tcG9uZW50UmVmZXJlbmNlLmRlc3Ryb3koKX0pLHRoaXMuX19ob3RJbnN0YW5jZS5kZXN0cm95KCl9KX11cGRhdGVIb3RUYWJsZSh0KXtpZighdGhpcy5ob3RJbnN0YW5jZSlyZXR1cm47Y29uc3Qgcj1uZXcgU2V0KHRoaXMuaG90SW5zdGFuY2UuZ2V0'@; put 'U2V0dGluZ3MoKT8uX2luaXRPbmx5U2V0dGluZ3M/P1tdKSxpPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXIuaGFzKG8pfHwoaVtvXT10W29dKTt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2U/LnVwZGF0ZVNldHRpbmdzKGksITEp'@; put 'fSl9Z2V0TmVnb3RpYXRlZFNldHRpbmdzKHQpe2NvbnN0IHI9dGhpcy5faG90Q29uZmlnLmdldENvbmZpZygpLGk9e307aS5saWNlbnNlS2V5PXQubGljZW5zZUtleT8/ci5saWNlbnNlLGkubGFuZ3VhZ2U9dC5sYW5ndWFnZT8/ci5sYW5ndWFnZTtjb25zdCBvPXQudGhlbWU/P3IudGhlbWUs'@; put 'YT10LnRoZW1lTmFtZT8/ci50aGVtZU5hbWU7cmV0dXJuIHZvaWQgMCE9PW8/aS50aGVtZT1vOmEmJihpLnRoZW1lTmFtZT1hKSx0aGlzLl9faG90SW5zdGFuY2V8fChpLmxheW91dERpcmVjdGlvbj10LmxheW91dERpcmVjdGlvbj8/ci5sYXlvdXREaXJlY3Rpb24pLGl9c3RhdGljIFx1MDI3'@; put 'NWZhYz1mdW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pKHplKGpEZSksemUoZk90KSx6ZShnYSksemUobmwpLHplKFZEZSkpfTtzdGF0aWMgXHUwMjc1Y21wPVByKHt0eXBlOm4sc2VsZWN0b3JzOltbImhvdC10YWJsZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24ocixpKXtpZigxJnImJldvKHRP'@; put 'dCw1KSwyJnIpe2xldCBvO2NpKG89dWkoKSkmJihpLmNvbnRhaW5lcj1vLmZpcnN0KX19LGlucHV0czp7ZGF0YToiZGF0YSIsc2V0dGluZ3M6InNldHRpbmdzIn0sZmVhdHVyZXM6W2JvKFtqRGVdKSxpdV0sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbImNvbnRhaW5lciIsIiJdXSx0ZW1wbGF0'@; put 'ZTpmdW5jdGlvbihyLGkpezEmciYmRGooMCwiZGl2IixudWxsLDApfSxzdHlsZXM6WyI6aG9zdHtkaXNwbGF5OmJsb2NrfVxuIl0sZW5jYXBzdWxhdGlvbjoyfSl9cmV0dXJuIG59KSgpLEx3PSgoKT0+e2NsYXNzIG57c3RhdGljIHZlcnNpb249IjE4LjAuMCI7c3RhdGljIFx1MDI3NWZhYz1m'@; put 'dW5jdGlvbihyKXtyZXR1cm4gbmV3KHJ8fG4pfTtzdGF0aWMgXHUwMjc1bW9kPUdpKHt0eXBlOm59KTtzdGF0aWMgXHUwMjc1aW5qPW1pKHt9KX1yZXR1cm4gbn0pKCk7Y29uc3QgVURlPSJoYW5kc29udGFibGVFZGl0b3IiO2NsYXNzIE9kZSBleHRlbmRzIGRfe3N0YXRpYyBnZXQgRURJVE9S'@; put 'X1RZUEUoKXtyZXR1cm4iaGFuZHNvbnRhYmxlIn1vcGVuKCl7c3VwZXIub3BlbigpO2NvbnN0IGU9dGhpcy5odENvbnRhaW5lci5zdHlsZTt0aGlzLmh0RWRpdG9yJiYodGhpcy5odEVkaXRvci5yb290UG9ydGFsRWxlbWVudD1udWxsLHRoaXMuaHRFZGl0b3IuZGVzdHJveSgpLGUud2lkdGg9'@; put 'IiIsZS5oZWlnaHQ9IiIsZS5vdmVyZmxvdz0iIiksIm5vbmUiPT09ZS5kaXNwbGF5JiYoZS5kaXNwbGF5PSIiKSx0aGlzLmh0RWRpdG9yPW5ldyB0aGlzLmhvdC5jb25zdHJ1Y3Rvcih0aGlzLmh0Q29udGFpbmVyLHRoaXMuaHRPcHRpb25zKSx0aGlzLmh0RWRpdG9yLnJvb3RQb3J0YWxFbGVt'@; put 'ZW50PXRoaXMuaG90LnJvb3RQb3J0YWxFbGVtZW50LHRoaXMuaHRFZGl0b3IuaW5pdCgpLHRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGUuZGlzcGxheT0iIix0aGlzLmNlbGxQcm9wZXJ0aWVzLnN0cmljdD90aGlzLmh0RWRpdG9yLnNlbGVjdENlbGwoMCwwKTp0aGlzLmh0RWRpdG9y'@; put 'LmRlc2VsZWN0Q2VsbCgpLHZMKHRoaXMuVEVYVEFSRUEsMCx0aGlzLlRFWFRBUkVBLnZhbHVlLmxlbmd0aCksdGhpcy5odEVkaXRvci51cGRhdGVTZXR0aW5ncyh7d2lkdGg6dGhpcy5nZXRUYXJnZXREcm9wZG93bldpZHRoKCksaGVpZ2h0OnRoaXMuZ2V0VGFyZ2V0RHJvcGRvd25IZWlnaHQo'@; put 'KX0pLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSx0aGlzLmZsaXBEcm9wZG93blZlcnRpY2FsbHlJZk5lZWRlZCgpLHRoaXMuZmxpcERyb3Bkb3duSG9yaXpvbnRhbGx5SWZOZWVkZWQoKX1jbG9zZSgpe3RoaXMuaHRFZGl0b3ImJih0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLmRp'@; put 'c3BsYXk9Im5vbmUiKSx0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9yZUtleURvd24iKSxzdXBlci5jbG9zZSgpfXByZXBhcmUoZSx0LHIsaSxvLGEpe3N1cGVyLnByZXBhcmUoZSx0LHIsaSxvLGEpO2NvbnN0e2hvdDpsfT10aGlzLHU9dGhpcy5zZXRWYWx1ZS5iaW5kKHRoaXMpLGc9e3N0'@; put 'YXJ0Um93czowLHN0YXJ0Q29sczowLG1pblJvd3M6MCxtaW5Db2xzOjAsY2xhc3NOYW1lOiJsaXN0Ym94Iixjb3B5UGFzdGU6ITEsYXV0b0NvbHVtblNpemU6ITEsYXV0b1Jvd1NpemU6ITEscmVhZE9ubHk6ITAsZmlsbEhhbmRsZTohMSxhdXRvV3JhcENvbDohMSxhdXRvV3JhcFJvdzohMSxh'@; put 'cmlhVGFnczohMSx0aGVtZU5hbWU6dGhpcy5ob3QuZ2V0Q3VycmVudFRoZW1lTmFtZSgpLGFmdGVyT25DZWxsTW91c2VEb3duKEUsTyl7aWYoTy5yb3c8MHx8Ty5jb2w8MClyZXR1cm47Y29uc3QgWj10aGlzLmdldERhdGFBdENlbGwoTy5yb3csTy5jb2wpO3ZvaWQgMCE9PVomJnUoWiksbC5k'@; put 'ZXN0cm95RWRpdG9yKCl9LHByZXZlbnRXaGVlbDohMCxsYXlvdXREaXJlY3Rpb246dGhpcy5ob3QuaXNSdGwoKT8icnRsIjoibHRyIn07dGhpcy5jZWxsUHJvcGVydGllcy5oYW5kc29udGFibGUmJllkKGcsYS5oYW5kc29udGFibGUpLHRoaXMuaHRPcHRpb25zPWd9YmVnaW5FZGl0aW5nKGUs'@; put 'dCl7Y29uc3Qgcj10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm9uQmVnaW5FZGl0aW5nO3ImJiExPT09cigpfHxzdXBlci5iZWdpbkVkaXRpbmcoZSx0KX1jcmVhdGVFbGVtZW50cygpe3N1cGVyLmNyZWF0ZUVsZW1lbnRzKCk7Y29uc3QgZT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxl'@; put 'bWVudCgiRElWIik7ZS5jbGFzc05hbWU9ImhhbmRzb250YWJsZUVkaXRvciIsdGhpcy5URVhUQVJFQV9QQVJFTlQuYXBwZW5kQ2hpbGQoZSksdGhpcy5odENvbnRhaW5lcj1lLHRoaXMuYXNzaWduSG9va3MoKX1maW5pc2hFZGl0aW5nKGUsdCxyKXtpZih0aGlzLmh0RWRpdG9yJiZ0aGlzLmh0'@; put 'RWRpdG9yLmlzTGlzdGVuaW5nKCkmJnRoaXMuaG90Lmxpc3RlbigpLHRoaXMuaHRFZGl0b3ImJnRoaXMuaHRFZGl0b3IuZ2V0U2VsZWN0ZWRBY3RpdmUoKSl7Y29uc3QgaT10aGlzLmh0RWRpdG9yLmdldFZhbHVlKCk7dm9pZCAwIT09aSYmdGhpcy5zZXRWYWx1ZShpKX1zdXBlci5maW5pc2hF'@; put 'ZGl0aW5nKGUsdCxyKX1mbGlwRHJvcGRvd25WZXJ0aWNhbGx5SWZOZWVkZWQoKXtjb25zdHt2aWV3OmV9PXRoaXMuaG90LHQ9dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpO2lmKCF0KXJldHVybntpc0ZsaXBwZWQ6ITEsc3BhY2VBYm92ZTowLHNwYWNlQmVsb3c6MH07bGV0IHI9dC50b3A7aWYo'@; put 'ZS5pc1ZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3coKSl7Y29uc3QgbD1lLmdldFRhYmxlT2Zmc2V0KCkudG9wLXRoaXMuaG90LnJvb3RXaW5kb3cuc2Nyb2xsWTtyPU1hdGgubWF4KHIrbCwwKX1jb25zdCBpPXRoaXMuZ2V0RHJvcGRvd25IZWlnaHQoKSxvPWUuZ2V0V29ya3NwYWNlSGVp'@; put 'Z2h0KCktci10LmhlaWdodCxhPWk+byYmcj5vK3QuaGVpZ2h0O3JldHVybiBhP3RoaXMuZmxpcERyb3Bkb3duVmVydGljYWxseSgpOnRoaXMudW5mbGlwRHJvcGRvd25WZXJ0aWNhbGx5KCkse2lzRmxpcHBlZDphLHNwYWNlQWJvdmU6cixzcGFjZUJlbG93Om99fWZsaXBEcm9wZG93blZlcnRp'@; put 'Y2FsbHkoKXtjb25zdCBlPXRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGU7ZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUudG9wPS10aGlzLmdldERyb3Bkb3duSGVpZ2h0KCkrInB4Iix0aGlzLmlzRmxpcHBlZFZlcnRpY2FsbHk9ITB9dW5mbGlwRHJvcGRvd25WZXJ0aWNhbGx5KCl7Y29u'@; put 'c3QgZT10aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlO2UucG9zaXRpb249ImFic29sdXRlIixlLnRvcD0iIix0aGlzLmlzRmxpcHBlZFZlcnRpY2FsbHk9ITF9ZmxpcERyb3Bkb3duSG9yaXpvbnRhbGx5SWZOZWVkZWQoKXtjb25zdHt2aWV3OmV9PXRoaXMuaG90LHQ9dGhpcy5nZXRF'@; put 'ZGl0ZWRDZWxsUmVjdCgpO2lmKCF0KXJldHVybntpc0ZsaXBwZWQ6ITEsc3BhY2VJbmxpbmVTdGFydDowLHNwYWNlSW5saW5lRW5kOjB9O2xldCByPXQuc3RhcnQrdC53aWR0aCxpPWUuZ2V0V29ya3NwYWNlV2lkdGgoKTtpZihlLmlzSG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCkp'@; put 'e2NvbnN0IHU9ZS5nZXRUYWJsZU9mZnNldCgpLmxlZnQtdGhpcy5ob3Qucm9vdFdpbmRvdy5zY3JvbGxYO3I9TWF0aC5tYXgocit1LDApLGk9dGhpcy5ob3Qucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aH1jb25zdCBvPXRoaXMuZ2V0RHJvcGRvd25XaWR0aCgpLGE9'@; put 'aS1yK3Qud2lkdGgsbD1vPmEmJnI+YTtyZXR1cm4gbD90aGlzLmZsaXBEcm9wZG93bkhvcml6b250YWxseSgpOnRoaXMudW5mbGlwRHJvcGRvd25Ib3Jpem9udGFsbHkoKSx7aXNGbGlwcGVkOmwsc3BhY2VJbmxpbmVTdGFydDpyLHNwYWNlSW5saW5lRW5kOmF9fWZsaXBEcm9wZG93bkhvcml6'@; put 'b250YWxseSgpe2NvbnN0IGU9dGhpcy5odEVkaXRvci5yb290RWxlbWVudC5zdHlsZSx7d2lkdGg6dH09dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpPz97d2lkdGg6MH07ZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGVbdGhpcy5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il09LSh0aGlzLmdldERy'@; put 'b3Bkb3duV2lkdGgoKS10KSsicHgiLHRoaXMuaXNGbGlwcGVkSG9yaXpvbnRhbGx5PSEwfXVuZmxpcERyb3Bkb3duSG9yaXpvbnRhbGx5KCl7Y29uc3QgZT10aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlO2UucG9zaXRpb249ImFic29sdXRlIixlW3RoaXMuaG90LmlzUnRsKCk/InJp'@; put 'Z2h0IjoibGVmdCJdPSIiLHRoaXMuaXNGbGlwcGVkSG9yaXpvbnRhbGx5PSExfWdldERyb3Bkb3duSGVpZ2h0KCl7cmV0dXJuIHRoaXMuaHRFZGl0b3IuZ2V0VGFibGVIZWlnaHQoKX1nZXREcm9wZG93bldpZHRoKCl7cmV0dXJuIHRoaXMuaHRFZGl0b3IuZ2V0VGFibGVXaWR0aCgpfWdldFRh'@; put 'cmdldERyb3Bkb3duV2lkdGgoKXtyZXR1cm4gdGhpcy5odEVkaXRvci52aWV3LmdldFRhYmxlV2lkdGgoKX1nZXRUYXJnZXREcm9wZG93bkhlaWdodCgpe3JldHVybiB0aGlzLmh0RWRpdG9yLnZpZXcuZ2V0VGFibGVIZWlnaHQoKSsxfWFzc2lnbkhvb2tzKCl7dGhpcy5ob3QuYWRkSG9vaygi'@; put 'YWZ0ZXJEZXN0cm95IiwoKT0+e3RoaXMuaHRFZGl0b3ImJih0aGlzLmh0RWRpdG9yLnJvb3RQb3J0YWxFbGVtZW50PW51bGwsdGhpcy5odEVkaXRvci5kZXN0cm95KCkpfSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJTZXRUaGVtZSIsKGUsdCk9Pnt0fHx0aGlzLmNsb3NlKCl9KX1yZWdpc3Rl'@; put 'clNob3J0Y3V0cygpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIik7c3VwZXIucmVnaXN0ZXJTaG9ydGN1dHMoKTtjb25zdCBpPShvLGEpPT57Y29uc3QgbD10aGlzLmh0RWRpdG9yO2lmKHZvaWQgMCE9PW8mJihvPDB8fHRoaXMuaXNG'@; put 'bGlwcGVkVmVydGljYWxseSYmbz5sLmNvdW50Um93cygpLTE/bC5kZXNlbGVjdENlbGwoKTpsLnNlbGVjdENlbGwobywwKSxsLmdldERhdGEoKS5sZW5ndGgpKXJldHVybiBhLnByZXZlbnREZWZhdWx0KCksRjMoYSksdGhpcy5ob3QubGlzdGVuKCksdGhpcy5URVhUQVJFQS5mb2N1cygpLCEx'@; put 'fTt0LmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpvPT57Y29uc3QgYT10aGlzLmh0RWRpdG9yO2xldCBsLHU7aWYoIWEuZ2V0U2VsZWN0ZWRBY3RpdmUoKSYmdGhpcy5pc0ZsaXBwZWRWZXJ0aWNhbGx5KWw9YS5jb3VudFJvd3MoKS0xO2Vsc2UgaWYoYS5nZXRT'@; put 'ZWxlY3RlZEFjdGl2ZSgpKXtjb25zdCBnPWEuZ2V0U2VsZWN0ZWRBY3RpdmUoKTt0aGlzLmlzRmxpcHBlZFZlcnRpY2FsbHk/KHU9Z1swXSxsPU1hdGgubWF4KDAsdS0xKSk6KHU9Z1swXSxsPXUtMSl9cmV0dXJuIGkobCxvKX0scHJldmVudERlZmF1bHQ6ITF9LHtrZXlzOltbIkFycm93RG93'@; put 'biJdXSxjYWxsYmFjazpvPT57Y29uc3QgYT10aGlzLmh0RWRpdG9yO2xldCBsLHU7aWYoYS5nZXRTZWxlY3RlZEFjdGl2ZSgpfHx0aGlzLmlzRmxpcHBlZFZlcnRpY2FsbHkpe2lmKGEuZ2V0U2VsZWN0ZWRBY3RpdmUoKSl7Y29uc3QgZz1hLmdldFNlbGVjdGVkQWN0aXZlKCk7aWYodGhpcy5p'@; put 'c0ZsaXBwZWRWZXJ0aWNhbGx5KWw9Z1swXSsxO2Vsc2UgaWYoIXRoaXMuaXNGbGlwcGVkVmVydGljYWxseSl7Y29uc3QgRT1hLmNvdW50Um93cygpLTE7dT1nWzBdLGw9TWF0aC5taW4oRSx1KzEpfX19ZWxzZSBsPTA7cmV0dXJuIGkobCxvKX0scHJldmVudERlZmF1bHQ6ITF9XSx7Z3JvdXA6'@; put 'VURlLHJlbGF0aXZlVG9Hcm91cDpSNyxwb3NpdGlvbjoiYmVmb3JlIn0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXtzdXBlci51bnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91'@; put 'cChVRGUpfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLHRoaXMuaXNGbGlwcGVkVmVydGljYWxseT0hMSx0aGlzLmlzRmxpcHBlZEhvcml6b250YWxseT0hMX19ZnVuY3Rpb24gekRlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUg'@; put 'dGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBXRGUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQo'@; put 'bil9ZnVuY3Rpb24gTmRlKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIG1PdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sV0RlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIFlEZShuLGUsdCl7ekRlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBaRGUobixlLHQpe3JldHVy'@; put 'biBmdW5jdGlvbiB2T3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFdEZShuLGUsInNldCIpLHQpLHR9'@; put 'ZnVuY3Rpb24gQVQobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gR0RlKG4sZSl7ekRlKG4sZSksZS5hZGQobil9dmFyIHBaPW5ldyBXZWFrTWFw'@; put 'LEZkZT1uZXcgV2Vha01hcCxQZGU9bmV3IFdlYWtTZXQsVE89bmV3IFdlYWtTZXQ7Y2xhc3MgSGRlIGV4dGVuZHMgT2Rle3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4iYXV0b2NvbXBsZXRlIn1nZXRWYWx1ZSgpe2NvbnN0IGU9dGhpcy5yYXdDaG9pY2VzLmZpbmQodD0+e2NvbnN0'@; put 'IHI9dGhpcy5zdHJpcFZhbHVlSWZOZWVkZWQodCk7cmV0dXJuKEFUKHRoaXMsVE8sZ1opLmNhbGwodGhpcyxyKT9yLnZhbHVlOnIpPT09dGhpcy5URVhUQVJFQS52YWx1ZX0pO3JldHVybiBabyhlKT9lOnRoaXMuVEVYVEFSRUEudmFsdWV9Y3JlYXRlRWxlbWVudHMoKXtzdXBlci5jcmVhdGVF'@; put 'bGVtZW50cygpLFlyKHRoaXMuaHRDb250YWluZXIsImF1dG9jb21wbGV0ZUVkaXRvciIpLFlyKHRoaXMuaHRDb250YWluZXIsLTE9PT10aGlzLmhvdC5yb290V2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5pbmRleE9mKCJNYWMiKT8iIjoiaHRNYWNTY3JvbGwiKSx0aGlzLmhvdC5nZXRTZXR0'@; put 'aW5ncygpLmFyaWFUYWdzJiZLbyh0aGlzLlRFWFRBUkVBLFtbInR5cGUiLCJ0ZXh0Il0sWyJyb2xlIiwiY29tYm9ib3giXSxweGUoImxpc3Rib3giKSxbImFyaWEtYXV0b2NvbXBsZXRlIiwibGlzdCJdXSl9cHJlcGFyZShlLHQscixpLG8sYSl7c3VwZXIucHJlcGFyZShlLHQscixpLG8sYSks'@; put 'dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmS28odGhpcy5URVhUQVJFQSxbYW0oImZhbHNlIiksSU10KGAke05kZSh0aGlzLHBaKX0tbGlzdGJveC0ke2V9LSR7dH1gKV0pLHRoaXMuaHRPcHRpb25zPXsuLi50aGlzLmh0T3B0aW9ucyx2YWx1ZUdldHRlcjpsPT5BVCh0aGlzLFRP'@; put 'LGdaKS5jYWxsKHRoaXMsbCk/bC52YWx1ZTpsfX1vcGVuKCl7c3VwZXIub3BlbigpO2NvbnN0IGU9dGhpcy5jZWxsUHJvcGVydGllcy50cmltRHJvcGRvd24sdD12b2lkIDA9PT1lfHxlLHI9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyxpPUFycmF5LmlzQXJyYXkodGhpcy5jZWxs'@; put 'UHJvcGVydGllcy5zb3VyY2UpP3RoaXMuY2VsbFByb3BlcnRpZXMuc291cmNlOm51bGwsbz1pPy5sZW5ndGgse3JvdzphLGNvbDpsfT10aGlzO2lmKHRoaXMuc2hvd0VkaXRhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXMoKSx0aGlzLmFkZEhvb2soImJlZm9yZUtleURvd24iLHU9PnRoaXMub25C'@; put 'ZWZvcmVLZXlEb3duKHUpKSx0aGlzLmh0RWRpdG9yLmFkZEhvb2soImFmdGVyU2Nyb2xsIixOZGUodGhpcyxGZGUpKSx0aGlzLmh0RWRpdG9yLnVwZGF0ZVNldHRpbmdzKHtjb2xXaWR0aHM6dD9bWmQodGhpcy5URVhUQVJFQSktMl06dm9pZCAwLGF1dG9Db2x1bW5TaXplOiEwLHJlbmRlcmVy'@; put 'Oih1LGcsRSxPLFosZWUsdmUpPT57RDcoMCxnLDAsMCwwLGVlLHZlKTtjb25zdHtmaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlOk1lLGFsbG93SHRtbDpIZX09dGhpcy5jZWxsUHJvcGVydGllcyxXZT10aGlzLmNlbGxQcm9wZXJ0aWVzLmxvY2FsZSxhdD10aGlzLnF1ZXJ5LEN0PVBsKGVlKTtpZihI'@; put 'ZSlnLmlubmVySFRNTD1DdDtlbHNlIGlmKEN0JiZhdCYmYXQubGVuZ3RoPjApe2NvbnN0IEF0PSEwPT09TWU/Q3QuaW5kZXhPZihhdCk6djEoQ3QsV2UpLmluZGV4T2YodjEoYXQsV2UpKTtpZigtMSE9PUF0KXtjb25zdCBLdD1DdC5zbGljZShBdCxBdCthdC5sZW5ndGgpLHtyb290RG9jdW1l'@; put 'bnQ6cXR9PXU7Zy5pbm5lckhUTUw9IiIsZy5hcHBlbmRDaGlsZChxdC5jcmVhdGVUZXh0Tm9kZShDdC5zbGljZSgwLEF0KSkpO2NvbnN0IGduPXF0LmNyZWF0ZUVsZW1lbnQoInN0cm9uZyIpO2duLnRleHRDb250ZW50PUt0LGcuYXBwZW5kQ2hpbGQoZ24pLGcuYXBwZW5kQ2hpbGQocXQuY3Jl'@; put 'YXRlVGV4dE5vZGUoQ3Quc2xpY2UoQXQrYXQubGVuZ3RoKSkpfX1yJiZLbyhnLFtbInJvbGUiLCJvcHRpb24iXSwuLi5pP1tOTXQobz8/MCldOltdLC4uLmk/W0ZNdChpLmluZGV4T2YoZWUpKzEpXTpbXSxbImlkIixgJHt0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LmlkfV8ke0V9LSR7T31g'@; put 'XV0pfSxhZnRlclNlbGVjdGlvbkVuZDoodSxnKT0+e2lmKHIpe2NvbnN0IEU9Wj0+e0tvKFosW1siYXJpYS1zZWxlY3RlZCIsInRydWUiXV0pLEtvKHRoaXMuVEVYVEFSRUEsLi4uKG49PlsiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixuXSkoWi5pZCkpfSxPPXRoaXMuaHRFZGl0b3IuZ2V0Q2Vs'@; put 'bCh1LGcsITApO251bGwhPT1PP0UoTyk6dGhpcy5odEVkaXRvci5hZGRIb29rT25jZSgiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IiwoKT0+e2NvbnN0IFo9dGhpcy5odEVkaXRvci5nZXRDZWxsKHUsZywhMCk7bnVsbCE9PVomJkUoWil9KX19fSkscil7Y29uc3QgdT1bInJvbGUiLCJwcmVzZW50'@; put 'YXRpb24iXTtLbyh0aGlzLmh0RWRpdG9yLnZpZXcuX3d0Lnd0T3ZlcmxheXMud3RUYWJsZS5UQUJMRSx1WzBdLHVbMV0pLEtvKHRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQsW1sicm9sZSIsImxpc3Rib3giXSxMTXQoInBvbGl0ZSIpLE9NdCgidGV4dCIpLFsiaWQiLGAke05kZSh0aGlzLHBa'@; put 'KX0tbGlzdGJveC0ke2F9LSR7bH1gXV0pLEtvKHRoaXMuVEVYVEFSRUEsLi4uYW0oInRydWUiKSl9dGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+e3RoaXMucXVlcnlDaG9pY2VzKHRoaXMuVEVYVEFSRUEudmFsdWUpfSl9Y2xvc2UoKXt0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9y'@; put 'ZUtleURvd24iKSxzdXBlci5jbG9zZSgpLHRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3MmJktvKHRoaXMuVEVYVEFSRUEsW2FtKCJmYWxzZSIpXSl9ZGlzY2FyZEVkaXRvcihlKXtzdXBlci5kaXNjYXJkRWRpdG9yKGUpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9cXVlcnlDaG9pY2Vz'@; put 'KGUpe2NvbnN0IHQ9dGhpcy5jZWxsUHJvcGVydGllcy5zb3VyY2U7dGhpcy5xdWVyeT1lLCJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLmNlbGxQcm9wZXJ0aWVzLGUscj0+e3RoaXMucmF3Q2hvaWNlcz1yLHRoaXMudXBkYXRlQ2hvaWNlc0xpc3QodGhpcy5zdHJpcFZhbHVlc0lm'@; put 'TmVlZGVkKHIpKX0pOkFycmF5LmlzQXJyYXkodCk/KHRoaXMucmF3Q2hvaWNlcz10LHRoaXMudXBkYXRlQ2hvaWNlc0xpc3QodGhpcy5zdHJpcFZhbHVlc0lmTmVlZGVkKHQpKSk6dGhpcy51cGRhdGVDaG9pY2VzTGlzdChbXSl9dXBkYXRlQ2hvaWNlc0xpc3QoZSl7Y29uc3QgdD14c2UodGhp'@; put 'cy5URVhUQVJFQSkscj1yQWUodGhpcy5URVhUQVJFQSksaT10aGlzLmNlbGxQcm9wZXJ0aWVzLnNvcnRCeVJlbGV2YW5jZSxvPXRoaXMuY2VsbFByb3BlcnRpZXMuZmlsdGVyLGE9dGhpcy5zdHJpcFZhbHVlSWZOZWVkZWQodGhpcy5nZXRWYWx1ZSgpKSxsPUFUKHRoaXMsVE8sZ1opLmNhbGwo'@; put 'dGhpcyxhKT9hLnZhbHVlOmE7bGV0IHU9bnVsbCxnPWU7aXx8KGc9Zy50b1NvcnRlZCgodmUsTWUpPT5QbCh2ZSkubG9jYWxlQ29tcGFyZShQbChNZSkpKSk7Y29uc3QgRT1bXSxPPXRoaXMuY2VsbFByb3BlcnRpZXMubG9jYWxlLFo9dGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXJpbmdDYXNl'@; put 'U2Vuc2l0aXZlLGVlPVo/bDp2MShTdHJpbmcobCksTyk7Zm9yKGxldCB2ZT0wO3ZlPGcubGVuZ3RoO3ZlKyspe2NvbnN0IE1lPUFUKHRoaXMsVE8sZ1opLmNhbGwodGhpcyxnW3ZlXSk/c20oUGwoZ1t2ZV0udmFsdWUpKTpzbShQbChnW3ZlXSkpO2lmKC0xIT09KFo/TWU6djEoTWUsTykpLmlu'@; put 'ZGV4T2YoU3RyaW5nKGVlKSkmJihFLnB1c2godmUpLCExPT09bykpYnJlYWt9ITE9PT1vP1N0cmluZyhhKS5sZW5ndGg+MCYmKHU9RVswXSk6KGc9RS5tYXAodmU9PmdbdmVdKSx1PWcuaW5kZXhPZihlZSk+LTE/Zy5pbmRleE9mKGVlKTowKSx0aGlzLnN0cmlwcGVkQ2hvaWNlcz1nLHRoaXMu'@; put 'aHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGUuZGlzcGxheT0wPT09Zy5sZW5ndGg/Im5vbmUiOiIiLHRoaXMuaHRFZGl0b3IubG9hZERhdGEobkwoW2ddKSksZy5sZW5ndGg+MCYmKHRoaXMudXBkYXRlRHJvcGRvd25EaW1lbnNpb25zKCksdGhpcy5mbGlwRHJvcGRvd25WZXJ0aWNhbGx5SWZO'@; put 'ZWVkZWQoKSx0aGlzLmZsaXBEcm9wZG93bkhvcml6b250YWxseUlmTmVlZGVkKCksITA9PT10aGlzLmNlbGxQcm9wZXJ0aWVzLnN0cmljdCYmdGhpcy5oaWdobGlnaHRCZXN0TWF0Y2hpbmdDaG9pY2UodT8/dm9pZCAwKSksdGhpcy5ob3QubGlzdGVuKCksdkwodGhpcy5URVhUQVJFQSx0LHQ9'@; put 'PT1yP3ZvaWQgMDpyKX1mbGlwRHJvcGRvd25WZXJ0aWNhbGx5SWZOZWVkZWQoKXtjb25zdCBlPXN1cGVyLmZsaXBEcm9wZG93blZlcnRpY2FsbHlJZk5lZWRlZCgpLHtpc0ZsaXBwZWQ6dCxzcGFjZUFib3ZlOnIsc3BhY2VCZWxvdzppfT1lO3JldHVybiB0aGlzLmxpbWl0RHJvcGRvd25JZk5l'@; put 'ZWRlZCh0P3I6aSksZX1saW1pdERyb3Bkb3duSWZOZWVkZWQoZSl7Y29uc3QgdD10aGlzLmdldERyb3Bkb3duSGVpZ2h0KCk7aWYodD5lKXtsZXQgcj0wLGk9MCxvPTA7ZG97aT10aGlzLmh0RWRpdG9yLnN0eWxlc0hhbmRsZXIuZ2V0RGVmYXVsdFJvd0hlaWdodCgpPz8wLHIrPWl9d2hpbGUo'@; put 'cjxlKTtvPXItaSx0aGlzLmlzRmxpcHBlZFZlcnRpY2FsbHkmJih0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcD1wYXJzZUludCh0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcCwxMCkrdC1vKyJweCIpLHRoaXMuc2V0RHJvcGRvd25IZWlnaHQoci1pKX19dXBk'@; put 'YXRlRHJvcGRvd25EaW1lbnNpb25zKCl7Y29uc3QgZT1pQWUoKSx0PXRoaXMuZ2V0VGFyZ2V0RWRpdG9yV2lkdGgoKStlLHI9dGhpcy5nZXRUYXJnZXRFZGl0b3JIZWlnaHQoKStlO3RoaXMuaHRFZGl0b3IudXBkYXRlU2V0dGluZ3Moe3dpZHRoOnQsaGVpZ2h0OnJ9KSxBVCh0aGlzLFBkZSwk'@; put 'RGUpLmNhbGwodGhpcyksdGhpcy5odEVkaXRvci52aWV3Ll93dC53dFRhYmxlLmFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIoKX1zZXREcm9wZG93bkhlaWdodChlKXt0aGlzLmh0RWRpdG9yLnVwZGF0ZVNldHRpbmdzKHtoZWlnaHQ6ZX0pLEFUKHRoaXMsUGRlLCREZSkuY2Fs'@; put 'bCh0aGlzKSx0aGlzLmh0RWRpdG9yLnZpZXcuX3d0Lnd0VGFibGUuYWxpZ25PdmVybGF5c1dpdGhUcmltbWluZ0NvbnRhaW5lcigpfWhpZ2hsaWdodEJlc3RNYXRjaGluZ0Nob2ljZShlKXsibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5odEVkaXRvci5zZWxlY3RDZWxsKGUsMCx2b2lkIDAsdm9p'@; put 'ZCAwLHZvaWQgMCwhMSk6dGhpcy5odEVkaXRvci5kZXNlbGVjdENlbGwoKX1nZXRUYXJnZXRFZGl0b3JIZWlnaHQoKXtsZXQgZT0wO2lmKCF0aGlzLmhvdC5nZXRDdXJyZW50VGhlbWVOYW1lKCkpe2NvbnN0IGk9dGhpcy5odENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIuaHRDb3JlIik7aWYo'@; put 'aSl7Y29uc3Qgbz10aGlzLmhvdC5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUoaSk7ZT1wYXJzZUludChvLmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludChvLmJvcmRlckJvdHRvbVdpZHRoLDEwKX19Y29uc3QgdD1NYXRoLm1pbih0aGlzLmNlbGxQcm9wZXJ0aWVzLnZpc2libGVSb3dz'@; put 'LHRoaXMuc3RyaXBwZWRDaG9pY2VzLmxlbmd0aCk7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDp0fSwoaSxvKT0+bykucmVkdWNlKChpLG8pPT5pKygodGhpcy5ob3Quc3R5bGVzSGFuZGxlci5nZXREZWZhdWx0Um93SGVpZ2h0KCk/PzApKygwPT09bz8xOjApKSwwKStlfWdldFRhcmdldEVk'@; put 'aXRvcldpZHRoKCl7bGV0IGU9MDtpZighdGhpcy5ob3QuZ2V0Q3VycmVudFRoZW1lTmFtZSgpKXtjb25zdCB0PXRoaXMuaHRDb250YWluZXIucXVlcnlTZWxlY3RvcigiLmh0Q29yZSIpO2lmKHQpe2NvbnN0IHI9dGhpcy5ob3Qucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpO2U9cGFy'@; put 'c2VJbnQoci5ib3JkZXJJbmxpbmVTdGFydFdpZHRoLDEwKStwYXJzZUludChyLmJvcmRlcklubGluZUVuZFdpZHRoLDEwKX19cmV0dXJuIHRoaXMuaHRFZGl0b3IuZ2V0Q29sV2lkdGgoMCkrZX1zdHJpcFZhbHVlSWZOZWVkZWQoZSl7cmV0dXJuIHRoaXMuc3RyaXBWYWx1ZXNJZk5lZWRlZChb'@; put 'ZV0pWzBdfXN0cmlwVmFsdWVzSWZOZWVkZWQoZSl7Y29uc3R7YWxsb3dIdG1sOnR9PXRoaXMuY2VsbFByb3BlcnRpZXMscj1pPT5QbCh0P2k6c20oU3RyaW5nKGkpKSk7cmV0dXJuIGUuZXZlcnkoaT0+YjAoaSkpP2UubWFwKGk9Pntjb25zdCBvPWk7cmV0dXJue2tleTpyKG8ua2V5KSx2YWx1'@; put 'ZTpyKG8udmFsdWUpfX0pOmUubWFwKGk9PnIoaSkpfW9uQmVmb3JlS2V5RG93bihlKXtpZihQc2UoZS5rZXlDb2RlKXx8ZS5rZXlDb2RlPT09RWEuQkFDS1NQQUNFfHxlLmtleUNvZGU9PT1FYS5ERUxFVEV8fGUua2V5Q29kZT09PUVhLklOU0VSVCl7bGV0IHQ9MTA7aWYoZS5rZXlDb2RlPT09'@; put 'RWEuQyYmKGUuY3RybEtleXx8ZS5tZXRhS2V5KSlyZXR1cm47dGhpcy5pc09wZW5lZCgpfHwodCs9MTApLHRoaXMuaHRFZGl0b3ImJnRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9Pnt0aGlzLnF1ZXJ5Q2hvaWNlcyh0aGlzLlRFWFRBUkVBLnZhbHVlKX0sdCl9fWNvbnN0cnVjdG9yKC4u'@; put 'LmUpe3N1cGVyKC4uLmUpLEdEZSh0aGlzLFBkZSksR0RlKHRoaXMsVE8pLFlEZSh0aGlzLHBaLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxZRGUodGhpcyxGZGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMucXVlcnk9bnVsbCx0aGlzLnN0cmlwcGVkQ2hvaWNlcz1bXSx0'@; put 'aGlzLnJhd0Nob2ljZXM9W10sWkRlKHRoaXMscFosdGhpcy5ob3QuZ3VpZC5zbGljZSgwLDkpKSxaRGUodGhpcyxGZGUsQk0oKCk9Pnt0aGlzLmZvY3VzKCl9LDEwMCkpfX1mdW5jdGlvbiAkRGUoKXt0aGlzLmh0RWRpdG9yLnZpZXcuaGFzVmVydGljYWxTY3JvbGwoKSYmdGhpcy5odEVkaXRv'@; put 'ci51cGRhdGVTZXR0aW5ncyh7d2lkdGg6dGhpcy5nZXRUYXJnZXRFZGl0b3JXaWR0aCgpK0dkKHRoaXMuaG90LnJvb3REb2N1bWVudCl9KX1mdW5jdGlvbiBnWihuKXtjb25zdCBlPW47cmV0dXJuIENhKG4pJiZabyhlLmtleSkmJlpvKGUudmFsdWUpfWNsYXNzIHFEZSBleHRlbmRzIEk3e3N0'@; put 'YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4iY2hlY2tib3gifWJlZ2luRWRpdGluZyhlLHQpe2lmKHQmJiJtb3VzZXVwIj09PXQudHlwZSYmIlREIj09PUFhKHQpLm5vZGVOYW1lKXtjb25zdCByPXRoaXMuVEQucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT0iY2hlY2tib3giXScpO0xh'@; put 'KHIsImh0QmFkVmFsdWUiKXx8ci5jbGljaygpfX1maW5pc2hFZGl0aW5nKCl7fWluaXQoKXt9b3Blbigpe31jbG9zZSgpe31nZXRWYWx1ZSgpe31zZXRWYWx1ZSgpe31mb2N1cygpe319Y29uc3QgVmRlPS9eXGR7NH0tKDBbMS05XXwxWzAtMl0pLSgwWzEtOV18WzEyXVxkfDNbMDFdKSQvO2Z1'@; put 'bmN0aW9uIGJPdChuKXtjb25zdCBlPW5ldyBEYXRlKG4pO3JldHVybiBOdW1iZXIuaXNOYU4obmV3IERhdGUoYCR7bn1UMDA6MDBgKS5nZXREYXRlKCkpP2U6bmV3IERhdGUoZS5nZXRUaW1lKCkrNmU0KmUuZ2V0VGltZXpvbmVPZmZzZXQoKSl9ZnVuY3Rpb24gc2Mobil7aWYoQWwobikpcmV0'@; put 'dXJuIG51bGw7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZWZGUudGVzdChuKSl7Y29uc3RbZSx0LHJdPW4uc3BsaXQoIi0iKS5tYXAoTnVtYmVyKTtyZXR1cm4gbmV3IERhdGUoZSx0LTEscil9cmV0dXJuIG51bGx9ZnVuY3Rpb24geE8obil7aWYoInN0cmluZyIhPXR5cGVvZiBufHwhVmRlLnRl'@; put 'c3QobikpcmV0dXJuITE7Y29uc3QgZT1uZXcgRGF0ZShuKTtyZXR1cm4hTnVtYmVyLmlzTmFOKGUuZ2V0VGltZSgpKSYmbj09PWUudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKX1jb25zdCBCZGU9L14oWzAxXVxkfDJbMC0zXSk6KFswLTVdXGQpKD86OihbMC01XVxkKSg/OlwuKFxkezEsM30p'@; put 'KT8pPyQvO2Z1bmN0aW9uIHpmKG4pe2lmKEFsKG4pfHwic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuIG51bGw7Y29uc3QgZT1CZGUuZXhlYyhuKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU51bWJlcihlWzFdKSxyPU51bWJlcihlWzJdKSxpPXZvaWQgMCE9PWVbM10/TnVtYmVyKGVbM10p'@; put 'OjAsbz1lWzRdLGE9dm9pZCAwIT09bz9OdW1iZXIoby5wYWRFbmQoMywiMCIpLnNsaWNlKDAsMykpOjA7cmV0dXJuIG5ldyBEYXRlKDE5NzAsMCwxLHQscixpLGEpfWZ1bmN0aW9uIG1aKG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmQmRlLnRlc3Qobil9ZnVuY3Rpb24gamRlKCl7Y29u'@; put 'c3Qgbj1uZXcgRGF0ZTtyZXR1cm4gbmV3IERhdGUobi5nZXRGdWxsWWVhcigpLG4uZ2V0TW9udGgoKSxuLmdldERhdGUoKSl9ZnVuY3Rpb24gVWRlKG4pe2NvbnN0IGU9amRlKCk7cmV0dXJuIGUuc2V0RGF0ZShlLmdldERhdGUoKStuKSxlfWZ1bmN0aW9uIHZaKG4sZSl7cmV0dXJuIG4uZ2V0'@; put 'RnVsbFllYXIoKT09PWUuZ2V0RnVsbFllYXIoKSYmbi5nZXRNb250aCgpPT09ZS5nZXRNb250aCgpJiZuLmdldERhdGUoKT09PWUuZ2V0RGF0ZSgpfWNsYXNzIHpkZSBleHRlbmRzIGRfe3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4iZGF0ZSJ9aW5pdCgpe3N1cGVyLmluaXQoKSx0'@; put 'aGlzLmhvdC5hZGRIb29rKCJhZnRlclNldFRoZW1lIiwoZSx0KT0+e3R8fHRoaXMuY2xvc2UoKX0pfXByZXBhcmUoZSx0LHIsaSxvLGEpe3N1cGVyLnByZXBhcmUoZSx0LHIsaSxvLGEpLHZvaWQgMCE9PWEuZGF0ZVBpY2tlckNvbmZpZyYmQ3NlKHRoaXMuaG90LnJvb3RFbGVtZW50LCJkYXRl'@; put 'UGlja2VyQ29uZmlnIiwnVGhlICJkYXRlUGlja2VyQ29uZmlnIiBvcHRpb24gaXMgbm90IHN1cHBvcnRlZC4gVGhlIG5hdGl2ZSBkYXRlIGlucHV0IGlzIHVzZWQgaW5zdGVhZCBvZiBQaWthZGF5LicpO2NvbnN0IGw9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhlKTt0aGlzLm9yaWdpbmFsVmFs'@; put 'dWU9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbChsLHQpfWNyZWF0ZUVsZW1lbnRzKGUpe3N1cGVyLmNyZWF0ZUVsZW1lbnRzKCJpbnB1dCIpLHRoaXMuVEVYVEFSRUEuc2V0QXR0cmlidXRlKCJ0eXBlIiwiZGF0ZSIpfXNldFZhbHVlKGUpe2lmKEFsKGUpJiYoZT10aGlzLmNlbGxQcm9w'@; put 'ZXJ0aWVzLmRlZmF1bHREYXRlKSwheE8oZSkpcmV0dXJuIEhhKHljYERhdGVFZGl0b3I6IHZhbHVlIG11c3QgYmUgaW4gSVNPIGRhdGUgZm9ybWF0ICgiWVlZWS1NTS1ERCIpXHgyMAogICAgICAgIHJlcXVpcmVkIGJ5IHRoZSBuYXRpdmUgZGF0ZSBpbnB1dC4gUmVjZWl2ZWQ6YCxlKSx2b2lk'@; put 'IHN1cGVyLnNldFZhbHVlKCIiKTtzdXBlci5zZXRWYWx1ZShlKX1mb2N1cygpe3RoaXMuVEVYVEFSRUEuc2VsZWN0KCl9b3Blbigpe3N1cGVyLm9wZW4oKTt0cnl7dGhpcy5URVhUQVJFQS5zaG93UGlja2VyKCl9Y2F0Y2h7fX19Y2xhc3MgS0RlIGV4dGVuZHMgSGRle3N0YXRpYyBnZXQgRURJ'@; put 'VE9SX1RZUEUoKXtyZXR1cm4iZHJvcGRvd24ifXByZXBhcmUoZSx0LHIsaSxvLGEpe2EuZmlsdGVyPSExLGEuc3RyaWN0PSEwLHN1cGVyLnByZXBhcmUoZSx0LHIsaSxvLGEpfWZpbmlzaEVkaXRpbmcoZSx0LHIpe2lmKHRoaXMuaXNPcGVuZWQoKSl7Y29uc3QgaT10aGlzLmhvdC5nZXRTZWxl'@; put 'Y3RlZFJhbmdlQWN0aXZlKCk7KFh1KGkpfHxabyhpKSYmIWkuaW5jbHVkZXModGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModGhpcy5yb3csdGhpcy5jb2wpKSkmJihlPSEwKX1zdXBlci5maW5pc2hFZGl0aW5nKGUsdCxyKX19Y2xhc3MgWERlIGV4dGVuZHMgemRle3N0YXRpYyBnZXQgRURJ'@; put 'VE9SX1RZUEUoKXtyZXR1cm4iaW50bC1kYXRlIn19Y2xhc3MgV2RlIGV4dGVuZHMgZF97c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiJ0aW1lIn1pbml0KCl7c3VwZXIuaW5pdCgpLHRoaXMuaG90LmFkZEhvb2soImFmdGVyU2V0VGhlbWUiLChlLHQpPT57dHx8dGhpcy5jbG9zZSgp'@; put 'fSl9Y3JlYXRlRWxlbWVudHMoZSl7c3VwZXIuY3JlYXRlRWxlbWVudHMoImlucHV0IiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0aW1lIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImRpciIsImx0ciIpfXNldFZhbHVlKGUpe2lmKCFtWihlKSlyZXR1cm4gSGEo'@; put 'eWNgVGltZUVkaXRvcjogdmFsdWUgbXVzdCBiZSBpbiAyNC1ob3VyIHRpbWUgZm9ybWF0ICgiSEg6bW0iLCAiSEg6bW06c3MiIG9yICJISDptbTpzcy5TU1MiKVx4MjAKICAgICAgICByZXF1aXJlZCBieSB0aGUgbmF0aXZlIHRpbWUgaW5wdXQuIFJlY2VpdmVkOmAsZSksdm9pZCBzdXBlci5z'@; put 'ZXRWYWx1ZSgiIik7c3VwZXIuc2V0VmFsdWUoZSl9Zm9jdXMoKXt0aGlzLlRFWFRBUkVBLnNlbGVjdCgpfW9wZW4oKXtzdXBlci5vcGVuKCk7dHJ5e3RoaXMuVEVYVEFSRUEuc2hvd1BpY2tlcigpfWNhdGNoe319fWNsYXNzIFFEZSBleHRlbmRzIFdkZXtzdGF0aWMgZ2V0IEVESVRPUl9UWVBF'@; put 'KCl7cmV0dXJuImludGwtdGltZSJ9fWNsYXNzIEpEZSBleHRlbmRzIGRfe3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4ibnVtZXJpYyJ9fWZ1bmN0aW9uIGVMZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHBy'@; put 'aXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gdExlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9u'@; put 'IGpjKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIHhPdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sdExlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIF9aKG4sZSx0KXtlTGUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIHloKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gQU90'@; put 'KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix0TGUobixlLCJzZXQiKSx0KSx0fXZhciBwZD1uZXcgV2Vh'@; put 'a01hcCxLMT1uZXcgV2Vha01hcCxPdz1uZXcgV2Vha01hcCxrVD1uZXcgV2Vha01hcCxuTGU9bmV3IFdlYWtTZXQ7Y2xhc3MgckxlIGV4dGVuZHMgZF97c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiJwYXNzd29yZCJ9Y3JlYXRlRWxlbWVudHMoKXtzdXBlci5jcmVhdGVFbGVtZW50'@; put 'cygpLHRoaXMuVEVYVEFSRUE9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJwYXNzd29yZCIpLHRoaXMuVEVYVEFSRUEuZGF0YXNldC5ob3RJbnB1dD0iIix0aGlzLlRFWFRBUkVBLmNsYXNzTmFt'@; put 'ZT0iaGFuZHNvbnRhYmxlSW5wdXQiLHRoaXMudGV4dGFyZWFTdHlsZT10aGlzLlRFWFRBUkVBLnN0eWxlLHRoaXMudGV4dGFyZWFTdHlsZS53aWR0aD0iMCIsdGhpcy50ZXh0YXJlYVN0eWxlLmhlaWdodD0iMCIsQzQodGhpcy5URVhUQVJFQV9QQVJFTlQpO2NvbnN0IGU9YjQoLTEpO3RoaXMu'@; put 'VEVYVEFSRUEuc2V0QXR0cmlidXRlKGVbMF0sU3RyaW5nKGVbMV0pKSx0aGlzLlRFWFRBUkVBX1BBUkVOVC5hcHBlbmRDaGlsZCh0aGlzLlRFWFRBUkVBKX1vcGVuKCl7c3VwZXIub3BlbigpO2NvbnN0IGU9dGhpcy5jZWxsUHJvcGVydGllcy5oYXNoUmV2ZWFsRGVsYXksdD1TdHJpbmcodGhp'@; put 'cy5jZWxsUHJvcGVydGllcy5oYXNoU3ltYm9sfHwiKiIpO2lmKGU+MCl7eWgodGhpcyxrVCwhMCk7Y29uc3Qgcj10WzBdO3RoaXMuVEVYVEFSRUEuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dCIpLHRoaXMuVEVYVEFSRUEuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCJvZmYiKSx0aGlz'@; put 'LlRFWFRBUkVBLnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsImZhbHNlIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImF1dG9jYXBpdGFsaXplIiwib2ZmIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImF1dG9jb3JyZWN0Iiwib2ZmIiksdGhpcy5URVhUQVJFQS52YWx1ZT1y'@; put 'LnJlcGVhdChqYyh0aGlzLHBkKS5sZW5ndGgpLHloKHRoaXMsT3csaT0+ZnVuY3Rpb24ga090KG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fSh0aGlzLG5MZSxE'@; put 'T3QpLmNhbGwodGhpcyxpLHIsZSkpLHRoaXMuVEVYVEFSRUEuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGpjKHRoaXMsT3cpKX19Y2xvc2UoKXtqYyh0aGlzLE93KSYmKHRoaXMuVEVYVEFSRUEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGpjKHRoaXMsT3cpKSx5aCh0aGlzLE93LG51'@; put 'bGwpKSxudWxsIT09amModGhpcyxLMSkmJihjbGVhclRpbWVvdXQoamModGhpcyxLMSkpLHloKHRoaXMsSzEsbnVsbCkpLHloKHRoaXMsa1QsITEpLHloKHRoaXMscGQsIiIpLHRoaXMuVEVYVEFSRUEuc2V0QXR0cmlidXRlKCJ0eXBlIiwicGFzc3dvcmQiKSx0aGlzLlRFWFRBUkVBLnJlbW92'@; put 'ZUF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiksdGhpcy5URVhUQVJFQS5yZW1vdmVBdHRyaWJ1dGUoInNwZWxsY2hlY2siKSx0aGlzLlRFWFRBUkVBLnJlbW92ZUF0dHJpYnV0ZSgiYXV0b2NhcGl0YWxpemUiKSx0aGlzLlRFWFRBUkVBLnJlbW92ZUF0dHJpYnV0ZSgiYXV0b2NvcnJlY3QiKSxz'@; put 'dXBlci5jbG9zZSgpfWdldFZhbHVlKCl7cmV0dXJuIGpjKHRoaXMsa1QpP2pjKHRoaXMscGQpOnN1cGVyLmdldFZhbHVlKCl9c2V0VmFsdWUoZSl7aWYoamModGhpcyxrVCkpe3loKHRoaXMscGQsZT8/IiIpO2NvbnN0IHQ9U3RyaW5nKHRoaXMuY2VsbFByb3BlcnRpZXMuaGFzaFN5bWJvbHx8'@; put 'IioiKVswXTt0aGlzLlRFWFRBUkVBLnZhbHVlPXQucmVwZWF0KGpjKHRoaXMscGQpLmxlbmd0aCl9ZWxzZSB0aGlzLmNlbGxQcm9wZXJ0aWVzPy5oYXNoUmV2ZWFsRGVsYXk+MD95aCh0aGlzLHBkLGU/PyIiKTpzdXBlci5zZXRWYWx1ZShlKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5l'@; put 'KSxmdW5jdGlvbiBST3QobixlKXtlTGUobixlKSxlLmFkZChuKX0odGhpcyxuTGUpLF9aKHRoaXMscGQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLF9aKHRoaXMsSzEse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLF9aKHRoaXMsT3cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0p'@; put 'LF9aKHRoaXMsa1Qse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuYXV0b1Jlc2l6ZT1URGUodGhpcy5ob3Qucm9vdERvY3VtZW50LHt0ZXh0Q29udGVudDp0PT4iXHUyMDIyIi5yZXBlYXQodC52YWx1ZS5sZW5ndGgpfSkseWgodGhpcyxwZCwiIikseWgodGhpcyxLMSxudWxsKSx5'@; put 'aCh0aGlzLE93LG51bGwpLHloKHRoaXMsa1QsITEpfX1mdW5jdGlvbiBET3QobixlLHQpe2NvbnN0e2lucHV0VHlwZTpyLGRhdGE6aX09bjtpZighaXx8Imluc2VydFRleHQiIT09ciYmImluc2VydEZyb21QYXN0ZSIhPT1yJiYiaW5zZXJ0RnJvbURyb3AiIT09ciYmImluc2VydFJlcGxhY2Vt'@; put 'ZW50VGV4dCIhPT1yJiYiaW5zZXJ0Q29tcG9zaXRpb25UZXh0IiE9PXIpaWYocj8uc3RhcnRzV2l0aCgiZGVsZXRlIikpe2NvbnN0IGE9amModGhpcyxwZCkubGVuZ3RoLGw9dGhpcy5URVhUQVJFQS5zZWxlY3Rpb25TdGFydD8/MCx1PWEtdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGg7eWgo'@; put 'dGhpcyxwZCxqYyh0aGlzLHBkKS5zbGljZSgwLGwpK2pjKHRoaXMscGQpLnNsaWNlKGwrdSkpLHRoaXMuVEVYVEFSRUEudmFsdWU9ZS5yZXBlYXQoamModGhpcyxwZCkubGVuZ3RoKSx0aGlzLlRFWFRBUkVBLnNldFNlbGVjdGlvblJhbmdlKGwsbCksbnVsbCE9PWpjKHRoaXMsSzEpJiYoY2xl'@; put 'YXJUaW1lb3V0KGpjKHRoaXMsSzEpKSx5aCh0aGlzLEsxLG51bGwpKX1lbHNle2NvbnN0IGE9amModGhpcyxwZCkubGVuZ3RoLGw9dGhpcy5URVhUQVJFQS52YWx1ZTtpZihsLmxlbmd0aD5hKXtjb25zdCB1PWwuc2xpY2UoYSk7eWgodGhpcyxwZCxqYyh0aGlzLHBkKSt1KSx0aGlzLlRFWFRB'@; put 'UkVBLnZhbHVlPWUucmVwZWF0KGEpK3UsbnVsbCE9PWpjKHRoaXMsSzEpJiZjbGVhclRpbWVvdXQoamModGhpcyxLMSkpLHloKHRoaXMsSzEsdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+e3RoaXMuVEVYVEFSRUEudmFsdWU9ZS5yZXBlYXQoamModGhpcyxwZCkubGVuZ3RoKSx5aCh0'@; put 'aGlzLEsxLG51bGwpfSx0KSl9ZWxzZSB5aCh0aGlzLHBkLGpjKHRoaXMscGQpLnNsaWNlKDAsbC5sZW5ndGgpKSx0aGlzLlRFWFRBUkVBLnZhbHVlPWUucmVwZWF0KGpjKHRoaXMscGQpLmxlbmd0aCksbnVsbCE9PWpjKHRoaXMsSzEpJiYoY2xlYXJUaW1lb3V0KGpjKHRoaXMsSzEpKSx5aCh0'@; put 'aGlzLEsxLG51bGwpKX1lbHNle2NvbnN0IGE9dGhpcy5URVhUQVJFQS5zZWxlY3Rpb25TdGFydD8/MCxsPWEtaS5sZW5ndGgsdT10aGlzLlRFWFRBUkVBLnZhbHVlLmxlbmd0aC1hO3loKHRoaXMscGQsamModGhpcyxwZCkuc2xpY2UoMCxsKStpK2pjKHRoaXMscGQpLnNsaWNlKGpjKHRoaXMs'@; put 'cGQpLmxlbmd0aC11KSksdGhpcy5URVhUQVJFQS52YWx1ZT1lLnJlcGVhdChsKStpK2UucmVwZWF0KHUpLHRoaXMuVEVYVEFSRUEuc2V0U2VsZWN0aW9uUmFuZ2UoYSxhKSxudWxsIT09amModGhpcyxLMSkmJmNsZWFyVGltZW91dChqYyh0aGlzLEsxKSkseWgodGhpcyxLMSx0aGlzLmhvdC5f'@; put 'cmVnaXN0ZXJUaW1lb3V0KCgpPT57Y29uc3QgZz10aGlzLlRFWFRBUkVBLnNlbGVjdGlvblN0YXJ0O3RoaXMuVEVYVEFSRUEudmFsdWU9ZS5yZXBlYXQoamModGhpcyxwZCkubGVuZ3RoKSx0aGlzLlRFWFRBUkVBLnNldFNlbGVjdGlvblJhbmdlKGcsZykseWgodGhpcyxLMSxudWxsKX0sdCkp'@; put 'fX1jb25zdCBZZGU9Imh0X2VkaXRvcl92aXNpYmxlIixpTGU9InNlbGVjdEVkaXRvciI7Y2xhc3Mgb0xlIGV4dGVuZHMgSTd7c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiJzZWxlY3QifWluaXQoKXt0aGlzLnNlbGVjdFdyYXBwZXI9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0'@; put 'ZUVsZW1lbnQoImRpdiIpLHRoaXMuc2VsZWN0PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSx0aGlzLnNlbGVjdC5kYXRhc2V0LmhvdElucHV0PSJ0cnVlIix0aGlzLnNlbGVjdFdyYXBwZXIuc3R5bGUuZGlzcGxheT0ibm9uZSI7Y29uc3QgZT10aGlzLmhv'@; put 'dC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdD10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzO2UuY2xhc3NOYW1lPSJodEF1dG9jb21wbGV0ZUFycm93Iix0JiZlLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksZS5hcHBlbmRDaGlsZCh0aGlzLmhv'@; put 'dC5yb290RG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MjViYyIpKSxZcih0aGlzLnNlbGVjdFdyYXBwZXIsImh0U2VsZWN0RWRpdG9yIiksdGhpcy5zZWxlY3RXcmFwcGVyLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0KSx0aGlzLnNlbGVjdFdyYXBwZXIuaW5zZXJ0QmVmb3JlKGUsdGhpcy5z'@; put 'ZWxlY3RXcmFwcGVyLmZpcnN0Q2hpbGQpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0V3JhcHBlciksdGhpcy5yZWdpc3Rlckhvb2tzKCksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsKCk9PnRoaXMuZGVzdHJveSgpKX1nZXRWYWx1ZSgp'@; put 'e3JldHVybiB0aGlzLnNlbGVjdC52YWx1ZX1zZXRWYWx1ZShlKXt0aGlzLnNlbGVjdC52YWx1ZT1udWxsPT1lPyIiOlN0cmluZyhlKX1vcGVuKCl7dGhpcy5fb3BlbmVkPSEwLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSx0aGlzLnNlbGVjdFdyYXBwZXIuc3R5bGUuZGlzcGxheT0iIix0aGlz'@; put 'LmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZWRpdG9yIiksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpfWNsb3NlKCl7dGhpcy5fb3BlbmVkPSExLHRoaXMuc2VsZWN0V3JhcHBlci5zdHlsZS5kaXNwbGF5PSJub25lIixMYSh0aGlzLnNlbGVjdFdyYXBw'@; put 'ZXIsWWRlKSYma28odGhpcy5zZWxlY3RXcmFwcGVyLFlkZSksdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5yZW1vdmVIb29rc0J5S2V5KCJiZWZvcmVEaWFsb2dTaG93Iil9Zm9jdXMoKXt0aGlzLnNlbGVjdC5mb2N1cygpfXJlZ2lzdGVySG9va3MoKXt0aGlzLmFkZEhvb2soImFm'@; put 'dGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwoKT0+dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsKCk9PnRoaXMucmVm'@; put 'cmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSl9cHJlcGFyZShlLHQscixpLG8sYSl7c3VwZXIucHJlcGFyZShlLHQscixpLG8sYSk7Y29uc3QgbD10aGlzLmNlbGxQcm9wZXJ0aWVzLnNlbGVjdE9wdGlv'@; put 'bnM7bGV0IHU7dT10aGlzLnByZXBhcmVPcHRpb25zKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2wodGhpcy5yb3csdGhpcy5jb2wsdGhpcy5wcm9wKTpsKSxDNCh0aGlzLnNlbGVjdCk7Y29uc3R7c2FuaXRpemVyOmd9PXRoaXMuaG90LmdldFNldHRpbmdzKCk7aWYoQXJyYXkuaXNBcnJheSh1KSlm'@; put 'b3IobGV0IEU9MDtFPHUubGVuZ3RoO0UrKyl7Y29uc3QgTz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiT1BUSU9OIik7Ty52YWx1ZT1TdHJpbmcodVtFXSksXzcoTyxTdHJpbmcodVtFXSksZywic2VsZWN0RWRpdG9yIix0aGlzLmhvdC5yb290RWxlbWVudCksdGhpcy5z'@; put 'ZWxlY3QuYXBwZW5kQ2hpbGQoTyl9ZWxzZSBhYyh1LChFLE8pPT57Y29uc3QgWj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiT1BUSU9OIik7Wi52YWx1ZT1PLF83KFosU3RyaW5nKEUpLGcsInNlbGVjdEVkaXRvciIsdGhpcy5ob3Qucm9vdEVsZW1lbnQpLHRoaXMuc2Vs'@; put 'ZWN0LmFwcGVuZENoaWxkKFopfSl9cHJlcGFyZU9wdGlvbnMoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiPT10eXBlb2YgZT9lOnt9fXJlZnJlc2hWYWx1ZSgpe2NvbnN0IGU9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLnJvdyx0aGlzLnByb3ApO3RoaXMu'@; put 'b3JpZ2luYWxWYWx1ZT1lLHRoaXMuc2V0VmFsdWUoZSksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfXJlZnJlc2hEaW1lbnNpb25zKCl7aWYodGhpcy5zdGF0ZSE9PVZoLkVESVRJTkcpcmV0dXJuO2lmKHRoaXMuVEQ9dGhpcy5nZXRFZGl0ZWRDZWxsKCksIXRoaXMuVEQpcmV0dXJuIHZvaWQg'@; put 'dGhpcy5jbG9zZSgpO2NvbnN0IGU9dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpO2lmKCFlKXJldHVybjtjb25zdHt0b3A6dCxzdGFydDpyLHdpZHRoOmksaGVpZ2h0Om99PWUsYT10aGlzLnNlbGVjdFdyYXBwZXIuc3R5bGU7YS5oZWlnaHQ9YCR7b31weGAsYS53aWR0aD1gJHtpfXB4YCxhLnRv'@; put 'cD1gJHt0fXB4YCxhW3RoaXMuaG90LmlzUnRsKCk/InJpZ2h0IjoibGVmdCJdPWAke3J9cHhgLGEubWFyZ2luPSIwcHgiLFlyKHRoaXMuc2VsZWN0V3JhcHBlcixZZGUpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7Y29uc3QgdD10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0'@; put 'KCJlZGl0b3IiKSxyPXtncm91cDppTGV9O3RoaXMuaXNJbkZ1bGxFZGl0TW9kZSgpJiZ0LmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazooKT0+e2NvbnN0IGk9dGhpcy5zZWxlY3Quc2VsZWN0ZWRJbmRleC0xO2k+PTAmJih0aGlzLnNlbGVjdFtpXS5zZWxlY3Rl'@; put 'ZD0hMCl9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6KCk9Pntjb25zdCBpPXRoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXgrMTtpPD10aGlzLnNlbGVjdC5sZW5ndGgtMSYmKHRoaXMuc2VsZWN0W2ldLnNlbGVjdGVkPSEwKX19XSxyKX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhp'@; put 'cy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChpTGUpfWRlc3Ryb3koKXt0aGlzLmNsZWFySG9va3MoKX19ZnVuY3Rpb24gUlQobil7cmV0dXJuIG4ucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT0iY2hlY2tib3gi'@; put 'XScpfWZ1bmN0aW9uIGFMZShuLGUpe3JldHVybiBiMChlKT9BcnJheS5pc0FycmF5KG4pJiZuLnNvbWUodD0+YjAodCk/ZzcodCxlKTp0PT09ZSk6bi5pbmNsdWRlcyhlKX12YXIgc0xlPW5ldyBXZWFrU2V0O2NsYXNzIGxMZXtnZXRJbnB1dEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dH1z'@; put 'ZXRWYWx1ZShlKXt0aGlzLmlucHV0LnZhbHVlPWV9dG9nZ2xlKGUpe3RoaXMuZW5hYmxlZD1lLHRoaXMuaW5wdXQmJihlP3RoaXMubGlzdGVuKCk6dGhpcy51bmxpc3RlbigpKX1saXN0ZW4oKXt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaW5wdXQsImlucHV0Iix0'@; put 'aGlzLm9uSW5wdXQpfXVubGlzdGVuKCl7dGhpcy5ldmVudE1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmlucHV0LCJpbnB1dCIsdGhpcy5vbklucHV0KX1fb25JbnB1dCgpeyhmdW5jdGlvbiBQT3QobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRl'@; put 'bXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9KSh0aGlzLHNMZSxWT3QpLmNhbGwodGhpcyx0aGlzLmlucHV0LnZhbHVlKX1jb25zdHJ1Y3Rvcih7aW5wdXQ6ZSxldmVudE1hbmFnZXI6dH0peyhmdW5jdGlvbiBIT3QobixlKXsoZnVuY3Rpb24g'@; put 'Rk90KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5hZGQobil9KSh0aGlzLHNMZSksdGhpcy5vbklucHV0PXRoaXMuX29uSW5wdXQuYmlu'@; put 'ZCh0aGlzKSx0aGlzLmlucHV0PWUsdGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmVuYWJsZWQ9ITB9fWZ1bmN0aW9uIFZPdChuKXt0aGlzLnJ1bkxvY2FsSG9va3MoInRyaWdnZXJGaWx0ZXIiLG4pfVlsKGxMZSxfaCk7Y29uc3QgSVQ9Imh0LW11bHRpLXNlbGVjdC1lZGl0b3IiLEJPdD1gJHtJ'@; put 'VH0tc2VhcmNoLWlucHV0LXdyYXBwZXJgLGpPdD1gJHtJVH0tc2VhcmNoLWljb25gLGNMZT1gJHtJVH0tc2VhcmNoLWlucHV0YCxVT3Q9YCR7SVR9LXNlcGFyYXRvcmAsWU90PWAke0lUfS1pdGVtLWAsWmRlPWAke0lUfS1pdGVtLXNlbGVjdGVkYDtmdW5jdGlvbiB1TGUobil7Y29uc3QgZT1S'@; put 'VChuKTtZcihuLFpkZSksZSYmIWUuY2hlY2tlZCYmKGUuY2hlY2tlZD0hMCl9ZnVuY3Rpb24gZExlKG4pe2NvbnN0IGU9UlQobik7a28obixaZGUpLGUmJmUuY2hlY2tlZCYmKGUuY2hlY2tlZD0hMSl9ZnVuY3Rpb24gaExlKHtkcm9wZG93bkxpc3RFbGVtZW50Om4saW5kZXg6ZX0pe2NvbnN0'@; put 'IHQ9bi5jaGlsZHJlbltlXTtpZih0KXtjb25zdCByPVJUKHQpO3ImJnIuYmx1cigpfX1mdW5jdGlvbiBmTGUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIp'@; put 'fWZ1bmN0aW9uIHBMZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBzaShuLGUpe3JldHVybiBmdW5jdGlvbiByTnQobixlKXty'@; put 'ZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLHBMZShuLGUsImdldCIpKX1mdW5jdGlvbiBkNihuLGUsdCl7ZkxlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBFMChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGlOdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vs'@; put 'c2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4scExlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBXZihuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJy'@; put 'b3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBoNihuLGUpe2ZMZShuLGUpLGUuYWRkKG4pfXZhciBEVD1uZXcgV2Vha01hcCxTdT1uZXcgV2Vha01hcCxnZD1uZXcgV2Vha01hcCxPNz1uZXcgV2Vha01hcCxoXz1u'@; put 'ZXcgV2Vha01hcCxmNj1uZXcgV2Vha01hcCxOdz1uZXcgV2Vha01hcCxpMj1uZXcgV2Vha01hcCxGdz1uZXcgV2Vha01hcCx4cz1uZXcgV2Vha01hcCxBTz1uZXcgV2Vha1NldCxnTGU9bmV3IFdlYWtTZXQsbUxlPW5ldyBXZWFrU2V0LEdkZT1uZXcgV2Vha1NldCx2TGU9bmV3IFdlYWtTZXQs'@; put 'JGRlPW5ldyBXZWFrU2V0LF9MZT1uZXcgV2Vha1NldCx5TGU9bmV3IFdlYWtTZXQsYkxlPW5ldyBXZWFrU2V0LHdMZT1uZXcgV2Vha1NldDtjbGFzcyBDTGV7aW5pdCgpe2lmKCFzaSh0aGlzLGkyKXx8IXNpKHRoaXMsU3UpKXJldHVybjtFMCh0aGlzLGdkLGZ1bmN0aW9uIEtPdCh7cm9vdDpu'@; put 'fSl7cmV0dXJuIG4uY3JlYXRlRWxlbWVudCgidWwiKX0oe3Jvb3Q6c2kodGhpcyxpMil9KSksRTAodGhpcyxPNyxmdW5jdGlvbiAkT3Qoe3Jvb3Q6bn0pe2NvbnN0IGU9bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBLbyhlLFtOMygiU2VhcmNoIG9wdGlvbnMiKSxbInR5cGUiLCJ0'@; put 'ZXh0Il0sWyJzaXplIiwzXSxbInBsYWNlaG9sZGVyIiwiU2VhcmNoLi4uIl0sWyJpZCIsY0xlXV0pLFlyKGUsY0xlKSxlfSh7cm9vdDpzaSh0aGlzLGkyKX0pKTtjb25zdCBlPWZ1bmN0aW9uIEdPdCh7cm9vdDpufSl7Y29uc3QgZT1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBZcihl'@; put 'LGpPdCksS28oZSxbWyJhcmlhLWhpZGRlbiIsInRydWUiXV0pLGV9KHtyb290OnNpKHRoaXMsaTIpfSk7RTAodGhpcyxmNixmdW5jdGlvbiBaT3Qoe3Jvb3Q6bn0pe2NvbnN0IGU9bi5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5jbGFzc05hbWU9Qk90LGV9KHtyb290OnNpKHRoaXMs'@; put 'aTIpfSkpLEUwKHRoaXMsaF8sZnVuY3Rpb24gcU90KHtyb290Om59KXtjb25zdCBlPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuY2xhc3NOYW1lPVVPdCxlfSh7cm9vdDpzaSh0aGlzLGkyKX0pKSxzaSh0aGlzLGY2KS5hcHBlbmRDaGlsZChlKSxzaSh0aGlzLGY2KS5hcHBlbmRD'@; put 'aGlsZChzaSh0aGlzLE83KSksc2kodGhpcyxTdSkuYXBwZW5kQ2hpbGQoc2kodGhpcyxmNikpLHNpKHRoaXMsU3UpLmFwcGVuZENoaWxkKHNpKHRoaXMsaF8pKSxzaSh0aGlzLFN1KS5hcHBlbmRDaGlsZChzaSh0aGlzLGdkKSksRTAodGhpcyxOdyxuZXcgbExlKHtpbnB1dDpzaSh0aGlzLE83'@; put 'KSxldmVudE1hbmFnZXI6c2kodGhpcyxGdyl9KSl9c2V0VmlzaWJsZVJvd3NOdW1iZXJTZXR0aW5nKGUpe3NpKHRoaXMseHMpLnZpc2libGVSb3dzTnVtYmVyU2V0dGluZz1lfXNldFNvdXJjZVNvcnRGdW5jdGlvbihlKXtzaSh0aGlzLHhzKS5zb3VyY2VTb3J0RnVuY3Rpb249ZT8/bnVsbH1z'@; put 'ZXRTZWFyY2hJbnB1dFZpc2liaWxpdHkoZT0hMCl7IXNpKHRoaXMsZjYpfHwhc2kodGhpcyxoXyl8fCFzaSh0aGlzLE53KXx8KHNpKHRoaXMsZjYpLnN0eWxlLmRpc3BsYXk9ZT8iIjoibm9uZSIsc2kodGhpcyxoXykuc3R5bGUuZGlzcGxheT1lPyIiOiJub25lIixzaSh0aGlzLE53KS50b2dn'@; put 'bGUoZSkpfWZpbGxEcm9wZG93bihlLHQ9W10pe3RoaXMucmVtb3ZlQWxsRHJvcGRvd25JdGVtcygpLHNpKHRoaXMseHMpLmN1cnJlbnRseVNlbGVjdGVkSXRlbUluZGV4PTAsQXJyYXkuaXNBcnJheSh0KXx8KHQ9W10pO2xldCByPWU7c2kodGhpcyx4cykuc291cmNlU29ydEZ1bmN0aW9uJiYo'@; put 'cj1zaSh0aGlzLHhzKS5zb3VyY2VTb3J0RnVuY3Rpb24oZS5zbGljZSgpKSksc2kodGhpcyxpMikmJnNpKHRoaXMsZ2QpJiZudWxsIT09c2kodGhpcyxEVCkmJihyLmZvckVhY2goKGksbyk9Pntjb25zdCBhPSJvYmplY3QiPT10eXBlb2YgaSYmbnVsbCE9PWkmJiJ2YWx1ZSJpbiBpP2kudmFs'@; put 'dWU6aTtXZih0aGlzLF9MZSxsTnQpLmNhbGwodGhpcyx7cm9vdERvY3VtZW50OnNpKHRoaXMsaTIpLGl0ZW1LZXk6Im9iamVjdCI9PXR5cGVvZiBpJiZudWxsIT09aSYmImtleSJpbiBpP2kua2V5OnZvaWQgMCxpdGVtVmFsdWU6U3RyaW5nKGE/P2kpLGluZGV4V2l0aGluTGlzdDpvLGNoZWNr'@; put 'ZWQ6YUxlKHQsaSksZGlzYWJsZWQ6c2kodGhpcyx4cykuYXJlQ2hlY2tib3hlc0Rpc2FibGVkfSl9KSxzaSh0aGlzLHhzKS5lbnRyaWVzQ291bnQ9ci5sZW5ndGgsdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckRyb3Bkb3duRmlsbCIpKX11cGRhdGVEaW1lbnNpb25zKGUsdD0hMSl7Y29uc3Qg'@; put 'cj1XZih0aGlzLEdkZSxTTGUpLmNhbGwodGhpcyksaT1XZih0aGlzLGdMZSxvTnQpLmNhbGwodGhpcyxlKSxvPWk/ZS5zcGFjZUFib3ZlOmUuc3BhY2VCZWxvdztpZighdCYmaSYmKHNpKHRoaXMseHMpLmZsaXBwZWRWZXJ0aWNhbGx5PSEwKSxzaSh0aGlzLHhzKS5lbnRyaWVzQ291bnQ+MCYm'@; put 'bzx0aGlzLmdldEhlaWdodCghMCkpe2NvbnN0IGE9TWF0aC5tYXgoTWF0aC5mbG9vcigoby1XZih0aGlzLCRkZSxFTGUpLmNhbGwodGhpcykpL3IpLTEsMSk7c2kodGhpcyx4cykuYWN0dWFsUmVuZGVyZWRJdGVtc0NvdW50PXNpKHRoaXMseHMpLnZpc2libGVSb3dzTnVtYmVyU2V0dGluZz9N'@; put 'YXRoLm1pbihhLHNpKHRoaXMseHMpLnZpc2libGVSb3dzTnVtYmVyU2V0dGluZyk6YX1lbHNlIHNpKHRoaXMseHMpLmFjdHVhbFJlbmRlcmVkSXRlbXNDb3VudD1NYXRoLm1pbihzaSh0aGlzLHhzKS5lbnRyaWVzQ291bnQsc2kodGhpcyx4cykudmlzaWJsZVJvd3NOdW1iZXJTZXR0aW5nPz9z'@; put 'aSh0aGlzLHhzKS5lbnRyaWVzQ291bnQpO3NpKHRoaXMsU3UpJiYoc2kodGhpcyx4cykuYWN0dWFsUmVuZGVyZWRJdGVtc0NvdW50JiZzaSh0aGlzLHhzKS5lbnRyaWVzQ291bnQ+c2kodGhpcyx4cykuYWN0dWFsUmVuZGVyZWRJdGVtc0NvdW50P3NpKHRoaXMsU3UpLnN0eWxlLmhlaWdodD1g'@; put 'JHt0aGlzLmdldEhlaWdodCgpfXB4YDpzaSh0aGlzLFN1KS5zdHlsZS5oZWlnaHQ9IiIsV2YodGhpcyxtTGUsYU50KS5jYWxsKHRoaXMsZSksc2kodGhpcyxTdSkuc2Nyb2xsVG9wPTApfWdldERyb3Bkb3duV2lkdGgoKXtyZXR1cm4gc2kodGhpcyxnZCk/ZnVuY3Rpb24gWE90KHtkcm9wZG93'@; put 'bkxpc3RFbGVtZW50Om59KXtyZXR1cm4gbi5vZmZzZXRXaWR0aH0oe2Ryb3Bkb3duTGlzdEVsZW1lbnQ6c2kodGhpcyxnZCl9KTowfWRlc2VsZWN0QWxsSXRlbXMoKXtzaSh0aGlzLGdkKSYmZnVuY3Rpb24gUU90KHtkcm9wZG93bkxpc3RFbGVtZW50Om59KXtuLnF1ZXJ5U2VsZWN0b3JBbGwo'@; put 'YC4ke1pkZX1gKS5mb3JFYWNoKGU9PmRMZShlKSl9KHtkcm9wZG93bkxpc3RFbGVtZW50OnNpKHRoaXMsZ2QpfSl9Zm9jdXNGaXJzdEl0ZW0oKXtzaSh0aGlzLHhzKS5lbnRyaWVzQ291bnQ+MCYmV2YodGhpcyxBTyx5WikuY2FsbCh0aGlzLDApfWZvY3VzSXRlbShlKXtXZih0aGlzLEFPLHla'@; put 'KS5jYWxsKHRoaXMsZSl9Zm9jdXNQcmV2aW91c0l0ZW0oKXtpZihzaSh0aGlzLGdkKSl7aWYoMD09PXNpKHRoaXMseHMpLmN1cnJlbnRseVNlbGVjdGVkSXRlbUluZGV4KXJldHVybiB2b2lkIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCgpO2hMZSh7ZHJvcGRvd25MaXN0RWxlbWVudDpzaSh0aGlz'@; put 'LGdkKSxpbmRleDpzaSh0aGlzLHhzKS5jdXJyZW50bHlTZWxlY3RlZEl0ZW1JbmRleH0pLFdmKHRoaXMsQU8seVopLmNhbGwodGhpcyxzaSh0aGlzLHhzKS5jdXJyZW50bHlTZWxlY3RlZEl0ZW1JbmRleC0xKX19Zm9jdXNOZXh0SXRlbSgpe3NpKHRoaXMsZ2QpJiZzaSh0aGlzLHhzKS5jdXJy'@; put 'ZW50bHlTZWxlY3RlZEl0ZW1JbmRleCE9PXNpKHRoaXMseHMpLmVudHJpZXNDb3VudC0xJiYoaExlKHtkcm9wZG93bkxpc3RFbGVtZW50OnNpKHRoaXMsZ2QpLGluZGV4OnNpKHRoaXMseHMpLmN1cnJlbnRseVNlbGVjdGVkSXRlbUluZGV4fSksV2YodGhpcyxBTyx5WikuY2FsbCh0aGlzLHNp'@; put 'KHRoaXMseHMpLmN1cnJlbnRseVNlbGVjdGVkSXRlbUluZGV4KzEpKX1mb2N1c1NlYXJjaElucHV0KCl7c2kodGhpcyxPNykmJnNpKHRoaXMsTzcpLmZvY3VzKCl9cmVzZXQoKXt0aGlzLnJlbW92ZUFsbERyb3Bkb3duSXRlbXMoKSxXZih0aGlzLHdMZSxkTnQpLmNhbGwodGhpcyksc2kodGhp'@; put 'cyxPNykmJihzaSh0aGlzLE83KS52YWx1ZT0iIiksc2kodGhpcyxTdSkmJihzaSh0aGlzLFN1KS5zdHlsZS5wb3NpdGlvbj0iIixzaSh0aGlzLFN1KS5zdHlsZS50b3A9IiIsc2kodGhpcyxTdSkuc3R5bGUuaGVpZ2h0PSIiLHNpKHRoaXMsU3UpLnNjcm9sbFRvcD0wKX1pc0ZsaXBwZWRWZXJ0'@; put 'aWNhbGx5KCl7cmV0dXJuIHNpKHRoaXMseHMpLmZsaXBwZWRWZXJ0aWNhbGx5fWdldEhlaWdodChlPSExLHQ9ITEpe2lmKCFzaSh0aGlzLGkyKXx8IXNpKHRoaXMsU3UpKXJldHVybiAwO2NvbnN0IHI9c2kodGhpcyxpMikuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzaSh0aGlzLFN1'@; put 'KSk7cmV0dXJuIFdmKHRoaXMsdkxlLHNOdCkuY2FsbCh0aGlzLGUpK1dmKHRoaXMsJGRlLEVMZSkuY2FsbCh0aGlzKSsoITA9PT10PzIqcGFyc2VJbnQoci5nZXRQcm9wZXJ0eVZhbHVlKCItLWh0LW1lbnUtdmVydGljYWwtcGFkZGluZyIpLDEwKTowKX1nZXRJbnB1dENvbnRyb2xsZXIoKXty'@; put 'ZXR1cm4gc2kodGhpcyxOdyl9cmVtb3ZlQWxsRHJvcGRvd25JdGVtcygpe3NpKHRoaXMsZ2QpJiYoQXJyYXkuZnJvbShzaSh0aGlzLGdkKS5jaGlsZHJlbikuZm9yRWFjaChlPT5XZih0aGlzLGJMZSx1TnQpLmNhbGwodGhpcyxlKSksc2kodGhpcyx4cykuY2hlY2tib3hDaGFuZ2VMaXN0ZW5l'@; put 'cnMuY2xlYXIoKSxzaSh0aGlzLGdkKS5pbm5lckhUTUw9IiIpfWRpc2FibGVDaGVja2JveGVzKCl7c2kodGhpcyx4cykuYXJlQ2hlY2tib3hlc0Rpc2FibGVkPSEwLHNpKHRoaXMsZ2QpJiZmdW5jdGlvbiBlTnQoe2Ryb3Bkb3duTGlzdEVsZW1lbnQ6bn0pe24ucXVlcnlTZWxlY3RvckFsbCgn'@; put 'aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmNoZWNrZWQpJykuZm9yRWFjaChlPT57ZS5kYXRhc2V0LmRpc2FibGVkPSJ0cnVlIn0pfSh7ZHJvcGRvd25MaXN0RWxlbWVudDpzaSh0aGlzLGdkKX0pfWVuYWJsZUNoZWNrYm94ZXMoKXtzaSh0aGlzLHhzKS5hcmVDaGVja2JveGVzRGlzYWJs'@; put 'ZWQ9ITEsc2kodGhpcyxnZCkmJmZ1bmN0aW9uIHROdCh7ZHJvcGRvd25MaXN0RWxlbWVudDpufSl7bi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykuZm9yRWFjaChlPT57ZS5kYXRhc2V0LmRpc2FibGVkPSJmYWxzZSJ9KX0oe2Ryb3Bkb3duTGlzdEVsZW1lbnQ6'@; put 'c2kodGhpcyxnZCl9KX1jb25zdHJ1Y3RvcihlLHQpe2g2KHRoaXMsQU8pLGg2KHRoaXMsZ0xlKSxoNih0aGlzLG1MZSksaDYodGhpcyxHZGUpLGg2KHRoaXMsdkxlKSxoNih0aGlzLCRkZSksaDYodGhpcyxfTGUpLGg2KHRoaXMseUxlKSxoNih0aGlzLGJMZSksaDYodGhpcyx3TGUpLGQ2KHRo'@; put 'aXMsRFQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsU3Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsZ2Qse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsTzcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsaF8se3dy'@; put 'aXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsZjYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsTncse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsaTIse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMsRncse3dyaXRhYmxlOiEw'@; put 'LHZhbHVlOnZvaWQgMH0pLGQ2KHRoaXMseHMse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUwKHRoaXMsRFQsbnVsbCksRTAodGhpcyxTdSxudWxsKSxFMCh0aGlzLGdkLG51bGwpLEUwKHRoaXMsTzcsbnVsbCksRTAodGhpcyxoXyxudWxsKSxFMCh0aGlzLGY2LG51bGwpLEUwKHRoaXMs'@; put 'TncsbnVsbCksRTAodGhpcyxpMixudWxsKSxFMCh0aGlzLEZ3LG5ldyBXMih0aGlzKSksRTAodGhpcyx4cyx7dmlzaWJsZVJvd3NOdW1iZXJTZXR0aW5nOm51bGwsZW50cmllc0NvdW50OjAsZmxpcHBlZFZlcnRpY2FsbHk6ITEsY3VycmVudGx5U2VsZWN0ZWRJdGVtSW5kZXg6MCxjaGVja2Jv'@; put 'eENoYW5nZUxpc3RlbmVyczpuZXcgTWFwLGFyZUNoZWNrYm94ZXNEaXNhYmxlZDohMSxzb3VyY2VTb3J0RnVuY3Rpb246bnVsbH0pLEUwKHRoaXMsU3UsZSksRTAodGhpcyxpMixzaSh0aGlzLFN1KS5vd25lckRvY3VtZW50KSxFMCh0aGlzLERULHQpLHRoaXMuaW5pdCgpfX1mdW5jdGlvbiB5'@; put 'WihuKXtzaSh0aGlzLHhzKS5jdXJyZW50bHlTZWxlY3RlZEl0ZW1JbmRleD1uLHNpKHRoaXMsZ2QpJiZmdW5jdGlvbiBKT3Qoe2Ryb3Bkb3duTGlzdEVsZW1lbnQ6bixpbmRleDplfSl7Y29uc3QgdD1uLmNoaWxkcmVuW2VdO2lmKHQpe2NvbnN0IHI9UlQodCk7ciYmci5mb2N1cygpfX0oe2Ry'@; put 'b3Bkb3duTGlzdEVsZW1lbnQ6c2kodGhpcyxnZCksaW5kZXg6bn0pfWZ1bmN0aW9uIG9OdChuKXtjb25zdHtzcGFjZUFib3ZlOmUsc3BhY2VCZWxvdzp0LGNlbGxIZWlnaHQ6cn09bjtyZXR1cm4gdGhpcy5nZXRIZWlnaHQoITApPnQmJmU+dCtyfWZ1bmN0aW9uIGFOdChuKXtpZighc2kodGhp'@; put 'cyxTdSkpcmV0dXJuO2NvbnN0e2NlbGxIZWlnaHQ6ZX09bjtzaSh0aGlzLHhzKS5mbGlwcGVkVmVydGljYWxseT8oc2kodGhpcyxTdSkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixzaSh0aGlzLFN1KS5zdHlsZS50b3A9LXRoaXMuZ2V0SGVpZ2h0KCExLCEwKS1lLTIrInB4Iik6KHNpKHRo'@; put 'aXMsU3UpLnN0eWxlLnBvc2l0aW9uPSIiLHNpKHRoaXMsU3UpLnN0eWxlLnRvcD0iIil9ZnVuY3Rpb24gU0xlKCl7aWYoIXNpKHRoaXMsaTIpfHwhc2kodGhpcyxTdSkpcmV0dXJuIDA7Y29uc3Qgbj1zaSh0aGlzLGkyKS5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNpKHRoaXMsU3Up'@; put 'KTtyZXR1cm4gMipwYXJzZUludChuLmdldFByb3BlcnR5VmFsdWUoIi0taHQtbWVudS1pdGVtLXZlcnRpY2FsLXBhZGRpbmciKSwxMCkrcGFyc2VJbnQobi5nZXRQcm9wZXJ0eVZhbHVlKCItLWh0LWxpbmUtaGVpZ2h0IiksMTApfWZ1bmN0aW9uIHNOdChuKXtjb25zdCBlPXNpKHRoaXMseHMp'@; put 'LmVudHJpZXNDb3VudDtyZXR1cm4obj9lOnNpKHRoaXMseHMpLmFjdHVhbFJlbmRlcmVkSXRlbXNDb3VudD8/ZSkqV2YodGhpcyxHZGUsU0xlKS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEVMZSgpe2lmKCEoc2kodGhpcyxOdyk/LmVuYWJsZWQmJnNpKHRoaXMsZjYpJiZzaSh0aGlzLGhfKSYmc2ko'@; put 'dGhpcyxpMikmJnNpKHRoaXMsU3UpKSlyZXR1cm4gMDtjb25zdCBuPXNpKHRoaXMsaTIpLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc2kodGhpcyxTdSkpO3JldHVybiBzaSh0aGlzLGY2KS5vZmZzZXRIZWlnaHQrKHNpKHRoaXMsaF8pLm9mZnNldEhlaWdodCsyKnBhcnNlSW50KG4u'@; put 'Z2V0UHJvcGVydHlWYWx1ZSgiLS1odC1tZW51LXZlcnRpY2FsLXBhZGRpbmciKSwxMCkpfWZ1bmN0aW9uIGxOdCh7cm9vdERvY3VtZW50Om4saXRlbUtleTplLGl0ZW1WYWx1ZTp0LGluZGV4V2l0aGluTGlzdDpyLGNoZWNrZWQ6aT0hMSxkaXNhYmxlZDpvPSExfSl7aWYoIXNpKHRoaXMsZ2Qp'@; put 'fHxudWxsPT09c2kodGhpcyxEVCkpcmV0dXJuO2NvbnN0IGE9ZnVuY3Rpb24gbk50KHtyb290RG9jdW1lbnQ6bixpbnN0YW5jZUlkOmUsaXRlbUtleTp0LGl0ZW1WYWx1ZTpyLGluZGV4V2l0aGluTGlzdDppLGNoZWNrZWQ6bz0hMSxkaXNhYmxlZDphPSExfSl7Y29uc3QgbD1uLmNyZWF0ZUVs'@; put 'ZW1lbnQoImxpIiksdT1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGc9bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLEU9bi5jcmVhdGVFbGVtZW50KCJsYWJlbCIpO3JldHVybiBnLmlkPWAke2V9LSR7WU90fSR7aX1gLGcudHlwZT0iY2hlY2tib3giLGcuZGF0YXNldC52YWx1ZT1yLGcuZGF0YXNl'@; put 'dC5pbmRleD1TdHJpbmcoaSksZy5kYXRhc2V0LmRpc2FibGVkPWEmJiFvPyJ0cnVlIjoiZmFsc2UiLHQmJihnLmRhdGFzZXQua2V5PXQpLEUuaHRtbEZvcj1nLmlkLEUudGV4dENvbnRlbnQ9cix1LmFwcGVuZENoaWxkKGcpLHUuYXBwZW5kQ2hpbGQoRSksbC5hcHBlbmRDaGlsZCh1KSxsfSh7'@; put 'cm9vdERvY3VtZW50Om4saW5zdGFuY2VJZDpzaSh0aGlzLERUKSxpdGVtS2V5OmUsaXRlbVZhbHVlOnQsaW5kZXhXaXRoaW5MaXN0OnIsY2hlY2tlZDppLGRpc2FibGVkOm99KTtpJiZ1TGUoYSksV2YodGhpcyx5TGUsY050KS5jYWxsKHRoaXMsYSksc2kodGhpcyxnZCkuYXBwZW5kQ2hpbGQo'@; put 'YSl9ZnVuY3Rpb24gY050KG4pe2NvbnN0IGU9UlQobik7aWYoIWV8fCFzaSh0aGlzLGdkKSlyZXR1cm47Y29uc3QgdD0oKT0+eyJ0cnVlIj09PWUuZGF0YXNldC5kaXNhYmxlZCYmZS5jaGVja2VkP2UuY2hlY2tlZD0hMTplLmNoZWNrZWQ/KHVMZShuKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFm'@; put 'dGVyRHJvcGRvd25JdGVtQ2hlY2tlZCIsZS5kYXRhc2V0LmtleSxlLmRhdGFzZXQudmFsdWUpKTooZExlKG4pLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJEcm9wZG93bkl0ZW1VbmNoZWNrZWQiLGUuZGF0YXNldC5rZXksZS5kYXRhc2V0LnZhbHVlKSl9LHI9aT0+e2NvbnN0IG89QWEoaSk7'@; put 'bz09PWV8fCJ0cnVlIj09PWUuZGF0YXNldC5kaXNhYmxlZHx8IkxBQkVMIj09PW8udGFnTmFtZXx8KGUuY2hlY2tlZD0hZS5jaGVja2VkLGUuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImNoYW5nZSIpKSl9O3NpKHRoaXMseHMpLmNoZWNrYm94Q2hhbmdlTGlzdGVuZXJzLnNldChlLHtjaGFu'@; put 'Z2U6dCxjbGljazpyfSksc2kodGhpcyxGdykuYWRkRXZlbnRMaXN0ZW5lcihlLCJjaGFuZ2UiLHQpLHNpKHRoaXMsRncpLmFkZEV2ZW50TGlzdGVuZXIobiwiY2xpY2siLHIpfWZ1bmN0aW9uIHVOdChuKXtjb25zdCBlPVJUKG4pO2lmKCFlKXJldHVybjtjb25zdCB0PXNpKHRoaXMseHMpLmNo'@; put 'ZWNrYm94Q2hhbmdlTGlzdGVuZXJzLmdldChlKTt0JiYoc2kodGhpcyxGdykucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCJjaGFuZ2UiLHQuY2hhbmdlKSxzaSh0aGlzLEZ3KS5yZW1vdmVFdmVudExpc3RlbmVyKG4sImNsaWNrIix0LmNsaWNrKSxzaSh0aGlzLHhzKS5jaGVja2JveENoYW5nZUxp'@; put 'c3RlbmVycy5kZWxldGUoZSkpfWZ1bmN0aW9uIGROdCgpe3NpKHRoaXMseHMpLnZpc2libGVSb3dzTnVtYmVyU2V0dGluZz1udWxsLHNpKHRoaXMseHMpLmVudHJpZXNDb3VudD0wLHNpKHRoaXMseHMpLmZsaXBwZWRWZXJ0aWNhbGx5PSExLHNpKHRoaXMseHMpLmN1cnJlbnRseVNlbGVjdGVk'@; put 'SXRlbUluZGV4PTAsc2kodGhpcyx4cykuY2hlY2tib3hDaGFuZ2VMaXN0ZW5lcnMuY2xlYXIoKSxzaSh0aGlzLHhzKS5hcmVDaGVja2JveGVzRGlzYWJsZWQ9ITEsc2kodGhpcyx4cykuc291cmNlU29ydEZ1bmN0aW9uPW51bGx9WWwoQ0xlLF9oKTtjbGFzcyBxZGV7c2V0TWF4U2VsZWN0aW9u'@; put 'Q291bnQoZSl7dGhpcy5tYXhTZWxlY3Rpb25zQ291bnQ9ZX1hZGQoZSl7dGhpcy5zZWxlY3RlZEl0ZW1zLnNpemU+PXRoaXMubWF4U2VsZWN0aW9uc0NvdW50fHwoQXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2godD0+dGhpcy5zZWxlY3RlZEl0ZW1zLmFkZCh0KSk6dGhpcy5zZWxlY3RlZEl0'@; put 'ZW1zLmFkZChlKSl9cmVtb3ZlKGUpe2lmKCFiMChlKSlyZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShlKTt7Y29uc3Qgcj1BcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRJdGVtcykuZmluZChpPT5nNyhpLGUpKTtpZih2b2lkIDAhPT1yKXJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMu'@; put 'ZGVsZXRlKHIpLCEwfXJldHVybiExfWhhcyhlKXtyZXR1cm4gYUxlKHRoaXMuZ2V0SXRlbXNBcnJheSgpLGUpfWNsZWFyKCl7dGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCl9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc2l6ZX1nZXRJdGVtc0FycmF5KCl7cmV0dXJuIEFy'@; put 'cmF5LmZyb20odGhpcy5zZWxlY3RlZEl0ZW1zKX1jb25zdHJ1Y3RvcihlKXt0aGlzLnNlbGVjdGVkSXRlbXM9QXJyYXkuaXNBcnJheShlKT9uZXcgU2V0KGUpOm5ldyBTZXQsdGhpcy5tYXhTZWxlY3Rpb25zQ291bnQ9MS8wfX1mdW5jdGlvbiBNTGUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBu'@; put 'ZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFRMZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxk'@; put 'IG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBVaChuLGUpe3JldHVybiBmdW5jdGlvbiBoTnQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFRMZShuLGUsImdldCIpKX1mdW5jdGlvbiB4TGUobixlLHQpe01MZShuLGUpLGUuc2V0'@; put 'KG4sdCl9ZnVuY3Rpb24ga08obixlLHQpe3JldHVybiBmdW5jdGlvbiBmTnQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZh'@; put 'bHVlPXR9fShuLFRMZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gWmwobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gWWYobixlKXtNTGUobixl'@; put 'KSxlLmFkZChuKX1jb25zdCBBTGU9Im11bHRpc2VsZWN0IixLZGU9Im11bHRpc2VsZWN0RWRpdG9yIjt2YXIgbzI9bmV3IFdlYWtNYXAseDQ9bmV3IFdlYWtNYXAsUk89bmV3IFdlYWtTZXQsa0xlPW5ldyBXZWFrU2V0LFJMZT1uZXcgV2Vha1NldCxJTGU9bmV3IFdlYWtTZXQsRExlPW5ldyBX'@; put 'ZWFrU2V0LGJaPW5ldyBXZWFrU2V0LFhkZT1uZXcgV2Vha1NldCxRZGU9bmV3IFdlYWtTZXQsSmRlPW5ldyBXZWFrU2V0LGVoZT1uZXcgV2Vha1NldCxMTGU9bmV3IFdlYWtTZXQsT0xlPW5ldyBXZWFrU2V0LHRoZT1uZXcgV2Vha1NldCxYcD1uZXcgV2Vha1NldCxOTGU9bmV3IFdlYWtTZXQ7'@; put 'Y2xhc3MgRkxlIGV4dGVuZHMgSTd7c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiBBTGV9Y3JlYXRlRWxlbWVudHMoKXtjb25zdHtyb290RG9jdW1lbnQ6ZX09dGhpcy5ob3Q7a08odGhpcyx4NCxlLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxVaCh0aGlzLHg0KS5zdHlsZS5kaXNwbGF5'@; put 'PSJub25lIixZcihVaCh0aGlzLHg0KSwiaGFuZHNvbnRhYmxlRWRpdG9yIiksdGhpcy5kcm9wZG93bkNvbnRhaW5lckVsZW1lbnQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFlyKHRoaXMuZHJvcGRvd25Db250YWluZXJFbGVtZW50LCJodC1tdWx0aS1zZWxl'@; put 'Y3QtZWRpdG9yIGhhbmRzb250YWJsZUVkaXRvciIpLEtvKHRoaXMuZHJvcGRvd25Db250YWluZXJFbGVtZW50LFtOMygiU2VsZWN0IG9wdGlvbnMiKSxbInJvbGUiLCJncm91cCJdXSksVWgodGhpcyx4NCkuYXBwZW5kQ2hpbGQodGhpcy5kcm9wZG93bkNvbnRhaW5lckVsZW1lbnQpLHRoaXMu'@; put 'aG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKFVoKHRoaXMseDQpKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlcj1uZXcgQ0xlKHRoaXMuZHJvcGRvd25Db250YWluZXJFbGVtZW50LHRoaXMuaG90Lmd1aWQpfXByZXBhcmUoZSx0LHIsaSxvLGEpe3N1cGVyLnByZXBhcmUoZSx0LHIsaSxvLGEp'@; put 'O2NvbnN0IGw9ZnVuY3Rpb24gT090KG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmYnNlKG4pP0pTT04ucGFyc2Uobik6bn0obyksZz1mdW5jdGlvbiBOT3QobixlKXtyZXR1cm4gRXhlKG4sZSwodCxyKT0+SlNPTi5zdHJpbmdpZnkodCk9PT1KU09OLnN0cmluZ2lmeShyKSl9KEFycmF5'@; put 'LmlzQXJyYXkobCk/bDpbbF0sWmwodGhpcyxSTyx3WikuY2FsbCh0aGlzKSk7dGhpcy5kcm9wZG93bkNvbnRyb2xsZXIucmVzZXQoKSxnLmxlbmd0aD49WmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJtYXhTZWxlY3Rpb25zIikmJlpsKHRoaXMsYlosbmhlKS5jYWxsKHRoaXMpLFpsKHRoaXMs'@; put 'dGhlLGpMZSkuY2FsbCh0aGlzLGcpLHRoaXMuZHJvcGRvd25Db250cm9sbGVyLnNldFNvdXJjZVNvcnRGdW5jdGlvbihabCh0aGlzLFhwLGhtKS5jYWxsKHRoaXMsInNvdXJjZVNvcnRGdW5jdGlvbiIpPz9udWxsKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlci5maWxsRHJvcGRvd24oWmwodGhp'@; put 'cyxSTyx3WikuY2FsbCh0aGlzKSxnKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlci5zZXRWaXNpYmxlUm93c051bWJlclNldHRpbmcoWmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJ2aXNpYmxlUm93cyIpKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlci5zZXRTZWFyY2hJbnB1dFZpc2liaWxpdHko'@; put 'WmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJzZWFyY2hJbnB1dCIpKSx2b2lkIDAhPT1hLm1heFNlbGVjdGlvbnMmJlVoKHRoaXMsbzIpLnNldE1heFNlbGVjdGlvbkNvdW50KFpsKHRoaXMsWHAsaG0pLmNhbGwodGhpcywibWF4U2VsZWN0aW9ucyIpKX1maW5pc2hFZGl0aW5nKGUsdCxyKXtz'@; put 'dXBlci5maW5pc2hFZGl0aW5nKGUsdCxyKX1iaW5kRXZlbnRzKCl7dGhpcy5kcm9wZG93bkNvbnRyb2xsZXIuYWRkTG9jYWxIb29rKCJhZnRlckRyb3Bkb3duSXRlbUNoZWNrZWQiLChlLHQpPT57WmwodGhpcyxMTGUsd050KS5jYWxsKHRoaXMsZSx0KSxVaCh0aGlzLG8yKS5nZXRTaXplKCk+'@; put 'PVpsKHRoaXMsWHAsaG0pLmNhbGwodGhpcywibWF4U2VsZWN0aW9ucyIpJiZabCh0aGlzLGJaLG5oZSkuY2FsbCh0aGlzKX0pLHRoaXMuZHJvcGRvd25Db250cm9sbGVyLmFkZExvY2FsSG9vaygiYWZ0ZXJEcm9wZG93bkl0ZW1VbmNoZWNrZWQiLChlLHQpPT57WmwodGhpcyxPTGUsQ050KS5j'@; put 'YWxsKHRoaXMsZSx0KSxVaCh0aGlzLG8yKS5nZXRTaXplKCk8WmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJtYXhTZWxlY3Rpb25zIikmJlpsKHRoaXMsWGRlLFBMZSkuY2FsbCh0aGlzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJEZXN0cm95IiwoKT0+dGhpcy5kZXN0cm95KCkpLHRoaXMuYWRk'@; put 'SG9vaygiYWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIiwoZSx0KT0+WmwodGhpcyxOTGUsU050KS5jYWxsKHRoaXMsZSx0KSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9s'@; put 'bFZlcnRpY2FsbHkiLCgpPT50aGlzLnJlZnJlc2hEaW1lbnNpb25zKCkpLHRoaXMuZHJvcGRvd25Db250cm9sbGVyLmdldElucHV0Q29udHJvbGxlcigpLmFkZExvY2FsSG9vaygidHJpZ2dlckZpbHRlciIsZT0+WmwodGhpcyxRZGUsSExlKS5jYWxsKHRoaXMsZSkpfW9wZW4oZSl7Y29uc3Qg'@; put 'dD1lJiYia2V5Q29kZSJpbiBlP2Uua2V5Q29kZTowLHI9ZSYmImtleSJpbiBlP2Uua2V5OiIiO2lmKHQmJlBzZSh0KSl7Y29uc3QgaT0xPT09ci5sZW5ndGg/cjpTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3RoaXMuZHJvcGRvd25Db250cm9sbGVyLmdldElucHV0Q29udHJvbGxlcigpLmVuYWJs'@; put 'ZWQmJih0aGlzLmRyb3Bkb3duQ29udHJvbGxlci5nZXRJbnB1dENvbnRyb2xsZXIoKS5zZXRWYWx1ZShpKSxabCh0aGlzLFFkZSxITGUpLmNhbGwodGhpcyxpKSksZT8ucHJldmVudERlZmF1bHQoKSx0aGlzLmVuYWJsZUZ1bGxFZGl0TW9kZSgpfVpsKHRoaXMsSUxlLHlOdCkuY2FsbCh0aGlz'@; put 'KSx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImVkaXRvciIpLFpsKHRoaXMsa0xlLHZOdCkuY2FsbCh0aGlzKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlci5nZXRJbnB1dENvbnRyb2xsZXIoKS5saXN0'@; put 'ZW4oKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlci51cGRhdGVEaW1lbnNpb25zKFpsKHRoaXMsSmRlLFZMZSkuY2FsbCh0aGlzKSl9Y2xvc2UoKXtabCh0aGlzLERMZSxiTnQpLmNhbGwodGhpcyksWmwodGhpcyxSTGUsX050KS5jYWxsKHRoaXMpLHRoaXMuZHJvcGRvd25Db250cm9sbGVyLmdl'@; put 'dElucHV0Q29udHJvbGxlcigpLnVubGlzdGVuKCl9Z2V0VmFsdWUoKXtyZXR1cm4gVWgodGhpcyxvMikuZ2V0SXRlbXNBcnJheSgpfXNldFZhbHVlKCl7fXJlZnJlc2hEaW1lbnNpb25zKCl7aWYoIXRoaXMuZ2V0RWRpdGVkQ2VsbCgpKXJldHVybiB2b2lkIHRoaXMuY2xvc2UoKTtjb25zdHt0'@; put 'b3A6ZSxzdGFydDp0LGhlaWdodDpyfT10aGlzLmdldEVkaXRlZENlbGxSZWN0KCksaT1VaCh0aGlzLHg0KS5zdHlsZTtpLnRvcD1gJHtlK3J9cHhgLGlbdGhpcy5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il09YCR7dH1weGAsWXIoVWgodGhpcyx4NCksImh0X2VkaXRvcl92aXNpYmxlIil9'@; put 'Zm9jdXMoKXshMT09PVpsKHRoaXMsWHAsaG0pLmNhbGwodGhpcywic2VhcmNoSW5wdXQiKT90aGlzLmRyb3Bkb3duQ29udHJvbGxlci5mb2N1c0ZpcnN0SXRlbSgpOnRoaXMuZHJvcGRvd25Db250cm9sbGVyLmZvY3VzU2VhcmNoSW5wdXQoKX1nZXRJbnB1dEVsZW1lbnQoKXtyZXR1cm4gdGhp'@; put 'cy5kcm9wZG93bkNvbnRyb2xsZXIuZ2V0SW5wdXRDb250cm9sbGVyKCkuZ2V0SW5wdXRFbGVtZW50KCl9ZGVzdHJveSgpe3RoaXMuY2xvc2UoKSx0aGlzLmRyb3Bkb3duQ29udHJvbGxlci5yZXNldCgpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLFlmKHRoaXMsUk8pLFlmKHRoaXMsa0xlKSxZ'@; put 'Zih0aGlzLFJMZSksWWYodGhpcyxJTGUpLFlmKHRoaXMsRExlKSxZZih0aGlzLGJaKSxZZih0aGlzLFhkZSksWWYodGhpcyxRZGUpLFlmKHRoaXMsSmRlKSxZZih0aGlzLGVoZSksWWYodGhpcyxMTGUpLFlmKHRoaXMsT0xlKSxZZih0aGlzLHRoZSksWWYodGhpcyxYcCksWWYodGhpcyxOTGUp'@; put 'LHhMZSh0aGlzLG8yLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx4TGUodGhpcyx4NCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5fY2xvc2VBZnRlckRhdGFDaGFuZ2U9ITEsa08odGhpcyxvMixuZXcgcWRlKSxrTyh0aGlzLHg0LG51bGwpLHRoaXMuZHJvcGRvd25Db250'@; put 'YWluZXJFbGVtZW50PW51bGwsdGhpcy5kcm9wZG93bkNvbnRyb2xsZXI9bnVsbCx0aGlzLmV2ZW50TWFuYWdlcj1uZXcgVzIodGhpcyksdGhpcy5jcmVhdGVFbGVtZW50cygpLHRoaXMuYmluZEV2ZW50cygpfX1mdW5jdGlvbiB3Wigpe3JldHVybiB0aGlzLmNlbGxQcm9wZXJ0aWVzLnNvdXJj'@; put 'ZT8/W119ZnVuY3Rpb24gdk50KCl7Y29uc3QgZT10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKTtlLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazooKT0+e3RoaXMuZHJvcGRvd25Db250cm9sbGVyLmZvY3VzUHJldmlv'@; put 'dXNJdGVtKCl9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6KCk9Pnt0aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuZ2V0SW5wdXRFbGVtZW50KCk/dGhpcy5kcm9wZG93bkNvbnRyb2xsZXIuZm9jdXNGaXJzdEl0ZW0oKTp0aGlzLmRyb3Bkb3duQ29u'@; put 'dHJvbGxlci5mb2N1c05leHRJdGVtKCl9fV0se2dyb3VwOktkZX0pLGUuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJlbnRlciJdLFsic2hpZnQiLCJlbnRlciJdLFsiY29udHJvbC9tZXRhIiwiZW50ZXIiXSxbImNvbnRyb2wvbWV0YSIsInNoaWZ0IiwiZW50ZXIiXV0scnVuT25seUlmOigpPT4h'@; put 'WmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJlbnRlckNvbW1pdHMiKSxjYWxsYmFjazp0PT57Y29uc3Qgcj10aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gciBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQmJiJjaGVja2JveCI9PT1yLnR5cGUmJihyLmNoZWNr'@; put 'ZWQ9IXIuY2hlY2tlZCxyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJjaGFuZ2UiKSkpLHQucHJldmVudERlZmF1bHQoKSwhMX19LHtrZXlzOltbInNwYWNlIl1dLHJ1bk9ubHlJZjooKT0+IVpsKHRoaXMsWHAsaG0pLmNhbGwodGhpcywiZW50ZXJDb21taXRzIiksY2FsbGJhY2s6dD0+e3Qu'@; put 'cHJldmVudERlZmF1bHQoKX19XSx7Z3JvdXA6S2RlLHJlbGF0aXZlVG9Hcm91cDpSNyxwb3NpdGlvbjoiYmVmb3JlIn0pfWZ1bmN0aW9uIF9OdCgpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoS2RlKX1m'@; put 'dW5jdGlvbiB5TnQoKXtVaCh0aGlzLHg0KS5zdHlsZS5kaXNwbGF5PSIifWZ1bmN0aW9uIGJOdCgpe1VoKHRoaXMseDQpLnN0eWxlLmRpc3BsYXk9Im5vbmUifWZ1bmN0aW9uIG5oZSgpe3RoaXMuZHJvcGRvd25Db250cm9sbGVyLmRpc2FibGVDaGVja2JveGVzKCl9ZnVuY3Rpb24gUExlKCl7'@; put 'dGhpcy5kcm9wZG93bkNvbnRyb2xsZXIuZW5hYmxlQ2hlY2tib3hlcygpfWZ1bmN0aW9uIEhMZShuLGU9WmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJmaWx0ZXJTZWxlY3RlZEl0ZW1zIik/PyEwKXtjb25zdCB0PVpsKHRoaXMsUk8sd1opLmNhbGwodGhpcykuZmlsdGVyKHI9Pntjb25zdCBp'@; put 'PSJvYmplY3QiPT10eXBlb2YgciYmbnVsbCE9PXImJiJ2YWx1ZSJpbiByP3IudmFsdWU6cjtyZXR1cm4hKGV8fCFVaCh0aGlzLG8yKS5oYXMocikpfHwodGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXJpbmdDYXNlU2Vuc2l0aXZlP1N0cmluZyhpKS5pbmNsdWRlcyhuKTpTdHJpbmcoaSkudG9M'@; put 'b3dlckNhc2UoKS5pbmNsdWRlcyhuLnRvTG93ZXJDYXNlKCkpKX0pO3RoaXMuZHJvcGRvd25Db250cm9sbGVyLmZpbGxEcm9wZG93bih0LFVoKHRoaXMsbzIpLmdldEl0ZW1zQXJyYXkoKSksdGhpcy5kcm9wZG93bkNvbnRyb2xsZXIudXBkYXRlRGltZW5zaW9ucyhabCh0aGlzLEpkZSxWTGUp'@; put 'LmNhbGwodGhpcyksITApfWZ1bmN0aW9uIFZMZSgpe2NvbnN0IG49dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpLGU9dGhpcy5ob3Qudmlldy5pc1ZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3coKSx0PXRoaXMuaG90LnZpZXcuZ2V0V29ya3NwYWNlSGVpZ2h0KCk7bGV0IHI9bi50b3A7aWYo'@; put 'ZSl7Y29uc3Qgbz10aGlzLmhvdC52aWV3LmdldFRhYmxlT2Zmc2V0KCkudG9wLXRoaXMuaG90LnJvb3RXaW5kb3cuc2Nyb2xsWTtyPU1hdGgubWF4KHIrbywwKX1yZXR1cm57c3BhY2VBYm92ZTpyLHNwYWNlQmVsb3c6dC1yLW4uaGVpZ2h0LGNlbGxIZWlnaHQ6bi5oZWlnaHR9fWZ1bmN0aW9u'@; put 'IEJMZSgpe2NvbnN0IG49VWgodGhpcyxvMikuZ2V0SXRlbXNBcnJheSgpO3RoaXMuc2F2ZVZhbHVlKFtbbl1dKX1mdW5jdGlvbiB3TnQobixlKXtuP1VoKHRoaXMsbzIpLmFkZCh7a2V5Om4sdmFsdWU6ZX0pOlVoKHRoaXMsbzIpLmFkZChlKSxabCh0aGlzLGVoZSxCTGUpLmNhbGwodGhpcyks'@; put 'dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfWZ1bmN0aW9uIENOdChuLGUpe24/VWgodGhpcyxvMikucmVtb3ZlKHtrZXk6bix2YWx1ZTplfSk6VWgodGhpcyxvMikucmVtb3ZlKGUpLFpsKHRoaXMsZWhlLEJMZSkuY2FsbCh0aGlzKSx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCl9ZnVuY3Rpb24g'@; put 'akxlKG4pe2tPKHRoaXMsbzIsbi5sZW5ndGg+MD9uZXcgcWRlKG4pOm5ldyBxZGUpfWZ1bmN0aW9uIGhtKG4pe3JldHVybiB0aGlzLmNlbGxQcm9wZXJ0aWVzW25dfWZ1bmN0aW9uIFNOdChuLGUpe3RoaXMuaXNPcGVuZWQoKSYmZT09PWAke0FMZX0tcmVuZGVyZXJgJiZwYXJzZUludChTdHJp'@; put 'bmcoblswXVswXSksMTApPT09dGhpcy5jZWxsUHJvcGVydGllcy52aXN1YWxSb3cmJnBhcnNlSW50KFN0cmluZyhuWzBdWzFdKSwxMCk9PT10aGlzLmNlbGxQcm9wZXJ0aWVzLnZpc3VhbENvbCYmKFpsKHRoaXMsdGhlLGpMZSkuY2FsbCh0aGlzLG5bMF1bM10pLHRoaXMuZHJvcGRvd25Db250'@; put 'cm9sbGVyLmZpbGxEcm9wZG93bihabCh0aGlzLFJPLHdaKS5jYWxsKHRoaXMpLFVoKHRoaXMsbzIpLmdldEl0ZW1zQXJyYXkoKSksdGhpcy5kcm9wZG93bkNvbnRyb2xsZXIuZm9jdXNJdGVtKDApLFVoKHRoaXMsbzIpLmdldFNpemUoKT49WmwodGhpcyxYcCxobSkuY2FsbCh0aGlzLCJtYXhT'@; put 'ZWxlY3Rpb25zIik/WmwodGhpcyxiWixuaGUpLmNhbGwodGhpcyk6WmwodGhpcyxYZGUsUExlKS5jYWxsKHRoaXMpKX1mdW5jdGlvbiByaGUobixlLHQscixpLG8sYSl7XzcoZSxvPz8iIiwhMSl9ZnVuY3Rpb24gSU8obixlLHQscixpLG8sYSl7Y29uc3R7cm9vdERvY3VtZW50Omx9PW4sdT1h'@; put 'LmFsbG93SHRtbD9yaGU6RDcsZz1sLmNyZWF0ZUVsZW1lbnQoIkRJViIpLEU9bi5nZXRTZXR0aW5ncygpLmFyaWFUYWdzO2lmKGcuY2xhc3NOYW1lPSJodEF1dG9jb21wbGV0ZUFycm93IixFJiZnLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksZy5hcHBlbmRDaGlsZChsLmNy'@; put 'ZWF0ZVRleHROb2RlKCJcdTI1YmMiKSksdS5hcHBseSh0aGlzLFtuLGUsdCxyLGksbyxhXSksZS5maXJzdENoaWxkfHxlLmFwcGVuZENoaWxkKGwuY3JlYXRlVGV4dE5vZGUoIlx4YTAiKSksZS5pbnNlcnRCZWZvcmUoZyxlLmZpcnN0Q2hpbGQpLFlyKGUsImh0QXV0b2NvbXBsZXRlIiksIW4u'@; put 'YWNBcnJvd0xpc3RlbmVyKXtjb25zdCBPPW5ldyBXMihuKTtuLmFjQXJyb3dMaXN0ZW5lcj1mdW5jdGlvbihaKXtMYShBYShaKSwiaHRBdXRvY29tcGxldGVBcnJvdyIpJiZuLnZpZXcuX3d0LmdldFNldHRpbmcoIm9uQ2VsbERibENsaWNrIixudWxsLG4uX2NyZWF0ZUNlbGxDb29yZHModCxy'@; put 'KSxlKX0sTy5hZGRFdmVudExpc3RlbmVyKG4ucm9vdEVsZW1lbnQsIm1vdXNlZG93biIsbi5hY0Fycm93TGlzdGVuZXIpLG4uYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsKCk9PntPLmRlc3Ryb3koKX0pfX1mdW5jdGlvbiBpaGUobixlLHQscixpLG8sYSl7SU8uYXBwbHkodGhpcyxbbixl'@; put 'LHQscixpLG8sYV0pfXJoZS5SRU5ERVJFUl9UWVBFPSJodG1sIixJTy5SRU5ERVJFUl9UWVBFPSJhdXRvY29tcGxldGUiLGloZS5SRU5ERVJFUl9UWVBFPSJkcm9wZG93biI7Y29uc3QgRE89IiNiYWQtdmFsdWUjIixRcD0iaHQtbG9hZGluZyIsVUxlPW5ldyBXZWFrTWFwLHpMZT1uZXcgV2Vh'@; put 'a01hcCxMVD0iZGF0YS1yb3ciLE9UPSJkYXRhLWNvbCI7ZnVuY3Rpb24gb2hlKG4sZSx0LHIsaSxvLGEpe2NvbnN0e3Jvb3REb2N1bWVudDpsfT1uLHU9bi5nZXRTZXR0aW5ncygpLmFyaWFUYWdzOyFmdW5jdGlvbiBSTnQobil7bGV0IGU9ekxlLmdldChuKTtpZighZSl7Y29uc3R7cm9vdEVs'@; put 'ZW1lbnQ6dH09bjtlPW5ldyBXMihuKSxlLmFkZEV2ZW50TGlzdGVuZXIodCwiY2xpY2siLHI9PmZ1bmN0aW9uIE9OdChuLGUpe2NvbnN0IHQ9QWEobik7aWYoIWFoZSh0KXx8IXQuaGFzQXR0cmlidXRlKExUKXx8IXQuaGFzQXR0cmlidXRlKE9UKSlyZXR1cm47Y29uc3Qgcj1OdW1iZXIucGFy'@; put 'c2VJbnQodC5nZXRBdHRyaWJ1dGUoTFQpLDEwKSxpPU51bWJlci5wYXJzZUludCh0LmdldEF0dHJpYnV0ZShPVCksMTApO2UuZ2V0Q2VsbE1ldGEocixpKS5yZWFkT25seSYmbi5wcmV2ZW50RGVmYXVsdCgpfShyLG4pKSxlLmFkZEV2ZW50TGlzdGVuZXIodCwibW91c2V1cCIscj0+ZnVuY3Rp'@; put 'b24gTE50KG4sZSl7Y29uc3QgdD1BYShuKTthaGUodCkmJighdC5oYXNBdHRyaWJ1dGUoTFQpfHwhdC5oYXNBdHRyaWJ1dGUoT1QpfHxzZXRUaW1lb3V0KGUubGlzdGVuLDEwKSl9KHIsbikpLGUuYWRkRXZlbnRMaXN0ZW5lcih0LCJjaGFuZ2UiLHI9PmZ1bmN0aW9uIE5OdChuLGUpe2NvbnN0'@; put 'IHQ9QWEobik7aWYoIWFoZSh0KXx8IXQuaGFzQXR0cmlidXRlKExUKXx8IXQuaGFzQXR0cmlidXRlKE9UKSlyZXR1cm47Y29uc3Qgcj1OdW1iZXIucGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoTFQpLDEwKSxpPU51bWJlci5wYXJzZUludCh0LmdldEF0dHJpYnV0ZShPVCksMTApLG89ZS5nZXRD'@; put 'ZWxsTWV0YShyLGkpO2lmKCFvLnJlYWRPbmx5KXtsZXQgYT1udWxsO2E9dC5jaGVja2VkP3ZvaWQgMD09PW8udW5jaGVja2VkVGVtcGxhdGV8fG8uY2hlY2tlZFRlbXBsYXRlOnZvaWQgMCE9PW8udW5jaGVja2VkVGVtcGxhdGUmJm8udW5jaGVja2VkVGVtcGxhdGUsZS5zZXREYXRhQXRDZWxs'@; put 'KHIsaSxhKX19KHIsbikpLHpMZS5zZXQobixlKX19KG4pO2NvbnN0IGc9ZnVuY3Rpb24gSU50KG4pe2NvbnN0IGU9bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBlLmNsYXNzTmFtZT0iaHRDaGVja2JveFJlbmRlcmVySW5wdXQiLGUudHlwZT0iY2hlY2tib3giLGUuc2V0QXR0cmli'@; put 'dXRlKCJ0YWJpbmRleCIsIi0xIiksZS5jbG9uZU5vZGUoITEpfShsKTtsZXQgRT1nO2NvbnN0IE89YS5sYWJlbDtsZXQgWj0hMTt0eXBlb2YgYS5jaGVja2VkVGVtcGxhdGU+InUiJiYoYS5jaGVja2VkVGVtcGxhdGU9ITApLHR5cGVvZiBhLnVuY2hlY2tlZFRlbXBsYXRlPiJ1IiYmKGEudW5j'@; put 'aGVja2VkVGVtcGxhdGU9ITEpLEM0KGUpO2NvbnN0IGVlPWEubG9jYWxlO2Z1bmN0aW9uIFdlKEN0PSExKXtjb25zdCBBdD1uLmdldFNlbGVjdGVkUmFuZ2UoKSxLdD1bXSxxdD1uZXcgTWFwO2xldCBnbj1bXSxUbj0wO2lmKEF0KXtmb3IobGV0IENuPTA7Q248QXQubGVuZ3RoO0NuKyspe2Nv'@; put 'bnN0e3Jvdzpxcixjb2w6JG59PUF0W0NuXS5nZXRUb3BTdGFydENvcm5lcigpLHtyb3c6VHIsY29sOnJpfT1BdFtDbl0uZ2V0Qm90dG9tRW5kQ29ybmVyKCk7aWYobnVsbCE9PXFyJiZudWxsIT09JG4mJm51bGwhPT1UciYmbnVsbCE9PXJpKXtmb3IobGV0IGZuPXFyO2ZuPD1Ucjtmbis9MSlm'@; put 'b3IobGV0IHlyPSRuO3lyPD1yaTt5cis9MSl7Y29uc3QgQW49bi5nZXRDZWxsTWV0YShmbix5cik7aWYoQW4uaGlkZGVuKWNvbnRpbnVlO2NvbnN0IEhyPXtjaGVja2VkVGVtcGxhdGU6QW4uY2hlY2tlZFRlbXBsYXRlLHVuY2hlY2tlZFRlbXBsYXRlOkFuLnVuY2hlY2tlZFRlbXBsYXRlfTtp'@; put 'ZigiY2hlY2tib3giIT09QW4udHlwZSl7ITA9PT1DdCYmIUFuLnJlYWRPbmx5JiYocXQuaGFzKEt0Lmxlbmd0aCk/cXQuc2V0KEt0Lmxlbmd0aCxbLi4ucXQuZ2V0KEt0Lmxlbmd0aCksW2ZuLHlyLG51bGxdXSk6cXQuc2V0KEt0Lmxlbmd0aCxbW2ZuLHlyLG51bGxdXSkpO2NvbnRpbnVlfWlm'@; put 'KCEwPT09QW4ucmVhZE9ubHkpY29udGludWU7dHlwZW9mIEFuLmNoZWNrZWRUZW1wbGF0ZT4idSImJihBbi5jaGVja2VkVGVtcGxhdGU9ITApLHR5cGVvZiBBbi51bmNoZWNrZWRUZW1wbGF0ZT4idSImJihBbi51bmNoZWNrZWRUZW1wbGF0ZT0hMSk7Y29uc3QgdGk9bi5nZXREYXRhQXRDZWxs'@; put 'KGZuLHlyKTshMT09PUN0P1tBbi5jaGVja2VkVGVtcGxhdGUsU3RyaW5nKEFuLmNoZWNrZWRUZW1wbGF0ZSldLmluY2x1ZGVzKHRpKT9nbi5wdXNoKFtmbix5cixBbi51bmNoZWNrZWRUZW1wbGF0ZSxIcl0pOltBbi51bmNoZWNrZWRUZW1wbGF0ZSxTdHJpbmcoQW4udW5jaGVja2VkVGVtcGxh'@; put 'dGUpLG51bGwsdm9pZCAwXS5pbmNsdWRlcyh0aSkmJmduLnB1c2goW2ZuLHlyLEFuLmNoZWNrZWRUZW1wbGF0ZSxIcl0pOmduLnB1c2goW2ZuLHlyLEFuLnVuY2hlY2tlZFRlbXBsYXRlLEhyXSksVG4rPTF9S3QucHVzaChUbiksVG49MH19aWYoZ249Z24uZXZlcnkoKFssLENuXSk9PkNuPT09'@; put 'Z25bMF1bMl0pP2duLm1hcCgoW0NuLHFyLCRuXSk9PltDbixxciwkbl0pOmduLm1hcCgoW0NuLHFyLCwkbl0pPT5bQ24scXIsJG4/LmNoZWNrZWRUZW1wbGF0ZV0pLGduLmxlbmd0aD4wKXtjb25zdCBDbj1bXTtpZihLdC5mb3JFYWNoKChxciwkbik9PntsZXQgVHI9Z24uc3BsaWNlKDAscXIp'@; put 'O2lmKHF0LnNpemUmJnF0Lmhhcygkbikpe2NvbnN0IHJpPXF0LmdldCgkbik/P1tdO1RyPVsuLi5UciwuLi5yaV19Q24ucHVzaChUcil9KSxDdCl7Y29uc3QgcXI9W107Q24uZm9yRWFjaCgkbj0+eyRuLmZvckVhY2goVHI9Pntxci5wdXNoKFRyKX0pfSkscXIubGVuZ3RoPjAmJm4uc2V0RGF0'@; put 'YUF0Q2VsbChxcil9ZWxzZSBDbi5mb3JFYWNoKHFyPT57cXIubGVuZ3RoPjAmJm4uc2V0RGF0YUF0Q2VsbChxcil9KX19fWZ1bmN0aW9uIGF0KCl7Y29uc3QgQ3Q9bi5nZXRTZWxlY3RlZFJhbmdlKCk7aWYoQ3Qpe2ZvcihsZXQgQXQ9MDtBdDxDdC5sZW5ndGg7QXQrKyl7Y29uc3QgS3Q9Q3Rb'@; put 'QXRdLmdldFRvcFN0YXJ0Q29ybmVyKCkscXQ9Q3RbQXRdLmdldEJvdHRvbUVuZENvcm5lcigpO2lmKG51bGwhPT1LdC5yb3cmJm51bGwhPT1LdC5jb2wmJm51bGwhPT1xdC5yb3cmJm51bGwhPT1xdC5jb2wpZm9yKGxldCBnbj1LdC5yb3c7Z248PXF0LnJvdztnbisrKWZvcihsZXQgVG49S3Qu'@; put 'Y29sO1RuPD1xdC5jb2w7VG4rKyl7aWYobi5nZXRDZWxsTWV0YShnbixUbikucmVhZE9ubHkpY29udGludWU7Y29uc3QgcXI9bi5nZXRDZWxsKGduLFRuKTtpZihocyhxcikmJnFyLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W3R5cGU9Y2hlY2tib3hdIikubGVuZ3RoPjApcmV0dXJuITB9fXJl'@; put 'dHVybiExfX0oZnVuY3Rpb24gdmUoKXtvPT09YS5jaGVja2VkVGVtcGxhdGV8fHYxKFBsKG8pLGVlKT09PXYxKFBsKGEuY2hlY2tlZFRlbXBsYXRlKSxlZSk/Zy5jaGVja2VkPSEwOm89PT1hLnVuY2hlY2tlZFRlbXBsYXRlfHx2MShQbChvKSxlZSk9PT12MShQbChhLnVuY2hlY2tlZFRlbXBs'@; put 'YXRlKSxlZSk/Zy5jaGVja2VkPSExOkFsKG8pP1lyKGcsIm5vVmFsdWUiKTooZy5zdHlsZS5kaXNwbGF5PSJub25lIixZcihnLCJodEJhZFZhbHVlIiksWj0hMCksS28oZyxbW0xULHRdLFtPVCxyXV0pLHUmJktvKGcsW04zKG4uZ2V0VHJhbnNsYXRlZFBocmFzZShnLmNoZWNrZWQ/U3VlOkV1'@; put 'ZSkpLHl4ZShnLmNoZWNrZWQpLFsicm9sZSIsImNoZWNrYm94Il1dKX0pKCksZnVuY3Rpb24gTWUoKXtpZighWiYmTyl7bGV0IEN0PSIiO2lmKE8udmFsdWUpQ3Q9U3RyaW5nKCJmdW5jdGlvbiI9PXR5cGVvZiBPLnZhbHVlPygwLE8udmFsdWUpKHQscixpLG8pOk8udmFsdWUpO2Vsc2UgaWYo'@; put 'Ty5wcm9wZXJ0eSl7Y29uc3QgS3Q9bi5nZXREYXRhQXRSb3dQcm9wKHQsU3RyaW5nKE8ucHJvcGVydHkpKTtDdD1udWxsIT09S3Q/U3RyaW5nKEt0KToiIn1jb25zdCBBdD1mdW5jdGlvbiBETnQobixlLHQpe2NvbnN0IHI9bi5jcmVhdGVFbGVtZW50KCJsYWJlbCIpO3IuY2xhc3NOYW1lPSJo'@; put 'dENoZWNrYm94UmVuZGVyZXJMYWJlbCAiKyh0PyJmdWxsV2lkdGgiOiIiKTtjb25zdCBpPW4uY3JlYXRlVGV4dE5vZGUoZSk7aWYodCl7Y29uc3Qgbz1uLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtvLmFwcGVuZENoaWxkKGkpLHIuYXBwZW5kQ2hpbGQobyl9ZWxzZSByLmFwcGVuZENoaWxkKGkp'@; put 'O3JldHVybiByLmNsb25lTm9kZSghMCl9KGwsQ3QsITAhPT1PLnNlcGFyYXRlZCk7ImJlZm9yZSI9PT1PLnBvc2l0aW9uP08uc2VwYXJhdGVkPyhlLmFwcGVuZENoaWxkKEF0KSxlLmFwcGVuZENoaWxkKGcpKTooQXQuYXBwZW5kQ2hpbGQoZyksRT1BdCk6KCFPLnBvc2l0aW9ufHwiYWZ0ZXIi'@; put 'PT09Ty5wb3NpdGlvbikmJihPLnNlcGFyYXRlZD8oZS5hcHBlbmRDaGlsZChnKSxlLmFwcGVuZENoaWxkKEF0KSk6KEF0Lmluc2VydEJlZm9yZShnLEF0LmZpcnN0Q2hpbGQpLEU9QXQpKX19KCksKCFPfHxPJiYhTy5zZXBhcmF0ZWQpJiZlLmFwcGVuZENoaWxkKEUpLFomJmUuYXBwZW5kQ2hp'@; put 'bGQobC5jcmVhdGVUZXh0Tm9kZShETykpLFVMZS5oYXMobil8fChVTGUuc2V0KG4sITApLGZ1bmN0aW9uIEhlKCl7Y29uc3QgQXQ9bi5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIiksS3Q9e2dyb3VwOiJjaGVja2JveFJlbmRlcmVyIixyZWxhdGl2ZVRvR3JvdXA6Ujcs'@; put 'cG9zaXRpb246ImJlZm9yZSJ9O0F0Py5hZGRTaG9ydGN1dHMoW3trZXlzOltbInNwYWNlIl1dLGNhbGxiYWNrOigpPT4oV2UoKSwhYXQoKSkscnVuT25seUlmOigpPT4hIW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQuaXNDZWxsKCl9LHtrZXlzOltbImVudGVyIl1dLGNh'@; put 'bGxiYWNrOigpPT4oV2UoKSwhYXQoKSkscnVuT25seUlmOigpPT57Y29uc3QgcXQ9bi5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7cmV0dXJuISghbi5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGluZ3x8IXF0Py5oaWdobGlnaHQuaXNDZWxsKCl8fG4uc2VsZWN0aW9uLmlzTXVsdGlw'@; put 'bGUoKSl9fSx7a2V5czpbWyJkZWxldGUiXSxbImJhY2tzcGFjZSJdXSxjYWxsYmFjazooKT0+KFdlKCEwKSwhYXQoKSkscnVuT25seUlmOigpPT4hIW4uZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQuaXNDZWxsKCl9XSxLdCl9KCkpfWZ1bmN0aW9uIGFoZShuKXtyZXR1cm4i'@; put 'SU5QVVQiPT09bi50YWdOYW1lJiYiY2hlY2tib3giPT09bi5nZXRBdHRyaWJ1dGUoInR5cGUiKX1mdW5jdGlvbiBzaGUobixlLHQscixpLG8sYSl7SU8uYXBwbHkodGhpcyxbbixlLHQscixpLG8sYV0pfUdvLmdldFNpbmdsZXRvbigpLmFkZCgibW9kaWZ5QXV0b0NvbHVtblNpemVTZWVkIixm'@; put 'dW5jdGlvbihuLGUsdCl7Y29uc3R7bGFiZWw6cix0eXBlOmkscm93Om8sY29sdW1uOmEscHJvcDpsfT1lO2lmKCJjaGVja2JveCIhPT1pfHwhcilyZXR1cm47Y29uc3QgdT1yLHt2YWx1ZTpnLHByb3BlcnR5OkV9PXU7bGV0IE89dDtpZihnKU89ImZ1bmN0aW9uIj09dHlwZW9mIGc/ZyhvLGEs'@; put 'bCx0KTpnO2Vsc2UgaWYoRSl7Y29uc3QgWj10aGlzLmdldERhdGFBdFJvd1Byb3AobyxTdHJpbmcoRSkpO089bnVsbCE9PVo/Wjp0fXJldHVybmAke1BsKE8pLmxlbmd0aH1gfSksb2hlLlJFTkRFUkVSX1RZUEU9ImNoZWNrYm94IixzaGUuUkVOREVSRVJfVFlQRT0iaGFuZHNvbnRhYmxlIjtj'@; put 'b25zdCBITnQ9e3llYXI6Im51bWVyaWMiLG1vbnRoOiIyLWRpZ2l0IixkYXk6IjItZGlnaXQifSxZTGU9bmV3IFdlYWtTZXQ7ZnVuY3Rpb24gQ1oobixlKXtjb25zdHtkYXRlRm9ybWF0OnQsbG9jYWxlOnIsYWxsb3dFbXB0eTppLGluc3RhbmNlOm99PWU7aWYoQWwobikpcmV0dXJuIGk/bjpE'@; put 'TztpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIG8mJiFZTGUuaGFzKG8pJiYoWUxlLmFkZChvKSxIYSgiVGhlIGRhdGVGb3JtYXQgb3B0aW9uIGFzIGEgc3RyaW5nIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhbiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyBvYmplY3QgaW5zdGVhZC4i'@; put 'KSksbjtjb25zdCBhPXNjKG4pO2lmKG51bGw9PT1hKXJldHVybiBETztjb25zdCBsPUNhKHQpP3Q6SE50O3JldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChyLGwpLmZvcm1hdChhKX1mdW5jdGlvbiBsaGUobixlLHQscixpLG8sYSl7RDcuYXBwbHkodGhpcyxbbixlLHQscixpLG8sYV0p'@; put 'fWxoZS52YWx1ZUZvcm1hdHRlcj1DWixsaGUuUkVOREVSRVJfVFlQRT0iZGF0ZSI7Y29uc3QgY2hlPWxoZTtmdW5jdGlvbiB1aGUobixlLHQscixpLG8sYSl7Y2hlLmFwcGx5KHRoaXMsW24sZSx0LHIsaSxvLGFdKX11aGUudmFsdWVGb3JtYXR0ZXI9Q1osdWhlLlJFTkRFUkVSX1RZUEU9Imlu'@; put 'dGwtZGF0ZSI7Y29uc3QgWkxlPXVoZSxqTnQ9e2hvdXI6Im51bWVyaWMiLG1pbnV0ZToiMi1kaWdpdCJ9LEdMZT1uZXcgV2Vha1NldDtmdW5jdGlvbiBkaGUobixlKXtjb25zdHt0aW1lRm9ybWF0OnQsbG9jYWxlOnIsYWxsb3dFbXB0eTppLGluc3RhbmNlOm99PWU7aWYoQWwobikpcmV0dXJu'@; put 'IGk/bjpETztjb25zdCBhPXpmKG4pO2lmKG51bGw9PT1hKXJldHVybiBETzsic3RyaW5nIj09dHlwZW9mIHQmJm8mJiFHTGUuaGFzKG8pJiYoR0xlLmFkZChvKSxIYSgiVGhlIHRpbWVGb3JtYXQgb3B0aW9uIGFzIGEgc3RyaW5nIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhbiBJbnRsLkRhdGVU'@; put 'aW1lRm9ybWF0T3B0aW9ucyBvYmplY3QgaW5zdGVhZC4iKSk7Y29uc3QgbD1DYSh0KT90OmpOdDtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQocixsKS5mb3JtYXQoYSl9ZnVuY3Rpb24gaGhlKG4sZSx0LHIsaSxvLGEpe0Q3LmFwcGx5KHRoaXMsW24sZSx0LHIsaSxvLGFdKSxlLmRp'@; put 'cj0ibHRyIn1oaGUudmFsdWVGb3JtYXR0ZXI9ZGhlLGhoZS5SRU5ERVJFUl9UWVBFPSJ0aW1lIjtjb25zdCBmaGU9aGhlO2Z1bmN0aW9uICRMZShuLGUsdCxyLGksbyxhKXtmaGUuYXBwbHkodGhpcyxbbixlLHQscixpLG8sYV0pfSRMZS5SRU5ERVJFUl9UWVBFPSJpbnRsLXRpbWUiO2NvbnN0'@; put 'IHFMZT0kTGUsek50PXt1c2VHcm91cGluZzohMSxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6MjB9LEtMZT1uZXcgTWFwLFhMZT1uZXcgV2Vha1NldDtmdW5jdGlvbiBRTGUobixlKXtyZXR1cm4gdzAobikmJihuPWZ1bmN0aW9uIFdOdChuLGUpe2NvbnN0e251bWVyaWNGb3JtYXQ6dCxsb2NhbGU6'@; put 'cn09ZSxpPXQ/P3pOdCxvPWAke3I/PyIifToke0pTT04uc3RyaW5naWZ5KGkpfWA7bGV0IGE9S0xlLmdldChvKTtyZXR1cm4gdm9pZCAwPT09YSYmKGE9bmV3IEludGwuTnVtYmVyRm9ybWF0KHIsaSksS0xlLnNldChvLGEpKSxhLmZvcm1hdChuKX0obixlKSksbn1mdW5jdGlvbiBTWihuLGUs'@; put 'dCxyLGksbyxhKXtjb25zdCBsPWEubnVtZXJpY0Zvcm1hdDtpZih2b2lkIDAhPT1sPy5wYXR0ZXJufHx2b2lkIDAhPT1sPy5jdWx0dXJlKXtjb25zdCBnPWEuaW5zdGFuY2U7WExlLmhhcyhnKXx8KFhMZS5hZGQoZyksSGEoIlRoZSBudW1lcmljRm9ybWF0LnBhdHRlcm4gYW5kIG51bWVyaWNG'@; put 'b3JtYXQuY3VsdHVyZSBvcHRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLiBVc2UgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9ucyBpbnN0ZWFkIChudW1lcmljRm9ybWF0OiB7IHN0eWxlLCBjdXJyZW5jeSwgLi4uIH0pLiIpKX1pZih3MChuLmdldERhdGFBdENlbGwodCxyKSkpe2xldCBnPVtdO2lm'@; put 'KEFycmF5LmlzQXJyYXkoYS5jbGFzc05hbWUpKWc9YS5jbGFzc05hbWU7ZWxzZXtjb25zdCBFPWEuY2xhc3NOYW1lPz8iIjtFLmxlbmd0aCYmKGc9RS5zcGxpdCgiICIpKX1nLmluZGV4T2YoImh0TGVmdCIpPDAmJmcuaW5kZXhPZigiaHRDZW50ZXIiKTwwJiZnLmluZGV4T2YoImh0UmlnaHQi'@; put 'KTwwJiZnLmluZGV4T2YoImh0SnVzdGlmeSIpPDAmJmcucHVzaCgiaHRSaWdodCIpLGcuaW5kZXhPZigiaHROdW1lcmljIik8MCYmZy5wdXNoKCJodE51bWVyaWMiKSxhLmNsYXNzTmFtZT1nLmpvaW4oIiAiKSxlLmRpcj0ibHRyIn1ENy5hcHBseSh0aGlzLFtuLGUsdCxyLGksbyxhXSl9ZnVu'@; put 'Y3Rpb24gRVoobixlLHQscixpLG8pe183KGUsbyl9ZnVuY3Rpb24gcGhlKG4sZSx0LHIsaSxvLGEpe0Q3LmFwcGx5KHRoaXMsW24sZSx0LHIsaSxvLGFdKX1mdW5jdGlvbiBMTyhuLGUpe2NvbnN0IHI9bz0+e2lmKChvPT57Y29uc3QgYT1vO3JldHVybiBDYShvKSYmWm8oYS5rZXkpJiZabyhh'@; put 'LnZhbHVlKX0pKG8pKXtjb25zdCBhPW87cmV0dXJuIHIoYS5rZXkpJiZyKGEudmFsdWUpfXJldHVybiBudWxsPT1vfTtsZXQgaT1uO3IoaSkmJihpPSIiKSwiIiE9PWk/dGhpcy5zdHJpY3QmJnRoaXMuc291cmNlPyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNvdXJjZT90aGlzLnNvdXJjZShp'@; put 'LEpMZShpLGUpKTpKTGUoaSxlKSh0aGlzLnNvdXJjZSk6ZSghMCk6ZSghIXRoaXMuYWxsb3dFbXB0eSl9ZnVuY3Rpb24gSkxlKG4sZSl7Y29uc3QgdD1uO3JldHVybiBmdW5jdGlvbihyKXtsZXQgaT0hMTtmb3IobGV0IG89MCxhPXIubGVuZ3RoO288YTtvKyspaWYoZzcodCxyW29dKSl7aT0h'@; put 'MDticmVha31lKGkpfX1mdW5jdGlvbiBnaGUobixlKXtyZXR1cm4hIShlLmFsbG93RW1wdHkmJkFsKG4pfHwic3RyaW5nIj09dHlwZW9mIG4mJm4uc3RhcnRzV2l0aCgiPSIpKXx8eE8obil9ZnVuY3Rpb24gTVoobixlKXt0aGlzLmFsbG93RW1wdHkmJkFsKG4pP2UoITApOmUoeE8obikpfWZ1'@; put 'bmN0aW9uIG1oZShuLGUpe0xPLmFwcGx5KHRoaXMsW24sZV0pfWZ1bmN0aW9uIFRaKG4sZSl7TVouY2FsbCh0aGlzLG4sZSl9ZnVuY3Rpb24gdmhlKG4sZSl7cmV0dXJuISEoZS5hbGxvd0VtcHR5JiZBbChuKXx8InN0cmluZyI9PXR5cGVvZiBuJiZuLnN0YXJ0c1dpdGgoIj0iKSl8fG1aKG4p'@; put 'fWZ1bmN0aW9uIHhaKG4sZSl7dGhpcy5hbGxvd0VtcHR5JiZBbChuKT9lKCEwKTplKG1aKG4pKX1mdW5jdGlvbiBBWihuLGUpe3haLmNhbGwodGhpcyxuLGUpfWZ1bmN0aW9uIF9oZShuLGUpe2xldCB0PW47bnVsbD09dCYmKHQ9IiIpLHRoaXMuYWxsb3dFbXB0eSYmIiI9PT10P2UoITApOih0'@; put 'aGlzLmFsbG93RW1wdHl8fCIiIT09dCkmJkFycmF5LmlzQXJyYXkodCk/MCE9PXQubGVuZ3RoJiZ0aGlzLnNvdXJjZT8iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5zb3VyY2U/dGhpcy5zb3VyY2UodCxlT2UodCxlKSk6ZU9lKHQsZSkodGhpcy5zb3VyY2UpOmUoITApOmUoITEpfWZ1bmN0aW9u'@; put 'IGVPZShuLGUpe2NvbnN0IHQ9bjtyZXR1cm4gZnVuY3Rpb24ocil7bGV0IGk9ITA7Zm9yKGxldCBvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtsZXQgbD0hMTtmb3IobGV0IHU9MCxnPXIubGVuZ3RoO3U8Zzt1Kyspe2lmKGIwKHRbb10pJiYhYjAoclt1XSl8fCFiMCh0W29dKSYmYjAoclt1XSkp'@; put 'e2w9ITE7YnJlYWt9KGIwKHRbb10pJiZiMChyW3VdKSYmZzcodFtvXSxyW3VdKXx8InN0cmluZyI9PXR5cGVvZiB0W29dJiYic3RyaW5nIj09dHlwZW9mIHJbdV0mJnRbb109PT1yW3VdKSYmKGw9ITApfWlmKCFsKXtpPSExO2JyZWFrfX1lKGkpfX1mdW5jdGlvbiB5aGUobixlKXtsZXQgdD1u'@; put 'O251bGw9PXQmJih0PSIiKSxlKCEoIXRoaXMuYWxsb3dFbXB0eXx8IiIhPT10KXx8IiIhPT10JiZ3MChuKSl9ZnVuY3Rpb24gdE9lKG4pe2NvbnN0IGU9bjtyZXR1cm4gQ2EobikmJnZvaWQgMCE9PWUudmFsdWU/ZS52YWx1ZTpufWZ1bmN0aW9uIG5PZShuLGUsdCl7cmV0dXJuIGIwKHRoaXMu'@; put 'Z2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLnRvUGh5c2ljYWxSb3coZSksdGhpcy50b1BoeXNpY2FsQ29sdW1uKHQpKSk/YjAobik/bjp7a2V5Om4sdmFsdWU6bn06bn1TWi52YWx1ZUZvcm1hdHRlcj1RTGUsU1ouUkVOREVSRVJfVFlQRT0ibnVtZXJpYyIsRVoudmFsdWVGb3JtYXR0ZXI9ZnVu'@; put 'Y3Rpb24gR050KG4sZSl7Y29uc3QgdD1lLmhhc2hMZW5ndGh8fFBsKG4pLmxlbmd0aCxyPVN0cmluZyhlLmhhc2hTeW1ib2w/PyIqIik7bGV0IGk9IiI7Zm9yKGxldCBvPTA7bzx0O28rKylpKz1yO3JldHVybiBpfSxFWi5SRU5ERVJFUl9UWVBFPSJwYXNzd29yZCIscGhlLlJFTkRFUkVSX1RZ'@; put 'UEU9InNlbGVjdCIsTE8uVkFMSURBVE9SX1RZUEU9ImF1dG9jb21wbGV0ZSIsZ2hlLnJvd0luZGVwZW5kZW50PSEwLE1aLlZBTElEQVRPUl9UWVBFPSJkYXRlIixtaGUuVkFMSURBVE9SX1RZUEU9ImRyb3Bkb3duIixUWi5WQUxJREFUT1JfVFlQRT0iaW50bC1kYXRlIix2aGUucm93SW5kZXBl'@; put 'bmRlbnQ9ITAseFouVkFMSURBVE9SX1RZUEU9InRpbWUiLEFaLlZBTElEQVRPUl9UWVBFPSJpbnRsLXRpbWUiLF9oZS5WQUxJREFUT1JfVFlQRT0ibXVsdGlzZWxlY3QiLHloZS5WQUxJREFUT1JfVFlQRT0ibnVtZXJpYyI7Y29uc3QgY0Z0PXtDRUxMX1RZUEU6ImF1dG9jb21wbGV0ZSIsZWRp'@; put 'dG9yOkhkZSxyZW5kZXJlcjpJTyx2YWxpZGF0b3I6TE8sdmFsdWVHZXR0ZXI6dE9lLHZhbHVlU2V0dGVyOm5PZSxwYXJzZVBhc3RlZFZhbHVlOiEwfSxkRnQ9e0NFTExfVFlQRToiY2hlY2tib3giLGVkaXRvcjpxRGUscmVuZGVyZXI6b2hlLHZhbHVlU2V0dGVyOmZ1bmN0aW9uIHVGdChuLGUs'@; put 'dCl7Y29uc3R7Y2hlY2tlZFRlbXBsYXRlOnIsdW5jaGVja2VkVGVtcGxhdGU6aX09dGhpcy5nZXRDZWxsTWV0YShlLHQpLG89UGwobiksYT1vPT09UGwociksbD1vPT09UGwoaSk7cmV0dXJuIGF8fGw/YT9yOmk6bn19LGhGdD17Q0VMTF9UWVBFOiJkYXRlIixlZGl0b3I6emRlLHJlbmRlcmVy'@; put 'OmNoZSx2YWxpZGF0b3I6TVosc291cmNlRGF0YVZhbGlkYXRvcjpnaGUsc291cmNlRGF0YVdhcm5pbmdNZXNzYWdlOidTb3VyY2UgZGF0YSB3YXJuaW5nIChbaXRlbXNDb3VudF0pLiBJbnZhbGlkIHZhbHVlIGZvciAiZGF0ZSIgY2VsbCB0eXBlLlxuXG5bYWZmZWN0ZWRDZWxsc11cblxuRXhw'@; put 'ZWN0ZWQgYSB2YWx1ZSBjb21wYXRpYmxlIHdpdGggdGhlIElTTyA4NjAxIGRhdGUgZm9ybWF0ICgiWVlZWS1NTS1ERCIpLicsdmFsdWVGb3JtYXR0ZXI6Q1p9LGdGdD17Q0VMTF9UWVBFOiJkcm9wZG93biIsZWRpdG9yOktEZSxyZW5kZXJlcjppaGUsdmFsaWRhdG9yOm1oZSxmaWx0ZXI6ITEs'@; put 'c3RyaWN0OiEwLHZhbHVlR2V0dGVyOmZ1bmN0aW9uIGZGdChuKXtyZXR1cm4gdE9lLmNhbGwodGhpcyxuKX0sdmFsdWVTZXR0ZXI6ZnVuY3Rpb24gcEZ0KG4sZSx0LHIpe3JldHVybiBuT2UuY2FsbCh0aGlzLG4sZSx0KX0scGFyc2VQYXN0ZWRWYWx1ZTohMH0sbUZ0PXtDRUxMX1RZUEU6Imhh'@; put 'bmRzb250YWJsZSIsZWRpdG9yOk9kZSxyZW5kZXJlcjpzaGV9LHZGdD17Q0VMTF9UWVBFOiJpbnRsLWRhdGUiLGVkaXRvcjpYRGUscmVuZGVyZXI6WkxlLHZhbGlkYXRvcjpUWixzb3VyY2VEYXRhVmFsaWRhdG9yOmdoZSxzb3VyY2VEYXRhV2FybmluZ01lc3NhZ2U6J1NvdXJjZSBkYXRhIHdh'@; put 'cm5pbmcgKFtpdGVtc0NvdW50XSkuIEludmFsaWQgdmFsdWUgZm9yICJpbnRsLWRhdGUiIGNlbGwgdHlwZS5cblxuW2FmZmVjdGVkQ2VsbHNdXG5cbkV4cGVjdGVkIGEgdmFsdWUgY29tcGF0aWJsZSB3aXRoIHRoZSBJU08gODYwMSBkYXRlIGZvcm1hdCAoIllZWVktTU0tREQiKS4nLHZhbHVl'@; put 'Rm9ybWF0dGVyOkNafSxfRnQ9e0NFTExfVFlQRToiaW50bC10aW1lIixlZGl0b3I6UURlLHJlbmRlcmVyOnFMZSx2YWxpZGF0b3I6QVosc291cmNlRGF0YVZhbGlkYXRvcjp2aGUsc291cmNlRGF0YVdhcm5pbmdNZXNzYWdlOidTb3VyY2UgZGF0YSB3YXJuaW5nIChbaXRlbXNDb3VudF0pLiBJ'@; put 'bnZhbGlkIHZhbHVlIGZvciAiaW50bC10aW1lIiBjZWxsIHR5cGUuXG5cblthZmZlY3RlZENlbGxzXVxuXG5FeHBlY3RlZCBhIHZhbHVlIGNvbXBhdGlibGUgd2l0aCB0aGUgMjQtaG91ciB0aW1lIGZvcm1hdCAoIkhIOm1tIiwgIkhIOm1tOnNzIiBvciAiSEg6bW06c3MuU1NTIikuJyx2YWx1'@; put 'ZUZvcm1hdHRlcjpkaGV9LGtaPSJodC1tdWx0aS1zZWxlY3QiLGJoZT1gJHtrWn0tY2hpcGAsd2hlPWAke2tafS1jaGlwLXJlbW92ZWAseUZ0PWAke2tafS1jaGlwLWxhYmVsYCxyT2U9YCR7a1p9LW92ZXJmbG93YCxpT2U9bmV3IFdlYWtTZXQsUHc9bmV3IFdlYWtNYXAsQ2hlPW5ldyBXZWFr'@; put 'TWFwO2Z1bmN0aW9uIFNoZShuLGUpe3JldHVybiBiMChuKT9uW2VdOm59ZnVuY3Rpb24gb09lKG4pe2lmKG51bGw9PW58fCIiPT09bilyZXR1cm5bXTtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuO2lmKCJzdHJpbmciPT10eXBlb2Ygbil0cnl7Y29uc3QgZT1KU09OLnBhcnNlKG4pLHQ9'@; put 'ZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT90OltlXX1jYXRjaHtyZXR1cm4gbi50cmltKCk/W25dOltdfXJldHVybltuXX1mdW5jdGlvbiBhT2Uobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/TXhlKG4ubWFwKGU9PmIwKGUpP2UudmFsdWU6ZSksIiwgIik6bn1jb25zdCBERnQ9e0NFTExf'@; put 'VFlQRToibXVsdGlzZWxlY3QiLF9jb21wbGV4RGF0YUZvcm1hdDohMCxlZGl0b3I6RkxlLHJlbmRlcmVyOmZ1bmN0aW9uIFJGdChuLGUsdCxyLGksbyxhKXtNVCgwLGUsMCwwLDAsbyxhKTtsZXQgbD1vO2lmKEFsKGwpJiZhLnBsYWNlaG9sZGVyKXJldHVybiBsPWEucGxhY2Vob2xkZXIsbD1Q'@; put 'bChsKSx2b2lkIHk3KGUsbCk7Y29uc3R7cm9vdERvY3VtZW50OnV9PW4sZz1uLmdldFNldHRpbmdzKCkuYXJpYVRhZ3MsRT1uLnRvUGh5c2ljYWxSb3codCksTz0ic3RyaW5nIj09dHlwZW9mIHI/cjpuLnRvUGh5c2ljYWxDb2x1bW4ociksZWU9b09lKG4uZ2V0U291cmNlRGF0YUF0Q2VsbChF'@; put 'LE8pKTtpZihDNChlKSxZcihlLCJodC1tdWx0aS1zZWxlY3QtcmVuZGVyZXIiKSwwPT09ZWUubGVuZ3RoKXJldHVybiB2b2lkIGUuYXBwZW5kQ2hpbGQodS5jcmVhdGVUZXh0Tm9kZSgiIikpO2NvbnN0IHZlPXUuY3JlYXRlRWxlbWVudCgiZGl2Iik7dmUuY2xhc3NOYW1lPSJodC1tdWx0aS1z'@; put 'ZWxlY3QtY2hpcHMtY29udGFpbmVyIixlZS5mb3JFYWNoKEhlPT57Y29uc3QgV2U9ZnVuY3Rpb24gYkZ0KG4sZSx0LHIsaSl7Y29uc3Qgbz1uLmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxhPVNoZShlLCJ2YWx1ZSIpO1lyKG8sYmhlKSxvLmRhdGFzZXQucm93PVN0cmluZyhyKSxvLmRhdGFzZXQu'@; put 'cHJvcD1TdHJpbmcoaSksby50aXRsZT1hO2NvbnN0IGw9bi5jcmVhdGVFbGVtZW50KCJzcGFuIik7WXIobCx5RnQpLGwudGV4dENvbnRlbnQ9YSxvLmFwcGVuZENoaWxkKGwpO2NvbnN0IHU9bi5jcmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIFlyKHUsd2hlKSx0JiZ1LnNldEF0dHJpYnV0'@; put 'ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksby5kYXRhc2V0LmtleT1TaGUoZSwia2V5Iiksby5hcHBlbmRDaGlsZCh1KSxvfSh1LEhlLGc/PyExLHQsaSk7dmUuYXBwZW5kQ2hpbGQoV2UpfSksZS5hcHBlbmRDaGlsZCh2ZSksZnVuY3Rpb24gQ0Z0KG4sZSl7Q2hlLmhhcyhuKXx8KENoZS5zZXQo'@; put 'bixuZXcgVzIobikpLENoZS5nZXQobikuYWRkRXZlbnRMaXN0ZW5lcihuLnJvb3RFbGVtZW50LCJjbGljayIscj0+e2lmKCFMYShBYShyKSx3aGUpKXJldHVybjtyLnByZXZlbnREZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBpPUFhKHIpLmNsb3Nlc3QoYC4ke2JoZX1gKTtp'@; put 'ZighaSlyZXR1cm47Y29uc3QgYT1pLmRhdGFzZXQucHJvcCxsPW4udG9QaHlzaWNhbFJvdyhOdW1iZXIoaS5kYXRhc2V0LnJvdz8/MCkpLHU9InN0cmluZyI9PXR5cGVvZiBhP2E6bi50b1BoeXNpY2FsQ29sdW1uKE51bWJlcihhKSksZz1uLnByb3BUb0NvbChhPz8iIiksRT1uLmdldFNvdXJj'@; put 'ZURhdGFBdENlbGwobCxnKSxPPWkuZGF0YXNldC5rZXksWj1mdW5jdGlvbiBURnQobixlKXtyZXR1cm4gbi5maWx0ZXIodD0+U2hlKHQsImtleSIpIT09ZSl9KG9PZShFKSxPKTtuLnNldFNvdXJjZURhdGFBdENlbGwobCx1LFosYCR7ZX0tcmVuZGVyZXJgKSxuLnJlbmRlcigpfSksbi5hZGRI'@; put 'b29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLCguLi5yKT0+e2NvbnN0IGk9clswXTtMYShBYShpKSx3aGUpJiZGMyhpKX0pKX0obiwibXVsdGlzZWxlY3QiKTtjb25zdCBNZT1mdW5jdGlvbiBTRnQobixlKXtjb25zdCB0PW4uZ2V0Q29sV2lkdGgoZSk7aWYoUHcuaGFzKG4pKXtjb25zdCBy'@; put 'PVB3LmdldChuKTtyW2VdPy53aWR0aCE9PXQmJlB3LnNldChuLHsuLi5yLFtlXTp7d2lkdGg6dH19KX1lbHNlIFB3LnNldChuLHtbZV06e3dpZHRoOnR9fSk7cmV0dXJuIGlPZS5oYXMobil8fChuLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsKC4uLnIpPT57Y29uc3QgaT1yWzBdLG89'@; put 'clsxXSxhPVB3LmdldChuKTthPy5bb10/LndpZHRoIT09aSYmUHcuc2V0KG4sey4uLmEsW29dOnt3aWR0aDppfX0pfSksaU9lLmFkZChuKSksUHcuZ2V0KG4pPy5bZV0/LndpZHRoPz90fShuLHIpOyFmdW5jdGlvbiBNRnQobixlLHQpeyFmdW5jdGlvbiBFRnQobixlLHQpe2NvbnN0IHI9bixp'@; put 'PWUucXVlcnlTZWxlY3RvckFsbChgLiR7YmhlfWApO2ZvcihsZXQgWj0wO1o8aS5sZW5ndGg7WisrKWlbWl0uc3R5bGUuZGlzcGxheT0iIjtpZihudWxsPT09cnx8MD09PWkubGVuZ3RoKXJldHVybjtsZXQgbz1lLnF1ZXJ5U2VsZWN0b3IoYC4ke3JPZX1gKTtvPyhvLnN0eWxlLmRpc3BsYXk9'@; put 'IiIsby5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKToobz1mdW5jdGlvbiB3RnQobixlKXtjb25zdCB0PW4uY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBZcih0LHJPZSksdC50ZXh0Q29udGVudD1gKyR7ZX1gLHR9KHQsaS5sZW5ndGgpLG8uc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVu'@; put 'IixlLmFwcGVuZENoaWxkKG8pKTtjb25zdCBhPXQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlKSxsPXBhcnNlRmxvYXQoYS5nYXApfHwwLHU9by5vZmZzZXRXaWR0aDtsZXQgZz0wLEU9MDtmb3IobGV0IFo9MDtaPGkubGVuZ3RoO1orKyl7Y29uc3QgTWU9ZytpW1pdLm9mZnNldFdp'@; put 'ZHRoKyhaPGkubGVuZ3RoLTE/bDowKTtpZighKE1lPD1yLShaPGkubGVuZ3RoLTE/dStsOjApKSlicmVhaztnPU1lLEUrPTF9Y29uc3QgTz1pLmxlbmd0aC1FO2lmKE8+MCl7Zm9yKGxldCBaPUU7WjxpLmxlbmd0aDtaKyspaVtaXS5zdHlsZS5kaXNwbGF5PSJub25lIjtvLnRleHRDb250ZW50'@; put 'PWArJHtPfWAsby5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn1lbHNlIG8uc3R5bGUuZGlzcGxheT0ibm9uZSJ9KG4sZSx0KX0oTWUsdmUsdSl9LHZhbGlkYXRvcjpfaGUsdmFsdWVHZXR0ZXI6YU9lLHZhbHVlU2V0dGVyOmZ1bmN0aW9uIElGdChuLGUsdCl7aWYoQXJyYXkuaXNBcnJheShu'@; put 'KSl7Y29uc3Qgcj10aGlzLmdldFNvdXJjZURhdGFBdENlbGwodGhpcy50b1BoeXNpY2FsUm93KGUpLHQpO2lmKEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjAmJmIwKHJbMF0pKXJldHVybiBuLm1hcChpPT5iMChpKT9pOntrZXk6aSx2YWx1ZTppfSl9cmV0dXJuIG59LHBhcnNlUGFzdGVk'@; put 'VmFsdWU6ITB9LE5GdD17Q0VMTF9UWVBFOiJudW1lcmljIixlZGl0b3I6SkRlLHJlbmRlcmVyOlNaLHZhbGlkYXRvcjp5aGUsZGF0YVR5cGU6Im51bWJlciIsdmFsdWVTZXR0ZXI6ZnVuY3Rpb24gT0Z0KG4sZSx0LHIpe2lmKCJzdHJpbmciIT10eXBlb2YgbilyZXR1cm4gbjtjb25zdCBpPWZ1'@; put 'bmN0aW9uIExGdChuKXtjb25zdCBlPW4/Lm51bWVyaWNGb3JtYXQsdD1lPy5jdWx0dXJlPz9uPy5sb2NhbGU7aWYoInN0cmluZyI9PXR5cGVvZiB0JiZ0Lmxlbmd0aD4wKXRyeXtjb25zdCBpPW5ldyBJbnRsLk51bWJlckZvcm1hdCh0KS5mb3JtYXRUb1BhcnRzKDEuMSkuZmluZCgoe3R5cGU6'@; put 'b30pPT4iZGVjaW1hbCI9PT1vKTtpZigiLiI9PT1pPy52YWx1ZXx8IiwiPT09aT8udmFsdWUpcmV0dXJuIGkudmFsdWV9Y2F0Y2h7fWNvbnN0IHI9ZT8ucGF0dGVybjtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGk9ci5sYXN0SW5kZXhPZigiLiIpLG89ci5sYXN0SW5kZXhPZigiLCIp'@; put 'O2lmKGk+LTEmJm8+LTEpcmV0dXJuIGk+bz8iLiI6IiwiO2lmKG8+LTEmJi0xPT09aXx8aT4tMSYmLTE9PT1vKXJldHVybiIuIn19KHIpO2lmKE9BZShuKXx8UXNlKG4saSl8fEpzZShuLGkpfHxlbGUobixpKSl7Y29uc3Qgbz1OQWUobix7ZGVjaW1hbFNlcGFyYXRvcjppfSk7cmV0dXJuIHJP'@; put 'KG8pP246b31yZXR1cm4gbn0sdmFsdWVGb3JtYXR0ZXI6UUxlfSxGRnQ9e0NFTExfVFlQRToicGFzc3dvcmQiLGVkaXRvcjpyTGUscmVuZGVyZXI6RVosY29weWFibGU6ITF9LFBGdD17Q0VMTF9UWVBFOiJzZWxlY3QiLGVkaXRvcjpvTGUscmVuZGVyZXI6cGhlfSxIRnQ9e0NFTExfVFlQRToi'@; put 'dGltZSIsZWRpdG9yOldkZSxyZW5kZXJlcjpmaGUsdmFsaWRhdG9yOnhaLHNvdXJjZURhdGFWYWxpZGF0b3I6dmhlLHNvdXJjZURhdGFXYXJuaW5nTWVzc2FnZTonU291cmNlIGRhdGEgd2FybmluZyAoW2l0ZW1zQ291bnRdKS4gSW52YWxpZCB2YWx1ZSBmb3IgInRpbWUiIGNlbGwgdHlwZS5c'@; put 'blxuW2FmZmVjdGVkQ2VsbHNdXG5cbkV4cGVjdGVkIGEgdmFsdWUgY29tcGF0aWJsZSB3aXRoIHRoZSAyNC1ob3VyIHRpbWUgZm9ybWF0ICgiSEg6bW0iLCAiSEg6bW06c3MiIG9yICJISDptbTpzcy5TU1MiKS4nLHZhbHVlRm9ybWF0dGVyOmRoZX0sT089W107ZnVuY3Rpb24gQkZ0KG4sZSl7'@; put 'cmV0dXJuISFuW2VdfWZ1bmN0aW9uIHNPZShuLGUpe2lmKEFycmF5LmlzQXJyYXkobikpeyJzdHJpbmciIT10eXBlb2YgZSYmSnIoInJlZ2lzdGVyQ29uZmxpY3QoYmxvY2tlZFRhcmdldEtleXNbXSwgaW5jb21wYXRpYmxlU2V0dGluZ0tleXMpIGV4cGVjdHMgaW5jb21wYXRpYmxlU2V0dGlu'@; put 'Z0tleXMgdG8gYmUgYSBzdHJpbmcuIik7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKz0xKU9PLnB1c2goe2Jsb2NrZWRLZXk6bltyXSxpbmNvbXBhdGlibGVTZXR0aW5nS2V5OmV9KTtyZXR1cm59InN0cmluZyIhPXR5cGVvZiBuJiZKcigicmVnaXN0ZXJDb25mbGljdCBleHBlY3RzIGEgc3Ry'@; put 'aW5nIGJsb2NrZWQgdGFyZ2V0IGtleSB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3QgYW4gYXJyYXkuIik7Y29uc3QgdD1uO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKz0xKXtjb25zdCBpPWVbcl07InN0cmluZyIhPXR5cGVvZiBpJiZKcigicmVn'@; put 'aXN0ZXJDb25mbGljdChibG9ja2VkVGFyZ2V0S2V5LCBpbmNvbXBhdGlibGVTZXR0aW5nS2V5cykgZXhwZWN0cyBpbmNvbXBhdGlibGVTZXR0aW5nS2V5cyB0byBiZSBhIHN0cmluZyBhcnJheS4iKSxPTy5wdXNoKHtibG9ja2VkS2V5OnQsaW5jb21wYXRpYmxlU2V0dGluZ0tleTppfSl9ZWxz'@; put 'ZSJzdHJpbmciIT10eXBlb2YgZT9KcigiSW52YWxpZCByZWdpc3RlckNvbmZsaWN0IGFyZ3VtZW50cy4iKTpPTy5wdXNoKHtibG9ja2VkS2V5OnQsaW5jb21wYXRpYmxlU2V0dGluZ0tleTplfSl9ZnVuY3Rpb24gbE9lKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu'@; put 'bm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBjT2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2Ui'@; put 'KTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gWGQobixlKXtyZXR1cm4gZnVuY3Rpb24gVUZ0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixjT2UobixlLCJnZXQiKSl9ZnVuY3Rpb24gdU9lKG4sZSx0KXtsT2UobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIE5U'@; put 'KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gekZ0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixjT2Uobixl'@; put 'LCJzZXQiKSx0KSx0fWZ1bmN0aW9uIGRPZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBoT2UobixlKXtsT2UobixlKSxlLmFkZChuKX1jb25z'@; put 'dCBmT2U9bmV3IE1hcChbWyJwbHVnaW4iLGZ1bmN0aW9uIHR4dChuKXtyZXR1cm4hIVNMKG4pfV0sWyJjZWxsLXR5cGUiLEdSZV0sWyJlZGl0b3IiLE1BZV0sWyJyZW5kZXJlciIsVkFlXSxbInZhbGlkYXRvciIsQkFlXV0pLHBPZT1TeW1ib2woIm1haW5TZXR0aW5nIiksUlo9W107bGV0IEh3'@; put 'PW51bGw7dmFyIFFkPW5ldyBXZWFrTWFwLGZfPW5ldyBXZWFrTWFwLGdPZT1uZXcgV2Vha1NldCxtT2U9bmV3IFdlYWtTZXQ7Y2xhc3MgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuImJhc2UifXN0YXRpYyBnZXQgU0VUVElOR19LRVlTKCl7cmV0dXJuW3RoaXMuUExVR0lOX0tF'@; put 'WV19c3RhdGljIGdldCBERUZBVUxUX1NFVFRJTkdTKCl7cmV0dXJue319c3RhdGljIGdldCBTRVRUSU5HU19WQUxJREFUT1JTKCl7cmV0dXJuIG51bGx9aW5pdCgpe3RoaXMucGx1Z2luTmFtZT10aGlzLmhvdC5nZXRQbHVnaW5OYW1lKHRoaXMpLHRoaXMudXBkYXRlUGx1Z2luU2V0dGluZ3Mo'@; put 'dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLmNvbnN0cnVjdG9yLlBMVUdJTl9LRVldKTtjb25zdCBlPXRoaXMuY29uc3RydWN0b3IuUExVR0lOX0RFUFMsdD1BcnJheS5pc0FycmF5KGUpP2U6W107aWYodC5sZW5ndGg+MCl7Y29uc3QgaT1bXTtpZih0LmZvckVhY2gobz0+e2NvbnN0W2Es'@; put 'bF09by5zcGxpdCgiOiIpO2ZPZS5oYXMoYSl8fEpyKGBVbmtub3duIHBsdWdpbiBkZXBlbmRlbmN5IHR5cGUgIiR7YX0iIHdhcyBmb3VuZC5gKSxmT2UuZ2V0KGEpKGwpfHxpLnB1c2goYCAtICR7bH0gKCR7YX0pYCl9KSxpLmxlbmd0aD4wKXtjb25zdCBvPVtgVGhlICR7dGhpcy5wbHVnaW5O'@; put 'YW1lfSBwbHVnaW4gcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBtb2R1bGVzOlxuYCxgJHtpLmpvaW4oIlxuIil9XG5gXS5qb2luKCIiKTtSWi5wdXNoKG8pfX1pZihId3x8KEh3PWFsZSgpKSxIdy5pbmRleE9mKHRoaXMucGx1Z2luTmFtZSk+PTAmJkh3LnNwbGljZShIdy5pbmRleE9mKHRoaXMu'@; put 'cGx1Z2luTmFtZSksMSksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIiwoKT0+e2lmKHRoaXMuaXNFbmFibGVkJiZ0aGlzLmlzRW5hYmxlZCgpKXtpZih0aGlzLmlzSGFyZENvbmZsaWN0QmxvY2tlZCgpKXJldHVybiB2b2lkKHRoaXMuaG90LmdldFNldHRp'@; put 'bmdzKClbdGhpcy5jb25zdHJ1Y3Rvci5QTFVHSU5fS0VZXT0hMSk7dGhpcy5lbmFibGVQbHVnaW4oKX19KSwwPT09SHcubGVuZ3RoKXtpZihSWi5sZW5ndGg+MCl7Y29uc3QgaT1bYCR7Ulouam9pbigiXG4iKX1cbmAsIllvdSBoYXZlIHRvIGltcG9ydCBhbmQgcmVnaXN0ZXIgdGhlbSBtYW51'@; put 'YWxseS4iXS5qb2luKCIiKTtSWi5sZW5ndGg9MCxKcihpKX10aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQiKX10aGlzLmluaXRpYWxpemVkPSEwfWlzSGFyZENvbmZsaWN0QmxvY2tlZCgpe2NvbnN0IGU9dGhpcy5jb25zdHJ1Y3Rvci5QTFVHSU5fS0VZLHQ9ZnVu'@; put 'Y3Rpb24gakZ0KG4sZSl7Zm9yKGxldCB0PTA7dDxPTy5sZW5ndGg7dCs9MSl7Y29uc3Qgcj1PT1t0XTtpZihyLmJsb2NrZWRLZXk9PT1lJiZCRnQobixyLmluY29tcGF0aWJsZVNldHRpbmdLZXkpKXJldHVybiByfXJldHVybiBudWxsfSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLGUpO2lmKHQp'@; put 'e2NvbnN0e2luY29tcGF0aWJsZVNldHRpbmdLZXk6cn09dDtyZXR1cm4gSGEoeWNgVGhlIFxgJHtlfVxgIHBsdWdpbiBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBcYCR7cn1cYCBvcHRpb24uXHgyMAogICAgICAgIFRoaXMgY29tYmluYXRpb24gaXMgbm90IHN1cHBvcnRlZC4gVGhlIHBsdWdp'@; put 'biB3aWxsIHJlbWFpbiBkaXNhYmxlZC5gKSwhMH1yZXR1cm4hMX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWQ9ITB9ZGlzYWJsZVBsdWdpbigpe3RoaXMuZXZlbnRNYW5hZ2VyPy5jbGVhcigpLHRoaXMuY2xlYXJIb29rcygpLHRoaXMuZW5hYmxlZD0hMX1nZXRTZXR0aW5nKGUpe2NvbnN0'@; put 'IHQ9dGhpcy5jb25zdHJ1Y3Rvci5ERUZBVUxUX1NFVFRJTkdTLHI9dGhpcy5jb25zdHJ1Y3Rvci5TRVRUSU5HU19WQUxJREFUT1JTO2lmKHZvaWQgMD09PWUpcmV0dXJuIGtkKFhkKHRoaXMsUWQpKT9jTChYZCh0aGlzLFFkKSx0KTpYZCh0aGlzLFFkKTtsZXQgaTtpZigoQXJyYXkuaXNBcnJh'@; put 'eShYZCh0aGlzLFFkKSl8fGtkKFhkKHRoaXMsUWQpKSkmJnRbcE9lXT09PWUpaT1BcnJheS5pc0FycmF5KFhkKHRoaXMsUWQpKT9YZCh0aGlzLFFkKTpYZCh0aGlzLFFkKVtlXT8/dFtlXTtlbHNlIGlmKGUuaW5jbHVkZXMoIi4iKSl7Y29uc3Qgbz1rZChYZCh0aGlzLFFkKSk/c0woWGQodGhp'@; put 'cyxRZCksZSk6dm9pZCAwLGE9c0wodCxlKTtpPWtkKG8pP2NMKG8sa2QoYSk/YTp7fSk6dm9pZCAwIT09bz9vOmF9ZWxzZSBpPWtkKFhkKHRoaXMsUWQpKT9jTChYZCh0aGlzLFFkKSx0KVtlXTp0W2VdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiZyJiYib2JqZWN0Ij09dHlwZW9mIHIpe2Nv'@; put 'bnN0IG89cltlXTtpZihvJiYiZnVuY3Rpb24iPT10eXBlb2Ygbyl7Y29uc3QgYT1pO3JldHVybiBkT2UodGhpcyxnT2UsWUZ0KS5jYWxsKHRoaXMsYSxvLGUpfX1yZXR1cm4gaX11cGRhdGVQbHVnaW5TZXR0aW5ncyhlKXtjb25zdCB0PXRoaXMuY29uc3RydWN0b3IuU0VUVElOR1NfVkFMSURB'@; put 'VE9SUztpZih0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExPT09dChlKT92b2lkIEhhKGAke3RoaXMucGx1Z2luTmFtZX0gUGx1Z2luOiBvcHRpb24gaXMgbm90IHZhbGlkIGFuZCBpdCB3aWxsIGJlIGlnbm9yZWQuYCk6KE5UKHRoaXMsUWQsZSks'@; put 'WGQodGhpcyxRZCkpO2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCYma2QoZSkpe2tkKFhkKHRoaXMsUWQpKXx8TlQodGhpcyxRZCx7Li4udGhpcy5jb25zdHJ1Y3Rvci5ERUZBVUxUX1NFVFRJTkdTfSk7Y29uc3Qgcj1rZChYZCh0aGlzLFFkKSk/WGQodGhpcyxRZCk6e307cmV0dXJuIE9iamVj'@; put 'dC5rZXlzKHQpLmZvckVhY2goaT0+e2lmKCEoaSBpbiBlKSlyZXR1cm47Y29uc3Qgbz10W2ldOyExIT09KCFvfHxvKGVbaV0pKT9yW2ldPWVbaV06SGEoYCR7dGhpcy5wbHVnaW5OYW1lfSBQbHVnaW46ICIke2l9IiBvcHRpb24gaXMgbm90IHZhbGlkIGFuZCBpdCB3aWxsIGJlIGlnbm9yZWQu'@; put 'YCl9KSxYZCh0aGlzLFFkKX1yZXR1cm4gTlQodGhpcyxRZCxlKSxlfWFkZEhvb2soZSx0LHIpe1hkKHRoaXMsZl8pW2VdPVhkKHRoaXMsZl8pW2VdfHxbXTtjb25zdCBpPVhkKHRoaXMsZl8pW2VdO3RoaXMuaG90LmFkZEhvb2soZSx0LHIpLGkucHVzaCh0KSxYZCh0aGlzLGZfKVtlXT1pfXJl'@; put 'bW92ZUhvb2tzKGUpe1huKFhkKHRoaXMsZl8pW2VdfHxbXSx0PT57dGhpcy5ob3QucmVtb3ZlSG9vayhlLHQpfSl9Y2xlYXJIb29rcygpe2NvbnN0IGU9WGQodGhpcyxmXyk7YWMoZSwodCxyKT0+dGhpcy5yZW1vdmVIb29rcyhyKSksT2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT5kZWxldGUg'@; put 'ZVt0XSl9Y2FsbE9uUGx1Z2luc1JlYWR5KGUpe3RoaXMuaXNQbHVnaW5zUmVhZHk/ZSgpOnRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzLnB1c2goZSl9b25BZnRlclBsdWdpbnNJbml0aWFsaXplZCgpe1huKHRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzLGU9PmUoKSks'@; put 'dGhpcy5wbHVnaW5zSW5pdGlhbGl6ZWRDYWxsYmFja3MubGVuZ3RoPTAsdGhpcy5pc1BsdWdpbnNSZWFkeT0hMH1vblVwZGF0ZVNldHRpbmdzKGUpe2lmKCF0aGlzLmlzRW5hYmxlZClyZXR1cm47Y29uc3QgdD1kT2UodGhpcyxtT2UsWkZ0KS5jYWxsKHRoaXMsZSk7aWYodGhpcy5lbmFibGVk'@; put 'JiYhdGhpcy5pc0VuYWJsZWQoKSYmdGhpcy5kaXNhYmxlUGx1Z2luKCksIXRoaXMuZW5hYmxlZCYmdGhpcy5pc0VuYWJsZWQoKSl7aWYodGhpcy5pc0hhcmRDb25mbGljdEJsb2NrZWQoKSlyZXR1cm47dGhpcy5lbmFibGVQbHVnaW4oKX10aGlzLmVuYWJsZWQmJnRoaXMuaXNFbmFibGVkKCkm'@; put 'JnRoaXMuaXNIYXJkQ29uZmxpY3RCbG9ja2VkKCk/dGhpcy5kaXNhYmxlUGx1Z2luKCk6dGhpcy5lbmFibGVkJiZ0aGlzLmlzRW5hYmxlZCgpJiZ0JiYodGhpcy51cGRhdGVQbHVnaW5TZXR0aW5ncyhlW3RoaXMuY29uc3RydWN0b3IuUExVR0lOX0tFWV0pLHRoaXMudXBkYXRlUGx1Z2luKGUp'@; put 'KX11cGRhdGVQbHVnaW4oZSl7fWRlc3Ryb3koKXtOVCh0aGlzLFFkLG51bGwpLHRoaXMuZXZlbnRNYW5hZ2VyPy5kZXN0cm95KCksdGhpcy5jbGVhckhvb2tzKCksYWModGhpcywoZSx0KT0+eyJob3QiIT09dCYmUmVmbGVjdC5zZXQodGhpcyx0LG51bGwpfSksZGVsZXRlIHRoaXMudCxSZWZs'@; put 'ZWN0LmRlbGV0ZVByb3BlcnR5KHRoaXMsImhvdCIpfWNvbnN0cnVjdG9yKGUpe2hPZSh0aGlzLGdPZSksaE9lKHRoaXMsbU9lKSx1T2UodGhpcyxRZCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdU9lKHRoaXMsZl8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE5UKHRoaXMsUWQs'@; put 'bnVsbCksdGhpcy5ldmVudE1hbmFnZXI9bmV3IFcyKHRoaXMpLHRoaXMucGx1Z2luTmFtZT1udWxsLHRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzPVtdLHRoaXMuaXNQbHVnaW5zUmVhZHk9ITEsdGhpcy5lbmFibGVkPSExLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsTlQodGhpcyxmXyx7'@; put 'fSksSzUodGhpcywiaG90IixlLHt3cml0YWJsZTohMX0pLEh3PW51bGwsdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQiLCgpPT50aGlzLm9uQWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQoKSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJVcGRhdGVTZXR0aW5ncyIsdD0+'@; put 'e3RoaXMub25VcGRhdGVTZXR0aW5ncyh0KX0pLHRoaXMuaG90LmFkZEhvb2soImJlZm9yZUluaXQiLCgpPT50aGlzLmluaXQoKSl9fWZ1bmN0aW9uIFlGdChuLGUsdCl7cmV0dXJuKC4uLnIpPT57Y29uc3QgaT1uKC4uLnIpO2lmKCExPT09ZShpKSl7Y29uc3QgYT1yLm1hcCh1PT4ic3RyaW5n'@; put 'Ij09dHlwZW9mIHU/YCIke3V9ImA6IiIpLmpvaW4oIiwgIik7cmV0dXJuIHZvaWQgSGEoYCR7dGhpcy5wbHVnaW5OYW1lfSBQbHVnaW46ICIke3R9IiBmdW5jdGlvbiAoJHtyLmxlbmd0aD4wP2E6IiJ9KSByZXN1bHQgICAgICAgICAgICAgICAgaXMgbm90IHZhbGlkIGFuZCB3aWxsIGJlIGln'@; put 'bm9yZWQuYCl9cmV0dXJuIGl9fWZ1bmN0aW9uIFpGdChuKXtpZighbilyZXR1cm4hMTtjb25zdCBlPXRoaXMuY29uc3RydWN0b3IuU0VUVElOR19LRVlTO2lmKCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIGU7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYodm9pZCAwIT09bltlW3Rd'@; put 'XSlyZXR1cm4hMDtyZXR1cm4hMX1jb25zdCBFaGU9Y2xhc3MgR0Z0e2FkZFJvdyhlLHQpe3RoaXMuY29sdW1ucy5sZW5ndGgmJkpyKCJEb2Vzbid0IHN1cHBvcnQgbXVsdGktZGltZW5zaW9uYWwgdGFibGUiKSx0aGlzLnJvd3MubGVuZ3RofHwodGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVD'@; put 'b250YWluZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQuY2xhc3NOYW1lKSk7Y29uc3Qgcj17cm93OmV9O3RoaXMucm93cy5wdXNoKHIpLHRoaXMuc2FtcGxlcz10LHRoaXMudGFibGU9dGhpcy5jcmVhdGVUYWJsZSh0aGlzLmhvdC50YWJsZS5jbGFzc05hbWUpLHRoaXMudGFibGUuY29sR3JvdXAu'@; put 'YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2xHcm91cHNDb2woZSkpLHRoaXMudGFibGUudHIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVSb3coZSkpLHRoaXMuY29udGFpbmVyLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLmZyYWdtZW50KSxyLnRhYmxlPXRoaXMudGFibGUudGFi'@; put 'bGV9YWRkQ29sdW1uSGVhZGVyc1JvdyhlKXtpZihudWxsIT10aGlzLmhvdC5nZXRDb2xIZWFkZXIoMCkpe2NvbnN0IHI9e3JvdzotMX07dGhpcy5yb3dzLnB1c2gociksdGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQuY2xhc3NOYW1lKSx0'@; put 'aGlzLnNhbXBsZXM9ZSx0aGlzLnRhYmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NOYW1lKSx0aGlzLnRhYmxlLmNvbEdyb3VwLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sR3JvdXBzQ29sKCkpLHRoaXMuYXBwZW5kQ29sdW1uSGVhZGVyc1JvdygpLHRoaXMuY29u'@; put 'dGFpbmVyLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLmZyYWdtZW50KSxyLnRhYmxlPXRoaXMudGFibGUudGFibGV9fWFkZENvbHVtbihlLHQpe3RoaXMucm93cy5sZW5ndGgmJkpyKCJEb2Vzbid0IHN1cHBvcnQgbXVsdGktZGltZW5zaW9uYWwgdGFibGUiKSx0aGlzLmNvbHVt'@; put 'bnMubGVuZ3RofHwodGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQuY2xhc3NOYW1lKSk7Y29uc3Qgcj17Y29sOmV9O3RoaXMuY29sdW1ucy5wdXNoKHIpLHRoaXMuc2FtcGxlcz10LHRoaXMudGFibGU9dGhpcy5jcmVhdGVUYWJsZSh0aGlz'@; put 'LmhvdC50YWJsZS5jbGFzc05hbWUpLHRoaXMuZ2V0U2V0dGluZygidXNlSGVhZGVycyIpJiZudWxsIT09dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKGUpJiZ0aGlzLmhvdC52aWV3LmFwcGVuZENvbEhlYWRlcihlLHRoaXMudGFibGUudGgsdm9pZCAwLC0xKSx0aGlzLnRhYmxlLnRCb2R5LmFwcGVu'@; put 'ZENoaWxkKHRoaXMuY3JlYXRlQ29sKGUpKSx0aGlzLmNvbnRhaW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCksci50YWJsZT10aGlzLnRhYmxlLnRhYmxlfWdldEhlaWdodHMoZSl7dGhpcy5pbmplY3RlZHx8dGhpcy5pbmplY3RUYWJsZSgpLFhuKHRoaXMu'@; put 'cm93cyx0PT57Y29uc3R7aGVpZ2h0OnJ9PXQudGFibGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZSh0LnJvdyxNYXRoLnJvdW5kKHIpKX0pfWdldFdpZHRocyhlKXt0aGlzLmluamVjdGVkfHx0aGlzLmluamVjdFRhYmxlKCksWG4odGhpcy5jb2x1bW5zLHQ9Pntjb25zdHt3aWR0aDpyfT10'@; put 'LnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2UodC5jb2wsTWF0aC5jZWlsKHIpKX0pfXNldFNldHRpbmdzKGUpe3RoaXMuc2V0dGluZ3M9ZX1zZXRTZXR0aW5nKGUsdCl7dGhpcy5zZXR0aW5nc3x8KHRoaXMuc2V0dGluZ3M9e3VzZUhlYWRlcnM6ITB9KSx0aGlzLnNldHRpbmdzW2Vd'@; put 'PXR9Z2V0U2V0dGluZ3MoKXtyZXR1cm4gdGhpcy5zZXR0aW5nc31nZXRTZXR0aW5nKGUpe3JldHVybiB0aGlzLnNldHRpbmdzP3RoaXMuc2V0dGluZ3NbZV06bnVsbH1jcmVhdGVDb2xHcm91cHNDb2woZSl7Y29uc3QgdD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn'@; put 'bWVudCgpO3JldHVybiB0aGlzLmhvdC5oYXNSb3dIZWFkZXJzKCkmJnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2xFbGVtZW50KC0xLC0xKSksdGhpcy5zYW1wbGVzLmZvckVhY2gocj0+e1huKHIuc3RyaW5ncyxpPT57dC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUNvbEVsZW1lbnQoaS5j'@; put 'b2wsZSkpfSl9KSx0fWNyZWF0ZVJvdyhlKXtjb25zdCB0PXRoaXMuaG90LnJvb3REb2N1bWVudCxyPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGk9dC5jcmVhdGVFbGVtZW50KCJ0aCIpO3JldHVybiB0aGlzLmhvdC5oYXNSb3dIZWFkZXJzKCkmJih0aGlzLmhvdC52aWV3LmFwcGVuZFJv'@; put 'd0hlYWRlcihlLGkpLHIuYXBwZW5kQ2hpbGQoaSkpLHRoaXMuc2FtcGxlcy5mb3JFYWNoKG89PntYbihvLnN0cmluZ3MsYT0+e2NvbnN0IGw9YS5jb2wsdT10aGlzLmhvdC5nZXRDZWxsTWV0YShlLGwpLGc9dGhpcy5ob3QuZ2V0Q2VsbFJlbmRlcmVyKHUpLEU9dC5jcmVhdGVFbGVtZW50KCJ0'@; put 'ZCIpO0Uuc2V0QXR0cmlidXRlKCJnaG9zdC10YWJsZSIsIjEiKSxnKHRoaXMuaG90LEUsZSxsLHRoaXMuaG90LmNvbFRvUHJvcChsKSxhLnZhbHVlLHUpLHIuYXBwZW5kQ2hpbGQoRSl9KX0pLHJ9YXBwZW5kQ29sdW1uSGVhZGVyc1Jvdygpe2NvbnN0IGU9dGhpcy5ob3Qucm9vdERvY3VtZW50'@; put 'LHQ9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscj1bXTtpZih0aGlzLmhvdC5oYXNSb3dIZWFkZXJzKCkpe2NvbnN0IGk9ZS5jcmVhdGVFbGVtZW50KCJ0aCIpO3IucHVzaChbLTEsaV0pLHQuYXBwZW5kQ2hpbGQoaSl9dGhpcy5zYW1wbGVzLmZvckVhY2goaT0+e1huKGkuc3RyaW5ncyxv'@; put 'PT57Y29uc3QgYT1vLmNvbCxsPWUuY3JlYXRlRWxlbWVudCgidGgiKTtyLnB1c2goW2EsbF0pLHQuYXBwZW5kQ2hpbGQobCl9KX0pLHRoaXMudGFibGUudEhlYWQuYXBwZW5kQ2hpbGQodCksWG4ocixpPT57Y29uc3RbbyxhXT1pO3RoaXMuaG90LnZpZXcuYXBwZW5kQ29sSGVhZGVyKG8sYSl9'@; put 'KX1jcmVhdGVDb2woZSl7Y29uc3QgdD10aGlzLmhvdC5yb290RG9jdW1lbnQscj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdGhpcy5zYW1wbGVzLmZvckVhY2goaT0+e1huKGkuc3RyaW5ncyxvPT57Y29uc3QgYT1vLnJvdyxsPXRoaXMuaG90LmdldENlbGxNZXRhKGEsZSks'@; put 'dT10aGlzLmhvdC5nZXRDZWxsUmVuZGVyZXIobCksZz10LmNyZWF0ZUVsZW1lbnQoInRkIiksRT10LmNyZWF0ZUVsZW1lbnQoInRyIik7Zy5zZXRBdHRyaWJ1dGUoImdob3N0LXRhYmxlIiwiMSIpLHUodGhpcy5ob3QsZyxhLGUsdGhpcy5ob3QuY29sVG9Qcm9wKGUpLG8udmFsdWUsbCksRS5h'@; put 'cHBlbmRDaGlsZChnKSxyLmFwcGVuZENoaWxkKEUpfSl9KSxyfWNsZWFuKCl7dGhpcy5yb3dzLmxlbmd0aD0wLHRoaXMucm93c1stMV09dm9pZCAwLHRoaXMuY29sdW1ucy5sZW5ndGg9MCx0aGlzLnNhbXBsZXMmJnRoaXMuc2FtcGxlcy5jbGVhcigpLHRoaXMuc2FtcGxlcz1udWxsLHRoaXMu'@; put 'cmVtb3ZlVGFibGUoKX1pbmplY3RUYWJsZShlPW51bGwpe3RoaXMuaW5qZWN0ZWR8fCgoZXx8dGhpcy5ob3Qucm9vdEVsZW1lbnQpLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLmZyYWdtZW50KSx0aGlzLmluamVjdGVkPSEwKX1yZW1vdmVUYWJsZSgpe3RoaXMuaW5qZWN0ZWQmJnRoaXMu'@; put 'Y29udGFpbmVyLmNvbnRhaW5lci5wYXJlbnROb2RlJiYodGhpcy5jb250YWluZXIuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIuY29udGFpbmVyKSx0aGlzLmNvbnRhaW5lcj1udWxsLHRoaXMuaW5qZWN0ZWQ9ITEpfWNyZWF0ZUNvbEVsZW1lbnQoZSx0'@; put 'KXtjb25zdCByPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjb2wiKTtsZXQgaT0wO3Q+PTAmJmU+PTAmJihpPU51bWJlcih0aGlzLmhvdC5nZXRDZWxsTWV0YSh0LGUpLmNvbHNwYW4pKTtsZXQgbz10aGlzLmhvdC5nZXRDb2xXaWR0aChlKTtpZihpPjEpZm9yKGxldCBh'@; put 'PWUrMTthPGUraTthKyspbys9dGhpcy5ob3QuZ2V0Q29sV2lkdGgoYSk7cmV0dXJuIHIuc3R5bGUud2lkdGg9YCR7b31weGAscn1jcmVhdGVUYWJsZShlPSIiKXtjb25zdCB0PXRoaXMuaG90LnJvb3REb2N1bWVudCxyPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGk9dC5jcmVhdGVFbGVt'@; put 'ZW50KCJ0YWJsZSIpLG89dC5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpLGE9dC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLGw9dC5jcmVhdGVFbGVtZW50KCJjb2xncm91cCIpLHU9dC5jcmVhdGVFbGVtZW50KCJ0ciIpLGc9dC5jcmVhdGVFbGVtZW50KCJ0aCIpO3JldHVybiB0aGlzLmlzVmVydGlj'@; put 'YWwoKSYmaS5hcHBlbmRDaGlsZChsKSx0aGlzLmlzSG9yaXpvbnRhbCgpJiYodS5hcHBlbmRDaGlsZChnKSxvLmFwcGVuZENoaWxkKHUpLGkuc3R5bGUudGFibGVMYXlvdXQ9ImF1dG8iLGkuc3R5bGUud2lkdGg9ImF1dG8iKSxpLmFwcGVuZENoaWxkKG8pLHRoaXMuaXNWZXJ0aWNhbCgpJiZh'@; put 'LmFwcGVuZENoaWxkKHUpLGkuYXBwZW5kQ2hpbGQoYSksWXIoaSxlKSxyLmFwcGVuZENoaWxkKGkpLHtmcmFnbWVudDpyLHRhYmxlOmksdEhlYWQ6byx0Qm9keTphLGNvbEdyb3VwOmwsdHI6dSx0aDpnfX1jcmVhdGVDb250YWluZXIoZT0iIil7Y29uc3QgdD10aGlzLmhvdC5yb290RG9jdW1l'@; put 'bnQscj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxpPXQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIFlyKGksYGh0R2hvc3RUYWJsZSBodEF1dG9TaXplICR7ZS50cmltKCl9YCksci5hcHBlbmRDaGlsZChpKSx7ZnJhZ21lbnQ6cixjb250YWluZXI6aX19aXNWZXJ0aWNhbCgpe3Jl'@; put 'dHVybiEoIXRoaXMucm93cy5sZW5ndGh8fHRoaXMuY29sdW1ucy5sZW5ndGgpfWlzSG9yaXpvbnRhbCgpe3JldHVybiEoIXRoaXMuY29sdW1ucy5sZW5ndGh8fHRoaXMucm93cy5sZW5ndGgpfWNvbnN0cnVjdG9yKGUpe3RoaXMuaG90PW51bGwsdGhpcy5jb250YWluZXI9bnVsbCx0aGlzLmlu'@; put 'amVjdGVkPSExLHRoaXMucm93cz1bXSx0aGlzLmNvbHVtbnM9W10sdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5zZXR0aW5ncz17dXNlSGVhZGVyczohMH0sdGhpcy50YWJsZT1udWxsLHRoaXMuaG90PWV9fTtjbGFzcyBNaGV7c3RhdGljIGdldCBTQU1QTEVfQ09VTlQoKXtyZXR1cm4gM31nZXRT'@; put 'YW1wbGVDb3VudCgpe3JldHVybiB0aGlzLmN1c3RvbVNhbXBsZUNvdW50P3RoaXMuY3VzdG9tU2FtcGxlQ291bnQ6TWhlLlNBTVBMRV9DT1VOVH1zZXRTYW1wbGVDb3VudChlKXt0aGlzLmN1c3RvbVNhbXBsZUNvdW50PWV9c2V0QWxsb3dEdXBsaWNhdGVzKGUpe3RoaXMuYWxsb3dEdXBsaWNh'@; put 'dGVzPWV9c2V0SW5jbHVkZUhpZGRlbihlKXt0aGlzLmluY2x1ZGVIaWRkZW49ZX1nZW5lcmF0ZVJvd1NhbXBsZXMoZSx0KXtyZXR1cm4gdGhpcy5nZW5lcmF0ZVNhbXBsZXMoInJvdyIsdCxlKX1nZW5lcmF0ZUNvbHVtblNhbXBsZXMoZSx0KXtyZXR1cm4gdGhpcy5nZW5lcmF0ZVNhbXBsZXMo'@; put 'ImNvbCIsdCxlKX1nZW5lcmF0ZVNhbXBsZXMoZSx0LHIpe2NvbnN0IGk9bmV3IE1hcCx7ZnJvbTpvLHRvOmF9PSJudW1iZXIiPT10eXBlb2Ygcj97ZnJvbTpyLHRvOnJ9OnI7cmV0dXJuIFZhKG8sYSxsPT57Y29uc3QgdT10aGlzLmdlbmVyYXRlU2FtcGxlKGUsdCxsKTtpLnNldChsLHUpfSks'@; put 'aX1nZW5lcmF0ZVNhbXBsZShlLHQscil7InJvdyIhPT1lJiYiY29sIiE9PWUmJkpyKCJVbnN1cHBvcnRlZCBzYW1wbGUgdHlwZSIpO2NvbnN0IGk9bmV3IE1hcCxvPSJyb3ciPT09ZT8iY29sIjoicm93IixhPVtdO3JldHVybiBWYSh0LmZyb20sdC50byxsPT57Y29uc3QgdT0icm93Ij09PWU/'@; put 'dGhpcy5kYXRhRmFjdG9yeShyLGwsdGhpcyk6dGhpcy5kYXRhRmFjdG9yeShsLHIsdGhpcyk7aWYoITE9PT11KXJldHVybjtjb25zdHt2YWx1ZTpnLGJ1bmRsZVNlZWQ6RX09dSxPPSJzdHJpbmciPT10eXBlb2YgRSYmRS5sZW5ndGg+MDtsZXQgWjtaPU8/RTprZChnKT9gJHtPYmplY3Qua2V5'@; put 'cyhnKS5sZW5ndGh9YDpBcnJheS5pc0FycmF5KGcpP2Ake2cubGVuZ3RofWA6YCR7UGwoZykubGVuZ3RofWAsaS5oYXMoWil8fGkuc2V0KFose25lZWRlZDp0aGlzLmdldFNhbXBsZUNvdW50KCksc3RyaW5nczpbXX0pO2NvbnN0IGVlPWkuZ2V0KFopO2VlJiZlZS5uZWVkZWQmJighKGEuaW5k'@; put 'ZXhPZihnKT4tMSl8fHRoaXMuYWxsb3dEdXBsaWNhdGVzfHxPKSYmKGVlLnN0cmluZ3MucHVzaCh7dmFsdWU6Zyxbb106bH0pLGEucHVzaChnKSxlZS5uZWVkZWQtPTEpfSksaX1jb25zdHJ1Y3RvcihlKXt0aGlzLnNhbXBsZXM9bnVsbCx0aGlzLmRhdGFGYWN0b3J5PW51bGwsdGhpcy5jdXN0'@; put 'b21TYW1wbGVDb3VudD1udWxsLHRoaXMuYWxsb3dEdXBsaWNhdGVzPSExLHRoaXMuaW5jbHVkZUhpZGRlbj0hMSx0aGlzLmRhdGFGYWN0b3J5PWV9fWNvbnN0IHZPZT1NaGU7ZnVuY3Rpb24gX09lKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxp'@; put 'emUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB5T2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5n'@; put 'ZXQobil9ZnVuY3Rpb24gYTIobixlKXtyZXR1cm4gZnVuY3Rpb24gJEZ0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix5T2UobixlLCJnZXQiKSl9ZnVuY3Rpb24gcDYobixlLHQpe19PZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gRzIobixlLHQpe3JldHVy'@; put 'biBmdW5jdGlvbiBxRnQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHlPZShuLGUsInNldCIpLHQpLHR9'@; put 'ZnVuY3Rpb24gTk8obixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gVGhlKG4sZSl7X09lKG4sZSksZS5hZGQobil9R28uZ2V0U2luZ2xldG9uKCku'@; put 'cmVnaXN0ZXIoIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIpO2NvbnN0IHhoZT0iYXV0b0NvbHVtblNpemUiO3ZhciBJWj1uZXcgV2Vha01hcCxWdz1uZXcgV2Vha01hcCxCdz1uZXcgV2Vha01hcCxGVD1uZXcgV2Vha01hcCxiT2U9bmV3IFdlYWtTZXQsQWhlPW5ldyBXZWFrU2V0LGtoZT1u'@; put 'ZXcgV2Vha1NldCxSaGU9bmV3IFdlYWtNYXAsSWhlPW5ldyBXZWFrTWFwLERoZT1uZXcgV2Vha01hcCxEWj1uZXcgV2Vha01hcCxMaGU9bmV3IFdlYWtNYXAsT2hlPW5ldyBXZWFrTWFwO2NsYXNzIEZPIGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIHhoZX1zdGF0'@; put 'aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAxMH1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVybiEwfXN0YXRpYyBnZXQgREVGQVVMVF9TRVRUSU5HUygpe3JldHVybnt1c2VIZWFkZXJzOiEwLHNhbXBsaW5nUmF0aW86bnVsbCxhbGxvd1NhbXBsZUR1cGxpY2F0ZXM6ITF9'@; put 'fXN0YXRpYyBnZXQgQ0FMQ1VMQVRJT05fU1RFUCgpe3JldHVybiA1MH1zdGF0aWMgZ2V0IFNZTkNfQ0FMQ1VMQVRJT05fTElNSVQoKXtyZXR1cm4gNTB9aXNFbmFibGVkKCl7cmV0dXJuITEhPT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3hoZV0mJiF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmNv'@; put 'bFdpZHRoc31lbmFibGVQbHVnaW4oKXtpZih0aGlzLmVuYWJsZWQpcmV0dXJuO3RoaXMuZ2hvc3RUYWJsZS5zZXRTZXR0aW5nKCJ1c2VIZWFkZXJzIix0aGlzLmdldFNldHRpbmcoInVzZUhlYWRlcnMiKSksdGhpcy5zYW1wbGVzR2VuZXJhdG9yLnNldEFsbG93RHVwbGljYXRlcyh0aGlzLmdl'@; put 'dFNldHRpbmcoImFsbG93U2FtcGxlRHVwbGljYXRlcyIpKTtjb25zdCBlPXRoaXMuZ2V0U2V0dGluZygic2FtcGxpbmdSYXRpbyIpO2UmJiFpc05hTihlKSYmdGhpcy5zYW1wbGVzR2VuZXJhdG9yLnNldFNhbXBsZUNvdW50KHBhcnNlSW50KFN0cmluZyhlKSwxMCkpLHRoaXMuYWRkSG9vaygi'@; put 'YWZ0ZXJMb2FkRGF0YSIsYTIodGhpcyxJaGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZUNoYW5nZVJlbmRlciIsYTIodGhpcyxEaGUpKSx0aGlzLmFkZEhvb2soImFmdGVyRm9ybXVsYXNWYWx1ZXNVcGRhdGUiLGEyKHRoaXMsT2hlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW5kZXIiLGEyKHRo'@; put 'aXMsUmhlKSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsKHQscik9PnRoaXMuZ2V0Q29sdW1uV2lkdGgocix0KSwtMTApLHRoaXMuYWRkSG9vaygiaW5pdCIsYTIodGhpcyxMaGUpKSxHMih0aGlzLEZULHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLm9ic2VydmVNYXBDaGFuZ2Uo'@; put 'dGhpcy5jb2x1bW5XaWR0aHNNYXAsKCk9Pnt0aGlzLmhvdC52aWV3Py5pbnZhbGlkYXRlQ29sdW1uV2lkdGhDYWNoZSgpfSkpLHN1cGVyLmVuYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe0cyKHRoaXMsQncsdGhpcy5maW5kQ29sdW1uc1doZXJlSGVhZGVyV2FzQ2hhbmdlZCgpKSxzdXBl'@; put 'ci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7YTIodGhpcyxGVCkmJihhMih0aGlzLEZUKS5jYWxsKHRoaXMpLEcyKHRoaXMsRlQsbnVsbCkpLHN1cGVyLmRpc2FibGVQbHVnaW4oKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsYTIodGhpcyxEWikpfWNhbGN1bGF0'@; put 'ZVZpc2libGVDb2x1bW5zV2lkdGgoKXtpZighdGhpcy5ob3QuY291bnRSb3dzKCkpcmV0dXJuO2NvbnN0IGU9dGhpcy5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSx0PXRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKTstMSE9PWUmJi0xIT09dCYmdGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgo'@; put 'e2Zyb206ZSx0bzp0fSx2b2lkIDAsdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyKX1jYWxjdWxhdGVDb2x1bW5zV2lkdGgoZT17ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Q29scygpLTF9LHQ9e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudFJvd3MoKS0xfSxyPSExKXtjb25zdCBpPSJudW1iZXIi'@; put 'PT10eXBlb2YgZT97ZnJvbTplLHRvOmV9OmUsbz0ibnVtYmVyIj09dHlwZW9mIHQ/e2Zyb206dCx0bzp0fTp0O1ZhKGkuZnJvbSxpLnRvLGE9PntsZXQgbD10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGEpO251bGw9PT1sJiYobD1hKSwocnx8bnVsbD09PXRoaXMuY29sdW1uV2lkdGhzTWFw'@; put 'LmdldFZhbHVlQXRJbmRleChsKSYmIXRoaXMuaG90Ll9nZXRDb2xXaWR0aEZyb21TZXR0aW5ncyhsKSkmJk5PKHRoaXMsQWhlLHdPZSkuY2FsbCh0aGlzLGEsbyl9KSx0aGlzLmdob3N0VGFibGUuY29sdW1ucy5sZW5ndGgmJihOTyh0aGlzLGtoZSxDT2UpLmNhbGwodGhpcyksdGhpcy5tZWFz'@; put 'dXJlZENvbHVtbnM9aS50bysxLHRoaXMuZ2hvc3RUYWJsZS5jbGVhbigpKX1jYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgoZT17ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Um93cygpLTF9LHQ9ITEpe2xldCByPTA7Y29uc3QgaT10aGlzLmhvdC5jb3VudENvbHMoKS0xO2xldCBvPTA7dGhpcy5p'@; put 'blByb2dyZXNzPSEwO2NvbnN0IGE9KCk9PntpZighdGhpcy5ob3QpcmV0dXJuIGRMKG8pLHZvaWQodGhpcy5pblByb2dyZXNzPSExKTt0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aCh7ZnJvbTpyLHRvOk1hdGgubWluKHIrRk8uQ0FMQ1VMQVRJT05fU1RFUCxpKX0sZSx0KSxyPXIrRk8uQ0FM'@; put 'Q1VMQVRJT05fU1RFUCsxLHI8aT9vPXVMKGEpOihkTChvKSx0aGlzLmluUHJvZ3Jlc3M9ITEsdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSl9LGw9dGhpcy5nZXRTeW5jQ2FsY3VsYXRpb25MaW1pdCgpO2w+PTAmJih0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aCh7ZnJvbTow'@; put 'LHRvOmx9LGUsdCkscj1sKzEpLHI8aT9hKCk6dGhpcy5pblByb2dyZXNzPSExfXJlY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCl7dGhpcy5ob3Qudmlldy5pc1Zpc2libGUoKSYmdGhpcy5jYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgoe2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudFJvd3MoKS0x'@; put 'fSwhMCl9Z2V0U3luY0NhbGN1bGF0aW9uTGltaXQoKXtjb25zdCBlPXRoaXMuaG90LmdldFNldHRpbmdzKClbeGhlXTtsZXQgdD1GTy5TWU5DX0NBTENVTEFUSU9OX0xJTUlUO2NvbnN0IHI9dGhpcy5ob3QuY291bnRDb2xzKCktMTtpZihDYShlKSl7Y29uc3QgaT1lLnN5bmNMaW1pdDtpZigi'@; put 'c3RyaW5nIj09dHlwZW9mIGkmJndzZShpKSl0PW5sZShyLGkpO2Vsc2V7Y29uc3Qgbz1OdW1iZXIoaSk7dD1OdW1iZXIuaXNGaW5pdGUobyk/TWF0aC50cnVuYyhvKTowfX1yZXR1cm4gTWF0aC5taW4odCxyKX1nZXRDb2x1bW5XaWR0aChlLHQscj0hMCl7bGV0IGk9dDtyZXR1cm4gdm9pZCAw'@; put 'PT09aSYmKGk9dGhpcy5jb2x1bW5XaWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSkpLHImJiJudW1iZXIiPT10eXBlb2YgaSYmKGk9TWF0aC5tYXgoaSw1MCkpKSxpfWdldEZpcnN0VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmhvdC5nZXRG'@; put 'aXJzdFJlbmRlcmVkVmlzaWJsZUNvbHVtbigpPz8tMX1nZXRMYXN0VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmhvdC5nZXRMYXN0UmVuZGVyZWRWaXNpYmxlQ29sdW1uKCk/Py0xfWZpbmRDb2x1bW5zV2hlcmVIZWFkZXJXYXNDaGFuZ2VkKCl7cmV0dXJuIHRoaXMuaG90LmdldENvbEhl'@; put 'YWRlcigpLnJlZHVjZSgocixpLG8pPT57Y29uc3QgYT1hMih0aGlzLFZ3KS5sZW5ndGg7aWYoYS0xPG98fGEyKHRoaXMsVncpW29dIT09aSl7Y29uc3QgbD10aGlzLmhvdC50b1Zpc3VhbENvbHVtbihvKTtudWxsIT09bCYmci5wdXNoKGwpfXJldHVybiBhLTE8bz9hMih0aGlzLFZ3KS5wdXNo'@; put 'KGkpOmEyKHRoaXMsVncpW29dPWkscn0sW10pfWNsZWFyQ2FjaGUoZSl7QXJyYXkuaXNBcnJheShlKT90aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e2UuZm9yRWFjaCh0PT57dGhpcy5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KHQsbnVsbCl9KX0sITApOnRoaXMuY29sdW1u'@; put 'V2lkdGhzTWFwLmNsZWFyKCl9aXNOZWVkUmVjYWxjdWxhdGUoKXtyZXR1cm4hIXRoaXMuY29sdW1uV2lkdGhzTWFwLmdldFZhbHVlcygpLnNsaWNlKDAsdGhpcy5tZWFzdXJlZENvbHVtbnMpLmZpbHRlcihlPT5udWxsPT09ZSkubGVuZ3RofWRlc3Ryb3koKXt0aGlzLmdob3N0VGFibGUuY2xl'@; put 'YW4oKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksVGhlKHRoaXMsYk9lKSxUaGUodGhpcyxBaGUpLFRoZSh0aGlzLGtoZSkscDYodGhpcyxJWix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscDYodGhpcyxWdyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSks'@; put 'cDYodGhpcyxCdyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscDYodGhpcyxGVCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscDYodGhpcyxSaGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHA2KHRoaXMsSWhlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxwNih0aGlz'@; put 'LERoZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscDYodGhpcyxEWix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscDYodGhpcyxMaGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHA2KHRoaXMsT2hlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLmdob3N0VGFi'@; put 'bGU9bmV3IEVoZSh0aGlzLmhvdCksdGhpcy5zYW1wbGVzR2VuZXJhdG9yPW5ldyB2T2UoKHQscik9Pntjb25zdCBpPXRoaXMuaG90LnRvUGh5c2ljYWxSb3codCksbz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHIpO2lmKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmlzSGlkZGVuKGkpfHx0'@; put 'aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbihvKSlyZXR1cm4hMTtjb25zdCBhPXRoaXMuaG90LmdldENlbGxNZXRhKHQscik7bGV0IGw9IiIsdT0iIjtpZihhLmhpZGRlbilyZXR1cm4hMTthLnNwYW5uZWR8fCh1PXRoaXMuaG90LmdldERhdGFBdENlbGwodCxyKSxsPXUsImZ1'@; put 'bmN0aW9uIj09dHlwZW9mIGEudmFsdWVGb3JtYXR0ZXImJihsPWEudmFsdWVGb3JtYXR0ZXIobCxhKSx1PWwpKTtsZXQgZz0iIjtyZXR1cm4gdGhpcy5ob3QuaGFzSG9vaygibW9kaWZ5QXV0b0NvbHVtblNpemVTZWVkIikmJihnPVN0cmluZyh0aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5QXV0'@; put 'b0NvbHVtblNpemVTZWVkIixnLGEsdSk/P2cpKSx7dmFsdWU6bCxidW5kbGVTZWVkOmd9fSksdGhpcy5pblByb2dyZXNzPSExLHRoaXMubWVhc3VyZWRDb2x1bW5zPTAsdGhpcy5jb2x1bW5XaWR0aHNNYXA9bmV3IG5fLEcyKHRoaXMsSVosITEpLEcyKHRoaXMsVncsW10pLEcyKHRoaXMsQncs'@; put 'W10pLEcyKHRoaXMsRlQsbnVsbCksRzIodGhpcyxSaGUsKCk9Pnt0aGlzLmNhbGN1bGF0ZVZpc2libGVDb2x1bW5zV2lkdGgoKSx0aGlzLmluUHJvZ3Jlc3N8fChOTyh0aGlzLGJPZSxRRnQpLmNhbGwodGhpcyxhMih0aGlzLEJ3KSksRzIodGhpcyxCdyxbXSkpfSksRzIodGhpcyxJaGUsKHQs'@; put 'cik9PntyfHx0aGlzLnJlY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCl9KSxHMih0aGlzLERoZSx0PT57Y29uc3Qgcj10LnJlZHVjZSgoaSxbLG9dKT0+e2NvbnN0IGE9dGhpcy5ob3QucHJvcFRvQ29sKG8pO3JldHVybiBudWxsIT09YSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmLTE9PT1pLmlu'@; put 'ZGV4T2YoYSkmJmkucHVzaChhKSxpfSxbXSk7YTIodGhpcyxCdykucHVzaCguLi5yKX0pLEcyKHRoaXMsRFosKHQscixpKT0+e2xldCBvPXQ7cmV0dXJuIGkmJih0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aChyLHZvaWQgMCwhMCksbz10aGlzLmdldENvbHVtbldpZHRoKHIsdm9pZCAwLCEx'@; put 'KT8/byksb30pLEcyKHRoaXMsTGhlLCgpPT57RzIodGhpcyxWdyx0aGlzLmhvdC5nZXRDb2xIZWFkZXIoKSksdGhpcy5yZWNhbGN1bGF0ZUFsbENvbHVtbnNXaWR0aCgpLEcyKHRoaXMsSVosITApfSksRzIodGhpcyxPaGUsdD0+e2lmKCFhMih0aGlzLElaKSlyZXR1cm47Y29uc3QgaT10aGlz'@; put 'LmhvdC5nZXRQbHVnaW4oImZvcm11bGFzIik/LnNoZWV0SWQsbz10LnJlZHVjZSgoYSxsKT0+e2NvbnN0IHU9bDtpZihudWxsIT1pJiZ1LmFkZHJlc3M/LnNoZWV0IT09aSlyZXR1cm4gYTtjb25zdCBnPU51bWJlcih1LmFkZHJlc3M/LmNvbCk7aWYoTnVtYmVyLmlzSW50ZWdlcihnKSl7Y29u'@; put 'c3QgRT10aGlzLmhvdC50b1Zpc3VhbENvbHVtbihnKTtudWxsIT09RSYmLTE9PT1hLmluZGV4T2YoRSkmJmEucHVzaChFKX1yZXR1cm4gYX0sW10pO2EyKHRoaXMsQncpLnB1c2goLi4ubyl9KSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1hcCgiYXV0b0NvbHVtblNpemUi'@; put 'LHRoaXMuY29sdW1uV2lkdGhzTWFwKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsYTIodGhpcyxEWikpfX1mdW5jdGlvbiBRRnQobil7Y29uc3QgZT17ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Um93cygpLTF9O24uZm9yRWFjaCh0PT57Y29uc3Qgcj10aGlzLmhvdC50b1Bo'@; put 'eXNpY2FsQ29sdW1uKHQpO251bGwhPT1yJiYodGhpcy5ob3QuX2dldENvbFdpZHRoRnJvbVNldHRpbmdzKHIpfHxOTyh0aGlzLEFoZSx3T2UpLmNhbGwodGhpcyx0LGUpKX0pLHRoaXMuZ2hvc3RUYWJsZS5jb2x1bW5zLmxlbmd0aCYmKE5PKHRoaXMsa2hlLENPZSkuY2FsbCh0aGlzKSx0aGlz'@; put 'Lmdob3N0VGFibGUuY2xlYW4oKSl9ZnVuY3Rpb24gd09lKG4sZSl7dGhpcy5zYW1wbGVzR2VuZXJhdG9yLmdlbmVyYXRlQ29sdW1uU2FtcGxlcyhuLGUpLmZvckVhY2goKHIsaSk9PnRoaXMuZ2hvc3RUYWJsZS5hZGRDb2x1bW4oaSxyKSl9ZnVuY3Rpb24gQ09lKCl7dGhpcy5ob3QuYmF0Y2hF'@; put 'eGVjdXRpb24oKCk9Pnt0aGlzLmdob3N0VGFibGUuZ2V0V2lkdGhzKChuLGUpPT57Y29uc3QgdD10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKG4pO3RoaXMuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleCh0LGUpfSl9LCEwKX1mdW5jdGlvbiBTT2UobixlLHQscixpKXtsZXQgbz0w'@; put 'O2ZvcihsZXQgYT10O2E8PXI7YSsrKXtjb25zdCBsPW4uZ2V0Q2VsbChlLGEsITApO2lmKCFsKWNvbnRpbnVlO2NvbnN0IHU9bC5vZmZzZXRXaWR0aDtpZihpPG8rdSlyZXR1cm4gYTtvKz11O2NvbnN0e2NvbHNwYW46Z309bi5nZXRDZWxsTWV0YShlLGEpO3ZvaWQgMCE9PWcmJmc+MSYmKGEr'@; put 'PWctMSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gTmhlKG4sZSx0LHIsaSl7bGV0IG89MDtmb3IobGV0IGE9dDthPD1yO2ErKyl7Y29uc3QgbD1uLmdldENlbGwoYSxlLCEwKTtpZighbCljb250aW51ZTtjb25zdCB1PWwub2Zmc2V0SGVpZ2h0O2lmKGk8byt1KXJldHVybiBhO28rPXU7Y29uc3R7'@; put 'cm93c3BhbjpnfT1uLmdldENlbGxNZXRhKGEsZSk7dm9pZCAwIT09ZyYmZz4xJiYoYSs9Zy0xKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBFT2UobixlLHQpe2NvbnN0e3ZpZXc6cixjb2x1bW5JbmRleE1hcHBlcjppLHJvd0luZGV4TWFwcGVyOm99PW4sYT1uLmlzUnRsKCksbD1yLmNvdW50Tm90'@; put 'SGlkZGVuRml4ZWRDb2x1bW5zU3RhcnQoKSx1PXIuY291bnROb3RIaWRkZW5GaXhlZFJvd3NUb3AoKSxnPXIuY291bnROb3RIaWRkZW5GaXhlZFJvd3NCb3R0b20oKSxFPW4uZ2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCksTz1uLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCksWj1u'@; put 'LmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpLGVlPW4uZ2V0TGFzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKSx2ZT1uLnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE1lPW4uaGFzQ29sSGVhZGVycygpP3IuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCk6MCxIZT1u'@; put 'Lmhhc1Jvd0hlYWRlcnMoKT9yLmdldFJvd0hlYWRlcldpZHRoKCk6MCx7cm9vdFdpbmRvdzpXZX09bixhdD1yLmlzSG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCk/TWF0aC5taW4oMCx2ZS5sZWZ0KTp2ZS5sZWZ0LEN0PXIuaXNWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCk/'@; put 'TWF0aC5taW4oMCx2ZS50b3ApOnZlLnRvcCxBdD1yLmlzSG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCk/V2UuaW5uZXJXaWR0aDp2ZS5sZWZ0K3IuZ2V0Vmlld3BvcnRXaWR0aCgpK0hlLEt0PXIuaXNWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCk/V2UuaW5uZXJIZWlnaHQ6'@; put 'dmUudG9wK3IuZ2V0Vmlld3BvcnRIZWlnaHQoKStNZSxxdD1WcyhlLGF0LEF0KSxnbj1Wcyh0LEN0LEt0KTtsZXQgVG49bnVsbDtpZihsPjApe2NvbnN0IHFyPWkuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCgwKSwkbj1pLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgobC0xKSxU'@; put 'cj1udWxsIT09cXI/aS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgocXIsMSk6bnVsbDtpZihudWxsIT09VHImJm51bGwhPT0kbil7Y29uc3Qgcmk9bi5nZXRDZWxsKEUsVHIsITApO2lmKHJpIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe2NvbnN0IGZuPXJpLmdldEJvdW5kaW5nQ2xpZW50UmVj'@; put 'dCgpO1RuPVNPZShuLEUsVHIsJG4sYT9mbi5yaWdodC1xdDpxdC1mbi5sZWZ0KX19fWlmKG51bGw9PT1Ubil7Y29uc3QgcXI9bi5nZXRDZWxsKEUsWiwhMCk7aWYocXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Y29uc3QgJG49cXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVHI9YT8kbi5y'@; put 'aWdodC1xdDpxdC0kbi5sZWZ0O1RuPVNPZShuLEUsWixlZSxUciksbnVsbD09PVRuJiYoVG49VHI8MD9aPz8wOmVlPz9uLmNvdW50Q29scygpLTEpfWVsc2UgVG49Wj8/MH1sZXQgQ249bnVsbDtpZih1PjApe2NvbnN0IHFyPW8uZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCgwKSwkbj1v'@; put 'LmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodS0xKSxUcj1udWxsIT09cXI/by5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgocXIsMSk6bnVsbDtpZihudWxsIT09VHImJm51bGwhPT0kbil7Y29uc3Qgcmk9bi5nZXRDZWxsKFRyLFosITApO3JpIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQm'@; put 'JihDbj1OaGUobixaLFRyLCRuLGduLXJpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpfX1pZihudWxsPT09Q24mJmc+MCl7Y29uc3QgcXI9by5nZXROb3RIaWRkZW5JbmRleGVzTGVuZ3RoKCksJG49by5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHFyLWcpLFRyPW8uZ2V0Vmlz'@; put 'dWFsRnJvbVJlbmRlcmFibGVJbmRleChxci0xKSxyaT1udWxsIT09JG4/by5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoJG4sMSk6bnVsbCxmbj1udWxsIT09VHI/by5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoVHIsLTEpOm51bGw7aWYobnVsbCE9PXJpJiZudWxsIT09Zm4pe2NvbnN0IHly'@; put 'PW4uZ2V0Q2VsbChyaSxaLCEwKTtpZih5ciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBIcj1nbi15ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7SHI+PTAmJihDbj1OaGUobixaLHJpLGZuLEhyKSxudWxsPT09Q24mJihDbj1mbikpfX19aWYobnVsbD09PUNuKXtjb25zdCBx'@; put 'cj1uLmdldENlbGwoRSxaLCEwKTtpZihxciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtjb25zdCBUcj1nbi1xci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7Q249TmhlKG4sWixFLE8sVHIpLG51bGw9PT1DbiYmKENuPVRyPDA/RT8/MDpPPz9uLmNvdW50Um93cygpLTEpfWVsc2UgQ249'@; put 'RT8/MH1yZXR1cm4obnVsbD09PUNufHxudWxsPT09VG4pJiZKcigiRmFpbGVkIHRvIHJlc29sdmUgY2VsbCBjb29yZGluYXRlcyBmcm9tIG1vdXNlIHBvc2l0aW9uLiIpLG4uX2NyZWF0ZUNlbGxDb29yZHMoQ24sVG4pfWNvbnN0IE1PZT1PYmplY3QuZnJlZXplKHtob3Jpem9udGFsOiJob3Jp'@; put 'em9udGFsIix2ZXJ0aWNhbDoidmVydGljYWwifSk7ZnVuY3Rpb24gVE9lKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB4T2UobixlLHQp'@; put 'e2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gTjcobixlKXtyZXR1cm4gZnVuY3Rpb24gZVB0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNh'@; put 'bGwobik6ZS52YWx1ZX0obix4T2UobixlLCJnZXQiKSl9ZnVuY3Rpb24gUE8obixlLHQpe1RPZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gSnAobixlLHQpe3JldHVybiBmdW5jdGlvbiB0UHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRo'@; put 'cm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHhPZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gancobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0'@; put 'IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gUFQobixlKXtUT2UobixlKSxlLmFkZChuKX1Hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigibW9kaWZ5QXV0b2ZpbGxSYW5nZSIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVBdXRv'@; put 'ZmlsbCIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckF1dG9maWxsIik7Y29uc3QgRmhlPSJmaWxsSGFuZGxlIjt2YXIgejM9bmV3IFdlYWtNYXAsTFo9bmV3IFdlYWtNYXAsQU9lPW5ldyBXZWFrU2V0LGtPZT1uZXcgV2Vha1NldCxST2U9bmV3IFdlYWtTZXQsUGhlPW5ldyBX'@; put 'ZWFrTWFwLEhoZT1uZXcgV2Vha01hcCxJT2U9bmV3IFdlYWtTZXQsRE9lPW5ldyBXZWFrU2V0LFZoZT1uZXcgV2Vha1NldCxCaGU9bmV3IFdlYWtNYXA7Y2xhc3MgYVB0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuImF1dG9maWxsIn1zdGF0aWMgZ2V0IFBMVUdJ'@; put 'Tl9QUklPUklUWSgpe3JldHVybiAyMH1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVybltGaGVdfXN0YXRpYyBnZXQgREVGQVVMVF9TRVRUSU5HUygpe3JldHVybntkaXJlY3Rpb246dm9pZCAwLGF1dG9JbnNlcnRSb3c6ITB9fXN0YXRpYyBnZXQgU0VUVElOR1NfVkFMSURBVE9SUygp'@; put 'e3JldHVybntkaXJlY3Rpb246ZT0+dm9pZCAwPT09ZXx8InN0cmluZyI9PXR5cGVvZiBlJiZPYmplY3QudmFsdWVzKE1PZSkuaW5jbHVkZXMoZSksYXV0b0luc2VydFJvdzplPT4iYm9vbGVhbiI9PXR5cGVvZiBlfX1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClb'@; put 'RmhlXX1lbmFibGVQbHVnaW4oKXtpZih0aGlzLmVuYWJsZWQpcmV0dXJuO2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtGaGVdLHQ9e307InN0cmluZyI9PXR5cGVvZiBlP3QuZGlyZWN0aW9uPWU6ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZPYmplY3QuYXNzaWduKHQsZSksdGhpcy51'@; put 'cGRhdGVQbHVnaW5TZXR0aW5ncyh0KSx0aGlzLmRpcmVjdGlvbnM9dGhpcy5nZXRTZXR0aW5nKCJkaXJlY3Rpb24iKT9bdGhpcy5nZXRTZXR0aW5nKCJkaXJlY3Rpb24iKV06T2JqZWN0LnZhbHVlcyhNT2UpLHRoaXMuYXV0b0luc2VydFJvdz10aGlzLmdldFNldHRpbmcoImF1dG9JbnNlcnRS'@; put 'b3ciKSwxPT09dGhpcy5kaXJlY3Rpb25zLmxlbmd0aCYmdGhpcy5kaXJlY3Rpb25zLmluY2x1ZGVzKCJob3Jpem9udGFsIikmJih0aGlzLmF1dG9JbnNlcnRSb3c9ITEpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixONyh0'@; put 'aGlzLEhoZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGljayIsTjcodGhpcyxQaGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsKHIsaSk9Pmp3KHRoaXMsSU9lLHVQdCkuY2FsbCh0aGlzLGkpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xs'@; put 'IixONyh0aGlzLEJoZSkpLHN1cGVyLmVuYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKX1nZXRTZWxlY3Rpb25E'@; put 'YXRhKGU9ITEpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighdClyZXR1cm5bXTtjb25zdHtyb3c6cixjb2w6aX09dC5nZXRUb3BTdGFydENvcm5lcigpLHtyb3c6byxjb2w6YX09dC5nZXRCb3R0b21FbmRDb3JuZXIoKSxsPXRoaXMuaG90LnJ1bkhvb2tzKCJt'@; put 'b2RpZnlDb3B5YWJsZVJhbmdlIixbe3N0YXJ0Um93OnIsc3RhcnRDb2w6aSxlbmRSb3c6byxlbmRDb2w6YX1dKSx1PVtdLGc9W10sRT1bXTtyZXR1cm4gWG4obCxPPT57Zm9yKGxldCBaPU8uc3RhcnRSb3c7Wjw9Ty5lbmRSb3c7Wis9MSktMT09PXUuaW5kZXhPZihaKSYmdS5wdXNoKFopO2Zv'@; put 'cihsZXQgWj1PLnN0YXJ0Q29sO1o8PU8uZW5kQ29sO1orPTEpLTE9PT1nLmluZGV4T2YoWikmJmcucHVzaChaKX0pLFhuKHUsTz0+e2NvbnN0IFo9W107WG4oZyxlZT0+e2NvbnN0IHZlPU8sTWU9ZWUsSGU9ZT90aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKHZlLE1lKTpudWxsO2UmJihD'@; put 'YShIZSl8fEFycmF5LmlzQXJyYXkoSGUpKT9aLnB1c2godGhpcy5ob3QuZ2V0Q29weWFibGVTb3VyY2VEYXRhKHZlLE1lKSk6Wi5wdXNoKHRoaXMuaG90LmdldENvcHlhYmxlRGF0YSh2ZSxNZSkpfSksRS5wdXNoKFopfSksRX1maWxsSW4oKXtpZih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxp'@; put 'Z2h0LmdldEZpbGwoKS5pc0VtcHR5KCkpcmV0dXJuITE7Y29uc3RbZSx0LHIsaV09dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuZ2V0VmlzdWFsQ29ybmVycygpLG89dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighbylyZXR1cm4hMTtjb25zdCBhPW8u'@; put 'Z2V0VG9wU3RhcnRDb3JuZXIoKSxsPW8uZ2V0Qm90dG9tRW5kQ29ybmVyKCk7dGhpcy5yZXNldFNlbGVjdGlvbk9mRHJhZ2dlZEFyZWEoKTtjb25zdCB1PVthLnJvdz8/MCxhLmNvbD8/MCxsLnJvdz8/MCxsLmNvbD8/MF0sZz10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5QXV0b2ZpbGxSYW5n'@; put 'ZSIsW01hdGgubWluKGEucm93Pz8wLGU/PzApLE1hdGgubWluKGEuY29sPz8wLHQ/PzApLE1hdGgubWF4KGwucm93Pz8wLHI/PzApLE1hdGgubWF4KGwuY29sPz8wLGk/PzApXSx1KSx7ZGlyZWN0aW9uT2ZEcmFnOkUsc3RhcnRPZkRyYWdDb29yZHM6TyxlbmRPZkRyYWdDb29yZHM6Wn09ZnVu'@; put 'Y3Rpb24gSkZ0KG4sZSx0KXtsZXQgcixpLG87cmV0dXJuIGVbMF09PT1uWzBdJiZlWzFdPG5bMV0/KG89ImxlZnQiLHI9dChlWzBdLGVbMV0pLGk9dChlWzJdLG5bMV0tMSkpOmVbMl09PT1uWzJdJiZlWzBdPT09blswXSYmZVszXT5uWzNdPyhvPSJyaWdodCIscj10KGVbMF0sblszXSsxKSxp'@; put 'PXQoZVsyXSxlWzNdKSk6ZVswXTxuWzBdJiZlWzFdPT09blsxXT8obz0idXAiLHI9dChlWzBdLGVbMV0pLGk9dChuWzBdLTEsZVszXSkpOmVbMl0+blsyXSYmZVsxXT09PW5bMV0mJihvPSJkb3duIixyPXQoblsyXSsxLGVbMV0pLGk9dChlWzJdLGVbM10pKSxyJiZyLm5vcm1hbGl6ZSgpLGkm'@; put 'Jmkubm9ybWFsaXplKCkse2RpcmVjdGlvbk9mRHJhZzpvLHN0YXJ0T2ZEcmFnQ29vcmRzOnIsZW5kT2ZEcmFnQ29vcmRzOml9fSh1LGcsKGVlLHZlKT0+dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZWUsdmUpKTtpZihPJiZaJiZudWxsIT09Ty5yb3cmJm51bGwhPT1PLmNvbCYmbnVsbCE9'@; put 'PVoucm93JiZudWxsIT09Wi5jb2wmJk8ucm93Pi0xJiZPLmNvbD4tMSl7Y29uc3QgZWU9Ty5yb3csdmU9Ty5jb2wsTWU9Wi5yb3csSGU9Wi5jb2wsV2U9e3JvdzplZSxjb2w6dmV9LGF0PXtyb3c6TWUsY29sOkhlfSxDdD10aGlzLmdldFNlbGVjdGlvbkRhdGEoKSxBdD10aGlzLmdldFNlbGVj'@; put 'dGlvbkRhdGEoITApLEt0PW8uY2xvbmUoKSxxdD10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKE8sTyxaKSxnbj10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQXV0b2ZpbGwiLEN0LEt0LHF0LEUpO2lmKCExPT09Z24pcmV0dXJuIHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0Rmls'@; put 'bCgpLmNsZWFyKCksdGhpcy5ob3QucmVuZGVyKCksITE7bGV0IFRuPWduO2NvbnN0IENuPWduO1RuPWp3KHRoaXMsQU9lLHNQdCkuY2FsbCh0aGlzLENuLFRuLEUsZWUsTWUsdmUsSGUpLFRuPWp3KHRoaXMsa09lLGxQdCkuY2FsbCh0aGlzLFRuLEF0LFdlLGF0LEUpLHRoaXMuaG90LnBvcHVs'@; put 'YXRlRnJvbUFycmF5KGVlLHZlLFRuLE1lLEhlLGAke3RoaXMucGx1Z2luTmFtZX0uZmlsbGAsdm9pZCAwKSx0aGlzLnNldFNlbGVjdGlvbihnLEt0KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJBdXRvZmlsbCIsVG4sS3QscXQsRSksdGhpcy5ob3QucmVuZGVyKCl9ZWxzZSB0aGlzLmhvdC52'@; put 'aWV3LnJlbmRlcigpO3JldHVybiEwfWFkZFJvdygpe3RoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9Pnt0aGlzLmhvdC5hbHRlcigiaW5zZXJ0X3Jvd19iZWxvdyIsdm9pZCAwLDEsYCR7dGhpcy5wbHVnaW5OYW1lfS5maWxsYCksdGhpcy5hZGRpbmdTdGFydGVkPSExfSwyMDApfWFkZE5l'@; put 'd1Jvd0lmTmVlZGVkKCl7aWYoIXRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgpLmlzRW1wdHkoKSYmITE9PT10aGlzLmFkZGluZ1N0YXJ0ZWQmJnRoaXMuYXV0b0luc2VydFJvdyl7Y29uc3QgZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpPy5nZXRCb3R0b21F'@; put 'bmRDb3JuZXIoKS5yb3c/P251bGwsdD10aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5nZXRWaXN1YWxDb3JuZXJzKCkscj10aGlzLmhvdC5jb3VudFJvd3MoKTtudWxsIT09ZSYmZTxyLTEmJnRbMl09PT1yLTEmJih0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITAsdGhpcy5hZGRS'@; put 'b3coKSl9fWdldEluZGV4T2ZMYXN0QWRqYWNlbnRGaWxsZWRJblJvdyhlKXtjb25zdCB0PXRoaXMuaG90LmdldERhdGEoKSxyPXRoaXMuaG90LmNvdW50Um93cygpO2xldCBpO2ZvcihsZXQgbz1lWzJdKzE7bzxyO28rKyl7Zm9yKGxldCB1PWVbMV07dTw9ZVszXTt1KyspaWYoIUFsKHRbb11b'@; put 'dV0pKXJldHVybi0xO2NvbnN0IGw9dFtvXVtlWzNdKzFdOyghQWwodFtvXVtlWzFdLTFdKXx8IUFsKGwpKSYmKGk9byl9cmV0dXJuIGl9YWRkU2VsZWN0aW9uRnJvbVN0YXJ0QXJlYVRvU3BlY2lmaWNSb3dJbmRleChlLHQpe3RoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgp'@; put 'LmNsZWFyKCkuYWRkKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGVbMF0sZVsxXSkpLmFkZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh0LGVbM10pKS5jb21taXQoKX1zZXRTZWxlY3Rpb24oZSx0KXtjb25zdCByPV9jKGUsWj0+TWF0aC5tYXgoWiwwKSksaT1yWzBdLG89clsxXSxh'@; put 'PXJbMl0sbD1yWzNdO2xldCB1PWksZz1vLEU9YSxPPWw7aWYodCl7Y29uc3R7cm93OlosY29sOmVlfT10LmdldFRvcFN0YXJ0Q29ybmVyKCkse3Jvdzp2ZSxjb2w6TWV9PXQuZ2V0Qm90dG9tRW5kQ29ybmVyKCksSGU9Wj8/MCxXZT1lZT8/MDt1PWk8SGU/YTphPih2ZT8/MCl8fHQuZnJvbS5y'@; put 'b3c9PT1IZT9pOmEsZz1vPFdlP2w6bD4oTWU/PzApfHx0LmZyb20uY29sPT09V2U/bzpsLEU9dT09PWk/YTppLE89Zz09PW8/bDpvfXRoaXMuaG90LnNlbGVjdENlbGwodSxnLEUsTywhMSwhMSl9c2VsZWN0QWRqYWNlbnQoKXtjb25zdCBlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0'@; put 'KCk7aWYoIWUpcmV0dXJuITE7Y29uc3QgdD1lLmdldFRvcFN0YXJ0Q29ybmVyKCkscj1lLmdldEJvdHRvbUVuZENvcm5lcigpLGk9W3Qucm93Pz8wLHQuY29sPz8wLHIucm93Pz8wLHIuY29sPz8wXSxvPXRoaXMuZ2V0SW5kZXhPZkxhc3RBZGphY2VudEZpbGxlZEluUm93KGkpO3JldHVybi0x'@; put 'IT09byYmdm9pZCAwIT09byYmKHRoaXMuYWRkU2VsZWN0aW9uRnJvbVN0YXJ0QXJlYVRvU3BlY2lmaWNSb3dJbmRleChpLG8pLCEwKX1yZXNldFNlbGVjdGlvbk9mRHJhZ2dlZEFyZWEoKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscz0wLHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0'@; put 'RmlsbCgpLmNsZWFyKCl9cmVkcmF3Qm9yZGVycyhlKXtjb25zdCB0PXRoaXMuZGlyZWN0aW9ucyxyPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIXJ8fCFlfHxudWxsPT09ZS5yb3d8fG51bGw9PT1lLmNvbClyZXR1cm47Y29uc3QgaT10aGlzLmhvdC5fY3JlYXRlQ2VsbENv'@; put 'b3JkcyhlLnJvdyxlLmNvbCksbz1yLmdldEJvdHRvbUVuZENvcm5lcigpLGE9ci5nZXRUb3BTdGFydENvcm5lcigpLGw9ci5nZXRCb3R0b21FbmRDb3JuZXIoKSx1PShpLnJvdz8/MCk8KGEucm93Pz8wKXx8KGkucm93Pz8wKT4obC5yb3c/PzApLGc9KGkuY29sPz8wKTwoYS5jb2w/PzApfHwo'@; put 'aS5jb2w/PzApPihsLmNvbD8/MCk7ci5pbmNsdWRlcyhpKSYmSnAodGhpcyx6MyxudWxsKSwidmVydGljYWwiPT09TjcodGhpcyx6MykmJiF1JiZnP3QuaW5jbHVkZXMoImhvcml6b250YWwiKSYmSnAodGhpcyx6MywiaG9yaXpvbnRhbCIpOiJob3Jpem9udGFsIj09PU43KHRoaXMsejMpJiYh'@; put 'ZyYmdSYmdC5pbmNsdWRlcygidmVydGljYWwiKSYmSnAodGhpcyx6MywidmVydGljYWwiKTtsZXQgTz1vLnJvdyxaPW8uY29sO251bGw9PT1ONyh0aGlzLHozKSYmKHUmJiFnJiZ0LmluY2x1ZGVzKCJ2ZXJ0aWNhbCIpP0pwKHRoaXMsejMsInZlcnRpY2FsIik6ZyYmIXUmJnQuaW5jbHVkZXMo'@; put 'Imhvcml6b250YWwiKSYmSnAodGhpcyx6MywiaG9yaXpvbnRhbCIpKSwidmVydGljYWwiPT09TjcodGhpcyx6MykmJnQuaW5jbHVkZXMoInZlcnRpY2FsIik/KE89aS5yb3c/PzAsWj1hLmNvbD8/MCk6Imhvcml6b250YWwiPT09TjcodGhpcyx6MykmJnQuaW5jbHVkZXMoImhvcml6b250YWwi'@; put 'KSYmKE89YS5yb3c/PzAsWj1pLmNvbD8/MCk7Y29uc3QgZWU9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoTz8/MCxaPz8wKTt0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpLmFkZChyLmZyb20pLmFkZChyLnRvKS5hZGQoZWUpLmNvbW1pdCgpLHRoaXMu'@; put 'aG90LnZpZXcucmVuZGVyKCl9Z2V0SWZNb3VzZVdhc0RyYWdnZWRPdXRzaWRlKGUpe2NvbnN0e2RvY3VtZW50RWxlbWVudDp0fT10aGlzLmhvdC5yb290RG9jdW1lbnQscj1YMCh0aGlzLmhvdC50YWJsZSkudG9wLSh0aGlzLmhvdC5yb290V2luZG93LnBhZ2VZT2Zmc2V0fHx0LnNjcm9sbFRv'@; put 'cCkrSGgodGhpcy5ob3QudGFibGUpLGk9WDAodGhpcy5ob3QudGFibGUpLmxlZnQtKHRoaXMuaG90LnJvb3RXaW5kb3cucGFnZVhPZmZzZXR8fHQuc2Nyb2xsTGVmdCkrWmQodGhpcy5ob3QudGFibGUpO3JldHVybiBlLmNsaWVudFk+ciYmZS5jbGllbnRYPD1pfXJlZ2lzdGVyRXZlbnRzKCl7'@; put 'Y29uc3R7ZG9jdW1lbnRFbGVtZW50OmV9PXRoaXMuaG90LnJvb3REb2N1bWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsIm1vdXNldXAiLCgpPT5qdyh0aGlzLERPZSxkUHQpLmNhbGwodGhpcykpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwi'@; put 'bW91c2Vtb3ZlIix0PT5qdyh0aGlzLFZoZSxMT2UpLmNhbGwodGhpcyx0KSl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxQVCh0aGlzLEFPZSksUFQodGhpcyxrT2UpLFBUKHRoaXMsUk9lKSxQVCh0aGlzLElPZSksUFQodGhpcyxET2Up'@; put 'LFBUKHRoaXMsVmhlKSxQTyh0aGlzLHozLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQTyh0aGlzLExaLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQTyh0aGlzLFBoZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUE8odGhpcyxIaGUse3dyaXRhYmxlOiEwLHZhbHVlOnZv'@; put 'aWQgMH0pLFBPKHRoaXMsQmhlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITEsdGhpcy5tb3VzZURvd25PbkNlbGxDb3JuZXI9ITEsdGhpcy5tb3VzZURyYWdPdXRzaWRlPSExLHRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPTAsdGhpcy5kaXJlY3Rpb25z'@; put 'PVtdLHRoaXMuYXV0b0luc2VydFJvdz0hMSxKcCh0aGlzLHozLG51bGwpLEpwKHRoaXMsTFose2NsaWVudFg6MCxjbGllbnRZOjB9KSxKcCh0aGlzLFBoZSwoKT0+e3RoaXMuc2VsZWN0QWRqYWNlbnQoKSYmdGhpcy5maWxsSW4oKX0pLEpwKHRoaXMsSGhlLCgpPT57dGhpcy5oYW5kbGVEcmFn'@; put 'Z2VkQ2VsbHM9MSx0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lcj0hMCxKcCh0aGlzLHozLG51bGwpfSksSnAodGhpcyxCaGUsKCk9Pnt0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lciYmancodGhpcyxWaGUsTE9lKS5jYWxsKHRoaXMsTjcodGhpcyxMWikpfSl9fWZ1bmN0aW9uIHNQdChuLGUs'@; put 'dCxyLGksbyxhKXtpZigidXAiIT09dCYmImxlZnQiIT09dHx8MT09PW4ubGVuZ3RoJiYwPT09blswXS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgbD1bXTtpZigidXAiPT09dCl7Y29uc3QgdT1pLXIrMSxnPXUlbi5sZW5ndGg7Zm9yKGxldCBFPTA7RTx1O0UrKylsLnB1c2goblsoRSsobi5sZW5n'@; put 'dGgtZykpJW4ubGVuZ3RoXSl9ZWxzZXtjb25zdCB1PWEtbysxLGc9dSVuWzBdLmxlbmd0aDtmb3IobGV0IEU9MDtFPG4ubGVuZ3RoO0UrKyl7bC5wdXNoKFtdKTtmb3IobGV0IE89MDtPPHU7TysrKWxbRV0ucHVzaChuW0VdWyhPKyhuW0VdLmxlbmd0aC1nKSklbltFXS5sZW5ndGhdKX19cmV0'@; put 'dXJuIGx9ZnVuY3Rpb24gbFB0KG4sZSx0LHIsaSl7aWYoIWUuc29tZShsPT5sLnNvbWUodT0+Q2EodSl8fEFycmF5LmlzQXJyYXkodSkpKSlyZXR1cm4gbjtjb25zdCBhPWp3KHRoaXMsUk9lLGNQdCkuY2FsbCh0aGlzLG4sZSx0LHIsaSk7cmV0dXJuIGEubGVuZ3RoP2E6bn1mdW5jdGlvbiBj'@; put 'UHQobixlLHQscixpKXtjb25zdCBvPVtdO2ZvcihsZXQgYT1NYXRoLm1pbih0LnJvdyxyLnJvdyk7YTw9TWF0aC5tYXgodC5yb3csci5yb3cpO2ErPTEpe28ucHVzaChbXSk7Zm9yKGxldCBsPU1hdGgubWluKHQuY29sLHIuY29sKTtsPD1NYXRoLm1heCh0LmNvbCxyLmNvbCk7bCs9MSl7Y29u'@; put 'c3QgdT10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKGEsbCksZz10aGlzLmhvdC5nZXRDZWxsTWV0YShhLGwpLEU9Zy5zb3VyY2UsTz1BcnJheS5pc0FycmF5KEUpP0VbMF06dm9pZCAwLFo9Zy5fY29tcGxleERhdGFGb3JtYXR8fENhKE8pfHxBcnJheS5pc0FycmF5KE8pLGVlPWEtTWF0'@; put 'aC5taW4odC5yb3csci5yb3cpLHZlPWwtTWF0aC5taW4odC5jb2wsci5jb2wpLE1lPWVlJWUubGVuZ3RoLFdlPXZlJWVbMF0ubGVuZ3RoO29bZWVdW3ZlXT1DYSh1KXx8QXJyYXkuaXNBcnJheSh1KXx8Wj9lW01lXVtXZV06bltNZV1bV2VdfX1yZXR1cm4gb31mdW5jdGlvbiB1UHQobil7dGhp'@; put 'cy5tb3VzZURvd25PbkNlbGxDb3JuZXImJiF0aGlzLmhvdC52aWV3LmlzTW91c2VEb3duKCkmJnRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzJiYodGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHMrPTEsdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuaXNFbXB0eSgpJiZ0aGlzLnJl'@; put 'ZHJhd0JvcmRlcnMobiksdGhpcy5hZGROZXdSb3dJZk5lZWRlZCgpKX1mdW5jdGlvbiBkUHQoKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscyYmKHRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjEmJnRoaXMuZmlsbEluKCksdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLm1vdXNlRG93bk9u'@; put 'Q2VsbENvcm5lcj0hMSxKcCh0aGlzLHozLG51bGwpKX1mdW5jdGlvbiBMT2Uobil7aWYodGhpcy5tb3VzZURvd25PbkNlbGxDb3JuZXIpe2NvbnN0e2NsaWVudFg6dCxjbGllbnRZOnJ9PW4saT1FT2UodGhpcy5ob3QsdCxyKTtKcCh0aGlzLExaLHtjbGllbnRYOnQsY2xpZW50WTpyfSksdGhp'@; put 'cy5yZWRyYXdCb3JkZXJzKGkpfWNvbnN0IGU9dGhpcy5nZXRJZk1vdXNlV2FzRHJhZ2dlZE91dHNpZGUobik7ITE9PT10aGlzLmFkZGluZ1N0YXJ0ZWQmJnRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjAmJmU/KHRoaXMubW91c2VEcmFnT3V0c2lkZT0hMCx0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITAp'@; put 'OnRoaXMubW91c2VEcmFnT3V0c2lkZT0hMSx0aGlzLm1vdXNlRHJhZ091dHNpZGUmJnRoaXMuYXV0b0luc2VydFJvdyYmdGhpcy5hZGRSb3coKX1mdW5jdGlvbiBPT2UobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2'@; put 'YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIE5PZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBX'@; put 'MyhuLGUpe3JldHVybiBmdW5jdGlvbiBoUHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLE5PZShuLGUsImdldCIpKX1mdW5jdGlvbiBnNihuLGUsdCl7T09lKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBZMyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGZQdChu'@; put 'LGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sTk9lKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBqaGUobixl'@; put 'LHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gRk9lKG4sZSl7T09lKG4sZSksZS5hZGQobil9Y29uc3QgVWhlPSJhdXRvUm93U2l6ZSIsUE9lPSJodEZp'@; put 'cnN0RGF0YXNldENvbHVtbk5vdFJlbmRlcmVkIixIT2U9Imh0QXV0b1Jvd1NpemUiO3ZhciBIVD1uZXcgV2Vha01hcCxWVD1uZXcgV2Vha01hcCxPWj1uZXcgV2Vha01hcCxWT2U9bmV3IFdlYWtTZXQsemhlPW5ldyBXZWFrU2V0LFdoZT1uZXcgV2Vha01hcCxZaGU9bmV3IFdlYWtNYXAsTlo9'@; put 'bmV3IFdlYWtNYXAsWmhlPW5ldyBXZWFrTWFwLEdoZT1uZXcgV2Vha01hcCwkaGU9bmV3IFdlYWtNYXAscWhlPW5ldyBXZWFrTWFwO2NsYXNzIEhPIGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIFVoZX1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVy'@; put 'biA0MH1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVybiEwfXN0YXRpYyBnZXQgREVGQVVMVF9TRVRUSU5HUygpe3JldHVybnt1c2VIZWFkZXJzOiEwLHNhbXBsaW5nUmF0aW86bnVsbCxhbGxvd1NhbXBsZUR1cGxpY2F0ZXM6ITF9fXN0YXRpYyBnZXQgQ0FMQ1VMQVRJT05fU1RFUCgp'@; put 'e3JldHVybiA1MH1zdGF0aWMgZ2V0IFNZTkNfQ0FMQ1VMQVRJT05fTElNSVQoKXtyZXR1cm4gNTAwfWlzRW5hYmxlZCgpe2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtVaGVdO3JldHVybiEwPT09ZXx8Q2EoZSl9ZW5hYmxlUGx1Z2luKCl7aWYodGhpcy5lbmFibGVkKXJldHVybjt0'@; put 'aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0QWxsb3dEdXBsaWNhdGVzKHRoaXMuZ2V0U2V0dGluZygiYWxsb3dTYW1wbGVEdXBsaWNhdGVzIikpO2NvbnN0IGU9dGhpcy5nZXRTZXR0aW5nKCJzYW1wbGluZ1JhdGlvIik7ZSYmIWlzTmFOKGUpJiZ0aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0U2Ft'@; put 'cGxlQ291bnQoZSksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixXMyh0aGlzLFpoZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ2hhbmdlUmVuZGVyIixXMyh0aGlzLEdoZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uUmVzaXplIiwoKT0+dGhpcy5yZWNhbGN1bGF0ZUFsbFJvd3NI'@; put 'ZWlnaHQoKSksdGhpcy5hZGRIb29rKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIixXMyh0aGlzLHFoZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld1JlbmRlciIsVzModGhpcyxXaGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbmRlciIsVzModGhpcyxZaGUpKSx0aGlzLmFkZEhvb2so'@; put 'Im1vZGlmeVJvd0hlaWdodCIsKHQscik9PnRoaXMuZ2V0Um93SGVpZ2h0KHIsdCkpLHRoaXMuYWRkSG9vaygiaW5pdCIsVzModGhpcywkaGUpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIsKCk9PnRoaXMuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCkpLFkzKHRoaXMs'@; put 'VlQsdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIub2JzZXJ2ZU1hcENoYW5nZSh0aGlzLnJvd0hlaWdodHNNYXAsKCk9Pnt0aGlzLmhvdC52aWV3Py5pbnZhbGlkYXRlUm93SGVpZ2h0Q2FjaGUoKX0pKSxZcih0aGlzLmhvdC5yb290RWxlbWVudCxIT2UpLHN1cGVyLmVuYWJsZVBsdWdpbigpfWRp'@; put 'c2FibGVQbHVnaW4oKXtXMyh0aGlzLFZUKSYmKFczKHRoaXMsVlQpLmNhbGwodGhpcyksWTModGhpcyxWVCxudWxsKSksdGhpcy5oZWFkZXJIZWlnaHQ9bnVsbCxrbyh0aGlzLmhvdC5yb290RWxlbWVudCxIT2UpLHN1cGVyLmRpc2FibGVQbHVnaW4oKSxqaGUodGhpcyx6aGUsQk9lKS5jYWxs'@; put 'KHRoaXMsITEpLHRoaXMuYWRkSG9vaygiYmVmb3JlUm93UmVzaXplIixXMyh0aGlzLE5aKSl9Y2FsY3VsYXRlVmlzaWJsZVJvd3NIZWlnaHQoKXtpZighdGhpcy5ob3QuY291bnRDb2xzKCkpcmV0dXJuO2NvbnN0IGU9dGhpcy5nZXRGaXJzdFZpc2libGVSb3coKSx0PXRoaXMuZ2V0TGFzdFZp'@; put 'c2libGVSb3coKTstMSE9PWUmJi0xIT09dCYmdGhpcy5jYWxjdWxhdGVSb3dzSGVpZ2h0KHtmcm9tOmUsdG86dH0sdm9pZCAwLHRoaXMuaG90LmZvcmNlRnVsbFJlbmRlcil9Y2FsY3VsYXRlUm93c0hlaWdodChlPXtmcm9tOjAsdG86dGhpcy5ob3QuY291bnRSb3dzKCktMX0sdD17ZnJvbTow'@; put 'LHRvOnRoaXMuaG90LmNvdW50Q29scygpLTF9LHI9ITEpe2NvbnN0IGk9Im51bWJlciI9PXR5cGVvZiBlP3tmcm9tOmUsdG86ZX06ZSxvPSJudW1iZXIiPT10eXBlb2YgdD97ZnJvbTp0LHRvOnR9OnQ7aWYobnVsbCE9PXRoaXMuaG90LmdldENvbEhlYWRlcigwKSl7Y29uc3QgYT10aGlzLnNh'@; put 'bXBsZXNHZW5lcmF0b3IuZ2VuZXJhdGVSb3dTYW1wbGVzKC0xLG8pO3RoaXMuZ2hvc3RUYWJsZS5hZGRDb2x1bW5IZWFkZXJzUm93KGEuZ2V0KC0xKSl9VmEoaS5mcm9tLGkudG8sYT0+e2xldCBsPXRoaXMuaG90LnRvUGh5c2ljYWxSb3coYSk7bnVsbD09PWwmJihsPWEpLChyfHxudWxsPT09'@; put 'dGhpcy5yb3dIZWlnaHRzTWFwLmdldFZhbHVlQXRJbmRleChsKSkmJnRoaXMuc2FtcGxlc0dlbmVyYXRvci5nZW5lcmF0ZVJvd1NhbXBsZXMoYSxvKS5mb3JFYWNoKChnLEUpPT50aGlzLmdob3N0VGFibGUuYWRkUm93KEUsZykpfSksdGhpcy5naG9zdFRhYmxlLnJvd3MubGVuZ3RoJiYodGhp'@; put 'cy5ob3QuYmF0Y2hFeGVjdXRpb24oKCk9Pnt0aGlzLmdob3N0VGFibGUuZ2V0SGVpZ2h0cygoYSxsKT0+e2E8MD90aGlzLmhlYWRlckhlaWdodD1sOnRoaXMucm93SGVpZ2h0c01hcC5zZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbFJvdyhhKSxsKX0pfSwhMCksdGhpcy5tZWFz'@; put 'dXJlZFJvd3M9aS50bysxLHRoaXMuZ2hvc3RUYWJsZS5jbGVhbigpKX1jYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KGU9e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfSx0PSExKXtsZXQgcj0wO2NvbnN0IGk9dGhpcy5ob3QuY291bnRSb3dzKCktMTtsZXQgbz0wO3RoaXMuaW5Qcm9n'@; put 'cmVzcz0hMDtjb25zdCBhPSgpPT57aWYoIXRoaXMuaG90KXJldHVybiBkTChvKSx2b2lkKHRoaXMuaW5Qcm9ncmVzcz0hMSk7dGhpcy5jYWxjdWxhdGVSb3dzSGVpZ2h0KHtmcm9tOnIsdG86TWF0aC5taW4ocitITy5DQUxDVUxBVElPTl9TVEVQLGkpfSxlLHQpLHI9citITy5DQUxDVUxBVElP'@; put 'Tl9TVEVQKzEscjxpP289dUwoYSk6KGRMKG8pLHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpKX0sbD10aGlzLmdldFN5bmNDYWxjdWxhdGlvbkxpbWl0KCk7bD49MCYmKHRoaXMuY2FsY3VsYXRlUm93c0hlaWdodCh7ZnJvbTowLHRvOmx9LGUs'@; put 'dCkscj1sKzEpLHI8aT9hKCk6KHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpKX1yZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKXt0aGlzLmhvdC52aWV3LmlzVmlzaWJsZSgpJiZ0aGlzLmNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoe2Zyb206MCx0'@; put 'bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfSwhMCl9Z2V0U3luY0NhbGN1bGF0aW9uTGltaXQoKXtjb25zdCBlPXRoaXMuaG90LmdldFNldHRpbmdzKClbVWhlXTtsZXQgdD1ITy5TWU5DX0NBTENVTEFUSU9OX0xJTUlUO2NvbnN0IHI9dGhpcy5ob3QuY291bnRSb3dzKCktMTtpZihDYShlKSlp'@; put 'Zih0PXRoaXMuZ2V0U2V0dGluZygic3luY0xpbWl0Iiksd3NlKHQpKXQ9bmxlKHIsdCk7ZWxzZXtjb25zdCBpPU51bWJlcih0KTt0PU51bWJlci5pc0Zpbml0ZShpKT9NYXRoLnRydW5jKGkpOjB9cmV0dXJuIE1hdGgubWluKHQscil9Z2V0Um93SGVpZ2h0KGUsdD10aGlzLmhvdC5zdHlsZXNI'@; put 'YW5kbGVyLmdldERlZmF1bHRSb3dIZWlnaHQoZSk/PzApe2lmKGU8MClyZXR1cm4gdGhpcy5oZWFkZXJIZWlnaHQ/P3Q7Y29uc3Qgcj10aGlzLmhvdC50b1BoeXNpY2FsUm93KGUpO2lmKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmlzSGlkZGVuKHIpKXJldHVybiB0O2NvbnN0IGk9dGhpcy5y'@; put 'b3dIZWlnaHRzTWFwLmdldFZhbHVlQXRJbmRleChyKTtsZXQgbz10O3JldHVybiBudWxsIT1pJiZpPnQmJihvPWksZT09PXRoaXMuaG90LnZpZXcuZ2V0Rmlyc3RSZW5kZXJlZFZpc2libGVSb3coKSYmKG8rPTEpKSxvfWdldENvbHVtbkhlYWRlckhlaWdodCgpe3JldHVybiB0aGlzLmhlYWRl'@; put 'ckhlaWdodH1nZXRGaXJzdFZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5ob3QuZ2V0Rmlyc3RSZW5kZXJlZFZpc2libGVSb3coKT8/LTF9Z2V0TGFzdFZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5ob3QuZ2V0TGFzdFJlbmRlcmVkVmlzaWJsZVJvdygpPz8tMX1jbGVhckNhY2hlKGUpe3RoaXMu'@; put 'aGVhZGVySGVpZ2h0PW51bGwsQXJyYXkuaXNBcnJheShlKT90aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e2UuZm9yRWFjaCh0PT57dGhpcy5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleCh0LG51bGwpfSl9LCEwKTp0aGlzLnJvd0hlaWdodHNNYXAuY2xlYXIoKX1jbGVhckNhY2hl'@; put 'QnlSYW5nZShlKXtjb25zdHtmcm9tOnQsdG86cn09Im51bWJlciI9PXR5cGVvZiBlP3tmcm9tOmUsdG86ZX06ZTt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e1ZhKE1hdGgubWluKHQsciksTWF0aC5tYXgodCxyKSxpPT57dGhpcy5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleChp'@; put 'LG51bGwpfSl9LCEwKX1pc05lZWRSZWNhbGN1bGF0ZSgpe3JldHVybiEhdGhpcy5yb3dIZWlnaHRzTWFwLmdldFZhbHVlcygpLnNsaWNlKDAsdGhpcy5tZWFzdXJlZFJvd3MpLmZpbHRlcihlPT5udWxsPT09ZSkubGVuZ3RofWRlc3Ryb3koKXt0aGlzLmdob3N0VGFibGUuY2xlYW4oKSxzdXBl'@; put 'ci5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksRk9lKHRoaXMsVk9lKSxGT2UodGhpcyx6aGUpLGc2KHRoaXMsSFQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGc2KHRoaXMsVlQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGc2KHRoaXMsT1ose3dyaXRhYmxlOiEw'@; put 'LHZhbHVlOnZvaWQgMH0pLGc2KHRoaXMsV2hlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxnNih0aGlzLFloZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZzYodGhpcyxOWix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZzYodGhpcyxaaGUse3dyaXRhYmxlOiEwLHZhbHVl'@; put 'OnZvaWQgMH0pLGc2KHRoaXMsR2hlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxnNih0aGlzLCRoZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZzYodGhpcyxxaGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuaGVhZGVySGVpZ2h0PW51bGwsdGhpcy5naG9zdFRh'@; put 'YmxlPW5ldyBFaGUodGhpcy5ob3QpLHRoaXMuc2FtcGxlc0dlbmVyYXRvcj1uZXcgdk9lKCh0LHIpPT57Y29uc3QgaT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHIpO2lmKHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmlzSGlkZGVuKGkpKXJldHVybiExO2xldCBvLGE7cmV0dXJuISh0'@; put 'Pj0wJiZyPj0wJiYobz10aGlzLmhvdC5nZXRDZWxsTWV0YSh0LHIpLG8uaGlkZGVuKSkmJih0Pj0wPyhhPXRoaXMuaG90LmdldERhdGFBdENlbGwodCxyKSwiZnVuY3Rpb24iPT10eXBlb2Ygbz8udmFsdWVGb3JtYXR0ZXImJihhPW8udmFsdWVGb3JtYXR0ZXIoYSxvKSkpOi0xPT09dCYmKGE9'@; put 'dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKHIpKSx7dmFsdWU6YX0pfSksdGhpcy5pblByb2dyZXNzPSExLHRoaXMubWVhc3VyZWRSb3dzPTAsdGhpcy5yb3dIZWlnaHRzTWFwPW5ldyBuXyxZMyh0aGlzLEhULFtdKSxZMyh0aGlzLFZULG51bGwpLFkzKHRoaXMsT1osITEpLFkzKHRoaXMsV2hlLCgp'@; put 'PT57amhlKHRoaXMsemhlLEJPZSkuY2FsbCh0aGlzKX0pLFkzKHRoaXMsWWhlLCgpPT57dGhpcy5jYWxjdWxhdGVWaXNpYmxlUm93c0hlaWdodCgpLHRoaXMuaW5Qcm9ncmVzc3x8KGpoZSh0aGlzLFZPZSxtUHQpLmNhbGwodGhpcyxXMyh0aGlzLEhUKSksWTModGhpcyxIVCxbXSkpfSksWTMo'@; put 'dGhpcyxOWiwodCxyLGkpPT57bGV0IG89dDtyZXR1cm4gaSYmKHRoaXMuY2FsY3VsYXRlUm93c0hlaWdodChyLHZvaWQgMCwhMCksbz10aGlzLmdldFJvd0hlaWdodChyKSksb30pLFkzKHRoaXMsWmhlLCh0LHIpPT57cnx8dGhpcy5yZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKX0pLFkzKHRo'@; put 'aXMsR2hlLHQ9Pntjb25zdCByPXQucmVkdWNlKChpLFtvXSk9Pntjb25zdCBhPU51bWJlcihvKTtyZXR1cm4tMT09PWkuaW5kZXhPZihhKSYmaS5wdXNoKGEpLGl9LFtdKTtXMyh0aGlzLEhUKS5wdXNoKC4uLnIpfSksWTModGhpcywkaGUsKCk9Pnt0aGlzLnJlY2FsY3VsYXRlQWxsUm93c0hl'@; put 'aWdodCgpLFkzKHRoaXMsT1osITApfSksWTModGhpcyxxaGUsdD0+e2lmKCFXMyh0aGlzLE9aKSlyZXR1cm47Y29uc3QgaT10aGlzLmhvdC5nZXRQbHVnaW4oImZvcm11bGFzIik/LnNoZWV0SWQsbz10LnJlZHVjZSgoYSxsKT0+e2NvbnN0IHU9bDtpZihudWxsIT1pJiZ1LmFkZHJlc3M/LnNo'@; put 'ZWV0IT09aSlyZXR1cm4gYTtjb25zdCBnPU51bWJlcih1LmFkZHJlc3M/LnJvdyk7aWYoTnVtYmVyLmlzSW50ZWdlcihnKSl7Y29uc3QgRT10aGlzLmhvdC50b1Zpc3VhbFJvdyhnKTtudWxsIT09RSYmLTE9PT1hLmluZGV4T2YoRSkmJmEucHVzaChFKX1yZXR1cm4gYX0sW10pO1czKHRoaXMs'@; put 'SFQpLnB1c2goLi4ubyl9KSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCgiYXV0b1Jvd1NpemUiLHRoaXMucm93SGVpZ2h0c01hcCksdGhpcy5hZGRIb29rKCJiZWZvcmVSb3dSZXNpemUiLFczKHRoaXMsTlopKX19ZnVuY3Rpb24gbVB0KG4pe2NvbnN0IGU9e2Zyb206MCx0'@; put 'bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfTtuLmZvckVhY2godD0+e3RoaXMuc2FtcGxlc0dlbmVyYXRvci5nZW5lcmF0ZVJvd1NhbXBsZXModCxlKS5mb3JFYWNoKChpLG8pPT50aGlzLmdob3N0VGFibGUuYWRkUm93KG8saSkpfSksdGhpcy5naG9zdFRhYmxlLnJvd3MubGVuZ3RoJiYodGhp'@; put 'cy5ob3QuYmF0Y2hFeGVjdXRpb24oKCk9Pnt0aGlzLmdob3N0VGFibGUuZ2V0SGVpZ2h0cygodCxyKT0+e2NvbnN0IGk9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh0KTt0aGlzLnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KGkscil9KX0sITApLHRoaXMuZ2hvc3RUYWJsZS5jbGVhbigp'@; put 'KX1mdW5jdGlvbiBCT2Uobil7Y29uc3QgZT10aGlzLmhvdC5nZXRGaXJzdFJlbmRlcmVkVmlzaWJsZUNvbHVtbigpLHQ9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoZSk7ITE9PT1ufHx0PT09dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIu'@; put 'Z2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUluZGV4KDApP2tvKHRoaXMuaG90LnJvb3RFbGVtZW50LFBPZSk6WXIodGhpcy5ob3Qucm9vdEVsZW1lbnQsUE9lKX1mdW5jdGlvbiBqT2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIg'@; put 'cHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9Y29uc3QgVU9lPSJiaW5kUm93c1dpdGhIZWFkZXJzIix6T2U9bmV3IE1hcChbWyJsb29zZSIsY2xhc3MgdlB0IGV4dGVuZHMgRXd7aW5zZXJ0KGUsdCl7Y29uc3Qgcj1XbGUodGhpcy5pbmRleGVkVmFsdWVz'@; put 'LHQpO3RoaXMuaW5kZXhlZFZhbHVlcz1TWShyLDAsdCx0aGlzLmluaXRWYWx1ZU9yRm4pLHN1cGVyLmluc2VydChlLHQpfXJlbW92ZShlKXtjb25zdCB0PUVZKHRoaXMuaW5kZXhlZFZhbHVlcyxlKTt0aGlzLmluZGV4ZWRWYWx1ZXM9emxlKHQsZSksc3VwZXIucmVtb3ZlKGUpfWNvbnN0cnVj'@; put 'dG9yKCl7c3VwZXIoZT0+ZSl9fV0sWyJzdHJpY3QiLGNsYXNzIHlQdCBleHRlbmRzIEV3e2luc2VydChlLHQpe3RoaXMuaW5kZXhlZFZhbHVlcz1TWSh0aGlzLmluZGV4ZWRWYWx1ZXMsMCx0LChyLGkpPT50aGlzLmdldE5leHRWYWx1ZShpKSksc3VwZXIuaW5zZXJ0KGUsdCl9cmVtb3ZlKGUp'@; put 'e3RoaXMuaW5kZXhlZFZhbHVlcz1FWSh0aGlzLmluZGV4ZWRWYWx1ZXMsZSksc3VwZXIucmVtb3ZlKGUpfWdldE5leHRWYWx1ZShlKXtyZXR1cm4gTWF0aC5tYXgoLi4udGhpcy5nZXRWYWx1ZXMoKSkrMStlfWNvbnN0cnVjdG9yKCl7c3VwZXIoZT0+ZSl9fV1dKTt2YXIgS2hlPW5ldyBXZWFr'@; put 'TWFwO2NsYXNzIGtQdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBVT2V9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMjEwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtVT2VdfWVuYWJsZVBsdWdpbigpe2lm'@; put 'KHRoaXMuZW5hYmxlZClyZXR1cm47Y29uc3QgdD16T2UuZ2V0KHRoaXMuZ2V0U2V0dGluZygpKT8/ek9lLmdldCgibG9vc2UiKTt0JiYodGhpcy5oZWFkZXJJbmRleGVzPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJiaW5kUm93c1dpdGhIZWFkZXJzIixuZXcgdCksdGhp'@; put 'cy5hZGRIb29rKCJtb2RpZnlSb3dIZWFkZXIiLGZ1bmN0aW9uIEVQdChuLGUpe3JldHVybiBmdW5jdGlvbiBDUHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGpPZShuLGUsImdldCIpKX0odGhpcyxLaGUpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJs'@; put 'ZVBsdWdpbigpe3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoImJpbmRSb3dzV2l0aEhlYWRlcnMiKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxmdW5jdGlvbiBNUHQobixl'@; put 'LHQpeyhmdW5jdGlvbiB3UHQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfSh0aGlzLEtoZSx7d3JpdGFibGU6ITAsdmFs'@; put 'dWU6dm9pZCAwfSksdGhpcy5oZWFkZXJJbmRleGVzPW51bGwsZnVuY3Rpb24gVFB0KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gU1B0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0'@; put 'IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixqT2UobixlLCJzZXQiKSx0KSx0fSh0aGlzLEtoZSx0PT50aGlzLmhlYWRlckluZGV4ZXMuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxSb3codCkpKX19ZnVuY3Rpb24gV09lKG4sZSl7aWYoZS5oYXMo'@; put 'bikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBZT2UobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJp'@; put 'dmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gbTYobixlKXtyZXR1cm4gZnVuY3Rpb24gUlB0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixZT2UobixlLCJnZXQiKSl9ZnVuY3Rpb24gVXcobixlLHQpe1dPZShu'@; put 'LGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gZWcobixlLHQpe3JldHVybiBmdW5jdGlvbiBJUHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmll'@; put 'bGQiKTtlLnZhbHVlPXR9fShuLFlPZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gVk8obixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gWGhlKG4s'@; put 'ZSl7V09lKG4sZSksZS5hZGQobil9Y29uc3QgRlo9ImNvbGxhcHNpYmxlQ29sdW1ucyIsTFB0PVsibmVzdGVkSGVhZGVycyJdLEJUPSJjb2xsYXBzaWJsZUluZGljYXRvciIsWk9lPSJjb2xsYXBzaWJsZUNvbHVtbnMudmlzaWJsZVdoZW4iLEdPZT1GWiwkT2U9bmV3IE1hcChbWyJjb2xsYXBz'@; put 'ZSIse2hpZGVDb2x1bW46ITAsYmVmb3JlSG9vazoiYmVmb3JlQ29sdW1uQ29sbGFwc2UiLGFmdGVySG9vazoiYWZ0ZXJDb2x1bW5Db2xsYXBzZSJ9XSxbImV4cGFuZCIse2hpZGVDb2x1bW46ITEsYmVmb3JlSG9vazoiYmVmb3JlQ29sdW1uRXhwYW5kIixhZnRlckhvb2s6ImFmdGVyQ29sdW1u'@; put 'RXhwYW5kIn1dXSk7dmFyIHp3PW5ldyBXZWFrTWFwLFd3PW5ldyBXZWFrTWFwLHFPZT1uZXcgV2Vha1NldCxLT2U9bmV3IFdlYWtTZXQsUFo9bmV3IFdlYWtTZXQsSFo9bmV3IFdlYWtNYXAsUWhlPW5ldyBXZWFrTWFwLEpoZT1uZXcgV2Vha01hcCxlMWU9bmV3IFdlYWtNYXAsdDFlPW5ldyBX'@; put 'ZWFrTWFwO2NsYXNzIE9QdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBGWn1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAyOTB9c3RhdGljIGdldCBQTFVHSU5fREVQUygpe3JldHVyblsicGx1Z2luOk5lc3RlZEhlYWRlcnMiXX1zdGF0aWMg'@; put 'Z2V0IFNFVFRJTkdfS0VZUygpe3JldHVybltGWiwuLi5MUHRdfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtGWl19ZW5hYmxlUGx1Z2luKCl7aWYodGhpcy5lbmFibGVkKXJldHVybjtjb25zdHtuZXN0ZWRIZWFkZXJzOmV9PXRoaXMuaG90LmdldFNldHRpbmdz'@; put 'KCk7ZXx8SGEoIllvdSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIGluIG9yZGVyIHRvIHVzZSBjb2xsYXBzaWJsZSBoZWFkZXJzLiIpLHRoaXMucGx1Z2luTmFtZSYmZWcodGhpcyx6dyx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVBbmRSZWdp'@; put 'c3RlckluZGV4TWFwKHRoaXMucGx1Z2luTmFtZSwiaGlkaW5nIikpLGVnKHRoaXMsV3csdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcChaT2UsImhpZGluZyIpKSx0aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW49dGhpcy5ob3QuZ2V0UGx1Z2luKCJu'@; put 'ZXN0ZWRIZWFkZXJzIiksdGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXI9dGhpcy5uZXN0ZWRIZWFkZXJzUGx1Z2luLmdldFN0YXRlTWFuYWdlcigpLHRoaXMuYWRkSG9vaygiaW5pdCIsbTYodGhpcyxlMWUpKSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLG02KHRoaXMsdDFlKSksdGhpcy5h'@; put 'ZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsbTYodGhpcyxRaGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsbTYodGhpcyxKaGUpKSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlQ29sIixtNih0aGlzLEhaKSksdGhpcy5hZGRIb29rKCJhZnRlclJlbW92ZUNvbCIs'@; put 'bTYodGhpcyxIWikpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSx0aGlzLnVwZGF0ZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe2lmKHRoaXMuaG90LnZpZXcpe2lmKCF0aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW4/LmRldGVjdGVkT3ZlcmxhcHBlZEhlYWRl'@; put 'cnMpe2NvbnN0e2NvbGxhcHNpYmxlQ29sdW1uczplfT10aGlzLmhvdC5nZXRTZXR0aW5ncygpOyJib29sZWFuIj09dHlwZW9mIGU/dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXI/Lm1hcFN0YXRlKHQ9Pih7Y29sbGFwc2libGU6TnVtYmVyKHQub3JpZ0NvbHNwYW4pPjF9KSk6QXJyYXkuaXNBcnJh'@; put 'eShlKSYmKHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyPy5tYXBTdGF0ZSgoKT0+KHtjb2xsYXBzaWJsZTohMX0pKSx0aGlzLmhlYWRlclN0YXRlTWFuYWdlcj8ubWVyZ2VTdGF0ZVdpdGgoZSkpfVZPKHRoaXMsUFosbjFlKS5jYWxsKHRoaXMpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfX1kaXNhYmxl'@; put 'UGx1Z2luKCl7dGhpcy5wbHVnaW5OYW1lJiZ0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcChaT2UpLGVnKHRoaXMsencsbnVsbCksZWcodGhpcyxXdyxudWxsKSx0'@; put 'aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW49bnVsbCx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSx0aGlzLmNsZWFyQnV0dG9ucygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQi'@; put 'KT8uYWRkU2hvcnRjdXQoe2tleXM6W1siRW50ZXIiXV0sY2FsbGJhY2s6KCk9Pntjb25zdCBlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighZSlyZXR1cm47Y29uc3R7cm93OnQsY29sOnJ9PWUuaGlnaGxpZ2h0O2lmKG51bGw9PT10fHxudWxsPT09cilyZXR1cm47Y29u'@; put 'c3QgaT10aGlzLmhlYWRlclN0YXRlTWFuYWdlcj8uZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKHQscik/P3tjb2xsYXBzaWJsZTohMSxpc0NvbGxhcHNlZDohMSxjb2x1bW5JbmRleDowLGhlYWRlckxldmVsOjB9LHtjb2xsYXBzaWJsZTpvLGlzQ29sbGFwc2VkOmEsY29sdW1uSW5kZXg6bH09aTty'@; put 'ZXR1cm4gbz8oYT90aGlzLmV4cGFuZFNlY3Rpb24oe3Jvdzp0LGNvbDpsfSk6dGhpcy5jb2xsYXBzZVNlY3Rpb24oe3Jvdzp0LGNvbDpsfSksITEpOnZvaWQgMH0scnVuT25seUlmOigpPT4hKCF0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmlzU2luZ2xlKCl8fCF0aGlzLmhv'@; put 'dC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmhpZ2hsaWdodC5pc0hlYWRlcigpKSxncm91cDpHT2UscmVsYXRpdmVUb0dyb3VwOlI3LHBvc2l0aW9uOiJiZWZvcmUifSl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdy'@; put 'aWQiKT8ucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChHT2UpfWNsZWFyQnV0dG9ucygpe2lmKCF0aGlzLmhvdC52aWV3KXJldHVybjtjb25zdCBlPXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGgsdD10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLlRI'@; put 'RUFELHI9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BPdmVybGF5Py5jbG9uZT8ud3RUYWJsZS5USEVBRD8/bnVsbCxpPXRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5P3RoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMudG9w'@; put 'SW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lPy53dFRhYmxlLlRIRUFEPz9udWxsOm51bGwsbz1mdW5jdGlvbihhKXthJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKX07IXR8fCFyfHxWYSgwLGUtMSxhPT57Y29uc3QgbD10LmNoaWxkTm9kZXNbYV0sdT1y'@; put 'LmNoaWxkTm9kZXNbYV0sZz1pP2kuY2hpbGROb2Rlc1thXTpudWxsO1ZhKDAsbC5jaGlsZE5vZGVzLmxlbmd0aC0xLEU9PntsZXQgTz1sLmNoaWxkTm9kZXNbRV0ucXVlcnlTZWxlY3RvcihgLiR7QlR9YCk7byhPKSx1JiZ1LmNoaWxkTm9kZXNbRV0mJihPPXUuY2hpbGROb2Rlc1tFXS5xdWVy'@; put 'eVNlbGVjdG9yKGAuJHtCVH1gKSxvKE8pKSxpJiZnJiZnLmNoaWxkTm9kZXNbRV0mJihPPWcuY2hpbGROb2Rlc1tFXS5xdWVyeVNlbGVjdG9yKGAuJHtCVH1gKSxvKE8pKX0pfSl9ZXhwYW5kU2VjdGlvbihlKXt0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbihbZV0sImV4cGFuZCIpfWNv'@; put 'bGxhcHNlU2VjdGlvbihlKXt0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbihbZV0sImNvbGxhcHNlIil9dG9nZ2xlQWxsQ29sbGFwc2libGVTZWN0aW9ucyhlKXtjb25zdCB0PXRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyPy5tYXBOb2RlcyhyPT57Y29uc3R7Y29sbGFwc2libGU6aSxvcmln'@; put 'Q29sc3BhbjpvLGhlYWRlckxldmVsOmEsY29sdW1uSW5kZXg6bCxpc0NvbGxhcHNlZDp1fT1yO2lmKCEwPT09aSYmTnVtYmVyKG8pPjEmJih1JiYiZXhwYW5kIj09PWV8fCF1JiYiY29sbGFwc2UiPT09ZSkpcmV0dXJue3Jvdzp0aGlzLmhlYWRlclN0YXRlTWFuYWdlcj8ubGV2ZWxUb1Jvd0Nv'@; put 'b3JkcyhOdW1iZXIoYSkpPz8wLGNvbDpsfX0pO3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKHQsZSl9Y29sbGFwc2VBbGwoKXt0aGlzLnRvZ2dsZUFsbENvbGxhcHNpYmxlU2VjdGlvbnMoImNvbGxhcHNlIil9ZXhwYW5kQWxsKCl7dGhpcy50b2dnbGVBbGxDb2xsYXBzaWJsZVNlY3Rp'@; put 'b25zKCJleHBhbmQiKX10b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oZSx0KXtpZigodm9pZCAwPT09dHx8ISRPZS5oYXModCkpJiZKcihgVW5zdXBwb3J0ZWQgYWN0aW9uIGlzIHBhc3NlZCAoJHt0fSkuYCksIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2NvbnN0IHI9SHYoZSwoe3JvdzpXZX0p'@; put 'PT5XZTwwKSxpPVZPKHRoaXMscU9lLE5QdCkuY2FsbCh0aGlzLHIsdCksbz1bXSxhPVtdLGw9dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXI/LmdldFZpc2libGVXaGVuSGlkZGVuQ29sdW1ucygpPz9bXTtpJiZYbihyLCh7cm93OldlLGNvbDphdH0pPT57Y29uc3R7YWZmZWN0ZWRDb2x1bW5zOkN0'@; put 'LHJvbGxiYWNrTW9kaWZpY2F0aW9uOkF0fT10aGlzLmhlYWRlclN0YXRlTWFuYWdlcj8udHJpZ2dlck5vZGVNb2RpZmljYXRpb24odCxXZSxhdCk/P3tjb2xzcGFuQ29tcGVuc2F0aW9uOjAsYWZmZWN0ZWRDb2x1bW5zOltdLHJvbGxiYWNrTW9kaWZpY2F0aW9uOigpPT57fX07by5wdXNoKEF0'@; put 'KSxDdC5sZW5ndGg+MCYmYS5wdXNoKC4uLkN0KX0pO2NvbnN0IHU9dGhpcy5nZXRDb2xsYXBzZWRDb2x1bW5zKCk7bGV0IGc9W107ImNvbGxhcHNlIj09PXQ/Zz1nc2UoWy4uLnUsLi4uYV0pOiJleHBhbmQiPT09dCYmKGc9SHYodSxXZT0+IWEuaW5jbHVkZXMoV2UpKSk7Y29uc3QgRT0kT2Uu'@; put 'Z2V0KHQpO2lmKCExPT09dGhpcy5ob3QucnVuSG9va3MoRS5iZWZvcmVIb29rLHUsZyxpKSlyZXR1cm4gdm9pZCBYbihvLFdlPT57V2UoKX0pO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57WG4oYSxXZT0+e202KHRoaXMsencpPy5zZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlz'@; put 'aWNhbENvbHVtbihXZSksRS5oaWRlQ29sdW1uKX0pfSwhMCk7Y29uc3QgWj10aGlzLmhlYWRlclN0YXRlTWFuYWdlcj8uZ2V0VmlzaWJsZVdoZW5IaWRkZW5Db2x1bW5zKCk/P1tdLGVlPXJMKFosbCksdmU9ZWUubGVuZ3RoPjB8fFoubGVuZ3RoIT09bC5sZW5ndGg7dmUmJlZPKHRoaXMsUFos'@; put 'bjFlKS5jYWxsKHRoaXMsWik7Y29uc3QgTWU9dGhpcy5nZXRDb2xsYXBzZWRDb2x1bW5zKCkubGVuZ3RoIT09dS5sZW5ndGh8fHZlLEhlPSJjb2xsYXBzZSI9PT10P2dzZShbLi4uYSwuLi5lZV0pOmVlO01lJiZIZS5sZW5ndGg+MCYmVk8odGhpcyxLT2UsRlB0KS5jYWxsKHRoaXMsSGUpLHRo'@; put 'aXMuaG90LnJ1bkhvb2tzKEUuYWZ0ZXJIb29rLHUsZyxpLE1lKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnJlbmRlcigpfWdldENvbGxhcHNlZENvbHVtbnMoKXtyZXR1cm4gbTYodGhpcyx6dyk/LmdldEhpZGRlbkluZGV4ZXMoKT8/W119ZGVzdHJveSgp'@; put 'e2VnKHRoaXMsencsbnVsbCksZWcodGhpcyxXdyxudWxsKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksWGhlKHRoaXMscU9lKSxYaGUodGhpcyxLT2UpLFhoZSh0aGlzLFBaKSxVdyh0aGlzLHp3LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVdyh0'@; put 'aGlzLFd3LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVdyh0aGlzLEhaLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVdyh0aGlzLFFoZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVXcodGhpcyxKaGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFV3KHRoaXMsZTFl'@; put 'LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVdyh0aGlzLHQxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5uZXN0ZWRIZWFkZXJzUGx1Z2luPW51bGwsdGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXI9bnVsbCxlZyh0aGlzLHp3LG51bGwpLGVnKHRoaXMsV3csbnVsbCksZWco'@; put 'dGhpcyxIWiwoKT0+e1ZPKHRoaXMsUFosbjFlKS5jYWxsKHRoaXMpfSksZWcodGhpcyxRaGUsKHQscixpKT0+e2NvbnN0IG89dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXI/LmdldEhlYWRlclNldHRpbmdzKGksdCkse2NvbGxhcHNpYmxlOmEsb3JpZ0NvbHNwYW46bCxpc0NvbGxhcHNlZDp1fT1v'@; put 'Pz97fSxnPSEwPT09YSYmKGw/PzApPjEmJnQ+PSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0Pz8wKSxFPXRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3M7bGV0IE89ci5xdWVyeVNlbGVjdG9yKGAuJHtCVH1gKTtpZih3NChyLFthbSgiIilbMF1dKSxnKXtP'@; put 'fHwoTz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksWXIoTyxCVCksci5xdWVyeVNlbGVjdG9yKCJkaXY6Zmlyc3QtY2hpbGQiKT8uYXBwZW5kQ2hpbGQoTykpO2NvbnN0IFo9TztrbyhaLFsiY29sbGFwc2VkIiwiZXhwYW5kZWQiXSksdT8oWXIoWiwiY29sbGFw'@; put 'c2VkIikseTcoWiwiKyIpLEUmJktvKHIsLi4uYW0oITEpKSk6KFlyKFosImV4cGFuZGVkIikseTcoWiwiLSIpLEUmJktvKHIsLi4uYW0oITApKSksRSYmS28oWiwiYXJpYS1oaWRkZW4iLCJ0cnVlIil9ZWxzZSBPPy5yZW1vdmUoKX0pLGVnKHRoaXMsSmhlLCh0LHIpPT57Y29uc3QgaT1BYSh0'@; put 'KTtMYShpLEJUKSYmKExhKGksImV4cGFuZGVkIik/KHRoaXMuZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChpLCJtb3VzZXVwIiksdGhpcy50b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oW3JdLCJjb2xsYXBzZSIpKTpMYShpLCJjb2xsYXBzZWQiKSYmKHRoaXMuZXZlbnRNYW5hZ2VyLmZpcmVFdmVu'@; put 'dChpLCJtb3VzZXVwIiksdGhpcy50b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oW3JdLCJleHBhbmQiKSksRjModCkpfSksZWcodGhpcyxlMWUsKCk9Pnt0aGlzLnVwZGF0ZVBsdWdpbigpfSksZWcodGhpcyx0MWUsKHQscik9PntyfHx0aGlzLnVwZGF0ZVBsdWdpbigpfSl9fWZ1bmN0aW9uIE5Q'@; put 'dChuLGUpe2lmKDA9PT1uLmxlbmd0aClyZXR1cm4hMTtsZXQgdD0hMDtyZXR1cm4gWG4obiwoe3JvdzpyLGNvbDppfSk9Pntjb25zdHtjb2xsYXBzaWJsZTpvLGlzQ29sbGFwc2VkOmF9PXRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyPy5nZXRIZWFkZXJUcmVlTm9kZURhdGEocixpKT8/e307aWYo'@; put 'IW98fGEmJiJjb2xsYXBzZSI9PT1lfHwhYSYmImV4cGFuZCI9PT1lKXJldHVybiB0PSExLCExfSksdH1mdW5jdGlvbiBGUHQobil7Y29uc3QgZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWUpcmV0dXJuO2NvbnN0e3Jvdzp0LGNvbDpyfT1lLmhpZ2hsaWdodDtpZihu'@; put 'dWxsIT09dCYmbnVsbCE9PXImJih0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5pc0hpZGRlbih0KXx8dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuaXNIaWRkZW4ocikpJiZuLmluY2x1ZGVzKHIpKXtjb25zdCBvPXQ+PTA/dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhp'@; put 'ZGRlbkluZGV4KHQsMSwhMCk6dCxhPXI+PTA/dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHIsMSwhMCk6cjtudWxsIT09byYmbnVsbCE9PWEmJnRoaXMuaG90LnNlbGVjdENlbGwobyxhKX19ZnVuY3Rpb24gbjFlKG49dGhpcy5oZWFkZXJTdGF0'@; put 'ZU1hbmFnZXI/LmdldFZpc2libGVXaGVuSGlkZGVuQ29sdW1ucygpPz9bXSl7aWYoIW02KHRoaXMsV3cpKXJldHVybjtjb25zdCBlPW02KHRoaXMsV3cpLHQ9X2MobixvPT50aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKG8pKSxyPWUuZ2V0SGlkZGVuSW5kZXhlcygpO3QubGVuZ3RoPT09ci5s'@; put 'ZW5ndGgmJjA9PT1yTCh0LHIpLmxlbmd0aHx8dGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oKCk9PntlLmNsZWFyKCksWG4odCxvPT57ZS5zZXRWYWx1ZUF0SW5kZXgobywhMCl9KX0sITApfWNvbnN0IFBQdD1bInNvcnRFbXB0eUNlbGxzIiwiaW5kaWNhdG9yIiwiaGVhZGVyQWN0aW9uIiwiY29t'@; put 'cGFyZUZ1bmN0aW9uRmFjdG9yeSJdO2NsYXNzIGpQdHt1cGRhdGVBbGxDb2x1bW5zUHJvcGVydGllcyhlKXtDYShlKSYmYWMoZSwodCxyKT0+e1BQdC5pbmNsdWRlcyhyKSYmKHRoaXNbcl09dCl9KX1nZXRBbGxDb2x1bW5zUHJvcGVydGllcygpe2NvbnN0IGU9e3NvcnRFbXB0eUNlbGxzOnRo'@; put 'aXMuc29ydEVtcHR5Q2VsbHMsaW5kaWNhdG9yOnRoaXMuaW5kaWNhdG9yLGhlYWRlckFjdGlvbjp0aGlzLmhlYWRlckFjdGlvbn07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSYmKGUuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeT10aGlzLmNvbXBh'@; put 'cmVGdW5jdGlvbkZhY3RvcnkpLGV9Z2V0U29ydE9yZGVyT2ZDb2x1bW4oZSl7cmV0dXJuIHRoaXMuc29ydGluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihlKSk/LnNvcnRPcmRlcn1nZXRJbmRleE9mQ29sdW1uSW5Tb3J0UXVldWUoZSl7cmV0dXJu'@; put 'IGU9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihlKSx0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0RW50cmllcygpLmZpbmRJbmRleCgoW3RdKT0+dD09PWUpfWdldE51bWJlck9mU29ydGVkQ29sdW1ucygpe3JldHVybiB0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0TGVuZ3RoKCl9aXNMaXN0T2ZTb3J0'@; put 'ZWRDb2x1bW5zRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMuZ2V0TnVtYmVyT2ZTb3J0ZWRDb2x1bW5zKCl9aXNDb2x1bW5Tb3J0ZWQoZSl7cmV0dXJuIENhKHRoaXMuc29ydGluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihlKSkpfWdldFNvcnRTdGF0'@; put 'ZXMoKXtyZXR1cm4gbnVsbD09PXRoaXMuc29ydGluZ1N0YXRlcz9bXTp0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0RW50cmllcygpLm1hcCgoW3Qscl0pPT4oe2NvbHVtbjp0aGlzLmhvdC50b1Zpc3VhbENvbHVtbih0KSwuLi5yfSkpfWdldENvbHVtblNvcnRTdGF0ZShlKXtjb25zdCB0PXRoaXMu'@; put 'Z2V0U29ydE9yZGVyT2ZDb2x1bW4oZSk7aWYodm9pZCAwIT09dClyZXR1cm57Y29sdW1uOmUsc29ydE9yZGVyOnR9fXNldFNvcnRTdGF0ZXMoZSl7dGhpcy5zb3J0aW5nU3RhdGVzLmNsZWFyKCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz0xKXtjb25zdCByPWVbdF07dGhpcy5zb3J0aW5n'@; put 'U3RhdGVzLnNldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHIuY29sdW1uKSx7c29ydE9yZGVyOnIuc29ydE9yZGVyfSl9fWRlc3Ryb3koKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMubWFwTmFtZSksUmVmbGVjdC5zZXQodGhp'@; put 'cywic29ydGluZ1N0YXRlcyIsbnVsbCl9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnNvcnRpbmdTdGF0ZXM9bmV3IFRZLHRoaXMuc29ydEVtcHR5Q2VsbHM9ITEsdGhpcy5pbmRpY2F0b3I9ITAsdGhpcy5oZWFkZXJBY3Rpb249ITAsdGhpcy5ob3Q9ZSx0aGlzLm1hcE5hbWU9dCx0aGlzLmhvdC5j'@; put 'b2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0LHRoaXMuc29ydGluZ1N0YXRlcyl9fWZ1bmN0aW9uIFhPZShuLGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIG4/TnVtYmVyKG4pOiJzdHJpbmciPT10eXBlb2Ygbj92MShuLGUpOm59ZnVuY3Rpb24gUU9lKG4sZSx0KXtjb25zdCByPWUu'@; put 'bG9jYWxlO3JldHVybiBmdW5jdGlvbihpLG8pe2NvbnN0e3NvcnRFbXB0eUNlbGxzOmF9PXQsbD1YT2UoaSxyKSx1PVhPZShvLHIpO3JldHVybiBsPT09dT90ZzpBbChsKT9BbCh1KT90ZzphJiYiYXNjIj09PW4/aHU6ZnU6QWwodSk/YSYmImFzYyI9PT1uP2Z1Omh1OmZ1bmN0aW9uIFVQdChu'@; put 'LGUsdCl7Y29uc3Qgcj1pc05hTihuKSxpPWlzTmFOKGUpO2lmKHImJiFpKXJldHVybiJhc2MiPT09dD9mdTpodTtpZighciYmaSlyZXR1cm4iYXNjIj09PXQ/aHU6ZnU7bGV0IG89bixhPWU7cmV0dXJuIXImJiFpJiYobz1wYXJzZUZsb2F0KFN0cmluZyhuKSksYT1wYXJzZUZsb2F0KFN0cmlu'@; put 'ZyhlKSkpLG88YT8iYXNjIj09PXQ/aHU6ZnU6bz5hPyJhc2MiPT09dD9mdTpodTp0Z30obCx1LG4pfX1jb25zdHtyZWdpc3RlcjpZdyxnZXRJdGVtOmVOZSxoYXNJdGVtOnJIdH09enAoInNvcnRpbmcuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSIpLHtyZWdpc3Rlcjp0TmUsZ2V0SXRlbTppSHR9'@; put 'PXpwKCJzb3J0aW5nLm1haW5Tb3J0Q29tcGFyYXRvciIpO2Z1bmN0aW9uIG5OZShuKXtyZXR1cm4gckh0KG4pP2VOZShuKTplTmUoImRlZmF1bHQiKX1ZdygiY2hlY2tib3giLGZ1bmN0aW9uIEdQdChuLGUsdCl7Y29uc3Qgcj1lLmNoZWNrZWRUZW1wbGF0ZSxpPWUudW5jaGVja2VkVGVtcGxh'@; put 'dGUse3NvcnRFbXB0eUNlbGxzOm99PXQ7cmV0dXJuIGZ1bmN0aW9uKGEsbCl7Y29uc3QgdT1BbChhKSxnPUFsKGwpLEU9dT9pOmEsTz1nP2k6bDtpZighMT09PW8pe2lmKHUmJiExPT09ZylyZXR1cm4gZnU7aWYoITE9PT11JiZnKXJldHVybiBodX1jb25zdCB2ZT1mdW5jdGlvbiBaUHQobixl'@; put 'LHQscixpLG8sYSl7cmV0dXJuITE9PT1uJiZlPyJhc2MiPT09dD9odTpmdTpuJiYhMT09PWU/ImFzYyI9PT10P2Z1Omh1OiExPT09biYmITE9PT1lP1FPZSh0LHIsaSkobyxhKTpudWxsfShFPT09aXx8RT09PXIsTz09PWl8fE89PT1yLG4sZSx0LGEsbCk7cmV0dXJuIG51bGwhPT12ZT92ZTpm'@; put 'dW5jdGlvbiBZUHQobixlLHQscixpKXtyZXR1cm4gbj09PXImJmU9PT10PyJhc2MiPT09aT9odTpmdTpuPT09dCYmZT09PXI/ImFzYyI9PT1pP2Z1Omh1OnRnfShFLE8scixpLG4pfX0pLFl3KCJkYXRlIixmdW5jdGlvbiBxUHQobixlLHQpe3JldHVybiBsTmUobix0KX0pLFl3KCJpbnRsLWRh'@; put 'dGUiLGZ1bmN0aW9uIFhQdChuLGUsdCl7cmV0dXJuIGxOZShuLHQpfSksWXcoImRlZmF1bHQiLFFPZSksWXcoIm51bWVyaWMiLGZ1bmN0aW9uIHpQdChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7Y29uc3Qgbz1wYXJzZUZsb2F0KHIpLGE9cGFyc2VGbG9hdChpKSx7c29ydEVtcHR5Q2Vs'@; put 'bHM6bH09dDtpZihvPT09YXx8aXNOYU4obykmJmlzTmFOKGEpKXJldHVybiB0ZztpZihsKXtpZihBbChyKSlyZXR1cm4iYXNjIj09PW4/aHU6ZnU7aWYoQWwoaSkpcmV0dXJuImFzYyI9PT1uP2Z1Omh1fXJldHVybiBpc05hTihvKT9mdTppc05hTihhKT9odTpvPGE/ImFzYyI9PT1uP2h1OmZ1'@; put 'Om8+YT8iYXNjIj09PW4/ZnU6aHU6dGd9fSksWXcoInRpbWUiLGZ1bmN0aW9uIEpQdChuLGUsdCl7cmV0dXJuIGNOZShuLHQpfSksWXcoImludGwtdGltZSIsZnVuY3Rpb24gdEh0KG4sZSx0KXtyZXR1cm4gY05lKG4sdCl9KTtjb25zdCB0Zz0wLGh1PS0xLGZ1PTEsVlo9ImFzYyIsQlo9ImRl'@; put 'c2MiO2Z1bmN0aW9uIGlOZShuKXtpZighMT09PUNhKG4pKXJldHVybiExO2NvbnN0e2NvbHVtbjplLHNvcnRPcmRlcjp0fT1uO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZbVlosQlpdLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIG9OZShuKXtpZihuIT09QlopcmV0dXJuIG49PT1WWj9CWjpW'@; put 'Wn1mdW5jdGlvbiBhTmUobil7cmV0dXJuIG4ucXVlcnlTZWxlY3RvcigiLmNvbEhlYWRlciIpfWZ1bmN0aW9uIHNOZShuLGUpe3JldHVybiEobjwwKSYmY3coZSl9ZnVuY3Rpb24gcjFlKG4sZSx0KXtpZihlPDB8fG4+PTB8fHp2KHQpKXJldHVybiExO2lmKC0xPT09bilyZXR1cm4hMDtjb25z'@; put 'dCByPSJmdW5jdGlvbiI9PXR5cGVvZiBBYSh0KT8uY2xvc2VzdD9BYSh0KS5jbG9zZXN0KCJ0aCIpOm51bGw7cmV0dXJuIG51bGwhPT1yJiZjdyhyKX1mdW5jdGlvbiBsTmUobixlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtjb25zdHtzb3J0RW1wdHlDZWxsczppfT1lO2lmKHQ9PT1yKXJldHVy'@; put 'biB0ZztpZihBbCh0KSlyZXR1cm4gQWwocik/dGc6aSYmImFzYyI9PT1uP2h1OmZ1O2lmKEFsKHIpKXJldHVybiBpJiYiYXNjIj09PW4/ZnU6aHU7Y29uc3Qgbz1zYyh0KSxhPXNjKHIpO3JldHVybiBudWxsPT09bz9mdTpudWxsPT09YT9odTphPm8/ImFzYyI9PT1uP2h1OmZ1OmE8bz8iYXNj'@; put 'Ij09PW4/ZnU6aHU6dGd9fWZ1bmN0aW9uIGNOZShuLGUpe3JldHVybiBmdW5jdGlvbih0LHIpe2NvbnN0e3NvcnRFbXB0eUNlbGxzOml9PWU7aWYodD09PXIpcmV0dXJuIHRnO2lmKEFsKHQpKXJldHVybiBBbChyKT90ZzppJiYiYXNjIj09PW4/aHU6ZnU7aWYoQWwocikpcmV0dXJuIGkmJiJh'@; put 'c2MiPT09bj9mdTpodTtjb25zdCBvPXpmKHQpLGE9emYocik7cmV0dXJuIG51bGw9PT1vP2Z1Om51bGw9PT1hP2h1OmE+bz8iYXNjIj09PW4/aHU6ZnU6YTxvPyJhc2MiPT09bj9mdTpodTp0Z319Y29uc3QgdU5lPSJpbmRpY2F0b3JEaXNhYmxlZCIsZE5lPSJjb2x1bW5Tb3J0aW5nIixoTmU9'@; put 'InNvcnRBY3Rpb24iLGZOZT1uZXcgTWFwKFtbVlosImFzY2VuZGluZyJdLFtCWiwiZGVzY2VuZGluZyJdXSk7ZnVuY3Rpb24gcE5lKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNl'@; put 'Iik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIFp3KG4sZSl7cmV0dXJuIGZ1bmN0aW9uIHBIdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4scE5lKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIEJPKG4sZSx0KXsoZnVuY3Rpb24gZkh0KG4sZSl7aWYoZS5oYXMobikp'@; put 'dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBqTyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGdIdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQu'@; put 'Y2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4scE5lKG4sZSwic2V0IiksdCksdH1jb25zdCBqWj0iY29sdW1uU29ydGluZyIsVVo9ImFwcGVuZCIs'@; put 'Z05lPWpaO3ROZShqWixmdW5jdGlvbiBoSHQobixlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtjb25zdFssLi4uaV09dCxbLC4uLm9dPXI7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgdT1uWzBdLGc9ZVswXSxFPWlbMF0sTz1vWzBdLFo9ZyxlZT1aLmNvbHVtblNvcnRpbmc7cmV0dXJuKGVlPy5j'@; put 'b21wYXJlRnVuY3Rpb25GYWN0b3J5P2VlLmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk6bk5lKFoudHlwZT8/IiIpKSh1LGcsZWUpKEUsTyl9KCl9fSksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUNvbHVtblNvcnQiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJD'@; put 'b2x1bW5Tb3J0Iik7Y29uc3QgVU89bmV3IFdlYWtNYXA7dmFyIHpPPW5ldyBXZWFrTWFwLGkxZT1uZXcgV2Vha01hcCxvMWU9bmV3IFdlYWtNYXAsYTFlPW5ldyBXZWFrTWFwLHMxZT1uZXcgV2Vha01hcDtjbGFzcyBtTmUgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1'@; put 'cm4galp9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gNTB9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XX1lbmFibGVQbHVnaW4oKXtpZihVTy5oYXModGhpcy5ob3QpJiZVTy5nZXQodGhpcy5ob3QpIT09dGhpcy5w'@; put 'bHVnaW5LZXkpcmV0dXJuIHRoaXMuaG90LnVwZGF0ZVNldHRpbmdzKHtbdGhpcy5wbHVnaW5LZXldOiExfSksdm9pZCBmdW5jdGlvbiBzSHQobixlKXtIYSh5Y2BQbHVnaW5zIFxgY29sdW1uU29ydGluZ1xgIGFuZCBcYG11bHRpQ29sdW1uU29ydGluZ1xgIHNob3VsZCBub3QgYmUgZW5hYmxl'@; put 'ZCBzaW11bHRhbmVvdXNseS5ceDIwCiAgICBPbmx5IFxgJHtufVxgIHdpbGwgd29yay4gVGhlIFxgJHtlfVxgIHBsdWdpbiB3aWxsIHJlbWFpbiBkaXNhYmxlZC5gKX0oVU8uZ2V0KHRoaXMuaG90KSx0aGlzLnBsdWdpbktleSk7dGhpcy5lbmFibGVkfHwoVU8uc2V0KHRoaXMuaG90LHRoaXMu'@; put 'cGx1Z2luS2V5KSx0aGlzLmNvbHVtblN0YXRlc01hbmFnZXI9bmV3IGpQdCh0aGlzLmhvdCxgJHt0aGlzLnBsdWdpbktleX0uc29ydGluZ1N0YXRlc2ApLHRoaXMuY29sdW1uTWV0YUNhY2hlPW5ldyBuXyhlPT57bGV0IHQ9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oZSk7cmV0dXJuIG51bGw9'@; put 'PT10JiYodD1lKSx0aGlzLmdldE1lcmdlZFBsdWdpblNldHRpbmdzKHQpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoYCR7dGhpcy5wbHVnaW5LZXl9LmNvbHVtbk1ldGFgLHRoaXMuY29sdW1uTWV0YUNhY2hlKSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sSGVh'@; put 'ZGVyIixadyh0aGlzLGkxZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixadyh0aGlzLHMxZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLChlLHQpPT50aGlzLm9uQWZ0ZXJPbkNlbGxNb3VzZURvd24oZSx0KSksdGhpcy5hZGRIb29rKCJhZnRl'@; put 'ckluaXQiLFp3KHRoaXMsek8pKSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLFp3KHRoaXMsbzFlKSksdGhpcy5hZGRIb29rKCJhZnRlckRhdGFQcm92aWRlckZldGNoIixadyh0aGlzLGExZSksLTEpLHRoaXMuaG90LnZpZXcmJlp3KHRoaXMsek8pLmNhbGwodGhpcyksdGhpcy5yZWdp'@; put 'c3RlclNob3J0Y3V0cygpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX1kaXNhYmxlUGx1Z2luKCl7Y29uc3QgZT0odCxyKT0+e2NvbnN0IGk9YU5lKHIpOyExPT09c05lKHQscil8fG51bGw9PT1pfHx0aGlzLnVwZGF0ZUhlYWRlckNsYXNzZXMoaSl9O1VPLmRlbGV0ZSh0aGlzLmhvdCksdGhpcy5o'@; put 'b3QuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGUpLHRoaXMuaG90LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLCgpPT57dGhpcy5ob3QucmVtb3ZlSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGUpfSksdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oKCk9PntudWxsIT09dGhpcy5p'@; put 'bmRleGVzU2VxdWVuY2VDYWNoZSYmKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlLmdldFZhbHVlcygpKSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luS2V5KSx0aGlzLmlu'@; put 'ZGV4ZXNTZXF1ZW5jZUNhY2hlPW51bGwpfSwhMCksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcChgJHt0aGlzLnBsdWdpbktleX0uY29sdW1uTWV0YWApLHRoaXMuY29sdW1uU3RhdGVzTWFuYWdlcj8uZGVzdHJveSgpLHRoaXMuY29sdW1uTWV0YUNhY2hlPW51bGws'@; put 'dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyPW51bGwsdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpPy5hZGRTaG9ydGN1dCh7a2V5'@; put 'czpbWyJFbnRlciJdXSxjYWxsYmFjazooKT0+e2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFlKXJldHVybiExO2NvbnN0e2hpZ2hsaWdodDp0fT1lO3JldHVybiB0aGlzLnNvcnQodGhpcy5nZXRDb2x1bW5OZXh0Q29uZmlnKHQuY29sPz8wKSksITF9LHJ1'@; put 'bk9ubHlJZjooKT0+e2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQsdD1lJiZudWxsIT09ZS5yb3cmJm51bGwhPT1lLmNvbD90aGlzLmhvdC5nZXRDZWxsKGUucm93LGUuY29sLCEwKTpudWxsO3JldHVybiEhKGUmJnRoaXMuaG90LmdldFNlbGVj'@; put 'dGVkUmFuZ2VBY3RpdmUoKT8uaXNTaW5nbGUoKSYmdGhpcy5ob3Quc2VsZWN0aW9uLmlzQ2VsbFZpc2libGUoZSkmJm51bGwhPT1lLnJvdyYmZS5yb3c8MCYmbnVsbCE9PWUuY29sJiZlLmNvbD49MCYmdCYmY3codCkpfSxyZWxhdGl2ZVRvR3JvdXA6UjcscG9zaXRpb246ImJlZm9yZSIsZ3Jv'@; put 'dXA6Z05lfSl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKT8ucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChnTmUpfXNvcnQoZSl7Y29uc3QgdD10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0U29ydFN0YXRlcygp'@; put 'LHI9dGhpcy5nZXROb3JtYWxpemVkU29ydENvbmZpZ3MoZSksaT10aGlzLmFyZVZhbGlkU29ydENvbmZpZ3Mocik7ITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uU29ydCIsdCxyLGkpJiYoMD09PXQubGVuZ3RoJiZudWxsPT09dGhpcy5pbmRleGVzU2VxdWVuY2VDYWNoZSYm'@; put 'KHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGU9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5LZXksbmV3IG9SZSksdGhpcy5pbmRleGVzU2VxdWVuY2VDYWNoZS5zZXRWYWx1ZXModGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNl'@; put 'KCkpKSxpJiYodGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyPy5zZXRTb3J0U3RhdGVzKHIpLHRoaXMuc29ydEJ5UHJlc2V0U29ydFN0YXRlcyhyKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uU29ydCIsdCxpP3I6dCxpKSxpJiZ0aGlzLmhvdC5yZW5kZXIoKSl9Y2xlYXJTb3J0KCl7'@; put 'dGhpcy5zb3J0KFtdKX1pc1NvcnRlZCgpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLmNvbHVtblN0YXRlc01hbmFnZXI/LmlzTGlzdE9mU29ydGVkQ29sdW1uc0VtcHR5KCl9Z2V0U29ydENvbmZpZyhlKXtyZXR1cm4gdm9pZCAwIT09ZT90aGlzLmNvbHVtblN0YXRlc01hbmFnZXI/Lmdl'@; put 'dENvbHVtblNvcnRTdGF0ZShlKTp0aGlzLmNvbHVtblN0YXRlc01hbmFnZXI/LmdldFNvcnRTdGF0ZXMoKX1zZXRTb3J0Q29uZmlnKGUpe2NvbnN0IHQ9dGhpcy5nZXROb3JtYWxpemVkU29ydENvbmZpZ3MoZSk7dGhpcy5hcmVWYWxpZFNvcnRDb25maWdzKHQpJiZ0aGlzLmNvbHVtblN0YXRl'@; put 'c01hbmFnZXI/LnNldFNvcnRTdGF0ZXModCl9Z2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKGU9W10pe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Uuc2xpY2UoMCwxKTpbZV19YXJlVmFsaWRTb3J0Q29uZmlncyhlKXtjb25zdCB0PXRoaXMuaG90LmNvdW50Q29scygpO3JldHVybiBmdW5jdGlv'@; put 'biBhSHQobil7aWYobi5zb21lKHI9PiExPT09aU5lKHIpKSlyZXR1cm4hMTtjb25zdCB0PW4uZmlsdGVyKGlOZSkubWFwKHI9PnIuY29sdW1uKTtyZXR1cm4gbmV3IFNldCh0KS5zaXplPT09dC5sZW5ndGh9KGUpJiZlLmV2ZXJ5KCh7Y29sdW1uOnJ9KT0+cjw9dCYmcj49MCl9Z2V0Q29sdW1u'@; put 'TmV4dENvbmZpZyhlKXtjb25zdCB0PXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlcj8uZ2V0U29ydE9yZGVyT2ZDb2x1bW4oZSk7aWYoWm8odCkpe2NvbnN0IGk9b05lKHQpO3JldHVybiB2b2lkIDAhPT1pP3tjb2x1bW46ZSxzb3J0T3JkZXI6aX06dm9pZCAwfWNvbnN0IHI9dGhpcy5ob3QuY291'@; put 'bnRDb2xzKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MCYmZTxyKXJldHVybntjb2x1bW46ZSxzb3J0T3JkZXI6b05lKCk/PyJhc2MifX1nZXROZXh0U29ydENvbmZpZyhlLHQ9VVope2NvbnN0IHI9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldEluZGV4T2ZDb2x1bW5JblNvcnRR'@; put 'dWV1ZShlKSxpPS0xIT09cixvPXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5nZXRTb3J0U3RhdGVzKCksYT10aGlzLmdldENvbHVtbk5leHRDb25maWcoZSk7aWYoaSl7aWYoWHUoYSkpcmV0dXJuWy4uLm8uc2xpY2UoMCxyKSwuLi5vLnNsaWNlKHIrMSldO2lmKHQ9PT1VWilyZXR1cm5bLi4u'@; put 'by5zbGljZSgwLHIpLC4uLm8uc2xpY2UocisxKSxhXTtpZigicmVwbGFjZSI9PT10KXJldHVyblsuLi5vLnNsaWNlKDAsciksYSwuLi5vLnNsaWNlKHIrMSldfXJldHVybiB2b2lkIDAhPT1hP28uY29uY2F0KGEpOm99Z2V0UGx1Z2luQ29sdW1uQ29uZmlnKGUpe2lmKENhKGUpKXtjb25zdCB0'@; put 'PWVbdGhpcy5wbHVnaW5LZXldO2lmKENhKHQpKXJldHVybiB0fXJldHVybnt9fWdldE1lcmdlZFBsdWdpblNldHRpbmdzKGUpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV0scj10aGlzLmNvbHVtblN0YXRlc01hbmFnZXI/LmdldEFsbENvbHVtbnNQcm9w'@; put 'ZXJ0aWVzKCk/P3t9LGk9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoMCxlKSxvPU9iamVjdC5nZXRQcm90b3R5cGVPZihpKTtpZihBcnJheS5pc0FycmF5KG8uY29sdW1ucykpcmV0dXJuIE9iamVjdC5hc3NpZ24ocix0LHRoaXMuZ2V0UGx1Z2luQ29sdW1uQ29uZmlnKG8uY29sdW1uc1tlXSkpO2lm'@; put 'KF9hKG8uY29sdW1ucykpe2NvbnN0IGE9by5jb2x1bW5zKGUpO3JldHVybiBPYmplY3QuYXNzaWduKHIsdCx0aGlzLmdldFBsdWdpbkNvbHVtbkNvbmZpZyhhKSl9cmV0dXJuIE9iamVjdC5hc3NpZ24ocix0KX1nZXRGaXJzdENlbGxTZXR0aW5ncyhlKXtjb25zdCB0PXRoaXMuaG90LmdldENl'@; put 'bGxNZXRhKDAsZSkscj1PYmplY3QuY3JlYXRlKHQpO3JldHVybiByW3RoaXMucGx1Z2luS2V5XT10aGlzLmNvbHVtbk1ldGFDYWNoZT8uZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSkpLHJ9Z2V0TnVtYmVyT2ZSb3dzVG9Tb3J0KGUpe2NvbnN0IHQ9dGhpcy5o'@; put 'b3QuZ2V0U2V0dGluZ3MoKSxyPXQuZml4ZWRSb3dzQm90dG9tfHwwO3JldHVybih0Lm1heFJvd3M/PzEvMCk8PWU/TWF0aC5tYXgoMCwodC5tYXhSb3dzPz8wKS1yKTpNYXRoLm1heCgwLGUtKHQubWluU3BhcmVSb3dzPz8wKS1yKX1zb3J0QnlQcmVzZXRTb3J0U3RhdGVzKGUpe2lmKHRoaXMu'@; put 'aG90LnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlLmdldFZhbHVlcygpKSwwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IHQ9W10scj10aGlzLmhvdC5jb3VudFJvd3MoKSxvPXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dz'@; put 'VG9wfHwwLGE9dGhpcy5nZXROdW1iZXJPZlJvd3NUb1NvcnQociksbD1aPT5fYyhlLGVlPT50aGlzLmhvdC5nZXREYXRhQXRDZWxsKFosZWUuY29sdW1uKSk7Zm9yKGxldCBaPW87WjxhO1orPTEpdC5wdXNoKFt0aGlzLmhvdC50b1BoeXNpY2FsUm93KFopLC4uLmwoWildKTtjb25zdCB1PV9j'@; put 'KHQsWj0+WlswXSk7IWZ1bmN0aW9uIG9IdChuLGUsLi4udCl7Y29uc3Qgcj1pSHQoZSk7bi5zb3J0KHIoLi4udCkpfSh0LHRoaXMucGx1Z2luS2V5LF9jKGUsWj0+Wi5zb3J0T3JkZXIpLF9jKGUsWj0+dGhpcy5nZXRGaXJzdENlbGxTZXR0aW5ncyhaLmNvbHVtbikpKTtmb3IobGV0IFo9YTta'@; put 'PHI7Wis9MSl0LnB1c2goW1osLi4ubChaKV0pO2NvbnN0IGc9X2ModCxaPT5aWzBdKSxFPW5ldyBNYXAoX2ModSwoWixlZSk9PltaLGdbZWVdXSkpLE89X2ModGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksWj0+RS5nZXQoWik/P1opO3RoaXMuaG90LnJvd0lu'@; put 'ZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShPKX1zb3J0QnlTZXR0aW5ncyhlKXtpZihrZChlKSl7dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnVwZGF0ZUFsbENvbHVtbnNQcm9wZXJ0aWVzKGUpO2NvbnN0e2luaXRpYWxDb25maWc6dH09ZTsoQXJyYXkuaXNBcnJheSh0KXx8a2QodCkp'@; put 'JiZ0aGlzLnNvcnQodCl9ZWxzZSB0aGlzLmhvdC5yZW5kZXIoKX11cGRhdGVIZWFkZXJDbGFzc2VzKGUsdCxyLGksbyl7a28oZSxmdW5jdGlvbiBkSHQoKXtyZXR1cm4gQXJyYXkuZnJvbShmTmUudmFsdWVzKCkpLmNvbmNhdChoTmUsdU5lLGROZSl9KCkpLCExIT09dGhpcy5lbmFibGVkJiZ2'@; put 'b2lkIDAhPT10JiZ2b2lkIDAhPT1yJiZZcihlLGZ1bmN0aW9uIHVIdChuLGUsdCxyKXtjb25zdCBpPVtkTmVdO2lmKHImJmkucHVzaChoTmUpLCExPT09dClyZXR1cm4gaS5wdXNoKHVOZSksaTtjb25zdCBvPW4uZ2V0U29ydE9yZGVyT2ZDb2x1bW4oZSk7aWYodm9pZCAwIT09byl7Y29uc3Qg'@; put 'YT1mTmUuZ2V0KG8pO3ZvaWQgMCE9PWEmJmkucHVzaChhKX1yZXR1cm4gaX0odCxyLGk/PyExLG8/PyExKSl9b25VcGRhdGVTZXR0aW5ncyhlKXtzdXBlci5vblVwZGF0ZVNldHRpbmdzKGUpLG51bGwhPT10aGlzLmNvbHVtbk1ldGFDYWNoZSYmdGhpcy5jb2x1bW5NZXRhQ2FjaGUuaW5pdCh0'@; put 'aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSk7Y29uc3QgdD1lW3RoaXMucGx1Z2luS2V5XTtabyh0KSYmdGhpcy5zb3J0QnlTZXR0aW5ncyh0KX13YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKGUsdCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RDZWxsU2V0dGlu'@; put 'Z3ModClbdGhpcy5wbHVnaW5LZXldLmhlYWRlckFjdGlvbiYmTGEoQWEoZSksImNvbEhlYWRlciIpfW9uQWZ0ZXJPbkNlbGxNb3VzZURvd24oZSx0KXtpZighMSE9PXIxZSh0LnJvdyx0LmNvbCxlKSYmdGhpcy53YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKGUsdC5jb2wpKXt0aGlzLmhvdC5n'@; put 'ZXRTaG9ydGN1dE1hbmFnZXIoKS5pc0N0cmxQcmVzc2VkKCkmJih0aGlzLmhvdC5kZXNlbGVjdENlbGwoKSx0aGlzLmhvdC5zZWxlY3RDb2x1bW5zKHQuY29sKSk7Y29uc3Qgcj10aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKSxpPXRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyh0LmNvbCk7cj8u'@; put 'aXNPcGVuZWQoKSYmdGhpcy5ob3QuZ2V0Q2VsbFZhbGlkYXRvcihyLnJvdyxyLmNvbCk/dGhpcy5ob3QuYWRkSG9va09uY2UoInBvc3RBZnRlclZhbGlkYXRlIiwoKT0+e3RoaXMuc29ydChpKX0pOnRoaXMuc29ydChpKX19ZGVzdHJveSgpe3RoaXMuY29sdW1uU3RhdGVzTWFuYWdlcj8uZGVz'@; put 'dHJveSgpLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxCTyh0aGlzLHpPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxCTyh0aGlzLGkxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksQk8odGhpcyxvMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZv'@; put 'aWQgMH0pLEJPKHRoaXMsYTFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxCTyh0aGlzLHMxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyPW51bGwsdGhpcy5jb2x1bW5NZXRhQ2FjaGU9bnVsbCx0aGlzLnBsdWdpbktleT1qWix0aGlz'@; put 'LmluZGV4ZXNTZXF1ZW5jZUNhY2hlPW51bGwsak8odGhpcyx6TywoKT0+e2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV07dGhpcy5zb3J0QnlTZXR0aW5ncyh0KX0pLGpPKHRoaXMsaTFlLCh0LHIpPT57Y29uc3QgaT1hTmUocik7aWYoITE9PT1zTmUodCxy'@; put 'KXx8bnVsbD09PWkpcmV0dXJuO2NvbnN0IGE9dGhpcy5nZXRGaXJzdENlbGxTZXR0aW5ncyh0KVt0aGlzLnBsdWdpbktleV07aWYodGhpcy51cGRhdGVIZWFkZXJDbGFzc2VzKGksdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyPz92b2lkIDAsdCxhLmluZGljYXRvcixhLmhlYWRlckFjdGlvbiks'@; put 'dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyl7Y29uc3QgZz10aGlzLmNvbHVtblN0YXRlc01hbmFnZXI/LmdldFNvcnRPcmRlck9mQ29sdW1uKHQpO0tvKHIsLi4uKG49PlsiYXJpYS1zb3J0IixuXSkoZz9gJHtnfWVuZGluZ2A6Im5vbmUiKSl9fSksak8odGhpcyxvMWUsdD0+eyEw'@; put 'PT09dCYmdGhpcy5ob3QudmlldyYmWncodGhpcyx6TykuY2FsbCh0aGlzKX0pLGpPKHRoaXMsYTFlLHQ9Pnt0aGlzLnNldFNvcnRDb25maWcodD8uY29sdW1uU29ydENvbmZpZz8/W10pfSksak8odGhpcyxzMWUsKHQscixpLG8pPT57ITEhPT1yMWUoci5yb3csci5jb2wsdCkmJnRoaXMud2Fz'@; put 'Q2xpY2thYmxlSGVhZGVyQ2xpY2tlZCh0LHIuY29sKSYmdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpJiYoby5jb2x1bW49ITApfSl9fWZ1bmN0aW9uIGwxZShuKXtyZXR1cm4gbnVsbD09bnx8aXNOYU4obil9Y29uc3QgYkh0PWNsYXNzIHlIdHtpbml0RW5k'@; put 'cG9pbnRzKCl7dGhpcy5lbmRwb2ludHM9dGhpcy5wYXJzZVNldHRpbmdzKCksdGhpcy5yZWZyZXNoQWxsRW5kcG9pbnRzKCl9Z2V0RW5kcG9pbnQoZSl7cmV0dXJuImZ1bmN0aW9uIj09PXRoaXMuc2V0dGluZ3NUeXBlP3RoaXMuZmlsbE1pc3NpbmdFbmRwb2ludERhdGEodGhpcy5zZXR0aW5n'@; put 'cylbZV06dGhpcy5lbmRwb2ludHNbZV19Z2V0QWxsRW5kcG9pbnRzKCl7cmV0dXJuImZ1bmN0aW9uIj09PXRoaXMuc2V0dGluZ3NUeXBlP3RoaXMuZmlsbE1pc3NpbmdFbmRwb2ludERhdGEodGhpcy5zZXR0aW5ncyk6dGhpcy5lbmRwb2ludHN9ZmlsbE1pc3NpbmdFbmRwb2ludERhdGEoZSl7'@; put 'cmV0dXJuIHRoaXMucGFyc2VTZXR0aW5ncyhlLmNhbGwodGhpcykpfXBhcnNlU2V0dGluZ3MoZSl7Y29uc3QgdD1bXTtsZXQgcj1lO2lmKHJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLnNldHRpbmdzKXJldHVybiByfHwocj10aGlzLnNldHRpbmdzKSxYbihyLGk9Pntjb25zdCBvPXt9O3Ro'@; put 'aXMuYXNzaWduU2V0dGluZyhpLG8sInJhbmdlcyIsW1swLHRoaXMuaG90LmNvdW50Um93cygpLTFdXSksdGhpcy5hc3NpZ25TZXR0aW5nKGksbywicmV2ZXJzZWRSb3dDb29yZHMiLCExKSx0aGlzLmFzc2lnblNldHRpbmcoaSxvLCJkZXN0aW5hdGlvblJvdyIsbmV3IEVycm9yKCJcbiAgICAg'@; put 'ICAgWW91IG11c3QgcHJvdmlkZSBhIGRlc3RpbmF0aW9uIHJvdyBmb3IgdGhlIENvbHVtbiBTdW1tYXJ5IHBsdWdpbiBpbiBvcmRlciB0byB3b3JrIHByb3Blcmx5IVxuICAgICAgIikpLHRoaXMuYXNzaWduU2V0dGluZyhpLG8sImRlc3RpbmF0aW9uQ29sdW1uIixuZXcgRXJyb3IoIlxuICAg'@; put 'ICAgICBZb3UgbXVzdCBwcm92aWRlIGEgZGVzdGluYXRpb24gY29sdW1uIGZvciB0aGUgQ29sdW1uIFN1bW1hcnkgcGx1Z2luIGluIG9yZGVyIHRvIHdvcmsgcHJvcGVybHkhXG4gICAgICAiKSksdGhpcy5hc3NpZ25TZXR0aW5nKGksbywic291cmNlQ29sdW1uIixpLmRlc3RpbmF0aW9uQ29s'@; put 'dW1uKSx0aGlzLmFzc2lnblNldHRpbmcoaSxvLCJ0eXBlIiwic3VtIiksdGhpcy5hc3NpZ25TZXR0aW5nKGksbywiZm9yY2VOdW1lcmljIiwhMSksdGhpcy5hc3NpZ25TZXR0aW5nKGksbywic3VwcHJlc3NEYXRhVHlwZUVycm9ycyIsITApLHRoaXMuYXNzaWduU2V0dGluZyhpLG8sImN1c3Rv'@; put 'bUZ1bmN0aW9uIixudWxsKSx0aGlzLmFzc2lnblNldHRpbmcoaSxvLCJyZWFkT25seSIsITApLHRoaXMuYXNzaWduU2V0dGluZyhpLG8sInJvdW5kRmxvYXQiLCExKSx0LnB1c2gobyl9KSx0O3RoaXMuc2V0dGluZ3NUeXBlPSJmdW5jdGlvbiJ9YXNzaWduU2V0dGluZyhlLHQscixpKXtpZigi'@; put 'cmFuZ2VzIiE9PXJ8fHZvaWQgMCE9PWVbcl0pe2lmKCJyYW5nZXMiIT09cnx8MCE9PWVbcl0ubGVuZ3RoKWlmKHZvaWQgMD09PWVbcl0pe2lmKGkgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBpO3Rbcl09aX1lbHNlIHRbcl09ImRlc3RpbmF0aW9uUm93Ij09PXImJnQucmV2ZXJzZWRSb3dDb29y'@; put 'ZHM/dGhpcy5ob3QuY291bnRSb3dzKCktZVtyXS0xOmVbcl19ZWxzZSB0W3JdPWl9cmVzZXRTZXR1cEJlZm9yZVN0cnVjdHVyZUFsdGVyYXRpb24oZSx0LHIpe2lmKCJmdW5jdGlvbiIhPT10aGlzLnNldHRpbmdzVHlwZSlyZXR1cm47Y29uc3QgaT1lLmluZGV4T2YoInJvdyIpPi0xPyJyb3ci'@; put 'OiJjb2wiLG89dGhpcy5nZXRBbGxFbmRwb2ludHMoKTtYbihvLGE9Pnsicm93Ij09PWkmJmEuZGVzdGluYXRpb25Sb3c+PXQmJigiaW5zZXJ0X3JvdyI9PT1lP2EuYWx0ZXJSb3dPZmZzZXQ9cjoicmVtb3ZlX3JvdyI9PT1lJiYoYS5hbHRlclJvd09mZnNldD0tMSpyKSksImNvbCI9PT1pJiZh'@; put 'LmRlc3RpbmF0aW9uQ29sdW1uPj10JiYoImluc2VydF9jb2wiPT09ZT9hLmFsdGVyQ29sdW1uT2Zmc2V0PXI6InJlbW92ZV9jb2wiPT09ZSYmKGEuYWx0ZXJDb2x1bW5PZmZzZXQ9LTEqcikpfSksdGhpcy5yZXNldEFsbEVuZHBvaW50cyhvLCExKX1yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVB'@; put 'bHRlcmF0aW9uKGUsdCxyLGksbyxhPSEwKXtpZigiYXV0byI9PT1vKXJldHVybjtpZigiZnVuY3Rpb24iPT09dGhpcy5zZXR0aW5nc1R5cGUpe2NvbnN0IFo9KCk9Pih0aGlzLmhvdC5yZW1vdmVIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixaKSx0aGlzLnJlZnJlc2hBbGxFbmRwb2ludHMoKSk7'@; put 'cmV0dXJuIHZvaWQgdGhpcy5ob3QuYWRkSG9va09uY2UoImJlZm9yZVZpZXdSZW5kZXIiLFopfWNvbnN0IGw9ZS5pbmRleE9mKCJyb3ciKT4tMT8icm93IjoiY29sIix1PWUuaW5kZXhPZigicmVtb3ZlIik+LTE/LTE6MSxnPXRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksRT0wPT09ZS5pbmRleE9m'@; put 'KCJtb3ZlX3JvdyIpLE89dDtYbihnLFo9Pnsicm93Ij09PWwmJlouZGVzdGluYXRpb25Sb3c+PU8mJihaLmFsdGVyUm93T2Zmc2V0PXUqciksImNvbCI9PT1sJiZaLmRlc3RpbmF0aW9uQ29sdW1uPj1PJiYoWi5hbHRlckNvbHVtbk9mZnNldD11KnIpfSksdGhpcy5yZXNldEFsbEVuZHBvaW50'@; put 'cyhnLCFFKSxYbihnLEU/Wj0+e3RoaXMuZXh0ZW5kRW5kcG9pbnRSYW5nZXMoWixPLGk/LlswXT8/MCxpPy5sZW5ndGg/PzApLHRoaXMucmVjcmVhdGVQaHlzaWNhbFJhbmdlcyhaKSx0aGlzLmNsZWFyT2Zmc2V0SW5mb3JtYXRpb24oWil9Olo9Pnt0aGlzLnNoaWZ0RW5kcG9pbnRDb29yZGlu'@; put 'YXRlcyhaLE8pfSksYSYmdGhpcy5yZWZyZXNoQWxsRW5kcG9pbnRzKCl9Y2xlYXJPZmZzZXRJbmZvcm1hdGlvbihlKXtlLmFsdGVyUm93T2Zmc2V0PXZvaWQgMCxlLmFsdGVyQ29sdW1uT2Zmc2V0PXZvaWQgMH1leHRlbmRFbmRwb2ludFJhbmdlcyhlLHQscixpKXtYbihlLnJhbmdlcyxvPT57'@; put 'b1sxXSYmKHQ+PW9bMF0mJnQ8PW9bMV0/cj5vWzFdP29bMV0rPWk6cjxvWzBdJiYob1swXS09aSk6cj49b1swXSYmcjw9b1sxXSYmKG9bMV0tPWksdDw9b1swXSYmKG9bMF0rPTEsb1sxXSs9MSkpKX0pfXJlY3JlYXRlUGh5c2ljYWxSYW5nZXMoZSl7Y29uc3Qgcj1bXSxpPVtdO1huKGUucmFu'@; put 'Z2VzLG89Pntjb25zdCBhPVtdO2lmKG9bMV0pZm9yKGxldCBsPW9bMF07bDw9b1sxXTtsKyspYS5wdXNoKHRoaXMuaG90LnRvUGh5c2ljYWxSb3cobCkpO2Vsc2UgYS5wdXNoKHRoaXMuaG90LnRvUGh5c2ljYWxSb3cob1swXSkpO2kucHVzaChhKX0pLFhuKGksbz0+e2xldCBhPVtdO1huKG8s'@; put 'KGwsdSk9PnswPT09dT9hLnB1c2gobCk6b1t1XSE9PW9bdS0xXSsxJiYoYS5wdXNoKG9bdS0xXSksci5wdXNoKGEpLGE9W10sYS5wdXNoKGwpKSx1PT09by5sZW5ndGgtMSYmKGEucHVzaChsKSxyLnB1c2goYSkpfSl9KSxlLnJhbmdlcz1yfXNoaWZ0RW5kcG9pbnRDb29yZGluYXRlcyhlLHQp'@; put 'e2UuYWx0ZXJSb3dPZmZzZXQmJjAhPT1lLmFsdGVyUm93T2Zmc2V0PyhlLmRlc3RpbmF0aW9uUm93Kz1lLmFsdGVyUm93T2Zmc2V0fHwwLFhuKGUucmFuZ2VzLHI9PntYbihyLChpLG8pPT57aT49dCYmKHJbb10rPWUuYWx0ZXJSb3dPZmZzZXR8fDApfSl9KSk6ZS5hbHRlckNvbHVtbk9mZnNl'@; put 'dCYmMCE9PWUuYWx0ZXJDb2x1bW5PZmZzZXQmJihlLmRlc3RpbmF0aW9uQ29sdW1uKz1lLmFsdGVyQ29sdW1uT2Zmc2V0fHwwLGUuc291cmNlQ29sdW1uKz1lLmFsdGVyQ29sdW1uT2Zmc2V0fHwwKX1yZXNldEFsbEVuZHBvaW50cyhlPXRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksdD0hMCl7ZS5z'@; put 'b21lKGk9Pntjb25zdCBhPWkuYWx0ZXJDb2x1bW5PZmZzZXR8fDA7cmV0dXJuIGkuZGVzdGluYXRpb25Sb3crKGkuYWx0ZXJSb3dPZmZzZXR8fDApPj10aGlzLmhvdC5jb3VudFJvd3MoKXx8aS5kZXN0aW5hdGlvbkNvbHVtbithPj10aGlzLmhvdC5jb3VudENvbHMoKX0pfHwodGhpcy5jZWxs'@; put 'c1RvU2V0Q2FjaGU9W10sWG4oZSxpPT57dGhpcy5yZXNldEVuZHBvaW50VmFsdWUoaSx0KX0pLHRoaXMuY2VsbHNUb1NldENhY2hlLmxlbmd0aCYmdGhpcy5ob3Quc2V0RGF0YUF0Q2VsbCh0aGlzLmNlbGxzVG9TZXRDYWNoZSxudWxsLHZvaWQgMCwiQ29sdW1uU3VtbWFyeS5yZXNldCIpLHRo'@; put 'aXMuY2VsbHNUb1NldENhY2hlPVtdKX1yZWZyZXNoQWxsRW5kcG9pbnRzKCl7dGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10sWG4odGhpcy5nZXRBbGxFbmRwb2ludHMoKSxlPT57dGhpcy5jdXJyZW50RW5kcG9pbnQ9ZSx0aGlzLnBsdWdpbi5jYWxjdWxhdGUoZSksdGhpcy5zZXRFbmRwb2ludFZh'@; put 'bHVlKGUsImluaXQiKX0pLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGwsdGhpcy5jZWxsc1RvU2V0Q2FjaGUubGVuZ3RoJiZ0aGlzLmhvdC5zZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLG51bGwsdm9pZCAwLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1RvU2V0'@; put 'Q2FjaGU9W119cmVmcmVzaENoYW5nZWRFbmRwb2ludHMoZSl7Y29uc3QgdD1bXTt0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSxYbihlLChyLGksbyk9PntgJHtyWzJdfHwiIn1gIT1gJHtyWzNdfWAmJlhuKHRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksKGwsdSk9Pnt0aGlzLmhvdC5wcm9wVG9Db2wo'@; put 'b1tpXVsxXSk9PT1sLnNvdXJjZUNvbHVtbiYmLTE9PT10LmluZGV4T2YodSkmJnQucHVzaCh1KX0pfSksWG4odCxyPT57dGhpcy5yZWZyZXNoRW5kcG9pbnQodGhpcy5nZXRFbmRwb2ludChyKSl9KSx0aGlzLmNlbGxzVG9TZXRDYWNoZS5sZW5ndGgmJnRoaXMuaG90LnNldERhdGFBdENlbGwo'@; put 'dGhpcy5jZWxsc1RvU2V0Q2FjaGUsbnVsbCx2b2lkIDAsIkNvbHVtblN1bW1hcnkucmVzZXQiKSx0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXX1yZWZyZXNoRW5kcG9pbnRzQnlTb3VyY2VDb2x1bW5zKGUpe2NvbnN0IHQ9ZSBpbnN0YW5jZW9mIFNldD9lOm5ldyBTZXQoZSkscj10aGlzLmdldEFs'@; put 'bEVuZHBvaW50cygpLmZpbHRlcihpPT50LmhhcyhpLnNvdXJjZUNvbHVtbikpOzAhPT1yLmxlbmd0aCYmKHRoaXMuY2VsbHNUb1NldENhY2hlPVtdLFhuKHIsaT0+e3RoaXMucmVmcmVzaEVuZHBvaW50KGkpfSksdGhpcy5jZWxsc1RvU2V0Q2FjaGUubGVuZ3RoJiZ0aGlzLmhvdC5zZXREYXRh'@; put 'QXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLG51bGwsdm9pZCAwLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10pfXJlZnJlc2hDZWxsTWV0YXMoKXt0aGlzLmVuZHBvaW50cy5mb3JFYWNoKGU9Pntjb25zdCB0PXRoaXMuaG90LnRvVmlzdWFsUm93KGUu'@; put 'ZGVzdGluYXRpb25Sb3cpO2lmKG51bGwhPT10KXtjb25zdCByPXRoaXMuaG90LmdldENlbGxNZXRhKHQsZS5kZXN0aW5hdGlvbkNvbHVtbik7ci5yZWFkT25seT1lLnJlYWRPbmx5LHIuY2xhc3NOYW1lPSJjb2x1bW5TdW1tYXJ5UmVzdWx0In19KX1yZWZyZXNoRW5kcG9pbnQoZSl7dGhpcy5j'@; put 'dXJyZW50RW5kcG9pbnQ9ZSx0aGlzLnBsdWdpbi5jYWxjdWxhdGUoZSksdGhpcy5zZXRFbmRwb2ludFZhbHVlKGUsdm9pZCAwKSx0aGlzLmN1cnJlbnRFbmRwb2ludD1udWxsfXJlc2V0RW5kcG9pbnRWYWx1ZShlLHQ9ITApe2NvbnN0IGk9ZS5hbHRlckNvbHVtbk9mZnNldHx8MDt0aGlzLmNl'@; put 'bGxzVG9TZXRDYWNoZS5wdXNoKFt0aGlzLmhvdC50b1Zpc3VhbFJvdyhlLmRlc3RpbmF0aW9uUm93Kyh0JiZlLmFsdGVyUm93T2Zmc2V0fHwwKSksdGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oZS5kZXN0aW5hdGlvbkNvbHVtbisodD9pOjApKSwiIl0pfXNldEVuZHBvaW50VmFsdWUoZSx0LHI9'@; put 'ITEpe2NvbnN0IGk9dGhpcy5ob3QudG9WaXN1YWxSb3coZS5kZXN0aW5hdGlvblJvdyk7aWYoZS5kZXN0aW5hdGlvblJvdz49dGhpcy5ob3QuY291bnRSb3dzKCl8fGUuZGVzdGluYXRpb25Db2x1bW4+PXRoaXMuaG90LmNvdW50Q29scygpKXJldHVybiB2b2lkIHRoaXMudGhyb3dPdXRPZkJv'@; put 'dW5kc1dhcm5pbmcoKTtjb25zdCBvPXRoaXMuaG90LnRvVmlzdWFsUm93KGUuZGVzdGluYXRpb25Sb3cpO2lmKG51bGwhPT1vKXtjb25zdCBhPXRoaXMuaG90LmdldENlbGxNZXRhKG8sZS5kZXN0aW5hdGlvbkNvbHVtbik7KCJpbml0Ij09PXR8fGEucmVhZE9ubHkhPT1lLnJlYWRPbmx5KSYm'@; put 'KGEucmVhZE9ubHk9ZS5yZWFkT25seSxhLmNsYXNzTmFtZT0iY29sdW1uU3VtbWFyeVJlc3VsdCIpfWUucmVzdWx0PWZ1bmN0aW9uIF9IdChuLGUpe2lmKCJudW1iZXIiIT10eXBlb2YgbilyZXR1cm4gbjtzd2l0Y2godHlwZW9mIGUpe2Nhc2UibnVtYmVyIjpyZXR1cm4gbi50b0ZpeGVkKE1h'@; put 'dGgubWluKE1hdGgubWF4KDAsZSksMTAwKSk7Y2FzZSJib29sZWFuIjpyZXR1cm4gZT9NYXRoLnJvdW5kKG4pLnRvU3RyaW5nKCk6bjtjYXNlInN0cmluZyI6aWYoImF1dG8iPT09ZSl7Y29uc3Qgcj1NYXRoLnJvdW5kKG4pLnRvU3RyaW5nKCkubGVuZ3RoO3JldHVybiBuLnRvRml4ZWQoOC1y'@; put 'KX1yZXR1cm4gbjtkZWZhdWx0OnJldHVybiBufX0oZS5yZXN1bHQsZS5yb3VuZEZsb2F0KSxyP3RoaXMuaG90LnNldERhdGFBdENlbGwoaSxlLmRlc3RpbmF0aW9uQ29sdW1uLGUucmVzdWx0LCJDb2x1bW5TdW1tYXJ5LnNldCIpOnRoaXMuY2VsbHNUb1NldENhY2hlLnB1c2goW2ksZS5kZXN0'@; put 'aW5hdGlvbkNvbHVtbixlLnJlc3VsdF0pLGUuYWx0ZXJSb3dPZmZzZXQ9dm9pZCAwLGUuYWx0ZXJDb2x1bW5PZmZzZXQ9dm9pZCAwfXRocm93T3V0T2ZCb3VuZHNXYXJuaW5nKCl7SGEoIk9uZSBvZiB0aGUgQ29sdW1uIFN1bW1hcnkgcGx1Z2lucycgZGVzdGluYXRpb24gcG9pbnRzIHlvdSBw'@; put 'cm92aWRlZCBpcyBiZXlvbmQgdGhlIHRhYmxlIGJvdW5kYXJpZXMhIil9Y29uc3RydWN0b3IoZSx0KXt0aGlzLmVuZHBvaW50cz1bXSx0aGlzLnNldHRpbmdzVHlwZT0iYXJyYXkiLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGwsdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10sdGhpcy5wbHVnaW49'@; put 'ZSx0aGlzLmhvdD10aGlzLnBsdWdpbi5ob3QsdGhpcy5zZXR0aW5ncz10fX07ZnVuY3Rpb24gdk5lKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4p'@; put 'fWZ1bmN0aW9uIHBfKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIENIdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sdk5lKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGdfKG4sZSx0KXsoZnVuY3Rpb24gd0h0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJv'@; put 'cigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiB2NihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIFNIdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYo'@; put 'IWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sdk5lKG4sZSwic2V0IiksdCksdH1jb25zdCBjMWU9ImNvbHVtblN1bW1hcnkiO3ZhciBXTz1uZXcgV2Vha01hcCx1MWU9bmV3IFdl'@; put 'YWtNYXAsZDFlPW5ldyBXZWFrTWFwLGgxZT1uZXcgV2Vha01hcCxmMWU9bmV3IFdlYWtNYXAscDFlPW5ldyBXZWFrTWFwLGcxZT1uZXcgV2Vha01hcCxtMWU9bmV3IFdlYWtNYXA7Y2xhc3MgTUh0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIGMxZX1zdGF0aWMg'@; put 'Z2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAyMjB9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2MxZV19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5zZXR0aW5ncz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW2MxZV0sdGhpcy5lbmRwb2lu'@; put 'dHM9bmV3IGJIdCh0aGlzLHRoaXMuc2V0dGluZ3MpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixwXyh0aGlzLHUxZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLHBfKHRoaXMsaDFlKSksdGhpcy5hZGRIb29rKCJhZnRlclVwZGF0ZVNldHRpbmdzIixwXyh0aGlzLGQxZSkpLHRoaXMu'@; put 'YWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIscF8odGhpcyxmMWUpKSx0aGlzLmFkZEhvb2soImFmdGVyVXBkYXRlRGF0YSIscF8odGhpcyxwMWUpKSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZVJvdyIsKGUsdCk9Pnt0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0'@; put 'ZXJhdGlvbigiaW5zZXJ0X3JvdyIsZSx0KX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ3JlYXRlQ29sIiwoZSx0KT0+e3RoaXMuZW5kcG9pbnRzLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfY29sIixlLHQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVS'@; put 'b3ciLChlLHQpPT57dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEJlZm9yZVN0cnVjdHVyZUFsdGVyYXRpb24oInJlbW92ZV9yb3ciLGUsdCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZUNvbCIsKGUsdCk9Pnt0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0'@; put 'ZXJhdGlvbigicmVtb3ZlX2NvbCIsZSx0KX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLChlLHQscik9Pnt0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfcm93IixlLHQsbnVsbCxyKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJD'@; put 'cmVhdGVDb2wiLChlLHQscik9Pnt0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfY29sIixlLHQsbnVsbCxyKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLChlLHQscixpKT0+dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEFm'@; put 'dGVyU3RydWN0dXJlQWx0ZXJhdGlvbigicmVtb3ZlX3JvdyIsZSx0LHIsaSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVDb2wiLChlLHQscixpKT0+dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbigicmVtb3ZlX2NvbCIsZSx0LHIsaSkpLHRoaXMu'@; put 'YWRkSG9vaygiYWZ0ZXJSb3dNb3ZlIixwXyh0aGlzLG0xZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIscF8odGhpcyxnMWUpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuZW5kcG9pbnRzPW51bGwsdGhpcy5zZXR0aW5ncz1u'@; put 'dWxsLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGwsc3VwZXIuZGlzYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5lbmRwb2ludHMuaW5pdEVuZHBvaW50cygpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWNhbGN1'@; put 'bGF0ZShlKXtzd2l0Y2goZS50eXBlLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic3VtIjplLnJlc3VsdD10aGlzLmNhbGN1bGF0ZVN1bShlKTticmVhaztjYXNlIm1pbiI6Y2FzZSJtYXgiOmUucmVzdWx0PXRoaXMuY2FsY3VsYXRlTWluTWF4KGUsZS50eXBlKTticmVhaztjYXNlImNvdW50IjplLnJl'@; put 'c3VsdD10aGlzLmNvdW50RW50cmllcyhlKTticmVhaztjYXNlImF2ZXJhZ2UiOmUucmVzdWx0PXRoaXMuY2FsY3VsYXRlQXZlcmFnZShlKTticmVhaztjYXNlImN1c3RvbSI6ZS5yZXN1bHQ9ZS5jdXN0b21GdW5jdGlvbi5jYWxsKHRoaXMsZSl9fWNhbGN1bGF0ZVN1bShlKXtsZXQgdD0wO2Zv'@; put 'cihjb25zdCByIG9mIGUucmFuZ2VzKXQrPXRoaXMuZ2V0UGFydGlhbFN1bShyLGUuc291cmNlQ29sdW1uKTtyZXR1cm4gdH1nZXRQYXJ0aWFsU3VtKGUsdCl7bGV0IHI9MCxpPWVbMV18fGVbMF0sbz1udWxsLGE9MDtkb3tjb25zdCBsPXRoaXMuZ2V0Q2VsbFZhbHVlKGksdCk7aWYobz1sMWUo'@; put 'bCk/bnVsbDpOdW1iZXIobCksbnVsbCE9PW8pe2NvbnN0IHU9KGAke299YC5zcGxpdCgiLiIpWzFdfHxbXSkubGVuZ3RofHwxO3U+YSYmKGE9dSl9cis9bz8/MCxpLT0xfXdoaWxlKGk+PWVbMF0pO3JldHVybiBNYXRoLnJvdW5kKHIqMTAqKmEpLzEwKiphfWNhbGN1bGF0ZU1pbk1heChlLHQp'@; put 'e2xldCByPW51bGw7Zm9yKGNvbnN0IGkgb2YgZS5yYW5nZXMpe2NvbnN0IG89dGhpcy5nZXRQYXJ0aWFsTWluTWF4KGksZS5zb3VyY2VDb2x1bW4sdCk7aWYobnVsbD09PXImJm51bGwhPT1vJiYocj1vKSxudWxsIT09bylzd2l0Y2godCl7Y2FzZSJtaW4iOnI9TWF0aC5taW4ocixvKTticmVh'@; put 'aztjYXNlIm1heCI6cj1NYXRoLm1heChyLG8pfX1yZXR1cm4gbnVsbD09PXI/Ik5vdCBlbm91Z2ggZGF0YSI6cn1nZXRQYXJ0aWFsTWluTWF4KGUsdCxyKXtsZXQgYSxpPW51bGwsbz1lWzFdfHxlWzBdO2Rve2NvbnN0IGw9dGhpcy5nZXRDZWxsVmFsdWUobyx0KTtpZihhPWwxZShsKT9udWxs'@; put 'Ok51bWJlcihsKSxudWxsPT09aSlpPWE7ZWxzZSBpZihudWxsIT09YSlzd2l0Y2gocil7Y2FzZSJtaW4iOmk9TWF0aC5taW4oaSxhKTticmVhaztjYXNlIm1heCI6aT1NYXRoLm1heChpLGEpfW8tPTF9d2hpbGUobz49ZVswXSk7cmV0dXJuIGl9Y291bnRFbXB0eShlLHQpe2xldCByLGk9MCxv'@; put 'PWVbMV18fGVbMF07ZG97cj10aGlzLmdldENlbGxWYWx1ZShvLHQpLHI9bDFlKHIpP251bGw6cixudWxsPT09ciYmKGkrPTEpLG8tPTF9d2hpbGUobz49ZVswXSk7cmV0dXJuIGl9Y291bnRFbnRyaWVzKGUpe2xldCB0PTA7Y29uc3Qgcj1lLnJhbmdlcztmb3IoY29uc3QgaSBvZiByKXQrPXZv'@; put 'aWQgMD09PWlbMV0/MTppWzFdLWlbMF0rMSx0LT10aGlzLmNvdW50RW1wdHkoaSxlLnNvdXJjZUNvbHVtbik7cmV0dXJuIHR9Y2FsY3VsYXRlQXZlcmFnZShlKXtyZXR1cm4gdGhpcy5jYWxjdWxhdGVTdW0oZSkvdGhpcy5jb3VudEVudHJpZXMoZSl9Z2V0Q2VsbFZhbHVlKGUsdCl7Y29uc3Qg'@; put 'cj10aGlzLmhvdC50b1Zpc3VhbFJvdyhlKTtsZXQgaT1udWxsIT09cj90aGlzLmhvdC5nZXREYXRhQXRDZWxsKHIsdCk6dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbChlLHQpLG89IiI7cmV0dXJuIG51bGwhPT1yJiYobz10aGlzLmhvdC5nZXRDZWxsTWV0YShyLHQpLmNsYXNzTmFtZXx8'@; put 'IiIpLG8uaW5kZXhPZigiY29sdW1uU3VtbWFyeVJlc3VsdCIpPi0xP251bGw6KHRoaXMuZW5kcG9pbnRzLmN1cnJlbnRFbmRwb2ludC5mb3JjZU51bWVyaWMmJigic3RyaW5nIj09dHlwZW9mIGkmJihpPWkucmVwbGFjZSgvLC8sIi4iKSksaT1wYXJzZUZsb2F0KGkpKSxpc05hTihOdW1iZXIo'@; put 'aSkpJiYodGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LnN1cHByZXNzRGF0YVR5cGVFcnJvcnN8fEpyKHljYENvbHVtblN1bW1hcnkgcGx1Z2luOiBjZWxsIGF0ICgke2V9LCAke3R9KSBpcyBub3QgaW4gYVx4MjAKICAgICAgICAgIG51bWVyaWMgZm9ybWF0LiBDYW5ub3QgZG8gdGhl'@; put 'IGNhbGN1bGF0aW9uLmApKSxpKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxnXyh0aGlzLFdPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxnXyh0aGlzLHUxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZ18odGhpcyxkMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQg'@; put 'MH0pLGdfKHRoaXMsaDFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxnXyh0aGlzLGYxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZ18odGhpcyxwMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGdfKHRoaXMsZzFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxn'@; put 'Xyh0aGlzLG0xZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5lbmRwb2ludHM9bnVsbCx2Nih0aGlzLFdPLCExKSx2Nih0aGlzLHUxZSwoKT0+e3RoaXMuZW5kcG9pbnRzLmluaXRFbmRwb2ludHMoKX0pLHY2KHRoaXMsZDFlLHQ9Pnt2b2lkIDAhPT10LmNvbHVtbnMmJnRoaXMu'@; put 'ZW5kcG9pbnRzLnJlZnJlc2hDZWxsTWV0YXMoKX0pLHY2KHRoaXMsaDFlLCh0LHIpPT57dCYmIkNvbHVtblN1bW1hcnkucmVzZXQiIT09ciYmIkNvbHVtblN1bW1hcnkuc2V0IiE9PXImJiJsb2FkRGF0YSIhPT1yJiZ0aGlzLmVuZHBvaW50cy5yZWZyZXNoQ2hhbmdlZEVuZHBvaW50cyh0KX0p'@; put 'LHY2KHRoaXMsZjFlLCh0LHIpPT57cnx8dGhpcy5lbmRwb2ludHMucmVmcmVzaEFsbEVuZHBvaW50cygpfSksdjYodGhpcyxwMWUsKHQscik9PntyfHx0aGlzLmVuZHBvaW50cy5yZWZyZXNoQWxsRW5kcG9pbnRzKCl9KSx2Nih0aGlzLGcxZSx0PT57aWYocF8odGhpcyxXTyl8fCF0aGlzLmVu'@; put 'ZHBvaW50c3x8IXQ/Lmxlbmd0aClyZXR1cm47Y29uc3Qgcj10aGlzLmhvdC5nZXRQbHVnaW4oImZvcm11bGFzIik7aWYoIXI/LmVuYWJsZWQpcmV0dXJuO2NvbnN0IGk9ci5zaGVldElkLG89bmV3IFNldDtpZih0LmZvckVhY2gobD0+e2w/LmFkZHJlc3M/LnNoZWV0PT09aSYmby5hZGQobC5h'@; put 'ZGRyZXNzLmNvbCl9KSwwPT09by5zaXplKXJldHVybjtjb25zdCBhPW5ldyBTZXQ7aWYodGhpcy5lbmRwb2ludHMuZ2V0QWxsRW5kcG9pbnRzKCkuZm9yRWFjaChsPT57Y29uc3QgdT1yLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChsLnNvdXJjZUNvbHVtbj8/'@; put 'MCk7by5oYXModSkmJmEuYWRkKGwuc291cmNlQ29sdW1uPz8wKX0pLDAhPT1hLnNpemUpe3Y2KHRoaXMsV08sITApO3RyeXt0aGlzLmVuZHBvaW50cy5yZWZyZXNoRW5kcG9pbnRzQnlTb3VyY2VDb2x1bW5zKGEpfWZpbmFsbHl7djYodGhpcyxXTywhMSl9fX0pLHY2KHRoaXMsbTFlLCh0LHIp'@; put 'PT57dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEJlZm9yZVN0cnVjdHVyZUFsdGVyYXRpb24oIm1vdmVfcm93Iix0WzBdLHQubGVuZ3RoKSx0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJtb3ZlX3JvdyIscix0Lmxlbmd0aCx0LHRoaXMucGx1Z2lu'@; put 'TmFtZSl9KX19ZnVuY3Rpb24gX05lKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB5TmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBu'@; put 'ZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gbV8obixlKXtyZXR1cm4gZnVuY3Rpb24gVEh0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix5TmUo'@; put 'bixlLCJnZXQiKSl9ZnVuY3Rpb24gdjFlKG4sZSx0KXtfTmUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIGpUKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24geEh0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJh'@; put 'dHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix5TmUobixlLCJzZXQiKSx0KSx0fXZhciBZTz1uZXcgV2Vha01hcCxHdz1uZXcgV2Vha01hcCxaTz1uZXcgV2Vha01hcCxiTmU9bmV3IFdlYWtTZXQ7Y2xhc3Mgd05le3NldE9ic2VydmVkRWxl'@; put 'bWVudChlKXtqVCh0aGlzLEd3LGUpfXVub2JzZXJ2ZSgpe21fKHRoaXMsR3cpJiZtXyh0aGlzLFpPKS51bm9ic2VydmUobV8odGhpcyxHdykpfW9ic2VydmUoKXtqVCh0aGlzLFlPLCEwKSxtXyh0aGlzLEd3KSYmbV8odGhpcyxaTykub2JzZXJ2ZShtXyh0aGlzLEd3KSl9ZGVzdHJveSgpe21f'@; put 'KHRoaXMsWk8pLmRpc2Nvbm5lY3QoKX1jb25zdHJ1Y3RvcigpeyhmdW5jdGlvbiBrSHQobixlKXtfTmUobixlKSxlLmFkZChuKX0pKHRoaXMsYk5lKSx2MWUodGhpcyxZTyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdjFlKHRoaXMsR3cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0p'@; put 'LHYxZSh0aGlzLFpPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxqVCh0aGlzLFlPLCEwKSxqVCh0aGlzLEd3LG51bGwpLGpUKHRoaXMsWk8sbmV3IFJlc2l6ZU9ic2VydmVyKGU9PmZ1bmN0aW9uIEFIdChuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVt'@; put 'cHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH0odGhpcyxiTmUsUkh0KS5jYWxsKHRoaXMsZSkpKX19ZnVuY3Rpb24gUkh0KG4peyFtXyh0aGlzLFlPKSYmQXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGg/bi5mb3JFYWNoKCh7Ym9yZGVyQm94U2l6'@; put 'ZTplfSk9Pntjb25zdHtpbmxpbmVTaXplOnQsYmxvY2tTaXplOnJ9PWVbMF07dGhpcy5ydW5Mb2NhbEhvb2tzKCJyZXNpemUiLHQscil9KTpqVCh0aGlzLFlPLCExKX1mdW5jdGlvbiBDTmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0'@; put 'KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gYmMobixlKXtyZXR1cm4gZnVuY3Rpb24gREh0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixDTmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gdl8obixlLHQp'@; put 'eyhmdW5jdGlvbiBJSHQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uICQyKG4sZSx0KXtyZXR1cm4gZnVu'@; put 'Y3Rpb24gTEh0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixDTmUobixlLCJzZXQiKSx0KSx0fVlsKHdO'@; put 'ZSxfaCk7dmFyIFVUPW5ldyBXZWFrTWFwLF8xZT1uZXcgV2Vha01hcCx6Wj1uZXcgV2Vha01hcCxBND1uZXcgV2Vha01hcCxGNz1uZXcgV2Vha01hcCxmbT1uZXcgV2Vha01hcCxHTz1uZXcgV2Vha01hcCwkdz1uZXcgV2Vha01hcDtjbGFzcyBxd3tzdGF0aWMgZ2V0IENMQVNTX0VESVRPUl9D'@; put 'T05UQUlORVIoKXtyZXR1cm4iaHRDb21tZW50c0NvbnRhaW5lciJ9c3RhdGljIGdldCBDTEFTU19FRElUT1IoKXtyZXR1cm4iaHRDb21tZW50cyJ9c3RhdGljIGdldCBDTEFTU19JTlBVVCgpe3JldHVybiJodENvbW1lbnRUZXh0QXJlYSJ9c3RhdGljIGdldCBDTEFTU19DRUxMKCl7cmV0dXJu'@; put 'Imh0Q29tbWVudENlbGwifXNldFBvc2l0aW9uKGUsdCl7YmModGhpcyxmbSkmJihiYyh0aGlzLGZtKS5sZWZ0PWAke2V9cHhgLGJjKHRoaXMsZm0pLnRvcD1gJHt0fXB4YCl9c2V0U2l6ZShlLHQpe2lmKGUmJnQpe2NvbnN0IHI9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtyLnN0eWxlLndpZHRo'@; put 'PWAke2V9cHhgLHIuc3R5bGUuaGVpZ2h0PWAke3R9cHhgfX1nZXRTaXplKCl7cmV0dXJue3dpZHRoOlpkKHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkpLGhlaWdodDpIaCh0aGlzLmdldElucHV0RWxlbWVudCgpKX19b2JzZXJ2ZVNpemUoKXtiYyh0aGlzLCR3KS5vYnNlcnZlKCl9cmVzZXRTaXpl'@; put 'KCl7Y29uc3QgZT10aGlzLmdldElucHV0RWxlbWVudCgpO2Uuc3R5bGUud2lkdGg9IiIsZS5zdHlsZS5oZWlnaHQ9IiJ9c2V0UmVhZE9ubHlTdGF0ZShlKXt0aGlzLmdldElucHV0RWxlbWVudCgpLnJlYWRPbmx5PWV9c2hvdygpe2JjKHRoaXMsZm0pJiYoYmModGhpcyxmbSkuZGlzcGxheT0i'@; put 'YmxvY2siKSwkMih0aGlzLEdPLCExKX1oaWRlKCl7YmModGhpcywkdykudW5vYnNlcnZlKCksYmModGhpcyxHTyl8fGJjKHRoaXMsZm0pJiYoYmModGhpcyxmbSkuZGlzcGxheT0ibm9uZSIpLCQyKHRoaXMsR08sITApfWlzVmlzaWJsZSgpe3JldHVybiJibG9jayI9PT1iYyh0aGlzLGZtKT8u'@; put 'ZGlzcGxheX1zZXRWYWx1ZShlPSIiKXtjb25zdCB0PWV8fCIiO3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkudmFsdWU9dH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudCgpLnZhbHVlfWlzRm9jdXNlZCgpe3JldHVybiBiYyh0aGlzLFVUKS5hY3RpdmVFbGVtZW50PT09dGhp'@; put 'cy5nZXRJbnB1dEVsZW1lbnQoKX1mb2N1cygpe3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkuZm9jdXMoKX1jcmVhdGVFZGl0b3IoKXtjb25zdCBlPWJjKHRoaXMsVVQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQ9YmModGhpcyxVVCkuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gZS5z'@; put 'dHlsZS5kaXNwbGF5PSJub25lIiwkMih0aGlzLEE0LGJjKHRoaXMsVVQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxiYyh0aGlzLEE0KS5zZXRBdHRyaWJ1dGUoImRpciIsYmModGhpcyx6Wik/InJ0bCI6Imx0ciIpLFlyKGJjKHRoaXMsQTQpLHF3LkNMQVNTX0VESVRPUl9DT05UQUlORVIpLGJj'@; put 'KHRoaXMsXzFlKS5hcHBlbmRDaGlsZChiYyh0aGlzLEE0KSksWXIoZSxxdy5DTEFTU19FRElUT1IpLFlyKHQscXcuQ0xBU1NfSU5QVVQpLHQuZGF0YXNldC5ob3RJbnB1dD0idHJ1ZSIsZS5hcHBlbmRDaGlsZCh0KSxiYyh0aGlzLEE0KS5hcHBlbmRDaGlsZChlKSxlfWdldElucHV0RWxlbWVu'@; put 'dCgpe3JldHVybiBiYyh0aGlzLEY3KT8ucXVlcnlTZWxlY3RvcihgLiR7cXcuQ0xBU1NfSU5QVVR9YCk/P251bGx9Z2V0RWRpdG9yRWxlbWVudCgpe3JldHVybiBiYyh0aGlzLEY3KX1kZXN0cm95KCl7Y29uc3QgZT1iYyh0aGlzLEE0KT9iYyh0aGlzLEE0KS5wYXJlbnROb2RlOm51bGw7YmMo'@; put 'dGhpcyxGNyk/LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGJjKHRoaXMsRjcpKSwkMih0aGlzLEY3LG51bGwpLCQyKHRoaXMsZm0sbnVsbCksYmModGhpcywkdykuZGVzdHJveSgpLGUmJmJjKHRoaXMsQTQpJiZlLnJlbW92ZUNoaWxkKGJjKHRoaXMsQTQpKX1jb25zdHJ1Y3RvcihlLHQscil7'@; put 'dl8odGhpcyxVVCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdl8odGhpcyxfMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHZfKHRoaXMselose3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHZfKHRoaXMsQTQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHZfKHRoaXMs'@; put 'Rjcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHZfKHRoaXMsZm0se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHZfKHRoaXMsR08se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHZfKHRoaXMsJHcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLCQyKHRoaXMselosITEpLCQy'@; put 'KHRoaXMsQTQsbnVsbCksJDIodGhpcyxGNyxudWxsKSwkMih0aGlzLGZtLG51bGwpLCQyKHRoaXMsR08sITApLCQyKHRoaXMsJHcsbmV3IHdOZSksJDIodGhpcyxVVCxlKSwkMih0aGlzLF8xZSxyKSwkMih0aGlzLHpaLHQpLCQyKHRoaXMsRjcsdGhpcy5jcmVhdGVFZGl0b3IoKSksJDIodGhp'@; put 'cyxmbSxiYyh0aGlzLEY3KS5zdHlsZSksYmModGhpcywkdykuc2V0T2JzZXJ2ZWRFbGVtZW50KHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkpLGJjKHRoaXMsJHcpLmFkZExvY2FsSG9vaygicmVzaXplIiwoLi4uaSk9Pnt0aGlzLnJ1bkxvY2FsSG9va3MoInJlc2l6ZSIsLi4uaSl9KSx0aGlzLmhp'@; put 'ZGUoKX19WWwocXcsX2gpO2NvbnN0IE9IdD1xdztjbGFzcyBTTmV7aGlkZSgpe3RoaXMud2FzTGFzdEFjdGlvblNob3c9ITEsdGhpcy5oaWRpbmdUaW1lcj1zZXRUaW1lb3V0KCgpPT57ITE9PT10aGlzLndhc0xhc3RBY3Rpb25TaG93JiZ0aGlzLnJ1bkxvY2FsSG9va3MoImhpZGUiKX0sMjUw'@; put 'KX1zaG93KGUpe3RoaXMud2FzTGFzdEFjdGlvblNob3c9ITAsdGhpcy5zaG93RGVib3VuY2VkPy4oZSl9Y2FuY2VsSGlkaW5nKCl7dGhpcy53YXNMYXN0QWN0aW9uU2hvdz0hMCxjbGVhclRpbWVvdXQodGhpcy5oaWRpbmdUaW1lcj8/dm9pZCAwKSx0aGlzLmhpZGluZ1RpbWVyPW51bGx9dXBk'@; put 'YXRlRGVsYXkoZT0yNTApe3RoaXMuc2hvd0RlYm91bmNlZD1CTSh0PT57dGhpcy53YXNMYXN0QWN0aW9uU2hvdyYmdGhpcy5ydW5Mb2NhbEhvb2tzKCJzaG93Iix0LmZyb20ucm93LHQuZnJvbS5jb2wpfSxlKX1kZXN0cm95KCl7dGhpcy5jbGVhckxvY2FsSG9va3MoKX1jb25zdHJ1Y3Rvcihl'@; put 'KXt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSEwLHRoaXMuc2hvd0RlYm91bmNlZD1udWxsLHRoaXMuaGlkaW5nVGltZXI9bnVsbCx0aGlzLnVwZGF0ZURlbGF5KGUpfX1ZbChTTmUsX2gpO2NvbnN0IFBIdD1TTmUsdnM9Ii0tLS0tLS0tLSI7ZnVuY3Rpb24gS3cobixlKXtjb25zdCB0PXt9O3Jl'@; put 'dHVybiBYbihuLHI9PntyLmZvckFsbCgoaSxvKT0+e2k+PTAmJm8+PTAmJih0W2ldfHwodFtpXT1bXSksdFtpXVtvXT1lKGksbykpfSl9KSx0fWZ1bmN0aW9uIF9fKG4sZSx0LHIsaSl7WG4obixvPT57by5mb3JBbGwoKGEsbCk9PnthPj0wJiZsPj0wJiZmdW5jdGlvbiBaSHQobixlLHQscixp'@; put 'LG8pe2NvbnN0IGE9aShuLGUpO2xldCBsPXI7YS5jbGFzc05hbWUmJihsPSJ2ZXJ0aWNhbCI9PT10P2Z1bmN0aW9uIFdIdChuLGUpe3JldHVybi0xIT09bi5pbmRleE9mKGUpP246YCR7bi5yZXBsYWNlKCJodFRvcCIsIiIpLnJlcGxhY2UoImh0TWlkZGxlIiwiIikucmVwbGFjZSgiaHRCb3R0'@; put 'b20iLCIiKS5yZXBsYWNlKCIgICIsIiIpfSAke2V9YH0oYS5jbGFzc05hbWUscik6ZnVuY3Rpb24gWUh0KG4sZSl7cmV0dXJuLTEhPT1uLmluZGV4T2YoZSk/bjpgJHtuLnJlcGxhY2UoImh0TGVmdCIsIiIpLnJlcGxhY2UoImh0Q2VudGVyIiwiIikucmVwbGFjZSgiaHRSaWdodCIsIiIpLnJl'@; put 'cGxhY2UoImh0SnVzdGlmeSIsIiIpLnJlcGxhY2UoIiAgIiwiIil9ICR7ZX1gfShhLmNsYXNzTmFtZSxyKSksbyhuLGUsImNsYXNzTmFtZSIsbCl9KGEsbCxlLHQscixpKX0pfSl9ZnVuY3Rpb24gTU5lKG4pe3JldHVybmA8c3BhbiBjbGFzcz0ic2VsZWN0ZWQiPlx1MjcxMzwvc3Bhbj4ke259'@; put 'YH1mdW5jdGlvbiBXWihuLGUpe2xldCB0PSExO3JldHVybiBBcnJheS5pc0FycmF5KG4pJiZYbihuLHI9PihyLmZvckFsbCgoaSxvKT0+e2lmKGk+PTAmJm8+PTAmJmUoaSxvKSlyZXR1cm4gdD0hMCwhMX0pLHQpKSx0fWZ1bmN0aW9uIFlaKG4sZSl7Y29uc3QgdD17dG9wOjAsbGVmdDowfTtp'@; put 'ZihlIT09bi5vd25lckRvY3VtZW50KXtjb25zdHtmcmFtZUVsZW1lbnQ6cn09ZS5kZWZhdWx0Vmlldyx7dG9wOmksbGVmdDpvfT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3QudG9wPWksdC5sZWZ0PW99cmV0dXJuIHR9ZnVuY3Rpb24gVE5lKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3'@; put 'IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB4TmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBv'@; put 'biBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gaXMobixlKXtyZXR1cm4gZnVuY3Rpb24gJEh0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix4TmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gbmcobixlLHQpe1ROZShuLGUpLGUuc2V0KG4s'@; put 'dCl9ZnVuY3Rpb24gSmQobixlLHQpe3JldHVybiBmdW5jdGlvbiBxSHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVl'@; put 'PXR9fShuLHhOZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gazQobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gelQobixlKXtUTmUobixlKSxl'@; put 'LmFkZChuKX1jb25zdCBaWj0iY29tbWVudHMiLFdUPSJjb21tZW50IiwkTz0idmFsdWUiLEFOZT0ic3R5bGUiLEdaPSJyZWFkT25seSIscU89WlosJFo9YHBsdWdpbjoke1pafWA7dmFyIHdjPW5ldyBXZWFrTWFwLFI0PW5ldyBXZWFrTWFwLEtPPW5ldyBXZWFrTWFwLFhPPW5ldyBXZWFrTWFw'@; put 'LFFPPW5ldyBXZWFrTWFwLHFaPW5ldyBXZWFrTWFwLEpPPW5ldyBXZWFrTWFwLHkxZT1uZXcgV2Vha01hcCxiMWU9bmV3IFdlYWtNYXAsdzFlPW5ldyBXZWFrTWFwLGtOZT1uZXcgV2Vha1NldCxSTmU9bmV3IFdlYWtTZXQsSU5lPW5ldyBXZWFrU2V0LEROZT1uZXcgV2Vha1NldCxDMWU9bmV3'@; put 'IFdlYWtNYXAsTE5lPW5ldyBXZWFrU2V0LEtaPW5ldyBXZWFrTWFwLFMxZT1uZXcgV2Vha01hcCxYdz1uZXcgV2Vha1NldDtjbGFzcyBRSHQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gWlp9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gNjB9'@; put 'c3RhdGljIGdldCBERUZBVUxUX1NFVFRJTkdTKCl7cmV0dXJue2Rpc3BsYXlEZWxheToyNTB9fWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtaWl19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwoaXModGhpcyx3Yyl8fChKZCh0aGlzLHdjLG5ldyBPSHQo'@; put 'dGhpcy5ob3Qucm9vdERvY3VtZW50LHRoaXMuaG90LmlzUnRsKCksdGhpcy5ob3Qucm9vdFBvcnRhbEVsZW1lbnQpKSxpcyh0aGlzLHdjKT8uYWRkTG9jYWxIb29rKCJyZXNpemUiLChlLHQpPT5rNCh0aGlzLExOZSxyVnQpLmNhbGwodGhpcyxlLHQpKSx0aGlzLmhvdC5hZGRIb29rKCJhZnRl'@; put 'clNldFRoZW1lIiwoZSx0KT0+e3R8fHRoaXMuaGlkZSgpfSkpLGlzKHRoaXMsUjQpfHxKZCh0aGlzLFI0LG5ldyBQSHQodGhpcy5nZXRTZXR0aW5nKCJkaXNwbGF5RGVsYXkiKSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixlPT50aGlzLmFkZFRvQ29u'@; put 'dGV4dE1lbnUoZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW5kZXJlciIsKGUsdCxyLGksbyxhKT0+azQodGhpcyxSTmUsZVZ0KS5jYWxsKHRoaXMsZSxhKSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbCIsaXModGhpcyxTMWUpKSx0aGlzLmFkZEhvb2soImFmdGVyQmVnaW5FZGl0aW5nIiwo'@; put 'KT0+dGhpcy5oaWRlKCkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJEb2N1bWVudEtleURvd24iLGlzKHRoaXMsS1opKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbXBvc2l0aW9uU3RhcnQiLGlzKHRoaXMsS1opKSxpcyh0aGlzLFI0KT8uYWRkTG9jYWxIb29rKCJoaWRlIiwoKT0+dGhpcy5oaWRlKCkp'@; put 'LGlzKHRoaXMsUjQpPy5hZGRMb2NhbEhvb2soInNob3ciLChlLHQpPT50aGlzLnNob3dBdENlbGwoZSx0KSksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7aXModGhpcyxSNCk/LnVw'@; put 'ZGF0ZURlbGF5KHRoaXMuZ2V0U2V0dGluZygiZGlzcGxheURlbGF5IikpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXt0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9cmVnaXN0ZXJTaG9ydGN1dHMoKXtjb25zdCBlPXRoaXMuaG90'@; put 'LmdldFNob3J0Y3V0TWFuYWdlcigpLHQ9ZS5nZXRDb250ZXh0KCJncmlkIikscj1lLmFkZENvbnRleHQoJFopO3Q/LmFkZFNob3J0Y3V0KHtrZXlzOltbIkNvbnRyb2wiLCJBbHQiLCJNIl1dLGNhbGxiYWNrOigpPT57Y29uc3QgaT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7'@; put 'SmQodGhpcyxYTywhMCksdGhpcy5ob3Quc2Nyb2xsVG9Gb2N1c2VkQ2VsbCgoKT0+e2kmJnRoaXMuc2V0UmFuZ2UoaSksdGhpcy5zaG93KCksdGhpcy5mb2N1c0VkaXRvcigpLGUuc2V0QWN0aXZlQ29udGV4dE5hbWUoJFopLHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9PntKZCh0aGlz'@; put 'LFhPLCExKX0pfSl9LHN0b3BQcm9wYWdhdGlvbjohMCxydW5Pbmx5SWY6KCk9PiEhdGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQuaXNDZWxsKCksZ3JvdXA6cU99KSxyLmFkZFNob3J0Y3V0KHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazooKT0+e2lzKHRo'@; put 'aXMsd2MpPy5zZXRWYWx1ZShpcyh0aGlzLEpPKSksdGhpcy5oaWRlKCksZS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIpfSxydW5Pbmx5SWY6KCk9PiEoIWlzKHRoaXMsd2MpPy5pc1Zpc2libGUoKXx8IWlzKHRoaXMsd2MpPy5pc0ZvY3VzZWQoKSksZ3JvdXA6cU99KSxyLmFkZFNob3J0'@; put 'Y3V0KHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkVudGVyIl1dLGNhbGxiYWNrOigpPT57dGhpcy5oaWRlKCksZS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIpfSxydW5Pbmx5SWY6KCk9PiEoIWlzKHRoaXMsd2MpPy5pc1Zpc2libGUoKXx8IWlzKHRoaXMsd2MpPy5pc0ZvY3VzZWQoKSks'@; put 'Z3JvdXA6cU99KSxyLmFkZFNob3J0Y3V0KHtrZXlzOltbIlNoaWZ0IiwiVGFiIl0sWyJUYWIiXV0sZm9yd2FyZFRvQ29udGV4dDplLmdldENvbnRleHQoImdyaWQiKSxjYWxsYmFjazooKT0+e0pkKHRoaXMsUU8sITApLGlzKHRoaXMsd2MpPy5zZXRWYWx1ZShpcyh0aGlzLHdjKT8uZ2V0VmFs'@; put 'dWUoKSksdGhpcy5zZXRDb21tZW50KCksdGhpcy5oaWRlKCksZS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIpfSxncm91cDpxT30pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIik/LnJlbW92ZVNob3J0Y3V0'@; put 'c0J5R3JvdXAocU8pfXJlZ2lzdGVyTGlzdGVuZXJzKCl7Y29uc3R7cm9vdERvY3VtZW50OmV9PXRoaXMuaG90LHQ9dGhpcy5nZXRFZGl0b3JJbnB1dEVsZW1lbnQoKTt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsIm1vdXNlb3ZlciIsaXModGhpcyx3MWUpKSx0aGlzLmV2'@; put 'ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsIm1vdXNlZG93biIsaXModGhpcyx5MWUpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsIm1vdXNldXAiLCgpPT5rNCh0aGlzLGtOZSxKSHQpLmNhbGwodGhpcykpLHQmJih0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVu'@; put 'dExpc3RlbmVyKHQsImZvY3VzIiwoKT0+azQodGhpcyxETmUsblZ0KS5jYWxsKHRoaXMpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQsImJsdXIiLCgpPT5rNCh0aGlzLElOZSx0VnQpLmNhbGwodGhpcykpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo'@; put 'dCwia2V5ZG93biIsaXModGhpcyxDMWUpKSk7Y29uc3Qgcj10aGlzLmdldEVkaXRvcklucHV0RWxlbWVudCgpO3ImJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIociwibW91c2Vkb3duIixpcyh0aGlzLGIxZSkpfXNldFJhbmdlKGUpe3RoaXMucmFuZ2U9ZX1jbGVhclJhbmdl'@; put 'KCl7dGhpcy5yYW5nZT17fX10YXJnZXRJc0NlbGxXaXRoQ29tbWVudChlKXtjb25zdCB0PVZ2KEFhKGUpLFsiVEQiXSk7cmV0dXJuISEodCYmTGEodCwiaHRDb21tZW50Q2VsbCIpJiZWdih0LFt0aGlzLmhvdC5yb290RWxlbWVudF0pKX10YXJnZXRJc0NvbW1lbnRUZXh0QXJlYShlKXtyZXR1'@; put 'cm4gdGhpcy5nZXRFZGl0b3JJbnB1dEVsZW1lbnQoKT09PWUudGFyZ2V0fXNldENvbW1lbnQoZSl7dGhpcy5yYW5nZS5mcm9tfHxKcignQmVmb3JlIHVzaW5nIHRoaXMgbWV0aG9kLCBmaXJzdCBzZXQgY2VsbCByYW5nZSAoaG90LmdldFBsdWdpbigiY29tbWVudCIpLnNldFJhbmdlKCkpJyk7'@; put 'Y29uc3QgdD1pcyh0aGlzLHdjKT8uZ2V0VmFsdWUoKTtsZXQgcj0iIjtudWxsIT1lP3I9ZTpudWxsIT10JiYocj10KTtjb25zdHtyb3c6aSxjb2w6b309azQodGhpcyxYdyxZVCkuY2FsbCh0aGlzKTt0aGlzLnVwZGF0ZUNvbW1lbnRNZXRhKGksbyx7WyRPXTpyfSksdGhpcy5ob3QucmVuZGVy'@; put 'KCl9c2V0Q29tbWVudEF0Q2VsbChlLHQscil7dGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhlLHQpfSksdGhpcy5zZXRDb21tZW50KHIpfXJlbW92ZUNvbW1lbnQoZT0hMCl7dGhpcy5yYW5nZS5mcm9tfHxKcignQmVmb3JlIHVzaW5nIHRoaXMgbWV0aG9k'@; put 'LCBmaXJzdCBzZXQgY2VsbCByYW5nZSAoaG90LmdldFBsdWdpbigiY29tbWVudCIpLnNldFJhbmdlKCkpJyk7Y29uc3R7cm93OnQsY29sOnJ9PWs0KHRoaXMsWHcsWVQpLmNhbGwodGhpcyk7dGhpcy5ob3Quc2V0Q2VsbE1ldGEodCxyLFdULHZvaWQgMCksZSYmdGhpcy5ob3QucmVuZGVyKCks'@; put 'dGhpcy5oaWRlKCl9cmVtb3ZlQ29tbWVudEF0Q2VsbChlLHQscj0hMCl7dGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhlLHQpfSksdGhpcy5yZW1vdmVDb21tZW50KHIpfWdldENvbW1lbnQoKXtjb25zdHtyb3c6ZSxjb2w6dH09azQodGhpcyxYdyxZVCku'@; put 'Y2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YShlLHQsJE8pfWdldENvbW1lbnRBdENlbGwoZSx0KXtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YShlLHQsJE8pfXNob3coKXt0aGlzLnJhbmdlLmZyb218fEpyKCdCZWZvcmUgdXNpbmcgdGhpcyBtZXRob2QsIGZpcnN0IHNl'@; put 'dCBjZWxsIHJhbmdlIChob3QuZ2V0UGx1Z2luKCJjb21tZW50Iikuc2V0UmFuZ2UoKSknKTtjb25zdHtyb3c6ZSxjb2w6dH09azQodGhpcyxYdyxZVCkuY2FsbCh0aGlzKTtpZihlPDB8fGU+dGhpcy5ob3QuY291bnRSb3dzKCktMXx8dDwwfHx0PnRoaXMuaG90LmNvdW50Q29scygpLTEpcmV0'@; put 'dXJuITE7Y29uc3Qgcj10aGlzLmhvdC5nZXRDZWxsTWV0YShlLHQpO2lzKHRoaXMsUjQpPy5jYW5jZWxIaWRpbmcoKTtjb25zdCBpPXJbV1RdO3JldHVybiBpcyh0aGlzLHdjKT8uc2V0VmFsdWUoKGk/aVskT106bnVsbCk/PyIiKSxpcyh0aGlzLHdjKT8uc2hvdygpLHRoaXMucmVmcmVzaEVk'@; put 'aXRvcighMCksITB9c2hvd0F0Q2VsbChlLHQpe3JldHVybiB0aGlzLnNldFJhbmdlKHtmcm9tOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGUsdCl9KSx0aGlzLnNob3coKX1oaWRlKCl7aXModGhpcyx3Yyk/LmhpZGUoKX1yZWZyZXNoRWRpdG9yKGU9ITEpe2lmKCEoZXx8dGhpcy5yYW5n'@; put 'ZS5mcm9tJiZpcyh0aGlzLHdjKT8uaXNWaXNpYmxlKCkpfHwhaXModGhpcyx3YykpcmV0dXJuO2NvbnN0e3Jvd0luZGV4TWFwcGVyOnQsY29sdW1uSW5kZXhNYXBwZXI6cn09dGhpcy5ob3Qse3JvdzppLGNvbDpvfT1rNCh0aGlzLFh3LFlUKS5jYWxsKHRoaXMpO2xldCBhPXQuZ2V0UmVuZGVy'@; put 'YWJsZUZyb21WaXN1YWxJbmRleChpKSxsPXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChvKTtjb25zdCB1PW51bGw9PT1hO2lmKGlzKHRoaXMsd2MpLnNldFBvc2l0aW9uKDAsMCksbnVsbD09PWEpe2NvbnN0IFBvPXQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGksLTEpO2E9bnVs'@; put 'bCE9PVBvP3QuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChQbyk6bnVsbH1pZihudWxsPT09bCl7Y29uc3QgUG89ci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobywtMSk7bD1udWxsIT09UG8/ci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFBvKTpudWxsfWNvbnN0IGc9bnVs'@; put 'bD09PWEsRT1udWxsPT09bDthPWE/PzAsbD1sPz8wO2NvbnN0e3Jvb3RXaW5kb3c6Tyx2aWV3Ontfd3Q6Wn19PXRoaXMuaG90LHt3dFRhYmxlOmVlfT1aLHZlPVouZ2V0Q2VsbCh7cm93OmEsY29sOmx9LCEwKSxIZT10aGlzLmhvdC5nZXRDZWxsTWV0YShpLG8pLmNvbHNwYW4/PzEsV2U9dGhp'@; put 'cy5nZXRDb21tZW50TWV0YShpLG8sInN0eWxlIik7V2U/aXModGhpcyx3Yykuc2V0U2l6ZShXZS53aWR0aCxXZS5oZWlnaHQpOmlzKHRoaXMsd2MpLnJlc2V0U2l6ZSgpO2NvbnN0IGF0PUU/MDpmdW5jdGlvbiBISHQobixlLHQpe3JldHVybiBuPjE/WmQoZSk6dH0oSGUsdmUsZWUuZ2V0Q29s'@; put 'dW1uV2lkdGgobCkpLEN0PXUmJiFnP0hoKHZlKTowLHtsZWZ0OkF0LHRvcDpLdCx3aWR0aDpxdCxoZWlnaHQ6Z259PXZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt3aWR0aDpUbixoZWlnaHQ6Q259PWlzKHRoaXMsd2MpLmdldFNpemUoKSx7aW5uZXJXaWR0aDpxcixpbm5lckhlaWdodDok'@; put 'bn09dGhpcy5ob3Qucm9vdFdpbmRvdyxUcj10aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHJpPUdkKHRoaXMuaG90LnJvb3REb2N1bWVudCksZm49UnNlKHRoaXMuaG90LnJvb3RXaW5kb3cpP3JpOjAseXI9SXNlKHRoaXMuaG90LnJvb3RXaW5kb3cpP3JpOjA7bGV0IEhy'@; put 'PUF0K08uc2Nyb2xsWCthdC0oSGU+MT8xOjApLHRpPUt0K08uc2Nyb2xsWStDdDt0aGlzLmhvdC5pc1J0bCgpJiYoSHItPVRuK2F0KSx0aGlzLmhvdC5pc0x0cigpJiZBdCtxdCtUbj5xci1mbj9Icj1BdCtPLnNjcm9sbFgtVG4tMTp0aGlzLmhvdC5pc1J0bCgpJiZIcjwtKFRyLnNjcm9sbFdp'@; put 'ZHRoLVRyLmNsaWVudFdpZHRoKSYmKEhyPUF0K08uc2Nyb2xsWCthdCsxKSxLdCtDbj4kbi15ciYmKHRpLT1Dbi1nbisxKTtjb25zdCBmcj1mdW5jdGlvbiBWSHQobixlLHQ9OCl7Y29uc3R7aW5uZXJXaWR0aDpyLGlubmVySGVpZ2h0OmksdmVydGljYWxTY3JvbGxiYXJXaWR0aDpvPTAsaG9y'@; put 'aXpvbnRhbFNjcm9sbGJhcldpZHRoOmE9MH09ZSxsPU1hdGgubWF4KDAsci1vLTIqdCksdT1NYXRoLm1heCgwLGktYS0yKnQpO3JldHVybnt3aWR0aDpNYXRoLm1pbihuLndpZHRoLGwpLGhlaWdodDpNYXRoLm1pbihuLmhlaWdodCx1KX19KHt3aWR0aDpUbixoZWlnaHQ6Q259LHtpbm5lcldp'@; put 'ZHRoOnFyLGlubmVySGVpZ2h0OiRuLHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGg6Zm4saG9yaXpvbnRhbFNjcm9sbGJhcldpZHRoOnlyfSk7KGZyLndpZHRoIT09VG58fGZyLmhlaWdodCE9PUNuKSYmaXModGhpcyx3Yykuc2V0U2l6ZShmci53aWR0aCxmci5oZWlnaHQpO2NvbnN0IGVpPWZ1bmN0'@; put 'aW9uIEJIdChuLGUsdD04KXtjb25zdHtpbm5lcldpZHRoOnIsaW5uZXJIZWlnaHQ6aSxzY3JvbGxYOm8sc2Nyb2xsWTphLHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGg6bD0wLGhvcml6b250YWxTY3JvbGxiYXJXaWR0aDp1PTB9PWUsZz1vLEU9YSxPPW8rci1sLFo9YStpLXU7bGV0e3g6ZWUseTp2'@; put 'ZX09bjtyZXR1cm4gZWU8Zz9lZT1nK3Q6ZWUrbi53aWR0aD5PJiYoZWU9TWF0aC5tYXgoZyt0LE8tbi53aWR0aC10KSksdmU8RT92ZT1FK3Q6dmUrbi5oZWlnaHQ+WiYmKHZlPU1hdGgubWF4KEUrdCxaLW4uaGVpZ2h0LXQpKSx7eDplZSx5OnZlfX0oe3g6SHIseTp0aSx3aWR0aDpmci53aWR0'@; put 'aCxoZWlnaHQ6ZnIuaGVpZ2h0fSx7aW5uZXJXaWR0aDpxcixpbm5lckhlaWdodDokbixzY3JvbGxYOk8uc2Nyb2xsWCxzY3JvbGxZOk8uc2Nyb2xsWSx2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoOmZuLGhvcml6b250YWxTY3JvbGxiYXJXaWR0aDp5cn0pO2lzKHRoaXMsd2MpLnNldFBvc2l0aW9u'@; put 'KGVpLngsZWkueSksaXModGhpcyx3Yykuc2V0UmVhZE9ubHlTdGF0ZSh0aGlzLmdldENvbW1lbnRNZXRhKGksbyxHWik/PyExKSxpcyh0aGlzLHdjKS5vYnNlcnZlU2l6ZSgpfWZvY3VzRWRpdG9yKCl7aXModGhpcyx3Yyk/LmZvY3VzKCl9dXBkYXRlQ29tbWVudE1ldGEoZSx0LHIpe2NvbnN0'@; put 'IGk9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoZSx0KVtXVF07bGV0IG87aT8obz1BZChpKSxMVyhvLHIpKTpvPXIsdGhpcy5ob3Quc2V0Q2VsbE1ldGEoZSx0LFdULG8pfWdldENvbW1lbnRNZXRhKGUsdCxyKXtjb25zdCBvPXRoaXMuaG90LmdldENlbGxNZXRhKGUsdClbV1RdO2lmKG8pcmV0dXJu'@; put 'IG9bcl19YWRkVG9Db250ZXh0TWVudShlKXtlLml0ZW1zLnB1c2goe25hbWU6dnN9LGZ1bmN0aW9uIFVIdChuKXtyZXR1cm57a2V5OiJjb21tZW50c0FkZEVkaXQiLG5hbWUoKXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7cmV0dXJuIGU/LmlzQ2Vs'@; put 'bCgpJiZudWxsIT09ZS5yb3cmJm51bGwhPT1lLmNvbCYmbi5nZXRDb21tZW50QXRDZWxsKGUucm93LGUuY29sKT90aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoQ2NlKTp0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uod2NlKX0sY2FsbGJhY2soKXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5n'@; put 'ZUFjdGl2ZSgpO2UmJm4uc2V0UmFuZ2Uoe2Zyb206ZS5mcm9tLHRvOmUudG99KSxuLnNob3coKSxuLmZvY3VzRWRpdG9yKCl9LGRpc2FibGVkKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtyZXR1cm4hISghZXx8ZS5oaWdobGlnaHQuaXNIZWFkZXIoKXx8dGhpcy5z'@; put 'ZWxlY3Rpb24uaXNFbnRpcmVSb3dTZWxlY3RlZCgpJiZ0aGlzLnNlbGVjdGlvbi5pc0VudGlyZUNvbHVtblNlbGVjdGVkKCl8fDA9PT10aGlzLmNvdW50UmVuZGVyZWRSb3dzKCl8fDA9PT10aGlzLmNvdW50UmVuZGVyZWRDb2xzKCkpfX19KHRoaXMpLGZ1bmN0aW9uIHpIdChuKXtyZXR1cm57'@; put 'a2V5OiJjb21tZW50c1JlbW92ZSIsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoU2NlKX0sY2FsbGJhY2soKXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2UmJihlLmZvckFsbCgodCxyKT0+e3Q+PTAmJnI+PTAmJm4ucmVtb3ZlQ29tbWVudEF0'@; put 'Q2VsbCh0LHIsITEpfSksdGhpcy5yZW5kZXIoKSl9LGRpc2FibGVkKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtyZXR1cm4hISghZXx8ZS5oaWdobGlnaHQuaXNIZWFkZXIoKXx8dGhpcy5zZWxlY3Rpb24uaXNFbnRpcmVSb3dTZWxlY3RlZCgpJiZ0aGlzLnNlbGVj'@; put 'dGlvbi5pc0VudGlyZUNvbHVtblNlbGVjdGVkKCl8fDA9PT10aGlzLmNvdW50UmVuZGVyZWRSb3dzKCl8fDA9PT10aGlzLmNvdW50UmVuZGVyZWRDb2xzKCkpfX19KHRoaXMpLGZ1bmN0aW9uIEdIdChuKXtyZXR1cm57a2V5OiJjb21tZW50c1JlYWRPbmx5IixuYW1lKCl7Y29uc3QgZT10aGlz'@; put 'LmdldFRyYW5zbGF0ZWRQaHJhc2UoRWNlKTtyZXR1cm4gV1oodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk/P1tdLChyLGkpPT4hIW4uZ2V0Q29tbWVudE1ldGEocixpLEdaKSk/TU5lKGUpOmV9LGNhbGxiYWNrKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtlJiZlLmZv'@; put 'ckFsbCgodCxyKT0+e2lmKHQ+PTAmJnI+PTApe2NvbnN0IGk9ISFuLmdldENvbW1lbnRNZXRhKHQscixHWik7bi51cGRhdGVDb21tZW50TWV0YSh0LHIse1tHWl06IWl9KX19KX0sZGlzYWJsZWQoKXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO3JldHVybiEhKCFlfHxl'@; put 'LmhpZ2hsaWdodC5pc0hlYWRlcigpfHwhbi5nZXRDb21tZW50QXRDZWxsKGUuaGlnaGxpZ2h0LnJvdyxlLmhpZ2hsaWdodC5jb2wpfHx0aGlzLnNlbGVjdGlvbi5pc0VudGlyZVJvd1NlbGVjdGVkKCkmJnRoaXMuc2VsZWN0aW9uLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoKXx8MD09PXRoaXMu'@; put 'Y291bnRSZW5kZXJlZFJvd3MoKXx8MD09PXRoaXMuY291bnRSZW5kZXJlZENvbHMoKSl9fX0odGhpcykpfWdldEVkaXRvcklucHV0RWxlbWVudCgpe3JldHVybiBpcyh0aGlzLHdjKT8uZ2V0SW5wdXRFbGVtZW50KCk/P251bGx9ZGVzdHJveSgpe2lzKHRoaXMsd2MpPy5kZXN0cm95KCksaXMo'@; put 'dGhpcyxSNCk/LmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSkselQodGhpcyxrTmUpLHpUKHRoaXMsUk5lKSx6VCh0aGlzLElOZSkselQodGhpcyxETmUpLHpUKHRoaXMsTE5lKSx6VCh0aGlzLFh3KSxuZyh0aGlzLHdjLHt3cml0YWJsZToh'@; put 'MCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLFI0LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLEtPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLFhPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLFFPLHt3cml0YWJsZTohMCx2YWx1ZTp2'@; put 'b2lkIDB9KSxuZyh0aGlzLHFaLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLEpPLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLHkxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksbmcodGhpcyxiMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0p'@; put 'LG5nKHRoaXMsdzFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuZyh0aGlzLEMxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksbmcodGhpcyxLWix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksbmcodGhpcyxTMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMu'@; put 'cmFuZ2U9e30sSmQodGhpcyx3YyxudWxsKSxKZCh0aGlzLFI0LG51bGwpLEpkKHRoaXMsS08sITEpLEpkKHRoaXMsWE8sITEpLEpkKHRoaXMsUU8sITEpLEpkKHRoaXMscVosbnVsbCksSmQodGhpcyxKTywiIiksSmQodGhpcyx5MWUsdD0+e2lmKHRoaXMuaG90LnZpZXcmJnRoaXMuaG90LnZp'@; put 'ZXcuX3d0JiYhaXModGhpcyxLTykmJiF0aGlzLnRhcmdldElzQ29tbWVudFRleHRBcmVhKHQpKXtjb25zdCByPVZ2KEFhKHQpLFsiVEQiXSk7bGV0IGk9bnVsbDtyJiYoaT10aGlzLmhvdC5nZXRDb29yZHMocikpLCghcnx8dGhpcy5yYW5nZS5mcm9tJiZpJiYodGhpcy5yYW5nZS5mcm9tLnJv'@; put 'dyE9PWkucm93fHx0aGlzLnJhbmdlLmZyb20uY29sIT09aS5jb2wpKSYmdGhpcy5oaWRlKCl9fSksSmQodGhpcyxiMWUsdD0+e3Quc3RvcFByb3BhZ2F0aW9uKCl9KSxKZCh0aGlzLHcxZSx0PT57Y29uc3R7cm9vdERvY3VtZW50OnJ9PXRoaXMuaG90LGk9QWEodCk7aWYoIShpcyh0aGlzLEtP'@; put 'KXx8aXModGhpcyx3Yyk/LmlzRm9jdXNlZCgpfHxMYShpLCJ3dEJvcmRlciIpfHxpcyh0aGlzLHFaKT09PWkpJiZpcyh0aGlzLHdjKSlpZihKZCh0aGlzLHFaLHIuZWxlbWVudEZyb21Qb2ludCh0LmNsaWVudFgsdC5jbGllbnRZKSksdGhpcy50YXJnZXRJc0NlbGxXaXRoQ29tbWVudCh0KSl7'@; put 'Y29uc3Qgbz10aGlzLmhvdC5nZXRDb29yZHMoaSk7aWYobyl7Y29uc3QgYT10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKG8pO2lzKHRoaXMsUjQpPy5zaG93KGEpfX1lbHNlIEJ2KGkscikmJiF0aGlzLnRhcmdldElzQ29tbWVudFRleHRBcmVhKHQpJiZpcyh0aGlzLFI0KT8uaGlkZSgpfSks'@; put 'SmQodGhpcyxDMWUsdD0+e2lzKHRoaXMsd2MpPy5pc1Zpc2libGUoKSYmKHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmhhc0V2ZW50U2hvcnRjdXQoJFosdCl8fHQuc3RvcFByb3BhZ2F0aW9uKCkpfSksSmQodGhpcyxLWix0PT57aXModGhpcyx3Yyk/LmlzRm9jdXNlZCgpJiZGMyh0'@; put 'KX0pLEpkKHRoaXMsUzFlLCgpPT57aXModGhpcyxYTyl8fHRoaXMuaGlkZSgpfSl9fWZ1bmN0aW9uIEpIdCgpe0pkKHRoaXMsS08sITEpfWZ1bmN0aW9uIGVWdChuLGUpe2NvbnN0IHQ9ZVtXVF07aWYoZnVuY3Rpb24gWEh0KG4pe3JldHVybiBudWxsIT09biYmIm9iamVjdCI9PXR5cGVvZiBu'@; put 'fSh0KSYmdFskT10pe2NvbnN0IHI9ZS5jb21tZW50ZWRDZWxsQ2xhc3NOYW1lOyJzdHJpbmciPT10eXBlb2YgciYmWXIobixyKX19ZnVuY3Rpb24gdFZ0KCl7aXModGhpcyxRTyk/SmQodGhpcyxRTywhMSk6KEpkKHRoaXMsSk8sIiIpLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLnNl'@; put 'dEFjdGl2ZUNvbnRleHROYW1lKCJncmlkIiksdGhpcy5zZXRDb21tZW50KCkpfWZ1bmN0aW9uIG5WdCgpe0pkKHRoaXMsSk8sdGhpcy5nZXRDb21tZW50KCk/PyIiKSx0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgk'@; put 'Wil9ZnVuY3Rpb24gclZ0KG4sZSl7Y29uc3R7cm93OnQsY29sOnJ9PWs0KHRoaXMsWHcsWVQpLmNhbGwodGhpcyk7dGhpcy51cGRhdGVDb21tZW50TWV0YSh0LHIse1tBTmVdOnt3aWR0aDpuLGhlaWdodDplfX0pfWZ1bmN0aW9uIFlUKCl7aWYodGhpcy5yYW5nZSBpbnN0YW5jZW9mIG5ZKXtj'@; put 'b25zdHtyb3c6bixjb2w6ZX09dGhpcy5yYW5nZS5oaWdobGlnaHQ7cmV0dXJue3JvdzpuPz8wLGNvbDplPz8wfX1yZXR1cm57cm93OnRoaXMucmFuZ2UuZnJvbS5yb3c/PzAsY29sOnRoaXMucmFuZ2UuZnJvbS5jb2w/PzB9fWNsYXNzIE9OZXtyZWdpc3RlckNvbW1hbmQoZSx0KXt0aGlzLmNv'@; put 'bW1hbmRzW2VdPXR9c2V0Q29tbW9uQ2FsbGJhY2soZSl7dGhpcy5jb21tb25DYWxsYmFjaz1lfWV4ZWN1dGUoZSwuLi50KXtjb25zdCByPWUuc3BsaXQoIjoiKSxpPXJbMF0sbz0yPT09ci5sZW5ndGg/clsxXTpudWxsO2xldCBhPXRoaXMuY29tbWFuZHNbaV07aWYoYXx8SnIoYE1lbnUgY29t'@; put 'bWFuZCAnJHtpfScgbm90IGV4aXN0cy5gKSxvJiZhLnN1Ym1lbnUmJihhPWZ1bmN0aW9uIGlWdChuLGUpe2xldCB0O3JldHVybiBYbihlLHI9Pntjb25zdCBpPXIua2V5P3Iua2V5LnNwbGl0KCI6Iik6bnVsbDtpZihBcnJheS5pc0FycmF5KGkpJiZpWzFdPT09bilyZXR1cm4gdD1yLCExfSks'@; put 'dH0obyxhLnN1Ym1lbnUuaXRlbXMpKSwhMD09PWEuZGlzYWJsZWR8fCJmdW5jdGlvbiI9PXR5cGVvZiBhLmRpc2FibGVkJiYhMD09PWEuZGlzYWJsZWQuY2FsbCh0aGlzLmhvdCl8fFJkKGEsInN1Ym1lbnUiKSlyZXR1cm47Y29uc3QgbD1bXTsiZnVuY3Rpb24iPT10eXBlb2YgYS5jYWxsYmFj'@; put 'ayYmbC5wdXNoKGEuY2FsbGJhY2spLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmNvbW1vbkNhbGxiYWNrJiZsLnB1c2godGhpcy5jb21tb25DYWxsYmFjayksdC51bnNoaWZ0KHIuam9pbigiOiIpKSxYbihsLHU9PnUuYXBwbHkodGhpcy5ob3QsdCkpfWNvbnN0cnVjdG9yKGUpe3RoaXMuY29t'@; put 'bWFuZHM9e30sdGhpcy5jb21tb25DYWxsYmFjaz1udWxsLHRoaXMuaG90PWV9fWNvbnN0IHBtPSJhbGlnbm1lbnQiLFhaPSJjbGVhcl9jb2x1bW4iLGVOPSJjb2xfbGVmdCIsdE49ImNvbF9yaWdodCIsbk49Im1ha2VfcmVhZF9vbmx5IixRWj0icmVkbyIsck49InJlbW92ZV9jb2wiLEpaPSJy'@; put 'ZW1vdmVfcm93IixlRz0icm93X2Fib3ZlIix0Rz0icm93X2JlbG93IixpTj0ibm9faXRlbXMiLG5HPSJ1bmRvIixOTmU9W2VHLHRHLGVOLHROLFhaLEpaLHJOLG5HLFFaLG5OLHBtLHZzLGlOXSxGTmU9e1t2c106ZnVuY3Rpb24gakh0KCl7cmV0dXJue25hbWU6dnN9fSxbaU5dOmZ1bmN0aW9u'@; put 'IGdWdCgpe3JldHVybntrZXk6aU4sbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoSmxlKX0sZGlzYWJsZWQ6ITAsaXNDb21tYW5kOiExfX0sW2VHXTpmdW5jdGlvbiBmVnQoKXtyZXR1cm57a2V5OmVHLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNl'@; put 'KGVjZSl9LGNhbGxiYWNrKCl7Y29uc3Qgbj10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighbilyZXR1cm47Y29uc3QgZT1uLmdldFRvcExlZnRDb3JuZXIoKTtudWxsIT09ZS5yb3cmJnRoaXMuYWx0ZXIoImluc2VydF9yb3dfYWJvdmUiLGUucm93LDEsIkNvbnRleHRNZW51LnJv'@; put 'd0Fib3ZlIil9LGRpc2FibGVkKCl7Y29uc3Qgbj10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtyZXR1cm4hISghbnx8dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fG4uaXNTaW5nbGVIZWFkZXIoKSYmbnVsbCE9PW4uaGlnaGxpZ2h0LnJvdyYmbi5oaWdo'@; put 'bGlnaHQucm93PDB8fHRoaXMuY291bnRTb3VyY2VSb3dzKCk+PSh0aGlzLmdldFNldHRpbmdzKCkubWF4Um93cz8/MS8wKSl8fCEhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJjA9PT10aGlzLmNvdW50Um93cygpfSxoaWRkZW4oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5n'@; put 'cygpLmFsbG93SW5zZXJ0Um93fX19LFt0R106ZnVuY3Rpb24gcFZ0KCl7cmV0dXJue2tleTp0RyxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh0Y2UpfSxjYWxsYmFjaygpe2NvbnN0IG49dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIW4pcmV0dXJuO2Nv'@; put 'bnN0IGU9bi5nZXRCb3R0b21SaWdodENvcm5lcigpO251bGwhPT1lLnJvdyYmdGhpcy5hbHRlcigiaW5zZXJ0X3Jvd19iZWxvdyIsZS5yb3csMSwiQ29udGV4dE1lbnUucm93QmVsb3ciKX0sZGlzYWJsZWQoKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO3JldHVybiEh'@; put 'KCFufHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8bi5pc1NpbmdsZUhlYWRlcigpJiZudWxsIT09bi5oaWdobGlnaHQucm93JiZuLmhpZ2hsaWdodC5yb3c8MHx8dGhpcy5jb3VudFNvdXJjZVJvd3MoKT49KHRoaXMuZ2V0U2V0dGluZ3MoKS5tYXhSb3dzPz8x'@; put 'LzApKX0saGlkZGVuKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd0luc2VydFJvd319fSxbZU5dOmZ1bmN0aW9uIHNWdCgpe3JldHVybntrZXk6ZU4sbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobmNlKX0sY2FsbGJhY2soKXtjb25zdCBuPXRoaXMuZ2V0'@; put 'U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFuKXJldHVybjtjb25zdCBlPW4uZ2V0VG9wTGVmdENvcm5lcigpLHQ9dGhpcy5pc1J0bCgpPyJpbnNlcnRfY29sX2VuZCI6Imluc2VydF9jb2xfc3RhcnQiO251bGwhPT1lLmNvbCYmdGhpcy5hbHRlcih0LGUuY29sLDEsIkNvbnRleHRNZW51LmNv'@; put 'bHVtbkxlZnQiKX0sZGlzYWJsZWQoKXtpZighdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKSlyZXR1cm4hMDtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO3JldHVybiEhKCFufHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8bi5p'@; put 'c1NpbmdsZUhlYWRlcigpJiYobi5oaWdobGlnaHQuY29sPz8wKTwwfHx0aGlzLmNvdW50U291cmNlQ29scygpPj0odGhpcy5nZXRTZXR0aW5ncygpLm1heENvbHM/PzEvMCkpfHwhIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYwPT09dGhpcy5jb3VudENvbHMoKX0saGlk'@; put 'ZGVuKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd0luc2VydENvbHVtbn19fSxbdE5dOmZ1bmN0aW9uIGxWdCgpe3JldHVybntrZXk6dE4sbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UocmNlKX0sY2FsbGJhY2soKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0'@; put 'ZWRSYW5nZUFjdGl2ZSgpO2lmKCFuKXJldHVybjtjb25zdCBlPW4uZ2V0VG9wUmlnaHRDb3JuZXIoKSx0PXRoaXMuaXNSdGwoKT8iaW5zZXJ0X2NvbF9zdGFydCI6Imluc2VydF9jb2xfZW5kIjtudWxsIT09ZS5jb2wmJnRoaXMuYWx0ZXIodCxlLmNvbCwxLCJDb250ZXh0TWVudS5jb2x1bW5S'@; put 'aWdodCIpfSxkaXNhYmxlZCgpe2lmKCF0aGlzLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpKXJldHVybiEwO2NvbnN0IG49dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7cmV0dXJuISEoIW58fHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpfHxuLmlzU2lu'@; put 'Z2xlSGVhZGVyKCkmJihuLmhpZ2hsaWdodC5jb2w/PzApPDB8fHRoaXMuY291bnRTb3VyY2VDb2xzKCk+PSh0aGlzLmdldFNldHRpbmdzKCkubWF4Q29scz8/MS8wKSl9LGhpZGRlbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dJbnNlcnRDb2x1bW59fX0sW1haXTpmdW5jdGlv'@; put 'biBhVnQoKXtyZXR1cm57a2V5OlhaLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGxjZSl9LGNhbGxiYWNrKG4sZSl7Y29uc3QgdD1lWzBdLnN0YXJ0LmNvbCxyPWVbMF0uZW5kLmNvbDt0aGlzLmNvdW50Um93cygpJiZ0aGlzLnBvcHVsYXRlRnJvbUFycmF5KDAsdCxb'@; put 'W251bGxdXSxNYXRoLm1heChlWzBdLnN0YXJ0LnJvdyxlWzBdLmVuZC5yb3cpLHIsIkNvbnRleHRNZW51LmNsZWFyQ29sdW1uIil9LGRpc2FibGVkKCl7Y29uc3Qgbj10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighbnx8bi5pc1NpbmdsZUhlYWRlcigpJiYobnVsbD09PW4uaGln'@; put 'aGxpZ2h0LmNvbHx8bi5oaWdobGlnaHQuY29sPDApfHwhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpcmV0dXJuITA7bGV0IGU9ITE7cmV0dXJuIG4uZm9yQWxsKCh0LHIpPT57aWYodDwwfHxyPDApcmV0dXJuITA7Y29uc3R7cmVhZE9ubHk6aX09dGhpcy5nZXRD'@; put 'ZWxsTWV0YSh0LHIpO3JldHVybiEhaXx8KGU9ITAsITEpfSksIWV9fX0sW0paXTpmdW5jdGlvbiBoVnQoKXtyZXR1cm57a2V5OkpaLG5hbWUoKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWQoKTtsZXQgZT0wO2lmKG4paWYobi5sZW5ndGg+MSllPTE7ZWxzZXtjb25zdFt0LCxyXT1uWzBdO3Qt'@; put 'ciE9PTAmJihlPTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoaWNlLGUpfSxjYWxsYmFjaygpe3RoaXMuYWx0ZXIoInJlbW92ZV9yb3ciLGZ1bmN0aW9uIGdSdChuKXtjb25zdCBlPWNUKG4uZ2V0U2VsZWN0ZWQoKSk7aWYoMD09PWV8fDE9PT1lKXJldHVybltdO2NvbnN0IHQ9'@; put 'SkwoZSx7Y3JlYXRlQ2VsbENvb3JkczpuLl9jcmVhdGVDZWxsQ29vcmRzLmJpbmQobiksY3JlYXRlQ2VsbFJhbmdlOm4uX2NyZWF0ZUNlbGxSYW5nZS5iaW5kKG4pfSkscj1uZXcgU2V0O3JldHVybiBYbihuLmdldFNlbGVjdGVkKCk/P1tdLGE9Pntjb25zdHtmcm9tOmwsdG86dX09dChhKSxn'@; put 'PU1hdGgubWF4KGwucm93Pz8wLDApO1huKEFycmF5LmZyb20obmV3IEFycmF5KCh1LnJvdz8/MCktZysxKSwoTyxaKT0+ZytaKSxPPT57ci5oYXMoTyl8fHIuYWRkKE8pfSl9KSxtMShBcnJheS5mcm9tKHIpLnNvcnQoKGEsbCk9PmEtbCksKGEsbCx1LGcpPT4oMCE9PXUmJmw9PT1nW3UtMV0r'@; put 'MT9hW2EubGVuZ3RoLTFdWzFdKz0xOmEucHVzaChbbCwxXSksYSksW10pfSh0aGlzKSwxLCJDb250ZXh0TWVudS5yZW1vdmVSb3ciKX0sZGlzYWJsZWQoKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFufHxuLmlzU2luZ2xlSGVhZGVyKCkmJm51bGwhPT1uLmhp'@; put 'Z2hsaWdodC5yb3cmJm4uaGlnaGxpZ2h0LnJvdzwwKXJldHVybiEwO2NvbnN0IGU9dGhpcy5jb3VudFJvd3MoKTtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCk/MD09PWU6dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fDA9PT1lfSxo'@; put 'aWRkZW4oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93UmVtb3ZlUm93fX19LFtyTl06ZnVuY3Rpb24gZFZ0KCl7cmV0dXJue2tleTpyTixuYW1lKCl7Y29uc3Qgbj10aGlzLmdldFNlbGVjdGVkKCk7bGV0IGU9MDtpZihuKWlmKG4ubGVuZ3RoPjEpZT0xO2Vsc2V7Y29uc3RbLHQs'@; put 'LHJdPW5bMF07dC1yIT09MCYmKGU9MSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShvY2UsZSl9LGNhbGxiYWNrKCl7dGhpcy5hbHRlcigicmVtb3ZlX2NvbCIsZnVuY3Rpb24gcFJ0KG4pe2NvbnN0IGU9Y1Qobi5nZXRTZWxlY3RlZCgpKTtpZigwPT09ZXx8MT09PWUpcmV0dXJu'@; put 'W107Y29uc3QgdD1KTChlLHtjcmVhdGVDZWxsQ29vcmRzOm4uX2NyZWF0ZUNlbGxDb29yZHMuYmluZChuKSxjcmVhdGVDZWxsUmFuZ2U6bi5fY3JlYXRlQ2VsbFJhbmdlLmJpbmQobil9KSxyPW5ldyBTZXQ7cmV0dXJuIFhuKG4uZ2V0U2VsZWN0ZWQoKT8/W10sYT0+e2NvbnN0e2Zyb206bCx0'@; put 'bzp1fT10KGEpLGc9TWF0aC5tYXgobC5jb2w/PzAsMCk7WG4oQXJyYXkuZnJvbShuZXcgQXJyYXkoKHUuY29sPz8wKS1nKzEpLChPLFopPT5nK1opLE89PntyLmhhcyhPKXx8ci5hZGQoTyl9KX0pLG0xKEFycmF5LmZyb20ocikuc29ydCgoYSxsKT0+YS1sKSwoYSxsLHUsZyk9PigwIT09dSYm'@; put 'bD09PWdbdS0xXSsxP2FbYS5sZW5ndGgtMV1bMV0rPTE6YS5wdXNoKFtsLDFdKSxhKSxbXSl9KHRoaXMpLHZvaWQgMCwiQ29udGV4dE1lbnUucmVtb3ZlQ29sdW1uIil9LGRpc2FibGVkKCl7aWYoIXRoaXMuaXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkKCkpcmV0dXJuITA7Y29uc3Qgbj10'@; put 'aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighbnx8bi5pc1NpbmdsZUhlYWRlcigpJiZudWxsIT09bi5oaWdobGlnaHQuY29sJiZuLmhpZ2hsaWdodC5jb2w8MClyZXR1cm4hMDtjb25zdCBlPXRoaXMuY291bnRDb2xzKCk7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRC'@; put 'eUNvcm5lcigpPzA9PT1lOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpfHwwPT09ZX0saGlkZGVuKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd1JlbW92ZUNvbHVtbn19fSxbbkddOmZ1bmN0aW9uIG1WdCgpe3JldHVybntrZXk6bkcsbmFtZSgpe3JldHVy'@; put 'biB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoYWNlKX0sY2FsbGJhY2soKXt0aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKS51bmRvKCl9LGhpZGRlbigpe2NvbnN0IG49dGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIik7cmV0dXJuIW58fCFuLmlzRW5hYmxlZCgpfSxkaXNhYmxlZCgpe3JldHVy'@; put 'biF0aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKS5pc1VuZG9BdmFpbGFibGUoKX19fSxbUVpdOmZ1bmN0aW9uIHVWdCgpe3JldHVybntrZXk6UVosbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uoc2NlKX0sY2FsbGJhY2soKXt0aGlzLmdldFBsdWdpbigidW5kb1JlZG8i'@; put 'KS5yZWRvKCl9LGhpZGRlbigpe2NvbnN0IG49dGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIik7cmV0dXJuIW58fCFuLmlzRW5hYmxlZCgpfSxkaXNhYmxlZCgpe3JldHVybiF0aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKS5pc1JlZG9BdmFpbGFibGUoKX19fSxbbk5dOmZ1bmN0aW9uIGNWdCgp'@; put 'e3JldHVybntrZXk6bk4sY2hlY2thYmxlOiEwLGFyaWFDaGVja2VkKCl7cmV0dXJuIFdaKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpPz9bXSwoZSx0KT0+ISF0aGlzLmdldENlbGxNZXRhKGUsdCkucmVhZE9ubHkpfSxhcmlhTGFiZWwoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNl'@; put 'KFJZKX0sbmFtZSgpe2xldCBuPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShSWSk7cmV0dXJuIFdaKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpPz9bXSwodCxyKT0+ISF0aGlzLmdldENlbGxNZXRhKHQscikucmVhZE9ubHkpJiYobj1NTmUobikpLG59LGNhbGxiYWNrKCl7Y29uc3Qgbj10aGlz'@; put 'LmdldFNlbGVjdGVkUmFuZ2UoKT8/W10sZT1XWihuLCh0LHIpPT4hIXRoaXMuZ2V0Q2VsbE1ldGEodCxyKS5yZWFkT25seSk7Zm9yKGNvbnN0IHQgb2Ygbil0LmZvckFsbCgocixpKT0+e3I+PTAmJmk+PTAmJnRoaXMuc2V0Q2VsbE1ldGEocixpLCJyZWFkT25seSIsIWUpfSk7dGhpcy5yZW5k'@; put 'ZXIoKX0sZGlzYWJsZWQoKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO3JldHVybiEobiYmIW4uaXNTaW5nbGVIZWFkZXIoKSYmIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYwIT09dGhpcy5jb3VudFJvd3MoKSYmMCE9PXRoaXMuY291bnRDb2xz'@; put 'KCkmJnRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpPy5sZW5ndGgpfX19LFtwbV06ZnVuY3Rpb24gb1Z0KCl7cmV0dXJue2tleTpwbSxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShNY2UpfSxkaXNhYmxlZCgpe2lmKDA9PT10aGlzLmNvdW50Um93cygpfHwwPT09dGhpcy5j'@; put 'b3VudENvbHMoKSlyZXR1cm4hMDtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO3JldHVybiEobiYmIW4uaXNTaW5nbGVIZWFkZXIoKSYmdGhpcy5nZXRTZWxlY3RlZFJhbmdlKCkmJiF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9LHN1Ym1lbnU6e2l0'@; put 'ZW1zOlt7a2V5OmAke3BtfTpsZWZ0YCxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShUY2UpfSxjYWxsYmFjaygpe2NvbnN0IG49dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk/P1tdLGU9S3cobiwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8pLmNsYXNzTmFtZSksdD0i'@; put 'aG9yaXpvbnRhbCIscj0iaHRMZWZ0Ijt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixlLG4sdCxyKSxfXyhuLHQsciwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8pLChpLG8sYSxsKT0+dGhpcy5zZXRDZWxsTWV0YShpLG8sYSxsKSksdGhpcy5yZW5kZXIoKX0sZGlzYWJs'@; put 'ZWQ6ITF9LHtrZXk6YCR7cG19OmNlbnRlcmAsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoeGNlKX0sY2FsbGJhY2soKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpPz9bXSxlPUt3KG4sKGksbyk9PnRoaXMuZ2V0Q2VsbE1ldGEoaSxvKS5jbGFzc05hbWUp'@; put 'LHQ9Imhvcml6b250YWwiLHI9Imh0Q2VudGVyIjt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixlLG4sdCxyKSxfXyhuLHQsciwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8pLChpLG8sYSxsKT0+dGhpcy5zZXRDZWxsTWV0YShpLG8sYSxsKSksdGhpcy5yZW5kZXIoKX0s'@; put 'ZGlzYWJsZWQ6ITF9LHtrZXk6YCR7cG19OnJpZ2h0YCxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShBY2UpfSxjYWxsYmFjaygpe2NvbnN0IG49dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk/P1tdLGU9S3cobiwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8pLmNsYXNz'@; put 'TmFtZSksdD0iaG9yaXpvbnRhbCIscj0iaHRSaWdodCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZSxuLHQsciksX18obix0LHIsKGksbyk9PnRoaXMuZ2V0Q2VsbE1ldGEoaSxvKSwoaSxvLGEsbCk9PnRoaXMuc2V0Q2VsbE1ldGEoaSxvLGEsbCkpLHRoaXMucmVuZGVy'@; put 'KCl9LGRpc2FibGVkOiExfSx7a2V5OmAke3BtfTpqdXN0aWZ5YCxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShrY2UpfSxjYWxsYmFjaygpe2NvbnN0IG49dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk/P1tdLGU9S3cobiwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8p'@; put 'LmNsYXNzTmFtZSksdD0iaG9yaXpvbnRhbCIscj0iaHRKdXN0aWZ5Ijt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixlLG4sdCxyKSxfXyhuLHQsciwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8pLChpLG8sYSxsKT0+dGhpcy5zZXRDZWxsTWV0YShpLG8sYSxsKSksdGhp'@; put 'cy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtuYW1lOnZzfSx7a2V5OmAke3BtfTp0b3BgLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFJjZSl9LGNhbGxiYWNrKCl7Y29uc3Qgbj10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKT8/W10sZT1LdyhuLChpLG8pPT50aGlzLmdl'@; put 'dENlbGxNZXRhKGksbykuY2xhc3NOYW1lKSx0PSJ2ZXJ0aWNhbCIscj0iaHRUb3AiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLGUsbix0LHIpLF9fKG4sdCxyLChpLG8pPT50aGlzLmdldENlbGxNZXRhKGksbyksKGksbyxhLGwpPT50aGlzLnNldENlbGxNZXRhKGksbyxh'@; put 'LGwpKSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleTpgJHtwbX06bWlkZGxlYCxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShJY2UpfSxjYWxsYmFjaygpe2NvbnN0IG49dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk/P1tdLGU9S3cobiwoaSxvKT0+dGhpcy5n'@; put 'ZXRDZWxsTWV0YShpLG8pLmNsYXNzTmFtZSksdD0idmVydGljYWwiLHI9Imh0TWlkZGxlIjt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixlLG4sdCxyKSxfXyhuLHQsciwoaSxvKT0+dGhpcy5nZXRDZWxsTWV0YShpLG8pLChpLG8sYSxsKT0+dGhpcy5zZXRDZWxsTWV0YShp'@; put 'LG8sYSxsKSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtrZXk6YCR7cG19OmJvdHRvbWAsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoRGNlKX0sY2FsbGJhY2soKXtjb25zdCBuPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpPz9bXSxlPUt3KG4sKGksbyk9PnRo'@; put 'aXMuZ2V0Q2VsbE1ldGEoaSxvKS5jbGFzc05hbWUpLHQ9InZlcnRpY2FsIixyPSJodEJvdHRvbSI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZSxuLHQsciksX18obix0LHIsKGksbyk9PnRoaXMuZ2V0Q2VsbE1ldGEoaSxvKSwoaSxvLGEsbCk9PnRoaXMuc2V0Q2VsbE1l'@; put 'dGEoaSxvLGEsbCkpLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfV19fX19O2Z1bmN0aW9uIFBOZSgpe2NvbnN0IG49e307cmV0dXJuIGFjKEZOZSwoZSx0KT0+e25bdF09ZSgpfSksbn1jbGFzcyBITmV7c2V0UHJlZGVmaW5lZEl0ZW1zKGUpe2NvbnN0IHQ9e307dGhpcy5kZWZhdWx0T3Jk'@; put 'ZXJQYXR0ZXJuLmxlbmd0aD0wLGFjKGUsKHIsaSk9Pntjb25zdCBvPXI7bGV0IGE9IiI7aWYoby5uYW1lPT09dnMpdFt2c109byxhPXZzO2Vsc2UgaWYoaXNOYU4ocGFyc2VJbnQoaSwxMCkpKW8ua2V5PXZvaWQgMD09PW8ua2V5P2k6by5rZXksdFtpXT1vLGE9U3RyaW5nKG8ua2V5Pz8iIik7'@; put 'ZWxzZXtjb25zdCBsPVN0cmluZyhvLmtleT8/IiIpO2lmKHRbbF0pcmV0dXJuIHZvaWQgWWQodFtsXSxvKTt0W2xdPW8sYT1sfXRoaXMuZGVmYXVsdE9yZGVyUGF0dGVybi5wdXNoKGEpfSksdGhpcy5wcmVkZWZpbmVkSXRlbXM9dH1nZXRJdGVtcyhlPW51bGwpe3JldHVybiBmdW5jdGlvbiB2'@; put 'VnQobj1udWxsLGU9W10sdD17fSl7Y29uc3Qgcj1bXTtsZXQgaT1uO3JldHVybiBpJiZpLml0ZW1zP2k9aS5pdGVtczpBcnJheS5pc0FycmF5KGkpfHwoaT1lKSxDYShpKT9hYyhpLChvLGEpPT57bGV0IGw9dFsic3RyaW5nIj09dHlwZW9mIG8/bzphXTtsfHwobD1vKSxDYShvKT9ZZChsLG8p'@; put 'OiJzdHJpbmciPT10eXBlb2YgbCYmKGw9e25hbWU6bH0pLHZvaWQgMD09PWwua2V5JiYobC5rZXk9YSksci5wdXNoKGwpfSk6WG4oaSwobyxhKT0+e2xldCBsPXRbb107IWwmJk5OZS5pbmRleE9mKG8pPj0wfHwobHx8KGw9e25hbWU6byxrZXk6YCR7YX1gfSksQ2EobykmJllkKGwsbyksdm9p'@; put 'ZCAwPT09bC5rZXkmJihsLmtleT1hKSxyLnB1c2gobCkpfSkscn0oZSx0aGlzLmRlZmF1bHRPcmRlclBhdHRlcm4sdGhpcy5wcmVkZWZpbmVkSXRlbXMpfWNvbnN0cnVjdG9yKGUsdD1udWxsKXt0aGlzLnByZWRlZmluZWRJdGVtcz1QTmUoKSx0aGlzLmhvdD1lLHRoaXMuZGVmYXVsdE9yZGVy'@; put 'UGF0dGVybj10fHxbXX19Y2xhc3MgX1Z0e2dldFNvdXJjZVR5cGUoZSl7bGV0IHQ9ImxpdGVyYWwiO3JldHVybiBlIGluc3RhbmNlb2YgRXZlbnQmJih0PSJldmVudCIpLHR9Zml0c0Fib3ZlKGUpe3JldHVybiB0aGlzLnRvcFJlbGF0aXZlPj1lLm9mZnNldEhlaWdodH1maXRzQmVsb3coZSx0'@; put 'PXRoaXMucm9vdFdpbmRvdy5pbm5lckhlaWdodCl7cmV0dXJuIHRoaXMudG9wUmVsYXRpdmUrZS5vZmZzZXRIZWlnaHQ8PXR9Zml0c09uUmlnaHQoZSx0PXRoaXMucm9vdFdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpe3JldHVybiB0aGlzLmxlZnRSZWxhdGl2'@; put 'ZSt0aGlzLmNlbGxXaWR0aCtlLm9mZnNldFdpZHRoPD10fWZpdHNPbkxlZnQoZSl7cmV0dXJuIHRoaXMubGVmdFJlbGF0aXZlPj1lLm9mZnNldFdpZHRofWNvbnN0cnVjdG9yKGUsdCl7Y29uc3Qgcj10LnNjcm9sbFksaT10LnNjcm9sbFg7bGV0IG89MCxhPTAsbD0wLHU9MCxnPTAsRT0wO2lm'@; put 'KHRoaXMucm9vdFdpbmRvdz10LHRoaXMudHlwZT10aGlzLmdldFNvdXJjZVR5cGUoZSksImxpdGVyYWwiPT09dGhpcy50eXBlKXtjb25zdCBPPWU7bz1wYXJzZUludChTdHJpbmcoTy50b3ApLDEwKSxsPXBhcnNlSW50KFN0cmluZyhPLmxlZnQpLDEwKSxnPU8uaGVpZ2h0fHwwLEU9Ty53aWR0'@; put 'aHx8MCxhPW8sdT1sLG8rPXIsbCs9aX1lbHNlIGlmKCJldmVudCI9PT10aGlzLnR5cGUpe2NvbnN0IE89ZTtvPXBhcnNlSW50KFN0cmluZyhPLnBhZ2VZKSwxMCksbD1wYXJzZUludChTdHJpbmcoTy5wYWdlWCksMTApLGc9QWEoTykuY2xpZW50SGVpZ2h0LEU9QWEoTykuY2xpZW50V2lkdGgs'@; put 'YT1vLXIsdT1sLWl9dGhpcy50b3A9byx0aGlzLnRvcFJlbGF0aXZlPWEsdGhpcy5sZWZ0PWwsdGhpcy5sZWZ0UmVsYXRpdmU9dSx0aGlzLnNjcm9sbFRvcD1yLHRoaXMuc2Nyb2xsTGVmdD1pLHRoaXMuY2VsbEhlaWdodD1nLHRoaXMuY2VsbFdpZHRoPUV9fWZ1bmN0aW9uIFZOZShuLGUsdCl7'@; put 'aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBHcyhuLGUpe3JldHVybiBmdW5jdGlvbiBiVnQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2Fs'@; put 'bChuKTplLnZhbHVlfShuLFZOZShuLGUsImdldCIpKX1mdW5jdGlvbiBvTihuLGUsdCl7KGZ1bmN0aW9uIHlWdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0'@; put 'Iil9KShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gUDcobixlLHQpe3JldHVybiBmdW5jdGlvbiB3VnQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZh'@; put 'dGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFZOZShuLGUsInNldCIpLHQpLHR9dmFyIHEyPW5ldyBXZWFrTWFwLFpmPW5ldyBXZWFrTWFwLEdmPW5ldyBXZWFrTWFwLHJHPW5ldyBXZWFrTWFwLFF3PW5ldyBXZWFrTWFwO2NsYXNzIENWdHtzZXRPZmZzZXQoZSx0PTApe3JldHVybiBHcyh0aGlz'@; put 'LFF3KVtlXT10LHRoaXN9c2V0RWxlbWVudChlKXtyZXR1cm4gUDcodGhpcyxxMixlKSx0aGlzfXNldFBhcmVudEVsZW1lbnQoZSl7cmV0dXJuIFA3KHRoaXMsWmYsZSksdGhpc311cGRhdGVQb3NpdGlvbihlKXtQNyh0aGlzLEdmLG5ldyBfVnQoZSxHcyh0aGlzLHEyKS5vd25lckRvY3VtZW50'@; put 'LmRlZmF1bHRWaWV3KSksR3ModGhpcyxyRyk/KEdzKHRoaXMsR2YpLmZpdHNCZWxvdyhHcyh0aGlzLHEyKSk/dGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKCk6R3ModGhpcyxHZikuZml0c0Fib3ZlKEdzKHRoaXMscTIpKT90aGlzLnNldFBvc2l0aW9uQWJvdmVDdXJzb3IoKTp0aGlzLnNl'@; put 'dFBvc2l0aW9uQmVsb3dDdXJzb3IoKSx0aGlzLnVwZGF0ZUhvcml6b250YWxQb3NpdGlvbigpKToodGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKCksdGhpcy5zZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvcigpKX11cGRhdGVIb3Jpem9udGFsUG9zaXRpb24oKXsicnRsIj09PUdzKHRoaXMs'@; put 'cTIpLmRpcj9Hcyh0aGlzLEdmKS5maXRzT25MZWZ0KEdzKHRoaXMscTIpKT90aGlzLnNldFBvc2l0aW9uT25MZWZ0T2ZDdXJzb3IoKTp0aGlzLnNldFBvc2l0aW9uT25SaWdodE9mQ3Vyc29yKCk6R3ModGhpcyxHZikuZml0c09uUmlnaHQoR3ModGhpcyxxMikpP3RoaXMuc2V0UG9zaXRpb25P'@; put 'blJpZ2h0T2ZDdXJzb3IoKTp0aGlzLnNldFBvc2l0aW9uT25MZWZ0T2ZDdXJzb3IoKX1zZXRQb3NpdGlvbkFib3ZlQ3Vyc29yKCl7bGV0IGU9R3ModGhpcyxRdykuYWJvdmUrR3ModGhpcyxHZikudG9wLUdzKHRoaXMscTIpLm9mZnNldEhlaWdodDtpZihHcyh0aGlzLFpmKSl7Y29uc3Qgcj1H'@; put 'cyh0aGlzLFpmKS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoR3ModGhpcyxaZikucXVlcnlTZWxlY3RvcigiLmh0X21hc3RlciIpKSxpPU51bWJlci5wYXJzZUludChyLnBhZGRpbmdUb3AsMTApLG89TnVtYmVyLnBhcnNlSW50KHIuYm9yZGVyVG9wLDEwKTtl'@; put 'PUdzKHRoaXMsR2YpLnRvcCtHcyh0aGlzLEdmKS5jZWxsSGVpZ2h0LUdzKHRoaXMscTIpLnNjcm9sbEhlaWdodCtpK299R3ModGhpcyxxMikuc3R5bGUudG9wPWAke2V9cHhgfXNldFBvc2l0aW9uQmVsb3dDdXJzb3IoKXtsZXQgZT1Hcyh0aGlzLFF3KS5iZWxvdytHcyh0aGlzLEdmKS50b3Ar'@; put 'MTtpZihHcyh0aGlzLFpmKSl7Y29uc3Qgcj1Hcyh0aGlzLFpmKS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoR3ModGhpcyxaZikucXVlcnlTZWxlY3RvcigiLmh0X21hc3RlciIpKSxpPU51bWJlci5wYXJzZUludChyLnBhZGRpbmdUb3AsMTApLG89TnVtYmVy'@; put 'LnBhcnNlSW50KHIuYm9yZGVyVG9wLDEwKTtlPUdzKHRoaXMsR2YpLnRvcC1pLW99R3ModGhpcyxxMikuc3R5bGUudG9wPWAke2V9cHhgfXNldFBvc2l0aW9uT25SaWdodE9mQ3Vyc29yKCl7bGV0IGU9R3ModGhpcyxHZikubGVmdDtpZihHcyh0aGlzLFpmKSl7Y29uc3QgdD1Hcyh0aGlzLFpm'@; put 'KS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHI9TnVtYmVyLnBhcnNlSW50KHQuZ2V0Q29tcHV0ZWRTdHlsZShHcyh0aGlzLFpmKS5xdWVyeVNlbGVjdG9yKCIuaHRDb3JlIikpLmJvcmRlclJpZ2h0V2lkdGgsMTApO2UrPUdzKHRoaXMsR2YpLmNlbGxXaWR0aCtyfWVsc2UgZSs9R3ModGhp'@; put 'cyxRdykucmlnaHQ7R3ModGhpcyxxMikuc3R5bGUubGVmdD1gJHtlfXB4YH1zZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yKCl7bGV0IGU9R3ModGhpcyxRdykubGVmdCtHcyh0aGlzLEdmKS5sZWZ0LUdzKHRoaXMscTIpLm9mZnNldFdpZHRoO2lmKEdzKHRoaXMsWmYpKXtjb25zdCB0PUdzKHRo'@; put 'aXMsWmYpLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7ZS09TnVtYmVyLnBhcnNlSW50KHQuZ2V0Q29tcHV0ZWRTdHlsZShHcyh0aGlzLFpmKS5xdWVyeVNlbGVjdG9yKCIuaHRDb3JlIikpLmJvcmRlckxlZnRXaWR0aCwxMCl9R3ModGhpcyxxMikuc3R5bGUubGVmdD1gJHtlfXB4YH1jb25z'@; put 'dHJ1Y3RvcihlKXtvTih0aGlzLHEyLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxvTih0aGlzLFpmLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxvTih0aGlzLEdmLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxvTih0aGlzLHJHLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9'@; put 'KSxvTih0aGlzLFF3LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQNyh0aGlzLHEyLG51bGwpLFA3KHRoaXMsWmYsbnVsbCksUDcodGhpcyxHZixudWxsKSxQNyh0aGlzLHJHLCExKSxQNyh0aGlzLFF3LHthYm92ZTowLGJlbG93OjAsbGVmdDowLHJpZ2h0OjB9KSxQNyh0aGlzLHJHLGUp'@; put 'fX1mdW5jdGlvbiBCTmUoe2luaXRpYWxQYWdlOm49LTEsc2l6ZTplPSgpPT4wLG9uSXRlbVNlbGVjdDp0PSgpPT57fSxvbkNsZWFyOnI9KCk9Pnt9fSl7Y29uc3QgaT1uZXcgU2V0O2xldCBvPVZzKG4sLTEsdmUoKS0xKTtmdW5jdGlvbiBhKEhlLFdlKXtjb25zdCBhdD12ZSgpLTE7cmV0dXJu'@; put 'IEhlPDAmJihIZT1hdCksSGU+YXQmJihIZT0wKSxpLmhhcyhIZSk/LTE6KGkuYWRkKEhlKSwhMT09PXQoSGUsITEpJiYoSGU9YSgxPT09V2U/KytIZTotLUhlLFdlKSksSGUpfWZ1bmN0aW9uIHZlKCl7cmV0dXJuIE1hdGgubWF4KGUoKSwwKX1yZXR1cm57c2V0Q3VycmVudFBhZ2U6ZnVuY3Rp'@; put 'b24gbChIZSl7SGU+LTEmJkhlPHZlKCkmJiExIT09dChIZSwhMCkmJihvPUhlKX0sc2V0UGFnZUN1cnNvckF0OmZ1bmN0aW9uIHUoSGUpe0hlPi0xJiZIZTx2ZSgpJiYobz1IZSl9LGdldEN1cnJlbnRQYWdlOmZ1bmN0aW9uIGcoKXtyZXR1cm4gb30sdG9GaXJzdEl0ZW06ZnVuY3Rpb24gRSgp'@; put 'e3ZlKCk+MCYmKGkuY2xlYXIoKSxvPWEoMCwxKSl9LHRvTGFzdEl0ZW06ZnVuY3Rpb24gTygpe3ZlKCk+MCYmKGkuY2xlYXIoKSxvPWEodmUoKS0xLC0xKSl9LHRvTmV4dEl0ZW06ZnVuY3Rpb24gWigpe3ZlKCk+MCYmKGkuY2xlYXIoKSxvPWEoKytvLDEpKX0sdG9QcmV2aW91c0l0ZW06ZnVu'@; put 'Y3Rpb24gZWUoKXt2ZSgpPjAmJihpLmNsZWFyKCksbz1hKC0tbywtMSkpfSxnZXRTaXplOnZlLGNsZWFyOmZ1bmN0aW9uIE1lKCl7aS5jbGVhcigpLG89bixyKCl9fX1mdW5jdGlvbiBFMWUobil7cmV0dXJuIFJkKG4sInN1Ym1lbnUiKX1mdW5jdGlvbiBNMWUobil7cmV0dXJuIG5ldyBSZWdF'@; put 'eHAodnMsImkiKS50ZXN0KG4ubmFtZT8/IiIpfWZ1bmN0aW9uIGlHKG4sZSl7cmV0dXJuITA9PT1uLmRpc2FibGVkfHwiZnVuY3Rpb24iPT10eXBlb2Ygbi5kaXNhYmxlZCYmITA9PT1uLmRpc2FibGVkLmNhbGwoZSl9ZnVuY3Rpb24gak5lKG4pe3JldHVybiBSZChuLCJkaXNhYmxlU2VsZWN0'@; put 'aW9uIil9ZnVuY3Rpb24gVU5lKG4sZSl7Y29uc3QgdD1uLnNsaWNlKDApO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGgmJnRbcl0ubmFtZT09PWU7KXQuc2hpZnQoKTtyZXR1cm4gdH1mdW5jdGlvbiBEVnQobil7cmV0dXJuITA9PT1uLmNoZWNrYWJsZX1mdW5jdGlvbiBGVnQobil7cmV0dXJuKGUs'@; put 'dCxyLGksbyxhLGwpPT57Y29uc3QgdT1lLmdldFNvdXJjZURhdGFBdFJvdyhyKSxnPW4ucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLEU9ImZ1bmN0aW9uIj09dHlwZW9mIGE/YS5jYWxsKG4pOmEsTz0iZnVuY3Rpb24iPT10eXBlb2YgdS5hcmlhTGFiZWw/dS5hcmlhTGFiZWwu'@; put 'Y2FsbChuKTp1LmFyaWFMYWJlbCxaPSJmdW5jdGlvbiI9PXR5cGVvZiB1LmFyaWFDaGVja2VkP3UuYXJpYUNoZWNrZWQuY2FsbChuKTp1LmFyaWFDaGVja2VkO2lmKGwucmVhZE9ubHlDZWxsQ2xhc3NOYW1lPSIiLEM0KHQpLFlyKGcsImh0SXRlbVdyYXBwZXIiKSxuLmdldFNldHRpbmdzKCku'@; put 'YXJpYVRhZ3Mpe2NvbnN0IGVlPSFpRyh1LG4pJiYhak5lKHUpJiYhTTFlKHUpO0tvKHQsWy4uLkRWdCh1KT9bWyJyb2xlIiwibWVudWl0ZW1jaGVja2JveCJdLE4zKE8pLHl4ZShaKV06W1sicm9sZSIsIm1lbnVpdGVtIl0sTjMoRSldLC4uLmVlP1tiNCgtMSldOltdLC4uLmlHKHUsbik/W3RM'@; put 'KCldOltdLC4uLkUxZSh1KT9bYW0oITEpXTpbXV0pfWlmKHQuY2xhc3NOYW1lPSIiLHQuYXBwZW5kQ2hpbGQoZyksTTFlKHUpKVlyKHQsImh0U2VwYXJhdG9yIik7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgdS5yZW5kZXJlcilZcih0LCJodEN1c3RvbU1lbnVSZW5kZXJlciIpLHQuYXBw'@; put 'ZW5kQ2hpbGQodS5yZW5kZXJlcihlLGcscixpLG8sRSkpO2Vsc2V7Y29uc3QgZWU9bi5nZXRTZXR0aW5ncygpLnNhbml0aXplcjtfNyhnLFN0cmluZyhFKSxlZSwiY29udGV4dE1lbnUiLG4ucm9vdEVsZW1lbnQpfWlHKHUsbik/WXIodCwiaHREaXNhYmxlZCIpOmpOZSh1KT9Zcih0LCJodFNl'@; put 'bGVjdGlvbkRpc2FibGVkIik6RTFlKHUpJiZZcih0LCJodFN1Ym1lbnUiKX19ZnVuY3Rpb24gV05lKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5j'@; put 'dGlvbiBZTmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gSncobixlKXtyZXR1cm4gZnVuY3Rpb24gUFZ0KG4sZSl7cmV0dXJu'@; put 'IGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixZTmUobixlLCJnZXQiKSl9ZnVuY3Rpb24geDFlKG4sZSx0KXtXTmUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIGFOKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gSFZ0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtp'@; put 'ZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixZTmUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIG9HKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigi'@; put 'YXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fXZhciBaVD1uZXcgV2Vha01hcCxzTj1uZXcgV2Vha01hcCxhRz1uZXcgV2Vha01hcCxsTj1uZXcgV2Vha1NldDtjbGFzcyBHVHtnZXQgdGFibGVCb3JkZXJXaWR0aCgpe3JldHVybiB2b2lk'@; put 'IDA9PT1Kdyh0aGlzLGFHKSYmdGhpcy5ob3RNZW51JiZhTih0aGlzLGFHLHBhcnNlSW50KHRoaXMuaG90TWVudS5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5ob3RNZW51LnZpZXcuX3d0Lnd0VGFibGUuVEFCTEUpLmJvcmRlcldpZHRoLDEwKSksSncodGhpcyxhRyl9cmVnaXN0'@; put 'ZXJFdmVudHMoKXtsZXQgZT10aGlzLmhvdC5yb290V2luZG93O2Zvcig7ZTspdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihlLmRvY3VtZW50LCJtb3VzZWRvd24iLHQ9PnRoaXMub25Eb2N1bWVudE1vdXNlRG93bih0KSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0'@; put 'ZW5lcihlLmRvY3VtZW50LCJ0b3VjaHN0YXJ0Iix0PT50aGlzLm9uRG9jdW1lbnRNb3VzZURvd24odCkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZS5kb2N1bWVudCwiY29udGV4dG1lbnUiLHQ9PnRoaXMub25Eb2N1bWVudENvbnRleHRNZW51KHQpKSxlPXY3KGUpfXNl'@; put 'dE1lbnVJdGVtcyhlKXt0aGlzLm1lbnVJdGVtcz1lfWdldE5hdmlnYXRvcigpe3JldHVybiBKdyh0aGlzLFpUKX1nZXRLZXlib2FyZFNob3J0Y3V0c0N0cmwoKXtyZXR1cm4gSncodGhpcyxzTil9Z2V0U2VsZWN0ZWRJdGVtKCl7aWYoIXRoaXMuaGFzU2VsZWN0ZWRJdGVtKCkpcmV0dXJuIG51'@; put 'bGw7Y29uc3QgZT10aGlzLmhvdE1lbnUuZ2V0U2VsZWN0ZWRBY3RpdmUoKVswXTtyZXR1cm4gb0codGhpcyxsTixzRykuY2FsbCh0aGlzLGUpfWdldEl0ZW1Qb3NpdGlvbkJ5S2V5KGUpe3JldHVybih0aGlzLmhvdE1lbnU/LmdldFNvdXJjZURhdGEoKT8/dGhpcy5tZW51SXRlbXM/P1tdKS5m'@; put 'aW5kSW5kZXgocj0+ci5rZXk9PT1lKX1oYXNTZWxlY3RlZEl0ZW0oKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmhvdE1lbnUuZ2V0U2VsZWN0ZWRBY3RpdmUoKSl9aXNTdWJNZW51KCl7cmV0dXJuIG51bGwhPT10aGlzLnBhcmVudE1lbnV9b3Blbigpe3RoaXMucnVuTG9jYWxIb29rcygi'@; put 'YmVmb3JlT3BlbiIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSx0aGlzLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJibG9jayI7Y29uc3QgZT1CTSgoLi4ubCk9PnRoaXMub3BlblN1Yk1lbnUobFswXSksMzAwKSx0PU51bWJlcih0aGlzLm9wdGlvbnMubWluV2lk'@; put 'dGgpfHwyMTU7bGV0IHI9ITEsaT1Idih0aGlzLm1lbnVJdGVtcyxsPT4obC5rZXk9PT1pTiYmKHI9ITApLGZ1bmN0aW9uIEFWdChuLGUpe3JldHVybiFuLmhpZGRlbnx8ISgiZnVuY3Rpb24iPT10eXBlb2Ygbi5oaWRkZW4mJm4uaGlkZGVuLmNhbGwoZSkpfShsLHRoaXMuaG90KSkpO2lmKGku'@; put 'bGVuZ3RoPDEmJiFyKWkucHVzaChQTmUoKVtpTl0pO2Vsc2UgaWYoMD09PWkubGVuZ3RoKXJldHVybjtpPWZ1bmN0aW9uIElWdChuLGU9dnMpe2xldCB0PW4uc2xpY2UoMCk7cmV0dXJuIHQ9VU5lKHQsZSksdD1mdW5jdGlvbiBrVnQobixlKXtsZXQgdD1uLnNsaWNlKDApO3JldHVybiB0LnJl'@; put 'dmVyc2UoKSx0PVVOZSh0LGUpLHQucmV2ZXJzZSgpLHR9KHQsZSksdD1mdW5jdGlvbiBSVnQobil7Y29uc3QgZT1bXTtyZXR1cm4gWG4obiwodCxyKT0+e2NvbnN0IGk9dDtyPjA/ZVtlLmxlbmd0aC0xXS5uYW1lIT09aS5uYW1lJiZlLnB1c2goaSk6ZS5wdXNoKGkpfSksZX0odCksdH0oaSk7'@; put 'bGV0IG89ITE7Y29uc3QgYT17ZGF0YTppLGNvbEhlYWRlcnM6ITEsYXV0b0NvbHVtblNpemU6ITAsYXV0b1dyYXBSb3c6ITEsbW9kaWZ5Q29sV2lkdGg6bD0+Wm8obCkmJmw8dD90OmwsYXV0b1Jvd1NpemU6ITEscmVhZE9ubHk6ITAsZWRpdG9yOiExLGNvcHlQYXN0ZTohMSxoaWRkZW5Sb3dz'@; put 'OiEwLG1heENvbHM6MSxjb2x1bW5zOlt7ZGF0YToibmFtZSIscmVuZGVyZXI6RlZ0KHRoaXMuaG90KX1dLHJlbmRlckFsbFJvd3M6ITAsZnJhZ21lbnRTZWxlY3Rpb246ITEsb3V0c2lkZUNsaWNrRGVzZWxlY3RzOiExLGRpc2FibGVWaXN1YWxTZWxlY3Rpb246ImFyZWEiLGxheW91dERpcmVj'@; put 'dGlvbjp0aGlzLmhvdC5pc1J0bCgpPyJydGwiOiJsdHIiLGFyaWFUYWdzOiExLHRoZW1lTmFtZTp0aGlzLmhvdC5nZXRDdXJyZW50VGhlbWVOYW1lKCksbW9kaWZ5Um93SGVpZ2h0OihsLHUpPT57Y29uc3QgZz1vRyh0aGlzLGxOLHNHKS5jYWxsKHRoaXMsdSk7cmV0dXJuIGcmJmcubmFtZT09'@; put 'PXZzPzE6bH0sYmVmb3JlUmVmcmVzaERpbWVuc2lvbnM6KCk9PiExLGJlZm9yZU9uQ2VsbE1vdXNlT3ZlcjoobCx1KT0+e0p3KHRoaXMsWlQpLnNldFBhZ2VDdXJzb3JBdCh1LnJvdyl9LGFmdGVyT25DZWxsTW91c2VPdmVyOihsLHUpPT57dGhpcy5pc0FsbFN1Yk1lbnVzQ2xvc2VkKCk/ZSh1'@; put 'LnJvdyk6dGhpcy5vcGVuU3ViTWVudSh1LnJvdyl9LGFmdGVyT25DZWxsQ29udGV4dE1lbnU6bD0+e2wucHJldmVudERlZmF1bHQoKSxIVygpJiZvJiZ0aGlzLmhhc1NlbGVjdGVkSXRlbSgpJiZ0aGlzLmNsb3NlKCEwKX0sYWZ0ZXJTZWxlY3Rpb246KGwsdSxnLEUsTyk9Pnt0aGlzLmhvdE1l'@; put 'bnUudmlldy5pc01vdXNlRG93bigpJiYoTy52YWx1ZT0hMCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNlbGVjdGlvbkNoYW5nZSIsdGhpcy5nZXRTZWxlY3RlZEl0ZW0oKSl9LGJlZm9yZU9uQ2VsbE1vdXNlVXA6bD0+e3RoaXMuaGFzU2VsZWN0ZWRJdGVtKCkmJihvPSF0aGlzLmlzQ29t'@; put 'bWFuZFBhc3NpdmUodGhpcy5nZXRTZWxlY3RlZEl0ZW0oKSksdGhpcy5leGVjdXRlQ29tbWFuZChsKSl9LGFmdGVyT25DZWxsTW91c2VVcDpsPT57KCFIVygpfHwhenYobCkpJiZvJiZ0aGlzLmhhc1NlbGVjdGVkSXRlbSgpJiYoUTUoKXx8UFcoKT90aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0'@; put 'KCgpPT50aGlzLmNsb3NlKCEwKSwzMjUpOnRoaXMuY2xvc2UoITApKX0sYWZ0ZXJVbmxpc3RlbjooKT0+eyF0aGlzLmhhc1NlbGVjdGVkSXRlbSgpJiZ0aGlzLmlzT3BlbmVkKCkmJnRoaXMuaG90TWVudS5saXN0ZW4oKX19O3RoaXMub3JpZ091dHNpZGVDbGlja0Rlc2VsZWN0cz10aGlzLmhv'@; put 'dC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cyx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cz0hMSx0aGlzLmhvdE1lbnU9bmV3IHRoaXMuaG90LmNvbnN0cnVjdG9yKHRoaXMuY29udGFpbmVyLGEpLHRoaXMuaG90TWVudS5hZGRIb29rKCJh'@; put 'ZnRlckluaXQiLCgpPT50aGlzLm9uQWZ0ZXJJbml0KCkpLHRoaXMuaG90TWVudS5pbml0KCksYU4odGhpcyxaVCxmdW5jdGlvbiBMVnQobil7cmV0dXJuIEJOZSh7c2l6ZTooKT0+bi5jb3VudFJvd3MoKSxvbkl0ZW1TZWxlY3QoZSx0KXtjb25zdCByPW4uZ2V0Q2VsbChlLDApO2lmKCFyfHxm'@; put 'dW5jdGlvbiBFVnQobil7cmV0dXJuIExhKG4sImh0U2VwYXJhdG9yIil9KHIpfHxmdW5jdGlvbiBUVnQobil7cmV0dXJuIExhKG4sImh0RGlzYWJsZWQiKX0ocil8fGZ1bmN0aW9uIHhWdChuKXtyZXR1cm4gTGEobiwiaHRTZWxlY3Rpb25EaXNhYmxlZCIpfShyKSlyZXR1cm4hMTtuLnNlbGVj'@; put 'dENlbGwoZSwwLC4uLnQ/W2UsMCwhMSwhMV06W10pfSxvbkNsZWFyKCl7bi5kZXNlbGVjdENlbGwoKX19KX0odGhpcy5ob3RNZW51KSksYU4odGhpcyxzTixmdW5jdGlvbiBOVnQobixlPVtdKXtjb25zdCB0PVtdO2Z1bmN0aW9uIHIoZyxFKXtsKEUpLmFkZFNob3J0Y3V0cyhnLHtncm91cDoi'@; put 'bWVudSJ9KX1mdW5jdGlvbiBpKGcsRSl7Y29uc3QgTz1sKEUpO2cuZm9yRWFjaCgoe2tleXM6Wn0pPT57Wi5mb3JFYWNoKGVlPT5PLnJlbW92ZVNob3J0Y3V0c0J5S2V5cyhlZSkpfSksdC5wdXNoKHtzaG9ydGN1dHM6Zyxjb250ZXh0TmFtZTpFPz8ibWVudSJ9KSxyKGcsRSl9ZnVuY3Rpb24g'@; put 'YShnKXtyZXR1cm4gZz9gbWVudToke2d9YDoibWVudSJ9ZnVuY3Rpb24gbChnKXtjb25zdCBFPW4uaG90TWVudS5nZXRTaG9ydGN1dE1hbmFnZXIoKSxPPWEoZyk7cmV0dXJuIEUuZ2V0Q29udGV4dChPKT8/RS5hZGRDb250ZXh0KE8pfXJldHVybiByKGZ1bmN0aW9uIE9WdChuKXtjb25zdCBl'@; put 'PW4uaG90LHQ9bi5ob3RNZW51LHI9ZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIik7cmV0dXJuW3trZXlzOltbIkNvbnRyb2wvTWV0YSIsIkEiXV0sLi4ucj97Zm9yd2FyZFRvQ29udGV4dDpyfTp7fSxjYWxsYmFjazooKT0+bi5jbG9zZSghMCl9LHtrZXlzOltbIlRh'@; put 'YiJdLFsiU2hpZnQiLCJUYWIiXV0sY2FsbGJhY2s6KGksbyk9Pntjb25zdCBhPWUuZ2V0U2V0dGluZ3MoKSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBhLnRhYk1vdmVzP2EudGFiTW92ZXMoaSk6YS50YWJNb3ZlcztsJiYobz8uaW5jbHVkZXMoInNoaWZ0Iik/ZS5zZWxlY3Rpb24udHJhbnNmb3Jt'@; put 'U3RhcnQoLWwucm93LC1sLmNvbCk6ZS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQobC5yb3csbC5jb2wpKSxuLmNsb3NlKCEwKX19LHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazooKT0+bi5jbG9zZSgpfSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6KCk9Pm4uZ2V0TmF2aWdh'@; put 'dG9yKCk/LnRvTmV4dEl0ZW0oKX0se2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazooKT0+bi5nZXROYXZpZ2F0b3IoKT8udG9QcmV2aW91c0l0ZW0oKX0se2tleXM6W1tlLmlzUnRsKCk/IkFycm93TGVmdCI6IkFycm93UmlnaHQiXV0sY2FsbGJhY2s6KCk9Pntjb25zdCBpPXQ/LmdldFNl'@; put 'bGVjdGVkQWN0aXZlKCk7aWYoaSl7Y29uc3Qgbz1uLm9wZW5TdWJNZW51KGlbMF0pO28mJm8uZ2V0TmF2aWdhdG9yKCk/LnRvRmlyc3RJdGVtKCl9fX0se2tleXM6W1tlLmlzUnRsKCk/IkFycm93UmlnaHQiOiJBcnJvd0xlZnQiXV0sY2FsbGJhY2s6KCk9Pnt0Py5nZXRTZWxlY3RlZEFjdGl2'@; put 'ZSgpJiZuLmlzU3ViTWVudSgpJiYobi5jbG9zZSgpLG4uaXNTdWJNZW51KCkmJm4ucGFyZW50TWVudT8uaG90TWVudT8ubGlzdGVuKCkpfX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiQXJyb3dVcCJdLFsiSG9tZSJdXSxjYWxsYmFjazooKT0+bi5nZXROYXZpZ2F0b3IoKT8udG9GaXJzdEl0'@; put 'ZW0oKX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiQXJyb3dEb3duIl0sWyJFbmQiXV0sY2FsbGJhY2s6KCk9Pm4uZ2V0TmF2aWdhdG9yKCk/LnRvTGFzdEl0ZW0oKX0se2tleXM6W1siRW50ZXIiXSxbIlNwYWNlIl1dLGNhbGxiYWNrOmk9Pntjb25zdCBvPXQ/LmdldFNlbGVjdGVkQWN0aXZl'@; put 'KCk7aWYobylpZih0Py5nZXRTb3VyY2VEYXRhQXRSb3cob1swXSk/LnN1Ym1lbnUpe2NvbnN0IGE9bi5vcGVuU3ViTWVudShvWzBdKTthJiZhLmdldE5hdmlnYXRvcigpPy50b0ZpcnN0SXRlbSgpfWVsc2Ugbi5leGVjdXRlQ29tbWFuZChpKSxuLmNsb3NlKCEwKX19LHtrZXlzOltbIlBhZ2VV'@; put 'cCJdXSxjYWxsYmFjazooKT0+e3Q/LmdldFNlbGVjdGVkQWN0aXZlKCk/dD8uc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC10LmNvdW50VmlzaWJsZVJvd3MoKSwwKTpuLmdldE5hdmlnYXRvcigpPy50b0ZpcnN0SXRlbSgpfX0se2tleXM6W1siUGFnZURvd24iXV0sY2FsbGJhY2s6KCk9Pnt0'@; put 'Py5nZXRTZWxlY3RlZEFjdGl2ZSgpP3Q/LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCh0LmNvdW50VmlzaWJsZVJvd3MoKSwwKTpuLmdldE5hdmlnYXRvcigpPy50b0xhc3RJdGVtKCl9fV19KG4pKSxlLmZvckVhY2goKHtzaG9ydGN1dHM6Zyxjb250ZXh0TmFtZTpFfSk9PntpKGcsRSl9KSx7'@; put 'YWRkQ3VzdG9tU2hvcnRjdXRzOmksZ2V0Q3VzdG9tU2hvcnRjdXRzOmZ1bmN0aW9uIG8oKXtyZXR1cm5bLi4udF19LGdldENvbnRleHQ6bCxsaXN0ZW46ZnVuY3Rpb24gdShnKXtuLmhvdE1lbnUuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoYShnKSl9fX0odGhp'@; put 'cykpLEp3KHRoaXMsc04pLmxpc3RlbigpLHRoaXMuZm9jdXMoKSx0aGlzLmlzU3ViTWVudSgpJiZ0aGlzLmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIiwoKT0+dGhpcy5wYXJlbnRNZW51LnJ1bkxvY2FsSG9va3MoImFmdGVyU3VibWVudU9wZW4iLHRoaXMpKSx0aGlzLnJ1bkxvY2FsSG9va3Mo'@; put 'ImFmdGVyT3BlbiIsdGhpcyl9Y2xvc2UoZT0hMSl7aWYodGhpcy5pc09wZW5lZCgpKWlmKGUmJnRoaXMuaXNTdWJNZW51KCkpdGhpcy5wYXJlbnRNZW51LmNsb3NlKCk7ZWxzZSBpZihKdyh0aGlzLFpUKS5jbGVhcigpLHRoaXMuY2xvc2VBbGxTdWJNZW51cygpLHRoaXMuY29udGFpbmVyLnN0'@; put 'eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuaG90TWVudS5kZXN0cm95KCksdGhpcy5ob3RNZW51PW51bGwsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM9dGhpcy5vcmlnT3V0c2lkZUNsaWNrRGVzZWxlY3RzLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJDbG9z'@; put 'ZSIpLHRoaXMuaXNTdWJNZW51KCkpe2lmKHRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3Mpe2NvbnN0IHQ9dGhpcy5wYXJlbnRNZW51LmhvdE1lbnUuZ2V0U2VsZWN0ZWRBY3RpdmUoKTtpZih0KXtjb25zdCByPXRoaXMucGFyZW50TWVudS5ob3RNZW51LmdldENlbGwodFswXSwwKTty'@; put 'JiZLbyhyLFthbSghMSldKX19dGhpcy5wYXJlbnRNZW51LmhvdE1lbnUubGlzdGVuKCl9fW9wZW5TdWJNZW51KGUpe2lmKCF0aGlzLmhvdE1lbnUpcmV0dXJuITE7Y29uc3QgdD10aGlzLmhvdE1lbnUuZ2V0Q2VsbChlLDApO2lmKHRoaXMuY2xvc2VBbGxTdWJNZW51cygpLCF0fHwhZnVuY3Rp'@; put 'b24gTVZ0KG4pe3JldHVybiBMYShuLCJodFN1Ym1lbnUiKX0odCkpcmV0dXJuITE7Y29uc3Qgcj1vRyh0aGlzLGxOLHNHKS5jYWxsKHRoaXMsZSksaT1uZXcgR1QodGhpcy5ob3Qse3BhcmVudDp0aGlzLG5hbWU6ImZ1bmN0aW9uIj09dHlwZW9mIHIubmFtZT9yLm5hbWUuY2FsbCh0aGlzLmhv'@; put 'dCk6ci5uYW1lLGNsYXNzTmFtZTp0aGlzLm9wdGlvbnMuY2xhc3NOYW1lLGtlZXBJblZpZXdwb3J0OiEwLGNvbnRhaW5lcjp0aGlzLm9wdGlvbnMuY29udGFpbmVyfSk7cmV0dXJuIGkuc2V0TWVudUl0ZW1zKHIuc3VibWVudS5pdGVtcyksaS5vcGVuKCksaS5zZXRQb3NpdGlvbih0LmdldEJv'@; put 'dW5kaW5nQ2xpZW50UmVjdCgpKSx0aGlzLmhvdFN1Yk1lbnVzW3Iua2V5XT1pLHRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3MmJktvKHQsW2FtKCEwKV0pLGl9Y2xvc2VTdWJNZW51KGUpe2NvbnN0IHQ9b0codGhpcyxsTixzRykuY2FsbCh0aGlzLGUpLHI9dGhpcy5ob3RTdWJNZW51'@; put 'c1t0LmtleV07aWYocil7ci5kZXN0cm95KCksZGVsZXRlIHRoaXMuaG90U3ViTWVudXNbdC5rZXldO2NvbnN0IGk9dGhpcy5ob3RNZW51LmdldENlbGwoZSwwKTtpJiZ0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzJiZLbyhpLFthbSghMSldKX19Y2xvc2VBbGxTdWJNZW51cygpe1hu'@; put 'KHRoaXMuaG90TWVudS5nZXREYXRhKCksKGUsdCk9PnRoaXMuY2xvc2VTdWJNZW51KHQpKX1pc0FsbFN1Yk1lbnVzQ2xvc2VkKCl7cmV0dXJuIDA9PT1PYmplY3Qua2V5cyh0aGlzLmhvdFN1Yk1lbnVzKS5sZW5ndGh9Zm9jdXMoKXt0aGlzLmlzT3BlbmVkKCkmJih0aGlzLmhvdE1lbnUucm9v'@; put 'dEVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSx0aGlzLmdldEtleWJvYXJkU2hvcnRjdXRzQ3RybCgpLmxpc3RlbigpLHRoaXMuaG90TWVudS5saXN0ZW4oKSl9ZGVzdHJveSgpe2NvbnN0IGU9dGhpcy5jb250YWluZXIucGFyZW50Tm9kZTt0aGlzLmNsZWFyTG9jYWxIb29rcygp'@; put 'LHRoaXMuY2xvc2UoKSx0aGlzLnBhcmVudE1lbnU9bnVsbCx0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCksZSYmZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lcil9aXNPcGVuZWQoKXtyZXR1cm4gbnVsbCE9PXRoaXMuaG90TWVudX1leGVjdXRlQ29tbWFuZChlKXtpZighdGhpcy5pc09w'@; put 'ZW5lZCgpfHwhdGhpcy5oYXNTZWxlY3RlZEl0ZW0oKSlyZXR1cm47Y29uc3QgdD10aGlzLmdldFNlbGVjdGVkSXRlbSgpO2lmKHRoaXMucnVuTG9jYWxIb29rcygic2VsZWN0Iix0LGUpLHRoaXMuaXNDb21tYW5kUGFzc2l2ZSh0KSlyZXR1cm47Y29uc3Qgcj10aGlzLmhvdC5nZXRTZWxlY3Rl'@; put 'ZFJhbmdlKCksaT1yP2Z1bmN0aW9uIFNWdChuKXtyZXR1cm4gX2MobixlPT4oe3N0YXJ0OmUuZ2V0VG9wU3RhcnRDb3JuZXIoKSxlbmQ6ZS5nZXRCb3R0b21FbmRDb3JuZXIoKX0pKX0ocik6W107dGhpcy5ydW5Mb2NhbEhvb2tzKCJleGVjdXRlQ29tbWFuZCIsdC5rZXksaSxlKSx0aGlzLmlz'@; put 'U3ViTWVudSgpJiZ0aGlzLnBhcmVudE1lbnUucnVuTG9jYWxIb29rcygiZXhlY3V0ZUNvbW1hbmQiLHQua2V5LGksZSl9aXNDb21tYW5kUGFzc2l2ZShlKXtyZXR1cm4hMT09PWUuaXNDb21tYW5kfHxNMWUoZSl8fGlHKGUsdGhpcy5ob3QpfHxFMWUoZSl9c2V0T2Zmc2V0KGUsdD0wKXt0aGlz'@; put 'LnBvc2l0aW9uZXIuc2V0T2Zmc2V0KGUsdCl9c2V0UG9zaXRpb24oZSl7dGhpcy5pc1N1Yk1lbnUoKSYmdGhpcy5wb3NpdGlvbmVyLnNldFBhcmVudEVsZW1lbnQodGhpcy5wYXJlbnRNZW51LmNvbnRhaW5lciksdGhpcy5wb3NpdGlvbmVyLnNldEVsZW1lbnQodGhpcy5jb250YWluZXIpLnVw'@; put 'ZGF0ZVBvc2l0aW9uKGUpfXVwZGF0ZU1lbnVEaW1lbnNpb25zKCl7Y29uc3R7d3RUYWJsZTplfT10aGlzLmhvdE1lbnUudmlldy5fd3QsdD10aGlzLmhvdE1lbnUuZ2V0U2V0dGluZ3MoKS5kYXRhLHI9ZS5oaWRlci5zdHlsZSxpPWUuaG9sZGVyLnN0eWxlLG89cGFyc2VJbnQoci53aWR0aCwx'@; put 'MCksYT1tMSh0Pz9bXSwobCx1LGcpPT57Y29uc3QgRT10aGlzLmhvdE1lbnUuZ2V0Q2VsbChnLDApLE89RT9IaChFKTowLFo9ZnVuY3Rpb24gQlZ0KG4pe3JldHVybiJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4mJiJuYW1lImluIG59KHUpJiZ1Lm5hbWU9PT12cztyZXR1cm4gbCsoWj8x'@; put 'Ok8pfSwwKTtpLndpZHRoPWAke299cHhgLGkuaGVpZ2h0PWAke2F9cHhgLHIuaGVpZ2h0PWkuaGVpZ2h0fWNyZWF0ZUNvbnRhaW5lcihlPW51bGwpe2NvbnN0IHQ9dGhpcy5vcHRpb25zLmNvbnRhaW5lcixyPXQub3duZXJEb2N1bWVudDtsZXQgaT1lLG89bnVsbDtyZXR1cm4gaSYmKGk9aS5y'@; put 'ZXBsYWNlKC9bXkEtWmEtejAtOV0vZywiXyIpLGk9YCR7dGhpcy5vcHRpb25zLmNsYXNzTmFtZX1TdWJfJHtpfWAsbz1yLnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMub3B0aW9ucy5jbGFzc05hbWV9LiR7aX1gKSksb3x8KG89ci5jcmVhdGVFbGVtZW50KCJkaXYiKSxZcihvLGBodE1lbnUgaGFu'@; put 'ZHNvbnRhYmxlICR7dGhpcy5vcHRpb25zLmNsYXNzTmFtZX1gKSxpJiZZcihvLGkpLHQuYXBwZW5kQ2hpbGQobykpLG99b25BZnRlckluaXQoKXt0aGlzLnVwZGF0ZU1lbnVEaW1lbnNpb25zKCksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmS28odGhpcy5ob3RNZW51LnJvb3RF'@; put 'bGVtZW50LFtbInJvbGUiLCJtZW51Il0sYjQoLTEpXSl9b25Eb2N1bWVudE1vdXNlRG93bihlKXt0aGlzLmlzT3BlbmVkKCkmJih0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSYmdGhpcy5ob3RNZW51JiYhQnYoQWEoZSksdGhpcy5ob3RNZW51LnJvb3RFbGVtZW50KXx8KHRoaXMuaXNBbGxTdWJN'@; put 'ZW51c0Nsb3NlZCgpfHx0aGlzLmlzU3ViTWVudSgpKSYmIUJ2KEFhKGUpLCIuaHRNZW51IikpJiZ0aGlzLmNsb3NlKCEwKX1vbkRvY3VtZW50Q29udGV4dE1lbnUoZSl7dGhpcy5pc09wZW5lZCgpJiZMYShBYShlKSwiaHRDb3JlIikmJkJ2KEFhKGUpLHRoaXMuaG90TWVudS5yb290RWxlbWVu'@; put 'dCkmJmUucHJldmVudERlZmF1bHQoKX1jb25zdHJ1Y3RvcihlLHQpeyhmdW5jdGlvbiBWVnQobixlKXtXTmUobixlKSxlLmFkZChuKX0pKHRoaXMsbE4pLHgxZSh0aGlzLFpULHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx4MWUodGhpcyxzTix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAw'@; put 'fSkseDFlKHRoaXMsYUcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuaG90TWVudT1udWxsLHRoaXMuaG90U3ViTWVudXM9e30sdGhpcy5tZW51SXRlbXM9bnVsbCx0aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHM9dm9pZCAwLGFOKHRoaXMsWlQsbnVsbCksYU4odGhpcyxz'@; put 'TixudWxsKSx0aGlzLmhvdD1lLHRoaXMub3B0aW9ucz17cGFyZW50Om51bGwsbmFtZTpudWxsLGNsYXNzTmFtZToiIixrZWVwSW5WaWV3cG9ydDohMCxzdGFuZGFsb25lOiExLG1pbldpZHRoOjIxNSxjb250YWluZXI6dGhpcy5ob3Qucm9vdFBvcnRhbEVsZW1lbnQsLi4udH0sdGhpcy5jb250'@; put 'YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5vcHRpb25zLm5hbWUpLHRoaXMucG9zaXRpb25lcj1uZXcgQ1Z0KHRoaXMub3B0aW9ucy5rZWVwSW5WaWV3cG9ydCksdGhpcy5wYXJlbnRNZW51PXRoaXMub3B0aW9ucy5wYXJlbnR8fG51bGwsdGhpcy5ldmVudE1hbmFnZXI9bmV3IFcy'@; put 'KHRoaXMpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmlzU3ViTWVudSgpJiZ0aGlzLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3Rpb25DaGFuZ2UiLCguLi5yKT0+dGhpcy5wYXJlbnRNZW51LnJ1bkxvY2FsSG9va3MoImFmdGVyU2VsZWN0aW9uQ2hhbmdlIiwuLi5yKSksdGhpcy5ob3Qu'@; put 'YWRkSG9vaygiYWZ0ZXJTZXRUaGVtZSIsKHIsaSk9PntpZih0aGlzLm9wdGlvbnMuY29udGFpbmVyIT09dGhpcy5ob3Qucm9vdFBvcnRhbEVsZW1lbnQpe2NvbnN0IG89dGhpcy5vcHRpb25zLmNvbnRhaW5lcjtrbyhvLC9odC10aGVtZS0uKi9nKSxZcihvLHIpfWl8fHRoaXMuY2xvc2UoKX0p'@; put 'fX1mdW5jdGlvbiBzRyhuKXtjb25zdCBlPXRoaXMuaG90TWVudT8uZ2V0U291cmNlRGF0YUF0Um93KG4pO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIEdOZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9u'@; put 'IG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBBMWUobixlKXtyZXR1cm4gZnVuY3Rpb24gVVZ0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixHTmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gazFlKG4sZSx0KXsoZnVuY3Rpb24galZ0KG4s'@; put 'ZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBSMWUobixlLHQpe3JldHVybiBmdW5jdGlvbiB6VnQobixlLHQp'@; put 'e2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLEdOZShuLGUsInNldCIpLHQpLHR9WWwoR1QsX2gpO2NvbnN0IGNOPSJj'@; put 'b250ZXh0TWVudSIsJE5lPWNOO0dvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29udGV4dE1lbnVTaG93IiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVy'@; put 'Q29udGV4dE1lbnVTaG93IiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVIaWRlIiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVFeGVjdXRlIik7dmFyIEkxZT1uZXcgV2Vha01hcCxEMWU9bmV3IFdlYWtNYXAsTDFlPW5l'@; put 'dyBXZWFrTWFwO2xldCBZVnQ9KCgpPT57Y2xhc3MgbiBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBjTn1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiA3MH1zdGF0aWMgZ2V0IFBMVUdJTl9ERVBTKCl7cmV0dXJuWyJwbHVnaW46QXV0b0NvbHVt'@; put 'blNpemUiXX1zdGF0aWMgZ2V0IERFRkFVTFRfSVRFTVMoKXtyZXR1cm5bZUcsdEcsdnMsZU4sdE4sdnMsSlosck4sdnMsbkcsUVosdnMsbk4sdnMscG1dfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtjTl19ZW5hYmxlUGx1Z2luKCl7aWYodGhpcy5lbmFibGVk'@; put 'KXJldHVybjtjb25zdCB0PXRoaXMuaG90LmdldFNldHRpbmdzKClbY05dLHI9Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dHx8QXJyYXkuaXNBcnJheSh0KT9udWxsOnQ7ciYmImZ1bmN0aW9uIj09dHlwZW9mIHIuY2FsbGJhY2smJnRoaXMuY29tbWFuZEV4ZWN1dG9yLnNldENvbW1vbkNh'@; put 'bGxiYWNrKHIuY2FsbGJhY2spLHRoaXMubWVudT1uZXcgR1QodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRDb250ZXh0TWVudSIsa2VlcEluVmlld3BvcnQ6ITAsY29udGFpbmVyOnI/LnVpQ29udGFpbmVyfHx0aGlzLmhvdC5yb290UG9ydGFsRWxlbWVudH0pLHRoaXMubWVudS5hZGRMb2NhbEhv'@; put 'b2soImFmdGVyT3BlbiIsQTFlKHRoaXMsRDFlKSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsQTFlKHRoaXMsTDFlKSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiZXhlY3V0ZUNvbW1hbmQiLCguLi5pKT0+e3RoaXMuZXhlY3V0ZUNvbW1hbmQuY2FsbCh0aGlzLC4uLmkp'@; put 'fSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixBMWUodGhpcyxJMWUpKSx0aGlzLmFkZEhvb2soImJlZm9yZURpYWxvZ1Nob3ciLCgpPT50aGlzLmNsb3NlKCkpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4o'@; put 'KXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiYodGhpcy5tZW51LmRlc3Ryb3koKSx0aGlzLm1lbnU9bnVsbCksdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRz'@; put 'KCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpPy5hZGRTaG9ydGN1dCh7a2V5czpbWyJDb250cm9sL01ldGEiLCJTaGlmdCIsIkJhY2tzbGFzaCJdLFsiU2hpZnQiLCJGMTAi'@; put 'XV0sY2FsbGJhY2s6KCk9Pntjb25zdCB0PXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighdClyZXR1cm47Y29uc3R7aGlnaGxpZ2h0OnJ9PXQ7aWYobnVsbD09PXIucm93fHxudWxsPT09ci5jb2wpcmV0dXJuO3RoaXMuaG90LnNjcm9sbFRvRm9jdXNlZENlbGwoKTtjb25z'@; put 'dCBpPXRoaXMuaG90LmdldENlbGwoci5yb3csci5jb2wsITApO2lmKCFpKXJldHVybjtjb25zdCBvPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1ZWih0aGlzLm1lbnUuY29udGFpbmVyLHRoaXMuaG90LnJvb3REb2N1bWVudCk7dGhpcy5vcGVuKHtsZWZ0Om8ubGVmdCthLmxlZnQsdG9w'@; put 'Om8udG9wK2EudG9wLTErby5oZWlnaHR9LHtsZWZ0Om8ud2lkdGgsYWJvdmU6LW8uaGVpZ2h0fSksdGhpcy5tZW51LmdldE5hdmlnYXRvcigpLnRvRmlyc3RJdGVtKCl9LHJ1bk9ubHlJZjooKT0+e2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQ7'@; put 'cmV0dXJuISF0JiZ0aGlzLmhvdC5zZWxlY3Rpb24uaXNDZWxsVmlzaWJsZSh0KSYmIXRoaXMubWVudS5pc09wZW5lZCgpfSxncm91cDokTmV9KX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpPy5yZW1vdmVTaG9y'@; put 'dGN1dHNCeUdyb3VwKCROZSl9b3Blbih0LHI9e2Fib3ZlOjAsYmVsb3c6MCxsZWZ0OjAscmlnaHQ6MH0pe3RoaXMubWVudT8uaXNPcGVuZWQoKXx8KHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb250ZXh0TWVudVNob3ciLHRoaXMpLHRoaXMucHJlcGFyZU1lbnVJdGVtcygpLHRoaXMubWVu'@; put 'dS5vcGVuKCksYWMociwoaSxvKT0+e3RoaXMubWVudS5zZXRPZmZzZXQobyxpKX0pLHRoaXMubWVudS5zZXRQb3NpdGlvbih0KSl9Y2xvc2UoKXt0aGlzLm1lbnU/LmNsb3NlKCksdGhpcy5pdGVtc0ZhY3Rvcnk9bnVsbH1leGVjdXRlQ29tbWFuZCh0LC4uLnIpe251bGw9PT10aGlzLml0ZW1z'@; put 'RmFjdG9yeSYmdGhpcy5wcmVwYXJlTWVudUl0ZW1zKCksdGhpcy5jb21tYW5kRXhlY3V0b3IuZXhlY3V0ZSh0LC4uLnIpfXByZXBhcmVNZW51SXRlbXMoKXt0aGlzLml0ZW1zRmFjdG9yeT1uZXcgSE5lKHRoaXMuaG90LG4uREVGQVVMVF9JVEVNUyk7Y29uc3QgdD10aGlzLmhvdC5nZXRTZXR0'@; put 'aW5ncygpW2NOXSxyPXtpdGVtczp0aGlzLml0ZW1zRmFjdG9yeS5nZXRJdGVtcyh0KX07dGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsciksdGhpcy5pdGVtc0ZhY3Rvcnkuc2V0UHJlZGVmaW5lZEl0ZW1zKHIuaXRlbXMpO2NvbnN0IGk9dGhpcy5p'@; put 'dGVtc0ZhY3RvcnkuZ2V0SXRlbXModCk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXMiLGkpLHRoaXMubWVudS5zZXRNZW51SXRlbXMoaSksWG4oaSxvPT57dGhpcy5jb21tYW5kRXhlY3V0b3IucmVnaXN0ZXJDb21tYW5kKFN0cmluZyhvLmtleT8/IiIpLG8p'@; put 'fSl9ZGVzdHJveSgpe3RoaXMuY2xvc2UoKSx0aGlzLm1lbnUmJnRoaXMubWVudS5kZXN0cm95KCksc3VwZXIuZGVzdHJveSgpfWNvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLGsxZSh0aGlzLEkxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksazFlKHRoaXMsRDFlLHt3cml0YWJs'@; put 'ZTohMCx2YWx1ZTp2b2lkIDB9KSxrMWUodGhpcyxMMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuY29tbWFuZEV4ZWN1dG9yPW5ldyBPTmUodGhpcy5ob3QpLHRoaXMuaXRlbXNGYWN0b3J5PW51bGwsdGhpcy5tZW51PW51bGwsUjFlKHRoaXMsSTFlLHI9Pntjb25zdCBpPXRo'@; put 'aXMuaG90LmdldFNldHRpbmdzKCksbz1pLnJvd0hlYWRlcnMsYT1pLmNvbEhlYWRlcnMsdT1BYShyKTtpZih0aGlzLmNsb3NlKCksTGEodSwiaGFuZHNvbnRhYmxlSW5wdXQiKXx8KHIucHJldmVudERlZmF1bHQoKSxyLnN0b3BQcm9wYWdhdGlvbigpLCEob3x8YXx8ZnVuY3Rpb24gbChFKXtj'@; put 'b25zdCBPPUUucGFyZW50Tm9kZTtyZXR1cm4iVEQiPT09RS5ub2RlTmFtZXx8aHMoTykmJiJURCI9PT1PLm5vZGVOYW1lfSh1KXx8TGEodSwiY3VycmVudCIpJiZMYSh1LCJ3dEJvcmRlciIpKSkpcmV0dXJuO2NvbnN0IGc9WVoodGhpcy5tZW51LmNvbnRhaW5lcix0aGlzLmhvdC5yb290RG9j'@; put 'dW1lbnQpO3RoaXMub3Blbih7dG9wOnIuY2xpZW50WStnLnRvcCxsZWZ0OnIuY2xpZW50WCtnLmxlZnR9KX0pLFIxZSh0aGlzLEQxZSwoKT0+e3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbnRleHRNZW51U2hvdyIsdGhpcyl9KSxSMWUodGhpcyxMMWUsKCk9Pnt0aGlzLmhvdC5saXN0ZW4o'@; put 'KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb250ZXh0TWVudUhpZGUiLHRoaXMpfSl9fXJldHVybiBuLlNFUEFSQVRPUj17bmFtZTp2c30sbn0pKCk7Y2xhc3MgWFZ0e3NldERhdGEoZSx0KXt0aGlzLmRhdGFbZV09dH1nZXREYXRhKGUpe3JldHVybiB0aGlzLmRhdGFbZV18fHZvaWQgMH1j'@; put 'b25zdHJ1Y3Rvcigpe3RoaXMuZGF0YT17fX19Y2xhc3MgUVZ0e3ByZXZlbnREZWZhdWx0KCl7fWNvbXBvc2VkUGF0aCgpe3JldHVybltdfWNvbnN0cnVjdG9yKCl7dGhpcy5jbGlwYm9hcmREYXRhPW5ldyBYVnR9fWZ1bmN0aW9uIHFOZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBl'@; put 'RXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gS05lKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9u'@; put 'LWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uICRmKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIEpWdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sS05lKG4sZSwiZ2V0IikpfWZ1bmN0aW9uICRUKG4sZSx0KXtxTmUobixlKSxlLnNldChuLHQpfWZ1'@; put 'bmN0aW9uIHFUKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gZUJ0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0o'@; put 'bixLTmUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIGxHKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIFhOZShuLGUpe3FOZShuLGUpLGUuYWRk'@; put 'KG4pfXZhciB5Xz1uZXcgV2Vha01hcCxPMWU9bmV3IFdlYWtNYXAsdU49bmV3IFdlYWtNYXAsTjFlPW5ldyBXZWFrTWFwLEYxZT1uZXcgV2Vha01hcCxkTj1uZXcgV2Vha01hcCxjRz1uZXcgV2Vha1NldCxRTmU9bmV3IFdlYWtTZXQ7Y2xhc3MgdEJ0e3NldFNlbGVjdGVkUmFuZ2UoZSl7cVQo'@; put 'dGhpcyx5XyxlKX1nZXRDZWxsc1JhbmdlKCl7aWYoMD09PSRmKHRoaXMsTzFlKS5jYWxsKHRoaXMpfHwwPT09JGYodGhpcyx1TikuY2FsbCh0aGlzKSlyZXR1cm4gbnVsbDtjb25zdHtyb3c6ZSxjb2w6dH09JGYodGhpcyx5XykuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7cm93OnIsY29sOml9PSRm'@; put 'KHRoaXMseV8pLmdldEJvdHRvbUVuZENvcm5lcigpO2lmKG51bGw9PT1lfHxudWxsPT09dHx8bnVsbD09PXJ8fG51bGw9PT1pKXJldHVybiBudWxsO2NvbnN0IG89bEcodGhpcyxRTmUsbkJ0KS5jYWxsKHRoaXMsZSxyKSxhPWxHKHRoaXMsY0csUDFlKS5jYWxsKHRoaXMsdCxpKTtyZXR1cm57'@; put 'aXNSYW5nZVRyaW1tZWQ6ciE9PW98fGkhPT1hLHN0YXJ0Um93OmUsc3RhcnRDb2w6dCxlbmRSb3c6byxlbmRDb2w6YX19Z2V0TW9zdEJvdHRvbUNvbHVtbkhlYWRlcnNSYW5nZSgpe2lmKDA9PT0kZih0aGlzLHVOKS5jYWxsKHRoaXMpfHwwPT09JGYodGhpcyxkTikuY2FsbCh0aGlzKSlyZXR1'@; put 'cm4gbnVsbDtjb25zdHtjb2w6ZX09JGYodGhpcyx5XykuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7Y29sOnR9PSRmKHRoaXMseV8pLmdldEJvdHRvbUVuZENvcm5lcigpO2lmKG51bGw9PT1lfHxudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCByPWxHKHRoaXMsY0csUDFlKS5jYWxsKHRoaXMsZSx0'@; put 'KTtyZXR1cm57aXNSYW5nZVRyaW1tZWQ6dCE9PXIsc3RhcnRSb3c6LTEsc3RhcnRDb2w6ZSxlbmRSb3c6LTEsZW5kQ29sOnJ9fWdldEFsbENvbHVtbkhlYWRlcnNSYW5nZSgpe2lmKDA9PT0kZih0aGlzLHVOKS5jYWxsKHRoaXMpfHwwPT09JGYodGhpcyxkTikuY2FsbCh0aGlzKSlyZXR1cm4g'@; put 'bnVsbDtjb25zdHtjb2w6ZX09JGYodGhpcyx5XykuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7Y29sOnR9PSRmKHRoaXMseV8pLmdldEJvdHRvbUVuZENvcm5lcigpO2lmKG51bGw9PT1lfHxudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCByPWxHKHRoaXMsY0csUDFlKS5jYWxsKHRoaXMsZSx0KTty'@; put 'ZXR1cm57aXNSYW5nZVRyaW1tZWQ6dCE9PXIsc3RhcnRSb3c6LSRmKHRoaXMsZE4pLmNhbGwodGhpcyksc3RhcnRDb2w6ZSxlbmRSb3c6LTEsZW5kQ29sOnJ9fWNvbnN0cnVjdG9yKHtjb3VudFJvd3M6ZSxjb3VudENvbHVtbnM6dCxyb3dzTGltaXQ6cixjb2x1bW5zTGltaXQ6aSxjb3VudENv'@; put 'bHVtbkhlYWRlcnM6b30pe1hOZSh0aGlzLGNHKSxYTmUodGhpcyxRTmUpLCRUKHRoaXMseV8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLCRUKHRoaXMsTzFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSwkVCh0aGlzLHVOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSwkVCh0'@; put 'aGlzLE4xZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJFQodGhpcyxGMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLCRUKHRoaXMsZE4se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHFUKHRoaXMsTzFlLGUpLHFUKHRoaXMsdU4sdCkscVQodGhpcyxOMWUscikscVQodGhp'@; put 'cyxGMWUsaSkscVQodGhpcyxkTixvKX19ZnVuY3Rpb24gUDFlKG4sZSl7cmV0dXJuIE1hdGgubWluKGUsTWF0aC5tYXgobiskZih0aGlzLEYxZSkuY2FsbCh0aGlzKS0xLG4pKX1mdW5jdGlvbiBuQnQobixlKXtyZXR1cm4gTWF0aC5taW4oZSxNYXRoLm1heChuKyRmKHRoaXMsTjFlKS5jYWxs'@; put 'KHRoaXMpLTEsbikpfWZ1bmN0aW9uIEpOZShuKXtjb25zdCBlPVtdLHQ9W107cmV0dXJuIFhuKG4scj0+e2NvbnN0IGk9cjtWYShNYXRoLm1pbihpLnN0YXJ0Um93LGkuZW5kUm93KSxNYXRoLm1heChpLnN0YXJ0Um93LGkuZW5kUm93KSxnPT57LTE9PT1lLmluZGV4T2YoZykmJmUucHVzaChn'@; put 'KX0pLFZhKE1hdGgubWluKGkuc3RhcnRDb2wsaS5lbmRDb2wpLE1hdGgubWF4KGkuc3RhcnRDb2wsaS5lbmRDb2wpLGc9PnstMT09PXQuaW5kZXhPZihnKSYmdC5wdXNoKGcpfSl9KSx7cm93czplLGNvbHVtbnM6dH19ZnVuY3Rpb24gZUZlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5'@; put 'cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB0RmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBu'@; put 'b24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gdzEobixlKXtyZXR1cm4gZnVuY3Rpb24gckJ0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix0RmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gWjMobixlLHQpe2VGZShuLGUpLGUuc2V0KG4sdCl9'@; put 'ZnVuY3Rpb24gbWQobixlLHQpe3JldHVybiBmdW5jdGlvbiBpQnQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9'@; put 'fShuLHRGZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gSDcobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gS1QobixlKXtlRmUobixlKSxlLmFk'@; put 'ZChuKX1Hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb3B5TGltaXQiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigibW9kaWZ5Q29weWFibGVSYW5nZSIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDdXQiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3Rl'@; put 'cigiYWZ0ZXJDdXQiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlUGFzdGUiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJQYXN0ZSIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb3B5IiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIo'@; put 'ImFmdGVyQ29weSIpO2NvbnN0IEgxZT0iY29weVBhc3RlIixhQnQ9WyJmcmFnbWVudFNlbGVjdGlvbiJdLG5GZT0iYXBwbGljYXRpb24vaHQtc291cmNlLWRhdGEtanNvbi1odG1sIixyRmU9Wyc8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkhhbmRzb250YWJsZSIvPicsJzxzdHls'@; put 'ZSB0eXBlPSJ0ZXh0L2NzcyI+dGR7d2hpdGUtc3BhY2U6bm9ybWFsfWJye21zby1kYXRhLXBsYWNlbWVudDpzYW1lLWNlbGx9PC9zdHlsZT4nXS5qb2luKCIiKTt2YXIgdUc9bmV3IFdlYWtNYXAsZEc9bmV3IFdlYWtNYXAsaEc9bmV3IFdlYWtNYXAsZUM9bmV3IFdlYWtNYXAsaE49bmV3IFdl'@; put 'YWtNYXAsZk49bmV3IFdlYWtNYXAsdEM9bmV3IFdlYWtNYXAscE49bmV3IFdlYWtNYXAsVjFlPW5ldyBXZWFrU2V0LGlGZT1uZXcgV2Vha1NldCxvRmU9bmV3IFdlYWtTZXQsQjFlPW5ldyBXZWFrU2V0LGFGZT1uZXcgV2Vha1NldCxqMWU9bmV3IFdlYWtTZXQsVTFlPW5ldyBXZWFrTWFwLHox'@; put 'ZT1uZXcgV2Vha01hcCxXMWU9bmV3IFdlYWtNYXAsWTFlPW5ldyBXZWFrTWFwLFoxZT1uZXcgV2Vha01hcCxHMWU9bmV3IFdlYWtNYXA7Y2xhc3Mgc0J0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIEgxZX1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVy'@; put 'bltIMWUsLi4uYUJ0XX1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiA4MH1zdGF0aWMgZ2V0IERFRkFVTFRfU0VUVElOR1MoKXtyZXR1cm57cGFzdGVNb2RlOiJvdmVyd3JpdGUiLHJvd3NMaW1pdDoxLzAsY29sdW1uc0xpbWl0OjEvMCxjb3B5Q29sdW1uSGVhZGVyczohMSxj'@; put 'b3B5Q29sdW1uR3JvdXBIZWFkZXJzOiExLGNvcHlDb2x1bW5IZWFkZXJzT25seTohMX19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0gxZV19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5wYXN0ZU1vZGU9dGhpcy5nZXRTZXR0aW5nKCJwYXN0'@; put 'ZU1vZGUiKT8/dGhpcy5wYXN0ZU1vZGUsdGhpcy5yb3dzTGltaXQ9aXNOYU4odGhpcy5nZXRTZXR0aW5nKCJyb3dzTGltaXQiKSk/dGhpcy5yb3dzTGltaXQ6dGhpcy5nZXRTZXR0aW5nKCJyb3dzTGltaXQiKSx0aGlzLmNvbHVtbnNMaW1pdD1pc05hTih0aGlzLmdldFNldHRpbmcoImNvbHVt'@; put 'bnNMaW1pdCIpKT90aGlzLmNvbHVtbnNMaW1pdDp0aGlzLmdldFNldHRpbmcoImNvbHVtbnNMaW1pdCIpLG1kKHRoaXMsdUcsdGhpcy5nZXRTZXR0aW5nKCJjb3B5Q29sdW1uSGVhZGVycyIpKSxtZCh0aGlzLGRHLHRoaXMuZ2V0U2V0dGluZygiY29weUNvbHVtbkdyb3VwSGVhZGVycyIpKSxt'@; put 'ZCh0aGlzLGhHLHRoaXMuZ2V0U2V0dGluZygiY29weUNvbHVtbkhlYWRlcnNPbmx5IikpLHRoaXMudWlDb250YWluZXI9dGhpcy5nZXRTZXR0aW5nKCJ1aUNvbnRhaW5lciIpPz90aGlzLnVpQ29udGFpbmVyLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix3'@; put 'MSh0aGlzLFUxZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLHcxKHRoaXMsejFlKSksdGhpcy5hZGRIb29rKCJhZnRlclNlbGVjdGlvbkVuZCIsdzEodGhpcyxXMWUpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG90LnJvb3REb2N1bWVudCwiY29w'@; put 'eSIsZT0+dGhpcy5vbkNvcHkoZSkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdERvY3VtZW50LCJjdXQiLGU9PnRoaXMub25DdXQoZSkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdERvY3VtZW50LCJwYXN0'@; put 'ZSIsZT0+dGhpcy5vblBhc3RlKGUpKSxoTCgpJiYodGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSwibW91c2VlbnRlciIsdzEodGhpcyxZMWUpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG90LnJv'@; put 'b3REb2N1bWVudC5ib2R5LCJtb3VzZWxlYXZlIix3MSh0aGlzLFoxZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLHcxKHRoaXMsRzFlKSkpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigp'@; put 'LHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXtzdXBlci5kaXNhYmxlUGx1Z2luKCl9Y29weShlPSJjZWxscy1vbmx5Iil7bWQodGhpcyxlQyxlKSxtZCh0aGlzLGhOLCEwKSxINyh0aGlzLFYxZSxzRmUpLmNhbGwodGhpcywiY29weSIpfWNvcHlDZWxsc09ubHkoKXt0aGlz'@; put 'LmNvcHkoImNlbGxzLW9ubHkiKX1jb3B5Q29sdW1uSGVhZGVyc09ubHkoKXt0aGlzLmNvcHkoImNvbHVtbi1oZWFkZXJzLW9ubHkiKX1jb3B5V2l0aEFsbENvbHVtbkhlYWRlcnMoKXt0aGlzLmNvcHkoIndpdGgtY29sdW1uLWdyb3VwLWhlYWRlcnMiKX1jb3B5V2l0aENvbHVtbkhlYWRlcnMo'@; put 'KXt0aGlzLmNvcHkoIndpdGgtY29sdW1uLWhlYWRlcnMiKX1jdXQoKXttZCh0aGlzLGZOLCEwKSxINyh0aGlzLFYxZSxzRmUpLmNhbGwodGhpcywiY3V0Iil9Z2V0UmFuZ2VkQ29weWFibGVEYXRhKGUpe3JldHVybiBxWSh0aGlzLmdldFJhbmdlZERhdGEoZSkpfWdldFJhbmdlZERhdGEoZSx0'@; put 'PSExKXtjb25zdCByPVtdLHtyb3dzOmksY29sdW1uczpvfT1KTmUoZSk7cmV0dXJuIFhuKGksYT0+e2NvbnN0IGw9W107WG4obyx1PT57aWYoYTwwKWwucHVzaCh0aGlzLmhvdC5nZXRDb2xIZWFkZXIodSxhKSk7ZWxzZXtsZXQgZz10P3RoaXMuaG90LmdldENvcHlhYmxlU291cmNlRGF0YShh'@; put 'LHUpOnRoaXMuaG90LmdldENvcHlhYmxlRGF0YShhLHUpO3QmJihDYShnKXx8QXJyYXkuaXNBcnJheShnKSkmJihnPUpTT04uc3RyaW5naWZ5KGcpKSxsLnB1c2goZyl9fSksci5wdXNoKGwpfSkscn1wYXN0ZShlPSIiLHQ9ZSl7aWYoIWUmJiF0KXJldHVybjtjb25zdCByPW5ldyBRVnQ7ZSYm'@; put 'ci5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLGUpLHQmJnIuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L2h0bWwiLHQpLHRoaXMub25QYXN0ZShyKX1zZXRDb3B5YWJsZVRleHQoKXtjb25zdCBlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighZSly'@; put 'ZXR1cm47aWYoZS5pc1NpbmdsZUhlYWRlcigpKXJldHVybiB2b2lkKHRoaXMuY29weWFibGVSYW5nZXM9W10pO3cxKHRoaXMsdEMpLnNldFNlbGVjdGVkUmFuZ2UoZSk7Y29uc3QgdD1uZXcgTWFwKFtbImhlYWRlcnMiLG51bGxdLFsiY2VsbHMiLG51bGxdXSk7ImNvbHVtbi1oZWFkZXJzLW9u'@; put 'bHkiPT09dzEodGhpcyxlQyk/dC5zZXQoImhlYWRlcnMiLHcxKHRoaXMsdEMpLmdldE1vc3RCb3R0b21Db2x1bW5IZWFkZXJzUmFuZ2UoKSk6KCJ3aXRoLWNvbHVtbi1oZWFkZXJzIj09PXcxKHRoaXMsZUMpP3Quc2V0KCJoZWFkZXJzIix3MSh0aGlzLHRDKS5nZXRNb3N0Qm90dG9tQ29sdW1u'@; put 'SGVhZGVyc1JhbmdlKCkpOiJ3aXRoLWNvbHVtbi1ncm91cC1oZWFkZXJzIj09PXcxKHRoaXMsZUMpJiZ0LnNldCgiaGVhZGVycyIsdzEodGhpcyx0QykuZ2V0QWxsQ29sdW1uSGVhZGVyc1JhbmdlKCkpLHQuc2V0KCJjZWxscyIsdzEodGhpcyx0QykuZ2V0Q2VsbHNSYW5nZSgpKSksdGhpcy5j'@; put 'b3B5YWJsZVJhbmdlcz1BcnJheS5mcm9tKHQudmFsdWVzKCkpLmZpbHRlcihpPT5udWxsIT09aSkubWFwKCh7c3RhcnRSb3c6aSxzdGFydENvbDpvLGVuZFJvdzphLGVuZENvbDpsfSk9Pih7c3RhcnRSb3c6aSxzdGFydENvbDpvLGVuZFJvdzphLGVuZENvbDpsfSkpLHRoaXMuY29weWFibGVS'@; put 'YW5nZXM9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLHRoaXMuY29weWFibGVSYW5nZXMpO2NvbnN0IHI9dC5nZXQoImNlbGxzIik7aWYobnVsbCE9ciYmci5pc1JhbmdlVHJpbW1lZCl7Y29uc3R7c3RhcnRSb3c6aSxzdGFydENvbDpvLGVuZFJvdzphLGVuZENvbDps'@; put 'fT1yO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvcHlMaW1pdCIsYS1pKzEsbC1vKzEsdGhpcy5yb3dzTGltaXQsdGhpcy5jb2x1bW5zTGltaXQpfX1pc0VkaXRvck9wZW5lZCgpe3JldHVybiB0aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKT8uaXNPcGVuZWQoKX1wb3B1bGF0ZVZhbHVlcyh7'@; put 'cGxhaW5EYXRhOmUsb3JpZ2luYWxQbGFpbkRhdGE6dCxzb3VyY2VEYXRhOnJ9KXtpZighZS5sZW5ndGgpcmV0dXJuW251bGwsbnVsbCxudWxsLG51bGxdO2NvbnN0IGk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLG89ZS5sZW5ndGgsYT1lWzBdLmxlbmd0aCxsPVtdO2lmKCFp'@; put 'KXJldHVybltudWxsLG51bGwsbnVsbCxudWxsXTtjb25zdHtyb3c6dSxjb2w6Z309aS5nZXRUb3BTdGFydENvcm5lcigpLHtyb3c6RSxjb2w6T309aS5nZXRCb3R0b21FbmRDb3JuZXIoKTtpZihudWxsPT09dXx8bnVsbD09PWd8fG51bGw9PT1FfHxudWxsPT09TylyZXR1cm5bbnVsbCxudWxs'@; put 'LG51bGwsbnVsbF07bGV0IFo9dSxlZT1nLHZlPXUsTWU9Zztmb3IoO2wubGVuZ3RoPG98fFo8PUU7KXtjb25zdHtza2lwUm93T25QYXN0ZTpIZSx2aXN1YWxSb3c6V2V9PXRoaXMuaG90LmdldENlbGxNZXRhKFosZyk7aWYoWj1XZSsxLCEwPT09SGUpY29udGludWU7dmU9V2UsZWU9Zztjb25z'@; put 'dCBhdD1bXSxDdD1sLmxlbmd0aCVvO2Zvcig7YXQubGVuZ3RoPGF8fGVlPD1POyl7Y29uc3R7c2tpcENvbHVtbk9uUGFzdGU6QXQsdmlzdWFsQ29sOkt0LHBhcnNlUGFzdGVkVmFsdWU6cXR9PXRoaXMuaG90LmdldENlbGxNZXRhKFdlLGVlKSxUbj0odGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0'@; put 'Q2VsbChXZSxlZSksYXQubGVuZ3RoJWEpO2lmKGVlPUt0KzEsITA9PT1BdCljb250aW51ZTtNZT1LdDtjb25zdCBDbj1yPy5bQ3RdPy5bVG5dLHFyPXQ/LltDdF0/LltUbl07bGV0ICRuPWVbQ3RdW1RuXTtxdCYmciYmYnNlKENuKSYmJG49PT1xciYmKCRuPUpTT04ucGFyc2UoQ24pKSxhdC5w'@; put 'dXNoKCRuKX1sLnB1c2goYXQpfXJldHVybiBtZCh0aGlzLHBOLCEwKSx0aGlzLmhvdC5wb3B1bGF0ZUZyb21BcnJheSh1LGcsbCx2b2lkIDAsdm9pZCAwLCJDb3B5UGFzdGUucGFzdGUiLHRoaXMucGFzdGVNb2RlKSxbdSxnLHZlLE1lXX1vbkNvcHkoZSl7Y29uc3QgdD1lLmNvbXBvc2VkUGF0'@; put 'aCgpWzBdLHI9dGhpcy5ob3QuZ2V0Rm9jdXNNYW5hZ2VyKCkuZ2V0UmVmb2N1c0VsZW1lbnQoKSxpPWhzKHQpJiYiaG90SW5wdXQiaW4gdC5kYXRhc2V0O2lmKCF0aGlzLmhvdC5pc0xpc3RlbmluZygpJiYhdzEodGhpcyxoTil8fHRoaXMuaXNFZGl0b3JPcGVuZWQoKXx8aHModCkmJihpJiZ0'@; put 'IT09cnx8IWkmJnQhPT10aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSYmIXBMKHQsdGhpcy5ob3Qucm9vdEVsZW1lbnQpKSlyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0Q29weWFibGVUZXh0KCksbWQodGhpcyxoTiwhMSk7Y29uc3Qgbz10aGlzLmdldFJhbmdlZERhdGEodGhp'@; put 'cy5jb3B5YWJsZVJhbmdlcyksYT10aGlzLmdldFJhbmdlZERhdGEodGhpcy5jb3B5YWJsZVJhbmdlcywhMCksbD1INyh0aGlzLGlGZSxsQnQpLmNhbGwodGhpcyx0aGlzLmNvcHlhYmxlUmFuZ2VzKTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29weSIsbyx0aGlzLmNvcHlhYmxlUmFuZ2Vz'@; put 'LGwpJiYoSDcodGhpcyxqMWUsY0ZlKS5jYWxsKHRoaXMsZSxvLGEpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvcHkiLG8sdGhpcy5jb3B5YWJsZVJhbmdlcyxsKSksbWQodGhpcyxlQywiY2VsbHMtb25seSIpfW9uQ3V0KGUpe2NvbnN0IHQ9ZS5jb21wb3NlZFBhdGgoKVswXSxyPXRoaXMu'@; put 'aG90LmdldEZvY3VzTWFuYWdlcigpLmdldFJlZm9jdXNFbGVtZW50KCksaT1ocyh0KSYmImhvdElucHV0ImluIHQuZGF0YXNldDtpZighdGhpcy5ob3QuaXNMaXN0ZW5pbmcoKSYmIXcxKHRoaXMsZk4pfHx0aGlzLmlzRWRpdG9yT3BlbmVkKCl8fGhzKHQpJiYoaSYmdCE9PXJ8fCFpJiZ0IT09'@; put 'dGhpcy5ob3Qucm9vdERvY3VtZW50LmJvZHkmJiFwTCh0LHRoaXMuaG90LnJvb3RFbGVtZW50KSkpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSx0aGlzLnNldENvcHlhYmxlVGV4dCgpLG1kKHRoaXMsZk4sITEpO2NvbnN0IG89dGhpcy5nZXRSYW5nZWREYXRhKHRoaXMuY29weWFibGVSYW5n'@; put 'ZXMpLGE9dGhpcy5nZXRSYW5nZWREYXRhKHRoaXMuY29weWFibGVSYW5nZXMsITApO3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDdXQiLG8sdGhpcy5jb3B5YWJsZVJhbmdlcykmJihINyh0aGlzLGoxZSxjRmUpLmNhbGwodGhpcyxlLG8sYSksdGhpcy5ob3QuZW1wdHlTZWxlY3RlZENlbGxz'@; put 'KCJDb3B5UGFzdGUuY3V0IiksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3V0IixvLHRoaXMuY29weWFibGVSYW5nZXMpKX1vblBhc3RlKGUpe2NvbnN0IHQ9ZS5jb21wb3NlZFBhdGgoKVswXSxyPXRoaXMuaG90LmdldEZvY3VzTWFuYWdlcigpLmdldFJlZm9jdXNFbGVtZW50KCksaT1ocyh0'@; put 'KSYmImhvdElucHV0ImluIHQuZGF0YXNldDtpZighdGhpcy5ob3QuaXNMaXN0ZW5pbmcoKXx8dGhpcy5pc0VkaXRvck9wZW5lZCgpfHwhdGhpcy5ob3QuZ2V0U2VsZWN0ZWQoKXx8aHModCkmJihpJiZ0IT09cnx8IWkmJnQhPT10aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSYmIXBMKHQsdGhp'@; put 'cy5ob3Qucm9vdEVsZW1lbnQpKSlyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdD8uKCk7Y29uc3Qgbz1INyh0aGlzLGFGZSx1QnQpLmNhbGwodGhpcyxlKSx7cGFzdGVkU291cmNlRGF0YTphfT1vO2xldHtwYXN0ZWREYXRhOmx9PW87aWYoInN0cmluZyI9PXR5cGVvZiBsJiYobD1mdW5jdGlvbiBx'@; put 'UnQobil7Y29uc3QgZT1bWyIiXV07aWYoMD09PW4ubGVuZ3RoKXJldHVybiBlO2xldCBpLHQ9MCxyPTA7Zm9yKDtuLmxlbmd0aD4wJiZpIT09bi5sZW5ndGg7KWlmKGk9bi5sZW5ndGgsbi5tYXRjaChKUmUpKW49bi5yZXBsYWNlKEpSZSwiIiksdCs9MSxlW3JdW3RdPSIiO2Vsc2UgaWYobi5t'@; put 'YXRjaChRUmUpKW49bi5yZXBsYWNlKFFSZSwiIiksdD0wLHIrPTEsZVtyXT1bIiJdO2Vsc2V7bGV0IG89IiI7aWYobi5zdGFydHNXaXRoKCciJykpe2NvbnN0IGE9JFJ0KG4uc2xpY2UoMSkpO2lmKC0xIT09YSl7bGV0IGw9MDtjb25zdCB1PW4uc2xpY2UoMSk7Zm9yKDtsPGE7KSciJz09PXVb'@; put 'bF0mJiciJz09PXVbbCsxXT8obys9JyInLGwrPTIpOihvKz11W2xdLGwrPTEpO249bi5zbGljZShhKzIpfWVsc2V7bGV0IGw9MCx1PSEwO2Zvcig7dTspe2NvbnN0IGc9bi5zbGljZSgwLDEpOyciJz09PWcmJihsKz0xKSxvKz1nLCgwPT09KG49bi5zbGljZSgxKSkubGVuZ3RofHxuLm1hdGNo'@; put 'KC9eW1x0XHJcbl0vKSYmbCUyPT0wKSYmKHU9ITEpfW89by5yZXBsYWNlKC9eIi8sIiIpLnJlcGxhY2UoLyIkLywiIikucmVwbGFjZSgvWyJdKi9nLGc9Pm5ldyBBcnJheShNYXRoLmZsb29yKGcubGVuZ3RoLzIpKS5maWxsKCciJykuam9pbigiIikpfX1lbHNle2NvbnN0IGE9bi5tYXRjaChH'@; put 'UnQpO289YT9hWzBdOiIiLG49bi5zbGljZShvLmxlbmd0aCl9ZVtyXVt0XT1vfXJldHVybiBlfShsKSksdm9pZCAwPT09bHx8QXJyYXkuaXNBcnJheShsKSYmMD09PWwubGVuZ3RoKXJldHVybjtjb25zdCB1PUFkKGwpO2lmKCExPT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVBhc3RlIixs'@; put 'LHRoaXMuY29weWFibGVSYW5nZXMpKXJldHVybjtjb25zdFtnLEUsTyxaXT10aGlzLnBvcHVsYXRlVmFsdWVzKHtwbGFpbkRhdGE6bCxzb3VyY2VEYXRhOmEsb3JpZ2luYWxQbGFpbkRhdGE6dX0pO251bGwhPT1nJiZudWxsIT09RSYmbnVsbCE9PU8mJm51bGwhPT1aJiZ0aGlzLmhvdC5zZWxl'@; put 'Y3RDZWxsKGcsRSxNYXRoLm1pbih0aGlzLmhvdC5jb3VudFJvd3MoKS0xLE8pLE1hdGgubWluKHRoaXMuaG90LmNvdW50Q29scygpLTEsWikpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBhc3RlIixsLHRoaXMuY29weWFibGVSYW5nZXMpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCl9Y29u'@; put 'c3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksS1QodGhpcyxWMWUpLEtUKHRoaXMsaUZlKSxLVCh0aGlzLG9GZSksS1QodGhpcyxCMWUpLEtUKHRoaXMsYUZlKSxLVCh0aGlzLGoxZSksWjModGhpcyx1Ryx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxkRyx7d3JpdGFibGU6'@; put 'ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxoRyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxlQyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxoTix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxmTix7d3JpdGFibGU6ITAsdmFsdWU6'@; put 'dm9pZCAwfSksWjModGhpcyx0Qyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxwTix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxVMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFozKHRoaXMsejFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9'@; put 'KSxaMyh0aGlzLFcxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWjModGhpcyxZMWUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFozKHRoaXMsWjFlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxaMyh0aGlzLEcxZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhp'@; put 'cy5jb2x1bW5zTGltaXQ9MS8wLHRoaXMucm93c0xpbWl0PTEvMCx0aGlzLnBhc3RlTW9kZT0ib3ZlcndyaXRlIix0aGlzLnVpQ29udGFpbmVyPXRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5LG1kKHRoaXMsdUcsITEpLG1kKHRoaXMsZEcsITEpLG1kKHRoaXMsaEcsITEpLG1kKHRoaXMsZUMs'@; put 'ImNlbGxzLW9ubHkiKSxtZCh0aGlzLGhOLCExKSxtZCh0aGlzLGZOLCExKSxtZCh0aGlzLHRDLG5ldyB0QnQoe2NvdW50Um93czooKT0+dGhpcy5ob3QuY291bnRSb3dzKCksY291bnRDb2x1bW5zOigpPT50aGlzLmhvdC5jb3VudENvbHMoKSxyb3dzTGltaXQ6KCk9PnRoaXMucm93c0xpbWl0'@; put 'LGNvbHVtbnNMaW1pdDooKT0+dGhpcy5jb2x1bW5zTGltaXQsY291bnRDb2x1bW5IZWFkZXJzOigpPT50aGlzLmhvdC52aWV3LmdldENvbHVtbkhlYWRlcnNDb3VudCgpfSkpLG1kKHRoaXMscE4sITEpLHRoaXMuY29weWFibGVSYW5nZXM9W10sbWQodGhpcyxVMWUsdD0+e3QuaXRlbXMucHVz'@; put 'aCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gWlZ0KG4pe3JldHVybntrZXk6ImNvcHkiLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGNjZSl9LGNhbGxiYWNrKCl7bi5jb3B5Q2VsbHNPbmx5KCl9LGRpc2FibGVkKCl7aWYoMD09PXRoaXMuY291bnRSb3dzKCl8'@; put 'fDA9PT10aGlzLmNvdW50Q29scygpKXJldHVybiEwO2NvbnN0IGU9dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWV8fGUuaXNTaW5nbGVIZWFkZXIoKSlyZXR1cm4hMDtjb25zdCB0PXRoaXMuZ2V0U2VsZWN0ZWQoKTtyZXR1cm4hdHx8dC5sZW5ndGg+MX0saGlkZGVuOiExfX0o'@; put 'dGhpcykpLHcxKHRoaXMsdUcpJiZ0Lml0ZW1zLnB1c2goZnVuY3Rpb24gcVZ0KG4pe3JldHVybntrZXk6ImNvcHlfd2l0aF9jb2x1bW5faGVhZGVycyIsbmFtZSgpe2NvbnN0IGU9dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCksdD1lP1ZzKGUuZ2V0V2lkdGgoKS0xLDAsMSk6MDtyZXR1'@; put 'cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHVjZSx0KX0sY2FsbGJhY2soKXtuLmNvcHlXaXRoQ29sdW1uSGVhZGVycygpfSxkaXNhYmxlZCgpe2lmKCF0aGlzLmhhc0NvbEhlYWRlcnMoKSlyZXR1cm4hMDtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFlfHxl'@; put 'LmlzU2luZ2xlSGVhZGVyKCkpcmV0dXJuITA7Y29uc3QgdD10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIXR8fHQubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKSx3MSh0aGlzLGRHKSYmdC5pdGVtcy5wdXNoKGZ1bmN0aW9uICRWdChuKXtyZXR1cm57a2V5OiJjb3B5X3dpdGhfY29sdW1u'@; put 'X2dyb3VwX2hlYWRlcnMiLG5hbWUoKXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLHQ9ZT9WcyhlLmdldFdpZHRoKCktMSwwLDEpOjA7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShkY2UsdCl9LGNhbGxiYWNrKCl7bi5jb3B5V2l0aEFsbENvbHVtbkhlYWRl'@; put 'cnMoKX0sZGlzYWJsZWQoKXtpZighdGhpcy5oYXNDb2xIZWFkZXJzKCl8fCF0aGlzLmdldFNldHRpbmdzKCkubmVzdGVkSGVhZGVycylyZXR1cm4hMDtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFlfHxlLmlzU2luZ2xlSGVhZGVyKCkpcmV0dXJuITA7Y29uc3Qg'@; put 'dD10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIXR8fHQubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKSx3MSh0aGlzLGhHKSYmdC5pdGVtcy5wdXNoKGZ1bmN0aW9uIEdWdChuKXtyZXR1cm57a2V5OiJjb3B5X2NvbHVtbl9oZWFkZXJzX29ubHkiLG5hbWUoKXtjb25zdCBlPXRoaXMuZ2V0'@; put 'U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLHQ9ZT9WcyhlLmdldFdpZHRoKCktMSwwLDEpOjA7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShoY2UsdCl9LGNhbGxiYWNrKCl7bi5jb3B5Q29sdW1uSGVhZGVyc09ubHkoKX0sZGlzYWJsZWQoKXtpZighdGhpcy5oYXNDb2xIZWFkZXJzKCkp'@; put 'cmV0dXJuITA7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighZXx8ZS5pc1NpbmdsZUhlYWRlcigpKXJldHVybiEwO2NvbnN0IHQ9dGhpcy5nZXRTZWxlY3RlZCgpO3JldHVybiF0fHx0Lmxlbmd0aD4xfSxoaWRkZW46ITF9fSh0aGlzKSksdC5pdGVtcy5wdXNoKGZ1'@; put 'bmN0aW9uIEtWdChuKXtyZXR1cm57a2V5OiJjdXQiLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGZjZSl9LGNhbGxiYWNrKCl7bi5jdXQoKX0sZGlzYWJsZWQoKXtpZigwPT09dGhpcy5jb3VudFJvd3MoKXx8MD09PXRoaXMuY291bnRDb2xzKCkpcmV0dXJuITA7Y29u'@; put 'c3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighZXx8ZS5pc1NpbmdsZUhlYWRlcigpKXJldHVybiEwO2NvbnN0IHQ9dGhpcy5nZXRTZWxlY3RlZCgpO3JldHVybiF0fHx0Lmxlbmd0aD4xfSxoaWRkZW46ITF9fSh0aGlzKSl9KSxtZCh0aGlzLHoxZSwodCxyLGksbyxhKT0+'@; put 'e3cxKHRoaXMscE4pJiYoYS52YWx1ZT0hMCksbWQodGhpcyxwTiwhMSl9KSxtZCh0aGlzLFcxZSwoKT0+e3RoaXMuaXNFZGl0b3JPcGVuZWQoKXx8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5mcmFnbWVudFNlbGVjdGlvbnx8dGhpcy5zZXRDb3B5YWJsZVRleHQoKX0pLG1kKHRoaXMsWTFlLCgp'@; put 'PT57SDcodGhpcyxCMWUsbEZlKS5jYWxsKHRoaXMpfSksbWQodGhpcyxaMWUsKCk9PntINyh0aGlzLG9GZSxjQnQpLmNhbGwodGhpcyl9KSxtZCh0aGlzLEcxZSwoKT0+e0g3KHRoaXMsQjFlLGxGZSkuY2FsbCh0aGlzKX0pfX1mdW5jdGlvbiBzRmUobil7aWYoaEwoKSl7Y29uc3QgZT10aGlz'@; put 'LmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoZSl7Y29uc3R7cm93OnQsY29sOnJ9PWUuaGlnaGxpZ2h0O2lmKG51bGwhPT10JiZudWxsIT09cil7Y29uc3QgaT10aGlzLmhvdC5nZXRDZWxsKHQsciwhMCk7aSYmYUFlKGksKCk9Pnt0aGlzLmhvdC5yb290RG9jdW1lbnQuZXhlY0Nv'@; put 'bW1hbmQobil9KX19fWVsc2UgdGhpcy5ob3Qucm9vdERvY3VtZW50LmV4ZWNDb21tYW5kKG4pfWZ1bmN0aW9uIGxCdChuKXtjb25zdHtyb3dzOmV9PUpOZShuKTtsZXQgdD0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGgmJiEoZVtyXT49MCk7cisrKXQrPTE7cmV0dXJue2NvbHVtbkhlYWRlcnND'@; put 'b3VudDp0fX1mdW5jdGlvbiBjQnQoKXtpZih0aGlzLmhvdC5pc0xpc3RlbmluZygpKXtjb25zdCBuPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZihuKXtjb25zdHtyb3c6ZSxjb2w6dH09bi5oaWdobGlnaHQ7aWYobnVsbD09PWV8fG51bGw9PT10KXJldHVybjtjb25zdCBy'@; put 'PXRoaXMuaG90LmdldENlbGwoZSx0LCEwKTtyJiZMc2Uocil9fX1mdW5jdGlvbiBsRmUoKXtpZih0aGlzLmhvdC5pc0xpc3RlbmluZygpKXtjb25zdCBuPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZihuKXtjb25zdHtyb3c6ZSxjb2w6dH09bi5oaWdobGlnaHQ7aWYobnVs'@; put 'bD09PWV8fG51bGw9PT10KXJldHVybjtjb25zdCByPXRoaXMuaG90LmdldENlbGwoZSx0LCEwKTtyPy5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpJiZPc2Uocil9fX1mdW5jdGlvbiB1QnQobil7bGV0IGUsdDtpZihuJiZ0eXBlb2Ygbi5jbGlwYm9hcmREYXRhPCJ1Iil7Y29uc3Qg'@; put 'cj1uLmNsaXBib2FyZERhdGEsaT1yLmdldERhdGEobkZlKTtpJiYodD1Yc2UoaSx0aGlzLmhvdC5yb290RG9jdW1lbnQpPy5kYXRhKTtjb25zdCBvPXIuZ2V0RGF0YSgidGV4dC9odG1sIik/PyIiLGE9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5zYW5pdGl6ZXI7byYmImZ1bmN0aW9uIiE9dHlw'@; put 'ZW9mIGEmJkNzZSh0aGlzLmhvdC5yb290RWxlbWVudCxFc2UsJ0hUTUwgY29udGVudCBpcyBiZWluZyBwYXN0ZWQgdG8gdGhlIERPTSB3aXRob3V0IGEgc2FuaXRpemVyLiBDb25maWd1cmUgdGhlICJzYW5pdGl6ZXIiIG9wdGlvbiB0byBwcmV2ZW50IFhTUyB2dWxuZXJhYmlsaXRpZXMuJyk7'@; put 'Y29uc3QgbD0iZnVuY3Rpb24iPT10eXBlb2YgYT9hKG8sIkNvcHlQYXN0ZS5wYXN0ZSIpOm87bCYmLyg8dGFibGUpfCg8VEFCTEUpL2cudGVzdChsKT9lPVhzZShsLHRoaXMuaG90LnJvb3REb2N1bWVudCk/LmRhdGE6KGU9ci5nZXREYXRhKCJ0ZXh0L3BsYWluIiksInN0cmluZyI9PXR5cGVv'@; put 'ZiBlJiYoZT1lLnJlcGxhY2UoLyhcclxufFxyfFxuKSQvLCIiKSkpfWVsc2UgdHlwZW9mIENsaXBib2FyZEV2ZW50PiJ1IiYmdHlwZW9mIHRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJvYXJkRGF0YTwidSImJihlPXRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJU'@; put 'ZXh0IikpO3JldHVybntwYXN0ZWREYXRhOmUscGFzdGVkU291cmNlRGF0YTp0fX1mdW5jdGlvbiBjRmUobixlLHQpe2NvbnN0IHI9cVkoZSk7aWYobiYmbi5jbGlwYm9hcmREYXRhKXtjb25zdCBpPUtzZShlKSxvPUtzZSh0KTtuLmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9wbGFpbiIs'@; put 'ciksbi5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsW3JGZSxpXS5qb2luKCIiKSksbi5jbGlwYm9hcmREYXRhLnNldERhdGEobkZlLFtyRmUsb10uam9pbigiIikpfWVsc2UgdHlwZW9mIENsaXBib2FyZEV2ZW50PiJ1IiYmdGhpcy5ob3Qucm9vdFdpbmRvdy5jbGlwYm9hcmRE'@; put 'YXRhLnNldERhdGEoIlRleHQiLHIpfWZ1bmN0aW9uIHVGZShuLGUpe3JldHVybmBib3JkZXJfcm93JHtufWNvbCR7ZX1gfWZ1bmN0aW9uICQxZShuKXtjb25zdCBlPW47cmV0dXJuKFpvKGUuc3RhcnQpfHxabyhlLmxlZnQpKSYmKGUuc3RhcnQ9ZS5zdGFydD8/ZS5sZWZ0KSwoWm8oZS5lbmQp'@; put 'fHxabyhlLnJpZ2h0KSkmJihlLmVuZD1lLmVuZD8/ZS5yaWdodCksZGVsZXRlIGUubGVmdCxkZWxldGUgZS5yaWdodCxufWZ1bmN0aW9uIGdOKG4pe2NvbnN0IGU9bjtyZXR1cm4gWm8oZS5zdGFydCkmJihlLmxlZnQ9ZS5zdGFydCksWm8oZS5lbmQpJiYoZS5yaWdodD1lLmVuZCksbn1mdW5j'@; put 'dGlvbiBxMWUobixlKXtyZXR1cm57aWQ6dUZlKG4sZSksYm9yZGVyOnt3aWR0aDoxLGNvbG9yOiIjMDAwIixjb3JuZXJWaXNpYmxlOiExfSxyb3c6bixjb2w6ZSx0b3A6e2hpZGU6ITB9LGJvdHRvbTp7aGlkZTohMH0sc3RhcnQ6e2hpZGU6ITB9LGVuZDp7aGlkZTohMH19fWZ1bmN0aW9uIGZH'@; put 'KG4sZSx0KXshUmQoZSx0KXx8IVpvKGVbdF0pfHwoZVt0XT8oQ2EoZVt0XSl8fChlW3RdPXt3aWR0aDoxLGNvbG9yOiIjMDAwIn0pLG5bdF09ZVt0XSk6KGVbdF09e2hpZGU6ITB9LG5bdF09ZVt0XSkpfWZ1bmN0aW9uIFY3KG4sZSl7bGV0IHQ9ITE7cmV0dXJuIFhuKG4uZ2V0U2VsZWN0ZWRS'@; put 'YW5nZSgpPz9bXSxyPT57ci5mb3JBbGwoKGksbyk9PntpZihpPDB8fG88MClyZXR1cm47Y29uc3QgYT1uLmdldENlbGxNZXRhKGksbykuYm9yZGVycztpZihhKXtpZighZSlyZXR1cm4gdD0hMCwhMTt7Y29uc3QgbD1hO2lmKCFSZChsW2VdLCJoaWRlIil8fCExPT09bFtlXS5oaWRlKXJldHVy'@; put 'biB0PSEwLCExfX19KX0pLHR9ZnVuY3Rpb24gcEcobil7cmV0dXJuYDxzcGFuIGNsYXNzPSJzZWxlY3RlZCI+XHUyNzEzPC9zcGFuPiR7bn1gfWNvbnN0IGdCdD1uZXcgTWFwKFtbImxlZnQiLCJzdGFydCJdLFsicmlnaHQiLCJlbmQiXV0pO2Z1bmN0aW9uIHZCdChuKXtyZXR1cm57a2V5OiJi'@; put 'b3JkZXJzOnRvcCIsbmFtZSgpe2xldCBlPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShPY2UpO3JldHVybiBWNyh0aGlzLCJ0b3AiKSYmKGU9cEcoZSkpLGV9LGNhbGxiYWNrKGUsdCl7Y29uc3Qgcj1WNyh0aGlzLCJ0b3AiKTtuLnByZXBhcmVCb3JkZXIodCwidG9wIixyKX19fWZ1bmN0aW9u'@; put 'IF9CdChuKXtjb25zdCBlPW4uaG90LmlzUnRsKCk/InN0YXJ0IjoiZW5kIjtyZXR1cm57a2V5OiJib3JkZXJzOnJpZ2h0IixuYW1lKCl7bGV0IHQ9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKE5jZSk7cmV0dXJuIFY3KHRoaXMsZSkmJih0PXBHKHQpKSx0fSxjYWxsYmFjayh0LHIpe2NvbnN0'@; put 'IGk9VjcodGhpcyxlKTtuLnByZXBhcmVCb3JkZXIocixlLGkpfX19ZnVuY3Rpb24geUJ0KG4pe3JldHVybntrZXk6ImJvcmRlcnM6Ym90dG9tIixuYW1lKCl7bGV0IGU9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEZjZSk7cmV0dXJuIFY3KHRoaXMsImJvdHRvbSIpJiYoZT1wRyhlKSksZX0s'@; put 'Y2FsbGJhY2soZSx0KXtjb25zdCByPVY3KHRoaXMsImJvdHRvbSIpO24ucHJlcGFyZUJvcmRlcih0LCJib3R0b20iLHIpfX19ZnVuY3Rpb24gYkJ0KG4pe2NvbnN0IGU9bi5ob3QuaXNSdGwoKT8iZW5kIjoic3RhcnQiO3JldHVybntrZXk6ImJvcmRlcnM6bGVmdCIsbmFtZSgpe2xldCB0PXRo'@; put 'aXMuZ2V0VHJhbnNsYXRlZFBocmFzZShQY2UpO3JldHVybiBWNyh0aGlzLGUpJiYodD1wRyh0KSksdH0sY2FsbGJhY2sodCxyKXtjb25zdCBpPVY3KHRoaXMsZSk7bi5wcmVwYXJlQm9yZGVyKHIsZSxpKX19fWZ1bmN0aW9uIHdCdChuKXtyZXR1cm57a2V5OiJib3JkZXJzOm5vX2JvcmRlcnMi'@; put 'LG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEhjZSl9LGNhbGxiYWNrKGUsdCl7bi5wcmVwYXJlQm9yZGVyKHQsIm5vQm9yZGVycyIsdm9pZCAwKX0sZGlzYWJsZWQoKXtyZXR1cm4hVjcodGhpcyl9fX1mdW5jdGlvbiBLMWUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJv'@; put 'dyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gWDFlKG4sZSl7KGZ1bmN0aW9uIENCdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRo'@; put 'ZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfWNvbnN0IGdHPSJjdXN0b21Cb3JkZXJzIjtmdW5jdGlvbiBtRyhuKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4mJm51bGwhPT1ufWZ1bmN0aW9uIGhGZShuKXtyZXR1cm4gbUcobikm'@; put 'JiJudW1iZXIiPT10eXBlb2Ygbi5yb3cmJiJudW1iZXIiPT10eXBlb2Ygbi5jb2x9ZnVuY3Rpb24gZkZlKG4pe3JldHVybiJ0b3AiPT09bnx8ImJvdHRvbSI9PT1ufHwic3RhcnQiPT09bnx8ImVuZCI9PT1ufWNvbnN0IHBGZT1bImRhc2hlZCIsImRvdHRlZCIsInNvbGlkIl07dmFyIGdGZT1u'@; put 'ZXcgV2Vha1NldCxtRmU9bmV3IFdlYWtTZXQsdkZlPW5ldyBXZWFrU2V0O2NsYXNzIE1CdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBnR31zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiA5MH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90'@; put 'LmdldFNldHRpbmdzKClbZ0ddfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixlPT5LMWUodGhpcyxtRmUseEJ0KS5jYWxsKHRoaXMsZSkpLHRoaXMuYWRkSG9vaygiaW5pdCIsKCk9PksxZSh0aGlzLHZG'@; put 'ZSxBQnQpLmNhbGwodGhpcykpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5oaWRlQm9yZGVycygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuY2hhbmdl'@; put 'Qm9yZGVyU2V0dGluZ3MoKSxzdXBlci51cGRhdGVQbHVnaW4oKX1zZXRCb3JkZXJzKGUsdCl7bGV0IHI9WyJ0b3AiLCJib3R0b20iLCJzdGFydCIsImVuZCJdLGk9bnVsbDt0JiYodGhpcy5jaGVja1NldHRpbmdzQ29oZXNpb24oW3RdKSxyPU9iamVjdC5rZXlzKHQpLGk9JDFlKHQpKTtjb25z'@; put 'dCBhPUpMKGNUKGUpLHtjcmVhdGVDZWxsQ29vcmRzOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzLmJpbmQodGhpcy5ob3QpLGNyZWF0ZUNlbGxSYW5nZTp0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlLmJpbmQodGhpcy5ob3QpfSk7WG4oZSxsPT57YShsKS5mb3JBbGwoKHUsZyk9PihYbihy'@; put 'LEU9Pnt0aGlzLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQodSxnLGksZnVuY3Rpb24gbUJ0KG4pe3JldHVybiBnQnQuZ2V0KG4pPz9ufShFKSl9KSwhMCkpfSksdGhpcy5ob3Qudmlldy5yZW5kZXIoKX1nZXRCb3JkZXJzKGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0aGlz'@; put 'LnNhdmVkQm9yZGVycztjb25zdCByPUpMKGNUKGUpLHtjcmVhdGVDZWxsQ29vcmRzOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzLmJpbmQodGhpcy5ob3QpLGNyZWF0ZUNlbGxSYW5nZTp0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlLmJpbmQodGhpcy5ob3QpfSksaT1bXTtyZXR1cm4gWG4o'@; put 'ZSxvPT57cihvKS5mb3JBbGwoKGEsbCk9PihYbih0aGlzLnNhdmVkQm9yZGVycyx1PT57dS5yb3c9PT1hJiZ1LmNvbD09PWwmJmkucHVzaChnTih1KSl9KSwhMCkpfSksaX1jbGVhckJvcmRlcnMoZSl7ZT90aGlzLnNldEJvcmRlcnMoZSk6KFhuKHRoaXMuc2F2ZWRCb3JkZXJzLHQ9Pnt0aGlz'@; put 'LmNsZWFyQm9yZGVyc0Zyb21TZWxlY3Rpb25TZXR0aW5ncyh0LmlkKSx0aGlzLmNsZWFyTnVsbENlbGxSYW5nZSgpLHRoaXMuaG90LnJlbW92ZUNlbGxNZXRhKHQucm93LHQuY29sLCJib3JkZXJzIil9KSx0aGlzLnNhdmVkQm9yZGVycy5sZW5ndGg9MCl9aW5zZXJ0Qm9yZGVySW50b1NldHRp'@; put 'bmdzKGUsdCl7dGhpcy5jaGVja1NhdmVkQm9yZGVycyhlKXx8dGhpcy5zYXZlZEJvcmRlcnMucHVzaChlKTtjb25zdCBpPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGUucm93LGUuY29sKSxvPXRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UoaSxpLGkpO3RoaXMuY2hlY2tDdXN0b21TZWxl'@; put 'Y3Rpb25zKGUsbyx0KXx8dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5hZGRDdXN0b21TZWxlY3Rpb24oe2JvcmRlcjplLHZpc3VhbENlbGxSYW5nZTpvfSl9cHJlcGFyZUJvcmRlckZyb21DdXN0b21BZGRlZChlLHQscixpKXtjb25zdCBvPXRoaXMuaG90LmNvdW50Um93cygpLGE9dGhp'@; put 'cy5ob3QuY291bnRDb2xzKCk7aWYoZT49b3x8dD49YSlyZXR1cm47bGV0IGw9cTFlKGUsdCk7ciYmKGw9ZnVuY3Rpb24gaEJ0KG4sZSl7cmV0dXJuIFJkKGUsImJvcmRlciIpJiZlLmJvcmRlciYmKG4uYm9yZGVyPWUuYm9yZGVyKSxmRyhuLGUsInRvcCIpLGZHKG4sZSwiYm90dG9tIiksZkco'@; put 'bixlLCJzdGFydCIpLGZHKG4sZSwiZW5kIiksbn0obCxyKSxYbih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsdT0+e2NvbnN0e3NldHRpbmdzOmd9PXU7aWYobC5pZD09PWcuaWQpe09iamVjdC5hc3NpZ24oZyxyKTtjb25zdCBFPWc7cmV0dXJuIGwuaWQ9'@; put 'RS5pZCxsLnRvcD1FLnRvcCxsLmJvdHRvbT1FLmJvdHRvbSxsLnN0YXJ0PUUuc3RhcnQsbC5lbmQ9RS5lbmQsITF9fSkpLHRoaXMuaG90LnNldENlbGxNZXRhKGUsdCwiYm9yZGVycyIsZ04obCkpLHRoaXMuaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzKGwsaSl9cHJlcGFyZUJvcmRlckZyb21D'@; put 'dXN0b21BZGRlZFJhbmdlKGUsdCl7Y29uc3Qgcj1NYXRoLm1pbihlLnRvLnJvdyx0aGlzLmhvdC5jb3VudFJvd3MoKS0xKSxpPU1hdGgubWluKGUudG8uY29sLHRoaXMuaG90LmNvdW50Q29scygpLTEpO1ZhKGUuZnJvbS5yb3cscixvPT57VmEoZS5mcm9tLmNvbCxpLGE9Pntjb25zdCBsPXEx'@; put 'ZShvLGEpO2xldCB1PTA7bz09PWUuZnJvbS5yb3cmJlJkKHQsInRvcCIpJiYodSs9MSxsLnRvcD10LnRvcCksbz09PWUudG8ucm93JiZSZCh0LCJib3R0b20iKSYmKHUrPTEsbC5ib3R0b209dC5ib3R0b20pLGE9PT1lLmZyb20uY29sJiZSZCh0LCJzdGFydCIpJiYodSs9MSxsLnN0YXJ0PXQu'@; put 'c3RhcnQpLGE9PT1lLnRvLmNvbCYmUmQodCwiZW5kIikmJih1Kz0xLGwuZW5kPXQuZW5kKSx1PjAmJih0aGlzLmhvdC5zZXRDZWxsTWV0YShvLGEsImJvcmRlcnMiLGdOKGwpKSx0aGlzLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhsLHZvaWQgMCkpfSl9KX1yZW1vdmVBbGxCb3JkZXJzKGUs'@; put 'dCl7Y29uc3Qgcj11RmUoZSx0KTt0aGlzLnNwbGljZUJvcmRlcihyKSx0aGlzLmNsZWFyQm9yZGVyc0Zyb21TZWxlY3Rpb25TZXR0aW5ncyhyKSx0aGlzLmNsZWFyTnVsbENlbGxSYW5nZSgpLHRoaXMuaG90LnJlbW92ZUNlbGxNZXRhKGUsdCwiYm9yZGVycyIpfXNldEJvcmRlcihlLHQscixp'@; put 'KXtjb25zdCBvPXRoaXMuaG90LmdldENlbGxNZXRhKGUsdCkuYm9yZGVycztsZXQgYTthPWZ1bmN0aW9uIEVCdChuKXtyZXR1cm4gbUcobikmJiJzdHJpbmciPT10eXBlb2Ygbi5pZCYmIm51bWJlciI9PXR5cGVvZiBuLnJvdyYmIm51bWJlciI9PXR5cGVvZiBuLmNvbH0obyk/JDFlKG8pOnEx'@; put 'ZShlLHQpLGk/KGFbcl09e2hpZGU6ITB9LDQ9PT10aGlzLmNvdW50SGlkZShhKT90aGlzLnJlbW92ZUFsbEJvcmRlcnMoZSx0KToodGhpcy5jaGVja0N1c3RvbVNlbGVjdGlvbnNGcm9tQ29udGV4dE1lbnUoYSxyLGkpfHx0aGlzLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhhLHZvaWQgMCks'@; put 'dGhpcy5ob3Quc2V0Q2VsbE1ldGEoZSx0LCJib3JkZXJzIixnTihhKSkpKTooYVtyXT17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9LHRoaXMuY2hlY2tDdXN0b21TZWxlY3Rpb25zRnJvbUNvbnRleHRNZW51KGEscixpKXx8dGhpcy5pbnNlcnRCb3JkZXJJbnRvU2V0dGluZ3MoYSx2b2lkIDApLHRo'@; put 'aXMuaG90LnNldENlbGxNZXRhKGUsdCwiYm9yZGVycyIsZ04oYSkpKX1wcmVwYXJlQm9yZGVyKGUsdCxyKXtYbihlLGk9PntpZighaEZlKGkuc3RhcnQpfHwhaEZlKGkuZW5kKSlyZXR1cm47Y29uc3R7c3RhcnQ6byxlbmQ6YX09e3N0YXJ0Omkuc3RhcnQsZW5kOmkuZW5kfTtpZihvLnJvdz09'@; put 'PWEucm93JiZvLmNvbD09PWEuY29sKSJub0JvcmRlcnMiPT09dD90aGlzLnJlbW92ZUFsbEJvcmRlcnMoby5yb3csby5jb2wpOnRoaXMuc2V0Qm9yZGVyKG8ucm93LG8uY29sLHQscik7ZWxzZSBzd2l0Y2godCl7Y2FzZSJub0JvcmRlcnMiOlZhKG8uY29sLGEuY29sLGw9PntWYShvLnJvdyxh'@; put 'LnJvdyx1PT57dGhpcy5yZW1vdmVBbGxCb3JkZXJzKHUsbCl9KX0pO2JyZWFrO2Nhc2UidG9wIjpWYShvLmNvbCxhLmNvbCxsPT57dGhpcy5zZXRCb3JkZXIoby5yb3csbCx0LHIpfSk7YnJlYWs7Y2FzZSJib3R0b20iOlZhKG8uY29sLGEuY29sLGw9Pnt0aGlzLnNldEJvcmRlcihhLnJvdyxs'@; put 'LHQscil9KTticmVhaztjYXNlInN0YXJ0IjpWYShvLnJvdyxhLnJvdyxsPT57dGhpcy5zZXRCb3JkZXIobCxvLmNvbCx0LHIpfSk7YnJlYWs7Y2FzZSJlbmQiOlZhKG8ucm93LGEucm93LGw9Pnt0aGlzLnNldEJvcmRlcihsLGEuY29sLHQscil9KX19KX1jcmVhdGVDdXN0b21Cb3JkZXJzKGUp'@; put 'e1huKGUsdD0+e2NvbnN0IHI9JDFlKHQpO3IucmFuZ2U/dGhpcy5wcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkUmFuZ2Uoci5yYW5nZSxyKTp0aGlzLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQoci5yb3c/PzAsci5jb2w/PzAscix2b2lkIDApfSl9Y291bnRIaWRlKGUpe2NvbnN0'@; put 'e3RvcDp0LGJvdHRvbTpyLHN0YXJ0OmksZW5kOm99PWU7cmV0dXJuIG0xKFt0LHIsaSxvXSwobCx1KT0+e2xldCBnPWw7cmV0dXJuIHUmJnUuaGlkZSYmKGcrPTEpLGd9LDApfWNsZWFyQm9yZGVyc0Zyb21TZWxlY3Rpb25TZXR0aW5ncyhlKXtjb25zdCB0PV9jKHRoaXMuaG90LnNlbGVjdGlv'@; put 'bi5oaWdobGlnaHQuY3VzdG9tU2VsZWN0aW9ucyxyPT5yLnNldHRpbmdzLmlkKS5pbmRleE9mKGUpO3Q+LTEmJnRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9tU2VsZWN0aW9uc1t0XS5jbGVhcigpfWNsZWFyTnVsbENlbGxSYW5nZSgpe1huKHRoaXMuaG90LnNlbGVjdGlvbi5o'@; put 'aWdobGlnaHQuY3VzdG9tU2VsZWN0aW9ucywoZSx0KT0+e2lmKG51bGw9PT1lLmNlbGxSYW5nZSlyZXR1cm4gZS5kZXN0cm95KCksdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLnNwbGljZSh0LDEpLCExfSl9aGlkZUJvcmRlcnMoKXtYbih0aGlzLnNhdmVk'@; put 'Qm9yZGVycyxlPT57dGhpcy5jbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MoZS5pZCksdGhpcy5jbGVhck51bGxDZWxsUmFuZ2UoKX0pfXNwbGljZUJvcmRlcihlKXtjb25zdCB0PV9jKHRoaXMuc2F2ZWRCb3JkZXJzLHI9PnIuaWQpLmluZGV4T2YoZSk7dD4tMSYmdGhpcy5zYXZl'@; put 'ZEJvcmRlcnMuc3BsaWNlKHQsMSl9Y2hlY2tTYXZlZEJvcmRlcnMoZSl7bGV0IHQ9ITE7cmV0dXJuIDQ9PT10aGlzLmNvdW50SGlkZShlKT8odGhpcy5zcGxpY2VCb3JkZXIoZS5pZCksdD0hMCk6WG4odGhpcy5zYXZlZEJvcmRlcnMsKGksbyk9PntpZihlLmlkPT09aS5pZClyZXR1cm4gdGhp'@; put 'cy5zYXZlZEJvcmRlcnNbb109ZSx0PSEwLCExfSksdH1jaGVja0N1c3RvbVNlbGVjdGlvbnNGcm9tQ29udGV4dE1lbnUoZSx0LHIpe2xldCBpPSExO3JldHVybiBYbih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsYT0+e2lmKGUuaWQ9PT1hLnNldHRpbmdz'@; put 'LmlkKXtjb25zdCBsPXRoaXMuaG90LnZpZXcuX3d0LnNlbGVjdGlvbk1hbmFnZXIuZ2V0Qm9yZGVySW5zdGFuY2VzKGEpO3JldHVybiBmRmUodCkmJlhuKGwsdT0+e3UudG9nZ2xlSGlkZGVuQ2xhc3ModCxyPz8hMSl9KSxpPSEwLCExfX0pLGl9Y2hlY2tDdXN0b21TZWxlY3Rpb25zKGUsdCxy'@; put 'KXtjb25zdCBpPXRoaXMuY291bnRIaWRlKGUpO2xldCBvPSExO3JldHVybiA0PT09aT8odGhpcy5yZW1vdmVBbGxCb3JkZXJzKGUucm93LGUuY29sKSxvPSEwKTpYbih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsYT0+e2lmKGUuaWQ9PT1hLnNldHRpbmdz'@; put 'LmlkKXJldHVybiBhLnZpc3VhbENlbGxSYW5nZT10LGEuY29tbWl0KCksciYmZkZlKHIpJiZYbih0aGlzLmhvdC52aWV3Ll93dC5zZWxlY3Rpb25NYW5hZ2VyLmdldEJvcmRlckluc3RhbmNlcyhhKSx1PT57dS5jaGFuZ2VCb3JkZXJTdHlsZShyLGUpfSksbz0hMCwhMX0pLG99Y2hhbmdlQm9y'@; put 'ZGVyU2V0dGluZ3MoKXtjb25zdCBlPXRoaXMuaG90LmdldFNldHRpbmdzKClbZ0ddO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9QWQoZS5maWx0ZXIobUcpKTt0aGlzLmNoZWNrU2V0dGluZ3NDb2hlc2lvbih0KSx0Lmxlbmd0aHx8KHRoaXMuc2F2ZWRCb3JkZXJzPVtdKSx0aGlzLmNy'@; put 'ZWF0ZUN1c3RvbUJvcmRlcnModCl9ZWxzZSB2b2lkIDAhPT1lJiZ0aGlzLmNyZWF0ZUN1c3RvbUJvcmRlcnModGhpcy5zYXZlZEJvcmRlcnMpfWNoZWNrU2V0dGluZ3NDb2hlc2lvbihlKXtjb25zdCB0PWZ1bmN0aW9uIGZCdChuKXtyZXR1cm4gbi5zb21lKGU9PlpvKGUubGVmdCl8fFpvKGUu'@; put 'cmlnaHQpKX0oZSkscj1mdW5jdGlvbiBwQnQobil7cmV0dXJuIG4uc29tZShlPT5abyhlLnN0YXJ0KXx8Wm8oZS5lbmQpKX0oZSk7dCYmciYmSnIoJ1RoZSAibGVmdCIvInJpZ2h0IiBhbmQgInN0YXJ0Ii8iZW5kIiBvcHRpb25zIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNl'@; put 'IHVzZSBvbmx5IHRoZSBvcHRpb24gInN0YXJ0Ii8iZW5kIi4nKSx0aGlzLmhvdC5pc1J0bCgpJiZ0JiZKcignVGhlICJsZWZ0Ii8icmlnaHQiIHByb3BlcnRpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFJUTC4gUGxlYXNlIHVzZSBvcHRpb24gInN0YXJ0Ii8iZW5kIi4nKSxLMWUodGhpcyxn'@; put 'RmUsVEJ0KS5jYWxsKHRoaXMsZSl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxYMWUodGhpcyxnRmUpLFgxZSh0aGlzLG1GZSksWDFlKHRoaXMsdkZlKSx0aGlzLnNhdmVkQm9yZGVycz1bXX19ZnVuY3Rpb24gVEJ0KG4pe24uZm9yRWFj'@; put 'aChlPT57T2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT57Y29uc3Qgcj1lW3RdO2lmKCFtRyhyKSlyZXR1cm47Y29uc3R7c3R5bGU6aX09cjtabyhpKSYmInN0cmluZyI9PXR5cGVvZiBpJiYhcEZlLmluY2x1ZGVzKGkpPyhIYShgVGhlICIke2l9IiBib3JkZXIgc3R5bGUgaXMgbm90IHN1cHBv'@; put 'cnRlZC4gUGxlYXNlIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHlsZXM6ICR7cEZlLmpvaW4oIiwgIil9LlxuVGhlIGJvcmRlciBzdHlsZSB3aWxsIGJlIGlnbm9yZWQuYCksZGVsZXRlIHIuc3R5bGUpOlpvKGkpJiYic29saWQiPT09aSYmZGVsZXRlIHIuc3R5bGV9KX0pfWZ1bmN0aW9u'@; put 'IHhCdChuKXtpZighdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtnR118fCJvYmplY3QiIT10eXBlb2Ygbnx8bnVsbD09PW4pcmV0dXJuO2NvbnN0IGU9bix7aXRlbXM6dH09ZTtBcnJheS5pc0FycmF5KHQpJiZ0LnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LHtrZXk6ImJvcmRlcnMiLG5hbWUoKXty'@; put 'ZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKExjZSl9LGRpc2FibGVkKCl7Y29uc3Qgcj10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtyZXR1cm4hKHImJiFyLmlzU2luZ2xlSGVhZGVyKCkpfHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKX0sc3VibWVudTp7'@; put 'aXRlbXM6W3ZCdCh0aGlzKSxfQnQodGhpcykseUJ0KHRoaXMpLGJCdCh0aGlzKSx3QnQodGhpcyldfX0pfWZ1bmN0aW9uIEFCdCgpe3RoaXMuY2hhbmdlQm9yZGVyU2V0dGluZ3MoKX1jb25zdCBtTj0iZGF0YVByb3ZpZGVyIixSQnQ9e3Jvd0lkOnZvaWQgMCxmZXRjaFJvd3M6dm9pZCAwLG9u'@; put 'Um93c0NyZWF0ZTp2b2lkIDAsb25Sb3dzVXBkYXRlOnZvaWQgMCxvblJvd3NSZW1vdmU6dm9pZCAwfSxRMWU9e3Jvd0lkOm49PiJzdHJpbmciPT10eXBlb2Ygbnx8X2EobiksZmV0Y2hSb3dzOm49Pl9hKG4pLG9uUm93c0NyZWF0ZTpuPT5fYShuKSxvblJvd3NVcGRhdGU6bj0+X2Eobiksb25S'@; put 'b3dzUmVtb3ZlOm49Pl9hKG4pfSxfRmU9T2JqZWN0LmZyZWV6ZSh7cGFnZToxLHBhZ2VTaXplOjEwLHNvcnQ6bnVsbCxmaWx0ZXJzOm51bGx9KSx5RmU9bmV3IFNldChbImVkaXQiLHZvaWQgMCwiQ29weVBhc3RlLnBhc3RlIiwiQ29weVBhc3RlLmN1dCIsIkF1dG9maWxsLmZpbGwiLCJDb250'@; put 'ZXh0TWVudS5jbGVhckNvbHVtbiIsIkRhdGFQcm92aWRlci5yZXZlcnQiXSksYkZlPSJEYXRhUHJvdmlkZXI6IGNhbm5vdCBzZW5kIHJvdyB1cGRhdGUgYmVjYXVzZSBgcm93SWRgIHJlc29sdmVzIHRvIG51bGwgb3IgdW5kZWZpbmVkIGZvciB0aGF0IHJvdy4iO2Z1bmN0aW9uIERCdChuKXty'@; put 'ZXR1cm5gRGF0YVByb3ZpZGVyOiBjYW5ub3QgcmVtb3ZlIHJvdyBhdCB2aXN1YWwgaW5kZXggJHtufSBiZWNhdXNlIFxgcm93SWRcYCByZXNvbHZlcyB0byBudWxsIG9yIHVuZGVmaW5lZC5gfWZ1bmN0aW9uIEoxZShuLGUsdCl7aWYoITE9PT1uLnJ1bkhvb2tzKCJiZWZvcmVSb3dzTXV0YXRp'@; put 'b24iLGUsdCkpcmV0dXJuITF9ZnVuY3Rpb24gd0ZlKG4sZSx0KXtuLnJ1bkhvb2tzKCJhZnRlclJvd3NNdXRhdGlvbiIsZSx0KX1mdW5jdGlvbiBRVChuLGUsdCxyKXtuLnJ1bkhvb2tzKCJhZnRlclJvd3NNdXRhdGlvbkVycm9yIixlLHQscil9ZnVuY3Rpb24gX0cobixlLHQpe3JldHVybiBm'@; put 'dW5jdGlvbiBGQnQobixlKXtpZihudWxsIT1lKXtpZihfYShlKSlyZXR1cm4gZShuKTtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIHNMKG4sZSl9fShuLmdldFNvdXJjZURhdGFBdFJvdyhuLnRvUGh5c2ljYWxSb3codCkpLGUpfWZ1bmN0aW9uIHlHKG4pe3JldHVybiBudWxsPT1ufWZ1'@; put 'bmN0aW9uIENGZShuLGUsdCl7Zm9yKGxldCByPTA7cjxuLmNvdW50Um93cygpO3IrPTEpaWYoX0cobixlLHIpPT09dClyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiBTRmUobixlLHQpe2NvbnN0IHI9T2JqZWN0LmVudHJpZXModCk7cmV0dXJuIDA9PT1yLmxlbmd0aD9Qcm9taXNlLnJlc29s'@; put 'dmUoITApOm5ldyBQcm9taXNlKGk9PntsZXQgbz1yLmxlbmd0aCxhPSEwO2NvbnN0IGw9KCk9PntvLT0xLDA9PT1vJiZpKGEpfTtyLmZvckVhY2goKFt1LGddKT0+e2NvbnN0IEU9bi5wcm9wVG9Db2wodSk7aWYodm9pZCAwPT09RXx8RTwwKXJldHVybiB2b2lkIGwoKTtjb25zdCBPPW4uZ2V0'@; put 'Q2VsbE1ldGEoZSxFKTtuLmdldENlbGxWYWxpZGF0b3IoTyk/bi52YWxpZGF0ZUNlbGwoZyxPLFo9PnshMT09PVomJiExPT09Ty5hbGxvd0ludmFsaWQmJihhPSExKSxsKCl9LCJEYXRhUHJvdmlkZXIudXBkYXRlUm93cyIpOmwoKX0pfSl9ZnVuY3Rpb24gZTBlKCl7cmV0dXJuIGUwZT1Dcihm'@; put 'dW5jdGlvbioobixlLHQscj17fSl7Y29uc3QgaT1lLmdldE9uUm93c1VwZGF0ZSgpO2lmKCFfYShpKSlyZXR1cm47Y29uc3Qgbz17cm93czp0fSx7cmV2ZXJ0T3B0aW1pc3RpYzphfT1yLHtvblJlcXVlc3RGYWlsZWQ6bH09ZTt0cnl7eWllbGQgaSh0KX1jYXRjaCh1KXtyZXR1cm4gUVQobiwi'@; put 'dXBkYXRlIix1LG8pLGUubG9nRXJyb3IoIlJvdyB1cGRhdGUgZmFpbGVkOiIsdSksX2EoYSkmJmEoKSxuLnJlbmRlcigpLHZvaWQgbD8uKCJ1cGRhdGUiLHUpfXRyeXt3RmUobiwidXBkYXRlIixvKSx5aWVsZCBlLmZldGNoRGF0YSgpfWNhdGNoKHUpe1FUKG4sInVwZGF0ZSIsdSxvKSxlLmxv'@; put 'Z0Vycm9yKCJEYXRhIHJlbG9hZCBmYWlsZWQ6Iix1KSxfYShhKSYmYSgpLG4ucmVuZGVyKCl9fSksZTBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB0MGUoKXtyZXR1cm4gdDBlPUNyKGZ1bmN0aW9uKihuLGUsdCl7Y29uc3R7Z2V0Um93SWRPcHRpb246cixjb21taXRSb3dzVXBk'@; put 'YXRlOml9PWUsbz17cm93czp0fTtpZighMT09PUoxZShuLCJ1cGRhdGUiLG8pKXJldHVybjtjb25zdCBhPXIoKTtpZigoeWllbGQgUHJvbWlzZS5hbGwodC5tYXAoZnVuY3Rpb24oKXt2YXIgdT1DcihmdW5jdGlvbiooZyl7Y29uc3QgRT1DRmUobixhLGcuaWQpO3JldHVybiBFPDB8fFNGZShu'@; put 'LEUsZy5jaGFuZ2VzPz97fSl9KTtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIHUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkpKS5zb21lKHU9PiF1KSlyZXR1cm4gUVQobiwidXBkYXRlIixuZXcgRXJyb3IoIlJvdyB1cGRhdGUgdmFsaWRhdGlvbiBmYWlsZWQiKSxvKSx2b2lkIG03KCJS'@; put 'b3cgdXBkYXRlIGZhaWxlZDogdmFsaWRhdGlvbiBmYWlsZWQgZm9yIG9uZSBvciBtb3JlIGNlbGxzIik7eWllbGQgaSh0KX0pLHQwZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbjBlKCl7cmV0dXJuIG4wZT1DcihmdW5jdGlvbioobixlLHQpe2NvbnN0e2dldFJvd0lkT3B0aW9u'@; put 'OnIsY29tbWl0Um93c1VwZGF0ZTppfT1lLG89bmV3IE1hcDt0LmZvckVhY2goWj0+e2NvbnN0IGVlPVpbMF07by5oYXMoZWUpfHxvLnNldChlZSxbXSksby5nZXQoZWUpLnB1c2goWil9KTtjb25zdCBhPVsuLi5vLmtleXMoKV0uc29ydCgoWixlZSk9PlotZWUpLGw9cigpLHU9YS5tYXAoWj0+'@; put 'e2NvbnN0e2NoYW5nZXNPYmo6ZWUscm93RGF0YTp2ZX09ZnVuY3Rpb24gSEJ0KG4sZSl7Y29uc3Qgcj1uLmdldFNvdXJjZURhdGFBdFJvdyhuLnRvUGh5c2ljYWxSb3coZVswXVswXSkpLGk9ciYmIm9iamVjdCI9PXR5cGVvZiByJiYhQXJyYXkuaXNBcnJheShyKSxvPXt9O2xldCBhO3JldHVy'@; put 'biBlLmZvckVhY2goKFssbCwsdV0pPT57Y29uc3QgZz0ibnVtYmVyIj09dHlwZW9mIGw/bDpuLnByb3BUb0NvbChsKSxFPWk/bi5jb2xUb1Byb3AoZyk6ZztvW0VdPXV9KSxBcnJheS5pc0FycmF5KHIpPyhhPVsuLi5yXSxlLmZvckVhY2goKFssbCwsdV0pPT57Y29uc3QgZz0ibnVtYmVyIj09'@; put 'dHlwZW9mIGw/bDpuLnByb3BUb0NvbChsKTthW2ddPXV9KSk6YT1pP3suLi5yLC4uLm99OnsuLi5vfSx7Y2hhbmdlc09iajpvLHJvd0RhdGE6YX19KG4sby5nZXQoWikpO3JldHVybntpZDpfRyhuLGwsWiksY2hhbmdlczplZSxyb3dEYXRhOnZlfX0pLGc9e3Jvd3M6dX0sRT0oKT0+ZnVuY3Rp'@; put 'b24gVkJ0KG4sZSl7ZT8ubGVuZ3RoJiZuLmJhdGNoKCgpPT57ZS5mb3JFYWNoKChbdCxyLGldKT0+e24uc2V0RGF0YUF0Um93UHJvcCh0LHIsaSwiRGF0YVByb3ZpZGVyLnJldmVydCIpfSl9KX0obix0KTtyZXR1cm4gdS5zb21lKFo9PnlHKFouaWQpKT8oRSgpLFFUKG4sInVwZGF0ZSIsbmV3'@; put 'IEVycm9yKGJGZSksZyksbTcoIlJvdyB1cGRhdGUgZmFpbGVkOiIsYkZlKSx2b2lkIG4ucmVuZGVyKCkpOiExIT09SjFlKG4sInVwZGF0ZSIsZyk/KHlpZWxkIFByb21pc2UuYWxsKGEubWFwKChaLGVlKT0+U0ZlKG4sWix1W2VlXS5jaGFuZ2VzKSkpKS5zb21lKFo9PiFaKT8oRSgpLFFUKG4s'@; put 'InVwZGF0ZSIsbmV3IEVycm9yKCJSb3cgdXBkYXRlIHZhbGlkYXRpb24gZmFpbGVkIiksZyksbTcoIlJvdyB1cGRhdGUgZmFpbGVkOiB2YWxpZGF0aW9uIGZhaWxlZCBmb3Igb25lIG9yIG1vcmUgY2VsbHMiKSx2b2lkIG4ucmVuZGVyKCkpOnZvaWQoeWllbGQgaSh1LHtyZXZlcnRPcHRpbWlz'@; put 'dGljOkV9KSk6dm9pZCBFKCl9KSxuMGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHFCdChuLGUsdCxyKXtyZXR1cm4iaW5zZXJ0X3Jvd19hYm92ZSI9PT1lfHwiaW5zZXJ0X3Jvd19iZWxvdyI9PT1lP2Z1bmN0aW9uIEdCdChuLGUsdCxyKXtjb25zdHtob3Q6aSxnZXRPblJvd3ND'@; put 'cmVhdGU6byxnZXRSb3dJZDphLGNyZWF0ZVJvd3M6bH09bjtpZighX2EobygpKSlyZXR1cm47Y29uc3QgdT1pLmNvdW50U291cmNlUm93cygpO2lmKGkuZ2V0U2V0dGluZ3MoKS5tYXhSb3dzPT09dSlyZXR1cm47Y29uc3QgZz0iaW5zZXJ0X3Jvd19iZWxvdyI9PT1lPyJiZWxvdyI6ImFib3Zl'@; put 'IixFPXQ/PygiYmVsb3ciPT09Zz91OjApO3JldHVybiBsKHtwb3NpdGlvbjpnLHJlZmVyZW5jZVJvd0lkOiJudW1iZXIiPT10eXBlb2YgRSYmRT49MD9hKEUpOnZvaWQgMCxyb3dzQW1vdW50OiJudW1iZXIiPT10eXBlb2YgciYmcj49MT9yOjF9KSwhMX0obixlLHQscik6InJlbW92ZV9yb3ci'@; put 'PT09ZT9mdW5jdGlvbiAkQnQobixlLHQpe2NvbnN0e2hvdDpyLGdldE9uUm93c1JlbW92ZTppLGdldFJvd0lkT3B0aW9uOm8scmVtb3ZlUm93czphfT1uO2lmKCFfYShpKCkpKXJldHVybjtjb25zdCBsPWZ1bmN0aW9uIFBCdChuLGUsdCxyKXtjb25zdCBpPVtdLG89KCk9Pm4uY291bnRSb3dz'@; put 'KCksYT0obCx1KT0+e2ZvcihsZXQgZz0wO2c8dTtnKz0xKXtjb25zdCBFPWwrZztpZihFPj0wJiZFPG8oKSl7Y29uc3QgTz1fRyhuLGUsRSk7eUcoTykmJkpyKERCdChFKSksaS5wdXNoKE8pfX19O2lmKEFycmF5LmlzQXJyYXkodCkpdC5mb3JFYWNoKChbbCx1XSk9Pntjb25zdCBnPW51bGw9'@; put 'PWw/TWF0aC5tYXgoMCxvKCktKHU/PzEpKTpNYXRoLm1heCgwLGwpO2EoZyx1Pz8xKX0pO2Vsc2V7Y29uc3QgbD0ibnVtYmVyIj09dHlwZW9mIHImJnI+PTE/cjoxLHU9bnVsbD09dD9NYXRoLm1heCgwLG8oKS1sKTpNYXRoLm1heCgwLHQpO2EodSxsKX1yZXR1cm4gaX0ocixvKCksZSx0KTty'@; put 'ZXR1cm4gMCE9PWwubGVuZ3RoPyhhKGwpLCExKTp2b2lkIDB9KG4sdCxyKTp2b2lkIDB9ZnVuY3Rpb24gWEJ0KG4pe3JldHVybiBudWxsPT09bj9udWxsOm4ubWFwKGU9Pih7cHJvcDplLnByb3Asb3BlcmF0aW9uOmUub3BlcmF0aW9uLGNvbmRpdGlvbnM6KGUuY29uZGl0aW9uc3x8W10pLm1h'@; put 'cCh0PT4oe25hbWU6dC5uYW1lLGFyZ3M6QXJyYXkuaXNBcnJheSh0LmFyZ3MpP1suLi50LmFyZ3NdOltdfSkpfSkpfWZ1bmN0aW9uIEVGZShuLGUpe2lmKCFBcnJheS5pc0FycmF5KGUpfHwwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgdD1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3Ro'@; put 'O3IrKyl7Y29uc3QgaT1lW3JdLG89bi50b1Zpc3VhbENvbHVtbihpLmNvbHVtbiksYT1uLmNvbFRvUHJvcChvKTtudWxsIT1hJiZ0LnB1c2goe3Byb3A6U3RyaW5nKGEpLG9wZXJhdGlvbjppLm9wZXJhdGlvbixjb25kaXRpb25zOmkuY29uZGl0aW9ucy5tYXAobD0+KHtuYW1lOmwubmFtZSxh'@; put 'cmdzOkFycmF5LmlzQXJyYXkobC5hcmdzKT9bLi4ubC5hcmdzXTpbXX0pKX0pfXJldHVybiAwPT09dC5sZW5ndGg/bnVsbDp0fWNvbnN0IHZOPSJwYWdpbmF0aW9uIjtjb25zdCBNRmU9ImNvbHVtblNvcnRpbmciO2Z1bmN0aW9uIEpUKG4sZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtjb25z'@; put 'dCB0PWUudHJpbSgpO3QmJm4ucHVzaCh0KX19ZnVuY3Rpb24gVEZlKG4sZSl7aWYoIW58fCJvYmplY3QiIT10eXBlb2Ygbnx8QXJyYXkuaXNBcnJheShuKSlyZXR1cm47Y29uc3QgdD1uO0pUKGUsdC5tZXNzYWdlKSxKVChlLHQuZXJyb3IpLCJzdHJpbmciPT10eXBlb2YgdC5kZXRhaWwmJkpU'@; put 'KGUsdC5kZXRhaWwpfWZ1bmN0aW9uIHhGZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gQUZlKG4sZSx0KXtpZighZS5oYXMobikpdGhy'@; put 'b3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIEV1KG4sZSl7cmV0dXJuIGZ1bmN0aW9uIF9qdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4s'@; put 'QUZlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIHJnKG4sZSx0KXt4RmUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIFgxKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24geWp0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9y'@; put 'KCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixBRmUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIExzKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9u'@; put 'IG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIHMyKG4sZSl7eEZlKG4sZSksZS5hZGQobil9c09lKCJkYXRhUHJvdmlkZXIiLFsibWFudWFsUm93TW92ZSIsIm1hbnVhbENvbHVtbk1vdmUiLCJ0cmltUm93cyIsIm11bHRpQ29sdW1uU29ydGluZyJdKTt2YXIgSzI9bmV3IFdlYWtN'@; put 'YXAsXzY9bmV3IFdlYWtNYXAscjBlPW5ldyBXZWFrTWFwLGV4PW5ldyBXZWFrU2V0LHR4PW5ldyBXZWFrU2V0LF9OPW5ldyBXZWFrU2V0LGkwZT1uZXcgV2Vha1NldCx5Tj1uZXcgV2Vha1NldCxvMGU9bmV3IFdlYWtTZXQsbng9bmV3IFdlYWtTZXQsYTBlPW5ldyBXZWFrU2V0LGtGZT1uZXcg'@; put 'V2Vha1NldCxSRmU9bmV3IFdlYWtTZXQsSUZlPW5ldyBXZWFrU2V0LHMwZT1uZXcgV2Vha1NldCxsMGU9bmV3IFdlYWtTZXQsYkc9bmV3IFdlYWtTZXQsd0c9bmV3IFdlYWtTZXQsYzBlPW5ldyBXZWFrU2V0LHUwZT1uZXcgV2Vha1NldCxDRz1uZXcgV2Vha01hcCxkMGU9bmV3IFdlYWtNYXAs'@; put 'aDBlPW5ldyBXZWFrTWFwLGYwZT1uZXcgV2Vha01hcCxwMGU9bmV3IFdlYWtNYXAsZzBlPW5ldyBXZWFrTWFwLG0wZT1uZXcgV2Vha01hcCx2MGU9bmV3IFdlYWtNYXAsXzBlPW5ldyBXZWFrTWFwLHkwZT1uZXcgV2Vha01hcDtjbGFzcyBianQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJ'@; put 'Tl9LRVkoKXtyZXR1cm4gbU59c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gOTUwfXN0YXRpYyBnZXQgU0VUVElOR19LRVlTKCl7cmV0dXJuW21OXX1zdGF0aWMgZ2V0IERFRkFVTFRfU0VUVElOR1MoKXtyZXR1cm4gUkJ0fXN0YXRpYyBnZXQgU0VUVElOR1NfVkFMSURBVE9S'@; put 'Uygpe3JldHVybiBRMWV9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW21OXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fChMcyh0aGlzLGEwZSxPRmUpLmNhbGwodGhpcyksdGhpcy5hZGRIb29rKCJoYXNFeHRlcm5hbERhdGFTb3VyY2UiLEV1KHRoaXMs'@; put 'Q0cpKSx0aGlzLmFkZEhvb2soImFmdGVySW5pdCIsRXUodGhpcyxkMGUpKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlYWRlciIsRXUodGhpcyxtMGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblNvcnQiLEV1KHRoaXMsZzBlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvU3RhY2tD'@; put 'aGFuZ2UiLEV1KHRoaXMsdjBlKSksdGhpcy5hZGRIb29rKCJhZnRlckNoYW5nZSIsRXUodGhpcyxfMGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZUFsdGVyIixFdSh0aGlzLHkwZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJQYWdlQ2hhbmdlIixFdSh0aGlzLGgwZSkpLHRoaXMuYWRkSG9vaygiYWZ0'@; put 'ZXJQYWdlU2l6ZUNoYW5nZSIsRXUodGhpcyxmMGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZUZpbHRlciIsRXUodGhpcyxwMGUpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSx0aGlzLmhvdC52aWV3'@; put 'JiZ0aGlzLmZldGNoRGF0YSgpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXtMcyh0aGlzLGwwZSxGRmUpLmNhbGwodGhpcyksWDEodGhpcyxLMix7Li4uX0ZlfSksc3VwZXIuZGlzYWJsZVBsdWdpbigpfWdldFF1ZXJ5UGFyYW1ldGVycygpe3JldHVybiBMcyh0aGlzLG54'@; put 'LENOKS5jYWxsKHRoaXMsRXUodGhpcyxLMikpfWdldFJvd0lkKGUpe3JldHVybiBfRyh0aGlzLmhvdCxMcyh0aGlzLHR4LHdOKS5jYWxsKHRoaXMpLGUpfWZldGNoRGF0YSgpe3ZhciBlPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKih0PXt9KXtjb25zdCByPUxzKGUsX04sU0cpLmNhbGwoZSk7'@; put 'aWYoIV9hKHIpKXJldHVybiBlLmhvdC5yZW5kZXIoKSxudWxsO2NvbnN0IGk9THMoZSxSRmUsQ2p0KS5jYWxsKGUsdCksbz1McyhlLElGZSxTanQpLmNhbGwoZSkse3NpZ25hbDphfT1vO2lmKCExPT09ZS5ob3QucnVuSG9va3MoImJlZm9yZURhdGFQcm92aWRlckZldGNoIixpKSlyZXR1cm4g'@; put 'WDEoZSxfNixudWxsKSxlLmhvdC5yZW5kZXIoKSxudWxsO2NvbnN0IGw9THMoZSxueCxDTikuY2FsbChlLGkpO3RyeXtjb25zdCB1PXlpZWxkIHIobCx7c2lnbmFsOmF9KTtpZihhLmFib3J0ZWQpcmV0dXJuIExzKGUsczBlLE5GZSkuY2FsbChlLGksdm9pZCAwKSxudWxsO2NvbnN0IGc9QXJy'@; put 'YXkuaXNBcnJheSh1Py5yb3dzKT91LnJvd3M6W10sRT0ibnVtYmVyIj09dHlwZW9mIHU/LnRvdGFsUm93cyYmdS50b3RhbFJvd3M+PTA/dS50b3RhbFJvd3M6Zy5sZW5ndGgsTz1McyhlLG54LENOKS5jYWxsKGUsaSksWj1mdW5jdGlvbiB2anQobixlLHQpe2NvbnN0IGk9TWF0aC5tYXgoMSxN'@; put 'YXRoLmNlaWwodC8oIm51bWJlciI9PXR5cGVvZiBlJiZlPj0xP2U6MTApKSk7cmV0dXJuIE1hdGgubWF4KDEsTWF0aC5taW4obixpKSl9KE8ucGFnZSxPLnBhZ2VTaXplLEUpO2lmKFohPT1PLnBhZ2UpcmV0dXJuIGUuZmV0Y2hEYXRhKHsuLi50LHBhZ2U6Wixza2lwTG9hZGluZzp0LnNraXBM'@; put 'b2FkaW5nfSk7WDEoZSxLMixPKSxlLmhvdC5sb2FkRGF0YShnLG1OKTtjb25zdCBlZT1mdW5jdGlvbiBoanQobixlKXtjb25zdCB0PWZ1bmN0aW9uIGxqdChuLGUpe2lmKG51bGw9PW58fCJvYmplY3QiIT10eXBlb2YgbilyZXR1cm4gbnVsbDtpZigic3RyaW5nIiE9dHlwZW9mIG4ucHJvcCly'@; put 'ZXR1cm4gbnVsbDtjb25zdCByPW4ub3JkZXI/P24uc29ydE9yZGVyO2lmKCJhc2MiIT09ciYmImRlc2MiIT09cnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7Y29uc3QgaT1lKG4ucHJvcCk7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBpP251bGw6e2NvbHVtbjppLHNvcnRPcmRl'@; put 'cjpyfX0oZSxyPT5uLnByb3BUb0NvbChyKSk7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmImNvbHVtbiJpbiB0P3Q6W119KGUuaG90LE8uc29ydD8/bnVsbCksdmU9ZnVuY3Rpb24gUUJ0KG4sZSl7aWYobnVsbD09ZSlyZXR1cm5bXTtpZighQXJyYXkuaXNBcnJheShlKXx8MD09PWUu'@; put 'bGVuZ3RoKXJldHVybltdO2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IGk9ZVtyXSxvPW4ucHJvcFRvQ29sKGkucHJvcCk7aWYobnVsbD09b3x8bzwwKWNvbnRpbnVlO2NvbnN0IGE9bi50b1BoeXNpY2FsQ29sdW1uKG8pO3QucHVzaCh7Y29sdW1uOmEsb3Bl'@; put 'cmF0aW9uOmkub3BlcmF0aW9uLGNvbmRpdGlvbnM6KGkuY29uZGl0aW9uc3x8W10pLm1hcChsPT4oe25hbWU6bC5uYW1lPz8iIixhcmdzOkFycmF5LmlzQXJyYXkobC5hcmdzKT9bLi4ubC5hcmdzXTpbXX0pKX0pfXJldHVybiB0fShlLmhvdCxPLmZpbHRlcnM/P251bGwpO3JldHVybiBlLmhv'@; put 'dC5ydW5Ib29rcygiYWZ0ZXJEYXRhUHJvdmlkZXJGZXRjaCIsey4uLnUscm93czpnLHRvdGFsUm93czpFLHF1ZXJ5UGFyYW1ldGVyczpPLGNvbHVtblNvcnRDb25maWc6ZWUsZmlsdGVyc0NvbmRpdGlvbnNTdGFjazp2ZX0pLGUuaG90LnJlbmRlcigpLHtyb3dzOmcsdG90YWxSb3dzOkV9fWNh'@; put 'dGNoKHUpe2lmKGEuYWJvcnRlZHx8dSBpbnN0YW5jZW9mIEVycm9yJiYiQWJvcnRFcnJvciI9PT11Lm5hbWUpcmV0dXJuIExzKGUsczBlLE5GZSkuY2FsbChlLGksdSksbnVsbDt0aHJvdyBlLmhvdC5ydW5Ib29rcygiYWZ0ZXJEYXRhUHJvdmlkZXJGZXRjaEVycm9yIix1LExzKGUsbngsQ04p'@; put 'LmNhbGwoZSxpKSksTHMoZSx3Ryx3MGUpLmNhbGwoZSwiZmV0Y2giLHUpLHV9ZmluYWxseXtFdShlLF82KT09PW8mJlgxKGUsXzYsbnVsbCl9fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNyZWF0ZVJvd3MoKXt2YXIgZT10aGlzO3JldHVybiBDcihmdW5jdGlvbioodD17fSl7Y29uc3Qgcj1M'@; put 'cyhlLGkwZSxERmUpLmNhbGwoZSk7aWYoIV9hKHIpKXJldHVybjtjb25zdCBpPXtwb3NpdGlvbjp0LnBvc2l0aW9uPz8iYmVsb3ciLHJlZmVyZW5jZVJvd0lkOnQucmVmZXJlbmNlUm93SWQscm93c0Ftb3VudDp0LnJvd3NBbW91bnQ/PzF9LG89e3Jvd3NDcmVhdGU6aX07cmV0dXJuIExzKGUs'@; put 'dTBlLEhGZSkuY2FsbChlLCJjcmVhdGUiLG8sKCk9PlByb21pc2UucmVzb2x2ZShyKGkpKSxDcihmdW5jdGlvbiooKXt5aWVsZCBlLmZldGNoRGF0YSh7c2tpcExvYWRpbmc6ITB9KX0pKX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZW1vdmVSb3dzKGUpe3ZhciB0PXRoaXM7cmV0dXJuIENy'@; put 'KGZ1bmN0aW9uKigpe2NvbnN0IHI9THModCxvMGUsTEZlKS5jYWxsKHQpO2lmKCFfYShyKSlyZXR1cm47Y29uc3QgaT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2kuZm9yRWFjaChhPT57eUcoYSkmJkpyKCJEYXRhUHJvdmlkZXI6IGByZW1vdmVSb3dzYCByZXF1aXJlcyBldmVyeSBpZCB0byBi'@; put 'ZSBub24tbnVsbC4iKX0pO2NvbnN0IG89e3Jvd3NSZW1vdmU6aX07cmV0dXJuIExzKHQsdTBlLEhGZSkuY2FsbCh0LCJyZW1vdmUiLG8sKCk9PnIoaSksQ3IoZnVuY3Rpb24qKCl7Y29uc3QgYT1FdSh0LEsyKS5wYWdlLGw9dC5ob3QuY291bnRSb3dzKCk7KGkubGVuZ3RoPj1sJiZsPj0xJiZh'@; put 'PjF8fDA9PT0oeWllbGQgdC5mZXRjaERhdGEoe3NraXBMb2FkaW5nOiEwfSkpPy5yb3dzLmxlbmd0aCYmYT4xKSYmKHlpZWxkIHQuZmV0Y2hEYXRhKHtwYWdlOmEtMSxza2lwTG9hZGluZzohMH0pKX0pKX0pKCl9dXBkYXRlUm93cyhlKXt2YXIgdD10aGlzO3JldHVybiBDcihmdW5jdGlvbioo'@; put 'KXtpZighX2EoTHModCx5TixFRykuY2FsbCh0KSl8fCFBcnJheS5pc0FycmF5KGUpfHwwPT09ZS5sZW5ndGgpcmV0dXJuO2UuZm9yRWFjaChpPT57eUcoaS5pZCkmJkpyKCJEYXRhUHJvdmlkZXI6IGB1cGRhdGVSb3dzYCByZXF1aXJlcyBldmVyeSBlbnRyeSB0byBpbmNsdWRlIGEgbm9uLW51'@; put 'bGwgYGlkYC4iKX0pO2NvbnN0IHI9ZnVuY3Rpb24gVUJ0KG4sZSx0KXtyZXR1cm4gdC5tYXAocj0+e2NvbnN0IGk9Q0ZlKG4sZSxyLmlkKTtsZXQgbztyZXR1cm4gbz1pPj0wP24uZ2V0U291cmNlRGF0YUF0Um93KG4udG9QaHlzaWNhbFJvdyhpKSk6dm9pZCAwIT09ci5yb3dEYXRhP3Iucm93'@; put 'RGF0YTp7fSx7aWQ6ci5pZCxjaGFuZ2VzOnIuY2hhbmdlcyxyb3dEYXRhOm8mJiJvYmplY3QiPT10eXBlb2Ygbz9vOnt9fX0pfSh0LmhvdCxMcyh0LHR4LHdOKS5jYWxsKHQpLGUpO3JldHVybiBMcyh0LGJHLGIwZSkuY2FsbCh0LCgpPT5mdW5jdGlvbiBXQnQobixlLHQpe3JldHVybiB0MGUu'@; put 'YXBwbHkodGhpcyxhcmd1bWVudHMpfSh0LmhvdCx7Z2V0Um93SWRPcHRpb246KCk9PkxzKHQsdHgsd04pLmNhbGwodCksY29tbWl0Um93c1VwZGF0ZTppPT5Mcyh0LGMwZSxQRmUpLmNhbGwodCxpKX0scikpfSkoKX1kZXN0cm95KCl7THModGhpcyxsMGUsRkZlKS5jYWxsKHRoaXMpLHN1cGVy'@; put 'LmRlc3Ryb3koKX1jb25zdHJ1Y3RvcihlKXt2YXIgdDtzdXBlcihlKSx0PXRoaXMsczIodGhpcyxleCksczIodGhpcyx0eCksczIodGhpcyxfTiksczIodGhpcyxpMGUpLHMyKHRoaXMseU4pLHMyKHRoaXMsbzBlKSxzMih0aGlzLG54KSxzMih0aGlzLGEwZSksczIodGhpcyxrRmUpLHMyKHRo'@; put 'aXMsUkZlKSxzMih0aGlzLElGZSksczIodGhpcyxzMGUpLHMyKHRoaXMsbDBlKSxzMih0aGlzLGJHKSxzMih0aGlzLHdHKSxzMih0aGlzLGMwZSksczIodGhpcyx1MGUpLHJnKHRoaXMsSzIse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJnKHRoaXMsXzYse3dyaXRhYmxlOiEwLHZhbHVl'@; put 'OnZvaWQgMH0pLHJnKHRoaXMscjBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxyZyh0aGlzLENHLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxyZyh0aGlzLGQwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscmcodGhpcyxoMGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQg'@; put 'MH0pLHJnKHRoaXMsZjBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxyZyh0aGlzLHAwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscmcodGhpcyxnMGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJnKHRoaXMsbTBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxy'@; put 'Zyh0aGlzLHYwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkscmcodGhpcyxfMGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHJnKHRoaXMseTBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxYMSh0aGlzLEsyLHsuLi5fRmV9KSxYMSh0aGlzLF82LG51bGwpLFgxKHRoaXMs'@; put 'cjBlLHt0YWlsOlByb21pc2UucmVzb2x2ZSgpfSksWDEodGhpcyxDRywoKT0+ZnVuY3Rpb24gcGp0KG4pe2lmKCFufHwib2JqZWN0IiE9dHlwZW9mIG58fEFycmF5LmlzQXJyYXkobikpcmV0dXJuITE7Y29uc3QgZT1uO3JldHVybiBPYmplY3Qua2V5cyhRMWUpLmV2ZXJ5KHQ9PlExZVt0XShl'@; put 'W3RdKSl9KHRoaXMuaG90LmdldFNldHRpbmdzKCkuZGF0YVByb3ZpZGVyKSksWDEodGhpcyxkMGUsKCk9Pnt0aGlzLmZldGNoRGF0YSgpfSksWDEodGhpcyxoMGUsKHIsaSk9Pnt2YXIgbzshZnVuY3Rpb24gb2p0KG4sZSx0KXtjb25zdHtob3Q6cixnZXRRdWVyeVBhZ2U6aSxnb1RvUGFnZTpv'@; put 'fT1uO3IuZ2V0UGx1Z2luKHZOKT8uZW5hYmxlZCYmdCE9PWkoKSYmbyh0KS5jYXRjaCgoKT0+e2NvbnN0IGw9ci5nZXRQbHVnaW4odk4pO2w/LmVuYWJsZWQmJmwucmV2ZXJ0UGFnZVRvKGUpfSl9KHtob3Q6dGhpcy5ob3QsZ2V0UXVlcnlQYWdlOigpPT5FdSh0aGlzLEsyKS5wYWdlLGdvVG9Q'@; put 'YWdlOihvPUNyKGZ1bmN0aW9uKihhKXt5aWVsZCB0LmZldGNoRGF0YSh7cGFnZTphfSl9KSxmdW5jdGlvbihsKXtyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0scixpKX0pLFgxKHRoaXMsZjBlLChyLGkpPT57dmFyIG87IWZ1bmN0aW9uIGFqdChuLGUsdCl7Y29uc3R7aG90OnIs'@; put 'Z2V0UXVlcnlQYWdlOmksZ2V0UXVlcnlQYWdlU2l6ZTpvLHNldFBhZ2VTaXplOmF9PW47aWYoIXIuZ2V0UGx1Z2luKHZOKT8uZW5hYmxlZClyZXR1cm47Y29uc3QgdT1mdW5jdGlvbiBuanQobixlKXtyZXR1cm4iYXV0byI9PT1ufHwibnVtYmVyIiE9dHlwZW9mIG58fCFOdW1iZXIuaXNGaW5p'@; put 'dGUobil8fG48MT9lOm59KHQsMTApO3U9PT1vKCkmJjE9PT1pKCl8fGEodSkuY2F0Y2goKCk9Pntjb25zdCBnPXIuZ2V0UGx1Z2luKHZOKTtnPy5lbmFibGVkJiZnLnJldmVydFBhZ2VTaXplVG8oZSl9KX0oe2hvdDp0aGlzLmhvdCxnZXRRdWVyeVBhZ2U6KCk9PkV1KHRoaXMsSzIpLnBhZ2Us'@; put 'Z2V0UXVlcnlQYWdlU2l6ZTooKT0+RXUodGhpcyxLMikucGFnZVNpemUsc2V0UGFnZVNpemU6KG89Q3IoZnVuY3Rpb24qKGEpe3lpZWxkIHQuZmV0Y2hEYXRhKHtwYWdlU2l6ZTphLHBhZ2U6MX0pfSksZnVuY3Rpb24obCl7cmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHIsaSl9'@; put 'KSxYMSh0aGlzLHAwZSxyPT5mdW5jdGlvbiBlanQobixlKXtjb25zdHtob3Q6dCxoYXNGZXRjaEZuOnIsYXBwbHlGaWx0ZXJzQW5kUmVmZXRjaDppfT1uO2lmKHIoKSlyZXR1cm4gaShFRmUodCxlKSksITF9KHtob3Q6dGhpcy5ob3QsaGFzRmV0Y2hGbjooKT0+X2EoTHModGhpcyxfTixTRyku'@; put 'Y2FsbCh0aGlzKSksYXBwbHlGaWx0ZXJzQW5kUmVmZXRjaDppPT57RXUodGhpcyxLMikuZmlsdGVycz1pPz9udWxsLEV1KHRoaXMsSzIpLnBhZ2U9MSx0aGlzLmZldGNoRGF0YSgpfX0scikpLFgxKHRoaXMsZzBlLChyLGksbyk9PmZ1bmN0aW9uIGZqdChuLGUsdCxyKXtjb25zdHtob3Q6aSxo'@; put 'YXNGZXRjaEZuOm8sYXBwbHlRdWVyeVBhcmFtZXRlcnNGcm9tUGx1Z2luczphLGZldGNoRGF0YTpsfT1uO3JldHVybiBvKCkmJnI/KGkuZ2V0UGx1Z2luKE1GZSkuc2V0U29ydENvbmZpZyh0KSxhKCksbCh7c2tpcExvYWRpbmc6ITB9KSwhMSk6dm9pZCAwfSh7aG90OnRoaXMuaG90LGhhc0Zl'@; put 'dGNoRm46KCk9Pl9hKExzKHRoaXMsX04sU0cpLmNhbGwodGhpcykpLGFwcGx5UXVlcnlQYXJhbWV0ZXJzRnJvbVBsdWdpbnM6KCk9PkxzKHRoaXMsYTBlLE9GZSkuY2FsbCh0aGlzKSxmZXRjaERhdGE6YT0+dGhpcy5mZXRjaERhdGEoYSl9LDAsaSxvKSksWDEodGhpcyxtMGUscj0+ZnVuY3Rp'@; put 'b24gaWp0KG4sZSx0PTEwKXtjb25zdHtwYWdlOnIscGFnZVNpemU6aX09bjtyZXR1cm4oci0xKSooIm51bWJlciI9PXR5cGVvZiBpJiZpPj0xP2k6dCkrZX0oRXUodGhpcyxLMikscikpLFgxKHRoaXMsdjBlLChyLGkpPT57aWYoX2EoTHModGhpcyx5TixFRykuY2FsbCh0aGlzKSkmJnlGZS5o'@; put 'YXMoaSkpcmV0dXJuITF9KSxYMSh0aGlzLF8wZSwocixpKT0+e2lmKGZ1bmN0aW9uIEJCdChuLGUsdCl7cmV0dXJuIW58fCFlPy5sZW5ndGh8fCJEYXRhUHJvdmlkZXIucmV2ZXJ0Ij09PXR8fCF5RmUuaGFzKHQpfShfYShMcyh0aGlzLHlOLEVHKS5jYWxsKHRoaXMpKSxyLGkpKXJldHVybjtj'@; put 'b25zdCBvPWZ1bmN0aW9uIGpCdChuLGUpe2lmKCFlKXJldHVybltdO2NvbnN0IHI9ZS5maWx0ZXIoaT0+aVsyXSE9PWlbM10pO3JldHVybiAwPT09ci5sZW5ndGg/W106ci5maWx0ZXIoaT0+e2NvbnN0IG89bi5wcm9wVG9Db2woaVsxXSk7cmV0dXJuISh2b2lkIDA9PT1vfHxvPDApJiYhMSE9'@; put 'PW4uZ2V0Q2VsbE1ldGEoaVswXSxvKS52YWxpZH0pfSh0aGlzLmhvdCxyKTswIT09by5sZW5ndGgmJkxzKHRoaXMsYkcsYjBlKS5jYWxsKHRoaXMsKCk9PmZ1bmN0aW9uIFlCdChuLGUsdCl7cmV0dXJuIG4wZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KHRoaXMuaG90LHtnZXRSb3dJZE9wdGlv'@; put 'bjooKT0+THModGhpcyx0eCx3TikuY2FsbCh0aGlzKSxjb21taXRSb3dzVXBkYXRlOihhLGwpPT5Mcyh0aGlzLGMwZSxQRmUpLmNhbGwodGhpcyxhLGwpfSxvKSl9KSxYMSh0aGlzLHkwZSwocixpLG8pPT5xQnQoe2hvdDp0aGlzLmhvdCxnZXRPblJvd3NDcmVhdGU6KCk9PkxzKHRoaXMsaTBl'@; put 'LERGZSkuY2FsbCh0aGlzKSxnZXRPblJvd3NSZW1vdmU6KCk9PkxzKHRoaXMsbzBlLExGZSkuY2FsbCh0aGlzKSxnZXRSb3dJZE9wdGlvbjooKT0+THModGhpcyx0eCx3TikuY2FsbCh0aGlzKSxnZXRSb3dJZDphPT50aGlzLmdldFJvd0lkKGEpLGNyZWF0ZVJvd3M6YT0+dGhpcy5jcmVhdGVS'@; put 'b3dzKGEpLHJlbW92ZVJvd3M6YT0+dGhpcy5yZW1vdmVSb3dzKGEpfSxyLGksbykpLHRoaXMuYWRkSG9vaygiaGFzRXh0ZXJuYWxEYXRhU291cmNlIixFdSh0aGlzLENHKSl9fWZ1bmN0aW9uIGJOKCl7Y29uc3Qgbj10aGlzLmhvdC5nZXRTZXR0aW5ncygpW21OXTtyZXR1cm4gbiYmIm9iamVj'@; put 'dCI9PXR5cGVvZiBuP246dm9pZCAwfWZ1bmN0aW9uIHdOKCl7Y29uc3Qgbj1Mcyh0aGlzLGV4LGJOKS5jYWxsKHRoaXMpO3JldHVybiBuP24ucm93SWQ6dm9pZCAwfWZ1bmN0aW9uIFNHKCl7Y29uc3Qgbj1Mcyh0aGlzLGV4LGJOKS5jYWxsKHRoaXMpO3JldHVybiBuJiZfYShuLmZldGNoUm93'@; put 'cyk/bi5mZXRjaFJvd3M6dm9pZCAwfWZ1bmN0aW9uIERGZSgpe2NvbnN0IG49THModGhpcyxleCxiTikuY2FsbCh0aGlzKTtyZXR1cm4gbiYmX2Eobi5vblJvd3NDcmVhdGUpP24ub25Sb3dzQ3JlYXRlOnZvaWQgMH1mdW5jdGlvbiBFRygpe2NvbnN0IG49THModGhpcyxleCxiTikuY2FsbCh0'@; put 'aGlzKTtyZXR1cm4gbiYmX2Eobi5vblJvd3NVcGRhdGUpP24ub25Sb3dzVXBkYXRlOnZvaWQgMH1mdW5jdGlvbiBMRmUoKXtjb25zdCBuPUxzKHRoaXMsZXgsYk4pLmNhbGwodGhpcyk7cmV0dXJuIG4mJl9hKG4ub25Sb3dzUmVtb3ZlKT9uLm9uUm93c1JlbW92ZTp2b2lkIDB9ZnVuY3Rpb24g'@; put 'Q04obil7cmV0dXJue3BhZ2U6bi5wYWdlLHBhZ2VTaXplOm4ucGFnZVNpemUsc29ydDpudWxsPT09bi5zb3J0P251bGw6ey4uLm4uc29ydH0sZmlsdGVyczpYQnQobi5maWx0ZXJzKX19ZnVuY3Rpb24gT0ZlKCl7KGZ1bmN0aW9uIHJqdChuLGUpeyFmdW5jdGlvbiB0anQobixlKXtpZighbj8u'@; put 'ZW5hYmxlZClyZXR1cm47Y29uc3QgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbi5nZXRDdXJyZW50UGFnZVNpemU/bi5nZXRDdXJyZW50UGFnZVNpemUoKTp2b2lkIDAscj1uLmdldFNldHRpbmcoInBhZ2VTaXplIiksaT1uLmdldFNldHRpbmcoImluaXRpYWxQYWdlIiksbz0iZnVuY3Rpb24iPT10'@; put 'eXBlb2Ygbi5nZXRDdXJyZW50UGFnZT9uLmdldEN1cnJlbnRQYWdlKCk6dm9pZCAwOyJudW1iZXIiPT10eXBlb2YgdD9lLnBhZ2VTaXplPXQ6Im51bWJlciI9PXR5cGVvZiByJiYoZS5wYWdlU2l6ZT1yKSwibnVtYmVyIj09dHlwZW9mIG8mJm8+PTE/ZS5wYWdlPW86Im51bWJlciI9PXR5cGVv'@; put 'ZiBpJiZpPj0xJiYoZS5wYWdlPWkpfShuLmdldFBsdWdpbih2TiksZSl9KSh0aGlzLmhvdCxFdSh0aGlzLEsyKSksZnVuY3Rpb24gdWp0KG4sZSl7IWZ1bmN0aW9uIGNqdChuLGUsdCl7aWYoIW4/LmVuYWJsZWR8fCJmdW5jdGlvbiIhPXR5cGVvZiB0KXJldHVybjtjb25zdCByPW4uZ2V0U29y'@; put 'dENvbmZpZygpLGk9QXJyYXkuaXNBcnJheShyKT9yWzBdOnI7ZS5zb3J0PWkmJiJudW1iZXIiPT10eXBlb2YgaS5jb2x1bW4/e3Byb3A6dChpLmNvbHVtbiksb3JkZXI6aS5zb3J0T3JkZXJ9Om51bGx9KG4uZ2V0UGx1Z2luKE1GZSksZSx0PT5TdHJpbmcobi5jb2xUb1Byb3AodCkpKX0odGhp'@; put 'cy5ob3QsRXUodGhpcyxLMikpLGZ1bmN0aW9uIEpCdChuLGUsdCl7aWYoIV9hKHQoKSkpcmV0dXJuO2NvbnN0IHI9bi5nZXRQbHVnaW4oImZpbHRlcnMiKTtpZighcnx8IXIuZW5hYmxlZClyZXR1cm47Y29uc3QgaT1FRmUobixyLmV4cG9ydENvbmRpdGlvbnMoKSk7ZS5maWx0ZXJzPWk/P251'@; put 'bGx9KHRoaXMuaG90LEV1KHRoaXMsSzIpLCgpPT5Mcyh0aGlzLF9OLFNHKS5jYWxsKHRoaXMpKX1mdW5jdGlvbiB3anQoKXtpZighRXUodGhpcyxfNikpcmV0dXJuO2NvbnN0IG49bmV3IEVycm9yKCJEYXRhUHJvdmlkZXIgZmV0Y2ggc3VwZXJzZWRlZCBieSBhIG5ld2VyIHJlcXVlc3QiKTtu'@; put 'Lm5hbWU9IkFib3J0RXJyb3IiLEV1KHRoaXMsXzYpLmFib3J0KG4pfWZ1bmN0aW9uIENqdChuKXtjb25zdCBlPXsuLi5FdSh0aGlzLEsyKSwuLi5ufTtyZXR1cm4gZnVuY3Rpb24gZGp0KG4sZSl7bi5zb3J0PWZ1bmN0aW9uIHNqdChuLGUpe2lmKG51bGw9PW58fCJvYmplY3QiIT10eXBlb2Yg'@; put 'bilyZXR1cm4gbnVsbDtjb25zdCB0PW47aWYoIm51bWJlciI9PXR5cGVvZiB0LmNvbHVtbiYmImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJue3Byb3A6ZSh0LmNvbHVtbiksb3JkZXI6dC5zb3J0T3JkZXJ9O2NvbnN0IHI9dC5vcmRlcj8/dC5zb3J0T3JkZXI7cmV0dXJuInN0cmluZyIhPXR5'@; put 'cGVvZiB0LnByb3B8fCJhc2MiIT09ciYmImRlc2MiIT09cj9udWxsOntwcm9wOnQucHJvcCxvcmRlcjpyfX0obi5zb3J0LHQ9PlN0cmluZyhlLmNvbFRvUHJvcCh0KSkpfShlLHRoaXMuaG90KSwibnVtYmVyIj09dHlwZW9mIGUucGFnZSYmIU51bWJlci5pc05hTihlLnBhZ2UpJiYoZS5wYWdl'@; put 'PU1hdGgubWF4KDEsZS5wYWdlKSksZX1mdW5jdGlvbiBTanQoKXtMcyh0aGlzLGtGZSx3anQpLmNhbGwodGhpcyk7Y29uc3Qgbj1uZXcgQWJvcnRDb250cm9sbGVyO3JldHVybiBYMSh0aGlzLF82LG4pLG59ZnVuY3Rpb24gTkZlKG4sZSl7Y29uc3QgdD1Mcyh0aGlzLG54LENOKS5jYWxsKHRo'@; put 'aXMsbik7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyRGF0YVByb3ZpZGVyRmV0Y2hBYm9ydCIsdCxlKX1mdW5jdGlvbiBGRmUoKXtFdSh0aGlzLF82KT8uYWJvcnQoKSxYMSh0aGlzLF82LG51bGwpfWZ1bmN0aW9uIGIwZShuKXtyZXR1cm4gZnVuY3Rpb24gTkJ0KG4sZSl7Y29uc3QgdD1uLnRh'@; put 'aWwudGhlbihlKTtyZXR1cm4gbi50YWlsPXQuY2F0Y2goKCk9Pnt9KSx0fShFdSh0aGlzLHIwZSksbil9ZnVuY3Rpb24gdzBlKG4sZSl7Y29uc3QgdD10aGlzLmhvdC5nZXRQbHVnaW4oIm5vdGlmaWNhdGlvbiIpO2lmKCF0Py5lbmFibGVkKXJldHVybjtjb25zdCBpPXRoaXMuaG90LmdldFRy'@; put 'YW5zbGF0ZWRQaHJhc2Uoe2ZldGNoOk51ZSxjcmVhdGU6RnVlLHVwZGF0ZTpQdWUscmVtb3ZlOkh1ZX1bbl0/P1Z1ZSksbz1mdW5jdGlvbiBtanQobil7Y29uc3QgZT1bXTtpZihudWxsPT1uKXJldHVybiJVbmtub3duIGVycm9yIjtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIG4udHJp'@; put 'bSgpfHwiVW5rbm93biBlcnJvciI7aWYoIm9iamVjdCIhPXR5cGVvZiBuKXJldHVybiBTdHJpbmcobik7Y29uc3QgdD1uLGk9dC5yZXNwb25zZT8uZGF0YT8/dC5kYXRhPz90LmJvZHk7aWYobnVsbCE9aSlpZigic3RyaW5nIj09dHlwZW9mIGkpdHJ5e1RGZShKU09OLnBhcnNlKGkpLGUpfWNh'@; put 'dGNoe0pUKGUsaSl9ZWxzZSBURmUoaSxlKTsic3RyaW5nIj09dHlwZW9mIHQuZXJyb3ImJkpUKGUsdC5lcnJvciksInN0cmluZyI9PXR5cGVvZiB0Lm1lc3NhZ2UmJkpUKGUsdC5tZXNzYWdlKTtjb25zdCBvPWUuZmluZChhPT4hZnVuY3Rpb24gZ2p0KG4pe3JldHVybiJzdHJpbmciPT10eXBl'@; put 'b2YgbiYmL15cZHszfSQvLnRlc3Qobi50cmltKCkpfShhKSk7cmV0dXJuIG98fChlLmxlbmd0aD4wP2VbMF06U3RyaW5nKG4pKX0oZSk7bGV0IGE9IiI7Y29uc3QgbD17dmFyaWFudDoiZXJyb3IiLHRpdGxlOmksbWVzc2FnZTpvfTsiZmV0Y2giPT09biYmKGwuZHVyYXRpb249MCxsLmFjdGlv'@; put 'bnM9W3tsYWJlbDp0aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEJ1ZSksdHlwZToicHJpbWFyeSIsY2FsbGJhY2s6KCk9PnthJiZ0LmhpZGUoYSksdGhpcy5mZXRjaERhdGEoKX19XSksYT10LnNob3dNZXNzYWdlKGwpfWZ1bmN0aW9uIFBGZShuLGU9e30pe3JldHVybiBmdW5jdGlvbiB6'@; put 'QnQobixlLHQpe3JldHVybiBlMGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSh0aGlzLmhvdCx7Z2V0T25Sb3dzVXBkYXRlOigpPT5Mcyh0aGlzLHlOLEVHKS5jYWxsKHRoaXMpLGZldGNoRGF0YTooKT0+dGhpcy5mZXRjaERhdGEoe3NraXBMb2FkaW5nOiEwfSksbG9nRXJyb3I6bTcsb25SZXF1'@; put 'ZXN0RmFpbGVkOih0LHIpPT5Mcyh0aGlzLHdHLHcwZSkuY2FsbCh0aGlzLHQscil9LG4sZSl9ZnVuY3Rpb24gSEZlKG4sZSx0LHIpe3JldHVybiBmdW5jdGlvbiBaQnQobixlLHQscixpKXtjb25zdHtlbnF1ZXVlTXV0YXRpb246byxydW5CZWZvcmVSb3dzTXV0YXRpb246YSxydW5BZnRlclJv'@; put 'd3NNdXRhdGlvbjpsLHJ1bkFmdGVyUm93c011dGF0aW9uRXJyb3I6dSxsb2dFcnJvcjpnLG9uUmVxdWVzdEZhaWxlZDpFfT1uO3JldHVybiBvKENyKGZ1bmN0aW9uKigpe2lmKCExPT09YShlLHQpKXJldHVybjtjb25zdCBPPSJjcmVhdGUiPT09ZT8iUm93IGNyZWF0ZSI6IlJvdyByZW1vdmUi'@; put 'O3RyeXt5aWVsZCByKCl9Y2F0Y2goWil7cmV0dXJuIHUoZSxaLHQpLGcoYCR7T30gZmFpbGVkOmAsWiksdm9pZCBFPy4oZSxaKX10cnl7bChlLHQpLHlpZWxkIGkoKX1jYXRjaChaKXt1KGUsWix0KSxnKCJEYXRhIHJlbG9hZCBmYWlsZWQ6IixaKX19KSl9KHtlbnF1ZXVlTXV0YXRpb246aT0+'@; put 'THModGhpcyxiRyxiMGUpLmNhbGwodGhpcyxpKSxydW5CZWZvcmVSb3dzTXV0YXRpb246KGksbyk9PkoxZSh0aGlzLmhvdCxpLG8pLHJ1bkFmdGVyUm93c011dGF0aW9uOihpLG8pPT53RmUodGhpcy5ob3QsaSxvKSxydW5BZnRlclJvd3NNdXRhdGlvbkVycm9yOihpLG8sYSk9PlFUKHRoaXMu'@; put 'aG90LGksbyxhKSxsb2dFcnJvcjptNyxvblJlcXVlc3RGYWlsZWQ6KGksbyk9PkxzKHRoaXMsd0csdzBlKS5jYWxsKHRoaXMsaSxvKX0sbixlLHQscil9ZnVuY3Rpb24gVkZlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZh'@; put 'dGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIEk0KG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFRqdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sVkZlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIFNOKG4sZSx0KXsoZnVuY3Rp'@; put 'b24gTWp0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiB5NihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIHhq'@; put 'dChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sVkZlKG4sZSwic2V0IiksdCksdH12YXIgbkM9bmV3IFdl'@; put 'YWtNYXAsckM9bmV3IFdlYWtNYXAsRU49bmV3IFdlYWtNYXAsQzBlPW5ldyBXZWFrTWFwLE1HPW5ldyBXZWFrTWFwO2NsYXNzIFMwZXtnZXQgaXNBY3RpdmUoKXtyZXR1cm4gbnVsbCE9PUk0KHRoaXMsbkMpfWNvbmZpZ3VyZShlKXt5Nih0aGlzLEVOLGUpfXVwZGF0ZShlKXt5Nih0aGlzLHJD'@; put 'LGUpLDA9PT1lP3RoaXMuc3RvcCgpOnRoaXMuaXNBY3RpdmV8fEk0KHRoaXMsTUcpLmNhbGwodGhpcyl9c3RvcCgpe251bGwhPT1JNCh0aGlzLG5DKSYmKGNsZWFyVGltZW91dChJNCh0aGlzLG5DKSkseTYodGhpcyxuQyxudWxsKSkseTYodGhpcyxyQywwKX1jb25zdHJ1Y3RvcihlKXtTTih0'@; put 'aGlzLG5DLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxTTih0aGlzLHJDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxTTih0aGlzLEVOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxTTih0aGlzLEMwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksU04odGhpcyxNRyx7'@; put 'd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkseTYodGhpcyxuQyxudWxsKSx5Nih0aGlzLHJDLDApLHk2KHRoaXMsRU4sbnVsbCkseTYodGhpcyxNRywoKT0+e2lmKHRoaXMucnVuTG9jYWxIb29rcygidGljayIsSTQodGhpcyxyQykpLDA9PT1JNCh0aGlzLHJDKSlyZXR1cm47Y29uc3QgdD1m'@; put 'dW5jdGlvbiBFanQobixlLHQscj0yMDApe2NvbnN0IG89TWF0aC5taW4oTWF0aC5hYnMobiksdCkvdCxhPWUubWF4LWUubWluO3JldHVybiBNYXRoLnJvdW5kKGUubWF4LU1hdGgubG9nKDErbypyKS9NYXRoLmxvZygxK3IpKmEpfShJNCh0aGlzLHJDKSxJNCh0aGlzLEVOKS5pbnRlcnZhbFJh'@; put 'bmdlLEk0KHRoaXMsRU4pLnJhbXBEaXN0YW5jZSk7eTYodGhpcyxuQyxJNCh0aGlzLEMwZSkuY2FsbCh0aGlzLEk0KHRoaXMsTUcpLHQpKX0pLHk2KHRoaXMsQzBlLGUpfX1mdW5jdGlvbiBCRmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8g'@; put 'Iit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gRzMobixlKXtyZXR1cm4gZnVuY3Rpb24ga2p0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixCRmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gakZlKG4s'@; put 'ZSx0KXsoZnVuY3Rpb24gQWp0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBURyhuLGUsdCl7cmV0dXJu'@; put 'IGZ1bmN0aW9uIFJqdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sQkZlKG4sZSwic2V0IiksdCksdH1Z'@; put 'bChTMGUsX2gpO3ZhciBiNj1uZXcgV2Vha01hcCx3Nj1uZXcgV2Vha01hcDtjbGFzcyBVRmV7Z2V0IGlzQWN0aXZlKCl7cmV0dXJuIEczKHRoaXMsYjYpLmlzQWN0aXZlfHxHMyh0aGlzLHc2KS5pc0FjdGl2ZX1nZXQgaXNIb3Jpem9udGFsQWN0aXZlKCl7cmV0dXJuIEczKHRoaXMsYjYpLmlz'@; put 'QWN0aXZlfWdldCBpc1ZlcnRpY2FsQWN0aXZlKCl7cmV0dXJuIEczKHRoaXMsdzYpLmlzQWN0aXZlfWNvbmZpZ3VyZShlKXtHMyh0aGlzLGI2KS5jb25maWd1cmUoZSksRzModGhpcyx3NikuY29uZmlndXJlKGUpfXVwZGF0ZSh7eDplLHk6dH0pe0czKHRoaXMsYjYpLnVwZGF0ZShlKSxHMyh0'@; put 'aGlzLHc2KS51cGRhdGUodCl9c3RvcCgpe0czKHRoaXMsYjYpLnN0b3AoKSxHMyh0aGlzLHc2KS5zdG9wKCl9c3RvcEhvcml6b250YWwoKXtHMyh0aGlzLGI2KS5zdG9wKCl9c3RvcFZlcnRpY2FsKCl7RzModGhpcyx3Nikuc3RvcCgpfWRlc3Ryb3koKXt0aGlzLnN0b3AoKSxURyh0aGlzLGI2'@; put 'LG51bGwpLFRHKHRoaXMsdzYsbnVsbCl9Y29uc3RydWN0b3IoZSl7akZlKHRoaXMsYjYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGpGZSh0aGlzLHc2LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxURyh0aGlzLGI2LG5ldyBTMGUoZSkpLFRHKHRoaXMsdzYsbmV3IFMwZShlKSks'@; put 'RzModGhpcyxiNikuYWRkTG9jYWxIb29rKCJ0aWNrIix0PT50aGlzLnJ1bkxvY2FsSG9va3MoInNjcm9sbEhvcml6b250YWwiLHQpKSxHMyh0aGlzLHc2KS5hZGRMb2NhbEhvb2soInRpY2siLHQ9PnRoaXMucnVuTG9jYWxIb29rcygic2Nyb2xsVmVydGljYWwiLHQpKX19ZnVuY3Rpb24gekZl'@; put 'KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBXRmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0'@; put 'ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gTTAobixlKXtyZXR1cm4gZnVuY3Rpb24gSWp0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixXRmUobixlLCJnZXQiKSl9ZnVuY3Rpb24g'@; put 'Yl8obixlLHQpe3pGZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gVDAobixlLHQpe3JldHVybiBmdW5jdGlvbiBEanQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBv'@; put 'bmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFdGZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gTU4obixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9'@; put 'ZnVuY3Rpb24geEcobixlKXt6RmUobixlKSxlLmFkZChuKX1ZbChVRmUsX2gpO2NvbnN0IFlGZT0iZHJhZ1RvU2Nyb2xsIjt2YXIgQjc9bmV3IFdlYWtNYXAscng9bmV3IFdlYWtNYXAsVE49bmV3IFdlYWtNYXAsaXg9bmV3IFdlYWtNYXAsb3g9bmV3IFdlYWtNYXAsYXg9bmV3IFdlYWtNYXAs'@; put 'RTBlPW5ldyBXZWFrU2V0LFpGZT1uZXcgV2Vha1NldCxHRmU9bmV3IFdlYWtTZXQsTTBlPW5ldyBXZWFrTWFwLCRGZT1uZXcgV2Vha1NldCxUMGU9bmV3IFdlYWtNYXA7Y2xhc3MgT2p0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIFlGZX1zdGF0aWMgZ2V0IFBM'@; put 'VUdJTl9QUklPUklUWSgpe3JldHVybiAxMDB9c3RhdGljIGdldCBERUZBVUxUX1NFVFRJTkdTKCl7cmV0dXJue2ludGVydmFsOnttaW46MjAsbWF4OjUwMH0scmFtcERpc3RhbmNlOjEyMH19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1lGZV19ZW5hYmxlUGx1'@; put 'Z2luKCl7dGhpcy5lbmFibGVkfHwoTTAodGhpcyxCNykuY29uZmlndXJlKHtpbnRlcnZhbFJhbmdlOnRoaXMuZ2V0U2V0dGluZygiaW50ZXJ2YWwiKSxyYW1wRGlzdGFuY2U6dGhpcy5nZXRTZXR0aW5nKCJyYW1wRGlzdGFuY2UiKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VE'@; put 'b3duIiwoZSx0LHIsaSk9Pntjb25zdCBvPSJvYmplY3QiPT10eXBlb2YgaSYmbnVsbCE9PWk/aTpudWxsO01OKHRoaXMsRTBlLHFGZSkuY2FsbCh0aGlzLCJjZWxsIixlLG8pfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvcm5lck1vdXNlRG93biIsZT0+TU4odGhpcyxFMGUscUZlKS5j'@; put 'YWxsKHRoaXMsImNvcm5lciIsZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLE0wKHRoaXMsTTBlKSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbCIsTTAodGhpcyxUMGUpKSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigp'@; put 'e3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe00wKHRoaXMsQjcpLnN0b3AoKSx0aGlzLnVucmVnaXN0ZXJFdmVudHMoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9c2V0Qm91bmRhcmllcyhlPXtsZWZ0'@; put 'OjAscmlnaHQ6dGhpcy5ob3Qucm9vdFdpbmRvdy5pbm5lcldpZHRoLHRvcDowLGJvdHRvbTp0aGlzLmhvdC5yb290V2luZG93LmlubmVySGVpZ2h0fSl7dGhpcy5ib3VuZGFyaWVzPWV9c2V0Q2FsbGJhY2soZSl7dGhpcy5jYWxsYmFjaz1lfWNoZWNrKGUsdCl7bGV0IHI9MCxpPTA7Y29uc3R7'@; put 'Ym91bmRhcmllczpvfT10aGlzO28mJih0PG8udG9wP2k9dC1vLnRvcDp0Pm8uYm90dG9tJiYoaT10LW8uYm90dG9tKSxlPG8ubGVmdD9yPWUtby5sZWZ0OmU+by5yaWdodCYmKHI9ZS1vLnJpZ2h0KSksVDAodGhpcyxyeCwwIT09aXx8MCE9PXIpLHRoaXMuY2FsbGJhY2smJnRoaXMuY2FsbGJh'@; put 'Y2socixpKX1saXN0ZW4oKXt0aGlzLmxpc3RlbmluZz0hMH11bmxpc3Rlbigpe3RoaXMubGlzdGVuaW5nPSExLFQwKHRoaXMsVE4sbnVsbCksVDAodGhpcyxpeCxudWxsKSxUMCh0aGlzLG94LG51bGwpLFQwKHRoaXMscngsITEpLFQwKHRoaXMsYXgsbnVsbCksTTAodGhpcyxCNykuc3RvcCgp'@; put 'fWlzTGlzdGVuaW5nKCl7cmV0dXJuIHRoaXMubGlzdGVuaW5nfXJlZ2lzdGVyRXZlbnRzKCl7Y29uc3R7cm9vdFdpbmRvdzplfT10aGlzLmhvdDtsZXQgdD1lO2Zvcig7dDspdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LmRvY3VtZW50LCJjb250ZXh0bWVudSIsKCk9PnRo'@; put 'aXMudW5saXN0ZW4oKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LmRvY3VtZW50LCJtb3VzZXVwIiwoKT0+dGhpcy51bmxpc3RlbigpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQuZG9jdW1lbnQsIm1vdXNlbW92ZSIscj0+e01OKHRoaXMsJEZl'@; put 'LFBqdCkuY2FsbCh0aGlzLHIpfSksdD12Nyh0KX11bnJlZ2lzdGVyRXZlbnRzKCl7dGhpcy5ldmVudE1hbmFnZXIuY2xlYXIoKX1kZXN0cm95KCl7TTAodGhpcyxCNykuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSx4Ryh0aGlzLEUwZSks'@; put 'eEcodGhpcyxaRmUpLHhHKHRoaXMsR0ZlKSx4Ryh0aGlzLCRGZSksYl8odGhpcyxCNyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYl8odGhpcyxyeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYl8odGhpcyxUTix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYl8odGhpcyxp'@; put 'eCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYl8odGhpcyxveCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYl8odGhpcyxheCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksYl8odGhpcyxNMGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGJfKHRoaXMsVDBlLHt3cml0'@; put 'YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLmJvdW5kYXJpZXM9bnVsbCx0aGlzLmNhbGxiYWNrPW51bGwsdGhpcy5saXN0ZW5pbmc9ITEsVDAodGhpcyxCNyxuZXcgVUZlKCh0LHIpPT50aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KHQscikpLmFkZExvY2FsSG9vaygic2Nyb2xsSG9yaXpv'@; put 'bnRhbCIsdD0+TU4odGhpcyxaRmUsTmp0KS5jYWxsKHRoaXMsdCkpLmFkZExvY2FsSG9vaygic2Nyb2xsVmVydGljYWwiLHQ9Pk1OKHRoaXMsR0ZlLEZqdCkuY2FsbCh0aGlzLHQpKSksVDAodGhpcyxyeCwhMSksVDAodGhpcyxUTixudWxsKSxUMCh0aGlzLGl4LG51bGwpLFQwKHRoaXMsb3gs'@; put 'bnVsbCksVDAodGhpcyxheCxudWxsKSxUMCh0aGlzLE0wZSwodCxyLGksbyxhKT0+e3RoaXMubGlzdGVuaW5nJiZNMCh0aGlzLHJ4KSYmKGEudmFsdWU9ITApfSksVDAodGhpcyxUMGUsKCk9PntpZigiY2VsbCIhPT1NMCh0aGlzLFROKXx8IU0wKHRoaXMscngpfHxudWxsPT09TTAodGhpcyxp'@; put 'eCl8fG51bGw9PT1NMCh0aGlzLG94KXx8InNpbmdsZSI9PT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLnNlbGVjdGlvbk1vZGV8fE0wKHRoaXMsYXgpPy5yb3d8fE0wKHRoaXMsYXgpPy5jb2x1bW4pcmV0dXJuO2NvbnN0e3NlbGVjdGlvbjp0LHZpZXc6cn09dGhpcy5ob3QsaT1FT2UodGhpcy5o'@; put 'b3QsTTAodGhpcyxpeCksTTAodGhpcyxveCkpO2lmKCFpKXJldHVybjtsZXQgbz1pLnJvdz8/MCxhPWkuY29sPz8wO2NvbnN0IGw9ci5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpPz8wLHU9ci5nZXRMYXN0RnVsbHlWaXNpYmxlUm93KCk/PzAsZz1yLmdldEZpcnN0RnVsbHlWaXNpYmxlQ29s'@; put 'dW1uKCk/PzAsRT1yLmdldExhc3RGdWxseVZpc2libGVDb2x1bW4oKT8/MDtvPnU/bz11Om88bCYmKG89bCksYT5FP2E9RTphPGcmJihhPWcpLHQuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJihhPXRoaXMuaG90LmNvdW50Q29scygpLTEpLHQuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkm'@; put 'JihvPXRoaXMuaG90LmNvdW50Um93cygpLTEpO2NvbnN0IE89dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMobyxhKSxaPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7WiYmWi50by5yb3c9PT1PLnJvdyYmWi50by5jb2w9PT1PLmNvbHx8dC5zZXRSYW5nZUVuZChPKX0pfX1mdW5j'@; put 'dGlvbiBxRmUobixlLHQ9bnVsbCl7aWYoenYoZSl8fCJjZWxsIj09PW4mJiJzaW5nbGUiPT09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5zZWxlY3Rpb25Nb2RlKXJldHVybjtUMCh0aGlzLFROLG4pLFQwKHRoaXMsYXgsdCk7Y29uc3Qgcj10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRv'@; put 'cE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ7aWYocj09PXRoaXMuaG90LnJvb3RXaW5kb3cpdGhpcy5zZXRCb3VuZGFyaWVzKCk7ZWxzZXtjb25zdCBpPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5zZXRCb3VuZGFyaWVzKHtsZWZ0OmkubGVmdCt0aGlzLmhvdC52'@; put 'aWV3LmdldFJvd0hlYWRlcldpZHRoKCkscmlnaHQ6aS5yaWdodCx0b3A6aS50b3ArdGhpcy5ob3Qudmlldy5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKSxib3R0b206aS5ib3R0b219KX10aGlzLnNldENhbGxiYWNrKChpLG8pPT57Y29uc3R7c2VsZWN0aW9uOmF9PXRoaXMuaG90LGw9YS5pc1Nl'@; put 'bGVjdGVkQnlSb3dIZWFkZXIoKT8wOmksdT1hLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpPzA6bztNMCh0aGlzLEI3KS51cGRhdGUoe3g6bCx5OnV9KX0pLHRoaXMubGlzdGVuKCl9ZnVuY3Rpb24gTmp0KG4pe2NvbnN0IHQ9KHRoaXMuaG90LmlzUnRsKCk/bjwwOm4+MCk/dGhpcy5ob3Qu'@; put 'Z2V0TGFzdEZ1bGx5VmlzaWJsZUNvbHVtbigpKzE6dGhpcy5ob3QuZ2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCktMTt0aGlzLmhvdC5zY3JvbGxWaWV3cG9ydFRvKHtjb2w6dH0sKCk9Pnt9KXx8TTAodGhpcyxCNykuc3RvcEhvcml6b250YWwoKX1mdW5jdGlvbiBGanQobil7Y29u'@; put 'c3QgZT10aGlzLmhvdC5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLHQ9dGhpcy5ob3QuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdygpO3RoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8oe3JvdzpuPjA/dCsxOmUtMX0sKCk9Pnt9KXx8TTAodGhpcyxCNykuc3RvcFZlcnRpY2FsKCl9ZnVuY3Rpb24g'@; put 'UGp0KG4pe3RoaXMuaXNMaXN0ZW5pbmcoKSYmKFQwKHRoaXMsaXgsbi5jbGllbnRYKSxUMCh0aGlzLG94LG4uY2xpZW50WSksdGhpcy5jaGVjayhuLmNsaWVudFgsbi5jbGllbnRZKSl9ZnVuY3Rpb24gS0ZlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGlu'@; put 'aXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBYRmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1'@; put 'cm4gZS5nZXQobil9ZnVuY3Rpb24gQUcobixlKXtyZXR1cm4gZnVuY3Rpb24gSGp0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixYRmUobixlLCJnZXQiKSl9ZnVuY3Rpb24ga0cobixlLHQpe0tGZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gc3gobixlLHQp'@; put 'e3JldHVybiBmdW5jdGlvbiBWanQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFhGZShuLGUsInNldCIp'@; put 'LHQpLHR9ZnVuY3Rpb24gd18obixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gbHgobixlKXtLRmUobixlKSxlLmFkZChuKX1Hby5nZXRTaW5nbGV0'@; put 'b24oKS5yZWdpc3RlcigiYWZ0ZXJEcm9wZG93bk1lbnVEZWZhdWx0T3B0aW9ucyIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVEcm9wZG93bk1lbnVTaG93IiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51U2hvdyIpLEdvLmdldFNpbmds'@; put 'ZXRvbigpLnJlZ2lzdGVyKCJhZnRlckRyb3Bkb3duTWVudUhpZGUiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJEcm9wZG93bk1lbnVFeGVjdXRlIik7Y29uc3QgUkc9ImRyb3Bkb3duTWVudSIsaUM9ImNoYW5nZVR5cGUiLHgwZT1SRzt2YXIgeE49bmV3IFdlYWtNYXAsQTBl'@; put 'PW5ldyBXZWFrU2V0LFFGZT1uZXcgV2Vha1NldCxrMGU9bmV3IFdlYWtTZXQsUjBlPW5ldyBXZWFrTWFwLEpGZT1uZXcgV2Vha1NldCxlUGU9bmV3IFdlYWtTZXQsdFBlPW5ldyBXZWFrU2V0LEkwZT1uZXcgV2Vha01hcCxEMGU9bmV3IFdlYWtNYXA7Y2xhc3MgSUcgZXh0ZW5kcyBhbHtzdGF0'@; put 'aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gUkd9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMjMwfXN0YXRpYyBnZXQgUExVR0lOX0RFUFMoKXtyZXR1cm5bInBsdWdpbjpBdXRvQ29sdW1uU2l6ZSJdfXN0YXRpYyBnZXQgREVGQVVMVF9JVEVNUygpe3JldHVybltlTix0'@; put 'Tix2cyxyTix2cyxYWix2cyxuTix2cyxwbV19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1JHXX1lbmFibGVQbHVnaW4oKXtpZih0aGlzLmVuYWJsZWQpcmV0dXJuO3RoaXMuaXRlbXNGYWN0b3J5PW5ldyBITmUodGhpcy5ob3QsSUcuREVGQVVMVF9JVEVNUyks'@; put 'dGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLEFHKHRoaXMsRDBlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3cG9ydFNjcm9sbEhvcml6b250YWxseSIsQUcodGhpcyxJMGUpKSx0aGlzLmFkZEhvb2soImJlZm9yZURpYWxvZ1Nob3ciLCgpPT50aGlzLmNsb3NlKCkpO2Nv'@; put 'bnN0IGU9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtSR10sdD1lLHI9e2l0ZW1zOnRoaXMuaXRlbXNGYWN0b3J5LmdldEl0ZW1zKGUpfTt0aGlzLnJlZ2lzdGVyRXZlbnRzKCksImZ1bmN0aW9uIj09dHlwZW9mIHQuY2FsbGJhY2smJnRoaXMuY29tbWFuZEV4ZWN1dG9yLnNldENvbW1vbkNhbGxi'@; put 'YWNrKHQuY2FsbGJhY2spLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSx0aGlzLmNhbGxPblBsdWdpbnNSZWFkeSgoKT0+e3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckRyb3Bkb3duTWVudURlZmF1bHRPcHRpb25zIixyKSx0aGlzLml0ZW1zRmFjdG9yeS5z'@; put 'ZXRQcmVkZWZpbmVkSXRlbXMoci5pdGVtcyk7Y29uc3QgaT10aGlzLml0ZW1zRmFjdG9yeS5nZXRJdGVtcyhlKTt0aGlzLm1lbnUmJnRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW5ldyBHVCh0aGlzLmhvdCx7Y2xhc3NOYW1lOiJodERyb3Bkb3duTWVudSIsa2VlcEluVmlld3BvcnQ6'@; put 'ITAsY29udGFpbmVyOigib2JqZWN0Ij09dHlwZW9mIGU/dC51aUNvbnRhaW5lcjpudWxsKXx8dGhpcy5ob3Qucm9vdFBvcnRhbEVsZW1lbnR9KSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2V0SXRlbXMiLGkpLHRoaXMubWVudS5zZXRNZW51SXRlbXMoaSksdGhpcy5t'@; put 'ZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIiwoKT0+d18odGhpcyxKRmUsVWp0KS5jYWxsKHRoaXMpKSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlclN1Ym1lbnVPcGVuIixvPT53Xyh0aGlzLGVQZSx6anQpLmNhbGwodGhpcyxvKSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYWZ0'@; put 'ZXJDbG9zZSIsKCk9PndfKHRoaXMsdFBlLFdqdCkuY2FsbCh0aGlzKSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiZXhlY3V0ZUNvbW1hbmQiLChvLC4uLmEpPT50aGlzLmV4ZWN1dGVDb21tYW5kKG8sLi4uYSkpLFhuKGksbz0+e3RoaXMuY29tbWFuZEV4ZWN1dG9yLnJlZ2lzdGVyQ29tbWFu'@; put 'ZChvLmtleSxvKX0pfSl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5jbG9zZSgpLHRoaXMubWVudSYmdGhpcy5tZW51LmRlc3Ryb3koKSx0aGlzLnVucmVnaXN0'@; put 'ZXJTaG9ydGN1dHMoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9cmVnaXN0ZXJTaG9ydGN1dHMoKXtjb25zdCBlPXRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKSx0PSgpPT57Y29uc3Qgcj10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYo'@; put 'IXIpcmV0dXJuO2NvbnN0e2hpZ2hsaWdodDppfT1yLG89aS5pc0hlYWRlcigpP3RoaXMuaG90LmdldENlbGwoaS5yb3c/PzAsaS5jb2w/PzAsITApOm51bGwsYT1pLmlzSGVhZGVyKCkmJihpLmNvbD8/LTEpPj0wJiYhIW8mJmN3KG8pLGw9aS5pc0hlYWRlcigpJiYoaS5jb2w/Py0xKT49MCYm'@; put 'byYmTGEobywiaGlkZGVuSGVhZGVyIik7aWYoKGF8fGx8fGkuaXNDZWxsKCkpJiYoaS5jb2w/Py0xKT49MCl7bGV0IGc9YXx8bD9pLnJvdz8/LTE6LTE7dGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhpLmNvbD8/MCxpLmNvbD8/MCxnKTtjb25zdCBFPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VB'@; put 'Y3RpdmUoKTtpZighRSlyZXR1cm47Y29uc3R7ZnJvbTpPfT1FLFo9WVoodGhpcy5tZW51Py5jb250YWluZXI/P3RoaXMuaG90LnJvb3RFbGVtZW50LHRoaXMuaG90LnJvb3REb2N1bWVudCk7bGV0IGVlPXRoaXMuaG90LmdldENlbGwoZyxPLmNvbD8/MCwhMCk/LnF1ZXJ5U2VsZWN0b3IoYC4k'@; put 'e2lDfWApO2lmKCFlZSlmb3IobGV0IGF0PS10aGlzLmhvdC52aWV3LmdldENvbHVtbkhlYWRlcnNDb3VudCgpO2F0PD0tMTthdCsrKXtjb25zdCBDdD10aGlzLmhvdC5nZXRDZWxsKGF0LE8uY29sPz8wLCEwKT8ucXVlcnlTZWxlY3RvcihgLiR7aUN9YCk7aWYoQ3Qpe2VlPUN0LGc9YXQsdGhp'@; put 'cy5ob3Quc2VsZWN0Q29sdW1ucyhpLmNvbD8/MCxpLmNvbD8/MCxnKTticmVha319aWYoIWVlJiZsKWZvcihsZXQgYXQ9KE8uY29sPz8wKS0xO2F0Pj0wO2F0LS0pe2NvbnN0IEN0PXRoaXMuaG90LmdldENlbGwoZyxhdCwhMCk7aWYoIUN0fHxMYShDdCwiaGlkZGVuSGVhZGVyIikpY29udGlu'@; put 'dWU7Y29uc3QgQXQ9Q3Q/LnF1ZXJ5U2VsZWN0b3IoYC4ke2lDfWApO0F0JiYoZWU9QXQsdGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhhdCxhdCxnKSk7YnJlYWt9aWYoIWVlfHwhaHMoZWUpKXJldHVybjtjb25zdCB2ZT13Xyh0aGlzLGswZSxyUGUpLmNhbGwodGhpcyxlZSksTWU9ZWUuY2xvc2Vz'@; put 'dCgidGgiKSxIZT1NZSYmTnVtYmVyLnBhcnNlSW50KE1lLmdldEF0dHJpYnV0ZSgicm93c3BhbiIpPz8iMSIsMTApPjEsV2U9SGU/TWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK01lLmNsaWVudEhlaWdodDp2ZS5ib3R0b207dGhpcy5vcGVuKHtsZWZ0OnZlLmxlZnQrWi5sZWZ0LHRv'@; put 'cDpXZStaLnRvcH0se2xlZnQ6dmUud2lkdGgscmlnaHQ6MCxhYm92ZTowLGJlbG93OkhlPy0xOjN9KSx0aGlzLm1lbnU/LmdldE5hdmlnYXRvcigpPy50b0ZpcnN0SXRlbSgpfX07ZT8uYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJTaGlmdCIsIkFsdCIsIkFycm93RG93biJdLFsiQ29udHJvbC9N'@; put 'ZXRhIiwiRW50ZXIiXV0sY2FsbGJhY2s6dCxydW5Pbmx5SWY6KCk9Pntjb25zdCByPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0LGk9cj8uaXNIZWFkZXIoKT90aGlzLmhvdC5nZXRDZWxsKHIucm93Pz8wLHIuY29sPz8wLCEwKTpudWxsLG89cj8uaXNIZWFk'@; put 'ZXIoKSYmKHIuY29sPz8tMSk+PTAmJmkmJkxhKGksImhpZGRlbkhlYWRlciIpO3JldHVybiEoIXJ8fHRoaXMubWVudT8uaXNPcGVuZWQoKXx8IXIuaXNIZWFkZXIoKXx8IXRoaXMuaG90LnNlbGVjdGlvbi5pc0NlbGxWaXNpYmxlKHIpJiYhbyl9LGNhcHR1cmVDdHJsOiEwLGdyb3VwOngwZX0s'@; put 'e2tleXM6W1siU2hpZnQiLCJBbHQiLCJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6dCxydW5Pbmx5SWY6KCk9Pntjb25zdCByPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0O3JldHVybiEoIShyJiZ0aGlzLmhvdC5zZWxlY3Rpb24uaXNDZWxsVmlzaWJsZShyKSYm'@; put 'ci5pc0NlbGwoKSl8fHRoaXMubWVudT8uaXNPcGVuZWQoKSl9LGdyb3VwOngwZX1dKX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpPy5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKHgwZSl9cmVnaXN0ZXJFdmVudHMo'@; put 'KXt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG90LnJvb3RFbGVtZW50LCJjbGljayIsZT0+d18odGhpcyxRRmUsamp0KS5jYWxsKHRoaXMsZSkpfW9wZW4oZSx0PXthYm92ZTowLGJlbG93OjAsbGVmdDowLHJpZ2h0OjB9KXt0aGlzLm1lbnU/LmlzT3BlbmVkKCl8'@; put 'fCh0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIsdGhpcyksdGhpcy5tZW51Py5vcGVuKCksYWModCwocixpKT0+e3RoaXMubWVudT8uc2V0T2Zmc2V0KGkscil9KSx0aGlzLm1lbnU/LnNldFBvc2l0aW9uKGUpKX1jbG9zZSgpe3RoaXMubWVudT8uY2xvc2UoKX1l'@; put 'eGVjdXRlQ29tbWFuZChlLC4uLnQpe3RoaXMuY29tbWFuZEV4ZWN1dG9yLmV4ZWN1dGUoZSwuLi50KX1zZXRMaXN0ZW5pbmcoZT0hMCl7aWYodGhpcy5tZW51Py5pc09wZW5lZCgpKXtjb25zdCB0PXRoaXMubWVudS5ob3RNZW51O2U/dC5saXN0ZW4oKTp0LnVubGlzdGVuKCl9fWRlc3Ryb3ko'@; put 'KXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihlKSxseCh0aGlzLEEwZSksbHgodGhpcyxRRmUpLGx4KHRoaXMsazBlKSxseCh0aGlzLEpGZSksbHgodGhpcyxlUGUpLGx4KHRoaXMsdFBlKSxr'@; put 'Ryh0aGlzLHhOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrRyh0aGlzLFIwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksa0codGhpcyxJMGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGtHKHRoaXMsRDBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLmNv'@; put 'bW1hbmRFeGVjdXRvcj1uZXcgT05lKHRoaXMuaG90KSx0aGlzLml0ZW1zRmFjdG9yeT1udWxsLHRoaXMubWVudT1udWxsLHN4KHRoaXMseE4sITEpLHN4KHRoaXMsUjBlLCh0LHIpPT57aWYodDwwfHwhY3cocikpcmV0dXJuO2NvbnN0IGk9ci5xdWVyeVNlbGVjdG9yKGAuJHtpQ31gKTtpZih0'@; put 'aGlzLmVuYWJsZWQmJmkpcmV0dXJuO2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQoaSYmaS5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChpKSk7Y29uc3Qgbz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7by5jbGFzc05hbWU9aUMsby50eXBlPSJidXR0'@; put 'b24iLG8udGFiSW5kZXg9LTEsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmKEtvKG8sW1siYXJpYS1oaWRkZW4iLCJ0cnVlIl0sTjMoIiAiKV0pLEtvKHIsW3B4ZSgibWVudSIpXSkpLG8ub25jbGljaz1mdW5jdGlvbigpe3JldHVybiExfTtjb25zdCBhPXIuZmlyc3RDaGlsZDtp'@; put 'ZighYSlyZXR1cm47Y29uc3QgbD1hLnF1ZXJ5U2VsZWN0b3IoIi5jb2xIZWFkZXIiKTtsP2EuaW5zZXJ0QmVmb3JlKG8sbC5uZXh0U2libGluZyk6YS5hcHBlbmRDaGlsZChvKX0pLHN4KHRoaXMsSTBlLHQ9PkFHKHRoaXMseE4pP251bGw6dCksc3godGhpcyxEMGUsdD0+e0xhKEFhKHQpLGlD'@; put 'KSYmc3godGhpcyx4TiwhMCl9KSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsQUcodGhpcyxSMGUpKX19ZnVuY3Rpb24gblBlKG4pe24uZ2V0S2V5Ym9hcmRTaG9ydGN1dHNDdHJsKCk/LmFkZEN1c3RvbVNob3J0Y3V0cyhbe2tleXM6W1siQ29udHJvbC9NZXRhIiwiQSJd'@; put 'XSxjYWxsYmFjazooKT0+ITF9XSl9ZnVuY3Rpb24gamp0KG4pe2NvbnN0IGU9QWEobik7aWYoTGEoZSxpQykpe2NvbnN0IHQ9WVoodGhpcy5tZW51Py5jb250YWluZXI/P3RoaXMuaG90LnJvb3RFbGVtZW50LHRoaXMuaG90LnJvb3REb2N1bWVudCkscj13Xyh0aGlzLGswZSxyUGUpLmNhbGwo'@; put 'dGhpcyxlKTtuLnN0b3BQcm9wYWdhdGlvbigpLHN4KHRoaXMseE4sITEpLHRoaXMub3Blbih7bGVmdDpyLmxlZnQrdC5sZWZ0LHRvcDpyLmJvdHRvbSt0LnRvcH0se2xlZnQ6ci53aWR0aCxyaWdodDowLGFib3ZlOjAsYmVsb3c6M30pfX1mdW5jdGlvbiByUGUobil7Y29uc3QgZT1uLmdldEJv'@; put 'dW5kaW5nQ2xpZW50UmVjdCgpLHQ9dGhpcy5ob3Qucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4sIjo6YmVmb3JlIikscj1OdW1iZXIucGFyc2VGbG9hdCh0LndpZHRoKTtpZihOdW1iZXIuaXNGaW5pdGUocikmJmUud2lkdGg+PXImJmUuaGVpZ2h0Pj1yKXtjb25zdCBpPWUubGVmdCso'@; put 'ZS53aWR0aC1yKS8yLG89ZS50b3ArKGUuaGVpZ2h0LXIpLzI7cmV0dXJue3RvcDpvLGxlZnQ6aSxyaWdodDppK3IsYm90dG9tOm8rcix3aWR0aDpyLGhlaWdodDpyfX1yZXR1cm57dG9wOmUudG9wLGxlZnQ6ZS5sZWZ0LHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tLHdpZHRoOmUud2lk'@; put 'dGgsaGVpZ2h0OmUuaGVpZ2h0fX1mdW5jdGlvbiBVanQoKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEcm9wZG93bk1lbnVTaG93Iix0aGlzKSx3Xyh0aGlzLEEwZSxuUGUpLmNhbGwodGhpcyx0aGlzLm1lbnUpfWZ1bmN0aW9uIHpqdChuKXt3Xyh0aGlzLEEwZSxuUGUpLmNhbGwodGhpcyxu'@; put 'KX1mdW5jdGlvbiBXanQoKXt0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIix0aGlzKX1JRy5TRVBBUkFUT1I9e25hbWU6dnN9O2NvbnN0IGlQZT1jbGFzcyBZanR7c2V0T3B0aW9ucyhlKXt0aGlzLm9wdGlvbnM9ZSYmImNvbHVtbkhl'@; put 'YWRlcnMiaW4gZSYmISgiY29sSGVhZGVycyJpbiBlKT97Li4uZSxjb2xIZWFkZXJzOmUuY29sdW1uSGVhZGVyc306ZX1fZXh0cmFjdERhdGFNYXRyaXgoZSl7Y29uc3R7c3RhcnRSb3c6dCxzdGFydENvbDpyLGVuZFJvdzppLGVuZENvbDpvfT10aGlzLl9nZXREYXRhUmFuZ2UoKSxhPXRoaXMu'@; put 'b3B0aW9ucyxsPVtdO2ZvcihsZXQgdT10O3U8PWk7dSsrKXtpZighMT09PWEuZXhwb3J0SGlkZGVuUm93cyYmdGhpcy5faXNIaWRkZW5Sb3codSkpY29udGludWU7Y29uc3QgZz1bXTtmb3IobGV0IEU9cjtFPD1vO0UrKykhMT09PWEuZXhwb3J0SGlkZGVuQ29sdW1ucyYmdGhpcy5faXNIaWRk'@; put 'ZW5Db2x1bW4oRSl8fGcucHVzaChlKHUsRSkpO2wucHVzaChnKX1yZXR1cm4gbH1nZXREYXRhKCl7cmV0dXJuIHRoaXMuX2V4dHJhY3REYXRhTWF0cml4KChlLHQpPT50aGlzLmhvdC5nZXREYXRhQXRDZWxsKGUsdCkpfWdldFJvd0hlYWRlcnMoKXtjb25zdCBlPVtdO2lmKHRoaXMub3B0aW9u'@; put 'cy5yb3dIZWFkZXJzKXtjb25zdHtzdGFydFJvdzp0LGVuZFJvdzpyfT10aGlzLl9nZXREYXRhUmFuZ2UoKSxpPXRoaXMuaG90LmdldFJvd0hlYWRlcigpO2ZvcihsZXQgbz10O288PXI7bysrKSExPT09dGhpcy5vcHRpb25zLmV4cG9ydEhpZGRlblJvd3MmJnRoaXMuX2lzSGlkZGVuUm93KG8p'@; put 'fHxlLnB1c2goaVtvXSl9cmV0dXJuIGV9Z2V0Q29sdW1uSGVhZGVycygpe2NvbnN0IGU9W107aWYodGhpcy5vcHRpb25zLmNvbEhlYWRlcnMpe2NvbnN0e3N0YXJ0Q29sOnQsZW5kQ29sOnJ9PXRoaXMuX2dldERhdGFSYW5nZSgpLGk9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKCk7Zm9yKGxldCBv'@; put 'PXQ7bzw9cjtvKyspITE9PT10aGlzLm9wdGlvbnMuZXhwb3J0SGlkZGVuQ29sdW1ucyYmdGhpcy5faXNIaWRkZW5Db2x1bW4obyl8fGUucHVzaChpW29dKX1yZXR1cm4gZX1fZ2V0RGF0YVJhbmdlKCl7Y29uc3QgZT10aGlzLmhvdC5jb3VudENvbHMoKS0xLHQ9dGhpcy5ob3QuY291bnRSb3dz'@; put 'KCktMTtsZXRbcj0wLGk9MCxvPXQsYT1lXT10aGlzLm9wdGlvbnMucmFuZ2U7cmV0dXJuIHI9TWF0aC5tYXgociwwKSxpPU1hdGgubWF4KGksMCksbz1NYXRoLm1pbihvLHQpLGE9TWF0aC5taW4oYSxlKSx7c3RhcnRSb3c6cixzdGFydENvbDppLGVuZFJvdzpvLGVuZENvbDphfX1nZXRTb3Vy'@; put 'Y2VEYXRhKCl7cmV0dXJuIHRoaXMuX2V4dHJhY3REYXRhTWF0cml4KChlLHQpPT50aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKGUsdCkpfWdldEV4Y2x1ZGVkSGlkZGVuUm93cygpe2NvbnN0IGU9bmV3IFNldDtpZighMSE9PXRoaXMub3B0aW9ucy5leHBvcnRIaWRkZW5Sb3dzKXJldHVy'@; put 'biBlO2NvbnN0e3N0YXJ0Um93OnQsZW5kUm93OnJ9PXRoaXMuX2dldERhdGFSYW5nZSgpO2ZvcihsZXQgaT10O2k8PXI7aSsrKXRoaXMuX2lzSGlkZGVuUm93KGkpJiZlLmFkZCh0aGlzLmhvdC50b1BoeXNpY2FsUm93KGkpKTtyZXR1cm4gZX1nZXRFeGNsdWRlZEhpZGRlbkNvbHVtbnMoKXtj'@; put 'b25zdCBlPW5ldyBTZXQ7aWYoITEhPT10aGlzLm9wdGlvbnMuZXhwb3J0SGlkZGVuQ29sdW1ucylyZXR1cm4gZTtjb25zdHtzdGFydENvbDp0LGVuZENvbDpyfT10aGlzLl9nZXREYXRhUmFuZ2UoKTtmb3IobGV0IGk9dDtpPD1yO2krKyl0aGlzLl9pc0hpZGRlbkNvbHVtbihpKSYmZS5hZGQo'@; put 'dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihpKSk7cmV0dXJuIGV9Z2V0SGlkZGVuUm93RGF0YUluZGljZXMoKXtpZigiaGlkZSIhPT10aGlzLm9wdGlvbnMuZXhwb3J0SGlkZGVuUm93cylyZXR1cm5bXTtjb25zdHtzdGFydFJvdzplLGVuZFJvdzp0fT10aGlzLl9nZXREYXRhUmFuZ2UoKSxy'@; put 'PVtdO2xldCBpPTA7Zm9yKGxldCBvPWU7bzw9dDtvKyspdGhpcy5faXNIaWRkZW5Sb3cobykmJnIucHVzaChpKSxpKz0xO3JldHVybiByfWdldEhpZGRlbkNvbHVtbkRhdGFJbmRpY2VzKCl7aWYoImhpZGUiIT09dGhpcy5vcHRpb25zLmV4cG9ydEhpZGRlbkNvbHVtbnMpcmV0dXJuW107Y29u'@; put 'c3R7c3RhcnRDb2w6ZSxlbmRDb2w6dH09dGhpcy5fZ2V0RGF0YVJhbmdlKCkscj1bXTtsZXQgaT0wO2ZvcihsZXQgbz1lO288PXQ7bysrKXRoaXMuX2lzSGlkZGVuQ29sdW1uKG8pJiZyLnB1c2goaSksaSs9MTtyZXR1cm4gcn1nZXRGb3JtdWxhc1NlcGFyYXRvcigpe2NvbnN0IGU9dGhpcy5o'@; put 'b3QuZ2V0UGx1Z2luKCJmb3JtdWxhcyIpO3JldHVybiBlJiZlLmlzRW5hYmxlZCgpP2UuZW5naW5lPy5nZXRDb25maWcoKT8uZnVuY3Rpb25BcmdTZXBhcmF0b3I/PyIsIjoiLCJ9Z2V0Q2VsbHNNZXRhKCl7cmV0dXJuIHRoaXMuX2V4dHJhY3REYXRhTWF0cml4KChlLHQpPT50aGlzLmhvdC5n'@; put 'ZXRDZWxsTWV0YShlLHQpKX1nZXRDZWxsRWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fZXh0cmFjdERhdGFNYXRyaXgoKGUsdCk9PnRoaXMuaG90LmdldENlbGwoZSx0KSl9Z2V0TWVyZ2VDZWxscygpe2NvbnN0e3N0YXJ0Um93OmUsc3RhcnRDb2w6dCxlbmRSb3c6cixlbmRDb2w6aX09dGhpcy5f'@; put 'Z2V0RGF0YVJhbmdlKCksbz10aGlzLmhvdC5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTtpZighb3x8IW8uaXNFbmFibGVkKCkpcmV0dXJuW107Y29uc3QgbD1bXSx1PSExPT09dGhpcy5vcHRpb25zLmV4cG9ydEhpZGRlblJvd3MsZz0hMT09PXRoaXMub3B0aW9ucy5leHBvcnRIaWRkZW5Db2x1'@; put 'bW5zLEU9Wj0+IXV8fCF0aGlzLl9pc0hpZGRlblJvdyhaKSxPPVo9PiFnfHwhdGhpcy5faXNIaWRkZW5Db2x1bW4oWik7cmV0dXJuIG8ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzLmZvckVhY2goWj0+e2NvbnN0IGVlPVoucm93K1oucm93c3Bhbi0xLHZlPVouY29sK1ouY29s'@; put 'c3Bhbi0xO2lmKFoucm93PGV8fGVlPnJ8fFouY29sPHR8fHZlPml8fCFFKFoucm93KXx8IU8oWi5jb2wpKXJldHVybjtjb25zdCBNZT10aGlzLl9jb3VudFZpc2libGVCZWZvcmUoWi5yb3csZSxFKSxIZT10aGlzLl9jb3VudFZpc2libGVCZWZvcmUoWi5jb2wsdCxPKSxXZT10aGlzLl9jb3Vu'@; put 'dFZpc2libGVCZWZvcmUoZWUrMSxaLnJvdyxFKSxhdD10aGlzLl9jb3VudFZpc2libGVCZWZvcmUodmUrMSxaLmNvbCxPKTtXZTw9MSYmYXQ8PTF8fGwucHVzaCh7cm93Ok1lLGNvbDpIZSxyb3dzcGFuOldlLGNvbHNwYW46YXR9KX0pLGx9Z2V0Q29sdW1uc1dpZHRocygpe2NvbnN0e3N0YXJ0'@; put 'Q29sOmUsZW5kQ29sOnR9PXRoaXMuX2dldERhdGFSYW5nZSgpLHI9dGhpcy5vcHRpb25zLGk9W107Zm9yKGxldCBvPWU7bzw9dDtvKyspe2lmKCExPT09ci5leHBvcnRIaWRkZW5Db2x1bW5zJiZ0aGlzLl9pc0hpZGRlbkNvbHVtbihvKSljb250aW51ZTtjb25zdCBhPXRoaXMuX2lzSGlkZGVu'@; put 'Q29sdW1uKG8pP3RoaXMuX2dldE5hdHVyYWxDb2xXaWR0aChvKTp0aGlzLmhvdC5nZXRDb2xXaWR0aChvKTtpLnB1c2goYSl9cmV0dXJuIGl9Z2V0Um93c0hlaWdodHMoKXtjb25zdHtzdGFydFJvdzplLGVuZFJvdzp0fT10aGlzLl9nZXREYXRhUmFuZ2UoKSxyPXRoaXMub3B0aW9ucyxpPVtd'@; put 'O2ZvcihsZXQgbz1lO288PXQ7bysrKXtpZighMT09PXIuZXhwb3J0SGlkZGVuUm93cyYmdGhpcy5faXNIaWRkZW5Sb3cobykpY29udGludWU7Y29uc3QgYT10aGlzLl9pc0hpZGRlblJvdyhvKT90aGlzLl9nZXROYXR1cmFsUm93SGVpZ2h0KG8pOnRoaXMuaG90LmdldFJvd0hlaWdodChvKTtp'@; put 'LnB1c2goYSl9cmV0dXJuIGl9Z2V0RnJvemVuUm93cygpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c1RvcHx8MH1nZXRGcm96ZW5Db2x1bW5zKCl7cmV0dXJuIHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnR8fDB9Z2V0TmVzdGVkQ29sdW1u'@; put 'SGVhZGVycygpe2NvbnN0IGU9dGhpcy5ob3QuZ2V0UGx1Z2luKCJuZXN0ZWRIZWFkZXJzIik7aWYoIWV8fCFlLmlzRW5hYmxlZCgpKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5nZXRMYXllcnNDb3VudCgpLHtzdGFydENvbDpyLGVuZENvbDppfT10aGlzLl9nZXREYXRhUmFuZ2UoKSxhPSEhdGhp'@; put 'cy5vcHRpb25zLmV4cG9ydEhpZGRlbkNvbHVtbnMsbD1bXTtmb3IobGV0IHU9MDt1PHQ7dSsrKXtjb25zdCBnPVtdO2xldCBFPXI7Zm9yKDtFPD1pOylhfHwhdGhpcy5faXNIaWRkZW5Db2x1bW4oRSk/RT1hP3RoaXMuX2FwcGVuZE5lc3RlZEhlYWRlcldpdGhIaWRkZW4oZSx1LEUsaSxnKTp0'@; put 'aGlzLl9hcHBlbmROZXN0ZWRIZWFkZXJXaXRob3V0SGlkZGVuKGUsdSxFLGksZyk6RSs9MTtsLnB1c2goZyl9cmV0dXJuIGx9X2FwcGVuZE5lc3RlZEhlYWRlcldpdGhIaWRkZW4oZSx0LHIsaSxvKXtjb25zdCBhPWUuZ2V0U3RhdGVNYW5hZ2VyKCkuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKHQs'@; put 'cik7aWYoIWF8fGEuY29sdW1uSW5kZXg9PT1yKXtjb25zdCBsPWE/Lm9yaWdDb2xzcGFuPz8xLHU9TWF0aC5taW4obCxpLXIrMSksZz0oYT8uaGVhZGVyQ2xhc3NOYW1lcz8/W10pLmpvaW4oIiAiKTtyZXR1cm4gby5wdXNoKHtsYWJlbDphPy5sYWJlbD8/IiIsY29sc3Bhbjp1LGNsYXNzTmFt'@; put 'ZTpnfSkscitsfXJldHVybiBvLnB1c2goe2xhYmVsOiIiLGNvbHNwYW46MSxjbGFzc05hbWU6IiJ9KSxyKzF9X2FwcGVuZE5lc3RlZEhlYWRlcldpdGhvdXRIaWRkZW4oZSx0LHIsaSxvKXtjb25zdCBhPWUuZ2V0SGVhZGVyU2V0dGluZ3ModCxyKTtpZighYXx8YS5pc1Jvb3Qpe2NvbnN0IGw9'@; put 'YT8uY29sc3Bhbj8/MTtsZXQgdT0wO2ZvcihsZXQgRT1yO0U8citsJiZFPD1pO0UrKyl0aGlzLl9pc0hpZGRlbkNvbHVtbihFKXx8KHUrPTEpO2NvbnN0IGc9KGE/LmhlYWRlckNsYXNzTmFtZXM/P1tdKS5qb2luKCIgIik7cmV0dXJuIG8ucHVzaCh7bGFiZWw6YT8ubGFiZWw/PyIiLGNvbHNw'@; put 'YW46dSxjbGFzc05hbWU6Z30pLHIrbH1yZXR1cm4gby5wdXNoKHtsYWJlbDoiIixjb2xzcGFuOjEsY2xhc3NOYW1lOiIifSkscisxfWdldENvbHVtbkhlYWRlcnNDbGFzc05hbWVzKCl7aWYoIXRoaXMub3B0aW9ucy5jb2xIZWFkZXJzKXJldHVybltdO2NvbnN0e3N0YXJ0Q29sOmUsZW5kQ29s'@; put 'OnR9PXRoaXMuX2dldERhdGFSYW5nZSgpLHI9dGhpcy5vcHRpb25zLGk9W107Zm9yKGxldCBvPWU7bzw9dDtvKyspe2lmKCExPT09ci5leHBvcnRIaWRkZW5Db2x1bW5zJiZ0aGlzLl9pc0hpZGRlbkNvbHVtbihvKSljb250aW51ZTtjb25zdCBhPXRoaXMuaG90LmdldENvbHVtbk1ldGEobyku'@; put 'aGVhZGVyQ2xhc3NOYW1lO2xldCBsPSIiO0FycmF5LmlzQXJyYXkoYSk/bD1hLmpvaW4oIiAiKToic3RyaW5nIj09dHlwZW9mIGEmJihsPWEpLGkucHVzaChsKX1yZXR1cm4gaX1nZXRMYXlvdXREaXJlY3Rpb24oKXtyZXR1cm4icnRsIj09PXRoaXMuaG90LmdldFNldHRpbmdzKCkubGF5b3V0'@; put 'RGlyZWN0aW9uPyJydGwiOiJsdHIifWdldENvbHVtblN1bW1hcmllcygpe2NvbnN0IGU9dGhpcy5ob3QuZ2V0UGx1Z2luKCJjb2x1bW5TdW1tYXJ5Iik7aWYoIWV8fCFlLmlzRW5hYmxlZCgpKXJldHVybltdO2NvbnN0e3N0YXJ0Um93OnQsc3RhcnRDb2w6cixlbmRSb3c6aSxlbmRDb2w6b309'@; put 'dGhpcy5fZ2V0RGF0YVJhbmdlKCksYT1lLmVuZHBvaW50cy5nZXRBbGxFbmRwb2ludHMoKSxsPW5ldyBTZXQ7YS5mb3JFYWNoKGc9PntpZih2b2lkIDA9PT1nLmRlc3RpbmF0aW9uUm93KXJldHVybjtjb25zdCBFPXRoaXMuX3BoeXNpY2FsUm93VG9EYXRhSW5kZXgoZy5kZXN0aW5hdGlvblJv'@; put 'dyx0LGkpO251bGwhPT1FJiZsLmFkZChFKX0pO2NvbnN0IHU9W107cmV0dXJuIGEuZm9yRWFjaChnPT57Y29uc3QgRT10aGlzLl90cmFuc2Zvcm1FbmRwb2ludFRvU3VtbWFyeShnLHQsaSxyLG8sbCk7bnVsbCE9PUUmJnUucHVzaChFKX0pLHV9X3RyYW5zZm9ybUVuZHBvaW50VG9TdW1tYXJ5'@; put 'KGUsdCxyLGksbyxhKXtpZih2b2lkIDA9PT1lLmRlc3RpbmF0aW9uUm93fHx2b2lkIDA9PT1lLmRlc3RpbmF0aW9uQ29sdW1uKXJldHVybiBudWxsO2NvbnN0IGw9dGhpcy5fcGh5c2ljYWxSb3dUb0RhdGFJbmRleChlLmRlc3RpbmF0aW9uUm93LHQsciksdT10aGlzLl9waHlzaWNhbENvbFRv'@; put 'RGF0YUluZGV4KGUuZGVzdGluYXRpb25Db2x1bW4saSxvKTtpZihudWxsPT09bHx8bnVsbD09PXUpcmV0dXJuIG51bGw7Y29uc3QgRT10aGlzLl9waHlzaWNhbENvbFRvRGF0YUluZGV4KGUuc291cmNlQ29sdW1uPz9lLmRlc3RpbmF0aW9uQ29sdW1uLGksbyk7aWYobnVsbD09PUUpcmV0dXJu'@; put 'IG51bGw7Y29uc3QgTz1lLnJhbmdlc3x8W1swLHRoaXMuaG90LmNvdW50Um93cygpLTFdXSxaPVtdO3JldHVybiBPLmZvckVhY2goZWU9Pntjb25zdCBNZT12b2lkIDAhPT1lZVsxXT9lZVsxXTplZVswXTtmb3IobGV0IEhlPWVlWzBdO0hlPD1NZTtIZSsrKXtjb25zdCBXZT10aGlzLl9waHlz'@; put 'aWNhbFJvd1RvRGF0YUluZGV4KEhlLHQscik7aWYobnVsbCE9PVdlJiYhYS5oYXMoV2UpKXtpZihaLmxlbmd0aD4wKXtjb25zdCBhdD1aW1oubGVuZ3RoLTFdO2lmKGF0WzFdKzE9PT1XZSl7YXRbMV09V2U7Y29udGludWV9fVoucHVzaChbV2UsV2VdKX19fSksMD09PVoubGVuZ3RoP251bGw6'@; put 'e2Rlc3RSb3c6bCxkZXN0Q29sOnUsdHlwZTpTdHJpbmcoZS50eXBlfHwic3VtIikudG9Mb3dlckNhc2UoKSxzb3VyY2VDb2w6RSxzb3VyY2VSYW5nZXM6Wn19X2NvdW50VmlzaWJsZUJlZm9yZShlLHQscil7bGV0IGk9MDtmb3IobGV0IG89dDtvPGU7bysrKXIobykmJihpKz0xKTtyZXR1cm4g'@; put 'aX1fcGh5c2ljYWxSb3dUb0RhdGFJbmRleChlLHQscil7Y29uc3QgaT10aGlzLmhvdC50b1Zpc3VhbFJvdyhlKTtyZXR1cm4gbnVsbD09PWl8fGk8dHx8aT5yfHwhMT09PXRoaXMub3B0aW9ucy5leHBvcnRIaWRkZW5Sb3dzJiZ0aGlzLl9pc0hpZGRlblJvdyhpKT9udWxsOnRoaXMuX2NvdW50'@; put 'VmlzaWJsZUJlZm9yZShpLHQsbz0+ITEhPT10aGlzLm9wdGlvbnMuZXhwb3J0SGlkZGVuUm93c3x8IXRoaXMuX2lzSGlkZGVuUm93KG8pKX1fcGh5c2ljYWxDb2xUb0RhdGFJbmRleChlLHQscil7Y29uc3QgaT10aGlzLmhvdC50b1Zpc3VhbENvbHVtbihlKTtyZXR1cm4gbnVsbD09PWl8fGk8'@; put 'dHx8aT5yfHwhMT09PXRoaXMub3B0aW9ucy5leHBvcnRIaWRkZW5Db2x1bW5zJiZ0aGlzLl9pc0hpZGRlbkNvbHVtbihpKT9udWxsOnRoaXMuX2NvdW50VmlzaWJsZUJlZm9yZShpLHQsbz0+ITEhPT10aGlzLm9wdGlvbnMuZXhwb3J0SGlkZGVuQ29sdW1uc3x8IXRoaXMuX2lzSGlkZGVuQ29s'@; put 'dW1uKG8pKX1fZ2V0TmF0dXJhbENvbFdpZHRoKGUpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSxyPXRoaXMuaG90LmdldENvbHVtbk1ldGEoZSkud2lkdGg7aWYobnVsbCE9cilyZXR1cm4gcjtjb25zdHtjb2xXaWR0aHM6aSxkZWZhdWx0Q29sdW1uV2lkdGg6b309dCxhPW8/PzUw'@; put 'O3JldHVybiBBcnJheS5pc0FycmF5KGkpP2lbZV0/P2E6ImZ1bmN0aW9uIj09dHlwZW9mIGk/aShlKT8/YToibnVtYmVyIj09dHlwZW9mIGk/aTphfV9nZXROYXR1cmFsUm93SGVpZ2h0KGUpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSx7cm93SGVpZ2h0czpyLGRlZmF1bHRSb3dI'@; put 'ZWlnaHQ6aX09dCxvPWk/PzIzO3JldHVybiBBcnJheS5pc0FycmF5KHIpP3JbZV0/P286ImZ1bmN0aW9uIj09dHlwZW9mIHI/cihlKT8/bzoibnVtYmVyIj09dHlwZW9mIHI/cjpvfV9pc0hpZGRlblJvdyhlKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy5o'@; put 'b3QudG9QaHlzaWNhbFJvdyhlKSl9X2lzSGlkZGVuQ29sdW1uKGUpe3JldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbih0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGUpKX1jb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9e30sdGhpcy5ob3Q9ZX19O2NsYXNzIEww'@; put 'ZXtzdGF0aWMgZ2V0IERFRkFVTFRfT1BUSU9OUygpe3JldHVybnttaW1lVHlwZToidGV4dC9wbGFpbiIsZmlsZUV4dGVuc2lvbjoidHh0IixmaWxlbmFtZToiSGFuZHNvbnRhYmxlIFtZWVlZXS1bTU1dLVtERF0iLGVuY29kaW5nOiJ1dGYtOCIsYm9tOiExLGNvbEhlYWRlcnM6ITEscm93SGVh'@; put 'ZGVyczohMSxleHBvcnRIaWRkZW5Db2x1bW5zOiExLGV4cG9ydEhpZGRlblJvd3M6ITEscmFuZ2U6W119fWdldCBiaW5hcnkoKXtyZXR1cm4hMX1pc0JpbmFyeSgpe3JldHVybiB0aGlzLmJpbmFyeX1pc1RleHQoKXtyZXR1cm4hdGhpcy5iaW5hcnl9ZXhwb3J0KCl7SnIoImV4cG9ydCgpIG11'@; put 'c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MiKX1fbWVyZ2VPcHRpb25zKGUpe2xldCByPXE1KHRoaXMuY29uc3RydWN0b3IuREVGQVVMVF9PUFRJT05TKTtjb25zdCBpPW5ldyBEYXRlO3JldHVybiByPVlkKHE1KEwwZS5ERUZBVUxUX09QVElPTlMpLHIpLGUmJiJjb2x1bW5IZWFkZXJz'@; put 'ImluIGUmJiEoImNvbEhlYWRlcnMiaW4gZSkmJihlPXsuLi5lLGNvbEhlYWRlcnM6ZS5jb2x1bW5IZWFkZXJzfSkscj1ZZChyLGUpLHIuZmlsZW5hbWU9Zkwoci5maWxlbmFtZSx7WVlZWTppLmdldEZ1bGxZZWFyKCksTU06YCR7aS5nZXRNb250aCgpKzF9YC5wYWRTdGFydCgyLCIwIiksREQ6'@; put 'YCR7aS5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCIwIil9KSxyfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhUHJvdmlkZXI9ZSx0aGlzLm9wdGlvbnM9dGhpcy5fbWVyZ2VPcHRpb25zKHQpLHRoaXMuZGF0YVByb3ZpZGVyLnNldE9wdGlvbnModGhpcy5vcHRpb25zKX19Y29uc3Qgb1BlPUww'@; put 'ZTtmdW5jdGlvbiBhUGUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gc1BlKG4sZSl7KGZ1bmN0aW9uIFpqdChuLGUpe2lmKGUuaGFzKG4pKXRo'@; put 'cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfXZhciBjUGU9bmV3IFdlYWtTZXQsdVBlPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIHRVdChuKXtyZXR1cm4gbi5zdGFy'@; put 'dHNXaXRoKCI9Iil8fG4uc3RhcnRzV2l0aCgiKyIpfHxuLnN0YXJ0c1dpdGgoIi0iKXx8bi5zdGFydHNXaXRoKCJAIil8fG4uc3RhcnRzV2l0aCgiXHQiKXx8bi5zdGFydHNXaXRoKCJcciIpP2AnJHtufWA6bn1mdW5jdGlvbiBuVXQobixlKXtyZXR1cm4gZS50ZXN0KG4pP2AnJHtufWA6bn1j'@; put 'b25zdCBpVXQ9e3N1bToiU1VNIixtaW46Ik1JTiIsbWF4OiJNQVgiLGNvdW50OiJDT1VOVCIsYXZlcmFnZToiQVZFUkFHRSJ9O2Z1bmN0aW9uIEFOKG4pe2xldCBlPSIiLHQ9bjtmb3IoO3Q+MDspZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Kyh0LTEpJTI2KStlLHQ9TWF0aC5mbG9vcigodC0x'@; put 'KS8yNik7cmV0dXJuIGV9ZnVuY3Rpb24gZFBlKG4pe2xldCBlPTA7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspZT0yNiplKyhuLmNoYXJDb2RlQXQodCktNjQpO3JldHVybiBlfWZ1bmN0aW9uIGhQZShuLGUpe2xldCB0PTA7cmV0dXJuIG4uZm9yRWFjaChyPT57cjxlJiYodCs9MSl9KSx0'@; put 'fWZ1bmN0aW9uIGxVdChuLGUsdCxyLGksbyl7bGV0IGE9bi5zdGFydHNXaXRoKCI9Iik/bi5zbGljZSgxKTpuO2NvbnN0IGw9KGk/LnNpemU/PzApPjAsdT0obz8uc2l6ZT8/MCk+MDtyZXR1cm4oMCE9PXR8fDAhPT1yfHxsfHx1KSYmKGE9YS5yZXBsYWNlKG5ldyBSZWdFeHAoJygiKD86W14i'@; put 'XXwiIikqInxcJ1teXCddKlwnKXwoPzwhXFxkKShcXCQ/KShbQS1aXXsxLDN9KShcXCQ/KShcXGR7MSw3fSkoPyFcXCgpJywiZyIpLChnLEUsTyxaLGVlLHZlKT0+e2lmKHZvaWQgMCE9PUUpcmV0dXJuIEU7Y29uc3QgTWU9ZFBlKFopLTEsSGU9TnVtYmVyLnBhcnNlSW50KHZlLDEwKS0xLFdl'@; put 'PXUmJm8/aFBlKG8sTWUpOjAsYXQ9bCYmaT9oUGUoaSxIZSk6MCxDdD1kUGUoWikrci1XZSxBdD1OdW1iZXIucGFyc2VJbnQodmUsMTApK3QtYXQ7cmV0dXJuYCR7T30ke0FOKEN0KX0ke2VlfSR7QXR9YH0pKSxlJiYiLCIhPT1lJiYoYT1mdW5jdGlvbiBzVXQobixlLHQpe2xldCByPSIiLGk9'@; put 'ITEsbz0iIjtmb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErKyl7Y29uc3QgbD1uW2FdO2k/KHIrPWwsbD09PW8mJihuW2ErMV09PT1vPyhyKz1uW2ErMV0sYSs9MSk6aT0hMSkpOiciJz09PWx8fCInIj09PWw/KGk9ITAsbz1sLHIrPWwpOm4uc3RhcnRzV2l0aChlLGEpPyhyKz10LGErPWUubGVu'@; put 'Z3RoLTEpOnIrPWx9cmV0dXJuIHJ9KGEsZSwiLCIpKSxhfWZ1bmN0aW9uIE8wZShuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLmZpbHRlcihlPT4ic3RyaW5nIj09dHlwZW9mIGUmJmUubGVuZ3RoPjApOiJzdHJpbmciPT10eXBlb2Ygbj9uLnNwbGl0KCIgIikuZmlsdGVyKGU9PmUubGVu'@; put 'Z3RoPjApOltdfWNvbnN0IE4wZT1uZXcgV2Vha01hcCxGMGU9bmV3IFdlYWtNYXAsREc9bmV3IFNldChbImh0TGVmdCIsImh0UmlnaHQiLCJodENlbnRlciIsImh0SnVzdGlmeSIsImh0VG9wIiwiaHRNaWRkbGUiLCJodEJvdHRvbSJdKTtmdW5jdGlvbiBMRyhuKXtpZighbilyZXR1cm4gbnVs'@; put 'bDtjb25zdCBlPW4ubWF0Y2goL3JnYmE/XCgoXGQrKSxccyooXGQrKSxccyooXGQrKSg/OixccyooW1xkLl0rKSk/XCkvKTtyZXR1cm4gZSYmMCE9PShabyhlWzRdKT9OdW1iZXIucGFyc2VGbG9hdChlWzRdKToxKT9gIyR7TnVtYmVyLnBhcnNlSW50KGVbMV0sMTApLnRvU3RyaW5nKDE2KS5w'@; put 'YWRTdGFydCgyLCIwIil9JHtOdW1iZXIucGFyc2VJbnQoZVsyXSwxMCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX0ke051bWJlci5wYXJzZUludChlWzNdLDEwKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpfWAudG9VcHBlckNhc2UoKTpudWxsfWZ1bmN0aW9uIGhVdChuLGUs'@; put 'dCl7Y29uc3Qgcj1lLmpvaW4oIiAiKTtsZXQgaT1OMGUuZ2V0KG4pO2lmKGl8fChpPW5ldyBNYXAsTjBlLnNldChuLGkpKSxpLmhhcyhyKSlyZXR1cm4gaS5nZXQocik/P251bGw7Y29uc3Qgbz1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uY2xhc3NOYW1lPSJoYW5kc29udGFibGUiLG8uc3R5'@; put 'bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTk5OXB4O2xlZnQ6LTk5OTk5cHg7dmlzaWJpbGl0eTpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTsiO2NvbnN0IGE9bi5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLGw9bi5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLHU9bi5jcmVh'@; put 'dGVFbGVtZW50KCJ0ciIpLGc9bi5jcmVhdGVFbGVtZW50KCJ0ZCIpO2cuY2xhc3NOYW1lPXI7Y29uc3QgRT1uLmNyZWF0ZUVsZW1lbnQoInRkIik7RS5jbGFzc05hbWU9ZS5maWx0ZXIodmU9PkRHLmhhcyh2ZSkpLmpvaW4oIiAiKSx1LmFwcGVuZENoaWxkKGcpLHUuYXBwZW5kQ2hpbGQoRSks'@; put 'bC5hcHBlbmRDaGlsZCh1KSxhLmFwcGVuZENoaWxkKGwpLG8uYXBwZW5kQ2hpbGQoYSksbi5ib2R5LmFwcGVuZENoaWxkKG8pO2NvbnN0IE89dC5nZXRDb21wdXRlZFN0eWxlKGcpLmJhY2tncm91bmRDb2xvcixaPXQuZ2V0Q29tcHV0ZWRTdHlsZShFKS5iYWNrZ3JvdW5kQ29sb3I7bi5ib2R5'@; put 'LnJlbW92ZUNoaWxkKG8pO2NvbnN0IGVlPU8hPT1aP0xHKE8pOm51bGw7cmV0dXJuIGkuc2V0KHIsZWUpLGVlfWZ1bmN0aW9uIHBVdChuLGUsdD1udWxsLHI9bnVsbCl7aWYoIW4pe2lmKCF0fHwhcilyZXR1cm4gbnVsbDtjb25zdCB1PU8wZShlKTtyZXR1cm4gdS5zb21lKGc9PiFERy5oYXMo'@; put 'ZykpP2Z1bmN0aW9uIGZVdChuLGUsdCl7Y29uc3Qgcj10LmpvaW4oIiAiKTtsZXQgaT1GMGUuZ2V0KG4pO2lmKGl8fChpPW5ldyBNYXAsRjBlLnNldChuLGkpKSxpLmhhcyhyKSlyZXR1cm4gaS5nZXQocik7Y29uc3Qgbz1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uY2xhc3NOYW1lPSJoYW5k'@; put 'c29udGFibGUiLG8uc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTk5OXB4O2xlZnQ6LTk5OTk5cHg7dmlzaWJpbGl0eTpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTsiO2NvbnN0IGE9bi5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLGw9bi5jcmVhdGVFbGVtZW50KCJ0'@; put 'Ym9keSIpLHU9bi5jcmVhdGVFbGVtZW50KCJ0ciIpLGc9bi5jcmVhdGVFbGVtZW50KCJ0ZCIpO2cuY2xhc3NOYW1lPXI7Y29uc3QgRT1uLmNyZWF0ZUVsZW1lbnQoInRkIik7RS5jbGFzc05hbWU9dC5maWx0ZXIoYXQ9PkRHLmhhcyhhdCkpLmpvaW4oIiAiKSx1LmFwcGVuZENoaWxkKGcpLHUu'@; put 'YXBwZW5kQ2hpbGQoRSksbC5hcHBlbmRDaGlsZCh1KSxhLmFwcGVuZENoaWxkKGwpLG8uYXBwZW5kQ2hpbGQoYSksbi5ib2R5LmFwcGVuZENoaWxkKG8pO2NvbnN0IE89ZS5nZXRDb21wdXRlZFN0eWxlKGcpLFo9ZS5nZXRDb21wdXRlZFN0eWxlKEUpLGVlPU8uYmFja2dyb3VuZENvbG9yLHZl'@; put 'PVouYmFja2dyb3VuZENvbG9yLE1lPU8uY29sb3IsSGU9Wi5jb2xvcjtuLmJvZHkucmVtb3ZlQ2hpbGQobyk7Y29uc3QgV2U9e2ZvbnRCb2xkOk51bWJlci5wYXJzZUludChPLmZvbnRXZWlnaHQsMTApPj03MDB8fCJib2xkIj09PU8uZm9udFdlaWdodCxmb250SXRhbGljOiJpdGFsaWMiPT09'@; put 'Ty5mb250U3R5bGUsZm9udFVuZGVybGluZTooTy50ZXh0RGVjb3JhdGlvbkxpbmV8fE8udGV4dERlY29yYXRpb258fCIiKS5pbmNsdWRlcygidW5kZXJsaW5lIiksZm9udENvbG9yOk1lIT09SGU/TEcoTWUpOm51bGwsYmFja2dyb3VuZENvbG9yOmVlIT09dmU/TEcoZWUpOm51bGx9O3JldHVy'@; put 'biBpLnNldChyLFdlKSxXZX0odCxyLHUpOm51bGx9Y29uc3QgaT1uLm93bmVyRG9jdW1lbnQ/LmRlZmF1bHRWaWV3O2lmKCFpKXJldHVybiBudWxsO2NvbnN0IG89aS5nZXRDb21wdXRlZFN0eWxlKG4pLGE9TzBlKGUpLGw9YS5zb21lKHU9PiFERy5oYXModSkpO3JldHVybntmb250Qm9sZDpO'@; put 'dW1iZXIucGFyc2VJbnQoby5mb250V2VpZ2h0LDEwKT49NzAwfHwiYm9sZCI9PT1vLmZvbnRXZWlnaHQsZm9udEl0YWxpYzoiaXRhbGljIj09PW8uZm9udFN0eWxlLGZvbnRVbmRlcmxpbmU6KG8udGV4dERlY29yYXRpb25MaW5lfHxvLnRleHREZWNvcmF0aW9ufHwiIikuaW5jbHVkZXMoInVu'@; put 'ZGVybGluZSIpLGZvbnRDb2xvcjpsP0xHKG8uY29sb3IpOm51bGwsYmFja2dyb3VuZENvbG9yOmw/aFV0KG4ub3duZXJEb2N1bWVudCxhLGkpOm51bGx9fWZ1bmN0aW9uIGtOKG4pe2lmKCFufHwic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuIkZGMDAwMDAwIjtjb25zdCBlPW4uc3RhcnRzV2l0'@; put 'aCgiIyIpP24uc2xpY2UoMSk6bjtyZXR1cm4gMz09PWUubGVuZ3RoP2BGRiR7ZVswXStlWzBdfSR7ZVsxXStlWzFdfSR7ZVsyXStlWzJdfWAudG9VcHBlckNhc2UoKTo2PT09ZS5sZW5ndGg/YEZGJHtlfWAudG9VcHBlckNhc2UoKTo4PT09ZS5sZW5ndGg/ZS50b1VwcGVyQ2FzZSgpOiJGRjAw'@; put 'MDAwMCJ9ZnVuY3Rpb24gZlBlKG4pe3JldHVybiBuP3BQZSh7Y2xhc3NOYW1lOm59KTpudWxsfWZ1bmN0aW9uIHBQZShuKXtpZighbj8uY2xhc3NOYW1lKXJldHVybiBudWxsO2NvbnN0IGU9TzBlKG4uY2xhc3NOYW1lKSx0PXt9O3JldHVybiBlLmluY2x1ZGVzKCJodExlZnQiKT90Lmhvcml6'@; put 'b250YWw9ImxlZnQiOmUuaW5jbHVkZXMoImh0Q2VudGVyIik/dC5ob3Jpem9udGFsPSJjZW50ZXIiOmUuaW5jbHVkZXMoImh0UmlnaHQiKT90Lmhvcml6b250YWw9InJpZ2h0IjplLmluY2x1ZGVzKCJodEp1c3RpZnkiKSYmKHQuaG9yaXpvbnRhbD0ianVzdGlmeSIpLGUuaW5jbHVkZXMoImh0'@; put 'VG9wIik/dC52ZXJ0aWNhbD0idG9wIjplLmluY2x1ZGVzKCJodE1pZGRsZSIpP3QudmVydGljYWw9Im1pZGRsZSI6ZS5pbmNsdWRlcygiaHRCb3R0b20iKSYmKHQudmVydGljYWw9ImJvdHRvbSIpLE9iamVjdC5rZXlzKHQpLmxlbmd0aD4wP3Q6bnVsbH1mdW5jdGlvbiBnVXQobil7cmV0dXJu'@; put 'IG4+PTM/InRoaWNrIjoyPT09bj8ibWVkaXVtIjoidGhpbiJ9Y29uc3QgYlV0PURhdGUuVVRDKDE4OTksMTEsMzApO2Z1bmN0aW9uIEFVdChuLGUpe2lmKCFuKXJldHVybiBudWxsO2NvbnN0e3N0eWxlOnQsY3VycmVuY3k6cixtaW5pbXVtRnJhY3Rpb25EaWdpdHM6aT0wLG1heGltdW1GcmFj'@; put 'dGlvbkRpZ2l0czpvLHVzZUdyb3VwaW5nOmE9ITB9PW4sbD1vPz9pLHU9bD4wP2AuJHsiMCIucmVwZWF0KGwpfWA6IiIsZz0hMSE9PWE/IiMsIyMwIjoiMCI7aWYoInBlcmNlbnQiPT09dClyZXR1cm5gJHtnfSR7dX0lYDtpZigiY3VycmVuY3kiPT09dCYmcil7Y29uc3R7c3ltYm9sOkUsaXNQ'@; put 'cmVmaXg6T309ZnVuY3Rpb24geFV0KG4sZSl7dHJ5e2NvbnN0IHQ9bmV3IEludGwuTnVtYmVyRm9ybWF0KGV8fCJlbiIse3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3k6bixtaW5pbXVtRnJhY3Rpb25EaWdpdHM6MCxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6MH0pLmZvcm1hdFRvUGFydHMoMCks'@; put 'cj10LmZpbmQobD0+ImN1cnJlbmN5Ij09PWwudHlwZSk/LnZhbHVlPz9uLGk9dC5maW5kSW5kZXgobD0+ImN1cnJlbmN5Ij09PWwudHlwZSksbz10LmZpbmRJbmRleChsPT4iaW50ZWdlciI9PT1sLnR5cGUpO3JldHVybntzeW1ib2w6cixpc1ByZWZpeDppPG99fWNhdGNoe3JldHVybntzeW1i'@; put 'b2w6bixpc1ByZWZpeDohMH19fShyLGUpO3JldHVybiBPP2Ake0V9JHtnfSR7dX1gOmAke2d9JHt1fSR7RX1gfXJldHVybmAke2d9JHt1fWB9ZnVuY3Rpb24gTGQobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQg'@; put 'b24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gemgobixlKXsoZnVuY3Rpb24ga1V0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4s'@; put 'ZSksZS5hZGQobil9dmFyIFAwZT1uZXcgV2Vha1NldCxnUGU9bmV3IFdlYWtTZXQsbVBlPW5ldyBXZWFrU2V0LHZQZT1uZXcgV2Vha1NldCxfUGU9bmV3IFdlYWtTZXQsT0c9bmV3IFdlYWtTZXQseVBlPW5ldyBXZWFrU2V0LGJQZT1uZXcgV2Vha1NldCx3UGU9bmV3IFdlYWtTZXQsQ1BlPW5l'@; put 'dyBXZWFrU2V0LFNQZT1uZXcgV2Vha1NldCxFUGU9bmV3IFdlYWtTZXQsTVBlPW5ldyBXZWFrU2V0LFRQZT1uZXcgV2Vha1NldCx4UGU9bmV3IFdlYWtTZXQsQVBlPW5ldyBXZWFrU2V0LGtQZT1uZXcgV2Vha1NldCxSUGU9bmV3IFdlYWtTZXQsSVBlPW5ldyBXZWFrU2V0LERQZT1uZXcgV2Vh'@; put 'a1NldCxMUGU9bmV3IFdlYWtTZXQ7ZnVuY3Rpb24gT1BlKG4sZSx0LHIpe2NvbnN0IGk9dC5nZXREYXRhKCksbz10LmdldENlbGxzTWV0YSgpLGE9TGQodGhpcyxMUGUsUVV0KS5jYWxsKHRoaXMsbixvKSxsPXQuZ2V0Q2VsbEVsZW1lbnRzKCksdT10LmdldENvbHVtbkhlYWRlcnMoKSxnPXQu'@; put 'Z2V0Q29sdW1uSGVhZGVyc0NsYXNzTmFtZXMoKSxFPXQuZ2V0Um93SGVhZGVycygpLE89dC5nZXRDb2x1bW5zV2lkdGhzKCksWj10LmdldFJvd3NIZWlnaHRzKCksZWU9dC5nZXRNZXJnZUNlbGxzKCksdmU9dC5nZXRGcm96ZW5Sb3dzKCksTWU9dC5nZXRGcm96ZW5Db2x1bW5zKCksSGU9dC5n'@; put 'ZXROZXN0ZWRDb2x1bW5IZWFkZXJzKCksV2U9InJ0bCI9PT10LmdldExheW91dERpcmVjdGlvbigpLGF0PXIuZXhwb3J0Rm9ybXVsYXM/PyExLEN0PW5ldyBNYXA7dC5nZXRDb2x1bW5TdW1tYXJpZXMoKS5mb3JFYWNoKHdzPT57Q3Quc2V0KGAke3dzLmRlc3RSb3d9OiR7d3MuZGVzdENvbH1g'@; put 'LHdzKX0pO2NvbnN0IEt0PWF0P3QuZ2V0U291cmNlRGF0YSgpOm51bGwscXQ9YXQ/dC5nZXRGb3JtdWxhc1NlcGFyYXRvcigpOiIsIixnbj11Lmxlbmd0aD4wLFRuPUUubGVuZ3RoPjAsQ249bnVsbCE9PUhlJiZnbjtsZXQgcXI9MDtDbj9xcj1IZS5sZW5ndGg6Z24mJihxcj0xKTtjb25zdCAk'@; put 'bj1xcisxLFRyPVRuPzI6MSxyaT1hdD90LmdldEV4Y2x1ZGVkSGlkZGVuUm93cygpOm51bGwsZm49YXQ/dC5nZXRFeGNsdWRlZEhpZGRlbkNvbHVtbnMoKTpudWxsLHlyPXQuZ2V0SGlkZGVuUm93RGF0YUluZGljZXMoKSxBbj10LmdldEhpZGRlbkNvbHVtbkRhdGFJbmRpY2VzKCkse3Jvb3RE'@; put 'b2N1bWVudDpIcixyb290V2luZG93OnRpfT10LmhvdDtMZCh0aGlzLFRQZSxZVXQpLmNhbGwodGhpcyxlLE8sVG4pLEFuLmxlbmd0aD4wJiZMZCh0aGlzLHhQZSxaVXQpLmNhbGwodGhpcyxlLEFuLFRuKSxMZCh0aGlzLGtQZSwkVXQpLmNhbGwodGhpcyxlLHZlLE1lLHFyLFRuLFdlKTtjb25z'@; put 'dCBmcj1MZCh0aGlzLHdQZSxCVXQpLmNhbGwodGhpcyxyLmhlYWRlclN0eWxlKSxlaT1MZCh0aGlzLENQZSxqVXQpLmNhbGwodGhpcyxyLmhlYWRlclN0eWxlKTtDbj8oTGQodGhpcyxJUGUsS1V0KS5jYWxsKHRoaXMsZSxIZSxUbixUcixmcixlaSksTGQodGhpcyxEUGUsWFV0KS5jYWxsKHRo'@; put 'aXMsZSxIZSxUbixUcikpOmduJiZMZCh0aGlzLFJQZSxxVXQpLmNhbGwodGhpcyxlLHUsZyxUbixUcixmcixlaSk7Y29uc3QgSG89IShDdC5zaXplPjApJiZvLnNvbWUod3M9PndzLnNvbWUodHM9PiEwPT09dHM/LnJlYWRPbmx5KSkseGk9e2V4cG9ydEZvcm11bGFzOmF0LGZvcm11bGFzU2Vw'@; put 'YXJhdG9yOnF0LGRhdGFSb3dPZmZzZXQ6JG4sZGF0YUNvbE9mZnNldDpUcixleGNsdWRlZEhpZGRlblJvd3M6cmksZXhjbHVkZWRIaWRkZW5Db2xzOmZuLHN1bW1hcnlNYXA6Q3Qsc291cmNlRGF0YTpLdCxoYXNSb3dIZWFkZXJzOlRuLGhlYWRlckZpbGw6ZnIsaGVhZGVyQm9yZGVyOmVpLGhh'@; put 'c1JlYWRPbmx5Q2VsbHM6SG8scm9vdERvY3VtZW50OkhyLHJvb3RXaW5kb3c6dGksdmFsaWRhdGlvbk1hcDphLGNlbGxzTWV0YTpvLGNlbGxFbGVtZW50czpsLHJvd0hlYWRlcnM6RSxyb3dzSGVpZ2h0czpafTtMZCh0aGlzLGdQZSxPVXQpLmNhbGwodGhpcyxlLGkseGkpLHlyLmxlbmd0aD4w'@; put 'JiZMZCh0aGlzLEFQZSxHVXQpLmNhbGwodGhpcyxlLHlyLCRuKSxIbyYmZS5wcm90ZWN0KCIiLHtzZWxlY3RMb2NrZWRDZWxsczohMCxzZWxlY3RVbmxvY2tlZENlbGxzOiEwLGZvcm1hdENvbHVtbnM6ITAsZm9ybWF0Um93czohMCxzb3J0OiEwLGF1dG9GaWx0ZXI6ITB9KSxlZS5mb3JFYWNo'@; put 'KHdzPT57Y29uc3QgdHM9d3Mucm93KyRuLGthPXdzLmNvbCtUcjtlLm1lcmdlQ2VsbHModHMsa2EsdHMrd3Mucm93c3Bhbi0xLGthK3dzLmNvbHNwYW4tMSl9KTtjb25zdHtjb25kaXRpb25hbEZvcm1hdHRpbmc6VG99PXI7cmV0dXJuIFRvJiZUby5sZW5ndGg+MCYmTGQodGhpcyxFUGUselV0'@; put 'KS5jYWxsKHRoaXMsZSxUbywkbixUcixpLmxlbmd0aCxpWzBdPy5sZW5ndGg/PzApLGkubGVuZ3RofWZ1bmN0aW9uIE9VdChuLGUsdCl7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IGk9ZVtyXSxhPW4uZ2V0Um93KHIrdC5kYXRhUm93T2Zmc2V0KTtpZihabyh0LnJvd3NIZWln'@; put 'aHRzW3JdKSYmKGEuaGVpZ2h0PS43NSp0LnJvd3NIZWlnaHRzW3JdKSx0Lmhhc1Jvd0hlYWRlcnMpe2NvbnN0IGw9YS5nZXRDZWxsKDEpO2wudmFsdWU9dC5yb3dIZWFkZXJzW3JdPz9udWxsLHQuaGVhZGVyRmlsbCYmKGwuZmlsbD10LmhlYWRlckZpbGwpLHQuaGVhZGVyQm9yZGVyJiYobC5i'@; put 'b3JkZXI9dC5oZWFkZXJCb3JkZXIpfUxkKHRoaXMsbVBlLE5VdCkuY2FsbCh0aGlzLGEsaSxyLHQpLGEuY29tbWl0KCl9fWZ1bmN0aW9uIE5VdChuLGUsdCxyKXtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3Qgbz1lW2ldLGE9bi5nZXRDZWxsKGkrci5kYXRhQ29sT2Zmc2V0KSxs'@; put 'PXIuY2VsbHNNZXRhW3RdW2ldLHU9ci5zdW1tYXJ5TWFwLmdldChgJHt0fToke2l9YCksZz1yLnNvdXJjZURhdGE/Llt0XVtpXSx7dmFsdWU6RSxudW1GbXQ6T309TGQodGhpcyxfUGUsUFV0KS5jYWxsKHRoaXMsbyxsLGcsdSxyKTthLnZhbHVlPUUsTyYmKGEubnVtRm10PU8pO2NvbnN0IFo9'@; put 'cFV0KHIuY2VsbEVsZW1lbnRzW3RdW2ldLGwuY2xhc3NOYW1lLHIucm9vdERvY3VtZW50LHIucm9vdFdpbmRvdyk7TGQodGhpcyx2UGUsRlV0KS5jYWxsKHRoaXMsYSxsLFosciksci5oYXNSZWFkT25seUNlbGxzJiYoYS5wcm90ZWN0aW9uPXtsb2NrZWQ6ITA9PT1sLnJlYWRPbmx5fSl9fWZ1'@; put 'bmN0aW9uIEZVdChuLGUsdCxyKXtjb25zdCBpPXBQZShlKTtpJiYobi5hbGlnbm1lbnQ9aSk7Y29uc3Qgbz1mdW5jdGlvbiBtVXQobil7aWYoIW4/LmJvcmRlcnMpcmV0dXJuIG51bGw7Y29uc3R7Ym9yZGVyczplfT1uLHQ9e307cmV0dXJuWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQi'@; put 'XS5mb3JFYWNoKHI9PntlW3JdJiZlW3JdLndpZHRoPjAmJih0W3JdPXtzdHlsZTpnVXQoZVtyXS53aWR0aCksY29sb3I6e2FyZ2I6a04oZVtyXS5jb2xvcil9fSl9KSxPYmplY3Qua2V5cyh0KS5sZW5ndGg+MD90Om51bGx9KGUpO28mJihuLmJvcmRlcj1vKTtjb25zdCBhPWZ1bmN0aW9uIHZV'@; put 'dChuLGU9bnVsbCl7Y29uc3QgdD0hMD09PW4/LnJlYWRPbmx5LHI9ZT8uZm9udEJvbGR8fCExLGk9ZT8uZm9udEl0YWxpY3x8ITEsbz1lPy5mb250VW5kZXJsaW5lfHwhMSxhPWU/LmZvbnRDb2xvcj8/bnVsbDtpZighKHJ8fGl8fG98fGF8fHQpKXJldHVybiBudWxsO2NvbnN0IGw9e307cmV0'@; put 'dXJuIHImJihsLmJvbGQ9ITApLGkmJihsLml0YWxpYz0hMCksbyYmKGwudW5kZXJsaW5lPSEwKSxhP2wuY29sb3I9e2FyZ2I6a04oYSl9OnQmJihsLmNvbG9yPXthcmdiOiJGRjgwODA4MCJ9KSxPYmplY3Qua2V5cyhsKS5sZW5ndGg+MD9sOm51bGx9KGUsdCk7YSYmKG4uZm9udD1hKTtjb25z'@; put 'dCBsPWZ1bmN0aW9uIF9VdChuLGU9bnVsbCl7bGV0IHQ9bnVsbDtyZXR1cm4gZT8uYmFja2dyb3VuZENvbG9yP3Q9a04oZS5iYWNrZ3JvdW5kQ29sb3IpOiEwPT09bj8ucmVhZE9ubHkmJih0PSJGRkYwRjBGMCIpLHQ/e3R5cGU6InBhdHRlcm4iLHBhdHRlcm46InNvbGlkIixmZ0NvbG9yOnth'@; put 'cmdiOnR9fTpudWxsfShlLHQpO2wmJihuLmZpbGw9bCk7Y29uc3QgZz1mdW5jdGlvbiB5VXQobixlKXtyZXR1cm4gbiYmZSYmKCJkcm9wZG93biI9PT1uLnR5cGV8fCJhdXRvY29tcGxldGUiPT09bi50eXBlKSYmQXJyYXkuaXNBcnJheShuLnNvdXJjZSk/e3R5cGU6Imxpc3QiLGFsbG93Qmxh'@; put 'bms6ITAsZm9ybXVsYWU6W2VdfTpudWxsfShlLEFycmF5LmlzQXJyYXkoZS5zb3VyY2UpP3IudmFsaWRhdGlvbk1hcC5nZXQoSlNPTi5zdHJpbmdpZnkoZS5zb3VyY2UpKT8/bnVsbDpudWxsKTtnJiYobi5kYXRhVmFsaWRhdGlvbj1nKSxlLmNvbW1lbnQ/LnZhbHVlJiYobi5ub3RlPVN0cmlu'@; put 'ZyhlLmNvbW1lbnQudmFsdWUpKX1mdW5jdGlvbiBQVXQobixlLHQscixpKXtjb25zdHtleHBvcnRGb3JtdWxhczpvLGZvcm11bGFzU2VwYXJhdG9yOmEsZGF0YVJvd09mZnNldDpsLGRhdGFDb2xPZmZzZXQ6dSxleGNsdWRlZEhpZGRlblJvd3M6ZyxleGNsdWRlZEhpZGRlbkNvbHM6RX09aTtp'@; put 'ZihyJiZvKXtjb25zdCBPPWZ1bmN0aW9uIGFVdChuLGUsdCl7Y29uc3Qgcj1pVXRbbi50eXBlXTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBpPUFOKG4uc291cmNlQ29sK3QpO3JldHVybntmb3JtdWxhOmAke3J9KCR7bi5zb3VyY2VSYW5nZXMubWFwKChbYSxsXSk9Pntjb25zdCB1PWErZSxn'@; put 'PWwrZTtyZXR1cm4gdT09PWc/YCR7aX0ke3V9YDpgJHtpfSR7dX06JHtpfSR7Z31gfSkuam9pbigiLCIpfSlgfX0ocixsLHUpLFo9TGQodGhpcyxPRyxIMGUpLmNhbGwodGhpcyxuLGUpO3JldHVybnt2YWx1ZTpPP3suLi5PLHJlc3VsdDpufTpaLG51bUZtdDpudWxsfX1pZihvJiZmdW5jdGlv'@; put 'biBvVXQobil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBuJiZuLnN0YXJ0c1dpdGgoIj0iKX0odCkpcmV0dXJue3ZhbHVlOntmb3JtdWxhOmxVdCh0LGEsbC0xLHUtMSxnPz92b2lkIDAsRT8/dm9pZCAwKX0sbnVtRm10Om51bGx9O2lmKCJkYXRlIj09PWUudHlwZXx8ImludGwtZGF0ZSI9PT1l'@; put 'LnR5cGUpe2NvbnN0IE89ZnVuY3Rpb24gU1V0KG4pe2lmKCFuKXJldHVybiBudWxsO2NvbnN0IGU9U3RyaW5nKG4pLm1hdGNoKC9eKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkkLyk7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1wYXJzZUludChlWzFdLDEwKSxyPXBhcnNlSW50KGVbMl0sMTAp'@; put 'LGk9cGFyc2VJbnQoZVszXSwxMCksbz1uZXcgRGF0ZSh0LHItMSxpKTtyZXR1cm4gTnVtYmVyLmlzTmFOKG8uZ2V0VGltZSgpKT9udWxsOmZ1bmN0aW9uIENVdChuKXtjb25zdCBlPURhdGUuVVRDKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCksbi5nZXREYXRlKCkpO3JldHVybiBNYXRo'@; put 'LnJvdW5kKChlLWJVdCkvODY0ZTUpfShvKX0obik7aWYobnVsbCE9PU8pcmV0dXJue3ZhbHVlOk8sbnVtRm10OiJtbS1kZC15eSJ9fWlmKCJ0aW1lIj09PWUudHlwZXx8ImludGwtdGltZSI9PT1lLnR5cGUpe2NvbnN0IE89ZnVuY3Rpb24gRVV0KG4pe2lmKCFuKXJldHVybiBudWxsO2NvbnN0'@; put 'IGU9U3RyaW5nKG4pLnRyaW0oKSx0PWUubWF0Y2goL14oXGR7MSwyfSk6KFxkezJ9KSg/OjooXGR7Mn0pKT8kLyk7aWYodCl7Y29uc3QgaT1wYXJzZUludCh0WzFdLDEwKSxvPXBhcnNlSW50KHRbMl0sMTApLGE9dFszXT9wYXJzZUludCh0WzNdLDEwKTowO3JldHVybiBpPjIzfHxvPjU5fHxh'@; put 'PjU5P251bGw6KDM2MDAqaSs2MCpvK2EpLzg2NDAwfWNvbnN0IHI9ZS5tYXRjaCgvXihcZHsxLDJ9KTooXGR7Mn0pKD86OihcZHsyfSkpP1xzKihBTXxQTSkkL2kpO2lmKHIpe2xldCBpPXBhcnNlSW50KHJbMV0sMTApO2NvbnN0IG89cGFyc2VJbnQoclsyXSwxMCksYT1yWzNdP3BhcnNlSW50'@; put 'KHJbM10sMTApOjAsbD1yWzRdLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGk+MTJ8fG8+NTl8fGE+NTk/bnVsbDooIkFNIj09PWwmJjEyPT09aT9pPTA6IlBNIj09PWwmJjEyIT09aSYmKGkrPTEyKSwoMzYwMCppKzYwKm8rYSkvODY0MDApfXJldHVybiBudWxsfShuKTtpZihudWxsIT09TylyZXR1'@; put 'cm57dmFsdWU6TyxudW1GbXQ6Img6bW06c3MifX1yZXR1cm4iY2hlY2tib3giPT09ZS50eXBlP3t2YWx1ZTpMZCh0aGlzLHlQZSxIVXQpLmNhbGwodGhpcyxuLGUpLG51bUZtdDpudWxsfToibXVsdGlzZWxlY3QiPT09ZS50eXBlP3t2YWx1ZTpMZCh0aGlzLGJQZSxWVXQpLmNhbGwodGhpcyxu'@; put 'KSxudW1GbXQ6bnVsbH06Im51bWVyaWMiPT09ZS50eXBlP3t2YWx1ZTpMZCh0aGlzLE9HLEgwZSkuY2FsbCh0aGlzLG4sZSksbnVtRm10OkFVdChlLm51bWVyaWNGb3JtYXQsZS5sb2NhbGUpfTp7dmFsdWU6TGQodGhpcyxPRyxIMGUpLmNhbGwodGhpcyxuLGUpLG51bUZtdDpudWxsfX1mdW5j'@; put 'dGlvbiBIMGUobixlKXtpZihudWxsPT1uKXJldHVybiBudWxsO2lmKCJudW1lcmljIj09PWUudHlwZSl7aWYoIm51bWJlciI9PXR5cGVvZiBuKXJldHVybiBuO2NvbnN0IHQ9TnVtYmVyKG4pO3JldHVybiBOdW1iZXIuaXNOYU4odCk/UGwobik6dH1yZXR1cm4gUGwobil9ZnVuY3Rpb24gSFV0'@; put 'KG4sZSl7cmV0dXJuIG49PT0oZS5jaGVja2VkVGVtcGxhdGU/PyEwKX1mdW5jdGlvbiBWVXQobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/MD09PW4ubGVuZ3RoP251bGw6bi5tYXAoZT0+U3RyaW5nKG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGU/ZS52YWx1ZTplKSkuam9pbigiLCAi'@; put 'KTpudWxsPT1uP251bGw6UGwobil9ZnVuY3Rpb24gQlV0KG4pe3JldHVybiBuPy5iYWNrZ3JvdW5kQ29sb3I/e3R5cGU6InBhdHRlcm4iLHBhdHRlcm46InNvbGlkIixmZ0NvbG9yOnthcmdiOmtOKG4uYmFja2dyb3VuZENvbG9yKX19Om51bGx9ZnVuY3Rpb24galV0KG4pe2lmKCFuPy5ib3Jk'@; put 'ZXIpcmV0dXJuIG51bGw7Y29uc3R7c3R5bGU6ZT0idGhpbiIsY29sb3I6dH09bi5ib3JkZXIscj10P3tzdHlsZTplLGNvbG9yOnthcmdiOmtOKHQpfX06e3N0eWxlOmV9O3JldHVybnt0b3A6cixib3R0b206cixsZWZ0OnIscmlnaHQ6cn19ZnVuY3Rpb24gVVV0KCl7Y29uc3R7Y29tcHJlc3Np'@; put 'b246bn09dGhpcy5vcHRpb25zO2xldCBlPW51bGw7cmV0dXJuITA9PT1uP2U9NjoibnVtYmVyIj09dHlwZW9mIG4mJm4+PTEmJm48PTkmJihlPW4pLG51bGw9PT1lP3t9Ont6aXA6e2NvbXByZXNzaW9uOiJERUZMQVRFIixjb21wcmVzc2lvbk9wdGlvbnM6e2xldmVsOmV9fX19ZnVuY3Rpb24g'@; put 'elV0KG4sZSx0LHIsaSxvKXswPT09aXx8MD09PW98fGUuZm9yRWFjaCgoe3Jvd3M6YSxjb2xzOmwscnVsZXM6dX0pPT57aWYoIXV8fDA9PT11Lmxlbmd0aClyZXR1cm47Y29uc3QgZz0oYT9hWzBdOjApK3QsRT0oYT9hWzFdOmktMSkrdCxPPShsP2xbMF06MCkrcixaPShsP2xbMV06by0xKSty'@; put 'O24uYWRkQ29uZGl0aW9uYWxGb3JtYXR0aW5nKHtyZWY6TGQodGhpcyxNUGUsV1V0KS5jYWxsKHRoaXMsZyxPLEUsWikscnVsZXM6dX0pfSl9ZnVuY3Rpb24gV1V0KG4sZSx0LHIpe3JldHVybmAke0FOKGUpfSR7bn06JHtBTihyKX0ke3R9YH1mdW5jdGlvbiBZVXQobixlLHQpe3QmJihuLmdl'@; put 'dENvbHVtbigxKS53aWR0aD01KTtjb25zdCByPXQ/MTowO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKW4uZ2V0Q29sdW1uKGkrMStyKS53aWR0aD1NYXRoLm1heChlW2ldLzcsMSl9ZnVuY3Rpb24gWlV0KG4sZSx0KXtjb25zdCByPXQ/MTowO2UuZm9yRWFjaChpPT57bi5nZXRDb2x1bW4o'@; put 'aSsxK3IpLmhpZGRlbj0hMH0pfWZ1bmN0aW9uIEdVdChuLGUsdCl7ZS5mb3JFYWNoKHI9PntuLmdldFJvdyhyK3QpLmhpZGRlbj0hMH0pfWZ1bmN0aW9uICRVdChuLGUsdCxyLGksbyl7Y29uc3QgYT1lPjB8fHQ+MDtpZighYSYmIW8pcmV0dXJuO2NvbnN0IGw9e307byYmKGwucmlnaHRUb0xl'@; put 'ZnQ9ITApLGEmJihsLnN0YXRlPSJmcm96ZW4iLGwueFNwbGl0PXQrKGk/MTowKSxsLnlTcGxpdD1lK3IpLG4udmlld3M9W2xdfWZ1bmN0aW9uIHFVdChuLGUsdCxyLGksbyxhKXtjb25zdCBsPW4uZ2V0Um93KDEpO2lmKHIpe2NvbnN0IHU9bC5nZXRDZWxsKDEpO3UudmFsdWU9IiIsbyYmKHUu'@; put 'ZmlsbD1vKSxhJiYodS5ib3JkZXI9YSl9Zm9yKGxldCB1PTA7dTxlLmxlbmd0aDt1Kyspe2NvbnN0IGc9bC5nZXRDZWxsKHUraSk7Zy52YWx1ZT1lW3VdPz9udWxsO2NvbnN0IEU9ZlBlKHRbdV0pO0UmJihnLmFsaWdubWVudD1FKSxvJiYoZy5maWxsPW8pLGEmJihnLmJvcmRlcj1hKX1sLmNv'@; put 'bW1pdCgpfWZ1bmN0aW9uIEtVdChuLGUsdCxyLGksbyl7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IGw9ZVthXSx1PW4uZ2V0Um93KGErMSk7aWYodCYmMD09PWEpe2NvbnN0IEU9dS5nZXRDZWxsKDEpO0UudmFsdWU9IiIsaSYmKEUuZmlsbD1pKSxvJiYoRS5ib3JkZXI9byl9'@; put 'bGV0IGc9cjtsLmZvckVhY2goRT0+e2NvbnN0IE89dS5nZXRDZWxsKGcpO08udmFsdWU9RS5sYWJlbD8/bnVsbDtjb25zdCBaPWZQZShFLmNsYXNzTmFtZSk7WiYmKE8uYWxpZ25tZW50PVopLGkmJihPLmZpbGw9aSksbyYmKE8uYm9yZGVyPW8pLGcrPUUuY29sc3Bhbn0pLHUuY29tbWl0KCl9'@; put 'fWZ1bmN0aW9uIFhVdChuLGUsdCxyKXt0JiZlLmxlbmd0aD4xJiZuLm1lcmdlQ2VsbHMoMSwxLGUubGVuZ3RoLDEpO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBhPWkrMTtsZXQgbD1yO2VbaV0uZm9yRWFjaCh1PT57dS5jb2xzcGFuPjEmJm4ubWVyZ2VDZWxscyhhLGwsYSxs'@; put 'K3UuY29sc3Bhbi0xKSxsKz11LmNvbHNwYW59KX19ZnVuY3Rpb24gUVV0KG4sZSl7Y29uc3QgdD1uZXcgTWFwO2ZvcihsZXQgZz0wO2c8ZS5sZW5ndGg7ZysrKWZvcihsZXQgRT0wO0U8ZVtnXS5sZW5ndGg7RSsrKXtjb25zdCBPPWVbZ11bRV07aWYoKCJkcm9wZG93biI9PT1PLnR5cGV8fCJh'@; put 'dXRvY29tcGxldGUiPT09Ty50eXBlKSYmQXJyYXkuaXNBcnJheShPLnNvdXJjZSkmJk8uc291cmNlLmxlbmd0aD4wKXtjb25zdCBlZT1KU09OLnN0cmluZ2lmeShPLnNvdXJjZSk7dC5oYXMoZWUpfHx0LnNldChlZSxPLnNvdXJjZSl9fWlmKDA9PT10LnNpemUpcmV0dXJuIG5ldyBNYXA7Y29u'@; put 'c3Qgcj1uZXcgU2V0KG4ud29ya3NoZWV0cy5tYXAoZz0+Zy5uYW1lKSk7bGV0IGk9Il9Ib3RWYWxpZGF0aW9uIixvPTE7Zm9yKDtyLmhhcyhpKTspaT1gX0hvdFZhbGlkYXRpb24ke299YCxvKz0xO2NvbnN0IGE9bi5hZGRXb3Jrc2hlZXQoaSk7YS5zdGF0ZT0idmVyeUhpZGRlbiI7Y29uc3Qg'@; put 'bD1uZXcgTWFwO2xldCB1PTE7cmV0dXJuIHQuZm9yRWFjaCgoZyxFKT0+e2ZvcihsZXQgdmU9MDt2ZTxnLmxlbmd0aDt2ZSsrKXtjb25zdCBNZT1nW3ZlXTthLmdldENlbGwodmUrMSx1KS52YWx1ZT1iMChNZSk/U3RyaW5nKE1lLnZhbHVlKTpTdHJpbmcoTWUpfWNvbnN0IE89QU4odSksZWU9'@; put 'YCcke2kucmVwbGFjZUFsbCgiJyIsIicnIil9JyEkJHtPfSQxOiQke099JCR7Zy5sZW5ndGh9YDtsLnNldChFLGVlKSx1Kz0xfSksbH1jb25zdCBlenQ9ImNzdiIsdHp0PSJ4bHN4IixWMGU9e1tlenRdOmNsYXNzIGVVdCBleHRlbmRzIG9QZXtzdGF0aWMgZ2V0IERFRkFVTFRfT1BUSU9OUygp'@; put 'e3JldHVybnttaW1lVHlwZToidGV4dC9jc3YiLGZpbGVFeHRlbnNpb246ImNzdiIsYm9tOiEwLGNvbHVtbkRlbGltaXRlcjoiLCIscm93RGVsaW1pdGVyOiJcclxuIixzYW5pdGl6ZVZhbHVlczohMX19X21lcmdlT3B0aW9ucyhlKXtjb25zdCB0PXN1cGVyLl9tZXJnZU9wdGlvbnMoZSkscj17'@; put 'fTtyZXR1cm4iaGlkZSI9PT10LmV4cG9ydEhpZGRlblJvd3MmJihyLmV4cG9ydEhpZGRlblJvd3M9ITEpLCJoaWRlIj09PXQuZXhwb3J0SGlkZGVuQ29sdW1ucyYmKHIuZXhwb3J0SGlkZGVuQ29sdW1ucz0hMSksT2JqZWN0LmtleXMocikubGVuZ3RoPjA/WWQodCxyKTp0fWV4cG9ydCgpe2Nv'@; put 'bnN0IGU9dGhpcy5vcHRpb25zLHQ9dGhpcy5kYXRhUHJvdmlkZXIuZ2V0RGF0YSgpO2xldCByPXRoaXMuZGF0YVByb3ZpZGVyLmdldENvbHVtbkhlYWRlcnMoKTtjb25zdCBpPXIubGVuZ3RoPjAsbz10aGlzLmRhdGFQcm92aWRlci5nZXRSb3dIZWFkZXJzKCksYT1vLmxlbmd0aD4wO2xldCBs'@; put 'PWUuYm9tPyJcdWZlZmYiOiIiO3JldHVybiBpJiYocj1yLm1hcCh1PT50aGlzLl9lc2NhcGVDZWxsKHUse2ZvcmNlOiEwLHNhbml0aXplVmFsdWU6ZS5zYW5pdGl6ZVZhbHVlc30pKSxhJiYobCs9ZS5jb2x1bW5EZWxpbWl0ZXIpLGwrPXIuam9pbihlLmNvbHVtbkRlbGltaXRlciksbCs9ZS5y'@; put 'b3dEZWxpbWl0ZXIpLHQuZm9yRWFjaCgodSxnKT0+e2c+MCYmKGwrPWUucm93RGVsaW1pdGVyKSxhJiYobCs9dGhpcy5fZXNjYXBlQ2VsbChvW2ddLHtzYW5pdGl6ZVZhbHVlOmUuc2FuaXRpemVWYWx1ZXN9KSxsKz1lLmNvbHVtbkRlbGltaXRlcik7Y29uc3QgRT11Lm1hcChPPT50aGlzLl9l'@; put 'c2NhcGVDZWxsKE8se3Nhbml0aXplVmFsdWU6ZS5zYW5pdGl6ZVZhbHVlc30pKS5qb2luKGUuY29sdW1uRGVsaW1pdGVyKTtsKz1FfSksbH1fZXNjYXBlQ2VsbChlLHtmb3JjZTp0PSExLHNhbml0aXplVmFsdWU6cj0hMX09e30pe2xldCBpPVBsKGUpO3JldHVybiIiPT09aXx8KHImJih0PSEw'@; put 'KSxyIGluc3RhbmNlb2YgUmVnRXhwP2k9YVBlKHRoaXMsdVBlLG5VdCkuY2FsbCh0aGlzLGkscik6ImZ1bmN0aW9uIj09dHlwZW9mIHI/aT1yKGkpOnImJihpPWFQZSh0aGlzLGNQZSx0VXQpLmNhbGwodGhpcyxpKSksKHR8fGkuaW5kZXhPZigiXHIiKT49MHx8aS5pbmRleE9mKCciJyk+PTB8'@; put 'fGkuaW5kZXhPZigiXG4iKT49MHx8aS5pbmRleE9mKHRoaXMub3B0aW9ucy5jb2x1bW5EZWxpbWl0ZXIpPj0wKSYmKGk9aS5yZXBsYWNlQWxsKCciJywnIiInKSxpPWAiJHtpfSJgKSksaX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxzUGUodGhpcyxjUGUpLHNQZSh0aGlzLHVQZSl9'@; put 'fSxbdHp0XTpjbGFzcyBMVXQgZXh0ZW5kcyBvUGV7c3RhdGljIGdldCBCSU5BUlkoKXtyZXR1cm4hMH1nZXQgYmluYXJ5KCl7cmV0dXJuITB9c3RhdGljIGdldCBERUZBVUxUX09QVElPTlMoKXtyZXR1cm57bWltZVR5cGU6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vk'@; put 'b2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IixmaWxlRXh0ZW5zaW9uOiJ4bHN4Iixib206ITEsZW5naW5lOm51bGwsY29tcHJlc3Npb246bnVsbCxjb25kaXRpb25hbEZvcm1hdHRpbmc6W10sZXhwb3J0Rm9ybXVsYXM6ITEsaGVhZGVyU3R5bGU6e2JhY2tncm91bmRDb2xvcjoiI0YyRjJG'@; put 'MiIsYm9yZGVyOntzdHlsZToidGhpbiJ9fX19ZXhwb3J0KCl7dmFyIGU9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc3QgdD1lLm9wdGlvbnMuZW5naW5lOyghdHx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQuV29ya2Jvb2spJiZKcigiTWlzc2luZyBvciBpbnZhbGlkIEV4Y2VsSlMgZW5n'@; put 'aW5lLiBQYXNzIHRoZSBFeGNlbEpTIG1vZHVsZSB2aWEgdGhlIGBlbmdpbmVzYCBvcHRpb24gaW4gdGhlIGV4cG9ydEZpbGUgcGx1Z2luIHNldHRpbmdzOiBgZXhwb3J0RmlsZTogeyBlbmdpbmVzOiB7IHhsc3g6IEV4Y2VsSlMgfSB9YC4iKTtjb25zdCByPWUub3B0aW9ucy5zaGVldHM7KHIm'@; put 'JnIubGVuZ3RoPjA/bmV3IFNldChyLm1hcChhPT5hLmluc3RhbmNlLnJvb3REb2N1bWVudCkpOm5ldyBTZXQoW2UuZGF0YVByb3ZpZGVyLmhvdC5yb290RG9jdW1lbnRdKSkuZm9yRWFjaChhPT5mdW5jdGlvbiBkVXQobil7TjBlLmRlbGV0ZShuKSxGMGUuZGVsZXRlKG4pfShhKSk7Y29uc3Qg'@; put 'bz1uZXcgdC5Xb3JrYm9vaztpZihyJiZyLmxlbmd0aD4wKXtjb25zdCBhPW5ldyBTZXQ7ci5mb3JFYWNoKGw9Pntjb25zdCB1PW5ldyBpUGUobC5pbnN0YW5jZSksZz0iY29sdW1uSGVhZGVycyJpbiBsJiYhKCJjb2xIZWFkZXJzImluIGwpP3suLi5sLGNvbEhlYWRlcnM6bC5jb2x1bW5IZWFk'@; put 'ZXJzfTpsLEU9ey4uLmUub3B0aW9ucywuLi5nfTt1LnNldE9wdGlvbnMoRSk7Y29uc3QgTz1sLm5hbWV8fCJTaGVldCI7bGV0IFo9TyxlZT0xO2Zvcig7YS5oYXMoWik7KVo9YCR7T30ke2VlfWAsZWUrPTE7YS5hZGQoWik7Y29uc3QgdmU9by5hZGRXb3Jrc2hlZXQoWik7TGQoZSxQMGUsT1Bl'@; put 'KS5jYWxsKGUsbyx2ZSx1LEUpfSl9ZWxzZXtjb25zdCBhPW8uYWRkV29ya3NoZWV0KCJTaGVldDEiKTtMZChlLFAwZSxPUGUpLmNhbGwoZSxvLGEsZS5kYXRhUHJvdmlkZXIsZS5vcHRpb25zKX1yZXR1cm4gby54bHN4LndyaXRlQnVmZmVyKExkKGUsU1BlLFVVdCkuY2FsbChlKSl9KSgpfWNv'@; put 'bnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLHpoKHRoaXMsUDBlKSx6aCh0aGlzLGdQZSksemgodGhpcyxtUGUpLHpoKHRoaXMsdlBlKSx6aCh0aGlzLF9QZSksemgodGhpcyxPRyksemgodGhpcyx5UGUpLHpoKHRoaXMsYlBlKSx6aCh0aGlzLHdQZSksemgodGhpcyxDUGUpLHpoKHRoaXMs'@; put 'U1BlKSx6aCh0aGlzLEVQZSksemgodGhpcyxNUGUpLHpoKHRoaXMsVFBlKSx6aCh0aGlzLHhQZSksemgodGhpcyxBUGUpLHpoKHRoaXMsa1BlKSx6aCh0aGlzLFJQZSksemgodGhpcyxJUGUpLHpoKHRoaXMsRFBlKSx6aCh0aGlzLExQZSl9fX07ZnVuY3Rpb24gTlBlKG4pe2NvbnN0IGU9bi5n'@; put 'ZXRTZXR0aW5ncygpLHQ9ISghZS5jb2xIZWFkZXJzJiYhZS5uZXN0ZWRIZWFkZXJzKSxyPSEhZS5yb3dIZWFkZXJzLGk9bi5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLG89e2NvbEhlYWRlcnM6dCxyb3dIZWFkZXJzOnJ9O3JldHVybiFpfHxpLmlzU2luZ2xlQ2VsbCgpfHwoaS5mcm9tLnJvdz8/'@; put 'MCk8MCYmKGkuZnJvbS5jb2w/PzApPDA/bzp7Li4ubyxyYW5nZTpbTWF0aC5tYXgoMCxNYXRoLm1pbihpLmZyb20ucm93Pz8wLGkudG8ucm93Pz8wKSksTWF0aC5tYXgoMCxNYXRoLm1pbihpLmZyb20uY29sPz8wLGkudG8uY29sPz8wKSksTWF0aC5tYXgoaS5mcm9tLnJvdz8/MCxpLnRvLnJv'@; put 'dz8/MCksTWF0aC5tYXgoaS5mcm9tLmNvbD8/MCxpLnRvLmNvbD8/MCldfX1mdW5jdGlvbiBpenQobil7Y29uc3R7ZnJhZ21lbnQ6ZX09c3dgCiAgICA8ZGl2IGNsYXNzPSIke1FwfV9fY29udGVudCI+CiAgICAgIDxpIGNsYXNzPSIke1FwfV9faWNvbiI+CiAgICAgICAgPHN2ZyBjbGFzcz0i'@; put 'JHtRcH1fX2ljb24tc3ZnIgogICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogICAgICAgICAgPHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTE1IDhhNyA3IDAg'@; put 'MSAxLTMuNS02LjA2MiI+PC9wYXRoPgogICAgICAgIDwvc3ZnPgogICAgICA8L2k+CiAgICAgIDxkaXYgY2xhc3M9IiR7UXB9X190ZXh0Ij4KICAgICAgICA8aDIgY2xhc3M9IiR7UXB9X190aXRsZSI+JHtufTwvaDI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYDtyZXR1cm4gZX1mdW5j'@; put 'dGlvbiBGUGUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFBQZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3Io'@; put 'ImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBIUGUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3Rh'@; put 'bmNlIik7cmV0dXJuIHR9Y29uc3QgUk49ImV4cG9ydEZpbGUiO2Z1bmN0aW9uIFZQZShuKXtyZXR1cm4gZnVuY3Rpb24gaHp0KG4pe3JldHVybiBDYShuKX0obik/bjp2b2lkIDB9dmFyIEIwZT1uZXcgV2Vha01hcCxqMGU9bmV3IFdlYWtTZXQ7Y2xhc3MgZnp0IGV4dGVuZHMgYWx7c3RhdGlj'@; put 'IGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIFJOfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDI0MH1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVybltSTl19aXNFbmFibGVkKCl7cmV0dXJuITB9ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRI'@; put 'b29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uIHN6dChuLGUpe3JldHVybiBmdW5jdGlvbiBvenQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFBQZShuLGUsImdldCIpKX0odGhpcyxCMGUpKSxzdXBlci5lbmFibGVQbHVnaW4o'@; put 'KSl9ZGlzYWJsZVBsdWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKX1leHBvcnRBc1N0cmluZyhlLHQ9e30pe2NvbnN0IHI9dGhpcy5fY3JlYXRlVHlwZUZvcm1hdHRlcihlLHQpO3JldHVybiByLmJpbmFyeSYmSnIoYEV4cG9ydCBmb3JtYXQgdHlwZSAiJHtlfSIgY2Fubm90IGJlIGV4cG9y'@; put 'dGVkIGFzIGEgc3RyaW5nIChiaW5hcnkgZm9ybWF0KS5gKSxyLmV4cG9ydCgpfWV4cG9ydEFzQmxvYihlLHQ9e30pe2NvbnN0IHI9dGhpcy5fY3JlYXRlVHlwZUZvcm1hdHRlcihlLHQpO3JldHVybiByLmJpbmFyeSYmSnIoYGV4cG9ydEFzQmxvYigpIGRvZXMgbm90IHN1cHBvcnQgYmluYXJ5'@; put 'IGZvcm1hdHMgc3VjaCBhcyAiJHtlfSIuIFVzZSBleHBvcnRBc0Jsb2JBc3luYygpIGluc3RlYWQuYCksdGhpcy5fY3JlYXRlQmxvYihyKX1leHBvcnRBc0Jsb2JBc3luYyhlKXt2YXIgdD10aGlzO3JldHVybiBDcihmdW5jdGlvbioocixpPXt9KXtyZXR1cm4gdC5fY3JlYXRlQmxvYih0Ll9j'@; put 'cmVhdGVUeXBlRm9ybWF0dGVyKHIsaSkpfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWRvd25sb2FkRmlsZShlLHQ9e30pe2NvbnN0IHI9dGhpcy5fY3JlYXRlVHlwZUZvcm1hdHRlcihlLHQpO3IuYmluYXJ5JiZKcihgZG93bmxvYWRGaWxlKCkgZG9lcyBub3Qgc3VwcG9ydCBiaW5hcnkgZm9y'@; put 'bWF0cyBzdWNoIGFzICIke2V9Ii4gVXNlIGRvd25sb2FkRmlsZUFzeW5jKCkgaW5zdGVhZC5gKTtjb25zdCBpPWAke3Iub3B0aW9ucy5maWxlbmFtZX0uJHtyLm9wdGlvbnMuZmlsZUV4dGVuc2lvbn1gO0hQZSh0aGlzLGowZSxCUGUpLmNhbGwodGhpcyx0aGlzLl9jcmVhdGVCbG9iKHIpLGkp'@; put 'fWRvd25sb2FkRmlsZUFzeW5jKGUpe3ZhciB0PXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKihyLGk9e30pe2NvbnN0IG89dC5fY3JlYXRlVHlwZUZvcm1hdHRlcihyLGkpLGE9dC5ob3QuZ2V0UGx1Z2luKCJkaWFsb2ciKSxsPWE/LmlzRW5hYmxlZCgpLHtyb290V2luZG93OnV9PXQuaG90LGc9'@; put 'YCR7by5vcHRpb25zLmZpbGVuYW1lfS4ke28ub3B0aW9ucy5maWxlRXh0ZW5zaW9ufWAsRT1mdW5jdGlvbigpe3ZhciBPPUNyKGZ1bmN0aW9uKigpe2NvbnN0IFo9eWllbGQgUHJvbWlzZS5yZXNvbHZlKHQuX2NyZWF0ZUJsb2IobykpO0hQZSh0LGowZSxCUGUpLmNhbGwodCxaLGcpfSk7cmV0'@; put 'dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtpZihsJiZvLmJpbmFyeSl7YS5zaG93KHtjb250ZW50Oml6dCh0LmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKHh1ZSkpLGN1c3RvbUNsYXNzTmFtZTpRcCxiYWNrZ3JvdW5kOiJzZW1pLXRyYW5zcGFyZW50'@; put 'IixjbG9zYWJsZTohMSxhbmltYXRpb246ITF9KSx5aWVsZCBuZXcgUHJvbWlzZShPPT57dS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt1LnJlcXVlc3RBbmltYXRpb25GcmFtZShPKX0pfSk7dHJ5e3lpZWxkIEUoKX1maW5hbGx5e2EuaGlkZSgpfX1lbHNlIHlpZWxkIEUoKX0pLmFwcGx5'@; put 'KHRoaXMsYXJndW1lbnRzKX1zdXBwb3J0c0V4cG9ydEZvcm1hdChlKXtpZighVjBlW2VdKXJldHVybiExO2lmKCJ4bHN4Ij09PWUpe2NvbnN0IHQ9VlBlKHRoaXMuaG90LmdldFNldHRpbmdzKClbUk5dKTtyZXR1cm4gdm9pZCAwIT09dCYmQ2EodC5lbmdpbmVzKSYmISF0LmVuZ2luZXM/Lnhs'@; put 'c3h9cmV0dXJuITB9X2NyZWF0ZVR5cGVGb3JtYXR0ZXIoZSx0PXt9KXtWMGVbZV18fEpyKGBFeHBvcnQgZm9ybWF0IHR5cGUgIiR7ZX0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7Y29uc3Qgcj1WUGUodGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtSTl0pLG89KHImJkNhKHIuZW5naW5lcyk/ci5lbmdp'@; put 'bmVzOnZvaWQgMCk/LltlXSxhPXZvaWQgMCE9PW8/e2VuZ2luZTpvLC4uLnR9OnQsbD1mdW5jdGlvbiBuenQobixlLHQpe2NvbnN0IHI9VjBlW25dO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP25ldyByKGUsdCk6bnVsbH0oZSxuZXcgaVBlKHRoaXMuaG90KSxhKTtyZXR1cm4gbnVsbD09'@; put 'PWwmJkpyKGBFeHBvcnQgZm9ybWF0IHR5cGUgIiR7ZX0iIGlzIG5vdCBzdXBwb3J0ZWQuYCksbH1fY3JlYXRlQmxvYihlKXt0eXBlb2YgQmxvYj4idSImJkpyKCJCbG9iIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4iKTtjb25zdCB0PWUuZXhwb3J0KCkse21pbWVUeXBl'@; put 'OnIsZW5jb2Rpbmc6aX09ZS5vcHRpb25zO3JldHVybiB0IGluc3RhbmNlb2YgUHJvbWlzZT90LnRoZW4obz0+bmV3IEJsb2IoW29dLHt0eXBlOnJ9KSk6bmV3IEJsb2IoW3RdLHt0eXBlOmAke3J9O2NoYXJzZXQ9JHtpfWB9KX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxmdW5jdGlv'@; put 'biB1enQobixlKXtGUGUobixlKSxlLmFkZChuKX0odGhpcyxqMGUpLGZ1bmN0aW9uIGx6dChuLGUsdCl7RlBlKG4sZSksZS5zZXQobix0KX0odGhpcyxCMGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGZ1bmN0aW9uIGN6dChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGF6dChuLGUsdCl7'@; put 'aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sUFBlKG4sZSwic2V0IiksdCksdH0odGhpcyxCMGUsdD0+eyJvYmplY3Qi'@; put 'PT10eXBlb2YgdCYmbnVsbCE9PXQmJnQuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gcnp0KG4pe3JldHVybntrZXk6ImV4cG9ydF9maWxlIixuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShwY2UpfSxoaWRkZW4oKXtyZXR1cm4gdm9pZCAwPT09'@; put 'dGhpcy5nZXRTZXR0aW5ncygpW1JOXX0sc3VibWVudTp7aXRlbXM6W3trZXk6ImV4cG9ydF9maWxlOmNzdiIsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoZ2NlKX0sY2FsbGJhY2soKXtuLmRvd25sb2FkRmlsZSgiY3N2IixOUGUodGhpcykpfSxkaXNhYmxlZDohMX0s'@; put 'e2tleToiZXhwb3J0X2ZpbGU6eGxzeCIsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobWNlKX0sY2FsbGJhY2soKXtuLmRvd25sb2FkRmlsZUFzeW5jKCJ4bHN4IixOUGUodGhpcykpLmNhdGNoKGU9PnttNygiRXhwb3J0RmlsZTogWExTWCBleHBvcnQgZmFpbGVkLiIs'@; put 'ZSl9KX0saGlkZGVuOigpPT4hbi5zdXBwb3J0c0V4cG9ydEZvcm1hdCgieGxzeCIpfV19fX0odGhpcykpfSl9fWZ1bmN0aW9uIEJQZShuLGUpe2NvbnN0e3Jvb3REb2N1bWVudDp0LHJvb3RXaW5kb3c6cn09dGhpcy5ob3QsaT1yLlVSTHx8ci53ZWJraXRVUkwsbz1pLmNyZWF0ZU9iamVjdFVS'@; put 'TChuKSxhPXQuY3JlYXRlRWxlbWVudCgiYSIpO2Euc3R5bGUuZGlzcGxheT0ibm9uZSIsYS5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLGEuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsZSksdC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgiY2xpY2si'@; put 'KSksdC5ib2R5LnJlbW92ZUNoaWxkKGEpLHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9PntpLnJldm9rZU9iamVjdFVSTChvKX0sMTAwKX1jbGFzcyBJTntnZXRFbGVtZW50cygpe3JldHVybiB0aGlzLmVsZW1lbnRzfXJlc2V0KCl7WG4odGhpcy5lbGVtZW50cyxlPT5lLnJlc2V0KCkp'@; put 'fWhpZGUoKXt0aGlzLmhpZGRlbj0hMH1zaG93KCl7dGhpcy5oaWRkZW49ITF9aXNIaWRkZW4oKXtyZXR1cm4gbnVsbD09PXRoaXMuaG90fHx0aGlzLmhpZGRlbn1yZXN0b3JlU3RhdGUoZSl7dGhpcy5zdGF0ZSYmdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlLmdldFZhbHVlQXRJbmRleChlKSl9'@; put 'c2V0U3RhdGUoZSl7SnIoIlRoZSBzdGF0ZSBzZXR0aW5nIGxvZ2ljIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXNhdmVTdGF0ZShlKXt0aGlzLnN0YXRlJiZ0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChlLHRoaXMuZ2V0U3RhdGUoKSl9Z2V0U3RhdGUoKXtyZXR1cm4gSnIoIlRoZSBzdGF0ZSBn'@; put 'YXRoZXJpbmcgbG9naWMgaXMgbm90IGltcGxlbWVudGVkIikse319Z2V0TWVudUl0ZW1EZXNjcmlwdG9yKCl7cmV0dXJuIEpyKCJUaGUgbWVudSBpdGVtIGRlc2NyaXB0b3IgbG9naWMgaXMgbm90IGltcGxlbWVudGVkIikse319ZGVzdHJveSgpe3RoaXMuaG90Py5jb2x1bW5JbmRleE1hcHBl'@; put 'ci51bnJlZ2lzdGVyTWFwKHRoaXMuc3RhdGVJZCksdGhpcy5jbGVhckxvY2FsSG9va3MoKSxYbih0aGlzLmVsZW1lbnRzLGU9PmUuZGVzdHJveSgpKSx0aGlzLnN0YXRlPW51bGwsdGhpcy5lbGVtZW50cy5sZW5ndGg9MCx0aGlzLmhvdD1udWxsfWNvbnN0cnVjdG9yKGUse2lkOnQsc3RhdGVs'@; put 'ZXNzOnI9ITB9KXt0aGlzLmVsZW1lbnRzPVtdLHRoaXMuaGlkZGVuPSExLHRoaXMuc3RhdGVJZD0iIix0aGlzLmhvdD1lLHRoaXMuaWQ9dCx0aGlzLnN0YXRlSWQ9YEZpbHRlcnMuY29tcG9uZW50LiR7dGhpcy5pZH1gLHRoaXMuc3RhdGU9cj9udWxsOnRoaXMuaG90LmNvbHVtbkluZGV4TWFw'@; put 'cGVyLnJlZ2lzdGVyTWFwKHRoaXMuc3RhdGVJZCxuZXcgVFkpfX1ZbChJTixfaCk7Y29uc3QgRE49e307ZnVuY3Rpb24gY3gobixlKXtETltuXXx8SnIoYEZpbHRlciBjb25kaXRpb24gIiR7bn0iIGRvZXMgbm90IGV4aXN0LmApO2NvbnN0e2NvbmRpdGlvbjp0LGRlc2NyaXB0b3I6cn09RE5b'@; put 'bl07bGV0IGk9ZTtyZXR1cm4gci5pbnB1dFZhbHVlc0RlY29yYXRvciYmKGk9KDAsci5pbnB1dFZhbHVlc0RlY29yYXRvcikoaSkpLGZ1bmN0aW9uKG8pe3JldHVybiB0LmFwcGx5KG8ubWV0YS5pbnN0YW5jZSxbbyxpXSl9fWZ1bmN0aW9uIG9DKG4pe3JldHVybiBETltuXXx8SnIoYEZpbHRl'@; put 'ciBjb25kaXRpb24gIiR7bn0iIGRvZXMgbm90IGV4aXN0LmApLEROW25dLmRlc2NyaXB0b3J9ZnVuY3Rpb24ga2wobixlLHQpe3Qua2V5PW4sRE5bbl09e2NvbmRpdGlvbjplLGRlc2NyaXB0b3I6dH19Y29uc3QgYmg9Im5vbmUiO2tsKGJoLGZ1bmN0aW9uIHB6dCgpe3JldHVybiEwfSx7bmFt'@; put 'ZTpJWSxpbnB1dHNDb3VudDowLHNob3dPcGVyYXRvcnM6ITF9KTtjb25zdCBhQz0iZW1wdHkiO2tsKGFDLGZ1bmN0aW9uIGd6dChuKXtyZXR1cm4gQWwobi52YWx1ZSl9LHtuYW1lOlljZSxpbnB1dHNDb3VudDowLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCB1eD0ibm90X2VtcHR5IjtrbCh1'@; put 'eCxmdW5jdGlvbiBtenQobixlKXtyZXR1cm4hY3goYUMsZSkobil9LHtuYW1lOlpjZSxpbnB1dHNDb3VudDowLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBzQz0iZXEiO2tsKHNDLGZ1bmN0aW9uIHZ6dChuLFtlXSl7cmV0dXJuIHYxKFBsKG4udmFsdWUpLG4ubWV0YS5sb2NhbGUpPT09UGwo'@; put 'ZSl9LHtuYW1lOkdjZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBkeD0ibmVxIjtrbChkeCxmdW5jdGlvbiBfenQobixlKXtyZXR1cm4hY3goc0MsZSkobil9LHtuYW1lOiRjZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxrbCgiZ3QiLGZ1bmN0aW9u'@; put 'IHl6dChuLFtlXSl7bGV0IHQ9ZTtyZXR1cm4ibnVtZXJpYyI9PT1uLm1ldGEudHlwZSYmKHQ9cGFyc2VGbG9hdCh0KSksbi52YWx1ZT50fSx7bmFtZTpKY2UsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSksa2woImd0ZSIsZnVuY3Rpb24gYnp0KG4sW2VdKXtsZXQgdD1lO3JldHVy'@; put 'biJudW1lcmljIj09PW4ubWV0YS50eXBlJiYodD1wYXJzZUZsb2F0KHQpKSxuLnZhbHVlPj10fSx7bmFtZTpldWUsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSksa2woImx0IixmdW5jdGlvbiB3enQobixbZV0pe2xldCB0PWU7cmV0dXJuIm51bWVyaWMiPT09bi5tZXRhLnR5cGUm'@; put 'Jih0PXBhcnNlRmxvYXQodCkpLG4udmFsdWU8dH0se25hbWU6dHVlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLGtsKCJsdGUiLGZ1bmN0aW9uIEN6dChuLFtlXSl7bGV0IHQ9ZTtyZXR1cm4ibnVtZXJpYyI9PT1uLm1ldGEudHlwZSYmKHQ9TnVtYmVyLnBhcnNlRmxvYXQodCkp'@; put 'LG4udmFsdWU8PXR9LHtuYW1lOm51ZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBORz0iYmV0d2VlbiI7a2woTkcsZnVuY3Rpb24gU3p0KG4sW2UsdF0pe2xldCByPWUsaT10O2lmKCJudW1lcmljIj09PW4ubWV0YS50eXBlKXtjb25zdCBvPXBhcnNlRmxvYXQociks'@; put 'YT1wYXJzZUZsb2F0KGkpO3I9TWF0aC5taW4obyxhKSxpPU1hdGgubWF4KG8sYSl9ZWxzZSBpZigiZGF0ZSI9PT1uLm1ldGEudHlwZSl7Y29uc3Qgbz1zYyhuLnZhbHVlKSxhPXNjKHIpLGw9c2MoaSk7cmV0dXJuIG51bGwhPT1vJiZudWxsIT09YSYmbnVsbCE9PWwmJm8uZ2V0VGltZSgpPj1h'@; put 'LmdldFRpbWUoKSYmby5nZXRUaW1lKCk8PWwuZ2V0VGltZSgpfXJldHVybiBuLnZhbHVlPj1yJiZuLnZhbHVlPD1pfSx7bmFtZTpZTCxpbnB1dHNDb3VudDoyLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBZUGU9Im5vdF9iZXR3ZWVuIjtrbChZUGUsZnVuY3Rpb24gRXp0KG4sZSl7cmV0dXJu'@; put 'IWN4KE5HLGUpKG4pfSx7bmFtZTpydWUsaW5wdXRzQ291bnQ6MixzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgVTBlPSJiZWdpbnNfd2l0aCI7a2woVTBlLGZ1bmN0aW9uIE16dChuLFtlXSl7cmV0dXJuIHYxKFBsKG4udmFsdWUpLG4ubWV0YS5sb2NhbGUpLnN0YXJ0c1dpdGgoUGwoZSkpfSx7'@; put 'bmFtZTpxY2UsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgejBlPSJlbmRzX3dpdGgiO2tsKHowZSxmdW5jdGlvbiBUenQobixbZV0pe3JldHVybiB2MShQbChuLnZhbHVlKSxuLm1ldGEubG9jYWxlKS5lbmRzV2l0aChQbChlKSl9LHtuYW1lOktjZSxpbnB1dHNDb3Vu'@; put 'dDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBGRz0iY29udGFpbnMiO2tsKEZHLGZ1bmN0aW9uIHh6dChuLFtlXSl7cmV0dXJuIHYxKFBsKG4udmFsdWUpLG4ubWV0YS5sb2NhbGUpLmluZGV4T2YoUGwoZSkpPj0wfSx7bmFtZTpYY2UsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEw'@; put 'fSk7Y29uc3QgVzBlPSJub3RfY29udGFpbnMiO2tsKFcwZSxmdW5jdGlvbiBBenQobixlKXtyZXR1cm4hY3goRkcsZSkobil9LHtuYW1lOlFjZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBaUGU9ImRhdGVfYmVmb3JlIjtrbChaUGUsZnVuY3Rpb24ga3p0KG4sW2Vd'@; put 'KXtjb25zdCB0PXNjKG4udmFsdWUpLHI9c2MoZSk7cmV0dXJuIG51bGwhPT10JiZudWxsIT09ciYmdC5nZXRUaW1lKCk8ci5nZXRUaW1lKCl9LHtuYW1lOiRMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO2NvbnN0IEdQZT0iZGF0ZV9iZWZvcmVfb3JfZXF1YWwiO2tsKEdQZSxm'@; put 'dW5jdGlvbiBSenQobixbZV0pe2NvbnN0IHQ9c2Mobi52YWx1ZSkscj1zYyhlKTtyZXR1cm4gbnVsbCE9PXQmJm51bGwhPT1yJiZ0LmdldFRpbWUoKTw9ci5nZXRUaW1lKCl9LHtuYW1lOnFMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO2NvbnN0ICRQZT0iZGF0ZV9hZnRlciI7'@; put 'a2woJFBlLGZ1bmN0aW9uIEl6dChuLFtlXSl7Y29uc3QgdD1zYyhuLnZhbHVlKSxyPXNjKGUpO3JldHVybiBudWxsIT09dCYmbnVsbCE9PXImJnQuZ2V0VGltZSgpPnIuZ2V0VGltZSgpfSx7bmFtZTpaTCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBxUGU9ImRhdGVf'@; put 'YWZ0ZXJfb3JfZXF1YWwiO2tsKHFQZSxmdW5jdGlvbiBEenQobixbZV0pe2NvbnN0IHQ9c2Mobi52YWx1ZSkscj1zYyhlKTtyZXR1cm4gbnVsbCE9PXQmJm51bGwhPT1yJiZ0LmdldFRpbWUoKT49ci5nZXRUaW1lKCl9LHtuYW1lOkdMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0p'@; put 'O2NvbnN0IEtQZT0iZGF0ZV90b21vcnJvdyI7a2woS1BlLGZ1bmN0aW9uIEx6dChuKXtjb25zdCBlPXNjKG4udmFsdWUpO3JldHVybiBudWxsIT09ZSYmdlooZSxVZGUoMSkpfSx7bmFtZTpMWSxpbnB1dHNDb3VudDowfSk7Y29uc3QgWFBlPSJkYXRlX3RvZGF5IjtrbChYUGUsZnVuY3Rpb24g'@; put 'T3p0KG4pe2NvbnN0IGU9c2Mobi52YWx1ZSk7cmV0dXJuIG51bGwhPT1lJiZ2WihlLGpkZSgpKX0se25hbWU6RFksaW5wdXRzQ291bnQ6MH0pO2NvbnN0IFFQZT0iZGF0ZV95ZXN0ZXJkYXkiO2tsKFFQZSxmdW5jdGlvbiBOenQobil7Y29uc3QgZT1zYyhuLnZhbHVlKTtyZXR1cm4gbnVsbCE9'@; put 'PWUmJnZaKGUsVWRlKC0xKSl9LHtuYW1lOk9ZLGlucHV0c0NvdW50OjB9KTtjb25zdCBKUGU9ImludGxfZGF0ZV9iZWZvcmUiO2tsKEpQZSxmdW5jdGlvbiBGenQobixbZV0pe2NvbnN0IHQ9c2Mobi52YWx1ZSkscj1zYyhlKTtyZXR1cm4gbnVsbCE9PXQmJm51bGwhPT1yJiZ0PHJ9LHtuYW1l'@; put 'OiRMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMCxpbnB1dFR5cGU6ImRhdGUifSk7Y29uc3QgZUhlPSJpbnRsX2RhdGVfYmVmb3JlX29yX2VxdWFsIjtrbChlSGUsZnVuY3Rpb24gUHp0KG4sW2VdKXtjb25zdCB0PXNjKG4udmFsdWUpLHI9c2MoZSk7cmV0dXJuIG51bGwhPT10JiZu'@; put 'dWxsIT09ciYmdDw9cn0se25hbWU6cUwsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwLGlucHV0VHlwZToiZGF0ZSJ9KTtjb25zdCB0SGU9ImludGxfZGF0ZV9hZnRlciI7a2wodEhlLGZ1bmN0aW9uIEh6dChuLFtlXSl7Y29uc3QgdD1zYyhuLnZhbHVlKSxyPXNjKGUpO3JldHVybiBu'@; put 'dWxsIT09dCYmbnVsbCE9PXImJnQ+cn0se25hbWU6WkwsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwLGlucHV0VHlwZToiZGF0ZSJ9KTtjb25zdCBuSGU9ImludGxfZGF0ZV9hZnRlcl9vcl9lcXVhbCI7a2wobkhlLGZ1bmN0aW9uIFZ6dChuLFtlXSl7Y29uc3QgdD1zYyhuLnZhbHVl'@; put 'KSxyPXNjKGUpO3JldHVybiBudWxsIT09dCYmbnVsbCE9PXImJnQ+PXJ9LHtuYW1lOkdMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMCxpbnB1dFR5cGU6ImRhdGUifSk7Y29uc3QgckhlPSJpbnRsX2RhdGVfYmV0d2VlbiI7a2wockhlLGZ1bmN0aW9uIEJ6dChuLFtlLHRdKXtjb25z'@; put 'dCByPXNjKG4udmFsdWUpLGk9c2MoZSksbz1zYyh0KTtyZXR1cm4gbnVsbCE9PXImJm51bGwhPT1pJiZudWxsIT09byYmcj49aSYmcjw9b30se25hbWU6WUwsaW5wdXRzQ291bnQ6MixzaG93T3BlcmF0b3JzOiEwLGlucHV0VHlwZToiZGF0ZSJ9KTtjb25zdCBpSGU9ImludGxfZGF0ZV90b21v'@; put 'cnJvdyI7a2woaUhlLGZ1bmN0aW9uIGp6dChuKXtjb25zdCBlPXNjKG4udmFsdWUpO2lmKG51bGw9PT1lKXJldHVybiExO2NvbnN0IHQ9bmV3IERhdGU7cmV0dXJuIHQuc2V0RGF0ZSh0LmdldERhdGUoKSsxKSxlLmdldEZ1bGxZZWFyKCk9PT10LmdldEZ1bGxZZWFyKCkmJmUuZ2V0TW9udGgo'@; put 'KT09PXQuZ2V0TW9udGgoKSYmZS5nZXREYXRlKCk9PT10LmdldERhdGUoKX0se25hbWU6TFksaW5wdXRzQ291bnQ6MCxpbnB1dFR5cGU6ImRhdGUifSk7Y29uc3Qgb0hlPSJpbnRsX2RhdGVfdG9kYXkiO2tsKG9IZSxmdW5jdGlvbiBVenQobil7Y29uc3QgZT1zYyhuLnZhbHVlKTtpZihudWxs'@; put 'PT09ZSlyZXR1cm4hMTtjb25zdCB0PW5ldyBEYXRlO3JldHVybiBlLmdldEZ1bGxZZWFyKCk9PT10LmdldEZ1bGxZZWFyKCkmJmUuZ2V0TW9udGgoKT09PXQuZ2V0TW9udGgoKSYmZS5nZXREYXRlKCk9PT10LmdldERhdGUoKX0se25hbWU6RFksaW5wdXRzQ291bnQ6MCxpbnB1dFR5cGU6ImRh'@; put 'dGUifSk7Y29uc3QgYUhlPSJpbnRsX2RhdGVfeWVzdGVyZGF5IjtrbChhSGUsZnVuY3Rpb24genp0KG4pe2NvbnN0IGU9c2Mobi52YWx1ZSk7aWYobnVsbD09PWUpcmV0dXJuITE7Y29uc3QgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXREYXRlKHQuZ2V0RGF0ZSgpLTEpLGUuZ2V0RnVsbFllYXIo'@; put 'KT09PXQuZ2V0RnVsbFllYXIoKSYmZS5nZXRNb250aCgpPT09dC5nZXRNb250aCgpJiZlLmdldERhdGUoKT09PXQuZ2V0RGF0ZSgpfSx7bmFtZTpPWSxpbnB1dHNDb3VudDowLGlucHV0VHlwZToiZGF0ZSJ9KTtjb25zdCBzSGU9ImludGxfdGltZV9iZWZvcmUiO2tsKHNIZSxmdW5jdGlvbiBX'@; put 'enQobixbZV0pe2NvbnN0IHQ9emYobi52YWx1ZSkscj16ZihlKTtyZXR1cm4gbnVsbCE9PXQmJm51bGwhPT1yJiZ0PHJ9LHtuYW1lOiRMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMCxpbnB1dFR5cGU6InRpbWUifSk7Y29uc3QgbEhlPSJpbnRsX3RpbWVfYmVmb3JlX29yX2VxdWFs'@; put 'IjtrbChsSGUsZnVuY3Rpb24gWXp0KG4sW2VdKXtjb25zdCB0PXpmKG4udmFsdWUpLHI9emYoZSk7cmV0dXJuIG51bGwhPT10JiZudWxsIT09ciYmdDw9cn0se25hbWU6cUwsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwLGlucHV0VHlwZToidGltZSJ9KTtjb25zdCBjSGU9ImludGxf'@; put 'dGltZV9hZnRlciI7a2woY0hlLGZ1bmN0aW9uIFp6dChuLFtlXSl7Y29uc3QgdD16ZihuLnZhbHVlKSxyPXpmKGUpO3JldHVybiBudWxsIT09dCYmbnVsbCE9PXImJnQ+cn0se25hbWU6WkwsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwLGlucHV0VHlwZToidGltZSJ9KTtjb25zdCB1'@; put 'SGU9ImludGxfdGltZV9hZnRlcl9vcl9lcXVhbCI7a2wodUhlLGZ1bmN0aW9uIEd6dChuLFtlXSl7Y29uc3QgdD16ZihuLnZhbHVlKSxyPXpmKGUpO3JldHVybiBudWxsIT09dCYmbnVsbCE9PXImJnQ+PXJ9LHtuYW1lOkdMLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMCxpbnB1dFR5'@; put 'cGU6InRpbWUifSk7Y29uc3QgZEhlPSJpbnRsX3RpbWVfYmV0d2VlbiI7ZnVuY3Rpb24gUXp0KG4sZSl7bGV0IHQ9bjtyZXR1cm4iIj09PXQmJih0PWAoJHtlfSlgKSx0fWZ1bmN0aW9uIExOKG4pe2NvbnN0IGU9bmV3IFNldChuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFzKHQp'@; put 'fX1mdW5jdGlvbiBZMGUobil7cmV0dXJuIG4/PyIifWZ1bmN0aW9uIFowZShuLGUpe3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQobikpLm1hcChyPT5ZMGUocikpLnNvcnQoZT8/KChyLGkpPT4ibnVtYmVyIj09dHlwZW9mIHImJiJudW1iZXIiPT10eXBlb2YgaT9yLWk6cj09PWk/MDpyPmk/'@; put 'MTotMSkpfWZ1bmN0aW9uIGhIZShuLGUsdCxyKXtjb25zdCBpPVtdLG89bj09PWU7bGV0IGE7cmV0dXJuIG98fChhPUxOKGUpKSxuLmZvckVhY2gobD0+e2xldCB1PSExOyhvfHxhKGwpKSYmKHU9ITApO2NvbnN0IGc9e2NoZWNrZWQ6dSx2YWx1ZTpsLHZpc3VhbFZhbHVlOlF6dChsLHQpfTty'@; put 'JiZyKGcpLGkucHVzaChnKX0pLGl9a2woZEhlLGZ1bmN0aW9uICR6dChuLFtlLHRdKXtjb25zdCByPXpmKG4udmFsdWUpLGk9emYoZSksbz16Zih0KTtyZXR1cm4gbnVsbCE9PXImJm51bGwhPT1pJiZudWxsIT09byYmcj49aSYmcjw9b30se25hbWU6WUwsaW5wdXRzQ291bnQ6MixzaG93T3Bl'@; put 'cmF0b3JzOiEwLGlucHV0VHlwZToidGltZSJ9KSxrbCgiZmFsc2UiLGZ1bmN0aW9uIEt6dCgpe3JldHVybiExfSx7bmFtZToiRmFsc2UifSksT3hlKCk7Y29uc3QgQ189ImJ5X3ZhbHVlIjtrbChDXyxmdW5jdGlvbiBKenQobixbZV0pe3JldHVybiBlKG4udmFsdWUpfSx7bmFtZToiQnkgdmFs'@; put 'dWUiLGlucHV0c0NvdW50OjAsaW5wdXRWYWx1ZXNEZWNvcmF0b3I6KFtuXSk9PltMTihuKV0sc2hvd09wZXJhdG9yczohMX0pLGtsKCJ0cnVlIixmdW5jdGlvbiB0V3QoKXtyZXR1cm4hMH0se25hbWU6IlRydWUifSk7Y29uc3QgT049e307ZnVuY3Rpb24gcld0KG4pe3JldHVybiBPTltuXS5u'@; put 'YW1lfWZ1bmN0aW9uIEcwZShuLGUsdCl7T05bbl09e25hbWU6ZSxmdW5jOnR9fWNvbnN0IEQ0PSJjb25qdW5jdGlvbiI7RzBlKEQ0LGF1ZSxmdW5jdGlvbiBvV3QobixlKXtyZXR1cm4gbi5ldmVyeSh0PT50LmZ1bmMoZSkpfSk7Y29uc3QgUEc9ImRpc2p1bmN0aW9uIjtHMGUoUEcsTlksZnVu'@; put 'Y3Rpb24gc1d0KG4sZSl7cmV0dXJuIG4uc29tZSh0PT50LmZ1bmMoZSkpfSk7Y29uc3QgJDBlPSJkaXNqdW5jdGlvbldpdGhFeHRyYUNvbmRpdGlvbiI7RzBlKCQwZSxOWSxmdW5jdGlvbiBjV3QobixlKXtuLmxlbmd0aDwzJiZKcigiT3BlcmF0aW9uIGRvZXNuJ3Qgd29yayBvbiBsZXNzIHRo'@; put 'ZW4gdGhyZWUgY29uZGl0aW9ucy4iKTtjb25zdCB0PW5bbi5sZW5ndGgtMV07cmV0dXJuIG4uc2xpY2UoMCxuLmxlbmd0aC0xKS5zb21lKGk9PiEhaS5mdW5jKGUpKSYmISF0LmZ1bmMoZSl9KTtjb25zdCB1V3Q9Im51bWVyaWMiLGZIZT0idGV4dCIsZFd0PSJkYXRlIixoV3Q9ImludGwtZGF0'@; put 'ZSIsZld0PSJpbnRsLXRpbWUiLHBIZT17W3VXdF06W2JoLHZzLGFDLHV4LHZzLHNDLGR4LHZzLCJndCIsImd0ZSIsImx0IiwibHRlIixORyxZUGVdLFtmSGVdOltiaCx2cyxhQyx1eCx2cyxzQyxkeCx2cyxVMGUsejBlLHZzLEZHLFcwZV0sW2RXdF06W2JoLHZzLGFDLHV4LHZzLHNDLGR4LHZz'@; put 'LFpQZSxHUGUsJFBlLHFQZSxORyx2cyxLUGUsWFBlLFFQZV0sW2hXdF06W2JoLHZzLGFDLHV4LHZzLHNDLGR4LHZzLEpQZSxlSGUsdEhlLG5IZSxySGUsdnMsaUhlLG9IZSxhSGVdLFtmV3RdOltiaCx2cyxhQyx1eCx2cyxzQyxkeCx2cyxVMGUsejBlLHZzLEZHLFcwZSx2cyxzSGUsbEhlLGNI'@; put 'ZSx1SGUsZEhlXX0sSzBlPSJidWlsZGluZyIsZ0hlPVsiY2xpY2siLCJpbnB1dCIsImtleWRvd24iLCJrZXlwcmVzcyIsImtleXVwIiwiZm9jdXMiLCJibHVyIiwiY2hhbmdlIl07Y2xhc3MgaWd7c3RhdGljIGdldCBERUZBVUxUUygpe3JldHVybiBxNSh7Y2xhc3NOYW1lOiIiLHZhbHVlOiIi'@; put 'LHRhZ05hbWU6ImRpdiIsY2hpbGRyZW46W10sd3JhcEl0OiEwfSl9c2V0VmFsdWUoZSl7dGhpcy5vcHRpb25zLnZhbHVlPWUsdGhpcy51cGRhdGUoKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLm9wdGlvbnMudmFsdWV9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5idWlsZFN0YXRlPT09SzBl'@; put 'P3RoaXMuX2VsZW1lbnQ6ImJ1aWx0Ij09PXRoaXMuYnVpbGRTdGF0ZT8odGhpcy51cGRhdGUoKSx0aGlzLl9lbGVtZW50KToodGhpcy5idWlsZFN0YXRlPUswZSx0aGlzLmJ1aWxkKCksdGhpcy5idWlsZFN0YXRlPSJidWlsdCIsdGhpcy5fZWxlbWVudCl9aXNCdWlsdCgpe3JldHVybiJidWls'@; put 'dCI9PT10aGlzLmJ1aWxkU3RhdGV9dHJhbnNsYXRlSWZQb3NzaWJsZShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJmUuc3RhcnRzV2l0aChqZik/dGhpcy5ob3Q/LmdldFRyYW5zbGF0ZWRQaHJhc2UoZSk/P2U6ZX1idWlsZCgpe2lmKCF0aGlzLl9lbGVtZW50fHwhdGhpcy5ob3QpcmV0'@; put 'dXJuO2NvbnN0IGU9dGhpcy5fZWxlbWVudCx7ZXZlbnRNYW5hZ2VyOnR9PXRoaXMscj0oaSxvKT0+e3Q/LmFkZEV2ZW50TGlzdGVuZXIoaSxvLGE9PnRoaXMucnVuTG9jYWxIb29rcyhvLGEsdGhpcykpfTtpZih0aGlzLmJ1aWxkU3RhdGV8fCh0aGlzLmJ1aWxkU3RhdGU9SzBlKSxlLmRhdGFz'@; put 'ZXQuaG90SW5wdXQ9InRydWUiLHZvaWQgMCE9PXRoaXMub3B0aW9ucy50YWJJbmRleCYmZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixTdHJpbmcodGhpcy5vcHRpb25zLnRhYkluZGV4KSksdm9pZCAwIT09dGhpcy5vcHRpb25zLnJvbGUmJmUuc2V0QXR0cmlidXRlKCJyb2xlIix0aGlzLm9w'@; put 'dGlvbnMucm9sZSksdGhpcy5vcHRpb25zLmNsYXNzTmFtZSYmWXIoZSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSx0aGlzLm9wdGlvbnMuY2hpbGRyZW4/Lmxlbmd0aClYbih0aGlzLm9wdGlvbnMuY2hpbGRyZW4saT0+e2NvbnN0IG89aS5lbGVtZW50O28mJmUuYXBwZW5kQ2hpbGQobyl9KTtl'@; put 'bHNlIGlmKHRoaXMub3B0aW9ucy53cmFwSXQpe2NvbnN0IGk9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5vcHRpb25zLnRhZ05hbWU/PyJkaXYiKTtpLmRhdGFzZXQuaG90SW5wdXQ9InRydWUiLGFjKHRoaXMub3B0aW9ucywobyxhKT0+e3ZvaWQgMCE9PWlbYV0m'@; put 'JiJjbGFzc05hbWUiIT09YSYmInRhZ05hbWUiIT09YSYmImNoaWxkcmVuIiE9PWEmJihpW2FdPXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZShvKSl9KSxlLmFwcGVuZENoaWxkKGkpLFhuKGdIZSxvPT5yKGksbykpfWVsc2UgWG4oZ0hlLGk9PnIoZSxpKSl9dXBkYXRlKCl7fXJlc2V0KCl7dGhp'@; put 'cy5vcHRpb25zLnZhbHVlPSIiLHRoaXMudXBkYXRlKCl9c2hvdygpe2NvbnN0IGU9dGhpcy5lbGVtZW50O2UmJihlLnN0eWxlLmRpc3BsYXk9IiIpfWhpZGUoKXtjb25zdCBlPXRoaXMuZWxlbWVudDtlJiYoZS5zdHlsZS5kaXNwbGF5PSJub25lIil9Zm9jdXMoKXt9ZGVzdHJveSgpe3RoaXMu'@; put 'ZXZlbnRNYW5hZ2VyPy5kZXN0cm95KCksdGhpcy5ldmVudE1hbmFnZXI9bnVsbCx0aGlzLmhvdD1udWxsLHRoaXMuX2VsZW1lbnQ/LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50PW51bGx9Y29uc3Ry'@; put 'dWN0b3IoZSx0KXt0aGlzLmV2ZW50TWFuYWdlcj1uZXcgVzIodGhpcyksdGhpcy5ob3Q9ZSx0aGlzLm9wdGlvbnM9WWQoaWcuREVGQVVMVFMsdCksdGhpcy5fZWxlbWVudD1lLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMub3B0aW9ucy53cmFwSXQ/ImRpdiI6dGhpcy5vcHRpb25z'@; put 'LnRhZ05hbWU/PyJkaXYiKX19ZnVuY3Rpb24gbUhlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB2SGUobixlLHQpe2lmKCFlLmhhcyhu'@; put 'KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gTk4obixlKXtyZXR1cm4gZnVuY3Rpb24gZ1d0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1'@; put 'ZX0obix2SGUobixlLCJnZXQiKSl9ZnVuY3Rpb24gX0hlKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gbVd0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2'@; put 'YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix2SGUobixlLCJzZXQiKSx0KSx0fVlsKGlnLF9oKTt2YXIgU189bmV3IFdlYWtNYXAseUhlPW5ldyBXZWFrU2V0O2NsYXNzIEVfIGV4dGVuZHMgaWd7c3RhdGljIGdldCBERUZBVUxUUygpe3JldHVybiBxNSh7cGxhY2Vob2xkZXI6IiIsdHlwZToi'@; put 'dGV4dCIsdGFnTmFtZToiaW5wdXQiLHRhYkluZGV4Oi0xfSl9cmVnaXN0ZXJIb29rcygpe3RoaXMuYWRkTG9jYWxIb29rKCJrZXl1cCIsZT0+ZnVuY3Rpb24gX1d0KG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxk'@; put 'IG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fSh0aGlzLHlIZSxiV3QpLmNhbGwodGhpcyxlKSl9YnVpbGQoKXtpZihzdXBlci5idWlsZCgpLCF0aGlzLl9lbGVtZW50fHwhdGhpcy5ob3QpcmV0dXJuO2NvbnN0IGU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp'@; put 'O19IZSh0aGlzLFNfLHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCksWXIodGhpcy5fZWxlbWVudCwiaHRVSUlucHV0IiksWXIoZSwiaHRVSUlucHV0SWNvbiIpLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZSksdGhpcy51cGRhdGUoKX11cGRhdGUoKXt0aGlzLmlzQnVpbHQoKSYmTk4odGhp'@; put 'cyxTXykmJihOTih0aGlzLFNfKS50eXBlPVN0cmluZyh0aGlzLm9wdGlvbnMudHlwZT8/InRleHQiKSxOTih0aGlzLFNfKS5wbGFjZWhvbGRlcj1TdHJpbmcodGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcik/PyIiKSxOTih0aGlzLFNfKS52YWx1ZT1T'@; put 'dHJpbmcodGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy52YWx1ZSk/PyIiKSl9Zm9jdXMoKXt0aGlzLmlzQnVpbHQoKSYmTk4odGhpcyxTXyk/LmZvY3VzKCl9Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLFlkKEVfLkRFRkFVTFRTLHQpKSxmdW5jdGlvbiB5V3QobixlKXtt'@; put 'SGUobixlKSxlLmFkZChuKX0odGhpcyx5SGUpLGZ1bmN0aW9uIHZXdChuLGUsdCl7bUhlKG4sZSksZS5zZXQobix0KX0odGhpcyxTXyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksX0hlKHRoaXMsU18sbnVsbCksdGhpcy5yZWdpc3Rlckhvb2tzKCl9fWZ1bmN0aW9uIGJXdChuKXt0aGlz'@; put 'Lm9wdGlvbnMudmFsdWU9QWEobikudmFsdWV9ZnVuY3Rpb24gYkhlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB3SGUobixlLHQpe2lm'@; put 'KCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gT2QobixlKXtyZXR1cm4gZnVuY3Rpb24gd1d0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwo'@; put 'bik6ZS52YWx1ZX0obix3SGUobixlLCJnZXQiKSl9ZnVuY3Rpb24gRk4obixlLHQpe2JIZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gTDQobixlLHQpe3JldHVybiBmdW5jdGlvbiBDV3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93'@; put 'IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHdIZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gWDBlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBw'@; put 'cml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIFEwZShuLGUpe2JIZShuLGUpLGUuYWRkKG4pfXZhciBDMT1uZXcgV2Vha01hcCxQTj1uZXcgV2Vha01hcCxITj1uZXcgV2Vha01hcCxWTj1uZXcgV2Vha01hcCxCTj1uZXcgV2Vha01hcCxDSGU9bmV3IFdl'@; put 'YWtTZXQsU0hlPW5ldyBXZWFrU2V0LEVIZT1uZXcgV2Vha1NldDtjbGFzcyBqTiBleHRlbmRzIGlne3N0YXRpYyBnZXQgREVGQVVMVFMoKXtyZXR1cm4gcTUoe2NsYXNzTmFtZToiaHRVSVNlbGVjdCIsd3JhcEl0OiExLHRhYkluZGV4Oi0xfSl9Z2V0TWVudSgpe3JldHVybiBPZCh0aGlzLEMx'@; put 'KX1yZWdpc3Rlckhvb2tzKCl7dGhpcy5hZGRMb2NhbEhvb2soImNsaWNrIiwoKT0+WDBlKHRoaXMsRUhlLE1XdCkuY2FsbCh0aGlzKSl9c2V0SXRlbXMoZSl7TDQodGhpcyxQTix0aGlzLnRyYW5zbGF0ZU5hbWVzKGUpKSxPZCh0aGlzLEMxKSYmT2QodGhpcyxDMSkuc2V0TWVudUl0ZW1zKE9k'@; put 'KHRoaXMsUE4pKX10cmFuc2xhdGVOYW1lcyhlKXtyZXR1cm4gWG4oZSx0PT57dC5uYW1lPXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0Lm5hbWUpfSksZX1idWlsZCgpe2lmKHN1cGVyLmJ1aWxkKCksIXRoaXMuaG90fHwhdGhpcy5fZWxlbWVudClyZXR1cm47Y29uc3QgZT10aGlzLmhvdCx0'@; put 'PXRoaXMuX2VsZW1lbnQ7TDQodGhpcyxDMSxuZXcgR1QoZSx7Y2xhc3NOYW1lOiJodFNlbGVjdFVJIGh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IixrZWVwSW5WaWV3cG9ydDohMSxzdGFuZGFsb25lOiEwLGNvbnRhaW5lcjp0aGlzLm9wdGlvbnMubWVudUNvbnRhaW5lcn0pKSxPZCh0aGlzLEMx'@; put 'KS5zZXRNZW51SXRlbXMoT2QodGhpcyxQTikpO2NvbnN0IHI9bmV3IGlnKGUse2NsYXNzTmFtZToiaHRVSVNlbGVjdENhcHRpb24ifSksaT1uZXcgaWcoZSx7Y2xhc3NOYW1lOiJodFVJU2VsZWN0RHJvcGRvd24ifSk7aWYoTDQodGhpcyxITixyKSxMNCh0aGlzLFZOLHIuZWxlbWVudCksTDQo'@; put 'dGhpcyxCTixpKSxlLmdldFNldHRpbmdzKCkuYXJpYVRhZ3Mpe2NvbnN0IG89aS5lbGVtZW50O28mJktvKG8sW1siYXJpYS1oaWRkZW4iLCJ0cnVlIl1dKSxLbyh0LFtbInJvbGUiLCJsaXN0Ym94Il1dKX1YbihbcixpXSxvPT57Y29uc3QgYT1vLmVsZW1lbnQ7YSYmdC5hcHBlbmRDaGlsZChh'@; put 'KX0pLE9kKHRoaXMsQzEpLmFkZExvY2FsSG9vaygic2VsZWN0IixvPT5YMGUodGhpcyxDSGUsU1d0KS5jYWxsKHRoaXMsbykpLE9kKHRoaXMsQzEpLmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsKCk9PlgwZSh0aGlzLFNIZSxFV3QpLmNhbGwodGhpcykpLHRoaXMudXBkYXRlKCl9dXBkYXRl'@; put 'KCl7aWYoIXRoaXMuaXNCdWlsdCgpKXJldHVybjtsZXQgZTtlPXRoaXMub3B0aW9ucy52YWx1ZT90aGlzLm9wdGlvbnMudmFsdWUubmFtZTpPZCh0aGlzLEMxKT8uaG90Py5nZXRUcmFuc2xhdGVkUGhyYXNlKElZKSxPZCh0aGlzLFZOKSYmKE9kKHRoaXMsVk4pLnRleHRDb250ZW50PWU/P251'@; put 'bGwpLHN1cGVyLnVwZGF0ZSgpfW9wZW5PcHRpb25zKCl7Y29uc3QgZT10aGlzLmVsZW1lbnQ7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtPZCh0aGlzLEMxKSYmKE9kKHRoaXMsQzEpLm9wZW4oKSxPZCh0aGlzLEMxKS5zZXRQb3NpdGlvbih7bGVmdDp0'@; put 'aGlzLmhvdD8uaXNMdHIoKT90LmxlZnQtNTp0LmxlZnQtMzEsdG9wOnQudG9wLTEsd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9KSxPZCh0aGlzLEMxKT8uZ2V0TmF2aWdhdG9yKCk/LnRvRmlyc3RJdGVtKCksT2QodGhpcyxDMSk/LmdldEtleWJvYXJkU2hvcnRjdXRzQ3RybCgpPy5h'@; put 'ZGRDdXN0b21TaG9ydGN1dHMoW3trZXlzOltbIlRhYiJdLFsiU2hpZnQiLCJUYWIiXV0sY2FsbGJhY2s6cj0+e3RoaXMuY2xvc2VPcHRpb25zKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJ0YWJLZXlkb3duIixyKX19LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkEiXV0sY2FsbGJhY2s6KCk9PiEx'@; put 'fV0pKX1jbG9zZU9wdGlvbnMoKXtPZCh0aGlzLEMxKSYmT2QodGhpcyxDMSkuY2xvc2UoKX1mb2N1cygpe3RoaXMuaXNCdWlsdCgpJiZ0aGlzLmVsZW1lbnQ/LmZvY3VzKCl9ZGVzdHJveSgpe09kKHRoaXMsQzEpJiYoT2QodGhpcyxDMSkuZGVzdHJveSgpLEw0KHRoaXMsQzEsbnVsbCkpLE9k'@; put 'KHRoaXMsSE4pJiZPZCh0aGlzLEhOKS5kZXN0cm95KCksT2QodGhpcyxCTikmJk9kKHRoaXMsQk4pLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLFlkKGpOLkRFRkFVTFRTLHQpKSxRMGUodGhpcyxDSGUpLFEwZSh0aGlzLFNIZSksUTBlKHRoaXMs'@; put 'RUhlKSxGTih0aGlzLEMxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxGTih0aGlzLFBOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxGTih0aGlzLEhOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxGTih0aGlzLFZOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxGTih0'@; put 'aGlzLEJOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxMNCh0aGlzLEMxLG51bGwpLEw0KHRoaXMsUE4sW10pLEw0KHRoaXMsSE4sbnVsbCksTDQodGhpcyxWTixudWxsKSxMNCh0aGlzLEJOLG51bGwpLHRoaXMucmVnaXN0ZXJIb29rcygpfX1mdW5jdGlvbiBTV3Qobil7bi5uYW1lIT09'@; put 'dnMmJih0aGlzLm9wdGlvbnMudmFsdWU9bix0aGlzLnVwZGF0ZSgpLHRoaXMucnVuTG9jYWxIb29rcygic2VsZWN0Iix0aGlzLm9wdGlvbnMudmFsdWUpKX1mdW5jdGlvbiBFV3QoKXt0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xvc2UiKX1mdW5jdGlvbiBNV3QoKXt0aGlzLm9wZW5PcHRp'@; put 'b25zKCl9ZnVuY3Rpb24gTUhlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIFRIZShuLGUpeyhmdW5jdGlvbiBUV3QobixlKXtpZihlLmhhcyhu'@; put 'KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLmFkZChuKX12YXIgeEhlPW5ldyBXZWFrU2V0LEFIZT1uZXcgV2Vha1NldDtjbGFzcyBKMGUgZXh0ZW5kcyBJTntyZWdp'@; put 'c3Rlckhvb2tzKCl7dGhpcy5nZXRTZWxlY3RFbGVtZW50KCkuYWRkTG9jYWxIb29rKCJzZWxlY3QiLGU9Pk1IZSh0aGlzLHhIZSx4V3QpLmNhbGwodGhpcyxlKSkuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIiwoKT0+dGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckNsb3NlIikpLmFkZExvY2Fs'@; put 'SG9vaygidGFiS2V5ZG93biIsZT0+dGhpcy5ydW5Mb2NhbEhvb2tzKCJzZWxlY3RUYWJLZXlkb3duIixlKSksWG4odGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksZT0+e2UuYWRkTG9jYWxIb29rKCJrZXlkb3duIix0PT5NSGUodGhpcyxBSGUsQVd0KS5jYWxsKHRoaXMsdCkpfSl9c2V0U3RhdGUo'@; put 'ZSl7aWYodGhpcy5yZXNldCgpLCFlKXJldHVybjtjb25zdCB0PXE1KGUuY29tbWFuZCk7InN0cmluZyI9PXR5cGVvZiB0Lm5hbWUmJnQubmFtZS5zdGFydHNXaXRoKGZkKSYmKHQubmFtZT10aGlzLmhvdD8uZ2V0VHJhbnNsYXRlZFBocmFzZSh0Lm5hbWUpPz90Lm5hbWUpLHRoaXMuZ2V0U2Vs'@; put 'ZWN0RWxlbWVudCgpLnNldFZhbHVlKHQpLFhuKGUuYXJncywocixpKT0+e2lmKGk+KHQuaW5wdXRzQ291bnQ/PzApLTEpcmV0dXJuITE7Y29uc3Qgbz10aGlzLmdldElucHV0RWxlbWVudChpKTtvLnNldFZhbHVlKHIpLG9bKHQuaW5wdXRzQ291bnQ/PzApPmk/InNob3ciOiJoaWRlIl0oKSxp'@; put 'fHx0aGlzLmhvdD8uX3JlZ2lzdGVyVGltZW91dCgoKT0+by5mb2N1cygpLDEwKX0pfWdldFN0YXRlKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5nZXRWYWx1ZSgpfHxvQyhiaCksdD1bXTtyZXR1cm4gWG4odGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksKHIsaSk9PnsoZS5pbnB1'@; put 'dHNDb3VudD8/MCk+aSYmdC5wdXNoKHIuZ2V0VmFsdWUoKSl9KSx7Y29tbWFuZDplLGFyZ3M6dH19dXBkYXRlU3RhdGUoZSx0KXtjb25zdCByPW9DKGU/ZS5uYW1lOmJoKTt0aGlzLnN0YXRlPy5zZXRWYWx1ZUF0SW5kZXgodCx7Y29tbWFuZDpyLGFyZ3M6ZT9lLmFyZ3M6W119KSxlfHxYbih0'@; put 'aGlzLmdldElucHV0RWxlbWVudHMoKSxpPT5pLnNldFZhbHVlKG51bGwpKX1nZXRTZWxlY3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmluZChlPT5lIGluc3RhbmNlb2Ygak4pfWdldElucHV0RWxlbWVudChlPTApe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudHMoKVtlXX1n'@; put 'ZXRJbnB1dEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGU9PmUgaW5zdGFuY2VvZiBFXyl9Z2V0TWVudUl0ZW1EZXNjcmlwdG9yKCl7cmV0dXJue2tleTp0aGlzLmlkLG5hbWU6dGhpcy5uYW1lLGlzQ29tbWFuZDohMSxkaXNhYmxlU2VsZWN0aW9uOiEwLGhpZGRlbjoo'@; put 'KT0+dGhpcy5pc0hpZGRlbigpLHJlbmRlcmVyOihlLHQscixpLG8sYSk9Pntocyh0LnBhcmVudE5vZGUpJiYoWXIodC5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51Q29uZGl0aW9uIiksdGhpcy5hZGRTZXBhcmF0b3ImJllyKHQucGFyZW50Tm9kZSwiYm9yZGVyIikpO2NvbnN0IGw9dGhpcy5o'@; put 'b3Q/LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKT8/dC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBZcihsLCJodEZpbHRlcnNNZW51TGFiZWwiKSxsLnRleHRDb250ZW50PWEsdC5hcHBlbmRDaGlsZChsKSx0LnBhcmVudEVsZW1lbnQ/Lmhhc0F0'@; put 'dHJpYnV0ZSgiZ2hvc3QtdGFibGUiKXx8WG4odGhpcy5lbGVtZW50cyx1PT57Y29uc3QgZz11LmVsZW1lbnQ7ZyYmdC5hcHBlbmRDaGlsZChnKX0pLHR9fX1yZXNldCgpe2NvbnN0IGU9dGhpcy5ob3Q/LmdldFBsdWdpbigiZmlsdGVycyIpLmdldFNlbGVjdGVkQ29sdW1uKCk/P251bGw7bGV0'@; put 'IHQ9W29DKGJoKV07aWYobnVsbCE9PWUpe2NvbnN0e3Zpc3VhbEluZGV4OnJ9PWU7dD1mdW5jdGlvbiBwV3Qobil7Y29uc3QgZT1bXTtsZXQgdD1uO3JldHVybiBwSGVbdF18fCh0PSJ0ZXh0IiksWG4ocEhlW3RdLHI9PntsZXQgaTtpPXI9PT12cz97bmFtZTp2c306ey4uLm9DKHIpfSxlLnB1'@; put 'c2goaSl9KSxlfSh0aGlzLmhvdD8uZ2V0RGF0YVR5cGUoMCxyLHRoaXMuaG90LmNvdW50Um93cygpLHIpPz8idGV4dCIpfVhuKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLHI9PnIuaGlkZSgpKSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5zZXRJdGVtcyh0KSxzdXBlci5yZXNldCgpLHRoaXMu'@; put 'Z2V0U2VsZWN0RWxlbWVudCgpLnNldFZhbHVlKHRbMF0pfWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx7aWQ6dC5pZCxzdGF0ZWxlc3M6ITF9KSxUSGUodGhpcyx4SGUpLFRIZSh0aGlzLEFIZSksdGhpcy5uYW1lPSIiLHRoaXMuYWRkU2VwYXJhdG9yPSExLHRoaXMubmFtZT10Lm5hbWUsdGhp'@; put 'cy5hZGRTZXBhcmF0b3I9dC5hZGRTZXBhcmF0b3IsdGhpcy5lbGVtZW50cy5wdXNoKG5ldyBqTihlLHttZW51Q29udGFpbmVyOnQubWVudUNvbnRhaW5lcn0pKSx0aGlzLmVsZW1lbnRzLnB1c2gobmV3IEVfKGUse3BsYWNlaG9sZGVyOmh1ZX0pKSx0aGlzLmVsZW1lbnRzLnB1c2gobmV3IEVf'@; put 'KGUse3BsYWNlaG9sZGVyOmZ1ZX0pKSx0aGlzLnJlZ2lzdGVySG9va3MoKX19ZnVuY3Rpb24geFd0KG4pe1huKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLChlLHQpPT57ZVsobi5pbnB1dHNDb3VudD8/MCk+dD8ic2hvdyI6ImhpZGUiXSgpLDA9PT10JiZ0aGlzLmhvdD8uX3JlZ2lzdGVyVGlt'@; put 'ZW91dCgoKT0+ZS5mb2N1cygpLDEwKX0pLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixuKX1mdW5jdGlvbiBBV3Qobil7aHcobi5rZXlDb2RlLCJFU0NBUEUiKSYmKHRoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIiksRjMobikpfWZ1bmN0aW9uIGtIZShuLGUsdCl7aWYoIWUuaGFzKG4p'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBNXyhuLGUpe3JldHVybiBmdW5jdGlvbiBSV3QobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVl'@; put 'fShuLGtIZShuLGUsImdldCIpKX1mdW5jdGlvbiBSSGUobixlLHQpeyhmdW5jdGlvbiBrV3QobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxl'@; put 'LnNldChuLHQpfWZ1bmN0aW9uIEhHKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gSVd0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7'@; put 'ZS52YWx1ZT10fX0obixrSGUobixlLCJzZXQiKSx0KSx0fXZhciBqNz1uZXcgV2Vha01hcCxVTj1uZXcgV2Vha01hcDtjbGFzcyBWRyBleHRlbmRzIGlne3N0YXRpYyBnZXQgREVGQVVMVFMoKXtyZXR1cm4gcTUoe3R5cGU6InJhZGlvIix0YWdOYW1lOiJpbnB1dCIsY2xhc3NOYW1lOiJodFVJ'@; put 'UmFkaW8iLGxhYmVsOnt9fSl9YnVpbGQoKXtpZihzdXBlci5idWlsZCgpLCF0aGlzLmhvdHx8IXRoaXMuX2VsZW1lbnQpcmV0dXJuO2NvbnN0IGU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIiksdD10aGlzLm9wdGlvbnMubGFiZWw7ZS50ZXh0Q29udGVudD1T'@; put 'dHJpbmcodGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHQudGV4dENvbnRlbnQpPz8iIiksZS5odG1sRm9yPVN0cmluZyh0aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodC5odG1sRm9yKT8/IiIpLEhHKHRoaXMsVU4sZSksSEcodGhpcyxqNyx0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpLE1fKHRo'@; put 'aXMsajcpLmNoZWNrZWQ9dGhpcy5vcHRpb25zLmNoZWNrZWQsdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChlKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZSgpe2lmKCF0aGlzLmlzQnVpbHQoKSlyZXR1cm47Y29uc3QgZT10aGlzLm9wdGlvbnMubGFiZWw7TV8odGhpcyxVTikmJihNXyh0aGlzLFVO'@; put 'KS50ZXh0Q29udGVudD1TdHJpbmcodGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKGUudGV4dENvbnRlbnQpPz8iIikpfWlzQ2hlY2tlZCgpe3JldHVybiEoIXRoaXMuaXNCdWlsdCgpfHwhTV8odGhpcyxqNykpJiZNXyh0aGlzLGo3KS5jaGVja2VkfXNldENoZWNrZWQoZT0hMCl7dGhpcy5pc0J1'@; put 'aWx0KCkmJk1fKHRoaXMsajcpJiYoTV8odGhpcyxqNykuY2hlY2tlZD1lKX1mb2N1cygpe3RoaXMuaXNCdWlsdCgpJiZNXyh0aGlzLGo3KT8uZm9jdXMoKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsWWQoVkcuREVGQVVMVFMsdCkpLFJIZSh0aGlzLGo3LHt3cml0YWJsZTohMCx2YWx1ZTp2'@; put 'b2lkIDB9KSxSSGUodGhpcyxVTix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksSEcodGhpcyxqNyxudWxsKSxIRyh0aGlzLFVOLG51bGwpfX12YXIgREhlPW5ldyBXZWFrU2V0O2NsYXNzIE5XdCBleHRlbmRzIElOe2dldE1lbnVJdGVtRGVzY3JpcHRvcigpe3JldHVybntrZXk6dGhpcy5p'@; put 'ZCxuYW1lOnRoaXMubmFtZSxpc0NvbW1hbmQ6ITEsZGlzYWJsZVNlbGVjdGlvbjohMCxoaWRkZW46KCk9PnRoaXMuaXNIaWRkZW4oKSxyZW5kZXJlcjooZSx0KT0+KGhzKHQucGFyZW50Tm9kZSkmJllyKHQucGFyZW50Tm9kZSwiaHRGaWx0ZXJzTWVudU9wZXJhdG9ycyIpLFhuKHRoaXMuZWxl'@; put 'bWVudHMscj0+e2NvbnN0IGk9ci5lbGVtZW50O2kmJnQuYXBwZW5kQ2hpbGQoaSl9KSx0KX19YnVpbGRPcGVyYXRvcnNFbGVtZW50KGUpe2NvbnN0IHQ9W0Q0LFBHXTtYbih0LHI9Pntjb25zdCBpPW5ldyBWRyhlLHtuYW1lOiJvcGVyYXRvciIsbGFiZWw6e2h0bWxGb3I6cix0ZXh0Q29udGVu'@; put 'dDpyV3Qocil9LHZhbHVlOnIsY2hlY2tlZDpyPT09dFswXSxpZDpyfSk7aS5hZGRMb2NhbEhvb2soImNoYW5nZSIsbz0+ZnVuY3Rpb24gTFd0KG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0'@; put 'YW5jZSIpO3JldHVybiB0fSh0aGlzLERIZSxGV3QpLmNhbGwodGhpcyxvKSksdGhpcy5lbGVtZW50cy5wdXNoKGkpfSl9c2V0Q2hlY2tlZChlKXt0aGlzLmVsZW1lbnRzLmxlbmd0aDxlJiZKcih5Y2BSYWRpbyBidXR0b24gd2l0aCBpbmRleCAke2V9IGRvZXNuJ3QgZXhpc3QuYCksWG4odGhp'@; put 'cy5lbGVtZW50cywodCxyKT0+e3Quc2V0Q2hlY2tlZChyPT09ZSl9KX1nZXRBY3RpdmVPcGVyYXRpb25JZCgpe2NvbnN0IGU9dGhpcy5lbGVtZW50cy5maW5kKHQ9PnQgaW5zdGFuY2VvZiBWRyYmdC5pc0NoZWNrZWQoKSk7cmV0dXJuIGU/U3RyaW5nKGUuZ2V0VmFsdWUoKT8/RDQpOkQ0fWdl'@; put 'dFN0YXRlKCl7cmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3BlcmF0aW9uSWQoKX1zZXRTdGF0ZShlKXt0aGlzLnJlc2V0KCksZSYmdGhpcy5nZXRBY3RpdmVPcGVyYXRpb25JZCgpIT09ZSYmWG4odGhpcy5lbGVtZW50cyx0PT57dC5zZXRDaGVja2VkKHQuZ2V0VmFsdWUoKT09PWUpfSl9dXBkYXRl'@; put 'U3RhdGUoZT1ENCx0KXtsZXQgcj1lO3I9PT0kMGUmJihyPVBHKSx0aGlzLnN0YXRlPy5zZXRWYWx1ZUF0SW5kZXgodCxyKX1yZXNldCgpe3RoaXMuc2V0Q2hlY2tlZCgwKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUse2lkOnQuaWQsc3RhdGVsZXNzOiExfSksZnVuY3Rpb24gT1d0KG4sZSl7'@; put 'KGZ1bmN0aW9uIERXdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfSh0aGlzLERIZSksdGhpcy5uYW1lPSIiLHRoaXMubmFt'@; put 'ZT10Lm5hbWUsdGhpcy5idWlsZE9wZXJhdG9yc0VsZW1lbnQoZSl9fWZ1bmN0aW9uIEZXdChuKXt0aGlzLnNldFN0YXRlKEFhKG4pLnZhbHVlKX1mdW5jdGlvbiBlMmUobil7aWYobiYmKCJkYXRlIj09PW4udHlwZXx8ImludGwtZGF0ZSI9PT1uLnR5cGUpKXJldHVybiBmdW5jdGlvbiBQV3Qo'@; put 'KXtyZXR1cm4obixlKT0+e2NvbnN0IHI9ZTtpZigiIj09PW4mJiIiPT09cilyZXR1cm4gMDtpZigiIj09PW4pcmV0dXJuLTE7aWYoIiI9PT1yKXJldHVybiAxO2NvbnN0IGk9c2Mobiksbz1zYyhyKTtyZXR1cm4gbnVsbD09PWkmJm51bGw9PT1vPzA6bnVsbD09PWk/MTpudWxsPT09bz8tMTpp'@; put 'LW99fSgpfWZ1bmN0aW9uIExIZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiB6TihuLGUpe3JldHVybiBmdW5jdGlvbiBWV3Qo'@; put 'bixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLExIZShuLGUsImdldCIpKX1mdW5jdGlvbiBPSGUobixlLHQpe3JldHVybiBmdW5jdGlvbiBCV3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBl'@; put 'RXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLExIZShuLGUsInNldCIpLHQpLHR9dmFyIFRfPW5ldyBXZWFrTWFwO2NsYXNzIFdOIGV4dGVuZHMgaWd7c3RhdGljIGdldCBERUZBVUxUUygpe3JldHVybiBxNSh7aHJlZjoiIyIs'@; put 'dGFnTmFtZToiYSIsdGFiSW5kZXg6LTEscm9sZToiYnV0dG9uIn0pfWJ1aWxkKCl7c3VwZXIuYnVpbGQoKSx0aGlzLl9lbGVtZW50JiZPSGUodGhpcyxUXyx0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpfXVwZGF0ZSgpe2lmKCF0aGlzLmlzQnVpbHQoKSlyZXR1cm47Y29uc3QgZT10aGlzLm9w'@; put 'dGlvbnMudGV4dENvbnRlbnQ7ek4odGhpcyxUXykmJih6Tih0aGlzLFRfKS50ZXh0Q29udGVudD1TdHJpbmcodGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKGUpKSl9Zm9jdXMoKXt0aGlzLmlzQnVpbHQoKSYmek4odGhpcyxUXykmJnpOKHRoaXMsVF8pLmZvY3VzKCl9YWN0aXZhdGUoKXt6Tih0'@; put 'aGlzLFRfKT8uY2xpY2soKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsWWQoV04uREVGQVVMVFMsdCkpLGZ1bmN0aW9uIGpXdChuLGUsdCl7KGZ1bmN0aW9uIEhXdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZh'@; put 'dGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuc2V0KG4sdCl9KHRoaXMsVF8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9IZSh0aGlzLFRfLG51bGwpfX1mdW5jdGlvbiBOSGUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg'@; put 'aW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIEZIZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3Jl'@; put 'dHVybiBlLmdldChuKX1mdW5jdGlvbiBvcyhuLGUpe3JldHVybiBmdW5jdGlvbiBVV3QobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLEZIZShuLGUsImdldCIpKX1mdW5jdGlvbiBoeChuLGUsdCl7TkhlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBYMihuLGUs'@; put 'dCl7cmV0dXJuIGZ1bmN0aW9uIHpXdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sRkhlKG4sZSwic2V0'@; put 'IiksdCksdH1mdW5jdGlvbiBCRyhuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBqRyhuLGUpe05IZShuLGUpLGUuYWRkKG4pfWNvbnN0IFBIZT0i'@; put 'bXVsdGlwbGVTZWxlY3QuaXRlbUJveCI7dmFyIGdtPW5ldyBXZWFrTWFwLHB1PW5ldyBXZWFrTWFwLFVHPW5ldyBXZWFrTWFwLEM2PW5ldyBXZWFrTWFwLFU3PW5ldyBXZWFrTWFwLHo3PW5ldyBXZWFrTWFwLEhIZT1uZXcgV2Vha1NldCxWSGU9bmV3IFdlYWtTZXQsQkhlPW5ldyBXZWFrU2V0'@; put 'LGpIZT1uZXcgV2Vha1NldDtjbGFzcyBZTiBleHRlbmRzIGlne3N0YXRpYyBnZXQgREVGQVVMVFMoKXtyZXR1cm4gcTUoe2NsYXNzTmFtZToiaHRVSU11bHRpcGxlU2VsZWN0Iix2YWx1ZTpbXX0pfWdldEl0ZW1zQm94KCl7cmV0dXJuIG9zKHRoaXMscHUpfXJlZ2lzdGVySG9va3MoKXtvcyh0'@; put 'aGlzLEM2KT8uYWRkTG9jYWxIb29rKCJrZXlkb3duIixlPT5CRyh0aGlzLFZIZSxZV3QpLmNhbGwodGhpcyxlKSksb3ModGhpcyxDNik/LmFkZExvY2FsSG9vaygiaW5wdXQiLGU9PkJHKHRoaXMsSEhlLFdXdCkuY2FsbCh0aGlzLGUpKSxvcyh0aGlzLFU3KT8uYWRkTG9jYWxIb29rKCJjbGlj'@; put 'ayIsZT0+QkcodGhpcyxCSGUsWld0KS5jYWxsKHRoaXMsZSkpLG9zKHRoaXMsejcpPy5hZGRMb2NhbEhvb2soImNsaWNrIixlPT5CRyh0aGlzLGpIZSxHV3QpLmNhbGwodGhpcyxlKSl9c2V0SXRlbXMoZSl7WDIodGhpcyxnbSxlKSxvcyh0aGlzLHB1KT8ubG9hZERhdGEob3ModGhpcyxnbSkp'@; put 'fXNldExvY2FsZShlKXtYMih0aGlzLFVHLGUpfWdldExvY2FsZSgpe3JldHVybiBvcyh0aGlzLFVHKX1nZXRJdGVtcygpe3JldHVyblsuLi5vcyh0aGlzLGdtKV19Z2V0VmFsdWUoKXtyZXR1cm4gZnVuY3Rpb24gcVd0KG4pe2NvbnN0IGU9W107cmV0dXJuIG4uZm9yRWFjaCh0PT57dC5jaGVj'@; put 'a2VkJiZlLnB1c2godC52YWx1ZSl9KSxlfShvcyh0aGlzLGdtKSl9Z2V0U2VhcmNoSW5wdXRFbGVtZW50KCl7cmV0dXJuIG9zKHRoaXMsQzYpfWdldFNlbGVjdEFsbEVsZW1lbnQoKXtyZXR1cm4gb3ModGhpcyxVNyl9Z2V0Q2xlYXJBbGxFbGVtZW50KCl7cmV0dXJuIG9zKHRoaXMsejcpfWlz'@; put 'U2VsZWN0ZWRBbGxWYWx1ZXMoKXtyZXR1cm4gb3ModGhpcyxnbSkubGVuZ3RoPT09dGhpcy5nZXRWYWx1ZSgpLmxlbmd0aH1idWlsZCgpe2lmKHN1cGVyLmJ1aWxkKCksIXRoaXMuaG90fHwhdGhpcy5fZWxlbWVudClyZXR1cm47Y29uc3QgZT10aGlzLmhvdCx0PXRoaXMuX2VsZW1lbnQse3Jv'@; put 'b3REb2N1bWVudDpyfT1lLGk9ci5jcmVhdGVFbGVtZW50KCJkaXYiKSxvPW5ldyBpZyhlLHtjbGFzc05hbWU6Imh0VUlTZWxlY3Rpb25Db250cm9scyIsY2hpbGRyZW46W29zKHRoaXMsVTcpLG9zKHRoaXMsejcpXS5maWx0ZXIoRT0+bnVsbCE9PUUpfSksYT1vcyh0aGlzLEM2KT8uZWxlbWVu'@; put 'dCxsPW8uZWxlbWVudDthJiZ0LmFwcGVuZENoaWxkKGEpLGwmJnQuYXBwZW5kQ2hpbGQobCksdC5hcHBlbmRDaGlsZChpKSxvcyh0aGlzLHB1KT8uZGVzdHJveSgpLFlyKGksImh0VUlNdWx0aXBsZVNlbGVjdEhvdCIpLFgyKHRoaXMscHUsbmV3IGUuY29uc3RydWN0b3IoaSx7ZGF0YTpbW11d'@; put 'LGNvbHVtbnM6W3tkYXRhOiJjaGVja2VkIix0eXBlOiJjaGVja2JveCIsbGFiZWw6e3Byb3BlcnR5OiJ2aXN1YWxWYWx1ZSIscG9zaXRpb246ImFmdGVyIn19XSxiZWZvcmVSZW5kZXJlcjooRSxPLFosZWUsdmUsTWUpPT57RS50aXRsZT1NZS5pbnN0YW5jZS5nZXREYXRhQXRSb3dQcm9wKE8s'@; put 'TWUubGFiZWwucHJvcGVydHkpfSxhZnRlckxpc3RlbjooKT0+e3RoaXMucnVuTG9jYWxIb29rcygiZm9jdXMiLHRoaXMpfSxiZWZvcmVPbkNlbGxNb3VzZVVwOigpPT57b3ModGhpcyxwdSk/Lmxpc3RlbigpfSxtb2RpZnlDb2xXaWR0aDpFPT57Y29uc3QgTz0ob3ModGhpcyxwdSk/LmNvbnRh'@; put 'aW5lci5zY3JvbGxXaWR0aD8/MCktR2Qocik7cmV0dXJuIHZvaWQgMCE9PUUmJkU8Tz9POkV9LGF1dG9Db2x1bW5TaXplOiEwLGF1dG9Sb3dTaXplOiExLGhpZGRlblJvd3M6ITAsbWF4Q29sczoxLGF1dG9XcmFwQ29sOiEwLGhlaWdodDoxMTAsY29weVBhc3RlOiExLGRpc2FibGVWaXN1YWxT'@; put 'ZWxlY3Rpb246ImFyZWEiLGZpbGxIYW5kbGU6ITEsZnJhZ21lbnRTZWxlY3Rpb246ImNlbGwiLHRhYk1vdmVzOntyb3c6MSxjb2w6MH0sdGhlbWVOYW1lOmUuZ2V0Q3VycmVudFRoZW1lTmFtZSgpLGxheW91dERpcmVjdGlvbjplLmlzUnRsKCk/InJ0bCI6Imx0ciJ9KSksb3ModGhpcyxwdSku'@; put 'aW5pdCgpO2NvbnN0IGc9b3ModGhpcyxwdSkuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpO2cmJihnLnJlbW92ZVNob3J0Y3V0c0J5S2V5cyhbIlRhYiJdKSxnLnJlbW92ZVNob3J0Y3V0c0J5S2V5cyhbIlNoaWZ0IiwiVGFiIl0pLGcuYWRkU2hvcnRjdXQoe2tleXM6'@; put 'W1siRXNjYXBlIl1dLGNhbGxiYWNrOkU9Pnt0aGlzLnJ1bkxvY2FsSG9va3MoImtleWRvd24iLEUsdGhpcyl9LGdyb3VwOlBIZX0pLGcuYWRkU2hvcnRjdXQoe2tleXM6W1siVGFiIl0sWyJTaGlmdCIsIlRhYiJdXSxjYWxsYmFjazpFPT57b3ModGhpcyxwdSk/LmRlc2VsZWN0Q2VsbCgpLHRo'@; put 'aXMucnVuTG9jYWxIb29rcygia2V5ZG93biIsRSx0aGlzKSx0aGlzLnJ1bkxvY2FsSG9va3MoImxpc3RUYWJLZXlkb3duIixFLHRoaXMpfSxncm91cDpQSGV9KSl9Zm9jdXMoKXt0aGlzLmlzQnVpbHQoKSYmb3ModGhpcyxwdSk/Lmxpc3RlbigpfXJlc2V0KCl7b3ModGhpcyxDNik/LnJlc2V0'@; put 'KCksb3ModGhpcyxVNyk/LnJlc2V0KCksb3ModGhpcyx6Nyk/LnJlc2V0KCl9dXBkYXRlKCl7IXRoaXMuaXNCdWlsdCgpfHwhb3ModGhpcyxwdSl8fDA9PT1vcyh0aGlzLHB1KS5yb290RWxlbWVudC5vZmZzZXRIZWlnaHR8fChvcyh0aGlzLHB1KS51cGRhdGVTZXR0aW5ncyh7ZGF0YTokV3Qo'@; put 'b3ModGhpcyxnbSksdGhpcy5vcHRpb25zLnZhbHVlKX0pLHN1cGVyLnVwZGF0ZSgpKX1kZXN0cm95KCl7b3ModGhpcyxwdSk/LmRlc3Ryb3koKSxvcyh0aGlzLEM2KT8uZGVzdHJveSgpLG9zKHRoaXMsejcpPy5kZXN0cm95KCksb3ModGhpcyxVNyk/LmRlc3Ryb3koKSxYMih0aGlzLEM2LG51'@; put 'bGwpLFgyKHRoaXMsejcsbnVsbCksWDIodGhpcyxVNyxudWxsKSxYMih0aGlzLHB1LG51bGwpLG9zKHRoaXMsZ20pLmxlbmd0aD0wLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsWWQoWU4uREVGQVVMVFMsdCkpLGpHKHRoaXMsSEhlKSxqRyh0aGlzLFZIZSksakco'@; put 'dGhpcyxCSGUpLGpHKHRoaXMsakhlKSxoeCh0aGlzLGdtLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxoeCh0aGlzLHB1LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxoeCh0aGlzLFVHLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxoeCh0aGlzLEM2LHt3cml0YWJsZTohMCx2'@; put 'YWx1ZTp2b2lkIDB9KSxoeCh0aGlzLFU3LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxoeCh0aGlzLHo3LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxYMih0aGlzLGdtLFtdKSxYMih0aGlzLHB1LG51bGwpLFgyKHRoaXMsVUcsIiIpLFgyKHRoaXMsQzYsbnVsbCksWDIodGhpcyxV'@; put 'NyxudWxsKSxYMih0aGlzLHo3LG51bGwpLFgyKHRoaXMsQzYsbmV3IEVfKGUse3BsYWNlaG9sZGVyOmR1ZSxjbGFzc05hbWU6Imh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaCJ9KSksWDIodGhpcyxVNyxuZXcgV04oZSx7dGV4dENvbnRlbnQ6c3VlLGNsYXNzTmFtZToiaHRVSVNlbGVjdEFsbCJ9'@; put 'KSksWDIodGhpcyx6NyxuZXcgV04oZSx7dGV4dENvbnRlbnQ6bHVlLGNsYXNzTmFtZToiaHRVSUNsZWFyQWxsIn0pKSx0aGlzLnJlZ2lzdGVySG9va3MoKX19ZnVuY3Rpb24gV1d0KG4pe2NvbnN0IHQ9djEoQWEobikudmFsdWUudHJpbSgpLHRoaXMuZ2V0TG9jYWxlKCkpO2lmKCJhcHBseSI9'@; put 'PT10aGlzLm9wdGlvbnMuc2VhcmNoTW9kZSl7Y29uc3Qgcj1vcyh0aGlzLHB1KT8uZ2V0UGx1Z2luKCJoaWRkZW5Sb3dzIiksaT1bXTtyJiZyLnNob3dSb3dzKHIuZ2V0SGlkZGVuUm93cygpKSxvcyh0aGlzLGdtKS5mb3JFYWNoKChvLGEpPT57by5jaGVja2VkPXYxKGAke28udmFsdWV9YCx0'@; put 'aGlzLmdldExvY2FsZSgpKS5pbmRleE9mKHQpPj0wLG8uY2hlY2tlZHx8aS5wdXNoKGEpfSksciYmci5oaWRlUm93cyhpKSxvcyh0aGlzLHB1KT8udmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSxvcyh0aGlzLHB1KT8ucmVuZGVyKCl9ZWxzZXtsZXQgcjtyPSIiPT09dD9bLi4ub3ModGhpcyxn'@; put 'bSldOm9zKHRoaXMsZ20pLmZpbHRlcihpPT52MShgJHtpLnZhbHVlfWAsdGhpcy5nZXRMb2NhbGUoKSkuaW5kZXhPZih0KT49MCksb3ModGhpcyxwdSk/LmxvYWREYXRhKHIpfX1mdW5jdGlvbiBZV3Qobil7dGhpcy5ydW5Mb2NhbEhvb2tzKCJrZXlkb3duIixuLHRoaXMpLGh3KG4ua2V5Q29k'@; put 'ZSwiQVJST1dfRE9XTiIpJiYobi5wcmV2ZW50RGVmYXVsdCgpLEYzKG4pLG9zKHRoaXMscHUpPy5saXN0ZW4oKSxvcyh0aGlzLHB1KT8uc2VsZWN0Q2VsbCgwLDApKX1mdW5jdGlvbiBaV3Qobil7Y29uc3QgZT1bXTtuLnByZXZlbnREZWZhdWx0KCksb3ModGhpcyxwdSkmJihvcyh0aGlzLHB1'@; put 'KS5nZXRTb3VyY2VEYXRhKCkuZm9yRWFjaCgodCxyKT0+e3QuY2hlY2tlZD0hMCxlLnB1c2goQmxlKHQscilbMF0pfSksb3ModGhpcyxwdSkuc2V0U291cmNlRGF0YUF0Q2VsbChlKSl9ZnVuY3Rpb24gR1d0KG4pe2NvbnN0IGU9W107bi5wcmV2ZW50RGVmYXVsdCgpLG9zKHRoaXMscHUpJiYo'@; put 'b3ModGhpcyxwdSkuZ2V0U291cmNlRGF0YSgpLmZvckVhY2goKHQscik9Pnt0LmNoZWNrZWQ9ITEsZS5wdXNoKEJsZSh0LHIpWzBdKX0pLG9zKHRoaXMscHUpLnNldFNvdXJjZURhdGFBdENlbGwoZSkpfWZ1bmN0aW9uICRXdChuLGUpe2NvbnN0IHQ9TE4oZSk7cmV0dXJuIG4ubWFwKHI9Pihy'@; put 'LmNoZWNrZWQ9dChyLnZhbHVlKSxyKSl9ZnVuY3Rpb24gekcobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gdDJlKG4sZSl7KGZ1bmN0aW9uIEtX'@; put 'dChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfXZhciBVSGU9bmV3IFdlYWtTZXQsbjJlPW5ldyBXZWFrU2V0LHpIZT1uZXcg'@; put 'V2Vha1NldDtjbGFzcyBYV3QgZXh0ZW5kcyBJTntyZWdpc3Rlckhvb2tzKCl7dGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soImtleWRvd24iLGU9PnpHKHRoaXMsVUhlLFFXdCkuY2FsbCh0aGlzLGUpKS5hZGRMb2NhbEhvb2soImxpc3RUYWJLZXlkb3duIixl'@; put 'PT50aGlzLnJ1bkxvY2FsSG9va3MoImxpc3RUYWJLZXlkb3duIixlKSksdGhpcy5ob3Q/LmFkZEhvb2soIm1vZGlmeUZpbHRlcnNNdWx0aVNlbGVjdFZhbHVlIiwoZSx0KT0+ekcodGhpcyx6SGUsSld0KS5jYWxsKHRoaXMsZSx0KSl9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuZ2V0TXVs'@; put 'dGlwbGVTZWxlY3RFbGVtZW50KCk7cmV0dXJuW2UuZ2V0U2VhcmNoSW5wdXRFbGVtZW50KCksZS5nZXRTZWxlY3RBbGxFbGVtZW50KCksZS5nZXRDbGVhckFsbEVsZW1lbnQoKSx0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpXX1zZXRTdGF0ZShlKXtpZih0aGlzLnJlc2V0KCksZSYm'@; put 'ZS5jb21tYW5kLmtleT09PUNfKXtjb25zdCB0PXRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCk7dC5zZXRJdGVtcyhlLml0ZW1zU25hcHNob3QpLHQuc2V0VmFsdWUoZS5hcmdzWzBdKSx0LnNldExvY2FsZShlLmxvY2FsZSl9fWdldFN0YXRlKCl7Y29uc3QgZT10aGlzLmdldE11bHRp'@; put 'cGxlU2VsZWN0RWxlbWVudCgpLHQ9ZS5nZXRJdGVtcygpO3JldHVybntjb21tYW5kOntrZXk6ZS5pc1NlbGVjdGVkQWxsVmFsdWVzKCl8fCF0Lmxlbmd0aD9iaDpDX30sYXJnczpbZS5nZXRWYWx1ZSgpXSxpdGVtc1NuYXBzaG90OnR9fXVwZGF0ZVN0YXRlKGUpe2NvbnN0IHQ9KHIsaSxvLGEs'@; put 'bCk9Pntjb25zdFt1XT1IdihpLE89Pk8ubmFtZT09PUNfKSxnPXt9LEU9dGhpcy5ob3Q/LmdldFRyYW5zbGF0ZWRQaHJhc2UoRlkpPz8iIjtpZih1KXtjb25zdCBPPWEocixsKSxaPV9jKE8sQXQ9PkF0LnZhbHVlKSxlZT1uZXcgTWFwKE8ubWFwKEF0PT5bQXQudmFsdWUsdGhpcy5ob3Q/Lmdl'@; put 'dENlbGxNZXRhKEF0Lm1ldGEudmlzdWFsUm93LEF0Lm1ldGEudmlzdWFsQ29sKV0pKSx2ZT1PWzBdPy5tZXRhLEhlPVowZShaLGUyZSh2ZSkpO28mJih1LmFyZ3NbMF09byk7Y29uc3QgV2U9W10sYXQ9aEhlKEhlLHUuYXJnc1swXSxFLEF0PT57QXQuY2hlY2tlZCYmV2UucHVzaChBdC52YWx1'@; put 'ZSksekcodGhpcyxuMmUsV0hlKS5jYWxsKHRoaXMsQXQsZWUpfSksQ3Q9ZS5lZGl0ZWRDb25kaXRpb25TdGFjay5jb2x1bW47Zy5sb2NhbGU9dGhpcy5ob3Q/LmdldENlbGxNZXRhKDAsQ3QpLmxvY2FsZSxnLmFyZ3M9W1dlXSxnLmNvbW1hbmQ9b0MoQ18pLGcuaXRlbXNTbmFwc2hvdD1hdH1l'@; put 'bHNlIGcuYXJncz1bXSxnLmNvbW1hbmQ9b0MoYmgpO3RoaXMuc3RhdGU/LnNldFZhbHVlQXRJbmRleChyLGcpfTt0KGUuZWRpdGVkQ29uZGl0aW9uU3RhY2suY29sdW1uLGUuZWRpdGVkQ29uZGl0aW9uU3RhY2suY29uZGl0aW9ucyxlLmNvbmRpdGlvbkFyZ3NDaGFuZ2UsZS5maWx0ZXJlZFJv'@; put 'd3NGYWN0b3J5KSxlLmRlcGVuZGVudENvbmRpdGlvblN0YWNrcy5sZW5ndGgmJnQoZS5kZXBlbmRlbnRDb25kaXRpb25TdGFja3NbMF0uY29sdW1uLGUuZGVwZW5kZW50Q29uZGl0aW9uU3RhY2tzWzBdLmNvbmRpdGlvbnMsdm9pZCAwLGUuZmlsdGVyZWRSb3dzRmFjdG9yeSxlLmVkaXRlZENv'@; put 'bmRpdGlvblN0YWNrKX1nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50cy5maW5kKGU9PmUgaW5zdGFuY2VvZiBZTil9Z2V0TWVudUl0ZW1EZXNjcmlwdG9yKCl7cmV0dXJue2tleTp0aGlzLmlkLG5hbWU6dGhpcy5uYW1lLGlzQ29tbWFuZDohMSxkaXNhYmxl'@; put 'U2VsZWN0aW9uOiEwLGhpZGRlbjooKT0+dGhpcy5pc0hpZGRlbigpfHwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5oaWRkZW5XaGVuJiZ0aGlzLmhpZGRlbldoZW4oKSxyZW5kZXJlcjooZSx0LHIsaSxvLGEpPT57aHModC5wYXJlbnROb2RlKSYmWXIodC5wYXJlbnROb2RlLCJodEZpbHRlcnNN'@; put 'ZW51VmFsdWUiKTtjb25zdCBsPXRoaXMuaG90Py5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik/P3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gWXIobCwiaHRGaWx0ZXJzTWVudUxhYmVsIiksbC50ZXh0Q29udGVudD1hLHQuYXBwZW5kQ2hpbGQo'@; put 'bCksdC5wYXJlbnRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoImdob3N0LXRhYmxlIil8fFhuKHRoaXMuZWxlbWVudHMsdT0+e2NvbnN0IGc9dS5lbGVtZW50O2cmJnQuYXBwZW5kQ2hpbGQoZyl9KSx0fX19cmVzZXQoKXtjb25zdCBlPXRoaXMuaG90Py5nZXRUcmFuc2xhdGVkUGhyYXNlKEZZKT8/'@; put 'IiIsdD10aGlzLl9nZXRDb2x1bW5WaXNpYmxlVmFsdWVzKCkscj10Lm1hcChFPT5FLnZhbHVlKSxpPW5ldyBNYXAodC5tYXAoRT0+W0UudmFsdWUsRS5tZXRhXSkpLG89dFswXT8ubWV0YSxsPVowZShyLGUyZShvKSksdT1oSGUobCxsLGUsRT0+e3pHKHRoaXMsbjJlLFdIZSkuY2FsbCh0aGlz'@; put 'LEUsaSl9KTt0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldEl0ZW1zKHUpLHN1cGVyLnJlc2V0KCksdGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKS5zZXRWYWx1ZShsKTtjb25zdCBnPXRoaXMuaG90Py5nZXRQbHVnaW4oImZpbHRlcnMiKS5nZXRTZWxlY3RlZENvbHVt'@; put 'bigpPz9udWxsO251bGwhPT1nJiZ0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldExvY2FsZSh0aGlzLmhvdD8uZ2V0Q2VsbE1ldGEoMCxnLnZpc3VhbEluZGV4KS5sb2NhbGUpfV9nZXRDb2x1bW5WaXNpYmxlVmFsdWVzKCl7Y29uc3QgZT10aGlzLmhvdD8uZ2V0UGx1Z2luKCJm'@; put 'aWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKT8/bnVsbDtyZXR1cm4gbnVsbD09PWU/W106X2ModGhpcy5ob3Q/LmdldERhdGFBdENvbChlLnZpc3VhbEluZGV4KT8/W10sKHQscik9Pih7dmFsdWU6WTBlKHQpLG1ldGE6dGhpcy5ob3Q/LmdldENlbGxNZXRhKHIsZS52aXN1YWxJbmRleCk/'@; put 'P3t9fSkpfWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx7aWQ6dC5pZCxzdGF0ZWxlc3M6ITF9KSx0MmUodGhpcyxVSGUpLHQyZSh0aGlzLG4yZSksdDJlKHRoaXMsekhlKSx0aGlzLm5hbWU9IiIsdGhpcy5uYW1lPXQubmFtZSx0aGlzLnNlYXJjaE1vZGU9dC5zZWFyY2hNb2RlLHRoaXMuaGlk'@; put 'ZGVuV2hlbj10LmhpZGRlbldoZW4sdGhpcy5lbGVtZW50cy5wdXNoKG5ldyBZTihlLHtzZWFyY2hNb2RlOnRoaXMuc2VhcmNoTW9kZX0pKSx0aGlzLnJlZ2lzdGVySG9va3MoKX19ZnVuY3Rpb24gUVd0KG4pe2h3KG4ua2V5Q29kZSwiRVNDQVBFIikmJih0aGlzLnJ1bkxvY2FsSG9va3MoImNh'@; put 'bmNlbCIpLEYzKG4pKSxodyhuLmtleUNvZGUsIkVOVEVSIikmJigiYXBwbHkiPT09dGhpcy5zZWFyY2hNb2RlJiZ0aGlzLnJ1bkxvY2FsSG9va3MoImFjY2VwdCIpLEYzKG4pKX1mdW5jdGlvbiBXSGUobixlKXt0aGlzLmhvdD8uaGFzSG9vaygibW9kaWZ5RmlsdGVyc011bHRpU2VsZWN0VmFs'@; put 'dWUiKSYmKG4udmlzdWFsVmFsdWU9dGhpcy5ob3Q/LnJ1bkhvb2tzKCJtb2RpZnlGaWx0ZXJzTXVsdGlTZWxlY3RWYWx1ZSIsbi52aXN1YWxWYWx1ZSxlLmdldChuLnZhbHVlKSkpfWZ1bmN0aW9uIEpXdChuLGUpe3JldHVybiBlLnZhbHVlRm9ybWF0dGVyP2UudmFsdWVGb3JtYXR0ZXIobixl'@; put 'KTpufXZhciBZSGU9bmV3IFdlYWtTZXQ7Y2xhc3MgWk4gZXh0ZW5kcyBJTntzdGF0aWMgZ2V0IEJVVFRPTl9PSygpe3JldHVybiJvayJ9c3RhdGljIGdldCBCVVRUT05fQ0FOQ0VMKCl7cmV0dXJuImNhbmNlbCJ9cmVnaXN0ZXJIb29rcygpe1huKHRoaXMuZWxlbWVudHMsZT0+e2UuYWRkTG9j'@; put 'YWxIb29rKCJjbGljayIsKHQscik9PmZ1bmN0aW9uIHRZdChuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH0odGhpcyxZSGUscll0KS5jYWxsKHRoaXMsdCxyKSl9'@; put 'KX1nZXRNZW51SXRlbURlc2NyaXB0b3IoKXtyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOigpPT50aGlzLmlzSGlkZGVuKCkscmVuZGVyZXI6KGUsdCk9Pihocyh0LnBhcmVudE5vZGUpJiZZcih0LnBhcmVu'@; put 'dE5vZGUsImh0RmlsdGVyc01lbnVBY3Rpb25CYXIiKSxYbih0aGlzLmVsZW1lbnRzLHI9Pntjb25zdCBpPXIuZWxlbWVudDtpJiZ0LmFwcGVuZENoaWxkKGkpfSksdCl9fWFjY2VwdCgpe3RoaXMucnVuTG9jYWxIb29rcygiYWNjZXB0Iil9Y2FuY2VsKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJj'@; put 'YW5jZWwiKX1jb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUse2lkOnQuaWQsc3RhdGVsZXNzOiEwfSksZnVuY3Rpb24gbll0KG4sZSl7KGZ1bmN0aW9uIGVZdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxl'@; put 'bWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfSh0aGlzLFlIZSksdGhpcy5uYW1lPSIiLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5lbGVtZW50cy5wdXNoKG5ldyBFXyhlLHt0eXBlOiJidXR0b24iLHZhbHVlOmN1ZSxjbGFzc05hbWU6Imh0VUlCdXR0b24gaHRVSUJ1'@; put 'dHRvbk9LIixpZGVudGlmaWVyOlpOLkJVVFRPTl9PS30pKSx0aGlzLmVsZW1lbnRzLnB1c2gobmV3IEVfKGUse3R5cGU6ImJ1dHRvbiIsdmFsdWU6dXVlLGNsYXNzTmFtZToiaHRVSUJ1dHRvbiBodFVJQnV0dG9uQ2FuY2VsIixpZGVudGlmaWVyOlpOLkJVVFRPTl9DQU5DRUx9KSksdGhpcy5y'@; put 'ZWdpc3Rlckhvb2tzKCl9fWZ1bmN0aW9uIHJZdChuLGUpe2Uub3B0aW9ucy5pZGVudGlmaWVyPT09Wk4uQlVUVE9OX09LP3RoaXMuYWNjZXB0KCk6dGhpcy5jYW5jZWwoKX1jb25zdCBaSGU9IkNvbmRpdGlvbkNvbGxlY3Rpb24uZmlsdGVyaW5nU3RhdGVzIjtjbGFzcyBHSGV7aXNFbXB0eSgp'@; put 'e3JldHVybiAwPT09dGhpcy5nZXRGaWx0ZXJlZENvbHVtbnMoKS5sZW5ndGh9aXNNYXRjaChlLHQpe2NvbnN0IHI9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KHQpLGk9cj8uY29uZGl0aW9ucz8/W10sbz1yPy5vcGVyYXRpb247cmV0dXJuIHRoaXMuaXNNYXRjaEluQ29u'@; put 'ZGl0aW9ucyhpLGUsbyl9aXNNYXRjaEluQ29uZGl0aW9ucyhlLHQscj1ENCl7cmV0dXJuIWUubGVuZ3RofHxmdW5jdGlvbiBuV3Qobil7T05bbl18fEpyKGBPcGVyYXRpb24gd2l0aCBpZCAiJHtufSIgZG9lcyBub3QgZXhpc3QuYCk7Y29uc3QgZT1PTltuXS5mdW5jO3JldHVybiBmdW5jdGlv'@; put 'bih0LHIpe3JldHVybiBlKHQscil9fShyKShlLHQpfWFkZENvbmRpdGlvbihlLHQscj1ENCxpKXtjb25zdCBvPXRoaXMuaG90LmdldENlbGxNZXRhKDAsZSkubG9jYWxlLGE9dC5hcmdzLm1hcChFPT4ic3RyaW5nIj09dHlwZW9mIEU/djEoRSxvKTpFKSxsPXQubmFtZXx8dC5jb21tYW5kLmtl'@; put 'eTt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZUFkZCIsZSk7Y29uc3QgdT10aGlzLmdldE9wZXJhdGlvbihlKTt1P3UhPT1yJiZKcih5Y2BUaGUgY29sdW1uIG9mIGluZGV4ICR7ZX0gaGFzIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHdpdGggYSBcYCR7dX1cYFx4MjAKICAgICAgICBmaWx0ZXIg'@; put 'b3BlcmF0aW9uLiBVc2UgXGByZW1vdmVDb25kaXRpb25zXGAgdG8gY2xlYXIgdGhlIGN1cnJlbnQgY29uZGl0aW9ucyBhbmQgdGhlbiBhZGQgbmV3IG9uZXMuXHgyMAogICAgICAgIE1pbmQgdGhhdCB5b3UgY2Fubm90IG1peCBkaWZmZXJlbnQgdHlwZXMgb2Ygb3BlcmF0aW9ucyAoZm9yIGlu'@; put 'c3RhbmNlLCBpZiB5b3UgdXNlIFxgY29uanVuY3Rpb25cYCxceDIwCiAgICAgICAgdXNlIGl0IGNvbnNlcXVlbnRseSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbikuYCk6WHUoT05bcl0pJiZKcih5Y2BVbmV4cGVjdGVkIG9wZXJhdGlvbiBuYW1lZCBcYCR7cn1cYC4gUG9zc2libGUgb25lcyBh'@; put 'cmVceDIwCiAgICAgICAgXGBkaXNqdW5jdGlvblxgIGFuZCBcYGNvbmp1bmN0aW9uXGAuYCk7Y29uc3QgZz10aGlzLmdldENvbmRpdGlvbnMoZSk7MD09PWcubGVuZ3RoP3RoaXMuZmlsdGVyaW5nU3RhdGVzLnNldFZhbHVlQXRJbmRleChlLHtvcGVyYXRpb246cixjb25kaXRpb25zOlt7bmFt'@; put 'ZTpsLGFyZ3M6YSxmdW5jOmN4KGwsYSl9XX0saSk6Zy5wdXNoKHtuYW1lOmwsYXJnczphLGZ1bmM6Y3gobCxhKX0pLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJBZGQiLGUpfWdldENvbmRpdGlvbnMoZSl7cmV0dXJuIHRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldFZhbHVlQXRJbmRleChlKT8u'@; put 'Y29uZGl0aW9ucz8/W119Z2V0T3BlcmF0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlcmluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgoZSk/Lm9wZXJhdGlvbn1nZXRGaWx0ZXJlZENvbHVtbnMoKXtyZXR1cm4gdGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0RW50cmllcygpLm1hcCgoW2VdKT0+ZSl9'@; put 'Z2V0Q29sdW1uU3RhY2tQb3NpdGlvbihlKXtyZXR1cm4gdGhpcy5nZXRGaWx0ZXJlZENvbHVtbnMoKS5pbmRleE9mKGUpfWV4cG9ydEFsbENvbmRpdGlvbnMoKXtyZXR1cm4gdGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0RW50cmllcygpLnJlZHVjZSgoZSxbdCxyXSk9Pntjb25zdHtvcGVyYXRp'@; put 'b246aSxjb25kaXRpb25zOm99PXI7cmV0dXJuIGUucHVzaCh7Y29sdW1uOnQsb3BlcmF0aW9uOmksY29uZGl0aW9uczpvLm1hcCgoe25hbWU6YSxhcmdzOmx9KT0+KHtuYW1lOmEsYXJnczpbLi4ubF19KSl9KSxlfSxbXSl9aW1wb3J0QWxsQ29uZGl0aW9ucyhlKXt0aGlzLmNsZWFuKCksZS5m'@; put 'b3JFYWNoKHQ9Pnt0LmNvbmRpdGlvbnMuZm9yRWFjaChyPT57dGhpcy5hZGRDb25kaXRpb24odC5jb2x1bW4scix0Lm9wZXJhdGlvbil9KX0pfXJlbW92ZUNvbmRpdGlvbnMoZSl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVSZW1vdmUiLGUpLHRoaXMuZmlsdGVyaW5nU3RhdGVzLmNsZWFy'@; put 'VmFsdWUoZSksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclJlbW92ZSIsZSl9Y2xlYW4oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZUNsZWFuIiksdGhpcy5maWx0ZXJpbmdTdGF0ZXMuY2xlYXIoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xlYW4iKX1oYXNDb25kaXRpb25zKGUs'@; put 'dCl7Y29uc3Qgcj10aGlzLmdldENvbmRpdGlvbnMoZSk7cmV0dXJuIHQ/ci5zb21lKGk9PmkubmFtZT09PXQpOnIubGVuZ3RoPjB9ZGVzdHJveSgpe3RoaXMuaXNNYXBSZWdpc3RyYWJsZSYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcChaSGUpLHRoaXMuY2xlYXJM'@; put 'b2NhbEhvb2tzKCksdGhpcy5maWx0ZXJpbmdTdGF0ZXM9bnVsbH1jb25zdHJ1Y3RvcihlLHQ9ITApe3RoaXMuZmlsdGVyaW5nU3RhdGVzPW5ldyBUWSx0aGlzLmhvdD1lLHRoaXMuaXNNYXBSZWdpc3RyYWJsZT10LCEwPT09dGhpcy5pc01hcFJlZ2lzdHJhYmxlP3RoaXMuaG90LmNvbHVtbklu'@; put 'ZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKFpIZSx0aGlzLmZpbHRlcmluZ1N0YXRlcyk6dGhpcy5maWx0ZXJpbmdTdGF0ZXMuaW5pdCh0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSl9fVlsKEdIZSxfaCk7Y29uc3QgcjJlPUdIZSwkSGU9Y2xhc3MgaVl0e2Zp'@; put 'bHRlcigpe2xldCBlPVtdO3JldHVybiBYbih0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0RmlsdGVyZWRDb2x1bW5zKCksKHQscik9PntsZXQgaT10aGlzLmNvbHVtbkRhdGFGYWN0b3J5KHQpO3ImJihpPXRoaXMuX2dldEludGVyc2VjdERhdGEoaSxlKSksZT10aGlzLmZpbHRlckJ5Q29s'@; put 'dW1uKHQsaSl9KSxlfWZpbHRlckJ5Q29sdW1uKGUsdD1bXSl7Y29uc3Qgcj1bXTtyZXR1cm4gWG4odCxpPT57dm9pZCAwIT09aSYmdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmlzTWF0Y2goaSxlKSYmci5wdXNoKGkpfSkscn1fZ2V0SW50ZXJzZWN0RGF0YShlLHQpe2NvbnN0IHI9W107cmV0'@; put 'dXJuIFhuKHQsaT0+e2NvbnN0IG89aS5tZXRhLnJvdzt2b2lkIDAhPT1lW29dJiYocltvXT1lW29dKX0pLHJ9Y29uc3RydWN0b3IoZSx0PSgpPT5bXSl7dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPWUsdGhpcy5jb2x1bW5EYXRhRmFjdG9yeT10fX07ZnVuY3Rpb24gaTJlKG4sZSx0KXtpZigh'@; put 'ZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIG8yZShuLGUpeyhmdW5jdGlvbiBvWXQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg'@; put 'aW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLmFkZChuKX12YXIgcUhlPW5ldyBXZWFrU2V0LEtIZT1uZXcgV2Vha1NldCxYSGU9bmV3IFdlYWtTZXQ7Y2xhc3MgUUhle2dyb3VwQ2hhbmdlcygpe3RoaXMuZ3JvdXBpbmc9'@; put 'ITB9Zmx1c2goKXt0aGlzLmdyb3VwaW5nPSExLFhuKHRoaXMuY2hhbmdlcyxlPT57dGhpcy51cGRhdGVTdGF0ZXNBdENvbHVtbihlKX0pLHRoaXMuY2hhbmdlcy5sZW5ndGg9MH11cGRhdGVTdGF0ZXNBdENvbHVtbihlLHQpe2lmKHRoaXMuZ3JvdXBpbmcpcmV0dXJuIHZvaWQoLTE9PT10aGlz'@; put 'LmNoYW5nZXMuaW5kZXhPZihlKSYmdGhpcy5jaGFuZ2VzLnB1c2goZSkpO2NvbnN0IHI9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmV4cG9ydEFsbENvbmRpdGlvbnMoKTtsZXQgaT10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0Q29sdW1uU3RhY2tQb3NpdGlvbihlKTstMT09PWkmJihp'@; put 'PXRoaXMubGF0ZXN0RWRpdGVkQ29sdW1uUG9zaXRpb24pO2NvbnN0IG89ci5zbGljZSgwLGkpLGE9ci5zbGljZShpKTthLmxlbmd0aCYmYVswXS5jb2x1bW49PT1lJiZhLnNoaWZ0KCk7Y29uc3QgbD1sQWUoKGcsRSxPPVtdKT0+e2NvbnN0IFo9bmV3IHIyZSh0aGlzLmhvdCwhMSksZWU9W10u'@; put 'Y29uY2F0KGcsTyk7Wi5pbXBvcnRBbGxDb25kaXRpb25zKGVlKTtjb25zdCB2ZT10aGlzLmNvbHVtbkRhdGFGYWN0b3J5KE51bWJlcihFKSk7bGV0IE1lO01lPVouaXNFbXB0eSgpP3ZlOm5ldyAkSGUoWix0aGlzLmNvbHVtbkRhdGFGYWN0b3J5KS5maWx0ZXIoKSxNZT1fYyhNZSxXZT0+V2Uu'@; put 'bWV0YS52aXN1YWxSb3cpO2NvbnN0IEhlPUxOKE1lKTtyZXR1cm4gWi5kZXN0cm95KCksSHYodmUsV2U9PkhlKFdlLm1ldGEudmlzdWFsUm93KSl9KShvKSx1PVsuLi50aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0Q29uZGl0aW9ucyhlKV07dGhpcy5ydW5Mb2NhbEhvb2tzKCJ1cGRhdGUi'@; put 'LHtlZGl0ZWRDb25kaXRpb25TdGFjazp7Y29sdW1uOmUsY29uZGl0aW9uczp1fSxkZXBlbmRlbnRDb25kaXRpb25TdGFja3M6YSxmaWx0ZXJlZFJvd3NGYWN0b3J5OmwsY29uZGl0aW9uQXJnc0NoYW5nZTp0fSl9ZGVzdHJveSgpe3RoaXMuY2xlYXJMb2NhbEhvb2tzKCksYWModGhpcywoZSx0'@; put 'KT0+e3RoaXNbdF09bnVsbH0pfWNvbnN0cnVjdG9yKGUsdCxyPSgpPT5bXSl7bzJlKHRoaXMscUhlKSxvMmUodGhpcyxLSGUpLG8yZSh0aGlzLFhIZSksdGhpcy5jaGFuZ2VzPVtdLHRoaXMuZ3JvdXBpbmc9ITEsdGhpcy5sYXRlc3RFZGl0ZWRDb2x1bW5Qb3NpdGlvbj0tMSx0aGlzLmxhdGVz'@; put 'dE9yZGVyU3RhY2s9W10sdGhpcy5ob3Q9ZSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb249dCx0aGlzLmNvbHVtbkRhdGFGYWN0b3J5PXIsdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlUmVtb3ZlIixpPT5pMmUodGhpcyxxSGUsYVl0KS5jYWxsKHRoaXMsaSkp'@; put 'LHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyUmVtb3ZlIixpPT50aGlzLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKGkpKSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlckFkZCIsaT0+dGhpcy51cGRhdGVTdGF0ZXNBdENvbHVtbihp'@; put 'KSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlQ2xlYW4iLCgpPT5pMmUodGhpcyxLSGUsc1l0KS5jYWxsKHRoaXMpKSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlckNsZWFuIiwoKT0+aTJlKHRoaXMsWEhlLGxZdCkuY2Fs'@; put 'bCh0aGlzKSl9fWZ1bmN0aW9uIGFZdChuKXt0aGlzLmxhdGVzdEVkaXRlZENvbHVtblBvc2l0aW9uPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb2x1bW5TdGFja1Bvc2l0aW9uKG4pfWZ1bmN0aW9uIHNZdCgpe3RoaXMubGF0ZXN0T3JkZXJTdGFjaz10aGlzLmNvbmRpdGlvbkNvbGxl'@; put 'Y3Rpb24uZ2V0RmlsdGVyZWRDb2x1bW5zKCl9ZnVuY3Rpb24gbFl0KCl7WG4odGhpcy5sYXRlc3RPcmRlclN0YWNrLG49Pnt0aGlzLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKG4pfSl9WWwoUUhlLF9oKTtjb25zdCBjWXQ9UUhlLEdOPSJmaWx0ZXJzIjtmdW5jdGlvbiBKSGUobixlKXtpZihlLmhh'@; put 'cyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGVWZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBw'@; put 'cml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBNdShuLGUpe3JldHVybiBmdW5jdGlvbiBoWXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGVWZShuLGUsImdldCIpKX1mdW5jdGlvbiAkMyhuLGUsdCl7Skhl'@; put 'KG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBTMShuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGZZdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBm'@; put 'aWVsZCIpO2UudmFsdWU9dH19KG4sZVZlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBxZihuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBsQyhu'@; put 'LGUpe0pIZShuLGUpLGUuYWRkKG4pfWNvbnN0IGEyZT0iZmlsdGVycyIsdFZlPWEyZTt2YXIgeF89bmV3IFdlYWtNYXAsV0c9bmV3IFdlYWtNYXAsUzY9bmV3IFdlYWtNYXAsWUc9bmV3IFdlYWtNYXAsVzc9bmV3IFdlYWtNYXAsZng9bmV3IFdlYWtTZXQsczJlPW5ldyBXZWFrU2V0LGwyZT1u'@; put 'ZXcgV2Vha1NldCxjMmU9bmV3IFdlYWtNYXAsdTJlPW5ldyBXZWFrTWFwLGQyZT1uZXcgV2Vha01hcCxoMmU9bmV3IFdlYWtNYXAsZjJlPW5ldyBXZWFrTWFwLHAyZT1uZXcgV2Vha01hcCxnMmU9bmV3IFdlYWtNYXAsbTJlPW5ldyBXZWFrTWFwLHYyZT1uZXcgV2Vha1NldCxuVmU9bmV3IFdl'@; put 'YWtTZXQsXzJlPW5ldyBXZWFrU2V0LHkyZT1uZXcgV2Vha01hcCxyVmU9bmV3IFdlYWtTZXQ7Y2xhc3MgZ1l0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIGEyZX1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAyNTB9c3RhdGljIGdldCBERUZB'@; put 'VUxUX1NFVFRJTkdTKCl7cmV0dXJue3NlYXJjaE1vZGU6InNob3cifX1zdGF0aWMgZ2V0IFNFVFRJTkdTX1ZBTElEQVRPUlMoKXtyZXR1cm57c2VhcmNoTW9kZTplPT4ic3RyaW5nIj09dHlwZW9mIGUmJlsic2hvdyIsImFwcGx5Il0uaW5jbHVkZXMoZSl9fXN0YXRpYyBnZXQgUExVR0lOX0RF'@; put 'UFMoKXtyZXR1cm5bInBsdWdpbjpEcm9wZG93bk1lbnUiLCJwbHVnaW46SGlkZGVuUm93cyIsImNlbGwtdHlwZTpjaGVja2JveCJdfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVthMmVdfWVuYWJsZVBsdWdpbigpe2lmKHRoaXMuZW5hYmxlZClyZXR1cm47UzEo'@; put 'dGhpcyxXNywhMD09PXRoaXMuaG90LnJ1bkhvb2tzKCJoYXNFeHRlcm5hbERhdGFTb3VyY2UiKSksdGhpcy5maWx0ZXJzUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWU/PyIiLG5ldyBhVCksdGhpcy5kcm9wZG93bk1lbnVQbHVnaW49'@; put 'dGhpcy5ob3QuZ2V0UGx1Z2luKCJkcm9wZG93bk1lbnUiKTtjb25zdCBlPXRoaXMuaG90LmdldFNldHRpbmdzKCkuZHJvcGRvd25NZW51LHQ9Im9iamVjdCI9PXR5cGVvZiBlP2UudWlDb250YWluZXI6bnVsbCxyPWhzKHQpP3Q6dGhpcy5ob3Qucm9vdFBvcnRhbEVsZW1lbnQsaT1sPT4obC5h'@; put 'ZGRMb2NhbEhvb2soImFjY2VwdCIsKCk9PnFmKHRoaXMsdjJlLGFWZSkuY2FsbCh0aGlzLCJhY2NlcHQiKSksbC5hZGRMb2NhbEhvb2soImNhbmNlbCIsKCk9PnFmKHRoaXMsdjJlLGFWZSkuY2FsbCh0aGlzLCJjYW5jZWwiKSksbC5hZGRMb2NhbEhvb2soImNoYW5nZSIsdT0+cWYodGhpcyxu'@; put 'VmUsbVl0KS5jYWxsKHRoaXMsbCx1KSksbCksbz0oKT0+YCR7dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShpdWUpfTpgLGE9KCk9PmAke3RoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2Uob3VlKX06YDtpZighdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbiIp'@; put 'KXtjb25zdCBsPW5ldyBKMGUodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfY29uZGl0aW9uIixuYW1lOm8sYWRkU2VwYXJhdG9yOiExLG1lbnVDb250YWluZXI6cn0pO2wuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIiwoKT0+cWYodGhpcyxfMmUsc1ZlKS5jYWxsKHRoaXMpKSx0aGlzLmNvbXBv'@; put 'bmVudHMuc2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIixpKGwpKX1pZih0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfb3BlcmF0b3JzIil8fHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9vcGVyYXRvcnMiLG5ldyBOV3QodGhpcy5ob3Qse2lkOiJmaWx0ZXJfb3BlcmF0b3JzIixuYW1l'@; put 'OiJPcGVyYXRvcnMifSkpLCF0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpKXtjb25zdCBsPW5ldyBKMGUodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfY29uZGl0aW9uMiIsbmFtZToiIixhZGRTZXBhcmF0b3I6ITAsbWVudUNvbnRhaW5lcjpyfSk7bC5hZGRMb2Nh'@; put 'bEhvb2soImFmdGVyQ2xvc2UiLCgpPT5xZih0aGlzLF8yZSxzVmUpLmNhbGwodGhpcykpLHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIixpKGwpKX1pZighdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikpe2NvbnN0IGw9dGhpcy5nZXRTZXR0'@; put 'aW5nKCJzZWFyY2hNb2RlIik7dGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2J5X3ZhbHVlIixpKG5ldyBYV3QodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfdmFsdWUiLG5hbWU6YSxzZWFyY2hNb2RlOmwsaGlkZGVuV2hlbjooKT0+TXUodGhpcyxXNyl9KSkpfWlmKHRoaXMuY29tcG9uZW50'@; put 'cy5nZXQoImZpbHRlcl9hY3Rpb25fYmFyIil8fHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9hY3Rpb25fYmFyIixpKG5ldyBaTih0aGlzLmhvdCx7aWQ6ImZpbHRlcl9hY3Rpb25fYmFyIixuYW1lOiJBY3Rpb24gYmFyIn0pKSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9ufHwodGhpcy5j'@; put 'b25kaXRpb25Db2xsZWN0aW9uPW5ldyByMmUodGhpcy5ob3QpKSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyfHwodGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlcj1uZXcgY1l0KHRoaXMuaG90LHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbixsPT50aGlzLmdldERhdGFNYXBBdENvbHVt'@; put 'bihsKSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5hZGRMb2NhbEhvb2soInVwZGF0ZSIsbD0+cWYodGhpcyxyVmUsdll0KS5jYWxsKHRoaXMsbCkpKSx0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChsPT5sPy5zaG93KCkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcm9wZG93bk1lbnVEZWZh'@; put 'dWx0T3B0aW9ucyIsTXUodGhpcyxtMmUpKSx0aGlzLmFkZEhvb2soImJlZm9yZURyb3Bkb3duTWVudVNob3ciLE11KHRoaXMsZzJlKSksdGhpcy5hZGRIb29rKCJhZnRlckRyb3Bkb3duTWVudVNob3ciLE11KHRoaXMsZjJlKSksdGhpcy5hZGRIb29rKCJhZnRlckRyb3Bkb3duTWVudUhpZGUi'@; put 'LE11KHRoaXMscDJlKSksdGhpcy5hZGRIb29rKCJhZnRlckNoYW5nZSIsTXUodGhpcyxjMmUpKSx0aGlzLmFkZEhvb2soImFmdGVyVXBkYXRlRGF0YSIsTXUodGhpcyx1MmUpKSx0aGlzLmFkZEhvb2soImFmdGVyRGF0YVByb3ZpZGVyRmV0Y2giLE11KHRoaXMsZDJlKSksdGhpcy5hZGRIb29r'@; put 'KCJhZnRlckRhdGFQcm92aWRlckZldGNoRXJyb3IiLE11KHRoaXMsaDJlKSksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5kcm9wZG93bk1lbnUmJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luJiYodGhpcy5kcm9wZG93bk1lbnVQbHVnaW4uZGlzYWJsZVBsdWdpbigpLHRoaXMuZHJvcGRvd25NZW51'@; put 'UGx1Z2luLmVuYWJsZVBsdWdpbigpKSwhTXUodGhpcyx4XykmJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luPy5lbmFibGVkKXtjb25zdCBsPVt7Zm9jdXM6KCk9Pntjb25zdCBnPU11KHRoaXMseF8pO2lmKCFnKXJldHVybjtjb25zdCBFPWcuZ2V0TWVudSgpLE89RS5nZXROYXZpZ2F0b3IoKSxa'@; put 'PWcuZ2V0TGFzdE1lbnVQYWdlKCk7RS5mb2N1cygpLFo+MD9PPy5zZXRDdXJyZW50UGFnZShaKTpPPy50b0ZpcnN0SXRlbSgpfX0sLi4uQXJyYXkuZnJvbSh0aGlzLmNvbXBvbmVudHMpLm1hcCgoWyxnXSk9Pmc/LmdldEVsZW1lbnRzKCk/P1tdKS5mbGF0KCldO1MxKHRoaXMseF8sZnVuY3Rp'@; put 'b24gZFl0KG4sZSl7bGV0IHIsdD0tMTtjb25zdCBpPWZ1bmN0aW9uIHVZdChuKXtyZXR1cm4gQk5lKHtpbml0aWFsUGFnZTowLHNpemU6KCk9Pm4ubGVuZ3RoLG9uSXRlbVNlbGVjdDoodCxyKT0+e2NvbnN0IGk9blt0XTtpZihpIGluc3RhbmNlb2YgWU4pcmV0dXJuIHI7Y29uc3Qgbz1pO2lm'@; put 'KGhzKG8uZWxlbWVudCkmJiFVdihvLmVsZW1lbnQpKXJldHVybiExO2kuZm9jdXMoKX19KX0oZSksbz1PPT4oKT0+e3IuaXNPcGVuZWQoKSYmci5nZXRLZXlib2FyZFNob3J0Y3V0c0N0cmwoKS5saXN0ZW4oR04pLGkuc2V0Q3VycmVudFBhZ2UoZS5pbmRleE9mKE8pKX07ZnVuY3Rpb24gYShP'@; put 'KXtjb25zdCBaPXIuZ2V0S2V5Ym9hcmRTaG9ydGN1dHNDdHJsKCksZWU9Ty5nZXRLZXlib2FyZFNob3J0Y3V0c0N0cmwoKTtpLmNsZWFyKCksZWUuYWRkQ3VzdG9tU2hvcnRjdXRzKFt7a2V5czpbWyJUYWIiXSxbIlNoaWZ0IiwiVGFiIl1dLGZvcndhcmRUb0NvbnRleHQ6Wi5nZXRDb250ZXh0'@; put 'KEdOKSxjYWxsYmFjazooKT0+e08uaXNTdWJNZW51KCkmJk8uY2xvc2UoKSxaLmxpc3RlbihHTil9fV0pLCFPLmlzU3ViTWVudSgpJiZaLmFkZEN1c3RvbVNob3J0Y3V0cyhbe2tleXM6W1siVGFiIl0sWyJTaGlmdCIsIlRhYiJdXSxjYWxsYmFjazp2ZT0+e2NvbnN0IE1lPXIuZ2V0TmF2aWdh'@; put 'dG9yKCk7TWUuZ2V0Q3VycmVudFBhZ2UoKT4tMSYmKHQ9TWUuZ2V0Q3VycmVudFBhZ2UoKSksTWUuY2xlYXIoKSx2ZS5zaGlmdEtleT9pLnRvUHJldmlvdXNJdGVtKCk6aS50b05leHRJdGVtKCl9fSx7a2V5czpbWyJFc2NhcGUiXV0sY2FsbGJhY2s6KCk9PntyLmNsb3NlKCl9fSx7a2V5czpb'@; put 'WyJFbnRlciJdLFsiU3BhY2UiXV0scHJldmVudERlZmF1bHQ6ITEsY2FsbGJhY2s6dmU9Pntjb25zdCBNZT1lW2kuZ2V0Q3VycmVudFBhZ2UoKV07TWUgaW5zdGFuY2VvZiBqTiYmKE1lLm9wZW5PcHRpb25zKCksdmUucHJldmVudERlZmF1bHQoKSksTWUgaW5zdGFuY2VvZiBXTiYmKE1lLmFj'@; put 'dGl2YXRlKCksdmUucHJldmVudERlZmF1bHQoKSksTWUgaW5zdGFuY2VvZiBpZ3x8dmUucHJldmVudERlZmF1bHQoKX19XSxHTil9ZnVuY3Rpb24gdShPKXtPLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3Rpb25DaGFuZ2UiLFo9PntaLmtleS5zdGFydHNXaXRoKCJmaWx0ZXJfIil8fGkuY2xl'@; put 'YXIoKX0pLE8uYWRkTG9jYWxIb29rKCJhZnRlclN1Ym1lbnVPcGVuIixhKSxPLmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIixhKSxyPU99cmV0dXJuIGUuZm9yRWFjaChPPT57TyBpbnN0YW5jZW9mIGlnJiYoTy5hZGRMb2NhbEhvb2soImNsaWNrIixvKE8pKSxPLmFkZExvY2FsSG9vaygiZm9j'@; put 'dXMiLG8oTykpLE8uYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIixvKE8pKSl9KSx1KG4pLHsuLi5pLGxpc3RlbjpmdW5jdGlvbiBsKCl7ci5mb2N1cygpLHIuZ2V0S2V5Ym9hcmRTaG9ydGN1dHNDdHJsKCkubGlzdGVuKEdOKX0sc2V0TWVudTp1LGdldE1lbnU6ZnVuY3Rpb24gZygpe3JldHVy'@; put 'biByfSxnZXRMYXN0TWVudVBhZ2U6ZnVuY3Rpb24gRSgpe3JldHVybiB0fX19KHRoaXMuZHJvcGRvd25NZW51UGx1Z2luLm1lbnUsbCkpO2NvbnN0IHU9Zz0+e011KHRoaXMseF8pPy5saXN0ZW4oKSxnLnByZXZlbnREZWZhdWx0KCksaHcoZy5rZXlDb2RlLCJUQUIiKSYmKGcuc2hpZnRLZXk/'@; put 'TXUodGhpcyx4Xyk/LnRvUHJldmlvdXNJdGVtKCk6TXUodGhpcyx4Xyk/LnRvTmV4dEl0ZW0oKSl9O3RoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV92YWx1ZSIpPy5hZGRMb2NhbEhvb2soImxpc3RUYWJLZXlkb3duIix1KSx0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29u'@; put 'ZGl0aW9uIik/LmFkZExvY2FsSG9vaygic2VsZWN0VGFiS2V5ZG93biIsdSl9dGhpcy5yZWdpc3RlclNob3J0Y3V0cygpLHN1cGVyLmVuYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2lu'@; put 'KCl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZCYmKHRoaXMuZHJvcGRvd25NZW51UGx1Z2luPy5lbmFibGVkJiZ0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51Py5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmNvbXBvbmVudHMuZm9yRWFjaCgoZSx0KT0+e2U/LmRlc3Ryb3koKSx0aGlz'@; put 'LmNvbXBvbmVudHMuc2V0KHQsbnVsbCl9KSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24/LmRlc3Ryb3koKSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb249bnVsbCx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZT8/IiIpKSx0aGlzLnVucmVnaXN0'@; put 'ZXJTaG9ydGN1dHMoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9cmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIik/LmFkZFNob3J0Y3V0KHtrZXlzOltbIkFsdCIsIkEiXV0sc3RvcFByb3BhZ2F0aW9uOiEwLGNhbGxiYWNr'@; put 'OigpPT57Y29uc3QgZT10aGlzLmhvdC5nZXRTZWxlY3RlZCgpO3RoaXMuY2xlYXJDb25kaXRpb25zKCksdGhpcy5maWx0ZXIoKSxlJiZ0aGlzLmhvdC5zZWxlY3RDZWxscyhlKX0sZ3JvdXA6dFZlfSl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigp'@; put 'LmdldENvbnRleHQoImdyaWQiKT8ucmVtb3ZlU2hvcnRjdXRzQnlHcm91cCh0VmUpfWFkZENvbmRpdGlvbihlLHQscixpPUQ0KXtpZih0PT09Q18mJk11KHRoaXMsVzcpKXJldHVybjtjb25zdCBvPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSk7dGhpcy5jb25kaXRpb25Db2xsZWN0aW9u'@; put 'Py5hZGRDb25kaXRpb24obyx7Y29tbWFuZDp7a2V5OnR9LGFyZ3M6cn0saSl9cmVtb3ZlQ29uZGl0aW9ucyhlKXtjb25zdCB0PXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSk7dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPy5yZW1vdmVDb25kaXRpb25zKHQpfWNsZWFyQ29uZGl0aW9ucyhl'@; put 'KXtpZih2b2lkIDA9PT1lKXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj8uY2xlYW4oKTtlbHNle2NvbnN0IHQ9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihlKTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24/LnJlbW92ZUNvbmRpdGlvbnModCl9fWltcG9ydENvbmRpdGlvbnMoZSl7dGhpcy5j'@; put 'b25kaXRpb25Db2xsZWN0aW9uPy5pbXBvcnRBbGxDb25kaXRpb25zKGUpfWV4cG9ydENvbmRpdGlvbnMoKXtyZXR1cm4gdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPy5leHBvcnRBbGxDb25kaXRpb25zKCk/P1tdfWZpbHRlcigpe2NvbnN0e25hdmlnYWJsZUhlYWRlcnM6ZX09dGhpcy5ob3Qu'@; put 'Z2V0U2V0dGluZ3MoKSx0PSF0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24/LmlzRW1wdHkoKSxyPXRoaXMuZXhwb3J0Q29uZGl0aW9ucygpO011KHRoaXMsVzcpJiZTMSh0aGlzLFlHLEFkKE11KHRoaXMsUzYpKSk7Y29uc3QgaT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRmlsdGVyIixyLE11'@; put 'KHRoaXMsUzYpKTtpZighMSE9PWkmJnQpe2NvbnN0IG89W10sbD1fYyh0aGlzLl9jcmVhdGVEYXRhRmlsdGVyKCkuZmlsdGVyKCksZz0+Zy5tZXRhLnJvdyksdT1MTihsKTt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e3RoaXMuZmlsdGVyc1Jvd3NNYXA/LmNsZWFyKCksVmEodGhpcy5o'@; put 'b3QuY291bnRTb3VyY2VSb3dzKCktMSxnPT57dShnKXx8by5wdXNoKGcpfSksWG4obyxnPT57dGhpcy5maWx0ZXJzUm93c01hcD8uc2V0VmFsdWVBdEluZGV4KGcsITApfSl9LCEwKSwhZSYmIWwubGVuZ3RoJiZ0aGlzLmhvdC5kZXNlbGVjdENlbGwoKSxTMSh0aGlzLFM2LHRoaXMuZXhwb3J0'@; put 'Q29uZGl0aW9ucygpKX1lbHNlITE9PT1pfHx0P011KHRoaXMsVzcpP1MxKHRoaXMsUzYsdGhpcy5leHBvcnRDb25kaXRpb25zKCkpOnRoaXMuaW1wb3J0Q29uZGl0aW9ucyhNdSh0aGlzLFM2KSk6KFMxKHRoaXMsUzYsdGhpcy5leHBvcnRDb25kaXRpb25zKCkpLHRoaXMuZmlsdGVyc1Jvd3NN'@; put 'YXA/LmNsZWFyKCkpO2lmKHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkKCkpe2NvbnN0IG89dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpPy5oaWdobGlnaHQuY29sO251bGwhPW8mJnRoaXMuaG90LnNlbGVjdENlbGwoZT8tMTowLG8pfSExIT09aSYmKHRoaXMuaG90LnJ1'@; put 'bkhvb2tzKCJhZnRlckZpbHRlciIsciksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlzLmhvdC5yZW5kZXIoKSl9Z2V0U2VsZWN0ZWRDb2x1bW4oKXtjb25zdCBlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaGlnaGxpZ2h0O3JldHVybiBlJiZudWxs'@; put 'IT09ZS5jb2w/e3Zpc3VhbEluZGV4OmUuY29sLHBoeXNpY2FsSW5kZXg6dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihlLmNvbCl9Om51bGx9Z2V0RGF0YU1hcEF0Q29sdW1uKGUpe2NvbnN0IHQ9dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCkscj10aGlzLmhvdC50b1Zpc3VhbENvbHVtbihl'@; put 'KSxpPVtdO2ZvcihsZXQgbz0wO288dDtvKyspe2NvbnN0IGE9dGhpcy5ob3QuX2dldE1ldGFNYW5hZ2VyKCkuZ2V0Q2VsbE1ldGEobyxlLHt2aXN1YWxSb3c6byx2aXN1YWxDb2x1bW46ZSxza2lwTWV0YUV4dGVuc2lvbjohMH0pO2xldCBsPUtZKHRoaXMuaG90LmdldFNvdXJjZURhdGFBdENl'@; put 'bGwobyxyKSxhKTtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlEYXRhIikpe2NvbnN0IHU9VmYobCk7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeURhdGEiLG8sZSx1LCJnZXQiKSx1LmlzVG91Y2hlZCgpJiYobD11LnZhbHVlKX1pLnB1c2goe21ldGE6YSx2YWx1ZTpZMGUobCl9KX1yZXR1'@; put 'cm4gaX11cGRhdGVWYWx1ZUNvbXBvbmVudENvbmRpdGlvbihlKXtjb25zdCB0PXRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGUpLGE9WjBlKHRoaXMuaG90LmdldERhdGFBdENvbCh0KSxlMmUodGhpcy5ob3QuY291bnRSb3dzKCk+MD90aGlzLmhvdC5nZXRDZWxsTWV0YSgwLHQpOm51bGwpKTt0'@; put 'aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyPy51cGRhdGVTdGF0ZXNBdENvbHVtbihlLGEpfXJlc3RvcmVDb21wb25lbnRzKGUpe2NvbnN0IHQ9dGhpcy5nZXRTZWxlY3RlZENvbHVtbigpPy5waHlzaWNhbEluZGV4Pz8tMTtlLmZvckVhY2gocj0+e3IuaXNIaWRkZW4oKXx8ci5yZXN0b3Jl'@; put 'U3RhdGUodCl9KSx0aGlzLnVwZGF0ZURlcGVuZGVudENvbXBvbmVudHNWaXNpYmlsaXR5KCl9Z2V0T3BlcmF0aW9uQmFzZWRPbkFyZ3VtZW50cyhlLHQscixpKXtsZXQgbz1lO2NvbnN0IGE9dC5jb21tYW5kPy5rZXksbD1yLmNvbW1hbmQ/LmtleSx1PWkuY29tbWFuZD8ua2V5O3JldHVybiBv'@; put 'PT09UEcmJmEhPT1iaCYmbCE9PWJoJiZ1IT09Ymg/bz0kMGU6dSE9PWJoJiYoYT09PWJofHxsPT09YmgpJiYobz1ENCksb31zZXRMaXN0ZW5pbmdEcm9wZG93bk1lbnUoKXt0aGlzLmRyb3Bkb3duTWVudVBsdWdpbiYmdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4uc2V0TGlzdGVuaW5nKCl9dXBk'@; put 'YXRlRGVwZW5kZW50Q29tcG9uZW50c1Zpc2liaWxpdHkoKXtjb25zdCBlPXFmKHRoaXMsZngsJE4pLmNhbGwodGhpcywiZmlsdGVyX2J5X2NvbmRpdGlvbiIpLHQ9e2NvbW1hbmQ6e2tleTpiaH19LGk9KGU/LmdldFN0YXRlKCk/P3QpLmNvbW1hbmQsbz1bdGhpcy5jb21wb25lbnRzLmdldCgi'@; put 'ZmlsdGVyX2J5X2NvbmRpdGlvbjIiKSx0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfb3BlcmF0b3JzIildLmZpbHRlcihhPT5udWxsIT1hKTtpPy5zaG93T3BlcmF0b3JzP3RoaXMuc2hvd0NvbXBvbmVudHMoLi4ubyk6dGhpcy5oaWRlQ29tcG9uZW50cyguLi5vKX1fY3JlYXRlRGF0YUZp'@; put 'bHRlcihlPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbil7cmV0dXJuIGV8fChlPW5ldyByMmUodGhpcy5ob3QsITEpKSxuZXcgJEhlKGUsdD0+dGhpcy5nZXREYXRhTWFwQXRDb2x1bW4odCkpfWdldEluZGV4ZXNPZkNvbXBvbmVudHMoLi4uZSl7Y29uc3QgdD10aGlzLmRyb3Bkb3duTWVudVBs'@; put 'dWdpbj8ubWVudTtyZXR1cm4gdD9lLm1hcChyPT50LmdldEl0ZW1Qb3NpdGlvbkJ5S2V5KFN0cmluZyhyLmdldE1lbnVJdGVtRGVzY3JpcHRvcigpLmtleSkpKS5maWx0ZXIocj0+LTEhPT1yKTpbXX1jaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eShlPSEwLC4uLnQpe2lmKCF0aGlzLmRyb3Bk'@; put 'b3duTWVudVBsdWdpbilyZXR1cm47Y29uc3Qgcj10aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51O2lmKCFyKXJldHVybjtjb25zdCBpPXIuaG90TWVudTtpZighaSlyZXR1cm47Y29uc3Qgbz1pLmdldFBsdWdpbigiaGlkZGVuUm93cyIpLGE9dGhpcy5nZXRJbmRleGVzT2ZDb21wb25lbnRz'@; put 'KC4uLnQpO2U/by5zaG93Um93cyhhKTpvLmhpZGVSb3dzKGEpLGkucmVuZGVyKCl9aGlkZUNvbXBvbmVudHMoLi4uZSl7dGhpcy5jaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eSghMSwuLi5lKX1zaG93Q29tcG9uZW50cyguLi5lKXt0aGlzLmNoYW5nZUNvbXBvbmVudHNWaXNpYmlsaXR5KCEw'@; put 'LC4uLmUpfWRlc3Ryb3koKXt0aGlzLmVuYWJsZWQmJih0aGlzLmNvbXBvbmVudHMuZm9yRWFjaCgoZSx0KT0+e251bGwhPT1lJiYoZS5kZXN0cm95KCksdGhpcy5jb21wb25lbnRzLnNldCh0LG51bGwpKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj8uZGVzdHJveSgpLHRoaXMuY29uZGl0'@; put 'aW9uVXBkYXRlT2JzZXJ2ZXI/LmRlc3Ryb3koKSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZT8/IiIpKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksbEModGhpcyxmeCksbEModGhpcyxzMmUpLGxDKHRoaXMsbDJl'@; put 'KSxsQyh0aGlzLHYyZSksbEModGhpcyxuVmUpLGxDKHRoaXMsXzJlKSxsQyh0aGlzLHJWZSksJDModGhpcyx4Xyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJDModGhpcyxXRyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJDModGhpcyxTNix7d3JpdGFibGU6ITAsdmFsdWU6dm9p'@; put 'ZCAwfSksJDModGhpcyxZRyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJDModGhpcyxXNyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJDModGhpcyxjMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLCQzKHRoaXMsdTJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSwk'@; put 'Myh0aGlzLGQyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJDModGhpcyxoMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLCQzKHRoaXMsZjJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSwkMyh0aGlzLHAyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksJDModGhp'@; put 'cyxnMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLCQzKHRoaXMsbTJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSwkMyh0aGlzLHkyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5kcm9wZG93bk1lbnVQbHVnaW49bnVsbCx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rp'@; put 'b249bnVsbCx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyPW51bGwsdGhpcy5jb21wb25lbnRzPW5ldyBNYXAoW1siZmlsdGVyX2J5X2NvbmRpdGlvbiIsbnVsbF0sWyJmaWx0ZXJfb3BlcmF0b3JzIixudWxsXSxbImZpbHRlcl9ieV9jb25kaXRpb24yIixudWxsXSxbImZpbHRlcl9ieV92'@; put 'YWx1ZSIsbnVsbF0sWyJmaWx0ZXJfYWN0aW9uX2JhciIsbnVsbF1dKSx0aGlzLmZpbHRlcnNSb3dzTWFwPW51bGwsUzEodGhpcyxXRyxuZXcgV2Vha1NldCksUzEodGhpcyxTNixbXSksUzEodGhpcyxZRyxbXSksUzEodGhpcyxXNywhMSksUzEodGhpcyxjMmUsdD0+e3QmJlhuKHQscj0+e2Nv'@; put 'bnN0WyxpXT1yLG89dGhpcy5ob3QucHJvcFRvQ29sKGkpLGE9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihvKTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24/Lmhhc0NvbmRpdGlvbnMoYSkmJnRoaXMudXBkYXRlVmFsdWVDb21wb25lbnRDb25kaXRpb24oYSl9KX0pLFMxKHRoaXMsdTJlLCh0'@; put 'LHIpPT57aWYocnx8TXUodGhpcyxXNyl8fCF0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24pcmV0dXJuO2NvbnN0IGk9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPy5nZXRGaWx0ZXJlZENvbHVtbnMoKT8/W107MCE9PWkubGVuZ3RoJiZYbihpLG89Pnt0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2Vy'@; put 'dmVyPy51cGRhdGVTdGF0ZXNBdENvbHVtbihvKX0pfSksUzEodGhpcyxkMmUsdD0+e3RoaXMuaW1wb3J0Q29uZGl0aW9ucyh0Py5maWx0ZXJzQ29uZGl0aW9uc1N0YWNrPz9bXSl9KSxTMSh0aGlzLGgyZSwoKT0+e3RoaXMuaW1wb3J0Q29uZGl0aW9ucyhNdSh0aGlzLFlHKSl9KSxTMSh0aGlz'@; put 'LGYyZSwoKT0+e2NvbnN0IHQ9dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4/Lm1lbnU7dCYmKHRoaXMucmVzdG9yZUNvbXBvbmVudHMoQXJyYXkuZnJvbSh0aGlzLmNvbXBvbmVudHMudmFsdWVzKCkpLmZpbHRlcihyPT5udWxsIT09cikpLHQudXBkYXRlTWVudURpbWVuc2lvbnMoKSl9KSxTMSh0'@; put 'aGlzLHAyZSwoKT0+e3RoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24iKT8uZ2V0U2VsZWN0RWxlbWVudCgpPy5jbG9zZU9wdGlvbnMoKSx0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpPy5nZXRTZWxlY3RFbGVtZW50KCk/LmNsb3NlT3B0'@; put 'aW9ucygpfSksUzEodGhpcyxnMmUsKCk9Pntjb25zdCB0PXRoaXMuZHJvcGRvd25NZW51UGx1Z2luPy5tZW51O3QmJihNdSh0aGlzLFdHKS5oYXModCl8fE11KHRoaXMseF8pPy5zZXRNZW51KHQpLE11KHRoaXMsV0cpLmFkZCh0KSl9KSxTMSh0aGlzLG0yZSx0PT57dC5pdGVtcy5wdXNoKHtu'@; put 'YW1lOnZzfSksdGhpcy5jb21wb25lbnRzLmZvckVhY2gocj0+e3ImJnQuaXRlbXMucHVzaChyLmdldE1lbnVJdGVtRGVzY3JpcHRvcigpKX0pfSksUzEodGhpcyx5MmUsKHQscik9Pntjb25zdCBpPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4odCk7dGhpcy5lbmFibGVkJiZ0aGlzLmNvbmRp'@; put 'dGlvbkNvbGxlY3Rpb24/Lmhhc0NvbmRpdGlvbnMoaSkmJmN3KHIpP1lyKHIsImh0RmlsdGVyc0FjdGl2ZSIpOmtvKHIsImh0RmlsdGVyc0FjdGl2ZSIpfSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLE11KHRoaXMseTJlKSl9fWZ1bmN0aW9uICROKG4pe3JldHVybiB0'@; put 'aGlzLmNvbXBvbmVudHMuZ2V0KG4pPz9udWxsfWZ1bmN0aW9uIGlWZSgpe3JldHVybiB0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfb3BlcmF0b3JzIik/P251bGx9ZnVuY3Rpb24gb1ZlKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV92YWx1ZSIpPz9udWxsfWZ1'@; put 'bmN0aW9uIGFWZShuKXtpZigiYWNjZXB0Ij09PW4pe2NvbnN0IGU9dGhpcy5nZXRTZWxlY3RlZENvbHVtbigpO2lmKG51bGw9PT1lKXJldHVybiB2b2lkIHRoaXMuZHJvcGRvd25NZW51UGx1Z2luPy5jbG9zZSgpO2NvbnN0e3BoeXNpY2FsSW5kZXg6dH09ZSxyPXtjb21tYW5kOntrZXk6Ymh9'@; put 'LGFyZ3M6W119LGk9cWYodGhpcyxmeCwkTikuY2FsbCh0aGlzLCJmaWx0ZXJfYnlfY29uZGl0aW9uIik/LmdldFN0YXRlKCk/P3Isbz1xZih0aGlzLGZ4LCROKS5jYWxsKHRoaXMsImZpbHRlcl9ieV9jb25kaXRpb24yIik/LmdldFN0YXRlKCk/P3IsYT1xZih0aGlzLGwyZSxvVmUpLmNhbGwo'@; put 'dGhpcyk/LmdldFN0YXRlKCk/P3IsbD10aGlzLmdldE9wZXJhdGlvbkJhc2VkT25Bcmd1bWVudHMocWYodGhpcyxzMmUsaVZlKS5jYWxsKHRoaXMpPy5nZXRBY3RpdmVPcGVyYXRpb25JZCgpPz9ENCxpLG8sYSk7dGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlcj8uZ3JvdXBDaGFuZ2VzKCk7'@; put 'bGV0IHU9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPy5nZXRDb2x1bW5TdGFja1Bvc2l0aW9uKHQpOyh2b2lkIDA9PT11fHwtMT09PXUpJiYodT12b2lkIDApLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj8ucmVtb3ZlQ29uZGl0aW9ucyh0KTtjb25zdCBnPWkuY29tbWFuZD8ua2V5LEU9by5j'@; put 'b21tYW5kPy5rZXksTz1hLmNvbW1hbmQ/LmtleTtnIT09YmgmJih0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24/LmFkZENvbmRpdGlvbih0LGksbCx1KSxFIT09YmgmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj8uYWRkQ29uZGl0aW9uKHQsbyxsLHUpKSxPIT09YmgmJiFNdSh0aGlzLFc3KSYm'@; put 'dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPy5hZGRDb25kaXRpb24odCxhLGwsdSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlcj8uZmx1c2goKSx0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChaPT5aPy5zYXZlU3RhdGUodCkpLHRoaXMuZmlsdGVyKCl9dGhpcy5kcm9wZG93bk1lbnVQbHVn'@; put 'aW4/LmNsb3NlKCl9ZnVuY3Rpb24gbVl0KG4sZSl7Y29uc3QgdD10aGlzLmRyb3Bkb3duTWVudVBsdWdpbj8ubWVudTt0aGlzLnVwZGF0ZURlcGVuZGVudENvbXBvbmVudHNWaXNpYmlsaXR5KCksbi5jb25zdHJ1Y3Rvcj09PUowZSYmIWUuaW5wdXRzQ291bnQmJnRoaXMuc2V0TGlzdGVuaW5n'@; put 'RHJvcGRvd25NZW51KCksdD8udXBkYXRlTWVudURpbWVuc2lvbnMoKX1mdW5jdGlvbiBzVmUoKXt0aGlzLnNldExpc3RlbmluZ0Ryb3Bkb3duTWVudSgpfWZ1bmN0aW9uIHZZdChuKXtpZighdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4/LmVuYWJsZWQpcmV0dXJuO2NvbnN0IGU9bi5lZGl0ZWRD'@; put 'b25kaXRpb25TdGFjayx0PWUuY29uZGl0aW9ucyxyPWUuY29sdW1uLGk9bi5jb25kaXRpb25BcmdzQ2hhbmdlO0FycmF5LmlzQXJyYXkoaSkmJlMxKHRoaXMsUzYsTXUodGhpcyxTNikubWFwKGw9PihsLmNvbHVtbj09PXImJnQubGVuZ3RoPjAmJmwuY29uZGl0aW9ucy5mb3JFYWNoKHU9Pnsi'@; put 'YnlfdmFsdWUiPT09dS5uYW1lJiYodS5hcmdzPVtbLi4uaV1dKX0pLGwpKSk7Y29uc3Qgbz10LmZpbHRlcihsPT5sLm5hbWU9PT1DXyksYT10LmZpbHRlcihsPT5sLm5hbWUhPT1DXyk7aWYoby5sZW5ndGg+PTJ8fGEubGVuZ3RoPj0zKUhhKHljYFRoZSBmaWx0ZXIgY29uZGl0aW9ucyBoYXZl'@; put 'IGJlZW4gYXBwbGllZCBwcm9wZXJseSwgYnV0IGNvdWxkbuKAmXQgYmUgZGlzcGxheWVkIHZpc3VhbGx5Llx4MjAKICAgICAgICBUaGUgZHJvcGRvd24gbWVudSBzdXBwb3J0cyBhdCBtb3N0IDIgcmVndWxhciBjb25kaXRpb25zIGFuZCAxICdmaWx0ZXIgYnkgdmFsdWUnIGNvbmRpdGlvbiBw'@; put 'ZXIgY29sdW1uLFx4MjAKICAgICAgICBidXQgbW9yZSB3ZXJlIHByb3ZpZGVkLiBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi5gKTtlbHNle2NvbnN0IGw9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPy5nZXRPcGVyYXRpb24ocik7cWYodGhpcyxmeCwkTikuY2FsbCh0'@; put 'aGlzLCJmaWx0ZXJfYnlfY29uZGl0aW9uIik/LnVwZGF0ZVN0YXRlKGFbMF0scikscWYodGhpcyxmeCwkTikuY2FsbCh0aGlzLCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpPy51cGRhdGVTdGF0ZShhWzFdLHIpLHFmKHRoaXMsczJlLGlWZSkuY2FsbCh0aGlzKT8udXBkYXRlU3RhdGUobD8/RDQs'@; put 'cikscWYodGhpcyxsMmUsb1ZlKS5jYWxsKHRoaXMpPy51cGRhdGVTdGF0ZShuKX19Y29uc3QgbFZlPSJpbnRlcm5hbC11c2UtaW4taGFuZHNvbnRhYmxlIixiMmU9e2xpY2Vuc2VLZXk6bFZlLHVzZUFycmF5QXJpdGhtZXRpYzohMCx1c2VDb2x1bW5JbmRleDohMSx1c2VTdGF0czohMSxldmFs'@; put 'dWF0ZU51bGxUb1plcm86ITAscHJlY2lzaW9uRXBzaWxvbjoxZS0xMyxwcmVjaXNpb25Sb3VuZGluZzoxNCxzbWFydFJvdW5kaW5nOiEwLGxlYXBZZWFyMTkwMDohMSxudWxsRGF0ZTp7eWVhcjoxODk5LG1vbnRoOjEyLGRheTozMH0sbnVsbFllYXI6MzAsZGF0ZUZvcm1hdHM6WyJZWVlZLU1N'@; put 'LUREIl0sdGltZUZvcm1hdHM6WyJoaDptbSIsImhoOm1tOnNzIiwiaGg6bW06c3Muc3NzIl0sbWF0Y2hXaG9sZUNlbGw6ITAsdXNlUmVndWxhckV4cHJlc3Npb25zOiExLHVzZVdpbGRjYXJkczohMCxmdW5jdGlvbkFyZ1NlcGFyYXRvcjoiLCIsdGhvdXNhbmRTZXBhcmF0b3I6IiIsZGVjaW1h'@; put 'bFNlcGFyYXRvcjoiLiIsbGFuZ3VhZ2U6ImVuR0IifTtmdW5jdGlvbiBjVmUobil7Y29uc3QgZT1uW1EyXTtyZXR1cm57bWF4Q29sdW1uczpuLm1heENvbHVtbnMsbWF4Um93czpuLm1heFJvd3MsbGFuZ3VhZ2U6ZT8ubGFuZ3VhZ2U/LmxhbmdDb2RlfX1mdW5jdGlvbiB1VmUobil7cmV0dXJu'@; put 'IE9iamVjdC5rZXlzKG4pLnJlZHVjZSgoZSx0KT0+KCJoeXBlcmZvcm11bGEiIT09dCYmKGVbdF09blt0XSksZSkse30pfWZ1bmN0aW9uIFpHKCl7Y29uc3Qgbj0iZW5naW5lX3JlbGF0aW9uc2hpcCIsZT16cChRMik7cmV0dXJuIGUuaGFzSXRlbShuKXx8ZS5yZWdpc3RlcihuLG5ldyBNYXAp'@; put 'LGUuZ2V0SXRlbShuKX1mdW5jdGlvbiB3MmUoKXtjb25zdCBuPSJzaGFyZWRfZW5naW5lX3VzYWdlIixlPXpwKFEyKTtyZXR1cm4gZS5oYXNJdGVtKG4pfHxlLnJlZ2lzdGVyKG4sbmV3IE1hcCksZS5nZXRJdGVtKG4pfWZ1bmN0aW9uIGRWZShuLGUsdCl7Y29uc3Qgcj1lW1EyXSxpPWZ1bmN0'@; put 'aW9uIF9ZdChuKXtjb25zdCB0PW5bUTJdPy5lbmdpbmUscj11VmUodD8uaHlwZXJmb3JtdWxhP3Q6e30pLGk9Y1ZlKG4pO3JldHVybnsuLi5iMmUsLi4uciwuLi5pfX0oZSksbz1aRygpLGE9dzJlKCk7KGZ1bmN0aW9uIENZdChuLGUpe2UmJmUuZm9yRWFjaCh0PT57Y29uc3R7bmFtZTpyLHBs'@; put 'dWdpbjppLHRyYW5zbGF0aW9uczpvfT10O3RyeXtuLnJlZ2lzdGVyRnVuY3Rpb24ocixpLG8pfWNhdGNoKGEpe0hhKGEgaW5zdGFuY2VvZiBFcnJvcj9hLm1lc3NhZ2U6U3RyaW5nKGEpKX19KX0pKG4sci5mdW5jdGlvbnMpLGZ1bmN0aW9uIFNZdChuLGUpe2lmKGUpe2NvbnN0e2xhbmdDb2Rl'@; put 'OnR9PWU7dHJ5e24ucmVnaXN0ZXJMYW5ndWFnZSh0LGUpfWNhdGNoKHIpe0hhKHIgaW5zdGFuY2VvZiBFcnJvcj9yLm1lc3NhZ2U6U3RyaW5nKHIpKX19fShuLHIubGFuZ3VhZ2UpO2NvbnN0IGw9bi5idWlsZEVtcHR5KGkpO3JldHVybiBvLnNldChsLFt0XSksYS5zZXQobCxbdC5ndWlkXSks'@; put 'ZnVuY3Rpb24gRVl0KG4sZSl7ZSYmKG4uc3VzcGVuZEV2YWx1YXRpb24oKSxlLmZvckVhY2godD0+e2NvbnN0e25hbWU6cixleHByZXNzaW9uOmksc2NvcGU6byxvcHRpb25zOmF9PXQ7dHJ5e24uYWRkTmFtZWRFeHByZXNzaW9uKHIsaSxvLGEpfWNhdGNoKGwpe0hhKGwgaW5zdGFuY2VvZiBF'@; put 'cnJvcj9sLm1lc3NhZ2U6U3RyaW5nKGwpKX19KSxuLnJlc3VtZUV2YWx1YXRpb24oKSl9KGwsci5uYW1lZEV4cHJlc3Npb25zKSxsLm9uKCJzaGVldEFkZGVkIiwoKT0+e2wucmVidWlsZEFuZFJlY2FsY3VsYXRlKCl9KSxsLm9uKCJzaGVldFJlbW92ZWQiLCgpPT57bC5yZWJ1aWxkQW5kUmVj'@; put 'YWxjdWxhdGUoKX0pLGx9ZnVuY3Rpb24gaFZlKG4pe2NvbnN0IGU9WkcoKSx0PTA9PT1lLnNpemU/W106QXJyYXkuZnJvbShlLmdldChuKT8/W10pO3JldHVybiBuZXcgTWFwKHQubWFwKHI9Pntjb25zdCBpPXI7cmV0dXJuW2kuZ2V0UGx1Z2luKCJmb3JtdWxhcyIpLnNoZWV0SWQsaV19KSl9'@; put 'ZnVuY3Rpb24gZlZlKG4sZSl7aWYobil7Y29uc3QgdD1aRygpLHI9dC5nZXQobiksaT13MmUoKSxvPWkuZ2V0KG4pO3ImJnIuaW5jbHVkZXMoZSkmJihyLnNwbGljZShyLmluZGV4T2YoZSksMSksMD09PXIubGVuZ3RoJiZ0LmRlbGV0ZShuKSksbyYmby5pbmNsdWRlcyhlLmd1aWQpJiYoby5z'@; put 'cGxpY2Uoby5pbmRleE9mKGUuZ3VpZCksMSksMD09PW8ubGVuZ3RoJiYoaS5kZWxldGUobiksbi5kZXN0cm95KCkpKX19ZnVuY3Rpb24gQzJlKG4sZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBuJiYiZGF0ZSI9PT1lfWZ1bmN0aW9uIHBWZShuKXtyZXR1cm4geE8obil9ZnVuY3Rpb24gUzJl'@; put 'KG4pe2NvbnN0IHQ9bi1NYXRoLmZsb29yKG4pLHI9TWF0aC5yb3VuZCg4NjQwMCp0KSxpPU1hdGguZmxvb3Ioci8zNjAwKSxvPU1hdGguZmxvb3IociUzNjAwLzYwKSxhPXIlNjAsbD1gJHtTdHJpbmcoaSkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhvKS5wYWRTdGFydCgyLCIwIil9YDty'@; put 'ZXR1cm4gYT4wP2Ake2x9OiR7U3RyaW5nKGEpLnBhZFN0YXJ0KDIsIjAiKX1gOmx9ZnVuY3Rpb24gRTJlKG4pe2NvbnN0IHQ9RGF0ZS5VVEMoMTg5OSwxMSwzMCkrODY0ZTUqbixyPW5ldyBEYXRlKHQpO3JldHVybmAke3IuZ2V0VVRDRnVsbFllYXIoKX0tJHtTdHJpbmcoci5nZXRVVENNb250'@; put 'aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKX0tJHtTdHJpbmcoci5nZXRVVENEYXRlKCkpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uIGdWZShuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9hT2Uobik6bn1mdW5jdGlvbiBNMmUobixlLHQpe2NvbnN0IHI9ZnVuY3Rpb24gUll0KG4sZSl7Y29u'@; put 'c3QgdD1bXTtyZXR1cm4gbi5mb3JFYWNoKHI9Pntjb25zdCBpPXtmcm9tOnIsdG86ZX07dC5mb3JFYWNoKG89PntvLmZyb20+aS5mcm9tJiZvLnRvPD1pLmZyb20mJm8uZnJvbT5vLnRvJiYoaS5mcm9tKz0xKX0pLGkuZnJvbT49ZSYmKGUrPTEpLHQucHVzaChpKX0pLHR9KG4sZnVuY3Rpb24g'@; put 'a1l0KG4sZSx0KXtjb25zdCByPUFycmF5LmZyb20oQXJyYXkodCkua2V5cygpKS5maWx0ZXIoaT0+ITE9PT1uLmluY2x1ZGVzKGkpKTtyZXR1cm4gMD09PWU/cltlXT8/MDpyW2UtMV0rMX0obixlLHQpKTtyZXR1cm4gZnVuY3Rpb24gSVl0KG4pe3JldHVybiBuLmZvckVhY2goKGUsdCk9Pntu'@; put 'LnNsaWNlKHQrMSkuZm9yRWFjaChpPT57aS5mcm9tPmUuZnJvbSYmaS5mcm9tPGkudG8mJihpLmZyb20tPTEpfSl9KSxufShyKX1mdW5jdGlvbiBtVmUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1l'@; put 'bnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHZWZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBJYyhuLGUpe3Jl'@; put 'dHVybiBmdW5jdGlvbiBEWXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLHZWZShuLGUsImdldCIpKX1mdW5jdGlvbiBjQyhuLGUsdCl7bVZlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBPNChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIExZdChuLGUsdCl7aWYo'@; put 'ZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sdlZlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBfVmUobixlLHQpe2lmKCFl'@; put 'LmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9dmFyIHVDPW5ldyBXZWFrTWFwLE40PW5ldyBXZWFrTWFwLEtmPW5ldyBXZWFrTWFwLHFOPW5ldyBXZWFrTWFwLEdHPW5ldyBXZWFrTWFw'@; put 'LFQyZT1uZXcgV2Vha01hcCxLTj1uZXcgV2Vha01hcCx4MmU9bmV3IFdlYWtTZXQ7ZnVuY3Rpb24geVZlKCl7Y29uc3Qgbj1JYyh0aGlzLE40KS5nZXRJbmRleGVzU2VxdWVuY2UoKTtpZihuLmV2ZXJ5KCh1LGcpPT51PT09Zyl8fDA9PT1uLmxlbmd0aClyZXR1cm47Y29uc3QgdD1JYyh0aGlz'@; put 'LEtmKS5nZXRFbmdpbmUoKSxyPUljKHRoaXMsS2YpLmdldFNoZWV0SWQoKTtpZihudWxsPT09dHx8bnVsbD09PXIpcmV0dXJuIHZvaWQgSWModGhpcyxLZikuZ2V0UG9zdHBvbmVBY3Rpb24oKSgoKT0+X1ZlKHRoaXMseDJlLHlWZSkuY2FsbCh0aGlzKSk7Y29uc3QgaT1gc2V0JHtLMChJYyh0'@; put 'aGlzLHVDKSl9T3JkZXJgLG89dC5nZXRTaGVldERpbWVuc2lvbnMociksYT0icm93Ij09PUljKHRoaXMsdUMpP28uaGVpZ2h0Om8ud2lkdGgsbD1BcnJheS5mcm9tKHtsZW5ndGg6bi5sZW5ndGh9LCh1LGcpPT5uLmluZGV4T2YoZykpO2ZvcihsZXQgdT1sLmxlbmd0aDt1PGE7dSs9MSlsLnB1'@; put 'c2godSk7dFtpXShyLGwpfWNvbnN0IGJWZT1jbGFzcyBOWXR7c2V0UmVtb3ZlZEhmSW5kZXhlcyhlKXtyZXR1cm4gTzQodGhpcyxLTixlLm1hcCh0PT57Y29uc3Qgcj1JYyh0aGlzLE40KS5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleCh0KTtyZXR1cm4gdGhpcy5nZXRIZkluZGV4RnJvbVZp'@; put 'c3VhbEluZGV4KHI/Py0xKX0pKSxJYyh0aGlzLEtOKX1nZXRSZW1vdmVkSGZJbmRleGVzKCl7cmV0dXJuIEljKHRoaXMsS04pfWdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZSl7Y29uc3QgdD1JYyh0aGlzLE40KS5nZXRJbmRleGVzU2VxdWVuY2UoKSxyPUljKHRoaXMsTjQpLmdldE5vdFRy'@; put 'aW1tZWRJbmRleGVzKCk7cmV0dXJuIHQuaW5kZXhPZihyW2VdLGUpfWdldFZpc3VhbEluZGV4RnJvbUhmSW5kZXgoZSl7Y29uc3QgdD1JYyh0aGlzLE40KS5nZXRJbmRleGVzU2VxdWVuY2UoKSxyPUljKHRoaXMsTjQpLmdldE5vdFRyaW1tZWRJbmRleGVzKCksaT10W2VdO3JldHVybiB2b2lk'@; put 'IDA9PT1pPy0xOnIuaW5kZXhPZihpKX1zeW5jTW92ZXMoZSl7Y29uc3Qgcj1gbW92ZSR7SzAoSWModGhpcyx1QykpfXNgLGk9SWModGhpcyxLZikuZ2V0RW5naW5lKCk7aSYmaS5iYXRjaCgoKT0+e2UuZm9yRWFjaChvPT57by5mcm9tIT09by50byYmby5mcm9tKzEhPT1vLnRvJiZpW3JdKElj'@; put 'KHRoaXMsS2YpLmdldFNoZWV0SWQoKSxvLmZyb20sMSxvLnRvKX0pfSl9c3RvcmVNb3Zlc0luZm9ybWF0aW9uKGUsdCxyKXshMSE9PXImJihPNCh0aGlzLEdHLGUubWFwKGk9PnRoaXMuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChpKSkpLE80KHRoaXMsVDJlLHRoaXMuZ2V0SGZJbmRleEZy'@; put 'b21WaXN1YWxJbmRleCh0KSkpfWNhbGN1bGF0ZUFuZFN5bmNNb3ZlcyhlLHQpe2lmKEljKHRoaXMsS2YpLmlzUGVyZm9ybWluZ1VuZG9SZWRvKCl8fCExPT09ZXx8ITE9PT10KXJldHVybjtjb25zdCByPU0yZShJYyh0aGlzLEdHKSxJYyh0aGlzLFQyZSk/PzAsSWModGhpcyxONCkuZ2V0TnVt'@; put 'YmVyT2ZJbmRleGVzKCkpO251bGw9PT1JYyh0aGlzLEtmKS5nZXRTaGVldElkKCk/SWModGhpcyxLZikuZ2V0UG9zdHBvbmVBY3Rpb24oKCk9PnRoaXMuc3luY01vdmVzKHIpKTp0aGlzLnN5bmNNb3ZlcyhyKX1nZXRJbmRleGVzQ2hhbmdlU3luY01ldGhvZCgpe2NvbnN0IGU9YHNldCR7SzAo'@; put 'SWModGhpcyx1QykpfU9yZGVyYDtyZXR1cm4gdD0+e2lmKEljKHRoaXMsS2YpLmlzUGVyZm9ybWluZ1VuZG9SZWRvKCkpcmV0dXJuO2NvbnN0IHI9SWModGhpcyxONCkuZ2V0SW5kZXhlc1NlcXVlbmNlKCk7aWYoInVwZGF0ZSI9PT10JiZyLmxlbmd0aD4wKXtjb25zdCBpPUljKHRoaXMscU4p'@; put 'Lm1hcCh1PT5yLmluZGV4T2YodSkpLG89SWModGhpcyxLZikuZ2V0RW5naW5lKCkuZ2V0U2hlZXREaW1lbnNpb25zKEljKHRoaXMsS2YpLmdldFNoZWV0SWQoKSk7bGV0IGE7YT0icm93Ij09PUljKHRoaXMsdUMpP28uaGVpZ2h0Om8ud2lkdGg7Zm9yKGxldCB1PWkubGVuZ3RoO3U8YTt1Kz0x'@; put 'KWkucHVzaCh1KTtJYyh0aGlzLEtmKS5nZXRFbmdpbmUoKVtlXShJYyh0aGlzLEtmKS5nZXRTaGVldElkKCksaSl9TzQodGhpcyxxTixyKX19aW5pdCgpe19WZSh0aGlzLHgyZSx5VmUpLmNhbGwodGhpcyksTzQodGhpcyxxTixJYyh0aGlzLE40KS5nZXRJbmRleGVzU2VxdWVuY2UoKSl9Y29u'@; put 'c3RydWN0b3IoZSx0LHIpeyhmdW5jdGlvbiBPWXQobixlKXttVmUobixlKSxlLmFkZChuKX0pKHRoaXMseDJlKSxjQyh0aGlzLHVDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjQyh0aGlzLE40LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjQyh0aGlzLEtmLHt3cml0YWJsZToh'@; put 'MCx2YWx1ZTp2b2lkIDB9KSxjQyh0aGlzLHFOLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjQyh0aGlzLEdHLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjQyh0aGlzLFQyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksY0ModGhpcyxLTix7d3JpdGFibGU6ITAsdmFsdWU6'@; put 'dm9pZCAwfSksTzQodGhpcyxxTixbXSksTzQodGhpcyxHRyxbXSksTzQodGhpcyxLTixbXSksTzQodGhpcyx1QyxlKSxPNCh0aGlzLE40LHQpLE80KHRoaXMsS2Yscil9fTtmdW5jdGlvbiB3VmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8g'@; put 'Iit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gWTcobixlKXtyZXR1cm4gZnVuY3Rpb24gUFl0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix3VmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gZEMobixl'@; put 'LHQpeyhmdW5jdGlvbiBGWXQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIEY0KG4sZSx0KXtyZXR1cm4g'@; put 'ZnVuY3Rpb24gSFl0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix3VmUobixlLCJzZXQiKSx0KSx0fXZh'@; put 'ciAkRz1uZXcgV2Vha01hcCxxRz1uZXcgV2Vha01hcCxBMmU9bmV3IFdlYWtNYXAsS0c9bmV3IFdlYWtNYXAsWEc9bmV3IFdlYWtNYXAsUUc9bmV3IFdlYWtNYXAsSkc9bmV3IFdlYWtNYXA7Y29uc3QgQll0PWNsYXNzIFZZdHtnZXRGb3JBeGlzKGUpe3JldHVybiBZNyh0aGlzLCJyb3ciPT09'@; put 'ZT8kRzpxRyl9c2V0UGVyZm9ybVVuZG8oZSl7RjQodGhpcyxLRyxlKX1zZXRQZXJmb3JtUmVkbyhlKXtGNCh0aGlzLFhHLGUpfWlzUGVyZm9ybWluZ1VuZG9SZWRvKCl7cmV0dXJuIFk3KHRoaXMsS0cpfHxZNyh0aGlzLFhHKX1nZXRTaGVldElkKCl7cmV0dXJuIFk3KHRoaXMsSkcpfWdldEVu'@; put 'Z2luZSgpe3JldHVybiBZNyh0aGlzLFFHKX1nZXRQb3N0cG9uZUFjdGlvbigpe3JldHVybiBZNyh0aGlzLEEyZSl9c2V0dXBTeW5jRW5kcG9pbnQoZSx0KXtGNCh0aGlzLFFHLGUpLEY0KHRoaXMsSkcsdCksWTcodGhpcywkRykuaW5pdCgpLFk3KHRoaXMscUcpLmluaXQoKX1jb25zdHJ1Y3Rv'@; put 'cihlLHQscil7ZEModGhpcywkRyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZEModGhpcyxxRyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZEModGhpcyxBMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGRDKHRoaXMsS0cse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0p'@; put 'LGRDKHRoaXMsWEcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGRDKHRoaXMsUUcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGRDKHRoaXMsSkcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEY0KHRoaXMsS0csITEpLEY0KHRoaXMsWEcsITEpLEY0KHRoaXMsUUcsbnVsbCks'@; put 'RjQodGhpcyxKRyxudWxsKSxGNCh0aGlzLCRHLG5ldyBiVmUoInJvdyIsZSx0aGlzKSksRjQodGhpcyxxRyxuZXcgYlZlKCJjb2x1bW4iLHQsdGhpcykpLEY0KHRoaXMsQTJlLHIpfX07ZnVuY3Rpb24gQ1ZlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGlu'@; put 'aXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBTVmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1'@; put 'cm4gZS5nZXQobil9ZnVuY3Rpb24gbGMobixlKXtyZXR1cm4gZnVuY3Rpb24gall0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixTVmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gUHUobixlLHQpe0NWZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gSmwobixlLHQp'@; put 'e3JldHVybiBmdW5jdGlvbiBVWXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFNWZShuLGUsInNldCIp'@; put 'LHQpLHR9ZnVuY3Rpb24gcTMobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gZSQobixlKXtDVmUobixlKSxlLmFkZChuKX1mdW5jdGlvbiBrMmUo'@; put 'bil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09bn1mdW5jdGlvbiBFVmUobil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09bn1mdW5jdGlvbiBNVmUobil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09biYmInZhbHVlImluIG59Y29uc3QgUTI9ImZv'@; put 'cm11bGFzIix6WXQ9WyJtYXhSb3dzIiwibWF4Q29sdW1ucyIsImxhbmd1YWdlIl07R28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIiksR28u'@; put 'Z2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyU2hlZXRBZGRlZCIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0UmVtb3ZlZCIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0UmVuYW1lZCIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVy'@; put 'KCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIik7Y29uc3QgcHg9bj0+IlVuZG9SZWRvLnVuZG8iPT09bnx8IlVuZG9SZWRvLnJlZG8iPT09bnx8ImF1dG8iPT09bjt2YXIgRTY9bmV3IFdlYWtNYXAsWE49bmV3IFdlYWtNYXAsVFZlPW5ldyBXZWFrU2V0LFIyZT1uZXcgV2Vha01hcCxJMmU9'@; put 'bmV3IFdlYWtNYXAsRDJlPW5ldyBXZWFrTWFwLEwyZT1uZXcgV2Vha01hcCxPMmU9bmV3IFdlYWtNYXAsTjJlPW5ldyBXZWFrTWFwLGd4PW5ldyBXZWFrTWFwLG14PW5ldyBXZWFrU2V0LHQkPW5ldyBXZWFrU2V0LHZ4PW5ldyBXZWFrU2V0LEYyZT1uZXcgV2Vha01hcCxQMmU9bmV3IFdlYWtN'@; put 'YXAsbiQ9bmV3IFdlYWtNYXAsSDJlPW5ldyBXZWFrTWFwLHIkPW5ldyBXZWFrTWFwLFYyZT1uZXcgV2Vha01hcCxCMmU9bmV3IFdlYWtNYXAsaSQ9bmV3IFdlYWtNYXAsajJlPW5ldyBXZWFrTWFwLFUyZT1uZXcgV2Vha01hcCx6MmU9bmV3IFdlYWtNYXAsVzJlPW5ldyBXZWFrTWFwLFkyZT1u'@; put 'ZXcgV2Vha01hcCxaMmU9bmV3IFdlYWtNYXAsRzJlPW5ldyBXZWFrTWFwLCQyZT1uZXcgV2Vha01hcCxxMmU9bmV3IFdlYWtNYXAsSzJlPW5ldyBXZWFrTWFwO2NsYXNzIFlZdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBRMn1zdGF0aWMgZ2V0IFBMVUdJTl9Q'@; put 'UklPUklUWSgpe3JldHVybiAyNjB9c3RhdGljIGdldCBTRVRUSU5HX0tFWVMoKXtyZXR1cm5bUTIsLi4uell0XX1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbUTJdfWVuYWJsZVBsdWdpbigpe2lmKCF0aGlzLmVuYWJsZWQpe2lmKHRoaXMuZW5naW5lPWZ1bmN0'@; put 'aW9uIHdZdChuKXtjb25zdCBlPW4uZ2V0U2V0dGluZ3MoKSx0PWVbUTJdO2lmKCF0fHwhMD09PXQpcmV0dXJuIG51bGw7Y29uc3Qgcj10Py5lbmdpbmU7aWYodm9pZCAwPT09cilyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT10eXBlb2Ygci5oeXBlcmZvcm11bGEpcmV0dXJuIGRWZShyLmh5'@; put 'cGVyZm9ybXVsYSxlLG4pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByKXJldHVybiBkVmUocixlLG4pO2lmKCJvYmplY3QiPT10eXBlb2YgciYmWHUoci5oeXBlcmZvcm11bGEpKXtjb25zdCBpPVpHKCksbz13MmUoKS5nZXQocik7cmV0dXJuIGkuaGFzKHIpfHxpLnNldChyLFtdKSxpLmdldChy'@; put 'KS5wdXNoKG4pLG8mJm8ucHVzaChuLmd1aWQpLHIuZ2V0Q29uZmlnKCkubGljZW5zZUtleXx8ci51cGRhdGVDb25maWcoe2xpY2Vuc2VLZXk6bFZlfSksKHIuZ2V0Q29uZmlnKCkubGVhcFllYXIxOTAwIT09YjJlLmxlYXBZZWFyMTkwMHx8ITE9PT1nNyhyLmdldENvbmZpZygpLm51bGxEYXRl'@; put 'LGIyZS5udWxsRGF0ZSkpJiZIYSh5Y2BJZiB5b3UgdXNlIEh5cGVyRm9ybXVsYSB3aXRoIEhhbmRzb250YWJsZSwga2VlcCB0aGUgZGVmYXVsdCBcYGxlYXBZZWFyMTkwMFxgIGFuZCBcYG51bGxEYXRlXGAgCiAgICAgIHNldHRpbmdzLiBPdGhlcndpc2UsIEh5cGVyRm9ybXVsYSdzIGRhdGVz'@; put 'IG1heSBub3Qgc3luYyBjb3JyZWN0bHkgd2l0aCBIYW5kc29udGFibGUncyBkYXRlcy5gKSxyfXJldHVybiBudWxsfSh0aGlzLmhvdCk/P3RoaXMuZW5naW5lLCF0aGlzLmVuZ2luZSlyZXR1cm4gdm9pZCBIYSgiTWlzc2luZyB0aGUgcmVxdWlyZWQgYGVuZ2luZWAga2V5IGluIHRoZSBGb3Jt'@; put 'dWxhcyBzZXR0aW5ncy4gUGxlYXNlIGZpbGwgaXQgd2l0aCBlaXRoZXIgYW4gZW5naW5lIGNsYXNzIG9yIGFuIGVuZ2luZSBpbnN0YW5jZS4iKTtpZihudWxsIT09dGhpcy5zaGVldE5hbWUmJiF0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh0aGlzLnNoZWV0TmFtZSkpe2NvbnN0IGU9dGhp'@; put 'cy5hZGRTaGVldCh0aGlzLnNoZWV0TmFtZSxxMyh0aGlzLHZ4LEpOKS5jYWxsKHRoaXMpKTsic3RyaW5nIj09dHlwZW9mIGUmJnEzKHRoaXMsbXgsUU4pLmNhbGwodGhpcyxlKX10aGlzLmFkZEhvb2soImJlZm9yZUxvYWREYXRhIixsYyh0aGlzLG4kKSksdGhpcy5hZGRIb29rKCJhZnRlckxv'@; put 'YWREYXRhIixsYyh0aGlzLHIkKSksdGhpcy5hZGRIb29rKCJiZWZvcmVVcGRhdGVEYXRhIixsYyh0aGlzLG4kKSksdGhpcy5hZGRIb29rKCJhZnRlclVwZGF0ZURhdGEiLGxjKHRoaXMsciQpKSx0aGlzLmFkZEhvb2soIm1vZGlmeURhdGEiLGxjKHRoaXMsVjJlKSksdGhpcy5hZGRIb29rKCJt'@; put 'b2RpZnlTb3VyY2VEYXRhIixsYyh0aGlzLEIyZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlVmFsaWRhdGUiLGxjKHRoaXMsRjJlKSksdGhpcy5hZGRIb29rKCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLGxjKHRoaXMsajJlKSksdGhpcy5hZGRIb29rKCJhZnRlclNldERhdGFBdENlbGwiLGxj'@; put 'KHRoaXMsaSQpKSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsbGModGhpcyxpJCkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ3JlYXRlUm93IixsYyh0aGlzLFUyZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ3JlYXRlQ29sIixsYyh0aGlzLHoyZSkpLHRoaXMuYWRkSG9vaygi'@; put 'YWZ0ZXJDcmVhdGVSb3ciLGxjKHRoaXMsWjJlKSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsbGModGhpcyxHMmUpKSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZVJvdyIsbGModGhpcyxXMmUpKSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZUNvbCIsbGModGhpcyxZMmUpKSx0'@; put 'aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlUm93IixsYyh0aGlzLCQyZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVDb2wiLGxjKHRoaXMscTJlKSksdGhpcy5pbmRleFN5bmNlcj1uZXcgQll0KHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGU9'@; put 'Pnt0aGlzLmhvdC5hZGRIb29rT25jZSgiaW5pdCIsKCk9PntlKCl9KX0pLHRoaXMucm93QXhpc1N5bmNlcj10aGlzLmluZGV4U3luY2VyLmdldEZvckF4aXMoInJvdyIpLHRoaXMuY29sdW1uQXhpc1N5bmNlcj10aGlzLmluZGV4U3luY2VyLmdldEZvckF4aXMoImNvbHVtbiIpLHRoaXMuaG90'@; put 'LmFkZEhvb2soImFmdGVyUm93U2VxdWVuY2VDaGFuZ2UiLHRoaXMucm93QXhpc1N5bmNlci5nZXRJbmRleGVzQ2hhbmdlU3luY01ldGhvZCgpKSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckNvbHVtblNlcXVlbmNlQ2hhbmdlIix0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SW5kZXhlc0NoYW5n'@; put 'ZVN5bmNNZXRob2QoKSksdGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlUm93TW92ZSIsKGUsdCxyLGkpPT57dGhpcy5yb3dBeGlzU3luY2VyLnN0b3JlTW92ZXNJbmZvcm1hdGlvbihlLHQsaSl9KSx0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVDb2x1bW5Nb3ZlIiwoZSx0LHIsaSk9Pnt0aGlzLmNv'@; put 'bHVtbkF4aXNTeW5jZXIuc3RvcmVNb3Zlc0luZm9ybWF0aW9uKGUsdCxpKX0pLHRoaXMuaG90LmFkZEhvb2soImFmdGVyUm93TW92ZSIsKGUsdCxyLGksbyk9Pnt0aGlzLnJvd0F4aXNTeW5jZXIuY2FsY3VsYXRlQW5kU3luY01vdmVzKGksbyl9KSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckNv'@; put 'bHVtbk1vdmUiLChlLHQscixpLG8pPT57dGhpcy5jb2x1bW5BeGlzU3luY2VyLmNhbGN1bGF0ZUFuZFN5bmNNb3ZlcyhpLG8pfSksdGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlQ29sdW1uRnJlZXplIiwoZSx0KT0+e2NvbnN0IHI9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNT'@; put 'dGFydDt0aGlzLmNvbHVtbkF4aXNTeW5jZXIuc3RvcmVNb3Zlc0luZm9ybWF0aW9uKFtlXSxyLHQpfSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJDb2x1bW5GcmVlemUiLChlLHQpPT57dGhpcy5jb2x1bW5BeGlzU3luY2VyLmNhbGN1bGF0ZUFuZFN5bmNNb3Zlcyh0LHQpfSksdGhpcy5ob3Qu'@; put 'YWRkSG9vaygiYmVmb3JlQ29sdW1uVW5mcmVlemUiLChlLHQpPT57Y29uc3Qgcj10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0O3RoaXMuY29sdW1uQXhpc1N5bmNlci5zdG9yZU1vdmVzSW5mb3JtYXRpb24oW2VdLHItMSx0KX0pLHRoaXMuaG90LmFkZEhvb2soImFm'@; put 'dGVyQ29sdW1uVW5mcmVlemUiLChlLHQpPT57dGhpcy5jb2x1bW5BeGlzU3luY2VyLmNhbGN1bGF0ZUFuZFN5bmNNb3Zlcyh0LHQpfSksdGhpcy5hZGRIb29rKCJhZnRlckNlbGxNZXRhUmVzZXQiLGxjKHRoaXMsSDJlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvIiwoKT0+e3RoaXMuaW5k'@; put 'ZXhTeW5jZXIuc2V0UGVyZm9ybVVuZG8oITApLHRoaXMuZW5naW5lLnVuZG8oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVkbyIsKCk9Pnt0aGlzLmluZGV4U3luY2VyLnNldFBlcmZvcm1SZWRvKCEwKSx0aGlzLmVuZ2luZS5yZWRvKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyVW5kbyIsKCk9'@; put 'Pnt0aGlzLmluZGV4U3luY2VyLnNldFBlcmZvcm1VbmRvKCExKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJVbmRvIiwoKT0+e3RoaXMuaW5kZXhTeW5jZXIuc2V0UGVyZm9ybVJlZG8oITEpfSksdGhpcy5hZGRIb29rKCJhZnRlckRldGFjaENoaWxkIixsYyh0aGlzLEsyZSkpLHRoaXMuYWRkSG9v'@; put 'aygiYmVmb3JlQXV0b2ZpbGwiLGxjKHRoaXMsUDJlKSksbGModGhpcyxneCk/LmZvckVhY2goKFtlLHRdKT0+dGhpcy5lbmdpbmUub24oZSx0KSksc3VwZXIuZW5hYmxlUGx1Z2luKCl9fWRpc2FibGVQbHVnaW4oKXtsYyh0aGlzLGd4KT8uZm9yRWFjaCgoW2UsdF0pPT50aGlzLmVuZ2luZT8u'@; put 'b2ZmKGUsdCkpLHRoaXMuZW5naW5lJiZmVmUodGhpcy5lbmdpbmUsdGhpcy5ob3QpLHRoaXMuZW5naW5lPW51bGwsc3VwZXIuZGlzYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbihlKXtjb25zdCB0PWZ1bmN0aW9uIHlZdChuKXtjb25zdCB0PW5bUTJdPy5lbmdpbmU7cmV0dXJuey4uLnVWZSh0'@; put 'Py5oeXBlcmZvcm11bGE/dDp7fSksLi4uY1ZlKG4pfX0odGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSk7dGhpcy5lbmdpbmUmJmZ1bmN0aW9uIGJZdChuLGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5zb21lKHQ9PnZvaWQgMCE9PWVbdF0mJmVbdF0hPT1uW3RdKX0odGhpcy5lbmdpbmUuZ2V0Q29u'@; put 'ZmlnKCksdCkmJnRoaXMuZW5naW5lLnVwZGF0ZUNvbmZpZyh0KTtjb25zdCByPXRoaXMuaG90LmdldFNldHRpbmdzKClbUTJdO2lmKHZvaWQgMCE9PXImJiJib29sZWFuIiE9dHlwZW9mIHImJnZvaWQgMCE9PXIuc2hlZXROYW1lJiZyLnNoZWV0TmFtZSE9PXRoaXMuc2hlZXROYW1lJiZ0aGlz'@; put 'LnN3aXRjaFNoZWV0KHIuc2hlZXROYW1lKSwhZS5kYXRhJiZudWxsPT09dGhpcy5zaGVldE5hbWUpe2NvbnN0IGk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtRMl0sbz1FVmUoaSk/aS5zaGVldE5hbWU6dm9pZCAwO2lmKG8mJnRoaXMuZW5naW5lPy5kb2VzU2hlZXRFeGlzdChvKSl0aGlzLnN3'@; put 'aXRjaFNoZWV0KG8pO2Vsc2V7Y29uc3QgYT10aGlzLmFkZFNoZWV0KG8/P3ZvaWQgMCxxMyh0aGlzLHZ4LEpOKS5jYWxsKHRoaXMpKTsic3RyaW5nIj09dHlwZW9mIGEmJnEzKHRoaXMsbXgsUU4pLmNhbGwodGhpcyxhKX19c3VwZXIudXBkYXRlUGx1Z2luKGUpfWRlc3Ryb3koKXtsYyh0aGlz'@; put 'LGd4KT8uZm9yRWFjaCgoW2UsdF0pPT50aGlzLmVuZ2luZT8ub2ZmKGUsdCkpLEpsKHRoaXMsZ3gsbnVsbCksdGhpcy5lbmdpbmUmJmZWZSh0aGlzLmVuZ2luZSx0aGlzLmhvdCksdGhpcy5lbmdpbmU9bnVsbCxzdXBlci5kZXN0cm95KCl9YWRkU2hlZXQoZSx0KXtpZihabyh0KSYmIVVsZSh0'@; put 'KSlyZXR1cm4gSGEoIlRoZSBwcm92aWRlZCBkYXRhIHNob3VsZCBiZSBhbiBhcnJheSBvZiBhcnJheXMuIiksITE7aWYobnVsbCE9ZSYmdGhpcy5lbmdpbmU/LmRvZXNTaGVldEV4aXN0KGUpKXJldHVybiBIYSgiU2hlZXQgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZSBhbHJlYWR5IGV4aXN0cy4i'@; put 'KSwhMTt0cnl7Y29uc3Qgcj10aGlzLmVuZ2luZS5hZGRTaGVldChlPz92b2lkIDApO3JldHVybiB0JiZ0aGlzLmVuZ2luZS5zZXRTaGVldENvbnRlbnQodGhpcy5lbmdpbmUuZ2V0U2hlZXRJZChyKSx0KSxyfWNhdGNoKHIpe3JldHVybiBIYShyIGluc3RhbmNlb2YgRXJyb3I/ci5tZXNzYWdl'@; put 'OlN0cmluZyhyKSksITF9fXN3aXRjaFNoZWV0KGUpe2lmKCF0aGlzLmVuZ2luZT8uZG9lc1NoZWV0RXhpc3QoZSkpcmV0dXJuIHZvaWQgbTcoYFRoZSBzaGVldCBuYW1lZCBcYCR7ZX1cYCBkb2VzIG5vdCBleGlzdCwgc3dpdGNoIGFib3J0ZWQuYCk7cTModGhpcyxteCxRTikuY2FsbCh0aGlz'@; put 'LGUpO2NvbnN0IHQ9dGhpcy5lbmdpbmUuZ2V0U2hlZXRTZXJpYWxpemVkKHRoaXMuc2hlZXRJZCk7dC5sZW5ndGg+MCYmdGhpcy5ob3QubG9hZERhdGEodCxgJHtLMChRMil9LnN3aXRjaFNoZWV0YCl9Z2V0Q2VsbFR5cGUoZSx0LHI9dGhpcy5zaGVldElkKXtjb25zdCBpPXRoaXMuaG90LnRv'@; put 'UGh5c2ljYWxSb3coZSksbz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHQpO3JldHVybiBudWxsIT09aSYmbnVsbCE9PW8/dGhpcy5lbmdpbmUuZ2V0Q2VsbFR5cGUoe3NoZWV0OnIscm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGUpLGNvbDp0aGlz'@; put 'LmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleCh0KX0pOiJFTVBUWSJ9aXNGb3JtdWxhQ2VsbFR5cGUoZSx0LHI9dGhpcy5zaGVldElkKXtyZXR1cm4gdGhpcy5lbmdpbmUuZG9lc0NlbGxIYXZlRm9ybXVsYSh7c2hlZXQ6cixyb3c6dGhpcy5yb3dBeGlzU3luY2Vy'@; put 'LmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZSksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHQpfSl9cmVuZGVyRGVwZW5kZW50U2hlZXRzKGUsdD0hMSl7Y29uc3Qgcj1uZXcgU2V0O2UuZm9yRWFjaChpPT57Y29uc3Qgbz1rMmUoaSk/aS5h'@; put 'ZGRyZXNzPy5zaGVldDp2b2lkIDA7dm9pZCAwIT09byYmIXIuaGFzKG8pJiZyLmFkZChvKX0pLHRoaXMuZW5naW5lJiZoVmUodGhpcy5lbmdpbmUpLmZvckVhY2goKGksbyk9PnsodHx8byE9PXRoaXMuc2hlZXRJZCkmJnIuaGFzKG8pJiYoaS5yZW5kZXIoKSxpLnZpZXc/LmFkanVzdEVsZW1l'@; put 'bnRzU2l6ZSgpKX0pfXZhbGlkYXRlRGVwZW5kZW50Q2VsbHMoZSx0PVtdKXtjb25zdCByPW89Pntjb25zdCBhPWsyZShvKT9vLmFkZHJlc3M6dm9pZCAwLHtyb3c6bCxjb2w6dSxzaGVldDpnfT1hPz97fTtyZXR1cm4gWm8oZyk/YCR7Z306JHtsfXgke3V9YDoiIn0saT1uZXcgU2V0KHQubWFw'@; put 'KG89PnIobykpKTtlLmZvckVhY2gobz0+e2NvbnN0IGE9azJlKG8pP28uYWRkcmVzczp2b2lkIDAse3JvdzpsLGNvbDp1LHNoZWV0Omd9PWE/P3t9O2lmKHZvaWQgMD09PWx8fHZvaWQgMD09PXV8fGw+PXRoaXMuaG90LmNvdW50Um93cygpfHx1Pj10aGlzLmhvdC5jb3VudENvbHMoKSlyZXR1'@; put 'cm47Y29uc3QgRT1yKG8pO2lmKHZvaWQgMCE9PWcmJiFpLmhhcyhFKSYmdGhpcy5lbmdpbmUpe2NvbnN0IE89aFZlKHRoaXMuZW5naW5lKS5nZXQoZyk7aWYoIU8pcmV0dXJuO08udmFsaWRhdGVDZWxsKE8uZ2V0RGF0YUF0Q2VsbChsLHUpLE8uZ2V0Q2VsbE1ldGEobCx1KSwoKT0+e30pfX0p'@; put 'fXN5bmNDaGFuZ2VXaXRoRW5naW5lKGUsdCxyKXtjb25zdCBpPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZSksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHQpLHNoZWV0OnRoaXMuc2hlZXRJZH07'@; put 'aWYodGhpcy5lbmdpbmU/LmlzSXRQb3NzaWJsZVRvU2V0Q2VsbENvbnRlbnRzKGkpKXJldHVybiBDMmUocix0aGlzLmhvdC5nZXRDZWxsTWV0YShlLHQpLnR5cGUpJiYocFZlKHIpfHwhMT09PWZ1bmN0aW9uIEFZdChuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJm4uc3RhcnRzV2l0aCgi'@; put 'PSIpfShyKSYmKHI9YCcke3J9YCkpLHRoaXMuZW5naW5lPy5zZXRDZWxsQ29udGVudHMoaSxyKTtIYShgTm90IHBvc3NpYmxlIHRvIHNldCBjZWxsIGRhdGEgYXQgJHtKU09OLnN0cmluZ2lmeShpKX1gKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxlJCh0aGlzLFRWZSksZSQodGhp'@; put 'cyxteCksZSQodGhpcyx0JCksZSQodGhpcyx2eCksUHUodGhpcyxFNix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxYTix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxSMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMsSTJlLHt3cml0'@; put 'YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQdSh0aGlzLEQyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxMMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMsTzJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQdSh0aGlzLE4yZSx7d3JpdGFibGU6'@; put 'ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxneCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxGMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMsUDJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQdSh0aGlzLG4kLHt3cml0YWJsZTohMCx2YWx1'@; put 'ZTp2b2lkIDB9KSxQdSh0aGlzLEgyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxyJCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxWMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMsQjJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lk'@; put 'IDB9KSxQdSh0aGlzLGkkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQdSh0aGlzLGoyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxVMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMsejJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQ'@; put 'dSh0aGlzLFcyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhpcyxZMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMsWjJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQdSh0aGlzLEcyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUHUodGhp'@; put 'cywkMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFB1KHRoaXMscTJlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxQdSh0aGlzLEsyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksSmwodGhpcyxFNiwhMSksSmwodGhpcyxYTiwhMSksSmwodGhpcyxSMmUsdD0+e2NvbnN0'@; put 'IHI9dC5tYXAoaT0+cTModGhpcyxUVmUsWll0KS5jYWxsKHRoaXMsaSkpO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIixyKX0pLEpsKHRoaXMsSTJlLCh0LHIpPT57dGhpcy5ob3QucnVuSG9va3MoImFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQiLHQscil9'@; put 'KSxKbCh0aGlzLEQyZSwodCxyKT0+e3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck5hbWVkRXhwcmVzc2lvblJlbW92ZWQiLHQscil9KSxKbCh0aGlzLEwyZSx0PT57dGhpcy5ob3QucnVuSG9va3MoImFmdGVyU2hlZXRBZGRlZCIsdCl9KSxKbCh0aGlzLE8yZSwodCxyKT0+e3EzKHRoaXMsbXgs'@; put 'UU4pLmNhbGwodGhpcyxyKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTaGVldFJlbmFtZWQiLHQscil9KSxKbCh0aGlzLE4yZSwodCxyKT0+e3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNoZWV0UmVtb3ZlZCIsdCxyKX0pLEpsKHRoaXMsZ3gsW1sidmFsdWVzVXBkYXRlZCIsbGModGhpcyxS'@; put 'MmUpXSxbIm5hbWVkRXhwcmVzc2lvbkFkZGVkIixsYyh0aGlzLEkyZSldLFsibmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsbGModGhpcyxEMmUpXSxbInNoZWV0QWRkZWQiLGxjKHRoaXMsTDJlKV0sWyJzaGVldFJlbmFtZWQiLGxjKHRoaXMsTzJlKV0sWyJzaGVldFJlbW92ZWQiLGxjKHRoaXMs'@; put 'TjJlKV1dKSx0aGlzLnN0YXRpY1JlZ2lzdGVyPXpwKCJmb3JtdWxhcyIpLHRoaXMuZW5naW5lPW51bGwsdGhpcy5zaGVldElkPW51bGwsdGhpcy5zaGVldE5hbWU9bnVsbCx0aGlzLmluZGV4U3luY2VyPW51bGwsdGhpcy5yb3dBeGlzU3luY2VyPW51bGwsdGhpcy5jb2x1bW5BeGlzU3luY2Vy'@; put 'PW51bGwsSmwodGhpcyxGMmUsKHQscixpKT0+e2NvbnN0IG89dGhpcy5ob3QucHJvcFRvQ29sKGkpO2lmKHRoaXMuaXNGb3JtdWxhQ2VsbFR5cGUocixvKSl7Y29uc3QgYT17cm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHIpLGNvbDp0aGlzLmNvbHVt'@; put 'bkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChvKSxzaGVldDp0aGlzLnNoZWV0SWR9LGw9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEocixvKTtsZXQgdT10aGlzLmVuZ2luZS5nZXRDZWxsVmFsdWUoYSk7cmV0dXJuImRhdGUiPT09bC50eXBlJiZ3MCh1KT91PUUyZSh1KToidGlt'@; put 'ZSI9PT1sLnR5cGUmJncwKHUpJiYodT1TMmUodSkpLE1WZSh1KT91LnZhbHVlOnV9cmV0dXJuIHR9KSxKbCh0aGlzLFAyZSwodCxyLGkpPT57Y29uc3R7cm93Om8sY29sOmF9PXIuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7cm93OmwsY29sOnV9PXIuZ2V0Qm90dG9tRW5kQ29ybmVyKCkse3Jvdzpn'@; put 'LGNvbDpFfT1pLmdldFRvcFN0YXJ0Q29ybmVyKCkse3JvdzpPLGNvbDpafT1pLmdldEJvdHRvbUVuZENvcm5lcigpO2lmKG51bGw9PT1vfHxudWxsPT09YXx8bnVsbD09PWx8fG51bGw9PT11fHxudWxsPT09Z3x8bnVsbD09PUV8fG51bGw9PT1PfHxudWxsPT09WilyZXR1cm47Y29uc3QgZWU9'@; put 'dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgobyksdmU9dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoYSksTWU9dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgobCksSGU9dGhpcy5jb2x1'@; put 'bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgodSksV2U9dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZyksYXQ9dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoRSksQ3Q9dGhpcy5yb3dBeGlzU3lu'@; put 'Y2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoTyksQXQ9dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoWik7aWYobnVsbD09PWVlfHxudWxsPT09dmV8fG51bGw9PT1NZXx8bnVsbD09PUhlfHxudWxsPT09V2V8fG51bGw9PT1hdHx8bnVsbD09PUN0'@; put 'fHxudWxsPT09QXQpcmV0dXJuO2NvbnN0IEt0PXtzdGFydDp7cm93OmVlLGNvbDp2ZSxzaGVldDp0aGlzLnNoZWV0SWR9LGVuZDp7cm93Ok1lLGNvbDpIZSxzaGVldDp0aGlzLnNoZWV0SWR9fSxxdD17c3RhcnQ6e3JvdzpXZSxjb2w6YXQsc2hlZXQ6dGhpcy5zaGVldElkfSxlbmQ6e3JvdzpD'@; put 'dCxjb2w6QXQsc2hlZXQ6dGhpcy5zaGVldElkfX07aWYoITE9PT10aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhxdCkpcmV0dXJuITE7Y29uc3QgZ249dGhpcy5lbmdpbmUuZ2V0RmlsbFJhbmdlRGF0YShLdCxxdCkse3JvdzpUbixjb2w6Q259PUt0LnN0YXJ0LHty'@; put 'b3c6cXIsY29sOiRufT1LdC5lbmQsVHI9cXItVG4rMSxyaT0kbi1DbisxO2ZvcihsZXQgZm49MDtmbjxnbi5sZW5ndGg7Zm4rPTEpZm9yKGxldCB5cj0wO3lyPGduW2ZuXS5sZW5ndGg7eXIrPTEpe2NvbnN0IEFuPWduW2ZuXVt5cl0sSHI9VG4rZm4lVHIsdGk9Q24reXIlcmk7QzJlKEFuLHRo'@; put 'aXMuaG90LmdldENlbGxNZXRhKEhyLHRpKS50eXBlKSYmKEFuLnN0YXJ0c1dpdGgoIiciKT9nbltmbl1beXJdPUFuLnNsaWNlKDEpOiExPT09dGhpcy5pc0Zvcm11bGFDZWxsVHlwZShIcix0aSx0aGlzLnNoZWV0SWQpJiYoZ25bZm5dW3lyXT1BbikpfXJldHVybiBnbn0pLEpsKHRoaXMsbiQs'@; put 'KHQscixpPSIiKT0+e2kuaW5jbHVkZXMoSzAoUTIpKXx8SmwodGhpcyxYTixYdSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRhdGEpKX0pLEpsKHRoaXMsSDJlLCgpPT57aWYobGModGhpcyxYTikpcmV0dXJuIHZvaWQobnVsbCE9PXRoaXMuc2hlZXROYW1lJiZ0aGlzLnN3aXRjaFNoZWV0KHRo'@; put 'aXMuc2hlZXROYW1lKSk7Y29uc3QgdD1xMyh0aGlzLHZ4LEpOKS5jYWxsKHRoaXMpO3QuZm9yRWFjaCgoaSxvKT0+e2kuZm9yRWFjaCgoYSxsKT0+e0MyZShhLHRoaXMuaG90LmdldENlbGxNZXRhKG8sbCx7c2tpcE1ldGFFeHRlbnNpb246ITB9KS50eXBlKSYmKHBWZShhKT90W29dW2xdPWE6'@; put 'YS5zdGFydHNXaXRoKCI9Iil8fCh0W29dW2xdPWAnJHthfWApKX0pfSksSmwodGhpcyxFNiwhMCk7Y29uc3Qgcj10aGlzLmVuZ2luZS5zZXRTaGVldENvbnRlbnQodGhpcy5zaGVldElkLHQpO3RoaXMuaW5kZXhTeW5jZXIuc2V0dXBTeW5jRW5kcG9pbnQodGhpcy5lbmdpbmUsdGhpcy5zaGVl'@; put 'dElkKSx0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhyKSxKbCh0aGlzLEU2LCExKX0pLEpsKHRoaXMsciQsKHQscixpPSIiKT0+e2lmKGkuaW5jbHVkZXMoSzAoUTIpKXx8IXRoaXMuZW5naW5lKXJldHVybjtjb25zdCBvPXRoaXMuaG90LmdldFNldHRpbmdzKClbUTJdLGE9RVZlKG8pP28u'@; put 'c2hlZXROYW1lOnZvaWQgMCxsPWZ1bmN0aW9uIE1ZdChuLGUpe3JldHVybihYdShlKXx8IW4uZG9lc1NoZWV0RXhpc3QoZSkpJiYoZT1uLmFkZFNoZWV0KGUpKSxlfSh0aGlzLmVuZ2luZSxhKTtpZihxMyh0aGlzLG14LFFOKS5jYWxsKHRoaXMsbCksInVwZGF0ZVNldHRpbmdzIiE9PWkpaWYo'@; put 'bGModGhpcyxYTikpbnVsbCE9PXRoaXMuc2hlZXROYW1lJiZ0aGlzLnN3aXRjaFNoZWV0KHRoaXMuc2hlZXROYW1lKTtlbHNle2NvbnN0IHU9cTModGhpcyx2eCxKTikuY2FsbCh0aGlzKTtpZih0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlcGxhY2VTaGVldENvbnRlbnQodGhpcy5zaGVl'@; put 'dElkLHUpKXtKbCh0aGlzLEU2LCEwKTtjb25zdCBnPXRoaXMuZW5naW5lLnNldFNoZWV0Q29udGVudCh0aGlzLnNoZWV0SWQsdSk7dGhpcy5pbmRleFN5bmNlci5zZXR1cFN5bmNFbmRwb2ludCh0aGlzLmVuZ2luZSx0aGlzLnNoZWV0SWQpLHRoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGcp'@; put 'LEpsKHRoaXMsRTYsITEpfX19KSxKbCh0aGlzLFYyZSwodCxyLGksbyk9PntpZigiZ2V0IiE9PW98fGxjKHRoaXMsRTYpfHxudWxsPT09dGhpcy5zaGVldE5hbWV8fCF0aGlzLmVuZ2luZT8uZG9lc1NoZWV0RXhpc3QodGhpcy5zaGVldE5hbWUpfHxudWxsPT09dHx8bnVsbD09PXIpcmV0dXJu'@; put 'O2NvbnN0IGE9dGhpcy5nZXRDZWxsVHlwZSh0LHIpO2lmKCJWQUxVRSI9PT1hfHwiRU1QVFkiPT09YSlyZXR1cm4gdm9pZChpLnZhbHVlPWZ1bmN0aW9uIHhZdChuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJmZ1bmN0aW9uIFRZdChuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJiIn'@; put 'Ij09PW4uY2hhckF0KDApJiYiPSI9PT1uLmNoYXJBdCgxKX0obik/bi5zdWJzdHIoMSk6bn0oaS52YWx1ZSkpO2NvbnN0IGw9e3Jvdzp0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleCh0KSxjb2w6dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9t'@; put 'VmlzdWFsSW5kZXgociksc2hlZXQ6dGhpcy5zaGVldElkfTtsZXQgdT10aGlzLmVuZ2luZS5nZXRDZWxsVmFsdWUobCk7Y29uc3QgZz10aGlzLmhvdC5nZXRDZWxsTWV0YSh0LHIse3NraXBNZXRhRXh0ZW5zaW9uOiEwfSk7ImRhdGUiPT09Zy50eXBlJiZ3MCh1KT91PUUyZSh1KToidGltZSI9'@; put 'PT1nLnR5cGUmJncwKHUpJiYodT1TMmUodSkpLGkudmFsdWU9TVZlKHUpP3UudmFsdWU6dX0pLEpsKHRoaXMsQjJlLCh0LHIsaSxvKT0+e2lmKCJnZXQiIT09b3x8bGModGhpcyxFNil8fG51bGw9PT10aGlzLnNoZWV0TmFtZXx8IXRoaXMuZW5naW5lPy5kb2VzU2hlZXRFeGlzdCh0aGlzLnNo'@; put 'ZWV0TmFtZSkpcmV0dXJuO2NvbnN0IGE9dGhpcy5ob3QudG9WaXN1YWxSb3codCksbD10aGlzLmhvdC5wcm9wVG9Db2wocik7aWYobnVsbD09PWF8fG51bGw9PT1sKXJldHVybjtjb25zdCB1PXRoaXMuZ2V0Q2VsbFR5cGUoYSxsKTtpZigiVkFMVUUiPT09dXx8IkVNUFRZIj09PXUpcmV0dXJu'@; put 'O2NvbnN0IGc9dGhpcy5lbmdpbmUuZ2V0U2hlZXREaW1lbnNpb25zKHRoaXMuZW5naW5lLmdldFNoZWV0SWQodGhpcy5zaGVldE5hbWUpKTtpZigwPT09Zy53aWR0aCYmMD09PWcuaGVpZ2h0KXJldHVybjtjb25zdCBFPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlz'@; put 'dWFsSW5kZXgoYSksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGwpLHNoZWV0OnRoaXMuc2hlZXRJZH07aS52YWx1ZT10aGlzLmVuZ2luZS5nZXRDZWxsU2VyaWFsaXplZChFKX0pLEpsKHRoaXMsaSQsKHQscik9PntpZihweChyKXx8IXQ/Lmxl'@; put 'bmd0aClyZXR1cm47Y29uc3QgaT1bXSxvPVtdLGE9dGhpcy5lbmdpbmUuYmF0Y2goKCk9Pnt0LmZvckVhY2goKFtsLHUsLGddKT0+e2lmKCJzdHJpbmciIT10eXBlb2YgdSYmIm51bWJlciIhPXR5cGVvZiB1KXJldHVybjtjb25zdCBFPXRoaXMuaG90LnByb3BUb0NvbCh1KSxPPXRoaXMuaG90'@; put 'LnRvUGh5c2ljYWxSb3cobCksWj10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKEUpLGVlPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgobCksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KEUpLHNoZWV0'@; put 'OnRoaXMuc2hlZXRJZH07Zz1xMyh0aGlzLHQkLFgyZSkuY2FsbCh0aGlzLE8sWixnKSxudWxsIT09TyYmbnVsbCE9PVo/dGhpcy5zeW5jQ2hhbmdlV2l0aEVuZ2luZShsLEUsZyk6aS5wdXNoKFtsLEUsZ10pLG8ucHVzaCh7YWRkcmVzczplZX0pfSl9KTtpLmxlbmd0aCYmdGhpcy5ob3QuYWRk'@; put 'SG9va09uY2UoImFmdGVyQ2hhbmdlIiwoKT0+e2NvbnN0IGw9dGhpcy5lbmdpbmUuYmF0Y2goKCk9PntpLmZvckVhY2goKFt1LGcsRV0pPT57dGhpcy5zeW5jQ2hhbmdlV2l0aEVuZ2luZSh1LGcsRSl9KX0pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGwsITApfSksdGhpcy5yZW5kZXJE'@; put 'ZXBlbmRlbnRTaGVldHMoYSksdGhpcy52YWxpZGF0ZURlcGVuZGVudENlbGxzKGEsbyl9KSxKbCh0aGlzLGoyZSwodCxyKT0+e2lmKHB4KHIpKXJldHVybjtjb25zdCBpPVtdLG89W107dC5mb3JFYWNoKChbYSxsLCx1XSk9PntpZigic3RyaW5nIiE9dHlwZW9mIGwmJiJudW1iZXIiIT10eXBl'@; put 'b2YgbClyZXR1cm47Y29uc3QgZz10aGlzLmhvdC5wcm9wVG9Db2wobCk7aWYoIXcwKGcpKXJldHVybjtjb25zdCBFPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoYSksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3Vh'@; put 'bEluZGV4KGcpLHNoZWV0OnRoaXMuc2hlZXRJZH07dGhpcy5lbmdpbmU/LmlzSXRQb3NzaWJsZVRvU2V0Q2VsbENvbnRlbnRzKEUpPyh1PWdWZSh1KSxvLnB1c2goe2FkZHJlc3M6RX0pLGkucHVzaCguLi50aGlzLmVuZ2luZS5zZXRDZWxsQ29udGVudHMoRSx1KSkpOkhhKGBOb3QgcG9zc2li'@; put 'bGUgdG8gc2V0IHNvdXJjZSBjZWxsIGRhdGEgYXQgJHtKU09OLnN0cmluZ2lmeShFKX1gKX0pLHRoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGkpLHRoaXMudmFsaWRhdGVEZXBlbmRlbnRDZWxscyhpLG8pfSksSmwodGhpcyxVMmUsKHQscik9PntsZXQgaT10aGlzLnJvd0F4aXNTeW5jZXIu'@; put 'Z2V0SGZJbmRleEZyb21WaXN1YWxJbmRleCh0KTtpZih0Pj10aGlzLmhvdC5jb3VudFJvd3MoKSYmKGk9dCksbnVsbD09PXRoaXMuc2hlZXRJZHx8IXRoaXMuZW5naW5lPy5kb2VzU2hlZXRFeGlzdCh0aGlzLnNoZWV0TmFtZSl8fCF0aGlzLmVuZ2luZT8uaXNJdFBvc3NpYmxlVG9BZGRSb3dz'@; put 'KHRoaXMuc2hlZXRJZCxbaSxyXSkpcmV0dXJuITF9KSxKbCh0aGlzLHoyZSwodCxyKT0+e2xldCBpPXRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHQpO2lmKHQ+PXRoaXMuaG90LmNvdW50Q29scygpJiYoaT10KSxudWxsPT09dGhpcy5zaGVldElkfHwh'@; put 'dGhpcy5lbmdpbmU/LmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKXx8IXRoaXMuZW5naW5lPy5pc0l0UG9zc2libGVUb0FkZENvbHVtbnModGhpcy5zaGVldElkLFtpLHJdKSlyZXR1cm4hMX0pLEpsKHRoaXMsVzJlLCh0LHIsaSk9PiExIT09dGhpcy5yb3dBeGlzU3luY2VyLnNldFJl'@; put 'bW92ZWRIZkluZGV4ZXMoaSkuZXZlcnkobD0+dGhpcy5lbmdpbmU/LmlzSXRQb3NzaWJsZVRvUmVtb3ZlUm93cyh0aGlzLnNoZWV0SWQsW2wsMV0pKSYmdm9pZCAwKSxKbCh0aGlzLFkyZSwodCxyLGkpPT4hMSE9PXRoaXMuY29sdW1uQXhpc1N5bmNlci5zZXRSZW1vdmVkSGZJbmRleGVzKGkp'@; put 'LmV2ZXJ5KGw9PnRoaXMuZW5naW5lPy5pc0l0UG9zc2libGVUb1JlbW92ZUNvbHVtbnModGhpcy5zaGVldElkLFtsLDFdKSkmJnZvaWQgMCksSmwodGhpcyxaMmUsKHQscixpKT0+e2lmKHB4KGkpKXJldHVybjtjb25zdCBvPXRoaXMuZW5naW5lLmFkZFJvd3ModGhpcy5zaGVldElkLFt0aGlz'@; put 'LnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleCh0KSxyXSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMobyl9KSxKbCh0aGlzLEcyZSwodCxyLGkpPT57aWYocHgoaSkpcmV0dXJuO2NvbnN0IG89dGhpcy5lbmdpbmUuYWRkQ29sdW1ucyh0aGlzLnNoZWV0SWQsW3Ro'@; put 'aXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHQpLHJdKTt0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhvKX0pLEpsKHRoaXMsJDJlLCh0LHIsaSxvKT0+e2lmKHB4KG8pKXJldHVybjtjb25zdCBhPXRoaXMucm93QXhpc1N5bmNlci5nZXRSZW1vdmVkSGZJ'@; put 'bmRleGVzKCkuc29ydCgodSxnKT0+Zy11KSxsPXRoaXMuZW5naW5lLmJhdGNoKCgpPT57YS5mb3JFYWNoKHU9Pnt0aGlzLmVuZ2luZS5yZW1vdmVSb3dzKHRoaXMuc2hlZXRJZCxbdSwxXSl9KX0pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGwpfSksSmwodGhpcyxxMmUsKHQscixpLG8p'@; put 'PT57aWYocHgobykpcmV0dXJuO2NvbnN0IGE9dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldFJlbW92ZWRIZkluZGV4ZXMoKS5zb3J0KCh1LGcpPT5nLXUpLGw9dGhpcy5lbmdpbmUuYmF0Y2goKCk9PnthLmZvckVhY2godT0+e3RoaXMuZW5naW5lLnJlbW92ZUNvbHVtbnModGhpcy5zaGVldElk'@; put 'LFt1LDFdKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMobCl9KSxKbCh0aGlzLEsyZSwodCxyLGkpPT57SmwodGhpcyxFNiwhMCk7Y29uc3Qgbz1yLl9fY2hpbGRyZW4sYT1BcnJheS5pc0FycmF5KG8pP28ubGVuZ3RoOjAsbD1xMyh0aGlzLHZ4LEpOKS5jYWxsKHRoaXMsaSwwLGkr'@; put 'YSx0aGlzLmhvdC5jb3VudFNvdXJjZUNvbHMoKSk7SmwodGhpcyxFNiwhMSksbC5mb3JFYWNoKCh1LGcpPT57dS5mb3JFYWNoKChFLE8pPT57dGhpcy5lbmdpbmU/LnNldENlbGxDb250ZW50cyh7Y29sOk8scm93OmkrZyxzaGVldDp0aGlzLnNoZWV0SWR9LFtbRV1dKX0pfSl9KX19ZnVuY3Rp'@; put 'b24gWll0KG4pe2lmKCFuLmFkZHJlc3N8fG4uYWRkcmVzcy5zaGVldCE9PXRoaXMuc2hlZXRJZHx8Im51bWJlciIhPXR5cGVvZiBuLm5ld1ZhbHVlKXJldHVybiBuO2NvbnN0IGU9dGhpcy5yb3dBeGlzU3luY2VyLmdldFZpc3VhbEluZGV4RnJvbUhmSW5kZXgobi5hZGRyZXNzLnJvdyksdD10'@; put 'aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0VmlzdWFsSW5kZXhGcm9tSGZJbmRleChuLmFkZHJlc3MuY29sKTtpZihlPDB8fHQ8MClyZXR1cm4gbjtjb25zdCByPXRoaXMuaG90LmdldENlbGxNZXRhKGUsdCx7c2tpcE1ldGFFeHRlbnNpb246ITB9KTtsZXQgaTtpZigiZGF0ZSI9PT1yLnR5cGUp'@; put 'aT1FMmUobi5uZXdWYWx1ZSk7ZWxzZXtpZigidGltZSIhPT1yLnR5cGUpcmV0dXJuIG47aT1TMmUobi5uZXdWYWx1ZSl9Y29uc3Qgbz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pKSxuKTtyZXR1cm4gby5uZXdWYWx1ZT1pLG99ZnVuY3Rpb24g'@; put 'UU4obil7dGhpcy5zaGVldE5hbWU9bix0aGlzLnNoZWV0SWQ9dGhpcy5lbmdpbmU/LmdldFNoZWV0SWQodGhpcy5zaGVldE5hbWUpPz9udWxsfWZ1bmN0aW9uIFgyZShuLGUsdCl7aWYoQ2EodCkmJm51bGwhPT10KXtjb25zdCByPXRoaXMuaG90LnRvVmlzdWFsUm93KG4pLGk9dGhpcy5ob3Qu'@; put 'dG9WaXN1YWxDb2x1bW4oZSk7dGhpcy5ob3QuZ2V0Q2VsbE1ldGEocixpKSxudWxsIT0odD1LWSh0LHRoaXMuaG90LmdldENlbGxNZXRhKHIsaSkpKSYmKHQ9T2JqZWN0KHQpLnRvU3RyaW5nKCkpfXJldHVybiBnVmUodCl9ZnVuY3Rpb24gSk4obixlLHQscil7Y29uc3QgaT10aGlzLmhvdC5n'@; put 'ZXRTb3VyY2VEYXRhQXJyYXkobixlLHQsciksbz10aGlzLmhvdC5jb3VudENvbHMoKSxhPXRoaXMuaG90LmNvdW50U291cmNlQ29scygpO2lmKCEobzxhJiZVbGUodGhpcy5ob3QuZ2V0U291cmNlRGF0YSgpKSkpcmV0dXJuIGkubWFwKChnLEUpPT4oQXJyYXkuaXNBcnJheShnKT9nOltdKS5t'@; put 'YXAoKFosZWUpPT5xMyh0aGlzLHQkLFgyZSkuY2FsbCh0aGlzLEUsZWUsWikpKTtjb25zdCB1PWU/PzA7cmV0dXJuIGkubWFwKChnLEUpPT57Y29uc3QgTz1bXTtmb3IobGV0IFo9MDtaPG87WisrKXtjb25zdCBlZT10aGlzLmhvdC5jb2xUb1Byb3AoWik7aWYoIm51bWJlciIhPXR5cGVvZiBl'@; put 'ZSljb250aW51ZTtjb25zdCB2ZT1lZS11O3ZlPDB8fHZlPj1nLmxlbmd0aHx8Ty5wdXNoKHEzKHRoaXMsdCQsWDJlKS5jYWxsKHRoaXMsRSxaLGdbdmVdKSl9cmV0dXJuIE99KX1mdW5jdGlvbiB4VmUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlh'@; put 'bGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIEFWZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBl'@; put 'LmdldChuKX1mdW5jdGlvbiBtbShuLGUpe3JldHVybiBmdW5jdGlvbiBxWXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLEFWZShuLGUsImdldCIpKX1mdW5jdGlvbiBfeChuLGUsdCl7eFZlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBBXyhuLGUsdCl7cmV0'@; put 'dXJuIGZ1bmN0aW9uIEtZdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sQVZlKG4sZSwic2V0IiksdCks'@; put 'dH1Hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlSGlkZUNvbHVtbnMiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJIaWRlQ29sdW1ucyIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVVbmhpZGVDb2x1bW5zIiksR28uZ2V0U2luZ2xldG9uKCku'@; put 'cmVnaXN0ZXIoImFmdGVyVW5oaWRlQ29sdW1ucyIpO2NvbnN0IGtWZT0iaGlkZGVuQ29sdW1ucyIsZUY9U3ltYm9sKCJza2lwQ29sdW1uT25QYXN0ZUJ5SGlkZGVuQ29sdW1ucyIpO3ZhciBQND1uZXcgV2Vha01hcCxRMmU9bmV3IFdlYWtNYXAsSjJlPW5ldyBXZWFrTWFwLGVmZT1uZXcgV2Vh'@; put 'a01hcCx0ZmU9bmV3IFdlYWtNYXAsbmZlPW5ldyBXZWFrTWFwLFJWZT1uZXcgV2Vha1NldDtjbGFzcyBlWnQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4ga1ZlfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDMxMH1zdGF0aWMgZ2V0IERFRkFV'@; put 'TFRfU0VUVElOR1MoKXtyZXR1cm57Y29weVBhc3RlRW5hYmxlZDohMCxpbmRpY2F0b3JzOiExLGNvbHVtbnM6W119fWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtrVmVdfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KEFfKHRoaXMsUDQsbmV3IFZMKSxt'@; put 'bSh0aGlzLFA0KS5hZGRMb2NhbEhvb2soImluaXQiLCgpPT5mdW5jdGlvbiBYWXQobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9KHRoaXMsUlZlLHRadCkuY2Fs'@; put 'bCh0aGlzKSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lPz8iIixtbSh0aGlzLFA0KSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLG1tKHRoaXMsbmZlKSksdGhpcy5hZGRIb29rKCJhZnRlckdldENl'@; put 'bGxNZXRhIixtbSh0aGlzLEoyZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29sV2lkdGgiLG1tKHRoaXMsUTJlKSwyKSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIixtbSh0aGlzLHRmZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29weWFibGVSYW5nZSIsbW0odGhpcyxlZmUpKSxz'@; put 'dXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7c3VwZXIuZGlzYWJsZVBsdWdpbigpLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVu'@; put 'cmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lPz8iIiksdGhpcy5yZXNldENlbGxzTWV0YSgpfXNob3dDb2x1bW5zKGUpe2NvbnN0IHQ9dGhpcy5nZXRIaWRkZW5Db2x1bW5zKCkscj10aGlzLmlzVmFsaWRDb25maWcoZSk7bGV0IGk9dDtjb25zdCBvPW1tKHRoaXMsUDQpLmdldFZhbHVlcygp'@; put 'LnNsaWNlKCksYT1lLmxlbmd0aD4wO3ImJmEmJihYbihlLm1hcChnPT50aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGcpKSxnPT57b1tnXT0hMX0pLGk9bTEobywoZyxFLE8pPT4oRSYmZy5wdXNoKHRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKE8pKSxnKSxbXSkpLCExIT09dGhpcy5ob3QucnVu'@; put 'SG9va3MoImJlZm9yZVVuaGlkZUNvbHVtbnMiLHQsaSxyJiZhKSYmKHImJmEmJm1tKHRoaXMsUDQpLnNldFZhbHVlcyhvKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVuaGlkZUNvbHVtbnMiLHQsaSxyJiZhLHImJmkubGVuZ3Ro'@; put 'PHQubGVuZ3RoKSl9c2hvd0NvbHVtbiguLi5lKXt0aGlzLnNob3dDb2x1bW5zKGUpfWhpZGVDb2x1bW5zKGUpe2NvbnN0IHQ9dGhpcy5nZXRIaWRkZW5Db2x1bW5zKCkscj10aGlzLmlzVmFsaWRDb25maWcoZSk7bGV0IGk9dDtyJiYoaT1BcnJheS5mcm9tKG5ldyBTZXQodC5jb25jYXQoZSkp'@; put 'KSksITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlSGlkZUNvbHVtbnMiLHQsaSxyKSYmKHImJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57WG4oZSxhPT57bW0odGhpcyxQNCkuc2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYSksITApfSl9LCEwKSx0'@; put 'aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJIaWRlQ29sdW1ucyIsdCxpLHIsciYmaS5sZW5ndGg+dC5sZW5ndGgpKX1oaWRlQ29sdW1uKC4uLmUpe3RoaXMuaGlkZUNvbHVtbnMoZSl9Z2V0SGlkZGVuQ29sdW1ucygpe3JldHVybiBfYyhtbSh0aGlzLFA0KS5nZXRIaWRkZW5JbmRleGVzKCksZT0+'@; put 'dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oZSkpfWlzSGlkZGVuKGUpe3JldHVybiBtbSh0aGlzLFA0KS5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihlKSl8fCExfWlzVmFsaWRDb25maWcoZSl7Y29uc3QgdD10aGlzLmhvdC5jb3VudENvbHMoKTtyZXR1cm4hIShB'@; put 'cnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKSYmZS5ldmVyeShyPT5OdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPj0wJiZyPHQpfXJlc2V0Q2VsbHNNZXRhKCl7WG4odGhpcy5ob3QuZ2V0Q2VsbHNNZXRhKCksZT0+e2NvbnN0IHQ9ZTt0W2VGXSYmKGRlbGV0ZSB0LnNraXBDb2x1bW5PblBhc3Rl'@; put 'LGRlbGV0ZSB0W2VGXSl9KX1kZXN0cm95KCl7QV8odGhpcyxQNCxudWxsKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksZnVuY3Rpb24gUVl0KG4sZSl7eFZlKG4sZSksZS5hZGQobil9KHRoaXMsUlZlKSxfeCh0aGlzLFA0LHt3cml0YWJsZTohMCx2YWx1'@; put 'ZTp2b2lkIDB9KSxfeCh0aGlzLFEyZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksX3godGhpcyxKMmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLF94KHRoaXMsZWZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxfeCh0aGlzLHRmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9p'@; put 'ZCAwfSksX3godGhpcyxuZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEFfKHRoaXMsUDQsbnVsbCksQV8odGhpcyxRMmUsKHQscik9PnRoaXMuaXNIaWRkZW4ocik/MDp0aGlzLmdldFNldHRpbmcoImluZGljYXRvcnMiKSYmKHRoaXMuaXNIaWRkZW4ocisxKXx8dGhpcy5pc0hpZGRl'@; put 'bihyLTEpKSYmIm51bWJlciI9PXR5cGVvZiB0JiZ0aGlzLmhvdC5oYXNDb2xIZWFkZXJzKCk/dCsxNTp2b2lkIDApLEFfKHRoaXMsSjJlLCh0LHIsaSk9PntpZighMT09PXRoaXMuZ2V0U2V0dGluZygiY29weVBhc3RlRW5hYmxlZCIpKXtjb25zdCBvPWk7dGhpcy5pc0hpZGRlbihyKT8hMCE9'@; put 'PWkuc2tpcENvbHVtbk9uUGFzdGUmJihpLnNraXBDb2x1bW5PblBhc3RlPSEwLG9bZUZdPSEwKTpvW2VGXSYmKGRlbGV0ZSBpLnNraXBDb2x1bW5PblBhc3RlLGRlbGV0ZSBvW2VGXSl9aWYodGhpcy5pc0hpZGRlbihyLTEpKWkuY2xhc3NOYW1lPWkuY2xhc3NOYW1lfHwiIiwtMT09PWkuY2xh'@; put 'c3NOYW1lLmluZGV4T2YoImFmdGVySGlkZGVuQ29sdW1uIikmJihpLmNsYXNzTmFtZSs9IiBhZnRlckhpZGRlbkNvbHVtbiIpO2Vsc2UgaWYoaS5jbGFzc05hbWUpe2NvbnN0IG89aS5jbGFzc05hbWUuc3BsaXQoIiAiKTtpZihvLmxlbmd0aD4wKXtjb25zdCBhPW8uaW5kZXhPZigiYWZ0ZXJI'@; put 'aWRkZW5Db2x1bW4iKTthPi0xJiZvLnNwbGljZShhLDEpLGkuY2xhc3NOYW1lPW8uam9pbigiICIpfX19KSxBXyh0aGlzLGVmZSx0PT57aWYodGhpcy5nZXRTZXR0aW5nKCJjb3B5UGFzdGVFbmFibGVkIikpcmV0dXJuIHQ7Y29uc3Qgcj1bXSxpPShvLGEsbCx1KT0+e3IucHVzaCh7c3RhcnRS'@; put 'b3c6byxlbmRSb3c6YSxzdGFydENvbDpsLGVuZENvbDp1fSl9O3JldHVybiBYbih0LG89Pntjb25zdCBhPW87bGV0IGw9ITAsdT0wO1ZhKGEuc3RhcnRDb2wsYS5lbmRDb2wsZz0+e3RoaXMuaXNIaWRkZW4oZyk/KGx8fGkoYS5zdGFydFJvdyxhLmVuZFJvdyx1LGctMSksbD0hMCk6KGwmJih1'@; put 'PWcpLGc9PT1hLmVuZENvbCYmaShhLnN0YXJ0Um93LGEuZW5kUm93LHUsZyksbD0hMSl9KX0pLHJ9KSxBXyh0aGlzLHRmZSwodCxyKT0+e2lmKCF0aGlzLmdldFNldHRpbmcoImluZGljYXRvcnMiKXx8dDwwKXJldHVybjtjb25zdCBpPVtdO3Q+PTEmJnRoaXMuaXNIaWRkZW4odC0xKSYmaS5w'@; put 'dXNoKCJhZnRlckhpZGRlbkNvbHVtbiIpLHQ8dGhpcy5ob3QuY291bnRDb2xzKCktMSYmdGhpcy5pc0hpZGRlbih0KzEpJiZpLnB1c2goImJlZm9yZUhpZGRlbkNvbHVtbiIpLFlyKHIsaSl9KSxBXyh0aGlzLG5mZSx0PT57dC5pdGVtcy5wdXNoKHtuYW1lOnZzfSxmdW5jdGlvbiBHWXQobil7'@; put 'cmV0dXJue2tleToiaGlkZGVuX2NvbHVtbnNfaGlkZSIsbmFtZSgpe2NvbnN0IGU9dGhpcy5nZXRTZWxlY3RlZEFjdGl2ZSgpO2xldCB0PTA7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3RbLHIsLGldPWU7ci1pIT09MCYmKHQ9MSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShq'@; put 'Y2UsdCl9LGNhbGxiYWNrKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighZSlyZXR1cm47Y29uc3R7ZnJvbTp0LHRvOnJ9PWU7aWYobnVsbD09PXQuY29sfHxudWxsPT09ci5jb2wpcmV0dXJuO2NvbnN0IGk9TWF0aC5tYXgoTWF0aC5taW4odC5jb2wsci5jb2wp'@; put 'LDApLG89TWF0aC5tYXgodC5jb2wsci5jb2wpLGE9W107Zm9yKGxldCBnPWk7Zzw9bztnKz0xKWEucHVzaChnKTtuLmhpZGVDb2x1bW5zKGEpO2NvbnN0IHU9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYVthLmxlbmd0aC0xXSwxLCEwKTtudWxsIT09'@; put 'dSYmTnVtYmVyLmlzSW50ZWdlcih1KSYmdT49MD90aGlzLnNlbGVjdENvbHVtbnModSk6dGhpcy5kZXNlbGVjdENlbGwoKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITEsaGlkZGVuKCl7cmV0dXJuISh0aGlzLnNlbGVjdGlvbi5pc1Nl'@; put 'bGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkpfX19KHRoaXMpLGZ1bmN0aW9uICRZdChuKXtjb25zdCBlPVtdO3JldHVybntrZXk6ImhpZGRlbl9jb2x1bW5zX3Nob3ciLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhy'@; put 'YXNlKFVjZSxlLmxlbmd0aD4xPzE6MCl9LGNhbGxiYWNrKCl7aWYoMD09PWUubGVuZ3RoKXJldHVybjtsZXQgdD1lWzBdLHI9ZVtlLmxlbmd0aC0xXTt0PXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHQtMSwtMSk/PzAscj10aGlzLmNvbHVtbkluZGV4'@; put 'TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChyKzEsMSk/P3RoaXMuY291bnRDb2xzKCktMSxuLnNob3dDb2x1bW5zKGUpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlzLnJlbmRlcigpLHItdCsxPT09dGhpcy5jb3VudENvbHMoKXx8dGhpcy5zZWxlY3RDb2x1bW5z'@; put 'KHQscil9LGRpc2FibGVkOiExLGhpZGRlbigpe2NvbnN0IHQ9X2Mobi5nZXRIaWRkZW5Db2x1bW5zKCksTz0+dGhpcy50b1BoeXNpY2FsQ29sdW1uKE8pKTtpZighdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJiF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlD'@; put 'b3JuZXIoKXx8dC5sZW5ndGg8MSlyZXR1cm4hMDtlLmxlbmd0aD0wO2NvbnN0IHI9dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIXIpcmV0dXJuITA7Y29uc3QgaT1yLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLG89ci5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2wsYT10aGlzLmNv'@; put 'bHVtbkluZGV4TWFwcGVyLGw9bnVsbCE9PWk/YS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGkpOm51bGwsdT1udWxsIT09bz9hLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobyk6bnVsbCxnPWEuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKSxFPVtdO2lmKGkhPT1vKXtpZihudWxs'@; put 'PT09aXx8bnVsbD09PW8pcmV0dXJuITA7aWYoby1pKzE+KHU/PzApLShsPz8wKSsxKXtjb25zdCBlZT1nLnNsaWNlKGksbysxKTtFLnB1c2goLi4uZWUuZmlsdGVyKHZlPT50LmluY2x1ZGVzKHZlKSkpfX1lbHNlIGlmKDA9PT1sJiZudWxsIT09aSYmbDxpKUUucHVzaCguLi5nLnNsaWNlKDAs'@; put 'aSkpO2Vsc2UgaWYobnVsbD09PWwpRS5wdXNoKC4uLmcuc2xpY2UoMCx0aGlzLmNvdW50Q29scygpKSk7ZWxzZXtjb25zdCBPPXRoaXMuY291bnRDb2xzKCktMSxaPWEuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KE8sLTEpLGVlPW51bGwhPT1aP2EuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJ'@; put 'bmRleChaKTpudWxsO251bGwhPT11JiZudWxsIT09byYmdT09PWVlJiZPPm8mJkUucHVzaCguLi5nLnNsaWNlKG8rMSkpfXJldHVybiBYbihFLE89PntlLnB1c2godGhpcy50b1Zpc3VhbENvbHVtbihPKSl9KSwwPT09ZS5sZW5ndGh9fX0odGhpcykpfSl9fWZ1bmN0aW9uIHRadCgpe2NvbnN0'@; put 'IG49dGhpcy5nZXRTZXR0aW5nKCJjb2x1bW5zIik7QXJyYXkuaXNBcnJheShuKSYmdGhpcy5oaWRlQ29sdW1ucyhuKX1mdW5jdGlvbiBJVmUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3'@; put 'aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIERWZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiB2bShuLGUpe3JldHVybiBm'@; put 'dW5jdGlvbiBpWnQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLERWZShuLGUsImdldCIpKX1mdW5jdGlvbiB5eChuLGUsdCl7SVZlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBrXyhuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIG9adChuLGUsdCl7aWYoZS5zZXQp'@; put 'ZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sRFZlKG4sZSwic2V0IiksdCksdH1Hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVm'@; put 'b3JlSGlkZVJvd3MiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJIaWRlUm93cyIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVVbmhpZGVSb3dzIiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyVW5oaWRlUm93cyIpO2NvbnN0IExWZT0iaGlk'@; put 'ZGVuUm93cyIsdEY9U3ltYm9sKCJza2lwUm93T25QYXN0ZUJ5SGlkZGVuUm93cyIpO3ZhciBIND1uZXcgV2Vha01hcCxyZmU9bmV3IFdlYWtNYXAsaWZlPW5ldyBXZWFrTWFwLG9mZT1uZXcgV2Vha01hcCxhZmU9bmV3IFdlYWtNYXAsc2ZlPW5ldyBXZWFrTWFwLE9WZT1uZXcgV2Vha1NldDtj'@; put 'bGFzcyBjWnQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gTFZlfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDMyMH1zdGF0aWMgZ2V0IERFRkFVTFRfU0VUVElOR1MoKXtyZXR1cm57Y29weVBhc3RlRW5hYmxlZDohMCxpbmRpY2F0b3JzOiEx'@; put 'LHJvd3M6W119fWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtMVmVdfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KGtfKHRoaXMsSDQsbmV3IFZMKSx2bSh0aGlzLEg0KS5hZGRMb2NhbEhvb2soImluaXQiLCgpPT5mdW5jdGlvbiBhWnQobixlLHQpe2lm'@; put 'KCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9KHRoaXMsT1ZlLHVadCkuY2FsbCh0aGlzKSksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5O'@; put 'YW1lLHZtKHRoaXMsSDQpKSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsdm0odGhpcyxzZmUpKSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q2VsbE1ldGEiLHZtKHRoaXMsaWZlKSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dIZWlnaHQiLHZtKHRoaXMscmZl'@; put 'KSksdGhpcy5hZGRIb29rKCJhZnRlckdldFJvd0hlYWRlciIsdm0odGhpcyxhZmUpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLHZtKHRoaXMsb2ZlKSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5h'@; put 'YmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksdGhpcy5yZXNldENlbGxzTWV0YSgpfXNob3dSb3dzKGUpe2NvbnN0'@; put 'IHQ9dGhpcy5nZXRIaWRkZW5Sb3dzKCkscj10aGlzLmlzVmFsaWRDb25maWcoZSk7bGV0IGk9dDtjb25zdCBvPXZtKHRoaXMsSDQpLmdldFZhbHVlcygpLnNsaWNlKCksYT1lLmxlbmd0aD4wO3ImJmEmJihYbihlLm1hcChnPT50aGlzLmhvdC50b1BoeXNpY2FsUm93KGcpKSxnPT57b1tnXT0h'@; put 'MX0pLGk9bTEobywoZyxFLE8pPT4oRSYmZy5wdXNoKHRoaXMuaG90LnRvVmlzdWFsUm93KE8pKSxnKSxbXSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVuaGlkZVJvd3MiLHQsaSxyJiZhKSYmKHImJmEmJnZtKHRoaXMsSDQpLnNldFZhbHVlcyhvKSx0aGlzLmhvdC5ydW5Ib29r'@; put 'cygiYWZ0ZXJVbmhpZGVSb3dzIix0LGksciYmYSxyJiZpLmxlbmd0aDx0Lmxlbmd0aCkpfXNob3dSb3coLi4uZSl7dGhpcy5zaG93Um93cyhlKX1oaWRlUm93cyhlKXtjb25zdCB0PXRoaXMuZ2V0SGlkZGVuUm93cygpLHI9dGhpcy5pc1ZhbGlkQ29uZmlnKGUpO2xldCBpPXQ7ciYmKGk9QXJy'@; put 'YXkuZnJvbShuZXcgU2V0KHQuY29uY2F0KGUpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUhpZGVSb3dzIix0LGkscikmJihyJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e1huKGUsYT0+e3ZtKHRoaXMsSDQpLnNldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNp'@; put 'Y2FsUm93KGEpLCEwKX0pfSwhMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVySGlkZVJvd3MiLHQsaSxyLHImJmkubGVuZ3RoPnQubGVuZ3RoKSl9aGlkZVJvdyguLi5lKXt0aGlzLmhpZGVSb3dzKGUpfWdldEhpZGRlblJvd3MoKXtyZXR1cm4gX2Modm0odGhpcyxINCkuZ2V0SGlkZGVuSW5k'@; put 'ZXhlcygpLGU9PnRoaXMuaG90LnRvVmlzdWFsUm93KGUpKX1pc0hpZGRlbihlKXtyZXR1cm4gdm0odGhpcyxINCkuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxSb3coZSkpfHwhMX1pc1ZhbGlkQ29uZmlnKGUpe2NvbnN0IHQ9dGhpcy5ob3QuY291bnRSb3dzKCk7cmV0dXJu'@; put 'ISEoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCkmJmUuZXZlcnkocj0+TnVtYmVyLmlzSW50ZWdlcihyKSYmcj49MCYmcjx0KX1yZXNldENlbGxzTWV0YSgpe1huKHRoaXMuaG90LmdldENlbGxzTWV0YSgpLGU9Pntjb25zdCB0PWU7dFt0Rl0mJihkZWxldGUgdC5za2lwUm93T25QYXN0'@; put 'ZSxkZWxldGUgdFt0Rl0pfSl9ZGVzdHJveSgpe2tfKHRoaXMsSDQsbnVsbCksc3VwZXIuZGVzdHJveSgpfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLGZ1bmN0aW9uIHNadChuLGUpe0lWZShuLGUpLGUuYWRkKG4pfSh0aGlzLE9WZSkseXgodGhpcyxINCx7d3JpdGFibGU6ITAsdmFs'@; put 'dWU6dm9pZCAwfSkseXgodGhpcyxyZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHl4KHRoaXMsaWZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx5eCh0aGlzLG9mZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSkseXgodGhpcyxhZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZv'@; put 'aWQgMH0pLHl4KHRoaXMsc2ZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxrXyh0aGlzLEg0LG51bGwpLGtfKHRoaXMscmZlLCh0LHIpPT50aGlzLmlzSGlkZGVuKHIpPzA6dCksa18odGhpcyxpZmUsKHQscixpKT0+e2lmKCExPT09dGhpcy5nZXRTZXR0aW5nKCJjb3B5UGFzdGVFbmFi'@; put 'bGVkIikpe2NvbnN0IG89aTt0aGlzLmlzSGlkZGVuKHQpPyEwIT09aS5za2lwUm93T25QYXN0ZSYmKGkuc2tpcFJvd09uUGFzdGU9ITAsb1t0Rl09ITApOm9bdEZdJiYoZGVsZXRlIGkuc2tpcFJvd09uUGFzdGUsZGVsZXRlIG9bdEZdKX1pZih0aGlzLmlzSGlkZGVuKHQtMSkpaS5jbGFzc05h'@; put 'bWU9aS5jbGFzc05hbWV8fCIiLC0xPT09aS5jbGFzc05hbWUuaW5kZXhPZigiYWZ0ZXJIaWRkZW5Sb3ciKSYmKGkuY2xhc3NOYW1lKz0iIGFmdGVySGlkZGVuUm93Iik7ZWxzZSBpZihpLmNsYXNzTmFtZSl7Y29uc3Qgbz1pLmNsYXNzTmFtZS5zcGxpdCgiICIpO2lmKG8ubGVuZ3RoPjApe2Nv'@; put 'bnN0IGE9by5pbmRleE9mKCJhZnRlckhpZGRlblJvdyIpO2E+LTEmJm8uc3BsaWNlKGEsMSksaS5jbGFzc05hbWU9by5qb2luKCIgIil9fX0pLGtfKHRoaXMsb2ZlLHQ9PntpZih0aGlzLmdldFNldHRpbmcoImNvcHlQYXN0ZUVuYWJsZWQiKSlyZXR1cm4gdDtjb25zdCByPVtdLGk9KG8sYSxs'@; put 'LHUpPT57ci5wdXNoKHtzdGFydFJvdzpvLGVuZFJvdzphLHN0YXJ0Q29sOmwsZW5kQ29sOnV9KX07cmV0dXJuIFhuKHQsbz0+e2NvbnN0IGE9bztsZXQgbD0hMCx1PTA7VmEoYS5zdGFydFJvdyxhLmVuZFJvdyxnPT57dGhpcy5pc0hpZGRlbihnKT8obHx8aSh1LGctMSxhLnN0YXJ0Q29sLGEu'@; put 'ZW5kQ29sKSxsPSEwKToobCYmKHU9ZyksZz09PWEuZW5kUm93JiZpKHUsZyxhLnN0YXJ0Q29sLGEuZW5kQ29sKSxsPSExKX0pfSkscn0pLGtfKHRoaXMsYWZlLCh0LHIpPT57aWYoIXRoaXMuZ2V0U2V0dGluZygiaW5kaWNhdG9ycyIpfHx0PDApcmV0dXJuO2NvbnN0IGk9W107dD49MSYmdGhp'@; put 'cy5pc0hpZGRlbih0LTEpJiZpLnB1c2goImFmdGVySGlkZGVuUm93IiksdDx0aGlzLmhvdC5jb3VudFJvd3MoKS0xJiZ0aGlzLmlzSGlkZGVuKHQrMSkmJmkucHVzaCgiYmVmb3JlSGlkZGVuUm93IiksWXIocixpKX0pLGtfKHRoaXMsc2ZlLHQ9Pnt0Lml0ZW1zLnB1c2goe25hbWU6dnN9LGZ1'@; put 'bmN0aW9uIG5adChuKXtyZXR1cm57a2V5OiJoaWRkZW5fcm93c19oaWRlIixuYW1lKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkQWN0aXZlKCk7bGV0IHQ9MDtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdFtyLCxpXT1lO3ItaSE9PTAmJih0PTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0'@; put 'ZWRQaHJhc2UoemNlLHQpfSxjYWxsYmFjaygpe2NvbnN0IGU9dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWUpcmV0dXJuO2NvbnN0e2Zyb206dCx0bzpyfT1lO2lmKG51bGw9PT10LnJvd3x8bnVsbD09PXIucm93KXJldHVybjtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKHQu'@; put 'cm93LHIucm93KSwwKSxvPU1hdGgubWF4KHQucm93LHIucm93KSxhPVtdO2ZvcihsZXQgZz1pO2c8PW87Zys9MSlhLnB1c2goZyk7bi5oaWRlUm93cyhhKTtjb25zdCB1PXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGFbYS5sZW5ndGgtMV0sMSwhMCk7bnVs'@; put 'bCE9PXUmJk51bWJlci5pc0ludGVnZXIodSkmJnU+PTA/dGhpcy5zZWxlY3RSb3dzKHUpOnRoaXMuZGVzZWxlY3RDZWxsKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExLGhpZGRlbigpe3JldHVybiEodGhpcy5zZWxlY3Rpb24uaXNT'@; put 'ZWxlY3RlZEJ5Um93SGVhZGVyKCl8fHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpKX19fSh0aGlzKSxmdW5jdGlvbiByWnQobil7Y29uc3QgZT1bXTtyZXR1cm57a2V5OiJoaWRkZW5fcm93c19zaG93IixuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShX'@; put 'Y2UsZS5sZW5ndGg+MT8xOjApfSxjYWxsYmFjaygpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm47bGV0IHQ9ZVswXSxyPWVbZS5sZW5ndGgtMV07dD10aGlzLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh0LTEsLTEpPz8wLHI9dGhpcy5yb3dJbmRleE1hcHBlci5nZXRO'@; put 'ZWFyZXN0Tm90SGlkZGVuSW5kZXgocisxLDEpPz90aGlzLmNvdW50Um93cygpLTEsbi5zaG93Um93cyhlKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5yZW5kZXIoKSxyLXQrMT09PXRoaXMuY291bnRSb3dzKCl8fHRoaXMuc2VsZWN0Um93cyh0LHIpfSxkaXNhYmxlZDoh'@; put 'MSxoaWRkZW4oKXtjb25zdCB0PV9jKG4uZ2V0SGlkZGVuUm93cygpLE89PnRoaXMudG9QaHlzaWNhbFJvdyhPKSk7aWYoIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpJiYhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fHQubGVuZ3RoPDEpcmV0dXJu'@; put 'ITA7ZS5sZW5ndGg9MDtjb25zdCByPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFyKXJldHVybiEwO2NvbnN0IGk9ci5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxvPXIuZ2V0Qm90dG9tRW5kQ29ybmVyKCkucm93LGE9dGhpcy5yb3dJbmRleE1hcHBlcixsPW51bGwhPT1pP2Eu'@; put 'Z2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChpKTpudWxsLHU9bnVsbCE9PW8/YS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KG8pOm51bGwsZz1hLmdldE5vdFRyaW1tZWRJbmRleGVzKCksRT1bXTtpZihpIT09byl7aWYobnVsbD09PWl8fG51bGw9PT1vKXJldHVybiEwO2lmKG8t'@; put 'aSsxPih1Pz8wKS0obD8/MCkrMSl7Y29uc3QgZWU9Zy5zbGljZShpLG8rMSk7RS5wdXNoKC4uLmVlLmZpbHRlcih2ZT0+dC5pbmNsdWRlcyh2ZSkpKX19ZWxzZSBpZigwPT09bCYmbnVsbCE9PWkmJmw8aSlFLnB1c2goLi4uZy5zbGljZSgwLGkpKTtlbHNlIGlmKG51bGw9PT1sKUUucHVzaCgu'@; put 'Li5nLnNsaWNlKDAsdGhpcy5jb3VudFJvd3MoKSkpO2Vsc2V7Y29uc3QgTz10aGlzLmNvdW50Um93cygpLTEsWj1hLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoYS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoTywtMSk/P08pO2lmKG51bGw9PT11KXJldHVybiEwO251bGwhPT1vJiZ1'@; put 'PT09WiYmTz5vJiZFLnB1c2goLi4uZy5zbGljZShvKzEpKX1yZXR1cm4gWG4oRSxPPT57ZS5wdXNoKHRoaXMudG9WaXN1YWxSb3coTykpfSksMD09PWUubGVuZ3RofX19KHRoaXMpKX0pfX1mdW5jdGlvbiB1WnQoKXtjb25zdCBuPXRoaXMuZ2V0U2V0dGluZygicm93cyIpO0FycmF5LmlzQXJy'@; put 'YXkobikmJnRoaXMuaGlkZVJvd3Mobil9ZnVuY3Rpb24gTlZlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBGVmUobixlLHQpe2lmKCFl'@; put 'LmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gbyQobixlKXtyZXR1cm4gZnVuY3Rpb24gZlp0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6'@; put 'ZS52YWx1ZX0obixGVmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gUFZlKG4sZSx0KXtOVmUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIG5GKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gcFp0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBu'@; put 'ZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixGVmUobixlLCJzZXQiKSx0KSx0fUdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5GcmVlemUiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3Rl'@; put 'cigiYWZ0ZXJDb2x1bW5GcmVlemUiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uVW5mcmVlemUiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb2x1bW5VbmZyZWV6ZSIpO2NvbnN0IEhWZT0ibWFudWFsQ29sdW1uRnJlZXplIjt2YXIgUl89bmV3'@; put 'IFdlYWtNYXAsVlZlPW5ldyBXZWFrU2V0LGxmZT1uZXcgV2Vha01hcDtjbGFzcyBfWnQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gSFZlfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDExMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90'@; put 'LmdldFNldHRpbmdzKClbSFZlXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fCh0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZT0+eyhmdW5jdGlvbiBnWnQobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQg'@; put 'dG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9KSh0aGlzLFZWZSx5WnQpLmNhbGwodGhpcyxlKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uTW92ZSIsbyQodGhpcyxsZmUpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJsZVBsdWdpbigpe25G'@; put 'KHRoaXMsUl8sITEpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWZyZWV6ZUNvbHVtbihlKXtjb25zdCB0PXRoaXMuaG90LmdldFNldHRpbmdzKCkscj0odC5m'@; put 'aXhlZENvbHVtbnNTdGFydD8/MCk8dGhpcy5ob3QuY291bnRDb2xzKCkmJmU+KHQuZml4ZWRDb2x1bW5zU3RhcnQ/PzApLTE7byQodGhpcyxSXyl8fG5GKHRoaXMsUl8sITApLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbkZyZWV6ZSIsZSxyKSYmKHImJih0aGlzLmhvdC5j'@; put 'b2x1bW5JbmRleE1hcHBlci5tb3ZlSW5kZXhlcyhlLHQuZml4ZWRDb2x1bW5zU3RhcnQ/PzApLHQuX2ZpeGVkQ29sdW1uc1N0YXJ0Kz0xKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5GcmVlemUiLGUscikpfXVuZnJlZXplQ29sdW1uKGUpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2V0'@; put 'dGluZ3MoKSxyPXQuZml4ZWRDb2x1bW5zU3RhcnQ/PzAsaT1yPjAmJmU8PXItMTtvJCh0aGlzLFJfKXx8bkYodGhpcyxSXywhMCksITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uVW5mcmVlemUiLGUsaSkmJihpJiYodC5fZml4ZWRDb2x1bW5zU3RhcnQtPTEsdGhpcy5ob3Qu'@; put 'Y29sdW1uSW5kZXhNYXBwZXIubW92ZUluZGV4ZXMoZSx0LmZpeGVkQ29sdW1uc1N0YXJ0Pz8wKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uVW5mcmVlemUiLGUsaSkpfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLGZ1bmN0aW9uIG1adChuLGUpe05WZShuLGUpLGUuYWRk'@; put 'KG4pfSh0aGlzLFZWZSksUFZlKHRoaXMsUl8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFBWZSh0aGlzLGxmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksbkYodGhpcyxSXywhMSksbkYodGhpcyxsZmUsKHQscik9PntpZihvJCh0aGlzLFJfKSl7Y29uc3QgaT10aGlzLmhvdC5n'@; put 'ZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0Pz8wO2lmKHI8aXx8dC5zb21lKG89Pm88aSkpcmV0dXJuITF9fSl9fWZ1bmN0aW9uIHladChuKXtuLml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LGZ1bmN0aW9uIGRadChuKXtyZXR1cm57a2V5OiJmcmVlemVfY29sdW1uIixuYW1l'@; put 'KCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh2Y2UpfSxjYWxsYmFjayhlLHQpe2NvbnN0W3tzdGFydDp7Y29sOnJ9fV09dDtuLmZyZWV6ZUNvbHVtbihyKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5yZW5kZXIoKX0saGlkZGVuKCl7Y29uc3QgZT10aGlz'@; put 'LmdldFNlbGVjdGVkUmFuZ2UoKTtsZXQgdD0hMTtyZXR1cm4odm9pZCAwPT09ZXx8ZS5sZW5ndGg+MXx8ZVswXS5mcm9tLmNvbCE9PWVbMF0udG8uY29sfHxlWzBdLmZyb20uY29sPD0odGhpcy5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0Pz8wKS0xKSYmKHQ9ITApLHR9fX0odGhp'@; put 'cyksZnVuY3Rpb24gaFp0KG4pe3JldHVybntrZXk6InVuZnJlZXplX2NvbHVtbiIsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoX2NlKX0sY2FsbGJhY2soZSx0KXtjb25zdFt7c3RhcnQ6e2NvbDpyfX1dPXQ7bi51bmZyZWV6ZUNvbHVtbihyKSx0aGlzLnZpZXcuYWRq'@; put 'dXN0RWxlbWVudHNTaXplKCksdGhpcy5yZW5kZXIoKX0saGlkZGVuKCl7Y29uc3QgZT10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTtsZXQgdD0hMTtpZih2b2lkIDA9PT1lKXQ9ITA7ZWxzZSBpZihlLmxlbmd0aD4xKXQ9ITA7ZWxzZXtjb25zdCByPWVbMF0uZnJvbS5jb2wsaT1lWzBdLnRvLmNv'@; put 'bCxvPXRoaXMuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydD8/MDsociE9PWl8fG51bGwhPT1yJiZyPj1vKSYmKHQ9ITApfXJldHVybiB0fX19KHRoaXMpKX1jb25zdCBieD0icHgiLFVWZT1jbGFzcyBiWnR7YXBwZW5kVG8oZSl7ZS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50KSx0'@; put 'aGlzLnN0YXRlPTJ9YnVpbGQoKXswPT09dGhpcy5zdGF0ZSYmKHRoaXMuX2VsZW1lbnQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuc3RhdGU9MSl9ZGVzdHJveSgpe3RoaXMuaXNBcHBlbmRlZCgpJiZ0aGlzLl9lbGVtZW50LnBhcmVudEVsZW1lbnQ/'@; put 'LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLnN0YXRlPTB9aXNBcHBlbmRlZCgpe3JldHVybiAyPT09dGhpcy5zdGF0ZX1pc0J1aWx0KCl7cmV0dXJuIHRoaXMuc3RhdGU+PTF9c2V0UG9zaXRpb24oZSx0KXt3MChlKSYmKHRoaXMuX2VsZW1lbnQu'@; put 'c3R5bGUudG9wPWUrYngpLHcwKHQpJiYodGhpcy5fZWxlbWVudC5zdHlsZVt0aGlzLmlubGluZVByb3BlcnR5XT10K2J4KX1nZXRQb3NpdGlvbigpe2NvbnN0IGU9dGhpcy5fZWxlbWVudC5zdHlsZTtyZXR1cm57dG9wOmUudG9wP051bWJlci5wYXJzZUludChlLnRvcCwxMCk6MCxzdGFydDpl'@; put 'W3RoaXMuaW5saW5lUHJvcGVydHldP051bWJlci5wYXJzZUludChlW3RoaXMuaW5saW5lUHJvcGVydHldLDEwKTowfX1zZXRTaXplKGUsdCl7dzAoZSkmJih0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoPWUrYngpLHcwKHQpJiYodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQ9dCtieCl9Z2V0'@; put 'U2l6ZSgpe3JldHVybnt3aWR0aDp0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoP051bWJlci5wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoLDEwKTowLGhlaWdodDp0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD9OdW1iZXIucGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5o'@; put 'ZWlnaHQsMTApOjB9fXNldE9mZnNldChlLHQpe2lmKHcwKGUpJiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A9ZStieCksdzAodCkpe2NvbnN0IHI9YG1hcmdpbiR7SzAodGhpcy5pbmxpbmVQcm9wZXJ0eSl9YDt0aGlzLl9lbGVtZW50LnN0eWxlW3JdPXQrYnh9fWdldE9mZnNldCgp'@; put 'e2NvbnN0IGU9dGhpcy5fZWxlbWVudC5zdHlsZSx0PWBtYXJnaW4ke0swKHRoaXMuaW5saW5lUHJvcGVydHkpfWA7cmV0dXJue3RvcDplLm1hcmdpblRvcD9OdW1iZXIucGFyc2VJbnQoZS5tYXJnaW5Ub3AsMTApOjAsc3RhcnQ6ZVt0XT9OdW1iZXIucGFyc2VJbnQoZVt0XSwxMCk6MH19Y29u'@; put 'c3RydWN0b3IoZSl7dGhpcy5fZWxlbWVudD1udWxsLHRoaXMuc3RhdGU9MCx0aGlzLmhvdD1lLHRoaXMuaW5saW5lUHJvcGVydHk9ZS5pc1J0bCgpPyJyaWdodCI6ImxlZnQifX0sU1p0PWNsYXNzIENadCBleHRlbmRzIFVWZXtidWlsZCgpe3N1cGVyLmJ1aWxkKCksWXIodGhpcy5fZWxlbWVu'@; put 'dCwiaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodCIpfX0sVFp0PWNsYXNzIE1adCBleHRlbmRzIFVWZXtidWlsZCgpe3N1cGVyLmJ1aWxkKCksWXIodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZSIpfX07ZnVuY3Rpb24gelZlKG4sZSl7aWYoZS5o'@; put 'YXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBXVmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIg'@; put 'cHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gT2EobixlKXtyZXR1cm4gZnVuY3Rpb24geFp0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixXVmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gWGYobixlLHQpe3pW'@; put 'ZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gTmQobixlLHQpe3JldHVybiBmdW5jdGlvbiBBWnQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUg'@; put 'ZmllbGQiKTtlLnZhbHVlPXR9fShuLFdWZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gckYobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gaUYo'@; put 'bixlKXt6VmUobixlKSxlLmFkZChuKX1Hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uTW92ZSIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbHVtbk1vdmUiKTtjb25zdCB1ZmU9Im1hbnVhbENvbHVtbk1vdmUiLFlWZT0iaHRfX21hbnVhbENvbHVt'@; put 'bk1vdmUiLGEkPSJzaG93LXVpIixkZmU9Im9uLW1vdmluZy0tY29sdW1ucyIsaGZlPSJhZnRlci1zZWxlY3Rpb24tLWNvbHVtbnMiO3ZhciBKMj1uZXcgV2Vha01hcCxaNz1uZXcgV2Vha01hcCxNNj1uZXcgV2Vha01hcCxvRj1uZXcgV2Vha01hcCxUNj1uZXcgV2Vha01hcCxlZj1uZXcgV2Vh'@; put 'a01hcCxzJD1uZXcgV2Vha01hcCxhRj1uZXcgV2Vha01hcCxmZmU9bmV3IFdlYWtNYXAsbCQ9bmV3IFdlYWtNYXAsYyQ9bmV3IFdlYWtNYXAsWlZlPW5ldyBXZWFrU2V0LEdWZT1uZXcgV2Vha1NldCxwZmU9bmV3IFdlYWtNYXAsJFZlPW5ldyBXZWFrU2V0LGdmZT1uZXcgV2Vha01hcCxxVmU9'@; put 'bmV3IFdlYWtTZXQsS1ZlPW5ldyBXZWFrU2V0LG1mZT1uZXcgV2Vha01hcCx2ZmU9bmV3IFdlYWtNYXA7Y2xhc3MgUlp0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIHVmZX1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAxMjB9aXNFbmFibGVk'@; put 'KCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3VmZV19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLE9hKHRoaXMscGZlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLE9hKHRoaXMs'@; put 'Z2ZlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXJPdXRzaWRlIiwoZSx0LHIsaSk9PnJGKHRoaXMscVZlLE9adCkuY2FsbCh0aGlzLGkpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsT2EodGhpcyxtZmUpKSx0aGlzLmFkZEhvb2soImFmdGVyTG9h'@; put 'ZERhdGEiLE9hKHRoaXMsdmZlKSksdGhpcy5idWlsZFBsdWdpblVJKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLFlyKHRoaXMuaG90LnJvb3RFbGVtZW50LFlWZSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1'@; put 'Z2luKCksdGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXtrbyh0aGlzLmhvdC5yb290RWxlbWVudCxZVmUpLHRoaXMudW5yZWdpc3RlckV2ZW50cygpLE9hKHRoaXMsSjIpLmRlc3Ryb3koKSxPYSh0aGlzLFo3KS5kZXN0cm95'@; put 'KCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfW1vdmVDb2x1bW4oZSx0KXtyZXR1cm4gdGhpcy5tb3ZlQ29sdW1ucyhbZV0sdCl9bW92ZUNvbHVtbnMoZSx0KXtjb25zdCByPU9hKHRoaXMscyQpLGk9dGhpcy5pc01vdmVQb3NzaWJsZShlLHQpLG89dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNv'@; put 'bHVtbk1vdmUiLGUsdCxyLGkpO2lmKE5kKHRoaXMscyQsdm9pZCAwKSwhMT09PW8pcmV0dXJuITE7aSYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIubW92ZUluZGV4ZXMoZSx0KTtjb25zdCBhPWkmJnRoaXMuaXNDb2x1bW5PcmRlckNoYW5nZWQoZSx0KTtyZXR1cm4gdGhpcy5ob3QucnVu'@; put 'SG9va3MoImFmdGVyQ29sdW1uTW92ZSIsZSx0LHIsaSxhKSxhfWRyYWdDb2x1bW4oZSx0KXtyZXR1cm4gdGhpcy5kcmFnQ29sdW1ucyhbZV0sdCl9ZHJhZ0NvbHVtbnMoZSx0KXtjb25zdCByPXRoaXMuY291bnRGaW5hbEluZGV4KGUsdCk7cmV0dXJuIE5kKHRoaXMscyQsdCksdGhpcy5tb3Zl'@; put 'Q29sdW1ucyhlLHIpfWlzTW92ZVBvc3NpYmxlKGUsdCl7Y29uc3Qgcj10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLGk9ZS5sZW5ndGgrdD5yLG89dDwwLGE9ZS5zb21lKHU9PnU8MCksbD1lLnNvbWUodT0+dT49cik7cmV0dXJuIShpfHxv'@; put 'fHxhfHxsKX1pc0NvbHVtbk9yZGVyQ2hhbmdlZChlLHQpe3JldHVybiBlLnNvbWUoKHIsaSk9PnItaSE9PXQpfWNvdW50RmluYWxJbmRleChlLHQpe2NvbnN0IHI9bTEoZSwoaSxvKT0+bzx0P2krMTppLDApO3JldHVybiB0LXJ9Z2V0Q29sdW1uc1dpZHRoKGUsdCl7Y29uc3Qgcj10aGlzLmhv'@; put 'dC5jb2x1bW5JbmRleE1hcHBlcjtsZXQgaT0wO2ZvcihsZXQgbz1lO288PXQ7bys9MSl7Y29uc3QgYT1yLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobyk7bzwwP2krPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93SGVhZGVyV2lkdGgoKXx8MDpudWxsIT09YSYmKGkr'@; put 'PXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuZ2V0Q29sdW1uV2lkdGgoYSl8fDApfXJldHVybiBpfW1vdmVCeVNldHRpbmdzT3JMb2FkKCl7Y29uc3QgZT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3VmZV07QXJyYXkuaXNBcnJheShlKSYmdGhpcy5tb3ZlQ29sdW1ucyhlLDApfWlzRml4ZWRD'@; put 'b2x1bW5zU3RhcnQoZSl7cmV0dXJuIGU8KHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQ/PzApfXByZXBhcmVDb2x1bW5zVG9Nb3ZpbmcoZSx0KXtjb25zdCByPVtdO3JldHVybiBWYShlLHQsaT0+e3IucHVzaChpKX0pLHJ9cmVmcmVzaFBvc2l0aW9ucygpe2NvbnN0'@; put 'IGU9dGhpcy5ob3Qudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbigpPz8wLHQ9T2EodGhpcyxhRik/PzAscj1PYSh0aGlzLGMkKT8/MCxpPU9hKHRoaXMsZmZlKT8/MDt0aGlzLmlzRml4ZWRDb2x1bW5zU3RhcnQodCkmJmU+MCYmdGhpcy5ob3Quc2Nyb2xsVmlld3BvcnRUbyh7Y29s'@; put 'OnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChlLTEsLTEpPz92b2lkIDB9KTtjb25zdCBvPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsYT10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnNjcm9sbGFibGVFbGVtZW50LGw9YSBpbnN0YW5j'@; put 'ZW9mIFdpbmRvdz9hLnNjcm9sbFg6YS5zY3JvbGxMZWZ0O2xldCB1PXRoaXMuaG90LnZpZXcuVEhFQUQub2Zmc2V0TGVmdCt0aGlzLmdldENvbHVtbnNXaWR0aCgwLHQtMSk7Y29uc3QgZz1vLmhpZGVyLm9mZnNldFdpZHRoLEU9by5UQk9EWT8ub2Zmc2V0TGVmdD8/MCxPPU9hKHRoaXMsSjIp'@; put 'LmdldE9mZnNldCgpLnN0YXJ0LFo9T2EodGhpcyxKMikuZ2V0U2l6ZSgpLndpZHRoO2xldCBlZT0wO2NvbnN0IHZlPXJGKHRoaXMsWlZlLEladCkuY2FsbCh0aGlzLGEsbCxpKTtPYSh0aGlzLGwkKSYmKGVlPXRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5'@; put 'LmNsb25lPy53dFRhYmxlLmdldENvbHVtbkhlYWRlcigtMSk/Lm9mZnNldFdpZHRoPz8wKSx0aGlzLmlzRml4ZWRDb2x1bW5zU3RhcnQodCkmJih1Kz1sKSx1Kz1lZSx1PXJGKHRoaXMsR1ZlLERadCkuY2FsbCh0aGlzLHQsdSx2ZSxlLHIpO2xldCBNZT12ZSxIZT11O3ZlK1orTz49Zz9NZT1n'@; put 'LVotTzp2ZStPPEUrZWUmJihNZT1FK2VlK01hdGguYWJzKE8pKSx1Pj1nLTE/SGU9Zy0xOjA9PT1IZT9IZT0xOmEgaW5zdGFuY2VvZiBXaW5kb3cmJnQ8ciYmKEhlLT1pPD1hLnNjcm9sbFg/aTowKSxPYSh0aGlzLEoyKS5zZXRQb3NpdGlvbih2b2lkIDAsTWUpLE9hKHRoaXMsWjcpLnNldFBv'@; put 'c2l0aW9uKHZvaWQgMCxIZSl9cmVnaXN0ZXJFdmVudHMoKXtjb25zdHtkb2N1bWVudEVsZW1lbnQ6ZX09dGhpcy5ob3Qucm9vdERvY3VtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwibW91c2Vtb3ZlIix0PT5yRih0aGlzLCRWZSxMWnQpLmNhbGwodGhpcyx0KSks'@; put 'dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihlLCJtb3VzZXVwIiwoKT0+ckYodGhpcyxLVmUsTlp0KS5jYWxsKHRoaXMpKX11bnJlZ2lzdGVyRXZlbnRzKCl7dGhpcy5ldmVudE1hbmFnZXIuY2xlYXIoKX1idWlsZFBsdWdpblVJKCl7T2EodGhpcyxKMikuYnVpbGQoKSxPYSh0'@; put 'aGlzLFo3KS5idWlsZCgpfWRlc3Ryb3koKXtPYSh0aGlzLEoyKS5kZXN0cm95KCksT2EodGhpcyxaNykuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxpRih0aGlzLFpWZSksaUYodGhpcyxHVmUpLGlGKHRoaXMsJFZlKSxpRih0aGlzLHFW'@; put 'ZSksaUYodGhpcyxLVmUpLFhmKHRoaXMsSjIse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMsWjcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMsTTYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMsb0Yse3dyaXRhYmxlOiEwLHZhbHVlOnZv'@; put 'aWQgMH0pLFhmKHRoaXMsVDYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMsZWYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMscyQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMsYUYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhm'@; put 'KHRoaXMsZmZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxYZih0aGlzLGwkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxYZih0aGlzLGMkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxYZih0aGlzLHBmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWGYodGhpcyxn'@; put 'ZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFhmKHRoaXMsbWZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxYZih0aGlzLHZmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTmQodGhpcyxKMixuZXcgU1p0KHRoaXMuaG90KSksTmQodGhpcyxaNyxuZXcgVFp0KHRoaXMu'@; put 'aG90KSksTmQodGhpcyxNNixbXSksTmQodGhpcyxvRiwwKSxOZCh0aGlzLFQ2LCExKSxOZCh0aGlzLGVmLHt9KSxOZCh0aGlzLHBmZSwodCxyLGksbyk9Pntjb25zdCBhPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsbD10aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVh'@; put 'ZGVyKCksdT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCksZz1MYShBYSh0KSwic29ydEFjdGlvbiIpO2lmKCF1fHwhbHx8T2EodGhpcyxUNil8fDAhPT10LmJ1dHRvbnx8ZylyZXR1cm4gTmQodGhpcyxUNiwhMSksT2EodGhpcyxNNikubGVuZ3RoPTAsdm9pZCBrbyh0aGlzLmhv'@; put 'dC5yb290RWxlbWVudCxbZGZlLGEkXSk7Y29uc3QgRT1PYSh0aGlzLFo3KS5pc0J1aWx0KCkmJiFPYSh0aGlzLFo3KS5pc0FwcGVuZGVkKCksTz1PYSh0aGlzLEoyKS5pc0J1aWx0KCkmJiFPYSh0aGlzLEoyKS5pc0FwcGVuZGVkKCk7RSYmTyYmKE9hKHRoaXMsWjcpLmFwcGVuZFRvKGEuaGlk'@; put 'ZXIpLE9hKHRoaXMsSjIpLmFwcGVuZFRvKGEuaGlkZXIpKTtjb25zdHtmcm9tOlosdG86ZWV9PXUsdmU9TWF0aC5taW4oWi5jb2w/PzAsZWUuY29sPz8wKSxNZT1NYXRoLm1heChaLmNvbD8/MCxlZS5jb2w/PzApO2lmKHIucm93PDAmJnIuY29sPj12ZSYmci5jb2w8PU1lKXtvLmNvbHVtbj0h'@; put 'MCxOZCh0aGlzLFQ2LCEwKTtjb25zdCBIZT1pLmZpcnN0Q2hpbGQ/ZkFlKHQsaS5maXJzdENoaWxkKS54OnQub2Zmc2V0WDtPYSh0aGlzLGVmKS5ldmVudFBhZ2VYPXQucGFnZVgsTmQodGhpcyxhRixyLmNvbCksT2EodGhpcyxlZikuVEQ9aSxPYSh0aGlzLGVmKS5jb2w9ci5jb2wsTmQodGhp'@; put 'cyxNNix0aGlzLnByZXBhcmVDb2x1bW5zVG9Nb3ZpbmcodmUsTWUpKSxOZCh0aGlzLGwkLCEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5yb3dIZWFkZXJzKSxOZCh0aGlzLG9GLHRoaXMuaG90LmNvdW50Q29scygpKSxOZCh0aGlzLGMkLHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1'@; put 'bW5zU3RhcnQpLE5kKHRoaXMsZmZlLFgwKHRoaXMuaG90LnJvb3RFbGVtZW50KS5sZWZ0KTtjb25zdCBXZT1PYSh0aGlzLGwkKT8tMTowLGF0PWEuaG9sZGVyLnNjcm9sbFRvcCthLmdldENvbHVtbkhlYWRlckhlaWdodCgwKSsxLEN0PXIuY29sPChPYSh0aGlzLGMkKT8/MCksQXQ9dGhpcy5o'@; put 'b3Qudmlldy5fd3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpLEt0PU1hdGguYWJzKEhlLSh0aGlzLmhvdC5pc1J0bCgpP2kub2Zmc2V0V2lkdGg6MCkpLHF0PXRoaXMuZ2V0Q29sdW1uc1dpZHRoKHZlLHIuY29sLTEpK0t0LGduPXRoaXMuZ2V0Q29s'@; put 'dW1uc1dpZHRoKFdlLHZlLTEpKyhDdD9BdDowKStxdDtPYSh0aGlzLEoyKS5zZXRQb3NpdGlvbihhdCxnbiksT2EodGhpcyxKMikuc2V0U2l6ZSh0aGlzLmdldENvbHVtbnNXaWR0aCh2ZSxNZSksYS5oaWRlci5vZmZzZXRIZWlnaHQtYXQpLE9hKHRoaXMsSjIpLnNldE9mZnNldCgwLC1xdCks'@; put 'WXIodGhpcy5ob3Qucm9vdEVsZW1lbnQsZGZlKX1lbHNlIGtvKHRoaXMuaG90LnJvb3RFbGVtZW50LGhmZSksTmQodGhpcyxUNiwhMSksT2EodGhpcyxNNikubGVuZ3RoPTB9KSxOZCh0aGlzLGdmZSwodCxyLGksbyk9PnshdGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpfHwhT2Eo'@; put 'dGhpcyxUNil8fChPYSh0aGlzLE02KS5pbmRleE9mKHIuY29sKT4tMT9rbyh0aGlzLmhvdC5yb290RWxlbWVudCxhJCk6WXIodGhpcy5ob3Qucm9vdEVsZW1lbnQsYSQpLG8ucm93PSEwLG8uY29sdW1uPSEwLG8uY2VsbD0hMCxOZCh0aGlzLGFGLHIuY29sKSxPYSh0aGlzLGVmKS5URD1pKX0p'@; put 'LE5kKHRoaXMsbWZlLCgpPT57Y29uc3QgdD10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLG89dC5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoMCkrMSt0LmhvbGRlci5zY3JvbGxUb3A7T2EodGhpcyxKMikuc2V0UG9zaXRpb24obyksT2EodGhpcyxKMikuc2V0U2l6ZSh2b2lkIDAsdC5oaWRlci5v'@; put 'ZmZzZXRIZWlnaHQtbyl9KSxOZCh0aGlzLHZmZSwoKT0+e3RoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKX0pfX1mdW5jdGlvbiBJWnQobixlLHQpe2lmKHRoaXMuaG90LmlzUnRsKCkpe2NvbnN0IHI9dGhpcy5ob3Qucm9vdFdpbmRvdyxpPVpkKHRoaXMuaG90LnJvb3RFbGVtZW50KSxvPXIu'@; put 'aW5uZXJXaWR0aC10LWk7cmV0dXJuIHIuaW5uZXJXaWR0aC1PYSh0aGlzLGVmKS5ldmVudFBhZ2VYLW8tKG4gaW5zdGFuY2VvZiBXaW5kb3c/MDplKX1yZXR1cm4gT2EodGhpcyxlZikuZXZlbnRQYWdlWC0odC0obiBpbnN0YW5jZW9mIFdpbmRvdz8wOmUpKX1mdW5jdGlvbiBEWnQobixlLHQs'@; put 'cixpKXtpZihuPDApT2EodGhpcyxlZikuY29sPWk+MD8wOnI+MD9yLTE6cjtlbHNlIGlmKE9hKHRoaXMsZWYpLlRELm9mZnNldFdpZHRoLzIrZTw9dCl7Y29uc3Qgbz1uPj1PYSh0aGlzLG9GKT9PYSh0aGlzLG9GKS0xOm47T2EodGhpcyxlZikuY29sPW8rMSxlKz1PYSh0aGlzLGVmKS5URC5v'@; put 'ZmZzZXRXaWR0aH1lbHNlIE9hKHRoaXMsZWYpLmNvbD1uO3JldHVybiBlfWZ1bmN0aW9uIExadChuKXtPYSh0aGlzLFQ2KSYmKE9hKHRoaXMsZWYpLmV2ZW50UGFnZVg9bi5wYWdlWCx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKSl9ZnVuY3Rpb24gT1p0KG4pe09hKHRoaXMsVDYpJiYobi5yb3c9'@; put 'ITAsbi5jb2x1bW49ITAsbi5jZWxsPSEwKX1mdW5jdGlvbiBOWnQoKXtjb25zdCBuPU9hKHRoaXMsZWYpLmNvbCxlPU9hKHRoaXMsTTYpLmxlbmd0aDtpZihOZCh0aGlzLGFGLHZvaWQgMCksTmQodGhpcyxUNiwhMSksa28odGhpcy5ob3Qucm9vdEVsZW1lbnQsW2RmZSxhJCxoZmVdKSx0aGlz'@; put 'LmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJllyKHRoaXMuaG90LnJvb3RFbGVtZW50LGhmZSksZTwxfHx2b2lkIDA9PT1uKXJldHVybjtjb25zdCB0PU9hKHRoaXMsTTYpWzBdLHI9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih0KSxpPXRoaXMuZHJhZ0NvbHVt'@; put 'bnMoT2EodGhpcyxNNiksbik7aWYoT2EodGhpcyxNNikubGVuZ3RoPTAsITA9PT1pKXt0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnJlbmRlcigpO2NvbnN0IG89dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4ocik7dGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhvLG8r'@; put 'ZS0xKX19ZnVuY3Rpb24gWFZlKG4sZT0iaG9yaXpvbnRhbCIpe2NvbnN0IHQ9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPSJ2ZXJ0aWNhbCI9PT1lP3QuaGVpZ2h0OnQud2lkdGgsaT0idmVydGljYWwiPT09ZT9uLm9mZnNldEhlaWdodDpuLm9mZnNldFdpZHRoO2lmKCFOdW1iZXIuaXNG'@; put 'aW5pdGUocil8fCFOdW1iZXIuaXNGaW5pdGUoaSl8fHI8PTB8fGk8PTB8fHI+PWkmJnItaTw9MSlyZXR1cm4gMTtjb25zdCBvPXIvaTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKG8pJiZvPjA/bzoxfWZ1bmN0aW9uIFFWZShuLGUpe3JldHVybiFOdW1iZXIuaXNGaW5pdGUoZSl8fGU8PTA/bjpN'@; put 'YXRoLnJvdW5kKG4vZSl9ZnVuY3Rpb24gSlZlKG4sZSl7cmV0dXJuIW4ucGFyZW50Tm9kZXx8ZT4xfWZ1bmN0aW9uIGVCZShuLGUpe3JldHVybiEhbj8ucGFyZW50Tm9kZSYmZT49Mn1mdW5jdGlvbiB0QmUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5p'@; put 'dGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIG5CZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVy'@; put 'biBlLmdldChuKX1mdW5jdGlvbiBybyhuLGUpe3JldHVybiBmdW5jdGlvbiBGWnQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLG5CZShuLGUsImdldCIpKX1mdW5jdGlvbiBXaChuLGUsdCl7dEJlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBPcyhuLGUsdCl7'@; put 'cmV0dXJuIGZ1bmN0aW9uIFBadChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sbkJlKG4sZSwic2V0Iiks'@; put 'dCksdH1mdW5jdGlvbiB3eChuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBDeChuLGUpe3RCZShuLGUpLGUuYWRkKG4pfWNvbnN0IHUkPSJtYW51'@; put 'YWxDb2x1bW5SZXNpemUiO3ZhciB0Zj1uZXcgV2Vha01hcCxTeD1uZXcgV2Vha01hcCxLMz1uZXcgV2Vha01hcCxzRj1uZXcgV2Vha01hcCxYMz1uZXcgV2Vha01hcCxyQmU9bmV3IFdlYWtNYXAsRzc9bmV3IFdlYWtNYXAsbEY9bmV3IFdlYWtNYXAsZCQ9bmV3IFdlYWtNYXAsUWY9bmV3IFdl'@; put 'YWtNYXAseDY9bmV3IFdlYWtNYXAsSV89bmV3IFdlYWtNYXAsY0Y9bmV3IFdlYWtNYXAsRF89bmV3IFdlYWtNYXAsdUY9bmV3IFdlYWtNYXAsX209bmV3IFdlYWtNYXAsRXg9bmV3IFdlYWtNYXAsZEY9bmV3IFdlYWtNYXAsaUJlPW5ldyBXZWFrU2V0LG9CZT1uZXcgV2Vha1NldCxhQmU9bmV3'@; put 'IFdlYWtTZXQsc0JlPW5ldyBXZWFrU2V0LGxCZT1uZXcgV2Vha1NldCxjQmU9bmV3IFdlYWtTZXQsX2ZlPW5ldyBXZWFrTWFwLHlmZT1uZXcgV2Vha01hcCxiZmU9bmV3IFdlYWtNYXA7Y2xhc3MgVlp0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIHUkfXN0YXRp'@; put 'YyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDEzMH1nZXQgaW5saW5lRGlyKCl7cmV0dXJuIHRoaXMuaG90LmlzUnRsKCk/InJpZ2h0IjoibGVmdCJ9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3UkXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8'@; put 'fChPcyh0aGlzLF9tLG5ldyBuXykscm8odGhpcyxfbSkuYWRkTG9jYWxIb29rKCJpbml0IiwoKT0+d3godGhpcyxpQmUsQlp0KS5jYWxsKHRoaXMpKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUscm8odGhpcyxfbSkpLE9zKHRoaXMsRXgs'@; put 'dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIub2JzZXJ2ZU1hcENoYW5nZShybyh0aGlzLF9tKSwoKT0+e3RoaXMuaG90LnZpZXc/LmludmFsaWRhdGVDb2x1bW5XaWR0aENhY2hlKCl9KSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIscm8odGhpcyxfZmUpLDEpLHRoaXMuYWRkSG9v'@; put 'aygiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixybyh0aGlzLHlmZSksMSksdGhpcy5hZGRIb29rKCJiZWZvcmVDb2x1bW5SZXNpemUiLHJvKHRoaXMsYmZlKSksdGhpcy5iaW5kRXZlbnRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBs'@; put 'dWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3JvKHRoaXMsRXgpJiYocm8odGhpcyxFeCkuY2FsbCh0aGlzKSxPcyh0aGlzLEV4LG51bGwpKSxPcyh0aGlzLGRGLHJvKHRoaXMsX20pLmdldFZhbHVlcygpKSx0aGlzLmhvdC5j'@; put 'b2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksc3VwZXIuZGlzYWJsZVBsdWdpbigpfXNhdmVNYW51YWxDb2x1bW5XaWR0aHMoKXtCVygiYHNhdmVNYW51YWxDb2x1bW5XaWR0aHMoKWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEg'@; put 'ZnV0dXJlIG1ham9yIHJlbGVhc2UuIFRoZSBQZXJzaXN0ZW50U3RhdGUgcGx1Z2luIGhhcyBiZWVuIHJlbW92ZWQuIil9bG9hZE1hbnVhbENvbHVtbldpZHRocygpe3JldHVybiBCVygiYGxvYWRNYW51YWxDb2x1bW5XaWR0aHMoKWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVk'@; put 'IGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuIFRoZSBQZXJzaXN0ZW50U3RhdGUgcGx1Z2luIGhhcyBiZWVuIHJlbW92ZWQuIiksW119c2V0TWFudWFsU2l6ZShlLHQpe2NvbnN0IHI9TWF0aC5tYXgodCwyMCksaT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGUpO3JldHVybiBybyh0aGlz'@; put 'LF9tKS5zZXRWYWx1ZUF0SW5kZXgoaSxyKSxyfWNsZWFyTWFudWFsU2l6ZShlKXtjb25zdCB0PXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSk7cm8odGhpcyxfbSkuc2V0VmFsdWVBdEluZGV4KHQsbnVsbCl9c2V0dXBIYW5kbGVQb3NpdGlvbihlKXtpZihKVmUoZSxybyh0aGlzLERfKSkp'@; put 'cmV0dXJuO09zKHRoaXMsdGYsZSk7Y29uc3R7X3d0OnR9PXRoaXMuaG90LnZpZXcscj10Lnd0VGFibGUuZ2V0Q29vcmRzKHJvKHRoaXMsdGYpKTtpZighcilyZXR1cm47Y29uc3QgaT1yLmNvbDtpZihudWxsPT09aXx8aTwwKXJldHVybjtjb25zdCBvPUhoKHJvKHRoaXMsdGYpKSxhPWk8dC5n'@; put 'ZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO2xldCBsO2NvbnN0IHU9ci5yb3c/PzAsZz1yLmNvbD8/MDthJiYobD10Lnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKHJvKHRoaXMsdGYpLHUsZykpLGx8fChsPXQud3RP'@; put 'dmVybGF5cy50b3BPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKHJvKHRoaXMsdGYpLHUsZykpLE9zKHRoaXMsU3gsdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChpKSksT3ModGhpcyxLMyxbXSk7Y29uc3QgRT10aGlzLmhvdC5z'@; put 'ZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKTt0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZCgpJiZFJiZYbih0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlKCk/P1tdLFo9Pntjb25zdCBlZT1aLmdl'@; put 'dFRvcFN0YXJ0Q29ybmVyKCkuY29sLHZlPVouZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sO251bGw9PT1lZXx8bnVsbD09PXZlfHxWYShlZSx2ZSxNZT0+e3JvKHRoaXMsSzMpLmluY2x1ZGVzKE1lKXx8cm8odGhpcyxLMykucHVzaChNZSl9KX0pLG51bGwhPT1ybyh0aGlzLFN4KSYmKHJvKHRo'@; put 'aXMsSzMpLmluY2x1ZGVzKHJvKHRoaXMsU3gpKXx8T3ModGhpcyxLMyxbcm8odGhpcyxTeCldKSxsJiYoT3ModGhpcyxsRixsLnN0YXJ0LTYpLE9zKHRoaXMsRzcsWmQocm8odGhpcyx0ZikpKSxPcyh0aGlzLGQkLFhWZShybyh0aGlzLHRmKSkpLHJvKHRoaXMsUWYpLnN0eWxlLnRvcD1gJHts'@; put 'LnRvcH1weGAscm8odGhpcyxRZikuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPWAke3JvKHRoaXMsbEYpK3JvKHRoaXMsRzcpfXB4YCxybyh0aGlzLFFmKS5zdHlsZS5oZWlnaHQ9YCR7b31weGAsdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQocm8odGhpcyxRZikpKSl9cmVmcmVzaEhh'@; put 'bmRsZVBvc2l0aW9uKCl7cm8odGhpcyxRZikuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPWAkeyhybyh0aGlzLGxGKT8/MCkrKHJvKHRoaXMsc0YpPz8wKX1weGB9c2V0dXBHdWlkZVBvc2l0aW9uKCl7Y29uc3QgZT1IaChybyh0aGlzLFFmKSksdD1OdW1iZXIucGFyc2VJbnQocm8odGhpcyxRZiku'@; put 'c3R5bGUudG9wLDEwKStlLHI9dGhpcy5ob3Qudmlldy5nZXRUYWJsZUhlaWdodCgpO1lyKHJvKHRoaXMsUWYpLCJhY3RpdmUiKSxZcihybyh0aGlzLHg2KSwiYWN0aXZlIikscm8odGhpcyx4Nikuc3R5bGUudG9wPWAke3R9cHhgLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKSxybyh0aGlz'@; put 'LHg2KS5zdHlsZS5oZWlnaHQ9ci1lKyJweCIsdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQocm8odGhpcyx4NikpfXJlZnJlc2hHdWlkZVBvc2l0aW9uKCl7cm8odGhpcyx4Nikuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPXJvKHRoaXMsUWYpLnN0eWxlW3RoaXMuaW5saW5lRGlyXX1o'@; put 'aWRlSGFuZGxlQW5kR3VpZGUoKXtrbyhybyh0aGlzLFFmKSwiYWN0aXZlIiksa28ocm8odGhpcyx4NiksImFjdGl2ZSIpfWNoZWNrSWZDb2x1bW5IZWFkZXIoZSl7Y29uc3QgdD1WdihlLFsiVEhFQUQiXSx0aGlzLmhvdC5yb290RWxlbWVudCkse3RvcE92ZXJsYXk6cix0b3BJbmxpbmVTdGFy'@; put 'dENvcm5lck92ZXJsYXk6aX09dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cztyZXR1cm5bci5jbG9uZS53dFRhYmxlLlRIRUFELGkuY2xvbmUud3RUYWJsZS5USEVBRF0uaW5jbHVkZXModCl9Z2V0Q2xvc2VzdFRIUGFyZW50KGUpe3JldHVybiJUQUJMRSIhPT1lLnRhZ05hbWU/IlRIIj09'@; put 'PWUudGFnTmFtZT9lOnRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KGUucGFyZW50Tm9kZSk6bnVsbH1hZnRlck1vdXNlRG93blRpbWVvdXQoKXtjb25zdCBlPWVCZShybyh0aGlzLHRmKSxybyh0aGlzLERfKSksdD0oKT0+e3RoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5o'@; put 'b3QucmVuZGVyKCl9LHI9KGksbyk9Pntjb25zdCBhPXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb2x1bW5SZXNpemUiLHJvKHRoaXMsWDMpLGksITApOyExIT09YSYmKCJudW1iZXIiPT10eXBlb2YgYSYmT3ModGhpcyxYMyxhKSx0aGlzLnNldE1hbnVhbFNpemUoaSxybyh0aGlzLFgzKT8/'@; put 'MCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uUmVzaXplIixybyh0aGlzLFgzKSxpLCEwKSxvJiZ0KCkpfTtybyh0aGlzLERfKT49MiYmKHJvKHRoaXMsSzMpLmxlbmd0aD4xPyhYbihybyh0aGlzLEszKSxvPT57cihvKX0pLHQoKSk6WG4ocm8odGhpcyxLMyksbz0+e3IobywhMCl9'@; put 'KSksT3ModGhpcyx1RixudWxsKSxPcyh0aGlzLERfLDApLGUmJnJvKHRoaXMsdGYpJiZ0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24ocm8odGhpcyx0ZikpfWJpbmRFdmVudHMoKXtjb25zdHtyb290V2luZG93OmUscm9vdEVsZW1lbnQ6dH09dGhpcy5ob3Q7dGhpcy5ldmVudE1hbmFnZXIuYWRk'@; put 'RXZlbnRMaXN0ZW5lcih0LCJtb3VzZW92ZXIiLHI9Pnd4KHRoaXMsb0JlLGpadCkuY2FsbCh0aGlzLHIpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQsIm1vdXNlZG93biIscj0+d3godGhpcyxhQmUsVVp0KS5jYWxsKHRoaXMscikpLHRoaXMuZXZlbnRNYW5hZ2VyLmFk'@; put 'ZEV2ZW50TGlzdGVuZXIoZSwibW91c2Vtb3ZlIixyPT53eCh0aGlzLHNCZSx6WnQpLmNhbGwodGhpcyxyKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihlLCJtb3VzZXVwIiwoKT0+d3godGhpcyxsQmUsV1p0KS5jYWxsKHRoaXMpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRF'@; put 'dmVudExpc3RlbmVyKHJvKHRoaXMsUWYpLCJjb250ZXh0bWVudSIsKCk9Pnd4KHRoaXMsY0JlLFladCkuY2FsbCh0aGlzKSl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihlKSxDeCh0aGlzLGlCZSksQ3godGhpcyxvQmUpLEN4KHRoaXMsYUJlKSxDeCh0'@; put 'aGlzLHNCZSksQ3godGhpcyxsQmUpLEN4KHRoaXMsY0JlKSxXaCh0aGlzLHRmLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXaCh0aGlzLFN4LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXaCh0aGlzLEszLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXaCh0aGlzLHNGLHt3'@; put 'cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXaCh0aGlzLFgzLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXaCh0aGlzLHJCZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxHNyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxsRix7d3JpdGFibGU6'@; put 'ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxkJCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxRZix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyx4Nix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxJXyx7d3JpdGFibGU6ITAsdmFsdWU6'@; put 'dm9pZCAwfSksV2godGhpcyxjRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxEXyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyx1Rix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxfbSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSks'@; put 'V2godGhpcyxFeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxkRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksV2godGhpcyxfZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFdoKHRoaXMseWZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXaCh0aGlz'@; put 'LGJmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT3ModGhpcyx0ZixudWxsKSxPcyh0aGlzLFN4LG51bGwpLE9zKHRoaXMsSzMsW10pLE9zKHRoaXMsc0YsbnVsbCksT3ModGhpcyxYMyxudWxsKSxPcyh0aGlzLHJCZSxudWxsKSxPcyh0aGlzLEc3LG51bGwpLE9zKHRoaXMsbEYsbnVs'@; put 'bCksT3ModGhpcyxkJCwxKSxPcyh0aGlzLFFmLHRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSksT3ModGhpcyx4Nix0aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikpLE9zKHRoaXMsSV8sbnVsbCksT3ModGhpcyxjRiwhMSksT3ModGhp'@; put 'cyxEXywwKSxPcyh0aGlzLHVGLG51bGwpLE9zKHRoaXMsRXgsbnVsbCksT3ModGhpcyxfZmUsKHQscik9PntsZXQgaT10O2lmKHRoaXMuZW5hYmxlZCl7Y29uc3Qgbz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHIpLGE9cm8odGhpcyxfbSkuZ2V0VmFsdWVBdEluZGV4KG8pO3RoaXMuaG90'@; put 'LmdldFNldHRpbmdzKClbdSRdJiZhJiYoaT1hKX1yZXR1cm4gaX0pLE9zKHRoaXMseWZlLCh0LHIpPT57Y29uc3QgaT1ybyh0aGlzLF9tKS5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihyKSk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBpP2k6dH0pLE9zKHRoaXMs'@; put 'YmZlLCgpPT57dGhpcy5ob3Qudmlldy5fd3Qud3RWaWV3cG9ydC5yZXNldEhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQoKX0pLFlyKHJvKHRoaXMsUWYpLCJtYW51YWxDb2x1bW5SZXNpemVyIiksWXIocm8odGhpcyx4NiksIm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZSIpfX1mdW5j'@; put 'dGlvbiBCWnQoKXtjb25zdCBuPXRoaXMuaG90LmdldFNldHRpbmdzKClbdSRdO0FycmF5LmlzQXJyYXkobik/KHRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57bi5mb3JFYWNoKChlLHQpPT57cm8odGhpcyxfbSkuc2V0VmFsdWVBdEluZGV4KHQsZSl9KX0sITApLE9zKHRoaXMsZEYsbikp'@; put 'OiEwPT09biYmQXJyYXkuaXNBcnJheShybyh0aGlzLGRGKSkmJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57cm8odGhpcyxkRikuZm9yRWFjaCgoZSx0KT0+e3JvKHRoaXMsX20pLnNldFZhbHVlQXRJbmRleCh0LGUpfSl9LCEwKX1mdW5jdGlvbiBqWnQobil7aWYoIURzZShBYShuKSkm'@; put 'JiEwIT09cm8odGhpcyxjRikmJnRoaXMuY2hlY2tJZkNvbHVtbkhlYWRlcihBYShuKSkpe2NvbnN0IGU9dGhpcy5nZXRDbG9zZXN0VEhQYXJlbnQoQWEobikpO2lmKCFlKXJldHVybjtjb25zdCB0PWUuZ2V0QXR0cmlidXRlKCJjb2xzcGFuIik7ZSYmKG51bGw9PT10fHwiMSI9PT10KSYmKHJv'@; put 'KHRoaXMsSV8pfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oZSkpfX1mdW5jdGlvbiBVWnQobil7QWEobikucGFyZW50Tm9kZT09PXRoaXMuaG90LnJvb3RFbGVtZW50JiZMYShBYShuKSwibWFudWFsQ29sdW1uUmVzaXplciIpJiZybyh0aGlzLHRmKSYmKHRoaXMuc2V0dXBIYW5kbGVQb3Np'@; put 'dGlvbihybyh0aGlzLHRmKSksdGhpcy5zZXR1cEd1aWRlUG9zaXRpb24oKSxPcyh0aGlzLElfLCEwKSxudWxsPT09cm8odGhpcyx1RikmJk9zKHRoaXMsdUYsdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+dGhpcy5hZnRlck1vdXNlRG93blRpbWVvdXQoKSw1MDApKSxPcyh0aGlzLERf'@; put 'LHJvKHRoaXMsRF8pKzEpLHRoaXMuc3RhcnRYPW4ucGFnZVgsT3ModGhpcyxYMyxybyh0aGlzLEc3KSkpfWZ1bmN0aW9uIHpadChuKXtpZihybyh0aGlzLElfKSl7Y29uc3QgdD1RVmUoKG4ucGFnZVgtdGhpcy5zdGFydFgpKnRoaXMuaG90LmdldERpcmVjdGlvbkZhY3RvcigpLHJvKHRoaXMs'@; put 'ZCQpKTtPcyh0aGlzLHNGLChybyh0aGlzLEc3KT8/MCkrdCksWG4ocm8odGhpcyxLMykscj0+e09zKHRoaXMsWDMsdGhpcy5zZXRNYW51YWxTaXplKHIscm8odGhpcyxzRik/PzApKX0pLHRoaXMucmVmcmVzaEhhbmRsZVBvc2l0aW9uKCksdGhpcy5yZWZyZXNoR3VpZGVQb3NpdGlvbigpfX1m'@; put 'dW5jdGlvbiBXWnQoKXtjb25zdCBuPSgpPT57dGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlzLmhvdC5yZW5kZXIoKX0sZT0odCxyKT0+e2NvbnN0IGk9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtblJlc2l6ZSIscm8odGhpcyxYMyksdCwhMSk7ITE9PT1pPyh0'@; put 'aGlzLnNldE1hbnVhbFNpemUodCxybyh0aGlzLEc3KT8/MCksT3ModGhpcyxYMyxybyh0aGlzLEc3KSkpOiJudW1iZXIiPT10eXBlb2YgaSYmKE9zKHRoaXMsWDMsaSksdGhpcy5zZXRNYW51YWxTaXplKHQscm8odGhpcyxYMykpKSxyJiZuKCksITEhPT1pJiZ0aGlzLmhvdC5ydW5Ib29rcygi'@; put 'YWZ0ZXJDb2x1bW5SZXNpemUiLHJvKHRoaXMsWDMpLHQsITEpfTtybyh0aGlzLElfKSYmKHRoaXMuaGlkZUhhbmRsZUFuZEd1aWRlKCksT3ModGhpcyxJXywhMSkscm8odGhpcyxYMykhPT1ybyh0aGlzLEc3KSYmKHJvKHRoaXMsSzMpLmxlbmd0aD4xPyhYbihybyh0aGlzLEszKSxyPT57ZShy'@; put 'KX0pLG4oKSk6WG4ocm8odGhpcyxLMykscj0+e2UociwhMCl9KSkscm8odGhpcyx0ZikmJnRoaXMuc2V0dXBIYW5kbGVQb3NpdGlvbihybyh0aGlzLHRmKSkpfWZ1bmN0aW9uIFladCgpe3RoaXMuaGlkZUhhbmRsZUFuZEd1aWRlKCksdGhpcy5ob3Qucm9vdEVsZW1lbnQucmVtb3ZlQ2hpbGQo'@; put 'cm8odGhpcyxRZikpLHRoaXMuaG90LnJvb3RFbGVtZW50LnJlbW92ZUNoaWxkKHJvKHRoaXMseDYpKSxPcyh0aGlzLElfLCExKSxPcyh0aGlzLGNGLCEwKSx0aGlzLmhvdC5fcmVnaXN0ZXJNaWNyb3Rhc2soKCk9PntPcyh0aGlzLGNGLCExKX0pfWNvbnN0IE14PSJweCIsaEJlPWNsYXNzIFpa'@; put 'dHthcHBlbmRUbyhlKXtlLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuc3RhdGU9Mn1idWlsZCgpezA9PT10aGlzLnN0YXRlJiYodGhpcy5fZWxlbWVudD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5zdGF0ZT0xKX1kZXN0cm95KCl7dGhp'@; put 'cy5pc0FwcGVuZGVkKCkmJnRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuc3RhdGU9MH1pc0FwcGVuZGVkKCl7cmV0dXJuIDI9PT10aGlzLnN0YXRlfWlzQnVpbHQoKXtyZXR1cm4gdGhpcy5zdGF0'@; put 'ZT49MX1zZXRQb3NpdGlvbihlLHQpe251bGwhPWUmJih0aGlzLl9lbGVtZW50LnN0eWxlLnRvcD1lK014KSxudWxsIT10JiYodGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0PXQrTXgpfWdldFBvc2l0aW9uKCl7cmV0dXJue3RvcDp0aGlzLl9lbGVtZW50LnN0eWxlLnRvcD9OdW1iZXIucGFyc2VJ'@; put 'bnQodGhpcy5fZWxlbWVudC5zdHlsZS50b3AsMTApOjAsbGVmdDp0aGlzLl9lbGVtZW50LnN0eWxlLmxlZnQ/TnVtYmVyLnBhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUubGVmdCwxMCk6MH19c2V0U2l6ZShlLHQpe2UmJih0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoPWUrTXgpLHQmJih0'@; put 'aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD10K014KX1nZXRTaXplKCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/TnVtYmVyLnBhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGgsMTApOjAsaGVpZ2h0OnRoaXMuX2VsZW1lbnQuc3R5bGUuaGVpZ2h0P051'@; put 'bWJlci5wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodCwxMCk6MH19c2V0T2Zmc2V0KGUsdCl7ZSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUubWFyZ2luVG9wPWUrTXgpLHQmJih0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQ9dCtNeCl9Z2V0T2Zmc2V0KCl7cmV0dXJue3Rv'@; put 'cDp0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpblRvcD9OdW1iZXIucGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AsMTApOjAsbGVmdDp0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQ/TnVtYmVyLnBhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUubWFyZ2luTGVm'@; put 'dCwxMCk6MH19Y29uc3RydWN0b3IoZSl7dGhpcy5fZWxlbWVudD1udWxsLHRoaXMuc3RhdGU9MCx0aGlzLmhvdD1lfX0scVp0PWNsYXNzICRadCBleHRlbmRzIGhCZXtidWlsZCgpe3N1cGVyLmJ1aWxkKCksWXIodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodCIp'@; put 'fX0sUVp0PWNsYXNzIFhadCBleHRlbmRzIGhCZXtidWlsZCgpe3N1cGVyLmJ1aWxkKCksWXIodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZSIpfX07ZnVuY3Rpb24gZkJlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRp'@; put 'YWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBwQmUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4g'@; put 'ZS5nZXQobil9ZnVuY3Rpb24gZnMobixlKXtyZXR1cm4gZnVuY3Rpb24gSlp0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixwQmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gQTYobixlLHQpe2ZCZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gSmYobixlLHQpe3Jl'@; put 'dHVybiBmdW5jdGlvbiBlR3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHBCZShuLGUsInNldCIpLHQp'@; put 'LHR9ZnVuY3Rpb24gQ2ZlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIFNmZShuLGUpe2ZCZShuLGUpLGUuYWRkKG4pfUdvLmdldFNpbmdsZXRv'@; put 'bigpLnJlZ2lzdGVyKCJiZWZvcmVSb3dNb3ZlIiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyUm93TW92ZSIpO2NvbnN0IGgkPSJtYW51YWxSb3dNb3ZlIixnQmU9Imh0X19tYW51YWxSb3dNb3ZlIixmJD0ic2hvdy11aSIsRWZlPSJvbi1tb3ZpbmctLXJvd3MiLE1mZT0iYWZ0'@; put 'ZXItc2VsZWN0aW9uLS1yb3dzIjt2YXIgbmY9bmV3IFdlYWtNYXAsJDc9bmV3IFdlYWtNYXAsazY9bmV3IFdlYWtNYXAscTc9bmV3IFdlYWtNYXAsZTM9bmV3IFdlYWtNYXAscCQ9bmV3IFdlYWtNYXAsVGZlPW5ldyBXZWFrTWFwLG1CZT1uZXcgV2Vha1NldCx4ZmU9bmV3IFdlYWtNYXAsdkJl'@; put 'PW5ldyBXZWFrU2V0LF9CZT1uZXcgV2Vha1NldCxBZmU9bmV3IFdlYWtNYXAsa2ZlPW5ldyBXZWFrTWFwO2NsYXNzIG5HdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBoJH1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAxNDB9c3RhdGljIGdl'@; put 'dCBTRVRUSU5HX0tFWVMoKXtyZXR1cm5baCRdfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtoJF19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZzKHRoaXMsVGZlKSksdGhpcy5hZGRI'@; put 'b29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGZzKHRoaXMseGZlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXJPdXRzaWRlIiwoZSx0LHIsaSk9PkNmZSh0aGlzLHZCZSxpR3QpLmNhbGwodGhpcyxpKSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxs'@; put 'eSIsZnModGhpcyxBZmUpKSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZzKHRoaXMsa2ZlKSksdGhpcy5idWlsZFBsdWdpblVJKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLFlyKHRoaXMuaG90LnJvb3RFbGVtZW50LGdCZSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdp'@; put 'bigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXtrbyh0aGlzLmhvdC5yb290RWxlbWVudCxnQmUpLHRoaXMudW5yZWdpc3RlckV2ZW50cygpLGZz'@; put 'KHRoaXMsbmYpLmRlc3Ryb3koKSxmcyh0aGlzLCQ3KS5kZXN0cm95KCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfW1vdmVSb3coZSx0KXtyZXR1cm4gdGhpcy5tb3ZlUm93cyhbZV0sdCl9bW92ZVJvd3MoZSx0KXtjb25zdCByPWZzKHRoaXMscCQpLGk9dGhpcy5pc01vdmVQb3NzaWJsZShlLHQp'@; put 'LG89dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJvd01vdmUiLGUsdCxyLGkpO2lmKEpmKHRoaXMscCQsdm9pZCAwKSwhMT09PW8pcmV0dXJuITE7aSYmdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIubW92ZUluZGV4ZXMoZSx0KTtjb25zdCBhPWkmJnRoaXMuaXNSb3dPcmRlckNoYW5nZWQoZSx0'@; put 'KTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUm93TW92ZSIsZSx0LHIsaSxhKSxhfWRyYWdSb3coZSx0KXtyZXR1cm4gdGhpcy5kcmFnUm93cyhbZV0sdCl9ZHJhZ1Jvd3MoZSx0KXtjb25zdCByPXRoaXMuY291bnRGaW5hbEluZGV4KGUsdCk7cmV0dXJuIEpmKHRoaXMscCQsdCks'@; put 'dGhpcy5tb3ZlUm93cyhlLHIpfWlzTW92ZVBvc3NpYmxlKGUsdCl7Y29uc3Qgcj10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLGk9ZS5sZW5ndGgrdD5yLG89dDwwLGE9ZS5zb21lKHU9PnU8MCksbD1lLnNvbWUodT0+dT49cik7cmV0dXJuIShp'@; put 'fHxvfHxhfHxsKX1pc1Jvd09yZGVyQ2hhbmdlZChlLHQpe3JldHVybiBlLnNvbWUoKHIsaSk9PnItaSE9PXQpfWNvdW50RmluYWxJbmRleChlLHQpe2NvbnN0IHI9bTEoZSwoaSxvKT0+bzx0P2krMTppLDApO3JldHVybiB0LXJ9Z2V0Um93c0hlaWdodChlLHQpe2NvbnN0IHI9dGhpcy5ob3Qu'@; put 'cm93SW5kZXhNYXBwZXI7bGV0IGk9MDtmb3IobGV0IG89ZTtvPD10O28rKyl7Y29uc3QgYT1yLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobyk7aWYobnVsbCE9PWEpe2NvbnN0IHU9dGhpcy5ob3Qudmlldy5fd3Q/Lnd0VGFibGU/LmdldFJvd0hlaWdodChhKTtpKz0odT8/MCl8fCh0'@; put 'aGlzLmhvdC5zdHlsZXNIYW5kbGVyLmdldERlZmF1bHRSb3dIZWlnaHQoKT8/MCl9fXJldHVybiBpfW1vdmVCeVNldHRpbmdzT3JMb2FkKCl7Y29uc3QgZT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW2gkXTtBcnJheS5pc0FycmF5KGUpJiZ0aGlzLm1vdmVSb3dzKGUsMCl9aXNGaXhlZFJvd1Rv'@; put 'cChlKXtyZXR1cm4gZTwodGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NUb3A/PzApfWlzRml4ZWRSb3dCb3R0b20oZSl7cmV0dXJuIGU+dGhpcy5ob3QuY291bnRSb3dzKCktMS0odGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20/PzApfXByZXBhcmVSb3dzVG9N'@; put 'b3ZpbmcoKXtjb25zdCBlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKSx0PVtdO2lmKCFlKXJldHVybiB0O2NvbnN0e2Zyb206cix0bzppfT1lO3JldHVybiBWYShNYXRoLm1pbihyLnJvdz8/MCxpLnJvdz8/MCksTWF0aC5tYXgoci5yb3c/PzAsaS5yb3c/PzApLGw9Pnt0LnB1'@; put 'c2gobCl9KSx0fXJlZnJlc2hQb3NpdGlvbnMoKXtjb25zdCBlPWZzKHRoaXMsZTMpLmNvb3Jkcyx0PWZzKHRoaXMsZTMpLlREO2lmKCFlfHwhdClyZXR1cm47Y29uc3Qgcj10aGlzLmhvdC5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLGk9dGhpcy5ob3QuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJv'@; put 'dygpLG89dGhpcy5ob3QuY291bnRSb3dzKCk7aWYodGhpcy5pc0ZpeGVkUm93VG9wKGUucm93KSYmcj4wKXtjb25zdCBUbj10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoci0xLC0xKTtudWxsIT09VG4mJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8o'@; put 'VG4pfWlmKHRoaXMuaXNGaXhlZFJvd0JvdHRvbShlLnJvdykmJmk8byl7Y29uc3QgVG49dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGkrMSwxKTtudWxsIT09VG4mJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8oVG4sdm9pZCAwLCEwKX1jb25zdCBh'@; put 'PXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsbD10aGlzLmhvdC5yb290RWxlbWVudCx1PVgwKGwpLGc9SE0obCksRT1hLmhvbGRlci5zY3JvbGxUb3AsTz1nIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ/Zy5zY3JvbGxUb3A6MCxaPXUudG9wLU8sZWU9KGZzKHRoaXMsZTMpLmV2ZW50UGFnZVk/'@; put 'PzApLVorRSx2ZT1hLmhpZGVyLm9mZnNldEhlaWdodCxNZT1hLlRCT0RZPy5vZmZzZXRUb3A/PzAsSGU9ZnModGhpcyxuZikuZ2V0T2Zmc2V0KCkudG9wLFdlPWZzKHRoaXMsbmYpLmdldFNpemUoKS5oZWlnaHQsYXQ9dC5vZmZzZXRIZWlnaHQvMixDdD10Lm9mZnNldEhlaWdodDtsZXQgQXQ9'@; put 'dGhpcy5ob3Qudmlldy5USEVBRC5vZmZzZXRIZWlnaHQrdGhpcy5nZXRSb3dzSGVpZ2h0KDAsZS5yb3ctMSk7Y29uc3QgS3Q9ZWU+PUF0K2F0O3RoaXMuaXNGaXhlZFJvd1RvcChlLnJvdykmJihBdCs9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BPdmVybGF5LmdldE92ZXJsYXlP'@; put 'ZmZzZXQoKSksZS5yb3c8MD9mcyh0aGlzLGUzKS5yb3c9cj4wP3ItMTpyOkt0Pyhmcyh0aGlzLGUzKS5yb3c9ZS5yb3crMSxBdCs9MD09PWUucm93P0N0LTE6Q3QpOmZzKHRoaXMsZTMpLnJvdz1lLnJvdztsZXQgcXQ9ZWUsZ249QXQ7ZWUrV2UrSGU+PXZlP3F0PXZlLVdlLUhlOmVlK0hlPE1l'@; put 'JiYocXQ9TWUrTWF0aC5hYnMoSGUpKSxBdD49dmUtMSYmKGduPXZlLTEpLGZzKHRoaXMsbmYpLnNldFBvc2l0aW9uKHF0KSxmcyh0aGlzLCQ3KS5zZXRQb3NpdGlvbihnbil9cmVnaXN0ZXJFdmVudHMoKXtjb25zdHtkb2N1bWVudEVsZW1lbnQ6ZX09dGhpcy5ob3Qucm9vdERvY3VtZW50O3Ro'@; put 'aXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwibW91c2Vtb3ZlIix0PT5DZmUodGhpcyxtQmUsckd0KS5jYWxsKHRoaXMsdCkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwibW91c2V1cCIsKCk9PkNmZSh0aGlzLF9CZSxvR3QpLmNhbGwodGhpcykpfXVu'@; put 'cmVnaXN0ZXJFdmVudHMoKXt0aGlzLmV2ZW50TWFuYWdlci5jbGVhcigpfWJ1aWxkUGx1Z2luVUkoKXtmcyh0aGlzLG5mKS5idWlsZCgpLGZzKHRoaXMsJDcpLmJ1aWxkKCl9ZGVzdHJveSgpe2ZzKHRoaXMsbmYpLmRlc3Ryb3koKSxmcyh0aGlzLCQ3KS5kZXN0cm95KCksc3VwZXIuZGVzdHJv'@; put 'eSgpfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLFNmZSh0aGlzLG1CZSksU2ZlKHRoaXMsdkJlKSxTZmUodGhpcyxfQmUpLEE2KHRoaXMsbmYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMsJDcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMsazYs'@; put 'e3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMscTcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMsZTMse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMscCQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMsVGZlLHt3cml0YWJs'@; put 'ZTohMCx2YWx1ZTp2b2lkIDB9KSxBNih0aGlzLHhmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksQTYodGhpcyxBZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEE2KHRoaXMsa2ZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxKZih0aGlzLG5mLG5ldyBxWnQodGhpcy5o'@; put 'b3QpKSxKZih0aGlzLCQ3LG5ldyBRWnQodGhpcy5ob3QpKSxKZih0aGlzLGs2LFtdKSxKZih0aGlzLGUzLHt9KSxKZih0aGlzLFRmZSwodCxyLGksbyk9Pntjb25zdHt3dFRhYmxlOmEsd3RWaWV3cG9ydDpsfT10aGlzLmhvdC52aWV3Ll93dCx1PXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVj'@; put 'dGVkQnlSb3dIZWFkZXIoKSxnPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighZ3x8IXV8fGZzKHRoaXMscTcpfHwwIT09dC5idXR0b24pcmV0dXJuIEpmKHRoaXMscTcsITEpLGZzKHRoaXMsazYpLmxlbmd0aD0wLHZvaWQga28odGhpcy5ob3Qucm9vdEVsZW1lbnQsW0Vm'@; put 'ZSxmJF0pO2NvbnN0IEU9ZnModGhpcywkNykuaXNCdWlsdCgpJiYhZnModGhpcywkNykuaXNBcHBlbmRlZCgpLE89ZnModGhpcyxuZikuaXNCdWlsdCgpJiYhZnModGhpcyxuZikuaXNBcHBlbmRlZCgpO0UmJk8mJihmcyh0aGlzLCQ3KS5hcHBlbmRUbyhhLmhpZGVyKSxmcyh0aGlzLG5mKS5h'@; put 'cHBlbmRUbyhhLmhpZGVyKSk7Y29uc3R7ZnJvbTpaLHRvOmVlfT1nLHZlPU1hdGgubWluKFoucm93Pz8wLGVlLnJvdz8/MCksTWU9TWF0aC5tYXgoWi5yb3c/PzAsZWUucm93Pz8wKTtpZihyLmNvbDwwJiZyLnJvdz49dmUmJnIucm93PD1NZSl7by5yb3c9ITAsSmYodGhpcyxxNywhMCksZnMo'@; put 'dGhpcyxlMykuZXZlbnRQYWdlWT10LnBhZ2VZLGZzKHRoaXMsZTMpLmNvb3Jkcz1yLGZzKHRoaXMsZTMpLlREPWksSmYodGhpcyxrNix0aGlzLnByZXBhcmVSb3dzVG9Nb3ZpbmcoKSk7Y29uc3QgSGU9YS5ob2xkZXIuc2Nyb2xsTGVmdCtsLmdldFJvd0hlYWRlcldpZHRoKCksV2U9dGhpcy5n'@; put 'ZXRSb3dzSGVpZ2h0KHZlLHIucm93LTEpKyh0LmNsaWVudFktaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApO2ZzKHRoaXMsbmYpLnNldFBvc2l0aW9uKG51bGwsSGUpLGZzKHRoaXMsbmYpLnNldFNpemUoYS5oaWRlci5vZmZzZXRXaWR0aC1IZSx0aGlzLmdldFJvd3NIZWlnaHQodmUs'@; put 'TWUpKSxmcyh0aGlzLG5mKS5zZXRPZmZzZXQoLVdlLG51bGwpLFlyKHRoaXMuaG90LnJvb3RFbGVtZW50LEVmZSksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9ZWxzZSBrbyh0aGlzLmhvdC5yb290RWxlbWVudCxNZmUpLEpmKHRoaXMscTcsITEpLGZzKHRoaXMsazYpLmxlbmd0aD0wfSksSmYo'@; put 'dGhpcyx4ZmUsKHQscixpLG8pPT57IXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKXx8IWZzKHRoaXMscTcpfHwoZnModGhpcyxrNikuaW5kZXhPZihyLnJvdyk+LTE/a28odGhpcy5ob3Qucm9vdEVsZW1lbnQsZiQpOllyKHRoaXMuaG90LnJvb3RFbGVtZW50LGYkKSxvLnJvdz0h'@; put 'MCxvLmNvbHVtbj0hMCxvLmNlbGw9ITAsZnModGhpcyxlMykuY29vcmRzPXIsZnModGhpcyxlMykuVEQ9aSl9KSxKZih0aGlzLEFmZSwoKT0+e2NvbnN0IHQ9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxvPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93SGVhZGVyV2lkdGgo'@; put 'KSt0LmhvbGRlci5zY3JvbGxMZWZ0O2ZzKHRoaXMsbmYpLnNldFBvc2l0aW9uKG51bGwsbyksZnModGhpcyxuZikuc2V0U2l6ZSh0LmhpZGVyLm9mZnNldFdpZHRoLW8pfSksSmYodGhpcyxrZmUsKCk9Pnt0aGlzLm1vdmVCeVNldHRpbmdzT3JMb2FkKCl9KX19ZnVuY3Rpb24gckd0KG4pe2Zz'@; put 'KHRoaXMscTcpJiYoZnModGhpcyxlMykuZXZlbnRQYWdlWT1uLnBhZ2VZLHRoaXMucmVmcmVzaFBvc2l0aW9ucygpKX1mdW5jdGlvbiBpR3Qobil7ZnModGhpcyxxNykmJihuLnJvdz0hMCxuLmNvbHVtbj0hMCxuLmNlbGw9ITApfWZ1bmN0aW9uIG9HdCgpe2NvbnN0IG49ZnModGhpcyxlMyku'@; put 'cm93LGU9ZnModGhpcyxrNikubGVuZ3RoO2lmKEpmKHRoaXMscTcsITEpLGtvKHRoaXMuaG90LnJvb3RFbGVtZW50LFtFZmUsZiQsTWZlXSksdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpJiZZcih0aGlzLmhvdC5yb290RWxlbWVudCxNZmUpLGU8MXx8dm9pZCAw'@; put 'PT09bilyZXR1cm47Y29uc3QgdD1mcyh0aGlzLGs2KVswXSxyPXRoaXMuaG90LnRvUGh5c2ljYWxSb3codCksaT10aGlzLmRyYWdSb3dzKGZzKHRoaXMsazYpLG4pO2lmKGZzKHRoaXMsazYpLmxlbmd0aD0wLCEwPT09aSl7dGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlz'@; put 'LmhvdC5yZW5kZXIoKTtjb25zdCBvPXRoaXMuaG90LnRvVmlzdWFsUm93KHIpO3RoaXMuaG90LnNlbGVjdFJvd3MobyxvK2UtMSl9fWZ1bmN0aW9uIHlCZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxl'@; put 'bWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gYkJlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIGxvKG4sZSl7'@; put 'cmV0dXJuIGZ1bmN0aW9uIGFHdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sYkJlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIFExKG4sZSx0KXt5QmUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIE5zKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gc0d0KG4sZSx0KXtp'@; put 'ZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixiQmUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIFR4KG4sZSx0KXtpZigh'@; put 'ZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIHh4KG4sZSl7eUJlKG4sZSksZS5hZGQobil9Y29uc3QgZyQ9Im1hbnVhbFJvd1Jlc2l6ZSI7dmFyIHQzPW5ldyBXZWFr'@; put 'TWFwLEF4PW5ldyBXZWFrTWFwLFEzPW5ldyBXZWFrTWFwLGt4PW5ldyBXZWFrTWFwLG9nPW5ldyBXZWFrTWFwLG0kPW5ldyBXZWFrTWFwLEs3PW5ldyBXZWFrTWFwLGhGPW5ldyBXZWFrTWFwLHYkPW5ldyBXZWFrTWFwLHJmPW5ldyBXZWFrTWFwLFY0PW5ldyBXZWFrTWFwLExfPW5ldyBXZWFr'@; put 'TWFwLGZGPW5ldyBXZWFrTWFwLE9fPW5ldyBXZWFrTWFwLHBGPW5ldyBXZWFrTWFwLFI2PW5ldyBXZWFrTWFwLFJ4PW5ldyBXZWFrTWFwLGdGPW5ldyBXZWFrTWFwLHdCZT1uZXcgV2Vha1NldCxDQmU9bmV3IFdlYWtTZXQsU0JlPW5ldyBXZWFrU2V0LEVCZT1uZXcgV2Vha1NldCxNQmU9bmV3'@; put 'IFdlYWtTZXQsUmZlPW5ldyBXZWFrTWFwLFRCZT1uZXcgV2Vha1NldDtjbGFzcyBjR3QgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gZyR9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMzB9Z2V0IGlubGluZURpcigpe3JldHVybiB0aGlzLmhv'@; put 'dC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtnJF19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwoTnModGhpcyxSNixuZXcgbl8pLGxvKHRoaXMsUjYpLmFkZExvY2FsSG9vaygiaW5pdCIsKCk9PlR4KHRoaXMs'@; put 'VEJlLGdHdCkuY2FsbCh0aGlzKSksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lLGxvKHRoaXMsUjYpKSxOcyh0aGlzLFJ4LHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLm9ic2VydmVNYXBDaGFuZ2UobG8odGhpcyxSNiksKCk9Pnt0aGlzLmhvdC52'@; put 'aWV3Py5pbnZhbGlkYXRlUm93SGVpZ2h0Q2FjaGUoKX0pKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsbG8odGhpcyxSZmUpKSx0aGlzLmJpbmRFdmVudHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFi'@; put 'bGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7bG8odGhpcyxSeCkmJihsbyh0aGlzLFJ4KS5jYWxsKHRoaXMpLE5zKHRoaXMsUngsbnVsbCkpLE5zKHRoaXMsZ0YsbG8odGhpcyxSNikuZ2V0VmFsdWVzKCkpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVu'@; put 'cmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9c2F2ZU1hbnVhbFJvd0hlaWdodHMoKXtCVygiYHNhdmVNYW51YWxSb3dIZWlnaHRzKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiBU'@; put 'aGUgUGVyc2lzdGVudFN0YXRlIHBsdWdpbiBoYXMgYmVlbiByZW1vdmVkLiIpfWxvYWRNYW51YWxSb3dIZWlnaHRzKCl7cmV0dXJuIEJXKCJgbG9hZE1hbnVhbFJvd0hlaWdodHMoKWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2Uu'@; put 'IFRoZSBQZXJzaXN0ZW50U3RhdGUgcGx1Z2luIGhhcyBiZWVuIHJlbW92ZWQuIiksW119c2V0TWFudWFsU2l6ZShlLHQpe2NvbnN0IHI9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhlKSxpPU1hdGgubWF4KHQsdGhpcy5ob3Quc3R5bGVzSGFuZGxlci5nZXREZWZhdWx0Um93SGVpZ2h0KCk/PzAp'@; put 'O3JldHVybiBudWxsIT09ciYmbG8odGhpcyxSNikuc2V0VmFsdWVBdEluZGV4KHIsaSksaX1nZXRMYXN0RGVzaXJlZFJvd0hlaWdodCgpe3JldHVybiBsbyh0aGlzLGt4KT8/MH1zZXR1cEhhbmRsZVBvc2l0aW9uKGUpe2lmKEpWZShlLGxvKHRoaXMsT18pKSlyZXR1cm47TnModGhpcyx0Myxl'@; put 'KTtjb25zdHt2aWV3OnR9PXRoaXMuaG90LHtfd3Q6cn09dCxpPXIud3RUYWJsZS5nZXRDb29yZHMobG8odGhpcyx0MykpO2lmKCFpKXJldHVybjtjb25zdCBvPWkucm93O2lmKG51bGw9PT1vfHxvPDApcmV0dXJuO2NvbnN0IGE9WmQobG8odGhpcyx0MykpLGw9bzxyLmdldFNldHRpbmcoImZp'@; put 'eGVkUm93c1RvcCIpLHU9bz49dC5jb3VudE5vdEhpZGRlblJvd0luZGV4ZXMoMCwxKS1yLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpO2xldCBnO2NvbnN0IEU9aS5yb3c/PzAsTz1pLmNvbD8/MDtsP2c9ci53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRS'@; put 'ZWxhdGl2ZUNlbGxQb3NpdGlvbihsbyh0aGlzLHQzKSxFLE8pOnUmJihnPXIud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24obG8odGhpcyx0MyksRSxPKSksZ3x8KGc9ci53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3Zlcmxh'@; put 'eS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbihsbyh0aGlzLHQzKSxFLE8pKSxOcyh0aGlzLEF4LHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgobykpLE5zKHRoaXMsUTMsW10pO2NvbnN0IFo9dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRC'@; put 'eUNvcm5lcigpfHx0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCk7dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKSYmWiYmWG4odGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpPz9bXSx2ZT0+e2NvbnN0IE1lPXZlLmdldFRvcFN0YXJ0Q29ybmVyKCkucm93'@; put 'LEhlPXZlLmdldEJvdHRvbVN0YXJ0Q29ybmVyKCkucm93O251bGw9PT1NZXx8bnVsbD09PUhlfHxWYShNZSxIZSxXZT0+e2xvKHRoaXMsUTMpLmluY2x1ZGVzKFdlKXx8bG8odGhpcyxRMykucHVzaChXZSl9KX0pLG51bGwhPT1sbyh0aGlzLEF4KSYmKGxvKHRoaXMsUTMpLmluY2x1ZGVzKGxv'@; put 'KHRoaXMsQXgpKXx8TnModGhpcyxRMyxbbG8odGhpcyxBeCldKSxnJiYoTnModGhpcyxoRixnLnRvcC02KSxOcyh0aGlzLEs3LEhoKGxvKHRoaXMsdDMpKSksTnModGhpcyx2JCxYVmUobG8odGhpcyx0MyksInZlcnRpY2FsIikpLGxvKHRoaXMscmYpLnN0eWxlLnRvcD1gJHtsbyh0aGlzLGhG'@; put 'KStsbyh0aGlzLEs3KX1weGAsbG8odGhpcyxyZikuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPWAke2cuc3RhcnR9cHhgLGxvKHRoaXMscmYpLnN0eWxlLndpZHRoPWAke2F9cHhgLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKGxvKHRoaXMscmYpKSkpfXJlZnJlc2hIYW5kbGVQb3Np'@; put 'dGlvbigpe2xvKHRoaXMscmYpLnN0eWxlLnRvcD1gJHsobG8odGhpcyxoRik/PzApKyhsbyh0aGlzLGt4KT8/MCl9cHhgfXNldHVwR3VpZGVQb3NpdGlvbigpe2NvbnN0IGU9WmQobG8odGhpcyxyZikpLHQ9TnVtYmVyLnBhcnNlSW50KGxvKHRoaXMscmYpLnN0eWxlW3RoaXMuaW5saW5lRGly'@; put 'XSwxMCkrZSxyPXRoaXMuaG90LnZpZXcuZ2V0VGFibGVXaWR0aCgpO1lyKGxvKHRoaXMscmYpLCJhY3RpdmUiKSxZcihsbyh0aGlzLFY0KSwiYWN0aXZlIiksbG8odGhpcyxWNCkuc3R5bGUudG9wPWxvKHRoaXMscmYpLnN0eWxlLnRvcCxsbyh0aGlzLFY0KS5zdHlsZVt0aGlzLmlubGluZURp'@; put 'cl09YCR7dH1weGAsbG8odGhpcyxWNCkuc3R5bGUud2lkdGg9ci1lKyJweCIsdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQobG8odGhpcyxWNCkpfXJlZnJlc2hHdWlkZVBvc2l0aW9uKCl7bG8odGhpcyxWNCkuc3R5bGUudG9wPWxvKHRoaXMscmYpLnN0eWxlLnRvcH1oaWRlSGFu'@; put 'ZGxlQW5kR3VpZGUoKXtrbyhsbyh0aGlzLHJmKSwiYWN0aXZlIiksa28obG8odGhpcyxWNCksImFjdGl2ZSIpfWNoZWNrSWZSb3dIZWFkZXIoZSl7Y29uc3QgdD1WdihlLFsiVEJPRFkiXSx0aGlzLmhvdC5yb290RWxlbWVudCkse2lubGluZVN0YXJ0T3ZlcmxheTpyLHRvcElubGluZVN0YXJ0'@; put 'Q29ybmVyT3ZlcmxheTppLGJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheTpvfT10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzO3JldHVybltyLmNsb25lPy53dFRhYmxlLlRCT0RZLGkuY2xvbmU/Lnd0VGFibGUuVEJPRFksby5jbG9uZT8ud3RUYWJsZS5UQk9EWV0uaW5jbHVkZXMo'@; put 'dCl9Z2V0Q2xvc2VzdFRIUGFyZW50KGUpe3JldHVybiJUQUJMRSIhPT1lLnRhZ05hbWU/IlRIIj09PWUudGFnTmFtZT9lOnRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KGUucGFyZW50Tm9kZSk6bnVsbH1nZXRBY3R1YWxSb3dIZWlnaHQoZSl7Y29uc3QgdD10aGlzLmhvdC52aWV3Ll93dC53dFRh'@; put 'YmxlLmdldFJvd0hlaWdodChlKTtyZXR1cm4gdm9pZCAwIT09dCYmbnVsbCE9PWxvKHRoaXMsb2cpJiZsbyh0aGlzLG9nKTx0P3Q6bG8odGhpcyxvZyl9YWZ0ZXJNb3VzZURvd25UaW1lb3V0KCl7Y29uc3QgZT1lQmUobG8odGhpcyx0MyksbG8odGhpcyxPXykpLHQ9KCk9Pnt0aGlzLmhvdC52'@; put 'aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnJlbmRlcigpfSxyPShpLG8pPT57Y29uc3QgYT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUm93UmVzaXplIix0aGlzLmdldEFjdHVhbFJvd0hlaWdodChpKSxpLCEwKTshMSE9PWEmJigibnVtYmVyIj09dHlwZW9mIGEmJk5zKHRo'@; put 'aXMsb2csYSksdGhpcy5zZXRNYW51YWxTaXplKGksbG8odGhpcyxvZykpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJvd1Jlc2l6ZSIsdGhpcy5nZXRBY3R1YWxSb3dIZWlnaHQoaSksaSwhMCksbyYmdCgpKX07bG8odGhpcyxPXyk+PTImJihsbyh0aGlzLFEzKS5sZW5ndGg+MT8oWG4obG8o'@; put 'dGhpcyxRMyksbz0+e3Iobyl9KSx0KCkpOlhuKGxvKHRoaXMsUTMpLG89PntyKG8sITApfSkpLE5zKHRoaXMscEYsbnVsbCksTnModGhpcyxPXywwKSxlJiZsbyh0aGlzLHQzKSYmdGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKGxvKHRoaXMsdDMpKX1iaW5kRXZlbnRzKCl7Y29uc3R7cm9vdEVs'@; put 'ZW1lbnQ6ZSxyb290V2luZG93OnR9PXRoaXMuaG90O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwibW91c2VvdmVyIixyPT5UeCh0aGlzLHdCZSx1R3QpLmNhbGwodGhpcyxyKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihlLCJtb3VzZWRvd24iLHI9'@; put 'PlR4KHRoaXMsQ0JlLGRHdCkuY2FsbCh0aGlzLHIpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHQsIm1vdXNlbW92ZSIscj0+VHgodGhpcyxTQmUsaEd0KS5jYWxsKHRoaXMscikpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCwibW91c2V1cCIsKCk9'@; put 'PlR4KHRoaXMsRUJlLGZHdCkuY2FsbCh0aGlzKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihsbyh0aGlzLHJmKSwiY29udGV4dG1lbnUiLCgpPT5UeCh0aGlzLE1CZSxwR3QpLmNhbGwodGhpcykpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoZSl7'@; put 'c3VwZXIoZSkseHgodGhpcyx3QmUpLHh4KHRoaXMsQ0JlKSx4eCh0aGlzLFNCZSkseHgodGhpcyxFQmUpLHh4KHRoaXMsTUJlKSx4eCh0aGlzLFRCZSksUTEodGhpcyx0Myx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxBeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSks'@; put 'UTEodGhpcyxRMyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxreCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxvZyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxtJCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxL'@; put 'Nyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxoRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyx2JCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxyZix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxWNCx7d3JpdGFi'@; put 'bGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxMXyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxmRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxPXyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxwRix7d3JpdGFibGU6ITAsdmFs'@; put 'dWU6dm9pZCAwfSksUTEodGhpcyxSNix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxSeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxnRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUTEodGhpcyxSZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQg'@; put 'MH0pLE5zKHRoaXMsdDMsbnVsbCksTnModGhpcyxBeCxudWxsKSxOcyh0aGlzLFEzLFtdKSxOcyh0aGlzLGt4LG51bGwpLE5zKHRoaXMsb2csbnVsbCksTnModGhpcyxtJCxudWxsKSxOcyh0aGlzLEs3LG51bGwpLE5zKHRoaXMsaEYsbnVsbCksTnModGhpcyx2JCwxKSxOcyh0aGlzLHJmLHRo'@; put 'aXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSksTnModGhpcyxWNCx0aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikpLE5zKHRoaXMsTF8sITEpLE5zKHRoaXMsZkYsITEpLE5zKHRoaXMsT18sMCksTnModGhpcyxwRixudWxsKSxOcyh0aGlz'@; put 'LFJ4LG51bGwpLE5zKHRoaXMsUmZlLCh0LHIpPT57bGV0IGk9dDtpZih0aGlzLmVuYWJsZWQpe2NvbnN0IG89dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhyKSxhPWxvKHRoaXMsUjYpLmdldFZhbHVlQXRJbmRleChvKTt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2ckXSYmYSYmKGk9dGhpcy5ob3Qu'@; put 'Z2V0UGx1Z2luKCJhdXRvUm93U2l6ZSIpPy5pc0VuYWJsZWQoKT9NYXRoLm1heChhLGk/PzApOmEpfXJldHVybiBpfSksWXIobG8odGhpcyxyZiksIm1hbnVhbFJvd1Jlc2l6ZXIiKSxZcihsbyh0aGlzLFY0KSwibWFudWFsUm93UmVzaXplckd1aWRlIil9fWZ1bmN0aW9uIHVHdChuKXtpZigh'@; put 'RHNlKEFhKG4pKSYmITAhPT1sbyh0aGlzLGZGKSYmdGhpcy5jaGVja0lmUm93SGVhZGVyKEFhKG4pKSl7Y29uc3QgZT10aGlzLmdldENsb3Nlc3RUSFBhcmVudChBYShuKSk7ZSYmKGxvKHRoaXMsTF8pfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oZSkpfX1mdW5jdGlvbiBkR3Qobil7QWEo'@; put 'bikucGFyZW50Tm9kZT09PXRoaXMuaG90LnJvb3RFbGVtZW50JiZMYShBYShuKSwibWFudWFsUm93UmVzaXplciIpJiYodGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKGxvKHRoaXMsdDMpKSx0aGlzLnNldHVwR3VpZGVQb3NpdGlvbigpLE5zKHRoaXMsTF8sITApLG51bGw9PT1sbyh0aGlzLHBG'@; put 'KSYmTnModGhpcyxwRix0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT50aGlzLmFmdGVyTW91c2VEb3duVGltZW91dCgpLDUwMCkpLE5zKHRoaXMsT18sbG8odGhpcyxPXykrMSksTnModGhpcyxtJCxuLnBhZ2VZKSxOcyh0aGlzLG9nLGxvKHRoaXMsSzcpKSl9ZnVuY3Rpb24gaEd0KG4p'@; put 'e2lmKGxvKHRoaXMsTF8pKXtjb25zdCB0PVFWZShuLnBhZ2VZLShsbyh0aGlzLG0kKT8/MCksbG8odGhpcyx2JCkpO05zKHRoaXMsa3gsKGxvKHRoaXMsSzcpPz8wKSt0KSxYbihsbyh0aGlzLFEzKSxyPT57TnModGhpcyxvZyx0aGlzLnNldE1hbnVhbFNpemUocixsbyh0aGlzLGt4KSkpfSks'@; put 'dGhpcy5yZWZyZXNoSGFuZGxlUG9zaXRpb24oKSx0aGlzLnJlZnJlc2hHdWlkZVBvc2l0aW9uKCl9fWZ1bmN0aW9uIGZHdCgpe2NvbnN0IG49KCk9Pnt0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnJlbmRlcigpfSxlPSh0LHIpPT57Y29uc3QgaT10aGlzLmhv'@; put 'dC5ydW5Ib29rcygiYmVmb3JlUm93UmVzaXplIix0aGlzLmdldEFjdHVhbFJvd0hlaWdodCh0KSx0LCExKTshMT09PWk/KHRoaXMuc2V0TWFudWFsU2l6ZSh0LGxvKHRoaXMsSzcpKSxOcyh0aGlzLG9nLGxvKHRoaXMsSzcpKSk6Im51bWJlciI9PXR5cGVvZiBpJiYoTnModGhpcyxvZyxpKSx0'@; put 'aGlzLnNldE1hbnVhbFNpemUodCxsbyh0aGlzLG9nKSkpLHImJm4oKSwhMSE9PWkmJnRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJvd1Jlc2l6ZSIsdGhpcy5nZXRBY3R1YWxSb3dIZWlnaHQodCksdCwhMSl9O2xvKHRoaXMsTF8pJiYodGhpcy5oaWRlSGFuZGxlQW5kR3VpZGUoKSxOcyh0aGlz'@; put 'LExfLCExKSxsbyh0aGlzLG9nKSE9PWxvKHRoaXMsSzcpJiYobG8odGhpcyxRMykubGVuZ3RoPjE/KFhuKGxvKHRoaXMsUTMpLHI9PntlKHIpfSksbigpKTpYbihsbyh0aGlzLFEzKSxyPT57ZShyLCEwKX0pKSx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24obG8odGhpcyx0MykpKX1mdW5jdGlv'@; put 'biBwR3QoKXt0aGlzLmhpZGVIYW5kbGVBbmRHdWlkZSgpLHRoaXMuaG90LnJvb3RFbGVtZW50LnJlbW92ZUNoaWxkKGxvKHRoaXMscmYpKSx0aGlzLmhvdC5yb290RWxlbWVudC5yZW1vdmVDaGlsZChsbyh0aGlzLFY0KSksTnModGhpcyxMXywhMSksTnModGhpcyxmRiwhMCksdGhpcy5ob3Qu'@; put 'X3JlZ2lzdGVyTWljcm90YXNrKCgpPT57TnModGhpcyxmRiwhMSl9KX1mdW5jdGlvbiBnR3QoKXtjb25zdCBuPXRoaXMuaG90LmdldFNldHRpbmdzKClbZyRdO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57QXJyYXkuaXNBcnJheShuKT8obi5mb3JFYWNoKChlLHQpPT57bG8odGhpcyxS'@; put 'Nikuc2V0VmFsdWVBdEluZGV4KHQsZSl9KSxOcyh0aGlzLGdGLG4pKTohMD09PW4mJkFycmF5LmlzQXJyYXkobG8odGhpcyxnRikpJiZsbyh0aGlzLGdGKS5mb3JFYWNoKChlLHQpPT57bG8odGhpcyxSNikuc2V0VmFsdWVBdEluZGV4KHQsZSl9KX0sITApfWZ1bmN0aW9uIHhCZShuLGUsdCl7'@; put 'aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBBQmUobixlKXtyZXR1cm4gZnVuY3Rpb24gdkd0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNh'@; put 'bGwobik6ZS52YWx1ZX0obix4QmUobixlLCJnZXQiKSl9ZnVuY3Rpb24gbUYobixlLHQpe3JldHVybiBmdW5jdGlvbiBfR3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVh'@; put 'ZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHhCZShuLGUsInNldCIpLHQpLHR9dmFyIE5fPW5ldyBXZWFrTWFwO2NvbnN0IEk2PWNsYXNzIGJHdHtzdGF0aWMgTkVHQVRJVkVfVkFMVUVTX1dBUk5JTkcoe3JvdzplLGNvbDp0LHJvd3NwYW46cixjb2xzcGFuOml9KXtyZXR1'@; put 'cm4geWNgVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdpdGgge3JvdzogJHtlfSwgY29sOiAke3R9LFx4MjAKICAgICAgcm93c3BhbjogJHtyfSwgY29sc3BhbjogJHtpfX0gY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCBpc1x4MjAKICAgICAgbm90IHN1cHBvcnRlZC4gSXQgd2ls'@; put 'bCBub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uYH1zdGF0aWMgSVNfT1VUX09GX0JPVU5EU19XQVJOSU5HKHtyb3c6ZSxjb2w6dH0pe3JldHVybiB5Y2BUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyR7ZX0sICR7dH1dIGlzIHBvc2l0aW9uZWRceDIwCiAgICAgIChvciBwb3Np'@; put 'dGlvbmVkIHBhcnRpYWxseSkgb3V0c2lkZSBvZiB0aGUgdGFibGUgcmFuZ2UuIEl0IHdhcyBub3QgYWRkZWQgdG8gdGhlIHRhYmxlLCBwbGVhc2UgZml4IHlvdXIgc2V0dXAuYH1zdGF0aWMgSVNfU0lOR0xFX0NFTEwoe3JvdzplLGNvbDp0fSl7cmV0dXJuIHljYFRoZSBtZXJnZWQgY2VsbCBk'@; put 'ZWNsYXJlZCBhdCBbJHtlfSwgJHt0fV0gaGFzIGJvdGggInJvd3NwYW4iXHgyMAogICAgICBhbmQgImNvbHNwYW4iIGRlY2xhcmVkIGFzICIxIiwgd2hpY2ggbWFrZXMgaXQgYSBzaW5nbGUgY2VsbC4gSXQgY2Fubm90IGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLmB9c3RhdGljIFpFUk9f'@; put 'U1BBTl9XQVJOSU5HKHtyb3c6ZSxjb2w6dH0pe3JldHVybiB5Y2BUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyR7ZX0sICR7dH1dIGhhcyAicm93c3BhbiJceDIwCiAgICAgIG9yICJjb2xzcGFuIiBkZWNsYXJlZCBhcyAiMCIsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIEl0IGNhbm5v'@; put 'dCBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi5gfXN0YXRpYyBjb250YWluc05lZ2F0aXZlVmFsdWVzKHtyb3c6ZSxjb2w6dCxyb3dzcGFuOnIsY29sc3BhbjppfSl7cmV0dXJuIGU8MHx8dDwwfHxyPDB8fGk8MH1zdGF0aWMgaXNTaW5nbGVDZWxsKHtyb3dzcGFuOmUsY29sc3Bhbjp0fSl7'@; put 'cmV0dXJuIDE9PT10JiYxPT09ZX1zdGF0aWMgY29udGFpbnNaZXJvU3Bhbih7cm93c3BhbjplLGNvbHNwYW46dH0pe3JldHVybiAwPT09dHx8MD09PWV9c3RhdGljIGlzT3V0T2ZCb3VuZHMoZSx0LHIpe3JldHVybiBlLnJvdzwwfHxlLmNvbDwwfHxlLnJvdz49dHx8ZS5yb3crZS5yb3dzcGFu'@; put 'LTE+PXR8fGUuY29sPj1yfHxlLmNvbCtlLmNvbHNwYW4tMT49cn1ub3JtYWxpemUoZSl7Y29uc3QgdD1lLmNvdW50Um93cygpLHI9ZS5jb3VudENvbHMoKTt0aGlzLnJvdzwwP3RoaXMucm93PTA6dGhpcy5yb3c+dC0xJiYodGhpcy5yb3c9dC0xKSx0aGlzLmNvbDwwP3RoaXMuY29sPTA6dGhp'@; put 'cy5jb2w+ci0xJiYodGhpcy5jb2w9ci0xKSx0aGlzLnJvdyt0aGlzLnJvd3NwYW4+dC0xJiYodGhpcy5yb3dzcGFuPXQtdGhpcy5yb3cpLHRoaXMuY29sK3RoaXMuY29sc3Bhbj5yLTEmJih0aGlzLmNvbHNwYW49ci10aGlzLmNvbCksbUYodGhpcyxOXyxudWxsKX1pbmNsdWRlcyhlLHQpe3Jl'@; put 'dHVybiB0aGlzLnJvdzw9ZSYmdGhpcy5jb2w8PXQmJnRoaXMucm93K3RoaXMucm93c3Bhbi0xPj1lJiZ0aGlzLmNvbCt0aGlzLmNvbHNwYW4tMT49dH1pbmNsdWRlc0hvcml6b250YWxseShlKXtyZXR1cm4gdGhpcy5jb2w8PWUmJnRoaXMuY29sK3RoaXMuY29sc3Bhbi0xPj1lfWluY2x1ZGVz'@; put 'VmVydGljYWxseShlKXtyZXR1cm4gdGhpcy5yb3c8PWUmJnRoaXMucm93K3RoaXMucm93c3Bhbi0xPj1lfXNoaWZ0KGUsdCl7Y29uc3Qgcj1lWzBdfHxlWzFdLGk9dCtNYXRoLmFicyhlWzBdfHxlWzFdKS0xLG89ZVswXT8iY29sc3BhbiI6InJvd3NwYW4iLGE9ZVswXT8iY29sIjoicm93Iixs'@; put 'PU1hdGgubWluKHQsaSksdT1NYXRoLm1heCh0LGkpLGc9dGhpc1thXSxFPXRoaXNbYV0rdGhpc1tvXS0xO2lmKGc+PXQmJih0aGlzW2FdKz1yKSxyPjApdDw9RSYmdD5nJiYodGhpc1tvXSs9cik7ZWxzZSBpZihyPDApe2lmKGw8PWcmJnU+PUUpcmV0dXJuIHRoaXMucmVtb3ZlZD0hMCxtRih0'@; put 'aGlzLE5fLG51bGwpLCExO2lmKGc+PWwmJmc8PXUpe2NvbnN0IE89dS1nKzEsWj1NYXRoLmFicyhyKS1PO3RoaXNbYV0tPVorcix0aGlzW29dLT1PfWVsc2UgZzw9bCYmRT49dT90aGlzW29dKz1yOmc8PWwmJkU+PWwmJkU8dSYmKHRoaXNbb10tPUUtbCsxKX1yZXR1cm4gbUYodGhpcyxOXyxu'@; put 'dWxsKSwhMH1pc0ZhcnRoZXIoZSx0KXtyZXR1cm4hZXx8KCJkb3duIj09PXQ/ZS5yb3crZS5yb3dzcGFuLTE8dGhpcy5yb3crdGhpcy5yb3dzcGFuLTE6InVwIj09PXQ/ZS5yb3c+dGhpcy5yb3c6InJpZ2h0Ij09PXQ/ZS5jb2wrZS5jb2xzcGFuLTE8dGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE6'@; put 'ImxlZnQiPT09dD9lLmNvbD50aGlzLmNvbDpudWxsKX1nZXRMYXN0Um93KCl7cmV0dXJuIHRoaXMucm93K3RoaXMucm93c3Bhbi0xfWdldExhc3RDb2x1bW4oKXtyZXR1cm4gdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTF9Z2V0UmFuZ2UoKXtyZXR1cm4gQUJlKHRoaXMsTl8pfHxtRih0aGlzLE5f'@; put 'LHRoaXMuY2VsbFJhbmdlRmFjdG9yeSh0aGlzLmNlbGxDb29yZHNGYWN0b3J5KHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmNlbGxDb29yZHNGYWN0b3J5KHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmNlbGxDb29yZHNGYWN0b3J5KHRoaXMuZ2V0TGFzdFJvdygpLHRoaXMuZ2V0TGFzdENvbHVt'@; put 'bigpKSkpLEFCZSh0aGlzLE5fKX1jb25zdHJ1Y3RvcihlLHQscixpLG8sYSl7KGZ1bmN0aW9uIHlHdChuLGUsdCl7KGZ1bmN0aW9uIG1HdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdp'@; put 'Y2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuc2V0KG4sdCl9KSh0aGlzLE5fLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLnJlbW92ZWQ9ITEsbUYodGhpcyxOXyxudWxsKSx0aGlzLnJvdz1lLHRoaXMuY29sPXQsdGhpcy5yb3dzcGFuPXIsdGhpcy5jb2xzcGFuPWksdGhpcy5j'@; put 'ZWxsQ29vcmRzRmFjdG9yeT1vLHRoaXMuY2VsbFJhbmdlRmFjdG9yeT1hfX07ZnVuY3Rpb24gaEMobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24g'@; put 'SWZlKG4sZSl7KGZ1bmN0aW9uIHdHdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuYWRkKG4pfXZhciB2Rj1uZXcgV2Vha1NldCxEZmU9'@; put 'bmV3IFdlYWtTZXQsa0JlPW5ldyBXZWFrU2V0O2NsYXNzIF9Ge3N0YXRpYyBJU19PVkVSTEFQUElOR19XQVJOSU5HKHtyb3c6ZSxjb2w6dH0pe3JldHVybiB5Y2BUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyR7ZX0sICR7dH1dLCBvdmVybGFwc1x4MjAKICAgICAgd2l0aCB0aGUgb3Ro'@; put 'ZXIgZGVjbGFyZWQgbWVyZ2VkIGNlbGwuIFRoZSBvdmVybGFwcGluZyBtZXJnZWQgY2VsbCB3YXMgbm90IGFkZGVkIHRvIHRoZSB0YWJsZSwgcGxlYXNlXHgyMAogICAgICBmaXggeW91ciBzZXR1cC5gfWdldChlLHQpe3JldHVybiEhdGhpcy5tZXJnZWRDZWxsc01hdHJpeC5oYXMoZSkmJih0'@; put 'aGlzLm1lcmdlZENlbGxzTWF0cml4LmdldChlKS5nZXQodCk/PyExKX1nZXRCeVJhbmdlKGUpe2NvbnN0e3Jvdzp0LGNvbDpyfT1lLmdldFRvcFN0YXJ0Q29ybmVyKCkse3JvdzppLGNvbDpvfT1lLmdldEJvdHRvbUVuZENvcm5lcigpO2lmKG51bGw9PT10fHxudWxsPT09aXx8bnVsbD09PXJ8'@; put 'fG51bGw9PT1vKXJldHVybiExO2NvbnN0IGE9dGhpcy5tZXJnZWRDZWxscy5sZW5ndGg7bGV0IGw9ITE7Zm9yKGxldCB1PTA7dTxhO3UrKyl7Y29uc3QgZz10aGlzLm1lcmdlZENlbGxzW3VdLHtyb3c6RSxjb2w6Tyxyb3dzcGFuOlosY29sc3BhbjplZX09ZztpZihFPj10JiZFK1otMTw9aSYm'@; put 'Tz49ciYmTytlZS0xPD1vKXtsPWc7YnJlYWt9fXJldHVybiBsfWZpbHRlck92ZXJsYXBwaW5nTWVyZ2VDZWxscyhlKXtjb25zdCB0PW5ldyBTZXQ7cmV0dXJuIHRoaXMubWVyZ2VkQ2VsbHMuZm9yRWFjaChpPT57Y29uc3R7cm93Om8sY29sOmEsY29sc3BhbjpsLHJvd3NwYW46dX09aTtmb3Io'@; put 'bGV0IGc9bztnPG8rdTtnKyspZm9yKGxldCBFPWE7RTxhK2w7RSsrKXQuYWRkKGByJHtnfSxjJHtFfWApfSksZS5maWx0ZXIoaT0+e2NvbnN0e3JvdzpvLGNvbDphLGNvbHNwYW46bCxyb3dzcGFuOnV9PWksZz1uZXcgU2V0O2xldCBFPSExO2ZvcihsZXQgTz1vO088byt1O08rKyl7Zm9yKGxl'@; put 'dCBaPWE7WjxhK2w7WisrKXtjb25zdCBlZT1gciR7T30sYyR7Wn1gO2lmKHQuaGFzKGVlKSl7SGEoX0YuSVNfT1ZFUkxBUFBJTkdfV0FSTklORyhpKSksRT0hMDticmVha31nLmFkZChlZSl9aWYoRSlicmVha31yZXR1cm4gRXx8Zy5mb3JFYWNoKE89PnQuYWRkKE8pKSwhRX0pfWdldFdpdGhp'@; put 'blJhbmdlKGUsdD0hMSl7Y29uc3R7cm93OnIsY29sOml9PWUuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7cm93Om8sY29sOmF9PWUuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7aWYobnVsbD09PXJ8fG51bGw9PT1vfHxudWxsPT09aXx8bnVsbD09PWEpcmV0dXJuW107Y29uc3QgbD1bXTtmb3IobGV0IHU9'@; put 'cjt1PD1vO3UrKylmb3IobGV0IGc9aTtnPD1hO2crKyl7Y29uc3QgRT10aGlzLmdldCh1LGcpO0UmJih0fHwhdCYmRS5yb3c9PT11JiZFLmNvbD09PWcpJiZsLnB1c2goRSl9cmV0dXJuIGx9YWRkKGUsdD0hMSl7Y29uc3Qgcj1lLnJvdyxpPWUuY29sLGw9bmV3IEk2KHIsaSxlLnJvd3NwYW4s'@; put 'ZS5jb2xzcGFuLHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzLHRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UpLHU9dGhpcy5nZXQocixpKSxnPSF0JiZ0aGlzLmlzT3ZlcmxhcHBpbmcobCk7cmV0dXJuIHV8fGc/KGcmJkhhKF9GLklTX09WRVJMQVBQSU5HX1dBUk5JTkcobCkpLCExKToodGhp'@; put 'cy5ob3QmJmwubm9ybWFsaXplKHRoaXMuaG90KSx0aGlzLm1lcmdlZENlbGxzLnB1c2gobCksaEModGhpcyxEZmUsUkJlKS5jYWxsKHRoaXMsbCksbCl9cmVtb3ZlKGUsdCl7Y29uc3Qgcj10aGlzLmdldChlLHQpLGk9cj90aGlzLm1lcmdlZENlbGxzLmluZGV4T2Yocik6LTE7cmV0dXJuISgh'@; put 'cnx8LTE9PT1pKSYmKHRoaXMubWVyZ2VkQ2VsbHMuc3BsaWNlKGksMSksaEModGhpcyxrQmUsQ0d0KS5jYWxsKHRoaXMscikscil9Y2xlYXIoKXtYbih0aGlzLm1lcmdlZENlbGxzLCh7cm93OmUsY29sOnQscm93c3BhbjpyLGNvbHNwYW46aX0pPT57VmEoZSxlK3Isbz0+e1ZhKHQsdCtpLGE9'@; put 'Pntjb25zdCBsPXRoaXMuaG90LmdldENlbGwobyxhKTtsJiYobC5yZW1vdmVBdHRyaWJ1dGUoInJvd3NwYW4iKSxsLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLGwuc3R5bGUuZGlzcGxheT0iIil9KX0pfSksdGhpcy5tZXJnZWRDZWxscy5sZW5ndGg9MCx0aGlzLm1lcmdlZENlbGxzTWF0'@; put 'cml4PW5ldyBNYXB9aXNPdmVybGFwcGluZyhlKXtjb25zdCB0PWUuZ2V0UmFuZ2UoKTtpZighdClyZXR1cm4hMTtmb3IobGV0IHI9MDtyPHRoaXMubWVyZ2VkQ2VsbHMubGVuZ3RoO3IrKyl7Y29uc3Qgbz10aGlzLm1lcmdlZENlbGxzW3JdLmdldFJhbmdlKCk7aWYobyYmby5vdmVybGFwcyh0'@; put 'KSlyZXR1cm4hMH1yZXR1cm4hMX1pc0ZpcnN0UmVuZGVyYWJsZU1lcmdlZENlbGwoZSx0KXtjb25zdCByPXRoaXMuZ2V0KGUsdCk7aWYoIXIpcmV0dXJuITE7Y29uc3R7cm93OmksY29sOm8scm93c3BhbjphLGNvbHNwYW46bH09cix1PXRoaXMuaG90LnZpZXcuZ2V0QWN0aXZlT3ZlcmxheU5h'@; put 'bWUoKSxnPVsidG9wIiwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyh1KT8wOnRoaXMuaG90LmdldEZpcnN0UmVuZGVyZWRWaXNpYmxlUm93KCksRT1bImlubGluZV9zdGFydCIsInRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIiwiYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIi'@; put 'XS5pbmNsdWRlcyh1KT8wOnRoaXMuaG90LmdldEZpcnN0UmVuZGVyZWRWaXNpYmxlQ29sdW1uKCksTz1WcyhnLGksaSthLTEpLFo9VnMoRSxvLG8rbC0xKTtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KE8sMSk9PT1lJiZ0aGlzLmhvdC5j'@; put 'b2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoWiwxKT09PXR9Z2V0Rmlyc3RSZW5kZXJhYmxlQ29vcmRzKGUsdCl7Y29uc3Qgcj10aGlzLmdldChlLHQpO2lmKCFyfHx0aGlzLmlzRmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbChlLHQpKXJldHVybiB0aGlzLmhvdC5f'@; put 'Y3JlYXRlQ2VsbENvb3JkcyhlLHQpO2NvbnN0IGk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHIucm93LDEpPz9yLnJvdyxvPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChyLmNvbCwxKT8/ci5jb2w7'@; put 'cmV0dXJuIHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGksbyl9Z2V0U3RhcnRNb3N0Q29sdW1uSW5kZXgoZSx0KXtjb25zdCByPWhDKHRoaXMsdkYsXyQpLmNhbGwodGhpcyxlLCJjb2wiLC0xKTtsZXQgaT10O2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKWlmKHJbb108PXQpe2k9cltv'@; put 'XTticmVha31yZXR1cm4gaX1nZXRFbmRNb3N0Q29sdW1uSW5kZXgoZSx0KXtjb25zdCByPWhDKHRoaXMsdkYsXyQpLmNhbGwodGhpcyxlLCJjb2wiLDEpO2xldCBpPXQ7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspaWYocltvXT49dCl7aT1yW29dO2JyZWFrfXJldHVybiBpfWdldFRvcE1v'@; put 'c3RSb3dJbmRleChlLHQpe2NvbnN0IHI9aEModGhpcyx2RixfJCkuY2FsbCh0aGlzLGUsInJvdyIsLTEpO2xldCBpPXQ7Zm9yKGxldCBvPTA7bzxyLmxlbmd0aDtvKyspaWYocltvXTw9dCl7aT1yW29dO2JyZWFrfXJldHVybiBpfWdldEJvdHRvbU1vc3RSb3dJbmRleChlLHQpe2NvbnN0IHI9'@; put 'aEModGhpcyx2RixfJCkuY2FsbCh0aGlzLGUsInJvdyIsMSk7bGV0IGk9dDtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKylpZihyW29dPj10KXtpPXJbb107YnJlYWt9cmV0dXJuIGl9c2hpZnRDb2xsZWN0aW9ucyhlLHQscil7Y29uc3QgaT1bMCwwXTtzd2l0Y2goZSl7Y2FzZSJyaWdodCI6'@; put 'aVswXSs9cjticmVhaztjYXNlImxlZnQiOmlbMF0tPXI7YnJlYWs7Y2FzZSJkb3duIjppWzFdKz1yO2JyZWFrO2Nhc2UidXAiOmlbMV0tPXJ9Y29uc3Qgbz1bXTt0aGlzLm1lcmdlZENlbGxzLmZvckVhY2goYT0+e2Euc2hpZnQoaSx0KSxhLnJlbW92ZWQmJm8ucHVzaChhKX0pLG8uZm9yRWFj'@; put 'aChhPT57dGhpcy5tZXJnZWRDZWxscy5zcGxpY2UodGhpcy5tZXJnZWRDZWxscy5pbmRleE9mKGEpLDEpfSksdGhpcy5tZXJnZWRDZWxsc01hdHJpeC5jbGVhcigpLHRoaXMubWVyZ2VkQ2VsbHMuZm9yRWFjaChhPT57aEModGhpcyxEZmUsUkJlKS5jYWxsKHRoaXMsYSl9KX1jYXB0dXJlUGh5'@; put 'c2ljYWxTcGFucyhlKXtjb25zdCB0PSJjb2x1bW4iPT09ZSxyPXQ/ImNvbCI6InJvdyIsaT10PyJjb2xzcGFuIjoicm93c3BhbiIsbz10P2w9PnRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4obCk6bD0+dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhsKSxhPW5ldyBNYXA7cmV0dXJuIHRoaXMubWVy'@; put 'Z2VkQ2VsbHMuZm9yRWFjaChsPT57Y29uc3QgdT1bXTtmb3IobGV0IGc9MDtnPGxbaV07ZysrKXUucHVzaChvKGxbcl0rZykpO2Euc2V0KGwsdSl9KSxhfXN0YXRpYyBkZXRlY3RDb250aWd1b3VzUnVucyhlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuW107Y29uc3QgdD1bXTtsZXQgcj1lWzBd'@; put 'LGk9MTtmb3IobGV0IG89MTtvPGUubGVuZ3RoO28rKyllW29dPT09ZVtvLTFdKzE/aSs9MToodC5wdXNoKHtzdGFydDpyLGxlbmd0aDppfSkscj1lW29dLGk9MSk7cmV0dXJuIHQucHVzaCh7c3RhcnQ6cixsZW5ndGg6aX0pLHR9dHJhbnNsYXRlQWZ0ZXJBeGlzTW92ZShlLHQpe2NvbnN0IHI9'@; put 'ImNvbHVtbiI9PT1lLGk9cj8iY29sIjoicm93IixvPXI/ImNvbHNwYW4iOiJyb3dzcGFuIixhPXI/InJvdyI6ImNvbCIsbD1yPyJyb3dzcGFuIjoiY29sc3BhbiIsdT1yP0U9PnRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKEUpOkU9PnRoaXMuaG90LnRvVmlzdWFsUm93KEUpLGc9W107dGhpcy5t'@; put 'ZXJnZWRDZWxscy5mb3JFYWNoKEU9Pntjb25zdCBPPXQuZ2V0KEUpO2lmKCFPKXJldHVybiB2b2lkIGcucHVzaCh7cm93OkUucm93LGNvbDpFLmNvbCxyb3dzcGFuOkUucm93c3Bhbixjb2xzcGFuOkUuY29sc3Bhbn0pO2NvbnN0IFo9Ty5tYXAodSkuZmlsdGVyKGVlPT5udWxsIT09ZWUmJmVl'@; put 'Pj0wKS5zb3J0KChlZSx2ZSk9PmVlLXZlKTswIT09Wi5sZW5ndGgmJl9GLmRldGVjdENvbnRpZ3VvdXNSdW5zKFopLmZvckVhY2goZWU9Pntjb25zdCB2ZT17W2ldOmVlLnN0YXJ0LFtvXTplZS5sZW5ndGgsW2FdOkVbYV0sW2xdOkVbbF19OzE9PT12ZS5jb2xzcGFuJiYxPT09dmUucm93c3Bh'@; put 'bnx8Zy5wdXNoKHZlKX0pfSksdGhpcy5tZXJnZWRDZWxscy5sZW5ndGg9MCx0aGlzLm1lcmdlZENlbGxzTWF0cml4LmNsZWFyKCksZy5mb3JFYWNoKEU9Pnt0aGlzLmFkZChFLCEwKX0pfWNvbnN0cnVjdG9yKGUpe0lmZSh0aGlzLHZGKSxJZmUodGhpcyxEZmUpLElmZSh0aGlzLGtCZSksdGhp'@; put 'cy5tZXJnZWRDZWxscz1bXSx0aGlzLm1lcmdlZENlbGxzTWF0cml4PW5ldyBNYXAsdGhpcy5wbHVnaW49ZSx0aGlzLmhvdD1lLmhvdH19ZnVuY3Rpb24gXyQobixlLHQ9MSl7Y29uc3Qgcj1uZXcgTWFwLGk9MT09PXQ/bi5nZXRUb3BTdGFydENvcm5lcigpOm4uZ2V0Qm90dG9tRW5kQ29ybmVy'@; put 'KCksbz0xPT09dD9uLmdldEJvdHRvbUVuZENvcm5lcigpOm4uZ2V0VG9wU3RhcnRDb3JuZXIoKSxsPWkuY29sPz8wLHU9by5yb3c/PzAsZz1vLmNvbD8/MDtmb3IobGV0IEU9aS5yb3c/PzA7MT09PXQ/RTw9dTpFPj11O0UrPXQpZm9yKGxldCBPPWw7MT09PXQ/Tzw9ZzpPPj1nO08rPXQpe2Nv'@; put 'bnN0IFo9InJvdyI9PT1lP0U6TyxlZT10aGlzLmdldChFLE8pO2xldCB2ZT1aO2VlJiYodmU9MT09PXQ/ZWVbZV0rZWVbYCR7ZX1zcGFuYF0tMTplZVtlXSksci5oYXMoWil8fHIuc2V0KFosbmV3IFNldCksci5nZXQoWikuYWRkKHZlKX1yZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KEFycmF5'@; put 'LmZyb20oci5lbnRyaWVzKCkpLmZpbHRlcigoWyxFXSk9PjE9PT1FLnNpemUpLmZsYXRNYXAoKFssRV0pPT5BcnJheS5mcm9tKEUpKSkpfWZ1bmN0aW9uIFJCZShuKXtmb3IobGV0IGU9bi5yb3c7ZTxuLnJvdytuLnJvd3NwYW47ZSsrKWZvcihsZXQgdD1uLmNvbDt0PG4uY29sK24uY29sc3Bh'@; put 'bjt0KyspdGhpcy5tZXJnZWRDZWxsc01hdHJpeC5oYXMoZSl8fHRoaXMubWVyZ2VkQ2VsbHNNYXRyaXguc2V0KGUsbmV3IE1hcCksdGhpcy5tZXJnZWRDZWxsc01hdHJpeC5nZXQoZSkuc2V0KHQsbil9ZnVuY3Rpb24gQ0d0KG4pe2ZvcihsZXQgZT1uLnJvdztlPG4ucm93K24ucm93c3Bhbjtl'@; put 'KyspZm9yKGxldCB0PW4uY29sO3Q8bi5jb2wrbi5jb2xzcGFuO3QrKyl0aGlzLm1lcmdlZENlbGxzTWF0cml4LmdldChlKT8uZGVsZXRlKHQpfWNvbnN0IFNHdD1fRixNR3Q9Y2xhc3MgRUd0e2dldERpcmVjdGlvbihlLHQpe2xldCByPW51bGw7cmV0dXJuIHI9dFswXT09PWVbMF0mJnRbMV09'@; put 'PT1lWzFdJiZ0WzNdPT09ZVszXT8iZG93biI6dFsyXT09PWVbMl0mJnRbMV09PT1lWzFdJiZ0WzNdPT09ZVszXT8idXAiOnRbMV09PT1lWzFdJiZ0WzJdPT09ZVsyXT8icmlnaHQiOiJsZWZ0IixyfXNuYXBEcmFnQXJlYShlLHQscixpKXtjb25zdCBvPXQuc2xpY2UoMCksYT10aGlzLmdldEF1'@; put 'dG9maWxsU2l6ZShlLHQsciksW2wsdSxnLEVdPWUsWj1bInVwIiwiZG93biJdLmluZGV4T2Yocik+LTE/Zy1sKzE6RS11KzEsdmU9YS1NYXRoLmZsb29yKGEvWikqWixNZT10aGlzLmdldEZhcnRoZXN0Q29sbGVjdGlvbihlLHQscixpKTtpZihNZSlpZigiZG93biI9PT1yKXtjb25zdCBIZT1N'@; put 'ZS5yb3crTWUucm93c3Bhbi1sLXZlO29bMl0rSGU+PXRoaXMucGx1Z2luLmhvdC5jb3VudFJvd3MoKT9vWzJdLT12ZTpvWzJdKz12ZT9IZTowfWVsc2UgaWYoInJpZ2h0Ij09PXIpe2NvbnN0IEhlPU1lLmNvbCtNZS5jb2xzcGFuLXUtdmU7b1szXStIZT49dGhpcy5wbHVnaW4uaG90LmNvdW50'@; put 'Q29scygpP29bM10tPXZlOm9bM10rPXZlP0hlOjB9ZWxzZSBpZigidXAiPT09cil7Y29uc3QgSGU9Zy12ZS1NZS5yb3crMTtvWzBdK0hlPDA/b1swXSs9dmU6b1swXS09dmU/SGU6MH1lbHNlIGlmKCJsZWZ0Ij09PXIpe2NvbnN0IEhlPUUtdmUtTWUuY29sKzE7b1sxXStIZTwwP29bMV0rPXZl'@; put 'Om9bMV0tPXZlP0hlOjB9cmV0dXJuIHRoaXMudXBkYXRlQ3VycmVudEZpbGxDYWNoZSh7YmFzZUFyZWE6ZSxkcmFnRGlyZWN0aW9uOnIsZm91bmRNZXJnZWRDZWxsczppLGZpbGxTaXplOmEsZHJhZ0FyZWE6byxjeWNsZUxlbmd0aDpafSksb311cGRhdGVDdXJyZW50RmlsbENhY2hlKGUpe3Ro'@; put 'aXMuY3VycmVudEZpbGxEYXRhfHwodGhpcy5jdXJyZW50RmlsbERhdGE9e30pLFlkKHRoaXMuY3VycmVudEZpbGxEYXRhLGUpfWdldEF1dG9maWxsU2l6ZShlLHQscil7Y29uc3RbaSxvLGEsbF09ZSxbdSxnLEUsT109dDtzd2l0Y2gocil7Y2FzZSJ1cCI6cmV0dXJuIGktdTtjYXNlImRvd24i'@; put 'OnJldHVybiBFLWE7Y2FzZSJsZWZ0IjpyZXR1cm4gby1nO2Nhc2UicmlnaHQiOnJldHVybiBPLWw7ZGVmYXVsdDpyZXR1cm4gMH19Z2V0RHJhZ0FyZWEoZSx0LHIpe2NvbnN0W2ksbyxhLGxdPWUsW3UsZyxFLE9dPXQ7c3dpdGNoKHIpe2Nhc2UidXAiOnJldHVyblt1LGcsaS0xLGxdO2Nhc2Ui'@; put 'ZG93biI6e2NvbnN0IFo9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KEUsbCk7cmV0dXJuW2ErMSxvLEUrKFo/Wi5yb3dzcGFuLTE6MCksbF19Y2FzZSJsZWZ0IjpyZXR1cm5bdSxnLGEsby0xXTtjYXNlInJpZ2h0Ijp7Y29uc3QgWj10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5n'@; put 'ZXQoRSxsKTtyZXR1cm5baSxsKyhaP1ouY29sc3Bhbi0xOjApLEUsT119ZGVmYXVsdDpyZXR1cm5bMCwwLDAsMF19fWdldEZhcnRoZXN0Q29sbGVjdGlvbihlLHQscixpKXtjb25zdFtvLGEsbCx1XT1lLGc9WyJ1cCIsImRvd24iXS5pbmRleE9mKHIpPi0xLEU9Zz9sOnUsTz1nP286YSxaPXRo'@; put 'aXMuZ2V0QXV0b2ZpbGxTaXplKGUsdCxyKSxlZT1nP2wtbysxOnUtYSsxLE1lPVotTWF0aC5mbG9vcihaL2VlKSplZTtsZXQgSGU9bnVsbCxXZT1udWxsLGF0PW51bGw7c3dpdGNoKHIpe2Nhc2UidXAiOkhlPSJpbmNsdWRlc1ZlcnRpY2FsbHkiLGF0PUUtTWUrMTticmVhaztjYXNlImxlZnQi'@; put 'OkhlPSJpbmNsdWRlc0hvcml6b250YWxseSIsYXQ9RS1NZSsxO2JyZWFrO2Nhc2UiZG93biI6SGU9ImluY2x1ZGVzVmVydGljYWxseSIsYXQ9TytNZS0xO2JyZWFrO2Nhc2UicmlnaHQiOkhlPSJpbmNsdWRlc0hvcml6b250YWxseSIsYXQ9TytNZS0xfXJldHVybiBYbihpLEN0PT57Y29uc3Qg'@; put 'QXQ9Q3Q7QXRbSGVdKGF0KSYmQXQuaXNGYXJ0aGVyKFdlLHIpJiYoV2U9QXQpfSksV2V9cmVjcmVhdGVBZnRlckRhdGFQb3B1bGF0aW9uKGUpe2lmKCF0aGlzLmN1cnJlbnRGaWxsRGF0YSlyZXR1cm47Y29uc3QgdD10aGlzLmdldFJhbmdlRnJvbUNoYW5nZXMoZSkscj10aGlzLmN1cnJlbnRG'@; put 'aWxsRGF0YS5mb3VuZE1lcmdlZENlbGxzLGk9dGhpcy5jdXJyZW50RmlsbERhdGEuZHJhZ0RpcmVjdGlvbixvPShnLEUpPT57c3dpdGNoKGkpe2Nhc2UidXAiOnJldHVybiBnLnJvdy1FPj10LmZyb20ucm93O2Nhc2UiZG93biI6cmV0dXJuIGcucm93K2cucm93c3Bhbi0xK0U8PXQudG8ucm93'@; put 'O2Nhc2UibGVmdCI6cmV0dXJuIGcuY29sLUU+PXQuZnJvbS5jb2x1bW47Y2FzZSJyaWdodCI6cmV0dXJuIGcuY29sK2cuY29sc3Bhbi0xK0U8PXQudG8uY29sdW1uO2RlZmF1bHQ6cmV0dXJuIG51bGx9fTtsZXQgYT0wLGw9bnVsbCx1PTE7ZG97Zm9yKGxldCBnPTA7ZzxyLmxlbmd0aDtnKz0x'@; put 'KXtpZihsPXJbZ10sYT11KnRoaXMuY3VycmVudEZpbGxEYXRhLmN5Y2xlTGVuZ3RoLG8obCxhKSlzd2l0Y2goaSl7Y2FzZSJ1cCI6dGhpcy5wbHVnaW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmFkZCh7cm93Omwucm93LWEscm93c3BhbjpsLnJvd3NwYW4sY29sOmwuY29sLGNvbHNwYW46bC5j'@; put 'b2xzcGFufSwhMCk7YnJlYWs7Y2FzZSJkb3duIjp0aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uYWRkKHtyb3c6bC5yb3crYSxyb3dzcGFuOmwucm93c3Bhbixjb2w6bC5jb2wsY29sc3BhbjpsLmNvbHNwYW59LCEwKTticmVhaztjYXNlImxlZnQiOnRoaXMucGx1Z2luLm1lcmdl'@; put 'ZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpsLnJvdyxyb3dzcGFuOmwucm93c3Bhbixjb2w6bC5jb2wtYSxjb2xzcGFuOmwuY29sc3Bhbn0sITApO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpsLnJvdyxyb3dzcGFuOmwucm93'@; put 'c3Bhbixjb2w6bC5jb2wrYSxjb2xzcGFuOmwuY29sc3Bhbn0sITApfWc9PT1yLmxlbmd0aC0xJiYodSs9MSl9fXdoaWxlKG51bGwhPT1sJiZvKGwsYSkpO3RoaXMuY3VycmVudEZpbGxEYXRhPW51bGwsdGhpcy5wbHVnaW4uaG90LnJlbmRlcigpLHIubGVuZ3RoPjAmJnRoaXMucGx1Z2luLmlm'@; put 'Q2hyb21lRm9yY2VSZXBhaW50KCl9Z2V0UmFuZ2VGcm9tQ2hhbmdlcyhlKXtsZXQgdD1udWxsLHI9bnVsbCxpPW51bGwsbz1udWxsO3JldHVybiBYbihlLGE9Pntjb25zdCB1PWFbMF0sZz10aGlzLnBsdWdpbi5ob3QucHJvcFRvQ29sKGFbMV0pOyhudWxsPT09dHx8dTx0KSYmKHQ9dSksKG51'@; put 'bGw9PT1yfHx1PnIpJiYocj11KSwobnVsbD09PWl8fGc8aSkmJihpPWcpLChudWxsPT09b3x8Zz5vKSYmKG89Zyl9KSx7ZnJvbTp7cm93OnQ/PzAsY29sdW1uOmk/PzB9LHRvOntyb3c6cj8/MCxjb2x1bW46bz8/MH19fWRyYWdBcmVhT3ZlcmxhcHNDb2xsZWN0aW9ucyhlLHQscil7Y29uc3Qg'@; put 'aT10aGlzLmdldERyYWdBcmVhKGUsdCxyKSxbbyxhLGwsdV09aSxnPXRoaXMucGx1Z2luLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhvLGEpLEU9dGhpcy5wbHVnaW4uaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGwsdSksTz10aGlzLnBsdWdpbi5ob3QuX2NyZWF0ZUNlbGxSYW5nZShnLGcsRSk7aWYo'@; put 'MD09PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKE8sITApLmxlbmd0aClyZXR1cm4hMTtjb25zdCBlZT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRoaW5SYW5nZShPLCExKTtyZXR1cm4gMD09PWVlLmxlbmd0aHx8KCJ1cCI9PT1yfHwiZG93biI9'@; put 'PT1yPyFlZS5ldmVyeSgoe2NvbHNwYW46dmV9KT0+dmU9PT1PLmdldFdpZHRoKCkpOiFlZS5ldmVyeSgoe3Jvd3NwYW46dmV9KT0+dmU9PT1PLmdldEhlaWdodCgpKSl9Y29uc3RydWN0b3IoZSl7dGhpcy5jdXJyZW50RmlsbERhdGE9bnVsbCx0aGlzLnBsdWdpbj1lLHRoaXMubWVyZ2VkQ2Vs'@; put 'bHNDb2xsZWN0aW9uPXRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbn19LHhHdD1jbGFzcyBUR3R7Z2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lKGUsdCxyLGkpe2NvbnN0IG89TWF0aC5taW4oclswXSxyWzJdKSxhPU1hdGgubWluKHJbMV0sclszXSksbD1NYXRoLm1heChy'@; put 'WzBdLHJbMl0pLHU9TWF0aC5tYXgoclsxXSxyWzNdKTtpZih2b2lkIDA9PT1pKXJldHVybjtjb25zdCBnPXRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbjtpZighZy5pc0ZpcnN0UmVuZGVyYWJsZU1lcmdlZENlbGwoZSx0KSlyZXR1cm47Y29uc3QgTz1nLmdldChlLHQpO2lmKCFP'@; put 'KXJldHVybjtjb25zdCBaPU8uZ2V0TGFzdFJvdygpLGVlPU8uZ2V0TGFzdENvbHVtbigpO3JldHVybiBvPD1PLnJvdyYmYTw9Ty5jb2wmJmw+PVomJnU+PWVlP2Ake3RoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWV9LSR7aX1gOnRoaXMuaXNNZXJnZUNlbGxGdWxseVNlbGVj'@; put 'dGVkKE8sdGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpKT9gJHt0aGlzLmZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lfS1tdWx0aXBsZWA6dm9pZCAwfWlzTWVyZ2VDZWxsRnVsbHlTZWxlY3RlZChlLHQpe2NvbnN0IHI9W107aWYoIXR8fCFlKXJldHVybiExO2ZvcihsZXQgaT0w'@; put 'O2k8ZS5yb3dzcGFuO2krPTEpZm9yKGxldCBvPTA7bzxlLmNvbHNwYW47bys9MSlyLnB1c2godGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZS5yb3craSxlLmNvbCtvKSk7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKz0xKXtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSs9'@; put 'MSlvW2FdPXRbYV0uaW5jbHVkZXMocltpXSk7aWYoIW8uaW5jbHVkZXMoITApKXJldHVybiExfXJldHVybiEwfWdldFNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZVRvUmVtb3ZlKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PD03O3QrPTEpZS5wdXNoKGAke3RoaXMuZnVsbHlTZWxlY3Rl'@; put 'ZE1lcmdlZENlbGxDbGFzc05hbWV9LSR7dH1gKTtyZXR1cm4gZS5wdXNoKGAke3RoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWV9LW11bHRpcGxlYCksZX1jb25zdHJ1Y3RvcihlKXt0aGlzLmZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lPSJmdWxseVNlbGVjdGVk'@; put 'TWVyZ2VkQ2VsbCIsdGhpcy5wbHVnaW49ZSx0aGlzLmhvdD1lLmhvdH19O2NsYXNzIElCZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXY9bnVsbCx0aGlzLmRhdGE9ZX19Y29uc3QgeSQ9Y2xhc3Mga0d0e3B1c2goZSl7Y29uc3QgdD1uZXcgSUJlKGUpO2lmKG51bGw9'@; put 'PT10aGlzLmZpcnN0KXRoaXMuZmlyc3Q9dCx0aGlzLmxhc3Q9dDtlbHNle2NvbnN0IHI9dGhpcy5sYXN0O3RoaXMubGFzdD10LHQucHJldj1yLHIubmV4dD10fXJldHVybiB0fXVuc2hpZnQoZSl7Y29uc3QgdD1uZXcgSUJlKGUpO2lmKG51bGw9PT10aGlzLmZpcnN0KXRoaXMuZmlyc3Q9dCx0'@; put 'aGlzLmxhc3Q9dDtlbHNle2NvbnN0IHI9dGhpcy5maXJzdDt0aGlzLmZpcnN0PXQsdC5uZXh0PXIsci5wcmV2PXR9fWlub3JkZXIoZSl7bGV0IHQ9dGhpcy5maXJzdDtmb3IoO3Q7KXtjb25zdCByPWUodCk7aWYodD09PXRoaXMubGFzdHx8ITA9PT1yKWJyZWFrO3Q9dC5uZXh0fX1yZW1vdmUo'@; put 'ZSl7aWYobnVsbD09PXRoaXMuZmlyc3QpcmV0dXJuITE7bGV0IHIsaSx0PXRoaXMuZmlyc3Q7Zm9yKDt0Oyl7aWYodC5kYXRhPT09ZSlyZXR1cm4gcj10Lm5leHQsaT10LnByZXYsciYmKHIucHJldj1pKSxpJiYoaS5uZXh0PXIpLHQ9PT10aGlzLmZpcnN0JiYodGhpcy5maXJzdD1yKSx0PT09'@; put 'dGhpcy5sYXN0JiYodGhpcy5sYXN0PWkpLCEwO3Q9dC5uZXh0fXJldHVybiExfWhhc0N5Y2xlKCl7bGV0IGU9dGhpcy5maXJzdCx0PXRoaXMuZmlyc3Q7Zm9yKDs7KXtpZihudWxsPT09ZXx8KGU9ZS5uZXh0LG51bGw9PT1lKSlyZXR1cm4hMTtpZihlPWUubmV4dCx0PXQubmV4dCxlPT09dCly'@; put 'ZXR1cm4hMH19cG9wKCl7aWYobnVsbD09PXRoaXMubGFzdClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubGFzdDtyZXR1cm4gdGhpcy5sYXN0PXRoaXMubGFzdC5wcmV2LGV9c2hpZnQoKXtpZihudWxsPT09dGhpcy5maXJzdClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuZmlyc3Q7cmV0dXJu'@; put 'IHRoaXMuZmlyc3Q9dGhpcy5maXJzdC5uZXh0LGV9cmVjdXJzaXZlUmV2ZXJzZSgpe2lmKCF0aGlzLmZpcnN0KXJldHVybjsoZnVuY3Rpb24gZShyLGkpe2kmJihlKGksaS5uZXh0KSxpLm5leHQ9cil9KSh0aGlzLmZpcnN0LHRoaXMuZmlyc3QubmV4dCksdGhpcy5maXJzdC5uZXh0PW51bGw7'@; put 'Y29uc3QgdD10aGlzLmZpcnN0O3RoaXMuZmlyc3Q9dGhpcy5sYXN0LHRoaXMubGFzdD10fXJldmVyc2UoKXtpZighdGhpcy5maXJzdHx8IXRoaXMuZmlyc3QubmV4dClyZXR1cm47bGV0IGU9dGhpcy5maXJzdC5uZXh0LHQ9dGhpcy5maXJzdCxyPW51bGw7Zm9yKDtlOylyPWUubmV4dCxlLm5l'@; put 'eHQ9dCx0LnByZXY9ZSx0PWUsZT1yO3RoaXMuZmlyc3QubmV4dD1udWxsLHRoaXMubGFzdC5wcmV2PW51bGwscj10aGlzLmZpcnN0LHRoaXMuZmlyc3Q9dCx0aGlzLmxhc3Q9cn1jb25zdHJ1Y3Rvcigpe3RoaXMuZmlyc3Q9bnVsbCx0aGlzLmxhc3Q9bnVsbH19O2Z1bmN0aW9uIERCZShuLGUp'@; put 'e2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gTEJlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRv'@; put 'ICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIEhsKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFJHdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sTEJlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGZDKG4s'@; put 'ZSx0KXtEQmUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIGwyKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gSUd0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBw'@; put 'cml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixMQmUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIE9CZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH12YXIg'@; put 'eW09bmV3IFdlYWtNYXAsYm09bmV3IFdlYWtNYXAsYWc9bmV3IFdlYWtNYXAsc2c9bmV3IFdlYWtNYXAsTGZlPW5ldyBXZWFrTWFwLGIkPW5ldyBXZWFrTWFwLHckPW5ldyBXZWFrTWFwLE9mZT1uZXcgV2Vha1NldDtjbGFzcyBMR3R7Z2V0Q3VycmVudFZlcnRpY2FsTm9kZSgpe3JldHVybiBI'@; put 'bCh0aGlzLHNnKT8uZGF0YX1nZXRGaXJzdFZlcnRpY2FsTm9kZSgpe3JldHVybiBIbCh0aGlzLGJtKS5maXJzdD8uZGF0YX1nZXROZXh0VmVydGljYWxOb2RlKCl7cmV0dXJuIEhsKHRoaXMsc2cpPy5uZXh0Py5kYXRhfWdldFByZXZWZXJ0aWNhbE5vZGUoKXtyZXR1cm4gSGwodGhpcyxzZyk/'@; put 'LnByZXY/LmRhdGF9Z2V0Q3VycmVudEhvcml6b250YWxOb2RlKCl7cmV0dXJuIEhsKHRoaXMsYWcpPy5kYXRhfWdldEZpcnN0SG9yaXpvbnRhbE5vZGUoKXtyZXR1cm4gSGwodGhpcyx5bSkuZmlyc3Q/LmRhdGF9Z2V0TmV4dEhvcml6b250YWxOb2RlKCl7cmV0dXJuIEhsKHRoaXMsYWcpPy5u'@; put 'ZXh0Py5kYXRhfWdldFByZXZIb3Jpem9udGFsTm9kZSgpe3JldHVybiBIbCh0aGlzLGFnKT8ucHJldj8uZGF0YX1zZXRQcmV2Tm9kZUFzQWN0aXZlKCl7SGwodGhpcyxzZykmJmwyKHRoaXMsc2csSGwodGhpcyxzZykucHJldiksSGwodGhpcyxhZykmJmwyKHRoaXMsYWcsSGwodGhpcyxhZyku'@; put 'cHJldil9c2V0TmV4dE5vZGVBc0FjdGl2ZSgpe0hsKHRoaXMsc2cpJiZsMih0aGlzLHNnLEhsKHRoaXMsc2cpLm5leHQpLEhsKHRoaXMsYWcpJiZsMih0aGlzLGFnLEhsKHRoaXMsYWcpLm5leHQpfWJ1aWxkRm9jdXNPcmRlcihlKXtsMih0aGlzLHltLG5ldyB5JCksZS5mb3JFYWNoKCh0LHIp'@; put 'PT57Y29uc3QgaT1uZXcgV2Vha1NldCxvPXQuZ2V0VG9wU3RhcnRDb3JuZXIoKSxhPXQuZ2V0Qm90dG9tRW5kQ29ybmVyKCksdT1hLnJvdz8/MCxnPW8uY29sPz8wLEU9YS5jb2w/PzA7Zm9yKGxldCBPPW8ucm93Pz8wO088PXU7TysrKWlmKCFIbCh0aGlzLGIkKS5pc0hpZGRlbihPKSlmb3Io'@; put 'bGV0IFo9ZztaPD1FO1orKyl7aWYoSGwodGhpcyx3JCkuaXNIaWRkZW4oWikpY29udGludWU7Y29uc3QgZWU9T0JlKHRoaXMsT2ZlLE5CZSkuY2FsbCh0aGlzLHtzZWxlY3RlZFJhbmdlOnQsc2VsZWN0aW9uTGF5ZXI6cixsaXN0T3JkZXI6SGwodGhpcyx5bSksbWVyZ2VDZWxsc1Zpc2l0b3I6'@; put 'aSxyb3c6Tyxjb2x1bW46Wn0pO2VlJiZsMih0aGlzLGFnLGVlKX19KSxIbCh0aGlzLHltKS5maXJzdCYmSGwodGhpcyx5bSkubGFzdCYmKEhsKHRoaXMseW0pLmZpcnN0LnByZXY9SGwodGhpcyx5bSkubGFzdCxIbCh0aGlzLHltKS5sYXN0Lm5leHQ9SGwodGhpcyx5bSkuZmlyc3QpLGwyKHRo'@; put 'aXMsYm0sbmV3IHkkKSxlLmZvckVhY2goKHQscik9Pntjb25zdCBpPW5ldyBXZWFrU2V0LG89dC5nZXRUb3BTdGFydENvcm5lcigpLGE9dC5nZXRCb3R0b21FbmRDb3JuZXIoKSxsPW8ucm93Pz8wLHU9YS5yb3c/PzAsRT1hLmNvbD8/MDtmb3IobGV0IE89by5jb2w/PzA7Tzw9RTtPKyspaWYo'@; put 'IUhsKHRoaXMsdyQpLmlzSGlkZGVuKE8pKWZvcihsZXQgWj1sO1o8PXU7WisrKXtpZihIbCh0aGlzLGIkKS5pc0hpZGRlbihaKSljb250aW51ZTtjb25zdCBlZT1PQmUodGhpcyxPZmUsTkJlKS5jYWxsKHRoaXMse3NlbGVjdGVkUmFuZ2U6dCxzZWxlY3Rpb25MYXllcjpyLGxpc3RPcmRlcjpI'@; put 'bCh0aGlzLGJtKSxtZXJnZUNlbGxzVmlzaXRvcjppLHJvdzpaLGNvbHVtbjpPfSk7ZWUmJmwyKHRoaXMsc2csZWUpfX0pLEhsKHRoaXMsYm0pLmZpcnN0JiZIbCh0aGlzLGJtKS5sYXN0JiYoSGwodGhpcyxibSkuZmlyc3QucHJldj1IbCh0aGlzLGJtKS5sYXN0LEhsKHRoaXMsYm0pLmxhc3Qu'@; put 'bmV4dD1IbCh0aGlzLGJtKS5maXJzdCl9c2V0QWN0aXZlTm9kZShlLHQscil7cmV0dXJuIEhsKHRoaXMseW0pLmlub3JkZXIoaT0+e2NvbnN0e3NlbGVjdGlvbkxheWVyOm8scm93U3RhcnQ6YSxyb3dFbmQ6bCxjb2xTdGFydDp1LGNvbEVuZDpnfT1pLmRhdGE7aWYobz09PXImJmU+PWEmJmU8'@; put 'PWwmJnQ+PXUmJnQ8PWcpcmV0dXJuIGwyKHRoaXMsYWcsaSksITB9KSxIbCh0aGlzLGJtKS5pbm9yZGVyKGk9Pntjb25zdHtzZWxlY3Rpb25MYXllcjpvLHJvd1N0YXJ0OmEscm93RW5kOmwsY29sU3RhcnQ6dSxjb2xFbmQ6Z309aS5kYXRhO2lmKG89PT1yJiZlPj1hJiZlPD1sJiZ0Pj11JiZ0'@; put 'PD1nKXJldHVybiBsMih0aGlzLHNnLGkpLCEwfSksdGhpc31jb25zdHJ1Y3Rvcih7bWVyZ2VkQ2VsbHNHZXR0ZXI6ZSxyb3dJbmRleE1hcHBlcjp0LGNvbHVtbkluZGV4TWFwcGVyOnJ9KXsoZnVuY3Rpb24gREd0KG4sZSl7REJlKG4sZSksZS5hZGQobil9KSh0aGlzLE9mZSksZkModGhpcyx5'@; put 'bSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZkModGhpcyxibSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZkModGhpcyxhZyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZkModGhpcyxzZyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZkModGhpcyxMZmUse3dyaXRh'@; put 'YmxlOiEwLHZhbHVlOnZvaWQgMH0pLGZDKHRoaXMsYiQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGZDKHRoaXMsdyQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGwyKHRoaXMseW0sbmV3IHkkKSxsMih0aGlzLGJtLG5ldyB5JCksbDIodGhpcyxhZyxudWxsKSxsMih0aGlzLHNn'@; put 'LG51bGwpLGwyKHRoaXMsTGZlLGUpLGwyKHRoaXMsYiQsdCksbDIodGhpcyx3JCxyKX19ZnVuY3Rpb24gTkJlKHtzZWxlY3RlZFJhbmdlOm4sc2VsZWN0aW9uTGF5ZXI6ZSxsaXN0T3JkZXI6dCxtZXJnZUNlbGxzVmlzaXRvcjpyLHJvdzppLGNvbHVtbjpvfSl7Y29uc3QgYT1uLmdldFRvcFN0'@; put 'YXJ0Q29ybmVyKCksbD1uLmdldEJvdHRvbUVuZENvcm5lcigpLHU9YS5yb3c/PzAsZz1hLmNvbD8/MCxFPWwucm93Pz8wLE89bC5jb2w/PzAsWj1uLmhpZ2hsaWdodC5jbG9uZSgpLm5vcm1hbGl6ZSgpLGVlPVoucm93Pz8wLHZlPVouY29sPz8wLE1lPUhsKHRoaXMsTGZlKS5jYWxsKHRoaXMs'@; put 'aSxvKTtpZihNZSYmci5oYXMoTWUpKXJldHVybiBudWxsO2NvbnN0IEhlPXtzZWxlY3Rpb25MYXllcjplLGNvbFN0YXJ0Om8sY29sRW5kOm8scm93U3RhcnQ6aSxyb3dFbmQ6aX07aWYoTWUpe2lmKHIuYWRkKE1lKSxNZS5yb3c8dXx8TWUucm93K01lLnJvd3NwYW4tMT5FfHxNZS5jb2w8Z3x8'@; put 'TWUuY29sK01lLmNvbHNwYW4tMT5PKXJldHVybiBudWxsO0hlLmNvbFN0YXJ0PU1lLmNvbCxIZS5jb2xFbmQ9TWUuY29sK01lLmNvbHNwYW4tMSxIZS5yb3dTdGFydD1NZS5yb3csSGUucm93RW5kPU1lLnJvdytNZS5yb3dzcGFuLTF9Y29uc3QgV2U9dC5wdXNoKEhlKTtyZXR1cm4gaT09PWVl'@; put 'JiZvPT09dmV8fE1lJiZlZT49TWUucm93JiZlZTw9TWUucm93K01lLnJvd3NwYW4tMSYmdmU+PU1lLmNvbCYmdmU8PU1lLmNvbCtNZS5jb2xzcGFuLTE/V2U6bnVsbH1mdW5jdGlvbiBGQmUobixlLHQpe2NvbnN0e3Jvd0luZGV4TWFwcGVyOnIsc3R5bGVzSGFuZGxlcjppfT1uO2xldCBvPTA7'@; put 'Zm9yKGxldCBhPWU7YTxlK3Q7YSsrKXIuaXNIaWRkZW4oYSl8fChvKz1uLmdldFJvd0hlaWdodChhKT8/aS5nZXREZWZhdWx0Um93SGVpZ2h0KGEpKTtyZXR1cm4gb31mdW5jdGlvbiBQQmUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0'@; put 'aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIEhCZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChu'@; put 'KX1mdW5jdGlvbiBYbyhuLGUpe3JldHVybiBmdW5jdGlvbiBGR3QobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLEhCZShuLGUsImdldCIpKX1mdW5jdGlvbiBSbChuLGUsdCl7UEJlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBxYShuLGUsdCl7cmV0dXJuIGZ1'@; put 'bmN0aW9uIFBHdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sSEJlKG4sZSwic2V0IiksdCksdH1Hby5n'@; put 'ZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlTWVyZ2VDZWxscyIpLEdvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlck1lcmdlQ2VsbHMiKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlVW5tZXJnZUNlbGxzIiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIo'@; put 'ImFmdGVyVW5tZXJnZUNlbGxzIik7Y29uc3QgTmZlPSJtZXJnZUNlbGxzIixWQmU9TmZlO3ZhciBvZj1uZXcgV2Vha01hcCxsZz1uZXcgV2Vha01hcCxCND1uZXcgV2Vha01hcCxGZmU9bmV3IFdlYWtNYXAsRDY9bmV3IFdlYWtNYXAsSXg9bmV3IFdlYWtNYXAsRl89bmV3IFdlYWtNYXAsUGZl'@; put 'PW5ldyBXZWFrTWFwLEhmZT1uZXcgV2Vha01hcCxWZmU9bmV3IFdlYWtNYXAsQmZlPW5ldyBXZWFrTWFwLGpmZT1uZXcgV2Vha01hcCxVZmU9bmV3IFdlYWtNYXAsQyQ9bmV3IFdlYWtNYXAsQkJlPW5ldyBXZWFrU2V0LFMkPW5ldyBXZWFrTWFwLHpmZT1uZXcgV2Vha01hcCxXZmU9bmV3IFdl'@; put 'YWtNYXAsWWZlPW5ldyBXZWFrTWFwLFpmZT1uZXcgV2Vha01hcCxHZmU9bmV3IFdlYWtNYXAsJGZlPW5ldyBXZWFrTWFwLHFmZT1uZXcgV2Vha01hcCxLZmU9bmV3IFdlYWtNYXAsWGZlPW5ldyBXZWFrTWFwLFFmZT1uZXcgV2Vha01hcCxKZmU9bmV3IFdlYWtNYXAsZTNlPW5ldyBXZWFrTWFw'@; put 'LHQzZT1uZXcgV2Vha01hcCxuM2U9bmV3IFdlYWtNYXAscjNlPW5ldyBXZWFrTWFwLEUkPW5ldyBXZWFrTWFwLE0kPW5ldyBXZWFrTWFwLGkzZT1uZXcgV2Vha01hcCxvM2U9bmV3IFdlYWtNYXAsYTNlPW5ldyBXZWFrTWFwLHMzZT1uZXcgV2Vha01hcCxsM2U9bmV3IFdlYWtNYXAsYzNlPW5l'@; put 'dyBXZWFrTWFwO2NsYXNzIGpHdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBOZmV9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTUwfXN0YXRpYyBnZXQgREVGQVVMVF9TRVRUSU5HUygpe3JldHVybntbcE9lXToiY2VsbHMiLHZpcnR1YWxp'@; put 'emVkOiExLGNlbGxzOltdfX1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbTmZlXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fCh0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbj1uZXcgU0d0KHRoaXMpLHRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnM9bmV3'@; put 'IE1HdCh0aGlzKSx0aGlzLnNlbGVjdGlvbkNhbGN1bGF0aW9ucz1uZXcgeEd0KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixYbyh0aGlzLFBmZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5VHJhbnNmb3JtRm9jdXMiLFhvKHRoaXMsVmZlKSksdGhpcy5hZGRIb29rKCJtb2RpZnlUcmFu'@; put 'c2Zvcm1TdGFydCIsWG8odGhpcyxCZmUpKSx0aGlzLmFkZEhvb2soIm1vZGlmeVRyYW5zZm9ybUVuZCIsWG8odGhpcyxqZmUpKSx0aGlzLmFkZEhvb2soImJlZm9yZVNlbGVjdGlvbkhpZ2hsaWdodFNldCIsWG8odGhpcyxVZmUpKSx0aGlzLmFkZEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnQi'@; put 'LFhvKHRoaXMsUyQpKSx0aGlzLmFkZEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IixYbyh0aGlzLFMkKSksdGhpcy5hZGRIb29rKCJiZWZvcmVTZWxlY3Rpb25Gb2N1c1NldCIsWG8odGhpcyx6ZmUpKSx0aGlzLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uRm9jdXNTZXQiLFhvKHRoaXMs'@; put 'V2ZlKSksdGhpcy5hZGRIb29rKCJhZnRlclNlbGVjdGlvbkVuZCIsWG8odGhpcyxZZmUpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUdldENlbGxDb29yZHMiLFhvKHRoaXMsQyQpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUdldENvb3Jkc0VsZW1lbnQiLFhvKHRoaXMsQyQpKSx0aGlzLmFkZEhvb2so'@; put 'ImFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbiIsWG8odGhpcyxIZmUpKSx0aGlzLmFkZEhvb2soImFmdGVyUmVuZGVyZXIiLChlLHQscik9PlhvKHRoaXMsRmZlKS5hZnRlcihlLHQscikpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixlPT5mdW5jdGlvbiBI'@; put 'R3QobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9KHRoaXMsQkJlLFVHdCkuY2FsbCh0aGlzLGUpKSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q2VsbE1ldGEiLFhv'@; put 'KHRoaXMsWmZlKSksdGhpcy5hZGRIb29rKCJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIixYbyh0aGlzLEdmZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsWG8odGhpcywkZmUpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUF1'@; put 'dG9maWxsUmFuZ2UiLFhvKHRoaXMscWZlKSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsWG8odGhpcyxLZmUpKSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixYbyh0aGlzLFhmZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLFhvKHRoaXMsUWZlKSksdGhpcy5h'@; put 'ZGRIb29rKCJhZnRlclJlbW92ZVJvdyIsWG8odGhpcyxKZmUpKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtbk1vdmUiLFhvKHRoaXMsZTNlKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtbk1vdmUiLFhvKHRoaXMsdDNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVSb3dNb3ZlIixYbyh0aGlz'@; put 'LG4zZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSb3dNb3ZlIixYbyh0aGlzLHIzZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uRnJlZXplIixYbyh0aGlzLEUkKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtbkZyZWV6ZSIsWG8odGhpcyxNJCkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29s'@; put 'dW1uVW5mcmVlemUiLFhvKHRoaXMsRSQpKSx0aGlzLmFkZEhvb2soImFmdGVyQ29sdW1uVW5mcmVlemUiLFhvKHRoaXMsTSQpKSx0aGlzLmFkZEhvb2soImFmdGVyQ2hhbmdlIixYbyh0aGlzLGkzZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlRHJhd0JvcmRlcnMiLFhvKHRoaXMsbzNlKSksdGhp'@; put 'cy5hZGRIb29rKCJhZnRlckRyYXdTZWxlY3Rpb24iLFhvKHRoaXMsYTNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsWG8odGhpcyxzM2UpKSx0aGlzLmFkZEhvb2soImJlZm9yZUJlZ2luRWRpdGluZyIsWG8odGhpcyxsM2UpKSx0aGlzLmFkZEhvb2soIm1v'@; put 'ZGlmeVJvd0hlaWdodEJ5T3ZlcmxheU5hbWUiLFhvKHRoaXMsYzNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLChlLHQpPT57aWYoIk1lcmdlQ2VsbHMiPT09dClyZXR1cm4hMX0pLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9'@; put 'ZGlzYWJsZVBsdWdpbigpe3RoaXMuY2xlYXJDb2xsZWN0aW9ucygpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuaG90LnJlbmRlcigpLHFhKHRoaXMsRl8sITEpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVu'@; put 'YWJsZVBsdWdpbigpLHRoaXMuZ2VuZXJhdGVGcm9tU2V0dGluZ3MoKSxxYSh0aGlzLEZfLCEwKSxzdXBlci51cGRhdGVQbHVnaW4oKX1pZkNocm9tZUZvcmNlUmVwYWludCgpe2lmKCFQeGUoKSlyZXR1cm47Y29uc3QgZT1bXTtsZXQgdD1bXTt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5t'@; put 'ZXJnZWRDZWxscy5mb3JFYWNoKHI9Pntjb25zdHtyb3c6aSxyb3dzcGFuOm99PXI7Zm9yKGxldCBhPWkrMTthPGkrbzthKyspdC5wdXNoKGEpfSksdD1bLi4ubmV3IFNldCh0KV0sdC5mb3JFYWNoKHI9Pntjb25zdCBpPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9t'@; put 'VmlzdWFsSW5kZXgocik7bnVsbCE9PWkmJnRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuZ2V0T3ZlcmxheXMoITApLm1hcChvPT4ibWFzdGVyIj09PW8ubmFtZT9vOm8uY2xvbmUud3RUYWJsZSkuZm9yRWFjaChvPT57Y29uc3QgYT1vLmdldFJvdyhpKTthJiYoYS5zdHlsZS5iYWNrZ3Jv'@; put 'dW5kPXV3KGEsImJhY2tncm91bmRDb2xvciIpPy5yZXBsYWNlKCIpIiwiLCAwLjk5KSIpPz8iIixlLnB1c2goYSkpfSl9KSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57ZS5mb3JFYWNoKHI9PntyLnN0eWxlLmJhY2tncm91bmQ9dXcociwiYmFja2dyb3VuZENvbG9yIik/LnJlcGxh'@; put 'Y2UoIiwgMC45OSkiLCIiKT8/IiJ9KX0sMSl9dmFsaWRhdGVTZXR0aW5nKGUpe3JldHVybiEoIWV8fChJNi5jb250YWluc05lZ2F0aXZlVmFsdWVzKGUpPyhIYShJNi5ORUdBVElWRV9WQUxVRVNfV0FSTklORyhlKSksMSk6STYuaXNPdXRPZkJvdW5kcyhlLHRoaXMuaG90LmNvdW50Um93cygp'@; put 'LHRoaXMuaG90LmNvdW50Q29scygpKT8oSGEoSTYuSVNfT1VUX09GX0JPVU5EU19XQVJOSU5HKGUpKSwxKTpJNi5pc1NpbmdsZUNlbGwoZSk/KEhhKEk2LklTX1NJTkdMRV9DRUxMKGUpKSwxKTpJNi5jb250YWluc1plcm9TcGFuKGUpJiYoSGEoSTYuWkVST19TUEFOX1dBUk5JTkcoZSkpLDEp'@; put 'KSl9Z2VuZXJhdGVGcm9tU2V0dGluZ3MoKXtjb25zdCBlPXRoaXMuZ2V0U2V0dGluZygiY2VsbHMiKS5maWx0ZXIoaT0+dGhpcy52YWxpZGF0ZVNldHRpbmcoaSkpLHQ9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZmlsdGVyT3ZlcmxhcHBpbmdNZXJnZUNlbGxzKGUpLHI9W107dC5mb3JF'@; put 'YWNoKGk9Pntjb25zdHtyb3c6byxjb2w6YSxyb3dzcGFuOmwsY29sc3Bhbjp1fT1pLGc9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMobyxhKSxFPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKG8rbC0xLGErdS0xKSxPPXRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UoZyxnLEUpO3RoaXMu'@; put 'bWVyZ2VSYW5nZShPLCEwLCEwKTtmb3IobGV0IFo9bztaPG8rbDtaKyspZm9yKGxldCBlZT1hO2VlPGErdTtlZSsrKShaIT09b3x8ZWUhPT1hKSYmci5wdXNoKFtaLGVlLG51bGxdKX0pLDAhPT1yLmxlbmd0aCYmdGhpcy5ob3Quc2V0RGF0YUF0Q2VsbChyLHZvaWQgMCx2b2lkIDAsdGhpcy5w'@; put 'bHVnaW5OYW1lPz92b2lkIDApfWNsZWFyQ29sbGVjdGlvbnMoKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5jbGVhcigpfWNhbk1lcmdlUmFuZ2UoZSx0PSExKXtyZXR1cm4hIXR8fHRoaXMudmFsaWRhdGVTZXR0aW5nKGUpfW1lcmdlU2VsZWN0aW9uKGU9dGhpcy5ob3QuZ2V0U2VsZWN0'@; put 'ZWRSYW5nZUFjdGl2ZSgpKXtpZighZSlyZXR1cm47ZS5zZXREaXJlY3Rpb24odGhpcy5ob3QuaXNSdGwoKT8iTkUtU1ciOiJOVy1TRSIpO2NvbnN0e2Zyb206dCx0bzpyfT1lO3RoaXMudW5tZXJnZVJhbmdlKGUsITApLHRoaXMubWVyZ2VSYW5nZShlKSxudWxsIT09dC5yb3cmJm51bGwhPT10'@; put 'LmNvbCYmbnVsbCE9PXIucm93JiZudWxsIT09ci5jb2wmJnRoaXMuaG90LnNlbGVjdENlbGwodC5yb3csdC5jb2wsci5yb3csci5jb2wsITEpfXVubWVyZ2VTZWxlY3Rpb24oZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCkpe2lmKCFlKXJldHVybjtjb25zdHtmcm9tOnQsdG86'@; put 'cn09ZTt0aGlzLnVubWVyZ2VSYW5nZShlLCEwKSxudWxsIT09dC5yb3cmJm51bGwhPT10LmNvbCYmbnVsbCE9PXIucm93JiZudWxsIT09ci5jb2wmJnRoaXMuaG90LnNlbGVjdENlbGwodC5yb3csdC5jb2wsci5yb3csci5jb2wsITEpfW1lcmdlUmFuZ2UoZSx0PSExLHI9ITEpe2NvbnN0IGk9'@; put 'ZS5nZXRUb3BTdGFydENvcm5lcigpLG89ZS5nZXRCb3R0b21FbmRDb3JuZXIoKTtpZihudWxsPT09aS5yb3d8fG51bGw9PT1pLmNvbHx8bnVsbD09PW8ucm93fHxudWxsPT09by5jb2wpcmV0dXJuITE7Y29uc3QgYT17cm93Omkucm93LGNvbDppLmNvbCxyb3dzcGFuOm8ucm93LWkucm93KzEs'@; put 'Y29sc3BhbjpvLmNvbC1pLmNvbCsxfSxsPVtdO2xldCB1PW51bGw7cmV0dXJuISF0aGlzLmNhbk1lcmdlUmFuZ2UoYSx0KSYmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVNZXJnZUNlbGxzIixlLHQpLFZhKDAsYS5yb3dzcGFuLTEsRT0+e1ZhKDAsYS5jb2xzcGFuLTEsTz0+e2xldCBaPW51'@; put 'bGw7bFtFXXx8KGxbRV09W10pLDA9PT1FJiYwPT09Tz9aPXRoaXMuaG90LmdldFNvdXJjZURhdGFBdENlbGwodGhpcy5ob3QudG9QaHlzaWNhbFJvdyhhLnJvdyksdGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihhLmNvbCkpOnRoaXMuaG90LnNldENlbGxNZXRhKGEucm93K0UsYS5jb2wrTywi'@; put 'aGlkZGVuIiwhMCksbFtFXVtPXT1afSl9KSx0aGlzLmhvdC5zZXRDZWxsTWV0YShhLnJvdyxhLmNvbCwic3Bhbm5lZCIsITApLCF0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoYSx0KXx8KHI/dT1bYS5yb3csYS5jb2wsbF06dGhpcy5ob3QucG9wdWxhdGVGcm9tQXJyYXkoYS5yb3cs'@; put 'YS5jb2wsbCx2b2lkIDAsdm9pZCAwLHRoaXMucGx1Z2luTmFtZT8/dm9pZCAwKSx0fHx0aGlzLmlmQ2hyb21lRm9yY2VSZXBhaW50KCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyTWVyZ2VDZWxscyIsZSxhLHQpLHUpKX11bm1lcmdlUmFuZ2UoZSx0PSExKXtjb25zdCByPXRoaXMubWVyZ2Vk'@; put 'Q2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKGUpOzAhPT1yLmxlbmd0aCYmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVVbm1lcmdlQ2VsbHMiLGUsdCksWG4ocixpPT57dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24ucmVtb3ZlKGkucm93LGkuY29sKSxWYSgwLGkucm93c3Bhbi0x'@; put 'LG89PntWYSgwLGkuY29sc3Bhbi0xLGE9Pnt0aGlzLmhvdC5yZW1vdmVDZWxsTWV0YShpLnJvdytvLGkuY29sK2EsImhpZGRlbiIpLHRoaXMuaG90LnJlbW92ZUNlbGxNZXRhKGkucm93K28saS5jb2wrYSwiY29weWFibGUiKX0pfSksdGhpcy5ob3QucmVtb3ZlQ2VsbE1ldGEoaS5yb3csaS5j'@; put 'b2wsInNwYW5uZWQiKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVubWVyZ2VDZWxscyIsZSx0KSx0aGlzLmhvdC5yZW5kZXIoKSl9dG9nZ2xlTWVyZ2UoZSl7Y29uc3R7ZnJvbTp0LHRvOnJ9PWUuY2xvbmUoKS5ub3JtYWxpemUoKTtpZihudWxsPT09dC5yb3d8fG51bGw9PT10LmNvbHx8'@; put 'bnVsbD09PXIucm93fHxudWxsPT09ci5jb2wpcmV0dXJuO2NvbnN0IGk9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KHQucm93LHQuY29sKTshMSE9PWkmJmkucm93PT09dC5yb3cmJmkuY29sPT09dC5jb2wmJmkucm93K2kucm93c3Bhbi0xPT09ci5yb3cmJmkuY29sK2kuY29sc3Bh'@; put 'bi0xPT09ci5jb2w/dGhpcy51bm1lcmdlUmFuZ2UoZSk6dGhpcy5tZXJnZVNlbGVjdGlvbihlKX1tZXJnZShlLHQscixpKXtjb25zdCBvPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGUsdCksYT10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhyLGkpO3RoaXMubWVyZ2VSYW5nZSh0aGlz'@; put 'LmhvdC5fY3JlYXRlQ2VsbFJhbmdlKG8sbyxhKSl9dW5tZXJnZShlLHQscixpKXtjb25zdCBvPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGUsdCksYT10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhyLGkpO3RoaXMudW5tZXJnZVJhbmdlKHRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2Uo'@; put 'byxvLGEpKX1yZWdpc3RlclNob3J0Y3V0cygpe2NvbnN0IHQ9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpO3QmJnQuYWRkU2hvcnRjdXQoe2tleXM6W1siQ29udHJvbCIsIm0iXV0sY2FsbGJhY2s6KCk9Pntjb25zdCByPXRoaXMuaG90LmdldFNlbGVj'@; put 'dGVkUmFuZ2VBY3RpdmUoKTtyJiYhci5pc1NpbmdsZUhlYWRlcigpJiYodGhpcy50b2dnbGVNZXJnZShyKSx0aGlzLmhvdC5yZW5kZXIoKSl9LHJ1bk9ubHlJZjpyPT4hcj8uYWx0S2V5LGdyb3VwOlZCZX0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFn'@; put 'ZXIoKS5nZXRDb250ZXh0KCJncmlkIik/LnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoVkJlKX1tb2RpZnlWaWV3cG9ydFJvd1N0YXJ0KGUsdCl7Y29uc3Qgcj10aGlzLmhvdC5yb3dJbmRleE1hcHBlcixpPXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChlLnN0YXJ0Um93KT8/MDtmb3Io'@; put 'bGV0IG89MDtvPHQ7bys9MSl7Y29uc3QgYT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoaSxvKTtpZighMSE9PWEpe2NvbnN0IGw9ci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYS5yb3csMSksdT1udWxsIT09bD9yLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobCk6bnVs'@; put 'bDtpZihudWxsIT09dSYmdTxlLnN0YXJ0Um93KXJldHVybiBlLnN0YXJ0Um93PXUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93U3RhcnQoZSx0KX19fW1vZGlmeVZpZXdwb3J0Um93RW5kKGUsdCl7Y29uc3Qgcj10aGlzLmhvdC5yb3dJbmRleE1hcHBlcixpPXIuZ2V0VmlzdWFsRnJvbVJl'@; put 'bmRlcmFibGVJbmRleChlLmVuZFJvdyk/PzA7Zm9yKGxldCBvPTA7bzx0O28rPTEpe2NvbnN0IGE9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGksbyk7aWYoITEhPT1hKXtjb25zdCB1PXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEucm93K2Eucm93c3Bhbi0xLC0xKTtpZihu'@; put 'dWxsIT09dSl7Y29uc3QgZz1yLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodSk7aWYobnVsbCE9PWcmJmc+ZS5lbmRSb3cpcmV0dXJuIGUuZW5kUm93PWcsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93RW5kKGUsdCl9fX19bW9kaWZ5Vmlld3BvcnRDb2x1bW5TdGFydChlLHQpe2Nv'@; put 'bnN0IHI9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsaT1yLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZS5zdGFydENvbHVtbik/PzA7Zm9yKGxldCBvPTA7bzx0O28rPTEpe2NvbnN0IGE9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KG8saSk7aWYoITEhPT1hKXtjb25z'@; put 'dCBsPXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEuY29sLDEpO2lmKG51bGwhPT1sKXtjb25zdCB1PXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChsKTtpZihudWxsIT09dSYmdTxlLnN0YXJ0Q29sdW1uKXJldHVybiBlLnN0YXJ0Q29sdW1uPXUsdm9pZCB0aGlzLm1vZGlmeVZp'@; put 'ZXdwb3J0Q29sdW1uU3RhcnQoZSx0KX19fX1tb2RpZnlWaWV3cG9ydENvbHVtbkVuZChlLHQpe2NvbnN0IHI9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsaT1yLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZS5lbmRDb2x1bW4pPz8wO2ZvcihsZXQgbz0wO288dDtvKz0xKXtjb25z'@; put 'dCBhPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChvLGkpO2lmKCExIT09YSl7Y29uc3QgdT1yLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChhLmNvbCthLmNvbHNwYW4tMSwtMSk7aWYobnVsbCE9PXUpe2NvbnN0IGc9ci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHUpO2lm'@; put 'KG51bGwhPT1nJiZnPmUuZW5kQ29sdW1uKXJldHVybiBlLmVuZENvbHVtbj1nLHZvaWQgdGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtbkVuZChlLHQpfX19fXRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUoZSx0LHIsaSl7Y29uc3R7cm93SW5kZXhNYXBwZXI6byxjb2x1bW5JbmRleE1h'@; put 'cHBlcjphfT10aGlzLmhvdDtsZXQgbCx1O3JldHVybiBsPTA9PT10P28uZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGUsMSk6by5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZSt0LTEsLTEpLHU9MD09PWk/YS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgociwxKTphLmdldE5lYXJlc3ROb3RI'@; put 'aWRkZW5JbmRleChyK2ktMSwtMSksW2U+PTAmJm51bGwhPT1sP28uZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChsKT8/ZTplLHI+PTAmJm51bGwhPT11P2EuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh1KT8/cjpyXX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxmdW5j'@; put 'dGlvbiBWR3QobixlKXtQQmUobixlKSxlLmFkZChuKX0odGhpcyxCQmUpLFJsKHRoaXMsb2Yse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsbGcse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsQjQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRo'@; put 'aXMsRmZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLEQ2LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLEl4LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLEZfLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLFBmZSx7'@; put 'd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxIZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsVmZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLEJmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxqZmUse3dyaXRh'@; put 'YmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsVWZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLEMkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLFMkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLHpmZSx7d3JpdGFibGU6ITAs'@; put 'dmFsdWU6dm9pZCAwfSksUmwodGhpcyxXZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsWWZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLFpmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxHZmUse3dyaXRhYmxlOiEwLHZhbHVl'@; put 'OnZvaWQgMH0pLFJsKHRoaXMsJGZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLHFmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxLZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsWGZlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lk'@; put 'IDB9KSxSbCh0aGlzLFFmZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxKZmUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsZTNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLHQzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSks'@; put 'UmwodGhpcyxuM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMscjNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLEUkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLE0kLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlz'@; put 'LGkzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxvM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsYTNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxSbCh0aGlzLHMzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUmwodGhpcyxsM2Us'@; put 'e3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFJsKHRoaXMsYzNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxxYSh0aGlzLG9mLG51bGwpLHFhKHRoaXMsbGcse3JvdzowLGNvbDowfSkscWEodGhpcyxCNCxuZXcgTEd0KHttZXJnZWRDZWxsc0dldHRlcjoodCxyKT0+dGhpcy5tZXJn'@; put 'ZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KHQscikscm93SW5kZXhNYXBwZXI6dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsY29sdW1uSW5kZXhNYXBwZXI6dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXJ9KSkscWEodGhpcyxGZmUsZnVuY3Rpb24gTkd0KG4pe2NvbnN0IGU9bi5ob3Qse3Jvd0luZGV4'@; put 'TWFwcGVyOnQsY29sdW1uSW5kZXhNYXBwZXI6cn09ZSxpPW5ldyBNYXA7cmV0dXJue2JlZm9yZTpmdW5jdGlvbiBvKCl7fSxhZnRlcjpmdW5jdGlvbiBhKGwsdSxnKXtjb25zdCBFPW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh1LGcpO2lmKCExPT09RSlyZXR1cm4gbC5yZW1vdmVBdHRy'@; put 'aWJ1dGUoInJvd3NwYW4iKSxsLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLGkuaGFzKHUpJiYhZS5nZXRTZXR0aW5ncygpLnJvd0hlYWRlcnMmJihsLnN0eWxlLmhlaWdodD1gJHtpLmdldCh1KX1weGAsaS5kZWxldGUodSkpLHZvaWQobC5zdHlsZS5kaXNwbGF5PSIiKTtjb25zdHtyb3c6'@; put 'Tyxjb2w6Wixjb2xzcGFuOmVlLHJvd3NwYW46dmV9PUUsW01lLEhlXT1uLnRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUoTyx2ZSxaLGVlKSxXZT1uLmdldFNldHRpbmcoInZpcnR1YWxpemVkIik7aWYoMD09PVomJiFlLmdldFNldHRpbmdzKCkucm93SGVhZGVycyl7Y29uc3QgcXI9'@; put 'ZS5fZ2V0Um93SGVpZ2h0RnJvbVNldHRpbmdzKHUpO2lmKHZvaWQgMCE9PXFyKXtjb25zdCBUcj1lLnN0eWxlc0hhbmRsZXIuYXJlQ2VsbHNCb3JkZXJCb3goKT8wOjE7aS5zZXQodSxxci1Ucil9ZWxzZSBpZihoTCgpKXtjb25zdCAkbj1GQmUoZSxPLHZlKTtpLnNldCh1LCRuL3ZlKX19Y29u'@; put 'c3QgQXQ9TWUtKHQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh1KT8/MCkrMSxLdD1IZS0oci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGcpPz8wKSsxO2xldCBxdD10LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChPLDEpLGduPXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4'@; put 'KFosMSk7V2UmJihbcXQsZ25dPWZ1bmN0aW9uIE9HdChuLGUsdCl7Y29uc3Qgcj1uLnZpZXcuZ2V0QWN0aXZlT3ZlcmxheU5hbWUoKTtpZighWyJ0b3AiLCJ0b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciJdLmluY2x1ZGVzKHIpKXtjb25zdCBpPW4uZ2V0Rmlyc3RSZW5kZXJlZFZpc2libGVSb3co'@; put 'KTtudWxsIT09ZSYmbnVsbCE9PWkmJihlPU1hdGgubWF4KGUsaSkpfWlmKCFbImlubGluZV9zdGFydCIsInRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIiwiYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhyKSl7Y29uc3QgaT1uLmdldEZpcnN0UmVuZGVyZWRWaXNpYmxlQ29s'@; put 'dW1uKCk7bnVsbCE9PXQmJm51bGwhPT1pJiYodD1NYXRoLm1heCh0LGkpKX1yZXR1cm5bZSx0XX0oZSxxdCxnbikpO2NvbnN0IFRuPU1hdGgubWluKHZlLEF0KSxDbj1NYXRoLm1pbihlZSxLdCk7cXQ9PT11JiZnbj09PWc/KGwuc2V0QXR0cmlidXRlKCJyb3dzcGFuIixTdHJpbmcoVG4pKSxs'@; put 'LnNldEF0dHJpYnV0ZSgiY29sc3BhbiIsU3RyaW5nKENuKSkpOihsLnJlbW92ZUF0dHJpYnV0ZSgicm93c3BhbiIpLGwucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksbC5zdHlsZS5kaXNwbGF5PSJub25lIil9fX0odGhpcykpLHFhKHRoaXMsRDYsbnVsbCkscWEodGhpcyxJeCxudWxsKSxx'@; put 'YSh0aGlzLEZfLCExKSxxYSh0aGlzLFBmZSwoKT0+e3RoaXMuZ2VuZXJhdGVGcm9tU2V0dGluZ3MoKSx0aGlzLmhvdC5yZW5kZXIoKSxxYSh0aGlzLEZfLCEwKX0pLHFhKHRoaXMsSGZlLHQ9PntpZih0KXtjb25zdCByPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzLGk9'@; put 'dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFpKXJldHVybiB0O2NvbnN0IG89aS5nZXRUb3BTdGFydENvcm5lcigpLGE9aS5nZXRCb3R0b21FbmRDb3JuZXIoKTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrPTEpaWYoby5yb3c9PT1yW2xdLnJvdyYmby5jb2w9PT1yW2xd'@; put 'LmNvbCYmYS5yb3c9PT1yW2xdLnJvdytyW2xdLnJvd3NwYW4tMSYmYS5jb2w9PT1yW2xdLmNvbCtyW2xdLmNvbHNwYW4tMSlyZXR1cm4hMX1yZXR1cm4gdH0pLHFhKHRoaXMsVmZlLHQ9PntYbyh0aGlzLGxnKS5yb3c9dC5yb3csWG8odGhpcyxsZykuY29sPXQuY29sfSkscWEodGhpcyxCZmUs'@; put 'dD0+e2NvbnN0IHI9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKCFyKXJldHVybjtjb25zdHtoaWdobGlnaHQ6aX09cix7Y29sdW1uSW5kZXhNYXBwZXI6byxyb3dJbmRleE1hcHBlcjphfT10aGlzLmhvdDtpZihYbyh0aGlzLG9mKSYmKG51bGwhPT1Ybyh0aGlzLG9mKS5y'@; put 'b3cmJm51bGwhPT1hLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoWG8odGhpcyxvZikucm93KSYmKGkucm93PVhvKHRoaXMsb2YpLnJvdyksbnVsbCE9PVhvKHRoaXMsb2YpLmNvbCYmbnVsbCE9PW8uZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChYbyh0aGlzLG9mKS5jb2wpJiYo'@; put 'aS5jb2w9WG8odGhpcyxvZikuY29sKSxxYSh0aGlzLG9mLG51bGwpKSxudWxsPT09aS5yb3d8fG51bGw9PT1pLmNvbClyZXR1cm47Y29uc3QgbD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoaS5yb3csaS5jb2wpO2lmKCFsKXJldHVybjtjb25zdCB1PWwuY29sLGc9bC5jb2wrbC5j'@; put 'b2xzcGFuLTE7aWYodC5jb2w8MCl7Y29uc3QgZWU9by5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoaS5jb2w+PXUmJmkuY29sPD1nP3UtMTpnLC0xKTt0LmNvbD1udWxsPT09ZWU/LXRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoMCxpLmNvbCk6LU1hdGgubWF4'@; put 'KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoZWUsaS5jb2wpLTEsMSl9ZWxzZSBpZih0LmNvbD4wKXtjb25zdCBlZT1vLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChpLmNvbD49dSYmaS5jb2w8PWc/ZysxOnUsMSk7dC5jb2w9bnVsbD09PWVlP3RoaXMuaG90'@; put 'LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoaS5jb2wsdGhpcy5ob3QuY291bnRDb2xzKCkpOk1hdGgubWF4KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoaS5jb2wsZWUpLTEsMSl9Y29uc3QgRT1sLnJvdyxPPWwucm93K2wucm93c3Bhbi0x'@; put 'O2lmKHQucm93PDApe2NvbnN0IGVlPWEuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGkucm93Pj1FJiZpLnJvdzw9Tz9FLTE6TywtMSk7dC5yb3c9bnVsbD09PWVlPy10aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKDAsaS5yb3cpOi1NYXRoLm1heCh0aGlzLmhvdC52'@; put 'aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKGVlLGkucm93KS0xLDEpfWVsc2UgaWYodC5yb3c+MCl7Y29uc3QgZWU9YS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoaS5yb3c+PUUmJmkucm93PD1PP08rMTpFLDEpO3Qucm93PW51bGw9PT1lZT90aGlzLmhvdC52aWV3LmNvdW50UmVu'@; put 'ZGVyYWJsZVJvd3NJblJhbmdlKGkucm93LHRoaXMuaG90LmNvdW50Um93cygpKTpNYXRoLm1heCh0aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKGkucm93LGVlKS0xLDEpfX0pLHFhKHRoaXMsamZlLHQ9Pntjb25zdCByPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VB'@; put 'Y3RpdmUoKTtpZighcilyZXR1cm47Y29uc3QgaT1yLmNsb25lKCkse3RvOm99PXIsYT1vLnJvdz8/MCxsPW8uY29sPz8wLHtjb2x1bW5JbmRleE1hcHBlcjp1LHJvd0luZGV4TWFwcGVyOmd9PXRoaXMuaG90LEU9KE8sWik9PntpLmV4cGFuZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhP'@; put 'LFopKTtmb3IobGV0IGVlPTA7ZWU8dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24ubWVyZ2VkQ2VsbHMubGVuZ3RoO2VlKz0xKXtjb25zdCB2ZT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxsc1tlZV0uZ2V0UmFuZ2UoKTt2ZSYmaS5leHBhbmRCeVJhbmdlKHZlKX19O2lm'@; put 'KHQuY29sPDApe2xldCBPPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFN0YXJ0TW9zdENvbHVtbkluZGV4KHIsbCkrdC5jb2w7RShhLE8pLCJFLVciPT09ci5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCkmJiJFLVciPT09aS5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCkmJihPPWkuZ2V0'@; put 'VG9wU3RhcnRDb3JuZXIoKS5jb2w/P08pO2NvbnN0IFo9dS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoTywxKTtudWxsIT09WiYmKHQuY29sPS1NYXRoLm1heCh0aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZUNvbHVtbnNJblJhbmdlKFosbCktMSwxKSl9ZWxzZSBpZih0LmNvbD4wKXts'@; put 'ZXQgTz10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRFbmRNb3N0Q29sdW1uSW5kZXgocixsKSt0LmNvbDtFKGEsTyksIlctRSI9PT1yLmdldEhvcml6b250YWxEaXJlY3Rpb24oKSYmIlctRSI9PT1pLmdldEhvcml6b250YWxEaXJlY3Rpb24oKSYmKE89aS5nZXRCb3R0b21FbmRDb3Ju'@; put 'ZXIoKS5jb2w/P08pO2NvbnN0IFo9dS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoTywtMSk7bnVsbCE9PVomJih0LmNvbD1NYXRoLm1heCh0aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZUNvbHVtbnNJblJhbmdlKGwsWiktMSwxKSl9aWYodC5yb3c8MCl7bGV0IE89dGhpcy5tZXJnZWRD'@; put 'ZWxsc0NvbGxlY3Rpb24uZ2V0VG9wTW9zdFJvd0luZGV4KHIsYSkrdC5yb3c7RShPLGwpLCJTLU4iPT09ci5nZXRWZXJ0aWNhbERpcmVjdGlvbigpJiYiUy1OIj09PWkuZ2V0VmVydGljYWxEaXJlY3Rpb24oKSYmKE89aS5nZXRUb3BTdGFydENvcm5lcigpLnJvdz8/Tyk7Y29uc3QgWj1nLmdl'@; put 'dE5lYXJlc3ROb3RIaWRkZW5JbmRleChPLDEpO251bGwhPT1aJiYodC5yb3c9LU1hdGgubWF4KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlUm93c0luUmFuZ2UoWixhKS0xLDEpKX1lbHNlIGlmKHQucm93PjApe2xldCBPPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldEJvdHRv'@; put 'bU1vc3RSb3dJbmRleChyLGEpK3Qucm93O0UoTyxsKSwiTi1TIj09PXIuZ2V0VmVydGljYWxEaXJlY3Rpb24oKSYmIk4tUyI9PT1pLmdldFZlcnRpY2FsRGlyZWN0aW9uKCkmJihPPWkuZ2V0Qm90dG9tU3RhcnRDb3JuZXIoKS5yb3c/P08pO2NvbnN0IFo9Zy5nZXROZWFyZXN0Tm90SGlkZGVu'@; put 'SW5kZXgoTywtMSk7bnVsbCE9PVomJih0LnJvdz1NYXRoLm1heCh0aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKGEsWiktMSwxKSl9fSkscWEodGhpcyxVZmUsKCk9Pntjb25zdCB0PXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIXQpcmV0dXJuO2Nv'@; put 'bnN0e2hpZ2hsaWdodDpyfT10O2lmKHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpKXJldHVybiB2b2lkIHFhKHRoaXMsb2Ysci5jbG9uZSgpKTtmb3IobGV0IG89MDtvPHRoaXMu'@; put 'bWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzLmxlbmd0aDtvKz0xKXtjb25zdCBhPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzW29dLmdldFJhbmdlKCk7YSYmdC5leHBhbmRCeVJhbmdlKGEsITEpfWZvcihsZXQgbz0wO288dGhpcy5tZXJnZWRDZWxsc0Nv'@; put 'bGxlY3Rpb24ubWVyZ2VkQ2VsbHMubGVuZ3RoO28rPTEpe2NvbnN0IGE9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24ubWVyZ2VkQ2VsbHNbb10uZ2V0UmFuZ2UoKTthJiZ0LmV4cGFuZEJ5UmFuZ2UoYSwhMSl9aWYobnVsbD09PXIucm93fHxudWxsPT09ci5jb2wpcmV0dXJuO2NvbnN0IGk9'@; put 'dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KHIucm93LHIuY29sKTtxYSh0aGlzLG9mLHIuY2xvbmUoKSksaSYmci5hc3NpZ24oaSl9KSxxYSh0aGlzLEMkLCh0LHIsaSxvKT0+e2lmKHQ8MHx8cjwwKXJldHVybjtjb25zdCBhPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh0'@; put 'LHIpO2lmKCFhKXJldHVybjtjb25zdHtyb3c6bCxjb2w6dSxjb2xzcGFuOmcscm93c3BhbjpFfT1hLE89bCxaPXUsZWU9bCtFLTEsdmU9dStnLTE7aWYoInJlbmRlciI9PT1vJiZ0aGlzLmdldFNldHRpbmcoInZpcnR1YWxpemVkIikpe2NvbnN0IE1lPXRoaXMuaG90LnZpZXcuZ2V0QWN0aXZl'@; put 'T3ZlcmxheU5hbWUoKSxIZT1bInRvcCIsInRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIl0uaW5jbHVkZXMoTWUpPzA6dGhpcy5ob3QuZ2V0Rmlyc3RSZW5kZXJlZFZpc2libGVSb3coKSxXZT1bImlubGluZV9zdGFydCIsInRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIiwiYm90dG9tX2lubGluZV9z'@; put 'dGFydF9jb3JuZXIiXS5pbmNsdWRlcyhNZSk/MDp0aGlzLmhvdC5nZXRGaXJzdFJlbmRlcmVkVmlzaWJsZUNvbHVtbigpO3JldHVybltWcyhIZSxPLGVlKSxWcyhXZSxaLHZlKSxWcyh0aGlzLmhvdC5nZXRMYXN0UmVuZGVyZWRWaXNpYmxlUm93KCksTyxlZSksVnModGhpcy5ob3QuZ2V0TGFz'@; put 'dFJlbmRlcmVkVmlzaWJsZUNvbHVtbigpLFosdmUpXX1yZXR1cm5bTyxaLGVlLHZlXX0pLHFhKHRoaXMsUyQsKCk9PntxYSh0aGlzLG9mLG51bGwpfSkscWEodGhpcyx6ZmUsKCk9PntpZighWG8odGhpcyxvZil8fFhvKHRoaXMsb2YpLmlzQ2VsbCgpKXJldHVybjtjb25zdCB0PXRoaXMuaG90'@; put 'LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighdClyZXR1cm47Y29uc3Qgcj10LmdldFZlcnRpY2FsRGlyZWN0aW9uKCksaT10LmdldEhvcml6b250YWxEaXJlY3Rpb24oKSxvPVhvKHRoaXMsb2YpLmNsb25lKCkubm9ybWFsaXplKCk7bnVsbD09PW8ucm93fHxudWxsPT09by5jb2x8fChY'@; put 'byh0aGlzLEI0KS5zZXRBY3RpdmVOb2RlKG8ucm93LG8uY29sKSxYbyh0aGlzLGxnKS5yb3c+MHx8WG8odGhpcyxsZykuY29sPjA/WG8odGhpcyxCNCkuc2V0UHJldk5vZGVBc0FjdGl2ZSgpOigiRS1XIj09PWkmJlhvKHRoaXMsbGcpLmNvbDwwfHwiUy1OIj09PXImJlhvKHRoaXMsbGcpLnJv'@; put 'dzwwKSYmWG8odGhpcyxCNCkuc2V0TmV4dE5vZGVBc0FjdGl2ZSgpKX0pLHFhKHRoaXMsV2ZlLCh0LHIpPT57Y29uc3R7Y29sdW1uSW5kZXhNYXBwZXI6aSxyb3dJbmRleE1hcHBlcjpvfT10aGlzLmhvdDtsZXQgYT10aGlzLmhvdC5nZXRBY3RpdmVTZWxlY3Rpb25MYXllckluZGV4KCksbD1u'@; put 'dWxsLHU9bnVsbDtpZihYbyh0aGlzLGxnKS5jb2w8MCl7Y29uc3R7cm93RW5kOmcsY29sRW5kOkUsc2VsZWN0aW9uTGF5ZXI6T309WG8odGhpcyxCNCkuZ2V0UHJldkhvcml6b250YWxOb2RlKCk7dT1pLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChFLC0xKSxsPW8uZ2V0TmVhcmVzdE5vdEhp'@; put 'ZGRlbkluZGV4KGcsLTEpLGE9T31lbHNlIGlmKFhvKHRoaXMsbGcpLmNvbD4wKXtjb25zdHtyb3dTdGFydDpnLGNvbFN0YXJ0OkUsc2VsZWN0aW9uTGF5ZXI6T309WG8odGhpcyxCNCkuZ2V0TmV4dEhvcml6b250YWxOb2RlKCk7dT1pLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChFLDEpLGw9'@; put 'by5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZywxKSxhPU99ZWxzZSBpZihYbyh0aGlzLGxnKS5yb3c8MCl7Y29uc3R7cm93RW5kOmcsY29sRW5kOkUsc2VsZWN0aW9uTGF5ZXI6T309WG8odGhpcyxCNCkuZ2V0UHJldlZlcnRpY2FsTm9kZSgpO3U9aS5nZXROZWFyZXN0Tm90SGlkZGVuSW5k'@; put 'ZXgoRSwtMSksbD1vLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChnLC0xKSxhPU99ZWxzZSBpZihYbyh0aGlzLGxnKS5yb3c+MCl7Y29uc3R7cm93U3RhcnQ6Zyxjb2xTdGFydDpFLHNlbGVjdGlvbkxheWVyOk99PVhvKHRoaXMsQjQpLmdldE5leHRWZXJ0aWNhbE5vZGUoKTt1PWkuZ2V0TmVh'@; put 'cmVzdE5vdEhpZGRlbkluZGV4KEUsMSksbD1vLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChnLDEpLGE9T31pZihudWxsIT09bHx8bnVsbCE9PXUpe3RoaXMuaG90LnNlbGVjdGlvbi5zZXRBY3RpdmVTZWxlY3Rpb25MYXllckluZGV4KGEpO2NvbnN0IGc9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRS'@; put 'YW5nZUFjdGl2ZSgpLEU9bD8/MCxPPXU/PzAsWj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhFLE8pLGVlPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChFLE8pLHZlPXRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0Rm9jdXMoKTt0PUUscj1PLGcmJmcuaGlnaGxpZ2h0'@; put 'LmFzc2lnbihlZT97cm93OnRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChlZS5yb3csMSk/P3ZvaWQgMCxjb2w6dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGVlLmNvbCwxKT8/dm9pZCAwfTpaKSx2ZS5j'@; put 'bGVhcigpLHZlLmFkZChaKS5jb21taXQoKX1Ybyh0aGlzLEI0KS5zZXRBY3RpdmVOb2RlKHQscixhKSxxYSh0aGlzLGxnLHtyb3c6MCxjb2w6MH0pfSkscWEodGhpcyxZZmUsKCk9Pntjb25zdCB0PXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2UoKTt0JiZYbyh0aGlzLEI0KS5idWlsZEZvY3Vz'@; put 'T3JkZXIodCl9KSxxYSh0aGlzLFpmZSwodCxyLGkpPT57Y29uc3Qgbz10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQodCxyKTtvJiYoby5yb3chPT10fHxvLmNvbCE9PXI/KGkuY29weWFibGU9ITEsaS5oaWRkZW49ITApOihpLnJvd3NwYW49by5yb3dzcGFuLGkuY29sc3Bhbj1vLmNv'@; put 'bHNwYW4saS5zcGFubmVkPSEwKSl9KSxxYSh0aGlzLEdmZSx0PT57aWYodGhpcy5nZXRTZXR0aW5nKCJ2aXJ0dWFsaXplZCIpKXJldHVybjtjb25zdCByPXRoaXMuaG90LmNvdW50Q29scygpO3RoaXMubW9kaWZ5Vmlld3BvcnRSb3dTdGFydCh0LHIpLHRoaXMubW9kaWZ5Vmlld3BvcnRSb3dF'@; put 'bmQodCxyKX0pLHFhKHRoaXMsJGZlLHQ9PntpZih0aGlzLmdldFNldHRpbmcoInZpcnR1YWxpemVkIikpcmV0dXJuO2NvbnN0IHI9dGhpcy5ob3QuY291bnRSb3dzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtblN0YXJ0KHQsciksdGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtbkVuZCh0LHIp'@; put 'fSkscWEodGhpcyxxZmUsKHQscik9Pntjb25zdCBpPXRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMuZ2V0RGlyZWN0aW9uKHIsdCk7aWYodGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5kcmFnQXJlYU92ZXJsYXBzQ29sbGVjdGlvbnMocix0LGkpKXJldHVybiByO2NvbnN0IG89dGhpcy5ob3Qu'@; put 'X2NyZWF0ZUNlbGxDb29yZHMoclswXSxyWzFdKSxhPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHJbMl0sclszXSksbD10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKG8sbyxhKSx1PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKGwpO3JldHVybiAwPT09dS5s'@; put 'ZW5ndGg/dDp0aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLnNuYXBEcmFnQXJlYShyLHQsaSx1KX0pLHFhKHRoaXMsS2ZlLCh0LHIpPT57dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9ucygicmlnaHQiLHQscil9KSxxYSh0aGlzLFhmZSwodCxyKT0+e3RoaXMubWVy'@; put 'Z2VkQ2VsbHNDb2xsZWN0aW9uLnNoaWZ0Q29sbGVjdGlvbnMoImxlZnQiLHQscil9KSxxYSh0aGlzLFFmZSwodCxyLGkpPT57ImF1dG8iIT09aSYmdGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9ucygiZG93biIsdCxyKX0pLHFhKHRoaXMsSmZlLCh0LHIpPT57dGhp'@; put 'cy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9ucygidXAiLHQscil9KSxxYSh0aGlzLGUzZSwodCxyLGksbyk9PntvJiZYbyh0aGlzLEZfKT9xYSh0aGlzLEQ2LHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmNhcHR1cmVQaHlzaWNhbFNwYW5zKCJjb2x1bW4iKSk6cWEo'@; put 'dGhpcyxENixudWxsKX0pLHFhKHRoaXMsdDNlLCh0LHIsaSxvLGEpPT57Y29uc3QgbD1Ybyh0aGlzLEQ2KTtxYSh0aGlzLEQ2LG51bGwpLGEmJmwmJih0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi50cmFuc2xhdGVBZnRlckF4aXNNb3ZlKCJjb2x1bW4iLGwpLHRoaXMuaG90LnJlbmRlcigp'@; put 'KX0pLHFhKHRoaXMsbjNlLCh0LHIsaSxvKT0+e28mJlhvKHRoaXMsRl8pP3FhKHRoaXMsSXgsdGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uY2FwdHVyZVBoeXNpY2FsU3BhbnMoInJvdyIpKTpxYSh0aGlzLEl4LG51bGwpfSkscWEodGhpcyxyM2UsKHQscixpLG8sYSk9Pntjb25zdCBsPVhv'@; put 'KHRoaXMsSXgpO3FhKHRoaXMsSXgsbnVsbCksYSYmbCYmKHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLnRyYW5zbGF0ZUFmdGVyQXhpc01vdmUoInJvdyIsbCksdGhpcy5ob3QucmVuZGVyKCkpfSkscWEodGhpcyxFJCwodCxyKT0+e3ImJlhvKHRoaXMsRl8pP3FhKHRoaXMsRDYsdGhpcy5t'@; put 'ZXJnZWRDZWxsc0NvbGxlY3Rpb24uY2FwdHVyZVBoeXNpY2FsU3BhbnMoImNvbHVtbiIpKTpxYSh0aGlzLEQ2LG51bGwpfSkscWEodGhpcyxNJCwodCxyKT0+e2NvbnN0IGk9WG8odGhpcyxENik7cWEodGhpcyxENixudWxsKSxyJiZpJiYodGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24udHJh'@; put 'bnNsYXRlQWZ0ZXJBeGlzTW92ZSgiY29sdW1uIixpKSx0aGlzLmhvdC5yZW5kZXIoKSl9KSxxYSh0aGlzLGkzZSwodCxyKT0+eyJBdXRvZmlsbC5maWxsIj09PXImJnRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMucmVjcmVhdGVBZnRlckRhdGFQb3B1bGF0aW9uKHQpfSkscWEodGhpcyxvM2Us'@; put 'KHQscik9PntpZihyJiYiYXJlYSI9PT1yKXtjb25zdCBpPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighaSlyZXR1cm47WG4odGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0V2l0aGluUmFuZ2UoaSksYT0+e2kuZ2V0Qm90dG9tRW5kQ29ybmVyKCkucm93PT09YS5n'@; put 'ZXRMYXN0Um93KCkmJmkuZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sPT09YS5nZXRMYXN0Q29sdW1uKCkmJih0WzJdPWEucm93LHRbM109YS5jb2wpfSl9fSkscWEodGhpcyxhM2UsKHQscixpLG8pPT57aWYoaSlyZXR1cm4gdGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0U2VsZWN0ZWRN'@; put 'ZXJnZWRDZWxsQ2xhc3NOYW1lKHQscixpLG8pfSkscWEodGhpcyxzM2UsKCk9PnRoaXMuc2VsZWN0aW9uQ2FsY3VsYXRpb25zLmdldFNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZVRvUmVtb3ZlKCkpLHFhKHRoaXMsbDNlLCh0LHIsaSxvKT0+e2lmKCEobyBpbnN0YW5jZW9mIE1vdXNlRXZl'@; put 'bnQpKXJldHVybjtjb25zdCBhPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighYSlyZXR1cm47Y29uc3QgbD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRCeVJhbmdlKGEpO2lmKCFsKXJldHVybjtjb25zdCB1PXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGwu'@; put 'cm93LGwuY29sKSxnPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGwucm93K2wucm93c3Bhbi0xLGwuY29sK2wuY29sc3Bhbi0xKTtyZXR1cm4gMD09PXRoaXMuaG90LnNlbGVjdGlvbi5nZXRMYXllckxldmVsKCkmJmEuaXNFcXVhbCh0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHUsdSxn'@; put 'KSl9KSxxYSh0aGlzLGMzZSwodCxyLGkpPT57aWYodGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5yb3dIZWFkZXJzfHwiYm90dG9tIj09PWl8fCJib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciI9PT1pKXJldHVybiB0O2xldCBvLGE7aWYoIm1hc3RlciI9PT1pKW89dGhpcy5ob3QuZ2V0Rmlyc3RS'@; put 'ZW5kZXJlZFZpc2libGVDb2x1bW4oKSxhPXRoaXMuaG90LmdldExhc3RSZW5kZXJlZFZpc2libGVDb2x1bW4oKTtlbHNle2NvbnN0IE1lPXRoaXMuaG90LnZpZXcuZ2V0T3ZlcmxheUJ5TmFtZShpKT8uY2xvbmU/Lnd0VGFibGU7aWYoIU1lKXJldHVybiB0O289dGhpcy5ob3QuY29sdW1uSW5k'@; put 'ZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChNZS5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCkpLGE9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChNZS5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKSl9aWYobnVsbD09b3x8'@; put 'IXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChyLG8pKXJldHVybiB0O2NvbnN0IHU9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMocixvKSxnPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHIsYT8/byksRT10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHUsdSxnKSxPPXRoaXMu'@; put 'bWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKEUsITApLFo9Ty5yZWR1Y2UoKHZlLHtyb3dzcGFuOk1lfSk9Pk1hdGgubWF4KHZlLE1lKSwxKTtsZXQgZWU9MDtyZXR1cm4gTy5sZW5ndGg+MSYmT1swXS5yb3dzcGFuPFomJihlZT1aLU9bMF0ucm93c3BhbiksTy5mb3JFYWNo'@; put 'KCh7cm93c3Bhbjp2ZX0pPT57bGV0IE1lPTA7TWU9InRvcCI9PT1pfHwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiPT09aT9NYXRoLm1pbihaLHRoaXMuaG90LnZpZXcuY291bnROb3RIaWRkZW5GaXhlZFJvd3NUb3AoKS1yKTp2ZS1lZSx0PU1hdGgubWF4KHQ/PzAsRkJlKHRoaXMuaG90LHIs'@; put 'TWUpKX0pLHR9KX19ZnVuY3Rpb24gVUd0KG4pe24uaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gQUd0KG4pe3JldHVybntrZXk6Im1lcmdlQ2VsbHMiLG5hbWUoKXtjb25zdCBlPXRoaXMuZ2V0U2VsZWN0ZWRBY3RpdmUoKTtpZihlJiZuLm1lcmdlZENlbGxzQ29sbGVj'@; put 'dGlvbil7Y29uc3QgdD1uLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoZVswXSxlWzFdKTtpZighMSE9PXQmJnQucm93PT09ZVswXSYmdC5jb2w9PT1lWzFdJiZ0LnJvdyt0LnJvd3NwYW4tMT09PWVbMl0mJnQuY29sK3QuY29sc3Bhbi0xPT09ZVszXSlyZXR1cm4gdGhpcy5nZXRUcmFuc2xh'@; put 'dGVkUGhyYXNlKGJjZSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh5Y2UpfSxjYWxsYmFjaygpe2NvbnN0IGU9dGhpcy5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWUpcmV0dXJuO2Uuc2V0RGlyZWN0aW9uKHRoaXMuaXNSdGwoKT8iTkUtU1ciOiJOVy1TRSIpO2NvbnN0'@; put 'e2Zyb206dCx0bzpyfT1lO24udG9nZ2xlTWVyZ2UoZSksbnVsbCE9PXQucm93JiZudWxsIT09dC5jb2wmJm51bGwhPT1yLnJvdyYmbnVsbCE9PXIuY29sJiZ0aGlzLnNlbGVjdENlbGwodC5yb3csdC5jb2wsci5yb3csci5jb2wsITEpfSxkaXNhYmxlZCgpe2NvbnN0IGU9dGhpcy5nZXRTZWxl'@; put 'Y3RlZEFjdGl2ZSgpO3JldHVybiFlfHxJNi5pc1NpbmdsZUNlbGwoe3JvdzplWzBdLGNvbDplWzFdLHJvd3NwYW46ZVsyXS1lWzBdKzEsY29sc3BhbjplWzNdLWVbMV0rMX0pfHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKX0saGlkZGVuOiExfX0odGhpcykpfWNvbnN0IHlG'@; put 'PSJtdWx0aUNvbHVtblNvcnRpbmciLFVCZT15Rjt0TmUoeUYsZnVuY3Rpb24gekd0KG4sZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7Y29uc3RbLC4uLmldPXQsWywuLi5vXT1yO3JldHVybiBmdW5jdGlvbiBhKGwpe2NvbnN0IHU9bltsXSxnPWVbbF0sRT1pW2xdLE89b1tsXSxaPWcubXVsdGlD'@; put 'b2x1bW5Tb3J0aW5nLHZlPShaLmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk/Wi5jb21wYXJlRnVuY3Rpb25GYWN0b3J5Om5OZShnLnR5cGUpKSh1LGcsWikoRSxPKTtpZih2ZT09PXRnKXtjb25zdCBNZT1sKzE7aWYodHlwZW9mIGVbTWVdPCJ1IilyZXR1cm4gYShNZSl9cmV0dXJuIHZlfSgwKX19'@; put 'KTtjbGFzcyBHR3QgZXh0ZW5kcyBtTmV7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIHlGfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDE3MH1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVyblt5Rl19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5n'@; put 'ZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fHN1cGVyLmVuYWJsZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXtzdXBlci5kaXNhYmxlUGx1Z2luKCl9cmVnaXN0ZXJTaG9ydGN1dHMoKXtzdXBlci5yZWdpc3RlclNob3J0Y3V0cygpLHRo'@; put 'aXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKT8uYWRkU2hvcnRjdXQoe2tleXM6W1siU2hpZnQiLCJFbnRlciJdXSxjYWxsYmFjazooKT0+e2NvbnN0IGU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpO2lmKGUpe2NvbnN0e2hpZ2hsaWdodDp0'@; put 'fT1lO2lmKC0xPT09KHQucm93Pz8wKSYmKHQuY29sPz8wKT49MCl7Y29uc3Qgcj10aGlzLmdldE5leHRTb3J0Q29uZmlnKHQuY29sPz8wLFVaKTt0aGlzLnNvcnQocil9fXJldHVybiExfSxydW5Pbmx5SWY6KCk9Pntjb25zdCBlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8u'@; put 'aGlnaGxpZ2h0O3JldHVybiEhKGUmJnRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKT8uaXNTaW5nbGUoKSYmdGhpcy5ob3Quc2VsZWN0aW9uLmlzQ2VsbFZpc2libGUoZSkmJmUuaXNIZWFkZXIoKSl9LHJlbGF0aXZlVG9Hcm91cDpSNyxwb3NpdGlvbjoiYmVmb3JlIixncm91cDpV'@; put 'QmV9KX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7c3VwZXIudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKT8ucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChVQmUpfXNvcnQoZSl7c3VwZXIuc29ydChlKX1jbGVhclNvcnQo'@; put 'KXtzdXBlci5jbGVhclNvcnQoKX1pc1NvcnRlZCgpe3JldHVybiBzdXBlci5pc1NvcnRlZCgpfWdldFNvcnRDb25maWcoZSl7cmV0dXJuIHN1cGVyLmdldFNvcnRDb25maWcoZSl9c2V0U29ydENvbmZpZyhlKXtzdXBlci5zZXRTb3J0Q29uZmlnKGUpfWdldE5vcm1hbGl6ZWRTb3J0Q29uZmln'@; put 'cyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOnZvaWQgMCE9PWU/W2VdOltdfXVwZGF0ZUhlYWRlckNsYXNzZXMoZSx0LHIsaSxvKXtzdXBlci51cGRhdGVIZWFkZXJDbGFzc2VzKGUsdCxyLGksbyksa28oZSxmdW5jdGlvbiBZR3Qobil7Y29uc3QgZT1uLmNsYXNzTmFtZS5zcGxpdCgi'@; put 'ICIpLHQ9bmV3IFJlZ0V4cCgiXnNvcnQtWzAtOV17MSwyfSQiKTtyZXR1cm4gZS5maWx0ZXIocj0+dC50ZXN0KHIpKX0oZSkpLCExIT09dGhpcy5lbmFibGVkJiZ2b2lkIDAhPT10JiZ2b2lkIDAhPT1yJiZZcihlLGZ1bmN0aW9uIFdHdChuLGUsdCl7Y29uc3Qgcj1bXTtyZXR1cm4hMT09PXR8'@; put 'fG4uaXNDb2x1bW5Tb3J0ZWQoZSkmJm4uZ2V0TnVtYmVyT2ZTb3J0ZWRDb2x1bW5zKCk+MSYmci5wdXNoKGBzb3J0LSR7bi5nZXRJbmRleE9mQ29sdW1uSW5Tb3J0UXVldWUoZSkrMX1gKSxyfSh0LHIsaT8/ITEpKX1vbkFmdGVyT25DZWxsTW91c2VEb3duKGUsdCl7ITEhPT1yMWUodC5yb3cs'@; put 'dC5jb2wsZSkmJnRoaXMud2FzQ2xpY2thYmxlSGVhZGVyQ2xpY2tlZChlLHQuY29sKSYmKHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKT8odGhpcy5ob3QuZGVzZWxlY3RDZWxsKCksdGhpcy5ob3Quc2VsZWN0Q29sdW1ucyh0LmNvbCksdGhpcy5zb3J0KHRo'@; put 'aXMuZ2V0TmV4dFNvcnRDb25maWcodC5jb2wsVVopKSk6dGhpcy5zb3J0KHRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyh0LmNvbCkpKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSx0aGlzLnBsdWdpbktleT15Rn19Y2xhc3MgS0d0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5f'@; put 'S0VZKCl7cmV0dXJuIm11bHRpcGxlU2VsZWN0aW9uSGFuZGxlcyJ9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTYwfWlzRW5hYmxlZCgpe3JldHVybiBRNSgpfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSxzdXBlci5l'@; put 'bmFibGVQbHVnaW4oKSl9cmVnaXN0ZXJMaXN0ZW5lcnMoKXtjb25zdHtyb290RWxlbWVudDplfT10aGlzLmhvdCx0PXI9PntpZigxPT09dGhpcy5kcmFnZ2VkLmxlbmd0aClyZXR1cm4gdGhpcy5kcmFnZ2VkLnNwbGljZSgwLHRoaXMuZHJhZ2dlZC5sZW5ndGgpLCEwO2NvbnN0IGk9dGhpcy5k'@; put 'cmFnZ2VkLmluZGV4T2Yocik7aWYoLTE9PT1pKXJldHVybiExOzA9PT1pP3RoaXMuZHJhZ2dlZD10aGlzLmRyYWdnZWQuc2xpY2UoMCwxKToxPT09aSYmKHRoaXMuZHJhZ2dlZD10aGlzLmRyYWdnZWQuc2xpY2UoLTEpKX07dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihlLCJ0'@; put 'b3VjaHN0YXJ0IixyPT57bGV0IGk7Y29uc3Qgbz1BYShyKTtyZXR1cm4gTGEobywidG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEiKT8oaT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCksaSYmKHRoaXMuZHJhZ2dlZC5wdXNoKCJ0b3AiKSx0aGlzLnRvdWNoU3RhcnRSYW5nZT17'@; put 'd2lkdGg6aS5nZXRXaWR0aCgpLGhlaWdodDppLmdldEhlaWdodCgpLGRpcmVjdGlvbjppLmdldERpcmVjdGlvbigpfSxyLnByZXZlbnREZWZhdWx0KCkpLCExKTpMYShvLCJib3R0b21TZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhpPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUo'@; put 'KSxpJiYodGhpcy5kcmFnZ2VkLnB1c2goImJvdHRvbSIpLHRoaXMudG91Y2hTdGFydFJhbmdlPXt3aWR0aDppLmdldFdpZHRoKCksaGVpZ2h0OmkuZ2V0SGVpZ2h0KCksZGlyZWN0aW9uOmkuZ2V0RGlyZWN0aW9uKCl9LHIucHJldmVudERlZmF1bHQoKSksITEpOnZvaWQgMH0pLHRoaXMuZXZl'@; put 'bnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZSwidG91Y2hlbmQiLHI9Pntjb25zdCBpPUFhKHIpO3JldHVybiBMYShpLCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyh0KCJ0b3AiKSx0aGlzLnRvdWNoU3RhcnRSYW5nZT12b2lkIDAsci5wcmV2ZW50RGVmYXVsdCgpLCExKTpMYShp'@; put 'LCJib3R0b21TZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyh0KCJib3R0b20iKSx0aGlzLnRvdWNoU3RhcnRSYW5nZT12b2lkIDAsci5wcmV2ZW50RGVmYXVsdCgpLCExKTp2b2lkIDB9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGUsInRvdWNobW92ZSIscj0+e2NvbnN0'@; put 'e3Jvb3REb2N1bWVudDppfT10aGlzLmhvdDtsZXQgbyxhLGwsdSxnLEU7aWYoMD09PXRoaXMuZHJhZ2dlZC5sZW5ndGgpcmV0dXJuO2NvbnN0IE89ci50b3VjaGVzWzBdLFo9aS5lbGVtZW50RnJvbVBvaW50KE8uY2xpZW50WCxPLmNsaWVudFkpO2lmKFomJlohPT10aGlzLmxhc3RTZXRDZWxs'@; put 'KXtpZigiVEQiPT09Wi5ub2RlTmFtZXx8IlRIIj09PVoubm9kZU5hbWUpe2lmKG89dGhpcy5ob3QuZ2V0Q29vcmRzKFopLCFvfHwoLTE9PT1vLmNvbCYmKG8uY29sPTApLGE9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUFjdGl2ZSgpLCFhKSlyZXR1cm47bD1hLmdldFdpZHRoKCksdT1hLmdl'@; put 'dEhlaWdodCgpLGc9YS5nZXREaXJlY3Rpb24oKSwxPT09bCYmMT09PXUmJnRoaXMuaG90LnNlbGVjdGlvbi5zZXRSYW5nZUVuZChvKSxFPXRoaXMuZ2V0Q3VycmVudFJhbmdlQ29vcmRzKGEsbyx0aGlzLnRvdWNoU3RhcnRSYW5nZS5kaXJlY3Rpb24sZyx0aGlzLmRyYWdnZWRbMF0pLG51bGwh'@; put 'PT1FLnN0YXJ0JiZ0aGlzLmhvdC5zZWxlY3Rpb24uc2V0UmFuZ2VTdGFydChFLnN0YXJ0KSx0aGlzLmhvdC5zZWxlY3Rpb24uc2V0UmFuZ2VFbmQoRS5lbmQpLHRoaXMubGFzdFNldENlbGw9Wn1yLnByZXZlbnREZWZhdWx0KCl9fSl9Z2V0Q3VycmVudFJhbmdlQ29vcmRzKGUsdCxyLGksbyl7'@; put 'Y29uc3QgYT1lLmdldFRvcFN0YXJ0Q29ybmVyKCksbD1lLmdldEJvdHRvbUVuZENvcm5lcigpLHU9ZS5nZXRCb3R0b21TdGFydENvcm5lcigpLGc9ZS5nZXRUb3BFbmRDb3JuZXIoKTtsZXQgRT17c3RhcnQ6bnVsbCxlbmQ6bnVsbH07c3dpdGNoKHIpe2Nhc2UiTkUtU1ciOnN3aXRjaChpKXtj'@; put 'YXNlIk5FLVNXIjpjYXNlIk5XLVNFIjpFPSJ0b3AiPT09bz97c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModC5yb3c/PzAsZS5oaWdobGlnaHQuY29sPz8wKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModS5yb3c/PzAsdC5jb2w/PzApfTp7c3RhcnQ6dGhpcy5ob3Qu'@; put 'X2NyZWF0ZUNlbGxDb29yZHMoZS5oaWdobGlnaHQucm93Pz8wLHQuY29sPz8wKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModC5yb3c/PzAsYS5jb2w/PzApfTticmVhaztjYXNlIlNFLU5XIjoiYm90dG9tIj09PW8mJihFPXtzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jk'@; put 'cyhsLnJvdz8/MCx0LmNvbD8/MCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHQucm93Pz8wLGEuY29sPz8wKX0pfWJyZWFrO2Nhc2UiTlctU0UiOnN3aXRjaChpKXtjYXNlIk5FLVNXIjoidG9wIj09PW8/RT17c3RhcnQ6dCxlbmQ6dX06RS5lbmQ9dDticmVhaztjYXNlIk5XLVNF'@; put 'IjoidG9wIj09PW8/RT17c3RhcnQ6dCxlbmQ6bH06RS5lbmQ9dDticmVhaztjYXNlIlNFLU5XIjoidG9wIj09PW8/RT17c3RhcnQ6dCxlbmQ6YX06RS5lbmQ9dDticmVhaztjYXNlIlNXLU5FIjoidG9wIj09PW8/RT17c3RhcnQ6dCxlbmQ6Z306RS5lbmQ9dH1icmVhaztjYXNlIlNXLU5FIjpz'@; put 'd2l0Y2goaSl7Y2FzZSJOVy1TRSI6RT0iYm90dG9tIj09PW8/e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHQucm93Pz8wLGEuY29sPz8wKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModS5yb3c/PzAsdC5jb2w/PzApfTp7c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNl'@; put 'bGxDb29yZHMoYS5yb3c/PzAsdC5jb2w/PzApLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh0LnJvdz8/MCxsLmNvbD8/MCl9O2JyZWFrO2Nhc2UiU1ctTkUiOkU9InRvcCI9PT1vP3tzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhlLmhpZ2hsaWdodC5yb3c/PzAsdC5j'@; put 'b2w/PzApLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh0LnJvdz8/MCxsLmNvbD8/MCl9OntzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh0LnJvdz8/MCxhLmNvbD8/MCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGEucm93Pz8wLHQuY29sPz8wKX07YnJl'@; put 'YWs7Y2FzZSJTRS1OVyI6ImJvdHRvbSI9PT1vP0U9e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHQucm93Pz8wLGcuY29sPz8wKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYS5yb3c/PzAsdC5jb2w/PzApfToidG9wIj09PW8mJihFPXtzdGFydDp1LGVuZDp0fSl9'@; put 'YnJlYWs7Y2FzZSJTRS1OVyI6c3dpdGNoKGkpe2Nhc2UiTlctU0UiOmNhc2UiTkUtU1ciOmNhc2UiU1ctTkUiOiJ0b3AiPT09byYmKEUuZW5kPXQpO2JyZWFrO2Nhc2UiU0UtTlciOiJ0b3AiPT09bz9FLmVuZD10OkU9e3N0YXJ0OnQsZW5kOmF9fX1yZXR1cm4gRX1pc0RyYWdnZWQoKXtyZXR1'@; put 'cm4gdGhpcy5kcmFnZ2VkLmxlbmd0aD4wfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLHRoaXMuZHJhZ2dlZD1bXSx0aGlzLmxhc3RTZXRDZWxsPW51bGx9fWZ1bmN0aW9uIHBDKHtsYWJlbDpuPSIiLGNvbHNwYW46ZT0xLG9yaWdDb2xzcGFuOnQ9MSxyb3dzcGFuOnI9MSxvcmlnUm93'@; put 'c3BhbjppPTEsY29sbGFwc2libGU6bz0hMSxjcm9zc0hpZGRlbkNvbHVtbnM6YT1bXSxpc0NvbGxhcHNlZDpsPSExLGlzSGlkZGVuOnU9ITEsaXNSb290Omc9ITEsaXNQbGFjZWhvbGRlcjpFPSExLGlzUm93c3BhblBsYWNlaG9sZGVyOk89ITEsaGVhZGVyQ2xhc3NOYW1lczpaPVtdLHZpc2li'@; put 'bGVXaGVuOmVlfT17fSl7cmV0dXJue2xhYmVsOm4sY29sc3BhbjplLG9yaWdDb2xzcGFuOnQscm93c3BhbjpyLG9yaWdSb3dzcGFuOmksY29sbGFwc2libGU6byxpc0NvbGxhcHNlZDpsLGNyb3NzSGlkZGVuQ29sdW1uczphLGlzSGlkZGVuOnUsaXNSb290OmcsaXNQbGFjZWhvbGRlcjpFLGlz'@; put 'Um93c3BhblBsYWNlaG9sZGVyOk8saGVhZGVyQ2xhc3NOYW1lczpaLHZpc2libGVXaGVuOmVlfX1mdW5jdGlvbiBUJCgpe3JldHVybntsYWJlbDoiIixpc1BsYWNlaG9sZGVyOiEwfX1jb25zdCBYR3Q9WyJjb2xsYXBzZWQiLCJleHBhbmRlZCIsImFsd2F5cyJdO2Z1bmN0aW9uIHpCZShuLGUs'@; put 'dCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBjZyhuLGUpe3JldHVybiBmdW5jdGlvbiBlJHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQu'@; put 'Y2FsbChuKTplLnZhbHVlfShuLHpCZShuLGUsImdldCIpKX1mdW5jdGlvbiB1M2UobixlLHQpeyhmdW5jdGlvbiBKR3QobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9i'@; put 'amVjdCIpfSkobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIFg3KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gdCR0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBw'@; put 'cml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix6QmUobixlLCJzZXQiKSx0KSx0fWNvbnN0IFdCZT1bImxhYmVsIiwiY29sbGFwc2libGUiXTt2YXIgdWc9bmV3IFdlYWtNYXAsUF89bmV3IFdlYWtNYXAseCQ9bmV3IFdlYWtNYXA7Y2xhc3MgbiR0e3NldENvbHVtbnNMaW1pdChlKXtYNyh0'@; put 'aGlzLHgkLGUpfXNldERhdGEoZT1bXSl7WDcodGhpcyx1ZyxmdW5jdGlvbiBRR3QobixlPTEvMCl7Y29uc3QgdD1bXSxyPVtdO2lmKDA9PT1lKXJldHVybiB0O2NvbnN0IGk9bD0+e2lmKCIiPT09bClyZXR1cm4hMDtpZighQ2EobCkpcmV0dXJuITE7Y29uc3R7bGFiZWw6dSxjb2xzcGFuOmcs'@; put 'cm93c3BhbjpFLGhlYWRlckNsYXNzTmFtZTpPLHZpc2libGVXaGVuOlp9PWw7cmV0dXJuISgiIiE9PVBsKHUpfHx2b2lkIDAhPT1nJiYxIT09Z3x8dm9pZCAwIT09RSYmMSE9PUV8fHZvaWQgMCE9PU98fHZvaWQgMCE9PVopfSxvPWw9Pntjb25zdCB1PXBDKCk7aWYoQ2EobCkpe2NvbnN0e2xh'@; put 'YmVsOmcsY29sc3BhbjpFLHJvd3NwYW46TyxoZWFkZXJDbGFzc05hbWU6Wix2aXNpYmxlV2hlbjplZX09bDt1LmxhYmVsPVBsKGcpLCJudW1iZXIiPT10eXBlb2YgRSYmRT4xJiYodS5jb2xzcGFuPUUsdS5vcmlnQ29sc3Bhbj1FKSwibnVtYmVyIj09dHlwZW9mIE8mJk8+MSYmKHUucm93c3Bh'@; put 'bj1PLHUub3JpZ1Jvd3NwYW49TyksInN0cmluZyI9PXR5cGVvZiBaJiYodS5oZWFkZXJDbGFzc05hbWVzPVsuLi5aLnNwbGl0KCIgIildKSwic3RyaW5nIj09dHlwZW9mIGVlJiZYR3QuaW5jbHVkZXMoZWUpJiYodS52aXNpYmxlV2hlbj1lZSl9ZWxzZSB1LmxhYmVsPVBsKGwpO3JldHVybiB1'@; put 'fTtYbihuLChsPVtdKT0+e2NvbnN0IHU9W107bGV0IGc9MCxFPTA7Zm9yKHQucHVzaCh1KTsoZzxsLmxlbmd0aHx8cltFXT4wKSYmIShFPj1lKTspe2NvbnN0IE89bFtnXTtpZihyW0VdPjApe2koTykmJihnKz0xKSx1LnB1c2gocEMoKSkscltFXS09MSxFKz0xO2NvbnRpbnVlfWlmKGc+PWwu'@; put 'bGVuZ3RoKWJyZWFrO2NvbnN0IGVlPW8oTyk7bGV0IHZlPWVlLm9yaWdDb2xzcGFuO2lmKEUrdmU+PWUmJih2ZS09RSt2ZS1lLGVlLmNvbHNwYW49dmUsZWUub3JpZ0NvbHNwYW49dmUpLGVlLm9yaWdSb3dzcGFuPjEpZm9yKGxldCBNZT0wO01lPHZlO01lKyspcltFK01lXT1NYXRoLm1heChy'@; put 'W0UrTWVdPz8wLGVlLm9yaWdSb3dzcGFuLTEpO2lmKHUucHVzaChlZSksZWUuY29sc3Bhbj4xKWZvcihsZXQgTWU9MDtNZTxlZS5jb2xzcGFuLTE7TWUrKyl1LnB1c2goVCQoKSk7RSs9dmUsZys9MX19KTtjb25zdCBhPU1hdGgubWF4KC4uLl9jKHQsbD0+bC5sZW5ndGgpKTtyZXR1cm4gWG4o'@; put 'dCxsPT57Y29uc3QgdT1sO2lmKHUubGVuZ3RoPGEpe2NvbnN0IGc9X2MobmV3IEFycmF5KGEtdS5sZW5ndGgpLCgpPT5wQygpKTt1LnNwbGljZSh1Lmxlbmd0aCwwLC4uLmcpfX0pLHR9KGUsY2codGhpcyx4JCkpKSxYNyh0aGlzLFBfLGNnKHRoaXMsdWcpLmxlbmd0aCl9Z2V0RGF0YSgpe3Jl'@; put 'dHVybiBjZyh0aGlzLHVnKX1tZXJnZVdpdGgoZSl7WG4oZSwoe3Jvdzp0LGNvbDpyLC4uLml9KT0+e2NvbnN0IG89dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyh0LHIpO251bGwhPT1vJiZZZChvLGksV0JlKX0pfW1hcChlKXtYbihjZyh0aGlzLHVnKSx0PT57WG4odCxyPT57Y29uc3QgaT1lKHsu'@; put 'Li5yfSk7Q2EoaSkmJllkKHIsaSxXQmUpfSl9KX1nZXRIZWFkZXJTZXR0aW5ncyhlLHQpe2lmKGU+PWNnKHRoaXMsUF8pfHxlPDApcmV0dXJuIG51bGw7Y29uc3Qgcj1jZyh0aGlzLHVnKVtlXTtyZXR1cm4hMT09PUFycmF5LmlzQXJyYXkocil8fHQ+PXIubGVuZ3RoP251bGw6clt0XT8/bnVs'@; put 'bH1nZXRIZWFkZXJzU2V0dGluZ3MoZSx0LHI9MSl7Y29uc3QgaT1bXTtpZihlPj1jZyh0aGlzLFBfKXx8ZTwwKXJldHVybiBpO2NvbnN0IG89Y2codGhpcyx1ZylbZV07bGV0IGE9MDtmb3IobGV0IGw9dDtsPG8ubGVuZ3RoO2wrKyl7Y29uc3QgdT1vW2xdO2lmKHUuaXNQbGFjZWhvbGRlciYm'@; put 'SnIoIlRoZSBmaXJzdCBjb2x1bW4gc2V0dGluZ3MgY2Fubm90IG92ZXJsYXAgdGhlIG90aGVyIGhlYWRlciBsYXllcnMiKSxhKz11LmNvbHNwYW4saS5wdXNoKHUpLHUuY29sc3Bhbj4xJiYobCs9dS5jb2xzcGFuLTEpLGE9PT1yKWJyZWFrO2E+ciYmSnIoIlRoZSBsYXN0IGNvbHVtbiBzZXR0'@; put 'aW5ncyBjYW5ub3Qgb3ZlcmxhcCB0aGUgb3RoZXIgaGVhZGVyIGxheWVycyIpfXJldHVybiBpfWluc2VydENvbHVtbnMoZSx0KXtYbihjZyh0aGlzLHVnKSxyPT57aWYoZT4wJiZlPHIubGVuZ3RoJiZyW2VdLmlzUGxhY2Vob2xkZXIpe2xldCBpPWUtMTtmb3IoO2k+MCYmcltpXS5pc1BsYWNl'@; put 'aG9sZGVyOylpLT0xO3JbaV0uY29sc3Bhbj0ocltpXS5jb2xzcGFuPz8xKSt0LHJbaV0ub3JpZ0NvbHNwYW49KHJbaV0ub3JpZ0NvbHNwYW4/PzEpK3Q7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPHQ7YSsrKW8ucHVzaChUJCgpKTtyLnNwbGljZShlLDAsLi4ubyl9ZWxzZXtjb25zdCBpPVtd'@; put 'O2ZvcihsZXQgbz0wO288dDtvKyspaS5wdXNoKHBDKCkpO3Iuc3BsaWNlKE1hdGgubWluKGUsci5sZW5ndGgpLDAsLi4uaSl9fSl9cmVtb3ZlQ29sdW1ucyhlLHQpe2NvbnN0IHI9ZSt0O1g3KHRoaXMsdWcsY2codGhpcyx1ZykubWFwKGk9Pntjb25zdCBvPVtdO2xldCBhPTA7Zm9yKDthPGku'@; put 'bGVuZ3RoOyl7Y29uc3QgbD1pW2FdLGc9YSsobC5pc1BsYWNlaG9sZGVyPzE6bC5vcmlnQ29sc3Bhbj8/MSktMTtsZXQgRT0wO2ZvcihsZXQgTz1hO088PWc7TysrKShPPGV8fE8+PXIpJiYoRSs9MSk7aWYoRT4wKXtvLnB1c2gocEMoey4uLmwsY29sc3BhbjpFLG9yaWdDb2xzcGFuOkUsaXNQ'@; put 'bGFjZWhvbGRlcjohMX0pKTtmb3IobGV0IE89MTtPPEU7TysrKW8ucHVzaChUJCgpKX1hPWcrMX1yZXR1cm4gb30pKX1nZXRMYXllcnNDb3VudCgpe3JldHVybiBjZyh0aGlzLFBfKX1nZXRDb2x1bW5zQ291bnQoKXtyZXR1cm4gY2codGhpcyxQXyk+MD9jZyh0aGlzLHVnKVswXS5sZW5ndGg6'@; put 'MH1jbGVhcigpe1g3KHRoaXMsdWcsW10pLFg3KHRoaXMsUF8sMCl9Y29uc3RydWN0b3IoKXt1M2UodGhpcyx1Zyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdTNlKHRoaXMsUF8se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHUzZSh0aGlzLHgkLHt3cml0YWJsZTohMCx2YWx1ZTp2'@; put 'b2lkIDB9KSxYNyh0aGlzLHVnLFtdKSxYNyh0aGlzLFBfLDApLFg3KHRoaXMseCQsMS8wKX19Y29uc3QgWUJlPSJERi1wcmUtb3JkZXIiLHFCZT1uZXcgTWFwKFtbWUJlLGZ1bmN0aW9uIFpCZShuLGUpe2xldCB0PW4uY2FsbChlLHRoaXMpO2ZvcihsZXQgcj0wO3I8dGhpcy5jaGlsZHMubGVu'@; put 'Z3RoO3IrKyl7aWYoITE9PT10KXJldHVybiExO3Q9WkJlLmNhbGwodGhpcy5jaGlsZHNbcl0sbixlKX1yZXR1cm4gdH1dLFsiREYtcG9zdC1vcmRlciIsZnVuY3Rpb24gR0JlKG4sZSl7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcy5sZW5ndGg7dCsrKWlmKCExPT09R0JlLmNhbGwodGhpcy5j'@; put 'aGlsZHNbdF0sbixlKSlyZXR1cm4hMTtyZXR1cm4gbi5jYWxsKGUsdGhpcyl9XSxbIkJGIixmdW5jdGlvbiBpJHQobixlKXtjb25zdCB0PVt0aGlzXTshZnVuY3Rpb24gcigpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm47Y29uc3QgaT10LnNoaWZ0KCk7dC5wdXNoKC4uLmkuY2hpbGRzKSwhMSE9'@; put 'PW4uY2FsbChlLGkpJiZyKCl9KCl9XV0pO2NsYXNzIEEke2FkZENoaWxkKGUpe2UucGFyZW50PXRoaXMsdGhpcy5jaGlsZHMucHVzaChlKX1jbG9uZVRyZWUoZT10aGlzKXtjb25zdCB0PW5ldyBBJCh7Li4uZS5kYXRhfSk7Zm9yKGxldCByPTA7cjxlLmNoaWxkcy5sZW5ndGg7cisrKXQuYWRk'@; put 'Q2hpbGQodGhpcy5jbG9uZVRyZWUoZS5jaGlsZHNbcl0pKTtyZXR1cm4gdH1yZXBsYWNlVHJlZVdpdGgoZSl7dGhpcy5kYXRhPXsuLi5lLmRhdGF9LHRoaXMuY2hpbGRzPVtdO2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZHMubGVuZ3RoO3QrKyl0aGlzLmFkZENoaWxkKGUuY2hpbGRzW3RdKX13YWxr'@; put 'RG93bihlLHQ9IkJGIil7cUJlLmhhcyh0KXx8SnIoYFRyYXZlcnNhbCBzdHJhdGVneSAiJHt0fSIgZG9lcyBub3QgZXhpc3RgKSxxQmUuZ2V0KHQpLmNhbGwodGhpcyxlLHRoaXMpfXdhbGtVcChlKXtjb25zdCB0PXI9PnshMSE9PWUuY2FsbCh0aGlzLHIpJiZudWxsIT09ci5wYXJlbnQmJnQo'@; put 'ci5wYXJlbnQpfTt0KHRoaXMpfWNvbnN0cnVjdG9yKGUpe3RoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHM9W10sdGhpcy5kYXRhPWV9fWZ1bmN0aW9uIEtCZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxk'@; put 'IG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBuMyhuLGUpe3JldHVybiBmdW5jdGlvbiBzJHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLEtCZShuLGUsImdldCIpKX1mdW5jdGlvbiBkM2UobixlLHQpeyhmdW5jdGlvbiBhJHQo'@; put 'bixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIGskKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gbCR0KG4sZSx0'@; put 'KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixLQmUobixlLCJzZXQiKSx0KSx0fXZhciBnQz1uZXcgV2Vha01hcCxI'@; put 'Xz1uZXcgV2Vha01hcCxtQz1uZXcgV2Vha01hcDtjbGFzcyBjJHR7Z2V0Um9vdHMoKXtyZXR1cm4gQXJyYXkuZnJvbShuMyh0aGlzLGdDKS52YWx1ZXMoKSl9Z2V0Um9vdEJ5Q29sdW1uKGUpe2xldCB0O3JldHVybiBuMyh0aGlzLEhfKS5oYXMoZSkmJih0PW4zKHRoaXMsZ0MpLmdldChuMyh0'@; put 'aGlzLEhfKS5nZXQoZSkpKSx0fWdldE5vZGUoZSx0KXtjb25zdCByPXRoaXMuZ2V0Um9vdEJ5Q29sdW1uKHQpO2lmKCFyKXJldHVybjtjb25zdCBpPXQtbjModGhpcyxIXykuZ2V0KHQpO2xldCBhLG89MDtyZXR1cm4gci53YWxrRG93bihsPT57Y29uc3R7b3JpZ0NvbHNwYW46dSxoZWFkZXJM'@; put 'ZXZlbDpnfT1sLmRhdGE7aWYoZT09PWcpe2lmKGk+PW8mJmk8PW8rdS0xKXJldHVybiBhPWwsYS5kYXRhLmlzUm9vdD10PT09YS5kYXRhLmNvbHVtbkluZGV4LCExO28rPXV9fSksYX1yZWJ1aWxkVHJlZUluZGV4KCl7bGV0IGU9MDtuMyh0aGlzLEhfKS5jbGVhcigpLFhuKG4zKHRoaXMsZ0Mp'@; put 'LChbLHRdKT0+e2NvbnN0e2NvbHNwYW46cn09dC5kYXRhO2ZvcihsZXQgaT1lO2k8ZStyO2krKyluMyh0aGlzLEhfKS5zZXQoaSxlKTtlKz1yfSl9YnVpbGRUcmVlKCl7dGhpcy5jbGVhcigpO2NvbnN0IGU9bjModGhpcyxtQykuZ2V0Q29sdW1uc0NvdW50KCk7bGV0IHQ9MDtmb3IoO3Q8ZTsp'@; put 'e2NvbnN0IHI9bjModGhpcyxtQykuZ2V0SGVhZGVyU2V0dGluZ3MoMCx0KSxpPW5ldyBBJCh7Li4ucEMoKSxoZWFkZXJMZXZlbDowLGNvbHVtbkluZGV4OnR9KTtuMyh0aGlzLGdDKS5zZXQodCxpKSx0aGlzLmJ1aWxkTGVhdmVzKGksdCwwLHIub3JpZ0NvbHNwYW4pLHQrPXIub3JpZ0NvbHNw'@; put 'YW59dGhpcy5yZWJ1aWxkVHJlZUluZGV4KCl9YnVpbGRMZWF2ZXMoZSx0LHIsaT0xKXtjb25zdCBvPW4zKHRoaXMsbUMpLmdldEhlYWRlcnNTZXR0aW5ncyhyLHQsaSk7cis9MSxYbihvLGE9Pntjb25zdCBsPWEsdT17Li4ubCxoZWFkZXJMZXZlbDpyLTEsY29sdW1uSW5kZXg6dH07bGV0IGc7'@; put 'MT09PXI/KGUuZGF0YT11LGc9ZSk6KGc9bmV3IEEkKHUpLGUuYWRkQ2hpbGQoZykpLHI8bjModGhpcyxtQykuZ2V0TGF5ZXJzQ291bnQoKSYmdGhpcy5idWlsZExlYXZlcyhnLHQscixsLm9yaWdDb2xzcGFuKSx0Kz1sLm9yaWdDb2xzcGFufSl9Y2xlYXIoKXtuMyh0aGlzLGdDKS5jbGVhcigp'@; put 'LG4zKHRoaXMsSF8pLmNsZWFyKCl9Y29uc3RydWN0b3IoZSl7ZDNlKHRoaXMsZ0Mse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGQzZSh0aGlzLEhfLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxkM2UodGhpcyxtQyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksayQodGhpcyxn'@; put 'QyxuZXcgTWFwKSxrJCh0aGlzLEhfLG5ldyBNYXApLGskKHRoaXMsbUMsbnVsbCksayQodGhpcyxtQyxlKX19ZnVuY3Rpb24gUiQobixlKXtjb25zdHtkYXRhOnQsY2hpbGRzOnJ9PW47aWYodC5pc0NvbGxhcHNlZClpZihyLmxlbmd0aD4wKXtjb25zdCBpPXIuZmluZCgoe2RhdGE6b30pPT4h'@; put 'by5pc0hpZGRlbik7aSYmUiQoaSxlKX1lbHNlIGZvcihsZXQgaT0wO2k8dC5jb2xzcGFuO2krKyllKHQuY29sdW1uSW5kZXgraSk7ZWxzZSBpZigwIT09ci5sZW5ndGgpci5mb3JFYWNoKGk9PlIkKGksZSkpO2Vsc2UgZm9yKGxldCBpPTA7aTx0Lm9yaWdDb2xzcGFuO2krKyllKHQuY29sdW1u'@; put 'SW5kZXgraSl9ZnVuY3Rpb24gaDNlKG4pe3JldHVybiBuLmNoaWxkcy5sZW5ndGg+MCYmbi5jaGlsZHMuc29tZSgoe2RhdGE6ZX0pPT52b2lkIDAhPT1lLnZpc2libGVXaGVuKX1mdW5jdGlvbiBmM2Uoe2NoaWxkczpufSxlKXtpZigwIT09bi5sZW5ndGgpcmV0dXJuIG5bMF0uZGF0YVtlXX1m'@; put 'dW5jdGlvbiBJJChuKXtyZXR1cm4gZjNlKG4sIm9yaWdDb2xzcGFuIik9PT1uLmRhdGEub3JpZ0NvbHNwYW59ZnVuY3Rpb24gRCQobil7Y29uc3R7ZGF0YTplLGNoaWxkczp0fT1uO2lmKCFlLmlzQ29sbGFwc2VkfHxlLmlzSGlkZGVufHxlLm9yaWdDb2xzcGFuPD0xKXJldHVybntyb2xsYmFj'@; put 'a01vZGlmaWNhdGlvbjooKT0+e30sYWZmZWN0ZWRDb2x1bW5zOltdLGNvbHNwYW5Db21wZW5zYXRpb246MH07aWYoaDNlKG4pKXJldHVybiBlLmlzQ29sbGFwc2VkPSExLHtyb2xsYmFja01vZGlmaWNhdGlvbjooKT0+TCQobiksYWZmZWN0ZWRDb2x1bW5zOltdLGNvbHNwYW5Db21wZW5zYXRp'@; put 'b246MH07aWYoSSQobikpcmV0dXJuIEQkKHRbMF0pO2UuaXNDb2xsYXBzZWQ9ITE7Y29uc3QgaT10LmZpbHRlcigoe2RhdGE6bH0pPT5sLmNsb25lZFRyZWUpLG89bmV3IFNldDtsZXQgYT0wO2lmKGkubGVuZ3RoPjApWG4oaSxsPT57bC5yZXBsYWNlVHJlZVdpdGgobC5kYXRhLmNsb25lZFRy'@; put 'ZWUpO2NvbnN0IGc9bC5kYXRhO2cuY2xvbmVkVHJlZT1udWxsLGErPWcuY29sc3BhbixSJChsLEU9PntvLmFkZChFKX0pfSk7ZWxzZSBpZigwPT09dC5sZW5ndGgpe2NvbnN0e2NvbHNwYW46bCxvcmlnQ29sc3Bhbjp1LGNvbHVtbkluZGV4Omd9PWU7YT11LWw7Zm9yKGxldCBFPTE7RTx1O0Ur'@; put 'KylvLmFkZChnK0UpfXJldHVybiBuLndhbGtVcChsPT57Y29uc3R7ZGF0YTp1fT1sO3UuY29sc3Bhbis9YSx1LmNvbHNwYW4+PXUub3JpZ0NvbHNwYW4/KHUuY29sc3Bhbj11Lm9yaWdDb2xzcGFuLHUuaXNDb2xsYXBzZWQ9ITEpOkkkKGwpJiYodS5pc0NvbGxhcHNlZD1mM2UobCwiaXNDb2xs'@; put 'YXBzZWQiKSl9KSx7cm9sbGJhY2tNb2RpZmljYXRpb246KCk9PkwkKG4pLGFmZmVjdGVkQ29sdW1uczpBcnJheS5mcm9tKG8pLGNvbHNwYW5Db21wZW5zYXRpb246YX19ZnVuY3Rpb24gTCQobil7Y29uc3R7ZGF0YTplLGNoaWxkczp0fT1uO2lmKGUuaXNDb2xsYXBzZWR8fGUuaXNIaWRkZW58'@; put 'fGUub3JpZ0NvbHNwYW48PTEpcmV0dXJue3JvbGxiYWNrTW9kaWZpY2F0aW9uOigpPT57fSxhZmZlY3RlZENvbHVtbnM6W10sY29sc3BhbkNvbXBlbnNhdGlvbjowfTtpZihoM2UobikpcmV0dXJuIGUuaXNDb2xsYXBzZWQ9ITAse3JvbGxiYWNrTW9kaWZpY2F0aW9uOigpPT5EJChuKSxhZmZl'@; put 'Y3RlZENvbHVtbnM6W10sY29sc3BhbkNvbXBlbnNhdGlvbjowfTtpZihJJChuKSlyZXR1cm4gTCQodFswXSk7Y29uc3QgaT1uZXcgU2V0O2xldCBvPTA7aWYodC5sZW5ndGg+MCl7Y29uc3QgYT10LmZpbmRJbmRleCgoe2RhdGE6dX0pPT4hdS5pc0hpZGRlbiksbD10LmZpbHRlcigodSxnKT0+'@; put 'Zz5hKTtpZigtMT09PWF8fDA9PT1sLmxlbmd0aClyZXR1cm57cm9sbGJhY2tNb2RpZmljYXRpb246KCk9Pnt9LGFmZmVjdGVkQ29sdW1uczpbXSxjb2xzcGFuQ29tcGVuc2F0aW9uOjB9O1huKGwsdT0+e1IkKHUsZz0+e2kuYWRkKGcpfSksdS5kYXRhLmNsb25lZFRyZWU9dS5jbG9uZVRyZWUo'@; put 'KSx1LndhbGtEb3duKCh7ZGF0YTpnfSk9PntnLmlzSGlkZGVuPSEwfSl9KSxvPWUuY29sc3Bhbi10W2FdLmRhdGEuY29sc3Bhbn1lbHNle2NvbnN0e29yaWdDb2xzcGFuOmEsY29sdW1uSW5kZXg6bH09ZSx1PW5ldyBTZXQoZS5jcm9zc0hpZGRlbkNvbHVtbnMpLGc9W107Zm9yKGxldCBFPWw7'@; put 'RTxsK2E7RSsrKXUuaGFzKEUpfHxnLnB1c2goRSk7aWYoZy5sZW5ndGg8PTEpcmV0dXJue3JvbGxiYWNrTW9kaWZpY2F0aW9uOigpPT57fSxhZmZlY3RlZENvbHVtbnM6W10sY29sc3BhbkNvbXBlbnNhdGlvbjowfTtYbihnLnNsaWNlKDEpLEU9PntpLmFkZChFKX0pLG89Zy5sZW5ndGgtMX1y'@; put 'ZXR1cm4gZS5pc0NvbGxhcHNlZD0hMCxuLndhbGtVcChhPT57Y29uc3R7ZGF0YTpsfT1hO2wuY29sc3Bhbi09byxsLmNvbHNwYW48PTE/KGwuY29sc3Bhbj0xLGwuaXNDb2xsYXBzZWQ9ITApOkkkKGEpJiYobC5pc0NvbGxhcHNlZD1mM2UoYSwiaXNDb2xsYXBzZWQiKSl9KSx7cm9sbGJhY2tN'@; put 'b2RpZmljYXRpb246KCk9PkQkKG4pLGFmZmVjdGVkQ29sdW1uczpBcnJheS5mcm9tKGkpLGNvbHNwYW5Db21wZW5zYXRpb246b319Y29uc3QgdSR0PW5ldyBNYXAoW1siY29sbGFwc2UiLEwkXSxbImV4cGFuZCIsRCRdXSk7ZnVuY3Rpb24gcDNlKG4pe2NvbnN0IGU9W107cmV0dXJuIFhuKG4s'@; put 'dD0+e3Qud2Fsa0Rvd24ocj0+e2NvbnN0IGk9ci5kYXRhLHtvcmlnQ29sc3BhbjpvLGNvbHVtbkluZGV4OmEsaGVhZGVyTGV2ZWw6bCxjcm9zc0hpZGRlbkNvbHVtbnM6dX09aSxnPWZ1bmN0aW9uIHAkdChuLGUpe2xldCB0O3JldHVybiBBcnJheS5pc0FycmF5KG5bZV0pP3Q9bltlXToodD1b'@; put 'XSxuW2VdPXQpLHR9KGUsbCk7bGV0IEU9ITE7Zm9yKGxldCBPPWE7TzxhK287TysrKWlmKHUuaW5jbHVkZXMoTyl8fEUpZy5wdXNoKFQkKCkpO2Vsc2V7Y29uc3QgZWU9ZiR0KGkpO2VlLmlzUm9vdD0hMCxnLnB1c2goZWUpLEU9ITB9fSl9KSxmdW5jdGlvbiBoJHQobil7Zm9yKGxldCBlPTA7'@; put 'ZTxuLmxlbmd0aDtlKyspe2NvbnN0IHQ9bltlXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7Y29uc3QgaT10W3JdO2lmKCFpfHwhaS5pc1Jvb3R8fCFpLm9yaWdSb3dzcGFufHxpLm9yaWdSb3dzcGFuPD0xKWNvbnRpbnVlO2NvbnN0IG89TWF0aC5taW4oaS5vcmlnUm93c3BhbixuLmxl'@; put 'bmd0aC1lKSxhPWkub3JpZ0NvbHNwYW58fDE7Zm9yKGxldCBsPTE7bDxvO2wrKyl7Y29uc3QgdT1lK2w7aWYoblt1XSlmb3IobGV0IGc9cjtnPHIrYSYmZzxuW3VdLmxlbmd0aDtnKyspblt1XVtnXT17bGFiZWw6IiIsaXNQbGFjZWhvbGRlcjohMCxpc1Jvd3NwYW5QbGFjZWhvbGRlcjohMH19'@; put 'fX19KGUpLGV9ZnVuY3Rpb24gZiR0KG4pe2NvbnN0e2Nyb3NzSGlkZGVuQ29sdW1uczplLC4uLnR9PXBDKG4pO3JldHVybiB0fWZ1bmN0aW9uIFhCZShuLGUpe24uZm9yRWFjaCh0PT57dC53YWxrRG93bihyPT57Y29uc3QgaT1yLmRhdGEse2NvbHVtbkluZGV4Om8sb3JpZ0NvbHNwYW46YX09'@; put 'aSxsPVtdO2ZvcihsZXQgdT1vO3U8bythO3UrKyllLmlzVmlzaWJsZSh1KXx8bC5wdXNoKHUpO2kuY3Jvc3NIaWRkZW5Db2x1bW5zPWwsaS5jb2xzcGFuPWEtbC5sZW5ndGgsaS5pc0hpZGRlbj0wPT09aS5jb2xzcGFufSl9KX1mdW5jdGlvbiBRQmUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBu'@; put 'ZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIEpCZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxk'@; put 'IG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBndShuLGUpe3JldHVybiBmdW5jdGlvbiBnJHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLEpCZShuLGUsImdldCIpKX1mdW5jdGlvbiBPJChuLGUsdCl7UUJlKG4sZSksZS5zZXQo'@; put 'bix0KX1mdW5jdGlvbiBMNihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIG0kdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFs'@; put 'dWU9dH19KG4sSkJlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBPNihuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBiRihuLGUpe1FCZShuLGUp'@; put 'LGUuYWRkKG4pfXZhciBkZz1uZXcgV2Vha01hcCxjMj1uZXcgV2Vha01hcCx2Qz1uZXcgV2Vha01hcCxEeD1uZXcgV2Vha01hcCx3Rj1uZXcgV2Vha1NldCxlamU9bmV3IFdlYWtTZXQsdGplPW5ldyBXZWFrU2V0LGczZT1uZXcgV2Vha1NldCxtM2U9bmV3IFdlYWtTZXQ7Y2xhc3MgdiR0e3Nl'@; put 'dFN0YXRlKGUpe2d1KHRoaXMsZGcpLnNldERhdGEoZSk7bGV0IHQ9ITE7dHJ5e2d1KHRoaXMsYzIpLmJ1aWxkVHJlZSgpfWNhdGNoe2d1KHRoaXMsYzIpLmNsZWFyKCksZ3UodGhpcyxkZykuY2xlYXIoKSx0PSEwfXJldHVybiBPNih0aGlzLGczZSxuamUpLmNhbGwodGhpcyksdH1zZXRDb2x1'@; put 'bW5zTGltaXQoZSl7Z3UodGhpcyxkZykuc2V0Q29sdW1uc0xpbWl0KGUpfW1lcmdlU3RhdGVXaXRoKGUpe2NvbnN0IHQ9X2MoZSwoe3JvdzpyLC4uLml9KT0+KHtyb3c6cjwwP3RoaXMucm93Q29vcmRzVG9MZXZlbChyKT8/cjpyLC4uLml9KSk7TzYodGhpcyx3RixOJCkuY2FsbCh0aGlzLCgp'@; put 'PT5ndSh0aGlzLGRnKS5tZXJnZVdpdGgodCkscj0+cil9bWFwU3RhdGUoZSl7TzYodGhpcyx3RixOJCkuY2FsbCh0aGlzLCgpPT5ndSh0aGlzLGRnKS5tYXAoZSksdD0+dCl9aW5zZXJ0Q29sdW1ucyhlLHQpe082KHRoaXMsd0YsTiQpLmNhbGwodGhpcywoKT0+Z3UodGhpcyxkZykuaW5zZXJ0'@; put 'Q29sdW1ucyhlLHQpLHI9PnI+PWU/cit0OnIpfXJlbW92ZUNvbHVtbnMoZSx0KXtjb25zdCByPWUrdDtPNih0aGlzLHdGLE4kKS5jYWxsKHRoaXMsKCk9Pmd1KHRoaXMsZGcpLnJlbW92ZUNvbHVtbnMoZSx0KSxpPT5pPGU/aTppPj1yP2ktdDplKX1tYXBOb2RlcyhlKXtyZXR1cm4gbTEoZ3Uo'@; put 'dGhpcyxjMikuZ2V0Um9vdHMoKSwodCxyKT0+KHIud2Fsa0Rvd24oaT0+e2NvbnN0IG89ZShpLmRhdGEpO3ZvaWQgMCE9PW8mJnQucHVzaChvKX0pLHQpLFtdKX10cmlnZ2VyTm9kZU1vZGlmaWNhdGlvbihlLHQscil7dDwwJiYodD10aGlzLnJvd0Nvb3Jkc1RvTGV2ZWwodCk/PzApO2NvbnN0'@; put 'IGk9Z3UodGhpcyxjMikuZ2V0Tm9kZSh0LHIpO2xldCBvO3JldHVybiBpJiYobz1mdW5jdGlvbiBkJHQobixlLHQpe2NvbnN0IHI9dSR0LmdldChuKTtyZXR1cm4gcnx8SnIoYFRoZSBub2RlIG1vZGlmaWVyIGFjdGlvbiAoIiR7bn0iKSBkb2VzIG5vdCBleGlzdC5gKSxyKGUsdCl9KGUsaSxy'@; put 'KSxMNih0aGlzLHZDLHAzZShndSh0aGlzLGMyKS5nZXRSb290cygpKSkpLG8/P3ZvaWQgMH10cmlnZ2VyQ29sdW1uTW9kaWZpY2F0aW9uKGUsdCl7cmV0dXJuIHRoaXMudHJpZ2dlck5vZGVNb2RpZmljYXRpb24oZSwtMSx0KX1zeW5jVmlzaWJpbGl0eShlKXtMNih0aGlzLER4LGUpLFhCZShn'@; put 'dSh0aGlzLGMyKS5nZXRSb290cygpLGUpLEw2KHRoaXMsdkMscDNlKGd1KHRoaXMsYzIpLmdldFJvb3RzKCkpKX1yb3dDb29yZHNUb0xldmVsKGUpe2lmKGU+PTApcmV0dXJuIG51bGw7Y29uc3QgdD1lK01hdGgubWF4KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSwxKTtyZXR1cm4gdDwwP251bGw6'@; put 'dH1sZXZlbFRvUm93Q29vcmRzKGUpe2lmKGU8MClyZXR1cm4gbnVsbDtjb25zdCB0PWUtTWF0aC5tYXgodGhpcy5nZXRMYXllcnNDb3VudCgpLDEpO3JldHVybiB0Pj0wP251bGw6dH1nZXRIZWFkZXJTZXR0aW5ncyhlLHQpe3JldHVybiBlPDAmJihlPXRoaXMucm93Q29vcmRzVG9MZXZlbChl'@; put 'KT8/MCksbnVsbD09PWV8fGU+PXRoaXMuZ2V0TGF5ZXJzQ291bnQoKT9udWxsOmd1KHRoaXMsdkMpW2VdPy5bdF0/P251bGx9Z2V0SGVhZGVyVHJlZU5vZGVEYXRhKGUsdCl7Y29uc3Qgcj10aGlzLmdldEhlYWRlclRyZWVOb2RlKGUsdCk7cmV0dXJuIHI/ey4uLnIuZGF0YX06bnVsbH1nZXRI'@; put 'ZWFkZXJUcmVlTm9kZShlLHQpe2xldCByPWU7cmV0dXJuIGU8MCYmKHI9dGhpcy5yb3dDb29yZHNUb0xldmVsKGUpKSxudWxsPT09cnx8cj49dGhpcy5nZXRMYXllcnNDb3VudCgpP251bGw6Z3UodGhpcyxjMikuZ2V0Tm9kZShyLHQpfHxudWxsfWZpbmRUb3BNb3N0RW50aXJlSGVhZGVyTGV2'@; put 'ZWwoZSx0PWUpe2NvbnN0IHI9dC1lKzE7bGV0IGk9ITEsbz1udWxsO2ZvcihsZXQgYT1lO2E8PXQ7YSsrKXtjb25zdCBsPWd1KHRoaXMsYzIpLmdldFJvb3RCeUNvbHVtbihhKTtpZighbClicmVhaztpPSEwLGwud2Fsa0Rvd24odT0+e2NvbnN0e2NvbHVtbkluZGV4OmcsaGVhZGVyTGV2ZWw6'@; put 'RSxvcmlnQ29sc3BhbjpPLGlzSGlkZGVuOlp9PXUuZGF0YTtafHxPPD1yJiZnPj1lJiZnK08tMTw9dCYmKG51bGw9PT1vfHxFPG8pJiYobz1FKX0sWUJlKX1yZXR1cm4gaSYmbnVsbD09PW8/LTE6dGhpcy5sZXZlbFRvUm93Q29vcmRzKG8/PzApfWZpbmRMZWZ0TW9zdENvbHVtbkluZGV4KGUs'@; put 'dCl7Y29uc3R7aXNSb290OnJ9PXRoaXMuZ2V0SGVhZGVyU2V0dGluZ3MoZSx0KT8/e2lzUm9vdDohMH07aWYocilyZXR1cm4gdDtsZXQgaT10LTE7Zm9yKDtpPj0wOyl7Y29uc3R7aXNSb290Om99PXRoaXMuZ2V0SGVhZGVyU2V0dGluZ3MoZSxpKT8/e2lzUm9vdDohMH07aWYobylicmVhaztp'@; put 'LT0xfXJldHVybiBpfWZpbmRSaWdodE1vc3RDb2x1bW5JbmRleChlLHQpe2NvbnN0e2lzUm9vdDpyLG9yaWdDb2xzcGFuOml9PXRoaXMuZ2V0SGVhZGVyU2V0dGluZ3MoZSx0KT8/e2lzUm9vdDohMCxvcmlnQ29sc3BhbjoxfTtpZihyKXJldHVybiB0K2ktMTtsZXQgbz10KzE7Zm9yKDtvPHRo'@; put 'aXMuZ2V0Q29sdW1uc0NvdW50KCk7KXtjb25zdHtpc1Jvb3Q6YX09dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhlLG8pPz97aXNSb290OiEwfTtpZihhKWJyZWFrO28rPTF9cmV0dXJuIG8tMX1nZXRMYXllcnNDb3VudCgpe3JldHVybiBndSh0aGlzLGRnKS5nZXRMYXllcnNDb3VudCgpfWdldENv'@; put 'bHVtbnNDb3VudCgpe3JldHVybiBndSh0aGlzLGRnKS5nZXRDb2x1bW5zQ291bnQoKX1nZXRWaXNpYmxlV2hlbkhpZGRlbkNvbHVtbnMoKXtjb25zdCBlPVtdO3JldHVybiBndSh0aGlzLGMyKS5nZXRSb290cygpLmZvckVhY2godD0+e3Qud2Fsa0Rvd24ocj0+e2NvbnN0IGk9ci5jaGlsZHM7'@; put 'aWYoITAhPT1yLmRhdGEuY29sbGFwc2libGV8fDA9PT1pLmxlbmd0aHx8IWgzZShyKSlyZXR1cm47Y29uc3Qgbz0hMD09PXIuZGF0YS5pc0NvbGxhcHNlZCxhPWkuZmlsdGVyKGw9Pntjb25zdCB1PWwuZGF0YS52aXNpYmxlV2hlbj8/ImV4cGFuZGVkIjtyZXR1cm4iZXhwYW5kZWQiPT09dSYm'@; put 'b3x8ImNvbGxhcHNlZCI9PT11JiYhb30pO2EubGVuZ3RoPT09aS5sZW5ndGgmJmEuc2hpZnQoKSxhLmZvckVhY2goKHtkYXRhOntjb2x1bW5JbmRleDpsLG9yaWdDb2xzcGFuOnV9fSk9Pntmb3IobGV0IGc9MDtnPHU7ZysrKWUucHVzaChsK2cpfSl9KX0pLGV9Y2xlYXIoKXtMNih0aGlzLHZD'@; put 'LFtdKSxndSh0aGlzLGRnKS5jbGVhcigpLGd1KHRoaXMsYzIpLmNsZWFyKCksTDYodGhpcyxEeCxudWxsKX1jb25zdHJ1Y3Rvcigpe2JGKHRoaXMsd0YpLGJGKHRoaXMsZWplKSxiRih0aGlzLHRqZSksYkYodGhpcyxnM2UpLGJGKHRoaXMsbTNlKSxPJCh0aGlzLGRnLHt3cml0YWJsZTohMCx2'@; put 'YWx1ZTp2b2lkIDB9KSxPJCh0aGlzLGMyLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPJCh0aGlzLHZDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPJCh0aGlzLER4LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxMNih0aGlzLGRnLG5ldyBuJHQpLEw2KHRoaXMsYzIsbmV3'@; put 'IGMkdChndSh0aGlzLGRnKSkpLEw2KHRoaXMsdkMsW1tdXSksTDYodGhpcyxEeCxudWxsKX19ZnVuY3Rpb24gTiQobixlKXtjb25zdCB0PU82KHRoaXMsZWplLF8kdCkuY2FsbCh0aGlzKTtuKCksZ3UodGhpcyxjMikuYnVpbGRUcmVlKCksTzYodGhpcyxtM2UscmplKS5jYWxsKHRoaXMpLE82'@; put 'KHRoaXMsdGplLHkkdCkuY2FsbCh0aGlzLHQsZSksTzYodGhpcyxnM2UsbmplKS5jYWxsKHRoaXMpfWZ1bmN0aW9uIF8kdCgpe2NvbnN0IG49W107cmV0dXJuIGd1KHRoaXMsYzIpLmdldFJvb3RzKCkuZm9yRWFjaChlPT57ZS53YWxrRG93bih0PT57Y29uc3Qgcj10LmRhdGE7ci5pc0NvbGxh'@; put 'cHNlZCYmbi5wdXNoKHtoZWFkZXJMZXZlbDpyLmhlYWRlckxldmVsLGNvbHVtbkluZGV4OnIuY29sdW1uSW5kZXh9KX0pfSksbn1mdW5jdGlvbiB5JHQobixlKXtuLmZvckVhY2goKHtoZWFkZXJMZXZlbDp0LGNvbHVtbkluZGV4OnJ9KT0+e3RoaXMudHJpZ2dlck5vZGVNb2RpZmljYXRpb24o'@; put 'ImNvbGxhcHNlIix0LGUocikpfSl9ZnVuY3Rpb24gbmplKCl7TzYodGhpcyxtM2UscmplKS5jYWxsKHRoaXMpLEw2KHRoaXMsdkMscDNlKGd1KHRoaXMsYzIpLmdldFJvb3RzKCkpKX1mdW5jdGlvbiByamUoKXtndSh0aGlzLER4KSYmWEJlKGd1KHRoaXMsYzIpLmdldFJvb3RzKCksZ3UodGhp'@; put 'cyxEeCkpfWZ1bmN0aW9uIGlqZShuKXtyZXR1cm57aXNWaXNpYmxlKGUpe2NvbnN0IHQ9bi5jb2x1bW5JbmRleE1hcHBlci5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChlKTtyZXR1cm4gbnVsbCE9PXQmJiFuLmNvbHVtbkluZGV4TWFwcGVyLmlzSGlkZGVuKHQpfX19ZnVuY3Rpb24gRiQo'@; put 'bixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gUCQobixlKXsoZnVuY3Rpb24gYiR0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJv'@; put 'cigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5hZGQobil9dmFyIG9qZT1uZXcgV2Vha1NldCxhamU9bmV3IFdlYWtTZXQsc2plPW5ldyBXZWFrU2V0LGxqZT1uZXcgV2Vha1NldDtmdW5jdGlvbiBDJHQo'@; put 'KXtjb25zdCBuPW5ldyBTZXQsZT10aGlzLmhvdC5jb3VudENvbHMoKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtjb25zdCByPXRoaXMuaGVhZGVyc1N0YXRlTWFuYWdlci5nZXRIZWFkZXJUcmVlTm9kZSgtMSx0KTtpZighciljb250aW51ZTtsZXQgaT0hMTtyLndhbGtVcChvPT57aWYoITA9PT1v'@; put 'LmRhdGEuaXNDb2xsYXBzZWQpcmV0dXJuIGk9ITAsITF9KSxpJiZuLmFkZCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBTJHQobil7Y29uc3QgZT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLHQ9ISFlLmRyb3Bkb3duTWVudSxyPSEhZS5jb2xsYXBzaWJs'@; put 'ZUNvbHVtbnMsaT10aGlzLmhvdC5jb3VudENvbHMoKSxvPWUuc2FuaXRpemVyO24uaW5uZXJIVE1MPUYkKHRoaXMsc2plLEUkdCkuY2FsbCh0aGlzLGksdCxyLG8pfWZ1bmN0aW9uIEUkdChuLGUsdCxyKXtsZXQgaT0iIjtmb3IobGV0IG89MDtvPHRoaXMubGF5ZXJzQ291bnQ7bysrKXtsZXQg'@; put 'YT0iIjtmb3IobGV0IGw9MDtsPG47bCsrKXtjb25zdCB1PXRoaXMuaGVhZGVyc1N0YXRlTWFuYWdlci5nZXRIZWFkZXJTZXR0aW5ncyhvLGwpOyF1fHx1LmlzUGxhY2Vob2xkZXJ8fHUuaXNIaWRkZW58fHUuaXNSb3dzcGFuUGxhY2Vob2xkZXJ8fChhKz1gPHRoIGRhdGEtY29sdW1uPSIke2x9'@; put 'IiBjb2xzcGFuPSIke3UuY29sc3Bhbn0iJHsodS5yb3dzcGFuPz8wKT4xP2Agcm93c3Bhbj0iJHt1LnJvd3NwYW59ImA6IiJ9PiR7RiQodGhpcyxsamUsTSR0KS5jYWxsKHRoaXMsdSxlLHQscil9PC90aD5gKX1pKz1gPHRyPiR7YX08L3RyPmB9cmV0dXJuYDx0YWJsZSBkYXRhLWdob3N0LXRh'@; put 'YmxlPSJyZW5kZXJlZCI+PHRoZWFkPiR7aX08L3RoZWFkPjwvdGFibGU+YH1mdW5jdGlvbiBNJHQobixlLHQscil7cmV0dXJuYDxkaXYgY2xhc3M9InJlbGF0aXZlIj48c3BhbiBjbGFzcz0iY29sSGVhZGVyIj4keyJmdW5jdGlvbiI9PXR5cGVvZiByP3Iobi5sYWJlbCwiaW5uZXJIVE1MIik6'@; put 'bi5sYWJlbH08L3NwYW4+JHtlPyc8YnV0dG9uIGNsYXNzPSJjaGFuZ2VUeXBlIj48L2J1dHRvbj4nOiIifSR7dCYmKG4ub3JpZ0NvbHNwYW4+MXx8bi5jb2xzcGFuPjEpPyc8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZUluZGljYXRvciBleHBhbmRlZCI+LTwvZGl2Pic6IiJ9PC9kaXY+YH1jb25z'@; put 'dCBUJHQ9Y2xhc3MgdyR0e3NldExheWVyc0NvdW50KGUpe3JldHVybiB0aGlzLmxheWVyc0NvdW50PWUsdGhpc31nZXRXaWR0aChlKXtyZXR1cm4gdGhpcy53aWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZSkpfWJ1aWxkV2lkdGhzTWFwKCl7Y29u'@; put 'c3QgZT1GJCh0aGlzLG9qZSxDJHQpLmNhbGwodGhpcyksdD1lLnNpemU+MCxyPXRoaXMuaG90LmdldEN1cnJlbnRUaGVtZU5hbWUoKSxpPW5ldyBNYXA7dCYmZS5mb3JFYWNoKHU9Pntjb25zdCBnPXRoaXMud2lkdGhzTWFwLmdldFZhbHVlQXRJbmRleCh1KTtudWxsIT1nJiZpLnNldCh1LGcp'@; put 'fSksdGhpcy5jb250YWluZXI9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhbmRzb250YWJsZSIsImh0R2hvc3RUYWJsZSIsImh0QXV0b1NpemUiLCJodE5lc3RlZEhlYWRlcnMiKSxyJiZ0aGlzLmNvbnRh'@; put 'aW5lci5jbGFzc0xpc3QuYWRkKHIpLEYkKHRoaXMsYWplLFMkdCkuY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyKSx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lcik7Y29uc3Qgbz10aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS1n'@; put 'aG9zdC10YWJsZT0icmVuZGVyZWQiXScpO2lmKCFvKXJldHVybiB0aGlzLmNvbnRhaW5lci5yZW1vdmUoKSx2b2lkKHRoaXMuY29udGFpbmVyPW51bGwpO2NvbnN0IGE9by5xdWVyeVNlbGVjdG9yQWxsKCJ0aFtkYXRhLWNvbHVtbl0iKSxsPW5ldyBNYXA7Zm9yKGxldCB1PTA7dTxhLmxlbmd0'@; put 'aDt1Kyspe2NvbnN0IGc9YVt1XTtpZihnLmNvbFNwYW4+MXx8dm9pZCAwPT09Zy5kYXRhc2V0LmNvbHVtbiljb250aW51ZTtjb25zdCBFPU51bWJlci5wYXJzZUludChnLmRhdGFzZXQuY29sdW1uLDEwKTtsLnNldChFLGcpfXRoaXMud2lkdGhzTWFwLmNsZWFyKCksbC5mb3JFYWNoKCh1LGcp'@; put 'PT57Y29uc3QgRT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGcpO2lmKHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmlzSGlkZGVuKEUpKXJldHVybjtsZXQgTzt0JiZlLmhhcyhFKSYmKE89aS5nZXQoRSkpLG51bGw9PU8mJihPPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgp'@; put 'LHRoaXMud2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChFLE8pfSksdGhpcy5jb250YWluZXIucmVtb3ZlKCksdGhpcy5jb250YWluZXI9bnVsbH1jbGVhcigpe3RoaXMud2lkdGhzTWFwLmNsZWFyKCksdGhpcy5jb250YWluZXI9bnVsbH1jb25zdHJ1Y3Rvcih7aG90OmUsaGVhZGVyc1N0YXRl'@; put 'TWFuYWdlcjp0fSl7UCQodGhpcyxvamUpLFAkKHRoaXMsYWplKSxQJCh0aGlzLHNqZSksUCQodGhpcyxsamUpLHRoaXMubGF5ZXJzQ291bnQ9MCx0aGlzLmhvdD1lLHRoaXMuaGVhZGVyc1N0YXRlTWFuYWdlcj10LHRoaXMud2lkdGhzTWFwPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmNy'@; put 'ZWF0ZUFuZFJlZ2lzdGVySW5kZXhNYXAoIm5lc3RlZEhlYWRlcnMud2lkdGhzTWFwIiwicGh5c2ljYWxJbmRleFRvVmFsdWUiKX19O2Z1bmN0aW9uIGNqZShuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxl'@; put 'bWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gdWplKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIFhpKG4sZSl7'@; put 'cmV0dXJuIGZ1bmN0aW9uIEEkdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sdWplKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIFVjKG4sZSx0KXtjamUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIGFzKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gayR0KG4sZSx0KXtp'@; put 'ZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix1amUobixlLCJzZXQiKSx0KSx0fWZ1bmN0aW9uIFE3KG4sZSx0KXtpZigh'@; put 'ZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIEx4KG4sZSl7Y2plKG4sZSksZS5hZGQobil9Y29uc3QgZGplPSJuZXN0ZWRIZWFkZXJzIjt2YXIgc3M9bmV3IFdlYWtN'@; put 'YXAsSCQ9bmV3IFdlYWtNYXAsT3g9bmV3IFdlYWtNYXAsQ0Y9bmV3IFdlYWtNYXAsU0Y9bmV3IFdlYWtNYXAsSjM9bmV3IFdlYWtNYXAsX0M9bmV3IFdlYWtNYXAseUM9bmV3IFdlYWtNYXAsRUY9bmV3IFdlYWtNYXAsaGplPW5ldyBXZWFrU2V0LGZqZT1uZXcgV2Vha1NldCxWXz1uZXcgV2Vh'@; put 'a01hcCxNRj1uZXcgV2Vha1NldCxwamU9bmV3IFdlYWtTZXQsZ2plPW5ldyBXZWFrU2V0LG1qZT1uZXcgV2Vha1NldCx2M2U9bmV3IFdlYWtNYXAsXzNlPW5ldyBXZWFrTWFwLHkzZT1uZXcgV2Vha01hcCxiM2U9bmV3IFdlYWtNYXAsdzNlPW5ldyBXZWFrTWFwLEMzZT1uZXcgV2Vha01hcCxT'@; put 'M2U9bmV3IFdlYWtNYXAsRTNlPW5ldyBXZWFrTWFwLE0zZT1uZXcgV2Vha01hcCxUM2U9bmV3IFdlYWtNYXAseDNlPW5ldyBXZWFrTWFwLEEzZT1uZXcgV2Vha01hcCxrM2U9bmV3IFdlYWtNYXAsUjNlPW5ldyBXZWFrTWFwLEkzZT1uZXcgV2Vha01hcCxEM2U9bmV3IFdlYWtNYXAsTDNlPW5l'@; put 'dyBXZWFrTWFwLE8zZT1uZXcgV2Vha01hcCxOM2U9bmV3IFdlYWtNYXAsRjNlPW5ldyBXZWFrTWFwLFAzZT1uZXcgV2Vha01hcDtjbGFzcyBJJHQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gZGplfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJu'@; put 'IDI4MH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbZGplXX1lbmFibGVQbHVnaW4oKXtpZih0aGlzLmVuYWJsZWQpcmV0dXJuO2NvbnN0e25lc3RlZEhlYWRlcnM6ZX09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTsoIUFycmF5LmlzQXJyYXkoZSl8fCFBcnJheS5p'@; put 'c0FycmF5KGVbMF0pKSYmSGEoeWNgWW91ciBOZXN0ZWQgSGVhZGVycyBwbHVnaW4gY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLiBUaGUgc2V0dGluZ3MgaGFzIHRvIGJlXHgyMAogICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIGUucS4gW1snQTEn'@; put 'LCB7IGxhYmVsOiAnQTInLCBjb2xzcGFuOiAyIH1dXWApLHRoaXMuYWRkSG9vaygiaW5pdCIsWGkodGhpcyxMM2UpKSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLFhpKHRoaXMsTzNlKSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsWGkodGhpcyxOM2UpKSx0aGlzLmFkZEhv'@; put 'b2soImFmdGVyUmVtb3ZlQ29sIixYaSh0aGlzLEYzZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixYaSh0aGlzLGIzZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLFhpKHRoaXMsdzNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3Vz'@; put 'ZU92ZXIiLFhpKHRoaXMsQzNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZVVwIixYaSh0aGlzLFMzZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlU2VsZWN0aW9uSGlnaGxpZ2h0U2V0IixYaSh0aGlzLEUzZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLFhp'@; put 'KHRoaXMsTTNlKSksdGhpcy5hZGRIb29rKCJhZnRlclNlbGVjdGlvbiIsWGkodGhpcyxWXykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb25Gb2N1c1NldCIsWGkodGhpcyxWXykpLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld3BvcnRTY3JvbGxIb3Jpem9udGFsbHkiLFhpKHRoaXMsdjNl'@; put 'KSksdGhpcy5hZGRIb29rKCJhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsWGkodGhpcyx4M2UpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixYaSh0aGlzLGszZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29sdW1uSGVhZGVySGVpZ2h0IixYaSh0aGlzLFIzZSkpLHRoaXMu'@; put 'YWRkSG9vaygibW9kaWZ5Q29sdW1uSGVhZGVyVmFsdWUiLFhpKHRoaXMsSTNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXIiLFhpKHRoaXMsXzNlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVDb3B5IixYaSh0aGlzLHkzZSkpLHRoaXMuYWRkSG9vaygiYmVm'@; put 'b3JlU2VsZWN0Q29sdW1ucyIsWGkodGhpcyxUM2UpKSx0aGlzLmFkZEhvb2soImJlZm9yZVZpZXdSZW5kZXIiLFhpKHRoaXMsUDNlKSksdGhpcy5hZGRIb29rKCJhZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlIixYaSh0aGlzLEEzZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5'@; put 'Rm9jdXNlZEVsZW1lbnQiLFhpKHRoaXMsRDNlKSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLFhpKHRoaXMsSCQpKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5hZGRMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIsWGkodGhpcyxWXykp'@; put 'LHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmFkZExvY2FsSG9vaygiY2FjaGVVcGRhdGVkIixYaSh0aGlzLFZfKSksc3VwZXIuZW5hYmxlUGx1Z2luKCksdGhpcy51cGRhdGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXtpZighdGhpcy5ob3QudmlldylyZXR1cm47Y29uc3R7bmVzdGVkSGVhZGVy'@; put 'czplfT10aGlzLmhvdC5nZXRTZXR0aW5ncygpO2FzKHRoaXMsSjMsbnVsbCksYXModGhpcyxfQyxudWxsKSxYaSh0aGlzLHNzKS5zZXRDb2x1bW5zTGltaXQodGhpcy5ob3QuY291bnRDb2xzKCkpLEFycmF5LmlzQXJyYXkoZSkmJih0aGlzLmRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnM9WGko'@; put 'dGhpcyxzcykuc2V0U3RhdGUoZSkpLGFzKHRoaXMsRUYsWGkodGhpcyxzcykubWFwTm9kZXMoKHtvcmlnUm93c3Bhbjp0fSk9PnQ+MXx8dm9pZCAwKS5sZW5ndGg+MCksWGkodGhpcyxFRik/WXIodGhpcy5ob3Qucm9vdEVsZW1lbnQsImh0SGFzUm93c3BhbkhlYWRlcnMiKTprbyh0aGlzLmhv'@; put 'dC5yb290RWxlbWVudCwiaHRIYXNSb3dzcGFuSGVhZGVycyIpLHRoaXMuZGV0ZWN0ZWRPdmVybGFwcGVkSGVhZGVycyYmSGEoeWNgWW91ciBOZXN0ZWQgSGVhZGVycyBwbHVnaW4gc2V0dXAgY29udGFpbnMgb3ZlcmxhcHBpbmcgaGVhZGVycy4gVGhpcyBraW5kIG9mIGNvbmZpZ3VyYXRpb25c'@; put 'eDIwCiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLmApLHRoaXMuZW5hYmxlZCYmWGkodGhpcyxzcykuc3luY1Zpc2liaWxpdHkoaWplKHRoaXMuaG90KSksYXModGhpcyx5QywhMCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigp'@; put 'e3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlbW92ZUxvY2FsSG9vaygiY2FjaGVVcGRhdGVkIixYaSh0aGlzLFZfKSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVtb3ZlTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLFhpKHRoaXMsVl8pKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBl'@; put 'ci5yZW1vdmVMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIsWGkodGhpcyxIJCkpLHRoaXMuY2xlYXJDb2xzcGFucygpLFhpKHRoaXMsc3MpLmNsZWFyKCksYXModGhpcyxKMyxudWxsKSxhcyh0aGlzLF9DLG51bGwpLGtvKHRoaXMuaG90LnJvb3RFbGVtZW50LCJodEhhc1Jvd3NwYW5IZWFkZXJz'@; put 'IiksdGhpcy5naG9zdFRhYmxlLmNsZWFyKCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfWdldFN0YXRlTWFuYWdlcigpe3JldHVybiBYaSh0aGlzLHNzKX1nZXRMYXllcnNDb3VudCgpe3JldHVybiBYaSh0aGlzLHNzKS5nZXRMYXllcnNDb3VudCgpfWdldEhlYWRlclNldHRpbmdzKGUsdCl7cmV0'@; put 'dXJuIFhpKHRoaXMsc3MpLmdldEhlYWRlclNldHRpbmdzKGUsdCl9Y2xlYXJDb2xzcGFucygpe2lmKCF0aGlzLmhvdC52aWV3KXJldHVybjtjb25zdHtfd3Q6ZX09dGhpcy5ob3Qudmlldyx0PWUuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aCxyPWUud3RUYWJsZS5USEVBRCxp'@; put 'PWUud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lPy53dFRhYmxlLlRIRUFELG89ZS53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT8uY2xvbmU/Lnd0VGFibGUuVEhFQUQ/P251bGw7aWYociYmaSlmb3IobGV0IGE9MDthPHQ7YSsrKXtjb25zdCBsPXIuY2hpbGROb2Rl'@; put 'c1thXTtpZighbClicmVhaztjb25zdCB1PWkuY2hpbGROb2Rlc1thXSxnPW8/by5jaGlsZE5vZGVzW2FdOm51bGw7Zm9yKGxldCBFPTAsTz1sLmNoaWxkTm9kZXMubGVuZ3RoO0U8TztFKyspe2NvbnN0IFo9bC5jaGlsZE5vZGVzW0VdO2lmKFoucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiks'@; put 'Wi5yZW1vdmVBdHRyaWJ1dGUoInJvd3NwYW4iKSxaLnN0eWxlLmRpc3BsYXk9IiIsa28oWiwiaGlkZGVuSGVhZGVyIiksdSYmdS5jaGlsZE5vZGVzW0VdKXtjb25zdCBlZT11LmNoaWxkTm9kZXNbRV07ZWUucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksZWUucmVtb3ZlQXR0cmlidXRlKCJy'@; put 'b3dzcGFuIiksZWUuc3R5bGUuZGlzcGxheT0iIixrbyhlZSwiaGlkZGVuSGVhZGVyIil9aWYobyYmZyYmZy5jaGlsZE5vZGVzW0VdKXtjb25zdCBlZT1nLmNoaWxkTm9kZXNbRV07ZWUucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksZWUucmVtb3ZlQXR0cmlidXRlKCJyb3dzcGFuIiksZWUu'@; put 'c3R5bGUuZGlzcGxheT0iIixrbyhlZSwiaGlkZGVuSGVhZGVyIil9fX19aGVhZGVyUmVuZGVyZXJGYWN0b3J5KGUpe2NvbnN0IHQ9dGhpcy5ob3Qudmlldy5fd3QuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKTtyZXR1cm4ocixpKT0+e2NvbnN0e2NvbHVtbkluZGV4TWFwcGVyOm99'@; put 'PXRoaXMuaG90O2xldCBhPW8uZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChyKTtudWxsPT09YSYmKGE9ciksaS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSxpLnJlbW92ZUF0dHJpYnV0ZSgicm93c3BhbiIpLGkuc3R5bGUuZGlzcGxheT0iIixrbyhpLCJoaWRkZW5IZWFkZXIiKSxr'@; put 'byhpLCJoaWRkZW5IZWFkZXJUZXh0Iiksa28oaSwiaHRSb3dzcGFuSGVhZGVyIiksa28oaSwiaHRSb3dzcGFuQm90dG9tTGV2ZWwiKTtjb25zdCBsPVhpKHRoaXMsc3MpLmdldEhlYWRlclNldHRpbmdzKGUsYSk/P3t9LHtjb2xzcGFuOnUscm93c3BhbjpnLGlzSGlkZGVuOkUsaXNQbGFjZWhv'@; put 'bGRlcjpPLGlzUm93c3BhblBsYWNlaG9sZGVyOlosaGVhZGVyQ2xhc3NOYW1lczplZX09bDtpZihaPyhZcihpLCJoaWRkZW5IZWFkZXIiKSxpLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTpPfHxFP1lyKGksImhpZGRlbkhlYWRlciIpOihRNyh0aGlzLGhqZSxEJHQpLmNhbGwodGhpcyxpLHUsYSxy'@; put 'LHQpLFE3KHRoaXMsZmplLEwkdCkuY2FsbCh0aGlzLGksZyxlKSksdGhpcy5ob3Qudmlldy5hcHBlbmRDb2xIZWFkZXIoYSxpLChNZSxIZSk9PnRoaXMuZ2V0Q29sdW1uSGVhZGVyVmFsdWUoTWUsSGUpLGUpLGUrKGc/PzEpPT09dGhpcy5nZXRMYXllcnNDb3VudCgpfHxrbyhpLFsiYmVmb3Jl'@; put 'SGlkZGVuQ29sdW1uIiwiYWZ0ZXJIaWRkZW5Db2x1bW4iXSksIU8mJiFFJiYhWil7Y29uc3QgTWU9aS5xdWVyeVNlbGVjdG9yKCJkaXYucmVsYXRpdmUiKTtNZSYmZWUmJmVlLmxlbmd0aD4wJiYoa28oTWUsdGhpcy5ob3QuZ2V0Q29sdW1uTWV0YShhKS5oZWFkZXJDbGFzc05hbWU/P1tdKSxZ'@; put 'cihNZSxlZSkpfX19Z2V0Q29sdW1uSGVhZGVyVmFsdWUoZSx0KXtjb25zdHtpc0hpZGRlbjpyLGlzUGxhY2Vob2xkZXI6aSxpc1Jvd3NwYW5QbGFjZWhvbGRlcjpvfT1YaSh0aGlzLHNzKS5nZXRIZWFkZXJTZXR0aW5ncyh0LGUpPz97fTtyZXR1cm4gaXx8cnx8bz8iIjp0aGlzLmhvdC5nZXRD'@; put 'b2xIZWFkZXIoZSx0KX1kZXN0cm95KCl7WGkodGhpcyxzcykuY2xlYXIoKSxrbyh0aGlzLmhvdC5yb290RWxlbWVudCwiaHRIYXNSb3dzcGFuSGVhZGVycyIpLHN1cGVyLmRlc3Ryb3koKX1fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoZSl7aWYoIShlLnJvdz49MHx8ZS5jb2w8MCkp'@; put 'cmV0dXJuIFhpKHRoaXMsc3MpLmdldEhlYWRlclRyZWVOb2RlRGF0YShlLnJvdyxlLmNvbCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksTHgodGhpcyxoamUpLEx4KHRoaXMsZmplKSxMeCh0aGlzLE1GKSxMeCh0aGlzLHBqZSksTHgodGhpcyxnamUpLEx4KHRoaXMsbWplKSxVYyh0'@; put 'aGlzLHNzLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLEgkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLE94LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLENGLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLFNGLHt3'@; put 'cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLEozLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLF9DLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLHlDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLEVGLHt3cml0YWJsZToh'@; put 'MCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLFZfLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLHYzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVWModGhpcyxfM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFVjKHRoaXMseTNlLHt3cml0YWJsZTohMCx2YWx1'@; put 'ZTp2b2lkIDB9KSxVYyh0aGlzLGIzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVWModGhpcyx3M2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFVjKHRoaXMsQzNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLFMzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9p'@; put 'ZCAwfSksVWModGhpcyxFM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFVjKHRoaXMsTTNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLFQzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVWModGhpcyx4M2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0p'@; put 'LFVjKHRoaXMsQTNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLGszZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVWModGhpcyxSM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFVjKHRoaXMsSTNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0'@; put 'aGlzLEQzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVWModGhpcyxMM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFVjKHRoaXMsTzNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVYyh0aGlzLE4zZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVWModGhpcyxG'@; put 'M2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFVjKHRoaXMsUDNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxhcyh0aGlzLHNzLG5ldyB2JHQpLGFzKHRoaXMsSCQsKHtoaWRkZW5JbmRleGVzQ2hhbmdlZDp0fSk9Pnt0aGlzLmVuYWJsZWQmJihYaSh0aGlzLHNzKS5zeW5jVmlz'@; put 'aWJpbGl0eShpamUodGhpcy5ob3QpKSx0JiZ0aGlzLmdob3N0VGFibGUuYnVpbGRXaWR0aHNNYXAoKSl9KSxhcyh0aGlzLE94LG51bGwpLGFzKHRoaXMsQ0YsITEpLGFzKHRoaXMsU0YsbnVsbCksYXModGhpcyxKMyxudWxsKSxhcyh0aGlzLF9DLG51bGwpLGFzKHRoaXMseUMsITEpLHRoaXMu'@; put 'Z2hvc3RUYWJsZT1uZXcgVCR0KHtob3Q6dGhpcy5ob3QsaGVhZGVyc1N0YXRlTWFuYWdlcjpYaSh0aGlzLHNzKX0pLHRoaXMuZGV0ZWN0ZWRPdmVybGFwcGVkSGVhZGVycz0hMSxhcyh0aGlzLEVGLCExKSxhcyh0aGlzLFZfLCgpPT57Y29uc3QgdD10aGlzLmhvdD8uZ2V0U2VsZWN0ZWRSYW5n'@; put 'ZUFjdGl2ZSgpO2lmKCF0KXJldHVybjtjb25zdHtoaWdobGlnaHQ6cn09dDtpZihudWxsIT09ci5yb3cmJm51bGwhPT1yLmNvbCYmci5pc0hlYWRlcigpJiZyLmNvbD49MCYmbnVsbCE9PXIucm93JiZudWxsIT09ci5jb2wpe2NvbnN0e2lzUm93c3BhblBsYWNlaG9sZGVyOm99PVhpKHRoaXMs'@; put 'c3MpLmdldEhlYWRlclNldHRpbmdzKHIucm93LHIuY29sKT8/e30sYT1vP1E3KHRoaXMsTUYsViQpLmNhbGwodGhpcyxyLnJvdyxyLmNvbCk6ci5yb3csbD1YaSh0aGlzLHNzKS5maW5kTGVmdE1vc3RDb2x1bW5JbmRleChhLHIuY29sKSx1PXRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQu'@; put 'Z2V0Rm9jdXMoKSxnPXUudmlzdWFsQ2VsbFJhbmdlO2lmKG51bGw9PT1nKXJldHVybjtnLmhpZ2hsaWdodC5yb3c9YSxnLmhpZ2hsaWdodC5jb2w9bCxnLmZyb20ucm93PWEsZy5mcm9tLmNvbD1sLGcudG8ucm93PWEsZy50by5jb2w9bCx1LmNvbW1pdCgpfX0pLGFzKHRoaXMsdjNlLCh0LHIp'@; put 'PT57Y29uc3QgaT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWkpcmV0dXJuIHQ7Y29uc3R7aGlnaGxpZ2h0Om99PWkse25hdmlnYWJsZUhlYWRlcnM6YX09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSxsPXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5I'@; put 'ZWFkZXIoKSx1PWE/by5yb3c6WGkodGhpcyxTRik/LnJvdyxnPWw/dDpvLmNvbCxFPW51bGwhPXUmJm51bGwhPWcmJnU8MCYmZz49MDtpZihhcyh0aGlzLFNGLG51bGwpLCFFfHxudWxsPT11fHxudWxsPT1nKXJldHVybiB0O2NvbnN0IE89dGhpcy5ob3QuZ2V0Rmlyc3RGdWxseVZpc2libGVD'@; put 'b2x1bW4oKSxaPXRoaXMuaG90LmdldExhc3RGdWxseVZpc2libGVDb2x1bW4oKSxlZT1aLU8rMSx2ZT1YaSh0aGlzLHNzKS5maW5kTGVmdE1vc3RDb2x1bW5JbmRleCh1LGcpLE1lPVhpKHRoaXMsc3MpLmZpbmRSaWdodE1vc3RDb2x1bW5JbmRleCh1LGcpLEhlPU1lLXZlKzE7aWYodmU8TyYm'@; put 'TWU+WilyZXR1cm4gdmU7aWYobCl7bGV0IFdlPW51bGw7cmV0dXJuIHZlPj1PJiZNZT5aP0hlPmVlPyhyLnZhbHVlPSJzdGFydCIsV2U9dmUpOihyLnZhbHVlPSJlbmQiLFdlPU1lKTp2ZTxPJiZNZTw9WiYmKEhlPmVlPyhyLnZhbHVlPSJlbmQiLFdlPU1lKTooci52YWx1ZT0ic3RhcnQiLFdl'@; put 'PXZlKSksV2V9cmV0dXJuIHZlPD1PP3ZlOk1lfSksYXModGhpcyxfM2UsKHQscixpKT0+e2NvbnN0IG89WGkodGhpcyxzcykuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKHIsdCk7aWYoIW8pcmV0dXJuIHQ7Y29uc3R7Y29sdW1uQ3Vyc29yOmEsc2VsZWN0aW9uVHlwZTpsLHNlbGVjdGlvbldpZHRo'@; put 'OnV9PWkse2lzUm9vdDpnLGNvbHNwYW46RT0xfT1YaSh0aGlzLHNzKS5nZXRIZWFkZXJTZXR0aW5ncyhyLHQpPz97fTtpZihsPT09enVlKXtpZighZylyZXR1cm4gby5jb2x1bW5JbmRleH1lbHNlIGlmKGw9PT1JUmUmJihFPnUtYXx8IWcpKXJldHVybiBudWxsO3JldHVybiB0fSksYXModGhp'@; put 'cyx5M2UsKHQscix7Y29sdW1uSGVhZGVyc0NvdW50Oml9KT0+e2lmKDAhPT1pKWZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtjb25zdHtzdGFydFJvdzphLHN0YXJ0Q29sOmwsZW5kUm93OnUsZW5kQ29sOmd9PXJbb10sRT11LWErMTtpZihhPj0wfHwxPT1sLWcrMSlicmVhaztmb3IobGV0'@; put 'IFo9bDtaPD1nO1orKylmb3IobGV0IGVlPWE7ZWU8PXU7ZWUrKyl7Y29uc3QgdmU9RStlZSxNZT1aLWw7MCE9PU1lJiYhMT09PVhpKHRoaXMsc3MpLmdldEhlYWRlclRyZWVOb2RlRGF0YShlZSxaKT8uaXNSb290JiYodFt2ZV1bTWVdPSIiKX19fSksYXModGhpcyxiM2UsKHQscixpLG8pPT57'@; put 'YXModGhpcyxKMyxudWxsKSxhcyh0aGlzLF9DLG51bGwpLHRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKHIpJiYoby5jb2x1bW49ITApfSksYXModGhpcyx3M2UsKHQscik9PntpZihudWxsPT09ci5yb3d8fG51bGw9PT1yLmNvbClyZXR1cm47Y29uc3Qgbz10aGlzLl9nZXRI'@; put 'ZWFkZXJUcmVlTm9kZURhdGFCeUNvb3Jkcyh7cm93OnIucm93LGNvbDpyLmNvbH0pO2lmKCFvKXJldHVybjthcyh0aGlzLE94LHtyb3c6ci5yb3csY29sOnIuY29sLGNsb25lOigpPT5yLmNsb25lKCl9KSxhcyh0aGlzLENGLCEwKTtjb25zdHtzZWxlY3Rpb246YX09dGhpcy5ob3QsbD1hLmlz'@; put 'U2VsZWN0ZWQoKT9hLmdldFNlbGVjdGVkUmFuZ2UoKS5jdXJyZW50KCk6bnVsbDtsZXQgdT1udWxsO2NvbnN0e2NvbHVtbkluZGV4Omcsb3JpZ0NvbHNwYW46RX09byxPPSFhLmluSW5TZWxlY3Rpb24ocik7dC5zaGlmdEtleSYmbD91PShyLmNvbD8/MCk8KGwuZnJvbS5jb2w/PzApP1tsLmdl'@; put 'dFRvcEVuZENvcm5lcigpLmNvbD8/MCxnLHIucm93Pz8wXTooci5jb2w/PzApPihsLmZyb20uY29sPz8wKT9bbC5nZXRUb3BTdGFydENvcm5lcigpLmNvbD8/MCxnK0UtMSxyLnJvdz8/MF06W2csZytFLTEsci5yb3c/PzBdOih6Vyh0KXx8enYodCkmJk98fGhBZSh0KSkmJih1PVtnLGcrRS0x'@; put 'LHIucm93XSksbnVsbCE9PXUmJmEuc2VsZWN0Q29sdW1ucyguLi51KX0pLGFzKHRoaXMsQzNlLCh0LHIsaSxvKT0+e2lmKCF0aGlzLmhvdC52aWV3LmlzTW91c2VEb3duKCl8fG8uY29sdW1uKXJldHVybjtjb25zdCBhPXRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKHIpO2lm'@; put 'KCFhKXJldHVybjtjb25zdHtjb2x1bW5JbmRleDpsLG9yaWdDb2xzcGFuOnV9PWEsZz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWcpcmV0dXJuO2NvbnN0IEU9Zy5nZXRUb3BTdGFydENvcm5lcigpLE89Zy5nZXRCb3R0b21FbmRDb3JuZXIoKSx7ZnJvbTpafT1nO28u'@; put 'Y29sdW1uPSEwLG8uY2VsbD0hMDtjb25zdCBlZT1WcyhyLnJvdz8/MCwtMS8wLC0xKTtsZXQgdmU7dmU9KHIuY29sPz8wKTwoWi5jb2w/PzApP1tPLmNvbD8/MCxsLGVlXTooci5jb2w/PzApPihaLmNvbD8/MCk/W0UuY29sPz8wLGwrdS0xLGVlXTpbbCxsK3UtMSxlZV0sdGhpcy5ob3Quc2Vs'@; put 'ZWN0aW9uLnNlbGVjdENvbHVtbnMoLi4udmUpfSksYXModGhpcyxTM2UsKCk9Pnthcyh0aGlzLENGLCExKX0pLGFzKHRoaXMsRTNlLCgpPT57Y29uc3R7bmF2aWdhYmxlSGVhZGVyczp0fT10aGlzLmhvdC5nZXRTZXR0aW5ncygpO2lmKCF0aGlzLmhvdC52aWV3LmlzTW91c2VEb3duKCl8fCFY'@; put 'aSh0aGlzLENGKXx8IXQpcmV0dXJuO2NvbnN0IHI9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighcilyZXR1cm47Y29uc3QgaT1yLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLG89ci5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2wsYT1YaSh0aGlzLHNzKS5nZXRIZWFkZXJUcmVl'@; put 'Tm9kZURhdGEoWGkodGhpcyxPeCkucm93LFhpKHRoaXMsT3gpLmNvbCk7aWYoIWEpcmV0dXJuO2NvbnN0e2NvbHVtbkluZGV4Omwsb3JpZ0NvbHNwYW46dX09YTtpZihyLnNldEhpZ2hsaWdodChYaSh0aGlzLE94KSksbnVsbCE9PWkmJm51bGwhPT1vJiYodT5yLmdldFdpZHRoKCl8fGw8aXx8'@; put 'bCt1LTE+bykpe2NvbnN0IGc9WGkodGhpcyxzcykuZmluZFRvcE1vc3RFbnRpcmVIZWFkZXJMZXZlbChWcyhpLGwsbCt1LTEpLFZzKG8sbCxsK3UtMSkpO3IuaGlnaGxpZ2h0LnJvdz1nLHIuaGlnaGxpZ2h0LmNvbD1yLmZyb20uY29sfX0pLGFzKHRoaXMsTTNlLHQ9Pntjb25zdCByPXRoaXMu'@; put 'aG90LmdldFNlbGVjdGVkUmFuZ2VBY3RpdmUoKTtpZighcilyZXR1cm47Y29uc3R7aGlnaGxpZ2h0Oml9PXIse3JvdzpvLGNvbDphfT1YaSh0aGlzLF9DKT8/e307TnVtYmVyLmlzSW50ZWdlcihvKSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmKGkucm93IT09b3x8aS5jb2whPT1hKSYmYXModGhp'@; put 'cyxKMyxudWxsKTtjb25zdCBsPWkucm93Pz8wLHU9aS5jb2w/PzAsZz10LnJvdyxFPXQuY29sO2xldCBPPXUrdC5jb2wsWj1sK3Qucm93O2lmKDAhPT10LnJvdyYmTz49MCl7Y29uc3QgTWU9TWF0aC5zaWduKHQucm93KSxIZT0tMSxXZT0tdGhpcy5nZXRMYXllcnNDb3VudCgpO2xldCBhdD1a'@; put 'O2Zvcig7YXQ8PUhlJiZhdD49V2U7KXtjb25zdHtpc1Jvd3NwYW5QbGFjZWhvbGRlcjpDdH09WGkodGhpcyxzcykuZ2V0SGVhZGVyU2V0dGluZ3MoYXQsTyk/P3t9O2lmKCFDdClicmVhazthdCs9TWV9dC5yb3c9YXQtbCxaPWF0fWlmKDA9PT1nJiYwIT09RSYmbDwwKXtpZihudWxsIT09WGko'@; put 'dGhpcyxKMykpe2NvbnN0IEt0PVE3KHRoaXMsbWplLEYkdCkuY2FsbCh0aGlzLFhpKHRoaXMsSjMpLE8sTWF0aC5zaWduKEUpKTtudWxsIT09S3QmJihPPUt0LFo9WGkodGhpcyxKMykpfU88MCYmRTwwJiZudWxsIT09WGkodGhpcyxKMykmJihaPVhpKHRoaXMsSjMpKTtjb25zdCBNZT1YaSh0'@; put 'aGlzLHNzKS5maW5kTGVmdE1vc3RDb2x1bW5JbmRleChsLHUpLEhlPVhpKHRoaXMsc3MpLmZpbmRSaWdodE1vc3RDb2x1bW5JbmRleChsLHUpLHtpc1Jvd3NwYW5QbGFjZWhvbGRlcjpXZX09WGkodGhpcyxzcykuZ2V0SGVhZGVyU2V0dGluZ3MoWixPKT8/e307IShaPT09bCYmTz49TWUmJk88'@; put 'PUhlKSYmIShaPT09bCYmV2UmJkU+MCYmbDwtMSkmJihaPVE3KHRoaXMsTUYsViQpLmNhbGwodGhpcyxaLE8pKSx0LnJvdz1aLWwsUTcodGhpcyxwamUsTyR0KS5jYWxsKHRoaXMsWixPKT4xJiYhTnVtYmVyLmlzSW50ZWdlcihYaSh0aGlzLEozKSkmJmFzKHRoaXMsSjMsZnVuY3Rpb24geCR0'@; put 'KG4sZSx0LHIpe2lmKG48PXQpcmV0dXJuIG47Zm9yKGxldCBpPW4rMTtpPD0tMTtpKyspe2NvbnN0IG89cihpLGUpO2lmKCFvKWNvbnRpbnVlO2NvbnN0e2lzUGxhY2Vob2xkZXI6YSxpc1Jvd3NwYW5QbGFjZWhvbGRlcjpsLGlzSGlkZGVuOnV9PW87aWYoIWEmJiFsJiYhdSlyZXR1cm4gaX1y'@; put 'ZXR1cm4gbn0obCxPLC10aGlzLmdldExheWVyc0NvdW50KCksKEt0LHF0KT0+e2NvbnN0IGduPVhpKHRoaXMsc3MpLmdldEhlYWRlclNldHRpbmdzKEt0LHF0KTtyZXR1cm4gZ24/ey4uLmduLGlzUm93c3BhblBsYWNlaG9sZGVyOmduLmlzUm93c3BhblBsYWNlaG9sZGVyPz8hMX06bnVsbH0p'@; put 'KX1jb25zdCBlZT10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhaLE8pLHZlPWVlLmlzSGVhZGVyKCkmJihlZS5jb2w/Py0xKT49MDtpZigoIXZlfHwwIT09ZykmJmFzKHRoaXMsSjMsbnVsbCksdmUmJm51bGwhPT1pLnJvdyYmbnVsbCE9PWkuY29sJiZudWxsIT09ZWUucm93JiZudWxsIT09'@; put 'ZWUuY29sKXtjb25zdHtpc1Jvd3NwYW5QbGFjZWhvbGRlcjpNZX09WGkodGhpcyxzcykuZ2V0SGVhZGVyU2V0dGluZ3MoaS5yb3csaS5jb2wpPz97fSx7aXNSb3dzcGFuUGxhY2Vob2xkZXI6SGV9PVhpKHRoaXMsc3MpLmdldEhlYWRlclNldHRpbmdzKGVlLnJvdyxlZS5jb2wpPz97fTtsZXQg'@; put 'V2U9WGkodGhpcyxzcykuZmluZExlZnRNb3N0Q29sdW1uSW5kZXgoZWUucm93LGVlLmNvbCksYXQ9WGkodGhpcyxzcykuZmluZFJpZ2h0TW9zdENvbHVtbkluZGV4KGVlLnJvdyxlZS5jb2wpO2lmKEhlKXtjb25zdCBDdD1RNyh0aGlzLE1GLFYkKS5jYWxsKHRoaXMsZWUucm93LGVlLmNvbCk7'@; put 'V2U9WGkodGhpcyxzcykuZmluZExlZnRNb3N0Q29sdW1uSW5kZXgoQ3QsZWUuY29sKSxhdD1YaSh0aGlzLHNzKS5maW5kUmlnaHRNb3N0Q29sdW1uSW5kZXgoQ3QsZWUuY29sKX1pZihNZSl7Y29uc3QgQ3Q9UTcodGhpcyxNRixWJCkuY2FsbCh0aGlzLGkucm93LGkuY29sKTtXZT1YaSh0aGlz'@; put 'LHNzKS5maW5kTGVmdE1vc3RDb2x1bW5JbmRleChDdCxpLmNvbCksYXQ9WGkodGhpcyxzcykuZmluZFJpZ2h0TW9zdENvbHVtbkluZGV4KEN0LGkuY29sKSxFPDA/V2U9TWF0aC5tYXgoV2UsTWF0aC5taW4oaS5jb2wsZWUuY29sKSk6RT4wJiYoYXQ9TWF0aC5taW4oYXQsTWF0aC5tYXgoaS5j'@; put 'b2wsZWUuY29sKSkpfWlmKHQuY29sPDApe2NvbnN0IEF0PXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChpLmNvbD49V2UmJmkuY29sPD1hdD9XZS0xOmF0LC0xKTt0LmNvbD1udWxsPT09QXQ/LXRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxl'@; put 'Q29sdW1uc0luUmFuZ2UoMCxpLmNvbCk6LU1hdGgubWF4KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoQXQsaS5jb2wpLTEsMSl9ZWxzZSBpZih0LmNvbD4wKXtjb25zdCBBdD10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVu'@; put 'SW5kZXgoaS5jb2w+PVdlJiZpLmNvbDw9YXQ/YXQrMTpXZSwxKTtudWxsPT09QXQ/KHQuY29sPXRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoaS5jb2wsdGhpcy5ob3QuY291bnRDb2xzKCkpLE1lJiYodC5jb2wrPTEsaS5yb3c8LTEmJih0LnJvdz0xLHQuY29s'@; put 'PS0oaS5jb2wrMSkpKSk6dC5jb2w9TWF0aC5tYXgodGhpcy5ob3Qudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZShpLmNvbCxBdCktMSwxKX19YXModGhpcyxfQyx7cm93OmwrdC5yb3csY29sOnUrdC5jb2x9KX0pLGFzKHRoaXMsVDNlLCh0LHIsaSk9Pntjb25zdCBvPXQucm93'@; put 'LGE9dGhpcy5fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoe3JvdzpvLGNvbDp0LmNvbH0pLGw9dGhpcy5fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoe3JvdzpvLGNvbDpyLmNvbH0pO2FzKHRoaXMsU0YsaS5jbG9uZSgpKSxyLmNvbDx0LmNvbD8oYSYmKHQuY29sPWEuY29s'@; put 'dW1uSW5kZXgrYS5vcmlnQ29sc3Bhbi0xKSxsJiYoci5jb2w9bC5jb2x1bW5JbmRleCkpOnIuY29sPj10LmNvbCYmKGEmJih0LmNvbD1hLmNvbHVtbkluZGV4KSxsJiYoci5jb2w9bC5jb2x1bW5JbmRleCtsLm9yaWdDb2xzcGFuLTEpKX0pLGFzKHRoaXMseDNlLHQ9PntpZihYaSh0aGlzLHNz'@; put 'KS5nZXRMYXllcnNDb3VudCgpPjApe3QubGVuZ3RoPTA7Zm9yKGxldCByPTA7cjxYaSh0aGlzLHNzKS5nZXRMYXllcnNDb3VudCgpO3IrKyl0LnB1c2godGhpcy5oZWFkZXJSZW5kZXJlckZhY3RvcnkocikpfX0pLGFzKHRoaXMsQTNlLHQ9Pntjb25zdCByPVhpKHRoaXMsc3MpLmdldExheWVy'@; put 'c0NvdW50KCk7bGV0IGk9dC5zdGFydENvbHVtbixvPSEhcjtmb3IobGV0IGE9MDthPHI7YSsrKXtjb25zdCBsPVhpKHRoaXMsc3MpLmZpbmRMZWZ0TW9zdENvbHVtbkluZGV4KGEsdC5zdGFydENvbHVtbiksdT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZp'@; put 'c3VhbEluZGV4KGwpO2lmKGw+PTAmJihvPSExKSx3MCh1KSYmbnVsbCE9PXUmJnU8dC5zdGFydENvbHVtbil7aT11O2JyZWFrfX10LnN0YXJ0Q29sdW1uPW8/WGkodGhpcyxzcykuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKDAsaSk/LmNvbHVtbkluZGV4Pz9pOml9KSxhcyh0aGlzLGszZSwodCxy'@; put 'KT0+e2lmKCExPT09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hdXRvQ29sdW1uU2l6ZSlyZXR1cm4gdDtjb25zdCBpPXRoaXMuZ2hvc3RUYWJsZS5nZXRXaWR0aChyKT8/MDtyZXR1cm4gdD5pP3Q6aX0pLGFzKHRoaXMsUjNlLCgpPT57aWYoIVhpKHRoaXMsRUYpKXJldHVybjtjb25zdCB0PXRo'@; put 'aXMuaG90LnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmhvdC5yb290RWxlbWVudCkscj1OdW1iZXIucGFyc2VGbG9hdCh0LmdldFByb3BlcnR5VmFsdWUoIi0taHQtY2VsbC12ZXJ0aWNhbC1wYWRkaW5nIikpLGk9TnVtYmVyLnBhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVl'@; put 'KCItLWh0LWxpbmUtaGVpZ2h0IikpLG89TWF0aC5yb3VuZCgyKnIraSsxKTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKG8pP25ldyBBcnJheSh0aGlzLmdldExheWVyc0NvdW50KCkpLmZpbGwobyk6dm9pZCAwfSksYXModGhpcyxJM2UsKHQscixpKT0+e2NvbnN0e2xhYmVsOm99PVhpKHRoaXMs'@; put 'c3MpLmdldEhlYWRlclRyZWVOb2RlRGF0YShpLHIpPz97bGFiZWw6IiJ9O3JldHVybiBvfSksYXModGhpcyxEM2UsKHQscik9PntpZih0PDApcmV0dXJuIHRoaXMuaG90LmdldENlbGwodCxYaSh0aGlzLHNzKS5maW5kTGVmdE1vc3RDb2x1bW5JbmRleCh0LHIpLCEwKT8/dm9pZCAwfSksYXMo'@; put 'dGhpcyxMM2UsKCk9Pnt0aGlzLnVwZGF0ZVBsdWdpbigpfSksYXModGhpcyxPM2UsKHQscik9PntyfHx0aGlzLnVwZGF0ZVBsdWdpbigpfSksYXModGhpcyxOM2UsKHQscik9PntYaSh0aGlzLHNzKS5pbnNlcnRDb2x1bW5zKHQsciksYXModGhpcyx5QywhMCl9KSxhcyh0aGlzLEYzZSwodCxy'@; put 'KT0+e1hpKHRoaXMsc3MpLnJlbW92ZUNvbHVtbnModCxyKSxhcyh0aGlzLHlDLCEwKX0pLGFzKHRoaXMsUDNlLCgpPT57WGkodGhpcyx5QykmJih0aGlzLmdob3N0VGFibGUuc2V0TGF5ZXJzQ291bnQodGhpcy5nZXRMYXllcnNDb3VudCgpKS5idWlsZFdpZHRoc01hcCgpLGFzKHRoaXMseUMs'@; put 'ITEpKX0pfX1mdW5jdGlvbiBEJHQobixlLHQscixpKXtpZih2b2lkIDA9PT1lfHxlPD0xKXJldHVybjtjb25zdHt3dE92ZXJsYXlzOm99PXRoaXMuaG90LnZpZXcuX3d0LGE9by50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXk/LmNsb25lPy53dFRhYmxlLlRIRUFEPy5jb250YWlucyhuKSxs'@; put 'PW8uaW5saW5lU3RhcnRPdmVybGF5Py5jbG9uZT8ud3RUYWJsZS5USEVBRD8uY29udGFpbnMobik7by50b3BPdmVybGF5Py5jbG9uZT8ud3RUYWJsZS5USEVBRD8uY29udGFpbnMobikmJnQ8aSYmWXIobiwiaGlkZGVuSGVhZGVyVGV4dCIpO2NvbnN0IGc9YXx8bD9NYXRoLm1pbihlLGktcik6'@; put 'ZTtnPjEmJm4uc2V0QXR0cmlidXRlKCJjb2xzcGFuIixTdHJpbmcoZykpfWZ1bmN0aW9uIEwkdChuLGUsdCl7aWYodm9pZCAwPT09ZXx8ZTw9MSlyZXR1cm47Y29uc3Qgcj10K2U9PT10aGlzLmdldExheWVyc0NvdW50KCk7WXIobiwiaHRSb3dzcGFuSGVhZGVyIiksciYmWXIobiwiaHRSb3dz'@; put 'cGFuQm90dG9tTGV2ZWwiKSxuLnNldEF0dHJpYnV0ZSgicm93c3BhbiIsU3RyaW5nKGUpKX1mdW5jdGlvbiBWJChuLGUpe2NvbnN0IHQ9LXRoaXMuZ2V0TGF5ZXJzQ291bnQoKTtmb3IobGV0IHI9bjtyPj10O3ItLSl7Y29uc3R7aXNSb3dzcGFuUGxhY2Vob2xkZXI6aX09WGkodGhpcyxzcyku'@; put 'Z2V0SGVhZGVyU2V0dGluZ3MocixlKT8/e307aWYoIWkpcmV0dXJuIHJ9cmV0dXJuIG59ZnVuY3Rpb24gTyR0KG4sZSl7Y29uc3QgdD1YaSh0aGlzLHNzKS5maW5kTGVmdE1vc3RDb2x1bW5JbmRleChuLGUpLHtyb3dzcGFuOnI9MX09WGkodGhpcyxzcykuZ2V0SGVhZGVyU2V0dGluZ3Mobix0'@; put 'KT8/e307cmV0dXJuIHJ9ZnVuY3Rpb24gTiR0KG4sZSl7Y29uc3QgdD1YaSh0aGlzLHNzKS5nZXRIZWFkZXJTZXR0aW5ncyhuLGUpO2lmKCF0KXJldHVybiExO2NvbnN0e2lzUGxhY2Vob2xkZXI6cixpc1Jvd3NwYW5QbGFjZWhvbGRlcjppLGlzSGlkZGVuOm99PXQ7cmV0dXJuIGk/bjwtMToh'@; put 'ciYmIWkmJiFvfWZ1bmN0aW9uIEYkdChuLGUsdCl7aWYoIVstMSwxXS5pbmNsdWRlcyh0KSlyZXR1cm4gbnVsbDtmb3IobGV0IHI9ZTtyPj0wJiZyPHRoaXMuaG90LmNvdW50Q29scygpO3IrPXQpaWYoUTcodGhpcyxnamUsTiR0KS5jYWxsKHRoaXMsbixyKSlyZXR1cm4gcjtyZXR1cm4gbnVs'@; put 'bH1jb25zdCBIJHQ9Y2xhc3MgUCR0e3NldERhdGEoZSl7dGhpcy5kYXRhPWV9Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9Z2V0UmF3U291cmNlRGF0YSgpe2xldCBlPW51bGw7cmV0dXJuIHRoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksZT10aGlzLmhvdC5nZXRTb3Vy'@; put 'Y2VEYXRhKCksdGhpcy5wbHVnaW4uZW5hYmxlQ29yZUFQSU1vZGlmaWVycygpLGV9dXBkYXRlV2l0aERhdGEoZSl7dGhpcy5zZXREYXRhKGUpLHRoaXMucmV3cml0ZUNhY2hlKCl9cmV3cml0ZUNhY2hlKCl7dGhpcy5jYWNoZT17bGV2ZWxzOltdLGxldmVsQ291bnQ6MCxyb3dzOltdLG5vZGVJ'@; put 'bmZvOm5ldyBXZWFrTWFwfSxWYSgwLHRoaXMuZGF0YS5sZW5ndGgtMSxlPT57dGhpcy5jYWNoZU5vZGUodGhpcy5kYXRhW2VdLDAsbnVsbCl9KX1jYWNoZU5vZGUoZSx0LHIpeyFlfHwib2JqZWN0IiE9dHlwZW9mIGV8fCh0aGlzLmNhY2hlLmxldmVsc1t0XXx8KHRoaXMuY2FjaGUubGV2ZWxz'@; put 'W3RdPVtdLHRoaXMuY2FjaGUubGV2ZWxDb3VudCs9MSksdGhpcy5jYWNoZS5sZXZlbHNbdF0ucHVzaChlKSx0aGlzLmNhY2hlLnJvd3MucHVzaChlKSx0aGlzLmNhY2hlLm5vZGVJbmZvLnNldChlLHtwYXJlbnQ6cixyb3c6dGhpcy5jYWNoZS5yb3dzLmxlbmd0aC0xLGxldmVsOnR9KSx0aGlz'@; put 'Lmhhc0NoaWxkcmVuKGUpJiZlLl9fY2hpbGRyZW4mJlhuKGUuX19jaGlsZHJlbixpPT57dGhpcy5jYWNoZU5vZGUoaSx0KzEsZSl9KSl9Z2V0RGF0YU9iamVjdChlKXtyZXR1cm4gbnVsbD09ZT9udWxsOnRoaXMuY2FjaGUucm93c1tlXX1yZWFkVHJlZU5vZGVzKGUsdCxyLGkpe2xldCBvPSEx'@; put 'LGE9dDtpZigibnVtYmVyIiE9dHlwZW9mIGEpcmV0dXJuIGE7bGV0IGw9ZTtyZXR1cm4gbHx8KGw9e19fY2hpbGRyZW46dGhpcy5kYXRhfSxvPSEwLGEtPTEpLG51bGwhPXImJmE9PT1yP3tyZXN1bHQ6bCxlbmQ6ITB9Om51bGwhPWkmJmw9PT1pP3tyZXN1bHQ6YSxlbmQ6ITB9OihhKz0xLGwu'@; put 'X19jaGlsZHJlbiYmWG4obC5fX2NoaWxkcmVuLHU9PntpZih0aGlzLnBhcmVudFJlZmVyZW5jZS5zZXQodSxvP251bGw6bCksYT10aGlzLnJlYWRUcmVlTm9kZXModSxhLHIsaSksIm51bWJlciIhPXR5cGVvZiBhKXJldHVybiExfSksYSl9bW9ja1BhcmVudCgpe2NvbnN0IGU9dGhpcy5tb2Nr'@; put 'Tm9kZSgpO3JldHVybiBlLl9fY2hpbGRyZW49dGhpcy5kYXRhLGV9bW9ja05vZGUoKXtjb25zdCBlPXt9O3JldHVybiBhYyh0aGlzLmRhdGFbMF0sKHQscik9PntlW3JdPW51bGx9KSxlfWdldFJvd0luZGV4KGUpe3JldHVybiBudWxsPT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/bnVsbDp0aGlz'@; put 'LmNhY2hlLm5vZGVJbmZvLmdldChlKS5yb3d9Z2V0Um93SW5kZXhXaXRoaW5QYXJlbnQoZSl7bGV0IHQ9bnVsbDt0PSJudW1iZXIiIT10eXBlb2YgZT9lOnRoaXMuZ2V0RGF0YU9iamVjdChlKTtjb25zdCByPXRoaXMuZ2V0Um93UGFyZW50KGUpO3JldHVybiBudWxsPT1yP3RoaXMuZGF0YS5p'@; put 'bmRleE9mKHQpOnIuX19jaGlsZHJlbi5pbmRleE9mKHQpfWNvdW50QWxsUm93cygpe3JldHVybiB0aGlzLmNvdW50Q2hpbGRyZW4oe19fY2hpbGRyZW46dGhpcy5kYXRhfSl9Y291bnRDaGlsZHJlbihlKXtsZXQgdD0wO2NvbnN0IHI9Im51bWJlciI9PXR5cGVvZiBlP3RoaXMuZ2V0RGF0YU9i'@; put 'amVjdChlKTplO3JldHVybiByJiZyLl9fY2hpbGRyZW4/KFhuKHIuX19jaGlsZHJlbixpPT57dCs9MSxpLl9fY2hpbGRyZW4mJih0Kz10aGlzLmNvdW50Q2hpbGRyZW4oaSkpfSksdCk6MH1nZXRSb3dQYXJlbnQoZSl7bGV0IHQ7cmV0dXJuIHQ9Im51bWJlciIhPXR5cGVvZiBlP2U6dGhpcy5n'@; put 'ZXREYXRhT2JqZWN0KGUpLHRoaXMuZ2V0Um93T2JqZWN0UGFyZW50KHQpfWdldFJvd09iamVjdFBhcmVudChlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlP3RoaXMuY2FjaGUubm9kZUluZm8uZ2V0KGUpLnBhcmVudDpudWxsfWdldFJvd0xldmVsKGUpe2xldCB0PW51bGw7cmV0dXJu'@; put 'IHQ9Im51bWJlciIhPXR5cGVvZiBlP2U6dGhpcy5nZXREYXRhT2JqZWN0KGUpLHQ/dGhpcy5nZXRSb3dPYmplY3RMZXZlbCh0KTpudWxsfWdldFJvd09iamVjdExldmVsKGUpe3JldHVybiBudWxsPT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/bnVsbDp0aGlzLmNhY2hlLm5vZGVJbmZvLmdldChl'@; put 'KS5sZXZlbH1oYXNDaGlsZHJlbihlKXtjb25zdCB0PSJudW1iZXIiPT10eXBlb2YgZT90aGlzLmdldERhdGFPYmplY3QoZSk6ZTtyZXR1cm4hISh0JiZ0Ll9fY2hpbGRyZW4mJnQuX19jaGlsZHJlbi5sZW5ndGgpfWlzQ2hpbGQoZSl7cmV0dXJuIG51bGwhPT10aGlzLmdldFJvd1BhcmVudChl'@; put 'KX1nZXRDaGlsZChlLHQpe3JldHVybiBlLl9fY2hpbGRyZW4/Llt0XXx8bnVsbH1pc1Jvd0hpZ2hlc3RMZXZlbChlKXtyZXR1cm4hdGhpcy5pc0NoaWxkKGUpfWlzUGFyZW50KGUpe2NvbnN0IHQ9Im51bWJlciI9PXR5cGVvZiBlP3RoaXMuZ2V0RGF0YU9iamVjdChlKTplO3JldHVybiEoIXR8'@; put 'fCF0Ll9fY2hpbGRyZW58fDA9PT10Ll9fY2hpbGRyZW4ubGVuZ3RoKX1hZGRDaGlsZChlLHQpe2xldCByPXQ7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUFkZENoaWxkIixlLHIpO2xldCBpPW51bGw7ZSYmKGk9dGhpcy5nZXRSb3dJbmRleChlKSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9y'@; put 'ZUNyZWF0ZVJvdyIsaSt0aGlzLmNvdW50Q2hpbGRyZW4oZSkrMSwxKTtsZXQgbz1lO2V8fChvPXRoaXMubW9ja1BhcmVudCgpKSxvLl9fY2hpbGRyZW58fChvLl9fY2hpbGRyZW49W10pLHJ8fChyPXRoaXMubW9ja05vZGUoKSksby5fX2NoaWxkcmVuLnB1c2gociksdGhpcy5yZXdyaXRlQ2Fj'@; put 'aGUoKTtjb25zdCBhPXRoaXMuZ2V0Um93SW5kZXgocik/PzA7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhlcyhhLDEpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNyZWF0ZVJvdyIsYSwxKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJBZGRDaGlsZCIsZSxyKX1hZGRDaGls'@; put 'ZEF0SW5kZXgoZSx0LHIpe2xldCBvLGk9cjtpZihpfHwoaT10aGlzLm1vY2tOb2RlKCkpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVBZGRDaGlsZCIsZSxpLHQpLGUpe2NvbnN0IGE9dGhpcy5nZXRSb3dJbmRleChlKT8/MCxsPWErdCsxO3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVh'@; put 'dGVSb3ciLGwsMSksZS5fX2NoaWxkcmVuLnNwbGljZSh0LDAsaSksdGhpcy5yZXdyaXRlQ2FjaGUoKSx0aGlzLnBsdWdpbi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENlbGwoYSwiX19jaGlsZHJlbiIsZS5fX2NoaWxkcmVuLCJOZXN0ZWRSb3dz'@; put 'LmFkZENoaWxkQXRJbmRleCIpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXMobCwxKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93IixsLDEpLG89bH1lbHNlIHRoaXMucGx1Z2luLmRpc2Fi'@; put 'bGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3QuYWx0ZXIoImluc2VydF9yb3dfYWJvdmUiLHQsMSwiTmVzdGVkUm93cy5hZGRDaGlsZEF0SW5kZXgiKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksbz10aGlzLmdldFJvd0luZGV4KHRoaXMuZGF0YVt0XSk/PzA7aT10'@; put 'aGlzLmdldERhdGFPYmplY3Qobyk/P251bGwsdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGUsaSx0KX1hZGRTaWJsaW5nKGUsdD0iYmVsb3ciKXtjb25zdCByPXRoaXMudHJhbnNsYXRlVHJpbW1lZFJvdyhlKSxpPXRoaXMuZ2V0Um93UGFyZW50KHIpLG89dGhpcy5nZXRSb3dJ'@; put 'bmRleFdpdGhpblBhcmVudChyKTtzd2l0Y2godCl7Y2FzZSJiZWxvdyI6dGhpcy5hZGRDaGlsZEF0SW5kZXgoaSxvKzEsbnVsbCk7YnJlYWs7Y2FzZSJhYm92ZSI6dGhpcy5hZGRDaGlsZEF0SW5kZXgoaSxvLG51bGwpfX1kZXRhY2hGcm9tUGFyZW50KGUsdD0hMCl7bGV0IHI9bnVsbDtjb25z'@; put 'dCBpPVtdO2lmKEFycmF5LmlzQXJyYXkoZSk/KFZhKGVbMF0sZVsyXSxaPT57Y29uc3QgZWU9dGhpcy50cmFuc2xhdGVUcmltbWVkUm93KFopO2kucHVzaCh0aGlzLmdldERhdGFPYmplY3QoZWUpKX0pLFZhKDAsaS5sZW5ndGgtMixaPT57Y29uc3QgZWU9aVtaXTtudWxsIT1lZSYmdGhpcy5k'@; put 'ZXRhY2hGcm9tUGFyZW50KGVlLCExKX0pLHI9aVtpLmxlbmd0aC0xXT8/bnVsbCk6cj1lLCFyKXJldHVybjtjb25zdCBvPXRoaXMuZ2V0Um93SW5kZXgocik/PzAsYT10aGlzLmNvdW50Q2hpbGRyZW4ociksbD10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KHIpLHU9dGhpcy5nZXRSb3dQ'@; put 'YXJlbnQociksZz10aGlzLmdldFJvd1BhcmVudCh1KSxFPXRoaXMuZ2V0Um93SW5kZXgoZyk/PzA7bGV0IE89bnVsbDtpZih0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRGV0YWNoQ2hpbGQiLHUsciksbnVsbCE9bCl7Y29uc3QgWj1BcnJheS5mcm9tKG5ldyBBcnJheShvK2ErMSkua2V5cygp'@; put 'KS5zcGxpY2UoLTEqKGErMSkpO2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSZW1vdmVSb3ciLG8sYSsxLFosdGhpcy5wbHVnaW4ucGx1Z2luTmFtZSksdS5fX2NoaWxkcmVuLnNwbGljZShsLDEpLHRoaXMucmV3cml0ZUNhY2hlKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVtb3Zl'@; put 'Um93IixvLGErMSxaLHRoaXMucGx1Z2luLnBsdWdpbk5hbWUpLGcpe089RSt0aGlzLmNvdW50Q2hpbGRyZW4oZyk7Y29uc3QgZWU9dGhpcy5nZXRDaGlsZChnLHRoaXMuY291bnRDaGlsZHJlbihnKS0xKSx2ZT10aGlzLmdldFJvd0luZGV4KGVlKT8/MDt0aGlzLmhvdC5ydW5Ib29rcygiYmVm'@; put 'b3JlQ3JlYXRlUm93Iix2ZSsxLGErMSx0aGlzLnBsdWdpbi5wbHVnaW5OYW1lKSxnLl9fY2hpbGRyZW4ucHVzaChyKX1lbHNlIE89dGhpcy5ob3QuY291bnRSb3dzKCkrMSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93IixPLTIsYSsxLHRoaXMucGx1Z2luLnBsdWdpbk5hbWUp'@; put 'LHRoaXMuZGF0YS5wdXNoKHIpfXRoaXMucmV3cml0ZUNhY2hlKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93IixPLTIsYSsxLHRoaXMucGx1Z2luLnBsdWdpbk5hbWUpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckRldGFjaENoaWxkIix1LHIsdGhpcy5nZXRSb3dJbmRleChy'@; put 'KSksdCYmdGhpcy5ob3QucmVuZGVyKCl9ZmlsdGVyRGF0YShlLHQscil7Y29uc3QgaT1bXTtYbihyLG89Pntjb25zdCBhPXRoaXMuZ2V0RGF0YU9iamVjdChvKTtudWxsIT1hJiZpLnB1c2goYSl9KSxYbihpLG89Pntjb25zdCBhPXRoaXMuZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQobyksbD10'@; put 'aGlzLmdldFJvd1BhcmVudChvKTtudWxsPT09bD90aGlzLmRhdGEuc3BsaWNlKGEsMSk6bC5fX2NoaWxkcmVuLnNwbGljZShhLDEpfSksdGhpcy5yZXdyaXRlQ2FjaGUoKX1zcGxpY2VEYXRhKGUsdCxyKXtjb25zdCBpPXRoaXMuZ2V0RGF0YU9iamVjdChlLTEpO2xldCBvPW51bGwsYT1lO2km'@; put 'JmkuX19jaGlsZHJlbiYmMD09PWkuX19jaGlsZHJlbi5sZW5ndGg/KG89aSxhPTApOmU8dGhpcy5jb3VudEFsbFJvd3MoKSYmKG89dGhpcy5nZXRSb3dQYXJlbnQoZSksYT10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGUpKSxvP3I/by5fX2NoaWxkcmVuLnNwbGljZShhLHQsLi4ucik6'@; put 'by5fX2NoaWxkcmVuLnNwbGljZShhLHQpOnI/dGhpcy5kYXRhLnNwbGljZShhLHQsLi4ucik6dGhpcy5kYXRhLnNwbGljZShhLHQpLHRoaXMucmV3cml0ZUNhY2hlKCl9c3luY1Jvd1dpdGhSYXdTb3VyY2UoZSl7bGV0IHQ9ZSxyPXQ7ZG97cj10aGlzLmdldFJvd1BhcmVudChyKSxudWxsIT09'@; put 'ciYmKHQ9cil9d2hpbGUobnVsbCE9PXIpO3RoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3Quc2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KHQpLCJfX2NoaWxkcmVuIix0Ll9fY2hpbGRyZW4sIk5lc3RlZFJvd3Muc3lu'@; put 'Y1Jvd1dpdGhSYXdTb3VyY2UiKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCl9bW92ZVJvdyhlLHQscixpKXtjb25zdCBvPXQ9PT10aGlzLmhvdC5jb3VudFJvd3MoKSxhPXRoaXMuZ2V0Um93UGFyZW50KGUpLGw9dGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChlKSx1'@; put 'PWEuX19jaGlsZHJlbi5zbGljZShsLGwrMSksZz1lPnQ7bGV0IEU9dGhpcy5nZXRSb3dQYXJlbnQobz90LTE6dCk7bnVsbD09RSYmKEU9dGhpcy5nZXRSb3dQYXJlbnQodC0xKSksbnVsbD09RSYmKEU9dGhpcy5nZXREYXRhT2JqZWN0KHQtMSkpLEU/RS5fX2NoaWxkcmVufHwoRS5fX2NoaWxk'@; put 'cmVuPVtdKTooRT10aGlzLmdldERhdGFPYmplY3QodCksRS5fX2NoaWxkcmVuPVtdKTtjb25zdCBPPW98fHJ8fGk/RS5fX2NoaWxkcmVuLmxlbmd0aDp0aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KHQpLFo9YT09PUU7RS5fX2NoaWxkcmVuLnNwbGljZShPLDAsdVswXSksYS5fX2NoaWxk'@; put 'cmVuLnNwbGljZShsKyhnJiZaPzE6MCksMSksdGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShhKSxafHx0aGlzLnN5bmNSb3dXaXRoUmF3U291cmNlKEUpfXRyYW5zbGF0ZVRyaW1tZWRSb3coZSl7cmV0dXJuIHRoaXMucGx1Z2luLmNvbGxhcHNpbmdVST90aGlzLnBsdWdpbi5jb2xsYXBzaW5n'@; put 'VUkudHJhbnNsYXRlVHJpbW1lZFJvdyhlKTplfXVudHJhbnNsYXRlVHJpbW1lZFJvdyhlKXtyZXR1cm4gdGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJP3RoaXMucGx1Z2luLmNvbGxhcHNpbmdVSS51bnRyYW5zbGF0ZVRyaW1tZWRSb3coZSk6ZX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT1u'@; put 'dWxsLHRoaXMucGFyZW50UmVmZXJlbmNlPW5ldyBXZWFrTWFwLHRoaXMuY2FjaGU9e2xldmVsczpbXSxsZXZlbENvdW50OjAscm93czpbXSxub2RlSW5mbzpuZXcgV2Vha01hcH0sdGhpcy5ob3Q9dCx0aGlzLnBsdWdpbj1lfX0sSDNlPWNsYXNzIFYkdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMu'@; put 'aG90PXQsdGhpcy5wbHVnaW49ZX19O2NsYXNzIEo3IGV4dGVuZHMgSDNle3N0YXRpYyBnZXQgQ1NTX0NMQVNTRVMoKXtyZXR1cm57aW5kaWNhdG9yQ29udGFpbmVyOiJodF9uZXN0aW5nTGV2ZWxzIixwYXJlbnQ6Imh0X25lc3RpbmdQYXJlbnQiLGluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVs'@; put 'IixlbXB0eUluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVsX2VtcHR5IixidXR0b246Imh0X25lc3RpbmdCdXR0b24iLGV4cGFuZEJ1dHRvbjoiaHRfbmVzdGluZ0V4cGFuZCIsY29sbGFwc2VCdXR0b246Imh0X25lc3RpbmdDb2xsYXBzZSJ9fWFwcGVuZExldmVsSW5kaWNhdG9ycyhlLHQpe2Nv'@; put 'bnN0IHI9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhlKSxpPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdChyKTtpZighaSlyZXR1cm47Y29uc3Qgbz10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0xldmVsKHIpLGE9dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiRElWIilbMF0sbD1hLnF1ZXJ5'@; put 'U2VsZWN0b3IoInNwYW4ucm93SGVhZGVyIiksdT1hLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjbGFzc149Imh0X25lc3RpbmciXScpLGc9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncztpZihYbih1LEU9PntFJiZhLnJlbW92ZUNoaWxkKEUpfSksWXIodCxKNy5DU1NfQ0xBU1NFUy5pbmRp'@; put 'Y2F0b3JDb250YWluZXIpLG8pe2NvbnN0e3Jvb3REb2N1bWVudDpFfT10aGlzLmhvdCxPPWwuY2xvbmVOb2RlKCEwKTthLmlubmVySFRNTD0iIixWYSgwLG8tMSwoKT0+e2NvbnN0IFo9RS5jcmVhdGVFbGVtZW50KCJTUEFOIik7WXIoWixKNy5DU1NfQ0xBU1NFUy5lbXB0eUluZGljYXRvciks'@; put 'YS5hcHBlbmRDaGlsZChaKX0pLGEuYXBwZW5kQ2hpbGQoTyl9aWYodGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihpKSl7Y29uc3QgRT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7ZyYmS28oRSxbWyJhcmlhLWhpZGRlbiIsInRydWUiXV0pLFlyKHQsSjcu'@; put 'Q1NTX0NMQVNTRVMucGFyZW50KSx0aGlzLmNvbGxhcHNpbmdVSS5hcmVDaGlsZHJlbkNvbGxhcHNlZChyKT8oWXIoRSxgJHtKNy5DU1NfQ0xBU1NFUy5idXR0b259ICR7SjcuQ1NTX0NMQVNTRVMuZXhwYW5kQnV0dG9ufWApLGcmJktvKHQsW2FtKCExKV0pKTooWXIoRSxgJHtKNy5DU1NfQ0xB'@; put 'U1NFUy5idXR0b259ICR7SjcuQ1NTX0NMQVNTRVMuY29sbGFwc2VCdXR0b259YCksZyYmS28odCxbYW0oITApXSkpLGEuYXBwZW5kQ2hpbGQoRSl9fXVwZGF0ZVJvd0hlYWRlcldpZHRoKGUpe2xldCB0PWU7dHx8KHQ9dGhpcy5kYXRhTWFuYWdlci5jYWNoZS5sZXZlbENvdW50KTtsZXQgcj0x'@; put 'MTtyPTIqdGhpcy5ob3Quc3R5bGVzSGFuZGxlci5nZXRDU1NWYXJpYWJsZVZhbHVlKCJjZWxsLWhvcml6b250YWwtcGFkZGluZyIpLHRoaXMucm93SGVhZGVyV2lkdGhDYWNoZT1NYXRoLm1heCg1MCxyKzEwKnQrMjUpLHRoaXMuaG90LnJlbmRlcigpfWNvbnN0cnVjdG9yKGUsdCl7c3VwZXIo'@; put 'ZSx0KSx0aGlzLmRhdGFNYW5hZ2VyPXRoaXMucGx1Z2luLmRhdGFNYW5hZ2VyLHRoaXMuY29sbGFwc2luZ1VJPXRoaXMucGx1Z2luLmNvbGxhcHNpbmdVSSx0aGlzLnJvd0hlYWRlcldpZHRoQ2FjaGU9bnVsbH19Y29uc3QgdmplPUo3LGokdD1jbGFzcyBCJHQgZXh0ZW5kcyBIM2V7Y29sbGFw'@; put 'c2VDaGlsZHJlbihlLHQ9ITAscj0hMCl7Y29uc3QgaT1bXTtsZXQgbz1udWxsLGE9bnVsbCxsPW51bGw7cmV0dXJuIGlzTmFOKGUpPyhvPWUsYT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KG8pKToobz10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoZSksYT1lKSxvJiZ0aGlz'@; put 'LmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKG8pJiZYbihvLl9fY2hpbGRyZW4sdT0+e2kucHVzaCh0aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KHUpPz8tMSl9KSxsPXRoaXMuY29sbGFwc2VSb3dzKGksITAsITEpLHImJnRoaXMudHJpbVJvd3MobCksdCYmdGhpcy5yZW5kZXJBbmRBZGp1'@; put 'c3QoKSwtMT09PXRoaXMuY29sbGFwc2VkUm93cy5pbmRleE9mKGEpJiZ0aGlzLmNvbGxhcHNlZFJvd3MucHVzaChhKSxsfWNvbGxhcHNlTXVsdGlwbGVDaGlsZHJlbihlLHQ9ITAscj0hMCl7Y29uc3QgaT1bXTtYbihlLG89PntpLnB1c2goLi4udGhpcy5jb2xsYXBzZUNoaWxkcmVuKG8sITEs'@; put 'ITEpKX0pLHImJnRoaXMudHJpbVJvd3MoaSksdCYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKX1jb2xsYXBzZVJvdyhlLHQ9ITApe3RoaXMuY29sbGFwc2VSb3dzKFtlXSx0KX1jb2xsYXBzZVJvd3MoZSx0PSEwLHI9ITEpe2NvbnN0IGk9W107cmV0dXJuIFhuKGUsbz0+e2kucHVzaChvKSx0JiZ0'@; put 'aGlzLmNvbGxhcHNlQ2hpbGRSb3dzKG8saSl9KSxyJiZ0aGlzLnRyaW1Sb3dzKGkpLGl9Y29sbGFwc2VDaGlsZFJvd3MoZSx0PVtdLHIsaT0hMSl7dGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihlKSYmWG4odGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGUpLl9fY2hpbGRyZW4/'@; put 'P1tdLGE9Pntjb25zdCBsPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoYSk/Py0xO3QucHVzaChsKSx0aGlzLmNvbGxhcHNlQ2hpbGRSb3dzKGwsdCl9KSxpJiZ0aGlzLnRyaW1Sb3dzKHQpfWV4cGFuZFJvdyhlLHQ9ITApe3RoaXMuZXhwYW5kUm93cyhbZV0sdCl9ZXhwYW5kUm93cyhl'@; put 'LHQ9ITAscj0hMSl7Y29uc3QgaT1bXTtyZXR1cm4gWG4oZSxvPT57aS5wdXNoKG8pLHQmJnRoaXMuZXhwYW5kQ2hpbGRSb3dzKG8saSl9KSxyJiZ0aGlzLnVudHJpbVJvd3MoaSksaX1leHBhbmRDaGlsZFJvd3MoZSx0PVtdLHIsaT0hMSl7dGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihl'@; put 'KSYmWG4odGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGUpLl9fY2hpbGRyZW4/P1tdLGE9PntpZighdGhpcy5pc0FueVBhcmVudENvbGxhcHNlZChhKSl7Y29uc3QgbD10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KGEpPz8tMTt0LnB1c2gobCksdGhpcy5leHBhbmRDaGlsZFJv'@; put 'd3MobCx0KX19KSxpJiZ0aGlzLnVudHJpbVJvd3ModCl9ZXhwYW5kQ2hpbGRyZW4oZSx0PSEwLHI9ITApe2NvbnN0IGk9W107bGV0IG89bnVsbCxhPW51bGwsbD1udWxsO3JldHVybiBpc05hTihlKT8obz1lLGE9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChlKSk6KG89dGhpcy5kYXRh'@; put 'TWFuYWdlci5nZXREYXRhT2JqZWN0KGUpLGE9ZSksdGhpcy5jb2xsYXBzZWRSb3dzLnNwbGljZSh0aGlzLmNvbGxhcHNlZFJvd3MuaW5kZXhPZihhKSwxKSxvJiZ0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKG8pJiZYbihvLl9fY2hpbGRyZW4sdT0+e2NvbnN0IGc9dGhpcy5kYXRhTWFu'@; put 'YWdlci5nZXRSb3dJbmRleCh1KT8/LTE7aS5wdXNoKGcpfSksbD10aGlzLmV4cGFuZFJvd3MoaSwhMCwhMSksciYmdGhpcy51bnRyaW1Sb3dzKGwpLHQmJnRoaXMucmVuZGVyQW5kQWRqdXN0KCksbH1leHBhbmRNdWx0aXBsZUNoaWxkcmVuKGUsdD0hMCxyPSEwKXtjb25zdCBpPVtdO1huKGUs'@; put 'bz0+e2kucHVzaCguLi50aGlzLmV4cGFuZENoaWxkcmVuKG8sITEsITEpKX0pLHImJnRoaXMudW50cmltUm93cyhpKSx0JiZ0aGlzLnJlbmRlckFuZEFkanVzdCgpfWNvbGxhcHNlQWxsKCl7Y29uc3QgZT10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKSx0PVtdO1huKGUscj0+e3RoaXMuZGF0'@; put 'YU1hbmFnZXIuaGFzQ2hpbGRyZW4ocikmJnQucHVzaChyKX0pLHRoaXMuY29sbGFwc2VNdWx0aXBsZUNoaWxkcmVuKHQpLHRoaXMucmVuZGVyQW5kQWRqdXN0KCl9ZXhwYW5kQWxsKCl7Y29uc3QgZT10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKSx0PVtdO1huKGUscj0+e3RoaXMuZGF0YU1h'@; put 'bmFnZXIuaGFzQ2hpbGRyZW4ocikmJnQucHVzaChyKX0pLHRoaXMuZXhwYW5kTXVsdGlwbGVDaGlsZHJlbih0KSx0aGlzLnJlbmRlckFuZEFkanVzdCgpfXRyaW1Sb3dzKGUpe3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57WG4oZSx0PT57dGhpcy5wbHVnaW4uY29sbGFwc2VkUm93c01h'@; put 'cC5zZXRWYWx1ZUF0SW5kZXgodCwhMCl9KX0sITApfXVudHJpbVJvd3MoZSl7dGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oKCk9PntYbihlLHQ9Pnt0aGlzLnBsdWdpbi5jb2xsYXBzZWRSb3dzTWFwLnNldFZhbHVlQXRJbmRleCh0LCExKX0pfSwhMCl9YXJlQ2hpbGRyZW5Db2xsYXBzZWQoZSl7'@; put 'bGV0IHQ9aXNOYU4oZSk/ZTp0aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoZSkscj0hMDtyZXR1cm4gbnVsbD09dCYmKHQ9e19fY2hpbGRyZW46dGhpcy5kYXRhTWFuYWdlci5kYXRhfSksdCYmdGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbih0KSYmWG4odC5fX2NoaWxkcmVuLGk9'@; put 'Pntjb25zdCBvPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoaSk/Py0xO2lmKCF0aGlzLnBsdWdpbi5jb2xsYXBzZWRSb3dzTWFwLmdldFZhbHVlQXRJbmRleChvKSlyZXR1cm4gcj0hMSwhMX0pLHJ9aXNBbnlQYXJlbnRDb2xsYXBzZWQoZSl7bGV0IHQ9ZTtmb3IoO251bGwhPT10Oyl7'@; put 'dD10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudCh0KTtjb25zdCByPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgodCk/Py0xO2lmKHRoaXMuY29sbGFwc2VkUm93cy5pbmRleE9mKHIpPi0xKXJldHVybiEwfXJldHVybiExfXRvZ2dsZVN0YXRlKGUsdCxyKXtpZih0LmNvbD49MCly'@; put 'ZXR1cm47Y29uc3QgaT10aGlzLnRyYW5zbGF0ZVRyaW1tZWRSb3codC5yb3cpO0xhKEFhKGUpLHZqZS5DU1NfQ0xBU1NFUy5idXR0b24pJiYodGhpcy5hcmVDaGlsZHJlbkNvbGxhcHNlZChpKT90aGlzLmV4cGFuZENoaWxkcmVuKGkpOnRoaXMuY29sbGFwc2VDaGlsZHJlbihpKSxGMyhlKSl9'@; put 'dHJhbnNsYXRlVHJpbW1lZFJvdyhlKXtyZXR1cm4gdGhpcy5ob3QudG9QaHlzaWNhbFJvdyhlKX11bnRyYW5zbGF0ZVRyaW1tZWRSb3coZSl7cmV0dXJuIHRoaXMuaG90LnRvVmlzdWFsUm93KGUpfXJlbmRlckFuZEFkanVzdCgpe3RoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCks'@; put 'dGhpcy5ob3QucmVuZGVyKCl9Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpLHRoaXMuZGF0YU1hbmFnZXI9dGhpcy5wbHVnaW4uZGF0YU1hbmFnZXIsdGhpcy5jb2xsYXBzZWRSb3dzPVtdLHRoaXMuY29sbGFwc2VkUm93c1N0YXNoPXtzdGFzaDoocj0hMSk9Pnt0aGlzLmxhc3RDb2xsYXBz'@; put 'ZWRSb3dzPXRoaXMuY29sbGFwc2VkUm93cy5zbGljZSgwKSx0aGlzLmV4cGFuZE11bHRpcGxlQ2hpbGRyZW4odGhpcy5sYXN0Q29sbGFwc2VkUm93cz8/W10scil9LHNoaWZ0U3Rhc2g6KHIsaT12b2lkIDAsbz0xKT0+e2NvbnN0IGE9aT8/MS8wO1huKHRoaXMubGFzdENvbGxhcHNlZFJvd3M/'@; put 'P1tdLChsLHUpPT57bD49ciYmbDxhJiYodGhpcy5sYXN0Q29sbGFwc2VkUm93c1t1XT1sK28pfSl9LGFwcGx5U3Rhc2g6KHI9ITApPT57dGhpcy5jb2xsYXBzZU11bHRpcGxlQ2hpbGRyZW4odGhpcy5sYXN0Q29sbGFwc2VkUm93cz8/W10sciksdGhpcy5sYXN0Q29sbGFwc2VkUm93cz12b2lk'@; put 'IDB9LHRyaW1TdGFzaDoocixpKT0+e1ZhKHIscitpLTEsbz0+e2NvbnN0IGE9dGhpcy5sYXN0Q29sbGFwc2VkUm93cy5pbmRleE9mKG8pO2E+LTEmJnRoaXMubGFzdENvbGxhcHNlZFJvd3Muc3BsaWNlKGEsMSl9KX19fX07ZnVuY3Rpb24gX2plKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cg'@; put 'bmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfXZhciBWM2U9bmV3IFdlYWtNYXA7Y29uc3QgcSR0PWNsYXNzICQkdCBleHRlbmRzIEgzZXthcHBlbmRPcHRpb25zKGUpe2NvbnN0IHQ9W3trZXk6'@; put 'ImFkZF9jaGlsZCIsbmFtZSgpe3JldHVybiBTdHJpbmcodGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFZjZSkpfSxjYWxsYmFjazooKT0+e2NvbnN0IHI9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRBY3RpdmUoKSxpPXRoaXMuZGF0YU1hbmFnZXIudHJhbnNsYXRlVHJpbW1lZFJvdyhyPy5bMF0/PzAp'@; put 'LG89dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGkpO3RoaXMuZGF0YU1hbmFnZXIuYWRkQ2hpbGQobyl9LGRpc2FibGVkOigpPT57Y29uc3Qgcj10aGlzLmhvdC5nZXRTZWxlY3RlZEFjdGl2ZSgpO3JldHVybiFyfHwoclswXT8/MCk8MHx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2Vs'@; put 'ZWN0ZWRCeUNvbHVtbkhlYWRlcigpfHx0aGlzLmhvdC5jb3VudFJvd3MoKT49KHRoaXMuaG90LmdldFNldHRpbmdzKCkubWF4Um93cz8/MS8wKX19LHtrZXk6ImRldGFjaF9mcm9tX3BhcmVudCIsbmFtZSgpe3JldHVybiBTdHJpbmcodGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEJjZSkpfSxj'@; put 'YWxsYmFjazooKT0+e3RoaXMuZGF0YU1hbmFnZXIuZGV0YWNoRnJvbVBhcmVudCh0aGlzLmhvdC5nZXRTZWxlY3RlZEFjdGl2ZSgpPz9bXSl9LGRpc2FibGVkOigpPT57Y29uc3Qgcj10aGlzLmhvdC5nZXRTZWxlY3RlZEFjdGl2ZSgpLGk9dGhpcy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmlt'@; put 'bWVkUm93KHI/LlswXT8/MCk7cmV0dXJuIXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGkpfHwhcnx8KHJbMF0/PzApPDB8fHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5ob3QuY291bnRSb3dzKCk+PSh0aGlzLmhvdC5nZXRTZXR0aW5n'@; put 'cygpLm1heFJvd3M/PzEvMCl9fSx7bmFtZToiLS0tLS0tLS0tIn1dO3JldHVybiBWYSgwLGUuaXRlbXMubGVuZ3RoLTEscj0+e2lmKDA9PT1yKXJldHVybiBYbih0LChpLG8pPT57ZS5pdGVtcy5zcGxpY2UocitvLDAsaSl9KSwhMX0pLHRoaXMubW9kaWZ5Um93SW5zZXJ0aW5nT3B0aW9ucyhl'@; put 'KX1tb2RpZnlSb3dJbnNlcnRpbmdPcHRpb25zKGUpe3JldHVybiBWYSgwLGUuaXRlbXMubGVuZ3RoLTEsdD0+e2NvbnN0IHI9ZnVuY3Rpb24gWSR0KG4sZSl7cmV0dXJuIGZ1bmN0aW9uIHokdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sX2plKG4sZSwiZ2V0'@; put 'IikpfSh0aGlzLFYzZSlbZS5pdGVtc1t0XS5rZXldO251bGwhPXImJihlLml0ZW1zW3RdLmNhbGxiYWNrPXIpfSksZX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxmdW5jdGlvbiBaJHQobixlLHQpeyhmdW5jdGlvbiBVJHQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVy'@; put 'cm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfSh0aGlzLFYzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5kYXRhTWFuYWdlcj10aGlzLnBsdWdpbi5kYXRhTWFuYWdl'@; put 'cixmdW5jdGlvbiBHJHQobixlLHQpe3JldHVybiBmdW5jdGlvbiBXJHQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVl'@; put 'PXR9fShuLF9qZShuLGUsInNldCIpLHQpLHR9KHRoaXMsVjNlLHtyb3dfYWJvdmU6KHQscik9Pnt0aGlzLmRhdGFNYW5hZ2VyLmFkZFNpYmxpbmcocltyLmxlbmd0aC0xXS5zdGFydC5yb3csImFib3ZlIil9LHJvd19iZWxvdzoodCxyKT0+e3RoaXMuZGF0YU1hbmFnZXIuYWRkU2libGluZyhy'@; put 'W3IubGVuZ3RoLTFdLnN0YXJ0LnJvdywiYmVsb3ciKX19KX19O2NsYXNzIFgkdHtvbkJlZm9yZVJvd01vdmUoZSx0LHIsaSl7aWYodGhpcy5kaXNwbGF5QVBJQ29tcGF0aWJpbGl0eVdhcm5pbmcoe3Jvd3M6ZSxmaW5hbEluZGV4OnQsZHJvcEluZGV4OnIsbW92ZVBvc3NpYmxlOml9KSlyZXR1'@; put 'cm4hMTt0aGlzLm1vdmVkVG9Db2xsYXBzZWQ9ITE7Y29uc3QgYT1yPT09dGhpcy5ob3QuY291bnRSb3dzKCksbD1hP3RoaXMuaG90LmNvdW50U291cmNlUm93cygpOnRoaXMuZGF0YU1hbmFnZXIudHJhbnNsYXRlVHJpbW1lZFJvdyhyPz8wKTtsZXQgdT0hMDtjb25zdCBnPWUubWFwKHZlPT57'@; put 'aWYoIXUpcmV0dXJuLTE7Y29uc3QgTWU9dGhpcy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KHZlKTtyZXR1cm4gdT10aGlzLnNob3VsZEFsbG93TW92aW5nKE1lLGwpLE1lfSksRT0tMT09PWcuaW5kZXhPZihsKTtpZighdSlyZXR1cm4hMTtpZighRSlyZXR1cm47Y29uc3QgTz10'@; put 'aGlzLmdldEJhc2VQYXJlbnQoZyksWj10aGlzLmdldFRhcmdldFBhcmVudChhLGwpLGVlPU89PT1aO3JldHVybiB0aGlzLm1vdmVkVG9Db2xsYXBzZWQ9dGhpcy5jb2xsYXBzaW5nVUkuYXJlQ2hpbGRyZW5Db2xsYXBzZWQoWiksdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNo'@; put 'LnN0YXNoKCksdGhpcy5zaGlmdENvbGxhcHNpYmxlUGFyZW50c0xvY2F0aW9ucyhnLGwsZWUpLHRoaXMubW92ZVJvd3MoZyxsLFopLHRoaXMuZGF0YU1hbmFnZXIucmV3cml0ZUNhY2hlKCksdGhpcy5tb3ZlQ2VsbHNNZXRhKGcsbCksdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0'@; put 'YXNoLmFwcGx5U3Rhc2goITEpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJvd01vdmUiLGUsdCxyLGksaSYmdGhpcy5pc1Jvd09yZGVyQ2hhbmdlZChlLHQpKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLnNlbGVjdENlbGxzKGUsciksITF9ZGlzcGxheUFQSUNvbXBhdGliaWxpdHlXYXJuaW5n'@; put 'KGUpe2NvbnN0e3Jvd3M6dCxmaW5hbEluZGV4OnIsZHJvcEluZGV4OmksbW92ZVBvc3NpYmxlOm99PWU7bGV0IGE9ITE7cmV0dXJuIFh1KGkpJiYoSGEoeWNgU2luY2UgdmVyc2lvbiA4LjAuMCBvZiB0aGUgSGFuZHNvbnRhYmxlIHRoZSAnbW92ZVJvd3MnIG1ldGhvZCBpc24ndCB1c2VkIGZv'@; put 'ciBtb3Zpbmcgcm93c1x4MjAKICAgICAgd2hlbiB0aGUgTmVzdGVkUm93cyBwbHVnaW4gaXMgZW5hYmxlZC4gUGxlYXNlIHVzZSB0aGUgJ2RyYWdSb3dzJyBtZXRob2QgaW5zdGVhZC5gKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIix0LHIsaSxvLCExKSxhPSEwKSxhfXNob3Vs'@; put 'ZEFsbG93TW92aW5nKGUsdCl7cmV0dXJuISh0aGlzLmRhdGFNYW5hZ2VyLmlzUGFyZW50KGUpfHx0aGlzLmRhdGFNYW5hZ2VyLmlzUm93SGlnaGVzdExldmVsKGUpfHxlPT09dHx8MD09PXQpfWdldEJhc2VQYXJlbnQoZSl7cmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGVb'@; put 'MF0pfWdldFRhcmdldFBhcmVudChlLHQpe2xldCByPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGU/dC0xOnQpO3JldHVybiBudWxsPT1yJiYocj10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudCh0LTEpKSxyfXNoaWZ0Q29sbGFwc2libGVQYXJlbnRzTG9jYXRpb25zKGUsdCxy'@; put 'KXtyfHwoTWF0aC5tYXgoLi4uZSk8PXQ/dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2goZVswXSx0LC0xKmUubGVuZ3RoKTp0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFzaCh0LGVbMF0sZS5sZW5ndGgpKX1tb3ZlUm93'@; put 'cyhlLHQscil7Y29uc3QgaT10PT09dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChyKSt0aGlzLmRhdGFNYW5hZ2VyLmNvdW50Q2hpbGRyZW4ocikrMTt0aGlzLmhvdC5iYXRjaFJlbmRlcigoKT0+e2UuZm9yRWFjaChvPT57dGhpcy5kYXRhTWFuYWdlci5tb3ZlUm93KG8sdCx0aGlzLm1v'@; put 'dmVkVG9Db2xsYXBzZWQsaSl9KX0pfW1vdmVDZWxsc01ldGEoZSx0KXtjb25zdCByPVtdLGk9TWF0aC5tYXgoLi4uZSk8dDtlLmZvckVhY2gobz0+e3IucHVzaCh0aGlzLmhvdC5nZXRDZWxsTWV0YUF0Um93KG8pKX0pLHRoaXMuaG90LnNwbGljZUNlbGxzTWV0YShlWzBdLGUubGVuZ3RoKSx0'@; put 'aGlzLmhvdC5zcGxpY2VDZWxsc01ldGEodC0oaT9yLmxlbmd0aDowKSwwLC4uLnIpfXNlbGVjdENlbGxzKGUsdCl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgaT0wLG89MDtpZih0aGlzLm1vdmVkVG9Db2xsYXBzZWQpe2xldCBhPW51bGw7Y29uc3QgbD10Pz8wO2E9dGhpcy5kYXRhTWFuYWdlci50'@; put 'cmFuc2xhdGVUcmltbWVkUm93KChlW3ItMV0/PzApPGw/bC1yOmwpO2NvbnN0IHU9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQYXJlbnQobnVsbD09PWE/dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCktMTphLTEpLGc9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleCh1KT8/MDtpPXRoaXMu'@; put 'ZGF0YU1hbmFnZXIudW50cmFuc2xhdGVUcmltbWVkUm93KGcpLG89aX1lbHNlKGVbci0xXT8/MCk8KHQ/PzApPyhvPSh0Pz8wKS0xLGk9by1yKzEpOihpPXQ/PzAsbz1pK3ItMSk7dGhpcy5ob3Quc2VsZWN0Q2VsbHMoW1tpLDAsbyx0aGlzLmhvdC5jb3VudENvbHMoKS0xXV0sITEpfWlzUm93'@; put 'T3JkZXJDaGFuZ2VkKGUsdCl7cmV0dXJuIGUuc29tZSgocixpKT0+ci1pIT09dCl9Y29uc3RydWN0b3IoZSl7dGhpcy5tb3ZlZFRvQ29sbGFwc2VkPSExLHRoaXMucGx1Z2luPWUsdGhpcy5ob3Q9ZS5ob3QsdGhpcy5kYXRhTWFuYWdlcj1lLmRhdGFNYW5hZ2VyLHRoaXMuY29sbGFwc2luZ1VJ'@; put 'PWUuY29sbGFwc2luZ1VJfX1mdW5jdGlvbiB5amUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gZWgobixlKXtyZXR1cm4gZnVu'@; put 'Y3Rpb24gSiR0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix5amUobixlLCJnZXQiKSl9ZnVuY3Rpb24gRTEobixlLHQpeyhmdW5jdGlvbiBRJHQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2Ft'@; put 'ZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIHZkKG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gZXF0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVy'@; put 'cm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obix5amUobixlLCJzZXQiKSx0KSx0fWNvbnN0IEIkPSJuZXN0ZWRSb3dzIixiamU9QiQ7dmFyIFRGPW5ldyBXZWFrTWFwLGJDPW5ldyBXZWFrTWFwLGokPW5ldyBXZWFrTWFwLEIzZT1u'@; put 'ZXcgV2Vha01hcCxqM2U9bmV3IFdlYWtNYXAsVTNlPW5ldyBXZWFrTWFwLHozZT1uZXcgV2Vha01hcCxXM2U9bmV3IFdlYWtNYXAsWTNlPW5ldyBXZWFrTWFwLFozZT1uZXcgV2Vha01hcCxHM2U9bmV3IFdlYWtNYXAsJDNlPW5ldyBXZWFrTWFwLHEzZT1uZXcgV2Vha01hcCxLM2U9bmV3IFdl'@; put 'YWtNYXAsWDNlPW5ldyBXZWFrTWFwLFEzZT1uZXcgV2Vha01hcCxKM2U9bmV3IFdlYWtNYXAsZXBlPW5ldyBXZWFrTWFwLHRwZT1uZXcgV2Vha01hcCxVJD1uZXcgV2Vha01hcDtjbGFzcyBycXQgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gQiR9c3RhdGljIGdl'@; put 'dCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMzAwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtCJF19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5jb2xsYXBzZWRSb3dzTWFwPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFw'@; put 'KCJuZXN0ZWRSb3dzIixuZXcgYVQpLHRoaXMuZGF0YU1hbmFnZXI9bmV3IEgkdCh0aGlzLHRoaXMuaG90KSx0aGlzLmNvbGxhcHNpbmdVST1uZXcgaiR0KHRoaXMsdGhpcy5ob3QpLHRoaXMuaGVhZGVyc1VJPW5ldyB2amUodGhpcyx0aGlzLmhvdCksdGhpcy5jb250ZXh0TWVudVVJPW5ldyBx'@; put 'JHQodGhpcyx0aGlzLmhvdCksdGhpcy5yb3dNb3ZlQ29udHJvbGxlcj1uZXcgWCR0KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixlaCh0aGlzLEozZSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW5kZXIiLGVoKHRoaXMsZXBlKSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3UmVuZGVy'@; put 'IixlaCh0aGlzLHRwZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5Um93RGF0YSIsdGhpcy5vbk1vZGlmeVJvd0RhdGEuYmluZCh0aGlzKSksdGhpcy5hZGRIb29rKCJtb2RpZnlTb3VyY2VMZW5ndGgiLHRoaXMub25Nb2RpZnlTb3VyY2VMZW5ndGguYmluZCh0aGlzKSksdGhpcy5hZGRIb29rKCJi'@; put 'ZWZvcmVEYXRhU3BsaWNlIix0aGlzLm9uQmVmb3JlRGF0YVNwbGljZS5iaW5kKHRoaXMpKSx0aGlzLmFkZEhvb2soImZpbHRlckRhdGEiLGVoKHRoaXMsVTNlKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGVoKHRoaXMsejNlKSksdGhpcy5hZGRIb29r'@; put 'KCJhZnRlckdldFJvd0hlYWRlciIsZWgodGhpcyxXM2UpKSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsZWgodGhpcyxqM2UpKSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZVJvdyIsZWgodGhpcyxHM2UpKSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlUm93IixlaCh0'@; put 'aGlzLFozZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQWRkQ2hpbGQiLGVoKHRoaXMsJDNlKSksdGhpcy5hZGRIb29rKCJhZnRlckFkZENoaWxkIixlaCh0aGlzLHEzZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlRGV0YWNoQ2hpbGQiLGVoKHRoaXMsSzNlKSksdGhpcy5hZGRIb29rKCJhZnRlckRl'@; put 'dGFjaENoaWxkIixlaCh0aGlzLFgzZSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5Um93SGVhZGVyV2lkdGgiLGVoKHRoaXMsWTNlKSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZVJvdyIsZWgodGhpcyxRM2UpKSx0aGlzLmFkZEhvb2soImJlZm9yZVJvd01vdmUiLGVoKHRoaXMsQjNlKSksdGhp'@; put 'cy5hZGRIb29rKCJiZWZvcmVMb2FkRGF0YSIsZWgodGhpcyxVJCkpLHRoaXMuYWRkSG9vaygiYmVmb3JlVXBkYXRlRGF0YSIsZWgodGhpcyxVJCkpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuaG90LnJvd0luZGV4'@; put 'TWFwcGVyLnVucmVnaXN0ZXJNYXAoIm5lc3RlZFJvd3MiKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCk7Y29uc3QgZT10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKTt0aGlzLmVuYWJs'@; put 'ZVBsdWdpbigpLHRoaXMuZGF0YU1hbmFnZXIudXBkYXRlV2l0aERhdGEoZSksc3VwZXIudXBkYXRlUGx1Z2luKCl9cmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIik/LmFkZFNob3J0Y3V0KHtrZXlzOltbIkVudGVyIl1d'@; put 'LGNhbGxiYWNrOigpPT57Y29uc3QgZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk7aWYoIWUpcmV0dXJuITE7Y29uc3R7aGlnaGxpZ2h0OnR9PWUscj10aGlzLmNvbGxhcHNpbmdVSS50cmFuc2xhdGVUcmltbWVkUm93KHQucm93Pz8wKTtyZXR1cm4gdGhpcy5jb2xsYXBzaW5n'@; put 'VUkuYXJlQ2hpbGRyZW5Db2xsYXBzZWQocik/dGhpcy5jb2xsYXBzaW5nVUkuZXhwYW5kQ2hpbGRyZW4ocik6dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VDaGlsZHJlbihyKSwhMX0scnVuT25seUlmOigpPT57Y29uc3QgZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/Lmhp'@; put 'Z2hsaWdodDtyZXR1cm4hIShlJiZ0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlQWN0aXZlKCk/LmlzU2luZ2xlKCkmJnRoaXMuaG90LnNlbGVjdGlvbi5pc0NlbGxWaXNpYmxlKGUpJiYtMT09PWUuY29sJiZudWxsIT09ZS5yb3cmJmUucm93Pj0wKX0sZ3JvdXA6YmplLHJlbGF0aXZlVG9Hcm91'@; put 'cDpSNyxwb3NpdGlvbjoiYmVmb3JlIn0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIik/LnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoYmplKX1kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpe3ZkKHRoaXMsYkMsITAp'@; put 'fWVuYWJsZUNvcmVBUElNb2RpZmllcnMoKXt2ZCh0aGlzLGJDLCExKX1vbk1vZGlmeVJvd0RhdGEoZSl7aWYoIWVoKHRoaXMsYkMpKXJldHVybiB0aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoZSl9b25Nb2RpZnlTb3VyY2VMZW5ndGgoKXtpZighZWgodGhpcyxiQykpcmV0dXJuIHRo'@; put 'aXMuZGF0YU1hbmFnZXIuY291bnRBbGxSb3dzKCl9b25CZWZvcmVEYXRhU3BsaWNlKGUsdCxyKXtyZXR1cm4hKCFlaCh0aGlzLGJDKSYmIXRoaXMuZGF0YU1hbmFnZXIuaXNSb3dIaWdoZXN0TGV2ZWwoZSkmJih0aGlzLmRhdGFNYW5hZ2VyLnNwbGljZURhdGEoZSx0LFtyXSksMSkpfWRlc3Ry'@; put 'b3koKXtzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksRTEodGhpcyxURix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyxiQyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyxqJCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAw'@; put 'fSksRTEodGhpcyxCM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUxKHRoaXMsajNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxFMSh0aGlzLFUzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyx6M2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUx'@; put 'KHRoaXMsVzNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxFMSh0aGlzLFkzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyxaM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUxKHRoaXMsRzNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxFMSh0aGlz'@; put 'LCQzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyxxM2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUxKHRoaXMsSzNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxFMSh0aGlzLFgzZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyxRM2Us'@; put 'e3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUxKHRoaXMsSjNlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxFMSh0aGlzLGVwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRTEodGhpcyx0cGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEUxKHRoaXMsVSQse3dyaXRh'@; put 'YmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuZGF0YU1hbmFnZXI9bnVsbCx0aGlzLmhlYWRlcnNVST1udWxsLHRoaXMuY29sbGFwc2luZ1VJPW51bGwsdGhpcy5jb250ZXh0TWVudVVJPW51bGwsdGhpcy5yb3dNb3ZlQ29udHJvbGxlcj1udWxsLHRoaXMuY29sbGFwc2VkUm93c01hcD1udWxs'@; put 'LHZkKHRoaXMsVEYsITEpLHZkKHRoaXMsYkMsITEpLHZkKHRoaXMsaiQsITApLHZkKHRoaXMsQjNlLCh0LHIsaSxvKT0+dGhpcy5yb3dNb3ZlQ29udHJvbGxlci5vbkJlZm9yZVJvd01vdmUodCxyLGksbykpLHZkKHRoaXMsajNlLCh0LHIsaSk9Pnt0aGlzLmNvbGxhcHNpbmdVSS50b2dnbGVT'@; put 'dGF0ZSh0LHIsaSl9KSx2ZCh0aGlzLFUzZSwodCxyLGkpPT4odGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCksdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnRyaW1TdGFzaChpWzBdLHIpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJv'@; put 'd3NTdGFzaC5zaGlmdFN0YXNoKGlbMF0sbnVsbCwtMSpyKSx0aGlzLmRhdGFNYW5hZ2VyLmZpbHRlckRhdGEodCxyLGkpLHZkKHRoaXMsVEYsITApLHRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YSgpLnNsaWNlKCkpKSx2ZCh0aGlzLHozZSx0PT50aGlzLmNvbnRleHRNZW51VUkuYXBwZW5kT3B0'@; put 'aW9ucyh0KSksdmQodGhpcyxXM2UsKHQscik9Pnt0aGlzLmhlYWRlcnNVSS5hcHBlbmRMZXZlbEluZGljYXRvcnModCxyKX0pLHZkKHRoaXMsWTNlLHQ9Pk1hdGgubWF4KHRoaXMuaGVhZGVyc1VJLnJvd0hlYWRlcldpZHRoQ2FjaGU/PzAsdCkpLHZkKHRoaXMsWjNlLCh0LHIsaSxvKT0+e28h'@; put 'PT10aGlzLnBsdWdpbk5hbWUmJnRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9Pnt2ZCh0aGlzLFRGLCExKSx0aGlzLmhlYWRlcnNVSS51cGRhdGVSb3dIZWFkZXJXaWR0aCgpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCl9KX0pLHZkKHRoaXMs'@; put 'RzNlLCh0LHIsaSk9Pntjb25zdCBvPUFycmF5LmZyb20oaS5yZWR1Y2UoKGEsbCk9PntpZih0aGlzLmRhdGFNYW5hZ2VyLmlzUGFyZW50KGwpKXtjb25zdCB1PXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdChsKT8uX19jaGlsZHJlbjtyZXR1cm4gYS5hZGQobCksQXJyYXkuaXNBcnJh'@; put 'eSh1KSYmdS5mb3JFYWNoKGc9Pntjb25zdCBFPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoZyk7bnVsbCE9PUUmJmEuYWRkKEUpfSksYX1yZXR1cm4gYS5hZGQobCl9LG5ldyBTZXQpKTtpLmxlbmd0aD0wLGkucHVzaCguLi5vKX0pLHZkKHRoaXMsJDNlLCgpPT57dGhpcy5jb2xsYXBz'@; put 'aW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCl9KSx2ZCh0aGlzLHEzZSwodCxyKT0+e2NvbnN0IGk9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChyKTtudWxsIT09aSYmdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2goaSksdGhpcy5jb2xs'@; put 'YXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLmFwcGx5U3Rhc2goKSx0aGlzLmhlYWRlcnNVSS51cGRhdGVSb3dIZWFkZXJXaWR0aCh2b2lkIDApfSksdmQodGhpcyxLM2UsKCk9Pnt0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc3Rhc2goKX0pLHZkKHRoaXMsWDNlLCh0'@; put 'LHIsaSk9Pnt0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFzaChpLG51bGwsLTEpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgodm9pZCAwKX0pLHZk'@; put 'KHRoaXMsUTNlLCgpPT57dGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX0pLHZkKHRoaXMsSjNlLCgpPT57dGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgodm9pZCAwKX0pLHZkKHRoaXMsZXBlLCgpPT57ZWgodGhpcyxqJCkmJnRoaXMuaG90LnZpZXcmJih2ZCh0aGlz'@; put 'LGokLCExKSx0aGlzLmhvdC5yb290V2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuaG90JiZ0aGlzLmhvdC52aWV3JiYhdGhpcy5ob3QuaXNEZXN0cm95ZWQmJnRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKX0pKX0pLHZkKHRoaXMsdHBlLCh0LHIpPT57'@; put 'ZWgodGhpcyxURikmJihyLnNraXBSZW5kZXI9ITApfSksdmQodGhpcyxVJCx0PT57aWYoIWZ1bmN0aW9uIEskdChuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKSYmKDA9PT1uLmxlbmd0aHx8ZVJlKG4pKX0odCkpcmV0dXJuIG03KCJUaGUgTmVzdGVkIFJvd3MgcGx1Z2luIHJlcXVpcmVzIGFu'@; put 'IEFycmF5IG9mIE9iamVjdHMgYXMgYSBkYXRhc2V0IHRvIGJlIHByb3ZpZGVkLiBUaGUgcGx1Z2luIGhhcyBiZWVuIGRpc2FibGVkLiIpLHRoaXMuaG90LmdldFNldHRpbmdzKClbQiRdPSExLHZvaWQgdGhpcy5kaXNhYmxlUGx1Z2luKCk7dGhpcy5kYXRhTWFuYWdlci5zZXREYXRhKHQpLHRo'@; put 'aXMuZGF0YU1hbmFnZXIucmV3cml0ZUNhY2hlKCl9KX19ZnVuY3Rpb24gd2plKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBDamUobixl'@; put 'LHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gQ2MobixlKXtyZXR1cm4gZnVuY3Rpb24gaXF0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0'@; put 'LmNhbGwobik6ZS52YWx1ZX0obixDamUobixlLCJnZXQiKSl9ZnVuY3Rpb24gd0MobixlLHQpe3dqZShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gajQobixlLHQpe3JldHVybiBmdW5jdGlvbiBvcXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxl'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLENqZShuLGUsInNldCIpLHQpLHR9ZnVuY3Rpb24gbnBlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRv'@; put 'IGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fXZhciB4Rj1uZXcgV2Vha01hcCxOeD1uZXcgV2Vha01hcCx6JD1uZXcgV2Vha01hcCxyMz1uZXcgV2Vha01hcCxGeD1uZXcgV2Vha01hcCx3bT1uZXcgV2Vha01hcCxycGU9bmV3IFdlYWtNYXAsVyQ9bmV3IFdl'@; put 'YWtTZXQ7Y2xhc3MgU2ple2luc3RhbGwoKXtpZihDYyh0aGlzLHIzKT8uY29udGFpbmVyKXJldHVybjtjb25zdCBlPXN3YCR7J1xuPGRpdiBkYXRhLXJlZj0iY29udGFpbmVyIiBjbGFzcz0iaHQtcGFnaW5hdGlvbiBoYW5kc29udGFibGUiPlxuICA8ZGl2IGNsYXNzPSJodC1wYWdpbmF0aW9u'@; put 'X19pbm5lciI+XG4gICAgPGRpdiBkYXRhLXJlZj0icGFnZVNpemVTZWN0aW9uIiBjbGFzcz0iaHQtcGFnZS1zaXplLXNlY3Rpb24iPlxuICAgICAgPHNwYW4gZGF0YS1yZWY9InBhZ2VTaXplTGFiZWwiIGNsYXNzPSJodC1wYWdlLXNpemUtc2VjdGlvbl9fbGFiZWwiPjwvc3Bhbj5cbiAgICAg'@; put 'IDxkaXYgY2xhc3M9Imh0LXBhZ2Utc2l6ZS1zZWN0aW9uX19zZWxlY3Qtd3JhcHBlciI+XG4gICAgICAgIDxzZWxlY3QgZGF0YS1yZWY9InBhZ2VTaXplU2VsZWN0IiBuYW1lPSJwYWdlU2l6ZSIgZGF0YS1ob3QtaW5wdXQ+PC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAg'@; put 'ICA8ZGl2IGRhdGEtcmVmPSJwYWdlQ291bnRlclNlY3Rpb24iIGNsYXNzPSJodC1wYWdlLWNvdW50ZXItc2VjdGlvbiI+PC9kaXY+XG4gICAgPG5hdiBkYXRhLXJlZj0icGFnZU5hdlNlY3Rpb24iIGNsYXNzPSJodC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbiI+XG4gICAgICA8YnV0dG9uIGRh'@; put 'dGEtcmVmPSJmaXJzdCIgY2xhc3M9Imh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b24gaHQtcGFnZS1maXJzdCI+PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGRhdGEtcmVmPSJwcmV2IiBjbGFzcz0iaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbiBodC1wYWdlLXBy'@; put 'ZXYiPjwvYnV0dG9uPlxuICAgICAgPHNwYW4gZGF0YS1yZWY9InBhZ2VOYXZMYWJlbCIgY2xhc3M9Imh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19sYWJlbCI+PC9zcGFuPlxuICAgICAgPGJ1dHRvbiBkYXRhLXJlZj0ibmV4dCIgY2xhc3M9Imh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9u'@; put 'X19idXR0b24gaHQtcGFnZS1uZXh0Ij48L2J1dHRvbj5cbiAgICAgIDxidXR0b24gZGF0YS1yZWY9Imxhc3QiIGNsYXNzPSJodC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbl9fYnV0dG9uIGh0LXBhZ2UtbGFzdCI+PC9idXR0b24+XG4gICAgPC9uYXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4nfWAs'@; put 'e2NvbnRhaW5lcjp0LGZpcnN0OnIscHJldjppLG5leHQ6byxsYXN0OmEscGFnZVNpemVTZWxlY3Q6bH09ZS5yZWZzO2o0KHRoaXMscjMsZS5yZWZzKSx0LnNldEF0dHJpYnV0ZSgiZGlyIixDYyh0aGlzLHokKT8icnRsIjoibHRyIiksdC50YWJJbmRleD0tMTtjb25zdCBnPShFLE8sWik9PntP'@; put 'LmFkZEV2ZW50TGlzdGVuZXIoRSxlZT0+eyhFPT5FLmN1cnJlbnRUYXJnZXQuZGlzYWJsZWQpKGVlKXx8WigpfSl9O2coImNsaWNrIixyLCgpPT50aGlzLnJ1bkxvY2FsSG9va3MoImZpcnN0UGFnZUNsaWNrIikpLGcoImNsaWNrIixpLCgpPT50aGlzLnJ1bkxvY2FsSG9va3MoInByZXZQYWdl'@; put 'Q2xpY2siKSksZygiY2xpY2siLG8sKCk9PnRoaXMucnVuTG9jYWxIb29rcygibmV4dFBhZ2VDbGljayIpKSxnKCJjbGljayIsYSwoKT0+dGhpcy5ydW5Mb2NhbEhvb2tzKCJsYXN0UGFnZUNsaWNrIikpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoKT0+e2NvbnN0IEU9ImF1dG8iPT09'@; put 'bC52YWx1ZT8iYXV0byI6TnVtYmVyLnBhcnNlSW50KGwudmFsdWUsMTApO3RoaXMucnVuTG9jYWxIb29rcygicGFnZVNpemVDaGFuZ2UiLEUpfSksdGhpcy5zZXRDb3VudGVyU2VjdGlvblZpc2liaWxpdHkoITEpLHRoaXMuc2V0TmF2aWdhdGlvblNlY3Rpb25WaXNpYmlsaXR5KCExKSx0aGlz'@; put 'LnNldFBhZ2VTaXplU2VjdGlvblZpc2liaWxpdHkoITEpLENjKHRoaXMsTngpJiYoQ2ModGhpcyxOeCkuYXBwZW5kQ2hpbGQoZS5mcmFnbWVudCksWXIodCxbQ2ModGhpcyxGeCk/PyIiLCJoYW5kc29udGFibGUiXSkpfWdldENvbnRhaW5lcigpe3JldHVybiBDYyh0aGlzLHIzKS5jb250YWlu'@; put 'ZXJ9Z2V0Rm9jdXNhYmxlRWxlbWVudHMoKXtjb25zdHtmaXJzdDplLHByZXY6dCxuZXh0OnIsbGFzdDppLHBhZ2VTaXplU2VsZWN0Om99PUNjKHRoaXMscjMpO3JldHVybltvLGUsdCxyLGldLmZpbHRlcihhPT4hYS5kaXNhYmxlZCl9dXBkYXRlVGhlbWUoZSl7aWYoajQodGhpcyxGeCxlKSxD'@; put 'Yyh0aGlzLE54KSl7Y29uc3R7Y29udGFpbmVyOnR9PUNjKHRoaXMscjMpO2tvKHQsL2h0LXRoZW1lLS4qL2cpLENjKHRoaXMsRngpJiZZcih0LENjKHRoaXMsRngpKX1yZXR1cm4gdGhpc31nZXRIZWlnaHQoKXtyZXR1cm4gQ2ModGhpcyxyMykuY29udGFpbmVyLm9mZnNldEhlaWdodH11cGRh'@; put 'dGVTdGF0ZSh7Y3VycmVudFBhZ2U6ZSx0b3RhbFBhZ2VzOnQsZmlyc3RWaXNpYmxlUm93SW5kZXg6cixsYXN0VmlzaWJsZVJvd0luZGV4OmksdG90YWxSZW5kZXJlZFJvd3M6byxwYWdlU2l6ZUxpc3Q6YSxwYWdlU2l6ZTpsLGF1dG9QYWdlU2l6ZTp1LGNvdW50ZXJTdGFydFJvdzpnLGNvdW50'@; put 'ZXJFbmRSb3c6RX0pe2NvbnN0e2ZpcnN0Ok8scHJldjpaLG5leHQ6ZWUsbGFzdDp2ZSxwYWdlQ291bnRlclNlY3Rpb246TWUscGFnZU5hdlNlY3Rpb246SGUscGFnZU5hdkxhYmVsOldlLHBhZ2VTaXplU2VsZWN0OmF0LHBhZ2VTaXplTGFiZWw6Q3R9PUNjKHRoaXMscjMpLEF0PWc/P3IrMSxL'@; put 'dD1FPz9pKzEscXQ9Q2ModGhpcyx3bSkuY2FsbCh0aGlzLG11ZSx7c3RhcnQ6QXQsZW5kOkt0LHRvdGFsOm99KSxnbj1DYyh0aGlzLHdtKS5jYWxsKHRoaXMsdnVlLHtjdXJyZW50UGFnZTplLHRvdGFsUGFnZXM6dH0pLFRuPUNjKHRoaXMsd20pLmNhbGwodGhpcyxQWSk7TWUudGV4dENvbnRl'@; put 'bnQ9cXQsV2UudGV4dENvbnRlbnQ9Z24sYXQudGV4dENvbnRlbnQ9IiIsQ3QudGV4dENvbnRlbnQ9YCR7VG59OmAsS28oSGUsW04zKENjKHRoaXMsd20pLmNhbGwodGhpcyxwdWUpKV0pLEtvKGF0LFtOMyhDYyh0aGlzLHdtKS5jYWxsKHRoaXMsUFkpKV0pLENjKHRoaXMscnBlKS5jYWxsKHRo'@; put 'aXMsZ24pLGEuZm9yRWFjaCgkbj0+e2NvbnN0IFRyPSJhdXRvIj09PSRuP0NjKHRoaXMsd20pLmNhbGwodGhpcyxndWUpOiRuLHJpPW5ldyBPcHRpb24oU3RyaW5nKFRyPz8iIiksU3RyaW5nKCRuPz8iIikpOyh1JiYiYXV0byI9PT0kbnx8IXUmJiRuPT09bCkmJihyaS5zZWxlY3RlZD0hMCks'@; put 'YXQuYWRkKHJpKX0pO2NvbnN0IENuPTE9PT1lLHFyPWU9PT10O2lmKCJub25lIiE9PUhlLnN0eWxlLmRpc3BsYXkpe2NvbnN0ICRuPUNjKHRoaXMseEYpLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDtDbj8oWXIoTywiaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbi0tZGlz'@; put 'YWJsZWQiKSxZcihaLCJodC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbl9fYnV0dG9uLS1kaXNhYmxlZCIpLE8uZGlzYWJsZWQ9ITAsWi5kaXNhYmxlZD0hMCk6KGtvKE8sImh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b24tLWRpc2FibGVkIiksa28oWiwiaHQtcGFnZS1uYXZpZ2F0'@; put 'aW9uLXNlY3Rpb25fX2J1dHRvbi0tZGlzYWJsZWQiKSxPLmRpc2FibGVkPSExLFouZGlzYWJsZWQ9ITEpLHFyPyhZcihlZSwiaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbi0tZGlzYWJsZWQiKSxZcih2ZSwiaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb25fX2J1dHRvbi0tZGlz'@; put 'YWJsZWQiKSxlZS5kaXNhYmxlZD0hMCx2ZS5kaXNhYmxlZD0hMCk6KGtvKGVlLCJodC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbl9fYnV0dG9uLS1kaXNhYmxlZCIpLGtvKHZlLCJodC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbl9fYnV0dG9uLS1kaXNhYmxlZCIpLGVlLmRpc2FibGVkPSExLHZl'@; put 'LmRpc2FibGVkPSExKSxbTyxaLGVlLHZlXS5pbmNsdWRlcygkbikmJihaLmRpc2FibGVkP2VlLmZvY3VzKCk6ZWUuZGlzYWJsZWQmJlouZm9jdXMoKSl9cmV0dXJuIEtvKE8sW04zKENjKHRoaXMsd20pLmNhbGwodGhpcyxfdWUpKSx0TChDbildKSxLbyhaLFtOMyhDYyh0aGlzLHdtKS5jYWxs'@; put 'KHRoaXMseXVlKSksdEwoQ24pXSksS28oZWUsW04zKENjKHRoaXMsd20pLmNhbGwodGhpcyxidWUpKSx0TChxcildKSxLbyh2ZSxbTjMoQ2ModGhpcyx3bSkuY2FsbCh0aGlzLHd1ZSkpLHRMKHFyKV0pLHRoaXN9c2V0UGFnZVNpemVTZWN0aW9uVmlzaWJpbGl0eShlKXtjb25zdHtwYWdlU2l6'@; put 'ZVNlY3Rpb246dCxwYWdlU2l6ZVNlbGVjdDpyfT1DYyh0aGlzLHIzKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PWU/IiI6Im5vbmUiLHIuZGlzYWJsZWQ9IWUsbnBlKHRoaXMsVyQsaXBlKS5jYWxsKHRoaXMpLHRoaXN9c2V0Q291bnRlclNlY3Rpb25WaXNpYmlsaXR5KGUpe3JldHVybiBDYyh0'@; put 'aGlzLHIzKS5wYWdlQ291bnRlclNlY3Rpb24uc3R5bGUuZGlzcGxheT1lPyIiOiJub25lIixucGUodGhpcyxXJCxpcGUpLmNhbGwodGhpcyksdGhpc31zZXROYXZpZ2F0aW9uU2VjdGlvblZpc2liaWxpdHkoZSl7Y29uc3R7cGFnZU5hdlNlY3Rpb246dCxmaXJzdDpyLHByZXY6aSxuZXh0Om8s'@; put 'bGFzdDphfT1DYyh0aGlzLHIzKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PWU/IiI6Im5vbmUiLHIuZGlzYWJsZWQ9IWUsaS5kaXNhYmxlZD0hZSxvLmRpc2FibGVkPSFlLGEuZGlzYWJsZWQ9IWUsbnBlKHRoaXMsVyQsaXBlKS5jYWxsKHRoaXMpLHRoaXN9ZGVzdHJveSgpe0NjKHRoaXMscjMp'@; put 'Py5jb250YWluZXIucmVtb3ZlKCksajQodGhpcyxyMyxudWxsKX1jb25zdHJ1Y3Rvcih7cm9vdEVsZW1lbnQ6ZSx1aUNvbnRhaW5lcjp0LGlzUnRsOnIsdGhlbWVOYW1lOmkscGhyYXNlVHJhbnNsYXRvcjpvLGExMXlBbm5vdW5jZXI6YX0peyhmdW5jdGlvbiBhcXQobixlKXt3amUobixlKSxl'@; put 'LmFkZChuKX0pKHRoaXMsVyQpLHdDKHRoaXMseEYse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHdDKHRoaXMsTngse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHdDKHRoaXMseiQse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHdDKHRoaXMscjMse3dyaXRhYmxlOiEwLHZhbHVl'@; put 'OnZvaWQgMH0pLHdDKHRoaXMsRngse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHdDKHRoaXMsd20se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHdDKHRoaXMscnBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxqNCh0aGlzLHokLCExKSxqNCh0aGlzLHIzLG51bGwpLGo0KHRo'@; put 'aXMseEYsZSksajQodGhpcyxOeCx0KSxqNCh0aGlzLHokLHIpLGo0KHRoaXMsRngsaSksajQodGhpcyx3bSxvKSxqNCh0aGlzLHJwZSxhKSx0aGlzLmluc3RhbGwoKX19ZnVuY3Rpb24gaXBlKCl7Y29uc3R7Y29udGFpbmVyOm4scGFnZVNpemVTZWN0aW9uOmUscGFnZUNvdW50ZXJTZWN0aW9u'@; put 'OnQscGFnZU5hdlNlY3Rpb246cn09Q2ModGhpcyxyMyksaT0ibm9uZSIhPT1lLnN0eWxlLmRpc3BsYXl8fCJub25lIiE9PXQuc3R5bGUuZGlzcGxheXx8Im5vbmUiIT09ci5zdHlsZS5kaXNwbGF5O0NjKHRoaXMsTngpfHwoaT9ZcihDYyh0aGlzLHhGKS5xdWVyeVNlbGVjdG9yKCIuaHQtd3Jh'@; put 'cHBlciIpLCJodFBhZ2luYXRpb24iKTprbyhDYyh0aGlzLHhGKS5xdWVyeVNlbGVjdG9yKCIuaHQtd3JhcHBlciIpLCJodFBhZ2luYXRpb24iKSksbi5zdHlsZS5kaXNwbGF5PWk/IiI6Im5vbmUifVlsKFNqZSxfaCk7Y29uc3QgRWplPW5ldyBNYXAoW1siZml4ZWQiLGNsYXNzIGxxdHtjYWxj'@; put 'dWxhdGUoe3BhZ2VTaXplOmUsdG90YWxJdGVtczp0fSl7dGhpcy5wYWdlU2l6ZT1NYXRoLm1heChlLDEpLHRoaXMudG90YWxJdGVtcz10LHRoaXMudG90YWxQYWdlcz1NYXRoLm1heCgxLE1hdGguY2VpbCh0aGlzLnRvdGFsSXRlbXMvdGhpcy5wYWdlU2l6ZSkpfWdldFRvdGFsUGFnZXMoKXty'@; put 'ZXR1cm4gdGhpcy50b3RhbFBhZ2VzfWdldFN0YXRlKGUpe2lmKChlLT0xKTwwfHxlPj10aGlzLmdldFRvdGFsUGFnZXMoKSlyZXR1cm47Y29uc3QgdD1lKnRoaXMucGFnZVNpemU7cmV0dXJue3N0YXJ0SW5kZXg6dCxlbmRJbmRleDpNYXRoLm1heCgwLE1hdGgubWluKHQrdGhpcy5wYWdlU2l6'@; put 'ZS0xLHRoaXMudG90YWxJdGVtcy0xKSkscGFnZVNpemU6dGhpcy5wYWdlU2l6ZX19Y29uc3RydWN0b3IoKXt0aGlzLnBhZ2VTaXplPTEsdGhpcy50b3RhbEl0ZW1zPTAsdGhpcy50b3RhbFBhZ2VzPTB9fV0sWyJhdXRvIixjbGFzcyBjcXR7Y2FsY3VsYXRlKHtpdGVtc1NpemVQcm92aWRlcjpl'@; put 'LHZpZXdwb3J0U2l6ZVByb3ZpZGVyOnR9KXtjb25zdCByPWUoKSxpPXQoKSxvPVtdO2xldCBhPTAsbD0wLHU9MDtmb3IobGV0IGc9MDtnPHIubGVuZ3RoO2crKyl7Y29uc3QgRT1yW2ddO3U+MCYmbCtFPj1pJiYoby5wdXNoKHtzdGFydEluZGV4OmEsZW5kSW5kZXg6Zy0xLHBhZ2VTaXplOnV9'@; put 'KSxhPWcsbD0wLHU9MCksbCs9RSx1Kz0xfW8ucHVzaCh7c3RhcnRJbmRleDphLGVuZEluZGV4Ok1hdGgubWF4KDAsci5sZW5ndGgtMSkscGFnZVNpemU6dX0pLHRoaXMucGFnZXM9b31nZXRUb3RhbFBhZ2VzKCl7cmV0dXJuIHRoaXMucGFnZXMubGVuZ3RofWdldFN0YXRlKGUpe2lmKCEoKGUt'@; put 'PTEpPDB8fGU+PXRoaXMuZ2V0VG90YWxQYWdlcygpKSlyZXR1cm4gdGhpcy5wYWdlc1tlXX1jb25zdHJ1Y3Rvcigpe3RoaXMucGFnZXM9W119fV1dKTtmdW5jdGlvbiBNamUobil7cmV0dXJuIEVqZS5oYXMobil8fEpyKGBVbmtub3duIHBhZ2luYXRpb24gc3RyYXRlZ3kgdHlwZTogJHtufWAp'@; put 'LG5ldyhFamUuZ2V0KG4pKX1mdW5jdGlvbiBUamUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHhqZShuLGUsdCl7aWYoIWUuaGFzKG4p'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiB2byhuLGUpe3JldHVybiBmdW5jdGlvbiB1cXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVl'@; put 'fShuLHhqZShuLGUsImdldCIpKX1mdW5jdGlvbiBNMShuLGUsdCl7VGplKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBzbChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGRxdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVF'@; put 'cnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4seGplKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiB3aChuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVs'@; put 'ZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBDQyhuLGUpe1RqZShuLGUpLGUuYWRkKG4pfXNPZSgicGFnaW5hdGlvbiIsWyJuZXN0ZWRSb3dzIiwibWVyZ2VDZWxscyIsImZpeGVkUm93c1RvcCIsImZpeGVkUm93c0JvdHRvbSJdKTtjb25zdCBCXz0icGFnaW5hdGlvbiIs'@; put 'ZnF0PWBwbHVnaW46JHtCX31gLEFqZT15Y2BUaGUgXGBhdXRvXGAgcGFnZSBzaXplIHNldHRpbmcgcmVxdWlyZXMgdGhlIFxgYXV0b1Jvd1NpemVcYFx4MjAKICBwbHVnaW4gdG8gYmUgZW5hYmxlZC4gU2V0IHRoZSBcYGF1dG9Sb3dTaXplOiB0cnVlXGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24g'@; put 'dG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3IuYDt2YXIgUHg9bmV3IFdlYWtNYXAsUXU9bmV3IFdlYWtNYXAsSjE9bmV3IFdlYWtNYXAsQ2g9bmV3IFdlYWtNYXAsZXA9bmV3IFdlYWtNYXAsQUY9bmV3IFdlYWtNYXAsa0Y9bmV3IFdlYWtNYXAsU0M9bmV3IFdlYWtNYXAsUkY9bmV3IFdlYWtN'@; put 'YXAsb3BlPW5ldyBXZWFrTWFwLFkkPW5ldyBXZWFrU2V0LElGPW5ldyBXZWFrU2V0LGU5PW5ldyBXZWFrU2V0LGFwZT1uZXcgV2Vha1NldCxaJD1uZXcgV2Vha1NldCxramU9bmV3IFdlYWtTZXQsUmplPW5ldyBXZWFrU2V0LEckPW5ldyBXZWFrTWFwLHNwZT1uZXcgV2Vha01hcCxscGU9bmV3'@; put 'IFdlYWtNYXAsY3BlPW5ldyBXZWFrTWFwLHVwZT1uZXcgV2Vha01hcCxkcGU9bmV3IFdlYWtNYXAsaHBlPW5ldyBXZWFrTWFwLGZwZT1uZXcgV2Vha01hcCxwcGU9bmV3IFdlYWtNYXAsJCQ9bmV3IFdlYWtNYXA7Y2xhc3MgZ3F0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7'@; put 'cmV0dXJuIEJffXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDkwMH1zdGF0aWMgZ2V0IERFRkFVTFRfU0VUVElOR1MoKXtyZXR1cm57cGFnZVNpemU6MTAscGFnZVNpemVMaXN0OlsiYXV0byIsNSwxMCwyMCw1MCwxMDBdLGluaXRpYWxQYWdlOjEsc2hvd1BhZ2VTaXplOiEw'@; put 'LHNob3dDb3VudGVyOiEwLHNob3dOYXZpZ2F0aW9uOiEwLHVpQ29udGFpbmVyOm51bGx9fWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtCX119ZW5hYmxlUGx1Z2luKCl7aWYodGhpcy5lbmFibGVkKXJldHVybjtjb25zdCBlPXRoaXMuaG90LmdldFNldHRpbmdz'@; put 'KClbQl9dO3ZvaWQgMCE9PWU/LmluaXRpYWxQYWdlJiZzbCh0aGlzLFF1LHRoaXMuZ2V0U2V0dGluZygiaW5pdGlhbFBhZ2UiKSksdm9pZCAwIT09ZT8ucGFnZVNpemUmJnNsKHRoaXMsSjEsdGhpcy5nZXRTZXR0aW5nKCJwYWdlU2l6ZSIpKSxzbCh0aGlzLFNDLCEwPT09dGhpcy5ob3QucnVu'@; put 'SG9va3MoImhhc0V4dGVybmFsRGF0YVNvdXJjZSIpKSxzbCh0aGlzLFJGLG51bGwpLHNsKHRoaXMsUHgsdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcCh0aGlzLnBsdWdpbk5hbWUsImhpZGluZyIsITEpKSwiYXV0byI9PT12byh0aGlzLEoxKSYmIXRo'@; put 'aXMuaG90LmdldFBsdWdpbigiYXV0b1Jvd1NpemUiKT8uZW5hYmxlZCYmSGEoQWplKSxzbCh0aGlzLGVwLE1qZSgiYXV0byI9PT12byh0aGlzLEoxKT8iYXV0byI6ImZpeGVkIikpLHZvKHRoaXMsQ2gpfHwoc2wodGhpcyxDaCxuZXcgU2plKHtyb290RWxlbWVudDp0aGlzLmhvdC5yb290R3Jp'@; put 'ZEVsZW1lbnQsdWlDb250YWluZXI6dGhpcy5nZXRTZXR0aW5nKCJ1aUNvbnRhaW5lciIpLGlzUnRsOnRoaXMuaG90LmlzUnRsKCksdGhlbWVOYW1lOnRoaXMuaG90LmdldEN1cnJlbnRUaGVtZU5hbWUoKSxwaHJhc2VUcmFuc2xhdG9yOih0LHIpPT50aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhy'@; put 'YXNlKHQsciksYTExeUFubm91bmNlcjp0PT5mdW5jdGlvbiBYRHQobil7R3AmJihHcC50ZXh0Q29udGVudD0iIixzZXRUaW1lb3V0KCgpPT57R3AmJihHcC50ZXh0Q29udGVudD1uKX0sMTAwKSl9KFN0cmluZyh0Pz8iIikpfSkpLHdoKHRoaXMsYXBlLElqZSkuY2FsbCh0aGlzKSx2byh0aGlz'@; put 'LENoKS5hZGRMb2NhbEhvb2soImZpcnN0UGFnZUNsaWNrIiwoKT0+dGhpcy5maXJzdFBhZ2UoKSkuYWRkTG9jYWxIb29rKCJwcmV2UGFnZUNsaWNrIiwoKT0+dGhpcy5wcmV2UGFnZSgpKS5hZGRMb2NhbEhvb2soIm5leHRQYWdlQ2xpY2siLCgpPT50aGlzLm5leHRQYWdlKCkpLmFkZExvY2Fs'@; put 'SG9vaygibGFzdFBhZ2VDbGljayIsKCk9PnRoaXMubGFzdFBhZ2UoKSkuYWRkTG9jYWxIb29rKCJwYWdlU2l6ZUNoYW5nZSIsdD0+dGhpcy5zZXRQYWdlU2l6ZSh0KSkpLHIyKHRoaXMuaG90KSYmIXRoaXMuZ2V0U2V0dGluZygidWlDb250YWluZXIiKSYmdGhpcy5ob3QuZ2V0TGF5b3V0TWFu'@; put 'YWdlcigpLnJlZ2lzdGVyKEJfLHZvKHRoaXMsQ2gpLmdldENvbnRhaW5lcigpLHtzaWRlOiJib3R0b20iLHdlaWdodDoxMDB9KSx0aGlzLmFkZEhvb2soImluaXQiLHZvKHRoaXMsaHBlKSwtMSksdGhpcy5hZGRIb29rKCJiZWZvcmVTZWxlY3RBbGwiLHZvKHRoaXMsRyQpKSx0aGlzLmFkZEhv'@; put 'b2soImJlZm9yZVNlbGVjdENvbHVtbnMiLHZvKHRoaXMsRyQpKSx0aGlzLmFkZEhvb2soImJlZm9yZVNldFJhbmdlRW5kIix2byh0aGlzLHNwZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlU2VsZWN0aW9uSGlnaGxpZ2h0U2V0Iix2byh0aGlzLGxwZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlUGFz'@; put 'dGUiLHZvKHRoaXMsY3BlKSksdGhpcy5hZGRIb29rKCJhZnRlclZpZXdSZW5kZXIiLHZvKHRoaXMsdXBlKSksdGhpcy5hZGRIb29rKCJhZnRlckxhbmd1YWdlQ2hhbmdlIix2byh0aGlzLGZwZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlSGVpZ2h0Q2hhbmdlIix2byh0aGlzLGRwZSkpLHRoaXMu'@; put 'YWRkSG9vaygiYWZ0ZXJTZXRUaGVtZSIsdm8odGhpcyxwcGUpKSx0aGlzLmFkZEhvb2soImFmdGVyRGF0YVByb3ZpZGVyRmV0Y2giLHZvKHRoaXMsb3BlKSwtMSksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLHZvKHRoaXMsJCQpKSx3aCh0aGlz'@; put 'LGtqZSxtcXQpLmNhbGwodGhpcyksc3VwZXIuZW5hYmxlUGx1Z2luKCl9cmV2ZXJ0UGFnZVRvKGUpe2NvbnN0IHQ9dm8odGhpcyxRdSk7d2godGhpcyxZJCxncGUpLmNhbGwodGhpcyxlKSx0aGlzLmhvdC5zY3JvbGxWaWV3cG9ydFRvKHtyb3c6MH0pLHdoKHRoaXMsZTksal8pLmNhbGwodGhp'@; put 'cyksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGFnZUNoYW5nZSIsdCxlKX1yZXZlcnRQYWdlU2l6ZVRvKGUpe2NvbnN0IHQ9dm8odGhpcyxKMSk7d2godGhpcyxJRixxJCkuY2FsbCh0aGlzLGUpLHdoKHRoaXMsZTksal8pLmNhbGwodGhpcyksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGFn'@; put 'ZVNpemVDaGFuZ2UiLHQsZSl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSx3aCh0aGlzLGU5LGpfKS5jYWxsKHRoaXMpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZW1v'@; put 'dmVMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIsdm8odGhpcywkJCkpLnVucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lKSx3aCh0aGlzLFJqZSx2cXQpLmNhbGwodGhpcykscjIodGhpcy5ob3QpJiZ0aGlzLmhvdC5nZXRMYXlvdXRNYW5hZ2VyKCkudW5yZWdpc3RlcihCXywiYm90dG9tIiks'@; put 'dm8odGhpcyxDaCk/LmRlc3Ryb3koKSxzbCh0aGlzLENoLG51bGwpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1nZXRQYWdpbmF0aW9uRGF0YSgpe2NvbnN0IGU9dm8odGhpcyxlcCk/LmdldFRvdGFsUGFnZXMoKT8/MDtsZXQgdD0tMSxyPS0xO2lmKHZvKHRoaXMsU0MpKXtjb25zdCBvPXRoaXMu'@; put 'aG90LmNvdW50Um93cygpO28+MCYmKHQ9MCxyPW8tMSl9ZWxzZXtjb25zdCBvPXZvKHRoaXMsZXApPy5nZXRTdGF0ZSh2byh0aGlzLFF1KSk7aWYoIW8pcmV0dXJue2N1cnJlbnRQYWdlOnZvKHRoaXMsUXUpLHRvdGFsUGFnZXM6MCxwYWdlU2l6ZTowLHBhZ2VTaXplTGlzdDpbXSxhdXRvUGFn'@; put 'ZVNpemU6ITEsbnVtYmVyT2ZSZW5kZXJlZFJvd3M6MCxmaXJzdFZpc2libGVSb3dJbmRleDp0LGxhc3RWaXNpYmxlUm93SW5kZXg6cn07Y29uc3R7cGFnZVNpemU6YSxzdGFydEluZGV4Omx9PW8sdT10aGlzLmhvdC5jb3VudFJvd3MoKTtsZXQgZz0wLEU9bDtmb3IoO2c8YSYmIShFPj11KTsp'@; put 'dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy5ob3QudG9QaHlzaWNhbFJvdyhFKSl8fCgtMT09PXQmJih0PUUpLHI9RSxnKz0xKSxFKz0xfWNvbnN0IGk9dm8odGhpcyxlcCk/LmdldFN0YXRlKHZvKHRoaXMsUXUpKTtyZXR1cm57Y3VycmVudFBhZ2U6dm8odGhpcyxRdSks'@; put 'dG90YWxQYWdlczplLHBhZ2VTaXplOmk/LnBhZ2VTaXplPz92byh0aGlzLEoxKSxwYWdlU2l6ZUxpc3Q6Wy4uLnRoaXMuZ2V0U2V0dGluZygicGFnZVNpemVMaXN0Iik/P1tdXSxhdXRvUGFnZVNpemU6ImF1dG8iPT09dm8odGhpcyxKMSksbnVtYmVyT2ZSZW5kZXJlZFJvd3M6dGhpcy5ob3Qu'@; put 'cm93SW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKSxmaXJzdFZpc2libGVSb3dJbmRleDp0LGxhc3RWaXNpYmxlUm93SW5kZXg6cn19Z2V0Q3VycmVudFBhZ2UoKXtyZXR1cm4gdm8odGhpcyxRdSl9Z2V0Q3VycmVudFBhZ2VTaXplKCl7cmV0dXJuIHZvKHRoaXMsSjEp'@; put 'fXNldFBhZ2UoZSl7Y29uc3QgdD12byh0aGlzLFF1KTshMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVQYWdlQ2hhbmdlIix0LGUpJiYod2godGhpcyxZJCxncGUpLmNhbGwodGhpcyxlKSx3aCh0aGlzLGU5LGpfKS5jYWxsKHRoaXMpLHRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8oe3Jv'@; put 'dzowfSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGFnZUNoYW5nZSIsdCx2byh0aGlzLFF1KSkpfXJlc2V0UGFnZSgpe3RoaXMuc2V0UGFnZSh0aGlzLmdldFNldHRpbmcoImluaXRpYWxQYWdlIikpfXNldFBhZ2VTaXplKGUpe2NvbnN0IHQ9dm8odGhpcyxKMSk7ITEhPT10aGlzLmhvdC5y'@; put 'dW5Ib29rcygiYmVmb3JlUGFnZVNpemVDaGFuZ2UiLHQsZSkmJigiYXV0byI9PT1lJiYhdGhpcy5ob3QuZ2V0UGx1Z2luKCJhdXRvUm93U2l6ZSIpPy5lbmFibGVkJiZIYShBamUpLHdoKHRoaXMsSUYscSQpLmNhbGwodGhpcyxlKSx3aCh0aGlzLGU5LGpfKS5jYWxsKHRoaXMpLHRoaXMuaG90'@; put 'LnJ1bkhvb2tzKCJhZnRlclBhZ2VTaXplQ2hhbmdlIix0LHZvKHRoaXMsSjEpKSl9cmVzZXRQYWdlU2l6ZSgpe3RoaXMuc2V0UGFnZVNpemUodGhpcy5nZXRTZXR0aW5nKCJwYWdlU2l6ZSIpKX1yZXNldFBhZ2luYXRpb24oKXt0aGlzLnJlc2V0UGFnZSgpLHRoaXMucmVzZXRQYWdlU2l6ZSgp'@; put 'LHdoKHRoaXMsYXBlLElqZSkuY2FsbCh0aGlzKX1uZXh0UGFnZSgpe3RoaXMuc2V0UGFnZSh2byh0aGlzLFF1KSsxKX1wcmV2UGFnZSgpe3RoaXMuc2V0UGFnZSh2byh0aGlzLFF1KS0xKX1maXJzdFBhZ2UoKXt0aGlzLnNldFBhZ2UoMSl9bGFzdFBhZ2UoKXt0aGlzLnNldFBhZ2Uodm8odGhp'@; put 'cyxlcCk/LmdldFRvdGFsUGFnZXMoKT8/MSl9aGFzUHJldmlvdXNQYWdlKCl7cmV0dXJuIHZvKHRoaXMsUXUpPjF9aGFzTmV4dFBhZ2UoKXtyZXR1cm4gdm8odGhpcyxRdSk8KHZvKHRoaXMsZXApPy5nZXRUb3RhbFBhZ2VzKCk/PzApfWdldEN1cnJlbnRQYWdlRGF0YSgpe2NvbnN0e2ZpcnN0'@; put 'VmlzaWJsZVJvd0luZGV4OmUsbGFzdFZpc2libGVSb3dJbmRleDp0fT10aGlzLmdldFBhZ2luYXRpb25EYXRhKCk7cmV0dXJuLTE9PT1lfHwtMT09PXQ/W106dGhpcy5ob3QuZ2V0RGF0YShlLDAsdCx0aGlzLmhvdC5jb3VudENvbHMoKS0xKX1zaG93UGFnZVNpemVTZWN0aW9uKCl7dm8odGhp'@; put 'cyxDaCk/LnNldFBhZ2VTaXplU2VjdGlvblZpc2liaWxpdHkoITApLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBhZ2VTaXplVmlzaWJpbGl0eUNoYW5nZSIsITApfWhpZGVQYWdlU2l6ZVNlY3Rpb24oKXt2byh0aGlzLENoKT8uc2V0UGFnZVNpemVTZWN0aW9uVmlzaWJpbGl0eSghMSksdGhp'@; put 'cy5ob3QucnVuSG9va3MoImFmdGVyUGFnZVNpemVWaXNpYmlsaXR5Q2hhbmdlIiwhMSl9c2hvd1BhZ2VDb3VudGVyU2VjdGlvbigpe3ZvKHRoaXMsQ2gpPy5zZXRDb3VudGVyU2VjdGlvblZpc2liaWxpdHkoITApLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBhZ2VDb3VudGVyVmlzaWJpbGl0'@; put 'eUNoYW5nZSIsITApfWhpZGVQYWdlQ291bnRlclNlY3Rpb24oKXt2byh0aGlzLENoKT8uc2V0Q291bnRlclNlY3Rpb25WaXNpYmlsaXR5KCExKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJQYWdlQ291bnRlclZpc2liaWxpdHlDaGFuZ2UiLCExKX1zaG93UGFnZU5hdmlnYXRpb25TZWN0aW9u'@; put 'KCl7dm8odGhpcyxDaCk/LnNldE5hdmlnYXRpb25TZWN0aW9uVmlzaWJpbGl0eSghMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGFnZU5hdmlnYXRpb25WaXNpYmlsaXR5Q2hhbmdlIiwhMCl9aGlkZVBhZ2VOYXZpZ2F0aW9uU2VjdGlvbigpe3ZvKHRoaXMsQ2gpPy5zZXROYXZpZ2F0aW9u'@; put 'U2VjdGlvblZpc2liaWxpdHkoITEpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBhZ2VOYXZpZ2F0aW9uVmlzaWJpbGl0eUNoYW5nZSIsITEpfWRlc3Ryb3koKXtzbCh0aGlzLFB4LG51bGwpLHNsKHRoaXMsZXAsbnVsbCksdm8odGhpcyxDaCk/LmRlc3Ryb3koKSxzbCh0aGlzLENoLG51bGwp'@; put 'LHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxDQyh0aGlzLFkkKSxDQyh0aGlzLElGKSxDQyh0aGlzLGU5KSxDQyh0aGlzLGFwZSksQ0ModGhpcyxaJCksQ0ModGhpcyxramUpLENDKHRoaXMsUmplKSxNMSh0aGlzLFB4LHt3cml0YWJsZTohMCx2YWx1ZTp2'@; put 'b2lkIDB9KSxNMSh0aGlzLFF1LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLEoxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLENoLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLGVwLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxN'@; put 'MSh0aGlzLEFGLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLGtGLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLFNDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLFJGLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLG9w'@; put 'ZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTTEodGhpcyxHJCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTTEodGhpcyxzcGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE0xKHRoaXMsbHBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLGNwZSx7d3Jp'@; put 'dGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTTEodGhpcyx1cGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE0xKHRoaXMsZHBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLGhwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTTEodGhpcyxmcGUse3dyaXRhYmxl'@; put 'OiEwLHZhbHVlOnZvaWQgMH0pLE0xKHRoaXMscHBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxNMSh0aGlzLCQkLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxzbCh0aGlzLFB4LG51bGwpLHNsKHRoaXMsUXUsMSksc2wodGhpcyxKMSwxMCksc2wodGhpcyxDaCxudWxsKSxzbCh0'@; put 'aGlzLGVwLG51bGwpLHNsKHRoaXMsQUYsITEpLHNsKHRoaXMsa0YsITEpLHNsKHRoaXMsU0MsITEpLHNsKHRoaXMsUkYsbnVsbCksc2wodGhpcyxvcGUsKHtxdWVyeVBhcmFtZXRlcnM6dCx0b3RhbFJvd3M6cn0pPT57aWYoIXZvKHRoaXMsU0MpKXJldHVybjtjb25zdCBpPXZvKHRoaXMsUXUp'@; put 'LG89dm8odGhpcyxKMSkse3BhZ2U6YSxwYWdlU2l6ZTpsfT10OyJudW1iZXIiPT10eXBlb2YgYSYmYT49MSYmd2godGhpcyxZJCxncGUpLmNhbGwodGhpcyxhKSwiYXV0byI9PT1sP3doKHRoaXMsSUYscSQpLmNhbGwodGhpcywiYXV0byIpOiJudW1iZXIiPT10eXBlb2YgbCYmbD49MSYmd2go'@; put 'dGhpcyxJRixxJCkuY2FsbCh0aGlzLGwpLHZvKHRoaXMsU0MpJiYibnVtYmVyIj09dHlwZW9mIHImJnI+PTAmJnNsKHRoaXMsUkYsciksd2godGhpcyxlOSxqXykuY2FsbCh0aGlzKSxpIT09dm8odGhpcyxRdSkmJnRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBhZ2VDaGFuZ2UiLGksdm8odGhp'@; put 'cyxRdSkpLG8hPT12byh0aGlzLEoxKSYmdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGFnZVNpemVDaGFuZ2UiLG8sdm8odGhpcyxKMSkpfSksc2wodGhpcyxHJCwodCxyKT0+e2NvbnN0e2ZpcnN0VmlzaWJsZVJvd0luZGV4OmksbGFzdFZpc2libGVSb3dJbmRleDpvfT10aGlzLmdldFBhZ2lu'@; put 'YXRpb25EYXRhKCk7KHZvKHRoaXMsUXUpPjF8fHQucm93Pj0wKSYmKHQucm93PWkpLHIucm93PW99KSxzbCh0aGlzLHNwZSx0PT57aWYodGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpKXtjb25zdHtsYXN0VmlzaWJsZVJvd0luZGV4OnJ9PXRoaXMuZ2V0UGFn'@; put 'aW5hdGlvbkRhdGEoKTt0LnJvdz1yfX0pLHNsKHRoaXMsbHBlLCgpPT57aWYoIXRoaXMuaG90LmdldFNldHRpbmdzKCkubmF2aWdhYmxlSGVhZGVycylyZXR1cm47Y29uc3QgdD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKHQmJiF0LmlzU2luZ2xlKCkpe2NvbnN0e2hpZ2hs'@; put 'aWdodDpyfT10LGk9dC5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxvPXQuZ2V0Qm90dG9tRW5kQ29ybmVyKCkucm93O251bGwhPT1yLnJvdyYmbnVsbCE9PWkmJm51bGwhPT1vJiYoci5yb3c9VnMoci5yb3csaSxvKSl9fSksc2wodGhpcyxjcGUsKHQscik9Pntjb25zdHtmaXJzdFZpc2libGVS'@; put 'b3dJbmRleDppLGxhc3RWaXNpYmxlUm93SW5kZXg6b309dGhpcy5nZXRQYWdpbmF0aW9uRGF0YSgpO2lmKC0xPT09aXx8LTE9PT1vKXJldHVybiExO3IuZm9yRWFjaCgoe3N0YXJ0Um93OmF9KT0+e2lmKDA9PT10Lmxlbmd0aClyZXR1cm47Y29uc3QgbD1NYXRoLm1pbih0Lmxlbmd0aC0oby1h'@; put 'KzEpLHQubGVuZ3RoKTt0LnNwbGljZSgwLGwpfSl9KSxzbCh0aGlzLHVwZSwoKT0+eyJhdXRvIiE9PXZvKHRoaXMsSjEpfHx2byh0aGlzLGtGKT9zbCh0aGlzLGtGLCExKTooc2wodGhpcyxrRiwhMCksd2godGhpcyxlOSxqXykuY2FsbCh0aGlzKSl9KSxzbCh0aGlzLGRwZSx0PT50aGlzLmdl'@; put 'dFNldHRpbmcoInVpQ29udGFpbmVyIil8fCEoIm51bWJlciI9PXR5cGVvZiB0fHwic3RyaW5nIj09dHlwZW9mIHQmJi9eXGQrJC8udGVzdCh0KXx8InN0cmluZyI9PXR5cGVvZiB0JiZ0LmVuZHNXaXRoKCJweCIpKT90OmBjYWxjKCR7InN0cmluZyI9PXR5cGVvZiB0JiZ0LmVuZHNXaXRoKCJw'@; put 'eCIpP3Q6YCR7dH1weGB9IC0gJHt2byh0aGlzLENoKT8uZ2V0SGVpZ2h0KCl9cHgpYCksc2wodGhpcyxocGUsKCk9PnsiYXV0byIhPT12byh0aGlzLEoxKSYmd2godGhpcyxaJCxtcGUpLmNhbGwodGhpcyl9KSxzbCh0aGlzLGZwZSwoKT0+e3doKHRoaXMsZTksal8pLmNhbGwodGhpcyl9KSxz'@; put 'bCh0aGlzLHBwZSx0PT57dm8odGhpcyxDaCk/LnVwZGF0ZVRoZW1lKHQpfSksc2wodGhpcywkJCwoKT0+eyF2byh0aGlzLEFGKSYmdGhpcy5ob3Q/LnZpZXcmJndoKHRoaXMsWiQsbXBlKS5jYWxsKHRoaXMpfSl9fWZ1bmN0aW9uIGdwZShuKXtzbCh0aGlzLFF1LG4pfWZ1bmN0aW9uIHEkKG4p'@; put 'e3NsKHRoaXMsZXAsTWplKCJhdXRvIj09PW4/ImF1dG8iOiJmaXhlZCIpKSxzbCh0aGlzLEoxLG4pfWZ1bmN0aW9uIGpfKCl7d2godGhpcyxaJCxtcGUpLmNhbGwodGhpcyksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlzLmhvdC5yZW5kZXIoKX1mdW5jdGlvbiBJamUo'@; put 'KXt0aGlzLmdldFNldHRpbmcoInNob3dQYWdlU2l6ZSIpP3RoaXMuc2hvd1BhZ2VTaXplU2VjdGlvbigpOnRoaXMuaGlkZVBhZ2VTaXplU2VjdGlvbigpLHRoaXMuZ2V0U2V0dGluZygic2hvd0NvdW50ZXIiKT90aGlzLnNob3dQYWdlQ291bnRlclNlY3Rpb24oKTp0aGlzLmhpZGVQYWdlQ291'@; put 'bnRlclNlY3Rpb24oKSx0aGlzLmdldFNldHRpbmcoInNob3dOYXZpZ2F0aW9uIik/dGhpcy5zaG93UGFnZU5hdmlnYXRpb25TZWN0aW9uKCk6dGhpcy5oaWRlUGFnZU5hdmlnYXRpb25TZWN0aW9uKCl9ZnVuY3Rpb24gbXBlKCl7c2wodGhpcyxBRiwhMCksdm8odGhpcyxQeCk/LmNsZWFyKCk7'@; put 'Y29uc3Qgbj10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlSW5kZXhlcygpLGU9bi5sZW5ndGgse3N0eWxlc0hhbmRsZXI6dH09dGhpcy5ob3Qscj12byh0aGlzLFNDKSxpPXI/dm8odGhpcyxSRik/P2U6ZTt2byh0aGlzLGVwKT8uY2FsY3VsYXRlKHtwYWdlU2l6ZTp2byh0'@; put 'aGlzLEoxKSx0b3RhbEl0ZW1zOmksdmlld3BvcnRTaXplUHJvdmlkZXI6KCk9Pntjb25zdCB1PXRoaXMuaG90LnZpZXc7aWYodS5pc1ZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3coKSl7Y29uc3QgRT1nZXRDb21wdXRlZFN0eWxlKHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5KSxPPU51'@; put 'bWJlci5wYXJzZUludChFLm1hcmdpblRvcCwxMCkrTnVtYmVyLnBhcnNlSW50KEUubWFyZ2luQm90dG9tLDEwKSxaPXRoaXMuaG90Lmhhc0NvbEhlYWRlcnMoKT91Ll93dC53dFZpZXdwb3J0LmdldENvbHVtbkhlYWRlckhlaWdodCgpOjAsZWU9dm8odGhpcyxDaCk/LmdldEhlaWdodCgpO3Jl'@; put 'dHVybiB1LmdldFdvcmtzcGFjZUhlaWdodCgpLShlZT8/MCktWi1PfWNvbnN0IGc9dS5oYXNIb3Jpem9udGFsU2Nyb2xsKCk/R2QoKTowO3JldHVybiB1LmdldFZpZXdwb3J0SGVpZ2h0KCktZ30saXRlbXNTaXplUHJvdmlkZXI6KCk9PnRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRl'@; put 'cmFibGVJbmRleGVzKCkubWFwKGc9Pntjb25zdCBFPXRoaXMuaG90LnRvVmlzdWFsUm93KGcpO3JldHVybiB0aGlzLmhvdC5nZXRSb3dIZWlnaHQoRSk/P3QuZ2V0RGVmYXVsdFJvd0hlaWdodChFKX0pfSk7Y29uc3Qgbz12byh0aGlzLGVwKT8uZ2V0VG90YWxQYWdlcygpO2lmKHNsKHRoaXMs'@; put 'UXUsVnModm8odGhpcyxRdSksMSxvPz8xKSksIXImJm4ubGVuZ3RoPjApe2NvbnN0IHU9dm8odGhpcyxlcCk/LmdldFN0YXRlKHZvKHRoaXMsUXUpKTtpZih1KXtjb25zdHtzdGFydEluZGV4OmcscGFnZVNpemU6RX09dTtuLnNwbGljZShnLEUpfX0hciYmbi5sZW5ndGg+MD90aGlzLmhvdC5i'@; put 'YXRjaEV4ZWN1dGlvbigoKT0+e24uZm9yRWFjaCh1PT52byh0aGlzLFB4KT8uc2V0VmFsdWVBdEluZGV4KHUsITApKX0sITApOnJ8fHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVwZGF0ZUNhY2hlKCEwKSxzbCh0aGlzLEFGLCExKTtjb25zdCBsPXsuLi50aGlzLmdldFBhZ2luYXRpb25EYXRh'@; put 'KCksdG90YWxSZW5kZXJlZFJvd3M6cj9pOmV9O2lmKHIpe2NvbnN0IHU9aSxnPXZvKHRoaXMsZXApPy5nZXRTdGF0ZSh2byh0aGlzLFF1KSk/LnBhZ2VTaXplPz92byh0aGlzLEoxKTtsLmNvdW50ZXJTdGFydFJvdz0odm8odGhpcyxRdSktMSkqZysxLGwuY291bnRlckVuZFJvdz1NYXRoLm1p'@; put 'bih2byh0aGlzLFF1KSpnLHUpfXZvKHRoaXMsQ2gpPy51cGRhdGVTdGF0ZShsKX1mdW5jdGlvbiBtcXQoKXtjb25zdCBuPXZvKHRoaXMsQ2gpPy5nZXRDb250YWluZXIoKTtuJiZ0aGlzLmhvdC5nZXRGb2N1c1Njb3BlTWFuYWdlcigpLnJlZ2lzdGVyU2NvcGUoQl8sbix7c2hvcnRjdXRzQ29u'@; put 'dGV4dE5hbWU6ZnF0LHJ1bk9ubHlJZjooKT0+ISF0aGlzLmdldFNldHRpbmcoInNob3dQYWdlU2l6ZSIpfHwhIXRoaXMuZ2V0U2V0dGluZygic2hvd05hdmlnYXRpb24iKSxvbkFjdGl2YXRlOmU9Pntjb25zdCB0PXZvKHRoaXMsQ2gpPy5nZXRGb2N1c2FibGVFbGVtZW50cygpO3QmJnQubGVu'@; put 'Z3RoPjAmJigidGFiX2Zyb21fYWJvdmUiPT09ZT90LmF0KDApPy5mb2N1cygpOiJ0YWJfZnJvbV9iZWxvdyI9PT1lJiZ0LmF0KC0xKT8uZm9jdXMoKSl9fSl9ZnVuY3Rpb24gdnF0KCl7dGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKS51bnJlZ2lzdGVyU2NvcGUoQl8pfWZ1bmN0aW9u'@; put 'IERqZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBMamUobixlKXtyZXR1cm4gZnVuY3Rpb24gYnF0KG4sZSl7cmV0dXJuIGUu'@; put 'Z2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixEamUobixlLCJnZXQiKSl9Y29uc3QgdnBlPSJzZWFyY2giLFRxdD1mdW5jdGlvbihuLGUsdCxyLGkpe24uZ2V0Q2VsbE1ldGEoZSx0KS5pc1NlYXJjaFJlc3VsdD1pfSx4cXQ9ZnVuY3Rpb24obixlLHQpe2lmKFh1KG4pfHxudWxsPT09bnx8'@; put 'IW4udG9Mb2NhbGVMb3dlckNhc2V8fDA9PT1uLmxlbmd0aHx8WHUoZSl8fG51bGw9PT1lKXJldHVybiExO2NvbnN0IHI9dC5sb2NhbGU7cmV0dXJuLTEhPT12MShTdHJpbmcoZSkscikuaW5kZXhPZih2MShuLHIpKX07dmFyIEskPW5ldyBXZWFrTWFwO2NsYXNzIEFxdCBleHRlbmRzIGFse3N0'@; put 'YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiB2cGV9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTkwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt2cGVdfWVuYWJsZVBsdWdpbigpe2lmKHRoaXMuZW5hYmxlZClyZXR1cm47Y29uc3Qg'@; put 'ZT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3ZwZV07dGhpcy51cGRhdGVQbHVnaW5TZXR0aW5ncyhlKSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbmRlcmVyIixMamUodGhpcyxLJCkpLHN1cGVyLmVuYWJsZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXtjb25zdCBlPSh0LHIsaSxvLGEsbCk9Pkxq'@; put 'ZSh0aGlzLEskKS5jYWxsKHRoaXMsdCxyLGksbyxhLGwpO3RoaXMuaG90LmFkZEhvb2soImJlZm9yZVJlbmRlcmVyIixlKSx0aGlzLmhvdC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIiwoKT0+e3RoaXMuaG90LnJlbW92ZUhvb2soImJlZm9yZVJlbmRlcmVyIixlKX0pLHN1cGVyLmRp'@; put 'c2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfXF1ZXJ5KGUsdD10aGlzLmdldENhbGxiYWNrKCkscj10aGlzLmdldFF1ZXJ5TWV0aG9kKCkpe2NvbnN0IGk9dGhpcy5ob3QuY291'@; put 'bnRSb3dzKCksbz10aGlzLmhvdC5jb3VudENvbHMoKSxhPVtdLGw9dGhpcy5ob3Q7cmV0dXJuIFZhKDAsaS0xLHU9PntWYSgwLG8tMSxnPT57Y29uc3QgRT10aGlzLmhvdC5nZXREYXRhQXRDZWxsKHUsZyksTz10aGlzLmhvdC5nZXRDZWxsTWV0YSh1LGcpLFo9Ty5zZWFyY2gsZWU9Wj8uY2Fs'@; put 'bGJhY2s/P3QsTWU9KFo/LnF1ZXJ5TWV0aG9kPz9yKShlLEUsTyk7TWUmJmEucHVzaCh7cm93OnUsY29sOmcsZGF0YTpFfSksZWUmJmVlKGwsdSxnLEUsTWUpfSl9KSxhfWdldENhbGxiYWNrKCl7cmV0dXJuIHRoaXMuY2FsbGJhY2t9c2V0Q2FsbGJhY2soZSl7dGhpcy5jYWxsYmFjaz1lfWdl'@; put 'dFF1ZXJ5TWV0aG9kKCl7cmV0dXJuIHRoaXMucXVlcnlNZXRob2R9c2V0UXVlcnlNZXRob2QoZSl7dGhpcy5xdWVyeU1ldGhvZD1lfWdldFNlYXJjaFJlc3VsdENsYXNzKCl7cmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3N9c2V0U2VhcmNoUmVzdWx0Q2xhc3MoZSl7dGhpcy5zZWFyY2hS'@; put 'ZXN1bHRDbGFzcz1lfXVwZGF0ZVBsdWdpblNldHRpbmdzKGUpe0NhKGUpJiYoZS5zZWFyY2hSZXN1bHRDbGFzcyYmdGhpcy5zZXRTZWFyY2hSZXN1bHRDbGFzcyhTdHJpbmcoZS5zZWFyY2hSZXN1bHRDbGFzcykpLGUucXVlcnlNZXRob2QmJnRoaXMuc2V0UXVlcnlNZXRob2QoZS5xdWVyeU1l'@; put 'dGhvZCksZS5jYWxsYmFjayYmdGhpcy5zZXRDYWxsYmFjayhlLmNhbGxiYWNrKSl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxmdW5jdGlvbiBDcXQobixlLHQpeyhmdW5jdGlvbiB5cXQobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcg'@; put 'VHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfSh0aGlzLEskLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLmNhbGxiYWNrPVRxdCx0aGlzLnF1ZXJ5TWV0aG9k'@; put 'PXhxdCx0aGlzLnNlYXJjaFJlc3VsdENsYXNzPSJodFNlYXJjaFJlc3VsdCIsZnVuY3Rpb24gU3F0KG4sZSx0KXtyZXR1cm4gZnVuY3Rpb24gd3F0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0'@; put 'ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixEamUobixlLCJzZXQiKSx0KSx0fSh0aGlzLEskLCh0LHIsaSxvLGEsbCk9Pntjb25zdCB1PWwuY2xhc3NOYW1lfHxbXTtsZXQgZz1bXTsic3RyaW5nIj09dHlwZW9mIHU/Zz11LnNwbGl0KCIgIik6QXJy'@; put 'YXkuaXNBcnJheSh1KSYmZy5wdXNoKC4uLnUpLHRoaXMuaXNFbmFibGVkKCkmJmwuaXNTZWFyY2hSZXN1bHQ/Zy5pbmNsdWRlcyh0aGlzLnNlYXJjaFJlc3VsdENsYXNzKXx8Zy5wdXNoKGAke3RoaXMuc2VhcmNoUmVzdWx0Q2xhc3N9YCk6Zy5pbmNsdWRlcyh0aGlzLnNlYXJjaFJlc3VsdENs'@; put 'YXNzKSYmZy5zcGxpY2UoZy5pbmRleE9mKHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpLDEpLGwuY2xhc3NOYW1lPWcuam9pbigiICIpfSl9fWNsYXNzIE9qZXtwcmVwYXJlKHt2aWV3cG9ydFdpZHRoOmV9KXt0aGlzLnZpZXdwb3J0V2lkdGg9ZSx0aGlzLmJhc2VXaWR0aHMuY2xlYXIoKSx0aGlz'@; put 'LnN0cmV0Y2hlZFdpZHRocy5jbGVhcigpfXNldENvbHVtbkJhc2VXaWR0aChlLHQpe3RoaXMuYmFzZVdpZHRocy5zZXQoZSx0KX1jYWxjdWxhdGUoKXt9Z2V0V2lkdGhzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5zdHJldGNoZWRXaWR0aHMpfWNvbnN0cnVjdG9yKGUpe3RoaXMudmlld3Bv'@; put 'cnRXaWR0aD0wLHRoaXMuYmFzZVdpZHRocz1uZXcgTWFwLHRoaXMuc3RyZXRjaGVkV2lkdGhzPW5ldyBNYXAsdGhpcy5vdmVyd3JpdGVDb2x1bW5XaWR0aEZuPWV9fWNsYXNzIGtxdCBleHRlbmRzIE9qZXtjYWxjdWxhdGUoKXtjb25zdCBlPUFycmF5LmZyb20odGhpcy5iYXNlV2lkdGhzKS5y'@; put 'ZWR1Y2UoKE8sWyxaXSk9Pk8rWiwwKTtpZih0aGlzLnZpZXdwb3J0V2lkdGgtZTwwKXJldHVybiB2b2lkIHRoaXMuc3RyZXRjaGVkV2lkdGhzLmNsZWFyKCk7Y29uc3Qgcj10aGlzLnZpZXdwb3J0V2lkdGgvZSxpPVtdLG89W107bGV0IGE9dGhpcy52aWV3cG9ydFdpZHRoLGw9MDtpZih0aGlz'@; put 'LmJhc2VXaWR0aHMuZm9yRWFjaCgoTyxaKT0+e2NvbnN0IGVlPU1hdGgucm91bmQoTypyKSx2ZT10aGlzLm92ZXJ3cml0ZUNvbHVtbldpZHRoRm4oZWUsWik7ZWU9PT12ZSYmZWU+PTUwPyhpLnB1c2goW1osdmVdKSxsKz12ZSk6ZWUhPT12ZSYmKGkucHVzaChbWix2ZV0pLG8ucHVzaChaKSxh'@; put 'LT12ZSl9KSxhPD01MClyZXR1cm4gdm9pZCB0aGlzLnN0cmV0Y2hlZFdpZHRocy5jbGVhcigpO2NvbnN0IHU9YS9sO2xldCBnPS0xLEU9MDtpLmZvckVhY2goKFtPLFpdLGVlKT0+e2xldCB2ZT1aO28uaW5jbHVkZXMoTyl8fCh2ZT1NYXRoLnJvdW5kKFoqdSkpLHRoaXMuc3RyZXRjaGVkV2lk'@; put 'dGhzLnNldChPLHZlKSxnPU8sZWU8aS5sZW5ndGgtMSYmKEUrPXZlKX0pLHRoaXMuc3RyZXRjaGVkV2lkdGhzLnNpemU+MSYmdGhpcy5zdHJldGNoZWRXaWR0aHMuc2V0KGcsTWF0aC5yb3VuZCh0aGlzLnZpZXdwb3J0V2lkdGgtRSkpfX1mdW5jdGlvbiBOamUobixlLHQpe2lmKCFlLmhhcyhu'@; put 'KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9ZnVuY3Rpb24gWCQobixlKXtyZXR1cm4gZnVuY3Rpb24gSXF0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1'@; put 'ZX0obixOamUobixlLCJnZXQiKSl9ZnVuY3Rpb24gRmplKG4sZSx0KXsoZnVuY3Rpb24gUnF0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSks'@; put 'ZS5zZXQobix0KX1mdW5jdGlvbiBIeChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIERxdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIp'@; put 'O2UudmFsdWU9dH19KG4sTmplKG4sZSwic2V0IiksdCksdH12YXIgVng9bmV3IFdlYWtNYXAsQng9bmV3IFdlYWtNYXA7Y2xhc3MgTHF0IGV4dGVuZHMgT2ple3ByZXBhcmUoZSl7c3VwZXIucHJlcGFyZShlKSxIeCh0aGlzLFZ4LDApLEh4KHRoaXMsQngsLTEpfXNldENvbHVtbkJhc2VXaWR0'@; put 'aChlLHQpe3N1cGVyLnNldENvbHVtbkJhc2VXaWR0aChlLHQpLEh4KHRoaXMsQngsZSksSHgodGhpcyxWeCx0KX1jYWxjdWxhdGUoKXtpZigtMT09PVgkKHRoaXMsQngpKXJldHVybjtjb25zdCBlPUFycmF5LmZyb20odGhpcy5iYXNlV2lkdGhzKS5yZWR1Y2UoKHIsWyxpXSk9PnIraSwwKSx0'@; put 'PXRoaXMudmlld3BvcnRXaWR0aC1lK1gkKHRoaXMsVngpO3Q8WCQodGhpcyxWeCk/dGhpcy5zdHJldGNoZWRXaWR0aHMuY2xlYXIoKTp0aGlzLnN0cmV0Y2hlZFdpZHRocy5zZXQoWCQodGhpcyxCeCksdCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksRmplKHRoaXMsVngse3dyaXRh'@; put 'YmxlOiEwLHZhbHVlOnZvaWQgMH0pLEZqZSh0aGlzLEJ4LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxIeCh0aGlzLFZ4LDApLEh4KHRoaXMsQngsLTEpfX1mdW5jdGlvbiBQamUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUg'@; put 'c2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIEhqZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1m'@; put 'dW5jdGlvbiBGZChuLGUpe3JldHVybiBmdW5jdGlvbiBPcXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLEhqZShuLGUsImdldCIpKX1mdW5jdGlvbiBRJChuLGUsdCl7UGplKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBERihuLGUsdCl7cmV0dXJuIGZ1bmN0'@; put 'aW9uIE5xdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sSGplKG4sZSwic2V0IiksdCksdH1mdW5jdGlv'@; put 'biBKJChuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBfcGUobixlKXtQamUobixlKSxlLmFkZChuKX12YXIgeDA9bmV3IFdlYWtNYXAsang9bmV3'@; put 'IFdlYWtNYXAsZXE9bmV3IFdlYWtNYXAsTEY9bmV3IFdlYWtNYXAsVmplPW5ldyBXZWFrU2V0LEJqZT1uZXcgV2Vha1NldCx5cGU9bmV3IFdlYWtTZXQ7Y2xhc3MgUHF0e3VzZVN0cmF0ZWd5KGUpe0RGKHRoaXMsTEYsInN0cmluZyI9PXR5cGVvZiBlJiZGZCh0aGlzLGVxKS5oYXMoZSk/ZToi'@; put 'bm9uZSIpfXJlZnJlc2hTdHJldGNoaW5nKCl7Im5vbmUiIT09RmQodGhpcyxMRik/RmQodGhpcyx4MCkuYmF0Y2hFeGVjdXRpb24oKCk9PntGZCh0aGlzLGp4KS5jbGVhcigpO2NvbnN0IGU9RmQodGhpcyxlcSkuZ2V0KEZkKHRoaXMsTEYpKTtpZighZSlyZXR1cm47bGV0IHI9RmQodGhpcyx4'@; put 'MCkudmlldy5nZXRWaWV3cG9ydFdpZHRoKCk7SiQodGhpcyxWamUsSHF0KS5jYWxsKHRoaXMpJiYoci09R2QoRmQodGhpcyx4MCkucm9vdERvY3VtZW50KSksZS5wcmVwYXJlKHt2aWV3cG9ydFdpZHRoOnJ9KTtmb3IobGV0IGk9MDtpPEZkKHRoaXMseDApLmNvdW50Q29scygpO2krKylGZCh0'@; put 'aGlzLHgwKS5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbihGZCh0aGlzLHgwKS50b1BoeXNpY2FsQ29sdW1uKGkpKXx8ZS5zZXRDb2x1bW5CYXNlV2lkdGgoaSxKJCh0aGlzLEJqZSxWcXQpLmNhbGwodGhpcyxpKSk7ZS5jYWxjdWxhdGUoKSxlLmdldFdpZHRocygpLmZvckVhY2goKFtpLG9d'@; put 'KT0+e0ZkKHRoaXMsangpLnNldFZhbHVlQXRJbmRleChGZCh0aGlzLHgwKS50b1BoeXNpY2FsQ29sdW1uKGkpLG8pfSl9LCEwKTpGZCh0aGlzLGp4KS5jbGVhcigpfWdldFN0cmV0Y2hlZFdpZHRoKGUpe3JldHVybiBGZCh0aGlzLGp4KS5nZXRWYWx1ZUF0SW5kZXgoRmQodGhpcyx4MCkudG9Q'@; put 'aHlzaWNhbENvbHVtbihlKSl9Y29uc3RydWN0b3IoZSl7X3BlKHRoaXMsVmplKSxfcGUodGhpcyxCamUpLF9wZSh0aGlzLHlwZSksUSQodGhpcyx4MCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUSQodGhpcyxqeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUSQodGhpcyxlcSx7'@; put 'd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksUSQodGhpcyxMRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksREYodGhpcyxlcSxuZXcgTWFwKFtbImFsbCIsbmV3IGtxdChKJCh0aGlzLHlwZSxqamUpLmJpbmQodGhpcykpXSxbImxhc3QiLG5ldyBMcXQoSiQodGhpcyx5cGUsamplKS5i'@; put 'aW5kKHRoaXMpKV1dKSksREYodGhpcyxMRiwibm9uZSIpLERGKHRoaXMseDAsZSksREYodGhpcyxqeCxGZCh0aGlzLHgwKS5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVBbmRSZWdpc3RlckluZGV4TWFwKCJzdHJldGNoQ29sdW1ucyIsInBoeXNpY2FsSW5kZXhUb1ZhbHVlIikpfX1mdW5jdGlv'@; put 'biBIcXQoKXtjb25zdHt2aWV3Om4sc3R5bGVzSGFuZGxlcjplfT1GZCh0aGlzLHgwKTtpZihuLmlzVmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdygpKXJldHVybiExO2NvbnN0IHQ9bi5nZXRWaWV3cG9ydEhlaWdodCgpLHI9RmQodGhpcyx4MCkuY291bnRSb3dzKCksaT1lLmdldERlZmF1'@; put 'bHRSb3dIZWlnaHQoKTtsZXQgbz0wLGE9ITE7Zm9yKGxldCBsPTA7bDxyO2wrKylpZighRmQodGhpcyx4MCkucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4oRmQodGhpcyx4MCkudG9QaHlzaWNhbFJvdyhsKSkmJihvKz1GZCh0aGlzLHgwKS5nZXRSb3dIZWlnaHQobCk/P2ksbz50KSl7YT0hMDti'@; put 'cmVha31yZXR1cm4gYX1mdW5jdGlvbiBWcXQobil7cmV0dXJuIEZkKHRoaXMseDApLmdldENvbFdpZHRoKG4sIlN0cmV0Y2hDb2x1bW5zIik/PzUwfWZ1bmN0aW9uIGpqZShuLGUpe3JldHVybiBGZCh0aGlzLHgwKS5ydW5Ib29rcygiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixuLGUp'@; put 'fWZ1bmN0aW9uIFVqZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBVNChuLGUpe3JldHVybiBmdW5jdGlvbiBqcXQobixlKXty'@; put 'ZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFVqZShuLGUsImdldCIpKX1mdW5jdGlvbiBPRihuLGUsdCl7KGZ1bmN0aW9uIEJxdChuLGUpe2lmKGUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVu'@; put 'dHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShuLGUpLGUuc2V0KG4sdCl9ZnVuY3Rpb24gVV8obixlLHQpe3JldHVybiBmdW5jdGlvbiBVcXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0'@; put 'byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFVqZShuLGUsInNldCIpLHQpLHR9dmFyIEVDPW5ldyBXZWFrTWFwLE5GPW5ldyBXZWFrTWFwLFV4PW5ldyBXZWFrTWFwLGJwZT1uZXcgV2Vha01hcCx3cGU9bmV3IFdlYWtNYXA7Y2xhc3MgWXF0IGV4dGVuZHMg'@; put 'YWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuInN0cmV0Y2hDb2x1bW5zIn1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAxNTV9c3RhdGljIGdldCBTRVRUSU5HX0tFWVMoKXtyZXR1cm4hMH1pc0VuYWJsZWQoKXtyZXR1cm5bImFsbCIsImxhc3QiXS5pbmNsdWRl'@; put 'cyh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLnN0cmV0Y2hIPz8iIil9ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwoVTQodGhpcyxFQykudXNlU3RyYXRlZ3kodGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5zdHJldGNoSCksVTQodGhpcyxVeCkub2JzZXJ2ZSh0aGlzLmhvdC5yb290RWxlbWVu'@; put 'dCksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW5kZXIiLFU0KHRoaXMsd3BlKSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsVTQodGhpcyxicGUpLDEwKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7VTQodGhpcyxFQykudXNlU3RyYXRlZ3kodGhpcy5ob3QuZ2V0'@; put 'U2V0dGluZ3MoKS5zdHJldGNoSCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKSxVNCh0aGlzLFV4KS51bm9ic2VydmUodGhpcy5ob3Qucm9vdEVsZW1lbnQpfWdldENvbHVtbldpZHRoKGUpe3JldHVybiBVNCh0aGlzLEVDKS5nZXRT'@; put 'dHJldGNoZWRXaWR0aChlKX1kZXN0cm95KCl7VTQodGhpcyxVeCkuZGlzY29ubmVjdCgpLFVfKHRoaXMsVXgsbnVsbCksVV8odGhpcyxFQyxudWxsKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksT0YodGhpcyxFQyx7d3JpdGFibGU6ITAsdmFsdWU6dm9p'@; put 'ZCAwfSksT0YodGhpcyxORix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT0YodGhpcyxVeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT0YodGhpcyxicGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9GKHRoaXMsd3BlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxV'@; put 'Xyh0aGlzLEVDLG5ldyBQcXQodGhpcy5ob3QpKSxVXyh0aGlzLE5GLG51bGwpLFVfKHRoaXMsVXgsbmV3IFJlc2l6ZU9ic2VydmVyKHQ9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmhvdD8udmlldz8uaXNIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3coKSYmdC5mb3JF'@; put 'YWNoKCh7Y29udGVudFJlY3Q6cn0pPT57bnVsbCE9PVU0KHRoaXMsTkYpJiZVNCh0aGlzLE5GKSE9PXIud2lkdGgmJih0aGlzLmhvdD8udmlldz8uYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5ob3Q/LnJlZnJlc2hEaW1lbnNpb25zKCkpLFVfKHRoaXMsTkYsci53aWR0aCl9KX0pfSkpLFVf'@; put 'KHRoaXMsYnBlLCh0LHIsaSk9PntpZihpPT09dGhpcy5wbHVnaW5OYW1lKXJldHVybjtjb25zdCBvPXRoaXMuZ2V0Q29sdW1uV2lkdGgocik7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBvP286dH0pLFVfKHRoaXMsd3BlLHQ9Pnt0JiZVNCh0aGlzLEVDKS5yZWZyZXNoU3RyZXRjaGluZygpfSl9'@; put 'fWZ1bmN0aW9uIHpqZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBDcGUobixlKXtyZXR1cm4gZnVuY3Rpb24gR3F0KG4sZSl7'@; put 'cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obix6amUobixlLCJnZXQiKSl9ZnVuY3Rpb24gU3BlKG4sZSx0KXsoZnVuY3Rpb24gWnF0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVt'@; put 'ZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBFcGUobixlLHQpe3JldHVybiBmdW5jdGlvbiAkcXQobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRl'@; put 'ZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLHpqZShuLGUsInNldCIpLHQpLHR9dmFyIE1wZT1uZXcgV2Vha01hcCxUcGU9bmV3IFdlYWtNYXAseHBlPW5ldyBXZWFrTWFwO2NsYXNzIFhxdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgp'@; put 'e3JldHVybiJ0b3VjaFNjcm9sbCJ9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMjAwfXN0YXRpYyBnZXQgU0VUVElOR19LRVlTKCl7cmV0dXJuITB9aXNFbmFibGVkKCl7cmV0dXJuIF9zZSgpfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygi'@; put 'YWZ0ZXJWaWV3UmVuZGVyIixDcGUodGhpcyxNcGUpKSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMubG9ja2VkQ29sbGVjdGlvbj0hMSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7c3VwZXIuZGlzYWJs'@; put 'ZVBsdWdpbigpfXJlZ2lzdGVyRXZlbnRzKCl7dGhpcy5hZGRIb29rKCJiZWZvcmVUb3VjaFNjcm9sbCIsQ3BlKHRoaXMsVHBlKSksdGhpcy5hZGRIb29rKCJhZnRlck1vbWVudHVtU2Nyb2xsIixDcGUodGhpcyx4cGUpKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxTcGUodGhpcyxN'@; put 'cGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFNwZSh0aGlzLFRwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksU3BlKHRoaXMseHBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLnNjcm9sbGJhcnM9W10sdGhpcy5jbG9uZXM9W10sdGhpcy5sb2NrZWRDb2xsZWN0'@; put 'aW9uPSExLHRoaXMuZnJlZXplT3ZlcmxheXM9ITEsRXBlKHRoaXMsTXBlLCgpPT57aWYodGhpcy5sb2NrZWRDb2xsZWN0aW9uKXJldHVybjtjb25zdHt0b3BPdmVybGF5OnQsYm90dG9tT3ZlcmxheTpyLGlubGluZVN0YXJ0T3ZlcmxheTppLHRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheTpv'@; put 'LGJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheTphfT10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzO3RoaXMubG9ja2VkQ29sbGVjdGlvbj0hMCx0aGlzLnNjcm9sbGJhcnMubGVuZ3RoPTAsdGhpcy5zY3JvbGxiYXJzLnB1c2godCksci5jbG9uZSYmdGhpcy5zY3JvbGxiYXJzLnB1'@; put 'c2gociksdGhpcy5zY3JvbGxiYXJzLnB1c2goaSksbyYmdGhpcy5zY3JvbGxiYXJzLnB1c2gobyksYSYmYS5jbG9uZSYmdGhpcy5zY3JvbGxiYXJzLnB1c2goYSksdGhpcy5jbG9uZXM9W10sdC5uZWVkRnVsbFJlbmRlciYmdGhpcy5jbG9uZXMucHVzaCh0LmNsb25lPy53dFRhYmxlLmhvbGRl'@; put 'ci5wYXJlbnROb2RlKSxyLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmNsb25lcy5wdXNoKHIuY2xvbmU/Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpLGkubmVlZEZ1bGxSZW5kZXImJnRoaXMuY2xvbmVzLnB1c2goaS5jbG9uZT8ud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSksbyYmdGhpcy5j'@; put 'bG9uZXMucHVzaChvLmNsb25lPy53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKSxhJiZhLmNsb25lJiZ0aGlzLmNsb25lcy5wdXNoKGEuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSl9KSxFcGUodGhpcyxUcGUsKCk9Pnt0aGlzLmZyZWV6ZU92ZXJsYXlzPSEwLFhuKHRoaXMuY2xv'@; put 'bmVzLHQ9PntZcih0LCJoaWRlLXR3ZWVuIil9KX0pLEVwZSh0aGlzLHhwZSwoKT0+e3RoaXMuZnJlZXplT3ZlcmxheXM9ITEsWG4odGhpcy5jbG9uZXMsdD0+e2tvKHQsImhpZGUtdHdlZW4iKSxZcih0LCJzaG93LXR3ZWVuIil9KSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57WG4o'@; put 'dGhpcy5jbG9uZXMsdD0+e2tvKHQsInNob3ctdHdlZW4iKX0pfSw0MDApLFhuKHRoaXMuc2Nyb2xsYmFycyx0PT57dC5yZWZyZXNoKCksdC5yZXNldEZpeGVkUG9zaXRpb24oKX0pLHRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuc3luY1Njcm9sbFdpdGhNYXN0ZXIoKX0pfX1mdW5jdGlv'@; put 'biBXamUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9Y29uc3QgRkY9InRyaW1Sb3dzIjt2YXIgQXBlPW5ldyBXZWFrTWFwO2NsYXNzIG9LdCBl'@; put 'eHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBGRn1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAzMzB9c3RhdGljIGdldCBTRVRUSU5HX0tFWVMoKXtyZXR1cm5bRkZdfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtG'@; put 'Rl19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy50cmltbWVkUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCgidHJpbVJvd3MiLG5ldyBhVCksdGhpcy50cmltbWVkUm93c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9uIHRLdChuLGUp'@; put 'e3JldHVybiBmdW5jdGlvbiBKcXQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFdqZShuLGUsImdldCIpKX0odGhpcyxBcGUpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7Y29uc3QgZT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0ZGXTtB'@; put 'cnJheS5pc0FycmF5KGUpJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e3RoaXMudHJpbW1lZFJvd3NNYXAuY2xlYXIoKSxYbihlLHQ9Pnt0aGlzLnRyaW1tZWRSb3dzTWFwLnNldFZhbHVlQXRJbmRleCh0LCEwKX0pfSwhMCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdp'@; put 'bigpe3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoInRyaW1Sb3dzIiksc3VwZXIuZGlzYWJsZVBsdWdpbigpfWdldFRyaW1tZWRSb3dzKCl7cmV0dXJuIHRoaXMudHJpbW1lZFJvd3NNYXAuZ2V0VHJpbW1lZEluZGV4ZXMoKX10cmltUm93cyhlKXtjb25zdCB0PXRoaXMu'@; put 'Z2V0VHJpbW1lZFJvd3MoKSxyPXRoaXMuaXNWYWxpZENvbmZpZyhlKTtsZXQgaT10O3ImJihpPUFycmF5LmZyb20obmV3IFNldCh0LmNvbmNhdChlKSkpKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVUcmltUm93Iix0LGkscikmJihyJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigo'@; put 'KT0+e1huKGUsYT0+e3RoaXMudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KGEsITApfSl9LCEwKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJUcmltUm93Iix0LGkscixyJiZpLmxlbmd0aD50Lmxlbmd0aCkpfXRyaW1Sb3coLi4uZSl7dGhpcy50cmltUm93cyhlKX11bnRyaW1Sb3dz'@; put 'KGUpe2NvbnN0IHQ9dGhpcy5nZXRUcmltbWVkUm93cygpLHI9dGhpcy5pc1ZhbGlkQ29uZmlnKGUpO2xldCBpPXQ7Y29uc3Qgbz10aGlzLnRyaW1tZWRSb3dzTWFwLmdldFZhbHVlcygpLnNsaWNlKCksYT1lLmxlbmd0aD4wO3ImJmEmJihYbihlLHU9PntvW3VdPSExfSksaT1tMShvLCh1LGcs'@; put 'RSk9PihnJiZ1LnB1c2goRSksdSksW10pKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVVbnRyaW1Sb3ciLHQsaSxyJiZhKSYmKHImJmEmJnRoaXMudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVzKG8pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVudHJpbVJvdyIsdCxpLHImJmEsciYm'@; put 'aS5sZW5ndGg8dC5sZW5ndGgpKX11bnRyaW1Sb3coLi4uZSl7dGhpcy51bnRyaW1Sb3dzKGUpfWlzVHJpbW1lZChlKXtyZXR1cm4gdGhpcy50cmltbWVkUm93c01hcC5nZXRWYWx1ZUF0SW5kZXgoZSl8fCExfXVudHJpbUFsbCgpe3RoaXMudW50cmltUm93cyh0aGlzLmdldFRyaW1tZWRSb3dz'@; put 'KCkpfWlzVmFsaWRDb25maWcoZSl7Y29uc3QgdD10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTtyZXR1cm4gZS5ldmVyeShyPT5OdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPj0wJiZyPHQpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksZnVu'@; put 'Y3Rpb24gbkt0KG4sZSx0KXsoZnVuY3Rpb24gUXF0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX0odGhpcyxBcGUse3dy'@; put 'aXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMudHJpbW1lZFJvd3NNYXA9bnVsbCxmdW5jdGlvbiByS3QobixlLHQpe3JldHVybiBmdW5jdGlvbiBlS3QobixlLHQpe2lmKGUuc2V0KWUuc2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0'@; put 'dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLFdqZShuLGUsInNldCIpLHQpLHR9KHRoaXMsQXBlLCgpPT57Y29uc3QgdD10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0ZGXTtBcnJheS5pc0FycmF5KHQpJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlv'@; put 'bigoKT0+e1huKHQscj0+e3RoaXMudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KHIsITApfSl9LCEwKX0pfX1jbGFzcyBDbXt1bmRvKC4uLmUpe0pyKCJOb3QgaW1wbGVtZW50ZWQiKX1yZWRvKC4uLmUpe0pyKCJOb3QgaW1wbGVtZW50ZWQiKX1jb25zdHJ1Y3RvcihlKXt0aGlzLmFj'@; put 'dGlvblR5cGU9IiIsdGhpcy5hY3Rpb25UeXBlPWV9fWNsYXNzIGtwZSBleHRlbmRzIENte3N0YXRpYyBzdGFydFJlZ2lzdGVyaW5nRXZlbnRzKGUsdCl7ZS5hZGRIb29rKCJiZWZvcmVDZWxsQWxpZ25tZW50IiwocixpLG8sYSk9Pnt0LmRvbmUoKCk9Pm5ldyBrcGUoe3N0YXRlQmVmb3JlOnIs'@; put 'cmFuZ2U6aSx0eXBlOm8sYWxpZ25tZW50OmF9KSl9KX11bmRvKGUsdCl7WG4odGhpcy5yYW5nZSxyPT57ci5mb3JBbGwoKGksbyk9PihpPj0wJiZvPj0wJiZlLnNldENlbGxNZXRhKGksbywiY2xhc3NOYW1lIix0aGlzLnN0YXRlQmVmb3JlW2ldW29dfHwiIGh0TGVmdCIpLCEwKSl9KSxlLmFk'@; put 'ZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLHQpLGUucmVuZGVyKCl9cmVkbyhlLHQpe19fKHRoaXMucmFuZ2UsdGhpcy50eXBlLHRoaXMuYWxpZ25tZW50LChyLGkpPT5lLmdldENlbGxNZXRhKHIsaSksKHIsaSxvLGEpPT5lLnNldENlbGxNZXRhKHIsaSxvLGEpKSxlLmFkZEhvb2tPbmNl'@; put 'KCJhZnRlclZpZXdSZW5kZXIiLHQpLGUucmVuZGVyKCl9Y29uc3RydWN0b3Ioe3N0YXRlQmVmb3JlOmUscmFuZ2U6dCx0eXBlOnIsYWxpZ25tZW50Oml9KXtzdXBlcigiY2VsbF9hbGlnbm1lbnQiKSx0aGlzLnN0YXRlQmVmb3JlPWUsdGhpcy5yYW5nZT10LHRoaXMudHlwZT1yLHRoaXMuYWxp'@; put 'Z25tZW50PWl9fWNsYXNzIFJwZSBleHRlbmRzIENte3N0YXRpYyBzdGFydFJlZ2lzdGVyaW5nRXZlbnRzKGUsdCl7ZS5hZGRIb29rKCJiZWZvcmVDb2x1bW5Nb3ZlIiwocixpKT0+eyExIT09ciYmdC5kb25lKCgpPT5uZXcgUnBlKHtjb2x1bW5zOnIsZmluYWxJbmRleDppfSkpfSl9dW5kbyhl'@; put 'LHQpe2NvbnN0IHI9ZS5nZXRQbHVnaW4oIm1hbnVhbENvbHVtbk1vdmUiKTtlLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLHQpLE0yZSh0aGlzLmNvbHVtbnMsdGhpcy5maW5hbENvbHVtbkluZGV4LGUuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TnVtYmVyT2ZJbmRleGVzKCkpLnJldmVy'@; put 'c2UoKS5mb3JFYWNoKCh7ZnJvbTpvLHRvOmF9KT0+e288YSYmKGEtPTEpLHIubW92ZUNvbHVtbihhLG8pfSksZS5yZW5kZXIoKSxlLmRlc2VsZWN0Q2VsbCgpLGUuc2VsZWN0Q29sdW1ucyh0aGlzLmNvbHVtbnNbMF0sdGhpcy5jb2x1bW5zWzBdK3RoaXMuY29sdW1ucy5sZW5ndGgtMSl9cmVk'@; put 'byhlLHQpe2NvbnN0IHI9ZS5nZXRQbHVnaW4oIm1hbnVhbENvbHVtbk1vdmUiKTtlLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLHQpLHIubW92ZUNvbHVtbnModGhpcy5jb2x1bW5zLnNsaWNlKCksdGhpcy5maW5hbENvbHVtbkluZGV4KSxlLnJlbmRlcigpLGUuZGVzZWxlY3RDZWxs'@; put 'KCksZS5zZWxlY3RDb2x1bW5zKHRoaXMuZmluYWxDb2x1bW5JbmRleCx0aGlzLmZpbmFsQ29sdW1uSW5kZXgrdGhpcy5jb2x1bW5zLmxlbmd0aC0xKX1jb25zdHJ1Y3Rvcih7Y29sdW1uczplLGZpbmFsSW5kZXg6dH0pe3N1cGVyKCJjb2xfbW92ZSIpLHRoaXMuY29sdW1ucz1lLnNsaWNlKCks'@; put 'dGhpcy5maW5hbENvbHVtbkluZGV4PXR9fWNsYXNzIElwZSBleHRlbmRzIENte3N0YXRpYyBzdGFydFJlZ2lzdGVyaW5nRXZlbnRzKGUsdCl7ZS5hZGRIb29rKCJiZWZvcmVDb2x1bW5Tb3J0IiwocixpLG8pPT57byYmdC5kb25lKCgpPT5uZXcgSXBlKHtjdXJyZW50U29ydFN0YXRlOnIsbmV3'@; put 'U29ydFN0YXRlOml9KSl9KX11bmRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigiY29sdW1uU29ydGluZyIpLGk9ZS5nZXRQbHVnaW4oIm11bHRpQ29sdW1uU29ydGluZyIpLG89aS5pc0VuYWJsZWQoKT9pOnI7dGhpcy5wcmV2aW91c1NvcnRTdGF0ZS5sZW5ndGg/by5zb3J0KHRoaXMucHJl'@; put 'dmlvdXNTb3J0U3RhdGUpOm8uY2xlYXJTb3J0KCksdCgpfXJlZG8oZSx0KXtjb25zdCByPWUuZ2V0UGx1Z2luKCJjb2x1bW5Tb3J0aW5nIiksaT1lLmdldFBsdWdpbigibXVsdGlDb2x1bW5Tb3J0aW5nIik7KGkuaXNFbmFibGVkKCk/aTpyKS5zb3J0KHRoaXMubmV4dFNvcnRTdGF0ZSksdCgp'@; put 'fWNvbnN0cnVjdG9yKHtjdXJyZW50U29ydFN0YXRlOmUsbmV3U29ydFN0YXRlOnR9KXtzdXBlcigiY29sX3NvcnQiKSx0aGlzLnByZXZpb3VzU29ydFN0YXRlPWUsdGhpcy5uZXh0U29ydFN0YXRlPXR9fWNsYXNzIERwZSBleHRlbmRzIENte3N0YXRpYyBzdGFydFJlZ2lzdGVyaW5nRXZlbnRz'@; put 'KGUsdCl7ZS5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsKHIsaSxvKT0+e3QuZG9uZSgoKT0+bmV3IERwZSh7aW5kZXg6cixhbW91bnQ6aX0pLG8pfSl9dW5kbyhlLHQpe2UuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlQ29sIix0KSxlLmFsdGVyKCJyZW1vdmVfY29sIix0aGlzLmluZGV4LHRo'@; put 'aXMuYW1vdW50LCJVbmRvUmVkby51bmRvIil9cmVkbyhlLHQpe2UuYWRkSG9va09uY2UoImFmdGVyQ3JlYXRlQ29sIix0KSxlLmFsdGVyKCJpbnNlcnRfY29sX3N0YXJ0Iix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5yZWRvIil9Y29uc3RydWN0b3Ioe2luZGV4OmUsYW1vdW50'@; put 'OnR9KXtzdXBlcigiaW5zZXJ0X2NvbCIpLHRoaXMuaW5kZXg9ZSx0aGlzLmFtb3VudD10fX1jbGFzcyBMcGUgZXh0ZW5kcyBDbXtzdGF0aWMgc3RhcnRSZWdpc3RlcmluZ0V2ZW50cyhlLHQpe2UuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLChyLGksbyk9Pnt0LmRvbmUoKCk9Pm5ldyBMcGUo'@; put 'e2luZGV4OnIsYW1vdW50Oml9KSxvKX0pfXVuZG8oZSx0KXtjb25zdCByPWUuY291bnRSb3dzKCksaT1lLmdldFNldHRpbmdzKCkubWluU3BhcmVSb3dzO3RoaXMuaW5kZXg+PXImJnRoaXMuaW5kZXgtKGk/PzApPHImJih0aGlzLmluZGV4LT1pPz8wKSxlLmFkZEhvb2tPbmNlKCJhZnRlclJl'@; put 'bW92ZVJvdyIsdCksZS5hbHRlcigicmVtb3ZlX3JvdyIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8udW5kbyIpfXJlZG8oZSx0KXtlLmFkZEhvb2tPbmNlKCJhZnRlckNyZWF0ZVJvdyIsdCksZS5hbHRlcigiaW5zZXJ0X3Jvd19hYm92ZSIsdGhpcy5pbmRleCx0aGlzLmFtb3Vu'@; put 'dCwiVW5kb1JlZG8ucmVkbyIpfWNvbnN0cnVjdG9yKHtpbmRleDplLGFtb3VudDp0fSl7c3VwZXIoImluc2VydF9yb3ciKSx0aGlzLmluZGV4PWUsdGhpcy5hbW91bnQ9dH19Y2xhc3MgT3BlIGV4dGVuZHMgQ217c3RhdGljIHN0YXJ0UmVnaXN0ZXJpbmdFdmVudHMoZSx0KXtjb25zdCByPXQ7'@; put 'ZS5hZGRIb29rKCJiZWZvcmVDaGFuZ2UiLGZ1bmN0aW9uKGksbyl7aWYoIWl8fCFpLmxlbmd0aClyZXR1cm47Y29uc3QgbD1pLmZpbHRlcihPPT5udWxsIT1PJiZBcnJheS5pc0FycmF5KE8pKTtpZigwPT09bC5sZW5ndGgpcmV0dXJuO2wuZmluZChPPT57Y29uc3RbLCxaLGVlXT1PO3JldHVy'@; put 'biBaIT09ZWV9KTtjb25zdCBnPWwubGVuZ3RoO3IuZG9uZSgoKT0+e2NvbnN0IE89bC5tYXAoZWU9PlsuLi5lZV0pO08uZm9yRWFjaChlZT0+e2VlWzFdPWUucHJvcFRvQ29sKGVlWzFdKX0pO2NvbnN0IFo9Zz4xP3RoaXMuZ2V0U2VsZWN0ZWQoKTpbW09bMF1bMF0sT1swXVsxXV1dO3JldHVy'@; put 'biBuZXcgT3BlKHtjaGFuZ2VzOk8sc2VsZWN0ZWQ6Wixjb3VudENvbHM6ZS5jb3VudENvbHMoKSxjb3VudFJvd3M6ZS5jb3VudFJvd3MoKX0pfSxvKX0sMWUzKX11bmRvKGUsdCl7Y29uc3Qgcj1BZCh0aGlzLmNoYW5nZXMpO2ZvcihsZXQgaT0wLG89ci5sZW5ndGg7aTxvO2krKylyW2ldLnNw'@; put 'bGljZSgzLDEpO2UuYWRkSG9va09uY2UoImFmdGVyQ2hhbmdlIiwoKT0+e2NvbnN0IGk9ZS5jb3VudFJvd3MoKS10aGlzLmNvdW50Um93cztpPjAmJmUuYWx0ZXIoInJlbW92ZV9yb3ciLHZvaWQgMCxpLCJVbmRvUmVkby51bmRvIik7Y29uc3Qgbz1lLmNvdW50Q29scygpLXRoaXMuY291bnRD'@; put 'b2xzO28+MCYmZS5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKSYmZS5hbHRlcigicmVtb3ZlX2NvbCIsdm9pZCAwLG8sIlVuZG9SZWRvLnVuZG8iKSxlLnNjcm9sbFRvRm9jdXNlZENlbGwoKSxlLnNlbGVjdENlbGxzKHRoaXMuc2VsZWN0ZWQsITEsITEpLHQoKX0pLGUuc2V0RGF0YUF0'@; put 'Q2VsbChyLG51bGwsbnVsbCwiVW5kb1JlZG8udW5kbyIpfXJlZG8oZSx0KXtjb25zdCByPUFkKHRoaXMuY2hhbmdlcyk7Zm9yKGxldCBpPTAsbz1yLmxlbmd0aDtpPG87aSsrKXJbaV0uc3BsaWNlKDIsMSk7ZS5hZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLCgpPT57ZS5zZWxlY3RDZWxscyh0'@; put 'aGlzLnNlbGVjdGVkLCExLCExKSx0KCl9KSxlLnNldERhdGFBdENlbGwocixudWxsLG51bGwsIlVuZG9SZWRvLnJlZG8iKX1jb25zdHJ1Y3Rvcih7Y2hhbmdlczplLHNlbGVjdGVkOnQsY291bnRDb2xzOnIsY291bnRSb3dzOml9KXtzdXBlcigiY2hhbmdlIiksdGhpcy5jaGFuZ2VzPWUsdGhp'@; put 'cy5zZWxlY3RlZD10LHRoaXMuY291bnRDb2xzPXIsdGhpcy5jb3VudFJvd3M9aX19Y2xhc3MgTnBlIGV4dGVuZHMgQ217c3RhdGljIHN0YXJ0UmVnaXN0ZXJpbmdFdmVudHMoZSx0KXtlLmFkZEhvb2soImJlZm9yZUZpbHRlciIsKHIsaSk9Pnt0LmRvbmUoKCk9Pm5ldyBOcGUoe2NvbmRpdGlv'@; put 'bnNTdGFjazpyLHByZXZpb3VzQ29uZGl0aW9uc1N0YWNrOml9KSl9KX11bmRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigiZmlsdGVycyIpO2UuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsdCksci5pbXBvcnRDb25kaXRpb25zKHRoaXMucHJldmlvdXNDb25kaXRpb25zU3RhY2sp'@; put 'LHIuZmlsdGVyKCl9cmVkbyhlLHQpe2NvbnN0IHI9ZS5nZXRQbHVnaW4oImZpbHRlcnMiKTtlLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLHQpLHIuaW1wb3J0Q29uZGl0aW9ucyh0aGlzLmNvbmRpdGlvbnNTdGFjayksci5maWx0ZXIoKX1jb25zdHJ1Y3Rvcih7Y29uZGl0aW9uc1N0'@; put 'YWNrOmUscHJldmlvdXNDb25kaXRpb25zU3RhY2s6dH0pe3N1cGVyKCJmaWx0ZXIiKSx0aGlzLmNvbmRpdGlvbnNTdGFjaz1lLHRoaXMucHJldmlvdXNDb25kaXRpb25zU3RhY2s9dH19Y2xhc3MgRnBlIGV4dGVuZHMgQ217c3RhdGljIHN0YXJ0UmVnaXN0ZXJpbmdFdmVudHMoZSx0KXtlLmFk'@; put 'ZEhvb2soImJlZm9yZU1lcmdlQ2VsbHMiLChyLGkpPT57aWYoaSlyZXR1cm47Y29uc3Qgbz1yLGE9by5nZXRUb3BTdGFydENvcm5lcigpLGw9by5nZXRCb3R0b21FbmRDb3JuZXIoKSx1PWUuZ2V0RGF0YShhLnJvdz8/dm9pZCAwLGEuY29sPz92b2lkIDAsbC5yb3c/P3ZvaWQgMCxsLmNvbD8/'@; put 'dm9pZCAwKTt0LmRvbmUoKCk9Pm5ldyBGcGUoe2RhdGE6dSxjZWxsUmFuZ2U6b30pKX0pfXVuZG8oZSx0KXtjb25zdCByPWUuZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7ZS5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIix0KSxyLnVubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCk7'@; put 'Y29uc3QgaT10aGlzLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5lcigpO2UucG9wdWxhdGVGcm9tQXJyYXkoaS5yb3c/PzAsaS5jb2w/PzAsdGhpcy5kYXRhLHZvaWQgMCx2b2lkIDAsIk1lcmdlQ2VsbHMiKX1yZWRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigibWVyZ2VDZWxscyIpO2Uu'@; put 'YWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsdCksci5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlKX1jb25zdHJ1Y3Rvcih7ZGF0YTplLGNlbGxSYW5nZTp0fSl7c3VwZXIoIm1lcmdlX2NlbGxzIiksdGhpcy5jZWxsUmFuZ2U9dCx0aGlzLmRhdGE9ZX19ZnVuY3Rpb24gWWplKG4sZSx0'@; put 'LHIsaSl7Y29uc3Qgbz1bXTtyZXR1cm4gVmEocixpLGE9PntWYShlLHQsbD0+e2NvbnN0IHU9bi5nZXRDZWxsTWV0YShsLGEpO28ucHVzaChbdS52aXN1YWxSb3csdS52aXN1YWxDb2wsdV0pfSl9KSxvfWNsYXNzIFBwZSBleHRlbmRzIENte3N0YXRpYyBzdGFydFJlZ2lzdGVyaW5nRXZlbnRz'@; put 'KGUsdCl7ZS5hZGRIb29rKCJiZWZvcmVSZW1vdmVDb2wiLChyLGksbyxhKT0+e3QuZG9uZSgoKT0+e2NvbnN0IHU9ZS5nZXRTb3VyY2VEYXRhQXJyYXkoKSxnPShlLmNvdW50Q29scygpK3IpJWUuY291bnRDb2xzKCksRT1nK2ktMSxPPVtdLFo9W10sZWU9W107aWYoVmEodS5sZW5ndGgtMSxN'@; put 'ZT0+e08ucHVzaCgoKE1lLEhlLFdlKT0+e2NvbnN0IGF0PVtdO3JldHVybiBWYShIZSxXZSxDdD0+e2F0LnB1c2goTWVbZS50b1BoeXNpY2FsQ29sdW1uKEN0KV0pfSksYXR9KSh1W01lXSxnLEUpKX0pLFZhKGktMSxNZT0+e2VlLnB1c2goZS50b1BoeXNpY2FsQ29sdW1uKGcrTWUpKX0pLEFy'@; put 'cmF5LmlzQXJyYXkoZS5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnMpKXtjb25zdCBNZT1lLmdldFNldHRpbmdzKCkuY29sSGVhZGVycztWYShpLTEsSGU9PntaLnB1c2goTWVbZS50b1BoeXNpY2FsQ29sdW1uKGcrSGUpXXx8bnVsbCl9KX1yZXR1cm4gbmV3IFBwZSh7aW5kZXg6ZyxpbmRleGVz'@; put 'OmVlLGRhdGE6TyxhbW91bnQ6aSxoZWFkZXJzOlosY29sdW1uUG9zaXRpb25zOmUuY29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkscm93UG9zaXRpb25zOmUucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksZml4ZWRDb2x1bW5zU3RhcnQ6ZS5nZXRTZXR0'@; put 'aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0Pz8wLHJlbW92ZWRDZWxsTWV0YXM6WWplKGUsMCxlLmNvdW50Um93cygpLGcsRSl9KX0sYSl9KX11bmRvKGUsdCl7ZS5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0PXRoaXMuZml4ZWRDb2x1bW5zU3RhcnQ7Y29uc3QgaT10aGlzLmluZGV4'@; put 'ZXMuc2xpY2UoMCkuc29ydCgoRSxPKT0+RS1PKSxvPShFLE8sWik9PlpbdGhpcy5pbmRleGVzLmluZGV4T2YoaVtPXSldLGE9dGhpcy5kYXRhLmxlbmd0aCxsPVtdO2ZvcihsZXQgRT0wO0U8YTtFKyspbC5wdXNoKF9jKHRoaXMuZGF0YVtFXSxvKSk7Y29uc3QgdT1fYyh0aGlzLmhlYWRlcnMs'@; put 'byksZz1bXTtlLmNvbHVtbkluZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLmNvbHVtblBvc2l0aW9ucyksZS5hbHRlcigiaW5zZXJ0X2NvbF9zdGFydCIsZS50b1Zpc3VhbENvbHVtbih0aGlzLmluZGV4ZXNbMF0pLHRoaXMuaW5kZXhlcy5sZW5ndGgsIlVuZG9SZWRvLnVuZG8i'@; put 'KSxlLmJhdGNoRXhlY3V0aW9uKCgpPT57ZS5yb3dJbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UodGhpcy5yb3dQb3NpdGlvbnMpLGUuY29sdW1uSW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKHRoaXMuY29sdW1uUG9zaXRpb25zKX0sITApLFhuKGUuZ2V0U291cmNlRGF0YUFy'@; put 'cmF5KCksKEUsTyk9Pntjb25zdCBaPUU7WG4oaSwoZWUsdmUpPT57WltlZV09bFtPXVt2ZV0sZy5wdXNoKFtPLGVlLFpbZWVdXSl9KX0pLHR5cGVvZiB0aGlzLmhlYWRlcnM8InUiJiZYbih1LChFLE8pPT57ZS5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnNbaVtPXV09RX0pLHRoaXMucmVtb3Zl'@; put 'ZENlbGxNZXRhcy5mb3JFYWNoKEU9Pntjb25zdFtPLFosZWVdPUU7ZS5zZXRDZWxsTWV0YU9iamVjdChPLFosZWUpfSksZS5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIix0KSxlLnNldFNvdXJjZURhdGFBdENlbGwoZyx2b2lkIDAsdm9pZCAwLCJVbmRvUmVkby51bmRvIil9cmVkbyhl'@; put 'LHQpe2UuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlQ29sIix0KSxlLmFsdGVyKCJyZW1vdmVfY29sIix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5yZWRvIil9Y29uc3RydWN0b3Ioe2luZGV4OmUsaW5kZXhlczp0LGRhdGE6cixhbW91bnQ6aSxoZWFkZXJzOm8sY29sdW1uUG9z'@; put 'aXRpb25zOmEscm93UG9zaXRpb25zOmwsZml4ZWRDb2x1bW5zU3RhcnQ6dSxyZW1vdmVkQ2VsbE1ldGFzOmd9KXtzdXBlcigicmVtb3ZlX2NvbCIpLHRoaXMuaW5kZXg9ZSx0aGlzLmluZGV4ZXM9dCx0aGlzLmRhdGE9cix0aGlzLmFtb3VudD1pLHRoaXMuaGVhZGVycz1vLHRoaXMuY29sdW1u'@; put 'UG9zaXRpb25zPWEuc2xpY2UoMCksdGhpcy5yb3dQb3NpdGlvbnM9bC5zbGljZSgwKSx0aGlzLmZpeGVkQ29sdW1uc1N0YXJ0PXUsdGhpcy5yZW1vdmVkQ2VsbE1ldGFzPWd9fWNsYXNzIEhwZSBleHRlbmRzIENte3N0YXRpYyBzdGFydFJlZ2lzdGVyaW5nRXZlbnRzKGUsdCl7ZS5hZGRIb29r'@; put 'KCJiZWZvcmVSZW1vdmVSb3ciLChyLGksbyxhKT0+e3QuZG9uZSgoKT0+e2NvbnN0IHU9ZS50b1BoeXNpY2FsUm93KHIpLGc9dStpLTEsRT1bXTtmb3IobGV0IE89MDtPPGk7TysrKXtjb25zdCBaPUFkKGUuZ2V0U291cmNlRGF0YUF0Um93KHUrTykpO1omJiJvYmplY3QiPT10eXBlb2YgWiYm'@; put 'IUFycmF5LmlzQXJyYXkoWikmJmRlbGV0ZSBaLl9fY2hpbGRyZW4sRS5wdXNoKFopfXJldHVybiBuZXcgSHBlKHtpbmRleDp1LGRhdGE6RSxmaXhlZFJvd3NCb3R0b206ZS5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbT8/MCxmaXhlZFJvd3NUb3A6ZS5nZXRTZXR0aW5ncygpLmZpeGVk'@; put 'Um93c1RvcD8/MCxyb3dJbmRleGVzU2VxdWVuY2U6ZS5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKSxyZW1vdmVkQ2VsbE1ldGFzOllqZShlLHUsZywwLGUuY291bnRDb2xzKCktMSkscmVtb3ZlZE1lcmdlZENlbGxzOmFLdChlLHIsaSl9KX0sYSl9KX11bmRvKGUsdCl7Y29u'@; put 'c3Qgcj1lLmdldFNldHRpbmdzKCksaT1bXTtyLmZpeGVkUm93c0JvdHRvbT10aGlzLmZpeGVkUm93c0JvdHRvbSxyLmZpeGVkUm93c1RvcD10aGlzLmZpeGVkUm93c1RvcCx0aGlzLmRhdGEuZm9yRWFjaCgobyxhKT0+e2NvbnN0IGw9bztPYmplY3Qua2V5cyhsKS5mb3JFYWNoKHU9Pntjb25z'@; put 'dCBnPU51bWJlci5wYXJzZUludCh1LDEwKTtpLnB1c2goW3RoaXMuaW5kZXgrYSxpc05hTihnKT91OmcsbFt1XV0pfSl9KSxlLnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLnJvd0luZGV4ZXNTZXF1ZW5jZSksZS5hbHRlcigiaW5zZXJ0X3Jvd19hYm92ZSIsZS50b1Zp'@; put 'c3VhbFJvdyh0aGlzLmluZGV4KSx0aGlzLmRhdGEubGVuZ3RoLCJVbmRvUmVkby51bmRvIiksZS5yb3dJbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UodGhpcy5yb3dJbmRleGVzU2VxdWVuY2UpLHRoaXMucmVtb3ZlZENlbGxNZXRhcy5mb3JFYWNoKG89Pntjb25zdFthLGwsdV09bztl'@; put 'LnNldENlbGxNZXRhT2JqZWN0KGEsbCx1KX0pLGZ1bmN0aW9uIHNLdChuLGUpe2lmKCFlfHwwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IHQ9bi5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTt0Py5lbmFibGVkJiZlLmZvckVhY2goKHtyb3c6cixjb2w6aSxyb3dzcGFuOm8sY29sc3BhbjphfSk9'@; put 'Pntjb25zdCBsPXIrby0xLHU9aSthLTEsZz1uLl9jcmVhdGVDZWxsQ29vcmRzKHIsaSksRT1uLl9jcmVhdGVDZWxsQ29vcmRzKGwsdSksTz1uLl9jcmVhdGVDZWxsUmFuZ2UoZyxnLEUpO3QudW5tZXJnZVJhbmdlKE8sITApLHQubWVyZ2UocixpLGwsdSl9KX0oZSx0aGlzLnJlbW92ZWRNZXJn'@; put 'ZWRDZWxscyksZS5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIix0KSxlLnNldFNvdXJjZURhdGFBdENlbGwoaSx2b2lkIDAsdm9pZCAwLCJVbmRvUmVkby51bmRvIil9cmVkbyhlLHQpe2UuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlUm93Iix0KSxlLmFsdGVyKCJyZW1vdmVfcm93Iixl'@; put 'LnRvVmlzdWFsUm93KHRoaXMuaW5kZXgpLHRoaXMuZGF0YS5sZW5ndGgsIlVuZG9SZWRvLnJlZG8iKX1jb25zdHJ1Y3Rvcih7aW5kZXg6ZSxkYXRhOnQsZml4ZWRSb3dzQm90dG9tOnIsZml4ZWRSb3dzVG9wOmkscm93SW5kZXhlc1NlcXVlbmNlOm8scmVtb3ZlZENlbGxNZXRhczphLHJlbW92'@; put 'ZWRNZXJnZWRDZWxsczpsfSl7c3VwZXIoInJlbW92ZV9yb3ciKSx0aGlzLmluZGV4PWUsdGhpcy5kYXRhPXQsdGhpcy5maXhlZFJvd3NCb3R0b209cix0aGlzLmZpeGVkUm93c1RvcD1pLHRoaXMucm93SW5kZXhlc1NlcXVlbmNlPW8sdGhpcy5yZW1vdmVkQ2VsbE1ldGFzPWEsdGhpcy5yZW1v'@; put 'dmVkTWVyZ2VkQ2VsbHM9bH19ZnVuY3Rpb24gYUt0KG4sZSx0KXtjb25zdCByPW4uZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7aWYoIXI/LmVuYWJsZWQpcmV0dXJuW107Y29uc3QgaT1lK3QtMSxvPVtdO3JldHVybiByLm1lcmdlZENlbGxzQ29sbGVjdGlvbj8ubWVyZ2VkQ2VsbHMuZm9yRWFj'@; put 'aCgoe3JvdzphLGNvbDpsLHJvd3NwYW46dSxjb2xzcGFuOmd9KT0+e2E8PWkmJmErdS0xPj1lJiZvLnB1c2goe3JvdzphLGNvbDpsLHJvd3NwYW46dSxjb2xzcGFuOmd9KX0pLG99Y2xhc3MgVnBlIGV4dGVuZHMgQ217c3RhdGljIHN0YXJ0UmVnaXN0ZXJpbmdFdmVudHMoZSx0KXtlLmFkZEhv'@; put 'b2soImJlZm9yZVJvd01vdmUiLChyLGkpPT57ITEhPT1yJiZ0LmRvbmUoKCk9Pm5ldyBWcGUoe3Jvd3M6cixmaW5hbEluZGV4Oml9KSl9KX11bmRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigibWFudWFsUm93TW92ZSIpO2UuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsdCksTTJl'@; put 'KHRoaXMucm93cyx0aGlzLmZpbmFsUm93SW5kZXgsZS5yb3dJbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSkucmV2ZXJzZSgpLmZvckVhY2goKHtmcm9tOm8sdG86YX0pPT57bzxhJiYoYS09MSksci5tb3ZlUm93KGEsbyl9KSxlLnJlbmRlcigpLGUuZGVzZWxlY3RDZWxsKCksZS5z'@; put 'ZWxlY3RSb3dzKHRoaXMucm93c1swXSx0aGlzLnJvd3NbMF0rdGhpcy5yb3dzLmxlbmd0aC0xKX1yZWRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigibWFudWFsUm93TW92ZSIpO2UuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsdCksci5tb3ZlUm93cyh0aGlzLnJvd3Muc2xpY2Uo'@; put 'KSx0aGlzLmZpbmFsUm93SW5kZXgpLGUucmVuZGVyKCksZS5kZXNlbGVjdENlbGwoKSxlLnNlbGVjdFJvd3ModGhpcy5maW5hbFJvd0luZGV4LHRoaXMuZmluYWxSb3dJbmRleCt0aGlzLnJvd3MubGVuZ3RoLTEpfWNvbnN0cnVjdG9yKHtyb3dzOmUsZmluYWxJbmRleDp0fSl7c3VwZXIoInJv'@; put 'd19tb3ZlIiksdGhpcy5yb3dzPWUuc2xpY2UoKSx0aGlzLmZpbmFsUm93SW5kZXg9dH19Y2xhc3MgQnBlIGV4dGVuZHMgQ217c3RhdGljIHN0YXJ0UmVnaXN0ZXJpbmdFdmVudHMoZSx0KXtlLmFkZEhvb2soImFmdGVyVW5tZXJnZUNlbGxzIiwocixpKT0+e2l8fHQuZG9uZSgoKT0+bmV3IEJw'@; put 'ZSh7Y2VsbFJhbmdlOnJ9KSl9KX11bmRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigibWVyZ2VDZWxscyIpO2UuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsdCksci5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlLCEwKX1yZWRvKGUsdCl7Y29uc3Qgcj1lLmdldFBsdWdpbigibWVy'@; put 'Z2VDZWxscyIpO2UuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsdCksci51bm1lcmdlUmFuZ2UodGhpcy5jZWxsUmFuZ2UsITApLGUucmVuZGVyKCl9Y29uc3RydWN0b3Ioe2NlbGxSYW5nZTplfSl7c3VwZXIoInVubWVyZ2VfY2VsbHMiKSx0aGlzLmNlbGxSYW5nZT1lfX1mdW5jdGlv'@; put 'biBaamUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQobil9R28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVVuZG8iKSxHby5nZXRTaW5n'@; put 'bGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJVbmRvIiksR28uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVJlZG8iKSxHby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJSZWRvIik7dmFyIGpwZT1uZXcgV2Vha01hcDtjbGFzcyB2S3QgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBM'@; put 'VUdJTl9LRVkoKXtyZXR1cm4idW5kb1JlZG8ifXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDFlM31zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygpe3JldHVybiEwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS51bmRvfWVuYWJsZVBsdWdpbigp'@; put 'e3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uIGhLdChuLGUpe3JldHVybiBmdW5jdGlvbiB1S3QobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFpqZShuLGUsImdldCIpKX0odGhpcyxqcGUpKSx0aGlzLnJlZ2lzdGVy'@; put 'U2hvcnRjdXRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfWRpc2FibGVQbHVnaW4oKXtzdXBlci5kaXNhYmxlUGx1Z2luKCksdGhpcy5jbGVhcigpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7Y29uc3QgdD10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFn'@; put 'ZXIoKS5nZXRDb250ZXh0KCJncmlkIik7dD8uYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250cm9sL01ldGEiLCJ6Il1dLGNhbGxiYWNrOigpPT57dGhpcy51bmRvKCl9fSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJ5Il0sWyJDb250cm9sL01ldGEiLCJTaGlmdCIsInoiXV0sY2FsbGJhY2s6'@; put 'KCk9Pnt0aGlzLnJlZG8oKX19XSx7cnVuT25seUlmOm89PiFvPy5hbHRLZXksZ3JvdXA6InVuZG9SZWRvIn0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIik/LnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoInVuZG9S'@; put 'ZWRvIil9ZG9uZShlLHQpe2lmKHRoaXMuaWdub3JlTmV3QWN0aW9uc3x8IlVuZG9SZWRvLnVuZG8iPT09dHx8IlVuZG9SZWRvLnJlZG8iPT09dHx8ImF1dG8iPT09dClyZXR1cm47Y29uc3QgaT10aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCk7aWYoITE9PT10aGlzLmhvdC5ydW5Ib29rcygiYmVm'@; put 'b3JlVW5kb1N0YWNrQ2hhbmdlIixpLHQpKXJldHVybjtjb25zdCBhPWUoKSxsPXRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpO251bGwhPT1hJiZ0aGlzLmRvbmVBY3Rpb25zLnB1c2goYSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVW5kb1N0YWNrQ2hhbmdlIixpLHRoaXMuZG9uZUFjdGlv'@; put 'bnMuc2xpY2UoKSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsbCksdGhpcy51bmRvbmVBY3Rpb25zLmxlbmd0aD0wLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJlZG9TdGFja0NoYW5nZSIsbCx0aGlzLnVuZG9uZUFjdGlvbnMuc2xpY2UoKSl9dW5kbygpe2lm'@; put 'KCF0aGlzLmlzVW5kb0F2YWlsYWJsZSgpKXJldHVybjtjb25zdCBlPXRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIixlKTtjb25zdCB0PXRoaXMuZG9uZUFjdGlvbnMucG9wKCk7dGhpcy5ob3QucnVuSG9va3MoImFmdGVy'@; put 'VW5kb1N0YWNrQ2hhbmdlIixlLHRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKSk7Y29uc3Qgcj1BZCh0KTtpZighMT09PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVVbmRvIixyKSlyZXR1cm47dGhpcy5pZ25vcmVOZXdBY3Rpb25zPSEwO2NvbnN0IG89dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNl'@; put 'KCk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsbyksdC51bmRvKHRoaXMuaG90LCgpPT57dGhpcy5pZ25vcmVOZXdBY3Rpb25zPSExLHRoaXMudW5kb25lQWN0aW9ucy5wdXNoKHQpfSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixv'@; put 'LHRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbmRvIixyKX1yZWRvKCl7aWYoIXRoaXMuaXNSZWRvQXZhaWxhYmxlKCkpcmV0dXJuO2NvbnN0IGU9dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJl'@; put 'ZG9TdGFja0NoYW5nZSIsZSk7Y29uc3QgdD10aGlzLnVuZG9uZUFjdGlvbnMucG9wKCk7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixlLHRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpKTtjb25zdCByPUFkKHQpO2lmKCExPT09dGhpcy5ob3QucnVuSG9va3MoImJl'@; put 'Zm9yZVJlZG8iLHIpKXJldHVybjt0aGlzLmlnbm9yZU5ld0FjdGlvbnM9ITA7Y29uc3Qgbz10aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsbyksdC5yZWRvKHRoaXMuaG90LCgpPT57dGhpcy5pZ25vcmVOZXdBY3Rpb25z'@; put 'PSExLHRoaXMuZG9uZUFjdGlvbnMucHVzaCh0KX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVuZG9TdGFja0NoYW5nZSIsbyx0aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCkpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJlZG8iLHIpfWlzVW5kb0F2YWlsYWJsZSgpe3JldHVybiB0aGlzLmRv'@; put 'bmVBY3Rpb25zLmxlbmd0aD4wfWlzUmVkb0F2YWlsYWJsZSgpe3JldHVybiB0aGlzLnVuZG9uZUFjdGlvbnMubGVuZ3RoPjB9Y2xlYXIoKXt0aGlzLmRvbmVBY3Rpb25zLmxlbmd0aD0wLHRoaXMudW5kb25lQWN0aW9ucy5sZW5ndGg9MH1kZXN0cm95KCl7dGhpcy5jbGVhcigpLHRoaXMuZG9u'@; put 'ZUFjdGlvbnM9W10sdGhpcy51bmRvbmVBY3Rpb25zPVtdLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihlKSxmdW5jdGlvbiBmS3QobixlLHQpeyhmdW5jdGlvbiBjS3QobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0'@; put 'aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobixlKSxlLnNldChuLHQpfSh0aGlzLGpwZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5kb25lQWN0aW9ucz1bXSx0aGlzLnVuZG9uZUFjdGlvbnM9W10sdGhpcy5pZ25vcmVOZXdBY3Rpb25z'@; put 'PSExLGZ1bmN0aW9uIHBLdChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIGRLdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFs'@; put 'dWU9dH19KG4sWmplKG4sZSwic2V0IiksdCksdH0odGhpcyxqcGUsKHQscik9PnsibG9hZERhdGEiPT09ciYmdGhpcy5jbGVhcigpfSksZnVuY3Rpb24gbEt0KG4sZSl7W2twZSxScGUsSXBlLERwZSxMcGUsT3BlLE5wZSxGcGUsUHBlLEhwZSxWcGUsQnBlXS5mb3JFYWNoKHQ9PnQuc3RhcnRS'@; put 'ZWdpc3RlcmluZ0V2ZW50cyhuLGUpKX0oZSx0aGlzKX19Y29uc3QgQTA9Imh0LWRpYWxvZyIsUEY9bmV3IE1hcChbWyJiYXNlIixmdW5jdGlvbiBfS3QoKXtsZXQgZT1udWxsO2NvbnN0IHQ9e307cmV0dXJue1RFTVBMQVRFX05BTUU6ImJhc2UiLGRpYWxvZ0ExMVlPcHRpb25zOigpPT4oe3Jv'@; put 'bGU6ImRpYWxvZyJ9KSxjb21waWxlOmZ1bmN0aW9uIHIoKXtjb25zdCBvPXN3YCR7ZnVuY3Rpb24gbigpe3JldHVybmBcbiAgICAgIDxkaXYgZGF0YS1yZWY9ImNvbnRlbnRFbGVtZW50IiBjbGFzcz0iJHtBMH1fX2NvbnRlbnQiPjwvZGl2PlxuICAgIGB9KCl9YDtyZXR1cm4gT2JqZWN0LmFz'@; put 'c2lnbih0LG8ucmVmcyksZT1vLmZyYWdtZW50LG99LGZvY3VzYWJsZUVsZW1lbnRzOmZ1bmN0aW9uIGkoKXtyZXR1cm4gbnVsbD09PWUmJkpyKCJDb21waWxlIHRoZSB0ZW1wbGF0ZSBmaXJzdC4iKSxbXX19fV0sWyJjb25maXJtIixmdW5jdGlvbiB5S3Qoe2lkOm49IiIsdGl0bGU6ZT0iIixk'@; put 'ZXNjcmlwdGlvbjp0PSIiLGJ1dHRvbnM6cj1bXX0pe2xldCBvPW51bGw7Y29uc3QgYT17fTtyZXR1cm57VEVNUExBVEVfTkFNRToiY29uZmlybSIsZGlhbG9nQTExWU9wdGlvbnM6KCk9Pih7cm9sZToiYWxlcnRkaWFsb2ciLGFyaWFMYWJlbGxlZGJ5OmAke259LWRpYWxvZy1jb25maXJtLXRp'@; put 'dGxlYCxhcmlhRGVzY3JpYmVkYnk6dD9gJHtufS1kaWFsb2ctY29uZmlybS1kZXNjcmlwdGlvbmA6dm9pZCAwfSksY29tcGlsZTpmdW5jdGlvbiBsKCl7Y29uc3QgZz1zd2Ake2Z1bmN0aW9uIGkoKXtyZXR1cm5gXG4gICAgICA8ZGl2IHRhYmluZGV4PSItMSIgZGF0YS1yZWY9ImNvbnRlbnRF'@; put 'bGVtZW50IiBjbGFzcz0iJHtBMH1fX2NvbnRlbnQtd3JhcHBlci1pbm5lciI+XG4gICAgICAgIDxkaXYgY2xhc3M9IiR7QTB9X19jb250ZW50Ij5cbiAgICAgICAgICA8aDJcbiAgICAgICAgICAgIGlkPSIke259LWRpYWxvZy1jb25maXJtLXRpdGxlIlxuICAgICAgICAgICAgY2xhc3M9IiR7'@; put 'QTB9X190aXRsZSI+JHtzbShlKX08L2gyPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICBpZD0iJHtufS1kaWFsb2ctY29uZmlybS1kZXNjcmlwdGlvbiJcbiAgICAgICAgICAgIGNsYXNzPSIke0EwfV9fZGVzY3JpcHRpb24iPiR7c20odCl9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAg'@; put 'ICAgJHtyLmxlbmd0aD4wP2BcbiAgICAgICAgICA8ZGl2IGRhdGEtcmVmPSJidXR0b25zQ29udGFpbmVyIiBjbGFzcz0iJHtBMH1fX2J1dHRvbnMiPlxuICAgICAgICAgICAgJHtyLm1hcChnPT5gXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Imh0LWJ1dHRvbiBodC1idXR0b24tLSR7'@; put 'Zy50eXBlfSI+JHtzbShnLnRleHQpfTwvYnV0dG9uPlxuICAgICAgICAgICAgYCkuam9pbigiIil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIGA6IiJ9XG4gICAgICA8L2Rpdj5cbiAgICBgfSgpfWA7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSxnLnJlZnMpLG89Zy5mcmFnbWVudCxnfSxm'@; put 'b2N1c2FibGVFbGVtZW50czpmdW5jdGlvbiB1KCl7bnVsbD09PW8mJkpyKCJDb21waWxlIHRoZSB0ZW1wbGF0ZSBmaXJzdC4iKTtjb25zdHtjb250ZW50RWxlbWVudDpnLGJ1dHRvbnNDb250YWluZXI6RX09YSxPPVtdO3JldHVybiBFP08ucHVzaCguLi5BcnJheS5mcm9tKEUuY2hpbGRyZW4p'@; put 'KTpPLnB1c2goZyksT319fV1dKTtmdW5jdGlvbiAkamUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHFqZShuLGUsdCl7aWYoIWUuaGFz'@; put 'KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBIdShuLGUpe3JldHVybiBmdW5jdGlvbiBiS3QobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZh'@; put 'bHVlfShuLHFqZShuLGUsImdldCIpKX1mdW5jdGlvbiBNQyhuLGUsdCl7JGplKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBhZihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIHdLdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5'@; put 'cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4scWplKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBLamUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUg'@; put 'ZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHR9ZnVuY3Rpb24gWGplKG4sZSl7JGplKG4sZSksZS5hZGQobil9Y29uc3QgQ0t0PWBcbjxkaXYgZGF0YS1yZWY9ImRpYWxvZ0VsZW1lbnQiIGNsYXNzPSIke0EwfSI+XG4gIDxkaXYgZGF0YS1yZWY9ImRpYWxvZ1dyYXBwZXJFbGVtZW50'@; put 'IiBjbGFzcz0iJHtBMH1fX2NvbnRlbnQtd3JhcHBlciI+XG48L2Rpdj5cbmA7dmFyIEhGPW5ldyBXZWFrTWFwLGkzPW5ldyBXZWFrTWFwLHRxPW5ldyBXZWFrTWFwLHp4PW5ldyBXZWFrTWFwLHo0PW5ldyBXZWFrTWFwLFZGPW5ldyBXZWFrTWFwLG5xPW5ldyBXZWFrTWFwLFFqZT1uZXcgV2Vh'@; put 'a1NldCxKamU9bmV3IFdlYWtTZXQ7Y2xhc3MgZVVle3VzZVRlbXBsYXRlKGUsdD17fSl7UEYuaGFzKGUpJiYiYmFzZSIhPT1lfHxKcih5Y2BJbnZhbGlkIHRlbXBsYXRlOiAke2V9Llx4MjAKICAgICAgICBWYWxpZCB0ZW1wbGF0ZXMgYXJlOiAke0FycmF5LmZyb20oUEYua2V5cygpKS5maWx0'@; put 'ZXIoaT0+ImJhc2UiIT09aSkuam9pbigiLCAiKX0uYCksYWYodGhpcyx6NCxQRi5nZXQoZSkodCkpLGFmKHRoaXMsVkYsKHQuYnV0dG9ucz8/W10pLm1hcChyPT5yLmNhbGxiYWNrKSl9dXNlRGVmYXVsdFRlbXBsYXRlKCl7YWYodGhpcyx6NCxQRi5nZXQoImJhc2UiKSgpKSxhZih0aGlzLFZG'@; put 'LFtdKX1pbnN0YWxsKCl7aWYoSHUodGhpcyxpMyk/LmRpYWxvZ0VsZW1lbnQpcmV0dXJuO2NvbnN0IGU9c3dgJHtDS3R9YDthZih0aGlzLGkzLGUucmVmcyk7Y29uc3R7ZGlhbG9nRWxlbWVudDp0fT1IdSh0aGlzLGkzKTtLbyh0LFtbImFyaWEtbW9kYWwiLCJ0cnVlIl0sWyJkaXIiLEh1KHRo'@; put 'aXMsdHEpPyJydGwiOiJsdHIiXV0pLHQuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbnN0YXJ0IiwoKT0+S2plKHRoaXMsSmplLEVLdCkuY2FsbCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwoKT0+S2plKHRoaXMsUWplLFNLdCkuY2FsbCh0aGlzKSksSHUo'@; put 'dGhpcyxIRikmJkh1KHRoaXMsSEYpLmFwcGVuZENoaWxkKGUuZnJhZ21lbnQpfWdldENvbnRhaW5lcigpe3JldHVybiBIdSh0aGlzLGkzKS5kaWFsb2dFbGVtZW50fWdldEZvY3VzYWJsZUVsZW1lbnRzKCl7cmV0dXJuIEh1KHRoaXMsejQpLmZvY3VzYWJsZUVsZW1lbnRzKCl9dXBkYXRlRGlh'@; put 'bG9nKHtpc1Zpc2libGU6ZSxjb250ZW50OnQsY3VzdG9tQ2xhc3NOYW1lOnIsYmFja2dyb3VuZDppLGNvbnRlbnRCYWNrZ3JvdW5kOm8sYW5pbWF0aW9uOmEsYTExeTpsfSl7Y29uc3QgdT1IdSh0aGlzLHo0KS5jb21waWxlKCkse2RpYWxvZ0VsZW1lbnQ6ZyxkaWFsb2dXcmFwcGVyRWxlbWVu'@; put 'dDpFfT1IdSh0aGlzLGkzKSxPPWw7RS5pbm5lckhUTUw9IiIsRS5hcHBlbmRDaGlsZCh1LmZyYWdtZW50KSxPYmplY3QuYXNzaWduKEh1KHRoaXMsaTMpLHUucmVmcyk7Y29uc3R7Y29udGVudEVsZW1lbnQ6WixidXR0b25zQ29udGFpbmVyOmVlfT1IdSh0aGlzLGkzKTsiYmFzZSIhPT1IdSh0'@; put 'aGlzLHo0KS5URU1QTEFURV9OQU1FJiZPYmplY3QuYXNzaWduKE8sSHUodGhpcyx6NCkuZGlhbG9nQTExWU9wdGlvbnMoKSk7Y29uc3QgdmU9cj9gICR7cn1gOiIiLE1lPWk/YCAke0EwfS0tYmFja2dyb3VuZC0ke2l9YDoiIixIZT1hP2AgJHtBMH0tLWFuaW1hdGlvbmA6IiIsV2U9ZT9gICR7'@; put 'QTB9LS1zaG93YDoiIjtyZXR1cm4gZy5jbGFzc05hbWU9W0EwLGAke0EwfS0tJHtIdSh0aGlzLHo0KS5URU1QTEFURV9OQU1FfWAsImhhbmRzb250YWJsZSIsdmUsTWUsSGUsV2VdLmpvaW4oIiAiKSwiYmFzZSI9PT1IdSh0aGlzLHo0KS5URU1QTEFURV9OQU1FJiZLbyhnLFtiNCgtMSldKSxL'@; put 'byhnLFsiYWxlcnRkaWFsb2ciPT09Ty5yb2xlP1sicm9sZSIsImFsZXJ0ZGlhbG9nIl06WyJyb2xlIiwiZGlhbG9nIl1dKSxPLmFyaWFMYWJlbCYmIU8uYXJpYUxhYmVsbGVkYnk/S28oZyxbTjMoTy5hcmlhTGFiZWwpXSk6dzQoZywiYXJpYS1sYWJlbCIpLE8uYXJpYUxhYmVsbGVkYnk/S28o'@; put 'ZyxbVE10KE8uYXJpYUxhYmVsbGVkYnkpXSk6dzQoZywiYXJpYS1sYWJlbGxlZGJ5IiksTy5hcmlhRGVzY3JpYmVkYnk/S28oZyxbeE10KE8uYXJpYURlc2NyaWJlZGJ5KV0pOnc0KGcsImFyaWEtZGVzY3JpYmVkYnkiKSxZcihaLGAke0EwfV9fY29udGVudCR7bz9gICR7QTB9X19jb250ZW50'@; put 'LS1iYWNrZ3JvdW5kYDoiIn1gKSwiYmFzZSI9PT1IdSh0aGlzLHo0KS5URU1QTEFURV9OQU1FPyhaLmlubmVySFRNTD0iIiwic3RyaW5nIj09dHlwZW9mIHQ/XzcoWix0LEh1KHRoaXMsbnEpPyhDdCxBdCk9Pkh1KHRoaXMsbnEpLmNhbGwodGhpcyxDdCk/P0N0OnZvaWQgMCwiZGlhbG9nIixI'@; put 'dSh0aGlzLEhGKSk6KGhzKHQpfHx0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkmJlouYXBwZW5kQ2hpbGQodCkpOmVlJiZBcnJheS5mcm9tKGVlLmNoaWxkcmVuKS5mb3JFYWNoKChDdCxBdCk9Pntjb25zdCBLdD1IdSh0aGlzLFZGKVtBdF07S3QmJkN0LmFkZEV2ZW50TGlzdGVuZXIo'@; put 'ImNsaWNrIixLdCl9KSx0aGlzfXNob3dEaWFsb2coZSl7Y29uc3R7ZGlhbG9nRWxlbWVudDp0fT1IdSh0aGlzLGkzKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJibG9jayIsWXIodCxgJHtBMH0tLXNob3dgKSxhZih0aGlzLHp4LCExKSx0aGlzfWhpZGVEaWFsb2coZSl7Y29uc3R7ZGlhbG9n'@; put 'RWxlbWVudDp0fT1IdSh0aGlzLGkzKTtyZXR1cm4ga28odCxgJHtBMH0tLXNob3dgKSwoZSYmIUh1KHRoaXMsengpfHwhZSkmJih0LnN0eWxlLmRpc3BsYXk9Im5vbmUiKSxhZih0aGlzLHp4LCExKSx0aGlzfWZvY3VzRGlhbG9nKCl7SHUodGhpcyxpMykuZGlhbG9nRWxlbWVudC5mb2N1cygp'@; put 'fXVwZGF0ZVdpZHRoKGUpe3JldHVybiBIdSh0aGlzLGkzKS5kaWFsb2dFbGVtZW50LnN0eWxlLndpZHRoPWAke2V9cHhgLHRoaXN9ZGVzdHJveURpYWxvZygpe0h1KHRoaXMsaTMpPy5kaWFsb2dFbGVtZW50LnJlbW92ZSgpLGFmKHRoaXMsaTMsdm9pZCAwKX1jb25zdHJ1Y3Rvcih7b3Zlcmxh'@; put 'eUNvbnRhaW5lcjplLGlzUnRsOnQsc2FuaXRpemVyOnJ9KXtYamUodGhpcyxRamUpLFhqZSh0aGlzLEpqZSksTUModGhpcyxIRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTUModGhpcyxpMyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTUModGhpcyx0cSx7d3JpdGFibGU6ITAs'@; put 'dmFsdWU6dm9pZCAwfSksTUModGhpcyx6eCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTUModGhpcyx6NCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTUModGhpcyxWRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksTUModGhpcyxucSx7d3JpdGFibGU6ITAsdmFsdWU6dm9p'@; put 'ZCAwfSksYWYodGhpcyx0cSwhMSksYWYodGhpcyx6eCwhMSksYWYodGhpcyx6NCxQRi5nZXQoImJhc2UiKSgpKSxhZih0aGlzLFZGLFtdKSxhZih0aGlzLEhGLGUpLGFmKHRoaXMsdHEsdCksYWYodGhpcyxucSxyKSx0aGlzLmluc3RhbGwoKX19ZnVuY3Rpb24gU0t0KCl7Y29uc3R7ZGlhbG9n'@; put 'RWxlbWVudDpufT1IdSh0aGlzLGkzKTtMYShuLGAke0EwfS0tc2hvd2ApfHwobi5zdHlsZS5kaXNwbGF5PSJub25lIil9ZnVuY3Rpb24gRUt0KCl7YWYodGhpcyx6eCwhMCl9ZnVuY3Rpb24gdFVlKG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxp'@; put 'emUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBuVWUobixlLHQpe2lmKCFlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIit0KyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5n'@; put 'ZXQobil9ZnVuY3Rpb24gVDEobixlKXtyZXR1cm4gZnVuY3Rpb24gTUt0KG4sZSl7cmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwobik6ZS52YWx1ZX0obixuVWUobixlLCJnZXQiKSl9ZnVuY3Rpb24gVXBlKG4sZSx0KXt0VWUobixlKSxlLnNldChuLHQpfWZ1bmN0aW9uIGhnKG4sZSx0KXtyZXR1'@; put 'cm4gZnVuY3Rpb24gVEt0KG4sZSx0KXtpZihlLnNldCllLnNldC5jYWxsKG4sdCk7ZWxzZXtpZighZS53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7ZS52YWx1ZT10fX0obixuVWUobixlLCJzZXQiKSx0KSx0'@; put 'fWZ1bmN0aW9uIEJGKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiB0fWZ1bmN0aW9uIGpGKG4sZSl7dFVlKG4sZSksZS5hZGQobil9WWwoZVVlLF9oKTtjb25zdCB6'@; put 'Xz0iZGlhbG9nIix6cGU9el8scnE9YHBsdWdpbjoke3pffWA7dmFyIGUwPW5ldyBXZWFrTWFwLFRDPW5ldyBXZWFrTWFwLE42PW5ldyBXZWFrTWFwLHJVZT1uZXcgV2Vha1NldCxpVWU9bmV3IFdlYWtTZXQsb1VlPW5ldyBXZWFrU2V0LGFVZT1uZXcgV2Vha1NldCxzVWU9bmV3IFdlYWtTZXQ7'@; put 'Y2xhc3MgaXEgZXh0ZW5kcyBhbHtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gel99c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMzYwfXN0YXRpYyBnZXQgREVGQVVMVF9TRVRUSU5HUygpe3JldHVybnt0ZW1wbGF0ZTpudWxsLGNvbnRlbnQ6IiIsY3VzdG9tQ2xh'@; put 'c3NOYW1lOiIiLGJhY2tncm91bmQ6InNvbGlkIixjb250ZW50QmFja2dyb3VuZDohMSxhbmltYXRpb246ITAsY2xvc2FibGU6ITEsYTExeTp7cm9sZToiZGlhbG9nIixhcmlhTGFiZWw6IkRpYWxvZyIsYXJpYUxhYmVsbGVkYnk6IiIsYXJpYURlc2NyaWJlZGJ5OiIifX19c3RhdGljIGdldCBT'@; put 'RVRUSU5HU19WQUxJREFUT1JTKCl7cmV0dXJue3RlbXBsYXRlOmU9PmtkKGUpJiZ0eXBlb2ZbImFsZXJ0IiwiY29uZmlybSJdLmluY2x1ZGVzKFN0cmluZyhlLnR5cGUpKSYmInN0cmluZyI9PXR5cGVvZiBlLnRpdGxlJiYodHlwZW9mIGU/LmRlc2NyaXB0aW9uPiJ1Inx8InN0cmluZyI9PXR5'@; put 'cGVvZiBlPy5kZXNjcmlwdGlvbikmJih0eXBlb2YgZT8uYnV0dG9ucz4idSJ8fEFycmF5LmlzQXJyYXkoZT8uYnV0dG9ucykmJmUuYnV0dG9ucy5ldmVyeSh0PT5rZCh0KSYmInN0cmluZyI9PXR5cGVvZiB0LnRleHQmJlsicHJpbWFyeSIsInNlY29uZGFyeSJdLmluY2x1ZGVzKFN0cmluZyh0'@; put 'LnR5cGUpKSYmKHR5cGVvZiB0LmNhbGxiYWNrPiJ1Inx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuY2FsbGJhY2spKSksY29udGVudDplPT4ic3RyaW5nIj09dHlwZW9mIGV8fGhzKGUpfHx0eXBlb2YgRG9jdW1lbnRGcmFnbWVudDwidSImJmUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50LGN1'@; put 'c3RvbUNsYXNzTmFtZTplPT4ic3RyaW5nIj09dHlwZW9mIGUsYmFja2dyb3VuZDplPT4ic3RyaW5nIj09dHlwZW9mIGUmJlsic29saWQiLCJzZW1pLXRyYW5zcGFyZW50Il0uaW5jbHVkZXMoZSksY29udGVudEJhY2tncm91bmQ6ZT0+ImJvb2xlYW4iPT10eXBlb2YgZSxhbmltYXRpb246ZT0+'@; put 'ImJvb2xlYW4iPT10eXBlb2YgZSxjbG9zYWJsZTplPT4iYm9vbGVhbiI9PXR5cGVvZiBlLGExMXk6ZT0+a2QoZSkmJih0eXBlb2YgZT8ucm9sZT4idSJ8fCJzdHJpbmciPT10eXBlb2YgZT8ucm9sZSYmWyJkaWFsb2ciLCJhbGVydGRpYWxvZyJdLmluY2x1ZGVzKGUucm9sZSkpJiYodHlwZW9m'@; put 'IGU/LmFyaWFMYWJlbD4idSJ8fCJzdHJpbmciPT10eXBlb2YgZT8uYXJpYUxhYmVsKSYmKHR5cGVvZiBlPy5hcmlhTGFiZWxsZWRieT4idSJ8fCJzdHJpbmciPT10eXBlb2YgZT8uYXJpYUxhYmVsbGVkYnkpJiYodHlwZW9mIGU/LmFyaWFEZXNjcmliZWRieT4idSJ8fCJzdHJpbmciPT10eXBl'@; put 'b2YgZT8uYXJpYURlc2NyaWJlZGJ5KX19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3pfXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fChUMSh0aGlzLGUwKXx8aGcodGhpcyxlMCxuZXcgZVVlKHtvdmVybGF5Q29udGFpbmVyOnRoaXMuaG90LnJvb3RP'@; put 'dmVybGF5c0VsZW1lbnQsc2FuaXRpemVyOnRoaXMuaG90LmdldFNldHRpbmdzKCkuc2FuaXRpemVyLGlzUnRsOnRoaXMuaG90LmlzUnRsKCl9KSksQkYodGhpcyxyVWUsQUt0KS5jYWxsKHRoaXMpLEJGKHRoaXMsb1VlLFJLdCkuY2FsbCh0aGlzKSx0aGlzLmFkZEhvb2soImFmdGVyVmlld1Jl'@; put 'bmRlciIsKCk9PkJGKHRoaXMsc1VlLERLdCkuY2FsbCh0aGlzKSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuaGlkZSgp'@; put 'LEJGKHRoaXMsaVVlLGtLdCkuY2FsbCh0aGlzKSxCRih0aGlzLGFVZSxJS3QpLmNhbGwodGhpcyksVDEodGhpcyxlMCk/LmRlc3Ryb3lEaWFsb2coKSxoZyh0aGlzLGUwLG51bGwpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1pc1Zpc2libGUoKXtyZXR1cm4gVDEodGhpcyxUQyl9c2hvdyhlPXt9'@; put 'KXtpZih0aGlzLmVuYWJsZWQpe2lmKHRoaXMuaXNWaXNpYmxlKCkpcmV0dXJuIHZvaWQgdGhpcy51cGRhdGUoZSk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZURpYWxvZ1Nob3ciKSx0aGlzLnVwZGF0ZShlKSxUMSh0aGlzLGUwKS5zaG93RGlhbG9nKHRoaXMuZ2V0U2V0dGluZygiYW5pbWF0'@; put 'aW9uIikpLGhnKHRoaXMsVEMsITApLHRoaXMuaG90LmdldEZvY3VzU2NvcGVNYW5hZ2VyKCkuYWN0aXZhdGVTY29wZSh6XyksaGcodGhpcyxONix0aGlzLmhvdC5zZWxlY3Rpb24uZXhwb3J0U2VsZWN0aW9uKCkpLHRoaXMuaG90LmRlc2VsZWN0Q2VsbCgpLHRoaXMuaG90LnJ1bkhvb2tzKCJh'@; put 'ZnRlckRpYWxvZ1Nob3ciKX19aGlkZSgpe2lmKHRoaXMuaXNWaXNpYmxlKCkpe2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVEaWFsb2dIaWRlIiksVDEodGhpcyxlMCkuaGlkZURpYWxvZyh0aGlzLmdldFNldHRpbmcoImFuaW1hdGlvbiIpKSxoZyh0aGlzLFRDLCExKSx0aGlzLmhvdC5n'@; put 'ZXRGb2N1c1Njb3BlTWFuYWdlcigpLmRlYWN0aXZhdGVTY29wZSh6XyksVDEodGhpcyxONikmJlQxKHRoaXMsTjYpLnJhbmdlcy5sZW5ndGg+MCYmVDEodGhpcyxONikuYWN0aXZlUmFuZ2Upe2NvbnN0IGU9VDEodGhpcyxONik7dGhpcy5ob3Quc2VsZWN0aW9uLmltcG9ydFNlbGVjdGlvbih7'@; put 'cmFuZ2VzOmUucmFuZ2VzLGFjdGl2ZVJhbmdlOmUuYWN0aXZlUmFuZ2UsYWN0aXZlU2VsZWN0aW9uTGF5ZXI6ZS5hY3RpdmVTZWxlY3Rpb25MYXllcixzZWxlY3RlZEJ5Um93SGVhZGVyOmUuc2VsZWN0ZWRCeVJvd0hlYWRlcixzZWxlY3RlZEJ5Q29sdW1uSGVhZGVyOmUuc2VsZWN0ZWRCeUNv'@; put 'bHVtbkhlYWRlcixkaXNhYmxlSGVhZGVyc0hpZ2hsaWdodDplLmRpc2FibGVIZWFkZXJzSGlnaGxpZ2h0fSksdGhpcy5ob3Qudmlldy5yZW5kZXIoKSxoZyh0aGlzLE42LG51bGwpfWVsc2UgdGhpcy5ob3Qudmlldy5yZW5kZXIoKSxoZyh0aGlzLE42LG51bGwpO3RoaXMuaG90LnJ1bkhvb2tz'@; put 'KCJhZnRlckRpYWxvZ0hpZGUiKX19dXBkYXRlKGUpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuO3RoaXMudXBkYXRlUGx1Z2luU2V0dGluZ3MoZSk7Y29uc3QgdD10aGlzLmdldFNldHRpbmcoInRlbXBsYXRlIik7aWYodCE9PWlxLkRFRkFVTFRfU0VUVElOR1MudGVtcGxhdGUmJnRoaXMuZ2V0'@; put 'U2V0dGluZygiY29udGVudCIpIT09aXEuREVGQVVMVF9TRVRUSU5HUy5jb250ZW50JiZKcigiVGhlIGB0ZW1wbGF0ZWAgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIGBjb250ZW50YCBvcHRpb24uIiksdCl7Y29uc3Qgcj10O1QxKHRoaXMsZTApLnVzZVRlbXBsYXRl'@; put 'KHIudHlwZSx7aWQ6dGhpcy5ob3QuZ3VpZCwuLi5yfSl9ZWxzZSBUMSh0aGlzLGUwKS51c2VEZWZhdWx0VGVtcGxhdGUoKTtUMSh0aGlzLGUwKS51cGRhdGVEaWFsb2coe2lzVmlzaWJsZTp0aGlzLmlzVmlzaWJsZSgpLGNvbnRlbnQ6dGhpcy5nZXRTZXR0aW5nKCJjb250ZW50IiksY3VzdG9t'@; put 'Q2xhc3NOYW1lOnRoaXMuZ2V0U2V0dGluZygiY3VzdG9tQ2xhc3NOYW1lIiksYmFja2dyb3VuZDp0aGlzLmdldFNldHRpbmcoImJhY2tncm91bmQiKSxjb250ZW50QmFja2dyb3VuZDp0aGlzLmdldFNldHRpbmcoImNvbnRlbnRCYWNrZ3JvdW5kIiksYW5pbWF0aW9uOnRoaXMuZ2V0U2V0dGlu'@; put 'ZygiYW5pbWF0aW9uIiksYTExeTp0aGlzLmdldFNldHRpbmcoImExMXkiKX0pfXNob3dBbGVydChlLHQpe2NvbnN0e3RpdGxlOnI9IkFsZXJ0IixkZXNjcmlwdGlvbjppfT1DYShlKT9lOnt0aXRsZTplfTt0aGlzLnNob3coe3RlbXBsYXRlOnt0eXBlOiJjb25maXJtIix0aXRsZTpyLGRlc2Ny'@; put 'aXB0aW9uOmksYnV0dG9uczpbe3RleHQ6dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShrWSksdHlwZToicHJpbWFyeSIsY2FsbGJhY2s6KC4uLm8pPT50Py4oLi4ubyl9XX0sY29udGVudEJhY2tncm91bmQ6ITEsYmFja2dyb3VuZDoic29saWQiLGFuaW1hdGlvbjohMCxjbG9zYWJsZToh'@; put 'MX0pfXNob3dDb25maXJtKGUsdCxyKXtjb25zdHt0aXRsZTppPSJDb25maXJtIixkZXNjcmlwdGlvbjpvfT1DYShlKT9lOnt0aXRsZTplfTt0aGlzLnNob3coe3RlbXBsYXRlOnt0eXBlOiJjb25maXJtIix0aXRsZTppLGRlc2NyaXB0aW9uOm8sYnV0dG9uczpbe3RleHQ6dGhpcy5ob3QuZ2V0'@; put 'VHJhbnNsYXRlZFBocmFzZShRbGUpLHR5cGU6InNlY29uZGFyeSIsY2FsbGJhY2s6KC4uLmEpPT5yPy4oLi4uYSl9LHt0ZXh0OnRoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2Uoa1kpLHR5cGU6InByaW1hcnkiLGNhbGxiYWNrOiguLi5hKT0+dD8uKC4uLmEpfV19LGNvbnRlbnRCYWNrZ3Jv'@; put 'dW5kOiEwLGJhY2tncm91bmQ6InNlbWktdHJhbnNwYXJlbnQiLGFuaW1hdGlvbjohMCxjbG9zYWJsZTohMX0pfWZvY3VzKCl7VDEodGhpcyxlMCkuZm9jdXNEaWFsb2coKX1kZXN0cm95KCl7VDEodGhpcyxlMCk/LmRlc3Ryb3lEaWFsb2coKSxoZyh0aGlzLGUwLG51bGwpLGhnKHRoaXMsVEMs'@; put 'ITEpLGhnKHRoaXMsTjYsbnVsbCksc3VwZXIuZGVzdHJveSgpfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLGpGKHRoaXMsclVlKSxqRih0aGlzLGlVZSksakYodGhpcyxvVWUpLGpGKHRoaXMsYVVlKSxqRih0aGlzLHNVZSksVXBlKHRoaXMsZTAse3dyaXRhYmxlOiEwLHZhbHVlOnZv'@; put 'aWQgMH0pLFVwZSh0aGlzLFRDLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxVcGUodGhpcyxONix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksaGcodGhpcyxlMCxudWxsKSxoZyh0aGlzLFRDLCExKSxoZyh0aGlzLE42LG51bGwpfX1mdW5jdGlvbiBBS3QoKXtjb25zdCBuPXRoaXMu'@; put 'aG90LmdldFNob3J0Y3V0TWFuYWdlcigpLGU9bi5nZXRDb250ZXh0KHJxKT8/bi5hZGRDb250ZXh0KHJxKTtlLmFkZFNob3J0Y3V0KHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazooKT0+e3RoaXMuaGlkZSgpfSxydW5Pbmx5SWY6KCk9PlQxKHRoaXMsVEMpJiYhIXRoaXMuZ2V0U2V0dGlu'@; put 'ZygiY2xvc2FibGUiKSxncm91cDp6cGV9KSxlLmFkZFNob3J0Y3V0KHtrZXlzOltbIlNoaWZ0IiwiVGFiIl0sWyJUYWIiXV0scHJldmVudERlZmF1bHQ6ITEsY2FsbGJhY2s6dD0+e3RoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9Pnt0aGlzLmhvdC5ydW5Ib29rcyh0LnNoaWZ0S2V5PyJk'@; put 'aWFsb2dGb2N1c1ByZXZpb3VzRWxlbWVudCI6ImRpYWxvZ0ZvY3VzTmV4dEVsZW1lbnQiKX0pfSxncm91cDp6cGV9KX1mdW5jdGlvbiBrS3QoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KHJxKT8ucmVtb3ZlU2hvcnRjdXRzQnlHcm91cCh6cGUpfWZ1bmN0aW9u'@; put 'IFJLdCgpe3RoaXMuaG90LmdldEZvY3VzU2NvcGVNYW5hZ2VyKCkucmVnaXN0ZXJTY29wZSh6XyxUMSh0aGlzLGUwKS5nZXRDb250YWluZXIoKSx7c2hvcnRjdXRzQ29udGV4dE5hbWU6cnEsdHlwZToibW9kYWwiLHJ1bk9ubHlJZjooKT0+dGhpcy5pc1Zpc2libGUoKSxvbkFjdGl2YXRlOm49'@; put 'Pntjb25zdCBlPXRoaXMuaG90LmlzTGlzdGVuaW5nKCksdD1UMSh0aGlzLGUwKS5nZXRGb2N1c2FibGVFbGVtZW50cygpO3QubGVuZ3RoPjA/InRhYl9mcm9tX2Fib3ZlIj09PW4/dC5hdCgwKT8uZm9jdXMoKToidGFiX2Zyb21fYmVsb3ciPT09biYmdC5hdCgtMSk/LmZvY3VzKCk6InRhYl9m'@; put 'cm9tX2Fib3ZlIiE9PW4mJiJ0YWJfZnJvbV9iZWxvdyIhPT1uJiZlJiYhVDEodGhpcyxlMCkuZ2V0Q29udGFpbmVyKCkuY29udGFpbnModGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZUMSh0aGlzLGUwKS5nZXRDb250YWluZXIoKS5mb2N1cygpLGUmJnRoaXMuaG90LnJ1'@; put 'bkhvb2tzKCJhZnRlckRpYWxvZ0ZvY3VzIiwidW5rbm93biI9PT1uPyJzaG93IjpuKX19KX1mdW5jdGlvbiBJS3QoKXt0aGlzLmhvdC5nZXRGb2N1c1Njb3BlTWFuYWdlcigpLnVucmVnaXN0ZXJTY29wZSh6Xyl9ZnVuY3Rpb24gREt0KCl7Y29uc3R7dmlldzpufT10aGlzLmhvdCxlPW4uaXNI'@; put 'b3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3coKT9uLmdldFRvdGFsVGFibGVXaWR0aCgpOm4uZ2V0V29ya3NwYWNlV2lkdGgoKTtUMSh0aGlzLGUwKS51cGRhdGVXaWR0aChlKX1mdW5jdGlvbiBsVWUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5p'@; put 'dGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGNVZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVy'@; put 'biBlLmdldChuKX1mdW5jdGlvbiBmZyhuLGUpe3JldHVybiBmdW5jdGlvbiBPS3QobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGNVZShuLGUsImdldCIpKX1mdW5jdGlvbiBXcGUobixlLHQpe3JldHVybiBmdW5jdGlvbiBOS3QobixlLHQpe2lmKGUuc2V0KWUu'@; put 'c2V0LmNhbGwobix0KTtlbHNle2lmKCFlLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtlLnZhbHVlPXR9fShuLGNVZShuLGUsInNldCIpLHQpLHR9Y29uc3QgV3g9ImxvYWRpbmciO3ZhciB1Mj1uZXcgV2Vh'@; put 'a01hcCx1VWU9bmV3IFdlYWtTZXQ7Y2xhc3MgQkt0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIFd4fXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDM1MH1zdGF0aWMgZ2V0IERFRkFVTFRfU0VUVElOR1MoKXtyZXR1cm57aWNvbjpgPHN2ZyBj'@; put 'bGFzcz0iJHtRcH1fX2ljb24tc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTE1IDhhNyA3IDAgMSAxLTMuNS02LjA2MiI+'@; put 'PC9wYXRoPjwvc3ZnPmAsdGl0bGU6dm9pZCAwLGRlc2NyaXB0aW9uOiIifX1zdGF0aWMgZ2V0IFNFVFRJTkdTX1ZBTElEQVRPUlMoKXtyZXR1cm57aWNvbjplPT4ic3RyaW5nIj09dHlwZW9mIGUsdGl0bGU6ZT0+InN0cmluZyI9PXR5cGVvZiBlLGRlc2NyaXB0aW9uOmU9PiJzdHJpbmciPT10'@; put 'eXBlb2YgZX19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1d4XX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fChudWxsPT09ZmcodGhpcyx1MikmJihXcGUodGhpcyx1Mix0aGlzLmhvdC5nZXRQbHVnaW4oImRpYWxvZyIpKSxmZyh0aGlzLHUyKT8uaXNF'@; put 'bmFibGVkKCl8fCh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRpYWxvZz0hMCksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJEaWFsb2dGb2N1cyIsKCk9PmZ1bmN0aW9uIFBLdChuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBm'@; put 'aWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH0odGhpcyx1VWUsakt0KS5jYWxsKHRoaXMpKSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJs'@; put 'ZVBsdWdpbigpe3RoaXMuaGlkZSgpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1pc1Zpc2libGUoKXtyZXR1cm4gZmcodGhpcyx1Mik/LmlzVmlzaWJsZSgpPz8hMX1zaG93KGU9e30pe3RoaXMuaXNFbmFibGVkKCkmJmZnKHRoaXMsdTIpJiZmZyh0aGlzLHUyKT8uaXNFbmFibGVkKCkmJih0aGlz'@; put 'LmlzVmlzaWJsZSgpP3RoaXMudXBkYXRlKGUpOiExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUxvYWRpbmdTaG93IikmJih0aGlzLnVwZGF0ZShlKSxmZyh0aGlzLHUyKS5zaG93KCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyTG9hZGluZ1Nob3ciKSkpfWhpZGUoKXshZmcodGhpcyx1'@; put 'Mil8fCFmZyh0aGlzLHUyKT8uaXNFbmFibGVkKCl8fCF0aGlzLmlzVmlzaWJsZSgpfHwhMT09PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVMb2FkaW5nSGlkZSIpfHwoZmcodGhpcyx1MikuaGlkZSgpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckxvYWRpbmdIaWRlIikpfXVwZGF0ZShlKXtp'@; put 'ZighdGhpcy5pc0VuYWJsZWQoKXx8IWZnKHRoaXMsdTIpfHwhZmcodGhpcyx1Mik/LmlzRW5hYmxlZCgpKXJldHVybjt0aGlzLnVwZGF0ZVBsdWdpblNldHRpbmdzKGUpO2NvbnN0IHQ9dGhpcy5ob3QuZ3VpZCxyPXRoaXMuZ2V0U2V0dGluZygiaWNvbiIpLGk9dGhpcy5nZXRTZXR0aW5nKCJ0'@; put 'aXRsZSIpPz90aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKE11ZSksbz10aGlzLmdldFNldHRpbmcoImRlc2NyaXB0aW9uIiksYT1mdW5jdGlvbiBMS3Qoe2lkOm4saWNvbjplLHRpdGxlOnQsZGVzY3JpcHRpb246cn0pe3JldHVybmBcbiAgICA8ZGl2IGNsYXNzPSIke1FwfV9fY29udGVu'@; put 'dCI+XG4gICAgICA8aSBjbGFzcz0iJHtRcH1fX2ljb24iPiR7ZX08L2k+XG4gICAgICA8ZGl2IGNsYXNzPSIke1FwfV9fdGV4dCI+XG4gICAgICAgIDxoMiBpZD0iJHtufS0ke1d4fS10aXRsZSIgY2xhc3M9IiR7UXB9X190aXRsZSI+JHt0fTwvaDI+XG4gICAgICAgICR7cj9gPHAgaWQ9IiR7'@; put 'bn0tJHtXeH0tZGVzY3JpcHRpb24iIGNsYXNzPSIke1FwfV9fZGVzY3JpcHRpb24iPiR7cn08L3A+YDoiIn1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgfSh7aWQ6dCxpY29uOnIsdGl0bGU6aSxkZXNjcmlwdGlvbjpvfSk7ZmcodGhpcyx1MikudXBkYXRlKHtjb250ZW50OmEsY3Vz'@; put 'dG9tQ2xhc3NOYW1lOlFwLGJhY2tncm91bmQ6MD09PXRoaXMuaG90LmNvdW50U291cmNlUm93cygpPyJzb2xpZCI6InNlbWktdHJhbnNwYXJlbnQiLGExMXk6e3JvbGU6ImFsZXJ0ZGlhbG9nIixhcmlhTGFiZWxsZWRieTpgJHt0fS0ke1d4fS10aXRsZWAsYXJpYURlc2NyaWJlZGJ5Om8/YCR7'@; put 'dH0tJHtXeH0tZGVzY3JpcHRpb25gOnZvaWQgMH19KX1kZXN0cm95KCl7V3BlKHRoaXMsdTIsbnVsbCksc3VwZXIuZGVzdHJveSgpfWNvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLGZ1bmN0aW9uIEhLdChuLGUpe2xVZShuLGUpLGUuYWRkKG4pfSh0aGlzLHVVZSksZnVuY3Rpb24gRkt0'@; put 'KG4sZSx0KXtsVWUobixlKSxlLnNldChuLHQpfSh0aGlzLHUyLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxXcGUodGhpcyx1MixudWxsKX19ZnVuY3Rpb24gakt0KCl7ZmcodGhpcyx1MikuZm9jdXMoKX1jb25zdCB4MT0iaHQtbm90aWZpY2F0aW9uIixZeD1bInRvcC1zdGFydCIsInRv'@; put 'cC1lbmQiLCJib3R0b20tc3RhcnQiLCJib3R0b20tZW5kIl07ZnVuY3Rpb24gZFVlKG4sZSx0KXtpZighZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9u'@; put 'IG8zKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIFdLdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4sZFVlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIFVGKG4sZSx0KXsoZnVuY3Rpb24gekt0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90'@; put 'IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBGNihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIFlLdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFi'@; put 'bGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sZFVlKG4sZSwic2V0IiksdCksdH12YXIgeEM9bmV3IFdlYWtNYXAsb3E9bmV3IFdlYWtNYXAsekY9bmV3IFdlYWtNYXAsdDk9bmV3IFdlYWtNYXAs'@; put 'V0Y9bmV3IFdlYWtNYXA7Y2xhc3MgYXF7aW5zdGFsbCgpe2lmKG8zKHRoaXMsdDkpKXJldHVybjtjb25zdCBlPW8zKHRoaXMseEMpLm93bmVyRG9jdW1lbnQsdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPWAke3gxfSBoYW5kc29udGFibGVgLHQuc2V0QXR0cmlidXRlKCJk'@; put 'aXIiLG8zKHRoaXMsekYpPyJydGwiOiJsdHIiKSxZeC5mb3JFYWNoKHI9Pntjb25zdCBpPWUuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5jbGFzc05hbWU9YCR7eDF9X19zdGFjayAke3gxfV9fc3RhY2stLSR7cn1gLGkuZGF0YXNldC5odE5vdGlmaWNhdGlvblBvc2l0aW9uPXIsaS50YWJJbmRl'@; put 'eD0tMSx0LmFwcGVuZENoaWxkKGkpLG8zKHRoaXMsV0YpLnNldChyLGkpfSksbzModGhpcyx4QykuYXBwZW5kQ2hpbGQodCksRjYodGhpcyx0OSx0KX1nZXRIb3N0KCl7cmV0dXJuIG8zKHRoaXMsdDkpfWdldFN0YWNrKGUpe3JldHVybiBvMyh0aGlzLFdGKS5nZXQoZSl9c2V0UnRsKGUpe0Y2'@; put 'KHRoaXMsekYsZSksbzModGhpcyx0OSkmJm8zKHRoaXMsdDkpLnNldEF0dHJpYnV0ZSgiZGlyIixlPyJydGwiOiJsdHIiKX1zZXRTYW5pdGl6ZXIoZSl7RjYodGhpcyxvcSxlKX1jcmVhdGVUb2FzdEVsZW1lbnQoZSx0LHIpe2NvbnN0IGk9bzModGhpcyx4Qykub3duZXJEb2N1bWVudCxvPWku'@; put 'Y3JlYXRlRWxlbWVudCgiZGl2IiksYT0iZXJyb3IiPT09ZS52YXJpYW50O28uY2xhc3NOYW1lPWAke3gxfV9fdG9hc3QgJHt4MX1fX3RvYXN0LS0ke2UudmFyaWFudH1gLG8uZGF0YXNldC5odE5vdGlmaWNhdGlvbklkPWUuaWQsby5zZXRBdHRyaWJ1dGUoInJvbGUiLGE/ImFsZXJ0Ijoic3Rh'@; put 'dHVzIiksby5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsYT8iYXNzZXJ0aXZlIjoicG9saXRlIiksby5zZXRBdHRyaWJ1dGUoImFyaWEtYXRvbWljIiwidHJ1ZSIpLHImJihvLmNsYXNzTGlzdC5hZGQoYCR7eDF9X190b2FzdC0tYW5pbWF0ZWApLG8uY2xhc3NMaXN0LmFkZChlLnBvc2l0aW9u'@; put 'LnN0YXJ0c1dpdGgoInRvcCIpP2Ake3gxfV9fdG9hc3QtLXN0YWNrLXRvcGA6YCR7eDF9X190b2FzdC0tc3RhY2stYm90dG9tYCkpO2NvbnN0IGw9aS5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLmNsYXNzTmFtZT1gJHt4MX1fX3RvYXN0LWlubmVyYDtjb25zdCB1PWkuY3JlYXRlRWxlbWVudCgi'@; put 'ZGl2Iik7dS5jbGFzc05hbWU9YCR7eDF9X19hY2NlbnRgLHUuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSxsLmFwcGVuZENoaWxkKHUpO2NvbnN0IGc9aS5jcmVhdGVFbGVtZW50KCJkaXYiKTtpZihnLmNsYXNzTmFtZT1gJHt4MX1fX2JvZHlgLGUudGl0bGUpe2NvbnN0IFo9'@; put 'aS5jcmVhdGVFbGVtZW50KCJkaXYiKTtaLmNsYXNzTmFtZT1gJHt4MX1fX3RpdGxlYCxaLnRleHRDb250ZW50PXNtKGUudGl0bGUpLGcuYXBwZW5kQ2hpbGQoWil9Y29uc3QgRT1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKEUuY2xhc3NOYW1lPWAke3gxfV9fbWVzc2FnZWAsInN0cmluZyI9'@; put 'PXR5cGVvZiBlLm1lc3NhZ2U/XzcoRSxlLm1lc3NhZ2UsbzModGhpcyxvcSksIm5vdGlmaWNhdGlvbiIsbzModGhpcyx4QykpOkUuYXBwZW5kQ2hpbGQoZS5tZXNzYWdlKSxnLmFwcGVuZENoaWxkKEUpLGUuYWN0aW9ucz8ubGVuZ3RoKXtjb25zdCBaPWkuY3JlYXRlRWxlbWVudCgiZGl2Iik7'@; put 'Wi5jbGFzc05hbWU9YCR7eDF9X19hY3Rpb25zYCxlLmFjdGlvbnMuZm9yRWFjaCgoZWUsdmUpPT57Y29uc3QgTWU9aS5jcmVhdGVFbGVtZW50KCJidXR0b24iKTtNZS50eXBlPSJidXR0b24iLE1lLmNsYXNzTmFtZT0iaHQtYnV0dG9uIGh0LWJ1dHRvbi0tIisoInByaW1hcnkiPT09ZWUudHlw'@; put 'ZT8icHJpbWFyeSI6InNlY29uZGFyeSIpLE1lLnRleHRDb250ZW50PXNtKGVlLmxhYmVsKSxNZS5kYXRhc2V0Lmh0Tm90aWZpY2F0aW9uQWN0aW9uPVN0cmluZyh2ZSksWi5hcHBlbmRDaGlsZChNZSl9KSxnLmFwcGVuZENoaWxkKFopfWlmKGwuYXBwZW5kQ2hpbGQoZyksZS5jbG9zYWJsZSl7'@; put 'Y29uc3QgWj1pLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO1oudHlwZT0iYnV0dG9uIixaLmNsYXNzTmFtZT1gJHt4MX1fX2Nsb3NlYCxaLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCksbC5hcHBlbmRDaGlsZChaKX1vLmFwcGVuZENoaWxkKGwpLG8udGFiSW5kZXg9LTEsbC5xdWVyeVNl'@; put 'bGVjdG9yQWxsKCJidXR0b24iKS5mb3JFYWNoKFo9PntaLnRhYkluZGV4PS0xfSk7Y29uc3QgTz1vMyh0aGlzLHhDKS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiByP08ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Ty5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntvLmNs'@; put 'YXNzTGlzdC5hZGQoYCR7eDF9X190b2FzdC0tdmlzaWJsZWApfSl9KTpvLmNsYXNzTGlzdC5hZGQoYCR7eDF9X190b2FzdC0tdmlzaWJsZWApLHtlbGVtZW50Om99fXN0YXRpYyBnZXRGb2N1c2FibGVzKGUpe2NvbnN0IHQ9QXJyYXkuZnJvbShlLnF1ZXJ5U2VsZWN0b3JBbGwoImJ1dHRvbiIp'@; put 'KS5maWx0ZXIocj0+IXIuZGlzYWJsZWQpO3JldHVybiB0Lmxlbmd0aD4wP3Q6W2VdfXN0YXRpYyBzZXRTZXF1ZW50aWFsRm9jdXNXaXRoaW5Ib3N0KGUsdCl7aWYoIWUpcmV0dXJuO2NvbnN0IHI9dD8wOi0xO2UucXVlcnlTZWxlY3RvckFsbChgLiR7eDF9X190b2FzdGApLmZvckVhY2goaT0+'@; put 'e2NvbnN0IG89aSxhPUFycmF5LmZyb20oby5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKSkuZmlsdGVyKGw9PiFsLmRpc2FibGVkKTthLmZvckVhY2gobD0+e2wudGFiSW5kZXg9cn0pLG8udGFiSW5kZXg9MD09PWEubGVuZ3RoP3I6LTF9KX1kZXN0cm95KCl7bzModGhpcyx0OSk/LnJlbW92'@; put 'ZSgpLEY2KHRoaXMsdDksbnVsbCksbzModGhpcyxXRikuY2xlYXIoKX1jb25zdHJ1Y3Rvcih7b3ZlcmxheUVsZW1lbnQ6ZSxzYW5pdGl6ZXI6dCxpc1J0bDpyfSl7VUYodGhpcyx4Qyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVUYodGhpcyxvcSx7d3JpdGFibGU6ITAsdmFsdWU6dm9p'@; put 'ZCAwfSksVUYodGhpcyx6Rix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVUYodGhpcyx0OSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVUYodGhpcyxXRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksRjYodGhpcyx6RiwhMSksRjYodGhpcyx0OSxudWxsKSxGNih0aGlzLFdG'@; put 'LG5ldyBNYXApLEY2KHRoaXMseEMsZSksRjYodGhpcyxvcSx0KSxGNih0aGlzLHpGLHIpfX1mdW5jdGlvbiBoVWUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVj'@; put 'dCIpfWZ1bmN0aW9uIGZVZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiB5YShuLGUpe3JldHVybiBmdW5jdGlvbiBaS3Qobixl'@; put 'KXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLGZVZShuLGUsImdldCIpKX1mdW5jdGlvbiBXNChuLGUsdCl7aFVlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiBHbChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIEdLdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQp'@; put 'O2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sZlVlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBCYShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBl'@; put 'RXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBWbChuLGUpe2hVZShuLGUpLGUuYWRkKG4pfWNvbnN0IHNmPSJub3RpZmljYXRpb24iLHNxPWBwbHVnaW46JHtzZn1gLHBVZT1gcGx1Z2luOiR7c2Z9Omdsb2Jh'@; put 'bGAsQUM9c2YscUt0PW5ldyBTZXQoWXgpLEtLdD1uZXcgU2V0KFsiaW5mbyIsInN1Y2Nlc3MiLCJ3YXJuaW5nIiwiZXJyb3IiXSk7dmFyIFR1PW5ldyBXZWFrTWFwLFloPW5ldyBXZWFrTWFwLG45PW5ldyBXZWFrTWFwLFNtPW5ldyBXZWFrTWFwLHI5PW5ldyBXZWFrTWFwLFlGPW5ldyBXZWFr'@; put 'TWFwLFp4PW5ldyBXZWFrTWFwLGtDPW5ldyBXZWFrTWFwLFJDPW5ldyBXZWFrTWFwLFlwZT1uZXcgV2Vha1NldCxtVWU9bmV3IFdlYWtTZXQsWnBlPW5ldyBXZWFrTWFwLHZVZT1uZXcgV2Vha1NldCxHcGU9bmV3IFdlYWtTZXQsJHBlPW5ldyBXZWFrU2V0LF9VZT1uZXcgV2Vha1NldCx5VWU9'@; put 'bmV3IFdlYWtTZXQsWkY9bmV3IFdlYWtTZXQsbHE9bmV3IFdlYWtTZXQsYlVlPW5ldyBXZWFrU2V0LHFwZT1uZXcgV2Vha1NldCxLcGU9bmV3IFdlYWtTZXQsWHBlPW5ldyBXZWFrU2V0LHdVZT1uZXcgV2Vha1NldCxDVWU9bmV3IFdlYWtTZXQsUXBlPW5ldyBXZWFrU2V0LEpwZT1uZXcgV2Vh'@; put 'a01hcCxlZ2U9bmV3IFdlYWtTZXQsU1VlPW5ldyBXZWFrU2V0LHRnZT1uZXcgV2Vha1NldCxFVWU9bmV3IFdlYWtTZXQsTVVlPW5ldyBXZWFrU2V0LFRVZT1uZXcgV2Vha1NldCxuZ2U9bmV3IFdlYWtTZXQseFVlPW5ldyBXZWFrU2V0LEFVZT1uZXcgV2Vha1NldCxyZ2U9bmV3IFdlYWtTZXQs'@; put 'aWdlPW5ldyBXZWFrU2V0LGtVZT1uZXcgV2Vha1NldCxSVWU9bmV3IFdlYWtTZXQsSVVlPW5ldyBXZWFrU2V0LERVZT1uZXcgV2Vha1NldCxMVWU9bmV3IFdlYWtTZXQsT1VlPW5ldyBXZWFrU2V0LE5VZT1uZXcgV2Vha1NldCxHRj1uZXcgV2Vha1NldCxGVWU9bmV3IFdlYWtTZXQsb2dlPW5l'@; put 'dyBXZWFrU2V0O2NsYXNzIFhLdCBleHRlbmRzIGFse3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBzZn1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAzNzV9c3RhdGljIGdldCBERUZBVUxUX1NFVFRJTkdTKCl7cmV0dXJue3N0YWNrTGltaXQ6MTAsYW5pbWF0aW9u'@; put 'OiEwfX1zdGF0aWMgZ2V0IFNFVFRJTkdTX1ZBTElEQVRPUlMoKXtyZXR1cm57c3RhY2tMaW1pdDplPT4ibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmTnVtYmVyLmlzSW50ZWdlcihlKSxhbmltYXRpb246ZT0+ImJvb2xlYW4iPT10eXBlb2YgZX19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhv'@; put 'dC5nZXRTZXR0aW5ncygpW3NmXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fCh5YSh0aGlzLFR1KXx8R2wodGhpcyxUdSxuZXcgYXEoe292ZXJsYXlFbGVtZW50OnRoaXMuaG90LnJvb3RPdmVybGF5c0VsZW1lbnQsc2FuaXRpemVyOnRoaXMuaG90LmdldFNldHRpbmdzKCkuc2FuaXRp'@; put 'emVyLGlzUnRsOnRoaXMuaG90LmlzUnRsKCl9KSkseWEodGhpcyxUdSkuaW5zdGFsbCgpLEJhKHRoaXMsd1VlLHJYdCkuY2FsbCh0aGlzKSxCYSh0aGlzLENVZSxpWHQpLmNhbGwodGhpcyksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RG9jdW1lbnQs'@; put 'ImZvY3VzaW4iLHlhKHRoaXMsSnBlKSwhMCksdGhpcy5hZGRIb29rKCJhZnRlclVwZGF0ZVNldHRpbmdzIix5YSh0aGlzLFpwZSkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdERvY3VtZW50LCJ2aXNpYmlsaXR5Y2hhbmdlIiwoKT0+e0JhKHRoaXMs'@; put 'b2dlLHFVZSkuY2FsbCh0aGlzKSYmQmEodGhpcyxHRix1cSkuY2FsbCh0aGlzKX0pLHN1cGVyLmVuYWJsZVBsdWdpbigpLEdsKHRoaXMsUkMsQmEodGhpcyxZcGUsUFVlKS5jYWxsKHRoaXMpKSl9dXBkYXRlUGx1Z2luKGUpe2NvbnN0IHQ9QmEodGhpcyxZcGUsUFVlKS5jYWxsKHRoaXMpO2Um'@; put 'JiJvYmplY3QiPT10eXBlb2YgZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsc2YpJiZudWxsIT09eWEodGhpcyxSQykmJkJhKHRoaXMsbVVlLFFLdCkuY2FsbCh0aGlzLHlhKHRoaXMsUkMpLHQpfHwodGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVn'@; put 'aW4oKSksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuaGlkZUFsbCgpLEJhKHRoaXMsUXBlLHpVZSkuY2FsbCh0aGlzKSxCYSh0aGlzLG5nZSxaVWUpLmNhbGwodGhpcyksc3VwZXIuZGlzYWJsZVBsdWdpbigpLHlhKHRoaXMsVHUpPy5kZXN0cm95KCksR2wodGhp'@; put 'cyxUdSxudWxsKSxHbCh0aGlzLFNtLG51bGwpLEdsKHRoaXMscjksITEpLEdsKHRoaXMsUkMsbnVsbCl9c2hvd01lc3NhZ2UoZSl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4iIjtjb25zdCB0PUJhKHRoaXMsdlVlLEpLdCkuY2FsbCh0aGlzLGUpO2lmKCExPT09dGhpcy5ob3QucnVuSG9va3Mo'@; put 'ImJlZm9yZU5vdGlmaWNhdGlvblNob3ciLHQpKXJldHVybiIiO2NvbnN0IHI9dGhpcy5nZXRTZXR0aW5nKCJzdGFja0xpbWl0Iik7cmV0dXJuIEJhKHRoaXMsR3BlLEhVZSkuY2FsbCh0aGlzLHQucG9zaXRpb24pPj1yPyh5YSh0aGlzLG45KVt0LnBvc2l0aW9uXS5wdXNoKHQpLHQuaWQpOihC'@; put 'YSh0aGlzLCRwZSxWVWUpLmNhbGwodGhpcyx0KSx0LmlkKX1oaWRlKGUpe2lmKCF0aGlzLmVuYWJsZWR8fCFlKXJldHVybjtjb25zdCB0PXlhKHRoaXMsWWgpLmdldChlKTtpZighdClyZXR1cm4gdm9pZCBCYSh0aGlzLE5VZSx2WHQpLmNhbGwodGhpcyxlKTtpZighMT09PXRoaXMuaG90LnJ1'@; put 'bkhvb2tzKCJiZWZvcmVOb3RpZmljYXRpb25IaWRlIixlKSlyZXR1cm4gdm9pZCh0LmR1cmF0aW9uTXM+MCYmdC5yZW1haW5pbmdNczw9MCYmKHQucmVtYWluaW5nTXM9dC5kdXJhdGlvbk1zKSk7Y29uc3QgaT10aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudCxvPWkgaW5zdGFu'@; put 'Y2VvZiB0aGlzLmhvdC5yb290V2luZG93LkhUTUxFbGVtZW50JiZ0LmVsZW1lbnQuY29udGFpbnMoaSk7QmEodGhpcyx4VWUsY1h0KS5jYWxsKHRoaXMsdCwhMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyTm90aWZpY2F0aW9uSGlkZSIsZSksQmEodGhpcyxPVWUsbVh0KS5jYWxsKHRoaXMs'@; put 'dC5vcHRpb25zLnBvc2l0aW9uKSxCYSh0aGlzLExVZSxnWHQpLmNhbGwodGhpcyxvKX1oaWRlQWxsKCl7dGhpcy5lbmFibGVkJiYoWXguZm9yRWFjaCh0PT57eWEodGhpcyxuOSlbdF0ubGVuZ3RoPTB9KSxbLi4ueWEodGhpcyxZaCkua2V5cygpXS5mb3JFYWNoKHQ9PnRoaXMuaGlkZSh0KSkp'@; put 'fWlzVmlzaWJsZShlKXtyZXR1cm4gdm9pZCAwPT09ZT95YSh0aGlzLFloKS5zaXplPjA6eWEodGhpcyxZaCkuaGFzKGUpfWdldFF1ZXVlU2l6ZSgpe3JldHVybiBZeC5yZWR1Y2UoKGUsdCk9PmUreWEodGhpcyxuOSlbdF0ubGVuZ3RoLDApfWRlc3Ryb3koKXtZeC5mb3JFYWNoKGU9Pnt5YSh0'@; put 'aGlzLG45KVtlXS5sZW5ndGg9MH0pLHlhKHRoaXMsWWgpLmNsZWFyKCksQmEodGhpcyxRcGUselVlKS5jYWxsKHRoaXMpLEJhKHRoaXMsbmdlLFpVZSkuY2FsbCh0aGlzKSx5YSh0aGlzLFR1KT8uZGVzdHJveSgpLEdsKHRoaXMsVHUsbnVsbCksR2wodGhpcyxTbSxudWxsKSxHbCh0aGlzLHI5'@; put 'LCExKSxHbCh0aGlzLFJDLG51bGwpLHN1cGVyLmRlc3Ryb3koKX1jb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxWbCh0aGlzLFlwZSksVmwodGhpcyxtVWUpLFZsKHRoaXMsdlVlKSxWbCh0aGlzLEdwZSksVmwodGhpcywkcGUpLFZsKHRoaXMsX1VlKSxWbCh0aGlzLHlVZSksVmwodGhp'@; put 'cyxaRiksVmwodGhpcyxscSksVmwodGhpcyxiVWUpLFZsKHRoaXMscXBlKSxWbCh0aGlzLEtwZSksVmwodGhpcyxYcGUpLFZsKHRoaXMsd1VlKSxWbCh0aGlzLENVZSksVmwodGhpcyxRcGUpLFZsKHRoaXMsZWdlKSxWbCh0aGlzLFNVZSksVmwodGhpcyx0Z2UpLFZsKHRoaXMsRVVlKSxWbCh0'@; put 'aGlzLE1VZSksVmwodGhpcyxUVWUpLFZsKHRoaXMsbmdlKSxWbCh0aGlzLHhVZSksVmwodGhpcyxBVWUpLFZsKHRoaXMscmdlKSxWbCh0aGlzLGlnZSksVmwodGhpcyxrVWUpLFZsKHRoaXMsUlVlKSxWbCh0aGlzLElVZSksVmwodGhpcyxEVWUpLFZsKHRoaXMsTFVlKSxWbCh0aGlzLE9VZSks'@; put 'VmwodGhpcyxOVWUpLFZsKHRoaXMsR0YpLFZsKHRoaXMsRlVlKSxWbCh0aGlzLG9nZSksVzQodGhpcyxUdSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxZaCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxuOSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAw'@; put 'fSksVzQodGhpcyxTbSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxyOSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxZRix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxaeCx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhp'@; put 'cyxrQyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxSQyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksVzQodGhpcyxacGUse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFc0KHRoaXMsSnBlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxHbCh0aGlzLFR1LG51'@; put 'bGwpLEdsKHRoaXMsWWgsbmV3IE1hcCksR2wodGhpcyxuOSx7InRvcC1zdGFydCI6W10sInRvcC1lbmQiOltdLCJib3R0b20tc3RhcnQiOltdLCJib3R0b20tZW5kIjpbXX0pLEdsKHRoaXMsU20sbnVsbCksR2wodGhpcyxyOSwhMSksR2wodGhpcyxZRiwhMSksR2wodGhpcyxaeCwhMSksR2wo'@; put 'dGhpcyxrQywhMSksR2wodGhpcyxSQyxudWxsKSxHbCh0aGlzLFpwZSwoKT0+e2lmKCF0aGlzLmVuYWJsZWR8fCF5YSh0aGlzLFR1KSlyZXR1cm47Y29uc3Qgcj10aGlzLmhvdC5yb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpOyJydGwiPT09cnx8Imx0ciI9PT1yP3lhKHRoaXMsVHUp'@; put 'LnNldFJ0bCgicnRsIj09PXIpOnlhKHRoaXMsVHUpLnNldFJ0bCh0aGlzLmhvdC5pc1J0bCgpKSx5YSh0aGlzLFR1KS5zZXRTYW5pdGl6ZXIodGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5zYW5pdGl6ZXIpfSksR2wodGhpcyxKcGUsdD0+e2lmKDA9PT15YSh0aGlzLFloKS5zaXplKXJldHVybjtj'@; put 'b25zdCByPXlhKHRoaXMsVHUpPy5nZXRIb3N0KCksaT10LnRhcmdldDtpZihpIGluc3RhbmNlb2YgdGhpcy5ob3Qucm9vdFdpbmRvdy5IVE1MRWxlbWVudCYmcil7aWYoci5jb250YWlucyhpKSl7aWYobnVsbCE9PXlhKHRoaXMsU20pKXJldHVybjtjb25zdCBvPXQucmVsYXRlZFRhcmdldDty'@; put 'ZXR1cm4gdm9pZChvIGluc3RhbmNlb2YgdGhpcy5ob3Qucm9vdFdpbmRvdy5IVE1MRWxlbWVudCYmdGhpcy5ob3Qucm9vdFdyYXBwZXJFbGVtZW50LmNvbnRhaW5zKG8pJiYhci5jb250YWlucyhvKSYmR2wodGhpcyxTbSxvKSl9QmEodGhpcyxaRixjcSkuY2FsbCh0aGlzKX19KX19ZnVuY3Rp'@; put 'b24gUFVlKCl7cmV0dXJue3N0YWNrTGltaXQ6dGhpcy5nZXRTZXR0aW5nKCJzdGFja0xpbWl0IiksYW5pbWF0aW9uOnRoaXMuZ2V0U2V0dGluZygiYW5pbWF0aW9uIil9fWZ1bmN0aW9uIFFLdChuLGUpe3JldHVybiBuLnN0YWNrTGltaXQ9PT1lLnN0YWNrTGltaXQmJm4uYW5pbWF0aW9uPT09'@; put 'ZS5hbmltYXRpb259ZnVuY3Rpb24gSkt0KG4peyghQ2Eobil8fCJzdHJpbmciIT10eXBlb2Ygbi5tZXNzYWdlJiYhKHR5cGVvZiBIVE1MRWxlbWVudDwidSImJm4ubWVzc2FnZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkmJkpyKCJOb3RpZmljYXRpb24uc2hvd01lc3NhZ2UgZXhwZWN0cyBh'@; put 'biBvYmplY3Qgd2l0aCBhIGBtZXNzYWdlYCBzdHJpbmcgb3IgSFRNTEVsZW1lbnQuIik7Y29uc3QgZT1gaHRuLSR7VlcoKX1gLHQ9bi52YXJpYW50JiZLS3QuaGFzKG4udmFyaWFudCk/bi52YXJpYW50OiJpbmZvIixyPW4ucG9zaXRpb24mJnFLdC5oYXMobi5wb3NpdGlvbik/bi5wb3NpdGlv'@; put 'bjoiYm90dG9tLWVuZCIsaT0ibnVtYmVyIj09dHlwZW9mIG4uZHVyYXRpb24mJm4uZHVyYXRpb24+PTA/bi5kdXJhdGlvbjo0ZTMsbz0iYm9vbGVhbiIhPXR5cGVvZiBuLmNsb3NhYmxlfHxuLmNsb3NhYmxlLGE9QXJyYXkuaXNBcnJheShuLmFjdGlvbnMpP24uYWN0aW9ucy5tYXAobD0+KCgh'@; put 'Q2EobCl8fCJzdHJpbmciIT10eXBlb2YgbC5sYWJlbHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGwuY2FsbGJhY2spJiZKcigiRWFjaCBub3RpZmljYXRpb24gYWN0aW9uIG5lZWRzIGBsYWJlbGAgKHN0cmluZykgYW5kIGBjYWxsYmFja2AgKGZ1bmN0aW9uKS4iKSx7bGFiZWw6bC5sYWJlbCx0eXBl'@; put 'OiJwcmltYXJ5Ij09PWwudHlwZT8icHJpbWFyeSI6InNlY29uZGFyeSIsY2FsbGJhY2s6bC5jYWxsYmFja30pKTpbXTtyZXR1cm57aWQ6ZSx2YXJpYW50OnQsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBuLnRpdGxlP24udGl0bGU6dm9pZCAwLG1lc3NhZ2U6bi5tZXNzYWdlLGR1cmF0aW9uOmks'@; put 'cG9zaXRpb246cixjbG9zYWJsZTpvLGFjdGlvbnM6YX19ZnVuY3Rpb24gSFVlKG4pe2xldCBlPTA7cmV0dXJuIHlhKHRoaXMsWWgpLmZvckVhY2godD0+e3Qub3B0aW9ucy5wb3NpdGlvbj09PW4mJihlKz0xKX0pLGV9ZnVuY3Rpb24gVlVlKG4pe2NvbnN0IGU9dGhpcy5ob3QuZ2V0VHJhbnNs'@; put 'YXRlZFBocmFzZShUdWUpLHQ9dGhpcy5nZXRTZXR0aW5nKCJhbmltYXRpb24iKSx7ZWxlbWVudDpyfT15YSh0aGlzLFR1KS5jcmVhdGVUb2FzdEVsZW1lbnQobixlLHQpLGk9eWEodGhpcyxUdSkuZ2V0U3RhY2sobi5wb3NpdGlvbik7aXx8SnIoYFVua25vd24gbm90aWZpY2F0aW9uIHBvc2l0'@; put 'aW9uICIke24ucG9zaXRpb259Ii5gKSxuLnBvc2l0aW9uLnN0YXJ0c1dpdGgoInRvcCIpP2kucHJlcGVuZChyKTppLmFwcGVuZENoaWxkKHIpLG4ucG9zaXRpb24uc3RhcnRzV2l0aCgiYm90dG9tIikmJnRoaXMuaG90LnJvb3RXaW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhp'@; put 'cy5lbmFibGVkJiYoaS5zY3JvbGxUb3A9aS5zY3JvbGxIZWlnaHQpfSk7Y29uc3Qgbz1uLmR1cmF0aW9uLGE9e2lkOm4uaWQsb3B0aW9uczpuLGVsZW1lbnQ6cixkdXJhdGlvbk1zOm8scmVtYWluaW5nTXM6byxwYXVzZWQ6ITF9O3lhKHRoaXMsWWgpLnNldChuLmlkLGEpLEJhKHRoaXMsX1Vl'@; put 'LGVYdCkuY2FsbCh0aGlzLGEpLHlhKHRoaXMscjkpJiZCYSh0aGlzLGxxLGFnZSkuY2FsbCh0aGlzKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJOb3RpZmljYXRpb25TaG93IixuLmlkLG4pLG8+MCYmQmEodGhpcyxHRix1cSkuY2FsbCh0aGlzKX1mdW5jdGlvbiBlWHQobil7bi50b2FzdEV2'@; put 'ZW50RGlzcG9zZXJzPVt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG4uZWxlbWVudCwiY2xpY2siLGU9PntCYSh0aGlzLHlVZSx0WHQpLmNhbGwodGhpcyxlLG4pfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihuLmVsZW1lbnQsIm1vdXNlZW50ZXIiLCgp'@; put 'PT57bi5wYXVzZWQ9ITB9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG4uZWxlbWVudCwibW91c2VsZWF2ZSIsKCk9PntuLnBhdXNlZD0hMSxuLmR1cmF0aW9uTXM+MCYmIXRoaXMuaG90LnJvb3REb2N1bWVudC5oaWRkZW4mJkJhKHRoaXMsR0YsdXEpLmNhbGwodGhpcyl9'@; put 'KV19ZnVuY3Rpb24gdFh0KG4sZSl7Y29uc3QgdD1uLnRhcmdldDtpZighKHQgaW5zdGFuY2VvZiB0aGlzLmhvdC5yb290V2luZG93LkhUTUxFbGVtZW50KSlyZXR1cm47aWYodC5jbG9zZXN0KGAuJHt4MX1fX2Nsb3NlYCkpcmV0dXJuIHZvaWQgdGhpcy5oaWRlKGUuaWQpO2NvbnN0IHI9dC5j'@; put 'bG9zZXN0KCJbZGF0YS1odC1ub3RpZmljYXRpb24tYWN0aW9uXSIpO2lmKCFyfHwhZS5lbGVtZW50LmNvbnRhaW5zKHIpKXJldHVybjtjb25zdCBpPU51bWJlci5wYXJzZUludChyLmRhdGFzZXQuaHROb3RpZmljYXRpb25BY3Rpb24/PyIiLDEwKSxvPWUub3B0aW9ucy5hY3Rpb25zW2ldO28m'@; put 'Jm8uY2FsbGJhY2soKX1mdW5jdGlvbiBjcSgpe2NvbnN0IG49eWEodGhpcyxUdSk/LmdldEhvc3QoKTtuJiZhcS5zZXRTZXF1ZW50aWFsRm9jdXNXaXRoaW5Ib3N0KG4sITEpLEdsKHRoaXMscjksITEpfWZ1bmN0aW9uIGFnZSgpe2NvbnN0IG49eWEodGhpcyxUdSk/LmdldEhvc3QoKTshbnx8'@; put 'MD09PXlhKHRoaXMsWWgpLnNpemV8fChhcS5zZXRTZXF1ZW50aWFsRm9jdXNXaXRoaW5Ib3N0KG4sITApLEdsKHRoaXMscjksITApKX1mdW5jdGlvbiBuWHQoKXtjb25zdCBuPXlhKHRoaXMsVHUpPy5nZXRIb3N0KCk7aWYoIW58fDA9PT15YSh0aGlzLFloKS5zaXplKXJldHVybjtjb25zdCB0'@; put 'PXRoaXMuaG90LnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50O3QgaW5zdGFuY2VvZiB0aGlzLmhvdC5yb290V2luZG93LkhUTUxFbGVtZW50JiYhbi5jb250YWlucyh0KSYmR2wodGhpcyxTbSx0KSx0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmhvdC5nZXRGb2N1c1Njb3BlTWFuYWdlcigpLmFj'@; put 'dGl2YXRlU2NvcGUoc2YpfWZ1bmN0aW9uIEJVZSgpe2NvbnN0IG49dGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKTtuLmdldEFjdGl2ZVNjb3BlSWQoKSE9PXNfJiZuLmFjdGl2YXRlU2NvcGUoc18pfWZ1bmN0aW9uIGpVZSgpe2NvbnN0IG49dGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1h'@; put 'bmFnZXIoKTtpZihHbCh0aGlzLGtDLCEwKSxuLmdldEFjdGl2ZVNjb3BlSWQoKT09PXNmKW4uZGVhY3RpdmF0ZVNjb3BlKHNmKTtlbHNle0dsKHRoaXMsa0MsITEpLEJhKHRoaXMsWkYsY3EpLmNhbGwodGhpcyk7Y29uc3QgZT15YSh0aGlzLFNtKTtHbCh0aGlzLFNtLG51bGwpLGU/LmlzQ29u'@; put 'bmVjdGVkJiZ0aGlzLmhvdC5nZXRGb2N1c01hbmFnZXIoKS5mb2N1c0VsZW1lbnQoZSx7cHJldmVudFNjcm9sbDohMH0pLEJhKHRoaXMscXBlLEJVZSkuY2FsbCh0aGlzKX19ZnVuY3Rpb24gVVVlKCl7Y29uc3Qgbj10aGlzLmhvdC5yb290RG9jdW1lbnQ7eWEodGhpcyxUdSk/LmdldEhvc3Qo'@; put 'KT8uY29udGFpbnMobi5hY3RpdmVFbGVtZW50KSYmQmEodGhpcyxLcGUsalVlKS5jYWxsKHRoaXMpfWZ1bmN0aW9uIHJYdCgpe3lhKHRoaXMsWngpfHwodGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKS5yZWdpc3RlclNjb3BlKHNmLHlhKHRoaXMsVHUpLmdldEhvc3QoKSx7c2hvcnRj'@; put 'dXRzQ29udGV4dE5hbWU6c3EscnVuT25seUlmOigpPT55YSh0aGlzLFloKS5zaXplPjAsZW5hYmxlRm9jdXNDYXRjaGVyczohMSxvbkFjdGl2YXRlOigpPT57eWEodGhpcyxUdSk/LmdldEhvc3QoKSYmKEJhKHRoaXMsbHEsYWdlKS5jYWxsKHRoaXMpLEJhKHRoaXMsa1VlLGRYdCkuY2FsbCh0'@; put 'aGlzKSl9LG9uRGVhY3RpdmF0ZTooKT0+e2lmKEJhKHRoaXMsWkYsY3EpLmNhbGwodGhpcykseWEodGhpcyxrQykpe0dsKHRoaXMsa0MsITEpO2NvbnN0IGU9eWEodGhpcyxTbSk7R2wodGhpcyxTbSxudWxsKSxlPy5pc0Nvbm5lY3RlZCYmdGhpcy5ob3QuZ2V0Rm9jdXNNYW5hZ2VyKCkuZm9j'@; put 'dXNFbGVtZW50KGUse3ByZXZlbnRTY3JvbGw6ITB9KSxCYSh0aGlzLHFwZSxCVWUpLmNhbGwodGhpcyl9fX0pLEdsKHRoaXMsWngsITApKX1mdW5jdGlvbiBpWHQoKXtjb25zdCBuPXRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLGU9bi5nZXRDb250ZXh0KHNxKT8/bi5hZGRDb250ZXh0'@; put 'KHNxKSx0PW4uZ2V0T3JDcmVhdGVDb250ZXh0KHBVZSwiZ2xvYmFsIikscj1uLmdldENvbnRleHQoc18pLGk9e2tleXM6W1siZjYiXV0scHJldmVudERlZmF1bHQ6ITAsY2FsbGJhY2s6KCk9PntCYSh0aGlzLGJVZSxuWHQpLmNhbGwodGhpcyl9LHJ1bk9ubHlJZjooKT0+QmEodGhpcyxJVWUs'@; put 'Zlh0KS5jYWxsKHRoaXMpLGdyb3VwOkFDfTt0LmFkZFNob3J0Y3V0KGkpLHImJnIuYWRkU2hvcnRjdXQoaSksZS5hZGRTaG9ydGN1dCh7a2V5czpbWyJFc2NhcGUiXV0sY2FsbGJhY2s6KCk9PkJhKHRoaXMsWHBlLFVVZSkuY2FsbCh0aGlzKSxydW5Pbmx5SWY6KCk9PiEwPT09eWEodGhpcyxU'@; put 'dSk/LmdldEhvc3QoKT8uY29udGFpbnModGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLGdyb3VwOkFDfSksZS5hZGRTaG9ydGN1dCh7a2V5czpbWyJUYWIiXV0scHJldmVudERlZmF1bHQ6ITAsY2FsbGJhY2s6KCk9PkJhKHRoaXMsVFVlLGxYdCkuY2FsbCh0aGlzKSxydW5P'@; put 'bmx5SWY6KCk9PkJhKHRoaXMsRVVlLGFYdCkuY2FsbCh0aGlzKSxncm91cDpBQ30pLGUuYWRkU2hvcnRjdXQoe2tleXM6W1siU2hpZnQiLCJUYWIiXV0scHJldmVudERlZmF1bHQ6ITAsY2FsbGJhY2s6KCk9PkJhKHRoaXMsWHBlLFVVZSkuY2FsbCh0aGlzKSxydW5Pbmx5SWY6KCk9PkJhKHRo'@; put 'aXMsTVVlLHNYdCkuY2FsbCh0aGlzKSxncm91cDpBQ30pfWZ1bmN0aW9uIHpVZSgpe2NvbnN0IG49dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCk7bi5nZXRDb250ZXh0KHNxKT8ucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChBQyksbi5nZXRDb250ZXh0KHBVZSk/LnJlbW92ZVNob3J0Y3V0'@; put 'c0J5R3JvdXAoQUMpLG4uZ2V0Q29udGV4dChzXyk/LnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoQUMpfWZ1bmN0aW9uIFdVZSgpe2NvbnN0IG49eWEodGhpcyxUdSk/LmdldEhvc3QoKTtpZighbilyZXR1cm5bXTtjb25zdCBlPVsuLi5uLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3gxfV9fdG9hc3Rg'@; put 'KV0sdD1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrPTEpdC5wdXNoKC4uLmFxLmdldEZvY3VzYWJsZXMoZVtyXSkpO3JldHVybiB0fWZ1bmN0aW9uIG9YdCgpe3JldHVybiBCYSh0aGlzLGVnZSxXVWUpLmNhbGwodGhpcylbMF19ZnVuY3Rpb24gWVVlKCl7aWYoMD09PXlhKHRoaXMsWWgp'@; put 'LnNpemUpcmV0dXJuIG51bGw7Y29uc3Qgbj10aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudCxlPXlhKHRoaXMsVHUpPy5nZXRIb3N0KCk7aWYoIShuIGluc3RhbmNlb2YgdGhpcy5ob3Qucm9vdFdpbmRvdy5IVE1MRWxlbWVudCYmZT8uY29udGFpbnMobikpKXJldHVybiBudWxs'@; put 'O2NvbnN0IHQ9QmEodGhpcyxlZ2UsV1VlKS5jYWxsKHRoaXMpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCByPXQuaW5kZXhPZihuKTtyZXR1cm4tMT09PXI/bnVsbDooeWEodGhpcyxyOSl8fEJhKHRoaXMsbHEsYWdlKS5jYWxsKHRoaXMpLHtsaXN0OnQsaWR4OnJ9KX1mdW5j'@; put 'dGlvbiBhWHQoKXtjb25zdCBuPUJhKHRoaXMsdGdlLFlVZSkuY2FsbCh0aGlzKTtyZXR1cm4gbnVsbCE9PW4mJm4uaWR4PT09bi5saXN0Lmxlbmd0aC0xfWZ1bmN0aW9uIHNYdCgpe2NvbnN0IG49QmEodGhpcyx0Z2UsWVVlKS5jYWxsKHRoaXMpO3JldHVybiBudWxsIT09biYmMD09PW4uaWR4'@; put 'fWZ1bmN0aW9uIGxYdCgpe2NvbnN0IG49dGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKTtHbCh0aGlzLGtDLCExKSxuLmdldEFjdGl2ZVNjb3BlSWQoKT09PXNmP24uZGVhY3RpdmF0ZVNjb3BlKHNmKTpCYSh0aGlzLFpGLGNxKS5jYWxsKHRoaXMpLHRoaXMuaG90Lmxpc3RlbigpLG4u'@; put 'YWN0aXZhdGVTY29wZShzXyxjNi5UQUJfRlJPTV9BQk9WRSksR2wodGhpcyxTbSxudWxsKX1mdW5jdGlvbiBaVWUoKXt5YSh0aGlzLFp4KSYmKHRoaXMuaG90LmdldEZvY3VzU2NvcGVNYW5hZ2VyKCkudW5yZWdpc3RlclNjb3BlKHNmKSxHbCh0aGlzLFp4LCExKSl9ZnVuY3Rpb24gY1h0KG4s'@; put 'ZSl7bi50b2FzdEV2ZW50RGlzcG9zZXJzJiYobi50b2FzdEV2ZW50RGlzcG9zZXJzLmZvckVhY2godD0+dCgpKSxuLnRvYXN0RXZlbnREaXNwb3NlcnM9bnVsbCkseWEodGhpcyxZaCkuZGVsZXRlKG4uaWQpLGUmJm4uZWxlbWVudC5yZW1vdmUoKX1mdW5jdGlvbiB1WHQobil7Y29uc3QgZT15'@; put 'YSh0aGlzLFR1KT8uZ2V0SG9zdCgpO3JldHVybiEhZSYmbiBpbnN0YW5jZW9mIHRoaXMuaG90LnJvb3RXaW5kb3cuSFRNTEVsZW1lbnQmJmUuY29udGFpbnMobil9ZnVuY3Rpb24gR1VlKG4pe2xldCBlPSExO3JldHVybiB5YSh0aGlzLFloKS5mb3JFYWNoKHQ9Pnt0LmVsZW1lbnQuY29udGFp'@; put 'bnMobikmJihlPSEwKX0pLGV9ZnVuY3Rpb24gJFVlKCl7dGhpcy5ob3QubGlzdGVuKCk7Y29uc3Qgbj10aGlzLmhvdC5nZXRGb2N1c1Njb3BlTWFuYWdlcigpO24uZ2V0QWN0aXZlU2NvcGVJZCgpPT09c2YmJm4uZGVhY3RpdmF0ZVNjb3BlKHNmKSxuLmFjdGl2YXRlU2NvcGUoc2YpfWZ1bmN0'@; put 'aW9uIGRYdCgpe2NvbnN0IG49dGhpcy5ob3Qucm9vdERvY3VtZW50O2lmKCF0aGlzLmVuYWJsZWR8fDA9PT15YSh0aGlzLFloKS5zaXplfHxCYSh0aGlzLHJnZSxHVWUpLmNhbGwodGhpcyxuLmFjdGl2ZUVsZW1lbnQpKXJldHVybjtjb25zdCBlPUJhKHRoaXMsU1VlLG9YdCkuY2FsbCh0aGlz'@; put 'KTtlJiZ0aGlzLmhvdC5nZXRGb2N1c01hbmFnZXIoKS5mb2N1c0VsZW1lbnQoZSl9ZnVuY3Rpb24gaFh0KG4pe2lmKCEobiBpbnN0YW5jZW9mIHRoaXMuaG90LnJvb3RXaW5kb3cuSFRNTEVsZW1lbnQpKXJldHVybiExO2NvbnN0IGU9bi5jbG9zZXN0KCIuaHQtcm9vdC13cmFwcGVyIik7cmV0'@; put 'dXJuIG51bGwhPT1lP2U9PT10aGlzLmhvdC5yb290V3JhcHBlckVsZW1lbnQ6dGhpcy5ob3Qucm9vdERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5odC1yb290LXdyYXBwZXIiKS5sZW5ndGg8PTF9ZnVuY3Rpb24gZlh0KCl7aWYoIXRoaXMuZW5hYmxlZHx8MD09PXlhKHRoaXMsWWgpLnNp'@; put 'emUpcmV0dXJuITE7Y29uc3Qgbj15YSh0aGlzLFR1KT8uZ2V0SG9zdCgpO2lmKCFuKXJldHVybiExO2NvbnN0IGU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIShlIGluc3RhbmNlb2YgdGhpcy5ob3Qucm9vdFdpbmRvdy5IVE1MRWxlbWVudCYmbi5jb250YWlu'@; put 'cyhlKSkmJkJhKHRoaXMsUlVlLGhYdCkuY2FsbCh0aGlzLGUpfWZ1bmN0aW9uIHBYdCgpe0JhKHRoaXMsS3BlLGpVZSkuY2FsbCh0aGlzKX1mdW5jdGlvbiBnWHQobj0hMSl7Y29uc3QgZT10aGlzLmhvdC5yb290RG9jdW1lbnQsdD15YSh0aGlzLFR1KT8uZ2V0SG9zdCgpLHI9ZS5hY3RpdmVF'@; put 'bGVtZW50O2lmKHlhKHRoaXMsWWgpLnNpemU+MCl7Y29uc3QgbD1yIGluc3RhbmNlb2YgdGhpcy5ob3Qucm9vdFdpbmRvdy5IVE1MRWxlbWVudCYmITA9PT10Py5jb250YWlucyhyKTtyZXR1cm4gdm9pZCgobCYmIUJhKHRoaXMscmdlLEdVZSkuY2FsbCh0aGlzLHIpfHwhbCYmbikmJkJhKHRo'@; put 'aXMsaWdlLCRVZSkuY2FsbCh0aGlzKSl9Y29uc3QgaT15YSh0aGlzLHI5KSxvPUJhKHRoaXMsQVVlLHVYdCkuY2FsbCh0aGlzLGUuYWN0aXZlRWxlbWVudCk7KGl8fG58fG8pJiZCYSh0aGlzLERVZSxwWHQpLmNhbGwodGhpcyl9ZnVuY3Rpb24gbVh0KG4pe2NvbnN0IGU9dGhpcy5nZXRTZXR0'@; put 'aW5nKCJzdGFja0xpbWl0IiksdD1uO2Zvcig7eWEodGhpcyxuOSlbdF0ubGVuZ3RoPjAmJkJhKHRoaXMsR3BlLEhVZSkuY2FsbCh0aGlzLG4pPGU7KXtjb25zdCByPXlhKHRoaXMsbjkpW3RdLnNoaWZ0KCk7QmEodGhpcywkcGUsVlVlKS5jYWxsKHRoaXMscil9fWZ1bmN0aW9uIHZYdChuKXtZ'@; put 'eC5mb3JFYWNoKGU9Pntjb25zdCB0PXlhKHRoaXMsbjkpW2VdLHI9dC5maW5kSW5kZXgoaT0+aS5pZD09PW4pO3I+PTAmJnQuc3BsaWNlKHIsMSl9KX1mdW5jdGlvbiB1cSgpe3lhKHRoaXMsWUYpfHwhdGhpcy5lbmFibGVkfHwoR2wodGhpcyxZRiwhMCksdGhpcy5ob3QuX3JlZ2lzdGVyVGlt'@; put 'ZW91dCgoKT0+e0dsKHRoaXMsWUYsITEpLHRoaXMuZW5hYmxlZCYmKEJhKHRoaXMsRlVlLF9YdCkuY2FsbCh0aGlzKSxCYSh0aGlzLG9nZSxxVWUpLmNhbGwodGhpcykmJkJhKHRoaXMsR0YsdXEpLmNhbGwodGhpcykpfSwyMDApKX1mdW5jdGlvbiBfWHQoKXtjb25zdCBlPSF0aGlzLmhvdC5y'@; put 'b290RG9jdW1lbnQuaGlkZGVuLHQ9W107eWEodGhpcyxZaCkuZm9yRWFjaChyPT57ci5kdXJhdGlvbk1zPD0wfHxyLnBhdXNlZHx8IWV8fChyLnJlbWFpbmluZ01zLT0yMDAsci5yZW1haW5pbmdNczw9MCYmdC5wdXNoKHIuaWQpKX0pLHQuZm9yRWFjaChyPT50aGlzLmhpZGUocikpfWZ1bmN0'@; put 'aW9uIHFVZSgpe2lmKHRoaXMuaG90LnJvb3REb2N1bWVudC5oaWRkZW4pcmV0dXJuITE7bGV0IGU9ITE7cmV0dXJuIHlhKHRoaXMsWWgpLmZvckVhY2godD0+e3QuZHVyYXRpb25Ncz4wJiYhdC5wYXVzZWQmJihlPSEwKX0pLGV9ZnVuY3Rpb24gS1VlKG4sZSx0KXtpZighZS5oYXMobikpdGhy'@; put 'b3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrdCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KG4pfWZ1bmN0aW9uIEExKG4sZSl7cmV0dXJuIGZ1bmN0aW9uIGJYdChuLGUpe3JldHVybiBlLmdldD9lLmdldC5jYWxsKG4pOmUudmFsdWV9KG4s'@; put 'S1VlKG4sZSwiZ2V0IikpfWZ1bmN0aW9uIGRxKG4sZSx0KXsoZnVuY3Rpb24geVh0KG4sZSl7aWYoZS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKG4sZSksZS5zZXQo'@; put 'bix0KX1mdW5jdGlvbiBQNihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIHdYdChuLGUsdCl7aWYoZS5zZXQpZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFs'@; put 'dWU9dH19KG4sS1VlKG4sZSwic2V0IiksdCksdH1jb25zdCBrMD0iaHQtZW1wdHktZGF0YS1zdGF0ZSIsU1h0PWA8ZGl2IGRhdGEtcmVmPSJlbXB0eURhdGFTdGF0ZUVsZW1lbnQiIGNsYXNzPSIke2swfSBoYW5kc29udGFibGUiPlxuICA8ZGl2IGNsYXNzPSIke2swfV9fY29udGVudC13cmFw'@; put 'cGVyIj5cbiAgICA8ZGl2IGRhdGEtcmVmPSJlbXB0eURhdGFTdGF0ZUlubmVyIiBjbGFzcz0iJHtrMH1fX2NvbnRlbnQtd3JhcHBlci1pbm5lciI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+YDt2YXIgaHE9bmV3IFdlYWtNYXAsc2dlPW5ldyBXZWFrTWFwLHQwPW5ldyBXZWFrTWFwLFdfPW5l'@; put 'dyBXZWFrTWFwO2NsYXNzIEFYdHtpbnN0YWxsKCl7aWYoQTEodGhpcyx0MCk/LmVtcHR5RGF0YVN0YXRlRWxlbWVudClyZXR1cm47Y29uc3QgZT1zd2Ake1NYdH1gO1A2KHRoaXMsdDAsZS5yZWZzKTtjb25zdHtlbXB0eURhdGFTdGF0ZUlubmVyOnQsZW1wdHlEYXRhU3RhdGVFbGVtZW50OnJ9'@; put 'PUExKHRoaXMsdDApO0tvKHQsW2I0KC0xKV0pLEtvKHIsW2I0KC0xKV0pLEExKHRoaXMsaHEpJiZBMSh0aGlzLGhxKS5hcHBlbmRDaGlsZChlLmZyYWdtZW50KX1nZXRFbGVtZW50KCl7cmV0dXJuIEExKHRoaXMsdDApPy5lbXB0eURhdGFTdGF0ZUVsZW1lbnR9Z2V0Rm9jdXNhYmxlRWxlbWVu'@; put 'dHMoKXtjb25zdHtlbXB0eURhdGFTdGF0ZUJ1dHRvbnM6ZSxlbXB0eURhdGFTdGF0ZUlubmVyOnR9PUExKHRoaXMsdDApLHI9QXJyYXkuZnJvbShlPy5jaGlsZHJlbj8/W10pO3JldHVybiAwPT09ci5sZW5ndGg/W3RdOnJ9c2hvdygpe0ExKHRoaXMsdDApPy5lbXB0eURhdGFTdGF0ZUVsZW1l'@; put 'bnQmJihBMSh0aGlzLHQwKS5lbXB0eURhdGFTdGF0ZUVsZW1lbnQuc3R5bGUuZGlzcGxheT0iYmxvY2siKX1oaWRlKCl7QTEodGhpcyx0MCk/LmVtcHR5RGF0YVN0YXRlRWxlbWVudCYmKEExKHRoaXMsV18pPy5yZW1vdmUoKSxQNih0aGlzLFdfLG51bGwpLEExKHRoaXMsdDApLmVtcHR5RGF0'@; put 'YVN0YXRlRWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIil9dXBkYXRlQ29udGVudChlLHQ9ITEpe2NvbnN0e2VtcHR5RGF0YVN0YXRlRWxlbWVudDpyLGVtcHR5RGF0YVN0YXRlSW5uZXI6aX09QTEodGhpcyx0MCk7bGV0IG87bz0ic3RyaW5nIj09dHlwZW9mIGU/e3RpdGxlOmV9Ont0aXRs'@; put 'ZTplPy50aXRsZSxkZXNjcmlwdGlvbjplPy5kZXNjcmlwdGlvbixidXR0b25zOmU/LmJ1dHRvbnN9O2NvbnN0IGE9c3dgJHsoKHt0aXRsZTpuLGRlc2NyaXB0aW9uOmUsYnV0dG9uczp0fSxyPSExKT0+YFxuICAke3I/YDxkaXYgY2xhc3M9IiR7azB9X19zcGlubmVyIiBhcmlhLWhpZGRlbj0i'@; put 'dHJ1ZSI+PC9kaXY+YDoiIn1cbiAgPGRpdiBjbGFzcz0iJHtrMH1fX2NvbnRlbnQiPlxuICAgICR7bj9gPGgyIGNsYXNzPSIke2swfV9fdGl0bGUiPiR7c20obil9PC9oMj5gOiIifVxuICAgICR7ZT9gPHAgY2xhc3M9IiR7azB9X19kZXNjcmlwdGlvbiI+JHtzbShlKX08L3A+YDoiIn1cbiAg'@; put 'PC9kaXY+XG4gIDxkaXZcbiAgICBkYXRhLXJlZj0iZW1wdHlEYXRhU3RhdGVCdXR0b25zIlxuICAgIGNsYXNzPSIke2swfV9fYnV0dG9ucyR7dD8ubGVuZ3RoJiZ0Lmxlbmd0aD4wP2AgJHtrMH1fX2J1dHRvbnMtLWhhcy1idXR0b25zYDoiIn0iXG4gID4keyFyJiZ0Py5sZW5ndGgmJnQubGVu'@; put 'Z3RoPjA/dC5tYXAobz0+YDxidXR0b24gY2xhc3M9Imh0LWJ1dHRvbiBodC1idXR0b24tLSR7by50eXBlfSI+JHtzbShvLnRleHQpfTwvYnV0dG9uPmApLmpvaW4oIiIpOiIifTwvZGl2PmApKG8sdCl9YDt0PyhZcihyLGAke2swfS0tbG9hZGluZ2ApLEtvKGksW1siYXJpYS1idXN5IiwidHJ1'@; put 'ZSJdXSkpOihrbyhyLGAke2swfS0tbG9hZGluZ2ApLHc0KGksImFyaWEtYnVzeSIpKSxQNih0aGlzLHQwLHsuLi5BMSh0aGlzLHQwKSwuLi5hLnJlZnN9KSxpLmlubmVySFRNTD0iIixpLmFwcGVuZENoaWxkKGEuZnJhZ21lbnQpLCF0JiZvLmJ1dHRvbnM/Lmxlbmd0aCYmby5idXR0b25zLmxl'@; put 'bmd0aD4wJiZBcnJheS5mcm9tKEExKHRoaXMsdDApLmVtcHR5RGF0YVN0YXRlQnV0dG9ucy5jaGlsZHJlbikuZm9yRWFjaCgobCx1KT0+e2wuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLG8uYnV0dG9uc1t1XS5jYWxsYmFjayl9KX11cGRhdGVDbGFzc05hbWVzKGUpe2NvbnN0e2VtcHR5RGF0'@; put 'YVN0YXRlRWxlbWVudDp0fT1BMSh0aGlzLHQwKTtlLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKT4wJiZlLmdldENvbHVtbkhlYWRlcnNDb3VudCgpPjA/WXIodCxgJHtrMH0tLWRpc2FibGUtdG9wLWJvcmRlcmApOmtvKHQsYCR7azB9LS1kaXNhYmxlLXRvcC1ib3JkZXJgKSxlLmNvdW50UmVu'@; put 'ZGVyYWJsZVJvd3MoKT4wJiZlLmdldFJvd0hlYWRlcnNDb3VudCgpPjA/WXIodCxgJHtrMH0tLWRpc2FibGUtaW5saW5lLWJvcmRlcmApOmtvKHQsYCR7azB9LS1kaXNhYmxlLWlubGluZS1ib3JkZXJgKSxlLmhhc0hvcml6b250YWxTY3JvbGwoKSYmIWUuaXNIb3Jpem9udGFsbHlTY3JvbGxh'@; put 'YmxlQnlXaW5kb3coKT9Zcih0LGAke2swfS0tZGlzYWJsZS1ib3R0b20tYm9yZGVyYCk6a28odCxgJHtrMH0tLWRpc2FibGUtYm90dG9tLWJvcmRlcmApfXVwZGF0ZVNpemUoZSx0PSExKXtjb25zdHtlbXB0eURhdGFTdGF0ZUVsZW1lbnQ6cn09QTEodGhpcyx0MCksaT1lLmhhc0hvcml6b250'@; put 'YWxTY3JvbGwoKT9HZChlLmhvdC5yb290RG9jdW1lbnQpOjAsbz1lLmNvdW50UmVuZGVyYWJsZVJvd3MoKSxhPWUuY291bnRSZW5kZXJhYmxlQ29sdW1ucygpLGw9ZS5nZXRDb2x1bW5IZWFkZXJzQ291bnQoKSxnPW8+MHx8ITA9PT10JiZhPjA7ci5zdHlsZS50b3A9YT4wP2Ake2UuZ2V0Q29s'@; put 'dW1uSGVhZGVySGVpZ2h0KCl9cHhgOiIwcHgiLHIuc3R5bGUuaW5zZXRJbmxpbmVTdGFydD0iMHB4Ijtjb25zdCBFPXtlbGVtZW50OkExKHRoaXMsV18pfTsoZnVuY3Rpb24gTVh0KG4sZSx0LHIsaSl7aWYoMCE9PXQpcmV0dXJuIGkuZWxlbWVudD8ucmVtb3ZlKCksdm9pZChpLmVsZW1lbnQ9'@; put 'bnVsbCk7aS5lbGVtZW50fHwoaS5lbGVtZW50PW4uY3JlYXRlRWxlbWVudCgiZGl2IiksaS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoYCR7cn0tcGxhY2Vob2xkZXJgKSxlLl93dC53dFRhYmxlLmhvbGRlci5hcHBlbmRDaGlsZChpLmVsZW1lbnQpKSxpLmVsZW1lbnQuc3R5bGUud2lkdGg9IjEw'@; put 'MCUiLGkuZWxlbWVudC5zdHlsZS5oZWlnaHQ9IjE1MHB4In0pKEExKHRoaXMsc2dlKSxlLG8sazAsRSksUDYodGhpcyxXXyxFLmVsZW1lbnQpO2NvbnN0IE89ZnVuY3Rpb24gVFh0KG4sZSx0KXtsZXQgcj1uLmdldFdvcmtzcGFjZVdpZHRoKCk7cmV0dXJuIG4uaXNIb3Jpem9udGFsbHlTY3Jv'@; put 'bGxhYmxlQnlXaW5kb3coKT9lPjA/cj1uLmdldFRvdGFsVGFibGVXaWR0aCgpOnQmJihyPW4uZ2V0Vmlld3BvcnRXaWR0aCgpKTpuLmdldFRhYmxlV2lkdGgoKS1uLmdldFJvd0hlYWRlcldpZHRoKCk8bi5nZXRWaWV3cG9ydFdpZHRoKCkmJmU+MCYmKHI9bi5nZXRUYWJsZVdpZHRoKCkpLHJ9'@; put 'KGUsYSxnKSxaPWZ1bmN0aW9uIHhYdChuLGUsdCxyKXtsZXQgaT1uLmdldFRhYmxlSGVpZ2h0KCk7cmV0dXJuIG4uaXNWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCl8fG4uaGFzVmVydGljYWxTY3JvbGwoKT9pPWU+MD9uLmhvdC5nZXRUYWJsZUhlaWdodCgpLW4uZ2V0Q29sdW1uSGVh'@; put 'ZGVySGVpZ2h0KCk6bi5ob3QuZ2V0VGFibGVIZWlnaHQoKTp0PjAmJmU+MD9pPW4uZ2V0Vmlld3BvcnRIZWlnaHQoKS1yOnQ+MCYmMD09PWUmJihpPW4uZ2V0V29ya3NwYWNlSGVpZ2h0KCktciksaX0oZSxhLGwsaSk7ci5zdHlsZS53aWR0aD1gJHtPfXB4YCxyLnN0eWxlLmhlaWdodD1gJHta'@; put 'fXB4YH1kZXN0cm95KCl7QTEodGhpcyx0MCk/LmVtcHR5RGF0YVN0YXRlRWxlbWVudD8ucmVtb3ZlKCksQTEodGhpcyxXXyk/LnJlbW92ZSgpLFA2KHRoaXMsV18sbnVsbCksUDYodGhpcyx0MCxudWxsKX1jb25zdHJ1Y3Rvcih7Z3JpZENvbnRhaW5lcjplLHJvb3REb2N1bWVudDp0fSl7ZHEo'@; put 'dGhpcyxocSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksZHEodGhpcyxzZ2Use3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGRxKHRoaXMsdDAse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLGRxKHRoaXMsV18se3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLFA2KHRoaXMsdDAs'@; put 'bnVsbCksUDYodGhpcyxXXyxudWxsKSxQNih0aGlzLGhxLGUpLFA2KHRoaXMsc2dlLHQpLHRoaXMuaW5zdGFsbCgpfX1mdW5jdGlvbiBYVWUobixlKXtpZihlLmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3'@; put 'aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFFVZShuLGUsdCl7aWYoIWUuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK3QrIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLmdldChuKX1mdW5jdGlvbiBEYyhuLGUpe3JldHVybiBm'@; put 'dW5jdGlvbiBrWHQobixlKXtyZXR1cm4gZS5nZXQ/ZS5nZXQuY2FsbChuKTplLnZhbHVlfShuLFFVZShuLGUsImdldCIpKX1mdW5jdGlvbiBZXyhuLGUsdCl7WFVlKG4sZSksZS5zZXQobix0KX1mdW5jdGlvbiB0aChuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uIFJYdChuLGUsdCl7aWYoZS5zZXQp'@; put 'ZS5zZXQuY2FsbChuLHQpO2Vsc2V7aWYoIWUud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2UudmFsdWU9dH19KG4sUVVlKG4sZSwic2V0IiksdCksdH1mdW5jdGlvbiBQZChuLGUsdCl7aWYoIWUuaGFzKG4p'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gdH1mdW5jdGlvbiBZNChuLGUpe1hVZShuLGUpLGUuYWRkKG4pfWNvbnN0IElDPSJlbXB0eURhdGFTdGF0ZSIsJEY9T2JqZWN0LmZyZWV6ZSh7VU5LTk9X'@; put 'TjoidW5rbm93biIsRklMVEVSUzoiZmlsdGVycyIsTE9BRElORzoibG9hZGluZyJ9KSxMWHQ9YHBsdWdpbjoke0lDfWA7dmFyIGk5PW5ldyBXZWFrTWFwLGsxPW5ldyBXZWFrTWFwLHFGPW5ldyBXZWFrTWFwLG85PW5ldyBXZWFrTWFwLFo0PW5ldyBXZWFrTWFwLEpVZT1uZXcgV2Vha1NldCxl'@; put 'emU9bmV3IFdlYWtTZXQsbGdlPW5ldyBXZWFrU2V0LHR6ZT1uZXcgV2Vha1NldCxuemU9bmV3IFdlYWtTZXQsZnE9bmV3IFdlYWtTZXQsREM9bmV3IFdlYWtTZXQsY2dlPW5ldyBXZWFrU2V0LEtGPW5ldyBXZWFrU2V0LHVnZT1uZXcgV2Vha1NldCxyemU9bmV3IFdlYWtTZXQsZGdlPW5ldyBX'@; put 'ZWFrTWFwLGhnZT1uZXcgV2Vha01hcCxmZ2U9bmV3IFdlYWtNYXA7Y2xhc3MgT1h0IGV4dGVuZHMgYWx7c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIElDfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDM3MH1zdGF0aWMgZ2V0IERFRkFVTFRfU0VUVElOR1MoKXty'@; put 'ZXR1cm57bWVzc2FnZTp2b2lkIDB9fXN0YXRpYyBnZXQgU0VUVElOR1NfVkFMSURBVE9SUygpe3JldHVybnttZXNzYWdlOmU9PiJzdHJpbmciPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGV8fHZvaWQgMD09PWV8fCEhZnVuY3Rpb24gSVh0KG4pe3JldHVybiBDYShuKX0oZSkmJih0'@; put 'eXBlb2YgZS50aXRsZT4idSJ8fCJzdHJpbmciPT10eXBlb2YgZS50aXRsZSkmJih0eXBlb2YgZS5kZXNjcmlwdGlvbj4idSJ8fCJzdHJpbmciPT10eXBlb2YgZS5kZXNjcmlwdGlvbikmJih0eXBlb2YgZS5idXR0b25zPiJ1Inx8QXJyYXkuaXNBcnJheShlLmJ1dHRvbnMpJiZlLmJ1dHRvbnMu'@; put 'ZXZlcnkodD0+Im9iamVjdCI9PXR5cGVvZiB0JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmInN0cmluZyI9PXR5cGVvZiB0LnR5cGUmJlsicHJpbWFyeSIsInNlY29uZGFyeSJdLmluY2x1ZGVzKHQudHlwZSkmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNhbGxiYWNrKSl9fWlzRW5hYmxlZCgp'@; put 'e3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtJQ119ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwoRGModGhpcyxrMSl8fCh0aCh0aGlzLGsxLG5ldyBBWHQoe2dyaWRDb250YWluZXI6dGhpcy5ob3Qucm9vdEdyaWRFbGVtZW50LHJvb3REb2N1bWVudDp0aGlzLmhvdC5yb290'@; put 'RG9jdW1lbnR9KSksUGQodGhpcyx0emUsUFh0KS5jYWxsKHRoaXMpLFBkKHRoaXMsSlVlLE5YdCkuY2FsbCh0aGlzKSksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLERjKHRoaXMsZGdlKSksdGhpcy5hZGRIb29rKCJhZnRlclJlbmRlciIsRGModGhpcyxoZ2UpKSx0aGlzLmFkZEhvb2soImFm'@; put 'dGVyUm93U2VxdWVuY2VDYWNoZVVwZGF0ZSIsKCk9PntQZCh0aGlzLERDLEd4KS5jYWxsKHRoaXMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblNlcXVlbmNlQ2FjaGVVcGRhdGUiLCgpPT57UGQodGhpcyxEQyxHeCkuY2FsbCh0aGlzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRmlsdGVy'@; put 'IixEYyh0aGlzLGZnZSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlRGF0YVByb3ZpZGVyRmV0Y2giLGU9PntlLnNraXBMb2FkaW5nfHxQZCh0aGlzLGV6ZSxGWHQpLmNhbGwodGhpcyl9KSx0aGlzLmFkZEhvb2soImFmdGVyRGF0YVByb3ZpZGVyRmV0Y2giLCgpPT5QZCh0aGlzLGxnZSxpemUpLmNh'@; put 'bGwodGhpcykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJEYXRhUHJvdmlkZXJGZXRjaEVycm9yIiwoKT0+UGQodGhpcyxsZ2UsaXplKS5jYWxsKHRoaXMpKSxzdXBlci5lbmFibGVQbHVnaW4oKSxQZCh0aGlzLERDLEd4KS5jYWxsKHRoaXMpKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVn'@; put 'aW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLFBkKHRoaXMsS0YscHEpLmNhbGwodGhpcyksdGhpcy5pc1Zpc2libGUoKSYmRGModGhpcyxrMSk/LnNob3coKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dGgodGhpcyxaNCwhMSksUGQodGhpcyxuemUsSFh0KS5jYWxsKHRo'@; put 'aXMpLERjKHRoaXMsazEpPy5kZXN0cm95KCksdGgodGhpcyxrMSxudWxsKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9aXNWaXNpYmxlKCl7cmV0dXJuIERjKHRoaXMsaTkpfWRlc3Ryb3koKXt0aCh0aGlzLFo0LCExKSx0aCh0aGlzLGk5LCExKSxEYyh0aGlzLGsxKT8uZGVzdHJveSgpLHRoKHRo'@; put 'aXMsazEsbnVsbCksdGgodGhpcyxxRiwhMSksdGgodGhpcyxvOSxudWxsKSxzdXBlci5kZXN0cm95KCl9Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksWTQodGhpcyxKVWUpLFk0KHRoaXMsZXplKSxZNCh0aGlzLGxnZSksWTQodGhpcyx0emUpLFk0KHRoaXMsbnplKSxZNCh0aGlzLGZx'@; put 'KSxZNCh0aGlzLERDKSxZNCh0aGlzLGNnZSksWTQodGhpcyxLRiksWTQodGhpcyx1Z2UpLFk0KHRoaXMscnplKSxZXyh0aGlzLGk5LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxZXyh0aGlzLGsxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxZXyh0aGlzLHFGLHt3cml0YWJsZToh'@; put 'MCx2YWx1ZTp2b2lkIDB9KSxZXyh0aGlzLG85LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxZXyh0aGlzLFo0LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxZXyh0aGlzLGRnZSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksWV8odGhpcyxoZ2Use3dyaXRhYmxlOiEwLHZhbHVl'@; put 'OnZvaWQgMH0pLFlfKHRoaXMsZmdlLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aCh0aGlzLGk5LCExKSx0aCh0aGlzLGsxLG51bGwpLHRoKHRoaXMscUYsITEpLHRoKHRoaXMsbzksbnVsbCksdGgodGhpcyxaNCwhMSksdGgodGhpcyxkZ2UsKCk9PntQZCh0aGlzLERDLEd4KS5jYWxs'@; put 'KHRoaXMpLHRoaXMuaG90LnJlbmRlcigpfSksdGgodGhpcyxoZ2UsKCk9PntEYyh0aGlzLGsxKT8uZ2V0RWxlbWVudCgpJiZ0aGlzLmlzVmlzaWJsZSgpJiZ0aGlzLmhvdC52aWV3JiYoRGModGhpcyxrMSkudXBkYXRlU2l6ZSh0aGlzLmhvdC52aWV3LERjKHRoaXMsWjQpKSxEYyh0aGlzLGsx'@; put 'KS51cGRhdGVDbGFzc05hbWVzKHRoaXMuaG90LnZpZXcpKX0pLHRoKHRoaXMsZmdlLHQ9Pnt0aCh0aGlzLHFGLHQ/Lmxlbmd0aD4wKSx0aGlzLmlzVmlzaWJsZSgpJiZQZCh0aGlzLEtGLHBxKS5jYWxsKHRoaXMpfSl9fWZ1bmN0aW9uIE5YdCgpe3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50'@; put 'TGlzdGVuZXIoRGModGhpcyxrMSkuZ2V0RWxlbWVudCgpLCJ3aGVlbCIsbj0+e1BkKHRoaXMscnplLFZYdCkuY2FsbCh0aGlzLG4pfSl9ZnVuY3Rpb24gRlh0KCl7RGModGhpcyxaNCl8fCh0aCh0aGlzLFo0LCEwKSxQZCh0aGlzLERDLEd4KS5jYWxsKHRoaXMpKX1mdW5jdGlvbiBpemUoKXtE'@; put 'Yyh0aGlzLFo0KSYmKHRoKHRoaXMsWjQsITEpLFBkKHRoaXMsdWdlLGF6ZSkuY2FsbCh0aGlzKSxQZCh0aGlzLERDLEd4KS5jYWxsKHRoaXMpLHRoaXMuaG90LnJlbmRlcigpKX1mdW5jdGlvbiBQWHQoKXt0aGlzLmhvdC5nZXRGb2N1c1Njb3BlTWFuYWdlcigpLnJlZ2lzdGVyU2NvcGUoSUMs'@; put 'RGModGhpcyxrMSkuZ2V0RWxlbWVudCgpLHtzaG9ydGN1dHNDb250ZXh0TmFtZTpMWHQscnVuT25seUlmOigpPT50aGlzLmlzVmlzaWJsZSgpLG9uQWN0aXZhdGU6bj0+e2NvbnN0IGU9RGModGhpcyxrMSk/LmdldEZvY3VzYWJsZUVsZW1lbnRzKCk/P1tdO2UubGVuZ3RoPjAmJigidGFiX2Zy'@; put 'b21fYWJvdmUiPT09bj9lLmF0KDApPy5mb2N1cygpOiJ0YWJfZnJvbV9iZWxvdyI9PT1uJiZlLmF0KC0xKT8uZm9jdXMoKSl9fSl9ZnVuY3Rpb24gSFh0KCl7dGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKS51bnJlZ2lzdGVyU2NvcGUoSUMpfWZ1bmN0aW9uIHBnZShuKXtjb25zdCBl'@; put 'PXRoaXMuZ2V0U2V0dGluZygibWVzc2FnZSIpO2xldCB0O2lmKHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShuKTplLCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3RpdGxlOnR9KSwhdD8udGl0bGUmJiF0Py5kZXNjcmlwdGlvbiYmIXQ/LmJ1dHRvbnMpe2NvbnN0IHI9e307cmV0dXJuIG49PT0k'@; put 'Ri5GSUxURVJTPyhyLnRpdGxlPXRoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoUnVlKSxyLmRlc2NyaXB0aW9uPXRoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoSXVlKSxyLmJ1dHRvbnM9W3t0ZXh0OnRoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoRHVlKSx0eXBlOiJzZWNvbmRh'@; put 'cnkiLGNhbGxiYWNrOigpPT57Y29uc3QgaT10aGlzLmhvdC5nZXRQbHVnaW4oImZpbHRlcnMiKTtpJiYoaS5jbGVhckNvbmRpdGlvbnMoKSxpLmZpbHRlcigpKX19XSk6bj09PSRGLkxPQURJTkc/KHIudGl0bGU9dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShMdWUpLHIuZGVzY3JpcHRp'@; put 'b249dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShPdWUpKTooci50aXRsZT10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEF1ZSksci5kZXNjcmlwdGlvbj10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKGt1ZSkpLHJ9cmV0dXJuIHR9ZnVuY3Rpb24gR3goKXtpZih0aGlzLmhv'@; put 'dC52aWV3KXtpZihEYyh0aGlzLFo0KSlyZXR1cm4gdm9pZChEYyh0aGlzLGk5KT9QZCh0aGlzLEtGLHBxKS5jYWxsKHRoaXMpOlBkKHRoaXMsY2dlLG96ZSkuY2FsbCh0aGlzKSk7MD09PXRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1ucygpfHwwPT09dGhpcy5ob3Qudmlldy5j'@; put 'b3VudFJlbmRlcmFibGVSb3dzKCk/UGQodGhpcyxjZ2Usb3plKS5jYWxsKHRoaXMpOlBkKHRoaXMsdWdlLGF6ZSkuY2FsbCh0aGlzKX19ZnVuY3Rpb24gb3plKCl7RGModGhpcyxpOSl8fCh0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRW1wdHlEYXRhU3RhdGVTaG93IiksUGQodGhpcyxLRixw'@; put 'cSkuY2FsbCh0aGlzKSxEYyh0aGlzLGsxKT8uc2hvdygpLHRoKHRoaXMsaTksITApLHRoKHRoaXMsbzksdGhpcy5ob3Quc2VsZWN0aW9uLmV4cG9ydFNlbGVjdGlvbigpKSx0aGlzLmhvdC5nZXRGb2N1c1Njb3BlTWFuYWdlcigpLmFjdGl2YXRlU2NvcGUoSUMpLHRoaXMuaG90LnJ1bkhvb2tz'@; put 'KCJhZnRlckVtcHR5RGF0YVN0YXRlU2hvdyIpKX1mdW5jdGlvbiBwcSgpe0RjKHRoaXMsWjQpP0RjKHRoaXMsazEpPy51cGRhdGVDb250ZW50KFBkKHRoaXMsZnEscGdlKS5jYWxsKHRoaXMsJEYuTE9BRElORyksITApOkRjKHRoaXMscUYpP0RjKHRoaXMsazEpPy51cGRhdGVDb250ZW50KFBk'@; put 'KHRoaXMsZnEscGdlKS5jYWxsKHRoaXMsJEYuRklMVEVSUyksITEpOkRjKHRoaXMsazEpPy51cGRhdGVDb250ZW50KFBkKHRoaXMsZnEscGdlKS5jYWxsKHRoaXMsJEYuVU5LTk9XTiksITEpfWZ1bmN0aW9uIGF6ZSgpe0RjKHRoaXMsaTkpJiYodGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUVt'@; put 'cHR5RGF0YVN0YXRlSGlkZSIpLERjKHRoaXMsazEpPy5oaWRlKCksdGgodGhpcyxpOSwhMSksdGhpcy5ob3QuZ2V0Rm9jdXNTY29wZU1hbmFnZXIoKS5kZWFjdGl2YXRlU2NvcGUoSUMpLERjKHRoaXMsbzkpJiZEYyh0aGlzLG85KS5yYW5nZXMubGVuZ3RoPjA/KHRoaXMuaG90LnNlbGVjdGlv'@; put 'bi5pbXBvcnRTZWxlY3Rpb24oey4uLkRjKHRoaXMsbzkpLGFjdGl2ZVJhbmdlOkRjKHRoaXMsbzkpLmFjdGl2ZVJhbmdlfSksdGhpcy5ob3Qudmlldy5yZW5kZXIoKSx0aCh0aGlzLG85LG51bGwpKTp0aGlzLmhvdC5zZWxlY3RDZWxsKDAsMCx2b2lkIDAsdm9pZCAwLCExKSx0aGlzLmhvdC5y'@; put 'dW5Ib29rcygiYWZ0ZXJFbXB0eURhdGFTdGF0ZUhpZGUiKSl9ZnVuY3Rpb24gVlh0KG4pe2NvbnN0IHQ9bi53aGVlbERlbHRhWD8/MCxyPU51bWJlci5pc05hTihuLmRlbHRhWCk/LTEqdDpuLmRlbHRhWDswIT09ciYmdGhpcy5ob3Qudmlldy5oYXNIb3Jpem9udGFsU2Nyb2xsKCkmJiF0aGlz'@; put 'LmhvdC52aWV3LmlzSG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KCkmJih0aGlzLmhvdC52aWV3LnNldFRhYmxlU2Nyb2xsUG9zaXRpb24oe2xlZnQ6dGhpcy5ob3Qudmlldy5nZXRUYWJsZVNjcm9sbFBvc2l0aW9uKCkubGVmdCtyfSksbi5wcmV2ZW50RGVmYXVsdCgpKX1mdW5jdGlv'@; put 'biBYRigpeyhmdW5jdGlvbiBFTnQoKXtKMChJNyksSjAoSGRlKSxKMChxRGUpLEowKHpkZSksSjAoS0RlKSxKMChPZGUpLEowKFhEZSksSjAoUURlKSxKMChKRGUpLEowKHJMZSksSjAob0xlKSxKMChkXyksSjAoV2RlKSxKMChGTGUpfSkoKSxmdW5jdGlvbiBxTnQoKXtDMChJTyksQzAoTVQp'@; put 'LEMwKG9oZSksQzAoaWhlKSxDMChzaGUpLEMwKHJoZSksQzAoWkxlKSxDMChxTGUpLEMwKFNaKSxDMChFWiksQzAocGhlKSxDMChENyksQzAoZmhlKSxDMChjaGUpfSgpLGZ1bmN0aW9uIGxGdCgpe2U2KExPKSxlNihtaGUpLGU2KE1aKSxlNihUWiksZTYoQVopLGU2KF9oZSksZTYoeWhlKSxl'@; put 'Nih4Wil9KCksZnVuY3Rpb24gVkZ0KCl7VWYoY0Z0KSxVZihkRnQpLFVmKGhGdCksVWYoZ0Z0KSxVZihtRnQpLFVmKHZGdCksVWYoX0Z0KSxVZihERnQpLFVmKE5GdCksVWYoRkZ0KSxVZihQRnQpLFVmKGtEZSksVWYoSEZ0KX0oKSxmdW5jdGlvbiBCWHQoKXtvbChGTyksb2woYVB0KSxvbChI'@; put 'Tyksb2woa1B0KSxvbChPUHQpLG9sKG1OZSksb2woTUh0KSxvbChRSHQpLG9sKFlWdCksb2woc0J0KSxvbChNQnQpLG9sKGJqdCksb2woT2p0KSxvbChJRyksb2woZnp0KSxvbChnWXQpLG9sKFlZdCksb2woZVp0KSxvbChjWnQpLG9sKF9adCksb2woUlp0KSxvbChWWnQpLG9sKG5HdCksb2wo'@; put 'Y0d0KSxvbChqR3QpLG9sKEdHdCksb2woS0d0KSxvbChJJHQpLG9sKHJxdCksb2woZ3F0KSxvbChBcXQpLG9sKFlxdCksb2woWHF0KSxvbChvS3QpLG9sKHZLdCksb2woaXEpLG9sKEJLdCksb2woWEt0KSxvbChPWHQpfSgpfWxldCBFbT0oKCk9Pnt2YXIgbjtjbGFzcyBle3N0YXRpYyNlPW49'@; put 'KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NW1vZD1HaSh7dHlwZTplfSksdGhpcy5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvXX0pKX1yZXR1cm4gbigpLGV9KSgpLCR4PSgoKT0+e3ZhciBuO2NsYXNzIGV7bmdPbkluaXQoKXt9'@; put 'c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7cHJvdmlkZXJzOlttVGVdLGltcG9ydHM6W3FvLGhkLFdkLHEwLEVtXX0pKX1yZXR1cm4gbigpLGV9'@; put 'KSgpLFFGPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW9dfSkpfXJldHVybiBuKCksZX0p'@; put 'KCksc3plPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8scTAscW8saGRdfSkpfXJldHVy'@; put 'biBuKCksZX0pKCksTEM9KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxoZCxxMCxXZCwk'@; put 'eCxRRixFbSxzemVdfSkpfXJldHVybiBuKCksZX0pKCk7ZnVuY3Rpb24gbHplKG4pe3JldHVybiBuLnJlcGxhY2UoL1slJjtdL2csIiIpfWNsYXNzIGdnZXtjb25zdHJ1Y3Rvcigpe3RoaXMucXVldWU9W119YWRkVG9RdWV1ZShlKXt0aGlzLnF1ZXVlLnB1c2goLi4uZSl9fWNvbnN0IGpYdD1u'@; put 'ZXcgU2V0KFsiZGF0ZSIsInRpbWUiLCJkYXRldGltZSIsImludGwtZGF0ZSIsImludGwtdGltZSIsImludGwtZGF0ZXRpbWUiXSk7ZnVuY3Rpb24gbWdlKCl7cmV0dXJuIG1nZT1DcihmdW5jdGlvbioobixlLHQscj0wKXtjb25zdCBpPW4uZ2V0UGx1Z2luKCJleHBvcnRGaWxlIiksbz17Zmls'@; put 'ZW5hbWU6dHx8ImV4cG9ydCIsY29sSGVhZGVyczohMH0sYT1uLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksbD1uLmNvdW50Um93cygpLTEsdT1uLmNvdW50Q29scygpLTEsZz0hIWEmJmEuZnJvbS5yb3c8MCYmYS5mcm9tLmNvbDwwO2lmKGEmJiFhLmlzU2luZ2xlQ2VsbCgpJiYhZyl7Y29uc3Qg'@; put 'ZWU9TWF0aC5tYXgoMCxNYXRoLm1pbihhLmZyb20ucm93LGEudG8ucm93KSksdmU9TWF0aC5tYXgoMCxNYXRoLm1pbihhLmZyb20uY29sLGEudG8uY29sKSksTWU9TWF0aC5tYXgoYS5mcm9tLnJvdyxhLnRvLnJvdyksSGU9TWF0aC5tYXgoYS5mcm9tLmNvbCxhLnRvLmNvbCk7by5yYW5nZT1b'@; put 'ZWUsTWF0aC5tYXgodmUsciksTWUsSGVdfWlmKCFvLnJhbmdlJiZyPjAmJihvLnJhbmdlPVswLHIsbCx1XSksImNzdiI9PT1lKXJldHVybiB2b2lkIGkuZG93bmxvYWRGaWxlKCJjc3YiLG8pO2NvbnN0IEU9W10sTz1uZXcgU2V0LFo9KGVlLHZlLE1lKT0+e2lmKE8uaGFzKE1lKSlyZXR1cm47'@; put 'Ty5hZGQoTWUpO2NvbnN0IEhlPWpYdC5oYXMoTWUudHlwZSksV2U9InN0cmluZyI9PXR5cGVvZiBNZS5jbGFzc05hbWUmJiIiIT09TWUuY2xhc3NOYW1lLGF0PSEwPT09TWUucmVhZE9ubHk7IUhlJiYhV2UmJiFhdHx8KEUucHVzaCh7bWV0YTpNZSx0eXBlOk1lLnR5cGUsY2xhc3NOYW1lOk1l'@; put 'LmNsYXNzTmFtZSxyZWFkT25seTpNZS5yZWFkT25seX0pLEhlJiYoTWUudHlwZT0idGV4dCIpLFdlJiYoTWUuY2xhc3NOYW1lPSIiKSxhdCYmKE1lLnJlYWRPbmx5PSExKSl9O24uYWRkSG9vaygiYWZ0ZXJHZXRDZWxsTWV0YSIsWik7dHJ5e2NvbnN0IGVlPXlpZWxkIGguZSg4ODcpLnRoZW4o'@; put 'aC50LmJpbmQoaCw5Mjg4NywyMykpLHZlPWVlLmRlZmF1bHQ/P2VlO3lpZWxkIGkuZG93bmxvYWRGaWxlQXN5bmMoInhsc3giLHsuLi5vLGVuZ2luZTp2ZX0pfWZpbmFsbHl7bi5yZW1vdmVIb29rKCJhZnRlckdldENlbGxNZXRhIixaKSxFLmZvckVhY2goKHttZXRhOmVlLHR5cGU6dmUsY2xh'@; put 'c3NOYW1lOk1lLHJlYWRPbmx5OkhlfSk9PntlZS50eXBlPXZlLGVlLmNsYXNzTmFtZT1NZSxlZS5yZWFkT25seT1IZX0pfX0pLG1nZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdmdlKG4sZT0wKXtjb25zdCB0PXI9PmZ1bmN0aW9uKCl7IWZ1bmN0aW9uIFVYdChuLGUsdCl7bWdl'@; put 'LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0odGhpcyxyLG4oKSxlKX07cmV0dXJue25hbWU6IkV4cG9ydCIsaGlkZGVuOiExLHN1Ym1lbnU6e2l0ZW1zOlt7a2V5OiJleHBvcnRfZmlsZTpjc3YiLG5hbWU6IkNTViIsY2FsbGJhY2s6dCgiY3N2Iil9LHtrZXk6ImV4cG9ydF9maWxlOnhsc3giLG5h'@; put 'bWU6IkV4Y2VsICgueGxzeCkiLGNhbGxiYWNrOnQoInhsc3giKX1dfX19WEYoKSxmdW5jdGlvbiB6WHQobil7Y29uc3QgZT0hKHR5cGVvZiB3aW5kb3c+InUiKSYmd2luZG93LmpRdWVyeTtlJiYoZS5mbi5oYW5kc29udGFibGU9ZnVuY3Rpb24odCwuLi5yKXtjb25zdCBpPXRoaXMuZmlyc3Qo'@; put 'KTtsZXQgYSxvPWkuZGF0YSgiaGFuZHNvbnRhYmxlIik7aWYoInN0cmluZyIhPXR5cGVvZiB0KXtjb25zdCBsPXR8fHt9O3JldHVybiBvP28udXBkYXRlU2V0dGluZ3MobCk6KG89bmV3IG4uQ29yZShpWzBdLGwpLGkuZGF0YSgiaGFuZHNvbnRhYmxlIixvKSxvLmluaXQoKSksaX1yZXR1cm4g'@; put 'byYmKHR5cGVvZiBvW3RdPCJ1Ij8oYT1vW3RdLmNhbGwobywuLi5yKSwiZGVzdHJveSI9PT10JiZpLnJlbW92ZURhdGEoKSk6SnIoYEhhbmRzb250YWJsZSBkbyBub3QgcHJvdmlkZSBhY3Rpb246ICR7dH1gKSksYX0pfShLcCk7Y29uc3QgX2w9S3A7X2wuX19HaG9zdFRhYmxlPUVoZSxfbC5f'@; put 'Z2V0TGlzdGVuZXJzQ291bnRlcj1mdW5jdGlvbiBWVHQoKXtyZXR1cm4gR1d9LF9sLl9nZXRSZWdpc3RlcmVkTWFwc0NvdW50ZXI9ZnVuY3Rpb24gbWt0KCl7cmV0dXJuIFlsZX0sX2wuRXZlbnRNYW5hZ2VyPVcyO2NvbnN0IFdYdD1beSxDLFYseixzLHYsTCxjLEgsQSx3LFIsVV0sWVh0PVtT'@; put 'LHhdO19sLmhlbHBlcj17fSxfbC5kb209e30sWG4oV1h0LG49PntYbihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKSxlPT57Il8iIT09ZS5jaGFyQXQoMCkmJihfbC5oZWxwZXJbZV09bltlXSl9KX0pLFhuKFlYdCxuPT57WG4oT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobiksZT0+'@; put 'eyJfIiE9PWUuY2hhckF0KDApJiYoX2wuZG9tW2VdPW5bZV0pfSl9KSxfbC5jZWxsVHlwZXM9X2wuY2VsbFR5cGVzPz97fSxYbihFUnQoKSxuPT57X2wuY2VsbFR5cGVzW25dPXJkZShuKX0pLF9sLmNlbGxUeXBlcy5yZWdpc3RlckNlbGxUeXBlPVVmLF9sLmNlbGxUeXBlcy5nZXRDZWxsVHlw'@; put 'ZT1yZGUsX2wuZWRpdG9ycz1fbC5lZGl0b3JzPz97fSxYbihPVHQoKSxuPT57X2wuZWRpdG9yc1tgJHtLMChuKX1FZGl0b3JgXT1aVyhuKX0pLF9sLmVkaXRvcnMucmVnaXN0ZXJFZGl0b3I9SjAsX2wuZWRpdG9ycy5nZXRFZGl0b3I9WlcsX2wuZWRpdG9ycy5lZGl0b3JGYWN0b3J5PUlEZSxf'@; put 'bC5yZW5kZXJlcnM9X2wucmVuZGVyZXJzPz97fSxYbihheHQoKSxuPT57Y29uc3QgZT0kVyhuKTsiYmFzZSI9PT1uJiYoX2wucmVuZGVyZXJzLmNlbGxEZWNvcmF0b3I9ZSksX2wucmVuZGVyZXJzW2Ake0swKG4pfVJlbmRlcmVyYF09ZX0pLF9sLnJlbmRlcmVycy5yZWdpc3RlclJlbmRlcmVy'@; put 'PUMwLF9sLnJlbmRlcmVycy5nZXRSZW5kZXJlcj0kVyxfbC5yZW5kZXJlcnMucmVuZGVyZXJGYWN0b3J5PUREZSxfbC52YWxpZGF0b3JzPV9sLnZhbGlkYXRvcnM/P3t9LFhuKGN4dCgpLG49PntfbC52YWxpZGF0b3JzW2Ake0swKG4pfVZhbGlkYXRvcmBdPXNsZShuKX0pLF9sLnZhbGlkYXRv'@; put 'cnMucmVnaXN0ZXJWYWxpZGF0b3I9ZTYsX2wudmFsaWRhdG9ycy5nZXRWYWxpZGF0b3I9c2xlLF9sLnBsdWdpbnM9X2wucGx1Z2lucz8/e30sWG4oYWxlKCksbj0+e19sLnBsdWdpbnNbbl09U0wobil9KSxfbC5wbHVnaW5zW2Ake0swKGFsLlBMVUdJTl9LRVkpfVBsdWdpbmBdPWFsLF9sLnBs'@; put 'dWdpbnMucmVnaXN0ZXJQbHVnaW49b2wsX2wucGx1Z2lucy5nZXRQbHVnaW49U0wsX2wudGhlbWVzPV9sLnRoZW1lcz8/e30sS3AudGhlbWVzLmhhc1RoZW1lPUVULEtwLnRoZW1lcy5nZXRUaGVtZT1DTyxLcC50aGVtZXMuZ2V0VGhlbWVOYW1lcz15RGUsS3AudGhlbWVzLmdldFRoZW1lcz1i'@; put 'RGUsS3AudGhlbWVzLnJlZ2lzdGVyVGhlbWU9U08sS3AudGhlbWVzLnJlaW5pdFRoZW1lPUNEZTtjb25zdCBwZz1LcCxNbT0iZGMucm93X3N0YXR1cyIsWlh0PXtkYXRhOk1tLHR5cGU6InRleHQiLHJlYWRPbmx5OiEwfSxKRj0obixlLHQpPT57Y29uc3Qgcj1uZXcgUmVnRXhwKGAoPzw9Xnxc'@; put 'XHMpJHsobj0+bi5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpKShlKX0oPz0kfFxccylgLCJnIik7cmV0dXJuIG4ucmVwbGFjZShyLCgpPT50KX0sY3plPW49PmAiJHtTdHJpbmcobj8/IiIpLnJlcGxhY2UoLyIvZywnIiInKX0iYCx1emU9KG4sZSk9Pntjb25zdCB0PW4u'@; put 'c3RhcnRzV2l0aCgiPSIpLHI9dD9uLnNsaWNlKDEpOm4saT0vIlteIl0qInwnW14nXSonL2c7bGV0IGwsbz0iIixhPTA7Y29uc3QgdT1nPT57bGV0IEU9SkYoZywiREMuVVNFUl9OQU1FIixjemUoZS51c2VyTmFtZSkpO0U9SkYoRSwiREMuT1JJR19WQUxVRSIsY3plKGUub3JpZ1ZhbHVlKSk7'@; put 'Y29uc3QgTz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoTW0pO2lmKC0xIT09Tyl7Y29uc3QgWj1gJHtwZy5oZWxwZXIuc3ByZWFkc2hlZXRDb2x1bW5MYWJlbChPKX0ke2Uucm93SW5kZXgrMX1gO0U9SkYoRSwiREMuUk9XX1NUQVRVUyIsWil9cmV0dXJuIGUuY29sdW1uTmFtZXMuZm9yRWFjaCgo'@; put 'WixlZSk9Pntjb25zdCB2ZT1gJHtwZy5oZWxwZXIuc3ByZWFkc2hlZXRDb2x1bW5MYWJlbChlZSl9JHtlLnJvd0luZGV4KzF9YDtFPUpGKEUsWix2ZSl9KSxFfTtmb3IoO2w9aS5leGVjKHIpOylvKz11KHIuc2xpY2UoYSxsLmluZGV4KSksbys9bFswXSxhPWwuaW5kZXgrbFswXS5sZW5ndGg7'@; put 'cmV0dXJuIG8rPXUoci5zbGljZShhKSksdD9gPSR7b31gOm99LGdxPShuLGUsdCk9Pntjb25zdCByPVtdLGk9YT0+LTE9PT1hfHxudWxsPT09YT92b2lkIDA6YSxvPWE9Pi0xPT09YXx8bnVsbD09PWE/dm9pZCAwOmE7Zm9yKGNvbnN0IGEgb2Ygbil7Y29uc3QgbD1pKGEuZnJvbS5yb3cpPz8w'@; put 'LHU9aShhLnRvLnJvdyk/P2UtMSxnPW8oYS5mcm9tLmNvbCk/PzAsRT1vKGEudG8uY29sKT8/dC0xLE89TWF0aC5taW4obCx1KSxaPU1hdGgubWF4KGwsdSksZWU9TWF0aC5taW4oZyxFKSx2ZT1NYXRoLm1heChnLEUpO2ZvcihsZXQgTWU9TztNZTw9WjtNZSsrKWZvcihsZXQgSGU9ZWU7SGU8'@; put 'PXZlO0hlKyspci5wdXNoKHtyb3c6TWUsY29sOkhlfSl9cmV0dXJuIHJ9LHFYdD1bIm1vdXNlZG93biIsIm1vdXNldXAiLCJjb250ZXh0bWVudSIsInNlbGVjdHN0YXJ0Il0sX2dlPXtkYXRhOiJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iLHR5cGU6ImRyb3Bkb3duIixzb3VyY2U6'@; put 'WyJObyIsIlllcyJdfSxkemU9bj0+bi5maWx0ZXIoZT0+KCJIQVJERk9STVVMQSI9PT1lLlJVTEVfVFlQRXx8IlNPRlRGT1JNVUxBIj09PWUuUlVMRV9UWVBFKSYmIS9EQ1wuKFVTRVJfTkFNRXxPUklHX1ZBTFVFfFJPV19TVEFUVVMpLy50ZXN0KGUuUlVMRV9WQUxVRSkpLm1hcChlPT5lLkJB'@; put 'U0VfQ09MKSx0UXQ9KG4sZSk9PntpZighZSlyZXR1cm4gbjtjb25zdCB0PU51bWJlcihuKTtyZXR1cm4gTnVtYmVyLmlzTmFOKHQpP246dH0saHplPShuLGUsdCk9Pntjb25zdCByPW4uc3RhcnRzV2l0aCgiPSIpLGk9cj9uLnNsaWNlKDEpOm4sbz0vIlteIl0qInwnW14nXSonL2c7bGV0IHUs'@; put 'YT0iIixsPTA7Y29uc3QgZz1FPT57bGV0IE89RTtyZXR1cm4gZS5mb3JFYWNoKChaLGVlKT0+e2NvbnN0IHZlPWAke3BnLmhlbHBlci5zcHJlYWRzaGVldENvbHVtbkxhYmVsKGVlKX0ke3QrMX1gO089SkYoTyxaLHZlKX0pLE99O2Zvcig7dT1vLmV4ZWMoaSk7KWErPWcoaS5zbGljZShsLHUu'@; put 'aW5kZXgpKSxhKz11WzBdLGw9dS5pbmRleCt1WzBdLmxlbmd0aDtyZXR1cm4gYSs9ZyhpLnNsaWNlKGwpKSxyP2A9JHthfWA6YX0seWdlPShuLGUsdCk9Pntmb3IobGV0IHIgb2Ygbil7Y29uc3QgaT1lLmZpbmQoYT0+YS5kYXRhPT09ci5OQU1FKSxvPXQudmFyc1tyLk5BTUVdO28mJihyLlRZ'@; put 'UEU9WyJEQVRFIiwiREFURVRJTUUiLCJUSU1FIl0uaW5jbHVkZXMoci5ERFRZUEUpPyJudW0iOm8udHlwZSksaSYmci5ERVNDJiYoaS5kZXNjPXIuREVTQyksaSYmbz8ubGVuZ3RoJiYoaS5sZW5ndGg9cGFyc2VJbnQoby5sZW5ndGgpKSxpJiZyLkNMU19SVUxFJiYoaS5jbHNSdWxlPXIuQ0xT'@; put 'X1JVTEUpLGkmJm8/LnR5cGUmJihpLnNhc1R5cGU9by50eXBlKX1yZXR1cm4gZX0sb1F0PW49PntpZihuKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShuKX1jYXRjaHtyZXR1cm59fSxiZ2U9KG4sZT0hMSk9Pm51bGw9PW58fCIiPT09bnx8ZSYmIi4iPT09bix3Z2U9bj0+e2NvbnN0IGU9L15cLygu'@; put 'KilcLyhbYS16XSopJC9zLmV4ZWMobik7aWYoIWUpcmV0dXJuIG5ldyBSZWdFeHAobik7bGV0Wyx0LHJdPWU7Y29uc3QgaT0vXlwoXD9pXCkvLmV4ZWModCk7cmV0dXJuIGkmJih0PXQuc2xpY2UoaVswXS5sZW5ndGgpLHIuaW5jbHVkZXMoImkiKXx8KHIrPSJpIikpLHQ9dC5yZXBsYWNlKC9c'@; put 'XFEoW1xzXFNdKj8pXFxFL2csKG8sYSk9PihuPT5uLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIikpKGEpKSx0PXQucmVwbGFjZSgvXFxBL2csIl4iKS5yZXBsYWNlKC9cXHovZywiKD8hW1xcc1xcU10pIiksbmV3IFJlZ0V4cCh0LHIpfSxtcT1uPT57aWYobnVsbD09bnx8'@; put 'IiI9PT1uKXJldHVyblswLDFdO2lmKCJzdHJpbmciPT10eXBlb2Ygbil7Y29uc3QgdD1uLnRyaW0oKS50b1VwcGVyQ2FzZSgpO2lmKCIuIj09PXR8fCIiPT09dClyZXR1cm5bMCwxXTtpZigiLl8iPT09dHx8Il8iPT09dClyZXR1cm5bMCwwXTtpZigvXlwuP1tBLVpdJC8udGVzdCh0KSlyZXR1'@; put 'cm5bMCx0LmNoYXJDb2RlQXQodC5sZW5ndGgtMSktNjUrMl07Y29uc3Qgcj1wYXJzZUZsb2F0KHQpO3JldHVybiBpc05hTihyKT9udWxsOlsxLHJdfWNvbnN0IGU9TnVtYmVyKG4pO3JldHVybiBpc05hTihlKT9udWxsOlsxLGVdfSxmemU9KG4sZSk9Pm5bMF0hPT1lWzBdP25bMF0tZVswXTpu'@; put 'WzFdLWVbMV0scHplPXtDQVNFOihuLGUpPT57c3dpdGNoKGUpe2Nhc2UiVVBDQVNFIjpyZXR1cm4hIVt2b2lkIDAsbnVsbF0uaW5jbHVkZXMobil8fCJzdHJpbmciPT10eXBlb2YgbiYmbi50b1N0cmluZygpPT09bi50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7Y2FzZSJMT1dDQVNFIjpyZXR1'@; put 'cm4hIVt2b2lkIDAsbnVsbF0uaW5jbHVkZXMobil8fCJzdHJpbmciPT10eXBlb2YgbiYmbi50b1N0cmluZygpPT09bi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl9cmV0dXJuITB9LE1JTlZBTDoobixlKT0+e2NvbnN0IHQ9bXEobikscj1tcShlKTtyZXR1cm4hKCF0fHwhcikmJmZ6ZSh0LHIp'@; put 'Pj0wfSxNQVhWQUw6KG4sZSk9Pntjb25zdCB0PW1xKG4pLHI9bXEoZSk7cmV0dXJuISghdHx8IXIpJiZmemUodCxyKTw9MH0sTk9UTlVMTDoobixlLHQ9ITEpPT4hKG51bGw9PW58fHQmJigwLHk0LmlzU3BlY2lhbE1pc3NpbmcpKG4pKSYmbi50b1N0cmluZygpLmxlbmd0aD4wLEhBUkRSRUdF'@; put 'WDoobixlLHQ9ITEpPT57aWYoYmdlKG4sdCkpcmV0dXJuITA7dHJ5e3JldHVybiB3Z2UoZS50b1N0cmluZygpKS50ZXN0KG4udG9TdHJpbmcoKSl9Y2F0Y2h7cmV0dXJuIGNvbnNvbGUud2FybihgSEFSRFJFR0VYIC0gaW52YWxpZCBwYXR0ZXJuLCB0cmVhdGVkIGFzIGFsd2F5cy12YWxpZDog'@; put 'JHtlfWApLCEwfX19O2Z1bmN0aW9uIGxRdChuLGUpe2lmKG51bGw9PW58fCFpc05hTihuKSYmaXNGaW5pdGUobikpcmV0dXJuIGUmJmUoITApLCEwO2NvbnN0IHQ9KDAseTQuaXNTcGVjaWFsTWlzc2luZykobik7cmV0dXJuIGUmJmUodCksdH1jb25zdCBjUXQ9L15cZHs0fS1cZHsyfS1cZHsy'@; put 'fSBcZHsyfTpcZHsyfTpcZHsyfSQvO2Z1bmN0aW9uIGd6ZShuLGUpe2NvbnN0IHQ9dGhpcz8uYWxsb3dFbXB0eT8/ITA7ZShudWxsIT1uJiYiIiE9PW4/InN0cmluZyI9PXR5cGVvZiBuJiZjUXQudGVzdChuKTp0KX1jb25zdCBkUXQ9e2RhdGU6ImludGwtZGF0ZSIsdGltZToiaW50bC10aW1l'@; put 'IixkYXRldGltZToiaW50bC1kYXRldGltZSJ9O2NsYXNzIGZRdCBleHRlbmRzIHBnLmVkaXRvcnMuQXV0b2NvbXBsZXRlRWRpdG9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpfWNyZWF0ZUVsZW1lbnRzKCl7c3VwZXIuY3JlYXRlRWxlbWVudHMoKX1vcGVuKCl7c3VwZXIub3BlbigpLHRoaXMu'@; put 'aXNDZWxsTnVtZXJpYygpP3RoaXMuaHRDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibnVtZXJpY0xpc3Rib3giKTp0aGlzLmh0Q29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoIm51bWVyaWNMaXN0Ym94Iil9aXNDZWxsTnVtZXJpYygpe3JldHVybiB0aGlzLmNlbGxQcm9wZXJ0aWVzPy5jbGFz'@; put 'c05hbWU/LmluY2x1ZGVzKCJodE51bWVyaWMiKX19Y29uc3QgbXplPW49Pm4scFF0PS9eKFxkezR9LVxkezJ9LVxkezJ9KSAoXGR7Mn06XGR7Mn0oPzo6XGR7Mn0pPykkLyxnUXQ9cGcuZWRpdG9ycy5nZXRFZGl0b3IoInRleHQiKSxtUXQ9cGcucmVuZGVyZXJzLmdldFJlbmRlcmVyKCJ0ZXh0'@; put 'Iik7Y2xhc3MgdlF0IGV4dGVuZHMgZ1F0e2NyZWF0ZUVsZW1lbnRzKCl7c3VwZXIuY3JlYXRlRWxlbWVudHMoImlucHV0IiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJkYXRldGltZS1sb2NhbCIpLHRoaXMuVEVYVEFSRUEuc2V0QXR0cmlidXRlKCJzdGVwIiwiMSIpfXNl'@; put 'dFZhbHVlKGUpe2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlP2UubWF0Y2gocFF0KTpudWxsO3N1cGVyLnNldFZhbHVlKHQ/YCR7dFsxXX1UJHt0WzJdfWA6ZSl9Z2V0VmFsdWUoKXtjb25zdCBlPXN1cGVyLmdldFZhbHVlKCk7aWYoInN0cmluZyIhPXR5cGVvZiBlfHwtMT09PWUuaW5kZXhP'@; put 'ZigiVCIpKXJldHVybiBlO2NvbnN0W3Qscl09ZS5zcGxpdCgiVCIpO3JldHVybmAke3R9ICR7NT09PXIubGVuZ3RoP2Ake3J9OjAwYDpyfWB9b3Blbigpe3N1cGVyLm9wZW4oKTt0cnl7dGhpcy5URVhUQVJFQS5zaG93UGlja2VyKCl9Y2F0Y2h7fX1mb2N1cygpe3RoaXMuVEVYVEFSRUEuZm9j'@; put 'dXMoKX19Y29uc3QgdnplPW49Pntjb25zdCBlPXBnLmNlbGxUeXBlcy5nZXRDZWxsVHlwZShuKTtwZy5jZWxsVHlwZXMucmVnaXN0ZXJDZWxsVHlwZShuLHsuLi5lLHZhbHVlRm9ybWF0dGVyOm16ZX0pfSxDZ2U9bj0+U3RyaW5nKG4/PyIiKS5yZXBsYWNlKC9bJjw+IiddL2csZT0+KHsiJiI6'@; put 'IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifVtlXSkpLF96ZT1uPT57bGV0IGU9bnVsbDt0cnl7Y29uc3Qgcj1uP0pTT04ucGFyc2Uobik6e307ZT1uZXcgSW50bC5OdW1iZXJGb3JtYXQod2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSxyKX1j'@; put 'YXRjaHtjb25zb2xlLndhcm4oYE5VTUJFUl9GT1JNQVQgLSBpbnZhbGlkIEludGwuTnVtYmVyRm9ybWF0IG9wdGlvbnM6ICR7bn1gKSxlPW51bGx9Y29uc3QgdD1wZy5yZW5kZXJlcnMuZ2V0UmVuZGVyZXIoInRleHQiKTtyZXR1cm4ocixpLG8sYSxsLHUsZyk9Pnt0KHIsaSxvLGEsbCx1LGcp'@; put 'O2NvbnN0IEU9TnVtYmVyKHUpO3JldHVybiBlJiZudWxsIT11JiYiIiE9PXUmJiFpc05hTihFKSYmKGkudGV4dENvbnRlbnQ9ZS5mb3JtYXQoRSkpLGl9fSx5UXQ9KG4sZSx0LHIsaSxvLGEpPT4oRWdlKGUpLGUuaW5uZXJIVE1MPWAke0NnZShvKX0gPGNkcy1pY29uIHNoYXBlPSJleGNsYW1h'@; put 'dGlvbi10cmlhbmdsZSIgc3RhdHVzPSJ3YXJuaW5nIj48L2Nkcy1pY29uPmAsZSksU2dlPShuLGUsdCxyLGksbyxhKT0+KEVnZShlKSxlLmlubmVySFRNTD1DZ2UobyksZSksYlF0PShuLGUsdCxyLGksbyxhKT0+KEVnZShlKSxlLmlubmVySFRNTD1gJHtDZ2Uobyl9IDxzcGFuIGNsYXNzPSJz'@; put 'cGlubmVyIHNwaW5uZXItc20gdmVydGljYWwtYWxpZ24tbWlkZGxlIj48L3NwYW4+YCxlKSxFZ2U9bj0+e24uY2xhc3NMaXN0LmNvbnRhaW5zKCJodERhcmsiKXx8bi5jbGFzc0xpc3QuYWRkKCJodERhcmsiKX0seXplPShuLGUpPT57dHJ5e3JldHVybiBuP3dnZShuKTpudWxsfWNhdGNoe3Jl'@; put 'dHVybiBjb25zb2xlLndhcm4oYCR7ZX0gLSBpbnZhbGlkIHBhdHRlcm4sIHdhcm5pbmcgZGlzYWJsZWQ6ICR7bn1gKSxudWxsfX0sd1F0PShuLGUsdD0hMSk9Pntjb25zdCByPXl6ZShlLCJIQVJEUkVHRVgiKSxpPXI/bnVsbDp5emUobiwiU09GVFJFR0VYIiksbz1wZy5yZW5kZXJlcnMuZ2V0'@; put 'UmVuZGVyZXIoInRleHQiKTtyZXR1cm4oYSxsLHUsZyxFLE8sWik9PntvKGEsbCx1LGcsRSxPLFopO2NvbnN0IGVlPSJZZXMiPT09YS5nZXREYXRhQXRSb3dQcm9wKHUsIl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyIpLHZlPWJnZShPLHQpLE1lPSEhciYmIXZlJiYhci50ZXN0KE8u'@; put 'dG9TdHJpbmcoKSksSGU9ISFpJiYhdmUmJiFpLnRlc3QoTy50b1N0cmluZygpKTtyZXR1cm4gZWV8fChNZT9sLnRpdGxlPWBSRUdFWDogJHtlfWA6SGUmJihsLmNsYXNzTGlzdC5hZGQoImRjLXdhcm5pbmctY2VsbCIpLGwudGl0bGU9YFJFR0VYOiAke259YCkpLGx9fTtjbGFzcyBiemV7Y29u'@; put 'c3RydWN0b3IoZSx0LHIsaSxvLGEpe3RoaXMucnVsZXM9W10sdGhpcy5kcXJ1bGVzPVtdLHRoaXMuZHFkYXRhPVtdLHRoaXMuaGlkZGVuQ29sdW1ucz1bXSx0aGlzLnByaW1hcnlLZXlzPVtdLHRoaXMuZXhlY3V0ZUhvdFZhbGlkYXRvcj0odSxnLEUpPT57Y29uc3QgTz17Li4udSx2YWxpZGF0'@; put 'b3I6dm9pZCAwLHJvdzowLGNvbDowLGluc3RhbmNlOm5ldyBwZyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx7fSksdmlzdWFsUm93OjAsdmlzdWFsQ29sOjAscHJvcDowfTtudWxsPT1nJiYoZz0iIiksdSYmdS52YWxpZGF0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB1LnZhbGlkYXRv'@; put 'cj91LnZhbGlkYXRvci5jYWxsKE8sZyxaPT57RSYmRShaKX0pOkUmJkUoITEpfSx0aGlzLnJlZ2lzdGVyQ3VzdG9tRWRpdG9ycygpLHRoaXMuc2FzcGFyYW1zPWUsdGhpcy5ob3RJbnN0YW5jZT1hO2NvbnN0IGw9bmV3IE1hcChbW19nZS5kYXRhLHsuLi5fZ2V9XV0pO2Zvcihjb25zdCB1IG9m'@; put 'IHIpe2NvbnN0IGc9b1F0KHUuQ09MVFlQRSk7ZyYmbC5zZXQodS5OQU1FLGcpfXRoaXMucnVsZXM9ZS5DT0xIRUFERVJTLnNwbGl0KCIsIikubWFwKHU9PmwuZ2V0KHUpPz97ZGF0YTp1fSksdGhpcy5ydWxlcz15Z2Uocix0aGlzLnJ1bGVzLHQpLHRoaXMucnVsZXM9KG49Pntmb3IobGV0IGUg'@; put 'b2YgbikibnVtZXJpYyI9PT1lLnR5cGUmJihlLm51bWVyaWNGb3JtYXQ9e3VzZUdyb3VwaW5nOiExLG1heGltdW1GcmFjdGlvbkRpZ2l0czoyMH0sZS5sb2NhbGU9d2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSk7cmV0dXJuIG59KSh0aGlzLnJ1bGVzKSx0aGlzLnJ1bGVzPShuPT57Zm9yKGNv'@; put 'bnN0IGUgb2Ygbil7Y29uc3QgdD1lLnR5cGU/ZFF0W2UudHlwZV06dm9pZCAwO3QmJihlLnR5cGU9dCl9cmV0dXJuIG59KSh0aGlzLnJ1bGVzKSx0aGlzLnJ1bGVzLnB1c2goey4uLlpYdH0pLHRoaXMuaGlkZGVuQ29sdW1ucy5wdXNoKHRoaXMucnVsZXMubGVuZ3RoLTEpLHRoaXMuZHFydWxl'@; put 'cz1bLi4uaV0sdGhpcy5kcWRhdGE9byx0aGlzLnByaW1hcnlLZXlzPWUuUEsuc3BsaXQoIiAiKSx0aGlzLmFkZFByaW1hcnlLZXlOb3ROdWxsUnVsZXMoKSx0aGlzLnVwZGF0ZURxRGF0YSgpLHRoaXMuc2V0dXBWYWxpZGF0aW9ucygpfWFkZFByaW1hcnlLZXlOb3ROdWxsUnVsZXMoKXtmb3Io'@; put 'Y29uc3QgZSBvZiB0aGlzLnByaW1hcnlLZXlzKWUmJnRoaXMucnVsZXMuc29tZShyPT5yLmRhdGE9PT1lKSYmKHRoaXMuZHFydWxlcy5zb21lKHI9PnIuQkFTRV9DT0w9PT1lJiYiTk9UTlVMTCI9PT1yLlJVTEVfVFlQRSl8fHRoaXMuZHFydWxlcy5wdXNoKHtCQVNFX0NPTDplLFJVTEVfVFlQ'@; put 'RToiTk9UTlVMTCIsUlVMRV9WQUxVRToiIixYOjF9KSl9cmVnaXN0ZXJDdXN0b21FZGl0b3JzKCl7cGcuZWRpdG9ycy5yZWdpc3RlckVkaXRvcigiYXV0b2NvbXBsZXRlLmN1c3RvbSIsZlF0KSx2emUoImludGwtZGF0ZSIpLHZ6ZSgiaW50bC10aW1lIikscGcuY2VsbFR5cGVzLnJlZ2lzdGVy'@; put 'Q2VsbFR5cGUoImludGwtZGF0ZXRpbWUiLHtlZGl0b3I6dlF0LHJlbmRlcmVyOm1RdCx2YWxpZGF0b3I6Z3plLHZhbHVlRm9ybWF0dGVyOm16ZX0pfWdldFJ1bGVzKCl7cmV0dXJuIHRoaXMucnVsZXN9Z2V0UnVsZShlKXtjb25zdCB0PXRoaXMuZ2V0UnVsZUluZGV4KGUpO3JldHVybiB0aGlz'@; put 'LnJ1bGVzW3RdfWdldEhpZGRlbkNvbHVtbnMoKXtyZXR1cm4gdGhpcy5oaWRkZW5Db2x1bW5zfXVwZGF0ZVJ1bGUoZSx0KXtsZXQgcj10aGlzLmdldFJ1bGVJbmRleChlKTt0aGlzLnJ1bGVzW3JdPXsuLi50aGlzLnJ1bGVzW3JdLC4uLnR9fXJlbW92ZVJ1bGUoZSl7Y29uc3QgdD10aGlzLmdl'@; put 'dFJ1bGVJbmRleChlKTt0aGlzLnJ1bGVzLnNwbGljZSh0LDEpfWdldERxRGV0YWlscyhlKXtyZXR1cm4gZT90aGlzLmRxcnVsZXMuZmlsdGVyKHQ9PnQuQkFTRV9DT0w9PT1lKTp0aGlzLmRxcnVsZXN9aXNEcUNvbChlKXtyZXR1cm4hIXRoaXMuZHFydWxlcy5maW5kKHQ9PnQuQkFTRV9DT0w9'@; put 'PT1lKX1oYXNEcVJ1bGVzKGUsdCxyPSExKXtyZXR1cm4gcj90aGlzLmRxcnVsZXMuZmlsdGVyKGk9PmkuQkFTRV9DT0w9PT1lJiZ0LmluY2x1ZGVzKGkuUlVMRV9UWVBFKSkubGVuZ3RoPT09dC5sZW5ndGg6ISF0aGlzLmRxcnVsZXMuZmluZChpPT5pLkJBU0VfQ09MPT09ZSYmdC5pbmNsdWRl'@; put 'cyhpLlJVTEVfVFlQRSkpfWdldE5vdE51bGxEZWZhdWx0VmFsdWUoZSl7Y29uc3QgdD10aGlzLmdldFJ1bGUoZSk7cmV0dXJuIGZ1bmN0aW9uIGlRdChuLGUsdCl7Y29uc3Qgcj1lLmZpbmQoaT0+aS5CQVNFX0NPTD09PW4mJiJOT1ROVUxMIj09PWkuUlVMRV9UWVBFKTtpZihyPy5SVUxFX1ZB'@; put 'TFVFJiYwIT09ci5SVUxFX1ZBTFVFLnRyaW0oKS5sZW5ndGgpcmV0dXJuIm51bWVyaWMiIT09dHx8aXNOYU4oTnVtYmVyKHIuUlVMRV9WQUxVRSkpP3IuUlVMRV9WQUxVRTpOdW1iZXIoci5SVUxFX1ZBTFVFKX0oZSx0aGlzLmRxcnVsZXMsdD8udHlwZSl9Z2V0Um91bmREaWdpdHMoZSl7Y29u'@; put 'c3QgdD10aGlzLmRxcnVsZXMuZmluZChpPT5pLkJBU0VfQ09MPT09ZSYmIlJPVU5EIj09PWkuUlVMRV9UWVBFKTtpZighdClyZXR1cm47Y29uc3Qgcj1wYXJzZUludCh0LlJVTEVfVkFMVUUsMTApO3JldHVybiBpc05hTihyKT92b2lkIDA6cn1nZXRSZWdleFJ1bGVWYWx1ZXMoZSl7Y29uc3Qg'@; put 'dD10aGlzLmRxcnVsZXMuZmluZChpPT5pLkJBU0VfQ09MPT09ZSYmIkhBUkRSRUdFWCI9PT1pLlJVTEVfVFlQRSkscj10aGlzLmRxcnVsZXMuZmluZChpPT5pLkJBU0VfQ09MPT09ZSYmIlNPRlRSRUdFWCI9PT1pLlJVTEVfVFlQRSk7cmV0dXJue2hhcmRSZWdleFZhbHVlOnQ/LlJVTEVfVkFM'@; put 'VUUsc29mdFJlZ2V4VmFsdWU6cj8uUlVMRV9WQUxVRX19Z2V0Rm9ybXVsYVJ1bGVWYWx1ZShlKXtyZXR1cm4gdGhpcy5kcXJ1bGVzLmZpbmQocj0+ci5CQVNFX0NPTD09PWUmJigiSEFSREZPUk1VTEEiPT09ci5SVUxFX1RZUEV8fCJTT0ZURk9STVVMQSI9PT1yLlJVTEVfVFlQRSkpPy5SVUxF'@; put 'X1ZBTFVFfWdldERxRHJvcGRvd25Tb3VyY2UoZSl7bGV0IHQ9W107cmV0dXJuIHRoaXMuZHFydWxlcy5mb3JFYWNoKHI9PntyLkJBU0VfQ09MLnRvU3RyaW5nKCk9PT1lLmRhdGEmJmUuZGF0YS50b1N0cmluZygpJiZbIkhBUkRTRUxFQ1QiLCJTT0ZUU0VMRUNUIiwiSEFSRFNFTEVDVF9IT09L'@; put 'IiwiU09GVFNFTEVDVF9IT09LIl0uaW5jbHVkZXMoci5SVUxFX1RZUEUudG9TdHJpbmcoKSkmJnRoaXMuZHFkYXRhLmZpbHRlcihpPT5pLkJBU0VfQ09MPT09ci5CQVNFX0NPTCkuZm9yRWFjaChpPT57aWYoZS50eXBlJiYibnVtZXJpYyI9PT1lLnR5cGUpe2NvbnN0IG89aS5SVUxFX0RBVEE7'@; put 'dC5wdXNoKCgwLHk0LmlzU3BlY2lhbE1pc3NpbmcpKG8pP286TnVtYmVyKG8pKX1lbHNlIHQucHVzaChpLlJVTEVfREFUQSl9KX0pLHR9ZmFpbHNTb2Z0UmVnZXgoZSx0KXtjb25zdCByPSJudW1lcmljIj09PXRoaXMucnVsZXMuZmluZChhPT5hLmRhdGE9PT1lKT8udHlwZTtpZihiZ2UodCxy'@; put 'KXx8dGhpcy5kcXJ1bGVzLmZpbmQoYT0+YS5CQVNFX0NPTD09PWUmJiJIQVJEUkVHRVgiPT09YS5SVUxFX1RZUEUpKXJldHVybiExO2NvbnN0IG89dGhpcy5kcXJ1bGVzLmZpbmQoYT0+YS5CQVNFX0NPTD09PWUmJiJTT0ZUUkVHRVgiPT09YS5SVUxFX1RZUEUpO2lmKCFvKXJldHVybiExO3Ry'@; put 'eXtyZXR1cm4hd2dlKG8uUlVMRV9WQUxVRSkudGVzdCh0LnRvU3RyaW5nKCkpfWNhdGNoe3JldHVybiExfX11cGRhdGVEcURhdGEoKXt0aGlzLmRxZGF0YS5sZW5ndGg+MCYmKCgpPT57Y29uc3QgZT1bXTtyZXR1cm4gdGhpcy5kcWRhdGEuZm9yRWFjaCh0PT57ZS5pbmNsdWRlcyh0LkJBU0Vf'@; put 'Q09MKXx8ZS5wdXNoKHQuQkFTRV9DT0wpfSksZX0pKCkuZm9yRWFjaCh0PT57bGV0IHI9ITE7dGhpcy5kcXJ1bGVzLmxlbmd0aD4wJiZ0aGlzLmRxcnVsZXMuZm9yRWFjaChpPT57aS5CQVNFX0NPTD09PXQmJigiU09GVFNFTEVDVCI9PT1pLlJVTEVfVFlQRXx8IkhBUkRTRUxFQ1QiPT09aS5S'@; put 'VUxFX1RZUEUpJiYocj0hMCl9KSxyfHx0aGlzLmRxcnVsZXMucHVzaCh7QkFTRV9DT0w6dCxSVUxFX1RZUEU6IlNPRlRTRUxFQ1QiLFJVTEVfVkFMVUU6dCxYOjF9KX0pfXNldHVwVmFsaWRhdGlvbnMoKXtmb3IobGV0IGU9MDtlPHRoaXMucnVsZXMubGVuZ3RoO2UrKyl7Y29uc3QgdD10aGlz'@; put 'LnJ1bGVzW2VdLmRhdGF8fCIiO2lmKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09dCl7aWYodGhpcy5pc0RxQ29sKHQpKXtsZXQgaT10aGlzLmdldERxRHJvcGRvd25Tb3VyY2UodGhpcy5ydWxlc1tlXSk7aWYoaS5sZW5ndGg+MCYmKHRoaXMucnVsZXNbZV0uc291cmNlPWks'@; put 'dGhpcy5ydWxlc1tlXS5lZGl0b3I9ImF1dG9jb21wbGV0ZS5jdXN0b20iLHRoaXMucnVsZXNbZV0ucmVuZGVyZXI9ImF1dG9jb21wbGV0ZSIsdGhpcy5ydWxlc1tlXS5maWx0ZXI9ITEsIm51bSIhPT10aGlzLnJ1bGVzW2VdLnNhc1R5cGUmJih0aGlzLnJ1bGVzW2VdLnR5cGU9ImF1dG9jb21w'@; put 'bGV0ZSIpKSx0aGlzLmhhc0RxUnVsZXModCxbIlNPRlRTRUxFQ1QiXSkmJih0aGlzLnJ1bGVzW2VdLnN0cmljdD0hMSksdGhpcy5oYXNEcVJ1bGVzKHQsWyJIQVJEU0VMRUNUIl0pJiYodGhpcy5ydWxlc1tlXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyh0LFsiU09GVFNFTEVDVF9IT09L'@; put 'Il0pJiYodGhpcy5ydWxlc1tlXS5zdHJpY3Q9ITEpLHRoaXMuaGFzRHFSdWxlcyh0LFsiSEFSRFNFTEVDVF9IT09LIl0pJiYodGhpcy5ydWxlc1tlXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyh0LFsiTk9UTlVMTCJdKSYmKHRoaXMucnVsZXNbZV0uYWxsb3dFbXB0eT0hMSksdGhpcy5o'@; put 'YXNEcVJ1bGVzKHQsWyJSRUFET05MWSJdKSYmKHRoaXMucnVsZXNbZV0ucmVhZE9ubHk9ITApLHRoaXMuaGFzRHFSdWxlcyh0LFsiSEFSREZPUk1VTEEiXSkmJih0aGlzLnJ1bGVzW2VdLnJlYWRPbmx5PSEwKSx0aGlzLmhhc0RxUnVsZXModCxbIkhJRERFTiJdKSYmdGhpcy5oaWRkZW5Db2x1'@; put 'bW5zLnB1c2goZSksdGhpcy5oYXNEcVJ1bGVzKHQsWyJOVU1CRVJfRk9STUFUIl0pKXtjb25zdCBvPXRoaXMuZ2V0RHFEZXRhaWxzKHQpLmZpbmQoYT0+Ik5VTUJFUl9GT1JNQVQiPT09YS5SVUxFX1RZUEUpO3RoaXMucnVsZXNbZV0ucmVuZGVyZXI9X3plKG8/LlJVTEVfVkFMVUUpLHRoaXMu'@; put 'cnVsZXNbZV0ubnVtZXJpY0Zvcm1hdD12b2lkIDB9aWYodGhpcy5oYXNEcVJ1bGVzKHQsWyJIQVJEUkVHRVgiLCJTT0ZUUkVHRVgiXSkpe2NvbnN0e2hhcmRSZWdleFZhbHVlOm8sc29mdFJlZ2V4VmFsdWU6YX09dGhpcy5nZXRSZWdleFJ1bGVWYWx1ZXModCk7dGhpcy5ydWxlc1tlXS5yZW5k'@; put 'ZXJlcj13UXQoYSxvLCJudW1lcmljIj09PXRoaXMucnVsZXNbZV0udHlwZSl9fXRoaXMuc2V0RGVmYXVsdFZhbGlkYXRvcih0aGlzLGUpLHRoaXMuc2V0Q29sdW1uTGV2ZWxTZWN1cml0eShlKX19dGhpcy5zYXNwYXJhbXM/LkNMU19GTEFHJiZ0aGlzLmhpZGRlbkNvbHVtbnMucHVzaCgwKX1z'@; put 'ZXREZWZhdWx0VmFsaWRhdG9yKGUsdCl7dGhpcy5ydWxlc1t0XS52YWxpZGF0b3I9ZnVuY3Rpb24ocixpKXtjb25zdCBvPWUucnVsZXNbdF0uZGF0YT8udG9TdHJpbmcoKSxhPWUucnVsZXNbdF0udHlwZXx8IiI7bGV0IGw9bnVsbDtpZigiWWVzIiE9PXRoaXMuaW5zdGFuY2U/LmdldERhdGFB'@; put 'dFJvd1Byb3A/Lih0aGlzLnJvdywiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIil8fGUucHJpbWFyeUtleXMuaW5jbHVkZXMob3x8IiIpKXJldHVybiJhdXRvY29tcGxldGUiIT09dGhpcy5lZGl0b3ImJiJhdXRvY29tcGxldGUuY3VzdG9tIiE9PXRoaXMuZWRpdG9yfHwoZS5nZXRI'@; put 'YW5kc29udGFibGVWYWxpZGF0b3IoImF1dG9jb21wbGV0ZSIpLmNhbGwodGhpcyxyLGc9PntsPWd9KSxsKT8oZS5nZXRIYW5kc29udGFibGVWYWxpZGF0b3IoYSkuY2FsbCh0aGlzLHIsZz0+e2w9Z30pLGw/ZS5sZW5ndGhDaGVjayhyLGUucnVsZXNbdF0ubGVuZ3RoLGEpP2UuaXNEcUNvbChv'@; put 'fHwiIikmJiEoKG4sZSx0PSExKT0+e2ZvcihsZXQgciBvZiBuKWlmKHB6ZVtyLlJVTEVfVFlQRV0mJiFwemVbci5SVUxFX1RZUEVdKGUsci5SVUxFX1ZBTFVFLHQpKXJldHVybiBjb25zb2xlLndhcm4oYERRIEludmFsaWQgUmVhc29uOiAke3IuUlVMRV9UWVBFfVxuVmFsdWU6ICR7ZX0pXG5S'@; put 'dWxlIFZhbHVlOiAke3IuUlVMRV9WQUxVRS5sZW5ndGg+MCYmIiAiIT09ci5SVUxFX1ZBTFVFP3IuUlVMRV9WQUxVRToiTm90IGRlZmluZWQifWApLCExO3JldHVybiEwfSkoZS5nZXREcURldGFpbHMob3x8IiIpLHIsIm51bWVyaWMiPT09YSk/KGNvbnNvbGUud2FybihgRFEgVmFsaWRhdGlv'@; put 'biAtIGludmFsaWQgKFZhbHVlOiAke3J9KWApLHZvaWQgaSghMSkpOnZvaWQgaSghMCk6KGNvbnNvbGUud2FybihgTGVuZ3RoIFZhbGlkYXRpb24gLSBpbnZhbGlkIChWYWx1ZTogJHtyfSlgKSx2b2lkIGkoITEpKTooY29uc29sZS53YXJuKGBIT1QgTmF0aXZlIFZhbGlkYXRpb24gLSBpbnZh'@; put 'bGlkIChWYWx1ZTogJHtyfSlgKSx2b2lkIGkoITEpKSk6KGNvbnNvbGUud2FybihgSE9UIE5hdGl2ZSBWYWxpZGF0aW9uIChhdXRvY29tcGxldGUpIC0gaW52YWxpZCAoVmFsdWU6ICR7cn0pYCksdm9pZCBpKCExKSk7aSghMCl9fWxlbmd0aENoZWNrKGUsdCxyKXtpZigoMCx5NC5pc1NwZWNp'@; put 'YWxNaXNzaW5nKShlKXx8bnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMDtpZigibnVtZXJpYyI9PT1yKXtpZig4PT09dClyZXR1cm4hMDtpZih0PDN8fHQ+OHx8IU51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIGNvbnNvbGUud2FybigiaW52YWxpZCBsZW5ndGggZnJvbSBTQVMsIHJ1bGUgbGVu'@; put 'Z3RoIGNhbiBvbmx5IGJlIGFuIGludGVnZXIgYmV0d2VlbiAzLTgiKSwhMTtjb25zdCBpPU51bWJlcihlKT09PWUmJmUlMSE9MDtpZih0PDgmJmkpcmV0dXJuIGNvbnNvbGUud2FybigicmVkdWNlZCBsZW5ndGggbnVtZXJpY3MgY2Fubm90IGNvbnRhaW4gZGVjaW1hbHMgZWxzZSBwcmVjaXNp'@; put 'b24gd2lsbCBiZSBhZmZlY3RlZCIpLCExO3N3aXRjaCh0KXtjYXNlIDM6cmV0dXJuIGU8PTgxOTI7Y2FzZSA0OnJldHVybiBlPD0yMDk3MTUyO2Nhc2UgNTpyZXR1cm4gZTw9NTM2ODcwOTEyO2Nhc2UgNjpyZXR1cm4gZTw9MTM3NDM4OTUzNDcyO2Nhc2UgNzpyZXR1cm4gZTw9MzUxODQzNzIw'@; put 'ODg4MzJ9fXJldHVybiBlLnRvU3RyaW5nKCkubGVuZ3RoPD10fWdldEhhbmRzb250YWJsZVZhbGlkYXRvcihlKXtzd2l0Y2goZSl7Y2FzZSJhdXRvY29tcGxldGUiOnJldHVybiBMTztjYXNlIm51bWVyaWMiOnJldHVybiBsUXQ7Y2FzZSJpbnRsLWRhdGUiOnJldHVybiBUWjtjYXNlImludGwt'@; put 'dGltZSI6cmV0dXJuIEFaO2Nhc2UiaW50bC1kYXRldGltZSI6cmV0dXJuIGd6ZTtkZWZhdWx0OnJldHVybih0LHIpPT5yP3IoITApOm51bGx9fWdldFJ1bGVJbmRleChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/ZTp0aGlzLnJ1bGVzLmZpbmRJbmRleCh0PT50LmRhdGE9PT1lKX1zZXRD'@; put 'b2x1bW5MZXZlbFNlY3VyaXR5KGUpe2lmKCF0aGlzLnNhc3BhcmFtcz8uQ0xTX0ZMQUcpcmV0dXJuO2NvbnN0IHQ9dGhpcy5ydWxlc1tlXTtpZih0aGlzLnByaW1hcnlLZXlzLmluY2x1ZGVzKHQuZGF0YSkmJih0LmNsc1J1bGU9IlJFQUQiKSwiSElERSI9PT10LmNsc1J1bGUmJnRoaXMuaGlk'@; put 'ZGVuQ29sdW1ucy5wdXNoKGUpLCJSRUFEIj09PXQuY2xzUnVsZSYmKHQucmVhZE9ubHk9ITApLCJFRElUIj09PXQuY2xzUnVsZSl7dC5yZWFkT25seT0hMTtjb25zdCByPXRoaXMuaGlkZGVuQ29sdW1ucy5pbmRleE9mKGUpOy0xIT09ciYmdGhpcy5oaWRkZW5Db2x1bW5zLnNwbGljZShyLDEp'@; put 'fX19Y29uc3QgQ1F0PVsiTk9UTlVMTCIsIlJFQURPTkxZIiwiSElEREVOIl0sdnE9e251bWVyaWM6IiIsZGVmYXVsdDoiIn07ZnVuY3Rpb24gRVF0KG4sZSx0KXtpZih0JiZlPy5kYXRhKXtjb25zdCByPWZ1bmN0aW9uIFNRdChuLGUsdCl7Y29uc3Qgcj1lLmZpbmQoaT0+aS5CQVNFX0NPTD09'@; put 'PW4mJkNRdC5pbmNsdWRlcyhpLlJVTEVfVFlQRSkmJm51bGwhPWkuUlVMRV9WQUxVRSYmaS5SVUxFX1ZBTFVFLnRyaW0oKS5sZW5ndGg+MCk7aWYocilyZXR1cm4ibnVtZXJpYyIhPT10fHxpc05hTihOdW1iZXIoci5SVUxFX1ZBTFVFKSk/ci5SVUxFX1ZBTFVFOk51bWJlcihyLlJVTEVfVkFM'@; put 'VUUpfShlLmRhdGEsdCxuKTtpZih2b2lkIDAhPT1yKXJldHVybiByfWlmKCFuKXJldHVybiB2cS5kZWZhdWx0O3N3aXRjaChuKXtjYXNlImRyb3Bkb3duIjpjYXNlImF1dG9jb21wbGV0ZSI6cmV0dXJuIGUmJmUuc291cmNlP2Uuc291cmNlWzBdOltdO2RlZmF1bHQ6cmV0dXJuIHZxLmhhc093'@; put 'blByb3BlcnR5KG4pP3ZxW25dOnZxLmRlZmF1bHR9fWZ1bmN0aW9uIE1RdChuLGUpe2lmKCFpc0Zpbml0ZShuKXx8IWlzRmluaXRlKGUpKXJldHVybiBuO2NvbnN0IHQ9TWF0aC5wb3coMTAsZSk7cmV0dXJuIE1hdGguc2lnbihuKSpNYXRoLnJvdW5kKE1hdGguYWJzKG4pKnQpL3R9ZnVuY3Rp'@; put 'b24gTWdlKG4pe3JldHVybiBudWxsPT1ufHwwPT09bi50b1N0cmluZygpLnRyaW0oKS5sZW5ndGh9Y29uc3QgX3E9bj0+bi5maWx0ZXIoZT0+IkhBUkRGT1JNVUxBIj09PWUuUlVMRV9UWVBFfHwiU09GVEZPUk1VTEEiPT09ZS5SVUxFX1RZUEUpLm1hcChlPT5lLkJBU0VfQ09MKSx5cT0obixl'@; put 'KT0+IkMiPT09bi5maW5kKHQ9PnQuTkFNRT09PWUpPy5ERFRZUEUsd3plPW49PiJzdHJpbmciPT10eXBlb2YgbiYmbi5zdGFydHNXaXRoKCI9Iik/e3ZhbHVlOmAnJHtufWAsd2FzRXNjYXBlZDohMH06e3ZhbHVlOm4sd2FzRXNjYXBlZDohMX0sQ3plPW49PiJzdHJpbmciIT10eXBlb2Ygbnx8'@; put 'IiciIT09bi5jaGFyQXQoMCl8fCI9IiE9PW4uY2hhckF0KDEpP246bi5zbGljZSgxKSxxeD0obixlKT0+ZS5tYXAodD0+U3RyaW5nKG5bdF0pKS5qb2luKCIgIiksVGdlPShuLGUsdCk9PntuLmhhcyhlKXx8bi5zZXQoZSxuZXcgU2V0KSxuLmdldChlKS5hZGQodCl9LHhnZT0obixlLHQpPT5u'@; put 'LmdldChlKT8uaGFzKHQpPz8hMSxTemU9KG4sZSx0KT0+e24uZ2V0KGUpPy5kZWxldGUodCl9O3ZhciBaaD1mdW5jdGlvbihuKXtyZXR1cm4gbi5SRUxBVElWRT0iUkVMQVRJVkUiLG4uQUJTT0xVVEU9IkFCU09MVVRFIixufShaaHx8e30pO2NsYXNzIGEze2NvbnN0cnVjdG9yKGUsdCxyKXt0'@; put 'aGlzLnR5cGU9ZSx0aGlzLmNvbD10LHRoaXMuc2hlZXQ9cn1zdGF0aWMgYWJzb2x1dGUoZSx0KXtyZXR1cm4gbmV3IGEzKFpoLkFCU09MVVRFLGUsdCl9c3RhdGljIHJlbGF0aXZlKGUsdCl7cmV0dXJuIG5ldyBhMyhaaC5SRUxBVElWRSxlLHQpfXN0YXRpYyBjb21wYXJlQnlBYnNvbHV0ZUFk'@; put 'ZHJlc3MoZSl7cmV0dXJuKHQscik9PnQudG9TaW1wbGVDb2x1bW5BZGRyZXNzKGUpLmNvbC1yLnRvU2ltcGxlQ29sdW1uQWRkcmVzcyhlKS5jb2x9aXNDb2x1bW5BYnNvbHV0ZSgpe3JldHVybiB0aGlzLnR5cGU9PT1aaC5BQlNPTFVURX1pc0NvbHVtblJlbGF0aXZlKCl7cmV0dXJuIHRoaXMu'@; put 'dHlwZT09PVpoLlJFTEFUSVZFfWlzQWJzb2x1dGUoKXtyZXR1cm4gdGhpcy50eXBlPT09WmguQUJTT0xVVEUmJnZvaWQgMCE9PXRoaXMuc2hlZXR9bW92ZWQoZSx0LHIpe3JldHVybiBuZXcgYTModGhpcy50eXBlLHRoaXMuY29sK3Qsdm9pZCAwPT09dGhpcy5zaGVldD92b2lkIDA6ZSl9c2hp'@; put 'ZnRlZEJ5Q29sdW1ucyhlKXtyZXR1cm4gbmV3IGEzKHRoaXMudHlwZSx0aGlzLmNvbCtlLHRoaXMuc2hlZXQpfXRvU2ltcGxlQ29sdW1uQWRkcmVzcyhlKXtjb25zdCB0PSQ0KHRoaXMsZSk7bGV0IHI9dGhpcy5jb2w7cmV0dXJuIHRoaXMuaXNDb2x1bW5SZWxhdGl2ZSgpJiYocj1lLmNvbCt0'@; put 'aGlzLmNvbCksc1dlKHQscil9c2hpZnRSZWxhdGl2ZURpbWVuc2lvbnMoZSx0KXtjb25zdCByPXRoaXMuaXNDb2x1bW5SZWxhdGl2ZSgpP3RoaXMuY29sK2U6dGhpcy5jb2w7cmV0dXJuIG5ldyBhMyh0aGlzLnR5cGUscix0aGlzLnNoZWV0KX1zaGlmdEFic29sdXRlRGltZW5zaW9ucyhlLHQp'@; put 'e2NvbnN0IHI9dGhpcy5pc0NvbHVtbkFic29sdXRlKCk/dGhpcy5jb2wrZTp0aGlzLmNvbDtyZXR1cm4gbmV3IGEzKHRoaXMudHlwZSxyLHRoaXMuc2hlZXQpfXdpdGhTaGVldChlKXtyZXR1cm4gbmV3IGEzKHRoaXMudHlwZSx0aGlzLmNvbCxlKX1pc0ludmFsaWQoZSl7cmV0dXJuIHRoaXMu'@; put 'dG9TaW1wbGVDb2x1bW5BZGRyZXNzKGUpLmNvbDwwfWhhc2goZSl7Y29uc3QgdD1lJiZ2b2lkIDAhPT10aGlzLnNoZWV0P2AjJHt0aGlzLnNoZWV0fWA6IiI7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSBaaC5SRUxBVElWRTpyZXR1cm5gJHt0fSNDT0xSJHt0aGlzLmNvbH1gO2Nhc2UgWmguQUJT'@; put 'T0xVVEU6cmV0dXJuYCR7dH0jQ09MQSR7dGhpcy5jb2x9YH19dW5wYXJzZShlKXtjb25zdCB0PXRoaXMudG9TaW1wbGVDb2x1bW5BZGRyZXNzKGUpO2lmKFFKdCh0KSlyZXR1cm47Y29uc3Qgcj1FcSh0LmNvbCk7cmV0dXJuYCR7dGhpcy50eXBlPT09WmguQUJTT0xVVEU/IiQiOiIifSR7cn1g'@; put 'fWV4Y2VlZHNTaGVldFNpemVMaW1pdHMoZSl7cmV0dXJuIHRoaXMuY29sPj1lfX1jbGFzcyBsZntjb25zdHJ1Y3RvcihlLHQscil7dGhpcy50eXBlPWUsdGhpcy5yb3c9dCx0aGlzLnNoZWV0PXJ9c3RhdGljIGFic29sdXRlKGUsdCl7cmV0dXJuIG5ldyBsZihaaC5BQlNPTFVURSxlLHQpfXN0'@; put 'YXRpYyByZWxhdGl2ZShlLHQpe3JldHVybiBuZXcgbGYoWmguUkVMQVRJVkUsZSx0KX1zdGF0aWMgY29tcGFyZUJ5QWJzb2x1dGVBZGRyZXNzKGUpe3JldHVybih0LHIpPT50LnRvU2ltcGxlUm93QWRkcmVzcyhlKS5yb3ctci50b1NpbXBsZVJvd0FkZHJlc3MoZSkucm93fWlzUm93QWJzb2x1'@; put 'dGUoKXtyZXR1cm4gdGhpcy50eXBlPT09WmguQUJTT0xVVEV9aXNSb3dSZWxhdGl2ZSgpe3JldHVybiB0aGlzLnR5cGU9PT1aaC5SRUxBVElWRX1pc0Fic29sdXRlKCl7cmV0dXJuIHRoaXMudHlwZT09PVpoLkFCU09MVVRFJiZ2b2lkIDAhPT10aGlzLnNoZWV0fW1vdmVkKGUsdCxyKXtyZXR1'@; put 'cm4gbmV3IGxmKHRoaXMudHlwZSx0aGlzLnJvdytyLHZvaWQgMD09PXRoaXMuc2hlZXQ/dm9pZCAwOmUpfXNoaWZ0ZWRCeVJvd3MoZSl7cmV0dXJuIG5ldyBsZih0aGlzLnR5cGUsdGhpcy5yb3crZSx0aGlzLnNoZWV0KX10b1NpbXBsZVJvd0FkZHJlc3MoZSl7Y29uc3QgdD0kNCh0aGlzLGUp'@; put 'O2xldCByPXRoaXMucm93O3JldHVybiB0aGlzLmlzUm93UmVsYXRpdmUoKSYmKHI9ZS5yb3crdGhpcy5yb3cpLGFXZSh0LHIpfXNoaWZ0UmVsYXRpdmVEaW1lbnNpb25zKGUsdCl7Y29uc3Qgcj10aGlzLmlzUm93UmVsYXRpdmUoKT90aGlzLnJvdyt0OnRoaXMucm93O3JldHVybiBuZXcgbGYo'@; put 'dGhpcy50eXBlLHIsdGhpcy5zaGVldCl9c2hpZnRBYnNvbHV0ZURpbWVuc2lvbnMoZSx0KXtjb25zdCByPXRoaXMuaXNSb3dBYnNvbHV0ZSgpP3RoaXMucm93K3Q6dGhpcy5yb3c7cmV0dXJuIG5ldyBsZih0aGlzLnR5cGUscix0aGlzLnNoZWV0KX13aXRoU2hlZXQoZSl7cmV0dXJuIG5ldyBs'@; put 'Zih0aGlzLnR5cGUsdGhpcy5yb3csZSl9aXNJbnZhbGlkKGUpe3JldHVybiB0aGlzLnRvU2ltcGxlUm93QWRkcmVzcyhlKS5yb3c8MH1oYXNoKGUpe2NvbnN0IHQ9ZSYmdm9pZCAwIT09dGhpcy5zaGVldD9gIyR7dGhpcy5zaGVldH1gOiIiO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgWmguUkVM'@; put 'QVRJVkU6cmV0dXJuYCR7dH0jUk9XUiR7dGhpcy5yb3d9YDtjYXNlIFpoLkFCU09MVVRFOnJldHVybmAke3R9I1JPV0Eke3RoaXMucm93fWB9fXVucGFyc2UoZSl7Y29uc3QgdD10aGlzLnRvU2ltcGxlUm93QWRkcmVzcyhlKTtyZXR1cm4gWEp0KHQpP3ZvaWQgMDpgJHt0aGlzLnR5cGU9PT1a'@; put 'aC5BQlNPTFVURT8iJCI6IiJ9JHt0LnJvdysxfWB9ZXhjZWVkc1NoZWV0U2l6ZUxpbWl0cyhlKXtyZXR1cm4gdGhpcy5yb3c+PWV9fXZhciBtdT1mdW5jdGlvbihuKXtyZXR1cm4gbi5DRUxMX1JFRkVSRU5DRV9SRUxBVElWRT0iQ0VMTF9SRUZFUkVOQ0UiLG4uQ0VMTF9SRUZFUkVOQ0VfQUJT'@; put 'T0xVVEU9IkNFTExfUkVGRVJFTkNFX0FCU09MVVRFIixuLkNFTExfUkVGRVJFTkNFX0FCU09MVVRFX0NPTD0iQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEVfQ09MIixuLkNFTExfUkVGRVJFTkNFX0FCU09MVVRFX1JPVz0iQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEVfUk9XIixufShtdXx8e30pO2Ns'@; put 'YXNzIHh1e2NvbnN0cnVjdG9yKGUsdCxyLGkpe3RoaXMuY29sPWUsdGhpcy5yb3c9dCx0aGlzLnR5cGU9cix0aGlzLnNoZWV0PWl9c3RhdGljIGZyb21Db2xBbmRSb3coZSx0LHIpe3JldHVybihlLmlzQ29sdW1uQWJzb2x1dGUoKSYmdC5pc1Jvd0Fic29sdXRlKCk/eHUuYWJzb2x1dGUuYmlu'@; put 'ZCh0aGlzKTplLmlzQ29sdW1uQWJzb2x1dGUoKT94dS5hYnNvbHV0ZUNvbC5iaW5kKHRoaXMpOnQuaXNSb3dBYnNvbHV0ZSgpP3h1LmFic29sdXRlUm93LmJpbmQodGhpcyk6eHUucmVsYXRpdmUuYmluZCh0aGlzKSkoZS5jb2wsdC5yb3cscil9c3RhdGljIHJlbGF0aXZlKGUsdCxyKXtyZXR1'@; put 'cm4gbmV3IHh1KGUsdCxtdS5DRUxMX1JFRkVSRU5DRV9SRUxBVElWRSxyKX1zdGF0aWMgYWJzb2x1dGUoZSx0LHIpe3JldHVybiBuZXcgeHUoZSx0LG11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFLHIpfXN0YXRpYyBhYnNvbHV0ZUNvbChlLHQscil7cmV0dXJuIG5ldyB4dShlLHQsbXUuQ0VM'@; put 'TF9SRUZFUkVOQ0VfQUJTT0xVVEVfQ09MLHIpfXN0YXRpYyBhYnNvbHV0ZVJvdyhlLHQscil7cmV0dXJuIG5ldyB4dShlLHQsbXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEVfUk9XLHIpfXRvU2ltcGxlQ2VsbEFkZHJlc3MoZSl7Y29uc3QgdD0kNCh0aGlzLGUpO3JldHVybiB0aGlzLnR5cGU9'@; put 'PT1tdS5DRUxMX1JFRkVSRU5DRV9BQlNPTFVURT9Cbyh0LHRoaXMuY29sLHRoaXMucm93KTp0aGlzLnR5cGU9PT1tdS5DRUxMX1JFRkVSRU5DRV9BQlNPTFVURV9ST1c/Qm8odCxlLmNvbCt0aGlzLmNvbCx0aGlzLnJvdyk6Qm8odCx0aGlzLnR5cGU9PT1tdS5DRUxMX1JFRkVSRU5DRV9BQlNP'@; put 'TFVURV9DT0w/dGhpcy5jb2w6ZS5jb2wrdGhpcy5jb2wsZS5yb3crdGhpcy5yb3cpfXRvQ29sdW1uQWRkcmVzcygpe2NvbnN0IGU9dGhpcy5pc0NvbHVtblJlbGF0aXZlKCk/WmguUkVMQVRJVkU6WmguQUJTT0xVVEU7cmV0dXJuIG5ldyBhMyhlLHRoaXMuY29sLHRoaXMuc2hlZXQpfXRvUm93'@; put 'QWRkcmVzcygpe2NvbnN0IGU9dGhpcy5pc1Jvd1JlbGF0aXZlKCk/WmguUkVMQVRJVkU6WmguQUJTT0xVVEU7cmV0dXJuIG5ldyBsZihlLHRoaXMucm93LHRoaXMuc2hlZXQpfXRvU2ltcGxlQ29sdW1uQWRkcmVzcyhlKXtjb25zdCB0PSQ0KHRoaXMsZSk7bGV0IHI9dGhpcy5jb2w7cmV0dXJu'@; put 'IHRoaXMuaXNDb2x1bW5SZWxhdGl2ZSgpJiYocis9ZS5jb2wpLHNXZSh0LHIpfXRvU2ltcGxlUm93QWRkcmVzcyhlKXtjb25zdCB0PSQ0KHRoaXMsZSk7bGV0IHI9dGhpcy5yb3c7cmV0dXJuIHRoaXMuaXNSb3dSZWxhdGl2ZSgpJiYocis9ZS5yb3cpLGFXZSh0LHIpfWlzUm93QWJzb2x1dGUo'@; put 'KXtyZXR1cm4gdGhpcy50eXBlPT09bXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEV8fHRoaXMudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFX1JPV31pc0NvbHVtbkFic29sdXRlKCl7cmV0dXJuIHRoaXMudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFfHx0aGlzLnR5'@; put 'cGU9PT1tdS5DRUxMX1JFRkVSRU5DRV9BQlNPTFVURV9DT0x9aXNDb2x1bW5SZWxhdGl2ZSgpe3JldHVybiB0aGlzLnR5cGU9PT1tdS5DRUxMX1JFRkVSRU5DRV9SRUxBVElWRXx8dGhpcy50eXBlPT09bXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEVfUk9XfWlzUm93UmVsYXRpdmUoKXtyZXR1'@; put 'cm4gdGhpcy50eXBlPT09bXUuQ0VMTF9SRUZFUkVOQ0VfUkVMQVRJVkV8fHRoaXMudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFX0NPTH1pc0Fic29sdXRlKCl7cmV0dXJuIHRoaXMudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFJiZ2b2lkIDAhPT10aGlzLnNoZWV0'@; put 'fXNoaWZ0ZWRCeVJvd3MoZSl7cmV0dXJuIG5ldyB4dSh0aGlzLmNvbCx0aGlzLnJvdytlLHRoaXMudHlwZSx0aGlzLnNoZWV0KX1zaGlmdGVkQnlDb2x1bW5zKGUpe3JldHVybiBuZXcgeHUodGhpcy5jb2wrZSx0aGlzLnJvdyx0aGlzLnR5cGUsdGhpcy5zaGVldCl9bW92ZWQoZSx0LHIpe3Jl'@; put 'dHVybiBuZXcgeHUodGhpcy5jb2wrdCx0aGlzLnJvdytyLHRoaXMudHlwZSx2b2lkIDA9PT10aGlzLnNoZWV0P3ZvaWQgMDplKX13aXRoU2hlZXQoZSl7cmV0dXJuIG5ldyB4dSh0aGlzLmNvbCx0aGlzLnJvdyx0aGlzLnR5cGUsZSl9aXNJbnZhbGlkKGUpe3JldHVybiBucCh0aGlzLnRvU2lt'@; put 'cGxlQ2VsbEFkZHJlc3MoZSkpfXNoaWZ0UmVsYXRpdmVEaW1lbnNpb25zKGUsdCl7Y29uc3Qgcj10aGlzLmlzQ29sdW1uQWJzb2x1dGUoKT90aGlzLmNvbDp0aGlzLmNvbCtlLGk9dGhpcy5pc1Jvd0Fic29sdXRlKCk/dGhpcy5yb3c6dGhpcy5yb3crdDtyZXR1cm4gbmV3IHh1KHIsaSx0aGlz'@; put 'LnR5cGUsdGhpcy5zaGVldCl9c2hpZnRBYnNvbHV0ZURpbWVuc2lvbnMoZSx0KXtjb25zdCByPXRoaXMuaXNDb2x1bW5SZWxhdGl2ZSgpP3RoaXMuY29sOnRoaXMuY29sK2UsaT10aGlzLmlzUm93UmVsYXRpdmUoKT90aGlzLnJvdzp0aGlzLnJvdyt0O3JldHVybiBuZXcgeHUocixpLHRoaXMu'@; put 'dHlwZSx0aGlzLnNoZWV0KX1oYXNoKGUpe2NvbnN0IHQ9ZSYmdm9pZCAwIT09dGhpcy5zaGVldD9gIyR7dGhpcy5zaGVldH1gOiIiO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgbXUuQ0VMTF9SRUZFUkVOQ0VfUkVMQVRJVkU6cmV0dXJuYCR7dH0jJHt0aGlzLnJvd31SJHt0aGlzLmNvbH1gO2Nh'@; put 'c2UgbXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEU6cmV0dXJuYCR7dH0jJHt0aGlzLnJvd31BJHt0aGlzLmNvbH1gO2Nhc2UgbXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEVfQ09MOnJldHVybmAke3R9IyR7dGhpcy5yb3d9QUMke3RoaXMuY29sfWA7Y2FzZSBtdS5DRUxMX1JFRkVSRU5DRV9B'@; put 'QlNPTFVURV9ST1c6cmV0dXJuYCR7dH0jJHt0aGlzLnJvd31BUiR7dGhpcy5jb2x9YH19dW5wYXJzZShlKXtjb25zdCB0PXRoaXMudG9TaW1wbGVDZWxsQWRkcmVzcyhlKTtpZihucCh0KSlyZXR1cm47Y29uc3Qgcj1FcSh0LmNvbCk7cmV0dXJuYCR7dGhpcy50eXBlPT09bXUuQ0VMTF9SRUZF'@; put 'UkVOQ0VfQUJTT0xVVEV8fHRoaXMudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFX0NPTD8iJCI6IiJ9JHtyfSR7dGhpcy50eXBlPT09bXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEV8fHRoaXMudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRFX1JPVz8iJCI6IiJ9JHt0'@; put 'LnJvdysxfWB9ZXhjZWVkc1NoZWV0U2l6ZUxpbWl0cyhlLHQpe3JldHVybiB0aGlzLnJvdz49dHx8dGhpcy5jb2w+PWV9fWNvbnN0IHMzPSIkIixicT0iQS1aYS16XHhjMC1cdTAyYWYiLEFnZT1gJHticX0wLTlfLmAsRXplPWBbJHticX0wLTlfXStgLEt4PWAoJHtFemV9fCcoKCg/IScpLnwn'@; put 'JykqKScpIWAsTXplPWAoJHtLeH0pP1xcJHtzM30/W0EtWmEtel0rXFwke3MzfT9bMC05XStgLFR6ZT1gKCR7S3h9KT9cXCR7czN9P1tBLVphLXpdK2AseHplPWAoJHtLeH0pP1xcJHtzM30/WzAtOV0rYCxBemU9IltyUl1bMC05XSpbY0NdWzAtOV0qIixrUXQ9YCgke016ZX0pW14ke0FnZX1d'@; put 'YCxremU9YFske2JxfV9dWyR7QWdlfV0qYCxSUXQ9WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5Il0sUnplPVsuLi5BcnJheS5mcm9tKEFycmF5KDI2KSkubWFwKChuLGUpPT5lKzY1KSwuLi5BcnJheS5mcm9tKEFycmF5KDI2KSkubWFwKChuLGUpPT5lKzk3KSwuLi5B'@; put 'cnJheS5mcm9tKEFycmF5KDQ5NikpLm1hcCgobixlKT0+ZSsxOTIpXS5tYXAobj0+U3RyaW5nLmZyb21DaGFyQ29kZShuKSksSXplPW5ldyBSZWdFeHAoYF4oJHtLeH0pPyhcXCR7czN9PykoW0EtWmEtel0rKShcXCR7czN9PykoWzAtOV0rKSRgKSxJUXQ9bmV3IFJlZ0V4cChgXigke0t4fSk/'@; put 'KFxcJHtzM30/KShbQS1aYS16XSspJGApLERRdD1uZXcgUmVnRXhwKGBeKCR7S3h9KT8oXFwke3MzfT8pKFswLTldKykkYCksTFF0PW5ldyBSZWdFeHAoYF4ke0V6ZX0kYCksWHg9KG4sZSx0KT0+e2NvbnN0IHI9SXplLmV4ZWMoZSksaT1SZ2Uocls2XSk7bGV0IG89TXEocixuKTtpZih2b2lk'@; put 'IDA9PT1vKXJldHVybjtudWxsPT09byYmKG89dm9pZCAwKTtjb25zdCBhPU51bWJlcihyWzhdKS0xO3JldHVybiByWzVdPT09czMmJnJbN109PT1zMz94dS5hYnNvbHV0ZShpLGEsbyk6cls1XT09PXMzP3h1LmFic29sdXRlQ29sKGksYS10LnJvdyxvKTpyWzddPT09czM/eHUuYWJzb2x1dGVS'@; put 'b3coaS10LmNvbCxhLG8pOnh1LnJlbGF0aXZlKGktdC5jb2wsYS10LnJvdyxvKX0sd3E9KG4sZSx0KT0+e2NvbnN0IHI9SVF0LmV4ZWMoZSk7bGV0IGk9TXEocixuKTtpZih2b2lkIDA9PT1pKXJldHVybjtudWxsPT09aSYmKGk9dm9pZCAwKTtjb25zdCBvPVJnZShyWzZdKTtyZXR1cm4gcls1'@; put 'XT09PXMzP2EzLmFic29sdXRlKG8saSk6YTMucmVsYXRpdmUoby10LmNvbCxpKX0sQ3E9KG4sZSx0KT0+e2NvbnN0IHI9RFF0LmV4ZWMoZSk7bGV0IGk9TXEocixuKTtpZih2b2lkIDA9PT1pKXJldHVybjtudWxsPT09aSYmKGk9dm9pZCAwKTtjb25zdCBvPU51bWJlcihyWzZdKS0xO3JldHVy'@; put 'biByWzVdPT09czM/bGYuYWJzb2x1dGUobyxpKTpsZi5yZWxhdGl2ZShvLXQucm93LGkpfSxrZ2U9KG4sZSx0KT0+e2NvbnN0IHI9SXplLmV4ZWMoZSk7aWYoIXIpcmV0dXJuO2NvbnN0IGk9UmdlKHJbNl0pO2xldCBvPU1xKHIsbik7aWYodm9pZCAwPT09bylyZXR1cm47bnVsbD09PW8mJihv'@; put 'PXQpO2NvbnN0IGE9TnVtYmVyKHJbOF0pLTE7cmV0dXJuIEJvKG8saSxhKX0sU3E9KG4sZSx0KT0+e2NvbnN0IHI9RXEoZS5jb2wpLGk9RHplKGUuc2hlZXQsbik7aWYodm9pZCAwIT09aSlyZXR1cm4gdCE9PWUuc2hlZXQ/YCR7aX0hJHtyfSR7ZS5yb3crMX1gOmAke3J9JHtlLnJvdysxfWB9'@; put 'O2Z1bmN0aW9uIFJnZShuKXtyZXR1cm4gMT09PW4ubGVuZ3RoP24udG9VcHBlckNhc2UoKS5jaGFyQ29kZUF0KDApLTY1Om4uc3BsaXQoIiIpLnJlZHVjZSgoZSx0KT0+MjYqZSsodC50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCktNjQpLDApLTF9ZnVuY3Rpb24gRXEobil7bGV0IGU9IiI7'@; put 'Zm9yKDtuPj0wOyllPVN0cmluZy5mcm9tQ2hhckNvZGUobiUyNis5NykrZSxuPU1hdGguZmxvb3Iobi8yNiktMTtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIER6ZShuLGUpe2xldCB0PWUobik7aWYodm9pZCAwIT09dClyZXR1cm4gTFF0LnRlc3QodCk/dDoodD10LnJlcGxhY2Uo'@; put 'LycvZywiJyciKSxgJyR7dH0nYCl9ZnVuY3Rpb24gTXEobixlKXt2YXIgdDtsZXQgcj1udWxsIT09KHQ9blszXSkmJnZvaWQgMCE9PXQ/dDpuWzJdO3JldHVybiByPyhyPXIucmVwbGFjZSgvJycvZywiJyIpLGUocikpOm51bGx9dmFyIG5hPWgoMzM2MTQpO2NvbnN0IEx6ZT0obixlKT0+KHt0'@; put 'eXBlOm4sbWVzc2FnZTplfSk7dmFyIEdoPWZ1bmN0aW9uKG4pe3JldHVybiBuLkxleGluZ0Vycm9yPSJMZXhpbmdFcnJvciIsbi5QYXJzZXJFcnJvcj0iUGFyc2luZ0Vycm9yIixuLlN0YXRpY09mZnNldEVycm9yPSJTdGF0aWNPZmZzZXRFcnJvciIsbi5TdGF0aWNPZmZzZXRPdXRPZlJhbmdl'@; put 'RXJyb3I9IlN0YXRpY09mZnNldE91dE9mUmFuZ2VFcnJvciIsbi5SYW5nZU9mZnNldE5vdEFsbG93ZWQ9IlJhbmdlT2Zmc2V0Tm90QWxsb3dlZCIsbi5JbnZhbGlkUmFuZ2VTaXplPSJJbnZhbGlkUmFuZ2VTaXplIixufShHaHx8e30pLHJuPWZ1bmN0aW9uKG4pe3JldHVybiBuLkVNUFRZPSJF'@; put 'TVBUWSIsbi5OVU1CRVI9Ik5VTUJFUiIsbi5TVFJJTkc9IlNUUklORyIsbi5NSU5VU19VTkFSWV9PUD0iTUlOVVNfVU5BUllfT1AiLG4uUExVU19VTkFSWV9PUD0iUExVU19VTkFSWV9PUCIsbi5QRVJDRU5UX09QPSJQRVJDRU5UX09QIixuLkNPTkNBVEVOQVRFX09QPSJDT05DQVRFTkFURV9P'@; put 'UCIsbi5FUVVBTFNfT1A9IkVRVUFMU19PUCIsbi5OT1RfRVFVQUxfT1A9Ik5PVF9FUVVBTF9PUCIsbi5HUkVBVEVSX1RIQU5fT1A9IkdSRUFURVJfVEhBTl9PUCIsbi5MRVNTX1RIQU5fT1A9IkxFU1NfVEhBTl9PUCIsbi5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfT1A9IkdSRUFURVJfVEhBTl9P'@; put 'Ul9FUVVBTF9PUCIsbi5MRVNTX1RIQU5fT1JfRVFVQUxfT1A9IkxFU1NfVEhBTl9PUl9FUVVBTF9PUCIsbi5QTFVTX09QPSJQTFVTX09QIixuLk1JTlVTX09QPSJNSU5VU19PUCIsbi5USU1FU19PUD0iVElNRVNfT1AiLG4uRElWX09QPSJESVZfT1AiLG4uUE9XRVJfT1A9IlBPV0VSX09QIixu'@; put 'LkZVTkNUSU9OX0NBTEw9IkZVTkNUSU9OX0NBTEwiLG4uTkFNRURfRVhQUkVTU0lPTj0iTkFNRURfRVhQUkVTU0lPTiIsbi5QQVJFTlRIRVNJUz0iUEFSRU5USEVTRVMiLG4uQ0VMTF9SRUZFUkVOQ0U9IkNFTExfUkVGRVJFTkNFIixuLkNFTExfUkFOR0U9IkNFTExfUkFOR0UiLG4uQ09MVU1O'@; put 'X1JBTkdFPSJDT0xVTU5fUkFOR0UiLG4uUk9XX1JBTkdFPSJST1dfUkFOR0UiLG4uRVJST1I9IkVSUk9SIixuLkVSUk9SX1dJVEhfUkFXX0lOUFVUPSJFUlJPUl9XSVRIX1JBV19JTlBVVCIsbi5BUlJBWT0iQVJSQVkiLG59KHJufHx7fSksRzQ9ZnVuY3Rpb24obil7cmV0dXJuIG5bbi5SRUxB'@; put 'VElWRT0wXT0iUkVMQVRJVkUiLG5bbi5TVEFSVF9BQlNPTFVURT0xXT0iU1RBUlRfQUJTT0xVVEUiLG5bbi5CT1RIX0FCU09MVVRFPTJdPSJCT1RIX0FCU09MVVRFIixufShHNHx8e30pO2NvbnN0IEZRdD1uPT4oe3R5cGU6cm4uRU1QVFksbGVhZGluZ1doaXRlc3BhY2U6bj8uaW1hZ2V9KSxP'@; put 'emU9KG4sZSk9Pih7dHlwZTpybi5DRUxMX1JFRkVSRU5DRSxyZWZlcmVuY2U6bixsZWFkaW5nV2hpdGVzcGFjZTplPy5pbWFnZX0pLE56ZT0obixlLHQscik9PihEZ2UobixlLHQpLHt0eXBlOnJuLkNFTExfUkFOR0Usc3RhcnQ6bixlbmQ6ZSxzaGVldFJlZmVyZW5jZVR5cGU6dCxsZWFkaW5n'@; put 'V2hpdGVzcGFjZTpyfSksRnplPShuLGUsdCk9Pih7dHlwZTpybi5BUlJBWSxhcmdzOm4sbGVhZGluZ1doaXRlc3BhY2U6ZT8uaW1hZ2UsaW50ZXJuYWxXaGl0ZXNwYWNlOnQ/LmltYWdlfSksSDY9KG4sZSk9Pih7dHlwZTpybi5FUlJPUixlcnJvcjpuLGxlYWRpbmdXaGl0ZXNwYWNlOmU/Lmlt'@; put 'YWdlfSksUXg9KG4sZSx0KT0+KHt0eXBlOnJuLkVSUk9SX1dJVEhfUkFXX0lOUFVULGVycm9yOmUscmF3SW5wdXQ6bixsZWFkaW5nV2hpdGVzcGFjZTp0Py5pbWFnZX0pLElnZT0oKT0+KHt0eXBlOnJuLkVSUk9SLGVycm9yOlB0LnBhcnNpbmdFcnJvcigpfSk7ZnVuY3Rpb24gRGdlKG4sZSx0'@; put 'KXtpZih2b2lkIDAhPT1uLnNoZWV0JiZ2b2lkIDA9PT1lLnNoZWV0fHx2b2lkIDA9PT1uLnNoZWV0JiZ2b2lkIDAhPT1lLnNoZWV0KXRocm93IG5ldyBFcnJvcigiU3RhcnQgYWRkcmVzcyBpbmNvbnNpc3RlbnQgd2l0aCBlbmQgYWRkcmVzcyIpO2lmKHZvaWQgMD09PW4uc2hlZXQmJnQhPT1H'@; put 'NC5SRUxBVElWRXx8dm9pZCAwIT09bi5zaGVldCYmdD09PUc0LlJFTEFUSVZFKXRocm93IG5ldyBFcnJvcigiU2hlZXQgYWRkcmVzcyBpbmNvbnNpc3RlbnQgd2l0aCBzaGVldCByZWZlcmVuY2UgdHlwZSIpfWZ1bmN0aW9uIGVjKG4sZSl7cmV0dXJuKGU/PyIiKStufWNvbnN0IFB6ZT17W3Ju'@; put 'LlBMVVNfT1BdOiIrIixbcm4uTUlOVVNfT1BdOiItIixbcm4uVElNRVNfT1BdOiIqIixbcm4uRElWX09QXToiLyIsW3JuLkNPTkNBVEVOQVRFX09QXToiJiIsW3JuLlBPV0VSX09QXToiXiIsW3JuLkVRVUFMU19PUF06Ij0iLFtybi5OT1RfRVFVQUxfT1BdOiI8PiIsW3JuLkdSRUFURVJfVEhB'@; put 'Tl9PUF06Ij4iLFtybi5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfT1BdOiI+PSIsW3JuLkxFU1NfVEhBTl9PUF06IjwiLFtybi5MRVNTX1RIQU5fT1JfRVFVQUxfT1BdOiI8PSJ9O2NsYXNzIGFKdHtjb25zdHJ1Y3RvcihlKXt0aGlzLmZ1bmN0aW9uUmVnaXN0cnk9ZSx0aGlzLmNhY2hlPW5ldyBN'@; put 'YXB9c2V0KGUsdCl7Y29uc3QgaT0oKG4sZSx0LHIpPT4oe2FzdDpuLHJlbGF0aXZlRGVwZW5kZW5jaWVzOmUsaGFzVm9sYXRpbGVGdW5jdGlvbjp0LGhhc1N0cnVjdHVyYWxDaGFuZ2VGdW5jdGlvbjpyfSkpKHQsa3EodCx0aGlzLmZ1bmN0aW9uUmVnaXN0cnkpLFpfKHQsdGhpcy5mdW5jdGlv'@; put 'blJlZ2lzdHJ5LmlzRnVuY3Rpb25Wb2xhdGlsZSksWl8odCx0aGlzLmZ1bmN0aW9uUmVnaXN0cnkuaXNGdW5jdGlvbkRlcGVuZGVudE9uU2hlZXRTdHJ1Y3R1cmVDaGFuZ2UpKTtyZXR1cm4gdGhpcy5jYWNoZS5zZXQoZSxpKSxpfWdldChlKXtyZXR1cm4gdGhpcy5jYWNoZS5nZXQoZSl9bWF5'@; put 'YmVTZXRBbmRUaGVuR2V0KGUsdCl7Y29uc3Qgcj10aGlzLmNhY2hlLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cj9yLmFzdDoodGhpcy5zZXQoZSx0KSx0KX19Y29uc3QgWl89KG4sZSk9Pntzd2l0Y2gobi50eXBlKXtjYXNlIHJuLkVNUFRZOmNhc2Ugcm4uTlVNQkVSOmNhc2Ugcm4uU1RSSU5H'@; put 'OmNhc2Ugcm4uRVJST1I6Y2FzZSBybi5FUlJPUl9XSVRIX1JBV19JTlBVVDpjYXNlIHJuLkNFTExfUkVGRVJFTkNFOmNhc2Ugcm4uQ0VMTF9SQU5HRTpjYXNlIHJuLkNPTFVNTl9SQU5HRTpjYXNlIHJuLlJPV19SQU5HRTpjYXNlIHJuLk5BTUVEX0VYUFJFU1NJT046cmV0dXJuITE7Y2FzZSBy'@; put 'bi5QRVJDRU5UX09QOmNhc2Ugcm4uUExVU19VTkFSWV9PUDpjYXNlIHJuLk1JTlVTX1VOQVJZX09QOnJldHVybiBaXyhuLnZhbHVlLGUpO2Nhc2Ugcm4uQ09OQ0FURU5BVEVfT1A6Y2FzZSBybi5FUVVBTFNfT1A6Y2FzZSBybi5OT1RfRVFVQUxfT1A6Y2FzZSBybi5MRVNTX1RIQU5fT1A6Y2Fz'@; put 'ZSBybi5HUkVBVEVSX1RIQU5fT1A6Y2FzZSBybi5MRVNTX1RIQU5fT1JfRVFVQUxfT1A6Y2FzZSBybi5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfT1A6Y2FzZSBybi5NSU5VU19PUDpjYXNlIHJuLlBMVVNfT1A6Y2FzZSBybi5USU1FU19PUDpjYXNlIHJuLkRJVl9PUDpjYXNlIHJuLlBPV0VSX09Q'@; put 'OnJldHVybiBaXyhuLmxlZnQsZSl8fFpfKG4ucmlnaHQsZSk7Y2FzZSBybi5QQVJFTlRIRVNJUzpyZXR1cm4gWl8obi5leHByZXNzaW9uLGUpO2Nhc2Ugcm4uRlVOQ1RJT05fQ0FMTDpyZXR1cm4hIWUobi5wcm9jZWR1cmVOYW1lKXx8bi5hcmdzLnNvbWUodD0+Wl8odCxlKSk7Y2FzZSBybi5B'@; put 'UlJBWTpyZXR1cm4gbi5hcmdzLnNvbWUodD0+dC5zb21lKHI9PlpfKHIsZSkpKX19O2xldCBkcj0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5EaXN0aW5jdFNpZ25zPSJEaXN0aW5jdCBzaWducy4iLG4uV3JvbmdBcmdOdW1iZXI9Ildyb25nIG51bWJlciBvZiBhcmd1bWVudHMuIixuLkVtcHR5'@; put 'QXJnPSJFbXB0eSBmdW5jdGlvbiBhcmd1bWVudC4iLG4uRW1wdHlBcnJheT0iRW1wdHkgYXJyYXkgbm90IGFsbG93ZWQuIixuLkFycmF5RGltZW5zaW9ucz0iQXJyYXkgZGltZW5zaW9ucyBhcmUgbm90IGNvbXBhdGlibGUuIixuLk5vU3BhY2VGb3JBcnJheVJlc3VsdD0iTm8gc3BhY2UgZm9y'@; put 'IGFycmF5IHJlc3VsdC4iLG4uVmFsdWVTbWFsbD0iVmFsdWUgdG9vIHNtYWxsLiIsbi5WYWx1ZUxhcmdlPSJWYWx1ZSB0b28gbGFyZ2UuIixuLkJhZENyaXRlcmlvbj0iSW5jb3JyZWN0IGNyaXRlcmlvbi4iLG4uUmFuZ2VNYW55U2hlZXRzPSJSYW5nZSBzcGFucyBtb3JlIHRoYW4gb25lIHNo'@; put 'ZWV0LiIsbi5DZWxsUmFuZ2VFeHBlY3RlZD0iQ2VsbCByYW5nZSBleHBlY3RlZC4iLG4uV3JvbmdEaW1lbnNpb249Ildyb25nIHJhbmdlIGRpbWVuc2lvbi4iLG4uU2NhbGFyRXhwZWN0ZWQ9IkNlbGwgcmFuZ2Ugbm90IGFsbG93ZWQuIixuLk51bWJlckNvZXJjaW9uPSJWYWx1ZSBjYW5ub3Qg'@; put 'YmUgY29lcmNlZCB0byBudW1iZXIuIixuLk51bWJlckV4cGVjdGVkPSJOdW1iZXIgYXJndW1lbnQgZXhwZWN0ZWQuIixuLkludGVnZXJFeHBlY3RlZD0iVmFsdWUgbmVlZHMgdG8gYmUgYW4gaW50ZWdlci4iLG4uQmFkTW9kZT0iTW9kZSBub3QgcmVjb2duaXplZC4iLG4uRGF0ZUJvdW5kcz0i'@; put 'RGF0ZSBvdXRzaWRlIG9mIGJvdW5kcy4iLG4uT3V0T2ZTaGVldD0iUmVzdWx0aW5nIHJlZmVyZW5jZSBpcyBvdXQgb2YgdGhlIHNoZWV0LiIsbi5Xcm9uZ1R5cGU9Ildyb25nIHR5cGUgb2YgYXJndW1lbnQuIixuLk5hTj0iTmFOIG9yIGluZmluaXRlIHZhbHVlIGVuY291bnRlcmVkLiIsbi5F'@; put 'cXVhbExlbmd0aD0iUmFuZ2VzIG5lZWQgdG8gYmUgb2YgZXF1YWwgbGVuZ3RoLiIsbi5OZWdhdGl2ZT0iVmFsdWUgY2Fubm90IGJlIG5lZ2F0aXZlLiIsbi5Ob3RCaW5hcnk9IlN0cmluZyBkb2VzIG5vdCByZXByZXNlbnQgYSBiaW5hcnkgbnVtYmVyLiIsbi5Ob3RPY3RhbD0iU3RyaW5nIGRv'@; put 'ZXMgbm90IHJlcHJlc2VudCBhbiBvY3RhbCBudW1iZXIuIixuLk5vdEhleD0iU3RyaW5nIGRvZXMgbm90IHJlcHJlc2VudCBhIGhleGFkZWNpbWFsIG51bWJlci4iLG4uRW5kU3RhcnRQZXJpb2Q9IkVuZCBwZXJpb2QgbmVlZHMgdG8gYmUgYXQgbGVhc3Qgc3RhcnQgcGVyaW9kLiIsbi5DZWxs'@; put 'UmVmRXhwZWN0ZWQ9IkNlbGwgcmVmZXJlbmNlIGV4cGVjdGVkLiIsbi5FbXB0eVJhbmdlPSJFbXB0eSByYW5nZSBub3QgYWxsb3dlZC4iLG4uQmFkUmVmPSJBZGRyZXNzIGlzIG5vdCBjb3JyZWN0LiIsbi5OdW1iZXJSYW5nZT0iTnVtYmVyLW9ubHkgcmFuZ2UgZXhwZWN0ZWQuIixuLlZhbHVl'@; put 'Tm90Rm91bmQ9IlZhbHVlIG5vdCBmb3VuZC4iLG4uVmFsdWVCYXNlTGFyZ2U9IlZhbHVlIGluIGJhc2UgdG9vIGxhcmdlLiIsbi5WYWx1ZUJhc2VTbWFsbD0iVmFsdWUgaW4gYmFzZSB0b28gc21hbGwuIixuLlZhbHVlQmFzZUxvbmc9IlZhbHVlIGluIGJhc2UgdG9vIGxvbmcuIixuLk5lZ2F0'@; put 'aXZlTGVuZ3RoPSJMZW5ndGggY2Fubm90IGJlIG5lZ2F0aXZlLiIsbi5QYXR0ZXJuTm90Rm91bmQ9IlBhdHRlcm4gbm90IGZvdW5kLiIsbi5PbmVWYWx1ZT0iTmVlZHMgYXQgbGVhc3Qgb25lIHZhbHVlLiIsbi5Ud29WYWx1ZXM9IlJhbmdlIG5lZWRzIHRvIGNvbnRhaW4gYXQgbGVhc3QgdHdv'@; put 'IGVsZW1lbnRzLiIsbi5UaHJlZVZhbHVlcz0iUmFuZ2UgbmVlZHMgdG8gY29udGFpbiBhdCBsZWFzdCB0aHJlZSBlbGVtZW50cy4iLG4uSW5kZXhCb3VuZHM9IkluZGV4IG91dCBvZiBib3VuZHMuIixuLkluZGV4TGFyZ2U9IkluZGV4IHRvbyBsYXJnZS4iLG4uRm9ybXVsYT0iRXhwZWN0ZWQg'@; put 'Zm9ybXVsYS4iLG4uTmVnYXRpdmVDb3VudD0iQ291bnQgY2Fubm90IGJlIG5lZ2F0aXZlLiIsbi5QYXJzZUVycm9yPSJQYXJzaW5nIGVycm9yLiIsbi5TaGVldFJlZj0iU2hlZXQgZG9lcyBub3QgZXhpc3QuIixuLlBlcmlvZExvbmc9IlBlcmlvZCBudW1iZXIgY2Fubm90IGV4Y2VlZCBsaWZl'@; put 'IGxlbmd0aC4iLG4uSW52YWxpZERhdGU9IkludmFsaWQgZGF0ZS4iLG4uQml0c2hpZnRMb25nPSJSZXN1bHQgb2YgYml0c2hpZnQgaXMgdG9vIGxvbmcuIixuLkVtcHR5U3RyaW5nPSJFbXB0eS1zdHJpbmcgYXJndW1lbnQgbm90IGFsbG93ZWQuIixuLkxlbmd0aEJvdW5kcz0iTGVuZ3RoIG91'@; put 'dCBvZiBib3VuZHMuIixuLk5lZ2F0aXZlVGltZT0iVGltZSBjYW5ub3QgYmUgbmVnYXRpdmUuIixuLk5vRGVmYXVsdD0iTm8gZGVmYXVsdCBvcHRpb24uIixuLk5vQ29uZGl0aW9uTWV0PSJOb25lIG9mIHRoZSBjb25kaXRpb25zIHdlcmUgbWV0LiIsbi5TZWxlY3Rvcj0iU2VsZWN0b3IgY2Fu'@; put 'bm90IGV4Y2VlZCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4iLG4uU3RhcnRFbmREYXRlPSJTdGFydCBkYXRlIG5lZWRzIHRvIGJlIGVhcmxpZXIgdGhhbiBlbmQgZGF0ZS4iLG4uSW5jb3JyZWN0RGF0ZVRpbWU9IlN0cmluZyBkb2VzIG5vdCByZXByZXNlbnQgY29ycmVjdCBEYXRlVGltZS4i'@; put 'LG4uQ2hhcmFjdGVyQ29kZUJvdW5kcz0iQ2hhcmFjdGVyIGNvZGUgb3V0IG9mIGJvdW5kcy4iLG4uTm9uWmVybz0iQXJndW1lbnQgY2Fubm90IGJlIDAuIixuLkxlc3NUaGFuT25lPSJBcmd1bWVudCBjYW5ub3QgYmUgbGVzcyB0aGFuIDEuIixuLldlZWtlbmRTdHJpbmc9IkluY29ycmVjdCB3'@; put 'ZWVrZW5kIGJpdG1hc2sgc3RyaW5nLiIsbi5JbnZhbGlkUm9tYW49IkludmFsaWQgcm9tYW4gbnVtZXJhbC4iLG4uV3JvbmdPcmRlcj0iV3Jvbmcgb3JkZXIgb2YgdmFsdWVzLiIsbi5Db21wbGV4TnVtYmVyRXhwZWN0ZWQ9IkNvbXBsZXggbnVtYmVyIGV4cGVjdGVkLiIsbi5TaG91bGRCZUlv'@; put 'cko9IlNob3VsZCBiZSAnaScgb3IgJ2onLiIsbi5TaXplTWlzbWF0Y2g9IkFycmF5IGRpbWVuc2lvbnMgbWlzbWF0Y2hlZC4iLG4uRnVuY3Rpb25OYW1lPWU9PmBGdW5jdGlvbiBuYW1lICR7ZX0gbm90IHJlY29nbml6ZWQuYCxuLk5hbWVkRXhwcmVzc2lvbk5hbWU9ZT0+YE5hbWVkIGV4cHJl'@; put 'c3Npb24gJHtlfSBub3QgcmVjb2duaXplZC5gLG4uTGljZW5zZUtleT1lPT5gTGljZW5zZSBrZXkgaXMgJHtlfS5gLG59KSgpO2NvbnN0IHRQPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiQWRkaXRpb25PcCIscGF0dGVybjpuYS5MZXhlci5OQX0pLExnZT0oMCxuYS5jcmVhdGVUb2tlbiko'@; put 'e25hbWU6IlBsdXNPcCIscGF0dGVybjovXCsvLGNhdGVnb3JpZXM6dFB9KSxPZ2U9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJNaW51c09wIixwYXR0ZXJuOi8tLyxjYXRlZ29yaWVzOnRQfSksVHE9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJNdWx0aXBsaWNhdGlvbk9wIixwYXR0ZXJu'@; put 'Om5hLkxleGVyLk5BfSksSHplPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiVGltZXNPcCIscGF0dGVybjovXCovLGNhdGVnb3JpZXM6VHF9KSxWemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJEaXZPcCIscGF0dGVybjovXC8vLGNhdGVnb3JpZXM6VHF9KSxOZ2U9KDAsbmEuY3JlYXRl'@; put 'VG9rZW4pKHtuYW1lOiJQb3dlck9wIixwYXR0ZXJuOi9cXi99KSxCemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJQZXJjZW50T3AiLHBhdHRlcm46LyUvfSksR189KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJCb29sZWFuT3AiLHBhdHRlcm46bmEuTGV4ZXIuTkF9KSxGZ2U9KDAsbmEu'@; put 'Y3JlYXRlVG9rZW4pKHtuYW1lOiJFcXVhbHNPcCIscGF0dGVybjovPS8sY2F0ZWdvcmllczpHX30pLGp6ZT0oMCxuYS5jcmVhdGVUb2tlbikoe25hbWU6Ik5vdEVxdWFsT3AiLHBhdHRlcm46Lzw+LyxjYXRlZ29yaWVzOkdffSksVXplPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiR3JlYXRl'@; put 'clRoYW5PcCIscGF0dGVybjovPi8sY2F0ZWdvcmllczpHX30pLHp6ZT0oMCxuYS5jcmVhdGVUb2tlbikoe25hbWU6Ikxlc3NUaGFuT3AiLHBhdHRlcm46LzwvLGNhdGVnb3JpZXM6R199KSxXemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJHcmVhdGVyVGhhbk9yRXF1YWxPcCIscGF0dGVy'@; put 'bjovPj0vLGNhdGVnb3JpZXM6R199KSxZemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJMZXNzVGhhbk9yRXF1YWxPcCIscGF0dGVybjovPD0vLGNhdGVnb3JpZXM6R199KSxaemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJDb25jYXRlbmF0ZU9wIixwYXR0ZXJuOi8mL30pLFBnZT0o'@; put 'MCxuYS5jcmVhdGVUb2tlbikoe25hbWU6IkxQYXJlbiIscGF0dGVybjovXCgvfSkseHE9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJSUGFyZW4iLHBhdHRlcm46L1wpL30pLEd6ZT0oMCxuYS5jcmVhdGVUb2tlbikoe25hbWU6IkFycmF5TFBhcmVuIixwYXR0ZXJuOi97L30pLCR6ZT0oMCxu'@; put 'YS5jcmVhdGVUb2tlbikoe25hbWU6IkFycmF5UlBhcmVuIixwYXR0ZXJuOi99L30pLHF6ZT0oMCxuYS5jcmVhdGVUb2tlbikoe25hbWU6IlN0cmluZ0xpdGVyYWwiLHBhdHRlcm46LyIoW14iXFxdKihcXC5bXiJcXF0qKSopIi99KSxLemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJFcnJv'@; put 'ckxpdGVyYWwiLHBhdHRlcm46LyNbQS1aYS16MC05XC9dK1s/IV0/L30pLG5QPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiUmFuZ2VTZXBhcmF0b3IiLHBhdHRlcm46bmV3IFJlZ0V4cCgiOiIpfSksSGdlPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiQ29sdW1uUmFuZ2UiLHBhdHRlcm46'@; put 'bmV3IFJlZ0V4cChgJHtUemV9OiR7VHplfWApfSksVmdlPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiUm93UmFuZ2UiLHBhdHRlcm46bmV3IFJlZ0V4cChgJHt4emV9OiR7eHplfWApfSksQmdlPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiUHJvY2VkdXJlTmFtZSIscGF0dGVybjpuZXcg'@; put 'UmVnRXhwKGAoWyR7YnF9XVske0FnZX1dKilcXChgKX0pLGpnZT1uZXcgY2xhc3Mgc0p0e2NvbnN0cnVjdG9yKCl7dGhpcy5QT1NTSUJMRV9TVEFSVF9DSEFSQUNURVJTPVsuLi5SemUsLi4uUlF0LHMzLCInIiwiXyJdLHRoaXMuY2VsbFJlZmVyZW5jZVJlZ2V4cD1uZXcgUmVnRXhwKGtRdCwi'@; put 'eSIpfW1hdGNoKGUsdCl7dGhpcy5jZWxsUmVmZXJlbmNlUmVnZXhwLmxhc3RJbmRleD10O2NvbnN0IHI9dGhpcy5jZWxsUmVmZXJlbmNlUmVnZXhwLmV4ZWMoZSsiQCIpO3JldHVybiBudWxsPT1yfHxudWxsPT1yWzFdP251bGw6KHJbMF09clsxXSxyKX19LCRfPSgwLG5hLmNyZWF0ZVRva2Vu'@; put 'KSh7bmFtZToiQ2VsbFJlZmVyZW5jZSIscGF0dGVybjpqZ2UubWF0Y2guYmluZChqZ2UpLHN0YXJ0X2NoYXJzX2hpbnQ6amdlLlBPU1NJQkxFX1NUQVJUX0NIQVJBQ1RFUlMsbGluZV9icmVha3M6ITF9KSxVZ2U9bmV3IGNsYXNzIGxKdHtjb25zdHJ1Y3Rvcigpe3RoaXMuUE9TU0lCTEVfU1RB'@; put 'UlRfQ0hBUkFDVEVSUz1bLi4uUnplLCJfIl0sdGhpcy5uYW1lZEV4cHJlc3Npb25SZWdleHA9bmV3IFJlZ0V4cChremUsInkiKSx0aGlzLnIxYzFDZWxsUmVmUmVnZXhwPW5ldyBSZWdFeHAoYF4ke0F6ZX0kYCl9bWF0Y2goZSx0KXt0aGlzLm5hbWVkRXhwcmVzc2lvblJlZ2V4cC5sYXN0SW5k'@; put 'ZXg9dDtjb25zdCByPXRoaXMubmFtZWRFeHByZXNzaW9uUmVnZXhwLmV4ZWMoZSk7cmV0dXJuIG51bGw9PXJ8fG51bGw9PXJbMF18fHRoaXMucjFjMUNlbGxSZWZSZWdleHAudGVzdChyWzBdKT9udWxsOnJ9fSxYemU9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJOYW1lZEV4cHJlc3Npb24i'@; put 'LHBhdHRlcm46VWdlLm1hdGNoLmJpbmQoVWdlKSxzdGFydF9jaGFyc19oaW50OlVnZS5QT1NTSUJMRV9TVEFSVF9DSEFSQUNURVJTLGxpbmVfYnJlYWtzOiExfSksemdlPW49Pntjb25zdCBlPW4udHJhbnNsYXRpb25QYWNrYWdlLmdldEZ1bmN0aW9uVHJhbnNsYXRpb24oIk9GRlNFVCIpLHQ9'@; put 'bi5lcnJvck1hcHBpbmcscj1uLnRyYW5zbGF0aW9uUGFja2FnZS5idWlsZEZ1bmN0aW9uTWFwcGluZygpLGk9bmV3IFJlZ0V4cCgic3RhbmRhcmQiPT09bi5pZ25vcmVXaGl0ZVNwYWNlPyJbIFxcdFxcblxccl0rIjoiXFxzKyIpLG89KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJXaGl0ZVNw'@; put 'YWNlIixwYXR0ZXJuOml9KSxhPSgwLG5hLmNyZWF0ZVRva2VuKSh7bmFtZToiQXJyYXlSb3dTZXAiLHBhdHRlcm46bi5hcnJheVJvd1NlcGFyYXRvcn0pLGw9KDAsbmEuY3JlYXRlVG9rZW4pKHtuYW1lOiJBcnJheUNvbFNlcCIscGF0dGVybjpuLmFycmF5Q29sdW1uU2VwYXJhdG9yfSksdT0o'@; put 'MCxuYS5jcmVhdGVUb2tlbikoe25hbWU6Ik51bWJlckxpdGVyYWwiLHBhdHRlcm46bmV3IFJlZ0V4cChgKChbJHtuLmRlY2ltYWxTZXBhcmF0b3J9XVxcZCspfChcXGQrKFske24uZGVjaW1hbFNlcGFyYXRvcn1dXFxkKik/KSkoZVsrLV0/XFxkKyk/YCl9KSxnPSgwLG5hLmNyZWF0ZVRva2Vu'@; put 'KSh7bmFtZToiT2Zmc2V0UHJvY2VkdXJlTmFtZSIscGF0dGVybjpuZXcgUmVnRXhwKGUsImkiKX0pO2xldCBFLE87cmV0dXJuIG4uZnVuY3Rpb25BcmdTZXBhcmF0b3I9PT1uLmFycmF5Q29sdW1uU2VwYXJhdG9yPyhFPWwsTz1bXSk6bi5mdW5jdGlvbkFyZ1NlcGFyYXRvcj09PW4uYXJyYXlS'@; put 'b3dTZXBhcmF0b3I/KEU9YSxPPVtdKTooRT0oMCxuYS5jcmVhdGVUb2tlbikoe25hbWU6IkFyZ1NlcGFyYXRvciIscGF0dGVybjpuLmZ1bmN0aW9uQXJnU2VwYXJhdG9yfSksTz1bRV0pLHtBcmdTZXBhcmF0b3I6RSxOdW1iZXJMaXRlcmFsOnUsT2Zmc2V0UHJvY2VkdXJlTmFtZTpnLEFycmF5'@; put 'Um93U2VwYXJhdG9yOmEsQXJyYXlDb2xTZXBhcmF0b3I6bCxXaGl0ZVNwYWNlOm8sYWxsVG9rZW5zOltvLExnZSxPZ2UsSHplLFZ6ZSxOZ2UsRmdlLGp6ZSxCemUsV3plLFl6ZSxVemUsenplLFBnZSx4cSxHemUsJHplLGcsQmdlLG5QLC4uLk8sSGdlLFZnZSx1LHF6ZSxLemUsWnplLEdfLHRQ'@; put 'LFRxLCRfLFh6ZSxhLGxdLGVycm9yTWFwcGluZzp0LGZ1bmN0aW9uTWFwcGluZzpyLGRlY2ltYWxTZXBhcmF0b3I6bi5kZWNpbWFsU2VwYXJhdG9yLG1heENvbHVtbnM6bi5tYXhDb2x1bW5zLG1heFJvd3M6bi5tYXhSb3dzfX07Y2xhc3MgSnggZXh0ZW5kcyBuYS5FbWJlZGRlZEFjdGlvbnNQ'@; put 'YXJzZXJ7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLmFsbFRva2Vucyx7b3V0cHV0Q3N0OiExLG1heExvb2thaGVhZDo3fSksdGhpcy5ib29sZWFuRXhwcmVzc2lvbk9yRW1wdHk9dGhpcy5SVUxFKCJib29sZWFuRXhwcmVzc2lvbk9yRW1wdHkiLCgpPT50aGlzLk9SKFt7QUxUOigpPT50aGlz'@; put 'LlNVQlJVTEUodGhpcy5ib29sZWFuRXhwcmVzc2lvbil9LHtBTFQ6KDAsbmEuRU1QVFlfQUxUKShGUXQoKSl9XSkpLHRoaXMucHJvY2VkdXJlRXhwcmVzc2lvbj10aGlzLlJVTEUoInByb2NlZHVyZUV4cHJlc3Npb24iLCgpPT57dmFyIHI7Y29uc3QgaT10aGlzLkNPTlNVTUUoQmdlKSxvPWku'@; put 'aW1hZ2UudG9VcHBlckNhc2UoKS5zbGljZSgwLC0xKSxhPW51bGwhPT0ocj10aGlzLmxleGVyQ29uZmlnLmZ1bmN0aW9uTWFwcGluZ1tvXSkmJnZvaWQgMCE9PXI/cjpvLGw9W107bGV0IHU9dGhpcy5TVUJSVUxFKHRoaXMuYm9vbGVhbkV4cHJlc3Npb25PckVtcHR5KTt0aGlzLk1BTlkoKCk9'@; put 'Pnt2YXIgRTtjb25zdCBPPXRoaXMuQ09OU1VNRSh0aGlzLmxleGVyQ29uZmlnLkFyZ1NlcGFyYXRvcik7dS50eXBlPT09cm4uRU1QVFkmJih1LmxlYWRpbmdXaGl0ZXNwYWNlPW51bGw9PT0oRT1PLmxlYWRpbmdXaGl0ZXNwYWNlKXx8dm9pZCAwPT09RT92b2lkIDA6RS5pbWFnZSksbC5wdXNo'@; put 'KHUpLHU9dGhpcy5TVUJSVUxFMih0aGlzLmJvb2xlYW5FeHByZXNzaW9uT3JFbXB0eSl9KSxsLnB1c2godSksMT09PWwubGVuZ3RoJiZsWzBdLnR5cGU9PT1ybi5FTVBUWSYmKGwubGVuZ3RoPTApO2NvbnN0IGc9dGhpcy5DT05TVU1FKHhxKTtyZXR1cm4oKG4sZSx0LHIpPT4oe3R5cGU6cm4u'@; put 'RlVOQ1RJT05fQ0FMTCxwcm9jZWR1cmVOYW1lOm4sYXJnczplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlLGludGVybmFsV2hpdGVzcGFjZTpyPy5pbWFnZSxoeXBlcmxpbms6dm9pZCAwfSkpKGEsbCxpLmxlYWRpbmdXaGl0ZXNwYWNlLGcubGVhZGluZ1doaXRlc3BhY2UpfSksdGhpcy5u'@; put 'YW1lZEV4cHJlc3Npb25FeHByZXNzaW9uPXRoaXMuUlVMRSgibmFtZWRFeHByZXNzaW9uRXhwcmVzc2lvbiIsKCk9Pntjb25zdCByPXRoaXMuQ09OU1VNRShYemUpO3JldHVybigobixlKT0+KHt0eXBlOnJuLk5BTUVEX0VYUFJFU1NJT04sZXhwcmVzc2lvbk5hbWU6bixsZWFkaW5nV2hpdGVz'@; put 'cGFjZTplPy5pbWFnZX0pKShyLmltYWdlLHIubGVhZGluZ1doaXRlc3BhY2UpfSksdGhpcy5vZmZzZXRQcm9jZWR1cmVFeHByZXNzaW9uPXRoaXMuUlVMRSgib2Zmc2V0UHJvY2VkdXJlRXhwcmVzc2lvbiIsKCk9Pntjb25zdCByPVtdO3JldHVybiB0aGlzLkNPTlNVTUUodGhpcy5sZXhlckNv'@; put 'bmZpZy5PZmZzZXRQcm9jZWR1cmVOYW1lKSx0aGlzLkNPTlNVTUUoUGdlKSx0aGlzLk1BTllfU0VQKHtTRVA6dGhpcy5sZXhlckNvbmZpZy5BcmdTZXBhcmF0b3IsREVGOigpPT57ci5wdXNoKHRoaXMuU1VCUlVMRSh0aGlzLmJvb2xlYW5FeHByZXNzaW9uKSl9fSksdGhpcy5DT05TVU1FKHhx'@; put 'KSx0aGlzLmhhbmRsZU9mZnNldEhldXJpc3RpYyhyKX0pLHRoaXMuY29sdW1uUmFuZ2VFeHByZXNzaW9uPXRoaXMuUlVMRSgiY29sdW1uUmFuZ2VFeHByZXNzaW9uIiwoKT0+e2NvbnN0IHI9dGhpcy5DT05TVU1FKEhnZSksW2ksb109ci5pbWFnZS5zcGxpdCgiOiIpLGE9dGhpcy5BQ1RJT04o'@; put 'KCk9PndxKHRoaXMuc2hlZXRNYXBwaW5nLGksdGhpcy5mb3JtdWxhQWRkcmVzcykpLGw9dGhpcy5BQ1RJT04oKCk9PndxKHRoaXMuc2hlZXRNYXBwaW5nLG8sdGhpcy5mb3JtdWxhQWRkcmVzcykpO2lmKHZvaWQgMD09PWF8fHZvaWQgMD09PWwpcmV0dXJuIEg2KG5ldyBQdCh0bi5SRUYpKTtp'@; put 'ZihhLmV4Y2VlZHNTaGVldFNpemVMaW1pdHModGhpcy5sZXhlckNvbmZpZy5tYXhDb2x1bW5zKXx8bC5leGNlZWRzU2hlZXRTaXplTGltaXRzKHRoaXMubGV4ZXJDb25maWcubWF4Q29sdW1ucykpcmV0dXJuIFF4KHIuaW1hZ2UsbmV3IFB0KHRuLk5BTUUpLHIubGVhZGluZ1doaXRlc3BhY2Up'@; put 'O2lmKHZvaWQgMD09PWEuc2hlZXQmJnZvaWQgMCE9PWwuc2hlZXQpcmV0dXJuIHRoaXMucGFyc2luZ0Vycm9yKEdoLlBhcnNlckVycm9yLCJNYWxmb3JtZWQgcmFuZ2UgZXhwcmVzc2lvbiIpO2NvbnN0e2ZpcnN0RW5kOnUsc2Vjb25kRW5kOmcsc2hlZXRSZWZUeXBlOkV9PUp4LmZpeFNoZWV0'@; put 'SWRzRm9yUmFuZ2VFbmRzKGEsbCk7cmV0dXJuKChuLGUsdCxyKT0+KERnZShuLGUsdCkse3R5cGU6cm4uQ09MVU1OX1JBTkdFLHN0YXJ0Om4sZW5kOmUsc2hlZXRSZWZlcmVuY2VUeXBlOnQsbGVhZGluZ1doaXRlc3BhY2U6cj8uaW1hZ2V9KSkodSxnLEUsci5sZWFkaW5nV2hpdGVzcGFjZSl9'@; put 'KSx0aGlzLnJvd1JhbmdlRXhwcmVzc2lvbj10aGlzLlJVTEUoInJvd1JhbmdlRXhwcmVzc2lvbiIsKCk9Pntjb25zdCByPXRoaXMuQ09OU1VNRShWZ2UpLFtpLG9dPXIuaW1hZ2Uuc3BsaXQoIjoiKSxhPXRoaXMuQUNUSU9OKCgpPT5DcSh0aGlzLnNoZWV0TWFwcGluZyxpLHRoaXMuZm9ybXVs'@; put 'YUFkZHJlc3MpKSxsPXRoaXMuQUNUSU9OKCgpPT5DcSh0aGlzLnNoZWV0TWFwcGluZyxvLHRoaXMuZm9ybXVsYUFkZHJlc3MpKTtpZih2b2lkIDA9PT1hfHx2b2lkIDA9PT1sKXJldHVybiBINihuZXcgUHQodG4uUkVGKSk7aWYoYS5leGNlZWRzU2hlZXRTaXplTGltaXRzKHRoaXMubGV4ZXJD'@; put 'b25maWcubWF4Um93cyl8fGwuZXhjZWVkc1NoZWV0U2l6ZUxpbWl0cyh0aGlzLmxleGVyQ29uZmlnLm1heFJvd3MpKXJldHVybiBReChyLmltYWdlLG5ldyBQdCh0bi5OQU1FKSxyLmxlYWRpbmdXaGl0ZXNwYWNlKTtpZih2b2lkIDA9PT1hLnNoZWV0JiZ2b2lkIDAhPT1sLnNoZWV0KXJldHVy'@; put 'biB0aGlzLnBhcnNpbmdFcnJvcihHaC5QYXJzZXJFcnJvciwiTWFsZm9ybWVkIHJhbmdlIGV4cHJlc3Npb24iKTtjb25zdHtmaXJzdEVuZDp1LHNlY29uZEVuZDpnLHNoZWV0UmVmVHlwZTpFfT1KeC5maXhTaGVldElkc0ZvclJhbmdlRW5kcyhhLGwpO3JldHVybigobixlLHQscik9PihEZ2Uo'@; put 'bixlLHQpLHt0eXBlOnJuLlJPV19SQU5HRSxzdGFydDpuLGVuZDplLHNoZWV0UmVmZXJlbmNlVHlwZTp0LGxlYWRpbmdXaGl0ZXNwYWNlOnI/LmltYWdlfSkpKHUsZyxFLHIubGVhZGluZ1doaXRlc3BhY2UpfSksdGhpcy5jZWxsUmVmZXJlbmNlPXRoaXMuUlVMRSgiY2VsbFJlZmVyZW5jZSIs'@; put 'KCk9Pntjb25zdCByPXRoaXMuQ09OU1VNRSgkXyksaT10aGlzLkFDVElPTigoKT0+WHgodGhpcy5zaGVldE1hcHBpbmcsci5pbWFnZSx0aGlzLmZvcm11bGFBZGRyZXNzKSk7cmV0dXJuIHZvaWQgMD09PWk/UXgoci5pbWFnZSxuZXcgUHQodG4uUkVGKSxyLmxlYWRpbmdXaGl0ZXNwYWNlKTpp'@; put 'LmV4Y2VlZHNTaGVldFNpemVMaW1pdHModGhpcy5sZXhlckNvbmZpZy5tYXhDb2x1bW5zLHRoaXMubGV4ZXJDb25maWcubWF4Um93cyk/UXgoci5pbWFnZSxuZXcgUHQodG4uTkFNRSksci5sZWFkaW5nV2hpdGVzcGFjZSk6T3plKGksci5sZWFkaW5nV2hpdGVzcGFjZSl9KSx0aGlzLmVuZFJh'@; put 'bmdlUmVmZXJlbmNlPXRoaXMuUlVMRSgiZW5kUmFuZ2VSZWZlcmVuY2UiLHI9Pnt2YXIgaTtjb25zdCBvPXRoaXMuQ09OU1VNRSgkXyksYT10aGlzLkFDVElPTigoKT0+WHgodGhpcy5zaGVldE1hcHBpbmcsci5pbWFnZSx0aGlzLmZvcm11bGFBZGRyZXNzKSksbD10aGlzLkFDVElPTigoKT0+'@; put 'WHgodGhpcy5zaGVldE1hcHBpbmcsby5pbWFnZSx0aGlzLmZvcm11bGFBZGRyZXNzKSk7cmV0dXJuIHZvaWQgMD09PWF8fHZvaWQgMD09PWw/dGhpcy5BQ1RJT04oKCk9PlF4KGAke3IuaW1hZ2V9OiR7by5pbWFnZX1gLG5ldyBQdCh0bi5SRUYpLHIubGVhZGluZ1doaXRlc3BhY2UpKTphLmV4'@; put 'Y2VlZHNTaGVldFNpemVMaW1pdHModGhpcy5sZXhlckNvbmZpZy5tYXhDb2x1bW5zLHRoaXMubGV4ZXJDb25maWcubWF4Um93cyl8fGwuZXhjZWVkc1NoZWV0U2l6ZUxpbWl0cyh0aGlzLmxleGVyQ29uZmlnLm1heENvbHVtbnMsdGhpcy5sZXhlckNvbmZpZy5tYXhSb3dzKT90aGlzLkFDVElP'@; put 'TigoKT0+UXgoYCR7ci5pbWFnZX06JHtvLmltYWdlfWAsbmV3IFB0KHRuLk5BTUUpLHIubGVhZGluZ1doaXRlc3BhY2UpKTp0aGlzLmJ1aWxkQ2VsbFJhbmdlKGEsbCxudWxsPT09KGk9ci5sZWFkaW5nV2hpdGVzcGFjZSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaW1hZ2UpfSksdGhpcy5lbmRP'@; put 'ZlJhbmdlRXhwcmVzc2lvbj10aGlzLlJVTEUoImVuZE9mUmFuZ2VFeHByZXNzaW9uIixyPT50aGlzLk9SKFt7QUxUOigpPT50aGlzLlNVQlJVTEUodGhpcy5lbmRSYW5nZVJlZmVyZW5jZSx7QVJHUzpbcl19KX0se0FMVDooKT0+e3ZhciBpO2NvbnN0IG89dGhpcy5TVUJSVUxFKHRoaXMub2Zm'@; put 'c2V0UHJvY2VkdXJlRXhwcmVzc2lvbiksYT10aGlzLkFDVElPTigoKT0+WHgodGhpcy5zaGVldE1hcHBpbmcsci5pbWFnZSx0aGlzLmZvcm11bGFBZGRyZXNzKSk7cmV0dXJuIHZvaWQgMD09PWE/SDYobmV3IFB0KHRuLlJFRikpOm8udHlwZT09PXJuLkNFTExfUkVGRVJFTkNFP3RoaXMuYnVp'@; put 'bGRDZWxsUmFuZ2UoYSxvLnJlZmVyZW5jZSxudWxsPT09KGk9ci5sZWFkaW5nV2hpdGVzcGFjZSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaW1hZ2UpOnRoaXMucGFyc2luZ0Vycm9yKEdoLlJhbmdlT2Zmc2V0Tm90QWxsb3dlZCwiUmFuZ2Ugb2Zmc2V0IG5vdCBhbGxvd2VkIGhlcmUiKX19XSkp'@; put 'LHRoaXMuY2VsbFJhbmdlRXhwcmVzc2lvbj10aGlzLlJVTEUoImNlbGxSYW5nZUV4cHJlc3Npb24iLCgpPT57Y29uc3Qgcj10aGlzLkNPTlNVTUUoJF8pO3JldHVybiB0aGlzLkNPTlNVTUUyKG5QKSx0aGlzLlNVQlJVTEUodGhpcy5lbmRPZlJhbmdlRXhwcmVzc2lvbix7QVJHUzpbcl19KX0p'@; put 'LHRoaXMuZW5kUmFuZ2VXaXRoT2Zmc2V0U3RhcnRSZWZlcmVuY2U9dGhpcy5SVUxFKCJlbmRSYW5nZVdpdGhPZmZzZXRTdGFydFJlZmVyZW5jZSIscj0+e2NvbnN0IGk9dGhpcy5DT05TVU1FKCRfKSxvPXRoaXMuQUNUSU9OKCgpPT5YeCh0aGlzLnNoZWV0TWFwcGluZyxpLmltYWdlLHRoaXMu'@; put 'Zm9ybXVsYUFkZHJlc3MpKTtyZXR1cm4gdm9pZCAwPT09bz90aGlzLkFDVElPTigoKT0+SDYobmV3IFB0KHRuLlJFRikpKTp0aGlzLmJ1aWxkQ2VsbFJhbmdlKHIucmVmZXJlbmNlLG8sci5sZWFkaW5nV2hpdGVzcGFjZSl9KSx0aGlzLmVuZE9mUmFuZ2VXaXRoT2Zmc2V0U3RhcnRFeHByZXNz'@; put 'aW9uPXRoaXMuUlVMRSgiZW5kT2ZSYW5nZVdpdGhPZmZzZXRTdGFydEV4cHJlc3Npb24iLHI9PnRoaXMuT1IoW3tBTFQ6KCk9PnRoaXMuU1VCUlVMRSh0aGlzLmVuZFJhbmdlV2l0aE9mZnNldFN0YXJ0UmVmZXJlbmNlLHtBUkdTOltyXX0pfSx7QUxUOigpPT57Y29uc3QgaT10aGlzLlNVQlJV'@; put 'TEUodGhpcy5vZmZzZXRQcm9jZWR1cmVFeHByZXNzaW9uKTtyZXR1cm4gaS50eXBlPT09cm4uQ0VMTF9SRUZFUkVOQ0U/dGhpcy5idWlsZENlbGxSYW5nZShyLnJlZmVyZW5jZSxpLnJlZmVyZW5jZSxyLmxlYWRpbmdXaGl0ZXNwYWNlKTp0aGlzLnBhcnNpbmdFcnJvcihHaC5SYW5nZU9mZnNl'@; put 'dE5vdEFsbG93ZWQsIlJhbmdlIG9mZnNldCBub3QgYWxsb3dlZCBoZXJlIil9fV0pKSx0aGlzLm9mZnNldEV4cHJlc3Npb249dGhpcy5SVUxFKCJvZmZzZXRFeHByZXNzaW9uIiwoKT0+e2NvbnN0IHI9dGhpcy5TVUJSVUxFKHRoaXMub2Zmc2V0UHJvY2VkdXJlRXhwcmVzc2lvbik7bGV0IGk7'@; put 'cmV0dXJuIHRoaXMuT1BUSU9OKCgpPT57dGhpcy5DT05TVU1FKG5QKSxpPXIudHlwZT09PXJuLkNFTExfUkFOR0U/dGhpcy5wYXJzaW5nRXJyb3IoR2guUmFuZ2VPZmZzZXROb3RBbGxvd2VkLCJSYW5nZSBvZmZzZXQgbm90IGFsbG93ZWQgaGVyZSIpOnRoaXMuU1VCUlVMRSh0aGlzLmVuZE9m'@; put 'UmFuZ2VXaXRoT2Zmc2V0U3RhcnRFeHByZXNzaW9uLHtBUkdTOltyXX0pfSksdm9pZCAwIT09aT9pOnJ9KSx0aGlzLmluc2lkZUFycmF5RXhwcmVzc2lvbj10aGlzLlJVTEUoImluc2lkZUFycmF5RXhwcmVzc2lvbiIsKCk9Pntjb25zdCByPVtbXV07cmV0dXJuIHJbci5sZW5ndGgtMV0ucHVz'@; put 'aCh0aGlzLlNVQlJVTEUodGhpcy5ib29sZWFuRXhwcmVzc2lvbikpLHRoaXMuTUFOWSgoKT0+e3RoaXMuT1IoW3tBTFQ6KCk9Pnt0aGlzLkNPTlNVTUUodGhpcy5sZXhlckNvbmZpZy5BcnJheUNvbFNlcGFyYXRvcikscltyLmxlbmd0aC0xXS5wdXNoKHRoaXMuU1VCUlVMRTIodGhpcy5ib29s'@; put 'ZWFuRXhwcmVzc2lvbikpfX0se0FMVDooKT0+e3RoaXMuQ09OU1VNRSh0aGlzLmxleGVyQ29uZmlnLkFycmF5Um93U2VwYXJhdG9yKSxyLnB1c2goW10pLHJbci5sZW5ndGgtMV0ucHVzaCh0aGlzLlNVQlJVTEUzKHRoaXMuYm9vbGVhbkV4cHJlc3Npb24pKX19XSl9KSxGemUocil9KSx0aGlz'@; put 'LnBhcmVudGhlc2lzRXhwcmVzc2lvbj10aGlzLlJVTEUoInBhcmVudGhlc2lzRXhwcmVzc2lvbiIsKCk9Pntjb25zdCByPXRoaXMuQ09OU1VNRShQZ2UpLGk9dGhpcy5TVUJSVUxFKHRoaXMuYm9vbGVhbkV4cHJlc3Npb24pLG89dGhpcy5DT05TVU1FKHhxKTtyZXR1cm4oKG4sZSx0KT0+KHt0'@; put 'eXBlOnJuLlBBUkVOVEhFU0lTLGV4cHJlc3Npb246bixsZWFkaW5nV2hpdGVzcGFjZTplPy5pbWFnZSxpbnRlcm5hbFdoaXRlc3BhY2U6dD8uaW1hZ2V9KSkoaSxyLmxlYWRpbmdXaGl0ZXNwYWNlLG8ubGVhZGluZ1doaXRlc3BhY2UpfSksdGhpcy5hcnJheUV4cHJlc3Npb249dGhpcy5SVUxF'@; put 'KCJhcnJheUV4cHJlc3Npb24iLCgpPT50aGlzLk9SKFt7QUxUOigpPT57Y29uc3Qgcj10aGlzLkNPTlNVTUUoR3plKSxpPXRoaXMuU1VCUlVMRSh0aGlzLmluc2lkZUFycmF5RXhwcmVzc2lvbiksbz10aGlzLkNPTlNVTUUoJHplKTtyZXR1cm4gRnplKGkuYXJncyxyLmxlYWRpbmdXaGl0ZXNw'@; put 'YWNlLG8ubGVhZGluZ1doaXRlc3BhY2UpfX0se0FMVDooKT0+dGhpcy5TVUJSVUxFKHRoaXMucGFyZW50aGVzaXNFeHByZXNzaW9uKX1dKSksdGhpcy5udW1lcmljU3RyaW5nVG9OdW1iZXI9cj0+e2NvbnN0IGk9ci5yZXBsYWNlKHRoaXMubGV4ZXJDb25maWcuZGVjaW1hbFNlcGFyYXRvciwi'@; put 'LiIpO3JldHVybiBOdW1iZXIoaSl9LHRoaXMucG9zaXRpdmVBdG9taWNFeHByZXNzaW9uPXRoaXMuUlVMRSgicG9zaXRpdmVBdG9taWNFeHByZXNzaW9uIiwoKT0+e3ZhciByO3JldHVybiB0aGlzLk9SKG51bGwhPT0ocj10aGlzLmF0b21pY0V4cENhY2hlKSYmdm9pZCAwIT09cj9yOnRoaXMu'@; put 'YXRvbWljRXhwQ2FjaGU9W3tBTFQ6KCk9PnRoaXMuU1VCUlVMRSh0aGlzLmFycmF5RXhwcmVzc2lvbil9LHtBTFQ6KCk9PnRoaXMuU1VCUlVMRSh0aGlzLmNlbGxSYW5nZUV4cHJlc3Npb24pfSx7QUxUOigpPT50aGlzLlNVQlJVTEUodGhpcy5jb2x1bW5SYW5nZUV4cHJlc3Npb24pfSx7QUxU'@; put 'OigpPT50aGlzLlNVQlJVTEUodGhpcy5yb3dSYW5nZUV4cHJlc3Npb24pfSx7QUxUOigpPT50aGlzLlNVQlJVTEUodGhpcy5vZmZzZXRFeHByZXNzaW9uKX0se0FMVDooKT0+dGhpcy5TVUJSVUxFKHRoaXMuY2VsbFJlZmVyZW5jZSl9LHtBTFQ6KCk9PnRoaXMuU1VCUlVMRSh0aGlzLnByb2Nl'@; put 'ZHVyZUV4cHJlc3Npb24pfSx7QUxUOigpPT50aGlzLlNVQlJVTEUodGhpcy5uYW1lZEV4cHJlc3Npb25FeHByZXNzaW9uKX0se0FMVDooKT0+e2NvbnN0IGk9dGhpcy5DT05TVU1FKHRoaXMubGV4ZXJDb25maWcuTnVtYmVyTGl0ZXJhbCk7cmV0dXJuKChuLGUpPT4oe3R5cGU6cm4uTlVNQkVS'@; put 'LHZhbHVlOm4sbGVhZGluZ1doaXRlc3BhY2U6ZT8uaW1hZ2V9KSkodGhpcy5udW1lcmljU3RyaW5nVG9OdW1iZXIoaS5pbWFnZSksaS5sZWFkaW5nV2hpdGVzcGFjZSl9fSx7QUxUOigpPT4obj0+e3ZhciBlO3JldHVybnt0eXBlOnJuLlNUUklORyx2YWx1ZTpuLmltYWdlLnNsaWNlKDEsLTEp'@; put 'LGxlYWRpbmdXaGl0ZXNwYWNlOm51bGw9PT0oZT1uLmxlYWRpbmdXaGl0ZXNwYWNlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5pbWFnZX19KSh0aGlzLkNPTlNVTUUocXplKSl9LHtBTFQ6KCk9Pntjb25zdCBpPXRoaXMuQ09OU1VNRShLemUpLG89aS5pbWFnZS50b1VwcGVyQ2FzZSgpLGE9dGhp'@; put 'cy5sZXhlckNvbmZpZy5lcnJvck1hcHBpbmdbb107cmV0dXJuIGE/SDYobmV3IFB0KGEpLGkubGVhZGluZ1doaXRlc3BhY2UpOnRoaXMucGFyc2luZ0Vycm9yKEdoLlBhcnNlckVycm9yLCJVbmtub3duIGVycm9yIGxpdGVyYWwiKX19XSl9KSx0aGlzLnJpZ2h0VW5hcnlPcEF0b21pY0V4cHJl'@; put 'c3Npb249dGhpcy5SVUxFKCJyaWdodFVuYXJ5T3BBdG9taWNFeHByZXNzaW9uIiwoKT0+e2NvbnN0IHI9dGhpcy5TVUJSVUxFKHRoaXMucG9zaXRpdmVBdG9taWNFeHByZXNzaW9uKSxpPXRoaXMuT1BUSU9OKCgpPT50aGlzLkNPTlNVTUUoQnplKSk7cmV0dXJuIGk/KChuLGUpPT4oe3R5cGU6'@; put 'cm4uUEVSQ0VOVF9PUCx2YWx1ZTpuLGxlYWRpbmdXaGl0ZXNwYWNlOmU/LmltYWdlfSkpKHIsaS5sZWFkaW5nV2hpdGVzcGFjZSk6cn0pLHRoaXMuYXRvbWljRXhwcmVzc2lvbj10aGlzLlJVTEUoImF0b21pY0V4cHJlc3Npb24iLCgpPT50aGlzLk9SKFt7QUxUOigpPT57Y29uc3Qgcj10aGlz'@; put 'LkNPTlNVTUUodFApLGk9dGhpcy5TVUJSVUxFKHRoaXMuYXRvbWljRXhwcmVzc2lvbik7cmV0dXJuKDAsbmEudG9rZW5NYXRjaGVyKShyLExnZSk/KChuLGUpPT4oe3R5cGU6cm4uUExVU19VTkFSWV9PUCx2YWx1ZTpuLGxlYWRpbmdXaGl0ZXNwYWNlOmU/LmltYWdlfSkpKGksci5sZWFkaW5n'@; put 'V2hpdGVzcGFjZSk6KDAsbmEudG9rZW5NYXRjaGVyKShyLE9nZSk/KChuLGUpPT4oe3R5cGU6cm4uTUlOVVNfVU5BUllfT1AsdmFsdWU6bixsZWFkaW5nV2hpdGVzcGFjZTplPy5pbWFnZX0pKShpLHIubGVhZGluZ1doaXRlc3BhY2UpOih0aGlzLmN1c3RvbVBhcnNpbmdFcnJvcj1MemUoR2gu'@; put 'UGFyc2VyRXJyb3IsIk1pc21hdGNoZWQgdG9rZW4gdHlwZSIpLHRoaXMuY3VzdG9tUGFyc2luZ0Vycm9yKX19LHtBTFQ6KCk9PnRoaXMuU1VCUlVMRTIodGhpcy5yaWdodFVuYXJ5T3BBdG9taWNFeHByZXNzaW9uKX1dKSksdGhpcy5wb3dlckV4cHJlc3Npb249dGhpcy5SVUxFKCJwb3dlckV4'@; put 'cHJlc3Npb24iLCgpPT57bGV0IHI9dGhpcy5TVUJSVUxFKHRoaXMuYXRvbWljRXhwcmVzc2lvbik7cmV0dXJuIHRoaXMuTUFOWSgoKT0+e2NvbnN0IGk9dGhpcy5DT05TVU1FKE5nZSksbz10aGlzLlNVQlJVTEUyKHRoaXMuYXRvbWljRXhwcmVzc2lvbik7KDAsbmEudG9rZW5NYXRjaGVyKShp'@; put 'LE5nZSk/cj0oKG4sZSx0KT0+KHt0eXBlOnJuLlBPV0VSX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTp0aGlzLkFDVElPTigoKT0+e3Rocm93IEVycm9yKCJPcGVyYXRvciBub3Qgc3VwcG9ydGVkIil9KX0p'@; put 'LHJ9KSx0aGlzLm11bHRpcGxpY2F0aW9uRXhwcmVzc2lvbj10aGlzLlJVTEUoIm11bHRpcGxpY2F0aW9uRXhwcmVzc2lvbiIsKCk9PntsZXQgcj10aGlzLlNVQlJVTEUodGhpcy5wb3dlckV4cHJlc3Npb24pO3JldHVybiB0aGlzLk1BTlkoKCk9Pntjb25zdCBpPXRoaXMuQ09OU1VNRShUcSks'@; put 'bz10aGlzLlNVQlJVTEUyKHRoaXMucG93ZXJFeHByZXNzaW9uKTsoMCxuYS50b2tlbk1hdGNoZXIpKGksSHplKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uVElNRVNfT1AsbGVmdDpuLHJpZ2h0OmUsbGVhZGluZ1doaXRlc3BhY2U6dD8uaW1hZ2V9KSkocixvLGkubGVhZGluZ1doaXRlc3BhY2Up'@; put 'OigwLG5hLnRva2VuTWF0Y2hlcikoaSxWemUpP3I9KChuLGUsdCk9Pih7dHlwZTpybi5ESVZfT1AsbGVmdDpuLHJpZ2h0OmUsbGVhZGluZ1doaXRlc3BhY2U6dD8uaW1hZ2V9KSkocixvLGkubGVhZGluZ1doaXRlc3BhY2UpOnRoaXMuQUNUSU9OKCgpPT57dGhyb3cgRXJyb3IoIk9wZXJhdG9y'@; put 'IG5vdCBzdXBwb3J0ZWQiKX0pfSkscn0pLHRoaXMuYWRkaXRpb25FeHByZXNzaW9uPXRoaXMuUlVMRSgiYWRkaXRpb25FeHByZXNzaW9uIiwoKT0+e2xldCByPXRoaXMuU1VCUlVMRSh0aGlzLm11bHRpcGxpY2F0aW9uRXhwcmVzc2lvbik7cmV0dXJuIHRoaXMuTUFOWSgoKT0+e2NvbnN0IGk9'@; put 'dGhpcy5DT05TVU1FKHRQKSxvPXRoaXMuU1VCUlVMRTIodGhpcy5tdWx0aXBsaWNhdGlvbkV4cHJlc3Npb24pOygwLG5hLnRva2VuTWF0Y2hlcikoaSxMZ2UpP3I9KChuLGUsdCk9Pih7dHlwZTpybi5QTFVTX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkp'@; put 'KHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTooMCxuYS50b2tlbk1hdGNoZXIpKGksT2dlKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uTUlOVVNfT1AsbGVmdDpuLHJpZ2h0OmUsbGVhZGluZ1doaXRlc3BhY2U6dD8uaW1hZ2V9KSkocixvLGkubGVhZGluZ1doaXRlc3BhY2UpOnRoaXMuQUNUSU9O'@; put 'KCgpPT57dGhyb3cgRXJyb3IoIk9wZXJhdG9yIG5vdCBzdXBwb3J0ZWQiKX0pfSkscn0pLHRoaXMuY29uY2F0ZW5hdGVFeHByZXNzaW9uPXRoaXMuUlVMRSgiY29uY2F0ZW5hdGVFeHByZXNzaW9uIiwoKT0+e2xldCByPXRoaXMuU1VCUlVMRSh0aGlzLmFkZGl0aW9uRXhwcmVzc2lvbik7cmV0'@; put 'dXJuIHRoaXMuTUFOWSgoKT0+e2NvbnN0IGk9dGhpcy5DT05TVU1FKFp6ZSksbz10aGlzLlNVQlJVTEUyKHRoaXMuYWRkaXRpb25FeHByZXNzaW9uKTtyPSgobixlLHQpPT4oe3R5cGU6cm4uQ09OQ0FURU5BVEVfT1AsbGVmdDpuLHJpZ2h0OmUsbGVhZGluZ1doaXRlc3BhY2U6dD8uaW1hZ2V9'@; put 'KSkocixvLGkubGVhZGluZ1doaXRlc3BhY2UpfSkscn0pLHRoaXMuYm9vbGVhbkV4cHJlc3Npb249dGhpcy5SVUxFKCJib29sZWFuRXhwcmVzc2lvbiIsKCk9PntsZXQgcj10aGlzLlNVQlJVTEUodGhpcy5jb25jYXRlbmF0ZUV4cHJlc3Npb24pO3JldHVybiB0aGlzLk1BTlkoKCk9Pntjb25z'@; put 'dCBpPXRoaXMuQ09OU1VNRShHXyksbz10aGlzLlNVQlJVTEUyKHRoaXMuY29uY2F0ZW5hdGVFeHByZXNzaW9uKTsoMCxuYS50b2tlbk1hdGNoZXIpKGksRmdlKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uRVFVQUxTX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdl'@; put 'fSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTooMCxuYS50b2tlbk1hdGNoZXIpKGksanplKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uTk9UX0VRVUFMX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTooMCxu'@; put 'YS50b2tlbk1hdGNoZXIpKGksVXplKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uR1JFQVRFUl9USEFOX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTooMCxuYS50b2tlbk1hdGNoZXIpKGksenplKT9yPSgobixl'@; put 'LHQpPT4oe3R5cGU6cm4uTEVTU19USEFOX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTooMCxuYS50b2tlbk1hdGNoZXIpKGksV3plKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uR1JFQVRFUl9USEFOX09SX0VR'@; put 'VUFMX09QLGxlZnQ6bixyaWdodDplLGxlYWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTooMCxuYS50b2tlbk1hdGNoZXIpKGksWXplKT9yPSgobixlLHQpPT4oe3R5cGU6cm4uTEVTU19USEFOX09SX0VRVUFMX09QLGxlZnQ6bixyaWdodDplLGxl'@; put 'YWRpbmdXaGl0ZXNwYWNlOnQ/LmltYWdlfSkpKHIsbyxpLmxlYWRpbmdXaGl0ZXNwYWNlKTp0aGlzLkFDVElPTigoKT0+e3Rocm93IEVycm9yKCJPcGVyYXRvciBub3Qgc3VwcG9ydGVkIil9KX0pLHJ9KSx0aGlzLmZvcm11bGE9dGhpcy5SVUxFKCJmb3JtdWxhIiwoKT0+KHRoaXMuQ09OU1VN'@; put 'RShGZ2UpLHRoaXMuU1VCUlVMRSh0aGlzLmJvb2xlYW5FeHByZXNzaW9uKSkpLHRoaXMubGV4ZXJDb25maWc9ZSx0aGlzLnNoZWV0TWFwcGluZz10LHRoaXMuZm9ybXVsYUFkZHJlc3M9Qm8oMCwwLDApLHRoaXMucGVyZm9ybVNlbGZBbmFseXNpcygpfXBhcnNlRnJvbVRva2VucyhlLHQpe3Ro'@; put 'aXMuaW5wdXQ9ZTtsZXQgcj10aGlzLmZvcm11bGFXaXRoQ29udGV4dCh0KSxpPVtdO3JldHVybiB0aGlzLmN1c3RvbVBhcnNpbmdFcnJvciYmaS5wdXNoKHRoaXMuY3VzdG9tUGFyc2luZ0Vycm9yKSxpPWkuY29uY2F0KHRoaXMuZXJyb3JzLm1hcChvPT4oe3R5cGU6R2guUGFyc2VyRXJyb3Is'@; put 'bWVzc2FnZTpvLm1lc3NhZ2V9KSkpLGkubGVuZ3RoPjAmJihyPUlnZSgpKSx7YXN0OnIsZXJyb3JzOml9fXJlc2V0KCl7c3VwZXIucmVzZXQoKSx0aGlzLmN1c3RvbVBhcnNpbmdFcnJvcj12b2lkIDB9Zm9ybXVsYVdpdGhDb250ZXh0KGUpe3JldHVybiB0aGlzLmZvcm11bGFBZGRyZXNzPWUs'@; put 'dGhpcy5mb3JtdWxhKCl9YnVpbGRDZWxsUmFuZ2UoZSx0LHIpe2lmKHZvaWQgMD09PWUuc2hlZXQmJnZvaWQgMCE9PXQuc2hlZXQpcmV0dXJuIHRoaXMucGFyc2luZ0Vycm9yKEdoLlBhcnNlckVycm9yLCJNYWxmb3JtZWQgcmFuZ2UgZXhwcmVzc2lvbiIpO2NvbnN0e2ZpcnN0RW5kOmksc2Vj'@; put 'b25kRW5kOm8sc2hlZXRSZWZUeXBlOmF9PUp4LmZpeFNoZWV0SWRzRm9yUmFuZ2VFbmRzKGUsdCk7cmV0dXJuIE56ZShpLG8sYSxyKX1zdGF0aWMgZml4U2hlZXRJZHNGb3JSYW5nZUVuZHMoZSx0KXtjb25zdCByPUp4LnJhbmdlU2hlZXRSZWZlcmVuY2VUeXBlKGUuc2hlZXQsdC5zaGVldCk7'@; put 'cmV0dXJue2ZpcnN0RW5kOmUsc2Vjb25kRW5kOnZvaWQgMCE9PWUuc2hlZXQmJnZvaWQgMD09PXQuc2hlZXQ/dC53aXRoU2hlZXQoZS5zaGVldCk6dCxzaGVldFJlZlR5cGU6cn19aGFuZGxlT2Zmc2V0SGV1cmlzdGljKGUpe2NvbnN0IHQ9ZVswXTtpZih0LnR5cGUhPT1ybi5DRUxMX1JFRkVS'@; put 'RU5DRSlyZXR1cm4gdGhpcy5wYXJzaW5nRXJyb3IoR2guU3RhdGljT2Zmc2V0RXJyb3IsIkZpcnN0IGFyZ3VtZW50IHRvIE9GRlNFVCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCByPWVbMV07bGV0IGk7aWYoci50eXBlPT09cm4uTlVNQkVSJiZOdW1iZXIuaXNJbnRlZ2VyKHIudmFsdWUp'@; put 'KWk9ci52YWx1ZTtlbHNlIGlmKHIudHlwZT09PXJuLlBMVVNfVU5BUllfT1AmJnIudmFsdWUudHlwZT09PXJuLk5VTUJFUiYmTnVtYmVyLmlzSW50ZWdlcihyLnZhbHVlLnZhbHVlKSlpPXIudmFsdWUudmFsdWU7ZWxzZXtpZihyLnR5cGUhPT1ybi5NSU5VU19VTkFSWV9PUHx8ci52YWx1ZS50'@; put 'eXBlIT09cm4uTlVNQkVSfHwhTnVtYmVyLmlzSW50ZWdlcihyLnZhbHVlLnZhbHVlKSlyZXR1cm4gdGhpcy5wYXJzaW5nRXJyb3IoR2guU3RhdGljT2Zmc2V0RXJyb3IsIlNlY29uZCBhcmd1bWVudCB0byBPRkZTRVQgaXMgbm90IGEgc3RhdGljIG51bWJlciIpO2k9LXIudmFsdWUudmFsdWV9'@; put 'Y29uc3Qgbz1lWzJdO2xldCBhO2lmKG8udHlwZT09PXJuLk5VTUJFUiYmTnVtYmVyLmlzSW50ZWdlcihvLnZhbHVlKSlhPW8udmFsdWU7ZWxzZSBpZihvLnR5cGU9PT1ybi5QTFVTX1VOQVJZX09QJiZvLnZhbHVlLnR5cGU9PT1ybi5OVU1CRVImJk51bWJlci5pc0ludGVnZXIoby52YWx1ZS52'@; put 'YWx1ZSkpYT1vLnZhbHVlLnZhbHVlO2Vsc2V7aWYoby50eXBlIT09cm4uTUlOVVNfVU5BUllfT1B8fG8udmFsdWUudHlwZSE9PXJuLk5VTUJFUnx8IU51bWJlci5pc0ludGVnZXIoby52YWx1ZS52YWx1ZSkpcmV0dXJuIHRoaXMucGFyc2luZ0Vycm9yKEdoLlN0YXRpY09mZnNldEVycm9yLCJU'@; put 'aGlyZCBhcmd1bWVudCB0byBPRkZTRVQgaXMgbm90IGEgc3RhdGljIG51bWJlciIpO2E9LW8udmFsdWUudmFsdWV9Y29uc3QgbD1lWzNdO2xldCB1O2lmKHZvaWQgMD09PWwpdT0xO2Vsc2V7aWYobC50eXBlIT09cm4uTlVNQkVSKXJldHVybiB0aGlzLnBhcnNpbmdFcnJvcihHaC5TdGF0aWNP'@; put 'ZmZzZXRFcnJvciwiRm91cnRoIGFyZ3VtZW50IHRvIE9GRlNFVCBpcyBub3QgYSBzdGF0aWMgbnVtYmVyIik7aWYodT1sLnZhbHVlLHU8MSlyZXR1cm4gdGhpcy5wYXJzaW5nRXJyb3IoR2guU3RhdGljT2Zmc2V0RXJyb3IsIkZvdXJ0aCBhcmd1bWVudCB0byBPRkZTRVQgaXMgdG9vIHNtYWxs'@; put 'IG51bWJlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpKXJldHVybiB0aGlzLnBhcnNpbmdFcnJvcihHaC5TdGF0aWNPZmZzZXRFcnJvciwiRm91cnRoIGFyZ3VtZW50IHRvIE9GRlNFVCBpcyBub3QgaW50ZWdlciIpfWNvbnN0IGc9ZVs0XTtsZXQgRTtpZih2b2lkIDA9PT1nKUU9MTtlbHNl'@; put 'e2lmKGcudHlwZSE9PXJuLk5VTUJFUilyZXR1cm4gdGhpcy5wYXJzaW5nRXJyb3IoR2guU3RhdGljT2Zmc2V0RXJyb3IsIkZpZnRoIGFyZ3VtZW50IHRvIE9GRlNFVCBpcyBub3QgYSBzdGF0aWMgbnVtYmVyIik7aWYoRT1nLnZhbHVlLEU8MSlyZXR1cm4gdGhpcy5wYXJzaW5nRXJyb3IoR2gu'@; put 'U3RhdGljT2Zmc2V0RXJyb3IsIkZpZnRoIGFyZ3VtZW50IHRvIE9GRlNFVCBpcyB0b28gc21hbGwgbnVtYmVyIik7aWYoIU51bWJlci5pc0ludGVnZXIoRSkpcmV0dXJuIHRoaXMucGFyc2luZ0Vycm9yKEdoLlN0YXRpY09mZnNldEVycm9yLCJGaWZ0aCBhcmd1bWVudCB0byBPRkZTRVQgaXMg'@; put 'bm90IGludGVnZXIiKX1jb25zdCBPPW5ldyB4dSh0LnJlZmVyZW5jZS5jb2wrYSx0LnJlZmVyZW5jZS5yb3craSx0LnJlZmVyZW5jZS50eXBlKTtsZXQgWj1PLmNvbCxlZT1PLnJvdztpZigodC5yZWZlcmVuY2UudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX1JFTEFUSVZFfHx0LnJlZmVyZW5j'@; put 'ZS50eXBlPT09bXUuQ0VMTF9SRUZFUkVOQ0VfQUJTT0xVVEVfQ09MKSYmKGVlKz10aGlzLmZvcm11bGFBZGRyZXNzLnJvdyksKHQucmVmZXJlbmNlLnR5cGU9PT1tdS5DRUxMX1JFRkVSRU5DRV9SRUxBVElWRXx8dC5yZWZlcmVuY2UudHlwZT09PW11LkNFTExfUkVGRVJFTkNFX0FCU09MVVRF'@; put 'X1JPVykmJihaKz10aGlzLmZvcm11bGFBZGRyZXNzLmNvbCksWjwwfHxlZTwwKXJldHVybiBINihuZXcgUHQodG4uUkVGLGRyLk91dE9mU2hlZXQpKTtpZigxPT09RSYmMT09PXUpcmV0dXJuIE96ZShPKTt7Y29uc3QgdmU9bmV3IHh1KE8uY29sK0UtMSxPLnJvdyt1LTEsTy50eXBlKTtyZXR1'@; put 'cm4gTnplKE8sdmUsRzQuUkVMQVRJVkUpfX1wYXJzaW5nRXJyb3IoZSx0KXtyZXR1cm4gdGhpcy5jdXN0b21QYXJzaW5nRXJyb3I9THplKGUsdCksSWdlKCl9c3RhdGljIHJhbmdlU2hlZXRSZWZlcmVuY2VUeXBlKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/RzQuUkVMQVRJVkU6dm9pZCAwPT09'@; put 'dD9HNC5TVEFSVF9BQlNPTFVURTpHNC5CT1RIX0FCU09MVVRFfX1jbGFzcyBBcXtjb25zdHJ1Y3RvcihlKXt0aGlzLmxleGVyQ29uZmlnPWUsdGhpcy5sZXhlcj1uZXcgbmEuTGV4ZXIoZS5hbGxUb2tlbnMse2Vuc3VyZU9wdGltaXphdGlvbnM6ITB9KX10b2tlbml6ZUZvcm11bGEoZSl7Y29u'@; put 'c3QgdD10aGlzLmxleGVyLnRva2VuaXplKGUpO2xldCByPXQudG9rZW5zO3JldHVybiByPXRoaXMudHJpbVRyYWlsaW5nV2hpdGVzcGFjZXMocikscj10aGlzLnNraXBXaGl0ZXNwYWNlc0luc2lkZVJhbmdlcyhyKSxyPXRoaXMuc2tpcFdoaXRlc3BhY2VzQmVmb3JlQXJnU2VwYXJhdG9ycyhy'@; put 'KSx0LnRva2Vucz1yLHR9c2tpcFdoaXRlc3BhY2VzSW5zaWRlUmFuZ2VzKGUpe3JldHVybiBBcS5maWx0ZXJUb2tlbnNCeU5laWdoYm9ycyhlLCh0LHIsaSk9PigoMCxuYS50b2tlbk1hdGNoZXIpKHQsJF8pfHwoMCxuYS50b2tlbk1hdGNoZXIpKHQsblApKSYmKDAsbmEudG9rZW5NYXRjaGVy'@; put 'KShyLHRoaXMubGV4ZXJDb25maWcuV2hpdGVTcGFjZSkmJigoMCxuYS50b2tlbk1hdGNoZXIpKGksJF8pfHwoMCxuYS50b2tlbk1hdGNoZXIpKGksblApKSl9c2tpcFdoaXRlc3BhY2VzQmVmb3JlQXJnU2VwYXJhdG9ycyhlKXtyZXR1cm4gQXEuZmlsdGVyVG9rZW5zQnlOZWlnaGJvcnMoZSwo'@; put 'dCxyLGkpPT4hKDAsbmEudG9rZW5NYXRjaGVyKSh0LHRoaXMubGV4ZXJDb25maWcuQXJnU2VwYXJhdG9yKSYmKDAsbmEudG9rZW5NYXRjaGVyKShyLHRoaXMubGV4ZXJDb25maWcuV2hpdGVTcGFjZSkmJigwLG5hLnRva2VuTWF0Y2hlcikoaSx0aGlzLmxleGVyQ29uZmlnLkFyZ1NlcGFyYXRv'@; put 'cikpfXN0YXRpYyBmaWx0ZXJUb2tlbnNCeU5laWdoYm9ycyhlLHQpe2lmKGUubGVuZ3RoPDMpcmV0dXJuIGU7bGV0IHI9MDtjb25zdCBpPVtlW3IrK11dO2Zvcig7cjxlLmxlbmd0aC0xOyl0KGVbci0xXSxlW3JdLGVbcisxXSl8fGkucHVzaChlW3JdKSwrK3I7cmV0dXJuIGkucHVzaChlW3Jd'@; put 'KSxpfXRyaW1UcmFpbGluZ1doaXRlc3BhY2VzKGUpe3JldHVybiBlLmxlbmd0aD4wJiYoMCxuYS50b2tlbk1hdGNoZXIpKGVbZS5sZW5ndGgtMV0sdGhpcy5sZXhlckNvbmZpZy5XaGl0ZVNwYWNlKSYmZS5wb3AoKSxlfX1jbGFzcyBRemV7Y29uc3RydWN0b3IoZSx0LHIsaSl7dGhpcy5jb25m'@; put 'aWc9ZSx0aGlzLmxleGVyQ29uZmlnPXQsdGhpcy5zaGVldE1hcHBpbmdGbj1yLHRoaXMubmFtZWRFeHByZXNzaW9ucz1pfXVucGFyc2UoZSx0KXtyZXR1cm4iPSIrdGhpcy51bnBhcnNlQXN0KGUsdCl9dW5wYXJzZUFzdChlLHQpe3ZhciByLGk7c3dpdGNoKGUudHlwZSl7Y2FzZSBybi5FTVBU'@; put 'WTpyZXR1cm4gZWMoIiIsZS5sZWFkaW5nV2hpdGVzcGFjZSk7Y2FzZSBybi5OVU1CRVI6cmV0dXJuIGVjKEp6ZShlLnZhbHVlLHRoaXMuY29uZmlnLmRlY2ltYWxTZXBhcmF0b3IpLGUubGVhZGluZ1doaXRlc3BhY2UpO2Nhc2Ugcm4uU1RSSU5HOnJldHVybiBlYygnIicrZS52YWx1ZSsnIics'@; put 'ZS5sZWFkaW5nV2hpdGVzcGFjZSk7Y2FzZSBybi5GVU5DVElPTl9DQUxMOntjb25zdCBvPWUuYXJncy5tYXAodT0+dm9pZCAwIT09dT90aGlzLnVucGFyc2VBc3QodSx0KToiIikuam9pbih0aGlzLmNvbmZpZy5mdW5jdGlvbkFyZ1NlcGFyYXRvciksbD0odGhpcy5jb25maWcudHJhbnNsYXRp'@; put 'b25QYWNrYWdlLmlzRnVuY3Rpb25UcmFuc2xhdGVkKGUucHJvY2VkdXJlTmFtZSk/dGhpcy5jb25maWcudHJhbnNsYXRpb25QYWNrYWdlLmdldEZ1bmN0aW9uVHJhbnNsYXRpb24oZS5wcm9jZWR1cmVOYW1lKTplLnByb2NlZHVyZU5hbWUpKyIoIitvK2VjKCIpIixlLmludGVybmFsV2hpdGVz'@; put 'cGFjZSk7cmV0dXJuIGVjKGwsZS5sZWFkaW5nV2hpdGVzcGFjZSl9Y2FzZSBybi5OQU1FRF9FWFBSRVNTSU9OOnJldHVybiBlYygobnVsbD09PShyPXRoaXMubmFtZWRFeHByZXNzaW9ucy5uZWFyZXN0TmFtZWRFeHByZXNzaW9uKGUuZXhwcmVzc2lvbk5hbWUsdC5zaGVldCkpfHx2b2lkIDA9'@; put 'PT1yP3ZvaWQgMDpyLmRpc3BsYXlOYW1lKXx8ZS5leHByZXNzaW9uTmFtZSxlLmxlYWRpbmdXaGl0ZXNwYWNlKTtjYXNlIHJuLkNFTExfUkVGRVJFTkNFOntsZXQgbztyZXR1cm4gbz12b2lkIDAhPT1lLnJlZmVyZW5jZS5zaGVldD90aGlzLnVucGFyc2VTaGVldE5hbWUoZS5yZWZlcmVuY2Uu'@; put 'c2hlZXQpKyIhIjoiIixvKz1udWxsIT09KGk9ZS5yZWZlcmVuY2UudW5wYXJzZSh0KSkmJnZvaWQgMCE9PWk/aTp0aGlzLmNvbmZpZy50cmFuc2xhdGlvblBhY2thZ2UuZ2V0RXJyb3JUcmFuc2xhdGlvbih0bi5SRUYpLGVjKG8sZS5sZWFkaW5nV2hpdGVzcGFjZSl9Y2FzZSBybi5DT0xVTU5f'@; put 'UkFOR0U6Y2FzZSBybi5ST1dfUkFOR0U6Y2FzZSBybi5DRUxMX1JBTkdFOnJldHVybiBlYyh0aGlzLmZvcm1hdFJhbmdlKGUsdCksZS5sZWFkaW5nV2hpdGVzcGFjZSk7Y2FzZSBybi5QTFVTX1VOQVJZX09QOntjb25zdCBvPXRoaXMudW5wYXJzZUFzdChlLnZhbHVlLHQpO3JldHVybiBlYygi'@; put 'KyIsZS5sZWFkaW5nV2hpdGVzcGFjZSkrb31jYXNlIHJuLk1JTlVTX1VOQVJZX09QOntjb25zdCBvPXRoaXMudW5wYXJzZUFzdChlLnZhbHVlLHQpO3JldHVybiBlYygiLSIsZS5sZWFkaW5nV2hpdGVzcGFjZSkrb31jYXNlIHJuLlBFUkNFTlRfT1A6cmV0dXJuIHRoaXMudW5wYXJzZUFzdChl'@; put 'LnZhbHVlLHQpK2VjKCIlIixlLmxlYWRpbmdXaGl0ZXNwYWNlKTtjYXNlIHJuLkVSUk9SOnJldHVybiBlYyh0aGlzLmNvbmZpZy50cmFuc2xhdGlvblBhY2thZ2UuZ2V0RXJyb3JUcmFuc2xhdGlvbihlLmVycm9yP2UuZXJyb3IudHlwZTp0bi5FUlJPUiksZS5sZWFkaW5nV2hpdGVzcGFjZSk7'@; put 'Y2FzZSBybi5FUlJPUl9XSVRIX1JBV19JTlBVVDpyZXR1cm4gZWMoZS5yYXdJbnB1dCxlLmxlYWRpbmdXaGl0ZXNwYWNlKTtjYXNlIHJuLlBBUkVOVEhFU0lTOntjb25zdCBhPSIoIit0aGlzLnVucGFyc2VBc3QoZS5leHByZXNzaW9uLHQpK2VjKCIpIixlLmludGVybmFsV2hpdGVzcGFjZSk7'@; put 'cmV0dXJuIGVjKGEsZS5sZWFkaW5nV2hpdGVzcGFjZSl9Y2FzZSBybi5BUlJBWTp7Y29uc3Qgbz0ieyIrZS5hcmdzLm1hcChhPT5hLm1hcChsPT50aGlzLnVucGFyc2VBc3QobCx0KSkuam9pbih0aGlzLmNvbmZpZy5hcnJheUNvbHVtblNlcGFyYXRvcikpLmpvaW4odGhpcy5jb25maWcuYXJy'@; put 'YXlSb3dTZXBhcmF0b3IpK2VjKCJ9IixlLmludGVybmFsV2hpdGVzcGFjZSk7cmV0dXJuIGVjKG8sZS5sZWFkaW5nV2hpdGVzcGFjZSl9ZGVmYXVsdDp7Y29uc3Qgbz10aGlzLnVucGFyc2VBc3QoZS5sZWZ0LHQpLGE9dGhpcy51bnBhcnNlQXN0KGUucmlnaHQsdCk7cmV0dXJuIG8rZWMoUHpl'@; put 'W2UudHlwZV0sZS5sZWFkaW5nV2hpdGVzcGFjZSkrYX19fXVucGFyc2VTaGVldE5hbWUoZSl7Y29uc3QgdD1EemUoZSx0aGlzLnNoZWV0TWFwcGluZ0ZuKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBTaChlKTtyZXR1cm4gdH1mb3JtYXRSYW5nZShlLHQpe2xldCByPSIiLGk9IiI7dm9pZCAw'@; put 'IT09ZS5zdGFydC5zaGVldCYmZS5zaGVldFJlZmVyZW5jZVR5cGUhPT1HNC5SRUxBVElWRSYmKHI9dGhpcy51bnBhcnNlU2hlZXROYW1lKGUuc3RhcnQuc2hlZXQpKyIhIiksdm9pZCAwIT09ZS5lbmQuc2hlZXQmJmUuc2hlZXRSZWZlcmVuY2VUeXBlPT09RzQuQk9USF9BQlNPTFVURSYmKGk9'@; put 'dGhpcy51bnBhcnNlU2hlZXROYW1lKGUuZW5kLnNoZWV0KSsiISIpO2NvbnN0IG89ZS5zdGFydC51bnBhcnNlKHQpLGE9ZS5lbmQudW5wYXJzZSh0KTtyZXR1cm4gdm9pZCAwPT09b3x8dm9pZCAwPT09YT90aGlzLmNvbmZpZy50cmFuc2xhdGlvblBhY2thZ2UuZ2V0RXJyb3JUcmFuc2xhdGlv'@; put 'bih0bi5SRUYpOmAke3J9JHtvfToke2l9JHthfWB9fWZ1bmN0aW9uIEp6ZShuLGUpe3JldHVybiBuLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsZSl9Y2xhc3MgclB7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuY29uZmlnPWUsdGhpcy5mdW5jdGlvblJlZ2lzdHJ5PXQsdGhpcy5zaGVldE1hcHBp'@; put 'bmc9cix0aGlzLnN0YXRzQ2FjaGVVc2VkPTAsdGhpcy5sZXhlckNvbmZpZz16Z2UoZSksdGhpcy5sZXhlcj1uZXcgQXEodGhpcy5sZXhlckNvbmZpZyksdGhpcy5mb3JtdWxhUGFyc2VyPW5ldyBKeCh0aGlzLmxleGVyQ29uZmlnLHRoaXMuc2hlZXRNYXBwaW5nKSx0aGlzLmNhY2hlPW5ldyBh'@; put 'SnQodGhpcy5mdW5jdGlvblJlZ2lzdHJ5KX1wYXJzZShlLHQpe3RoaXMuZm9ybXVsYUFkZHJlc3M9dDtjb25zdCByPXRoaXMudG9rZW5pemVGb3JtdWxhKGUpO2lmKHIuZXJyb3JzLmxlbmd0aD4wKXtjb25zdCBPPXIuZXJyb3JzLm1hcChaPT4oe3R5cGU6R2guTGV4aW5nRXJyb3IsbWVzc2Fn'@; put 'ZTpaLm1lc3NhZ2V9KSk7cmV0dXJue2FzdDpJZ2UoKSxlcnJvcnM6TyxoYXNWb2xhdGlsZUZ1bmN0aW9uOiExLGhhc1N0cnVjdHVyYWxDaGFuZ2VGdW5jdGlvbjohMSxkZXBlbmRlbmNpZXM6W119fWNvbnN0IGk9dGhpcy5jb21wdXRlSGFzaEZyb21Ub2tlbnMoci50b2tlbnMsdCk7bGV0IG89'@; put 'dGhpcy5jYWNoZS5nZXQoaSk7aWYodm9pZCAwIT09bykrK3RoaXMuc3RhdHNDYWNoZVVzZWQ7ZWxzZXtjb25zdCBPPXRoaXMuYmluZFdoaXRlc3BhY2VzVG9Ub2tlbnMoci50b2tlbnMpLFo9dGhpcy5mb3JtdWxhUGFyc2VyLnBhcnNlRnJvbVRva2VucyhPLHQpO2lmKFouZXJyb3JzLmxlbmd0'@; put 'aD4wKXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sWikse2hhc1ZvbGF0aWxlRnVuY3Rpb246ITEsaGFzU3RydWN0dXJhbENoYW5nZUZ1bmN0aW9uOiExLGRlcGVuZGVuY2llczpbXX0pO289dGhpcy5jYWNoZS5zZXQoaSxaLmFzdCl9Y29uc3R7YXN0OmEsaGFzVm9sYXRp'@; put 'bGVGdW5jdGlvbjpsLGhhc1N0cnVjdHVyYWxDaGFuZ2VGdW5jdGlvbjp1fT1vLGc9dGhpcy5jb252ZXJ0UmV2ZXJzZWRSYW5nZXNUb1JlZ3VsYXJSYW5nZXMoYSk7cmV0dXJue2FzdDpnLGVycm9yczpbXSxoYXNWb2xhdGlsZUZ1bmN0aW9uOmwsaGFzU3RydWN0dXJhbENoYW5nZUZ1bmN0aW9u'@; put 'OnUsZGVwZW5kZW5jaWVzOmtxKGcsdGhpcy5mdW5jdGlvblJlZ2lzdHJ5KX19Y29udmVydFJldmVyc2VkUmFuZ2VzVG9SZWd1bGFyUmFuZ2VzKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2Ugcm4uRU1QVFk6Y2FzZSBybi5OVU1CRVI6Y2FzZSBybi5TVFJJTkc6Y2FzZSBybi5FUlJPUjpjYXNlIHJu'@; put 'LkVSUk9SX1dJVEhfUkFXX0lOUFVUOmNhc2Ugcm4uQ0VMTF9SRUZFUkVOQ0U6Y2FzZSBybi5OQU1FRF9FWFBSRVNTSU9OOnJldHVybiBlO2Nhc2Ugcm4uQ0VMTF9SQU5HRTp7Y29uc3R7c3RhcnQ6dCxlbmQ6cn09ZSxpPXRoaXMub3JkZXJDZWxsUmFuZ2VFbmRzKHQscik7cmV0dXJuIE9iamVj'@; put 'dC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7c3RhcnQ6aS5zdGFydCxlbmQ6aS5lbmR9KX1jYXNlIHJuLkNPTFVNTl9SQU5HRTp7Y29uc3R7c3RhcnQ6dCxlbmQ6cn09ZSxpPXRoaXMub3JkZXJDb2x1bW5SYW5nZUVuZHModCxyKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNz'@; put 'aWduKHt9LGUpLHtzdGFydDppLnN0YXJ0LGVuZDppLmVuZH0pfWNhc2Ugcm4uUk9XX1JBTkdFOntjb25zdHtzdGFydDp0LGVuZDpyfT1lLGk9dGhpcy5vcmRlclJvd1JhbmdlRW5kcyh0LHIpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3N0YXJ0Omkuc3RhcnQs'@; put 'ZW5kOmkuZW5kfSl9Y2FzZSBybi5QRVJDRU5UX09QOmNhc2Ugcm4uUExVU19VTkFSWV9PUDpjYXNlIHJuLk1JTlVTX1VOQVJZX09QOntjb25zdCB0PXRoaXMuY29udmVydFJldmVyc2VkUmFuZ2VzVG9SZWd1bGFyUmFuZ2VzKGUudmFsdWUpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5h'@; put 'c3NpZ24oe30sZSkse3ZhbHVlOnR9KX1jYXNlIHJuLkNPTkNBVEVOQVRFX09QOmNhc2Ugcm4uRVFVQUxTX09QOmNhc2Ugcm4uTk9UX0VRVUFMX09QOmNhc2Ugcm4uTEVTU19USEFOX09QOmNhc2Ugcm4uR1JFQVRFUl9USEFOX09QOmNhc2Ugcm4uTEVTU19USEFOX09SX0VRVUFMX09QOmNhc2Ug'@; put 'cm4uR1JFQVRFUl9USEFOX09SX0VRVUFMX09QOmNhc2Ugcm4uTUlOVVNfT1A6Y2FzZSBybi5QTFVTX09QOmNhc2Ugcm4uVElNRVNfT1A6Y2FzZSBybi5ESVZfT1A6Y2FzZSBybi5QT1dFUl9PUDp7Y29uc3QgdD10aGlzLmNvbnZlcnRSZXZlcnNlZFJhbmdlc1RvUmVndWxhclJhbmdlcyhlLmxl'@; put 'ZnQpLHI9dGhpcy5jb252ZXJ0UmV2ZXJzZWRSYW5nZXNUb1JlZ3VsYXJSYW5nZXMoZS5yaWdodCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bGVmdDp0LHJpZ2h0OnJ9KX1jYXNlIHJuLlBBUkVOVEhFU0lTOntjb25zdCB0PXRoaXMuY29udmVydFJldmVyc2Vk'@; put 'UmFuZ2VzVG9SZWd1bGFyUmFuZ2VzKGUuZXhwcmVzc2lvbik7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZXhwcmVzc2lvbjp0fSl9Y2FzZSBybi5GVU5DVElPTl9DQUxMOntjb25zdCB0PWUuYXJncy5tYXAocj0+dGhpcy5jb252ZXJ0UmV2ZXJzZWRSYW5nZXNU'@; put 'b1JlZ3VsYXJSYW5nZXMocikpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2FyZ3M6dH0pfWNhc2Ugcm4uQVJSQVk6e2NvbnN0IHQ9ZS5hcmdzLm1hcChyPT5yLm1hcChpPT50aGlzLmNvbnZlcnRSZXZlcnNlZFJhbmdlc1RvUmVndWxhclJhbmdlcyhpKSkpO3Jl'@; put 'dHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2FyZ3M6dH0pfX19b3JkZXJDZWxsUmFuZ2VFbmRzKGUsdCl7Y29uc3Qgcj1bZSx0XSxbaSxvXT1yLm1hcChFPT5FLnRvQ29sdW1uQWRkcmVzcygpKS5zb3J0KGEzLmNvbXBhcmVCeUFic29sdXRlQWRkcmVzcyh0aGlzLmZv'@; put 'cm11bGFBZGRyZXNzKSksW2EsbF09ci5tYXAoRT0+RS50b1Jvd0FkZHJlc3MoKSkuc29ydChsZi5jb21wYXJlQnlBYnNvbHV0ZUFkZHJlc3ModGhpcy5mb3JtdWxhQWRkcmVzcykpLFt1LGddPXIubWFwKEU9PkUuc2hlZXQpLnNvcnQoclAuY29tcGFyZVNoZWV0SWRzLmJpbmQodGhpcykpO3Jl'@; put 'dHVybntzdGFydDp4dS5mcm9tQ29sQW5kUm93KGksYSx1KSxlbmQ6eHUuZnJvbUNvbEFuZFJvdyhvLGwsZyl9fW9yZGVyQ29sdW1uUmFuZ2VFbmRzKGUsdCl7Y29uc3Qgcj1bZSx0XSxbaSxvXT1yLnNvcnQoYTMuY29tcGFyZUJ5QWJzb2x1dGVBZGRyZXNzKHRoaXMuZm9ybXVsYUFkZHJlc3Mp'@; put 'KSxbYSxsXT1yLm1hcCh1PT51LnNoZWV0KS5zb3J0KHJQLmNvbXBhcmVTaGVldElkcy5iaW5kKHRoaXMpKTtyZXR1cm57c3RhcnQ6bmV3IGEzKGkudHlwZSxpLmNvbCxhKSxlbmQ6bmV3IGEzKG8udHlwZSxvLmNvbCxsKX19b3JkZXJSb3dSYW5nZUVuZHMoZSx0KXtjb25zdCByPVtlLHRdLFtp'@; put 'LG9dPXIuc29ydChsZi5jb21wYXJlQnlBYnNvbHV0ZUFkZHJlc3ModGhpcy5mb3JtdWxhQWRkcmVzcykpLFthLGxdPXIubWFwKHU9PnUuc2hlZXQpLnNvcnQoclAuY29tcGFyZVNoZWV0SWRzLmJpbmQodGhpcykpO3JldHVybntzdGFydDpuZXcgbGYoaS50eXBlLGkucm93LGEpLGVuZDpuZXcg'@; put 'bGYoby50eXBlLG8ucm93LGwpfX1zdGF0aWMgY29tcGFyZVNoZWV0SWRzKGUsdCl7cmV0dXJuKGU9ZT8/MS8wKS0odD8/MS8wKX1mZXRjaENhY2hlZFJlc3VsdEZvckFzdChlKXtjb25zdCB0PXRoaXMuY29tcHV0ZUhhc2hGcm9tQXN0KGUpO3JldHVybiB0aGlzLmZldGNoQ2FjaGVkUmVzdWx0'@; put 'KHQpfWZldGNoQ2FjaGVkUmVzdWx0KGUpe2NvbnN0IHQ9dGhpcy5jYWNoZS5nZXQoZSk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGlzIG5vIEFTVCB3aXRoIHN1Y2gga2V5IGluIHRoZSBjYWNoZSIpO3tjb25zdHthc3Q6cixoYXNWb2xhdGlsZUZ1bmN0aW9uOmksaGFz'@; put 'U3RydWN0dXJhbENoYW5nZUZ1bmN0aW9uOm8scmVsYXRpdmVEZXBlbmRlbmNpZXM6YX09dDtyZXR1cm57YXN0OnIsZXJyb3JzOltdLGhhc1ZvbGF0aWxlRnVuY3Rpb246aSxoYXNTdHJ1Y3R1cmFsQ2hhbmdlRnVuY3Rpb246byxkZXBlbmRlbmNpZXM6YX19fWNvbXB1dGVIYXNoRnJvbVRva2Vu'@; put 'cyhlLHQpe3ZhciByO2xldCBpPSIiLG89MDtmb3IoO288ZS5sZW5ndGg7KXtjb25zdCBhPWVbb107aWYoKDAsbmEudG9rZW5NYXRjaGVyKShhLCRfKSl7Y29uc3QgbD1YeCh0aGlzLnNoZWV0TWFwcGluZyxhLmltYWdlLHQpO2k9aS5jb25jYXQodm9pZCAwPT09bD9hLmltYWdlOmwuaGFzaCgh'@; put 'MCkpfWVsc2UgaWYoKDAsbmEudG9rZW5NYXRjaGVyKShhLEJnZSkpe2NvbnN0IGw9YS5pbWFnZS50b1VwcGVyQ2FzZSgpLnNsaWNlKDAsLTEpLHU9bnVsbCE9PShyPXRoaXMubGV4ZXJDb25maWcuZnVuY3Rpb25NYXBwaW5nW2xdKSYmdm9pZCAwIT09cj9yOmw7aT1pLmNvbmNhdCh1LCIoIil9'@; put 'ZWxzZSBpZigoMCxuYS50b2tlbk1hdGNoZXIpKGEsSGdlKSl7Y29uc3RbbCx1XT1hLmltYWdlLnNwbGl0KCI6IiksZz13cSh0aGlzLnNoZWV0TWFwcGluZyxsLHQpLEU9d3EodGhpcy5zaGVldE1hcHBpbmcsdSx0KTtpPXZvaWQgMD09PWd8fHZvaWQgMD09PUU/aS5jb25jYXQoIiFSRUYiKTpp'@; put 'LmNvbmNhdChnLmhhc2goITApLCI6IixFLmhhc2goITApKX1lbHNlIGlmKCgwLG5hLnRva2VuTWF0Y2hlcikoYSxWZ2UpKXtjb25zdFtsLHVdPWEuaW1hZ2Uuc3BsaXQoIjoiKSxnPUNxKHRoaXMuc2hlZXRNYXBwaW5nLGwsdCksRT1DcSh0aGlzLnNoZWV0TWFwcGluZyx1LHQpO2k9dm9pZCAw'@; put 'PT09Z3x8dm9pZCAwPT09RT9pLmNvbmNhdCgiIVJFRiIpOmkuY29uY2F0KGcuaGFzaCghMCksIjoiLEUuaGFzaCghMCkpfWVsc2UgaT1pLmNvbmNhdChhLmltYWdlKTtvKyt9cmV0dXJuIGl9cmVtZW1iZXJOZXdBc3QoZSl7Y29uc3QgdD10aGlzLmNvbXB1dGVIYXNoRnJvbUFzdChlKTtyZXR1'@; put 'cm4gdGhpcy5jYWNoZS5tYXliZVNldEFuZFRoZW5HZXQodCxlKX1jb21wdXRlSGFzaEZyb21Bc3QoZSl7cmV0dXJuIj0iK3RoaXMuY29tcHV0ZUhhc2hPZkFzdE5vZGUoZSl9Y29tcHV0ZUhhc2hPZkFzdE5vZGUoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBybi5FTVBUWTpyZXR1cm4gZS5sZWFk'@; put 'aW5nV2hpdGVzcGFjZXx8IiI7Y2FzZSBybi5OVU1CRVI6cmV0dXJuIGVjKEp6ZShlLnZhbHVlLHRoaXMuY29uZmlnLmRlY2ltYWxTZXBhcmF0b3IpLGUubGVhZGluZ1doaXRlc3BhY2UpO2Nhc2Ugcm4uU1RSSU5HOnJldHVybiBlYygnIicrZS52YWx1ZSsnIicsZS5sZWFkaW5nV2hpdGVzcGFj'@; put 'ZSk7Y2FzZSBybi5OQU1FRF9FWFBSRVNTSU9OOnJldHVybiBlYyhlLmV4cHJlc3Npb25OYW1lLGUubGVhZGluZ1doaXRlc3BhY2UpO2Nhc2Ugcm4uRlVOQ1RJT05fQ0FMTDp7Y29uc3QgdD1lLmFyZ3MubWFwKGk9PnRoaXMuY29tcHV0ZUhhc2hPZkFzdE5vZGUoaSkpLmpvaW4odGhpcy5jb25m'@; put 'aWcuZnVuY3Rpb25BcmdTZXBhcmF0b3IpLHI9ZS5wcm9jZWR1cmVOYW1lKyIoIit0K2VjKCIpIixlLmludGVybmFsV2hpdGVzcGFjZSk7cmV0dXJuIGVjKHIsZS5sZWFkaW5nV2hpdGVzcGFjZSl9Y2FzZSBybi5DRUxMX1JFRkVSRU5DRTpyZXR1cm4gZWMoZS5yZWZlcmVuY2UuaGFzaCghMCks'@; put 'ZS5sZWFkaW5nV2hpdGVzcGFjZSk7Y2FzZSBybi5DT0xVTU5fUkFOR0U6Y2FzZSBybi5ST1dfUkFOR0U6Y2FzZSBybi5DRUxMX1JBTkdFOnJldHVybiBlYyhlLnN0YXJ0Lmhhc2goZS5zaGVldFJlZmVyZW5jZVR5cGUhPT1HNC5SRUxBVElWRSkrIjoiK2UuZW5kLmhhc2goZS5zaGVldFJlZmVy'@; put 'ZW5jZVR5cGU9PT1HNC5CT1RIX0FCU09MVVRFKSxlLmxlYWRpbmdXaGl0ZXNwYWNlKTtjYXNlIHJuLk1JTlVTX1VOQVJZX09QOnJldHVybiBlYygiLSIrdGhpcy5jb21wdXRlSGFzaE9mQXN0Tm9kZShlLnZhbHVlKSxlLmxlYWRpbmdXaGl0ZXNwYWNlKTtjYXNlIHJuLlBMVVNfVU5BUllfT1A6'@; put 'cmV0dXJuIGVjKCIrIit0aGlzLmNvbXB1dGVIYXNoT2ZBc3ROb2RlKGUudmFsdWUpLGUubGVhZGluZ1doaXRlc3BhY2UpO2Nhc2Ugcm4uUEVSQ0VOVF9PUDpyZXR1cm4gdGhpcy5jb21wdXRlSGFzaE9mQXN0Tm9kZShlLnZhbHVlKStlYygiJSIsZS5sZWFkaW5nV2hpdGVzcGFjZSk7Y2FzZSBy'@; put 'bi5FUlJPUjpyZXR1cm4gZWModGhpcy5jb25maWcudHJhbnNsYXRpb25QYWNrYWdlLmdldEVycm9yVHJhbnNsYXRpb24oZS5lcnJvcj9lLmVycm9yLnR5cGU6dG4uRVJST1IpLGUubGVhZGluZ1doaXRlc3BhY2UpO2Nhc2Ugcm4uRVJST1JfV0lUSF9SQVdfSU5QVVQ6cmV0dXJuIGVjKGUucmF3'@; put 'SW5wdXQsZS5sZWFkaW5nV2hpdGVzcGFjZSk7Y2FzZSBybi5BUlJBWTpyZXR1cm4gZWMoInsiK2UuYXJncy5tYXAocj0+ci5tYXAoaT0+dGhpcy5jb21wdXRlSGFzaE9mQXN0Tm9kZShpKSkuam9pbigiLCIpKS5qb2luKCI7IikrZWMoIn0iLGUuaW50ZXJuYWxXaGl0ZXNwYWNlKSxlLmxlYWRp'@; put 'bmdXaGl0ZXNwYWNlKTtjYXNlIHJuLlBBUkVOVEhFU0lTOntjb25zdCByPSIoIit0aGlzLmNvbXB1dGVIYXNoT2ZBc3ROb2RlKGUuZXhwcmVzc2lvbikrZWMoIikiLGUuaW50ZXJuYWxXaGl0ZXNwYWNlKTtyZXR1cm4gZWMocixlLmxlYWRpbmdXaGl0ZXNwYWNlKX1kZWZhdWx0OnJldHVybiB0'@; put 'aGlzLmNvbXB1dGVIYXNoT2ZBc3ROb2RlKGUubGVmdCkrZWMoUHplW2UudHlwZV0sZS5sZWFkaW5nV2hpdGVzcGFjZSkrdGhpcy5jb21wdXRlSGFzaE9mQXN0Tm9kZShlLnJpZ2h0KX19YmluZFdoaXRlc3BhY2VzVG9Ub2tlbnMoZSl7Y29uc3QgdD1bXSxyPWVbMF07KDAsbmEudG9rZW5NYXRj'@; put 'aGVyKShyLHRoaXMubGV4ZXJDb25maWcuV2hpdGVTcGFjZSl8fHQucHVzaChyKTtmb3IobGV0IGk9MTtpPGUubGVuZ3RoOysraSl7Y29uc3Qgbz1lW2ldO2lmKCgwLG5hLnRva2VuTWF0Y2hlcikobyx0aGlzLmxleGVyQ29uZmlnLldoaXRlU3BhY2UpKWNvbnRpbnVlO2NvbnN0IGE9ZVtpLTFd'@; put 'OygwLG5hLnRva2VuTWF0Y2hlcikoYSx0aGlzLmxleGVyQ29uZmlnLldoaXRlU3BhY2UpJiYoby5sZWFkaW5nV2hpdGVzcGFjZT1hKSx0LnB1c2gobyl9cmV0dXJuIHR9dG9rZW5pemVGb3JtdWxhKGUpe3JldHVybiB0aGlzLmxleGVyLnRva2VuaXplRm9ybXVsYShlKX19Y29uc3QgZUE9KG4s'@; put 'ZSx0LHIpPT57c3dpdGNoKG4udHlwZSl7Y2FzZSBybi5FTVBUWTpjYXNlIHJuLk5VTUJFUjpjYXNlIHJuLlNUUklORzpjYXNlIHJuLkVSUk9SOnJldHVybjtjYXNlIHJuLk5BTUVEX0VYUFJFU1NJT046cmV0dXJuIHZvaWQociYmdC5wdXNoKG5ldyBhOShuLmV4cHJlc3Npb25OYW1lKSkpO2Nh'@; put 'c2Ugcm4uQ0VMTF9SRUZFUkVOQ0U6cmV0dXJuIHZvaWQociYmdC5wdXNoKG5ldyBlV2Uobi5yZWZlcmVuY2UpKSk7Y2FzZSBybi5DRUxMX1JBTkdFOnJldHVybiB2b2lkKHImJm4uc3RhcnQuc2hlZXQ9PT1uLmVuZC5zaGVldCYmdC5wdXNoKG5ldyBjSnQobi5zdGFydCxuLmVuZCkpKTtjYXNl'@; put 'IHJuLkNPTFVNTl9SQU5HRTpyZXR1cm4gdm9pZChyJiZuLnN0YXJ0LnNoZWV0PT09bi5lbmQuc2hlZXQmJnQucHVzaChuZXcgdUp0KG4uc3RhcnQsbi5lbmQpKSk7Y2FzZSBybi5ST1dfUkFOR0U6cmV0dXJuIHZvaWQociYmbi5zdGFydC5zaGVldD09PW4uZW5kLnNoZWV0JiZ0LnB1c2gobmV3'@; put 'IGRKdChuLnN0YXJ0LG4uZW5kKSkpO2Nhc2Ugcm4uUEVSQ0VOVF9PUDpjYXNlIHJuLlBMVVNfVU5BUllfT1A6Y2FzZSBybi5NSU5VU19VTkFSWV9PUDpyZXR1cm4gdm9pZCBlQShuLnZhbHVlLGUsdCwhMCk7Y2FzZSBybi5DT05DQVRFTkFURV9PUDpjYXNlIHJuLkVRVUFMU19PUDpjYXNlIHJu'@; put 'Lk5PVF9FUVVBTF9PUDpjYXNlIHJuLkxFU1NfVEhBTl9PUDpjYXNlIHJuLkdSRUFURVJfVEhBTl9PUDpjYXNlIHJuLkxFU1NfVEhBTl9PUl9FUVVBTF9PUDpjYXNlIHJuLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9PUDpjYXNlIHJuLk1JTlVTX09QOmNhc2Ugcm4uUExVU19PUDpjYXNlIHJuLlRJ'@; put 'TUVTX09QOmNhc2Ugcm4uRElWX09QOmNhc2Ugcm4uUE9XRVJfT1A6cmV0dXJuIGVBKG4ubGVmdCxlLHQsITApLHZvaWQgZUEobi5yaWdodCxlLHQsITApO2Nhc2Ugcm4uUEFSRU5USEVTSVM6cmV0dXJuIHZvaWQgZUEobi5leHByZXNzaW9uLGUsdCxyKTtjYXNlIHJuLkZVTkNUSU9OX0NBTEw6'@; put 'e2NvbnN0IGk9IWUuZG9lc0Z1bmN0aW9uTmVlZEFyZ3VtZW50VG9CZUNvbXB1dGVkKG4ucHJvY2VkdXJlTmFtZSk7cmV0dXJuIHZvaWQgbi5hcmdzLmZvckVhY2gobz0+ZUEobyxlLHQsaSkpfX19LGtxPShuLGUpPT57Y29uc3QgdD1uZXcgQXJyYXk7cmV0dXJuIGVBKG4sZSx0LCEwKSx0fTtj'@; put 'bGFzcyBlV2V7Y29uc3RydWN0b3IoZSl7dGhpcy5kZXBlbmRlbmN5PWV9YWJzb2x1dGl6ZShlKXtyZXR1cm4gdGhpcy5kZXBlbmRlbmN5LnRvU2ltcGxlQ2VsbEFkZHJlc3MoZSl9fWNsYXNzIGNKdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD10fWFic29sdXRpemUo'@; put 'ZSl7cmV0dXJuIG5ldyBiYSh0aGlzLnN0YXJ0LnRvU2ltcGxlQ2VsbEFkZHJlc3MoZSksdGhpcy5lbmQudG9TaW1wbGVDZWxsQWRkcmVzcyhlKSl9fWNsYXNzIHVKdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD10fWFic29sdXRpemUoZSl7Y29uc3QgdD10aGlzLnN0'@; put 'YXJ0LnRvU2ltcGxlQ29sdW1uQWRkcmVzcyhlKSxyPXRoaXMuZW5kLnRvU2ltcGxlQ29sdW1uQWRkcmVzcyhlKTtyZXR1cm4gbmV3IHM5KHQuc2hlZXQsdC5jb2wsci5jb2wpfX1jbGFzcyBkSnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0YXJ0PWUsdGhpcy5lbmQ9dH1hYnNvbHV0aXplKGUp'@; put 'e2NvbnN0IHQ9dGhpcy5zdGFydC50b1NpbXBsZVJvd0FkZHJlc3MoZSkscj10aGlzLmVuZC50b1NpbXBsZVJvd0FkZHJlc3MoZSk7cmV0dXJuIG5ldyBsOSh0LnNoZWV0LHQucm93LHIucm93KX19Y2xhc3MgYTl7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9YWJzb2x1dGl6ZShlKXtyZXR1'@; put 'cm4gdGhpc319Y29uc3QgVjY9KG4sZSk9Pm4ubWFwKHQ9PnQuYWJzb2x1dGl6ZShlKSksbGw9U3ltYm9sKCJFbXB0eSB2YWx1ZSIpO2Z1bmN0aW9uIExvKG4pe3JldHVybiBuIGluc3RhbmNlb2YgQjY/bi52YWw6bn1jbGFzcyBCNntjb25zdHJ1Y3RvcihlLHQpe3RoaXMudmFsPWUsdGhpcy5m'@; put 'b3JtYXQ9dH1mcm9tTnVtYmVyKGUpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcihlKX19ZnVuY3Rpb24gV2dlKG4sZSl7aWYoIm51bWJlciI9PXR5cGVvZiBuKXJldHVybiBlO3tjb25zdCB0PW4uZnJvbU51bWJlcihlKTtyZXR1cm4gdC5mb3JtYXQ9bi5mb3JtYXQsdH19Y2xhc3MgWWdl'@; put 'IGV4dGVuZHMgQjZ7Z2V0RGV0YWlsZWRUeXBlKCl7cmV0dXJuIG9hLk5VTUJFUl9EQVRFfX1jbGFzcyBaZ2UgZXh0ZW5kcyBCNntnZXREZXRhaWxlZFR5cGUoKXtyZXR1cm4gb2EuTlVNQkVSX0NVUlJFTkNZfX1jbGFzcyBHZ2UgZXh0ZW5kcyBCNntnZXREZXRhaWxlZFR5cGUoKXtyZXR1cm4g'@; put 'b2EuTlVNQkVSX1RJTUV9fWNsYXNzICRnZSBleHRlbmRzIEI2e2dldERldGFpbGVkVHlwZSgpe3JldHVybiBvYS5OVU1CRVJfREFURVRJTUV9fWNsYXNzIFJxIGV4dGVuZHMgQjZ7Z2V0RGV0YWlsZWRUeXBlKCl7cmV0dXJuIG9hLk5VTUJFUl9QRVJDRU5UfX1mdW5jdGlvbiBjYyhuKXtyZXR1'@; put 'cm4ibnVtYmVyIj09dHlwZW9mIG58fG4gaW5zdGFuY2VvZiBCNn12YXIgb2E9ZnVuY3Rpb24obil7cmV0dXJuIG4uTlVNQkVSX1JBVz0iTlVNQkVSX1JBVyIsbi5OVU1CRVJfREFURT0iTlVNQkVSX0RBVEUiLG4uTlVNQkVSX1RJTUU9Ik5VTUJFUl9USU1FIixuLk5VTUJFUl9EQVRFVElNRT0i'@; put 'TlVNQkVSX0RBVEVUSU1FIixuLk5VTUJFUl9DVVJSRU5DWT0iTlVNQkVSX0NVUlJFTkNZIixuLk5VTUJFUl9QRVJDRU5UPSJOVU1CRVJfUEVSQ0VOVCIsbn0ob2F8fHt9KTtmdW5jdGlvbiBJcShuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEI2P3t0eXBlOm4uZ2V0RGV0YWlsZWRUeXBlKCksZm9y'@; put 'bWF0Om4uZm9ybWF0fTp7dHlwZTpvYS5OVU1CRVJfUkFXfX1jbGFzcyBsYXtjb25zdHJ1Y3RvcihlLHQscixpKXt0aGlzLl9kYXRhPWUsdGhpcy5yYW5nZT10LHRoaXMuZGVwZW5kZW5jeUdyYXBoPXIsdGhpcy5faGFzT25seU51bWJlcnM9aSx0aGlzLnNpemU9dm9pZCAwPT09ZT9uZXcgeWwo'@; put 'dC5lZmZlY3RpdmVXaWR0aChyKSx0LmVmZmVjdGl2ZUhlaWdodChyKSk6bmV3IHlsKGVbMF0ubGVuZ3RoLGUubGVuZ3RoKX1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmVuc3VyZVRoYXRDb21wdXRlZCgpLHRoaXMuX2RhdGF9c3RhdGljIGZyb21SYW5nZShlLHQscil7cmV0dXJuIG5ldyBsYShl'@; put 'LHQsciwhMCl9c3RhdGljIG9ubHlOdW1iZXJzKGUpe3JldHVybiBuZXcgbGEoZSx2b2lkIDAsdm9pZCAwLCEwKX1zdGF0aWMgb25seVZhbHVlcyhlKXtyZXR1cm4gbmV3IGxhKGUsdm9pZCAwLHZvaWQgMCx2b2lkIDApfXN0YXRpYyBvbmx5UmFuZ2UoZSx0KXtyZXR1cm4gbmV3IGxhKHZvaWQg'@; put 'MCxlLHQsdm9pZCAwKX1zdGF0aWMgZnJvbVNjYWxhcihlKXtyZXR1cm4gbmV3IGxhKFtbZV1dLHZvaWQgMCx2b2lkIDAsdm9pZCAwKX1pc0FkSG9jKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMucmFuZ2V9d2lkdGgoKXtyZXR1cm4gdGhpcy5zaXplLndpZHRofWhlaWdodCgpe3JldHVybiB0aGlz'@; put 'LnNpemUuaGVpZ2h0fXZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCl7dGhpcy5lbnN1cmVUaGF0Q29tcHV0ZWQoKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8dGhpcy5fZGF0YS5sZW5ndGg7dCsrKWZvcihsZXQgcj0wO3I8dGhpcy5fZGF0YVswXS5sZW5ndGg7cisrKWUucHVzaCh0aGlzLl9k'@; put 'YXRhW3RdW3JdKTtyZXR1cm4gZX0qZWZmZWN0aXZlQWRkcmVzc2VzRnJvbURhdGEoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLmRhdGEubGVuZ3RoOysrdCl7Y29uc3Qgcj10aGlzLmRhdGFbdF07Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDsrK2kpeWllbGQgQm8oZS5zaGVldCxlLmNvbCtpLGUucm93'@; put 'K3QpfX0qZW50cmllc0Zyb21Ub3BMZWZ0Q29ybmVyKGUpe3RoaXMuZW5zdXJlVGhhdENvbXB1dGVkKCk7Zm9yKGxldCB0PTA7dDx0aGlzLnNpemUuaGVpZ2h0OysrdClmb3IobGV0IHI9MDtyPHRoaXMuc2l6ZS53aWR0aDsrK3IpeWllbGRbdGhpcy5fZGF0YVt0XVtyXSxCbyhlLnNoZWV0LGUu'@; put 'Y29sK3IsZS5yb3crdCldfSppdGVyYXRlVmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKXt5aWVsZCp0aGlzLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCl9bnVtYmVyT2ZFbGVtZW50cygpe3JldHVybiB0aGlzLnNpemUud2lkdGgqdGhpcy5zaXplLmhlaWdodH1oYXNPbmx5TnVtYmVycygpe2lm'@; put 'KHZvaWQgMD09PXRoaXMuX2hhc09ubHlOdW1iZXJzKXt0aGlzLl9oYXNPbmx5TnVtYmVycz0hMDtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEpZm9yKGNvbnN0IHQgb2YgZSlpZigibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIHRoaXMuX2hhc09ubHlOdW1iZXJzPSExLCExfXJldHVybiB0aGlz'@; put 'Ll9oYXNPbmx5TnVtYmVyc31yYXdOdW1iZXJzKCl7cmV0dXJuIHRoaXMuX2RhdGF9cmF3RGF0YSgpe3ZhciBlO3JldHVybiB0aGlzLmVuc3VyZVRoYXRDb21wdXRlZCgpLG51bGwhPT0oZT10aGlzLl9kYXRhKSYmdm9pZCAwIT09ZT9lOltdfXNhbWVEaW1lbnNpb25zQXMoZSl7cmV0dXJuIHRo'@; put 'aXMud2lkdGgoKT09PWUud2lkdGgoKSYmdGhpcy5oZWlnaHQoKT09PWUuaGVpZ2h0KCl9ZW5zdXJlVGhhdENvbXB1dGVkKCl7dm9pZCAwPT09dGhpcy5fZGF0YSYmKHRoaXMuX2hhc09ubHlOdW1iZXJzPSEwLHRoaXMuX2RhdGE9dGhpcy5yYW5nZS5hZGRyZXNzZXNBcnJheU1hcCh0aGlzLmRl'@; put 'cGVuZGVuY3lHcmFwaCxlPT57Y29uc3QgdD10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsVmFsdWUoZSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBsYT8odGhpcy5faGFzT25seU51bWJlcnM9ITEsbmV3IFB0KHRuLlZBTFVFLGRyLlNjYWxhckV4cGVjdGVkKSk6KGNjKHQpfHwodGhpcy5faGFz'@; put 'T25seU51bWJlcnM9ITEpLHQpfSkpfX1jbGFzcyBxX3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2hhbmdlcz1uZXcgTWFwfXN0YXRpYyBlbXB0eSgpe3JldHVybiBuZXcgcV99YWRkQWxsKGUpe2Zvcihjb25zdCB0IG9mIGUuY2hhbmdlcy52YWx1ZXMoKSl0aGlzLmFkZCh0LmFkZHJlc3MsdCk7cmV0'@; put 'dXJuIHRoaXN9YWRkQ2hhbmdlKGUsdCxyKXt0aGlzLmFkZEludGVycHJldGVyVmFsdWUoZSx0LHIpfWV4cG9ydENoYW5nZXMoZSl7bGV0IHQ9W107cmV0dXJuIHRoaXMuY2hhbmdlcy5mb3JFYWNoKHI9Pntjb25zdCBpPWUuZXhwb3J0Q2hhbmdlKHIpO0FycmF5LmlzQXJyYXkoaSk/dD10LmNv'@; put 'bmNhdChpKTp0LnB1c2goaSl9KSx0fWdldENoYW5nZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoYW5nZXMudmFsdWVzKCkpfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMuY2hhbmdlcy5zaXplfWFkZChlLHQpe2NvbnN0IHI9dC52YWx1ZTtpZihyIGluc3RhbmNlb2YgbGEpZm9yKGNv'@; put 'bnN0IGkgb2Ygci5lZmZlY3RpdmVBZGRyZXNzZXNGcm9tRGF0YShlKSl0aGlzLmNoYW5nZXMuZGVsZXRlKGNQKGkpKTt0aGlzLmNoYW5nZXMuc2V0KGNQKGUpLHQpfWFkZEludGVycHJldGVyVmFsdWUoZSx0LHIpe3RoaXMuYWRkKHQse2FkZHJlc3M6dCx2YWx1ZTplLG9sZFZhbHVlOnJ9KX19'@; put 'Y2xhc3MgdHB7Y29uc3RydWN0b3IoZSx0LHIpe2lmKHRoaXMuc2hlZXQ9ZSx0aGlzLnJvd1N0YXJ0PXQsdGhpcy5yb3dFbmQ9cix0PDApdGhyb3cgRXJyb3IoIlN0YXJ0aW5nIHJvdyBjYW50IGJlIGxlc3MgdGhhbiAwIik7aWYocjx0KXRocm93IEVycm9yKCJSb3cgc3BhbiBjYW50IGVuZCBi'@; put 'ZWZvcmUgc3RhcnQiKX1nZXQgbnVtYmVyT2ZSb3dzKCl7cmV0dXJuIHRoaXMucm93RW5kLXRoaXMucm93U3RhcnQrMX1nZXQgc3RhcnQoKXtyZXR1cm4gdGhpcy5yb3dTdGFydH1nZXQgZW5kKCl7cmV0dXJuIHRoaXMucm93RW5kfXN0YXRpYyBmcm9tTnVtYmVyT2ZSb3dzKGUsdCxyKXtyZXR1'@; put 'cm4gbmV3IHRwKGUsdCx0K3ItMSl9c3RhdGljIGZyb21Sb3dTdGFydEFuZEVuZChlLHQscil7cmV0dXJuIG5ldyB0cChlLHQscil9KnJvd3MoKXtmb3IobGV0IGU9dGhpcy5yb3dTdGFydDtlPD10aGlzLnJvd0VuZDsrK2UpeWllbGQgZX1pbnRlcnNlY3QoZSl7aWYodGhpcy5zaGVldCE9PWUu'@; put 'c2hlZXQpdGhyb3cgRXJyb3IoIkNhbid0IGludGVyc2VjdCBzcGFucyBmcm9tIGRpZmZlcmVudCBzaGVldHMiKTtjb25zdCB0PU1hdGgubWF4KHRoaXMucm93U3RhcnQsZS5yb3dTdGFydCkscj1NYXRoLm1pbih0aGlzLnJvd0VuZCxlLnJvd0VuZCk7cmV0dXJuIHQ+cj9udWxsOm5ldyB0cCh0'@; put 'aGlzLnNoZWV0LHQscil9Zmlyc3RSb3coKXtyZXR1cm4gbmV3IHRwKHRoaXMuc2hlZXQsdGhpcy5yb3dTdGFydCx0aGlzLnJvd1N0YXJ0KX19Y2xhc3MgZ2d7Y29uc3RydWN0b3IoZSx0LHIpe2lmKHRoaXMuc2hlZXQ9ZSx0aGlzLmNvbHVtblN0YXJ0PXQsdGhpcy5jb2x1bW5FbmQ9cix0PDAp'@; put 'dGhyb3cgRXJyb3IoIlN0YXJ0aW5nIGNvbHVtbiBjYW50IGJlIGxlc3MgdGhhbiAwIik7aWYocjx0KXRocm93IEVycm9yKCJDb2x1bW4gc3BhbiBjYW50IGVuZCBiZWZvcmUgc3RhcnQiKX1nZXQgbnVtYmVyT2ZDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uRW5kLXRoaXMuY29sdW1uU3Rh'@; put 'cnQrMX1nZXQgc3RhcnQoKXtyZXR1cm4gdGhpcy5jb2x1bW5TdGFydH1nZXQgZW5kKCl7cmV0dXJuIHRoaXMuY29sdW1uRW5kfXN0YXRpYyBmcm9tTnVtYmVyT2ZDb2x1bW5zKGUsdCxyKXtyZXR1cm4gbmV3IGdnKGUsdCx0K3ItMSl9c3RhdGljIGZyb21Db2x1bW5TdGFydEFuZEVuZChlLHQs'@; put 'cil7cmV0dXJuIG5ldyBnZyhlLHQscil9KmNvbHVtbnMoKXtmb3IobGV0IGU9dGhpcy5jb2x1bW5TdGFydDtlPD10aGlzLmNvbHVtbkVuZDsrK2UpeWllbGQgZX1pbnRlcnNlY3QoZSl7aWYodGhpcy5zaGVldCE9PWUuc2hlZXQpdGhyb3cgRXJyb3IoIkNhbid0IGludGVyc2VjdCBzcGFucyBm'@; put 'cm9tIGRpZmZlcmVudCBzaGVldHMiKTtjb25zdCB0PU1hdGgubWF4KHRoaXMuY29sdW1uU3RhcnQsZS5jb2x1bW5TdGFydCkscj1NYXRoLm1pbih0aGlzLmNvbHVtbkVuZCxlLmNvbHVtbkVuZCk7cmV0dXJuIHQ+cj9udWxsOm5ldyBnZyh0aGlzLnNoZWV0LHQscil9Zmlyc3RDb2x1bW4oKXty'@; put 'ZXR1cm4gbmV3IGdnKHRoaXMuc2hlZXQsdGhpcy5jb2x1bW5TdGFydCx0aGlzLmNvbHVtblN0YXJ0KX19dmFyIEFzPWZ1bmN0aW9uKG4pe3JldHVybiBuLkJVSUxEX0VOR0lORV9UT1RBTD0iQlVJTERfRU5HSU5FX1RPVEFMIixuLlBBUlNFUj0iUEFSU0VSIixuLkdSQVBIX0JVSUxEPSJHUkFQ'@; put 'SF9CVUlMRCIsbi5DT0xMRUNUX0RFUEVOREVOQ0lFUz0iQ09MTEVDVF9ERVBFTkRFTkNJRVMiLG4uUFJPQ0VTU19ERVBFTkRFTkNJRVM9IlBST0NFU1NfREVQRU5ERU5DSUVTIixuLlRPUF9TT1JUPSJUT1BfU09SVCIsbi5CVUlMRF9DT0xVTU5fSU5ERVg9IkJVSUxEX0NPTFVNTl9JTkRFWCIs'@; put 'bi5FVkFMVUFUSU9OPSJFVkFMVUFUSU9OIixuLlZMT09LVVA9IlZMT09LVVAiLG4uVFJBTlNGT1JNX0FTVFM9IlRSQU5TRk9STV9BU1RTIixuLlRSQU5TRk9STV9BU1RTX1BPU1RQT05FRD0iVFJBTlNGT1JNX0FTVFNfUE9TVFBPTkVEIixuLkFESlVTVElOR19BRERSRVNTX01BUFBJTkc9IkFE'@; put 'SlVTVElOR19BRERSRVNTX01BUFBJTkciLG4uQURKVVNUSU5HX0FSUkFZX01BUFBJTkc9IkFESlVTVElOR19BUlJBWV9NQVBQSU5HIixuLkFESlVTVElOR19SQU5HRVM9IkFESlVTVElOR19SQU5HRVMiLG4uQURKVVNUSU5HX0dSQVBIPSJBREpVU1RJTkdfR1JBUEgiLG4uQ1JJVEVSSU9OX0ZV'@; put 'TkNUSU9OX0ZVTExfQ0FDSEVfVVNFRD0iQ1JJVEVSSU9OX0ZVTkNUSU9OX0ZVTExfQ0FDSEVfVVNFRCIsbi5DUklURVJJT05fRlVOQ1RJT05fUEFSVElBTF9DQUNIRV9VU0VEPSJDUklURVJJT05fRlVOQ1RJT05fUEFSVElBTF9DQUNIRV9VU0VEIixufShBc3x8e30pO2NsYXNzIHRXZXtjb25z'@; put 'dHJ1Y3Rvcigpe3RoaXMuc3RhdHM9bmV3IE1hcChbW0FzLkNSSVRFUklPTl9GVU5DVElPTl9GVUxMX0NBQ0hFX1VTRUQsMF0sW0FzLkNSSVRFUklPTl9GVU5DVElPTl9QQVJUSUFMX0NBQ0hFX1VTRUQsMF1dKSx0aGlzLnN0YXJ0VGltZXM9bmV3IE1hcH1pbmNyZW1lbnRDcml0ZXJpb25GdW5j'@; put 'dGlvbkZ1bGxDYWNoZVVzZWQoKXt2YXIgZTtjb25zdCB0PShudWxsIT09KGU9dGhpcy5zdGF0cy5nZXQoQXMuQ1JJVEVSSU9OX0ZVTkNUSU9OX0ZVTExfQ0FDSEVfVVNFRCkpJiZ2b2lkIDAhPT1lP2U6MCkrMTt0aGlzLnN0YXRzLnNldChBcy5DUklURVJJT05fRlVOQ1RJT05fRlVMTF9DQUNI'@; put 'RV9VU0VELHQpfWluY3JlbWVudENyaXRlcmlvbkZ1bmN0aW9uUGFydGlhbENhY2hlVXNlZCgpe3ZhciBlO2NvbnN0IHQ9KG51bGwhPT0oZT10aGlzLnN0YXRzLmdldChBcy5DUklURVJJT05fRlVOQ1RJT05fUEFSVElBTF9DQUNIRV9VU0VEKSkmJnZvaWQgMCE9PWU/ZTowKSsxO3RoaXMuc3Rh'@; put 'dHMuc2V0KEFzLkNSSVRFUklPTl9GVU5DVElPTl9QQVJUSUFMX0NBQ0hFX1VTRUQsdCl9cmVzZXQoKXt0aGlzLnN0YXRzLmNsZWFyKCksdGhpcy5zdGFydFRpbWVzLmNsZWFyKCksdGhpcy5zdGF0cy5zZXQoQXMuQ1JJVEVSSU9OX0ZVTkNUSU9OX0ZVTExfQ0FDSEVfVVNFRCwwKSx0aGlzLnN0'@; put 'YXRzLnNldChBcy5DUklURVJJT05fRlVOQ1RJT05fUEFSVElBTF9DQUNIRV9VU0VELDApfXN0YXJ0KGUpe2lmKHRoaXMuc3RhcnRUaW1lcy5nZXQoZSkpdGhyb3cgRXJyb3IoYFN0YXRpc3RpY3MgJHtlfSBhbHJlYWR5IHN0YXJ0ZWRgKTt0aGlzLnN0YXJ0VGltZXMuc2V0KGUsRGF0ZS5ub3co'@; put 'KSl9ZW5kKGUpe3ZhciB0O2NvbnN0IHI9RGF0ZS5ub3coKSxpPXRoaXMuc3RhcnRUaW1lcy5nZXQoZSk7aWYoIWkpdGhyb3cgRXJyb3IoYFN0YXRpc3RpY3MgJHtlfSBub3Qgc3RhcnRlZGApO3tsZXQgbz1udWxsIT09KHQ9dGhpcy5zdGF0cy5nZXQoZSkpJiZ2b2lkIDAhPT10P3Q6MDtvKz1y'@; put 'LWksdGhpcy5zdGF0cy5zZXQoZSxvKSx0aGlzLnN0YXJ0VGltZXMuZGVsZXRlKGUpfX1tZWFzdXJlKGUsdCl7dGhpcy5zdGFydChlKTtjb25zdCByPXQoKTtyZXR1cm4gdGhpcy5lbmQoZSkscn1zbmFwc2hvdCgpe3JldHVybiBuZXcgTWFwKHRoaXMuc3RhdHMpfX1jbGFzcyBnSnQgZXh0ZW5k'@; put 'cyB0V2V7aW5jcmVtZW50Q3JpdGVyaW9uRnVuY3Rpb25GdWxsQ2FjaGVVc2VkKCl7fWluY3JlbWVudENyaXRlcmlvbkZ1bmN0aW9uUGFydGlhbENhY2hlVXNlZCgpe31zdGFydChlKXt9ZW5kKGUpe319Y2xhc3MgU2ggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgVGhlcmUn'@; put 'cyBubyBzaGVldCB3aXRoIGlkID0gJHtlfWApfX1jbGFzcyBtSnQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgVGhlcmUncyBubyBzaGVldCB3aXRoIG5hbWUgJyR7ZX0nYCl9fWNsYXNzIERxIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYFNoZWV0IHdp'@; put 'dGggbmFtZSAke2V9IGFscmVhZHkgZXhpc3RzYCl9fWNsYXNzIHRBIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiU2hlZXQgc2l6ZSBsaW1pdCBleGNlZWRlZCIpfX1jbGFzcyBxZ2UgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJUaGlzIGlzIG5vdCBhIGZv'@; put 'cm11bGEiKX19Y2xhc3Mgdkp0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEFkZHJlc3MgKHJvdyA9ICR7ZS5yb3d9LCBjb2wgPSAke2UuY29sfSkgaXMgaW52YWxpZGApfX1jbGFzcyBuMCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBJbnZhbGlkIGFy'@; put 'Z3VtZW50cywgZXhwZWN0ZWQgJHtlfWApfX1jbGFzcyBpUCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYFNoZWV0cyAke2V9IGFuZCAke3R9IGFyZSBub3QgZXF1YWwuYCl9fWNsYXNzIF9KdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBOYW1lIG9m'@; put 'IE5hbWVkIEV4cHJlc3Npb24gJyR7ZX0nIGlzIGFscmVhZHkgcHJlc2VudGApfX1jbGFzcyB5SnQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgTmFtZSBvZiBOYW1lZCBFeHByZXNzaW9uICcke2V9JyBpcyBpbnZhbGlkYCl9fWNsYXNzIExxIGV4dGVuZHMgRXJyb3J7Y29u'@; put 'c3RydWN0b3IoZSl7c3VwZXIoYE5hbWVkIEV4cHJlc3Npb24gJyR7ZX0nIGRvZXMgbm90IGV4aXN0YCl9fWNsYXNzIGJKdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIlRoZXJlIGlzIG5vIG9wZXJhdGlvbiB0byB1bmRvIil9fWNsYXNzIHdKdCBleHRlbmRzIEVycm9ye2Nv'@; put 'bnN0cnVjdG9yKCl7c3VwZXIoIlRoZXJlIGlzIG5vIG9wZXJhdGlvbiB0byByZWRvIil9fWNsYXNzIENKdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIlRoZXJlIGlzIG5vdGhpbmcgdG8gcGFzdGUiKX19ZnVuY3Rpb24gU0p0KG4sZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNl'@; put 'ImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuIGUudG9TdHJpbmcoKTtjYXNlImJpZ2ludCI6cmV0dXJuIkJpZ0ludCgiK2UudG9TdHJpbmcoKSsiKSI7ZGVmYXVsdDpyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZ0V4cD8iUmVnRXhwKCIrZS50b1N0cmluZygpKyIpIjplfX1jbGFzcyBFSnQg'@; put 'ZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgVW5hYmxlIHRvIHBhcnNlIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KGUsU0p0LDQpfWApfX1jbGFzcyBTYyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGU6ICR7ZX0g'@; put 'Zm9yIGNvbmZpZyBwYXJhbWV0ZXI6ICR7dH1gKX19Y2xhc3MgTUp0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYENvbmZpZyBwYXJhbWV0ZXIgJHtlfSBjYW5ub3QgYmUgZW1wdHkuYCl9fWNsYXNzIFRKdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIo'@; put 'YENvbmZpZyBwYXJhbWV0ZXIgJHtlfSBzaG91bGQgYmUgYXQgbGVhc3QgJHt0fWApfX1jbGFzcyB4SnQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBDb25maWcgcGFyYW1ldGVyICR7ZX0gc2hvdWxkIGJlIGF0IG1vc3QgJHt0fWApfX1jbGFzcyBBSnQgZXh0ZW5kcyBF'@; put 'cnJvcntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBFeHBlY3RlZCBvbmUgb2YgJHtlfSBmb3IgY29uZmlnIHBhcmFtZXRlcjogJHt0fWApfX1jbGFzcyBrSnQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJDb21wdXRhdGlvbnMgYXJlIHN1c3BlbmRlZCIpfX1jbGFzcyBvUCBl'@; put 'eHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBUcmFuc2xhdGlvbiBmb3IgJHtlfSBpcyBtaXNzaW5nIGluIHRoZSB0cmFuc2xhdGlvbiBwYWNrYWdlIHlvdSdyZSB1c2luZy5gKX19Y2xhc3MgUkp0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYENhbm5vdCBy'@; put 'ZWdpc3RlciB0cmFuc2xhdGlvbiBmb3IgZnVuY3Rpb24gd2l0aCBpZDogJHtlfWApfX1jbGFzcyBuV2UgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJMYW5ndWFnZSBub3QgcmVnaXN0ZXJlZC4iKX19Y2xhc3MgSUp0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBl'@; put 'cigiTGFuZ3VhZ2UgYWxyZWFkeSByZWdpc3RlcmVkLiIpfX1jbGFzcyBhUCBleHRlbmRzIEVycm9ye3N0YXRpYyBmdW5jdGlvbk5vdERlY2xhcmVkSW5QbHVnaW4oZSx0KXtyZXR1cm4gbmV3IGFQKGBGdW5jdGlvbiB3aXRoIGlkICR7ZX0gbm90IGRlY2xhcmVkIGluIHBsdWdpbiAke3R9YCl9'@; put 'c3RhdGljIGZ1bmN0aW9uTWV0aG9kTm90Rm91bmQoZSx0KXtyZXR1cm4gbmV3IGFQKGBGdW5jdGlvbiBtZXRob2QgJHtlfSBub3QgZm91bmQgaW4gcGx1Z2luICR7dH1gKX19Y2xhc3MgT0MgZXh0ZW5kcyBFcnJvcntzdGF0aWMgY2Fubm90UmVnaXN0ZXJGdW5jdGlvbldpdGhJZChlKXtyZXR1'@; put 'cm4gbmV3IE9DKGBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gd2l0aCBpZCAke2V9YCl9c3RhdGljIGNhbm5vdFVucmVnaXN0ZXJGdW5jdGlvbldpdGhJZChlKXtyZXR1cm4gbmV3IE9DKGBDYW5ub3QgdW5yZWdpc3RlciBmdW5jdGlvbiB3aXRoIGlkICR7ZX1gKX1zdGF0aWMgY2Fubm90VW5y'@; put 'ZWdpc3RlclByb3RlY3RlZFBsdWdpbigpe3JldHVybiBuZXcgT0MoIkNhbm5vdCB1bnJlZ2lzdGVyIHByb3RlY3RlZCBwbHVnaW4iKX19Y2xhc3Mgc1AgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJDYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiwgc291cmNlIGxvY2F0'@; put 'aW9uIGhhcyBhbiBhcnJheSBpbnNpZGUuIil9fWNsYXNzIEtnZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLCB0YXJnZXQgbG9jYXRpb24gaGFzIGFuIGFycmF5IGluc2lkZS4iKX19Y2xhc3MgcldlIGV4dGVuZHMgRXJy'@; put 'b3J7Y29uc3RydWN0b3IoKXtzdXBlcigiUmVsYXRpdmUgYWRkcmVzc2VzIG5vdCBhbGxvd2VkIGluIG5hbWVkIGV4cHJlc3Npb25zLiIpfX1jbGFzcyBESnQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBBbGlhcyBpZCAke2V9IGluIHBsdWdpbiAke3R9IGFscmVhZHkg'@; put 'ZGVmaW5lZCBhcyBhIGZ1bmN0aW9uIG9yIGFsaWFzLmApfX1jbGFzcyBMSnR7Y29uc3RydWN0b3IoZSl7dGhpcy5wb2xpY3k9ZSx0aGlzLm1hcHBpbmc9bmV3IE1hcH1nZXRDZWxsKGUpe2NvbnN0IHQ9dGhpcy5tYXBwaW5nLmdldChlLnNoZWV0KTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBT'@; put 'aChlLnNoZWV0KTtyZXR1cm4gdC5nZXRDZWxsKGUpfWZldGNoQ2VsbChlKXtjb25zdCB0PXRoaXMubWFwcGluZy5nZXQoZS5zaGVldCk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgU2goZS5zaGVldCk7Y29uc3Qgcj10LmdldENlbGwoZSk7aWYoIXIpdGhyb3cgRXJyb3IoIlZlcnRleCBmb3Ig'@; put 'YWRkcmVzcyBtaXNzaW5nIGluIEFkZHJlc3NNYXBwaW5nIik7cmV0dXJuIHJ9c3RyYXRlZ3lGb3IoZSl7Y29uc3QgdD10aGlzLm1hcHBpbmcuZ2V0KGUpO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFNoKGUpO3JldHVybiB0fWFkZFNoZWV0KGUsdCl7aWYodGhpcy5tYXBwaW5nLmhhcyhlKSl0'@; put 'aHJvdyBFcnJvcigiU2hlZXQgYWxyZWFkeSBhZGRlZCIpO3RoaXMubWFwcGluZy5zZXQoZSx0KX1hdXRvQWRkU2hlZXQoZSx0KXtjb25zdHtoZWlnaHQ6cix3aWR0aDppLGZpbGw6b309dCxhPXRoaXMucG9saWN5LmNhbGwobyk7dGhpcy5hZGRTaGVldChlLG5ldyBhKGkscikpfWdldENlbGxW'@; put 'YWx1ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2VsbChlKTtyZXR1cm4gdm9pZCAwPT09dD9sbDp0IGluc3RhbmNlb2YgJGg/dC5nZXRBcnJheUNlbGxWYWx1ZShlKTp0LmdldENlbGxWYWx1ZSgpfWdldFJhd1ZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDZWxsKGUpO3JldHVybiB0IGluc3RhbmNl'@; put 'b2YgUV8/dC5nZXRWYWx1ZXMoKS5yYXdWYWx1ZTp0IGluc3RhbmNlb2YgJGg/dC5nZXRBcnJheUNlbGxSYXdWYWx1ZShlKTpudWxsfXNldENlbGwoZSx0KXtjb25zdCByPXRoaXMubWFwcGluZy5nZXQoZS5zaGVldCk7aWYoIXIpdGhyb3cgRXJyb3IoIlNoZWV0IG5vdCBpbml0aWFsaXplZCIp'@; put 'O3Iuc2V0Q2VsbChlLHQpfW1vdmVDZWxsKGUsdCl7Y29uc3Qgcj10aGlzLm1hcHBpbmcuZ2V0KGUuc2hlZXQpO2lmKCFyKXRocm93IEVycm9yKCJTaGVldCBub3QgaW5pdGlhbGl6ZWQuIik7aWYoZS5zaGVldCE9PXQuc2hlZXQpdGhyb3cgRXJyb3IoIkNhbm5vdCBtb3ZlIGNlbGxzIGJldHdl'@; put 'ZW4gc2hlZXRzLiIpO2lmKHIuaGFzKHQpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG1vdmUgY2VsbC4gRGVzdGluYXRpb24gYWxyZWFkeSBvY2N1cGllZC4iKTtjb25zdCBpPXIuZ2V0Q2VsbChlKTtpZih2b2lkIDA9PT1pKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG1vdmUgY2VsbC4gTm8g'@; put 'Y2VsbCB3aXRoIHN1Y2ggYWRkcmVzcy4iKTt0aGlzLnNldENlbGwodCxpKSx0aGlzLnJlbW92ZUNlbGwoZSl9cmVtb3ZlQ2VsbChlKXtjb25zdCB0PXRoaXMubWFwcGluZy5nZXQoZS5zaGVldCk7aWYoIXQpdGhyb3cgRXJyb3IoIlNoZWV0IG5vdCBpbml0aWFsaXplZCIpO3QucmVtb3ZlQ2Vs'@; put 'bChlKX1oYXMoZSl7Y29uc3QgdD10aGlzLm1hcHBpbmcuZ2V0KGUuc2hlZXQpO3JldHVybiB2b2lkIDAhPT10JiZ0LmhhcyhlKX1nZXRIZWlnaHQoZSl7Y29uc3QgdD10aGlzLm1hcHBpbmcuZ2V0KGUpO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFNoKGUpO3JldHVybiB0LmdldEhlaWdodCgp'@; put 'fWdldFdpZHRoKGUpe2NvbnN0IHQ9dGhpcy5tYXBwaW5nLmdldChlKTtpZighdCl0aHJvdyBuZXcgU2goZSk7cmV0dXJuIHQuZ2V0V2lkdGgoKX1hZGRSb3dzKGUsdCxyKXtjb25zdCBpPXRoaXMubWFwcGluZy5nZXQoZSk7aWYodm9pZCAwPT09aSl0aHJvdyBuZXcgU2goZSk7aS5hZGRSb3dz'@; put 'KHQscil9cmVtb3ZlUm93cyhlKXtjb25zdCB0PXRoaXMubWFwcGluZy5nZXQoZS5zaGVldCk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgU2goZS5zaGVldCk7dC5yZW1vdmVSb3dzKGUpfXJlbW92ZVNoZWV0KGUpe3RoaXMubWFwcGluZy5kZWxldGUoZSl9YWRkQ29sdW1ucyhlLHQscil7Y29u'@; put 'c3QgaT10aGlzLm1hcHBpbmcuZ2V0KGUpO2lmKHZvaWQgMD09PWkpdGhyb3cgbmV3IFNoKGUpO2kuYWRkQ29sdW1ucyh0LHIpfXJlbW92ZUNvbHVtbnMoZSl7Y29uc3QgdD10aGlzLm1hcHBpbmcuZ2V0KGUuc2hlZXQpO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFNoKGUuc2hlZXQpO3QucmVt'@; put 'b3ZlQ29sdW1ucyhlKX0qdmVydGljZXNGcm9tUm93c1NwYW4oZSl7eWllbGQqdGhpcy5tYXBwaW5nLmdldChlLnNoZWV0KS52ZXJ0aWNlc0Zyb21Sb3dzU3BhbihlKX0qdmVydGljZXNGcm9tQ29sdW1uc1NwYW4oZSl7eWllbGQqdGhpcy5tYXBwaW5nLmdldChlLnNoZWV0KS52ZXJ0aWNlc0Zy'@; put 'b21Db2x1bW5zU3BhbihlKX0qZW50cmllc0Zyb21Sb3dzU3BhbihlKXt5aWVsZCp0aGlzLm1hcHBpbmcuZ2V0KGUuc2hlZXQpLmVudHJpZXNGcm9tUm93c1NwYW4oZSl9KmVudHJpZXNGcm9tQ29sdW1uc1NwYW4oZSl7eWllbGQqdGhpcy5tYXBwaW5nLmdldChlLnNoZWV0KS5lbnRyaWVzRnJv'@; put 'bUNvbHVtbnNTcGFuKGUpfSplbnRyaWVzKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLm1hcHBpbmcuZW50cmllcygpKXlpZWxkKnQuZ2V0RW50cmllcyhlKX0qc2hlZXRFbnRyaWVzKGUpe2NvbnN0IHQ9dGhpcy5tYXBwaW5nLmdldChlKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBTaChlKTt5'@; put 'aWVsZCp0LmdldEVudHJpZXMoZSl9fWNsYXNzIE9KdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYXJyYXlNYXBwaW5nPW5ldyBNYXB9Z2V0QXJyYXkoZSl7Y29uc3QgdD10aGlzLmdldEFycmF5QnlDb3JuZXIoZS5zdGFydCk7aWYodD8uZ2V0UmFuZ2UoKS5zYW1lQXMoZSkpcmV0dXJuIHR9Z2V0QXJy'@; put 'YXlCeUNvcm5lcihlKXtyZXR1cm4gdGhpcy5hcnJheU1hcHBpbmcuZ2V0KGNQKGUpKX1zZXRBcnJheShlLHQpe3RoaXMuYXJyYXlNYXBwaW5nLnNldChjUChlLnN0YXJ0KSx0KX1yZW1vdmVBcnJheShlKXt0aGlzLmFycmF5TWFwcGluZy5kZWxldGUoInN0cmluZyI9PXR5cGVvZiBlP2U6Y1Ao'@; put 'ZS5zdGFydCkpfWNvdW50KCl7cmV0dXJuIHRoaXMuYXJyYXlNYXBwaW5nLnNpemV9KmFycmF5c0luUm93cyhlKXtmb3IoY29uc3RbdCxyXW9mIHRoaXMuYXJyYXlNYXBwaW5nLmVudHJpZXMoKSlyLnNwYW5zVGhyb3VnaFNoZWV0Um93cyhlLnNoZWV0LGUucm93U3RhcnQsZS5yb3dFbmQpJiYo'@; put 'eWllbGRbdCxyXSl9KmFycmF5c0luQ29scyhlKXtmb3IoY29uc3RbdCxyXW9mIHRoaXMuYXJyYXlNYXBwaW5nLmVudHJpZXMoKSlyLnNwYW5zVGhyb3VnaFNoZWV0Q29sdW1uKGUuc2hlZXQsZS5jb2x1bW5TdGFydCxlLmNvbHVtbkVuZCkmJih5aWVsZFt0LHJdKX1pc0Zvcm11bGFBcnJheUlu'@; put 'Um93KGUsdCl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5hcnJheU1hcHBpbmcudmFsdWVzKCkpaWYoci5zcGFuc1Rocm91Z2hTaGVldFJvd3MoZSx0KSlyZXR1cm4hMDtyZXR1cm4hMX1pc0Zvcm11bGFBcnJheUluQWxsUm93cyhlKXtsZXQgdD0hMDtmb3IoY29uc3QgciBvZiBlLnJvd3MoKSl0aGlz'@; put 'LmlzRm9ybXVsYUFycmF5SW5Sb3coZS5zaGVldCxyKXx8KHQ9ITEpO3JldHVybiB0fWlzRm9ybXVsYUFycmF5SW5Db2x1bW4oZSx0KXtmb3IoY29uc3QgciBvZiB0aGlzLmFycmF5TWFwcGluZy52YWx1ZXMoKSlpZihyLnNwYW5zVGhyb3VnaFNoZWV0Q29sdW1uKGUsdCkpcmV0dXJuITA7cmV0'@; put 'dXJuITF9aXNGb3JtdWxhQXJyYXlJbkFsbENvbHVtbnMoZSl7bGV0IHQ9ITA7Zm9yKGNvbnN0IHIgb2YgZS5jb2x1bW5zKCkpdGhpcy5pc0Zvcm11bGFBcnJheUluQ29sdW1uKGUuc2hlZXQscil8fCh0PSExKTtyZXR1cm4gdH1pc0Zvcm11bGFBcnJheUluUmFuZ2UoZSl7Zm9yKGNvbnN0IHQg'@; put 'b2YgdGhpcy5hcnJheU1hcHBpbmcudmFsdWVzKCkpaWYodC5nZXRSYW5nZSgpLmRvZXNPdmVybGFwKGUpKXJldHVybiEwO3JldHVybiExfWlzRm9ybXVsYUFycmF5QXRBZGRyZXNzKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuYXJyYXlNYXBwaW5nLnZhbHVlcygpKWlmKHQuZ2V0UmFuZ2UoKS5h'@; put 'ZGRyZXNzSW5SYW5nZShlKSlyZXR1cm4hMDtyZXR1cm4hMX1tb3ZlQXJyYXlWZXJ0aWNlc0FmdGVyUm93QnlSb3dzKGUsdCxyKXt0aGlzLnVwZGF0ZUFycmF5VmVydGljZXNJblNoZWV0KGUsKGksbyk9Pntjb25zdCBhPW8uZ2V0UmFuZ2UoKTtyZXR1cm4gdDw9YS5zdGFydC5yb3c/W2Euc2hp'@; put 'ZnRlZCgwLHIpLG9dOnZvaWQgMH0pfW1vdmVBcnJheVZlcnRpY2VzQWZ0ZXJDb2x1bW5CeUNvbHVtbnMoZSx0LHIpe3RoaXMudXBkYXRlQXJyYXlWZXJ0aWNlc0luU2hlZXQoZSwoaSxvKT0+e2NvbnN0IGE9by5nZXRSYW5nZSgpO3JldHVybiB0PD1hLnN0YXJ0LmNvbD9bYS5zaGlmdGVkKHIs'@; put 'MCksb106dm9pZCAwfSl9dXBkYXRlQXJyYXlWZXJ0aWNlc0luU2hlZXQoZSx0KXtjb25zdCByPUFycmF5KCk7Zm9yKGNvbnN0W2ksb11vZiB0aGlzLmFycmF5TWFwcGluZy5lbnRyaWVzKCkpe2lmKG8uc2hlZXQhPT1lKWNvbnRpbnVlO2NvbnN0IGE9dChpLG8pO3ZvaWQgMCE9PWEmJih0aGlz'@; put 'LnJlbW92ZUFycmF5KGkpLHIucHVzaChhKSl9ci5mb3JFYWNoKChbaSxvXSk9Pnt0aGlzLnNldEFycmF5KGksbyl9KX19Y2xhc3MgbFB7Y29uc3RydWN0b3IoZSl7dGhpcy5zaXplPWV9d2lkdGgoKXtyZXR1cm4gdGhpcy5zaXplLndpZHRofWhlaWdodCgpe3JldHVybiB0aGlzLnNpemUuaGVp'@; put 'Z2h0fWdldChlLHQpe3Rocm93IEVycm9yKCJBcnJheSBub3QgY29tcHV0ZWQgeWV0LiIpfXNpbXBsZVJhbmdlVmFsdWUoKXt0aHJvdyBFcnJvcigiQXJyYXkgbm90IGNvbXB1dGVkIHlldC4iKX19Y2xhc3MgbkF7Y29uc3RydWN0b3IoZSl7aWYodGhpcy5zaXplPW5ldyB5bChlLmxlbmd0aD4w'@; put 'P2VbMF0ubGVuZ3RoOjAsZS5sZW5ndGgpLHRoaXMuYXJyYXk9ZSx0aGlzLnNpemUud2lkdGg8PTB8fHRoaXMuc2l6ZS5oZWlnaHQ8PTApdGhyb3cgRXJyb3IoIkluY29ycmVjdCBhcnJheSBzaXplIil9c3RhdGljIGZyb21JbnRlcnByZXRlclZhbHVlKGUpe3JldHVybiBuZXcgbkEoZSBpbnN0'@; put 'YW5jZW9mIGxhP2UuZGF0YTpbW2VdXSl9c2ltcGxlUmFuZ2VWYWx1ZSgpe3JldHVybiBsYS5vbmx5VmFsdWVzKHRoaXMuYXJyYXkpfWFkZFJvd3MoZSx0KXt0aGlzLmFycmF5LnNwbGljZShlLDAsLi4udGhpcy5udWxsQXJyYXlzKHQsdGhpcy53aWR0aCgpKSksdGhpcy5zaXplLmhlaWdodCs9'@; put 'dH1hZGRDb2x1bW5zKGUsdCl7Zm9yKGxldCByPTA7cjx0aGlzLmhlaWdodCgpO3IrKyl0aGlzLmFycmF5W3JdLnNwbGljZShlLDAsLi4ubmV3IEFycmF5KHQpLmZpbGwobGwpKTt0aGlzLnNpemUud2lkdGgrPXR9cmVtb3ZlUm93cyhlLHQpe2lmKHRoaXMub3V0T2ZCb3VuZCgwLGUpfHx0aGlz'@; put 'Lm91dE9mQm91bmQoMCx0KSl0aHJvdyBFcnJvcigiQXJyYXkgaW5kZXggb3V0IG9mIGJvdW5kIik7Y29uc3Qgcj10LWUrMTt0aGlzLmFycmF5LnNwbGljZShlLHIpLHRoaXMuc2l6ZS5oZWlnaHQtPXJ9cmVtb3ZlQ29sdW1ucyhlLHQpe2lmKHRoaXMub3V0T2ZCb3VuZChlLDApfHx0aGlzLm91'@; put 'dE9mQm91bmQodCwwKSl0aHJvdyBFcnJvcigiQXJyYXkgaW5kZXggb3V0IG9mIGJvdW5kIik7Y29uc3Qgcj10LWUrMTtmb3IoY29uc3QgaSBvZiB0aGlzLmFycmF5KWkuc3BsaWNlKGUscik7dGhpcy5zaXplLndpZHRoLT1yfW51bGxBcnJheXMoZSx0KXtjb25zdCByPVtdO2ZvcihsZXQgaT0w'@; put 'O2k8ZTsrK2kpci5wdXNoKG5ldyBBcnJheSh0KS5maWxsKGxsKSk7cmV0dXJuIHJ9Z2V0KGUsdCl7aWYodGhpcy5vdXRPZkJvdW5kKGUsdCkpdGhyb3cgRXJyb3IoIkFycmF5IGluZGV4IG91dCBvZiBib3VuZCIpO3JldHVybiB0aGlzLmFycmF5W3RdW2VdfXNldChlLHQscil7aWYodGhpcy5v'@; put 'dXRPZkJvdW5kKGUsdCkpdGhyb3cgRXJyb3IoIkFycmF5IGluZGV4IG91dCBvZiBib3VuZCIpO3RoaXMuYXJyYXlbdF1bZV09cn13aWR0aCgpe3JldHVybiB0aGlzLnNpemUud2lkdGh9aGVpZ2h0KCl7cmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHR9cmF3KCl7cmV0dXJuIHRoaXMuYXJyYXl9cmVz'@; put 'aXplKGUpe2lmKHRoaXMuaGVpZ2h0KCk8ZS5oZWlnaHQmJmlzRmluaXRlKGUuaGVpZ2h0KSYmdGhpcy5hZGRSb3dzKHRoaXMuaGVpZ2h0KCksZS5oZWlnaHQtdGhpcy5oZWlnaHQoKSksdGhpcy5oZWlnaHQoKT5lLmhlaWdodHx8KHRoaXMud2lkdGgoKTxlLndpZHRoJiZpc0Zpbml0ZShlLndp'@; put 'ZHRoKSYmdGhpcy5hZGRDb2x1bW5zKHRoaXMud2lkdGgoKSxlLndpZHRoLXRoaXMud2lkdGgoKSksdGhpcy53aWR0aCgpPmUud2lkdGgpKXRocm93IEVycm9yKCJSZXNpemluZyB0byBzbWFsbGVyIGFycmF5Iil9b3V0T2ZCb3VuZChlLHQpe3JldHVybiBlPDB8fHQ8MHx8dD50aGlzLnNpemUu'@; put 'aGVpZ2h0LTF8fGU+dGhpcy5zaXplLndpZHRoLTF9fWNsYXNzIFhnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZXJyb3I9ZSx0aGlzLnNpemU9dH1nZXQoZSx0KXtyZXR1cm4gdGhpcy5lcnJvcn13aWR0aCgpe3JldHVybiB0aGlzLnNpemUud2lkdGh9aGVpZ2h0KCl7cmV0dXJuIHRoaXMuc2l6'@; put 'ZS5oZWlnaHR9c2ltcGxlUmFuZ2VWYWx1ZSgpe3JldHVybiB0aGlzLmVycm9yfX1jbGFzcyBtZ3tjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5mb3JtdWxhPWUsdGhpcy5jZWxsQWRkcmVzcz10LHRoaXMudmVyc2lvbj1yfWdldCB3aWR0aCgpe3JldHVybiAxfWdldCBoZWlnaHQoKXtyZXR1cm4g'@; put 'MX1zdGF0aWMgZnJvbUFzdChlLHQscixpKXtyZXR1cm4gci5pc1NjYWxhcigpP25ldyBqNihlLHQsaSk6bmV3ICRoKGUsdCxyLGkpfWdldEZvcm11bGEoZSl7cmV0dXJuIHRoaXMuZW5zdXJlUmVjZW50RGF0YShlKSx0aGlzLmZvcm11bGF9ZW5zdXJlUmVjZW50RGF0YShlKXtpZih0aGlzLnZl'@; put 'cnNpb24hPWUudmVyc2lvbigpKXtjb25zdFt0LHIsaV09ZS5hcHBseVRyYW5zZm9ybWF0aW9ucyh0aGlzLmZvcm11bGEsdGhpcy5jZWxsQWRkcmVzcyx0aGlzLnZlcnNpb24pO3RoaXMuZm9ybXVsYT10LHRoaXMuY2VsbEFkZHJlc3M9cix0aGlzLnZlcnNpb249aX19Z2V0QWRkcmVzcyhlKXty'@; put 'ZXR1cm4gdGhpcy5lbnN1cmVSZWNlbnREYXRhKGUpLHRoaXMuY2VsbEFkZHJlc3N9fWNsYXNzICRoIGV4dGVuZHMgbWd7Y29uc3RydWN0b3IoZSx0LHIsaT0wKXtzdXBlcihlLHQsaSksdGhpcy5hcnJheT1yLmlzUmVmP25ldyBYZ2UobmV3IFB0KHRuLlJFRixkci5Ob1NwYWNlRm9yQXJyYXlS'@; put 'ZXN1bHQpLHlsLmVycm9yKCkpOm5ldyBsUChyKX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy5hcnJheS53aWR0aCgpfWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy5hcnJheS5oZWlnaHQoKX1nZXQgc2hlZXQoKXtyZXR1cm4gdGhpcy5jZWxsQWRkcmVzcy5zaGVldH1nZXQgbGVmdENvcm5lcigp'@; put 'e3JldHVybiB0aGlzLmNlbGxBZGRyZXNzfXNldENlbGxWYWx1ZShlKXtpZihlIGluc3RhbmNlb2YgUHQpcmV0dXJuIHRoaXMuc2V0RXJyb3JWYWx1ZShlKSxlO2NvbnN0IHQ9bkEuZnJvbUludGVycHJldGVyVmFsdWUoZSk7cmV0dXJuIHQucmVzaXplKHRoaXMuYXJyYXkuc2l6ZSksdGhpcy5h'@; put 'cnJheT10LGV9Z2V0Q2VsbFZhbHVlKCl7aWYodGhpcy5hcnJheSBpbnN0YW5jZW9mIGxQKXRocm93IEVycm9yKCJBcnJheSBub3QgY29tcHV0ZWQgeWV0LiIpO3JldHVybiB0aGlzLmFycmF5LnNpbXBsZVJhbmdlVmFsdWUoKX12YWx1ZU9yVW5kZWYoKXtpZighKHRoaXMuYXJyYXkgaW5zdGFu'@; put 'Y2VvZiBsUCkpcmV0dXJuIHRoaXMuYXJyYXkuc2ltcGxlUmFuZ2VWYWx1ZSgpfWdldEFycmF5Q2VsbFZhbHVlKGUpe2NvbnN0IHQ9ZS5jb2wtdGhpcy5jZWxsQWRkcmVzcy5jb2wscj1lLnJvdy10aGlzLmNlbGxBZGRyZXNzLnJvdzt0cnl7cmV0dXJuIHRoaXMuYXJyYXkuZ2V0KHQscil9Y2F0'@; put 'Y2h7cmV0dXJuIG5ldyBQdCh0bi5SRUYpfX1nZXRBcnJheUNlbGxSYXdWYWx1ZShlKXtjb25zdCB0PXRoaXMuZ2V0QXJyYXlDZWxsVmFsdWUoZSk7aWYoISh0IGluc3RhbmNlb2YgUHR8fHQ9PT1sbCkpcmV0dXJuIExvKHQpfXNldEFycmF5Q2VsbFZhbHVlKGUsdCl7dGhpcy5hcnJheSBpbnN0'@; put 'YW5jZW9mIG5BJiZ0aGlzLmFycmF5LnNldChlLmNvbC10aGlzLmNlbGxBZGRyZXNzLmNvbCxlLnJvdy10aGlzLmNlbGxBZGRyZXNzLnJvdyx0KX1zZXROb1NwYWNlKCl7cmV0dXJuIHRoaXMuYXJyYXk9bmV3IFhnZShuZXcgUHQodG4uU1BJTEwsZHIuTm9TcGFjZUZvckFycmF5UmVzdWx0KSx5'@; put 'bC5lcnJvcigpKSx0aGlzLmdldENlbGxWYWx1ZSgpfWdldFJhbmdlKCl7cmV0dXJuIGJhLnNwYW5Gcm9tKHRoaXMuY2VsbEFkZHJlc3MsdGhpcy53aWR0aCx0aGlzLmhlaWdodCl9Z2V0UmFuZ2VPclVuZGVmKCl7cmV0dXJuIGJhLnNwYW5Gcm9tT3JVbmRlZih0aGlzLmNlbGxBZGRyZXNzLHRo'@; put 'aXMud2lkdGgsdGhpcy5oZWlnaHQpfXNldEFkZHJlc3MoZSl7dGhpcy5jZWxsQWRkcmVzcz1lfXNldEZvcm11bGEoZSl7dGhpcy5mb3JtdWxhPWV9c3BhbnNUaHJvdWdoU2hlZXRSb3dzKGUsdCxyPXQpe3JldHVybiB0aGlzLmNlbGxBZGRyZXNzLnNoZWV0PT09ZSYmdGhpcy5jZWxsQWRkcmVz'@; put 'cy5yb3c8PXImJnQ8dGhpcy5jZWxsQWRkcmVzcy5yb3crdGhpcy5oZWlnaHR9c3BhbnNUaHJvdWdoU2hlZXRDb2x1bW4oZSx0LHI9dCl7cmV0dXJuIHRoaXMuY2VsbEFkZHJlc3Muc2hlZXQ9PT1lJiZ0aGlzLmNlbGxBZGRyZXNzLmNvbDw9ciYmdDx0aGlzLmNlbGxBZGRyZXNzLmNvbCt0aGlz'@; put 'LndpZHRofWlzQ29tcHV0ZWQoKXtyZXR1cm4hKHRoaXMuYXJyYXkgaW5zdGFuY2VvZiBsUCl9Y29sdW1uc0Zyb21BcnJheSgpe3JldHVybiBnZy5mcm9tTnVtYmVyT2ZDb2x1bW5zKHRoaXMuY2VsbEFkZHJlc3Muc2hlZXQsdGhpcy5jZWxsQWRkcmVzcy5jb2wsdGhpcy53aWR0aCl9cm93c0Zy'@; put 'b21BcnJheSgpe3JldHVybiB0cC5mcm9tTnVtYmVyT2ZSb3dzKHRoaXMuY2VsbEFkZHJlc3Muc2hlZXQsdGhpcy5jZWxsQWRkcmVzcy5yb3csdGhpcy5oZWlnaHQpfWVuc3VyZVJlY2VudERhdGEoZSl7fWlzTGVmdENvcm5lcihlKXtyZXR1cm4gdVAodGhpcy5jZWxsQWRkcmVzcyxlKX1zZXRF'@; put 'cnJvclZhbHVlKGUpe3RoaXMuYXJyYXk9bmV3IFhnZShlLHRoaXMuYXJyYXkuc2l6ZSl9fWNsYXNzIGo2IGV4dGVuZHMgbWd7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKGUsdCxyKX12YWx1ZU9yVW5kZWYoKXtyZXR1cm4gdGhpcy5jYWNoZWRDZWxsVmFsdWV9c2V0Q2VsbFZhbHVlKGUpe3Jl'@; put 'dHVybiB0aGlzLmNhY2hlZENlbGxWYWx1ZT1lLHRoaXMuY2FjaGVkQ2VsbFZhbHVlfWdldENlbGxWYWx1ZSgpe2lmKHZvaWQgMCE9PXRoaXMuY2FjaGVkQ2VsbFZhbHVlKXJldHVybiB0aGlzLmNhY2hlZENlbGxWYWx1ZTt0aHJvdyBFcnJvcigiVmFsdWUgb2YgdGhlIGZvcm11bGEgY2VsbCBp'@; put 'cyBub3QgY29tcHV0ZWQuIil9aXNDb21wdXRlZCgpe3JldHVybiB2b2lkIDAhPT10aGlzLmNhY2hlZENlbGxWYWx1ZX19Y2xhc3MgY2Z7Y29uc3RydWN0b3IoZSl7dGhpcy5yYW5nZT1lLHRoaXMuZnVuY3Rpb25DYWNoZT1uZXcgTWFwLHRoaXMuY3JpdGVyaW9uRnVuY3Rpb25DYWNoZT1uZXcg'@; put 'TWFwLHRoaXMuZGVwZW5kZW50Q2FjaGVSYW5nZXM9bmV3IFNldCx0aGlzLmJydXRlRm9yY2U9ITF9Z2V0IHN0YXJ0KCl7cmV0dXJuIHRoaXMucmFuZ2Uuc3RhcnR9Z2V0IGVuZCgpe3JldHVybiB0aGlzLnJhbmdlLmVuZH1nZXQgc2hlZXQoKXtyZXR1cm4gdGhpcy5yYW5nZS5zdGFydC5zaGVl'@; put 'dH1nZXRGdW5jdGlvblZhbHVlKGUpe3JldHVybiB0aGlzLmZ1bmN0aW9uQ2FjaGUuZ2V0KGUpfXNldEZ1bmN0aW9uVmFsdWUoZSx0KXt0aGlzLmZ1bmN0aW9uQ2FjaGUuc2V0KGUsdCl9Z2V0Q3JpdGVyaW9uRnVuY3Rpb25WYWx1ZShlLHQpe3ZhciByO3JldHVybiBudWxsPT09KHI9dGhpcy5n'@; put 'ZXRDcml0ZXJpb25GdW5jdGlvblZhbHVlcyhlKS5nZXQodCkpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyWzBdfWdldENyaXRlcmlvbkZ1bmN0aW9uVmFsdWVzKGUpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9dGhpcy5jcml0ZXJpb25GdW5jdGlvbkNhY2hlLmdldChlKSkmJnZvaWQgMCE9PXQ/dDpu'@; put 'ZXcgTWFwfXNldENyaXRlcmlvbkZ1bmN0aW9uVmFsdWVzKGUsdCl7dGhpcy5jcml0ZXJpb25GdW5jdGlvbkNhY2hlLnNldChlLHQpfWFkZERlcGVuZGVudENhY2hlUmFuZ2UoZSl7ZSE9PXRoaXMmJnRoaXMuZGVwZW5kZW50Q2FjaGVSYW5nZXMuYWRkKGUpfWNsZWFyQ2FjaGUoKXt0aGlzLmZ1'@; put 'bmN0aW9uQ2FjaGUuY2xlYXIoKSx0aGlzLmNyaXRlcmlvbkZ1bmN0aW9uQ2FjaGUuY2xlYXIoKSx0aGlzLmRlcGVuZGVudENhY2hlUmFuZ2VzLmZvckVhY2goZT0+ZS5jcml0ZXJpb25GdW5jdGlvbkNhY2hlLmNsZWFyKCkpLHRoaXMuZGVwZW5kZW50Q2FjaGVSYW5nZXMuY2xlYXIoKX1nZXRT'@; put 'dGFydCgpe3JldHVybiB0aGlzLnN0YXJ0fWdldEVuZCgpe3JldHVybiB0aGlzLmVuZH19Y29uc3QgTkp0PShuLGUsdCxyLGkpPT57aWYoZSBpbnN0YW5jZW9mIGNmKXtjb25zdCBsPWUucmFuZ2UuaW50ZXJzZWN0aW9uV2l0aCh0KTtyZXR1cm4gdm9pZCAwIT09bD9BcnJheS5mcm9tKGwuYWRk'@; put 'cmVzc2VzKGkpKTpbXX1sZXQgbyxhO3JldHVybiBlIGluc3RhbmNlb2YgbWc/KG89ZS5nZXRGb3JtdWxhKHIpLGE9ZS5nZXRBZGRyZXNzKHIpLGtxKG8sbikuZmlsdGVyKGw9PmwgaW5zdGFuY2VvZiBlV2UpLm1hcChsPT5sLmRlcGVuZGVuY3kudG9TaW1wbGVDZWxsQWRkcmVzcyhhKSkuZmls'@; put 'dGVyKGw9PnQuYWRkcmVzc0luUmFuZ2UobCkpKTpbXX07dmFyIEtfPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uT05fU1RBQ0s9MF09Ik9OX1NUQUNLIixuW24uUFJPQ0VTU0VEPTFdPSJQUk9DRVNTRUQiLG5bbi5QT1BQRUQ9Ml09IlBPUFBFRCIsbn0oS198fHt9KTtjbGFzcyBGSnR7Y29uc3Ry'@; put 'dWN0b3IoZT1bXSx0PVtdKXt0aGlzLm5vZGVzU3BhcnNlQXJyYXk9ZSx0aGlzLmVkZ2VzU3BhcnNlQXJyYXk9dCx0aGlzLmVudHJhbmNlVGltZT1bXSx0aGlzLmxvdz1bXSx0aGlzLnBhcmVudD1bXSx0aGlzLmluU0NDPVtdLHRoaXMubm9kZVN0YXR1cz1bXSx0aGlzLm9yZGVyPVtdLHRoaXMu'@; put 'c2NjTm9uU2luZ2xldG9ucz1bXSx0aGlzLnRpbWVDb3VudGVyPTB9Z2V0VG9wU29ydGVkV2l0aFNjY1N1YmdyYXBoRnJvbShlLHQscil7Y29uc3QgaT1lLnJldmVyc2UoKTtyZXR1cm4gaS5mb3JFYWNoKG89PnRoaXMucnVuREZTKG8pKSx0aGlzLnBvc3Rwcm9jZXNzKGkscix0KX1nZXRBZGph'@; put 'Y2VudE5vZGVJZHMoZSl7cmV0dXJuIHRoaXMuZWRnZXNTcGFyc2VBcnJheVtlXS5maWx0ZXIodD0+dm9pZCAwIT09dCYmdGhpcy5ub2Rlc1NwYXJzZUFycmF5W3RdKX1ydW5ERlMoZSl7aWYodm9pZCAwIT09dGhpcy5ub2RlU3RhdHVzW2VdKXJldHVybjt0aGlzLm5vZGVTdGF0dXNbZV09S18u'@; put 'T05fU1RBQ0s7Y29uc3QgdD1bZV0scj1bXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBpPXRbdC5sZW5ndGgtMV07c3dpdGNoKHRoaXMubm9kZVN0YXR1c1tpXSl7Y2FzZSBLXy5PTl9TVEFDSzp0aGlzLmhhbmRsZU9uU3RhY2soaSxyLHQpO2JyZWFrO2Nhc2UgS18uUFJPQ0VTU0VEOnRoaXMu'@; put 'aGFuZGxlUHJvY2Vzc2VkKGkscix0KTticmVhaztjYXNlIEtfLlBPUFBFRDp0LnBvcCgpfX19aGFuZGxlT25TdGFjayhlLHQscil7dGhpcy5lbnRyYW5jZVRpbWVbZV09dGhpcy50aW1lQ291bnRlcix0aGlzLmxvd1tlXT10aGlzLnRpbWVDb3VudGVyLHRoaXMudGltZUNvdW50ZXIrKyx0LnB1'@; put 'c2goZSksdGhpcy5nZXRBZGphY2VudE5vZGVJZHMoZSkuZm9yRWFjaChpPT57dm9pZCAwPT09dGhpcy5lbnRyYW5jZVRpbWVbaV0mJihyLnB1c2goaSksdGhpcy5wYXJlbnRbaV09ZSx0aGlzLm5vZGVTdGF0dXNbaV09S18uT05fU1RBQ0spfSksdGhpcy5ub2RlU3RhdHVzW2VdPUtfLlBST0NF'@; put 'U1NFRH1oYW5kbGVQcm9jZXNzZWQoZSx0LHIpe2xldCBpPXRoaXMuZW50cmFuY2VUaW1lW2VdO2lmKHRoaXMuZ2V0QWRqYWNlbnROb2RlSWRzKGUpLmZvckVhY2gobz0+e3RoaXMuaW5TQ0Nbb118fChpPXRoaXMucGFyZW50W29dPT09ZT9NYXRoLm1pbihpLHRoaXMubG93W29dKTpNYXRoLm1p'@; put 'bihpLHRoaXMuZW50cmFuY2VUaW1lW29dKSl9KSx0aGlzLmxvd1tlXT1pLGk9PT10aGlzLmVudHJhbmNlVGltZVtlXSl7Y29uc3Qgbz1bXTtkb3tvLnB1c2godFt0Lmxlbmd0aC0xXSksdC5wb3AoKX13aGlsZShvW28ubGVuZ3RoLTFdIT09ZSk7by5mb3JFYWNoKGE9Pnt0aGlzLmluU0NDW2Fd'@; put 'PSEwfSksdGhpcy5vcmRlci5wdXNoKC4uLm8pLG8ubGVuZ3RoPjEmJm8uZm9yRWFjaChhPT57dGhpcy5zY2NOb25TaW5nbGV0b25zW2FdPSEwfSl9ci5wb3AoKSx0aGlzLm5vZGVTdGF0dXNbZV09S18uUE9QUEVEfXBvc3Rwcm9jZXNzKGUsdCxyKXtjb25zdCBpPVtdO2UuZm9yRWFjaChsPT57'@; put 'aVtsXT0hMH0pO2NvbnN0IG89W10sYT1bXTtyZXR1cm4gdGhpcy5vcmRlci5yZXZlcnNlKCksdGhpcy5vcmRlci5mb3JFYWNoKGw9Pntjb25zdCB1PXRoaXMuZ2V0QWRqYWNlbnROb2RlSWRzKGwpO3RoaXMuc2NjTm9uU2luZ2xldG9uc1tsXXx8dS5pbmNsdWRlcyhsKT8oYS5wdXNoKHRoaXMu'@; put 'bm9kZXNTcGFyc2VBcnJheVtsXSksdCh0aGlzLm5vZGVzU3BhcnNlQXJyYXlbbF0pLHUuZm9yRWFjaChnPT5pW2ddPSEwKSk6KG8ucHVzaCh0aGlzLm5vZGVzU3BhcnNlQXJyYXlbbF0pLGlbbF0mJnIodGhpcy5ub2Rlc1NwYXJzZUFycmF5W2xdKSYmdS5mb3JFYWNoKGc9PmlbZ109ITApKX0p'@; put 'LHtzb3J0ZWQ6byxjeWNsZWQ6YX19fWNsYXNzIFBKdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucmF3VmFsdWU9ZSx0aGlzLnByb2Nlc3NGbj10LHRoaXMucHJvY2Vzc2VkVmFsdWU9bnVsbH1nZXRQcm9jZXNzZWRWYWx1ZSgpe3JldHVybiBudWxsPT09dGhpcy5wcm9jZXNzZWRWYWx1ZSYmKHRo'@; put 'aXMucHJvY2Vzc2VkVmFsdWU9dGhpcy5wcm9jZXNzRm4odGhpcy5yYXdWYWx1ZSkpLHRoaXMucHJvY2Vzc2VkVmFsdWV9bWFya0FzTW9kaWZpZWQoKXt0aGlzLnByb2Nlc3NlZFZhbHVlPW51bGx9fWNsYXNzIEhKdHtjb25zdHJ1Y3RvcihlKXt0aGlzLmRlcGVuZGVuY3lRdWVyeT1lLHRoaXMu'@; put 'bm9kZXNTcGFyc2VBcnJheT1bXSx0aGlzLmVkZ2VzU3BhcnNlQXJyYXk9W10sdGhpcy5ub2Rlc0lkcz1uZXcgTWFwLHRoaXMuZGlydHlBbmRWb2xhdGlsZU5vZGVJZHM9bmV3IFBKdCh7ZGlydHk6W10sdm9sYXRpbGU6W119LHQ9PnRoaXMucHJvY2Vzc0RpcnR5QW5kVm9sYXRpbGVOb2RlSWRz'@; put 'KHQpKSx0aGlzLmluZmluaXRlUmFuZ2VJZHM9bmV3IFNldCx0aGlzLmNoYW5naW5nV2l0aFN0cnVjdHVyZU5vZGVJZHM9W10sdGhpcy5uZXh0SWQ9MH1nZXROb2Rlcygpe3JldHVybiB0aGlzLm5vZGVzU3BhcnNlQXJyYXkuZmlsdGVyKGU9PnZvaWQgMCE9PWUpfWhhc05vZGUoZSl7cmV0dXJu'@; put 'IHRoaXMubm9kZXNJZHMuaGFzKGUpfWV4aXN0c0VkZ2UoZSx0KXtjb25zdCByPXRoaXMuZ2V0Tm9kZUlkKGUpLGk9dGhpcy5nZXROb2RlSWQodCk7cmV0dXJuIHZvaWQgMCE9PXImJnZvaWQgMCE9PWkmJnRoaXMuZWRnZXNTcGFyc2VBcnJheVtyXS5pbmNsdWRlcyhpKX1hZGphY2VudE5vZGVz'@; put 'KGUpe2NvbnN0IHQ9dGhpcy5nZXROb2RlSWQoZSk7aWYodm9pZCAwPT09dCl0aHJvdyB0aGlzLm1pc3NpbmdOb2RlRXJyb3IoZSk7cmV0dXJuIG5ldyBTZXQodGhpcy5lZGdlc1NwYXJzZUFycmF5W3RdLmZpbHRlcihyPT52b2lkIDAhPT1yKS5tYXAocj0+dGhpcy5ub2Rlc1NwYXJzZUFycmF5'@; put 'W3JdKSl9YWRqYWNlbnROb2Rlc0NvdW50KGUpe2NvbnN0IHQ9dGhpcy5nZXROb2RlSWQoZSk7aWYodm9pZCAwPT09dCl0aHJvdyB0aGlzLm1pc3NpbmdOb2RlRXJyb3IoZSk7cmV0dXJuIHRoaXMuZml4RWRnZXNBcnJheUZvck5vZGUodCkubGVuZ3RofWFkZE5vZGVBbmRSZXR1cm5JZChlKXtj'@; put 'b25zdCB0PXRoaXMubm9kZXNJZHMuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQ7Y29uc3Qgcj10aGlzLm5leHRJZDtyZXR1cm4gdGhpcy5uZXh0SWQrKyx0aGlzLm5vZGVzU3BhcnNlQXJyYXlbcl09ZSx0aGlzLmVkZ2VzU3BhcnNlQXJyYXlbcl09W10sdGhpcy5ub2Rlc0lkcy5zZXQo'@; put 'ZSxyKSxyfWFkZEVkZ2UoZSx0KXtjb25zdCByPXRoaXMuZ2V0Tm9kZUlkSWZOb3ROdW1iZXIoZSksaT10aGlzLmdldE5vZGVJZElmTm90TnVtYmVyKHQpO2lmKHZvaWQgMD09PXIpdGhyb3cgdGhpcy5taXNzaW5nTm9kZUVycm9yKGUpO2lmKHZvaWQgMD09PWkpdGhyb3cgdGhpcy5taXNzaW5n'@; put 'Tm9kZUVycm9yKHQpO3RoaXMuZWRnZXNTcGFyc2VBcnJheVtyXS5pbmNsdWRlcyhpKXx8dGhpcy5lZGdlc1NwYXJzZUFycmF5W3JdLnB1c2goaSl9cmVtb3ZlTm9kZShlKXtjb25zdCB0PXRoaXMuZ2V0Tm9kZUlkKGUpO2lmKHZvaWQgMD09PXQpdGhyb3cgdGhpcy5taXNzaW5nTm9kZUVycm9y'@; put 'KGUpO3RoaXMuZWRnZXNTcGFyc2VBcnJheVt0XS5sZW5ndGg+MCYmKHRoaXMuZWRnZXNTcGFyc2VBcnJheVt0XS5mb3JFYWNoKGk9PnRoaXMuZGlydHlBbmRWb2xhdGlsZU5vZGVJZHMucmF3VmFsdWUuZGlydHkucHVzaChpKSksdGhpcy5kaXJ0eUFuZFZvbGF0aWxlTm9kZUlkcy5tYXJrQXNN'@; put 'b2RpZmllZCgpKTtjb25zdCByPXRoaXMucmVtb3ZlRGVwZW5kZW5jaWVzKGUpO3JldHVybiBkZWxldGUgdGhpcy5ub2Rlc1NwYXJzZUFycmF5W3RdLGRlbGV0ZSB0aGlzLmVkZ2VzU3BhcnNlQXJyYXlbdF0sdGhpcy5pbmZpbml0ZVJhbmdlSWRzLmRlbGV0ZSh0KSx0aGlzLm5vZGVzSWRzLmRl'@; put 'bGV0ZShlKSxyfXJlbW92ZUVkZ2UoZSx0KXtjb25zdCByPXRoaXMuZ2V0Tm9kZUlkSWZOb3ROdW1iZXIoZSksaT10aGlzLmdldE5vZGVJZElmTm90TnVtYmVyKHQpO2lmKHZvaWQgMD09PXIpdGhyb3cgdGhpcy5taXNzaW5nTm9kZUVycm9yKGUpO2lmKHZvaWQgMD09PWkpdGhyb3cgdGhpcy5t'@; put 'aXNzaW5nTm9kZUVycm9yKHQpO2NvbnN0IG89dGhpcy5lZGdlc1NwYXJzZUFycmF5W3JdLmluZGV4T2YoaSk7aWYoLTE9PT1vKXRocm93IG5ldyBFcnJvcigiRWRnZSBkb2VzIG5vdCBleGlzdCIpO2RlbGV0ZSB0aGlzLmVkZ2VzU3BhcnNlQXJyYXlbcl1bb119cmVtb3ZlRWRnZUlmRXhpc3Rz'@; put 'KGUsdCl7Y29uc3Qgcj10aGlzLmdldE5vZGVJZChlKSxpPXRoaXMuZ2V0Tm9kZUlkKHQpO2lmKHZvaWQgMD09PXJ8fHZvaWQgMD09PWkpcmV0dXJuO2NvbnN0IG89dGhpcy5lZGdlc1NwYXJzZUFycmF5W3JdLmluZGV4T2YoaSk7LTEhPT1vJiZkZWxldGUgdGhpcy5lZGdlc1NwYXJzZUFycmF5'@; put 'W3JdW29dfXRvcFNvcnRXaXRoU2NjKCl7cmV0dXJuIHRoaXMuZ2V0VG9wU29ydGVkV2l0aFNjY1N1YmdyYXBoRnJvbSh0aGlzLmdldE5vZGVzKCksKCk9PiEwLCgpPT57fSl9Z2V0VG9wU29ydGVkV2l0aFNjY1N1YmdyYXBoRnJvbShlLHQscil7Y29uc3QgaT1uZXcgRkp0KHRoaXMubm9kZXNT'@; put 'cGFyc2VBcnJheSx0aGlzLmVkZ2VzU3BhcnNlQXJyYXkpLG89ZS5tYXAoYT0+dGhpcy5nZXROb2RlSWQoYSkpLmZpbHRlcihhPT52b2lkIDAhPT1hKTtyZXR1cm4gaS5nZXRUb3BTb3J0ZWRXaXRoU2NjU3ViZ3JhcGhGcm9tKG8sdCxyKX1tYXJrTm9kZUFzVm9sYXRpbGUoZSl7Y29uc3QgdD10'@; put 'aGlzLmdldE5vZGVJZChlKTt2b2lkIDAhPT10JiYodGhpcy5kaXJ0eUFuZFZvbGF0aWxlTm9kZUlkcy5yYXdWYWx1ZS52b2xhdGlsZS5wdXNoKHQpLHRoaXMuZGlydHlBbmRWb2xhdGlsZU5vZGVJZHMubWFya0FzTW9kaWZpZWQoKSl9bWFya05vZGVBc0RpcnR5KGUpe2NvbnN0IHQ9dGhpcy5n'@; put 'ZXROb2RlSWQoZSk7dm9pZCAwIT09dCYmKHRoaXMuZGlydHlBbmRWb2xhdGlsZU5vZGVJZHMucmF3VmFsdWUuZGlydHkucHVzaCh0KSx0aGlzLmRpcnR5QW5kVm9sYXRpbGVOb2RlSWRzLm1hcmtBc01vZGlmaWVkKCkpfWdldERpcnR5QW5kVm9sYXRpbGVOb2Rlcygpe3JldHVybiB0aGlzLmRp'@; put 'cnR5QW5kVm9sYXRpbGVOb2RlSWRzLmdldFByb2Nlc3NlZFZhbHVlKCl9Y2xlYXJEaXJ0eU5vZGVzKCl7dGhpcy5kaXJ0eUFuZFZvbGF0aWxlTm9kZUlkcy5yYXdWYWx1ZS5kaXJ0eT1bXSx0aGlzLmRpcnR5QW5kVm9sYXRpbGVOb2RlSWRzLm1hcmtBc01vZGlmaWVkKCl9bWFya05vZGVBc0No'@; put 'YW5naW5nV2l0aFN0cnVjdHVyZShlKXtjb25zdCB0PXRoaXMuZ2V0Tm9kZUlkKGUpO3ZvaWQgMCE9PXQmJnRoaXMuY2hhbmdpbmdXaXRoU3RydWN0dXJlTm9kZUlkcy5wdXNoKHQpfW1hcmtDaGFuZ2luZ1dpdGhTdHJ1Y3R1cmVOb2Rlc0FzRGlydHkoKXt0aGlzLmNoYW5naW5nV2l0aFN0cnVj'@; put 'dHVyZU5vZGVJZHMubGVuZ3RoPD0wfHwodGhpcy5kaXJ0eUFuZFZvbGF0aWxlTm9kZUlkcy5yYXdWYWx1ZS5kaXJ0eT1bLi4udGhpcy5kaXJ0eUFuZFZvbGF0aWxlTm9kZUlkcy5yYXdWYWx1ZS5kaXJ0eSwuLi50aGlzLmNoYW5naW5nV2l0aFN0cnVjdHVyZU5vZGVJZHNdLHRoaXMuZGlydHlB'@; put 'bmRWb2xhdGlsZU5vZGVJZHMubWFya0FzTW9kaWZpZWQoKSl9bWFya05vZGVBc0luZmluaXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLmdldE5vZGVJZElmTm90TnVtYmVyKGUpO3ZvaWQgMCE9PXQmJnRoaXMuaW5maW5pdGVSYW5nZUlkcy5hZGQodCl9Z2V0SW5maW5pdGVSYW5nZXMoKXtyZXR1'@; put 'cm5bLi4udGhpcy5pbmZpbml0ZVJhbmdlSWRzXS5tYXAoZT0+KHtub2RlOnRoaXMubm9kZXNTcGFyc2VBcnJheVtlXSxpZDplfSkpfWdldE5vZGVJZChlKXtyZXR1cm4gdGhpcy5ub2Rlc0lkcy5nZXQoZSl9Z2V0Tm9kZUlkSWZOb3ROdW1iZXIoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBl'@; put 'P2U6dGhpcy5ub2Rlc0lkcy5nZXQoZSl9Zml4RWRnZXNBcnJheUZvck5vZGUoZSl7cmV0dXJuIHRoaXMuZWRnZXNTcGFyc2VBcnJheVtlXT10aGlzLmVkZ2VzU3BhcnNlQXJyYXlbZV0uZmlsdGVyKHI9PnZvaWQgMCE9PXImJnRoaXMubm9kZXNTcGFyc2VBcnJheVtyXSksdGhpcy5lZGdlc1Nw'@; put 'YXJzZUFycmF5W2VdfXJlbW92ZURlcGVuZGVuY2llcyhlKXtjb25zdCB0PXRoaXMuZGVwZW5kZW5jeVF1ZXJ5KGUpO3JldHVybiB0LmZvckVhY2goKFtyLGldKT0+e3RoaXMucmVtb3ZlRWRnZUlmRXhpc3RzKGksZSl9KSx0fXByb2Nlc3NEaXJ0eUFuZFZvbGF0aWxlTm9kZUlkcyh7ZGlydHk6'@; put 'ZSx2b2xhdGlsZTp0fSl7cmV0dXJuWy4uLm5ldyBTZXQoWy4uLmUsLi4udF0pXS5tYXAocj0+dGhpcy5ub2Rlc1NwYXJzZUFycmF5W3JdKS5maWx0ZXIocj0+dm9pZCAwIT09cil9bWlzc2luZ05vZGVFcnJvcihlKXtyZXR1cm4gbmV3IEVycm9yKGBVbmtub3duIG5vZGUgJHtlfWApfX1jbGFz'@; put 'cyBWSnR7Y29uc3RydWN0b3IoKXt0aGlzLnJhbmdlTWFwcGluZz1uZXcgTWFwfWdldE1hcHBpbmdTaXplKGUpe3ZhciB0LHI7cmV0dXJuIG51bGwhPT0ocj1udWxsPT09KHQ9dGhpcy5yYW5nZU1hcHBpbmcuZ2V0KGUpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zaXplKSYmdm9pZCAwIT09cj9y'@; put 'OjB9c2V0UmFuZ2UoZSl7bGV0IHQ9dGhpcy5yYW5nZU1hcHBpbmcuZ2V0KGUuZ2V0U3RhcnQoKS5zaGVldCk7dm9pZCAwPT09dCYmKHQ9bmV3IE1hcCx0aGlzLnJhbmdlTWFwcGluZy5zZXQoZS5nZXRTdGFydCgpLnNoZWV0LHQpKTtjb25zdCByPU9xKGUuZ2V0U3RhcnQoKSxlLmdldEVuZCgp'@; put 'KTt0LnNldChyLGUpfXJlbW92ZVJhbmdlKGUpe2NvbnN0IHQ9ZS5nZXRTdGFydCgpLnNoZWV0LHI9dGhpcy5yYW5nZU1hcHBpbmcuZ2V0KHQpO2lmKHZvaWQgMD09PXIpcmV0dXJuO2NvbnN0IGk9T3EoZS5nZXRTdGFydCgpLGUuZ2V0RW5kKCkpO3IuZGVsZXRlKGkpLDA9PT1yLnNpemUmJnRo'@; put 'aXMucmFuZ2VNYXBwaW5nLmRlbGV0ZSh0KX1nZXRSYW5nZShlLHQpe2NvbnN0IHI9dGhpcy5yYW5nZU1hcHBpbmcuZ2V0KGUuc2hlZXQpLGk9T3EoZSx0KTtyZXR1cm4gcj8uZ2V0KGkpfWZldGNoUmFuZ2UoZSx0KXtjb25zdCByPXRoaXMuZ2V0UmFuZ2UoZSx0KTtpZighcil0aHJvdyBFcnJv'@; put 'cigiUmFuZ2UgZG9lcyBub3QgZXhpc3QiKTtyZXR1cm4gcn10cnVuY2F0ZVJhbmdlcyhlLHQpe2NvbnN0IHI9QXJyYXkoKSxpPUFycmF5KCksbz1BcnJheSgpLGE9ZS5zaGVldDtmb3IoY29uc3RbdSxnXW9mIHRoaXMuZW50cmllc0Zyb21TaGVldChlLnNoZWV0KSl7Y29uc3QgRT1nLnJhbmdl'@; put 'O2Uuc3RhcnQ8PXQoZy5yYW5nZS5lbmQpJiYoRS5yZW1vdmVTcGFuKGUpLEUuc2hvdWxkQmVSZW1vdmVkKCk/KHRoaXMucmVtb3ZlQnlLZXkoYSx1KSxyLnB1c2goZykpOmkucHVzaChbdSxnXSksby5wdXNoKGcpKX1jb25zdCBsPVtdO2kuc29ydCgodSxnKT0+akp0KHVbMV0sZ1sxXSx0KSk7'@; put 'Zm9yKGNvbnN0W3UsZ11vZiBpKXtjb25zdCBFPUJKdChnLnJhbmdlKTtpZihFPT09dSljb250aW51ZTtjb25zdCBPPXRoaXMuZ2V0QnlLZXkoYSxFKTt0aGlzLnJlbW92ZUJ5S2V5KGEsdSksdm9pZCAwIT09TyYmZyE9Tz9sLnB1c2goW08sZ10pOnRoaXMuc2V0UmFuZ2UoZyl9cmV0dXJue3Zl'@; put 'cnRpY2VzVG9SZW1vdmU6cix2ZXJ0aWNlc1RvTWVyZ2U6bCx2ZXJ0aWNlc1dpdGhDaGFuZ2VkU2l6ZTpvfX1tb3ZlQWxsUmFuZ2VzSW5TaGVldEFmdGVyUm93QnlSb3dzKGUsdCxyKXtyZXR1cm4gdGhpcy51cGRhdGVWZXJ0aWNlc0Zyb21TaGVldChlLChpLG8pPT50PD1vLnN0YXJ0LnJvdz8o'@; put 'by5yYW5nZS5zaGlmdEJ5Um93cyhyKSx7Y2hhbmdlZFNpemU6ITEsdmVydGV4Om99KTp0Pm8uc3RhcnQucm93JiZ0PD1vLmVuZC5yb3c/KG8ucmFuZ2UuZXhwYW5kQnlSb3dzKHIpLHtjaGFuZ2VkU2l6ZTohMCx2ZXJ0ZXg6b30pOnZvaWQgMCl9bW92ZUFsbFJhbmdlc0luU2hlZXRBZnRlckNv'@; put 'bHVtbkJ5Q29sdW1ucyhlLHQscil7cmV0dXJuIHRoaXMudXBkYXRlVmVydGljZXNGcm9tU2hlZXQoZSwoaSxvKT0+dDw9by5zdGFydC5jb2w/KG8ucmFuZ2Uuc2hpZnRCeUNvbHVtbnMocikse2NoYW5nZWRTaXplOiExLHZlcnRleDpvfSk6dD5vLnN0YXJ0LmNvbCYmdDw9by5lbmQuY29sPyhv'@; put 'LnJhbmdlLmV4cGFuZEJ5Q29sdW1ucyhyKSx7Y2hhbmdlZFNpemU6ITAsdmVydGV4Om99KTp2b2lkIDApfW1vdmVSYW5nZXNJbnNpZGVTb3VyY2VSYW5nZShlLHQscixpKXt0aGlzLnVwZGF0ZVZlcnRpY2VzRnJvbVNoZWV0KGUuc2hlZXQsKG8sYSk9PntpZihlLmNvbnRhaW5zUmFuZ2UoYS5y'@; put 'YW5nZSkpcmV0dXJuIGEucmFuZ2Uuc2hpZnRCeUNvbHVtbnModCksYS5yYW5nZS5zaGlmdEJ5Um93cyhyKSxhLnJhbmdlLm1vdmVUb1NoZWV0KGkpLHtjaGFuZ2VkU2l6ZTohMSx2ZXJ0ZXg6YX19KX1yZW1vdmVSYW5nZXNJblNoZWV0KGUpe2lmKHRoaXMucmFuZ2VNYXBwaW5nLmhhcyhlKSl7'@; put 'Y29uc3QgdD10aGlzLnJhbmdlTWFwcGluZy5nZXQoZSkudmFsdWVzKCk7cmV0dXJuIHRoaXMucmFuZ2VNYXBwaW5nLmRlbGV0ZShlKSx0fXJldHVybltdW1N5bWJvbC5pdGVyYXRvcl0oKX0qcmFuZ2VzSW5TaGVldChlKXtjb25zdCB0PXRoaXMucmFuZ2VNYXBwaW5nLmdldChlKTt0JiYoeWll'@; put 'bGQqdC52YWx1ZXMoKSl9KnJhbmdlVmVydGljZXNDb250YWluZWRJblJhbmdlKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMucmFuZ2VzSW5TaGVldChlLnNoZWV0KSllLmNvbnRhaW5zUmFuZ2UodC5yYW5nZSkmJih5aWVsZCB0KX1maW5kU21hbGxlclJhbmdlKGUpe2lmKGUuaGVpZ2h0KCk+MSYm'@; put 'TnVtYmVyLmlzRmluaXRlKGUuaGVpZ2h0KCkpKXtjb25zdCB0PUJvKGUuZW5kLnNoZWV0LGUuZW5kLmNvbCxlLmVuZC5yb3ctMSkscj10aGlzLmdldFJhbmdlKGUuc3RhcnQsdCk7aWYodm9pZCAwIT09cilyZXR1cm57c21hbGxlclJhbmdlVmVydGV4OnIscmVzdFJhbmdlOmJhLmZyb21TaW1w'@; put 'bGVDZWxsQWRkcmVzc2VzKEJvKGUuc3RhcnQuc2hlZXQsZS5zdGFydC5jb2wsZS5lbmQucm93KSxlLmVuZCl9fXJldHVybntyZXN0UmFuZ2U6ZX19KmVudHJpZXNGcm9tU2hlZXQoZSl7Y29uc3QgdD10aGlzLnJhbmdlTWFwcGluZy5nZXQoZSk7dCYmKHlpZWxkKnQuZW50cmllcygpKX1yZW1v'@; put 'dmVCeUtleShlLHQpe3RoaXMucmFuZ2VNYXBwaW5nLmdldChlKS5kZWxldGUodCl9Z2V0QnlLZXkoZSx0KXt2YXIgcjtyZXR1cm4gbnVsbD09PShyPXRoaXMucmFuZ2VNYXBwaW5nLmdldChlKSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0KHQpfXVwZGF0ZVZlcnRpY2VzRnJvbVNoZWV0KGUs'@; put 'dCl7Y29uc3Qgcj1BcnJheSgpO2Zvcihjb25zdFtpLG9db2YgdGhpcy5lbnRyaWVzRnJvbVNoZWV0KGUpKXtjb25zdCBhPXQoaSxvKTt2b2lkIDAhPT1hJiYodGhpcy5yZW1vdmVCeUtleShlLGkpLHIucHVzaChhKSl9cmV0dXJuIHIuZm9yRWFjaChpPT57dGhpcy5zZXRSYW5nZShpLnZlcnRl'@; put 'eCl9KSx7dmVydGljZXNXaXRoQ2hhbmdlZFNpemU6ci5maWx0ZXIoaT0+aS5jaGFuZ2VkU2l6ZSkubWFwKGk9PmkudmVydGV4KX19fWZ1bmN0aW9uIE9xKG4sZSl7cmV0dXJuYCR7bi5jb2x9LCR7bi5yb3d9LCR7ZS5jb2x9LCR7ZS5yb3d9YH1mdW5jdGlvbiBCSnQobil7cmV0dXJuIE9xKG4u'@; put 'c3RhcnQsbi5lbmQpfWNvbnN0IGpKdD0obixlLHQpPT57Y29uc3Qgcj10KG4ucmFuZ2Uuc3RhcnQpLGk9dChuLnJhbmdlLnN0YXJ0KTtyZXR1cm4gcj09PWk/dChuLnJhbmdlLmVuZCktdChlLnJhbmdlLmVuZCk6ci1pfTtjbGFzcyBVSnR7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuZnVuY3Rp'@; put 'b25zPWUsdGhpcy5lcnJvcnM9dCx0aGlzLnVpPXIsdGhpcy5fcHJvdGVjdGVkVHJhbnNsYXRpb25zPXtWRVJTSU9OOiJWRVJTSU9OIn0sdGhpcy5jaGVja1VJKCksdGhpcy5jaGVja0Vycm9ycygpLHRoaXMuY2hlY2tGdW5jdGlvblRyYW5zbGF0aW9ucyh0aGlzLmZ1bmN0aW9ucyksT2JqZWN0'@; put 'LmFzc2lnbih0aGlzLmZ1bmN0aW9ucyx0aGlzLl9wcm90ZWN0ZWRUcmFuc2xhdGlvbnMpfWV4dGVuZEZ1bmN0aW9ucyhlKXt0aGlzLmNoZWNrRnVuY3Rpb25UcmFuc2xhdGlvbnMoZSksT2JqZWN0LmFzc2lnbih0aGlzLmZ1bmN0aW9ucyxlKX1idWlsZEZ1bmN0aW9uTWFwcGluZygpe3JldHVy'@; put 'biBPYmplY3Qua2V5cyh0aGlzLmZ1bmN0aW9ucykucmVkdWNlKChlLHQpPT4oZVt0aGlzLmZ1bmN0aW9uc1t0XV09dCxlKSx7fSl9YnVpbGRFcnJvck1hcHBpbmcoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5lcnJvcnMpLnJlZHVjZSgoZSx0KT0+KGVbdGhpcy5lcnJvcnNbdF1dPXQsZSks'@; put 'e30pfWlzRnVuY3Rpb25UcmFuc2xhdGVkKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLmZ1bmN0aW9uc1tlXX1nZXRGdW5jdGlvblRyYW5zbGF0aW9ucyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIGUpdGhpcy5pc0Z1bmN0aW9uVHJhbnNsYXRlZChyKSYmdC5wdXNoKHRoaXMuZnVuY3Rp'@; put 'b25zW3JdKTtyZXR1cm4gdH1nZXRGdW5jdGlvblRyYW5zbGF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5mdW5jdGlvbnNbZV07aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgb1AoYGZ1bmN0aW9ucy4ke2V9YCk7cmV0dXJuIHR9Z2V0TWF5YmVGdW5jdGlvblRyYW5zbGF0aW9uKGUpe3JldHVybiB0aGlz'@; put 'LmZ1bmN0aW9uc1tlXX1nZXRFcnJvclRyYW5zbGF0aW9uKGUpe2lmKGU9PT10bi5MSUMpcmV0dXJuYCMke3RuLkxJQ30hYDtjb25zdCB0PXRoaXMuZXJyb3JzW2VdO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IG9QKGBlcnJvcnMuJHtlfWApO3JldHVybiB0fWdldFVJVHJhbnNsYXRpb24oZSl7'@; put 'Y29uc3QgdD10aGlzLnVpW2VdO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IG9QKGB1aS4ke2V9YCk7cmV0dXJuIHR9Y2hlY2tVSSgpe2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoTnEpKWlmKCEoZSBpbiB0aGlzLnVpKSl0aHJvdyBuZXcgb1AoYHVpLiR7ZX1gKX1jaGVja0Vycm9ycygp'@; put 'e2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModG4pKWlmKCEoZSBpbiB0aGlzLmVycm9ycykmJmUhPT10bi5MSUMpdGhyb3cgbmV3IG9QKGBlcnJvcnMuJHtlfWApfWNoZWNrRnVuY3Rpb25UcmFuc2xhdGlvbnMoZSl7Y29uc3QgdD1uZXcgU2V0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h'@; put 'bWVzKGUpKTtmb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLl9wcm90ZWN0ZWRUcmFuc2xhdGlvbnMpKWlmKHQuaGFzKHIpKXRocm93IG5ldyBSSnQocil9fXZhciBOcT1mdW5jdGlvbihuKXtyZXR1cm4gbi5ORVdfU0hFRVRfUFJFRklYPSJORVdfU0hFRVRf'@; put 'UFJFRklYIixufShOcXx8e30pO2Z1bmN0aW9uIHJBKG4pe3JldHVybiBuLnRvTG93ZXJDYXNlKCl9Y2xhc3MgV0p0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pZD1lLHRoaXMuZGlzcGxheU5hbWU9dH1nZXQgY2Fub25pY2FsTmFtZSgpe3JldHVybiByQSh0aGlzLmRpc3BsYXlOYW1lKX19Y2xh'@; put 'c3MgWUp0e2NvbnN0cnVjdG9yKGUpe3RoaXMubGFuZ3VhZ2VzPWUsdGhpcy5tYXBwaW5nRnJvbUNhbm9uaWNhbE5hbWU9bmV3IE1hcCx0aGlzLm1hcHBpbmdGcm9tSWQ9bmV3IE1hcCx0aGlzLmxhc3RTaGVldElkPS0xLHRoaXMuZmV0Y2g9dD0+e2NvbnN0IHI9dGhpcy5tYXBwaW5nRnJvbUNh'@; put 'bm9uaWNhbE5hbWUuZ2V0KHJBKHQpKTtpZih2b2lkIDA9PT1yKXRocm93IG5ldyBtSnQodCk7cmV0dXJuIHIuaWR9LHRoaXMuZ2V0PXQ9Pnt2YXIgcjtyZXR1cm4gbnVsbD09PShyPXRoaXMubWFwcGluZ0Zyb21DYW5vbmljYWxOYW1lLmdldChyQSh0KSkpfHx2b2lkIDA9PT1yP3ZvaWQgMDpy'@; put 'LmlkfSx0aGlzLmZldGNoRGlzcGxheU5hbWU9dD0+dGhpcy5mZXRjaFNoZWV0QnlJZCh0KS5kaXNwbGF5TmFtZSx0aGlzLnNoZWV0TmFtZVByZWZpeD1lLmdldFVJVHJhbnNsYXRpb24oTnEuTkVXX1NIRUVUX1BSRUZJWCl9YWRkU2hlZXQoZT1gJHt0aGlzLnNoZWV0TmFtZVByZWZpeH0ke3Ro'@; put 'aXMubGFzdFNoZWV0SWQrMn1gKXtjb25zdCB0PXJBKGUpO2lmKHRoaXMubWFwcGluZ0Zyb21DYW5vbmljYWxOYW1lLmhhcyh0KSl0aHJvdyBuZXcgRHEoZSk7dGhpcy5sYXN0U2hlZXRJZCsrO2NvbnN0IHI9bmV3IFdKdCh0aGlzLmxhc3RTaGVldElkLGUpO3JldHVybiB0aGlzLnN0b3JlKHIp'@; put 'LHIuaWR9cmVtb3ZlU2hlZXQoZSl7Y29uc3QgdD10aGlzLmZldGNoU2hlZXRCeUlkKGUpO2U9PXRoaXMubGFzdFNoZWV0SWQmJi0tdGhpcy5sYXN0U2hlZXRJZCx0aGlzLm1hcHBpbmdGcm9tQ2Fub25pY2FsTmFtZS5kZWxldGUodC5jYW5vbmljYWxOYW1lKSx0aGlzLm1hcHBpbmdGcm9tSWQu'@; put 'ZGVsZXRlKHQuaWQpfWdldERpc3BsYXlOYW1lKGUpe3ZhciB0O3JldHVybiBudWxsPT09KHQ9dGhpcy5tYXBwaW5nRnJvbUlkLmdldChlKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGlzcGxheU5hbWV9KmRpc3BsYXlOYW1lcygpe2Zvcihjb25zdCBlIG9mIHRoaXMubWFwcGluZ0Zyb21DYW5v'@; put 'bmljYWxOYW1lLnZhbHVlcygpKXlpZWxkIGUuZGlzcGxheU5hbWV9bnVtYmVyT2ZTaGVldHMoKXtyZXR1cm4gdGhpcy5tYXBwaW5nRnJvbUNhbm9uaWNhbE5hbWUuc2l6ZX1oYXNTaGVldFdpdGhJZChlKXtyZXR1cm4gdGhpcy5tYXBwaW5nRnJvbUlkLmhhcyhlKX1oYXNTaGVldFdpdGhOYW1l'@; put 'KGUpe3JldHVybiB0aGlzLm1hcHBpbmdGcm9tQ2Fub25pY2FsTmFtZS5oYXMockEoZSkpfXJlbmFtZVNoZWV0KGUsdCl7Y29uc3Qgcj10aGlzLmZldGNoU2hlZXRCeUlkKGUpLGk9ci5kaXNwbGF5TmFtZTtpZihpPT09dClyZXR1cm47Y29uc3Qgbz10aGlzLm1hcHBpbmdGcm9tQ2Fub25pY2Fs'@; put 'TmFtZS5nZXQockEodCkpO2lmKHZvaWQgMCE9PW8mJm8uaWQhPT1yLmlkKXRocm93IG5ldyBEcSh0KTtyZXR1cm4gdGhpcy5tYXBwaW5nRnJvbUNhbm9uaWNhbE5hbWUuZGVsZXRlKHIuY2Fub25pY2FsTmFtZSksci5kaXNwbGF5TmFtZT10LHRoaXMuc3RvcmUociksaX1zaGVldE5hbWVzKCl7'@; put 'cmV0dXJuIEFycmF5LmZyb20odGhpcy5tYXBwaW5nRnJvbUlkLnZhbHVlcygpKS5tYXAoZT0+ZS5kaXNwbGF5TmFtZSl9c3RvcmUoZSl7dGhpcy5tYXBwaW5nRnJvbUlkLnNldChlLmlkLGUpLHRoaXMubWFwcGluZ0Zyb21DYW5vbmljYWxOYW1lLnNldChlLmNhbm9uaWNhbE5hbWUsZSl9ZmV0'@; put 'Y2hTaGVldEJ5SWQoZSl7Y29uc3QgdD10aGlzLm1hcHBpbmdGcm9tSWQuZ2V0KGUpO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFNoKGUpO3JldHVybiB0fX1jbGFzcyBRZ2V7Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEsbCx1KXt0aGlzLmFkZHJlc3NNYXBwaW5nPWUsdGhpcy5yYW5nZU1hcHBp'@; put 'bmc9dCx0aGlzLnNoZWV0TWFwcGluZz1yLHRoaXMuYXJyYXlNYXBwaW5nPWksdGhpcy5zdGF0cz1vLHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZT1hLHRoaXMuZnVuY3Rpb25SZWdpc3RyeT1sLHRoaXMubmFtZWRFeHByZXNzaW9ucz11LHRoaXMuY2hhbmdlcz1xXy5lbXB0eSgp'@; put 'LHRoaXMuZGVwZW5kZW5jeVF1ZXJ5QWRkcmVzc2VzPWc9PntpZihnIGluc3RhbmNlb2YgY2YpcmV0dXJuIHRoaXMucmFuZ2VEZXBlbmRlbmN5UXVlcnkoZykubWFwKChbRSxPXSk9PkUpO3tjb25zdCBFPXRoaXMuZm9ybXVsYURlcGVuZGVuY3lRdWVyeShnKTtpZih2b2lkIDAhPT1FKXtjb25z'@; put 'dFtPLFpdPUU7cmV0dXJuIFoubWFwKGVlPT5lZSBpbnN0YW5jZW9mIGE5P3RoaXMubmFtZWRFeHByZXNzaW9ucy5uYW1lZEV4cHJlc3Npb25PclBsYWNlaG9sZGVyKGVlLm5hbWUsTy5zaGVldCkuYWRkcmVzczpFaChlZSk/ZWU6ZW1lKGVlLnN0YXJ0LGVlLmVuZCkpfXJldHVybltdfX0sdGhp'@; put 'cy5kZXBlbmRlbmN5UXVlcnlWZXJ0aWNlcz1nPT57aWYoZyBpbnN0YW5jZW9mIGNmKXJldHVybiB0aGlzLnJhbmdlRGVwZW5kZW5jeVF1ZXJ5KGcpO3tjb25zdCBFPXRoaXMuZm9ybXVsYURlcGVuZGVuY3lRdWVyeShnKTtpZih2b2lkIDAhPT1FKXtjb25zdFtPLFpdPUU7cmV0dXJuIFoubWFw'@; put 'KGVlPT57aWYoZWUgaW5zdGFuY2VvZiBiYSlyZXR1cm5bZWUuc3RhcnQsdGhpcy5yYW5nZU1hcHBpbmcuZmV0Y2hSYW5nZShlZS5zdGFydCxlZS5lbmQpXTtpZihlZSBpbnN0YW5jZW9mIGE5KXtjb25zdCB2ZT10aGlzLm5hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uT3JQbGFjZWhv'@; put 'bGRlcihlZS5uYW1lLE8uc2hlZXQpO3JldHVyblt2ZS5hZGRyZXNzLHRoaXMuYWRkcmVzc01hcHBpbmcuZmV0Y2hDZWxsKHZlLmFkZHJlc3MpXX1yZXR1cm5bZWUsdGhpcy5hZGRyZXNzTWFwcGluZy5mZXRjaENlbGwoZWUpXX0pfXJldHVybltdfX0sdGhpcy5yYW5nZURlcGVuZGVuY3lRdWVy'@; put 'eT1nPT57Y29uc3QgRT1bXSx7c21hbGxlclJhbmdlVmVydGV4Ok8scmVzdFJhbmdlOlp9PXRoaXMucmFuZ2VNYXBwaW5nLmZpbmRTbWFsbGVyUmFuZ2UoZy5yYW5nZSk7bGV0IGVlO3ZvaWQgMCE9PU8mJnRoaXMuZ3JhcGguYWRqYWNlbnROb2RlcyhPKS5oYXMoZyk/KGVlPVosRS5wdXNoKFtu'@; put 'ZXcgYmEoTy5zdGFydCxPLmVuZCksT10pKTplZT1nLnJhbmdlO2Zvcihjb25zdCB2ZSBvZiBlZS5hZGRyZXNzZXModGhpcykpe2NvbnN0IE1lPXRoaXMuYWRkcmVzc01hcHBpbmcuZ2V0Q2VsbCh2ZSk7dm9pZCAwIT09TWUmJkUucHVzaChbdmUsTWVdKX1yZXR1cm4gRX0sdGhpcy5mb3JtdWxh'@; put 'RGVwZW5kZW5jeVF1ZXJ5PWc9PntsZXQgRSxPO2lmKCEoZyBpbnN0YW5jZW9mIG1nKSlyZXR1cm47Tz1nLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSxFPWcuZ2V0Rm9ybXVsYSh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpO2NvbnN0IFo9'@; put 'a3EoRSx0aGlzLmZ1bmN0aW9uUmVnaXN0cnkpO3JldHVybltPLFY2KFosTyldfSx0aGlzLmdyYXBoPW5ldyBISnQodGhpcy5kZXBlbmRlbmN5UXVlcnlWZXJ0aWNlcyl9c3RhdGljIGJ1aWxkRW1wdHkoZSx0LHIsaSxvKXtyZXR1cm4gbmV3IFFnZShuZXcgTEp0KHQuY2hvb3NlQWRkcmVzc01h'@; put 'cHBpbmdQb2xpY3kpLG5ldyBWSnQsbmV3IFlKdCh0LnRyYW5zbGF0aW9uUGFja2FnZSksbmV3IE9KdCxvLGUscixpKX1zZXRGb3JtdWxhVG9DZWxsKGUsdCxyLGksbyxhKXtjb25zdCBsPW1nLmZyb21Bc3QodCxlLGksdGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlLnZlcnNpb24o'@; put 'KSk7cmV0dXJuIHRoaXMuZXhjaGFuZ2VPckFkZEZvcm11bGFWZXJ0ZXgobCksdGhpcy5wcm9jZXNzQ2VsbERlcGVuZGVuY2llcyhyLGwpLHRoaXMuZ3JhcGgubWFya05vZGVBc0RpcnR5KGwpLG8mJnRoaXMubWFya0FzVm9sYXRpbGUobCksYSYmdGhpcy5tYXJrQXNEZXBlbmRlbnRPblN0cnVj'@; put 'dHVyZUNoYW5nZShsKSx0aGlzLmNvcnJlY3RJbmZpbml0ZVJhbmdlc0RlcGVuZGVuY3koZSksdGhpcy5nZXRBbmRDbGVhckNvbnRlbnRDaGFuZ2VzKCl9c2V0UGFyc2luZ0Vycm9yVG9DZWxsKGUsdCl7Y29uc3Qgcj10aGlzLnNocmlua1Bvc3NpYmxlQXJyYXlBbmRHZXRDZWxsKGUpO3JldHVy'@; put 'biB0aGlzLmV4Y2hhbmdlT3JBZGRHcmFwaE5vZGUocix0KSx0aGlzLmFkZHJlc3NNYXBwaW5nLnNldENlbGwoZSx0KSx0aGlzLmdyYXBoLm1hcmtOb2RlQXNEaXJ0eSh0KSx0aGlzLmNvcnJlY3RJbmZpbml0ZVJhbmdlc0RlcGVuZGVuY3koZSksdGhpcy5nZXRBbmRDbGVhckNvbnRlbnRDaGFu'@; put 'Z2VzKCl9c2V0VmFsdWVUb0NlbGwoZSx0KXtjb25zdCByPXRoaXMuc2hyaW5rUG9zc2libGVBcnJheUFuZEdldENlbGwoZSk7aWYociBpbnN0YW5jZW9mICRoJiZ0aGlzLmFycmF5TWFwcGluZy5yZW1vdmVBcnJheShyLmdldFJhbmdlKCkpLHIgaW5zdGFuY2VvZiBRXylyLmdldFZhbHVlcygp'@; put 'LnJhd1ZhbHVlIT09dC5yYXdWYWx1ZSYmKHIuc2V0VmFsdWVzKHQpLHRoaXMuZ3JhcGgubWFya05vZGVBc0RpcnR5KHIpKTtlbHNle2NvbnN0IGk9bmV3IFFfKHQucGFyc2VkVmFsdWUsdC5yYXdWYWx1ZSk7dGhpcy5leGNoYW5nZU9yQWRkR3JhcGhOb2RlKHIsaSksdGhpcy5hZGRyZXNzTWFw'@; put 'cGluZy5zZXRDZWxsKGUsaSksdGhpcy5ncmFwaC5tYXJrTm9kZUFzRGlydHkoaSl9cmV0dXJuIHRoaXMuY29ycmVjdEluZmluaXRlUmFuZ2VzRGVwZW5kZW5jeShlKSx0aGlzLmdldEFuZENsZWFyQ29udGVudENoYW5nZXMoKX1zZXRDZWxsRW1wdHkoZSl7Y29uc3QgdD10aGlzLnNocmlua1Bv'@; put 'c3NpYmxlQXJyYXlBbmRHZXRDZWxsKGUpO2lmKHZvaWQgMD09PXQpcmV0dXJuIHFfLmVtcHR5KCk7aWYodGhpcy5ncmFwaC5hZGphY2VudE5vZGVzKHQpLnNpemU+MCl7Y29uc3Qgcj1uZXcgWF87dGhpcy5leGNoYW5nZUdyYXBoTm9kZSh0LHIpLDA9PT10aGlzLmdyYXBoLmFkamFjZW50Tm9k'@; put 'ZXNDb3VudChyKT8odGhpcy5yZW1vdmVWZXJ0ZXgociksdGhpcy5hZGRyZXNzTWFwcGluZy5yZW1vdmVDZWxsKGUpKToodGhpcy5ncmFwaC5tYXJrTm9kZUFzRGlydHkociksdGhpcy5hZGRyZXNzTWFwcGluZy5zZXRDZWxsKGUscikpfWVsc2UgdGhpcy5yZW1vdmVWZXJ0ZXgodCksdGhpcy5h'@; put 'ZGRyZXNzTWFwcGluZy5yZW1vdmVDZWxsKGUpO3JldHVybiB0aGlzLmdldEFuZENsZWFyQ29udGVudENoYW5nZXMoKX1jbGVhckRpcnR5VmVydGljZXMoKXt0aGlzLmdyYXBoLmNsZWFyRGlydHlOb2RlcygpfXZlcnRpY2VzVG9SZWNvbXB1dGUoKXtyZXR1cm4gdGhpcy5ncmFwaC5nZXREaXJ0'@; put 'eUFuZFZvbGF0aWxlTm9kZXMoKX1wcm9jZXNzQ2VsbERlcGVuZGVuY2llcyhlLHQpe2NvbnN0IHI9dGhpcy5ncmFwaC5nZXROb2RlSWQodCk7ZS5mb3JFYWNoKGk9PntpZihpIGluc3RhbmNlb2YgYmEpe2NvbnN0IG89aTtsZXQgYT10aGlzLmdldFJhbmdlKG8uc3RhcnQsby5lbmQpO3ZvaWQg'@; put 'MD09PWEmJihhPW5ldyBjZihvKSx0aGlzLnJhbmdlTWFwcGluZy5zZXRSYW5nZShhKSksdGhpcy5ncmFwaC5hZGROb2RlQW5kUmV0dXJuSWQoYSk7Y29uc3QgbD10aGlzLmdyYXBoLmdldE5vZGVJZChhKTtvLmlzRmluaXRlKCl8fHRoaXMuZ3JhcGgubWFya05vZGVBc0luZmluaXRlUmFuZ2Uo'@; put 'bCk7Y29uc3R7c21hbGxlclJhbmdlVmVydGV4OnUscmVzdFJhbmdlOmd9PXRoaXMucmFuZ2VNYXBwaW5nLmZpbmRTbWFsbGVyUmFuZ2Uobyk7aWYodm9pZCAwIT09dSl7aWYodGhpcy5ncmFwaC5hZGRFZGdlKHUsbCksYS5icnV0ZUZvcmNlKXthLmJydXRlRm9yY2U9ITE7Zm9yKGNvbnN0IE8g'@; put 'b2Ygby5hZGRyZXNzZXModGhpcykpdGhpcy5ncmFwaC5yZW1vdmVFZGdlKHRoaXMuZmV0Y2hDZWxsKE8pLGwpfX1lbHNlIGEuYnJ1dGVGb3JjZT0hMDtjb25zdCBFPXRoaXMuYXJyYXlNYXBwaW5nLmdldEFycmF5KGcpO2lmKHZvaWQgMCE9PUUpdGhpcy5ncmFwaC5hZGRFZGdlKEUsbCk7ZWxz'@; put 'ZSBmb3IoY29uc3QgTyBvZiBnLmFkZHJlc3Nlcyh0aGlzKSl7Y29uc3R7dmVydGV4OlosaWQ6ZWV9PXRoaXMuZmV0Y2hDZWxsT3JDcmVhdGVFbXB0eShPKTt0aGlzLmdyYXBoLmFkZEVkZ2UoZWU/P1osbCl9dGhpcy5ncmFwaC5hZGRFZGdlKGwsciksby5pc0Zpbml0ZSgpJiZ0aGlzLmNvcnJl'@; put 'Y3RJbmZpbml0ZVJhbmdlc0RlcGVuZGVuY2llc0J5UmFuZ2VWZXJ0ZXgoYSl9ZWxzZSBpZihpIGluc3RhbmNlb2YgYTkpe2NvbnN0IG89dC5nZXRBZGRyZXNzKHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSkuc2hlZXQse3ZlcnRleDphLGlkOmx9PXRoaXMuZmV0Y2hOYW1lZEV4'@; put 'cHJlc3Npb25WZXJ0ZXgoaS5uYW1lLG8pO3RoaXMuZ3JhcGguYWRkRWRnZShsPz9hLHIpfWVsc2V7Y29uc3R7dmVydGV4Om8saWQ6YX09dGhpcy5mZXRjaENlbGxPckNyZWF0ZUVtcHR5KGkpO3RoaXMuZ3JhcGguYWRkRWRnZShhPz9vLHIpfX0pfWZldGNoTmFtZWRFeHByZXNzaW9uVmVydGV4'@; put 'KGUsdCl7Y29uc3Qgcj10aGlzLm5hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uT3JQbGFjZWhvbGRlcihlLHQpO3JldHVybiB0aGlzLmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHkoci5hZGRyZXNzKX1leGNoYW5nZU5vZGUoZSx0KXtjb25zdCByPXRoaXMuZmV0Y2hDZWxsT3JDcmVhdGVF'@; put 'bXB0eShlKS52ZXJ0ZXgsaT10aGlzLmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHkodCkudmVydGV4O3RoaXMuYWRkcmVzc01hcHBpbmcucmVtb3ZlQ2VsbChlKSx0aGlzLmV4Y2hhbmdlR3JhcGhOb2RlKHIsaSl9ZmV0Y2hDZWxsT3JDcmVhdGVFbXB0eShlKXtjb25zdCB0PXRoaXMuYWRkcmVzc01h'@; put 'cHBpbmcuZ2V0Q2VsbChlKTtpZih2b2lkIDAhPT10KXJldHVybnt2ZXJ0ZXg6dCxpZDp2b2lkIDB9O2NvbnN0IHI9bmV3IFhfLGk9dGhpcy5ncmFwaC5hZGROb2RlQW5kUmV0dXJuSWQocik7cmV0dXJuIHRoaXMuYWRkcmVzc01hcHBpbmcuc2V0Q2VsbChlLHIpLHt2ZXJ0ZXg6cixpZDppfX1y'@; put 'ZW1vdmVSb3dzKGUpe3RoaXMuc3RhdHMubWVhc3VyZShBcy5BREpVU1RJTkdfR1JBUEgsKCk9Pntmb3IoY29uc3RbcixpXW9mIHRoaXMuYWRkcmVzc01hcHBpbmcuZW50cmllc0Zyb21Sb3dzU3BhbihlKSl7Zm9yKGNvbnN0IG8gb2YgdGhpcy5ncmFwaC5hZGphY2VudE5vZGVzKGkpKXRoaXMu'@; put 'Z3JhcGgubWFya05vZGVBc0RpcnR5KG8pO2lmKGkgaW5zdGFuY2VvZiAkaCl7aWYoIWkuaXNMZWZ0Q29ybmVyKHIpKWNvbnRpbnVlO3RoaXMuc2hyaW5rQXJyYXlUb0Nvcm5lcihpKSx0aGlzLmFycmF5TWFwcGluZy5yZW1vdmVBcnJheShpLmdldFJhbmdlKCkpfXRoaXMucmVtb3ZlVmVydGV4'@; put 'KGkpfX0pLHRoaXMuc3RhdHMubWVhc3VyZShBcy5BREpVU1RJTkdfQUREUkVTU19NQVBQSU5HLCgpPT57dGhpcy5hZGRyZXNzTWFwcGluZy5yZW1vdmVSb3dzKGUpfSk7Y29uc3QgdD10aGlzLnN0YXRzLm1lYXN1cmUoQXMuQURKVVNUSU5HX1JBTkdFUywoKT0+e2NvbnN0IHI9dGhpcy50cnVu'@; put 'Y2F0ZVJhbmdlcyhlLGk9Pmkucm93KTtyZXR1cm4gdGhpcy5nZXRBcnJheVZlcnRpY2VzUmVsYXRlZFRvUmFuZ2VzKHIpfSk7cmV0dXJuIHRoaXMuc3RhdHMubWVhc3VyZShBcy5BREpVU1RJTkdfQVJSQVlfTUFQUElORywoKT0+e3RoaXMuZml4QXJyYXlzQWZ0ZXJSZW1vdmluZ1Jvd3MoZS5z'@; put 'aGVldCxlLnJvd1N0YXJ0LGUubnVtYmVyT2ZSb3dzKX0pLHRoaXMuYWRkU3RydWN0dXJhbE5vZGVzVG9DaGFuZ2VTZXQoKSx7YWZmZWN0ZWRBcnJheXM6dCxjb250ZW50Q2hhbmdlczp0aGlzLmdldEFuZENsZWFyQ29udGVudENoYW5nZXMoKX19cmVtb3ZlU2hlZXQoZSl7dGhpcy5jbGVhclNo'@; put 'ZWV0KGUpO2Zvcihjb25zdFt0LHJdb2YgdGhpcy5hZGRyZXNzTWFwcGluZy5zaGVldEVudHJpZXMoZSkpe2Zvcihjb25zdCBpIG9mIHRoaXMuZ3JhcGguYWRqYWNlbnROb2RlcyhyKSl0aGlzLmdyYXBoLm1hcmtOb2RlQXNEaXJ0eShpKTt0aGlzLnJlbW92ZVZlcnRleChyKSx0aGlzLmFkZHJl'@; put 'c3NNYXBwaW5nLnJlbW92ZUNlbGwodCl9dGhpcy5zdGF0cy5tZWFzdXJlKEFzLkFESlVTVElOR19SQU5HRVMsKCk9Pntjb25zdCB0PXRoaXMucmFuZ2VNYXBwaW5nLnJlbW92ZVJhbmdlc0luU2hlZXQoZSk7Zm9yKGNvbnN0IHIgb2YgdCl0aGlzLnJlbW92ZVZlcnRleChyKTt0aGlzLnN0YXRz'@; put 'Lm1lYXN1cmUoQXMuQURKVVNUSU5HX0FERFJFU1NfTUFQUElORywoKT0+e3RoaXMuYWRkcmVzc01hcHBpbmcucmVtb3ZlU2hlZXQoZSl9KX0pfWNsZWFyU2hlZXQoZSl7Y29uc3QgdD1uZXcgU2V0O2Zvcihjb25zdFtyLGldb2YgdGhpcy5hZGRyZXNzTWFwcGluZy5zaGVldEVudHJpZXMoZSkp'@; put 'aSBpbnN0YW5jZW9mICRoP3QuYWRkKGkpOnRoaXMuc2V0Q2VsbEVtcHR5KHIpO2Zvcihjb25zdCByIG9mIHQudmFsdWVzKCkpdGhpcy5zZXRBcnJheUVtcHR5KHIpO3RoaXMuYWRkU3RydWN0dXJhbE5vZGVzVG9DaGFuZ2VTZXQoKX1yZW1vdmVDb2x1bW5zKGUpe3RoaXMuc3RhdHMubWVhc3Vy'@; put 'ZShBcy5BREpVU1RJTkdfR1JBUEgsKCk9Pntmb3IoY29uc3RbcixpXW9mIHRoaXMuYWRkcmVzc01hcHBpbmcuZW50cmllc0Zyb21Db2x1bW5zU3BhbihlKSl7Zm9yKGNvbnN0IG8gb2YgdGhpcy5ncmFwaC5hZGphY2VudE5vZGVzKGkpKXRoaXMuZ3JhcGgubWFya05vZGVBc0RpcnR5KG8pO2lm'@; put 'KGkgaW5zdGFuY2VvZiAkaCl7aWYoIWkuaXNMZWZ0Q29ybmVyKHIpKWNvbnRpbnVlO3RoaXMuc2hyaW5rQXJyYXlUb0Nvcm5lcihpKSx0aGlzLmFycmF5TWFwcGluZy5yZW1vdmVBcnJheShpLmdldFJhbmdlKCkpfXRoaXMucmVtb3ZlVmVydGV4KGkpfX0pLHRoaXMuc3RhdHMubWVhc3VyZShB'@; put 'cy5BREpVU1RJTkdfQUREUkVTU19NQVBQSU5HLCgpPT57dGhpcy5hZGRyZXNzTWFwcGluZy5yZW1vdmVDb2x1bW5zKGUpfSk7Y29uc3QgdD10aGlzLnN0YXRzLm1lYXN1cmUoQXMuQURKVVNUSU5HX1JBTkdFUywoKT0+e2NvbnN0IHI9dGhpcy50cnVuY2F0ZVJhbmdlcyhlLGk9PmkuY29sKTty'@; put 'ZXR1cm4gdGhpcy5nZXRBcnJheVZlcnRpY2VzUmVsYXRlZFRvUmFuZ2VzKHIpfSk7cmV0dXJuIHRoaXMuc3RhdHMubWVhc3VyZShBcy5BREpVU1RJTkdfQVJSQVlfTUFQUElORywoKT0+dGhpcy5maXhBcnJheXNBZnRlclJlbW92aW5nQ29sdW1ucyhlLnNoZWV0LGUuY29sdW1uU3RhcnQsZS5u'@; put 'dW1iZXJPZkNvbHVtbnMpKSx0aGlzLmFkZFN0cnVjdHVyYWxOb2Rlc1RvQ2hhbmdlU2V0KCkse2FmZmVjdGVkQXJyYXlzOnQsY29udGVudENoYW5nZXM6dGhpcy5nZXRBbmRDbGVhckNvbnRlbnRDaGFuZ2VzKCl9fWFkZFJvd3MoZSl7dGhpcy5zdGF0cy5tZWFzdXJlKEFzLkFESlVTVElOR19B'@; put 'RERSRVNTX01BUFBJTkcsKCk9Pnt0aGlzLmFkZHJlc3NNYXBwaW5nLmFkZFJvd3MoZS5zaGVldCxlLnJvd1N0YXJ0LGUubnVtYmVyT2ZSb3dzKX0pO2NvbnN0IHQ9dGhpcy5zdGF0cy5tZWFzdXJlKEFzLkFESlVTVElOR19SQU5HRVMsKCk9Pntjb25zdCByPXRoaXMucmFuZ2VNYXBwaW5nLm1v'@; put 'dmVBbGxSYW5nZXNJblNoZWV0QWZ0ZXJSb3dCeVJvd3MoZS5zaGVldCxlLnJvd1N0YXJ0LGUubnVtYmVyT2ZSb3dzKTtyZXR1cm4gdGhpcy5maXhSYW5nZXNXaGVuQWRkaW5nUm93cyhlLnNoZWV0LGUucm93U3RhcnQsZS5udW1iZXJPZlJvd3MpLHRoaXMuZ2V0QXJyYXlWZXJ0aWNlc1JlbGF0'@; put 'ZWRUb1JhbmdlcyhyLnZlcnRpY2VzV2l0aENoYW5nZWRTaXplKX0pO3RoaXMuc3RhdHMubWVhc3VyZShBcy5BREpVU1RJTkdfQVJSQVlfTUFQUElORywoKT0+e3RoaXMuZml4QXJyYXlzQWZ0ZXJBZGRpbmdSb3coZS5zaGVldCxlLnJvd1N0YXJ0LGUubnVtYmVyT2ZSb3dzKX0pO2Zvcihjb25z'@; put 'dCByIG9mIHRoaXMuYWRkcmVzc01hcHBpbmcudmVydGljZXNGcm9tUm93c1NwYW4oZSkpdGhpcy5ncmFwaC5tYXJrTm9kZUFzRGlydHkocik7cmV0dXJuIHRoaXMuYWRkU3RydWN0dXJhbE5vZGVzVG9DaGFuZ2VTZXQoKSx7YWZmZWN0ZWRBcnJheXM6dH19YWRkQ29sdW1ucyhlKXt0aGlzLnN0'@; put 'YXRzLm1lYXN1cmUoQXMuQURKVVNUSU5HX0FERFJFU1NfTUFQUElORywoKT0+e3RoaXMuYWRkcmVzc01hcHBpbmcuYWRkQ29sdW1ucyhlLnNoZWV0LGUuY29sdW1uU3RhcnQsZS5udW1iZXJPZkNvbHVtbnMpfSk7Y29uc3QgdD10aGlzLnN0YXRzLm1lYXN1cmUoQXMuQURKVVNUSU5HX1JBTkdF'@; put 'UywoKT0+e2NvbnN0IHI9dGhpcy5yYW5nZU1hcHBpbmcubW92ZUFsbFJhbmdlc0luU2hlZXRBZnRlckNvbHVtbkJ5Q29sdW1ucyhlLnNoZWV0LGUuY29sdW1uU3RhcnQsZS5udW1iZXJPZkNvbHVtbnMpO3JldHVybiB0aGlzLmZpeFJhbmdlc1doZW5BZGRpbmdDb2x1bW5zKGUuc2hlZXQsZS5j'@; put 'b2x1bW5TdGFydCxlLm51bWJlck9mQ29sdW1ucyksdGhpcy5nZXRBcnJheVZlcnRpY2VzUmVsYXRlZFRvUmFuZ2VzKHIudmVydGljZXNXaXRoQ2hhbmdlZFNpemUpfSk7dGhpcy5zdGF0cy5tZWFzdXJlKEFzLkFESlVTVElOR19BUlJBWV9NQVBQSU5HLCgpPT50aGlzLmZpeEFycmF5c0FmdGVy'@; put 'QWRkaW5nQ29sdW1uKGUuc2hlZXQsZS5jb2x1bW5TdGFydCxlLm51bWJlck9mQ29sdW1ucykpO2Zvcihjb25zdCByIG9mIHRoaXMuYWRkcmVzc01hcHBpbmcudmVydGljZXNGcm9tQ29sdW1uc1NwYW4oZSkpdGhpcy5ncmFwaC5tYXJrTm9kZUFzRGlydHkocik7cmV0dXJuIHRoaXMuYWRkU3Ry'@; put 'dWN0dXJhbE5vZGVzVG9DaGFuZ2VTZXQoKSx7YWZmZWN0ZWRBcnJheXM6dCxjb250ZW50Q2hhbmdlczp0aGlzLmdldEFuZENsZWFyQ29udGVudENoYW5nZXMoKX19aXNUaGVyZVNwYWNlRm9yQXJyYXkoZSl7Y29uc3QgdD1lLmdldFJhbmdlT3JVbmRlZigpO2lmKHZvaWQgMD09PXQpcmV0dXJu'@; put 'ITE7Zm9yKGNvbnN0IHIgb2YgdC5hZGRyZXNzZXModGhpcykpe2NvbnN0IGk9dGhpcy5hZGRyZXNzTWFwcGluZy5nZXRDZWxsKHIpO2lmKHZvaWQgMCE9PWkmJiEoaSBpbnN0YW5jZW9mIFhfKSYmaSE9PWUpcmV0dXJuITF9cmV0dXJuITB9bW92ZUNlbGxzKGUsdCxyLGkpe2Zvcihjb25zdCBv'@; put 'IG9mIGUuYWRkcmVzc2VzV2l0aERpcmVjdGlvbih0LHIsdGhpcykpe2NvbnN0IGE9Qm8oaSxvLmNvbCt0LG8ucm93K3IpO2xldCBsPXRoaXMuYWRkcmVzc01hcHBpbmcuZ2V0Q2VsbChvKTtjb25zdCB1PXRoaXMuYWRkcmVzc01hcHBpbmcuZ2V0Q2VsbChhKTtpZih0aGlzLmFkZHJlc3NNYXBw'@; put 'aW5nLnJlbW92ZUNlbGwobyksdm9pZCAwIT09bCl7bGV0IGc7dGhpcy5ncmFwaC5tYXJrTm9kZUFzRGlydHkobCksdGhpcy5hZGRyZXNzTWFwcGluZy5zZXRDZWxsKGEsbCk7Zm9yKGNvbnN0IEUgb2YgdGhpcy5ncmFwaC5hZGphY2VudE5vZGVzKGwpKUUgaW5zdGFuY2VvZiBjZiYmIWUuY29u'@; put 'dGFpbnNSYW5nZShFLnJhbmdlKSYmKGc9Zz8/dGhpcy5mZXRjaENlbGxPckNyZWF0ZUVtcHR5KG8pLnZlcnRleCx0aGlzLmdyYXBoLmFkZEVkZ2UoZyxFKSx0aGlzLmdyYXBoLnJlbW92ZUVkZ2UobCxFKSk7ZyYmKHRoaXMuZ3JhcGgubWFya05vZGVBc0RpcnR5KGcpLHRoaXMuYWRkcmVzc01h'@; put 'cHBpbmcuc2V0Q2VsbChvLGcpKX1pZih2b2lkIDAhPT11KXt2b2lkIDA9PT1sJiZ0aGlzLmFkZHJlc3NNYXBwaW5nLnJlbW92ZUNlbGwoYSk7Zm9yKGNvbnN0IGcgb2YgdGhpcy5ncmFwaC5hZGphY2VudE5vZGVzKHUpKWw9bD8/dGhpcy5mZXRjaENlbGxPckNyZWF0ZUVtcHR5KGEpLnZlcnRl'@; put 'eCx0aGlzLmdyYXBoLmFkZEVkZ2UobCxnKSx0aGlzLmdyYXBoLm1hcmtOb2RlQXNEaXJ0eShsKTt0aGlzLnJlbW92ZVZlcnRleCh1KX19Zm9yKGNvbnN0IG8gb2YgdGhpcy5yYW5nZU1hcHBpbmcucmFuZ2VWZXJ0aWNlc0NvbnRhaW5lZEluUmFuZ2UoZSkpZm9yKGNvbnN0IGEgb2YgdGhpcy5n'@; put 'cmFwaC5hZGphY2VudE5vZGVzKG8pKWlmKGEgaW5zdGFuY2VvZiBjZiYmIWUuY29udGFpbnNSYW5nZShhLnJhbmdlKSl7dGhpcy5ncmFwaC5yZW1vdmVFZGdlKG8sYSk7Zm9yKGNvbnN0IGwgb2Ygby5yYW5nZS5hZGRyZXNzZXModGhpcykpe2NvbnN0e3ZlcnRleDp1LGlkOmd9PXRoaXMuZmV0'@; put 'Y2hDZWxsT3JDcmVhdGVFbXB0eShsKTt0aGlzLmdyYXBoLmFkZEVkZ2UoZz8/dSxhKSx0aGlzLmFkZHJlc3NNYXBwaW5nLnNldENlbGwobCx1KSx0aGlzLmdyYXBoLm1hcmtOb2RlQXNEaXJ0eSh1KX19dGhpcy5yYW5nZU1hcHBpbmcubW92ZVJhbmdlc0luc2lkZVNvdXJjZVJhbmdlKGUsdCxy'@; put 'LGkpfXNldEFycmF5RW1wdHkoZSl7Y29uc3QgdD1iYS5zcGFuRnJvbShlLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSxlLndpZHRoLGUuaGVpZ2h0KSxyPXRoaXMuZ3JhcGguYWRqYWNlbnROb2RlcyhlKTtmb3IoY29uc3QgaSBvZiB0LmFkZHJlc3Nlcyh0'@; put 'aGlzKSl0aGlzLmFkZHJlc3NNYXBwaW5nLnJlbW92ZUNlbGwoaSk7Zm9yKGNvbnN0IGkgb2Ygci52YWx1ZXMoKSl7Y29uc3Qgbz1OSnQodGhpcy5mdW5jdGlvblJlZ2lzdHJ5LGksZS5nZXRSYW5nZSgpLHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSx0aGlzKTtmb3IoY29uc3Qg'@; put 'YSBvZiBvKXtjb25zdHt2ZXJ0ZXg6bCxpZDp1fT10aGlzLmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHkoYSk7dGhpcy5ncmFwaC5hZGRFZGdlKHU/P2wsaSl9by5sZW5ndGg+MCYmdGhpcy5ncmFwaC5tYXJrTm9kZUFzRGlydHkoaSl9dGhpcy5yZW1vdmVWZXJ0ZXgoZSksdGhpcy5hcnJheU1hcHBp'@; put 'bmcucmVtb3ZlQXJyYXkoZS5nZXRSYW5nZSgpKX1hZGRWZXJ0ZXgoZSx0KXt0aGlzLmdyYXBoLmFkZE5vZGVBbmRSZXR1cm5JZCh0KSx0aGlzLmFkZHJlc3NNYXBwaW5nLnNldENlbGwoZSx0KX1hZGRBcnJheVZlcnRleChlLHQpe3RoaXMuZ3JhcGguYWRkTm9kZUFuZFJldHVybklkKHQpLHRo'@; put 'aXMuc2V0QWRkcmVzc01hcHBpbmdGb3JBcnJheVZlcnRleCh0LGUpfSphcnJheUZvcm11bGFOb2Rlcygpe2Zvcihjb25zdCBlIG9mIHRoaXMuZ3JhcGguZ2V0Tm9kZXMoKSllIGluc3RhbmNlb2YgJGgmJih5aWVsZCBlKX0qZW50cmllc0Zyb21Sb3dzU3BhbihlKXt5aWVsZCp0aGlzLmFkZHJl'@; put 'c3NNYXBwaW5nLmVudHJpZXNGcm9tUm93c1NwYW4oZSl9KmVudHJpZXNGcm9tQ29sdW1uc1NwYW4oZSl7eWllbGQqdGhpcy5hZGRyZXNzTWFwcGluZy5lbnRyaWVzRnJvbUNvbHVtbnNTcGFuKGUpfWZldGNoQ2VsbChlKXtyZXR1cm4gdGhpcy5hZGRyZXNzTWFwcGluZy5mZXRjaENlbGwoZSl9'@; put 'Z2V0Q2VsbChlKXtyZXR1cm4gdGhpcy5hZGRyZXNzTWFwcGluZy5nZXRDZWxsKGUpfWdldENlbGxWYWx1ZShlKXtyZXR1cm4gdGhpcy5hZGRyZXNzTWFwcGluZy5nZXRDZWxsVmFsdWUoZSl9Z2V0UmF3VmFsdWUoZSl7cmV0dXJuIHRoaXMuYWRkcmVzc01hcHBpbmcuZ2V0UmF3VmFsdWUoZSl9'@; put 'Z2V0U2NhbGFyVmFsdWUoZSl7Y29uc3QgdD10aGlzLmFkZHJlc3NNYXBwaW5nLmdldENlbGxWYWx1ZShlKTtyZXR1cm4gdCBpbnN0YW5jZW9mIGxhP25ldyBQdCh0bi5WQUxVRSxkci5TY2FsYXJFeHBlY3RlZCk6dH1leGlzdHNFZGdlKGUsdCl7cmV0dXJuIHRoaXMuZ3JhcGguZXhpc3RzRWRn'@; put 'ZShlLHQpfWdldFNoZWV0SWQoZSl7cmV0dXJuIHRoaXMuc2hlZXRNYXBwaW5nLmZldGNoKGUpfWdldFNoZWV0SGVpZ2h0KGUpe3JldHVybiB0aGlzLmFkZHJlc3NNYXBwaW5nLmdldEhlaWdodChlKX1nZXRTaGVldFdpZHRoKGUpe3JldHVybiB0aGlzLmFkZHJlc3NNYXBwaW5nLmdldFdpZHRo'@; put 'KGUpfWdldEFycmF5KGUpe3JldHVybiB0aGlzLmFycmF5TWFwcGluZy5nZXRBcnJheShlKX1nZXRSYW5nZShlLHQpe3JldHVybiB0aGlzLnJhbmdlTWFwcGluZy5nZXRSYW5nZShlLHQpfXRvcFNvcnRXaXRoU2NjKCl7cmV0dXJuIHRoaXMuZ3JhcGgudG9wU29ydFdpdGhTY2MoKX1tYXJrQXNW'@; put 'b2xhdGlsZShlKXt0aGlzLmdyYXBoLm1hcmtOb2RlQXNWb2xhdGlsZShlKX1tYXJrQXNEZXBlbmRlbnRPblN0cnVjdHVyZUNoYW5nZShlKXt0aGlzLmdyYXBoLm1hcmtOb2RlQXNDaGFuZ2luZ1dpdGhTdHJ1Y3R1cmUoZSl9Zm9yY2VBcHBseVBvc3Rwb25lZFRyYW5zZm9ybWF0aW9ucygpe2Zv'@; put 'cihjb25zdCBlIG9mIHRoaXMuZ3JhcGguZ2V0Tm9kZXMoKSllIGluc3RhbmNlb2YgajYmJmUuZW5zdXJlUmVjZW50RGF0YSh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpfSpyYXdWYWx1ZXNGcm9tUmFuZ2UoZSl7Zm9yKGNvbnN0IHQgb2YgZS5hZGRyZXNzZXModGhpcykpe2Nv'@; put 'bnN0IHI9dGhpcy5nZXRTY2FsYXJWYWx1ZSh0KTtyIT09bGwmJih5aWVsZFtMbyhyKSx0XSl9fWNvbXB1dGVMaXN0T2ZWYWx1ZXNJblJhbmdlKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZS5hZGRyZXNzZXModGhpcykpe2NvbnN0IGk9dGhpcy5nZXRTY2FsYXJWYWx1ZShyKTt0LnB1'@; put 'c2goaSl9cmV0dXJuIHR9c2hyaW5rQXJyYXlUb0Nvcm5lcihlKXt0aGlzLmNsZWFuQWRkcmVzc01hcHBpbmdVbmRlckFycmF5KGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuYWRqYWNlbnRBcnJheVZlcnRpY2VzKGUpKXtsZXQgcjtyPXQgaW5zdGFuY2VvZiBtZz90aGlzLmZvcm11bGFEaXJlY3RE'@; put 'ZXBlbmRlbmNpZXNUb0FycmF5KHQsZSk6dGhpcy5yYW5nZURpcmVjdERlcGVuZGVuY2llc1RvQXJyYXkodCxlKTtsZXQgaT0hMTtmb3IoY29uc3RbbyxhXW9mIHIpZS5pc0xlZnRDb3JuZXIobykmJihpPSEwKSx0aGlzLmdyYXBoLmFkZEVkZ2UoYSx0KSx0aGlzLmdyYXBoLm1hcmtOb2RlQXNE'@; put 'aXJ0eShhKTtpfHx0aGlzLmdyYXBoLnJlbW92ZUVkZ2UoZSx0KX10aGlzLmdyYXBoLm1hcmtOb2RlQXNEaXJ0eShlKX1pc0FycmF5SW50ZXJuYWxDZWxsKGUpe2NvbnN0IHQ9dGhpcy5nZXRDZWxsKGUpO3JldHVybiB0IGluc3RhbmNlb2YgJGgmJiF0LmlzTGVmdENvcm5lcihlKX1nZXRBbmRD'@; put 'bGVhckNvbnRlbnRDaGFuZ2VzKCl7Y29uc3QgZT10aGlzLmNoYW5nZXM7cmV0dXJuIHRoaXMuY2hhbmdlcz1xXy5lbXB0eSgpLGV9Z2V0QWRqYWNlbnROb2Rlc0FkZHJlc3NlcyhlKXtjb25zdCB0PXRoaXMuZ3JhcGguYWRqYWNlbnROb2RlcyhlKSxyPVtdO3JldHVybiB0LmZvckVhY2goaT0+'@; put 'e2NvbnN0IG89aTtyLnB1c2gobyBpbnN0YW5jZW9mIGNmP2VtZShvLnN0YXJ0LG8uZW5kKTpvLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSl9KSxyfWV4Y2hhbmdlR3JhcGhOb2RlKGUsdCl7dGhpcy5ncmFwaC5hZGROb2RlQW5kUmV0dXJuSWQodCk7Y29u'@; put 'c3Qgcj10aGlzLmdyYXBoLmFkamFjZW50Tm9kZXMoZSk7dGhpcy5yZW1vdmVWZXJ0ZXgoZSksci5mb3JFYWNoKGk9Pnt0aGlzLmdyYXBoLmhhc05vZGUoaSkmJnRoaXMuZ3JhcGguYWRkRWRnZSh0LGkpfSl9c2V0QXJyYXkoZSx0KXt0aGlzLmFycmF5TWFwcGluZy5zZXRBcnJheShlLHQpfWNv'@; put 'cnJlY3RJbmZpbml0ZVJhbmdlc0RlcGVuZGVuY3koZSl7Y29uc3QgdD10aGlzLmdyYXBoLmdldEluZmluaXRlUmFuZ2VzKCkuZmlsdGVyKCh7bm9kZTphfSk9PmEucmFuZ2UuYWRkcmVzc0luUmFuZ2UoZSkpO2lmKHQubGVuZ3RoPD0wKXJldHVybjtjb25zdHt2ZXJ0ZXg6cixpZDppfT10aGlz'@; put 'LmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHkoZSksbz1pPz90aGlzLmdyYXBoLmdldE5vZGVJZChyKTt0LmZvckVhY2goKHtpZDphfSk9Pnt0aGlzLmdyYXBoLmFkZEVkZ2UobyxhKX0pfWV4Y2hhbmdlT3JBZGRHcmFwaE5vZGUoZSx0KXtlP3RoaXMuZXhjaGFuZ2VHcmFwaE5vZGUoZSx0KTp0aGlz'@; put 'LmdyYXBoLmFkZE5vZGVBbmRSZXR1cm5JZCh0KX1nZXRBcnJheVZlcnRpY2VzUmVsYXRlZFRvUmFuZ2VzKGUpe2NvbnN0IHQ9bmV3IFNldDtyZXR1cm4gZS5mb3JFYWNoKHI9Pnt0aGlzLmdyYXBoLmhhc05vZGUocikmJnRoaXMuZ3JhcGguYWRqYWNlbnROb2RlcyhyKS5mb3JFYWNoKGk9Pntp'@; put 'IGluc3RhbmNlb2YgJGgmJnQuYWRkKGkpfSl9KSx0fWNvcnJlY3RJbmZpbml0ZVJhbmdlc0RlcGVuZGVuY2llc0J5UmFuZ2VWZXJ0ZXgoZSl7dGhpcy5ncmFwaC5nZXRJbmZpbml0ZVJhbmdlcygpLmZvckVhY2goKHtpZDp0LG5vZGU6cn0pPT57Y29uc3QgaT1lLnJhbmdlLmludGVyc2VjdGlv'@; put 'bldpdGgoci5yYW5nZSk7dm9pZCAwIT09aSYmaS5hZGRyZXNzZXModGhpcykuZm9yRWFjaChvPT57Y29uc3R7dmVydGV4OmEsaWQ6bH09dGhpcy5mZXRjaENlbGxPckNyZWF0ZUVtcHR5KG8pO3RoaXMuZ3JhcGguYWRkRWRnZShsPz9hLHQpfSl9KX1jbGVhbkFkZHJlc3NNYXBwaW5nVW5kZXJB'@; put 'cnJheShlKXtjb25zdCB0PWUuZ2V0UmFuZ2UoKTtmb3IoY29uc3QgciBvZiB0LmFkZHJlc3Nlcyh0aGlzKSl7Y29uc3QgaT1lLmdldEFycmF5Q2VsbFZhbHVlKHIpO3RoaXMuZ2V0Q2VsbChyKT09PWU/ZS5pc0xlZnRDb3JuZXIocik/dGhpcy5jaGFuZ2VzLmFkZENoYW5nZShuZXcgUHQodG4u'@; put 'UkVGKSxyLGkpOih0aGlzLmFkZHJlc3NNYXBwaW5nLnJlbW92ZUNlbGwociksdGhpcy5jaGFuZ2VzLmFkZENoYW5nZShsbCxyLGkpKTp0aGlzLmNoYW5nZXMuYWRkQ2hhbmdlKGxsLHIsaSl9fSpmb3JtdWxhRGlyZWN0RGVwZW5kZW5jaWVzVG9BcnJheShlLHQpe3ZhciByO2NvbnN0WyxpXT1u'@; put 'dWxsIT09KHI9dGhpcy5mb3JtdWxhRGVwZW5kZW5jeVF1ZXJ5KGUpKSYmdm9pZCAwIT09cj9yOltdO2lmKHZvaWQgMCE9PWkpZm9yKGNvbnN0IG8gb2YgaSlpZighKG8gaW5zdGFuY2VvZiBhOXx8byBpbnN0YW5jZW9mIGJhKSYmdC5nZXRSYW5nZSgpLmFkZHJlc3NJblJhbmdlKG8pKXtjb25z'@; put 'dCBhPXRoaXMuZmV0Y2hDZWxsT3JDcmVhdGVFbXB0eShvKS52ZXJ0ZXg7eWllbGRbbyxhXX19KnJhbmdlRGlyZWN0RGVwZW5kZW5jaWVzVG9BcnJheShlLHQpe2NvbnN0e3Jlc3RSYW5nZTpyfT10aGlzLnJhbmdlTWFwcGluZy5maW5kU21hbGxlclJhbmdlKGUucmFuZ2UpO2Zvcihjb25zdCBp'@; put 'IG9mIHIuYWRkcmVzc2VzKHRoaXMpKWlmKHQuZ2V0UmFuZ2UoKS5hZGRyZXNzSW5SYW5nZShpKSl7Y29uc3Qgbz10aGlzLmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHkoaSkudmVydGV4O3lpZWxkW2ksb119fSphZGphY2VudEFycmF5VmVydGljZXMoZSl7Y29uc3QgdD10aGlzLmdyYXBoLmFkamFj'@; put 'ZW50Tm9kZXMoZSk7Zm9yKGNvbnN0IHIgb2YgdCkociBpbnN0YW5jZW9mIG1nfHxyIGluc3RhbmNlb2YgY2YpJiYoeWllbGQgcil9YWRkU3RydWN0dXJhbE5vZGVzVG9DaGFuZ2VTZXQoKXt0aGlzLmdyYXBoLm1hcmtDaGFuZ2luZ1dpdGhTdHJ1Y3R1cmVOb2Rlc0FzRGlydHkoKX1maXhSYW5n'@; put 'ZXNXaGVuQWRkaW5nUm93cyhlLHQscil7Y29uc3QgaT1BcnJheS5mcm9tKHRoaXMucmFuZ2VNYXBwaW5nLnJhbmdlc0luU2hlZXQoZSkpO2Zvcihjb25zdCBvIG9mIGkpaWYoby5yYW5nZS5pbmNsdWRlc1Jvdyh0K3IpKWlmKG8uYnJ1dGVGb3JjZSl7Y29uc3QgYT1vLnJhbmdlLnJhbmdlV2l0'@; put 'aFNhbWVXaWR0aCh0LHIpO2Zvcihjb25zdCBsIG9mIGEuYWRkcmVzc2VzKHRoaXMpKXtjb25zdHt2ZXJ0ZXg6dSxpZDpnfT10aGlzLmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHkobCk7dGhpcy5ncmFwaC5hZGRFZGdlKGc/P3Usbyl9fWVsc2V7bGV0IGE9byxsPXRoaXMucmFuZ2VNYXBwaW5nLmZp'@; put 'bmRTbWFsbGVyUmFuZ2UoYS5yYW5nZSk7aWYodm9pZCAwIT09bC5zbWFsbGVyUmFuZ2VWZXJ0ZXgpY29udGludWU7Zm9yKDt2b2lkIDA9PT1sLnNtYWxsZXJSYW5nZVZlcnRleDspe2NvbnN0IHU9bmV3IGNmKGJhLnNwYW5Gcm9tKGEucmFuZ2Uuc3RhcnQsYS5yYW5nZS53aWR0aCgpLGEucmFu'@; put 'Z2UuaGVpZ2h0KCktMSkpO3RoaXMucmFuZ2VNYXBwaW5nLnNldFJhbmdlKHUpLHRoaXMuZ3JhcGguYWRkTm9kZUFuZFJldHVybklkKHUpO2NvbnN0IGc9bmV3IGJhKEJvKGEucmFuZ2Uuc3RhcnQuc2hlZXQsYS5yYW5nZS5zdGFydC5jb2wsYS5yYW5nZS5lbmQucm93KSxhLnJhbmdlLmVuZCk7'@; put 'dGhpcy5hZGRBbGxGcm9tUmFuZ2UoZyxhKSx0aGlzLmdyYXBoLmFkZEVkZ2UodSxhKSxhPXUsbD10aGlzLnJhbmdlTWFwcGluZy5maW5kU21hbGxlclJhbmdlKGEucmFuZ2UpfXRoaXMuZ3JhcGguYWRkRWRnZShsLnNtYWxsZXJSYW5nZVZlcnRleCxhKSx0aGlzLmFkZEFsbEZyb21SYW5nZShs'@; put 'LnJlc3RSYW5nZSxhKSx0aGlzLmdyYXBoLnJlbW92ZUVkZ2UobC5zbWFsbGVyUmFuZ2VWZXJ0ZXgsbyl9fWFkZEFsbEZyb21SYW5nZShlLHQpe2Zvcihjb25zdCByIG9mIGUuYWRkcmVzc2VzKHRoaXMpKXtjb25zdHt2ZXJ0ZXg6aSxpZDpvfT10aGlzLmZldGNoQ2VsbE9yQ3JlYXRlRW1wdHko'@; put 'cik7dGhpcy5ncmFwaC5hZGRFZGdlKG8/P2ksdCl9fWZpeFJhbmdlc1doZW5BZGRpbmdDb2x1bW5zKGUsdCxyKXtmb3IoY29uc3QgaSBvZiB0aGlzLnJhbmdlTWFwcGluZy5yYW5nZXNJblNoZWV0KGUpKWlmKGkucmFuZ2UuaW5jbHVkZXNDb2x1bW4odCtyKSl7bGV0IG87bz1pLmJydXRlRm9y'@; put 'Y2U/aS5yYW5nZS5yYW5nZVdpdGhTYW1lSGVpZ2h0KHQscik6YmEuc3BhbkZyb20oQm8oZSx0LGkucmFuZ2UuZW5kLnJvdyksciwxKTtmb3IoY29uc3QgYSBvZiBvLmFkZHJlc3Nlcyh0aGlzKSl7Y29uc3R7dmVydGV4OmwsaWQ6dX09dGhpcy5mZXRjaENlbGxPckNyZWF0ZUVtcHR5KGEpO3Ro'@; put 'aXMuZ3JhcGguYWRkRWRnZSh1Pz9sLGkpfX19ZXhjaGFuZ2VPckFkZEZvcm11bGFWZXJ0ZXgoZSl7Y29uc3QgdD1lLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSxyPWJhLnNwYW5Gcm9tKHQsZS53aWR0aCxlLmhlaWdodCksaT10aGlzLnNocmlua1Bvc3Np'@; put 'YmxlQXJyYXlBbmRHZXRDZWxsKHQpO2lmKGUgaW5zdGFuY2VvZiAkaCYmdGhpcy5zZXRBcnJheShyLGUpLHRoaXMuZXhjaGFuZ2VPckFkZEdyYXBoTm9kZShpLGUpLHRoaXMuYWRkcmVzc01hcHBpbmcuc2V0Q2VsbCh0LGUpLGUgaW5zdGFuY2VvZiAkaCl7aWYoIXRoaXMuaXNUaGVyZVNwYWNl'@; put 'Rm9yQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBvIG9mIHIuYWRkcmVzc2VzKHRoaXMpKXtpZihlLmlzTGVmdENvcm5lcihvKSljb250aW51ZTtjb25zdCBhPXRoaXMuZ2V0Q2VsbChvKTt0aGlzLmV4Y2hhbmdlT3JBZGRHcmFwaE5vZGUoYSxlKX19Zm9yKGNvbnN0IG8gb2Ygci5hZGRyZXNz'@; put 'ZXModGhpcykpdGhpcy5hZGRyZXNzTWFwcGluZy5zZXRDZWxsKG8sZSl9c2V0QWRkcmVzc01hcHBpbmdGb3JBcnJheVZlcnRleChlLHQpe2lmKHRoaXMuYWRkcmVzc01hcHBpbmcuc2V0Q2VsbCh0LGUpLCEoZSBpbnN0YW5jZW9mICRoKSlyZXR1cm47Y29uc3Qgcj1iYS5zcGFuRnJvbU9yVW5k'@; put 'ZWYodCxlLndpZHRoLGUuaGVpZ2h0KTtpZih2b2lkIDAhPT1yJiYodGhpcy5zZXRBcnJheShyLGUpLHRoaXMuaXNUaGVyZVNwYWNlRm9yQXJyYXkoZSkpKWZvcihjb25zdCBpIG9mIHIuYWRkcmVzc2VzKHRoaXMpKXRoaXMuYWRkcmVzc01hcHBpbmcuc2V0Q2VsbChpLGUpfXRydW5jYXRlUmFu'@; put 'Z2VzKGUsdCl7Y29uc3R7dmVydGljZXNUb1JlbW92ZTpyLHZlcnRpY2VzVG9NZXJnZTppLHZlcnRpY2VzV2l0aENoYW5nZWRTaXplOm99PXRoaXMucmFuZ2VNYXBwaW5nLnRydW5jYXRlUmFuZ2VzKGUsdCk7Zm9yKGNvbnN0W2EsbF1vZiBpKXRoaXMubWVyZ2VSYW5nZVZlcnRpY2VzKGEsbCk7'@; put 'Zm9yKGNvbnN0IGEgb2Ygcil0aGlzLnJlbW92ZVZlcnRleEFuZENsZWFudXBEZXBlbmRlbmNpZXMoYSk7cmV0dXJuIG99Zml4QXJyYXlzQWZ0ZXJBZGRpbmdSb3coZSx0LHIpe2lmKHRoaXMuYXJyYXlNYXBwaW5nLm1vdmVBcnJheVZlcnRpY2VzQWZ0ZXJSb3dCeVJvd3MoZSx0LHIpLCEodDw9'@; put 'MCkpZm9yKGNvbnN0WyxpXW9mIHRoaXMuYXJyYXlNYXBwaW5nLmFycmF5c0luUm93cyh0cC5mcm9tUm93U3RhcnRBbmRFbmQoZSx0LTEsdC0xKSkpe2NvbnN0IG89aS5nZXRSYW5nZSgpO2ZvcihsZXQgYT1vLnN0YXJ0LmNvbDthPD1vLmVuZC5jb2w7KythKWZvcihsZXQgbD10O2w8PW8uZW5k'@; put 'LnJvdzsrK2wpe2NvbnN0IHU9Qm8oZSxhLGwpLGc9Qm8oZSxhLGwrciksRT1pLmdldEFycmF5Q2VsbFZhbHVlKHUpO3RoaXMuYWRkcmVzc01hcHBpbmcubW92ZUNlbGwoZyx1KSx0aGlzLmNoYW5nZXMuYWRkQ2hhbmdlKGxsLGcsRSl9fX1maXhBcnJheXNBZnRlclJlbW92aW5nUm93cyhlLHQs'@; put 'cil7aWYodGhpcy5hcnJheU1hcHBpbmcubW92ZUFycmF5VmVydGljZXNBZnRlclJvd0J5Um93cyhlLHQsLXIpLCEodDw9MCkpZm9yKGNvbnN0WyxpXW9mIHRoaXMuYXJyYXlNYXBwaW5nLmFycmF5c0luUm93cyh0cC5mcm9tUm93U3RhcnRBbmRFbmQoZSx0LTEsdC0xKSkpaWYodGhpcy5pc1Ro'@; put 'ZXJlU3BhY2VGb3JBcnJheShpKSlmb3IoY29uc3QgbyBvZiBpLmdldFJhbmdlKCkuYWRkcmVzc2VzKHRoaXMpKXRoaXMuYWRkcmVzc01hcHBpbmcuc2V0Q2VsbChvLGkpO2Vsc2UgdGhpcy5zZXROb1NwYWNlSWZBcnJheShpKX1maXhBcnJheXNBZnRlckFkZGluZ0NvbHVtbihlLHQscil7aWYo'@; put 'dGhpcy5hcnJheU1hcHBpbmcubW92ZUFycmF5VmVydGljZXNBZnRlckNvbHVtbkJ5Q29sdW1ucyhlLHQsciksISh0PD0wKSlmb3IoY29uc3RbLGldb2YgdGhpcy5hcnJheU1hcHBpbmcuYXJyYXlzSW5Db2xzKGdnLmZyb21Db2x1bW5TdGFydEFuZEVuZChlLHQtMSx0LTEpKSl7Y29uc3Qgbz1p'@; put 'LmdldFJhbmdlKCk7Zm9yKGxldCBhPW8uc3RhcnQucm93O2E8PW8uZW5kLnJvdzsrK2EpZm9yKGxldCBsPXQ7bDw9by5lbmQuY29sOysrbCl7Y29uc3QgdT1CbyhlLGwsYSksZz1CbyhlLGwrcixhKSxFPWkuZ2V0QXJyYXlDZWxsVmFsdWUodSk7dGhpcy5hZGRyZXNzTWFwcGluZy5tb3ZlQ2Vs'@; put 'bChnLHUpLHRoaXMuY2hhbmdlcy5hZGRDaGFuZ2UobGwsZyxFKX19fWZpeEFycmF5c0FmdGVyUmVtb3ZpbmdDb2x1bW5zKGUsdCxyKXtpZih0aGlzLmFycmF5TWFwcGluZy5tb3ZlQXJyYXlWZXJ0aWNlc0FmdGVyQ29sdW1uQnlDb2x1bW5zKGUsdCwtciksISh0PD0wKSlmb3IoY29uc3RbLGld'@; put 'b2YgdGhpcy5hcnJheU1hcHBpbmcuYXJyYXlzSW5Db2xzKGdnLmZyb21Db2x1bW5TdGFydEFuZEVuZChlLHQtMSx0LTEpKSlpZih0aGlzLmlzVGhlcmVTcGFjZUZvckFycmF5KGkpKWZvcihjb25zdCBvIG9mIGkuZ2V0UmFuZ2UoKS5hZGRyZXNzZXModGhpcykpdGhpcy5hZGRyZXNzTWFwcGlu'@; put 'Zy5zZXRDZWxsKG8saSk7ZWxzZSB0aGlzLnNldE5vU3BhY2VJZkFycmF5KGkpfXNocmlua1Bvc3NpYmxlQXJyYXlBbmRHZXRDZWxsKGUpe2NvbnN0IHQ9dGhpcy5nZXRDZWxsKGUpO3JldHVybiB0IGluc3RhbmNlb2YgJGg/KHRoaXMuc2V0Tm9TcGFjZUlmQXJyYXkodCksdGhpcy5nZXRDZWxs'@; put 'KGUpKTp0fXNldE5vU3BhY2VJZkFycmF5KGUpe2UgaW5zdGFuY2VvZiAkaCYmKHRoaXMuc2hyaW5rQXJyYXlUb0Nvcm5lcihlKSxlLnNldE5vU3BhY2UoKSl9cmVtb3ZlVmVydGV4KGUpe3RoaXMucmVtb3ZlVmVydGV4QW5kQ2xlYW51cERlcGVuZGVuY2llcyhlKSxlIGluc3RhbmNlb2YgY2Ym'@; put 'JnRoaXMucmFuZ2VNYXBwaW5nLnJlbW92ZVJhbmdlKGUpfW1lcmdlUmFuZ2VWZXJ0aWNlcyhlLHQpe2NvbnN0IHI9dGhpcy5ncmFwaC5hZGphY2VudE5vZGVzKHQpO3RoaXMucmVtb3ZlVmVydGV4QW5kQ2xlYW51cERlcGVuZGVuY2llcyh0KSx0aGlzLmdyYXBoLnJlbW92ZUVkZ2VJZkV4aXN0'@; put 'cyhlLHQpLHIuZm9yRWFjaChpPT57dGhpcy5ncmFwaC5oYXNOb2RlKGkpJiZ0aGlzLmdyYXBoLmFkZEVkZ2UoZSxpKX0pfXJlbW92ZVZlcnRleEFuZENsZWFudXBEZXBlbmRlbmNpZXMoZSl7Y29uc3QgdD1uZXcgU2V0KHRoaXMuZ3JhcGgucmVtb3ZlTm9kZShlKSk7Zm9yKDt0LnNpemU+MDsp'@; put 'e2NvbnN0IHI9dC52YWx1ZXMoKS5uZXh0KCkudmFsdWU7dC5kZWxldGUocik7Y29uc3RbaSxvXT1yO3RoaXMuZ3JhcGguaGFzTm9kZShvKSYmMD09PXRoaXMuZ3JhcGguYWRqYWNlbnROb2Rlc0NvdW50KG8pJiYoKG8gaW5zdGFuY2VvZiBjZnx8byBpbnN0YW5jZW9mIFhfKSYmdGhpcy5ncmFw'@; put 'aC5yZW1vdmVOb2RlKG8pLmZvckVhY2goYT0+dC5hZGQoYSkpLG8gaW5zdGFuY2VvZiBjZj90aGlzLnJhbmdlTWFwcGluZy5yZW1vdmVSYW5nZShvKTpvIGluc3RhbmNlb2YgWF8mJnRoaXMuYWRkcmVzc01hcHBpbmcucmVtb3ZlQ2VsbChpKSl9fX1jbGFzcyBYX3tjb25zdHJ1Y3Rvcigpe31n'@; put 'ZXRDZWxsVmFsdWUoKXtyZXR1cm4gbGx9fWNsYXNzIFFfe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYXJzZWRWYWx1ZT1lLHRoaXMucmF3VmFsdWU9dH1nZXRWYWx1ZXMoKXtyZXR1cm57cGFyc2VkVmFsdWU6dGhpcy5wYXJzZWRWYWx1ZSxyYXdWYWx1ZTp0aGlzLnJhd1ZhbHVlfX1zZXRWYWx1'@; put 'ZXMoZSl7dGhpcy5wYXJzZWRWYWx1ZT1lLnBhcnNlZFZhbHVlLHRoaXMucmF3VmFsdWU9ZS5yYXdWYWx1ZX1nZXRDZWxsVmFsdWUoKXtyZXR1cm4gdGhpcy5wYXJzZWRWYWx1ZX1zZXRDZWxsVmFsdWUoZSl7dGhyb3cgRXJyb3IoIlNldENlbGxWYWx1ZSBpcyBkZXByZWNhdGVkIGZvciBWYWx1'@; put 'ZUNlbGxWZXJ0ZXgiKX19Y2xhc3MgaUF7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmVycm9ycz1lLHRoaXMucmF3SW5wdXQ9dH1nZXRDZWxsVmFsdWUoKXtjb25zdCBlPXRoaXMuZXJyb3JzLm1hcCh0PT50Lm1lc3NhZ2UpLmZpbmQodD0+dCk7cmV0dXJuIFB0LnBhcnNpbmdFcnJvcihlKX1nZXRG'@; put 'b3JtdWxhKCl7cmV0dXJuIHRoaXMucmF3SW5wdXR9fWNsYXNzIFpKdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMud2lkdGg9ZSx0aGlzLmhlaWdodD10LHRoaXMubWFwcGluZz1uZXcgTWFwfWdldENlbGwoZSl7dmFyIHQ7cmV0dXJuIG51bGw9PT0odD10aGlzLm1hcHBpbmcuZ2V0KGUuY29sKSl8'@; put 'fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0KGUucm93KX1zZXRDZWxsKGUsdCl7dGhpcy53aWR0aD1NYXRoLm1heCh0aGlzLndpZHRoLGUuY29sKzEpLHRoaXMuaGVpZ2h0PU1hdGgubWF4KHRoaXMuaGVpZ2h0LGUucm93KzEpO2xldCByPXRoaXMubWFwcGluZy5nZXQoZS5jb2wpO3J8fChyPW5l'@; put 'dyBNYXAsdGhpcy5tYXBwaW5nLnNldChlLmNvbCxyKSksci5zZXQoZS5yb3csdCl9aGFzKGUpe3ZhciB0O3JldHVybiEobnVsbD09PSh0PXRoaXMubWFwcGluZy5nZXQoZS5jb2wpKXx8dm9pZCAwPT09dHx8IXQuZ2V0KGUucm93KSl9Z2V0SGVpZ2h0KCl7cmV0dXJuIHRoaXMuaGVpZ2h0fWdl'@; put 'dFdpZHRoKCl7cmV0dXJuIHRoaXMud2lkdGh9cmVtb3ZlQ2VsbChlKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5tYXBwaW5nLmdldChlLmNvbCkpfHx2b2lkIDA9PT10fHx0LmRlbGV0ZShlLnJvdyl9YWRkUm93cyhlLHQpe3RoaXMubWFwcGluZy5mb3JFYWNoKHI9Pntjb25zdCBpPW5ldyBNYXA7'@; put 'ci5mb3JFYWNoKChvLGEpPT57YT49ZSYmKGkuc2V0KGErdCxvKSxyLmRlbGV0ZShhKSl9KSxpLmZvckVhY2goKG8sYSk9PntyLnNldChhLG8pfSl9KSx0aGlzLmhlaWdodCs9dH1hZGRDb2x1bW5zKGUsdCl7Y29uc3Qgcj1uZXcgTWFwO3RoaXMubWFwcGluZy5mb3JFYWNoKChpLG8pPT57bz49'@; put 'ZSYmKHIuc2V0KG8rdCxpKSx0aGlzLm1hcHBpbmcuZGVsZXRlKG8pKX0pLHIuZm9yRWFjaCgoaSxvKT0+e3RoaXMubWFwcGluZy5zZXQobyxpKX0pLHRoaXMud2lkdGgrPXR9cmVtb3ZlUm93cyhlKXt0aGlzLm1hcHBpbmcuZm9yRWFjaChpPT57Y29uc3Qgbz1uZXcgTWFwO2kuZm9yRWFjaCgo'@; put 'YSxsKT0+e2w+PWUucm93U3RhcnQmJihpLmRlbGV0ZShsKSxsPmUucm93RW5kJiZvLnNldChsLWUubnVtYmVyT2ZSb3dzLGEpKX0pLG8uZm9yRWFjaCgoYSxsKT0+e2kuc2V0KGwsYSl9KX0pO2NvbnN0IHQ9TWF0aC5taW4odGhpcy5oZWlnaHQtMSxlLnJvd0VuZCkscj1NYXRoLm1heCgwLHQt'@; put 'ZS5yb3dTdGFydCsxKTt0aGlzLmhlaWdodD1NYXRoLm1heCgwLHRoaXMuaGVpZ2h0LXIpfXJlbW92ZUNvbHVtbnMoZSl7Y29uc3QgdD1uZXcgTWFwO3RoaXMubWFwcGluZy5mb3JFYWNoKChvLGEpPT57YT49ZS5jb2x1bW5TdGFydCYmKHRoaXMubWFwcGluZy5kZWxldGUoYSksYT5lLmNvbHVt'@; put 'bkVuZCYmdC5zZXQoYS1lLm51bWJlck9mQ29sdW1ucyxvKSl9KSx0LmZvckVhY2goKG8sYSk9Pnt0aGlzLm1hcHBpbmcuc2V0KGEsbyl9KTtjb25zdCByPU1hdGgubWluKHRoaXMud2lkdGgtMSxlLmNvbHVtbkVuZCksaT1NYXRoLm1heCgwLHItZS5jb2x1bW5TdGFydCsxKTt0aGlzLndpZHRo'@; put 'PU1hdGgubWF4KDAsdGhpcy53aWR0aC1pKX0qZ2V0RW50cmllcyhlKXtmb3IoY29uc3RbdCxyXW9mIHRoaXMubWFwcGluZylmb3IoY29uc3RbaSxvXW9mIHIpeWllbGRbQm8oZSx0LGkpLG9dfSp2ZXJ0aWNlc0Zyb21Db2x1bW4oZSl7Y29uc3QgdD10aGlzLm1hcHBpbmcuZ2V0KGUpO2lmKHZv'@; put 'aWQgMCE9PXQpZm9yKGNvbnN0W3IsaV1vZiB0KXlpZWxkIGl9KnZlcnRpY2VzRnJvbVJvdyhlKXtmb3IoY29uc3QgdCBvZiB0aGlzLm1hcHBpbmcudmFsdWVzKCkpe2NvbnN0IHI9dC5nZXQoZSk7dm9pZCAwIT09ciYmKHlpZWxkIHIpfX0qdmVydGljZXNGcm9tQ29sdW1uc1NwYW4oZSl7Zm9y'@; put 'KGNvbnN0IHQgb2YgZS5jb2x1bW5zKCkpe2NvbnN0IHI9dGhpcy5tYXBwaW5nLmdldCh0KTtpZih2b2lkIDAhPT1yKWZvcihjb25zdFtpLG9db2Ygcil5aWVsZCBvfX0qdmVydGljZXNGcm9tUm93c1NwYW4oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5tYXBwaW5nLnZhbHVlcygpKWZvcihjb25z'@; put 'dCByIG9mIGUucm93cygpKXtjb25zdCBpPXQuZ2V0KHIpO3ZvaWQgMCE9PWkmJih5aWVsZCBpKX19KmVudHJpZXNGcm9tUm93c1NwYW4oZSl7Zm9yKGNvbnN0W3Qscl1vZiB0aGlzLm1hcHBpbmcuZW50cmllcygpKWZvcihjb25zdCBpIG9mIGUucm93cygpKXtjb25zdCBvPXIuZ2V0KGkpO3Zv'@; put 'aWQgMCE9PW8mJih5aWVsZFtCbyhlLnNoZWV0LHQsaSksb10pfX0qZW50cmllc0Zyb21Db2x1bW5zU3BhbihlKXtmb3IoY29uc3QgdCBvZiBlLmNvbHVtbnMoKSl7Y29uc3Qgcj10aGlzLm1hcHBpbmcuZ2V0KHQpO2lmKHZvaWQgMCE9PXIpZm9yKGNvbnN0W2ksb11vZiByLmVudHJpZXMoKSl5'@; put 'aWVsZFtCbyhlLnNoZWV0LHQsaSksb119fSp2ZXJ0aWNlcygpe2Zvcihjb25zdFtlLHRdb2YgdGhpcy5tYXBwaW5nKWZvcihjb25zdFtyLGldb2YgdCl2b2lkIDAhPT1pJiYoeWllbGQgaSl9fWNsYXNzIEdKdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMud2lkdGg9ZSx0aGlzLmhlaWdodD10LHRo'@; put 'aXMubWFwcGluZz1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKyl0aGlzLm1hcHBpbmdbcl09bmV3IEFycmF5KGUpfWdldENlbGwoZSl7cmV0dXJuIHRoaXMuZ2V0Q2VsbFZlcnRleChlLmNvbCxlLnJvdyl9c2V0Q2VsbChlLHQpe3RoaXMud2lkdGg9TWF0aC5tYXgodGhpcy53aWR0'@; put 'aCxlLmNvbCsxKSx0aGlzLmhlaWdodD1NYXRoLm1heCh0aGlzLmhlaWdodCxlLnJvdysxKSx0aGlzLm1hcHBpbmdbZS5yb3ddfHwodGhpcy5tYXBwaW5nW2Uucm93XT1uZXcgQXJyYXkodGhpcy53aWR0aCkpLHRoaXMubWFwcGluZ1tlLnJvd11bZS5jb2xdPXR9aGFzKGUpe2NvbnN0IHQ9dGhp'@; put 'cy5tYXBwaW5nW2Uucm93XTtyZXR1cm4hIXQmJiEhdFtlLmNvbF19Z2V0SGVpZ2h0KCl7cmV0dXJuIHRoaXMuaGVpZ2h0fWdldFdpZHRoKCl7cmV0dXJuIHRoaXMud2lkdGh9cmVtb3ZlQ2VsbChlKXt2b2lkIDAhPT10aGlzLm1hcHBpbmdbZS5yb3ddJiZkZWxldGUgdGhpcy5tYXBwaW5nW2Uu'@; put 'cm93XVtlLmNvbF19YWRkUm93cyhlLHQpe2NvbnN0IHI9W107Zm9yKGxldCBpPTA7aTx0O2krKylyLnB1c2gobmV3IEFycmF5KHRoaXMud2lkdGgpKTt0aGlzLm1hcHBpbmcuc3BsaWNlKGUsMCwuLi5yKSx0aGlzLmhlaWdodCs9dH1hZGRDb2x1bW5zKGUsdCl7Zm9yKGxldCByPTA7cjx0aGlz'@; put 'LmhlaWdodDtyKyspdm9pZCAwIT09dGhpcy5tYXBwaW5nW3JdJiZ0aGlzLm1hcHBpbmdbcl0uc3BsaWNlKGUsMCwuLi5uZXcgQXJyYXkodCkpO3RoaXMud2lkdGgrPXR9cmVtb3ZlUm93cyhlKXt0aGlzLm1hcHBpbmcuc3BsaWNlKGUucm93U3RhcnQsZS5udW1iZXJPZlJvd3MpO2NvbnN0IHQ9'@; put 'TWF0aC5taW4odGhpcy5oZWlnaHQtMSxlLnJvd0VuZCkscj1NYXRoLm1heCgwLHQtZS5yb3dTdGFydCsxKTt0aGlzLmhlaWdodD1NYXRoLm1heCgwLHRoaXMuaGVpZ2h0LXIpfXJlbW92ZUNvbHVtbnMoZSl7Zm9yKGxldCBpPTA7aTx0aGlzLmhlaWdodDtpKyspdm9pZCAwIT09dGhpcy5tYXBw'@; put 'aW5nW2ldJiZ0aGlzLm1hcHBpbmdbaV0uc3BsaWNlKGUuY29sdW1uU3RhcnQsZS5udW1iZXJPZkNvbHVtbnMpO2NvbnN0IHQ9TWF0aC5taW4odGhpcy53aWR0aC0xLGUuY29sdW1uRW5kKSxyPU1hdGgubWF4KDAsdC1lLmNvbHVtblN0YXJ0KzEpO3RoaXMud2lkdGg9TWF0aC5tYXgoMCx0aGlz'@; put 'LndpZHRoLXIpfSpnZXRFbnRyaWVzKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5oZWlnaHQ7Kyt0KWZvcihsZXQgcj0wO3I8dGhpcy53aWR0aDsrK3Ipe2NvbnN0IGk9dGhpcy5nZXRDZWxsVmVydGV4KHIsdCk7aSYmKHlpZWxkW0JvKGUscix0KSxpXSl9fSp2ZXJ0aWNlc0Zyb21Db2x1bW4oZSl7'@; put 'Zm9yKGxldCB0PTA7dDx0aGlzLmhlaWdodDsrK3Qpe2NvbnN0IHI9dGhpcy5nZXRDZWxsVmVydGV4KGUsdCk7ciYmKHlpZWxkIHIpfX0qdmVydGljZXNGcm9tUm93KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy53aWR0aDsrK3Qpe2NvbnN0IHI9dGhpcy5nZXRDZWxsVmVydGV4KHQsZSk7ciYmKHlp'@; put 'ZWxkIHIpfX0qdmVydGljZXNGcm9tQ29sdW1uc1NwYW4oZSl7Zm9yKGxldCB0PWUuY29sdW1uU3RhcnQ7dDw9ZS5jb2x1bW5FbmQ7Kyt0KWZvcihsZXQgcj0wO3I8dGhpcy5oZWlnaHQ7KytyKXtjb25zdCBpPXRoaXMuZ2V0Q2VsbFZlcnRleCh0LHIpO2kmJih5aWVsZCBpKX19KnZlcnRpY2Vz'@; put 'RnJvbVJvd3NTcGFuKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy53aWR0aDsrK3QpZm9yKGxldCByPWUucm93U3RhcnQ7cjw9ZS5yb3dFbmQ7KytyKXtjb25zdCBpPXRoaXMuZ2V0Q2VsbFZlcnRleCh0LHIpO2kmJih5aWVsZCBpKX19KmVudHJpZXNGcm9tUm93c1NwYW4oZSl7Zm9yKGxldCB0PTA7'@; put 'dDx0aGlzLndpZHRoOysrdClmb3IobGV0IHI9ZS5yb3dTdGFydDtyPD1lLnJvd0VuZDsrK3Ipe2NvbnN0IGk9dGhpcy5nZXRDZWxsVmVydGV4KHQscik7aSYmKHlpZWxkW0JvKGUuc2hlZXQsdCxyKSxpXSl9fSplbnRyaWVzRnJvbUNvbHVtbnNTcGFuKGUpe2ZvcihsZXQgdD1lLmNvbHVtblN0'@; put 'YXJ0O3Q8PWUuY29sdW1uRW5kOysrdClmb3IobGV0IHI9MDtyPHRoaXMuaGVpZ2h0Oysrcil7Y29uc3QgaT10aGlzLmdldENlbGxWZXJ0ZXgodCxyKTtpJiYoeWllbGRbQm8oZS5zaGVldCx0LHIpLGldKX19KnZlcnRpY2VzKCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmhlaWdodDsrK2UpZm9yKGxl'@; put 'dCB0PTA7dDx0aGlzLndpZHRoOysrdCl7Y29uc3Qgcj10aGlzLmdldENlbGxWZXJ0ZXgodCxlKTtyJiYoeWllbGQgcil9fWdldENlbGxWZXJ0ZXgoZSx0KXt2YXIgcjtyZXR1cm4gbnVsbD09PShyPXRoaXMubWFwcGluZ1t0XSl8fHZvaWQgMD09PXI/dm9pZCAwOnJbZV19fXZhciB0bj1mdW5j'@; put 'dGlvbihuKXtyZXR1cm4gbi5ESVZfQllfWkVSTz0iRElWX0JZX1pFUk8iLG4uTkFNRT0iTkFNRSIsbi5WQUxVRT0iVkFMVUUiLG4uTlVNPSJOVU0iLG4uTkE9Ik5BIixuLkNZQ0xFPSJDWUNMRSIsbi5SRUY9IlJFRiIsbi5TUElMTD0iU1BJTEwiLG4uTElDPSJMSUMiLG4uRVJST1I9IkVSUk9S'@; put 'IixufSh0bnx8e30pLFRtPWZ1bmN0aW9uKG4pe3JldHVybiBuLkZPUk1VTEE9IkZPUk1VTEEiLG4uVkFMVUU9IlZBTFVFIixuLkFSUkFZPSJBUlJBWSIsbi5FTVBUWT0iRU1QVFkiLG4uQVJSQVlGT1JNVUxBPSJBUlJBWUZPUk1VTEEiLG59KFRtfHx7fSksSmdlPWZ1bmN0aW9uKG4pe3JldHVy'@; put 'biBuLkVNUFRZPSJFTVBUWSIsbi5OVU1CRVI9Ik5VTUJFUiIsbi5TVFJJTkc9IlNUUklORyIsbi5CT09MRUFOPSJCT09MRUFOIixuLkVSUk9SPSJFUlJPUiIsbn0oSmdlfHx7fSksaVdlPWZ1bmN0aW9uKG4pe3JldHVybiBuLk5VTUJFUj0iTlVNQkVSIixufShpV2V8fHt9KTtjb25zdCBVNj1P'@; put 'YmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSmdlKSxpV2UpLG9XZT0oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEpnZSksb2EpLG49Pntzd2l0Y2gobil7Y2FzZSBVNi5FTVBUWTpyZXR1cm4gMDtjYXNlIFU2Lk5VTUJFUjpyZXR1cm4gMTtjYXNlIFU2LlNUUklORzpyZXR1'@; put 'cm4gMjtjYXNlIFU2LkJPT0xFQU46cmV0dXJuIDM7Y2FzZSBVNi5FUlJPUjpyZXR1cm4gNH10aHJvdyBuZXcgRXJyb3IoIkNlbGwgdmFsdWUgbm90IGNvbXB1dGVkIil9KSxGcT1uPT57aWYobj09PWxsKXJldHVybiBVNi5FTVBUWTtpZihuIGluc3RhbmNlb2YgUHR8fG4gaW5zdGFuY2VvZiBs'@; put 'YSlyZXR1cm4gVTYuRVJST1I7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBVNi5TVFJJTkc7aWYoY2MobikpcmV0dXJuIFU2Lk5VTUJFUjtpZigiYm9vbGVhbiI9PXR5cGVvZiBuKXJldHVybiBVNi5CT09MRUFOO3Rocm93IG5ldyBFcnJvcigiQ2VsbCB2YWx1ZSBub3QgY29tcHV0ZWQi'@; put 'KX07Y2xhc3MgUHR7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMudHlwZT1lLHRoaXMubWVzc2FnZT10LHRoaXMucm9vdD1yfXN0YXRpYyBwYXJzaW5nRXJyb3IoZSl7cmV0dXJuIG5ldyBQdCh0bi5FUlJPUixgJHtkci5QYXJzZUVycm9yfSR7ZT8iICIrZToiIn1gKX1hdHRhY2hSb290VmVydGV4'@; put 'KGUpe3JldHVybiB2b2lkIDA9PT10aGlzLnJvb3Q/bmV3IFB0KHRoaXMudHlwZSx0aGlzLm1lc3NhZ2UsZSk6dGhpc319Y29uc3QgYVdlPShuLGUpPT4oe3NoZWV0Om4scm93OmV9KSxYSnQ9bj0+bi5yb3c8MCxzV2U9KG4sZSk9Pih7c2hlZXQ6bixjb2w6ZX0pLFFKdD1uPT5uLmNvbDwwLEJv'@; put 'PShuLGUsdCk9Pih7c2hlZXQ6bixjb2w6ZSxyb3c6dH0pLG5wPW49Pm4uY29sPDB8fG4ucm93PDAsSkp0PShuLGUsdCxyKT0+Qm8oZSxuLmNvbCt0LG4ucm93K3IpLGNQPW49PmAke24uc2hlZXR9LCR7bi5yb3d9LCR7bi5jb2x9YDtmdW5jdGlvbiBFaChuKXt2YXIgZSx0LHI7cmV0dXJuIG4m'@; put 'Jigib2JqZWN0Ij09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSYmIm51bWJlciI9PXR5cGVvZihudWxsPT09KGU9bil8fHZvaWQgMD09PWU/dm9pZCAwOmUuc2hlZXQpJiYibnVtYmVyIj09dHlwZW9mKG51bGw9PT0odD1uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jb2wpJiYibnVt'@; put 'YmVyIj09dHlwZW9mKG51bGw9PT0ocj1uKXx8dm9pZCAwPT09cj92b2lkIDA6ci5yb3cpfWNvbnN0ICQ0PShuLGUpPT57dmFyIHQ7cmV0dXJuIG51bGwhPT0odD1uLnNoZWV0KSYmdm9pZCAwIT09dD90OmUuc2hlZXR9LHVQPShuLGUpPT5uLnNoZWV0PT09ZS5zaGVldCYmbi5jb2w9PT1lLmNv'@; put 'bCYmbi5yb3c9PT1lLnJvdztmdW5jdGlvbiB2ZyhuKXtyZXR1cm4hKCFufHwib2JqZWN0IiE9dHlwZW9mIG4mJiJmdW5jdGlvbiIhPXR5cGVvZiBuKSYmInN0YXJ0ImluIG4mJkVoKG4uc3RhcnQpJiYiZW5kImluIG4mJkVoKG4uZW5kKX1jb25zdCBlbWU9KG4sZSk9Pih7c3RhcnQ6bixlbmQ6'@; put 'ZX0pO2NsYXNzIGJhe2NvbnN0cnVjdG9yKGUsdCl7aWYoZS5zaGVldCE9PXQuc2hlZXQpdGhyb3cgbmV3IGlQKGUuc2hlZXQsdC5zaGVldCk7dGhpcy5zdGFydD1CbyhlLnNoZWV0LGUuY29sLGUucm93KSx0aGlzLmVuZD1Cbyh0LnNoZWV0LHQuY29sLHQucm93KX1nZXQgc2hlZXQoKXtyZXR1'@; put 'cm4gdGhpcy5zdGFydC5zaGVldH1zdGF0aWMgZnJvbVNpbXBsZUNlbGxBZGRyZXNzZXMoZSx0KXtpZihlLnNoZWV0IT09dC5zaGVldCl0aHJvdyBuZXcgaVAoZS5zaGVldCx0LnNoZWV0KTtjb25zdCByPXQuY29sLWUuY29sLGk9dC5yb3ctZS5yb3c7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShp'@; put 'KSYmTnVtYmVyLmlzRmluaXRlKHIpP25ldyBiYShlLHQpOk51bWJlci5pc0Zpbml0ZShpKT9uZXcgbDkoZS5zaGVldCxlLnJvdyx0LnJvdyk6bmV3IHM5KGUuc2hlZXQsZS5jb2wsdC5jb2wpfXN0YXRpYyBmcm9tQXN0KGUsdCl7cmV0dXJuIGUudHlwZT09PXJuLkNFTExfUkFOR0U/YmEuZnJv'@; put 'bUNlbGxSYW5nZShlLHQpOmUudHlwZT09PXJuLkNPTFVNTl9SQU5HRT9zOS5mcm9tQ29sdW1uUmFuZ2UoZSx0KTpsOS5mcm9tUm93UmFuZ2VBc3QoZSx0KX1zdGF0aWMgZnJvbUFzdE9yVW5kZWYoZSx0KXt0cnl7cmV0dXJuIGJhLmZyb21Bc3QoZSx0KX1jYXRjaHtyZXR1cm59fXN0YXRpYyBm'@; put 'cm9tQ2VsbFJhbmdlKGUsdCl7cmV0dXJuIG5ldyBiYShlLnN0YXJ0LnRvU2ltcGxlQ2VsbEFkZHJlc3ModCksZS5lbmQudG9TaW1wbGVDZWxsQWRkcmVzcyh0KSl9c3RhdGljIHNwYW5Gcm9tKGUsdCxyKXtjb25zdCBpPWJhLnNwYW5Gcm9tT3JVbmRlZihlLHQscik7aWYodm9pZCAwPT09aSl0'@; put 'aHJvdyBuZXcgRXJyb3IoIkFic29sdXRlQ2VsbFJhbmdlOiBXcm9uZyByYW5nZSBzaXplIik7cmV0dXJuIGl9c3RhdGljIHNwYW5Gcm9tT3JVbmRlZihlLHQscil7cmV0dXJuIU51bWJlci5pc0Zpbml0ZSh0KSYmTnVtYmVyLmlzRmluaXRlKHIpPzAhPT1lLmNvbD92b2lkIDA6bmV3IGw5KGUu'@; put 'c2hlZXQsZS5yb3csZS5yb3crci0xKTohTnVtYmVyLmlzRmluaXRlKHIpJiZOdW1iZXIuaXNGaW5pdGUodCk/MCE9PWUucm93P3ZvaWQgMDpuZXcgczkoZS5zaGVldCxlLmNvbCxlLmNvbCt0LTEpOk51bWJlci5pc0Zpbml0ZShyKSYmTnVtYmVyLmlzRmluaXRlKHQpP25ldyBiYShlLEJvKGUu'@; put 'c2hlZXQsZS5jb2wrdC0xLGUucm93K3ItMSkpOnZvaWQgMH1zdGF0aWMgZnJvbUNvb3JkaW5hdGVzKGUsdCxyLGksbyl7cmV0dXJuIG5ldyBiYShCbyhlLHQsciksQm8oZSxpLG8pKX1pc0Zpbml0ZSgpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodGhpcy5zaXplKCkpfWRvZXNPdmVybGFwKGUp'@; put 'e3JldHVybiEodGhpcy5zdGFydC5zaGVldCE9ZS5zdGFydC5zaGVldHx8dGhpcy5lbmQucm93PGUuc3RhcnQucm93fHx0aGlzLnN0YXJ0LnJvdz5lLmVuZC5yb3d8fHRoaXMuZW5kLmNvbDxlLnN0YXJ0LmNvbHx8dGhpcy5zdGFydC5jb2w+ZS5lbmQuY29sKX1hZGRyZXNzSW5SYW5nZShlKXty'@; put 'ZXR1cm4gdGhpcy5zaGVldD09PWUuc2hlZXQmJnRoaXMuc3RhcnQucm93PD1lLnJvdyYmdGhpcy5lbmQucm93Pj1lLnJvdyYmdGhpcy5zdGFydC5jb2w8PWUuY29sJiZ0aGlzLmVuZC5jb2w+PWUuY29sfWNvbHVtbkluUmFuZ2UoZSl7cmV0dXJuIHRoaXMuc2hlZXQ9PT1lLnNoZWV0JiZ0aGlz'@; put 'LnN0YXJ0LmNvbDw9ZS5jb2wmJnRoaXMuZW5kLmNvbD49ZS5jb2x9cm93SW5SYW5nZShlKXtyZXR1cm4gdGhpcy5zaGVldD09PWUuc2hlZXQmJnRoaXMuc3RhcnQucm93PD1lLnJvdyYmdGhpcy5lbmQucm93Pj1lLnJvd31jb250YWluc1JhbmdlKGUpe3JldHVybiB0aGlzLmFkZHJlc3NJblJh'@; put 'bmdlKGUuc3RhcnQpJiZ0aGlzLmFkZHJlc3NJblJhbmdlKGUuZW5kKX1pbnRlcnNlY3Rpb25XaXRoKGUpe2lmKHRoaXMuc2hlZXQhPT1lLnN0YXJ0LnNoZWV0KXJldHVybjtjb25zdCB0PU1hdGgubWF4KHRoaXMuc3RhcnQucm93LGUuc3RhcnQucm93KSxyPU1hdGgubWluKHRoaXMuZW5kLnJv'@; put 'dyxlLmVuZC5yb3cpLGk9TWF0aC5tYXgodGhpcy5zdGFydC5jb2wsZS5zdGFydC5jb2wpLG89TWF0aC5taW4odGhpcy5lbmQuY29sLGUuZW5kLmNvbCk7cmV0dXJuIHQ+cnx8aT5vP3ZvaWQgMDpuZXcgYmEoQm8odGhpcy5zaGVldCxpLHQpLEJvKHRoaXMuc2hlZXQsbyxyKSl9aW5jbHVkZXNS'@; put 'b3coZSl7cmV0dXJuIHRoaXMuc3RhcnQucm93PGUmJnRoaXMuZW5kLnJvdz49ZX1pbmNsdWRlc0NvbHVtbihlKXtyZXR1cm4gdGhpcy5zdGFydC5jb2w8ZSYmdGhpcy5lbmQuY29sPj1lfXNoaWZ0QnlSb3dzKGUpe3RoaXMuc3RhcnQucm93Kz1lLHRoaXMuZW5kLnJvdys9ZX1leHBhbmRCeVJv'@; put 'd3MoZSl7dGhpcy5lbmQucm93Kz1lfXNoaWZ0QnlDb2x1bW5zKGUpe3RoaXMuc3RhcnQuY29sKz1lLHRoaXMuZW5kLmNvbCs9ZX1zaGlmdGVkKGUsdCl7cmV0dXJuIGJhLnNwYW5Gcm9tKEJvKHRoaXMuc2hlZXQsdGhpcy5zdGFydC5jb2wrZSx0aGlzLnN0YXJ0LnJvdyt0KSx0aGlzLndpZHRo'@; put 'KCksdGhpcy5oZWlnaHQoKSl9ZXhwYW5kQnlDb2x1bW5zKGUpe3RoaXMuZW5kLmNvbCs9ZX1tb3ZlVG9TaGVldChlKXt0aGlzLnN0YXJ0LnNoZWV0PWUsdGhpcy5lbmQuc2hlZXQ9ZX1yZW1vdmVTcGFuKGUpe2UgaW5zdGFuY2VvZiB0cD90aGlzLnJlbW92ZVJvd3MoZS5zdGFydCxlLmVuZCk6'@; put 'dGhpcy5yZW1vdmVDb2x1bW5zKGUuc3RhcnQsZS5lbmQpfXNob3VsZEJlUmVtb3ZlZCgpe3JldHVybiB0aGlzLndpZHRoKCk8PTB8fHRoaXMuaGVpZ2h0KCk8PTB9cmFuZ2VXaXRoU2FtZVdpZHRoKGUsdCl7cmV0dXJuIGJhLnNwYW5Gcm9tKEJvKHRoaXMuc2hlZXQsdGhpcy5zdGFydC5jb2ws'@; put 'ZSksdGhpcy53aWR0aCgpLHQpfXJhbmdlV2l0aFNhbWVIZWlnaHQoZSx0KXtyZXR1cm4gYmEuc3BhbkZyb20oQm8odGhpcy5zaGVldCxlLHRoaXMuc3RhcnQucm93KSx0LHRoaXMuaGVpZ2h0KCkpfXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5zdGFydC5zaGVldH0sJHt0aGlzLnN0YXJ0LmNv'@; put 'bH0sJHt0aGlzLnN0YXJ0LnJvd30sJHt0aGlzLmVuZC5jb2x9LCR7dGhpcy5lbmQucm93fWB9d2lkdGgoKXtyZXR1cm4gdGhpcy5lbmQuY29sLXRoaXMuc3RhcnQuY29sKzF9aGVpZ2h0KCl7cmV0dXJuIHRoaXMuZW5kLnJvdy10aGlzLnN0YXJ0LnJvdysxfXNpemUoKXtyZXR1cm4gdGhpcy5o'@; put 'ZWlnaHQoKSp0aGlzLndpZHRoKCl9YXJyYXlPZkFkZHJlc3Nlc0luUmFuZ2UoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8dGhpcy5oZWlnaHQoKTsrK3Qpe2VbdF09W107Zm9yKGxldCByPTA7cjx0aGlzLndpZHRoKCk7KytyKXtjb25zdCBpPUJvKHRoaXMuc2hlZXQsdGhpcy5zdGFydC5j'@; put 'b2wrcix0aGlzLnN0YXJ0LnJvdyt0KTtlW3RdLnB1c2goaSl9fXJldHVybiBlfXdpdGhTdGFydChlKXtyZXR1cm4gbmV3IGJhKGUsdGhpcy5lbmQpfXNhbWVEaW1lbnNpb25zQXMoZSl7cmV0dXJuIHRoaXMud2lkdGgoKT09PWUud2lkdGgoKSYmdGhpcy5oZWlnaHQoKT09PWUuaGVpZ2h0KCl9'@; put 'c2FtZUFzKGUpe3JldHVybiB1UCh0aGlzLnN0YXJ0LGUuc3RhcnQpJiZ1UCh0aGlzLmVuZCxlLmVuZCl9YWRkcmVzc2VzQXJyYXlNYXAoZSx0KXtjb25zdCByPVtdO2xldCBpPXRoaXMuc3RhcnQucm93O2Zvcig7aTw9dGhpcy5lZmZlY3RpdmVFbmRSb3coZSk7KXtsZXQgbz10aGlzLnN0YXJ0'@; put 'LmNvbDtjb25zdCBhPVtdO2Zvcig7bzw9dGhpcy5lZmZlY3RpdmVFbmRDb2x1bW4oZSk7KWEucHVzaCh0KEJvKHRoaXMuc3RhcnQuc2hlZXQsbyxpKSkpLG8rKztyLnB1c2goYSksaSsrfXJldHVybiByfWFkZHJlc3NlcyhlKXtjb25zdCB0PVtdO2xldCByPXRoaXMuc3RhcnQucm93O2NvbnN0'@; put 'IGk9dGhpcy5lZmZlY3RpdmVFbmRSb3coZSksbz10aGlzLmVmZmVjdGl2ZUVuZENvbHVtbihlKTtmb3IoO3I8PWk7KXtsZXQgYT10aGlzLnN0YXJ0LmNvbDtmb3IoO2E8PW87KXQucHVzaChCbyh0aGlzLnN0YXJ0LnNoZWV0LGEscikpLGErKztyKyt9cmV0dXJuIHR9KmFkZHJlc3Nlc1dpdGhE'@; put 'aXJlY3Rpb24oZSx0LHIpe2lmKGU+MClpZih0PjApe2xldCBpPXRoaXMuZWZmZWN0aXZlRW5kUm93KHIpO2Zvcig7aT49dGhpcy5zdGFydC5yb3c7KXtsZXQgbz10aGlzLmVmZmVjdGl2ZUVuZENvbHVtbihyKTtmb3IoO28+PXRoaXMuc3RhcnQuY29sOyl5aWVsZCBCbyh0aGlzLnN0YXJ0LnNo'@; put 'ZWV0LG8saSksby09MTtpLT0xfX1lbHNle2xldCBpPXRoaXMuc3RhcnQucm93O2Zvcig7aTw9dGhpcy5lZmZlY3RpdmVFbmRSb3cocik7KXtsZXQgbz10aGlzLmVmZmVjdGl2ZUVuZENvbHVtbihyKTtmb3IoO28+PXRoaXMuc3RhcnQuY29sOyl5aWVsZCBCbyh0aGlzLnN0YXJ0LnNoZWV0LG8s'@; put 'aSksby09MTtpKz0xfX1lbHNlIGlmKHQ+MCl7bGV0IGk9dGhpcy5lZmZlY3RpdmVFbmRSb3cocik7Zm9yKDtpPj10aGlzLnN0YXJ0LnJvdzspe2xldCBvPXRoaXMuc3RhcnQuY29sO2Zvcig7bzw9dGhpcy5lZmZlY3RpdmVFbmRDb2x1bW4ocik7KXlpZWxkIEJvKHRoaXMuc3RhcnQuc2hlZXQs'@; put 'byxpKSxvKz0xO2ktPTF9fWVsc2V7bGV0IGk9dGhpcy5zdGFydC5yb3c7Zm9yKDtpPD10aGlzLmVmZmVjdGl2ZUVuZFJvdyhyKTspe2xldCBvPXRoaXMuc3RhcnQuY29sO2Zvcig7bzw9dGhpcy5lZmZlY3RpdmVFbmRDb2x1bW4ocik7KXlpZWxkIEJvKHRoaXMuc3RhcnQuc2hlZXQsbyxpKSxv'@; put 'Kz0xO2krPTF9fX1nZXRBZGRyZXNzKGUsdCl7aWYoZTwwfHx0PDB8fHQ+dGhpcy5oZWlnaHQoKS0xfHxlPnRoaXMud2lkdGgoKS0xKXRocm93IEVycm9yKCJJbmRleCBvdXQgb2YgYm91bmQiKTtyZXR1cm4gQm8odGhpcy5zdGFydC5zaGVldCx0aGlzLnN0YXJ0LmNvbCtlLHRoaXMuc3RhcnQu'@; put 'cm93K3QpfWV4Y2VlZHNTaGVldFNpemVMaW1pdHMoZSx0KXtyZXR1cm4gdGhpcy5lbmQuY29sPj1lfHx0aGlzLmVuZC5yb3c+PXR9ZWZmZWN0aXZlRW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLmVuZC5jb2x9ZWZmZWN0aXZlRW5kUm93KGUpe3JldHVybiB0aGlzLmVuZC5yb3d9ZWZmZWN0aXZl'@; put 'V2lkdGgoZSl7cmV0dXJuIHRoaXMud2lkdGgoKX1lZmZlY3RpdmVIZWlnaHQoZSl7cmV0dXJuIHRoaXMuaGVpZ2h0KCl9cmVtb3ZlUm93cyhlLHQpe2lmKCEoZT50aGlzLmVuZC5yb3cpKXtpZih0PHRoaXMuc3RhcnQucm93KXJldHVybiB0aGlzLnNoaWZ0QnlSb3dzKC0odC1lKzEpKTtlPD10'@; put 'aGlzLnN0YXJ0LnJvdyYmKHRoaXMuc3RhcnQucm93PWUpLHRoaXMuZW5kLnJvdy09TWF0aC5taW4odCx0aGlzLmVuZC5yb3cpLWUrMX19cmVtb3ZlQ29sdW1ucyhlLHQpe2lmKCEoZT50aGlzLmVuZC5jb2wpKXtpZih0PHRoaXMuc3RhcnQuY29sKXJldHVybiB0aGlzLnNoaWZ0QnlDb2x1bW5z'@; put 'KC0odC1lKzEpKTtlPD10aGlzLnN0YXJ0LmNvbCYmKHRoaXMuc3RhcnQuY29sPWUpLHRoaXMuZW5kLmNvbC09TWF0aC5taW4odCx0aGlzLmVuZC5jb2wpLWUrMX19fWNsYXNzIHM5IGV4dGVuZHMgYmF7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKEJvKGUsdCwwKSxCbyhlLHIsTnVtYmVyLlBP'@; put 'U0lUSVZFX0lORklOSVRZKSl9c3RhdGljIGZyb21Db2x1bW5SYW5nZShlLHQpe2NvbnN0IHI9ZS5zdGFydC50b1NpbXBsZUNvbHVtbkFkZHJlc3ModCksaT1lLmVuZC50b1NpbXBsZUNvbHVtbkFkZHJlc3ModCk7aWYoci5zaGVldCE9PWkuc2hlZXQpdGhyb3cgbmV3IGlQKHIuc2hlZXQsaS5z'@; put 'aGVldCk7cmV0dXJuIG5ldyBzOShyLnNoZWV0LHIuY29sLGkuY29sKX1zaG91bGRCZVJlbW92ZWQoKXtyZXR1cm4gdGhpcy53aWR0aCgpPD0wfXNoaWZ0QnlSb3dzKGUpe31leHBhbmRCeVJvd3MoZSl7fXNoaWZ0ZWQoZSx0KXtyZXR1cm4gbmV3IHM5KHRoaXMuc2hlZXQsdGhpcy5zdGFydC5j'@; put 'b2wrZSx0aGlzLmVuZC5jb2wrZSl9cmFuZ2VXaXRoU2FtZUhlaWdodChlLHQpe3JldHVybiBuZXcgczkodGhpcy5zaGVldCxlLGUrdC0xKX1leGNlZWRzU2hlZXRTaXplTGltaXRzKGUsdCl7cmV0dXJuIHRoaXMuZW5kLmNvbD49ZX1lZmZlY3RpdmVFbmRSb3coZSl7cmV0dXJuIHRoaXMuZWZm'@; put 'ZWN0aXZlSGVpZ2h0KGUpLTF9ZWZmZWN0aXZlSGVpZ2h0KGUpe3JldHVybiBlLmdldFNoZWV0SGVpZ2h0KHRoaXMuc2hlZXQpfXJlbW92ZVJvd3MoZSx0KXt9fWNsYXNzIGw5IGV4dGVuZHMgYmF7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKEJvKGUsMCx0KSxCbyhlLE51bWJlci5QT1NJVElW'@; put 'RV9JTkZJTklUWSxyKSl9c3RhdGljIGZyb21Sb3dSYW5nZUFzdChlLHQpe2NvbnN0IHI9ZS5zdGFydC50b1NpbXBsZVJvd0FkZHJlc3ModCksaT1lLmVuZC50b1NpbXBsZVJvd0FkZHJlc3ModCk7aWYoci5zaGVldCE9PWkuc2hlZXQpdGhyb3cgbmV3IGlQKHIuc2hlZXQsaS5zaGVldCk7cmV0'@; put 'dXJuIG5ldyBsOShyLnNoZWV0LHIucm93LGkucm93KX1zaG91bGRCZVJlbW92ZWQoKXtyZXR1cm4gdGhpcy5oZWlnaHQoKTw9MH1zaGlmdEJ5Q29sdW1ucyhlKXt9ZXhwYW5kQnlDb2x1bW5zKGUpe31zaGlmdGVkKGUsdCl7cmV0dXJuIG5ldyBsOSh0aGlzLnNoZWV0LHRoaXMuc3RhcnQucm93'@; put 'K3QsdGhpcy5lbmQucm93K3QpfXJhbmdlV2l0aFNhbWVXaWR0aChlLHQpe3JldHVybiBuZXcgbDkodGhpcy5zaGVldCxlLGUrdC0xKX1leGNlZWRzU2hlZXRTaXplTGltaXRzKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz49dH1lZmZlY3RpdmVFbmRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuZWZm'@; put 'ZWN0aXZlV2lkdGgoZSktMX1lZmZlY3RpdmVXaWR0aChlKXtyZXR1cm4gZS5nZXRTaGVldFdpZHRoKHRoaXMuc2hlZXQpfXJlbW92ZUNvbHVtbnMoZSx0KXt9fWNsYXNzIHo2e2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmZvcm11bGFBZGRyZXNzPWUsdGhpcy5hcnJheXNGbGFnPXQsdGhpcy5m'@; put 'b3JtdWxhVmVydGV4PXJ9fWNvbnN0IG9lbj0vXlxzKihbKy1dPylccyooKFtcZFwuLF0rKGVbKy1dP1xkKyk/KVxzKihbaWpdPyl8KFtpal0pKVxzKigoWystXSlccyooWystXT8pXHMqKChbXGRcLixdKyhlWystXT9cZCspPylccyooW2lqXT8pfChbaWpdKSkpPyQvO2NsYXNzIGFlbntjb25z'@; put 'dHJ1Y3RvcihlLHQscil7dGhpcy5jb25maWc9ZSx0aGlzLmRhdGVUaW1lSGVscGVyPXQsdGhpcy5udW1iZXJMaXRlcmFsc0hlbHBlcj1yLHRoaXMubHQ9KGksbyk9PnRoaXMuY29tcGFyZShpLG8pPDAsdGhpcy5sZXE9KGksbyk9PnRoaXMuY29tcGFyZShpLG8pPD0wLHRoaXMuZ3Q9KGksbyk9'@; put 'PnRoaXMuY29tcGFyZShpLG8pPjAsdGhpcy5nZXE9KGksbyk9PnRoaXMuY29tcGFyZShpLG8pPj0wLHRoaXMuZXE9KGksbyk9PjA9PT10aGlzLmNvbXBhcmUoaSxvKSx0aGlzLm5lcT0oaSxvKT0+MCE9PXRoaXMuY29tcGFyZShpLG8pLHRoaXMucG93PShpLG8pPT5NYXRoLnBvdyhMbyhpKSxM'@; put 'byhvKSksdGhpcy5hZGRXaXRoRXBzaWxvblJhdz0oaSxvKT0+e2NvbnN0IGE9aStvO3JldHVybiBNYXRoLmFicyhhKTx0aGlzLmFjdHVhbEVwcypNYXRoLmFicyhpKT8wOmF9LHRoaXMuYWRkV2l0aEVwc2lsb249KGksbyk9Pntjb25zdCBhPWdXZShpLG8pO3JldHVybiB0aGlzLkV4dGVuZGVk'@; put 'TnVtYmVyRmFjdG9yeSh0aGlzLmFkZFdpdGhFcHNpbG9uUmF3KExvKGkpLExvKG8pKSxhKX0sdGhpcy51bmFyeU1pbnVzPWk9PldnZShpLC1MbyhpKSksdGhpcy51bmFyeVBsdXM9aT0+aSx0aGlzLnVuYXJ5UGVyY2VudD1pPT5uZXcgUnEoTG8oaSkvMTAwKSx0aGlzLmNvbmNhdD0oaSxvKT0+'@; put 'aS5jb25jYXQobyksdGhpcy5ub25zdHJpY3RhZGQ9KGksbyk9PmkgaW5zdGFuY2VvZiBQdD9pOm8gaW5zdGFuY2VvZiBQdD9vOiJudW1iZXIiPT10eXBlb2YgaT8ibnVtYmVyIj09dHlwZW9mIG8/dGhpcy5hZGRXaXRoRXBzaWxvblJhdyhpLG8pOmk6Im51bWJlciI9PXR5cGVvZiBvP286MCx0'@; put 'aGlzLnN1YnRyYWN0PShpLG8pPT57Y29uc3QgYT1nV2UoaSxvKSxsPUxvKGkpO2xldCBnPWwtTG8obyk7cmV0dXJuIE1hdGguYWJzKGcpPHRoaXMuYWN0dWFsRXBzKk1hdGguYWJzKGwpJiYoZz0wKSx0aGlzLkV4dGVuZGVkTnVtYmVyRmFjdG9yeShnLGEpfSx0aGlzLmRpdmlkZT0oaSxvKT0+'@; put 'e2NvbnN0IGE9TG8oaSksbD1MbyhvKTtpZigwPT09bClyZXR1cm4gbmV3IFB0KHRuLkRJVl9CWV9aRVJPKTt7Y29uc3QgdT1tV2UoaSxvKTtyZXR1cm4gdGhpcy5FeHRlbmRlZE51bWJlckZhY3RvcnkoYS9sLHUpfX0sdGhpcy5tdWx0aXBseT0oaSxvKT0+e2NvbnN0IGE9bVdlKGksbyk7cmV0'@; put 'dXJuIHRoaXMuRXh0ZW5kZWROdW1iZXJGYWN0b3J5KExvKGkpKkxvKG8pLGEpfSx0aGlzLm1hbnlUb0V4YWN0Q29tcGxleD1pPT57Y29uc3Qgbz1bXTtmb3IoY29uc3QgYSBvZiBpKXtpZihhIGluc3RhbmNlb2YgUHQpcmV0dXJuIGE7aWYoY2MoYSl8fCJzdHJpbmciPT10eXBlb2YgYSl7Y29u'@; put 'c3QgbD10aGlzLmNvZXJjZVNjYWxhclRvQ29tcGxleChhKTtsIGluc3RhbmNlb2YgUHR8fG8ucHVzaChsKX19cmV0dXJuIG99LHRoaXMuY29lcmNlTnVtYmVyc0V4YWN0UmFuZ2VzPWk9PnRoaXMubWFueVRvTnVtYmVycyhpLHRoaXMubWFueVRvRXhhY3ROdW1iZXJzKSx0aGlzLmNvZXJjZU51'@; put 'bWJlcnNDb2VyY2VSYW5nZXNEcm9wTnVsbHM9aT0+dGhpcy5tYW55VG9OdW1iZXJzKGksdGhpcy5tYW55VG9Db2VyY2VkTnVtYmVyc0Ryb3BOdWxscyksdGhpcy5tYW55VG9FeGFjdE51bWJlcnM9aT0+e2NvbnN0IG89W107Zm9yKGNvbnN0IGEgb2YgaSl7aWYoYSBpbnN0YW5jZW9mIFB0KXJl'@; put 'dHVybiBhO2NjKGEpJiZvLnB1c2goTG8oYSkpfXJldHVybiBvfSx0aGlzLm1hbnlUb09ubHlOdW1iZXJzRHJvcE51bGxzPWk9Pntjb25zdCBvPVtdO2Zvcihjb25zdCBhIG9mIGkpe2lmKGEgaW5zdGFuY2VvZiBQdClyZXR1cm4gYTtpZihjYyhhKSlvLnB1c2goTG8oYSkpO2Vsc2UgaWYoYSE9'@; put 'PWxsKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuTnVtYmVyRXhwZWN0ZWQpfXJldHVybiBvfSx0aGlzLm1hbnlUb0NvZXJjZWROdW1iZXJzRHJvcE51bGxzPWk9Pntjb25zdCBvPVtdO2Zvcihjb25zdCBhIG9mIGkpe2lmKGEgaW5zdGFuY2VvZiBQdClyZXR1cm4gYTtpZihhPT09bGwpY29u'@; put 'dGludWU7Y29uc3QgbD10aGlzLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihhKTtjYyhsKSYmby5wdXNoKExvKGwpKX1yZXR1cm4gb30sdGhpcy5jb2xsYXRvcj1mdW5jdGlvbiB0ZW4obil7cmV0dXJuIG5ldyBJbnRsLkNvbGxhdG9yKG4ubG9jYWxlTGFuZyx7c2Vuc2l0aXZpdHk6bi5j'@; put 'YXNlU2Vuc2l0aXZlP24uYWNjZW50U2Vuc2l0aXZlPyJ2YXJpYW50IjoiY2FzZSI6bi5hY2NlbnRTZW5zaXRpdmU/ImFjY2VudCI6ImJhc2UiLGNhc2VGaXJzdDpuLmNhc2VGaXJzdCxpZ25vcmVQdW5jdHVhdGlvbjpuLmlnbm9yZVB1bmN0dWF0aW9ufSl9KGUpLHRoaXMuYWN0dWFsRXBzPWUu'@; put 'c21hcnRSb3VuZGluZz9lLnByZWNpc2lvbkVwc2lsb246MH1lcU1hdGNoZXJGdW5jdGlvbihlKXtjb25zdCB0PXRoaXMuYnVpbGRSZWdleChlKTtyZXR1cm4gcj0+InN0cmluZyI9PXR5cGVvZiByJiZ0LnRlc3QodGhpcy5ub3JtYWxpemVTdHJpbmcocikpfW5lcU1hdGNoZXJGdW5jdGlvbihl'@; put 'KXtjb25zdCB0PXRoaXMuYnVpbGRSZWdleChlKTtyZXR1cm4gcj0+InN0cmluZyIhPXR5cGVvZiByfHwhdC50ZXN0KHRoaXMubm9ybWFsaXplU3RyaW5nKHIpKX1zZWFyY2hTdHJpbmcoZSx0KXt2YXIgcjtjb25zdCBvPXRoaXMuYnVpbGRSZWdleChlLCExKS5leGVjKHQpO3JldHVybiBudWxs'@; put 'IT09KHI9bz8uaW5kZXgpJiZ2b2lkIDAhPT1yP3I6LTF9cmVxdWlyZXNSZWdleChlKXtpZighdGhpcy5jb25maWcudXNlUmVndWxhckV4cHJlc3Npb25zJiYhdGhpcy5jb25maWcudXNlV2lsZGNhcmRzKXJldHVybiF0aGlzLmNvbmZpZy5tYXRjaFdob2xlQ2VsbDtmb3IobGV0IHQ9MDt0PGUu'@; put 'bGVuZ3RoO3QrKyl7Y29uc3Qgcj1lLmNoYXJBdCh0KTtpZihkUChyKXx8dGhpcy5jb25maWcudXNlUmVndWxhckV4cHJlc3Npb25zJiZoUChyKSlyZXR1cm4hMH1yZXR1cm4hMX1mbG9hdENtcChlLHQpe2NvbnN0IHI9TG8oZSksaT1Mbyh0KSxvPTErdGhpcy5hY3R1YWxFcHM7cmV0dXJuIGk+'@; put 'PTAmJnIqbz49aSYmcjw9aSpvfHxpPD0wJiZyKm88PWkmJnI+PWkqbz8wOnI+aT8xOi0xfWNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihlKXt2YXIgdDtyZXR1cm4gZSBpbnN0YW5jZW9mIFB0P2U6bnVsbCE9PSh0PXRoaXMuY29lcmNlVG9NYXliZU51bWJlcihlKSkmJnZvaWQgMCE9PXQ/'@; put 'dDpuZXcgUHQodG4uVkFMVUUsZHIuTnVtYmVyQ29lcmNpb24pfWNvZXJjZVRvTWF5YmVOdW1iZXIoZSl7dmFyIHQ7cmV0dXJuIG51bGwhPT0odD10aGlzLmNvZXJjZU5vbkRhdGVTY2FsYXJUb01heWJlTnVtYmVyKGUpKSYmdm9pZCAwIT09dD90OiJzdHJpbmciPT10eXBlb2YgZT90aGlzLmRh'@; put 'dGVUaW1lSGVscGVyLmRhdGVTdHJpbmdUb0RhdGVOdW1iZXIoZSk6dm9pZCAwfWNvZXJjZU5vbkRhdGVTY2FsYXJUb01heWJlTnVtYmVyKGUpe2lmKGU9PT1sbClyZXR1cm4gMDtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCIiPT09ZSlyZXR1cm4gMDtjb25zdCB0PXRoaXMuY29lcmNlU3Ry'@; put 'aW5nVG9NYXliZVBlcmNlbnROdW1iZXIoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gdDtjb25zdCByPXRoaXMuY29lcmNlU3RyaW5nVG9NYXliZUN1cnJlbmN5TnVtYmVyKGUpO3JldHVybiB2b2lkIDAhPT1yP3I6dGhpcy5udW1iZXJMaXRlcmFsc0hlbHBlci5udW1lcmljU3RyaW5nVG9NYXli'@; put 'ZU51bWJlcihlLnRyaW0oKSl9cmV0dXJuIGNjKGUpP2U6ImJvb2xlYW4iPT10eXBlb2YgZT9OdW1iZXIoZSk6dm9pZCAwfWNvZXJjZVN0cmluZ1RvTWF5YmVQZXJjZW50TnVtYmVyKGUpe2NvbnN0IHQ9ZS50cmltKCk7aWYodC5lbmRzV2l0aCgiJSIpKXtjb25zdCByPXQuc2xpY2UoMCx0Lmxl'@; put 'bmd0aC0xKS50cmltKCksaT10aGlzLm51bWJlckxpdGVyYWxzSGVscGVyLm51bWVyaWNTdHJpbmdUb01heWJlTnVtYmVyKHIpO2lmKHZvaWQgMCE9PWkpcmV0dXJuIG5ldyBScShpLzEwMCl9fWNvZXJjZVN0cmluZ1RvTWF5YmVDdXJyZW5jeU51bWJlcihlKXtjb25zdCB0PXRoaXMuY3VycmVu'@; put 'Y3lNYXRjaGVyKGUudHJpbSgpKTtpZih2b2lkIDAhPT10KXtjb25zdFtyLGldPXQsbz10aGlzLm51bWJlckxpdGVyYWxzSGVscGVyLm51bWVyaWNTdHJpbmdUb01heWJlTnVtYmVyKGkpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG5ldyBaZ2UobyxyKX19Y3VycmVuY3lNYXRjaGVyKGUpe2Zvcihj'@; put 'b25zdCB0IG9mIHRoaXMuY29uZmlnLmN1cnJlbmN5U3ltYm9sKXtpZihlLnN0YXJ0c1dpdGgodCkpcmV0dXJuW3QsZS5zbGljZSh0Lmxlbmd0aCkudHJpbSgpXTtpZihlLmVuZHNXaXRoKHQpKXJldHVyblt0LGUuc2xpY2UoMCxlLmxlbmd0aC10Lmxlbmd0aCkudHJpbSgpXX19Y29lcmNlQ29t'@; put 'cGxleEV4YWN0UmFuZ2VzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSlpZihpIGluc3RhbmNlb2YgbGEpdC5wdXNoKGkpO2Vsc2UgaWYoaSE9PWxsKXtjb25zdCBvPXRoaXMuY29lcmNlU2NhbGFyVG9Db21wbGV4KGkpO2lmKG8gaW5zdGFuY2VvZiBQdClyZXR1cm4gbzt0LnB1c2go'@; put 'byl9Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiB0KWlmKGkgaW5zdGFuY2VvZiBsYSl7Y29uc3Qgbz10aGlzLm1hbnlUb0V4YWN0Q29tcGxleChpLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpO2lmKG8gaW5zdGFuY2VvZiBQdClyZXR1cm4gbztyLnB1c2goLi4ubyl9ZWxzZSByLnB1c2go'@; put 'aSk7cmV0dXJuIHJ9Y29lcmNlU2NhbGFyVG9Db21wbGV4KGUpe3JldHVybiBlIGluc3RhbmNlb2YgUHQ/ZTplPT09bGw/WzAsMF06Y2MoZSk/W0xvKGUpLDBdOiJzdHJpbmciPT10eXBlb2YgZT90aGlzLmNvZXJjZVN0cmluZ1RvQ29tcGxleChlKTpuZXcgUHQodG4uTlVNLGRyLkNvbXBsZXhO'@; put 'dW1iZXJFeHBlY3RlZCl9RXh0ZW5kZWROdW1iZXJGYWN0b3J5KGUsdCl7Y29uc3R7dHlwZTpyLGZvcm1hdDppfT10O3N3aXRjaChyKXtjYXNlIG9hLk5VTUJFUl9SQVc6cmV0dXJuIGU7Y2FzZSBvYS5OVU1CRVJfQ1VSUkVOQ1k6cmV0dXJuIG5ldyBaZ2UoZSxpPz90aGlzLmNvbmZpZy5jdXJy'@; put 'ZW5jeVN5bWJvbFswXSk7Y2FzZSBvYS5OVU1CRVJfREFURTpyZXR1cm4gbmV3IFlnZShlLGkpO2Nhc2Ugb2EuTlVNQkVSX0RBVEVUSU1FOnJldHVybiBuZXcgJGdlKGUsaSk7Y2FzZSBvYS5OVU1CRVJfVElNRTpyZXR1cm4gbmV3IEdnZShlLGkpO2Nhc2Ugb2EuTlVNQkVSX1BFUkNFTlQ6cmV0'@; put 'dXJuIG5ldyBScShlLGkpfX1idWlsZFJlZ2V4KGUsdD0hMCl7ZT10aGlzLm5vcm1hbGl6ZVN0cmluZyhlKTtsZXQgcixpPXRoaXMuY29uZmlnLnVzZVdpbGRjYXJkcyxvPXRoaXMuY29uZmlnLnVzZVJlZ3VsYXJFeHByZXNzaW9ucztpZihvKXRyeXtSZWdFeHAoZSl9Y2F0Y2h7bz0hMSxpPSEx'@; put 'fXJldHVybiByPW8/ZnVuY3Rpb24gdWVuKG4sZSl7bGV0IHQ9IiI7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2NvbnN0IGk9bi5jaGFyQXQocik7ZFAoaSl8fGhQKGkpfHxlP3QrPWk6dCs9aS50b0xvd2VyQ2FzZSgpfXJldHVybiB0fShlLHRoaXMuY29uZmlnLmNhc2VTZW5zaXRpdmUp'@; put 'Omk/ZnVuY3Rpb24gbGVuKG4sZSl7bGV0IHQ9IiI7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2NvbnN0IGk9bi5jaGFyQXQocik7aWYoIn4iPT09aSl7aWYocj09bi5sZW5ndGgtMSl7dCs9In4iO2NvbnRpbnVlfWNvbnN0IG89bi5jaGFyQXQocisxKTtkUChvKXx8aFAobyk/KHQrPSJc'@; put 'XCIrbyxyKyspOih0Kz1vLHIrKyl9ZWxzZSBkUChpKT90Kz0iLiIraTpoUChpKT90Kz0iXFwiK2k6dCs9ZT9pOmkudG9Mb3dlckNhc2UoKX1yZXR1cm4gdH0oZSx0aGlzLmNvbmZpZy5jYXNlU2Vuc2l0aXZlKTpmdW5jdGlvbiBjZW4obixlKXtsZXQgdD0iIjtmb3IobGV0IHI9MDtyPG4ubGVu'@; put 'Z3RoO3IrKyl7Y29uc3QgaT1uLmNoYXJBdChyKTtkUChpKXx8aFAoaSk/dCs9IlxcIitpOnQrPWU/aTppLnRvTG93ZXJDYXNlKCl9cmV0dXJuIHR9KGUsdGhpcy5jb25maWcuY2FzZVNlbnNpdGl2ZSksdGhpcy5jb25maWcubWF0Y2hXaG9sZUNlbGwmJnQ/UmVnRXhwKCJeKCIrcisiKSQiKTpS'@; put 'ZWdFeHAocil9bm9ybWFsaXplU3RyaW5nKGUpe3JldHVybiB0aGlzLmNvbmZpZy5jYXNlU2Vuc2l0aXZlfHwoZT1lLnRvTG93ZXJDYXNlKCkpLHRoaXMuY29uZmlnLmFjY2VudFNlbnNpdGl2ZXx8KGU9dldlKGUsIm5mZCIpLnJlcGxhY2UoL1tcdTAzMDAtXHUwMzZmXS9nLCIiKSksZX1jb21w'@; put 'YXJlKGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiBlfHwic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IHI9InN0cmluZyI9PXR5cGVvZiBlP3RoaXMuZGF0ZVRpbWVIZWxwZXIuZGF0ZVN0cmluZ1RvRGF0ZU51bWJlcihlKTplLGk9InN0cmluZyI9PXR5cGVvZiB0P3RoaXMuZGF0ZVRpbWVIZWxw'@; put 'ZXIuZGF0ZVN0cmluZ1RvRGF0ZU51bWJlcih0KTp0O2lmKGNjKHIpJiZjYyhpKSlyZXR1cm4gdGhpcy5mbG9hdENtcChyLGkpfXJldHVybiBlPT09bGw/ZT11V2UodCk6dD09PWxsJiYodD11V2UoZSkpLCJzdHJpbmciPT10eXBlb2YgZSYmInN0cmluZyI9PXR5cGVvZiB0P3RoaXMuc3RyaW5n'@; put 'Q21wKGUsdCk6ImJvb2xlYW4iPT10eXBlb2YgZSYmImJvb2xlYW4iPT10eXBlb2YgdD9oV2UodG1lKGUpLHRtZSh0KSk6Y2MoZSkmJmNjKHQpP3RoaXMuZmxvYXRDbXAoZSx0KTplPT09bGwmJnQ9PT1sbD8wOmhXZShvV2UoRnEoZSkpLG9XZShGcSh0KSkpfXN0cmluZ0NtcChlLHQpe3JldHVy'@; put 'biB0aGlzLmNvbGxhdG9yLmNvbXBhcmUoZSx0KX1tYW55VG9OdW1iZXJzKGUsdCl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgbyBvZiBlKWlmKG8gaW5zdGFuY2VvZiBsYSlyLnB1c2gobyk7ZWxzZXtjb25zdCBhPUxvKHRoaXMuY29lcmNlU2NhbGFyVG9OdW1iZXJPckVycm9yKG8pKTtpZihhIGlu'@; put 'c3RhbmNlb2YgUHQpcmV0dXJuIGE7ci5wdXNoKGEpfWNvbnN0IGk9W107Zm9yKGNvbnN0IG8gb2YgcilpZihvIGluc3RhbmNlb2YgbGEpe2NvbnN0IGE9dChvLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpO2lmKGEgaW5zdGFuY2VvZiBQdClyZXR1cm4gYTtpLnB1c2goLi4uYSl9ZWxzZSBp'@; put 'LnB1c2gobyk7cmV0dXJuIGl9Y29lcmNlU3RyaW5nVG9Db21wbGV4KGUpe2NvbnN0IHQ9b2VuLmV4ZWMoZSk7aWYobnVsbD09PXQpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuQ29tcGxleE51bWJlckV4cGVjdGVkKTtsZXQgcixpO3JldHVybiByPXZvaWQgMCE9PXRbNl0/Ii0iPT09dFsxXT9b'@; put 'MCwtMV06WzAsMV06dGhpcy5wYXJzZUNvbXBsZXhUb2tlbih0WzFdK3RbM10sdFs1XSksciBpbnN0YW5jZW9mIFB0fHx2b2lkIDA9PT10WzhdP3I6KGk9dm9pZCAwIT09dFsxNF0/Ii0iPT09dFs5XT9bMCwtMV06WzAsMV06dGhpcy5wYXJzZUNvbXBsZXhUb2tlbih0WzldK3RbMTFdLHRbMTNd'@; put 'KSxpIGluc3RhbmNlb2YgUHQ/aToiIiE9PXRbNV18fCIiPT09dFsxM10/bmV3IFB0KHRuLk5VTSxkci5Db21wbGV4TnVtYmVyRXhwZWN0ZWQpOiIrIj09PXRbOF0/W3JbMF0raVswXSxyWzFdK2lbMV1dOltyWzBdLWlbMF0sclsxXS1pWzFdXSl9cGFyc2VDb21wbGV4VG9rZW4oZSx0KXtjb25z'@; put 'dCByPUxvKHRoaXMuY29lcmNlTm9uRGF0ZVNjYWxhclRvTWF5YmVOdW1iZXIoZSkpO3JldHVybiB2b2lkIDA9PT1yP25ldyBQdCh0bi5OVU0sZHIuQ29tcGxleE51bWJlckV4cGVjdGVkKToiIj09PXQ/W3IsMF06WzAscl19fWZ1bmN0aW9uIE1oKFtuLGVdLHQpe2lmKCFpc0Zpbml0ZShuKXx8'@; put 'IWlzRmluaXRlKGUpKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLk5hTik7aWYodD10Pz8iaSIsMD09PWUpcmV0dXJuYCR7bn1gO2NvbnN0IHI9YCR7LTE9PT1lfHwxPT09ZT8iIjpNYXRoLmFicyhlKX0ke3R9YDtyZXR1cm4gMD09PW4/YCR7ZTwwPyItIjoiIn0ke3J9YDpgJHtufSR7ZTwwPyIt'@; put 'IjoiKyJ9JHtyfWB9ZnVuY3Rpb24gY1dlKG4pe3JldHVybiBuIGluc3RhbmNlb2YgbGE/bjpsYS5mcm9tU2NhbGFyKG4pfWZ1bmN0aW9uIHRtZShuKXtyZXR1cm4gTnVtYmVyKG4pfWZ1bmN0aW9uIHVXZShuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/IiI6Y2Mobik/MDoiYm9vbGVhbiIh'@; put 'PXR5cGVvZiBuJiZsbH1mdW5jdGlvbiBkV2Uobil7aWYobiBpbnN0YW5jZW9mIFB0fHwiYm9vbGVhbiI9PXR5cGVvZiBuKXJldHVybiBuO2lmKG49PT1sbClyZXR1cm4hMTtpZihjYyhuKSlyZXR1cm4gMCE9PUxvKG4pO3tjb25zdCBlPW4udG9VcHBlckNhc2UoKTtyZXR1cm4iVFJVRSI9PT1l'@; put 'fHwiRkFMU0UiIT09ZSYmIiIhPT1lJiZ2b2lkIDB9fWZ1bmN0aW9uIG5tZShuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIFB0fHwic3RyaW5nIj09dHlwZW9mIG4/bjpuPT09bGw/IiI6Y2Mobik/TG8obikudG9TdHJpbmcoKTpuPyJUUlVFIjoiRkFMU0UifWZ1bmN0aW9uIHJtZShuKXtyZXR1cm4g'@; put 'bj09PWxsPzA6bn1mdW5jdGlvbiBoV2UobixlKXtjb25zdCB0PUxvKG4pLHI9TG8oZSk7cmV0dXJuIHQ+cj8xOnQ8cj8tMTowfWZ1bmN0aW9uIGZXZShuKXtyZXR1cm4gaXNOYU4obil8fG49PT0xLzB8fG49PT0tMS8wfWZ1bmN0aW9uIHBXZShuKXtyZXR1cm4gMD09PW4/MDpufWZ1bmN0aW9u'@; put 'IGRQKG4pe3JldHVyblsiKiIsIj8iXS5pbmNsdWRlcyhuKX1jb25zdCBzZW49WyJ7IiwifSIsIlsiLCJdIiwiKCIsIikiLCI8IiwiPiIsIj0iLCIuIiwiKyIsIi0iLCIsIiwiXFwiLCIkIiwiXiIsIiEiXTtmdW5jdGlvbiBoUChuKXtyZXR1cm4gc2VuLmluY2x1ZGVzKG4pfWZ1bmN0aW9uIGdX'@; put 'ZShuLGUpe2NvbnN0e3R5cGU6dCxmb3JtYXQ6cn09SXEobikse3R5cGU6aSxmb3JtYXQ6b309SXEoZSk7aWYodD09PW9hLk5VTUJFUl9SQVcpcmV0dXJue3R5cGU6aSxmb3JtYXQ6b307aWYoaT09PW9hLk5VTUJFUl9SQVcpcmV0dXJue3R5cGU6dCxmb3JtYXQ6cn07aWYoISh0IT09b2EuTlVN'@; put 'QkVSX0RBVEVUSU1FJiZ0IT09b2EuTlVNQkVSX0RBVEV8fGkhPT1vYS5OVU1CRVJfREFURVRJTUUmJmkhPT1vYS5OVU1CRVJfREFURSkpcmV0dXJue3R5cGU6b2EuTlVNQkVSX1JBV307aWYodD09PW9hLk5VTUJFUl9USU1FKXtpZihpPT09b2EuTlVNQkVSX0RBVEUpcmV0dXJue3R5cGU6b2Eu'@; put 'TlVNQkVSX0RBVEVUSU1FLGZvcm1hdDpgJHtvfSAke3J9YH07aWYoaT09PW9hLk5VTUJFUl9EQVRFVElNRSlyZXR1cm57dHlwZTpvYS5OVU1CRVJfREFURVRJTUUsZm9ybWF0Om99fWlmKGk9PT1vYS5OVU1CRVJfVElNRSl7aWYodD09PW9hLk5VTUJFUl9EQVRFKXJldHVybnt0eXBlOm9hLk5V'@; put 'TUJFUl9EQVRFVElNRSxmb3JtYXQ6YCR7cn0gJHtvfWB9O2lmKHQ9PT1vYS5OVU1CRVJfREFURVRJTUUpcmV0dXJue3R5cGU6b2EuTlVNQkVSX0RBVEVUSU1FLGZvcm1hdDpyfX1yZXR1cm57dHlwZTp0LGZvcm1hdDpyfX1mdW5jdGlvbiBtV2UobixlKXtsZXR7dHlwZTp0LGZvcm1hdDpyfT1J'@; put 'cShuKSx7dHlwZTppLGZvcm1hdDpvfT1JcShlKTtyZXR1cm4gdD09PW9hLk5VTUJFUl9QRVJDRU5UJiYodD1vYS5OVU1CRVJfUkFXLHI9dm9pZCAwKSxpPT09b2EuTlVNQkVSX1BFUkNFTlQmJihpPW9hLk5VTUJFUl9SQVcsbz12b2lkIDApLHQ9PT1vYS5OVU1CRVJfUkFXP3t0eXBlOmksZm9y'@; put 'bWF0Om99Omk9PT1vYS5OVU1CRVJfUkFXP3t0eXBlOnQsZm9ybWF0OnJ9Ont0eXBlOm9hLk5VTUJFUl9SQVd9fWZ1bmN0aW9uIGZQKG4pe3JldHVybiB2V2Uobi50b0xvd2VyQ2FzZSgpLCJuZmQiKS5yZXBsYWNlKC9bXHUwMzAwLVx1MDM2Zl0vZywiIil9ZnVuY3Rpb24gUHEobixlKXt2YXIg'@; put 'dDtpZihuLmlzQWRIb2MoKSlyZXR1cm4gbnVsbD09PSh0PW4uZGF0YVswXSl8fHZvaWQgMD09PXQ/dm9pZCAwOnRbMF07Y29uc3Qgcj1uLnJhbmdlO2lmKGUuZm9ybXVsYUFkZHJlc3Muc2hlZXQ9PT1yLnNoZWV0KWlmKDE9PT1yLndpZHRoKCkpe2NvbnN0IGk9ZS5mb3JtdWxhQWRkcmVzcy5y'@; put 'b3ctci5zdGFydC5yb3c7aWYoaT49MCYmaTxyLmhlaWdodCgpKXJldHVybiBuLmRhdGFbaV1bMF19ZWxzZSBpZigxPT09ci5oZWlnaHQoKSl7Y29uc3QgaT1lLmZvcm11bGFBZGRyZXNzLmNvbC1yLnN0YXJ0LmNvbDtpZihpPj0wJiZpPHIud2lkdGgoKSlyZXR1cm4gbi5kYXRhWzBdW2ldfX1m'@; put 'dW5jdGlvbiB2V2UobixlKXtyZXR1cm4gbi5ub3JtYWxpemUoZS50b1VwcGVyQ2FzZSgpKX12YXIgZXQ9ZnVuY3Rpb24obil7cmV0dXJuIG4uU1RSSU5HPSJTVFJJTkciLG4uTlVNQkVSPSJOVU1CRVIiLG4uQk9PTEVBTj0iQk9PTEVBTiIsbi5TQ0FMQVI9IlNDQUxBUiIsbi5OT0VSUk9SPSJO'@; put 'T0VSUk9SIixuLlJBTkdFPSJSQU5HRSIsbi5JTlRFR0VSPSJJTlRFR0VSIixuLkNPTVBMRVg9IkNPTVBMRVgiLG4uQU5ZPSJBTlkiLG59KGV0fHx7fSk7Y2xhc3MgQnN7Y29uc3RydWN0b3IoZSl7dGhpcy5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3I9dD0+dGhpcy5hcml0aG1ldGljSGVs'@; put 'cGVyLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcih0KSx0aGlzLnJ1bkZ1bmN0aW9uPSh0LHIsaSxvKT0+e2NvbnN0IGE9dGhpcy5ldmFsdWF0ZUFyZ3VtZW50cyh0LHIsaSksbD1hLm1hcCgoW3ZlLE1lXSk9PnZlKSx1PWEubWFwKChbdmUsTWVdKT0+TWUpLGc9dGhpcy5idWlsZE1ldGFk'@; put 'YXRhRm9yRWFjaEFyZ3VtZW50VmFsdWUobC5sZW5ndGgsaSksRT1yLmFycmF5c0ZsYWcmJiFpLnZlY3Rvcml6YXRpb25Gb3JiaWRkZW47aWYoIXRoaXMuaXNOdW1iZXJPZkFyZ3VtZW50VmFsdWVzVmFsaWQoZyxsLmxlbmd0aCkpcmV0dXJuIG5ldyBQdCh0bi5OQSxkci5Xcm9uZ0FyZ051bWJl'@; put 'cik7Y29uc3RbTyxaXT1FP3RoaXMuY2FsY3VsYXRlU2l6ZU9mVmVjdG9yaXplZFJlc3VsdEFycmF5KGwsZyk6WzEsMV07aWYoMT09PU8mJjE9PT1aKXtjb25zdCB2ZT10aGlzLnZlY3Rvcml6ZUFuZEJyb2FkY2FzdEFyZ3VtZW50c0lmTmVjZXNzYXJ5KEUsbCxnLDAsMCk7cmV0dXJuIHRoaXMu'@; put 'Y2FsY3VsYXRlU2luZ2xlQ2VsbE9mUmVzdWx0QXJyYXkocix2ZSxnLHUsbyxpLnJldHVybk51bWJlclR5cGUpfWNvbnN0IGVlPVsuLi5BcnJheShPKS5rZXlzKCldLm1hcCh2ZT0+Wy4uLkFycmF5KFopLmtleXMoKV0ubWFwKE1lPT57Y29uc3QgSGU9dGhpcy52ZWN0b3JpemVBbmRCcm9hZGNh'@; put 'c3RBcmd1bWVudHNJZk5lY2Vzc2FyeShFLGwsZyx2ZSxNZSksV2U9dGhpcy5jYWxjdWxhdGVTaW5nbGVDZWxsT2ZSZXN1bHRBcnJheShyLEhlLGcsdSxvLGkucmV0dXJuTnVtYmVyVHlwZSk7aWYoV2UgaW5zdGFuY2VvZiBsYSl0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0aW9uIHJldHVybmluZyBh'@; put 'cnJheSBjYW5ub3QgYmUgdmVjdG9yaXplZC4iKTtyZXR1cm4gV2V9KSk7cmV0dXJuIGxhLm9ubHlWYWx1ZXMoZWUpfSx0aGlzLnJ1bkZ1bmN0aW9uV2l0aFJlZmVyZW5jZUFyZ3VtZW50PSh0LHIsaSxvLGEsbD0oKT0+bmV3IFB0KHRuLk5BLGRyLkNlbGxSZWZFeHBlY3RlZCkpPT57aWYoMD09'@; put 'PXQubGVuZ3RoKXJldHVybiB0aGlzLnJldHVybk51bWJlcldyYXBwZXIobygpLGkucmV0dXJuTnVtYmVyVHlwZSk7aWYodC5sZW5ndGg+MSlyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLldyb25nQXJnTnVtYmVyKTtsZXQgZyx1PXRbMF07Zm9yKDt1LnR5cGU9PT1ybi5QQVJFTlRIRVNJUzspdT11'@; put 'LmV4cHJlc3Npb247aWYodS50eXBlPT09cm4uQ0VMTF9SRUZFUkVOQ0UpZz11LnJlZmVyZW5jZS50b1NpbXBsZUNlbGxBZGRyZXNzKHIuZm9ybXVsYUFkZHJlc3MpO2Vsc2UgaWYodS50eXBlPT09cm4uQ0VMTF9SQU5HRXx8dS50eXBlPT09cm4uQ09MVU1OX1JBTkdFfHx1LnR5cGU9PT1ybi5S'@; put 'T1dfUkFOR0UpdHJ5e2c9YmEuZnJvbUFzdCh1LHIuZm9ybXVsYUFkZHJlc3MpLnN0YXJ0fWNhdGNoe3JldHVybiBuZXcgUHQodG4uUkVGLGRyLkNlbGxSZWZFeHBlY3RlZCl9cmV0dXJuIHZvaWQgMCE9PWc/dGhpcy5yZXR1cm5OdW1iZXJXcmFwcGVyKGEoZyksaS5yZXR1cm5OdW1iZXJUeXBl'@; put 'KTp0aGlzLnJ1bkZ1bmN0aW9uKHQscixpLGwpfSx0aGlzLmludGVycHJldGVyPWUsdGhpcy5kZXBlbmRlbmN5R3JhcGg9ZS5kZXBlbmRlbmN5R3JhcGgsdGhpcy5jb2x1bW5TZWFyY2g9ZS5jb2x1bW5TZWFyY2gsdGhpcy5jb25maWc9ZS5jb25maWcsdGhpcy5zZXJpYWxpemF0aW9uPWUuc2Vy'@; put 'aWFsaXphdGlvbix0aGlzLmFycmF5U2l6ZVByZWRpY3Rvcj1lLmFycmF5U2l6ZVByZWRpY3Rvcix0aGlzLmRhdGVUaW1lSGVscGVyPWUuZGF0ZVRpbWVIZWxwZXIsdGhpcy5hcml0aG1ldGljSGVscGVyPWUuYXJpdGhtZXRpY0hlbHBlcn1ldmFsdWF0ZUFzdChlLHQpe3JldHVybiB0aGlzLmlu'@; put 'dGVycHJldGVyLmV2YWx1YXRlQXN0KGUsdCl9YXJyYXlTaXplRm9yQXN0KGUsdCl7cmV0dXJuIHRoaXMuYXJyYXlTaXplUHJlZGljdG9yLmNoZWNrQXJyYXlTaXplRm9yQXN0KGUsdCl9bGlzdE9mU2NhbGFyVmFsdWVzKGUsdCl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBv'@; put 'PXRoaXMuZXZhbHVhdGVBc3QoaSx0KTtpZihvIGluc3RhbmNlb2YgbGEpZm9yKGNvbnN0IGEgb2Ygby52YWx1ZXNGcm9tVG9wTGVmdENvcm5lcigpKXIucHVzaChbYSwhMF0pO2Vsc2Ugci5wdXNoKFtvLCExXSl9cmV0dXJuIHJ9Y29lcmNlVG9UeXBlKGUsdCxyKXtsZXQgaTtpZihlIGluc3Rh'@; put 'bmNlb2YgbGEpc3dpdGNoKHQuYXJndW1lbnRUeXBlKXtjYXNlIGV0LlJBTkdFOmNhc2UgZXQuQU5ZOmk9ZTticmVhaztkZWZhdWx0Ontjb25zdCBvPVBxKGUscik7aWYodm9pZCAwPT09bylyZXR1cm47ZT1vfX1pZighKGUgaW5zdGFuY2VvZiBsYSkpc3dpdGNoKHQuYXJndW1lbnRUeXBlKXtj'@; put 'YXNlIGV0LklOVEVHRVI6Y2FzZSBldC5OVU1CRVI6Y29uc3Qgbz10aGlzLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihlKTtpZighY2Mobykpe2k9bzticmVha31jb25zdCBhPUxvKG8pO2lmKHZvaWQgMCE9PXQubWF4VmFsdWUmJmE+dC5tYXhWYWx1ZSlyZXR1cm4gbmV3IFB0KHRuLk5V'@; put 'TSxkci5WYWx1ZUxhcmdlKTtpZih2b2lkIDAhPT10Lm1pblZhbHVlJiZhPHQubWluVmFsdWUpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuVmFsdWVTbWFsbCk7aWYodm9pZCAwIT09dC5sZXNzVGhhbiYmYT49dC5sZXNzVGhhbilyZXR1cm4gbmV3IFB0KHRuLk5VTSxkci5WYWx1ZUxhcmdlKTtp'@; put 'Zih2b2lkIDAhPT10LmdyZWF0ZXJUaGFuJiZhPD10LmdyZWF0ZXJUaGFuKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLlZhbHVlU21hbGwpO2lmKHQuYXJndW1lbnRUeXBlPT09ZXQuSU5URUdFUiYmIU51bWJlci5pc0ludGVnZXIoYSkpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuSW50ZWdlckV4'@; put 'cGVjdGVkKTtpPW87YnJlYWs7Y2FzZSBldC5TVFJJTkc6aT1ubWUoZSk7YnJlYWs7Y2FzZSBldC5CT09MRUFOOmk9ZFdlKGUpO2JyZWFrO2Nhc2UgZXQuU0NBTEFSOmNhc2UgZXQuTk9FUlJPUjpjYXNlIGV0LkFOWTppPWU7YnJlYWs7Y2FzZSBldC5SQU5HRTppZihlIGluc3RhbmNlb2YgUHQp'@; put 'cmV0dXJuIGU7aT1jV2UoZSk7YnJlYWs7Y2FzZSBldC5DT01QTEVYOnJldHVybiB0aGlzLmFyaXRobWV0aWNIZWxwZXIuY29lcmNlU2NhbGFyVG9Db21wbGV4KExvKGUpKX1yZXR1cm4gdC5wYXNzU3VidHlwZXx8dm9pZCAwPT09aT9pOkxvKGkpfWNhbGN1bGF0ZVNpbmdsZUNlbGxPZlJlc3Vs'@; put 'dEFycmF5KGUsdCxyLGksbyxhKXtjb25zdCBsPXRoaXMuY29lcmNlQXJndW1lbnRzVG9SZXF1aXJlZFR5cGVzKGUsdCxyLGkpO2lmKGwgaW5zdGFuY2VvZiBQdClyZXR1cm4gbDtjb25zdCB1PW8oLi4ubCk7cmV0dXJuIHRoaXMucmV0dXJuTnVtYmVyV3JhcHBlcih1LGEpfWNvZXJjZUFyZ3Vt'@; put 'ZW50c1RvUmVxdWlyZWRUeXBlcyhlLHQscixpKXtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8ci5sZW5ndGg7YSsrKXtjb25zdCBsPXJbYV0sdT12b2lkIDAhPT10W2FdP3RbYV06bD8uZGVmYXVsdFZhbHVlO2lmKHZvaWQgMD09PXUpe28ucHVzaCh2b2lkIDApO2NvbnRpbnVlfWNvbnN0IGc9'@; put 'dGhpcy5jb2VyY2VUb1R5cGUodSxsLGUpO2lmKHZvaWQgMD09PWcmJiFpW2FdKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuV3JvbmdUeXBlKTtpZihnIGluc3RhbmNlb2YgUHQmJmwuYXJndW1lbnRUeXBlIT09ZXQuU0NBTEFSKXJldHVybiBnO28ucHVzaChnKX1yZXR1cm4gb312ZWN0b3Jp'@; put 'emVBbmRCcm9hZGNhc3RBcmd1bWVudHNJZk5lY2Vzc2FyeShlLHQscixpLG8pe3JldHVybiB0Lm1hcCgoYSxsKT0+ZSYmdGhpcy5pc1JhbmdlUGFzc2VkQXNBU2NhbGFyQXJndW1lbnQoYSxyW2xdKT90aGlzLnZlY3Rvcml6ZUFuZEJyb2FkY2FzdFJhbmdlQXJndW1lbnQoYSxpLG8pOmEpfXZl'@; put 'Y3Rvcml6ZUFuZEJyb2FkY2FzdFJhbmdlQXJndW1lbnQoZSx0LHIpe3ZhciBpO2NvbnN0IG89MT09PWUuaGVpZ2h0KCk/MDp0LGE9MT09PWUud2lkdGgoKT8wOnI7cmV0dXJuIG51bGw9PT0oaT1lLmRhdGFbb10pfHx2b2lkIDA9PT1pP3ZvaWQgMDppW2FdfWV2YWx1YXRlQXJndW1lbnRzKGUs'@; put 'dCxyKXtyZXR1cm4gci5leHBhbmRSYW5nZXM/dGhpcy5saXN0T2ZTY2FsYXJWYWx1ZXMoZSx0KTplLm1hcChpPT5bdGhpcy5ldmFsdWF0ZUFzdChpLHQpLCExXSl9YnVpbGRNZXRhZGF0YUZvckVhY2hBcmd1bWVudFZhbHVlKGUsdCl7Y29uc3Qgcj10LnBhcmFtZXRlcnM/Wy4uLnQucGFyYW1l'@; put 'dGVyc106W107aWYodm9pZCAwIT09dC5yZXBlYXRMYXN0QXJncyYmTnVtYmVyLmlzSW50ZWdlcih0LnJlcGVhdExhc3RBcmdzKSYmdC5yZXBlYXRMYXN0QXJncz4wKWZvcig7ZT5yLmxlbmd0aDspci5wdXNoKC4uLnIuc2xpY2Uoci5sZW5ndGgtdC5yZXBlYXRMYXN0QXJncykpO3JldHVybiBy'@; put 'fWlzTnVtYmVyT2ZBcmd1bWVudFZhbHVlc1ZhbGlkKGUsdCl7cmV0dXJuISh0PmUubGVuZ3RoKSYmKCEodDxlLmxlbmd0aCl8fGUuc2xpY2UodCkuZXZlcnkobz0+bz8ub3B0aW9uYWxBcmd8fHZvaWQgMCE9PW8/LmRlZmF1bHRWYWx1ZSkpfWNhbGN1bGF0ZVNpemVPZlZlY3Rvcml6ZWRSZXN1'@; put 'bHRBcnJheShlLHQpe2NvbnN0IHI9ZS5maWx0ZXIoKGEsbCk9PnRoaXMuaXNSYW5nZVBhc3NlZEFzQVNjYWxhckFyZ3VtZW50KGEsdFtsXSkpO3JldHVybltNYXRoLm1heCgxLC4uLnIubWFwKGE9PmEuaGVpZ2h0KCkpKSxNYXRoLm1heCgxLC4uLnIubWFwKGE9PmEud2lkdGgoKSkpXX1pc1Jh'@; put 'bmdlUGFzc2VkQXNBU2NhbGFyQXJndW1lbnQoZSx0KXtyZXR1cm4gbnVsbCE9ZSYmbnVsbCE9dCYmZSBpbnN0YW5jZW9mIGxhJiYhW2V0LlJBTkdFLGV0LkFOWV0uaW5jbHVkZXModC5hcmd1bWVudFR5cGUpfW1ldGFkYXRhKGUpe2NvbnN0IHQ9dGhpcy5jb25zdHJ1Y3Rvci5pbXBsZW1lbnRl'@; put 'ZEZ1bmN0aW9uc1tlXTtpZih2b2lkIDAhPT10KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihgTm8gbWV0YWRhdGEgZm9yIGZ1bmN0aW9uICR7ZX0uYCl9cmV0dXJuTnVtYmVyV3JhcHBlcihlLHQscil7cmV0dXJuIHZvaWQgMCE9PXQmJmNjKGUpP3RoaXMuYXJpdGhtZXRpY0hlbHBlci5FeHRl'@; put 'bmRlZE51bWJlckZhY3RvcnkoTG8oZSkse3R5cGU6dCxmb3JtYXQ6cn0pOmV9fWNsYXNzIHlse2NvbnN0cnVjdG9yKGUsdCxyPSExKXt0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9dCx0aGlzLmlzUmVmPXJ9c3RhdGljIGVycm9yKCl7cmV0dXJuIG5ldyB5bCgxLDEsITApfXN0YXRpYyBzY2Fs'@; put 'YXIoKXtyZXR1cm4gbmV3IHlsKDEsMSwhMSl9aXNTY2FsYXIoKXtyZXR1cm4gMT09PXRoaXMud2lkdGgmJjE9PT10aGlzLmhlaWdodHx8dGhpcy5pc1JlZn19Y2xhc3MgZmVue2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25maWc9ZSx0aGlzLmZ1bmN0aW9uUmVnaXN0cnk9dH1jaGVja0FycmF5'@; put 'U2l6ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrQXJyYXlTaXplRm9yQXN0KGUse2Zvcm11bGFBZGRyZXNzOnQsYXJyYXlzRmxhZzp0aGlzLmNvbmZpZy51c2VBcnJheUFyaXRobWV0aWN9KX1jaGVja0FycmF5U2l6ZUZvckFzdChlLHQpe3N3aXRjaChlLnR5cGUpe2Nhc2Ugcm4uRlVOQ1RJT05f'@; put 'Q0FMTDpyZXR1cm4gdGhpcy5jaGVja0FycmF5U2l6ZUZvckZ1bmN0aW9uKGUsdCk7Y2FzZSBybi5DT0xVTU5fUkFOR0U6Y2FzZSBybi5ST1dfUkFOR0U6Y2FzZSBybi5DRUxMX1JBTkdFOntjb25zdCByPWJhLmZyb21Bc3RPclVuZGVmKGUsdC5mb3JtdWxhQWRkcmVzcyk7cmV0dXJuIHZvaWQg'@; put 'MD09PXI/eWwuZXJyb3IoKTpuZXcgeWwoci53aWR0aCgpLHIuaGVpZ2h0KCksITApfWNhc2Ugcm4uQVJSQVk6e2NvbnN0IHI9W10saT1bXTtmb3IoY29uc3QgbCBvZiBlLmFyZ3Mpe2NvbnN0IHU9bC5tYXAoTz0+dGhpcy5jaGVja0FycmF5U2l6ZUZvckFzdChPLHQpKSxnPU1hdGgubWluKC4u'@; put 'LnUubWFwKE89Pk8uaGVpZ2h0KSksRT11LnJlZHVjZSgoTyxaKT0+TytaLndpZHRoLDApO3IucHVzaChnKSxpLnB1c2goRSl9Y29uc3Qgbz1yLnJlZHVjZSgobCx1KT0+bCt1LDApLGE9TWF0aC5taW4oLi4uaSk7cmV0dXJuIG5ldyB5bChhLG8pfWNhc2Ugcm4uU1RSSU5HOmNhc2Ugcm4uTlVN'@; put 'QkVSOnJldHVybiB5bC5zY2FsYXIoKTtjYXNlIHJuLkNFTExfUkVGRVJFTkNFOnJldHVybiBuZXcgeWwoMSwxLCEwKTtjYXNlIHJuLkRJVl9PUDpjYXNlIHJuLkNPTkNBVEVOQVRFX09QOmNhc2Ugcm4uRVFVQUxTX09QOmNhc2Ugcm4uR1JFQVRFUl9USEFOX09QOmNhc2Ugcm4uR1JFQVRFUl9U'@; put 'SEFOX09SX0VRVUFMX09QOmNhc2Ugcm4uTEVTU19USEFOX09QOmNhc2Ugcm4uTEVTU19USEFOX09SX0VRVUFMX09QOmNhc2Ugcm4uTUlOVVNfT1A6Y2FzZSBybi5OT1RfRVFVQUxfT1A6Y2FzZSBybi5QTFVTX09QOmNhc2Ugcm4uUE9XRVJfT1A6Y2FzZSBybi5USU1FU19PUDp7Y29uc3Qgcj10'@; put 'aGlzLmNoZWNrQXJyYXlTaXplRm9yQXN0KGUubGVmdCx0KSxpPXRoaXMuY2hlY2tBcnJheVNpemVGb3JBc3QoZS5yaWdodCx0KTtyZXR1cm4hdC5hcnJheXNGbGFnJiYoci5oZWlnaHQ+MXx8ci53aWR0aD4xfHxpLmhlaWdodD4xfHxpLndpZHRoPjEpP3lsLmVycm9yKCk6ZnVuY3Rpb24gZGVu'@; put 'KG4sZSl7cmV0dXJuIG5ldyB5bChNYXRoLm1heChuLndpZHRoLGUud2lkdGgpLE1hdGgubWF4KG4uaGVpZ2h0LGUuaGVpZ2h0KSl9KHIsaSl9Y2FzZSBybi5NSU5VU19VTkFSWV9PUDpjYXNlIHJuLlBMVVNfVU5BUllfT1A6Y2FzZSBybi5QRVJDRU5UX09QOntjb25zdCByPXRoaXMuY2hlY2tB'@; put 'cnJheVNpemVGb3JBc3QoZS52YWx1ZSx0KTtyZXR1cm4hdC5hcnJheXNGbGFnJiYoci5oZWlnaHQ+MXx8ci53aWR0aD4xKT95bC5lcnJvcigpOmZ1bmN0aW9uIGhlbihuKXtyZXR1cm4gbmV3IHlsKG4ud2lkdGgsbi5oZWlnaHQpfShyKX1jYXNlIHJuLlBBUkVOVEhFU0lTOnJldHVybiB0aGlz'@; put 'LmNoZWNrQXJyYXlTaXplRm9yQXN0KGUuZXhwcmVzc2lvbix0KTtkZWZhdWx0OnJldHVybiB5bC5lcnJvcigpfX1jaGVja0FycmF5U2l6ZUZvckZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj10aGlzLmZ1bmN0aW9uUmVnaXN0cnkuZ2V0QXJyYXlTaXplRnVuY3Rpb24oZS5wcm9jZWR1cmVOYW1lKTtp'@; put 'Zih2b2lkIDAhPT1yKXJldHVybiByKGUsdCk7Y29uc3QgaT10aGlzLmZ1bmN0aW9uUmVnaXN0cnkuZ2V0TWV0YWRhdGEoZS5wcm9jZWR1cmVOYW1lKTtpZih2b2lkIDA9PT1pfHxpLmV4cGFuZFJhbmdlc3x8IXQuYXJyYXlzRmxhZ3x8aS52ZWN0b3JpemF0aW9uRm9yYmlkZGVufHx2b2lkIDA9'@; put 'PT1pLnBhcmFtZXRlcnMpcmV0dXJuIG5ldyB5bCgxLDEpO2NvbnN0IG89ZS5hcmdzLm1hcChnPT57dmFyIEU7cmV0dXJuIHRoaXMuY2hlY2tBcnJheVNpemVGb3JBc3QoZyxuZXcgejYodC5mb3JtdWxhQWRkcmVzcyx0LmFycmF5c0ZsYWd8fG51bGwhPT0oRT1pPy5hcnJheUZ1bmN0aW9uKSYm'@; put 'dm9pZCAwIT09RSYmRSkpfSksYT1bLi4uaS5wYXJhbWV0ZXJzXTtpZih2b2lkIDAhPT1pLnJlcGVhdExhc3RBcmdzJiZhLmxlbmd0aDxvLmxlbmd0aCYmKG8ubGVuZ3RoLWEubGVuZ3RoKSVpLnJlcGVhdExhc3RBcmdzIT09MClyZXR1cm4geWwuZXJyb3IoKTtmb3IoO2EubGVuZ3RoPG8ubGVu'@; put 'Z3RoOyl7aWYodm9pZCAwPT09aS5yZXBlYXRMYXN0QXJncylyZXR1cm4geWwuZXJyb3IoKTthLnB1c2goLi4uYS5zbGljZShhLmxlbmd0aC1pLnJlcGVhdExhc3RBcmdzKSl9bGV0IGw9MSx1PTE7Zm9yKGxldCBnPTA7ZzxvLmxlbmd0aDtnKyspYVtnXS5hcmd1bWVudFR5cGUhPT1ldC5SQU5H'@; put 'RSYmYVtnXS5hcmd1bWVudFR5cGUhPT1ldC5BTlkmJih1PU1hdGgubWF4KHUsb1tnXS5oZWlnaHQpLGw9TWF0aC5tYXgobCxvW2ddLndpZHRoKSk7cmV0dXJuIG5ldyB5bChsLHUpfX1mdW5jdGlvbiB6YyhuLGUsdCl7aWYodHlwZW9mIG4+InUiKXJldHVybiBoMi5kZWZhdWx0Q29uZmlnW3Rd'@; put 'O2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYodHlwZW9mIG49PT1lKXJldHVybiBuO3Rocm93IG5ldyBTYyhlLHQpfWlmKGUuaW5jbHVkZXMobikpcmV0dXJuIG47dGhyb3cgbmV3IEFKdChlLm1hcChyPT5gJyR7cn0nYCkuam9pbigiICIpLHQpfWZ1bmN0aW9uIG9BKG4sZSx0KXtpZihuPHQp'@; put 'dGhyb3cgbmV3IFRKdChlLHQpfWZ1bmN0aW9uIEhxKG4sZSx0LHIpe2lmKGUobikpcmV0dXJuIG47aWYodHlwZW9mIG4+InUiKXJldHVybiBoMi5kZWZhdWx0Q29uZmlnW3JdO3Rocm93IG5ldyBTYyh0LHIpfWZ1bmN0aW9uIF9XZSguLi5uKXtjb25zdCBlPW5ldyBNYXA7bi5mb3JFYWNoKHI9'@; put 'Pntjb25zdCBpPWUuZ2V0KHIudmFsdWUpfHxbXTtpLnB1c2goci5uYW1lKSxlLnNldChyLnZhbHVlLGkpfSk7Y29uc3QgdD1bXTtmb3IoY29uc3QgciBvZiBlLnZhbHVlcygpKXIubGVuZ3RoPjEmJnQucHVzaChyKTtpZih0Lmxlbmd0aD4wKXt0LmZvckVhY2goaT0+aS5zb3J0KCkpO2NvbnN0'@; put 'IHI9dC5tYXAoaT0+YFske2l9XWApLmpvaW4oIjsgIik7dGhyb3cgbmV3IEVycm9yKGBDb25maWcgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBQYXJhbWV0ZXJzIGluIGNvbmZsaWN0OiAke3J9YCl9fWZ1bmN0aW9uIHRvKG4sZSx0KXtpZih0eXBlb2YgbiE9PWUpdGhyb3cgbmV3IFNjKGUsdCl9'@; put 'Y29uc3QgaW1lPW5ldyBSZWdFeHAoIl5zcyhcXC4ocyt8MCspKT8kIiksZ2VuPW5ldyBSZWdFeHAoIl5bMC05Ly5cXC06IF0rW2FwXT9tPyQiKSxtZW49bmV3IFJlZ0V4cCgiXFxzKyIpLHlXZT1uZXcgUmVnRXhwKCJbIC8uLV0iKSx2ZW49U1dlKGZ1bmN0aW9uIGJlbihuKXtjb25zdCBlPW4u'@; put 'dG9Mb3dlckNhc2UoKS50cmltKCkscj0oZS5lbmRzV2l0aCgiYW0vcG0iKT9lLnN1YnN0cmluZygwLGUubGVuZ3RoLTUpOmUuZW5kc1dpdGgoImEvcCIpP2Uuc3Vic3RyaW5nKDAsbi5sZW5ndGgtMyk6ZSkudHJpbSgpLnNwbGl0KCI6Iik7cmV0dXJue2l0ZW1zQ291bnQ6ci5sZW5ndGgsaG91'@; put 'ckl0ZW06ci5pbmRleE9mKCJoaCIpLG1pbnV0ZUl0ZW06ci5pbmRleE9mKCJtbSIpLHNlY29uZEl0ZW06ci5maW5kSW5kZXgoaT0+aW1lLnRlc3QoaSkpfX0pLF9lbj1TV2UoZnVuY3Rpb24gd2VuKG4pe2NvbnN0IGU9bi50b0xvd2VyQ2FzZSgpLnRyaW0oKS5zcGxpdCh5V2UpO3JldHVybntp'@; put 'dGVtc0NvdW50OmUubGVuZ3RoLGRheUl0ZW06ZS5pbmRleE9mKCJkZCIpLG1vbnRoSXRlbTplLmluZGV4T2YoIm1tIiksc2hvcnRZZWFySXRlbTplLmluZGV4T2YoInl5IiksbG9uZ1llYXJJdGVtOmUuaW5kZXhPZigieXl5eSIpfX0pO2Z1bmN0aW9uIHdXZShuLGUpe3ZhciB0LHIsaTtpZih2'@; put 'b2lkIDA9PT1lKXJldHVybjtjb25zdHtpdGVtc0NvdW50Om8saG91ckl0ZW06YSxtaW51dGVJdGVtOmwsc2Vjb25kSXRlbTp1fT12ZW4oZSk7bGV0IGc7aWYoImFtIj09PW5bbi5sZW5ndGgtMV18fCJhIj09PW5bbi5sZW5ndGgtMV0/KGc9ITEsbi5wb3AoKSk6KCJwbSI9PT1uW24ubGVuZ3Ro'@; put 'LTFdfHwicCI9PT1uW24ubGVuZ3RoLTFdKSYmKGc9ITAsbi5wb3AoKSksbi5sZW5ndGghPT1vKXJldHVybjtjb25zdCBFPU51bWJlcihudWxsIT09KHQ9blt1XSkmJnZvaWQgMCE9PXQ/dDoiMCIpO2lmKCFOdW1iZXIuaXNGaW5pdGUoRSkpcmV0dXJuO2NvbnN0IE89TWF0aC5yb3VuZCgxZTMq'@; put 'RSkvMWUzLFo9TnVtYmVyKG51bGwhPT0ocj1uW2xdKSYmdm9pZCAwIT09cj9yOiIwIik7aWYoIU51bWJlci5pc0Zpbml0ZShaKXx8IU51bWJlci5pc0ludGVnZXIoWikpcmV0dXJuO2NvbnN0IGVlPU51bWJlcihudWxsIT09KGk9blthXSkmJnZvaWQgMCE9PWk/aToiMCIpO3JldHVybiFOdW1i'@; put 'ZXIuaXNGaW5pdGUoZWUpfHwhTnVtYmVyLmlzSW50ZWdlcihlZSl8fHZvaWQgMCE9PWcmJihlZTwwfHxlZT4xMik/dm9pZCAwOntob3Vyczp2b2lkIDAhPT1nP2VlJTEyKyhnPzEyOjApOmVlLG1pbnV0ZXM6WixzZWNvbmRzOk99fWZ1bmN0aW9uIENXZShuLGUpe3ZhciB0O2lmKHZvaWQgMD09'@; put 'PWUpcmV0dXJuO2NvbnN0e2l0ZW1zQ291bnQ6cixkYXlJdGVtOmksbW9udGhJdGVtOm8sc2hvcnRZZWFySXRlbTphLGxvbmdZZWFySXRlbTpsfT1fZW4oZSk7aWYobi5sZW5ndGghPT1yKXJldHVybjtjb25zdCB1PU51bWJlcihuW2ldKTtpZighTnVtYmVyLmlzRmluaXRlKHUpfHwhTnVtYmVy'@; put 'LmlzSW50ZWdlcih1KSlyZXR1cm47Y29uc3QgZz1OdW1iZXIobltvXSk7aWYoIU51bWJlci5pc0Zpbml0ZShnKXx8IU51bWJlci5pc0ludGVnZXIoZyl8fG5bbF0mJm5bYV0pcmV0dXJuO2NvbnN0IEU9TnVtYmVyKG51bGwhPT0odD1uW2xdKSYmdm9pZCAwIT09dD90Om5bYV0pO3JldHVybiFO'@; put 'dW1iZXIuaXNGaW5pdGUoRSl8fCFOdW1iZXIuaXNJbnRlZ2VyKEUpfHxuW2xdJiYoRTwxZTN8fEU+OTk5OSl8fG5bYV0mJihFPDB8fEU+OTkpP3ZvaWQgMDp7eWVhcjpFLG1vbnRoOmcsZGF5OnV9fWZ1bmN0aW9uIFNXZShuKXtjb25zdCBlPXt9O3JldHVybiB0PT57Y29uc3Qgcj1lW3RdO2lm'@; put 'KHZvaWQgMCE9PXIpcmV0dXJuIHI7Y29uc3QgaT1uKHQpO3JldHVybiBlW3RdPWksaX19Y29uc3QgYW1lPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sYUE9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF07ZnVuY3Rpb24gcFAobil7cmV0'@; put 'dXJuISghbnx8Im9iamVjdCIhPXR5cGVvZiBuJiYiZnVuY3Rpb24iIT10eXBlb2YgbikmJiJ5ZWFyImluIG4mJiJudW1iZXIiPT10eXBlb2Ygbi55ZWFyJiYibW9udGgiaW4gbiYmIm51bWJlciI9PXR5cGVvZiBuLm1vbnRoJiYiZGF5ImluIG4mJiJudW1iZXIiPT10eXBlb2Ygbi5kYXl9ZnVu'@; put 'Y3Rpb24gRVdlKG4pe3JldHVybiEoIW58fCJvYmplY3QiIT10eXBlb2YgbiYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pJiYiaG91cnMiaW4gbiYmIm51bWJlciI9PXR5cGVvZiBuLmhvdXJzJiYibWludXRlcyJpbiBuJiYibnVtYmVyIj09dHlwZW9mIG4ubWludXRlcyYmInNlY29uZHMiaW4gbiYm'@; put 'Im51bWJlciI9PXR5cGVvZiBuLnNlY29uZHN9Y29uc3QgU2VuPXt5ZWFyOjk5OTksbW9udGg6MTIsZGF5OjMxfTtjbGFzcyBFZW57Y29uc3RydWN0b3IoZSl7dGhpcy5jb25maWc9ZSx0aGlzLm1pbkRhdGVBYnNvbHV0ZVZhbHVlPXRoaXMuZGF0ZVRvTnVtYmVyRnJvbVplcm8oZS5udWxsRGF0'@; put 'ZSksdGhpcy5tYXhEYXRlVmFsdWU9dGhpcy5kYXRlVG9OdW1iZXIoU2VuKSx0aGlzLmxlYXBZZWFyMTkwMD1lLmxlYXBZZWFyMTkwMCx0aGlzLmVwb2NoWWVhclplcm89IXRoaXMubGVhcFllYXIxOTAwJiYwPD10aGlzLmRhdGVUb051bWJlcih7eWVhcjoxOTAwLG1vbnRoOjIsZGF5OjI4fSk/'@; put 'dGhpcy5udW1iZXJUb1NpbXBsZURhdGUoMikueWVhcjp0aGlzLm51bWJlclRvU2ltcGxlRGF0ZSgxKS55ZWFyLHRoaXMucGFyc2VEYXRlVGltZT1lLnBhcnNlRGF0ZVRpbWV9Z2V0V2l0aGluQm91bmRzKGUpe3JldHVybiBlPD10aGlzLm1heERhdGVWYWx1ZSYmZT49MD9lOnZvaWQgMH1kYXRl'@; put 'U3RyaW5nVG9EYXRlTnVtYmVyKGUpe2NvbnN0e2RhdGVUaW1lOnQsZGF0ZUZvcm1hdDpyPSIiLHRpbWVGb3JtYXQ6aT0iIn09dGhpcy5wYXJzZURhdGVUaW1lRnJvbUNvbmZpZ0Zvcm1hdHMoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gRVdlKHQpP3BQKHQpP25ldyAkZ2UobEEodCkrdGhpcy5k'@; put 'YXRlVG9OdW1iZXIodCkscisiICIraSk6bmV3IEdnZShsQSh0KSxpKTpwUCh0KT9uZXcgWWdlKHRoaXMuZGF0ZVRvTnVtYmVyKHQpLHIpOjB9cGFyc2VEYXRlVGltZUZyb21Db25maWdGb3JtYXRzKGUpe3JldHVybiB0aGlzLnBhcnNlRGF0ZVRpbWVGcm9tRm9ybWF0cyhlLHRoaXMuY29uZmln'@; put 'LmRhdGVGb3JtYXRzLHRoaXMuY29uZmlnLnRpbWVGb3JtYXRzKX1nZXROdWxsWWVhcigpe3JldHVybiB0aGlzLmNvbmZpZy5udWxsWWVhcn1nZXRFcG9jaFllYXJaZXJvKCl7cmV0dXJuIHRoaXMuZXBvY2hZZWFyWmVyb31pc1ZhbGlkRGF0ZShlKXtyZXR1cm4hKGlzTmFOKGUueWVhcil8fGlz'@; put 'TmFOKGUubW9udGgpfHxpc05hTihlLmRheSl8fGUuZGF5IT09TWF0aC5yb3VuZChlLmRheSl8fGUubW9udGghPT1NYXRoLnJvdW5kKGUubW9udGgpfHxlLnllYXIhPT1NYXRoLnJvdW5kKGUueWVhcil8fGUueWVhcjwxNTgyfHxlLm1vbnRoPDF8fGUubW9udGg+MTJ8fGUuZGF5PDEpJiYodGhp'@; put 'cy5pc0xlYXBZZWFyKGUueWVhcikmJjI9PT1lLm1vbnRoP2UuZGF5PD0yOTplLmRheTw9YW1lW2UubW9udGgtMV0pfWRhdGVUb051bWJlcihlKXtyZXR1cm4gdGhpcy5kYXRlVG9OdW1iZXJGcm9tWmVybyhlKS10aGlzLm1pbkRhdGVBYnNvbHV0ZVZhbHVlfXJlbGF0aXZlTnVtYmVyVG9BYnNv'@; put 'bHV0ZU51bWJlcihlKXtyZXR1cm4gZSt0aGlzLm1pbkRhdGVBYnNvbHV0ZVZhbHVlLSh0aGlzLmxlYXBZZWFyMTkwMD8xOjApfW51bWJlclRvU2ltcGxlRGF0ZShlKXtjb25zdCB0PU1hdGguZmxvb3IoZSkrdGhpcy5taW5EYXRlQWJzb2x1dGVWYWx1ZTtsZXQgcj1NYXRoLmZsb29yKHQvMzY1'@; put 'LjI0MjUpO3RoaXMuZGF0ZVRvTnVtYmVyRnJvbVplcm8oe3llYXI6cisxLG1vbnRoOjEsZGF5OjF9KTw9dD9yKys6dGhpcy5kYXRlVG9OdW1iZXJGcm9tWmVybyh7eWVhcjpyLTEsbW9udGg6MSxkYXk6MX0pPnQmJnItLTtjb25zdCBpPXQtdGhpcy5kYXRlVG9OdW1iZXJGcm9tWmVybyh7eWVh'@; put 'cjpyLG1vbnRoOjEsZGF5OjF9KSxvPWZ1bmN0aW9uIE1lbihuKXtsZXQgZT0wO3JldHVybiBhQVtlKzZdPD1uJiYoZSs9NiksYUFbZSszXTw9biYmKGUrPTMpLGFBW2UrMl08PW4/ZSs9MjphQVtlKzFdPD1uJiYoZSs9MSksZX0oaS0odGhpcy5pc0xlYXBZZWFyKHIpJiZpPj01OT8xOjApKTty'@; put 'ZXR1cm57eWVhcjpyLG1vbnRoOm8rMSxkYXk6aS1hQVtvXS0odGhpcy5pc0xlYXBZZWFyKHIpJiZvPjE/MTowKSsxfX1udW1iZXJUb1NpbXBsZURhdGVUaW1lKGUpe2NvbnN0IHQ9c0EoZSUxKSxyPU1hdGguZmxvb3IodC5ob3Vycy8yNCk7dC5ob3Vycz10LmhvdXJzJTI0O2NvbnN0IGk9dGhp'@; put 'cy5udW1iZXJUb1NpbXBsZURhdGUoTWF0aC5mbG9vcihlKStyKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHQpfWxlYXBZZWFyc0NvdW50KGUpe3JldHVybiBNYXRoLmZsb29yKGUvNCktTWF0aC5mbG9vcihlLzEwMCkrTWF0aC5mbG9vcihlLzQwMCkrKHRoaXMu'@; put 'Y29uZmlnLmxlYXBZZWFyMTkwMCYmZT49MTkwMD8xOjApfWRheXNJbk1vbnRoKGUsdCl7cmV0dXJuIHRoaXMuaXNMZWFwWWVhcihlKSYmMj09PXQ/Mjk6YW1lW3QtMV19ZW5kT2ZNb250aChlKXtyZXR1cm57eWVhcjplLnllYXIsbW9udGg6ZS5tb250aCxkYXk6dGhpcy5kYXlzSW5Nb250aChl'@; put 'LnllYXIsZS5tb250aCl9fXRvQmFzaXNVUyhlLHQpe3JldHVybiAzMT09PWUuZGF5JiYoZS5kYXk9MzApLDMwPT09ZS5kYXkmJjMxPT09dC5kYXkmJih0LmRheT0zMCksMj09PWUubW9udGgmJmUuZGF5PT09dGhpcy5kYXlzSW5Nb250aChlLnllYXIsZS5tb250aCkmJihlLmRheT0zMCwyPT09'@; put 'dC5tb250aCYmdC5kYXk9PT10aGlzLmRheXNJbk1vbnRoKHQueWVhcix0Lm1vbnRoKSYmKHQuZGF5PTMwKSksW2UsdF19eWVhckxlbmd0aEZvckJhc2lzKGUsdCl7cmV0dXJuIGUueWVhciE9PXQueWVhcj9lLnllYXIrMSE9PXQueWVhcnx8ZS5tb250aDx0Lm1vbnRofHxlLm1vbnRoPT09dC5t'@; put 'b250aCYmZS5kYXk8dC5kYXk/KHRoaXMubGVhcFllYXJzQ291bnQodC55ZWFyKS10aGlzLmxlYXBZZWFyc0NvdW50KGUueWVhci0xKSkvKHQueWVhci1lLnllYXIrMSkrMzY1OnRoaXMuY291bnRMZWFwRGF5cyh0KSE9PXRoaXMuY291bnRMZWFwRGF5cyh7eWVhcjplLnllYXIsbW9udGg6ZS5t'@; put 'b250aCxkYXk6ZS5kYXktMX0pPzM2NjozNjU6dGhpcy5pc0xlYXBZZWFyKGUueWVhcik/MzY2OjM2NX1wYXJzZVNpbmdsZUZvcm1hdChlLHQscil7Y29uc3QgaT10aGlzLnBhcnNlRGF0ZVRpbWUoZSx0LHIpO2lmKCFwUChpKXx8KGkueWVhcj49MCYmaS55ZWFyPDEwMCYmKGkueWVhcjx0aGlz'@; put 'LmdldE51bGxZZWFyKCk/aS55ZWFyKz0yZTM6aS55ZWFyKz0xOTAwKSx0aGlzLmlzVmFsaWREYXRlKGkpKSlyZXR1cm4gaX1wYXJzZURhdGVUaW1lRnJvbUZvcm1hdHMoZSx0LHIpe2NvbnN0IGk9MD09PXQubGVuZ3RoP1t2b2lkIDBdOnQsbz0wPT09ci5sZW5ndGg/W3ZvaWQgMF06cjtmb3Io'@; put 'Y29uc3QgYSBvZiBpKWZvcihjb25zdCBsIG9mIG8pe2NvbnN0IHU9dGhpcy5wYXJzZVNpbmdsZUZvcm1hdChlLGEsbCk7aWYodm9pZCAwIT09dSlyZXR1cm57ZGF0ZVRpbWU6dSx0aW1lRm9ybWF0OmwsZGF0ZUZvcm1hdDphfX1yZXR1cm57fX1jb3VudExlYXBEYXlzKGUpe3JldHVybiB0aGlz'@; put 'LmxlYXBZZWFyc0NvdW50KGUubW9udGg+Mnx8Mj09PWUubW9udGgmJmUuZGF5Pj0yOT9lLnllYXI6ZS55ZWFyLTEpfWRhdGVUb051bWJlckZyb21aZXJvKGUpe3JldHVybiAzNjUqZS55ZWFyK2FBW2UubW9udGgtMV0rZS5kYXktMSt0aGlzLmxlYXBZZWFyc0NvdW50KGUubW9udGg8PTI/ZS55'@; put 'ZWFyLTE6ZS55ZWFyKX1pc0xlYXBZZWFyKGUpe3JldHVybiEoZSU0KSYmKCEhKGUlMTAwKXx8IShlJTQwMCl8fDE5MDA9PT1lJiZ0aGlzLmNvbmZpZy5sZWFwWWVhcjE5MDApfX1mdW5jdGlvbiBNV2UobixlKXtjb25zdCB0PTEyKm4ueWVhcituLm1vbnRoLTErZTtyZXR1cm57eWVhcjpNYXRo'@; put 'LmZsb29yKHQvMTIpLG1vbnRoOnQlMTIrMSxkYXk6bi5kYXl9fWZ1bmN0aW9uIGxtZShuKXtyZXR1cm4gTWF0aC5yb3VuZCgzNjAwKm4qMjQpLzg2NDAwfWZ1bmN0aW9uIHNBKG4pe2NvbnN0IGU9MjQqbio2MCo2MCx0PWZ1bmN0aW9uIHhlbihuLGU9MSl7cmV0dXJuIE1hdGgucm91bmQobipl'@; put 'KS9lfShlJTYwLDFlNSklNjAscj0oZS10KS82MCxpPU1hdGgucm91bmQociU2MCklNjA7cmV0dXJue2hvdXJzOk1hdGgucm91bmQoKHItaSkvNjApLG1pbnV0ZXM6aSxzZWNvbmRzOnR9fWZ1bmN0aW9uIGxBKG4pe3JldHVybigobi5zZWNvbmRzLzYwK24ubWludXRlcykvNjArbi5ob3Vycykv'@; put 'MjR9ZnVuY3Rpb24gVFdlKG4pe3JldHVybnt5ZWFyOm4ueWVhcixtb250aDpuLm1vbnRoLGRheTpNYXRoLm1pbigzMCxuLmRheSl9fWNvbnN0IEFXZT0vKFxcLnxkZHxERHxkfER8bW18TU18bXxNfFlZWVl8WVl8eXl5eXx5eXxISHxoaHxIfGh8c3MoXC4oMCt8cyspKT98c3xBTVwvUE18YW1c'@; put 'L3BtfEFcL1B8YVwvcHxcW21tXXxcW01NXXxcW2hoXXxcW0hIXSkvZyxrV2U9LyhcXC58WyMwXSsoXC5bIzBdKik/KS9nO3ZhciBXNj1mdW5jdGlvbihuKXtyZXR1cm4gbi5GT1JNQVQ9IkZPUk1BVCIsbi5GUkVFX1RFWFQ9IkZSRUVfVEVYVCIsbn0oVzZ8fHt9KTtmdW5jdGlvbiBqcShuLGUp'@; put 'e3JldHVybnt0eXBlOm4sdmFsdWU6ZX19dmFyIFVxPWZ1bmN0aW9uKG4pe3JldHVybiBuLkRBVEU9IkRBVEUiLG4uTlVNQkVSPSJOVU1CRVIiLG4uU1RSSU5HPSJTVFJJTkciLG59KFVxfHx7fSk7ZnVuY3Rpb24gUldlKG4sZSl7Y29uc3QgdD1bXTtsZXQgcj0wO2ZvcihsZXQgbz0wO288bi5s'@; put 'ZW5ndGg7KytvKXtjb25zdCBhPW5bb107aWYoYS5pbmRleCE9PXIpe2NvbnN0IGw9ZS5zdWJzdHIocixhLmluZGV4LXIpO3QucHVzaChqcShXNi5GUkVFX1RFWFQsbCkpfWFbMF0uc3RhcnRzV2l0aCgiXFwiKT90LnB1c2goanEoVzYuRlJFRV9URVhULGFbMF0pKTp0LnB1c2goanEoVzYuRk9S'@; put 'TUFULGFbMF0pKSxyPWEuaW5kZXgrYVswXS5sZW5ndGh9Y29uc3QgaT1uW24ubGVuZ3RoLTFdO2lmKGkuaW5kZXgraVswXS5sZW5ndGg8ZS5sZW5ndGgpe2NvbnN0IG89ZS5zdWJzdHIoaS5pbmRleCtpWzBdLmxlbmd0aCxlLmxlbmd0aCk7dC5wdXNoKGpxKFc2LkZSRUVfVEVYVCxvKSl9cmV0'@; put 'dXJuIHR9ZnVuY3Rpb24gY21lKG4pe2NvbnN0IGU9ZnVuY3Rpb24gUmVuKG4pe0FXZS5sYXN0SW5kZXg9MDtjb25zdCBlPVtdO2xldCB0O2Rve3Q9QVdlLmV4ZWMobiksbnVsbCE9PXQmJmUucHVzaCh0KX13aGlsZSh0KTtyZXR1cm4gZX0obik7aWYoIWUuZXZlcnkodD0+RFdlKHQpKSlyZXR1'@; put 'cm57dHlwZTpVcS5EQVRFLHRva2VuczpSV2UoZSxuKX19ZnVuY3Rpb24gRFdlKG4pe3JldHVybiBuWzBdLnN0YXJ0c1dpdGgoIlxcIil9ZnVuY3Rpb24gRGVuKG4sZSx0LHIpe2NvbnN0IGk9dC5zdHJpbmdpZnlEYXRlVGltZShyLm51bWJlclRvU2ltcGxlRGF0ZVRpbWUobiksZSk7aWYodm9p'@; put 'ZCAwIT09aSlyZXR1cm4gaTtjb25zdCBvPXQuc3RyaW5naWZ5RHVyYXRpb24oc0EobiksZSk7aWYodm9pZCAwIT09bylyZXR1cm4gbztjb25zdCBhPWZ1bmN0aW9uIElXZShuKXtjb25zdCBlPWZ1bmN0aW9uIEllbihuKXtrV2UubGFzdEluZGV4PTA7Y29uc3QgZT1rV2UuZXhlYyhuKTtyZXR1'@; put 'cm4gbnVsbCE9PWU/W2VdOltdfShuKTtpZighZS5ldmVyeSh0PT5EV2UodCkpKXJldHVybnt0eXBlOlVxLk5VTUJFUix0b2tlbnM6UldlKGUsbil9fShlKTtyZXR1cm4gdm9pZCAwIT09YT9mdW5jdGlvbiBPZW4obixlKXtsZXQgdD0iIjtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoOysrcil7Y29u'@; put 'c3QgaT1uW3JdO2lmKGkudHlwZT09PVc2LkZSRUVfVEVYVCl7dCs9aS52YWx1ZTtjb250aW51ZX1jb25zdCBvPWkudmFsdWUuc3BsaXQoIi4iKSxhPW9bMF0sbD1vWzFdfHwiIix1PW9bMV0/Ii4iOiIiLGc9TnVtYmVyKGUudG9GaXhlZChsLmxlbmd0aCkpLnRvU3RyaW5nKCkuc3BsaXQoIi4i'@; put 'KTtsZXQgRT1nWzBdfHwiIixPPWdbMV18fCIiO2EubGVuZ3RoPkUubGVuZ3RoJiYoRT1ycChFLExXZShhLnN1YnN0cigwLGEubGVuZ3RoLUUubGVuZ3RoKSwiMCIpK0UubGVuZ3RoKSksTz1MZW4oTyxMV2UobC5zdWJzdHIoTy5sZW5ndGgsbC5sZW5ndGgtTy5sZW5ndGgpLCIwIikrTy5sZW5n'@; put 'dGgpLHQrPUUrdStPfXJldHVybiB0fShhLnRva2VucyxuKTplfWZ1bmN0aW9uIHJwKG4sZSl7bGV0IHQ9YCR7bn1gO2Zvcig7dC5sZW5ndGg8ZTspdD0iMCIrdDtyZXR1cm4gdH1mdW5jdGlvbiBMZW4obixlKXtsZXQgdD1gJHtufWA7Zm9yKDt0Lmxlbmd0aDxlOyl0Kz0iMCI7cmV0dXJuIHR9'@; put 'ZnVuY3Rpb24gTFdlKG4sZSl7cmV0dXJuIG4uc3BsaXQoZSkubGVuZ3RoLTF9Y29uc3QgdW1lPSJsZW5ndGgiLGdQPW49PnBhcnNlSW50KG4sMTYpLE9XZT1uPT5wYXJzZUludChuLDEwKSxkbWU9bj0+KG4rIiIpLnJlcGxhY2UoL1wtL2csIiIpLHpxPShuLGUsdCk9Pm4uc3Vic3RyKGUsdCks'@; put 'cTQ9bj0+bi5jb2RlUG9pbnRBdCgwKS02NSxWZW49e2ludmFsaWQ6KCk9PiJUaGUgbGljZW5zZSBrZXkgZm9yIEh5cGVyRm9ybXVsYSBpcyBpbnZhbGlkLiIsZXhwaXJlZDooe2tleVZhbGlkaXR5RGF0ZTpufSk9PmBUaGUgbGljZW5zZSBrZXkgZm9yIEh5cGVyRm9ybXVsYSBleHBpcmVkIG9u'@; put 'ICR7bn0sIGFuZCBpcyBub3QgdmFsaWQgZm9yIHRoZSBpbnN0YWxsZWQgdmVyc2lvbi5gLG1pc3Npbmc6KCk9PiJUaGUgbGljZW5zZSBrZXkgZm9yIEh5cGVyRm9ybXVsYSBpcyBtaXNzaW5nLiJ9O2xldCBOV2U9ITE7ZnVuY3Rpb24gQmVuKG4pe2NvbnN0IGU9e3RlbXBsYXRlOiJtaXNzaW5n'@; put 'Iix2YXJzOnt9fTtpZigiZ3BsLXYzIj09PW58fCJpbnRlcm5hbC11c2UtaW4taGFuZHNvbnRhYmxlIj09PW4pZS50ZW1wbGF0ZT0idmFsaWQiO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBuJiZmdW5jdGlvbiBIZW4obil7aWYoKG49KG4rIiIpLnJlcGxhY2UoL1wtL2csIiIpKVt1bWVdIT09'@; put 'cTQoIloiKSlyZXR1cm4hMTtsZXQgZT0wO3JldHVybiAwPT09W1swLHE0KCJHIikrMV0sW3E0KCJIIikscTQoIkgiKS0xXSxbcTQoIkciKStxNCgiSCIpLHE0KCJHIildXS5yZWR1Y2UoKHQsW3IsaV0sbyk9Pih0fD0oT1dlKGAke09XZShnUCh6cShuLGUrci0oMD09PW8/MDoyKSxpKyhvPzI6'@; put 'MCkpKSsoZ1AoenEobixlK3IraSwyKSkrW10pLnBhZFN0YXJ0KDIsIjAiKSl9YCklOTd8fDIpPj4xLGUrPTIsdCkscTQoIkEiKSl9KG4pKXtjb25zdFt0LHIsaV09IjE4LzA3LzIwMjQiLnNwbGl0KCIvIiksbz1NYXRoLmZsb29yKG5ldyBEYXRlKGAke3J9LyR7dH0vJHtpfWApLmdldFRpbWUo'@; put 'KS84NjRlNSksYT1mdW5jdGlvbiBQZW4obil7cmV0dXJuIDI1PT09ZG1lKG4pW3VtZV0/Z1AoenEoZG1lKG4pLGdQKCIxMiIpLHE0KCJGIikpKS8oZ1AoenEoZG1lKG4pLHE0KCJDIikscTQoIlkiKT4+NCkpfHwxKyghW11bdW1lXTw8MykpOjB9KG4pO2UudmFycy5rZXlWYWxpZGl0eURhdGU9'@; put 'ZnVuY3Rpb24gamVuKG4pe3JldHVybmAke1siSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXVtuLmdldE1vbnRoKCldfSAke24uZ2V0RGF0ZSgp'@; put 'fSwgJHtuLmdldEZ1bGxZZWFyKCl9YH0obmV3IERhdGUoODY0ZTUqKGErMSkpKSxlLnRlbXBsYXRlPW8+YT8iZXhwaXJlZCI6InZhbGlkIn1lbHNlIiIhPT1uJiYoZS50ZW1wbGF0ZT0iaW52YWxpZCIpO3JldHVybiFOV2UmJiJ2YWxpZCIhPT1lLnRlbXBsYXRlJiYoY29uc29sZS53YXJuKFZl'@; put 'bltlLnRlbXBsYXRlXShlLnZhcnMpKSxOV2U9ITApLGUudGVtcGxhdGV9dmFyIEhkOyFmdW5jdGlvbihuKXtuLk51bWJlcj1jbGFzcyBle2NvbnN0cnVjdG9yKHUpe3RoaXMudmFsdWU9dSx0aGlzLnZhbHVlPVdnZSh0aGlzLnZhbHVlLHBXZShMbyh0aGlzLnZhbHVlKSkpfX0sbi5TdHJpbmc9'@; put 'Y2xhc3MgdHtjb25zdHJ1Y3Rvcih1KXt0aGlzLnZhbHVlPXV9fSxuLkJvb2xlYW49Y2xhc3Mgcntjb25zdHJ1Y3Rvcih1KXt0aGlzLnZhbHVlPXV9fTtjbGFzcyBpe3N0YXRpYyBnZXRTaW5nbGV0b25JbnN0YW5jZSgpe3JldHVybiBpLmluc3RhbmNlfHwoaS5pbnN0YW5jZT1uZXcgaSksaS5p'@; put 'bnN0YW5jZX19bi5FbXB0eT1pLG4uRm9ybXVsYT1jbGFzcyBve2NvbnN0cnVjdG9yKHUpe3RoaXMuZm9ybXVsYT11fX0sbi5FcnJvcj1jbGFzcyBhe2NvbnN0cnVjdG9yKHUsZyl7dGhpcy52YWx1ZT1uZXcgUHQodSxnKX19fShIZHx8KEhkPXt9KSk7Y2xhc3MgWWVue2NvbnN0cnVjdG9yKGUs'@; put 'dCxyKXt0aGlzLmNvbmZpZz1lLHRoaXMuZGF0ZUhlbHBlcj10LHRoaXMubnVtYmVyTGl0ZXJhbHNIZWxwZXI9cn1wYXJzZShlKXtpZihudWxsPT1lKXJldHVybiBIZC5FbXB0eS5nZXRTaW5nbGV0b25JbnN0YW5jZSgpO2lmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZldlKGUpP25ldyBI'@; put 'ZC5FcnJvcih0bi5OVU0sZHIuVmFsdWVMYXJnZSk6bmV3IEhkLk51bWJlcihlKTtpZigiYm9vbGVhbiI9PXR5cGVvZiBlKXJldHVybiBuZXcgSGQuQm9vbGVhbihlKTtpZihlIGluc3RhbmNlb2YgRGF0ZSl7Y29uc3QgaT10aGlzLmRhdGVIZWxwZXIuZGF0ZVRvTnVtYmVyKHtkYXk6ZS5nZXRE'@; put 'YXRlKCksbW9udGg6ZS5nZXRNb250aCgpKzEseWVhcjplLmdldEZ1bGxZZWFyKCl9KStsQSh7aG91cnM6ZS5nZXRIb3VycygpLG1pbnV0ZXM6ZS5nZXRNaW51dGVzKCksc2Vjb25kczplLmdldFNlY29uZHMoKStlLmdldE1pbGxpc2Vjb25kcygpLzFlM30pO3JldHVybiBpPDA/bmV3IEhkLkVy'@; put 'cm9yKHRuLk5VTSxkci5EYXRlQm91bmRzKTpuZXcgSGQuTnVtYmVyKGklMT09MD9uZXcgWWdlKGksIkRhdGUoKSIpOmk8MT9uZXcgR2dlKGksIkRhdGUoKSIpOm5ldyAkZ2UoaSwiRGF0ZSgpIikpfWlmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoZnVuY3Rpb24gemVuKG4pe2NvbnN0IGU9bi50'@; put 'b0xvd2VyQ2FzZSgpO3JldHVybiJ0cnVlIj09PWV8fCJmYWxzZSI9PT1lfShlKSlyZXR1cm4gbmV3IEhkLkJvb2xlYW4oInRydWUiPT09ZS50b0xvd2VyQ2FzZSgpKTtpZihmdW5jdGlvbiBVZW4obil7cmV0dXJuIG4uc3RhcnRzV2l0aCgiPSIpfShlKSlyZXR1cm4gbmV3IEhkLkZvcm11bGEo'@; put 'ZSk7aWYoZnVuY3Rpb24gV2VuKG4sZSl7Y29uc3QgdD1uLnRvVXBwZXJDYXNlKCk7cmV0dXJuLyNbQS1aYS16MC05XC9dK1s/IV0/Ly50ZXN0KHQpJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0oZSx0aGlzLmNvbmZpZy5lcnJvck1hcHBpbmcpKXJldHVybiBu'@; put 'ZXcgSGQuRXJyb3IodGhpcy5jb25maWcuZXJyb3JNYXBwaW5nW2UudG9VcHBlckNhc2UoKV0pO3tsZXQgaSx0PWUudHJpbSgpLHI9MDtpZih0LmVuZHNXaXRoKCIlIikpcj0xLHQ9dC5zbGljZSgwLHQubGVuZ3RoLTEpO2Vsc2V7Y29uc3QgbD10aGlzLmN1cnJlbmN5TWF0Y2hlcih0KTt2b2lk'@; put 'IDAhPT1sJiYocj0yLFtpLHRdPWwpfWNvbnN0IG89dGhpcy5udW1iZXJMaXRlcmFsc0hlbHBlci5udW1lcmljU3RyaW5nVG9NYXliZU51bWJlcih0KTtpZih2b2lkIDAhPT1vKXtsZXQgbDtyZXR1cm4gbD0xPT09cj9uZXcgUnEoby8xMDApOjI9PT1yP25ldyBaZ2UobyxpKTpvLG5ldyBIZC5O'@; put 'dW1iZXIobCl9Y29uc3QgYT10aGlzLmRhdGVIZWxwZXIuZGF0ZVN0cmluZ1RvRGF0ZU51bWJlcih0KTtyZXR1cm4gdm9pZCAwIT09YT9uZXcgSGQuTnVtYmVyKGEpOm5ldyBIZC5TdHJpbmcoZS5zdGFydHNXaXRoKCInIik/ZS5zbGljZSgxKTplKX19dGhyb3cgbmV3IEVKdChlKX1jdXJyZW5j'@; put 'eU1hdGNoZXIoZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jb25maWcuY3VycmVuY3lTeW1ib2wpe2lmKGUuc3RhcnRzV2l0aCh0KSlyZXR1cm5bdCxlLnNsaWNlKHQubGVuZ3RoKV07aWYoZS5lbmRzV2l0aCh0KSlyZXR1cm5bdCxlLnNsaWNlKDAsZS5sZW5ndGgtdC5sZW5ndGgpXX19fXZhciBj'@; put 'QT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLkNPUFk9MF09IkNPUFkiLG5bbi5DVVQ9MV09IkNVVCIsbn0oY0F8fHt9KSx1Zj1mdW5jdGlvbihuKXtyZXR1cm4gbltuLlZBTFVFPTBdPSJWQUxVRSIsbltuLkVNUFRZPTFdPSJFTVBUWSIsbltuLkZPUk1VTEE9Ml09IkZPUk1VTEEiLG5bbi5QQVJT'@; put 'SU5HX0VSUk9SPTNdPSJQQVJTSU5HX0VSUk9SIixufSh1Znx8e30pO2NsYXNzIEZXZXtjb25zdHJ1Y3RvcihlLHQscixpLG8pe3RoaXMuc291cmNlTGVmdENvcm5lcj1lLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1yLHRoaXMudHlwZT1pLHRoaXMuY29udGVudD1vfSpnZXRDb250ZW50KGUp'@; put 'e2lmKHZvaWQgMCE9PXRoaXMuY29udGVudClmb3IobGV0IHQ9MDt0PHRoaXMuaGVpZ2h0OysrdClmb3IobGV0IHI9MDtyPHRoaXMud2lkdGg7KytyKXlpZWxkW0JvKGUuc2hlZXQsZS5jb2wrcixlLnJvdyt0KSx0aGlzLmNvbnRlbnRbdF1bcl1dfX1jbGFzcyBaZW57Y29uc3RydWN0b3IoZSx0'@; put 'LHIpe3RoaXMuZGVwZW5kZW5jeUdyYXBoPXQsdGhpcy5vcGVyYXRpb25zPXIsdGhpcy5tYXhSb3dzPWUubWF4Um93cyx0aGlzLm1heENvbHVtbnM9ZS5tYXhDb2x1bW5zfWN1dChlLHQscil7dGhpcy5jbGlwYm9hcmQ9bmV3IEZXZShlLHQscixjQS5DVVQpfWNvcHkoZSx0LHIpe2NvbnN0IGk9'@; put 'W107Zm9yKGxldCBvPTA7bzxyOysrbyl7aVtvXT1bXTtmb3IobGV0IGE9MDthPHQ7KythKXtjb25zdCBsPXRoaXMub3BlcmF0aW9ucy5nZXRDbGlwYm9hcmRDZWxsKEJvKGUuc2hlZXQsZS5jb2wrYSxlLnJvdytvKSk7aVtvXS5wdXNoKGwpfX10aGlzLmNsaXBib2FyZD1uZXcgRldlKGUsdCxy'@; put 'LGNBLkNPUFksaSl9YWJvcnRDdXQoKXt0aGlzLmNsaXBib2FyZCYmdGhpcy5jbGlwYm9hcmQudHlwZT09PWNBLkNVVCYmdGhpcy5jbGVhcigpfWNsZWFyKCl7dGhpcy5jbGlwYm9hcmQ9dm9pZCAwfWVuc3VyZUl0SXNQb3NzaWJsZVRvQ29weVBhc3RlKGUpe2lmKHZvaWQgMD09PXRoaXMuY2xp'@; put 'cGJvYXJkKXJldHVybjtpZihucChlKXx8IXRoaXMuZGVwZW5kZW5jeUdyYXBoLnNoZWV0TWFwcGluZy5oYXNTaGVldFdpdGhJZChlLnNoZWV0KSl0aHJvdyBuZXcgbjAoImEgdmFsaWQgdGFyZ2V0IGFkZHJlc3MuIik7Y29uc3QgdD1iYS5zcGFuRnJvbShlLHRoaXMuY2xpcGJvYXJkLndpZHRo'@; put 'LHRoaXMuY2xpcGJvYXJkLmhlaWdodCk7aWYodC5leGNlZWRzU2hlZXRTaXplTGltaXRzKHRoaXMubWF4Q29sdW1ucyx0aGlzLm1heFJvd3MpKXRocm93IG5ldyB0QTtpZih0aGlzLmRlcGVuZGVuY3lHcmFwaC5hcnJheU1hcHBpbmcuaXNGb3JtdWxhQXJyYXlJblJhbmdlKHQpKXRocm93IG5l'@; put 'dyBFcnJvcigiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHBhc3RlIG9udG8gYW4gYXJyYXkiKX1pc0N1dENsaXBib2FyZCgpe3JldHVybiB2b2lkIDAhPT10aGlzLmNsaXBib2FyZCYmdGhpcy5jbGlwYm9hcmQudHlwZT09PWNBLkNVVH1pc0NvcHlDbGlwYm9hcmQoKXtyZXR1cm4gdm9pZCAwIT09'@; put 'dGhpcy5jbGlwYm9hcmQmJnRoaXMuY2xpcGJvYXJkLnR5cGU9PT1jQS5DT1BZfX1jbGFzcyBXcXtjb25zdHJ1Y3RvcihlLHQscixpKXt0aGlzLmRpc3BsYXlOYW1lPWUsdGhpcy5hZGRyZXNzPXQsdGhpcy5hZGRlZD1yLHRoaXMub3B0aW9ucz1pfW5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKCl7'@; put 'cmV0dXJuIHRoaXMuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKX1jb3B5KCl7cmV0dXJuIG5ldyBXcSh0aGlzLmRpc3BsYXlOYW1lLHRoaXMuYWRkcmVzcyx0aGlzLmFkZGVkLHRoaXMub3B0aW9ucyl9fWNsYXNzIEdlbntjb25zdHJ1Y3Rvcigpe3RoaXMubWFwcGluZz1uZXcgTWFwfWhhcyhl'@; put 'KXtyZXR1cm4gdGhpcy5tYXBwaW5nLmhhcyh0aGlzLm5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKGUpKX1pc05hbWVBdmFpbGFibGUoZSl7Y29uc3QgdD10aGlzLm5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKGUpLHI9dGhpcy5tYXBwaW5nLmdldCh0KTtyZXR1cm4hKHImJnIuYWRkZWQpfWFkZChl'@; put 'KXt0aGlzLm1hcHBpbmcuc2V0KGUubm9ybWFsaXplRXhwcmVzc2lvbk5hbWUoKSxlKX1nZXQoZSl7cmV0dXJuIHRoaXMubWFwcGluZy5nZXQodGhpcy5ub3JtYWxpemVFeHByZXNzaW9uTmFtZShlKSl9Z2V0RXhpc3RpbmcoZSl7Y29uc3QgdD10aGlzLm1hcHBpbmcuZ2V0KHRoaXMubm9ybWFs'@; put 'aXplRXhwcmVzc2lvbk5hbWUoZSkpO2lmKHQmJnQuYWRkZWQpcmV0dXJuIHR9cmVtb3ZlKGUpe2NvbnN0IHQ9dGhpcy5ub3JtYWxpemVFeHByZXNzaW9uTmFtZShlKSxyPXRoaXMubWFwcGluZy5nZXQodCk7ciYmKHIuYWRkZWQ9ITEpfWdldEFsbE5hbWVkRXhwcmVzc2lvbnMoKXtyZXR1cm4g'@; put 'QXJyYXkuZnJvbSh0aGlzLm1hcHBpbmcudmFsdWVzKCkpLmZpbHRlcihlPT5lLmFkZGVkKX1ub3JtYWxpemVFeHByZXNzaW9uTmFtZShlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfX1jbGFzcyBQV2V7Y29uc3RydWN0b3IoKXt0aGlzLm1hcHBpbmc9bmV3IE1hcH1hZGQoZSl7dGhpcy5tYXBw'@; put 'aW5nLnNldCh0aGlzLm5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKGUuZGlzcGxheU5hbWUpLGUpfWdldChlKXtyZXR1cm4gdGhpcy5tYXBwaW5nLmdldCh0aGlzLm5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKGUpKX1oYXMoZSl7cmV0dXJuIHRoaXMubWFwcGluZy5oYXModGhpcy5ub3JtYWxpemVF'@; put 'eHByZXNzaW9uTmFtZShlKSl9Z2V0QWxsTmFtZWRFeHByZXNzaW9ucygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMubWFwcGluZy52YWx1ZXMoKSkuZmlsdGVyKGU9PmUuYWRkZWQpfWlzTmFtZUF2YWlsYWJsZShlKXtjb25zdCB0PXRoaXMubm9ybWFsaXplRXhwcmVzc2lvbk5hbWUoZSk7cmV0'@; put 'dXJuIXRoaXMubWFwcGluZy5oYXModCl9cmVtb3ZlKGUpe2NvbnN0IHQ9dGhpcy5ub3JtYWxpemVFeHByZXNzaW9uTmFtZShlKTt0aGlzLm1hcHBpbmcuZ2V0KHQpJiZ0aGlzLm1hcHBpbmcuZGVsZXRlKHQpfW5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKGUpe3JldHVybiBlLnRvTG93ZXJDYXNl'@; put 'KCl9fWxldCBZcT0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKCl7dGhpcy5uZXh0TmFtZWRFeHByZXNzaW9uUm93PTAsdGhpcy53b3JrYm9va1N0b3JlPW5ldyBHZW4sdGhpcy53b3Jrc2hlZXRTdG9yZXM9bmV3IE1hcCx0aGlzLmFkZHJlc3NDYWNoZT1uZXcgTWFwfWlzTmFtZUF2YWlsYWJs'@; put 'ZSh0LHIpe3ZhciBpLG87cmV0dXJuIHZvaWQgMD09PXI/dGhpcy53b3JrYm9va1N0b3JlLmlzTmFtZUF2YWlsYWJsZSh0KTpudWxsPT09KG89bnVsbD09PShpPXRoaXMud29ya3NoZWV0U3RvcmUocikpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmlzTmFtZUF2YWlsYWJsZSh0KSl8fHZvaWQgMD09'@; put 'PW98fG99bmFtZWRFeHByZXNzaW9uSW5BZGRyZXNzKHQpe2NvbnN0IHI9dGhpcy5hZGRyZXNzQ2FjaGUuZ2V0KHQpO2lmKHImJnIuYWRkZWQpcmV0dXJuIHJ9bmFtZWRFeHByZXNzaW9uRm9yU2NvcGUodCxyKXt2YXIgaTtyZXR1cm4gdm9pZCAwPT09cj90aGlzLndvcmtib29rU3RvcmUuZ2V0'@; put 'RXhpc3RpbmcodCk6bnVsbD09PShpPXRoaXMud29ya3NoZWV0U3RvcmUocikpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmdldCh0KX1uZWFyZXN0TmFtZWRFeHByZXNzaW9uKHQscil7dmFyIGksbztyZXR1cm4gbnVsbCE9PShvPW51bGw9PT0oaT10aGlzLndvcmtzaGVldFN0b3JlKHIpKXx8dm9p'@; put 'ZCAwPT09aT92b2lkIDA6aS5nZXQodCkpJiZ2b2lkIDAhPT1vP286dGhpcy53b3JrYm9va1N0b3JlLmdldEV4aXN0aW5nKHQpfWlzRXhwcmVzc2lvbkluU2NvcGUodCxyKXt2YXIgaSxvO3JldHVybiBudWxsIT09KG89bnVsbD09PShpPXRoaXMud29ya3NoZWV0U3RvcmUocikpfHx2b2lkIDA9'@; put 'PT1pP3ZvaWQgMDppLmhhcyh0KSkmJnZvaWQgMCE9PW8mJm99aXNOYW1lVmFsaWQodCl7Y29uc3Qgcj1uZXcgUmVnRXhwKGBeJHtNemV9JGApLGk9bmV3IFJlZ0V4cChgXiR7QXplfSRgKSxvPW5ldyBSZWdFeHAoYF4ke2t6ZX0kYCk7cmV0dXJuIXIudGVzdCh0KSYmIWkudGVzdCh0KSYmby50'@; put 'ZXN0KHQpfWFkZE5hbWVkRXhwcmVzc2lvbih0LHIsaSl7Y29uc3Qgbz12b2lkIDA9PT1yP3RoaXMud29ya2Jvb2tTdG9yZTp0aGlzLndvcmtzaGVldFN0b3JlT3JDcmVhdGUocik7bGV0IGE9by5nZXQodCk7cmV0dXJuIHZvaWQgMCE9PWE/KGEuYWRkZWQ9ITAsYS5kaXNwbGF5TmFtZT10LGEu'@; put 'b3B0aW9ucz1pKTooYT1uZXcgV3EodCx0aGlzLm5leHRBZGRyZXNzKCksITAsaSksby5hZGQoYSkpLHRoaXMuYWRkcmVzc0NhY2hlLnNldChhLmFkZHJlc3Mucm93LGEpLGF9cmVzdG9yZU5hbWVkRXhwcmVzc2lvbih0LHIpe2NvbnN0IGk9dm9pZCAwPT09cj90aGlzLndvcmtib29rU3RvcmU6'@; put 'dGhpcy53b3Jrc2hlZXRTdG9yZU9yQ3JlYXRlKHIpO3JldHVybiB0LmFkZGVkPSEwLGkuYWRkKHQpLHRoaXMuYWRkcmVzc0NhY2hlLnNldCh0LmFkZHJlc3Mucm93LHQpLHR9bmFtZWRFeHByZXNzaW9uT3JQbGFjZWhvbGRlcih0LHIpe3ZhciBpO3JldHVybiBudWxsIT09KGk9dGhpcy53b3Jr'@; put 'c2hlZXRTdG9yZU9yQ3JlYXRlKHIpLmdldCh0KSkmJnZvaWQgMCE9PWk/aTp0aGlzLndvcmtib29rTmFtZWRFeHByZXNzaW9uT3JQbGFjZWhvbGRlcih0KX13b3JrYm9va05hbWVkRXhwcmVzc2lvbk9yUGxhY2Vob2xkZXIodCl7bGV0IHI9dGhpcy53b3JrYm9va1N0b3JlLmdldCh0KTtyZXR1'@; put 'cm4gdm9pZCAwPT09ciYmKHI9bmV3IFdxKHQsdGhpcy5uZXh0QWRkcmVzcygpLCExKSx0aGlzLndvcmtib29rU3RvcmUuYWRkKHIpKSxyfXJlbW92ZSh0LHIpe2xldCBpO2k9dm9pZCAwPT09cj90aGlzLndvcmtib29rU3RvcmU6dGhpcy53b3Jrc2hlZXRTdG9yZShyKTtjb25zdCBvPWk/Lmdl'@; put 'dCh0KTtpZih2b2lkIDA9PT1pfHx2b2lkIDA9PT1vfHwhby5hZGRlZCl0aHJvdyBFcnJvcigiTmFtZWQgZXhwcmVzc2lvbiBkb2VzIG5vdCBleGlzdCIpO2kucmVtb3ZlKHQpLGkgaW5zdGFuY2VvZiBQV2UmJjA9PT1pLm1hcHBpbmcuc2l6ZSYmdGhpcy53b3Jrc2hlZXRTdG9yZXMuZGVsZXRl'@; put 'KHIpLHRoaXMuYWRkcmVzc0NhY2hlLmRlbGV0ZShvLmFkZHJlc3Mucm93KX1nZXRBbGxOYW1lZEV4cHJlc3Npb25zTmFtZXNJblNjb3BlKHQpe3JldHVybiB0aGlzLmdldEFsbE5hbWVkRXhwcmVzc2lvbnMoKS5maWx0ZXIoKHtzY29wZTpyfSk9PnI9PT10KS5tYXAocj0+ci5leHByZXNzaW9u'@; put 'LmRpc3BsYXlOYW1lKX1nZXRBbGxOYW1lZEV4cHJlc3Npb25zTmFtZXMoKXtyZXR1cm4gdGhpcy5nZXRBbGxOYW1lZEV4cHJlc3Npb25zKCkubWFwKHQ9PnQuZXhwcmVzc2lvbi5kaXNwbGF5TmFtZSl9Z2V0QWxsTmFtZWRFeHByZXNzaW9ucygpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMud29y'@; put 'a2Jvb2tTdG9yZS5nZXRBbGxOYW1lZEV4cHJlc3Npb25zKCkuZm9yRWFjaChyPT57dC5wdXNoKHtleHByZXNzaW9uOnIsc2NvcGU6dm9pZCAwfSl9KSx0aGlzLndvcmtzaGVldFN0b3Jlcy5mb3JFYWNoKChyLGkpPT57ci5nZXRBbGxOYW1lZEV4cHJlc3Npb25zKCkuZm9yRWFjaChvPT57dC5w'@; put 'dXNoKHtleHByZXNzaW9uOm8sc2NvcGU6aX0pfSl9KSx0fWdldEFsbE5hbWVkRXhwcmVzc2lvbnNGb3JTY29wZSh0KXt2YXIgcixpO3JldHVybiB2b2lkIDA9PT10P3RoaXMud29ya2Jvb2tTdG9yZS5nZXRBbGxOYW1lZEV4cHJlc3Npb25zKCk6bnVsbCE9PShpPW51bGw9PT0ocj10aGlzLndv'@; put 'cmtzaGVldFN0b3Jlcy5nZXQodCkpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmdldEFsbE5hbWVkRXhwcmVzc2lvbnMoKSkmJnZvaWQgMCE9PWk/aTpbXX13b3Jrc2hlZXRTdG9yZU9yQ3JlYXRlKHQpe2xldCByPXRoaXMud29ya3NoZWV0U3RvcmVzLmdldCh0KTtyZXR1cm4gcnx8KHI9bmV3IFBX'@; put 'ZSx0aGlzLndvcmtzaGVldFN0b3Jlcy5zZXQodCxyKSkscn13b3Jrc2hlZXRTdG9yZSh0KXtyZXR1cm4gdGhpcy53b3Jrc2hlZXRTdG9yZXMuZ2V0KHQpfW5leHRBZGRyZXNzKCl7cmV0dXJuIEJvKG4uU0hFRVRfRk9SX1dPUktCT09LX0VYUFJFU1NJT05TLDAsdGhpcy5uZXh0TmFtZWRFeHBy'@; put 'ZXNzaW9uUm93KyspfX1yZXR1cm4gbi5TSEVFVF9GT1JfV09SS0JPT0tfRVhQUkVTU0lPTlM9LTEsbn0pKCk7Y29uc3QgSl89bj0+e3N3aXRjaChuLnR5cGUpe2Nhc2Ugcm4uRU1QVFk6Y2FzZSBybi5OVU1CRVI6Y2FzZSBybi5TVFJJTkc6Y2FzZSBybi5FUlJPUjpjYXNlIHJuLkVSUk9SX1dJ'@; put 'VEhfUkFXX0lOUFVUOnJldHVybiExO2Nhc2Ugcm4uQ0VMTF9SRUZFUkVOQ0U6cmV0dXJuIW4ucmVmZXJlbmNlLmlzQWJzb2x1dGUoKTtjYXNlIHJuLkNFTExfUkFOR0U6Y2FzZSBybi5DT0xVTU5fUkFOR0U6Y2FzZSBybi5ST1dfUkFOR0U6cmV0dXJuIW4uc3RhcnQuaXNBYnNvbHV0ZSgpO2Nh'@; put 'c2Ugcm4uTkFNRURfRVhQUkVTU0lPTjpyZXR1cm4hMTtjYXNlIHJuLlBFUkNFTlRfT1A6Y2FzZSBybi5QTFVTX1VOQVJZX09QOmNhc2Ugcm4uTUlOVVNfVU5BUllfT1A6cmV0dXJuIEpfKG4udmFsdWUpO2Nhc2Ugcm4uQ09OQ0FURU5BVEVfT1A6Y2FzZSBybi5FUVVBTFNfT1A6Y2FzZSBybi5O'@; put 'T1RfRVFVQUxfT1A6Y2FzZSBybi5MRVNTX1RIQU5fT1A6Y2FzZSBybi5HUkVBVEVSX1RIQU5fT1A6Y2FzZSBybi5MRVNTX1RIQU5fT1JfRVFVQUxfT1A6Y2FzZSBybi5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfT1A6Y2FzZSBybi5NSU5VU19PUDpjYXNlIHJuLlBMVVNfT1A6Y2FzZSBybi5USU1F'@; put 'U19PUDpjYXNlIHJuLkRJVl9PUDpjYXNlIHJuLlBPV0VSX09QOnJldHVybiBKXyhuLmxlZnQpfHxKXyhuLnJpZ2h0KTtjYXNlIHJuLlBBUkVOVEhFU0lTOnJldHVybiBKXyhuLmV4cHJlc3Npb24pO2Nhc2Ugcm4uRlVOQ1RJT05fQ0FMTDpyZXR1cm4gbi5hcmdzLnNvbWUoZT0+Sl8oZSkpO2Nh'@; put 'c2Ugcm4uQVJSQVk6cmV0dXJuIG4uYXJncy5zb21lKGU9PmUuc29tZSh0PT5KXyh0KSkpfX07Y2xhc3MgZXl7cGVyZm9ybUVhZ2VyVHJhbnNmb3JtYXRpb25zKGUsdCl7Zm9yKGNvbnN0IHIgb2YgZS5hcnJheUZvcm11bGFOb2RlcygpKXtjb25zdFtpLG9dPXRoaXMudHJhbnNmb3JtU2luZ2xl'@; put 'QXN0KHIuZ2V0Rm9ybXVsYShlLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpLHIuZ2V0QWRkcmVzcyhlLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpKSxhPXQucmVtZW1iZXJOZXdBc3QoaSk7ci5zZXRGb3JtdWxhKGEpLHIuc2V0QWRkcmVzcyhvKX19dHJhbnNmb3JtU2luZ2xl'@; put 'QXN0KGUsdCl7cmV0dXJuW3RoaXMudHJhbnNmb3JtQXN0KGUsdCksdGhpcy5maXhOb2RlQWRkcmVzcyh0KV19dHJhbnNmb3JtQXN0KGUsdCl7c3dpdGNoKGUudHlwZSl7Y2FzZSBybi5DRUxMX1JFRkVSRU5DRTpyZXR1cm4gdGhpcy50cmFuc2Zvcm1DZWxsUmVmZXJlbmNlQXN0KGUsdCk7Y2Fz'@; put 'ZSBybi5DRUxMX1JBTkdFOnJldHVybiB0aGlzLnRyYW5zZm9ybUNlbGxSYW5nZUFzdChlLHQpO2Nhc2Ugcm4uQ09MVU1OX1JBTkdFOnJldHVybiB0aGlzLnRyYW5zZm9ybUNvbHVtblJhbmdlQXN0KGUsdCk7Y2FzZSBybi5ST1dfUkFOR0U6cmV0dXJuIHRoaXMudHJhbnNmb3JtUm93UmFuZ2VB'@; put 'c3QoZSx0KTtjYXNlIHJuLkVNUFRZOmNhc2Ugcm4uRVJST1I6Y2FzZSBybi5OVU1CRVI6Y2FzZSBybi5OQU1FRF9FWFBSRVNTSU9OOmNhc2Ugcm4uRVJST1JfV0lUSF9SQVdfSU5QVVQ6Y2FzZSBybi5TVFJJTkc6cmV0dXJuIGU7Y2FzZSBybi5QRVJDRU5UX09QOmNhc2Ugcm4uTUlOVVNfVU5B'@; put 'UllfT1A6Y2FzZSBybi5QTFVTX1VOQVJZX09QOnJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3ZhbHVlOnRoaXMudHJhbnNmb3JtQXN0KGUudmFsdWUsdCl9KTtjYXNlIHJuLkZVTkNUSU9OX0NBTEw6cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7'@; put 'fSxlKSx7cHJvY2VkdXJlTmFtZTplLnByb2NlZHVyZU5hbWUsYXJnczplLmFyZ3MubWFwKHI9PnRoaXMudHJhbnNmb3JtQXN0KHIsdCkpfSk7Y2FzZSBybi5QQVJFTlRIRVNJUzpyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtleHByZXNzaW9uOnRoaXMudHJhbnNm'@; put 'b3JtQXN0KGUuZXhwcmVzc2lvbix0KX0pO2Nhc2Ugcm4uQVJSQVk6cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7YXJnczplLmFyZ3MubWFwKHI9PnIubWFwKGk9PnRoaXMudHJhbnNmb3JtQXN0KGksdCkpKX0pO2RlZmF1bHQ6cmV0dXJuIE9iamVjdC5hc3NpZ24o'@; put 'T2JqZWN0LmFzc2lnbih7fSxlKSx7bGVmdDp0aGlzLnRyYW5zZm9ybUFzdChlLmxlZnQsdCkscmlnaHQ6dGhpcy50cmFuc2Zvcm1Bc3QoZS5yaWdodCx0KX0pfX10cmFuc2Zvcm1DZWxsUmVmZXJlbmNlQXN0KGUsdCl7Y29uc3Qgcj10aGlzLnRyYW5zZm9ybUNlbGxBZGRyZXNzKGUucmVmZXJl'@; put 'bmNlLHQpO3JldHVybiByIGluc3RhbmNlb2YgeHU/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtyZWZlcmVuY2U6cn0pOnI9PT10bi5SRUY/SDYobmV3IFB0KHRuLlJFRikpOmV9dHJhbnNmb3JtQ2VsbFJhbmdlQXN0KGUsdCl7Y29uc3Qgcj10aGlzLnRyYW5zZm9ybUNlbGxS'@; put 'YW5nZShlLnN0YXJ0LGUuZW5kLHQpO3JldHVybiBBcnJheS5pc0FycmF5KHIpP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7c3RhcnQ6clswXSxlbmQ6clsxXX0pOnI9PT10bi5SRUY/SDYobmV3IFB0KHRuLlJFRikpOmV9dHJhbnNmb3JtQ29sdW1uUmFuZ2VBc3QoZSx0KXtj'@; put 'b25zdCByPXRoaXMudHJhbnNmb3JtQ29sdW1uUmFuZ2UoZS5zdGFydCxlLmVuZCx0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3N0YXJ0OnJbMF0sZW5kOnJbMV19KTpyPT09dG4uUkVGP0g2KG5ldyBQdCh0bi5SRUYpKTplfXRy'@; put 'YW5zZm9ybVJvd1JhbmdlQXN0KGUsdCl7Y29uc3Qgcj10aGlzLnRyYW5zZm9ybVJvd1JhbmdlKGUuc3RhcnQsZS5lbmQsdCk7cmV0dXJuIEFycmF5LmlzQXJyYXkocik/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtzdGFydDpyWzBdLGVuZDpyWzFdfSk6cj09PXRuLlJFRj9I'@; put 'NihuZXcgUHQodG4uUkVGKSk6ZX19Y2xhc3MgJGVuIGV4dGVuZHMgZXl7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmNvbHVtbnNTcGFuPWV9Z2V0IHNoZWV0KCl7cmV0dXJuIHRoaXMuY29sdW1uc1NwYW4uc2hlZXR9aXNJcnJldmVyc2libGUoKXtyZXR1cm4hMX10cmFuc2Zvcm1Sb3dS'@; put 'YW5nZUFzdChlLHQpe3JldHVybiBlfXRyYW5zZm9ybUNlbGxSYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtUmFuZ2UoZSx0LHIpfXRyYW5zZm9ybVJvd1JhbmdlKGUsdCxyKXt0aHJvdyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9dHJhbnNmb3JtQ29sdW1uUmFuZ2UoZSx0LHIp'@; put 'e3JldHVybiB0aGlzLnRyYW5zZm9ybVJhbmdlKGUsdCxyKX10cmFuc2Zvcm1DZWxsQWRkcmVzcyhlLHQpe2NvbnN0IHI9JDQoZSx0KTtpZihyIT09dGhpcy5jb2x1bW5zU3Bhbi5zaGVldCYmdC5zaGVldCE9PXRoaXMuY29sdW1uc1NwYW4uc2hlZXQpcmV0dXJuITE7Y29uc3QgaT1lLnRvU2lt'@; put 'cGxlQ29sdW1uQWRkcmVzcyh0KTtyZXR1cm4gcj09PXRoaXMuY29sdW1uc1NwYW4uc2hlZXQmJnQuc2hlZXQhPT10aGlzLmNvbHVtbnNTcGFuLnNoZWV0P3RoaXMuY29sdW1uc1NwYW4uY29sdW1uU3RhcnQ8PWkuY29sJiZlLnNoaWZ0ZWRCeUNvbHVtbnModGhpcy5jb2x1bW5zU3Bhbi5udW1i'@; put 'ZXJPZkNvbHVtbnMpOnQuc2hlZXQ9PT10aGlzLmNvbHVtbnNTcGFuLnNoZWV0JiZyIT09dGhpcy5jb2x1bW5zU3Bhbi5zaGVldD8hKGUuaXNDb2x1bW5BYnNvbHV0ZSgpfHx0LmNvbDx0aGlzLmNvbHVtbnNTcGFuLmNvbHVtblN0YXJ0KSYmZS5zaGlmdGVkQnlDb2x1bW5zKC10aGlzLmNvbHVt'@; put 'bnNTcGFuLm51bWJlck9mQ29sdW1ucyk6ZS5pc0NvbHVtbkFic29sdXRlKCk/IShlLmNvbDx0aGlzLmNvbHVtbnNTcGFuLmNvbHVtblN0YXJ0KSYmZS5zaGlmdGVkQnlDb2x1bW5zKHRoaXMuY29sdW1uc1NwYW4ubnVtYmVyT2ZDb2x1bW5zKTplLnRvU2ltcGxlQ29sdW1uQWRkcmVzcyh0KS5j'@; put 'b2w8dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5TdGFydD8hKHQuY29sPHRoaXMuY29sdW1uc1NwYW4uY29sdW1uU3RhcnQpJiZlLnNoaWZ0ZWRCeUNvbHVtbnMoLXRoaXMuY29sdW1uc1NwYW4ubnVtYmVyT2ZDb2x1bW5zKTp0LmNvbDx0aGlzLmNvbHVtbnNTcGFuLmNvbHVtblN0YXJ0JiZlLnNo'@; put 'aWZ0ZWRCeUNvbHVtbnModGhpcy5jb2x1bW5zU3Bhbi5udW1iZXJPZkNvbHVtbnMpfWZpeE5vZGVBZGRyZXNzKGUpe3JldHVybiB0aGlzLmNvbHVtbnNTcGFuLnNoZWV0PT09ZS5zaGVldCYmdGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5TdGFydDw9ZS5jb2w/T2JqZWN0LmFzc2lnbihPYmplY3Qu'@; put 'YXNzaWduKHt9LGUpLHtjb2w6ZS5jb2wrdGhpcy5jb2x1bW5zU3Bhbi5udW1iZXJPZkNvbHVtbnN9KTplfXRyYW5zZm9ybVJhbmdlKGUsdCxyKXtjb25zdCBpPXRoaXMudHJhbnNmb3JtQ2VsbEFkZHJlc3MoZSxyKSxvPXRoaXMudHJhbnNmb3JtQ2VsbEFkZHJlc3ModCxyKTtyZXR1cm4gaT09'@; put 'PXRuLlJFRnx8bz09PXRuLlJFRj90bi5SRUY6ISghaSYmIW8pJiZbaXx8ZSxvfHx0XX19Y2xhc3MgaG1lIGV4dGVuZHMgZXl7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLnJvd3NTcGFuPWV9Z2V0IHNoZWV0KCl7cmV0dXJuIHRoaXMucm93c1NwYW4uc2hlZXR9aXNJcnJldmVyc2libGUo'@; put 'KXtyZXR1cm4hMX10cmFuc2Zvcm1Db2x1bW5SYW5nZUFzdChlLHQpe3JldHVybiBlfXRyYW5zZm9ybUNlbGxSYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtUmFuZ2UoZSx0LHIpfXRyYW5zZm9ybVJvd1JhbmdlKGUsdCxyKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SYW5nZShlLHQs'@; put 'cil9dHJhbnNmb3JtQ29sdW1uUmFuZ2UoZSx0LHIpe3Rocm93IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX10cmFuc2Zvcm1DZWxsQWRkcmVzcyhlLHQpe2NvbnN0IHI9JDQoZSx0KTtpZihyIT09dGhpcy5yb3dzU3Bhbi5zaGVldCYmdC5zaGVldCE9PXRoaXMucm93c1NwYW4uc2hlZXQpcmV0'@; put 'dXJuITE7Y29uc3QgaT1lLnRvU2ltcGxlUm93QWRkcmVzcyh0KTtyZXR1cm4gcj09PXRoaXMucm93c1NwYW4uc2hlZXQmJnQuc2hlZXQhPT10aGlzLnJvd3NTcGFuLnNoZWV0P3RoaXMucm93c1NwYW4ucm93U3RhcnQ8PWkucm93JiZlLnNoaWZ0ZWRCeVJvd3ModGhpcy5yb3dzU3Bhbi5udW1i'@; put 'ZXJPZlJvd3MpOnQuc2hlZXQ9PT10aGlzLnJvd3NTcGFuLnNoZWV0JiZyIT09dGhpcy5yb3dzU3Bhbi5zaGVldD8hKGUuaXNSb3dBYnNvbHV0ZSgpfHx0LnJvdzx0aGlzLnJvd3NTcGFuLnJvd1N0YXJ0KSYmZS5zaGlmdGVkQnlSb3dzKC10aGlzLnJvd3NTcGFuLm51bWJlck9mUm93cyk6ZS5p'@; put 'c1Jvd0Fic29sdXRlKCk/IShlLnJvdzx0aGlzLnJvd3NTcGFuLnJvd1N0YXJ0KSYmZS5zaGlmdGVkQnlSb3dzKHRoaXMucm93c1NwYW4ubnVtYmVyT2ZSb3dzKTppLnJvdzx0aGlzLnJvd3NTcGFuLnJvd1N0YXJ0PyEodC5yb3c8dGhpcy5yb3dzU3Bhbi5yb3dTdGFydCkmJmUuc2hpZnRlZEJ5'@; put 'Um93cygtdGhpcy5yb3dzU3Bhbi5udW1iZXJPZlJvd3MpOnQucm93PHRoaXMucm93c1NwYW4ucm93U3RhcnQmJmUuc2hpZnRlZEJ5Um93cyh0aGlzLnJvd3NTcGFuLm51bWJlck9mUm93cyl9Zml4Tm9kZUFkZHJlc3MoZSl7cmV0dXJuIHRoaXMucm93c1NwYW4uc2hlZXQ9PT1lLnNoZWV0JiZ0'@; put 'aGlzLnJvd3NTcGFuLnJvd1N0YXJ0PD1lLnJvdz9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse3JvdzplLnJvdyt0aGlzLnJvd3NTcGFuLm51bWJlck9mUm93c30pOmV9dHJhbnNmb3JtUmFuZ2UoZSx0LHIpe2NvbnN0IGk9dGhpcy50cmFuc2Zvcm1DZWxsQWRkcmVzcyhlLHIp'@; put 'LG89dGhpcy50cmFuc2Zvcm1DZWxsQWRkcmVzcyh0LHIpO3JldHVybiBpPT09dG4uUkVGfHxvPT09dG4uUkVGP3RuLlJFRjohKCFpJiYhbykmJltpfHxlLG98fHRdfX1jbGFzcyBxZW4gZXh0ZW5kcyBleXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuc2hlZXQ9ZX1pc0lycmV2ZXJzaWJs'@; put 'ZSgpe3JldHVybiEwfWZpeE5vZGVBZGRyZXNzKGUpe3JldHVybiBlfXRyYW5zZm9ybUNlbGxBZGRyZXNzKGUsdCl7cmV0dXJuISFlLmlzSW52YWxpZCh0KSYmdG4uUkVGfXRyYW5zZm9ybUNlbGxSYW5nZShlLHQscil7cmV0dXJuISghZS5pc0ludmFsaWQocikmJiF0LmlzSW52YWxpZChyKSkm'@; put 'JnRuLlJFRn10cmFuc2Zvcm1Db2x1bW5SYW5nZShlLHQscil7cmV0dXJuISghZS5pc0ludmFsaWQocikmJiF0LmlzSW52YWxpZChyKSkmJnRuLlJFRn10cmFuc2Zvcm1Sb3dSYW5nZShlLHQscil7cmV0dXJuISghZS5pc0ludmFsaWQocikmJiF0LmlzSW52YWxpZChyKSkmJnRuLlJFRn19Y2xh'@; put 'c3MgS2VuIGV4dGVuZHMgZXl7Y29uc3RydWN0b3IoZSx0LHIsaSl7c3VwZXIoKSx0aGlzLnNvdXJjZVJhbmdlPWUsdGhpcy50b1JpZ2h0PXQsdGhpcy50b0JvdHRvbT1yLHRoaXMudG9TaGVldD1pLHRoaXMuZGVwZW5kZW50Rm9ybXVsYVRyYW5zZm9ybWVyPW5ldyBYZW4oZSx0LHIsaSl9Z2V0'@; put 'IHNoZWV0KCl7cmV0dXJuIHRoaXMuc291cmNlUmFuZ2Uuc2hlZXR9aXNJcnJldmVyc2libGUoKXtyZXR1cm4hMH10cmFuc2Zvcm1TaW5nbGVBc3QoZSx0KXtyZXR1cm4gdGhpcy5zb3VyY2VSYW5nZS5hZGRyZXNzSW5SYW5nZSh0KT9bdGhpcy50cmFuc2Zvcm1Bc3QoZSx0KSx0aGlzLmZpeE5v'@; put 'ZGVBZGRyZXNzKHQpXTp0aGlzLmRlcGVuZGVudEZvcm11bGFUcmFuc2Zvcm1lci50cmFuc2Zvcm1TaW5nbGVBc3QoZSx0KX1maXhOb2RlQWRkcmVzcyhlKXtyZXR1cm4gQm8odGhpcy50b1NoZWV0LGUuY29sK3RoaXMudG9SaWdodCxlLnJvdyt0aGlzLnRvQm90dG9tKX10cmFuc2Zvcm1DZWxs'@; put 'QWRkcmVzcyhlLHQpe3JldHVybiB0aGlzLnRyYW5zZm9ybUFkZHJlc3MoZSx0KX10cmFuc2Zvcm1DZWxsUmFuZ2UoZSx0LHIpe3JldHVybiB0aGlzLnRyYW5zZm9ybVJhbmdlKGUsdCxyKX10cmFuc2Zvcm1Db2x1bW5SYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtUmFuZ2UoZSx0'@; put 'LHIpfXRyYW5zZm9ybVJvd1JhbmdlKGUsdCxyKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SYW5nZShlLHQscil9dHJhbnNmb3JtQWRkcmVzcyhlLHQpe2NvbnN0IHI9dGhpcy5zb3VyY2VSYW5nZTtpZihlIGluc3RhbmNlb2YgeHUpe2NvbnN0IGk9ZS50b1NpbXBsZUNlbGxBZGRyZXNzKHQpO2lm'@; put 'KHIuYWRkcmVzc0luUmFuZ2UoaSkpcmV0dXJuIGUuc2hpZnRBYnNvbHV0ZURpbWVuc2lvbnModGhpcy50b1JpZ2h0LHRoaXMudG9Cb3R0b20pfXJldHVybiBlLnNoaWZ0UmVsYXRpdmVEaW1lbnNpb25zKC10aGlzLnRvUmlnaHQsLXRoaXMudG9Cb3R0b20pfXRyYW5zZm9ybVJhbmdlKGUsdCxy'@; put 'KXtjb25zdCBpPXRoaXMuc291cmNlUmFuZ2U7aWYoZSBpbnN0YW5jZW9mIHh1JiZ0IGluc3RhbmNlb2YgeHUpe2NvbnN0IG89ZS50b1NpbXBsZUNlbGxBZGRyZXNzKHIpLGE9dC50b1NpbXBsZUNlbGxBZGRyZXNzKHIpO2lmKGkuYWRkcmVzc0luUmFuZ2UobykmJmkuYWRkcmVzc0luUmFuZ2Uo'@; put 'YSkpcmV0dXJuW2Uuc2hpZnRBYnNvbHV0ZURpbWVuc2lvbnModGhpcy50b1JpZ2h0LHRoaXMudG9Cb3R0b20pLHQuc2hpZnRBYnNvbHV0ZURpbWVuc2lvbnModGhpcy50b1JpZ2h0LHRoaXMudG9Cb3R0b20pXX1yZXR1cm5bZS5zaGlmdFJlbGF0aXZlRGltZW5zaW9ucygtdGhpcy50b1JpZ2h0'@; put 'LC10aGlzLnRvQm90dG9tKSx0LnNoaWZ0UmVsYXRpdmVEaW1lbnNpb25zKC10aGlzLnRvUmlnaHQsLXRoaXMudG9Cb3R0b20pXX19Y2xhc3MgWGVuIGV4dGVuZHMgZXl7Y29uc3RydWN0b3IoZSx0LHIsaSl7c3VwZXIoKSx0aGlzLnNvdXJjZVJhbmdlPWUsdGhpcy50b1JpZ2h0PXQsdGhpcy50'@; put 'b0JvdHRvbT1yLHRoaXMudG9TaGVldD1pfWdldCBzaGVldCgpe3JldHVybiB0aGlzLnNvdXJjZVJhbmdlLnNoZWV0fWlzSXJyZXZlcnNpYmxlKCl7cmV0dXJuITB9Zml4Tm9kZUFkZHJlc3MoZSl7cmV0dXJuIGV9dHJhbnNmb3JtQ2VsbEFkZHJlc3MoZSx0KXtyZXR1cm4hIXRoaXMuc2hvdWxk'@; put 'TW92ZShlLHQpJiZlLm1vdmVkKHRoaXMudG9TaGVldCx0aGlzLnRvUmlnaHQsdGhpcy50b0JvdHRvbSl9dHJhbnNmb3JtQ2VsbFJhbmdlKGUsdCxyKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SYW5nZShlLHQscil9dHJhbnNmb3JtQ29sdW1uUmFuZ2UoZSx0LHIpe3JldHVybiB0aGlzLnRyYW5z'@; put 'Zm9ybVJhbmdlKGUsdCxyKX10cmFuc2Zvcm1Sb3dSYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtUmFuZ2UoZSx0LHIpfXNob3VsZE1vdmUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHh1P3RoaXMuc291cmNlUmFuZ2UuYWRkcmVzc0luUmFuZ2UoZS50b1NpbXBsZUNlbGxBZGRy'@; put 'ZXNzKHQpKTplIGluc3RhbmNlb2YgbGY/dGhpcy5zb3VyY2VSYW5nZS5yb3dJblJhbmdlKGUudG9TaW1wbGVSb3dBZGRyZXNzKHQpKSYmIXRoaXMuc291cmNlUmFuZ2UuaXNGaW5pdGUoKTp0aGlzLnNvdXJjZVJhbmdlLmNvbHVtbkluUmFuZ2UoZS50b1NpbXBsZUNvbHVtbkFkZHJlc3ModCkp'@; put 'JiYhdGhpcy5zb3VyY2VSYW5nZS5pc0Zpbml0ZSgpfXRyYW5zZm9ybVJhbmdlKGUsdCxyKXtjb25zdCBpPXRoaXMudHJhbnNmb3JtQ2VsbEFkZHJlc3MoZSxyKSxvPXRoaXMudHJhbnNmb3JtQ2VsbEFkZHJlc3ModCxyKTtyZXR1cm4hKCFpfHwhbykmJltpLG9dfX1jbGFzcyBRZW4gZXh0ZW5k'@; put 'cyBleXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuY29sdW1uc1NwYW49ZX1nZXQgc2hlZXQoKXtyZXR1cm4gdGhpcy5jb2x1bW5zU3Bhbi5zaGVldH1pc0lycmV2ZXJzaWJsZSgpe3JldHVybiEwfXRyYW5zZm9ybVJvd1JhbmdlQXN0KGUsdCl7cmV0dXJuIGV9dHJhbnNmb3JtQ2VsbFJh'@; put 'bmdlKGUsdCxyKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SYW5nZShlLHQscil9dHJhbnNmb3JtUm93UmFuZ2UoZSx0LHIpe3Rocm93IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX10cmFuc2Zvcm1Db2x1bW5SYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtUmFuZ2UoZSx0LHIpfXRy'@; put 'YW5zZm9ybUNlbGxBZGRyZXNzKGUsdCl7Y29uc3Qgcj0kNChlLHQpO2lmKHRoaXMuY29sdW1uc1NwYW4uc2hlZXQhPT10LnNoZWV0JiZ0aGlzLmNvbHVtbnNTcGFuLnNoZWV0IT09cilyZXR1cm4hMTtpZih0aGlzLmNvbHVtbnNTcGFuLnNoZWV0IT09dC5zaGVldCYmdGhpcy5jb2x1bW5zU3Bh'@; put 'bi5zaGVldD09PXIpe2NvbnN0IGk9ZS50b1NpbXBsZUNvbHVtbkFkZHJlc3ModCk7aWYoaS5jb2w8dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5TdGFydClyZXR1cm4hMTtpZihpLmNvbD50aGlzLmNvbHVtbnNTcGFuLmNvbHVtbkVuZClyZXR1cm4gZS5zaGlmdGVkQnlDb2x1bW5zKC10aGlzLmNv'@; put 'bHVtbnNTcGFuLm51bWJlck9mQ29sdW1ucyl9aWYodGhpcy5jb2x1bW5zU3Bhbi5zaGVldD09PXQuc2hlZXQmJnRoaXMuY29sdW1uc1NwYW4uc2hlZXQhPT1yKXtpZihlLmlzQ29sdW1uQWJzb2x1dGUoKSlyZXR1cm4hMTtpZih0LmNvbDx0aGlzLmNvbHVtbnNTcGFuLmNvbHVtblN0YXJ0KXJl'@; put 'dHVybiExO2lmKHQuY29sPnRoaXMuY29sdW1uc1NwYW4uY29sdW1uRW5kKXJldHVybiBlLnNoaWZ0ZWRCeUNvbHVtbnModGhpcy5jb2x1bW5zU3Bhbi5udW1iZXJPZkNvbHVtbnMpfWlmKHRoaXMuY29sdW1uc1NwYW4uc2hlZXQ9PT10LnNoZWV0JiZ0aGlzLmNvbHVtbnNTcGFuLnNoZWV0PT09'@; put 'cilpZihlLmlzQ29sdW1uQWJzb2x1dGUoKSl7aWYoZS5jb2w8dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5TdGFydClyZXR1cm4hMTtpZihlLmNvbD50aGlzLmNvbHVtbnNTcGFuLmNvbHVtbkVuZClyZXR1cm4gZS5zaGlmdGVkQnlDb2x1bW5zKC10aGlzLmNvbHVtbnNTcGFuLm51bWJlck9mQ29s'@; put 'dW1ucyl9ZWxzZXtjb25zdCBpPWUudG9TaW1wbGVDb2x1bW5BZGRyZXNzKHQpO2lmKGkuY29sPHRoaXMuY29sdW1uc1NwYW4uY29sdW1uU3RhcnQpe2lmKHQuY29sPHRoaXMuY29sdW1uc1NwYW4uY29sdW1uU3RhcnQpcmV0dXJuITE7aWYodC5jb2w+dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5F'@; put 'bmQpcmV0dXJuIGUuc2hpZnRlZEJ5Q29sdW1ucyh0aGlzLmNvbHVtbnNTcGFuLm51bWJlck9mQ29sdW1ucyl9ZWxzZSBpZihpLmNvbD50aGlzLmNvbHVtbnNTcGFuLmNvbHVtbkVuZCl7aWYodC5jb2w8dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5TdGFydClyZXR1cm4gZS5zaGlmdGVkQnlDb2x1'@; put 'bW5zKC10aGlzLmNvbHVtbnNTcGFuLm51bWJlck9mQ29sdW1ucyk7aWYodC5jb2w+dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5FbmQpcmV0dXJuITF9fXJldHVybiB0bi5SRUZ9Zml4Tm9kZUFkZHJlc3MoZSl7cmV0dXJuIHRoaXMuY29sdW1uc1NwYW4uc2hlZXQ9PT1lLnNoZWV0JiZ0aGlzLmNv'@; put 'bHVtbnNTcGFuLmNvbHVtblN0YXJ0PD1lLmNvbD9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2NvbDplLmNvbC10aGlzLmNvbHVtbnNTcGFuLm51bWJlck9mQ29sdW1uc30pOmV9dHJhbnNmb3JtUmFuZ2UoZSx0LHIpe2NvbnN0IGk9JDQoZSxyKTtsZXQgbz1lLGE9dDtpZih0'@; put 'aGlzLmNvbHVtbnNTcGFuLnNoZWV0PT09aSl7Y29uc3QgZz1lLnRvU2ltcGxlQ29sdW1uQWRkcmVzcyhyKSxFPXQudG9TaW1wbGVDb2x1bW5BZGRyZXNzKHIpO2lmKHRoaXMuY29sdW1uc1NwYW4uY29sdW1uU3RhcnQ8PWcuY29sJiZ0aGlzLmNvbHVtbnNTcGFuLmNvbHVtbkVuZD49RS5jb2wp'@; put 'cmV0dXJuIHRuLlJFRjtnLmNvbD49dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5TdGFydCYmZy5jb2w8PXRoaXMuY29sdW1uc1NwYW4uY29sdW1uRW5kJiYobz1lLnNoaWZ0ZWRCeUNvbHVtbnModGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5FbmQtZy5jb2wrMSkpLEUuY29sPj10aGlzLmNvbHVtbnNT'@; put 'cGFuLmNvbHVtblN0YXJ0JiZFLmNvbDw9dGhpcy5jb2x1bW5zU3Bhbi5jb2x1bW5FbmQmJihhPXQuc2hpZnRlZEJ5Q29sdW1ucygtKEUuY29sLXRoaXMuY29sdW1uc1NwYW4uY29sdW1uU3RhcnQrMSkpKX1jb25zdCBsPXRoaXMudHJhbnNmb3JtQ2VsbEFkZHJlc3MobyxyKSx1PXRoaXMudHJh'@; put 'bnNmb3JtQ2VsbEFkZHJlc3MoYSxyKTtpZighMT09PWwmJiExPT09dSlyZXR1cm5bbyxhXTtpZihsPT09dG4uUkVGfHx1PT09dG4uUkVGKXRocm93IEVycm9yKCJDYW5ub3QgaGFwcGVuIik7cmV0dXJuW2x8fG8sdXx8YV19fWNsYXNzIGZtZSBleHRlbmRzIGV5e2NvbnN0cnVjdG9yKGUpe3N1'@; put 'cGVyKCksdGhpcy5yb3dzU3Bhbj1lfWdldCBzaGVldCgpe3JldHVybiB0aGlzLnJvd3NTcGFuLnNoZWV0fWlzSXJyZXZlcnNpYmxlKCl7cmV0dXJuITB9dHJhbnNmb3JtQ29sdW1uUmFuZ2VBc3QoZSx0KXtyZXR1cm4gZX10cmFuc2Zvcm1DZWxsQWRkcmVzcyhlLHQpe2NvbnN0IHI9JDQoZSx0'@; put 'KTtpZih0aGlzLnJvd3NTcGFuLnNoZWV0IT09dC5zaGVldCYmdGhpcy5yb3dzU3Bhbi5zaGVldCE9PXIpcmV0dXJuITE7aWYodGhpcy5yb3dzU3Bhbi5zaGVldCE9PXQuc2hlZXQmJnRoaXMucm93c1NwYW4uc2hlZXQ9PT1yKXtjb25zdCBpPWUudG9TaW1wbGVSb3dBZGRyZXNzKHQpO2lmKGku'@; put 'cm93PHRoaXMucm93c1NwYW4ucm93U3RhcnQpcmV0dXJuITE7aWYoaS5yb3c+dGhpcy5yb3dzU3Bhbi5yb3dFbmQpcmV0dXJuIGUuc2hpZnRlZEJ5Um93cygtdGhpcy5yb3dzU3Bhbi5udW1iZXJPZlJvd3MpfWlmKHRoaXMucm93c1NwYW4uc2hlZXQ9PT10LnNoZWV0JiZ0aGlzLnJvd3NTcGFu'@; put 'LnNoZWV0IT09cil7aWYoZS5pc1Jvd0Fic29sdXRlKCkpcmV0dXJuITE7aWYodC5yb3c8dGhpcy5yb3dzU3Bhbi5yb3dTdGFydClyZXR1cm4hMTtpZih0LnJvdz50aGlzLnJvd3NTcGFuLnJvd0VuZClyZXR1cm4gZS5zaGlmdGVkQnlSb3dzKHRoaXMucm93c1NwYW4ubnVtYmVyT2ZSb3dzKX1p'@; put 'Zih0aGlzLnJvd3NTcGFuLnNoZWV0PT09dC5zaGVldCYmdGhpcy5yb3dzU3Bhbi5zaGVldD09PXIpaWYoZS5pc1Jvd0Fic29sdXRlKCkpe2lmKGUucm93PHRoaXMucm93c1NwYW4ucm93U3RhcnQpcmV0dXJuITE7aWYoZS5yb3c+dGhpcy5yb3dzU3Bhbi5yb3dFbmQpcmV0dXJuIGUuc2hpZnRl'@; put 'ZEJ5Um93cygtdGhpcy5yb3dzU3Bhbi5udW1iZXJPZlJvd3MpfWVsc2V7Y29uc3QgaT1lLnRvU2ltcGxlUm93QWRkcmVzcyh0KTtpZihpLnJvdzx0aGlzLnJvd3NTcGFuLnJvd1N0YXJ0KXtpZih0LnJvdzx0aGlzLnJvd3NTcGFuLnJvd1N0YXJ0KXJldHVybiExO2lmKHQucm93PnRoaXMucm93'@; put 'c1NwYW4ucm93RW5kKXJldHVybiBlLnNoaWZ0ZWRCeVJvd3ModGhpcy5yb3dzU3Bhbi5udW1iZXJPZlJvd3MpfWVsc2UgaWYoaS5yb3c+dGhpcy5yb3dzU3Bhbi5yb3dFbmQpe2lmKHQucm93PHRoaXMucm93c1NwYW4ucm93U3RhcnQpcmV0dXJuIGUuc2hpZnRlZEJ5Um93cygtdGhpcy5yb3dz'@; put 'U3Bhbi5udW1iZXJPZlJvd3MpO2lmKHQucm93PnRoaXMucm93c1NwYW4ucm93RW5kKXJldHVybiExfX1yZXR1cm4gdG4uUkVGfXRyYW5zZm9ybUNlbGxSYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtUmFuZ2UoZSx0LHIpfXRyYW5zZm9ybVJvd1JhbmdlKGUsdCxyKXtyZXR1cm4g'@; put 'dGhpcy50cmFuc2Zvcm1SYW5nZShlLHQscil9dHJhbnNmb3JtQ29sdW1uUmFuZ2UoZSx0LHIpe3Rocm93IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX1maXhOb2RlQWRkcmVzcyhlKXtyZXR1cm4gdGhpcy5yb3dzU3Bhbi5zaGVldD09PWUuc2hlZXQmJnRoaXMucm93c1NwYW4ucm93U3RhcnQ8'@; put 'PWUucm93P09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7cm93OmUucm93LXRoaXMucm93c1NwYW4ubnVtYmVyT2ZSb3dzfSk6ZX10cmFuc2Zvcm1SYW5nZShlLHQscil7Y29uc3QgaT0kNChlLHIpO2xldCBvPWUsYT10O2lmKHRoaXMucm93c1NwYW4uc2hlZXQ9PT1pKXtjb25z'@; put 'dCBnPWUudG9TaW1wbGVSb3dBZGRyZXNzKHIpLEU9dC50b1NpbXBsZVJvd0FkZHJlc3Mocik7aWYodGhpcy5yb3dzU3Bhbi5yb3dTdGFydDw9Zy5yb3cmJnRoaXMucm93c1NwYW4ucm93RW5kPj1FLnJvdylyZXR1cm4gdG4uUkVGO2cucm93Pj10aGlzLnJvd3NTcGFuLnJvd1N0YXJ0JiZnLnJv'@; put 'dzw9dGhpcy5yb3dzU3Bhbi5yb3dFbmQmJihvPWUuc2hpZnRlZEJ5Um93cyh0aGlzLnJvd3NTcGFuLnJvd0VuZC1nLnJvdysxKSksRS5yb3c+PXRoaXMucm93c1NwYW4ucm93U3RhcnQmJkUucm93PD10aGlzLnJvd3NTcGFuLnJvd0VuZCYmKGE9dC5zaGlmdGVkQnlSb3dzKC0oRS5yb3ctdGhp'@; put 'cy5yb3dzU3Bhbi5yb3dTdGFydCsxKSkpfWNvbnN0IGw9dGhpcy50cmFuc2Zvcm1DZWxsQWRkcmVzcyhvLHIpLHU9dGhpcy50cmFuc2Zvcm1DZWxsQWRkcmVzcyhhLHIpO3JldHVybiExPT09bCYmITE9PT11P1tvLGFdOmw9PT10bi5SRUZ8fHU9PT10bi5SRUY/dG4uUkVGOltsfHxvLHV8fGFd'@; put 'fX1jbGFzcyBKZW4gZXh0ZW5kcyBleXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuc2hlZXQ9ZX1pc0lycmV2ZXJzaWJsZSgpe3JldHVybiEwfXBlcmZvcm1FYWdlclRyYW5zZm9ybWF0aW9ucyhlLHQpe2Zvcihjb25zdCByIG9mIGUuYXJyYXlGb3JtdWxhTm9kZXMoKSl7Y29uc3RbaV09'@; put 'dGhpcy50cmFuc2Zvcm1TaW5nbGVBc3Qoci5nZXRGb3JtdWxhKGUubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSksci5nZXRBZGRyZXNzKGUubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSkpO3Iuc2V0Rm9ybXVsYShpKX19Zml4Tm9kZUFkZHJlc3MoZSl7cmV0dXJuIGV9dHJhbnNm'@; put 'b3JtQ2VsbEFkZHJlc3MoZSx0KXtyZXR1cm4gdGhpcy50cmFuc2Zvcm1BZGRyZXNzKGUpfXRyYW5zZm9ybUNlbGxSYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtQWRkcmVzcyhlKX10cmFuc2Zvcm1Db2x1bW5SYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtQWRkcmVz'@; put 'cyhlKX10cmFuc2Zvcm1Sb3dSYW5nZShlLHQscil7cmV0dXJuIHRoaXMudHJhbnNmb3JtQWRkcmVzcyhlKX10cmFuc2Zvcm1BZGRyZXNzKGUpe3JldHVybiBlLnNoZWV0PT09dGhpcy5zaGVldCYmdG4uUkVGfX1mdW5jdGlvbiBIV2Uobil7aWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3'@; put 'IG4wKCJhbiBhcnJheSBvZiBhcnJheXMuIik7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYoIUFycmF5LmlzQXJyYXkobltlXSkpdGhyb3cgbmV3IG4wKCJhbiBhcnJheSBvZiBhcnJheXMuIil9ZnVuY3Rpb24gWnEobil7bGV0IGU9MCx0PTAscj0wO2ZvcihsZXQgbz0wO288bi5sZW5n'@; put 'dGg7bysrKXtsZXQgYT0wO2ZvcihsZXQgbD0wO2w8bltvXS5sZW5ndGg7bCsrKW51bGwhPW5bb11bbF0mJihhPWwrMSwrK3IpO2U9TWF0aC5tYXgoZSxhKSxhPjAmJih0PW8rMSl9Y29uc3QgaT1lKnQ7cmV0dXJue2hlaWdodDp0LHdpZHRoOmUsZmlsbDowPT09aT8wOnIvaX19Y2xhc3MgVldl'@; put 'e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zaGVldD1lLHRoaXMuaW5kZXhlcz10fW5vcm1hbGl6ZWRJbmRleGVzKCl7cmV0dXJuIEdxKHRoaXMuaW5kZXhlcyl9cm93c1NwYW5zKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplZEluZGV4ZXMoKS5tYXAoZT0+dHAuZnJvbU51bWJlck9mUm93cyh0aGlz'@; put 'LnNoZWV0LGVbMF0sZVsxXSkpfX1jbGFzcyBCV2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnNoZWV0PWUsdGhpcy5pbmRleGVzPXR9bm9ybWFsaXplZEluZGV4ZXMoKXtyZXR1cm4gJHEodGhpcy5pbmRleGVzKX1yb3dzU3BhbnMoKXtyZXR1cm4gdGhpcy5ub3JtYWxpemVkSW5kZXhlcygpLm1h'@; put 'cChlPT50cC5mcm9tTnVtYmVyT2ZSb3dzKHRoaXMuc2hlZXQsZVswXSxlWzFdKSl9fWNsYXNzIGpXZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2hlZXQ9ZSx0aGlzLmluZGV4ZXM9dH1ub3JtYWxpemVkSW5kZXhlcygpe3JldHVybiAkcSh0aGlzLmluZGV4ZXMpfWNvbHVtbnNTcGFucygpe3Jl'@; put 'dHVybiB0aGlzLm5vcm1hbGl6ZWRJbmRleGVzKCkubWFwKGU9PmdnLmZyb21OdW1iZXJPZkNvbHVtbnModGhpcy5zaGVldCxlWzBdLGVbMV0pKX19Y2xhc3MgVVdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zaGVldD1lLHRoaXMuaW5kZXhlcz10fW5vcm1hbGl6ZWRJbmRleGVzKCl7cmV0dXJu'@; put 'IEdxKHRoaXMuaW5kZXhlcyl9Y29sdW1uc1NwYW5zKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplZEluZGV4ZXMoKS5tYXAoZT0+Z2cuZnJvbU51bWJlck9mQ29sdW1ucyh0aGlzLnNoZWV0LGVbMF0sZVsxXSkpfX1jbGFzcyBldG57Y29uc3RydWN0b3IoZSx0LHIsaSxvLGEsbCx1LGcpe3RoaXMu'@; put 'ZGVwZW5kZW5jeUdyYXBoPXQsdGhpcy5jb2x1bW5TZWFyY2g9cix0aGlzLmNlbGxDb250ZW50UGFyc2VyPWksdGhpcy5wYXJzZXI9byx0aGlzLnN0YXRzPWEsdGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlPWwsdGhpcy5uYW1lZEV4cHJlc3Npb25zPXUsdGhpcy5hcnJheVNpemVQ'@; put 'cmVkaWN0b3I9Zyx0aGlzLmNoYW5nZXM9cV8uZW1wdHkoKSx0aGlzLmFsbG9jYXRlTmFtZWRFeHByZXNzaW9uQWRkcmVzc1NwYWNlKCksdGhpcy5tYXhDb2x1bW5zPWUubWF4Q29sdW1ucyx0aGlzLm1heFJvd3M9ZS5tYXhSb3dzfWdldCBzaGVldE1hcHBpbmcoKXtyZXR1cm4gdGhpcy5kZXBl'@; put 'bmRlbmN5R3JhcGguc2hlZXRNYXBwaW5nfWdldCBhZGRyZXNzTWFwcGluZygpe3JldHVybiB0aGlzLmRlcGVuZGVuY3lHcmFwaC5hZGRyZXNzTWFwcGluZ31yZW1vdmVSb3dzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZS5yb3dzU3BhbnMoKSl7Y29uc3QgaT10aGlzLmRvUmVtb3Zl'@; put 'Um93cyhyKTtpJiZ0LnB1c2goaSl9cmV0dXJuIHR9YWRkUm93cyhlKXtmb3IoY29uc3QgdCBvZiBlLnJvd3NTcGFucygpKXRoaXMuZG9BZGRSb3dzKHQpfWFkZENvbHVtbnMoZSl7Zm9yKGNvbnN0IHQgb2YgZS5jb2x1bW5zU3BhbnMoKSl0aGlzLmRvQWRkQ29sdW1ucyh0KX1yZW1vdmVDb2x1'@; put 'bW5zKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZS5jb2x1bW5zU3BhbnMoKSl7Y29uc3QgaT10aGlzLmRvUmVtb3ZlQ29sdW1ucyhyKTtpJiZ0LnB1c2goaSl9cmV0dXJuIHR9cmVtb3ZlU2hlZXQoZSl7dGhpcy5kZXBlbmRlbmN5R3JhcGgucmVtb3ZlU2hlZXQoZSk7bGV0IHQ9MDt0'@; put 'aGlzLnN0YXRzLm1lYXN1cmUoQXMuVFJBTlNGT1JNX0FTVFMsKCk9Pntjb25zdCBpPW5ldyBKZW4oZSk7aS5wZXJmb3JtRWFnZXJUcmFuc2Zvcm1hdGlvbnModGhpcy5kZXBlbmRlbmN5R3JhcGgsdGhpcy5wYXJzZXIpLHQ9dGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlLmFkZFRy'@; put 'YW5zZm9ybWF0aW9uKGkpfSksdGhpcy5zaGVldE1hcHBpbmcucmVtb3ZlU2hlZXQoZSksdGhpcy5jb2x1bW5TZWFyY2gucmVtb3ZlU2hlZXQoZSk7Y29uc3Qgcj10aGlzLm5hbWVkRXhwcmVzc2lvbnMuZ2V0QWxsTmFtZWRFeHByZXNzaW9uc0ZvclNjb3BlKGUpLm1hcChpPT50aGlzLnJlbW92'@; put 'ZU5hbWVkRXhwcmVzc2lvbihpLm5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKCksZSkpO3JldHVybnt2ZXJzaW9uOnQsc2NvcGVkTmFtZWRFeHByZXNzaW9uczpyfX1yZW1vdmVTaGVldEJ5TmFtZShlKXtjb25zdCB0PXRoaXMuc2hlZXRNYXBwaW5nLmZldGNoKGUpO3JldHVybiB0aGlzLnJlbW92'@; put 'ZVNoZWV0KHQpfWNsZWFyU2hlZXQoZSl7dGhpcy5kZXBlbmRlbmN5R3JhcGguY2xlYXJTaGVldChlKSx0aGlzLmNvbHVtblNlYXJjaC5yZW1vdmVTaGVldChlKX1hZGRTaGVldChlKXtjb25zdCB0PXRoaXMuc2hlZXRNYXBwaW5nLmFkZFNoZWV0KGUpO3JldHVybiB0aGlzLmRlcGVuZGVuY3lH'@; put 'cmFwaC5hZGRyZXNzTWFwcGluZy5hdXRvQWRkU2hlZXQodCxacShbXSkpLHRoaXMuc2hlZXRNYXBwaW5nLmZldGNoRGlzcGxheU5hbWUodCl9cmVuYW1lU2hlZXQoZSx0KXtyZXR1cm4gdGhpcy5zaGVldE1hcHBpbmcucmVuYW1lU2hlZXQoZSx0KX1tb3ZlUm93cyhlLHQscixpKXtjb25zdCBv'@; put 'PXRwLmZyb21OdW1iZXJPZlJvd3MoZSxpLHIpO3RoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZS5iZWdpbkNvbWJpbmVkTW9kZShlKSx0aGlzLmRvQWRkUm93cyhvKSxpPHQmJih0Kz1yKTtjb25zdCBhPUJvKGUsMCx0KSxsPUJvKGUsMCxpKTt0aGlzLm1vdmVDZWxscyhhLE51bWJl'@; put 'ci5QT1NJVElWRV9JTkZJTklUWSxyLGwpO2NvbnN0IHU9dHAuZnJvbU51bWJlck9mUm93cyhlLHQscik7cmV0dXJuIHRoaXMuZG9SZW1vdmVSb3dzKHUpLHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZS5jb21taXRDb21iaW5lZE1vZGUoKX1tb3ZlQ29sdW1ucyhlLHQscixpKXtj'@; put 'b25zdCBvPWdnLmZyb21OdW1iZXJPZkNvbHVtbnMoZSxpLHIpO3RoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZS5iZWdpbkNvbWJpbmVkTW9kZShlKSx0aGlzLmRvQWRkQ29sdW1ucyhvKSxpPHQmJih0Kz1yKTtjb25zdCBhPUJvKGUsdCwwKSxsPUJvKGUsaSwwKTt0aGlzLm1vdmVD'@; put 'ZWxscyhhLHIsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGwpO2NvbnN0IHU9Z2cuZnJvbU51bWJlck9mQ29sdW1ucyhlLHQscik7cmV0dXJuIHRoaXMuZG9SZW1vdmVDb2x1bW5zKHUpLHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZS5jb21taXRDb21iaW5lZE1vZGUoKX1tb3Zl'@; put 'Q2VsbHMoZSx0LHIsaSl7dGhpcy5lbnN1cmVJdElzUG9zc2libGVUb01vdmVDZWxscyhlLHQscixpKTtjb25zdCBvPWJhLnNwYW5Gcm9tKGUsdCxyKSxhPWJhLnNwYW5Gcm9tKGksdCxyKSxsPWkuY29sLWUuY29sLHU9aS5yb3ctZS5yb3csZz1pLnNoZWV0LEU9dGhpcy5nZXRSYW5nZUNsaXBi'@; put 'b2FyZENlbGxzKGEpLE89dGhpcy5kZXBlbmRlbmN5R3JhcGgucmF3VmFsdWVzRnJvbVJhbmdlKGEpO3RoaXMuY29sdW1uU2VhcmNoLnJlbW92ZVZhbHVlcyhPKTtjb25zdCBaPXRoaXMuZGVwZW5kZW5jeUdyYXBoLnJhd1ZhbHVlc0Zyb21SYW5nZShvKTt0aGlzLmNvbHVtblNlYXJjaC5tb3Zl'@; put 'VmFsdWVzKFosbCx1LGcpO2xldCBlZT0wO3RoaXMuc3RhdHMubWVhc3VyZShBcy5UUkFOU0ZPUk1fQVNUUywoKT0+e2NvbnN0IE1lPW5ldyBLZW4obyxsLHUsZyk7TWUucGVyZm9ybUVhZ2VyVHJhbnNmb3JtYXRpb25zKHRoaXMuZGVwZW5kZW5jeUdyYXBoLHRoaXMucGFyc2VyKSxlZT10aGlz'@; put 'LmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UuYWRkVHJhbnNmb3JtYXRpb24oTWUpfSksdGhpcy5kZXBlbmRlbmN5R3JhcGgubW92ZUNlbGxzKG8sbCx1LGcpO2NvbnN0IHZlPXRoaXMudXBkYXRlTmFtZWRFeHByZXNzaW9uc0Zvck1vdmVkQ2VsbHMoZSx0LHIsaSk7cmV0dXJue3ZlcnNp'@; put 'b246ZWUsb3ZlcndyaXR0ZW5DZWxsc0RhdGE6RSxhZGRlZEdsb2JhbE5hbWVkRXhwcmVzc2lvbnM6dmV9fXNldFJvd09yZGVyKGUsdCl7Y29uc3Qgcj1bXTtsZXQgaT1bXTtmb3IoY29uc3RbbyxhXW9mIHQpaWYobyE9PWEpe2NvbnN0IGw9YmEuc3BhbkZyb20oe3NoZWV0OmUsY29sOjAscm93'@; put 'Om99LDEvMCwxKSx1PXRoaXMuZ2V0UmFuZ2VDbGlwYm9hcmRDZWxscyhsKTtpPWkuY29uY2F0KHUpLHIucHVzaCh1Lm1hcCgoW3tzaGVldDpnLGNvbDpFfSxPXSk9Plt7c2hlZXQ6Zyxjb2w6RSxyb3c6YX0sT10pKX1yZXR1cm4gci5mb3JFYWNoKG89PnRoaXMucmVzdG9yZUNsaXBib2FyZENl'@; put 'bGxzKGUsby52YWx1ZXMoKSkpLGl9c2V0Q29sdW1uT3JkZXIoZSx0KXtjb25zdCByPVtdO2xldCBpPVtdO2Zvcihjb25zdFtvLGFdb2YgdClpZihvIT09YSl7Y29uc3QgbD1iYS5zcGFuRnJvbSh7c2hlZXQ6ZSxjb2w6byxyb3c6MH0sMSwxLzApLHU9dGhpcy5nZXRSYW5nZUNsaXBib2FyZENl'@; put 'bGxzKGwpO2k9aS5jb25jYXQodSksci5wdXNoKHUubWFwKChbe3NoZWV0Omcscm93Ok99LFpdKT0+W3tzaGVldDpnLGNvbDphLHJvdzpPfSxaXSkpfXJldHVybiByLmZvckVhY2gobz0+dGhpcy5yZXN0b3JlQ2xpcGJvYXJkQ2VsbHMoZSxvLnZhbHVlcygpKSksaX1hZGROYW1lZEV4cHJlc3Np'@; put 'b24oZSx0LHIsaSl7Y29uc3Qgbz10aGlzLm5hbWVkRXhwcmVzc2lvbnMuYWRkTmFtZWRFeHByZXNzaW9uKGUscixpKTt0aGlzLnN0b3JlTmFtZWRFeHByZXNzaW9uSW5DZWxsKG8uYWRkcmVzcyx0KSx0aGlzLmFkanVzdE5hbWVkRXhwcmVzc2lvbkVkZ2VzKG8sZSxyKX1yZXN0b3JlTmFtZWRF'@; put 'eHByZXNzaW9uKGUsdCxyKXtjb25zdCBpPWUuZGlzcGxheU5hbWU7dGhpcy5yZXN0b3JlQ2VsbChlLmFkZHJlc3MsdCk7Y29uc3Qgbz10aGlzLm5hbWVkRXhwcmVzc2lvbnMucmVzdG9yZU5hbWVkRXhwcmVzc2lvbihlLHIpO3RoaXMuYWRqdXN0TmFtZWRFeHByZXNzaW9uRWRnZXMobyxpLHIp'@; put 'fWNoYW5nZU5hbWVkRXhwcmVzc2lvbkV4cHJlc3Npb24oZSx0LHIsaSl7Y29uc3Qgbz10aGlzLm5hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uRm9yU2NvcGUoZSxyKTtpZighbyl0aHJvdyBuZXcgTHEoZSk7Y29uc3QgYT1vLmNvcHkoKTtvLm9wdGlvbnM9aTtjb25zdCBsPXRoaXMu'@; put 'Z2V0Q2xpcGJvYXJkQ2VsbChvLmFkZHJlc3MpO3JldHVybiB0aGlzLnN0b3JlTmFtZWRFeHByZXNzaW9uSW5DZWxsKG8uYWRkcmVzcyx0KSxbYSxsXX1yZW1vdmVOYW1lZEV4cHJlc3Npb24oZSx0KXtjb25zdCByPXRoaXMubmFtZWRFeHByZXNzaW9ucy5uYW1lZEV4cHJlc3Npb25Gb3JTY29w'@; put 'ZShlLHQpO2lmKCFyKXRocm93IG5ldyBMcShlKTt0aGlzLm5hbWVkRXhwcmVzc2lvbnMucmVtb3ZlKHIuZGlzcGxheU5hbWUsdCk7Y29uc3QgaT10aGlzLmdldENsaXBib2FyZENlbGwoci5hZGRyZXNzKTtpZih2b2lkIDAhPT10KXtjb25zdCBvPXRoaXMubmFtZWRFeHByZXNzaW9ucy53b3Jr'@; put 'Ym9va05hbWVkRXhwcmVzc2lvbk9yUGxhY2Vob2xkZXIoZSk7dGhpcy5kZXBlbmRlbmN5R3JhcGguZXhjaGFuZ2VOb2RlKHIuYWRkcmVzcyxvLmFkZHJlc3MpfWVsc2UgdGhpcy5kZXBlbmRlbmN5R3JhcGguc2V0Q2VsbEVtcHR5KHIuYWRkcmVzcyk7cmV0dXJuW3IsaV19ZW5zdXJlSXRJc1Bv'@; put 'c3NpYmxlVG9Nb3ZlQ2VsbHMoZSx0LHIsaSl7aWYobnAoZSl8fCEocXEodCkmJnFxKHIpfHxmdW5jdGlvbiB0dG4obixlLHQpe3JldHVybiAwPT09bi5yb3cmJnFxKGUpJiZ0PT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfHwwPT09bi5jb2wmJnFxKHQpJiZlPT09TnVtYmVyLlBPU0lUSVZF'@; put 'X0lORklOSVRZfShlLHQscikpfHxucChpKXx8IXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUuc2hlZXQpfHwhdGhpcy5zaGVldE1hcHBpbmcuaGFzU2hlZXRXaXRoSWQoaS5zaGVldCkpdGhyb3cgbmV3IG4wKCJhIHZhbGlkIHJhbmdlIG9mIGNlbGxzIHRvIG1vdmUuIik7Y29u'@; put 'c3Qgbz1iYS5zcGFuRnJvbShlLHQsciksYT1iYS5zcGFuRnJvbShpLHQscik7aWYoYS5leGNlZWRzU2hlZXRTaXplTGltaXRzKHRoaXMubWF4Q29sdW1ucyx0aGlzLm1heFJvd3MpKXRocm93IG5ldyB0QTtpZih0aGlzLmRlcGVuZGVuY3lHcmFwaC5hcnJheU1hcHBpbmcuaXNGb3JtdWxhQXJy'@; put 'YXlJblJhbmdlKG8pKXRocm93IG5ldyBzUDtpZih0aGlzLmRlcGVuZGVuY3lHcmFwaC5hcnJheU1hcHBpbmcuaXNGb3JtdWxhQXJyYXlJblJhbmdlKGEpKXRocm93IG5ldyBLZ2V9cmVzdG9yZUNsaXBib2FyZENlbGxzKGUsdCl7Y29uc3Qgcj1bXTtmb3IoY29uc3RbaSxvXW9mIHQpaWYodGhp'@; put 'cy5yZXN0b3JlQ2VsbChpLG8pLG8udHlwZT09PXVmLkZPUk1VTEEpe2NvbnN0e2RlcGVuZGVuY2llczphfT10aGlzLnBhcnNlci5mZXRjaENhY2hlZFJlc3VsdChvLmhhc2gpO3IucHVzaCguLi50aGlzLnVwZGF0ZU5hbWVkRXhwcmVzc2lvbnNGb3JUYXJnZXRBZGRyZXNzKGUsaSxhKSl9cmV0'@; put 'dXJuIHJ9cmVzdG9yZUNlbGwoZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlIHVmLlZBTFVFOnRoaXMuc2V0VmFsdWVUb0NlbGwodCxlKTticmVhaztjYXNlIHVmLkZPUk1VTEE6dGhpcy5zZXRGb3JtdWxhVG9DZWxsRnJvbUNhY2hlKHQuaGFzaCxlKTticmVhaztjYXNlIHVmLkVNUFRZOnRoaXMu'@; put 'c2V0Q2VsbEVtcHR5KGUpO2JyZWFrO2Nhc2UgdWYuUEFSU0lOR19FUlJPUjp0aGlzLnNldFBhcnNpbmdFcnJvclRvQ2VsbCh0LnJhd0lucHV0LHQuZXJyb3JzLGUpfX1nZXRPbGRDb250ZW50KGUpe2NvbnN0IHQ9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0Q2VsbChlKTtpZih2b2lkIDA9PT10'@; put 'fHx0IGluc3RhbmNlb2YgWF8pcmV0dXJuW2Use3R5cGU6dWYuRU1QVFl9XTtpZih0IGluc3RhbmNlb2YgUV8pcmV0dXJuW2UsT2JqZWN0LmFzc2lnbih7dHlwZTp1Zi5WQUxVRX0sdC5nZXRWYWx1ZXMoKSldO2lmKHQgaW5zdGFuY2VvZiBtZylyZXR1cm5bdC5nZXRBZGRyZXNzKHRoaXMubGF6'@; put 'aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSkse3R5cGU6dWYuRk9STVVMQSxoYXNoOnRoaXMucGFyc2VyLmNvbXB1dGVIYXNoRnJvbUFzdCh0LmdldEZvcm11bGEodGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSl9XTtpZih0IGluc3RhbmNlb2YgaUEpcmV0dXJuW2Use3R5cGU6'@; put 'dWYuUEFSU0lOR19FUlJPUixyYXdJbnB1dDp0LnJhd0lucHV0LGVycm9yczp0LmVycm9yc31dO3Rocm93IEVycm9yKCJUcnlpbmcgdG8gY29weSB1bnN1cHBvcnRlZCB0eXBlIil9Z2V0Q2xpcGJvYXJkQ2VsbChlKXtjb25zdCB0PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldENlbGwoZSk7aWYo'@; put 'dm9pZCAwPT09dHx8dCBpbnN0YW5jZW9mIFhfKXJldHVybnt0eXBlOnVmLkVNUFRZfTtpZih0IGluc3RhbmNlb2YgUV8pcmV0dXJuIE9iamVjdC5hc3NpZ24oe3R5cGU6dWYuVkFMVUV9LHQuZ2V0VmFsdWVzKCkpO2lmKHQgaW5zdGFuY2VvZiAkaCl7Y29uc3Qgcj10LmdldEFycmF5Q2VsbFZh'@; put 'bHVlKGUpO3JldHVybiByPT09bGw/e3R5cGU6dWYuRU1QVFl9Ont0eXBlOnVmLlZBTFVFLHBhcnNlZFZhbHVlOnIscmF3VmFsdWU6dC5nZXRBcnJheUNlbGxSYXdWYWx1ZShlKX19aWYodCBpbnN0YW5jZW9mIGo2KXJldHVybnt0eXBlOnVmLkZPUk1VTEEsaGFzaDp0aGlzLnBhcnNlci5jb21w'@; put 'dXRlSGFzaEZyb21Bc3QodC5nZXRGb3JtdWxhKHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSkpfTtpZih0IGluc3RhbmNlb2YgaUEpcmV0dXJue3R5cGU6dWYuUEFSU0lOR19FUlJPUixyYXdJbnB1dDp0LnJhd0lucHV0LGVycm9yczp0LmVycm9yc307dGhyb3cgRXJyb3IoIlRy'@; put 'eWluZyB0byBjb3B5IHVuc3VwcG9ydGVkIHR5cGUiKX1nZXRTaGVldENsaXBib2FyZENlbGxzKGUpe2NvbnN0IHQ9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0U2hlZXRIZWlnaHQoZSkscj10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldFdpZHRoKGUpLGk9bmV3IEFycmF5KHQpO2Zvcihs'@; put 'ZXQgbz0wO288dDtvKyspe2lbb109bmV3IEFycmF5KHIpO2ZvcihsZXQgYT0wO2E8cjthKyspe2NvbnN0IGw9Qm8oZSxhLG8pO2lbb11bYV09dGhpcy5nZXRDbGlwYm9hcmRDZWxsKGwpfX1yZXR1cm4gaX1nZXRSYW5nZUNsaXBib2FyZENlbGxzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIg'@; put 'b2YgZS5hZGRyZXNzZXModGhpcy5kZXBlbmRlbmN5R3JhcGgpKXQucHVzaChbcix0aGlzLmdldENsaXBib2FyZENlbGwocildKTtyZXR1cm4gdH1zZXRDZWxsQ29udGVudChlLHQpe2NvbnN0IHI9dGhpcy5jZWxsQ29udGVudFBhcnNlci5wYXJzZSh0KSxpPXRoaXMuZ2V0T2xkQ29udGVudChl'@; put 'KTtpZihyIGluc3RhbmNlb2YgSGQuRm9ybXVsYSl7Y29uc3Qgbz10aGlzLnBhcnNlci5wYXJzZShyLmZvcm11bGEsZSkse2FzdDphLGVycm9yczpsfT1vO2lmKGwubGVuZ3RoPjApdGhpcy5zZXRQYXJzaW5nRXJyb3JUb0NlbGwoci5mb3JtdWxhLGwsZSk7ZWxzZSB0cnl7Y29uc3QgdT10aGlz'@; put 'LmFycmF5U2l6ZVByZWRpY3Rvci5jaGVja0FycmF5U2l6ZShhLGUpO2lmKHUud2lkdGg8PTB8fHUuaGVpZ2h0PD0wKXRocm93IEVycm9yKCJJbmNvcnJlY3QgYXJyYXkgc2l6ZSIpO3RoaXMuc2V0Rm9ybXVsYVRvQ2VsbChlLHUsbyl9Y2F0Y2godSl7aWYoIXUubWVzc2FnZSl0aHJvdyB1O3Ro'@; put 'aXMuc2V0UGFyc2luZ0Vycm9yVG9DZWxsKHIuZm9ybXVsYSxbe3R5cGU6R2guSW52YWxpZFJhbmdlU2l6ZSxtZXNzYWdlOiJJbnZhbGlkIHJhbmdlIHNpemUuIn1dLGUpfX1lbHNlIHIgaW5zdGFuY2VvZiBIZC5FbXB0eT90aGlzLnNldENlbGxFbXB0eShlKTp0aGlzLnNldFZhbHVlVG9DZWxs'@; put 'KHtwYXJzZWRWYWx1ZTpyLnZhbHVlLHJhd1ZhbHVlOnR9LGUpO3JldHVybiBpfXNldFNoZWV0Q29udGVudChlLHQpe3RoaXMuY2xlYXJTaGVldChlKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKylmb3IobGV0IGk9MDtpPHRbcl0ubGVuZ3RoO2krKyl7Y29uc3Qgbz1CbyhlLGkscik7dGhp'@; put 'cy5zZXRDZWxsQ29udGVudChvLHRbcl1baV0pfX1zZXRQYXJzaW5nRXJyb3JUb0NlbGwoZSx0LHIpe2NvbnN0IGk9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0Q2VsbFZhbHVlKHIpLG89bmV3IGlBKHQsZSksYT10aGlzLmRlcGVuZGVuY3lHcmFwaC5zZXRQYXJzaW5nRXJyb3JUb0NlbGwocixv'@; put 'KTt0aGlzLmNvbHVtblNlYXJjaC5yZW1vdmUoTG8oaSksciksdGhpcy5jb2x1bW5TZWFyY2guYXBwbHlDaGFuZ2VzKGEuZ2V0Q2hhbmdlcygpKSx0aGlzLmNoYW5nZXMuYWRkQWxsKGEpLHRoaXMuY2hhbmdlcy5hZGRDaGFuZ2Uoby5nZXRDZWxsVmFsdWUoKSxyKX1zZXRGb3JtdWxhVG9DZWxs'@; put 'KGUsdCx7YXN0OnIsaGFzVm9sYXRpbGVGdW5jdGlvbjppLGhhc1N0cnVjdHVyYWxDaGFuZ2VGdW5jdGlvbjpvLGRlcGVuZGVuY2llczphfSl7Y29uc3QgbD10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsVmFsdWUoZSksdT10aGlzLmRlcGVuZGVuY3lHcmFwaC5zZXRGb3JtdWxhVG9DZWxs'@; put 'KGUscixWNihhLGUpLHQsaSxvKTt0aGlzLmNvbHVtblNlYXJjaC5yZW1vdmUoTG8obCksZSksdGhpcy5jb2x1bW5TZWFyY2guYXBwbHlDaGFuZ2VzKHUuZ2V0Q2hhbmdlcygpKSx0aGlzLmNoYW5nZXMuYWRkQWxsKHUpfXNldFZhbHVlVG9DZWxsKGUsdCl7Y29uc3Qgcj10aGlzLmRlcGVuZGVu'@; put 'Y3lHcmFwaC5nZXRDZWxsVmFsdWUodCksaT10aGlzLmRlcGVuZGVuY3lHcmFwaC5zZXRWYWx1ZVRvQ2VsbCh0LGUpO3RoaXMuY29sdW1uU2VhcmNoLmNoYW5nZShMbyhyKSxMbyhlLnBhcnNlZFZhbHVlKSx0KSx0aGlzLmNvbHVtblNlYXJjaC5hcHBseUNoYW5nZXMoaS5nZXRDaGFuZ2VzKCku'@; put 'ZmlsdGVyKG89PiF1UChvLmFkZHJlc3MsdCkpKSx0aGlzLmNoYW5nZXMuYWRkQWxsKGkpLHRoaXMuY2hhbmdlcy5hZGRDaGFuZ2UoZS5wYXJzZWRWYWx1ZSx0KX1zZXRDZWxsRW1wdHkoZSl7aWYodGhpcy5kZXBlbmRlbmN5R3JhcGguaXNBcnJheUludGVybmFsQ2VsbChlKSlyZXR1cm47Y29u'@; put 'c3QgdD10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsVmFsdWUoZSkscj10aGlzLmRlcGVuZGVuY3lHcmFwaC5zZXRDZWxsRW1wdHkoZSk7dGhpcy5jb2x1bW5TZWFyY2gucmVtb3ZlKExvKHQpLGUpLHRoaXMuY29sdW1uU2VhcmNoLmFwcGx5Q2hhbmdlcyhyLmdldENoYW5nZXMoKSksdGhp'@; put 'cy5jaGFuZ2VzLmFkZEFsbChyKSx0aGlzLmNoYW5nZXMuYWRkQ2hhbmdlKGxsLGUpfXNldEZvcm11bGFUb0NlbGxGcm9tQ2FjaGUoZSx0KXtjb25zdHthc3Q6cixoYXNWb2xhdGlsZUZ1bmN0aW9uOmksaGFzU3RydWN0dXJhbENoYW5nZUZ1bmN0aW9uOm8sZGVwZW5kZW5jaWVzOmF9PXRoaXMu'@; put 'cGFyc2VyLmZldGNoQ2FjaGVkUmVzdWx0KGUpLGw9VjYoYSx0KSxbdV09bmV3IHFlbih0LnNoZWV0KS50cmFuc2Zvcm1TaW5nbGVBc3Qocix0KTt0aGlzLnBhcnNlci5yZW1lbWJlck5ld0FzdCh1KTtjb25zdCBnPShuPT5uLmZpbHRlcihlPT5lIGluc3RhbmNlb2YgYTl8fChlIGluc3RhbmNl'@; put 'b2YgYmE/IShucChlLnN0YXJ0KXx8bnAoZS5lbmQpKTohbnAoZSkpKSkobCksRT10aGlzLmFycmF5U2l6ZVByZWRpY3Rvci5jaGVja0FycmF5U2l6ZShyLHQpO3RoaXMuZGVwZW5kZW5jeUdyYXBoLnNldEZvcm11bGFUb0NlbGwodCx1LGcsRSxpLG8pfXJvd0VmZmVjdGl2ZWx5Tm90SW5TaGVl'@; put 'dChlLHQpe3JldHVybiBlPj10aGlzLmRlcGVuZGVuY3lHcmFwaC5hZGRyZXNzTWFwcGluZy5nZXRIZWlnaHQodCl9Z2V0QW5kQ2xlYXJDb250ZW50Q2hhbmdlcygpe2NvbnN0IGU9dGhpcy5jaGFuZ2VzO3JldHVybiB0aGlzLmNoYW5nZXM9cV8uZW1wdHkoKSxlfWZvcmNlQXBwbHlQb3N0cG9u'@; put 'ZWRUcmFuc2Zvcm1hdGlvbnMoKXt0aGlzLmRlcGVuZGVuY3lHcmFwaC5mb3JjZUFwcGx5UG9zdHBvbmVkVHJhbnNmb3JtYXRpb25zKCl9ZG9SZW1vdmVSb3dzKGUpe2lmKHRoaXMucm93RWZmZWN0aXZlbHlOb3RJblNoZWV0KGUucm93U3RhcnQsZS5zaGVldCkpcmV0dXJuO2NvbnN0IHQ9W107'@; put 'Zm9yKGNvbnN0W2Fdb2YgdGhpcy5kZXBlbmRlbmN5R3JhcGguZW50cmllc0Zyb21Sb3dzU3BhbihlKSl0LnB1c2goe2FkZHJlc3M6YSxjZWxsVHlwZTp0aGlzLmdldENsaXBib2FyZENlbGwoYSl9KTtjb25zdHthZmZlY3RlZEFycmF5czpyLGNvbnRlbnRDaGFuZ2VzOml9PXRoaXMuZGVwZW5k'@; put 'ZW5jeUdyYXBoLnJlbW92ZVJvd3MoZSk7dGhpcy5jb2x1bW5TZWFyY2guYXBwbHlDaGFuZ2VzKGkuZ2V0Q2hhbmdlcygpKTtsZXQgbz0wO3JldHVybiB0aGlzLnN0YXRzLm1lYXN1cmUoQXMuVFJBTlNGT1JNX0FTVFMsKCk9Pntjb25zdCBhPW5ldyBmbWUoZSk7YS5wZXJmb3JtRWFnZXJUcmFu'@; put 'c2Zvcm1hdGlvbnModGhpcy5kZXBlbmRlbmN5R3JhcGgsdGhpcy5wYXJzZXIpLG89dGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlLmFkZFRyYW5zZm9ybWF0aW9uKGEpfSksdGhpcy5yZXdyaXRlQWZmZWN0ZWRBcnJheXMocikse3ZlcnNpb246byxyZW1vdmVkQ2VsbHM6dCxyb3dG'@; put 'cm9tOmUucm93U3RhcnQscm93Q291bnQ6ZS5udW1iZXJPZlJvd3N9fWRvUmVtb3ZlQ29sdW1ucyhlKXtpZih0aGlzLmNvbHVtbkVmZmVjdGl2ZWx5Tm90SW5TaGVldChlLmNvbHVtblN0YXJ0LGUuc2hlZXQpKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdFthXW9mIHRoaXMuZGVwZW5kZW5j'@; put 'eUdyYXBoLmVudHJpZXNGcm9tQ29sdW1uc1NwYW4oZSkpdC5wdXNoKHthZGRyZXNzOmEsY2VsbFR5cGU6dGhpcy5nZXRDbGlwYm9hcmRDZWxsKGEpfSk7Y29uc3R7YWZmZWN0ZWRBcnJheXM6cixjb250ZW50Q2hhbmdlczppfT10aGlzLmRlcGVuZGVuY3lHcmFwaC5yZW1vdmVDb2x1bW5zKGUp'@; put 'O3RoaXMuY29sdW1uU2VhcmNoLmFwcGx5Q2hhbmdlcyhpLmdldENoYW5nZXMoKSksdGhpcy5jb2x1bW5TZWFyY2gucmVtb3ZlQ29sdW1ucyhlKTtsZXQgbz0wO3JldHVybiB0aGlzLnN0YXRzLm1lYXN1cmUoQXMuVFJBTlNGT1JNX0FTVFMsKCk9Pntjb25zdCBhPW5ldyBRZW4oZSk7YS5wZXJm'@; put 'b3JtRWFnZXJUcmFuc2Zvcm1hdGlvbnModGhpcy5kZXBlbmRlbmN5R3JhcGgsdGhpcy5wYXJzZXIpLG89dGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlLmFkZFRyYW5zZm9ybWF0aW9uKGEpfSksdGhpcy5yZXdyaXRlQWZmZWN0ZWRBcnJheXMocikse3ZlcnNpb246byxyZW1vdmVk'@; put 'Q2VsbHM6dCxjb2x1bW5Gcm9tOmUuY29sdW1uU3RhcnQsY29sdW1uQ291bnQ6ZS5udW1iZXJPZkNvbHVtbnN9fWRvQWRkUm93cyhlKXtpZih0aGlzLnJvd0VmZmVjdGl2ZWx5Tm90SW5TaGVldChlLnJvd1N0YXJ0LGUuc2hlZXQpKXJldHVybjtjb25zdHthZmZlY3RlZEFycmF5czp0fT10aGlz'@; put 'LmRlcGVuZGVuY3lHcmFwaC5hZGRSb3dzKGUpO3RoaXMuc3RhdHMubWVhc3VyZShBcy5UUkFOU0ZPUk1fQVNUUywoKT0+e2NvbnN0IHI9bmV3IGhtZShlKTtyLnBlcmZvcm1FYWdlclRyYW5zZm9ybWF0aW9ucyh0aGlzLmRlcGVuZGVuY3lHcmFwaCx0aGlzLnBhcnNlciksdGhpcy5sYXppbHlU'@; put 'cmFuc2Zvcm1pbmdBc3RTZXJ2aWNlLmFkZFRyYW5zZm9ybWF0aW9uKHIpfSksdGhpcy5yZXdyaXRlQWZmZWN0ZWRBcnJheXModCl9cmV3cml0ZUFmZmVjdGVkQXJyYXlzKGUpe2Zvcihjb25zdCB0IG9mIGUudmFsdWVzKCkpe2lmKHQuYXJyYXkuc2l6ZS5pc1JlZiljb250aW51ZTtjb25zdCBy'@; put 'PXQuZ2V0Rm9ybXVsYSh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpLGk9dC5nZXRBZGRyZXNzKHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSksbz10aGlzLnBhcnNlci5jb21wdXRlSGFzaEZyb21Bc3Qocik7dGhpcy5zZXRGb3JtdWxhVG9DZWxsRnJvbUNhY2hl'@; put 'KG8saSl9fWRvQWRkQ29sdW1ucyhlKXtpZih0aGlzLmNvbHVtbkVmZmVjdGl2ZWx5Tm90SW5TaGVldChlLmNvbHVtblN0YXJ0LGUuc2hlZXQpKXJldHVybjtjb25zdHthZmZlY3RlZEFycmF5czp0LGNvbnRlbnRDaGFuZ2VzOnJ9PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmFkZENvbHVtbnMoZSk7'@; put 'dGhpcy5jb2x1bW5TZWFyY2guYWRkQ29sdW1ucyhlKSx0aGlzLmNvbHVtblNlYXJjaC5hcHBseUNoYW5nZXMoci5nZXRDaGFuZ2VzKCkpLHRoaXMuc3RhdHMubWVhc3VyZShBcy5UUkFOU0ZPUk1fQVNUUywoKT0+e2NvbnN0IGk9bmV3ICRlbihlKTtpLnBlcmZvcm1FYWdlclRyYW5zZm9ybWF0'@; put 'aW9ucyh0aGlzLmRlcGVuZGVuY3lHcmFwaCx0aGlzLnBhcnNlciksdGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlLmFkZFRyYW5zZm9ybWF0aW9uKGkpfSksdGhpcy5yZXdyaXRlQWZmZWN0ZWRBcnJheXModCl9Y29sdW1uRWZmZWN0aXZlbHlOb3RJblNoZWV0KGUsdCl7cmV0dXJu'@; put 'IGU+PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmFkZHJlc3NNYXBwaW5nLmdldFdpZHRoKHQpfWFkanVzdE5hbWVkRXhwcmVzc2lvbkVkZ2VzKGUsdCxyKXtpZih2b2lkIDA9PT1yKXJldHVybjtjb25zdHt2ZXJ0ZXg6aSxpZDpvfT10aGlzLmRlcGVuZGVuY3lHcmFwaC5mZXRjaENlbGxPckNyZWF0'@; put 'ZUVtcHR5KGUuYWRkcmVzcyksYT1vPz90aGlzLmRlcGVuZGVuY3lHcmFwaC5ncmFwaC5nZXROb2RlSWQoaSksbD10aGlzLm5hbWVkRXhwcmVzc2lvbnMud29ya2Jvb2tOYW1lZEV4cHJlc3Npb25PclBsYWNlaG9sZGVyKHQpLHt2ZXJ0ZXg6dSxpZDpnfT10aGlzLmRlcGVuZGVuY3lHcmFwaC5m'@; put 'ZXRjaENlbGxPckNyZWF0ZUVtcHR5KGwuYWRkcmVzcyksRT1nPz90aGlzLmRlcGVuZGVuY3lHcmFwaC5ncmFwaC5nZXROb2RlSWQodSk7Zm9yKGNvbnN0IE8gb2YgdGhpcy5kZXBlbmRlbmN5R3JhcGguZ3JhcGguYWRqYWNlbnROb2Rlcyh1KSlpZihPIGluc3RhbmNlb2YgajYmJk8uZ2V0QWRk'@; put 'cmVzcyh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpLnNoZWV0PT09cil7Y29uc3QgWj1PLmdldEZvcm11bGEodGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSxlZT1PLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSx7ZGVwZW5k'@; put 'ZW5jaWVzOnZlfT10aGlzLnBhcnNlci5mZXRjaENhY2hlZFJlc3VsdEZvckFzdChaKTtmb3IoY29uc3QgTWUgb2YgVjYodmUsZWUpKU1lIGluc3RhbmNlb2YgYTkmJk1lLm5hbWUudG9Mb3dlckNhc2UoKT09PWUuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKSYmKHRoaXMuZGVwZW5kZW5jeUdy'@; put 'YXBoLmdyYXBoLnJlbW92ZUVkZ2UoRSxPKSx0aGlzLmRlcGVuZGVuY3lHcmFwaC5ncmFwaC5hZGRFZGdlKGEsTykpfX1zdG9yZU5hbWVkRXhwcmVzc2lvbkluQ2VsbChlLHQpe2NvbnN0IHI9dGhpcy5jZWxsQ29udGVudFBhcnNlci5wYXJzZSh0KTtpZihyIGluc3RhbmNlb2YgSGQuRm9ybXVs'@; put 'YSl7Y29uc3QgaT10aGlzLnBhcnNlci5wYXJzZShyLmZvcm11bGEsQm8oLTEsMCwwKSk7aWYoSl8oaS5hc3QpKXRocm93IG5ldyByV2U7Y29uc3R7YXN0Om8saGFzVm9sYXRpbGVGdW5jdGlvbjphLGhhc1N0cnVjdHVyYWxDaGFuZ2VGdW5jdGlvbjpsLGRlcGVuZGVuY2llczp1fT1pO3RoaXMu'@; put 'ZGVwZW5kZW5jeUdyYXBoLnNldEZvcm11bGFUb0NlbGwoZSxvLFY2KHUsZSkseWwuc2NhbGFyKCksYSxsKX1lbHNlIHIgaW5zdGFuY2VvZiBIZC5FbXB0eT90aGlzLnNldENlbGxFbXB0eShlKTp0aGlzLnNldFZhbHVlVG9DZWxsKHtwYXJzZWRWYWx1ZTpyLnZhbHVlLHJhd1ZhbHVlOnR9LGUp'@; put 'fXVwZGF0ZU5hbWVkRXhwcmVzc2lvbnNGb3JNb3ZlZENlbGxzKGUsdCxyLGkpe2lmKGUuc2hlZXQ9PT1pLnNoZWV0KXJldHVybltdO2NvbnN0IG89W10sYT1iYS5zcGFuRnJvbShpLHQscik7Zm9yKGNvbnN0IGwgb2YgYS5hZGRyZXNzZXModGhpcy5kZXBlbmRlbmN5R3JhcGgpKXtjb25zdCB1'@; put 'PXRoaXMuYWRkcmVzc01hcHBpbmcuZmV0Y2hDZWxsKGwpO2lmKHUgaW5zdGFuY2VvZiBqNiYmbC5zaGVldCE9PWUuc2hlZXQpe2NvbnN0IGc9dS5nZXRGb3JtdWxhKHRoaXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSkse2RlcGVuZGVuY2llczpFfT10aGlzLnBhcnNlci5mZXRjaENh'@; put 'Y2hlZFJlc3VsdEZvckFzdChnKTtvLnB1c2goLi4udGhpcy51cGRhdGVOYW1lZEV4cHJlc3Npb25zRm9yVGFyZ2V0QWRkcmVzcyhlLnNoZWV0LGwsRSkpfX1yZXR1cm4gb311cGRhdGVOYW1lZEV4cHJlc3Npb25zRm9yVGFyZ2V0QWRkcmVzcyhlLHQscil7aWYoZT09PXQuc2hlZXQpcmV0dXJu'@; put 'W107Y29uc3QgaT1bXSxvPXRoaXMuYWRkcmVzc01hcHBpbmcuZmV0Y2hDZWxsKHQpO2Zvcihjb25zdCBhIG9mIFY2KHIsdCkpe2lmKCEoYSBpbnN0YW5jZW9mIGE5KSljb250aW51ZTtjb25zdCBsPWEubmFtZSx1PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmZldGNoTmFtZWRFeHByZXNzaW9uVmVy'@; put 'dGV4KGwsZSkudmVydGV4LEU9dGhpcy5uYW1lZEV4cHJlc3Npb25zLmlzRXhwcmVzc2lvbkluU2NvcGUobCx0LnNoZWV0KT90aGlzLmRlcGVuZGVuY3lHcmFwaC5mZXRjaE5hbWVkRXhwcmVzc2lvblZlcnRleChsLHQuc2hlZXQpLnZlcnRleDp0aGlzLmNvcHlPckZldGNoR2xvYmFsTmFtZWRF'@; put 'eHByZXNzaW9uVmVydGV4KGwsdSxpKTtFIT09dSYmKHRoaXMuZGVwZW5kZW5jeUdyYXBoLmdyYXBoLnJlbW92ZUVkZ2VJZkV4aXN0cyh1LG8pLHRoaXMuZGVwZW5kZW5jeUdyYXBoLmdyYXBoLmFkZEVkZ2UoRSxvKSl9cmV0dXJuIGl9YWxsb2NhdGVOYW1lZEV4cHJlc3Npb25BZGRyZXNzU3Bh'@; put 'Y2UoKXt0aGlzLmRlcGVuZGVuY3lHcmFwaC5hZGRyZXNzTWFwcGluZy5hZGRTaGVldChZcS5TSEVFVF9GT1JfV09SS0JPT0tfRVhQUkVTU0lPTlMsbmV3IFpKdCgwLDApKX1jb3B5T3JGZXRjaEdsb2JhbE5hbWVkRXhwcmVzc2lvblZlcnRleChlLHQscil7bGV0IGk9dGhpcy5uYW1lZEV4cHJl'@; put 'c3Npb25zLm5hbWVkRXhwcmVzc2lvbkZvclNjb3BlKGUpO2lmKHZvaWQgMD09PWkpaWYoaT10aGlzLm5hbWVkRXhwcmVzc2lvbnMuYWRkTmFtZWRFeHByZXNzaW9uKGUpLHIucHVzaChpLm5vcm1hbGl6ZUV4cHJlc3Npb25OYW1lKCkpLHQgaW5zdGFuY2VvZiBqNil7Y29uc3Qgbz10aGlzLnBh'@; put 'cnNlci5mZXRjaENhY2hlZFJlc3VsdEZvckFzdCh0LmdldEZvcm11bGEodGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKSkse2FzdDphLGhhc1ZvbGF0aWxlRnVuY3Rpb246bCxoYXNTdHJ1Y3R1cmFsQ2hhbmdlRnVuY3Rpb246dSxkZXBlbmRlbmNpZXM6Z309bzt0aGlzLmRlcGVu'@; put 'ZGVuY3lHcmFwaC5zZXRGb3JtdWxhVG9DZWxsKGkuYWRkcmVzcyxhLFY2KGcsaS5hZGRyZXNzKSx5bC5zY2FsYXIoKSxsLHUpfWVsc2UgdCBpbnN0YW5jZW9mIFhfP3RoaXMuc2V0Q2VsbEVtcHR5KGkuYWRkcmVzcyk6dCBpbnN0YW5jZW9mIFFfJiZ0aGlzLnNldFZhbHVlVG9DZWxsKHQuZ2V0'@; put 'VmFsdWVzKCksaS5hZGRyZXNzKTtyZXR1cm4gdGhpcy5kZXBlbmRlbmN5R3JhcGguZmV0Y2hDZWxsT3JDcmVhdGVFbXB0eShpLmFkZHJlc3MpLnZlcnRleH19ZnVuY3Rpb24gR3Eobil7aWYobi5sZW5ndGg8PTEpcmV0dXJuIG47Y29uc3QgZT1bLi4ubl0uc29ydCgoW2ldLFtvXSk9Pmktbyks'@; put 'dD1lLnJlZHVjZSgoaSxbbyxhXSk9Pntjb25zdCBsPWlbaS5sZW5ndGgtMV0sdT1sWzBdK2xbMV07cmV0dXJuIG88PXU/bFsxXSs9TWF0aC5tYXgoMCxhLSh1LW8pKTppLnB1c2goW28sYV0pLGl9LFtlWzBdXSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSl0W2ldWzBdLT1y'@; put 'LHIrPXRbaV1bMV07cmV0dXJuIHR9ZnVuY3Rpb24gJHEobil7aWYobi5sZW5ndGg8PTEpcmV0dXJuIG47Y29uc3QgZT1bLi4ubl0uc29ydCgoW2ldLFtvXSk9PmktbyksdD1lLnJlZHVjZSgoaSxbbyxhXSk9Pntjb25zdCBsPWlbaS5sZW5ndGgtMV07cmV0dXJuIG89PT1sWzBdP2xbMV09TWF0'@; put 'aC5tYXgobFsxXSxhKTppLnB1c2goW28sYV0pLGl9LFtlWzBdXSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSl0W2ldWzBdKz1yLHIrPXRbaV1bMV07cmV0dXJuIHR9ZnVuY3Rpb24gcXEobil7cmV0dXJuIE51bWJlci5pc0ludGVnZXIobikmJm4+MH1jbGFzcyBSMXt9Y2xh'@; put 'c3MgbnRuIGV4dGVuZHMgUjF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuY29tbWFuZD1lLHRoaXMucm93c1JlbW92YWxzPXR9ZG9VbmRvKGUpe2UudW5kb1JlbW92ZVJvd3ModGhpcyl9ZG9SZWRvKGUpe2UucmVkb1JlbW92ZVJvd3ModGhpcyl9fWNsYXNzIHJ0biBleHRlbmRzIFIx'@; put 'e2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhLGwpe3N1cGVyKCksdGhpcy5zb3VyY2VMZWZ0Q29ybmVyPWUsdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PXIsdGhpcy5kZXN0aW5hdGlvbkxlZnRDb3JuZXI9aSx0aGlzLm92ZXJ3cml0dGVuQ2VsbHNEYXRhPW8sdGhpcy5hZGRlZEdsb2JhbE5hbWVk'@; put 'RXhwcmVzc2lvbnM9YSx0aGlzLnZlcnNpb249bH1kb1VuZG8oZSl7ZS51bmRvTW92ZUNlbGxzKHRoaXMpfWRvUmVkbyhlKXtlLnJlZG9Nb3ZlQ2VsbHModGhpcyl9fWNsYXNzIGl0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5jb21tYW5kPWV9ZG9VbmRvKGUpe2Uu'@; put 'dW5kb0FkZFJvd3ModGhpcyl9ZG9SZWRvKGUpe2UucmVkb0FkZFJvd3ModGhpcyl9fWNsYXNzIG90biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMuc2hlZXRJZD1lLHRoaXMucm93TWFwcGluZz10LHRoaXMub2xkQ29udGVudD1yfWRvVW5kbyhlKXtlLnVuZG9T'@; put 'ZXRSb3dPcmRlcih0aGlzKX1kb1JlZG8oZSl7ZS5yZWRvU2V0Um93T3JkZXIodGhpcyl9fWNsYXNzIGF0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMuc2hlZXRJZD1lLHRoaXMuY29sdW1uTWFwcGluZz10LHRoaXMub2xkQ29udGVudD1yfWRvVW5kbyhlKXtl'@; put 'LnVuZG9TZXRDb2x1bW5PcmRlcih0aGlzKX1kb1JlZG8oZSl7ZS5yZWRvU2V0Q29sdW1uT3JkZXIodGhpcyl9fWNsYXNzIHN0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMuc2hlZXRJZD1lLHRoaXMub2xkU2hlZXRDb250ZW50PXQsdGhpcy5uZXdTaGVldENv'@; put 'bnRlbnQ9cn1kb1VuZG8oZSl7ZS51bmRvU2V0U2hlZXRDb250ZW50KHRoaXMpfWRvUmVkbyhlKXtlLnJlZG9TZXRTaGVldENvbnRlbnQodGhpcyl9fWNsYXNzIGx0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCxyLGksbyl7c3VwZXIoKSx0aGlzLnNoZWV0PWUsdGhpcy5zdGFydFJvdz10'@; put 'LHRoaXMubnVtYmVyT2ZSb3dzPXIsdGhpcy50YXJnZXRSb3c9aSx0aGlzLnZlcnNpb249byx0aGlzLnVuZG9TdGFydD10aGlzLnN0YXJ0Um93PHRoaXMudGFyZ2V0Um93P3RoaXMudGFyZ2V0Um93LXRoaXMubnVtYmVyT2ZSb3dzOnRoaXMudGFyZ2V0Um93LHRoaXMudW5kb0VuZD10aGlzLnN0'@; put 'YXJ0Um93PnRoaXMudGFyZ2V0Um93P3RoaXMuc3RhcnRSb3crdGhpcy5udW1iZXJPZlJvd3M6dGhpcy5zdGFydFJvd31kb1VuZG8oZSl7ZS51bmRvTW92ZVJvd3ModGhpcyl9ZG9SZWRvKGUpe2UucmVkb01vdmVSb3dzKHRoaXMpfX1jbGFzcyBjdG4gZXh0ZW5kcyBSMXtjb25zdHJ1Y3Rvcihl'@; put 'LHQscixpLG8pe3N1cGVyKCksdGhpcy5zaGVldD1lLHRoaXMuc3RhcnRDb2x1bW49dCx0aGlzLm51bWJlck9mQ29sdW1ucz1yLHRoaXMudGFyZ2V0Q29sdW1uPWksdGhpcy52ZXJzaW9uPW8sdGhpcy51bmRvU3RhcnQ9dGhpcy5zdGFydENvbHVtbjx0aGlzLnRhcmdldENvbHVtbj90aGlzLnRh'@; put 'cmdldENvbHVtbi10aGlzLm51bWJlck9mQ29sdW1uczp0aGlzLnRhcmdldENvbHVtbix0aGlzLnVuZG9FbmQ9dGhpcy5zdGFydENvbHVtbj50aGlzLnRhcmdldENvbHVtbj90aGlzLnN0YXJ0Q29sdW1uK3RoaXMubnVtYmVyT2ZDb2x1bW5zOnRoaXMuc3RhcnRDb2x1bW59ZG9VbmRvKGUpe2Uu'@; put 'dW5kb01vdmVDb2x1bW5zKHRoaXMpfWRvUmVkbyhlKXtlLnJlZG9Nb3ZlQ29sdW1ucyh0aGlzKX19Y2xhc3MgdXRuIGV4dGVuZHMgUjF7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmNvbW1hbmQ9ZX1kb1VuZG8oZSl7ZS51bmRvQWRkQ29sdW1ucyh0aGlzKX1kb1JlZG8oZSl7ZS5yZWRv'@; put 'QWRkQ29sdW1ucyh0aGlzKX19Y2xhc3MgZHRuIGV4dGVuZHMgUjF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpLHRoaXMuY29tbWFuZD1lLHRoaXMuY29sdW1uc1JlbW92YWxzPXR9ZG9VbmRvKGUpe2UudW5kb1JlbW92ZUNvbHVtbnModGhpcyl9ZG9SZWRvKGUpe2UucmVkb1JlbW92ZUNvbHVt'@; put 'bnModGhpcyl9fWNsYXNzIGh0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5zaGVldE5hbWU9ZX1kb1VuZG8oZSl7ZS51bmRvQWRkU2hlZXQodGhpcyl9ZG9SZWRvKGUpe2UucmVkb0FkZFNoZWV0KHRoaXMpfX1jbGFzcyBmdG4gZXh0ZW5kcyBSMXtjb25zdHJ1Y3Rv'@; put 'cihlLHQscixpLG8pe3N1cGVyKCksdGhpcy5zaGVldE5hbWU9ZSx0aGlzLnNoZWV0SWQ9dCx0aGlzLm9sZFNoZWV0Q29udGVudD1yLHRoaXMuc2NvcGVkTmFtZWRFeHByZXNzaW9ucz1pLHRoaXMudmVyc2lvbj1vfWRvVW5kbyhlKXtlLnVuZG9SZW1vdmVTaGVldCh0aGlzKX1kb1JlZG8oZSl7'@; put 'ZS5yZWRvUmVtb3ZlU2hlZXQodGhpcyl9fWNsYXNzIHB0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcigpLHRoaXMuc2hlZXRJZD1lLHRoaXMub2xkTmFtZT10LHRoaXMubmV3TmFtZT1yfWRvVW5kbyhlKXtlLnVuZG9SZW5hbWVTaGVldCh0aGlzKX1kb1JlZG8oZSl7ZS5y'@; put 'ZWRvUmVuYW1lU2hlZXQodGhpcyl9fWNsYXNzIGd0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKSx0aGlzLnNoZWV0SWQ9ZSx0aGlzLm9sZFNoZWV0Q29udGVudD10fWRvVW5kbyhlKXtlLnVuZG9DbGVhclNoZWV0KHRoaXMpfWRvUmVkbyhlKXtlLnJlZG9DbGVhclNoZWV0'@; put 'KHRoaXMpfX1jbGFzcyBtdG4gZXh0ZW5kcyBSMXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuY2VsbENvbnRlbnRzPWV9ZG9VbmRvKGUpe2UudW5kb1NldENlbGxDb250ZW50cyh0aGlzKX1kb1JlZG8oZSl7ZS5yZWRvU2V0Q2VsbENvbnRlbnRzKHRoaXMpfX1jbGFzcyB2dG4gZXh0ZW5k'@; put 'cyBSMXtjb25zdHJ1Y3RvcihlLHQscixpKXtzdXBlcigpLHRoaXMudGFyZ2V0TGVmdENvcm5lcj1lLHRoaXMub2xkQ29udGVudD10LHRoaXMubmV3Q29udGVudD1yLHRoaXMuYWRkZWRHbG9iYWxOYW1lZEV4cHJlc3Npb25zPWl9ZG9VbmRvKGUpe2UudW5kb1Bhc3RlKHRoaXMpfWRvUmVkbyhl'@; put 'KXtlLnJlZG9QYXN0ZSh0aGlzKX19Y2xhc3MgX3RuIGV4dGVuZHMgUjF7Y29uc3RydWN0b3IoZSx0LHIsaSl7c3VwZXIoKSx0aGlzLm5hbWU9ZSx0aGlzLm5ld0NvbnRlbnQ9dCx0aGlzLnNjb3BlPXIsdGhpcy5vcHRpb25zPWl9ZG9VbmRvKGUpe2UudW5kb0FkZE5hbWVkRXhwcmVzc2lvbih0'@; put 'aGlzKX1kb1JlZG8oZSl7ZS5yZWRvQWRkTmFtZWRFeHByZXNzaW9uKHRoaXMpfX1jbGFzcyB5dG4gZXh0ZW5kcyBSMXtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoKSx0aGlzLm5hbWVkRXhwcmVzc2lvbj1lLHRoaXMuY29udGVudD10LHRoaXMuc2NvcGU9cn1kb1VuZG8oZSl7ZS51bmRvUmVt'@; put 'b3ZlTmFtZWRFeHByZXNzaW9uKHRoaXMpfWRvUmVkbyhlKXtlLnJlZG9SZW1vdmVOYW1lZEV4cHJlc3Npb24odGhpcyl9fWNsYXNzIGJ0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKGUsdCxyLGksbyl7c3VwZXIoKSx0aGlzLm5hbWVkRXhwcmVzc2lvbj1lLHRoaXMubmV3Q29udGVudD10LHRo'@; put 'aXMub2xkQ29udGVudD1yLHRoaXMuc2NvcGU9aSx0aGlzLm9wdGlvbnM9b31kb1VuZG8oZSl7ZS51bmRvQ2hhbmdlTmFtZWRFeHByZXNzaW9uKHRoaXMpfWRvUmVkbyhlKXtlLnJlZG9DaGFuZ2VOYW1lZEV4cHJlc3Npb24odGhpcyl9fWNsYXNzIHd0biBleHRlbmRzIFIxe2NvbnN0cnVjdG9y'@; put 'KCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9wZXJhdGlvbnM9W119YWRkKGUpe3RoaXMub3BlcmF0aW9ucy5wdXNoKGUpfSpyZXZlcnNlZE9wZXJhdGlvbnMoKXtmb3IobGV0IGU9dGhpcy5vcGVyYXRpb25zLmxlbmd0aC0xO2U+PTA7ZS0tKXlpZWxkIHRoaXMub3BlcmF0aW9uc1tlXX1k'@; put 'b1VuZG8oZSl7ZS51bmRvQmF0Y2godGhpcyl9ZG9SZWRvKGUpe2UucmVkb0JhdGNoKHRoaXMpfX1jbGFzcyBDdG57Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9wZXJhdGlvbnM9dCx0aGlzLm9sZERhdGE9bmV3IE1hcCx0aGlzLnVuZG9TdGFjaz1bXSx0aGlzLnJlZG9TdGFjaz1bXSx0aGlzLnVu'@; put 'ZG9MaW1pdD1lLnVuZG9MaW1pdH1zYXZlT3BlcmF0aW9uKGUpe3ZvaWQgMCE9PXRoaXMuYmF0Y2hVbmRvRW50cnk/dGhpcy5iYXRjaFVuZG9FbnRyeS5hZGQoZSk6dGhpcy5hZGRVbmRvRW50cnkoZSl9YmVnaW5CYXRjaE1vZGUoKXt0aGlzLmJhdGNoVW5kb0VudHJ5PW5ldyB3dG59Y29tbWl0'@; put 'QmF0Y2hNb2RlKCl7aWYodm9pZCAwPT09dGhpcy5iYXRjaFVuZG9FbnRyeSl0aHJvdyBFcnJvcigiQmF0Y2ggbW9kZSB3YXNuJ3Qgc3RhcnRlZCIpO3RoaXMuYWRkVW5kb0VudHJ5KHRoaXMuYmF0Y2hVbmRvRW50cnkpLHRoaXMuYmF0Y2hVbmRvRW50cnk9dm9pZCAwfXN0b3JlRGF0YUZvclZl'@; put 'cnNpb24oZSx0LHIpe3RoaXMub2xkRGF0YS5oYXMoZSl8fHRoaXMub2xkRGF0YS5zZXQoZSxbXSksdGhpcy5vbGREYXRhLmdldChlKS5wdXNoKFt0LHJdKX1jbGVhclJlZG9TdGFjaygpe3RoaXMucmVkb1N0YWNrPVtdfWNsZWFyVW5kb1N0YWNrKCl7dGhpcy51bmRvU3RhY2s9W119aXNVbmRv'@; put 'U3RhY2tFbXB0eSgpe3JldHVybiAwPT09dGhpcy51bmRvU3RhY2subGVuZ3RofWlzUmVkb1N0YWNrRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMucmVkb1N0YWNrLmxlbmd0aH11bmRvKCl7Y29uc3QgZT10aGlzLnVuZG9TdGFjay5wb3AoKTtpZighZSl0aHJvdyBFcnJvcigiQXR0ZW1wdGVkIHRv'@; put 'IHVuZG8gd2l0aG91dCBvcGVyYXRpb24gb24gc3RhY2siKTt0aGlzLnVuZG9FbnRyeShlKSx0aGlzLnJlZG9TdGFjay5wdXNoKGUpfXVuZG9CYXRjaChlKXtmb3IoY29uc3QgdCBvZiBlLnJldmVyc2VkT3BlcmF0aW9ucygpKXRoaXMudW5kb0VudHJ5KHQpfXVuZG9SZW1vdmVSb3dzKGUpe3Ro'@; put 'aXMub3BlcmF0aW9ucy5mb3JjZUFwcGx5UG9zdHBvbmVkVHJhbnNmb3JtYXRpb25zKCk7Y29uc3R7Y29tbWFuZDp7c2hlZXQ6dH0scm93c1JlbW92YWxzOnJ9PWU7Zm9yKGxldCBpPXIubGVuZ3RoLTE7aT49MDstLWkpe2NvbnN0IG89cltpXTt0aGlzLm9wZXJhdGlvbnMuYWRkUm93cyhuZXcg'@; put 'QldlKHQsW1tvLnJvd0Zyb20sby5yb3dDb3VudF1dKSk7Zm9yKGNvbnN0e2FkZHJlc3M6YSxjZWxsVHlwZTpsfW9mIG8ucmVtb3ZlZENlbGxzKXRoaXMub3BlcmF0aW9ucy5yZXN0b3JlQ2VsbChhLGwpO3RoaXMucmVzdG9yZU9sZERhdGFGcm9tVmVyc2lvbihvLnZlcnNpb24tMSl9fXVuZG9S'@; put 'ZW1vdmVDb2x1bW5zKGUpe3RoaXMub3BlcmF0aW9ucy5mb3JjZUFwcGx5UG9zdHBvbmVkVHJhbnNmb3JtYXRpb25zKCk7Y29uc3R7Y29tbWFuZDp7c2hlZXQ6dH0sY29sdW1uc1JlbW92YWxzOnJ9PWU7Zm9yKGxldCBpPXIubGVuZ3RoLTE7aT49MDstLWkpe2NvbnN0IG89cltpXTt0aGlzLm9w'@; put 'ZXJhdGlvbnMuYWRkQ29sdW1ucyhuZXcgaldlKHQsW1tvLmNvbHVtbkZyb20sby5jb2x1bW5Db3VudF1dKSk7Zm9yKGNvbnN0e2FkZHJlc3M6YSxjZWxsVHlwZTpsfW9mIG8ucmVtb3ZlZENlbGxzKXRoaXMub3BlcmF0aW9ucy5yZXN0b3JlQ2VsbChhLGwpO3RoaXMucmVzdG9yZU9sZERhdGFG'@; put 'cm9tVmVyc2lvbihvLnZlcnNpb24tMSl9fXVuZG9BZGRSb3dzKGUpe2NvbnN0IHQ9ZS5jb21tYW5kLnJvd3NTcGFucygpO2ZvcihsZXQgcj10Lmxlbmd0aC0xO3I+PTA7LS1yKXtjb25zdCBpPXRbcl07dGhpcy5vcGVyYXRpb25zLnJlbW92ZVJvd3MobmV3IFZXZShlLmNvbW1hbmQuc2hlZXQs'@; put 'W1tpLnJvd1N0YXJ0LGkubnVtYmVyT2ZSb3dzXV0pKX19dW5kb0FkZENvbHVtbnMoZSl7Y29uc3QgdD1lLmNvbW1hbmQuY29sdW1uc1NwYW5zKCk7Zm9yKGxldCByPXQubGVuZ3RoLTE7cj49MDstLXIpe2NvbnN0IGk9dFtyXTt0aGlzLm9wZXJhdGlvbnMucmVtb3ZlQ29sdW1ucyhuZXcgVVdl'@; put 'KGUuY29tbWFuZC5zaGVldCxbW2kuY29sdW1uU3RhcnQsaS5udW1iZXJPZkNvbHVtbnNdXSkpfX11bmRvU2V0Q2VsbENvbnRlbnRzKGUpe2Zvcihjb25zdCB0IG9mIGUuY2VsbENvbnRlbnRzKXtjb25zdCByPXQuYWRkcmVzcyxbaSxvXT10Lm9sZENvbnRlbnQ7dVAocixpKXx8dGhpcy5vcGVy'@; put 'YXRpb25zLnNldENlbGxFbXB0eShyKSx0aGlzLm9wZXJhdGlvbnMucmVzdG9yZUNlbGwoaSxvKX19dW5kb1Bhc3RlKGUpe3RoaXMucmVzdG9yZU9wZXJhdGlvbk9sZENvbnRlbnQoZS5vbGRDb250ZW50KTtmb3IoY29uc3QgdCBvZiBlLmFkZGVkR2xvYmFsTmFtZWRFeHByZXNzaW9ucyl0aGlz'@; put 'Lm9wZXJhdGlvbnMucmVtb3ZlTmFtZWRFeHByZXNzaW9uKHQpfXVuZG9Nb3ZlUm93cyhlKXtjb25zdHtzaGVldDp0fT1lO3RoaXMub3BlcmF0aW9ucy5tb3ZlUm93cyh0LGUudW5kb1N0YXJ0LGUubnVtYmVyT2ZSb3dzLGUudW5kb0VuZCksdGhpcy5yZXN0b3JlT2xkRGF0YUZyb21WZXJzaW9u'@; put 'KGUudmVyc2lvbi0xKX11bmRvTW92ZUNvbHVtbnMoZSl7Y29uc3R7c2hlZXQ6dH09ZTt0aGlzLm9wZXJhdGlvbnMubW92ZUNvbHVtbnModCxlLnVuZG9TdGFydCxlLm51bWJlck9mQ29sdW1ucyxlLnVuZG9FbmQpLHRoaXMucmVzdG9yZU9sZERhdGFGcm9tVmVyc2lvbihlLnZlcnNpb24tMSl9'@; put 'dW5kb01vdmVDZWxscyhlKXt0aGlzLm9wZXJhdGlvbnMuZm9yY2VBcHBseVBvc3Rwb25lZFRyYW5zZm9ybWF0aW9ucygpLHRoaXMub3BlcmF0aW9ucy5tb3ZlQ2VsbHMoZS5kZXN0aW5hdGlvbkxlZnRDb3JuZXIsZS53aWR0aCxlLmhlaWdodCxlLnNvdXJjZUxlZnRDb3JuZXIpLHRoaXMucmVz'@; put 'dG9yZU9wZXJhdGlvbk9sZENvbnRlbnQoZS5vdmVyd3JpdHRlbkNlbGxzRGF0YSksdGhpcy5yZXN0b3JlT2xkRGF0YUZyb21WZXJzaW9uKGUudmVyc2lvbi0xKTtmb3IoY29uc3QgdCBvZiBlLmFkZGVkR2xvYmFsTmFtZWRFeHByZXNzaW9ucyl0aGlzLm9wZXJhdGlvbnMucmVtb3ZlTmFtZWRF'@; put 'eHByZXNzaW9uKHQpfXVuZG9BZGRTaGVldChlKXtjb25zdHtzaGVldE5hbWU6dH09ZTt0aGlzLm9wZXJhdGlvbnMucmVtb3ZlU2hlZXRCeU5hbWUodCl9dW5kb1JlbW92ZVNoZWV0KGUpe3RoaXMub3BlcmF0aW9ucy5mb3JjZUFwcGx5UG9zdHBvbmVkVHJhbnNmb3JtYXRpb25zKCk7Y29uc3R7'@; put 'b2xkU2hlZXRDb250ZW50OnQsc2hlZXRJZDpyfT1lO3RoaXMub3BlcmF0aW9ucy5hZGRTaGVldChlLnNoZWV0TmFtZSk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IG89dFtpXTtmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKyl7Y29uc3QgbD1vW2FdLHU9Qm8ocixhLGkpO3Ro'@; put 'aXMub3BlcmF0aW9ucy5yZXN0b3JlQ2VsbCh1LGwpfX1mb3IoY29uc3RbaSxvXW9mIGUuc2NvcGVkTmFtZWRFeHByZXNzaW9ucyl0aGlzLm9wZXJhdGlvbnMucmVzdG9yZU5hbWVkRXhwcmVzc2lvbihpLG8scik7dGhpcy5yZXN0b3JlT2xkRGF0YUZyb21WZXJzaW9uKGUudmVyc2lvbi0xKX11'@; put 'bmRvUmVuYW1lU2hlZXQoZSl7dGhpcy5vcGVyYXRpb25zLnJlbmFtZVNoZWV0KGUuc2hlZXRJZCxlLm9sZE5hbWUpfXVuZG9DbGVhclNoZWV0KGUpe2NvbnN0e29sZFNoZWV0Q29udGVudDp0LHNoZWV0SWQ6cn09ZTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgbz10W2ldO2Zv'@; put 'cihsZXQgYT0wO2E8by5sZW5ndGg7YSsrKXtjb25zdCBsPW9bYV0sdT1CbyhyLGEsaSk7dGhpcy5vcGVyYXRpb25zLnJlc3RvcmVDZWxsKHUsbCl9fX11bmRvU2V0U2hlZXRDb250ZW50KGUpe2NvbnN0e29sZFNoZWV0Q29udGVudDp0LHNoZWV0SWQ6cn09ZTt0aGlzLm9wZXJhdGlvbnMuY2xl'@; put 'YXJTaGVldChyKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgbz10W2ldO2ZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSsrKXtjb25zdCBsPW9bYV0sdT1CbyhyLGEsaSk7dGhpcy5vcGVyYXRpb25zLnJlc3RvcmVDZWxsKHUsbCl9fX11bmRvQWRkTmFtZWRFeHByZXNzaW9uKGUp'@; put 'e3RoaXMub3BlcmF0aW9ucy5yZW1vdmVOYW1lZEV4cHJlc3Npb24oZS5uYW1lLGUuc2NvcGUpfXVuZG9SZW1vdmVOYW1lZEV4cHJlc3Npb24oZSl7dGhpcy5vcGVyYXRpb25zLnJlc3RvcmVOYW1lZEV4cHJlc3Npb24oZS5uYW1lZEV4cHJlc3Npb24sZS5jb250ZW50LGUuc2NvcGUpfXVuZG9D'@; put 'aGFuZ2VOYW1lZEV4cHJlc3Npb24oZSl7dGhpcy5vcGVyYXRpb25zLnJlc3RvcmVOYW1lZEV4cHJlc3Npb24oZS5uYW1lZEV4cHJlc3Npb24sZS5vbGRDb250ZW50LGUuc2NvcGUpfXVuZG9TZXRSb3dPcmRlcihlKXt0aGlzLnJlc3RvcmVPcGVyYXRpb25PbGRDb250ZW50KGUub2xkQ29udGVu'@; put 'dCl9dW5kb1NldENvbHVtbk9yZGVyKGUpe3RoaXMucmVzdG9yZU9wZXJhdGlvbk9sZENvbnRlbnQoZS5vbGRDb250ZW50KX1yZWRvKCl7Y29uc3QgZT10aGlzLnJlZG9TdGFjay5wb3AoKTtpZighZSl0aHJvdyBFcnJvcigiQXR0ZW1wdGVkIHRvIHJlZG8gd2l0aG91dCBvcGVyYXRpb24gb24g'@; put 'c3RhY2siKTt0aGlzLnJlZG9FbnRyeShlKSx0aGlzLnVuZG9TdGFjay5wdXNoKGUpfXJlZG9CYXRjaChlKXtmb3IoY29uc3QgdCBvZiBlLm9wZXJhdGlvbnMpdGhpcy5yZWRvRW50cnkodCl9cmVkb1JlbW92ZVJvd3MoZSl7dGhpcy5vcGVyYXRpb25zLnJlbW92ZVJvd3MoZS5jb21tYW5kKX1y'@; put 'ZWRvTW92ZUNlbGxzKGUpe3RoaXMub3BlcmF0aW9ucy5tb3ZlQ2VsbHMoZS5zb3VyY2VMZWZ0Q29ybmVyLGUud2lkdGgsZS5oZWlnaHQsZS5kZXN0aW5hdGlvbkxlZnRDb3JuZXIpfXJlZG9SZW1vdmVDb2x1bW5zKGUpe3RoaXMub3BlcmF0aW9ucy5yZW1vdmVDb2x1bW5zKGUuY29tbWFuZCl9'@; put 'cmVkb1Bhc3RlKGUpe2NvbnN0e3RhcmdldExlZnRDb3JuZXI6dCxuZXdDb250ZW50OnJ9PWUsaT1yLmxlbmd0aCxvPXJbMF0ubGVuZ3RoO2ZvcihsZXQgYT0wO2E8aTsrK2EpZm9yKGxldCBsPTA7bDxvOysrbCl7Y29uc3QgdT1Cbyh0LnNoZWV0LHQuY29sK2wsdC5yb3crYSk7dGhpcy5vcGVy'@; put 'YXRpb25zLnJlc3RvcmVDZWxsKHUsclthXVtsXSl9fXJlZG9TZXRDZWxsQ29udGVudHMoZSl7Zm9yKGNvbnN0IHQgb2YgZS5jZWxsQ29udGVudHMpdGhpcy5vcGVyYXRpb25zLnNldENlbGxDb250ZW50KHQuYWRkcmVzcyx0Lm5ld0NvbnRlbnQpfXJlZG9BZGRSb3dzKGUpe3RoaXMub3BlcmF0'@; put 'aW9ucy5hZGRSb3dzKGUuY29tbWFuZCl9cmVkb0FkZENvbHVtbnMoZSl7dGhpcy5vcGVyYXRpb25zLmFkZENvbHVtbnMoZS5jb21tYW5kKX1yZWRvUmVtb3ZlU2hlZXQoZSl7dGhpcy5vcGVyYXRpb25zLnJlbW92ZVNoZWV0QnlOYW1lKGUuc2hlZXROYW1lKX1yZWRvQWRkU2hlZXQoZSl7dGhp'@; put 'cy5vcGVyYXRpb25zLmFkZFNoZWV0KGUuc2hlZXROYW1lKX1yZWRvUmVuYW1lU2hlZXQoZSl7dGhpcy5vcGVyYXRpb25zLnJlbmFtZVNoZWV0KGUuc2hlZXRJZCxlLm5ld05hbWUpfXJlZG9Nb3ZlUm93cyhlKXt0aGlzLm9wZXJhdGlvbnMubW92ZVJvd3MoZS5zaGVldCxlLnN0YXJ0Um93LGUu'@; put 'bnVtYmVyT2ZSb3dzLGUudGFyZ2V0Um93KX1yZWRvTW92ZUNvbHVtbnMoZSl7dGhpcy5vcGVyYXRpb25zLm1vdmVDb2x1bW5zKGUuc2hlZXQsZS5zdGFydENvbHVtbixlLm51bWJlck9mQ29sdW1ucyxlLnRhcmdldENvbHVtbil9cmVkb0NsZWFyU2hlZXQoZSl7dGhpcy5vcGVyYXRpb25zLmNs'@; put 'ZWFyU2hlZXQoZS5zaGVldElkKX1yZWRvU2V0U2hlZXRDb250ZW50KGUpe2NvbnN0e3NoZWV0SWQ6dCxuZXdTaGVldENvbnRlbnQ6cn09ZTt0aGlzLm9wZXJhdGlvbnMuc2V0U2hlZXRDb250ZW50KHQscil9cmVkb0FkZE5hbWVkRXhwcmVzc2lvbihlKXt0aGlzLm9wZXJhdGlvbnMuYWRkTmFt'@; put 'ZWRFeHByZXNzaW9uKGUubmFtZSxlLm5ld0NvbnRlbnQsZS5zY29wZSxlLm9wdGlvbnMpfXJlZG9SZW1vdmVOYW1lZEV4cHJlc3Npb24oZSl7dGhpcy5vcGVyYXRpb25zLnJlbW92ZU5hbWVkRXhwcmVzc2lvbihlLm5hbWVkRXhwcmVzc2lvbi5kaXNwbGF5TmFtZSxlLnNjb3BlKX1yZWRvQ2hh'@; put 'bmdlTmFtZWRFeHByZXNzaW9uKGUpe3RoaXMub3BlcmF0aW9ucy5jaGFuZ2VOYW1lZEV4cHJlc3Npb25FeHByZXNzaW9uKGUubmFtZWRFeHByZXNzaW9uLmRpc3BsYXlOYW1lLGUubmV3Q29udGVudCxlLnNjb3BlLGUub3B0aW9ucyl9cmVkb1NldFJvd09yZGVyKGUpe3RoaXMub3BlcmF0aW9u'@; put 'cy5zZXRSb3dPcmRlcihlLnNoZWV0SWQsZS5yb3dNYXBwaW5nKX1yZWRvU2V0Q29sdW1uT3JkZXIoZSl7dGhpcy5vcGVyYXRpb25zLnNldENvbHVtbk9yZGVyKGUuc2hlZXRJZCxlLmNvbHVtbk1hcHBpbmcpfWFkZFVuZG9FbnRyeShlKXt0aGlzLnVuZG9TdGFjay5wdXNoKGUpLHRoaXMudW5k'@; put 'b1N0YWNrLnNwbGljZSgwLE1hdGgubWF4KDAsdGhpcy51bmRvU3RhY2subGVuZ3RoLXRoaXMudW5kb0xpbWl0KSl9dW5kb0VudHJ5KGUpe2UuZG9VbmRvKHRoaXMpfXJlc3RvcmVPcGVyYXRpb25PbGRDb250ZW50KGUpe2Zvcihjb25zdFt0LHJdb2YgZSl0aGlzLm9wZXJhdGlvbnMucmVzdG9y'@; put 'ZUNlbGwodCxyKX1yZWRvRW50cnkoZSl7ZS5kb1JlZG8odGhpcyl9cmVzdG9yZU9sZERhdGFGcm9tVmVyc2lvbihlKXtjb25zdCB0PXRoaXMub2xkRGF0YS5nZXQoZSl8fFtdO2Zvcihjb25zdCByIG9mIHQpe2NvbnN0W2ksb109cjt0aGlzLm9wZXJhdGlvbnMuc2V0Rm9ybXVsYVRvQ2VsbEZy'@; put 'b21DYWNoZShvLGkpfX19Y2xhc3MgU3Rue2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhLGwsdSxnLEUpe3RoaXMub3BlcmF0aW9ucz10LHRoaXMudW5kb1JlZG89cix0aGlzLmNsaXBib2FyZE9wZXJhdGlvbnM9aSx0aGlzLmRlcGVuZGVuY3lHcmFwaD1vLHRoaXMuY29sdW1uU2VhcmNoPWEsdGhp'@; put 'cy5wYXJzZXI9bCx0aGlzLmNlbGxDb250ZW50UGFyc2VyPXUsdGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlPWcsdGhpcy5uYW1lZEV4cHJlc3Npb25zPUUsdGhpcy5tYXhSb3dzPWUubWF4Um93cyx0aGlzLm1heENvbHVtbnM9ZS5tYXhDb2x1bW5zfWdldCBzaGVldE1hcHBpbmco'@; put 'KXtyZXR1cm4gdGhpcy5kZXBlbmRlbmN5R3JhcGguc2hlZXRNYXBwaW5nfWFkZFJvd3MoZSwuLi50KXtjb25zdCByPW5ldyBCV2UoZSx0KTt0aGlzLmVuc3VyZUl0SXNQb3NzaWJsZVRvQWRkUm93cyhlLC4uLnQpLHRoaXMudW5kb1JlZG8uY2xlYXJSZWRvU3RhY2soKSx0aGlzLmNsaXBib2Fy'@; put 'ZE9wZXJhdGlvbnMuYWJvcnRDdXQoKSx0aGlzLm9wZXJhdGlvbnMuYWRkUm93cyhyKSx0aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3IGl0bihyKSl9cmVtb3ZlUm93cyhlLC4uLnQpe2NvbnN0IHI9bmV3IFZXZShlLHQpO3RoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9SZW1vdmVSb3dz'@; put 'KGUsLi4udCksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpO2NvbnN0IGk9dGhpcy5vcGVyYXRpb25zLnJlbW92ZVJvd3Mocik7dGhpcy51bmRvUmVkby5zYXZlT3BlcmF0aW9uKG5ldyBudG4ocixpKSl9YWRkQ29sdW1u'@; put 'cyhlLC4uLnQpe2NvbnN0IHI9bmV3IGpXZShlLHQpO3RoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9BZGRDb2x1bW5zKGUsLi4udCksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpLHRoaXMub3BlcmF0aW9ucy5hZGRDb2x1'@; put 'bW5zKHIpLHRoaXMudW5kb1JlZG8uc2F2ZU9wZXJhdGlvbihuZXcgdXRuKHIpKX1yZW1vdmVDb2x1bW5zKGUsLi4udCl7Y29uc3Qgcj1uZXcgVVdlKGUsdCk7dGhpcy5lbnN1cmVJdElzUG9zc2libGVUb1JlbW92ZUNvbHVtbnMoZSwuLi50KSx0aGlzLnVuZG9SZWRvLmNsZWFyUmVkb1N0YWNr'@; put 'KCksdGhpcy5jbGlwYm9hcmRPcGVyYXRpb25zLmFib3J0Q3V0KCk7Y29uc3QgaT10aGlzLm9wZXJhdGlvbnMucmVtb3ZlQ29sdW1ucyhyKTt0aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3IGR0bihyLGkpKX1tb3ZlQ2VsbHMoZSx0LHIsaSl7dGhpcy51bmRvUmVkby5jbGVhclJlZG9T'@; put 'dGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpO2NvbnN0e3ZlcnNpb246byxvdmVyd3JpdHRlbkNlbGxzRGF0YTphLGFkZGVkR2xvYmFsTmFtZWRFeHByZXNzaW9uczpsfT10aGlzLm9wZXJhdGlvbnMubW92ZUNlbGxzKGUsdCxyLGkpO3RoaXMudW5kb1JlZG8uc2F2'@; put 'ZU9wZXJhdGlvbihuZXcgcnRuKGUsdCxyLGksYSxsLG8pKX1tb3ZlUm93cyhlLHQscixpKXt0aGlzLmVuc3VyZUl0SXNQb3NzaWJsZVRvTW92ZVJvd3MoZSx0LHIsaSksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpO2Nv'@; put 'bnN0IG89dGhpcy5vcGVyYXRpb25zLm1vdmVSb3dzKGUsdCxyLGkpO3RoaXMudW5kb1JlZG8uc2F2ZU9wZXJhdGlvbihuZXcgbHRuKGUsdCxyLGksbykpfW1vdmVDb2x1bW5zKGUsdCxyLGkpe3RoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9Nb3ZlQ29sdW1ucyhlLHQscixpKSx0aGlzLnVuZG9S'@; put 'ZWRvLmNsZWFyUmVkb1N0YWNrKCk7Y29uc3Qgbz10aGlzLm9wZXJhdGlvbnMubW92ZUNvbHVtbnMoZSx0LHIsaSk7dGhpcy51bmRvUmVkby5zYXZlT3BlcmF0aW9uKG5ldyBjdG4oZSx0LHIsaSxvKSl9Y3V0KGUsdCxyKXt0aGlzLmNsaXBib2FyZE9wZXJhdGlvbnMuY3V0KGUsdCxyKX1lbnN1'@; put 'cmVJdElzUG9zc2libGVUb0NvcHkoZSx0LHIpe2lmKCF1QSh0KSl0aHJvdyBuZXcgbjAoIndpZHRoIHRvIGJlIHBvc2l0aXZlIGludGVnZXIuIik7aWYoIXVBKHIpKXRocm93IG5ldyBuMCgiaGVpZ2h0IHRvIGJlIHBvc2l0aXZlIGludGVnZXIuIil9Y29weShlLHQscil7dGhpcy5lbnN1cmVJ'@; put 'dElzUG9zc2libGVUb0NvcHkoZSx0LHIpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5jb3B5KGUsdCxyKX1wYXN0ZShlKXtjb25zdCB0PXRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5jbGlwYm9hcmQ7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgQ0p0O2lmKHRoaXMuY2xpcGJvYXJkT3BlcmF0'@; put 'aW9ucy5pc0N1dENsaXBib2FyZCgpKXRoaXMubW92ZUNlbGxzKHQuc291cmNlTGVmdENvcm5lcix0LndpZHRoLHQuaGVpZ2h0LGUpO2Vsc2UgaWYodGhpcy5jbGlwYm9hcmRPcGVyYXRpb25zLmlzQ29weUNsaXBib2FyZCgpKXt0aGlzLmNsaXBib2FyZE9wZXJhdGlvbnMuZW5zdXJlSXRJc1Bv'@; put 'c3NpYmxlVG9Db3B5UGFzdGUoZSk7Y29uc3Qgcj1iYS5zcGFuRnJvbShlLHQud2lkdGgsdC5oZWlnaHQpLGk9dGhpcy5vcGVyYXRpb25zLmdldFJhbmdlQ2xpcGJvYXJkQ2VsbHMocik7dGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpO2NvbnN0IG89dGhpcy5vcGVyYXRpb25zLnJlc3Rv'@; put 'cmVDbGlwYm9hcmRDZWxscyh0LnNvdXJjZUxlZnRDb3JuZXIuc2hlZXQsdC5nZXRDb250ZW50KGUpKTt0aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3IHZ0bihlLGksdC5jb250ZW50LG8pKX19YmVnaW5VbmRvUmVkb0JhdGNoTW9kZSgpe3RoaXMudW5kb1JlZG8uYmVnaW5CYXRjaE1v'@; put 'ZGUoKX1jb21taXRVbmRvUmVkb0JhdGNoTW9kZSgpe3RoaXMudW5kb1JlZG8uY29tbWl0QmF0Y2hNb2RlKCl9aXNDbGlwYm9hcmRFbXB0eSgpe3JldHVybiB2b2lkIDA9PT10aGlzLmNsaXBib2FyZE9wZXJhdGlvbnMuY2xpcGJvYXJkfWNsZWFyQ2xpcGJvYXJkKCl7dGhpcy5jbGlwYm9hcmRP'@; put 'cGVyYXRpb25zLmNsZWFyKCl9YWRkU2hlZXQoZSl7dm9pZCAwIT09ZSYmdGhpcy5lbnN1cmVJdElzUG9zc2libGVUb0FkZFNoZWV0KGUpLHRoaXMudW5kb1JlZG8uY2xlYXJSZWRvU3RhY2soKTtjb25zdCB0PXRoaXMub3BlcmF0aW9ucy5hZGRTaGVldChlKTtyZXR1cm4gdGhpcy51bmRvUmVk'@; put 'by5zYXZlT3BlcmF0aW9uKG5ldyBodG4odCkpLHR9cmVtb3ZlU2hlZXQoZSl7dGhpcy5lbnN1cmVTY29wZUlkSXNWYWxpZChlKSx0aGlzLnVuZG9SZWRvLmNsZWFyUmVkb1N0YWNrKCksdGhpcy5jbGlwYm9hcmRPcGVyYXRpb25zLmFib3J0Q3V0KCk7Y29uc3QgdD10aGlzLnNoZWV0TWFwcGlu'@; put 'Zy5mZXRjaERpc3BsYXlOYW1lKGUpLHI9dGhpcy5vcGVyYXRpb25zLmdldFNoZWV0Q2xpcGJvYXJkQ2VsbHMoZSkse3ZlcnNpb246aSxzY29wZWROYW1lZEV4cHJlc3Npb25zOm99PXRoaXMub3BlcmF0aW9ucy5yZW1vdmVTaGVldChlKTt0aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3'@; put 'IGZ0bih0LGUscixvLGkpKX1yZW5hbWVTaGVldChlLHQpe3RoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9SZW5hbWVTaGVldChlLHQpO2NvbnN0IHI9dGhpcy5vcGVyYXRpb25zLnJlbmFtZVNoZWV0KGUsdCk7cmV0dXJuIHZvaWQgMCE9PXImJih0aGlzLnVuZG9SZWRvLmNsZWFyUmVkb1N0YWNr'@; put 'KCksdGhpcy51bmRvUmVkby5zYXZlT3BlcmF0aW9uKG5ldyBwdG4oZSxyLHQpKSkscn1jbGVhclNoZWV0KGUpe3RoaXMuZW5zdXJlU2NvcGVJZElzVmFsaWQoZSksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpO2NvbnN0'@; put 'IHQ9dGhpcy5vcGVyYXRpb25zLmdldFNoZWV0Q2xpcGJvYXJkQ2VsbHMoZSk7dGhpcy5vcGVyYXRpb25zLmNsZWFyU2hlZXQoZSksdGhpcy51bmRvUmVkby5zYXZlT3BlcmF0aW9uKG5ldyBndG4oZSx0KSl9c2V0Q2VsbENvbnRlbnRzKGUsdCl7aWYodCBpbnN0YW5jZW9mIEFycmF5KXtmb3Io'@; put 'bGV0IGk9MDtpPHQubGVuZ3RoO2krKylpZighKHRbaV1pbnN0YW5jZW9mIEFycmF5KSl0aHJvdyBuZXcgbjAoImFuIGFycmF5IG9mIGFycmF5cyBvciBhIHJhdyBjZWxsIHZhbHVlLiIpfWVsc2UgdD1bW3RdXTt0aGlzLmVuc3VyZUl0SXNQb3NzaWJsZVRvQ2hhbmdlQ2VsbENvbnRlbnRzKGUs'@; put 'dCksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpO2NvbnN0IHI9W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKGxldCBvPTA7bzx0W2ldLmxlbmd0aDtvKyspe2NvbnN0IGE9e3NoZWV0OmUuc2hlZXQscm93OmUucm93K2ksY29sOmUuY29sK299LGw9dFtpXVtvXTt0aGlz'@; put 'LmNsaXBib2FyZE9wZXJhdGlvbnMuYWJvcnRDdXQoKTtjb25zdCB1PXRoaXMub3BlcmF0aW9ucy5zZXRDZWxsQ29udGVudChhLGwpO3IucHVzaCh7YWRkcmVzczphLG5ld0NvbnRlbnQ6bCxvbGRDb250ZW50OnV9KX10aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3IG10bihyKSl9c2V0'@; put 'U2hlZXRDb250ZW50KGUsdCl7dGhpcy5lbnN1cmVTY29wZUlkSXNWYWxpZChlKSx0aGlzLmVuc3VyZUl0SXNQb3NzaWJsZVRvQ2hhbmdlU2hlZXRDb250ZW50cyhlLHQpLEhXZSh0KSx0aGlzLnVuZG9SZWRvLmNsZWFyUmVkb1N0YWNrKCksdGhpcy5jbGlwYm9hcmRPcGVyYXRpb25zLmFib3J0'@; put 'Q3V0KCk7Y29uc3Qgcj10aGlzLm9wZXJhdGlvbnMuZ2V0U2hlZXRDbGlwYm9hcmRDZWxscyhlKTt0aGlzLm9wZXJhdGlvbnMuc2V0U2hlZXRDb250ZW50KGUsdCksdGhpcy51bmRvUmVkby5zYXZlT3BlcmF0aW9uKG5ldyBzdG4oZSxyLHQpKX1zZXRSb3dPcmRlcihlLHQpe3RoaXMudmFsaWRh'@; put 'dGVTd2FwUm93SW5kZXhlcyhlLHQpLHRoaXMudGVzdFJvd09yZGVyRm9yQXJyYXlzKGUsdCksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpO2NvbnN0IHI9dGhpcy5vcGVyYXRpb25zLnNldFJvd09yZGVyKGUsdCk7dGhp'@; put 'cy51bmRvUmVkby5zYXZlT3BlcmF0aW9uKG5ldyBvdG4oZSx0LHIpKX12YWxpZGF0ZVN3YXBSb3dJbmRleGVzKGUsdCl7aWYoIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUpKXRocm93IG5ldyBTaChlKTt0aGlzLnZhbGlkYXRlUm93T3JDb2x1bW5NYXBwaW5nKGUsdCwicm93'@; put 'Iil9dGVzdENvbHVtbk9yZGVyRm9yQXJyYXlzKGUsdCl7Zm9yKGNvbnN0W3IsaV1vZiB0KWlmKHIhPT1pKXtjb25zdCBvPWJhLnNwYW5Gcm9tKHtzaGVldDplLGNvbDpyLHJvdzowfSwxLDEvMCk7aWYodGhpcy5kZXBlbmRlbmN5R3JhcGguYXJyYXlNYXBwaW5nLmlzRm9ybXVsYUFycmF5SW5S'@; put 'YW5nZShvKSl0aHJvdyBuZXcgc1B9fXNldENvbHVtbk9yZGVyKGUsdCl7dGhpcy52YWxpZGF0ZVN3YXBDb2x1bW5JbmRleGVzKGUsdCksdGhpcy50ZXN0Q29sdW1uT3JkZXJGb3JBcnJheXMoZSx0KSx0aGlzLnVuZG9SZWRvLmNsZWFyUmVkb1N0YWNrKCksdGhpcy5jbGlwYm9hcmRPcGVyYXRp'@; put 'b25zLmFib3J0Q3V0KCk7Y29uc3Qgcj10aGlzLm9wZXJhdGlvbnMuc2V0Q29sdW1uT3JkZXIoZSx0KTt0aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3IGF0bihlLHQscikpfXZhbGlkYXRlU3dhcENvbHVtbkluZGV4ZXMoZSx0KXtpZighdGhpcy5zaGVldE1hcHBpbmcuaGFzU2hlZXRX'@; put 'aXRoSWQoZSkpdGhyb3cgbmV3IFNoKGUpO3RoaXMudmFsaWRhdGVSb3dPckNvbHVtbk1hcHBpbmcoZSx0LCJjb2x1bW4iKX10ZXN0Um93T3JkZXJGb3JBcnJheXMoZSx0KXtmb3IoY29uc3RbcixpXW9mIHQpaWYociE9PWkpe2NvbnN0IG89YmEuc3BhbkZyb20oe3NoZWV0OmUsY29sOjAscm93'@; put 'OnJ9LDEvMCwxKTtpZih0aGlzLmRlcGVuZGVuY3lHcmFwaC5hcnJheU1hcHBpbmcuaXNGb3JtdWxhQXJyYXlJblJhbmdlKG8pKXRocm93IG5ldyBzUH19bWFwcGluZ0Zyb21PcmRlcihlLHQscil7aWYoIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUpKXRocm93IG5ldyBTaChl'@; put 'KTtjb25zdCBpPSJyb3ciPT09cj90aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldEhlaWdodChlKTp0aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldFdpZHRoKGUpO2lmKHQubGVuZ3RoIT09aSl0aHJvdyBuZXcgbjAoYG51bWJlciBvZiAke3J9cyBwcm92aWRlZCB0byBiZSBzaGVldCAk'@; put 'eyJyb3ciPT09cj8iaGVpZ2h0Ijoid2lkdGgifS5gKTtjb25zdCBvPVtdO2ZvcihsZXQgYT0wO2E8aTthKyspdFthXSE9PWEmJm8ucHVzaChbYSx0W2FdXSk7cmV0dXJuIG99dW5kbygpe2lmKHRoaXMudW5kb1JlZG8uaXNVbmRvU3RhY2tFbXB0eSgpKXRocm93IG5ldyBiSnQ7dGhpcy5jbGlw'@; put 'Ym9hcmRPcGVyYXRpb25zLmFib3J0Q3V0KCksdGhpcy51bmRvUmVkby51bmRvKCl9cmVkbygpe2lmKHRoaXMudW5kb1JlZG8uaXNSZWRvU3RhY2tFbXB0eSgpKXRocm93IG5ldyB3SnQ7dGhpcy5jbGlwYm9hcmRPcGVyYXRpb25zLmFib3J0Q3V0KCksdGhpcy51bmRvUmVkby5yZWRvKCl9YWRk'@; put 'TmFtZWRFeHByZXNzaW9uKGUsdCxyLGkpe3RoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9BZGROYW1lZEV4cHJlc3Npb24oZSx0LHIpLHRoaXMub3BlcmF0aW9ucy5hZGROYW1lZEV4cHJlc3Npb24oZSx0LHIsaSksdGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJk'@; put 'T3BlcmF0aW9ucy5hYm9ydEN1dCgpLHRoaXMudW5kb1JlZG8uc2F2ZU9wZXJhdGlvbihuZXcgX3RuKGUsdCxyLGkpKX1jaGFuZ2VOYW1lZEV4cHJlc3Npb25FeHByZXNzaW9uKGUsdCxyLGkpe3RoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9DaGFuZ2VOYW1lZEV4cHJlc3Npb24oZSxyLHQpO2Nv'@; put 'bnN0W28sYV09dGhpcy5vcGVyYXRpb25zLmNoYW5nZU5hbWVkRXhwcmVzc2lvbkV4cHJlc3Npb24oZSxyLHQsaSk7dGhpcy51bmRvUmVkby5jbGVhclJlZG9TdGFjaygpLHRoaXMuY2xpcGJvYXJkT3BlcmF0aW9ucy5hYm9ydEN1dCgpLHRoaXMudW5kb1JlZG8uc2F2ZU9wZXJhdGlvbihuZXcg'@; put 'YnRuKG8scixhLHQsaSkpfXJlbW92ZU5hbWVkRXhwcmVzc2lvbihlLHQpe3RoaXMuZW5zdXJlU2NvcGVJZElzVmFsaWQodCk7Y29uc3RbcixpXT10aGlzLm9wZXJhdGlvbnMucmVtb3ZlTmFtZWRFeHByZXNzaW9uKGUsdCk7cmV0dXJuIHRoaXMudW5kb1JlZG8uY2xlYXJSZWRvU3RhY2soKSx0'@; put 'aGlzLmNsaXBib2FyZE9wZXJhdGlvbnMuYWJvcnRDdXQoKSx0aGlzLnVuZG9SZWRvLnNhdmVPcGVyYXRpb24obmV3IHl0bihyLGksdCkpLHJ9ZW5zdXJlSXRJc1Bvc3NpYmxlVG9BZGROYW1lZEV4cHJlc3Npb24oZSx0LHIpe3RoaXMuZW5zdXJlU2NvcGVJZElzVmFsaWQociksdGhpcy5lbnN1'@; put 'cmVOYW1lZEV4cHJlc3Npb25OYW1lSXNWYWxpZChlLHIpLHRoaXMuZW5zdXJlTmFtZWRFeHByZXNzaW9uSXNWYWxpZCh0KX1lbnN1cmVJdElzUG9zc2libGVUb0NoYW5nZU5hbWVkRXhwcmVzc2lvbihlLHQscil7aWYodGhpcy5lbnN1cmVTY29wZUlkSXNWYWxpZChyKSx2b2lkIDA9PT10aGlz'@; put 'Lm5hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uRm9yU2NvcGUoZSxyKSl0aHJvdyBuZXcgTHEoZSk7dGhpcy5lbnN1cmVOYW1lZEV4cHJlc3Npb25Jc1ZhbGlkKHQpfWlzSXRQb3NzaWJsZVRvUmVtb3ZlTmFtZWRFeHByZXNzaW9uKGUsdCl7aWYodGhpcy5lbnN1cmVTY29wZUlkSXNW'@; put 'YWxpZCh0KSx2b2lkIDA9PT10aGlzLm5hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uRm9yU2NvcGUoZSx0KSl0aHJvdyBuZXcgTHEoZSl9ZW5zdXJlSXRJc1Bvc3NpYmxlVG9BZGRSb3dzKGUsLi4udCl7aWYoIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUpKXRocm93'@; put 'IG5ldyBTaChlKTtpZih0aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldEhlaWdodChlKSt0Lm1hcChvPT5vWzFdKS5yZWR1Y2UoKG8sYSk9Pm8rYSwwKT50aGlzLm1heFJvd3MpdGhyb3cgbmV3IHRBO2Zvcihjb25zdFtvLGFdb2YgdClpZighTkMobyl8fCF1QShhKSl0aHJvdyBuZXcgbjAo'@; put 'InJvdyBudW1iZXIgdG8gYmUgbm9ubmVnYXRpdmUgYW5kIG51bWJlciBvZiByb3dzIHRvIGFkZCB0byBiZSBwb3NpdGl2ZS4iKX1lbnN1cmVJdElzUG9zc2libGVUb1JlbW92ZVJvd3MoZSwuLi50KXtmb3IoY29uc3RbcixpXW9mIHQpe2NvbnN0IG89citpLTE7aWYoIU5DKHIpfHwhTkMobykp'@; put 'dGhyb3cgbmV3IG4wKCJzdGFydGluZyBhbmQgZW5kaW5nIHJvdyB0byBiZSBub25uZWdhdGl2ZS4iKTtpZihvPHIpdGhyb3cgbmV3IG4wKCJzdGFydGluZyByb3cgdG8gYmUgc21hbGxlciB0aGFuIHRoZSBlbmRpbmcgcm93LiIpO2lmKCF0aGlzLnNoZWV0TWFwcGluZy5oYXNTaGVldFdpdGhJ'@; put 'ZChlKSl0aHJvdyBuZXcgU2goZSl9fWVuc3VyZUl0SXNQb3NzaWJsZVRvQWRkQ29sdW1ucyhlLC4uLnQpe2lmKCF0aGlzLnNoZWV0TWFwcGluZy5oYXNTaGVldFdpdGhJZChlKSl0aHJvdyBuZXcgU2goZSk7aWYodGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0U2hlZXRXaWR0aChlKSt0Lm1hcChv'@; put 'PT5vWzFdKS5yZWR1Y2UoKG8sYSk9Pm8rYSwwKT50aGlzLm1heENvbHVtbnMpdGhyb3cgbmV3IHRBO2Zvcihjb25zdFtvLGFdb2YgdClpZighTkMobyl8fCF1QShhKSl0aHJvdyBuZXcgbjAoImNvbHVtbiBudW1iZXIgdG8gYmUgbm9ubmVnYXRpdmUgYW5kIG51bWJlciBvZiBjb2x1bW5zIHRv'@; put 'IGFkZCB0byBiZSBwb3NpdGl2ZS4iKX1lbnN1cmVJdElzUG9zc2libGVUb1JlbW92ZUNvbHVtbnMoZSwuLi50KXtmb3IoY29uc3RbcixpXW9mIHQpe2NvbnN0IG89citpLTE7aWYoIU5DKHIpfHwhTkMobykpdGhyb3cgbmV3IG4wKCJzdGFydGluZyBhbmQgZW5kaW5nIGNvbHVtbiB0byBiZSBu'@; put 'b25uZWdhdGl2ZS4iKTtpZihvPHIpdGhyb3cgbmV3IG4wKCJzdGFydGluZyBjb2x1bW4gdG8gYmUgc21hbGxlciB0aGFuIHRoZSBlbmRpbmcgY29sdW1uLiIpO2lmKCF0aGlzLnNoZWV0TWFwcGluZy5oYXNTaGVldFdpdGhJZChlKSl0aHJvdyBuZXcgU2goZSl9fWVuc3VyZUl0SXNQb3NzaWJs'@; put 'ZVRvTW92ZVJvd3MoZSx0LHIsaSl7dGhpcy5lbnN1cmVJdElzUG9zc2libGVUb0FkZFJvd3MoZSxbaSxyXSk7Y29uc3Qgbz1CbyhlLDAsdCksYT1CbyhlLDAsaSk7aWYoIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUpfHxucChvKXx8bnAoYSl8fCF1QShyKXx8aTw9dCtyJiZp'@; put 'Pj10KXRocm93IG5ldyBuMCgiYSB2YWxpZCByYW5nZSBvZiByb3dzIHRvIG1vdmUuIik7Y29uc3QgbD10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldFdpZHRoKGUpLHU9YmEuc3BhbkZyb20obyxsLHIpO2lmKHRoaXMuZGVwZW5kZW5jeUdyYXBoLmFycmF5TWFwcGluZy5pc0Zvcm11bGFB'@; put 'cnJheUluUmFuZ2UodSkpdGhyb3cgbmV3IHNQO2lmKGk+MCYmdGhpcy5kZXBlbmRlbmN5R3JhcGguYXJyYXlNYXBwaW5nLmlzRm9ybXVsYUFycmF5SW5BbGxSb3dzKHRwLmZyb21OdW1iZXJPZlJvd3MoZSxpLTEsMikpKXRocm93IG5ldyBLZ2V9ZW5zdXJlSXRJc1Bvc3NpYmxlVG9Nb3ZlQ29s'@; put 'dW1ucyhlLHQscixpKXt0aGlzLmVuc3VyZUl0SXNQb3NzaWJsZVRvQWRkQ29sdW1ucyhlLFtpLHJdKTtjb25zdCBvPUJvKGUsdCwwKSxhPUJvKGUsaSwwKTtpZighdGhpcy5zaGVldE1hcHBpbmcuaGFzU2hlZXRXaXRoSWQoZSl8fG5wKG8pfHxucChhKXx8IXVBKHIpfHxpPD10K3ImJmk+PXQp'@; put 'dGhyb3cgbmV3IG4wKCJhIHZhbGlkIHJhbmdlIG9mIGNvbHVtbnMgdG8gbW92ZS4iKTtjb25zdCBsPXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldFNoZWV0SGVpZ2h0KGUpLHU9YmEuc3BhbkZyb20obyxyLGwpO2lmKHRoaXMuZGVwZW5kZW5jeUdyYXBoLmFycmF5TWFwcGluZy5pc0Zvcm11bGFB'@; put 'cnJheUluUmFuZ2UodSkpdGhyb3cgbmV3IHNQO2lmKGk+MCYmdGhpcy5kZXBlbmRlbmN5R3JhcGguYXJyYXlNYXBwaW5nLmlzRm9ybXVsYUFycmF5SW5BbGxDb2x1bW5zKGdnLmZyb21OdW1iZXJPZkNvbHVtbnMoZSxpLTEsMikpKXRocm93IG5ldyBLZ2V9ZW5zdXJlSXRJc1Bvc3NpYmxlVG9B'@; put 'ZGRTaGVldChlKXtpZih0aGlzLnNoZWV0TWFwcGluZy5oYXNTaGVldFdpdGhOYW1lKGUpKXRocm93IG5ldyBEcShlKX1lbnN1cmVJdElzUG9zc2libGVUb1JlbmFtZVNoZWV0KGUsdCl7aWYoIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUpKXRocm93IG5ldyBTaChlKTtjb25z'@; put 'dCByPXRoaXMuc2hlZXRNYXBwaW5nLmdldCh0KTtpZih2b2lkIDAhPT1yJiZyIT09ZSl0aHJvdyBuZXcgRHEodCl9ZW5zdXJlSXRJc1Bvc3NpYmxlVG9DaGFuZ2VDb250ZW50KGUpe2lmKG5wKGUpKXRocm93IG5ldyB2SnQoZSk7aWYoIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElk'@; put 'KGUuc2hlZXQpKXRocm93IG5ldyBTaChlLnNoZWV0KX1lbnN1cmVJdElzUG9zc2libGVUb0NoYW5nZUNlbGxDb250ZW50cyhlLHQpe2NvbnN0IHI9WnEodCksaT1iYS5zcGFuRnJvbShlLHIud2lkdGgsci5oZWlnaHQpO3RoaXMuZW5zdXJlUmFuZ2VJblNpemVMaW1pdHMoaSk7Zm9yKGNvbnN0'@; put 'IG8gb2YgaS5hZGRyZXNzZXModGhpcy5kZXBlbmRlbmN5R3JhcGgpKXRoaXMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9DaGFuZ2VDb250ZW50KG8pfWVuc3VyZUl0SXNQb3NzaWJsZVRvQ2hhbmdlU2hlZXRDb250ZW50cyhlLHQpe2NvbnN0IHI9WnEodCksaT1iYS5zcGFuRnJvbShCbyhlLDAsMCks'@; put 'ci53aWR0aCxyLmhlaWdodCk7dGhpcy5lbnN1cmVSYW5nZUluU2l6ZUxpbWl0cyhpKX1lbnN1cmVSYW5nZUluU2l6ZUxpbWl0cyhlKXtpZihlLmV4Y2VlZHNTaGVldFNpemVMaW1pdHModGhpcy5tYXhDb2x1bW5zLHRoaXMubWF4Um93cykpdGhyb3cgbmV3IHRBfWlzVGhlcmVTb21ldGhpbmdU'@; put 'b1VuZG8oKXtyZXR1cm4hdGhpcy51bmRvUmVkby5pc1VuZG9TdGFja0VtcHR5KCl9aXNUaGVyZVNvbWV0aGluZ1RvUmVkbygpe3JldHVybiF0aGlzLnVuZG9SZWRvLmlzUmVkb1N0YWNrRW1wdHkoKX1nZXRBbmRDbGVhckNvbnRlbnRDaGFuZ2VzKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ucy5n'@; put 'ZXRBbmRDbGVhckNvbnRlbnRDaGFuZ2VzKCl9ZW5zdXJlU2NvcGVJZElzVmFsaWQoZSl7aWYodm9pZCAwIT09ZSYmIXRoaXMuc2hlZXRNYXBwaW5nLmhhc1NoZWV0V2l0aElkKGUpKXRocm93IG5ldyBTaChlKX12YWxpZGF0ZVJvd09yQ29sdW1uTWFwcGluZyhlLHQscil7Y29uc3QgaT0icm93'@; put 'Ij09PXI/dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0U2hlZXRIZWlnaHQoZSk6dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0U2hlZXRXaWR0aChlKSxvPXQubWFwKChbbCx1XSk9PmwpLnNvcnQoKGwsdSk9PmwtdSksYT10Lm1hcCgoW2wsdV0pPT51KS5zb3J0KChsLHUpPT5sLXUpO2ZvcihsZXQg'@; put 'bD0wO2w8by5sZW5ndGg7bCsrKXtpZighTkMob1tsXSl8fG9bbF0+PWkpdGhyb3cgbmV3IG4wKGAke3J9IG51bWJlcnMgdG8gYmUgbm9ubmVnYXRpdmUgaW50ZWdlcnMgYW5kIGxlc3MgdGhhbiBzaGVldCAkeyJyb3ciPT09cj8iaGVpZ2h0Ijoid2lkdGgifS5gKTtpZihvW2xdPT09b1tsKzFd'@; put 'KXRocm93IG5ldyBuMChgc291cmNlICR7cn0gbnVtYmVycyB0byBiZSB1bmlxdWUuYCk7aWYob1tsXSE9PWFbbF0pdGhyb3cgbmV3IG4wKGB0YXJnZXQgJHtyfSBudW1iZXJzIHRvIGJlIHBlcm11dGF0aW9uIG9mIHNvdXJjZSAke3J9IG51bWJlcnMuYCl9fWVuc3VyZU5hbWVkRXhwcmVzc2lv'@; put 'bk5hbWVJc1ZhbGlkKGUsdCl7aWYoIXRoaXMubmFtZWRFeHByZXNzaW9ucy5pc05hbWVWYWxpZChlKSl0aHJvdyBuZXcgeUp0KGUpO2lmKCF0aGlzLm5hbWVkRXhwcmVzc2lvbnMuaXNOYW1lQXZhaWxhYmxlKGUsdCkpdGhyb3cgbmV3IF9KdChlKX1lbnN1cmVOYW1lZEV4cHJlc3Npb25Jc1Zh'@; put 'bGlkKGUpe2NvbnN0IHQ9dGhpcy5jZWxsQ29udGVudFBhcnNlci5wYXJzZShlKTtpZih0IGluc3RhbmNlb2YgSGQuRm9ybXVsYSl7Y29uc3Qgcj10aGlzLnBhcnNlci5wYXJzZSh0LmZvcm11bGEsQm8oLTEsMCwwKSk7aWYoSl8oci5hc3QpKXRocm93IG5ldyByV2V9fX1mdW5jdGlvbiB1QShu'@; put 'KXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSYmbj4wfWZ1bmN0aW9uIE5DKG4pe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG4pJiZuPj0wfWNsYXNzIEV0bntjb25zdHJ1Y3RvcihlLHQscixpLG8sYSl7dGhpcy5jb25maWc9ZSx0aGlzLnN0YXRzPXQsdGhpcy5pbnRlcnByZXRlcj1yLHRo'@; put 'aXMubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZT1pLHRoaXMuZGVwZW5kZW5jeUdyYXBoPW8sdGhpcy5jb2x1bW5TZWFyY2g9YX1ydW4oKXt0aGlzLnN0YXRzLnN0YXJ0KEFzLlRPUF9TT1JUKTtjb25zdHtzb3J0ZWQ6ZSxjeWNsZWQ6dH09dGhpcy5kZXBlbmRlbmN5R3JhcGgudG9wU29y'@; put 'dFdpdGhTY2MoKTt0aGlzLnN0YXRzLmVuZChBcy5UT1BfU09SVCksdGhpcy5zdGF0cy5tZWFzdXJlKEFzLkVWQUxVQVRJT04sKCk9Pnt0aGlzLnJlY29tcHV0ZUZvcm11bGFzKHQsZSl9KX1wYXJ0aWFsUnVuKGUpe2NvbnN0IHQ9cV8uZW1wdHkoKTtyZXR1cm4gdGhpcy5zdGF0cy5tZWFzdXJl'@; put 'KEFzLkVWQUxVQVRJT04sKCk9Pnt0aGlzLmRlcGVuZGVuY3lHcmFwaC5ncmFwaC5nZXRUb3BTb3J0ZWRXaXRoU2NjU3ViZ3JhcGhGcm9tKGUscj0+e2lmKHIgaW5zdGFuY2VvZiBtZyl7Y29uc3QgaT1yLmlzQ29tcHV0ZWQoKT9yLmdldENlbGxWYWx1ZSgpOnZvaWQgMCxvPXRoaXMucmVjb21w'@; put 'dXRlRm9ybXVsYVZlcnRleFZhbHVlKHIpO2lmKG8hPT1pKXtjb25zdCBhPXIuZ2V0QWRkcmVzcyh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpO3JldHVybiB0LmFkZENoYW5nZShvLGEpLHRoaXMuY29sdW1uU2VhcmNoLmNoYW5nZShMbyhpKSxMbyhvKSxhKSwhMH1yZXR1cm4h'@; put 'MX1yZXR1cm4gciBpbnN0YW5jZW9mIGNmJiZyLmNsZWFyQ2FjaGUoKSwhMH0scj0+e2lmKHIgaW5zdGFuY2VvZiBjZilyLmNsZWFyQ2FjaGUoKTtlbHNlIGlmKHIgaW5zdGFuY2VvZiBtZyl7Y29uc3QgaT1yLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKTt0'@; put 'aGlzLmNvbHVtblNlYXJjaC5yZW1vdmUoTG8oci52YWx1ZU9yVW5kZWYoKSksaSk7Y29uc3Qgbz1uZXcgUHQodG4uQ1lDTEUsdm9pZCAwLHIpO3Iuc2V0Q2VsbFZhbHVlKG8pLHQuYWRkQ2hhbmdlKG8saSl9fSl9KSx0fXJ1bkFuZEZvcmdldChlLHQscil7Y29uc3QgaT1bXTtmb3IoY29uc3Qg'@; put 'YSBvZiBWNihyLHQpKWlmKGEgaW5zdGFuY2VvZiBiYSl7Y29uc3QgbD1hO2lmKHZvaWQgMD09PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldFJhbmdlKGwuc3RhcnQsbC5lbmQpKXtjb25zdCB1PW5ldyBjZihsKTt0aGlzLmRlcGVuZGVuY3lHcmFwaC5yYW5nZU1hcHBpbmcuc2V0UmFuZ2UodSks'@; put 'aS5wdXNoKHUpfX1jb25zdCBvPXRoaXMuZXZhbHVhdGVBc3RUb0NlbGxWYWx1ZShlLG5ldyB6Nih0LHRoaXMuY29uZmlnLnVzZUFycmF5QXJpdGhtZXRpYykpO3JldHVybiBpLmZvckVhY2goYT0+e3RoaXMuZGVwZW5kZW5jeUdyYXBoLnJhbmdlTWFwcGluZy5yZW1vdmVSYW5nZShhKX0pLG99'@; put 'cmVjb21wdXRlRm9ybXVsYXMoZSx0KXtlLmZvckVhY2gocj0+e3IgaW5zdGFuY2VvZiBtZyYmci5zZXRDZWxsVmFsdWUobmV3IFB0KHRuLkNZQ0xFLHZvaWQgMCxyKSl9KSx0LmZvckVhY2gocj0+e2lmKHIgaW5zdGFuY2VvZiBtZyl7Y29uc3QgaT10aGlzLnJlY29tcHV0ZUZvcm11bGFWZXJ0'@; put 'ZXhWYWx1ZShyKSxvPXIuZ2V0QWRkcmVzcyh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpO3RoaXMuY29sdW1uU2VhcmNoLmFkZChMbyhpKSxvKX1lbHNlIHIgaW5zdGFuY2VvZiBjZiYmci5jbGVhckNhY2hlKCl9KX1yZWNvbXB1dGVGb3JtdWxhVmVydGV4VmFsdWUoZSl7Y29u'@; put 'c3QgdD1lLmdldEFkZHJlc3ModGhpcy5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKTtpZihlIGluc3RhbmNlb2YgJGgmJihlLmFycmF5LnNpemUuaXNSZWZ8fCF0aGlzLmRlcGVuZGVuY3lHcmFwaC5pc1RoZXJlU3BhY2VGb3JBcnJheShlKSkpcmV0dXJuIGUuc2V0Tm9TcGFjZSgpO3tj'@; put 'b25zdCByPWUuZ2V0Rm9ybXVsYSh0aGlzLmxhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2UpLGk9dGhpcy5ldmFsdWF0ZUFzdFRvQ2VsbFZhbHVlKHIsbmV3IHo2KHQsdGhpcy5jb25maWcudXNlQXJyYXlBcml0aG1ldGljLGUpKTtyZXR1cm4gZS5zZXRDZWxsVmFsdWUoaSl9fWV2YWx1YXRl'@; put 'QXN0VG9DZWxsVmFsdWUoZSx0KXtjb25zdCByPXRoaXMuaW50ZXJwcmV0ZXIuZXZhbHVhdGVBc3QoZSx0KTtyZXR1cm4gciBpbnN0YW5jZW9mIGxhP3I6cj09PWxsJiZ0aGlzLmNvbmZpZy5ldmFsdWF0ZU51bGxUb1plcm8/MDpyfX1jbGFzcyBNdG57Y29uc3RydWN0b3IoZSx0LHIpe3ZhciBp'@; put 'O3RoaXMudmFsdWU9dCx0aGlzLmFkZHJlc3M9cix0aGlzLnR5cGU9ZS50eXBlLHRoaXMubWVzc2FnZT1udWxsIT09KGk9ZS5tZXNzYWdlKSYmdm9pZCAwIT09aT9pOiIifXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudmFsdWV9dmFsdWVPZigpe3JldHVybiB0aGlzLnZhbHVlfX1jbGFzcyB6V2V7'@; put 'Y29uc3RydWN0b3IoZSx0KXt0aGlzLmFkZHJlc3M9ZSx0aGlzLm5ld1ZhbHVlPXR9Z2V0IGNvbCgpe3JldHVybiB0aGlzLmFkZHJlc3MuY29sfWdldCByb3coKXtyZXR1cm4gdGhpcy5hZGRyZXNzLnJvd31nZXQgc2hlZXQoKXtyZXR1cm4gdGhpcy5hZGRyZXNzLnNoZWV0fWdldCB2YWx1ZSgp'@; put 'e3JldHVybiB0aGlzLm5ld1ZhbHVlfX1jbGFzcyBUdG57Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5hbWU9ZSx0aGlzLm5ld1ZhbHVlPXR9fWNsYXNzIHh0bntjb25zdHJ1Y3RvcihlLHQscixpKXt0aGlzLmNvbmZpZz1lLHRoaXMubmFtZWRFeHByZXNzaW9ucz10LHRoaXMuc2hlZXRJbmRleE1h'@; put 'cHBpbmc9cix0aGlzLmxhemlseVRyYW5zZm9ybWluZ1NlcnZpY2U9aX1leHBvcnRDaGFuZ2UoZSl7Y29uc3QgdD1lLnZhbHVlLHI9ZS5hZGRyZXNzO2lmKHIuc2hlZXQ9PT1ZcS5TSEVFVF9GT1JfV09SS0JPT0tfRVhQUkVTU0lPTlMpe2NvbnN0IGk9dGhpcy5uYW1lZEV4cHJlc3Npb25zLm5h'@; put 'bWVkRXhwcmVzc2lvbkluQWRkcmVzcyhyLnJvdyk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIG5hbWVkIGV4cHJlc3Npb24iKTtyZXR1cm4gbmV3IFR0bihpLmRpc3BsYXlOYW1lLHRoaXMuZXhwb3J0U2NhbGFyT3JSYW5nZSh0KSl9aWYodCBpbnN0YW5jZW9mIGxhKXtjb25zdCBp'@; put 'PVtdO2Zvcihjb25zdFtvLGFdb2YgdC5lbnRyaWVzRnJvbVRvcExlZnRDb3JuZXIocikpaS5wdXNoKG5ldyB6V2UoYSx0aGlzLmV4cG9ydFZhbHVlKG8pKSk7cmV0dXJuIGl9cmV0dXJuIG5ldyB6V2Uocix0aGlzLmV4cG9ydFZhbHVlKHQpKX1leHBvcnRWYWx1ZShlKXtyZXR1cm4gZSBpbnN0'@; put 'YW5jZW9mIGxhP3RoaXMuZGV0YWlsZWRFcnJvcihuZXcgUHQodG4uVkFMVUUsZHIuU2NhbGFyRXhwZWN0ZWQpKTp0aGlzLmNvbmZpZy5zbWFydFJvdW5kaW5nJiZjYyhlKT90aGlzLmNlbGxWYWx1ZVJvdW5kaW5nKExvKGUpKTplIGluc3RhbmNlb2YgUHQ/dGhpcy5kZXRhaWxlZEVycm9yKGUp'@; put 'OmU9PT1sbD9udWxsOkxvKGUpfWV4cG9ydFNjYWxhck9yUmFuZ2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBsYT9lLnJhd0RhdGEoKS5tYXAodD0+dC5tYXAocj0+dGhpcy5leHBvcnRWYWx1ZShyKSkpOnRoaXMuZXhwb3J0VmFsdWUoZSl9ZGV0YWlsZWRFcnJvcihlKXt2YXIgdCxyO2xldCBp'@; put 'O2NvbnN0IG89bnVsbD09PSh0PWUucm9vdCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0QWRkcmVzcyh0aGlzLmxhemlseVRyYW5zZm9ybWluZ1NlcnZpY2UpO3JldHVybiB2b2lkIDAhPT1vJiYoaT1vLnNoZWV0PT09WXEuU0hFRVRfRk9SX1dPUktCT09LX0VYUFJFU1NJT05TP251bGw9PT0o'@; put 'cj10aGlzLm5hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uSW5BZGRyZXNzKG8ucm93KSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZGlzcGxheU5hbWU6U3EodGhpcy5zaGVldEluZGV4TWFwcGluZyxvLC0xKSksbmV3IE10bihlLHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uUGFja2FnZS5n'@; put 'ZXRFcnJvclRyYW5zbGF0aW9uKGUudHlwZSksaSl9Y2VsbFZhbHVlUm91bmRpbmcoZSl7aWYoMD09PWUpcmV0dXJuIGU7Y29uc3QgdD1NYXRoLmZsb29yKE1hdGgubG9nMTAoTWF0aC5hYnMoZSkpKSxyPU1hdGgucG93KDEwLHRoaXMuY29uZmlnLnByZWNpc2lvblJvdW5kaW5nLXQpO3JldHVy'@; put 'biBlPDA/LU1hdGgucm91bmQoLWUqcikvcjpNYXRoLnJvdW5kKGUqcikvcn19Y2xhc3MgQXRue2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhKXt0aGlzLmRlcGVuZGVuY3lHcmFwaD1lLHRoaXMuY29sdW1uU2VhcmNoPXQsdGhpcy5wYXJzZXI9cix0aGlzLmNlbGxDb250ZW50UGFyc2VyPWksdGhp'@; put 'cy5zdGF0cz1vLHRoaXMuYXJyYXlTaXplUHJlZGljdG9yPWEsdGhpcy5idWlsZFN0cmF0ZWd5PW5ldyBrdG4oZSx0LHIsbyxpLGEpfWJ1aWxkR3JhcGgoZSx0KXtjb25zdCByPXQubWVhc3VyZShBcy5DT0xMRUNUX0RFUEVOREVOQ0lFUywoKT0+dGhpcy5idWlsZFN0cmF0ZWd5LnJ1bihlKSk7'@; put 'dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0QW5kQ2xlYXJDb250ZW50Q2hhbmdlcygpLHQubWVhc3VyZShBcy5QUk9DRVNTX0RFUEVOREVOQ0lFUywoKT0+dGhpcy5wcm9jZXNzRGVwZW5kZW5jaWVzKHIpKX1wcm9jZXNzRGVwZW5kZW5jaWVzKGUpe2UuZm9yRWFjaCgodCxyKT0+e3RoaXMuZGVw'@; put 'ZW5kZW5jeUdyYXBoLnByb2Nlc3NDZWxsRGVwZW5kZW5jaWVzKHQscil9KX19Y2xhc3Mga3Rue2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhKXt0aGlzLmRlcGVuZGVuY3lHcmFwaD1lLHRoaXMuY29sdW1uSW5kZXg9dCx0aGlzLnBhcnNlcj1yLHRoaXMuc3RhdHM9aSx0aGlzLmNlbGxDb250ZW50'@; put 'UGFyc2VyPW8sdGhpcy5hcnJheVNpemVQcmVkaWN0b3I9YX1ydW4oZSl7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdCByIGluIGUpe2NvbnN0IGk9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0U2hlZXRJZChyKSxvPWVbcl07Zm9yKGxldCBhPTA7YTxvLmxlbmd0aDsrK2Epe2NvbnN0IGw9b1th'@; put 'XTtmb3IobGV0IHU9MDt1PGwubGVuZ3RoOysrdSl7Y29uc3QgZz1sW3VdLEU9Qm8oaSx1LGEpLE89dGhpcy5jZWxsQ29udGVudFBhcnNlci5wYXJzZShnKTtpZihPIGluc3RhbmNlb2YgSGQuRm9ybXVsYSl7Y29uc3QgWj10aGlzLnN0YXRzLm1lYXN1cmUoQXMuUEFSU0VSLCgpPT50aGlzLnBh'@; put 'cnNlci5wYXJzZShPLmZvcm11bGEsRSkpO2lmKFouZXJyb3JzLmxlbmd0aD4wKXt0aGlzLnNocmlua0FycmF5SWZOZWVkZWQoRSk7Y29uc3QgZWU9bmV3IGlBKFouZXJyb3JzLE8uZm9ybXVsYSk7dGhpcy5kZXBlbmRlbmN5R3JhcGguYWRkVmVydGV4KEUsZWUpfWVsc2V7dGhpcy5zaHJpbmtB'@; put 'cnJheUlmTmVlZGVkKEUpO2NvbnN0IGVlPXRoaXMuYXJyYXlTaXplUHJlZGljdG9yLmNoZWNrQXJyYXlTaXplKFouYXN0LEUpO2lmKGVlLmlzU2NhbGFyKCkpe2NvbnN0IHZlPW5ldyBqNihaLmFzdCxFLDApO3Quc2V0KHZlLFY2KFouZGVwZW5kZW5jaWVzLEUpKSx0aGlzLmRlcGVuZGVuY3lH'@; put 'cmFwaC5hZGRWZXJ0ZXgoRSx2ZSksWi5oYXNWb2xhdGlsZUZ1bmN0aW9uJiZ0aGlzLmRlcGVuZGVuY3lHcmFwaC5tYXJrQXNWb2xhdGlsZSh2ZSksWi5oYXNTdHJ1Y3R1cmFsQ2hhbmdlRnVuY3Rpb24mJnRoaXMuZGVwZW5kZW5jeUdyYXBoLm1hcmtBc0RlcGVuZGVudE9uU3RydWN0dXJlQ2hh'@; put 'bmdlKHZlKX1lbHNle2NvbnN0IHZlPW5ldyAkaChaLmFzdCxFLG5ldyB5bChlZS53aWR0aCxlZS5oZWlnaHQpKTt0LnNldCh2ZSxWNihaLmRlcGVuZGVuY2llcyxFKSksdGhpcy5kZXBlbmRlbmN5R3JhcGguYWRkQXJyYXlWZXJ0ZXgoRSx2ZSl9fX1lbHNlIGlmKCEoTyBpbnN0YW5jZW9mIEhk'@; put 'LkVtcHR5KSl7dGhpcy5zaHJpbmtBcnJheUlmTmVlZGVkKEUpO2NvbnN0IFo9bmV3IFFfKE8udmFsdWUsZyk7dGhpcy5jb2x1bW5JbmRleC5hZGQoTG8oTy52YWx1ZSksRSksdGhpcy5kZXBlbmRlbmN5R3JhcGguYWRkVmVydGV4KEUsWil9fX19cmV0dXJuIHR9c2hyaW5rQXJyYXlJZk5lZWRl'@; put 'ZChlKXtjb25zdCB0PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldENlbGwoZSk7dCBpbnN0YW5jZW9mICRoJiZ0aGlzLmRlcGVuZGVuY3lHcmFwaC5zaHJpbmtBcnJheVRvQ29ybmVyKHQpfX1jb25zdCBLcT1uZXcgTWFwKFtbImdwbC12MyIsMV0sWyJtaXNzaW5nIiwyXSxbImludmFsaWQiLDNd'@; put 'LFsiZXhwaXJlZCIsNF1dKTtsZXQgUnRuPSgoKT0+e2NsYXNzIG4gZXh0ZW5kcyBCc3t2ZXJzaW9uKHQscil7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24odC5hcmdzLHIsdGhpcy5tZXRhZGF0YSgiVkVSU0lPTiIpLCgpPT57Y29uc3R7bGljZW5zZUtleVZhbGlkaXR5U3RhdGU6aSxsaWNlbnNl'@; put 'S2V5Om99PXRoaXMuY29uZmlnO2xldCBhO3JldHVybiBLcS5oYXMobyk/YT1LcS5nZXQobyk6S3EuaGFzKGkpP2E9S3EuZ2V0KGkpOiJ2YWxpZCI9PT1pJiYoYT1vLnNsaWNlKC01KSksYEh5cGVyRm9ybXVsYSB2JHtkZi52ZXJzaW9ufSwgJHthfWB9KX19cmV0dXJuIG4uaW1wbGVtZW50ZWRG'@; put 'dW5jdGlvbnM9e1ZFUlNJT046e21ldGhvZDoidmVyc2lvbiIscGFyYW1ldGVyczpbXX19LG59KSgpO2Z1bmN0aW9uIHBtZShuLGUpe3ZhciB0O2xldCByPWUuaW1wbGVtZW50ZWRGdW5jdGlvbnNbbl07Y29uc3QgaT1udWxsPT09KHQ9ZS5hbGlhc2VzKXx8dm9pZCAwPT09dD92b2lkIDA6dFtu'@; put 'XTtpZih2b2lkIDAhPT1pKXtpZih2b2lkIDAhPT1yKXRocm93IG5ldyBESnQobixlLm5hbWUpO3I9ZS5pbXBsZW1lbnRlZEZ1bmN0aW9uc1tpXX1pZih2b2lkIDA9PT1yKXRocm93IGFQLmZ1bmN0aW9uTm90RGVjbGFyZWRJblBsdWdpbihuLGUubmFtZSk7cmV0dXJuIHJ9Y2xhc3MgcjB7Y29u'@; put 'c3RydWN0b3IoZSl7aWYodGhpcy5jb25maWc9ZSx0aGlzLmZ1bmN0aW9ucz1uZXcgTWFwLHRoaXMuYXJyYXlTaXplRnVuY3Rpb25zPW5ldyBNYXAsdGhpcy52b2xhdGlsZUZ1bmN0aW9ucz1uZXcgU2V0LHRoaXMuYXJyYXlGdW5jdGlvbnM9bmV3IFNldCx0aGlzLnN0cnVjdHVyYWxDaGFuZ2VG'@; put 'dW5jdGlvbnM9bmV3IFNldCx0aGlzLmZ1bmN0aW9uc1doaWNoRG9lc05vdE5lZWRBcmd1bWVudHNUb0JlQ29tcHV0ZWQ9bmV3IFNldCx0aGlzLmZ1bmN0aW9uc01ldGFkYXRhPW5ldyBNYXAsdGhpcy5kb2VzRnVuY3Rpb25OZWVkQXJndW1lbnRUb0JlQ29tcHV0ZWQ9dD0+dGhpcy5mdW5jdGlv'@; put 'bnNXaGljaERvZXNOb3ROZWVkQXJndW1lbnRzVG9CZUNvbXB1dGVkLmhhcyh0KSx0aGlzLmlzRnVuY3Rpb25Wb2xhdGlsZT10PT50aGlzLnZvbGF0aWxlRnVuY3Rpb25zLmhhcyh0KSx0aGlzLmlzQXJyYXlGdW5jdGlvbj10PT50aGlzLmFycmF5RnVuY3Rpb25zLmhhcyh0KSx0aGlzLmlzRnVu'@; put 'Y3Rpb25EZXBlbmRlbnRPblNoZWV0U3RydWN0dXJlQ2hhbmdlPXQ9PnRoaXMuc3RydWN0dXJhbENoYW5nZUZ1bmN0aW9ucy5oYXModCksZS5mdW5jdGlvblBsdWdpbnMubGVuZ3RoPjApe3RoaXMuaW5zdGFuY2VQbHVnaW5zPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZS5mdW5jdGlvblBsdWdp'@; put 'bnMpcjAubG9hZFBsdWdpbkZ1bmN0aW9ucyh0LHRoaXMuaW5zdGFuY2VQbHVnaW5zKX1lbHNlIHRoaXMuaW5zdGFuY2VQbHVnaW5zPW5ldyBNYXAocjAucGx1Z2lucyk7Zm9yKGNvbnN0W3Qscl1vZiByMC5wcm90ZWN0ZWRGdW5jdGlvbnMoKSlyMC5sb2FkRnVuY3Rpb25VbnByb3RlY3RlZChy'@; put 'LHQsdGhpcy5pbnN0YW5jZVBsdWdpbnMpO2Zvcihjb25zdFt0LHJdb2YgdGhpcy5pbnN0YW5jZVBsdWdpbnMuZW50cmllcygpKXRoaXMuY2F0ZWdvcml6ZUZ1bmN0aW9uKHQscG1lKHQscikpfXN0YXRpYyByZWdpc3RlckZ1bmN0aW9uUGx1Z2luKGUsdCl7dGhpcy5sb2FkUGx1Z2luRnVuY3Rp'@; put 'b25zKGUsdGhpcy5wbHVnaW5zKSx2b2lkIDAhPT10JiZ0aGlzLmxvYWRUcmFuc2xhdGlvbnModCl9c3RhdGljIHJlZ2lzdGVyRnVuY3Rpb24oZSx0LHIpe3RoaXMubG9hZFBsdWdpbkZ1bmN0aW9uKHQsZSx0aGlzLnBsdWdpbnMpLHZvaWQgMCE9PXImJnRoaXMubG9hZFRyYW5zbGF0aW9ucyhy'@; put 'KX1zdGF0aWMgdW5yZWdpc3RlckZ1bmN0aW9uKGUpe2lmKHRoaXMuZnVuY3Rpb25Jc1Byb3RlY3RlZChlKSl0aHJvdyBPQy5jYW5ub3RVbnJlZ2lzdGVyRnVuY3Rpb25XaXRoSWQoZSk7dGhpcy5wbHVnaW5zLmRlbGV0ZShlKX1zdGF0aWMgdW5yZWdpc3RlckZ1bmN0aW9uUGx1Z2luKGUpe2Zv'@; put 'cihjb25zdCB0IG9mIHRoaXMucHJvdGVjdGVkUGx1Z2lucygpKWlmKHQ9PT1lKXRocm93IE9DLmNhbm5vdFVucmVnaXN0ZXJQcm90ZWN0ZWRQbHVnaW4oKTtmb3IoY29uc3RbdCxyXW9mIHRoaXMucGx1Z2lucy5lbnRyaWVzKCkpcj09PWUmJnRoaXMucGx1Z2lucy5kZWxldGUodCl9c3RhdGlj'@; put 'IHVucmVnaXN0ZXJBbGwoKXt0aGlzLnBsdWdpbnMuY2xlYXIoKX1zdGF0aWMgZ2V0UmVnaXN0ZXJlZEZ1bmN0aW9uSWRzKCl7cmV0dXJuWy4uLkFycmF5LmZyb20odGhpcy5wbHVnaW5zLmtleXMoKSksLi4uQXJyYXkuZnJvbSh0aGlzLl9wcm90ZWN0ZWRQbHVnaW5zLmtleXMoKSldfXN0YXRp'@; put 'YyBnZXRQbHVnaW5zKCl7cmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLnBsdWdpbnMudmFsdWVzKCkpLnZhbHVlcygpKX1zdGF0aWMgZ2V0RnVuY3Rpb25QbHVnaW4oZSl7aWYoIXRoaXMuZnVuY3Rpb25Jc1Byb3RlY3RlZChlKSlyZXR1cm4gdGhpcy5wbHVnaW5zLmdldChlKX1zdGF0'@; put 'aWMgZnVuY3Rpb25Jc1Byb3RlY3RlZChlKXtyZXR1cm4gdGhpcy5fcHJvdGVjdGVkUGx1Z2lucy5oYXMoZSl9c3RhdGljIGxvYWRUcmFuc2xhdGlvbnMoZSl7Y29uc3QgdD1uZXcgU2V0KGRmLmdldFJlZ2lzdGVyZWRMYW5ndWFnZXNDb2RlcygpKTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHI9'@; put 'Pnt0LmhhcyhyKSYmZGYuZ2V0TGFuZ3VhZ2UocikuZXh0ZW5kRnVuY3Rpb25zKGVbcl0pfSl9c3RhdGljIGxvYWRQbHVnaW5GdW5jdGlvbnMoZSx0KXtPYmplY3Qua2V5cyhlLmltcGxlbWVudGVkRnVuY3Rpb25zKS5mb3JFYWNoKHI9Pnt0aGlzLmxvYWRQbHVnaW5GdW5jdGlvbihlLHIsdCl9'@; put 'KSx2b2lkIDAhPT1lLmFsaWFzZXMmJk9iamVjdC5rZXlzKGUuYWxpYXNlcykuZm9yRWFjaChyPT57dGhpcy5sb2FkUGx1Z2luRnVuY3Rpb24oZSxyLHQpfSl9c3RhdGljIGxvYWRQbHVnaW5GdW5jdGlvbihlLHQscil7aWYodGhpcy5mdW5jdGlvbklzUHJvdGVjdGVkKHQpKXRocm93IE9DLmNh'@; put 'bm5vdFJlZ2lzdGVyRnVuY3Rpb25XaXRoSWQodCk7dGhpcy5sb2FkRnVuY3Rpb25VbnByb3RlY3RlZChlLHQscil9c3RhdGljIGxvYWRGdW5jdGlvblVucHJvdGVjdGVkKGUsdCxyKXtjb25zdCBpPXBtZSh0LGUpLm1ldGhvZDtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j'@; put 'YWxsKGUucHJvdG90eXBlLGkpKXRocm93IGFQLmZ1bmN0aW9uTWV0aG9kTm90Rm91bmQoaSxlLm5hbWUpO3Iuc2V0KHQsZSl9c3RhdGljKnByb3RlY3RlZEZ1bmN0aW9ucygpe2Zvcihjb25zdFtlLHRdb2YgdGhpcy5fcHJvdGVjdGVkUGx1Z2lucyl2b2lkIDAhPT10JiYoeWllbGRbZSx0XSl9'@; put 'c3RhdGljKnByb3RlY3RlZFBsdWdpbnMoKXtmb3IoY29uc3RbLGVdb2YgdGhpcy5fcHJvdGVjdGVkUGx1Z2lucyl2b2lkIDAhPT1lJiYoeWllbGQgZSl9aW5pdGlhbGl6ZVBsdWdpbnMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3RbcixpXW9mIHRoaXMuaW5zdGFuY2VQbHVnaW5zLmVudHJpZXMo'@; put 'KSl7bGV0IG89dC5maW5kKGc9PmcgaW5zdGFuY2VvZiBpKTt2b2lkIDA9PT1vJiYobz1uZXcgaShlKSx0LnB1c2gobykpO2NvbnN0IGE9cG1lKHIsaSk7dGhpcy5mdW5jdGlvbnMuc2V0KHIsW2EubWV0aG9kLG9dKTtjb25zdCB1PWEuYXJyYXlTaXplTWV0aG9kO3ZvaWQgMCE9PXUmJnRoaXMu'@; put 'YXJyYXlTaXplRnVuY3Rpb25zLnNldChyLFt1LG9dKX19Z2V0RnVuY3Rpb25QbHVnaW4oZSl7aWYoIXIwLmZ1bmN0aW9uSXNQcm90ZWN0ZWQoZSkpcmV0dXJuIHRoaXMuaW5zdGFuY2VQbHVnaW5zLmdldChlKX1nZXRGdW5jdGlvbihlKXtjb25zdCB0PXRoaXMuZnVuY3Rpb25zLmdldChlKTtp'@; put 'Zih2b2lkIDAhPT10JiZ0aGlzLmNvbmZpZy50cmFuc2xhdGlvblBhY2thZ2UuaXNGdW5jdGlvblRyYW5zbGF0ZWQoZSkpe2NvbnN0W3IsaV09dDtyZXR1cm4obyxhKT0+aVtyXShvLGEpfX1nZXRBcnJheVNpemVGdW5jdGlvbihlKXtjb25zdCB0PXRoaXMuYXJyYXlTaXplRnVuY3Rpb25zLmdl'@; put 'dChlKTtpZih2b2lkIDAhPT10JiZ0aGlzLmNvbmZpZy50cmFuc2xhdGlvblBhY2thZ2UuaXNGdW5jdGlvblRyYW5zbGF0ZWQoZSkpe2NvbnN0W3IsaV09dDtyZXR1cm4obyxhKT0+aVtyXShvLGEpfX1nZXRNZXRhZGF0YShlKXtyZXR1cm4gdGhpcy5mdW5jdGlvbnNNZXRhZGF0YS5nZXQoZSl9'@; put 'Z2V0UGx1Z2lucygpe2NvbnN0IGU9bmV3IFNldDtmb3IoY29uc3RbdCxyXW9mIHRoaXMuaW5zdGFuY2VQbHVnaW5zKXIwLmZ1bmN0aW9uSXNQcm90ZWN0ZWQodCl8fGUuYWRkKHIpO3JldHVybiBBcnJheS5mcm9tKGUpfWdldFJlZ2lzdGVyZWRGdW5jdGlvbklkcygpe3JldHVybiBBcnJheS5m'@; put 'cm9tKHRoaXMuZnVuY3Rpb25zLmtleXMoKSl9Y2F0ZWdvcml6ZUZ1bmN0aW9uKGUsdCl7dC5pc1ZvbGF0aWxlJiZ0aGlzLnZvbGF0aWxlRnVuY3Rpb25zLmFkZChlKSx0LmFycmF5RnVuY3Rpb24mJnRoaXMuYXJyYXlGdW5jdGlvbnMuYWRkKGUpLHQuZG9lc05vdE5lZWRBcmd1bWVudHNUb0Jl'@; put 'Q29tcHV0ZWQmJnRoaXMuZnVuY3Rpb25zV2hpY2hEb2VzTm90TmVlZEFyZ3VtZW50c1RvQmVDb21wdXRlZC5hZGQoZSksdC5pc0RlcGVuZGVudE9uU2hlZXRTdHJ1Y3R1cmVDaGFuZ2UmJnRoaXMuc3RydWN0dXJhbENoYW5nZUZ1bmN0aW9ucy5hZGQoZSksdGhpcy5mdW5jdGlvbnNNZXRhZGF0'@; put 'YS5zZXQoZSx0KX19cjAucGx1Z2lucz1uZXcgTWFwLHIwLl9wcm90ZWN0ZWRQbHVnaW5zPW5ldyBNYXAoW1siVkVSU0lPTiIsUnRuXSxbIk9GRlNFVCIsdm9pZCAwXV0pO3ZhciBkMj1mdW5jdGlvbihuKXtyZXR1cm4gbi5HUkVBVEVSX1RIQU49IkdSRUFURVJfVEhBTiIsbi5HUkVBVEVSX1RI'@; put 'QU5fT1JfRVFVQUw9IkdSRUFURVJfVEhBTl9PUl9FUVVBTCIsbi5MRVNTX1RIQU49IkxFU1NfVEhBTiIsbi5MRVNTX1RIQU5fT1JfRVFVQUw9IkxFU1NfVEhBTl9PUl9FUVVBTCIsbi5OT1RfRVFVQUw9Ik5PVF9FUVVBTCIsbi5FUVVBTD0iRVFVQUwiLG59KGQyfHx7fSk7Y29uc3QgWHE9KG4s'@; put 'ZSk9Pih7b3BlcmF0b3I6bix2YWx1ZTplfSk7Y2xhc3MgSXRue2NvbnN0cnVjdG9yKGUpe3ZhciB0LHIsaSxvO3RoaXMudHJ1ZVN0cmluZz1udWxsIT09KHI9bnVsbD09PSh0PWUudHJhbnNsYXRpb25QYWNrYWdlLmdldE1heWJlRnVuY3Rpb25UcmFuc2xhdGlvbigiVFJVRSIpKXx8dm9pZCAw'@; put 'PT09dD92b2lkIDA6dC50b0xvd2VyQ2FzZSgpKSYmdm9pZCAwIT09cj9yOiJ0cnVlIix0aGlzLmZhbHNlU3RyaW5nPW51bGwhPT0obz1udWxsPT09KGk9ZS50cmFuc2xhdGlvblBhY2thZ2UuZ2V0TWF5YmVGdW5jdGlvblRyYW5zbGF0aW9uKCJGQUxTRSIpKXx8dm9pZCAwPT09aT92b2lkIDA6'@; put 'aS50b0xvd2VyQ2FzZSgpKSYmdm9pZCAwIT09bz9vOiJmYWxzZSJ9ZnJvbUNlbGxWYWx1ZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmImJvb2xlYW4iIT10eXBlb2YgZSYmIm51bWJlciIhPXR5cGVvZiBlKXJldHVybjtjb25zdCByPXRoaXMucGFyc2VDcml0ZXJpb24oZSx0KTtyZXR1'@; put 'cm4gdm9pZCAwIT09cj97cmF3OmUsbGFtYmRhOk90bihyLHQpfTp2b2lkIDB9cGFyc2VDcml0ZXJpb24oZSx0KXtpZigibnVtYmVyIj09dHlwZW9mIGV8fCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIFhxKGQyLkVRVUFMLGUpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7Y29uc3Qgcj1EdG4u'@; put 'ZXhlYyhlKTtsZXQgaSxvO3I/KG89ZnVuY3Rpb24gTHRuKG4pe3N3aXRjaChuKXtjYXNlIj4iOnJldHVybiBkMi5HUkVBVEVSX1RIQU47Y2FzZSI+PSI6cmV0dXJuIGQyLkdSRUFURVJfVEhBTl9PUl9FUVVBTDtjYXNlIjwiOnJldHVybiBkMi5MRVNTX1RIQU47Y2FzZSI8PSI6cmV0dXJuIGQy'@; put 'LkxFU1NfVEhBTl9PUl9FUVVBTDtjYXNlIjw+IjpyZXR1cm4gZDIuTk9UX0VRVUFMO2Nhc2UiPSI6cmV0dXJuIGQyLkVRVUFMO2RlZmF1bHQ6cmV0dXJufX0oclsxXSksaT1yWzJdKToobz1kMi5FUVVBTCxpPWUpO2NvbnN0IGE9dC5jb2VyY2VUb01heWJlTnVtYmVyKGkpLGw9aS50b0xvd2Vy'@; put 'Q2FzZSgpPT09dGhpcy50cnVlU3RyaW5nfHxpLnRvTG93ZXJDYXNlKCkhPT10aGlzLmZhbHNlU3RyaW5nJiZ2b2lkIDA7aWYodm9pZCAwPT09bylyZXR1cm47aWYoIiI9PT1pKXJldHVybiBYcShvLG51bGwpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIFhxKG8sTG8oYSkpO2lmKG89PT1kMi5FUVVB'@; put 'THx8bz09PWQyLk5PVF9FUVVBTClyZXR1cm4gWHEobyxsPz9pKX19fWNvbnN0IER0bj0vKFs8Pj1dKykoLiopLyxPdG49KG4sZSk9Pntzd2l0Y2gobi5vcGVyYXRvcil7Y2FzZSBkMi5HUkVBVEVSX1RIQU46cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuLnZhbHVlP3Q9PiJudW1iZXIiPT10eXBl'@; put 'b2YgdCYmZS5mbG9hdENtcCh0LG4udmFsdWUpPjA6dD0+ITE7Y2FzZSBkMi5HUkVBVEVSX1RIQU5fT1JfRVFVQUw6cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuLnZhbHVlP3Q9PiJudW1iZXIiPT10eXBlb2YgdCYmZS5mbG9hdENtcCh0LG4udmFsdWUpPj0wOnQ9PiExO2Nhc2UgZDIuTEVTU19U'@; put 'SEFOOnJldHVybiJudW1iZXIiPT10eXBlb2Ygbi52YWx1ZT90PT4ibnVtYmVyIj09dHlwZW9mIHQmJmUuZmxvYXRDbXAodCxuLnZhbHVlKTwwOnQ9PiExO2Nhc2UgZDIuTEVTU19USEFOX09SX0VRVUFMOnJldHVybiJudW1iZXIiPT10eXBlb2Ygbi52YWx1ZT90PT4ibnVtYmVyIj09dHlwZW9m'@; put 'IHQmJmUuZmxvYXRDbXAodCxuLnZhbHVlKTw9MDp0PT4hMTtjYXNlIGQyLkVRVUFMOnJldHVybiJudW1iZXIiPT10eXBlb2Ygbi52YWx1ZT90PT57aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiAwPT09ZS5mbG9hdENtcCh0LG4udmFsdWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYo'@; put 'IiI9PT10KXJldHVybiExO2NvbnN0IHI9ZS5jb2VyY2VUb01heWJlTnVtYmVyKHQpO3JldHVybiB2b2lkIDAhPT1yJiYwPT09ZS5mbG9hdENtcChyLG4udmFsdWUpfXJldHVybiExfToic3RyaW5nIj09dHlwZW9mIG4udmFsdWU/ZS5lcU1hdGNoZXJGdW5jdGlvbihuLnZhbHVlKToiYm9vbGVh'@; put 'biI9PXR5cGVvZiBuLnZhbHVlP3Q9PiJib29sZWFuIj09dHlwZW9mIHQmJnQ9PT1uLnZhbHVlOnQ9PnQ9PT1sbDtjYXNlIGQyLk5PVF9FUVVBTDpyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4udmFsdWU/dD0+e2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gMCE9PWUuZmxvYXRDbXAodCxu'@; put 'LnZhbHVlKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKCIiPT09dClyZXR1cm4hMDtjb25zdCByPWUuY29lcmNlVG9NYXliZU51bWJlcih0KTtyZXR1cm4gdm9pZCAwPT09cnx8MCE9PWUuZmxvYXRDbXAocixuLnZhbHVlKX1yZXR1cm4hMH06InN0cmluZyI9PXR5cGVvZiBuLnZhbHVlP2Uu'@; put 'bmVxTWF0Y2hlckZ1bmN0aW9uKG4udmFsdWUpOiJib29sZWFuIj09dHlwZW9mIG4udmFsdWU/dD0+ImJvb2xlYW4iIT10eXBlb2YgdHx8dCE9PW4udmFsdWU6dD0+dCE9PWxsfX07Y2xhc3MgTnRue2NvbnN0cnVjdG9yKGUsdCxyLGksbyxhLGwsdSxnLEUpe3RoaXMuY29uZmlnPWUsdGhpcy5k'@; put 'ZXBlbmRlbmN5R3JhcGg9dCx0aGlzLmNvbHVtblNlYXJjaD1yLHRoaXMuc3RhdHM9aSx0aGlzLmFyaXRobWV0aWNIZWxwZXI9byx0aGlzLmZ1bmN0aW9uUmVnaXN0cnk9YSx0aGlzLm5hbWVkRXhwcmVzc2lvbnM9bCx0aGlzLnNlcmlhbGl6YXRpb249dSx0aGlzLmFycmF5U2l6ZVByZWRpY3Rv'@; put 'cj1nLHRoaXMuZGF0ZVRpbWVIZWxwZXI9RSx0aGlzLmVxdWFsT3A9KE8sWik9PnhtKHRoaXMuYXJpdGhtZXRpY0hlbHBlci5lcSxPLFopLHRoaXMubm90RXF1YWxPcD0oTyxaKT0+eG0odGhpcy5hcml0aG1ldGljSGVscGVyLm5lcSxPLFopLHRoaXMuZ3JlYXRlclRoYW5PcD0oTyxaKT0+eG0o'@; put 'dGhpcy5hcml0aG1ldGljSGVscGVyLmd0LE8sWiksdGhpcy5sZXNzVGhhbk9wPShPLFopPT54bSh0aGlzLmFyaXRobWV0aWNIZWxwZXIubHQsTyxaKSx0aGlzLmdyZWF0ZXJUaGFuT3JFcXVhbE9wPShPLFopPT54bSh0aGlzLmFyaXRobWV0aWNIZWxwZXIuZ2VxLE8sWiksdGhpcy5sZXNzVGhh'@; put 'bk9yRXF1YWxPcD0oTyxaKT0+eG0odGhpcy5hcml0aG1ldGljSGVscGVyLmxlcSxPLFopLHRoaXMuY29uY2F0T3A9KE8sWik9PnhtKHRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb25jYXQsbm1lKE8pLG5tZShaKSksdGhpcy5wbHVzT3A9KE8sWik9PnhtKHRoaXMuYXJpdGhtZXRpY0hlbHBlci5h'@; put 'ZGRXaXRoRXBzaWxvbix0aGlzLmFyaXRobWV0aWNIZWxwZXIuY29lcmNlU2NhbGFyVG9OdW1iZXJPckVycm9yKE8pLHRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3IoWikpLHRoaXMubWludXNPcD0oTyxaKT0+eG0odGhpcy5hcml0aG1ldGljSGVscGVy'@; put 'LnN1YnRyYWN0LHRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3IoTyksdGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihaKSksdGhpcy50aW1lc09wPShPLFopPT54bSh0aGlzLmFyaXRobWV0aWNIZWxwZXIubXVs'@; put 'dGlwbHksdGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihPKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIuY29lcmNlU2NhbGFyVG9OdW1iZXJPckVycm9yKFopKSx0aGlzLnBvd2VyT3A9KE8sWik9PnhtKHRoaXMuYXJpdGhtZXRpY0hlbHBlci5wb3csdGhp'@; put 'cy5hcml0aG1ldGljSGVscGVyLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihPKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIuY29lcmNlU2NhbGFyVG9OdW1iZXJPckVycm9yKFopKSx0aGlzLmRpdk9wPShPLFopPT54bSh0aGlzLmFyaXRobWV0aWNIZWxwZXIuZGl2aWRlLHRoaXMuYXJpdGht'@; put 'ZXRpY0hlbHBlci5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3IoTyksdGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZVNjYWxhclRvTnVtYmVyT3JFcnJvcihaKSksdGhpcy51bmFyeU1pbnVzT3A9Tz0+V1dlKHRoaXMuYXJpdGhtZXRpY0hlbHBlci51bmFyeU1pbnVzLHRoaXMuYXJpdGht'@; put 'ZXRpY0hlbHBlci5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3IoTykpLHRoaXMucGVyY2VudE9wPU89PldXZSh0aGlzLmFyaXRobWV0aWNIZWxwZXIudW5hcnlQZXJjZW50LHRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3IoTykpLHRoaXMudW5hcnlQ'@; put 'bHVzT3A9Tz0+dGhpcy5hcml0aG1ldGljSGVscGVyLnVuYXJ5UGx1cyhPKSx0aGlzLmZ1bmN0aW9uUmVnaXN0cnkuaW5pdGlhbGl6ZVBsdWdpbnModGhpcyksdGhpcy5jcml0ZXJpb25CdWlsZGVyPW5ldyBJdG4oZSl9ZXZhbHVhdGVBc3QoZSx0KXtsZXQgcj10aGlzLmV2YWx1YXRlQXN0V2l0'@; put 'aG91dFBvc3Rwcm9jZXNzaW5nKGUsdCk7aWYoY2Mocikpe2lmKGZXZShMbyhyKSkpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuTmFOKTtyPVdnZShyLHBXZShMbyhyKSkpfXJldHVybiByIGluc3RhbmNlb2YgbGEmJjE9PT1yLmhlaWdodCgpJiYxPT09ci53aWR0aCgpJiYoW1tyXV09ci5kYXRh'@; put 'KSxmdW5jdGlvbiBGdG4obixlKXtyZXR1cm4gbiBpbnN0YW5jZW9mIFB0JiZ2b2lkIDAhPT1lP24uYXR0YWNoUm9vdFZlcnRleChlKTpufShyLHQuZm9ybXVsYVZlcnRleCl9ZXZhbHVhdGVBc3RXaXRob3V0UG9zdHByb2Nlc3NpbmcoZSx0KXtzd2l0Y2goZS50eXBlKXtjYXNlIHJuLkVNUFRZ'@; put 'OnJldHVybiBsbDtjYXNlIHJuLkNFTExfUkVGRVJFTkNFOntjb25zdCByPWUucmVmZXJlbmNlLnRvU2ltcGxlQ2VsbEFkZHJlc3ModC5mb3JtdWxhQWRkcmVzcyk7cmV0dXJuIG5wKHIpP25ldyBQdCh0bi5SRUYsZHIuQmFkUmVmKTp0aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsVmFsdWUo'@; put 'cil9Y2FzZSBybi5OVU1CRVI6Y2FzZSBybi5TVFJJTkc6cmV0dXJuIGUudmFsdWU7Y2FzZSBybi5DT05DQVRFTkFURV9PUDp7Y29uc3Qgcj10aGlzLmV2YWx1YXRlQXN0KGUubGVmdCx0KSxpPXRoaXMuZXZhbHVhdGVBc3QoZS5yaWdodCx0KTtyZXR1cm4gdGhpcy5iaW5hcnlSYW5nZVdyYXBw'@; put 'ZXIodGhpcy5jb25jYXRPcCxyLGksdCl9Y2FzZSBybi5FUVVBTFNfT1A6e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChlLmxlZnQsdCksaT10aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMuZXF1YWxPcCxyLGksdCl9Y2FzZSBy'@; put 'bi5OT1RfRVFVQUxfT1A6e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChlLmxlZnQsdCksaT10aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMubm90RXF1YWxPcCxyLGksdCl9Y2FzZSBybi5HUkVBVEVSX1RIQU5fT1A6e2NvbnN0'@; put 'IHI9dGhpcy5ldmFsdWF0ZUFzdChlLmxlZnQsdCksaT10aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMuZ3JlYXRlclRoYW5PcCxyLGksdCl9Y2FzZSBybi5MRVNTX1RIQU5fT1A6e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChl'@; put 'LmxlZnQsdCksaT10aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMubGVzc1RoYW5PcCxyLGksdCl9Y2FzZSBybi5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfT1A6e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChlLmxlZnQsdCksaT10'@; put 'aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMuZ3JlYXRlclRoYW5PckVxdWFsT3AscixpLHQpfWNhc2Ugcm4uTEVTU19USEFOX09SX0VRVUFMX09QOntjb25zdCByPXRoaXMuZXZhbHVhdGVBc3QoZS5sZWZ0LHQpLGk9dGhpcy5l'@; put 'dmFsdWF0ZUFzdChlLnJpZ2h0LHQpO3JldHVybiB0aGlzLmJpbmFyeVJhbmdlV3JhcHBlcih0aGlzLmxlc3NUaGFuT3JFcXVhbE9wLHIsaSx0KX1jYXNlIHJuLlBMVVNfT1A6e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChlLmxlZnQsdCksaT10aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7'@; put 'cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMucGx1c09wLHIsaSx0KX1jYXNlIHJuLk1JTlVTX09QOntjb25zdCByPXRoaXMuZXZhbHVhdGVBc3QoZS5sZWZ0LHQpLGk9dGhpcy5ldmFsdWF0ZUFzdChlLnJpZ2h0LHQpO3JldHVybiB0aGlzLmJpbmFyeVJhbmdlV3JhcHBlcih0'@; put 'aGlzLm1pbnVzT3AscixpLHQpfWNhc2Ugcm4uVElNRVNfT1A6e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChlLmxlZnQsdCksaT10aGlzLmV2YWx1YXRlQXN0KGUucmlnaHQsdCk7cmV0dXJuIHRoaXMuYmluYXJ5UmFuZ2VXcmFwcGVyKHRoaXMudGltZXNPcCxyLGksdCl9Y2FzZSBybi5QT1dF'@; put 'Ul9PUDp7Y29uc3Qgcj10aGlzLmV2YWx1YXRlQXN0KGUubGVmdCx0KSxpPXRoaXMuZXZhbHVhdGVBc3QoZS5yaWdodCx0KTtyZXR1cm4gdGhpcy5iaW5hcnlSYW5nZVdyYXBwZXIodGhpcy5wb3dlck9wLHIsaSx0KX1jYXNlIHJuLkRJVl9PUDp7Y29uc3Qgcj10aGlzLmV2YWx1YXRlQXN0KGUu'@; put 'bGVmdCx0KSxpPXRoaXMuZXZhbHVhdGVBc3QoZS5yaWdodCx0KTtyZXR1cm4gdGhpcy5iaW5hcnlSYW5nZVdyYXBwZXIodGhpcy5kaXZPcCxyLGksdCl9Y2FzZSBybi5QTFVTX1VOQVJZX09QOntjb25zdCByPXRoaXMuZXZhbHVhdGVBc3QoZS52YWx1ZSx0KTtyZXR1cm4gdGhpcy51bmFyeVJh'@; put 'bmdlV3JhcHBlcih0aGlzLnVuYXJ5UGx1c09wLHIsdCl9Y2FzZSBybi5NSU5VU19VTkFSWV9PUDp7Y29uc3Qgcj10aGlzLmV2YWx1YXRlQXN0KGUudmFsdWUsdCk7cmV0dXJuIHRoaXMudW5hcnlSYW5nZVdyYXBwZXIodGhpcy51bmFyeU1pbnVzT3Ascix0KX1jYXNlIHJuLlBFUkNFTlRfT1A6'@; put 'e2NvbnN0IHI9dGhpcy5ldmFsdWF0ZUFzdChlLnZhbHVlLHQpO3JldHVybiB0aGlzLnVuYXJ5UmFuZ2VXcmFwcGVyKHRoaXMucGVyY2VudE9wLHIsdCl9Y2FzZSBybi5GVU5DVElPTl9DQUxMOntpZigidmFsaWQiIT09dGhpcy5jb25maWcubGljZW5zZUtleVZhbGlkaXR5U3RhdGUmJiFyMC5m'@; put 'dW5jdGlvbklzUHJvdGVjdGVkKGUucHJvY2VkdXJlTmFtZSkpcmV0dXJuIG5ldyBQdCh0bi5MSUMsZHIuTGljZW5zZUtleSh0aGlzLmNvbmZpZy5saWNlbnNlS2V5VmFsaWRpdHlTdGF0ZSkpO2NvbnN0IHI9dGhpcy5mdW5jdGlvblJlZ2lzdHJ5LmdldEZ1bmN0aW9uKGUucHJvY2VkdXJlTmFt'@; put 'ZSk7cmV0dXJuIHZvaWQgMCE9PXI/cihlLG5ldyB6Nih0LmZvcm11bGFBZGRyZXNzLHQuYXJyYXlzRmxhZ3x8dGhpcy5mdW5jdGlvblJlZ2lzdHJ5LmlzQXJyYXlGdW5jdGlvbihlLnByb2NlZHVyZU5hbWUpLHQuZm9ybXVsYVZlcnRleCkpOm5ldyBQdCh0bi5OQU1FLGRyLkZ1bmN0aW9uTmFt'@; put 'ZShlLnByb2NlZHVyZU5hbWUpKX1jYXNlIHJuLk5BTUVEX0VYUFJFU1NJT046e2NvbnN0IHI9dGhpcy5uYW1lZEV4cHJlc3Npb25zLm5lYXJlc3ROYW1lZEV4cHJlc3Npb24oZS5leHByZXNzaW9uTmFtZSx0LmZvcm11bGFBZGRyZXNzLnNoZWV0KTtyZXR1cm4gcj90aGlzLmRlcGVuZGVuY3lH'@; put 'cmFwaC5nZXRDZWxsVmFsdWUoci5hZGRyZXNzKTpuZXcgUHQodG4uTkFNRSxkci5OYW1lZEV4cHJlc3Npb25OYW1lKGUuZXhwcmVzc2lvbk5hbWUpKX1jYXNlIHJuLkNFTExfUkFOR0U6e2lmKCF0aGlzLnJhbmdlU3BhbnNPbmVTaGVldChlKSlyZXR1cm4gbmV3IFB0KHRuLlJFRixkci5SYW5n'@; put 'ZU1hbnlTaGVldHMpO2NvbnN0IHI9YmEuZnJvbUNlbGxSYW5nZShlLHQuZm9ybXVsYUFkZHJlc3MpLGk9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0QXJyYXkocik7aWYoaSl7Y29uc3Qgbz1pLmFycmF5O2lmKG8gaW5zdGFuY2VvZiBsUCl0aHJvdyBuZXcgRXJyb3IoIkFycmF5IHNob3VsZCBi'@; put 'ZSBhbHJlYWR5IGNvbXB1dGVkIik7aWYobyBpbnN0YW5jZW9mIFB0KXJldHVybiBvO2lmKG8gaW5zdGFuY2VvZiBuQSlyZXR1cm4gbGEuZnJvbVJhbmdlKG8ucmF3KCkscix0aGlzLmRlcGVuZGVuY3lHcmFwaCk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGFycmF5Iil9cmV0dXJuIGxhLm9u'@; put 'bHlSYW5nZShyLHRoaXMuZGVwZW5kZW5jeUdyYXBoKX1jYXNlIHJuLkNPTFVNTl9SQU5HRTp7aWYoIXRoaXMucmFuZ2VTcGFuc09uZVNoZWV0KGUpKXJldHVybiBuZXcgUHQodG4uUkVGLGRyLlJhbmdlTWFueVNoZWV0cyk7Y29uc3Qgcj1zOS5mcm9tQ29sdW1uUmFuZ2UoZSx0LmZvcm11bGFB'@; put 'ZGRyZXNzKTtyZXR1cm4gbGEub25seVJhbmdlKHIsdGhpcy5kZXBlbmRlbmN5R3JhcGgpfWNhc2Ugcm4uUk9XX1JBTkdFOntpZighdGhpcy5yYW5nZVNwYW5zT25lU2hlZXQoZSkpcmV0dXJuIG5ldyBQdCh0bi5SRUYsZHIuUmFuZ2VNYW55U2hlZXRzKTtjb25zdCByPWw5LmZyb21Sb3dSYW5n'@; put 'ZUFzdChlLHQuZm9ybXVsYUFkZHJlc3MpO3JldHVybiBsYS5vbmx5UmFuZ2Uocix0aGlzLmRlcGVuZGVuY3lHcmFwaCl9Y2FzZSBybi5QQVJFTlRIRVNJUzpyZXR1cm4gdGhpcy5ldmFsdWF0ZUFzdChlLmV4cHJlc3Npb24sdCk7Y2FzZSBybi5BUlJBWTp7bGV0IHI7Y29uc3QgaT1bXTtmb3Io'@; put 'Y29uc3QgbyBvZiBlLmFyZ3Mpe2xldCBhO2NvbnN0IGw9W107Zm9yKGNvbnN0IGcgb2Ygbyl7Y29uc3QgRT1jV2UodGhpcy5ldmFsdWF0ZUFzdChnLHQpKSxPPUUuaGVpZ2h0KCk7aWYodm9pZCAwPT09YSlhPU8sbC5wdXNoKC4uLkUuZGF0YSk7ZWxzZXtpZihhIT09TylyZXR1cm4gbmV3IFB0'@; put 'KHRuLlJFRixkci5TaXplTWlzbWF0Y2gpO2ZvcihsZXQgWj0wO1o8TztaKyspbFtaXS5wdXNoKC4uLkUuZGF0YVtaXSl9fWNvbnN0IHU9bFswXS5sZW5ndGg7aWYodm9pZCAwPT09cilyPXUsaS5wdXNoKC4uLmwpO2Vsc2V7aWYociE9PXUpcmV0dXJuIG5ldyBQdCh0bi5SRUYsZHIuU2l6ZU1p'@; put 'c21hdGNoKTtpLnB1c2goLi4ubCl9fXJldHVybiBsYS5vbmx5VmFsdWVzKGkpfWNhc2Ugcm4uRVJST1JfV0lUSF9SQVdfSU5QVVQ6Y2FzZSBybi5FUlJPUjpyZXR1cm4gZS5lcnJvcn19cmFuZ2VTcGFuc09uZVNoZWV0KGUpe3JldHVybiBlLnN0YXJ0LnNoZWV0PT09ZS5lbmQuc2hlZXR9dW5h'@; put 'cnlSYW5nZVdyYXBwZXIoZSx0LHIpe3ZhciBpO2lmKHQgaW5zdGFuY2VvZiBsYSYmIXIuYXJyYXlzRmxhZyYmKHQ9bnVsbCE9PShpPVBxKHQscikpJiZ2b2lkIDAhPT1pP2k6bmV3IFB0KHRuLlZBTFVFLGRyLlNjYWxhckV4cGVjdGVkKSksdCBpbnN0YW5jZW9mIFB0KXJldHVybiB0O2lmKHQg'@; put 'aW5zdGFuY2VvZiBsYSl7Y29uc3Qgbz10LmRhdGEubWFwKGE9PmEubWFwKGUpKTtyZXR1cm4gbGEub25seVZhbHVlcyhvKX1yZXR1cm4gZSh0KX1iaW5hcnlSYW5nZVdyYXBwZXIoZSx0LHIsaSl7dmFyIG8sYTtpZih0IGluc3RhbmNlb2YgbGEmJiFpLmFycmF5c0ZsYWcmJih0PW51bGwhPT0o'@; put 'bz1QcSh0LGkpKSYmdm9pZCAwIT09bz9vOm5ldyBQdCh0bi5WQUxVRSxkci5TY2FsYXJFeHBlY3RlZCkpLHQgaW5zdGFuY2VvZiBQdClyZXR1cm4gdDtpZihyIGluc3RhbmNlb2YgbGEmJiFpLmFycmF5c0ZsYWcmJihyPW51bGwhPT0oYT1QcShyLGkpKSYmdm9pZCAwIT09YT9hOm5ldyBQdCh0'@; put 'bi5WQUxVRSxkci5TY2FsYXJFeHBlY3RlZCkpLHIgaW5zdGFuY2VvZiBQdClyZXR1cm4gcjtpZih0IGluc3RhbmNlb2YgbGF8fHIgaW5zdGFuY2VvZiBsYSl7aWYoISh0IGluc3RhbmNlb2YgbGEpKXtpZihyLmlzQWRIb2MoKSl7Y29uc3QgRT1yLmRhdGE7Zm9yKGxldCBPPTA7TzxFLmxlbmd0'@; put 'aDtPKyspZm9yKGxldCBaPTA7WjxFWzBdLmxlbmd0aDtaKyspRVtPXVtaXT1lKHQsRVtPXVtaXSk7cmV0dXJuIGxhLm9ubHlWYWx1ZXMoRSl9dD1sYS5mcm9tU2NhbGFyKHQpfWlmKCEociBpbnN0YW5jZW9mIGxhKSl7aWYodC5pc0FkSG9jKCkpe2NvbnN0IEU9dC5kYXRhO2ZvcihsZXQgTz0w'@; put 'O088RS5sZW5ndGg7TysrKWZvcihsZXQgWj0wO1o8RVswXS5sZW5ndGg7WisrKUVbT11bWl09ZShFW09dW1pdLHIpO3JldHVybiBsYS5vbmx5VmFsdWVzKEUpfXI9bGEuZnJvbVNjYWxhcihyKX1pZih0LndpZHRoKCk9PT1yLndpZHRoKCkmJnQuaGVpZ2h0KCk9PT1yLmhlaWdodCgpKXtpZih0'@; put 'LmlzQWRIb2MoKSl7Y29uc3QgRT10LmRhdGEsTz1yLmRhdGE7Zm9yKGxldCBaPTA7WjxFLmxlbmd0aDtaKyspZm9yKGxldCBlZT0wO2VlPEVbMF0ubGVuZ3RoO2VlKyspRVtaXVtlZV09ZShFW1pdW2VlXSxPW1pdW2VlXSk7cmV0dXJuIGxhLm9ubHlWYWx1ZXMoRSl9aWYoci5pc0FkSG9jKCkp'@; put 'e2NvbnN0IEU9dC5kYXRhLE89ci5kYXRhO2ZvcihsZXQgWj0wO1o8RS5sZW5ndGg7WisrKWZvcihsZXQgZWU9MDtlZTxFWzBdLmxlbmd0aDtlZSsrKU9bWl1bZWVdPWUoRVtaXVtlZV0sT1taXVtlZV0pO3JldHVybiBsYS5vbmx5VmFsdWVzKE8pfX1jb25zdCBsPU1hdGgubWF4KHQud2lkdGgo'@; put 'KSxyLndpZHRoKCkpLHU9TWF0aC5tYXgodC5oZWlnaHQoKSxyLmhlaWdodCgpKSxnPUFycmF5KHUpO2ZvcihsZXQgRT0wO0U8dTtFKyspZ1tFXT1BcnJheShsKTtmb3IobGV0IEU9MDtFPHU7RSsrKXtjb25zdCBPPTEhPT10LmhlaWdodCgpP0U6MCxaPTEhPT1yLmhlaWdodCgpP0U6MDtmb3Io'@; put 'bGV0IGVlPTA7ZWU8bDtlZSsrKXtjb25zdCB2ZT0xIT09dC53aWR0aCgpP2VlOjAsTWU9MSE9PXIud2lkdGgoKT9lZTowO2dbRV1bZWVdPU88dC5oZWlnaHQoKSYmWjxyLmhlaWdodCgpJiZ2ZTx0LndpZHRoKCkmJk1lPHIud2lkdGgoKT9lKHQuZGF0YVtPXVt2ZV0sci5kYXRhW1pdW01lXSk6'@; put 'bmV3IFB0KHRuLk5BKX19cmV0dXJuIGxhLm9ubHlWYWx1ZXMoZyl9cmV0dXJuIGUodCxyKX19ZnVuY3Rpb24gV1dlKG4sZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBQdD9lOm4oZSl9ZnVuY3Rpb24geG0obixlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUHQ/ZTp0IGluc3RhbmNlb2YgUHQ/dDpu'@; put 'KGUsdCl9Y2xhc3MgUHRue2NvbnN0cnVjdG9yKGUpe3RoaXMuc2hlZXQ9ZSx0aGlzLnRyYW5zZm9ybWF0aW9ucz1bXX1hZGQoZSl7dGhpcy50cmFuc2Zvcm1hdGlvbnMucHVzaChlKX1wZXJmb3JtRWFnZXJUcmFuc2Zvcm1hdGlvbnMoZSx0KXt0aGlzLnRyYW5zZm9ybWF0aW9ucy5mb3JFYWNo'@; put 'KHI9PnIucGVyZm9ybUVhZ2VyVHJhbnNmb3JtYXRpb25zKGUsdCkpfXRyYW5zZm9ybVNpbmdsZUFzdChlLHQpe2xldFtyLGldPVtlLHRdO3JldHVybiB0aGlzLnRyYW5zZm9ybWF0aW9ucy5mb3JFYWNoKG89PntbcixpXT1vLnRyYW5zZm9ybVNpbmdsZUFzdChyLGkpfSksW3IsaV19aXNJcnJl'@; put 'dmVyc2libGUoKXtyZXR1cm4hMH19Y2xhc3MgSHRue2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RhdHM9ZSx0aGlzLnRyYW5zZm9ybWF0aW9ucz1bXX12ZXJzaW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtYXRpb25zLmxlbmd0aH1hZGRUcmFuc2Zvcm1hdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09'@; put 'dGhpcy5jb21iaW5lZFRyYW5zZm9ybWVyP3RoaXMuY29tYmluZWRUcmFuc2Zvcm1lci5hZGQoZSk6dGhpcy50cmFuc2Zvcm1hdGlvbnMucHVzaChlKSx0aGlzLnZlcnNpb24oKX1iZWdpbkNvbWJpbmVkTW9kZShlKXt0aGlzLmNvbWJpbmVkVHJhbnNmb3JtZXI9bmV3IFB0bihlKX1jb21taXRD'@; put 'b21iaW5lZE1vZGUoKXtpZih2b2lkIDA9PT10aGlzLmNvbWJpbmVkVHJhbnNmb3JtZXIpdGhyb3cgRXJyb3IoIkNvbWJpbmVkIG1vZGUgd2Fzbid0IHN0YXJ0ZWQiKTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1hdGlvbnMucHVzaCh0aGlzLmNvbWJpbmVkVHJhbnNmb3JtZXIpLHRoaXMuY29tYmlu'@; put 'ZWRUcmFuc2Zvcm1lcj12b2lkIDAsdGhpcy52ZXJzaW9uKCl9YXBwbHlUcmFuc2Zvcm1hdGlvbnMoZSx0LHIpe3RoaXMuc3RhdHMuc3RhcnQoQXMuVFJBTlNGT1JNX0FTVFNfUE9TVFBPTkVEKTtmb3IobGV0IG89cjtvPHRoaXMudHJhbnNmb3JtYXRpb25zLmxlbmd0aDtvKyspe2NvbnN0IGE9'@; put 'dGhpcy50cmFuc2Zvcm1hdGlvbnNbb107YS5pc0lycmV2ZXJzaWJsZSgpJiYodGhpcy51bmRvUmVkby5zdG9yZURhdGFGb3JWZXJzaW9uKG8sdCx0aGlzLnBhcnNlci5jb21wdXRlSGFzaEZyb21Bc3QoZSkpLHRoaXMucGFyc2VyLnJlbWVtYmVyTmV3QXN0KGUpKTtjb25zdFtsLHVdPWEudHJh'@; put 'bnNmb3JtU2luZ2xlQXN0KGUsdCk7ZT1sLHQ9dX1jb25zdCBpPXRoaXMucGFyc2VyLnJlbWVtYmVyTmV3QXN0KGUpO3JldHVybiB0aGlzLnN0YXRzLmVuZChBcy5UUkFOU0ZPUk1fQVNUU19QT1NUUE9ORUQpLFtpLHQsdGhpcy50cmFuc2Zvcm1hdGlvbnMubGVuZ3RoXX0qZ2V0VHJhbnNmb3Jt'@; put 'YXRpb25zRnJvbShlLHQpe2ZvcihsZXQgcj1lO3I8dGhpcy50cmFuc2Zvcm1hdGlvbnMubGVuZ3RoO3IrKyl7Y29uc3QgaT10aGlzLnRyYW5zZm9ybWF0aW9uc1tyXTsoIXR8fHQoaSkpJiYoeWllbGQgaSl9fX1mdW5jdGlvbiBKcShuLGUpe3JldHVybiB0eXBlb2Ygbj09dHlwZW9mIGU/bj09'@; put 'PWxsPzA6bjxlPy0xOm4+ZT8xOjA6bj09PWxsPy0xOmU9PT1sbD8xOmUgaW5zdGFuY2VvZiBQdHx8Im51bWJlciI9PXR5cGVvZiBuJiYic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2YgZT8tMToic3RyaW5nIj09dHlwZW9mIG4mJiJudW1i'@; put 'ZXIiPT10eXBlb2YgZT8xOiJzdHJpbmciPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2YgZT8tMToxfWNsYXNzIFpXZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmRlcGVuZGVuY3lHcmFwaD1lfWFkdmFuY2VkRmluZChlLHQpe2xldCByO2NvbnN0IGk9dC5yYW5nZTtyPXZvaWQgMD09PWk/dC52'@; put 'YWx1ZXNGcm9tVG9wTGVmdENvcm5lcigpOnRoaXMuZGVwZW5kZW5jeUdyYXBoLmNvbXB1dGVMaXN0T2ZWYWx1ZXNJblJhbmdlKGkpO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKWlmKGUoTG8ocltvXSkpKXJldHVybiBvO3JldHVybi0xfWJhc2ljRmluZChlLHQscix7b3JkZXJpbmc6aSxt'@; put 'YXRjaEV4YWN0bHk6b30pe2NvbnN0IGE9InN0cmluZyI9PXR5cGVvZiBlP2ZQKGUpOmUsbD10LnJhbmdlO3JldHVybiB2b2lkIDA9PT1sP3RoaXMuZmluZE5vcm1hbGl6ZWRWYWx1ZShhLHQudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSk6Im5vbmUiPT09aT90aGlzLmZpbmROb3JtYWxpemVk'@; put 'VmFsdWUoYSx0aGlzLmRlcGVuZGVuY3lHcmFwaC5jb21wdXRlTGlzdE9mVmFsdWVzSW5SYW5nZShsKSk6ZnVuY3Rpb24gVnRuKG4sZSx7c2VhcmNoQ29vcmRpbmF0ZTp0LG9yZGVyaW5nRGlyZWN0aW9uOnIsbWF0Y2hFeGFjdGx5Oml9LG8pe2NvbnN0IGE9ZS5zdGFydFt0XSxsPSJjb2wiPT09'@; put 'dD9lLmVmZmVjdGl2ZUVuZENvbHVtbihvKTplLmVmZmVjdGl2ZUVuZFJvdyhvKSx1PSJjb2wiPT09dD9aPT5MbyhvLmdldENlbGxWYWx1ZShCbyhlLnNoZWV0LFosZS5zdGFydC5yb3cpKSk6Wj0+TG8oby5nZXRDZWxsVmFsdWUoQm8oZS5zaGVldCxlLnN0YXJ0LmNvbCxaKSkpLGc9ImFzYyI9'@; put 'PT1yPyhaLGVlKT0+SnEoWixlZSk6KFosZWUpPT4tSnEoWixlZSksRT1mdW5jdGlvbiBZV2UobixlLHQpe2xldCByPWUsaT10O2Zvcig7cjxpOyl7Y29uc3Qgbz1NYXRoLmNlaWwoKHIraSkvMik7bihvKT9yPW86aT1vLTF9cmV0dXJuIHI9PT1pJiZuKHIpP3I6LTF9KFo9Pmcobix1KFopKT49'@; put 'MCxhLGwpLE89dShFKTtyZXR1cm4tMT09PUV8fHR5cGVvZiBPIT10eXBlb2Ygbnx8aSYmTyE9PW4/LTE6RS1hfShhLGwse3NlYXJjaENvb3JkaW5hdGU6cixvcmRlcmluZ0RpcmVjdGlvbjppLG1hdGNoRXhhY3RseTpvfSx0aGlzLmRlcGVuZGVuY3lHcmFwaCl9ZmluZE5vcm1hbGl6ZWRWYWx1'@; put 'ZShlLHQpe3JldHVybiB0Lm1hcChMbykubWFwKHI9PiJzdHJpbmciPT10eXBlb2Ygcj9mUChyKTpyKS5pbmRleE9mKGUpfX1jbGFzcyBHV2UgZXh0ZW5kcyBaV2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5kZXBlbmRlbmN5R3JhcGg9ZX1hZGQoZSx0KXt9cmVtb3ZlKGUsdCl7fWNo'@; put 'YW5nZShlLHQscil7fWFwcGx5Q2hhbmdlcyhlKXt9YWRkQ29sdW1ucyhlKXt9cmVtb3ZlQ29sdW1ucyhlKXt9cmVtb3ZlU2hlZXQoZSl7fW1vdmVWYWx1ZXMoZSx0LHIsaSl7fXJlbW92ZVZhbHVlcyhlKXt9ZmluZChlLHQscil7cmV0dXJuIHRoaXMuYmFzaWNGaW5kKGUsdCwicm93IixyKX19'@; put 'Y2xhc3MgRkN7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuZGVwZW5kZW5jeUdyYXBoPWUsdGhpcy5jb25maWc9dCx0aGlzLnN0YXRzPXIsdGhpcy5pbmRleD1uZXcgTWFwLHRoaXMudHJhbnNmb3JtaW5nU2VydmljZT10aGlzLmRlcGVuZGVuY3lHcmFwaC5sYXppbHlUcmFuc2Zvcm1pbmdBc3RT'@; put 'ZXJ2aWNlLHRoaXMuYmluYXJ5U2VhcmNoU3RyYXRlZ3k9bmV3IEdXZShlKX1hZGQoZSx0KXtpZighKGU9PT1sbHx8ZSBpbnN0YW5jZW9mIFB0KSlpZihlIGluc3RhbmNlb2YgbGEpZm9yKGNvbnN0W3IsaV1vZiBlLmVudHJpZXNGcm9tVG9wTGVmdENvcm5lcih0KSl0aGlzLmFkZFNpbmdsZUNl'@; put 'bGxWYWx1ZShMbyhyKSxpKTtlbHNlIHRoaXMuYWRkU2luZ2xlQ2VsbFZhbHVlKGUsdCl9cmVtb3ZlKGUsdCl7aWYodm9pZCAwIT09ZSlpZihlIGluc3RhbmNlb2YgbGEpZm9yKGNvbnN0W3IsaV1vZiBlLmVudHJpZXNGcm9tVG9wTGVmdENvcm5lcih0KSl0aGlzLnJlbW92ZVNpbmdsZVZhbHVl'@; put 'KExvKHIpLGkpO2Vsc2UgdGhpcy5yZW1vdmVTaW5nbGVWYWx1ZShlLHQpfWNoYW5nZShlLHQscil7ZSE9PXQmJih0aGlzLnJlbW92ZShlLHIpLHRoaXMuYWRkKHQscikpfWFwcGx5Q2hhbmdlcyhlKXtmb3IoY29uc3QgdCBvZiBlKXZvaWQgMCE9PXQub2xkVmFsdWUmJnRoaXMuY2hhbmdlKExv'@; put 'KHQub2xkVmFsdWUpLExvKHQudmFsdWUpLHQuYWRkcmVzcyl9bW92ZVZhbHVlcyhlLHQscixpKXtmb3IoY29uc3RbbyxhXW9mIGUpe2NvbnN0IGw9Skp0KGEsaSx0LHIpO3RoaXMucmVtb3ZlKG8sYSksdGhpcy5hZGQobyxsKX19cmVtb3ZlVmFsdWVzKGUpe2Zvcihjb25zdFt0LHJdb2YgZSl0'@; put 'aGlzLnJlbW92ZSh0LHIpfWZpbmQoZSx0LHtvcmRlcmluZzpyLG1hdGNoRXhhY3RseTppfSl7Y29uc3QgYT10aGlzLmZpbmRVc2luZ0NvbHVtbkluZGV4KGUsdCwhMD09PWk/ImZpbmRGaXJzdCI6ImZpbmRMYXN0Iik7cmV0dXJuIHZvaWQgMCE9PWE/YTp0aGlzLmJpbmFyeVNlYXJjaFN0cmF0'@; put 'ZWd5LmZpbmQoZSx0LHtvcmRlcmluZzpyLG1hdGNoRXhhY3RseTppfSl9ZmluZFVzaW5nQ29sdW1uSW5kZXgoZSx0LHIpe2NvbnN0IGk9dC5yYW5nZTtpZih2b2lkIDA9PT1pKXJldHVybjt0aGlzLmVuc3VyZVJlY2VudERhdGEoaS5zaGVldCxpLnN0YXJ0LmNvbCxlKTtjb25zdCBvPXRoaXMu'@; put 'Z2V0Q29sdW1uTWFwKGkuc2hlZXQsaS5zdGFydC5jb2wpO2lmKCFvKXJldHVybi0xO2NvbnN0IGE9InN0cmluZyI9PXR5cGVvZiBlP2ZQKGUpOmUsbD1vLmdldChhKTtpZighbHx8IWwuaW5kZXh8fDA9PT1sLmluZGV4Lmxlbmd0aClyZXR1cm47Y29uc3QgdT1GQy5maW5kUm93QmVsb25naW5n'@; put 'VG9SYW5nZShsLGkscik7cmV0dXJuIHZvaWQgMCE9PXU/dS1pLnN0YXJ0LnJvdzp2b2lkIDB9c3RhdGljIGZpbmRSb3dCZWxvbmdpbmdUb1JhbmdlKGUsdCxyKXtjb25zdCBpPXQuc3RhcnQucm93LG89dC5lbmQucm93LGE9ImZpbmRGaXJzdCI9PT1yP1BDKGksZS5pbmRleCwidXBwZXJCb3Vu'@; put 'ZCIpOlBDKG8sZS5pbmRleCwibG93ZXJCb3VuZCIpO2lmKC0xPT09YSlyZXR1cm47Y29uc3QgbD1lLmluZGV4W2FdO3JldHVybiBsPj1pJiZsPD1vP2w6dm9pZCAwfWFkdmFuY2VkRmluZChlLHQpe3JldHVybiB0aGlzLmJpbmFyeVNlYXJjaFN0cmF0ZWd5LmFkdmFuY2VkRmluZChlLHQpfWFk'@; put 'ZENvbHVtbnMoZSl7Y29uc3QgdD10aGlzLmluZGV4LmdldChlLnNoZWV0KTt0JiZ0LnNwbGljZShlLmNvbHVtblN0YXJ0LDAsLi4uQXJyYXkoZS5udW1iZXJPZkNvbHVtbnMpKX1yZW1vdmVDb2x1bW5zKGUpe2NvbnN0IHQ9dGhpcy5pbmRleC5nZXQoZS5zaGVldCk7dCYmdC5zcGxpY2UoZS5j'@; put 'b2x1bW5TdGFydCxlLm51bWJlck9mQ29sdW1ucyl9cmVtb3ZlU2hlZXQoZSl7dGhpcy5pbmRleC5kZWxldGUoZSl9Z2V0Q29sdW1uTWFwKGUsdCl7dGhpcy5pbmRleC5oYXMoZSl8fHRoaXMuaW5kZXguc2V0KGUsW10pO2NvbnN0IHI9dGhpcy5pbmRleC5nZXQoZSk7bGV0IGk9clt0XTtyZXR1'@; put 'cm4gaXx8KGk9bmV3IE1hcCxyW3RdPWkpLGl9Z2V0VmFsdWVJbmRleChlLHQscil7Y29uc3QgaT10aGlzLmdldENvbHVtbk1hcChlLHQpO2xldCBvPXRoaXMuZ2V0Q29sdW1uTWFwKGUsdCkuZ2V0KHIpO3JldHVybiBvfHwobz17dmVyc2lvbjp0aGlzLnRyYW5zZm9ybWluZ1NlcnZpY2UudmVy'@; put 'c2lvbigpLGluZGV4OltdfSxpLnNldChyLG8pKSxvfWVuc3VyZVJlY2VudERhdGEoZSx0LHIpe2NvbnN0IGk9dGhpcy5nZXRWYWx1ZUluZGV4KGUsdCxyKSxvPXRoaXMudHJhbnNmb3JtaW5nU2VydmljZS52ZXJzaW9uKCk7aWYoaS52ZXJzaW9uPT09bylyZXR1cm47Y29uc3QgYT10aGlzLnRy'@; put 'YW5zZm9ybWluZ1NlcnZpY2UuZ2V0VHJhbnNmb3JtYXRpb25zRnJvbShpLnZlcnNpb24sbD0+bC5zaGVldD09PWUmJihsIGluc3RhbmNlb2YgaG1lfHxsIGluc3RhbmNlb2YgZm1lKSk7Zm9yKGNvbnN0IGwgb2YgYSlsIGluc3RhbmNlb2YgaG1lP3RoaXMuYWRkUm93cyh0LGwucm93c1NwYW4s'@; put 'cik6bCBpbnN0YW5jZW9mIGZtZSYmdGhpcy5yZW1vdmVSb3dzKHQsbC5yb3dzU3BhbixyKTtpLnZlcnNpb249b31hZGRTaW5nbGVDZWxsVmFsdWUoZSx0KXt0aGlzLnN0YXRzLm1lYXN1cmUoQXMuQlVJTERfQ09MVU1OX0lOREVYLCgpPT57dGhpcy5lbnN1cmVSZWNlbnREYXRhKHQuc2hlZXQs'@; put 'dC5jb2wsZSksInN0cmluZyI9PXR5cGVvZiBlJiYoZT1mUChlKSk7Y29uc3Qgcj10aGlzLmdldFZhbHVlSW5kZXgodC5zaGVldCx0LmNvbCxlKTtGQy5hZGRWYWx1ZShyLHQucm93KX0pfXJlbW92ZVNpbmdsZVZhbHVlKGUsdCl7dGhpcy5zdGF0cy5tZWFzdXJlKEFzLkJVSUxEX0NPTFVNTl9J'@; put 'TkRFWCwoKT0+e3RoaXMuZW5zdXJlUmVjZW50RGF0YSh0LnNoZWV0LHQuY29sLGUpO2NvbnN0IHI9dGhpcy5nZXRDb2x1bW5NYXAodC5zaGVldCx0LmNvbCk7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1mUChlKSk7Y29uc3QgaT1yLmdldChlKTtpZighaSlyZXR1cm47Y29uc3Qgbz1QQyh0LnJv'@; put 'dyxpLmluZGV4KTtvPi0xJiZpLmluZGV4LnNwbGljZShvLDEpLDA9PT1pLmluZGV4Lmxlbmd0aCYmci5kZWxldGUoZSksMD09PXIuc2l6ZSYmZGVsZXRlIHRoaXMuaW5kZXguZ2V0KHQuc2hlZXQpW3QuY29sXX0pfWFkZFJvd3MoZSx0LHIpe2NvbnN0IGk9dGhpcy5nZXRWYWx1ZUluZGV4KHQu'@; put 'c2hlZXQsZSxyKTtGQy5zaGlmdFJvd3MoaSx0LnJvd1N0YXJ0LHQubnVtYmVyT2ZSb3dzKX1yZW1vdmVSb3dzKGUsdCxyKXtjb25zdCBpPXRoaXMuZ2V0VmFsdWVJbmRleCh0LnNoZWV0LGUscik7RkMucmVtb3ZlUm93c0Zyb21WYWx1ZXMoaSx0KSxGQy5zaGlmdFJvd3MoaSx0LnJvd0VuZCsx'@; put 'LC10Lm51bWJlck9mUm93cyl9c3RhdGljIGFkZFZhbHVlKGUsdCl7Y29uc3Qgcj1QQyh0LGUuaW5kZXgsImxvd2VyQm91bmQiKTtlLmluZGV4W3JdPT09dHx8ZS5pbmRleC5zcGxpY2UocisxLDAsdCl9c3RhdGljIHJlbW92ZVJvd3NGcm9tVmFsdWVzKGUsdCl7Y29uc3Qgcj1QQyh0LnJvd1N0'@; put 'YXJ0LGUuaW5kZXgsInVwcGVyQm91bmQiKSxpPVBDKHQucm93RW5kLGUuaW5kZXgsImxvd2VyQm91bmQiKTtyPi0xJiZpPi0xJiZyPD1pJiZlLmluZGV4W3JdPD10LnJvd0VuZCYmZS5pbmRleC5zcGxpY2UocixpLXIrMSl9c3RhdGljIHNoaWZ0Um93cyhlLHQscil7Y29uc3QgaT1QQyh0LGUu'@; put 'aW5kZXgsInVwcGVyQm91bmQiKTtpZigtMSE9PWkpZm9yKGxldCBvPWk7bzxlLmluZGV4Lmxlbmd0aDsrK28pZS5pbmRleFtvXSs9cn19ZnVuY3Rpb24gUEMobixlLHQ9InVwcGVyQm91bmQiKXtsZXQgcj0wLGk9ZS5sZW5ndGgtMTtmb3IoO3I8PWk7KXtjb25zdCBsPU1hdGguZmxvb3IoKHIr'@; put 'aSkvMik7aWYobj5lW2xdKXI9bCsxO2Vsc2V7aWYoIShuPGVbbF0pKXJldHVybiBsO2k9bC0xfX1jb25zdCBvPSJsb3dlckJvdW5kIj09PXQ/aTpyO3JldHVybiBvPj0wJiZvPD1lLmxlbmd0aD9vOi0xfWNsYXNzIGp0bntjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbmZpZz1lO2NvbnN0IHQ9Ii4i'@; put 'PT09dGhpcy5jb25maWcudGhvdXNhbmRTZXBhcmF0b3I/YFxcJHt0aGlzLmNvbmZpZy50aG91c2FuZFNlcGFyYXRvcn1gOnRoaXMuY29uZmlnLnRob3VzYW5kU2VwYXJhdG9yLHI9Ii4iPT09dGhpcy5jb25maWcuZGVjaW1hbFNlcGFyYXRvcj9gXFwke3RoaXMuY29uZmlnLmRlY2ltYWxTZXBh'@; put 'cmF0b3J9YDp0aGlzLmNvbmZpZy5kZWNpbWFsU2VwYXJhdG9yO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgUmVnRXhwKGBeKFsrLV0/KCgke3J9XFxkKyl8KFxcZCsoJHt0fVxcZHszLH0pKigke3J9XFxkKik/KSkpKGVbKy1dP1xcZCspPyRgKSx0aGlzLmFsbFRob3VzYW5kU2VwYXJhdG9yc1Jl'@; put 'Z2V4PW5ldyBSZWdFeHAoYCR7dH1gLCJnIil9bnVtZXJpY1N0cmluZ1RvTWF5YmVOdW1iZXIoZSl7aWYodGhpcy5udW1iZXJQYXR0ZXJuLnRlc3QoZSkpe2NvbnN0IHQ9dGhpcy5udW1lcmljU3RyaW5nVG9OdW1iZXIoZSk7cmV0dXJuIGlzTmFOKHQpP3ZvaWQgMDp0fX1udW1lcmljU3RyaW5n'@; put 'VG9OdW1iZXIoZSl7Y29uc3QgdD1lLnJlcGxhY2UodGhpcy5hbGxUaG91c2FuZFNlcGFyYXRvcnNSZWdleCwiIikucmVwbGFjZSh0aGlzLmNvbmZpZy5kZWNpbWFsU2VwYXJhdG9yLCIuIik7cmV0dXJuIE51bWJlcih0KX19Y2xhc3MgZ21le2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmRlcGVu'@; put 'ZGVuY3lHcmFwaD1lLHRoaXMudW5wYXJzZXI9dCx0aGlzLmV4cG9ydGVyPXJ9Z2V0Q2VsbEh5cGVybGluayhlKXtjb25zdCB0PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldENlbGwoZSk7aWYodCBpbnN0YW5jZW9mIGo2KXtjb25zdCByPXQuZ2V0Rm9ybXVsYSh0aGlzLmRlcGVuZGVuY3lHcmFw'@; put 'aC5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKTtpZigiSFlQRVJMSU5LIj09PXIucHJvY2VkdXJlTmFtZSlyZXR1cm4gci5oeXBlcmxpbmt9fWdldENlbGxGb3JtdWxhKGUsdCl7Y29uc3Qgcj10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsKGUpO2lmKHIgaW5zdGFuY2VvZiBqNil7'@; put 'Y29uc3QgaT1yLmdldEZvcm11bGEodGhpcy5kZXBlbmRlbmN5R3JhcGgubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSk7cmV0dXJuIHRoaXMudW5wYXJzZXIudW5wYXJzZShpLHQ9dD8/ZSl9aWYociBpbnN0YW5jZW9mICRoKXtjb25zdCBpPXIuZ2V0QWRkcmVzcyh0aGlzLmRlcGVuZGVu'@; put 'Y3lHcmFwaC5sYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKTtpZihpLnJvdyE9PWUucm93fHxpLmNvbCE9PWUuY29sfHxpLnNoZWV0IT09ZS5zaGVldClyZXR1cm47dD10Pz9lO2NvbnN0IG89ci5nZXRGb3JtdWxhKHRoaXMuZGVwZW5kZW5jeUdyYXBoLmxhemlseVRyYW5zZm9ybWluZ0Fz'@; put 'dFNlcnZpY2UpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHRoaXMudW5wYXJzZXIudW5wYXJzZShvLHQpfWVsc2UgaWYociBpbnN0YW5jZW9mIGlBKXJldHVybiByLmdldEZvcm11bGEoKX1nZXRDZWxsU2VyaWFsaXplZChlLHQpe3ZhciByO3JldHVybiBudWxsIT09KHI9dGhpcy5nZXRDZWxsRm9y'@; put 'bXVsYShlLHQpKSYmdm9pZCAwIT09cj9yOnRoaXMuZ2V0UmF3VmFsdWUoZSl9Z2V0Q2VsbFZhbHVlKGUpe3JldHVybiB0aGlzLmV4cG9ydGVyLmV4cG9ydFZhbHVlKHRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldFNjYWxhclZhbHVlKGUpKX1nZXRSYXdWYWx1ZShlKXtyZXR1cm4gdGhpcy5kZXBl'@; put 'bmRlbmN5R3JhcGguZ2V0UmF3VmFsdWUoZSl9Z2V0U2hlZXRWYWx1ZXMoZSl7cmV0dXJuIHRoaXMuZ2VuZXJpY1NoZWV0R2V0dGVyKGUsdD0+dGhpcy5nZXRDZWxsVmFsdWUodCkpfWdldFNoZWV0Rm9ybXVsYXMoZSl7cmV0dXJuIHRoaXMuZ2VuZXJpY1NoZWV0R2V0dGVyKGUsdD0+dGhpcy5n'@; put 'ZXRDZWxsRm9ybXVsYSh0KSl9Z2VuZXJpY1NoZWV0R2V0dGVyKGUsdCl7Y29uc3Qgcj10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldEhlaWdodChlKSxpPXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldFNoZWV0V2lkdGgoZSksbz1uZXcgQXJyYXkocik7Zm9yKGxldCBhPTA7YTxyO2ErKyl7'@; put 'b1thXT1uZXcgQXJyYXkoaSk7Zm9yKGxldCBsPTA7bDxpO2wrKyl7Y29uc3QgdT1CbyhlLGwsYSk7b1thXVtsXT10KHUpfWZvcihsZXQgbD1pLTE7bD49MCYmbnVsbD09b1thXVtsXTtsLS0pb1thXS5wb3AoKX1mb3IobGV0IGE9ci0xO2E+PTAmJjA9PT1vW2FdLmxlbmd0aDthLS0pby5wb3Ao'@; put 'KTtyZXR1cm4gb31nZW5lcmljQWxsU2hlZXRzR2V0dGVyKGUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IHIgb2YgdGhpcy5kZXBlbmRlbmN5R3JhcGguc2hlZXRNYXBwaW5nLmRpc3BsYXlOYW1lcygpKXtjb25zdCBpPXRoaXMuZGVwZW5kZW5jeUdyYXBoLnNoZWV0TWFwcGluZy5mZXRjaChyKTt0'@; put 'W3JdPWUoaSl9cmV0dXJuIHR9Z2V0U2hlZXRTZXJpYWxpemVkKGUpe3JldHVybiB0aGlzLmdlbmVyaWNTaGVldEdldHRlcihlLHQ9PnRoaXMuZ2V0Q2VsbFNlcmlhbGl6ZWQodCkpfWdldEFsbFNoZWV0c1ZhbHVlcygpe3JldHVybiB0aGlzLmdlbmVyaWNBbGxTaGVldHNHZXR0ZXIoZT0+dGhp'@; put 'cy5nZXRTaGVldFZhbHVlcyhlKSl9Z2V0QWxsU2hlZXRzRm9ybXVsYXMoKXtyZXR1cm4gdGhpcy5nZW5lcmljQWxsU2hlZXRzR2V0dGVyKGU9PnRoaXMuZ2V0U2hlZXRGb3JtdWxhcyhlKSl9Z2V0QWxsU2hlZXRzU2VyaWFsaXplZCgpe3JldHVybiB0aGlzLmdlbmVyaWNBbGxTaGVldHNHZXR0'@; put 'ZXIoZT0+dGhpcy5nZXRTaGVldFNlcmlhbGl6ZWQoZSkpfWdldEFsbE5hbWVkRXhwcmVzc2lvbnNTZXJpYWxpemVkKCl7Y29uc3QgZT1bXTtsZXQgdD0wO2Zvcihjb25zdCByIG9mIHRoaXMuZGVwZW5kZW5jeUdyYXBoLnNoZWV0TWFwcGluZy5kaXNwbGF5TmFtZXMoKSl7Y29uc3QgaT10aGlz'@; put 'LmRlcGVuZGVuY3lHcmFwaC5zaGVldE1hcHBpbmcuZmV0Y2gocik7ZVtpXT10LHQrK31yZXR1cm4gdGhpcy5kZXBlbmRlbmN5R3JhcGgubmFtZWRFeHByZXNzaW9ucy5nZXRBbGxOYW1lZEV4cHJlc3Npb25zKCkubWFwKHI9Pih7bmFtZTpyLmV4cHJlc3Npb24uZGlzcGxheU5hbWUsZXhwcmVz'@; put 'c2lvbjp0aGlzLmdldENlbGxTZXJpYWxpemVkKHIuZXhwcmVzc2lvbi5hZGRyZXNzKSxzY29wZTp2b2lkIDAhPT1yLnNjb3BlP2Vbci5zY29wZV06dm9pZCAwLG9wdGlvbnM6ci5leHByZXNzaW9uLm9wdGlvbnN9KSl9d2l0aE5ld0NvbmZpZyhlLHQpe2NvbnN0IHI9bmV3IFF6ZShlLHpnZShl'@; put 'KSx0aGlzLmRlcGVuZGVuY3lHcmFwaC5zaGVldE1hcHBpbmcuZmV0Y2hEaXNwbGF5TmFtZSx0KTtyZXR1cm4gbmV3IGdtZSh0aGlzLmRlcGVuZGVuY3lHcmFwaCxyLHRoaXMuZXhwb3J0ZXIpfX1jbGFzcyBlS3tzdGF0aWMgYnVpbGRGcm9tU2hlZXRzKGUsdD17fSxyPVtdKXtjb25zdCBpPW5l'@; put 'dyBoMih0KTtyZXR1cm4gdGhpcy5idWlsZEVuZ2luZShpLGUscil9c3RhdGljIGJ1aWxkRnJvbVNoZWV0KGUsdD17fSxyPVtdKXtjb25zdCBpPW5ldyBoMih0KSxvPWkudHJhbnNsYXRpb25QYWNrYWdlLmdldFVJVHJhbnNsYXRpb24oTnEuTkVXX1NIRUVUX1BSRUZJWCkrIjEiO3JldHVybiB0'@; put 'aGlzLmJ1aWxkRW5naW5lKGkse1tvXTplfSxyKX1zdGF0aWMgYnVpbGRFbXB0eShlPXt9LHQ9W10pe3JldHVybiB0aGlzLmJ1aWxkRW5naW5lKG5ldyBoMihlKSx7fSx0KX1zdGF0aWMgcmVidWlsZFdpdGhDb25maWcoZSx0LHIsaSl7cmV0dXJuIHRoaXMuYnVpbGRFbmdpbmUoZSx0LHIsaSl9'@; put 'c3RhdGljIGJ1aWxkRW5naW5lKGUsdD17fSxyPVtdLGk9KGUudXNlU3RhdHM/bmV3IHRXZTpuZXcgZ0p0KSl7aS5zdGFydChBcy5CVUlMRF9FTkdJTkVfVE9UQUwpO2NvbnN0IG89bmV3IFlxLGE9bmV3IHIwKGUpLGw9bmV3IEh0bihpKSx1PVFnZS5idWlsZEVtcHR5KGwsZSxhLG8saSksZz1m'@; put 'dW5jdGlvbiBCdG4obixlLHQpe3JldHVybiBlLnVzZUNvbHVtbkluZGV4P25ldyBGQyhuLGUsdCk6bmV3IEdXZShuKX0odSxlLGkpLEU9dS5zaGVldE1hcHBpbmcsTz11LmFkZHJlc3NNYXBwaW5nO2Zvcihjb25zdCAkbiBpbiB0KWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku'@; put 'Y2FsbCh0LCRuKSl7Y29uc3QgVHI9dFskbl07SFdlKFRyKTtjb25zdCByaT1acShUcik7aWYocmkuaGVpZ2h0PmUubWF4Um93c3x8cmkud2lkdGg+ZS5tYXhDb2x1bW5zKXRocm93IG5ldyB0QTtjb25zdCBmbj1FLmFkZFNoZWV0KCRuKTtPLmF1dG9BZGRTaGVldChmbixyaSl9Y29uc3QgWj1u'@; put 'ZXcgclAoZSxhLEUuZ2V0KTtsLnBhcnNlcj1aO2NvbnN0IGVlPW5ldyBRemUoZSx6Z2UoZSksRS5mZXRjaERpc3BsYXlOYW1lLG8pLHZlPW5ldyBFZW4oZSksTWU9bmV3IGp0bihlKSxIZT1uZXcgYWVuKGUsdmUsTWUpLFdlPW5ldyBZZW4oZSx2ZSxNZSksYXQ9bmV3IGZlbihlLGEpLEN0PW5l'@; put 'dyBldG4oZSx1LGcsV2UsWixpLGwsbyxhdCksQXQ9bmV3IEN0bihlLEN0KTtsLnVuZG9SZWRvPUF0O2NvbnN0IEt0PW5ldyBaZW4oZSx1LEN0KSxxdD1uZXcgU3RuKGUsQ3QsQXQsS3QsdSxnLFosV2UsbCxvKTtyLmZvckVhY2goJG49PntxdC5lbnN1cmVJdElzUG9zc2libGVUb0FkZE5hbWVk'@; put 'RXhwcmVzc2lvbigkbi5uYW1lLCRuLmV4cHJlc3Npb24sJG4uc2NvcGUpLHF0Lm9wZXJhdGlvbnMuYWRkTmFtZWRFeHByZXNzaW9uKCRuLm5hbWUsJG4uZXhwcmVzc2lvbiwkbi5zY29wZSwkbi5vcHRpb25zKX0pO2NvbnN0IGduPW5ldyB4dG4oZSxvLEUuZmV0Y2hEaXNwbGF5TmFtZSxsKSxU'@; put 'bj1uZXcgZ21lKHUsZWUsZ24pLENuPW5ldyBOdG4oZSx1LGcsaSxIZSxhLG8sVG4sYXQsdmUpO2kubWVhc3VyZShBcy5HUkFQSF9CVUlMRCwoKT0+e25ldyBBdG4odSxnLFosV2UsaSxhdCkuYnVpbGRHcmFwaCh0LGkpfSk7Y29uc3QgcXI9bmV3IEV0bihlLGksQ24sbCx1LGcpO3JldHVybiBx'@; put 'ci5ydW4oKSxpLmVuZChBcy5CVUlMRF9FTkdJTkVfVE9UQUwpLHtjb25maWc6ZSxzdGF0czppLGRlcGVuZGVuY3lHcmFwaDp1LGNvbHVtblNlYXJjaDpnLHBhcnNlcjpaLHVucGFyc2VyOmVlLGNlbGxDb250ZW50UGFyc2VyOldlLGV2YWx1YXRvcjpxcixsYXppbHlUcmFuc2Zvcm1pbmdBc3RT'@; put 'ZXJ2aWNlOmwsY3J1ZE9wZXJhdGlvbnM6cXQsZXhwb3J0ZXI6Z24sbmFtZWRFeHByZXNzaW9uczpvLHNlcmlhbGl6YXRpb246VG4sZnVuY3Rpb25SZWdpc3RyeTphfX19ZnVuY3Rpb24genRuKG4pe3JldHVybigpPT57dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7bn0iIG1ldGhvZCBjYW5ub3Qg'@; put 'YmUgY2FsbGVkIGJlY2F1c2UgdGhpcyBIeXBlckZvcm11bGEgaW5zdGFuY2UgaGFzIGJlZW4gZGVzdHJveWVkYCl9fXZhciBXdG49aCg1MTQyNSksYzk9ZnVuY3Rpb24obil7cmV0dXJuIG4uU2hlZXRBZGRlZD0ic2hlZXRBZGRlZCIsbi5TaGVldFJlbW92ZWQ9InNoZWV0UmVtb3ZlZCIsbi5T'@; put 'aGVldFJlbmFtZWQ9InNoZWV0UmVuYW1lZCIsbi5OYW1lZEV4cHJlc3Npb25BZGRlZD0ibmFtZWRFeHByZXNzaW9uQWRkZWQiLG4uTmFtZWRFeHByZXNzaW9uUmVtb3ZlZD0ibmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsbi5WYWx1ZXNVcGRhdGVkPSJ2YWx1ZXNVcGRhdGVkIixuLkV2YWx1YXRp'@; put 'b25TdXNwZW5kZWQ9ImV2YWx1YXRpb25TdXNwZW5kZWQiLG4uRXZhbHVhdGlvblJlc3VtZWQ9ImV2YWx1YXRpb25SZXN1bWVkIixufShjOXx8e30pO2NsYXNzIFl0biBleHRlbmRzIFd0bi5UaW55RW1pdHRlcntlbWl0KGUsLi4udCl7cmV0dXJuIHN1cGVyLmVtaXQoZSwuLi50KSx0aGlzfX1j'@; put 'bGFzcyBkZntjb25zdHJ1Y3RvcihlLHQscixpLG8sYSxsLHUsZyxFLE8sWixlZSx2ZSl7dGhpcy5fY29uZmlnPWUsdGhpcy5fc3RhdHM9dCx0aGlzLl9kZXBlbmRlbmN5R3JhcGg9cix0aGlzLl9jb2x1bW5TZWFyY2g9aSx0aGlzLl9wYXJzZXI9byx0aGlzLl91bnBhcnNlcj1hLHRoaXMuX2Nl'@; put 'bGxDb250ZW50UGFyc2VyPWwsdGhpcy5fZXZhbHVhdG9yPXUsdGhpcy5fbGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZT1nLHRoaXMuX2NydWRPcGVyYXRpb25zPUUsdGhpcy5fZXhwb3J0ZXI9Tyx0aGlzLl9uYW1lZEV4cHJlc3Npb25zPVosdGhpcy5fc2VyaWFsaXphdGlvbj1lZSx0aGlz'@; put 'Ll9mdW5jdGlvblJlZ2lzdHJ5PXZlLHRoaXMuX2VtaXR0ZXI9bmV3IFl0bix0aGlzLl9ldmFsdWF0aW9uU3VzcGVuZGVkPSExfXN0YXRpYyBnZXQgZGVmYXVsdENvbmZpZygpe3JldHVybiBmdW5jdGlvbiBadG4oKXtyZXR1cm4gcVdlKHt9KX0oKX1nZXQgZ3JhcGgoKXtyZXR1cm4gdGhpcy5k'@; put 'ZXBlbmRlbmN5R3JhcGguZ3JhcGh9Z2V0IHJhbmdlTWFwcGluZygpe3JldHVybiB0aGlzLmRlcGVuZGVuY3lHcmFwaC5yYW5nZU1hcHBpbmd9Z2V0IGFycmF5TWFwcGluZygpe3JldHVybiB0aGlzLmRlcGVuZGVuY3lHcmFwaC5hcnJheU1hcHBpbmd9Z2V0IHNoZWV0TWFwcGluZygpe3JldHVy'@; put 'biB0aGlzLmRlcGVuZGVuY3lHcmFwaC5zaGVldE1hcHBpbmd9Z2V0IGFkZHJlc3NNYXBwaW5nKCl7cmV0dXJuIHRoaXMuZGVwZW5kZW5jeUdyYXBoLmFkZHJlc3NNYXBwaW5nfWdldCBkZXBlbmRlbmN5R3JhcGgoKXtyZXR1cm4gdGhpcy5fZGVwZW5kZW5jeUdyYXBofWdldCBldmFsdWF0b3Io'@; put 'KXtyZXR1cm4gdGhpcy5fZXZhbHVhdG9yfWdldCBjb2x1bW5TZWFyY2goKXtyZXR1cm4gdGhpcy5fY29sdW1uU2VhcmNofWdldCBsYXppbHlUcmFuc2Zvcm1pbmdBc3RTZXJ2aWNlKCl7cmV0dXJuIHRoaXMuX2xhemlseVRyYW5zZm9ybWluZ0FzdFNlcnZpY2V9Z2V0IGxpY2Vuc2VLZXlWYWxp'@; put 'ZGl0eVN0YXRlKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5saWNlbnNlS2V5VmFsaWRpdHlTdGF0ZX1zdGF0aWMgYnVpbGRGcm9tQXJyYXkoZSx0PXt9LHI9W10pe3JldHVybiB0aGlzLmJ1aWxkRnJvbUVuZ2luZVN0YXRlKGVLLmJ1aWxkRnJvbVNoZWV0KGUsdCxyKSl9c3RhdGljIGJ1aWxkRnJv'@; put 'bVNoZWV0cyhlLHQ9e30scj1bXSl7cmV0dXJuIHRoaXMuYnVpbGRGcm9tRW5naW5lU3RhdGUoZUsuYnVpbGRGcm9tU2hlZXRzKGUsdCxyKSl9c3RhdGljIGJ1aWxkRW1wdHkoZT17fSx0PVtdKXtyZXR1cm4gdGhpcy5idWlsZEZyb21FbmdpbmVTdGF0ZShlSy5idWlsZEVtcHR5KGUsdCkpfXN0'@; put 'YXRpYyBnZXRMYW5ndWFnZShlKXt0byhlLCJzdHJpbmciLCJsYW5ndWFnZUNvZGUiKTtjb25zdCB0PXRoaXMucmVnaXN0ZXJlZExhbmd1YWdlcy5nZXQoZSk7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgbldlO3JldHVybiB0fXN0YXRpYyByZWdpc3Rlckxhbmd1YWdlKGUsdCl7aWYodG8oZSwi'@; put 'c3RyaW5nIiwibGFuZ3VhZ2VDb2RlIiksdGhpcy5yZWdpc3RlcmVkTGFuZ3VhZ2VzLmhhcyhlKSl0aHJvdyBuZXcgSUp0O3RoaXMucmVnaXN0ZXJlZExhbmd1YWdlcy5zZXQoZSxmdW5jdGlvbiB6SnQobil7cmV0dXJuIG5ldyBVSnQoT2JqZWN0LmFzc2lnbih7fSxuLmZ1bmN0aW9ucyksT2Jq'@; put 'ZWN0LmFzc2lnbih7fSxuLmVycm9ycyksT2JqZWN0LmFzc2lnbih7fSxuLnVpKSl9KHQpKX1zdGF0aWMgdW5yZWdpc3Rlckxhbmd1YWdlKGUpe2lmKHRvKGUsInN0cmluZyIsImxhbmd1YWdlQ29kZSIpLCF0aGlzLnJlZ2lzdGVyZWRMYW5ndWFnZXMuaGFzKGUpKXRocm93IG5ldyBuV2U7dGhp'@; put 'cy5yZWdpc3RlcmVkTGFuZ3VhZ2VzLmRlbGV0ZShlKX1zdGF0aWMgZ2V0UmVnaXN0ZXJlZExhbmd1YWdlc0NvZGVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5yZWdpc3RlcmVkTGFuZ3VhZ2VzLmtleXMoKSl9c3RhdGljIHJlZ2lzdGVyRnVuY3Rpb25QbHVnaW4oZSx0KXtyMC5yZWdpc3Rl'@; put 'ckZ1bmN0aW9uUGx1Z2luKGUsdCl9c3RhdGljIHVucmVnaXN0ZXJGdW5jdGlvblBsdWdpbihlKXtyMC51bnJlZ2lzdGVyRnVuY3Rpb25QbHVnaW4oZSl9c3RhdGljIHJlZ2lzdGVyRnVuY3Rpb24oZSx0LHIpe3RvKGUsInN0cmluZyIsImZ1bmN0aW9uSWQiKSxyMC5yZWdpc3RlckZ1bmN0aW9u'@; put 'KGUsdCxyKX1zdGF0aWMgdW5yZWdpc3RlckZ1bmN0aW9uKGUpe3RvKGUsInN0cmluZyIsImZ1bmN0aW9uSWQiKSxyMC51bnJlZ2lzdGVyRnVuY3Rpb24oZSl9c3RhdGljIHVucmVnaXN0ZXJBbGxGdW5jdGlvbnMoKXtyMC51bnJlZ2lzdGVyQWxsKCl9c3RhdGljIGdldFJlZ2lzdGVyZWRGdW5j'@; put 'dGlvbk5hbWVzKGUpe3RvKGUsInN0cmluZyIsImNvZGUiKTtjb25zdCB0PXIwLmdldFJlZ2lzdGVyZWRGdW5jdGlvbklkcygpO3JldHVybiB0aGlzLmdldExhbmd1YWdlKGUpLmdldEZ1bmN0aW9uVHJhbnNsYXRpb25zKHQpfXN0YXRpYyBnZXRGdW5jdGlvblBsdWdpbihlKXtyZXR1cm4gdG8o'@; put 'ZSwic3RyaW5nIiwiZnVuY3Rpb25JZCIpLHIwLmdldEZ1bmN0aW9uUGx1Z2luKGUpfXN0YXRpYyBnZXRBbGxGdW5jdGlvblBsdWdpbnMoKXtyZXR1cm4gcjAuZ2V0UGx1Z2lucygpfXN0YXRpYyBidWlsZEZyb21FbmdpbmVTdGF0ZShlKXtyZXR1cm4gbmV3IGRmKGUuY29uZmlnLGUuc3RhdHMs'@; put 'ZS5kZXBlbmRlbmN5R3JhcGgsZS5jb2x1bW5TZWFyY2gsZS5wYXJzZXIsZS51bnBhcnNlcixlLmNlbGxDb250ZW50UGFyc2VyLGUuZXZhbHVhdG9yLGUubGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZSxlLmNydWRPcGVyYXRpb25zLGUuZXhwb3J0ZXIsZS5uYW1lZEV4cHJlc3Npb25zLGUu'@; put 'c2VyaWFsaXphdGlvbixlLmZ1bmN0aW9uUmVnaXN0cnkpfWdldENlbGxWYWx1ZShlKXtpZighRWgoZSkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsQWRkcmVzcyIsImNlbGxBZGRyZXNzIik7cmV0dXJuIHRoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVkKCksdGhpcy5fc2VyaWFs'@; put 'aXphdGlvbi5nZXRDZWxsVmFsdWUoZSl9Z2V0Q2VsbEZvcm11bGEoZSl7aWYoIUVoKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MiLCJjZWxsQWRkcmVzcyIpO3JldHVybiB0aGlzLl9zZXJpYWxpemF0aW9uLmdldENlbGxGb3JtdWxhKGUpfWdldENlbGxIeXBlcmxpbmsoZSl7'@; put 'aWYoIUVoKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MiLCJjZWxsQWRkcmVzcyIpO3JldHVybiB0aGlzLmVuc3VyZUV2YWx1YXRpb25Jc05vdFN1c3BlbmRlZCgpLHRoaXMuX3NlcmlhbGl6YXRpb24uZ2V0Q2VsbEh5cGVybGluayhlKX1nZXRDZWxsU2VyaWFsaXplZChlKXtp'@; put 'ZighRWgoZSkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsQWRkcmVzcyIsImNlbGxBZGRyZXNzIik7cmV0dXJuIHRoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVkKCksdGhpcy5fc2VyaWFsaXphdGlvbi5nZXRDZWxsU2VyaWFsaXplZChlKX1nZXRTaGVldFZhbHVlcyhlKXtyZXR1'@; put 'cm4gdG8oZSwibnVtYmVyIiwic2hlZXRJZCIpLHRoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVkKCksdGhpcy5fc2VyaWFsaXphdGlvbi5nZXRTaGVldFZhbHVlcyhlKX1nZXRTaGVldEZvcm11bGFzKGUpe3JldHVybiB0byhlLCJudW1iZXIiLCJzaGVldElkIiksdGhpcy5fc2Vy'@; put 'aWFsaXphdGlvbi5nZXRTaGVldEZvcm11bGFzKGUpfWdldFNoZWV0U2VyaWFsaXplZChlKXtyZXR1cm4gdG8oZSwibnVtYmVyIiwic2hlZXRJZCIpLHRoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVkKCksdGhpcy5fc2VyaWFsaXphdGlvbi5nZXRTaGVldFNlcmlhbGl6ZWQoZSl9'@; put 'Z2V0QWxsU2hlZXRzRGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9zZXJpYWxpemF0aW9uLmdlbmVyaWNBbGxTaGVldHNHZXR0ZXIoZT0+dGhpcy5nZXRTaGVldERpbWVuc2lvbnMoZSkpfWdldFNoZWV0RGltZW5zaW9ucyhlKXtyZXR1cm4gdG8oZSwibnVtYmVyIiwic2hlZXRJZCIpLHt3aWR0'@; put 'aDp0aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldFdpZHRoKGUpLGhlaWdodDp0aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRTaGVldEhlaWdodChlKX19Z2V0QWxsU2hlZXRzVmFsdWVzKCl7cmV0dXJuIHRoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVkKCksdGhpcy5fc2VyaWFs'@; put 'aXphdGlvbi5nZXRBbGxTaGVldHNWYWx1ZXMoKX1nZXRBbGxTaGVldHNGb3JtdWxhcygpe3JldHVybiB0aGlzLl9zZXJpYWxpemF0aW9uLmdldEFsbFNoZWV0c0Zvcm11bGFzKCl9Z2V0QWxsU2hlZXRzU2VyaWFsaXplZCgpe3JldHVybiB0aGlzLmVuc3VyZUV2YWx1YXRpb25Jc05vdFN1c3Bl'@; put 'bmRlZCgpLHRoaXMuX3NlcmlhbGl6YXRpb24uZ2V0QWxsU2hlZXRzU2VyaWFsaXplZCgpfXVwZGF0ZUNvbmZpZyhlKXtPYmplY3QuZW50cmllcyhlKS5ldmVyeSgoW3IsaV0pPT50aGlzLl9jb25maWdbcl09PT1pKXx8dGhpcy5yZWJ1aWxkV2l0aENvbmZpZyhlKX1nZXRDb25maWcoKXtyZXR1'@; put 'cm4gdGhpcy5fY29uZmlnLmdldENvbmZpZygpfXJlYnVpbGRBbmRSZWNhbGN1bGF0ZSgpe3RoaXMucmVidWlsZFdpdGhDb25maWcoe30pfWdldFN0YXRzKCl7cmV0dXJuIHRoaXMuX3N0YXRzLnNuYXBzaG90KCl9dW5kbygpe3JldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy51bmRvKCksdGhp'@; put 'cy5yZWNvbXB1dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1yZWRvKCl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRpb25zLnJlZG8oKSx0aGlzLnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpfWlzVGhlcmVTb21ldGhpbmdUb1VuZG8oKXtyZXR1cm4gdGhpcy5fY3J1ZE9w'@; put 'ZXJhdGlvbnMuaXNUaGVyZVNvbWV0aGluZ1RvVW5kbygpfWlzVGhlcmVTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuaXNUaGVyZVNvbWV0aGluZ1RvUmVkbygpfWlzSXRQb3NzaWJsZVRvU2V0Q2VsbENvbnRlbnRzKGUpe2xldCB0O2lmKEVoKGUpKXQ9bmV3'@; put 'IGJhKGUsZSk7ZWxzZXtpZighdmcoZSkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsQWRkcmVzcyB8IFNpbXBsZUNlbGxSYW5nZSIsImFkZHJlc3MiKTt0PW5ldyBiYShlLnN0YXJ0LGUuZW5kKX10cnl7dGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlUmFuZ2VJblNpemVMaW1pdHModCk7Zm9y'@; put 'KGNvbnN0IHIgb2YgdC5hZGRyZXNzZXModGhpcy5fZGVwZW5kZW5jeUdyYXBoKSl0aGlzLl9jcnVkT3BlcmF0aW9ucy5lbnN1cmVJdElzUG9zc2libGVUb0NoYW5nZUNvbnRlbnQocil9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9c2V0Q2VsbENvbnRlbnRzKGUsdCl7cmV0dXJuIHRoaXMuX2Ny'@; put 'dWRPcGVyYXRpb25zLnNldENlbGxDb250ZW50cyhlLHQpLHRoaXMucmVjb21wdXRlSWZEZXBlbmRlbmN5R3JhcGhOZWVkc0l0KCl9c3dhcFJvd0luZGV4ZXMoZSx0KXtyZXR1cm4gdG8oZSwibnVtYmVyIiwic2hlZXRJZCIpLHRoaXMuX2NydWRPcGVyYXRpb25zLnNldFJvd09yZGVyKGUsdCks'@; put 'dGhpcy5yZWNvbXB1dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1pc0l0UG9zc2libGVUb1N3YXBSb3dJbmRleGVzKGUsdCl7dG8oZSwibnVtYmVyIiwic2hlZXRJZCIpO3RyeXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMudmFsaWRhdGVTd2FwUm93SW5kZXhlcyhlLHQpLHRoaXMu'@; put 'X2NydWRPcGVyYXRpb25zLnRlc3RSb3dPcmRlckZvckFycmF5cyhlLHQpLCEwfWNhdGNoe3JldHVybiExfX1zZXRSb3dPcmRlcihlLHQpe3RvKGUsIm51bWJlciIsInNoZWV0SWQiKTtjb25zdCByPXRoaXMuX2NydWRPcGVyYXRpb25zLm1hcHBpbmdGcm9tT3JkZXIoZSx0LCJyb3ciKTtyZXR1'@; put 'cm4gdGhpcy5zd2FwUm93SW5kZXhlcyhlLHIpfWlzSXRQb3NzaWJsZVRvU2V0Um93T3JkZXIoZSx0KXt0byhlLCJudW1iZXIiLCJzaGVldElkIik7dHJ5e2NvbnN0IHI9dGhpcy5fY3J1ZE9wZXJhdGlvbnMubWFwcGluZ0Zyb21PcmRlcihlLHQsInJvdyIpO3JldHVybiB0aGlzLl9jcnVkT3Bl'@; put 'cmF0aW9ucy52YWxpZGF0ZVN3YXBSb3dJbmRleGVzKGUsciksdGhpcy5fY3J1ZE9wZXJhdGlvbnMudGVzdFJvd09yZGVyRm9yQXJyYXlzKGUsciksITB9Y2F0Y2h7cmV0dXJuITF9fXN3YXBDb2x1bW5JbmRleGVzKGUsdCl7cmV0dXJuIHRvKGUsIm51bWJlciIsInNoZWV0SWQiKSx0aGlzLl9j'@; put 'cnVkT3BlcmF0aW9ucy5zZXRDb2x1bW5PcmRlcihlLHQpLHRoaXMucmVjb21wdXRlSWZEZXBlbmRlbmN5R3JhcGhOZWVkc0l0KCl9aXNJdFBvc3NpYmxlVG9Td2FwQ29sdW1uSW5kZXhlcyhlLHQpe3RvKGUsIm51bWJlciIsInNoZWV0SWQiKTt0cnl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRp'@; put 'b25zLnZhbGlkYXRlU3dhcENvbHVtbkluZGV4ZXMoZSx0KSx0aGlzLl9jcnVkT3BlcmF0aW9ucy50ZXN0Q29sdW1uT3JkZXJGb3JBcnJheXMoZSx0KSwhMH1jYXRjaHtyZXR1cm4hMX19c2V0Q29sdW1uT3JkZXIoZSx0KXt0byhlLCJudW1iZXIiLCJzaGVldElkIik7Y29uc3Qgcj10aGlzLl9j'@; put 'cnVkT3BlcmF0aW9ucy5tYXBwaW5nRnJvbU9yZGVyKGUsdCwiY29sdW1uIik7cmV0dXJuIHRoaXMuc3dhcENvbHVtbkluZGV4ZXMoZSxyKX1pc0l0UG9zc2libGVUb1NldENvbHVtbk9yZGVyKGUsdCl7dG8oZSwibnVtYmVyIiwic2hlZXRJZCIpO3RyeXtjb25zdCByPXRoaXMuX2NydWRPcGVy'@; put 'YXRpb25zLm1hcHBpbmdGcm9tT3JkZXIoZSx0LCJjb2x1bW4iKTtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMudmFsaWRhdGVTd2FwQ29sdW1uSW5kZXhlcyhlLHIpLHRoaXMuX2NydWRPcGVyYXRpb25zLnRlc3RDb2x1bW5PcmRlckZvckFycmF5cyhlLHIpLCEwfWNhdGNoe3JldHVybiEx'@; put 'fX1pc0l0UG9zc2libGVUb0FkZFJvd3MoZSwuLi50KXt0byhlLCJudW1iZXIiLCJzaGVldElkIik7Y29uc3Qgcj0kcSh0KTt0cnl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvQWRkUm93cyhlLC4uLnIpLCEwfWNhdGNoe3JldHVybiExfX1hZGRSb3dz'@; put 'KGUsLi4udCl7cmV0dXJuIHRvKGUsIm51bWJlciIsInNoZWV0SWQiKSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5hZGRSb3dzKGUsLi4udCksdGhpcy5yZWNvbXB1dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1pc0l0UG9zc2libGVUb1JlbW92ZVJvd3MoZSwuLi50KXt0byhlLCJudW1iZXIi'@; put 'LCJzaGVldElkIik7Y29uc3Qgcj1HcSh0KTt0cnl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvUmVtb3ZlUm93cyhlLC4uLnIpLCEwfWNhdGNoe3JldHVybiExfX1yZW1vdmVSb3dzKGUsLi4udCl7cmV0dXJuIHRvKGUsIm51bWJlciIsInNoZWV0SWQi'@; put 'KSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5yZW1vdmVSb3dzKGUsLi4udCksdGhpcy5yZWNvbXB1dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1pc0l0UG9zc2libGVUb0FkZENvbHVtbnMoZSwuLi50KXt0byhlLCJudW1iZXIiLCJzaGVldElkIik7Y29uc3Qgcj0kcSh0KTt0cnl7cmV0dXJu'@; put 'IHRoaXMuX2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvQWRkQ29sdW1ucyhlLC4uLnIpLCEwfWNhdGNoe3JldHVybiExfX1hZGRDb2x1bW5zKGUsLi4udCl7cmV0dXJuIHRvKGUsIm51bWJlciIsInNoZWV0SWQiKSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5hZGRDb2x1bW5zKGUs'@; put 'Li4udCksdGhpcy5yZWNvbXB1dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1pc0l0UG9zc2libGVUb1JlbW92ZUNvbHVtbnMoZSwuLi50KXt0byhlLCJudW1iZXIiLCJzaGVldElkIik7Y29uc3Qgcj1HcSh0KTt0cnl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQ'@; put 'b3NzaWJsZVRvUmVtb3ZlQ29sdW1ucyhlLC4uLnIpLCEwfWNhdGNoe3JldHVybiExfX1yZW1vdmVDb2x1bW5zKGUsLi4udCl7cmV0dXJuIHRvKGUsIm51bWJlciIsInNoZWV0SWQiKSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5yZW1vdmVDb2x1bW5zKGUsLi4udCksdGhpcy5yZWNvbXB1dGVJZkRl'@; put 'cGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1pc0l0UG9zc2libGVUb01vdmVDZWxscyhlLHQpe2lmKCFFaCh0KSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxBZGRyZXNzIiwiZGVzdGluYXRpb25MZWZ0Q29ybmVyIik7aWYoIXZnKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbFJhbmdlIiwic291'@; put 'cmNlIik7dHJ5e2NvbnN0IHI9bmV3IGJhKGUuc3RhcnQsZS5lbmQpO3JldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy5vcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvTW92ZUNlbGxzKHIuc3RhcnQsci53aWR0aCgpLHIuaGVpZ2h0KCksdCksITB9Y2F0Y2h7cmV0dXJuITF9fW1vdmVD'@; put 'ZWxscyhlLHQpe2lmKCFFaCh0KSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxBZGRyZXNzIiwiZGVzdGluYXRpb25MZWZ0Q29ybmVyIik7aWYoIXZnKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbFJhbmdlIiwic291cmNlIik7Y29uc3Qgcj1uZXcgYmEoZS5zdGFydCxlLmVuZCk7cmV0dXJu'@; put 'IHRoaXMuX2NydWRPcGVyYXRpb25zLm1vdmVDZWxscyhyLnN0YXJ0LHIud2lkdGgoKSxyLmhlaWdodCgpLHQpLHRoaXMucmVjb21wdXRlSWZEZXBlbmRlbmN5R3JhcGhOZWVkc0l0KCl9aXNJdFBvc3NpYmxlVG9Nb3ZlUm93cyhlLHQscixpKXt0byhlLCJudW1iZXIiLCJzaGVldElkIiksdG8o'@; put 'dCwibnVtYmVyIiwic3RhcnRSb3ciKSx0byhyLCJudW1iZXIiLCJudW1iZXJPZlJvd3MiKSx0byhpLCJudW1iZXIiLCJ0YXJnZXRSb3ciKTt0cnl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvTW92ZVJvd3MoZSx0LHIsaSksITB9Y2F0Y2h7cmV0dXJu'@; put 'ITF9fW1vdmVSb3dzKGUsdCxyLGkpe3JldHVybiB0byhlLCJudW1iZXIiLCJzaGVldElkIiksdG8odCwibnVtYmVyIiwic3RhcnRSb3ciKSx0byhyLCJudW1iZXIiLCJudW1iZXJPZlJvd3MiKSx0byhpLCJudW1iZXIiLCJ0YXJnZXRSb3ciKSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5tb3ZlUm93'@; put 'cyhlLHQscixpKSx0aGlzLnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpfWlzSXRQb3NzaWJsZVRvTW92ZUNvbHVtbnMoZSx0LHIsaSl7dG8oZSwibnVtYmVyIiwic2hlZXRJZCIpLHRvKHQsIm51bWJlciIsInN0YXJ0Q29sdW1uIiksdG8ociwibnVtYmVyIiwibnVtYmVyT2ZD'@; put 'b2x1bW5zIiksdG8oaSwibnVtYmVyIiwidGFyZ2V0Q29sdW1uIik7dHJ5e3JldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy5lbnN1cmVJdElzUG9zc2libGVUb01vdmVDb2x1bW5zKGUsdCxyLGkpLCEwfWNhdGNoe3JldHVybiExfX1tb3ZlQ29sdW1ucyhlLHQscixpKXtyZXR1cm4gdG8oZSwi'@; put 'bnVtYmVyIiwic2hlZXRJZCIpLHRvKHQsIm51bWJlciIsInN0YXJ0Q29sdW1uIiksdG8ociwibnVtYmVyIiwibnVtYmVyT2ZDb2x1bW5zIiksdG8oaSwibnVtYmVyIiwidGFyZ2V0Q29sdW1uIiksdGhpcy5fY3J1ZE9wZXJhdGlvbnMubW92ZUNvbHVtbnMoZSx0LHIsaSksdGhpcy5yZWNvbXB1'@; put 'dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1jb3B5KGUpe2lmKCF2ZyhlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxSYW5nZSIsInNvdXJjZSIpO2NvbnN0IHQ9bmV3IGJhKGUuc3RhcnQsZS5lbmQpO3JldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy5jb3B5KHQuc3RhcnQsdC53aWR0'@; put 'aCgpLHQuaGVpZ2h0KCkpLHRoaXMuZ2V0UmFuZ2VWYWx1ZXMoZSl9Y3V0KGUpe2lmKCF2ZyhlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxSYW5nZSIsInNvdXJjZSIpO2NvbnN0IHQ9bmV3IGJhKGUuc3RhcnQsZS5lbmQpO3JldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy5jdXQodC5zdGFy'@; put 'dCx0LndpZHRoKCksdC5oZWlnaHQoKSksdGhpcy5nZXRSYW5nZVZhbHVlcyhlKX1wYXN0ZShlKXtpZighRWgoZSkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsQWRkcmVzcyIsInRhcmdldExlZnRDb3JuZXIiKTtyZXR1cm4gdGhpcy5lbnN1cmVFdmFsdWF0aW9uSXNOb3RTdXNwZW5kZWQoKSx0'@; put 'aGlzLl9jcnVkT3BlcmF0aW9ucy5wYXN0ZShlKSx0aGlzLnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpfWlzQ2xpcGJvYXJkRW1wdHkoKXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuaXNDbGlwYm9hcmRFbXB0eSgpfWNsZWFyQ2xpcGJvYXJkKCl7dGhpcy5fY3J1ZE9w'@; put 'ZXJhdGlvbnMuY2xlYXJDbGlwYm9hcmQoKX1jbGVhclJlZG9TdGFjaygpe3RoaXMuX2NydWRPcGVyYXRpb25zLnVuZG9SZWRvLmNsZWFyUmVkb1N0YWNrKCl9Y2xlYXJVbmRvU3RhY2soKXt0aGlzLl9jcnVkT3BlcmF0aW9ucy51bmRvUmVkby5jbGVhclVuZG9TdGFjaygpfWdldFJhbmdlVmFs'@; put 'dWVzKGUpe2lmKCF2ZyhlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxSYW5nZSIsInNvdXJjZSIpO3JldHVybiBuZXcgYmEoZS5zdGFydCxlLmVuZCkuYXJyYXlPZkFkZHJlc3Nlc0luUmFuZ2UoKS5tYXAocj0+ci5tYXAoaT0+dGhpcy5nZXRDZWxsVmFsdWUoaSkpKX1nZXRSYW5nZUZvcm11'@; put 'bGFzKGUpe2lmKCF2ZyhlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxSYW5nZSIsInNvdXJjZSIpO3JldHVybiBuZXcgYmEoZS5zdGFydCxlLmVuZCkuYXJyYXlPZkFkZHJlc3Nlc0luUmFuZ2UoKS5tYXAocj0+ci5tYXAoaT0+dGhpcy5nZXRDZWxsRm9ybXVsYShpKSkpfWdldFJhbmdlU2Vy'@; put 'aWFsaXplZChlKXtpZighdmcoZSkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsUmFuZ2UiLCJzb3VyY2UiKTtyZXR1cm4gbmV3IGJhKGUuc3RhcnQsZS5lbmQpLmFycmF5T2ZBZGRyZXNzZXNJblJhbmdlKCkubWFwKHI9PnIubWFwKGk9PnRoaXMuZ2V0Q2VsbFNlcmlhbGl6ZWQoaSkpKX1nZXRG'@; put 'aWxsUmFuZ2VEYXRhKGUsdCxyPSExKXtpZighdmcoZSkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsUmFuZ2UiLCJzb3VyY2UiKTtpZighdmcodCkpdGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsUmFuZ2UiLCJ0YXJnZXQiKTtjb25zdCBpPW5ldyBiYShlLnN0YXJ0LGUuZW5kKSxvPW5ldyBiYSh0'@; put 'LnN0YXJ0LHQuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmVFdmFsdWF0aW9uSXNOb3RTdXNwZW5kZWQoKSxvLmFycmF5T2ZBZGRyZXNzZXNJblJhbmdlKCkubWFwKGE9PmEubWFwKGw9Pntjb25zdCB1PSgobC5yb3ctKHI/dDplKS5zdGFydC5yb3cpJWkuaGVpZ2h0KCkraS5oZWlnaHQoKSklaS5o'@; put 'ZWlnaHQoKStlLnN0YXJ0LnJvdyxnPSgobC5jb2wtKHI/dDplKS5zdGFydC5jb2wpJWkud2lkdGgoKStpLndpZHRoKCkpJWkud2lkdGgoKStlLnN0YXJ0LmNvbDtyZXR1cm4gdGhpcy5fc2VyaWFsaXphdGlvbi5nZXRDZWxsU2VyaWFsaXplZCh7cm93OnUsY29sOmcsc2hlZXQ6aS5zaGVldH0s'@; put 'bCl9KSl9aXNJdFBvc3NpYmxlVG9BZGRTaGVldChlKXt0byhlLCJzdHJpbmciLCJzaGVldE5hbWUiKTt0cnl7cmV0dXJuIHRoaXMuX2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvQWRkU2hlZXQoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWFkZFNoZWV0KGUpe3ZvaWQgMCE9PWUm'@; put 'JnRvKGUsInN0cmluZyIsInNoZWV0TmFtZSIpO2NvbnN0IHQ9dGhpcy5fY3J1ZE9wZXJhdGlvbnMuYWRkU2hlZXQoZSk7cmV0dXJuIHRoaXMuX2VtaXR0ZXIuZW1pdChjOS5TaGVldEFkZGVkLHQpLHR9aXNJdFBvc3NpYmxlVG9SZW1vdmVTaGVldChlKXt0byhlLCJudW1iZXIiLCJzaGVldElk'@; put 'Iik7dHJ5e3JldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy5lbnN1cmVTY29wZUlkSXNWYWxpZChlKSwhMH1jYXRjaHtyZXR1cm4hMX19cmVtb3ZlU2hlZXQoZSl7dG8oZSwibnVtYmVyIiwic2hlZXRJZCIpO2NvbnN0IHQ9dGhpcy5zaGVldE1hcHBpbmcuZ2V0RGlzcGxheU5hbWUoZSk7dGhp'@; put 'cy5fY3J1ZE9wZXJhdGlvbnMucmVtb3ZlU2hlZXQoZSk7Y29uc3Qgcj10aGlzLnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpO3JldHVybiB0aGlzLl9lbWl0dGVyLmVtaXQoYzkuU2hlZXRSZW1vdmVkLHQscikscn1pc0l0UG9zc2libGVUb0NsZWFyU2hlZXQoZSl7dG8oZSwi'@; put 'bnVtYmVyIiwic2hlZXRJZCIpO3RyeXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlU2NvcGVJZElzVmFsaWQoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNsZWFyU2hlZXQoZSl7cmV0dXJuIHRvKGUsIm51bWJlciIsInNoZWV0SWQiKSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5jbGVh'@; put 'clNoZWV0KGUpLHRoaXMucmVjb21wdXRlSWZEZXBlbmRlbmN5R3JhcGhOZWVkc0l0KCl9aXNJdFBvc3NpYmxlVG9SZXBsYWNlU2hlZXRDb250ZW50KGUsdCl7dG8oZSwibnVtYmVyIiwic2hlZXRJZCIpO3RyeXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlU2NvcGVJZElzVmFs'@; put 'aWQoZSksdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9DaGFuZ2VTaGVldENvbnRlbnRzKGUsdCksITB9Y2F0Y2h7cmV0dXJuITF9fXNldFNoZWV0Q29udGVudChlLHQpe3JldHVybiB0byhlLCJudW1iZXIiLCJzaGVldElkIiksdGhpcy5fY3J1ZE9wZXJhdGlvbnMu'@; put 'c2V0U2hlZXRDb250ZW50KGUsdCksdGhpcy5yZWNvbXB1dGVJZkRlcGVuZGVuY3lHcmFwaE5lZWRzSXQoKX1zaW1wbGVDZWxsQWRkcmVzc0Zyb21TdHJpbmcoZSx0KXtyZXR1cm4gdG8oZSwic3RyaW5nIiwiY2VsbEFkZHJlc3MiKSx0byh0LCJudW1iZXIiLCJzaGVldElkIiksa2dlKHRoaXMu'@; put 'c2hlZXRNYXBwaW5nLmdldCxlLHQpfXNpbXBsZUNlbGxSYW5nZUZyb21TdHJpbmcoZSx0KXtyZXR1cm4gdG8oZSwic3RyaW5nIiwiY2VsbFJhbmdlIiksdG8odCwibnVtYmVyIiwic2hlZXRJZCIpLCgobixlLHQpPT57Y29uc3Qgcj1lLnNwbGl0KCI6Iik7aWYoMiE9PXIubGVuZ3RoKXJldHVy'@; put 'bjtjb25zdFtpLG9dPXIsYT1rZ2UobixpLHQpO2lmKHZvaWQgMD09PWEpcmV0dXJuO2NvbnN0IGw9a2dlKG4sbyxhLnNoZWV0KTtyZXR1cm4gdm9pZCAwIT09bCYmYS5zaGVldD09PWwuc2hlZXQ/ZW1lKGEsbCk6dm9pZCAwfSkodGhpcy5zaGVldE1hcHBpbmcuZ2V0LGUsdCl9c2ltcGxlQ2Vs'@; put 'bEFkZHJlc3NUb1N0cmluZyhlLHQpe2lmKCFFaChlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxBZGRyZXNzIiwiY2VsbEFkZHJlc3MiKTtyZXR1cm4gdG8odCwibnVtYmVyIiwic2hlZXRJZCIpLFNxKHRoaXMuc2hlZXRNYXBwaW5nLmZldGNoRGlzcGxheU5hbWUsZSx0KX1zaW1wbGVDZWxs'@; put 'UmFuZ2VUb1N0cmluZyhlLHQpe2lmKCF2ZyhlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxSYW5nZSIsImNlbGxSYW5nZSIpO3JldHVybiB0byh0LCJudW1iZXIiLCJzaGVldElkIiksKChuLGUsdCk9Pntjb25zdCByPVNxKG4sZS5zdGFydCx0KSxpPVNxKG4sZS5lbmQsZS5zdGFydC5zaGVl'@; put 'dCk7aWYodm9pZCAwIT09ciYmdm9pZCAwIT09aSlyZXR1cm5gJHtyfToke2l9YH0pKHRoaXMuc2hlZXRNYXBwaW5nLmZldGNoRGlzcGxheU5hbWUsZSx0KX1nZXRDZWxsRGVwZW5kZW50cyhlKXtsZXQgdDtpZihFaChlKSl0PXRoaXMuX2RlcGVuZGVuY3lHcmFwaC5hZGRyZXNzTWFwcGluZy5n'@; put 'ZXRDZWxsKGUpO2Vsc2V7aWYoIXZnKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MgfCBTaW1wbGVDZWxsUmFuZ2UiLGUpO3Q9dGhpcy5fZGVwZW5kZW5jeUdyYXBoLnJhbmdlTWFwcGluZy5nZXRSYW5nZShlLnN0YXJ0LGUuZW5kKX1yZXR1cm4gdm9pZCAwPT09dD9bXTp0aGlz'@; put 'Ll9kZXBlbmRlbmN5R3JhcGguZ2V0QWRqYWNlbnROb2Rlc0FkZHJlc3Nlcyh0KX1nZXRDZWxsUHJlY2VkZW50cyhlKXtsZXQgdDtpZihFaChlKSl0PXRoaXMuX2RlcGVuZGVuY3lHcmFwaC5hZGRyZXNzTWFwcGluZy5nZXRDZWxsKGUpO2Vsc2V7aWYoIXZnKGUpKXRocm93IG5ldyBTYygiU2lt'@; put 'cGxlQ2VsbEFkZHJlc3MgfCBTaW1wbGVDZWxsUmFuZ2UiLGUpO3Q9dGhpcy5fZGVwZW5kZW5jeUdyYXBoLnJhbmdlTWFwcGluZy5nZXRSYW5nZShlLnN0YXJ0LGUuZW5kKX1yZXR1cm4gdm9pZCAwPT09dD9bXTp0aGlzLl9kZXBlbmRlbmN5R3JhcGguZGVwZW5kZW5jeVF1ZXJ5QWRkcmVzc2Vz'@; put 'KHQpfWdldFNoZWV0TmFtZShlKXtyZXR1cm4gdG8oZSwibnVtYmVyIiwic2hlZXRJZCIpLHRoaXMuc2hlZXRNYXBwaW5nLmdldERpc3BsYXlOYW1lKGUpfWdldFNoZWV0TmFtZXMoKXtyZXR1cm4gdGhpcy5zaGVldE1hcHBpbmcuc2hlZXROYW1lcygpfWdldFNoZWV0SWQoZSl7cmV0dXJuIHRv'@; put 'KGUsInN0cmluZyIsInNoZWV0TmFtZSIpLHRoaXMuc2hlZXRNYXBwaW5nLmdldChlKX1kb2VzU2hlZXRFeGlzdChlKXtyZXR1cm4gdG8oZSwic3RyaW5nIiwic2hlZXROYW1lIiksdGhpcy5zaGVldE1hcHBpbmcuaGFzU2hlZXRXaXRoTmFtZShlKX1nZXRDZWxsVHlwZShlKXtpZighRWgoZSkp'@; put 'dGhyb3cgbmV3IFNjKCJTaW1wbGVDZWxsQWRkcmVzcyIsImNlbGxBZGRyZXNzIik7cmV0dXJuKChuLGUpPT5uIGluc3RhbmNlb2YgJGg/bi5pc0xlZnRDb3JuZXIoZSk/VG0uQVJSQVlGT1JNVUxBOlRtLkFSUkFZOm4gaW5zdGFuY2VvZiBqNnx8biBpbnN0YW5jZW9mIGlBP1RtLkZPUk1VTEE6'@; put 'biBpbnN0YW5jZW9mIFFfP1RtLlZBTFVFOlRtLkVNUFRZKSh0aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsKGUpLGUpfWRvZXNDZWxsSGF2ZVNpbXBsZVZhbHVlKGUpe2lmKCFFaChlKSl0aHJvdyBuZXcgU2MoIlNpbXBsZUNlbGxBZGRyZXNzIiwiY2VsbEFkZHJlc3MiKTtyZXR1cm4gdGhp'@; put 'cy5nZXRDZWxsVHlwZShlKT09PVRtLlZBTFVFfWRvZXNDZWxsSGF2ZUZvcm11bGEoZSl7aWYoIUVoKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MiLCJjZWxsQWRkcmVzcyIpO2NvbnN0IHQ9dGhpcy5nZXRDZWxsVHlwZShlKTtyZXR1cm4gdD09PVRtLkZPUk1VTEF8fHQ9PT1U'@; put 'bS5BUlJBWUZPUk1VTEF9aXNDZWxsRW1wdHkoZSl7aWYoIUVoKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MiLCJjZWxsQWRkcmVzcyIpO3JldHVybiB0aGlzLmdldENlbGxUeXBlKGUpPT09VG0uRU1QVFl9aXNDZWxsUGFydE9mQXJyYXkoZSl7aWYoIUVoKGUpKXRocm93IG5l'@; put 'dyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MiLCJjZWxsQWRkcmVzcyIpO2NvbnN0IHQ9dGhpcy5nZXRDZWxsVHlwZShlKTtyZXR1cm4gdD09PVRtLkFSUkFZfHx0PT09VG0uQVJSQVlGT1JNVUxBfWdldENlbGxWYWx1ZVR5cGUoZSl7aWYoIUVoKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFk'@; put 'ZHJlc3MiLCJjZWxsQWRkcmVzcyIpO3RoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVkKCk7Y29uc3QgdD10aGlzLmRlcGVuZGVuY3lHcmFwaC5nZXRDZWxsVmFsdWUoZSk7cmV0dXJuIEZxKHQpfWdldENlbGxWYWx1ZURldGFpbGVkVHlwZShlKXtpZighRWgoZSkpdGhyb3cgbmV3'@; put 'IFNjKCJTaW1wbGVDZWxsQWRkcmVzcyIsImNlbGxBZGRyZXNzIik7dGhpcy5lbnN1cmVFdmFsdWF0aW9uSXNOb3RTdXNwZW5kZWQoKTtyZXR1cm4obj0+Y2Mobik/ZnVuY3Rpb24gZkp0KG4pe3JldHVybiBuIGluc3RhbmNlb2YgQjY/bi5nZXREZXRhaWxlZFR5cGUoKTpvYS5OVU1CRVJfUkFX'@; put 'fShuKTpGcShuKSkodGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0Q2VsbFZhbHVlKGUpKX1nZXRDZWxsVmFsdWVGb3JtYXQoZSl7aWYoIUVoKGUpKXRocm93IG5ldyBTYygiU2ltcGxlQ2VsbEFkZHJlc3MiLCJjZWxsQWRkcmVzcyIpO3RoaXMuZW5zdXJlRXZhbHVhdGlvbklzTm90U3VzcGVuZGVk'@; put 'KCk7cmV0dXJuKG49PntpZihjYyhuKSlyZXR1cm4gZnVuY3Rpb24gcEp0KG4pe2lmKG4gaW5zdGFuY2VvZiBCNilyZXR1cm4gbi5mb3JtYXR9KG4pfSkodGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0Q2VsbFZhbHVlKGUpKX1jb3VudFNoZWV0cygpe3JldHVybiB0aGlzLnNoZWV0TWFwcGluZy5u'@; put 'dW1iZXJPZlNoZWV0cygpfWlzSXRQb3NzaWJsZVRvUmVuYW1lU2hlZXQoZSx0KXt0byhlLCJudW1iZXIiLCJzaGVldElkIiksdG8odCwic3RyaW5nIiwibmV3TmFtZSIpO3RyeXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9SZW5hbWVTaGVldChlLHQp'@; put 'LCEwfWNhdGNoe3JldHVybiExfX1yZW5hbWVTaGVldChlLHQpe3RvKGUsIm51bWJlciIsInNoZWV0SWQiKSx0byh0LCJzdHJpbmciLCJuZXdOYW1lIik7Y29uc3Qgcj10aGlzLl9jcnVkT3BlcmF0aW9ucy5yZW5hbWVTaGVldChlLHQpO3ZvaWQgMCE9PXImJnRoaXMuX2VtaXR0ZXIuZW1pdChj'@; put 'OS5TaGVldFJlbmFtZWQscix0KX1iYXRjaChlKXt0aGlzLnN1c3BlbmRFdmFsdWF0aW9uKCksdGhpcy5fY3J1ZE9wZXJhdGlvbnMuYmVnaW5VbmRvUmVkb0JhdGNoTW9kZSgpO3RyeXtlKCl9Y2F0Y2godCl7dGhyb3cgdGhpcy5fY3J1ZE9wZXJhdGlvbnMuY29tbWl0VW5kb1JlZG9CYXRjaE1v'@; put 'ZGUoKSx0aGlzLnJlc3VtZUV2YWx1YXRpb24oKSx0fXJldHVybiB0aGlzLl9jcnVkT3BlcmF0aW9ucy5jb21taXRVbmRvUmVkb0JhdGNoTW9kZSgpLHRoaXMucmVzdW1lRXZhbHVhdGlvbigpfXN1c3BlbmRFdmFsdWF0aW9uKCl7dGhpcy5fZXZhbHVhdGlvblN1c3BlbmRlZD0hMCx0aGlzLl9l'@; put 'bWl0dGVyLmVtaXQoYzkuRXZhbHVhdGlvblN1c3BlbmRlZCl9cmVzdW1lRXZhbHVhdGlvbigpe3RoaXMuX2V2YWx1YXRpb25TdXNwZW5kZWQ9ITE7Y29uc3QgZT10aGlzLnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpO3JldHVybiB0aGlzLl9lbWl0dGVyLmVtaXQoYzkuRXZh'@; put 'bHVhdGlvblJlc3VtZWQsZSksZX1pc0V2YWx1YXRpb25TdXNwZW5kZWQoKXtyZXR1cm4gdGhpcy5fZXZhbHVhdGlvblN1c3BlbmRlZH1pc0l0UG9zc2libGVUb0FkZE5hbWVkRXhwcmVzc2lvbihlLHQscil7dG8oZSwic3RyaW5nIiwiZXhwcmVzc2lvbk5hbWUiKSx2b2lkIDAhPT1yJiZ0byhy'@; put 'LCJudW1iZXIiLCJzY29wZSIpO3RyeXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlSXRJc1Bvc3NpYmxlVG9BZGROYW1lZEV4cHJlc3Npb24oZSx0LHIpLCEwfWNhdGNoe3JldHVybiExfX1hZGROYW1lZEV4cHJlc3Npb24oZSx0LHIsaSl7dG8oZSwic3RyaW5nIiwiZXhwcmVz'@; put 'c2lvbk5hbWUiKSx2b2lkIDAhPT1yJiZ0byhyLCJudW1iZXIiLCJzY29wZSIpLHRoaXMuX2NydWRPcGVyYXRpb25zLmFkZE5hbWVkRXhwcmVzc2lvbihlLHQscixpKTtjb25zdCBvPXRoaXMucmVjb21wdXRlSWZEZXBlbmRlbmN5R3JhcGhOZWVkc0l0KCk7cmV0dXJuIHRoaXMuX2VtaXR0ZXIu'@; put 'ZW1pdChjOS5OYW1lZEV4cHJlc3Npb25BZGRlZCxlLG8pLG99Z2V0TmFtZWRFeHByZXNzaW9uVmFsdWUoZSx0KXt0byhlLCJzdHJpbmciLCJleHByZXNzaW9uTmFtZSIpLHZvaWQgMCE9PXQmJnRvKHQsIm51bWJlciIsInNjb3BlIiksdGhpcy5lbnN1cmVFdmFsdWF0aW9uSXNOb3RTdXNwZW5k'@; put 'ZWQoKSx0aGlzLl9jcnVkT3BlcmF0aW9ucy5lbnN1cmVTY29wZUlkSXNWYWxpZCh0KTtjb25zdCByPXRoaXMuX25hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uRm9yU2NvcGUoZSx0KTtpZihyKXJldHVybiB0aGlzLl9zZXJpYWxpemF0aW9uLmdldENlbGxWYWx1ZShyLmFkZHJlc3Mp'@; put 'fWdldE5hbWVkRXhwcmVzc2lvbkZvcm11bGEoZSx0KXt0byhlLCJzdHJpbmciLCJleHByZXNzaW9uTmFtZSIpLHZvaWQgMCE9PXQmJnRvKHQsIm51bWJlciIsInNjb3BlIiksdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlU2NvcGVJZElzVmFsaWQodCk7Y29uc3Qgcj10aGlzLl9uYW1lZEV4'@; put 'cHJlc3Npb25zLm5hbWVkRXhwcmVzc2lvbkZvclNjb3BlKGUsdCk7aWYodm9pZCAwIT09cilyZXR1cm4gdGhpcy5fc2VyaWFsaXphdGlvbi5nZXRDZWxsRm9ybXVsYShyLmFkZHJlc3MpfWdldE5hbWVkRXhwcmVzc2lvbihlLHQpe3RvKGUsInN0cmluZyIsImV4cHJlc3Npb25OYW1lIiksdm9p'@; put 'ZCAwIT09dCYmdG8odCwibnVtYmVyIiwic2NvcGUiKTtjb25zdCByPXRoaXMuX25hbWVkRXhwcmVzc2lvbnMubmFtZWRFeHByZXNzaW9uRm9yU2NvcGUoZSx0KTtpZih2b2lkIDAhPT1yKXJldHVybntuYW1lOmUsc2NvcGU6dCxleHByZXNzaW9uOnRoaXMuX3NlcmlhbGl6YXRpb24uZ2V0Q2Vs'@; put 'bEZvcm11bGEoci5hZGRyZXNzKSxvcHRpb25zOnIub3B0aW9uc319aXNJdFBvc3NpYmxlVG9DaGFuZ2VOYW1lZEV4cHJlc3Npb24oZSx0LHIpe3RvKGUsInN0cmluZyIsImV4cHJlc3Npb25OYW1lIiksdm9pZCAwIT09ciYmdG8ociwibnVtYmVyIiwic2NvcGUiKTt0cnl7cmV0dXJuIHRoaXMu'@; put 'X2NydWRPcGVyYXRpb25zLmVuc3VyZUl0SXNQb3NzaWJsZVRvQ2hhbmdlTmFtZWRFeHByZXNzaW9uKGUsdCxyKSwhMH1jYXRjaHtyZXR1cm4hMX19Y2hhbmdlTmFtZWRFeHByZXNzaW9uKGUsdCxyLGkpe3JldHVybiB0byhlLCJzdHJpbmciLCJleHByZXNzaW9uTmFtZSIpLHZvaWQgMCE9PXIm'@; put 'JnRvKHIsIm51bWJlciIsInNjb3BlIiksdGhpcy5fY3J1ZE9wZXJhdGlvbnMuY2hhbmdlTmFtZWRFeHByZXNzaW9uRXhwcmVzc2lvbihlLHIsdCxpKSx0aGlzLnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpfWlzSXRQb3NzaWJsZVRvUmVtb3ZlTmFtZWRFeHByZXNzaW9uKGUs'@; put 'dCl7dG8oZSwic3RyaW5nIiwiZXhwcmVzc2lvbk5hbWUiKSx2b2lkIDAhPT10JiZ0byh0LCJudW1iZXIiLCJzY29wZSIpO3RyeXtyZXR1cm4gdGhpcy5fY3J1ZE9wZXJhdGlvbnMuaXNJdFBvc3NpYmxlVG9SZW1vdmVOYW1lZEV4cHJlc3Npb24oZSx0KSwhMH1jYXRjaHtyZXR1cm4hMX19cmVt'@; put 'b3ZlTmFtZWRFeHByZXNzaW9uKGUsdCl7dG8oZSwic3RyaW5nIiwiZXhwcmVzc2lvbk5hbWUiKSx2b2lkIDAhPT10JiZ0byh0LCJudW1iZXIiLCJzY29wZSIpO2NvbnN0IHI9dGhpcy5fY3J1ZE9wZXJhdGlvbnMucmVtb3ZlTmFtZWRFeHByZXNzaW9uKGUsdCk7aWYocil7Y29uc3QgaT10aGlz'@; put 'LnJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpO3JldHVybiB0aGlzLl9lbWl0dGVyLmVtaXQoYzkuTmFtZWRFeHByZXNzaW9uUmVtb3ZlZCxyLmRpc3BsYXlOYW1lLGkpLGl9cmV0dXJuW119bGlzdE5hbWVkRXhwcmVzc2lvbnMoZSl7cmV0dXJuIHZvaWQgMCE9PWUmJnRvKGUs'@; put 'Im51bWJlciIsInNjb3BlIiksdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJlU2NvcGVJZElzVmFsaWQoZSksdGhpcy5fbmFtZWRFeHByZXNzaW9ucy5nZXRBbGxOYW1lZEV4cHJlc3Npb25zTmFtZXNJblNjb3BlKGUpfWdldEFsbE5hbWVkRXhwcmVzc2lvbnNTZXJpYWxpemVkKCl7cmV0dXJu'@; put 'IHRoaXMuX3NlcmlhbGl6YXRpb24uZ2V0QWxsTmFtZWRFeHByZXNzaW9uc1NlcmlhbGl6ZWQoKX1ub3JtYWxpemVGb3JtdWxhKGUpe3RvKGUsInN0cmluZyIsImZvcm11bGFTdHJpbmciKTtjb25zdHthc3Q6dCxhZGRyZXNzOnJ9PXRoaXMuZXh0cmFjdFRlbXBvcmFyeUZvcm11bGEoZSk7aWYo'@; put 'dm9pZCAwPT09dCl0aHJvdyBuZXcgcWdlO3JldHVybiB0aGlzLl91bnBhcnNlci51bnBhcnNlKHQscil9Y2FsY3VsYXRlRm9ybXVsYShlLHQpe3RvKGUsInN0cmluZyIsImZvcm11bGFTdHJpbmciKSx0byh0LCJudW1iZXIiLCJzaGVldElkIiksdGhpcy5fY3J1ZE9wZXJhdGlvbnMuZW5zdXJl'@; put 'U2NvcGVJZElzVmFsaWQodCk7Y29uc3R7YXN0OnIsYWRkcmVzczppLGRlcGVuZGVuY2llczpvfT10aGlzLmV4dHJhY3RUZW1wb3JhcnlGb3JtdWxhKGUsdCk7aWYodm9pZCAwPT09cil0aHJvdyBuZXcgcWdlO2NvbnN0IGE9dGhpcy5ldmFsdWF0b3IucnVuQW5kRm9yZ2V0KHIsaSxvKTtyZXR1'@; put 'cm4gdGhpcy5fZXhwb3J0ZXIuZXhwb3J0U2NhbGFyT3JSYW5nZShhKX1nZXROYW1lZEV4cHJlc3Npb25zRnJvbUZvcm11bGEoZSl7dG8oZSwic3RyaW5nIiwiZm9ybXVsYVN0cmluZyIpO2NvbnN0e2FzdDp0LGRlcGVuZGVuY2llczpyfT10aGlzLmV4dHJhY3RUZW1wb3JhcnlGb3JtdWxhKGUp'@; put 'O2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IHFnZTtjb25zdCBpPXIuZmlsdGVyKGE9PmEgaW5zdGFuY2VvZiBhOSkubWFwKGE9PmEubmFtZSk7cmV0dXJuWy4uLm5ldyBTZXQoaSldfXZhbGlkYXRlRm9ybXVsYShlKXt0byhlLCJzdHJpbmciLCJmb3JtdWxhU3RyaW5nIik7Y29uc3R7YXN0OnR9'@; put 'PXRoaXMuZXh0cmFjdFRlbXBvcmFyeUZvcm11bGEoZSk7cmV0dXJuIHZvaWQgMCE9PXR9Z2V0UmVnaXN0ZXJlZEZ1bmN0aW9uTmFtZXMoKXtyZXR1cm4gZGYuZ2V0TGFuZ3VhZ2UodGhpcy5fY29uZmlnLmxhbmd1YWdlKS5nZXRGdW5jdGlvblRyYW5zbGF0aW9ucyh0aGlzLl9mdW5jdGlvblJl'@; put 'Z2lzdHJ5LmdldFJlZ2lzdGVyZWRGdW5jdGlvbklkcygpKX1nZXRGdW5jdGlvblBsdWdpbihlKXtyZXR1cm4gdG8oZSwic3RyaW5nIiwiZnVuY3Rpb25JZCIpLHRoaXMuX2Z1bmN0aW9uUmVnaXN0cnkuZ2V0RnVuY3Rpb25QbHVnaW4oZSl9Z2V0QWxsRnVuY3Rpb25QbHVnaW5zKCl7cmV0dXJu'@; put 'IHRoaXMuX2Z1bmN0aW9uUmVnaXN0cnkuZ2V0UGx1Z2lucygpfW51bWJlclRvRGF0ZVRpbWUoZSl7cmV0dXJuIHRvKGUsIm51bWJlciIsInZhbCIpLHRoaXMuX2V2YWx1YXRvci5pbnRlcnByZXRlci5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGVUaW1lKGUpfW51bWJlclRvRGF0'@; put 'ZShlKXtyZXR1cm4gdG8oZSwibnVtYmVyIiwidmFsIiksdGhpcy5fZXZhbHVhdG9yLmludGVycHJldGVyLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0ZShlKX1udW1iZXJUb1RpbWUoZSl7cmV0dXJuIHRvKGUsIm51bWJlciIsInZhbCIpLHNBKGUpfW9uKGUsdCl7dGhpcy5fZW1p'@; put 'dHRlci5vbihlLHQpfW9uY2UoZSx0KXt0aGlzLl9lbWl0dGVyLm9uY2UoZSx0KX1vZmYoZSx0KXt0aGlzLl9lbWl0dGVyLm9mZihlLHQpfWRlc3Ryb3koKXshZnVuY3Rpb24gVXRuKG4pe2Zvcihjb25zdFtlLHRdb2YgT2JqZWN0LmVudHJpZXMobikpdCBpbnN0YW5jZW9mIEZ1bmN0aW9uP25b'@; put 'ZV09enRuKHQpOmRlbGV0ZSBuW2VdfSh0aGlzKX1lbnN1cmVFdmFsdWF0aW9uSXNOb3RTdXNwZW5kZWQoKXtpZih0aGlzLl9ldmFsdWF0aW9uU3VzcGVuZGVkKXRocm93IG5ldyBrSnR9ZXh0cmFjdFRlbXBvcmFyeUZvcm11bGEoZSx0PTEpe2NvbnN0IHI9dGhpcy5fY2VsbENvbnRlbnRQYXJz'@; put 'ZXIucGFyc2UoZSksaT17c2hlZXQ6dCxjb2w6MCxyb3c6MH07aWYoIShyIGluc3RhbmNlb2YgSGQuRm9ybXVsYSkpcmV0dXJue2FkZHJlc3M6aSxkZXBlbmRlbmNpZXM6W119O2NvbnN0e2FzdDpvLGVycm9yczphLGRlcGVuZGVuY2llczpsfT10aGlzLl9wYXJzZXIucGFyc2Uoci5mb3JtdWxh'@; put 'LGkpO3JldHVybiBhLmxlbmd0aD4wP3thZGRyZXNzOmksZGVwZW5kZW5jaWVzOltdfTp7YXN0Om8sYWRkcmVzczppLGRlcGVuZGVuY2llczpsfX1yZWJ1aWxkV2l0aENvbmZpZyhlKXtjb25zdCB0PXRoaXMuX2NvbmZpZy5tZXJnZUNvbmZpZyhlKSxyPXRoaXMuX2NvbmZpZy5tZXJnZUNvbmZp'@; put 'Zyh7bGFuZ3VhZ2U6ZS5sYW5ndWFnZX0pLGk9dGhpcy5fc2VyaWFsaXphdGlvbi53aXRoTmV3Q29uZmlnKHIsdGhpcy5fbmFtZWRFeHByZXNzaW9ucykuZ2V0QWxsU2hlZXRzU2VyaWFsaXplZCgpLG89dGhpcy5fc2VyaWFsaXphdGlvbi5nZXRBbGxOYW1lZEV4cHJlc3Npb25zU2VyaWFsaXpl'@; put 'ZCgpLGE9ZUsucmVidWlsZFdpdGhDb25maWcodCxpLG8sdGhpcy5fc3RhdHMpO3RoaXMuX2NvbmZpZz1hLmNvbmZpZyx0aGlzLl9zdGF0cz1hLnN0YXRzLHRoaXMuX2RlcGVuZGVuY3lHcmFwaD1hLmRlcGVuZGVuY3lHcmFwaCx0aGlzLl9jb2x1bW5TZWFyY2g9YS5jb2x1bW5TZWFyY2gsdGhp'@; put 'cy5fcGFyc2VyPWEucGFyc2VyLHRoaXMuX3VucGFyc2VyPWEudW5wYXJzZXIsdGhpcy5fY2VsbENvbnRlbnRQYXJzZXI9YS5jZWxsQ29udGVudFBhcnNlcix0aGlzLl9ldmFsdWF0b3I9YS5ldmFsdWF0b3IsdGhpcy5fbGF6aWx5VHJhbnNmb3JtaW5nQXN0U2VydmljZT1hLmxhemlseVRyYW5z'@; put 'Zm9ybWluZ0FzdFNlcnZpY2UsdGhpcy5fY3J1ZE9wZXJhdGlvbnM9YS5jcnVkT3BlcmF0aW9ucyx0aGlzLl9leHBvcnRlcj1hLmV4cG9ydGVyLHRoaXMuX25hbWVkRXhwcmVzc2lvbnM9YS5uYW1lZEV4cHJlc3Npb25zLHRoaXMuX3NlcmlhbGl6YXRpb249YS5zZXJpYWxpemF0aW9uLHRoaXMu'@; put 'X2Z1bmN0aW9uUmVnaXN0cnk9YS5mdW5jdGlvblJlZ2lzdHJ5fXJlY29tcHV0ZUlmRGVwZW5kZW5jeUdyYXBoTmVlZHNJdCgpe2lmKHRoaXMuX2V2YWx1YXRpb25TdXNwZW5kZWQpcmV0dXJuW107e2NvbnN0IGU9dGhpcy5fY3J1ZE9wZXJhdGlvbnMuZ2V0QW5kQ2xlYXJDb250ZW50Q2hhbmdl'@; put 'cygpLHQ9dGhpcy5kZXBlbmRlbmN5R3JhcGgudmVydGljZXNUb1JlY29tcHV0ZSgpO3RoaXMuZGVwZW5kZW5jeUdyYXBoLmNsZWFyRGlydHlWZXJ0aWNlcygpLHQubGVuZ3RoPjAmJmUuYWRkQWxsKHRoaXMuZXZhbHVhdG9yLnBhcnRpYWxSdW4odCkpO2NvbnN0IHI9ZS5leHBvcnRDaGFuZ2Vz'@; put 'KHRoaXMuX2V4cG9ydGVyKTtyZXR1cm4gZS5pc0VtcHR5KCl8fHRoaXMuX2VtaXR0ZXIuZW1pdChjOS5WYWx1ZXNVcGRhdGVkLHIpLHJ9fX1kZi52ZXJzaW9uPSIyLjcuMSIsZGYuYnVpbGREYXRlPSIxOC8wNy8yMDI0IDExOjIzOjE3IixkZi5yZWxlYXNlRGF0ZT0iMTgvMDcvMjAyNCIsZGYu'@; put 'bGFuZ3VhZ2VzPXt9LGRmLnJlZ2lzdGVyZWRMYW5ndWFnZXM9bmV3IE1hcDtjb25zdCAkV2U9bmV3IFdlYWtNYXA7Y2xhc3MgaDJ7Y29uc3RydWN0b3IoZT17fSx0PSEwKXtjb25zdHthY2NlbnRTZW5zaXRpdmU6cixiaW5hcnlTZWFyY2hUaHJlc2hvbGQ6aSxjYXNlU2Vuc2l0aXZlOm8sY2Fz'@; put 'ZUZpcnN0OmEsY2hvb3NlQWRkcmVzc01hcHBpbmdQb2xpY3k6bCxjb250ZXh0OnUsY3VycmVuY3lTeW1ib2w6ZyxkYXRlRm9ybWF0czpFLGRlY2ltYWxTZXBhcmF0b3I6TyxldmFsdWF0ZU51bGxUb1plcm86WixmdW5jdGlvbkFyZ1NlcGFyYXRvcjplZSxmdW5jdGlvblBsdWdpbnM6dmUsaWdu'@; put 'b3JlUHVuY3R1YXRpb246TWUsbGVhcFllYXIxOTAwOkhlLGxvY2FsZUxhbmc6V2UsbGFuZ3VhZ2U6YXQsaWdub3JlV2hpdGVTcGFjZTpDdCxsaWNlbnNlS2V5OkF0LG1hdGNoV2hvbGVDZWxsOkt0LGFycmF5Q29sdW1uU2VwYXJhdG9yOnF0LGFycmF5Um93U2VwYXJhdG9yOmduLG1heFJvd3M6'@; put 'VG4sbWF4Q29sdW1uczpDbixudWxsWWVhcjpxcixudWxsRGF0ZTokbixwYXJzZURhdGVUaW1lOlRyLHByZWNpc2lvbkVwc2lsb246cmkscHJlY2lzaW9uUm91bmRpbmc6Zm4sc3RyaW5naWZ5RGF0ZVRpbWU6eXIsc3RyaW5naWZ5RHVyYXRpb246QW4sc21hcnRSb3VuZGluZzpIcix0aW1lRm9y'@; put 'bWF0czp0aSx0aG91c2FuZFNlcGFyYXRvcjpmcix1c2VBcnJheUFyaXRobWV0aWM6ZWksdXNlU3RhdHM6UG8sdW5kb0xpbWl0OkhvLHVzZUNvbHVtbkluZGV4OnhpLHVzZVJlZ3VsYXJFeHByZXNzaW9uczpUbyx1c2VXaWxkY2FyZHM6d3N9PWU7dCYmaDIud2FybkRlcHJlY2F0ZWRPcHRpb25z'@; put 'KGUpLHRoaXMudXNlQXJyYXlBcml0aG1ldGljPXpjKGVpLCJib29sZWFuIiwidXNlQXJyYXlBcml0aG1ldGljIiksdGhpcy5hY2NlbnRTZW5zaXRpdmU9emMociwiYm9vbGVhbiIsImFjY2VudFNlbnNpdGl2ZSIpLHRoaXMuY2FzZVNlbnNpdGl2ZT16YyhvLCJib29sZWFuIiwiY2FzZVNlbnNp'@; put 'dGl2ZSIpLHRoaXMuY2FzZUZpcnN0PXpjKGEsWyJ1cHBlciIsImxvd2VyIiwiZmFsc2UiXSwiY2FzZUZpcnN0IiksdGhpcy5pZ25vcmVQdW5jdHVhdGlvbj16YyhNZSwiYm9vbGVhbiIsImlnbm9yZVB1bmN0dWF0aW9uIiksdGhpcy5jaG9vc2VBZGRyZXNzTWFwcGluZ1BvbGljeT1sPz9oMi5k'@; put 'ZWZhdWx0Q29uZmlnLmNob29zZUFkZHJlc3NNYXBwaW5nUG9saWN5LHRoaXMuZGF0ZUZvcm1hdHM9Wy4uLkhxKEUsQXJyYXkuaXNBcnJheSwiYXJyYXkiLCJkYXRlRm9ybWF0cyIpXSx0aGlzLnRpbWVGb3JtYXRzPVsuLi5IcSh0aSxBcnJheS5pc0FycmF5LCJhcnJheSIsInRpbWVGb3JtYXRz'@; put 'IildLHRoaXMuZnVuY3Rpb25BcmdTZXBhcmF0b3I9emMoZWUsInN0cmluZyIsImZ1bmN0aW9uQXJnU2VwYXJhdG9yIiksdGhpcy5kZWNpbWFsU2VwYXJhdG9yPXpjKE8sWyIuIiwiLCJdLCJkZWNpbWFsU2VwYXJhdG9yIiksdGhpcy5sYW5ndWFnZT16YyhhdCwic3RyaW5nIiwibGFuZ3VhZ2Ui'@; put 'KSx0aGlzLmlnbm9yZVdoaXRlU3BhY2U9emMoQ3QsWyJzdGFuZGFyZCIsImFueSJdLCJpZ25vcmVXaGl0ZVNwYWNlIiksdGhpcy5saWNlbnNlS2V5PXpjKEF0LCJzdHJpbmciLCJsaWNlbnNlS2V5IiksdGhpcy50aG91c2FuZFNlcGFyYXRvcj16YyhmcixbIiIsIiwiLCIgIiwiLiJdLCJ0aG91'@; put 'c2FuZFNlcGFyYXRvciIpLHRoaXMuYXJyYXlDb2x1bW5TZXBhcmF0b3I9emMocXQsWyIsIiwiOyJdLCJhcnJheUNvbHVtblNlcGFyYXRvciIpLHRoaXMuYXJyYXlSb3dTZXBhcmF0b3I9emMoZ24sWyI7IiwifCJdLCJhcnJheVJvd1NlcGFyYXRvciIpLHRoaXMubG9jYWxlTGFuZz16YyhXZSwi'@; put 'c3RyaW5nIiwibG9jYWxlTGFuZyIpLHRoaXMuZnVuY3Rpb25QbHVnaW5zPVsuLi52ZT8/aDIuZGVmYXVsdENvbmZpZy5mdW5jdGlvblBsdWdpbnNdLHRoaXMuc21hcnRSb3VuZGluZz16YyhIciwiYm9vbGVhbiIsInNtYXJ0Um91bmRpbmciKSx0aGlzLmV2YWx1YXRlTnVsbFRvWmVybz16Yyha'@; put 'LCJib29sZWFuIiwiZXZhbHVhdGVOdWxsVG9aZXJvIiksdGhpcy5udWxsWWVhcj16YyhxciwibnVtYmVyIiwibnVsbFllYXIiKSxvQSh0aGlzLm51bGxZZWFyLCJudWxsWWVhciIsMCksZnVuY3Rpb24gcGVuKG4sZSx0KXtpZihuPnQpdGhyb3cgbmV3IHhKdChlLHQpfSh0aGlzLm51bGxZZWFy'@; put 'LCJudWxsWWVhciIsMTAwKSx0aGlzLnByZWNpc2lvblJvdW5kaW5nPXpjKGZuLCJudW1iZXIiLCJwcmVjaXNpb25Sb3VuZGluZyIpLG9BKHRoaXMucHJlY2lzaW9uUm91bmRpbmcsInByZWNpc2lvblJvdW5kaW5nIiwwKSx0aGlzLnByZWNpc2lvbkVwc2lsb249emMocmksIm51bWJlciIsInBy'@; put 'ZWNpc2lvbkVwc2lsb24iKSxvQSh0aGlzLnByZWNpc2lvbkVwc2lsb24sInByZWNpc2lvbkVwc2lsb24iLDApLHRoaXMudXNlQ29sdW1uSW5kZXg9emMoeGksImJvb2xlYW4iLCJ1c2VDb2x1bW5JbmRleCIpLHRoaXMudXNlU3RhdHM9emMoUG8sImJvb2xlYW4iLCJ1c2VTdGF0cyIpLHRoaXMu'@; put 'YmluYXJ5U2VhcmNoVGhyZXNob2xkPWk/P2gyLmRlZmF1bHRDb25maWcuYmluYXJ5U2VhcmNoVGhyZXNob2xkLHRoaXMucGFyc2VEYXRlVGltZT16YyhUciwiZnVuY3Rpb24iLCJwYXJzZURhdGVUaW1lIiksdGhpcy5zdHJpbmdpZnlEYXRlVGltZT16Yyh5ciwiZnVuY3Rpb24iLCJzdHJpbmdp'@; put 'ZnlEYXRlVGltZSIpLHRoaXMuc3RyaW5naWZ5RHVyYXRpb249emMoQW4sImZ1bmN0aW9uIiwic3RyaW5naWZ5RHVyYXRpb24iKSx0aGlzLnRyYW5zbGF0aW9uUGFja2FnZT1kZi5nZXRMYW5ndWFnZSh0aGlzLmxhbmd1YWdlKSx0aGlzLmVycm9yTWFwcGluZz10aGlzLnRyYW5zbGF0aW9uUGFj'@; put 'a2FnZS5idWlsZEVycm9yTWFwcGluZygpLHRoaXMubnVsbERhdGU9SHEoJG4scFAsIklEYXRlIiwibnVsbERhdGUiKSx0aGlzLmxlYXBZZWFyMTkwMD16YyhIZSwiYm9vbGVhbiIsImxlYXBZZWFyMTkwMCIpLHRoaXMudW5kb0xpbWl0PXpjKEhvLCJudW1iZXIiLCJ1bmRvTGltaXQiKSx0aGlz'@; put 'LnVzZVJlZ3VsYXJFeHByZXNzaW9ucz16YyhUbywiYm9vbGVhbiIsInVzZVJlZ3VsYXJFeHByZXNzaW9ucyIpLHRoaXMudXNlV2lsZGNhcmRzPXpjKHdzLCJib29sZWFuIiwidXNlV2lsZGNhcmRzIiksdGhpcy5tYXRjaFdob2xlQ2VsbD16YyhLdCwiYm9vbGVhbiIsIm1hdGNoV2hvbGVDZWxs'@; put 'Iiksb0EodGhpcy51bmRvTGltaXQsInVuZG9MaW1pdCIsMCksdGhpcy5tYXhSb3dzPXpjKFRuLCJudW1iZXIiLCJtYXhSb3dzIiksb0EodGhpcy5tYXhSb3dzLCJtYXhSb3dzIiwxKSx0aGlzLm1heENvbHVtbnM9emMoQ24sIm51bWJlciIsIm1heENvbHVtbnMiKSx0aGlzLmN1cnJlbmN5U3lt'@; put 'Ym9sPXRoaXMuc2V0dXBDdXJyZW5jeVN5bWJvbChnKSxvQSh0aGlzLm1heENvbHVtbnMsIm1heENvbHVtbnMiLDEpLHRoaXMuY29udGV4dD11LCRXZS5zZXQodGhpcyx7bGljZW5zZUtleVZhbGlkaXR5U3RhdGU6QmVuKHRoaXMubGljZW5zZUtleSl9KSxfV2Uoe3ZhbHVlOnRoaXMuZGVjaW1h'@; put 'bFNlcGFyYXRvcixuYW1lOiJkZWNpbWFsU2VwYXJhdG9yIn0se3ZhbHVlOnRoaXMuZnVuY3Rpb25BcmdTZXBhcmF0b3IsbmFtZToiZnVuY3Rpb25BcmdTZXBhcmF0b3IifSx7dmFsdWU6dGhpcy50aG91c2FuZFNlcGFyYXRvcixuYW1lOiJ0aG91c2FuZFNlcGFyYXRvciJ9KSxfV2Uoe3ZhbHVl'@; put 'OnRoaXMuYXJyYXlSb3dTZXBhcmF0b3IsbmFtZToiYXJyYXlSb3dTZXBhcmF0b3IifSx7dmFsdWU6dGhpcy5hcnJheUNvbHVtblNlcGFyYXRvcixuYW1lOiJhcnJheUNvbHVtblNlcGFyYXRvciJ9KX1zZXR1cEN1cnJlbmN5U3ltYm9sKGUpe2NvbnN0IHQ9Wy4uLkhxKGUsQXJyYXkuaXNBcnJh'@; put 'eSwiYXJyYXkiLCJjdXJyZW5jeVN5bWJvbCIpXTtyZXR1cm4gdC5mb3JFYWNoKHI9PntpZigic3RyaW5nIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFNjKCJzdHJpbmdbXSIsImN1cnJlbmN5U3ltYm9sIik7aWYoIiI9PT1yKXRocm93IG5ldyBNSnQoImN1cnJlbmN5U3ltYm9sIil9KSx0fWdldCBs'@; put 'aWNlbnNlS2V5VmFsaWRpdHlTdGF0ZSgpe3JldHVybiAkV2UuZ2V0KHRoaXMpLmxpY2Vuc2VLZXlWYWxpZGl0eVN0YXRlfWdldENvbmZpZygpe3JldHVybiBxV2UodGhpcyl9bWVyZ2VDb25maWcoZSl7Y29uc3QgdD1PYmplY3QuYXNzaWduKHt9LHRoaXMuZ2V0Q29uZmlnKCksZSk7cmV0dXJu'@; put 'IGgyLndhcm5EZXByZWNhdGVkT3B0aW9ucyhlKSxuZXcgaDIodCwhMSl9c3RhdGljIHdhcm5EZXByZWNhdGVkT3B0aW9ucyhlKXtoMi53YXJuRGVwcmVjYXRlZElmVXNlZChlLmJpbmFyeVNlYXJjaFRocmVzaG9sZCwiYmluYXJ5U2VhcmNoVGhyZXNob2xkIiwiMS4xIil9c3RhdGljIHdhcm5E'@; put 'ZXByZWNhdGVkSWZVc2VkKGUsdCxyLGkpe3ZvaWQgMCE9PWUmJmNvbnNvbGUud2Fybih2b2lkIDA9PT1pP2Ake3R9IG9wdGlvbiBpcyBkZXByZWNhdGVkIHNpbmNlICR7cn1gOmAke3R9IG9wdGlvbiBpcyBkZXByZWNhdGVkIHNpbmNlICR7cn0sIHBsZWFzZSB1c2UgJHtpfWApfX1mdW5jdGlv'@; put 'biBxV2Uobil7dmFyIGU7Y29uc3QgdD17fTtmb3IoY29uc3QgciBpbiBoMi5kZWZhdWx0Q29uZmlnKXtjb25zdCBpPW51bGwhPT0oZT1uW3JdKSYmdm9pZCAwIT09ZT9lOmgyLmRlZmF1bHRDb25maWdbcl07dFtyXT1BcnJheS5pc0FycmF5KGkpP1suLi5pXTppfXJldHVybiB0fWgyLmRlZmF1'@; put 'bHRDb25maWc9e2FjY2VudFNlbnNpdGl2ZTohMSxiaW5hcnlTZWFyY2hUaHJlc2hvbGQ6MjAsY3VycmVuY3lTeW1ib2w6WyIkIl0sY2FzZVNlbnNpdGl2ZTohMSxjYXNlRmlyc3Q6Imxvd2VyIixjb250ZXh0OnZvaWQgMCxjaG9vc2VBZGRyZXNzTWFwcGluZ1BvbGljeTpuZXcgY2xhc3Mga2Vu'@; put 'e2NhbGwoKXtyZXR1cm4gR0p0fX0sZGF0ZUZvcm1hdHM6WyJERC9NTS9ZWVlZIiwiREQvTU0vWVkiXSxkZWNpbWFsU2VwYXJhdG9yOiIuIixldmFsdWF0ZU51bGxUb1plcm86ITEsZnVuY3Rpb25BcmdTZXBhcmF0b3I6IiwiLGZ1bmN0aW9uUGx1Z2luczpbXSxpZ25vcmVQdW5jdHVhdGlvbjoh'@; put 'MSxsYW5ndWFnZToiZW5HQiIsaWdub3JlV2hpdGVTcGFjZToic3RhbmRhcmQiLGxpY2Vuc2VLZXk6IiIsbGVhcFllYXIxOTAwOiExLGxvY2FsZUxhbmc6ImVuIixtYXRjaFdob2xlQ2VsbDohMCxhcnJheUNvbHVtblNlcGFyYXRvcjoiLCIsYXJyYXlSb3dTZXBhcmF0b3I6IjsiLG1heFJvd3M6'@; put 'NGU0LG1heENvbHVtbnM6MTgyNzgsbnVsbFllYXI6MzAsbnVsbERhdGU6e3llYXI6MTg5OSxtb250aDoxMixkYXk6MzB9LHBhcnNlRGF0ZVRpbWU6ZnVuY3Rpb24geWVuKG4sZSx0KXtpZih2b2lkIDA9PT1lJiZ2b2lkIDA9PT10KXJldHVybjtsZXQgcj1uLnJlcGxhY2UobWVuLCIgIikudHJp'@; put 'bSgpLnRvTG93ZXJDYXNlKCk7aWYoIWZ1bmN0aW9uIENlbihuKXtyZXR1cm4gZ2VuLnRlc3Qobil9KHIpKXJldHVybjtsZXQgaT1yLnN1YnN0cmluZyhyLmxlbmd0aC0yKTsiYW0iPT09aXx8InBtIj09PWk/cj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTIpLnRyaW0oKTooaT1yLnN1YnN0cmlu'@; put 'ZyhyLmxlbmd0aC0xKSwiYSI9PT1pfHwicCI9PT1pP3I9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC0xKS50cmltKCk6aT12b2lkIDApO2NvbnN0IG89ci5zcGxpdCh5V2UpO28ubGVuZ3RoPj0yJiZvW28ubGVuZ3RoLTJdLmluY2x1ZGVzKCI6IikmJihvW28ubGVuZ3RoLTJdPW9bby5sZW5ndGgt'@; put 'Ml0rIi4iK29bby5sZW5ndGgtMV0sby5wb3AoKSk7Y29uc3QgYT1vW28ubGVuZ3RoLTFdLnNwbGl0KCI6Iik7aWYodm9pZCAwIT09aSYmYS5wdXNoKGkpLDE9PT1vLmxlbmd0aClyZXR1cm4gd1dlKGEsdCk7aWYoMT09PWEubGVuZ3RoKXJldHVybiBDV2UobyxlKTtjb25zdCBsPUNXZShvLnNs'@; put 'aWNlKDAsby5sZW5ndGgtMSksZSksdT13V2UoYSx0KTtyZXR1cm4gdm9pZCAwIT09bD92b2lkIDA9PT11P3ZvaWQgMDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbCksdSk6dm9pZCAwfSxwcmVjaXNpb25FcHNpbG9uOjFlLTEzLHByZWNpc2lvblJvdW5kaW5nOjE0LHNtYXJ0Um91'@; put 'bmRpbmc6ITAsc3RyaW5naWZ5RGF0ZVRpbWU6ZnVuY3Rpb24gRmVuKG4sZSl7Y29uc3QgdD1jbWUoZSk7aWYodm9pZCAwPT09dClyZXR1cm47Y29uc3Qgcj10LnRva2VucztsZXQgaT0iIixvPSExO2NvbnN0IGE9ci5zb21lKGw9PmwudHlwZT09PVc2LkZPUk1BVCYmKCJhL3AiPT09bC52YWx1'@; put 'ZXx8IkEvUCI9PT1sLnZhbHVlfHwiYW0vcG0iPT09bC52YWx1ZXx8IkFNL1BNIj09PWwudmFsdWUpKTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrKyl7Y29uc3QgdT1yW2xdO2lmKHUudHlwZSE9PVc2LkZSRUVfVEVYVClzd2l0Y2godS52YWx1ZS50b0xvd2VyQ2FzZSgpKXtjYXNlImgiOmNh'@; put 'c2UiaGgiOm89ITAsaSs9cnAoYT8obi5ob3VycysxMSklMTIrMTpuLmhvdXJzLHUudmFsdWUubGVuZ3RoKTticmVhaztjYXNlImQiOmNhc2UiZGQiOmkrPXJwKG4uZGF5LHUudmFsdWUubGVuZ3RoKTticmVhaztjYXNlInMiOmNhc2Uic3MiOmkrPXJwKE1hdGguZmxvb3Iobi5zZWNvbmRzKSx1'@; put 'LnZhbHVlLmxlbmd0aCk7YnJlYWs7Y2FzZSJtIjpjYXNlIm1tIjpsKzE8ci5sZW5ndGgmJnJbbCsxXS52YWx1ZS5zdGFydHNXaXRoKCI6IikmJihvPSEwKSxpKz1ycChvP24ubWludXRlczpuLm1vbnRoLHUudmFsdWUubGVuZ3RoKSxvPSEwO2JyZWFrO2Nhc2UieXkiOmkrPXJwKG4ueWVhciUx'@; put 'MDAsdS52YWx1ZS5sZW5ndGgpO2JyZWFrO2Nhc2UieXl5eSI6aSs9bi55ZWFyO2JyZWFrO2Nhc2UiYW0vcG0iOmNhc2UiYS9wIjp7Y29uc3RbZyxFXT11LnZhbHVlLnNwbGl0KCIvIik7aSs9bi5ob3VyczwxMj9nOkU7YnJlYWt9ZGVmYXVsdDppZihpbWUudGVzdCh1LnZhbHVlKSl7Y29uc3Qg'@; put 'Zz11LnZhbHVlLmxlbmd0aC0zO2krPWAke24uc2Vjb25kczwxMD8iMCI6IiJ9JHtNYXRoLmZsb29yKG4uc2Vjb25kcypNYXRoLnBvdygxMCxnKSkvTWF0aC5wb3coMTAsZyl9YDtjb250aW51ZX1yZXR1cm59ZWxzZSBpKz11LnZhbHVlfXJldHVybiBpfSxzdHJpbmdpZnlEdXJhdGlvbjpmdW5j'@; put 'dGlvbiBOZW4obixlKXtjb25zdCB0PWNtZShlKTtpZih2b2lkIDA9PT10KXJldHVybjtjb25zdCByPXQudG9rZW5zO2xldCBpPSIiO2Zvcihjb25zdCBvIG9mIHIpaWYoby50eXBlIT09VzYuRlJFRV9URVhUKXN3aXRjaChvLnZhbHVlLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaCI6Y2FzZSJoaCI6'@; put 'aSs9cnAobi5ob3VycyxvLnZhbHVlLmxlbmd0aCksbi5ob3Vycz0wO2JyZWFrO2Nhc2UiW2hoXSI6aSs9cnAobi5ob3VycyxvLnZhbHVlLmxlbmd0aC0yKSxuLmhvdXJzPTA7YnJlYWs7Y2FzZSJtIjpjYXNlIm1tIjppKz1ycChuLm1pbnV0ZXMsby52YWx1ZS5sZW5ndGgpLG4ubWludXRlcz0w'@; put 'O2JyZWFrO2Nhc2UiW21tXSI6aSs9cnAobi5taW51dGVzKzYwKm4uaG91cnMsby52YWx1ZS5sZW5ndGgtMiksbi5taW51dGVzPTAsbi5ob3Vycz0wO2JyZWFrO2Nhc2UicyI6Y2FzZSJzcyI6aSs9cnAoTWF0aC5mbG9vcihuLnNlY29uZHMpLG8udmFsdWUubGVuZ3RoKTticmVhaztkZWZhdWx0'@; put 'OmlmKGltZS50ZXN0KG8udmFsdWUpKXtjb25zdCBhPU1hdGgubWF4KG8udmFsdWUubGVuZ3RoLTMsMCk7aSs9YCR7bi5zZWNvbmRzPDEwPyIwIjoiIn0ke01hdGguZmxvb3Iobi5zZWNvbmRzKk1hdGgucG93KDEwLGEpKS9NYXRoLnBvdygxMCxhKX1gO2NvbnRpbnVlfXJldHVybn1lbHNlIGkr'@; put 'PW8udmFsdWU7cmV0dXJuIGl9LHRpbWVGb3JtYXRzOlsiaGg6bW0iLCJoaDptbTpzcy5zc3MiXSx0aG91c2FuZFNlcGFyYXRvcjoiIix1bmRvTGltaXQ6MjAsdXNlUmVndWxhckV4cHJlc3Npb25zOiExLHVzZVdpbGRjYXJkczohMCx1c2VDb2x1bW5JbmRleDohMSx1c2VTdGF0czohMSx1c2VB'@; put 'cnJheUFyaXRobWV0aWM6ITF9O2NvbnN0IG1tZT17ZXJyb3JzOntDWUNMRToiI0NZQ0xFISIsRElWX0JZX1pFUk86IiNESVYvMCEiLEVSUk9SOiIjRVJST1IhIixOQToiI04vQSIsTkFNRToiI05BTUU/IixOVU06IiNOVU0hIixSRUY6IiNSRUYhIixTUElMTDoiI1NQSUxMISIsVkFMVUU6IiNW'@; put 'QUxVRSEifSxmdW5jdGlvbnM6e0ZJTFRFUjoiRklMVEVSIixBRERSRVNTOiJBRERSRVNTIixBUlJBWV9DT05TVFJBSU46IkFSUkFZX0NPTlNUUkFJTiIsQVJSQVlGT1JNVUxBOiJBUlJBWUZPUk1VTEEiLEFCUzoiQUJTIixBQ09TOiJBQ09TIixBQ09TSDoiQUNPU0giLEFDT1Q6IkFDT1QiLEFD'@; put 'T1RIOiJBQ09USCIsQU5EOiJBTkQiLEFSQUJJQzoiQVJBQklDIixBU0lOOiJBU0lOIixBU0lOSDoiQVNJTkgiLEFUQU4yOiJBVEFOMiIsQVRBTjoiQVRBTiIsQVRBTkg6IkFUQU5IIixBVkVSQUdFOiJBVkVSQUdFIixBVkVSQUdFQToiQVZFUkFHRUEiLEFWRVJBR0VJRjoiQVZFUkFHRUlGIixC'@; put 'QVNFOiJCQVNFIixCSU4yREVDOiJCSU4yREVDIixCSU4ySEVYOiJCSU4ySEVYIixCSU4yT0NUOiJCSU4yT0NUIixCSVRBTkQ6IkJJVEFORCIsQklUTFNISUZUOiJCSVRMU0hJRlQiLEJJVE9SOiJCSVRPUiIsQklUUlNISUZUOiJCSVRSU0hJRlQiLEJJVFhPUjoiQklUWE9SIixDRUlMSU5HOiJD'@; put 'RUlMSU5HIixDSEFSOiJDSEFSIixDSE9PU0U6IkNIT09TRSIsQ0xFQU46IkNMRUFOIixDT0RFOiJDT0RFIixDT0xVTU46IkNPTFVNTiIsQ09MVU1OUzoiQ09MVU1OUyIsQ09OQ0FURU5BVEU6IkNPTkNBVEVOQVRFIixDT1JSRUw6IkNPUlJFTCIsQ09TOiJDT1MiLENPU0g6IkNPU0giLENPVDoi'@; put 'Q09UIixDT1RIOiJDT1RIIixDT1VOVDoiQ09VTlQiLENPVU5UQToiQ09VTlRBIixDT1VOVEJMQU5LOiJDT1VOVEJMQU5LIixDT1VOVElGOiJDT1VOVElGIixDT1VOVElGUzoiQ09VTlRJRlMiLENPVU5UVU5JUVVFOiJDT1VOVFVOSVFVRSIsQ1NDOiJDU0MiLENTQ0g6IkNTQ0giLENVTUlQTVQ6'@; put 'IkNVTUlQTVQiLENVTVBSSU5DOiJDVU1QUklOQyIsREFURToiREFURSIsREFURURJRjoiREFURURJRiIsREFURVZBTFVFOiJEQVRFVkFMVUUiLERBWToiREFZIixEQVlTMzYwOiJEQVlTMzYwIixEQVlTOiJEQVlTIixEQjoiREIiLEREQjoiRERCIixERUMyQklOOiJERUMyQklOIixERUMySEVY'@; put 'OiJERUMySEVYIixERUMyT0NUOiJERUMyT0NUIixERUNJTUFMOiJERUNJTUFMIixERUdSRUVTOiJERUdSRUVTIixERUxUQToiREVMVEEiLERPTExBUkRFOiJET0xMQVJERSIsRE9MTEFSRlI6IkRPTExBUkZSIixFREFURToiRURBVEUiLEVGRkVDVDoiRUZGRUNUIixFT01PTlRIOiJFT01PTlRI'@; put 'IixFUkY6IkVSRiIsRVJGQzoiRVJGQyIsRVZFTjoiRVZFTiIsRVhBQ1Q6IkVYQUNUIixFWFA6IkVYUCIsRkFMU0U6IkZBTFNFIixGSU5EOiJGSU5EIixGT1JNVUxBVEVYVDoiRk9STVVMQVRFWFQiLEZWOiJGViIsRlZTQ0hFRFVMRToiRlZTQ0hFRFVMRSIsSEVYMkJJTjoiSEVYMkJJTiIsSEVY'@; put 'MkRFQzoiSEVYMkRFQyIsSEVYMk9DVDoiSEVYMk9DVCIsSExPT0tVUDoiSExPT0tVUCIsSE9VUjoiSE9VUiIsSFlQRVJMSU5LOiJIWVBFUkxJTksiLElGOiJJRiIsSUZFUlJPUjoiSUZFUlJPUiIsSUZOQToiSUZOQSIsSUZTOiJJRlMiLElOREVYOiJJTkRFWCIsSU5UOiJJTlQiLElOVEVSVkFM'@; put 'OiJJTlRFUlZBTCIsSVBNVDoiSVBNVCIsSVNCSU5BUlk6IklTQklOQVJZIixJU0JMQU5LOiJJU0JMQU5LIixJU0VSUjoiSVNFUlIiLElTRVJST1I6IklTRVJST1IiLElTRVZFTjoiSVNFVkVOIixJU0ZPUk1VTEE6IklTRk9STVVMQSIsSVNMT0dJQ0FMOiJJU0xPR0lDQUwiLElTTkE6IklTTkEi'@; put 'LElTTk9OVEVYVDoiSVNOT05URVhUIixJU05VTUJFUjoiSVNOVU1CRVIiLElTT0REOiJJU09ERCIsSVNPV0VFS05VTToiSVNPV0VFS05VTSIsSVNQTVQ6IklTUE1UIixJU1JFRjoiSVNSRUYiLElTVEVYVDoiSVNURVhUIixMRUZUOiJMRUZUIixMRU46IkxFTiIsTE46IkxOIixMT0cxMDoiTE9H'@; put 'MTAiLExPRzoiTE9HIixMT1dFUjoiTE9XRVIiLE1BVENIOiJNQVRDSCIsTUFYOiJNQVgiLE1BWEE6Ik1BWEEiLE1BWElGUzoiTUFYSUZTIixNQVhQT09MOiJNQVhQT09MIixNRURJQU46Ik1FRElBTiIsTUVESUFOUE9PTDoiTUVESUFOUE9PTCIsTUlEOiJNSUQiLE1JTjoiTUlOIixNSU5BOiJN'@; put 'SU5BIixNSU5JRlM6Ik1JTklGUyIsTUlOVVRFOiJNSU5VVEUiLE1JUlI6Ik1JUlIiLE1NVUxUOiJNTVVMVCIsTU9EOiJNT0QiLE1PTlRIOiJNT05USCIsTkE6Ik5BIixORVRXT1JLREFZUzoiTkVUV09SS0RBWVMiLCJORVRXT1JLREFZUy5JTlRMIjoiTkVUV09SS0RBWVMuSU5UTCIsTk9NSU5B'@; put 'TDoiTk9NSU5BTCIsTk9UOiJOT1QiLE5PVzoiTk9XIixOUEVSOiJOUEVSIixOUFY6Ik5QViIsT0NUMkJJTjoiT0NUMkJJTiIsT0NUMkRFQzoiT0NUMkRFQyIsT0NUMkhFWDoiT0NUMkhFWCIsT0REOiJPREQiLE9GRlNFVDoiT0ZGU0VUIixPUjoiT1IiLFBJOiJQSSIsUE1UOiJQTVQiLFBEVVJB'@; put 'VElPTjoiUERVUkFUSU9OIixQUk9EVUNUOiJQUk9EVUNUIixQT1dFUjoiUE9XRVIiLFBQTVQ6IlBQTVQiLFBST1BFUjoiUFJPUEVSIixQVjoiUFYiLFJBRElBTlM6IlJBRElBTlMiLFJBTkQ6IlJBTkQiLFJBVEU6IlJBVEUiLFJFUExBQ0U6IlJFUExBQ0UiLFJFUFQ6IlJFUFQiLFJJR0hUOiJS'@; put 'SUdIVCIsUk9NQU46IlJPTUFOIixST1VORDoiUk9VTkQiLFJPVU5ERE9XTjoiUk9VTkRET1dOIixST1VORFVQOiJST1VORFVQIixST1c6IlJPVyIsUk9XUzoiUk9XUyIsUlJJOiJSUkkiLFNFQVJDSDoiU0VBUkNIIixTRUM6IlNFQyIsU0VDSDoiU0VDSCIsU0VDT05EOiJTRUNPTkQiLFNIRUVU'@; put 'OiJTSEVFVCIsU0hFRVRTOiJTSEVFVFMiLFNJTjoiU0lOIixTSU5IOiJTSU5IIixTTE46IlNMTiIsU1BMSVQ6IlNQTElUIixTUVJUOiJTUVJUIixTVERFVkE6IlNUREVWQSIsIlNUREVWLlAiOiJTVERFVi5QIixTVERFVlBBOiJTVERFVlBBIiwiU1RERVYuUyI6IlNUREVWLlMiLFNVQlNUSVRV'@; put 'VEU6IlNVQlNUSVRVVEUiLFNVQlRPVEFMOiJTVUJUT1RBTCIsU1VNOiJTVU0iLFNVTUlGOiJTVU1JRiIsU1VNSUZTOiJTVU1JRlMiLFNVTVBST0RVQ1Q6IlNVTVBST0RVQ1QiLFNVTVNROiJTVU1TUSIsU1dJVENIOiJTV0lUQ0giLFNZRDoiU1lEIixUOiJUIixUQU46IlRBTiIsVEFOSDoiVEFO'@; put 'SCIsVEJJTExFUToiVEJJTExFUSIsVEJJTExQUklDRToiVEJJTExQUklDRSIsVEJJTExZSUVMRDoiVEJJTExZSUVMRCIsVEVYVDoiVEVYVCIsVElNRToiVElNRSIsVElNRVZBTFVFOiJUSU1FVkFMVUUiLFRPREFZOiJUT0RBWSIsVFJBTlNQT1NFOiJUUkFOU1BPU0UiLFRSSU06IlRSSU0iLFRS'@; put 'VUU6IlRSVUUiLFRSVU5DOiJUUlVOQyIsVU5JQ0hBUjoiVU5JQ0hBUiIsVU5JQ09ERToiVU5JQ09ERSIsVVBQRVI6IlVQUEVSIixWQVJBOiJWQVJBIiwiVkFSLlAiOiJWQVIuUCIsVkFSUEE6IlZBUlBBIiwiVkFSLlMiOiJWQVIuUyIsVkxPT0tVUDoiVkxPT0tVUCIsV0VFS0RBWToiV0VFS0RB'@; put 'WSIsV0VFS05VTToiV0VFS05VTSIsV09SS0RBWToiV09SS0RBWSIsIldPUktEQVkuSU5UTCI6IldPUktEQVkuSU5UTCIsWE5QVjoiWE5QViIsWE9SOiJYT1IiLFlFQVI6IllFQVIiLFlFQVJGUkFDOiJZRUFSRlJBQyIsIkhGLkFERCI6IkhGLkFERCIsIkhGLkNPTkNBVCI6IkhGLkNPTkNBVCIs'@; put 'IkhGLkRJVklERSI6IkhGLkRJVklERSIsIkhGLkVRIjoiSEYuRVEiLCJIRi5HVCI6IkhGLkdUIiwiSEYuR1RFIjoiSEYuR1RFIiwiSEYuTFQiOiJIRi5MVCIsIkhGLkxURSI6IkhGLkxURSIsIkhGLk1JTlVTIjoiSEYuTUlOVVMiLCJIRi5NVUxUSVBMWSI6IkhGLk1VTFRJUExZIiwiSEYuTkUi'@; put 'OiJIRi5ORSIsIkhGLlBPVyI6IkhGLlBPVyIsIkhGLlVNSU5VUyI6IkhGLlVNSU5VUyIsIkhGLlVOQVJZX1BFUkNFTlQiOiJIRi5VTkFSWV9QRVJDRU5UIiwiSEYuVVBMVVMiOiJIRi5VUExVUyIsVkFSUDoiVkFSUCIsVkFSOiJWQVIiLFNUREVWUDoiU1RERVZQIixTVERFVjoiU1RERVYiLCJF'@; put 'WFBPTi5ESVNUIjoiRVhQT04uRElTVCIsRklTSEVSOiJGSVNIRVIiLEZJU0hFUklOVjoiRklTSEVSSU5WIixHQU1NQToiR0FNTUEiLCJHQU1NQS5ESVNUIjoiR0FNTUEuRElTVCIsR0FNTUFMTjoiR0FNTUFMTiIsIkdBTU1BTE4uUFJFQ0lTRSI6IkdBTU1BTE4uUFJFQ0lTRSIsIkdBTU1BLklO'@; put 'ViI6IkdBTU1BLklOViIsR0FVU1M6IkdBVVNTIixGQUNUOiJGQUNUIixGQUNURE9VQkxFOiJGQUNURE9VQkxFIixDT01CSU46IkNPTUJJTiIsQ09NQklOQToiQ09NQklOQSIsR0NEOiJHQ0QiLExDTToiTENNIixNUk9VTkQ6Ik1ST1VORCIsTVVMVElOT01JQUw6Ik1VTFRJTk9NSUFMIixRVU9U'@; put 'SUVOVDoiUVVPVElFTlQiLFJBTkRCRVRXRUVOOiJSQU5EQkVUV0VFTiIsU0VSSUVTU1VNOiJTRVJJRVNTVU0iLFNJR046IlNJR04iLFNRUlRQSToiU1FSVFBJIixTVU1YMk1ZMjoiU1VNWDJNWTIiLFNVTVgyUFkyOiJTVU1YMlBZMiIsU1VNWE1ZMjoiU1VNWE1ZMiIsRVhQT05ESVNUOiJFWFBP'@; put 'TkRJU1QiLEdBTU1BRElTVDoiR0FNTUFESVNUIixHQU1NQUlOVjoiR0FNTUFJTlYiLCJCRVRBLkRJU1QiOiJCRVRBLkRJU1QiLEJFVEFESVNUOiJCRVRBRElTVCIsIkJFVEEuSU5WIjoiQkVUQS5JTlYiLEJFVEFJTlY6IkJFVEFJTlYiLCJCSU5PTS5ESVNUIjoiQklOT00uRElTVCIsQklOT01E'@; put 'SVNUOiJCSU5PTURJU1QiLCJCSU5PTS5JTlYiOiJCSU5PTS5JTlYiLEJFU1NFTEk6IkJFU1NFTEkiLEJFU1NFTEo6IkJFU1NFTEoiLEJFU1NFTEs6IkJFU1NFTEsiLEJFU1NFTFk6IkJFU1NFTFkiLCJDSElTUS5ESVNUIjoiQ0hJU1EuRElTVCIsIkNISVNRLkRJU1QuUlQiOiJDSElTUS5ESVNU'@; put 'LlJUIiwiQ0hJU1EuSU5WIjoiQ0hJU1EuSU5WIiwiQ0hJU1EuSU5WLlJUIjoiQ0hJU1EuSU5WLlJUIixDSElESVNUOiJDSElESVNUIixDSElJTlY6IkNISUlOViIsIkYuRElTVCI6IkYuRElTVCIsIkYuRElTVC5SVCI6IkYuRElTVC5SVCIsIkYuSU5WIjoiRi5JTlYiLCJGLklOVi5SVCI6IkYu'@; put 'SU5WLlJUIixGRElTVDoiRkRJU1QiLEZJTlY6IkZJTlYiLFdFSUJVTEw6IldFSUJVTEwiLCJXRUlCVUxMLkRJU1QiOiJXRUlCVUxMLkRJU1QiLFBPSVNTT046IlBPSVNTT04iLCJQT0lTU09OLkRJU1QiOiJQT0lTU09OLkRJU1QiLCJIWVBHRU9NLkRJU1QiOiJIWVBHRU9NLkRJU1QiLEhZUEdF'@; put 'T01ESVNUOiJIWVBHRU9NRElTVCIsIlQuRElTVCI6IlQuRElTVCIsIlQuRElTVC4yVCI6IlQuRElTVC4yVCIsIlQuRElTVC5SVCI6IlQuRElTVC5SVCIsIlQuSU5WIjoiVC5JTlYiLCJULklOVi4yVCI6IlQuSU5WLjJUIixURElTVDoiVERJU1QiLFRJTlY6IlRJTlYiLExPR0lOVjoiTE9HSU5W'@; put 'IiwiTE9HTk9STS5ESVNUIjoiTE9HTk9STS5ESVNUIiwiTE9HTk9STS5JTlYiOiJMT0dOT1JNLklOViIsTE9HTk9STURJU1Q6IkxPR05PUk1ESVNUIiwiTk9STS5ESVNUIjoiTk9STS5ESVNUIiwiTk9STS5JTlYiOiJOT1JNLklOViIsIk5PUk0uUy5ESVNUIjoiTk9STS5TLkRJU1QiLCJOT1JN'@; put 'LlMuSU5WIjoiTk9STS5TLklOViIsTk9STURJU1Q6Ik5PUk1ESVNUIixOT1JNSU5WOiJOT1JNSU5WIixOT1JNU0RJU1Q6Ik5PUk1TRElTVCIsTk9STVNJTlY6Ik5PUk1TSU5WIixQSEk6IlBISSIsIk5FR0JJTk9NLkRJU1QiOiJORUdCSU5PTS5ESVNUIixORUdCSU5PTURJU1Q6Ik5FR0JJTk9N'@; put 'RElTVCIsQ09NUExFWDoiQ09NUExFWCIsSU1BQlM6IklNQUJTIixJTUFHSU5BUlk6IklNQUdJTkFSWSIsSU1BUkdVTUVOVDoiSU1BUkdVTUVOVCIsSU1DT05KVUdBVEU6IklNQ09OSlVHQVRFIixJTUNPUzoiSU1DT1MiLElNQ09TSDoiSU1DT1NIIixJTUNPVDoiSU1DT1QiLElNQ1NDOiJJTUNT'@; put 'QyIsSU1DU0NIOiJJTUNTQ0giLElNRElWOiJJTURJViIsSU1FWFA6IklNRVhQIixJTUxOOiJJTUxOIixJTUxPRzEwOiJJTUxPRzEwIixJTUxPRzI6IklNTE9HMiIsSU1QT1dFUjoiSU1QT1dFUiIsSU1QUk9EVUNUOiJJTVBST0RVQ1QiLElNUkVBTDoiSU1SRUFMIixJTVNFQzoiSU1TRUMiLElN'@; put 'U0VDSDoiSU1TRUNIIixJTVNJTjoiSU1TSU4iLElNU0lOSDoiSU1TSU5IIixJTVNRUlQ6IklNU1FSVCIsSU1TVUI6IklNU1VCIixJTVNVTToiSU1TVU0iLElNVEFOOiJJTVRBTiIsTEFSR0U6IkxBUkdFIixTTUFMTDoiU01BTEwiLEFWRURFVjoiQVZFREVWIixDT05GSURFTkNFOiJDT05GSURF'@; put 'TkNFIiwiQ09ORklERU5DRS5OT1JNIjoiQ09ORklERU5DRS5OT1JNIiwiQ09ORklERU5DRS5UIjoiQ09ORklERU5DRS5UIixERVZTUToiREVWU1EiLEdFT01FQU46IkdFT01FQU4iLEhBUk1FQU46IkhBUk1FQU4iLENSSVRCSU5PTToiQ1JJVEJJTk9NIiwiQ09WQVJJQU5DRS5QIjoiQ09WQVJJ'@; put 'QU5DRS5QIiwiQ09WQVJJQU5DRS5TIjoiQ09WQVJJQU5DRS5TIixDT1ZBUjoiQ09WQVIiLFBFQVJTT046IlBFQVJTT04iLFJTUToiUlNRIixTVEFOREFSRElaRToiU1RBTkRBUkRJWkUiLCJaLlRFU1QiOiJaLlRFU1QiLFpURVNUOiJaVEVTVCIsIkYuVEVTVCI6IkYuVEVTVCIsRlRFU1Q6IkZU'@; put 'RVNUIixTVEVZWDoiU1RFWVgiLFNMT1BFOiJTTE9QRSIsIkNISVNRLlRFU1QiOiJDSElTUS5URVNUIixDSElURVNUOiJDSElURVNUIiwiVC5URVNUIjoiVC5URVNUIixUVEVTVDoiVFRFU1QiLFNLRVc6IlNLRVciLCJTS0VXLlAiOiJTS0VXLlAiLFdFSUJVTExESVNUOiJXRUlCVUxMRElTVCIs'@; put 'VkFSUzoiVkFSUyIsVElOVjJUOiJUSU5WMlQiLFRESVNUUlQ6IlRESVNUUlQiLFRESVNUMlQ6IlRESVNUMlQiLFNUREVWUzoiU1RERVZTIixGSU5WUlQ6IkZJTlZSVCIsRkRJU1RSVDoiRkRJU1RSVCIsQ0hJRElTVFJUOiJDSElESVNUUlQiLENISUlOVlJUOiJDSElJTlZSVCIsQ09WQVJJQU5D'@; put 'RVA6IkNPVkFSSUFOQ0VQIixDT1ZBUklBTkNFUzoiQ09WQVJJQU5DRVMiLExPR05PUk1JTlY6IkxPR05PUk1JTlYiLFBPSVNTT05ESVNUOiJQT0lTU09ORElTVCIsU0tFV1A6IlNLRVdQIiwiQ0VJTElORy5NQVRIIjoiQ0VJTElORy5NQVRIIixGTE9PUjoiRkxPT1IiLCJGTE9PUi5NQVRIIjoi'@; put 'RkxPT1IuTUFUSCIsIkNFSUxJTkcuUFJFQ0lTRSI6IkNFSUxJTkcuUFJFQ0lTRSIsIkZMT09SLlBSRUNJU0UiOiJGTE9PUi5QUkVDSVNFIiwiSVNPLkNFSUxJTkciOiJJU08uQ0VJTElORyJ9LGxhbmdDb2RlOiJlbkdCIix1aTp7TkVXX1NIRUVUX1BSRUZJWDoiU2hlZXQifX07dmFyIEhDPWZ1'@; put 'bmN0aW9uKG4pe3JldHVybiBuW24uRnVsbHlBYnNvbHV0ZT0xXT0iRnVsbHlBYnNvbHV0ZSIsbltuLlJvd0Fic29sdXRlQ29sUmVsYXRpdmU9Ml09IlJvd0Fic29sdXRlQ29sUmVsYXRpdmUiLG5bbi5Sb3dSZWxhdGl2ZUNvbEFic29sdXRlPTNdPSJSb3dSZWxhdGl2ZUNvbEFic29sdXRlIixu'@; put 'W24uRnVsbHlSZWxhdGl2ZT00XT0iRnVsbHlSZWxhdGl2ZSIsbn0oSEN8fHt9KTtjbGFzcyBLV2UgZXh0ZW5kcyBCc3t2ZXJpZnlBZGRyZXNzQXJndW1lbnRzKGUsdCxyLGkpe2lmKGkpe2lmKGU8MXx8dDwxKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuTGVzc1RoYW5PbmUpfWVsc2UgaWYo'@; put 'SEMuRnVsbHlBYnNvbHV0ZT09cil7aWYoZTwxfHx0PDEpcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5MZXNzVGhhbk9uZSl9ZWxzZSBpZihIQy5Sb3dBYnNvbHV0ZUNvbFJlbGF0aXZlPT1yKXtpZihlPDEpcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5MZXNzVGhhbk9uZSl9ZWxzZSBpZihI'@; put 'Qy5Sb3dSZWxhdGl2ZUNvbEFic29sdXRlPT1yJiZ0PDEpcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5MZXNzVGhhbk9uZSl9YWRkcmVzcyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkFERFJFU1MiKSwocixpLG8sYSxsKT0+e2NvbnN0IHU9'@; put 'dGhpcy52ZXJpZnlBZGRyZXNzQXJndW1lbnRzKHIsaSxvLGEpO2lmKHZvaWQgMCE9PXUpcmV0dXJuIHU7Y29uc3QgZz1FcShpLTEpO2xldCBFPSIiO251bGwhPWwmJihFPWAke2x9IWApO2NvbnN0IE89MD09aT8iQyI6YENbJHtpfV1gLFo9MD09cj8iUiI6YFJbJHtyfV1gO3JldHVybiBIQy5G'@; put 'dWxseVJlbGF0aXZlPT1vP2E/YCR7RX0ke2d9JHtyfWA6YCR7RX0ke1p9JHtPfWA6SEMuUm93UmVsYXRpdmVDb2xBYnNvbHV0ZT09bz9hP2Ake0V9JCR7Z30ke3J9YDpgJHtFfSR7Wn1DJHtpfWA6SEMuUm93QWJzb2x1dGVDb2xSZWxhdGl2ZT09bz9hP2Ake0V9JHtnfSQke3J9YDpgJHtFfVIk'@; put 'e3J9JHtPfWA6YT9gJHtFfSQke2d9JCR7cn1gOmAke0V9UiR7cn1DJHtpfWB9KX19S1dlLmltcGxlbWVudGVkRnVuY3Rpb25zPXtBRERSRVNTOnttZXRob2Q6ImFkZHJlc3MiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2Fy'@; put 'Z3VtZW50VHlwZTpldC5OVU1CRVIsb3B0aW9uYWxBcmc6ITAsZGVmYXVsdFZhbHVlOjEsbWluVmFsdWU6MSxtYXhWYWx1ZTo0fSx7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU4sb3B0aW9uYWxBcmc6ITAsZGVmYXVsdFZhbHVlOiEwfSx7YXJndW1lbnRUeXBlOmV0LlNUUklORyxvcHRpb25hbEFy'@; put 'ZzohMH1dfX07Y2xhc3MgWFdlIGV4dGVuZHMgQnN7YXJyYXlmb3JtdWxhKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQVJSQVlGT1JNVUxBIikscj0+cil9YXJyYXlmb3JtdWxhQXJyYXlTaXplKGUsdCl7aWYoMSE9PWUuYXJncy5sZW5ndGgp'@; put 'cmV0dXJuIHlsLmVycm9yKCk7Y29uc3Qgcj10aGlzLm1ldGFkYXRhKCJBUlJBWUZPUk1VTEEiKTtyZXR1cm4gZS5hcmdzLm1hcChvPT57dmFyIGE7cmV0dXJuIHRoaXMuYXJyYXlTaXplRm9yQXN0KG8sbmV3IHo2KHQuZm9ybXVsYUFkZHJlc3MsdC5hcnJheXNGbGFnfHxudWxsIT09KGE9cj8u'@; put 'YXJyYXlGdW5jdGlvbikmJnZvaWQgMCE9PWEmJmEpKX0pWzBdfWFycmF5Y29uc3RyYWluKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQVJSQVlfQ09OU1RSQUlOIiksKHIsaSxvKT0+e2k9TWF0aC5taW4oaSxyLmhlaWdodCgpKSxvPU1hdGgu'@; put 'bWluKG8sci53aWR0aCgpKTtjb25zdCBhPXIuZGF0YSxsPVtdO2ZvcihsZXQgdT0wO3U8aTt1KyspbC5wdXNoKGFbdV0uc2xpY2UoMCxvKSk7cmV0dXJuIGxhLm9ubHlWYWx1ZXMobCl9KX1hcnJheWNvbnN0cmFpbkFycmF5U2l6ZShlLHQpe2lmKDMhPT1lLmFyZ3MubGVuZ3RoKXJldHVybiB5'@; put 'bC5lcnJvcigpO2NvbnN0IHI9dGhpcy5tZXRhZGF0YSgiQVJSQVlfQ09OU1RSQUlOIiksaT1lLmFyZ3MubWFwKGw9Pnt2YXIgdTtyZXR1cm4gdGhpcy5hcnJheVNpemVGb3JBc3QobCxuZXcgejYodC5mb3JtdWxhQWRkcmVzcyx0LmFycmF5c0ZsYWd8fG51bGwhPT0odT1yPy5hcnJheUZ1bmN0'@; put 'aW9uKSYmdm9pZCAwIT09dSYmdSkpfSk7bGV0e2hlaWdodDpvLHdpZHRoOmF9PWlbMF07cmV0dXJuIGUuYXJnc1sxXS50eXBlPT09cm4uTlVNQkVSJiYobz1NYXRoLm1pbihvLGUuYXJnc1sxXS52YWx1ZSkpLGUuYXJnc1syXS50eXBlPT09cm4uTlVNQkVSJiYoYT1NYXRoLm1pbihhLGUuYXJn'@; put 'c1syXS52YWx1ZSkpLG88MXx8YTwxfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoYSk/eWwuZXJyb3IoKTpuZXcgeWwoYSxvKX1maWx0ZXIoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJGSUxURVIiKSwociwuLi5p'@; put 'KT0+e2Zvcihjb25zdCBsIG9mIGkpaWYoci53aWR0aCgpIT09bC53aWR0aCgpfHxyLmhlaWdodCgpIT09bC5oZWlnaHQoKSlyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLkVxdWFsTGVuZ3RoKTtpZihyLndpZHRoKCk+MSYmci5oZWlnaHQoKT4xKXJldHVybiBuZXcgUHQodG4uTkEsZHIuV3JvbmdE'@; put 'aW1lbnNpb24pO2NvbnN0IG89ci5kYXRhLGE9W107Zm9yKGxldCBsPTA7bDxyLmhlaWdodCgpO2wrKyl7Y29uc3QgdT1bXTtmb3IobGV0IGc9MDtnPHIud2lkdGgoKTtnKyspe2xldCBFPSEwO2Zvcihjb25zdCBPIG9mIGkpaWYoITAhPT1kV2UoTy5kYXRhW2xdW2ddKSl7RT0hMTticmVha31F'@; put 'JiZ1LnB1c2gob1tsXVtnXSl9dS5sZW5ndGg+MCYmYS5wdXNoKHUpfXJldHVybiBhLmxlbmd0aD4wP2xhLm9ubHlWYWx1ZXMoYSk6bmV3IFB0KHRuLk5BLGRyLkVtcHR5UmFuZ2UpfSl9ZmlsdGVyQXJyYXlTaXplKGUsdCl7aWYoZS5hcmdzLmxlbmd0aDw9MSlyZXR1cm4geWwuZXJyb3IoKTtj'@; put 'b25zdCByPXRoaXMubWV0YWRhdGEoIkZJTFRFUiIpLGk9ZS5hcmdzLm1hcChsPT57dmFyIHU7cmV0dXJuIHRoaXMuYXJyYXlTaXplRm9yQXN0KGwsbmV3IHo2KHQuZm9ybXVsYUFkZHJlc3MsdC5hcnJheXNGbGFnfHxudWxsIT09KHU9cj8uYXJyYXlGdW5jdGlvbikmJnZvaWQgMCE9PXUmJnUp'@; put 'KX0pLG89TWF0aC5tYXgoLi4uaS5tYXAobD0+bC53aWR0aCkpLGE9TWF0aC5tYXgoLi4uaS5tYXAobD0+bC5oZWlnaHQpKTtyZXR1cm4gbmV3IHlsKG8sYSl9fVhXZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17QVJSQVlGT1JNVUxBOnttZXRob2Q6ImFycmF5Zm9ybXVsYSIsYXJyYXlTaXplTWV0'@; put 'aG9kOiJhcnJheWZvcm11bGFBcnJheVNpemUiLGFycmF5RnVuY3Rpb246ITAscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5BTll9XX0sQVJSQVlfQ09OU1RSQUlOOnttZXRob2Q6ImFycmF5Y29uc3RyYWluIixhcnJheVNpemVNZXRob2Q6ImFycmF5Y29uc3RyYWluQXJyYXlTaXplIixw'@; put 'YXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLG1pblZhbHVlOjF9XSx2ZWN0b3JpemF0aW9uRm9yYmlkZGVuOiEwfSxGSUxURVI6e21ldGhvZDoiZmlsdGVyIixhcnJh'@; put 'eVNpemVNZXRob2Q6ImZpbHRlckFycmF5U2l6ZSIsYXJyYXlGdW5jdGlvbjohMCxwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV0scmVwZWF0TGFzdEFyZ3M6MX19O2NsYXNzIFFXZSBleHRlbmRzIEJze2FicyhlLHQpe3JldHVybiB0'@; put 'aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkFCUyIpLE1hdGguYWJzKX19UVdlLmltcGxlbWVudGVkRnVuY3Rpb25zPXtBQlM6e21ldGhvZDoiYWJzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfX07Y2xhc3MgdFllIGV4dGVuZHMgQnN7Yml0'@; put 'bHNoaWZ0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQklUTFNISUZUIiksblllKX1iaXRyc2hpZnQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCSVRSU0hJRlQiKSxyWWUpfX1mdW5jdGlv'@; put 'biBuWWUobixlKXtyZXR1cm4gZTwwP3JZZShuLC1lKTppWWUobipNYXRoLnBvdygyLGUpKX1mdW5jdGlvbiByWWUobixlKXtyZXR1cm4gZTwwP25ZZShuLC1lKTppWWUoTWF0aC5mbG9vcihuL01hdGgucG93KDIsZSkpKX1mdW5jdGlvbiBpWWUobil7cmV0dXJuIG4+MHhmZmZmZmZmZmZmZmY/'@; put 'bmV3IFB0KHRuLk5VTSxkci5CaXRzaGlmdExvbmcpOm59dFllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtCSVRMU0hJRlQ6e21ldGhvZDoiYml0bHNoaWZ0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLG1p'@; put 'blZhbHVlOi01MyxtYXhWYWx1ZTo1M31dfSxCSVRSU0hJRlQ6e21ldGhvZDoiYml0cnNoaWZ0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLG1pblZhbHVlOi01MyxtYXhWYWx1ZTo1M31dfX07Y2xhc3Mg'@; put 'b1llIGV4dGVuZHMgQnN7Yml0YW5kKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQklUQU5EIiksKHIsaSk9PnImaSl9Yml0b3IoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCSVRPUiIpLChy'@; put 'LGkpPT5yfGkpfWJpdHhvcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkJJVFhPUiIpLChyLGkpPT5yXmkpfX1vWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0JJVEFORDp7bWV0aG9kOiJiaXRhbmQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5'@; put 'cGU6ZXQuSU5URUdFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MH1dfSxCSVRPUjp7bWV0aG9kOiJiaXRvciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuSU5URUdFUixtaW5W'@; put 'YWx1ZTowfV19LEJJVFhPUjp7bWV0aG9kOiJiaXR4b3IiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuSU5URUdFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MH1dfX07Y2xhc3MgYVllIGV4dGVuZHMgQnN7bGl0ZXJhbFRydWUoZSx0KXtyZXR1'@; put 'cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJUUlVFIiksKCk9PiEwKX1saXRlcmFsRmFsc2UoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJGQUxTRSIpLCgpPT4hMSl9Y29uZGl0aW9uYWxJZihlLHQpe3JldHVy'@; put 'biB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklGIiksKHIsaSxvKT0+cj9pOm8pfWlmcyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklGUyIpLCguLi5yKT0+e2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSs9Milp'@; put 'ZihyW2ldKXJldHVybiByW2krMV07cmV0dXJuIG5ldyBQdCh0bi5OQSxkci5Ob0NvbmRpdGlvbk1ldCl9KX1hbmQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJBTkQiKSwoLi4ucik9PnIuZmlsdGVyKGk9PnZvaWQgMCE9PWkpLmV2ZXJ5KGk9'@; put 'PiEhaSkpfW9yKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiT1IiKSwoLi4ucik9PnIuZmlsdGVyKGk9PnZvaWQgMCE9PWkpLnNvbWUoaT0+aSkpfW5vdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRh'@; put 'dGEoIk5PVCIpLHI9PiFyKX14b3IoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJYT1IiKSwoLi4ucik9PntsZXQgaT0wO3JldHVybiByLmZpbHRlcihvPT52b2lkIDAhPT1vKS5mb3JFYWNoKG89PntvJiZpKyt9KSxpJTI9PTF9KX1zd2l0Y2go'@; put 'ZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTV0lUQ0giKSwociwuLi5pKT0+e2NvbnN0IG89aS5sZW5ndGg7bGV0IGE9MDtmb3IoO2ErMTxvO2ErPTIpaWYoIShpW2FdaW5zdGFuY2VvZiBQdCkmJnRoaXMuYXJpdGhtZXRpY0hlbHBlci5lcShy'@; put 'LGlbYV0pKXJldHVybiBpW2ErMV07cmV0dXJuIGE8bz9pW2FdOm5ldyBQdCh0bi5OQSxkci5Ob0RlZmF1bHQpfSl9aWZlcnJvcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklGRVJST1IiKSwocixpKT0+ciBpbnN0YW5jZW9mIFB0P2k6cil9'@; put 'aWZuYShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklGTkEiKSwocixpKT0+ciBpbnN0YW5jZW9mIFB0JiZyLnR5cGU9PT10bi5OQT9pOnIpfWNob29zZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRh'@; put 'dGEoIkNIT09TRSIpLChyLC4uLmkpPT5yPmkubGVuZ3RoP25ldyBQdCh0bi5OVU0sZHIuU2VsZWN0b3IpOmlbci0xXSl9fWFZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17VFJVRTp7bWV0aG9kOiJsaXRlcmFsVHJ1ZSIscGFyYW1ldGVyczpbXX0sRkFMU0U6e21ldGhvZDoibGl0ZXJhbEZhbHNl'@; put 'IixwYXJhbWV0ZXJzOltdfSxJRjp7bWV0aG9kOiJjb25kaXRpb25hbElmIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59LHthcmd1bWVudFR5cGU6ZXQuU0NBTEFSLHBhc3NTdWJ0eXBlOiEwfSx7YXJndW1lbnRUeXBlOmV0LlNDQUxBUixkZWZhdWx0VmFsdWU6ITEscGFz'@; put 'c1N1YnR5cGU6ITB9XX0sSUZTOnttZXRob2Q6ImlmcyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5CT09MRUFOfSx7YXJndW1lbnRUeXBlOmV0LlNDQUxBUixwYXNzU3VidHlwZTohMH1dLHJlcGVhdExhc3RBcmdzOjJ9LEFORDp7bWV0aG9kOiJhbmQiLHBhcmFtZXRlcnM6W3thcmd1'@; put 'bWVudFR5cGU6ZXQuQk9PTEVBTn1dLHJlcGVhdExhc3RBcmdzOjEsZXhwYW5kUmFuZ2VzOiEwfSxPUjp7bWV0aG9kOiJvciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5CT09MRUFOfV0scmVwZWF0TGFzdEFyZ3M6MSxleHBhbmRSYW5nZXM6ITB9LFhPUjp7bWV0aG9kOiJ4b3IiLHBh'@; put 'cmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQk9PTEVBTn1dLHJlcGVhdExhc3RBcmdzOjEsZXhwYW5kUmFuZ2VzOiEwfSxOT1Q6e21ldGhvZDoibm90IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59XX0sU1dJVENIOnttZXRob2Q6InN3aXRjaCIscGFyYW1ldGVyczpb'@; put 'e2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SfSx7YXJndW1lbnRUeXBlOmV0LlNDQUxBUixwYXNzU3VidHlwZTohMH0se2FyZ3VtZW50VHlwZTpldC5TQ0FMQVIscGFzc1N1YnR5cGU6ITB9XSxyZXBlYXRMYXN0QXJnczoxfSxJRkVSUk9SOnttZXRob2Q6ImlmZXJyb3IiLHBhcmFtZXRlcnM6W3th'@; put 'cmd1bWVudFR5cGU6ZXQuU0NBTEFSLHBhc3NTdWJ0eXBlOiEwfSx7YXJndW1lbnRUeXBlOmV0LlNDQUxBUixwYXNzU3VidHlwZTohMH1dfSxJRk5BOnttZXRob2Q6ImlmbmEiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU0NBTEFSLHBhc3NTdWJ0eXBlOiEwfSx7YXJndW1lbnRUeXBl'@; put 'OmV0LlNDQUxBUixwYXNzU3VidHlwZTohMH1dfSxDSE9PU0U6e21ldGhvZDoiY2hvb3NlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5TQ0FMQVIscGFzc1N1YnR5cGU6ITB9XSxyZXBlYXRMYXN0QXJnczoxfX07Y2xh'@; put 'c3Mgc1llIGV4dGVuZHMgQnN7Y2hhcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNIQVIiKSxyPT5yPDF8fHI+PTI1Nj9uZXcgUHQodG4uVkFMVUUsZHIuQ2hhcmFjdGVyQ29kZUJvdW5kcyk6U3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnRy'@; put 'dW5jKHIpKSl9dW5pY2hhcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNIQVIiKSxyPT5yPDF8fHI+PTExMTQxMTI/bmV3IFB0KHRuLlZBTFVFLGRyLkNoYXJhY3RlckNvZGVCb3VuZHMpOlN0cmluZy5mcm9tQ29kZVBvaW50KE1hdGgudHJ1'@; put 'bmMocikpKX19c1llLmltcGxlbWVudGVkRnVuY3Rpb25zPXtDSEFSOnttZXRob2Q6ImNoYXIiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LFVOSUNIQVI6e21ldGhvZDoidW5pY2hhciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX19O2NsYXNz'@; put 'IGxZZSBleHRlbmRzIEJze2NvZGUoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDT0RFIikscj0+MD09PXIubGVuZ3RoP25ldyBQdCh0bi5WQUxVRSxkci5FbXB0eVN0cmluZyk6ci5jaGFyQ29kZUF0KDApKX11bmljb2RlKGUsdCl7cmV0dXJu'@; put 'IHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiVU5JQ09ERSIpLHI9Pnt2YXIgaTtyZXR1cm4gbnVsbCE9PShpPXIuY29kZVBvaW50QXQoMCkpJiZ2b2lkIDAhPT1pP2k6bmV3IFB0KHRuLlZBTFVFLGRyLkVtcHR5U3RyaW5nKX0pfX1sWWUuaW1wbGVtZW50ZWRGdW5j'@; put 'dGlvbnM9e0NPREU6e21ldGhvZDoiY29kZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XX0sVU5JQ09ERTp7bWV0aG9kOiJ1bmljb2RlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR31dfX07Y2xhc3MgY1llIGV4dGVuZHMgQnN7Y291bnRibGFuayhl'@; put 'LHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPVU5UQkxBTksiKSwoLi4ucik9PntsZXQgaT0wO3JldHVybiByLmZvckVhY2gobz0+e289PT1sbCYmaSsrfSksaX0pfX1jWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0NPVU5UQkxBTks6e21ldGhv'@; put 'ZDoiY291bnRibGFuayIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FMQVJ9XSxyZXBlYXRMYXN0QXJnczoxLGV4cGFuZFJhbmdlczohMH19O2NsYXNzIHVZZSBleHRlbmRzIEJze2NvdW50dW5pcXVlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5t'@; put 'ZXRhZGF0YSgiQ09VTlRVTklRVUUiKSwoLi4ucik9Pntjb25zdCBpPW5ldyBTZXQsbz1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIHIpYSBpbnN0YW5jZW9mIFB0P28uYWRkKGEudHlwZSk6IiIhPT1hJiZpLmFkZChhKTtyZXR1cm4gaS5zaXplK28uc2l6ZX0pfX11WWUuaW1wbGVtZW50ZWRGdW5j'@; put 'dGlvbnM9e0NPVU5UVU5JUVVFOnttZXRob2Q6ImNvdW50dW5pcXVlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNDQUxBUn1dLHJlcGVhdExhc3RBcmdzOjEsZXhwYW5kUmFuZ2VzOiEwfX07Y2xhc3MgZFllIGV4dGVuZHMgQnN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVu'@; put 'dHMpLHRoaXMuaXNvd2Vla251bUNvcmU9ZT0+e2NvbnN0IHQ9TWF0aC5mbG9vcih0aGlzLmRhdGVUaW1lSGVscGVyLnJlbGF0aXZlTnVtYmVyVG9BYnNvbHV0ZU51bWJlcihlKSkscj10aGlzLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0ZShlKSxpPXRoaXMuZGF0ZVRpbWVIZWxw'@; put 'ZXIuZGF0ZVRvTnVtYmVyKHt5ZWFyOnIueWVhcixtb250aDoxLGRheToxfSksbz10aGlzLmRhdGVUaW1lSGVscGVyLnJlbGF0aXZlTnVtYmVyVG9BYnNvbHV0ZU51bWJlcihpKSxhPW8rKCg0LW8pJTcrNyklNyxsPU1hdGguZmxvb3IoKHQtMSkvNyktTWF0aC5mbG9vcigoYS0xKS83KSsxO3Jl'@; put 'dHVybiAwPT09bD90aGlzLmlzb3dlZWtudW1Db3JlKGUtNykrMTpsfSx0aGlzLmRheXMzNjBDb3JlPShlLHQscik9Pntjb25zdCBpPXRoaXMuZGF0ZVRpbWVIZWxwZXIubnVtYmVyVG9TaW1wbGVEYXRlKGUpLG89dGhpcy5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGUodCk7bGV0'@; put 'IGEsbDtyZXR1cm4gcj8oYT1UV2UoaSksbD1UV2UobykpOlthLGxdPXRoaXMuZGF0ZVRpbWVIZWxwZXIudG9CYXNpc1VTKGksbyksMzYwKihsLnllYXItYS55ZWFyKSszMCoobC5tb250aC1hLm1vbnRoKStsLmRheS1hLmRheX19ZGF0ZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUu'@; put 'YXJncyx0LHRoaXMubWV0YWRhdGEoIkRBVEUiKSwocixpLG8pPT57Y29uc3QgYT1NYXRoLnRydW5jKG8pO2xldCBsPU1hdGgudHJ1bmMoaSksdT1NYXRoLnRydW5jKHIpO3U8dGhpcy5kYXRlVGltZUhlbHBlci5nZXRFcG9jaFllYXJaZXJvKCkmJih1Kz10aGlzLmRhdGVUaW1lSGVscGVyLmdl'@; put 'dEVwb2NoWWVhclplcm8oKSk7Y29uc3QgZz1NYXRoLmZsb29yKChsLTEpLzEyKTt1Kz1nLGwtPTEyKmc7Y29uc3QgRT17eWVhcjp1LG1vbnRoOmwsZGF5OjF9O2lmKHRoaXMuZGF0ZVRpbWVIZWxwZXIuaXNWYWxpZERhdGUoRSkpe2xldCBPPXRoaXMuZGF0ZVRpbWVIZWxwZXIuZGF0ZVRvTnVt'@; put 'YmVyKEUpKyhhLTEpO3JldHVybiBPPXRoaXMuZGF0ZVRpbWVIZWxwZXIuZ2V0V2l0aGluQm91bmRzKE8pLHZvaWQgMD09PU8/bmV3IFB0KHRuLk5VTSxkci5EYXRlQm91bmRzKTpPfXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuSW52YWxpZERhdGUpfSl9dGltZShlLHQpe3JldHVybiB0aGlz'@; put 'LnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlRJTUUiKSwocixpLG8pPT57Y29uc3QgYT1sQSh7aG91cnM6TWF0aC50cnVuYyhyKSxtaW51dGVzOk1hdGgudHJ1bmMoaSksc2Vjb25kczpNYXRoLnRydW5jKG8pfSk7cmV0dXJuIGE8MD9uZXcgUHQodG4uTlVNLGRyLk5lZ2F0'@; put 'aXZlVGltZSk6YSUxfSl9ZW9tb250aChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkVPTU9OVEgiKSwocixpKT0+e2NvbnN0IG89dGhpcy5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGUocik7bGV0IGE9dGhpcy5kYXRlVGltZUhl'@; put 'bHBlci5kYXRlVG9OdW1iZXIodGhpcy5kYXRlVGltZUhlbHBlci5lbmRPZk1vbnRoKE1XZShvLGkpKSk7cmV0dXJuIGE9dGhpcy5kYXRlVGltZUhlbHBlci5nZXRXaXRoaW5Cb3VuZHMoYSksdm9pZCAwPT09YT9uZXcgUHQodG4uTlVNLGRyLkRhdGVCb3VuZHMpOmF9KX1kYXkoZSx0KXtyZXR1'@; put 'cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJEQVkiKSxyPT50aGlzLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0ZShyKS5kYXkpfWRheXMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJEQVlTIiks'@; put 'KHIsaSk9Pk1hdGgudHJ1bmMociktTWF0aC50cnVuYyhpKSl9bW9udGgoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJNT05USCIpLHI9PnRoaXMuZGF0ZVRpbWVIZWxwZXIubnVtYmVyVG9TaW1wbGVEYXRlKHIpLm1vbnRoKX15ZWFyKGUsdCl7'@; put 'cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiWUVBUiIpLHI9PnRoaXMuZGF0ZVRpbWVIZWxwZXIubnVtYmVyVG9TaW1wbGVEYXRlKHIpLnllYXIpfWhvdXIoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJI'@; put 'T1VSIikscj0+c0EobG1lKHIpJTEpLmhvdXJzKX1taW51dGUoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJNSU5VVEUiKSxyPT5zQShsbWUociklMSkubWludXRlcyl9c2Vjb25kKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdz'@; put 'LHQsdGhpcy5tZXRhZGF0YSgiU0VDT05EIikscj0+c0EobG1lKHIpJTEpLnNlY29uZHMpfXRleHQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJURVhUIiksKHIsaSk9PkRlbihyLGksdGhpcy5jb25maWcsdGhpcy5kYXRlVGltZUhlbHBlcikp'@; put 'fXdlZWtkYXkoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJXRUVLREFZIiksKHIsaSk9Pntjb25zdCBvPU1hdGguZmxvb3IodGhpcy5kYXRlVGltZUhlbHBlci5yZWxhdGl2ZU51bWJlclRvQWJzb2x1dGVOdW1iZXIocikpO2lmKDM9PT1pKXJl'@; put 'dHVybihvLTEpJTc7Y29uc3QgYT1wWWUuZ2V0KGkpO3JldHVybiB2b2lkIDA9PT1hP25ldyBQdCh0bi5OVU0sZHIuQmFkTW9kZSk6KG8tYSklNysxfSl9d2Vla251bShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIldFRUtOVU0iKSwocixpKT0+'@; put 'e2NvbnN0IG89TWF0aC5mbG9vcih0aGlzLmRhdGVUaW1lSGVscGVyLnJlbGF0aXZlTnVtYmVyVG9BYnNvbHV0ZU51bWJlcihyKSksYT10aGlzLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0ZShyKSxsPXRoaXMuZGF0ZVRpbWVIZWxwZXIuZGF0ZVRvTnVtYmVyKHt5ZWFyOmEueWVh'@; put 'cixtb250aDoxLGRheToxfSksdT10aGlzLmRhdGVUaW1lSGVscGVyLnJlbGF0aXZlTnVtYmVyVG9BYnNvbHV0ZU51bWJlcihsKTtpZigyMT09PWkpcmV0dXJuIHRoaXMuaXNvd2Vla251bUNvcmUocik7Y29uc3QgZz1wWWUuZ2V0KGkpO3JldHVybiB2b2lkIDA9PT1nP25ldyBQdCh0bi5OVU0s'@; put 'ZHIuQmFkTW9kZSk6TWF0aC5mbG9vcigoby1nKS83KS1NYXRoLmZsb29yKCh1LWcpLzcpKzF9KX1pc293ZWVrbnVtKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSVNPV0VFS05VTSIpLHRoaXMuaXNvd2Vla251bUNvcmUpfWRhdGV2YWx1ZShl'@; put 'LHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkRBVEVWQUxVRSIpLHI9Pntjb25zdHtkYXRlVGltZTppfT10aGlzLmRhdGVUaW1lSGVscGVyLnBhcnNlRGF0ZVRpbWVGcm9tQ29uZmlnRm9ybWF0cyhyKTtyZXR1cm4gdm9pZCAwPT09aT9uZXcgUHQo'@; put 'dG4uVkFMVUUsZHIuSW5jb3JyZWN0RGF0ZVRpbWUpOnBQKGkpPyhFV2UoaSk/TWF0aC50cnVuYyhsQShpKSk6MCkrdGhpcy5kYXRlVGltZUhlbHBlci5kYXRlVG9OdW1iZXIoaSk6MH0pfXRpbWV2YWx1ZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRh'@; put 'dGEoIlRJTUVWQUxVRSIpLHI9Pntjb25zdCBpPXRoaXMuZGF0ZVRpbWVIZWxwZXIuZGF0ZVN0cmluZ1RvRGF0ZU51bWJlcihyKTtyZXR1cm4gdm9pZCAwPT09aT9uZXcgUHQodG4uVkFMVUUsZHIuSW5jb3JyZWN0RGF0ZVRpbWUpOkxvKGkpJTF9KX1ub3coZSx0KXtyZXR1cm4gdGhpcy5ydW5G'@; put 'dW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJOT1ciKSwoKT0+e2NvbnN0IHI9bmV3IERhdGUoRGF0ZS5ub3coKSk7cmV0dXJuIGxBKHtob3VyczpyLmdldEhvdXJzKCksbWludXRlczpyLmdldE1pbnV0ZXMoKSxzZWNvbmRzOnIuZ2V0U2Vjb25kcygpfSkrdGhpcy5kYXRlVGltZUhl'@; put 'bHBlci5kYXRlVG9OdW1iZXIoe3llYXI6ci5nZXRGdWxsWWVhcigpLG1vbnRoOnIuZ2V0TW9udGgoKSsxLGRheTpyLmdldERhdGUoKX0pfSl9dG9kYXkoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJUT0RBWSIpLCgpPT57Y29uc3Qgcj1uZXcg'@; put 'RGF0ZShEYXRlLm5vdygpKTtyZXR1cm4gdGhpcy5kYXRlVGltZUhlbHBlci5kYXRlVG9OdW1iZXIoe3llYXI6ci5nZXRGdWxsWWVhcigpLG1vbnRoOnIuZ2V0TW9udGgoKSsxLGRheTpyLmdldERhdGUoKX0pfSl9ZWRhdGUoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0'@; put 'aGlzLm1ldGFkYXRhKCJFREFURSIpLChyLGkpPT57Y29uc3QgYT1mdW5jdGlvbiBUZW4obil7cmV0dXJue3llYXI6bi55ZWFyLG1vbnRoOm4ubW9udGgsZGF5Ok1hdGgubWluKG4uZGF5LGFtZVtuLm1vbnRoLTFdKX19KE1XZSh0aGlzLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0'@; put 'ZShyKSxpKSk7bGV0IGw9dGhpcy5kYXRlVGltZUhlbHBlci5kYXRlVG9OdW1iZXIoYSk7cmV0dXJuIGw9dGhpcy5kYXRlVGltZUhlbHBlci5nZXRXaXRoaW5Cb3VuZHMobCksdm9pZCAwPT09bD9uZXcgUHQodG4uTlVNLGRyLkRhdGVCb3VuZHMpOmx9KX1kYXRlZGlmKGUsdCl7cmV0dXJuIHRo'@; put 'aXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiREFURURJRiIpLChyLGksbyk9PntpZihyPmkpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuU3RhcnRFbmREYXRlKTtpZigiRCI9PT1vKXJldHVybiBNYXRoLmZsb29yKGkpLU1hdGguZmxvb3Iocik7Y29uc3QgYT10aGlzLmRh'@; put 'dGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0ZShyKSxsPXRoaXMuZGF0ZVRpbWVIZWxwZXIubnVtYmVyVG9TaW1wbGVEYXRlKGkpO3N3aXRjaChvKXtjYXNlIk0iOnJldHVybiAxMioobC55ZWFyLWEueWVhcikrKGwubW9udGgtYS5tb250aCktKGwuZGF5PGEuZGF5PzE6MCk7Y2FzZSJZ'@; put 'TSI6cmV0dXJuKGwubW9udGgtYS5tb250aCsxMi0obC5kYXk8YS5kYXk/MTowKSklMTI7Y2FzZSJZIjpyZXR1cm4gbC5tb250aD5hLm1vbnRofHxsLm1vbnRoPT09YS5tb250aCYmbC5kYXk+PWEuZGF5P2wueWVhci1hLnllYXI6bC55ZWFyLWEueWVhci0xO2Nhc2UiTUQiOnJldHVybiBsLmRh'@; put 'eT49YS5kYXk/bC5kYXktYS5kYXk6dGhpcy5kYXRlVGltZUhlbHBlci5kYXlzSW5Nb250aCgxPT09bC5tb250aD9sLnllYXItMTpsLnllYXIsMT09PWwubW9udGg/MTI6bC5tb250aC0xKStsLmRheS1hLmRheTtjYXNlIllEIjpyZXR1cm4gbC5tb250aD5hLm1vbnRofHxsLm1vbnRoPT09YS5t'@; put 'b250aCYmbC5kYXk+PWEuZGF5P01hdGguZmxvb3IoaSktdGhpcy5kYXRlVGltZUhlbHBlci5kYXRlVG9OdW1iZXIoe3llYXI6bC55ZWFyLG1vbnRoOmEubW9udGgsZGF5OmEuZGF5fSk6TWF0aC5mbG9vcihpKS1NYXRoLmZsb29yKHIpLTM2NSoobC55ZWFyLWEueWVhci0xKS10aGlzLmRhdGVU'@; put 'aW1lSGVscGVyLmxlYXBZZWFyc0NvdW50KGwueWVhci0xKSt0aGlzLmRhdGVUaW1lSGVscGVyLmxlYXBZZWFyc0NvdW50KGEueWVhcik7ZGVmYXVsdDpyZXR1cm4gbmV3IFB0KHRuLk5VTSxkci5CYWRNb2RlKX19KX1kYXlzMzYwKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdz'@; put 'LHQsdGhpcy5tZXRhZGF0YSgiREFZUzM2MCIpLHRoaXMuZGF5czM2MENvcmUpfXllYXJmcmFjKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiWUVBUkZSQUMiKSwocixpLG8pPT57c3dpdGNoKChyPU1hdGgudHJ1bmMocikpPihpPU1hdGgudHJ1'@; put 'bmMoaSkpJiYoW3IsaV09W2kscl0pLG8pe2Nhc2UgMDpyZXR1cm4gdGhpcy5kYXlzMzYwQ29yZShyLGksITEpLzM2MDtjYXNlIDE6cmV0dXJuKGktcikvdGhpcy5kYXRlVGltZUhlbHBlci55ZWFyTGVuZ3RoRm9yQmFzaXModGhpcy5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGUo'@; put 'ciksdGhpcy5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGUoaSkpO2Nhc2UgMjpyZXR1cm4oaS1yKS8zNjA7Y2FzZSAzOnJldHVybihpLXIpLzM2NTtjYXNlIDQ6cmV0dXJuIHRoaXMuZGF5czM2MENvcmUocixpLCEwKS8zNjB9dGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbm90IGJl'@; put 'IHJlYWNoYWJsZS4iKX0pfWludGVydmFsKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU5URVJWQUwiKSxyPT57Y29uc3QgaT0ocj1NYXRoLnRydW5jKHIpKSU2MCxvPShyPU1hdGgudHJ1bmMoci82MCkpJTYwLGE9KHI9TWF0aC50cnVuYyhy'@; put 'LzYwKSklMjQsbD0ocj1NYXRoLnRydW5jKHIvMjQpKSUzMCx1PShyPU1hdGgudHJ1bmMoci8zMCkpJTEyLGc9TWF0aC50cnVuYyhyLzEyKTtyZXR1cm4iUCIrKGc+MD9gJHtnfVlgOiIiKSsodT4wP2Ake3V9TWA6IiIpKyhsPjA/YCR7bH1EYDoiIikrIlQiKyhhPjA/YCR7YX1IYDoiIikrKG8+'@; put 'MD9gJHtvfU1gOiIiKSsoaT4wP2Ake2l9U2A6IiIpfSl9bmV0d29ya2RheXMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJORVRXT1JLREFZUyIpLChyLGksbyk9PnRoaXMubmV0d29ya2RheXNjb3JlKHIsaSwxLG8pKX1uZXR3b3JrZGF5c2lu'@; put 'dGwoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJORVRXT1JLREFZUy5JTlRMIiksKHIsaSxvLGEpPT50aGlzLm5ldHdvcmtkYXlzY29yZShyLGksbyxhKSl9d29ya2RheShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRo'@; put 'aXMubWV0YWRhdGEoIldPUktEQVkiKSwocixpLG8pPT50aGlzLndvcmtkYXljb3JlKHIsaSwxLG8pKX13b3JrZGF5aW50bChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIldPUktEQVkuSU5UTCIpLChyLGksbyxhKT0+dGhpcy53b3JrZGF5Y29y'@; put 'ZShyLGksbyxhKSl9bmV0d29ya2RheXNjb3JlKGUsdCxyLGkpe2xldCBvPTE7KGU9TWF0aC50cnVuYyhlKSk+KHQ9TWF0aC50cnVuYyh0KSkmJihbZSx0XT1bdCxlXSxvPS0xKTtjb25zdCBhPWZZZShyKTtpZihhIGluc3RhbmNlb2YgUHQpcmV0dXJuIGE7Y29uc3QgbD10aGlzLnNpbXBsZVJh'@; put 'bmdlVG9GaWx0ZXJlZEhvbGlkYXlzKGEsaSk7cmV0dXJuIGwgaW5zdGFuY2VvZiBQdD9sOm8qdGhpcy5jb3VudFdvcmtkYXlzKGUsdCxhLGwpfXdvcmtkYXljb3JlKGUsdCxyLGkpe2U9TWF0aC50cnVuYyhlKSx0PU1hdGgudHJ1bmModCk7Y29uc3Qgbz1mWWUocik7aWYobyBpbnN0YW5jZW9m'@; put 'IFB0KXJldHVybiBvO2NvbnN0IGE9dGhpcy5zaW1wbGVSYW5nZVRvRmlsdGVyZWRIb2xpZGF5cyhvLGkpO2lmKGEgaW5zdGFuY2VvZiBQdClyZXR1cm4gYTtpZih0PjApe2xldCBsPTE7Zm9yKDt0aGlzLmNvdW50V29ya2RheXMoZSsxLGUrbCxvLGEpPHQ7KWwqPTI7bGV0IHU9MTtmb3IoO3Ur'@; put 'MTxsOyl7Y29uc3QgZz1NYXRoLnRydW5jKCh1K2wpLzIpO3RoaXMuY291bnRXb3JrZGF5cyhlKzEsZStnLG8sYSk8dD91PWc6bD1nfXJldHVybiBlK2x9aWYodDwwKXt0Kj0tMTtsZXQgbD0xO2Zvcig7dGhpcy5jb3VudFdvcmtkYXlzKGUtbCxlLTEsbyxhKTx0OylsKj0yO2xldCB1PTE7Zm9y'@; put 'KDt1KzE8bDspe2NvbnN0IGc9TWF0aC50cnVuYygodStsKS8yKTt0aGlzLmNvdW50V29ya2RheXMoZS1nLGUtMSxvLGEpPHQ/dT1nOmw9Z31yZXR1cm4gZS1sfXJldHVybiBlfWNvdW50V29ya2RheXMoZSx0LHIsaSl7Y29uc3Qgbz1NYXRoLmZsb29yKHRoaXMuZGF0ZVRpbWVIZWxwZXIucmVs'@; put 'YXRpdmVOdW1iZXJUb0Fic29sdXRlTnVtYmVyKHQpKSxhPU1hdGguZmxvb3IodGhpcy5kYXRlVGltZUhlbHBlci5yZWxhdGl2ZU51bWJlclRvQWJzb2x1dGVOdW1iZXIoZSkpO2xldCBsPTA7Zm9yKGxldCB1PTA7dTw3O3UrKykiMCI9PT1yLmNoYXJBdCh1KSYmKGwrPU1hdGguZmxvb3IoKG8r'@; put 'Ni11KS83KSxsLT1NYXRoLmZsb29yKChhLTErNi11KS83KSk7cmV0dXJuIGwtPWhZZSh0KzEsaSktaFllKGUsaSksbH1zaW1wbGVSYW5nZVRvRmlsdGVyZWRIb2xpZGF5cyhlLHQpe3ZhciByO2NvbnN0IGk9bnVsbCE9PShyPXQ/LnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpJiZ2b2lkIDAh'@; put 'PT1yP3I6W107Zm9yKGNvbnN0IGEgb2YgaSlpZihhIGluc3RhbmNlb2YgUHQpcmV0dXJuIGE7Y29uc3Qgbz1bXTtmb3IoY29uc3QgYSBvZiBpKWlmKGEhPT1sbCl7aWYoIWNjKGEpKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuV3JvbmdUeXBlKTtvLnB1c2goTWF0aC50cnVuYyhMbyhhKSkp'@; put 'fXJldHVyblsuLi5uZXcgU2V0KG8pXS5zb3J0KChhLGwpPT5hLWwpLmZpbHRlcihhPT57Y29uc3QgdT0odGhpcy5kYXRlVGltZUhlbHBlci5yZWxhdGl2ZU51bWJlclRvQWJzb2x1dGVOdW1iZXIoYSktMSklNztyZXR1cm4iMCI9PT1lLmNoYXJBdCh1KX0pfX1mdW5jdGlvbiBoWWUobixlKXtp'@; put 'ZigwPT09ZS5sZW5ndGh8fG48PWVbMF0pcmV0dXJuIDA7aWYoZVtlLmxlbmd0aC0xXTxuKXJldHVybiBlLmxlbmd0aDtsZXQgdD0wLHI9ZS5sZW5ndGgtMTtmb3IoO3QrMTxyOyl7Y29uc3QgaT1NYXRoLmZsb29yKChyK3QpLzIpO2VbaV0+PW4/cj1pOnQ9aX1yZXR1cm4gcn1mdW5jdGlvbiBm'@; put 'WWUobil7dmFyIGU7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBuJiYic3RyaW5nIiE9dHlwZW9mIG4/bmV3IFB0KHRuLlZBTFVFLGRyLldyb25nVHlwZSk6InN0cmluZyI9PXR5cGVvZiBuPzc9PT1uLmxlbmd0aCYmL14oMHwxKSokLy50ZXN0KG4pJiYiMTExMTExMSIhPT1uP246bmV3IFB0KHRu'@; put 'Lk5VTSxkci5XZWVrZW5kU3RyaW5nKTpudWxsIT09KGU9JHRuLmdldChuKSkmJnZvaWQgMCE9PWU/ZTpuZXcgUHQodG4uTlVNLGRyLkJhZE1vZGUpfWRZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17REFURTp7bWV0aG9kOiJkYXRlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJF'@; put 'Un0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfREFURX0sVElNRTp7bWV0aG9kOiJ0aW1lIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1C'@; put 'RVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfVElNRX0sTU9OVEg6e21ldGhvZDoibW9udGgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0sWUVBUjp7bWV0aG9kOiJ5ZWFyIixwYXJhbWV0ZXJz'@; put 'Olt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfV19LEhPVVI6e21ldGhvZDoiaG91ciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH1dfSxNSU5VVEU6e21ldGhvZDoibWludXRlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5V'@; put 'TUJFUixtaW5WYWx1ZTowfV19LFNFQ09ORDp7bWV0aG9kOiJzZWNvbmQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0sVEVYVDp7bWV0aG9kOiJ0ZXh0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpl'@; put 'dC5TVFJJTkd9XX0sRU9NT05USDp7bWV0aG9kOiJlb21vbnRoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dLHJldHVybk51bWJlclR5cGU6b2EuTlVNQkVSX0RBVEV9LERBWTp7bWV0aG9kOiJkYXkiLHBh'@; put 'cmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0sREFZUzp7bWV0aG9kOiJkYXlzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfV19LFdFRUtEQVk6e21l'@; put 'dGhvZDoid2Vla2RheSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjF9XX0sV0VFS05VTTp7bWV0aG9kOiJ3ZWVrbnVtIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJF'@; put 'UixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZhdWx0VmFsdWU6MX1dfSxJU09XRUVLTlVNOnttZXRob2Q6Imlzb3dlZWtudW0iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0sREFURVZBTFVFOnttZXRob2Q6ImRhdGV2YWx1'@; put 'ZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9EQVRFfSxUSU1FVkFMVUU6e21ldGhvZDoidGltZXZhbHVlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR31dLHJldHVybk51bWJlclR5cGU6b2EuTlVN'@; put 'QkVSX1RJTUV9LE5PVzp7bWV0aG9kOiJub3ciLHBhcmFtZXRlcnM6W10saXNWb2xhdGlsZTohMCxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9EQVRFVElNRX0sVE9EQVk6e21ldGhvZDoidG9kYXkiLHBhcmFtZXRlcnM6W10saXNWb2xhdGlsZTohMCxyZXR1cm5OdW1iZXJUeXBlOm9hLk5V'@; put 'TUJFUl9EQVRFfSxFREFURTp7bWV0aG9kOiJlZGF0ZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9EQVRFfSxEQVlTMzYwOnttZXRob2Q6ImRheXMzNjAi'@; put 'LHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuQk9PTEVBTixkZWZhdWx0VmFsdWU6ITF9XX0sREFURURJRjp7bWV0aG9kOiJkYXRlZGlmIixwYXJhbWV0ZXJz'@; put 'Olt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0LlNUUklOR31dfSxZRUFSRlJBQzp7bWV0aG9kOiJ5ZWFyZnJhYyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIs'@; put 'bWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLGRlZmF1bHRWYWx1ZTowLG1pblZhbHVlOjAsbWF4VmFsdWU6NH1dfSxJTlRFUlZBTDp7bWV0aG9kOiJpbnRlcnZhbCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlw'@; put 'ZTpldC5OVU1CRVIsbWluVmFsdWU6MH1dfSxORVRXT1JLREFZUzp7bWV0aG9kOiJuZXR3b3JrZGF5cyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5SQU5H'@; put 'RSxvcHRpb25hbEFyZzohMH1dfSwiTkVUV09SS0RBWVMuSU5UTCI6e21ldGhvZDoibmV0d29ya2RheXNpbnRsIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0'@; put 'Lk5PRVJST1IsZGVmYXVsdFZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuUkFOR0Usb3B0aW9uYWxBcmc6ITB9XX0sV09SS0RBWTp7bWV0aG9kOiJ3b3JrZGF5IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0s'@; put 'e2FyZ3VtZW50VHlwZTpldC5SQU5HRSxvcHRpb25hbEFyZzohMH1dfSwiV09SS0RBWS5JTlRMIjp7bWV0aG9kOiJ3b3JrZGF5aW50bCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6'@; put 'ZXQuTk9FUlJPUixkZWZhdWx0VmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRSxvcHRpb25hbEFyZzohMH1dfX07Y29uc3QgcFllPW5ldyBNYXAoW1sxLDBdLFsyLDFdLFsxMSwxXSxbMTIsMl0sWzEzLDNdLFsxNCw0XSxbMTUsNV0sWzE2LDZdLFsxNywwXV0pLCR0bj1uZXcgTWFwKFtb'@; put 'MSwiMDAwMDAxMSJdLFsyLCIxMDAwMDAxIl0sWzMsIjExMDAwMDAiXSxbNCwiMDExMDAwMCJdLFs1LCIwMDExMDAwIl0sWzYsIjAwMDExMDAiXSxbNywiMDAwMDExMCJdLFsxMSwiMDAwMDAwMSJdLFsxMiwiMTAwMDAwMCJdLFsxMywiMDEwMDAwMCJdLFsxNCwiMDAxMDAwMCJdLFsxNSwiMDAw'@; put 'MTAwMCJdLFsxNiwiMDAwMDEwMCJdLFsxNywiMDAwMDAxMCJdXSk7Y2xhc3MgZ1llIGV4dGVuZHMgQnN7ZGVncmVlcyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkRFR1JFRVMiKSxyPT5yKigxODAvTWF0aC5QSSkpfX1nWWUuaW1wbGVtZW50'@; put 'ZWRGdW5jdGlvbnM9e0RFR1JFRVM6e21ldGhvZDoiZGVncmVlcyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX19O2NsYXNzIG1ZZSBleHRlbmRzIEJze2RlbHRhKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiREVMVEEi'@; put 'KSwocixpKT0+cj09PWk/MTowKX19bVllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtERUxUQTp7bWV0aG9kOiJkZWx0YSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfV19fTtjbGFzcyB2WWUgZXh0ZW5k'@; put 'cyBCc3tleHAoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJFWFAiKSxNYXRoLmV4cCl9fXZZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17RVhQOnttZXRob2Q6ImV4cCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX19O2Ns'@; put 'YXNzIF9ZZSBleHRlbmRzIEJze3BtdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlBNVCIpLHZtZSl9aXBtdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklQTVQiKSxfbWUpfXBwbXQoZSx0'@; put 'KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJQUE1UIikseVllKX1mdihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkZWIikseW1lKX1jdW1pcG10KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24o'@; put 'ZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ1VNSVBNVCIpLChyLGksbyxhLGwsdSk9PntpZihhPmwpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuRW5kU3RhcnRQZXJpb2QpO2xldCBnPTA7Zm9yKGxldCBFPWE7RTw9bDtFKyspZys9X21lKHIsRSxpLG8sMCx1KTtyZXR1cm4gZ30pfWN1bXByaW5j'@; put 'KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ1VNUFJJTkMiKSwocixpLG8sYSxsLHUpPT57aWYoYT5sKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLkVuZFN0YXJ0UGVyaW9kKTtsZXQgZz0wO2ZvcihsZXQgRT1hO0U8PWw7RSsrKWcrPXlZZShy'@; put 'LEUsaSxvLDAsdSk7cmV0dXJuIGd9KX1kYihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkRCIiksKHIsaSxvLGEsbCk9PntpZigxMj09PWwmJmE+b3x8YT5vKzEpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuUGVyaW9kTG9uZyk7aWYoaT49cily'@; put 'ZXR1cm4gMDtjb25zdCB1PU1hdGgucm91bmQoMWUzKigxLU1hdGgucG93KGkvciwxL28pKSkvMWUzLGc9cip1KmwvMTI7aWYoMT09PWEpcmV0dXJuIGc7bGV0IEU9Zztmb3IobGV0IE89MDtPPGEtMjtPKyspRSs9KHItRSkqdTtyZXR1cm4gYT09PW8rMT8oci1FKSp1KigxMi1sKS8xMjooci1F'@; put 'KSp1fSl9ZGRiKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRERCIiksKHIsaSxvLGEsbCk9PntpZihhPm8pcmV0dXJuIG5ldyBQdCh0bi5OVU0pO2xldCBnLHU9bC9vO3U+PTE/KHU9MSxnPTE9PT1hP3I6MCk6Zz1yKk1hdGgucG93KDEtdSxh'@; put 'LTEpO2NvbnN0IEU9cipNYXRoLnBvdygxLXUsYSk7cmV0dXJuIE1hdGgubWF4KGctTWF0aC5tYXgoaSxFKSwwKX0pfWRvbGxhcmRlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRE9MTEFSREUiKSwocixpKT0+e2lmKGk8MSlyZXR1cm4gbmV3'@; put 'IFB0KHRuLkRJVl9CWV9aRVJPKTtmb3IoaT1NYXRoLnRydW5jKGkpO2k+MTA7KWkvPTEwO3JldHVybiBNYXRoLnRydW5jKHIpKzEwKihyLU1hdGgudHJ1bmMocikpL2l9KX1kb2xsYXJmcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkRPTExB'@; put 'UkZSIiksKHIsaSk9PntpZihpPDEpcmV0dXJuIG5ldyBQdCh0bi5ESVZfQllfWkVSTyk7Zm9yKGk9TWF0aC50cnVuYyhpKTtpPjEwOylpLz0xMDtyZXR1cm4gTWF0aC50cnVuYyhyKSsoci1NYXRoLnRydW5jKHIpKSppLzEwfSl9ZWZmZWN0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24o'@; put 'ZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRUZGRUNUIiksKHIsaSk9PihpPU1hdGgudHJ1bmMoaSksTWF0aC5wb3coMStyL2ksaSktMSkpfWlzcG10KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSVNQTVQiKSwocixpLG8sYSk9PjA9PT1vP25l'@; put 'dyBQdCh0bi5ESVZfQllfWkVSTyk6YSpyKihpL28tMSkpfW5vbWluYWwoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJOT01JTkFMIiksKHIsaSk9PihpPU1hdGgudHJ1bmMoaSksKE1hdGgucG93KHIrMSwxL2kpLTEpKmkpKX1ucGVyKGUsdCl7'@; put 'cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTlBFUiIpLChyLGksbyxhLGwpPT4wPT09cj8wPT09aT9uZXcgUHQodG4uRElWX0JZX1pFUk8pOigtby1hKS9pOihsJiYoaSo9MStyKSxNYXRoLmxvZygoaS1hKnIpLyhvKnIraSkpL01hdGgubG9nKDErcikp'@; put 'KX1yYXRlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUkFURSIpLChyLGksbyxhLGwsdSk9PntpZih1PD0tMSlyZXR1cm4gbmV3IFB0KHRuLlZBTFVFKTtjb25zdCBnPTFlLTc7bGV0IE89dTtsPWw/MTowO2ZvcihsZXQgWj0wO1o8NTA7Wisr'@; put 'KXtpZihPPD0tMSlyZXR1cm4gbmV3IFB0KHRuLk5VTSk7bGV0IGVlLHZlO2lmKE1hdGguYWJzKE8pPGcpZWU9byooMStyKk8pK2kqKDErTypsKSpyK2E7ZWxzZXtjb25zdCBNZT1NYXRoLnBvdygxK08scik7ZWU9bypNZStpKigxL08rbCkqKE1lLTEpK2F9aWYoTWF0aC5hYnMoZWUpPGcpcmV0'@; put 'dXJuIE87aWYoTWF0aC5hYnMoTyk8Zyl2ZT1vKnIraSpsKnI7ZWxzZXtjb25zdCBNZT1NYXRoLnBvdygxK08sciksSGU9cipNYXRoLnBvdygxK08sci0xKTt2ZT1vKkhlK2kqKDEvTytsKSpIZStpKigtMS8oTypPKSkqKE1lLTEpfU8tPWVlL3ZlfXJldHVybiBuZXcgUHQodG4uTlVNKX0pfXB2'@; put 'KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUFYiKSwocixpLG8sYSxsKT0+KGw9bD8xOjAsLTE9PT1yP25ldyBQdCgwPT09aT90bi5OVU06dG4uRElWX0JZX1pFUk8pOjA9PT1yPy1vKmktYTooKDEtTWF0aC5wb3coMStyLGkpKSpvKigxK3Iq'@; put 'bCkvci1hKS9NYXRoLnBvdygxK3IsaSkpKX1ycmkoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJSUkkiKSwocixpLG8pPT4wPT09aXx8bzwwJiZpPjB8fG8+MCYmaTwwP25ldyBQdCh0bi5OVU0pOk1hdGgucG93KG8vaSwxL3IpLTEpfXNsbihl'@; put 'LHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNMTiIpLChyLGksbyk9PjA9PT1vP25ldyBQdCh0bi5ESVZfQllfWkVSTyk6KHItaSkvbyl9c3lkKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiU1lE'@; put 'IiksKHIsaSxvLGEpPT5hPm8/bmV3IFB0KHRuLk5VTSk6KHItaSkqKG8tYSsxKSoyLyhvKihvKzEpKSl9dGJpbGxlcShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlRCSUxMRVEiKSwocixpLG8pPT57aWYoKHI9TWF0aC5yb3VuZChyKSk+PShp'@; put 'PU1hdGgucm91bmQoaSkpKXJldHVybiBuZXcgUHQodG4uTlVNKTtjb25zdCBhPXRoaXMuZGF0ZVRpbWVIZWxwZXIubnVtYmVyVG9TaW1wbGVEYXRlKHIpLGw9dGhpcy5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGUoaSk7aWYobC55ZWFyPmEueWVhcisxfHxsLnllYXI9PT1hLnll'@; put 'YXIrMSYmKGwubW9udGg+YS5tb250aHx8bC5tb250aD09PWEubW9udGgmJmwuZGF5PmEuZGF5KSlyZXR1cm4gbmV3IFB0KHRuLk5VTSk7Y29uc3QgdT0zNjAtbyooaS1yKTtyZXR1cm4gMD09PXU/MDp1PDA/bmV3IFB0KHRuLk5VTSk6MzY1Km8vdX0pfXRiaWxscHJpY2UoZSx0KXtyZXR1cm4g'@; put 'dGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJUQklMTFBSSUNFIiksKHIsaSxvKT0+e2lmKChyPU1hdGgucm91bmQocikpPj0oaT1NYXRoLnJvdW5kKGkpKSlyZXR1cm4gbmV3IFB0KHRuLk5VTSk7Y29uc3QgYT10aGlzLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2lt'@; put 'cGxlRGF0ZShyKSxsPXRoaXMuZGF0ZVRpbWVIZWxwZXIubnVtYmVyVG9TaW1wbGVEYXRlKGkpO2lmKGwueWVhcj5hLnllYXIrMXx8bC55ZWFyPT09YS55ZWFyKzEmJihsLm1vbnRoPmEubW9udGh8fGwubW9udGg9PT1hLm1vbnRoJiZsLmRheT5hLmRheSkpcmV0dXJuIG5ldyBQdCh0bi5OVU0p'@; put 'O2NvbnN0IHU9MzYwLW8qKGktcik7cmV0dXJuIDA9PT11PzA6dTwwP25ldyBQdCh0bi5OVU0pOjEwMCooMS1vKihpLXIpLzM2MCl9KX10YmlsbHlpZWxkKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiVEJJTExZSUVMRCIpLChyLGksbyk9Pntp'@; put 'Zigocj1NYXRoLnJvdW5kKHIpKT49KGk9TWF0aC5yb3VuZChpKSkpcmV0dXJuIG5ldyBQdCh0bi5OVU0pO2NvbnN0IGE9dGhpcy5kYXRlVGltZUhlbHBlci5udW1iZXJUb1NpbXBsZURhdGUociksbD10aGlzLmRhdGVUaW1lSGVscGVyLm51bWJlclRvU2ltcGxlRGF0ZShpKTtyZXR1cm4gbC55'@; put 'ZWFyPmEueWVhcisxfHxsLnllYXI9PT1hLnllYXIrMSYmKGwubW9udGg+YS5tb250aHx8bC5tb250aD09PWEubW9udGgmJmwuZGF5PmEuZGF5KT9uZXcgUHQodG4uTlVNKTozNjAqKDEwMC1vKS8obyooaS1yKSl9KX1mdnNjaGVkdWxlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5h'@; put 'cmdzLHQsdGhpcy5tZXRhZGF0YSgiRlZTQ0hFRFVMRSIpLChyLGkpPT57Y29uc3Qgbz1pLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCk7Zm9yKGNvbnN0IGEgb2YgbylpZihhIGluc3RhbmNlb2YgUHQpcmV0dXJuIGE7Zm9yKGNvbnN0IGEgb2YgbylpZihjYyhhKSlyKj0xK0xvKGEpO2Vsc2Ug'@; put 'aWYoYSE9PWxsKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuTnVtYmVyRXhwZWN0ZWQpO3JldHVybiByfSl9bnB2KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTlBWIiksKHIsLi4uaSk9Pntjb25zdCBvPXRoaXMuYXJpdGhtZXRpY0hlbHBl'@; put 'ci5jb2VyY2VOdW1iZXJzRXhhY3RSYW5nZXMoaSk7cmV0dXJuIG8gaW5zdGFuY2VvZiBQdD9vOmJtZShyLG8pfSl9bWlycihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIk1JUlIiKSwocixpLG8pPT57Y29uc3QgYT10aGlzLmFyaXRobWV0aWNI'@; put 'ZWxwZXIubWFueVRvRXhhY3ROdW1iZXJzKHIudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSk7aWYoYSBpbnN0YW5jZW9mIFB0KXJldHVybiBhO2xldCBsPSExLHU9ITE7Y29uc3QgZz1bXSxFPVtdO2Zvcihjb25zdCB2ZSBvZiBhKXZlPjA/KGw9ITAsZy5wdXNoKHZlKSxFLnB1c2goMCkpOnZl'@; put 'PDA/KHU9ITAsRS5wdXNoKHZlKSxnLnB1c2goMCkpOihFLnB1c2goMCksZy5wdXNoKDApKTtpZighbHx8IXUpcmV0dXJuIG5ldyBQdCh0bi5ESVZfQllfWkVSTyk7Y29uc3QgTz1hLmxlbmd0aCxaPWJtZShvLGcpO2lmKFogaW5zdGFuY2VvZiBQdClyZXR1cm4gWjtjb25zdCBlZT1ibWUoaSxF'@; put 'KTtyZXR1cm4gZWUgaW5zdGFuY2VvZiBQdD9lZTpNYXRoLnBvdygtWipNYXRoLnBvdygxK28sTykvZWUvKDEraSksMS8oTy0xKSktMX0pfXBkdXJhdGlvbihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlBEVVJBVElPTiIpLChyLGksbyk9PihN'@; put 'YXRoLmxvZyhvKS1NYXRoLmxvZyhpKSkvTWF0aC5sb2coMStyKSl9eG5wdihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlhOUFYiKSwocixpLG8pPT57Y29uc3QgYT1pLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCk7Zm9yKGNvbnN0IFogb2Yg'@; put 'YSlpZigibnVtYmVyIiE9dHlwZW9mIFopcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5OdW1iZXJFeHBlY3RlZCk7Y29uc3QgbD1hLHU9by52YWx1ZXNGcm9tVG9wTGVmdENvcm5lcigpO2Zvcihjb25zdCBaIG9mIHUpaWYoIm51bWJlciIhPXR5cGVvZiBaKXJldHVybiBuZXcgUHQodG4uVkFM'@; put 'VUUsZHIuTnVtYmVyRXhwZWN0ZWQpO2NvbnN0IGc9dTtpZihnLmxlbmd0aCE9PWwubGVuZ3RoKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLkVxdWFsTGVuZ3RoKTtjb25zdCBFPWcubGVuZ3RoO2xldCBPPTA7aWYoZ1swXTwwKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLlZhbHVlU21hbGwpO2Zv'@; put 'cihsZXQgWj0wO1o8RTtaKyspe2lmKGdbWl09TWF0aC5mbG9vcihnW1pdKSxnW1pdPGdbMF0pcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuVmFsdWVTbWFsbCk7Tys9bFtaXS9NYXRoLnBvdygxK3IsKGdbWl0tZ1swXSkvMzY1KX1yZXR1cm4gT30pfX1mdW5jdGlvbiB2bWUobixlLHQscixpKXtp'@; put 'ZigwPT09bilyZXR1cm4oLXQtcikvZTt7Y29uc3Qgbz1NYXRoLnBvdygxK24sZSk7cmV0dXJuKHIqbit0Km4qbykqKGk/MS8oMStuKToxKS8oMS1vKX19ZnVuY3Rpb24gX21lKG4sZSx0LHIsaSxvKXtjb25zdCBhPXZtZShuLHQscixpLG8pO3JldHVybiAxPT09ZT9uKihvPzA6LXIpOm4qKG8/'@; put 'eW1lKG4sZS0yLGEscixvKS1hOnltZShuLGUtMSxhLHIsbykpfWZ1bmN0aW9uIHltZShuLGUsdCxyLGkpe2lmKDA9PT1uKXJldHVybi1yLXQqZTt7Y29uc3Qgbz1NYXRoLnBvdygxK24sZSk7cmV0dXJuIHQqKGk/MStuOjEpKigxLW8pL24tcipvfX1mdW5jdGlvbiB5WWUobixlLHQscixpLG8p'@; put 'e3JldHVybiB2bWUobix0LHIsaSxvKS1fbWUobixlLHQscixpLG8pfWZ1bmN0aW9uIGJtZShuLGUpe2xldCB0PTA7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49MDtyLS0pe2lmKHQrPWVbcl0sLTE9PT1uKXtpZigwPT09dCljb250aW51ZTtyZXR1cm4gbmV3IFB0KHRuLkRJVl9CWV9aRVJPKX10'@; put 'Lz0xK259cmV0dXJuIHR9X1llLmltcGxlbWVudGVkRnVuY3Rpb25zPXtQTVQ6e21ldGhvZDoicG10IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5V'@; put 'TUJFUixkZWZhdWx0VmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9DVVJSRU5DWX0sSVBNVDp7bWV0aG9kOiJpcG10IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50'@; put 'VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfV0scmV0dXJuTnVtYmVyVHlwZTpv'@; put 'YS5OVU1CRVJfQ1VSUkVOQ1l9LFBQTVQ6e21ldGhvZDoicHBtdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6'@; put 'ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZhdWx0VmFsdWU6MH1dLHJldHVybk51bWJlclR5cGU6b2EuTlVNQkVSX0NVUlJFTkNZfSxGVjp7bWV0aG9kOiJmdiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVu'@; put 'dFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfQ1VSUkVOQ1l9LENVTUlQ'@; put 'TVQ6e21ldGhvZDoiY3VtaXBtdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpl'@; put 'dC5JTlRFR0VSLG1pblZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuSU5URUdFUixtaW5WYWx1ZToxfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MCxtYXhWYWx1ZToxfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfQ1VSUkVOQ1l9LENVTVBSSU5DOnttZXRob2Q6ImN1'@; put 'bXByaW5jIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWlu'@; put 'VmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLG1pblZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuSU5URUdFUixtaW5WYWx1ZTowLG1heFZhbHVlOjF9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9DVVJSRU5DWX0sREI6e21ldGhvZDoiZGIiLHBhcmFtZXRlcnM6W3thcmd1'@; put 'bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuSU5URUdFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VS'@; put 'LG1pblZhbHVlOjEsbWF4VmFsdWU6MTIsZGVmYXVsdFZhbHVlOjEyfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfQ1VSUkVOQ1l9LEREQjp7bWV0aG9kOiJkZGIiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVN'@; put 'QkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuSU5URUdFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowLGRlZmF1bHRWYWx1ZToyfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5O'@; put 'VU1CRVJfQ1VSUkVOQ1l9LERPTExBUkRFOnttZXRob2Q6ImRvbGxhcmRlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH1dfSxET0xMQVJGUjp7bWV0aG9kOiJkb2xsYXJmciIscGFyYW1ldGVyczpbe2FyZ3Vt'@; put 'ZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0sRUZGRUNUOnttZXRob2Q6ImVmZmVjdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX1d'@; put 'LHJldHVybk51bWJlclR5cGU6b2EuTlVNQkVSX1BFUkNFTlR9LElTUE1UOnttZXRob2Q6ImlzcG10IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5V'@; put 'TUJFUn1dfSxOT01JTkFMOnttZXRob2Q6Im5vbWluYWwiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9QRVJDRU5UfSxOUEVSOnttZXRo'@; put 'b2Q6Im5wZXIiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZh'@; put 'dWx0VmFsdWU6MH1dfSxQVjp7bWV0aG9kOiJwdiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9LHthcmd1bWVu'@; put 'dFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfQ1VSUkVOQ1l9LFJBVEU6e21ldGhvZDoicmF0ZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9'@; put 'LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZhdWx0VmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTouMX1dLHJldHVybk51bWJlclR5cGU6'@; put 'b2EuTlVNQkVSX1BFUkNFTlR9LFJSSTp7bWV0aG9kOiJycmkiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dLHJldHVybk51bWJlclR5cGU6b2EuTlVNQkVS'@; put 'X1BFUkNFTlR9LFNMTjp7bWV0aG9kOiJzbG4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9DVVJSRU5DWX0sU1lEOnttZXRob2Q6'@; put 'InN5ZCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfV0scmV0dXJuTnVtYmVyVHlwZTpv'@; put 'YS5OVU1CRVJfQ1VSUkVOQ1l9LFRCSUxMRVE6e21ldGhvZDoidGJpbGxlcSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46'@; put 'MH1dLHJldHVybk51bWJlclR5cGU6b2EuTlVNQkVSX1BFUkNFTlR9LFRCSUxMUFJJQ0U6e21ldGhvZDoidGJpbGxwcmljZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50'@; put 'VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH1dLHJldHVybk51bWJlclR5cGU6b2EuTlVNQkVSX0NVUlJFTkNZfSxUQklMTFlJRUxEOnttZXRob2Q6InRiaWxseWllbGQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQu'@; put 'TlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9XSxyZXR1cm5OdW1iZXJUeXBlOm9hLk5VTUJFUl9QRVJDRU5UfSxGVlNDSEVEVUxFOnttZXRob2Q6ImZ2c2NoZWR1bGUiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7'@; put 'YXJndW1lbnRUeXBlOmV0LlJBTkdFfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfQ1VSUkVOQ1l9LE5QVjp7bWV0aG9kOiJucHYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjEscmV0dXJuTnVt'@; put 'YmVyVHlwZTpvYS5OVU1CRVJfQ1VSUkVOQ1l9LE1JUlI6e21ldGhvZDoibWlyciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV0scmV0dXJuTnVtYmVyVHlwZTpvYS5OVU1CRVJfUEVS'@; put 'Q0VOVH0sUERVUkFUSU9OOnttZXRob2Q6InBkdXJhdGlvbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH1d'@; put 'fSxYTlBWOnttZXRob2Q6InhucHYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOi0xfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV19fTtjbGFzcyBiWWUgZXh0ZW5kcyBCc3tmb3JtdWxhdGV4dChlLHQpe3Jl'@; put 'dHVybiB0aGlzLnJ1bkZ1bmN0aW9uV2l0aFJlZmVyZW5jZUFyZ3VtZW50KGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkZPUk1VTEFURVhUIiksKCk9Pm5ldyBQdCh0bi5OQSxkci5Xcm9uZ0FyZ051bWJlcikscj0+e3ZhciBpO3JldHVybiBudWxsIT09KGk9dGhpcy5zZXJpYWxpemF0aW9uLmdl'@; put 'dENlbGxGb3JtdWxhKHIpKSYmdm9pZCAwIT09aT9pOm5ldyBQdCh0bi5OQSxkci5Gb3JtdWxhKX0pfX1iWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0ZPUk1VTEFURVhUOnttZXRob2Q6ImZvcm11bGF0ZXh0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5PRVJST1J9XSxkb2VzTm90'@; put 'TmVlZEFyZ3VtZW50c1RvQmVDb21wdXRlZDohMCxpc0RlcGVuZGVudE9uU2hlZXRTdHJ1Y3R1cmVDaGFuZ2U6ITAsdmVjdG9yaXphdGlvbkZvcmJpZGRlbjohMH19O2NsYXNzIHdZZSBleHRlbmRzIEJze2h5cGVybGluayhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRo'@; put 'aXMubWV0YWRhdGEoIkhZUEVSTElOSyIpLChyLGkpPT4oZS5oeXBlcmxpbms9cixpPz9yKSl9fXdZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17SFlQRVJMSU5LOnttZXRob2Q6Imh5cGVybGluayIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQu'@; put 'U1RSSU5HLG9wdGlvbmFsQXJnOiEwfV19fTtjbGFzcyBDWWUgZXh0ZW5kcyBCc3tpc2JpbmFyeShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklTQklOQVJZIikscj0+L15bMDFdezEsMTB9JC8udGVzdChyKSl9aXNlcnIoZSx0KXtyZXR1cm4g'@; put 'dGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJU0VSUiIpLHI9PnIgaW5zdGFuY2VvZiBQdCYmci50eXBlIT09dG4uTkEpfWlzZXJyb3IoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJU0VSUk9SIikscj0+ciBpbnN0'@; put 'YW5jZW9mIFB0KX1pc2Zvcm11bGEoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbldpdGhSZWZlcmVuY2VBcmd1bWVudChlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJU0ZPUk1VTEEiKSwoKT0+bmV3IFB0KHRuLk5BLGRyLldyb25nQXJnTnVtYmVyKSxyPT50aGlzLmRlcGVuZGVuY3lHcmFw'@; put 'aC5hZGRyZXNzTWFwcGluZy5nZXRDZWxsKHIpaW5zdGFuY2VvZiBtZyl9aXNibGFuayhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklTQkxBTksiKSxyPT5yPT09bGwpfWlzbmEoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3Ms'@; put 'dCx0aGlzLm1ldGFkYXRhKCJJU05BIikscj0+ciBpbnN0YW5jZW9mIFB0JiZyLnR5cGU9PXRuLk5BKX1pc251bWJlcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklTTlVNQkVSIiksY2MpfWlzbG9naWNhbChlLHQpe3JldHVybiB0aGlzLnJ1'@; put 'bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklTTE9HSUNBTCIpLHI9PiJib29sZWFuIj09dHlwZW9mIHIpfWlzcmVmKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSVNSRUYiKSxyPT5yIGluc3RhbmNlb2YgUHQmJihyLnR5cGU9'@; put 'PXRuLlJFRnx8ci50eXBlPT10bi5DWUNMRSkpfWlzdGV4dChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklTVEVYVCIpLHI9PiJzdHJpbmciPT10eXBlb2Ygcil9aXNub250ZXh0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdz'@; put 'LHQsdGhpcy5tZXRhZGF0YSgiSVNOT05URVhUIikscj0+InN0cmluZyIhPXR5cGVvZiByKX1jb2x1bW4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbldpdGhSZWZlcmVuY2VBcmd1bWVudChlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDT0xVTU4iKSwoKT0+dC5mb3JtdWxhQWRkcmVzcy5j'@; put 'b2wrMSxyPT5yLmNvbCsxKX1jb2x1bW5zKGUsdCl7aWYoMSE9PWUuYXJncy5sZW5ndGgpcmV0dXJuIG5ldyBQdCh0bi5OQSxkci5Xcm9uZ0FyZ051bWJlcik7aWYoZS5hcmdzLnNvbWUoaT0+aS50eXBlPT09cm4uRU1QVFkpKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLkVtcHR5QXJnKTtsZXQg'@; put 'cj1lLmFyZ3NbMF07Zm9yKDtyLnR5cGU9PT1ybi5QQVJFTlRIRVNJUzspcj1yLmV4cHJlc3Npb247aWYoci50eXBlPT09cm4uQ0VMTF9SQU5HRXx8ci50eXBlPT09cm4uQ09MVU1OX1JBTkdFKXJldHVybiByLmVuZC5jb2wtci5zdGFydC5jb2wrMTtpZihyLnR5cGU9PT1ybi5DRUxMX1JFRkVS'@; put 'RU5DRSlyZXR1cm4gMTtpZihyLnR5cGU9PT1ybi5ST1dfUkFOR0UpcmV0dXJuIHRoaXMuY29uZmlnLm1heENvbHVtbnM7e2NvbnN0IGk9dGhpcy5ldmFsdWF0ZUFzdChyLHQpO3JldHVybiBpIGluc3RhbmNlb2YgbGE/aS53aWR0aCgpOmkgaW5zdGFuY2VvZiBQdD9pOjF9fXJvdyhlLHQpe3Jl'@; put 'dHVybiB0aGlzLnJ1bkZ1bmN0aW9uV2l0aFJlZmVyZW5jZUFyZ3VtZW50KGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlJPVyIpLCgpPT50LmZvcm11bGFBZGRyZXNzLnJvdysxLHI9PnIucm93KzEpfXJvd3MoZSx0KXtpZigxIT09ZS5hcmdzLmxlbmd0aClyZXR1cm4gbmV3IFB0KHRuLk5BLGRy'@; put 'Lldyb25nQXJnTnVtYmVyKTtpZihlLmFyZ3Muc29tZShpPT5pLnR5cGU9PT1ybi5FTVBUWSkpcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuRW1wdHlBcmcpO2xldCByPWUuYXJnc1swXTtmb3IoO3IudHlwZT09PXJuLlBBUkVOVEhFU0lTOylyPXIuZXhwcmVzc2lvbjtpZihyLnR5cGU9PT1ybi5D'@; put 'RUxMX1JBTkdFfHxyLnR5cGU9PT1ybi5ST1dfUkFOR0UpcmV0dXJuIHIuZW5kLnJvdy1yLnN0YXJ0LnJvdysxO2lmKHIudHlwZT09PXJuLkNFTExfUkVGRVJFTkNFKXJldHVybiAxO2lmKHIudHlwZT09PXJuLkNPTFVNTl9SQU5HRSlyZXR1cm4gdGhpcy5jb25maWcubWF4Um93czt7Y29uc3Qg'@; put 'aT10aGlzLmV2YWx1YXRlQXN0KHIsdCk7cmV0dXJuIGkgaW5zdGFuY2VvZiBsYT9pLmhlaWdodCgpOmkgaW5zdGFuY2VvZiBQdD9pOjF9fWluZGV4KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU5ERVgiKSwocixpLG8pPT57dmFyIGEsbCx1'@; put 'LGcsRSxPO3JldHVybiBvPDF8fGk8MT9uZXcgUHQodG4uVkFMVUUsZHIuTGVzc1RoYW5PbmUpOm8+ci53aWR0aCgpfHxpPnIuaGVpZ2h0KCk/bmV3IFB0KHRuLk5VTSxkci5WYWx1ZUxhcmdlKTpudWxsIT09KE89bnVsbCE9PSh1PW51bGw9PT0obD1udWxsPT09KGE9cj8uZGF0YSl8fHZvaWQg'@; put 'MD09PWE/dm9pZCAwOmFbaS0xXSl8fHZvaWQgMD09PWw/dm9pZCAwOmxbby0xXSkmJnZvaWQgMCE9PXU/dTpudWxsPT09KEU9bnVsbD09PShnPXI/LmRhdGEpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnWzBdKXx8dm9pZCAwPT09RT92b2lkIDA6RVswXSkmJnZvaWQgMCE9PU8/TzpuZXcgUHQodG4u'@; put 'VkFMVUUsZHIuQ2VsbFJhbmdlRXhwZWN0ZWQpfSl9bmEoZSx0KXtyZXR1cm4gbmV3IFB0KHRuLk5BKX1zaGVldChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uV2l0aFJlZmVyZW5jZUFyZ3VtZW50KGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNIRUVUIiksKCk9PnQuZm9ybXVsYUFkZHJl'@; put 'c3Muc2hlZXQrMSxyPT5yLnNoZWV0KzEscj0+e2NvbnN0IGk9dGhpcy5kZXBlbmRlbmN5R3JhcGguc2hlZXRNYXBwaW5nLmdldChyKTtyZXR1cm4gdm9pZCAwIT09aT9pKzE6bmV3IFB0KHRuLk5BLGRyLlNoZWV0UmVmKX0pfXNoZWV0cyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uV2l0'@; put 'aFJlZmVyZW5jZUFyZ3VtZW50KGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNIRUVUUyIpLCgpPT50aGlzLmRlcGVuZGVuY3lHcmFwaC5zaGVldE1hcHBpbmcubnVtYmVyT2ZTaGVldHMoKSwoKT0+MSwoKT0+bmV3IFB0KHRuLlZBTFVFLGRyLkNlbGxSZWZFeHBlY3RlZCkpfX1DWWUuaW1wbGVt'@; put 'ZW50ZWRGdW5jdGlvbnM9e0NPTFVNTjp7bWV0aG9kOiJjb2x1bW4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTk9FUlJPUixvcHRpb25hbEFyZzohMH1dLGlzRGVwZW5kZW50T25TaGVldFN0cnVjdHVyZUNoYW5nZTohMCxkb2VzTm90TmVlZEFyZ3VtZW50c1RvQmVDb21wdXRlZDoh'@; put 'MCx2ZWN0b3JpemF0aW9uRm9yYmlkZGVuOiEwfSxDT0xVTU5TOnttZXRob2Q6ImNvbHVtbnMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9XSxpc0RlcGVuZGVudE9uU2hlZXRTdHJ1Y3R1cmVDaGFuZ2U6ITAsZG9lc05vdE5lZWRBcmd1bWVudHNUb0JlQ29tcHV0ZWQ6ITAs'@; put 'dmVjdG9yaXphdGlvbkZvcmJpZGRlbjohMH0sSVNCSU5BUlk6e21ldGhvZDoiaXNiaW5hcnkiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfV19LElTRVJSOnttZXRob2Q6ImlzZXJyIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNDQUxBUn1dfSxJU0ZPUk1VTEE6'@; put 'e21ldGhvZDoiaXNmb3JtdWxhIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5PRVJST1J9XSxkb2VzTm90TmVlZEFyZ3VtZW50c1RvQmVDb21wdXRlZDohMCx2ZWN0b3JpemF0aW9uRm9yYmlkZGVuOiEwfSxJU05BOnttZXRob2Q6ImlzbmEiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5'@; put 'cGU6ZXQuU0NBTEFSfV19LElTUkVGOnttZXRob2Q6ImlzcmVmIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNDQUxBUn1dLHZlY3Rvcml6YXRpb25Gb3JiaWRkZW46ITB9LElTRVJST1I6e21ldGhvZDoiaXNlcnJvciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FMQVJ9'@; put 'XX0sSVNCTEFOSzp7bWV0aG9kOiJpc2JsYW5rIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNDQUxBUn1dfSxJU05VTUJFUjp7bWV0aG9kOiJpc251bWJlciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FMQVJ9XX0sSVNMT0dJQ0FMOnttZXRob2Q6ImlzbG9naWNhbCIs'@; put 'cGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FMQVJ9XX0sSVNURVhUOnttZXRob2Q6ImlzdGV4dCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FMQVJ9XX0sSVNOT05URVhUOnttZXRob2Q6Imlzbm9udGV4dCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FM'@; put 'QVJ9XX0sSU5ERVg6e21ldGhvZDoiaW5kZXgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZhdWx0VmFsdWU6MX1dfSxOQTp7bWV0aG9kOiJuYSIscGFyYW1ldGVyczpbXX0sUk9X'@; put 'OnttZXRob2Q6InJvdyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SLG9wdGlvbmFsQXJnOiEwfV0saXNEZXBlbmRlbnRPblNoZWV0U3RydWN0dXJlQ2hhbmdlOiEwLGRvZXNOb3ROZWVkQXJndW1lbnRzVG9CZUNvbXB1dGVkOiEwLHZlY3Rvcml6YXRpb25Gb3JiaWRkZW46'@; put 'ITB9LFJPV1M6e21ldGhvZDoicm93cyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX1dLGlzRGVwZW5kZW50T25TaGVldFN0cnVjdHVyZUNoYW5nZTohMCxkb2VzTm90TmVlZEFyZ3VtZW50c1RvQmVDb21wdXRlZDohMCx2ZWN0b3JpemF0aW9uRm9yYmlkZGVuOiEwfSxTSEVF'@; put 'VDp7bWV0aG9kOiJzaGVldCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XSxkb2VzTm90TmVlZEFyZ3VtZW50c1RvQmVDb21wdXRlZDohMCx2ZWN0b3JpemF0aW9uRm9yYmlkZGVuOiEwfSxTSEVFVFM6e21ldGhvZDoic2hlZXRzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRU'@; put 'eXBlOmV0LlNUUklOR31dLGRvZXNOb3ROZWVkQXJndW1lbnRzVG9CZUNvbXB1dGVkOiEwLHZlY3Rvcml6YXRpb25Gb3JiaWRkZW46ITB9fTtjbGFzcyBTWWUgZXh0ZW5kcyBCc3tpc2V2ZW4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJU0VW'@; put 'RU4iKSxyPT5yJTI9PTApfX1TWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0lTRVZFTjp7bWV0aG9kOiJpc2V2ZW4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19fTtjbGFzcyBFWWUgZXh0ZW5kcyBCc3tpc29kZChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUu'@; put 'YXJncyx0LHRoaXMubWV0YWRhdGEoIklTT0REIikscj0+ciUyPT0xKX19RVllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtJU09ERDp7bWV0aG9kOiJpc29kZCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX19O2NsYXNzIE1ZZSBleHRlbmRzIEJze2xvZzEwKGUsdCl7cmV0'@; put 'dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTE9HMTAiKSxNYXRoLmxvZzEwKX1sb2coZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJMT0ciKSwocixpKT0+TWF0aC5sb2cocikvTWF0aC5sb2coaSkpfWxuKGUs'@; put 'dCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTE4iKSxNYXRoLmxvZyl9fU1ZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17TE9HMTA6e21ldGhvZDoibG9nMTAiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LExPRzp7bWV0aG9k'@; put 'OiJsb2ciLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZToxMCxncmVhdGVyVGhhbjowfV19LExOOnttZXRob2Q6ImxuIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJF'@; put 'Un1dfX07Y29uc3Qgd21lPXBhcnNlRmxvYXQoTWF0aC5QSS50b0ZpeGVkKDE0KSk7Y2xhc3MgVFllIGV4dGVuZHMgQnN7cGkoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJQSSIpLCgpPT53bWUpfXNxcnRwaShlLHQpe3JldHVybiB0aGlzLnJ1'@; put 'bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNRUlRQSSIpLHI9Pk1hdGguc3FydCh3bWUqcikpfX1mdW5jdGlvbiB4WWUobixlKXtyZXR1cm4gbmV3IHlsKGUud2lkdGgsbi5oZWlnaHQpfWZ1bmN0aW9uIENtZShuLGUsdCl7cmV0dXJuIG5ldyB5bCgxKyhuLndpZHRoLWUpL3Qs'@; put 'MSsobi5oZWlnaHQtZSkvdCl9VFllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtQSTp7bWV0aG9kOiJwaSIscGFyYW1ldGVyczpbXX0sU1FSVFBJOnttZXRob2Q6InNxcnRwaSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH1dfX07Y2xhc3MgQVllIGV4dGVu'@; put 'ZHMgQnN7bW11bHQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJNTVVMVCIpLChyLGkpPT57aWYoIXIuaGFzT25seU51bWJlcnMoKXx8IWkuaGFzT25seU51bWJlcnMoKSlyZXR1cm4gbmV3IFB0KHRuLlZBTFVFLGRyLk51bWJlclJhbmdlKTtp'@; put 'ZihpLmhlaWdodCgpIT09ci53aWR0aCgpKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuQXJyYXlEaW1lbnNpb25zKTtjb25zdCBvPXhZZShyLnNpemUsaS5zaXplKSxhPXRoaXMuY3JlYXRlS2VybmVsKGZ1bmN0aW9uKGwsdSxnKXtsZXQgRT0wO2ZvcihsZXQgTz0wO088ZzsrK08pRSs9bFt0'@; put 'aGlzLnRocmVhZC55XVtPXSp1W09dW3RoaXMudGhyZWFkLnhdO3JldHVybiBFfSxvKShyLnJhd051bWJlcnMoKSxpLnJhd051bWJlcnMoKSxyLndpZHRoKCkpO3JldHVybiBsYS5vbmx5TnVtYmVycyhhKX0pfW1tdWx0QXJyYXlTaXplKGUsdCl7aWYoMiE9PWUuYXJncy5sZW5ndGgpcmV0dXJu'@; put 'IHlsLmVycm9yKCk7Y29uc3Qgcj10aGlzLm1ldGFkYXRhKCJNTVVMVCIpLGk9ZS5hcmdzLm1hcChsPT57dmFyIHU7cmV0dXJuIHRoaXMuYXJyYXlTaXplRm9yQXN0KGwsbmV3IHo2KHQuZm9ybXVsYUFkZHJlc3MsdC5hcnJheXNGbGFnfHxudWxsIT09KHU9cj8uYXJyYXlGdW5jdGlvbikmJnZv'@; put 'aWQgMCE9PXUmJnUpKX0pLFtvLGFdPWk7cmV0dXJuIHhZZShvLGEpfW1heHBvb2woZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJNQVhQT09MIiksKHIsaSxvPWkpPT57aWYoIXIuaGFzT25seU51bWJlcnMoKSlyZXR1cm4gbmV3IFB0KHRuLlZB'@; put 'TFVFLGRyLk51bWJlclJhbmdlKTtjb25zdCBhPUNtZShyLnNpemUsaSxvKSxsPXRoaXMuY3JlYXRlS2VybmVsKGZ1bmN0aW9uKHUsZyxFKXtjb25zdCBPPXRoaXMudGhyZWFkLngqRSxaPXRoaXMudGhyZWFkLnkqRTtsZXQgZWU9dVtaXVtPXTtmb3IobGV0IHZlPTA7dmU8Zzt2ZSsrKWZvcihs'@; put 'ZXQgTWU9MDtNZTxnO01lKyspZWU9TWF0aC5tYXgoZWUsdVtaK3ZlXVtPK01lXSk7cmV0dXJuIGVlfSxhKShyLnJhd051bWJlcnMoKSxpLG8pO3JldHVybiBsYS5vbmx5TnVtYmVycyhsKX0pfW1lZGlhbnBvb2woZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1l'@; put 'dGFkYXRhKCJNRURJQU5QT09MIiksKHIsaSxvPWkpPT57aWYoIXIuaGFzT25seU51bWJlcnMoKSlyZXR1cm4gbmV3IFB0KHRuLlZBTFVFLGRyLk51bWJlclJhbmdlKTtjb25zdCBhPUNtZShyLnNpemUsaSxvKSxsPXRoaXMuY3JlYXRlS2VybmVsKGZ1bmN0aW9uKHUsZyxFKXtjb25zdCBPPXRo'@; put 'aXMudGhyZWFkLngqRSxaPXRoaXMudGhyZWFkLnkqRTtsZXQgZWU9dVtaXVtPXTtmb3IobGV0IEN0PTA7Q3Q8ZztDdCsrKWZvcihsZXQgQXQ9MDtBdDxnO0F0KyspZWU9TWF0aC5tYXgoZWUsdVtaK0N0XVtPK0F0XSk7bGV0IHZlPXVbWl1bT107Zm9yKGxldCBDdD0wO0N0PGc7Q3QrKylmb3Io'@; put 'bGV0IEF0PTA7QXQ8ZztBdCsrKXZlPU1hdGgubWluKHZlLHVbWitDdF1bTytBdF0pO2NvbnN0IE1lPWcqZztsZXQgSGU9dmUsV2U9ZWUsYXQ9NDI7Zm9yKGxldCBDdD0wO0N0PDMyO0N0Kyspe2NvbnN0IEF0PShIZStXZSkvMjtsZXQgS3Q9MDtmb3IobGV0IHF0PTA7cXQ8ZztxdCsrKWZvcihs'@; put 'ZXQgZ249MDtnbjxnO2duKyspdVtaK3F0XVtPK2duXT5BdCYmS3QrKztpZihnJTI9PTApe2lmKEt0PT09TWUvMil7YXQ9QXQ7YnJlYWt9S3Q+TWUvMj9IZT1BdDpXZT1BdH1lbHNle2lmKEt0PT09KE1lLTEpLzIpe2F0PUF0O2JyZWFrfUt0PihNZS0xKS8yP0hlPUF0OldlPUF0fX1yZXR1cm4g'@; put 'YXR9LGEpKHIucmF3TnVtYmVycygpLGksbyk7cmV0dXJuIGxhLm9ubHlOdW1iZXJzKGwpfSl9bWF4cG9vbEFycmF5U2l6ZShlLHQpe2lmKGUuYXJncy5sZW5ndGg8Mnx8ZS5hcmdzLmxlbmd0aD4zKXJldHVybiB5bC5lcnJvcigpO2NvbnN0IHI9dGhpcy5tZXRhZGF0YSgiTUFYUE9PTCIpLG89'@; put 'ZS5hcmdzLm1hcChnPT57dmFyIEU7cmV0dXJuIHRoaXMuYXJyYXlTaXplRm9yQXN0KGcsbmV3IHo2KHQuZm9ybXVsYUFkZHJlc3MsdC5hcnJheXNGbGFnfHxudWxsIT09KEU9cj8uYXJyYXlGdW5jdGlvbikmJnZvaWQgMCE9PUUmJkUpKX0pWzBdLGE9ZS5hcmdzWzFdO2xldCBsO2w9YS50eXBl'@; put 'PT09cm4uTlVNQkVSP2EudmFsdWU6MTtsZXQgdT1sO2lmKDM9PT1lLmFyZ3MubGVuZ3RoKXtjb25zdCBnPWUuYXJnc1syXTt1PWcudHlwZT09PXJuLk5VTUJFUj9nLnZhbHVlOjF9cmV0dXJuIGw+by53aWR0aHx8bD5vLmhlaWdodHx8dT5sfHwoby53aWR0aC1sKSV1IT09MHx8KG8uaGVpZ2h0'@; put 'LWwpJXUhPT0wP3lsLmVycm9yKCk6Q21lKG8sbCx1KX1tZWRpYW5wb29sQXJyYXlTaXplKGUsdCl7cmV0dXJuIHRoaXMubWF4cG9vbEFycmF5U2l6ZShlLHQpfXRyYW5zcG9zZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlRSQU5TUE9TRSIp'@; put 'LHI9Pntjb25zdCBpPXIucmF3RGF0YSgpLG89ci5zaXplLGE9W107Zm9yKGxldCBsPTA7bDxvLndpZHRoOysrbCl7YVtsXT1bXTtmb3IobGV0IHU9MDt1PG8uaGVpZ2h0OysrdSlhW2xdW3VdPWlbdV1bbF19cmV0dXJuIGxhLm9ubHlWYWx1ZXMoYSl9KX10cmFuc3Bvc2VBcnJheVNpemUoZSx0'@; put 'KXtpZigxIT09ZS5hcmdzLmxlbmd0aClyZXR1cm4geWwuZXJyb3IoKTtjb25zdCByPXRoaXMubWV0YWRhdGEoIlRSQU5TUE9TRSIpLGk9ZS5hcmdzLm1hcChhPT57dmFyIGw7cmV0dXJuIHRoaXMuYXJyYXlTaXplRm9yQXN0KGEsbmV3IHo2KHQuZm9ybXVsYUFkZHJlc3MsdC5hcnJheXNGbGFn'@; put 'fHxudWxsIT09KGw9cj8uYXJyYXlGdW5jdGlvbikmJnZvaWQgMCE9PWwmJmwpKX0pLFtvXT1pO3JldHVybiBuZXcgeWwoby5oZWlnaHQsby53aWR0aCl9Y3JlYXRlS2VybmVsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2NvbnN0IGk9W107Zm9yKGxldCBvPTA7bzx0LmhlaWdodDsrK28p'@; put 'e2kucHVzaChbXSk7Zm9yKGxldCBhPTA7YTx0LndpZHRoOysrYSlpW29dW2FdPWUuYXBwbHkoe3RocmVhZDp7eDphLHk6b319LHIpfXJldHVybiBpfX19QVllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtNTVVMVDp7bWV0aG9kOiJtbXVsdCIsYXJyYXlTaXplTWV0aG9kOiJtbXVsdEFycmF5U2l6'@; put 'ZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX1dLHZlY3Rvcml6YXRpb25Gb3JiaWRkZW46ITB9LFRSQU5TUE9TRTp7bWV0aG9kOiJ0cmFuc3Bvc2UiLGFycmF5U2l6ZU1ldGhvZDoidHJhbnNwb3NlQXJyYXlTaXplIixwYXJhbWV0'@; put 'ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV0sdmVjdG9yaXphdGlvbkZvcmJpZGRlbjohMH0sTUFYUE9PTDp7bWV0aG9kOiJtYXhwb29sIixhcnJheVNpemVNZXRob2Q6Im1heHBvb2xBcnJheVNpemUiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9LHthcmd1bWVudFR5'@; put 'cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzohMH1dLHZlY3Rvcml6YXRpb25Gb3JiaWRkZW46ITB9LE1FRElBTlBPT0w6e21ldGhvZDoibWVkaWFucG9vbCIsYXJyYXlTaXplTWV0aG9kOiJtZWRpYW5wb29sQXJyYXlTaXplIixwYXJhbWV0ZXJzOlt7'@; put 'YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsb3B0aW9uYWxBcmc6ITB9XSx2ZWN0b3JpemF0aW9uRm9yYmlkZGVuOiEwfX07Y2xhc3Mga1llIGV4dGVuZHMgQnN7bWVkaWFuKGUsdCl7cmV0dXJuIHRoaXMucnVu'@; put 'RnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTUVESUFOIiksKC4uLnIpPT57Y29uc3QgaT10aGlzLmFyaXRobWV0aWNIZWxwZXIuY29lcmNlTnVtYmVyc0V4YWN0UmFuZ2VzKHIpO3JldHVybiBpIGluc3RhbmNlb2YgUHQ/aTowPT09aS5sZW5ndGg/bmV3IFB0KHRuLk5VTSxkci5P'@; put 'bmVWYWx1ZSk6KGkuc29ydCgobyxhKT0+by1hKSxpLmxlbmd0aCUyPT0wPyhpW2kubGVuZ3RoLzItMV0raVtpLmxlbmd0aC8yXSkvMjppW01hdGguZmxvb3IoaS5sZW5ndGgvMildKX0pfWxhcmdlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgi'@; put 'TEFSR0UiKSwocixpKT0+e2NvbnN0IG89dGhpcy5hcml0aG1ldGljSGVscGVyLm1hbnlUb0V4YWN0TnVtYmVycyhyLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpO3JldHVybiBvIGluc3RhbmNlb2YgUHQ/bzooby5zb3J0KChhLGwpPT5hLWwpLChpPU1hdGgudHJ1bmMoaSkpPm8ubGVuZ3Ro'@; put 'P25ldyBQdCh0bi5OVU0sZHIuVmFsdWVMYXJnZSk6b1tvLmxlbmd0aC1pXSl9KX1zbWFsbChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNNQUxMIiksKHIsaSk9Pntjb25zdCBvPXRoaXMuYXJpdGhtZXRpY0hlbHBlci5tYW55VG9FeGFjdE51'@; put 'bWJlcnMoci52YWx1ZXNGcm9tVG9wTGVmdENvcm5lcigpKTtyZXR1cm4gbyBpbnN0YW5jZW9mIFB0P286KG8uc29ydCgoYSxsKT0+YS1sKSwoaT1NYXRoLnRydW5jKGkpKT5vLmxlbmd0aD9uZXcgUHQodG4uTlVNLGRyLlZhbHVlTGFyZ2UpOm9baS0xXSl9KX19a1llLmltcGxlbWVudGVkRnVu'@; put 'Y3Rpb25zPXtNRURJQU46e21ldGhvZDoibWVkaWFuIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LExBUkdFOnttZXRob2Q6ImxhcmdlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJF'@; put 'UixtaW5WYWx1ZToxfV19LFNNQUxMOnttZXRob2Q6InNtYWxsIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxfV19fTtjbGFzcyBSWWUgZXh0ZW5kcyBCc3ttb2QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlv'@; put 'bihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJNT0QiKSwocixpKT0+MD09PWk/bmV3IFB0KHRuLkRJVl9CWV9aRVJPKTpyJWkpfX1mdW5jdGlvbiB0SyhuKXtyZXR1cm4gY2MobikmJiFOdW1iZXIuaXNGaW5pdGUoTG8obikpPzA6bn1SWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e01PRDp7bWV0'@; put 'aG9kOiJtb2QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfX07Y2xhc3MgSzR7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuc3Vtc3E9ZSx0aGlzLnN1bT10LHRoaXMuY291bnQ9cn1zdGF0aWMgc2luZ2xlKGUpe3JldHVybiBu'@; put 'ZXcgSzQoZSplLGUsMSl9Y29tcG9zZShlKXtyZXR1cm4gbmV3IEs0KHRoaXMuc3Vtc3ErZS5zdW1zcSx0aGlzLnN1bStlLnN1bSx0aGlzLmNvdW50K2UuY291bnQpfWF2ZXJhZ2VWYWx1ZSgpe2lmKHRoaXMuY291bnQ+MClyZXR1cm4gdGhpcy5zdW0vdGhpcy5jb3VudH12YXJTVmFsdWUoKXtp'@; put 'Zih0aGlzLmNvdW50PjEpcmV0dXJuKHRoaXMuc3Vtc3EtdGhpcy5zdW0qdGhpcy5zdW0vdGhpcy5jb3VudCkvKHRoaXMuY291bnQtMSl9dmFyUFZhbHVlKCl7aWYodGhpcy5jb3VudD4wKXJldHVybih0aGlzLnN1bXNxLXRoaXMuc3VtKnRoaXMuc3VtL3RoaXMuY291bnQpL3RoaXMuY291bnR9'@; put 'fUs0LmVtcHR5PW5ldyBLNCgwLDAsMCk7Y2xhc3MgU21lIGV4dGVuZHMgQnN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuYWRkV2l0aEVwc2lsb25SYXc9KGUsdCk9PnRoaXMuYXJpdGhtZXRpY0hlbHBlci5hZGRXaXRoRXBzaWxvblJhdyhlLHQpfXN1bShlLHQpe3Jl'@; put 'dHVybiB0aGlzLmRvU3VtKGUuYXJncyx0KX1zdW1zcShlLHQpe3JldHVybiB0aGlzLnJlZHVjZShlLmFyZ3MsdCwwLCJTVU1TUSIsdGhpcy5hZGRXaXRoRXBzaWxvblJhdyxyPT5NYXRoLnBvdyhMbyhyKSwyKSxkQSl9bWF4KGUsdCl7cmV0dXJuIHRoaXMuZG9NYXgoZS5hcmdzLHQpfW1heGEo'@; put 'ZSx0KXtyZXR1cm4gdEsodGhpcy5yZWR1Y2UoZS5hcmdzLHQsTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCJNQVhBIiwoaSxvKT0+TWF0aC5tYXgoaSxvKSxMbyxuSykpfW1pbihlLHQpe3JldHVybiB0aGlzLmRvTWluKGUuYXJncyx0KX1taW5hKGUsdCl7cmV0dXJuIHRLKHRoaXMucmVkdWNl'@; put 'KGUuYXJncyx0LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwiTUlOQSIsKGksbyk9Pk1hdGgubWluKGksbyksTG8sbkspKX1jb3VudChlLHQpe3JldHVybiB0aGlzLmRvQ291bnQoZS5hcmdzLHQpfWNvdW50YShlLHQpe3JldHVybiB0aGlzLmRvQ291bnRhKGUuYXJncyx0KX1hdmVyYWdlKGUs'@; put 'dCl7cmV0dXJuIHRoaXMuZG9BdmVyYWdlKGUuYXJncyx0KX1hdmVyYWdlYShlLHQpe3ZhciByO2NvbnN0IGk9dGhpcy5yZWR1Y2UoZS5hcmdzLHQsSzQuZW1wdHksIl9BR0dSRUdBVEVfQSIsKG8sYSk9Pm8uY29tcG9zZShhKSxvPT5LNC5zaW5nbGUoTG8obykpLG5LKTtyZXR1cm4gaSBpbnN0'@; put 'YW5jZW9mIFB0P2k6bnVsbCE9PShyPWkuYXZlcmFnZVZhbHVlKCkpJiZ2b2lkIDAhPT1yP3I6bmV3IFB0KHRuLkRJVl9CWV9aRVJPKX12YXJzKGUsdCl7cmV0dXJuIHRoaXMuZG9WYXJTKGUuYXJncyx0KX12YXJwKGUsdCl7cmV0dXJuIHRoaXMuZG9WYXJQKGUuYXJncyx0KX12YXJhKGUsdCl7'@; put 'dmFyIHI7Y29uc3QgaT10aGlzLnJlZHVjZUFnZ3JlZ2F0ZUEoZS5hcmdzLHQpO3JldHVybiBpIGluc3RhbmNlb2YgUHQ/aTpudWxsIT09KHI9aS52YXJTVmFsdWUoKSkmJnZvaWQgMCE9PXI/cjpuZXcgUHQodG4uRElWX0JZX1pFUk8pfXZhcnBhKGUsdCl7dmFyIHI7Y29uc3QgaT10aGlzLnJl'@; put 'ZHVjZUFnZ3JlZ2F0ZUEoZS5hcmdzLHQpO3JldHVybiBpIGluc3RhbmNlb2YgUHQ/aTpudWxsIT09KHI9aS52YXJQVmFsdWUoKSkmJnZvaWQgMCE9PXI/cjpuZXcgUHQodG4uRElWX0JZX1pFUk8pfXN0ZGV2cyhlLHQpe3JldHVybiB0aGlzLmRvU3RkZXZTKGUuYXJncyx0KX1zdGRldnAoZSx0'@; put 'KXtyZXR1cm4gdGhpcy5kb1N0ZGV2UChlLmFyZ3MsdCl9c3RkZXZhKGUsdCl7Y29uc3Qgcj10aGlzLnJlZHVjZUFnZ3JlZ2F0ZUEoZS5hcmdzLHQpO2lmKHIgaW5zdGFuY2VvZiBQdClyZXR1cm4gcjt7Y29uc3QgaT1yLnZhclNWYWx1ZSgpO3JldHVybiB2b2lkIDA9PT1pP25ldyBQdCh0bi5E'@; put 'SVZfQllfWkVSTyk6TWF0aC5zcXJ0KGkpfX1zdGRldnBhKGUsdCl7Y29uc3Qgcj10aGlzLnJlZHVjZUFnZ3JlZ2F0ZUEoZS5hcmdzLHQpO2lmKHIgaW5zdGFuY2VvZiBQdClyZXR1cm4gcjt7Y29uc3QgaT1yLnZhclBWYWx1ZSgpO3JldHVybiB2b2lkIDA9PT1pP25ldyBQdCh0bi5ESVZfQllf'@; put 'WkVSTyk6TWF0aC5zcXJ0KGkpfX1wcm9kdWN0KGUsdCl7cmV0dXJuIHRoaXMuZG9Qcm9kdWN0KGUuYXJncyx0KX1zdWJ0b3RhbChlLHQpe2lmKGUuYXJncy5sZW5ndGg8MilyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLldyb25nQXJnTnVtYmVyKTtjb25zdCByPXRoaXMuY29lcmNlVG9UeXBlKHRo'@; put 'aXMuZXZhbHVhdGVBc3QoZS5hcmdzWzBdLHQpLHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx0KSxpPWUuYXJncy5zbGljZSgxKTtzd2l0Y2gocil7Y2FzZSAxOmNhc2UgMTAxOnJldHVybiB0aGlzLmRvQXZlcmFnZShpLHQpO2Nhc2UgMjpjYXNlIDEwMjpyZXR1cm4gdGhpcy5kb0NvdW50KGks'@; put 'dCk7Y2FzZSAzOmNhc2UgMTAzOnJldHVybiB0aGlzLmRvQ291bnRhKGksdCk7Y2FzZSA0OmNhc2UgMTA0OnJldHVybiB0aGlzLmRvTWF4KGksdCk7Y2FzZSA1OmNhc2UgMTA1OnJldHVybiB0aGlzLmRvTWluKGksdCk7Y2FzZSA2OmNhc2UgMTA2OnJldHVybiB0aGlzLmRvUHJvZHVjdChpLHQp'@; put 'O2Nhc2UgNzpjYXNlIDEwNzpyZXR1cm4gdGhpcy5kb1N0ZGV2UyhpLHQpO2Nhc2UgODpjYXNlIDEwODpyZXR1cm4gdGhpcy5kb1N0ZGV2UChpLHQpO2Nhc2UgOTpjYXNlIDEwOTpyZXR1cm4gdGhpcy5kb1N1bShpLHQpO2Nhc2UgMTA6Y2FzZSAxMTA6cmV0dXJuIHRoaXMuZG9WYXJTKGksdCk7'@; put 'Y2FzZSAxMTpjYXNlIDExMTpyZXR1cm4gdGhpcy5kb1ZhclAoaSx0KTtkZWZhdWx0OnJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuQmFkTW9kZSl9fXJlZHVjZUFnZ3JlZ2F0ZShlLHQpe3JldHVybiB0aGlzLnJlZHVjZShlLHQsSzQuZW1wdHksIl9BR0dSRUdBVEUiLChyLGkpPT5yLmNvbXBv'@; put 'c2UoaSkscj0+SzQuc2luZ2xlKExvKHIpKSxkQSl9cmVkdWNlQWdncmVnYXRlQShlLHQpe3JldHVybiB0aGlzLnJlZHVjZShlLHQsSzQuZW1wdHksIl9BR0dSRUdBVEVfQSIsKHIsaSk9PnIuY29tcG9zZShpKSxyPT5LNC5zaW5nbGUoTG8ocikpLG5LKX1kb0F2ZXJhZ2UoZSx0KXt2YXIgcjtj'@; put 'b25zdCBpPXRoaXMucmVkdWNlQWdncmVnYXRlKGUsdCk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQdD9pOm51bGwhPT0ocj1pLmF2ZXJhZ2VWYWx1ZSgpKSYmdm9pZCAwIT09cj9yOm5ldyBQdCh0bi5ESVZfQllfWkVSTyl9ZG9WYXJTKGUsdCl7dmFyIHI7Y29uc3QgaT10aGlzLnJlZHVjZUFnZ3Jl'@; put 'Z2F0ZShlLHQpO3JldHVybiBpIGluc3RhbmNlb2YgUHQ/aTpudWxsIT09KHI9aS52YXJTVmFsdWUoKSkmJnZvaWQgMCE9PXI/cjpuZXcgUHQodG4uRElWX0JZX1pFUk8pfWRvVmFyUChlLHQpe3ZhciByO2NvbnN0IGk9dGhpcy5yZWR1Y2VBZ2dyZWdhdGUoZSx0KTtyZXR1cm4gaSBpbnN0YW5j'@; put 'ZW9mIFB0P2k6bnVsbCE9PShyPWkudmFyUFZhbHVlKCkpJiZ2b2lkIDAhPT1yP3I6bmV3IFB0KHRuLkRJVl9CWV9aRVJPKX1kb1N0ZGV2UyhlLHQpe2NvbnN0IHI9dGhpcy5yZWR1Y2VBZ2dyZWdhdGUoZSx0KTtpZihyIGluc3RhbmNlb2YgUHQpcmV0dXJuIHI7e2NvbnN0IGk9ci52YXJTVmFs'@; put 'dWUoKTtyZXR1cm4gdm9pZCAwPT09aT9uZXcgUHQodG4uRElWX0JZX1pFUk8pOk1hdGguc3FydChpKX19ZG9TdGRldlAoZSx0KXtjb25zdCByPXRoaXMucmVkdWNlQWdncmVnYXRlKGUsdCk7aWYociBpbnN0YW5jZW9mIFB0KXJldHVybiByO3tjb25zdCBpPXIudmFyUFZhbHVlKCk7cmV0dXJu'@; put 'IHZvaWQgMD09PWk/bmV3IFB0KHRuLkRJVl9CWV9aRVJPKTpNYXRoLnNxcnQoaSl9fWRvQ291bnQoZSx0KXtyZXR1cm4gdGhpcy5yZWR1Y2UoZSx0LDAsIkNPVU5UIiwocixpKT0+citpLExvLHI9PmNjKHIpPzE6MCl9ZG9Db3VudGEoZSx0KXtyZXR1cm4gdGhpcy5yZWR1Y2UoZSx0LDAsIkNP'@; put 'VU5UQSIsKHIsaSk9PnIraSxMbyxyPT5yPT09bGw/MDoxKX1kb01heChlLHQpe3JldHVybiB0Syh0aGlzLnJlZHVjZShlLHQsTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCJNQVgiLChpLG8pPT5NYXRoLm1heChpLG8pLExvLGRBKSl9ZG9NaW4oZSx0KXtyZXR1cm4gdEsodGhpcy5yZWR1Y2Uo'@; put 'ZSx0LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwiTUlOIiwoaSxvKT0+TWF0aC5taW4oaSxvKSxMbyxkQSkpfWRvU3VtKGUsdCl7cmV0dXJuIHRoaXMucmVkdWNlKGUsdCwwLCJTVU0iLHRoaXMuYWRkV2l0aEVwc2lsb25SYXcsTG8sZEEpfWRvUHJvZHVjdChlLHQpe3JldHVybiB0aGlzLnJl'@; put 'ZHVjZShlLHQsMSwiUFJPRFVDVCIsKHIsaSk9PnIqaSxMbyxkQSl9cmVkdWNlKGUsdCxyLGksbyxhLGwpe3JldHVybiBlLmxlbmd0aDwxP25ldyBQdCh0bi5OQSxkci5Xcm9uZ0FyZ051bWJlcik6ZS5yZWR1Y2UoKHUsZyk9PntpZih1IGluc3RhbmNlb2YgUHQpcmV0dXJuIHU7aWYoZy50eXBl'@; put 'PT09cm4uQ0VMTF9SQU5HRXx8Zy50eXBlPT09cm4uQ09MVU1OX1JBTkdFfHxnLnR5cGU9PT1ybi5ST1dfUkFOR0Upe2NvbnN0IE89dGhpcy5ldmFsdWF0ZVJhbmdlKGcsdCxyLGksbyxhLGwpO3JldHVybiBPIGluc3RhbmNlb2YgUHQ/TzpvKE8sdSl9bGV0IEU7aWYoRT10aGlzLmV2YWx1YXRl'@; put 'QXN0KGcsdCksRSBpbnN0YW5jZW9mIGxhKXJldHVybiBBcnJheS5mcm9tKEUudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSkubWFwKGwpLmZpbHRlcihaPT52b2lkIDAhPT1aKS5tYXAoWj0+WiBpbnN0YW5jZW9mIFB0P1o6YShaKSkucmVkdWNlKChaLGVlKT0+WiBpbnN0YW5jZW9mIFB0P1o6'@; put 'ZWUgaW5zdGFuY2VvZiBQdD9lZTpvKFosZWUpLHUpO2lmKGcudHlwZT09PXJuLkNFTExfUkVGRVJFTkNFKXtpZihFPWwoRSksdm9pZCAwPT09RSlyZXR1cm4gdX1lbHNlIGlmKEU9dGhpcy5jb2VyY2VTY2FsYXJUb051bWJlck9yRXJyb3IoRSksRT1sKEUpLHZvaWQgMD09PUUpcmV0dXJuIHU7'@; put 'cmV0dXJuIEUgaW5zdGFuY2VvZiBQdD9FOm8odSxhKEUpKX0scil9ZXZhbHVhdGVSYW5nZShlLHQscixpLG8sYSxsKXtsZXQgdTt0cnl7dT1iYS5mcm9tQXN0KGUsdC5mb3JtdWxhQWRkcmVzcyl9Y2F0Y2goTyl7aWYoTyBpbnN0YW5jZW9mIGlQKXJldHVybiBuZXcgUHQodG4uUkVGLGRyLlJh'@; put 'bmdlTWFueVNoZWV0cyk7dGhyb3cgT31jb25zdCBnPXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldFJhbmdlKHUuc3RhcnQsdS5lbmQpO2lmKHZvaWQgMD09PWcpdGhyb3cgbmV3IEVycm9yKCJSYW5nZSBkb2VzIG5vdCBleGlzdHMgaW4gZ3JhcGgiKTtsZXQgRT1nLmdldEZ1bmN0aW9uVmFsdWUo'@; put 'aSk7cmV0dXJuIHZvaWQgMD09PUUmJihFPXRoaXMuZ2V0UmFuZ2VWYWx1ZXMoaSx1LGcsYSxsKS5yZWR1Y2UoKFosZWUpPT5aIGluc3RhbmNlb2YgUHQ/WjplZSBpbnN0YW5jZW9mIFB0P2VlOm8oWixlZSksciksZy5zZXRGdW5jdGlvblZhbHVlKGksRSkpLEV9Z2V0UmFuZ2VWYWx1ZXMoZSx0'@; put 'LHIsaSxvKXtjb25zdCBhPVtdLHtzbWFsbGVyUmFuZ2VWZXJ0ZXg6bCxyZXN0UmFuZ2U6dX09dGhpcy5kZXBlbmRlbmN5R3JhcGgucmFuZ2VNYXBwaW5nLmZpbmRTbWFsbGVyUmFuZ2UodCk7bGV0IGc7aWYodm9pZCAwIT09bCYmdGhpcy5kZXBlbmRlbmN5R3JhcGguZXhpc3RzRWRnZShsLHIp'@; put 'KXtjb25zdCBFPWwuZ2V0RnVuY3Rpb25WYWx1ZShlKTtpZih2b2lkIDAhPT1FKWEucHVzaChFKTtlbHNlIGZvcihjb25zdCBPIG9mIGwucmFuZ2UuYWRkcmVzc2VzKHRoaXMuZGVwZW5kZW5jeUdyYXBoKSl7Y29uc3QgWj1vKHRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldFNjYWxhclZhbHVlKE8p'@; put 'KTtaIGluc3RhbmNlb2YgUHQ/YS5wdXNoKFopOnZvaWQgMCE9PVomJmEucHVzaChpKFopKX1nPXV9ZWxzZSBnPXQ7Zm9yKGNvbnN0IEUgb2YgZy5hZGRyZXNzZXModGhpcy5kZXBlbmRlbmN5R3JhcGgpKXtjb25zdCBPPW8odGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0U2NhbGFyVmFsdWUoRSkp'@; put 'O08gaW5zdGFuY2VvZiBQdD9hLnB1c2goTyk6dm9pZCAwIT09TyYmYS5wdXNoKGkoTykpfXJldHVybiBhfX1mdW5jdGlvbiBkQShuKXtpZihjYyhuKXx8biBpbnN0YW5jZW9mIFB0KXJldHVybiBufWZ1bmN0aW9uIG5LKG4pe3JldHVybiJib29sZWFuIj09dHlwZW9mIG4/dG1lKG4pOmNjKG4p'@; put 'fHxuIGluc3RhbmNlb2YgUHQ/bjoic3RyaW5nIj09dHlwZW9mIG4/MDp2b2lkIDB9U21lLmltcGxlbWVudGVkRnVuY3Rpb25zPXtTVU06e21ldGhvZDoic3VtIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LFNVTVNROnttZXRob2Q6InN1bXNx'@; put 'IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LE1BWDp7bWV0aG9kOiJtYXgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sTUlOOnttZXRob2Q6Im1pbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50'@; put 'VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSxNQVhBOnttZXRob2Q6Im1heGEiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sTUlOQTp7bWV0aG9kOiJtaW5hIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVh'@; put 'dExhc3RBcmdzOjF9LENPVU5UOnttZXRob2Q6ImNvdW50IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LENPVU5UQTp7bWV0aG9kOiJjb3VudGEiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0s'@; put 'QVZFUkFHRTp7bWV0aG9kOiJhdmVyYWdlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LEFWRVJBR0VBOnttZXRob2Q6ImF2ZXJhZ2VhIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LFBST0RV'@; put 'Q1Q6e21ldGhvZDoicHJvZHVjdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSwiVkFSLlMiOnttZXRob2Q6InZhcnMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sIlZBUi5QIjp7bWV0aG9k'@; put 'OiJ2YXJwIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LFZBUkE6e21ldGhvZDoidmFyYSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSxWQVJQQTp7bWV0aG9kOiJ2YXJwYSIscGFyYW1ldGVy'@; put 'czpbe2FyZ3VtZW50VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSwiU1RERVYuUyI6e21ldGhvZDoic3RkZXZzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LCJTVERFVi5QIjp7bWV0aG9kOiJzdGRldnAiLHBhcmFtZXRlcnM6W3th'@; put 'cmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sU1RERVZBOnttZXRob2Q6InN0ZGV2YSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSxTVERFVlBBOnttZXRob2Q6InN0ZGV2cGEiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5'@; put 'cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sU1VCVE9UQUw6e21ldGhvZDoic3VidG90YWwiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9fSxTbWUuYWxpYXNlcz17VkFSOiJWQVIuUyIsVkFS'@; put 'UDoiVkFSLlAiLFNUREVWOiJTVERFVi5TIixTVERFVlA6IlNUREVWLlAiLFZBUlM6IlZBUi5TIixTVERFVlM6IlNUREVWLlMifTtjbGFzcyBJWWUgZXh0ZW5kcyBCc3twb3dlcihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlBPV0VSIiksTWF0'@; put 'aC5wb3cpfX1JWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e1BPV0VSOnttZXRob2Q6InBvd2VyIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX19O2NsYXNzIERZZSBleHRlbmRzIEJze3JhZGlhbnMoZSx0KXtyZXR1cm4gdGhp'@; put 'cy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJSQURJQU5TIikscj0+ciooTWF0aC5QSS8xODApKX19RFllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtSQURJQU5TOnttZXRob2Q6InJhZGlhbnMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19fTtjbGFz'@; put 'cyBGWWUgZXh0ZW5kcyBCc3tkZWMyYmluKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiREVDMkJJTiIpLChyLGkpPT51OShyLDIsaSkpfWRlYzJvY3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRh'@; put 'KCJERUMyT0NUIiksKHIsaSk9PnU5KHIsOCxpKSl9ZGVjMmhleChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkRFQzJIRVgiKSwocixpKT0+dTkociwxNixpKSl9YmluMmRlYyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0'@; put 'LHRoaXMubWV0YWRhdGEoIkJJTjJERUMiKSxyPT57Y29uc3QgaT1ZNihyLDIsMTApO3JldHVybiB2b2lkIDA9PT1pP25ldyBQdCh0bi5OVU0sZHIuTm90QmluYXJ5KTpkOShpLDIpfSl9YmluMm9jdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEo'@; put 'IkJJTjJPQ1QiKSwocixpKT0+e2NvbnN0IG89WTYociwyLDEwKTtyZXR1cm4gdm9pZCAwPT09bz9uZXcgUHQodG4uTlVNLGRyLk5vdEJpbmFyeSk6dTkoZDkobywyKSw4LGkpfSl9YmluMmhleChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkJJ'@; put 'TjJIRVgiKSwocixpKT0+e2NvbnN0IG89WTYociwyLDEwKTtyZXR1cm4gdm9pZCAwPT09bz9uZXcgUHQodG4uTlVNLGRyLk5vdEJpbmFyeSk6dTkoZDkobywyKSwxNixpKX0pfW9jdDJkZWMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJPQ1Qy'@; put 'REVDIikscj0+e2NvbnN0IGk9WTYociw4LDEwKTtyZXR1cm4gdm9pZCAwPT09aT9uZXcgUHQodG4uTlVNLGRyLk5vdE9jdGFsKTpkOShpLDgpfSl9b2N0MmJpbihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIk9DVDJCSU4iKSwocixpKT0+e2Nv'@; put 'bnN0IG89WTYociw4LDEwKTtyZXR1cm4gdm9pZCAwPT09bz9uZXcgUHQodG4uTlVNLGRyLk5vdE9jdGFsKTp1OShkOShvLDgpLDIsaSl9KX1vY3QyaGV4KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiT0NUMkhFWCIpLChyLGkpPT57Y29uc3Qg'@; put 'bz1ZNihyLDgsMTApO3JldHVybiB2b2lkIDA9PT1vP25ldyBQdCh0bi5OVU0sZHIuTm90T2N0YWwpOnU5KGQ5KG8sOCksMTYsaSl9KX1oZXgyZGVjKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEVYMkRFQyIpLHI9Pntjb25zdCBpPVk2KHIs'@; put 'MTYsMTApO3JldHVybiB2b2lkIDA9PT1pP25ldyBQdCh0bi5OVU0sZHIuTm90SGV4KTpkOShpLDE2KX0pfWhleDJiaW4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJIRVgyQklOIiksKHIsaSk9Pntjb25zdCBvPVk2KHIsMTYsMTApO3JldHVy'@; put 'biB2b2lkIDA9PT1vP25ldyBQdCh0bi5OVU0sZHIuTm90SGV4KTp1OShkOShvLDE2KSwyLGkpfSl9aGV4Mm9jdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkhFWDJPQ1QiKSwocixpKT0+e2NvbnN0IG89WTYociwxNiwxMCk7cmV0dXJuIHZv'@; put 'aWQgMD09PW8/bmV3IFB0KHRuLk5VTSxkci5Ob3RIZXgpOnU5KGQ5KG8sMTYpLDgsaSl9KX1iYXNlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQkFTRSIpLFh0bil9ZGVjaW1hbChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJn'@; put 'cyx0LHRoaXMubWV0YWRhdGEoIkRFQ0lNQUwiKSwocixpKT0+e2NvbnN0IG89WTYocixpLDI1NSk7cmV0dXJuIHZvaWQgMD09PW8/bmV3IFB0KHRuLk5VTSxkci5Ob3RIZXgpOnBhcnNlSW50KG8saSl9KX19ZnVuY3Rpb24gWTYobixlLHQpe2NvbnN0IHI9IjAxMjM0NTY3ODlBQkNERUZHSElK'@; put 'S0xNTk9QUVJTVFVWV1hZWiIuc3Vic3RyKDAsZSksaT1uZXcgUmVnRXhwKGBeWyR7cn1dKyRgKTtpZighKG4ubGVuZ3RoPnQpJiZpLnRlc3QobikpcmV0dXJuIG59ZnVuY3Rpb24gdTkobixlLHQpe2lmKG4+ZnVuY3Rpb24gS3RuKG4pe3JldHVybi1QWWUobiktMX0oZSkpcmV0dXJuIG5ldyBQ'@; put 'dCh0bi5OVU0sZHIuVmFsdWVCYXNlTGFyZ2UpO2lmKG48UFllKGUpKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLlZhbHVlQmFzZVNtYWxsKTtjb25zdCByPUhZZShuLGUpO3JldHVybiB2b2lkIDA9PT10fHxuPDA/cjpyLmxlbmd0aD50P25ldyBQdCh0bi5OVU0sZHIuVmFsdWVCYXNlTG9uZyk6'@; put 'cnAocix0KX1mdW5jdGlvbiBQWWUobil7cmV0dXJuLU1hdGgucG93KG4sMTApLzJ9ZnVuY3Rpb24gWHRuKG4sZSx0KXtjb25zdCByPUhZZShuLGUpO3JldHVybiB2b2lkIDAhPT10JiZ0PnIubGVuZ3RoP3JwKHIsdCk6cn1mdW5jdGlvbiBIWWUobixlKXtyZXR1cm4obisobjwwP01hdGgucG93'@; put 'KGUsMTApOjApKS50b1N0cmluZyhlKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIGQ5KG4sZSl7Y29uc3QgdD1wYXJzZUludChuLGUpLHI9TWF0aC5wb3coZSwxMCk7cmV0dXJuIHQ+PXIvMj90LXI6dH1GWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0RFQzJCSU46e21ldGhvZDoiZGVjMmJpbiIs'@; put 'cGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG9wdGlvbmFsQXJnOiEwLG1pblZhbHVlOjEsbWF4VmFsdWU6MTB9XX0sREVDMk9DVDp7bWV0aG9kOiJkZWMyb2N0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0s'@; put 'e2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsb3B0aW9uYWxBcmc6ITAsbWluVmFsdWU6MSxtYXhWYWx1ZToxMH1dfSxERUMySEVYOnttZXRob2Q6ImRlYzJoZXgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzoh'@; put 'MCxtaW5WYWx1ZToxLG1heFZhbHVlOjEwfV19LEJJTjJERUM6e21ldGhvZDoiYmluMmRlYyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XX0sQklOMk9DVDp7bWV0aG9kOiJiaW4yb2N0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50'@; put 'VHlwZTpldC5OVU1CRVIsb3B0aW9uYWxBcmc6ITAsbWluVmFsdWU6MCxtYXhWYWx1ZToxMH1dfSxCSU4ySEVYOnttZXRob2Q6ImJpbjJoZXgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzohMCxtaW5WYWx1'@; put 'ZTowLG1heFZhbHVlOjEwfV19LE9DVDJERUM6e21ldGhvZDoib2N0MmRlYyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XX0sT0NUMkJJTjp7bWV0aG9kOiJvY3QyYmluIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5O'@; put 'VU1CRVIsb3B0aW9uYWxBcmc6ITAsbWluVmFsdWU6MCxtYXhWYWx1ZToxMH1dfSxPQ1QySEVYOnttZXRob2Q6Im9jdDJoZXgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzohMCxtaW5WYWx1ZTowLG1heFZh'@; put 'bHVlOjEwfV19LEhFWDJERUM6e21ldGhvZDoiaGV4MmRlYyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XX0sSEVYMkJJTjp7bWV0aG9kOiJoZXgyYmluIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsb3B0'@; put 'aW9uYWxBcmc6ITAsbWluVmFsdWU6MCxtYXhWYWx1ZToxMH1dfSxIRVgyT0NUOnttZXRob2Q6ImhleDJvY3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzohMCxtaW5WYWx1ZTowLG1heFZhbHVlOjEwfV19'@; put 'LERFQ0lNQUw6e21ldGhvZDoiZGVjaW1hbCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjIsbWF4VmFsdWU6MzZ9XX0sQkFTRTp7bWV0aG9kOiJiYXNlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5V'@; put 'TUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToyLG1heFZhbHVlOjM2fSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzohMCxtaW5WYWx1ZTowLG1heFZhbHVlOjI1NX1dfX07Y2xhc3MgVlllIGV4dGVuZHMgQnN7cmFuZChlLHQpe3Jl'@; put 'dHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlJBTkQiKSxNYXRoLnJhbmRvbSl9cmFuZGJldHdlZW4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJSQU5EQkVUV0VFTiIpLChyLGkpPT5pPHI/bmV3IFB0KHRu'@; put 'Lk5VTSxkci5Xcm9uZ09yZGVyKTooKHI9TWF0aC5jZWlsKHIpKT09PShpPU1hdGguZmxvb3IoaSkrMSkmJihpKz0xKSxyK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooaS1yKSkpKX19ZnVuY3Rpb24gQlllKG4pe2NvbnN0IGU9TWF0aC5jZWlsKG4pO3JldHVybiBlJTI9PTE/ZTplKzF9ZnVu'@; put 'Y3Rpb24galllKG4pe2NvbnN0IGU9TWF0aC5jZWlsKG4pO3JldHVybiBlJTI9PTA/ZTplKzF9VlllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtSQU5EOnttZXRob2Q6InJhbmQiLHBhcmFtZXRlcnM6W10saXNWb2xhdGlsZTohMH0sUkFOREJFVFdFRU46e21ldGhvZDoicmFuZGJldHdlZW4iLHBh'@; put 'cmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dLGlzVm9sYXRpbGU6ITB9fTtjbGFzcyBFbWUgZXh0ZW5kcyBCc3tyb3VuZHVwKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUk9VTkRE'@; put 'T1dOIiksKHIsaSk9Pntjb25zdCBvPU1hdGgucG93KDEwLGkpO3JldHVybiByPDA/LU1hdGguY2VpbCgtcipvKS9vOk1hdGguY2VpbChyKm8pL299KX1yb3VuZGRvd24oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJST1VORERPV04iKSwocixp'@; put 'KT0+e2NvbnN0IG89TWF0aC5wb3coMTAsaSk7cmV0dXJuIHI8MD8tTWF0aC5mbG9vcigtcipvKS9vOk1hdGguZmxvb3IocipvKS9vfSl9cm91bmQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJST1VORCIpLChyLGkpPT57Y29uc3Qgbz1NYXRo'@; put 'LnBvdygxMCxpKTtyZXR1cm4gcjwwPy1NYXRoLnJvdW5kKC1yKm8pL286TWF0aC5yb3VuZChyKm8pL299KX1pbnRGdW5jKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU5UIikscj0+cjwwPy1NYXRoLmZsb29yKC1yKTpNYXRoLmZsb29yKHIp'@; put 'KX1ldmVuKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRVZFTiIpLHI9PnI8MD8talllKC1yKTpqWWUocikpfW9kZChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIk9ERCIpLHI9PnI8MD8tQlll'@; put 'KC1yKTpCWWUocikpfWNlaWxpbmdtYXRoKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ0VJTElORy5NQVRIIiksKHIsaSxvKT0+MD09PWl8fDA9PT1yPzA6KGk9TWF0aC5hYnMoaSksMT09PW8mJnI8MCYmKGk9LWkpLE1hdGguY2VpbChyL2kp'@; put 'KmkpKX1jZWlsaW5nKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ0VJTElORyIpLChyLGkpPT4wPT09cj8wOjA9PT1pP25ldyBQdCh0bi5ESVZfQllfWkVSTyk6cj4wJiZpPDA/bmV3IFB0KHRuLk5VTSxkci5EaXN0aW5jdFNpZ25zKTpNYXRo'@; put 'LmNlaWwoci9pKSppKX1jZWlsaW5ncHJlY2lzZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNFSUxJTkcuUFJFQ0lTRSIpLChyLGkpPT4wPT09aXx8MD09PXI/MDooaT1NYXRoLmFicyhpKSxNYXRoLmNlaWwoci9pKSppKSl9Zmxvb3JtYXRo'@; put 'KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRkxPT1IuTUFUSCIpLChyLGksbyk9PjA9PT1pfHwwPT09cj8wOihpPU1hdGguYWJzKGkpLDE9PT1vJiZyPDAmJihpKj0tMSksTWF0aC5mbG9vcihyL2kpKmkpKX1mbG9vcihlLHQpe3JldHVybiB0'@; put 'aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkZMT09SIiksKHIsaSk9PjA9PT1yPzA6MD09PWk/bmV3IFB0KHRuLkRJVl9CWV9aRVJPKTpyPjAmJmk8MD9uZXcgUHQodG4uTlVNLGRyLkRpc3RpbmN0U2lnbnMpOk1hdGguZmxvb3Ioci9pKSppKX1mbG9vcnByZWNpc2Uo'@; put 'ZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJGTE9PUi5QUkVDSVNFIiksKHIsaSk9PjA9PT1pfHwwPT09cj8wOihpPU1hdGguYWJzKGkpLE1hdGguZmxvb3Ioci9pKSppKSl9fUVtZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17Uk9VTkRVUDp7bWV0'@; put 'aG9kOiJyb3VuZHVwIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9XX0sUk9VTkRET1dOOnttZXRob2Q6InJvdW5kZG93biIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1'@; put 'bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfV19LFJPVU5EOnttZXRob2Q6InJvdW5kIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9XX0sSU5UOnttZXRob2Q6ImludEZ1bmMiLHBhcmFt'@; put 'ZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LEVWRU46e21ldGhvZDoiZXZlbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sT0REOnttZXRob2Q6Im9kZCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sIkNFSUxJTkcuTUFUSCI6'@; put 'e21ldGhvZDoiY2VpbGluZ21hdGgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZhdWx0VmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjB9XX0sQ0VJTElORzp7bWV0aG9kOiJjZWlsaW5n'@; put 'IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sIkNFSUxJTkcuUFJFQ0lTRSI6e21ldGhvZDoiY2VpbGluZ3ByZWNpc2UiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5V'@; put 'TUJFUixkZWZhdWx0VmFsdWU6MX1dfSwiRkxPT1IuTUFUSCI6e21ldGhvZDoiZmxvb3JtYXRoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRW'@; put 'YWx1ZTowfV19LEZMT09SOnttZXRob2Q6ImZsb29yIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sIkZMT09SLlBSRUNJU0UiOnttZXRob2Q6ImZsb29ycHJlY2lzZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5O'@; put 'VU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZToxfV19fSxFbWUuYWxpYXNlcz17IklTTy5DRUlMSU5HIjoiQ0VJTElORy5QUkVDSVNFIixUUlVOQzoiUk9VTkRET1dOIn07Y2xhc3MgVVllIGV4dGVuZHMgQnN7c3FydChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0'@; put 'aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNRUlQiKSxNYXRoLnNxcnQpfX1mdW5jdGlvbipRdG4oKXt9ZnVuY3Rpb24gSnRuKG4pe2NvbnN0IGU9bltTeW1ib2wuaXRlcmF0b3JdKCkse2RvbmU6dCx2YWx1ZTpyfT1lLm5leHQoKTtyZXR1cm4gdD97cmVzdDpRdG4oKX06e3ZhbHVlOnIs'@; put 'cmVzdDplfX1VWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e1NRUlQ6e21ldGhvZDoic3FydCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX19O2NsYXNzIHRubntjb25zdHJ1Y3RvcihlLHQscixpLG8pe3RoaXMuaW50ZXJwcmV0ZXI9ZSx0aGlzLmNhY2hlS2V5PXQsdGhp'@; put 'cy5yZWR1Y2VJbml0aWFsVmFsdWU9cix0aGlzLmNvbXBvc2VGdW5jdGlvbj1pLHRoaXMubWFwRnVuY3Rpb249byx0aGlzLmRlcGVuZGVuY3lHcmFwaD10aGlzLmludGVycHJldGVyLmRlcGVuZGVuY3lHcmFwaH1jb21wdXRlKGUsdCl7Zm9yKGNvbnN0IG8gb2YgdClpZighby5jb25kaXRpb25S'@; put 'YW5nZS5zYW1lRGltZW5zaW9uc0FzKGUpKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuRXF1YWxMZW5ndGgpO2NvbnN0IHI9dGhpcy50cnlUb0dldFJhbmdlVmVydGV4Rm9yUmFuZ2VWYWx1ZShlKSxpPXQubWFwKG89PnRoaXMudHJ5VG9HZXRSYW5nZVZlcnRleEZvclJhbmdlVmFsdWUoby5j'@; put 'b25kaXRpb25SYW5nZSkpO2lmKHImJmkuZXZlcnkobz0+dm9pZCAwIT09bykpe2NvbnN0IG89dC5tYXAodT0+dS5jcml0ZXJpb25QYWNrYWdlLnJhdykuam9pbigiLCIpLGE9dGhpcy5maW5kQWxyZWFkeUNvbXB1dGVkVmFsdWVJbkNhY2hlKHIsdGhpcy5jYWNoZUtleSh0KSxvKTtpZih2b2lk'@; put 'IDAhPT1hKXJldHVybiB0aGlzLmludGVycHJldGVyLnN0YXRzLmluY3JlbWVudENyaXRlcmlvbkZ1bmN0aW9uRnVsbENhY2hlVXNlZCgpLGE7Y29uc3QgbD10aGlzLmJ1aWxkTmV3Q3JpdGVyaW9uQ2FjaGUodGhpcy5jYWNoZUtleSh0KSx0Lm1hcCh1PT51LmNvbmRpdGlvblJhbmdlLnJhbmdl'@; put 'KSxlLnJhbmdlKTtyZXR1cm4gbC5oYXMobyl8fGwuc2V0KG8sW3RoaXMuZXZhbHVhdGVSYW5nZVZhbHVlKGUsdCksdC5tYXAodT0+dS5jcml0ZXJpb25QYWNrYWdlLmxhbWJkYSldKSxyLnNldENyaXRlcmlvbkZ1bmN0aW9uVmFsdWVzKHRoaXMuY2FjaGVLZXkodCksbCksaS5mb3JFYWNoKHU9'@; put 'Pnt2b2lkIDAhPT11JiZ1LmFkZERlcGVuZGVudENhY2hlUmFuZ2Uocil9KSxsLmdldChvKVswXX1yZXR1cm4gdGhpcy5ldmFsdWF0ZVJhbmdlVmFsdWUoZSx0KX10cnlUb0dldFJhbmdlVmVydGV4Rm9yUmFuZ2VWYWx1ZShlKXtjb25zdCB0PWUucmFuZ2U7aWYodm9pZCAwIT09dClyZXR1cm4g'@; put 'dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0UmFuZ2UodC5zdGFydCx0LmVuZCl9cmVkdWNlRnVuY3Rpb24oZSl7bGV0IHQ9dGhpcy5yZWR1Y2VJbml0aWFsVmFsdWU7Zm9yKGNvbnN0IHIgb2YgZSl0PXRoaXMuY29tcG9zZUZ1bmN0aW9uKHQscik7cmV0dXJuIHR9ZmluZEFscmVhZHlDb21wdXRl'@; put 'ZFZhbHVlSW5DYWNoZShlLHQscil7cmV0dXJuIGUuZ2V0Q3JpdGVyaW9uRnVuY3Rpb25WYWx1ZSh0LHIpfWV2YWx1YXRlUmFuZ2VWYWx1ZShlLHQpe2NvbnN0IHI9dC5tYXAobD0+bC5jcml0ZXJpb25QYWNrYWdlLmxhbWJkYSksaT1BcnJheS5mcm9tKGUudmFsdWVzRnJvbVRvcExlZnRDb3Ju'@; put 'ZXIoKSkubWFwKHRoaXMubWFwRnVuY3Rpb24pW1N5bWJvbC5pdGVyYXRvcl0oKSxhPVdZZShyLHQubWFwKGw9PmwuY29uZGl0aW9uUmFuZ2UuaXRlcmF0ZVZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpLGkpO3JldHVybiB0aGlzLnJlZHVjZUZ1bmN0aW9uKGEpfWJ1aWxkTmV3Q3JpdGVyaW9u'@; put 'Q2FjaGUoZSx0LHIpe2NvbnN0IGk9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0UmFuZ2Uoci5zdGFydCxyLmVuZCkse3NtYWxsZXJSYW5nZVZlcnRleDpvLHJlc3RDb25kaXRpb25SYW5nZXM6YSxyZXN0VmFsdWVzUmFuZ2U6bH09KChuLGUsdCk9PntpZih0LmVuZC5yb3c+dC5zdGFydC5yb3cp'@; put 'e2NvbnN0IHI9Qm8odC5lbmQuc2hlZXQsdC5lbmQuY29sLHQuZW5kLnJvdy0xKSxpPW4uZ2V0UmFuZ2UodC5zdGFydCxyKTtpZih2b2lkIDAhPT1pKXJldHVybntzbWFsbGVyUmFuZ2VWZXJ0ZXg6aSxyZXN0VmFsdWVzUmFuZ2U6dC53aXRoU3RhcnQoQm8odC5zdGFydC5zaGVldCx0LnN0YXJ0'@; put 'LmNvbCx0LmVuZC5yb3cpKSxyZXN0Q29uZGl0aW9uUmFuZ2VzOmUubWFwKG89Pm8ud2l0aFN0YXJ0KEJvKG8uc3RhcnQuc2hlZXQsby5zdGFydC5jb2wsby5lbmQucm93KSkpfX1yZXR1cm57cmVzdFZhbHVlc1JhbmdlOnQscmVzdENvbmRpdGlvblJhbmdlczplfX0pKHRoaXMuZGVwZW5kZW5j'@; put 'eUdyYXBoLHQscik7bGV0IHU7dT12b2lkIDAhPT1vJiZ0aGlzLmRlcGVuZGVuY3lHcmFwaC5leGlzdHNFZGdlKG8saSk/by5nZXRDcml0ZXJpb25GdW5jdGlvblZhbHVlcyhlKTpuZXcgTWFwO2NvbnN0IGc9bmV3IE1hcDtyZXR1cm4gdS5mb3JFYWNoKChbRSxPXSxaKT0+e2NvbnN0IGVlPVdZ'@; put 'ZShPLGEubWFwKE1lPT56WWUodGhpcy5kZXBlbmRlbmN5R3JhcGgsTWUpKSxBcnJheS5mcm9tKHpZZSh0aGlzLmRlcGVuZGVuY3lHcmFwaCxsKSkubWFwKHRoaXMubWFwRnVuY3Rpb24pW1N5bWJvbC5pdGVyYXRvcl0oKSksdmU9dGhpcy5jb21wb3NlRnVuY3Rpb24oRSx0aGlzLnJlZHVjZUZ1'@; put 'bmN0aW9uKGVlKSk7dGhpcy5pbnRlcnByZXRlci5zdGF0cy5pbmNyZW1lbnRDcml0ZXJpb25GdW5jdGlvblBhcnRpYWxDYWNoZVVzZWQoKSxnLnNldChaLFt2ZSxPXSl9KSxnfX1jbGFzcyBubm57Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNvbmRpdGlvblJhbmdlPWUsdGhpcy5jcml0ZXJpb25Q'@; put 'YWNrYWdlPXR9fWZ1bmN0aW9uKnpZZShuLGUpe2Zvcihjb25zdCB0IG9mIGUuYWRkcmVzc2VzKG4pKXlpZWxkIExvKG4uZ2V0U2NhbGFyVmFsdWUodCkpfWZ1bmN0aW9uKldZZShuLGUsdCl7Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3QgaT1lLm1hcChhPT5KdG4oYSkpO2lmKCFpLmV2ZXJ5KGE9'@; put 'Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCJ2YWx1ZSIpKSlyZXR1cm47cm5uKGkubWFwKGE9PkxvKGEudmFsdWUpKSxuKS5ldmVyeSgoW2EsbF0pPT5sKGEpKSYmKHlpZWxkIHIpLGU9aS5tYXAoYT0+YS5yZXN0KX19ZnVuY3Rpb24gcm5uKG4sZSl7Y29uc3QgdD1b'@; put 'XTtmb3IobGV0IHI9MDtyPE1hdGgubWluKG4ubGVuZ3RoLGUubGVuZ3RoKTtyKyspdC5wdXNoKFtuW3JdLGVbcl1dKTtyZXR1cm4gdH1jbGFzcyB0eXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3VtPWUsdGhpcy5jb3VudD10fXN0YXRpYyBzaW5nbGUoZSl7cmV0dXJuIG5ldyB0eShlLDEpfWNv'@; put 'bXBvc2UoZSl7cmV0dXJuIG5ldyB0eSh0aGlzLnN1bStlLnN1bSx0aGlzLmNvdW50K2UuY291bnQpfWF2ZXJhZ2VWYWx1ZSgpe2lmKHRoaXMuY291bnQ+MClyZXR1cm4gdGhpcy5zdW0vdGhpcy5jb3VudH19ZnVuY3Rpb24gWVllKG4pe3JldHVybiBjYyhuKSYmIU51bWJlci5pc0Zpbml0ZShM'@; put 'byhuKSk/MDpufWZ1bmN0aW9uIHJLKG4pe3JldHVybiBuIGluc3RhbmNlb2YgUHQ/bjpjYyhuKT9MbyhuKTp2b2lkIDB9dHkuZW1wdHk9bmV3IHR5KDAsMCk7Y2xhc3MgWlllIGV4dGVuZHMgQnN7c3VtaWYoZSx0KXtjb25zdCByPSJTVU1JRiI7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5h'@; put 'cmdzLHQsdGhpcy5tZXRhZGF0YShyKSwobyxhLGwpPT50aGlzLmNvbXB1dGVDb25kaXRpb25hbEFnZ3JlZ2F0aW9uRnVuY3Rpb24obD8/byxbbyxhXSxyLDAsKHUsZyk9PnRoaXMuYXJpdGhtZXRpY0hlbHBlci5ub25zdHJpY3RhZGQodSxnKSxySykpfXN1bWlmcyhlLHQpe2NvbnN0IHI9IlNV'@; put 'TUlGUyI7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YShyKSwobywuLi5hKT0+dGhpcy5jb21wdXRlQ29uZGl0aW9uYWxBZ2dyZWdhdGlvbkZ1bmN0aW9uKG8sYSxyLDAsKGwsdSk9PnRoaXMuYXJpdGhtZXRpY0hlbHBlci5ub25zdHJpY3RhZGQobCx1KSxy'@; put 'SykpfWF2ZXJhZ2VpZihlLHQpe2NvbnN0IHI9IkFWRVJBR0VJRiI7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YShyKSwobyxhLGwpPT57Y29uc3QgdT10aGlzLmNvbXB1dGVDb25kaXRpb25hbEFnZ3JlZ2F0aW9uRnVuY3Rpb24obD8/byxbbyxhXSxyLHR5'@; put 'LmVtcHR5LChnLEUpPT5nLmNvbXBvc2UoRSksZz0+Y2MoZyk/dHkuc2luZ2xlKExvKGcpKTp0eS5lbXB0eSk7cmV0dXJuIHUgaW5zdGFuY2VvZiBQdD91OnUuYXZlcmFnZVZhbHVlKCl8fG5ldyBQdCh0bi5ESVZfQllfWkVSTyl9KX1jb3VudGlmKGUsdCl7Y29uc3Qgcj0iQ09VTlRJRiI7cmV0'@; put 'dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YShyKSwobyxhKT0+dGhpcy5jb21wdXRlQ29uZGl0aW9uYWxBZ2dyZWdhdGlvbkZ1bmN0aW9uKG8sW28sYV0sciwwLChsLHUpPT5sK3UsKCk9PjEpKX1jb3VudGlmcyhlLHQpe2NvbnN0IHI9IkNPVU5USUZTIjtyZXR1'@; put 'cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKHIpLCguLi5vKT0+dGhpcy5jb21wdXRlQ29uZGl0aW9uYWxBZ2dyZWdhdGlvbkZ1bmN0aW9uKG9bMF0sbyxyLDAsKGEsbCk9PmErbCwoKT0+MSkpfW1pbmlmcyhlLHQpe2NvbnN0IHI9Ik1JTklGUyIsaT0oYSxsKT0+'@; put 'dm9pZCAwPT09bHx8dm9pZCAwPT09YT92b2lkIDA9PT1sP2E6bDpNYXRoLm1pbihhLGwpO3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEociksKGEsLi4ubCk9PllZZSh0aGlzLmNvbXB1dGVDb25kaXRpb25hbEFnZ3JlZ2F0aW9uRnVuY3Rpb24oYSxsLHIs'@; put 'TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGksckspKSl9bWF4aWZzKGUsdCl7Y29uc3Qgcj0iTUFYSUZTIixpPShhLGwpPT52b2lkIDA9PT1sfHx2b2lkIDA9PT1hP3ZvaWQgMD09PWw/YTpsOk1hdGgubWF4KGEsbCk7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRh'@; put 'ZGF0YShyKSwoYSwuLi5sKT0+WVllKHRoaXMuY29tcHV0ZUNvbmRpdGlvbmFsQWdncmVnYXRpb25GdW5jdGlvbihhLGwscixOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksaSxySykpKX1jb21wdXRlQ29uZGl0aW9uYWxBZ2dyZWdhdGlvbkZ1bmN0aW9uKGUsdCxyLGksbyxhKXtjb25zdCBsPVtd'@; put 'O2ZvcihsZXQgdT0wO3U8dC5sZW5ndGg7dSs9Mil7Y29uc3QgZz10W3VdLEU9dGhpcy5pbnRlcnByZXRlci5jcml0ZXJpb25CdWlsZGVyLmZyb21DZWxsVmFsdWUodFt1KzFdLHRoaXMuYXJpdGhtZXRpY0hlbHBlcik7aWYodm9pZCAwPT09RSlyZXR1cm4gbmV3IFB0KHRuLlZBTFVFLGRyLkJh'@; put 'ZENyaXRlcmlvbik7bC5wdXNoKG5ldyBubm4oZyxFKSl9cmV0dXJuIG5ldyB0bm4odGhpcy5pbnRlcnByZXRlcixmdW5jdGlvbiBpbm4obil7cmV0dXJuIGU9Pntjb25zdCB0PWUubWFwKHI9PmAke3IuY29uZGl0aW9uUmFuZ2UucmFuZ2Uuc2hlZXR9LCR7ci5jb25kaXRpb25SYW5nZS5yYW5n'@; put 'ZS5zdGFydC5jb2x9LCR7ci5jb25kaXRpb25SYW5nZS5yYW5nZS5zdGFydC5yb3d9YCk7cmV0dXJuW24sLi4udF0uam9pbigiLCIpfX0ociksaSxvLGEpLmNvbXB1dGUoZSxsKX19WlllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtTVU1JRjp7bWV0aG9kOiJzdW1pZiIscGFyYW1ldGVyczpbe2Fy'@; put 'Z3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFLG9wdGlvbmFsQXJnOiEwfV19LENPVU5USUY6e21ldGhvZDoiY291bnRpZiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpl'@; put 'dC5OT0VSUk9SfV19LEFWRVJBR0VJRjp7bWV0aG9kOiJhdmVyYWdlaWYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9LHthcmd1bWVudFR5cGU6ZXQuTk9FUlJPUn0se2FyZ3VtZW50VHlwZTpldC5SQU5HRSxvcHRpb25hbEFyZzohMH1dfSxTVU1JRlM6e21ldGhvZDoic3Vt'@; put 'aWZzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0Lk5PRVJST1J9XSxyZXBlYXRMYXN0QXJnczoyfSxDT1VOVElGUzp7bWV0aG9kOiJjb3VudGlmcyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpl'@; put 'dC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SfV0scmVwZWF0TGFzdEFyZ3M6Mn0sTUlOSUZTOnttZXRob2Q6Im1pbmlmcyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SfV0s'@; put 'cmVwZWF0TGFzdEFyZ3M6Mn0sTUFYSUZTOnttZXRob2Q6Im1heGlmcyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SfV0scmVwZWF0TGFzdEFyZ3M6Mn19O2NsYXNzIEdZZSBleHRlbmRz'@; put 'IEJze3N1bXByb2R1Y3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTVU1QUk9EVUNUIiksKC4uLnIpPT57Y29uc3QgaT1yWzBdLndpZHRoKCksbz1yWzBdLmhlaWdodCgpO2Zvcihjb25zdCB1IG9mIHIpaWYodS53aWR0aCgpIT09aXx8dS5o'@; put 'ZWlnaHQoKSE9PW8pcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5FcXVhbExlbmd0aCk7bGV0IGE9MDtjb25zdCBsPXIubWFwKHU9PnUuaXRlcmF0ZVZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpO2ZvcihsZXQgdT0wO3U8aSpvO3UrKyl7bGV0IGc9MTtmb3IoY29uc3QgRSBvZiBsKXtjb25z'@; put 'dCBPPUUubmV4dCgpLnZhbHVlO2lmKE8gaW5zdGFuY2VvZiBQdClyZXR1cm4gTztjb25zdCBaPXRoaXMuY29lcmNlU2NhbGFyVG9OdW1iZXJPckVycm9yKE8pO2NjKFopP2cqPUxvKFopOmc9MH1hKz1nfXJldHVybiBhfSl9fUdZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17U1VNUFJPRFVDVDp7'@; put 'bWV0aG9kOiJzdW1wcm9kdWN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV0scmVwZWF0TGFzdEFyZ3M6MX19O2NsYXNzICRZZSBleHRlbmRzIEJze2NvbmNhdGVuYXRlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ09O'@; put 'Q0FURU5BVEUiKSwoLi4ucik9PiIiLmNvbmNhdCguLi5yKSl9c3BsaXQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTUExJVCIpLChyLGkpPT57Y29uc3Qgbz1yLnNwbGl0KCIgIik7cmV0dXJuIGk+PW8ubGVuZ3RofHxpPDA/bmV3IFB0KHRu'@; put 'LlZBTFVFLGRyLkluZGV4Qm91bmRzKTpvW2ldfSl9bGVuKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTEVOIikscj0+ci5sZW5ndGgpfWxvd2VyKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgi'@; put 'TE9XRVIiKSxyPT5yLnRvTG93ZXJDYXNlKCkpfXRyaW0oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJUUklNIikscj0+ci5yZXBsYWNlKC9eICt8ICskL2csIiIpLnJlcGxhY2UoLyArL2csIiAiKSl9cHJvcGVyKGUsdCl7cmV0dXJuIHRoaXMu'@; put 'cnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUFJPUEVSIikscj0+ci5yZXBsYWNlKG5ldyBSZWdFeHAoIlxccHtMfSsiLCJndSIpLGk9PmkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkraS5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKSkpfWNsZWFuKGUsdCl7cmV0dXJuIHRo'@; put 'aXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ0xFQU4iKSxyPT5yLnJlcGxhY2UoL1tcdTAwMDAtXHUwMDFGXS9nLCIiKSl9ZXhhY3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJFWEFDVCIpLChyLGkpPT5yPT09aSl9'@; put 'cmVwdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlJFUFQiKSwocixpKT0+aTwwP25ldyBQdCh0bi5WQUxVRSxkci5OZWdhdGl2ZUNvdW50KTpyLnJlcGVhdChpKSl9cmlnaHQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3Ms'@; put 'dCx0aGlzLm1ldGFkYXRhKCJSSUdIVCIpLChyLGkpPT5pPDA/bmV3IFB0KHRuLlZBTFVFLGRyLk5lZ2F0aXZlTGVuZ3RoKTowPT09aT8iIjpyLnNsaWNlKC1pKSl9bGVmdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkxFRlQiKSwocixpKT0+'@; put 'aTwwP25ldyBQdCh0bi5WQUxVRSxkci5OZWdhdGl2ZUxlbmd0aCk6ci5zbGljZSgwLGkpKX1taWQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJNSUQiKSwocixpLG8pPT5pPDE/bmV3IFB0KHRuLlZBTFVFLGRyLkxlc3NUaGFuT25lKTpvPDA/'@; put 'bmV3IFB0KHRuLlZBTFVFLGRyLk5lZ2F0aXZlTGVuZ3RoKTpyLnN1YnN0cmluZyhpLTEsaStvLTEpKX1yZXBsYWNlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUkVQTEFDRSIpLChyLGksbyxhKT0+aTwxP25ldyBQdCh0bi5WQUxVRSxkci5M'@; put 'ZXNzVGhhbk9uZSk6bzwwP25ldyBQdCh0bi5WQUxVRSxkci5OZWdhdGl2ZUxlbmd0aCk6ci5zdWJzdHJpbmcoMCxpLTEpK2Erci5zdWJzdHJpbmcoaStvLTEpKX1zZWFyY2goZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTRUFSQ0giKSwocixp'@; put 'LG8pPT57aWYobzwxfHxvPmkubGVuZ3RoKXJldHVybiBuZXcgUHQodG4uVkFMVUUsZHIuTGVuZ3RoQm91bmRzKTtjb25zdCBhPXIudG9Mb3dlckNhc2UoKSxsPWkuc3Vic3RyaW5nKG8tMSkudG9Mb3dlckNhc2UoKSx1PXRoaXMuYXJpdGhtZXRpY0hlbHBlci5yZXF1aXJlc1JlZ2V4KGEpP3Ro'@; put 'aXMuYXJpdGhtZXRpY0hlbHBlci5zZWFyY2hTdHJpbmcoYSxsKTpsLmluZGV4T2YoYSk7cmV0dXJuIHU+LTE/dStvOm5ldyBQdCh0bi5WQUxVRSxkci5QYXR0ZXJuTm90Rm91bmQpfSl9c3Vic3RpdHV0ZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRh'@; put 'dGEoIlNVQlNUSVRVVEUiKSwocixpLG8sYSk9Pntjb25zdCBsPXRoaXMuZXNjYXBlUmVnRXhwU3BlY2lhbENoYXJhY3RlcnMoaSksdT1uZXcgUmVnRXhwKGwsImciKTtpZih2b2lkIDA9PT1hKXJldHVybiByLnJlcGxhY2UodSxvKTtpZihhPDEpcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5M'@; put 'ZXNzVGhhbk9uZSk7bGV0IGcsRT0wO2Zvcig7bnVsbCE9PShnPXUuZXhlYyhyKSk7KWlmKGE9PT0rK0UpcmV0dXJuIHIuc3Vic3RyaW5nKDAsZy5pbmRleCkrbytyLnN1YnN0cmluZyh1Lmxhc3RJbmRleCk7cmV0dXJuIHJ9KX1maW5kKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5h'@; put 'cmdzLHQsdGhpcy5tZXRhZGF0YSgiRklORCIpLChyLGksbyk9PntpZihvPDF8fG8+aS5sZW5ndGgpcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5JbmRleEJvdW5kcyk7Y29uc3QgbD1pLnN1YnN0cmluZyhvLTEpLmluZGV4T2YocikrbztyZXR1cm4gbD4wP2w6bmV3IFB0KHRuLlZBTFVFLGRy'@; put 'LlBhdHRlcm5Ob3RGb3VuZCl9KX10KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiVCIpLHI9PnIgaW5zdGFuY2VvZiBQdHx8InN0cmluZyI9PXR5cGVvZiByP3I6IiIpfXVwcGVyKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdz'@; put 'LHQsdGhpcy5tZXRhZGF0YSgiVVBQRVIiKSxyPT5yLnRvVXBwZXJDYXNlKCkpfWVzY2FwZVJlZ0V4cFNwZWNpYWxDaGFyYWN0ZXJzKGUpe3JldHVybiBlLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIil9fSRZZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17Q09OQ0FURU5BVEU6'@; put 'e21ldGhvZDoiY29uY2F0ZW5hdGUiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfV0scmVwZWF0TGFzdEFyZ3M6MSxleHBhbmRSYW5nZXM6ITB9LEVYQUNUOnttZXRob2Q6ImV4YWN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlw'@; put 'ZTpldC5TVFJJTkd9XX0sU1BMSVQ6e21ldGhvZDoic3BsaXQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSxMRU46e21ldGhvZDoibGVuIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR31dfSxMT1dFUjp7'@; put 'bWV0aG9kOiJsb3dlciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9XX0sTUlEOnttZXRob2Q6Im1pZCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSxUUklN'@; put 'OnttZXRob2Q6InRyaW0iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfV19LFQ6e21ldGhvZDoidCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TQ0FMQVJ9XX0sUFJPUEVSOnttZXRob2Q6InByb3BlciIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJ'@; put 'Tkd9XX0sQ0xFQU46e21ldGhvZDoiY2xlYW4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfV19LFJFUFQ6e21ldGhvZDoicmVwdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LFJJR0hUOnttZXRob2Q6'@; put 'InJpZ2h0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjF9XX0sTEVGVDp7bWV0aG9kOiJsZWZ0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5OVU1C'@; put 'RVIsZGVmYXVsdFZhbHVlOjF9XX0sUkVQTEFDRTp7bWV0aG9kOiJyZXBsYWNlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0LlNUUklOR31dfSxTRUFS'@; put 'Q0g6e21ldGhvZDoic2VhcmNoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZToxfV19LFNVQlNUSVRVVEU6e21ldGhvZDoic3Vic3RpdHV0ZSIscGFyYW1ldGVy'@; put 'czpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQuU1RSSU5HfSx7YXJndW1lbnRUeXBlOmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsb3B0aW9uYWxBcmc6ITB9XX0sRklORDp7bWV0aG9kOiJmaW5kIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBl'@; put 'OmV0LlNUUklOR30se2FyZ3VtZW50VHlwZTpldC5TVFJJTkd9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZToxfV19LFVQUEVSOnttZXRob2Q6InVwcGVyIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlNUUklOR31dfX07Y2xhc3MgcVllIGV4dGVuZHMgQnN7YWNv'@; put 'cyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkFDT1MiKSxNYXRoLmFjb3MpfWFzaW4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJBU0lOIiksTWF0aC5hc2luKX1jb3MoZSx0KXtyZXR1cm4g'@; put 'dGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDT1MiKSxNYXRoLmNvcyl9c2luKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiU0lOIiksTWF0aC5zaW4pfXRhbihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUu'@; put 'YXJncyx0LHRoaXMubWV0YWRhdGEoIlRBTiIpLE1hdGgudGFuKX1hdGFuKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQVRBTiIpLE1hdGguYXRhbil9YXRhbjIoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1l'@; put 'dGFkYXRhKCJBVEFOMiIpLChyLGkpPT4wPT09ciYmMD09PWk/bmV3IFB0KHRuLkRJVl9CWV9aRVJPKTpNYXRoLmF0YW4yKGkscikpfWNvdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPVCIpLHI9PjA9PT1yP25ldyBQdCh0bi5ESVZfQllf'@; put 'WkVSTyk6MS9NYXRoLnRhbihyKSl9YWNvdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkFDT1QiKSxyPT4wPT09cj93bWUvMjpNYXRoLmF0YW4oMS9yKSl9c2VjKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5t'@; put 'ZXRhZGF0YSgiU0VDIikscj0+MS9NYXRoLmNvcyhyKSl9Y3NjKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ1NDIikscj0+MD09PXI/bmV3IFB0KHRuLkRJVl9CWV9aRVJPKToxL01hdGguc2luKHIpKX1zaW5oKGUsdCl7cmV0dXJuIHRoaXMu'@; put 'cnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiU0lOSCIpLE1hdGguc2luaCl9YXNpbmgoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJBU0lOSCIpLE1hdGguYXNpbmgpfWNvc2goZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlv'@; put 'bihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDT1NIIiksTWF0aC5jb3NoKX1hY29zaChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkFDT1NIIiksTWF0aC5hY29zaCl9dGFuaChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0'@; put 'LHRoaXMubWV0YWRhdGEoIlRBTkgiKSxNYXRoLnRhbmgpfWF0YW5oKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQVRBTkgiKSxNYXRoLmF0YW5oKX1jb3RoKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRh'@; put 'ZGF0YSgiQ09USCIpLHI9PjA9PT1yP25ldyBQdCh0bi5ESVZfQllfWkVSTyk6MS9NYXRoLnRhbmgocikpfWFjb3RoKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQUNPVEgiKSxyPT4wPT09cj9uZXcgUHQodG4uTlVNLGRyLk5vblplcm8pOk1h'@; put 'dGguYXRhbmgoMS9yKSl9c2VjaChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNFQ0giKSxyPT4xL01hdGguY29zaChyKSl9Y3NjaChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNTQ0giKSxy'@; put 'PT4wPT09cj9uZXcgUHQodG4uRElWX0JZX1pFUk8pOjEvTWF0aC5zaW5oKHIpKX19cVllLmltcGxlbWVudGVkRnVuY3Rpb25zPXtBQ09TOnttZXRob2Q6ImFjb3MiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LEFTSU46e21ldGhvZDoiYXNpbiIscGFyYW1ldGVyczpb'@; put 'e2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sQ09TOnttZXRob2Q6ImNvcyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sU0lOOnttZXRob2Q6InNpbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sVEFOOnttZXRob2Q6InRhbiIscGFyYW1l'@; put 'dGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sQVRBTjp7bWV0aG9kOiJhdGFuIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSxBVEFOMjp7bWV0aG9kOiJhdGFuMiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6'@; put 'ZXQuTlVNQkVSfV19LENPVDp7bWV0aG9kOiJjb3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LFNFQzp7bWV0aG9kOiJzZWMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LENTQzp7bWV0aG9kOiJjc2MiLHBhcmFtZXRlcnM6W3thcmd1bWVu'@; put 'dFR5cGU6ZXQuTlVNQkVSfV19LFNJTkg6e21ldGhvZDoic2luaCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sQ09TSDp7bWV0aG9kOiJjb3NoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSxUQU5IOnttZXRob2Q6InRhbmgiLHBhcmFtZXRl'@; put 'cnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LENPVEg6e21ldGhvZDoiY290aCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sU0VDSDp7bWV0aG9kOiJzZWNoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSxDU0NIOnttZXRob2Q6ImNz'@; put 'Y2giLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LEFDT1Q6e21ldGhvZDoiYWNvdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sQVNJTkg6e21ldGhvZDoiYXNpbmgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LEFD'@; put 'T1NIOnttZXRob2Q6ImFjb3NoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSxBVEFOSDp7bWV0aG9kOiJhdGFuaCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sQUNPVEg6e21ldGhvZDoiYWNvdGgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5'@; put 'cGU6ZXQuTlVNQkVSfV19fTtjbGFzcyBvbm4gZXh0ZW5kcyBaV2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5kZXBlbmRlbmN5R3JhcGg9ZX1maW5kKGUsdCxyKXtyZXR1cm4gdGhpcy5iYXNpY0ZpbmQoZSx0LCJjb2wiLHIpfX1jbGFzcyBLWWUgZXh0ZW5kcyBCc3tjb25zdHJ1Y3Rv'@; put 'cigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yb3dTZWFyY2g9bmV3IG9ubih0aGlzLmRlcGVuZGVuY3lHcmFwaCl9dmxvb2t1cChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlZMT09LVVAiKSwocixpLG8sYSk9Pntjb25zdCBsPWkucmFu'@; put 'Z2U7cmV0dXJuIHZvaWQgMD09PWw/bmV3IFB0KHRuLlZBTFVFLGRyLldyb25nVHlwZSk6bzwxP25ldyBQdCh0bi5WQUxVRSxkci5MZXNzVGhhbk9uZSk6bz5sLndpZHRoKCk/bmV3IFB0KHRuLlJFRixkci5JbmRleExhcmdlKTp0aGlzLmRvVmxvb2t1cChybWUociksaSxvLTEsYSl9KX1obG9v'@; put 'a3VwKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSExPT0tVUCIpLChyLGksbyxhKT0+e2NvbnN0IGw9aS5yYW5nZTtyZXR1cm4gdm9pZCAwPT09bD9uZXcgUHQodG4uVkFMVUUsZHIuV3JvbmdUeXBlKTpvPDE/bmV3IFB0KHRuLlZBTFVFLGRy'@; put 'Lkxlc3NUaGFuT25lKTpvPmwuaGVpZ2h0KCk/bmV3IFB0KHRuLlJFRixkci5JbmRleExhcmdlKTp0aGlzLmRvSGxvb2t1cChybWUociksaSxvLTEsYSl9KX1tYXRjaChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIk1BVENIIiksKHIsaSxvKT0+'@; put 'dGhpcy5kb01hdGNoKHJtZShyKSxpLG8pKX1zZWFyY2hJblJhbmdlKGUsdCxyLGkpe3JldHVybiFyJiYic3RyaW5nIj09dHlwZW9mIGUmJnRoaXMuYXJpdGhtZXRpY0hlbHBlci5yZXF1aXJlc1JlZ2V4KGUpP2kuYWR2YW5jZWRGaW5kKHRoaXMuYXJpdGhtZXRpY0hlbHBlci5lcU1hdGNoZXJG'@; put 'dW5jdGlvbihlKSx0KTppLmZpbmQoZSx0LHI/e29yZGVyaW5nOiJhc2MifTp7b3JkZXJpbmc6Im5vbmUiLG1hdGNoRXhhY3RseTohMH0pfWRvVmxvb2t1cChlLHQscixpKXt0aGlzLmRlcGVuZGVuY3lHcmFwaC5zdGF0cy5zdGFydChBcy5WTE9PS1VQKTtjb25zdCBvPXQucmFuZ2U7bGV0IGE7'@; put 'YT12b2lkIDA9PT1vP2xhLm9ubHlWYWx1ZXModC5kYXRhLm1hcChnPT5bZ1swXV0pKTpsYS5vbmx5UmFuZ2UoYmEuc3BhbkZyb20oby5zdGFydCwxLG8uaGVpZ2h0KCkpLHRoaXMuZGVwZW5kZW5jeUdyYXBoKTtjb25zdCBsPXRoaXMuc2VhcmNoSW5SYW5nZShlLGEsaSx0aGlzLmNvbHVtblNl'@; put 'YXJjaCk7aWYodGhpcy5kZXBlbmRlbmN5R3JhcGguc3RhdHMuZW5kKEFzLlZMT09LVVApLC0xPT09bClyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLlZhbHVlTm90Rm91bmQpO2xldCB1O2lmKHZvaWQgMD09PW8pdT10LmRhdGFbbF1bcl07ZWxzZXtjb25zdCBnPUJvKG8uc2hlZXQsby5zdGFydC5j'@; put 'b2wrcixvLnN0YXJ0LnJvdytsKTt1PXRoaXMuZGVwZW5kZW5jeUdyYXBoLmdldENlbGxWYWx1ZShnKX1yZXR1cm4gdSBpbnN0YW5jZW9mIGxhP25ldyBQdCh0bi5WQUxVRSxkci5Xcm9uZ1R5cGUpOnV9ZG9IbG9va3VwKGUsdCxyLGkpe2NvbnN0IG89dC5yYW5nZTtsZXQgYTthPXZvaWQgMD09'@; put 'PW8/bGEub25seVZhbHVlcyhbdC5kYXRhWzBdXSk6bGEub25seVJhbmdlKGJhLnNwYW5Gcm9tKG8uc3RhcnQsby53aWR0aCgpLDEpLHRoaXMuZGVwZW5kZW5jeUdyYXBoKTtjb25zdCBsPXRoaXMuc2VhcmNoSW5SYW5nZShlLGEsaSx0aGlzLnJvd1NlYXJjaCk7aWYoLTE9PT1sKXJldHVybiBu'@; put 'ZXcgUHQodG4uTkEsZHIuVmFsdWVOb3RGb3VuZCk7bGV0IHU7aWYodm9pZCAwPT09byl1PXQuZGF0YVtyXVtsXTtlbHNle2NvbnN0IGc9Qm8oby5zaGVldCxvLnN0YXJ0LmNvbCtsLG8uc3RhcnQucm93K3IpO3U9dGhpcy5kZXBlbmRlbmN5R3JhcGguZ2V0Q2VsbFZhbHVlKGcpfXJldHVybiB1'@; put 'IGluc3RhbmNlb2YgbGE/bmV3IFB0KHRuLlZBTFVFLGRyLldyb25nVHlwZSk6dX1kb01hdGNoKGUsdCxyKXtpZighWy0xLDAsMV0uaW5jbHVkZXMocikpcmV0dXJuIG5ldyBQdCh0bi5WQUxVRSxkci5CYWRNb2RlKTtpZih0LndpZHRoKCk+MSYmdC5oZWlnaHQoKT4xKXJldHVybiBuZXcgUHQo'@; put 'dG4uTkEpO2NvbnN0IGE9KDE9PT10LndpZHRoKCk/dGhpcy5jb2x1bW5TZWFyY2g6dGhpcy5yb3dTZWFyY2gpLmZpbmQoZSx0LDA9PT1yP3tvcmRlcmluZzoibm9uZSIsbWF0Y2hFeGFjdGx5OiEwfTp7b3JkZXJpbmc6LTE9PT1yPyJkZXNjIjoiYXNjIn0pO3JldHVybi0xPT09YT9uZXcgUHQo'@; put 'dG4uTkEsZHIuVmFsdWVOb3RGb3VuZCk6YSsxfX1LWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e1ZMT09LVVA6e21ldGhvZDoidmxvb2t1cCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJF'@; put 'Un0se2FyZ3VtZW50VHlwZTpldC5CT09MRUFOLGRlZmF1bHRWYWx1ZTohMH1dfSxITE9PS1VQOnttZXRob2Q6Imhsb29rdXAiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTk9FUlJPUn0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1'@; put 'bWVudFR5cGU6ZXQuQk9PTEVBTixkZWZhdWx0VmFsdWU6ITB9XX0sTUFUQ0g6e21ldGhvZDoibWF0Y2giLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTk9FUlJPUn0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjF9XX19'@; put 'O2NsYXNzIFhZZSBleHRlbmRzIEJze3JvbWFuKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUk9NQU4iKSwocixpKT0+KHI9TWF0aC50cnVuYyhyKSwhMT09PWk/aT00OiEwPT09aSYmKGk9MCksKGk9TG8odGhpcy5jb2VyY2VTY2FsYXJUb051'@; put 'bWJlck9yRXJyb3IoaSkpKWluc3RhbmNlb2YgUHQ/aTooaT1NYXRoLnRydW5jKGkpKTwwP25ldyBQdCh0bi5WQUxVRSxkci5WYWx1ZVNtYWxsKTppPjQ/bmV3IFB0KHRuLlZBTFVFLGRyLlZhbHVlTGFyZ2UpOmZ1bmN0aW9uIGFubihuLGUpe2NvbnN0IHQ9e3ZhbDpuJTFlMyxhY2M6Ik0iLnJl'@; put 'cGVhdChNYXRoLmZsb29yKG4vMWUzKSl9O3JldHVybiA0PT09ZSYmKHFoKHQsIklNIiw5OTksMWUzKSxxaCh0LCJJRCIsNDk5LDUwMCkpLGU+PTMmJihxaCh0LCJWTSIsOTk1LDFlMykscWgodCwiVkQiLDQ5NSw1MDApKSxlPj0yJiYocWgodCwiWE0iLDk5MCwxZTMpLHFoKHQsIlhEIiw0OTAs'@; put 'NTAwKSksZT49MSYmKHFoKHQsIkxNIiw5NTAsMWUzKSxxaCh0LCJMRCIsNDUwLDUwMCkpLHFoKHQsIkNNIiw5MDAsMWUzKSxxaCh0LCJDRCIsNDAwLDUwMCkscWgodCwiRCIsNTAwLDkwMCksdC5hY2MrPSJDIi5yZXBlYXQoTWF0aC5mbG9vcih0LnZhbC8xMDApKSx0LnZhbCU9MTAwLGU+PTIm'@; put 'JihxaCh0LCJJQyIsOTksMTAwKSxxaCh0LCJJTCIsNDksNTApKSxlPj0xJiYocWgodCwiVkMiLDk1LDEwMCkscWgodCwiVkwiLDQ1LDUwKSkscWgodCwiWEMiLDkwLDEwMCkscWgodCwiWEwiLDQwLDUwKSxxaCh0LCJMIiw1MCw5MCksdC5hY2MrPSJYIi5yZXBlYXQoTWF0aC5mbG9vcih0LnZh'@; put 'bC8xMCkpLHQudmFsJT0xMCxxaCh0LCJJWCIsOSwxMCkscWgodCwiSVYiLDQsNSkscWgodCwiViIsNSw5KSx0LmFjYys9IkkiLnJlcGVhdCh0LnZhbCksdC5hY2N9KHIsaSkpKX1hcmFiaWMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJBUkFC'@; put 'SUMiKSxyPT57bGV0IGk9ITE7aWYoKHI9ci50cmltKCkudG9VcHBlckNhc2UoKSkuc3RhcnRzV2l0aCgiLSIpJiYoaT0hMCwiIj09PShyPXIuc2xpY2UoMSkpKSlyZXR1cm4gbmV3IFB0KHRuLlZBTFVFLGRyLkludmFsaWRSb21hbik7Y29uc3Qgbz17aW5wdXQ6cixhY2M6MH07cmV0dXJuIFo2'@; put 'KG8se3Rva2VuOiJNTU0iLHZhbDozZTN9LHt0b2tlbjoiTU0iLHZhbDoyZTN9LHt0b2tlbjoiTSIsdmFsOjFlM30pLFo2KG8se3Rva2VuOiJJTSIsdmFsOjk5OX0se3Rva2VuOiJWTSIsdmFsOjk5NX0se3Rva2VuOiJYTSIsdmFsOjk5MH0se3Rva2VuOiJMTSIsdmFsOjk1MH0se3Rva2VuOiJD'@; put 'TSIsdmFsOjkwMH0pLFo2KG8se3Rva2VuOiJEIix2YWw6NTAwfSx7dG9rZW46IklEIix2YWw6NDk5fSx7dG9rZW46IlZEIix2YWw6NDk1fSx7dG9rZW46IlhEIix2YWw6NDkwfSx7dG9rZW46IkxEIix2YWw6NDUwfSx7dG9rZW46IkNEIix2YWw6NDAwfSksWjYobyx7dG9rZW46IkNDQyIsdmFs'@; put 'OjMwMH0se3Rva2VuOiJDQyIsdmFsOjIwMH0se3Rva2VuOiJDIix2YWw6MTAwfSksWjYobyx7dG9rZW46IklDIix2YWw6OTl9LHt0b2tlbjoiVkMiLHZhbDo5NX0se3Rva2VuOiJYQyIsdmFsOjkwfSksWjYobyx7dG9rZW46IkwiLHZhbDo1MH0se3Rva2VuOiJJTCIsdmFsOjQ5fSx7dG9rZW46'@; put 'IlZMIix2YWw6NDV9LHt0b2tlbjoiWEwiLHZhbDo0MH0pLFo2KG8se3Rva2VuOiJYWFgiLHZhbDozMH0se3Rva2VuOiJYWCIsdmFsOjIwfSx7dG9rZW46IlgiLHZhbDoxMH0pLFo2KG8se3Rva2VuOiJJWCIsdmFsOjl9KSxaNihvLHt0b2tlbjoiViIsdmFsOjV9LHt0b2tlbjoiSVYiLHZhbDo0'@; put 'fSksWjYobyx7dG9rZW46IklJSSIsdmFsOjN9LHt0b2tlbjoiSUkiLHZhbDoyfSx7dG9rZW46IkkiLHZhbDoxfSksIiIhPT1vLmlucHV0P25ldyBQdCh0bi5WQUxVRSxkci5JbnZhbGlkUm9tYW4pOmk/LW8uYWNjOm8uYWNjfSl9fWZ1bmN0aW9uIFo2KG4sLi4uZSl7Zm9yKGNvbnN0IHQgb2Yg'@; put 'ZSlpZihuLmlucHV0LnN0YXJ0c1dpdGgodC50b2tlbikpe24uaW5wdXQ9bi5pbnB1dC5zbGljZSh0LnRva2VuLmxlbmd0aCksbi5hY2MrPXQudmFsO2JyZWFrfX1mdW5jdGlvbiBxaChuLGUsdCxyKXtuLnZhbD49dCYmbi52YWw8ciYmKG4udmFsLT10LG4uYWNjKz1lKX1YWWUuaW1wbGVtZW50'@; put 'ZWRGdW5jdGlvbnM9e1JPTUFOOnttZXRob2Q6InJvbWFuIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxLGxlc3NUaGFuOjRlM30se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SLG9wdGlvbmFsQXJnOiEwLGRlZmF1bHRWYWx1ZTowfV19LEFSQUJJQzp7bWV0'@; put 'aG9kOiJhcmFiaWMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuU1RSSU5HfV19fTtjbGFzcyBRWWUgZXh0ZW5kcyBCc3thZGQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJIRi5BREQiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIuYWRk'@; put 'V2l0aEVwc2lsb24pfWNvbmNhdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkhGLkNPTkNBVCIpLHRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb25jYXQpfWRpdmlkZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMu'@; put 'bWV0YWRhdGEoIkhGLkRJVklERSIpLHRoaXMuYXJpdGhtZXRpY0hlbHBlci5kaXZpZGUpfWVxKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEYuRVEiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIuZXEpfWd0KGUsdCl7cmV0dXJuIHRoaXMucnVu'@; put 'RnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEYuR1QiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIuZ3QpfWd0ZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkhGLkdURSIpLHRoaXMuYXJpdGhtZXRpY0hlbHBlci5nZXEpfWx0KGUs'@; put 'dCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEYuTFQiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIubHQpfWx0ZShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkhGLkxURSIpLHRoaXMuYXJpdGhtZXRp'@; put 'Y0hlbHBlci5sZXEpfW1pbnVzKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEYuTUlOVVMiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIuc3VidHJhY3QpfW11bHRpcGx5KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhp'@; put 'cy5tZXRhZGF0YSgiSEYuTVVMVElQTFkiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIubXVsdGlwbHkpfW5lKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEYuTkUiKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIubmVxKX1wb3coZSx0KXtyZXR1cm4g'@; put 'dGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJIRi5QT1ciKSx0aGlzLmFyaXRobWV0aWNIZWxwZXIucG93KX11bWludXMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJIRi5VTUlOVVMiKSx0aGlzLmFyaXRobWV0aWNI'@; put 'ZWxwZXIudW5hcnlNaW51cyl9dXBlcmNlbnQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJIRi5VTkFSWV9QRVJDRU5UIiksdGhpcy5hcml0aG1ldGljSGVscGVyLnVuYXJ5UGVyY2VudCl9dXBsdXMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5j'@; put 'dGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJIRi5VUExVUyIpLHRoaXMuYXJpdGhtZXRpY0hlbHBlci51bmFyeVBsdXMpfX1RWWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9eyJIRi5BREQiOnttZXRob2Q6ImFkZCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIscGFzc1N1'@; put 'YnR5cGU6ITB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5DT05DQVQiOnttZXRob2Q6ImNvbmNhdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5TVFJJTkcscGFzc1N1YnR5cGU6ITB9LHthcmd1bWVudFR5cGU6ZXQuU1RSSU5HLHBhc3NTdWJ0'@; put 'eXBlOiEwfV19LCJIRi5ESVZJREUiOnttZXRob2Q6ImRpdmlkZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIscGFzc1N1YnR5cGU6ITB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5FUSI6e21ldGhvZDoiZXEiLHBhcmFtZXRlcnM6'@; put 'W3thcmd1bWVudFR5cGU6ZXQuTk9FUlJPUixwYXNzU3VidHlwZTohMH0se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5HVCI6e21ldGhvZDoiZ3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTk9FUlJPUixwYXNzU3VidHlwZTohMH0se2FyZ3Vt'@; put 'ZW50VHlwZTpldC5OT0VSUk9SLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5HVEUiOnttZXRob2Q6Imd0ZSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SLHBhc3NTdWJ0eXBlOiEwfSx7YXJndW1lbnRUeXBlOmV0Lk5PRVJST1IscGFzc1N1YnR5cGU6ITB9XX0sIkhGLkxUIjp7'@; put 'bWV0aG9kOiJsdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SLHBhc3NTdWJ0eXBlOiEwfSx7YXJndW1lbnRUeXBlOmV0Lk5PRVJST1IscGFzc1N1YnR5cGU6ITB9XX0sIkhGLkxURSI6e21ldGhvZDoibHRlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5PRVJS'@; put 'T1IscGFzc1N1YnR5cGU6ITB9LHthcmd1bWVudFR5cGU6ZXQuTk9FUlJPUixwYXNzU3VidHlwZTohMH1dfSwiSEYuTUlOVVMiOnttZXRob2Q6Im1pbnVzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixwYXNzU3VidHlwZTohMH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIs'@; put 'cGFzc1N1YnR5cGU6ITB9XX0sIkhGLk1VTFRJUExZIjp7bWV0aG9kOiJtdWx0aXBseSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIscGFzc1N1YnR5cGU6ITB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5ORSI6e21ldGhvZDoibmUi'@; put 'LHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTk9FUlJPUixwYXNzU3VidHlwZTohMH0se2FyZ3VtZW50VHlwZTpldC5OT0VSUk9SLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5QT1ciOnttZXRob2Q6InBvdyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIscGFzc1N1YnR5'@; put 'cGU6ITB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLHBhc3NTdWJ0eXBlOiEwfV19LCJIRi5VTUlOVVMiOnttZXRob2Q6InVtaW51cyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIscGFzc1N1YnR5cGU6ITB9XX0sIkhGLlVOQVJZX1BFUkNFTlQiOnttZXRob2Q6InVwZXJj'@; put 'ZW50IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixwYXNzU3VidHlwZTohMH1dfSwiSEYuVVBMVVMiOnttZXRob2Q6InVwbHVzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixwYXNzU3VidHlwZTohMH1dfX07dmFyICRzPU1hdGg7ZnVuY3Rpb24gVmQo'@; put 'bixlKXtmb3IodmFyIHQ9MCxyPTA7dDxuLmxlbmd0aDsrK3Qpcj1lKnIrblt0XTtyZXR1cm4gcn1mdW5jdGlvbiBKWWUobixlLHQscixpKXtpZigwPT09ZSlyZXR1cm4gdDtpZigxPT09ZSlyZXR1cm4gcjtmb3IodmFyIG89Mi9uLGE9cixsPTE7bDxlOysrbClhPXIqbCpvK2kqdCx0PXIscj1h'@; put 'O3JldHVybiBhfWZ1bmN0aW9uIGVaZShuLGUsdCxyLGkpe3JldHVybiBmdW5jdGlvbihhLGwpe2lmKHIpe2lmKDA9PT1hKXJldHVybiAxPT1yPy0xLzA6MS8wO2lmKGE8MClyZXR1cm4gTmFOfXJldHVybiAwPT09bD9uKGEpOjE9PT1sP2UoYSk6bDwwP05hTjpKWWUoYSxsfD0wLG4oYSksZShh'@; put 'KSxpKX19dmFyIE1tZT1mdW5jdGlvbigpe3ZhciBuPS42MzY2MTk3NzIsZT1bNTc1Njg0OTA1NzQsLTEzMzYyNTkwMzU0LDY1MTYxOTY0MC43LC0xMTIxNDQyNC4xOCw3NzM5Mi4zMzAxNywtMTg0LjkwNTI0NTZdLnJldmVyc2UoKSx0PVs1NzU2ODQ5MDQxMSwxMDI5NTMyOTg1LDk0OTQ2ODAu'@; put 'NzE4LDU5MjcyLjY0ODUzLDI2Ny44NTMyNzEyLDFdLnJldmVyc2UoKSxyPVsxLC0uMDAxMDk4NjI4NjI3LDI3MzQ1MTA0MDdlLTE0LC0yMDczMzcwNjM5ZS0xNSwyLjA5Mzg4NzIxMWUtN10ucmV2ZXJzZSgpLGk9Wy0uMDE1NjI0OTk5OTUsLjAwMDE0MzA0ODg3NjUsLTY5MTExNDc2NTFlLTE1'@; put 'LDcuNjIxMDk1MTYxZS03LC05LjM0OTM1MTUyZS04XS5yZXZlcnNlKCk7ZnVuY3Rpb24gbyhPKXt2YXIgWj0wLGVlPTAsdmU9MCxNZT1PKk87aWYoTzw4KVo9KGVlPVZkKGUsTWUpKS8odmU9VmQodCxNZSkpO2Vsc2V7dmFyIEhlPU8tLjc4NTM5ODE2NDtlZT1WZChyLE1lPTY0L01lKSx2ZT1W'@; put 'ZChpLE1lKSxaPSRzLnNxcnQobi9PKSooJHMuY29zKEhlKSplZS0kcy5zaW4oSGUpKnZlKjgvTyl9cmV0dXJuIFp9dmFyIGE9WzcyMzYyNjE0MjMyLC03ODk1MDU5MjM1LDI0MjM5Njg1My4xLC0yOTcyNjExLjQzOSwxNTcwNC40ODI2LC0zMC4xNjAzNjYwNl0ucmV2ZXJzZSgpLGw9WzE0NDcy'@; put 'NTIyODQ0MiwyMzAwNTM1MTc4LDE4NTgzMzA0Ljc0LDk5NDQ3LjQzMzk0LDM3Ni45OTkxMzk3LDFdLnJldmVyc2UoKSx1PVsxLC4wMDE4MzEwNSwtMzUxNjM5NjQ5NmUtMTQsMjQ1NzUyMDE3NGUtMTUsLTIuNDAzMzcwMTllLTddLnJldmVyc2UoKSxnPVsuMDQ2ODc0OTk5OTUsLS4wMDAyMDAy'@; put 'NjkwODczLDg0NDkxOTkwOTZlLTE1LC04LjgyMjg5ODdlLTcsMS4wNTc4NzQxMmUtN10ucmV2ZXJzZSgpO2Z1bmN0aW9uIEUoTyl7dmFyIFo9MCxlZT0wLHZlPTAsTWU9TypPLEhlPSRzLmFicyhPKS0yLjM1NjE5NDQ5MTtyZXR1cm4gTWF0aC5hYnMoTyk8OD9aPShlZT1PKlZkKGEsTWUpKS8o'@; put 'dmU9VmQobCxNZSkpOihlZT1WZCh1LE1lPTY0L01lKSx2ZT1WZChnLE1lKSxaPSRzLnNxcnQobi8kcy5hYnMoTykpKigkcy5jb3MoSGUpKmVlLSRzLnNpbihIZSkqdmUqOC8kcy5hYnMoTykpLE88MCYmKFo9LVopKSxafXJldHVybiBmdW5jdGlvbiBPKFosZWUpe2lmKGVlPU1hdGgucm91bmQo'@; put 'ZWUpLCFpc0Zpbml0ZShaKSlyZXR1cm4gaXNOYU4oWik/WjowO2lmKGVlPDApcmV0dXJuKGVlJTI/LTE6MSkqTyhaLC1lZSk7aWYoWjwwKXJldHVybihlZSUyPy0xOjEpKk8oLVosZWUpO2lmKDA9PT1lZSlyZXR1cm4gbyhaKTtpZigxPT09ZWUpcmV0dXJuIEUoWik7aWYoMD09PVopcmV0dXJu'@; put 'IDA7dmFyIHZlPTA7aWYoWj5lZSl2ZT1KWWUoWixlZSxvKFopLEUoWiksLTEpO2Vsc2V7Zm9yKHZhciBIZT0hMSxXZT0wLGF0PTAsQ3Q9MSxBdD0wLEt0PTIvWixxdD0yKiRzLmZsb29yKChlZSskcy5mbG9vcigkcy5zcXJ0KDQwKmVlKSkpLzIpO3F0PjA7cXQtLSlBdD1xdCpLdCpDdC1XZSxX'@; put 'ZT1DdCwkcy5hYnMoQ3Q9QXQpPjFlMTAmJihDdCo9MWUtMTAsV2UqPTFlLTEwLHZlKj0xZS0xMCxhdCo9MWUtMTApLEhlJiYoYXQrPUN0KSxIZT0hSGUscXQ9PWVlJiYodmU9V2UpO3ZlLz1hdD0yKmF0LUN0fXJldHVybiB2ZX19KCksc25uPWZ1bmN0aW9uKCl7dmFyIG49LjYzNjYxOTc3Mixl'@; put 'PVstMjk1NzgyMTM4OSw3MDYyODM0MDY1LC01MTIzNTk4MDMuNiwxMDg3OTg4MS4yOSwtODYzMjcuOTI3NTcsMjI4LjQ2MjI3MzNdLnJldmVyc2UoKSx0PVs0MDA3NjU0NDI2OSw3NDUyNDk5NjQuOCw3MTg5NDY2LjQzOCw0NzQ0Ny4yNjQ3LDIyNi4xMDMwMjQ0LDFdLnJldmVyc2UoKSxyPVsx'@; put 'LC0uMDAxMDk4NjI4NjI3LDI3MzQ1MTA0MDdlLTE0LC0yMDczMzcwNjM5ZS0xNSwyLjA5Mzg4NzIxMWUtN10ucmV2ZXJzZSgpLGk9Wy0uMDE1NjI0OTk5OTUsLjAwMDE0MzA0ODg3NjUsLTY5MTExNDc2NTFlLTE1LDcuNjIxMDk1MTYxZS03LC05LjM0OTQ1MTUyZS04XS5yZXZlcnNlKCksYT1b'@; put 'LTQ5MDA2MDQ5NDNlMywxMjc1Mjc0MzllNCwtNTE1MzQzODEzOTAsNzM0OTI2NDU1LjEsLTQyMzc5MjIuNzI2LDg1MTEuOTM3OTM1XS5yZXZlcnNlKCksbD1bMjQ5OTU4MDU3ZTUsNDI0NDQxOTY2NDAwLDM3MzM2NTAzNjcsMjI0NTkwNDAuMDIsMTAyMDQyLjYwNSwzNTQuOTYzMjg4NSwxXS5y'@; put 'ZXZlcnNlKCksdT1bMSwuMDAxODMxMDUsLTM1MTYzOTY0OTZlLTE0LDI0NTc1MjAxNzRlLTE1LC0yLjQwMzM3MDE5ZS03XS5yZXZlcnNlKCksZz1bLjA0Njg3NDk5OTk1LC0uMDAwMjAwMjY5MDg3Myw4NDQ5MTk5MDk2ZS0xNSwtOC44MjI4OTg3ZS03LDEuMDU3ODc0MTJlLTddLnJldmVyc2Uo'@; put 'KTtyZXR1cm4gZVplKGZ1bmN0aW9uIG8oTyl7dmFyIFo9MCxlZT0wLHZlPTAsTWU9TypPLEhlPU8tLjc4NTM5ODE2NDtyZXR1cm4gTzw4P1o9KGVlPVZkKGUsTWUpKS8odmU9VmQodCxNZSkpK24qTW1lKE8sMCkqJHMubG9nKE8pOihlZT1WZChyLE1lPTY0L01lKSx2ZT1WZChpLE1lKSxaPSRz'@; put 'LnNxcnQobi9PKSooJHMuc2luKEhlKSplZSskcy5jb3MoSGUpKnZlKjgvTykpLFp9LGZ1bmN0aW9uIEUoTyl7dmFyIFo9MCxlZT0wLHZlPTAsTWU9TypPLEhlPU8tMi4zNTYxOTQ0OTE7cmV0dXJuIE88OD9aPShlZT1PKlZkKGEsTWUpKS8odmU9VmQobCxNZSkpK24qKE1tZShPLDEpKiRzLmxv'@; put 'ZyhPKS0xL08pOihlZT1WZCh1LE1lPTY0L01lKSx2ZT1WZChnLE1lKSxaPSRzLnNxcnQobi9PKSooJHMuc2luKEhlKSplZSskcy5jb3MoSGUpKnZlKjgvTykpLFp9LDAsMSwtMSl9KCksVG1lPWZ1bmN0aW9uKCl7dmFyIG49WzEsMy41MTU2MjI5LDMuMDg5OTQyNCwxLjIwNjc0OTIsLjI2NTk3'@; put 'MzIsLjAzNjA3NjgsLjAwNDU4MTNdLnJldmVyc2UoKSxlPVsuMzk4OTQyMjgsLjAxMzI4NTkyLC4wMDIyNTMxOSwtLjAwMTU3NTY1LC4wMDkxNjI4MSwtLjAyMDU3NzA2LC4wMjYzNTUzNywtLjAxNjQ3NjMzLC4wMDM5MjM3N10ucmV2ZXJzZSgpLHI9Wy41LC44Nzg5MDU5NCwuNTE0OTg4Njks'@; put 'LjE1MDg0OTM0LC4wMjY1ODczMywuMDAzMDE1MzIsMzI0MTFlLThdLnJldmVyc2UoKSxpPVsuMzk4OTQyMjgsLS4wMzk4ODAyNCwtLjAwMzYyMDE4LC4wMDE2MzgwMSwtLjAxMDMxNTU1LC4wMjI4Mjk2NywtLjAyODk1MzEyLC4wMTc4NzY1NCwtLjAwNDIwMDU5XS5yZXZlcnNlKCk7cmV0dXJu'@; put 'IGZ1bmN0aW9uIGEobCx1KXtpZigwPT09KHU9TWF0aC5yb3VuZCh1KSkpcmV0dXJuIGZ1bmN0aW9uIHQoYSl7cmV0dXJuIGE8PTMuNzU/VmQobixhKmEvMTQuMDYyNSk6JHMuZXhwKCRzLmFicyhhKSkvJHMuc3FydCgkcy5hYnMoYSkpKlZkKGUsMy43NS8kcy5hYnMoYSkpfShsKTtpZigxPT09'@; put 'dSlyZXR1cm4gZnVuY3Rpb24gbyhhKXtyZXR1cm4gYTwzLjc1P2EqVmQocixhKmEvMTQuMDYyNSk6KGE8MD8tMToxKSokcy5leHAoJHMuYWJzKGEpKS8kcy5zcXJ0KCRzLmFicyhhKSkqVmQoaSwzLjc1LyRzLmFicyhhKSl9KGwpO2lmKHU8MClyZXR1cm4gTmFOO2lmKDA9PT0kcy5hYnMobCkp'@; put 'cmV0dXJuIDA7aWYobD09MS8wKXJldHVybiAxLzA7dmFyIEUsZz0wLE89Mi8kcy5hYnMobCksWj0wLGVlPTEsdmU9MDtmb3IoRT0yKiRzLnJvdW5kKCh1KyRzLnJvdW5kKCRzLnNxcnQoNDAqdSkpKS8yKTtFPjA7RS0tKXZlPUUqTyplZStaLFo9ZWUsJHMuYWJzKGVlPXZlKT4xZTEwJiYoZWUq'@; put 'PTFlLTEwLFoqPTFlLTEwLGcqPTFlLTEwKSxFPT11JiYoZz1aKTtyZXR1cm4gZyo9YShsLDApL2VlLGw8MCYmdSUyPy1nOmd9fSgpLGxubj1mdW5jdGlvbigpe3ZhciBuPVstLjU3NzIxNTY2LC40MjI3ODQyLC4yMzA2OTc1NiwuMDM0ODg1OSwuMDAyNjI2OTgsMTA3NWUtNyw3NGUtN10ucmV2'@; put 'ZXJzZSgpLGU9WzEuMjUzMzE0MTQsLS4wNzgzMjM1OCwuMDIxODk1NjgsLS4wMTA2MjQ0NiwuMDA1ODc4NzIsLS4wMDI1MTU0LDUzMjA4ZS04XS5yZXZlcnNlKCkscj1bMSwuMTU0NDMxNDQsLS42NzI3ODU3OSwtLjE4MTU2ODk3LC0uMDE5MTk0MDIsLS4wMDExMDQwNCwtNDY4NmUtOF0ucmV2'@; put 'ZXJzZSgpLGk9WzEuMjUzMzE0MTQsLjIzNDk4NjE5LC0uMDM2NTU2MiwuMDE1MDQyNjgsLS4wMDc4MDM1MywuMDAzMjU2MTQsLTY4MjQ1ZS04XS5yZXZlcnNlKCk7cmV0dXJuIGVaZShmdW5jdGlvbiB0KGEpe3JldHVybiBhPD0yPy0kcy5sb2coYS8yKSpUbWUoYSwwKStWZChuLGEqYS80KTok'@; put 'cy5leHAoLWEpLyRzLnNxcnQoYSkqVmQoZSwyL2EpfSxmdW5jdGlvbiBvKGEpe3JldHVybiBhPD0yPyRzLmxvZyhhLzIpKlRtZShhLDEpKzEvYSpWZChyLGEqYS80KTokcy5leHAoLWEpLyRzLnNxcnQoYSkqVmQoaSwyL2EpfSwwLDIsMSl9KCk7ZnVuY3Rpb24gaEEobil7Y29uc3QgZT1bLTEu'@; put 'MzAyNjUzNzE5NzgxNzA5NCwuNjQxOTY5NzkyMzU2NDkwMiwuMDE5NDc2NDczMjA0MTg1ODM2LC0uMDA5NTYxNTE0Nzg2ODA4NjMsLS4wMDA5NDY1OTUzNDQ0ODIwMzYsLjAwMDM2NjgzOTQ5Nzg1Mjc2MSw0MjUyMzMyNDgwNjkwN2UtMTgsLTIwMjc4NTc4MTEyNTM0ZS0xOCwtMTYyNDI5MDAw'@; put 'NDY0N2UtMTgsMTMwMzY1NTgzNTU4ZS0xNywxLjU2MjY0NDE3MjJlLTgsLTguNTIzODA5NTkxNWUtOCw2LjUyOTA1NDQzOWUtOSw1LjA1OTM0MzQ5NWUtOSwtOS45MTM2NDE1NmUtMTAsLTIuMjczNjUxMjJlLTEwLDk2NDY3OTExZS0xOCwyMzk0MDM4ZS0xOCwtNjg4NjAyN2UtMTgsODk0NDg3'@; put 'ZS0xOCwzMTMwOTJlLTE4LC0xMTI3MDhlLTE4LDM4MWUtMTgsNzEwNmUtMTgsLTE1MjNlLTE4LC05NGUtMTgsMTIxZS0xOCwtMjhlLTE4XTtsZXQgYSxsLHUsZyx0PWUubGVuZ3RoLTEscj0hMSxpPTAsbz0wO2lmKDA9PT1uKXJldHVybiAwO2ZvcihuPDAmJihuPS1uLHI9ITApLGE9Mi8oMitu'@; put 'KSxsPTQqYS0yO3Q+MDt0LS0pdT1pLGk9bCppLW8rZVt0XSxvPXU7cmV0dXJuIGc9YSpNYXRoLmV4cCgtbipuKy41KihlWzBdK2wqaSktbykscj9nLTE6MS1nfWZ1bmN0aW9uIHRaZShuKXtyZXR1cm4gMS1oQShuKX1mdW5jdGlvbiBuWmUobil7bGV0IHQscixpLG8sZT0wO2lmKG4+PTIpcmV0'@; put 'dXJuLTEwMDtpZihuPD0wKXJldHVybiAxMDA7Zm9yKG89bjwxP246Mi1uLGk9TWF0aC5zcXJ0KC0yKk1hdGgubG9nKG8vMikpLHQ9LS43MDcxMSooKDIuMzA3NTMrLjI3MDYxKmkpLygxK2kqKC45OTIyOSsuMDQ0ODEqaSkpLWkpO2U8MjtlKyspcj10WmUodCktbyx0Kz1yLygxLjEyODM3OTE2'@; put 'NzA5NTUxMjYqTWF0aC5leHAoLXQqdCktdCpyKTtyZXR1cm4gbjwxP3Q6LXR9ZnVuY3Rpb24gbVAobil7Y29uc3QgZT1bLTEuNzE2MTg1MTM4ODY1NDk1LDI0Ljc2NTY1MDgwNTU3NTkyLC0zNzkuODA0MjU2NDcwOTQ1NjMsNjI5LjMzMTE1NTMxMjgxODQsODY2Ljk2NjIwMjc5MDQxMzMsLTMx'@; put 'NDUxLjI3Mjk2ODg0ODM2NywtMzYxNDQuNDEzNDE4NjkxMTc2LDY2NDU2LjE0MzgyMDI0MDU0XSx0PVstMzAuODQwMjMwMDExOTczOSwzMTUuMzUwNjI2OTc5NjA0MTYsLTEwMTUuMTU2MzY3NDkwMjE5MiwtMzEwNy43NzE2NzE1NzIzMTEsMjI1MzguMTE4NDIwOTgwMTUsNDc1NS44NDYyNzc1'@; put 'Mjc4ODEsLTEzNDY1OS45NTk4NjQ5NjkzLC0xMTUxMzIuMjU5Njc1NTUzNV07bGV0IHUsZyxFLE8scj0hMSxpPTAsbz0wLGE9MCxsPW47aWYobj4xNzEuNjI0Mzc2OTUzNjA3NilyZXR1cm4gMS8wO2lmKGw8PTApe2lmKE89bCUxLCFPKXJldHVybiAxLzA7cj0oMSZsPy0xOjEpKk1hdGguUEkv'@; put 'TWF0aC5zaW4oTWF0aC5QSSpPKSxsPTEtbH1mb3IoRT1sLGc9bDwxP2wrKzoobC09aT0oMHxsKS0xKS0xLHU9MDt1PDg7Kyt1KWE9KGErZVt1XSkqZyxvPW8qZyt0W3VdO2lmKE89YS9vKzEsRTxsKU8vPUU7ZWxzZSBpZihFPmwpZm9yKHU9MDt1PGk7Kyt1KU8qPWwsbCsrO3JldHVybiByJiYo'@; put 'Tz1yL08pLE99Y29uc3QgeG1lX2ludj1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIGlaZShuLGUpKnR9O2Z1bmN0aW9uIEkwKG4pe2xldCBlPTA7Y29uc3QgdD1bNzYuMTgwMDkxNzI5NDcxNDYsLTg2LjUwNTMyMDMyOTQxNjc4LDI0LjAxNDA5ODI0MDgzMDkxLC0xLjIzMTczOTU3MjQ1MDE1NSwu'@; put 'MDAxMjA4NjUwOTczODY2MTc5LC01Mzk1MjM5Mzg0OTUzZS0xOF07bGV0IGksbyxhLHI9MS4wMDAwMDAwMDAxOTAwMTU7Zm9yKGE9KG89aT1uKSs1LjUsYS09KGkrLjUpKk1hdGgubG9nKGEpO2U8NjtlKyspcis9dFtlXS8rK287cmV0dXJuIE1hdGgubG9nKDIuNTA2NjI4Mjc0NjMxMDAwNypy'@; put 'L2kpLWF9ZnVuY3Rpb24gQW1lKG4sZSl7Y29uc3QgdD1JMChuKTtsZXQgcj1uLGk9MS9uLG89aSxhPWUrMS1uLGw9MS8xZS0zMCx1PTEvYSxnPXUsRT0xO2NvbnN0IE89LX4oOC41Kk1hdGgubG9nKG4+PTE/bjoxL24pKy40Km4rMTcpO2xldCBaO2lmKGU8MHx8bjw9MClyZXR1cm4gTmFOO2lm'@; put 'KGU8bisxKXtmb3IoO0U8PU87RSsrKWkrPW8qPWUvKytyO3JldHVybiBpKk1hdGguZXhwKC1lK24qTWF0aC5sb2coZSktdCl9Zm9yKDtFPD1PO0UrKylaPS1FKihFLW4pLGErPTIsdT1aKnUrYSxsPWErWi9sLHU9MS91LGcqPXUqbDtyZXR1cm4gMS1nKk1hdGguZXhwKC1lK24qTWF0aC5sb2co'@; put 'ZSktdCl9ZnVuY3Rpb24gaVplKG4sZSl7bGV0IHQ9MDtjb25zdCByPWUtMSxvPUkwKGUpO2xldCBhLGwsdSxnLEUsTyxaO2lmKG4+PTEpcmV0dXJuIE1hdGgubWF4KDEwMCxlKzEwMCpNYXRoLnNxcnQoZSkpO2lmKG48PTApcmV0dXJuIDA7Zm9yKGU+MT8oTz1NYXRoLmxvZyhyKSxaPU1hdGgu'@; put 'ZXhwKHIqKE8tMSktbyksRT1uPC41P246MS1uLHU9TWF0aC5zcXJ0KC0yKk1hdGgubG9nKEUpKSxhPSgyLjMwNzUzKy4yNzA2MSp1KS8oMSt1KiguOTkyMjkrLjA0NDgxKnUpKS11LG48LjUmJihhPS1hKSxhPU1hdGgubWF4KC4wMDEsZSpNYXRoLnBvdygxLTEvKDkqZSktYS8oMypNYXRoLnNx'@; put 'cnQoZSkpLDMpKSk6KHU9MS1lKiguMjUzKy4xMiplKSxhPW48dT9NYXRoLnBvdyhuL3UsMS9lKToxLU1hdGgubG9nKDEtKG4tdSkvKDEtdSkpKTt0PDEyO3QrKyl7aWYoYTw9MClyZXR1cm4gMDtpZihsPUFtZShlLGEpLW4sdT1lPjE/WipNYXRoLmV4cCgtKGEtcikrciooTWF0aC5sb2coYSkt'@; put 'TykpOk1hdGguZXhwKC1hK3IqTWF0aC5sb2coYSktbyksZz1sL3UsYS09dT1nLygxLS41Kk1hdGgubWluKDEsZyooKGUtMSkvYS0xKSkpLGE8PTAmJihhPS41KihhK3UpKSxNYXRoLmFicyh1KTwxZS04KmEpYnJlYWt9cmV0dXJuIGF9Y29uc3QgWDRfcGRmPWZ1bmN0aW9uKGUsdCxyKXtyZXR1'@; put 'cm4gTWF0aC5leHAoLS41Kk1hdGgubG9nKDIqTWF0aC5QSSktTWF0aC5sb2cociktTWF0aC5wb3coZS10LDIpLygyKnIqcikpfSxYNF9jZGY9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi41KigxK2hBKChlLXQpL01hdGguc3FydCgyKnIqcikpKX0sWDRfaW52PWZ1bmN0aW9uKG4sZSx0KXtyZXR1'@; put 'cm4tMS40MTQyMTM1NjIzNzMwOTUxKnQqblplKDIqbikrZX07ZnVuY3Rpb24gUm1lKG4sZSl7aWYoIShuPD0wfHxlPD0wKSlyZXR1cm4gbitlPjE3MD9NYXRoLmV4cChvWmUobixlKSk6bVAobikqbVAoZSkvbVAobitlKX1mdW5jdGlvbiBvWmUobixlKXtyZXR1cm4gSTAobikrSTAoZSktSTAo'@; put 'bitlKX1mdW5jdGlvbiBJbWUobixlLHQpe3ZhciBsLHUsRSxPLGVlLHZlLE1lLEhlLFdlLGk9ZS0xLG89dC0xLGE9MDtpZihuPD0wKXJldHVybiAwO2lmKG4+PTEpcmV0dXJuIDE7Zm9yKGU+PTEmJnQ+PTE/KGVlPSgyLjMwNzUzKy4yNzA2MSooRT1NYXRoLnNxcnQoLTIqTWF0aC5sb2cobjwu'@; put 'NT9uOjEtbikpKSkvKDErRSooLjk5MjI5Ky4wNDQ4MSpFKSktRSxuPC41JiYoZWU9LWVlKSx2ZT0oZWUqZWUtMykvNixNZT0yLygxLygyKmUtMSkrMS8oMip0LTEpKSxIZT1lZSpNYXRoLnNxcnQodmUrTWUpL01lLSgxLygyKnQtMSktMS8oMiplLTEpKSoodmUrNS82LTIvKDMqTWUpKSxlZT1l'@; put 'LyhlK3QqTWF0aC5leHAoMipIZSkpKToobD1NYXRoLmxvZyhlLyhlK3QpKSx1PU1hdGgubG9nKHQvKGUrdCkpLGVlPW48KEU9TWF0aC5leHAoZSpsKS9lKS8oSGU9RSsoTz1NYXRoLmV4cCh0KnUpL3QpKT9NYXRoLnBvdyhlKkhlKm4sMS9lKToxLU1hdGgucG93KHQqSGUqKDEtbiksMS90KSks'@; put 'V2U9LUkwKGUpLUkwKHQpK0kwKGUrdCk7YTwxMDthKyspe2lmKDA9PT1lZXx8MT09PWVlKXJldHVybiBlZTtpZigoZWUtPUU9KE89KGlLKGVlLGUsdCktbikvKEU9TWF0aC5leHAoaSpNYXRoLmxvZyhlZSkrbypNYXRoLmxvZygxLWVlKStXZSkpKS8oMS0uNSpNYXRoLm1pbigxLE8qKGkvZWUt'@; put 'by8oMS1lZSkpKSkpPD0wJiYoZWU9LjUqKGVlK0UpKSxlZT49MSYmKGVlPS41KihlZStFKzEpKSxNYXRoLmFicyhFKTwxZS04KmVlJiZhPjApYnJlYWt9cmV0dXJuIGVlfWZ1bmN0aW9uIGlLKG4sZSx0KXt2YXIgcj0wPT09bnx8MT09PW4/MDpNYXRoLmV4cChJMChlK3QpLUkwKGUpLUkwKHQp'@; put 'K2UqTWF0aC5sb2cobikrdCpNYXRoLmxvZygxLW4pKTtyZXR1cm4hKG48MHx8bj4xKSYmKG48KGUrMSkvKGUrdCsyKT9yKmFaZShuLGUsdCkvZToxLXIqYVplKDEtbix0LGUpL3QpfWZ1bmN0aW9uIGFaZShuLGUsdCl7dmFyIEUsTyxaLGVlLHI9MWUtMzAsaT0xLG89ZSt0LGE9ZSsxLGw9ZS0x'@; put 'LHU9MSxnPTEtbypuL2E7Zm9yKE1hdGguYWJzKGcpPHImJihnPXIpLGVlPWc9MS9nO2k8PTEwMCYmKGc9MSsoTz1pKih0LWkpKm4vKChsKyhFPTIqaSkpKihlK0UpKSkqZyxNYXRoLmFicyhnKTxyJiYoZz1yKSx1PTErTy91LE1hdGguYWJzKHUpPHImJih1PXIpLGVlKj0oZz0xL2cpKnUsZz0x'@; put 'KyhPPS0oZStpKSoobytpKSpuLygoZStFKSooYStFKSkpKmcsTWF0aC5hYnMoZyk8ciYmKGc9ciksdT0xK08vdSxNYXRoLmFicyh1KTxyJiYodT1yKSxlZSo9Wj0oZz0xL2cpKnUsIShNYXRoLmFicyhaLTEpPDNlLTcpKTtpKyspO3JldHVybiBlZX1jb25zdCBvS19wZGY9ZnVuY3Rpb24obixl'@; put 'LHQpe3JldHVybiAwPT09dHx8MT09PXQ/ZSp0PT09bj8xOjA6bFplKGUsbikqTWF0aC5wb3codCxuKSpNYXRoLnBvdygxLXQsZS1uKX0sb0tfY2RmPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcixpPTFlLTEwO2lmKG48MClyZXR1cm4gMDtpZihuPj1lKXJldHVybiAxO2lmKHQ8MHx8dD4xfHxlPD0w'@; put 'KXJldHVybiBOYU47dmFyIG89dCxhPShuPU1hdGguZmxvb3IobikpKzEsbD1lLW4sdT1hK2wsZz1NYXRoLmV4cChJMCh1KS1JMChsKS1JMChhKSthKk1hdGgubG9nKG8pK2wqTWF0aC5sb2coMS1vKSk7cmV0dXJuIHI9bzwoYSsxKS8odSsyKT9nKnNaZShvLGEsbCxpKToxLWcqc1plKDEtbyxs'@; put 'LGEsaSksTWF0aC5yb3VuZCgxL2kqKDEtcikpLygxL2kpfTtmdW5jdGlvbiBzWmUobixlLHQscil7Zm9yKHZhciBFLGk9MCxvPTEsYT0xLGw9MSx1PTAsZz0wO01hdGguYWJzKChhLWcpL2EpPnI7KWc9YSxvPWwrKEU9LShlK3UpKihlK3QrdSkqbi8oZSsyKnUpLyhlKzIqdSsxKSkqbyxhPShp'@; put 'PWErRSppKSsoRT0odSs9MSkqKHQtdSkqbi8oZSsyKnUtMSkvKGUrMip1KSkqYSxpLz1sPW8rRSpsLG8vPWwsYS89bCxsPTE7cmV0dXJuIGEvZX1mdW5jdGlvbiBsWmUobixlKXtyZXR1cm4gbj4xNzB8fGU+MTcwP01hdGguZXhwKGZ1bmN0aW9uIGNubihuLGUpe3JldHVybiBEbWUobiktRG1l'@; put 'KGUpLURtZShuLWUpfShuLGUpKTphSyhuKS9hSyhlKS9hSyhuLWUpfWZ1bmN0aW9uIERtZShuKXtyZXR1cm4gbjwwP05hTjpJMChuKzEpfWZ1bmN0aW9uIGFLKG4pe3JldHVybiBuPDA/TmFOOm1QKG4rMSl9Y29uc3QgZkFfY2RmPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8MD8wOkFtZSh0LzIs'@; put 'ZS8yKX0sZkFfaW52PWZ1bmN0aW9uKG4sZSl7cmV0dXJuIDIqaVplKG4sLjUqZSl9LHBBX2NkZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU8MD8wOmlLKHQqZS8odCplK3IpLHQvMixyLzIpfSxwQV9pbnY9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiByLyh0KigxL0ltZShlLHQvMixyLzIpLTEp'@; put 'KX0sTG1lPXtwZGY6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdDwwfHxlJTEhPTB8fGU8MD8wOk1hdGgucG93KHQsZSkqTWF0aC5leHAoLXQpL2FLKGUpfSxjZGY6ZnVuY3Rpb24oZSx0KXt2YXIgcj0wO2lmKGU8MClyZXR1cm4gMDtmb3IodmFyIGk9MDtyPD1lO3IrKylpKz1MbWUucGRmKHIsdCk7'@; put 'cmV0dXJuIGl9fSxoOT17cGRmOmZ1bmN0aW9uKGUsdCxyLGkpe2lmKGU8MHx8ZTxyLSh0LWkpKXJldHVybiAwO2lmKGU+aXx8ZT5yKXJldHVybiAwO2lmKDIqcj50KXJldHVybiAyKmk+dD9oOS5wZGYodC1yLWkrZSx0LHQtcix0LWkpOmg5LnBkZihpLWUsdCx0LXIsaSk7aWYoMippPnQpcmV0'@; put 'dXJuIGg5LnBkZihyLWUsdCxyLHQtaSk7aWYocjxpKXJldHVybiBoOS5wZGYoZSx0LGkscik7Zm9yKHZhciBvPTEsYT0wLGw9MDtsPGU7bCsrKXtmb3IoO28+MSYmYTxpOylvKj0xLXIvKHQtYSksYSsrO28qPShpLWwpKihyLWwpLygobCsxKSoodC1yLWkrbCsxKSl9Zm9yKDthPGk7YSsrKW8q'@; put 'PTEtci8odC1hKTtyZXR1cm4gTWF0aC5taW4oMSxNYXRoLm1heCgwLG8pKX0sY2RmOmZ1bmN0aW9uIG4oZSx0LHIsaSl7aWYoZTwwfHxlPHItKHQtaSkpcmV0dXJuIDA7aWYoZT49aXx8ZT49cilyZXR1cm4gMTtpZigyKnI+dClyZXR1cm4gMippPnQ/bih0LXItaStlLHQsdC1yLHQtaSk6MS1o'@; put 'OS5jZGYoaS1lLTEsdCx0LXIsaSk7aWYoMippPnQpcmV0dXJuIDEtaDkuY2RmKHItZS0xLHQscix0LWkpO2lmKHI8aSlyZXR1cm4gaDkuY2RmKGUsdCxpLHIpO2Zvcih2YXIgbz0xLGE9MSxsPTAsdT0wO3U8ZTt1Kyspe2Zvcig7bz4xJiZsPGk7KXt2YXIgZz0xLXIvKHQtbCk7YSo9ZyxvKj1n'@; put 'LGwrK31vKz1hKj0oaS11KSooci11KS8oKHUrMSkqKHQtci1pK3UrMSkpfWZvcig7bDxpO2wrKylvKj0xLXIvKHQtbCk7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxvKSl9fSxBbV9jZGY9ZnVuY3Rpb24oZSx0KXt2YXIgcj10LzI7cmV0dXJuIGlLKChlK01hdGguc3FydChlKmUrdCkp'@; put 'LygyKk1hdGguc3FydChlKmUrdCkpLHIscil9LEFtX2ludj1mdW5jdGlvbihuLGUpe3ZhciB0PUltZSgyKk1hdGgubWluKG4sMS1uKSwuNSplLC41KTtyZXR1cm4gdD1NYXRoLnNxcnQoZSooMS10KS90KSxuPi41P3Q6LXR9LE5tZT17cGRmOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT09PWU+'@; put 'Pj4wJiYoZTwwPzA6bFplKGUrdC0xLHQtMSkqTWF0aC5wb3coMS1yLGUpKk1hdGgucG93KHIsdCkpfSxjZGY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPTAsbz0wO2lmKGU8MClyZXR1cm4gMDtmb3IoO288PWU7bysrKWkrPU5tZS5wZGYobyx0LHIpO3JldHVybiBpfX07ZnVuY3Rpb24gdVplKG4p'@; put 'e2Zvcih2YXIgZT0wLHQ9bi5sZW5ndGg7LS10Pj0wOyllKz1uW3RdO3JldHVybiBlfWZ1bmN0aW9uIGttKG4pe3JldHVybiB1WmUobikvbi5sZW5ndGh9ZnVuY3Rpb24gVkMobil7Zm9yKHZhciBpLGU9a20obiksdD0wLHI9bi5sZW5ndGg7LS1yPj0wOyl0Kz0oaT1uW3JdLWUpKmk7cmV0dXJu'@; put 'IHR9ZnVuY3Rpb24gdlAobixlKXtyZXR1cm4gVkMobikvKG4ubGVuZ3RoLShlPzE6MCkpfWZ1bmN0aW9uIG55KG4sZSl7cmV0dXJuIE1hdGguc3FydCh2UChuLGUpKX1mdW5jdGlvbiBfUChuLGUpe3ZhciBhLHQ9a20obikscj1rbShlKSxpPW4ubGVuZ3RoLG89bmV3IEFycmF5KGkpO2Zvcihh'@; put 'PTA7YTxpO2ErKylvW2FdPShuW2FdLXQpKihlW2FdLXIpO3JldHVybiB1WmUobykvKGktMSl9ZnVuY3Rpb24gZFplKG4sZSl7cmV0dXJuIF9QKG4sZSkvbnkobiwxKS9ueShlLDEpfWNsYXNzIEZtZSBleHRlbmRzIEJze2VyZihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0'@; put 'LHRoaXMubWV0YWRhdGEoIkVSRiIpLChyLGkpPT52b2lkIDA9PT1pP2hBKHIpOmhBKGkpLWhBKHIpKX1lcmZjKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRVJGQyIpLHRaZSl9ZXhwb25kaXN0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rp'@; put 'b24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRVhQT04uRElTVCIpLChyLGksbyk9Pm8/KChuLGUpPT5uPDA/MDoxLU1hdGguZXhwKC1lKm4pKShyLGkpOigobixlKT0+bjwwPzA6ZSpNYXRoLmV4cCgtZSpuKSkocixpKSl9ZmlzaGVyKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5h'@; put 'cmdzLHQsdGhpcy5tZXRhZGF0YSgiRklTSEVSIikscj0+TWF0aC5sb2coKDErcikvKDEtcikpLzIpfWZpc2hlcmludihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkZJU0hFUklOViIpLHI9PjEtMi8oTWF0aC5leHAoMipyKSsxKSl9Z2FtbWEo'@; put 'ZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJHQU1NQSIpLG1QKX1nYW1tYWRpc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJHQU1NQS5ESVNUIiksKHIsaSxvLGEpPT5hP2Z1bmN0aW9uKGUs'@; put 'dCxyKXtyZXR1cm4gZTwwPzA6QW1lKHQsZS9yKX0ocixpLG8pOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZTwwPzA6MD09PWUmJjE9PT10PzEvcjpNYXRoLmV4cCgodC0xKSpNYXRoLmxvZyhlKS1lL3ItSTAodCktdCpNYXRoLmxvZyhyKSl9KHIsaSxvKSl9Z2FtbWFsbihlLHQpe3JldHVybiB0'@; put 'aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkdBTU1BTE4iKSxJMCl9Z2FtbWFpbnYoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJHQU1NQS5JTlYiKSx4bWVfaW52KX1nYXVzcyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1'@; put 'bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkdBVVNTIikscj0+WDRfY2RmKHIsMCwxKS0uNSl9YmV0YWRpc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCRVRBLkRJU1QiKSwocixpLG8sYSxsLHUpPT5yPD1sP25ldyBQdCh0bi5O'@; put 'VU0sZHIuVmFsdWVTbWFsbCk6cj49dT9uZXcgUHQodG4uTlVNLGRyLlZhbHVlTGFyZ2UpOihyPShyLWwpLyh1LWwpLGE/ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPjF8fGU8MD8rKGU+MSk6aUsoZSx0LHIpfShyLGksbyk6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPjF8fGU8MD8wOjE9PXQm'@; put 'JjE9PXI/MTp0PDUxMiYmcjw1MTI/TWF0aC5wb3coZSx0LTEpKk1hdGgucG93KDEtZSxyLTEpL1JtZSh0LHIpOk1hdGguZXhwKCh0LTEpKk1hdGgubG9nKGUpKyhyLTEpKk1hdGgubG9nKDEtZSktb1plKHQscikpfShyLGksbykpKX1iZXRhaW52KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rp'@; put 'b24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQkVUQS5JTlYiKSwocixpLG8sYSxsKT0+YT49bD9uZXcgUHQodG4uTlVNLGRyLldyb25nT3JkZXIpOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gSW1lKGUsdCxyKX0ocixpLG8pKihsLWEpK2EpfWJpbm9taWFsZGlzdChlLHQpe3JldHVybiB0aGlz'@; put 'LnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkJJTk9NLkRJU1QiKSwocixpLG8sYSk9PnI+aT9uZXcgUHQodG4uTlVNLGRyLldyb25nT3JkZXIpOihyPU1hdGgudHJ1bmMociksaT1NYXRoLnRydW5jKGkpLGE/b0tfY2RmKHIsaSxvKTpvS19wZGYocixpLG8pKSl9Ymlub21p'@; put 'YWxpbnYoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCSU5PTS5JTlYiKSwocixpLG8pPT57bGV0IGE9LTEsbD1yPU1hdGgudHJ1bmMocik7Zm9yKDtsPmErMTspe2NvbnN0IHU9TWF0aC50cnVuYygoYStsKS8yKTtvS19jZGYodSxyLGkpPj1v'@; put 'P2w9dTphPXV9cmV0dXJuIGx9KX1iZXNzZWxpZm4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCRVNTRUxJIiksKHIsaSk9PlRtZShyLE1hdGgudHJ1bmMoaSkpKX1iZXNzZWxqZm4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFy'@; put 'Z3MsdCx0aGlzLm1ldGFkYXRhKCJCRVNTRUxKIiksKHIsaSk9Pk1tZShyLE1hdGgudHJ1bmMoaSkpKX1iZXNzZWxrZm4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCRVNTRUxLIiksKHIsaSk9PmxubihyLE1hdGgudHJ1bmMoaSkpKX1iZXNz'@; put 'ZWx5Zm4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJCRVNTRUxZIiksKHIsaSk9PnNubihyLE1hdGgudHJ1bmMoaSkpKX1jaGlzcWRpc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDSElT'@; put 'US5ESVNUIiksKHIsaSxvKT0+KGk9TWF0aC50cnVuYyhpKSxvP2ZBX2NkZihyLGkpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8MD8wOjA9PT1lJiYyPT09dD8uNTpNYXRoLmV4cCgodC8yLTEpKk1hdGgubG9nKGUpLWUvMi10LzIqTWF0aC5sb2coMiktSTAodC8yKSl9KHIsaSkpKX1jaGlzcWRp'@; put 'c3RydChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNISVNRLkRJU1QuUlQiKSwocixpKT0+MS1mQV9jZGYocixNYXRoLnRydW5jKGkpKSl9Y2hpc3FpbnYoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFk'@; put 'YXRhKCJDSElTUS5JTlYiKSwocixpKT0+ZkFfaW52KHIsTWF0aC50cnVuYyhpKSkpfWNoaXNxaW52cnQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDSElTUS5JTlYuUlQiKSwocixpKT0+ZkFfaW52KDEtcixNYXRoLnRydW5jKGkpKSl9ZmRp'@; put 'c3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJGLkRJU1QiKSwocixpLG8sYSk9PihpPU1hdGgudHJ1bmMoaSksbz1NYXRoLnRydW5jKG8pLGE/cEFfY2RmKHIsaSxvKTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGU8MD8wOnQ8PTI/MD09PWUm'@; put 'JnQ8Mj8xLzA6MD09PWUmJjI9PT10PzE6MS9SbWUodC8yLHIvMikqTWF0aC5wb3codC9yLHQvMikqTWF0aC5wb3coZSx0LzItMSkqTWF0aC5wb3coMSt0L3IqZSwtKHQrcikvMik6dCooci8ocitlKnQpKS8yKm9LX3BkZigodC0yKS8yLCh0K3ItMikvMix0KmUvKHIrZSp0KSl9KHIsaSxvKSkp'@; put 'fWZkaXN0cnQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJGLkRJU1QuUlQiKSwocixpLG8pPT4xLXBBX2NkZihyLE1hdGgudHJ1bmMoaSksTWF0aC50cnVuYyhvKSkpfWZpbnYoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3Ms'@; put 'dCx0aGlzLm1ldGFkYXRhKCJGLklOViIpLChyLGksbyk9PnBBX2ludihyLE1hdGgudHJ1bmMoaSksTWF0aC50cnVuYyhvKSkpfWZpbnZydChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkYuSU5WLlJUIiksKHIsaSxvKT0+cEFfaW52KDEtcixN'@; put 'YXRoLnRydW5jKGkpLE1hdGgudHJ1bmMobykpKX13ZWlidWxsZGlzdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIldFSUJVTEwuRElTVCIpLChyLGksbyxhKT0+YT9mdW5jdGlvbihlLHQscil7cmV0dXJuIGU8MD8wOjEtTWF0aC5leHAoLU1h'@; put 'dGgucG93KGUvdCxyKSl9KHIsbyxpKTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGU8MHx8dDwwfHxyPDA/MDpyL3QqTWF0aC5wb3coZS90LHItMSkqTWF0aC5leHAoLU1hdGgucG93KGUvdCxyKSl9KHIsbyxpKSl9cG9pc3NvbmRpc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFy'@; put 'Z3MsdCx0aGlzLm1ldGFkYXRhKCJQT0lTU09OLkRJU1QiKSwocixpLG8pPT4ocj1NYXRoLnRydW5jKHIpLG8/TG1lLmNkZihyLGkpOkxtZS5wZGYocixpKSkpfWh5cGdlb21kaXN0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSFlQR0VPTS5E'@; put 'SVNUIiksKHIsaSxvLGEsbCk9PnI+aXx8cj5vfHxpPmF8fG8+YXx8cithPG8raT9uZXcgUHQodG4uTlVNLGRyLlZhbHVlTGFyZ2UpOihyPU1hdGgudHJ1bmMociksaT1NYXRoLnRydW5jKGkpLG89TWF0aC50cnVuYyhvKSxhPU1hdGgudHJ1bmMoYSksbD9oOS5jZGYocixhLG8saSk6aDkucGRm'@; put 'KHIsYSxvLGkpKSl9dGRpc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJULkRJU1QiKSwocixpLG8pPT4oaT1NYXRoLnRydW5jKGkpLG8/QW1fY2RmKHIsaSk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10PjFlMTAwPzFlMTAwOnQsMS8oTWF0'@; put 'aC5zcXJ0KHQpKlJtZSguNSx0LzIpKSpNYXRoLnBvdygxK2UqZS90LC0odCsxKS8yKX0ocixpKSkpfXRkaXN0MnQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJULkRJU1QuMlQiKSwocixpKT0+MiooMS1BbV9jZGYocixNYXRoLnRydW5jKGkp'@; put 'KSkpfXRkaXN0cnQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJULkRJU1QuUlQiKSwocixpKT0+MS1BbV9jZGYocixNYXRoLnRydW5jKGkpKSl9dGRpc3RvbGQoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1l'@; put 'dGFkYXRhKCJURElTVCIpLChyLGksbyk9Pm8qKDEtQW1fY2RmKHIsTWF0aC50cnVuYyhpKSkpKX10aW52KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiVC5JTlYiKSwocixpKT0+QW1faW52KHIsTWF0aC50cnVuYyhpKSkpfXRpbnYydChlLHQp'@; put 'e3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlQuSU5WLjJUIiksKHIsaSk9PkFtX2ludigxLXIvMixNYXRoLnRydW5jKGkpKSl9bG9nbm9ybWRpc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJMT0dO'@; put 'T1JNLkRJU1QiKSwocixpLG8sYSk9PmE/ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPDA/MDouNSsuNSpoQSgoTWF0aC5sb2coZSktdCkvTWF0aC5zcXJ0KDIqcipyKSl9KHIsaSxvKTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGU8PTA/MDpNYXRoLmV4cCgtTWF0aC5sb2coZSktLjUqTWF0aC5s'@; put 'b2coMipNYXRoLlBJKS1NYXRoLmxvZyhyKS1NYXRoLnBvdyhNYXRoLmxvZyhlKS10LDIpLygyKnIqcikpfShyLGksbykpfWxvZ25vcm1pbnYoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJMT0dOT1JNLklOViIpLChyLGksbyk9PmZ1bmN0aW9u'@; put 'KG4sZSx0KXtyZXR1cm4gTWF0aC5leHAoLTEuNDE0MjEzNTYyMzczMDk1MSp0Km5aZSgyKm4pK2UpfShyLGksbykpfW5vcm1kaXN0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTk9STS5ESVNUIiksKHIsaSxvLGEpPT5hP1g0X2NkZihyLGks'@; put 'byk6WDRfcGRmKHIsaSxvKSl9bm9ybWludihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIk5PUk0uSU5WIiksKHIsaSxvKT0+WDRfaW52KHIsaSxvKSl9bm9ybXNkaXN0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhp'@; put 'cy5tZXRhZGF0YSgiTk9STS5TLkRJU1QiKSwocixpKT0+aT9YNF9jZGYociwwLDEpOlg0X3BkZihyLDAsMSkpfW5vcm1zaW52KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTk9STS5TLklOViIpLHI9Plg0X2ludihyLDAsMSkpfXBoaShlLHQp'@; put 'e3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlBISSIpLHI9Plg0X3BkZihyLDAsMSkpfW5lZ2Jpbm9tZGlzdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIk5FR0JJTk9NLkRJU1QiKSwocixpLG8sYSk9'@; put 'PihyPU1hdGgudHJ1bmMociksaT1NYXRoLnRydW5jKGkpLGE/Tm1lLmNkZihyLGksbyk6Tm1lLnBkZihyLGksbykpKX1jb25maWRlbmNlbm9ybShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPTkZJREVOQ0UuTk9STSIpLChyLGksbyk9PmZ1'@; put 'bmN0aW9uIHVubigpe3ZhciB0LG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGU9bmV3IEFycmF5KDIpO3JldHVybiB0PTQ9PT1uLmxlbmd0aD9NYXRoLmFicyhYNF9pbnYoblsxXS8yLDAsMSkqblsyXS9NYXRoLnNxcnQoblszXSkpOk1hdGguYWJzKFg0X2ludihuWzFdLzIsMCwxKSpueShu'@; put 'WzJdKS9NYXRoLnNxcnQoblsyXS5sZW5ndGgpKSxlWzBdPW5bMF0tdCxlWzFdPW5bMF0rdCxlfSgxLHIsaSxNYXRoLnRydW5jKG8pKVsxXS0xKX1jb25maWRlbmNldChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPTkZJREVOQ0UuVCIpLChy'@; put 'LGksbyk9PjE9PT0obz1NYXRoLnRydW5jKG8pKT9uZXcgUHQodG4uRElWX0JZX1pFUk8pOmZ1bmN0aW9uIGRubigpe3ZhciB0LG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGU9bmV3IEFycmF5KDIpO3JldHVybiB0PTQ9PT1uLmxlbmd0aD9NYXRoLmFicyhBbV9pbnYoblsxXS8yLG5bM10t'@; put 'MSkqblsyXS9NYXRoLnNxcnQoblszXSkpOk1hdGguYWJzKEFtX2ludihuWzFdLzIsblsyXS5sZW5ndGgtMSkqbnkoblsyXSwhMCkvTWF0aC5zcXJ0KG5bMl0ubGVuZ3RoKSksZVswXT1uWzBdLXQsZVsxXT1uWzBdK3QsZX0oMSxyLGksbylbMV0tMSl9c3RhbmRhcmRpemUoZSx0KXtyZXR1cm4g'@; put 'dGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTVEFOREFSRElaRSIpLChyLGksbyk9PihyLWkpL28pfX1GbWUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0VSRjp7bWV0aG9kOiJlcmYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRU'@; put 'eXBlOmV0Lk5VTUJFUixvcHRpb25hbEFyZzohMH1dfSxFUkZDOnttZXRob2Q6ImVyZmMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LCJFWFBPTi5ESVNUIjp7bWV0aG9kOiJleHBvbmRpc3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZh'@; put 'bHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuQk9PTEVBTn1dfSxGSVNIRVI6e21ldGhvZDoiZmlzaGVyIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjotMSxsZXNzVGhhbjoxfV19LEZJ'@; put 'U0hFUklOVjp7bWV0aG9kOiJmaXNoZXJpbnYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LEdBTU1BOnttZXRob2Q6ImdhbW1hIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn1dfSwiR0FNTUEuRElTVCI6e21ldGhvZDoiZ2FtbWFkaXN0IixwYXJh'@; put 'bWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59XX0sR0FNTUFMTjp7bWV0aG9k'@; put 'OiJnYW1tYWxuIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfV19LCJHQU1NQS5JTlYiOnttZXRob2Q6ImdhbW1haW52IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowLGxlc3NUaGFuOjF9LHthcmd1bWVudFR5'@; put 'cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9XX0sR0FVU1M6e21ldGhvZDoiZ2F1c3MiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LCJCRVRBLkRJU1QiOnttZXRob2Q6ImJldGFkaXN0IixwYXJh'@; put 'bWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5CT09MRUFOfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZh'@; put 'dWx0VmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZGVmYXVsdFZhbHVlOjF9XX0sIkJFVEEuSU5WIjp7bWV0aG9kOiJiZXRhaW52IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowLG1heFZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVN'@; put 'QkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGRlZmF1bHRWYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixkZWZhdWx0VmFsdWU6MX1dfSwiQklOT00uRElTVCI6e21ldGhvZDoiYmlu'@; put 'b21pYWxkaXN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowLG1heFZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuQk9PTEVB'@; put 'Tn1dfSwiQklOT00uSU5WIjp7bWV0aG9kOiJiaW5vbWlhbGludiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MCxtYXhWYWx1ZToxfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVy'@; put 'VGhhbjowLGxlc3NUaGFuOjF9XX0sQkVTU0VMSTp7bWV0aG9kOiJiZXNzZWxpZm4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfV19LEJFU1NFTEo6e21ldGhvZDoiYmVzc2VsamZuIixwYXJhbWV0ZXJzOlt7'@; put 'YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH1dfSxCRVNTRUxLOnttZXRob2Q6ImJlc3NlbGtmbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0s'@; put 'QkVTU0VMWTp7bWV0aG9kOiJiZXNzZWx5Zm4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfV19LCJDSElTUS5ESVNUIjp7bWV0aG9kOiJjaGlzcWRpc3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQu'@; put 'TlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxLG1heFZhbHVlOjFlMTB9LHthcmd1bWVudFR5cGU6ZXQuQk9PTEVBTn1dfSwiQ0hJU1EuRElTVC5SVCI6e21ldGhvZDoiY2hpc3FkaXN0cnQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJn'@; put 'dW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxLG1heFZhbHVlOjFlMTB9XX0sIkNISVNRLklOViI6e21ldGhvZDoiY2hpc3FpbnYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjAsbWF4VmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWlu'@; put 'VmFsdWU6MSxtYXhWYWx1ZToxZTEwfV19LCJDSElTUS5JTlYuUlQiOnttZXRob2Q6ImNoaXNxaW52cnQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjAsbWF4VmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX1dfSwiRi5ESVNU'@; put 'Ijp7bWV0aG9kOiJmZGlzdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5CT09MRUFOfV19'@; put 'LCJGLkRJU1QuUlQiOnttZXRob2Q6ImZkaXN0cnQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9XX0sIkYuSU5WIjp7bWV0'@; put 'aG9kOiJmaW52IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowLG1heFZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9XX0sIkYuSU5WLlJUIjp7bWV0aG9kOiJm'@; put 'aW52cnQiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjAsbWF4VmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX1dfSwiV0VJQlVMTC5ESVNUIjp7bWV0aG9kOiJ3'@; put 'ZWlidWxsZGlzdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5CT09MRUFOfV19'@; put 'LCJQT0lTU09OLkRJU1QiOnttZXRob2Q6InBvaXNzb25kaXN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59XX0sIkhZUEdFT00uRElTVCI6'@; put 'e21ldGhvZDoiaHlwZ2VvbWRpc3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQu'@; put 'TlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuQk9PTEVBTn1dfSwiVC5ESVNUIjp7bWV0aG9kOiJ0ZGlzdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQu'@; put 'Qk9PTEVBTn1dfSwiVC5ESVNULjJUIjp7bWV0aG9kOiJ0ZGlzdDJ0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxfV19LCJULkRJU1QuUlQiOnttZXRob2Q6InRkaXN0cnQiLHBhcmFtZXRl'@; put 'cnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxfV19LFRESVNUOnttZXRob2Q6InRkaXN0b2xkIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixt'@; put 'aW5WYWx1ZToxfSx7YXJndW1lbnRUeXBlOmV0LklOVEVHRVIsbWluVmFsdWU6MSxtYXhWYWx1ZToyfV19LCJULklOViI6e21ldGhvZDoidGludiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MCxsZXNzVGhhbjoxfSx7YXJndW1lbnRUeXBlOmV0Lk5V'@; put 'TUJFUixtaW5WYWx1ZToxfV19LCJULklOVi4yVCI6e21ldGhvZDoidGludjJ0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowLG1heFZhbHVlOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLG1pblZhbHVlOjF9XX0sIkxPR05PUk0uRElTVCI6e21l'@; put 'dGhvZDoibG9nbm9ybWRpc3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59XX0sIkxP'@; put 'R05PUk0uSU5WIjp7bWV0aG9kOiJsb2dub3JtaW52IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowLGxlc3NUaGFuOjF9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfV19LCJOT1JN'@; put 'LkRJU1QiOnttZXRob2Q6Im5vcm1kaXN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9LHthcmd1bWVudFR5cGU6ZXQuQk9PTEVBTn1dfSwiTk9STS5JTlYi'@; put 'OnttZXRob2Q6Im5vcm1pbnYiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjAsbGVzc1RoYW46MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9XX0sIk5PUk0uUy5ESVNUIjp7bWV0'@; put 'aG9kOiJub3Jtc2Rpc3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59XX0sIk5PUk0uUy5JTlYiOnttZXRob2Q6Im5vcm1zaW52IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowLGxl'@; put 'c3NUaGFuOjF9XX0sUEhJOnttZXRob2Q6InBoaSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sIk5FR0JJTk9NLkRJU1QiOnttZXRob2Q6Im5lZ2Jpbm9tZGlzdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MH0se2FyZ3VtZW50'@; put 'VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MCxtYXhWYWx1ZToxfSx7YXJndW1lbnRUeXBlOmV0LkJPT0xFQU59XX0sIkNPTkZJREVOQ0UuTk9STSI6e21ldGhvZDoiY29uZmlkZW5jZW5vcm0iLHBhcmFtZXRlcnM6W3thcmd1bWVu'@; put 'dFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjAsbGVzc1RoYW46MX0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MX1dfSwiQ09ORklERU5DRS5UIjp7bWV0aG9kOiJjb25maWRlbmNldCIscGFyYW1ldGVy'@; put 'czpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsZ3JlYXRlclRoYW46MCxsZXNzVGhhbjoxfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixncmVhdGVyVGhhbjowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZToxfV19LFNUQU5EQVJESVpFOnttZXRob2Q6InN0YW5kYXJkaXplIixw'@; put 'YXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSLGdyZWF0ZXJUaGFuOjB9XX19LEZtZS5hbGlhc2VzPXtORUdCSU5PTURJU1Q6Ik5FR0JJTk9NLkRJU1QiLEVYUE9ORElTVDoiRVhQT04uRElT'@; put 'VCIsQkVUQURJU1Q6IkJFVEEuRElTVCIsTk9STURJU1Q6Ik5PUk0uRElTVCIsTk9STUlOVjoiTk9STS5JTlYiLE5PUk1TRElTVDoiTk9STS5TLkRJU1QiLE5PUk1TSU5WOiJOT1JNLlMuSU5WIixMT0dOT1JNRElTVDoiTE9HTk9STS5ESVNUIixMT0dJTlY6IkxPR05PUk0uSU5WIixUSU5WOiJU'@; put 'LklOVi4yVCIsSFlQR0VPTURJU1Q6IkhZUEdFT00uRElTVCIsUE9JU1NPTjoiUE9JU1NPTi5ESVNUIixXRUlCVUxMOiJXRUlCVUxMLkRJU1QiLEZJTlY6IkYuSU5WLlJUIixGRElTVDoiRi5ESVNULlJUIixDSElESVNUOiJDSElTUS5ESVNULlJUIixDSElJTlY6IkNISVNRLklOVi5SVCIsR0FN'@; put 'TUFESVNUOiJHQU1NQS5ESVNUIiwiR0FNTUFMTi5QUkVDSVNFIjoiR0FNTUFMTiIsR0FNTUFJTlY6IkdBTU1BLklOViIsQkVUQUlOVjoiQkVUQS5JTlYiLEJJTk9NRElTVDoiQklOT00uRElTVCIsQ09ORklERU5DRToiQ09ORklERU5DRS5OT1JNIixDUklUQklOT006IkJJTk9NLklOViIsV0VJ'@; put 'QlVMTERJU1Q6IldFSUJVTEwuRElTVCIsVElOVjJUOiJULklOVi4yVCIsVERJU1RSVDoiVC5ESVNULlJUIixURElTVDJUOiJULkRJU1QuMlQiLEZJTlZSVDoiRi5JTlYuUlQiLEZESVNUUlQ6IkYuRElTVC5SVCIsQ0hJRElTVFJUOiJDSElTUS5ESVNULlJUIixDSElJTlZSVDoiQ0hJU1EuSU5W'@; put 'LlJUIixMT0dOT1JNSU5WOiJMT0dOT1JNLklOViIsUE9JU1NPTkRJU1Q6IlBPSVNTT04uRElTVCJ9O2NsYXNzIGhaZSBleHRlbmRzIEJze2ZhY3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJGQUNUIikscj0+e3I9TWF0aC50cnVuYyhyKTts'@; put 'ZXQgaT0xO2ZvcihsZXQgbz0xO288PXI7bysrKWkqPW87cmV0dXJuIGl9KX1mYWN0ZG91YmxlKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiRkFDVERPVUJMRSIpLHI9PntsZXQgaT0xO2ZvcihsZXQgbz1yPU1hdGgudHJ1bmMocik7bz49MTtv'@; put 'LT0yKWkqPW87cmV0dXJuIGl9KX1jb21iaW4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDT01CSU4iKSwocixpKT0+aT5yP25ldyBQdCh0bi5OVU0sZHIuV3JvbmdPcmRlcik6ZlplKHI9TWF0aC50cnVuYyhyKSxpPU1hdGgudHJ1bmMoaSkp'@; put 'KX1jb21iaW5hKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiQ09NQklOQSIpLChyLGkpPT4ocj1NYXRoLnRydW5jKHIpKSsoaT1NYXRoLnRydW5jKGkpKS0xPj0xMDMwP25ldyBQdCh0bi5OVU0sZHIuVmFsdWVMYXJnZSk6MD09PXImJjA9PT1p'@; put 'PzE6ZlplKHIraS0xLGkpKX1nY2QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJHQ0QiKSwoLi4ucik9Pntjb25zdCBpPXRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb2VyY2VOdW1iZXJzQ29lcmNlUmFuZ2VzRHJvcE51bGxzKHIpO2lmKGkgaW5z'@; put 'dGFuY2VvZiBQdClyZXR1cm4gaTtsZXQgbz0wO2Zvcihjb25zdCBhIG9mIGkpe2lmKGE8MClyZXR1cm4gbmV3IFB0KHRuLk5VTSxkci5WYWx1ZVNtYWxsKTtvPXBaZShvLE1hdGgudHJ1bmMoYSkpfXJldHVybiBvPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP25ldyBQdCh0bi5OVU0sZHIuVmFs'@; put 'dWVMYXJnZSk6b30pfWxjbShlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkxDTSIpLCguLi5yKT0+e2NvbnN0IGk9dGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZU51bWJlcnNDb2VyY2VSYW5nZXNEcm9wTnVsbHMocik7aWYoaSBpbnN0YW5j'@; put 'ZW9mIFB0KXJldHVybiBpO2xldCBvPTE7Zm9yKGNvbnN0IGEgb2YgaSl7aWYoYTwwKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLlZhbHVlU21hbGwpO289cG5uKG8sTWF0aC50cnVuYyhhKSl9cmV0dXJuIG8+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/bmV3IFB0KHRuLk5VTSxkci5WYWx1ZUxh'@; put 'cmdlKTpvfSl9bXJvdW5kKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTVJPVU5EIiksKHIsaSk9PjA9PT1pPzA6cj4wJiZpPDB8fHI8MCYmaT4wP25ldyBQdCh0bi5OVU0sZHIuRGlzdGluY3RTaWducyk6TWF0aC5yb3VuZChyL2kpKmkpfW11'@; put 'bHRpbm9taWFsKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiTVVMVElOT01JQUwiKSwoLi4ucik9PntsZXQgaT0wLG89MTtmb3IobGV0IGEgb2Ygcil7aWYoYTwwKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLlZhbHVlU21hbGwpO2E9TWF0aC50'@; put 'cnVuYyhhKTtmb3IobGV0IGw9MTtsPD1hO2wrKylvKj0oaStsKS9sO2krPWF9cmV0dXJuIE1hdGgucm91bmQobyl9KX1xdW90aWVudChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlFVT1RJRU5UIiksKHIsaSk9PjA9PT1pP25ldyBQdCh0bi5E'@; put 'SVZfQllfWkVSTyk6TWF0aC50cnVuYyhyL2kpKX1zZXJpZXNzdW0oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTRVJJRVNTVU0iKSwocixpLG8sYSk9Pntjb25zdCBsPXRoaXMuYXJpdGhtZXRpY0hlbHBlci5tYW55VG9Pbmx5TnVtYmVyc0Ry'@; put 'b3BOdWxscyhhLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCkpO2lmKGwgaW5zdGFuY2VvZiBQdClyZXR1cm4gbDtsZXQgdT0wO2wucmV2ZXJzZSgpO2Zvcihjb25zdCBnIG9mIGwpdSo9TWF0aC5wb3cocixvKSx1Kz1nO3JldHVybiB1Kk1hdGgucG93KHIsaSl9KX1zaWduKGUsdCl7cmV0dXJu'@; put 'IHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiU0lHTiIpLHI9PnI+MD8xOnI8MD8tMTowKX1zdW14Mm15MihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNVTVgyTVkyIiksKHIsaSk9Pntjb25zdCBvPXIudmFsdWVz'@; put 'RnJvbVRvcExlZnRDb3JuZXIoKSxhPWkudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKTtpZihvLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiBuZXcgUHQodG4uTkEsZHIuRXF1YWxMZW5ndGgpO2NvbnN0IGw9by5sZW5ndGg7bGV0IHU9MDtmb3IobGV0IGc9MDtnPGw7ZysrKXtjb25zdCBFPW9b'@; put 'Z10sTz1hW2ddO2lmKEUgaW5zdGFuY2VvZiBQdClyZXR1cm4gRTtpZihPIGluc3RhbmNlb2YgUHQpcmV0dXJuIE87Im51bWJlciI9PXR5cGVvZiBFJiYibnVtYmVyIj09dHlwZW9mIE8mJih1Kz1NYXRoLnBvdyhFLDIpLU1hdGgucG93KE8sMikpfXJldHVybiB1fSl9c3VteDJweTIoZSx0KXty'@; put 'ZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTVU1YMlBZMiIpLChyLGkpPT57Y29uc3Qgbz1yLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCksYT1pLnZhbHVlc0Zyb21Ub3BMZWZ0Q29ybmVyKCk7aWYoby5sZW5ndGghPT1hLmxlbmd0aClyZXR1cm4gbmV3'@; put 'IFB0KHRuLk5BLGRyLkVxdWFsTGVuZ3RoKTtjb25zdCBsPW8ubGVuZ3RoO2xldCB1PTA7Zm9yKGxldCBnPTA7ZzxsO2crKyl7Y29uc3QgRT1vW2ddLE89YVtnXTtpZihFIGluc3RhbmNlb2YgUHQpcmV0dXJuIEU7aWYoTyBpbnN0YW5jZW9mIFB0KXJldHVybiBPOyJudW1iZXIiPT10eXBlb2Yg'@; put 'RSYmIm51bWJlciI9PXR5cGVvZiBPJiYodSs9TWF0aC5wb3coRSwyKStNYXRoLnBvdyhPLDIpKX1yZXR1cm4gdX0pfXN1bXhteTIoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTVU1YTVkyIiksKHIsaSk9Pntjb25zdCBvPXIudmFsdWVzRnJv'@; put 'bVRvcExlZnRDb3JuZXIoKSxhPWkudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKTtpZihvLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiBuZXcgUHQodG4uTkEsZHIuRXF1YWxMZW5ndGgpO2NvbnN0IGw9by5sZW5ndGg7bGV0IHU9MDtmb3IobGV0IGc9MDtnPGw7ZysrKXtjb25zdCBFPW9bZ10s'@; put 'Tz1hW2ddO2lmKEUgaW5zdGFuY2VvZiBQdClyZXR1cm4gRTtpZihPIGluc3RhbmNlb2YgUHQpcmV0dXJuIE87Im51bWJlciI9PXR5cGVvZiBFJiYibnVtYmVyIj09dHlwZW9mIE8mJih1Kz1NYXRoLnBvdyhFLU8sMikpfXJldHVybiB1fSl9fWZ1bmN0aW9uIGZaZShuLGUpezIqZT5uJiYoZT1u'@; put 'LWUpO2xldCB0PTE7Zm9yKGxldCByPTE7cjw9ZTtyKyspdCo9KG4tZStyKS9yO3JldHVybiBNYXRoLnJvdW5kKHQpfWZ1bmN0aW9uIHBaZShuLGUpe2ZvcihuPGUmJihbbixlXT1bZSxuXSk7ZT4wOylbbixlXT1bZSxuJWVdO3JldHVybiBufWZ1bmN0aW9uIHBubihuLGUpe3JldHVybiAwPT09'@; put 'bnx8MD09PWU/MDpuKihlL3BaZShuLGUpKX1oWmUuaW1wbGVtZW50ZWRGdW5jdGlvbnM9e0ZBQ1Q6e21ldGhvZDoiZmFjdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsbWluVmFsdWU6MCxtYXhWYWx1ZToxNzB9XX0sRkFDVERPVUJMRTp7bWV0aG9kOiJmYWN0ZG91Ymxl'@; put 'IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowLG1heFZhbHVlOjI4OH1dfSxDT01CSU46e21ldGhvZDoiY29tYmluIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowLGxlc3NUaGFuOjEwMzB9LHthcmd1bWVudFR5cGU6'@; put 'ZXQuTlVNQkVSLG1pblZhbHVlOjB9XX0sQ09NQklOQTp7bWV0aG9kOiJjb21iaW5hIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUixtaW5WYWx1ZTowfV19LEdDRDp7bWV0aG9kOiJnY2QiLHBhcmFtZXRlcnM6'@; put 'W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sTENNOnttZXRob2Q6ImxjbSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSxNUk9VTkQ6e21ldGhvZDoibXJvdW5kIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0'@; put 'Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sTVVMVElOT01JQUw6e21ldGhvZDoibXVsdGlub21pYWwiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV0scmVwZWF0TGFzdEFyZ3M6MSxleHBhbmRSYW5nZXM6ITB9LFFVT1RJRU5UOnttZXRob2Q6InF1b3Rp'@; put 'ZW50IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sU0VSSUVTU1VNOnttZXRob2Q6InNlcmllc3N1bSIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuTlVNQkVSfSx7YXJn'@; put 'dW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX1dfSxTSUdOOnttZXRob2Q6InNpZ24iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuTlVNQkVSfV19LFNVTVgyTVkyOnttZXRob2Q6InN1bXgybXkyIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJB'@; put 'TkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV19LFNVTVgyUFkyOnttZXRob2Q6InN1bXgycHkyIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV19LFNVTVhNWTI6e21ldGhvZDoic3VteG15MiIscGFyYW1ldGVyczpbe2FyZ3Vt'@; put 'ZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX1dfX07Y2xhc3MgZ1plIGV4dGVuZHMgQnN7Y29tcGxleChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPTVBMRVgiKSwocixpLG8pPT4iaSIhPT1vJiYiaiIhPT1vP25l'@; put 'dyBQdCh0bi5WQUxVRSxkci5TaG91bGRCZUlvckopOk1oKFtyLGldLG8pKX1pbWFicyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklNQUJTIiksYlplKX1pbWFnaW5hcnkoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0'@; put 'aGlzLm1ldGFkYXRhKCJJTUFHSU5BUlkiKSwoW3IsaV0pPT5pKX1pbXJlYWwoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTVJFQUwiKSwoW3IsaV0pPT5yKX1pbWFyZ3VtZW50KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdz'@; put 'LHQsdGhpcy5tZXRhZGF0YSgiSU1BUkdVTUVOVCIpLChbcixpXSk9PjA9PT1yJiYwPT09aT9uZXcgUHQodG4uRElWX0JZX1pFUk8pOk1hdGguYXRhbjIoaSxyKSl9aW1jb25qdWdhdGUoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTUNPTkpV'@; put 'R0FURSIpLChbcixpXSk9Pk1oKFtyLC1pXSkpfWltY29zKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1DT1MiKSxyPT5NaChzSyhyKSkpfWltY29zaChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRh'@; put 'dGEoIklNQ09TSCIpLHI9Pk1oKHZaZShyKSkpfWltY290KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1DT1QiKSxyPT5NaChCQyhzSyhyKSxsSyhyKSkpKX1pbWNzYyhlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRo'@; put 'aXMubWV0YWRhdGEoIklNQ1NDIikscj0+TWgoQkMoWzEsMF0sbEsocikpKSl9aW1jc2NoKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1DU0NIIikscj0+TWgoQkMoWzEsMF0sX1plKHIpKSkpfWltc2VjKGUsdCl7cmV0dXJuIHRoaXMucnVu'@; put 'RnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1TRUMiKSxyPT5NaChCQyhbMSwwXSxzSyhyKSkpKX1pbXNlY2goZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTVNFQ0giKSxyPT5NaChCQyhbMSwwXSx2WmUocikpKSl9aW1zaW4o'@; put 'ZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTVNJTiIpLHI9Pk1oKGxLKHIpKSl9aW1zaW5oKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1TSU5IIikscj0+TWgoX1plKHIpKSl9aW10YW4o'@; put 'ZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTVRBTiIpLHI9Pk1oKEJDKGxLKHIpLHNLKHIpKSkpfWltZGl2KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1ESVYiKSwocixpKT0+TWgoQkMo'@; put 'cixpKSkpfWltcHJvZHVjdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIklNUFJPRFVDVCIpLCguLi5yKT0+e2NvbnN0IGk9dGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZUNvbXBsZXhFeGFjdFJhbmdlcyhyKTtpZihpIGluc3RhbmNlb2Yg'@; put 'UHQpcmV0dXJuIGk7bGV0IG89WzEsMF07Zm9yKGNvbnN0IGEgb2YgaSlvPW1aZShvLGEpO3JldHVybiBNaChvKX0pfWltc3VtKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1TVU0iKSwoLi4ucik9Pntjb25zdCBpPXRoaXMuYXJpdGhtZXRp'@; put 'Y0hlbHBlci5jb2VyY2VDb21wbGV4RXhhY3RSYW5nZXMocik7aWYoaSBpbnN0YW5jZW9mIFB0KXJldHVybiBpO2xldCBvPVswLDBdO2Zvcihjb25zdCBhIG9mIGkpbz1nbm4obyxhKTtyZXR1cm4gTWgobyl9KX1pbXN1YihlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRo'@; put 'aXMubWV0YWRhdGEoIklNU1VCIiksKHIsaSk9Pk1oKGZ1bmN0aW9uIG1ubihbbixlXSxbdCxyXSl7cmV0dXJuW24tdCxlLXJdfShyLGkpKSl9aW1leHAoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTUVYUCIpLHI9Pk1oKHlaZShyKSkpfWlt'@; put 'bG4oZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTUxOIikscj0+TWgoY0socikpKX1pbWxvZzEwKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1MT0cxMCIpLHI9Pntjb25zdFtpLG9dPWNL'@; put 'KHIpLGE9TWF0aC5sb2coMTApO3JldHVybiBNaChbaS9hLG8vYV0pfSl9aW1sb2cyKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1MT0cyIikscj0+e2NvbnN0W2ksb109Y0sociksYT1NYXRoLmxvZygyKTtyZXR1cm4gTWgoW2kvYSxvL2Fd'@; put 'KX0pfWltcG93ZXIoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJJTVBPV0VSIiksKHIsaSk9Pk1oKHdaZShyLGkpKSl9aW1zcXJ0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSU1TUVJUIiks'@; put 'cj0+TWgod1plKHIsLjUpKSl9fWZ1bmN0aW9uIGdubihbbixlXSxbdCxyXSl7cmV0dXJuW24rdCxlK3JdfWZ1bmN0aW9uIG1aZShbbixlXSxbdCxyXSl7cmV0dXJuW24qdC1lKnIsbipyK3QqZV19ZnVuY3Rpb24gQkMoW24sZV0sW3Qscl0pe2NvbnN0IGk9TWF0aC5wb3codCwyKStNYXRoLnBv'@; put 'dyhyLDIpLFtvLGFdPW1aZShbbixlXSxbdCwtcl0pO3JldHVybltvL2ksYS9pXX1mdW5jdGlvbiBzSyhbbixlXSl7cmV0dXJuW01hdGguY29zKG4pKk1hdGguY29zaChlKSwtTWF0aC5zaW4obikqTWF0aC5zaW5oKGUpXX1mdW5jdGlvbiB2WmUoW24sZV0pe3JldHVybltNYXRoLmNvc2gobikq'@; put 'TWF0aC5jb3MoZSksTWF0aC5zaW5oKG4pKk1hdGguc2luKGUpXX1mdW5jdGlvbiBsSyhbbixlXSl7cmV0dXJuW01hdGguc2luKG4pKk1hdGguY29zaChlKSxNYXRoLmNvcyhuKSpNYXRoLnNpbmgoZSldfWZ1bmN0aW9uIF9aZShbbixlXSl7cmV0dXJuW01hdGguc2luaChuKSpNYXRoLmNvcyhl'@; put 'KSxNYXRoLmNvc2gobikqTWF0aC5zaW4oZSldfWZ1bmN0aW9uIHlaZShbbixlXSl7cmV0dXJuW01hdGguZXhwKG4pKk1hdGguY29zKGUpLE1hdGguZXhwKG4pKk1hdGguc2luKGUpXX1mdW5jdGlvbiBiWmUoW24sZV0pe3JldHVybiBNYXRoLnNxcnQobipuK2UqZSl9ZnVuY3Rpb24gY0soW24s'@; put 'ZV0pe3JldHVybltNYXRoLmxvZyhiWmUoW24sZV0pKSxNYXRoLmF0YW4yKGUsbildfWZ1bmN0aW9uIHdaZShuLGUpe2NvbnN0W3Qscl09Y0sobik7cmV0dXJuIHlaZShbZSp0LGUqcl0pfWdaZS5pbXBsZW1lbnRlZEZ1bmN0aW9ucz17Q09NUExFWDp7bWV0aG9kOiJjb21wbGV4IixwYXJhbWV0'@; put 'ZXJzOlt7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9LHthcmd1bWVudFR5cGU6ZXQuU1RSSU5HLGRlZmF1bHRWYWx1ZToiaSJ9XX0sSU1BQlM6e21ldGhvZDoiaW1hYnMiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09NUExFWH1dfSxJTUFH'@; put 'SU5BUlk6e21ldGhvZDoiaW1hZ2luYXJ5IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkNPTVBMRVh9XX0sSU1SRUFMOnttZXRob2Q6ImltcmVhbCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNQVJHVU1FTlQ6e21ldGhvZDoiaW1hcmd1bWVudCIscGFy'@; put 'YW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNQ09OSlVHQVRFOnttZXRob2Q6ImltY29uanVnYXRlIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkNPTVBMRVh9XX0sSU1DT1M6e21ldGhvZDoiaW1jb3MiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09N'@; put 'UExFWH1dfSxJTUNPU0g6e21ldGhvZDoiaW1jb3NoIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkNPTVBMRVh9XX0sSU1DT1Q6e21ldGhvZDoiaW1jb3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09NUExFWH1dfSxJTUNTQzp7bWV0aG9kOiJpbWNzYyIscGFyYW1ldGVy'@; put 'czpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNQ1NDSDp7bWV0aG9kOiJpbWNzY2giLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09NUExFWH1dfSxJTVNFQzp7bWV0aG9kOiJpbXNlYyIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNU0VDSDp7'@; put 'bWV0aG9kOiJpbXNlY2giLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09NUExFWH1dfSxJTVNJTjp7bWV0aG9kOiJpbXNpbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNU0lOSDp7bWV0aG9kOiJpbXNpbmgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5'@; put 'cGU6ZXQuQ09NUExFWH1dfSxJTVRBTjp7bWV0aG9kOiJpbXRhbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNRElWOnttZXRob2Q6ImltZGl2IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkNPTVBMRVh9LHthcmd1bWVudFR5cGU6ZXQuQ09NUExFWH1d'@; put 'fSxJTVBST0RVQ1Q6e21ldGhvZDoiaW1wcm9kdWN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LElNU1VNOnttZXRob2Q6Imltc3VtIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LElNU1VC'@; put 'OnttZXRob2Q6Imltc3ViIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkNPTVBMRVh9LHthcmd1bWVudFR5cGU6ZXQuQ09NUExFWH1dfSxJTUVYUDp7bWV0aG9kOiJpbWV4cCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNTE46e21ldGhvZDoiaW1sbiIs'@; put 'cGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNTE9HMTA6e21ldGhvZDoiaW1sb2cxMCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19LElNTE9HMjp7bWV0aG9kOiJpbWxvZzIiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09NUExF'@; put 'WH1dfSxJTVBPV0VSOnttZXRob2Q6ImltcG93ZXIiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQ09NUExFWH0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVJ9XX0sSU1TUVJUOnttZXRob2Q6Imltc3FydCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5DT01QTEVYfV19fTtjbGFz'@; put 'cyBQbWUgZXh0ZW5kcyBCc3thdmVkZXYoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJBVkVERVYiKSwoLi4ucik9Pntjb25zdCBpPXRoaXMuYXJpdGhtZXRpY0hlbHBlci5jb2VyY2VOdW1iZXJzRXhhY3RSYW5nZXMocik7aWYoaSBpbnN0YW5j'@; put 'ZW9mIFB0KXJldHVybiBpO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFB0KHRuLkRJVl9CWV9aRVJPKTtjb25zdCBvPWttKGkpO3JldHVybiBpLnJlZHVjZSgoYSxsKT0+YStNYXRoLmFicyhsLW8pLDApL2kubGVuZ3RofSl9ZGV2c3EoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihl'@; put 'LmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJERVZTUSIpLCguLi5yKT0+e2NvbnN0IGk9dGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZU51bWJlcnNFeGFjdFJhbmdlcyhyKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFB0P2k6MD09PWkubGVuZ3RoPzA6VkMoaSl9KX1nZW9tZWFuKGUsdCl7cmV0dXJu'@; put 'IHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiR0VPTUVBTiIpLCguLi5yKT0+e2NvbnN0IGk9dGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZU51bWJlcnNFeGFjdFJhbmdlcyhyKTtpZihpIGluc3RhbmNlb2YgUHQpcmV0dXJuIGk7aWYoMD09PWkubGVuZ3RoKXJl'@; put 'dHVybiBuZXcgUHQodG4uTlVNLGRyLk9uZVZhbHVlKTtmb3IoY29uc3QgbyBvZiBpKWlmKG88PTApcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuVmFsdWVTbWFsbCk7cmV0dXJuIGZ1bmN0aW9uIGZubihuKXtyZXR1cm4gTWF0aC5wb3coZnVuY3Rpb24gaG5uKG4pe2Zvcih2YXIgZT0xLHQ9bi5s'@; put 'ZW5ndGg7LS10Pj0wOyllKj1uW3RdO3JldHVybiBlfShuKSwxL24ubGVuZ3RoKX0oaSl9KX1oYXJtZWFuKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiSEFSTUVBTiIpLCguLi5yKT0+e2NvbnN0IGk9dGhpcy5hcml0aG1ldGljSGVscGVyLmNv'@; put 'ZXJjZU51bWJlcnNFeGFjdFJhbmdlcyhyKTtpZihpIGluc3RhbmNlb2YgUHQpcmV0dXJuIGk7aWYoMD09PWkubGVuZ3RoKXJldHVybiBuZXcgUHQodG4uTlVNLGRyLk9uZVZhbHVlKTtmb3IoY29uc3QgbyBvZiBpKWlmKG88PTApcmV0dXJuIG5ldyBQdCh0bi5OVU0sZHIuVmFsdWVTbWFsbCk7'@; put 'cmV0dXJuIGkubGVuZ3RoL2kucmVkdWNlKChvLGEpPT5vKzEvYSwwKX0pfWNvcnJlbChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPUlJFTCIpLChyLGkpPT57aWYoci5udW1iZXJPZkVsZW1lbnRzKCkhPT1pLm51bWJlck9mRWxlbWVudHMo'@; put 'KSlyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLkVxdWFsTGVuZ3RoKTtjb25zdCBvPWpDKHIsaSk7cmV0dXJuIG8gaW5zdGFuY2VvZiBQdD9vOm9bMF0ubGVuZ3RoPD0xP25ldyBQdCh0bi5ESVZfQllfWkVSTyxkci5Ud29WYWx1ZXMpOmRaZShvWzBdLG9bMV0pfSl9cnNxKGUsdCl7cmV0dXJuIHRo'@; put 'aXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiUlNRIiksKHIsaSk9PntpZihyLm51bWJlck9mRWxlbWVudHMoKSE9PWkubnVtYmVyT2ZFbGVtZW50cygpKXJldHVybiBuZXcgUHQodG4uTkEsZHIuRXF1YWxMZW5ndGgpO2NvbnN0IG89akMocixpKTtyZXR1cm4gbyBpbnN0'@; put 'YW5jZW9mIFB0P286b1swXS5sZW5ndGg8PTE/bmV3IFB0KHRuLkRJVl9CWV9aRVJPLGRyLlR3b1ZhbHVlcyk6TWF0aC5wb3coZFplKG9bMF0sb1sxXSksMil9KX1jb3ZhcmlhbmNlcChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNPVkFSSUFO'@; put 'Q0UuUCIpLChyLGkpPT57aWYoci5udW1iZXJPZkVsZW1lbnRzKCkhPT1pLm51bWJlck9mRWxlbWVudHMoKSlyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLkVxdWFsTGVuZ3RoKTtjb25zdCBvPWpDKHIsaSk7aWYobyBpbnN0YW5jZW9mIFB0KXJldHVybiBvO2NvbnN0IGE9b1swXS5sZW5ndGg7cmV0'@; put 'dXJuIGE8MT9uZXcgUHQodG4uRElWX0JZX1pFUk8sZHIuT25lVmFsdWUpOjE9PT1hPzA6X1Aob1swXSxvWzFdKSooYS0xKS9hfSl9Y292YXJpYW5jZXMoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJDT1ZBUklBTkNFLlMiKSwocixpKT0+e2lm'@; put 'KHIubnVtYmVyT2ZFbGVtZW50cygpIT09aS5udW1iZXJPZkVsZW1lbnRzKCkpcmV0dXJuIG5ldyBQdCh0bi5OQSxkci5FcXVhbExlbmd0aCk7Y29uc3Qgbz1qQyhyLGkpO3JldHVybiBvIGluc3RhbmNlb2YgUHQ/bzpvWzBdLmxlbmd0aDw9MT9uZXcgUHQodG4uRElWX0JZX1pFUk8sZHIuVHdv'@; put 'VmFsdWVzKTpfUChvWzBdLG9bMV0pfSl9enRlc3QoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJaLlRFU1QiKSwocixpLG8pPT57Y29uc3QgYT10aGlzLmFyaXRobWV0aWNIZWxwZXIubWFueVRvRXhhY3ROdW1iZXJzKHIudmFsdWVzRnJvbVRv'@; put 'cExlZnRDb3JuZXIoKSk7aWYoYSBpbnN0YW5jZW9mIFB0KXJldHVybiBhO2NvbnN0IGw9YS5sZW5ndGg7aWYodm9pZCAwPT09byl7aWYobDwyKXJldHVybiBuZXcgUHQodG4uRElWX0JZX1pFUk8sZHIuVHdvVmFsdWVzKTtvPW55KGEsITApfXJldHVybiBsPDE/bmV3IFB0KHRuLk5BLGRyLk9u'@; put 'ZVZhbHVlKTowPT09bz9uZXcgUHQodG4uRElWX0JZX1pFUk8pOjEtWDRfY2RmKChrbShhKS1pKS8oby9NYXRoLnNxcnQobCkpLDAsMSl9KX1mdGVzdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkYuVEVTVCIpLChyLGkpPT57Y29uc3Qgbz10'@; put 'aGlzLmFyaXRobWV0aWNIZWxwZXIubWFueVRvRXhhY3ROdW1iZXJzKHIudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSksYT10aGlzLmFyaXRobWV0aWNIZWxwZXIubWFueVRvRXhhY3ROdW1iZXJzKGkudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSk7aWYobyBpbnN0YW5jZW9mIFB0KXJldHVy'@; put 'biBvO2lmKGEgaW5zdGFuY2VvZiBQdClyZXR1cm4gYTtpZihvLmxlbmd0aDw9MXx8YS5sZW5ndGg8PTEpcmV0dXJuIG5ldyBQdCh0bi5ESVZfQllfWkVSTyk7Y29uc3QgbD12UChvLCEwKSx1PXZQKGEsITApO2lmKDA9PT1sfHwwPT09dSlyZXR1cm4gbmV3IFB0KHRuLkRJVl9CWV9aRVJPKTtj'@; put 'b25zdCBFPXBBX2NkZihsL3Usby5sZW5ndGgtMSxhLmxlbmd0aC0xKTtyZXR1cm4gMipNYXRoLm1pbihFLDEtRSl9KX1zdGV5eChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIlNURVlYIiksKHIsaSk9PntpZihyLm51bWJlck9mRWxlbWVudHMo'@; put 'KSE9PWkubnVtYmVyT2ZFbGVtZW50cygpKXJldHVybiBuZXcgUHQodG4uTkEsZHIuRXF1YWxMZW5ndGgpO2NvbnN0IG89akMocixpKTtpZihvIGluc3RhbmNlb2YgUHQpcmV0dXJuIG87Y29uc3QgYT1vWzBdLmxlbmd0aDtyZXR1cm4gYTw9Mj9uZXcgUHQodG4uRElWX0JZX1pFUk8sZHIuVGhy'@; put 'ZWVWYWx1ZXMpOk1hdGguc3FydCgoVkMob1swXSktTWF0aC5wb3coX1Aob1swXSxvWzFdKSooYS0xKSwyKS9WQyhvWzFdKSkvKGEtMikpfSl9c2xvcGUoZSx0KXtyZXR1cm4gdGhpcy5ydW5GdW5jdGlvbihlLmFyZ3MsdCx0aGlzLm1ldGFkYXRhKCJTTE9QRSIpLChyLGkpPT57aWYoci5udW1i'@; put 'ZXJPZkVsZW1lbnRzKCkhPT1pLm51bWJlck9mRWxlbWVudHMoKSlyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLkVxdWFsTGVuZ3RoKTtjb25zdCBvPWpDKHIsaSk7aWYobyBpbnN0YW5jZW9mIFB0KXJldHVybiBvO2NvbnN0IGE9b1swXS5sZW5ndGg7cmV0dXJuIGE8PTE/bmV3IFB0KHRuLkRJVl9C'@; put 'WV9aRVJPLGRyLlR3b1ZhbHVlcyk6X1Aob1swXSxvWzFdKSooYS0xKS9WQyhvWzFdKX0pfWNoaXNxdGVzdChlLHQpe3JldHVybiB0aGlzLnJ1bkZ1bmN0aW9uKGUuYXJncyx0LHRoaXMubWV0YWRhdGEoIkNISVNRLlRFU1QiKSwocixpKT0+e2NvbnN0IG89ci5oZWlnaHQoKSxhPXIud2lkdGgo'@; put 'KTtpZihpLmhlaWdodCgpIT09b3x8aS53aWR0aCgpIT09YSlyZXR1cm4gbmV3IFB0KHRuLk5BLGRyLkVxdWFsTGVuZ3RoKTtjb25zdCBsPWpDKHIsaSk7aWYobCBpbnN0YW5jZW9mIFB0KXJldHVybiBsO2lmKGxbMF0ubGVuZ3RoPD0xKXJldHVybiBuZXcgUHQodG4uRElWX0JZX1pFUk8sZHIu'@; put 'VHdvVmFsdWVzKTtsZXQgdT0wO2ZvcihsZXQgZz0wO2c8bFswXS5sZW5ndGg7ZysrKXtpZigwPT09bFsxXVtnXSlyZXR1cm4gbmV3IFB0KHRuLkRJVl9CWV9aRVJPKTt1Kz1NYXRoLnBvdyhsWzBdW2ddLWxbMV1bZ10sMikvbFsxXVtnXX1yZXR1cm4gdTwwP25ldyBQdCh0bi5OVU0sZHIuTmFO'@; put 'KToxLWZBX2NkZih1LG8+MSYmYT4xPyhvLTEpKihhLTEpOm8qYS0xKX0pfXR0ZXN0KGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiVC5URVNUIiksKHIsaSxvLGEpPT57Y29uc3QgbD10aGlzLmFyaXRobWV0aWNIZWxwZXIubWFueVRvRXhhY3RO'@; put 'dW1iZXJzKHIudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSksdT10aGlzLmFyaXRobWV0aWNIZWxwZXIubWFueVRvRXhhY3ROdW1iZXJzKGkudmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKSk7aWYobCBpbnN0YW5jZW9mIFB0KXJldHVybiBsO2lmKHUgaW5zdGFuY2VvZiBQdClyZXR1cm4gdTtj'@; put 'b25zdCBnPWwubGVuZ3RoLEU9dS5sZW5ndGg7aWYoMT09PWEpe2lmKEUhPT1nKXJldHVybiBuZXcgUHQodG4uTkEsZHIuRXF1YWxMZW5ndGgpO2lmKGc8PTEpcmV0dXJuIG5ldyBQdCh0bi5ESVZfQllfWkVSTyxkci5Ud29WYWx1ZXMpO2NvbnN0IE89QXJyYXkoZyk7Zm9yKGxldCB2ZT0wO3Zl'@; put 'PGc7dmUrKylPW3ZlXT1sW3ZlXS11W3ZlXTtjb25zdCBaPW55KE8sITApO2lmKDA9PT1aKXJldHVybiBuZXcgUHQodG4uRElWX0JZX1pFUk8pO2NvbnN0IGVlPU1hdGguYWJzKE1hdGguc3FydChnKSprbShPKS9aKTtyZXR1cm4gbyooMS1BbV9jZGYoZWUsZy0xKSl9aWYoMj09PWEpe2lmKGc8'@; put 'PTF8fEU8PTEpcmV0dXJuIG5ldyBQdCh0bi5ESVZfQllfWkVSTyxkci5Ud29WYWx1ZXMpO2NvbnN0IE89KFZDKGwpK1ZDKHUpKS8oZytFLTIpO2lmKDA9PT1PKXJldHVybiBuZXcgUHQodG4uRElWX0JZX1pFUk8pO2NvbnN0IFo9TWF0aC5hYnMoKGttKGwpLWttKHUpKS9NYXRoLnNxcnQoTyoo'@; put 'MS9nKzEvRSkpKTtyZXR1cm4gbyooMS1BbV9jZGYoWixnK0UtMikpfXtpZihnPD0xfHxFPD0xKXJldHVybiBuZXcgUHQodG4uRElWX0JZX1pFUk8sZHIuVHdvVmFsdWVzKTtjb25zdCBPPXZQKGwsITApLFo9dlAodSwhMCk7aWYoMD09PU8mJjA9PT1aKXJldHVybiBuZXcgUHQodG4uRElWX0JZ'@; put 'X1pFUk8pO2NvbnN0IGVlPU1hdGguYWJzKChrbShsKS1rbSh1KSkvTWF0aC5zcXJ0KE8vZytaL0UpKSx2ZT1NYXRoLnBvdyhPL2crWi9FLDIpLyhNYXRoLnBvdyhPL2csMikvKGctMSkrTWF0aC5wb3coWi9FLDIpLyhFLTEpKTtyZXR1cm4gbyooMS1BbV9jZGYoZWUsdmUpKX19KX1za2V3KGUs'@; put 'dCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiU0tFVyIpLCguLi5yKT0+e2NvbnN0IGk9dGhpcy5hcml0aG1ldGljSGVscGVyLmNvZXJjZU51bWJlcnNFeGFjdFJhbmdlcyhyKTtpZihpIGluc3RhbmNlb2YgUHQpcmV0dXJuIGk7Y29uc3Qgbz1pLmxl'@; put 'bmd0aDtpZihvPDMpcmV0dXJuIG5ldyBQdCh0bi5ESVZfQllfWkVSTyxkci5UaHJlZVZhbHVlcyk7Y29uc3QgYT1rbShpKSxsPW55KGksITApO3JldHVybiAwPT09bD9uZXcgUHQodG4uRElWX0JZX1pFUk8pOmkucmVkdWNlKCh1LGcpPT51K01hdGgucG93KChnLWEpL2wsMyksMCkqby8oby0x'@; put 'KS8oby0yKX0pfXNrZXdwKGUsdCl7cmV0dXJuIHRoaXMucnVuRnVuY3Rpb24oZS5hcmdzLHQsdGhpcy5tZXRhZGF0YSgiU0tFVy5QIiksKC4uLnIpPT57Y29uc3QgaT10aGlzLmFyaXRobWV0aWNIZWxwZXIuY29lcmNlTnVtYmVyc0V4YWN0UmFuZ2VzKHIpO2lmKGkgaW5zdGFuY2VvZiBQdCly'@; put 'ZXR1cm4gaTtjb25zdCBvPWkubGVuZ3RoO2lmKG88MylyZXR1cm4gbmV3IFB0KHRuLkRJVl9CWV9aRVJPLGRyLlRocmVlVmFsdWVzKTtjb25zdCBhPWttKGkpLGw9bnkoaSwhMSk7cmV0dXJuIDA9PT1sP25ldyBQdCh0bi5ESVZfQllfWkVSTyk6aS5yZWR1Y2UoKHUsZyk9PnUrTWF0aC5wb3co'@; put 'KGctYSkvbCwzKSwwKS9vfSl9fWZ1bmN0aW9uIGpDKG4sZSl7Y29uc3QgdD1uLml0ZXJhdGVWYWx1ZXNGcm9tVG9wTGVmdENvcm5lcigpLHI9ZS5pdGVyYXRlVmFsdWVzRnJvbVRvcExlZnRDb3JuZXIoKTtsZXQgaSxvO2NvbnN0IGE9W10sbD1bXTtmb3IoO2k9dC5uZXh0KCksbz1yLm5leHQo'@; put 'KSwhaS5kb25lJiYhby5kb25lOyl7Y29uc3QgdT1pLnZhbHVlLGc9by52YWx1ZTtpZih1IGluc3RhbmNlb2YgUHQpcmV0dXJuIHU7aWYoZyBpbnN0YW5jZW9mIFB0KXJldHVybiBnO2NjKHUpJiZjYyhnKSYmKGEucHVzaChMbyh1KSksbC5wdXNoKExvKGcpKSl9cmV0dXJuW2EsbF19UG1lLmlt'@; put 'cGxlbWVudGVkRnVuY3Rpb25zPXtBVkVERVY6e21ldGhvZDoiYXZlZGV2IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RBcmdzOjF9LERFVlNROnttZXRob2Q6ImRldnNxIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LkFOWX1dLHJlcGVhdExhc3RB'@; put 'cmdzOjF9LEdFT01FQU46e21ldGhvZDoiZ2VvbWVhbiIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5BTll9XSxyZXBlYXRMYXN0QXJnczoxfSxIQVJNRUFOOnttZXRob2Q6Imhhcm1lYW4iLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0s'@; put 'Q09SUkVMOnttZXRob2Q6ImNvcnJlbCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX1dfSxSU1E6e21ldGhvZDoicnNxIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV19'@; put 'LCJDT1ZBUklBTkNFLlAiOnttZXRob2Q6ImNvdmFyaWFuY2VwIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV19LCJDT1ZBUklBTkNFLlMiOnttZXRob2Q6ImNvdmFyaWFuY2VzIixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0'@; put 'LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0LlJBTkdFfV19LCJaLlRFU1QiOnttZXRob2Q6Inp0ZXN0IixwYXJhbWV0ZXJzOlt7YXJndW1lbnRUeXBlOmV0LlJBTkdFfSx7YXJndW1lbnRUeXBlOmV0Lk5VTUJFUn0se2FyZ3VtZW50VHlwZTpldC5OVU1CRVIsb3B0aW9uYWxBcmc6ITB9XX0sIkYu'@; put 'VEVTVCI6e21ldGhvZDoiZnRlc3QiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9LHthcmd1bWVudFR5cGU6ZXQuUkFOR0V9XX0sU1RFWVg6e21ldGhvZDoic3RleXgiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9LHthcmd1bWVudFR5cGU6ZXQuUkFOR0V9'@; put 'XX0sU0xPUEU6e21ldGhvZDoic2xvcGUiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuUkFOR0V9LHthcmd1bWVudFR5cGU6ZXQuUkFOR0V9XX0sIkNISVNRLlRFU1QiOnttZXRob2Q6ImNoaXNxdGVzdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50'@; put 'VHlwZTpldC5SQU5HRX1dfSwiVC5URVNUIjp7bWV0aG9kOiJ0dGVzdCIscGFyYW1ldGVyczpbe2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5SQU5HRX0se2FyZ3VtZW50VHlwZTpldC5JTlRFR0VSLG1pblZhbHVlOjEsbWF4VmFsdWU6Mn0se2FyZ3VtZW50VHlwZTpl'@; put 'dC5JTlRFR0VSLG1pblZhbHVlOjEsbWF4VmFsdWU6M31dfSxTS0VXOnttZXRob2Q6InNrZXciLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5ZfV0scmVwZWF0TGFzdEFyZ3M6MX0sIlNLRVcuUCI6e21ldGhvZDoic2tld3AiLHBhcmFtZXRlcnM6W3thcmd1bWVudFR5cGU6ZXQuQU5Z'@; put 'fV0scmVwZWF0TGFzdEFyZ3M6MX19LFBtZS5hbGlhc2VzPXtDT1ZBUjoiQ09WQVJJQU5DRS5QIixGVEVTVDoiRi5URVNUIixQRUFSU09OOiJDT1JSRUwiLFpURVNUOiJaLlRFU1QiLENISVRFU1Q6IkNISVNRLlRFU1QiLFRURVNUOiJULlRFU1QiLENPVkFSSUFOQ0VQOiJDT1ZBUklBTkNFLlAi'@; put 'LENPVkFSSUFOQ0VTOiJDT1ZBUklBTkNFLlMiLFNLRVdQOiJTS0VXLlAifSxkZi5yZWdpc3Rlckxhbmd1YWdlKGgyLmRlZmF1bHRDb25maWcubGFuZ3VhZ2UsbW1lKSxkZi5sYW5ndWFnZXNbbW1lLmxhbmdDb2RlXT1tbWU7Zm9yKGNvbnN0IG4gb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFt'@; put 'ZXMoWSkpbi5zdGFydHNXaXRoKCJfIil8fGRmLnJlZ2lzdGVyRnVuY3Rpb25QbHVnaW4oWVtuXSk7ZnVuY3Rpb24gQ1plKG4pe2lmKCFuKXJldHVybiExO2NvbnN0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcyhuKS5nZXQoImxhYmVscyIpO3JldHVybiBudWxsIT09ZSYmImZhbHNlIiE9PWV9ZnVu'@; put 'Y3Rpb24gZ0EobixlLHQpe2lmKCF0KXJldHVybiBuO2NvbnN0IHI9bmV3IE1hcChlLm1hcChpPT5baS5OQU1FLGkuTEFCRUxdKSk7cmV0dXJuIG4ubWFwKGk9PnIuZ2V0KGkpfHxpKX1jb25zdCByeT1uPT5TdHJpbmcobj8/IiIpLnJlcGxhY2UoL1smPD4iJ10vZyxlPT4oeyImIjoiJmFtcDsi'@; put 'LCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9W2VdKSk7ZnVuY3Rpb24gU1plKG4sZSx0LHIsaSl7aWYoIWUpcmV0dXJuIk5vIGluZm8gZm91bmQiO2xldCBvPWBOQU1FOiAke3J5KG4pfTxicj5MQUJFTDogJHtyeShlLmxhYmVsKX08YnI+VFlQRTogJHty'@; put 'eShlLnR5cGUpfTxicj5MRU5HVEg6ICR7cnkoZS5sZW5ndGgpfTxicj5GT1JNQVQ6ICR7cnkoZS5mb3JtYXQpfWA7aWYodD9vKz1gPGJyPkhBUkRSRUdFWDogJHtyeSh0KX1gOnImJihvKz1gPGJyPlNPRlRSRUdFWDogJHtyeShyKX1gKSxpKXtjb25zdCBhPWkuc3RhcnRzV2l0aCgiPSIpP2ku'@; put 'c2xpY2UoMSk6aTtvKz1gPGJyPlx1MjIxYXg9JHtyeShhKX1gfXJldHVybiBvfWNvbnN0IEhtZT1uPT5uZXcgRGF0ZShNYXRoLnJvdW5kKDg2NDAwKihuLTI1NTY5KSoxZTMpKSxWbWU9bj0+e2NvbnN0e1tNbV06ZSwuLi50fT1uO3JldHVybiB0fSx1Sz0obixlLHQpPT57aWYoIlllcyI9PT1u'@; put 'Ll9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXylyZXR1cm4iRCI7Y29uc3Qgcj1lLmZpbmQoaT0+e2Zvcihjb25zdCBvIG9mIHQpaWYoaVtvXSE9PW5bb10pcmV0dXJuITE7cmV0dXJuITB9KTtyZXR1cm4gcj9KU09OLnN0cmluZ2lmeShWbWUobikpIT09SlNPTi5zdHJpbmdpZnkoVm1l'@; put 'KHIpKT8iTSI6IlUiOiJBIn0sRVplPW49PntsZXQgZT0oIjAiK24uZ2V0VVRDSG91cnMoKSkuc2xpY2UoLTIpKyI6IjtyZXR1cm4gZT1lKygiMCIrbi5nZXRVVENNaW51dGVzKCkpLnNsaWNlKC0yKSsiOiIsZSs9KCIwIituLmdldFVUQ1NlY29uZHMoKSkuc2xpY2UoLTIpLGV9LEJtZT1uPT5u'@; put 'LmdldEZ1bGxZZWFyKCkrIi0iKygiMCIrKG4uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpKyItIisoIjAiK24uZ2V0RGF0ZSgpKS5zbGljZSgtMiksam1lPW49PiEhL14tezAsMX1cZCskLy50ZXN0KG4pLE1aZT1uPT4hIS9eXGQrXC5cZCskLy50ZXN0KG4pLFVtZT0obixlKT0+bmV3IEZpbGUo'@; put 'W25dLGUse2xhc3RNb2RpZmllZDoobmV3IERhdGUpLmdldFRpbWUoKX0pO3ZhciBpMD1oKDYzNTc4KSxUWmU9aCg5NDI0OCksRW5uPWgoODM4MzgpO2NsYXNzIHhaZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmxpY2VuY2VTdGF0ZT1lLmxpY2VuY2VTdGF0ZX1wYXJzZVNwcmVhZHNoZWV0RmlsZShl'@; put 'LHQscixpKXt2YXIgbz10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoYSxsKT0+e2NvbnN0IHU9ZS51cGxvYWRlcnx8bmV3IGdnZTtpZihlLndvcmtib29rKXRoaXMucGFyc2VFeGNlbEZpbGUoZSxlLndvcmtib29rLHUsaSkudGhlbihnPT57YShnKX0pLmNhdGNoKGc9PntsKGcpfSk7ZWxzZXtj'@; put 'b25zdCBFPWUuZmlsZTtlLmVuY29kaW5nfHwoZS5lbmNvZGluZz0iVVRGLTgiKSxyJiZyKGBMb2FkaW5nICR7RS5uYW1lfSBpbnRvIHRoZSBicm93c2VyYCk7bGV0IE89RS5uYW1lLnNsaWNlKEUubmFtZS5sYXN0SW5kZXhPZigiLiIpKzEsRS5uYW1lLmxhc3RJbmRleE9mKCIuIikrNCk7aWYo'@; put 'InhscyIhPT1PLnRvTG93ZXJDYXNlKCkpe2lmKCJjc3YiPT09Ty50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLnBhcnNlQ3N2RmlsZShlLHUsTykudGhlbihaPT5hKFopKS5jYXRjaChaPT5sKFopKTt7bGV0IFo9J0ludmFsaWQgZmlsZSB0eXBlICI8Yj4nK2UuZmlsZS5uYW1lKyc8L2I+Ii4g'@; put 'UGxlYXNlIHVwbG9hZCBjc3Ygb3IgZXhjZWwgZmlsZS4nO3JldHVybiB1LnF1ZXVlLnBvcCgpLGwoWil9fXtsZXQgWj1uZXcgRmlsZVJlYWRlcjtaLm9ubG9hZD1mdW5jdGlvbigpe3ZhciB2ZT1DcihmdW5jdGlvbiooTWUpe2NvbnN0IEhlPXlpZWxkIG8ueHNseFN0YXJ0UmVhZGluZyhNZSx0'@; put 'LGUucGFzc3dvcmQpO2lmKCFIZSlyZXR1cm4gbCgiTm8gd29ya2Jvb2sgZm91bmQuIik7by5wYXJzZUV4Y2VsRmlsZShlLEhlLHUsaSkudGhlbihXZT0+e2EoV2UpfSkuY2F0Y2goV2U9PntsKFdlKX0pfSk7cmV0dXJuIGZ1bmN0aW9uKE1lKXtyZXR1cm4gdmUuYXBwbHkodGhpcyxhcmd1bWVu'@; put 'dHMpfX0oKSxaLnJlYWRBc0FycmF5QnVmZmVyKEUpfX19KX1wYXJzZUV4Y2VsRmlsZShlLHQscixpKXtyZXR1cm4gbmV3IFByb21pc2UoKG8sYSk9PntsZXQgbD0hMSx1PVtdO2NvbnN0IGc9WyJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iLC4uLmUuaGVhZGVyQXJyYXldLEU9dGhp'@; put 'cy5zZWFyY2hEYXRhSW5FeGNlbCh0LGUpO2xldCBPPVtdO2lmKEUuZm91bmQ/KGw9ITAsTz1FLmZvdW5kLmFycmF5RGF0YSxFLmZvdW5kLmhlYWRlcnMuaW5jbHVkZXMoIl9fX19fZGVsZXRlX190aGlzX19yZWNvcmRfX19fXyIpfHwoTz1PLm1hcCh2ZT0+KHZlLnVuc2hpZnQoe3Y6IiJ9KSx2'@; put 'ZSkpKSxpJiZpKGBTaGVldDogJHtFLmZvdW5kLnNoZWV0TmFtZX1cblJhbmdlOiAke0UuZm91bmQuc3RhcnRBZGRyZXNzfToke0UuZm91bmQuZW5kQWRkcmVzc31gKSk6dT1FLm1pc3Npbmd8fFtdLHUubGVuZ3RoPjApe2xldCB2ZT11Lm1hcChNZT0+YFNoZWV0OiAke01lLnNoZWV0TmFtZX0u'@; put 'XG5NaXNzaW5nIGNvbHVtbnM6ICR7TWUubWlzc2luZ0hlYWRlcnMuam9pbigiLCIpfWApLmpvaW4oIlxuXG4iKTtyZXR1cm4gci5xdWV1ZS5wb3AoKSxhKHZlKX1pZigwPT09Ty5sZW5ndGh8fDA9PT1PWzBdLmxlbmd0aCl7bGV0IHZlPSJObyByZWxldmFudCBkYXRhIGZvdW5kIGluIEZpbGUg'@; put 'ISI7cmV0dXJuIHIucXVldWUucG9wKCksYSh2ZSl9aWYoKGUuZGF0ZVRpbWVIZWFkZXJzLmxlbmd0aD4wfHxlLmRhdGVIZWFkZXJzLmxlbmd0aD4wfHxlLnRpbWVIZWFkZXJzLmxlbmd0aD4wKSYmKE89dGhpcy51cGRhdGVEYXRlVGltZUNvbHMoZyxPLGUpKSxlLnhsUnVsZXMubGVuZ3RoPjAm'@; put 'JihPPXRoaXMudXBkYXRlWExSdWxlQ29scyhnLE8sZSkpLCFsKXtsZXQgdmU9IiI7cmV0dXJuIHZlPTA9PT11Lmxlbmd0aD8iTm8gcmVsZXZhbnQgZGF0YSBmb3VuZCBpbiBGaWxlICEiOnUubWFwKE1lPT5gU2hlZXQ6ICR7TWUuc2hlZXROYW1lfS5cbk1pc3NpbmcgY29sdW1uczogJHtNZS5t'@; put 'aXNzaW5nSGVhZGVycy5qb2luKCIsIil9YCkuam9pbigiXG5cbiIpLHIucXVldWUucG9wKCksYSh2ZSl9e2UuaGVhZGVyU2hvdz1nLE89Ty5tYXAoQ3Q9PkN0Lm1hcChBdD0+Im4iPT09QXQudHx8QXQudz9BdC52OiJzdHJpbmciPT10eXBlb2YgQXQudj9BdC52LnRyaW0oKTpBdC52KSksTz1P'@; put 'Lm1hcChDdD0+Q3QubWFwKChBdCxLdCk9PnshQXQmJjAhPT1BdCYmKEF0PSIiKTtjb25zdCBxdD1lLmhlYWRlclNob3dbS3RdO3JldHVybiJudW1lcmljIj09PWUuZGNWYWxpZGF0b3I/LmdldFJ1bGUocXQpPy50eXBlJiYoMCx5NC5pc1NwZWNpYWxNaXNzaW5nKShBdCkmJiFBdC5pbmNsdWRl'@; put 'cygiLiIpJiYoQXQ9Ii4iK0F0KSxBdH0pKTtjb25zdCB2ZT1PLnNsaWNlKDAsdGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQpO2xldCBXZSxNZT1pMC51dGlscy5qc29uX3RvX3NoZWV0KHZlLHtza2lwSGVhZGVyOiEwfSksSGU9aTAudXRpbHMuc2hlZXRfdG9fY3N2'@; put 'KE1lKTtpZihIZT1nLmpvaW4oIiwiKSsiXG4iK0hlLCJXTEFUSU4xIj09PWUuZW5jb2Rpbmcpe2xldCBDdD1UWmUuZGVjb2RlKEVubi5CdWZmZXIuZnJvbShIZSksIkNQLTEyNTIiKTtXZT1uZXcgQmxvYihbQ3RdLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSl9ZWxzZSBXZT1uZXcgQmxvYihb'@; put 'SGVdLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSk7bGV0IGF0PVVtZShXZSxlLmZpbGUubmFtZSsiLmNzdiIpO3IuYWRkVG9RdWV1ZShbYXRdKX1pZigwPT09Ty5sZW5ndGgpcmV0dXJuIGEoYFRhYmxlIGluIHRoZSBmaWxlIGlzIGVtcHR5LiBEYXRhIGZvdW5kIG9uIHNoZWV0OiAke0UuZm91'@; put 'bmQ/LnNoZWV0TmFtZXx8IiJ9YCk7aWYoIUUuZm91bmQpcmV0dXJuIGEoIk5vIHJlbGV2YW50IGRhdGEgZm91bmQuICdmb3VuZCcgb2JqZWN0IGlzIGVtcHR5LCB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkLiIpO2NvbnN0IFo9RS5mb3VuZC5zdGFydEFkZHJlc3N8fCIiLGVlPUUuZm91bmQu'@; put 'ZW5kQWRkcmVzc3x8IiI7cmV0dXJuIG8oe3VwbG9hZGVyOnIsZGF0YTpPLHJhbmdlU2hlZXRSZXM6e2ZvdW5kOiEhRS5mb3VuZCxzaGVldE5hbWU6RS5mb3VuZC5zaGVldE5hbWUscmFuZ2VTdGFydEFkZHJlc3M6WixyYW5nZUVuZEFkZHJlc3M6ZWUscmFuZ2VBZGRyZXNzOmAke1p9OiR7ZWV9'@; put 'YCxtaXNzaW5nSGVhZGVyczp1fSxoZWFkZXJTaG93OmUuaGVhZGVyU2hvd30pfSl9cGFyc2VDc3ZGaWxlKGUsdCxyKXtyZXR1cm4gbmV3IFByb21pc2UoKGksbyk9PntpZighdGhpcy5saWNlbmNlU3RhdGUudmFsdWUuZmlsZVVwbG9hZClyZXR1cm4gdC5xdWV1ZS5wb3AoKSxvKCJGaWxlIHVw'@; put 'bG9hZHMgYXJlIG5vdCBlbmFibGVkIGZvciB0aGlzIGxpY2VuY2UuIFBsZWFzZSBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKTtpZigiV0xBVElOMSIhPT1lLmVuY29kaW5nKXJldHVybiBpKHt1cGxvYWRlcjp0fSk7Y29uc3QgYT1uZXcgRmlsZVJlYWRlcjthLm9ubG9hZD1s'@; put 'PT57aWYoIWwudGFyZ2V0Py5yZXN1bHQpcmV0dXJuIGkoe3VwbG9hZGVyOnR9KTtjb25zdCBnPVRaZS5lbmNvZGUobC50YXJnZXQucmVzdWx0LCJDUC0xMjUyIiksRT1uZXcgQmxvYihbZ10se3R5cGU6cn0pLE89VW1lKEUsZS5maWxlLm5hbWUpO3JldHVybiB0LnF1ZXVlLnBvcCgpLHQuYWRk'@; put 'VG9RdWV1ZShbT10pLGkoe3VwbG9hZGVyOnR9KX0sYS5yZWFkQXNUZXh0KGUuZmlsZSl9KX1ieXRlc1RvTUIoZSl7cmV0dXJuIHBhcnNlRmxvYXQoKGUvMTA0ODU3NikudG9GaXhlZCgyKSl9eHNseFN0YXJ0UmVhZGluZyhlLHQscil7dmFyIGk9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVu'@; put 'Y3Rpb24oKXt2YXIgbz1DcihmdW5jdGlvbiooYSxsKXtjb25zdCB1PWkudG9Cc3RyKGUudGFyZ2V0LnJlc3VsdCk7bGV0IGcsRT0hMTtjb25zdCBPPXt0eXBlOiJiaW5hcnkiLGNlbGxEYXRlczohMSxjZWxsRm9ybXVsYTohMCxjZWxsU3R5bGVzOiEwLGNlbGxORjohMSxjZWxsVGV4dDohMSxw'@; put 'YXNzd29yZDpyfTt0cnl7Zz15aWVsZCBpLnhsc3hSZWFkKHUsey4uLk99KX1jYXRjaChaKXtpZighWi5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoInBhc3N3b3JkIikpcmV0dXJuIGwoIkVycm9yIHJlYWRpbmcgdGhlIGZpbGUiKTt7RT0hMDtsZXQgZWU9ITE7Zm9yKDtFOyl7Y29u'@; put 'c3QgdmU9eWllbGQgdCh7ZXJyb3I6ZWV9KTtpZih2ZSl0cnl7Zz15aWVsZCBpLnhsc3hSZWFkKHUsey4uLk8scGFzc3dvcmQ6dmV9KSxFPSExLGVlPSExfWNhdGNoKE1lKXtlZT0hMCxNZS5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoInBhc3N3b3JkIil8fChFPSExKX1lbHNlIEU9'@; put 'ITF9fX1yZXR1cm4gZz9hKGcpOmwoIkZhaWxlZCB0byBwYXJzZSBhIHdvcmtib29rIil9KTtyZXR1cm4gZnVuY3Rpb24oYSxsKXtyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKX14bHN4UmVhZChlLHQpe3JldHVybiBuZXcgUHJvbWlzZSgocixpKT0+KHQmJnQucGFzc3dvcmQm'@; put 'JmNvbnNvbGUuaW5mbygiTm90IHVzaW5nIHdvcmtlciB0byBwYXJzZSB0aGUgWExTWCAtIGhhcyBwYXNzd29yZCIpLHIoaTAucmVhZChlLHQpKSkpfXNlYXJjaERhdGFJbkV4Y2VsKGUsdCl7bGV0IHIsaSxvLGEsbD0iIix1PVtdLEU9WyJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18i'@; put 'LC4uLnQuaGVhZGVyQXJyYXldLm1hcChaPT5aLnRvTG93ZXJDYXNlKCkpLE89RS5yZWR1Y2UoKFosZWUpPT4oWltlZV09LTEsWikse30pO2ZvcihsZXQgWiBvZiBlLlNoZWV0TmFtZXMpe3I9dm9pZCAwLGk9dm9pZCAwLE89RS5yZWR1Y2UoKHF0LGduKT0+KHF0W2duXT0tMSxxdCkse30pO2xl'@; put 'dCBlZT1bXTtsPVo7Y29uc3QgdmU9ZS5TaGVldHNbbF07aWYoT2JqZWN0LmtleXModmUpLmZvckVhY2gocXQ9Pntjb25zdCBnbj12ZVtxdF0udjtpZihnbiYmInN0cmluZyI9PXR5cGVvZiBnbil7Y29uc3QgVG49Z24udHJpbSgpLnRvTG93ZXJDYXNlKCk7RS5pbmRleE9mKFRuKT4tMSYmKE9b'@; put 'VG5dPXF0LHJ8fChyPXF0KSxpPXF0KX19KSwtMT09PU8uX19fX19kZWxldGVfX3RoaXNfX3JlY29yZF9fX19fJiZkZWxldGUgTy5fX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18sZWU9T2JqZWN0LmtleXMoTykuZmlsdGVyKHF0PT4tMT09PU9bcXRdKSxlZS5sZW5ndGg+MCl7dS5wdXNo'@; put 'KHtzaGVldE5hbWU6bCxtaXNzaW5nSGVhZGVyczplZS5tYXAocXQ9PnF0LnRvVXBwZXJDYXNlKCkpfSk7Y29udGludWV9Y29uc3QgTWU9T2JqZWN0LmtleXMoTyk7bGV0IGF0LEhlPVtdLFdlPVtdO01lLnNvcnQoKHF0LGduKT0+e2NvbnN0IFRuPXQuaGVhZGVyUGtzLmluY2x1ZGVzKHF0KT8x'@; put 'OjA7cmV0dXJuKHQuaGVhZGVyUGtzLmluY2x1ZGVzKGduKT8xOjApLVRufSkuZm9yRWFjaChxdD0+e2NvbnN0IGduPU9bcXRdLFRuPWduLm1hdGNoKC9cRCsvKSxDbj1nbi5tYXRjaCgvXGQrLykscXI9KFRuP1RuWzBdOi0xKXx8LTEsVHI9cGFyc2VJbnQoKENuP0NuWzBdOi0xKXx8LTEpKzE7'@; put 'bGV0IHJpPTA7aWYoYXQpZm9yKGxldCBmbj1Ucjtmbjw9YXQ7Zm4rKyl7Y29uc3QgQW49dmVbYCR7cXJ9JHtmbn1gXTtpZih0LmhlYWRlclBrcy5pbmNsdWRlcyhxdCkmJih2b2lkIDA9PT1Bbnx8dm9pZCAwPT09QW4udikpe2F0PWZuO2JyZWFrfUhlW3JpXXx8SGUucHVzaCh7fSksQW4mJihI'@; put 'ZVtyaV1bcXRdPSJzdHJpbmciPT10eXBlb2YgQW4udj9Bbi52LnRyaW0oKTpBbi52KSxXZVtyaV18fFdlLnB1c2goW10pLFdlW3JpXS5wdXNoKEFuPz97djoiIn0pLHJpKyt9ZWxzZXtsZXQgZm49VHI7Zm9yKDt2b2lkIDA9PT1hdDspe2NvbnN0IHlyPWAke3FyfSR7Zm59YCxBbj12ZVt5cl07'@; put 'aWYoIUFufHx2b2lkIDA9PT1Bbi52KXthdD1mbi0xO2JyZWFrfUhlW3JpXXx8SGUucHVzaCh7fSksSGVbcmldW3F0XT0ibiI9PT12ZVt5cl0udD92ZVt5cl0udjp2ZVt5cl0udz92ZVt5cl0udzoic3RyaW5nIj09dHlwZW9mIHZlW3lyXS52P3ZlW3lyXS52LnRyaW0oKTp2ZVt5cl0udixXZVty'@; put 'aV18fFdlLnB1c2goW10pLFdlW3JpXS5wdXNoKEFuPz97djoiIn0pLGZuKysscmkrK319aWYociYmaSl7Y29uc3QgZm49aS5tYXRjaCgvXEQrLyk7bz1yLGE9YCR7Zm59JHthdH1gfX0pO2NvbnN0IEF0PVtdO2xldCBLdDtyZXR1cm4gSGUuZm9yRWFjaCgocXQsZ24pPT57bGV0IFRuPSExO3Qu'@; put 'aGVhZGVyUGtzLmZvckVhY2goQ249Pnt2b2lkIDA9PT1xdFtDbi50b0xvd2VyQ2FzZSgpXSYmKFRuPSEwKX0pLFRuJiYoQXQucHVzaChnbiksS3R8fChLdD1nbikpfSksS3Q/KEhlLnNwbGljZShLdCwxLzApLFdlLnNwbGljZShLdCwxLzApKTpBdC5zb3J0KChxdCxnbik9PmduLXF0KS5mb3JF'@; put 'YWNoKHF0PT57SGUuc3BsaWNlKHF0LDEpLFdlLnNwbGljZShxdCwxKX0pLFdlLmxlbmd0aD97Zm91bmQ6e2RhdGE6SGUsYXJyYXlEYXRhOldlLHNoZWV0TmFtZTpsLHN0YXJ0QWRkcmVzczpvLGVuZEFkZHJlc3M6YSxoZWFkZXJzOk1lfX06e319cmV0dXJue21pc3Npbmc6dX19dXBkYXRlRGF0'@; put 'ZVRpbWVDb2xzKGUsdCxyKXtpZihyLmRhdGVIZWFkZXJzLmxlbmd0aD4wKXtjb25zdCBpPVtdO3IuZGF0ZUhlYWRlcnMuZm9yRWFjaChvPT57LTEhPT1lLmluZGV4T2YobykmJmkucHVzaChlLmluZGV4T2YobykpfSksdC5mb3JFYWNoKG89PntpLmZvckVhY2goYT0+e2NvbnN0IGw9b1thXTtp'@; put 'ZihsJiZudWxsIT1sLnYpe2lmKGptZShsLnYpKXtjb25zdCB1PUhtZShOdW1iZXIobC52KSk7bC52PXUuZ2V0RnVsbFllYXIoKSsiLSIrKCIwIisodS5nZXRNb250aCgpKzEpKS5zbGljZSgtMikrIi0iKygiMCIrdS5nZXREYXRlKCkpLnNsaWNlKC0yKX1lbHNlIGlmKGwmJmwudiYmLTE9PT1s'@; put 'LnYudG9TdHJpbmcoKS5pbmRleE9mKCI6Iikpe2NvbnN0IHU9bmV3IERhdGUobC52KTsiSW52YWxpZCBEYXRlIiE9PXUudG9VVENTdHJpbmcoKSYmKGwudj1CbWUodSkpfW9bYV09bH19KX0pfWlmKHIudGltZUhlYWRlcnMubGVuZ3RoPjApe2xldCBpPVtdO3IudGltZUhlYWRlcnMuZm9yRWFj'@; put 'aChvPT57LTEhPT1lLmluZGV4T2YobykmJmkucHVzaChlLmluZGV4T2YobykpfSksdC5mb3JFYWNoKG89PntpLmZvckVhY2goYT0+e2NvbnN0IGw9b1thXTtpZihsJiZudWxsIT1sLnYpe2lmKGptZShsLnYpfHxNWmUobC52KXx8InN0cmluZyI9PXR5cGVvZiBsLnYmJmwudi5pbmNsdWRlcygi'@; put 'RS0iKSl7Y29uc3QgdT1IbWUoTnVtYmVyKGwudikpO2wudj1FWmUodSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgbC52JiYobC52PShuPT57Y29uc3QgZT1uLm1hdGNoKC9eKFxkezEsMn0pOihcZHsyfSkoPzo6KFxkezJ9KSk/JC8pO2lmKCFlKXJldHVybiBuO2NvbnN0Wyx0LHIsaV09ZTtyZXR1'@; put 'cm5gJHt0LnBhZFN0YXJ0KDIsIjAiKX06JHtyfToke2k/PyIwMCJ9YH0pKGwudikpO29bYV09bH19KX0pfWlmKHIuZGF0ZVRpbWVIZWFkZXJzLmxlbmd0aD4wKXtsZXQgaT1bXTtyLmRhdGVUaW1lSGVhZGVycy5mb3JFYWNoKG89PnstMSE9PWUuaW5kZXhPZihvKSYmaS5wdXNoKGUuaW5kZXhP'@; put 'ZihvKSl9KSx0LmZvckVhY2gobz0+e2kuZm9yRWFjaChhPT57Y29uc3QgbD1vW2FdO2lmKGwmJm51bGwhPWwudil7aWYoam1lKGwudil8fE1aZShsLnYpKXtjb25zdCB1PUhtZShOdW1iZXIobC52KSk7bC52PUJtZSh1KSsiICIrRVplKHUpfWVsc2V7aWYoLTE9PT1sLnYuaW5kZXhPZigiICIp'@; put 'JiYtMSE9PWwudi5pbmRleE9mKCI6Iikpe2xldCBnPWwudi5zdWJzdHJpbmcoMCxsLnYuaW5kZXhPZigiOiIpKTtnPWcrIiAiK2wudi5zdWJzdHJpbmcobC52LmluZGV4T2YoIjoiKSsxKSxsLnY9Z31jb25zdCB1PW5ldyBEYXRlKGwudik7IkludmFsaWQgRGF0ZSIhPT11LnRvVVRDU3RyaW5n'@; put 'KCkmJihsLnY9Qm1lKHUpKyIgIisobj0+e2xldCBlPSgiMCIrbi5nZXRIb3VycygpKS5zbGljZSgtMikrIjoiO3JldHVybiBlPWUrKCIwIituLmdldE1pbnV0ZXMoKSkuc2xpY2UoLTIpKyI6IixlKz0oIjAiK24uZ2V0U2Vjb25kcygpKS5zbGljZSgtMiksZX0pKHUpKX1vW2FdPWx9fSl9KX1y'@; put 'ZXR1cm4gdH11cGRhdGVYTFJ1bGVDb2xzKGUsdCxyKXtpZihyLnhsUnVsZXMubGVuZ3RoPjApe2NvbnN0IGk9W107ci54bFJ1bGVzLmZvckVhY2gobz0+ey0xIT09ZS5pbmRleE9mKG8uWExfQ09MVU1OKSYmKG8uaW5kZXg9ZS5pbmRleE9mKG8uWExfQ09MVU1OKSxpLnB1c2gobykpfSksdC5m'@; put 'b3JFYWNoKG89PntpLmZvckVhY2goYT0+e2NvbnN0IGw9b1thLmluZGV4XTtsJiYoIkZPUk1VTEEiPT09YS5YTF9SVUxFJiYiZiJpbiBsJiYoIm4iPT09bC50P2wudj0iPSIrbC5mOmwudz0iPSIrbC5mKSxvW2EuaW5kZXhdPWwpfSl9KX1yZXR1cm4gdH10b0JzdHIoZSl7bGV0IHQ9bmV3IFVp'@; put 'bnQ4QXJyYXkoZSkscj0iIixpPXQuYnl0ZUxlbmd0aDtmb3IobGV0IG89MDtvPGk7bysrKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUodFtvXSk7cmV0dXJuIHJ9fWxldCBBWmU9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyl7dGhpcy5leGNlbFBhc3N3b3JkTW9kYWxTZXJ2'@; put 'aWNlPXIsdGhpcy5ldmVudFNlcnZpY2U9aSx0aGlzLmxpY2VuY2VTZXJ2aWNlPW8sdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGUsdGhpcy5wcm9tcHRFeGNlbFBhc3N3b3JkPWE9Pm5ldyBQcm9taXNlKChsLHUpPT57dGhpcy5leGNlbFBhc3N3b3Jk'@; put 'TW9kYWxTZXJ2aWNlLm9wZW4oYSkuc3Vic2NyaWJlKGc9PntsKGcucGFzc3dvcmQpfSl9KX1wYXJzZUV4Y2VsRmlsZShyLGksbyl7cmV0dXJuIG5ldyB4WmUoe2xpY2VuY2VTdGF0ZTp0aGlzLmxpY2VuY2VTdGF0ZX0pLnBhcnNlU3ByZWFkc2hlZXRGaWxlKHIsdGhpcy5wcm9tcHRFeGNlbFBh'@; put 'c3N3b3JkLGksbyl9eGxzeFJlYWRGaWxlKHIpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxvKT0+e2NvbnN0IGE9bmV3IHhaZSh7bGljZW5jZVN0YXRlOnRoaXMubGljZW5jZVN0YXRlfSk7bGV0IGw9bmV3IEZpbGVSZWFkZXI7bC5vbmxvYWQ9dT0+e2EueHNseFN0YXJ0UmVhZGluZyh1LHRoaXMu'@; put 'cHJvbXB0RXhjZWxQYXNzd29yZCkudGhlbihnPT57aShnKX0pLmNhdGNoKGc9PntvKGcpfSl9LGwucmVhZEFzQXJyYXlCdWZmZXIocil9KX1wYXJzZUV4Y2VsU2hlZXROYW1lcyhyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKG8sYSk9Pntj'@; put 'b25zdCBsPW5ldyBGaWxlUmVhZGVyO2lmKCFyKXJldHVybiBjb25zb2xlLndhcm4oImZpbGUgaXMgbWlzc2luZyIpLG8oe3NoZWV0TmFtZXM6W119KTtsLm9ubG9hZD1mdW5jdGlvbigpe3ZhciB1PUNyKGZ1bmN0aW9uKihnKXtpZighZz8udGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUud2Fy'@; put 'bigiRmlsZSByZWFkZXIgZXZlbnQudGFyZ2V0IGlzIG1pc3NpbmciKTtsZXQgRSxaLE89ITE7Y29uc3QgZWU9Zy50YXJnZXQucmVzdWx0O3RyeXtFPWkwLnJlYWQoZWUse2Jvb2tTaGVldHM6ITAsdHlwZToiYmluYXJ5In0pfWNhdGNoKHZlKXtpZighdmUubWVzc2FnZS50b0xvd2VyQ2FzZSgp'@; put 'LmluY2x1ZGVzKCJwYXNzd29yZCIpKXJldHVybiBhKCJFcnJvciByZWFkaW5nIHRoZSBmaWxlIik7e089ITA7bGV0IE1lPSExO2Zvcig7Tzspe2lmKFo9eWllbGQgaS5wcm9tcHRFeGNlbFBhc3N3b3JkKHtlcnJvcjpNZX0pLCFaKXJldHVybiBPPSExLGEoIk5vIHBhc3N3b3JkIHByb3ZpZGVk'@; put 'Iik7dHJ5e0U9aTAucmVhZChlZSx7Ym9va1NoZWV0czohMCx0eXBlOiJiaW5hcnkiLHBhc3N3b3JkOlp9KSxPPSExLE1lPSExfWNhdGNoKEhlKXtNZT0hMCxIZS5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoInBhc3N3b3JkIil8fChPPSExKX1pZighWilyZXR1cm4gYSgiSW52YWxp'@; put 'ZCBwYXNzd29yZCwgZmFpbGVkIHRvIGRlY3J5cHQgdGhlIGZpbGUiKX19fWlmKCFFKXJldHVybiBhKCJFcnJvciBwYXJzaW5nIHRoZSB3b3JrYm9vayIpO3RyeXtyZXR1cm4gbyh7c2hlZXROYW1lczpFLlNoZWV0TmFtZXMscGFzc3dvcmQ6Wn0pfWNhdGNoKHZlKXtjb25zb2xlLmVycm9yKHZl'@; put 'KX19KTtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIHUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxsLm9uZXJyb3I9ZnVuY3Rpb24odSl7Y29uc29sZS5sb2codSl9LGwucmVhZEFzQmluYXJ5U3RyaW5nKHIpfSl9KSgpfWJ5dGVzVG9NQihyKXtyZXR1cm4gcGFyc2VGbG9hdCgoci8xMDQ4'@; put 'NTc2KS50b0ZpeGVkKDIpKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKShvcih2VGUpLG9yKHVkKSxvcihGMikpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290'@; put 'In0pKX1yZXR1cm4gbigpLGV9KSgpLE1ubj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7dGhpcy5yZXN1bHROYW1lPW51bGwsdGhpcy5wYXJlbnRPcmlnaW49bnVsbCx0aGlzLmZpbHRlclNpZ25hdHVyZT1udWxsLHRoaXMudmlzaWJsZUNvbHVtbnM9bnVsbCx0aGlzLmVhcmx5'@; put 'RHJhaW5lZD0hMX1pc1RydXN0ZWRTb3VyY2Uocil7cmV0dXJuIHdpbmRvdy5wYXJlbnQhPT13aW5kb3cmJnIuc291cmNlPT09d2luZG93LnBhcmVudHx8ISFyLm9yaWdpbiYmci5vcmlnaW49PT13aW5kb3cubG9jYXRpb24ub3JpZ2lufW9uRGF0YShyKXtjb25zdCBpPW89PntpZighdGhpcy5p'@; put 'c1RydXN0ZWRTb3VyY2UobykpcmV0dXJuO2NvbnN0IGE9dGhpcy5wYXJzZU1lc3NhZ2Uobyk7YSYmKHRoaXMucmVzdWx0TmFtZT1hLnJlc3VsdE5hbWUsby5vcmlnaW4mJih0aGlzLnBhcmVudE9yaWdpbj1vLm9yaWdpbikscihhKSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi'@; put 'bWVzc2FnZSIsaSwhMSksdGhpcy5yZXBsYXlFYXJseU1lc3NhZ2VzKHIpLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSwhMSl9bGF0ZXN0TWVzc2FnZSgpe2NvbnN0IHI9d2luZG93Ll9fdmFMYXN0TWVzc2FnZTtyZXR1cm4gcj90aGlzLnBhcnNlRGF0YShyLmRh'@; put 'dGEpOm51bGx9cmVwbGF5RWFybHlNZXNzYWdlcyhyKXtpZih3aW5kb3cucGFyZW50PT09d2luZG93fHx0aGlzLmVhcmx5RHJhaW5lZClyZXR1cm47dGhpcy5lYXJseURyYWluZWQ9ITA7Y29uc3QgaT13aW5kb3cuX192YUxhc3RNZXNzYWdlO2lmKCFpfHwic3RyaW5nIiE9dHlwZW9mIGkub3Jp'@; put 'Z2lufHwhdGhpcy5pc1RydXN0ZWRFYXJseU9yaWdpbihpLm9yaWdpbikpcmV0dXJuO2NvbnN0IG89dGhpcy5wYXJzZURhdGEoaS5kYXRhKTtvJiYodGhpcy5yZXN1bHROYW1lPW8ucmVzdWx0TmFtZSx0aGlzLnBhcmVudE9yaWdpbj1pLm9yaWdpbixyKG8pKX1pc1RydXN0ZWRFYXJseU9yaWdp'@; put 'bihyKXtpZihyPT09d2luZG93LmxvY2F0aW9uLm9yaWdpbilyZXR1cm4hMDtpZighZG9jdW1lbnQucmVmZXJyZXIpcmV0dXJuITE7dHJ5e3JldHVybiBuZXcgVVJMKGRvY3VtZW50LnJlZmVycmVyKS5vcmlnaW49PT1yfWNhdGNoe3JldHVybiExfX1wYXJzZU1lc3NhZ2Uocil7cmV0dXJuIHRo'@; put 'aXMucGFyc2VEYXRhKHImJnIuZGF0YSl9cGFyc2VEYXRhKHIpe3JldHVybiByJiYib2JqZWN0Ij09dHlwZW9mIHImJiJzdHJpbmciPT10eXBlb2Ygci5yZXN1bHROYW1lJiZBcnJheS5pc0FycmF5KHIuY29sdW1ucykmJkFycmF5LmlzQXJyYXkoci5kYXRhKT97dmVyc2lvbjpyLnZlcnNpb24s'@; put 'cmVzdWx0TmFtZTpyLnJlc3VsdE5hbWUscm93Q291bnQ6ci5yb3dDb3VudCxhdmFpbGFibGVSb3dDb3VudDpyLmF2YWlsYWJsZVJvd0NvdW50LGRhdGE6ci5kYXRhLGNvbHVtbnM6ci5jb2x1bW5zLHBhcmFtZXRlcnM6QXJyYXkuaXNBcnJheShyLnBhcmFtZXRlcnMpP3IucGFyYW1ldGVyczpb'@; put 'XX06bnVsbH1kYXRhQ29sdW1ucyhyKXtyZXR1cm4gci5jb2x1bW5zLm1hcCgoaSxvKT0+KHtjb2x1bW46aSxpbmRleDpvfSkpLmZpbHRlcigoe2NvbHVtbjppfSk9PiJicnVzaCIhPT1pLnVzYWdlKX1zZW5kU2VsZWN0aW9uKHIpe251bGwhPT10aGlzLnJlc3VsdE5hbWUmJnRoaXMuc2VuZE1l'@; put 'c3NhZ2Uoe3Jlc3VsdE5hbWU6dGhpcy5yZXN1bHROYW1lLHNlbGVjdGlvbnM6ci5tYXAoaT0+KHtyb3c6aX0pKX0pfXNlbmRJbnN0cnVjdGlvbmFsTWVzc2FnZShyKXtudWxsIT09dGhpcy5yZXN1bHROYW1lJiZ0aGlzLnNlbmRNZXNzYWdlKHtyZXN1bHROYW1lOnRoaXMucmVzdWx0TmFtZSxt'@; put 'ZXNzYWdlOnJ9KX1zZW5kTWVzc2FnZShyKXtjb25zdCBpPXRoaXMucGFyZW50T3JpZ2lufHwod2luZG93LmxvY2F0aW9uIT09d2luZG93LnBhcmVudC5sb2NhdGlvbj9kb2N1bWVudC5yZWZlcnJlcjpkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTtpJiZ3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdl'@; put 'KHIsaSl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5OmUuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSkpfXJldHVybiBuKCksZX0pKCksVG5uPSgoKT0+e3Zh'@; put 'ciBuO2NsYXNzIGV7Y29uc3RydWN0b3Iocil7dGhpcy5oZWxwZXJTZXJ2aWNlPXJ9YnVpbGRMYWJlbFRvVmFyTWFwKHIsaSl7Y29uc3Qgbz1uZXcgTWFwO2ZvcihsZXQgYT0xO2E8ci5sZW5ndGg7YSsrKXtjb25zdCBsPXJbYV0/LmRhdGE7bCYmKG8uc2V0KChpW2FdPz9sKS50b1N0cmluZygp'@; put 'LnRyaW0oKS50b0xvd2VyQ2FzZSgpLGwpLG8uc2V0KGwudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKSxsKSl9cmV0dXJuIG99YnVpbGRDbGF1c2VzKHIsaSxvKXtjb25zdCBhPVtdO2Zvcihjb25zdCBsIG9mIHIucGFyYW1ldGVyc3x8W10pe2lmKCFsfHxudWxsPT1sLnZhbHVlKWNv'@; put 'bnRpbnVlO2NvbnN0IHU9KGwubGFiZWw/P2wubmFtZT8/IiIpLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCksZz1pLmdldCh1KTtpZighZyljb250aW51ZTtjb25zdCBFPXRoaXMuZmluZENvbChnLG8pLE89dGhpcy5jb2x1bW5LaW5kKEUpLFo9dGhpcy5kYXRlT3JkZXJGcm9tRm10'@; put 'KEU/LkZNVE5BTUV8fEU/LkZPUk1BVCksdmU9KEFycmF5LmlzQXJyYXkobC52YWx1ZSk/bC52YWx1ZTpbbC52YWx1ZV0pLmZpbHRlcihNZT0+bnVsbCE9TWUmJiIiIT09TWUpLm1hcChNZT0+dGhpcy5mb3JtYXRWYWx1ZUJ5S2luZChNZSxPLFopKS5maWx0ZXIoTWU9Pm51bGwhPT1NZSk7MCE9'@; put 'PXZlLmxlbmd0aCYmYS5wdXNoKHRoaXMuY2xhdXNlKGcsdmUpKX1yZXR1cm4gYX1idWlsZEluaXRpYWxDbGF1c2VzKHIpe2NvbnN0IGk9W107Zm9yKGNvbnN0IG8gb2Ygci5wYXJhbWV0ZXJzfHxbXSl7aWYoIW98fG51bGw9PW8udmFsdWUpY29udGludWU7Y29uc3QgYT0oby5sYWJlbD8/by5u'@; put 'YW1lPz8iIikudG9TdHJpbmcoKS50cmltKCk7aWYoIWEpY29udGludWU7Y29uc3QgdT0oQXJyYXkuaXNBcnJheShvLnZhbHVlKT9vLnZhbHVlOltvLnZhbHVlXSkuZmlsdGVyKEU9Pm51bGwhPUUmJiIiIT09RSk7aWYoMD09PXUubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IGc9dS5tYXAoRT0+dGhp'@; put 'cy5mb3JtYXRWYWx1ZUJ5S2luZChFLHRoaXMuaW5mZXJLaW5kRnJvbVZhbHVlKFN0cmluZyhFKS50cmltKCksby5kYXRhVHlwZSkpKS5maWx0ZXIoRT0+bnVsbCE9PUUpOzAhPT1nLmxlbmd0aCYmaS5wdXNoKHRoaXMuY2xhdXNlKGEsZykpfXJldHVybiBpfXNpZ25hdHVyZShyKXtyZXR1cm4g'@; put 'SlNPTi5zdHJpbmdpZnkoci5tYXAoaT0+KHsuLi5pLFZBUklBQkxFX05NOihpLlZBUklBQkxFX05NPz8iIikudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpfSkpKX1jbGF1c2UocixpKXtyZXR1cm57R1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfSUQ6MCxW'@; put 'QVJJQUJMRV9OTTpyLE9QRVJBVE9SX05NOjE9PT1pLmxlbmd0aD8iPSI6IklOIixSQVdfVkFMVUU6MT09PWkubGVuZ3RoP2lbMF06YCgke2kuam9pbigiLCIpfSlgfX1maW5kQ29sKHIsaSl7cmV0dXJuKGl8fFtdKS5maW5kKG89PihvPy5OQU1FPz8iIikudG9TdHJpbmcoKS50b1VwcGVyQ2Fz'@; put 'ZSgpPT09ci50b1VwcGVyQ2FzZSgpKX1jb2x1bW5LaW5kKHIpe2NvbnN0IGk9KHI/LkREVFlQRT8/IiIpLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtyZXR1cm4gaS5pbmNsdWRlcygiREFURVRJTUUiKT8iZGF0ZXRpbWUiOmkuaW5jbHVkZXMoIkRBVEUiKT8iZGF0ZSI6aS5pbmNsdWRlcygi'@; put 'VElNRSIpPyJ0aW1lIjoiTiI9PT1pfHxpLmluY2x1ZGVzKCJOVU1FUklDIil8fCJudW0iPT09KHI/LlRZUEU/PyIiKT8ibnVtZXJpYyI6ImNoYXIifWRhdGVPcmRlckZyb21GbXQocil7Y29uc3QgaT0ocj8/IiIpLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtyZXR1cm4vXk1NRERZWS8udGVz'@; put 'dChpKT8iTURZIjovXihERE1NWVl8RVVSREYpLy50ZXN0KGkpPyJETVkiOi9eKFlZTU1ERHxFODYwMURBfEI4NjAxREEpLy50ZXN0KGkpPyJZTUQiOnZvaWQgMH1pbmZlcktpbmRGcm9tVmFsdWUocixpKXtjb25zdCB1PWAke1N0cmluZy5yYXdgXGR7MSwyfVtBLVphLXpdezN9XGR7Miw0fWB9'@; put 'fCR7U3RyaW5nLnJhd2BcZHs0fVstLy5dXGR7MSwyfVstLy5dXGR7MSwyfWB9fCR7U3RyaW5nLnJhd2BcZHsxLDJ9Wy0vLl1cZHsxLDJ9Wy0vLl1cZHs0fWB9YDtyZXR1cm4gbmV3IFJlZ0V4cChgXig/OiR7dX0pWyBUOl1cXGR7MSwyfTpcXGR7Mn0oOlxcZHsyfSk/JGApLnRlc3Qocik/ImRh'@; put 'dGV0aW1lIjpuZXcgUmVnRXhwKGBeKD86JHt1fSkkYCkudGVzdChyKT8iZGF0ZSI6L15cZHsxLDJ9OlxkezJ9KDpcZHsyfSk/KFwuXGQrKT8kLy50ZXN0KHIpPyJ0aW1lIjoibnVtYmVyIj09PWk/Im51bWVyaWMiOiJjaGFyIn1mb3JtYXRWYWx1ZUJ5S2luZChyLGksbyl7Y29uc3QgYT1TdHJp'@; put 'bmcocikudHJpbSgpO2lmKCIiPT09YSlyZXR1cm4gbnVsbDtzd2l0Y2goaSl7Y2FzZSJudW1lcmljIjp7Y29uc3QgbD1OdW1iZXIoYSk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShsKT9gJHtsfWA6bnVsbH1jYXNlInRpbWUiOntpZih0aGlzLmlzQmFyZU51bWJlcihhKSlyZXR1cm5gJHtOdW1i'@; put 'ZXIoYSl9YDtjb25zdCBsPXRoaXMudGltZVRvU2Vjb25kcyhhKTtyZXR1cm4gbnVsbD09PWw/bnVsbDpgJHtsfWB9Y2FzZSJkYXRlIjp7aWYodGhpcy5pc0JhcmVOdW1iZXIoYSkpcmV0dXJuYCR7TnVtYmVyKGEpfWA7Y29uc3QgbD10aGlzLnBhcnNlRGF0ZShhLG8pO3JldHVybiBsP2Ake3Ro'@; put 'aXMuaGVscGVyU2VydmljZS5jb252ZXJ0SnNEYXRlVG9TYXNEYXRlKGwsImRheXMiKX1gOm51bGx9Y2FzZSJkYXRldGltZSI6e2lmKHRoaXMuaXNCYXJlTnVtYmVyKGEpKXJldHVybmAke051bWJlcihhKX1gO2NvbnN0IGw9dGhpcy5wYXJzZURhdGV0aW1lKGEsbyk7cmV0dXJuIGw/YCR7dGhp'@; put 'cy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRKc0RhdGVUb1Nhc0RhdGUobCwic2Vjb25kcyIpfWA6bnVsbH1kZWZhdWx0OnJldHVybmAnJHthLnJlcGxhY2UoLycvZywiJyciKX0nYH19dGltZVRvU2Vjb25kcyhyKXtpZighL15cZHsxLDJ9OlxkezJ9KDpcZHsyfSk/KFwuXGQrKT8kLy50ZXN0KHIp'@; put 'KXJldHVybiBudWxsO2NvbnN0IGk9ci5zcGxpdCgiLiIpWzBdLnNwbGl0KCI6Iiksbz1OdW1iZXIoaVswXSksYT1OdW1iZXIoaVsxXSksbD0zPT09aS5sZW5ndGg/TnVtYmVyKGlbMl0pOjA7cmV0dXJuW28sYSxsXS5ldmVyeShOdW1iZXIuaXNGaW5pdGUpPzM2MDAqbys2MCphK2w6bnVsbH1w'@; put 'YXJzZURhdGUocixpKXtyZXR1cm4gdGhpcy5wYXJzZU1vbnRoTmFtZURhdGUocik/P3RoaXMucGFyc2VOdW1lcmljRGF0ZShyLGkpfXBhcnNlTW9udGhOYW1lRGF0ZShyKXtjb25zdCBpPS9eKFxkezEsMn0pKFtBLVphLXpdezN9KShcZHsyfXxcZHs0fSkkLy5leGVjKHIpO2lmKCFpKXJldHVy'@; put 'biBudWxsO2NvbnN0WyxvLGEsbF09aSx1PWUuU0FTX01PTlRIUy5pbmRleE9mKGEudG9VcHBlckNhc2UoKSk7cmV0dXJuIHU8MD9udWxsOnRoaXMuYnVpbGREYXRlKHRoaXMuZnVsbFllYXIobCksdSsxLE51bWJlcihvKSl9cGFyc2VOdW1lcmljRGF0ZShyLGkpe2NvbnN0IG89L14oXGR7MSw0'@; put 'fSlbLS8uXShcZHsxLDJ9KVstLy5dKFxkezEsNH0pJC8uZXhlYyhyKTtpZighbylyZXR1cm4gbnVsbDtjb25zdFssYSxsLHVdPW8sRT00PT09dS5sZW5ndGg7aWYoND09PWEubGVuZ3RoKXJldHVybiB0aGlzLmJ1aWxkRGF0ZShOdW1iZXIoYSksTnVtYmVyKGwpLE51bWJlcih1KSk7aWYoIUUp'@; put 'cmV0dXJuIG51bGw7Y29uc3R7ZGF5Ok8sbW9udGg6Wn09dGhpcy5yZXNvbHZlRGF5TW9udGgoTnVtYmVyKGEpLE51bWJlcihsKSxpKTtyZXR1cm4gdGhpcy5idWlsZERhdGUoTnVtYmVyKHUpLFosTyl9cmVzb2x2ZURheU1vbnRoKHIsaSxvKXtyZXR1cm4gcj4xMiYmaTw9MTI/e2RheTpyLG1v'@; put 'bnRoOml9Omk+MTImJnI8PTEyfHwiTURZIj09PW8/e2RheTppLG1vbnRoOnJ9OntkYXk6cixtb250aDppfX1idWlsZERhdGUocixpLG8sYT0wLGw9MCx1PTApe2lmKGk8MXx8aT4xMnx8bzwxfHxvPjMxKXJldHVybiBudWxsO2NvbnN0IGc9bmV3IERhdGUocixpLTEsbyxhLGwsdSwwKTtyZXR1'@; put 'cm4gZy5nZXRGdWxsWWVhcigpIT09cnx8Zy5nZXRNb250aCgpIT09aS0xfHxnLmdldERhdGUoKSE9PW8/bnVsbDpnfXBhcnNlRGF0ZXRpbWUocixpKXtjb25zdCBvPS9eKC4rPylbIFQ6XShcZHsxLDJ9OlxkezJ9KD86OlxkezJ9KT8pJC8uZXhlYyhyKTtpZighbylyZXR1cm4gbnVsbDtjb25z'@; put 'dCBhPXRoaXMucGFyc2VEYXRlKG9bMV0saSk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgbD1vWzJdLnNwbGl0KCI6Iik7cmV0dXJuIGEuc2V0SG91cnMoTnVtYmVyKGxbMF0pLE51bWJlcihsWzFdKSxOdW1iZXIobFsyXXx8MCksMCksYX1pc0JhcmVOdW1iZXIocil7cmV0dXJuL14tP1xkKyhc'@; put 'LlxkKyk/JC8udGVzdChyKSYmTnVtYmVyLmlzRmluaXRlKE51bWJlcihyKSl9ZnVsbFllYXIocil7aWYoND09PXIubGVuZ3RoKXJldHVybiBOdW1iZXIocik7Y29uc3QgaT1OdW1iZXIocik7cmV0dXJuIGk8PTE5PzJlMytpOjE5MDAraX1zdGF0aWMjZT1uPSgpPT4odGhpcy5TQVNfTU9OVEhT'@; put 'PVsiSkFOIiwiRkVCIiwiTUFSIiwiQVBSIiwiTUFZIiwiSlVOIiwiSlVMIiwiQVVHIiwiU0VQIiwiT0NUIiwiTk9WIiwiREVDIl0sdGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKShvcihmaCkpfSx0aGlzLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTpl'@; put 'Llx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IGRLPXZvaWQgMCxBbm49WyJlbi1HQiIsW1siYSIsInAiXSxbImFtIiwicG0iXV0sW1siYW0iLCJwbSJdXSxbWyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sWyJTdW4iLCJNb24iLCJUdWUi'@; put 'LCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sWyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdXSxkSyxbWyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoi'@; put 'LCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSxbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcHQiLCJPY3QiLCJOb3YiLCJEZWMiXSxbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3Vz'@; put 'dCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl1dLGRLLFtbIkIiLCJBIl0sWyJCQyIsIkFEIl0sWyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXV0sMSxbNiwwXSxbImRkL01NL3kiLCJkIE1NTSB5IiwiZCBNTU1NIHkiLCJFRUVFLCBkIE1NTU0geSJd'@; put 'LFsiSEg6bW0iLCJISDptbTpzcyIsIkhIOm1tOnNzIHoiLCJISDptbTpzcyB6enp6Il0sWyJ7MX0sIHswfSIsZEssInsxfSAnYXQnIHswfSIsZEtdLFsiLiIsIiwiLCI7IiwiJSIsIisiLCItIiwiRSIsIlx4ZDciLCJcdTIwMzAiLCJcdTIyMWUiLCJOYU4iLCI6Il0sWyIjLCMjMC4jIyMiLCIj'@; put 'LCMjMCUiLCJceGE0IywjIzAuMDAiLCIjRTAiXSwiR0JQIiwiXHhhMyIsIkJyaXRpc2ggUG91bmQiLHtKUFk6WyJKUFx4YTUiLCJceGE1Il0sVVNEOlsiVVMkIiwiJCJdfSwibHRyIixmdW5jdGlvbiB4bm4obil7Y29uc3QgdD1NYXRoLmZsb29yKE1hdGguYWJzKG4pKSxyPW4udG9TdHJpbmco'@; put 'KS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT10JiYwPT09cj8xOjV9XSxoSz0obixlKT0+ZT9gdmlld2JveGVzLiR7ZX1gOiJob21lIj09PW58fCJlZGl0b3IiPT09bj8iZWRpdG9yIjoidmlldyI9PT1uPyJ2aWV3ZXIiOiIiLGtubj1bImlucHV0Il0sUm5uPVsi'@; put 'KiJdLElubj0obixlKT0+KHsid2lkdGgucHgiOm4sIm1heC1oZWlnaHQucHgiOmV9KTtmdW5jdGlvbiBEbm4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsNiksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxTcigiICIsdC5sb2FkaW5nTW9yZT8iTG9hZGluZy4uLiI6IkxP'@; put 'QUQgTU9SRSIsIiAiKX19bGV0IGtaZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIpe3RoaXMuY2RyPXIsdGhpcy5pbnB1dElkPSIiLHRoaXMucGxhY2Vob2xkZXI9IiIsdGhpcy52YWx1ZT0iIix0aGlzLmRpc2FibGVkPSExLHRoaXMudHlwZT0idGV4dCIsdGhpcy5hdXRvY29t'@; put 'cGxldGU9Im9mZiIsdGhpcy50YWJpbmRleD0iIix0aGlzLmVtaXRPbmx5U2VsZWN0ZWQ9ITEsdGhpcy5lbmFibGVMb2FkTW9yZT0hMSx0aGlzLm9uSW5wdXRLZXlkb3duPW5ldyBLcix0aGlzLm9uSW5wdXRDaGFuZ2U9bmV3IEtyLHRoaXMudmFsdWVDaGFuZ2U9bmV3IEtyLHRoaXMub25Mb2Fk'@; put 'aW5nTW9yZT1uZXcgS3IsdGhpcy5kYXRhbGlzdE9wZW49ITEsdGhpcy5hZnRlck9wZW5Mb2NrRGVsYXk9MTUwLHRoaXMuYWZ0ZXJPcGVuTG9jaz0hMSx0aGlzLmlucHV0Rm9jdXNlZD0hMSx0aGlzLmlucHV0Q2xpZW50UmVjdD17fSx0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMu'@; put 'bG9hZGluZ01vcmU9ITF9bmdPbkluaXQoKXt9bmdBZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuY2FsY3VsYXRlSW5wdXRQb3NpdGlvbigpfSw1MDApfW9uSW5wdXRGaXJlZChyLGksbyl7dGhpcy5vcGVuRGF0YWxpc3QoImNsaWNrIiE9PW8pLHRoaXMudW5zZWxlY3RBbGxP'@; put 'cHRpb25zKCksdGhpcy5maWx0ZXJPcHRpb25zTGlzdCgpLCghdGhpcy5lbWl0T25seVNlbGVjdGVkfHxpKSYmKHRoaXMub25JbnB1dENoYW5nZS5lbWl0KHt0YXJnZXQ6e3ZhbHVlOnRoaXMudmFsdWV9fSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpKX1vbklucHV0Q2xpY2so'@; put 'cil7dGhpcy5vcGVuRGF0YWxpc3QoKX1vcGVuRGF0YWxpc3Qocj0hMCl7dGhpcy5kYXRhbGlzdE9wZW49ITAsciYmKHRoaXMuYWZ0ZXJPcGVuTG9jaz0hMCx0aGlzLmFmdGVyT3BlbkxvY2tEZWxheVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuYWZ0ZXJPcGVuTG9jaz0hMX0sdGhpcy5h'@; put 'ZnRlck9wZW5Mb2NrRGVsYXkpKX1jbG9zZURhdGFsaXN0KCl7Y2xlYXJUaW1lb3V0KHRoaXMuYWZ0ZXJPcGVuTG9ja0RlbGF5VGltZW91dCksdGhpcy5hZnRlck9wZW5Mb2NrPSExLHRoaXMuZGF0YWxpc3RPcGVuPSExfXJlc2V0RGF0YWxpc3RGaWx0ZXIoKXt0aGlzLmZpbHRlck9wdGlvbnNM'@; put 'aXN0KCEwKX1vbklucHV0Rm9jdXNpbihyKXt0aGlzLmlucHV0Rm9jdXNlZD0hMH1vbklucHV0Rm9jdXNvdXQocil7dGhpcy5pbnB1dEZvY3VzZWQ9ITEsdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1vbklucHV0TW91c2VlbnRlcihyKXt0aGlzLmlucHV0Q2xpZW50UmVjdC53aWR0aHx8dGhp'@; put 'cy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9ZmlsdGVyT3B0aW9uc0xpc3Qocil7Y29uc3QgaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbmApO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBhPWlbb107aWYoMD09'@; put 'PXRoaXMudmFsdWUubGVuZ3RoKXthLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpO2NvbnRpbnVlfWlmKHIpe2EuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Y29udGludWV9Y29uc3QgbD1hLmlubmVyVGV4dHx8IiIsdT1hLnZhbHVlfHwiIjsobCt1KT8udG9Mb3dlckNhc2UoKS5pbmNs'@; put 'dWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpP2EuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6YS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19c2V0VG9DbG9zZURhdGFsaXN0KCl7dGhpcy5kYXRhbGlzdENsb3NlVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5wcmV2ZW50RGF0'@; put 'YWxpc3RDbG9zZXx8dGhpcy5hZnRlck9wZW5Mb2NrfHwodGhpcy5jbG9zZURhdGFsaXN0KCksdGhpcy51bnNlbGVjdEFsbE9wdGlvbnMoKSx0aGlzLnJlc2V0RGF0YWxpc3RGaWx0ZXIoKSl9LDEwMCl9Y2FsY3VsYXRlSW5wdXRQb3NpdGlvbigpe2NvbnN0IGk9dGhpcy5pbnB1dEVsZW1lbnQu'@; put 'bmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aS53aWR0aD4wJiZpLmhlaWdodD4wJiYodGhpcy5pbnB1dENsaWVudFJlY3Q9e3dpZHRoOmkud2lkdGgsYm90dG9tOmkuYm90dG9tfSksdGhpcy5pbm5lckhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHR9b25EYXRhTGlzdE1v'@; put 'dXNlRW50ZXIocil7dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZT0hMH1vbkRhdGFMaXN0TW91c2VMZWF2ZShyKXt0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1vbkRhdGFMaXN0U2Nyb2xsKHIpe3RoaXMuc2V0VG9D'@; put 'bG9zZURhdGFsaXN0KCl9b25EYXRhTGlzdENsaWNrKHIpe2NvbnN0IGk9ci50YXJnZXQ7ImxvYWQtbW9yZSIhPT1pLmRhdGFzZXQ/LnR5cGU/Ik9QVElPTiIhPT1pLnRhZ05hbWV8fHRoaXMuc2V0T3B0aW9uVmFsdWUoaS5pbm5lclRleHQsaS52YWx1ZSk6dGhpcy5sb2FkTW9yZSgpfWxvYWRN'@; put 'b3JlKCl7dGhpcy5vbkxvYWRpbmdNb3JlLmVtaXQoe2xvYWRNb3JlRmluaXNoZWQ6cj0+e3RoaXMubG9hZGluZ01vcmU9ITEsdGhpcy5lbmFibGVMb2FkTW9yZT1yfX0pLHRoaXMubG9hZGluZ01vcmU9ITB9c2V0T3B0aW9uVmFsdWUocixpKXsocnx8aSkmJihpfHwoaT1yKSksaSYmKHRoaXMu'@; put 'cHJldmVudERhdGFsaXN0Q2xvc2U9ITEsdGhpcy52YWx1ZT1pLHRoaXMub25JbnB1dEZpcmVkKG51bGwsITAsImNsaWNrIiksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKSl9b25NYWluS2V5ZG93bihyKXtzd2l0Y2goci5rZXkpe2Nhc2UiQXJyb3dVcCI6dGhpcy5nZXRPcHRpb25zTW92ZUZv'@; put 'Y3VzKCJ1cCIpO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjp0aGlzLmdldE9wdGlvbnNNb3ZlRm9jdXMoImRvd24iKTticmVhaztjYXNlIkVudGVyIjp0aGlzLnNlbGVjdEZvY3VzZWRPcHRpb24oKX19b25JbnB1dEtleXVwKHIpe3JldHVybiF0aGlzLmRhdGFsaXN0T3Blbnx8KCJFc2NhcGUiPT09'@; put 'ci5rZXk/KHIuc3RvcFByb3BhZ2F0aW9uKCksci5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnNldFRvQ2xvc2VEYXRhbGlzdCgpLCExKTp2b2lkIDApfXVuc2VsZWN0QWxsT3B0aW9ucygpe2NvbnN0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhp'@; put 'cy5pbnB1dElkfSBvcHRpb25gKTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKylyW2ldLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKX1zZWxlY3RGb2N1c2VkT3B0aW9uKCl7Y29uc3Qgcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlv'@; put 'bi5mb2N1c2VkYCk7ciYmdGhpcy5vbkRhdGFMaXN0Q2xpY2soe3RhcmdldDpyfSksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1nZXRPcHRpb25zTW92ZUZvY3VzKHIpe2NvbnN0IGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb246'@; put 'bm90KC5oaWRkZW4pYCk7bGV0IG89MDtmb3IobGV0IGE9MDthPGkubGVuZ3RoO2ErKyl7Y29uc3QgbD1pW2FdO2lmKGwuY2xhc3NMaXN0LmNvbnRhaW5zKCJmb2N1c2VkIikpe289ImRvd24iPT09cj9hKzE6YS0xLG88MCYmKG89aS5sZW5ndGgtMSksbz5pLmxlbmd0aC0xJiYobz0wKSxsLmNs'@; put 'YXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKTticmVha319aVtvXS5jbGFzc0xpc3QuYWRkKCJmb2N1c2VkIil9b25SZXNpemUocil7dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSko'@; put 'emUoVWwpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWF1dG9jb21wbGV0ZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaSxvKXtpZigxJmkmJldvKGtubiw1KSwyJmkpe2xldCBhO2NpKGE9dWkoKSkmJihvLmlucHV0RWxlbWVudD1hLmZpcnN0KX19LGhvc3RC'@; put 'aW5kaW5nczpmdW5jdGlvbihpLG8pezEmaSYmd3QoInJlc2l6ZSIsZnVuY3Rpb24obCl7cmV0dXJuIG8ub25SZXNpemUobCl9LFFrKX0saW5wdXRzOntpbnB1dElkOiJpbnB1dElkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHZhbHVlOiJ2YWx1ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIix0'@; put 'eXBlOiJ0eXBlIixhdXRvY29tcGxldGU6ImF1dG9jb21wbGV0ZSIsdGFiaW5kZXg6InRhYmluZGV4IixlbWl0T25seVNlbGVjdGVkOiJlbWl0T25seVNlbGVjdGVkIixlbmFibGVMb2FkTW9yZToiZW5hYmxlTG9hZE1vcmUifSxvdXRwdXRzOntvbklucHV0S2V5ZG93bjoib25JbnB1dEtleWRv'@; put 'd24iLG9uSW5wdXRDaGFuZ2U6Im9uSW5wdXRDaGFuZ2UiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSIsb25Mb2FkaW5nTW9yZToib25Mb2FkaW5nTW9yZSJ9LHN0YW5kYWxvbmU6ITEsbmdDb250ZW50U2VsZWN0b3JzOlJubixkZWNsczo5LHZhcnM6MTUsY29uc3RzOltbImlucHV0IiwiIl0s'@; put 'WyJvcHRpb25zIiwiIl0sWzEsImF1dG9jb21wbGV0ZS13cmFwcGVyIiwzLCJrZXlkb3duIl0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsImF1dG9mb2N1cyIsIiIsInRhYmluZGV4IiwiMCIsMSwiaW5wdXQtdmFsIiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2xpY2siLCJtb3Vz'@; put 'ZWVudGVyIiwiZm9jdXMiLCJmb2N1c291dCIsImtleXVwIiwiaWQiLCJwbGFjZWhvbGRlciIsIm5nTW9kZWwiLCJkaXNhYmxlZCJdLFsxLCJvdmVybGF5Il0sWzEsImRhdGFsaXN0IiwzLCJjbGljayIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwic2Nyb2xsIiwibmdTdHlsZSIsImlkIl0s'@; put 'WyJkYXRhLXR5cGUiLCJsb2FkLW1vcmUiLDEsImxvYWQtbW9yZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pe2lmKDEmaSl7Y29uc3QgYT13bigpO2ZvKCksSigwLCJkaXYiLDIpLHd0KCJrZXlkb3duIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vbk1haW5LZXlkb3duKHUpKX0p'@; put 'LEooMSwiaW5wdXQiLDMsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLnZhbHVlLHUpfHwoby52YWx1ZT11KSxYZSh1KX0pLHd0KCJjbGljayIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8ub25JbnB1dENsaWNrKHUpKX0pKCJuZ01vZGVs'@; put 'Q2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vbklucHV0RmlyZWQodSkpfSkoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxYZShvLm9uSW5wdXRNb3VzZWVudGVyKHUpKX0pKCJmb2N1cyIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8ub25J'@; put 'bnB1dEZvY3VzaW4odSkpfSkoImZvY3Vzb3V0IixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vbklucHV0Rm9jdXNvdXQodSkpfSkoImtleXVwIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vbklucHV0S2V5dXAodSkpfSksdGUoKSxJdCgzLCJkaXYiLDQpLEooNCwiZGl2'@; put 'Iiw1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxYZShvLm9uRGF0YUxpc3RDbGljayh1KSl9KSgibW91c2VlbnRlciIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8ub25EYXRhTGlzdE1vdXNlRW50ZXIodSkpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKHUpe3Jl'@; put 'dHVybiBZZShhKSxYZShvLm9uRGF0YUxpc3RNb3VzZUxlYXZlKHUpKX0pKCJzY3JvbGwiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxYZShvLm9uRGF0YUxpc3RTY3JvbGwodSkpfSksSig1LCJkaXYiLG51bGwsMSksV3IoNyksdGUoKSx2dCg4LERubiwyLDEsIm9wdGlvbiIsNiksdGUoKSgp'@; put 'fWlmKDImaSl7Y29uc3QgYT1vbyg2KTtpZSgpLHJ0KCJpZCIsby5pbnB1dElkKSgicGxhY2Vob2xkZXIiLG8ucGxhY2Vob2xkZXIpLGRpKCJuZ01vZGVsIixvLnZhbHVlKSxydCgiZGlzYWJsZWQiLG8uZGlzYWJsZWQpLFJyKCJsaXN0IiwiZGF0YWxpc3RfIitvLmlucHV0SWQpLGllKDIpLHdy'@; put 'KCJoaWRkZW4iLCFvLmRhdGFsaXN0T3BlbiksaWUoKSx3cigiaGlkZGVuIiwhby5kYXRhbGlzdE9wZW4pLHJ0KCJuZ1N0eWxlIixONSgxMixJbm4sby5pbnB1dENsaWVudFJlY3Qud2lkdGgsby5pbm5lckhlaWdodCYmby5pbnB1dENsaWVudFJlY3QuYm90dG9tP28uaW5uZXJIZWlnaHQtby5p'@; put 'bnB1dENsaWVudFJlY3QuYm90dG9tOnZvaWQgMCkpKCJpZCIsImRhdGFsaXN0XyIrby5pbnB1dElkKSxpZSg0KSxfdChhLmNoaWxkcmVuLmxlbmd0aD4wJiZvLmVuYWJsZUxvYWRNb3JlPzg6LTEpfX0sZGVwZW5kZW5jaWVzOltsX2UsWGcsUWcsbHUsb2MsWGxdLGVuY2Fwc3VsYXRpb246Mn0p'@; put 'KX1yZXR1cm4gbigpLGV9KSgpLExubj0oKCk9Pnt2YXIgbjtjbGFzcyBle3RyYW5zZm9ybShyLGkpe2lmKCJzdHJpbmciPT10eXBlb2YgciYmci5sZW5ndGg8MSlyZXR1cm4gcjtzd2l0Y2goaSl7Y2FzZSJkYXRlIjpyZXR1cm4gU3AoKShyLCJERE1NTVlZWVk6aGg6bW06c3MiKS5mb3JtYXQo'@; put 'IkREL01NL1lZWVkiKTtjYXNlInRpbWUiOntpZigic3RyaW5nIiE9dHlwZW9mIHIpdGhyb3cgbmV3IEVycm9yKCJFcnJvciBwYXJzaW5nIHRpbWUuIFZhbHVlIGlzIG5vdCBzdHJpbmcuIik7Y29uc3Qgbz1wYXJzZUludChyLnNwbGl0KCI6IilbMF0pLGE9cGFyc2VJbnQoci5zcGxpdCgiOiIp'@; put 'WzFdKSxsPXBhcnNlSW50KHIuc3BsaXQoIjoiKVsyXSk7cmV0dXJuYCR7bzwxMD8iMCIrbzpvfToke2E8MTA/IjAiK2E6YX06JHtsPDEwPyIwIitsOmx9YH19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ci50b1N0cmluZygpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5j'@; put 'dGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NXBpcGU9dWgoe25hbWU6ImRhdGVUaW1lRm9ybWF0dGVyIix0eXBlOmUscHVyZTohMCxzdGFuZGFsb25lOiExfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgT25uPVsiaW5wdXQiXSxObm49WyIqIl07ZnVuY3Rpb24gRm5uKG4s'@; put 'ZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7U2UoMCwiIC8gIiksSigxLCJzcGFuIiw1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLm9uQ2hhbmdlTGFiZWwoInNlY29uZCIpKX0pLFNlKDIpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKCksd3IoInZh'@; put 'bHVlLXR5cGUtc2VsZWN0ZWQiLCJzZWNvbmQiPT09dC5sYWJlbFNlbGVjdGVkKSxpZSgpLHByKHQuc2Vjb25kTGFiZWwpfX1mdW5jdGlvbiBQbm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImxhYmVsIiw0KSgxLCJzcGFuIiw1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IFllKHQpLFhlKFRlKCkub25DaGFuZ2VMYWJlbCgiZmlyc3QiKSl9KSxTZSgyKSx0ZSgpLHZ0KDMsRm5uLDMsMyksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTt3cigic2Vjb25kTGFiZWxBY3RpdmUiLHQuc2Vjb25kTGFiZWwmJnQuc2Vjb25kTGFiZWwubGVuZ3RoPjApLGllKCksd3IoInZh'@; put 'bHVlLXR5cGUtc2VsZWN0ZWQiLCJmaXJzdCI9PT10LmxhYmVsU2VsZWN0ZWQpLGllKCkscHIodC5sYWJlbCksaWUoKSxfdCh0LnNlY29uZExhYmVsPzM6LTEpfX1mdW5jdGlvbiBIbm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1kYXRlLWNvbnRhaW5lciIpKDEsImlucHV0'@; put 'Iiw2KSxBYygyLCJkYXRlVGltZUZvcm1hdHRlciIpLHd0KCJjbHJEYXRlQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbkRhdGVJbnB1dEZpcmVkKGkpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5pbnB1dEZvY3VzZWQ9ITApfSko'@; put 'ImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKCkub25Gb2N1c2luSW5wdXQoaSkpfSkoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUo'@; put 'VGUoKS5vbklucHV0TW91c2VPdmVyKCkpfSkoIm1vdXNlb3V0IixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJpZCIsdC5pbnB1dElkKSgicGxhY2Vob2xkZXIiLHNiKDIsNSx0'@; put 'LnRlbXAsImRhdGUiKSkoImNsckRhdGUiLHQudmFsdWUpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCksUnIoImxpc3QiLCJkYXRhbGlzdF8iK3QuaW5wdXRJZCl9fWZ1bmN0aW9uIFZubihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiaW5wdXQiLDcpLHd0KCJpbnB1dCIsZnVuY3Rpb24o'@; put 'aSl7cmV0dXJuIFllKHQpLFhlKFRlKCkub25JbnB1dEZpcmVkKGkpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5pbnB1dEZvY3VzZWQ9ITApfSkoImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmlucHV0Rm9jdXNlZD0hMSl9KSgi'@; put 'Zm9jdXNpbiIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKCkub25Gb2N1c2luSW5wdXQoaSkpfSkoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbklucHV0TW91c2VPdmVyKCkpfSkoIm1vdXNlb3V0IixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxY'@; put 'ZShUZSgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7cnQoInZhbHVlIix0LnZhbHVlKSgiaWQiLHQuaW5wdXRJZCkoImRpc2FibGVkIix0LmRpc2FibGVkKSxScigibGlzdCIsImRhdGFsaXN0XyIrdC5pbnB1dElkKX19ZnVuY3Rpb24gQm5uKG4sZSl7'@; put 'aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJhcHAtYXV0b2NvbXBsZXRlIiw4LDApLHd0KCJvbklucHV0Q2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbklucHV0RmlyZWQoaSkpfSkoIm9uTG9hZGluZ01vcmUiLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShU'@; put 'ZSgpLmF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlKGkpKX0pLFdyKDIpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7cnQoImlucHV0SWQiLHQuaW5wdXRJZCkoInZhbHVlIiwobnVsbD09dC52YWx1ZT9udWxsOnQudmFsdWUudG9TdHJpbmcoKSl8fCIiKSgiZW5hYmxlTG9hZE1vcmUiLHQuZW5h'@; put 'YmxlTG9hZE1vcmUpKCJlbWl0T25seVNlbGVjdGVkIix0LmVtaXRPbmx5U2VsZWN0ZWQpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCl9fWxldCBSWmU9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMuaW5wdXRJZD0iIix0aGlzLnZhbHVlPSIiLHRoaXMuZGlzYWJsZWQ9ITEs'@; put 'dGhpcy50eXBlPSJ0ZXh0Iix0aGlzLmRpc2FibGVTb2Z0c2VsZWN0PSExLHRoaXMuZW1pdE9ubHlTZWxlY3RlZD0hMSx0aGlzLmVuYWJsZUxvYWRNb3JlPSExLHRoaXMudmFsdWVDaGFuZ2U9bmV3IEtyLHRoaXMub25JbnB1dEV2ZW50PW5ldyBLcix0aGlzLmZvY3VzaW5JbnB1dD1uZXcgS3Is'@; put 'dGhpcy5vbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlPW5ldyBLcix0aGlzLnNlbGVjdGVkTGFiZWxDaGFuZ2U9bmV3IEtyLHRoaXMudGVtcD0iIix0aGlzLmlucHV0Rm9jdXNlZD0hMSx0aGlzLmxhYmVsU2VsZWN0ZWQ9ImZpcnN0In1uZ09uQ2hhbmdlcyhyKXtyLnZhbHVlJiZyLnZhbHVlLmN1'@; put 'cnJlbnRWYWx1ZSE9PXIudmFsdWUucHJldmlvdXNWYWx1ZSYmdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHIudmFsdWUuY3VycmVudFZhbHVlKX1uZ09uSW5pdCgpe31hdXRvY29tcGxldGVMb2FkaW5nTW9yZShyKXt0aGlzLm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUuZW1pdChyKX1vbklucHV0'@; put 'RmlyZWQocil7Y29uc3QgaT1yLnRhcmdldC52YWx1ZTt0aGlzLnRlbXA9aSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoaSksdGhpcy5vbklucHV0RXZlbnQuZW1pdChyKX1vbkRhdGVJbnB1dEZpcmVkKHIpe3RoaXMudGVtcD1yLHRoaXMudmFsdWVDaGFuZ2UuZW1pdChyKSx0aGlzLm9uSW5wdXRF'@; put 'dmVudC5lbWl0KHIpfW9uSW5wdXRNb3VzZU91dCgpe3RoaXMuZGlzYWJsZVNvZnRzZWxlY3R8fCh0aGlzLnZhbHVlPXRoaXMudGVtcCx0aGlzLnRlbXA9IiIpfW9uSW5wdXRNb3VzZU92ZXIoKXt0aGlzLmRpc2FibGVTb2Z0c2VsZWN0fHwodGhpcy50ZW1wPXRoaXMudmFsdWU/dGhpcy52YWx1'@; put 'ZToiIix0aGlzLnZhbHVlPSIiKX1vbkZvY3VzaW5JbnB1dChyKXt0aGlzLmZvY3VzaW5JbnB1dC5lbWl0KHIpfW9uQ2hhbmdlTGFiZWwocil7dGhpcy5sYWJlbFNlbGVjdGVkPXIsdGhpcy5zZWxlY3RlZExhYmVsQ2hhbmdlLmVtaXQoImZpcnN0Ij09PXI/dGhpcy5sYWJlbDp0aGlzLnNlY29u'@; put 'ZExhYmVsKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLXNvZnQtc2VsZWN0Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihpLG8pe2lmKDEmaSYmV28oT25u'@; put 'LDUpLDImaSl7bGV0IGE7Y2koYT11aSgpKSYmKG8uaW5wdXRFbGVtZW50PWEuZmlyc3QpfX0saW5wdXRzOntpbnB1dElkOiJpbnB1dElkIixsYWJlbDoibGFiZWwiLHNlY29uZExhYmVsOiJzZWNvbmRMYWJlbCIsdmFsdWU6InZhbHVlIixkaXNhYmxlZDoiZGlzYWJsZWQiLHR5cGU6InR5cGUi'@; put 'LGRpc2FibGVTb2Z0c2VsZWN0OiJkaXNhYmxlU29mdHNlbGVjdCIsZW1pdE9ubHlTZWxlY3RlZDoiZW1pdE9ubHlTZWxlY3RlZCIsZW5hYmxlTG9hZE1vcmU6ImVuYWJsZUxvYWRNb3JlIn0sb3V0cHV0czp7dmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIixvbklucHV0RXZlbnQ6Im9uSW5wdXRF'@; put 'dmVudCIsZm9jdXNpbklucHV0OiJmb2N1c2luSW5wdXQiLG9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmU6Im9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUiLHNlbGVjdGVkTGFiZWxDaGFuZ2U6InNlbGVjdGVkTGFiZWxDaGFuZ2UifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltpdV0sbmdDb250'@; put 'ZW50U2VsZWN0b3JzOk5ubixkZWNsczo0LHZhcnM6Mixjb25zdHM6W1siaW5wdXQiLCIiXSxbMSwiY2xyLWNvbnRyb2wtbGFiZWwiLDMsInNlY29uZExhYmVsQWN0aXZlIl0sWyJ0eXBlIiwidGltZSIsInN0ZXAiLCIxIiwxLCJpbnB1dC12YWwiLDMsInZhbHVlIiwiaWQiLCJkaXNhYmxlZCJd'@; put 'LFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLDEsImlucHV0LXZhbCIsMywiaW5wdXRJZCIsInZhbHVlIiwiZW5hYmxlTG9hZE1vcmUiLCJlbWl0T25seVNlbGVjdGVkIiwiZGlzYWJsZWQiXSxbMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMywiY2xp'@; put 'Y2siXSxbInR5cGUiLCJkYXRlIiwiY2xyRGF0ZSIsIiIsMywiY2xyRGF0ZUNoYW5nZSIsImZvY3VzIiwiZm9jdXNvdXQiLCJmb2N1c2luIiwibW91c2VvdmVyIiwibW91c2VvdXQiLCJpZCIsInBsYWNlaG9sZGVyIiwiY2xyRGF0ZSIsImRpc2FibGVkIl0sWyJ0eXBlIiwidGltZSIsInN0ZXAi'@; put 'LCIxIiwxLCJpbnB1dC12YWwiLDMsImlucHV0IiwiZm9jdXMiLCJmb2N1c291dCIsImZvY3VzaW4iLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsInZhbHVlIiwiaWQiLCJkaXNhYmxlZCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLDEsImlucHV0'@; put 'LXZhbCIsMywib25JbnB1dENoYW5nZSIsIm9uTG9hZGluZ01vcmUiLCJpbnB1dElkIiwidmFsdWUiLCJlbmFibGVMb2FkTW9yZSIsImVtaXRPbmx5U2VsZWN0ZWQiLCJkaXNhYmxlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pe2lmKDEmaSYmKGZvKCksdnQoMCxQbm4sNCw2LCJsYWJlbCIs'@; put 'MSksdnQoMSxIbm4sMyw4LCJjbHItZGF0ZS1jb250YWluZXIiKSgyLFZubiwxLDQsImlucHV0IiwyKSgzLEJubiwzLDUsImFwcC1hdXRvY29tcGxldGUiLDMpKSwyJmkpe2xldCBhO190KG8ubGFiZWw/MDotMSksaWUoKSxfdCgiZGF0ZSI9PT0oYT1vLnR5cGUpPzE6InRpbWUiPT09YT8yOiJ0'@; put 'ZXh0Ij09PWE/MzotMSl9fSxkZXBlbmRlbmNpZXM6W2VsLG5XLG1hZSxDTWUsa1plLExubl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCksbUE9KCgpPT57dmFyIG47Y2xhc3MgZXtzZXQgbmdWYXIocil7dGhpcy5jb250ZXh0LiRpbXBsaWNpdD10aGlzLmNvbnRleHQubmdW'@; put 'YXI9cix0aGlzLmhhc1ZpZXd8fCh0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLHRoaXMuY29udGV4dCksdGhpcy5oYXNWaWV3PSEwKX1jb25zdHJ1Y3RvcihyLGkpe3RoaXMudGVtcGxhdGVSZWY9cix0aGlzLnZjUmVmPWksdGhpcy5jb250ZXh0PXskaW1w'@; put 'bGljaXQ6bnVsbCxuZ1ZhcjpudWxsfSx0aGlzLmhhc1ZpZXc9ITF9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoRmMpLHplKERzKSl9LHRoaXMuXHUwMjc1ZGlyPSRyKHt0eXBlOmUsc2VsZWN0b3JzOltbIiIsIm5nVmFyIiwi'@; put 'Il1dLGlucHV0czp7bmdWYXI6Im5nVmFyIn0sc3RhbmRhbG9uZTohMX0pKX1yZXR1cm4gbigpLGV9KSgpLGpubj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIpe3RoaXMuaGVscGVyU2VydmljZT1yfXRyYW5zZm9ybShyLGk9ImRheXMiLG89ITEpe2lmKHZvaWQgMD09PXImJihy'@; put 'PSIiKSwic3RyaW5nIiE9dHlwZW9mIHImJihyPXIudG9TdHJpbmcoKSksMD09PXIubGVuZ3RoKXtpZigiZGF5cyI9PT1pKXJldHVybiBudWxsO2lmKCJzZWNvbmRzIj09PWkpcmV0dXJuIG8/IjExOjAwOjAwIjpudWxsfWxldCBhPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0U2FzRGF5c1Rv'@; put 'SnNEYXRlKHIsaSk7aWYoND09PXIuc3BsaXQoIjoiKS5sZW5ndGgpe2NvbnN0IHU9ci5zcGxpdCgiOiIpO2E9bmV3IERhdGUodVswXSksYS5zZXRIb3VycyhwYXJzZUludCh1WzFdKSksYS5zZXRNaW51dGVzKHBhcnNlSW50KHVbMl0pKSxhLnNldFNlY29uZHMocGFyc2VJbnQodVszXSkpfWVs'@; put 'c2UgaXNOYU4oTnVtYmVyKHIpKSYmKGE9bmV3IERhdGUocikpO2xldCBsPWAke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhhLmdldEhvdXJzKCkudG9TdHJpbmcoKSl9OiR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKGEuZ2V0TWludXRlcygpLnRvU3RyaW5n'@; put 'KCkpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhhLmdldFNlY29uZHMoKS50b1N0cmluZygpKX1gO3JldHVybiBvP2w6YX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZShmaCwxNikpfSx0aGlzLlx1MDI3'@; put 'NXBpcGU9dWgoe25hbWU6InNhc1RvSnNEYXRlIix0eXBlOmUscHVyZTohMCxzdGFuZGFsb25lOiExfSkpfXJldHVybiBuKCksZX0pKCksVW5uPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3Iocil7dGhpcy5oZWxwZXJTZXJ2aWNlPXJ9dHJhbnNmb3JtKHIpe2lmKG51bGw9PXJ8fCIi'@; put 'PT09cilyZXR1cm4iIjtsZXQgaSxvLGE7aWYoInN0cmluZyI9PXR5cGVvZiByJiYzPT09ci5zcGxpdCgiOiIpLmxlbmd0aCl7Y29uc3QgbD1yLnNwbGl0KCI6Iik7aT1sWzBdLG89bFsxXSxhPWxbMl19ZWxzZSJudW1iZXIiIT10eXBlb2YgciYmKHI9cGFyc2VJbnQocikpLGk9TWF0aC5mbG9v'@; put 'cihyLzM2MDApLG89TWF0aC5mbG9vcihyJTM2MDAvNjApLGE9TWF0aC5mbG9vcihyJTM2MDAlNjApO3JldHVybmAke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhpKX06JHt0aGlzLmhlbHBlclNlcnZpY2UuYWRkTGVhZGluZ1plcm8obyl9OiR7dGhpcy5oZWxwZXJTZXJ2aWNl'@; put 'LmFkZExlYWRpbmdaZXJvKGEpfWB9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoZmgsMTYpKX0sdGhpcy5cdTAyNzVwaXBlPXVoKHtuYW1lOiJzZWNvbmRzUGFyc2VyIix0eXBlOmUscHVyZTohMCxzdGFuZGFsb25lOiExfSkp'@; put 'fXJldHVybiBuKCksZX0pKCk7Y29uc3Qgem5uPShuLGUsdCk9Pih7cXVlcnk6bixxdWVyeUluZGV4OmUsY2xhdXNlSW5kZXg6dH0pLFdubj0obixlLHQscik9Pih7cXVlcnk6bixxdWVyeUluZGV4OmUsY2xhdXNlSW5kZXg6dCxpc0RhdGVUaW1lOnJ9KSxZbm49KG4sZSx0LHIpPT4oe3Jhbmdl'@; put 'OiJzdGFydCIscXVlcnk6bixxdWVyeVZhbHVlSW5kZXg6MCxxdWVyeUluZGV4OmUsY2xhdXNlSW5kZXg6dCxpc0RhdGVUaW1lOnJ9KSxabm49KG4sZSx0LHIpPT4oe3JhbmdlOiJlbmQiLHF1ZXJ5Om4scXVlcnlWYWx1ZUluZGV4OjEscXVlcnlJbmRleDplLGNsYXVzZUluZGV4OnQsaXNEYXRl'@; put 'VGltZTpyfSk7ZnVuY3Rpb24gR25uKG4sZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iLDEzKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoInNlbGVjdGVkIixUZSgpLmxvZ2ljT3BlcmF0b3JzWzBdKSxpZSgpLFNyKCIgIix0LCIgIil9fWZ1bmN0aW9uICRubihuLGUp'@; put 'ezEmbiYmKFNlKDAsIlxuICAgICAgICAiKSxKKDEsImRpdiIsMjApLFNlKDIsIlxuICAgICAgICAgICIpLEl0KDMsInByb2dyZXNzIiksU2UoNCwiXG4gICAgICAgICIpLHRlKCksU2UoNSwiXG4gICAgICAiKSl9ZnVuY3Rpb24gcW5uKG4sZSl7MSZuJiZJdCgwLCJkaXYiKX1mdW5jdGlvbiBL'@; put 'bm4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsMTMpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgic2VsZWN0ZWQiLFRlKDIpLmxvZ2ljT3BlcmF0b3JzWzBdKSxpZSgpLFNyKCIgIix0LCIgIil9fWZ1bmN0aW9uIFhubihuLGUpe2lmKDEmbil7Y29uc3QgdD13'@; put 'bigpO0ooMCwiYnV0dG9uIiwyOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5hZGRHcm91cENsYXVzZSgpKX0pLEl0KDEsImNsci1pY29uIiwyOSksSigyLCJzcGFuIiksU2UoMywiR3JvdXAiKSx0ZSgpKCl9fWZ1bmN0aW9uIFFubihuLGUpe2lmKDEmbil7'@; put 'Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24iLDMwKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpLiRpbmRleDtyZXR1cm4gWGUoVGUoKS5yZW1vdmVHcm91cENsYXVzZShpKSl9KSx0ZSgpfX1mdW5jdGlvbiBKbm4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIp'@; put 'LFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLFNyKCIgIix0Lk5BTUUsIiAiKX19ZnVuY3Rpb24gZXJuKG4sZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7aWUoKSxwcih0KX19ZnVuY3Rpb24gdHJu'@; put 'KG4sZSl7MSZuJiZhdSgwKX1mdW5jdGlvbiBucm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsNDIpKDEsImJ1dHRvbiIsNDYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpLiRpbmRleCxvPVRlKCkuJGluZGV4LGE9VGUoKTtyZXR1cm4gYS5j'@; put 'dXJyZW50UXVlcnlJbmRleD1pLFhlKGEuY3VycmVudENsYXVzZUluZGV4PW8pfSksU2UoMiwiIENob29zZSB2YWx1ZXMgIiksdGUoKSxZbigzLHRybiwxLDAsIm5nLWNvbnRhaW5lciIsNDcpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpLHI9dC4kaW1wbGljaXQsaT10LiRpbmRleCxvPVRl'@; put 'KCkuJGluZGV4O1RlKCk7Y29uc3QgYT1vbygzOCk7aWUoMykscnQoIm5nVGVtcGxhdGVPdXRsZXQiLGEpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsdEkoMix6bm4scixpLG8pKX19ZnVuY3Rpb24gcnJuKG4sZSl7MSZuJiZhdSgwKX1mdW5jdGlvbiBpcm4obixlKXtpZigxJm4mJihKKDAs'@; put 'ImRpdiIsNDMpLFluKDEscnJuLDEsMCwibmctY29udGFpbmVyIiw0NyksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkubmdWYXIscj1UZSgpLGk9ci4kaW1wbGljaXQsbz1yLiRpbmRleCxhPVRlKCkuJGluZGV4LGw9VGUoKSx1PW9vKDMyKSxnPW9vKDM0KTtpZSgpLHJ0KCJuZ1RlbXBsYXRlT3V0'@; put 'bGV0Iix0JiZsLnVzZVBpY2tlcnM/dTpnKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLFlqKDIsV25uLGksbyxhLHQpKX19ZnVuY3Rpb24gb3JuKG4sZSl7MSZuJiZhdSgwKX1mdW5jdGlvbiBhcm4obixlKXsxJm4mJmF1KDApfWZ1bmN0aW9uIHNybihuLGUpe2lmKDEmbiYmKEooMCwiZGl2'@; put 'Iiw0NCkoMSwiZGl2Iiw0OCksWW4oMixvcm4sMSwwLCJuZy1jb250YWluZXIiLDQ3KSx0ZSgpLEooMywiZGl2Iiw0OSksWW4oNCxhcm4sMSwwLCJuZy1jb250YWluZXIiLDQ3KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpLm5nVmFyLHI9VGUoKSxpPXIuJGltcGxpY2l0LG89ci4kaW5kZXgs'@; put 'YT1UZSgpLiRpbmRleCxsPVRlKCksdT1vbygzMiksZz1vbygzNik7aWUoMikscnQoIm5nVGVtcGxhdGVPdXRsZXQiLHQmJmwudXNlUGlja2Vycz91OmcpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsWWooNCxZbm4saSxvLGEsdCkpLGllKDIpLHJ0KCJuZ1RlbXBsYXRlT3V0bGV0Iix0JiZs'@; put 'LnVzZVBpY2tlcnM/dTpnKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLFlqKDksWm5uLGksbyxhLHQpKX19ZnVuY3Rpb24gbHJuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDQ1KSgxLCJsYWJlbCIsNyksU2UoMiwiVmFsdWUiKSx0ZSgpLEooMywiaW5wdXQiLDUwKSxo'@; put 'aSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgyKS4kaW1wbGljaXQ7cmV0dXJuIGZpKG8udmFsdWUsaSl8fChvLnZhbHVlPWkpLFhlKGkpfSksd3QoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMikuJGluZGV4LGE9VGUo'@; put 'KS4kaW5kZXg7cmV0dXJuIFhlKFRlKCkuc2V0VmFyaWFibGVWYWx1ZXMoaSxvLGEpKX0pLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMikuJGltcGxpY2l0O2llKDMpLGRpKCJuZ01vZGVsIix0LnZhbHVlKX19ZnVuY3Rpb24gY3JuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDQxKSx2dCgx'@; put 'LG5ybiw0LDYsImRpdiIsNDIpLHZ0KDIsaXJuLDIsNywiZGl2Iiw0MyksdnQoMyxzcm4sNSwxNCwiZGl2Iiw0NCksdnQoNCxscm4sNCwxLCJkaXYiLDQ1KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW1wbGljaXQ7aWUoKSxfdCgiSU4iPT09dC5vcGVyYXRvcnx8Ik5PVCBJTiI9PT10Lm9w'@; put 'ZXJhdG9yPzE6LTEpLGllKCksX3QoIkJFVFdFRU4iIT09dC5vcGVyYXRvciYmIklOIiE9PXQub3BlcmF0b3ImJiJOT1QgSU4iIT09dC5vcGVyYXRvciYmIkxJS0UiIT09dC5vcGVyYXRvciYmIkNPTlRBSU5TIiE9PXQub3BlcmF0b3ImJiJCRUdJTlNfV0lUSCIhPT10Lm9wZXJhdG9yPzI6LTEp'@; put 'LGllKCksX3QoIkJFVFdFRU4iPT09dC5vcGVyYXRvcj8zOi0xKSxpZSgpLF90KCJMSUtFIj09PXQub3BlcmF0b3J8fCJCRUdJTlNfV0lUSCI9PT10Lm9wZXJhdG9yfHwiQ09OVEFJTlMiPT09dC5vcGVyYXRvcj80Oi0xKX19ZnVuY3Rpb24gdXJuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7'@; put 'SigwLCJkaXYiLDEwKSgxLCJkaXYiLDMxKSgyLCJkaXYiLDMyKSgzLCJhcHAtc29mdC1zZWxlY3QiLDMzKSxoaSgidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0O3JldHVybiBmaShvLnZhcmlhYmxlLGkpfHwoby52YXJpYWJsZT1pKSxYZShpKX0pLHd0'@; put 'KCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCksYT1vLiRpbXBsaWNpdCxsPW8uJGluZGV4LHU9VGUoKS4kaW5kZXg7cmV0dXJuIFhlKFRlKCkudmFyaWFibGVJbnB1dENoYW5nZShhLnZhcmlhYmxlLGwsdSxpKSl9KSxfbyg0LEpubiwyLDEsIm9wdGlvbiIsbnVsbCxD'@; put 'byksdGUoKSgpKCksSig2LCJkaXYiLDM0KSg3LCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDgsImxhYmVsIiksU2UoOSwiT3BlcmF0b3IiKSx0ZSgpLEooMTAsInNlbGVjdCIsMzUpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4g'@; put 'Zmkoby5vcGVyYXRvcixpKXx8KG8ub3BlcmF0b3I9aSksWGUoaSl9KSx3dCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLG89aS4kaW1wbGljaXQsYT1pLiRpbmRleCxsPVRlKCkuJGluZGV4O3JldHVybiBYZShUZSgpLnNldFZhcmlhYmxlT3BlcmF0b3IoYSxvLm9w'@; put 'ZXJhdG9yLGwpKX0pLF9vKDExLGVybiwyLDEsIm9wdGlvbiIsbnVsbCxDbyksdGUoKSgpKCksWW4oMTMsY3JuLDUsNCwiZGl2IiwzNiksSigxNCwiZGl2IiwzNykoMTUsImJ1dHRvbiIsMzgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbmRleCxvPVRlKCkuJGluZGV4'@; put 'O3JldHVybiBYZShUZSgpLnJlbW92ZUNsYXVzZShpLG8pKX0pLEl0KDE2LCJjbHItaWNvbiIsMzkpKDE3LCJzcGFuIiksdGUoKSxKKDE4LCJidXR0b24iLDQwKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpLiRpbmRleDtyZXR1cm4gWGUoVGUoKS5hZGRDbGF1c2Uo'@; put 'aSkpfSksSXQoMTksImNsci1pY29uIiwyOSkoMjAsInNwYW4iKSx0ZSgpKCkoKX1pZigyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1lLiRpbmRleCxpPVRlKCkuJGluZGV4LG89VGUoKTt3cigiaW52YWxpZC1jbGF1c2UiLHQuaW52YWxpZENsYXVzZSksaWUoMykscnQoImlkIiwic2VsZWN0'@; put 'X3ZhbHNfdmFyX2lkIityKyJfIitpKSgiaW5wdXRJZCIsInZhbHNfdmFyX2lkIityKyJfIitpKSgiZW1pdE9ubHlTZWxlY3RlZCIsITApLGRpKCJ2YWx1ZSIsdC52YXJpYWJsZSksaWUoKSx5byhvLmNvbHMpLGllKDYpLGRpKCJuZ01vZGVsIix0Lm9wZXJhdG9yKSxpZSgpLHlvKHQub3BlcmF0'@; put 'b3JzKSxpZSgyKSxydCgibmdWYXIiLCJEQVRFIj09PXQuZGR0eXBlfHwiREFURVRJTUUiPT09dC5kZHR5cGV8fCJUSU1FIj09PXQuZGR0eXBlKSxpZSgyKSxydCgiZGlzYWJsZWQiLDE9PT1vLmNsYXVzZXMucXVlcnlPYmpbaV0uZWxlbWVudHMubGVuZ3RoKX19ZnVuY3Rpb24gZHJuKG4sZSl7'@; put 'aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDE5KSgxLCJkaXYiLDEwKSgyLCJkaXYiLDIxKSgzLCJkaXYiLDIyKSg0LCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDUsImxhYmVsIiksU2UoNiwiTG9naWMiKSx0ZSgpLEooNywic2VsZWN0IiwyMyksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1'@; put 'bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0O3JldHVybiBmaShvLmNsYXVzZUxvZ2ljLGkpfHwoby5jbGF1c2VMb2dpYz1pKSxYZShpKX0pLHd0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnNldExvZ2ljKCkpfSksX28oOCxLbm4sMiwy'@; put 'LCJvcHRpb24iLDEzLENvKSx0ZSgpKCkoKSxJdCgxMCwiYnIiKSx2dCgxMSxYbm4sNCwwLCJidXR0b24iLDI0KSx0ZSgpLEooMTIsImRpdiIsMjUpLHZ0KDEzLFFubiwxLDAsImNsci1pY29uIiwyNiksX28oMTQsdXJuLDIxLDksImRpdiIsMjcsQ28pLHRlKCkoKSxJdCgxNiwiYnIiKSx0ZSgp'@; put 'fWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKCk7aWUoKSx3cigiaW52YWxpZC1jbGF1c2UiLHQuaW52YWxpZENsYXVzZSksaWUoNiksZGkoIm5nTW9kZWwiLHQuY2xhdXNlTG9naWMpLHJ0KCJkaXNhYmxlZCIsdC5lbGVtZW50cy5sZW5ndGg8MiksaWUoKSx5byhyLmxvZ2ljT3Bl'@; put 'cmF0b3JzKSxpZSgzKSxfdChyLmlubmVyV2lkdGg+NzY4PzExOi0xKSxpZSgyKSxfdChyLmNsYXVzZXMucXVlcnlPYmoubGVuZ3RoPjE/MTM6LTEpLGllKCkseW8odC5lbGVtZW50cyl9fWZ1bmN0aW9uIGhybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYXBwLXNvZnQtc2VsZWN0'@; put 'Iiw1MyksQWMoMSwic2FzVG9Kc0RhdGUiKSxBYygyLCJzYXNUb0pzRGF0ZSIpLHd0KCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLGE9by5xdWVyeSxsPW8ucXVlcnlWYWx1ZUluZGV4LHU9by5xdWVyeUluZGV4LGc9by5jbGF1c2VJbmRleDtyZXR1cm4gWGUo'@; put 'VGUoKS5kYXRlQ2hhbmdlKGksYSx1LGcsbCkpfSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKSxyPXQucXVlcnksaT10LnF1ZXJ5VmFsdWVJbmRleCxvPXQucXVlcnlJbmRleCxhPXQuY2xhdXNlSW5kZXg7cnQoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzX2RhdGUi'@; put 'K28rIl8iK2EpKCJ2YWx1ZSIsdm9pZCAwIT09aT9UZCgxLDMsci52YWx1ZVtpXSk6VGQoMiw1LHIudmFsdWUpKX19ZnVuY3Rpb24gZnJuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJhcHAtc29mdC1zZWxlY3QiLDU0KSxBYygxLCJzYXNUb0pzRGF0ZSIpLEFjKDIsInNhc1RvSnNE'@; put 'YXRlIiksd3QoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCksYT1vLnF1ZXJ5SW5kZXgsbD1vLmNsYXVzZUluZGV4O3JldHVybiBYZShUZSgpLmdldFF1ZXJ5RGF0ZVRpbWUobCxhKS5kYXRlPWkpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtZZSh0KTtj'@; put 'b25zdCBpPVRlKCksbz1pLnF1ZXJ5LGE9aS5xdWVyeVZhbHVlSW5kZXgsbD1pLnF1ZXJ5SW5kZXgsdT1pLmNsYXVzZUluZGV4O3JldHVybiBYZShUZSgpLmRhdGVUaW1lQ2hhbmdlKG8sbCx1LGEpKX0pLHRlKCksSigzLCJhcHAtc29mdC1zZWxlY3QiLDU1KSxBYyg0LCJzYXNUb0pzRGF0ZSIp'@; put 'LEFjKDUsInNhc1RvSnNEYXRlIiksd3QoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCksYT1vLnF1ZXJ5SW5kZXgsbD1vLmNsYXVzZUluZGV4O3JldHVybiBYZShUZSgpLmdldFF1ZXJ5RGF0ZVRpbWUobCxhKS50aW1lPWkpfSkoIm9uSW5wdXRFdmVudCIsZnVu'@; put 'Y3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKCksbz1pLnF1ZXJ5LGE9aS5xdWVyeVZhbHVlSW5kZXgsbD1pLnF1ZXJ5SW5kZXgsdT1pLmNsYXVzZUluZGV4O3JldHVybiBYZShUZSgpLmRhdGVUaW1lQ2hhbmdlKG8sbCx1LGEpKX0pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkscj10LnF1ZXJ5'@; put 'LGk9dC5xdWVyeVZhbHVlSW5kZXgsbz10LnF1ZXJ5SW5kZXgsYT10LmNsYXVzZUluZGV4O3J0KCJkaXNhYmxlU29mdHNlbGVjdCIsITApKCJpbnB1dElkIiwidmFsc19kYXRlIitvKyJfIithKSgidmFsdWUiLHZvaWQgMCE9PWk/c2IoMSw2LHIudmFsdWVbaV0sInNlY29uZHMiKTpzYigyLDks'@; put 'ci52YWx1ZSwic2Vjb25kcyIpKSxpZSgzKSxydCgiZGlzYWJsZVNvZnRzZWxlY3QiLCEwKSgiaW5wdXRJZCIsInZhbHNfdGltZSIrbysiXyIrYSkoInZhbHVlIix2b2lkIDAhPT1pP2huZSg0LDEyLHIudmFsdWVbaV0sInNlY29uZHMiLCEwKTpobmUoNSwxNixyLnZhbHVlLCJzZWNvbmRzIiwh'@; put 'MCkpfX1mdW5jdGlvbiBwcm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImFwcC1zb2Z0LXNlbGVjdCIsNTYpLEFjKDEsInNlY29uZHNQYXJzZXIiKSxBYygyLCJzZWNvbmRzUGFyc2VyIiksd3QoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLGE9'@; put 'by5xdWVyeSxsPW8ucXVlcnlWYWx1ZUluZGV4LHU9by5xdWVyeUluZGV4LGc9by5jbGF1c2VJbmRleDtyZXR1cm4gWGUoVGUoKS50aW1lQ2hhbmdlKGksYSx1LGcsbCkpfSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKSxyPXQucXVlcnksaT10LnF1ZXJ5VmFsdWVJbmRleCxvPXQucXVlcnlJ'@; put 'bmRleCxhPXQuY2xhdXNlSW5kZXg7cnQoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzXyIrbysiXyIrYSkoInZhbHVlIix2b2lkIDAhPT1pP1RkKDEsMyxyLnZhbHVlW2ldKTpUZCgyLDUsci52YWx1ZSkpfX1mdW5jdGlvbiBncm4obixlKXtpZigxJm4mJnZ0KDAsaHJu'@; put 'LDMsNywiYXBwLXNvZnQtc2VsZWN0Iiw1MSkoMSxmcm4sNiwyMCkoMixwcm4sMyw3LCJhcHAtc29mdC1zZWxlY3QiLDUyKSwyJm4pe2xldCB0O190KCJEQVRFIj09PSh0PWUucXVlcnkuZGR0eXBlKT8wOiJEQVRFVElNRSI9PT10PzE6IlRJTUUiPT09dD8yOi0xKX19ZnVuY3Rpb24gbXJuKG4s'@; put 'ZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iLDU4KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoInZhbHVlIix0LnVuZm9ybWF0dGVkKSxpZSgpLFNyKCIgIix0LmZvcm1hdHRlZC50cmltKCksIiAiKX19ZnVuY3Rpb24gdnJuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYi'@; put 'KSxfbygxLG1ybiwyLDIsIm9wdGlvbiIsNTgsQ28pLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpLnF1ZXJ5O2llKCkseW8odC52YWx1ZXMpfX1mdW5jdGlvbiBfcm4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsNTgpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDty'@; put 'dCgidmFsdWUiLHQuTkFNRSksaWUoKSxTcigiICIsdC5OQU1FLCIgIil9fWZ1bmN0aW9uIHlybihuLGUpe2lmKDEmbiYmdnQoMCxfcm4sMiwyLCJvcHRpb24iLDU4KSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgyKS5xdWVyeTtfdCh0LlRZUEU9PT1yLnR5cGU/MDotMSl9fWZ1bmN0'@; put 'aW9uIGJybihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiksX28oMSx5cm4sMSwxLG51bGwsbnVsbCxDbyksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCkseW8odC5jb2xzKX19ZnVuY3Rpb24gd3JuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJhcHAtc29mdC1zZWxlY3QiLDU3'@; put 'KSx3dCgic2VsZWN0ZWRMYWJlbENoYW5nZSIsZnVuY3Rpb24oaSl7Y29uc3Qgbz1ZZSh0KS5xdWVyeTtyZXR1cm4gWGUoVGUoKS5zZWxlY3RlZExhYmVsQ2hhbmdlKGksbykpfSksaGkoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLnF1ZXJ5O3JldHVybiBmaShvLnZh'@; put 'bHVlLGkpfHwoby52YWx1ZT1pKSxYZShpKX0pLHd0KCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCksYT1vLnF1ZXJ5SW5kZXgsbD1vLmNsYXVzZUluZGV4O3JldHVybiBYZShUZSgpLnNldFZhcmlhYmxlVmFsdWVzKGkudGFyZ2V0LnZhbHVlLGEsbCkpfSkoIm9uQXV0'@; put 'b2NvbXBsZXRlTG9hZGluZ01vcmUiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCksYT1vLnF1ZXJ5LGw9by5xdWVyeUluZGV4LHU9by5jbGF1c2VJbmRleDtyZXR1cm4gWGUoVGUoKS5vbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlKGksYS52YXJpYWJsZSxsLHUpKX0pLHZ0KDEsdnJuLDMsMCwi'@; put 'ZGl2IiksdnQoMixicm4sMywwLCJkaXYiKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1lLnF1ZXJ5LHI9ZS5xdWVyeUluZGV4LGk9ZS5jbGF1c2VJbmRleDtydCgic2Vjb25kTGFiZWwiLCJWYXJpYWJsZSIpKCJlbWl0T25seVNlbGVjdGVkIix0LnZhbHVlVmFyaWFibGUpKCJpbnB1dElkIiwidmFs'@; put 'c18iK3IrIl8iK2kpLGRpKCJ2YWx1ZSIsdC52YWx1ZSkscnQoImVuYWJsZUxvYWRNb3JlIix0Lm5vYnM+dC52YWx1ZXMubGVuZ3RoKSxpZSgpLF90KHQudmFsdWVWYXJpYWJsZT8tMToxKSxpZSgpLF90KHQudmFsdWVWYXJpYWJsZT8yOi0xKX19ZnVuY3Rpb24gQ3JuKG4sZSl7aWYoMSZuJiYo'@; put 'SigwLCJvcHRpb24iLDU4KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoInZhbHVlIix0LmZvcm1hdHRlZCksaWUoKSxTcigiICIsdC5mb3JtYXR0ZWQsIiAiKX19ZnVuY3Rpb24gU3JuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJhcHAtc29mdC1zZWxl'@; put 'Y3QiLDU5KSxoaSgidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCksYT1vLnF1ZXJ5LGw9by5xdWVyeVZhbHVlSW5kZXg7cmV0dXJuIGZpKGEudmFsdWVbbF0saSl8fChhLnZhbHVlW2xdPWkpLFhlKGkpfSksd3QoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtjb25zdCBp'@; put 'PVllKHQpLG89aS5xdWVyeSxhPWkucXVlcnlJbmRleCxsPWkuY2xhdXNlSW5kZXg7cmV0dXJuIFhlKFRlKCkuc2V0VmFyaWFibGVWYWx1ZXMoby52YWx1ZSxhLGwpKX0pKCJvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLGE9by5xdWVyeSxsPW8u'@; put 'cXVlcnlJbmRleCx1PW8uY2xhdXNlSW5kZXg7cmV0dXJuIFhlKFRlKCkub25BdXRvY29tcGxldGVMb2FkaW5nTW9yZShpLGEudmFyaWFibGUsbCx1KSl9KSxfbygxLENybiwyLDIsIm9wdGlvbiIsNTgsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PWUucmFuZ2Uscj1lLnF1ZXJ5LGk9ZS5xdWVy'@; put 'eVZhbHVlSW5kZXg7cnQoImlucHV0SWQiLCJ2YWxzLSIrdCsiXyIrZS5xdWVyeUluZGV4KyJfIitlLmNsYXVzZUluZGV4KSxkaSgidmFsdWUiLHIudmFsdWVbaV0pLHJ0KCJlbmFibGVMb2FkTW9yZSIsci5ub2JzPnIudmFsdWVzLmxlbmd0aCkoImRpc2FibGVkIix2b2lkIDAhPT1pJiYic3Rh'@; put 'cnQiIT09dCYmIXIudmFsdWVbMF0pLGllKCkseW8oci52YWx1ZXMpfX1mdW5jdGlvbiBFcm4obixlKXsxJm4mJihKKDAsImg1Iiw2MyksU2UoMSwiTm8gdmFsdWVzIGF2YWlsYWJsZS4iKSx0ZSgpKX1mdW5jdGlvbiBNcm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1jaGVj'@; put 'a2JveC13cmFwcGVyIikoMSwiaW5wdXQiLDY3KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7Y29uc3Qgbz1ZZSh0KS4kaW5kZXgsYT1UZSgyKS5xdWVyeTtyZXR1cm4gZmkoYS52YWx1ZVtvXS5jaGVja2VkLGkpfHwoYS52YWx1ZVtvXS5jaGVja2VkPWkpLFhlKGkpfSksd3QoIm5n'@; put 'TW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMiksYT1vLnF1ZXJ5SW5kZXgsbD1vLmNsYXVzZUluZGV4O3JldHVybiBYZShUZSgpLnNldFZhcmlhYmxlVmFsdWVzKGksYSxsKSl9KSx0ZSgpLEooMiwibGFiZWwiKSxTZSgzKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0'@; put 'PWUuJGltcGxpY2l0LHI9ZS4kaW5kZXgsaT1UZSgyKS5xdWVyeTtpZSgpLGRpKCJuZ01vZGVsIixpLnZhbHVlW3JdLmNoZWNrZWQpLGllKDIpLFNyKCIgIix0LmZvcm1hdHRlZCwiICIpfX1mdW5jdGlvbiBUcm4obixlKXtpZigxJm4mJihKKDAsInNlY3Rpb24iLDY0KSgxLCJjbHItY2hlY2ti'@; put 'b3gtY29udGFpbmVyIiksX28oMixNcm4sNCwyLCJjbHItY2hlY2tib3gtd3JhcHBlciIsbnVsbCxDbyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKS5xdWVyeTtpZSgyKSx5byh0LnZhbHVlcyl9fWZ1bmN0aW9uIHhybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLW1vZGFs'@; put 'Iiw2MCkoMSwiaDMiLDYxKSxTZSgyLCJTZWxlY3QgdmFsdWVzIiksdGUoKSxKKDMsImRpdiIsNjIpLHZ0KDQsRXJuLDIsMCwiaDUiLDYzKSx2dCg1LFRybiw0LDAsInNlY3Rpb24iLDY0KSx0ZSgpLEooNiwiZGl2Iiw2NSkoNywiYnV0dG9uIiw2Niksd3QoImNsaWNrIixmdW5jdGlvbigpe1ll'@; put 'KHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gaS5jdXJyZW50UXVlcnlJbmRleD0tMSxYZShpLmN1cnJlbnRDbGF1c2VJbmRleD0tMSl9KSxTZSg4LCIgQXBwbHkgIiksdGUoKSgpKCl9aWYoMiZuKXtjb25zdCB0PWUucXVlcnkscj1lLnF1ZXJ5SW5kZXgsaT1lLmNsYXVzZUluZGV4LG89VGUoKTty'@; put 'dCgiY2xyTW9kYWxPcGVuIixvLmN1cnJlbnRRdWVyeUluZGV4PT09ciYmby5jdXJyZW50Q2xhdXNlSW5kZXg9PT1pKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDQpLF90KG8uaXNBcnIodC52YWx1ZSk/LTE6NCksaWUoKSxfdChvLmlzQXJyKHQudmFsdWUpPzU6LTEpfX0hZnVuY3Rpb24g'@; put 'cHR0KG4sZSx0KXsoZnVuY3Rpb24gT1FlKG4sZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT1uW0d1LkxvY2FsZUlkXSksZT1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIikseUVbZV09bix0JiYoeUVbZV1bR3UuRXh0cmFEYXRhXT10KX0pKG4sZSx0KX0oQW5uKTtsZXQg'@; put 'em1lPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpLG8sYSl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9cix0aGlzLmV2ZW50U2VydmljZT1pLHRoaXMuaGVscGVyU2VydmljZT1vLHRoaXMuY2RmPWEsdGhpcy5jYWNoaW5nPSEwLHRoaXMucm93c19pbmNyZW1lbnQ9MTAwLHRoaXMu'@; put 'aW5pdGlhbF9yb3dzPTFlMyx0aGlzLmNsYXVzZUFtdD1bIiJdLHRoaXMubnVtT3BlcmF0b3JzPVsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkJFVFdFRU4iLCJJTiIsIk5PVCBJTiIsIk5FIl0sdGhpcy5jaGFyT3BlcmF0b3JzPVsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkNPTlRBSU5TIiwiSU4i'@; put 'LCJOT1QgSU4iLCJORSJdLHRoaXMubm90SW49ITEsdGhpcy5ub3RBcnI9ITAsdGhpcy53YXNCZXR3ZWVuPSExLHRoaXMud2hlcmVDbGF1c2VMb2FkaW5nPSExLHRoaXMuZHluYW1pY1doZXJlQ2xhdXNlPSEwLHRoaXMudXNlUGlja2Vycz0hMSx0aGlzLnF1ZXJ5T2JqPXtlbGVtZW50czpbe2xv'@; put 'Z2ljOm51bGwsdHlwZTpudWxsLGRkdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlVmFyaWFibGU6ITEsc3RhcnRyb3c6MCxyb3dzOjAsbm9iczowLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XSxjbGF1c2VMb2dpYzoiIixpbnZhbGlkQ2xhdXNl'@; put 'OiExfSx0aGlzLnNlbFZhcj17aW5kZXg6bnVsbCxmb3JtYXQ6bnVsbCx0eXBlOm51bGx9LHRoaXMuaW5PYmo9W3tjaGVja2VkOiExLHZhbHVlOm51bGx9XSx0aGlzLmdyb3VwTG9naWM9IkFORCIsdGhpcy5jbGF1c2VzPXtxdWVyeU9iajpbdGhpcy5xdWVyeU9ial0sY2xhdXNlTG9naWM6W10s'@; put 'Z3JvdXBMb2dpYzp0aGlzLmdyb3VwTG9naWN9LHRoaXMubG9naWNPcGVyYXRvcnM9WyJBTkQiLCJPUiJdLHRoaXMucXVlcnlEYXRlVGltZT1bXSx0aGlzLmN1cnJlbnRDbGF1c2VJbmRleD0tMSx0aGlzLmN1cnJlbnRRdWVyeUluZGV4PS0xLHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PW51bGws'@; put 'dGhpcy5pbm5lcldpZHRoPXdpbmRvdy5zY3JlZW4ud2lkdGgsdGhpcy5pbm5lcldpZHRoPjc2OCYmKHRoaXMubm9Cb3JkZXI9ImJvcmRlci1sZWZ0OiAycHggc29saWQgZ3JheTsiKX1nZXRRdWVyeURhdGVUaW1lKHIsaSl7bGV0IG89dGhpcy5xdWVyeURhdGVUaW1lLmZpbmQoYT0+YS5jbGF1'@; put 'c2VJbmRleD09PXImJmEucXVlcnlJbmRleD09PWkpO2lmKCFvKXtjb25zdCBhPXRoaXMucXVlcnlEYXRlVGltZS5wdXNoKHtjbGF1c2VJbmRleDpyLHF1ZXJ5SW5kZXg6aSxkYXRlOiIiLHRpbWU6IiJ9KS0xO289dGhpcy5xdWVyeURhdGVUaW1lW2FdfXJldHVybiBvfXVzZVBpY2tlcnNDaGFu'@; put 'Z2UoKXt0aGlzLnF1ZXJ5RGF0ZVRpbWU9W10sdGhpcy51c2VQaWNrZXJzJiZ0aGlzLmNsYXVzZXMucXVlcnlPYmouZm9yRWFjaChyPT57ci5lbGVtZW50cy5mb3JFYWNoKGk9PntbIkRBVEVUSU1FIiwiVElNRSIsIkRBVEUiXS5pbmNsdWRlcyhpLmRkdHlwZSkmJmkudmFsdWVWYXJpYWJsZSYm'@; put 'KGkudmFsdWU9IiIsaS52YWx1ZVZhcmlhYmxlPSExKX0pfSl9cmVzZXRGaWx0ZXIoKXt0aGlzLndoZXJlU3RyaW5nPXZvaWQgMCx0aGlzLndoZXJlQ2xhdXNlPXZvaWQgMCx0aGlzLnF1ZXJ5T2JqPXtlbGVtZW50czpbe2xvZ2ljOm51bGwsdHlwZTpudWxsLGRkdHlwZTpudWxsLHZhcmlhYmxl'@; put 'Om51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XX0sdGhpcy5jbGF1c2VzPXtxdWVyeU9iajpbdGhpcy5xdWVyeU9ial0sY2xhdXNlTG9naWM6W10sZ3JvdXBMb2dpYzp0aGlzLmdyb3VwTG9naWN9LHRoaXMud2hlcmVDbGF1c2VGbighMCl9c2V0'@; put 'VG9HbG9iYWxzKCl7aWYoIXRoaXMuY2FjaGluZylyZXR1cm47Y29uc3Qgcj1oSyhVbi5yb290UGFyYW0sdGhpcy52aWV3Ym94SWQpOyRjKFVuLHIpLmZpbHRlci5ncm91cExvZ2ljPXRoaXMuZ3JvdXBMb2dpYywic3RyaW5nIj09dHlwZW9mIHRoaXMud2hlcmVDbGF1c2UmJigkYyhVbixyKS5m'@; put 'aWx0ZXIud2hlcmVDbGF1c2U9dGhpcy53aGVyZUNsYXVzZSksInN0cmluZyI9PXR5cGVvZiB0aGlzLmxpYmRzJiYoJGMoVW4scikuZmlsdGVyLmxpYmRzPXRoaXMubGliZHMpLCRjKFVuLHIpLmZpbHRlci5jbGF1c2VzPXRoaXMuY2xhdXNlc31nZXRGcm9tR2xvYmFscygpe2lmKCF0aGlzLmNh'@; put 'Y2hpbmcpcmV0dXJuO2NvbnN0IHI9aEsoVW4ucm9vdFBhcmFtLHRoaXMudmlld2JveElkKTskYyhVbixyKS5maWx0ZXIuY29scy5sZW5ndGg+MCYmKHRoaXMuY29scz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCRjKFVuLHIpLmZpbHRlci5jb2xzKSkpLCRjKFVuLHIpLmZpbHRlci52YWxz'@; put 'Lmxlbmd0aD4wJiYodGhpcy52YWxzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoJGMoVW4scikuZmlsdGVyLnZhbHMpKSksIiIhPT0kYyhVbixyKS5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBMb2dpYz0kYyhVbixyKS5maWx0ZXIuZ3JvdXBMb2dpYyx0aGlzLndoZXJlQ2xhdXNl'@; put 'PSRjKFVuLHIpLmZpbHRlci53aGVyZUNsYXVzZSx0aGlzLmxpYmRzPSRjKFVuLHIpLmZpbHRlci5saWJkcyx0aGlzLmNsYXVzZXM9JGMoVW4scikuZmlsdGVyLmNsYXVzZXMsdGhpcy53aGVyZUNsYXVzZUZuKCkpfXNldEdyb3VwTG9naWMocil7dGhpcy5ncm91cExvZ2ljPXIsdGhpcy5jbGF1'@; put 'c2VzLmdyb3VwTG9naWM9cix0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfWRhdGVDaGFuZ2UocixpLG8sYSxsKXtsZXQgdT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0ZVRvU2FzRGF0ZShyKTsiQkVUV0VFTiI9PT1pLm9wZXJhdG9yJiZ2b2lkIDAhPT1s'@; put 'JiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW29dLnZhbHVlW2xdPXUpLHRoaXMuc2V0VmFyaWFibGVWYWx1ZXModSxvLGEpfWRhdGVUaW1lQ2hhbmdlKHIsaSxvLGEpe2NvbnN0IGw9dGhpcy5nZXRRdWVyeURhdGVUaW1lKG8saSk7aWYoIiI9PT1sLmRhdGUpe2lmKCIiPT09'@; put 'ci52YWx1ZSlyZXR1cm47bC5kYXRlPXIudmFsdWUuc3BsaXQoIjoiKVswXX1jb25zdCB1PXBhcnNlSW50KGwudGltZS5zcGxpdCgiOiIpWzBdKSxnPXBhcnNlSW50KGwudGltZS5zcGxpdCgiOiIpWzFdKSxFPXBhcnNlSW50KGwudGltZS5zcGxpdCgiOiIpWzJdKXx8MDtsZXQgTz1uZXcgRGF0'@; put 'ZShsLmRhdGUpLFo9bmV3IERhdGUoTy5nZXRGdWxsWWVhcigpLE8uZ2V0TW9udGgoKSxPLmdldERhdGUoKSx1LGcsRSksZWU9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRKc0RhdGVUb1Nhc0RhdGUoWiwic2Vjb25kcyIpOyJCRVRXRUVOIj09PXIub3BlcmF0b3ImJnZvaWQgMCE9PWEmJih0'@; put 'aGlzLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbaV0udmFsdWVbYV09ZWUpLHRoaXMuc2V0VmFyaWFibGVWYWx1ZXMoZWUsaSxvKX10aW1lQ2hhbmdlKHIsaSxvLGEsbCl7cj1yLnRhcmdldC52YWx1ZTtsZXQgZWU9NjAqcGFyc2VJbnQoci5zcGxpdCgiOiIpWzBdKSo2MCs2MCpwYXJz'@; put 'ZUludChyLnNwbGl0KCI6IilbMV0pKyhwYXJzZUludChyLnNwbGl0KCI6IilbMl0pfHwwKTsiQkVUV0VFTiI9PT1pLm9wZXJhdG9yJiZ2b2lkIDAhPT1sJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW29dLnZhbHVlW2xdPWVlKSx0aGlzLnNldFZhcmlhYmxlVmFsdWVzKGVl'@; put 'LG8sYSl9ZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihyLGkpe2xldCBvPVtdO2lmKHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg+MXx8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3JdLmVsZW1lbnRzLmxlbmd0aD4xKWZvcihsZXQgYT0wO2E8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0'@; put 'aDthKyspZm9yKGxldCBsPTA7bDx0aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHMubGVuZ3RoO2wrKyl7aWYoYT09PXImJmw9PT1pfHxbbnVsbCx2b2lkIDBdLmluY2x1ZGVzKHRoaXMuY2xhdXNlcy5xdWVyeU9ialthXS5lbGVtZW50c1tsXS52YXJpYWJsZSl8fFtudWxsLHZvaWQg'@; put 'MF0uaW5jbHVkZXModGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW2xdLm9wZXJhdG9yKXx8W251bGwsdm9pZCAwXS5pbmNsdWRlcyh0aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbbF0udmFsdWUpKWNvbnRpbnVlO2xldCB1PSIiO2NvbnN0IGc9dGhpcy5jbGF1c2Vz'@; put 'LnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW2xdLm9wZXJhdG9yLEU9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW2xdLnZhcmlhYmxlOyJCRVRXRUVOIj09PWc/dT1gJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbbF0udmFsdWVbMF19IEFORCAke3RoaXMuY2xhdXNl'@; put 'cy5xdWVyeU9ialthXVtsXS52YWx1ZVsxXX1gOiJJTiI9PT1nfHwiTk9UIElOIj09PWc/KHRoaXMuY2xhdXNlcy5xdWVyeU9ialthXVtsXS52YWx1ZS5mb3JFYWNoKE89PntpZihPLmNoZWNrZWQpe2xldCBaPU8udmFsOyJzdHJpbmciIT10eXBlb2YgWnx8KDAseTQuaXNTcGVjaWFsTWlzc2lu'@; put 'ZykoWik/dS5sZW5ndGg+MD91Kz1gLCR7Wn1gOnU9YCgke1p9YDp1Lmxlbmd0aD4wP3UrPWAsJyR7Wn0nYDp1PWAoJyR7Wn0nYH19KSx1Lmxlbmd0aD4wJiYodSs9IikiKSk6IiI9PT10aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbbF0udmFsdWU/dT0iY2hhciI9PT10aGlzLmNs'@; put 'YXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbbF0udHlwZT8iJyAnIjoiLiI6ImNoYXIiPT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW2xdLnR5cGUmJih1PWAnJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbbF0udmFsdWV9J2ApLG8ucHVzaCh7R1JPVVBf'@; put 'TE9HSUM6dGhpcy5jbGF1c2VzLmdyb3VwTG9naWMsU1VCR1JPVVBfTE9HSUM6dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmNsYXVzZUxvZ2ljfHwiQU5EIixTVUJHUk9VUF9JRDphLFZBUklBQkxFX05NOkUsT1BFUkFUT1JfTk06ZyxSQVdfVkFMVUU6dXx8dGhpcy5jbGF1c2VzLnF1ZXJ5T2Jq'@; put 'W2FdLmVsZW1lbnRzW2xdLnZhbHVlfSl9cmV0dXJuIG99Z2V0VmFsdWVzTG9hZE1vcmUocixpLG8sYSl7dmFyIGw9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc3QgdT1sLmxpYmRzfHwiIjt0cnl7aWYodm9pZCAwIT09bC5jb2xzKXtmb3IobGV0IEhlPTA7SGU8bC5jb2xzLmxlbmd0'@; put 'aDtIZSsrKWwuY29sc1tIZV0uTkFNRT09PWkmJihsLnNlbFZhci5pbmRleD1IZSk7Y29uc3QgZz1sLmNvbHNbbC5zZWxWYXIuaW5kZXhdLkREVFlQRSx7c3RhcnRyb3c6RSxyb3dzOk99PWwuY2xhdXNlcy5xdWVyeU9ialthXS5lbGVtZW50c1tvXSxaPWwucm93c19pbmNyZW1lbnQsZWU9RStP'@; put 'O2xldCB2ZT1bXTtsLmR5bmFtaWNXaGVyZUNsYXVzZSYmKHZlPWwuZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihhLG8pKTtjb25zdCBNZT1bIkRBVEVUSU1FIiwiVElNRSIsIkRBVEUiXS5pbmNsdWRlcyhnKTtsLnNhc1N0b3JlU2VydmljZS5nZXRRdWVyeVZhbHVlcyhpLHUsdmUsZWUsWiku'@; put 'dGhlbihIZT0+e2NvbnN0IFdlPUhlLnZhbHMse1NUQVJUUk9XOmF0LFJPV1M6Q3QsTk9CUzpBdH09SGUubWV0YVswXTtpZihsLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbb10uc3RhcnRyb3c9YXQsbC5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW29dLnJvd3M9Q3QsbC5jbGF1'@; put 'c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW29dLm5vYnM9QXQsMT09PVdlLmxlbmd0aCYmIiI9PT1XZVswXS5GT1JNQVRURUQmJiIiPT09V2VbMF0uVU5GT1JNQVRURUQ/ci5sb2FkTW9yZUZpbmlzaGVkKCExKToobC5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW29dLnZhbHVlcy5wdXNo'@; put 'KC4uLldlLm1hcChnbj0+e2NvbnN0IFRuPSJudW0iPT09SGUuJHZhbHMudmFycy5VTkZPUk1BVFRFRC50eXBlO2xldCBxcj1UbiYmKDAseTQuaXNTcGVjaWFsTWlzc2luZykoZ24uVU5GT1JNQVRURUQpPyIuIitnbi5VTkZPUk1BVFRFRDpnbi5VTkZPUk1BVFRFRDtyZXR1cm4gVG4mJm51bGw9'@; put 'PT1xciYmKHFyPSIuIikse2Zvcm1hdHRlZDpNZT9nbi5GT1JNQVRURUQuc3BsaXQoIi4iKVswXTpnbi5GT1JNQVRURUQsdW5mb3JtYXR0ZWQ6cXJ9fSkpLHIubG9hZE1vcmVGaW5pc2hlZChBdC1sLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbb10udmFsdWVzLmxlbmd0aD4wKSksbC53'@; put 'aGVyZUNsYXVzZUZuKCksbC5zZXRUb0dsb2JhbHMoKSxsLndoZXJlQ2xhdXNlTG9hZGluZz0hMSxudWxsIT09bC5wZW5kaW5nSU5WYWx1ZXNTZXQpe2NvbnN0e2NsYXVzZUluZGV4Okt0LHF1ZXJ5SW5kZXg6cXR9PWwucGVuZGluZ0lOVmFsdWVzU2V0O2wuc2V0SU5WYWx1ZXMoS3QscXQpLGwu'@; put 'cGVuZGluZ0lOVmFsdWVzU2V0PW51bGx9bC5jZGYuZGV0ZWN0Q2hhbmdlcygpfSkuY2F0Y2goSGU9PntsLndoZXJlQ2xhdXNlTG9hZGluZz0hMX0pfX1jYXRjaChnKXtsLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoInB1YmxpYy9nZXRjb2x2YWxzIixnKX19KSgpfWdldFZhbHVl'@; put 'cyhyLGksbyl7dmFyIGE9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7YS53aGVyZUNsYXVzZUxvYWRpbmc9ITA7bGV0IGw9IiI7dm9pZCAwIT09YS5saWJkcyYmKGw9YS5saWJkcyksYS5jbGVhclZhbHVlcyhpLG8pLGEuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tpXS52YWx1ZXM9'@; put 'W10sYS5jbGF1c2VzLnF1ZXJ5T2JqW29dLmVsZW1lbnRzW2ldLnZhbHVlPSIiLGEuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tpXS5vcGVyYXRvcj0iPSIsYS5jbGF1c2VzLnF1ZXJ5T2JqW29dLmVsZW1lbnRzW2ldLnZhcmlhYmxlPXI7dHJ5e2lmKHZvaWQgMCE9PWEuY29scyl7Zm9y'@; put 'KGxldCBPPTA7TzxhLmNvbHMubGVuZ3RoO08rKylhLmNvbHNbT10uTkFNRT09PXImJihhLnNlbFZhci5pbmRleD1PKTtjb25zdCB1PWEuY29sc1thLnNlbFZhci5pbmRleF0uRERUWVBFO2EuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tpXS5kZHR5cGU9dSxhLmNsYXVzZXMucXVlcnlP'@; put 'Ympbb10uZWxlbWVudHNbaV0udHlwZT1hLmNvbHNbYS5zZWxWYXIuaW5kZXhdLlRZUEUsYS5jbGF1c2VzLnF1ZXJ5T2JqW29dLmVsZW1lbnRzW2ldLm9wZXJhdG9ycz0ibnVtIj09PWEuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tpXS50eXBlP2EubnVtT3BlcmF0b3JzOmEuY2hhck9w'@; put 'ZXJhdG9ycztsZXQgZz1bXTthLmR5bmFtaWNXaGVyZUNsYXVzZSYmKGc9YS5keW5hbWljV2hlcmVDbGF1c2VDcmVhdG9yKG8saSkpO2NvbnN0IEU9WyJEQVRFVElNRSIsIlRJTUUiLCJEQVRFIl0uaW5jbHVkZXModSk7YS5zYXNTdG9yZVNlcnZpY2UuZ2V0UXVlcnlWYWx1ZXMocixsLGcsMSxh'@; put 'LmluaXRpYWxfcm93cykudGhlbihPPT57Y29uc3QgWj1PLnZhbHMse1NUQVJUUk9XOmVlLFJPV1M6dmUsTk9CUzpNZX09Ty5tZXRhWzBdO2lmKGEuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tpXS5zdGFydHJvdz1lZSxhLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbaV0ucm93'@; put 'cz12ZSxhLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbaV0ubm9icz1NZSxhLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbaV0udmFsdWVzPVoubWFwKEhlPT57Y29uc3QgV2U9Im51bSI9PT1PLiR2YWxzLnZhcnMuVU5GT1JNQVRURUQudHlwZTtsZXQgQ3Q9V2UmJigwLHk0Lmlz'@; put 'U3BlY2lhbE1pc3NpbmcpKEhlLlVORk9STUFUVEVEKT8iLiIrSGUuVU5GT1JNQVRURUQ6SGUuVU5GT1JNQVRURUQ7cmV0dXJuIFdlJiZudWxsPT09Q3QmJihDdD0iLiIpLHtmb3JtYXR0ZWQ6RT9IZS5GT1JNQVRURUQuc3BsaXQoIi4iKVswXTpIZS5GT1JNQVRURUQsdW5mb3JtYXR0ZWQ6Q3R9'@; put 'fSkuc2xpY2UoMCwyZTMpLGEud2hlcmVDbGF1c2VGbigpLGEuc2V0VG9HbG9iYWxzKCksYS53aGVyZUNsYXVzZUxvYWRpbmc9ITEsbnVsbCE9PWEucGVuZGluZ0lOVmFsdWVzU2V0KXtjb25zdHtjbGF1c2VJbmRleDpIZSxxdWVyeUluZGV4OldlfT1hLnBlbmRpbmdJTlZhbHVlc1NldDthLnNl'@; put 'dElOVmFsdWVzKEhlLFdlKSxhLnBlbmRpbmdJTlZhbHVlc1NldD1udWxsfWEuY2RmLmRldGVjdENoYW5nZXMoKX0pLmNhdGNoKE89PnthLndoZXJlQ2xhdXNlTG9hZGluZz0hMX0pfX1jYXRjaCh1KXthLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoInB1YmxpYy9nZXRjb2x2YWxz'@; put 'Iix1KX19KSgpfWdldGxvZ2ljKHIpe3RoaXMubG9naWM9cix0aGlzLndoZXJlQ2xhdXNlRm4oKX1zZXRMb2dpYygpe3RoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9aXNBcnIocil7cmV0dXJuIHIgaW5zdGFuY2VvZiBBcnJheSYmci5sZW5ndGg+MCYmdHlwZW9mIHJb'@; put 'MF0uY2hlY2tlZDwidSJ9c2VsZWN0ZWRMYWJlbENoYW5nZShyLGkpe2kudmFsdWVWYXJpYWJsZT0iVmFyaWFibGUiPT09cixpLnZhbHVlPSIiLHRoaXMud2hlcmVDbGF1c2VGbigpfXZhcmlhYmxlSW5wdXRDaGFuZ2UocixpLG8sYSl7dGhpcy5nZXRWYWx1ZXMocixpLG8pfXNldFZhcmlhYmxl'@; put 'VmFsdWVzKHIsaSxvKXtsZXQgYT10aGlzLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbaV0ub3BlcmF0b3I7IkJFVFdFRU4iIT09YSYmIklOIiE9PWEmJiJOT1QgSU4iIT09YSYmKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tpXS52YWx1ZT1yLnRvU3RyaW5nKCkpLHRo'@; put 'aXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9c2V0VmFyaWFibGVPcGVyYXRvcihyLGksbyl7bGV0IGE9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW29dLmVsZW1lbnRzW3JdLnZhbHVlO2EgaW5zdGFuY2VvZiBBcnJheSYmIklOIiE9PWkmJiJOT1QgSU4iIT09aSYmKGE9YSBp'@; put 'bnN0YW5jZW9mIEFycmF5JiYyPT09YS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYVswXT9hWzBdOiIiKSx0aGlzLmNsZWFyVmFsdWVzT3BlcmF0b3IocixvKSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbcl0ub3BlcmF0b3I9aSwoIj0iPT09aXx8Ij4iPT09aXx8IjwiPT09'@; put 'aXx8Ijw9Ij09PWl8fCI+PSI9PT1pfHwiTkUiPT09aSkmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbcl0udmFsdWU9YSksIkJFVFdFRU4iPT09aSYmKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtvXS5lbGVtZW50c1tyXS52YWx1ZT1bXSx0aGlzLmNsYXVzZXMucXVlcnlPYmpb'@; put 'b10uZWxlbWVudHNbcl0udmFsdWUucHVzaChhKSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbb10uZWxlbWVudHNbcl0udmFsdWUucHVzaCgiIikpLCgiSU4iPT09aXx8Ik5PVCBJTiI9PT1pKSYmdGhpcy5zZXRJTlZhbHVlcyhvLHIpLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9i'@; put 'YWxzKCl9c2V0SU5WYWx1ZXMocixpKXtjb25zdCBvPVtdLGE9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3JdLmVsZW1lbnRzW2ldLnZhbHVlczthLmxlbmd0aDwxJiYodGhpcy5wZW5kaW5nSU5WYWx1ZXNTZXQ9e2NsYXVzZUluZGV4OnIscXVlcnlJbmRleDppfSk7Zm9yKGxldCBsPTA7bDxhLmxl'@; put 'bmd0aDtsKyspby5wdXNoKHtjaGVja2VkOiExLHZhbDphW2xdLmZvcm1hdHRlZH0pO3RoaXMuY2xhdXNlcy5xdWVyeU9ialtyXS5lbGVtZW50c1tpXS52YWx1ZT1vfWNsZWFyVmFsdWVzKHIsaSl7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ldLmVsZW1lbnRzW3JdLnZhbHVlPSIifWNsZWFyVmFs'@; put 'dWVzT3BlcmF0b3IocixpKXtsZXQgbz10aGlzLmNsYXVzZXMucXVlcnlPYmpbaV0uZWxlbWVudHNbcl0ub3BlcmF0b3I7KCJCRVRXRUVOIj09PW98fCJJTiI9PT1vfHwiTk9UIElOIj09PW98fCJDT05UQUlOUyI9PT1vKSYmdGhpcy5jbGVhclZhbHVlcyhyLGkpfWhhc0ludmFsaWRDbHVhc2Uo'@; put 'cil7Zm9yKGxldCBpIG9mIHIpaWYoaS5pbnZhbGlkQ2xhdXNlPSExLCIiPT09aS52YWx1ZSYmIk5FIiE9PWkub3BlcmF0b3ImJiJDT05UQUlOUyIhPT1pLm9wZXJhdG9yfHxudWxsPT09aS52YXJpYWJsZXx8bnVsbD09PWkub3BlcmF0b3J8fG51bGw9PT1pLnZhbHVlKXJldHVybiBpLmludmFs'@; put 'aWRDbGF1c2U9ITAsITA7cmV0dXJuIHIuaW52YWxpZENsYXVzZT0hMSwhMX1oYXNJbnZhbGlkR3JvdXBDbHVhc2UoKXtmb3IobGV0IHI9MDtyPHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg7cisrKXtpZih0aGlzLmhhc0ludmFsaWRDbHVhc2UodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3Jd'@; put 'LmVsZW1lbnRzKSlyZXR1cm4gdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3JdLmludmFsaWRDbGF1c2U9ITAsITA7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3JdLmludmFsaWRDbGF1c2U9ITF9cmV0dXJuITF9YWRkQ2xhdXNlKHIpe2lmKHRoaXMuaGFzSW52YWxpZENsdWFzZSh0aGlzLmNsYXVzZXMu'@; put 'cXVlcnlPYmpbcl0uZWxlbWVudHMpKXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik7dGhpcy5jbGF1c2VBbXQucHVz'@; put 'aCgiIiksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3JdLmVsZW1lbnRzLnB1c2goe2xvZ2ljOm51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119KTtsZXQgaT10aGlzLmNsYXVzZXMucXVlcnlPYmpbcl0uY2xh'@; put 'dXNlTG9naWM7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3JdLmNsYXVzZUxvZ2ljPXR5cGVvZiBpPiJ1Ij8iQU5EIjoiT1IiPT09aT8iT1IiOiJBTkQiLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9YWRkR3JvdXBDbGF1c2UoKXt0aGlzLmhhc0ludmFsaWRHcm91cENs'@; put 'dWFzZSgpP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik6KHRoaXMuY2xhdXNlcy5xdWVyeU9iai5wdXNoKHtlbGVtZW50czpbe2xvZ2lj'@; put 'Om51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XX0pLHRoaXMuc2V0VG9HbG9iYWxzKCkpfWlzSW5IdG1sQ29sbGVjdGlvbihyLGkpe2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb10udmFs'@; put 'dWU9PT1yKXJldHVybiEwO3JldHVybiExfXJlbW92ZUdyb3VwQ2xhdXNlKHIpe3RoaXMuY2xhdXNlcy5xdWVyeU9iai5zcGxpY2UociwxKSx0aGlzLndoZXJlQ2xhdXNlRm4oKX1yZW1vdmVDbGF1c2UocixpKXt0aGlzLmNsYXVzZXMucXVlcnlPYmpbaV0uZWxlbWVudHMuc3BsaWNlKHIsMSks'@; put 'dGhpcy53aGVyZUNsYXVzZUZuKCksdGhpcy5zZXRUb0dsb2JhbHMoKX13aGVyZUNsYXVzZUZuKHI9ITEpe2NvbnN0IGk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmNsYXVzZXMpO2lmKHImJihpLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzPVtdKSx2b2lkIDAhPT10aGlzLmxpYmRz'@; put 'KXtsZXQgbz10aGlzLnNhc1N0b3JlU2VydmljZS53aGVyZUNsYXVzZUNyZWF0b3IoaSx0aGlzLmdyb3VwTG9naWMsdGhpcy5saWJkcyk7cnx8KHRoaXMud2hlcmVDbGF1c2U9by53aGVyZUNsYXVzZSx0aGlzLndoZXJlU3RyaW5nPW8uc3RyaW5nKX19bmdBZnRlclZpZXdJbml0KCl7dmFyIHI9'@; put 'dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7ci5fcmVtb3ZlUXJ5PXIuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZVF1ZXJ5LnN1YnNjcmliZShpPT57ci5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD49MSYmKHIuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg9MSxyLmNsYXVzZXMucXVlcnlPYmpbMF0u'@; put 'ZWxlbWVudHMubGVuZ3RoPj0xJiYoci5jbGF1c2VzLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzLmxlbmd0aD0xLHIuY2xhdXNlcy5xdWVyeU9ialswXS5lbGVtZW50cz1bXSxyLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMucHVzaCh7bG9naWM6bnVsbCx0eXBlOm51bGwsdmFyaWFibGU6bnVs'@; put 'bCxvcGVyYXRvcjpudWxsLHZhbHVlOm51bGwsdmFsdWVzOltdLG9wZXJhdG9yczpbXX0pLHIud2hlcmVDbGF1c2VGbigpKSl9KSxyLmNvbHVtbnNTdWI9ci5zYXNTdG9yZVNlcnZpY2UuY29sdW1ucy5zdWJzY3JpYmUoaT0+e2xldCBvPWkuZGF0YS5jb2xzO2NvbnN0IGE9aEsoVW4ucm9vdFBh'@; put 'cmFtLHIudmlld2JveElkKTsiaG9tZSIhPT1Vbi5yb290UGFyYW0mJiJlZGl0b3IiIT09VW4ucm9vdFBhcmFtfHwoci5jb2xzPW8sci5saWJkcz1pLmxpYmRzLCRjKFVuLGEpLmZpbHRlci5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKSwidmlldyI9PT1Vbi5yb290UGFyYW0m'@; put 'JiRjKFVuLGEpLmZpbHRlci5jb2xzLmxlbmd0aDwxJiYoci5jb2xzPW8sci5saWJkcz1pLmxpYmRzLCRjKFVuLGEpLmZpbHRlci5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKSxyLmxpYmRzfHwoci5saWJkcz1pLmxpYmRzKX0pLHIudmFsdWVzU3ViPXIuc2FzU3RvcmVTZXJ2'@; put 'aWNlLnZhbHVlcy5zdWJzY3JpYmUoaT0+e2NvbnN0IG89aEsoVW4ucm9vdFBhcmFtLHIudmlld2JveElkKTskYyhVbixvKS5maWx0ZXIudmFscy5sZW5ndGg8MSYmKHIudmFscz1pLnZhbHMsJGMoVW4sbykuZmlsdGVyLnZhbHM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpLnZhbHMpKSl9'@; put 'KX0pKCl9b25BdXRvY29tcGxldGVMb2FkaW5nTW9yZShyLGksbyxhKXt0aGlzLmdldFZhbHVlc0xvYWRNb3JlKHIsaSxvLGEpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZ2V0RnJvbUdsb2JhbHMoKSxzZXRUaW1lb3V0KCgpPT57bGV0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Zh'@; put 'bHNfdmFyX2lkMF8wIik7ciYmci5mb2N1cygpfSw1MDApfW5nT25EZXN0cm95KCl7dGhpcy5jb2x1bW5zU3ViJiZ0aGlzLmNvbHVtbnNTdWIudW5zdWJzY3JpYmUoKSx0aGlzLnZhbHVlc1N1YiYmdGhpcy52YWx1ZXNTdWIudW5zdWJzY3JpYmUoKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAy'@; put 'NzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZShCcCksemUodWQpLHplKGZoKSx6ZShVbCkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtcXVlcnkiXV0saW5wdXRzOntjYWNoaW5nOiJjYWNoaW5nIix2aWV3Ym94SWQ6InZpZXdib3hJZCJ9'@; put 'LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2JvKFt7cHJvdmlkZTpGNSx1c2VWYWx1ZToiZW4tR0IifV0pXSxkZWNsczozOSx2YXJzOjksY29uc3RzOltbInBpY2tlciIsIiJdLFsibm90UGlja2VyIiwiIl0sWyJub3RQaWNrZXJSYW5nZSIsIiJdLFsiY2hlY2tib3hWYWx1ZXMiLCIiXSxbMSwi'@; put 'Y2xyLWZsZXgtcm93IiwiY2xyLWZvcm0tY29udHJvbCIsIm0tMCJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbImNsckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsxLCJjbHItY29udHJvbC1sYWJlbCJdLFsxLCJjbHIt'@; put 'Y29udHJvbC1jb250YWluZXIiLCJtbC0xNSJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLCJpZCIsInVzZVBpY2tlcnMiLDMsIm5nTW9kZWxDaGFuZ2UiLCJjaGFuZ2UiLCJuZ01vZGVsIl0sWzEsImNsci1yb3ciXSxbMSwic2VsZWN0IiwiY2xyLWNvbC1tZC0yIiwibWIt'@; put 'MzAiXSxbImNsclNlbGVjdCIsIiIsMywibmdNb2RlbENoYW5nZSIsImRpc2FibGVkIiwibmdNb2RlbCJdLFszLCJzZWxlY3RlZCJdLFsxLCJjbHItY29sLW1kLTEwIiwibWItMzAiXSxbMSwibGluZS1udW1iZXJzIiwibGFuZ3VhZ2UtbWFya3VwIl0sWzEsImxhbmd1YWdlLXNxbCJdLFsxLCJj'@; put 'b250ZW50Il0sWzEsImNsYXVzZXMtY29udGFpbmVyIiwiY2xyLWNvbC1tZC0xMiJdLFsxLCJjbGF1c2Utcm93Il0sWzEsInByb2dyZXNTdGF0aWMiLCJwcm9ncmVzcyIsImxvb3AiXSxbMSwiY2xhdXNlLWxvZ2ljIiwiY2xyLWNvbC1tZC0yIl0sWzEsInNlbGVjdCJdLFsiY2xyU2VsZWN0Iiwi'@; put 'IiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCIsImRpc2FibGVkIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwiYnRuLWJsb2NrIiwibXQtMTAiXSxbMSwiY2xhdXNlLXF1ZXJ5IiwiY2xyLWNvbC1tZC0xMCJdLFsic2hhcGUiLCJ0aW1lcyIsInNpemUiLCIzNiIsMSwicmVtb3ZlLWdyb3Vw'@; put 'LWNsYXVzZS1idXR0b24iXSxbMSwiY2xyLXJvdyIsMywiaW52YWxpZC1jbGF1c2UiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJidG4tYmxvY2siLCJtdC0xMCIsMywiY2xpY2siXSxbInNoYXBlIiwicGx1cyJdLFsic2hhcGUiLCJ0aW1lcyIsInNpemUiLCIzNiIsMSwicmVtb3ZlLWdyb3Vw'@; put 'LWNsYXVzZS1idXR0b24iLDMsImNsaWNrIl0sWzEsInZhcmlhYmxlLWNvbCIsImZvcm0tZ3JvdXAiLCJjbHItY29sLW1kLTMiXSxbMSwiZGF0YWxpc3Qtd3JhcHBlciJdLFsibGFiZWwiLCJWYXJpYWJsZSIsMywidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiLCJpZCIsImlucHV0SWQiLCJl'@; put 'bWl0T25seVNlbGVjdGVkIiwidmFsdWUiXSxbMSwib3BlcmF0b3ItY29sIiwiZm9ybS1ncm91cCIsImNsci1jb2wtbWQtMyJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsiY2xhc3MiLCJ2YWx1ZS1jb2wgZm9ybS1ncm91cCBjbHItY29sLW1kLTMiLDQs'@; put 'Im5nVmFyIl0sWzEsImNsYXVzZS1idXR0b25zIiwiY2xyLWNvbC1tZC0yIiwiYnRuLWdyb3VwIl0sWzEsImJ0biIsImJ0bi13YXJuaW5nIiwiYnRuLWJsb2NrIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJzaGFwZSIsIm1pbnVzIl0sWzEsImJ0biIsImJ0bi1zdWNjZXNzIiwiYnRuLWJsb2Nr'@; put 'IiwzLCJjbGljayJdLFsxLCJ2YWx1ZS1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWzEsImNoZWNrYm94LXZhbHMiXSxbMSwic2luZ2xlLWZpZWxkLXZhbHMiXSxbMSwicmFuZ2UtdmFscyJdLFsxLCJjb250YWlucy12YWxzIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJi'@; put 'dG4tbGluayIsMywiY2xpY2siXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImZyb20iXSxbMSwidG8iXSxbInR5cGUiLCJ0ZXh0IiwxLCJpbnB1dC12YWwiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJsYWJlbCIsIlZhbHVlIiwi'@; put 'dHlwZSIsImRhdGUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJZCIsInZhbHVlIl0sWyJsYWJlbCIsIlZhbHVlIiwidHlwZSIsInRpbWUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJZCIsInZhbHVlIl0sWyJsYWJlbCIsIlZhbHVlIiwidHlwZSIsImRhdGUiLDMsInZhbHVl'@; put 'Q2hhbmdlIiwiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwiZGF0ZSIsMywidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiLCJkaXNhYmxlU29mdHNlbGVjdCIsImlucHV0SWQiLCJ2YWx1ZSJdLFsidHlwZSIsInRpbWUiLDMs'@; put 'InZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50IiwiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwidGltZSIsMywib25JbnB1dEV2ZW50IiwiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiXSxbImxhYmVsIiwi'@; put 'VmFsdWUiLDMsInNlbGVjdGVkTGFiZWxDaGFuZ2UiLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCIsIm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUiLCJzZWNvbmRMYWJlbCIsImVtaXRPbmx5U2VsZWN0ZWQiLCJpbnB1dElkIiwidmFsdWUiLCJlbmFibGVMb2FkTW9yZSJdLFszLCJ2YWx1'@; put 'ZSJdLFsibGFiZWwiLCJWYWx1ZSIsMywidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiLCJvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlIiwiaW5wdXRJZCIsInZhbHVlIiwiZW5hYmxlTG9hZE1vcmUiLCJkaXNhYmxlZCJdLFsxLCJpbi12YWx1ZXMtbW9kYWwiLDMsImNsck1vZGFsT3BlbiIs'@; put 'ImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJuby12YWx1ZXMiXSxbMSwiZm9ybS1ibG9jayJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIs'@; put 'ImNoZWNrYm94IiwiY2xyQ2hlY2tib3giLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7aWYoMSZpKXtjb25zdCBhPXduKCk7SigwLCJkaXYiLDQpKDEsImRpdiIsNSkoMiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgzLCJpbnB1dCIsNiks'@; put 'aGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLmR5bmFtaWNXaGVyZUNsYXVzZSx1KXx8KG8uZHluYW1pY1doZXJlQ2xhdXNlPXUpLFhlKHUpfSksdGUoKSxKKDQsImxhYmVsIiw3KSxTZSg1LCJEeW5hbWljIHdoZXJlIGNsYXVzZSIpLHRlKCkoKSgpLEoo'@; put 'NiwiZGl2Iiw4KSg3LCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDgsImlucHV0Iiw5KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8udXNlUGlja2Vycyx1KXx8KG8udXNlUGlja2Vycz11KSxYZSh1KX0pLHd0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIFllKGEpLFhlKG8udXNlUGlja2Vyc0NoYW5nZSgpKX0pLHRlKCksSig5LCJsYWJlbCIsNyksU2UoMTAsIiBVc2UgcGlja2VycyAiKSx0ZSgpKCkoKSgpLEooMTEsImRpdiIsMTApKDEyLCJkaXYiLDExKSgxMywiY2xyLXNlbGVjdC1jb250YWluZXIiKSgxNCwibGFiZWwiKSxTZSgxNSwi'@; put 'R3JvdXAgbG9naWMiKSx0ZSgpLEooMTYsInNlbGVjdCIsMTIpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5ncm91cExvZ2ljLHUpfHwoby5ncm91cExvZ2ljPXUpLFhlKHUpfSksd3QoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFll'@; put 'KGEpLFhlKG8uc2V0R3JvdXBMb2dpYyhvLmdyb3VwTG9naWMpKX0pLF9vKDE3LEdubiwyLDIsIm9wdGlvbiIsMTMsQ28pLHRlKCkoKSgpLEooMTksImRpdiIsMTQpKDIwLCJwcmUiLDE1KSxTZSgyMSwiICAgICAgIiksdnQoMjIsJG5uLDYsMCksSigyMywiY29kZSIsMTYpLFNlKDI0KSx0ZSgp'@; put 'LFNlKDI1LCJcbiAgICAiKSx0ZSgpKCkoKSxKKDI2LCJkaXYiLDE3KSgyNywiZGl2IiwxOCksdnQoMjgscW5uLDEsMCwiZGl2IiksX28oMjksZHJuLDE3LDYsImRpdiIsMTksQ28pLHRlKCkoKSxZbigzMSxncm4sMywxLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLGNkKSgzMyx3cm4sMyw3LCJuZy10'@; put 'ZW1wbGF0ZSIsbnVsbCwxLGNkKSgzNSxTcm4sMyw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwyLGNkKSgzNyx4cm4sOSw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwzLGNkKX0yJmkmJihpZSgzKSxkaSgibmdNb2RlbCIsby5keW5hbWljV2hlcmVDbGF1c2UpLGllKDUpLGRpKCJuZ01vZGVsIixvLnVzZVBp'@; put 'Y2tlcnMpLGllKDgpLHJ0KCJkaXNhYmxlZCIsKG51bGw9PW8uY2xhdXNlc3x8bnVsbD09by5jbGF1c2VzLnF1ZXJ5T2JqP251bGw6by5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aCk8MSksZGkoIm5nTW9kZWwiLG8uZ3JvdXBMb2dpYyksaWUoKSx5byhvLmxvZ2ljT3BlcmF0b3JzKSxpZSg1KSxf'@; put 'dChvLndoZXJlQ2xhdXNlTG9hZGluZz8yMjotMSksaWUoMikscHIoby53aGVyZUNsYXVzZSksaWUoMyksd3IoImNsci1jb2wtbWQtMTAiLChudWxsPT1vLmNsYXVzZXN8fG51bGw9PW8uY2xhdXNlcy5xdWVyeU9iaj9udWxsOm8uY2xhdXNlcy5xdWVyeU9iai5sZW5ndGgpPjEpLGllKCksX3Qo'@; put 'KG51bGw9PW8uY2xhdXNlc3x8bnVsbD09by5jbGF1c2VzLnF1ZXJ5T2JqP251bGw6by5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aCk+MT8yODotMSksaWUoKSx5byhvLmNsYXVzZXMucXVlcnlPYmopKX0sZGVwZW5kZW5jaWVzOltJZixjdSx4ZCxtaCxlbCxVMixFdixGZixxYixDTSxYZyxRZyxs'@; put 'dSxIMixLZyxvYyxYbCxSWmUsbUEsam5uLFVubl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCksRzY9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe31vbkNsaWNrKHIpe3IudGFyZ2V0LmZvY3VzKCl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1'@; put 'bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1ZGlyPSRyKHt0eXBlOmUsc2VsZWN0b3JzOltbIiIsImFwcFN0ZWFsRm9jdXMiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGksbyl7MSZpJiZ3dCgiY2xpY2siLGZ1bmN0aW9uKGwpe3JldHVybiBvLm9uQ2xpY2sobCl9'@; put 'KX0sc3RhbmRhbG9uZTohMX0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IEFybj1bInNlYXJjaExpYlRyZWVJbnB1dCJdO2Z1bmN0aW9uIGtybihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDcpfWZ1bmN0aW9uIFJybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24i'@; put 'LDkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLmxpYnJhcmllc1NlYXJjaD0iIixYZShpLmxpYnJhcnlPbkZpbHRlcigpKX0pLHRlKCl9fWZ1bmN0aW9uIElybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIs'@; put 'MykoMSwiZGl2Iiw1KSgyLCJpbnB1dCIsNiwwKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLmxpYnJhcmllc1NlYXJjaCxpKXx8KG8ubGlicmFyaWVzU2VhcmNoPWkpLFhlKGkpfSksd3QoImtleXVwIixmdW5jdGlvbigpe3Jl'@; put 'dHVybiBZZSh0KSxYZShUZSgpLmxpYnJhcnlPbkZpbHRlcigpKX0pLHRlKCksdnQoNCxrcm4sMSwwLCJjbHItaWNvbiIsNyksdnQoNSxScm4sMSwwLCJjbHItaWNvbiIsOCksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1vbygzKSxyPVRlKCk7aWUoMiksZGkoIm5nTW9kZWwiLHIubGlicmFyaWVz'@; put 'U2VhcmNoKSxpZSgyKSxfdCh0LnZhbHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+MD81Oi0xKX19ZnVuY3Rpb24gRHJuKG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsNyl9ZnVuY3Rpb24gTHJuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNv'@; put 'biIsOSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpLFRlKCk7Y29uc3QgaT1vbygzKSxvPVRlKDIpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIGkudmFsdWU9IiIsby5zZWFyY2hTdHJpbmc9IiIsWGUoYS50cmVlT25GaWx0ZXIobywidGFibGVzLlRBQkxFTkFNRSIpKX0pLHRlKCl9fWZ1'@; put 'bmN0aW9uIE9ybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMykoMSwiZGl2Iiw1KSgyLCJpbnB1dCIsMTQsMiksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMikuJGltcGxpY2l0O3JldHVybiBmaShvLnNlYXJj'@; put 'aFN0cmluZyxpKXx8KG8uc2VhcmNoU3RyaW5nPWkpLFhlKGkpfSksd3QoImtleXVwIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMikuJGltcGxpY2l0O3JldHVybiBYZShUZSgpLnRyZWVPbkZpbHRlcihpLCJ0YWJsZXMiKSl9KSx0ZSgpLHZ0KDQsRHJuLDEsMCwiY2xyLWljb24iLDcp'@; put 'LHZ0KDUsTHJuLDEsMCwiY2xyLWljb24iLDgpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9b28oMykscj1UZSgyKS4kaW1wbGljaXQ7aWUoMiksZGkoIm5nTW9kZWwiLHIuc2VhcmNoU3RyaW5nKSxpZSgyKSxfdCh0LnZhbHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+'@; put 'MD81Oi0xKX19ZnVuY3Rpb24gTnJuKG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsMTcpfWZ1bmN0aW9uIEZybihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDE4KX1mdW5jdGlvbiBQcm4obixlKXsxJm4mJihKKDAsInNwYW4iKSxTZSgxLCIgVG8gdW5sb2NrIGFsbCB0YWJsZXMsIGNvbnRh'@; put 'Y3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyAiKSx0ZSgpKX1mdW5jdGlvbiBIcm4obixlKXtpZigxJm4mJihKKDAsImNsci10b29sdGlwLWNvbnRlbnQiLDIwKSx2dCgxLFBybiwyLDAsInNwYW4iKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKS5uZ1ZhcjtpZSgpLF90KHQ/MTotMSl9fWZ1'@; put 'bmN0aW9uIFZybihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDcpfWZ1bmN0aW9uIEJybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24iLDkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KSxUZSgpO2NvbnN0IGk9b28oMyksbz1UZSgzKS4kaW1wbGljaXQsYT1U'@; put 'ZSgzKTtyZXR1cm4gaS52YWx1ZT0iIixvLnNlYXJjaFN0cmluZz0iIixYZShhLnRyZWVPbkZpbHRlcihvLCJjb2x1bW5zLkNPTE5BTUUiKSl9KSx0ZSgpfX1mdW5jdGlvbiBqcm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDMpKDEsImRpdiIsNSkoMiwi'@; put 'aW5wdXQiLDIxLDIpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDMpLiRpbXBsaWNpdDtyZXR1cm4gZmkoby5zZWFyY2hTdHJpbmcsaSl8fChvLnNlYXJjaFN0cmluZz1pKSxYZShpKX0pLHd0KCJrZXl1cCIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBp'@; put 'PVRlKDMpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMykudHJlZU9uRmlsdGVyKGksImNvbHVtbnMuQ09MTkFNRSIpKX0pLHRlKCksdnQoNCxWcm4sMSwwLCJjbHItaWNvbiIsNyksdnQoNSxCcm4sMSwwLCJjbHItaWNvbiIsOCksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1vbygzKSxyPVRlKDMp'@; put 'LiRpbXBsaWNpdDtpZSgyKSxkaSgibmdNb2RlbCIsci5zZWFyY2hTdHJpbmcpLGllKDIpLF90KHQudmFsdWUubGVuZ3RoPDE/NDotMSksaWUoKSxfdCh0LnZhbHVlLmxlbmd0aD4wPzU6LTEpfX1mdW5jdGlvbiBVcm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5v'@; put 'ZGUiKSgxLCJidXR0b24iLDIyKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQsbz1UZSgzKS4kaW1wbGljaXQsYT1UZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkuY29sdW1uT25DbGljayhpLGEsbykpfSksSXQoMiwiY2xyLWljb24iLDIzKSxTZSgz'@; put 'KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoNik7aWUoKSx3cigiY29sdW1uLWFjdGl2ZSIsci5saWJDb2x1bW5BY3RpdmUodC5DT0xVUkkpKSxpZSgyKSxTcigiICIsdC5DT0xOQU1FLCIgIil9fWZ1bmN0aW9uIHpybihuLGUpe2lmKDEmbiYmKHZ0KDAsanJuLDYs'@; put 'MywiY2xyLXRyZWUtbm9kZSIsMyksX28oMSxVcm4sNCwzLCJjbHItdHJlZS1ub2RlIixudWxsLENvKSksMiZuKXtjb25zdCB0PVRlKDIpLiRpbXBsaWNpdDtfdCh0LmNvbHVtbnM/MDotMSksaWUoKSx5byh0LmNvbHVtbnMpfX1mdW5jdGlvbiBXcm4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24o'@; put 'KTtKKDAsImNsci10b29sdGlwIikoMSwiYnV0dG9uIiwxNiksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkubmdWYXIsbz1UZSgpLiRpbXBsaWNpdCxhPVRlKDIpLiRpbXBsaWNpdCxsPVRlKCk7cmV0dXJuIFhlKGk/IiI6bC50YWJsZU9uQ2xpY2soby5UQUJMRVVSSSxvLGEp'@; put 'KX0pLHZ0KDIsTnJuLDEsMCwiY2xyLWljb24iLDE3KSgzLEZybiwxLDAsImNsci1pY29uIiwxOCksU2UoNCksdGUoKSxZbig1LEhybiwyLDEsImNsci10b29sdGlwLWNvbnRlbnQiLDE5KSx2dCg2LHpybiwzLDEpLHRlKCl9aWYoMiZuKXtsZXQgdDtjb25zdCByPWUubmdWYXIsaT1UZSgpLiRp'@; put 'bXBsaWNpdCxvPVRlKDIpLiRpbXBsaWNpdCxhPVRlKCk7aWUoKSx3cigiZGMtbG9ja2VkLWNvbnRyb2wiLHIpKCJhY3RpdmUiLGEubGliVGFiQWN0aXZlKG8uTElCUkFSWVJFRixpKSksaWUoKSxfdCghMD09PSh0PWkuaW5jbHVkZXMoIi1GQyIpKT8yOiExPT09dD8zOi0xKSxpZSgyKSxTcigi'@; put 'ICIsaS5yZXBsYWNlKCItRkMiLCIiKSwiICIpLGllKDIpLF90KGEuaGFzQ29sdW1ucz82Oi0xKX19ZnVuY3Rpb24gWXJuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiwxMSksd3QoImNsaWNrIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNp'@; put 'dCxhPVRlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS50cmVlTm9kZUNsaWNrZWQoaSxvLGEudGFibGVzKSl9KSxoaSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0O3JldHVybiBmaShvLmV4cGFuZGVkLGkpfHwoby5leHBhbmRlZD1p'@; put 'KSxYZShpKX0pLFluKDEsV3JuLDcsNywiY2xyLXRvb2x0aXAiLDE1KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPWUuJGluZGV4LGk9VGUoMyk7d3IoImNsci1leHBhbmRlZCIsdC5leHBhbmRlZCksZGkoImNsckV4cGFuZGVkIix0LmV4cGFuZGVkKSxydCgiY2xyTG9hZGlu'@; put 'ZyIsdC5sb2FkaW5nQ29sdW1ucyYmIXQuY29sdW1ucyksaWUoKSxydCgibmdWYXIiLHIrMT5pLmxpY2VuY2VTdGF0ZS52YWx1ZS50YWJsZXNfaW5fbGlicmFyeV9saW1pdCl9fWZ1bmN0aW9uIFpybihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMTEsMSks'@; put 'd3QoImNsaWNrIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCkuJGltcGxpY2l0LGE9VGUoKTtyZXR1cm4gWGUoYS50cmVlTm9kZUNsaWNrZWQoaSxvLGEubGlicmFyeUxpc3QpKX0pLGhpKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRp'@; put 'bXBsaWNpdDtyZXR1cm4gZmkoby5leHBhbmRlZCxpKXx8KG8uZXhwYW5kZWQ9aSksWGUoaSl9KSxKKDIsInAiLDEyKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1vbygxKSxvPVRlKCkuJGltcGxpY2l0LGE9VGUoKTtyZXR1cm4gYS5saWI9by5MSUJSQVJZSUQsWGUoYS5s'@; put 'aWJyYXJ5T25DbGljayhhLmxpYnx8IiIsbyxpKSl9KSxJdCgzLCJjbHItaWNvbiIsMTMpLFNlKDQpLHRlKCksdnQoNSxPcm4sNiwzLCJjbHItdHJlZS1ub2RlIiwzKSxfbyg2LFlybiwyLDUsImNsci10cmVlLW5vZGUiLDEwLENvKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNp'@; put 'dDt3cigiY2xyLWV4cGFuZGVkIix0LmV4cGFuZGVkKSxkaSgiY2xyRXhwYW5kZWQiLHQuZXhwYW5kZWQpLHJ0KCJjbHJMb2FkaW5nIix0LmxvYWRpbmdUYWJsZXMmJiF0LnRhYmxlcyksaWUoNCksU3IoIiAiLHQuTElCUkFSWU5BTUUsIiAiKSxpZSgpLF90KHQudGFibGVzPzU6LTEpLGllKCks'@; put 'eW8odC50YWJsZXMpfX1mdW5jdGlvbiBHcm4obixlKXtpZigxJm4mJnZ0KDAsWnJuLDgsNiwiY2xyLXRyZWUtbm9kZSIsMTApLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtfdCghdC5oaWRkZW4mJnQuaW5Gb3JlZ3JvdW5kPzA6LTEpfX1mdW5jdGlvbiAkcm4obixlKXsxJm4mJihKKDAsImRp'@; put 'diIsNCkoMSwic3BhbiIsMjQpLFNlKDIsIiBMb2FkaW5nLi4uICIpLHRlKCkoKSl9bGV0IHFybj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSl7dGhpcy5oZWxwZXJTZXJ2aWNlPXIsdGhpcy5saWNlbmNlU2VydmljZT1pLHRoaXMuc2VhcmNoTGliSW5wdXRMaXN0PW5ldyBr'@; put 'OCx0aGlzLnRhYmxlT25DbGlja0VtaXR0ZXI9bmV3IEtyLHRoaXMubGlicmFyeU9uQ2xpY2tFbWl0dGVyPW5ldyBLcix0aGlzLmhhc0NvbHVtbnM9ITEsdGhpcy5wYWdpbmc9ITAsdGhpcy5saWJyYXJpZXNTZWFyY2g9IiIsdGhpcy5saWI9IiIsdGhpcy50YWJsZT0iIix0aGlzLmxpYnJhcmll'@; put 'c1BhZ2luZz0hMSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZX1uZ09uSW5pdCgpe31uZ0FmdGVyVmlld0luaXQoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5zZWFyY2hMaWJJbnB1dExpc3QuZmlyc3QubmF0aXZlRWxlbWVudC5mb2N1cygpfSl9bmdP'@; put 'bkNoYW5nZXMocil7ci5saWJyYXJ5TGlzdD8uY3VycmVudFZhbHVlJiZ0aGlzLmxpYnJhcnlMaXN0JiZ0aGlzLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcnlMaXN0KX10cmVlT25GaWx0ZXIocixpKXt0aGlzLmhlbHBlclNlcnZpY2UudHJlZU9uRmlsdGVyKHIs'@; put 'aSl9bGlicmFyeU9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmxpYnJhcnlMaXN0LHRoaXMubGlicmFyaWVzU2VhcmNoLCJMSUJSQVJZTkFNRSIpLFVuLmxpbmVhZ2UubGlicmFyaWVzU2VhcmNoPXRoaXMubGlicmFyaWVzU2VhcmNofXRyZWVOb2Rl'@; put 'Q2xpY2tlZChyLGksbyl7IkNvbGxhcHNlIj09PXIudGFyZ2V0LnRpdGxlJiZ0aGlzLmNvbGxhcHNlVHJlZUl0ZW1zKG8saSl9bGlicmFyeU9uQ2xpY2socixpLG8pe2kuaW5Gb3JlZ3JvdW5kPSEwO2NvbnN0IGE9KCk9PnNldFRpbWVvdXQoKCk9Pm8uY29udGVudENvbnRhaW5lci5uYXRpdmVF'@; put 'bGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXQiKS5mb2N1cygpKTtpZihpLnRhYmxlcylpLmV4cGFuZGVkPSFpLmV4cGFuZGVkLHRoaXMubGlicmFyeU9uQ2xpY2tFbWl0dGVyLmVtaXQoe2xpYmlkOnIsbGlicmFyeTppLHRhYmxlc0xvYWRlZDohMH0pO2Vsc2V7aS5s'@; put 'b2FkaW5nVGFibGVzPSEwLHRoaXMubGlicmFyeU9uQ2xpY2tFbWl0dGVyLmVtaXQoe2xpYmlkOnIsbGlicmFyeTppLHRhYmxlc0xvYWRlZDohMX0pO2NvbnN0IGw9c2V0SW50ZXJ2YWwoKCk9PntpLmxvYWRpbmdUYWJsZXN8fChhKCksY2xlYXJJbnRlcnZhbChsKSl9LDUwMCl9aS5leHBhbmRl'@; put 'ZCYmYSgpLHRoaXMuY29sbGFwc2VUcmVlSXRlbXModGhpcy5saWJyYXJ5TGlzdCxpKX10YWJsZU9uQ2xpY2socixpLG8pe3ZhciBhPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2EuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoNTAsKCk9PnthLmhhc0NvbHVtbnM/KGkuY29sdW1ucz8o'@; put 'aS5leHBhbmRlZD0haS5leHBhbmRlZCwhMD09PWkuZXhwYW5kZWQmJihhLnRhYmxlPXIsYS50YWJsZU9uQ2xpY2tFbWl0dGVyLmVtaXQoe3RhYmxldXJpOnIsbGliVGFibGU6aSxsaWJyYXJ5Om8sY29sdW1uc0xvYWRlZDohMH0pKSk6KGkuZXhwYW5kZWQ9IWkuZXhwYW5kZWQsaS5sb2FkaW5n'@; put 'Q29sdW1ucz0hMCxhLnRhYmxlPXIsYS50YWJsZU9uQ2xpY2tFbWl0dGVyLmVtaXQoe3RhYmxldXJpOnIsbGliVGFibGU6aSxsaWJyYXJ5Om8sY29sdW1uc0xvYWRlZDohMX0pKSxhLmNvbGxhcHNlVHJlZUl0ZW1zKG8udGFibGVzLGkpKTphLnRhYmxlT25DbGlja0VtaXR0ZXIuZW1pdCh7dGFi'@; put 'bGV1cmk6cixsaWJUYWJsZTppLGxpYnJhcnk6byxjb2x1bW5zTG9hZGVkOiExfSl9KX0pKCl9Y29sdW1uT25DbGljayhyLGksbyl7dGhpcy5saWI9aS5MSUJSQVJZSUQsdGhpcy50YWJsZT1vLlRBQkxFVVJJLHRoaXMuY29sdW1uPXIuQ09MVVJJfWxpYlRhYkFjdGl2ZShyLGkpe3JldHVybiEo'@; put 'IXRoaXMubGlifHwhdGhpcy50YWJsZSkmJnI9PT10aGlzLmxpYiYmaT09PXRoaXMudGFibGV9bGliQ29sdW1uQWN0aXZlKHIpe2lmKCF0aGlzLmNvbHVtbilyZXR1cm4hMTtsZXQgaT1yLnNwbGl0KCJcXCIpLG89dGhpcy5jb2x1bW4uc3BsaXQoIlxcIik7cmV0dXJuIGlbaS5sZW5ndGgtMV09'@; put 'PW9bby5sZW5ndGgtMV19Y29sbGFwc2VUcmVlSXRlbXMocixpKXtyLmZvckVhY2gobz0+e0pTT04uc3RyaW5naWZ5KG8pIT09SlNPTi5zdHJpbmdpZnkoaSkmJihvLmV4cGFuZGVkPSExKX0pfWxvYWRNb3JlTGlicmFyaWVzKCl7dGhpcy5saWJyYXJpZXNQYWdpbmd8fCh0aGlzLmxpYnJhcmll'@; put 'c1BhZ2luZz0hMCx0aGlzLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcnlMaXN0LCEwKSx0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSl9aGFuZGxlU2Nyb2xsKHIpe2xldCBpPXIudGFyZ2V0O2kmJmkuc2Nyb2xsVG9wPj1pLnNjcm9sbEhlaWdodC1pLm9mZnNldEhl'@; put 'aWdodC0xMCYmdGhpcy5sb2FkTW9yZUxpYnJhcmllcygpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKGZoKSx6ZShGMikpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJkYy10cmVlIl1dLHZpZXdR'@; put 'dWVyeTpmdW5jdGlvbihpLG8pe2lmKDEmaSYmV28oQXJuLDUpLDImaSl7bGV0IGE7Y2koYT11aSgpKSYmKG8uc2VhcmNoTGliSW5wdXRMaXN0PWEpfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGksbyl7MSZpJiZ3dCgic2Nyb2xsIixmdW5jdGlvbihsKXtyZXR1cm4gby5oYW5kbGVTY3JvbGwo'@; put 'bCl9KX0saW5wdXRzOntoYXNDb2x1bW5zOiJoYXNDb2x1bW5zIixwYWdpbmc6InBhZ2luZyIsbGlicmFyeUxpc3Q6ImxpYnJhcnlMaXN0In0sb3V0cHV0czp7dGFibGVPbkNsaWNrRW1pdHRlcjoidGFibGVPbkNsaWNrRW1pdHRlciIsbGlicmFyeU9uQ2xpY2tFbWl0dGVyOiJsaWJyYXJ5T25D'@; put 'bGlja0VtaXR0ZXIifSxzdGFuZGFsb25lOiExLGZlYXR1cmVzOltpdV0sZGVjbHM6NSx2YXJzOjIsY29uc3RzOltbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsibGliVHJlZU5vZGUiLCIiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ3LTEwMCIsInRl'@; put 'eHQtY2VudGVyIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01v'@; put 'ZGVsIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIl0sWzMsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNs'@; put 'ckxvYWRpbmciXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIlRhYmxlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIs'@; put 'MywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFs0LCJuZ1ZhciJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsic2hhcGUiLCJib2x0Il0sWyJzaGFwZSIsInRhYmxlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1y'@; put 'aWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyJdLFsiYXBwU3RlYWxGb2N1cyIsIiIsImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJDb2x1bW5zIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBs'@; put 'ZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsic2hhcGUiLCJvYmplY3RzIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJj'@; put 'bHItdHJlZSIpLHZ0KDEsSXJuLDYsMywiY2xyLXRyZWUtbm9kZSIsMyksX28oMixHcm4sMSwxLG51bGwsbnVsbCxDbyksdGUoKSx2dCg0LCRybiwzLDAsImRpdiIsNCkpLDImaSYmKGllKCksX3Qoby5saWJyYXJ5TGlzdD8xOi0xKSxpZSgpLHlvKG8ubGlicmFyeUxpc3QpLGllKDIpLF90KG8u'@; put 'bGlicmFyaWVzUGFnaW5nPzQ6LTEpKX0sZGVwZW5kZW5jaWVzOltQcCxPMyxkNyxjdSwkMCxMcCxQZix3dixTdixDdixsdSxvYyxYbCxtQSxHNl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgS3JuPVsicmVzaXplQm94Il0sWHJuPVsiZHJhZ0hhbmRsZUNvcm5l'@; put 'ciJdLFFybj1bImRyYWdIYW5kbGVDb3JuZXJMZWZ0Il0sSnJuPVsiZHJhZ0hhbmRsZVJpZ2h0Il0sZWluPVsiZHJhZ0hhbmRsZUJvdHRvbSJdLHRpbj1bImRyYWdIYW5kbGVMZWZ0Il0sbmluPShuLGUsdCk9Pih7Y29sSGVhZGVyc0hpZGRlbjpuLGNvbEhlYWRlcnNWaXNpYmxlOmUsaGVhZGVy'@; put 'UGtzOnR9KSxyaW49KG4sZSk9Pih7eDpuLHk6ZX0pLGlpbj0oKT0+KHt9KTtmdW5jdGlvbiBvaW4obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDExKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLE5oKCJUbyB1bmxvY2sgbW9yZSB0aGVuICIsdC5saWNlbmNlU3RhdGUudmFs'@; put 'dWUudmlld2JveF9saW1pdCwiICIsMT09PXQubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXQ/InZpZXdib3giOiJ2aWV3Ym94ZXMiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiBhaW4obixlKXsxJm4mJihKKDAsImRpdiIsMTYpLEl0KDEs'@; put 'ImNsci1zcGlubmVyIiw0MSksdGUoKSl9ZnVuY3Rpb24gc2luKG4sZSl7MSZuJiYoSigwLCJwIiwxNyksU2UoMSwiVmlld2JveCBvcGVuIGxpbWl0IHJlYWNoZWQiKSx0ZSgpKX1mdW5jdGlvbiBsaW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRjLXRyZWUiLDQyKSx3dCgibGli'@; put 'cmFyeU9uQ2xpY2tFbWl0dGVyIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS5saWJyYXJ5T25DbGljayhpKSl9KSgidGFibGVPbkNsaWNrRW1pdHRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKCkudGFibGVPbkNsaWNrKGkpKX0pLHRlKCl9MiZuJiZydCgibGli'@; put 'cmFyeUxpc3QiLFRlKCkubGlicmFyaWVzKX1mdW5jdGlvbiBjaW4obixlKXsxJm4mJihKKDAsInAiLDI2KSxTZSgxLCIgUGljayB0YWJsZSBmcm9tIHRoZSBsaXN0IG9uIHRoZSBsZWZ0ICIpLHRlKCkpfWZ1bmN0aW9uIHVpbihuLGUpezEmbiYmSXQoMCwiY2xyLXNwaW5uZXIiLDQ1KX1mdW5j'@; put 'dGlvbiBkaW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImEiLDIxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1wbGljaXQsYT1UZSgpO3JldHVybiBhLm1pbmltaXplKG8pLFhlKGEuc3RvcFByb3BhZ2F0aW9uKGkpKX0pLEl0KDEsImNsci1p'@; put 'Y29uIiwyNCksSigyLCJzcGFuIiwyMyksU2UoMywiTWluaW1pemUgdmlld2JveCIpLHRlKCkoKX19ZnVuY3Rpb24gaGluKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJhIiwyMSksd3QoImNsaWNrIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCkuJGltcGxpY2l0LGE9VGUo'@; put 'KTtyZXR1cm4gYS5yZXN0b3JlKG8pLFhlKGEuc3RvcFByb3BhZ2F0aW9uKGkpKX0pLEl0KDEsImNsci1pY29uIiwyNSksSigyLCJzcGFuIiwyMyksU2UoMywiUmVzdG9yZSB2aWV3Ym94IiksdGUoKSgpfX1mdW5jdGlvbiBmaW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIs'@; put 'NDMpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS5zZWxlY3RWaWV3Ym94KGkpKX0pLEooMSwiZGl2Iiw0NCksU2UoMiksdnQoMyx1aW4sMSwwLCJjbHItc3Bpbm5lciIsNDUpLHRlKCksSig0LCJkaXYiKSg1LCJhIiw0Niksd3Qo'@; put 'ImNsaWNrIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIGEucmVzZXRQb3NTaXplKG8pLFhlKGEuc3RvcFByb3BhZ2F0aW9uKGkpKX0pLEl0KDYsImNsci1pY29uIiw0NyksSig3LCJzcGFuIiwyMyksU2UoOCwiUmVzZXQgcG9zaXRpb24gYW5kIHNp'@; put 'emUiKSx0ZSgpKCksdnQoOSxkaW4sNCwwLCJhIiw0OCksdnQoMTAsaGluLDQsMCwiYSIsNDgpLEooMTEsImEiLDIxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0LGE9VGUoKTtyZXR1cm4gYS5jbG9zZShvKSxYZShhLnN0b3BQcm9wYWdhdGlvbihpKSl9'@; put 'KSxJdCgxMiwiY2xyLWljb24iLDQ5KSxKKDEzLCJzcGFuIiwyMyksU2UoMTQsIkNsb3NlIHZpZXdib3giKSx0ZSgpKCkoKSgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKCk7d3IoInNlbGVjdGVkIiwobnVsbD09ci5zZWxlY3RlZFZpZXdib3g/bnVsbDpyLnNlbGVjdGVkVmll'@; put 'd2JveC5pZCk9PT10LmlkKSxpZSgyKSxlNCgiICMiLHQuaWQsIiAiLHQubGlicmFyeSwiLiIsdC50YWJsZSwiICIpLGllKCksX3QodC5sb2FkaW5nRGF0YT8zOi0xKSxpZSgyKSx3cigiZGlzYWJsZWQiLDA9PT10LngmJjA9PT10LnkpLGllKDQpLF90KHQubWluaW1pemVkPy0xOjkpLGllKCks'@; put 'X3QodC5taW5pbWl6ZWQ/MTA6LTEpfX1mdW5jdGlvbiBwaW4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLFNyKCIgIix0LCIgIil9fWZ1bmN0aW9uIGdpbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwi'@; put 'ZGl2Iiw1MSkoMSwiYXBwLWF1dG9jb21wbGV0ZSIsNTIsMCksd3QoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPW9vKDIpLGE9VGUoKS5uZ1ZhcjtyZXR1cm4gWGUoVGUoKS5vbkNvbHNlYXJjaENoYW5nZShvLGksYS5jb2xIZWFkZXJzSGlkZGVuKSl9KSxfbygzLHBp'@; put 'biwyLDEsIm9wdGlvbiIsbnVsbCxDbyksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLm5nVmFyO2llKCkscnQoImlucHV0SWQiLCJ2aWV3Ym94LWNvbHVtbi1zZWFyY2giKSgiZW1pdE9ubHlTZWxlY3RlZCIsITApLGllKDIpLHlvKHQuY29sSGVhZGVyc0hpZGRlbil9fWZ1bmN0aW9uIG1p'@; put 'bihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDU2KX1mdW5jdGlvbiB2aW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiw1OCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKDMpLm9uQ29sUmVt'@; put 'b3ZlKGkpKX0pLHRlKCl9fWZ1bmN0aW9uIF9pbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw1NSkoMSwic3BhbiIpLFNlKDIpLHZ0KDMsbWluLDEsMCwiY2xyLWljb24iLDU2KSx0ZSgpLHZ0KDQsdmluLDEsMCwiY2xyLWljb24iLDU3KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQs'@; put 'cj1UZSgyKS5uZ1ZhcixpPVRlKCk7QmooZnVuY3Rpb24gTjdlKG4sZSx0PSIiKXtyZXR1cm4gYjdlKGl0KCksbixlLHQpfSgiY29sLWJveCBjb2x1bW4tIix0KSksd3IoImN1cnNvci1kZWZhdWx0LWkiLHIuaGVhZGVyUGtzLmluY2x1ZGVzKHQpKSgicHJpbWFyeUtleUhlYWRlclN0eWxlIixy'@; put 'LmhlYWRlclBrcy5pbmNsdWRlcyh0KSkscnQoImNka0RyYWdEYXRhIix0KSgiY2RrRHJhZ0Rpc2FibGVkIixyLmhlYWRlclBrcy5pbmNsdWRlcyh0KSksaWUoMiksTmgoIiAiLHQsIiAiLCJudW0iPT09KG51bGw9PWkuc2VsZWN0ZWRWaWV3Ym94VGFibGV8fG51bGw9PWkuc2VsZWN0ZWRWaWV3'@; put 'Ym94VGFibGUuaG90VGFibGV8fG51bGw9PWkuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuJGRhdGFmb3JtYXRzfHxudWxsPT1pLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLiRkYXRhZm9ybWF0cy52YXJzfHxudWxsPT1pLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxl'@; put 'LiRkYXRhZm9ybWF0cy52YXJzW3RdP251bGw6aS5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS4kZGF0YWZvcm1hdHMudmFyc1t0XS50eXBlKT8iKG51bWVyaWMpIjoiIiwiICIpLGllKCksX3Qoci5oZWFkZXJQa3MuaW5jbHVkZXModCk/MzotMSksaWUoKSxfdChyLmhlYWRlclBrcy5p'@; put 'bmNsdWRlcyh0KT8tMTo0KX19ZnVuY3Rpb24geWluKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJwIiwxNCksU2UoMSwiQ29sdW1ucyBUbyBEaXNwbGF5IChkcmFnIGFuZCByZS1vcmRlcikiKSx0ZSgpLEooMiwiZGl2Iiw1Myksd3QoImNka0Ryb3BMaXN0RHJvcHBlZCIsZnVuY3Rp'@; put 'b24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLmNvbHVtbnNEcm9wKGkpKX0pLF9vKDMsX2luLDUsMTMsImRpdiIsNTQsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkubmdWYXI7aWUoMikscnQoImNka0Ryb3BMaXN0RGF0YSIsdC5jb2xIZWFkZXJzVmlzaWJsZSksaWUoKSx5byh0LmNv'@; put 'bEhlYWRlcnNWaXNpYmxlKX19ZnVuY3Rpb24gYmluKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDUwKSx2dCgxLGdpbiw1LDIsImRpdiIsNTEpLHZ0KDIseWluLDUsMSksdGUoKSksMiZuKXtjb25zdCB0PWUubmdWYXI7aWUoKSxfdCh0LmNvbEhlYWRlcnNIaWRkZW4/MTotMSksaWUoKSxfdCh0'@; put 'LmNvbEhlYWRlcnNWaXNpYmxlPzI6LTEpfX1mdW5jdGlvbiB3aW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiw4Niksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkuY29sbGFwc2UoaSkpfSks'@; put 'dGUoKX19ZnVuY3Rpb24gQ2luKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNvbiIsODcpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgpLmV4cGFuZChpKSl9KSx0ZSgpfX1mdW5jdGlvbiBTaW4obixl'@; put 'KXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiw4OCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQsbz1vbygyNCk7cmV0dXJuIFhlKFRlKCkuc2VhcmNoVGFibGUobyxpKSl9KSx0ZSgpfX1mdW5jdGlvbiBFaW4obixlKXsxJm4m'@; put 'JihKKDAsInNwYW4iLDc3KSxTZSgxLCIgTG9hZGluZy4uLiAiKSx0ZSgpKX1mdW5jdGlvbiBNaW4obixlKXsxJm4mJihKKDAsInNwYW4iLDc5KSxTZSgxLCJMb2FkaW5nLi4uIiksdGUoKSl9ZnVuY3Rpb24gVGluKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNvbiIsODkp'@; put 'LHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKCkuJGltcGxpY2l0LG89b28oMjQpO3JldHVybiBUZSgpLnJlbG9hZFRhYmxlRGF0YShpKSxYZShvLnZhbHVlPSIiKX0pLHRlKCl9fWZ1bmN0aW9uIHhpbihuLGUpezEmbiYmKEooMCwiZGl2Iiw5MSksSXQoMSwiY2xyLXNw'@; put 'aW5uZXIiLDQxKSx0ZSgpKX1mdW5jdGlvbiBBaW4obixlKXtpZigxJm4mJkl0KDAsImhvdC10YWJsZSIsOTIpLDImbil7Y29uc3QgdD1UZSgyKS4kaW1wbGljaXQ7cnQoInNldHRpbmdzIixUZSgpLnZpZXdib3hIb3RTZXR0aW5ncy5nZXQodC5pZCl8fG1jKDIsaWluKSkoImlkIiwiaG90VGFi'@; put 'bGVfIit0LmlkKX19ZnVuY3Rpb24ga2luKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDkwKSx2dCgxLHhpbiwyLDAsImRpdiIsOTEpLHZ0KDIsQWluLDEsMywiaG90LXRhYmxlIiw5MiksdGUoKSksMiZuKXtjb25zdCB0PWUubmdWYXIscj1UZSgpLiRpbXBsaWNpdCxpPVRlKCk7TzIoImRpc3Bs'@; put 'YXkiLHIuY29sbGFwc2VkPyJub25lIjoiIiksaWUoKSxfdChyLmxvYWRpbmdEYXRhJiZ0PDA/MTotMSksaWUoKSxfdCh0Pi0xJiZpLnZpZXdib3hIb3RTZXR0aW5ncy5nZXQoci5pZCk/MjotMSl9fWZ1bmN0aW9uIFJpbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw1OSwx'@; put 'KSx3dCgibW91c2Vkb3duIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgpLmZvY3VzVmlld2JveChpKSl9KSgiY2RrRHJhZ0VuZGVkIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS52aWV3Ym94RHJhZ0Vu'@; put 'ZGVkKGksbykpfSksSigyLCJkaXYiLDYwKSgzLCJzcGFuIiw2MSksU2UoNCksdGUoKSxKKDUsImRpdiIsNjIpLHZ0KDYsd2luLDEsMCwiY2xyLWljb24iLDYzKSx2dCg3LENpbiwxLDAsImNsci1pY29uIiw2NCksSig4LCJjbHItaWNvbiIsNjUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25z'@; put 'dCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS5taW5pbWl6ZShpKSl9KSx0ZSgpLEooOSwiY2xyLWljb24iLDY2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkuY2xvc2UoaSkpfSksdGUoKSgpKCksSigxMCwic3Bh'@; put 'biIsNjcsMiksd3QoInBvaW50ZXJkb3duIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdCxhPW9vKDEpLGw9b28oMTEpO3JldHVybiBYZShUZSgpLnN0YXJ0UmVzaXplKGksbCxhLG8pKX0pLHRlKCksSigxMiwic3BhbiIsNjgsMyksd3QoInBvaW50ZXJkb3duIixmdW5jdGlv'@; put 'bihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdCxhPW9vKDEpLGw9b28oMTMpO3JldHVybiBYZShUZSgpLnN0YXJ0UmVzaXplQm90dG9tTGVmdChpLGwsYSxvKSl9KSx0ZSgpLEooMTQsInNwYW4iLDY5LDQpLHd0KCJwb2ludGVyZG93biIsZnVuY3Rpb24oaSl7Y29uc3Qgbz1ZZSh0KS4kaW1w'@; put 'bGljaXQsYT1vbygxKSxsPW9vKDE1KTtyZXR1cm4gWGUoVGUoKS5zdGFydFJlc2l6ZVJpZ2h0KGksbCxhLG8pKX0pLHRlKCksSigxNiwic3BhbiIsNzAsNSksd3QoInBvaW50ZXJkb3duIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdCxhPW9vKDEpLGw9b28oMTcpO3JldHVy'@; put 'biBYZShUZSgpLnN0YXJ0UmVzaXplQm90dG9tKGksbCxhLG8pKX0pLHRlKCksSigxOCwic3BhbiIsNzEsNiksd3QoInBvaW50ZXJkb3duIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdCxhPW9vKDEpLGw9b28oMTkpO3JldHVybiBYZShUZSgpLnN0YXJ0UmVzaXplTGVmdChp'@; put 'LGwsYSxvKSl9KSx0ZSgpLEooMjAsImZvcm0iLDcyKSgyMSwiZGl2Iiw3MykoMjIsImRpdiIsNzQpKDIzLCJpbnB1dCIsNzUsNyksd3QoImtleXVwLmVudGVyIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0LG89b28oMjQpO3JldHVybiBYZShUZSgpLnNlYXJjaFRhYmxlKG8s'@; put 'aSkpfSksdGUoKSx2dCgyNSxTaW4sMSwwLCJjbHItaWNvbiIsNzYpLHZ0KDI2LEVpbiwyLDAsInNwYW4iLDc3KSx0ZSgpLEooMjcsImNsci1jaGVja2JveC1jb250YWluZXIiKSgyOCwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgyOSwiaW5wdXQiLDc4KSxoaSgibmdNb2RlbENoYW5nZSIsZnVu'@; put 'Y3Rpb24oaSl7Y29uc3Qgbz1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIGZpKG8uc2VhcmNoTnVtZXJpYyxpKXx8KG8uc2VhcmNoTnVtZXJpYz1pKSxYZShpKX0pLHRlKCksSigzMCwibGFiZWwiKSxTZSgzMSwiTnVtZXJpYyIpLHRlKCkoKSgpKCksSigzMiwiZGl2Iiw0NCksdnQoMzMsTWluLDIs'@; put 'MCwic3BhbiIsNzkpLHZ0KDM0LFRpbiwxLDAsImNsci1pY29uIiw4MCksSigzNSwiYSIsODEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdCxvPW9vKDI0KTtyZXR1cm4gVGUoKS5vcGVuRmlsdGVyKGkpLFhlKG8udmFsdWU9IiIpfSksSXQoMzYsImNsci1p'@; put 'Y29uIiw4MiksSigzNywic3BhbiIsODMpLFNlKDM4KSx0ZSgpKCksSigzOSwiY2xyLWljb24iLDg0KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkub3BlblRhYmxlRWRpdChpKSl9KSx0ZSgpKCkoKSxZbig0MCxraW4sMyw0LCJk'@; put 'aXYiLDg1KSx0ZSgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKCk7TzIoImRpc3BsYXkiLHQubWluaW1pemVkPyJub25lIjoiIikoIndpZHRoIix0LndpZHRoLCJweCIpKCJoZWlnaHQiLHQuaGVpZ2h0LCJweCIpKCJwb2ludGVyLWV2ZW50cyIsdC5jb2xsYXBzZWQ/Im5vbmUi'@; put 'OiIiKSgiYm94LXNoYWRvdyIsdC5jb2xsYXBzZWQ/Im5vbmUiOiIiKSx3cigiZm9jdXNlZCIsdC5mb2N1c2VkKSxydCgiY2RrRHJhZ0ZyZWVEcmFnUG9zaXRpb24iLE41KDM4LHJpbix0LngsdC55KSkoImlkIiwidmlld2JveF8iK3QuaWQpLGllKDQpLGU0KCIgIyIsdC5pZCwiICIsdC5saWJy'@; put 'YXJ5LCIuIix0LnRhYmxlLCIgIiksaWUoMiksX3QodC5jb2xsYXBzZWQ/LTE6NiksaWUoKSxfdCh0LmNvbGxhcHNlZD83Oi0xKSxpZSgzKSxydCgiaWQiLCJoYW5kbGVfdmlld2JveF8iK3QuaWQpLGllKDIpLHJ0KCJpZCIsImhhbmRsZV9jb3JuZXJfbGVmdF92aWV3Ym94XyIrdC5pZCksaWUo'@; put 'MikscnQoImlkIiwiaGFuZGxlX3JpZ2h0X3ZpZXdib3hfIit0LmlkKSxpZSgyKSxydCgiaWQiLCJoYW5kbGVfYm90dG9tX3ZpZXdib3hfIit0LmlkKSxpZSgyKSxydCgiaWQiLCJoYW5kbGVfbGVmdF92aWV3Ym94XyIrdC5pZCksaWUoMiksTzIoImRpc3BsYXkiLHQuY29sbGFwc2VkPyJub25l'@; put 'IjoiIiksaWUoMykscnQoInR5cGUiLHQuc2VhcmNoTnVtZXJpYz8ibnVtYmVyIjoidGV4dCIpLGllKDIpLF90KHQuc2VhcmNoTG9hZGluZz8tMToyNSksaWUoKSxfdCh0LnNlYXJjaExvYWRpbmc/MjY6LTEpLGllKDMpLGRpKCJuZ01vZGVsIix0LnNlYXJjaE51bWVyaWMpLGllKDQpLF90KHQu'@; put 'bG9hZGluZ0RhdGE/MzM6LTEpLGllKCksX3QodC5sb2FkaW5nRGF0YT8tMTozNCksaWUoMiksd3IoImZpbHRlci1hY3RpdmUiLCIwIiE9PXQuZmlsdGVyX3BrKSxpZSgyKSxwcih0LmZpbHRlclRleHQpLGllKCksd3IoImRpc2FibGVkIiwhci50YWJsZUVkaXRFeGlzdHModCkpLGllKCkscnQo'@; put 'Im5nVmFyIixyLmdldFZpZXdib3hUYWJsZUluZGV4KHQpKX19ZnVuY3Rpb24gSWluKG4sZSl7aWYoMSZuJiZJdCgwLCJhcHAtcXVlcnkiLDM4LDgpLDImbil7Y29uc3QgdD1UZSgpO3J0KCJ2aWV3Ym94SWQiLG51bGw9PXQuZmlsdGVyaW5nVmlld2JveD9udWxsOnQuZmlsdGVyaW5nVmlld2Jv'@; put 'eC5pZCl9fWxldCBJWmU9KCgpPT57dmFyIG47Y2xhc3MgZXtnZXQgdmlld2JveE1vZGFsKCl7cmV0dXJuIHRoaXMuX3ZpZXdib3hNb2RhbH1zZXQgdmlld2JveE1vZGFsKHIpe2lmKCExPT09dGhpcy5saWNlbmNlU3RhdGUudmFsdWUudmlld2JveCYmcilyZXR1cm4gdGhpcy5ldmVudFNlcnZp'@; put 'Y2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCJWaWV3Ym94ZXMiKSx2b2lkIHRoaXMudmlld2JveE1vZGFsQ2hhbmdlLmVtaXQoITEpO3RoaXMuX3ZpZXdib3hNb2RhbD1yLHImJnRoaXMudW5zZXRTZWxlY3RlZFZpZXdib3goKX1jb25zdHJ1Y3RvcihyLGksbyxhLGwsdSxnLEUsTyxaKXt0aGlzLm5n'@; put 'Wm9uZT1yLHRoaXMubGljZW5jZVNlcnZpY2U9aSx0aGlzLnNhc1NlcnZpY2U9byx0aGlzLmV2ZW50U2VydmljZT1hLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPWwsdGhpcy5sb2dnZXJTZXJ2aWNlPXUsdGhpcy5oZWxwZXJTZXJ2aWNlPWcsdGhpcy5yb3V0ZXI9RSx0aGlzLmFjdGl2YXRlZFJvdXRl'@; put 'PU8sdGhpcy5jZGY9Wix0aGlzLl92aWV3Ym94TW9kYWw9ITEsdGhpcy52aWV3Ym94TW9kYWxDaGFuZ2U9bmV3IEtyLHRoaXMubGliaW5mbz1udWxsLHRoaXMubGlicmFyaWVzTG9hZGluZz0hMCx0aGlzLnZpZXdib3hlcz1bXSx0aGlzLmRlZmF1bHRDb25maWc9e2lkOi0xLGxpYnJhcnk6IiIs'@; put 'dGFibGU6IiIsd2lkdGg6NTAwLGhlaWdodDozMDAseDowLHk6MTUwLGNvbHVtbnM6W119LHRoaXMuc2FzanNDb25maWc9bmV3IHhwLlNBU2pzQ29uZmlnLHRoaXMuaG90VGFibGVEZWZhdWx0PXtkYXRhOltdLGhlYWRlclBrczpbXSwkZGF0YWZvcm1hdHM6e30sYWxsQ29sSGVhZGVyczpbXSxj'@; put 'b2xIZWFkZXJzSGlkZGVuOltdLGNvbEhlYWRlcnNWaXNpYmxlOltdLGNvbEhlYWRlcnM6W10sY29udGV4dE1lbnU6WyJjb3B5X3dpdGhfY29sdW1uX2hlYWRlcnMiLCJjb3B5X2NvbHVtbl9oZWFkZXJzX29ubHkiXSxjb3B5UGFzdGU6e2NvcHlDb2x1bW5IZWFkZXJzOiEwLGNvcHlDb2x1bW5I'@; put 'ZWFkZXJzT25seTohMH0sY29sdW1uczpbXSxjb2xzOltdLGhlaWdodDoyMDAsc2V0dGluZ3M6e30saGlkZGVuQ29sdW1uczohMCxtYW51YWxDb2x1bW5Nb3ZlOiExLGFmdGVyR2V0Q29sSGVhZGVyOnZvaWQgMCxsaWNlbnNlS2V5OnZvaWQgMCxkcm9wZG93bk1lbnU6dm9pZCAwfSx0aGlzLnZp'@; put 'ZXdib3hIb3RTZXR0aW5ncz1uZXcgTWFwLHRoaXMudmlld2JveFRhYmxlcz1bXSx0aGlzLmZpbHRlcj0hMSx0aGlzLmZpbHRlckxvYWRpbmc9ITEsdGhpcy5udWxsVmFyaWFibGVzPSExLHRoaXMubGljZW5jZVN0YXRlPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuSW5m'@; put 'aW5pdHk9MS8wLHRoaXMubWF4Vmlld2JveGVzPXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXQ9PT0xLzA/Njp0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0fHw2fW5nT25Jbml0KCl7dGhpcy5zYXNTdG9yZVNlcnZpY2Uudmlld0xpYnMoKS50aGVuKGk9'@; put 'Pnt0aGlzLmxpYnJhcmllcz1pLnNhc2xpYnN9KS5jYXRjaChpPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKGkpfSkuZmluYWxseSgoKT0+e3RoaXMubGlicmFyaWVzTG9hZGluZz0hMX0pLHRoaXMuX3F1ZXJ5PXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZShpPT57dGhp'@; put 'cy5jbGF1c2VzPWkub2JqLHRoaXMuZmlsdGVyTGliZHM9aS5saWJkc30pLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5saWNlbmNlU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGk9Pnt0aGlzLmhvdFRhYmxlRGVmYXVsdC5s'@; put 'aWNlbnNlS2V5PWl9KTtjb25zdCByPXRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld2JveGVzO3ImJighMT09PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3g/KHNldFRpbWVvdXQoKCk9PnRoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2Rh'@; put 'bCgiTGlua2luZyBWaWV3Ym94ZXMiKSksdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10se3JlbGF0aXZlVG86dGhpcy5hY3RpdmF0ZWRSb3V0ZSxxdWVyeVBhcmFtczp7fX0pKToodGhpcy52aWV3Ym94ZXM9dGhpcy5kZWNvZGVVcmxEYXRhKHIpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLnNldEFsbEhh'@; put 'bmRsZVRyYW5zZm9ybSgpfSkpKSx0aGlzLnJlTG9hZFZpZXdib3h0YWJsZXModGhpcy52aWV3Ym94ZXMpfW5nQWZ0ZXJWaWV3SW5pdCgpe3NldFRpbWVvdXQoKCk9Pnt0aGlzLnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpLHRoaXMudmlld2JveGVzLmZvckVhY2gocj0+e3RoaXMuZ2V0Vmlld2Jv'@; put 'eFRhYmxlSW5kZXgocik+LTEmJnRoaXMucmVmcmVzaFRhYmxlQWZ0ZXJSZXNpemUocil9KX0sMWUzKX1nZXQgdmlld2JveExpbWl0UmVhY2hlZCgpe3JldHVybiB0aGlzLnZpZXdib3hlcy5sZW5ndGg+PXRoaXMubWF4Vmlld2JveGVzfWNsck1vZGFsT3BlbkNoYW5nZShyKXt0aGlzLnZpZXdi'@; put 'b3hNb2RhbENoYW5nZS5lbWl0KHIpfWxpYnJhcnlPbkNsaWNrKHIpe3IudGFibGVzTG9hZGVkfHx0aGlzLmxvYWRUYWJsZXMoci5saWJyYXJ5LkxJQlJBUllSRUYsci5saWJyYXJ5KX10YWJsZU9uQ2xpY2socil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aWYoaS52aWV3Ym94'@; put 'TGltaXRSZWFjaGVkKXJldHVybjtjb25zdCBvPXsuLi5pLmRlZmF1bHRDb25maWcsdGFibGU6ci5saWJUYWJsZSxsaWJyYXJ5OnIubGlicmFyeS5MSUJSQVJZTkFNRSxsb2FkaW5nRGF0YTohMCxmaWx0ZXJfcGs6IjAiLGlkOmkudmlld2JveGVzLmxlbmd0aCsxLHg6d2luZG93LmlubmVyV2lk'@; put 'dGgtaS5kZWZhdWx0Q29uZmlnLndpZHRoLHk6MTUwfTtpLnZpZXdib3hlcy5wdXNoKG8pLHNldFRpbWVvdXQoKCk9PntpLnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpfSk7Y29uc3QgYT1gJHtyLmxpYnJhcnkuTElCUkFSWVJFRn0uJHtyLmxpYlRhYmxlfWA7eWllbGQgaS5sb2FkRGF0YShhLG8p'@; put 'LG8ubG9hZGluZ0RhdGE9ITEsaS5ldmVudFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVzaXplIiksaS5zbmFwVG9HcmlkKCl9KSgpfWxvYWRUYWJsZXMocixpKXt0aGlzLnNhc1N0b3JlU2VydmljZS52aWV3VGFibGVzKHIpLnRoZW4obz0+e2xldCBhPW8ubXB0YWJsZXMubWFwKGZ1bmN0aW9u'@; put 'KGwpe3JldHVybiBsLk1FTU5BTUV9KTt0aGlzLmxpYmluZm89by5saWJpbmZvfHxbXSx0aGlzLnRhYmxlcz1hLGkmJihpLnRhYmxlcz1hLGkubGliaW5mbz10aGlzLmxpYmluZm8saS5sb2FkaW5nVGFibGVzPSExLGEubGVuZ3RoPjAmJihpLmV4cGFuZGVkPSEwKSl9KS5jYXRjaChvPT57dGhp'@; put 'cy5sb2dnZXJTZXJ2aWNlLmVycm9yKG8pfSl9cmVsb2FkRGF0YShyLGkpe3ZhciBvPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoYSxsKT0+e2xldCB1PW8udmlld2JveFRhYmxlcy5maW5kKGc9Pmcudmlld2JveElkPT09aS5pZCk7by5zYXNTdG9yZVNl'@; put 'cnZpY2Uudmlld0RhdGEocixwYXJzZUludChpLmZpbHRlcl9wa3x8IjAiKSkudGhlbihnPT57dSYmKHUuaG90VGFibGUuZGF0YT1nLnZpZXdkYXRhLG8uY3JlYXRlVmlld2JveFRhYmxlU2V0dGluZ3MoaSkpLGEobnVsbCl9KS5jYXRjaCgoKT0+e2woKX0pfSl9KSgpfWxvYWREYXRhKHIsaSl7'@; put 'dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChhLGwpPT57bGV0IHU9ITEsZz1vLnZpZXdib3hUYWJsZXMuZmluZChFPT5FLnZpZXdib3hJZD09PWkuaWQpO2cmJigiMCI9PT1pLmZpbHRlcl9wa3x8IWkuZmlsdGVyX3BrKSYmYSgpLG8uc2FzU3Rv'@; put 'cmVTZXJ2aWNlLnZpZXdEYXRhKHIscGFyc2VJbnQoaS5maWx0ZXJfcGt8fCIwIikpLnRoZW4oRT0+e2c/dT0hMDpnPXt2aWV3Ym94SWQ6aS5pZCx2aWV3Ym94TGliRGF0YXNldDpyLGhvdFRhYmxlOmN6KG8uaG90VGFibGVEZWZhdWx0KX0sZy5ob3RUYWJsZS5kYXRhPUUudmlld2RhdGEsZy5o'@; put 'b3RUYWJsZS4kZGF0YWZvcm1hdHM9RS4kdmlld2RhdGEsZy5ob3RUYWJsZS5jb2xzPUUuY29scyx5Z2UoZy5ob3RUYWJsZS5jb2xzLFtdLEUuJHZpZXdkYXRhKTtsZXQgTz1bXSxaPVtdO2ZvcihsZXQgZWUgaW4gRS52aWV3ZGF0YVswXSllZSYmWi5wdXNoKGVlKTtmb3IobGV0IGVlPTA7ZWU8'@; put 'Wi5sZW5ndGg7ZWUrKylPLnB1c2goe2RhdGE6WltlZV19KTtnLmhvdFRhYmxlLmhlYWRlclBrcz1jeihFLnNhc3BhcmFtc1swXS5QS19GSUVMRFMuc3BsaXQoIiAiKSksZy5ob3RUYWJsZS5hbGxDb2xIZWFkZXJzPVouZmlsdGVyKGVlPT4hZy5ob3RUYWJsZS5oZWFkZXJQa3MuaW5jbHVkZXMo'@; put 'ZWUpKSxnLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW49Y3ooZy5ob3RUYWJsZS5hbGxDb2xIZWFkZXJzKSxnLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlPVouZmlsdGVyKGVlPT5nLmhvdFRhYmxlLmhlYWRlclBrcy5pbmNsdWRlcyhlZSkpLGcuaG90VGFibGUuY29sSGVhZGVycz1aLGcu'@; put 'aG90VGFibGUuY29sdW1ucz1PLGkuY29sdW1ucyYmaS5jb2x1bW5zLmxlbmd0aD4wPyhnLmhvdFRhYmxlLm1hbnVhbENvbHVtbk1vdmU9aS5jb2x1bW5zLGkuY29sdW1ucz8ubWFwKChlZSx2ZSk9Pntjb25zdCBNZT1aW2VlXSxIZT1nLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4uaW5kZXhP'@; put 'ZihNZSk7SGU+LTEmJihnLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4uc3BsaWNlKEhlLDEpLGcuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGVbdmVdPU1lKX0pKTpnLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlLnB1c2goLi4uZy5ob3RUYWJsZS5jb2xIZWFkZXJzSGlkZGVuLnNwbGlj'@; put 'ZSgwLDEwKSksZy5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZT1nLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlLmZpbHRlcihlZT0+ZWUpLHV8fG8udmlld2JveFRhYmxlcy5wdXNoKGcpLGkucXVlcnk9by5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShFLnF1ZXJ5KSxpLmZpbHRlclRleHQ9'@; put 'RS5zYXNwYXJhbXNbMF0uRklMVEVSX1RFWFQsby5jcmVhdGVWaWV3Ym94VGFibGVTZXR0aW5ncyhpKSxzZXRUaW1lb3V0KCgpPT57by51cGRhdGVIb3RDb2x1bW5zKGcuaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbnx8W10saS5pZCksc2V0VGltZW91dCgoKT0+e2NvbnN0IGVlPW8uZ2V0Vmll'@; put 'd2JveEhvdEluc3RhbmNlKGkuaWQpO2VlJiYoZWUudXBkYXRlU2V0dGluZ3Moe21hbnVhbENvbHVtbk1vdmU6Zy5ob3RUYWJsZS5tYW51YWxDb2x1bW5Nb3ZlLGFmdGVyR2V0Q29sSGVhZGVyOih2ZSxNZSk9Pntjb25zdCBIZT1lZT8uY29sVG9Qcm9wKHZlKTtIZSYmZy5ob3RUYWJsZS5oZWFk'@; put 'ZXJQa3MuaW5kZXhPZihIZSk+LTEmJk1lLmNsYXNzTGlzdC5hZGQoInByaW1hcnlLZXlIZWFkZXJTdHlsZSIpLE1lLmNsYXNzTGlzdC5hZGQoVW4uaGFuZHNvbnRhYmxlLmRhcmtUYWJsZUhlYWRlckNsYXNzKX19KSxlZS5yZW5kZXIoKSksby5zZWxlY3RlZFZpZXdib3gmJm8ucmVzZXRTZWxl'@; put 'Y3RlZFZpZXdib3goaSl9LDUwMCl9LDEwMCksYSgpfSkuY2F0Y2goRT0+e28ubG9nZ2VyU2VydmljZS5lcnJvcihFKSxsKCl9KX0pfSkoKX1yZUxvYWRWaWV3Ym94dGFibGVzKHIpe3IubWFwKGk9Pntjb25zdCBvPWAke2kubGlicmFyeX0uJHtpLnRhYmxlfWA7aS5sb2FkaW5nRGF0YT0hMCx0'@; put 'aGlzLmxvYWREYXRhKG8saSkudGhlbigoKT0+e2kubG9hZGluZ0RhdGE9ITF9KX0pfW1heFdpZHRoQ2hla2VyKHIsaSl7cmV0dXJuIHI+MjAwPzIwMDpyfWdldFZpZXdib3hUYWJsZUluZGV4KHIpe3JldHVybiB0aGlzLnZpZXdib3hUYWJsZXMuZmluZEluZGV4KG89Pm8udmlld2JveElkPT09'@; put 'ci5pZCl9Y3JlYXRlVmlld2JveFRhYmxlU2V0dGluZ3Mocil7Y29uc3QgaT10aGlzLmdldFZpZXdib3hUYWJsZUluZGV4KHIpO2lmKC0xPT09aSlyZXR1cm4gdm9pZCB0aGlzLnZpZXdib3hIb3RTZXR0aW5ncy5zZXQoci5pZCx7fSk7Y29uc3Qgbz10aGlzLnZpZXdib3hUYWJsZXNbaV0sYT10'@; put 'aGlzLmNhbGN1bGF0ZVRhYmxlSGVpZ2h0KHIpLGw9e2NvbEhlYWRlcnM6by5ob3RUYWJsZS5jb2xIZWFkZXJzLGNvbHVtbnM6by5ob3RUYWJsZS5jb2x1bW5zLGhlaWdodDphLHJlYWRPbmx5OiEwLG1vZGlmeUNvbFdpZHRoOnRoaXMubWF4V2lkdGhDaGVrZXIsY29weVBhc3RlOm8uaG90VGFi'@; put 'bGUuY29weVBhc3RlLGNvbnRleHRNZW51OntpdGVtczp7Y29weV93aXRoX2NvbHVtbl9oZWFkZXJzOnt9LGNvcHlfY29sdW1uX2hlYWRlcnNfb25seTp7fSxleHBvcnRfZmlsZTp2Z2UoKCk9PiJ2aWV3Ym94Iil9fSxtdWx0aUNvbHVtblNvcnRpbmc6ITAsdmlld3BvcnRSb3dSZW5kZXJpbmdP'@; put 'ZmZzZXQ6NTAsZmlsdGVyczohMCxkcm9wZG93bk1lbnU6by5ob3RUYWJsZS5kcm9wZG93bk1lbnUsc3RyZXRjaEg6ImFsbCIsY2VsbHM6by5ob3RUYWJsZS5jZWxscyxtYXhSb3dzOm8uaG90VGFibGUubWF4Um93c3x8MS8wLG1hbnVhbENvbHVtblJlc2l6ZTohMCxyb3dIZWFkZXJzOiEwLGxp'@; put 'Y2Vuc2VLZXk6by5ob3RUYWJsZS5saWNlbnNlS2V5LHRoZW1lOiJodC10aGVtZS1jbGFzc2ljIn07dGhpcy52aWV3Ym94SG90U2V0dGluZ3Muc2V0KHIuaWQsey4uLmx9KSxzZXRUaW1lb3V0KCgpPT57dGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHNldFRpbWVvdXQoKCk9Pntjb25zdCB1PXRo'@; put 'aXMuZ2V0Vmlld2JveEhvdEluc3RhbmNlKHIuaWQpO3UmJih1LmxvYWREYXRhKG8uaG90VGFibGUuZGF0YSksdS5yZW5kZXIoKSl9LDUwMCl9KX1nZXRWaWV3Ym94VGFibGVTZXR0aW5ncyhyKXtyZXR1cm4gdGhpcy52aWV3Ym94SG90U2V0dGluZ3MuZ2V0KHIuaWQpfHx7fX1yZXNpemUocixp'@; put 'KXtjb25zdCBvPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9by5sZWZ0LWEubGVmdCtvLndpZHRoLHU9by50b3AtYS50b3Arby5oZWlnaHQ7cmV0dXJuIGkuc3R5bGUud2lkdGg9bCsicHgiLGkuc3R5bGUuaGVpZ2h0PXUrInB4Iix0aGlz'@; put 'LnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpLHRoaXMuc2NoZWR1bGVBZnRlclJlc2l6ZVJlZnJlc2goKSx7d2lkdGg6bCxoZWlnaHQ6dX19cmVzaXplV2lkdGgocixpKXtjb25zdCBvPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9by5sZWZ0'@; put 'LWEubGVmdCtvLndpZHRoO3JldHVybiBpLnN0eWxlLndpZHRoPWwrInB4IixsfXJlc2l6ZUhlaWdodChyLGkpe2NvbnN0IG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbD1vLnRvcC1hLnRvcCtvLmhlaWdodDtyZXR1cm4gaS5zdHlsZS5o'@; put 'ZWlnaHQ9bCsicHgiLGx9cmVzaXplRnJvbUxlZnRFZGdlKHIsaSxvLGEsbCl7aS5zdHlsZS53aWR0aD1vLXIrInB4Ijtjb25zdCBnPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7cmV0dXJue3dpZHRoOmcseDphKyhsLWcpfX1zY2hlZHVsZUFmdGVyUmVzaXplUmVmcmVzaCgpe3Ro'@; put 'aXMuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoMWUzLCgpPT57dGhpcy52aWV3Ym94Q2hhbmdlZCgpLHRoaXMuZXZlbnRTZXJ2aWNlLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpLHRoaXMudmlld2JveGVzLmZvckVhY2gocj0+e3RoaXMucmVmcmVzaFRhYmxlQWZ0ZXJSZXNpemUocil9KX0p'@; put 'fXBhcnNlSGFuZGxlVHJhbnNsYXRlKHIpe2NvbnN0IGk9ci5tYXRjaCgvdHJhbnNsYXRlXChccyooLT9cZCsoPzpcLlxkKyk/KXB4LFxzKigtP1xkKyg/OlwuXGQrKT8pcHhccypcKS8pO3JldHVybiBpP3t4OnBhcnNlRmxvYXQoaVsxXSkseTpwYXJzZUZsb2F0KGlbMl0pfTp7eDowLHk6MH19'@; put 'c3RhcnRSZXNpemUocixpLG8sYSl7ci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pntjb25zdCBsPXIuY2xpZW50WCx1PXIuY2xpZW50WSxnPXRoaXMucGFyc2VIYW5kbGVUcmFuc2xhdGUoaS5zdHlsZS50cmFu'@; put 'c2Zvcm0pLEU9Wj0+e2kuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHtnLngrKFouY2xpZW50WC1sKX1weCwgJHtnLnkrKFouY2xpZW50WS11KX1weClgO2NvbnN0IE1lPXRoaXMucmVzaXplKGksbyk7YS53aWR0aD1NZS53aWR0aCxhLmhlaWdodD1NZS5oZWlnaHR9LE89KCk9Pntkb2N1'@; put 'bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsRSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixPKSx0aGlzLmVuZEFjdGl2ZVJlc2l6ZT12b2lkIDB9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixFKSxkb2N1bWVu'@; put 'dC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLE8pLHRoaXMuZW5kQWN0aXZlUmVzaXplPU99KX1zdGFydFJlc2l6ZVJpZ2h0KHIsaSxvLGEpe3IucHJldmVudERlZmF1bHQoKSxyLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57Y29uc3Qg'@; put 'bD1yLmNsaWVudFgsdT10aGlzLnBhcnNlSGFuZGxlVHJhbnNsYXRlKGkuc3R5bGUudHJhbnNmb3JtKSxnPU89PntpLnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7dS54KyhPLmNsaWVudFgtbCl9cHgsICR7dS55fXB4KWAsYS53aWR0aD10aGlzLnJlc2l6ZVdpZHRoKGksbyksdGhpcy5z'@; put 'ZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKSx0aGlzLnNjaGVkdWxlQWZ0ZXJSZXNpemVSZWZyZXNoKCl9LEU9KCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsZyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixFKSx0aGlzLmVuZEFj'@; put 'dGl2ZVJlc2l6ZT12b2lkIDB9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixnKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEUpLHRoaXMuZW5kQWN0aXZlUmVzaXplPUV9KX1zdGFydFJlc2l6ZUJvdHRvbShyLGksbyxhKXtyLnByZXZlbnRE'@; put 'ZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2NvbnN0IGw9ci5jbGllbnRZLHU9dGhpcy5wYXJzZUhhbmRsZVRyYW5zbGF0ZShpLnN0eWxlLnRyYW5zZm9ybSksZz1PPT57aS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgk'@; put 'e3UueH1weCwgJHt1LnkrKE8uY2xpZW50WS1sKX1weClgLGEuaGVpZ2h0PXRoaXMucmVzaXplSGVpZ2h0KGksbyksdGhpcy5zZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKSx0aGlzLnNjaGVkdWxlQWZ0ZXJSZXNpemVSZWZyZXNoKCl9LEU9KCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVy'@; put 'KCJwb2ludGVybW92ZSIsZyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixFKSx0aGlzLmVuZEFjdGl2ZVJlc2l6ZT12b2lkIDB9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixnKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2lu'@; put 'dGVydXAiLEUpLHRoaXMuZW5kQWN0aXZlUmVzaXplPUV9KX1zdGFydFJlc2l6ZUxlZnQocixpLG8sYSl7ci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgbD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0LHU9YS54LGc9YS53aWR0aDt0aGlzLm5nWm9u'@; put 'ZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2NvbnN0IEU9ci5jbGllbnRYLE89dGhpcy5wYXJzZUhhbmRsZVRyYW5zbGF0ZShpLnN0eWxlLnRyYW5zZm9ybSksWj12ZT0+e2kuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHtPLngrKHZlLmNsaWVudFgtRSl9cHgsICR7Ty55fXB4KWA7Y29u'@; put 'c3R7d2lkdGg6SGUseDpXZX09dGhpcy5yZXNpemVGcm9tTGVmdEVkZ2UodmUuY2xpZW50WCxvLGwsdSxnKTthLndpZHRoPUhlLHRoaXMubmdab25lLnJ1bigoKT0+e2EueD1XZX0pLHRoaXMuc2V0QWxsSGFuZGxlVHJhbnNmb3JtKCksdGhpcy5zY2hlZHVsZUFmdGVyUmVzaXplUmVmcmVzaCgp'@; put 'fSxlZT0oKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixaKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGVlKSx0aGlzLmVuZEFjdGl2ZVJlc2l6ZT12b2lkIDB9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJt'@; put 'b3ZlIixaKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGVlKSx0aGlzLmVuZEFjdGl2ZVJlc2l6ZT1lZX0pfXN0YXJ0UmVzaXplQm90dG9tTGVmdChyLGksbyxhKXtyLnByZXZlbnREZWZhdWx0KCksci5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBsPW8uZ2V0Qm91bmRp'@; put 'bmdDbGllbnRSZWN0KCkucmlnaHQsdT1hLngsZz1hLndpZHRoO3RoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57Y29uc3QgRT1yLmNsaWVudFgsTz1yLmNsaWVudFksWj10aGlzLnBhcnNlSGFuZGxlVHJhbnNsYXRlKGkuc3R5bGUudHJhbnNmb3JtKSxlZT1NZT0+e2kuc3R5bGUu'@; put 'dHJhbnNmb3JtPWB0cmFuc2xhdGUoJHtaLngrKE1lLmNsaWVudFgtRSl9cHgsICR7Wi55KyhNZS5jbGllbnRZLU8pfXB4KWA7Y29uc3R7d2lkdGg6YXQseDpDdH09dGhpcy5yZXNpemVGcm9tTGVmdEVkZ2UoTWUuY2xpZW50WCxvLGwsdSxnKSxBdD10aGlzLnJlc2l6ZUhlaWdodChpLG8pO2Eu'@; put 'd2lkdGg9YXQsYS5oZWlnaHQ9QXQsdGhpcy5uZ1pvbmUucnVuKCgpPT57YS54PUN0fSksdGhpcy5zZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKSx0aGlzLnNjaGVkdWxlQWZ0ZXJSZXNpemVSZWZyZXNoKCl9LHZlPSgpPT57ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUi'@; put 'LGVlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHZlKSx0aGlzLmVuZEFjdGl2ZVJlc2l6ZT12b2lkIDB9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixlZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix2ZSks'@; put 'dGhpcy5lbmRBY3RpdmVSZXNpemU9dmV9KX1zZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKXtjb25zdCByPShpLG8pPT5pLmZpbmQoYT0+YS5uYXRpdmVFbGVtZW50LmlkPT09byk/Lm5hdGl2ZUVsZW1lbnQ7dGhpcy5yZXNpemVCb3hRdWVyeS5mb3JFYWNoKGk9Pntjb25zdCBvPWkubmF0aXZlRWxl'@; put 'bWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWkubmF0aXZlRWxlbWVudC5pZDt0aGlzLnNldEhhbmRsZVRyYW5zZm9ybShyKHRoaXMuZHJhZ0hhbmRsZUNvcm5lclF1ZXJ5LGBoYW5kbGVfJHthfWApLG8sImJvdGgiKSx0aGlzLnNldEhhbmRsZVRyYW5zZm9ybShyKHRoaXMuZHJhZ0hh'@; put 'bmRsZUNvcm5lckxlZnRRdWVyeSxgaGFuZGxlX2Nvcm5lcl9sZWZ0XyR7YX1gKSxvLCJib3R0b21MZWZ0IiksdGhpcy5zZXRIYW5kbGVUcmFuc2Zvcm0ocih0aGlzLmRyYWdIYW5kbGVSaWdodFF1ZXJ5LGBoYW5kbGVfcmlnaHRfJHthfWApLG8sIngiKSx0aGlzLnNldEhhbmRsZVRyYW5zZm9y'@; put 'bShyKHRoaXMuZHJhZ0hhbmRsZUJvdHRvbVF1ZXJ5LGBoYW5kbGVfYm90dG9tXyR7YX1gKSxvLCJ5IiksdGhpcy5zZXRIYW5kbGVUcmFuc2Zvcm0ocih0aGlzLmRyYWdIYW5kbGVMZWZ0UXVlcnksYGhhbmRsZV9sZWZ0XyR7YX1gKSxvLCJsZWZ0Iil9KX1zZXRIYW5kbGVUcmFuc2Zvcm0ocixp'@; put 'LG8pe2NvbnN0IGE9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgbD1pLndpZHRoLWEud2lkdGgsdT1pLmhlaWdodC1hLmhlaWdodDtsKz01LHUrPTUsIngiPT09byYmKHIuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHtsfXB4LCAwKWApLCJ5Ij09PW8mJihyLnN0eWxlLnRyYW5z'@; put 'Zm9ybT1gdHJhbnNsYXRlKDAsICR7dX1weClgKSwiYm90aCI9PT1vJiYoci5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgke2x9cHgsICR7dX1weClgKSwibGVmdCI9PT1vJiYoci5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZSgtNXB4LCAwKSIpLCJib3R0b21MZWZ0Ij09PW8mJihyLnN0'@; put 'eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKC01cHgsICR7dX1weClgKX1mb2N1c1ZpZXdib3gocil7dGhpcy52aWV3Ym94ZXMubWFwKGk9PntpLmZvY3VzZWQ9ITF9KSxyLmZvY3VzZWQ9ITB9dmlld2JveERyYWdFbmRlZChyLGkpe2xldCBhPXIuc291cmNlLmdldFJvb3RFbGVtZW50KCkuZ2V0'@; put 'Qm91bmRpbmdDbGllbnRSZWN0KCk7aS54PWEubGVmdCxpLnk9YS50b3AsdGhpcy52aWV3Ym94Q2hhbmdlZCgpfXNuYXBUb0dyaWQoKXtjb25zdCByPXdpbmRvdy5pbm5lcldpZHRoLGk9d2luZG93LmlubmVySGVpZ2h0LHU9TWF0aC5jZWlsKHRoaXMudmlld2JveGVzLmxlbmd0aC8yKSxnPU1h'@; put 'dGguZmxvb3IodGhpcy52aWV3Ym94ZXMubGVuZ3RoLzIpLFo9KHItNSoodSsxKSkvdSxlZT0oci01KihnKzEpKS9nO2xldCBNZT0wLFdlPShpLTI1MC02MCkvMixhdD0wLEN0PTA7Zm9yKGxldCBBdD0wO0F0PHRoaXMudmlld2JveGVzLmxlbmd0aDtBdCsrKXtsZXQgS3Q9dGhpcy52aWV3Ym94'@; put 'ZXNbQXRdLHF0PSEoQXQ+dS0xKTtjb25zdCBnbj1xdD9aOmVlOyFxdCYmMD09PUN0JiYoYXQ9MCxDdCsrLE1lPTApLEt0Lng9NStNZSthdCooZ24rNSksS3QueT0yNTArQ3QqKFdlKzUpLEt0LndpZHRoPWduLEt0LmhlaWdodD1XZSxhdCsrfXRoaXMudmlld2JveENoYW5nZWQoKSxzZXRUaW1l'@; put 'b3V0KCgpPT57dGhpcy5zZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKSx0aGlzLnZpZXdib3hlcy5mb3JFYWNoKEF0PT57dGhpcy5yZWZyZXNoVGFibGVBZnRlclJlc2l6ZShBdCl9KX0pfW1pbmltaXplQWxsKCl7dGhpcy52aWV3Ym94ZXMuZm9yRWFjaChyPT57ci5taW5pbWl6ZWQ9ITB9KSx0aGlz'@; put 'LnZpZXdib3hDaGFuZ2VkKCl9cmVzdG9yZUFsbCgpe3RoaXMudmlld2JveGVzLmZvckVhY2gocj0+e3IubWluaW1pemVkPSExfSksdGhpcy52aWV3Ym94Q2hhbmdlZCgpfXJlc2V0UG9zU2l6ZShyKXtyLng9d2luZG93LmlubmVyV2lkdGgtdGhpcy5kZWZhdWx0Q29uZmlnLndpZHRoLHIueT10'@; put 'aGlzLmRlZmF1bHRDb25maWcueSxyLndpZHRoPXRoaXMuZGVmYXVsdENvbmZpZy53aWR0aCxyLmhlaWdodD10aGlzLmRlZmF1bHRDb25maWcuaGVpZ2h0LHRoaXMudmlld2JveENoYW5nZWQoKX1taW5pbWl6ZShyKXtyLm1pbmltaXplZD0hMCx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9cmVzdG9y'@; put 'ZShyKXtyLm1pbmltaXplZD0hMSx0aGlzLnZpZXdib3hDaGFuZ2VkKCksc2V0VGltZW91dCgoKT0+e3RoaXMucmVmcmVzaFRhYmxlQWZ0ZXJSZXNpemUocil9LDEwMCl9Y29sbGFwc2Uocil7ci5jb2xsYXBzZWQ9ITAsdGhpcy52aWV3Ym94Q2hhbmdlZCgpfWV4cGFuZChyKXtyLmNvbGxhcHNl'@; put 'ZD0hMSx0aGlzLnZpZXdib3hDaGFuZ2VkKCksc2V0VGltZW91dCgoKT0+e3RoaXMucmVmcmVzaFRhYmxlQWZ0ZXJSZXNpemUocil9LDEwMCl9Y2xvc2Uocil7Y29uc3QgaT10aGlzLnZpZXdib3hlcy5maW5kSW5kZXgoYT0+YS5pZD09PXIuaWQpLG89dGhpcy52aWV3Ym94VGFibGVzLmZpbmRJ'@; put 'bmRleChhPT5hLnZpZXdib3hJZD09PXIuaWQpO2k+LTEmJnRoaXMudmlld2JveGVzLnNwbGljZShpLDEpLG8+LTEmJnRoaXMudmlld2JveFRhYmxlcy5zcGxpY2UobywxKSx0aGlzLnZpZXdib3hIb3RTZXR0aW5ncy5kZWxldGUoci5pZCksdGhpcy5zZWxlY3RlZFZpZXdib3g/LmlkPT09ci5p'@; put 'ZCYmdGhpcy51bnNldFNlbGVjdGVkVmlld2JveCgpLFVuLnZpZXdib3hlc1tyLmlkXT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGNyZSksdGhpcy52aWV3Ym94Q2hhbmdlZCgpfXNlbGVjdFZpZXdib3gocil7dm9pZCAwPT09dGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZSYmdm9pZCAw'@; put 'PT09dGhpcy5zZWxlY3RlZFZpZXdib3g/dGhpcy5yZXNldFNlbGVjdGVkVmlld2JveChyKTpyLmlkPT09dGhpcy5zZWxlY3RlZFZpZXdib3g/LmlkP3RoaXMudW5zZXRTZWxlY3RlZFZpZXdib3goKTp0aGlzLnJlc2V0U2VsZWN0ZWRWaWV3Ym94KHIpfWNvbHVtbnNEcm9wKHIpe3RoaXMuc2Vs'@; put 'ZWN0ZWRWaWV3Ym94VGFibGU/LmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4mJihyLnByZXZpb3VzQ29udGFpbmVyPT09ci5jb250YWluZXI/SW9lKHIuY29udGFpbmVyLmRhdGEsci5wcmV2aW91c0luZGV4LHIuY3VycmVudEluZGV4KTpmdW5jdGlvbiBwNHQobixlLHQscil7Y29uc3QgaT13'@; put 'RCh0LG4ubGVuZ3RoLTEpLG89d0QocixlLmxlbmd0aCk7bi5sZW5ndGgmJmUuc3BsaWNlKG8sMCxuLnNwbGljZShpLDEpWzBdKX0oci5wcmV2aW91c0NvbnRhaW5lci5kYXRhLHIuY29udGFpbmVyLmRhdGEsci5wcmV2aW91c0luZGV4LHIuY3VycmVudEluZGV4KSx0aGlzLnNlbGVjdGVkVmll'@; put 'd2JveFRhYmxlLmhvdFRhYmxlJiYib2JqZWN0Ij09dHlwZW9mIHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVycykmJnRoaXMudXBkYXRlQ29sdW1uT3JkZXJIb3Qoci5pdGVtLmRhdGEsci5jdXJyZW50SW5kZXgsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS52'@; put 'aWV3Ym94SWQpfW9uQ29sc2VhcmNoQ2hhbmdlKHIsaSxvKXtjb25zdCBhPW8uaW5kZXhPZihpKTtvLnNwbGljZShhLDEpLHIudmFsdWU9IiIsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGUmJih0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnNW'@; put 'aXNpYmxlLnB1c2goaSksdGhpcy51cGRhdGVIb3RDb2x1bW5zKHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGU/LmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4sdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94SWQpLHRoaXMudXBkYXRlQ29sdW1uT3JkZXJIb3QoaSx0aGlzLnNlbGVj'@; put 'dGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlLmxlbmd0aC0xLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUudmlld2JveElkKSl9b25Db2xSZW1vdmUocil7aWYodGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGUpe2NvbnN0IGk9dGhpcy5zZWxlY3Rl'@; put 'ZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZS5pbmRleE9mKHIpO3RoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGUuc3BsaWNlKGksMSksdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzSGlk'@; put 'ZGVuLnB1c2gociksdGhpcy51cGRhdGVIb3RDb2x1bW5zKHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGU/LmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4sdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94SWQpLHRoaXMudXBkYXRlQ29sdW1uT3JkZXJIb3Qocix0aGlzLnNlbGVjdGVk'@; put 'Vmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlLmxlbmd0aCx0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hJZCl9fXJlc2V0U2VsZWN0ZWRWaWV3Ym94KHIpe3RoaXMuc2VsZWN0ZWRWaWV3Ym94PXIsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT10aGlzLnZp'@; put 'ZXdib3hUYWJsZXMuZmluZChpPT5pLnZpZXdib3hJZD09PXIuaWQpfXVuc2V0U2VsZWN0ZWRWaWV3Ym94KCl7dGhpcy5zZWxlY3RlZFZpZXdib3g9dm9pZCAwLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGU9dm9pZCAwfXN0b3BQcm9wYWdhdGlvbihyKXtyLnN0b3BQcm9wYWdhdGlvbigpfW9w'@; put 'ZW5GaWx0ZXIocil7dGhpcy5zZWxlY3RWaWV3Ym94KHIpO2NvbnN0IGk9dGhpcy52aWV3Ym94VGFibGVzW3RoaXMuZ2V0Vmlld2JveFRhYmxlSW5kZXgocildO3RoaXMuZmlsdGVyTGliZHM9YCR7ci5saWJyYXJ5fS4ke3IudGFibGV9YCx0aGlzLmZpbHRlcmluZ1ZpZXdib3g9cix0aGlzLmZp'@; put 'bHRlcj0hMCx0aGlzLmNkZi5kZXRlY3RDaGFuZ2VzKCksdGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2V0UXVlcnlWYXJpYWJsZXModGhpcy5maWx0ZXJMaWJkcyxpLmhvdFRhYmxlLmNvbHMpfW9wZW5UYWJsZUVkaXQocil7Y29uc3QgaT1yLmxpYnJhcnkrIi4iK3IudGFibGU7bGV0IG89bG9jYXRp'@; put 'b24uaHJlZi5zbGljZSgwLGxvY2F0aW9uLmhyZWYuaW5kZXhPZigiIyIpKTtvPWAke299Iy9lZGl0b3IvJHtpfWAsd2luZG93Lm9wZW4obywiX2JsYW5rIil9cmVzZXRGaWx0ZXIoKXt0aGlzLmZpbHRlcmluZ1ZpZXdib3gmJih0aGlzLmZpbHRlcmluZ1ZpZXdib3guZmlsdGVyX3BrPSIwIix0'@; put 'aGlzLnJlbG9hZFRhYmxlRGF0YSh0aGlzLmZpbHRlcmluZ1ZpZXdib3gpLHRoaXMuZmlsdGVyPSExLHRoaXMudmlld2JveENoYW5nZWQoKSxVbi52aWV3Ym94ZXNbdGhpcy5maWx0ZXJpbmdWaWV3Ym94LmlkXT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGNyZSkpfXNlbmRDbGF1c2Uo'@; put 'KXt0aGlzLmZpbHRlckxvYWRpbmc9ITA7bGV0IHI9W10saT1bXTtpZih0eXBlb2YgdGhpcy5jbGF1c2VzPiJ1IilyZXR1cm4gdGhpcy5udWxsVmFyaWFibGVzPSEwLHZvaWQodGhpcy5maWx0ZXJMb2FkaW5nPSExKTt7bGV0IG89dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqO2ZvcihsZXQgYT0wO2E8'@; put 'by5sZW5ndGg7YSsrKXtjb25zdCBsPW9bYV0uZWxlbWVudHM7cj1sLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4gbnVsbD09PXUudmFyaWFibGV9KSxyLmxlbmd0aCYmaS5wdXNoKGwpfX1pZihpLmxlbmd0aClyZXR1cm4gdGhpcy5udWxsVmFyaWFibGVzPSEwLHZvaWQodGhpcy5maWx0ZXJM'@; put 'b2FkaW5nPSExKTt0cnl7aWYodm9pZCAwIT09dGhpcy5jbGF1c2VzJiZ0aGlzLmZpbHRlckxpYmRzKXtjb25zdCBvPXtncm91cExvZ2ljOnRoaXMuY2xhdXNlcy5ncm91cExvZ2ljLGZpbHRlckdyb3VwczpbXX07dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmZvckVhY2gobD0+e2NvbnN0IHU9e2Zp'@; put 'bHRlckNsYXVzZXM6W119O2wuZWxlbWVudHMuZm9yRWFjaChnPT57dS5maWx0ZXJDbGF1c2VzLnB1c2godGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShnKSl9KSx1LmNsYXVzZUxvZ2ljPWwuY2xhdXNlTG9naWMsby5maWx0ZXJHcm91cHMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVl'@; put 'cENsb25lKHUpKX0pO2NvbnN0IGE9dGhpcy5zYXNTdG9yZVNlcnZpY2UuY3JlYXRlRmlsdGVyUXVlcnlUYWJsZShvKTt0aGlzLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnkodGhpcy5maWx0ZXJMaWJkcyxhKS50aGVuKGw9Pnt0aGlzLmZpbHRlcmluZ1ZpZXdib3guZmlsdGVyX3BrPWwucmVz'@; put 'dWx0WzBdLkZJTFRFUl9SSyx0aGlzLmxvYWREYXRhKHRoaXMuZmlsdGVyTGliZHMsdGhpcy5maWx0ZXJpbmdWaWV3Ym94KS50aGVuKCgpPT57dGhpcy5maWx0ZXI9ITEsdGhpcy5maWx0ZXJMb2FkaW5nPSExfSksdGhpcy52aWV3Ym94Q2hhbmdlZCgpfSkuY2F0Y2gobD0+e3RoaXMuZmlsdGVy'@; put 'TG9hZGluZz0hMX0pfX1jYXRjaHt0aGlzLmZpbHRlckxvYWRpbmc9ITF9fXNlYXJjaFRhYmxlKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aS5zZWFyY2hMb2FkaW5nPSEwO2xldCBhPXIudmFsdWUsbD1pLmxpYnJhcnkrIi4iK2kudGFibGUsdT1wYXJzZUludChpLmZp'@; put 'bHRlcl9wa3x8IjAiKTtjb25zdCBnPW8udmlld2JveFRhYmxlcy5maW5kKEU9PkUudmlld2JveElkPT09aS5pZCk7ZyYmKHlpZWxkIG8uc2FzU3RvcmVTZXJ2aWNlLnZpZXdEYXRhU2VhcmNoKGEsaS5zZWFyY2hOdW1lcmljLGwsdSkudGhlbihFPT57RS5zYXNwYXJhbXN8fEUudmlld0RhdGE/'@; put 'KGcuaG90VGFibGUuZGF0YT1FLnZpZXdkYXRhLG8uY3JlYXRlVmlld2JveFRhYmxlU2V0dGluZ3MoaSkpOmkuc2VhcmNoTG9hZGluZz0hMH0pLmNhdGNoKEU9PntvLmxvZ2dlclNlcnZpY2UuZXJyb3IoRSl9KSxpLnNlYXJjaExvYWRpbmc9ITEpfSkoKX1yZWxvYWRUYWJsZURhdGEocil7dmFy'@; put 'IGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc3Qgbz1gJHtyLmxpYnJhcnl9LiR7ci50YWJsZX1gO3IubG9hZGluZ0RhdGE9ITAseWllbGQgaS5yZWxvYWREYXRhKG8sciksci5sb2FkaW5nRGF0YT0hMSxpLmV2ZW50U2VydmljZS5kaXNwYXRjaEV2ZW50KCJyZXNpemUiKX0pKCl9'@; put 'dXBkYXRlSG90Q29sdW1ucyhyLGkpe3RoaXMudXBkYXRlSGlkZGVuQ29sdW1uc0hvdChyLGkpLHRoaXMuc2V0Q29sdW1uT3JkZXIoaSl9dXBkYXRlQ29sdW1uT3JkZXJIb3QocixpLG8pe2NvbnN0IGE9dGhpcy5nZXRWaWV3Ym94SG90SW5zdGFuY2Uobyk7aWYoYSl7Y29uc3QgbD1hLnByb3BU'@; put 'b0NvbChyKTthLmdldFBsdWdpbigibWFudWFsQ29sdW1uTW92ZSIpLm1vdmVDb2x1bW4obCxpKSxhLnJlbmRlcigpLHRoaXMuc2V0Q29sdW1uT3JkZXIobyl9fXRhYmxlRWRpdEV4aXN0cyhyKXtjb25zdCBpPVVuLmVkaXRvci5saWJzQW5kVGFibGVzLG89ci5saWJyYXJ5O3JldHVybiEhaVtv'@; put 'XSYmaVtvXS5pbmNsdWRlcyhyLnRhYmxlKX1zZXRDb2x1bW5PcmRlcihyKXtjb25zdCBpPXRoaXMudmlld2JveGVzLmZpbmQobz0+by5pZD09PXIpO2lmKGkpe2NvbnN0IG89dGhpcy5jcmVhdGVDb2x1bW5PcmRlcihyKTtpLmNvbHVtbnM9by5sZW5ndGg+MD9vOmkuY29sdW1uc310aGlzLnZp'@; put 'ZXdib3hDaGFuZ2VkKCl9Y3JlYXRlQ29sdW1uT3JkZXIocil7Y29uc3QgaT10aGlzLmdldFZpZXdib3hIb3RJbnN0YW5jZShyKTtpZighaSlyZXR1cm5bXTtjb25zdCBvPWkuZ2V0Q29sSGVhZGVyKCksYT10aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZS5jb2xIZWFkZXJzO2lm'@; put 'KCFhKXJldHVybltdO2NvbnN0IGw9dGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGU/LmNvbEhlYWRlcnNWaXNpYmxlLmxlbmd0aHx8NSx1PVtdO3JldHVybiBvLm1hcCgoZyxFKT0+e2lmKEU8bCl7Y29uc3QgTz1hLmluZGV4T2YoZyk7Tz4tMSYmdS5wdXNoKE8pfX0pLHV9dXBk'@; put 'YXRlSGlkZGVuQ29sdW1uc0hvdChyLGkpe2NvbnN0IG89dGhpcy5nZXRWaWV3Ym94SG90SW5zdGFuY2UoaSk7aWYobyl7Y29uc3QgYT1yLm1hcChsPT5vLnByb3BUb0NvbChsKSk7by51cGRhdGVTZXR0aW5ncyh7aGlkZGVuQ29sdW1uczp7Y29sdW1uczphfX0pLG8ucmVuZGVyKCl9fWNhbGN1'@; put 'bGF0ZVRhYmxlSGVpZ2h0KHIpe3JldHVybiByLmhlaWdodC0yMC0zNi0yfXJlZnJlc2hUYWJsZUFmdGVyUmVzaXplKHIpe2NvbnN0IGk9dGhpcy5nZXRWaWV3Ym94SG90SW5zdGFuY2Uoci5pZCk7aSYmc2V0VGltZW91dCgoKT0+e3RyeXtpLnVwZGF0ZVNldHRpbmdzKHtoZWlnaHQ6dGhpcy5j'@; put 'YWxjdWxhdGVUYWJsZUhlaWdodChyKX0pLGkucmVmcmVzaERpbWVuc2lvbnMoKSxpLnJlbmRlcigpfWNhdGNoe3NldFRpbWVvdXQoKCk9Pnt0cnl7aS51cGRhdGVTZXR0aW5ncyh7aGVpZ2h0OnRoaXMuY2FsY3VsYXRlVGFibGVIZWlnaHQocil9KSxpLnJlZnJlc2hEaW1lbnNpb25zKCl9Y2F0'@; put 'Y2goYSl7Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gcmVmcmVzaCBIT1QgZGltZW5zaW9ucyBmb3Igdmlld2JveCIsci5pZCxhKX19LDUwMCl9fSwxMDApfWdldFZpZXdib3hIb3RJbnN0YW5jZShyKXtpZighcnx8IXRoaXMuaG90VGFibGVDb21wb25lbnRzKXJldHVybjtjb25zdCBpPXRoaXMu'@; put 'dmlld2JveGVzLmZpbmRJbmRleCh1PT51LmlkPT09cik7aWYoLTE9PT1pKXJldHVybjtjb25zdCBvPXRoaXMuaG90VGFibGVDb21wb25lbnRzLnRvQXJyYXkoKTtsZXQgYT0wO2ZvcihsZXQgdT0wO3U8aTt1KyspdGhpcy5nZXRWaWV3Ym94VGFibGVJbmRleCh0aGlzLnZpZXdib3hlc1t1XSk+'@; put 'LTEmJmErKztyZXR1cm4gb1thXT8uaG90SW5zdGFuY2V8fHZvaWQgMH12aWV3Ym94Q2hhbmdlZCgpe2xldCByO2NvbnN0IGk9dGhpcy5lbmNvZGVVcmxEYXRhKHRoaXMudmlld2JveGVzKTtpLmxlbmd0aD4wJiYocj17dmlld2JveGVzOml9KSx0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSx7cmVs'@; put 'YXRpdmVUbzp0aGlzLmFjdGl2YXRlZFJvdXRlLHF1ZXJ5UGFyYW1zOnJ9KSx0aGlzLnByZXBhcmVGaWx0ZXJDYWNoZSgpfXByZXBhcmVGaWx0ZXJDYWNoZSgpe2ZvcihsZXQgciBvZiB0aGlzLnZpZXdib3hlcylpZihVbi52aWV3Ym94ZXNbci5pZF18fChVbi52aWV3Ym94ZXNbci5pZF09dGhp'@; put 'cy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShjcmUpKSxyLnF1ZXJ5JiZyLnF1ZXJ5Lmxlbmd0aD4wKXtjb25zdCBpPXRoaXMudmlld2JveFRhYmxlcy5maW5kKGE9PmEudmlld2JveElkPT09ci5pZCksbz1gdmlld2JveGVzLiR7ci5pZH1gO1VuLnZpZXdib3hlc1tyLmlkXS5maWx0ZXIucXVl'@; put 'cnk9ci5xdWVyeSxVbi52aWV3Ym94ZXNbci5pZF0uZmlsdGVyLmxpYmRzPXIubGlicmFyeSsiLiIrci50YWJsZSx0aGlzLnNhc1N0b3JlU2VydmljZS5pbml0aWFsaXplR2xvYmFsRmlsdGVyQ2xhdXNlKG8saT8uaG90VGFibGUuY29scyl9fWVuY29kZVVybERhdGEocil7bGV0IGk9IiI7cmV0'@; put 'dXJuIHIubWFwKChvLGEpPT57aSs9YCR7by5pZH0tJHtvLmxpYnJhcnl9LSR7by50YWJsZX0tJHtvLndpZHRofS0ke28uaGVpZ2h0fS0ke28ueH0tJHtvLnl9LSR7by5jb2xsYXBzZWQ/MTowfS0ke28ubWluaW1pemVkPzE6MH0tJHtvLmZpbHRlcl9wa3x8MH0ke28uY29sdW1ucyYmby5jb2x1'@; put 'bW5zLmxlbmd0aD4wPyItIitvLmNvbHVtbnM/LmpvaW4oIiwiKToiIn1gLGEhPT1yLmxlbmd0aC0xJiYoaSs9IjsiKX0pLGl9ZGVjb2RlVXJsRGF0YShyKXtsZXQgbz1bXTtyZXR1cm4gci5zcGxpdCgiOyIpLm1hcChsPT57Y29uc3QgdT1sLnNwbGl0KCItIik7by5wdXNoKHtpZDpwYXJzZUlu'@; put 'dCh1WzBdKSxsaWJyYXJ5OnVbMV0sdGFibGU6dVsyXSx3aWR0aDpwYXJzZUludCh1WzNdKSxoZWlnaHQ6cGFyc2VJbnQodVs0XSkseDpwYXJzZUludCh1WzVdKSx5OnBhcnNlSW50KHVbNl0pLGNvbGxhcHNlZDohIXBhcnNlSW50KHVbN10pLG1pbmltaXplZDohIXBhcnNlSW50KHVbOF0pLGNv'@; put 'bHVtbnM6dVsxMF0/LnNwbGl0KCIsIikubWFwKGc9PnBhcnNlSW50KGcpKXx8W10sZmlsdGVyX3BrOnVbOV19KX0pLG99bmdPbkRlc3Ryb3koKXt0aGlzLl9xdWVyeT8udW5zdWJzY3JpYmUoKSx0aGlzLmVuZEFjdGl2ZVJlc2l6ZT8uKCl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFj'@; put 'PWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoZ2EpLHplKEYyKSx6ZShpYyksemUodWQpLHplKEJwKSx6ZSh4MyksemUoZmgpLHplKHZjKSx6ZShwMSksemUoVWwpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLXZpZXdib3hlcyJdXSx2aWV3UXVl'@; put 'cnk6ZnVuY3Rpb24oaSxvKXtpZigxJmkmJihXbyhLcm4sNSksV28oWHJuLDUpLFdvKFFybiw1KSxXbyhKcm4sNSksV28oZWluLDUpLFdvKHRpbiw1KSxXbyhMNyw1KSksMiZpKXtsZXQgYTtjaShhPXVpKCkpJiYoby5yZXNpemVCb3hRdWVyeT1hKSxjaShhPXVpKCkpJiYoby5kcmFnSGFuZGxl'@; put 'Q29ybmVyUXVlcnk9YSksY2koYT11aSgpKSYmKG8uZHJhZ0hhbmRsZUNvcm5lckxlZnRRdWVyeT1hKSxjaShhPXVpKCkpJiYoby5kcmFnSGFuZGxlUmlnaHRRdWVyeT1hKSxjaShhPXVpKCkpJiYoby5kcmFnSGFuZGxlQm90dG9tUXVlcnk9YSksY2koYT11aSgpKSYmKG8uZHJhZ0hhbmRsZUxl'@; put 'ZnRRdWVyeT1hKSxjaShhPXVpKCkpJiYoby5ob3RUYWJsZUNvbXBvbmVudHM9YSl9fSxpbnB1dHM6e3ZpZXdib3hNb2RhbDoidmlld2JveE1vZGFsIn0sb3V0cHV0czp7dmlld2JveE1vZGFsQ2hhbmdlOiJ2aWV3Ym94TW9kYWxDaGFuZ2UifSxzdGFuZGFsb25lOiExLGRlY2xzOjU4LHZhcnM6'@; put 'MjEsY29uc3RzOltbImlucHV0IiwiIl0sWyJyZXNpemVCb3giLCIiXSxbImRyYWdIYW5kbGVDb3JuZXIiLCIiXSxbImRyYWdIYW5kbGVDb3JuZXJMZWZ0IiwiIl0sWyJkcmFnSGFuZGxlUmlnaHQiLCIiXSxbImRyYWdIYW5kbGVCb3R0b20iLCIiXSxbImRyYWdIYW5kbGVMZWZ0IiwiIl0sWyJz'@; put 'ZWFyY2hFbCIsIiJdLFsicXVlcnlGaWx0ZXIiLCIiXSxbImFwcERyYWdOZHJvcCIsIiIsMSwicm9vdC1tb2RhbCIsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxTaXplIl0sWzEsIm1v'@; put 'ZGFsLXRpdGxlIl0sWzEsImxpY2VuY2Utbm90aWNlIl0sWzEsIm1vZGFsLWJvZHkiLCJkLWZsZXgiXSxbMSwiYWRkLW5ldyIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsxLCJtdC0wIl0sWzEsInctMTAwIl0sWzEsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFsxLCJtLTAi'@; put 'LCJ2aWV3Ym94LWxpbWl0LW5vdGljZSJdLFszLCJsaWJyYXJ5TGlzdCJdLFsxLCJjdXJyZW50bHktb3BlbiJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iXSxbInJvbGUiLCJ0b29sdGlwIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsInRvb2x0aXAiLCJ0b29s'@; put 'dGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsIm1sLTMiLDMsImNsaWNrIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsImdyaWQtdmlldyIsInNpemUiLCIxOSJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwibWludXMiLCJz'@; put 'aXplIiwiMTkiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwid2luZG93LXJlc3RvcmUiLCJzaXplIiwiMTkiXSxbMSwidGV4dC1jZW50ZXIiLCJ3LTEwMCIsIm0tMCJdLFsxLCJvcGVuLXZpZXdib3giLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHIt'@; put 'YWxpZ24taXRlbXMtY2VudGVyIiwzLCJzZWxlY3RlZCJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwibXQtMTAiXSxbMSwibS0wIl0sWyJjbGFzcyIsImNvbmZpZ3VyYXRpb24td3JhcHBlciIsImNka0Ryb3BMaXN0'@; put 'R3JvdXAiLCIiLDQsIm5nVmFyIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsInZpZXdib3hlcy1jb250YWluZXIiXSxbImNka0RyYWdCb3VuZGFyeSIsIi52aWV3Ym94ZXMtY29udGFpbmVy'@; put 'IiwiY2RrRHJhZyIsIiIsInRhYmluZGV4IiwiMCIsMSwidmlld2JveCIsMywiZm9jdXNlZCIsImRpc3BsYXkiLCJ3aWR0aCIsImhlaWdodCIsInBvaW50ZXItZXZlbnRzIiwiYm94LXNoYWRvdyIsImNka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uIiwiaWQiXSxbMSwiZmlsdGVyLW1vZGFsIiwzLCJj'@; put 'bHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtb2RhbC1ib2R5Il0sWzMsInZpZXdib3hJZCJdLFsi'@; put 'dHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbGljayIsImNsckxvYWRpbmciXSxbImNsck1lZGl1bSIsIiJdLFszLCJsaWJyYXJ5T25D'@; put 'bGlja0VtaXR0ZXIiLCJ0YWJsZU9uQ2xpY2tFbWl0dGVyIiwibGlicmFyeUxpc3QiXSxbMSwib3Blbi12aWV3Ym94IiwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsMywiY2xpY2siXSxbMSwiZC1mbGV4IiwiY2xyLWFsaWdu'@; put 'LWl0ZW1zLWNlbnRlciJdLFsiY2xyU21hbGwiLCIiLDEsIm1sLTMiXSxbInJvbGUiLCJ0b29sdGlwIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsMywiY2xpY2siXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNo'@; put 'YXBlIiwiY3Vyc29yLW1vdmUiLCJzaXplIiwiMTMiXSxbInJvbGUiLCJ0b29sdGlwIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsIm1sLTMiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwidGltZXMi'@; put 'LCJzaXplIiwiMTkiXSxbImNka0Ryb3BMaXN0R3JvdXAiLCIiLDEsImNvbmZpZ3VyYXRpb24td3JhcHBlciJdLFsxLCJjb2xzLXNlYXJjaCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLCJwbGFjZWhvbGRlciIsIlNlYXJjaCBjb2x1bW5zIiwi'@; put 'dGFiaW5kZXgiLCIwIiwzLCJ2YWx1ZUNoYW5nZSIsImlucHV0SWQiLCJlbWl0T25seVNlbGVjdGVkIl0sWyJjZGtEcm9wTGlzdCIsIiIsMSwiY29scy1saXN0IiwzLCJjZGtEcm9wTGlzdERyb3BwZWQiLCJjZGtEcm9wTGlzdERhdGEiXSxbImNka0RyYWciLCIiLDMsImNsYXNzIiwiY3Vyc29y'@; put 'LWRlZmF1bHQtaSIsInByaW1hcnlLZXlIZWFkZXJTdHlsZSIsImNka0RyYWdEYXRhIiwiY2RrRHJhZ0Rpc2FibGVkIl0sWyJjZGtEcmFnIiwiIiwzLCJjZGtEcmFnRGF0YSIsImNka0RyYWdEaXNhYmxlZCJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJrZXkiXSxbImFyaWEtbGFi'@; put 'ZWwiLCJSZW1vdmUgY29sdW1uIiwic2hhcGUiLCJ0cmFzaCIsMSwiY3Vyc29yLXBvaW50ZXIiXSxbImFyaWEtbGFiZWwiLCJSZW1vdmUgY29sdW1uIiwic2hhcGUiLCJ0cmFzaCIsMSwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJjZGtEcmFnQm91bmRhcnkiLCIudmlld2JveGVzLWNv'@; put 'bnRhaW5lciIsImNka0RyYWciLCIiLCJ0YWJpbmRleCIsIjAiLDEsInZpZXdib3giLDMsIm1vdXNlZG93biIsImNka0RyYWdFbmRlZCIsImNka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uIiwiaWQiXSxbImNka0RyYWdIYW5kbGUiLCIiLDEsImRyYWctaGFuZGxlIiwiZC1mbGV4IiwiY2xyLWp1c3Rp'@; put 'ZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJ0YWJsZS10aXRsZSJdLFsxLCJhY3Rpb25zIl0sWyJhcmlhLWxhYmVsIiwiQ29sbGFwc2UiLCJzaGFwZSIsImFuZ2xlIHRvcCJdLFsiYXJpYS1sYWJlbCIsIkV4cGFuZCIsInNoYXBlIiwiYW5nbGUgZG93'@; put 'biJdLFsiYXJpYS1sYWJlbCIsIk1pbmltaXplIiwic2hhcGUiLCJtaW51cyIsMywiY2xpY2siXSxbImFyaWEtbGFiZWwiLCJDbG9zZSIsInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzEsImRyYWdIYW5kbGUiLCJjb3JuZXIiLDMsInBvaW50ZXJkb3duIiwiaWQiXSxbMSwiZHJhZ0hhbmRs'@; put 'ZSIsImNvcm5lci1sZWZ0IiwzLCJwb2ludGVyZG93biIsImlkIl0sWzEsImRyYWdIYW5kbGUiLCJyaWdodCIsMywicG9pbnRlcmRvd24iLCJpZCJdLFsxLCJkcmFnSGFuZGxlIiwiYm90dG9tIiwzLCJwb2ludGVyZG93biIsImlkIl0sWzEsImRyYWdIYW5kbGUiLCJsZWZ0IiwzLCJwb2ludGVy'@; put 'ZG93biIsImlkIl0sWyJjbHJGb3JtIiwiIiwxLCJkLWZsZXgiLCJhbGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItZmxleC13cmFwIiwidGFibGUtc2VhcmNoLXdyYXBwZXIiXSxbMSwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIiwiY2xy'@; put 'LWZsZXgtd3JhcCJdLFsxLCJpbnB1dC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIiwibmFtZSIsInNlYXJjaC1pbnB1dCIsMywia2V5dXAuZW50ZXIiLCJ0eXBlIl0sWyJhcmlhLWxhYmVsIiwiU2VhcmNoIiwic2hhcGUiLCJzZWFyY2giXSxbMSwic3Bp'@; put 'bm5lciIsInNwaW5uZXItaW5saW5lIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJDaGVja2JveCIsIiIsIm5hbWUiLCJudW1lcmljX2NoZWNrIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSJdLFsiYXJpYS1sYWJlbCIsIlJlbG9hZCBkYXRh'@; put 'Iiwic2hhcGUiLCJyZWZyZXNoIiwxLCJjbGljay1pY29uIl0sWyJyb2xlIiwidG9vbHRpcCIsImFyaWEtaGFzcG9wdXAiLCJ0cnVlIiwxLCJ0b29sdGlwIiwidG9vbHRpcC1sZyIsInRvb2x0aXAtYm90dG9tLWxlZnQiLCJtbC01IiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwi'@; put 'c2hhcGUiLCJmaWx0ZXIiLDEsImNsaWNrLWljb24iXSxbMSwidG9vbHRpcC1jb250ZW50IiwidG9vbHRpcC1sb25nIl0sWyJhcmlhLWxhYmVsIiwiRWRpdCB0YWJsZSIsInNoYXBlIiwicGVuY2lsIiwxLCJjbGljay1pY29uIiwibWwtNSIsMywiY2xpY2siXSxbImNsYXNzIiwiY29udGVudCIs'@; put 'MywiZGlzcGxheSIsNCwibmdWYXIiXSxbImFyaWEtbGFiZWwiLCJDb2xsYXBzZSIsInNoYXBlIiwiYW5nbGUgdG9wIiwzLCJjbGljayJdLFsiYXJpYS1sYWJlbCIsIkV4cGFuZCIsInNoYXBlIiwiYW5nbGUgZG93biIsMywiY2xpY2siXSxbImFyaWEtbGFiZWwiLCJTZWFyY2giLCJzaGFwZSIs'@; put 'InNlYXJjaCIsMywiY2xpY2siXSxbImFyaWEtbGFiZWwiLCJSZWxvYWQgZGF0YSIsInNoYXBlIiwicmVmcmVzaCIsMSwiY2xpY2staWNvbiIsMywiY2xpY2siXSxbMSwiY29udGVudCJdLFsxLCJob3Qtc3Bpbm5lciIsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFszLCJzZXR0aW5n'@; put 'cyIsImlkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJjbHItbW9kYWwiLDkpLHd0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGwpe3JldHVybiBvLmNsck1vZGFsT3BlbkNoYW5nZShsKX0pLEooMSwiaDMiLDEwKSxTZSgyLCIgVmlld2JveGVzICIpLHZ0KDMs'@; put 'b2luLDIsMiwic3BhbiIsMTEpLHRlKCksSig0LCJkaXYiLDEyKSg1LCJkaXYiLDEzKSg2LCJwIiwxNCksU2UoNywiQWRkIG5ldyIpLHRlKCksSXQoOCwiaHIiLDE1KSx2dCg5LGFpbiwyLDAsImRpdiIsMTYpLHZ0KDEwLHNpbiwyLDAsInAiLDE3KSx2dCgxMSxsaW4sMSwxLCJkYy10cmVlIiwx'@; put 'OCksdGUoKSxKKDEyLCJkaXYiLDE5KSgxMywiZGl2IiwyMCkoMTQsInAiLDE0KSxTZSgxNSwiQ3VycmVudGx5IG9wZW4iKSx0ZSgpLEooMTYsImRpdiIpKDE3LCJhIiwyMSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLnNuYXBUb0dyaWQoKX0pLEl0KDE4LCJjbHItaWNvbiIsMjIp'@; put 'LEooMTksInNwYW4iLDIzKSxTZSgyMCwiU25hcCB2aWV3Ym94ZXMgdG8gZ3JpZCIpLHRlKCkoKSxKKDIxLCJhIiwyMSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLm1pbmltaXplQWxsKCl9KSxJdCgyMiwiY2xyLWljb24iLDI0KSxKKDIzLCJzcGFuIiwyMyksU2UoMjQsIk1pbmlt'@; put 'aXplIGFsbCB2aWV3Ym94ZXMiKSx0ZSgpKCksSigyNSwiYSIsMjEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gby5yZXN0b3JlQWxsKCl9KSxJdCgyNiwiY2xyLWljb24iLDI1KSxKKDI3LCJzcGFuIiwyMyksU2UoMjgsIlJlc3RvcmUgYWxsIHZpZXdib3hlcyIpLHRlKCkoKSgpKCks'@; put 'SXQoMjksImhyIiksdnQoMzAsY2luLDIsMCwicCIsMjYpLF9vKDMxLGZpbiwxNSwxMCwiZGl2IiwyNyxDbyksSigzMywiZGl2IiwyOCkoMzQsInAiLDI5KSxTZSgzNSksdGUoKSgpLEl0KDM2LCJociIpLFluKDM3LGJpbiwzLDIsImRpdiIsMzApLHRlKCkoKSxKKDM4LCJkaXYiLDMxKSgzOSwi'@; put 'YnV0dG9uIiwzMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLnZpZXdib3hNb2RhbD0hMX0pLFNlKDQwLCIgT2sgIiksdGUoKSgpKCksSig0MSwiZGl2IiwzMyksX28oNDIsUmluLDQxLDQxLCJkaXYiLDM0LENvKSx0ZSgpLEooNDQsImNsci1tb2RhbCIsMzUpLGhpKCJjbHJNb2Rh'@; put 'bE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGwpe3JldHVybiBmaShvLmZpbHRlcixsKXx8KG8uZmlsdGVyPWwpLGx9KSxKKDQ1LCJoMyIsMzYpLFNlKDQ2LCIgRmlsdGVyIGZvciB2aWV3Ym94IHRhYmxlOiAiKSxKKDQ3LCJzcGFuIiksU2UoNDgpLHRlKCkoKSxKKDQ5LCJkaXYiLDM3KSx2dCg1MCxJ'@; put 'aW4sMiwxLCJhcHAtcXVlcnkiLDM4KSx0ZSgpLEooNTEsImRpdiIsMzEpKDUyLCJidXR0b24iLDM5KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVzZXRGaWx0ZXIoKX0pLFNlKDUzLCIgcmVzZXQgZmlsdGVyICIpLHRlKCksSig1NCwiYnV0dG9uIiwzMiksd3QoImNsaWNrIixm'@; put 'dW5jdGlvbigpe3JldHVybiBvLmZpbHRlcj0hMX0pLFNlKDU1LCIgQ2FuY2VsICIpLHRlKCksSig1NiwiYnV0dG9uIiw0MCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLnNlbmRDbGF1c2UoKX0pLFNlKDU3LCIgT2sgIiksdGUoKSgpKCkpLDImaSYmKHJ0KCJjbHJNb2RhbE9wZW4i'@; put 'LG8udmlld2JveE1vZGFsKSgiY2xyTW9kYWxDbG9zYWJsZSIsITApKCJjbHJNb2RhbFNpemUiLCJsZyIpLGllKDMpLF90KG8ubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXQhPT1vLkluZmluaXR5PzM6LTEpLGllKDYpLF90KG8ubGlicmFyaWVzTG9hZGluZz85Oi0xKSxpZSgpLF90'@; put 'KG8udmlld2JveExpbWl0UmVhY2hlZD8xMDotMSksaWUoKSxfdChvLnZpZXdib3hNb2RhbD8xMTotMSksaWUoMTkpLF90KG8udmlld2JveGVzLmxlbmd0aDwxPzMwOi0xKSxpZSgpLHlvKG8udmlld2JveGVzKSxpZSg0KSxTcigiIENvbmZpZ3VyYXRpb24gKCIsbnVsbCE9by5zZWxlY3RlZFZp'@; put 'ZXdib3hUYWJsZSYmby5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94TGliRGF0YXNldD8iIyIrKG51bGw9PW8uc2VsZWN0ZWRWaWV3Ym94VGFibGU/bnVsbDpvLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hJZCkrIiAiKyhudWxsPT1vLnNlbGVjdGVkVmlld2JveFRhYmxlP251bGw6'@; put 'by5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94TGliRGF0YXNldCk6InNlbGVjdCB2aWV3Ym94IGZyb20gYWJvdmUiLCIpICIpLGllKDIpLHJ0KCJuZ1ZhciIsdEkoMTcsbmluLG51bGw9PW8uc2VsZWN0ZWRWaWV3Ym94VGFibGV8fG51bGw9PW8uc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90'@; put 'VGFibGU/bnVsbDpvLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4sbnVsbD09by5zZWxlY3RlZFZpZXdib3hUYWJsZXx8bnVsbD09by5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZT9udWxsOm8uc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUu'@; put 'Y29sSGVhZGVyc1Zpc2libGUsbnVsbD09by5zZWxlY3RlZFZpZXdib3hUYWJsZXx8bnVsbD09by5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZT9udWxsOm8uc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuaGVhZGVyUGtzKSksaWUoNSkseW8oby52aWV3Ym94ZXMpLGllKDIpLGRp'@; put 'KCJjbHJNb2RhbE9wZW4iLG8uZmlsdGVyKSxydCgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDQpLE5oKCIgIyIsbnVsbD09by5maWx0ZXJpbmdWaWV3Ym94P251bGw6by5maWx0ZXJpbmdWaWV3Ym94LmlkLCIgIixvLmZpbHRlckxpYmRzLCIgIiksaWUo'@; put 'MiksX3Qoby5maWx0ZXI/NTA6LTEpLGllKDYpLHJ0KCJjbHJMb2FkaW5nIixvLmZpbHRlckxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOltjdSx4ZCxtaCwkMCxpbSxlbCxuTWUsVTIsRXYsRmYsUGYsejIsTGIsWGcsUWcsSDIsb2MsSWIsWGwsZDQsem1lLEw3LENFZSx3RWUsRm9lLGJFZSxrWmUs'@; put 'cXJuLG1BLHFEXSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKSxEWmU9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyKXt0aGlzLmZpbGVPdmVyPW5ldyBLcix0aGlzLmZpbGVEcm9wPW5ldyBLcix0aGlzLmVsZW1lbnQ9cn1vbkRyb3Aocil7dGhpcy5fcHJldmVu'@; put 'dEFuZFN0b3Aocik7Y29uc3QgaT1yLmRhdGFUcmFuc2Zlcj8uZmlsZXMsbz1bXTtpZihpKWZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKW8ucHVzaChpW2FdKTt0aGlzLnVwbG9hZGVyPy5hZGRUb1F1ZXVlKG8pLHRoaXMuZmlsZU92ZXIuZW1pdCghMSksdGhpcy5maWxlRHJvcC5lbWl0KG8p'@; put 'fW9uRHJhZ092ZXIocil7dGhpcy5fcHJldmVudEFuZFN0b3Aocik7Y29uc3QgaT1yLmRhdGFUcmFuc2ZlcjtpZihpKXtpZigtMT09PWkudHlwZXMuaW5kZXhPZigiRmlsZXMiKSlyZXR1cm47aS5kcm9wRWZmZWN0PSJjb3B5In10aGlzLmZpbGVPdmVyLmVtaXQoITApfW9uRHJhZ0xlYXZlKHIp'@; put 'e3RoaXMuX3ByZXZlbnRBbmRTdG9wKHIpLHRoaXMuZmlsZU92ZXIuZW1pdCghMSl9X3ByZXZlbnRBbmRTdG9wKHIpe3IucHJldmVudERlZmF1bHQoKSxyLnN0b3BQcm9wYWdhdGlvbigpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUp'@; put 'KHplKG5vKSl9LHRoaXMuXHUwMjc1ZGlyPSRyKHt0eXBlOmUsc2VsZWN0b3JzOltbIiIsImFwcEZpbGVEcm9wIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihpLG8pezEmaSYmd3QoImRyb3AiLGZ1bmN0aW9uKGwpe3JldHVybiBvLm9uRHJvcChsKX0pKCJkcmFnb3ZlciIsZnVuY3Rpb24o'@; put 'bCl7cmV0dXJuIG8ub25EcmFnT3ZlcihsKX0pKCJkcmFnbGVhdmUiLGZ1bmN0aW9uKGwpe3JldHVybiBvLm9uRHJhZ0xlYXZlKGwpfSl9LGlucHV0czp7dXBsb2FkZXI6InVwbG9hZGVyIn0sb3V0cHV0czp7ZmlsZU92ZXI6ImZpbGVPdmVyIixmaWxlRHJvcDoiZmlsZURyb3AifSxzdGFuZGFs'@; put 'b25lOiExfSkpfXJldHVybiBuKCksZX0pKCksTFplPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3Iocil7dGhpcy5maWxlU2VsZWN0ZWQ9bmV3IEtyLHRoaXMuZWxlbWVudD1yfWlzRW1wdHlBZnRlclNlbGVjdGlvbigpe3JldHVybiEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQu'@; put 'YXR0cmlidXRlcy5tdWx0aXBsZX1vbkNoYW5nZSgpe2NvbnN0IHI9dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlsZXM7dGhpcy51cGxvYWRlcj8uYWRkVG9RdWV1ZShyKSx0aGlzLmZpbGVTZWxlY3RlZC5lbWl0KHIpLHRoaXMuaXNFbXB0eUFmdGVyU2VsZWN0aW9uKCkmJih0aGlzLmVs'@; put 'ZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZT0iIil9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUobm8pKX0sdGhpcy5cdTAyNzVkaXI9JHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siIiwiYXBwRmlsZVNlbGVjdCIsIiJdXSxob3N0'@; put 'QmluZGluZ3M6ZnVuY3Rpb24oaSxvKXsxJmkmJnd0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25DaGFuZ2UoKX0pfSxpbnB1dHM6e3VwbG9hZGVyOiJ1cGxvYWRlciJ9LG91dHB1dHM6e2ZpbGVTZWxlY3RlZDoiZmlsZVNlbGVjdGVkIn0sc3RhbmRhbG9uZTohMX0pKX1yZXR1cm4g'@; put 'bigpLGV9KSgpO2Z1bmN0aW9uIERpbihuLGUpezEmbiYmKEooMCwicCIsMyksU2UoMSwiTm8gZGF0YXNldCBtZXRhIHRvIHNob3cuIiksdGUoKSl9ZnVuY3Rpb24gTGluKG4sZSl7aWYoMSZuJiYoSigwLCJjbHItZGctY29sdW1uIiksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PWUuJGltcGxp'@; put 'Y2l0O2llKCkscHIodC5jb2xOYW1lfHx0LmNvbEtleSl9fWZ1bmN0aW9uIE9pbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWRnLWNlbGwiKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgpLiRpbXBsaWNpdDtpZSgpLHByKHJbdC5jb2xLZXldKX19ZnVuY3Rpb24g'@; put 'TmluKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItZGctcm93IiwxMSksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0LG89VGUoMikuJGltcGxpY2l0O3JldHVybiBYZShvLm9uUm93Q2xpY2s/by5vblJvd0NsaWNrKGkpOiIiKX0pLF9vKDEs'@; put 'T2luLDIsMSwiY2xyLWRnLWNlbGwiLG51bGwsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpLiRpbXBsaWNpdDtpZSgpLHlvKHQuY29sc1RvRGlzcGxheSl9fWZ1bmN0aW9uIEZpbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRhYi1jb250ZW50Iiw5KSgxLCJjbHItZGF0YWdyaWQiKSxf'@; put 'bygyLExpbiwyLDEsImNsci1kZy1jb2x1bW4iLG51bGwsQ28pLF9vKDQsTmluLDMsMCwiY2xyLWRnLXJvdyIsMTAsQ28pLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKDIpLHlvKHQuY29sc1RvRGlzcGxheSksaWUoMikseW8odC5tZXRhKX19ZnVuY3Rpb24gUGluKG4s'@; put 'ZSl7aWYoMSZuJiYoSigwLCJjbHItdGFiIikoMSwiYnV0dG9uIiw3KSxTZSgyKSx0ZSgpLFluKDMsRmluLDYsMCwiY2xyLXRhYi1jb250ZW50Iiw4KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1lLiRpbmRleDtpZSgyKSxwcih0Lm5hbWUpLGllKCkscnQoImNscklmQWN0aXZl'@; put 'IiwwPT09cil9fWxldCBPWmU9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMub3Blbj0hMSx0aGlzLmRzbWV0YT1bXSx0aGlzLnZlcnNpb25zPVtdLHRoaXMub3BlbkNoYW5nZT1uZXcgS3IsdGhpcy5yb3dDbGlja2VkPW5ldyBLcix0aGlzLmRzbWV0YVRhYnM9W10sdGhp'@; put 'cy52ZXJzaW9uc1RhYnM9W10sdGhpcy50YWJzPVtdfW5nT25Jbml0KCl7fW5nT25DaGFuZ2VzKHIpe3IuZHNtZXRhPy5jdXJyZW50VmFsdWU/Lmxlbmd0aD4wJiYodGhpcy5wYXJzZURTTWV0YSgpLHRoaXMucGFyc2VWZXJzaW9ucygpLHRoaXMudGFicz1bLi4udGhpcy5kc21ldGFUYWJzLC4u'@; put 'LnRoaXMudmVyc2lvbnNUYWJzXSl9cGFyc2VEU01ldGEoKXt0aGlzLmRzbWV0YVRhYnM9W107Zm9yKGxldCByIG9mIHRoaXMuZHNtZXRhKXtsZXQgaT10aGlzLmRzbWV0YVRhYnMuZmluZEluZGV4KG89Pm8ubmFtZT09PXIuT0RTX1RBQkxFKTtpPDAmJihpPXRoaXMuZHNtZXRhVGFicy5wdXNo'@; put 'KHtuYW1lOnIuT0RTX1RBQkxFLHRpdGxlOiJEYXRhc2V0IE1ldGEiLGNvbHNUb0Rpc3BsYXk6W3tjb2xLZXk6Ik5BTUUifSx7Y29sS2V5OiJWQUxVRSJ9XSxtZXRhOltdLG9uUm93Q2xpY2s6bz0+e3RoaXMucm93Q2xpY2tlZC5lbWl0KG8pfX0pLTEpLHRoaXMuZHNtZXRhVGFic1tpXS5tZXRh'@; put 'LnB1c2gocil9fXBhcnNlVmVyc2lvbnMoKXt0aGlzLnZlcnNpb25zVGFicz1be25hbWU6IlZFUlNJT05TIix0aXRsZToiRGF0YXNldCBNZXRhIixjb2xzVG9EaXNwbGF5Olt7Y29sS2V5OiJMT0FEX1JFRiJ9LHtjb2xLZXk6IlVTRVJfTk0ifSx7Y29sS2V5OiJWRVJTSU9OX0RUVE0ifSx7Y29s'@; put 'S2V5OiJORVdfUkVDT1JEUyIsY29sTmFtZToiQUREIn0se2NvbEtleToiQ0hBTkdFRF9SRUNPUkRTIixjb2xOYW1lOiJNT0QifSx7Y29sS2V5OiJERUxFVEVEX1JFQ09SRFMiLGNvbE5hbWU6IkRFTCJ9LHtjb2xLZXk6IlZFUlNJT05fREVTQyJ9XSxtZXRhOnRoaXMudmVyc2lvbnMsb25Sb3dD'@; put 'bGljazpyPT57dGhpcy5yb3dDbGlja2VkLmVtaXQocil9fV19b25PcGVuQ2hhbmdlKHIpe3RoaXMub3Blbj1yLHRoaXMub3BlbkNoYW5nZS5lbWl0KHIpfW9uQ2xvc2VDbGljaygpe3RoaXMub25PcGVuQ2hhbmdlKCExKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24o'@; put 'aSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWRhdGFzZXQtaW5mbyJdXSxpbnB1dHM6e29wZW46Im9wZW4iLGRzbWV0YToiZHNtZXRhIix2ZXJzaW9uczoidmVyc2lvbnMifSxvdXRwdXRzOntvcGVuQ2hhbmdlOiJvcGVuQ2hh'@; put 'bmdlIixyb3dDbGlja2VkOiJyb3dDbGlja2VkIn0sc3RhbmRhbG9uZTohMSxmZWF0dXJlczpbaXVdLGRlY2xzOjExLHZhcnM6NCxjb25zdHM6W1szLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFs'@; put 'LXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsInRleHQtY2VudGVyIl0sWyJjbHJMYXlvdXQiLCJ2ZXJ0aWNhbCJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIs'@; put 'ImJ0bi1pbmZvLW91dGxpbmUiLDMsImNsaWNrIl0sWyJjbHJUYWJMaW5rIiwiIiwiaWQiLCJsaW5rMSJdLFsiaWQiLCJjb250ZW50MSIsImNsYXNzIiwiZC1mbGV4IGNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIiw0LCJjbHJJZkFjdGl2ZSJdLFsiaWQiLCJjb250ZW50MSIsMSwi'@; put 'ZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJ3LTEwMCJdLFsxLCJjbGlja2FibGUtcm93Il0sWzEsImNsaWNrYWJsZS1yb3ciLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJjbHItbW9kYWwiLDApLHd0KCJjbHJNb2RhbE9wZW5DaGFu'@; put 'Z2UiLGZ1bmN0aW9uKGwpe3JldHVybiBvLm9uT3BlbkNoYW5nZShsKX0pLEooMSwiaDMiLDEpLFNlKDIsIkRhdGFzZXQgTWV0YSIpLHRlKCksSigzLCJkaXYiLDIpLHZ0KDQsRGluLDIsMCwicCIsMyksSig1LCJjbHItdGFicyIsNCksX28oNixQaW4sNCwyLCJjbHItdGFiIixudWxsLENvKSx0'@; put 'ZSgpKCksSig4LCJkaXYiLDUpKDksImJ1dHRvbiIsNiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLm9uQ2xvc2VDbGljaygpfSksU2UoMTAsIiBDbG9zZSAiKSx0ZSgpKCkoKSksMiZpJiYocnQoImNsck1vZGFsT3BlbiIsby5vcGVuKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xy'@; put 'TW9kYWxDbG9zYWJsZSIsITApLGllKDQpLF90KG8uZHNtZXRhVGFicy5sZW5ndGg8MT80Oi0xKSxpZSgyKSx5byhvLnRhYnMpKX0sZGVwZW5kZW5jaWVzOltOdix2NCx0dyxMdixHNSxudyxSTSxPdixRYixEdixKYix4ZCxtaCxoTSx4dixrdiwkYixBdixUdixaYl0sZW5jYXBzdWxhdGlvbjoy'@; put 'fSkpfXJldHVybiBuKCksZX0pKCksSGluPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IoKXt0aGlzLm9wZW49ITEsdGhpcy50aXRsZT0iQ29uZmlybSIsdGhpcy5tZXNzYWdlPSIiLHRoaXMuY29uZmlybVRleHQ9IlllcyIsdGhpcy5jYW5jZWxUZXh0PSJObyIsdGhpcy5yZXN1bHQ9'@; put 'bmV3IEtyfW9uQ29uZmlybSgpe3RoaXMucmVzdWx0LmVtaXQoITApfW9uQ2FuY2VsKCl7dGhpcy5yZXN1bHQuZW1pdCghMSl9b25DbHJNb2RhbE9wZW5DaGFuZ2Uocil7IXImJnRoaXMub3BlbiYmdGhpcy5yZXN1bHQuZW1pdCghMSl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1'@; put 'bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1jb25maXJtLW1vZGFsIl1dLGlucHV0czp7b3Blbjoib3BlbiIsdGl0bGU6InRpdGxlIixtZXNzYWdlOiJtZXNzYWdlIixjb25maXJtVGV4dDoiY29uZmlybVRleHQi'@; put 'LGNhbmNlbFRleHQ6ImNhbmNlbFRleHQifSxvdXRwdXRzOntyZXN1bHQ6InJlc3VsdCJ9LHN0YW5kYWxvbmU6ITEsZGVjbHM6MTEsdmFyczo2LGNvbnN0czpbWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsx'@; put 'LCJtb2RhbC1ib2R5Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihK'@; put 'KDAsImNsci1tb2RhbCIsMCksd3QoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIG8ub25DbHJNb2RhbE9wZW5DaGFuZ2UobCl9KSxKKDEsImgzIiwxKSxTZSgyKSx0ZSgpLEooMywiZGl2IiwyKSg0LCJkaXYiKSxTZSg1KSx0ZSgpKCksSig2LCJkaXYiLDMpKDcsImJ1'@; put 'dHRvbiIsNCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLm9uQ2FuY2VsKCl9KSxTZSg4KSx0ZSgpLEooOSwiYnV0dG9uIiw1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25Db25maXJtKCl9KSxTZSgxMCksdGUoKSgpKCkpLDImaSYmKHJ0KCJjbHJNb2RhbE9wZW4i'@; put 'LG8ub3BlbikoImNsck1vZGFsU2l6ZSIsIm1kIiksaWUoMikscHIoby50aXRsZSksaWUoMykscHIoby5tZXNzYWdlKSxpZSgzKSxTcigiICIsby5jYW5jZWxUZXh0LCIgIiksaWUoMiksU3IoIiAiLG8uY29uZmlybVRleHQsIiAiKSl9LGRlcGVuZGVuY2llczpbeGQsbWhdLGVuY2Fwc3VsYXRp'@; put 'b246Mn0pKX1yZXR1cm4gbigpLGV9KSgpLFZpbj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7dGhpcy5vcGVuPSExLHRoaXMuZG9uZT0wLHRoaXMudG90YWw9MCx0aGlzLmNhbmNlbD1uZXcgS3J9b25DYW5jZWwoKXt0aGlzLmNhbmNlbC5lbWl0KCl9c3RhdGljI2U9bj0oKT0+'@; put 'KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1idWxrLXZhbGlkYXRpb24tbW9kYWwiXV0saW5wdXRzOntvcGVuOiJvcGVuIixkb25lOiJkb25lIix0b3RhbDoidG90YWwifSxvdXRw'@; put 'dXRzOntjYW5jZWw6ImNhbmNlbCJ9LHN0YW5kYWxvbmU6ITEsZGVjbHM6MTIsdmFyczo4LGNvbnN0czpbWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwiY2xyTW9kYWxTaXplIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFs'@; put 'LWJvZHkiLCJidWxrLXZhbGlkYXRpb24tYm9keSJdLFsxLCJidWxrLXZhbGlkYXRpb24tcm93Il0sWyJjbHJTbWFsbCIsIiJdLFsxLCJidWxrLXZhbGlkYXRpb24tdGV4dCJdLFsxLCJidWxrLXZhbGlkYXRpb24tcHJvZ3Jlc3MiLDMsImNsclZhbHVlIiwiY2xyTWF4Il0sWzEsIm1vZGFsLWZv'@; put 'b3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJjbHItbW9kYWwiLDApKDEsImgzIiwxKSxTZSgyLCJWYWxpZGF0aW5nIGNlbGxzIiksdGUoKSxKKDMsImRpdiIsMikoNCwiZGl2'@; put 'IiwzKSxJdCg1LCJjbHItc3Bpbm5lciIsNCksSig2LCJzcGFuIiw1KSxTZSg3KSx0ZSgpKCksSXQoOCwiY2xyLXByb2dyZXNzLWJhciIsNiksdGUoKSxKKDksImRpdiIsNykoMTAsImJ1dHRvbiIsOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLm9uQ2FuY2VsKCl9KSxTZSgxMSwi'@; put 'IENhbmNlbCAiKSx0ZSgpKCkoKSksMiZpJiYocnQoImNsck1vZGFsT3BlbiIsby5vcGVuKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpKCJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwhMCkoImNsck1vZGFsU2l6ZSIsInNtIiksaWUoNyksTmgoIiBWYWxpZGF0aW5nICIsby5kb25lLCIgLyAiLG8u'@; put 'dG90YWwsIlx1MjAyNiAiKSxpZSgpLHJ0KCJjbHJWYWx1ZSIsby5kb25lKSgiY2xyTWF4IixvLnRvdGFsKSl9LGRlcGVuZGVuY2llczpbeGQsbWgsejIsblRlXSxzdHlsZXM6WyIuYnVsay12YWxpZGF0aW9uLWJvZHlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVj'@; put 'dGlvbjpjb2x1bW47Z2FwOjEwcHh9LmJ1bGstdmFsaWRhdGlvbi1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idWxrLXZhbGlkYXRpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4fS5idWxrLXZhbGlkYXRpb24tYm9k'@; put 'eVtfbmdjb250ZW50LSVDT01QJV0gICAuYnVsay12YWxpZGF0aW9uLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIGF1dG99LmJ1bGstdmFsaWRhdGlvbi1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idWxrLXZhbGlkYXRpb24tcHJvZ3Jlc3NbX25nY29udGVudC0lQ09NUCVd'@; put 'e21hcmdpbjowfSJdfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgQmluPSgpPT5bIm51bWVyaWMiLHZvaWQgMF0sTlplPSgpPT5bImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZS5jdXN0b20iXSxXbWU9KG4sZSk9Pih7Y29sOm4sY29sSW5kZXg6ZX0pLGppbj0oKT0+W3ZvaWQgMF0sVWlu'@; put 'PSgpPT5bIlNPRlRTRUxFQ1QiLCJTT0ZUU0VMRUNUX0hPT0siXTtmdW5jdGlvbiB6aW4obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDE1KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoKSxwcih0LmdlbmVyYXRlZFJlY29yZFVybCl9fWZ1bmN0aW9uIFdpbihuLGUpe2lmKDEm'@; put 'bil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiwxNiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5nZW5lcmF0ZUVkaXRSZWNvcmRVcmwoKSl9KSxTZSgxKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgyKTtydCgiZGlzYWJsZWQiLHQuZ2VuZXJhdGVFZGl0'@; put 'UmVjb3JkVXJsTG9hZGluZyksaWUoKSxTcigiICIsdC5nZW5lcmF0ZWRSZWNvcmRVcmw/ImNvcHkgdG8gY2xpcGJvYXJkIjp0LmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmc/IkdlbmVyYXRpbmcgdXJsLi4uIjoiTGluayB0byB0aGlzIHJlY29yZCIsIiAiKX19ZnVuY3Rpb24gWWluKG4s'@; put 'ZSl7aWYoMSZuJiYobWwoMCksWW4oMSx6aW4sMiwxLCJzcGFuIiwxMykoMixXaW4sMiwyLCJidXR0b24iLDE0KSxybCgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJuZ0lmIiwhKG51bGwhPXQuY3VycmVudFJlY29yZCYmdC5jdXJyZW50UmVjb3JkLm5vTGlua09wdGlvbikpLGllKCks'@; put 'cnQoIm5nSWYiLCEobnVsbCE9dC5jdXJyZW50UmVjb3JkJiZ0LmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uKSl9fWZ1bmN0aW9uIFppbihuLGUpezEmbiYmKEooMCwiZGl2IiwxNykoMSwic3BhbiIsMTgpLFNlKDIsIiBMb2FkaW5nLi4uICIpLHRlKCkoKSl9ZnVuY3Rpb24gR2luKG4sZSl7'@; put 'MSZuJiZJdCgwLCJjbHItaWNvbiIsMzIpfWZ1bmN0aW9uICRpbihuLGUpezEmbiYmKEooMCwic3BhbiIsMzMpLFNlKDEsIiBMb2FkaW5nLi4uICIpLHRlKCkpfWZ1bmN0aW9uIHFpbihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDM0KX1mdW5jdGlvbiBLaW4obixlKXsxJm4mJkl0KDAsImNs'@; put 'ci1pY29uIiwzNSl9ZnVuY3Rpb24gWGluKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaW5wdXQtY29udGFpbmVyIiwzNykoMSwiaW5wdXQiLDM4KSx3dCgiZm9jdXNpbiIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgzKS5pbmRleDtyZXR1cm4gWGUoVGUoMikub25S'@; put 'ZWNvcmRJbnB1dEZvY3VzKGksbykpfSkoInBhc3RlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoNSkucmVjb3JkSW5wdXRQYXN0ZShpKSl9KSgiaW5wdXQiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMykuJGltcGxpY2l0LGE9VGUoMik7cmV0dXJuIGEucmVjb3JkSW5w'@; put 'dXRDaGFuZ2UoaSxvLmtleSksWGUoYS5jdXJyZW50UmVjb3JkLm5vTGlua09wdGlvbj0hMCl9KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgzKS4kaW1wbGljaXQsYT1UZSgyKTtyZXR1cm4gZmkoYS5jdXJyZW50UmVjb3JkW28ua2V5XSxpKXx8KGEu'@; put 'Y3VycmVudFJlY29yZFtvLmtleV09aSksWGUoaSl9KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDMpLiRpbXBsaWNpdCxyPVRlKDIpO3dyKCJpbnZhbGlkLWRhdGEiLHIuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluY2x1ZGVzKHQua2V5KSksaWUoKSxkaSgibmdNb2RlbCIsci5jdXJy'@; put 'ZW50UmVjb3JkW3Qua2V5XSl9fWZ1bmN0aW9uIFFpbihuLGUpezEmbiYmYXUoMCl9ZnVuY3Rpb24gSmluKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiKSxZbigxLFFpbiwxLDAsIm5nLWNvbnRhaW5lciIsMzkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKSxyPXQuJGltcGxpY2l0LGk9dC5pbmRl'@; put 'eDtUZSgyKTtjb25zdCBvPW9vKDE2KTtpZSgpLHJ0KCJuZ1RlbXBsYXRlT3V0bGV0IixvKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLE41KDIsV21lLHIsaSkpfX1mdW5jdGlvbiBlb24obixlKXtpZigxJm4mJihtbCgwKSxZbigxLFhpbiwyLDMsImNsci1pbnB1dC1jb250YWluZXIiLDM2'@; put 'KSgyLEppbiwyLDUsImRpdiIsNSkscmwoKSksMiZuKXtsZXQgdCxyO2NvbnN0IGk9VGUoMikuJGltcGxpY2l0LG89VGUoMik7aWUoKSxydCgibmdJZiIsbWMoMixCaW4pLmluY2x1ZGVzKG51bGw9PW8uY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHQ9by5jdXJyZW50UmVjb3JkVmFs'@; put 'aWRhdG9yLmdldFJ1bGUoaS5rZXkpKT9udWxsOnQuZWRpdG9yKSksaWUoKSxydCgibmdJZiIsbWMoMyxOWmUpLmluY2x1ZGVzKG51bGw9PW8uY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHI9by5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoaS5rZXkpKT9udWxsOnIuZWRp'@; put 'dG9yKSl9fWZ1bmN0aW9uIHRvbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIpKDEsInRleHRhcmVhIiw0MCwxKSx3dCgiZm9jdXNpbiIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgzKS5pbmRleDtyZXR1cm4gWGUoVGUoMikub25S'@; put 'ZWNvcmRJbnB1dEZvY3VzKGksbykpfSkoInBhc3RlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoNSkucmVjb3JkSW5wdXRQYXN0ZShpKSl9KSgiaW5wdXQiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMykuJGltcGxpY2l0O3JldHVybiBYZShUZSgyKS5yZWNvcmRJbnB1'@; put 'dENoYW5nZShpLG8ua2V5KSl9KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgzKS4kaW1wbGljaXQsYT1UZSgyKTtyZXR1cm4gZmkoYS5jdXJyZW50UmVjb3JkW28ua2V5XSxpKXx8KGEuY3VycmVudFJlY29yZFtvLmtleV09aSksWGUoaSl9KSxTZSgz'@; put 'LCIgICAgICAgICAgICAgICAgICAiKSx0ZSgpLEooNCwiY2xyLWNvbnRyb2wtaGVscGVyIiksU2UoNSksdGUoKSgpfWlmKDImbil7bGV0IHQscixpO2NvbnN0IG89b28oMiksYT1UZSgzKS4kaW1wbGljaXQsbD1UZSgyKTtpZSgpLHdyKCJpbnZhbGlkLWRhdGEiLGwuY3VycmVudFJlY29yZElu'@; put 'dmFsaWRDb2xzLmluY2x1ZGVzKGEua2V5KSkoIm5vdC1jaGFyIixudWxsPT1sLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh0PWwuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGEua2V5KSk/bnVsbDp0LnR5cGUpLHJ0KCJyb3dzIixhLnZhbHVlLmxlbmd0aD44MD82OjEp'@; put 'LGRpKCJuZ01vZGVsIixsLmN1cnJlbnRSZWNvcmRbYS5rZXldKSxydCgibWF4TGVuZ3RoIixudWxsPT1sLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShyPWwuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGEua2V5KSk/bnVsbDpyLmxlbmd0aCksaWUoNCksTmgoIiIsby52'@; put 'YWx1ZS5sZW5ndGgsIiAvICIsbnVsbD09bC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oaT1sLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShhLmtleSkpP251bGw6aS5sZW5ndGgpfX1mdW5jdGlvbiBub24obixlKXsxJm4mJmF1KDApfWZ1bmN0aW9uIHJvbihuLGUpe2lm'@; put 'KDEmbiYmKEooMCwiZGl2IiksWW4oMSxub24sMSwwLCJuZy1jb250YWluZXIiLDM5KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMykscj10LiRpbXBsaWNpdCxpPXQuaW5kZXg7VGUoMik7Y29uc3Qgbz1vbygxNik7aWUoKSxydCgibmdUZW1wbGF0ZU91dGxldCIsbykoIm5nVGVtcGxhdGVPdXRs'@; put 'ZXRDb250ZXh0IixONSgyLFdtZSxyLGkpKX19ZnVuY3Rpb24gaW9uKG4sZSl7aWYoMSZuJiYobWwoMCksWW4oMSx0b24sNiw5LCJjbHItdGV4dGFyZWEtY29udGFpbmVyIiw1KSgyLHJvbiwyLDUsImRpdiIsNSkscmwoKSksMiZuKXtsZXQgdCxyO2NvbnN0IGk9VGUoMikuJGltcGxpY2l0LG89'@; put 'VGUoMik7aWUoKSxydCgibmdJZiIsbWMoMixqaW4pLmluY2x1ZGVzKG51bGw9PW8uY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHQ9by5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoaS5rZXkpKT9udWxsOnQuZWRpdG9yKSksaWUoKSxydCgibmdJZiIsbWMoMyxOWmUpLmlu'@; put 'Y2x1ZGVzKG51bGw9PW8uY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHI9by5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoaS5rZXkpKT9udWxsOnIuZWRpdG9yKSl9fWZ1bmN0aW9uIG9vbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw0MSkoMSwiaW5w'@; put 'dXQiLDQyKSx3dCgiY2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMikucmVjb3JkVGltZUNoYW5nZShpLG8ua2V5KSl9KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpLiRpbXBsaWNpdCxyPVRlKDIpO2llKCksd3IoImlu'@; put 'dmFsaWQtZGF0YSIsci5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXModC5rZXkpKSxydCgidmFsdWUiLHIuY3VycmVudFJlY29yZFt0LmtleV0pLFJyKCJhcmlhLWxhYmVsIix0LmtleSl9fWZ1bmN0aW9uIGFvbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw0'@; put 'MSkoMSwiaW5wdXQiLDQzKSx3dCgiY2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMikucmVjb3JkRGF0ZXRpbWVDaGFuZ2UoaSxvLmtleSkpfSksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgyKS4kaW1wbGljaXQscj1UZSgy'@; put 'KTtpZSgpLHdyKCJpbnZhbGlkLWRhdGEiLHIuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluY2x1ZGVzKHQua2V5KSkscnQoInZhbHVlIixyLnRvTmF0aXZlRGF0ZXRpbWUoci5jdXJyZW50UmVjb3JkW3Qua2V5XSkpLFJyKCJhcmlhLWxhYmVsIix0LmtleSl9fWZ1bmN0aW9uIHNvbihuLGUp'@; put 'e2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw0MSkoMSwiaW5wdXQiLDQ0KSx3dCgiY2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMikucmVjb3JkRGF0ZUNoYW5nZShpLG8ua2V5KSl9KSx0ZSgpKCl9aWYoMiZuKXtj'@; put 'b25zdCB0PVRlKDIpLiRpbXBsaWNpdCxyPVRlKDIpO2llKCksd3IoImludmFsaWQtZGF0YSIsci5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXModC5rZXkpKSxydCgidmFsdWUiLHIuY3VycmVudFJlY29yZFt0LmtleV0pLFJyKCJhcmlhLWxhYmVsIix0LmtleSl9fWZ1bmN0aW9u'@; put 'IGxvbihuLGUpezEmbiYmYXUoMCl9ZnVuY3Rpb24gY29uKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiKSxZbigxLGxvbiwxLDAsIm5nLWNvbnRhaW5lciIsMzkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKSxyPXQuJGltcGxpY2l0LGk9dC5pbmRleDtUZSgyKTtjb25zdCBvPW9vKDE2KTtpZSgp'@; put 'LHJ0KCJuZ1RlbXBsYXRlT3V0bGV0IixvKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLE41KDIsV21lLHIsaSkpfX1mdW5jdGlvbiB1b24obixlKXtpZigxJm4mJihtbCgwKSxKKDEsImRpdiIsMjApKDIsImRpdiIsMjEpKDMsInAiLDIyKSxTZSg0KSxZbig1LEdpbiwxLDAsImNsci1pY29u'@; put 'IiwyMyksdGUoKSxKKDYsInAiLDI0KSxTZSg3KSx0ZSgpKCksSig4LCJkaXYiLDI1KSxZbig5LCRpbiwyLDAsInNwYW4iLDI2KSgxMCxxaW4sMSwwLCJjbHItaWNvbiIsMjcpKDExLEtpbiwxLDAsImNsci1pY29uIiwyOCkoMTIsZW9uLDMsNCwibmctY29udGFpbmVyIiwyOSkoMTMsaW9uLDMs'@; put 'NCwibmctY29udGFpbmVyIiwyOSkoMTQsb29uLDIsNCwiZGl2IiwzMCkoMTUsYW9uLDIsNCwiZGl2IiwzMCkoMTYsc29uLDIsNCwiZGl2IiwzMCkoMTcsY29uLDIsNSwiZGl2IiwyOSksdGUoKSgpLEl0KDE4LCJociIsMzEpLHJsKCkpLDImbil7bGV0IHQscjtjb25zdCBpPVRlKCksbz1pLiRp'@; put 'bXBsaWNpdCxhPWkuaW5kZXgsbD1UZSgyKTtpZSg0KSxTcigiICIsby5rZXksIiAiKSxpZSgpLHJ0KCJuZ0lmIixsLmlzQ29sUGsoby5rZXkpKSxpZSgyKSxTcigiICIsbnVsbD09bC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0odD1sLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0'@; put 'UnVsZShvLmtleSkpP251bGw6dC5kZXNjLCIgIiksaWUoKSxydCgibmdTd2l0Y2giLG51bGw9PWwuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHI9bC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoby5rZXkpKT9udWxsOnIudHlwZSksaWUoKSxydCgibmdJZiIsbC5jdXJy'@; put 'ZW50UmVjb3JkTG9hZGluZ3MuaW5jbHVkZXMoYSkpLGllKCkscnQoIm5nSWYiLGwuY3VycmVudFJlY29yZEVycm9ycy5pbmNsdWRlcyhhKSksaWUoKSxydCgibmdJZiIsIWwuY3VycmVudFJlY29yZEVycm9ycy5pbmNsdWRlcyhhKSYmbC5jdXJyZW50UmVjb3JkV2FybmluZ0NvbHMuaW5jbHVk'@; put 'ZXMoby5rZXkpKSxpZSgpLHJ0KCJuZ1N3aXRjaENhc2UiLCJudW1lcmljIiksaWUoKSxydCgibmdTd2l0Y2hDYXNlIix2b2lkIDApLGllKCkscnQoIm5nU3dpdGNoQ2FzZSIsImludGwtdGltZSIpLGllKCkscnQoIm5nU3dpdGNoQ2FzZSIsImludGwtZGF0ZXRpbWUiKSxpZSgpLHJ0KCJuZ1N3'@; put 'aXRjaENhc2UiLCJpbnRsLWRhdGUiKSxpZSgpLHJ0KCJuZ1N3aXRjaENhc2UiLCJhdXRvY29tcGxldGUiKX19ZnVuY3Rpb24gZG9uKG4sZSl7aWYoMSZuJiYobWwoMCksWW4oMSx1b24sMTksMTMsIm5nLWNvbnRhaW5lciIsNSkscmwoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKCks'@; put 'cnQoIm5nSWYiLCJBY3Rpb24iIT09dC5rZXkmJiJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09dC5rZXkmJiJub0xpbmtPcHRpb24iIT09dC5rZXkpfX1mdW5jdGlvbiBob24obixlKXtpZigxJm4mJihtbCgwKSxZbigxLGRvbiwyLDEsIm5nLWNvbnRhaW5lciIsMTkpLEFjKDIs'@; put 'ImtleXZhbHVlIikscmwoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxydCgibmdGb3JPZiIsc2IoMiwyLHQuY3VycmVudFJlY29yZCx0Lm9yaWdpbmFsT3JkZXIpKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlGbil9fWZ1bmN0aW9uIGZvbihuLGUpezEmbiYmKEooMCwiY2xyLWFsZXJ0Iiw0'@; put 'NSkoMSwiY2xyLWFsZXJ0LWl0ZW0iKSgyLCJzcGFuIiw0NiksU2UoMywiIERhdGEgVmFsaWRhdGlvbiBFcnJvcnMgLSBQbGVhc2UgUmV2aWV3ICIpLHRlKCkoKSgpKSwyJm4mJihPMigidmlzaWJpbGl0eSIsVGUoKS5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjA/InZpc2libGUi'@; put 'OiJoaWRkZW4iKSxydCgiY2xyQWxlcnRDbG9zYWJsZSIsITEpKCJjbHJBbGVydFR5cGUiLCJkYW5nZXIiKSl9ZnVuY3Rpb24gcG9uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDQ3KSgxLCJidXR0b24iLDQ4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQp'@; put 'LFhlKFRlKCkub25QcmV2aW91c1JlY29yZENsaWNrKCkpfSksSXQoMiwiY2xyLWljb24iLDQ5KSx0ZSgpLEooMywicCIpLFNlKDQsIiBDdXJyZW50IHJvdzogIiksSig1LCJzdHJvbmciKSxTZSg2KSx0ZSgpKCksSig3LCJidXR0b24iLDUwKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IFllKHQpLFhlKFRlKCkub25OZXh0UmVjb3JkQ2xpY2soKSl9KSxJdCg4LCJjbHItaWNvbiIsNTEpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHJ0KCJkaXNhYmxlZCIsdC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjApLGllKDUpLFNyKCIgIix0LmN1cnJlbnRS'@; put 'ZWNvcmRJbmRleCsxLCIgIiksaWUoKSxydCgiZGlzYWJsZWQiLHQuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wKX19ZnVuY3Rpb24gZ29uKG4sZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iLDU1KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoIm5nVmFs'@; put 'dWUiLHQpLGllKCksU3IoIiAiLHQsIiAiKX19ZnVuY3Rpb24gbW9uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiKSgxLCJhcHAtc29mdC1zZWxlY3QiLDUzKSx3dCgiZm9jdXNpbiIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLmNvbEluZGV4O3JldHVybiBYZShU'@; put 'ZSgpLm9uUmVjb3JkSW5wdXRGb2N1cyhpLG8pKX0pLGhpKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLmNvbCxhPVRlKCk7cmV0dXJuIGZpKGEuY3VycmVudFJlY29yZFtvLmtleV0saSl8fChhLmN1cnJlbnRSZWNvcmRbby5rZXldPWkpLFhlKGkpfSksd3Qo'@; put 'Im9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKCksbz1pLmNvbCxhPWkuY29sSW5kZXg7cmV0dXJuIFhlKFRlKCkub25SZWNvcmREcm9wZG93bkNoYW5nZShvLmtleSxhKSl9KSxZbigyLGdvbiwyLDIsIm9wdGlvbiIsNTQpLHRlKCkoKX1pZigyJm4pe2xldCB0O2Nv'@; put 'bnN0IHI9VGUoKS5jb2wsaT1UZSgpO2llKCksZGkoInZhbHVlIixpLmN1cnJlbnRSZWNvcmRbci5rZXldKSxydCgiaW5wdXRJZCIsci5rZXkpLGllKCkscnQoIm5nRm9yT2YiLG51bGw9PWkuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHQ9aS5jdXJyZW50UmVjb3JkVmFsaWRhdG9y'@; put 'LmdldFJ1bGUoci5rZXkpKT9udWxsOnQuc291cmNlKX19ZnVuY3Rpb24gdm9uKG4sZSl7aWYoMSZuJiYoSigwLCJvcHRpb24iLDU4KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cnQoInZhbHVlIix0KSxpZSgpLFNyKCIgIix0LCIgIil9fWZ1bmN0aW9uIF9vbihuLGUp'@; put 'e2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwic2VsZWN0Iiw1Niksd3QoImZvY3VzaW4iLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS5jb2xJbmRleDtyZXR1cm4gWGUoVGUoKS5vblJlY29yZElucHV0Rm9jdXMoaSxvKSl9KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7'@; put 'WWUodCk7Y29uc3Qgbz1UZSgpLmNvbCxhPVRlKCk7cmV0dXJuIGZpKGEuY3VycmVudFJlY29yZFtvLmtleV0saSl8fChhLmN1cnJlbnRSZWNvcmRbby5rZXldPWkpLFhlKGkpfSksWW4oMSx2b24sMiwyLCJvcHRpb24iLDU3KSx0ZSgpfWlmKDImbil7bGV0IHQ7Y29uc3Qgcj1UZSgpLmNvbCxp'@; put 'PVRlKCk7ZGkoIm5nTW9kZWwiLGkuY3VycmVudFJlY29yZFtyLmtleV0pLGllKCkscnQoIm5nRm9yT2YiLG51bGw9PWkuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHQ9aS5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoci5rZXkpKT9udWxsOnQuc291cmNlKX19ZnVuY3Rp'@; put 'b24geW9uKG4sZSl7aWYoMSZuJiZZbigwLG1vbiwzLDMsImRpdiIsNTIpKDEsX29uLDIsMiwibmctdGVtcGxhdGUiLG51bGwsMixjZCksMiZuKXtjb25zdCB0PWUuY29sLHI9b28oMiksaT1UZSgpO3J0KCJuZ0lmIixudWxsPT1pLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3I/bnVsbDppLmN1cnJl'@; put 'bnRSZWNvcmRWYWxpZGF0b3IuaGFzRHFSdWxlcyh0LmtleSxtYygyLFVpbikpKSgibmdJZkVsc2UiLHIpfX1sZXQgYm9uPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpKXt0aGlzLnNhc1N0b3JlU2VydmljZT1yLHRoaXMuaGVscGVyU2VydmljZT1pLHRoaXMucmVjb3JkQWN0'@; put 'aW9uPW51bGwsdGhpcy5maWx0ZXI9ITEsdGhpcy5zdWJtaXRMb2FkaW5nPSExLHRoaXMuaGVhZGVyUGtzPVtdLHRoaXMuY2VsbFZhbGlkYXRpb249W10sdGhpcy5jdXJyZW50UmVjb3JkSW5kZXg9LTEsdGhpcy5jdXJyZW50UmVjb3JkTG9hZGluZ3M9W10sdGhpcy5jdXJyZW50UmVjb3JkRXJy'@; put 'b3JzPVtdLHRoaXMub25SZWNvcmRDaGFuZ2U9bmV3IEtyLHRoaXMub25SZWNvcmRJbnB1dEZvY3VzZWQ9bmV3IEtyLHRoaXMub25SZWNvcmREcm9wZG93bkNoYW5nZWQ9bmV3IEtyLHRoaXMub25SZWNvcmRFZGl0Q2xvc2U9bmV3IEtyLHRoaXMub25SZWNvcmRFZGl0Q29uZmlybT1uZXcgS3Is'@; put 'dGhpcy5vbk5leHRSZWNvcmQ9bmV3IEtyLHRoaXMub25QcmV2aW91c1JlY29yZD1uZXcgS3IsdGhpcy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHM9W10sdGhpcy5jdXJyZW50UmVjb3JkV2FybmluZ0NvbHM9W10sdGhpcy5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPSExLHRoaXMuZ2Vu'@; put 'ZXJhdGVkUmVjb3JkVXJsPW51bGwsdGhpcy5hZGRSZWNvcmRVcmw9bnVsbCx0aGlzLnJlY29yZE5ld09yUGtNb2RpZmllZD0hMSx0aGlzLmFkZFJlY29yZExvYWRpbmc9ITEsdGhpcy5vcmlnaW5hbE9yZGVyPShvLGEpPT4wfW5nT25Jbml0KCl7fXZhbGlkYXRlUmVjb3JkQ29sKHIsaSl7dmFy'@; put 'IG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChhLGwpPT57by5jdXJyZW50UmVjb3JkVmFsaWRhdG9yPy5leGVjdXRlSG90VmFsaWRhdG9yKHIsaSx1PT57YSh1KX0pfSl9KSgpfXJlY29yZERhdGVDaGFuZ2UocixpKXtjb25zdCBvPXIudGFyZ2V0LnZh'@; put 'bHVlOyFvfHwhdGhpcy5jdXJyZW50UmVjb3JkfHwodGhpcy5jdXJyZW50UmVjb3JkW2ldPW8sdGhpcy5yZXZhbGlkYXRlUmVjb3JkQ29sKGksbykpfXRvTmF0aXZlRGF0ZXRpbWUocil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiByPyIiOnIuaW5jbHVkZXMoIiAiKT9yLnJlcGxhY2UoIiAiLCJU'@; put 'Iik6cn1yZXZhbGlkYXRlUmVjb3JkQ29sKHIsaSl7Y29uc3Qgbz10aGlzLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3I/LmdldFJ1bGUocik7dGhpcy52YWxpZGF0ZVJlY29yZENvbChvLGkpLnRoZW4oYT0+dGhpcy51cGRhdGVWYWxpZGF0aW9uU3RhdGUocixhKSksdGhpcy51cGRhdGVXYXJuaW5n'@; put 'U3RhdGUocixpKX1yZWNvcmRUaW1lQ2hhbmdlKHIsaSl7Y29uc3Qgbz1yLnRhcmdldC52YWx1ZTtpZighb3x8IXRoaXMuY3VycmVudFJlY29yZClyZXR1cm47Y29uc3QgYT01PT09by5sZW5ndGg/YCR7b306MDBgOm87dGhpcy5jdXJyZW50UmVjb3JkW2ldPWEsdGhpcy5yZXZhbGlkYXRlUmVj'@; put 'b3JkQ29sKGksYSl9cmVjb3JkRGF0ZXRpbWVDaGFuZ2UocixpKXtjb25zdCBvPXIudGFyZ2V0LnZhbHVlO2lmKCFvfHwhdGhpcy5jdXJyZW50UmVjb3JkKXJldHVybjtjb25zdFthLGxdPW8uc3BsaXQoIlQiKSx1PWAke2F9ICR7NT09PWwubGVuZ3RoP2Ake2x9OjAwYDpsfWA7dGhpcy5jdXJy'@; put 'ZW50UmVjb3JkW2ldPXUsdGhpcy5yZXZhbGlkYXRlUmVjb3JkQ29sKGksdSl9Y29uZmlybVJlY29yZEVkaXQoKXt0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg8MSYmdGhpcy5vblJlY29yZENoYW5nZS5lbWl0KHRoaXMuY3VycmVudFJlY29yZCl9Y2xvc2VSZWNvcmRFZGl0'@; put 'KCl7dGhpcy5vblJlY29yZEVkaXRDbG9zZS5lbWl0KCl9b25Fc2NhcGVLZXkoKXt0aGlzLmNsb3NlUmVjb3JkRWRpdCgpfW9uUmVjb3JkRHJvcGRvd25DaGFuZ2UocixpKXt0aGlzLm9uUmVjb3JkRHJvcGRvd25DaGFuZ2VkLmVtaXQoe2NvbE5hbWU6cixjb2w6aX0pfW9uUmVjb3JkSW5wdXRG'@; put 'b2N1cyhyLGkpe3RoaXMub25SZWNvcmRJbnB1dEZvY3VzZWQuZW1pdCh7ZXZlbnQ6cixjb2xOYW1lOml9KX1yZWNvcmRJbnB1dFBhc3RlKHIpe3NldFRpbWVvdXQoKCk9PntyLnRhcmdldC52YWx1ZT1yLnRhcmdldC52YWx1ZS5yZXBsYWNlKC9ccyskLywiIil9LDApfXJlY29yZElucHV0Q2hh'@; put 'bmdlKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc3QgYT1vLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3I/LmdldFJ1bGUoaSksbD1yLnRhcmdldC52YWx1ZTtvLmhlbHBlclNlcnZpY2UuZGVib3VuY2VDYWxsKDMwMCwoKT0+e28udmFsaWRhdGVSZWNvcmRDb2woYSxs'@; put 'KS50aGVuKHU9PntvLnVwZGF0ZVZhbGlkYXRpb25TdGF0ZShpLHUpLHV8fG8udHJ5QXV0b1BvcHVsYXRlTm90TnVsbChyLGksYSxsKX0pLG8udXBkYXRlV2FybmluZ1N0YXRlKGksbCl9KX0pKCl9dXBkYXRlVmFsaWRhdGlvblN0YXRlKHIsaSl7Y29uc3Qgbz10aGlzLmN1cnJlbnRSZWNvcmRJ'@; put 'bnZhbGlkQ29scy5pbmRleE9mKHIpO2kmJm8+LTE/dGhpcy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuc3BsaWNlKG8sMSk6IWkmJm88MCYmdGhpcy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMucHVzaChyKX11cGRhdGVXYXJuaW5nU3RhdGUocixpKXtjb25zdCBvPXRoaXMuY3VycmVudFJl'@; put 'Y29yZFZhbGlkYXRvcj8uZmFpbHNTb2Z0UmVnZXgocixpKT8/ITEsYT10aGlzLmN1cnJlbnRSZWNvcmRXYXJuaW5nQ29scy5pbmRleE9mKHIpOyFvJiZhPi0xP3RoaXMuY3VycmVudFJlY29yZFdhcm5pbmdDb2xzLnNwbGljZShhLDEpOm8mJmE8MCYmdGhpcy5jdXJyZW50UmVjb3JkV2Fybmlu'@; put 'Z0NvbHMucHVzaChyKX10cnlBdXRvUG9wdWxhdGVOb3ROdWxsKHIsaSxvLGEpe2lmKCFNZ2UoYSl8fCF0aGlzLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fCF0aGlzLmN1cnJlbnRSZWNvcmQpcmV0dXJuO2NvbnN0IGw9dGhpcy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldE5vdE51bGxEZWZh'@; put 'dWx0VmFsdWUoaSk7dm9pZCAwIT09bCYmKHRoaXMuY3VycmVudFJlY29yZFtpXT1sLHIudGFyZ2V0LnZhbHVlPWwsdGhpcy52YWxpZGF0ZVJlY29yZENvbChvLGwpLnRoZW4odT0+e3RoaXMudXBkYXRlVmFsaWRhdGlvblN0YXRlKGksdSl9KSx0aGlzLnVwZGF0ZVdhcm5pbmdTdGF0ZShpLGwp'@; put 'KX1vbk5leHRSZWNvcmRDbGljaygpe3RoaXMub25OZXh0UmVjb3JkLmVtaXQoKX1vblByZXZpb3VzUmVjb3JkQ2xpY2soKXt0aGlzLm9uUHJldmlvdXNSZWNvcmQuZW1pdCgpfWNvcHlUb0NsaXAocil7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQociksdGhpcy5nZW5lcmF0ZWRSZWNv'@; put 'cmRVcmw9cn1nZW5lcmF0ZUVkaXRSZWNvcmRVcmwoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpZihyLmdlbmVyYXRlZFJlY29yZFVybClyLmNvcHlUb0NsaXAoci5nZW5lcmF0ZWRSZWNvcmRVcmwpO2Vsc2V7ci5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPSEwO2Nv'@; put 'bnN0IGk9W107ci5oZWFkZXJQa3MuZm9yRWFjaChvPT57bGV0IGE9IkMiLGw9IiI7Zm9yKGxldCB1PTA7dTxyLmNlbGxWYWxpZGF0aW9uLmxlbmd0aDt1Kyspe2NvbnN0IGc9ci5jZWxsVmFsaWRhdGlvblt1XTtpZihnLmRhdGE9PT1vKXsoIm51bWVyaWMiPT09Zy50eXBlfHwiaW50bC1kYXRl'@; put 'Ij09PWcudHlwZXx8ImludGwtdGltZSI9PT1nLnR5cGV8fCJpbnRsLWRhdGV0aW1lIj09PWcudHlwZSkmJihhPSJOIik7YnJlYWt9fWw9IkMiPT09YT9gJyR7ci5jdXJyZW50UmVjb3JkW29dfSdgOnIuY3VycmVudFJlY29yZFtvXS50b1N0cmluZygpLGkucHVzaCh7R1JPVVBfTE9HSUM6IkFO'@; put 'RCIsU1VCR1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfSUQ6MCxWQVJJQUJMRV9OTTpvLE9QRVJBVE9SX05NOiI9IixSQVdfVkFMVUU6bH0pfSksaS5sZW5ndGg+MCYmci5saWJkcyYmKHlpZWxkIHIuc2FzU3RvcmVTZXJ2aWNlLnNhdmVRdWVyeShyLmxpYmRzLGkpLnRoZW4obz0+e3IucXVl'@; put 'cnlGaWx0ZXI9e2lkOm8ucmVzdWx0WzBdLkZJTFRFUl9SSyx0YWJsZTpvLnJlc3VsdFswXS5GSUxURVJfVEFCTEV9O2NvbnN0IHU9bG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKyIjL2VkaXRvci9lZGl0LXJlY29yZC8iK3IucXVlcnlGaWx0ZXIudGFibGUrIi8iK3IucXVlcnlGaWx0ZXIu'@; put 'aWQ7ci5jb3B5VG9DbGlwKHUpLHIuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSxyLmZpbHRlcj0hMX0pLmNhdGNoKG89PntyLnN1Ym1pdExvYWRpbmc9ITF9KSl9fSkoKX1pc0NvbFBrKHIpe3JldHVybiB0aGlzLmhlYWRlclBrcy5pbmRleE9mKHIpPi0xfXRyYWNrQnlGbihyLGkp'@; put 'e3JldHVybiByfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKEJwKSx6ZShmaCkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtZWRpdC1yZWNvcmQiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9u'@; put 'KGksbyl7MSZpJiZ3dCgia2V5ZG93bi5lc2NhcGUiLGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25Fc2NhcGVLZXkoKX0sUDgpfSxpbnB1dHM6e2N1cnJlbnRSZWNvcmQ6ImN1cnJlbnRSZWNvcmQiLHJlY29yZEFjdGlvbjoicmVjb3JkQWN0aW9uIixsaWJkczoibGliZHMiLHF1ZXJ5RmlsdGVyOiJx'@; put 'dWVyeUZpbHRlciIsZmlsdGVyOiJmaWx0ZXIiLHN1Ym1pdExvYWRpbmc6InN1Ym1pdExvYWRpbmciLGhlYWRlclBrczoiaGVhZGVyUGtzIixjZWxsVmFsaWRhdGlvbjoiY2VsbFZhbGlkYXRpb24iLGN1cnJlbnRSZWNvcmRJbmRleDoiY3VycmVudFJlY29yZEluZGV4IixjdXJyZW50UmVjb3Jk'@; put 'TG9hZGluZ3M6ImN1cnJlbnRSZWNvcmRMb2FkaW5ncyIsY3VycmVudFJlY29yZEVycm9yczoiY3VycmVudFJlY29yZEVycm9ycyIsY3VycmVudFJlY29yZFZhbGlkYXRvcjoiY3VycmVudFJlY29yZFZhbGlkYXRvciJ9LG91dHB1dHM6e29uUmVjb3JkQ2hhbmdlOiJvblJlY29yZENoYW5nZSIs'@; put 'b25SZWNvcmRJbnB1dEZvY3VzZWQ6Im9uUmVjb3JkSW5wdXRGb2N1c2VkIixvblJlY29yZERyb3Bkb3duQ2hhbmdlZDoib25SZWNvcmREcm9wZG93bkNoYW5nZWQiLG9uUmVjb3JkRWRpdENsb3NlOiJvblJlY29yZEVkaXRDbG9zZSIsb25SZWNvcmRFZGl0Q29uZmlybToib25SZWNvcmRFZGl0'@; put 'Q29uZmlybSIsb25OZXh0UmVjb3JkOiJvbk5leHRSZWNvcmQiLG9uUHJldmlvdXNSZWNvcmQ6Im9uUHJldmlvdXNSZWNvcmQifSxzdGFuZGFsb25lOiExLGRlY2xzOjE3LHZhcnM6MTEsY29uc3RzOltbImF1dG9jb21wbGV0ZSIsIiJdLFsiY2hhclRleHRhcmVhIiwiIl0sWyJvdGhlcl90aGFu'@; put 'X3NvZnRfc2VsZWN0IiwiIl0sWyJpZCIsInJlY29yZE1vZGFsUmVmIiwxLCJyZWNvcmQtZWRpdC1tb2RhbCIsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzQsIm5nSWYiXSxbMSwibW9kYWwtYm9keSJd'@; put 'LFsiY2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgcHktMTAiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIiwicC0wIiwiY2xyLWdhcC01IiwiY2xyLWdhcC1tZC0wIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtbWQt'@; put 'cm93Il0sWyJjbGFzcyIsInZhbGlkYXRpb24taW5mby1hbGVydCIsMywidmlzaWJpbGl0eSIsImNsckFsZXJ0Q2xvc2FibGUiLCJjbHJBbGVydFR5cGUiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJldi1uZXh0Iiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGlu'@; put 'ZSIsImZvY3VzYWJsZSIsIm1yLTVpIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJmb2N1c2FibGUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbImNsYXNzIiwicG9zaXRpb24tYWJzb2x1dGUgZ2VuZXJhdGUtcmVjb3JkLXVybCIsNCwibmdJZiJd'@; put 'LFsiY2xhc3MiLCJidG4gYnRuLWxpbmsgZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b24gcG9zaXRpb24tYWJzb2x1dGUiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwicG9zaXRpb24tYWJzb2x1dGUiLCJnZW5lcmF0ZS1yZWNvcmQtdXJsIl0sWzEsImJ0biIsImJ0bi1saW5r'@; put 'IiwiZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b24iLCJwb3NpdGlvbi1hYnNvbHV0ZSIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIiwidy0xMDAiLCJweS0xMCJdLFsxLCJzcGlubmVyIl0sWzQs'@; put 'Im5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJjb2x1bW4tZW50cnkiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZmxleC1tZC1yb3ciXSxbMSwibmFtZS1pbnB1dC1yb3ciXSxbMSwiZm9udC13ZWlnaHQtYm9sZCJdLFsic2hhcGUiLCJrZXkiLDQsIm5nSWYiXSxbMSwiY2Vs'@; put 'bC1kZXNjIl0sWzEsImlucHV0cy13cmFwcGVyIiwicG9zaXRpb24tcmVsYXRpdmUiLDMsIm5nU3dpdGNoIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5lci1pbmxpbmUgZmxleC11bnNldCBwb3NpdGlvbi1hYnNvbHV0ZSBlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCIsNCwibmdJZiJdLFsiY2xh'@; put 'c3MiLCJmbGV4LXVuc2V0IHBvc2l0aW9uLWFic29sdXRlIGVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Iiwic2hhcGUiLCJlcnJvci1zdGFuZGFyZCIsInN0YXR1cyIsIndhcm5pbmciLDQsIm5nSWYiXSxbImNsYXNzIiwiZmxleC11bnNldCBwb3NpdGlvbi1hYnNvbHV0ZSBlbnRyeS1pbnB1dC1s'@; put 'ZWZ0LW9mZnNldCIsInNoYXBlIiwiZXJyb3Itc3RhbmRhcmQiLCJzdGF0dXMiLCJ3YXJuaW5nIiwidGl0bGUiLCJWYWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgcGF0dGVybiIsNCwibmdJZiJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwiZGF0ZS1maWVsZCIsNCwibmdT'@; put 'd2l0Y2hDYXNlIl0sWzEsIm10LTEwIl0sWyJzaGFwZSIsImtleSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiLCJmbGV4LXVuc2V0IiwicG9zaXRpb24tYWJzb2x1dGUiLCJlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCJdLFsic2hhcGUiLCJlcnJvci1zdGFuZGFyZCIsInN0YXR1cyIs'@; put 'Indhcm5pbmciLDEsImZsZXgtdW5zZXQiLCJwb3NpdGlvbi1hYnNvbHV0ZSIsImVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Il0sWyJzaGFwZSIsImVycm9yLXN0YW5kYXJkIiwic3RhdHVzIiwid2FybmluZyIsInRpdGxlIiwiVmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHBhdHRl'@; put 'cm4iLDEsImZsZXgtdW5zZXQiLCJwb3NpdGlvbi1hYnNvbHV0ZSIsImVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Il0sWyJjbGFzcyIsIm51bWVyaWMtaW5wdXQiLDMsImludmFsaWQtZGF0YSIsNCwibmdJZiJdLFsxLCJudW1lcmljLWlucHV0Il0sWyJjbHJJbnB1dCIsIiIsInR5cGUiLCJ0ZXh0'@; put 'IiwxLCJub3QtY2hhciIsMywiZm9jdXNpbiIsInBhc3RlIiwiaW5wdXQiLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbImNsclRleHRhcmVhIiwiIiwzLCJmb2N1c2luIiwicGFzdGUiLCJpbnB1dCIs'@; put 'Im5nTW9kZWxDaGFuZ2UiLCJyb3dzIiwibmdNb2RlbCIsIm1heExlbmd0aCJdLFsxLCJkYXRlLWZpZWxkIl0sWyJ0eXBlIiwidGltZSIsInN0ZXAiLCIxIiwxLCJkYXRlLWlucHV0IiwzLCJjaGFuZ2UiLCJ2YWx1ZSJdLFsidHlwZSIsImRhdGV0aW1lLWxvY2FsIiwic3RlcCIsIjEiLDEsImRh'@; put 'dGUtaW5wdXQiLDMsImNoYW5nZSIsInZhbHVlIl0sWyJ0eXBlIiwiZGF0ZSIsMSwiZGF0ZS1pbnB1dCIsMywiY2hhbmdlIiwidmFsdWUiXSxbMSwidmFsaWRhdGlvbi1pbmZvLWFsZXJ0IiwzLCJjbHJBbGVydENsb3NhYmxlIiwiY2xyQWxlcnRUeXBlIl0sWzEsImFsZXJ0LXRleHQiXSxbMSwi'@; put 'cHJldi1uZXh0Il0sWyJ0eXBlIiwiYnV0dG9uIiwidGFiaW5kZXgiLCIwIiwiYXJpYS1sYWJlbCIsIlByZXZpb3VzIHJlY29yZCIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJmb2N1c2FibGUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwiYW5nbGUgbGVmdCIsInNpemUiLCIyMyJd'@; put 'LFsidHlwZSIsImJ1dHRvbiIsInRhYmluZGV4IiwiMCIsImFyaWEtbGFiZWwiLCJOZXh0IHJlY29yZCIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJmb2N1c2FibGUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwiYW5nbGUgcmlnaHQiLCJzaXplIiwiMjMiXSxbNCwibmdJZiIsIm5n'@; put 'SWZFbHNlIl0sWzMsImZvY3VzaW4iLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCIsInZhbHVlIiwiaW5wdXRJZCJdLFszLCJuZ1ZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibmdWYWx1ZSJdLFsiY2xyU2VsZWN0IiwiIiwzLCJmb2N1c2luIiwibmdNb2RlbENoYW5nZSIsIm5n'@; put 'TW9kZWwiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pe2lmKDEmaSl7Y29uc3QgYT13bigpO0ooMCwiY2xyLW1vZGFsIiwzKSgxLCJoMyIsNCksU2UoMiksWW4oMyxZaW4sMywyLCJuZy1jb250YWluZXIiLDUpLHRl'@; put 'KCksSig0LCJkaXYiLDYpLFluKDUsWmluLDMsMCwiZGl2Iiw3KSg2LGhvbiwzLDUsIm5nLWNvbnRhaW5lciIsNSksdGUoKSxKKDcsImRpdiIsOCksWW4oOCxmb24sNCw0LCJjbHItYWxlcnQiLDkpKDkscG9uLDksMywiZGl2IiwxMCksSigxMCwiZGl2IikoMTEsImJ1dHRvbiIsMTEpLHd0KCJj'@; put 'bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby5jdXJyZW50UmVjb3JkLm5vTGlua09wdGlvbj0hMSxYZShvLmNsb3NlUmVjb3JkRWRpdCgpKX0pLFNlKDEyLCIgQ2FuY2VsICIpLHRlKCksSigxMywiYnV0dG9uIiwxMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxY'@; put 'ZShvLmNvbmZpcm1SZWNvcmRFZGl0KCkpfSksU2UoMTQsIiBDb25maXJtICIpLHRlKCkoKSgpLFluKDE1LHlvbiwzLDMsIm5nLXRlbXBsYXRlIixudWxsLDAsY2QpLHRlKCl9MiZpJiYocnQoImNsck1vZGFsT3BlbiIsITApKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksaWUoMiksZTQoIiAiLCJB'@; put 'REQiPT09by5yZWNvcmRBY3Rpb24/IkFkZCI6IkVkaXQiLCIgcmVjb3JkIGluICIsKG51bGw9PW8ubGliZHM/bnVsbDpvLmxpYmRzLnNwbGl0KCIuIikpWzBdLCIuIiwobnVsbD09by5saWJkcz9udWxsOm8ubGliZHMuc3BsaXQoIi4iKSlbMV0sIiAiKSxpZSgpLHJ0KCJuZ0lmIiwiRURJVCI9'@; put 'PT1vLnJlY29yZEFjdGlvbiksaWUoMikscnQoIm5nSWYiLG8uYWRkUmVjb3JkTG9hZGluZyksaWUoKSxydCgibmdJZiIsIW8uYWRkUmVjb3JkTG9hZGluZyksaWUoMikscnQoIm5nSWYiLG8uY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wKSxpZSgpLHJ0KCJuZ0lmIixvLmN1cnJl'@; put 'bnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg8MSksaWUoNCkscnQoImRpc2FibGVkIixvLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCkpfSxkZXBlbmRlbmNpZXM6W1JmLFlzLElmLEFFLFNVLFhnLFFnLGx1LEtnLG9jLFhsLFpELEtNZSxHRCxjdSx4ZCxtaCxZeixQZixYeixx'@; put 'YixyVyxNTWUsUlplLEVVXSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtmdW5jdGlvbiB3b24obixlKXtpZigxJm4mJihKKDAsInAiLDApLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLFNyKCIgIix0LCIgIil9fWxldCBDb249KCgpPT57dmFy'@; put 'IG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RhdGVzTGlzdD1bXSx0aGlzLnByb2Nlc3NlZFN0YXRlcz1bXSx0aGlzLnN0YXRlckluUHJvZ3Jlc3M9ITEsdGhpcy5taW5EZWxheT0xZTN9bmdPbkluaXQoKXt9YXBwZW5kU3RhdGUocil7aWYoIntmaW5pc2h9Ij09PXIpcmV0dXJuIHRo'@; put 'aXMuc3RhdGVySW5Qcm9ncmVzcz0hMSx2b2lkIGNsZWFySW50ZXJ2YWwodGhpcy5zdGF0ZUludGVydmFsKTt0aGlzLnN0YXRlc0xpc3QucHVzaChyKSx0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKHIpfXJlcGxhY2VMYXN0U3RhdGUocil7dGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4wPyh0aGlz'@; put 'LnN0YXRlc0xpc3QucG9wKCksdGhpcy5zdGF0ZXNMaXN0LnB1c2gocikpOnRoaXMucHJvY2Vzc2VkU3RhdGVzW3RoaXMucHJvY2Vzc2VkU3RhdGVzLmxlbmd0aC0xXT1yfWNsZWFyU3RhdGVzKCl7dGhpcy5wcm9jZXNzZWRTdGF0ZXM9W119c3RhcnRTdGF0ZXIoKXt0aGlzLnN0YXRlckluUHJv'@; put 'Z3Jlc3M9ITAsdGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4wJiZ0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKHRoaXMuc3RhdGVzTGlzdC5zaGlmdCgpfHwiIiksdGhpcy5zdGF0ZUludGVydmFsPXNldEludGVydmFsKCgpPT57dGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4wJiZ0aGlzLnByb2Nlc3Nl'@; put 'ZFN0YXRlcy5wdXNoKHRoaXMuc3RhdGVzTGlzdC5zaGlmdCgpfHwiIil9LHRoaXMubWluRGVsYXkpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtdXBs'@; put 'b2FkLXN0YXRlciJdXSxzdGFuZGFsb25lOiExLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWzEsIm0tMCJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSIsInZlcnRpY2FsLWFsaWduLW1pZGRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmKEooMCwi'@; put 'ZGl2IiksX28oMSx3b24sMiwxLCJwIiwwLENvKSx0ZSgpLEooMywiZGl2IiwxKSg0LCJzcGFuIiwyKSxTZSg1LCJMb2FkaW5nLi4uIiksdGUoKSgpKSwyJmkmJihpZSgpLHlvKG8ucHJvY2Vzc2VkU3RhdGVzKSl9LGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpLFNvbj0oKCk9'@; put 'Pnt2YXIgbjtjbGFzcyBle3RyYW5zZm9ybShyKXtyZXR1cm4gci5yZXBsYWNlKC9cfC9nLCIgfCAiKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVwaXBlPXVoKHtuYW1lOiJwa1NwYWNlU2VwYXJhdGUiLHR5'@; put 'cGU6ZSxwdXJlOiEwLHN0YW5kYWxvbmU6ITF9KSl9cmV0dXJuIG4oKSxlfSkoKSxGWmU9KCgpPT57dmFyIG47Y2xhc3MgZXt0cmFuc2Zvcm0ocixpKXtyZXR1cm4gdGhpcy5hZGRTZXBhcmF0b3JzKHIudG9TdHJpbmcoKSxpKX1hZGRTZXBhcmF0b3JzKHIsaT0iICIpe2NvbnN0IG89KHIrPSIi'@; put 'KS5zcGxpdCgiLiIpO2xldCBhPW9bMF07Y29uc3QgbD1vLmxlbmd0aD4xPyIuIitvWzFdOiIiLHU9LyhcZCspKFxkezN9KS87Zm9yKDt1LnRlc3QoYSk7KWE9YS5yZXBsYWNlKHUsIiQxIitpKyIkMiIpO3JldHVybiBhK2x9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9u'@; put 'KGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1cGlwZT11aCh7bmFtZToidGhvdXNhbmRTZXBhcmF0b3IiLHR5cGU6ZSxwdXJlOiEwLHN0YW5kYWxvbmU6ITF9KSl9cmV0dXJuIG4oKSxlfSkoKTtjb25zdCBFb249WyJodCJdLE1vbj1bImluZm9CYXIiXSxUb249WyJ1cGxvYWRTdGF0'@; put 'ZXIiXSx4b249WyJxdWVyeUZpbHRlciJdLEFvbj1bImZpbGVVcGxvYWRJbnB1dCJdLGtvbj0obixlKT0+KHtsaWJOYW1lOm4sdGFibGVOYW1lOmV9KSxQWmU9KCk9PlsiIiwiICJdLFJvbj1uPT4oe2hlYWRlckJhckZpbHRlcjpufSksSW9uPSgpPT5bIi9ob21lIl07ZnVuY3Rpb24gRG9uKG4s'@; put 'ZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDE5KSgxLCJzcGFuIiw2NikoMiwibGFiZWwiLDY3KSxTZSgzLCIgQnJvd3NlICIpLHRlKCkoKSxKKDQsImlucHV0Iiw2OCwzKSx3dCgiY2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS5hdHRhY2hGaWxlKGkp'@; put 'KX0pLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSg0KSxydCgidXBsb2FkZXIiLHQudXBsb2FkZXIpfX1mdW5jdGlvbiBMb24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsMjApKDEsImJ1dHRvbiIsNjkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUo'@; put 'dCksWGUoVGUoKS51cGxvYWRQYXJzZWRGaWxlcygpKX0pLFNlKDIsIiBVcGxvYWQgIiksdGUoKSgpfTImbiYmKGllKCkscnQoImRpc2FibGVkIiwhMCkpfWZ1bmN0aW9uIE9vbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiw3MCksd3QoImNsaWNrIixmdW5jdGlvbigp'@; put 'e3JldHVybiBZZSh0KSxYZShUZSgpLnNob3dVcGxvYWRNb2RhbD0hMSl9KSxTZSgxLCIgQ2xvc2UgIiksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtydCgiZGlzYWJsZWQiLHQuZXhjZWxGaWxlUGFyc2luZ3x8dC51cGxvYWRMb2FkaW5nKX19ZnVuY3Rpb24gTm9uKG4sZSl7aWYoMSZuKXtj'@; put 'b25zdCB0PXduKCk7SigwLCJidXR0b24iLDcxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuc2hvd1VwbG9hZE1vZGFsPSExKX0pLFNlKDEsIiBTa2lwICIpLHRlKCl9fWZ1bmN0aW9uIEZvbihuLGUpezEmbiYmKEooMCwiZGl2IiwyMyksSXQoMSwiYXBwLXVw'@; put 'bG9hZC1zdGF0ZXIiLG51bGwsNCksdGUoKSl9ZnVuY3Rpb24gUG9uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJhcHAtZWRpdC1yZWNvcmQiLDcyKSx3dCgib25SZWNvcmRDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuY29uZmlybVJlY29yZEVkaXQoKSl9'@; put 'KSgib25SZWNvcmRJbnB1dEZvY3VzZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgpLm9uUmVjb3JkSW5wdXRGb2N1cyhpKSl9KSgib25SZWNvcmRFZGl0Q2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuY2xvc2VSZWNvcmRFZGl0KCkpfSkoIm9uTmV4dFJl'@; put 'Y29yZCIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbk5leHRSZWNvcmQoKSl9KSgib25QcmV2aW91c1JlY29yZCIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vblByZXZpb3VzUmVjb3JkKCkpfSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtydCgiY3VycmVu'@; put 'dFJlY29yZCIsdC5jdXJyZW50RWRpdFJlY29yZCkoInJlY29yZEFjdGlvbiIsdC5yZWNvcmRBY3Rpb24pKCJsaWJkcyIsdC5saWJkcykoInF1ZXJ5RmlsdGVyIix0LnF1ZXJ5RmlsdGVyKSgiZmlsdGVyIix0LmZpbHRlcikoInN1Ym1pdExvYWRpbmciLHQuc3VibWl0TG9hZGluZykoImhlYWRl'@; put 'clBrcyIsdC5oZWFkZXJQa3MpKCJjZWxsVmFsaWRhdGlvbiIsdC5jZWxsVmFsaWRhdGlvbikoImN1cnJlbnRSZWNvcmRJbmRleCIsdC5jdXJyZW50RWRpdFJlY29yZEluZGV4KSgiY3VycmVudFJlY29yZExvYWRpbmdzIix0LmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MpKCJjdXJyZW50UmVj'@; put 'b3JkRXJyb3JzIix0LmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzKSgiY3VycmVudFJlY29yZFZhbGlkYXRvciIsdC5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcil9fWZ1bmN0aW9uIEhvbihuLGUpezEmbiYmKEooMCwiZGl2IiwyNyksSXQoMSwicHJvZ3Jlc3MiKSx0ZSgpKX1mdW5jdGlvbiBW'@; put 'b24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsMzApKDEsInNwYW4iLDczKSxJdCgyLCJjbHItaWNvbiIsNzQpLEooMywic3BhbiIsNzUpLFNlKDQsIkJhY2sgdG8gdGFibGUgc2VsZWN0aW9uIiksdGUoKSgpLEooNSwic3BhbiIsNzYpLHd0KCJjbGljayIsZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gWWUodCksWGUoVGUoKS52aWV3Ym94TWFuYWdlcigpKX0pLEl0KDYsImNsci1pY29uIiw3NyksSig3LCJzcGFuIiw3NSksU2UoOCwiVmlld2JveGVzIiksdGUoKSgpKCl9MiZuJiYoaWUoKSxydCgicm91dGVyTGluayIsbWMoMSxJb24pKSl9ZnVuY3Rpb24gQm9uKG4sZSl7MSZu'@; put 'JiZJdCgwLCJjbHItaWNvbiIsODApfWZ1bmN0aW9uIGpvbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRvb2x0aXAtY29udGVudCIsODMpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLFNyKCIgIix0LmRzTm90ZSwiICIpfX1mdW5jdGlvbiBVb24obixlKXsxJm4mJlluKDAs'@; put 'am9uLDIsMSwiY2xyLXRvb2x0aXAtY29udGVudCIsODQpfWZ1bmN0aW9uIHpvbihuLGUpe2lmKDEmbiYmKFNlKDApLEFjKDEsInRob3VzYW5kU2VwYXJhdG9yIikpLDImbil7Y29uc3QgdD1UZSgzKTtVaigiICgiLHNiKDEsNCx0LmRhdGFTb3VyY2UubGVuZ3RoLCIsIiksIiAiLDE9PT10LmRh'@; put 'dGFTb3VyY2UubGVuZ3RoPyJyb3ciOiJyb3dzIiwiLCAiLHQuY29scy5sZW5ndGgsIiIsMT09PXQuY29scy5sZW5ndGg/IiBjb2wiOiIgY29scyIsIikgIil9fWZ1bmN0aW9uIFdvbihuLGUpezEmbiYmU2UoMCwiICgwIHJvd3MpICIpfWZ1bmN0aW9uIFlvbihuLGUpe2lmKDEmbiYmKHZ0KDAs'@; put 'em9uLDIsNyksdnQoMSxXb24sMSwwKSksMiZuKXtjb25zdCB0PVRlKDIpO190KHQuemVyb0ZpbHRlclJvd3M/LTE6MCksaWUoKSxfdCh0Lnplcm9GaWx0ZXJSb3dzPzE6LTEpfX1mdW5jdGlvbiBab24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImg0Iiw3OCkoMSwiY2xyLXRvb2x0'@; put 'aXAiKSgyLCJjbHItaWNvbiIsNzkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5kYXRhc2V0SW5mbz0hMCl9KSx0ZSgpLHZ0KDMsQm9uLDEsMCwiY2xyLWljb24iLDgwKSxKKDQsInNwYW4iLDgxKSxTZSg1KSxKKDYsImEiLDgyKSxTZSg3KSx0ZSgpKCksdnQo'@; put 'OCxVb24sMSwwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw4MyksdGUoKSx2dCg5LFlvbiwyLDIpLHRlKCl9aWYoMiZuKXtjb25zdCB0PWUubmdWYXIscj1UZSgpO2llKDMpLF90KHQudGFibGVOYW1lLmluY2x1ZGVzKCItRkMiKT8zOi0xKSxpZSgyKSxTcigiICIsdC5saWJOYW1lLCIuIiksaWUo'@; put 'KSxydCgicm91dGVyTGluayIsIi92aWV3L2RhdGEvIityLmxpYmRzKSxpZSgpLHByKHQudGFibGVOYW1lLnJlcGxhY2UoIi1GQyIsIiIpKSxpZSgpLF90KHIuZHNOb3RlJiZyLmRzTm90ZS5sZW5ndGg+MD84Oi0xKSxpZSgpLF90KHIuZGF0YVNvdXJjZT85Oi0xKX19ZnVuY3Rpb24gR29uKG4s'@; put 'ZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDg5KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLm9wZW5RYigpKX0pLEl0KDEsImNsci1pY29uIiw5MCksSigyLCJzcGFuIiw3NSksU2UoMywiRmlsdGVyIiksdGUoKSgpfX1mdW5jdGlvbiAk'@; put 'b24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsOTEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMykub25TaG93VXBsb2FkTW9kYWwoKSl9KSxJdCgxLCJjbHItaWNvbiIsOTIpLEooMiwic3BhbiIsNzUpLFNlKDMsIlVwbG9hZCIpLHRl'@; put 'KCkoKX19ZnVuY3Rpb24gcW9uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7dnQoMCxHb24sNCwwLCJidXR0b24iLDg1KSxKKDEsImJ1dHRvbiIsODYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikuZWRpdFRhYmxlKCkpfSksSXQoMiwiY2xyLWljb24iLDg3'@; put 'KSxKKDMsInNwYW4iLDc1KSxTZSg0LCJFZGl0IiksdGUoKSgpLHZ0KDUsJG9uLDQsMCwiYnV0dG9uIiw4OCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO190KHQuaXNWYUVtYmVkPy0xOjApLGllKDUpLF90KHQuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc/LTE6NSl9fWZ1bmN0aW9uIEtvbihuLGUp'@; put 'e2lmKDEmbiYmKEooMCwic3BhbiIpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSg0KTtpZSgpLE5oKCJUbyB1bmxvY2sgbW9yZSB0aGFuICIsdC5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiICIsMT09PXQubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dz'@; put 'X2FsbG93ZWQ/InJvdyI6InJvd3MiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiBYb24obixlKXtpZigxJm4mJihKKDAsImNsci10b29sdGlwLWNvbnRlbnQiLDgzKSx2dCgxLEtvbiwyLDIsInNwYW4iKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7'@; put 'aWUoKSxfdCh0LnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdz8xOi0xKX19ZnVuY3Rpb24gUW9uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDkzKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLmNhbmNlbEVkaXQoKSl9KSxJdCgx'@; put 'LCJjbHItaWNvbiIsOTQpLEooMiwic3BhbiIpLFNlKDMsIkNhbmNlbCIpLHRlKCkoKSxKKDQsImNsci10b29sdGlwIikoNSwiYnV0dG9uIiw5NSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIFhlKGkucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93'@; put 'PyIiOmkuYWRkUm93KCkpfSksSXQoNiwiY2xyLWljb24iLDk2KSxTZSg3LCJBZGQgUm93ICIpLHRlKCksWW4oOCxYb24sMiwxLCJjbHItdG9vbHRpcC1jb250ZW50Iiw4NCksdGUoKSxKKDksImJ1dHRvbiIsNDUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMiku'@; put 'Y2hlY2tTYXZlKCkpfSksSXQoMTAsImNsci1pY29uIiw5NyksU2UoMTEsIlN1Ym1pdCAiKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgyKTtpZSg1KSx3cigiZGMtbG9ja2VkLWNvbnRyb2wiLHQucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93KSxydCgiY2xyTG9hZGluZyIsdC5hZGRpbmdO'@; put 'ZXdSb3cpfX1mdW5jdGlvbiBKb24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsMTAxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLm1hbnVhbEZpbGVFZGl0TW9kYWw9ITApfSksSXQoMSwiY2xyLWljb24iLDg3KSxKKDIsInNwYW4i'@; put 'KSxTZSgzLCJFZGl0IiksdGUoKSgpfX1mdW5jdGlvbiBlYW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsOTgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikuZGlzY2FyZFNvdXJjZUZpbGU9ITApfSksSXQoMSwiY2xyLWljb24iLDk0'@; put 'KSxKKDIsInNwYW4iKSxTZSgzLCJEaXNjYXJkIGZpbGUiKSx0ZSgpKCksdnQoNCxKb24sNCwwLCJidXR0b24iLDk5KSxKKDUsImJ1dHRvbiIsMTAwKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLnN1Ym1pdEV4Y2VsKCkpfSksSXQoNiwiY2xyLWljb24iLDk3'@; put 'KSxTZSg3LCIgU3VibWl0ICIpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKDQpLF90KHQuaG90VGFibGUucmVhZE9ubHk/NDotMSksaWUoKSxydCgiY2xyTG9hZGluZyIsdC51cGxvYWRMb2FkaW5nKX19ZnVuY3Rpb24gdGFuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDMzKSx2dCgx'@; put 'LHFvbiw2LDIpLHZ0KDIsUW9uLDEyLDMpLHZ0KDMsZWFuLDgsMiksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxfdCh0LmhvdFRhYmxlLnJlYWRPbmx5JiYhdC51cGxvYWRQcmV2aWV3PzE6LTEpLGllKCksX3QodC5ob3RUYWJsZS5yZWFkT25seXx8dC51cGxvYWRQcmV2aWV3Py0xOjIp'@; put 'LGllKCksX3QodC51cGxvYWRQcmV2aWV3PzM6LTEpfX1mdW5jdGlvbiBuYW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsMTA1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLnRvZ2dsZUZpbHRlclBhbmVsKCkpfSksSXQoMSwiY2xy'@; put 'LWljb24iLDEwNiksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7UnIoImFyaWEtZXhwYW5kZWQiLHQuZmlsdGVyRXhwYW5kZWQpKCJhcmlhLWxhYmVsIix0LmZpbHRlckV4cGFuZGVkPyJDb2xsYXBzZSB0aGUgZmlsdGVyIGNsYXVzZSI6IkV4cGFuZCB0aGUgZmlsdGVyIGNsYXVzZSIpfX1m'@; put 'dW5jdGlvbiByYW4obixlKXtpZigxJm4mJihKKDAsImRpdiIsMTAyLDUpKDIsInNwYW4iLDEwMyksU2UoMywiRklMVEVSIDogIiksSig0LCJiIiksU2UoNSksdGUoKSgpLHZ0KDYsbmFuLDIsMiwiYnV0dG9uIiwxMDQpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO3dyKCJleHBhbmRlZCIsdC5m'@; put 'aWx0ZXJFeHBhbmRlZCksaWUoNSkscHIodC5xdWVyeVRleHQpLGllKCksX3QodC5maWx0ZXJPdmVyZmxvd3M/NjotMSl9fWZ1bmN0aW9uIGlhbihuLGUpezEmbiYmKEooMCwic3BhbiIsMTA4KSxTZSgxLCIgTG9hZGluZy4uLiAiKSx0ZSgpLEooMiwiZGl2IiwxMDkpKDMsInAiLDExMCksU2Uo'@; put 'NCwiTG9hZGluZyB0YWJsZSIpLHRlKCkoKSl9ZnVuY3Rpb24gb2FuKG4sZSl7MSZuJiYoSigwLCJzcGFuIiksSXQoMSwiY2xyLWljb24iLDExMSksdGUoKSxKKDIsImRpdiIsMTA5KSgzLCJwIiwxMTApLFNlKDQsIkxvYWRpbmcgdGFibGUgZXJyb3IiKSx0ZSgpKCkpfWZ1bmN0aW9uIGFhbihu'@; put 'LGUpe2lmKDEmbiYmKEooMCwiZGl2IiwzNikoMSwiZGl2IiwxMDcpLHZ0KDIsaWFuLDUsMCksdnQoMyxvYW4sNSwwKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDIpLF90KHQuZ2V0ZGF0YUVycm9yPy0xOjIpLGllKCksX3QodC5nZXRkYXRhRXJyb3I/MzotMSl9fWZ1bmN0aW9uIHNh'@; put 'bihuLGUpe2lmKDEmbiYmKEooMCwic3BhbiIpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLE5oKCJUbyB1bmxvY2sgbW9yZSB0aGFuICIsdC5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiICIsMT09PXQubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRv'@; put 'cl9yb3dzX2FsbG93ZWQ/InJvdyI6InJvd3MiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiBsYW4obixlKXtpZigxJm4mJihKKDAsImNsci10b29sdGlwLWNvbnRlbnQiLDExNCksdnQoMSxzYW4sMiwyLCJzcGFuIiksdGUoKSksMiZuKXtjb25zdCB0'@; put 'PVRlKDIpO2llKCksX3QodC5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSb3c/MTotMSl9fWZ1bmN0aW9uIGNhbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRvb2x0aXAiKSgxLCJidXR0b24iLDExMiksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUo'@; put 'KTtyZXR1cm4gWGUoaS5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSb3c/IiI6aS5hZGRSZWNvcmRCdXR0b25DbGljaygpKX0pLEl0KDIsImNsci1pY29uIiw5NiksU2UoMywiIEFkZCBSZWNvcmQgIiksdGUoKSxZbig0LGxhbiwyLDEsImNsci10b29sdGlwLWNvbnRlbnQiLDExMyksdGUoKX1p'@; put 'ZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLHdyKCJkYy1sb2NrZWQtY29udHJvbCIsdC5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSb3cpfX1mdW5jdGlvbiB1YW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsMTIyKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IFllKHQpLFhlKFRlKDMpLmFwcGx5UGVuZGluZ1ZhRmlsdGVyKCkpfSksU2UoMSwiIEFwcGx5IGZpbHRlciAiKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgzKTtydCgiZGlzYWJsZWQiLCJwZW5kaW5nIiE9PXQudmFGaWx0ZXJTdGF0dXMmJiJsb2FkaW5nIiE9PXQudmFGaWx0ZXJTdGF0dXMp'@; put 'fX1mdW5jdGlvbiBkYW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImxhYmVsIiwxMTkpKDEsImlucHV0IiwxMjApLHd0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLnRvZ2dsZVZhQXV0b0FwcGx5KCkpfSksdGUoKSxTZSgyLCIgQXV0by1hcHBseSBW'@; put 'QSBmaWx0ZXJzICIpLHRlKCksdnQoMyx1YW4sMiwxLCJidXR0b24iLDEyMSl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKCkscnQoImNoZWNrZWQiLHQudmFBdXRvQXBwbHkpLGllKDIpLF90KHQudmFBdXRvQXBwbHk/LTE6Myl9fWZ1bmN0aW9uIGhhbihuLGUpezEmbiYmKEooMCwic3BhbiIs'@; put 'MTE1KSxTZSgxLCIgVkEgZmlsdGVyaW5nIHBhdXNlZCB3aGlsZSBlZGl0aW5nICIpLHRlKCkpfWZ1bmN0aW9uIGZhbihuLGUpezEmbiYmKEooMCwic3BhbiIsMTE3KSxTZSgxLCIgRmlsdGVyIGNoYW5nZSBwZW5kaW5nICIpLHRlKCkpfWZ1bmN0aW9uIHBhbihuLGUpezEmbiYmKEooMCwic3Bh'@; put 'biIsMTE4KSxTZSgxLCIgTG9hZGluZyBmaWx0ZXJcdTIwMjYgIiksdGUoKSl9ZnVuY3Rpb24gZ2FuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDQwKSx2dCgxLGRhbiw0LDIpLHZ0KDIsaGFuLDIsMCwic3BhbiIsMTE1KSxKKDMsInNwYW4iLDExNiksdnQoNCxmYW4sMiwwLCJzcGFuIiwxMTcp'@; put 'LHZ0KDUscGFuLDIsMCwic3BhbiIsMTE4KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC5ob3RUYWJsZS5yZWFkT25seT8xOi0xKSxpZSgpLF90KHQuaG90VGFibGUucmVhZE9ubHk/LTE6MiksaWUoMiksX3QoInBlbmRpbmciPT09dC52YUZpbHRlclN0YXR1cz80Oi0xKSxp'@; put 'ZSgpLF90KCJsb2FkaW5nIj09PXQudmFGaWx0ZXJTdGF0dXM/NTotMSl9fWZ1bmN0aW9uIG1hbihuLGUpe2lmKDEmbiYmKEooMCwicCIsNDEpLFNlKDEpLEl0KDIsImNvbnRhY3QtbGluayIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksU3IoIiBUbyBkaXNwbGF5IG1vcmUgdGhhbiAi'@; put 'LHQubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQsIiByb3dzLCBjb250YWN0ICIpfX1mdW5jdGlvbiB2YW4obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDEyOCksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCksTmgoIk9ubHkgIix0LmxpY2VuY2VTdGF0'@; put 'ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCwiICIsMT09PXQubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0PyJyb3ciOiJyb3dzIiwiIHdpbGwgYmUgc3VibWl0dGVkLiBUbyByZW1vdmUgdGhlIHJlc3RyaWN0aW9uLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIu'@; put 'aW8iKX19ZnVuY3Rpb24gX2FuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDEyOSkoMSwiZGl2IiwxMzMpKDIsImxhYmVsIiwxMzQpLFNlKDMsIk1lc3NhZ2UiKSx0ZSgpLEooNCwidGV4dGFyZWEiLDEzNSksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQp'@; put 'O2NvbnN0IG89VGUoMik7cmV0dXJuIGZpKG8ubWVzc2FnZSxpKXx8KG8ubWVzc2FnZT1pKSxYZShpKX0pLHRlKCkoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgyKTtpZSg0KSxkaSgibmdNb2RlbCIsdC5tZXNzYWdlKSxydCgiZGlzYWJsZWQiLCF0LnZhbGlkYXRpb25Eb25lKSgidmFsdWUiLHQu'@; put 'dmFsaWRhdGlvbkRvbmU/IiI6IlBsZWFzZSB3YWl0IHdoaWxlIHdlIHZhbGlkYXRlICIrdC5jb2xzLmxlbmd0aCp0Lm1vZGlmZWRSb3dzSW5kZXhlcy5sZW5ndGgrIiBjZWxscy4iKX19ZnVuY3Rpb24geWFuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDQyKSgxLCJkaXYi'@; put 'LDEyMykoMiwiZGl2IiwxMjQpKDMsImRpdiIsMTI1KSg0LCJidXR0b24iLDEyNiksSXQoNSwiY2xyLWljb24iLDEyNyksdGUoKSxKKDYsImgzIiw5KSxTZSg3KSx0ZSgpKCksSig4LCJkaXYiLDEwKSx2dCg5LHZhbiwyLDIsInNwYW4iLDEyOCksdnQoMTAsX2FuLDUsMywiZGl2IiwxMjkpLHRl'@; put 'KCksSigxMSwiZGl2IiwxMzApKDEyLCJidXR0b24iLDEzMSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5zYXZlVGFibGUoaS5ob3RUYWJsZS5kYXRhKSl9KSxTZSgxMywiIFN1Ym1pdCAiKSx0ZSgpLEooMTQsImJ1dHRvbiIsMTMyKSx3dCgi'@; put 'Y2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpO3JldHVybiBpLmNhbmNlbFN1Ym1pdCgpLGkuc3VibWl0PSExLFhlKGkudmFsaWRhdGlvbkRvbmU9MCl9KSxTZSgxNSwiIENhbmNlbCAiKSx0ZSgpKCkoKSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7aWUoNyksZTQoIiBTdWJt'@; put 'aXQgZm9yIEFwcHJvdmFsICgiLHQucm93c0NoYW5nZWQucm93c0FkZGVkLCIgYWRkZWQsICIsdC5yb3dzQ2hhbmdlZC5yb3dzVXBkYXRlZCwiIHVwZGF0ZWQsICIsdC5yb3dzQ2hhbmdlZC5yb3dzRGVsZXRlZCwiIGRlbGV0ZWQpICIpLGllKDIpLF90KHQudG90YWxSb3dzQ2hhbmdlZD50Lmxp'@; put 'Y2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCYmdC5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQhPT10LkluZmluaXR5Pzk6LTEpLGllKCksX3QodC50YWJsZVRydWU/MTA6LTEpLGllKDIpLHJ0KCJkaXNhYmxlZCIsIXQudmFsaWRhdGlvbkRvbmUpfX1mdW5j'@; put 'dGlvbiBiYW4obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDQ4KSxTZSgxKSxBYygyLCJwa1NwYWNlU2VwYXJhdGUiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgpO2llKCksTmgoIiBPbiByb3cgIix0KzEsIjogIixUZCgyLDIsci5wa0ZpZWxkc1t0XS5yZXBsYWNlKCJ8'@; put 'IiwiIikpLCIgIil9fWZ1bmN0aW9uIHdhbihuLGUpe2lmKDEmbiYmKEooMCwicCIpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLGU0KCIiLHQuY29sLCIoIix0LmxlbiwiKSwgIix0LnZhbCl9fWZ1bmN0aW9uIENhbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigp'@; put 'O0ooMCwiZGl2Iiw0OSkoMSwiZGl2IiwxMzYpKDIsImRpdiIsMTI0KSgzLCJkaXYiLDEyNSkoNCwiYnV0dG9uIiwxMjYpLEl0KDUsImNsci1pY29uIiwxMjcpLHRlKCksSig2LCJoMyIsOSksU2UoNywiRXJyb3IiKSx0ZSgpKCksSig4LCJkaXYiLDEwKSg5LCJwIiksU2UoMTAsIllvdSBjYW5u'@; put 'b3Qgc3VibWl0IGVtcHR5IGNsYXVzZXMiKSx0ZSgpKCksSigxMSwiZGl2IiwyNCkoMTIsImJ1dHRvbiIsNDUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5udWxsVmFyaWFibGVzPSExKX0pLFNlKDEzLCIgT2sgIiksdGUoKSgpKCkoKSgpfX1mdW5jdGlvbiBT'@; put 'YW4obixlKXsxJm4mJkl0KDAsImFwcC1xdWVyeSIsbnVsbCw2KX1mdW5jdGlvbiBFYW4obixlKXsxJm4mJihKKDAsInAiLDYwKSxTZSgxLCJTb3JyeSB0aGF0IGRpZG4ndCB3b3JrLCB0cnkgYWdhaW4uIiksdGUoKSl9bGV0IGZLPSgoKT0+e3ZhciBuO2NsYXNzIGV7dXBkYXRlSG90VGFibGVT'@; put 'ZXR0aW5ncygpe3RoaXMuaG90VGFibGVTZXR0aW5ncz17Y29sSGVhZGVyczp0aGlzLmhvdFRhYmxlLmNvbEhlYWRlcnMsY29sdW1uczp0aGlzLmhvdFRhYmxlLmNvbHVtbnMsaGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LGxpY2Vuc2VLZXk6dGhpcy5ob3RUYWJsZS5saWNlbnNlS2V5LHJl'@; put 'YWRPbmx5OnRoaXMuaG90VGFibGUucmVhZE9ubHksY29weVBhc3RlOnRoaXMuaG90VGFibGUuY29weVBhc3RlLGZvcm11bGFzOnRoaXMuaG90VGFibGUuZm9ybXVsYXMsY29udGV4dE1lbnU6ITAsY2xhc3NOYW1lOiJodERhcmsiLHRoZW1lOiJodC10aGVtZS1jbGFzc2ljIn19Z2V0IGVtYmVk'@; put 'KCl7cmV0dXJuIFVuLmVtYmVkfWdldCBpc1ZhRW1iZWQoKXtyZXR1cm4idmEiPT09VW4uZW1iZWR9Z2V0IHZhQXV0b0FwcGx5KCl7cmV0dXJuImNvbmZpcm0iIT09VW4udmFBcHBseU1vZGV9Y29uc3RydWN0b3IocixpLG8sYSxsLHUsZyxFLE8sWixlZSx2ZSxNZSl7dGhpcy5saWNlbmNlU2Vy'@; put 'dmljZT1yLHRoaXMuZXZlbnRTZXJ2aWNlPWksdGhpcy5sb2dnZXJTZXJ2aWNlPW8sdGhpcy5zYXNTdG9yZVNlcnZpY2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9bCx0aGlzLnJvdXRlcj11LHRoaXMucm91dGU9Zyx0aGlzLnNhc1NlcnZpY2U9RSx0aGlzLmNkZj1PLHRoaXMuc3ByZWFkc2hlZXRT'@; put 'ZXJ2aWNlPVosdGhpcy52YU1lc3NhZ2luZz1lZSx0aGlzLnZhRmlsdGVyPXZlLHRoaXMudXNlclNlcnZpY2U9TWUsdGhpcy51cGxvYWRTdGF0ZXJDb21wTGlzdD1uZXcgazgsdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0PW5ldyBrOCx0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0PW5ldyBr'@; put 'OCx0aGlzLm1lc3NhZ2U9IiIsdGhpcy4kZGF0YUZvcm1hdHM9bnVsbCx0aGlzLmNvbHM9W10sdGhpcy5yZXN0cmljdGlvbnM9e30sdGhpcy5kYXRhc2V0SW5mbz0hMSx0aGlzLmRzbWV0YT1bXSx0aGlzLnZlcnNpb25zPVtdLHRoaXMuZHNOb3RlPSIiLHRoaXMudmlld2JveGVzPSExLHRoaXMu'@; put 'SW5maW5pdHk9MS8wLHRoaXMuaG90VGFibGVTZXR0aW5ncz17fSx0aGlzLmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10saGlkZGVuOiEwLGNvbHVtbnM6W10saGVpZ2h0OiJjYWxjKDEwMHZoIC0gMTYwcHgpIixsaWNlbnNlS2V5OnZvaWQgMCxyZWFkT25seTohMCxmb3JtdWxhczp7'@; put 'ZW5naW5lOmRmLGxpY2Vuc2VLZXk6ImdwbC12MyJ9LGNvcHlQYXN0ZTp7Y29weUNvbHVtbkhlYWRlcnM6ITAsY29weUNvbHVtbkhlYWRlcnNPbmx5OiEwfSxzZXR0aW5nczp7Y29udGV4dE1lbnU6e2l0ZW1zOntlZGl0X3Jvdzp7bmFtZToiRWRpdCByb3ciLGhpZGRlbigpe2lmKHRoaXMuZ2V0'@; put 'U2V0dGluZ3MoKS5yZWFkT25seSlyZXR1cm4hMDtjb25zdCBXZT10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTtpZighV2UpcmV0dXJuITE7Y29uc3QgYXQ9V2VbMF07cmV0dXJuIGF0LmZyb20ucm93IT09YXQudG8ucm93fSxjYWxsYmFjazooSGUsV2UsYXQpPT57Y29uc3QgQ3Q9V2VbMF07Q3Qu'@; put 'c3RhcnQucm93PT09Q3QuZW5kLnJvdyYmdGhpcy5lZGl0UmVjb3JkKG51bGwsQ3Quc3RhcnQucm93KX19LHJldmVydF9jZWxsczp7bmFtZToiUmV2ZXJ0IixoaWRkZW4oKXtpZih0aGlzLmdldFNldHRpbmdzKCkucmVhZE9ubHkpcmV0dXJuITA7Y29uc3QgSGU9dGhpcy5nZXRTZWxlY3RlZFJh'@; put 'bmdlKCk7aWYoIUhlfHwwPT09SGUubGVuZ3RoKXJldHVybiEwO2NvbnN0IFdlPXRoaXMuZ2V0UGx1Z2luKCJjb21tZW50cyIpO3JldHVybiFncShIZSx0aGlzLmNvdW50Um93cygpLHRoaXMuY291bnRDb2xzKCkpLnNvbWUoKHtyb3c6Q3QsY29sOkF0fSk9PldlLmdldENvbW1lbnRBdENlbGwo'@; put 'Q3QsQXQpKX0sY2FsbGJhY2s6KEhlLFdlKT0+e2NvbnN0IGF0PXRoaXMuaG90SW5zdGFuY2UsQ3Q9YXQuZ2V0UGx1Z2luKCJjb21tZW50cyIpLEF0PWdxKFdlLm1hcChLdD0+KHtmcm9tOkt0LnN0YXJ0LHRvOkt0LmVuZH0pKSxhdC5jb3VudFJvd3MoKSxhdC5jb3VudENvbHMoKSk7Zm9yKGNv'@; put 'bnN0e3JvdzpLdCxjb2w6cXR9b2YgQXQpe2NvbnN0IGduPUN0LmdldENvbW1lbnRBdENlbGwoS3QscXQpO2lmKCFnbiljb250aW51ZTtjb25zdCBUbj1hdC5jb2xUb1Byb3AocXQpLENuPWduLnNsaWNlKGUuT1JJR0lOQUxfVkFMVUVfQ09NTUVOVF9QUkVGSVgubGVuZ3RoKSxxcj0ibnVtZXJp'@; put 'YyI9PT10aGlzLmRjVmFsaWRhdG9yPy5nZXRSdWxlKFRuKT8udHlwZTthdC5zZXREYXRhQXRSb3dQcm9wKEt0LFRuLHRRdChDbixxciksInJldmVydCIpLEN0LnJlbW92ZUNvbW1lbnRBdENlbGwoS3QscXQpfX19LGFwcGx5X2FzX2Zvcm11bGE6e25hbWU6IkFwcGx5IGFzIGZvcm11bGEiLGhp'@; put 'ZGRlbjooKT0+e2NvbnN0IEhlPXRoaXMuaG90SW5zdGFuY2U7aWYoSGUuZ2V0U2V0dGluZ3MoKS5yZWFkT25seSlyZXR1cm4hMDtjb25zdCBXZT1IZS5nZXRTZWxlY3RlZFJhbmdlKCk7cmV0dXJuIVdlfHwwPT09V2UubGVuZ3RofHwhZ3EoV2UsSGUuY291bnRSb3dzKCksSGUuY291bnRDb2xz'@; put 'KCkpLnNvbWUoKHtyb3c6Q3QsY29sOkF0fSk9Pntjb25zdCBLdD10aGlzLmRhdGFTb3VyY2VbSGUudG9QaHlzaWNhbFJvdyhDdCldO2lmKCFLdClyZXR1cm4hMTtjb25zdCBxdD1IZS5jb2xUb1Byb3AoQXQpO3JldHVybiB4Z2UodGhpcy5hdXRvRXNjYXBlZENlbGxzLHF4KEt0LHRoaXMuaGVh'@; put 'ZGVyUGtzKSxxdCl9KX0sY2FsbGJhY2s6KEhlLFdlKT0+e2NvbnN0IGF0PXRoaXMuaG90SW5zdGFuY2UsQ3Q9Z3EoV2UubWFwKEF0PT4oe2Zyb206QXQuc3RhcnQsdG86QXQuZW5kfSkpLGF0LmNvdW50Um93cygpLGF0LmNvdW50Q29scygpKTtmb3IoY29uc3R7cm93OkF0LGNvbDpLdH1vZiBD'@; put 'dCl7Y29uc3QgcXQ9dGhpcy5kYXRhU291cmNlW2F0LnRvUGh5c2ljYWxSb3coQXQpXTtpZighcXQpY29udGludWU7Y29uc3QgZ249YXQuY29sVG9Qcm9wKEt0KSxUbj1xeChxdCx0aGlzLmhlYWRlclBrcyk7eGdlKHRoaXMuYXV0b0VzY2FwZWRDZWxscyxUbixnbikmJihhdC5zZXREYXRhQXRS'@; put 'b3dQcm9wKEF0LGduLEN6ZShhdC5nZXREYXRhQXRSb3dQcm9wKEF0LGduKSkpLFN6ZSh0aGlzLmF1dG9Fc2NhcGVkQ2VsbHMsVG4sZ24pKX19fSxyb3dfYWJvdmU6e25hbWU6Ikluc2VydCBSb3cgYWJvdmUiLGhpZGRlbjooKT0+ITA9PT10aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGNhbGxiYWNr'@; put 'OihIZSxXZSxhdCk9Pnt0aGlzLmluc2VydFJvd0F0UG9zaXRpb24oV2VbMF0uc3RhcnQucm93KX19LHJvd19iZWxvdzp7bmFtZToiSW5zZXJ0IFJvdyBiZWxvdyIsaGlkZGVuOigpPT4hMD09PXRoaXMuaG90VGFibGUucmVhZE9ubHksY2FsbGJhY2s6KEhlLFdlLGF0KT0+e3RoaXMuaW5zZXJ0'@; put 'Um93QXRQb3NpdGlvbihXZVswXS5zdGFydC5yb3crMSl9fSxyZW1vdmVfcm93OntuYW1lOiJJZ25vcmUgcm93IixoaWRkZW46KCk9PiEwPT09dGhpcy5ob3RUYWJsZS5yZWFkT25seX0sY29weTp7bmFtZToiQ29weSB3aXRob3V0IGhlYWRlcnMifSxjb3B5X3dpdGhfY29sdW1uX2hlYWRlcnM6'@; put 'e25hbWU6IkNvcHkgd2l0aCBoZWFkZXJzIn0sY29weV9jb2x1bW5faGVhZGVyc19vbmx5OntuYW1lOiJDb3B5IGhlYWRlcnMgb25seSJ9LGV4cG9ydF9maWxlOnZnZSgoKT0+dGhpcy5saWJkc3x8ImV4cG9ydCIsMSksc3AxOntuYW1lOiItLS0tLS0tLS0iLGhpZGRlbjooKT0+ITA9PT10aGlz'@; put 'LmhvdFRhYmxlLnJlYWRPbmx5fSx1bmRvOntuYW1lOiJVbmRvIixoaWRkZW46KCk9PiEwPT09dGhpcy5ob3RUYWJsZS5yZWFkT25seX0scmVkbzp7bmFtZToiUmVkbyIsaGlkZGVuOigpPT4hMD09PXRoaXMuaG90VGFibGUucmVhZE9ubHl9LHRvZ2dsZV9sYWJlbHM6e25hbWU6KCk9PnRoaXMu'@; put 'dXNlTGFiZWxzPyJTaG93IG5hbWVzIjoiU2hvdyBsYWJlbHMiLGNhbGxiYWNrOigpPT57dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10se3JlbGF0aXZlVG86dGhpcy5yb3V0ZSxxdWVyeVBhcmFtczp7bGFiZWxzOiF0aGlzLnVzZUxhYmVsc3x8bnVsbH0scXVlcnlQYXJhbXNIYW5kbGluZzoibWVy'@; put 'Z2UifSl9fX19fX0sdGhpcy5ob3RDZWxsc1Byb3BSb3c9bnVsbCx0aGlzLmZpbHRlcj0hMSx0aGlzLnN1Ym1pdExvYWRpbmc9ITEsdGhpcy51cGxvYWRMb2FkaW5nPSExLHRoaXMucm93c0NoYW5nZWQ9e3Jvd3NVcGRhdGVkOjAscm93c0RlbGV0ZWQ6MCxyb3dzQWRkZWQ6MH0sdGhpcy5tb2Rp'@; put 'ZmVkUm93c0luZGV4ZXM9W10sdGhpcy5xdWVyeUVycj0hMSx0aGlzLnN1Y2Nlc3NFbmFibGU9ITEsdGhpcy51c2VMYWJlbHM9ITEsdGhpcy5udWxsVmFyaWFibGVzPSExLHRoaXMucGtGaWVsZHM9W10sdGhpcy5maWxlbmFtZT0iIix0aGlzLnN1Ym1pdExpbWl0Tm90aWNlPSExLHRoaXMuYmFk'@; put 'RWRpdD0hMSx0aGlzLnZhRmlsdGVyU3RhdHVzPSJpZGxlIix0aGlzLnZhUGVuZGluZ0NsYXVzZXM9bnVsbCx0aGlzLnZhUGVuZGluZ1NpZ25hdHVyZT0iIix0aGlzLnZhQXBwbHlpbmdGaWx0ZXI9ITEsdGhpcy5zYXZlTG9hZGluZz0hMSx0aGlzLmFwcHJvdmVycz1bXSx0aGlzLmVyclZhbGlk'@; put 'YXRpb249ITEsdGhpcy5wa051bGw9ITEsdGhpcy5ub1BrTnVsbD0hMSx0aGlzLnRhYmxlRGF0YT1bXSx0aGlzLnF1ZXJ5VGV4dD0iIix0aGlzLnF1ZXJ5VGV4dFNhdmVkPSIiLHRoaXMuZmlsdGVyRXhwYW5kZWQ9ITEsdGhpcy5maWx0ZXJPdmVyZmxvd3M9ITEsdGhpcy5maWx0ZXJNZWFzdXJl'@; put 'ZEtleT0iIix0aGlzLnNob3dBcHByb3ZlcnM9ITEsdGhpcy5wa0R1cHM9ITEsdGhpcy52YWxpZGF0aW9uRG9uZT0wLHRoaXMuZHVwbGljYXRlUGtJbmRleGVzPVtdLHRoaXMuY29sdW1uSGVhZGVyPVtdLHRoaXMuc3BlY0luZm89W10sdGhpcy50b29Mb25nPSExLHRoaXMuZXhjZWVkQ2VsbHM9'@; put 'W10sdGhpcy51cGxvYWRlcj1uZXcgZ2dlLHRoaXMudXBsb2FkVXJsPSIiLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSExLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbCx0aGlzLmRhdGE9W10sdGhpcy5oZWFkZXJB'@; put 'cnJheT1bXSx0aGlzLmhvdERhdGFTY2hlbWE9e30sdGhpcy5oZWFkZXJTaG93PVtdLHRoaXMuaGVhZGVyVmlzaWJsZT0hMSx0aGlzLmhhc0Jhc2VEcm9wWm9uZU92ZXI9ITEsdGhpcy5oYXNBbm90aGVyRHJvcFpvbmVPdmVyPSExLHRoaXMuaGVhZGVyUGtzPVtdLHRoaXMuY29sdW1uTGV2ZWxT'@; put 'ZWN1cml0eUZsYWc9ITEsdGhpcy5kYXRlVGltZUhlYWRlcnM9W10sdGhpcy50aW1lSGVhZGVycz1bXSx0aGlzLmRhdGVIZWFkZXJzPVtdLHRoaXMueGxSdWxlcz1bXSx0aGlzLmVuY29kaW5nPSJVVEYtOCIsdGhpcy5oZWFkZXJDb2x1bW5zPVtdLHRoaXMuY2VsbFZhbGlkYXRpb249W10sdGhp'@; put 'cy5hdXRvRXNjYXBlZENlbGxzPW5ldyBNYXAsdGhpcy5maWxlUGFzc3dvcmRTdWJqZWN0PW5ldyBNcix0aGlzLmZpbGVVbmxvY2tFcnJvcj0hMSx0aGlzLmZpbGVQYXNzd29yZE1vZGFsPSExLHRoaXMuc2hvd1VwbG9hZE1vZGFsPSExLHRoaXMuZGlzY2FyZFNvdXJjZUZpbGU9ITEsdGhpcy5t'@; put 'YW51YWxGaWxlRWRpdE1vZGFsPSExLHRoaXMucmVjb3JkQWN0aW9uPW51bGwsdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzPVtdLHRoaXMuY3VycmVudEVkaXRSZWNvcmRFcnJvcnM9W10sdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PS0xLHRoaXMuZ2VuZXJhdGVFZGl0UmVjb3Jk'@; put 'VXJsTG9hZGluZz0hMSx0aGlzLmdlbmVyYXRlZFJlY29yZFVybD1udWxsLHRoaXMuYWRkUmVjb3JkVXJsPW51bGwsdGhpcy5yZWNvcmROZXdPclBrTW9kaWZpZWQ9ITEsdGhpcy5hZGRSZWNvcmRMb2FkaW5nPSExLHRoaXMuc2luZ2xlUm93U2VsZWN0ZWQ9ITEsdGhpcy5hZGRpbmdOZXdSb3c9'@; put 'ITEsdGhpcy5nZXRkYXRhRXJyb3I9ITEsdGhpcy56ZXJvRmlsdGVyUm93cz0hMSx0aGlzLnRhYmxlRmlsZURyYWdPdmVyPSExLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2U9W10sdGhpcy52YWxpZGF0aW9uVGFibGVMaW1pdD0xMDAsdGhpcy52YWxpZGF0aW9uRXBvY2g9MCx0aGlzLnBlbmRp'@; put 'bmdTcGlubmVyQ2VsbHM9bmV3IFNldCx0aGlzLmJ1bGtWYWxpZGF0aW9uPXthY3RpdmU6ITEsZG9uZTowLHRvdGFsOjB9LHRoaXMuY29uZmlybU1vZGFsPXtvcGVuOiExLHRpdGxlOiIiLG1lc3NhZ2U6IiJ9LHRoaXMuY29uZmlybU1vZGFsUmVzb2x2ZXI9bnVsbCx0aGlzLmRpc2FibGVkQmFz'@; put 'aWNEeW5hbWljQ2VsbFZhbGlkYXRpb25NYXA9W10sdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGUsdGhpcy50aW1lc0NsaWNrZWQ9MCx0aGlzLnBhcnNlUmVzdHJpY3Rpb25zKCksdGhpcy5zZXRSZXN0cmljdGlvbnMoKX1wYXJzZVJlc3RyaWN0aW9u'@; put 'cygpe3RoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUmVjb3JkPSExPT09dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuYWRkUmVjb3JkLHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0RWRpdFJlY29yZD0hMT09PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRSZWNvcmQsdGhpcy5yZXN0'@; put 'cmljdGlvbnMucmVzdHJpY3RGaWxlVXBsb2FkPSExPT09dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuZmlsZVVwbG9hZH1zZXRSZXN0cmljdGlvbnMocil7ciYmKHRoaXMucmVzdHJpY3Rpb25zPXsuLi50aGlzLnJlc3RyaWN0aW9ucywuLi5yfSksdGhpcy5yZXN0cmljdGlvbnMucmVtb3ZlRWRp'@; put 'dFJlY29yZEJ1dHRvbiYmZGVsZXRlKHRoaXMuaG90VGFibGU/LnNldHRpbmdzPy5jb250ZXh0TWVudSkuaXRlbXMuZWRpdF9yb3csdGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSb3cmJihkZWxldGUodGhpcy5ob3RUYWJsZT8uc2V0dGluZ3M/LmNvbnRleHRNZW51KS5pdGVtcy5yb3df'@; put 'YWJvdmUsZGVsZXRlKHRoaXMuaG90VGFibGU/LnNldHRpbmdzPy5jb250ZXh0TWVudSkuaXRlbXMucm93X2JlbG93LGRlbGV0ZSh0aGlzLmhvdFRhYmxlPy5zZXR0aW5ncz8uY29udGV4dE1lbnUpLml0ZW1zLnJlbW92ZV9yb3cpfWNoZWNrUm93TGltaXQoKXt0aGlzLmNvbHVtbkxldmVsU2Vj'@; put 'dXJpdHlGbGFnfHx0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkIT09MS8wJiYodGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSb3c9dGhpcy5kYXRhU291cmNlPy5sZW5ndGg+PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQp'@; put 'fXJlc2V0RmlsdGVyKCl7dGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0LmZpcnN0JiZ0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3QuZmlyc3QucmVzZXRGaWx0ZXIoKX1vblNob3dVcGxvYWRNb2RhbCgpe3RoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0RmlsZVVwbG9hZD90aGlzLmV2ZW50U2Vydmlj'@; put 'ZS5zaG93RGVtb0xpbWl0TW9kYWwoIkZpbGUgVXBsb2FkIik6dGhpcy5jb2x1bW5MZXZlbFNlY3VyaXR5RmxhZz90aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJJbmZvcm1hdGlvbiIsIlVwbG9hZCBmZWF0dXJlIGlzIGRpc2FibGVkIHdoaWxlIENvbHVtbiBMZXZlbCBTZWN1cml0'@; put 'eSBydWxlcyBhcmUgYWN0aXZlIik6dGhpcy51cGxvYWRQcmV2aWV3fHwodGhpcy5zaG93VXBsb2FkTW9kYWw9ITApfWZpbGVPdmVyQmFzZShyKXt0aGlzLmhhc0Jhc2VEcm9wWm9uZU92ZXI9cn1hdHRhY2hGaWxlKHIsaT0hMSl7dmFyIG89dGhpcztjb25zdCBhPWk/clswXTpyLnRhcmdldC5m'@; put 'aWxlc1swXTt0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9IkxvYWRpbmciLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMCx0aGlzLmV4Y2VsRmlsZVJlYWR5PSExLHRoaXMuZmlsZW5hbWU9YS5uYW1lLHRoaXMuc3ByZWFkc2hlZXRTZXJ2aWNlLnBhcnNlRXhjZWxGaWxlKHtmaWxlOmEsdXBsb2FkZXI6'@; put 'dGhpcy51cGxvYWRlcixkY1ZhbGlkYXRvcjp0aGlzLmRjVmFsaWRhdG9yLGhlYWRlclBrczp0aGlzLmhlYWRlclBrcyxoZWFkZXJBcnJheTp0aGlzLmhlYWRlckFycmF5LGhlYWRlclNob3c6dGhpcy5oZWFkZXJTaG93LHRpbWVIZWFkZXJzOnRoaXMudGltZUhlYWRlcnMsZGF0ZUhlYWRlcnM6'@; put 'dGhpcy5kYXRlSGVhZGVycyxkYXRlVGltZUhlYWRlcnM6dGhpcy5kYXRlVGltZUhlYWRlcnMseGxSdWxlczp0aGlzLnhsUnVsZXMsZW5jb2Rpbmc6dGhpcy5lbmNvZGluZ30sbD0+e3RoaXMuYXBwZW5kVXBsb2FkU3RhdGUobCl9LGw9Pnt0aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFs'@; put 'KCJUYWJsZSBGb3VuZCIsbCl9KS50aGVuKGZ1bmN0aW9uKCl7dmFyIGw9Q3IoZnVuY3Rpb24qKHUpe3UmJihvLmV4Y2VsRmlsZVJlYWR5PSEwLG8udXBsb2FkZXI9dS51cGxvYWRlcix1LmRhdGEmJnUuaGVhZGVyU2hvdz8oby5kYXRhPXUuZGF0YSxvLmhlYWRlclNob3c9dS5oZWFkZXJTaG93'@; put 'LG8uZ2V0UGVuZGluZ0V4Y2VsUHJldmlldygpKTp5aWVsZCBvLnVwbG9hZFBhcnNlZEZpbGVzKCkpfSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpLmNhdGNoKGw9Pnt0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLGws'@; put 'bnVsbCksdGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSExLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbGVuYW1lPSIifSl9KS5maW5hbGx5KCgpPT57dGhpcy5leGNlbEZpbGVQYXJzaW5nPSExfSl9c3VibWl0RXhjZWwoKXt0aGlzLmxpY2VuY2VTdGF0ZS52YWx1'@; put 'ZS5zdWJtaXRfcm93c19saW1pdD09PTEvMD90aGlzLnVwbG9hZFBhcnNlZEZpbGVzKCk6dGhpcy5zdWJtaXRMaW1pdE5vdGljZT0hMH11cGxvYWRQYXJzZWRGaWxlcygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2lmKHIuY2hlY2tJbnZhbGlkKCkpcmV0dXJuIHZvaWQgci5l'@; put 'dmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCwiSW52YWxpZCB2YWx1ZXMgYXJlIHByZXNlbnQuIik7aWYoci52YWxpZGF0ZVByaW1hcnlLZXlzKCksMCE9PXIuZHVwbGljYXRlUGtJbmRleGVzLmxlbmd0aClyZXR1cm4gci5wa0R1cHM9ITAsdm9pZChyLnN1Ym1pdD0hMSk7ci5wa0R1'@; put 'cHM9ITEsci51cGxvYWRMb2FkaW5nPSEwO2NvbnN0IGk9W107Zm9yKGNvbnN0IG8gb2Ygci51cGxvYWRlci5xdWV1ZSlpLnB1c2goe2ZpbGU6byxmaWxlTmFtZTpvLm5hbWV9KTt5aWVsZCByLnNhc1NlcnZpY2UudXBsb2FkRmlsZShyLnVwbG9hZFVybCxpLHt0YWJsZTpyLmxpYmRzfSkudGhl'@; put 'bihvPT57aWYodHlwZW9mIG8uYWRhcHRlclJlc3BvbnNlLnNhc2pzQWJvcnQ+InUiKXtpZih0eXBlb2Ygby5hZGFwdGVyUmVzcG9uc2Uuc2FzcGFyYW1zPiJ1IilyZXR1cm47e3IudXBsb2FkTG9hZGluZz0hMTtjb25zdCBhPW8uYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFtc1swXTtyLnN1Y2Nl'@; put 'c3NFbmFibGU9ITAsci50YWJsZUlkPWEuRFNJRCxyLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIityLnRhYmxlSWQpfX1lbHNle2NvbnN0IGE9by5hZGFwdGVyUmVzcG9uc2UsbD1hLnNhc2pzQWJvcnRbMF0uTVNHLHU9YS5zYXNqc0Fib3J0WzBdLk1BQztyLnVwbG9hZExvYWRpbmc9'@; put 'ITEsci5maWxlbmFtZT0iIixyLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYoci5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSxyLnVwbG9hZGVyLnF1ZXVlPVtdLHIuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCIiLGwse1NZ'@; put 'U1dBUk5JTkdURVhUOmEuU1lTV0FSTklOR1RFWFQsU1lTRVJST1JURVhUOmEuU1lTRVJST1JURVhULE1BQzp1LF9QUk9HUkFNOmEuX1BST0dSQU19KX19LG89PntyLnVwbG9hZExvYWRpbmc9ITEsci5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHIuZmlsZVVwbG9hZElucHV0Q29t'@; put 'cExpc3QuZmlyc3QubmF0aXZlRWxlbWVudC52YWx1ZT0iIiksci51cGxvYWRlci5xdWV1ZT1bXSxyLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImZpbGUgdXBsb2FkIixvLmFkYXB0ZXJSZXNwb25zZSl9KX0pKCl9Z2V0UGVuZGluZ0V4Y2VsUHJldmlldygpe3RoaXMucXVlcnlU'@; put 'ZXh0U2F2ZWQ9dGhpcy5xdWVyeVRleHQsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy5leGNlbFVwbG9hZFN0YXRlPSJQYXJzaW5nIix0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKTtjb25zdCByPVtdO3RoaXMuZGF0YS5tYXAoYT0+e2NvbnN0IGw9e307dGhpcy5oZWFkZXJT'@; put 'aG93Lm1hcCgodSxnKT0+e2xbdV09YVtnXX0pLGwuX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19ffHwobC5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX189Ik5vIiksbFtNbV09IlUiLHIucHVzaChsKX0pO2NvbnN0IGk9X3EodGhpcy5kY1ZhbGlkYXRvcj8uZ2V0RHFEZXRhaWxz'@; put 'KCk/P1tdKTt0aGlzLmF1dG9Fc2NhcGVkQ2VsbHM9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiByKXtjb25zdCBsPXF4KGEsdGhpcy5oZWFkZXJQa3MpO2Zvcihjb25zdCB1IG9mIHRoaXMuaGVhZGVyQ29sdW1ucyl7aWYoaS5pbmNsdWRlcyh1KXx8IXlxKHRoaXMuY29scyx1KSljb250aW51ZTtj'@; put 'b25zdHt2YWx1ZTpnLHdhc0VzY2FwZWQ6RX09d3plKGFbdV0pO0UmJihhW3VdPWcsVGdlKHRoaXMuYXV0b0VzY2FwZWRDZWxscyxsLHUpKX19dGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSx0aGlzLmRhdGFTb3Vy'@; put 'Y2U9cix0aGlzLmhvdFRhYmxlLmRhdGE9cjtjb25zdCBvPXRoaXMuaG90SW5zdGFuY2U7dGhpcy5leGNlbFVwbG9hZFN0YXRlPSJWYWxpZGF0aW5nLUhPVCIsdGhpcy51cGRhdGVTZXR0aW5nc1NvcnRTYWZlKHtkYXRhOnRoaXMuZGF0YVNvdXJjZSxtYXhSb3dzOjEvMH0sITEpLG8ucmVuZGVy'@; put 'KCksdGhpcy5hcHBlbmRVcGxvYWRTdGF0ZSgiVmFsaWRhdGluZyByb3dzIiksby52YWxpZGF0ZUNlbGxzKCgpPT57dGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbH0p'@; put 'fWRpc2NhcmRQZW5kaW5nRXhjZWwocil7dGhpcy51cGRhdGVTZXR0aW5nc1NvcnRTYWZlKHttYXhSb3dzOnRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWR9KSxyJiZ0aGlzLmNhbmNlbEVkaXQoKSx0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYo'@; put 'dGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSx0aGlzLnVwbG9hZFByZXZpZXc9ITEsdGhpcy5leGNlbEZpbGVSZWFkeT0hMSx0aGlzLnVwbG9hZGVyLnF1ZXVlPVtdLGlzTmFOKHBhcnNlSW50KHRoaXMucm91dGVyLnVybC5zcGxpdCgi'@; put 'LyIpLnBvcCgpfHwiIikpfHx0aGlzLnF1ZXJ5VGV4dFNhdmVkLmxlbmd0aD4wJiYodGhpcy5xdWVyeVRleHQ9dGhpcy5xdWVyeVRleHRTYXZlZCx0aGlzLnF1ZXJ5VGV4dFNhdmVkPSIiKX1wcmV2aWV3VGFibGVFZGl0Q29uZmlybSgpe3RoaXMuZGlzY2FyZFBlbmRpbmdFeGNlbCgpLHRoaXMu'@; put 'Y29udmVydFRvQ29ycmVjdFR5cGVzKHRoaXMuZGF0YVNvdXJjZSksdGhpcy5lZGl0VGFibGUoITApfWFwcGVuZFVwbG9hZFN0YXRlKHIsaT0hMSl7dGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMudXBsb2FkU3RhdGVyQ29tcExpc3QuZmlyc3QmJihpP3RoaXMudXBsb2FkU3RhdGVyQ29t'@; put 'cExpc3QuZmlyc3QucmVwbGFjZUxhc3RTdGF0ZShyKTp0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0LmFwcGVuZFN0YXRlKHIpKX1pc0NvbFBrKHIpe3JldHVybiB0aGlzLmhlYWRlclBrcy5pbmRleE9mKHIpPi0xfWlzUmVhZG9ubHlDb2wocil7cmV0dXJuIHRoaXMuZGNWYWxpZGF0'@; put 'b3I/LmdldFJ1bGUocik/LnJlYWRPbmx5fWlzQ29sSGVhZGVyKHIpe3JldHVybiB0aGlzLmhlYWRlckFycmF5LmluZGV4T2Yoci50b1VwcGVyQ2FzZSgpKT4tMX1yZW1vdmVRdWVyeSgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZUNsYXVzZSgpfXNlbmRDbGF1c2UoKXt2YXIgcj10aGlz'@; put 'O3JldHVybiBDcihmdW5jdGlvbiooKXtyLnN1Ym1pdExvYWRpbmc9ITA7bGV0IGk9W107Y29uc3Qgbz1bXTtpZih0eXBlb2Ygci5jbGF1c2VzPiJ1IilyZXR1cm4gci5udWxsVmFyaWFibGVzPSEwLHZvaWQoci5zdWJtaXRMb2FkaW5nPSExKTt7Y29uc3QgYT1yLmNsYXVzZXMucXVlcnlPYmo7'@; put 'aWYoYVswXS5lbGVtZW50cy5sZW5ndGg8MSlyZXR1cm4oImhvbWUiPT09VW4ucm9vdFBhcmFtfHwiZWRpdG9yIj09PVVuLnJvb3RQYXJhbSkmJihVbi5lZGl0b3IuZmlsdGVyLmNsYXVzZXM9W10sVW4uZWRpdG9yLmZpbHRlci5xdWVyeT1bXSxVbi5lZGl0b3IuZmlsdGVyLmdyb3VwTG9naWM9'@; put 'IiIpLHZvaWQgci5yb3V0ZXIubmF2aWdhdGUoWyIvZWRpdG9yLyIrci5saWJkc10se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pO2ZvcihsZXQgbD0wO2w8YS5sZW5ndGg7bCsrKXtjb25zdCB1PWFbbF0uZWxlbWVudHM7aT11LmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4gbnVs'@; put 'bD09PWcudmFyaWFibGV9KSxpLmxlbmd0aCYmby5wdXNoKHUpfX1pZihvLmxlbmd0aClyZXR1cm4gci5udWxsVmFyaWFibGVzPSEwLHZvaWQoci5zdWJtaXRMb2FkaW5nPSExKTt0cnl7aWYodm9pZCAwIT09ci5jbGF1c2VzJiZyLmxpYmRzKXtjb25zdCBhPXtncm91cExvZ2ljOnIuY2xhdXNl'@; put 'cy5ncm91cExvZ2ljLGZpbHRlckdyb3VwczpbXX07ci5jbGF1c2VzLnF1ZXJ5T2JqLmZvckVhY2godT0+e2NvbnN0IGc9e2ZpbHRlckNsYXVzZXM6W119O3UuZWxlbWVudHMuZm9yRWFjaChFPT57Zy5maWx0ZXJDbGF1c2VzLnB1c2goci5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShFKSl9KSxn'@; put 'LmNsYXVzZUxvZ2ljPXUuY2xhdXNlTG9naWMsYS5maWx0ZXJHcm91cHMucHVzaChyLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGcpKX0pO2NvbnN0IGw9ci5zYXNTdG9yZVNlcnZpY2UuY3JlYXRlRmlsdGVyUXVlcnlUYWJsZShhKTt5aWVsZCByLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnko'@; put 'ci5saWJkcyxsKS50aGVuKHU9PntyLnF1ZXJ5RmlsdGVyPXtpZDp1LnJlc3VsdFswXS5GSUxURVJfUkssdGFibGU6dS5yZXN1bHRbMF0uRklMVEVSX1RBQkxFfSxyLnJvdXRlci5uYXZpZ2F0ZShbIi8iXSx7c2tpcExvY2F0aW9uQ2hhbmdlOiEwLHF1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNl'@; put 'cnZlIn0pLnRoZW4oKCk9PnIucm91dGVyLm5hdmlnYXRlKFsiL2VkaXRvci8iK3IucXVlcnlGaWx0ZXIudGFibGUrIi8iK3IucXVlcnlGaWx0ZXIuaWRdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KSksci5maWx0ZXI9ITF9KS5jYXRjaCh1PT57ci5zdWJtaXRMb2FkaW5nPSEx'@; put 'fSl9fWNhdGNoKGEpe3IucXVlcnlFcnI9ITAsci5zdWJtaXRMb2FkaW5nPSExLHIucXVlcnlFcnJNZXNzYWdlPWF9fSkoKX1vcGVuUWIoKXt0aGlzLmxpYmRzJiYodGhpcy5maWx0ZXI9ITAsdGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc3VibWl0TG9hZGluZz0hMSx0aGlzLnNhc1N0'@; put 'b3JlU2VydmljZS5zZXRRdWVyeVZhcmlhYmxlcyh0aGlzLmxpYmRzLHRoaXMuY29scykpfWdldEN1cnJlbnRTb3J0Q29uZmlncygpe2NvbnN0IHI9dGhpcy5ob3RJbnN0YW5jZTtpZighcilyZXR1cm5bXTt0cnl7Y29uc3QgaT1yLmdldFBsdWdpbigibXVsdGlDb2x1bW5Tb3J0aW5nIik7cmV0'@; put 'dXJuKG49PkFycmF5LmlzQXJyYXkobik/bjpuP1tuXTpbXSkoaT8uZ2V0U29ydENvbmZpZygpKX1jYXRjaHtyZXR1cm5bXX19dXBkYXRlU2V0dGluZ3NTb3J0U2FmZShyLGkpe2NvbnN0IG89dGhpcy5ob3RJbnN0YW5jZSxhPW8uZ2V0UGx1Z2luKCJtdWx0aUNvbHVtblNvcnRpbmciKSxsPXRo'@; put 'aXMuZ2V0Q3VycmVudFNvcnRDb25maWdzKCk7bC5sZW5ndGg+MCYmYS5jbGVhclNvcnQoKSxvLnVwZGF0ZVNldHRpbmdzKHIsaSksbC5sZW5ndGg+MCYmYS5zb3J0KGwpfWVkaXRUYWJsZShyLGkpe3RoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITApO2NvbnN0IG89dGhpcy5o'@; put 'b3RJbnN0YW5jZTtpZighbylyZXR1cm47dGhpcy52YURlYm91bmNlVGltZXImJihjbGVhclRpbWVvdXQodGhpcy52YURlYm91bmNlVGltZXIpLHRoaXMudmFEZWJvdW5jZVRpbWVyPXZvaWQgMCk7Y29uc3QgYT1vLmdldFBsdWdpbigibXVsdGlDb2x1bW5Tb3J0aW5nIiksbD10aGlzLmdldEN1'@; put 'cnJlbnRTb3J0Q29uZmlncygpO3NldFRpbWVvdXQoKCk9PntyfHwodGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSxpJiZ0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQucG9wKCksdGhpcy5vdmVybGF5Rm9ybXVsYVJh'@; put 'd1ZhbHVlc09uVW5jaGFuZ2VkKHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCkpLHRoaXMuaG90VGFibGUucmVhZE9ubHk9ITEsdGhpcy5ob3RUYWJsZS5kYXRhPXRoaXMuZGF0YVNvdXJjZSxsLmxlbmd0aD4wJiZhLmNsZWFyU29ydCgpLG8udXBkYXRlU2V0dGluZ3Moe3JlYWRPbmx5OnRoaXMu'@; put 'aG90VGFibGUucmVhZE9ubHl9LCExKSxvLnJlbmRlcigpLHRoaXMuc3luY092ZXJ3cml0dGVuQ29tbWVudHMoKSxsLmxlbmd0aD4wJiZhLnNvcnQobCksdGhpcy5yZVNldENlbGxWYWxpZGF0aW9uVmFsdWVzKCksc2V0VGltZW91dCgoKT0+e3RoaXMuZml4QXJpYUFjY2Vzc2liaWxpdHkoKX0s'@; put 'MTAwKX0sMCl9Y29udmVydFRvQ29ycmVjdFR5cGVzKHIpe2Zvcihjb25zdCBpIG9mIHIpZm9yKGNvbnN0IG8gaW4gaSl7Y29uc3QgYT10aGlzLmNvbHMuZmluZChsPT5sLk5BTUU9PT1vKTthJiYiIiE9PWlbb10mJiJudW0iPT09YS5UWVBFJiYhYS5ERFRZUEUuaW5jbHVkZXMoIlRJTUUiKSYm'@; put 'IWEuRERUWVBFLmluY2x1ZGVzKCJEQVRFIikmJihpW29dPXBhcnNlSW50KGlbb10pKX19Y2FuY2VsRWRpdCgpe3RoaXMuY2FuY2VsQnVsa1ZhbGlkYXRpb24oe3JldmVydDohMX0pLHRoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITApLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3Vy'@; put 'Y2U9W10sdGhpcy5jbGVhckR1cGxpY2F0ZVZhbGlkYXRpb24oKTtjb25zdCByPXRoaXMuaG90SW5zdGFuY2UsaT1yLmdldFBsdWdpbigibXVsdGlDb2x1bW5Tb3J0aW5nIiksbz10aGlzLmdldEN1cnJlbnRTb3J0Q29uZmlncygpO2lmKG8ubGVuZ3RoPjAmJmkuY2xlYXJTb3J0KCksdGhpcy5k'@; put 'YXRhU291cmNlVW5jaGFuZ2VkKXtjb25zdCBhPXRoaXMuZ2V0Rm9ybXVsYUJhc2VDb2xzKCksbD1yLmdldFBsdWdpbigiY29tbWVudHMiKSx1PSgobixlLHQscik9Pntjb25zdCBpPVtdO2ZvcihsZXQgbz0wO288bjtvKyspZm9yKGNvbnN0IGEgb2YgZSl0KG8sYSkmJmkucHVzaCh7cm93SW5k'@; put 'ZXg6byxwcm9wOmEsdmFsdWU6cihvLGEpfSk7cmV0dXJuIGl9KSh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLGEsKGcsRSk9PiEhbC5nZXRDb21tZW50QXRDZWxsKGcsci5wcm9wVG9Db2woRSkpLChnLEUpPT5yLmdldERhdGFBdFJvd1Byb3AoZyxFKSk7dGhpcy5kYXRhU291cmNlPXRoaXMuaGVs'@; put 'cGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkKTtmb3IoY29uc3QgZyBvZiB1KXRoaXMuZGF0YVNvdXJjZVtnLnJvd0luZGV4XSYmKHRoaXMuZGF0YVNvdXJjZVtnLnJvd0luZGV4XVtnLnByb3BdPWcudmFsdWUpfXRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRh'@; put 'dGFTb3VyY2UsdGhpcy5ob3RUYWJsZS5yZWFkT25seT0hMCxyLnVwZGF0ZVNldHRpbmdzKHtyZWFkT25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGRhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksdGhpcy5zeW5jT3ZlcndyaXR0ZW5Db21tZW50cygpLHRoaXMubW9kaWZlZFJvd3NJbmRleGVz'@; put 'PVtdLHIudmFsaWRhdGVDZWxscygpLG8ubGVuZ3RoPjAmJmkuc29ydChvKSx0aGlzLmNoZWNrUm93TGltaXQoKSx0aGlzLmlzVmFFbWJlZCYmdGhpcy52YUF1dG9BcHBseSYmInBlbmRpbmciPT09dGhpcy52YUZpbHRlclN0YXR1cyYmdGhpcy5hcHBseVBlbmRpbmdWYUZpbHRlcigpfWNhbmNl'@; put 'bEJ1bGtWYWxpZGF0aW9uKHI9e30pe2NvbnN0IGk9dGhpcy5idWxrVmFsaWRhdGlvbi5hY3RpdmU7dGhpcy52YWxpZGF0aW9uRXBvY2grKztjb25zdCBvPXRoaXMuaG90SW5zdGFuY2U7aWYobyYmdGhpcy5wZW5kaW5nU3Bpbm5lckNlbGxzLnNpemU+MCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5w'@; put 'ZW5kaW5nU3Bpbm5lckNlbGxzKXtjb25zdFtsLHVdPWEuc3BsaXQoIiwiKSxnPU51bWJlcihsKSxFPU51bWJlcih1KTtvLnNldENlbGxNZXRhKGcsRSwicmVuZGVyZXIiLFNnZSl9dGhpcy5wZW5kaW5nU3Bpbm5lckNlbGxzLmNsZWFyKCl9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZT10aGlz'@; put 'LmNlbGxWYWxpZGF0aW9uU291cmNlLmZpbHRlcihhPT4hYS5wZW5kaW5nfHxhLnZhbHVlcy5sZW5ndGg+MCksdGhpcy5idWxrVmFsaWRhdGlvbj17YWN0aXZlOiExLGRvbmU6MCx0b3RhbDowfSxpJiZyLnJldmVydCYmbyYmdGhpcy51bmRvTGFzdENoYW5nZShvKSxvJiZvLnJlbmRlcigpfXVu'@; put 'ZG9MYXN0Q2hhbmdlKHIpe2NvbnN0IGk9ci5nZXRQbHVnaW4oInVuZG9SZWRvIik7aT8uaXNVbmRvQXZhaWxhYmxlKCkmJmkudW5kbygpfXJ1bkJ1bGtWYWxpZGF0aW9uKHIsaSxvKXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtjb25zdCBsPW5ldyBTZXQsdT1bXSxnPW5ldyBT'@; put 'ZXQ7Zm9yKGNvbnN0IGVlIG9mIGkpZm9yKGxldCB2ZT1lZS5zdGFydFJvdzt2ZTw9ZWUuZW5kUm93O3ZlKyspZm9yKGxldCBNZT1lZS5zdGFydENvbDtNZTw9ZWUuZW5kQ29sO01lKyspe2wuYWRkKHZlKTtjb25zdCBIZT1yLmNvbFRvUHJvcChNZSk7YS5kY1ZhbGlkYXRvcj8uaGFzRHFSdWxl'@; put 'cyhIZSxbIkhBUkRTRUxFQ1RfSE9PSyJdKSYmKGcuYWRkKEhlKSx1LnB1c2goe3I6dmUsYzpNZX0pKX1pZigwPT09dS5sZW5ndGgpcmV0dXJuO2lmKDE9PT11Lmxlbmd0aCl7Y29uc3R7cjplZSxjOnZlfT11WzBdO3JldHVybiB5aWVsZCBhLmR5bmFtaWNDZWxsVmFsaWRhdGlvbihlZSx2ZSks'@; put 'dm9pZCByLnZhbGlkYXRlUm93cyhbLi4ubF0sKCk9PnIucmVuZGVyKCkpfWlmKHUubGVuZ3RoPjMpe2NvbnN0IGVlPVsuLi5nXS5qb2luKCIsICIpO2lmKCEoeWllbGQgYS5zaG93Q29uZmlybU1vZGFsKGBDb25maXJtICR7b30gdmFsaWRhdGlvbmAsYFlvdSBhcmUgYWJvdXQgdG8gdHJpZ2dl'@; put 'ciAke3UubGVuZ3RofSBiYWNrZW5kIFNBUyByZXF1ZXN0KHMpIGZvciBjb2x1bW5zOiAke2VlfS4gRG8geW91IHdpc2ggdG8gcHJvY2VlZD9gKSkpcmV0dXJuIHZvaWQgYS51bmRvTGFzdENoYW5nZShyKX1jb25zdCBFPWEudmFsaWRhdGlvbkVwb2NoO2EuYnVsa1ZhbGlkYXRpb249e2FjdGl2'@; put 'ZTohMCxkb25lOjAsdG90YWw6dS5sZW5ndGh9O2xldCBaPTA7eWllbGQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbSh7bGVuZ3RoOjJ9LENyKGZ1bmN0aW9uKigpe2Zvcig7Wjx1Lmxlbmd0aDspe2lmKEUhPT1hLnZhbGlkYXRpb25FcG9jaClyZXR1cm47Y29uc3R7cjplZSxjOnZlfT11W1orK107'@; put 'eWllbGQgYS5keW5hbWljQ2VsbFZhbGlkYXRpb24oZWUsdmUse3NraXBSZW5kZXI6ITB9KSxFPT09YS52YWxpZGF0aW9uRXBvY2gmJmEuYnVsa1ZhbGlkYXRpb24uZG9uZSsrfX0pKSksRT09PWEudmFsaWRhdGlvbkVwb2NoJiYoYS5idWxrVmFsaWRhdGlvbj17Li4uYS5idWxrVmFsaWRhdGlv'@; put 'bixhY3RpdmU6ITF9LHIudmFsaWRhdGVSb3dzKFsuLi5sXSwoKT0+ci5yZW5kZXIoKSkpfSkoKX1zaG93Q29uZmlybU1vZGFsKHIsaSl7cmV0dXJuIHRoaXMuY29uZmlybU1vZGFsPXtvcGVuOiEwLHRpdGxlOnIsbWVzc2FnZTppfSxuZXcgUHJvbWlzZShvPT57dGhpcy5jb25maXJtTW9kYWxS'@; put 'ZXNvbHZlcj1vfSl9b25Db25maXJtTW9kYWxSZXN1bHQocil7Y29uc3QgaT10aGlzLmNvbmZpcm1Nb2RhbFJlc29sdmVyO3RoaXMuY29uZmlybU1vZGFsUmVzb2x2ZXI9bnVsbCx0aGlzLmNvbmZpcm1Nb2RhbD17Li4udGhpcy5jb25maXJtTW9kYWwsb3BlbjohMX0saSYmaShyKX1ob3RDbGlj'@; put 'a2VkKCl7MT09PXRoaXMudGltZXNDbGlja2VkJiZ0aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmVkaXRUYWJsZSgpLDA9PT10aGlzLnRpbWVzQ2xpY2tlZCYmKHRoaXMudGltZXNDbGlja2VkKyssc2V0VGltZW91dCgoKT0+e3RoaXMudGltZXNDbGlja2VkPTB9LDIwMCkpfWNsZWFuRXhj'@; put 'ZWVkKCl7dGhpcy5leGNlZWRDZWxscz1bXX1hcHByb3ZlcnNUb2dnbGUoKXt0aGlzLnNob3dBcHByb3ZlcnM9IXRoaXMuc2hvd0FwcHJvdmVyc31hZGRSb3coKXt0aGlzLmFkZGluZ05ld1Jvdz0hMCxzZXRUaW1lb3V0KCgpPT57Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlLGk9dGhpcy5kYXRh'@; put 'U291cmNlLmxlbmd0aDtyLmFsdGVyKCJpbnNlcnRfcm93X2JlbG93IixpLTEsMSksdGhpcy5kYXRhU291cmNlW2ldJiYodGhpcy5kYXRhU291cmNlW2ldLm5vTGlua09wdGlvbj0hMCksdGhpcy5zZWVkRm9ybXVsYVZhbHVlc0ZvclJvdyhpKSx0aGlzLnVwZGF0ZUVkaXRTdGF0dXNGb3JSb3co'@; put 'aSksci5zZWxlY3RDZWxsKGksMCksci5yZW5kZXIoKSx0aGlzLmFkZGluZ05ld1Jvdz0hMSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKX0pfWluc2VydFJvd0F0UG9zaXRpb24ocil7Y29uc3QgaT10aGlzLmhvdEluc3RhbmNlO3RoaXMuYWRkaW5nTmV3Um93PSEwLGkuYWx0ZXIo'@; put 'Imluc2VydF9yb3dfYWJvdmUiLHIsMSksdGhpcy5hZGRpbmdOZXdSb3c9ITEsdGhpcy5kYXRhU291cmNlW3JdLm5vTGlua09wdGlvbj0hMCx0aGlzLnNlZWRGb3JtdWxhVmFsdWVzRm9yUm93KHIpLHRoaXMudXBkYXRlRWRpdFN0YXR1c0ZvclJvdyhyKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRp'@; put 'b25WYWx1ZXMoKX1zZWVkRm9ybXVsYVZhbHVlc0ZvclJvdyhyKXtjb25zdCBpPXRoaXMuZGNWYWxpZGF0b3I/LmdldERxRGV0YWlscygpO2lmKCFpfHwhKG49Pm4uc29tZShlPT4iSEFSREZPUk1VTEEiPT09ZS5SVUxFX1RZUEV8fCJTT0ZURk9STVVMQSI9PT1lLlJVTEVfVFlQRSkpKGkpKXJl'@; put 'dHVybjtjb25zdCBvPXRoaXMuaG90SW5zdGFuY2UsYT10aGlzLnVzZXJTZXJ2aWNlLnVzZXI/LnVzZXJuYW1lPz8iIixsPWkuZmlsdGVyKHU9PiJIQVJERk9STVVMQSI9PT11LlJVTEVfVFlQRXx8IlNPRlRGT1JNVUxBIj09PXUuUlVMRV9UWVBFKTtmb3IoY29uc3QgdSBvZiBsKXtjb25zdCBn'@; put 'PXV6ZSh1LlJVTEVfVkFMVUUse2NvbHVtbk5hbWVzOnRoaXMuaGVhZGVyQ29sdW1ucyxyb3dJbmRleDpyLHVzZXJOYW1lOmEsb3JpZ1ZhbHVlOnZvaWQgMH0pO28uc2V0RGF0YUF0Um93UHJvcChyLHUuQkFTRV9DT0wsZyl9fWdldEZvcm11bGFCYXNlQ29scygpe2NvbnN0IHI9dGhpcy5kY1Zh'@; put 'bGlkYXRvcj8uZ2V0RHFEZXRhaWxzKCk7cmV0dXJuIHI/ZHplKHIpOltdfW92ZXJsYXlGb3JtdWxhUmF3VmFsdWVzT25VbmNoYW5nZWQocil7Y29uc3QgaT10aGlzLmdldEZvcm11bGFCYXNlQ29scygpOzA9PT1pLmxlbmd0aHx8IXRoaXMuZGF0YVNvdXJjZVJhd3x8ci5mb3JFYWNoKChvLGEp'@; put 'PT57Y29uc3QgbD10aGlzLmRhdGFTb3VyY2VSYXdbYV07aWYobClmb3IoY29uc3QgdSBvZiBpKXtjb25zdCBnPWxbdV07bnVsbD09Z3x8IiI9PT1nfHwob1t1XT1nKX19KX1nZXRSZXZlcnRhYmxlQ29sdW1uTmFtZXMoKXtjb25zdCByPXRoaXMuZGNWYWxpZGF0b3I/LmdldERxRGV0YWlscygp'@; put 'O3JldHVybiByPygobixlKT0+e2NvbnN0IHQ9bmV3IFNldChkemUobikpLHI9bmV3IFNldChuLmZpbHRlcihpPT4oIkhBUkRGT1JNVUxBIj09PWkuUlVMRV9UWVBFfHwiU09GVEZPUk1VTEEiPT09aS5SVUxFX1RZUEUpJiYhdC5oYXMoaS5CQVNFX0NPTCkpLm1hcChpPT5pLkJBU0VfQ09MKSk7'@; put 'cmV0dXJuIGUuZmlsdGVyKGk9PmkhPT1fZ2UuZGF0YSYmIkRlbGV0ZT8iIT09aSYmaSE9PU1tJiYhci5oYXMoaSkpfSkocix0aGlzLmhlYWRlckNvbHVtbnMpOltdfXN5bmNPdmVyd3JpdHRlbkNvbW1lbnRGb3JDZWxsKHIsaSl7Y29uc3Qgbz10aGlzLmhvdEluc3RhbmNlLGE9dGhpcy5kYXRh'@; put 'U291cmNlW3JdO2lmKCFhfHwhdGhpcy5kYXRhU291cmNlUmF3KXJldHVybjtjb25zdCBsPXRoaXMuZGF0YVNvdXJjZVJhdy5maW5kKHZlPT50aGlzLmhlYWRlclBrcy5ldmVyeShNZT0+dmVbTWVdPT09YVtNZV0pKTtpZighbClyZXR1cm47Y29uc3QgdT1vLnRvVmlzdWFsUm93KHIpO2lmKG51'@; put 'bGw9PT11KXJldHVybjtjb25zdCBnPW8ucHJvcFRvQ29sKGkpLEU9by5nZXRQbHVnaW4oImNvbW1lbnRzIiksTz1vLmdldERhdGFBdFJvd1Byb3AodSxpKSxaPSEhRS5nZXRDb21tZW50QXRDZWxsKHUsZyksZWU9KChuLGUsdCk9Pm51bGwhPWUmJiIiIT09ZSYmU3RyaW5nKGUpIT09U3RyaW5n'@; put 'KG4pP3Q/Im5vbmUiOiJzZXQiOnQ/InJlbW92ZSI6Im5vbmUiKShPLGxbaV0sWik7InNldCI9PT1lZT9FLnNldENvbW1lbnRBdENlbGwodSxnLGAke2UuT1JJR0lOQUxfVkFMVUVfQ09NTUVOVF9QUkVGSVh9JHtsW2ldfWApOiJyZW1vdmUiPT09ZWUmJkUucmVtb3ZlQ29tbWVudEF0Q2VsbCh1'@; put 'LGcpfXN5bmNPdmVyd3JpdHRlbkNvbW1lbnRzKCl7Y29uc3Qgcj10aGlzLmdldFJldmVydGFibGVDb2x1bW5OYW1lcygpOzA9PT1yLmxlbmd0aHx8IXRoaXMuZGF0YVNvdXJjZVJhd3x8dGhpcy5kYXRhU291cmNlLmZvckVhY2goKGksbyk9Pntmb3IoY29uc3QgYSBvZiByKXRoaXMuc3luY092'@; put 'ZXJ3cml0dGVuQ29tbWVudEZvckNlbGwobyxhKX0pfW1hcmtPdmVyd3JpdHRlbkNlbGxzKCl7dGhpcy5zeW5jT3ZlcndyaXR0ZW5Db21tZW50cygpO2NvbnN0IHI9dGhpcy5ob3RJbnN0YW5jZSxpPXRoaXMuZ2V0UmV2ZXJ0YWJsZUNvbHVtbk5hbWVzKCk7aWYoMD09PWkubGVuZ3RofHwhdGhp'@; put 'cy5kYXRhU291cmNlUmF3KXJldHVybjtjb25zdCBhPSgobixlLHQscik9Pntjb25zdCBpPVtdO3JldHVybiBuLmZvckVhY2goKG8sYSk9Pntjb25zdCBsPWUuZmluZCh1PT5yLmV2ZXJ5KGc9PnVbZ109PT1vW2ddKSk7aWYobClmb3IoY29uc3QgdSBvZiB0KXtjb25zdCBnPWxbdV07aWYobnVs'@; put 'bD09Z3x8IiI9PT1nKWNvbnRpbnVlO2NvbnN0IEU9b1t1XTtTdHJpbmcoZykhPT1TdHJpbmcoRSkmJmkucHVzaCh7cm93SW5kZXg6YSxjb2w6dSxvcmlnaW5hbFZhbHVlOmd9KX19KSxpfSkodGhpcy5kYXRhU291cmNlLm1hcCgodSxnKT0+KHsuLi51LC4uLk9iamVjdC5mcm9tRW50cmllcyhp'@; put 'Lm1hcChFPT5bRSxyLmdldERhdGFBdFJvd1Byb3AoZyxFKV0pKX0pKSx0aGlzLmRhdGFTb3VyY2VSYXcsaSx0aGlzLmhlYWRlclBrcyksbD1uZXcgU2V0KGEubWFwKHU9PnUucm93SW5kZXgpKTtsLnNpemU+MCYmc2V0VGltZW91dCgoKT0+e2Zvcihjb25zdCB1IG9mIGwpci5zZXREYXRhQXRS'@; put 'b3dQcm9wKHUsTW0sIk0iLCJlZGl0U3RhdHVzIil9LDApfXJlc29sdmVQa0Zvcm11bGFTZWVkVmFsdWVzKCl7Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlLGk9X3EodGhpcy5kY1ZhbGlkYXRvcj8uZ2V0RHFEZXRhaWxzKCk/P1tdKSxvPXRoaXMuaGVhZGVyUGtzLmZpbHRlcihhPT5pLmluY2x1'@; put 'ZGVzKGEpKTswIT09by5sZW5ndGgmJnNldFRpbWVvdXQoKCk9Pnt0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoYSxsKT0+e2Zvcihjb25zdCB1IG9mIG8pe2NvbnN0IGc9ci5nZXREYXRhQXRSb3dQcm9wKGwsdSk7ci5zZXREYXRhQXRSb3dQcm9wKGwsdSxnLCJyZXNvbHZlUGtGb3JtdWxhIik7'@; put 'Y29uc3QgRT10aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQ/LltsXTtFJiYoRVt1XT1nKX19KX0sMCl9dXBkYXRlRWRpdFN0YXR1c0ZvclJvdyhyKXtjb25zdCBpPXRoaXMuZGF0YVNvdXJjZVtyXTtpZighaSlyZXR1cm47Y29uc3Qgbz11SyhpLHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZD8/dGhp'@; put 'cy5kYXRhU291cmNlLHRoaXMuaGVhZGVyUGtzKSxhPXRoaXMuaG90SW5zdGFuY2UudG9WaXN1YWxSb3cocik7bnVsbCE9PWEmJnRoaXMuaG90SW5zdGFuY2Uuc2V0RGF0YUF0Um93UHJvcChhLE1tLG8sImVkaXRTdGF0dXMiKX1jYW5jZWxTdWJtaXQoKXt0aGlzLmRhdGFTb3VyY2U9dGhpcy5o'@; put 'ZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2VCZWZvcmVTdWJtaXQpLHRoaXMuZGF0YVNvdXJjZUJlZm9yZVN1Ym1pdD1bXSx0aGlzLmhvdFRhYmxlLmRhdGE9dGhpcy5kYXRhU291cmNlO2NvbnN0IHI9dGhpcy5ob3RJbnN0YW5jZTt0aGlzLnVwZGF0ZVNldHRpbmdzU29y'@; put 'dFNhZmUoe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6Z0EodGhpcy5oZWFkZXJDb2x1bW5zLHRoaXMuY29scyx0aGlzLnVzZUxhYmVscyksY29sdW1uczp0aGlzLmNlbGxWYWxpZGF0aW9uLG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKGksbyl7cmV0dXJuIDA9PT1vPzYwOmk+NTAw'@; put 'PzUwMDppfX0sITEpLHIuc2VsZWN0Q2VsbCgwLDApLHIucmVuZGVyKCksci52YWxpZGF0ZVJvd3ModGhpcy5tb2RpZmVkUm93c0luZGV4ZXMpLHRoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpfWdldFJvd3NTdWJtaXR0aW5nQ291bnQoKXt0aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanND'@; put 'b25maWcoKS5kZWJ1ZyYmKHRoaXMubG9nZ2VyU2VydmljZS5sb2codGhpcy5kYXRhU291cmNlKSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCkpO2xldCByPTAsaT0wLG89MDt0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcz1bXSx0aGlzLmRhdGFNb2RpZmll'@; put 'ZD1bXTtmb3IobGV0IGE9MDthPHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7YSsrKXtjb25zdCBsPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlW2FdKTtzd2l0Y2godUsobCx0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQsdGhpcy5oZWFkZXJQa3MpKXtjYXNlIkQi'@; put 'OnRoaXMuZGF0YU1vZGlmaWVkLnB1c2gobCksaSsrO2JyZWFrO2Nhc2UiQSI6dGhpcy5kYXRhTW9kaWZpZWQucHVzaChsKSx0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcy5wdXNoKGEpLG8rKzticmVhaztjYXNlIk0iOnRoaXMuZGF0YU1vZGlmaWVkLnB1c2gobCksdGhpcy5tb2RpZmVkUm93c0lu'@; put 'ZGV4ZXMucHVzaChhKSxyKyt9fXRoaXMucm93c0NoYW5nZWQ9e3Jvd3NVcGRhdGVkOnIscm93c0RlbGV0ZWQ6aSxyb3dzQWRkZWQ6b319Y2xlYXJEdXBsaWNhdGVWYWxpZGF0aW9uKCl7Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlO2Zvcihjb25zdCBpIG9mIHRoaXMuZHVwbGljYXRlUGtJbmRl'@; put 'eGVzKWZvcihsZXQgbz0xO288PXRoaXMucmVhZE9ubHlGaWVsZHM7bysrKXtyLnJlbW92ZUNlbGxNZXRhKGksbywidmFsaWQiKSxyLnJlbW92ZUNlbGxNZXRhKGksbywiZHVwS2V5Iik7Y29uc3QgYT1yLmdldENlbGxNZXRhKGksbyk7aWYoYS5jbGFzc05hbWUpe2xldCBsO2w9QXJyYXkuaXNB'@; put 'cnJheShhLmNsYXNzTmFtZSk/YS5jbGFzc05hbWUuZmlsdGVyKHU9PiJkYy1pbnZhbGlkLWNlbGwiIT09dSkuam9pbigiICIpOmEuY2xhc3NOYW1lLnJlcGxhY2UoImRjLWludmFsaWQtY2VsbCIsIiIpLnRyaW0oKSxyLnNldENlbGxNZXRhKGksbywiY2xhc3NOYW1lIixsKX19dGhpcy5kdXBs'@; put 'aWNhdGVQa0luZGV4ZXM9W10sci5yZW5kZXIoKX12YWxpZGF0ZVByaW1hcnlLZXlzKCl7Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlO3RoaXMuY2xlYXJEdXBsaWNhdGVWYWxpZGF0aW9uKCk7Y29uc3QgaT10aGlzLmRhdGFTb3VyY2U7dGhpcy5wa0ZpZWxkcz1bXTtmb3IobGV0IGw9MDtsPGku'@; put 'bGVuZ3RoO2wrKyl7bGV0IHU9IiI7Zm9yKGxldCBnPTE7Zzx0aGlzLnJlYWRPbmx5RmllbGRzKzE7ZysrKXU9dSsifCIrKGlbbF1bdGhpcy5oZWFkZXJDb2x1bW5zW2ddXXx8IiIpO3RoaXMucGtGaWVsZHMucHVzaCh1KX1jb25zdCBvPVtdO2lmKHRoaXMucGtGaWVsZHMubGVuZ3RoPjApZm9y'@; put 'KGxldCBsPTA7bDx0aGlzLnBrRmllbGRzLmxlbmd0aDtsKyspZm9yKGxldCB1PTA7dTx0aGlzLnBrRmllbGRzLmxlbmd0aDt1KyspdGhpcy5wa0ZpZWxkc1tsXT09PXRoaXMucGtGaWVsZHNbdV0mJnUhPT1sJiYifCIhPT10aGlzLnBrRmllbGRzW2xdJiZvLnB1c2godSk7Zm9yKGxldCBsPTA7'@; put 'bDxpLmxlbmd0aDtsKyspZm9yKGxldCB1PTA7dTx0aGlzLmhlYWRlckNvbHVtbnMubGVuZ3RoO3UrKyl7Y29uc3QgZz1yLmdldENlbGxNZXRhKGwsdSk7ZyYmKGcudmFsaWQ9ITAsZy5kdXBLZXk9ITEpfWZvcihsZXQgbD0wO2w8by5sZW5ndGg7bCsrKWZvcihsZXQgdT0xO3U8dGhpcy5yZWFk'@; put 'T25seUZpZWxkcysxO3UrKylyLnNldENlbGxNZXRhKG9bbF0sdSwidmFsaWQiLCExKSxyLnNldENlbGxNZXRhKG9bbF0sdSwiZHVwS2V5IiwhMCksci5zZXRDZWxsTWV0YShvW2xdLHUsImNsYXNzTmFtZSIsImRjLWludmFsaWQtY2VsbCIpO3RoaXMuZHVwbGljYXRlUGtJbmRleGVzPVsuLi5u'@; put 'ZXcgU2V0KG8uc29ydCgpKV0sci5yZW5kZXIoKX1yZVNldENlbGxWYWxpZGF0aW9uVmFsdWVzKHI9ITEsaSl7Y29uc3Qgbz10aGlzLmhvdEluc3RhbmNlO2Zvcihjb25zdCBhIG9mIHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Upe2NvbnN0IGw9YS52YWx1ZXMubWFwKHU9PnUuUkFXX1ZBTFVF'@; put 'KTtvLmJhdGNoKCgpPT57Y29uc3QgdT1vLmdldENlbGxNZXRhKGEucm93LGEuY29sKSxnPXRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUodS5kYXRhfHwiIik7bGV0IEU7ZyYmKEU9dGhpcy5kY1ZhbGlkYXRvcj8uZ2V0RHFEcm9wZG93blNvdXJjZShnKSksRXx8KEU9W10pO2NvbnN0IE89Wy4u'@; put 'Lm5ldyBTZXQoWy4uLkUsLi4ubF0pXTt0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKGEuY29sLHtzb3VyY2U6T30pLG8uc2V0Q2VsbE1ldGEoYS5yb3csYS5jb2wsInNvdXJjZSIsTyksYS52YWx1ZXMubGVuZ3RoPjAmJihvLnNldENlbGxNZXRhKGEucm93LGEu'@; put 'Y29sLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLG8uc2V0Q2VsbE1ldGEoYS5yb3csYS5jb2wsImVkaXRvciIsImF1dG9jb21wbGV0ZS5jdXN0b20iKSxvLnNldENlbGxNZXRhKGEucm93LGEuY29sLCJzdHJpY3QiLGEuc3RyaWN0KSxvLnNldENlbGxNZXRhKGEucm93LGEuY29sLCJmaWx0'@; put 'ZXIiLCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKGEuY29sLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZS5jdXN0b20iLHN0cmljdDphLnN0cmljdCxmaWx0ZXI6ITF9KSksdGhpcy5yZVNldEV4dGVuZGVkQ2VsbFZh'@; put 'bGlkYXRpb25WYWx1ZXMoYSx2b2lkIDAscixpKSxvLnJlbmRlcigpfSl9fXJlU2V0RXh0ZW5kZWRDZWxsVmFsaWRhdGlvblZhbHVlcyhyLGksbz0hMSxhKXtpZihyKXtpfHwoaT1yLnJvdyk7Y29uc3QgdT10aGlzLmdldEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUocik7cmV0dXJuIHZvaWQg'@; put 'dGhpcy5zZXRFeHRlbmRlZFZhbHVlc1RvQ2VsbHMocixpLHUsbyxhKX1mb3IoY29uc3QgdSBvZiB0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlKXtjb25zdCBnPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZSh1KTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyh1LHUucm93'@; put 'LGcsbyxhKX19c2V0RXh0ZW5kZWRWYWx1ZXNUb0NlbGxzKHIsaSxvLGE9ITEsbCl7Y29uc3QgdT10aGlzLmhvdEluc3RhbmNlLGc9W107Zm9yKGNvbnN0IEUgb2YgbylnLmluZGV4T2YoRS5FWFRSQV9DT0xfTkFNRSk8MCYmZy5wdXNoKEUuRVhUUkFfQ09MX05BTUUpO2Zvcihjb25zdCBFIG9m'@; put 'IGcpe2NvbnN0IE89by5maWx0ZXIoQ3Q9PkN0LkVYVFJBX0NPTF9OQU1FPT09RSk7bGV0IFo9Ty5tYXAoQ3Q9PiJDIj09PUN0LkRJU1BMQVlfVFlQRT9DdC5SQVdfVkFMVUVfQ0hBUjpDdC5SQVdfVkFMVUVfTlVNKTtjb25zdCBlZT11LnByb3BUb0NvbChFKTt0aGlzLmRpc2FibGVkQmFzaWNE'@; put 'eW5hbWljQ2VsbFZhbGlkYXRpb25NYXAuZmluZChDdD0+Q3Qucm93PT09aSYmQ3QuY29sPT09ZWUpfHx0aGlzLmRpc2FibGVkQmFzaWNEeW5hbWljQ2VsbFZhbGlkYXRpb25NYXAucHVzaCh7cm93OmksY29sOmVlLGFjdGl2ZTohMX0pLHUuc2V0Q2VsbE1ldGEoaSxlZSwicmVuZGVyZXIiLCJh'@; put 'dXRvY29tcGxldGUiKSx1LnNldENlbGxNZXRhKGksZWUsImVkaXRvciIsImF1dG9jb21wbGV0ZS5jdXN0b20iKSx1LnNldENlbGxNZXRhKGksZWUsInN0cmljdCIsci5zdHJpY3QpLHUuc2V0Q2VsbE1ldGEoaSxlZSwiZmlsdGVyIiwhMSksdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRv'@; put 'cj8udXBkYXRlUnVsZShlZSx7cmVuZGVyZXI6ImF1dG9jb21wbGV0ZSIsZWRpdG9yOiJhdXRvY29tcGxldGUuY3VzdG9tIixzdHJpY3Q6ci5zdHJpY3QsZmlsdGVyOiExfSk7Y29uc3QgTWU9dS5nZXRDZWxsTWV0YShpLGVlKSxIZT10aGlzLmRjVmFsaWRhdG9yPy5nZXRSdWxlKE1lLmRhdGF8'@; put 'fCIiKTtsZXQgV2U7SGUmJihXZT10aGlzLmRjVmFsaWRhdG9yPy5nZXREcURyb3Bkb3duU291cmNlKEhlKSksV2V8fChXZT1bXSksIm51bWVyaWMiPT09SGU/LnR5cGU/KFdlPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMoV2UsIm51bWJlciIpLFo9dGhpcy5oZWxwZXJT'@; put 'ZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhaLCJudW1iZXIiKSk6KFdlPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMoV2UsInN0cmluZyIpLFo9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhaLCJzdHJpbmciKSk7Y29uc3QgYXQ9Wy4uLm5ldyBT'@; put 'ZXQoWy4uLldlLC4uLlpdKV07aWYodS5zZXRDZWxsTWV0YShpLGVlLCJzb3VyY2UiLGF0KSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKGVlLHtzb3VyY2U6YXR9KSxhKXtpZihsJiZsIT09aSlyZXR1cm47Y29uc3QgQ3Q9Ty5maW5kKEF0PT4xPT09QXQuRk9S'@; put 'Q0VEX1ZBTFVFKTtDdCYmc2V0VGltZW91dCgoKT0+e3Uuc2V0RGF0YUF0Q2VsbChpLGVlLCJDIj09PUN0LkRJU1BMQVlfVFlQRT9DdC5SQVdfVkFMVUVfQ0hBUjpDdC5SQVdfVkFMVUVfTlVNLCJmb3JjZV9jZWxsX3ZhbGlkYXRpb25fdmFsdWUiKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5k'@; put 'ZXg9PT1pJiYodGhpcy5kYXRhU291cmNlW3RoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleF1bRV09IkMiPT09Q3QuRElTUExBWV9UWVBFP0N0LlJBV19WQUxVRV9DSEFSOkN0LlJBV19WQUxVRV9OVU0pfSl9fX1nZXRFeHRlbmRlZFZhbHVlc0J5Q2VsbFZhbHVlKHIsaSl7Y29uc3QgYT10aGlz'@; put 'LmhvdEluc3RhbmNlLmdldERhdGFBdENlbGwoaXx8ci5yb3csci5jb2wpLGw9KHIudmFsdWVzLmZpbmQodT0+dS5SQVdfVkFMVUU9PT1hKXx8e30pLkRJU1BMQVlfSU5ERVg7cmV0dXJuIHIuZXh0ZW5kZWRfdmFsdWVzPy5maWx0ZXIodT0+dS5ESVNQTEFZX0lOREVYPT09bCl8fFtdfWNoZWNr'@; put 'U2F2ZSgpe2lmKHRoaXMuZ2V0Um93c1N1Ym1pdHRpbmdDb3VudCgpLDA9PT10aGlzLnJvd3NDaGFuZ2VkLnJvd3NBZGRlZCYmMD09PXRoaXMucm93c0NoYW5nZWQucm93c1VwZGF0ZWQmJjA9PT10aGlzLnJvd3NDaGFuZ2VkLnJvd3NEZWxldGVkKXJldHVybiB0aGlzLmJhZEVkaXRUaXRsZT0i'@; put 'Tm8gY2hhbmdlcyB0byBzdWJtaXQiLHRoaXMuYmFkRWRpdENhdXNlPSJQbGVhc2UgbW9kaWZ5IHNvbWUgdmFsdWVzIGFuZCB0cnkgYWdhaW4uIix2b2lkKHRoaXMuYmFkRWRpdD0hMCk7Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlO3RoaXMuZGF0YVNvdXJjZUJlZm9yZVN1Ym1pdD10aGlzLmhl'@; put 'bHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZSk7Zm9yKGxldCBpPTA7aTx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoO2krKylkZWxldGUgdGhpcy5kYXRhU291cmNlW2ldLm5vTGlua09wdGlvbjtmb3IoO3RoaXMuZGF0YVNvdXJjZS5sZW5ndGg+MDspe2NvbnN0IGk9dGhpcy5k'@; put 'YXRhU291cmNlW3RoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMV07aWYoIU9iamVjdC5rZXlzKGkpLmV2ZXJ5KGE9PiJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iPT09YXx8YT09PU1tfHwhaVthXXx8IiI9PT1pW2FdKSlicmVhazt0aGlzLmRhdGFTb3VyY2UucG9wKCl9aWYodGhpcy51'@; put 'cGRhdGVTZXR0aW5nc1NvcnRTYWZlKHtkYXRhOnRoaXMuZGF0YVNvdXJjZSxjb2xIZWFkZXJzOmdBKHRoaXMuaGVhZGVyQ29sdW1ucyx0aGlzLmNvbHMsdGhpcy51c2VMYWJlbHMpLGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixtb2RpZnlDb2xXaWR0aDpmdW5jdGlvbihpLG8pe3JldHVy'@; put 'biBpPjUwMD81MDA6aX19LCExKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKSxlLmNudD0wLGUubm9uUGtDbnQ9MCx0aGlzLnZhbGlkYXRlUHJpbWFyeUtleXMoKSwwIT09dGhpcy5kdXBsaWNhdGVQa0luZGV4ZXMubGVuZ3RoKXJldHVybiB0aGlzLnBrRHVwcz0hMCx0aGlzLnN1'@; put 'Ym1pdD0hMSx2b2lkIHRoaXMuY2FuY2VsU3VibWl0KCk7dGhpcy5wa0R1cHM9ITEsci52YWxpZGF0ZVJvd3ModGhpcy5tb2RpZmVkUm93c0luZGV4ZXMsKCk9Pnt0aGlzLmNoZWNrSW52YWxpZCgpP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIlZhbGlkYXRpb24gZXJyb3IiLCJJ'@; put 'bnZhbGlkIFZhbHVlcyBhcmUgUHJlc2VudCIpOih0aGlzLnN1Ym1pdD0hMCx0aGlzLnZhbGlkYXRpb25Eb25lPTEsc2V0VGltZW91dCgoKT0+e2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1GaWVsZHNfOCIpO2kmJmkuZm9jdXMoKX0sMjAwKSl9KX1zYXZlVGFibGUocil7'@; put 'dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc3Qgbz1pLmhvdEluc3RhbmNlLGE9KGkuZGNWYWxpZGF0b3I/LmdldERxRGV0YWlscygpPz9bXSkuZmlsdGVyKHU9PiJIQVJERk9STVVMQSI9PT11LlJVTEVfVFlQRXx8IlNPRlRGT1JNVUxBIj09PXUuUlVMRV9UWVBFKTthLmxl'@; put 'bmd0aD4wJiZyLmZvckVhY2goKHUsZyk9Pntjb25zdCBFPW8udG9WaXN1YWxSb3coZyk7Zm9yKGNvbnN0IE8gb2YgYSl1W08uQkFTRV9DT0xdPW8uZ2V0RGF0YUF0Um93UHJvcChFLE8uQkFTRV9DT0wpfSk7Y29uc3QgbD1fcShpLmRjVmFsaWRhdG9yPy5nZXREcURldGFpbHMoKT8/W10pO2lm'@; put 'KHIuZm9yRWFjaCgodSxnKT0+e2NvbnN0IEU9by50b1Zpc3VhbFJvdyhnKSxPPXF4KHUsaS5oZWFkZXJQa3MpO2Zvcihjb25zdCBaIG9mIGkuaGVhZGVyQ29sdW1ucylsLmluY2x1ZGVzKFopfHwoeGdlKGkuYXV0b0VzY2FwZWRDZWxscyxPLFopP3VbWl09Q3plKHVbWl0pOiJzdHJpbmciPT10'@; put 'eXBlb2YgdVtaXSYmdVtaXS5zdGFydHNXaXRoKCI9IikmJih1W1pdPW8uZ2V0RGF0YUF0Um93UHJvcChFLFopKSl9KSxyPShyPXIuZmlsdGVyKHU9PiEhaS5kYXRhTW9kaWZpZWQuZmluZChFPT57Zm9yKGNvbnN0IE8gb2YgaS5oZWFkZXJQa3MpaWYoRVtPXSE9PXVbT10pcmV0dXJuITE7cmV0'@; put 'dXJuITB9KSkpLm1hcCh1PT57Y29uc3QgZz11Ll9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXztyZXR1cm4gZGVsZXRlIHUuX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fLHUuX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fPWcsZGVsZXRlIHVbTW1dLE9iamVjdC5rZXlz'@; put 'KHUpLm1hcChFPT57Im51bWVyaWMiPT09aS5kY1ZhbGlkYXRvcj8uZ2V0UnVsZShFKT8udHlwZSYmIi4iPT09dVtFXSYmKHVbRV09bnVsbCl9KSx1fSksaS5sb2dnZXJTZXJ2aWNlLmxvZygiRGF0YSBzdWJtaXR0ZWQiLHIpLGkuY2hlY2tJbnZhbGlkKCkpcmV0dXJuIGkuZXZlbnRTZXJ2aWNl'@; put 'LnNob3dJbmZvTW9kYWwoIlZhbGlkYXRpb24gZXJyb3IiLCJJbnZhbGlkIFZhbHVlcyBhcmUgUHJlc2VudCIpLGkuY2FuY2VsU3VibWl0KCksdm9pZChpLnN1Ym1pdD0hMSk7aWYoaS52YWxpZGF0aW9uRG9uZT0wLGkuc2F2ZUxvYWRpbmc9ITAsZS5jbnQ8MSYmMD09PWkuZHVwbGljYXRlUGtJ'@; put 'bmRleGVzLmxlbmd0aCYmZS5ub25Qa0NudDwxKXtpLnNhdmVMb2FkaW5nPSEwLGkuZGlzYWJsZVN1Ym1pdD0hMSxpLnN1Ym1pdD0hMDtjb25zdCB1PXtBQ1RJT046IkxPQUQifTtpZihpLm1lc3NhZ2U9bHplKGkubWVzc2FnZS5yZXBsYWNlKC9cbi9nLCIuICIpKSx1Lk1FU1NBR0U9aS5tZXNz'@; put 'YWdlLHUuTElCRFM9aS5saWJkcyxpLmNvbHMpe2NvbnN0IGc9ci5zbGljZSgwLGkubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0KTtpZih5aWVsZCBpLnNhc1N0b3JlU2VydmljZS51cGRhdGVUYWJsZSh1LGcsIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvc3RhZ2VkYXRh'@; put 'IixpLiRkYXRhRm9ybWF0cykudGhlbihPPT57aWYodHlwZW9mIE8uYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFtczwidSIpcmV0dXJuIGkucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK08uYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFtc1swXS5EU0lEKSwhMDtsZXQgWj0iU3VibWl0IHJl'@; put 'cXVlc3QgZmFpbGVkIjtPJiYoWis9YFxuJHsic3RyaW5nIj09dHlwZW9mIE8/TzpKU09OLnN0cmluZ2lmeShPKX1gKSxpLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgiZWRpdG9ycy9zdGFnZWRhdGEiLFosbnVsbCwiU3VibWl0IGVycm9yIil9KS5jYXRjaChPPT57Y29uc29sZS5sb2co'@; put 'ImVyciIsTyksZS5jbnQ9MCxlLm5vblBrQ250PTAsaS5kaXNhYmxlU3VibWl0PSEwLGkuc3VibWl0PSExO2NvbnN0IFo9InN0cmluZyI9PXR5cGVvZiBPLmFkYXB0ZXJSZXNwbnNlP08uYWRhcHRlclJlc3Buc2U6SlNPTi5zdHJpbmdpZnkoTy5hZGFwdGVyUmVzcG5zZSk7cmV0dXJuIGkuZXZl'@; put 'bnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCJlZGl0b3JzL3N0YWdlZGF0YSIsYFN1Ym1pdCByZXF1ZXN0IGZhaWxlZFxuJHtafWAsbnVsbCwiU3VibWl0IGVycm9yIiksITF9KSlyZXR1cm59fWUuY250Pj0xPyhpLnBrTnVsbD0hMCxpLnN1Ym1pdD0hMCk6aS5zdWJtaXQ9ITEsZS5ub25Qa0Nu'@; put 'dD49MT8oaS5ub1BrTnVsbD0hMCxpLnN1Ym1pdD0hMCk6aS5zdWJtaXQ9ITEsaS5jYW5jZWxTdWJtaXQoKSxlLmNudD0wLGUubm9uUGtDbnQ9MCxpLmRpc2FibGVTdWJtaXQ9ITB9KSgpfXZhbGlkYXRvclJ1bGVTb3VyY2Uocil7cmV0dXJuIHRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUocil9'@; put 'Y2hlY2tJbnZhbGlkKCl7aWYoIXRoaXMuaG90VGFibGVDb21wb25lbnR8fCF0aGlzLmhvdFRhYmxlQ29tcG9uZW50LmhvdEluc3RhbmNlKXJldHVybiExO2NvbnN0IHI9dGhpcy5ob3RUYWJsZUNvbXBvbmVudC5ob3RJbnN0YW5jZS5yb290RWxlbWVudDtpZighcilyZXR1cm4hMTtjb25zdCBp'@; put 'PXIucXVlcnlTZWxlY3RvckFsbCgiLmh0SW52YWxpZCIpLG89ci5xdWVyeVNlbGVjdG9yQWxsKCIuZGMtaW52YWxpZC1jZWxsIik7cmV0dXJuIGkubGVuZ3RoPjB8fG8ubGVuZ3RoPjB9Z29Ub0VkaXRvcigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi8iKX1jbG9zZVJlY29yZEVkaXQo'@; put 'cil7dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PS0xLHRoaXMuY3VycmVudEVkaXRSZWNvcmQ9dm9pZCAwLHRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3I9dm9pZCAwLCJBREQiPT09dGhpcy5yZWNvcmRBY3Rpb24mJiFyJiYodGhpcy5kYXRhU291cmNlPXRoaXMuaGVscGVyU2Vy'@; put 'dmljZS5kZWVwQ2xvbmUodGhpcy5wcmV2RGF0YVNvdXJjZSksdGhpcy51cGRhdGVTZXR0aW5nc1NvcnRTYWZlKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpKX1jb25maXJtUmVjb3JkRWRpdChyPSEwKXtjb25zdCBpPXRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleDtyJiYodGhpcy5jdXJy'@; put 'ZW50RWRpdFJlY29yZEluZGV4PS0xKSx0aGlzLmNvbHVtbkhlYWRlci5tYXAobz0+e2NvbnN0IGE9dGhpcy5jdXJyZW50RWRpdFJlY29yZFtvXSxsPSJudW0iPT09dGhpcy4kZGF0YUZvcm1hdHM/LnZhcnNbb10/LnR5cGUsdT0oMCx5NC5pc1NwZWNpYWxNaXNzaW5nKShhKTtsJiYhaXNOYU4o'@; put 'YSkmJiF1JiYodGhpcy5jdXJyZW50RWRpdFJlY29yZFtvXT0xKmEpfSksdGhpcy5kYXRhU291cmNlW2ldPXRoaXMuY3VycmVudEVkaXRSZWNvcmQsdGhpcy5ob3RUYWJsZS5kYXRhW2ldPXRoaXMuY3VycmVudEVkaXRSZWNvcmQsdGhpcy51cGRhdGVTZXR0aW5nc1NvcnRTYWZlKHtkYXRhOnRo'@; put 'aXMuZGF0YVNvdXJjZX0sITEpLHImJih0aGlzLmN1cnJlbnRFZGl0UmVjb3JkPXZvaWQgMCl9b25OZXh0UmVjb3JkKCl7dGhpcy5jb25maXJtUmVjb3JkRWRpdCghMSksdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PXRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD49dGhpcy5kYXRhU291'@; put 'cmNlLmxlbmd0aC0xPzA6dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4KzEsdGhpcy5lZGl0UmVjb3JkKG51bGwsdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4KX1vblByZXZpb3VzUmVjb3JkKCl7dGhpcy5jb25maXJtUmVjb3JkRWRpdCghMSksdGhpcy5jdXJyZW50RWRpdFJlY29yZElu'@; put 'ZGV4PXRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleDw9MD90aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTE6dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4LTEsdGhpcy5lZGl0UmVjb3JkKG51bGwsdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4KX1hZGRSZWNvcmRCdXR0b25DbGljaygpe3Ro'@; put 'aXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUmVjb3JkP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2RhbCgiQWRkIFJlY29yZCIpOnRoaXMuYWRkRWRpdE5ld1JlY29yZCgpfWFkZEVkaXROZXdSZWNvcmQoKXt0aGlzLmFkZFJlY29yZCgpLHNldFRpbWVvdXQoKCk9Pnt0aGlz'@; put 'LmVkaXRSZWNvcmQobnVsbCx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsITApfSwxZTMpfWFkZFJlY29yZCgpe3RoaXMuYWRkUm93KCl9ZWRpdFJlY29yZChyLGksbyl7aWYodGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RFZGl0UmVjb3JkKXRoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGlt'@; put 'aXRNb2RhbCgiRWRpdCBSZWNvcmQiKTtlbHNlIGlmKCEodm9pZCAwPT09aXx8aTwwfHx0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEVkaXRSZWNvcmQpKXtpZih0aGlzLnJlY29yZEFjdGlvbj1vPyJBREQiOiJFRElUIix0aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmVkaXRUYWJsZSgh'@; put 'MSxvKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kY1ZhbGlkYXRvciksbyl0aGlzLnByZXZEYXRhU291cmNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSx0aGlzLnByZXZEYXRh'@; put 'U291cmNlLnBvcCgpO2Vsc2V7Y29uc3QgYT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuaG90SW5zdGFuY2UuZ2V0Q2VsbE1ldGFBdFJvdyhpKSk7Zm9yKGNvbnN0IGwgb2YgYSlpZihsKXtjb25zdCB1PWwucHJvcD8udG9TdHJpbmcoKTtkZWxldGUgbC5wcm9wLGRlbGV0ZSBs'@; put 'LmRhdGEsdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZShsLmNvbCx7Li4ubCxkYXRhOnV9KX19dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PWksdGhpcy5jdXJyZW50RWRpdFJlY29yZD10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNv'@; put 'dXJjZVtpXSl9fXRvZ2dsZUhvdFBsdWdpbihyLGkpe2NvbnN0IG89dGhpcy5ob3RJbnN0YW5jZSxhPW8uZ2V0UGx1Z2luKHIpO2E/c2V0VGltZW91dCgoKT0+e28uaXNEZXN0cm95ZWR8fHRoaXMuaG90SW5zdGFuY2UhPT1vfHwhYS5ob3R8fChpP2EuZW5hYmxlUGx1Z2luKCk6YS5kaXNhYmxl'@; put 'UGx1Z2luKCksby5yZW5kZXIoKSl9LDEwMCk6Y29uc29sZS53YXJuKCJUb2dnbGUgSG90IFBsdWdpbiBmYWlsZWQgLSBQbHVnaW4gbmFtZWQ6ICIrcisiIC0gY291bGQgbm90IGJlIGZvdW5kLiIpfWR5bmFtaWNDZWxsVmFsaWRhdGlvbkRpc2FibGVkKHIsaSl7cmV0dXJuISF0aGlzLmRpc2Fi'@; put 'bGVkQmFzaWNEeW5hbWljQ2VsbFZhbGlkYXRpb25NYXAuZmluZChhPT5hLnJvdz09PXImJmEuY29sPT09aSYmIWEuYWN0aXZlKX1keW5hbWljQ2VsbFZhbGlkYXRpb24ocixpLG8pe3ZhciBhPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKihsLHUsZyxFPSExKXtpZihhLmR5bmFtaWNDZWxsVmFs'@; put 'aWRhdGlvbkRpc2FibGVkKGwsdSkpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IE89YS5ob3RJbnN0YW5jZTtpZihPLmdldENlbGxNZXRhKGwsdSkucmVhZE9ubHkpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGVlPU8uZ2V0RGF0YUF0Q2VsbChsLHUpLHZlPWEuaGVscGVy'@; put 'U2VydmljZS5kZWVwQ2xvbmUoYS5kYXRhU291cmNlW2xdKSxNZT1PLmNvbFRvUHJvcCh1KSxIZT0hIWc/LnNraXBSZW5kZXIsV2U9YS52YWxpZGF0aW9uRXBvY2gsYXQ9YS5oZWxwZXJTZXJ2aWNlLmRlbGV0ZUtleXNBbmRIYXNoKHZlLFtNZSwibm9MaW5rT3B0aW9uIl0sITEpLEN0PWEuY2Vs'@; put 'bFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KEF0PT5BdC5oYXNoPT09YXQpO2lmKEN0Pi0xKXtjb25zdCBBdD1hLmNlbGxWYWxpZGF0aW9uU291cmNlW0N0XS5wZW5kaW5nO2lmKEF0JiYhRSl7dHJ5e3lpZWxkIEF0fWNhdGNoe31yZXR1cm4gV2UhPT1hLnZhbGlkYXRpb25FcG9jaD92b2lk'@; put 'IDA6YS5keW5hbWljQ2VsbFZhbGlkYXRpb24obCx1LGcsITApfX1pZihDdD4tMSl7bGV0IEF0PWEuY2VsbFZhbGlkYXRpb25Tb3VyY2VbQ3RdLnZhbHVlcy5tYXAoZ249PmduLlJBV19WQUxVRSk7Y29uc3QgS3Q9KE8uZ2V0Q2VsbE1ldGEobCx1KS5zb3VyY2V8fFtdKS5sZW5ndGg8MSxxdD0i'@; put 'ICIhPT1lZTtPLmJhdGNoKCgpPT57Y29uc3QgZ249Ty5nZXRDZWxsTWV0YShsLHUpLFRuPWEuZGNWYWxpZGF0b3I/LmdldFJ1bGUoZ24uZGF0YXx8IiIpO2xldCBDbjtUbiYmKENuPWEuZGNWYWxpZGF0b3I/LmdldERxRHJvcGRvd25Tb3VyY2UoVG4pKSxDbnx8KENuPVtdKSwibnVtZXJpYyI9'@; put 'PT1Ubj8udHlwZT8oQ249YS5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhDbiwibnVtYmVyIiksQXQ9YS5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhBdCwibnVtYmVyIikpOihDbj1hLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKENuLCJzdHJpbmci'@; put 'KSxBdD1hLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKEF0LCJzdHJpbmciKSk7Y29uc3QgcXI9Wy4uLm5ldyBTZXQoWy4uLkNuLC4uLkF0XSldO2lmKE8uc2V0Q2VsbE1ldGEobCx1LCJzb3VyY2UiLHFyKSxhLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxl'@; put 'KHUse3NvdXJjZTpxcn0pLGEuY2VsbFZhbGlkYXRpb25Tb3VyY2VbQ3RdLnZhbHVlcy5sZW5ndGg+MCl7Y29uc3QgJG49YS5jZWxsVmFsaWRhdGlvblNvdXJjZVtDdF0uc3RyaWN0O08uc2V0Q2VsbE1ldGEobCx1LCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLE8uc2V0Q2VsbE1ldGEobCx1'@; put 'LCJlZGl0b3IiLCJhdXRvY29tcGxldGUuY3VzdG9tIiksTy5zZXRDZWxsTWV0YShsLHUsInN0cmljdCIsJG4pLE8uc2V0Q2VsbE1ldGEobCx1LCJmaWx0ZXIiLCExKSxhLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKHUse3JlbmRlcmVyOiJhdXRvY29tcGxldGUiLGVk'@; put 'aXRvcjoiYXV0b2NvbXBsZXRlLmN1c3RvbSIsc3RyaWN0OiRuLGZpbHRlcjohMX0pfWEucmVTZXRFeHRlbmRlZENlbGxWYWxpZGF0aW9uVmFsdWVzKGEuY2VsbFZhbGlkYXRpb25Tb3VyY2VbQ3RdLGwsS3QmJnF0KSxIZXx8Ty5yZW5kZXIoKX0pfWVsc2UgaWYoQ3Q8MCl7Y29uc3QgQXQ9e1NB'@; put 'U0NvbnRyb2xUYWJsZTpbe2xpYmRzOmEubGliZHMsdmFyaWFibGVfbm06TWV9XSxzb3VyY2Vfcm93OltWbWUodmUpXX0sS3Q9YS5kY1ZhbGlkYXRvcj8uZ2V0RHFEZXRhaWxzKE1lKS5maW5kKHF0PT4iU09GVFNFTEVDVF9IT09LIj09PXF0LlJVTEVfVFlQRXx8IkhBUkRTRUxFQ1RfSE9PSyI9'@; put 'PT1xdC5SVUxFX1RZUEUpO2lmKEt0KXthLmNlbGxWYWxpZGF0aW9uU291cmNlLnB1c2goe3JvdzpsLGNvbDp1LHN0cmljdDoiSEFSRFNFTEVDVF9IT09LIj09PUt0LlJVTEVfVFlQRSx2YWx1ZXM6W10saGFzaDphdCxjb3VudDphLmNlbGxWYWxpZGF0aW9uU291cmNlLmxlbmd0aCsxfSksYS5j'@; put 'dXJyZW50RWRpdFJlY29yZExvYWRpbmdzLnB1c2godSk7Y29uc3QgcXQ9YCR7bH0sJHt1fWAsZ249SGU/bnVsbDpzZXRUaW1lb3V0KCgpPT57Ty5zZXRDZWxsTWV0YShsLHUsInJlbmRlcmVyIixiUXQpLGEucGVuZGluZ1NwaW5uZXJDZWxscy5hZGQocXQpLE8ucmVuZGVyKCl9LDE1MCksVG49'@; put 'YS5zYXNTZXJ2aWNlLnJlcXVlc3QoImVkaXRvcnMvZ2V0ZHluYW1pY2NvbHZhbHMiLEF0LHZvaWQgMCx7c3VwcHJlc3NTdWNjZXNzQWJvcnRNb2RhbDohMCxzdXBwcmVzc0Vycm9yQWJvcnRNb2RhbDohMH0pLnRoZW4oZnVuY3Rpb24oKXt2YXIgcXI9Q3IoZnVuY3Rpb24qKCRuKXtpZihnbiYm'@; put 'Y2xlYXJUaW1lb3V0KGduKSxhLnBlbmRpbmdTcGlubmVyQ2VsbHMuZGVsZXRlKHF0KSxXZSE9PWEudmFsaWRhdGlvbkVwb2NoKXtjb25zdCByaT1hLmNlbGxWYWxpZGF0aW9uU291cmNlLmZpbmRJbmRleChmbj0+Zm4uaGFzaD09PWF0KTtyZXR1cm4gdm9pZChyaT4tMSYmYS5jZWxsVmFsaWRh'@; put 'dGlvblNvdXJjZS5zcGxpY2UocmksMSkpfWNvbnN0IFRyPSRuLmFkYXB0ZXJSZXNwb25zZS5keW5hbWljX3ZhbHVlcy5tYXAocmk9PnJpLlJBV19WQUxVRSk7aWYoYS5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLnNwbGljZShhLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZih1'@; put 'KSwxKSxUci5sZW5ndGg+MCl7Y29uc3Qgcmk9YS5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kSW5kZXgoZm49PmZuLmhhc2g9PT1hdCk7cmk+LTEmJihhLmNlbGxWYWxpZGF0aW9uU291cmNlW3JpXT17Li4uYS5jZWxsVmFsaWRhdGlvblNvdXJjZVtyaV0scm93OmwsY29sOnUsdmFsdWVzOiRu'@; put 'LmFkYXB0ZXJSZXNwb25zZS5keW5hbWljX3ZhbHVlcyxleHRlbmRlZF92YWx1ZXM6JG4uYWRhcHRlclJlc3BvbnNlLmR5bmFtaWNfZXh0ZW5kZWRfdmFsdWVzLHBlbmRpbmc6dm9pZCAwfSkseWllbGQgbmV3IFByb21pc2UoZm49PnNldFRpbWVvdXQoKCk9PnthLnJlU2V0Q2VsbFZhbGlkYXRp'@; put 'b25WYWx1ZXMoITAsbCksSGV8fChPLnJlbmRlcigpLE8udmFsaWRhdGVSb3dzKFtsXSkpLGZuKCl9LDEwMCkpfWVsc2V7SGV8fChPLnNldENlbGxNZXRhKGwsdSwicmVuZGVyZXIiLFNnZSksTy5yZW5kZXIoKSk7Y29uc3Qgcmk9YS5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kSW5kZXgoZm49'@; put 'PmZuLmhhc2g9PT1hdCk7cmk+LTEmJihhLmNlbGxWYWxpZGF0aW9uU291cmNlW3JpXS5wZW5kaW5nPXZvaWQgMCl9aWYoYS5jZWxsVmFsaWRhdGlvblNvdXJjZS5sZW5ndGg+YS52YWxpZGF0aW9uVGFibGVMaW1pdCl7Y29uc3Qgcmk9YS5jZWxsVmFsaWRhdGlvblNvdXJjZS5yZWR1Y2UoKHly'@; put 'LEFuKT0+eXIuY291bnQ8QW4uY291bnQ/eXI6QW4pLGZuPWEuY2VsbFZhbGlkYXRpb25Tb3VyY2UuaW5kZXhPZihyaSk7YS5jZWxsVmFsaWRhdGlvblNvdXJjZS5zcGxpY2UoZm4sMSl9fSk7cmV0dXJuIGZ1bmN0aW9uKCRuKXtyZXR1cm4gcXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSku'@; put 'Y2F0Y2gocXI9PntnbiYmY2xlYXJUaW1lb3V0KGduKSxhLnBlbmRpbmdTcGlubmVyQ2VsbHMuZGVsZXRlKHF0KTtjb25zdCAkbj1hLmNlbGxWYWxpZGF0aW9uU291cmNlLmZpbmRJbmRleChUcj0+VHIuaGFzaD09PWF0KTthLmNlbGxWYWxpZGF0aW9uU291cmNlLnNwbGljZSgkbiwxKSxXZT09'@; put 'PWEudmFsaWRhdGlvbkVwb2NoJiYoSGV8fE8uYmF0Y2goKCk9PntPLnNldENlbGxNZXRhKGwsdSwicmVuZGVyZXIiLHlRdCksTy5yZW5kZXIoKX0pLGEuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5zcGxpY2UoYS5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLmluZGV4T2YodSksMSksYS5j'@; put 'dXJyZW50RWRpdFJlY29yZEVycm9ycy5wdXNoKHUpLHNldFRpbWVvdXQoKCk9PntIZXx8KE8uc2V0Q2VsbE1ldGEobCx1LCJyZW5kZXJlciIsU2dlKSxPLnJlbmRlcigpKSxhLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzLnNwbGljZShhLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzLmluZGV4T2Yo'@; put 'dSksMSl9LDNlMyksYS5yZVNldENlbGxWYWxpZGF0aW9uVmFsdWVzKCksYS5sb2dnZXJTZXJ2aWNlLmxvZygiZ2V0ZHluYW1pY2NvbHZhbHMgZXJyb3I6IixxcikpfSksQ249YS5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kSW5kZXgocXI9PnFyLmhhc2g9PT1hdCk7cmV0dXJuIENuPi0xJiYo'@; put 'YS5jZWxsVmFsaWRhdGlvblNvdXJjZVtDbl0ucGVuZGluZz1UbiksVG59fXJldHVybiBQcm9taXNlLnJlc29sdmUoKX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jaGVja0VtcHR5Um93V2hlbkZpbHRlcigpe3RoaXMuemVyb0ZpbHRlclJvd3M9ITEsdHlwZW9mIHRoaXMuZmlsdGVyX3BrPCJ1'@; put 'IiYmMT09PXRoaXMuaG90VGFibGUuZGF0YS5sZW5ndGgmJltudWxsLCIiXS5pbmNsdWRlcyh0aGlzLmhvdFRhYmxlLmRhdGFbMF1bdGhpcy5oZWFkZXJQa3NbMF1dKSYmKHRoaXMuemVyb0ZpbHRlclJvd3M9ITApfW9uUmVjb3JkSW5wdXRGb2N1cyhyKXt0aGlzLmR5bmFtaWNDZWxsVmFsaWRh'@; put 'dGlvbih0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgsci5jb2xOYW1lKX1leGVjdXRlRHluYW1pY0NlbGxWYWxpZGF0aW9uSWZBcHBsaWNhYmxlKHIsaSxvKXtjb25zdCBhPXRoaXMuaGVscGVyU2VydmljZS5kZWxldGVLZXlzQW5kSGFzaCh0aGlzLmRhdGFTb3VyY2Vbb10sW3IsIm5vTGlu'@; put 'a09wdGlvbiJdKSxsPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZCh1PT51Lmhhc2g9PT1hJiZpPT09dS5jb2wpO2lmKGwmJmwuZXh0ZW5kZWRfdmFsdWVzJiZsLmV4dGVuZGVkX3ZhbHVlcy5sZW5ndGg+MCl7Y29uc3QgdT10aGlzLmdldEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUo'@; put 'bCxvKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhsLG8sdSwhMCl9fWRhdGFzZXRJbmZvTW9kYWxSb3dDbGlja2VkKHIpe3ZvaWQgMCE9PXIuTE9BRF9SRUYmJnRoaXMucm91dGVyLm5hdmlnYXRlKFtgL3N0YWdlLyR7ci5MT0FEX1JFRn1gXSl9dmlld2JveE1hbmFnZXIoKXt0aGlz'@; put 'LnZpZXdib3hlcz0hMH1nZXQgdG90YWxSb3dzQ2hhbmdlZCgpe3JldHVybiB0aGlzLnJvd3NDaGFuZ2VkLnJvd3NVcGRhdGVkK3RoaXMucm93c0NoYW5nZWQucm93c0RlbGV0ZWQrdGhpcy5yb3dzQ2hhbmdlZC5yb3dzQWRkZWR9c2V0Q2VsbEZpbHRlcihyKXtjb25zdCBpPXRoaXMuaG90SW5z'@; put 'dGFuY2UuZ2V0U2VsZWN0ZWQoKTtpZighaSlyZXR1cm47Y29uc3Qgbz1pJiZpWzBdO2lmKG8pe2NvbnN0IGE9b1swXSx1PW9bMV07aWYoYT09PW9bMl0mJnU9PT1vWzNdKXtjb25zdCBFPXRoaXMuaG90SW5zdGFuY2UuZ2V0Q2VsbE1ldGEoYSx1KTtFJiZFLmZpbHRlcj09PSFyJiZ0aGlzLmhv'@; put 'dEluc3RhbmNlLnNldENlbGxNZXRhKGEsdSwiZmlsdGVyIixyKX19fW5nT25Jbml0KCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7ci5pc1ZhRW1iZWQmJnIuc3Vic2NyaWJlVG9WYU1lc3NhZ2VzKCksci51cGRhdGVIb3RUYWJsZVNldHRpbmdzKCksci5saWNlbmNlU2Vydmlj'@; put 'ZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKG89PntyLmhvdFRhYmxlLmxpY2Vuc2VLZXk9byxyLnVwZGF0ZUhvdFRhYmxlU2V0dGluZ3MoKX0pLHIuX3F1ZXJ5UGFyYW1zPXIucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKG89PntyLnVzZUxhYmVscz1DWmUobmV3IFVSTFNlYXJjaFBh'@; put 'cmFtcyhvKS50b1N0cmluZygpKSxyLmFwcGx5RGlzcGxheUNvbEhlYWRlcnMoKX0pLHIuX3F1ZXJ5PXIuc2FzU3RvcmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZShvPT57by5saWJkcz09PXIubGliZHMmJihyLndoZXJlU3RyaW5nPW8uc3RyaW5nLHIuY2xhdXNlcz1vLm9iail9KTtjb25zdCBp'@; put 'PXt9O3R5cGVvZiByLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW08InUiJiYoci5saWJkcz1yLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW0sci5maWx0ZXJfcGs9ci5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWQsImVkaXQtcmVjb3JkIj09PXIucm91dGUuc25hcHNob3Qu'@; put 'dXJsWzBdLnBhdGgmJihyLnJlY29yZEFjdGlvbj10eXBlb2Ygci5maWx0ZXJfcGs8InUiPyJFRElUIjoiQUREIiksaS5MSUJEUz1yLmxpYmRzLHR5cGVvZiByLmZpbHRlcl9wazwidSImJihpLkZJTFRFUl9SSz1wYXJzZUludChyLmZpbHRlcl9waykpLGkuT1VUREVTVD0iV0VCIixyLmxpYmRz'@; put 'JiYoVW4uZWRpdG9yLmxpYnJhcnk9ci5saWJkcy5zcGxpdCgiLiIpWzBdLFVuLmVkaXRvci50YWJsZT1yLmxpYmRzLnNwbGl0KCIuIilbMV0pKSwhKHlpZWxkIHIubWF5YmVEZWZlckluaXRpYWxWYUxvYWQoKSkmJnIubGliZHMmJihyLmdldGRhdGFFcnJvcj0hMSx5aWVsZCByLnNhc1N0b3Jl'@; put 'U2VydmljZS5jYWxsU2VydmljZShpLCJTQVNDb250cm9sVGFibGUiLCJlZGl0b3JzL2dldGRhdGEiLHIubGliZHMpLnRoZW4obz0+e3IuaW5pdFNldHVwKG8pfSkuY2F0Y2gobz0+e2NvbnNvbGUuZXJyb3IoImVkaXRvcnMvZ2V0ZGF0YSBmYWlsZWQ6IixvKSxyLmdldGRhdGFFcnJvcj0hMCxy'@; put 'LnRhYmxlVHJ1ZT0hMH0pKX0pKCl9bWF5YmVEZWZlckluaXRpYWxWYUxvYWQoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpZighci5pc1ZhRW1iZWR8fHR5cGVvZiByLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZDwidSIpcmV0dXJuITE7Y29uc3QgaT1yLnJvdXRl'@; put 'LnNuYXBzaG90LnBhcmFtcy5saWJNZW07aWYoIWkpcmV0dXJuITE7Y29uc3Qgbz1yLnZhTWVzc2FnaW5nLmxhdGVzdE1lc3NhZ2UoKTtpZighbylyZXR1cm4hMTtjb25zdCBhPXIudmFGaWx0ZXIuYnVpbGRJbml0aWFsQ2xhdXNlcyhvKTtpZigwPT09YS5sZW5ndGgpcmV0dXJuITE7dHJ5e2Nv'@; put 'bnN0IGw9eWllbGQgci5zYXNTdG9yZVNlcnZpY2Uuc2F2ZVF1ZXJ5KGksYSksdT1sPy5yZXN1bHQ/LlswXT8uRklMVEVSX1JLLGc9bD8ucmVzdWx0Py5bMF0/LkZJTFRFUl9UQUJMRTtyZXR1cm4gdm9pZCAwIT09dSYmdm9pZCAwIT09ZyYmKHIudmFNZXNzYWdpbmcuZmlsdGVyU2lnbmF0dXJl'@; put 'PXIudmFGaWx0ZXIuc2lnbmF0dXJlKGEpLHlpZWxkIHIucmVsb2FkRWRpdG9yUm91dGUoIi9lZGl0b3IvIitnKyIvIit1KSwhMCl9Y2F0Y2h7cmV0dXJuITF9fSkoKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnNjaGVkdWxlRmlsdGVyT3ZlcmZsb3dDaGVjaygpfXNjaGVkdWxlRmlsdGVy'@; put 'T3ZlcmZsb3dDaGVjaygpe2NvbnN0IHI9dGhpcy5pbmZvQmFyPy5uYXRpdmVFbGVtZW50O2lmKCFyKXJldHVybjtjb25zdCBpPXIucXVlcnlTZWxlY3RvcigiLmluZm9CYXItdGV4dCIpO2lmKCFpKXJldHVybjtjb25zdCBvPWAke3RoaXMucXVlcnlUZXh0fXwke2kuY2xpZW50V2lkdGh9fCR7'@; put 'dGhpcy5maWx0ZXJFeHBhbmRlZH1gO28hPT10aGlzLmZpbHRlck1lYXN1cmVkS2V5JiYodGhpcy5maWx0ZXJNZWFzdXJlZEtleT1vLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbHRlckV4cGFuZGVkfHwodGhpcy5maWx0ZXJPdmVyZmxvd3M9aS5zY3JvbGxXaWR0aD5pLmNsaWVudFdpZHRoKX0p'@; put 'KX10b2dnbGVGaWx0ZXJQYW5lbCgpe3RoaXMuZmlsdGVyRXhwYW5kZWQ9IXRoaXMuZmlsdGVyRXhwYW5kZWR9bmdBZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuZml4QXJpYUFjY2Vzc2liaWxpdHkoKX0sMWUzKSxzZXRUaW1lb3V0KCgpPT57aWYodGhpcy5ob3RUYWJsZUNv'@; put 'bXBvbmVudCYmdGhpcy5ob3RUYWJsZUNvbXBvbmVudC5ob3RJbnN0YW5jZSl7Y29uc3Qgcj10aGlzLmhvdFRhYmxlQ29tcG9uZW50LmhvdEluc3RhbmNlLnJvb3RFbGVtZW50O3ImJnIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixpPT57dGhpcy51cGxvYWRQcmV2aWV3fHx0aGlzLmhv'@; put 'dENsaWNrZWQoKSxzZXRUaW1lb3V0KCgpPT57Y29uc3Qgbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZGVidWctc3dpdGNoLWl0ZW0iKXx8dm9pZCAwO28mJm8uY2xpY2soKX0sMTAwKX0pfX0sMTAwKX1hcHBseURpc3BsYXlDb2xIZWFkZXJzKCl7aWYoIXRoaXMuaG90SW5zdGFuY2V8fCF0'@; put 'aGlzLmhlYWRlckNvbHVtbnMubGVuZ3RoKXJldHVybjtjb25zdCByPWdBKHRoaXMuaGVhZGVyQ29sdW1ucyx0aGlzLmNvbHMsdGhpcy51c2VMYWJlbHMpO3RoaXMudXBkYXRlU2V0dGluZ3NTb3J0U2FmZSh7Y29sSGVhZGVyczpyfSwhMSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9xdWVyeVBhcmFt'@; put 'cz8udW5zdWJzY3JpYmUoKSx0aGlzLmFyaWFPYnNlcnZlciYmKHRoaXMuYXJpYU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLmFyaWFPYnNlcnZlcj12b2lkIDApLHRoaXMuYXJpYUNoZWNrSW50ZXJ2YWwmJihjbGVhckludGVydmFsKHRoaXMuYXJpYUNoZWNrSW50ZXJ2YWwpLHRoaXMuYXJp'@; put 'YUNoZWNrSW50ZXJ2YWw9dm9pZCAwKSx0aGlzLmdyaWRSZXNpemVPYnNlcnZlciYmKHRoaXMuZ3JpZFJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLmdyaWRSZXNpemVPYnNlcnZlcj12b2lkIDApLHRoaXMucGFzdGVMaXN0ZW5lciYmdGhpcy5ob3RJbnN0YW5jZT8ucm9vdEVsZW1l'@; put 'bnQmJih0aGlzLmhvdEluc3RhbmNlLnJvb3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLnBhc3RlTGlzdGVuZXIpLHRoaXMucGFzdGVMaXN0ZW5lcj12b2lkIDApLHRoaXMudmFEZWJvdW5jZVRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMudmFEZWJvdW5jZVRpbWVy'@; put 'KSx0aGlzLnZhRGVib3VuY2VUaW1lcj12b2lkIDApLHRoaXMudmFVbnN1YnNjcmliZSYmKHRoaXMudmFVbnN1YnNjcmliZSgpLHRoaXMudmFVbnN1YnNjcmliZT12b2lkIDApfW9ic2VydmVHcmlkUmVzaXplKCl7Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlPy5yb290RWxlbWVudD8ucGFyZW50'@; put 'RWxlbWVudDtyJiYodGhpcy5ncmlkUmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKSx0aGlzLmdyaWRSZXNpemVPYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pntjb25zdCBpPXRoaXMuaG90SW5zdGFuY2U7IWl8fGkuaXNEZXN0cm95'@; put 'ZWR8fCh0aGlzLnVwZGF0ZVNldHRpbmdzU29ydFNhZmUoe2hlaWdodDp0aGlzLmhvdFRhYmxlLmhlaWdodH0sITEpLGkucmVuZGVyKCkpfSl9KSx0aGlzLmdyaWRSZXNpemVPYnNlcnZlci5vYnNlcnZlKHIpKX1maXhBcmlhQWNjZXNzaWJpbGl0eSgpe2NvbnN0IHI9KCk9Pntkb2N1bWVudC5x'@; put 'dWVyeVNlbGVjdG9yQWxsKCcuaHQtd3JhcHBlciwgLnd0SG9sZGVyLCBbaWRePSJodF8iXScpLmZvckVhY2goRT0+e0UucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksRS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtcm93Y291bnQiKSxFLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1jb2xjb3VudCIpLEUu'@; put 'cmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIpfSk7Y29uc3Qgbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT0idHJlZWdyaWQiXScpLGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9InByZXNlbnRhdGlvbiJdJyk7by5mb3JFYWNoKEU9PntF'@; put 'LnJlbW92ZUF0dHJpYnV0ZSgicm9sZSIpLEUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXJvd2NvdW50IiksRS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY29sY291bnQiKSxFLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiKX0pLGEuZm9yRWFjaChFPT57RS5xdWVyeVNlbGVj'@; put 'dG9yQWxsKCJidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdLCBbb25jbGlja10sIFtjb250ZW50ZWRpdGFibGVdIikubGVuZ3RoPjAmJkUucmVtb3ZlQXR0cmlidXRlKCJyb2xlIil9KSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbYXJpYS1yb3djb3VudD0i'@; put 'LTEiXScpLmZvckVhY2goRT0+e0UucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXJvd2NvdW50Iil9KSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0YWJsZSIpLmZvckVhY2goRT0+e0UuZ2V0QXR0cmlidXRlKCJyb2xlIil8fEUuc2V0QXR0cmlidXRlKCJyb2xlIiwidGFibGUiKSxFLnF1ZXJ5'@; put 'U2VsZWN0b3JBbGwoInRoIikuZm9yRWFjaChaPT57Wi5nZXRBdHRyaWJ1dGUoInNjb3BlIil8fFouc2V0QXR0cmlidXRlKCJzY29wZSIsImNvbCIpfSl9KSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbY29udGVudGVkaXRhYmxl'@; put 'XSIpLmZvckVhY2goRT0+e2lmKCFFLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpJiYhRS5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpKXtjb25zdCBPPUUudGV4dENvbnRlbnQ/LnRyaW0oKTtPJiZFLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsTyl9fSl9O3IoKSxzZXRUaW1l'@; put 'b3V0KHIsMTAwKSxzZXRUaW1lb3V0KHIsNTAwKSxzZXRUaW1lb3V0KHIsMWUzKSxzZXRUaW1lb3V0KHIsMmUzKSx0aGlzLmFyaWFDaGVja0ludGVydmFsfHwodGhpcy5hcmlhQ2hlY2tJbnRlcnZhbD1zZXRJbnRlcnZhbChyLDNlMykpLHRoaXMuYXJpYU9ic2VydmVyfHwodGhpcy5hcmlhT2Jz'@; put 'ZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoaT0+e2xldCBvPSExO2kuZm9yRWFjaChhPT57ImF0dHJpYnV0ZXMiPT09YS50eXBlJiYoInJvbGUiPT09YS5hdHRyaWJ1dGVOYW1lfHwiYXJpYS1yb3djb3VudCI9PT1hLmF0dHJpYnV0ZU5hbWUpJiYobz0hMCksImNoaWxkTGlzdCI9PT1hLnR5'@; put 'cGUmJmEuYWRkZWROb2Rlcy5mb3JFYWNoKGw9PntpZihsLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe2NvbnN0IHU9bDsodS5oYXNBdHRyaWJ1dGUoInJvbGUiKXx8dS5oYXNBdHRyaWJ1dGUoImFyaWEtcm93Y291bnQiKSkmJihvPSEwKX19KX0pLG8mJnNldFRpbWVvdXQociw1MCl9'@; put 'KSx0aGlzLmFyaWFPYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwLGF0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsicm9sZSIsImFyaWEtcm93Y291bnQiLCJhcmlhLWNvbGNvdW50IiwiYXJpYS1tdWx0aXNlbGVjdGFibGUiXX0pKX1p'@; put 'bml0U2V0dXAocixpPTApe3ZhciBvPXRoaXM7aWYodGhpcy5nZXRkYXRhRXJyb3J8fCFyfHwhci5kYXRhKXJldHVybjtpZih0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90VGFibGVDb21wb25lbnQ/LmhvdEluc3RhbmNlLCF0aGlzLmhvdEluc3RhbmNlKXJldHVybiB2b2lkKGk8NjAmJnNldFRp'@; put 'bWVvdXQoKCk9PnRoaXMuaW5pdFNldHVwKHIsaSsxKSw1MCkpO3RoaXMuY29scz1yLmRhdGEuY29scyx0aGlzLmRzbWV0YT1yLmRhdGEuZHNtZXRhLHRoaXMudmVyc2lvbnM9ci5kYXRhLnZlcnNpb25zfHxbXTtjb25zdCBhPXRoaXMuZHNtZXRhLmZpbmQoZWU9PiJOT1RFUyI9PT1lZS5OQU1F'@; put 'KSxsPXRoaXMuZHNtZXRhLmZpbmQoZWU9PiJERF9MT05HREVTQyI9PT1lZS5OQU1FKSx1PXRoaXMuZHNtZXRhLmZpbmQoZWU9PiJERF9TSE9SVERFU0MiPT09ZWUuTkFNRSk7dGhpcy5kc05vdGU9YSYmYS5WQUxVRT9hLlZBTFVFOmwmJmwuVkFMVUU/bC5WQUxVRTp1JiZ1LlZBTFVFP3UuVkFM'@; put 'VUU6IiI7Y29uc3QgZz10aGlzLmhvdEluc3RhbmNlLEU9ci5kYXRhLmFwcHJvdmVyczt0aGlzLmNvbHMmJih0aGlzLmhlYWRlckFycmF5PShuPT57Y29uc3QgZT1bXTtmb3IobGV0IHQgb2YgbikiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiE9PXQuTkFNRSYmZS5wdXNoKHQuTkFN'@; put 'RSk7cmV0dXJuIGV9KSh0aGlzLmNvbHMpKSxFLmZvckVhY2goZWU9Pnt0aGlzLmFwcHJvdmVycy5wdXNoKGVlLlBFUlNPTk5BTUUpfSksdGhpcy50YWJsZVRydWU9ITAsdGhpcy5saWJkcz1yLmxpYmRzLHRoaXMuaG90VGFibGUuZGF0YT1yLmRhdGEuc2FzZGF0YSx0aGlzLmhlYWRlckNvbHVt'@; put 'bnM9ci5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksdGhpcy5oZWFkZXJQa3M9ci5kYXRhLnNhc3BhcmFtc1swXS5QSy5zcGxpdCgiICIpLHRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc9ISFyLmRhdGEuc2FzcGFyYW1zWzBdLkNMU19GTEFHLHRoaXMuY29sdW1u'@; put 'TGV2ZWxTZWN1cml0eUZsYWcmJnRoaXMuc2V0UmVzdHJpY3Rpb25zKHtyZXN0cmljdEFkZFJvdzohMCxyZW1vdmVFZGl0UmVjb3JkQnV0dG9uOiEwLHJlbW92ZUFkZFJlY29yZEJ1dHRvbjohMH0pLHRoaXMuY2hlY2tFbXB0eVJvd1doZW5GaWx0ZXIoKSwtMSE9PXRoaXMuaGVhZGVyQ29sdW1u'@; put 'cy5pbmRleE9mKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iKSYmKHRoaXMuaGVhZGVyQ29sdW1uc1t0aGlzLmhlYWRlckNvbHVtbnMuaW5kZXhPZigiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIildPSJEZWxldGU/IiksdGhpcy5oZWFkZXJBcnJheT10aGlzLmhlYWRl'@; put 'ckNvbHVtbnMuc2xpY2UoMSksdGhpcy5oZWFkZXJDb2x1bW5zLnB1c2goTW0pLCIiIT09ci5kYXRhLnNhc3BhcmFtc1swXS5EVFZBUlMmJih0aGlzLmRhdGVIZWFkZXJzPXIuZGF0YS5zYXNwYXJhbXNbMF0uRFRWQVJTLnNwbGl0KCIgIikpLCIiIT09ci5kYXRhLnNhc3BhcmFtc1swXS5UTVZB'@; put 'UlMmJih0aGlzLnRpbWVIZWFkZXJzPXIuZGF0YS5zYXNwYXJhbXNbMF0uVE1WQVJTLnNwbGl0KCIgIikpLCIiIT09ci5kYXRhLnNhc3BhcmFtc1swXS5EVFRNVkFSUyYmKHRoaXMuZGF0ZVRpbWVIZWFkZXJzPXIuZGF0YS5zYXNwYXJhbXNbMF0uRFRUTVZBUlMuc3BsaXQoIiAiKSksci5kYXRh'@; put 'LnhsX3J1bGVzLmxlbmd0aD4wJiYodGhpcy54bFJ1bGVzPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoci5kYXRhLnhsX3J1bGVzKSksdGhpcy5kY1ZhbGlkYXRvcj1uZXcgYnplKHIuZGF0YS5zYXNwYXJhbXNbMF0sci5kYXRhLiRzYXNkYXRhLHRoaXMuY29scyxyLmRhdGEuZHFydWxl'@; put 'cyxyLmRhdGEuZHFkYXRhKTtjb25zdCBPPV9xKHIuZGF0YS5kcXJ1bGVzKTt0aGlzLmNlbGxWYWxpZGF0aW9uPXRoaXMuZGNWYWxpZGF0b3IuZ2V0UnVsZXMoKSx0aGlzLmRhdGFTb3VyY2U9ci5kYXRhLnNhc2RhdGEsdGhpcy4kZGF0YUZvcm1hdHM9ci5kYXRhLiRzYXNkYXRhLHRoaXMuZGF0'@; put 'YVNvdXJjZVJhdz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZSk7Zm9yKGNvbnN0IGVlIG9mIHRoaXMuZGF0YVNvdXJjZSllZVtNbV09IlUiOygobixlLHQscixpLG8pPT57Y29uc3QgYT1lLmZpbHRlcihsPT4iSEFSREZPUk1VTEEiPT09bC5SVUxFX1RZUEV8'@; put 'fCJTT0ZURk9STVVMQSI9PT1sLlJVTEVfVFlQRSk7MD09PWEubGVuZ3RofHxuLmZvckVhY2goKGwsdSk9Pntmb3IoY29uc3QgZyBvZiBhKXtjb25zdCBFPXIuZmluZChPPT5pLmV2ZXJ5KFo9Pk9bWl09PT1sW1pdKSk7bFtnLkJBU0VfQ09MXT11emUoZy5SVUxFX1ZBTFVFLHtjb2x1bW5OYW1l'@; put 'czp0LHJvd0luZGV4OnUsdXNlck5hbWU6byxvcmlnVmFsdWU6RT9FW2cuQkFTRV9DT0xdOnZvaWQgMH0pfX0pfSkodGhpcy5kYXRhU291cmNlLHIuZGF0YS5kcXJ1bGVzLHRoaXMuaGVhZGVyQ29sdW1ucyx0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQ/P3RoaXMuZGF0YVNvdXJjZSx0aGlzLmhl'@; put 'YWRlclBrcyx0aGlzLnVzZXJTZXJ2aWNlLnVzZXI/LnVzZXJuYW1lPz8iIiksdGhpcy5hdXRvRXNjYXBlZENlbGxzPW5ldyBNYXAsdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGVlLHZlKT0+e2NvbnN0IE1lPXF4KGVlLHRoaXMuaGVhZGVyUGtzKTtmb3IoY29uc3QgSGUgb2YgdGhpcy5oZWFk'@; put 'ZXJDb2x1bW5zKXtpZihPLmluY2x1ZGVzKEhlKXx8IXlxKHRoaXMuY29scyxIZSkpY29udGludWU7Y29uc3R7dmFsdWU6V2Usd2FzRXNjYXBlZDphdH09d3plKGVlW0hlXSk7YXQmJihlZVtIZV09V2UsdGhpcy5kYXRhU291cmNlUmF3W3ZlXSYmKHRoaXMuZGF0YVNvdXJjZVJhd1t2ZV1bSGVd'@; put 'PVdlKSxUZ2UodGhpcy5hdXRvRXNjYXBlZENlbGxzLE1lLEhlKSl9fSksdGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSx0aGlzLm92ZXJsYXlGb3JtdWxhUmF3VmFsdWVzT25VbmNoYW5nZWQodGhpcy5kYXRhU291'@; put 'cmNlVW5jaGFuZ2VkKTtmb3IobGV0IGVlPTA7ZWU8dGhpcy5oZWFkZXJDb2x1bW5zLmxlbmd0aDtlZSsrKXRoaXMuaG90RGF0YVNjaGVtYVt0aGlzLmNlbGxWYWxpZGF0aW9uW2VlXS5kYXRhXT1FUXQodGhpcy5jZWxsVmFsaWRhdGlvbltlZV0udHlwZSx0aGlzLmNlbGxWYWxpZGF0aW9uW2Vl'@; put 'XSx0aGlzLmRjVmFsaWRhdG9yPy5nZXREcURldGFpbHMoKSk7dGhpcy5jaGVja1Jvd0xpbWl0KCksZy51cGRhdGVTZXR0aW5ncyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2UsY29sSGVhZGVyczpnQSh0aGlzLmhlYWRlckNvbHVtbnMsdGhpcy5jb2xzLHRoaXMudXNlTGFiZWxzKSxjb2x1bW5zOnRo'@; put 'aXMuY2VsbFZhbGlkYXRpb24saGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LGZvcm11bGFzOnRoaXMuaG90VGFibGUuZm9ybXVsYXMsZGF0YURvdE5vdGF0aW9uOiExLGNvbW1lbnRzOntyZWFkT25seTohMH0sc3RyZXRjaEg6ImFsbCIscmVhZE9ubHk6dGhpcy5ob3RUYWJsZS5yZWFkT25s'@; put 'eSxoaWRkZW5Db2x1bW5zOntpbmRpY2F0b3JzOiEwLGNvbHVtbnM6dGhpcy5kY1ZhbGlkYXRvci5nZXRIaWRkZW5Db2x1bW5zKCl9LG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKGVlLHZlKXtyZXR1cm4gMD09PXZlPzYwOmVlPjUwMD81MDA6ZWV9LGNvcHlQYXN0ZTp0aGlzLmhvdFRhYmxlLmNv'@; put 'cHlQYXN0ZSxtYW51YWxDb2x1bW5GcmVlemU6ITEsbXVsdGlDb2x1bW5Tb3J0aW5nOiEwLG1hbnVhbENvbHVtblJlc2l6ZTohMCxmaWx0ZXJzOiExLG1hbnVhbFJvd1Jlc2l6ZTohMCx2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDoxMDAscm93SGVhZGVyczplZT0+e2NvbnN0IHZlPWcudG9Q'@; put 'aHlzaWNhbFJvdyhlZSksTWU9bnVsbD09PXZlP3ZvaWQgMDp0aGlzLmRhdGFTb3VyY2VbdmVdO3JldHVybiBNZSYmKG49Pntzd2l0Y2gobil7Y2FzZSJBIjpyZXR1cm4iKyI7Y2FzZSJEIjpyZXR1cm4iLSI7Y2FzZSJNIjpyZXR1cm4iXHhiMSI7Y2FzZSJVIjpyZXR1cm4iIn19KSh1SyhNZSx0'@; put 'aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQ/P3RoaXMuZGF0YVNvdXJjZSx0aGlzLmhlYWRlclBrcykpfHwiICJ9LGFmdGVyR2V0Um93SGVhZGVyOihlZSx2ZSk9Pntjb25zdCBNZT1nLnRvUGh5c2ljYWxSb3coZWUpLEhlPW51bGw9PT1NZT92b2lkIDA6dGhpcy5kYXRhU291cmNlW01lXTtpZigh'@; put 'SGUpcmV0dXJuO2NvbnN0IFdlPXVLKEhlLHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZD8/dGhpcy5kYXRhU291cmNlLHRoaXMuaGVhZGVyUGtzKTt2ZS5jbGFzc0xpc3QucmVtb3ZlKCJyb3dTdGF0dXNBZGRlZCIsInJvd1N0YXR1c0RlbGV0ZWQiLCJyb3dTdGF0dXNNb2RpZmllZCIpLCJBIj09'@; put 'PVdlJiZ2ZS5jbGFzc0xpc3QuYWRkKCJyb3dTdGF0dXNBZGRlZCIpLCJEIj09PVdlJiZ2ZS5jbGFzc0xpc3QuYWRkKCJyb3dTdGF0dXNEZWxldGVkIiksIk0iPT09V2UmJnZlLmNsYXNzTGlzdC5hZGQoInJvd1N0YXR1c01vZGlmaWVkIil9LHJvd0hlYWRlcldpZHRoOjIwLHJvd0hlaWdodHM6'@; put 'MjQsbWF4Um93czpNYXRoLm1heCh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLHRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWR8fDEvMCksaW52YWxpZENlbGxDbGFzc05hbWU6Imh0SW52YWxpZCIsYXV0b1dyYXBSb3c6ITEsYXV0b1dyYXBDb2w6ITEsYmluZFJvd3NX'@; put 'aXRoSGVhZGVyczohMSxkcm9wZG93bk1lbnU6e2l0ZW1zOnttYWtlX3JlYWRfb25seTp7bmFtZToibWFrZV9yZWFkX29ubHkifSxhbGlnbm1lbnQ6e25hbWU6ImFsaWdubWVudCJ9LHNwMTp7bmFtZToiLS0tLS0tLS0tIn0saW5mbzp7bmFtZToidGVzdCBpbmZvIixpc0NvbW1hbmQ6ITEscmVu'@; put 'ZGVyZXI6KGVlLHZlLE1lLEhlLFdlLGF0KT0+e2NvbnN0IEN0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtsZXQgS3QsQXQ9IiIscXQ9Ik5vIGluZm8gZm91bmQiO2lmKHRoaXMuaG90SW5zdGFuY2Upe2NvbnN0IGduPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKXx8W10s'@; put 'VG49Z24/Z25bMF1bMV06LTE7QXQ9dGhpcy5ob3RJbnN0YW5jZT8uY29sVG9Qcm9wKFRuKSxLdD10aGlzLiRkYXRhRm9ybWF0cz8udmFyc1tBdF07Y29uc3R7aGFyZFJlZ2V4VmFsdWU6Q24sc29mdFJlZ2V4VmFsdWU6cXJ9PXRoaXMuZGNWYWxpZGF0b3I/LmdldFJlZ2V4UnVsZVZhbHVlcyhB'@; put 'dCl8fHt9LCRuPXRoaXMuZGNWYWxpZGF0b3I/LmdldEZvcm11bGFSdWxlVmFsdWUoQXQpO3F0PVNaZShBdCxLdCxDbixxciwkbil9cmV0dXJuIEN0LmlubmVySFRNTD1xdCwobj0+e2Zvcihjb25zdCBlIG9mIHFYdCluLmFkZEV2ZW50TGlzdGVuZXIoZSx0PT50LnN0b3BQcm9wYWdhdGlvbigp'@; put 'KX0pKEN0KSxDdH19fX0sZGF0YVNjaGVtYTp0aGlzLmhvdERhdGFTY2hlbWEsY29udGV4dE1lbnU6dGhpcy5ob3RUYWJsZS5zZXR0aW5ncy5jb250ZXh0TWVudSxjdXJyZW50SGVhZGVyQ2xhc3NOYW1lOiJjdXN0b21IIixhZnRlckdldENvbEhlYWRlcjooZWUsdmUpPT57Y29uc3QgTWU9dGhp'@; put 'cy5jb2x1bW5IZWFkZXJbZWVdLEhlPU1lJiZ0aGlzLmlzQ29sUGsoTWUpLFdlPU1lJiZ0aGlzLmlzUmVhZG9ubHlDb2woTWUpO0hlJiZ2ZS5jbGFzc0xpc3QuYWRkKCJwcmltYXJ5S2V5SGVhZGVyU3R5bGUiKSxXZSYmIUhlJiZ2ZS5jbGFzc0xpc3QuYWRkKCJyZWFkb25seUNlbGwiKSwwPT09'@; put 'ZWUmJnZlLmNsYXNzTGlzdC5hZGQoImZpcnN0Q29sdW1uSGVhZGVyU3R5bGUiKSx2ZS5jbGFzc0xpc3QuYWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9LGFmdGVyR2V0Q2VsbE1ldGE6KGVlLHZlLE1lKT0+e2NvbnN0IEhlPXZlJiZ0aGlzLmlzUmVhZG9ubHlDb2wo'@; put 'dmUpLFdlPXRoaXMuZHVwbGljYXRlUGtJbmRleGVzLmluY2x1ZGVzKGVlKSYmdmU+PTEmJnZlPD10aGlzLnJlYWRPbmx5RmllbGRzLGF0PU1lLmNsYXNzTmFtZXx8IiI7bGV0IEN0O0N0PUFycmF5LmlzQXJyYXkoYXQpP1suLi5hdF06YXQuc3BsaXQoIiAiKS5maWx0ZXIoQXQ9PkF0Lmxlbmd0'@; put 'aD4wKSxIZSYmIUN0LmluY2x1ZGVzKCJyZWFkb25seUNlbGwiKSYmQ3QucHVzaCgicmVhZG9ubHlDZWxsIiksV2UmJihDdC5pbmNsdWRlcygiZGMtaW52YWxpZC1jZWxsIil8fEN0LnB1c2goImRjLWludmFsaWQtY2VsbCIpLE1lLnZhbGlkPSExLE1lLmR1cEtleT0hMCksQ3QubGVuZ3RoPjAm'@; put 'JihNZS5jbGFzc05hbWU9Q3Quam9pbigiICIpKX19LCExKSx0aGlzLm1hcmtPdmVyd3JpdHRlbkNlbGxzKCksdGhpcy5yZXNvbHZlUGtGb3JtdWxhU2VlZFZhbHVlcygpLHRoaXMuaG90VGFibGUuaGlkZGVuPSExLHRoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITApLHRoaXMu'@; put 'cXVlcnlUZXh0PXIuZGF0YS5zYXNwYXJhbXNbMF0uRklMVEVSX1RFWFQsdGhpcy5jb2x1bW5IZWFkZXI9ci5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksdGhpcy5jb2x1bW5IZWFkZXJbMF09IkRlbGV0ZT8iLHRoaXMucmVhZE9ubHlGaWVsZHM9ci5kYXRhLnNhc3Bh'@; put 'cmFtc1swXS5QS0NOVCxnLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uIiwoZWUsdmUsTWUsSGUsV2UsYXQpPT57ZWU9PT1NZSYmdmU9PT1IZSYmITE9PT10aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmR5bmFtaWNDZWxsVmFsaWRhdGlvbihlZSx2ZSl9KSxnLmFkZEhvb2soImFmdGVyQmVn'@; put 'aW5FZGl0aW5nIiwoKT0+e3RoaXMuc2V0Q2VsbEZpbHRlcighMSl9KSxnLmFkZEhvb2soImJlZm9yZUtleURvd24iLCgpPT57dGhpcy5zZXRDZWxsRmlsdGVyKCEwKX0pLGcuYWRkSG9vaygiYmVmb3JlQ2hhbmdlIiwoZWUsdmUpPT57aWYoZWUpZm9yKGNvbnN0IE1lIG9mIGVlKXtpZighTWUp'@; put 'Y29udGludWU7Y29uc3RbSGUsV2UsLGF0XT1NZSxDdD0ic3RyaW5nIj09dHlwZW9mIFdlP1dlOmcuY29sVG9Qcm9wKFdlKSxBdD10aGlzLmRjVmFsaWRhdG9yPy5nZXRSb3VuZERpZ2l0cyhDdCk7aWYodm9pZCAwIT09QXQpe2NvbnN0IGduPU51bWJlcihhdCk7bnVsbCE9PWF0JiYiIiE9PWF0'@; put 'JiYhaXNOYU4oZ24pJiYoTWVbM109TVF0KGduLEF0KSl9Y29uc3QgS3Q9dGhpcy5kYXRhU291cmNlW2cudG9QaHlzaWNhbFJvdyhIZSldO2lmKCFLdCljb250aW51ZTtjb25zdCBxdD1xeChLdCx0aGlzLmhlYWRlclBrcyk7InJldmVydCI9PT12ZSYmInN0cmluZyI9PXR5cGVvZiBhdCYmYXQu'@; put 'c3RhcnRzV2l0aCgiJz0iKT9UZ2UodGhpcy5hdXRvRXNjYXBlZENlbGxzLHF0LEN0KTpTemUodGhpcy5hdXRvRXNjYXBlZENlbGxzLHF0LEN0KX19KSxnLmFkZEhvb2soImFmdGVyQ2hhbmdlIiwoZWUsdmUpPT57aWYoImVkaXQiPT09dmUpe2NvbnN0IE1lPXRoaXMuaG90SW5zdGFuY2UsSGU9'@; put 'ZWVbMF1bMF0sV2U9ZWVbMF1bMV0sYXQ9TWUucHJvcFRvQ29sKFdlKSxDdD1NZS5nZXRDZWxsTWV0YShIZSxhdCk7Q3QmJiExPT09Q3QuZmlsdGVyJiZNZS5zZXRDZWxsTWV0YShIZSxhdCwiZmlsdGVyIiwhMCksIl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyI9PT1XZSYmTWUudmFs'@; put 'aWRhdGVSb3dzKFtIZV0sKCk9Pk1lLnJlbmRlcigpKSx0aGlzLmV4ZWN1dGVEeW5hbWljQ2VsbFZhbGlkYXRpb25JZkFwcGxpY2FibGUoV2UsYXQsSGUpfX0pLGcuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLChlZSx2ZSk9PntpZighZWV8fCJsb2FkRGF0YSI9PT12ZXx8ImVkaXRTdGF0dXMiPT09'@; put 'dmUpcmV0dXJuO2NvbnN0IE1lPXRoaXMuZ2V0UmV2ZXJ0YWJsZUNvbHVtbk5hbWVzKCksSGU9bmV3IFNldDtmb3IoY29uc3QgV2Ugb2YgZWUpe2lmKCFXZSljb250aW51ZTtjb25zdFthdCxDdF09V2U7aWYoQ3Q9PT1NbSljb250aW51ZTtjb25zdCBBdD1nLnRvUGh5c2ljYWxSb3coYXQpO251'@; put 'bGwhPT1BdCYmKEhlLmFkZChBdCksTWUuaW5jbHVkZXMoQ3QpJiZ0aGlzLnN5bmNPdmVyd3JpdHRlbkNvbW1lbnRGb3JDZWxsKEF0LEN0KSl9Zm9yKGNvbnN0IFdlIG9mIEhlKXRoaXMudXBkYXRlRWRpdFN0YXR1c0ZvclJvdyhXZSl9KSxnLmFkZEhvb2soImFmdGVyUGFzdGUiLGZ1bmN0aW9u'@; put 'KCl7dmFyIGVlPUNyKGZ1bmN0aW9uKih2ZSxNZSl7aWYoby5ob3RUYWJsZS5yZWFkT25seSlyZXR1cm47Y29uc3QgSGU9TWUubWFwKFdlPT4oe3N0YXJ0Um93OldlLnN0YXJ0Um93LHN0YXJ0Q29sOldlLnN0YXJ0Q29sLGVuZFJvdzpXZS5lbmRSb3csZW5kQ29sOldlLmVuZENvbH0pKTt5aWVs'@; put 'ZCBvLnJ1bkJ1bGtWYWxpZGF0aW9uKGcsSGUsInBhc3RlIil9KTtyZXR1cm4gZnVuY3Rpb24odmUsTWUpe3JldHVybiBlZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSxnLmFkZEhvb2soImFmdGVyQXV0b2ZpbGwiLGZ1bmN0aW9uKCl7dmFyIGVlPUNyKGZ1bmN0aW9uKih2ZSxNZSxIZSl7'@; put 'aWYoby5ob3RUYWJsZS5yZWFkT25seSlyZXR1cm47Y29uc3R7ZnJvbTpXZSx0bzphdH09SGU7eWllbGQgby5ydW5CdWxrVmFsaWRhdGlvbihnLFt7c3RhcnRSb3c6TWF0aC5taW4oV2Uucm93LGF0LnJvdyksc3RhcnRDb2w6TWF0aC5taW4oV2UuY29sLGF0LmNvbCksZW5kUm93Ok1hdGgubWF4'@; put 'KFdlLnJvdyxhdC5yb3cpLGVuZENvbDpNYXRoLm1heChXZS5jb2wsYXQuY29sKX1dLCJhdXRvZmlsbCIpfSk7cmV0dXJuIGZ1bmN0aW9uKHZlLE1lLEhlKXtyZXR1cm4gZWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSksZy5hZGRIb29rKCJhZnRlclJlbmRlciIsZWU9Pnt0aGlzLmZpeEFy'@; put 'aWFBY2Nlc3NpYmlsaXR5KCl9KSxnLmFkZEhvb2soImFmdGVyQ2hhbmdlIiwoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLmZpeEFyaWFBY2Nlc3NpYmlsaXR5KCl9LDUwKX0pLGcuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLGVlPT57aWYoZWU+dGhpcy5kYXRhU291cmNlLmxlbmd0aCl7Y29u'@; put 'c3QgdmU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnd0SG9sZGVyIik7c2V0VGltZW91dCgoKT0+e3ZlJiYodmUuc2Nyb2xsVG9wPXZlLnNjcm9sbEhlaWdodCl9KX19KSxnLmFkZEhvb2soImJlZm9yZUNyZWF0ZVJvdyIsKGVlLHZlLE1lKT0+e2lmKCF0aGlzLmFkZGluZ05ld1JvdyYmIkNv'@; put 'bnRleHRNZW51Lmluc2VydF9yb3dfYWJvdmUiIT09TWUmJiJDb250ZXh0TWVudS5pbnNlcnRfcm93X2JlbG93IiE9PU1lKXJldHVybiExfSksZy5hZGRIb29rKCJhZnRlclZhbGlkYXRlIiwoZWUsdmUsTWUsSGUpPT57aWYoZWV8fCFNZ2UodmUpKXJldHVybjtjb25zdCBXZT0ic3RyaW5nIj09'@; put 'dHlwZW9mIEhlP0hlOmcuY29sVG9Qcm9wKEhlKSxhdD10aGlzLmRjVmFsaWRhdG9yPy5nZXROb3ROdWxsRGVmYXVsdFZhbHVlKFdlKTt2b2lkIDAhPT1hdCYmc2V0VGltZW91dCgoKT0+e01nZShnLmdldERhdGFBdFJvd1Byb3AoTWUsV2UpKSYmZy5zZXREYXRhQXRSb3dQcm9wKE1lLFdlLGF0'@; put 'LCJhdXRvUG9wdWxhdGUiKX0sMCl9KTtjb25zdCBaPShlZSx2ZSxNZSk9PmVlLm1hcCgoSGUsV2UpPT57aWYodm9pZCAwIT09TWUmJldlPj1NZSlyZXR1cm4gSGU7Y29uc3QgYXQ9dGhpcy5jb2x1bW5IZWFkZXJbdmUrV2VdLEN0PSJudW0iPT09dGhpcy4kZGF0YUZvcm1hdHM/LnZhcnNbYXRd'@; put 'Py50eXBlLEF0PSgwLHk0LmlzU3BlY2lhbE1pc3NpbmcpKEhlKTtyZXR1cm4gQ3QmJiFpc05hTihIZSkmJiFBdCYmKEhlKj0xKSxIZX0pO2cuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLChlZSx2ZSk9PntpZihlZSYmImxvYWREYXRhIiE9PXZlJiYicmVzb2x2ZVBrRm9ybXVsYSIhPT12ZSlmb3Io'@; put 'Y29uc3QgTWUgb2YgZWUpe2lmKCFNZSljb250aW51ZTtjb25zdFtIZSxXZSwsYXRdPU1lO2lmKCJzdHJpbmciIT10eXBlb2YgYXR8fCFhdC5zdGFydHNXaXRoKCI9IikpY29udGludWU7Y29uc3QgQ3Q9InN0cmluZyI9PXR5cGVvZiBXZT9XZTpnLmNvbFRvUHJvcChXZSk7dGhpcy5oZWFkZXJQ'@; put 'a3MuaW5jbHVkZXMoQ3QpJiZzZXRUaW1lb3V0KCgpPT57Y29uc3QgQXQ9Zy5nZXREYXRhQXRSb3dQcm9wKEhlLEN0KTtnLnNldERhdGFBdFJvd1Byb3AoSGUsQ3QsQXQsInJlc29sdmVQa0Zvcm11bGEiKX0sMCl9fSksZy5hZGRIb29rKCJiZWZvcmVQYXN0ZSIsKGVlLHZlKT0+e2NvbnN0IE1l'@; put 'PXZlWzBdLnN0YXJ0Q29sLEhlPXZlWzBdLnN0YXJ0Um93O2ZvcihsZXQgV2U9MDtXZTxlZS5sZW5ndGg7V2UrKyllZVtXZV09WihlZVtXZV0sTWUpLGVlW1dlXT1lZVtXZV0ubWFwKChhdCxDdCk9PnlxKHRoaXMuY29scyx0aGlzLmNvbHVtbkhlYWRlcltNZStDdF0pJiYic3RyaW5nIj09dHlw'@; put 'ZW9mIGF0JiZhdC50cmltKCkuc3RhcnRzV2l0aCgiPSIpP2h6ZShhdC50cmltKCksdGhpcy5oZWFkZXJDb2x1bW5zLEhlK1dlKTphdCl9KSx0aGlzLnBhc3RlTGlzdGVuZXImJmcucm9vdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFzdGUiLHRoaXMucGFzdGVMaXN0ZW5lciksdGhp'@; put 'cy5wYXN0ZUxpc3RlbmVyPWVlPT57Y29uc3QgdmU9Zy5nZXRBY3RpdmVFZGl0b3IoKTtpZighdmV8fG51bGw9PT12ZS5yb3d8fGVlLnRhcmdldCE9PXZlLlRFWFRBUkVBKXJldHVybjtpZigheXEodGhpcy5jb2xzLHRoaXMuY29sdW1uSGVhZGVyW3ZlLmNvbF0pKXJldHVybjtjb25zdCBIZT1l'@; put 'ZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCJ0ZXh0L3BsYWluIik/PyIiO0hlLnRyaW0oKS5zdGFydHNXaXRoKCI9IikmJihlZS5wcmV2ZW50RGVmYXVsdCgpLHZlLlRFWFRBUkVBLnZhbHVlPWh6ZShIZS50cmltKCksdGhpcy5oZWFkZXJDb2x1bW5zLHZlLnJvdyksdmUuVEVYVEFSRUEuZGlz'@; put 'cGF0Y2hFdmVudChuZXcgRXZlbnQoImlucHV0Iix7YnViYmxlczohMH0pKSl9LGcucm9vdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGFzdGUiLHRoaXMucGFzdGVMaXN0ZW5lciksZy5hZGRIb29rKCJiZWZvcmVBdXRvZmlsbCIsKGVlLHZlKT0+e2NvbnN0IE1lPXZlLmZyb20uY29sO3Jl'@; put 'dHVybiBlZS5tYXAoSGU9PlooSGUsTWUpKX0pLGcuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLCgpPT57dGhpcy5jaGVja1Jvd0xpbWl0KCl9KSxnLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IiwoKT0+e3RoaXMuY2hlY2tSb3dMaW1pdCgpfSksdGhpcy51cGxvYWRVcmw9InNlcnZpY2VzL2Vk'@; put 'aXRvcnMvbG9hZGZpbGUiLG51bGwhPT10aGlzLnJlY29yZEFjdGlvbiYmKCJBREQiPT09dGhpcy5yZWNvcmRBY3Rpb24/KHRoaXMuYWRkUmVjb3JkKCksdGhpcy5lZGl0UmVjb3JkKG51bGwsdGhpcy5kYXRhU291cmNlLmxlbmd0aC0xLCEwKSk6MT09PXRoaXMuZGF0YVNvdXJjZS5sZW5ndGgm'@; put 'JnRoaXMuZWRpdFJlY29yZChudWxsLDApKSxyLmRhdGEucXVlcnkubGVuZ3RoPjAmJigiaG9tZSI9PT1Vbi5yb290UGFyYW18fCJlZGl0b3IiPT09VW4ucm9vdFBhcmFtKSYmMD09PVVuLmVkaXRvci5maWx0ZXIuY2xhdXNlcy5sZW5ndGgmJihVbi5lZGl0b3IuZmlsdGVyLnF1ZXJ5PXRoaXMu'@; put 'aGVscGVyU2VydmljZS5kZWVwQ2xvbmUoci5kYXRhLnF1ZXJ5KSxVbi5lZGl0b3IuZmlsdGVyLmxpYmRzPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSx0aGlzLnNhc1N0b3JlU2VydmljZS5pbml0aWFsaXplR2xvYmFsRmlsdGVyQ2xhdXNlKCJlZGl0b3IiLHRoaXMuY29scykp'@; put 'LGcucmVuZGVyKCksdGhpcy5vYnNlcnZlR3JpZFJlc2l6ZSgpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpeEFyaWFBY2Nlc3NpYmlsaXR5KCl9LDUwMCksdGhpcy5pc1ZhRW1iZWQmJih0aGlzLnZhTWVzc2FnaW5nLnZpc2libGVDb2x1bW5zJiYodGhpcy5hcHBseVZhQ29sdW1uVmlzaWJpbGl0'@; put 'eShuZXcgU2V0KHRoaXMudmFNZXNzYWdpbmcudmlzaWJsZUNvbHVtbnMpKSx0aGlzLmhvdEluc3RhbmNlJiZ0aGlzLmhvdEluc3RhbmNlLnJlbmRlcigpKSx0aGlzLnN1YnNjcmliZVRvVmFNZXNzYWdlcygpLHRoaXMuaGFuZGxlVmFNZXNzYWdlKCkpfXN1YnNjcmliZVRvVmFNZXNzYWdlcygp'@; put 'e3RoaXMudmFVbnN1YnNjcmliZXx8KHRoaXMudmFVbnN1YnNjcmliZT10aGlzLnZhTWVzc2FnaW5nLm9uRGF0YSgoKT0+dGhpcy5oYW5kbGVWYU1lc3NhZ2UoKSkpfWhhbmRsZVZhTWVzc2FnZSgpe2NvbnN0IHI9dGhpcy52YU1lc3NhZ2luZy5sYXRlc3RNZXNzYWdlKCk7aWYoIXJ8fCF0aGlz'@; put 'LmxpYmRzfHwhdGhpcy5jZWxsVmFsaWRhdGlvbnx8dGhpcy5jZWxsVmFsaWRhdGlvbi5sZW5ndGg8PTEpcmV0dXJuO2NvbnN0IGk9dGhpcy52YUZpbHRlci5idWlsZExhYmVsVG9WYXJNYXAodGhpcy5jZWxsVmFsaWRhdGlvbix0aGlzLmNvbHVtbkhlYWRlciksbz10aGlzLnZhTWVzc2FnaW5n'@; put 'LmRhdGFDb2x1bW5zKHIpO2xldCBhPSExO2lmKG8ubGVuZ3RoPjApe2NvbnN0IGc9bmV3IFNldDtmb3IoY29uc3R7Y29sdW1uOkV9b2Ygbyl7Y29uc3QgTz0oRS5sYWJlbD8/RS5uYW1lPz8iIikudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKSxaPWkuZ2V0KE8pO1omJmcuYWRkKFop'@; put 'fXRoaXMudmFNZXNzYWdpbmcudmlzaWJsZUNvbHVtbnM9QXJyYXkuZnJvbShnKSxhPXRoaXMuYXBwbHlWYUNvbHVtblZpc2liaWxpdHkoZyl9YSYmdGhpcy5ob3RJbnN0YW5jZSYmdGhpcy5ob3RJbnN0YW5jZS5yZW5kZXIoKSx0aGlzLnVwZGF0ZVZhRmlsdGVyVGV4dChyKTtjb25zdCBsPXRo'@; put 'aXMudmFGaWx0ZXIuYnVpbGRDbGF1c2VzKHIsaSx0aGlzLmNvbHMpLHU9dGhpcy52YUZpbHRlci5zaWduYXR1cmUobCk7aWYodT09PXRoaXMudmFNZXNzYWdpbmcuZmlsdGVyU2lnbmF0dXJlKXJldHVybiJwZW5kaW5nIj09PXRoaXMudmFGaWx0ZXJTdGF0dXMmJih0aGlzLnZhRmlsdGVyU3Rh'@; put 'dHVzPSJpZGxlIiksdm9pZCh0aGlzLnZhUGVuZGluZ0NsYXVzZXM9bnVsbCk7dGhpcy52YVBlbmRpbmdDbGF1c2VzPWwsdGhpcy52YVBlbmRpbmdTaWduYXR1cmU9dSx0aGlzLnZhRmlsdGVyU3RhdHVzPSJwZW5kaW5nIix0aGlzLnZhQXV0b0FwcGx5JiZ0aGlzLmhvdFRhYmxlLnJlYWRPbmx5'@; put 'JiZ0aGlzLnNjaGVkdWxlVmFGaWx0ZXJBcHBseSgpfXNjaGVkdWxlVmFGaWx0ZXJBcHBseSgpe3RoaXMudmFEZWJvdW5jZVRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy52YURlYm91bmNlVGltZXIpLHRoaXMudmFEZWJvdW5jZVRpbWVyPXNldFRpbWVvdXQoKCk9Pnt0aGlzLnZhRGVib3VuY2VU'@; put 'aW1lcj12b2lkIDAsdGhpcy5hcHBseVBlbmRpbmdWYUZpbHRlcigpfSxlLlZBX0RFQk9VTkNFX01TKX1hcHBseVZhRmlsdGVyKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aWYoIW8udmFBcHBseWluZ0ZpbHRlcil7by52YUFwcGx5aW5nRmlsdGVyPSEwLG8udmFGaWx0'@; put 'ZXJTdGF0dXM9ImxvYWRpbmciLG8udmFNZXNzYWdpbmcuZmlsdGVyU2lnbmF0dXJlPWk7dHJ5e2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gdHlwZW9mIG8uZmlsdGVyX3BrPiJ1Ij92b2lkKG8udmFGaWx0ZXJTdGF0dXM9ImlkbGUiKTp2b2lkKHlpZWxkIG8ucmVsb2FkRWRpdG9yUm91dGUoIi9l'@; put 'ZGl0b3IvIitvLmxpYmRzKSk7Y29uc3QgYT15aWVsZCBvLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnkoby5saWJkcyxyKSxsPWE/LnJlc3VsdD8uWzBdPy5GSUxURVJfUkssdT1hPy5yZXN1bHQ/LlswXT8uRklMVEVSX1RBQkxFO2lmKHZvaWQgMD09PWx8fHZvaWQgMD09PXUpcmV0dXJuIHZv'@; put 'aWQoby52YUZpbHRlclN0YXR1cz0iaWRsZSIpO3lpZWxkIG8ucmVsb2FkRWRpdG9yUm91dGUoIi9lZGl0b3IvIit1KyIvIitsKX1jYXRjaHtvLnZhRmlsdGVyU3RhdHVzPSJpZGxlIn1maW5hbGx5e28udmFBcHBseWluZ0ZpbHRlcj0hMX19fSkoKX1hcHBseVBlbmRpbmdWYUZpbHRlcigpe2lm'@; put 'KCF0aGlzLnZhUGVuZGluZ0NsYXVzZXN8fCF0aGlzLmhvdFRhYmxlLnJlYWRPbmx5KXJldHVybjtjb25zdCByPXRoaXMudmFQZW5kaW5nQ2xhdXNlcyxpPXRoaXMudmFQZW5kaW5nU2lnbmF0dXJlO3RoaXMudmFQZW5kaW5nQ2xhdXNlcz1udWxsLHRoaXMuYXBwbHlWYUZpbHRlcihyLGkpfXRv'@; put 'Z2dsZVZhQXV0b0FwcGx5KCl7VW4udmFBcHBseU1vZGU9dGhpcy52YUF1dG9BcHBseT8iY29uZmlybSI6ImxpdmUiLHRoaXMudmFBdXRvQXBwbHkmJiJwZW5kaW5nIj09PXRoaXMudmFGaWx0ZXJTdGF0dXMmJnRoaXMuYXBwbHlQZW5kaW5nVmFGaWx0ZXIoKX1yZWxvYWRFZGl0b3JSb3V0ZShy'@; put 'KXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXt5aWVsZCBpLnJvdXRlci5uYXZpZ2F0ZShbIi8iXSx7c2tpcExvY2F0aW9uQ2hhbmdlOiEwLHF1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pLHlpZWxkIGkucm91dGVyLm5hdmlnYXRlKFtyXSx7cXVlcnlQYXJhbXNIYW5k'@; put 'bGluZzoicHJlc2VydmUifSl9KSgpfWFwcGx5VmFDb2x1bW5WaXNpYmlsaXR5KHIpe2NvbnN0IGk9dGhpcy5ob3RJbnN0YW5jZTtpZighaSlyZXR1cm4hMTtjb25zdCBvPWkuZ2V0UGx1Z2luKCJoaWRkZW5Db2x1bW5zIik7aWYoIW8pcmV0dXJuITE7Y29uc3QgYT10aGlzLmRjVmFsaWRhdG9y'@; put 'Py5nZXRIaWRkZW5Db2x1bW5zKCl8fFtdLGw9W10sdT1bXTtmb3IobGV0IGc9MTtnPHRoaXMuY2VsbFZhbGlkYXRpb24ubGVuZ3RoO2crKyl7Y29uc3QgRT10aGlzLmNlbGxWYWxpZGF0aW9uW2ddPy5kYXRhOyFFfHx0aGlzLmlzQ29sUGsoRSl8fGEuaW5jbHVkZXMoZyl8fChyLmhhcyhFKT9v'@; put 'LmlzSGlkZGVuKGcpJiZ1LnB1c2goZyk6by5pc0hpZGRlbihnKXx8bC5wdXNoKGcpKX1yZXR1cm4gdS5sZW5ndGgmJm8uc2hvd0NvbHVtbnModSksbC5sZW5ndGgmJm8uaGlkZUNvbHVtbnMobCksdS5sZW5ndGg+MHx8bC5sZW5ndGg+MH11cGRhdGVWYUZpbHRlclRleHQocil7Y29uc3QgaT0o'@; put 'ci5wYXJhbWV0ZXJzfHxbXSkuZmlsdGVyKG89Pm8mJnZvaWQgMCE9PW8ubmFtZSYmdm9pZCAwIT09by52YWx1ZSkubWFwKG89PmAke28ubGFiZWw/P28ubmFtZX09JHtvLnZhbHVlfWApLmpvaW4oIiwgIik7Y29uc29sZS5sb2coIlZBIGZpbHRlcnMgYWN0aXZlOiIsaSl9c3RhdGljI2U9bj0o'@; put 'KT0+KHRoaXMuY250PTAsdGhpcy5ub25Qa0NudD0wLHRoaXMubGFzdENlbGw9MCx0aGlzLlZBX0RFQk9VTkNFX01TPTgwMCx0aGlzLk9SSUdJTkFMX1ZBTFVFX0NPTU1FTlRfUFJFRklYPSJPcmlnaW5hbCB2YWx1ZTogIix0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8'@; put 'fGUpKHplKEYyKSx6ZSh1ZCksemUoeDMpLHplKEJwKSx6ZShmaCksemUodmMpLHplKHAxKSx6ZShpYyksemUoVWwpLHplKEFaZSksemUoTW5uKSx6ZShUbm4pLHplKHBpZSkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtZWRpdG9yIl1dLHZpZXdRdWVyeTpm'@; put 'dW5jdGlvbihpLG8pe2lmKDEmaSYmKFdvKEw3LDUpLFdvKEVvbiw3KSxXbyhNb24sNSksV28oVG9uLDUpLFdvKHhvbiw1KSxXbyhBb24sNSkpLDImaSl7bGV0IGE7Y2koYT11aSgpKSYmKG8uaG90VGFibGVDb21wb25lbnQ9YS5maXJzdCksY2koYT11aSgpKSYmKG8uaHQ9YS5maXJzdCksY2ko'@; put 'YT11aSgpKSYmKG8uaW5mb0Jhcj1hLmZpcnN0KSxjaShhPXVpKCkpJiYoby51cGxvYWRTdGF0ZXJDb21wTGlzdD1hKSxjaShhPXVpKCkpJiYoby5xdWVyeUZpbHRlckNvbXBMaXN0PWEpLGNpKGE9dWkoKSkmJihvLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0PWEpfX0saG9zdEF0dHJzOlsxLCJj'@; put 'b250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6MTgyLHZhcnM6ODAsY29uc3RzOltbImh0IiwiIl0sWyJob3RJbnN0YW5jZSIsIiJdLFsiZmlsZVBhc3N3b3JkSW5wdXQiLCIiXSxbImZpbGVVcGxvYWRJbnB1dCIsIiJdLFsidXBsb2FkU3RhdGVyIiwiIl0sWyJpbmZvQmFy'@; put 'IiwiIl0sWyJxdWVyeUZpbHRlciIsIiJdLFsxLCJjb250ZW50LWFyZWEiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iXSxbImFwcEZpbGVEcm9wIiwiIiwxLCJyZWxhdGl2ZSIsMywiZmlsZU92ZXIiLCJmaWxlRHJvcCIsImNsck1vZGFsT3BlbkNoYW5nZSIsInVwbG9hZGVyIiwiY2xyTW9k'@; put 'YWxTaXplIiwiY2xyTW9kYWxTdGF0aWNCYWNrZHJvcCIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW4iXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJkcm9wLWFyZWEiXSxbMSwiY2xyLWNvbC1tZC0xMiJdLFsxLCJjbHItcm93IiwiY2FyZC1ibG9jayIs'@; put 'Im10LTE1IiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWJldHdlZW4iXSxbMSwiY2xyLWNvbC1tZC1hdXRvIl0sWzEsImVuY29kaW5nLWJsb2NrIl0sWyJjbHJJbmxpbmUiLCIiLDEsIm10LTAiXSxbInR5cGUiLCJyYWRpbyIsImNsclJhZGlvIiwiIiwidmFsdWUiLCJVVEYtOCIsIm5hbWUi'@; put 'LCJlbmNvZGluZyIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJkaXNhYmxlZCJdLFsidHlwZSIsInJhZGlvIiwiY2xyUmFkaW8iLCIiLCJ2YWx1ZSIsIldMQVRJTjEiLCJuYW1lIiwiZW5jb2RpbmciLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwiZGlzYWJsZWQiXSxbMSwiY2xy'@; put 'LWNvbC1tZC0zIiwiZmlsdGVyQnRuIl0sWzEsImNsci1jb2wtbWQtMyIsImVkaXRCdG4iXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCIsMywiZGlzYWJsZWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCJdLFsxLCJl'@; put 'eGNlbC1wYXJzaW5nIiwiY2xyLWNvbC1tZC0xMiJdLFsxLCJtb2RhbC1mb290ZXIiXSxbMywiY3VycmVudFJlY29yZCIsInJlY29yZEFjdGlvbiIsImxpYmRzIiwicXVlcnlGaWx0ZXIiLCJmaWx0ZXIiLCJzdWJtaXRMb2FkaW5nIiwiaGVhZGVyUGtzIiwiY2VsbFZhbGlkYXRpb24iLCJjdXJy'@; put 'ZW50UmVjb3JkSW5kZXgiLCJjdXJyZW50UmVjb3JkTG9hZGluZ3MiLCJjdXJyZW50UmVjb3JkRXJyb3JzIiwiY3VycmVudFJlY29yZFZhbGlkYXRvciJdLFsxLCJjbHItZmxleC0xIl0sWzEsInByb2dyZXNTdGF0aWMiLCJwcm9ncmVzcyIsImxvb3AiXSxbImFwcERyYWdOZHJvcCIsIiIsMSwi'@; put 'Y2FyZCIsImJvcmRlci0wIiwiYm94LXNoYWRvdy1ub25lLWkiLCJwb3NpdGlvbi1yZWxhdGl2ZSIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwiYmFja2dyb3VuZC10cmFuc3BhcmVudCIsMywiZmlsZURyYWdnZWRPdmVyIl0sWzEsImNhcmQtaGVhZGVyIiwiY2xyLXJvdyIs'@; put 'ImJ1dHRvbkJhciIsImhlYWRlckJhciIsImNsci1mbGV4LW1kLXJvdyIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWp1c3RpZnktY29udGVudC1sZy1lbmQiXSxbMSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbWQtYXV0byIsImNsci1jb2wtbGctYXV0byIsImJhY2tCdG4iXSxb'@; put 'MSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbWQiLCJjbHItY29sLWxnIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsYXNzIiwiZWRpdG9yLXRpdGxlIHRleHQtY2VudGVyIG10LTAiLDQsIm5nVmFyIl0sWzEsImNsci1jb2wtMTIiLCJjbHItY29sLW1k'@; put 'LWF1dG8iLCJjbHItY29sLWxnLWF1dG8iLCJidG5DdHJsIl0sWzEsImNsci1jb2wtbWQtMTIiLCJpbmZvQmFyIiwzLCJleHBhbmRlZCJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIiwiY2xyLWZsZXgtMSIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQiLDMsIm5nQ2xhc3MiXSxbMSwiY2FyZC10ZXh0'@; put 'Il0sWzEsImNhcmQtdGV4dCIsImhvdEVkaXRvciIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwiYmFja2dyb3VuZC10cmFuc3BhcmVudCJdLFsxLCJob3Qtd3JhcHBlciIsImNsci1mbGV4LTEiXSxbImlkIiwiaG90VGFibGUiLDEsImVkaXQtaG90IiwzLCJkYXRhIiwic2V0'@; put 'dGluZ3MiXSxbMSwidmEtZmlsdGVyLWNvbnRyb2xzIiwidy0xMDAiLCJtdC0yLWkiXSxbMSwibXQtMi1pIiwidy0xMDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtb2RhbCJdLFszLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iXSxbMSwibS0wIl0sWyJ0eXBlIiwiYnV0dG9uIiwx'@; put 'LCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsxLCJkdXBsaWNhdGUta2V5cy1tb2RhbCIsMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIl0sWzEsImQtYmxv'@; put 'Y2siXSxbMSwibW9kYWwiLCJ6LWluZGV4LWhpZ2hlc3QiXSxbMSwiZmlsdGVyLW1vZGFsIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIi'@; put 'LCJjb2xvci1kYXJrZXItZ3JheSJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0'@; put 'bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFs'@; put 'Q2xvc2FibGUiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsIm1vZGFsLWJvZHkiLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiZGF0YS1scGlnbm9yZSIsInRydWUiLCJhdXRvY29t'@; put 'cGxldGUiLCJvZmYiLCJpZCIsImZpbGVQYXNzd29yZElucHV0IiwidHlwZSIsInRleHQiLDEsImNsci1pbnB1dCIsImRpc2FibGUtcGFzc3dvcmQtbWFuYWdlciJdLFsxLCJtLTAiLCJjb2xvci1yZWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91'@; put 'dGxpbmUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbMywib3BlbkNoYW5nZSIsInJvd0NsaWNrZWQiLCJvcGVuIiwiZHNtZXRhIiwidmVyc2lvbnMiXSxbMywidmlld2JveE1vZGFsQ2hhbmdlIiwidmlld2JveE1vZGFsIl0sWzMsInJlc3VsdCIsIm9wZW4iLCJ0aXRsZSIsIm1lc3NhZ2UiXSxb'@; put 'MywiY2FuY2VsIiwib3BlbiIsImRvbmUiLCJ0b3RhbCJdLFsxLCJmaWx0ZXJCdG4iLCJ3LTEwMCJdLFsiZm9yIiwiZmlsZS11cGxvYWQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwicHJvZmlsZS1idXR0b25zIiwidy0xMDAiXSxbImhpZGRlbiIsIiIsImlkIiwiZmlsZS11cGxv'@; put 'YWQiLCJ0eXBlIiwiZmlsZSIsImFwcEZpbGVTZWxlY3QiLCIiLDMsImNoYW5nZSIsInVwbG9hZGVyIl0sWzEsImJ0blZpZXciLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsInByb2ZpbGUtYnV0dG9ucyIsInctMTAwIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJ0eXBlIiwiYnV0dG9u'@; put 'IiwxLCJidG4iLCJidG4tcHJpbWFyeSIsIm1yLTAiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCIsMywiY2xpY2siXSxbMywib25SZWNvcmRDaGFuZ2UiLCJvblJlY29yZElucHV0Rm9jdXNlZCIsIm9uUmVjb3JkRWRp'@; put 'dENsb3NlIiwib25OZXh0UmVjb3JkIiwib25QcmV2aW91c1JlY29yZCIsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1ZXJ5RmlsdGVyIiwiZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZElu'@; put 'ZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiXSxbMSwiYnRuIiwiaWNvbi1jb2xsYXBzZSIsImJ0bi1zbSIsImJ0bi1pY29uIiwiYnRuLWRpbW1lZCIsMywicm91dGVyTGluayJdLFsiYXJpYS1oaWRkZW4i'@; put 'LCJ0cnVlIiwic2hhcGUiLCJjYXJldCIsImRpciIsImxlZnQiLCJzaXplIiwiMjAiXSxbMSwidGV4dCJdLFsxLCJidG4iLCJpY29uLWNvbGxhcHNlIiwiYnRuLXNtIiwiYnRuLWljb24iLCJidG4tZGltbWVkIiwidmlld2JveC1vcGVuIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVl'@; put 'Iiwic2hhcGUiLCJ2aWV3LWNhcmRzIiwic2l6ZSIsIjIwIl0sWzEsImVkaXRvci10aXRsZSIsInRleHQtY2VudGVyIiwibXQtMCJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJzaGFwZSIsImluZm8tY2lyY2xlIiwiYXJpYS1sYWJlbCIsIlZpZXcgZGF0YXNldCBtZXRhIGluZm8iLCJzaXpl'@; put 'IiwiMjQiLDEsImlzLWhpZ2hsaWdodCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJib2x0IiwxLCJjb2xvci15ZWxsb3ciXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIl0sWzEsIm1yLTEwIiwidmlldy10YWJsZSIsMywicm91dGVy'@; put 'TGluayJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJsZyJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG5WaWV3IiwiYnRuIiwiaWNvbi1jb2xsYXBzZSIsImJ0'@; put 'bi1zbSIsImJ0bi1pY29uIiwiYnRuLWRpbW1lZCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiaWNvbi1jb2xsYXBzZSIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJub3RlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJi'@; put 'dG4iLCJpY29uLWNvbGxhcHNlIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJtci0wIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG5WaWV3IiwiYnRuIiwiaWNvbi1jb2xsYXBzZSIsImJ0bi1zbSIsImJ0bi1pY29uIiwiYnRuLWRpbW1lZCIsMywiY2xpY2siXSxbImFyaWEtaGlkZGVuIiwidHJ1'@; put 'ZSIsInNoYXBlIiwiZmlsdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJpY29uLWNvbGxhcHNlIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJtci0wIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJ1cGxvYWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0'@; put 'biIsImJ0bi1zbSIsImJ0bi1pY29uIiwiYnRuLW91dGxpbmUtZGFuZ2VyIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJ0aW1lcyJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIs'@; put 'MywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsInBsdXMiLCJzaXplIiwiMTYiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiY2hlY2siLCJzaXplIiwiMjAiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1p'@; put 'Y29uIiwiYnRuLW91dGxpbmUtZGFuZ2VyIiwiYnRuLXVwbG9hZC1wcmV2aWV3IiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLCJidG4tdXBsb2FkLXByZXZpZXciXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0'@; put 'bi1zdWNjZXNzIiwicHJldmlldy1zdWJtaXQiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLCJidG4tdXBsb2FkLXByZXZpZXciLDMsImNsaWNrIl0sWzEsImNsci1jb2wtbWQtMTIiLCJpbmZvQmFyIl0sWzEs'@; put 'ImluZm9CYXItdGV4dCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiaW5mb0Jhci10b2dnbGUiXSxbInR5cGUiLCJidXR0b24iLDEsImluZm9CYXItdG9nZ2xlIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjYXJldCBkb3duIl0sWzEsImgtNzB2aCIsImQtZmxleCIs'@; put 'Imp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0sWzEsIm10LTEwIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiZXJyb3Itc3RhbmRhcmQiLDEsImVycm9y'@; put 'LWljb24iXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJtdC01LWkiLDMsImNsaWNrIl0sWyJjbHJQb3NpdGlvbiIsInRvcC1yaWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3Np'@; put 'dGlvbiIsInRvcC1yaWdodCIsImNsclNpemUiLCJsZyJdLFsxLCJ2YS1kaXNhYmxlZC10ZXh0Il0sWyJyb2xlIiwic3RhdHVzIiwiYXJpYS1saXZlIiwicG9saXRlIiwxLCJ2YS1maWx0ZXItc3RhdHVzIl0sWzEsInZhLXBlbmRpbmctdGV4dCJdLFsxLCJ2YS1sb2FkaW5nLXRleHQiXSxbMSwi'@; put 'dmEtdG9nZ2xlIl0sWyJ0eXBlIiwiY2hlY2tib3giLDMsImNoYW5nZSIsImNoZWNrZWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJkaXNhYmxlZCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMs'@; put 'ImNsaWNrIiwiZGlzYWJsZWQiXSxbInJvbGUiLCJkaWFsb2ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWRpYWxvZyIsIm1vZGFsLWxnIl0sWzEsIm1vZGFsLWNvbnRlbnQiXSxbMSwibW9kYWwtaGVhZGVyIl0sWyJhcmlhLWxhYmVsIiwiQ2xvc2UiLCJ0eXBlIiwiYnV0dG9uIiwx'@; put 'LCJjbG9zZSJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjbG9zZSJdLFsxLCJkLWJsb2NrIiwidy0xMDAiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLXJlZCJdLFsxLCJjbHItb2Zmc2V0LW1kLTIiLCJjbHItY29sLW1kLTgiXSxbMSwibW9kYWwtZm9vdGVyIiwianVzdGlmeS1jb250'@; put 'ZW50LWNlbnRlci1pIl0sWyJpZCIsInN1Ym1pdEJ0biIsInR5cGUiLCJzdWJtaXQiLCJ0YWJpbmRleCIsIjAiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLCJtLTAiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbImlkIiwiY2FuY2VsU3VibWl0QnRuIiwidHlwZSIsImJ1'@; put 'dHRvbiIsInRhYmluZGV4IiwiMCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsInRleHQtYXJlYS1mdWxsLXdpZHRoIl0sWyJmb3IiLCJmb3JtRmllbGRzXzgiLDEsIm1iLTUiLCJkLWJsb2NrIl0sWyJjbHJUZXh0YXJlYSIsIiIsInRhYmluZGV4IiwiMCIs'@; put 'InR5cGUiLCJ0ZXh0IiwiaWQiLCJmb3JtRmllbGRzXzgiLDEsInN1Ym1pdC1yZWFzb24iLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwiZGlzYWJsZWQiLCJ2YWx1ZSJdLFsicm9sZSIsImRpYWxvZyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtZGlhbG9nIl1dLHRlbXBsYXRl'@; put 'OmZ1bmN0aW9uKGksbyl7aWYoMSZpKXtjb25zdCBhPXduKCk7SigwLCJtYWluIiw3KSgxLCJjbHItbW9kYWwiLDgpLHd0KCJmaWxlT3ZlciIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8uZmlsZU92ZXJCYXNlKHUpKX0pKCJmaWxlRHJvcCIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEp'@; put 'LFhlKG8uYXR0YWNoRmlsZSh1LCEwKSl9KSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5zaG93VXBsb2FkTW9kYWwsdSl8fChvLnNob3dVcGxvYWRNb2RhbD11KSxYZSh1KX0pLEooMiwiaDMiLDkpLFNlKDMsIlVwbG9hZCBGaWxlIiksdGUo'@; put 'KSxKKDQsImRpdiIsMTApKDUsImRpdiIsMTEpKDYsInNwYW4iKSxTZSg3LCJEcm9wIGZpbGUgYW55d2hlcmUgdG8gdXBsb2FkISIpLHRlKCkoKSxKKDgsImRpdiIsMTIpKDksImRpdiIsMTMpKDEwLCJkaXYiLDE0KSgxMSwiZGl2IiwxNSkoMTIsImNsci1yYWRpby1jb250YWluZXIiLDE2KSgx'@; put 'MywiY2xyLXJhZGlvLXdyYXBwZXIiKSgxNCwiaW5wdXQiLDE3KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uZW5jb2RpbmcsdSl8fChvLmVuY29kaW5nPXUpLFhlKHUpfSksdGUoKSxKKDE1LCJsYWJlbCIpLFNlKDE2LCJVVEYtOCIpLHRlKCkoKSxK'@; put 'KDE3LCJjbHItcmFkaW8td3JhcHBlciIpKDE4LCJpbnB1dCIsMTgpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5lbmNvZGluZyx1KXx8KG8uZW5jb2Rpbmc9dSksWGUodSl9KSx0ZSgpLEooMTksImxhYmVsIiksU2UoMjAsIldMQVRJTjEiKSx0ZSgp'@; put 'KCkoKSgpKCksdnQoMjEsRG9uLDYsMSwiZGl2IiwxOSksdnQoMjIsTG9uLDMsMSwiZGl2IiwyMCksSigyMywiZGl2IiwxNCksdnQoMjQsT29uLDIsMSwiYnV0dG9uIiwyMSksdnQoMjUsTm9uLDIsMCwiYnV0dG9uIiwyMiksdGUoKSx2dCgyNixGb24sMywwLCJkaXYiLDIzKSx0ZSgpKCkoKSxJ'@; put 'dCgyNywiZGl2IiwyNCksdGUoKSx2dCgyOCxQb24sMSwxMiwiYXBwLWVkaXQtcmVjb3JkIiwyNSksSigyOSwiZGl2IiwyNiwwKSx2dCgzMSxIb24sMiwwLCJkaXYiLDI3KSxKKDMyLCJkaXYiLDI4KSx3dCgiZmlsZURyYWdnZWRPdmVyIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLm9u'@; put 'U2hvd1VwbG9hZE1vZGFsKCkpfSksSigzMywiZGl2IiwyOSksdnQoMzQsVm9uLDksMiwiZGl2IiwzMCksSigzNSwiZGl2IiwzMSksWW4oMzYsWm9uLDEwLDYsImg0IiwzMiksdGUoKSx2dCgzNyx0YW4sNCwzLCJkaXYiLDMzKSx2dCgzOCxyYW4sNyw0LCJkaXYiLDM0KSx0ZSgpLEooMzksImRp'@; put 'diIsMzUpLHZ0KDQwLGFhbiw0LDIsImRpdiIsMzYpLEooNDEsImRpdiIsMzcpKDQyLCJkaXYiLDM4KSxJdCg0MywiaG90LXRhYmxlIiwzOSwxKSx0ZSgpLEooNDUsImRpdiIpLHZ0KDQ2LGNhbiw1LDIsImNsci10b29sdGlwIiksdnQoNDcsZ2FuLDYsNCwiZGl2Iiw0MCksdnQoNDgsbWFuLDMs'@; put 'MSwicCIsNDEpLHRlKCksdnQoNDkseWFuLDE2LDYsImRpdiIsNDIpLEooNTAsImNsci1tb2RhbCIsNDMpLGhpKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLnN1Ym1pdExpbWl0Tm90aWNlLHUpfHwoby5zdWJtaXRMaW1pdE5vdGljZT11KSxYZSh1'@; put 'KX0pLEooNTEsImgzIiw5KSxTZSg1MiwiTm90aWNlIiksdGUoKSxKKDUzLCJkaXYiLDEwKSg1NCwicCIsNDQpLFNlKDU1KSx0ZSgpKCksSig1NiwiZGl2IiwyNCkoNTcsImJ1dHRvbiIsNDUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5zdWJtaXRMaW1pdE5vdGlj'@; put 'ZT0hMSl9KSxTZSg1OCwiIENhbmNlbCAiKSx0ZSgpLEooNTksImJ1dHRvbiIsNDUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby51cGxvYWRQYXJzZWRGaWxlcygpLFhlKG8uc3VibWl0TGltaXROb3RpY2U9ITEpfSksU2UoNjAsIiBTdWJtaXQgIiksdGUoKSgpKCksSig2'@; put 'MSwiY2xyLW1vZGFsIiw0MyksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uYmFkRWRpdCx1KXx8KG8uYmFkRWRpdD11KSxYZSh1KX0pLEooNjIsImgzIiw5KSxTZSg2MyksdGUoKSxKKDY0LCJkaXYiLDEwKSg2NSwicCIpLFNlKDY2KSx0ZSgp'@; put 'KCksSig2NywiZGl2IiwyNCkoNjgsImJ1dHRvbiIsNDUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5iYWRFZGl0PSExKX0pLFNlKDY5LCIgT2sgIiksdGUoKSgpKCksSig3MCwiY2xyLW1vZGFsIiw0MyksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24o'@; put 'dSl7cmV0dXJuIFllKGEpLGZpKG8ucGtOdWxsLHUpfHwoby5wa051bGw9dSksWGUodSl9KSxKKDcxLCJoMyIsOSksU2UoNzIsIkVycm9yIiksdGUoKSxKKDczLCJkaXYiLDEwKSg3NCwicCIpLFNlKDc1LCIgTnVsbCB2YWx1ZXMgb3IgaW5jb3JyZWN0IGRhdGEgdHlwZXMgY2Fubm90IGJlIHN1'@; put 'Ym1pdHRlZCBmb3IgUHJpbWFyeSBLZXkgY29sdW1ucyAiKSx0ZSgpKCksSig3NiwiZGl2IiwyNCkoNzcsImJ1dHRvbiIsNDYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby5wa051bGw9ITEsWGUoby5iYWRFZGl0PSExKX0pLFNlKDc4LCIgT2sgIiksdGUoKSgpKCksSig3'@; put 'OSwiY2xyLW1vZGFsIiw0MyksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8ubm9Qa051bGwsdSl8fChvLm5vUGtOdWxsPXUpLFhlKHUpfSksSig4MCwiaDMiLDkpLFNlKDgxLCJFcnJvciIpLHRlKCksSig4MiwiZGl2IiwxMCkoODMsInAiKSxT'@; put 'ZSg4NCwiSW5jb3JyZWN0IGRhdGEgdHlwZXMgaW4gbm9uLVByaW1hcnkgS2V5IGNvbHVtbnMiKSx0ZSgpKCksSig4NSwiZGl2IiwyNCkoODYsImJ1dHRvbiIsNDYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby5ub1BrTnVsbD0hMSxYZShvLmJhZEVkaXQ9ITEpfSksU2Uo'@; put 'ODcsIiBPayAiKSx0ZSgpKCkoKSxKKDg4LCJjbHItbW9kYWwiLDQ3KSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5wa0R1cHMsdSl8fChvLnBrRHVwcz11KSxYZSh1KX0pLEooODksImgzIiw5KSxTZSg5MCwiRXJyb3IiKSx0ZSgpLEooOTEs'@; put 'ImRpdiIsMTApKDkyLCJwIiksU2UoOTMsIiBEdXBsaWNhdGUgdmFsdWVzIGNhbm5vdCBiZSBzdWJtaXR0ZWQgZm9yIFByaW1hcnkgS2V5IGNvbHVtbnMgIiksdGUoKSxKKDk0LCJwIiksU2UoOTUsIkR1cGxpY2F0ZXMgZm91bmQ6IiksdGUoKSxfbyg5NixiYW4sMyw0LCJzcGFuIiw0OCxDbyks'@; put 'dGUoKSxKKDk4LCJkaXYiLDI0KSg5OSwiYnV0dG9uIiw0Niksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLnBrRHVwcz0hMSl9KSxTZSgxMDAsIiBPayAiKSx0ZSgpKCkoKSxKKDEwMSwiY2xyLW1vZGFsIiw0MyksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rp'@; put 'b24odSl7cmV0dXJuIFllKGEpLGZpKG8udG9vTG9uZyx1KXx8KG8udG9vTG9uZz11KSxYZSh1KX0pLEooMTAyLCJoMyIsOSksU2UoMTAzLCJFcnJvciIpLHRlKCksSigxMDQsImRpdiIsMTApKDEwNSwicCIpLFNlKDEwNiwiIFRoZSBmb2xsb3dpbmcgY29sdW1ucyBoYXZlIHZhbHVlcyB0aGF0'@; put 'IGV4Y2VlZCBsZW5ndGggbGltaXRzOiAiKSx0ZSgpLF9vKDEwNyx3YW4sMiwzLCJwIixudWxsLENvKSx0ZSgpLEooMTA5LCJkaXYiLDI0KSgxMTAsImJ1dHRvbiIsNDYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby50b29Mb25nPSExLFhlKG8uY2xlYW5FeGNlZWQoKSl9'@; put 'KSxTZSgxMTEsIiBPayAiKSx0ZSgpKCkoKSgpKCkoKSgpKCksdnQoMTEyLENhbiwxNCwwLCJkaXYiLDQ5KSxKKDExMywiY2xyLW1vZGFsIiw1MCksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uZmlsdGVyLHUpfHwoby5maWx0ZXI9dSksWGUo'@; put 'dSl9KSxKKDExNCwiaDMiLDUxKSxTZSgxMTUsIiBGaWx0ZXIgZm9yIHRhYmxlOiAiKSxKKDExNiwic3BhbiIpLFNlKDExNyksdGUoKSgpLEooMTE4LCJkaXYiLDEwKSx2dCgxMTksU2FuLDIsMCwiYXBwLXF1ZXJ5IiksdGUoKSxKKDEyMCwiZGl2IiwyNCkoMTIxLCJidXR0b24iLDUyKSx3dCgi'@; put 'Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLFhlKG8ucmVzZXRGaWx0ZXIoKSl9KSxTZSgxMjIsIiByZXNldCBmaWx0ZXIgIiksdGUoKSxKKDEyMywiYnV0dG9uIiw1Myksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLmZpbHRlcj0hMSl9KSxTZSgxMjQsIiBD'@; put 'YW5jZWwgIiksdGUoKSxKKDEyNSwiYnV0dG9uIiw1NCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLnNlbmRDbGF1c2UoKSl9KSxTZSgxMjYsIiBPayAiKSx0ZSgpKCkoKSxKKDEyNywiY2xyLW1vZGFsIiw0MyksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rp'@; put 'b24odSl7cmV0dXJuIFllKGEpLGZpKG8ucXVlcnlFcnIsdSl8fChvLnF1ZXJ5RXJyPXUpLFhlKHUpfSksSigxMjgsImgzIiw5KSxTZSgxMjksIkVycm9yIiksdGUoKSxKKDEzMCwiZGl2IiwxMCkoMTMxLCJwIiksU2UoMTMyKSx0ZSgpKCksSigxMzMsImRpdiIsMjQpKDEzNCwiYnV0dG9uIiw1'@; put 'NSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLnF1ZXJ5RXJyPSExKX0pLFNlKDEzNSwiIENhbmNlbCAiKSx0ZSgpLEooMTM2LCJidXR0b24iLDQ2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLFhlKG8ucXVlcnlFcnI9ITEpfSksU2UoMTM3LCIg'@; put 'T2sgIiksdGUoKSgpKCksSigxMzgsImNsci1tb2RhbCIsNTYpLGhpKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLmRpc2NhcmRTb3VyY2VGaWxlLHUpfHwoby5kaXNjYXJkU291cmNlRmlsZT11KSxYZSh1KX0pLEooMTM5LCJoMyIsNTEpLFNlKDE0'@; put 'MCwiV2FybmluZyIpLHRlKCksSigxNDEsImRpdiIsMTApLFNlKDE0MiwiIFRoaXMgYWN0aW9uIHdpbGwgZGlzY2FyZCB0aGUgc291cmNlIGZpbGUgYW5kIGl0J3MgbG9hZGVkIGRhdGEgIiksSigxNDMsImIiKSxTZSgxNDQpLHRlKCksU2UoMTQ1LCIgRG8geW91IHdpc2ggdG8gcHJvY2VlZD8g'@; put 'IiksdGUoKSxKKDE0NiwiZGl2IiwyNCkoMTQ3LCJidXR0b24iLDUzKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLFhlKG8uZGlzY2FyZFNvdXJjZUZpbGU9ITEpfSksU2UoMTQ4LCIgQ2FuY2VsICIpLHRlKCksSigxNDksImJ1dHRvbiIsNTcpLHd0KCJjbGljayIsZnVuY3Rp'@; put 'b24oKXtyZXR1cm4gWWUoYSksby5kaXNjYXJkU291cmNlRmlsZT0hMSxYZShvLmRpc2NhcmRQZW5kaW5nRXhjZWwoITApKX0pLFNlKDE1MCwiIE9rICIpLHRlKCkoKSgpLEooMTUxLCJjbHItbW9kYWwiLDU2KSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUo'@; put 'YSksZmkoby5maWxlUGFzc3dvcmRNb2RhbCx1KXx8KG8uZmlsZVBhc3N3b3JkTW9kYWw9dSksWGUodSl9KSxKKDE1MiwiaDMiLDUxKSxTZSgxNTMsIiBQYXNzd29yZCBQcm90ZWN0ZWQgRmlsZSAiKSx0ZSgpLEooMTU0LCJkaXYiLDU4KSgxNTUsInAiLDQ0KSxTZSgxNTYsIlBsZWFzZSBlbnRl'@; put 'ciBwYXNzd29yZDoiKSx0ZSgpLEl0KDE1NywiaW5wdXQiLDU5LDIpLHRlKCksSigxNTksImRpdiIsMjQpLHZ0KDE2MCxFYW4sMiwwLCJwIiw2MCksSigxNjEsImJ1dHRvbiIsNTMpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby5maWxlUGFzc3dvcmRNb2RhbD0hMSxYZShv'@; put 'LmZpbGVQYXNzd29yZFN1YmplY3QubmV4dCh2b2lkIDApKX0pLFNlKDE2MiwiIENhbmNlbCB1cGxvYWQgIiksdGUoKSxKKDE2MywiYnV0dG9uIiw2MSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKGEpO2NvbnN0IHU9b28oMTU4KTtyZXR1cm4gby5maWxlUGFzc3dvcmRNb2RhbD0hMSxYZShv'@; put 'LmZpbGVQYXNzd29yZFN1YmplY3QubmV4dCh1LnZhbHVlKSl9KSxTZSgxNjQsIiBVbmxvY2sgIiksdGUoKSgpKCksSigxNjUsImNsci1tb2RhbCIsNTYpLGhpKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLm1hbnVhbEZpbGVFZGl0TW9kYWwsdSl8'@; put 'fChvLm1hbnVhbEZpbGVFZGl0TW9kYWw9dSksWGUodSl9KSxKKDE2NiwiaDMiLDUxKSxTZSgxNjcsIldhcm5pbmciKSx0ZSgpLEooMTY4LCJkaXYiLDEwKSxTZSgxNjksIiBNYW51YWxseSBlZGl0aW5nIHRoaXMgZGF0YSB3aWxsIG1lYW4gdGhlIHNvdXJjZSBmaWxlICIpLEooMTcwLCJiIiks'@; put 'U2UoMTcxKSx0ZSgpLFNlKDE3MiwiIHdpbGwgYmUgZGlzY2FyZGVkLiBEbyB5b3Ugd2lzaCB0byBwcm9jZWVkPyAiKSx0ZSgpLEooMTczLCJkaXYiLDI0KSgxNzQsImJ1dHRvbiIsNTMpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5tYW51YWxGaWxlRWRpdE1vZGFs'@; put 'PSExKX0pLFNlKDE3NSwiIENhbmNlbCAiKSx0ZSgpLEooMTc2LCJidXR0b24iLDU3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLG8ubWFudWFsRmlsZUVkaXRNb2RhbD0hMSxYZShvLnByZXZpZXdUYWJsZUVkaXRDb25maXJtKCkpfSksU2UoMTc3LCIgT2sgIiksdGUoKSgp'@; put 'KCksSigxNzgsImFwcC1kYXRhc2V0LWluZm8iLDYyKSxoaSgib3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uZGF0YXNldEluZm8sdSl8fChvLmRhdGFzZXRJbmZvPXUpLFhlKHUpfSksd3QoInJvd0NsaWNrZWQiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxYZShv'@; put 'LmRhdGFzZXRJbmZvTW9kYWxSb3dDbGlja2VkKHUpKX0pLHRlKCksSigxNzksImFwcC12aWV3Ym94ZXMiLDYzKSxoaSgidmlld2JveE1vZGFsQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby52aWV3Ym94ZXMsdSl8fChvLnZpZXdib3hlcz11KSxYZSh1KX0pLHRlKCksSigx'@; put 'ODAsImFwcC1jb25maXJtLW1vZGFsIiw2NCksd3QoInJlc3VsdCIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8ub25Db25maXJtTW9kYWxSZXN1bHQodSkpfSksdGUoKSxKKDE4MSwiYXBwLWJ1bGstdmFsaWRhdGlvbi1tb2RhbCIsNjUpLHd0KCJjYW5jZWwiLGZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIFllKGEpLFhlKG8uY2FuY2VsQnVsa1ZhbGlkYXRpb24oe3JldmVydDohMH0pKX0pLHRlKCl9aWYoMiZpKXtjb25zdCBhPW9vKDE1OCk7aWUoKSxydCgidXBsb2FkZXIiLG8udXBsb2FkZXIpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwhMSkoImNs'@; put 'ck1vZGFsQ2xvc2FibGUiLCJWYWxpZGF0aW5nLURRIj09PW8uZXhjZWxVcGxvYWRTdGF0ZSksZGkoImNsck1vZGFsT3BlbiIsby5zaG93VXBsb2FkTW9kYWwpLGllKDEzKSxkaSgibmdNb2RlbCIsby5lbmNvZGluZykscnQoImRpc2FibGVkIiwiIiE9by5maWxlbmFtZSksaWUoNCksZGkoIm5n'@; put 'TW9kZWwiLG8uZW5jb2RpbmcpLHJ0KCJkaXNhYmxlZCIsIiIhPW8uZmlsZW5hbWUpLGllKDMpLF90KG8uZXhjZWxGaWxlUGFyc2luZ3x8by51cGxvYWRMb2FkaW5nPy0xOjIxKSxpZSgpLF90KG8uZXhjZWxGaWxlUGFyc2luZ3x8by51cGxvYWRMb2FkaW5nPy0xOjIyKSxpZSgyKSxfdCgiVmFs'@; put 'aWRhdGluZyIhPT1vLmV4Y2VsVXBsb2FkU3RhdGU/MjQ6LTEpLGllKCksX3QoIlZhbGlkYXRpbmctRFEiPT09by5leGNlbFVwbG9hZFN0YXRlPzI1Oi0xKSxpZSgpLF90KG8uZXhjZWxGaWxlUGFyc2luZz8yNjotMSksaWUoMiksX3Qoby5jdXJyZW50RWRpdFJlY29yZEluZGV4Pi0xPzI4Oi0x'@; put 'KSxpZSgzKSxfdCghby52YWxpZGF0aW9uRG9uZSYmby5zdWJtaXQ/MzE6LTEpLGllKDMpLF90KG8udGFibGVUcnVlJiYhby5lbWJlZD8zNDotMSksaWUoKSx3cigiY2xyLWNvbC1sZy0xMiIsIW8udGFibGVUcnVlKSxpZSgpLHJ0KCJuZ1ZhciIsTjUoNzMsa29uLChudWxsPT1vLmxpYmRzP251'@; put 'bGw6by5saWJkcy5zcGxpdCgiLiIpKVswXSwobnVsbD09by5saWJkcz9udWxsOm8ubGliZHMuc3BsaXQoIi4iKSlbMV0pKSxpZSgpLF90KG8udGFibGVUcnVlPzM3Oi0xKSxpZSgpLF90KG1jKDc2LFBaZSkuaW5jbHVkZXMoby5xdWVyeVRleHQpPy0xOjM4KSxpZSgpLHJ0KCJuZ0NsYXNzIix0'@; put 'NCg3OCxSb24sIW1jKDc3LFBaZSkuaW5jbHVkZXMoby5xdWVyeVRleHQpKSksaWUoKSxfdChvLnRhYmxlVHJ1ZT8tMTo0MCksaWUoMyksd3IoImhpZGRlbiIsby5ob3RUYWJsZS5oaWRkZW4pLHJ0KCJkYXRhIixvLmhvdFRhYmxlLmRhdGEpKCJzZXR0aW5ncyIsby5ob3RUYWJsZVNldHRpbmdz'@; put 'KSxpZSgzKSxfdCghby50YWJsZVRydWV8fG8ucmVzdHJpY3Rpb25zLnJlbW92ZUFkZFJlY29yZEJ1dHRvbnx8by5pc1ZhRW1iZWQ/LTE6NDYpLGllKCksX3Qoby5pc1ZhRW1iZWQ/NDc6LTEpLGllKCksX3Qoby5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCE9PW8uSW5m'@; put 'aW5pdHkmJm8uZGF0YVNvdXJjZSYmby5kYXRhU291cmNlLmxlbmd0aD5vLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkPzQ4Oi0xKSxpZSgpLF90KG8uc3VibWl0PzQ5Oi0xKSxpZSgpLGRpKCJjbHJNb2RhbE9wZW4iLG8uc3VibWl0TGltaXROb3RpY2UpLGllKDUpLFNy'@; put 'KCIgRHVlIHRvIGN1cnJlbnQgbGljZW5jZSwgb25seSAiLG8ubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0LCIgcm93cyBpbiBhIGZpbGUgd2lsbCBiZSBzdWJtaXR0ZWQuIFRvIHJlbW92ZSB0aGUgcmVzdHJpY3Rpb24sIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxl'@; put 'ci5pbyAiKSxpZSg2KSxkaSgiY2xyTW9kYWxPcGVuIixvLmJhZEVkaXQpLGllKDIpLHByKG8uYmFkRWRpdFRpdGxlfHwiRXJyb3IiKSxpZSgzKSxwcihvLmJhZEVkaXRDYXVzZSksaWUoNCksZGkoImNsck1vZGFsT3BlbiIsby5wa051bGwpLGllKDkpLGRpKCJjbHJNb2RhbE9wZW4iLG8ubm9Q'@; put 'a051bGwpLGllKDkpLGRpKCJjbHJNb2RhbE9wZW4iLG8ucGtEdXBzKSxpZSg4KSx5byhvLmR1cGxpY2F0ZVBrSW5kZXhlcyksaWUoNSksZGkoImNsck1vZGFsT3BlbiIsby50b29Mb25nKSxpZSg2KSx5byhvLmV4Y2VlZENlbGxzKSxpZSg1KSxfdChvLm51bGxWYXJpYWJsZXM/MTEyOi0xKSxp'@; put 'ZSgpLGRpKCJjbHJNb2RhbE9wZW4iLG8uZmlsdGVyKSxydCgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDQpLFNyKCIgIixvLmxpYmRzLCIgIiksaWUoMiksX3Qoby5maWx0ZXI/MTE5Oi0xKSxpZSg2KSxydCgiY2xyTG9hZGluZyIsby5zdWJtaXRMb2Fk'@; put 'aW5nKSxpZSgyKSxkaSgiY2xyTW9kYWxPcGVuIixvLnF1ZXJ5RXJyKSxpZSg1KSxwcihvLnF1ZXJ5RXJyTWVzc2FnZSksaWUoNiksZGkoImNsck1vZGFsT3BlbiIsby5kaXNjYXJkU291cmNlRmlsZSkscnQoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSxpZSg2'@; put 'KSxwcihvLmZpbGVuYW1lKSxpZSg3KSxkaSgiY2xyTW9kYWxPcGVuIixvLmZpbGVQYXNzd29yZE1vZGFsKSxydCgiY2xyTW9kYWxTaXplIiwibWQiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDkpLF90KG8uZmlsZVVubG9ja0Vycm9yPzE2MDotMSksaWUoMykscnQoImRpc2FibGVkIixh'@; put 'LnZhbHVlLmxlbmd0aDwxKSxpZSgyKSxkaSgiY2xyTW9kYWxPcGVuIixvLm1hbnVhbEZpbGVFZGl0TW9kYWwpLHJ0KCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksaWUoNikscHIoby5maWxlbmFtZSksaWUoNyksZGkoIm9wZW4iLG8uZGF0YXNldEluZm8pLHJ0'@; put 'KCJkc21ldGEiLG8uZHNtZXRhKSgidmVyc2lvbnMiLG8udmVyc2lvbnMpLGllKCksZGkoInZpZXdib3hNb2RhbCIsby52aWV3Ym94ZXMpLGllKCkscnQoIm9wZW4iLG8uY29uZmlybU1vZGFsLm9wZW4pKCJ0aXRsZSIsby5jb25maXJtTW9kYWwudGl0bGUpKCJtZXNzYWdlIixvLmNvbmZpcm1N'@; put 'b2RhbC5tZXNzYWdlKSxpZSgpLHJ0KCJvcGVuIixvLmJ1bGtWYWxpZGF0aW9uLmFjdGl2ZSkoImRvbmUiLG8uYnVsa1ZhbGlkYXRpb24uZG9uZSkoInRvdGFsIixvLmJ1bGtWYWxpZGF0aW9uLnRvdGFsKX19LGRlcGVuZGVuY2llczpbSVplLEZoLGx1LE16LG9jLFhsLFAyLGN1LHhkLG1oLCQw'@; put 'LExwLGltLGVsLF9hZSxKX3QsdmFlLHJXLHd2LFN2LEN2LEw3LG1BLHFELERaZSxMWmUsT1plLF9XLEhpbixWaW4sem1lLGJvbixDb24sU29uLEZaZV0sc3R5bGVzOlsiLnZhLWZpbHRlci1jb250cm9sc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDouNXJlbTtmbGV4LXdy'@; put 'YXA6d3JhcH0udmEtZmlsdGVyLWNvbnRyb2xzIC52YS10b2dnbGV7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOi4zNXJlbTttYXJnaW46MDtjdXJzb3I6cG9pbnRlcn0udmEtZmlsdGVyLWNvbnRyb2xzIC52YS1wZW5kaW5nLXRleHR7Zm9udC1zdHlsZTppdGFs'@; put 'aWM7Y29sb3I6IzhhNTIwMH0udmEtbG9hZGluZy10ZXh0e2ZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiMwMDcyYTN9LnZhLWRpc2FibGVkLXRleHR7Zm9udC1zdHlsZTppdGFsaWM7b3BhY2l0eTouN31cbiJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IE1hbj1b'@; put 'e3BhdGg6IjpsaWJNZW0iLGNvbXBvbmVudDpmS30se3BhdGg6IjpsaWJNZW0vOmZpbHRlcklkIixjb21wb25lbnQ6Zkt9LHtwYXRoOiJlZGl0LXJlY29yZC86bGliTWVtIixjb21wb25lbnQ6Zkt9LHtwYXRoOiJlZGl0LXJlY29yZC86bGliTWVtLzpmaWx0ZXJJZCIsY29tcG9uZW50OmZLfV07'@; put 'bGV0IFRhbj0oKCk9Pnt2YXIgbjtjbGFzcyBle3N0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NW1vZD1HaSh7dHlwZTplfSksdGhpcy5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdkLmZvckNoaWxkKE1hbiks'@; put 'V2RdfSkpfXJldHVybiBuKCksZX0pKCkseVA9KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltx'@; put 'byxxMCxxbyxoZCxFbV19KSl9cmV0dXJuIG4oKSxlfSkoKSxZbWU9KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1p'@; put 'KHtpbXBvcnRzOltxbyxxMCxxbyxoZCxMQyxRRixFbV19KSl9cmV0dXJuIG4oKSxlfSkoKTtYRigpO2xldCBIWmU9KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2ko'@; put 'e3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxxMCxxbyxoZCxZbWUsTHcsU0VlLHN6ZSx5UCxFbV19KSl9cmV0dXJuIG4oKSxlfSkoKTtYRigpO2xldCB4YW49KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24o'@; put 'aSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltIWmUscW8saGQsVGFuLHEwLEx3LExDLEVtLCR4LFFGLHlQLFNFZSxZbWVdfSkpfXJldHVybiBuKCksZX0pKCksQWFuPSgoKT0+e3ZhciBuO2NsYXNzIGV7'@; put 'Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9bmdPbkRlc3Ryb3koKXt9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1ob21lLXJvdXRlIl1dLGhvc3RB'@; put 'dHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxzdGFuZGFsb25lOiExLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiZJdCgwLCJyb3V0ZXItb3V0bGV0Iil9LGRlcGVuZGVuY2llczpbZTddLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2Nv'@; put 'bnN0IGthbj1bInNpZGViYXJOYXYiXSxSYW49WyIqIl0sSWFuPSgpPT5bIi92aWV3L3VzZXJuYXYvdXNlcnMiXSxEYW49KCk9PlsiL3ZpZXcvdXNlcm5hdi9ncm91cHMiXSxMYW49KCk9PlsiL3ZpZXcvdXNlcm5hdi9yb2xlcyJdO2Z1bmN0aW9uIE9hbihuLGUpe2lmKDEmbil7Y29uc3QgdD13'@; put 'bigpO0ooMCwiYSIsMTcpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMykubmF2aWdhdGVUb1ZpZXdlcigpKX0pLFNlKDEsIkRhdGEiKSx0ZSgpfX1mdW5jdGlvbiBOYW4obixlKXsxJm4mJihKKDAsImEiLDExKSxTZSgxLCJBUEkgRXhwbG9yZXIiKSx0ZSgpKX1m'@; put 'dW5jdGlvbiBGYW4obixlKXsxJm4mJihKKDAsImEiLDEyKSxTZSgxLCJMaW5lYWdlIiksdGUoKSl9ZnVuY3Rpb24gUGFuKG4sZSl7MSZuJiYoSigwLCJhIiwxMyksU2UoMSwiTWV0YWRhdGEiKSx0ZSgpKX1mdW5jdGlvbiBIYW4obixlKXsxJm4mJihKKDAsImEiLDE0KSxTZSgxLCIgVXNlcnMi'@; put 'KSx0ZSgpKX1mdW5jdGlvbiBWYW4obixlKXsxJm4mJihKKDAsImEiLDE1KSxTZSgxLCJTdWJtaXR0ZWQiKSx0ZSgpKX1mdW5jdGlvbiBCYW4obixlKXsxJm4mJihKKDAsImEiLDE2KSxTZSgxLCJUbyBBcHByb3ZlIiksdGUoKSl9ZnVuY3Rpb24gamFuKG4sZSl7aWYoMSZuJiYoSigwLCJjbHIt'@; put 'ZHJvcGRvd24tbWVudSIpLHZ0KDEsT2FuLDIsMCwiYSIsMTApLHZ0KDIsTmFuLDIsMCwiYSIsMTEpLHZ0KDMsRmFuLDIsMCwiYSIsMTIpLHZ0KDQsUGFuLDIsMCwiYSIsMTMpLHZ0KDUsSGFuLDIsMCwiYSIsMTQpLHZ0KDYsVmFuLDIsMCwiYSIsMTUpLHZ0KDcsQmFuLDIsMCwiYSIsMTYpLHRl'@; put 'KCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLF90KHQuaXNNYWluUm91dGUoInZpZXciKT8xOi0xKSxpZSgpLF90KHQuaXNNYWluUm91dGUoInZpZXciKSYmIlNBU1ZJWUEiPT09dC5zZXJ2ZXJUeXBlPzI6LTEpLGllKCksX3QodC5pc01haW5Sb3V0ZSgidmlldyIpJiYiU0FTOSI9PT10LnNl'@; put 'cnZlclR5cGU/MzotMSksaWUoKSxfdCh0LmlzTWFpblJvdXRlKCJ2aWV3IikmJiJTQVM5Ij09PXQuc2VydmVyVHlwZT80Oi0xKSxpZSgpLF90KHQuaXNNYWluUm91dGUoInZpZXciKT81Oi0xKSxpZSgpLF90KHQuaXNNYWluUm91dGUoImFwcHJvdmUiKT82Oi0xKSxpZSgpLF90KHQuaXNNYWlu'@; put 'Um91dGUoImFwcHJvdmUiKT83Oi0xKX19ZnVuY3Rpb24gVWFuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDIpKDEsImNsci1kcm9wZG93biIpKDIsImJ1dHRvbiIsNyksU2UoMyksSXQoNCwiY2xyLWljb24iLDgpLHRlKCksWW4oNSxqYW4sOCw3LCJjbHItZHJvcGRvd24tbWVudSIsOSksdGUo'@; put 'KSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgzKSxTcigiICIsdC5nZXRTdWJQYWdlKCksIiAiKX19ZnVuY3Rpb24gemFuKG4sZSl7MSZuJiZJdCgwLCJjbHItdGFiLWNvbnRlbnQiKX1mdW5jdGlvbiBXYW4obixlKXsxJm4mJkl0KDAsImNsci10YWItY29udGVudCIpfWZ1bmN0aW9uIFlhbihu'@; put 'LGUpe2lmKDEmbiYmKEooMCwiY2xyLXRhYiIpKDEsImJ1dHRvbiIsMTgpKDIsInAiLDE5KSxJdCgzLCJjbHItaWNvbiIsMjMpLFNlKDQsIiBSb2xlcyAiKSx0ZSgpKCksWW4oNSxXYW4sMSwwLCJjbHItdGFiLWNvbnRlbnQiLDIyKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoKSxydCgi'@; put 'cm91dGVyTGluayIsbWMoMixMYW4pKSxpZSg0KSxydCgiY2xySWZBY3RpdmUiLHQuaXNNYWluUm91dGUoIi92aWV3L3VzZXJuYXYvcm9sZXMiKSl9fWZ1bmN0aW9uIFphbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRhYnMiLDMpKDEsImNsci10YWIiKSgyLCJidXR0b24iLDE4KSgzLCJwIiwx'@; put 'OSksSXQoNCwiY2xyLWljb24iLDIwKSxTZSg1LCIgVXNlcnMgIiksdGUoKSgpLEl0KDYsImNsci10YWItY29udGVudCIpLHRlKCksSig3LCJjbHItdGFiIikoOCwiYnV0dG9uIiwxOCkoOSwicCIsMTkpLEl0KDEwLCJjbHItaWNvbiIsMjEpLFNlKDExLCIgR3JvdXBzICIpLHRlKCkoKSxZbigx'@; put 'Mix6YW4sMSwwLCJjbHItdGFiLWNvbnRlbnQiLDIyKSx0ZSgpLHZ0KDEzLFlhbiw2LDMsImNsci10YWIiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgyKSxydCgicm91dGVyTGluayIsbWMoNCxJYW4pKSxpZSg2KSxydCgicm91dGVyTGluayIsbWMoNSxEYW4pKSxpZSg0KSxydCgiY2xy'@; put 'SWZBY3RpdmUiLHQuaXNNYWluUm91dGUoIi92aWV3L3VzZXJuYXYvZ3JvdXBzIikpLGllKCksX3QoIlNBUzkiPT09dC5zZXJ2ZXJUeXBlPzEzOi0xKX19ZnVuY3Rpb24gR2FuKG4sZSl7MSZuJiYoSigwLCJjbHItZHJvcGRvd24tbWVudSIpKDEsImEiLDI0KSxTZSgyLCJUYWJsZXMiKSx0ZSgp'@; put 'LEooMywiYSIsMjUpLFNlKDQsIkV4Y2VsIE1hcHMiKSx0ZSgpLEooNSwiYSIsMjYpLFNlKDYsIk11bHRpIExvYWQiKSx0ZSgpKCkpfWZ1bmN0aW9uICRhbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwyKSgxLCJjbHItZHJvcGRvd24iKSgyLCJidXR0b24iLDcpLFNlKDMpLEl0KDQsImNsci1p'@; put 'Y29uIiw4KSx0ZSgpLFluKDUsR2FuLDcsMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDkpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMyksU3IoIiAiLHQuZ2V0U3ViUGFnZSgpLCIgIil9fWxldCAkNj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvKXt0aGlzLl9yb3V0'@; put 'ZXI9cix0aGlzLmV2ZW50U2VydmljZT1pLHRoaXMuX3Nhc1NlcnZpY2U9byx0aGlzLnNjcm9sbGVkVG9Cb3R0b209bmV3IEtyLHRoaXMuc2lkZWJhck9wZW49ITAsdGhpcy5zaWRlYmFyV2lkdGg9bnVsbCx0aGlzLnNpZGViYXJNYXhXaWR0aD1udWxsLHRoaXMucmVzaXppbmc9ITEsdGhpcy5z'@; put 'YXNqc0NvbmZpZz1uZXcgeHAuU0FTanNDb25maWcsdGhpcy5zYXNqc0NvbmZpZz10aGlzLl9zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5zZXJ2ZXJUeXBlPXRoaXMuX3Nhc1NlcnZpY2UuZ2V0U2VydmVyVHlwZSgpfW5nT25Jbml0KCl7dGhpcy5ldmVudFNlcnZpY2Uub25TaWRl'@; put 'YmFyVG9nZ2xlLnN1YnNjcmliZShyPT57dGhpcy5zaWRlYmFyT3Blbj1yP3Iub3BlbjohdGhpcy5zaWRlYmFyT3Blbix0aGlzLmV2ZW50U2VydmljZS5kaXNwYXRjaEV2ZW50KCJyZXNpemUiKX0pfW9uVHJlZVNjcm9sbChyKXtsZXQgaT1yLnRhcmdldDtpLnNjcm9sbFRvcD49aS5zY3JvbGxI'@; put 'ZWlnaHQtaS5vZmZzZXRIZWlnaHQtMTAmJnRoaXMuc2Nyb2xsZWRUb0JvdHRvbS5lbWl0KCl9aXNNYWluUm91dGUocil7cmV0dXJuIHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMocil9Z2V0U3ViUGFnZSgpe3JldHVybiB0aGlzLl9yb3V0ZXIudXJsLnNwbGl0KCI/IilbMF0uc3BsaXQoIi8i'@; put 'KVsyXX1uYXZpZ2F0ZVRvVmlld2VyKCl7VW4udmlld2VyLmN1cnJlbnRTZWxlY3Rpb249IiIsdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1yZXNpemVTdGFydCgpe3RoaXMucmVzaXppbmc9ITAsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJzZWxlY3Qtbm9u'@; put 'ZSIpfXJlc2l6ZUVuZCgpe3RoaXMucmVzaXppbmc9ITEsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3Qtbm9uZSIpfW9uTW91c2VNb3ZlKHIpe2lmKHRoaXMucmVzaXppbmcpe3RoaXMuc2lkZWJhcldpZHRoPXIuY2xpZW50WDtsZXQgaT1kb2N1bWVudC5nZXRFbGVtZW50'@; put 'c0J5Q2xhc3NOYW1lKCJuYXYtdHJlZSIpWzBdO3RoaXMuc2lkZWJhcldpZHRoJiZ0aGlzLmlzT3ZlcmZsb3duKGkpJiYodGhpcy5zaWRlYmFyTWF4V2lkdGg9dGhpcy5zaWRlYmFyV2lkdGg+PTM3NT90aGlzLnNpZGViYXJXaWR0aCsxMDp0aGlzLnNpZGViYXJNYXhXaWR0aCl9fW9uTW91c2VV'@; put 'cChyKXt0aGlzLnJlc2l6aW5nJiZ0aGlzLnJlc2l6ZUVuZCgpfWlzT3ZlcmZsb3duKHIpe3JldHVybiByLnNjcm9sbFdpZHRoPnIuY2xpZW50V2lkdGh9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUodmMpLHplKHVkKSx6ZShp'@; put 'YykpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtc2lkZWJhciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaSxvKXtpZigxJmkmJldvKGthbiw1KSwyJmkpe2xldCBhO2NpKGE9dWkoKSkmJihvLnNpZGViYXJOYXY9YS5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVu'@; put 'Y3Rpb24oaSxvKXsxJmkmJnd0KCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGwpe3JldHVybiBvLm9uTW91c2VNb3ZlKGwpfSxQOCkoIm1vdXNldXAiLGZ1bmN0aW9uKGwpe3JldHVybiBvLm9uTW91c2VVcChsKX0sUDgpfSxvdXRwdXRzOntzY3JvbGxlZFRvQm90dG9tOiJzY3JvbGxlZFRvQm90dG9t'@; put 'In0sc3RhbmRhbG9uZTohMSxuZ0NvbnRlbnRTZWxlY3RvcnM6UmFuLGRlY2xzOjksdmFyczoxMyxjb25zdHM6W1sic2lkZWJhck5hdiIsIiJdLFsiaWQiLCJzaWRlYmFyTmF2Il0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJzdWItZHJvcGRvd24iXSxbMSwicC0xMCJd'@; put 'LFsxLCJuYXYtZGl2aWRlciJdLFsxLCJuYXYtdHJlZSIsMywic2Nyb2xsIl0sWzEsInJlc2l6ZS1oYW5kbGUiLDMsIm1vdXNlZG93biJdLFsiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIiwxLCJkcm9wZG93bi10b2dnbGUiLCJidG4iLCJidG4tcHJpbWFyeSJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVl'@; put 'Iiwic2hhcGUiLCJjYXJldCBkb3duIl0sWzQsImNscklmT3BlbiJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L3ZpeWEtYXBpLWV4cGxvcmVyIiwicm91dGVy'@; put 'TGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L2xpbmVhZ2UiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvbWV0YWRhdGEiLCJyb3V0'@; put 'ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdiIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvcmV2aWV3L2FwcHJvdmUvc3Vi'@; put 'bWl0dGVkIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi9yZXZpZXcvYXBwcm92ZS90b2FwcHJvdmUiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJM'@; put 'aW5rQWN0aXZlIiwiYWN0aXZlIiwzLCJjbGljayJdLFsiY2xyVGFiTGluayIsIiIsMSwidXNlci1uYXYtYnRuIiwzLCJyb3V0ZXJMaW5rIl0sWzEsInplcm8tbWFyZ2luIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsInVzZXIiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBl'@; put 'IiwidXNlcnMiXSxbNCwiY2xySWZBY3RpdmUiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiYmxvY2tzLWdyb3VwIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2hvbWUvdGFibGVzIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVy'@; put 'dGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi9ob21lL2V4Y2VsLW1hcHMiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2hvbWUvbXVsdGktbG9hZCIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXV0s'@; put 'dGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXtpZigxJmkpe2NvbnN0IGE9d24oKTtmbygpLEooMCwiY2xyLXZlcnRpY2FsLW5hdiIsMSwwKSx2dCgyLFVhbiw2LDEsImRpdiIsMiksdnQoMyxaYW4sMTQsNiwiY2xyLXRhYnMiLDMpLHZ0KDQsJGFuLDYsMSwiZGl2IiwyKSxJdCg1LCJkaXYiLDQpLEoo'@; put 'NiwiZGl2Iiw1KSx3dCgic2Nyb2xsIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vblRyZWVTY3JvbGwodSkpfSksV3IoNyksdGUoKSxKKDgsInNwYW4iLDYpLHd0KCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLFhlKG8ucmVzaXplU3RhcnQoKSl9KSx0ZSgpKCl9'@; put 'MiZpJiYoTzIoIndpZHRoIixvLnNpZGViYXJXaWR0aCwicHgiKSgibWF4LXdpZHRoIixvLnNpZGViYXJNYXhXaWR0aCwicHgiKSx3cigiY2xvc2VkIiwhby5zaWRlYmFyT3BlbikoInJlc2l6aW5nIixvLnJlc2l6aW5nKSxpZSgyKSxfdChvLmlzTWFpblJvdXRlKCJ2aWV3Iik/MjotMSksaWUo'@; put 'KSxfdChvLmlzTWFpblJvdXRlKCJ2aWV3L3VzZXJuYXYiKT8zOi0xKSxpZSgpLF90KG8uaXNNYWluUm91dGUoImhvbWUiKT80Oi0xKSxpZSg0KSx3cigicmVzaXppbmciLG8ucmVzaXppbmcpKX0sZGVwZW5kZW5jaWVzOltjdSxoTSxMcCx4dixrdiwkYixBdixUdixaYixsYWUsdWFlLG83LGpi'@; put 'LFViLFAyLEpFXSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtmdW5jdGlvbiBxYW4obixlKXsxJm4mJkl0KDAsImNsci1pY29uIiw5KX1mdW5jdGlvbiBLYW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiwxMSksd3QoImNsaWNrIixmdW5jdGlv'@; put 'bigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIGkubGlicmFyaWVzU2VhcmNoPSIiLFhlKGkubGlicmFyeU9uRmlsdGVyKCkpfSksdGUoKX19ZnVuY3Rpb24gWGFuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiwyKSgxLCJkaXYiLDcpKDIsImlucHV0'@; put 'Iiw4LDApLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCk7cmV0dXJuIGZpKG8ubGlicmFyaWVzU2VhcmNoLGkpfHwoby5saWJyYXJpZXNTZWFyY2g9aSksWGUoaSl9KSx3dCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkubGli'@; put 'cmFyeU9uRmlsdGVyKCkpfSksdGUoKSx2dCg0LHFhbiwxLDAsImNsci1pY29uIiw5KSx2dCg1LEthbiwxLDAsImNsci1pY29uIiwxMCksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1vbygzKSxyPVRlKCk7aWUoMiksZGkoIm5nTW9kZWwiLHIubGlicmFyaWVzU2VhcmNoKSxpZSgyKSxfdCh0LnZh'@; put 'bHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+MD81Oi0xKX19ZnVuY3Rpb24gUWFuKG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsOSl9ZnVuY3Rpb24gSmFuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNvbiIsMTgpLHd0KCJjbGljayIsZnVu'@; put 'Y3Rpb24oKXtZZSh0KSxUZSgpO2NvbnN0IGk9b28oMyksbz1UZSgyKS4kaW1wbGljaXQsYT1UZSgpO3JldHVybiBpLnZhbHVlPSIiLG8uc2VhcmNoU3RyaW5nPSIiLFhlKGEudHJlZU9uRmlsdGVyKG8sInRhYmxlcyIpKX0pLHRlKCl9fWZ1bmN0aW9uIGVzbihuLGUpe2lmKDEmbil7Y29uc3Qg'@; put 'dD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMikoMSwiZGl2Iiw3KSgyLCJpbnB1dCIsMTYsMSksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMikuJGltcGxpY2l0O3JldHVybiBmaShvLnNlYXJjaFN0cmluZyxpKXx8KG8uc2VhcmNoU3RyaW5nPWkp'@; put 'LFhlKGkpfSksd3QoImtleXVwIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMikuJGltcGxpY2l0O3JldHVybiBYZShUZSgpLnRyZWVPbkZpbHRlcihpLCJ0YWJsZXMiKSl9KSx0ZSgpLHZ0KDQsUWFuLDEsMCwiY2xyLWljb24iLDkpLHZ0KDUsSmFuLDEsMCwiY2xyLWljb24iLDE3KSx0'@; put 'ZSgpKCl9aWYoMiZuKXtjb25zdCB0PW9vKDMpLHI9VGUoMikuJGltcGxpY2l0O2llKDIpLGRpKCJuZ01vZGVsIixyLnNlYXJjaFN0cmluZyksaWUoMiksX3QodC52YWx1ZS5sZW5ndGg8MT80Oi0xKSxpZSgpLF90KHQudmFsdWUubGVuZ3RoPjA/NTotMSl9fWZ1bmN0aW9uIHRzbihuLGUpezEm'@; put 'biYmSXQoMCwiY2xyLWljb24iLDIxKX1mdW5jdGlvbiBuc24obixlKXsxJm4mJkl0KDAsImNsci1pY29uIiwyMil9ZnVuY3Rpb24gcnNuKG4sZSl7MSZuJiYoSigwLCJjbHItdG9vbHRpcC1jb250ZW50IiwyMykoMSwic3BhbiIpLFNlKDIsIiBUbyB1bmxvY2sgYWxsIHRhYmxlcywgY29udGFj'@; put 'dCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvICIpLHRlKCkoKSl9ZnVuY3Rpb24gaXNuKG4sZSl7MSZuJiZZbigwLHJzbiwzLDAsImNsci10b29sdGlwLWNvbnRlbnQiLDI0KX1mdW5jdGlvbiBvc24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10b29sdGlwIikoMSwiYnV0'@; put 'dG9uIiwyMCksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkubmdWYXIsbz1UZSgpLiRpbXBsaWNpdCxhPVRlKDIpLiRpbXBsaWNpdCxsPVRlKCk7cmV0dXJuIFhlKGk/IiI6bC5vblRhYmxlQ2xpY2sobyxhKSl9KSx2dCgyLHRzbiwxLDAsImNsci1pY29uIiwyMSkoMyxuc24s'@; put 'MSwwLCJjbHItaWNvbiIsMjIpLFNlKDQpLHRlKCksdnQoNSxpc24sMSwwLCJjbHItdG9vbHRpcC1jb250ZW50IiwyMyksdGUoKX1pZigyJm4pe2xldCB0O2NvbnN0IHI9ZS5uZ1ZhcixpPVRlKCkuJGltcGxpY2l0LG89VGUoMikuJGltcGxpY2l0LGE9VGUoKTtpZSgpLHdyKCJkYy1sb2NrZWQt'@; put 'Y29udHJvbCIscikoImFjdGl2ZSIsYS5saWJUYWJBY3RpdmUoby5MSUJSQVJZUkVGLGkpKSxpZSgpLF90KCEwPT09KHQ9aS5pbmNsdWRlcygiLUZDIikpPzI6ITE9PT10PzM6LTEpLGllKDIpLFNyKCIgIixpLnJlcGxhY2UoIi1GQyIsIiIpLCIgIiksaWUoKSxfdChyPzU6LTEpfX1mdW5jdGlv'@; put 'biBhc24obixlKXtpZigxJm4mJihKKDAsImNsci10cmVlLW5vZGUiKSxZbigxLG9zbiw2LDcsImNsci10b29sdGlwIiwxOSksdGUoKSksMiZuKXtjb25zdCB0PWUuJGluZGV4LHI9VGUoMyk7aWUoKSxydCgibmdWYXIiLHQrMT5yLmxpY2VuY2VTdGF0ZS52YWx1ZS50YWJsZXNfaW5fbGlicmFy'@; put 'eV9saW1pdCl9fWZ1bmN0aW9uIHNzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMTMpLHd0KCJjbGljayIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIGEudHJlZU5vZGVDbGlja2VkKGksbyksWGUo'@; put 'YS5saWI9by5MSUJSQVJZUkVGKX0pLGhpKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRpbXBsaWNpdDtyZXR1cm4gZmkoby5leHBhbmRlZCxpKXx8KG8uZXhwYW5kZWQ9aSksWGUoaSl9KSxKKDEsInAiLDE0KSx3dCgiY2xpY2siLGZ1bmN0aW9u'@; put 'KCl7WWUodCk7Y29uc3QgaT1UZSgpLiRpbXBsaWNpdCxvPVRlKCk7cmV0dXJuIG8ubGliPWkuTElCUkFSWVJFRixYZShvLmxpYnJhcnlPbkNsaWNrKGkuTElCUkFSWVJFRixpKSl9KSxJdCgyLCJjbHItaWNvbiIsMTUpLFNlKDMpLHRlKCksdnQoNCxlc24sNiwzLCJjbHItdHJlZS1ub2RlIiwy'@; put 'KSxfbyg1LGFzbiwyLDEsImNsci10cmVlLW5vZGUiLG51bGwsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O3dyKCJjbHItZXhwYW5kZWQiLHQuZXhwYW5kZWQpLGRpKCJjbHJFeHBhbmRlZCIsdC5leHBhbmRlZCkscnQoImNsckxvYWRpbmciLHQubG9hZGluZ1RhYmxl'@; put 'cyYmIXQudGFibGVzKSxpZSgzKSxTcigiICIsdC5MSUJSQVJZUkVGLCIgIiksaWUoKSxfdCh0LnRhYmxlcz80Oi0xKSxpZSgpLHlvKHQudGFibGVzKX19ZnVuY3Rpb24gbHNuKG4sZSl7MSZuJiZ2dCgwLHNzbiw3LDYsImNsci10cmVlLW5vZGUiLDEyKSwyJm4mJl90KGUuJGltcGxpY2l0Lmhp'@; put 'ZGRlbj8tMTowKX1mdW5jdGlvbiBjc24obixlKXsxJm4mJihKKDAsImRpdiIsNSkoMSwiZGl2IiwyNSkoMiwic3BhbiIsMjYpLFNlKDMsIiBMb2FkaW5nLi4uICIpLHRlKCkoKSgpKX1mdW5jdGlvbiB1c24obixlKXsxJm4mJihKKDAsInAiLDI4KSxTZSgxLCIgUGxlYXNlIHNlbGVjdCBhIHRh'@; put 'YmxlICIpLHRlKCkpfWZ1bmN0aW9uIGRzbihuLGUpezEmbiYmKEooMCwicCIsMjgpLFNlKDEsIiBObyBFZGl0YWJsZSBUYWJsZXMgQ29uZmlndXJlZCAiKSx0ZSgpKX1mdW5jdGlvbiBoc24obixlKXtpZigxJm4mJihKKDAsImRpdiIsNiksSXQoMSwiaW1nIiwyNyksdnQoMix1c24sMiwwLCJw'@; put 'IiwyOCksdnQoMyxkc24sMiwwLCJwIiwyOCksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMiksX3QoKG51bGw9PXQudHJlZU5vZGVMaWJyYXJpZXM/bnVsbDp0LnRyZWVOb2RlTGlicmFyaWVzLmxlbmd0aCk+MD8yOi0xKSxpZSgpLF90KChudWxsPT10LnRyZWVOb2RlTGlicmFyaWVzP251'@; put 'bGw6dC50cmVlTm9kZUxpYnJhcmllcy5sZW5ndGgpPDE/MzotMSl9fWxldCBmc249KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwsdSl7dGhpcy5yb3V0ZT1yLHRoaXMucm91dGVyPWksdGhpcy5saWNlbmNlU2VydmljZT1vLHRoaXMuaGVscGVyU2VydmljZT1hLHRo'@; put 'aXMuZXZlbnRTZXJ2aWNlPWwsdGhpcy5zYXNTZXJ2aWNlPXUsdGhpcy50cmVlTm9kZUxpYnJhcmllcz1udWxsLHRoaXMubGlicmFyaWVzU2VhcmNoPSIiLHRoaXMubGliPSIiLHRoaXMudGFibGU9IiIsdGhpcy5lbmNvZGluZz0iVVRGLTgiLHRoaXMubG9hZGluZz0hMCx0aGlzLmxpY2VuY2VT'@; put 'dGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZX1jb2xsYXBzZUxpYnJhcnlJdGVtcyhyLGkpe3IuZm9yRWFjaChvPT57by5MSUJSQVJZSUQhPT1pLkxJQlJBUllJRCYmKG8uZXhwYW5kZWQ9ITEpfSl9dHJlZU5vZGVDbGlja2VkKHIsaSl7IkNvbGxhcHNlIj09PXIudGFyZ2V0'@; put 'LnRpdGxlJiZ0aGlzLmNvbGxhcHNlTGlicmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLGkpfWxpYnJhcnlPbkNsaWNrKHIsaSl7aS5leHBhbmRlZD0haS5leHBhbmRlZCxpLmV4cGFuZGVkJiYhdGhpcy50YWJsZSYmdGhpcy5zZWxlY3RMaWJyYXJ5KHIsITEsaSksdGhpcy5jb2xsYXBzZUxpYnJh'@; put 'cnlJdGVtcyh0aGlzLmxpYnJhcmllcyxpKX1zZWxlY3RMaWJyYXJ5KHIsaSxvKXtvLmxvYWRpbmdUYWJsZXM9ITA7bGV0IGEsbD1bXTtpZih0aGlzLmxpYnNBbmRUYWJsZXMmJihhPXRoaXMubGlic0FuZFRhYmxlc1tyXSx0aGlzLnRhYmxlPXZvaWQgMCwiUGxlYXNlIHNlbGVjdCBsaWJyYXJ5'@; put 'IiE9PXIpKXtsZXQgdT1hLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4tMT09PWwuaW5kZXhPZihnKSYmKGwucHVzaChnKSwhMCl9KTt0aGlzLnRhYmxlcz11LFVuLmVkaXRvci5saWJyYXJpZXM9dGhpcy5saWJyYXJpZXN9VW4uZWRpdG9yLmxpYnJhcnk9cixpfHx0aGlzLmNsZWFyR2xvYmFs'@; put 'c0ZpbHRlcigpLG8ubG9hZGluZ1RhYmxlcz0hMSxvLmV4cGFuZGVkPSEwfXNlbGVjdFRhYmxlKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7by5saWJUYWI9by5saWIrIi4iK28udGFibGUsby5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksVW4uZWRpdG9yLnRhYmxl'@; put 'PXIsaXx8by5jbGVhckdsb2JhbHNGaWx0ZXIoKX0pKCl9Y2xlYXJHbG9iYWxzRmlsdGVyKCl7VW4uZWRpdG9yLmZpbHRlci5saWJkcz0iIixVbi5lZGl0b3IuZmlsdGVyLndoZXJlQ2xhdXNlPSIiLFVuLmVkaXRvci5maWx0ZXIuZ3JvdXBMb2dpYz0iIixVbi5lZGl0b3IuZmlsdGVyLmNsYXVz'@; put 'ZXM9W10sVW4uZWRpdG9yLmZpbHRlci52YWxzPVtdLFVuLmVkaXRvci5maWx0ZXIuY29scz1bXX1saWJUYWJBY3RpdmUocixpKXtyZXR1cm4hKCF0aGlzLmxpYnx8IXRoaXMudGFibGUpJiZyPT09dGhpcy5saWImJmk9PT10aGlzLnRhYmxlfXRyZWVPbkZpbHRlcihyLGkpe3RoaXMuaGVscGVy'@; put 'U2VydmljZS50cmVlT25GaWx0ZXIocixpKX1saWJyYXJ5T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMudHJlZU5vZGVMaWJyYXJpZXMsdGhpcy5saWJyYXJpZXNTZWFyY2gsIkxJQlJBUllSRUYiKSxVbi5saW5lYWdlLmxpYnJhcmllc1NlYXJjaD10'@; put 'aGlzLmxpYnJhcmllc1NlYXJjaH1vblRhYmxlQ2xpY2socixpKXt0aGlzLnRhYmxlPXIsdGhpcy5saWI9aS5MSUJSQVJZUkVGLHRoaXMuc2VsZWN0VGFibGUociksdGhpcy5lZGl0VGFibGUoKX1lZGl0VGFibGUoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxp'@; put 'YisiLiIrdGhpcy50YWJsZSl9Z2V0TGlicmFyeVRhYmxlU3RhdGUoKXtpZihudWxsIT09VW4uZWRpdG9yLnRyZWVOb2RlTGlicmFyaWVzJiYodGhpcy50cmVlTm9kZUxpYnJhcmllcz1Vbi5lZGl0b3IudHJlZU5vZGVMaWJyYXJpZXMpLCIiIT09VW4uZWRpdG9yLmxpYnJhcnkpe3RoaXMubGli'@; put 'PVVuLmVkaXRvci5saWJyYXJ5O2xldCByPW51bGw7dGhpcy50cmVlTm9kZUxpYnJhcmllcyYmKHI9dGhpcy50cmVlTm9kZUxpYnJhcmllcy5maW5kKGk9PmkuTElCUkFSWVJFRj09PXRoaXMubGliKSksdGhpcy5zZWxlY3RMaWJyYXJ5KFVuLmVkaXRvci5saWJyYXJ5LCEwLHIpfX1nZXRGcm9t'@; put 'R2xvYmFscygpe3RoaXMubGlic0FuZFRhYmxlcz1Vbi5lZGl0b3IubGlic0FuZFRhYmxlcyx0aGlzLmxpYnJhcmllcz1Vbi5lZGl0b3IubGlicmFyaWVzLHRoaXMuZ2V0TGlicmFyeVRhYmxlU3RhdGUoKSx0aGlzLmxvYWRpbmc9ITF9bmdBZnRlckNvbnRlbnRJbml0KCl7VW4uZWRpdG9yLnN0'@; put 'YXJ0dXBTZXQ/dGhpcy5nZXRGcm9tR2xvYmFscygpOnRoaXMuZXZlbnRTZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5nZXRGcm9tR2xvYmFscygpfSl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8'@; put 'ZSkoemUodmMpLHplKHAxKSx6ZShGMiksemUoZmgpLHplKHVkKSx6ZShpYykpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJob21lLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczo5LHZhcnM6'@; put 'Myxjb25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzZWFyY2hUcmVlSW5wdXQiLCIiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQtYmxvY2siXSxbMSwic3Bpbm5lci13cmFwcGVyLWZ1bGxwYWdlIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVk'@; put 'Il0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwiYXBwU3RlYWxGb2N1cyIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWyJz'@; put 'aGFwZSIsInNlYXJjaCIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsic2hhcGUiLCJ0aW1lcyIsImFyaWEtbGFiZWwiLCJDbGVhciBsaWJyYXJpZXMgc2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwiYXJpYS1sYWJlbCIsIkNsZWFyIGxpYnJhcmllcyBzZWFyY2giLDMsImNsaWNrIl0sWzMsImNs'@; put 'ckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsci1leHBhbmRlZCJdLFszLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiwiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciIsImFyaWEt'@; put 'aGlkZGVuIiwidHJ1ZSJdLFsiYXBwU3RlYWxGb2N1cyIsIiIsImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJUYWJsZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCIsIm5nTW9kZWwiXSxbInNoYXBlIiwidGltZXMiLCJh'@; put 'cmlhLWxhYmVsIiwiQ2xlYXIgdGFibGVzIHNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsImFyaWEtbGFiZWwiLCJDbGVhciB0YWJsZXMgc2VhcmNoIiwzLCJjbGljayJdLFs0LCJuZ1ZhciJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJd'@; put 'LFsic2hhcGUiLCJib2x0IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIl0sWyJzaGFwZSIsInRhYmxlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tcmlnaHQiLCJjbHJTaXplIiwi'@; put 'bGciLDQsImNscklmT3BlbiJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWyJzcmMiLCIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2ltYWdlcy9zZWxlY3QtdGFibGUucG5nIiwiYWx0Iiwic2VsZWN0IHRh'@; put 'YmxlIGljb24iLDEsInNlbGVjdC10YWJsZS1pY29uIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iLDEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSIsIm10LTEwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJhcHAtc2lkZWJhciIpKDEsImNsci10cmVlIiksdnQoMixYYW4s'@; put 'NiwzLCJjbHItdHJlZS1ub2RlIiwyKSxfbygzLGxzbiwxLDEsbnVsbCxudWxsLENvKSx0ZSgpKCksSig1LCJtYWluIiwzKSg2LCJkaXYiLDQpLHZ0KDcsY3NuLDQsMCwiZGl2Iiw1KSx2dCg4LGhzbiw0LDIsImRpdiIsNiksdGUoKSgpKSwyJmkmJihpZSgyKSxfdCgobnVsbD09by50cmVlTm9k'@; put 'ZUxpYnJhcmllcz9udWxsOm8udHJlZU5vZGVMaWJyYXJpZXMubGVuZ3RoKT4wPzI6LTEpLGllKCkseW8oby50cmVlTm9kZUxpYnJhcmllcyksaWUoNCksX3Qoby5sb2FkaW5nPzc6LTEpLGllKCksX3Qoby5sb2FkaW5nPy0xOjgpKX0sZGVwZW5kZW5jaWVzOltsdSxvYyxYbCxQcCxPMyxkNyxj'@; put 'dSwkMCxMcCxQZix3dixTdixDdiwkNixtQSxHNl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgcHNuPW49Pntmb3IoY29uc3QgZSBpbiBuKWlmKCJfX3Jvd051bV9fIiE9PWUpcmV0dXJuITE7cmV0dXJuITB9LFptZT1uPT57Y29uc3QgdD1uLm1hdGNoKC9SXFso'@; put 'XGQrKVxdQ1xbKFxkKylcXS8pO3JldHVybiB0P3tyb3c6cGFyc2VJbnQodFsxXSwxMCksY29sdW1uOnBhcnNlSW50KHRbMl0sMTApfTpudWxsfSxWWmU9KG4sZSk9PntpZihuLnN0YXJ0c1dpdGgoIkFCU09MVVRFICIpJiYobj1uLnJlcGxhY2UoIkFCU09MVVRFICIsIiIpKSxuLnN0YXJ0c1dp'@; put 'dGgoIlJFTEFUSVZFICIpKXtjb25zdCB0PVptZShuKTtpZih0KXtjb25zdHtyb3c6cixjb2x1bW46aX09dDtuPWkwLnV0aWxzLmVuY29kZV9jZWxsKHtyOnItMSxjOmktMX0pfX1pZihuLnN0YXJ0c1dpdGgoIk1BVENIICIpKXtsZXQgdD0iIjtjb25zdCByPW4ubWF0Y2goL0NcW1xkK1xdOigu'@; put 'KykvKTtyJiYodD1yWzFdKTtjb25zdCBvPW4uc3BsaXQoIiAiKVsxXTtsZXQgYT0iIixsPS0xLHU9IiI7aWYoaXNOYU4oTnVtYmVyKG8pKT9hPW86bD1wYXJzZUludChvKSwtMSE9PWwpe2NvbnN0IE89ZVtsLTFdO2Zvcihjb25zdCBaIGluIE8paWYoIl9fcm93TnVtX18iIT09WiYmT1taXT09'@; put 'PXQpe3U9WitsO2JyZWFrfX1lbHNlIGZvcihsZXQgTz0wO088ZS5sZW5ndGg7TysrKWlmKGVbT11bYV09PT10KXt1PWErKE8rMSk7YnJlYWt9Y29uc3QgZz1pMC51dGlscy5kZWNvZGVfY2VsbCh1KSxFPVptZShuKTtpZihFKXtjb25zdHtyb3c6Tyxjb2x1bW46Wn09RTtuPWkwLnV0aWxzLmVu'@; put 'Y29kZV9jZWxsKHtyOmcucitPLGM6Zy5jK1p9KX19cmV0dXJuIG59LG1zbj1bImZpbGVVcGxvYWRJbnB1dCJdO2Z1bmN0aW9uIHZzbihuLGUpezEmbiYmKEooMCwiZGl2IiwzKSxJdCgxLCJjbHItc3Bpbm5lciIsMjcpLHRlKCkpfWZ1bmN0aW9uIF9zbihuLGUpezEmbiYmSXQoMCwiY2xyLWlj'@; put 'b24iLDcpfWZ1bmN0aW9uIHlzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24iLDI4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpO3JldHVybiBpLnNlYXJjaFN0cmluZz0iIixYZShpLnhsbWFwTGlzdE9uRmlsdGVyKCkpfSksdGUoKX19'@; put 'ZnVuY3Rpb24gYnNuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIikoMSwiYnV0dG9uIiwyOSksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgpLnhsbWFwT25DbGljayhpKSl9KSxJdCgyLCJjbHIt'@; put 'aWNvbiIsMzApLFNlKDMpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgpO2llKCksd3IoImFjdGl2ZSIsci5pc0FjdGl2ZVhMTWFwKHQuaWQpKSxpZSgyKSxTcigiICIsdC5pZCwiICIpfX1mdW5jdGlvbiB3c24obixlKXsxJm4mJihKKDAsInAiLDMyKSxTZSgxLCIg'@; put 'UGxlYXNlIHNlbGVjdCBhIG1hcCAiKSx0ZSgpKX1mdW5jdGlvbiBDc24obixlKXsxJm4mJihKKDAsInAiLDMyKSxTZSgxLCIgTm8gZXhjZWwgbWFwIGlzIGZvdW5kICIpLHRlKCkpfWZ1bmN0aW9uIFNzbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxMCksSXQoMSwiaW1nIiwzMSksdnQoMix3'@; put 'c24sMiwwLCJwIiwzMiksdnQoMyxDc24sMiwwLCJwIiwzMiksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMiksX3QodC54bG1hcHMubGVuZ3RoPjA/MjotMSksaWUoKSxfdCh0LnhsbWFwcy5sZW5ndGg8MT8zOi0xKX19ZnVuY3Rpb24gRXNuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDEx'@; put 'KSgxLCJzcGFuIiwzMyksU2UoMiwiIExvYWRpbmcuLi4gIiksdGUoKSxKKDMsImRpdiIpKDQsImg0IiksU2UoNSksdGUoKSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDUpLHByKHQuaXNMb2FkaW5nRGVzYyl9fWZ1bmN0aW9uIE1zbihuLGUpezEmbiYmSXQoMCwiY2xyLXRhYi1jb250ZW50'@; put 'Iil9ZnVuY3Rpb24gVHNuKG4sZSl7MSZuJiZJdCgwLCJjbHItdGFiLWNvbnRlbnQiKX1mdW5jdGlvbiB4c24obixlKXsxJm4mJmF1KDApfWZ1bmN0aW9uIEFzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwzNCksd3QoImZpbGVEcmFnZ2VkT3ZlciIsZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gWWUodCksWGUoVGUoKS5vblNob3dVcGxvYWRNb2RhbCgpKX0pLEooMSwiY2xyLXRhYnMiKSgyLCJjbHItdGFiIikoMywiYnV0dG9uIiwzNSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5zZWxlY3RlZFRhYj1pLlRhYnNFbnVtLlJ1'@; put 'bGVzKX0pLFNlKDQsIiBSdWxlcyAiKSx0ZSgpLFluKDUsTXNuLDEsMCwiY2xyLXRhYi1jb250ZW50IiwzNiksdGUoKSxKKDYsImNsci10YWIiKSg3LCJidXR0b24iLDM1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpO3JldHVybiBYZShpLnNlbGVjdGVkVGFiPWku'@; put 'VGFic0VudW0uRGF0YSl9KSxTZSg4LCJEYXRhIiksdGUoKSxZbig5LFRzbiwxLDAsImNsci10YWItY29udGVudCIsMzYpLHRlKCkoKSxZbigxMCx4c24sMSwwLCJuZy1jb250YWluZXIiLDM3KSxKKDExLCJkaXYiLDM4KSgxMiwiaDMiLDM5KSxTZSgxMyksdGUoKSxKKDE0LCJpIiwzOSksU2Uo'@; put 'MTUpLHRlKCksSigxNiwicCIsMzkpLFNlKDE3LCIgUnVsZXMgU291cmNlOiAiKSxKKDE4LCJhIiw0MCksU2UoMTkpLHRlKCkoKSxKKDIwLCJwIiwzOSksU2UoMjEsIiBUYXJnZXQgZGF0YXNldDogIiksSigyMiwiYSIsNDApLFNlKDIzKSx0ZSgpKCkoKSxKKDI0LCJkaXYiLDQxKSxJdCgyNSwi'@; put 'aG90LXRhYmxlIiw0MiksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLHI9b28oNDIpO2llKDUpLHJ0KCJjbHJJZkFjdGl2ZSIsdC5zZWxlY3RlZFRhYj09PXQuVGFic0VudW0uUnVsZXMpLGllKDQpLHJ0KCJjbHJJZkFjdGl2ZSIsdC5zZWxlY3RlZFRhYj09PXQuVGFic0VudW0uRGF0YSks'@; put 'aWUoKSxydCgibmdUZW1wbGF0ZU91dGxldCIsciksaWUoMyksU3IoIiAiLHQuc2VsZWN0ZWRYTE1hcC5pZCwiICIpLGllKDIpLHByKHQuc2VsZWN0ZWRYTE1hcC5kZXNjcmlwdGlvbiksaWUoMykscnQoInJvdXRlckxpbmsiLCIvdmlldy9kYXRhLyIrdC5ydWxlc1NvdXJjZSksaWUoKSxTcigi'@; put 'ICIsdC5ydWxlc1NvdXJjZSwiICIpLGllKDMpLHJ0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvZGF0YS8iK3Quc2VsZWN0ZWRYTE1hcC50YXJnZXREUyksaWUoKSxTcigiICIsdC5zZWxlY3RlZFhMTWFwLnRhcmdldERTLCIgIiksaWUoMikscnQoImRhdGEiLHQuc2VsZWN0ZWRUYWI9PT10LlRhYnNF'@; put 'bnVtLlJ1bGVzP3QueGxtYXBSdWxlczp0LnhsRGF0YSkoInNldHRpbmdzIix0LmhvdFRhYmxlU2V0dGluZ3MoKSl9fWZ1bmN0aW9uIGtzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw0NCkoMSwiYnV0dG9uIiw0NSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZ'@; put 'ZSh0KSxYZShUZSgyKS5vblNob3dVcGxvYWRNb2RhbCgpKX0pLEl0KDIsImNsci1pY29uIiw0NiksSigzLCJzcGFuIiksU2UoNCwiVXBsb2FkIiksdGUoKSgpKCl9fWZ1bmN0aW9uIFJzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw0NCkoMSwiYnV0dG9uIiw0NSksd3Qo'@; put 'ImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5zdWJtaXRFeGNlbCgpKX0pLEl0KDIsImNsci1pY29uIiw0NiksSigzLCJzcGFuIiksU2UoNCwiU3VibWl0IiksdGUoKSgpKCl9fWZ1bmN0aW9uIElzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw0'@; put 'NCkoMSwiYnV0dG9uIiw0Nyksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5kaXNjYXJkRXh0cmFjdGVkRGF0YSgpKX0pLEl0KDIsImNsci1pY29uIiw4KSxKKDMsInNwYW4iKSxTZSg0LCJEaXNjYXJkIiksdGUoKSgpKCl9fWZ1bmN0aW9uIERzbihuLGUpe2lm'@; put 'KDEmbiYmKEooMCwiZGl2Iiw0MyksdnQoMSxrc24sNSwwLCJkaXYiLDQ0KSx2dCgyLFJzbiw1LDAsImRpdiIsNDQpLHZ0KDMsSXNuLDUsMCwiZGl2Iiw0NCksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoKSxfdCh0LnN0YXR1cz09PXQuU3RhdHVzRW51bS5SZWFkeVRvVXBsb2FkPzE6LTEp'@; put 'LGllKCksX3QodC5zdGF0dXM9PT10LlN0YXR1c0VudW0uUmVhZHlUb1N1Ym1pdD8yOi0xKSxpZSgpLF90KHQuc3RhdHVzPT09dC5TdGF0dXNFbnVtLlJlYWR5VG9TdWJtaXQ/MzotMSl9fXZhciBSbT1mdW5jdGlvbihuKXtyZXR1cm4gbltuLk5vTWFwU2VsZWN0ZWQ9MF09Ik5vTWFwU2VsZWN0'@; put 'ZWQiLG5bbi5GZXRjaGluZ1J1bGVzPTFdPSJGZXRjaGluZ1J1bGVzIixuW24uUmVhZHlUb1VwbG9hZD0yXT0iUmVhZHlUb1VwbG9hZCIsbltuLkV4dHJhY3RpbmdEYXRhPTNdPSJFeHRyYWN0aW5nRGF0YSIsbltuLlJlYWR5VG9TdWJtaXQ9NF09IlJlYWR5VG9TdWJtaXQiLG5bbi5TdWJtaXR0'@; put 'aW5nRXh0cmFjdGVkRGF0YT01XT0iU3VibWl0dGluZ0V4dHJhY3RlZERhdGEiLG5bbi5TdWJtaXR0aW5nPTZdPSJTdWJtaXR0aW5nIixufShSbXx8e30pLHZBPWZ1bmN0aW9uKG4pe3JldHVybiBuW24uUnVsZXM9MF09IlJ1bGVzIixuW24uRGF0YT0xXT0iRGF0YSIsbn0odkF8fHt9KTtsZXQg'@; put 'QlplPSgoKT0+e3ZhciBuO2NsYXNzIGV7YnVpbGRIb3RTZXR0aW5ncygpe3JldHVybnttdWx0aUNvbHVtblNvcnRpbmc6ITAsdmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQ6NTAsY29sSGVhZGVyczp0aGlzLnNlbGVjdGVkVGFiPT09dGhpcy5UYWJzRW51bS5SdWxlcz90aGlzLnhsbWFwUnVs'@; put 'ZXNIZWFkZXJzOnRoaXMueGxVcGxvYWRIZWFkZXIsY29sdW1uczp0aGlzLnNlbGVjdGVkVGFiPT09dGhpcy5UYWJzRW51bS5SdWxlcz90aGlzLnhsbWFwUnVsZXNDb2x1bW5zOnRoaXMueGxVcGxvYWRDb2x1bW5zLGZpbHRlcnM6ITAsaGVpZ2h0OiIxMDAlIixzdHJldGNoSDoiYWxsIixhZnRl'@; put 'ckdldENvbEhlYWRlcjp0aGlzLmFmdGVyR2V0Q29sSGVhZGVyLG1vZGlmeUNvbFdpZHRoOnRoaXMubWF4V2lkdGhDaGVja2VyLGNlbGxzOnRoaXMuZ2V0Q2VsbENvbmZpZ3VyYXRpb24sbWF4Um93czp0aGlzLmhvdFRhYmxlTWF4Um93cyxtYW51YWxDb2x1bW5SZXNpemU6ITAscm93SGVhZGVy'@; put 'czp0aGlzLnJvd0hlYWRlcnMscm93SGVhZGVyV2lkdGg6MTUscm93SGVpZ2h0czoyMCxsaWNlbnNlS2V5OnRoaXMuaG90VGFibGVMaWNlbnNlS2V5LGNsYXNzTmFtZToiaHREYXJrIix0aGVtZToiaHQtdGhlbWUtY2xhc3NpYyJ9fXNldFNlbGVjdGVkVGFiKHIpe3RoaXMuc2VsZWN0ZWRUYWI9'@; put 'cix0aGlzLmhvdFRhYmxlU2V0dGluZ3Muc2V0KHRoaXMuYnVpbGRIb3RTZXR0aW5ncygpKX1jb25zdHJ1Y3RvcihyLGksbyxhLGwsdSxnKXt0aGlzLmV2ZW50U2VydmljZT1yLHRoaXMubGljZW5jZVNlcnZpY2U9aSx0aGlzLmxvZ2dlclNlcnZpY2U9byx0aGlzLnJvdXRlPWEsdGhpcy5yb3V0'@; put 'ZXI9bCx0aGlzLnNhc1N0b3JlU2VydmljZT11LHRoaXMuc2FzU2VydmljZT1nLHRoaXMuY29udGVudENvbnRhaW5lckNsYXNzPSEwLHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3Q9bmV3IGs4LHRoaXMuU3RhdHVzRW51bT1SbSx0aGlzLlRhYnNFbnVtPXZBLHRoaXMuc2VsZWN0ZWRUYWI9'@; put 'dkEuUnVsZXMsdGhpcy5ydWxlc1NvdXJjZT1Vbi5kY0xpYisiLk1QRV9YTE1BUF9SVUxFUyIsdGhpcy54bG1hcHM9W10sdGhpcy5zZWxlY3RlZFhMTWFwPXZvaWQgMCx0aGlzLnNlYXJjaFN0cmluZz0iIix0aGlzLnhsbWFwc0xvYWRpbmc9ITAsdGhpcy5pc0xvYWRpbmc9ITEsdGhpcy5pc0xv'@; put 'YWRpbmdEZXNjPSIiLHRoaXMuc3RhdHVzPVJtLk5vTWFwU2VsZWN0ZWQsdGhpcy54bG1hcFJ1bGVzSGVhZGVycz1bIlhMTUFQX1NIRUVUIiwiWExNQVBfUkFOR0VfSUQiLCJYTE1BUF9TVEFSVCIsIlhMTUFQX0ZJTklTSCJdLHRoaXMueGxtYXBSdWxlc0NvbHVtbnM9W3tkYXRhOiJYTE1BUF9T'@; put 'SEVFVCJ9LHtkYXRhOiJYTE1BUF9SQU5HRV9JRCJ9LHtkYXRhOiJYTE1BUF9TVEFSVCJ9LHtkYXRhOiJYTE1BUF9GSU5JU0gifV0sdGhpcy54bG1hcFJ1bGVzPVtdLHRoaXMueGxVcGxvYWRIZWFkZXI9WyJYTE1BUF9SQU5HRV9JRCIsIlJPV19OTyIsIkNPTF9OTyIsIlZBTFVFX1RYVCJdLHRo'@; put 'aXMueGxVcGxvYWRDb2x1bW5zPVt7ZGF0YToiWExNQVBfUkFOR0VfSUQifSx7ZGF0YToiUk9XX05PIn0se2RhdGE6IkNPTF9OTyJ9LHtkYXRhOiJWQUxVRV9UWFQifV0sdGhpcy54bERhdGE9W10sdGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPSExLHRo'@; put 'aXMuZmlsZW5hbWU9IiIsdGhpcy5zdWJtaXRMaW1pdE5vdGljZT0hMSx0aGlzLnVwbG9hZGVyPW5ldyBnZ2UsdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGUsdGhpcy5ob3RUYWJsZUxpY2Vuc2VLZXk9dm9pZCAwLHRoaXMuaG90VGFibGVNYXhSb3dz'@; put 'PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdlcl9yb3dzX2FsbG93ZWR8fDEvMCx0aGlzLmhvdFRhYmxlU2V0dGluZ3M9QjEodGhpcy5idWlsZEhvdFNldHRpbmdzKCkpfWFmdGVyR2V0Q29sSGVhZGVyKHIsaSl7aS5jbGFzc0xpc3QuYWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVI'@; put 'ZWFkZXJDbGFzcyl9eGxtYXBPbkNsaWNrKHIpe3IuaWQhPT10aGlzLnNlbGVjdGVkWExNYXA/LmlkJiYodGhpcy5zZWxlY3RlZFhMTWFwPXIsdGhpcy54bERhdGE9W10sdGhpcy5maWxlbmFtZT0iIix0aGlzLnVwbG9hZGVyLnF1ZXVlPVtdLHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3Qu'@; put 'Zmlyc3QmJih0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQudmFsdWU9IiIpLHRoaXMuc2V0U2VsZWN0ZWRUYWIodkEuUnVsZXMpLHRoaXMudmlld1hMTWFwUnVsZXMoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvaG9tZS9leGNlbC1tYXBzLyIr'@; put 'ci5pZCkpfXhsbWFwTGlzdE9uRmlsdGVyKCl7dGhpcy54bG1hcHM9dGhpcy5zZWFyY2hTdHJpbmcubGVuZ3RoPjA/VW4ueGxtYXBzLmZpbHRlcihpPT5pLmlkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkpOlVuLnhsbWFwc31pc0FjdGl2'@; put 'ZVhMTWFwKHIpe3JldHVybiB0aGlzLnNlbGVjdGVkWExNYXA/LmlkPT09cn1tYXhXaWR0aENoZWNrZXIocixpKXtyZXR1cm4gcj4yMDA/MjAwOnJ9Z2V0Q2VsbENvbmZpZ3VyYXRpb24oKXtyZXR1cm57cmVhZE9ubHk6ITB9fXJvd0hlYWRlcnMoKXtyZXR1cm4iICJ9b25TaG93VXBsb2FkTW9k'@; put 'YWwoKXt0aGlzLnNob3dVcGxvYWRNb2RhbD0hMH1maWxlT3ZlckJhc2Uocil7dGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPXJ9Z2V0RmlsZURlc2MocixpPSExKXt2YXIgbz10aGlzO2NvbnN0IGE9aT9yWzBdOnIudGFyZ2V0LmZpbGVzWzBdO2lmKCFhKXJldHVybjtjb25zdCBsPWEubmFtZTtp'@; put 'Zih0aGlzLmZpbGVuYW1lPWwsInhscyI9PT1sLnNsaWNlKGwubGFzdEluZGV4T2YoIi4iKSsxLGwubGFzdEluZGV4T2YoIi4iKSs0KS50b0xvd2VyQ2FzZSgpKXt0aGlzLnNob3dVcGxvYWRNb2RhbD0hMSx0aGlzLmlzTG9hZGluZz0hMCx0aGlzLmlzTG9hZGluZ0Rlc2M9IkV4dHJhY3Rpbmcg'@; put 'RGF0YSIsdGhpcy5zdGF0dXM9Um0uRXh0cmFjdGluZ0RhdGE7Y29uc3QgZz1uZXcgRmlsZVJlYWRlcjtnLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBFPUNyKGZ1bmN0aW9uKihPKXtjb25zdCBaPShuPT57Y29uc3QgZT1uZXcgVWludDhBcnJheShuKTtsZXQgdD0iIjtjb25zdCByPWUuYnl0ZUxl'@; put 'bmd0aDtmb3IobGV0IGk9MDtpPHI7aSsrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtpXSk7cmV0dXJuIHR9KShPLnRhcmdldC5yZXN1bHQpO2xldCBlZTtjb25zdCB2ZT17dHlwZToiYmluYXJ5IixjZWxsRGF0ZXM6ITEsY2VsbEZvcm11bGE6ITAsY2VsbFN0eWxlczohMCxjZWxsTkY6ITEs'@; put 'Y2VsbFRleHQ6ITF9O3RyeXtlZT1pMC5yZWFkKFosey4uLnZlfSl9Y2F0Y2goTWUpe28uZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsTWUsdm9pZCAwLCJFcnJvciByZWFkaW5nIGZpbGUiKX1pZighZWUpcmV0dXJuIG8uaXNMb2FkaW5nPSExLG8uaXNMb2FkaW5nRGVzYz0iIixv'@; put 'LnN0YXR1cz1SbS5SZWFkeVRvVXBsb2FkLHZvaWQgby51cGxvYWRlci5xdWV1ZS5wb3AoKTtvLmV4dHJhY3REYXRhKGVlKX0pO3JldHVybiBmdW5jdGlvbihPKXtyZXR1cm4gRS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGcucmVhZEFzQXJyYXlCdWZmZXIoYSl9ZWxzZSB0aGlzLmlzTG9h'@; put 'ZGluZz0hMSx0aGlzLmlzTG9hZGluZ0Rlc2M9IiIsdGhpcy5zdGF0dXM9Um0uUmVhZHlUb1VwbG9hZCx0aGlzLnNob3dVcGxvYWRNb2RhbD0hMCx0aGlzLnVwbG9hZGVyLnF1ZXVlLnBvcCgpLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsJ0ludmFsaWQgZmlsZSB0eXBl'@; put 'ICI8Yj4nK3RoaXMuZmlsZW5hbWUrJzwvYj4iLiBQbGVhc2UgdXBsb2FkIGV4Y2VsIGZpbGUuJyl9ZGlzY2FyZEV4dHJhY3RlZERhdGEoKXt0aGlzLmlzTG9hZGluZz0hMSx0aGlzLmlzTG9hZGluZ0Rlc2M9IiIsdGhpcy5zdGF0dXM9Um0uUmVhZHlUb1VwbG9hZCx0aGlzLnhsRGF0YT1bXSx0'@; put 'aGlzLnNldFNlbGVjdGVkVGFiKHZBLlJ1bGVzKSx0aGlzLmZpbGVuYW1lPSIiLHRoaXMudXBsb2FkZXIucXVldWU9W10sdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3QuZmlyc3QubmF0aXZlRWxlbWVudC52YWx1ZT0iIil9'@; put 'c3VibWl0RXhjZWwoKXt0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdD09PTEvMD90aGlzLnN1Ym1pdCgpOnRoaXMuc3VibWl0TGltaXROb3RpY2U9ITB9c3VibWl0KCl7aWYoIXRoaXMuc2VsZWN0ZWRYTE1hcHx8IXRoaXMueGxEYXRhLmxlbmd0aClyZXR1cm47dGhp'@; put 'cy5zdGF0dXM9Um0uU3VibWl0dGluZyx0aGlzLmlzTG9hZGluZz0hMCx0aGlzLmlzTG9hZGluZ0Rlc2M9IlN1Ym1pdHRpbmcgZXh0cmFjdGVkIGRhdGEiO2NvbnN0IHI9W107Zm9yKGNvbnN0IHUgb2YgdGhpcy51cGxvYWRlci5xdWV1ZSlyLnB1c2goe2ZpbGU6dSxmaWxlTmFtZTp1Lm5hbWV9'@; put 'KTtjb25zdCBpPU9iamVjdC5rZXlzKHRoaXMueGxEYXRhWzBdKS5qb2luKCIsIikrIlxuIit0aGlzLnhsRGF0YS5zbGljZSgwLHRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0KS5tYXAodT0+T2JqZWN0LnZhbHVlcyh1KS5qb2luKCIsIikpLmpvaW4oIlxuIiksbz1u'@; put 'ZXcgQmxvYihbaV0se3R5cGU6ImFwcGxpY2F0aW9uL2NzdiJ9KSxhPVVtZShvLHRoaXMuZmlsZW5hbWUrIi5jc3YiKTtyLnB1c2goe2ZpbGU6YSxmaWxlTmFtZTphLm5hbWV9KSx0aGlzLnNhc1NlcnZpY2UudXBsb2FkRmlsZSgic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSIscix7dGFibGU6'@; put 'dGhpcy5zZWxlY3RlZFhMTWFwLnRhcmdldERTfSkudGhlbih1PT57aWYodS5hZGFwdGVyUmVzcG9uc2Uuc2FzanNBYm9ydCl7Y29uc3QgZz11LmFkYXB0ZXJSZXNwb25zZTt0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgiIixnLnNhc2pzQWJvcnRbMF0uTVNHLHtTWVNXQVJOSU5H'@; put 'VEVYVDpnLlNZU1dBUk5JTkdURVhULFNZU0VSUk9SVEVYVDpnLlNZU0VSUk9SVEVYVCxNQUM6Zy5zYXNqc0Fib3J0WzBdLk1BQyxfUFJPR1JBTTpnLl9QUk9HUkFNfSl9ZWxzZSB1LmFkYXB0ZXJSZXNwb25zZS5zYXNwYXJhbXMmJnRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8i'@; put 'K3UuYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFtc1swXS5EU0lEKX0pLmNhdGNoKHU9Pnt0aGlzLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImZpbGUgdXBsb2FkIix1LnJlc3BvbnNlKX0pLmZpbmFsbHkoKCk9Pnt0aGlzLnN0YXR1cz1SbS5SZWFkeVRvU3VibWl0LHRoaXMuaXNM'@; put 'b2FkaW5nPSExLHRoaXMuaXNMb2FkaW5nRGVzYz0iIn0pfWV4dHJhY3REYXRhKHIpe2NvbnN0IGk9W107dGhpcy54bG1hcFJ1bGVzLmZvckVhY2gobz0+e2xldCBhPW8uWExNQVBfU0hFRVQ7aWYoYS5zdGFydHNXaXRoKCIvIikpe2NvbnN0IHZlPWEuc3BsaXQoIi8iKVsxXSxNZT1wYXJzZUlu'@; put 'dCh2ZSktMTthPXIuU2hlZXROYW1lc1tNZV19Y29uc3QgbD1yLlNoZWV0c1thXSx1PWkwLnV0aWxzLnNoZWV0X3RvX2pzb24obCx7cmF3OiEwLGhlYWRlcjoiQSIsYmxhbmtyb3dzOiEwfSksZz1WWmUoby5YTE1BUF9TVEFSVCx1KSxFPSgobixlLHQpPT57aWYoIiI9PT1lKXJldHVybiBuO2lm'@; put 'KGUuc3RhcnRzV2l0aCgiQUJTT0xVVEUgIikmJihlPWUucmVwbGFjZSgiQUJTT0xVVEUgIiwiIikpLGUuc3RhcnRzV2l0aCgiUkVMQVRJVkUgIikpe2NvbnN0IHI9Wm1lKGUpO2lmKHIpe2NvbnN0e3JvdzppLGNvbHVtbjpvfT1yLHtyOmEsYzpsfT1pMC51dGlscy5kZWNvZGVfY2VsbChuKTtl'@; put 'PWkwLnV0aWxzLmVuY29kZV9jZWxsKHtyOmEraSxjOmwrb30pfX1pZihlLnN0YXJ0c1dpdGgoIk1BVENIICIpJiYoZT1WWmUoZSx0KSksIkxBU1RET1dOIj09PWUpe2NvbnN0e3IsYzppfT1pMC51dGlscy5kZWNvZGVfY2VsbChuKSxvPWkwLnV0aWxzLmVuY29kZV9jb2woaSk7bGV0IGE9cjtm'@; put 'b3IobGV0IGw9cisxO2w8dC5sZW5ndGgmJnRbbF1bb107bCsrKWE9bDtlPW8rKGErMSl9aWYoIkJMQU5LUk9XIj09PWUpe2NvbnN0e3J9PWkwLnV0aWxzLmRlY29kZV9jZWxsKG4pO2xldCBpPXI7Zm9yKGxldCB1PXIrMTt1PHQubGVuZ3RoJiYhcHNuKHRbdV0pO3UrKylpPXU7ZT1PYmplY3Qu'@; put 'a2V5cyh0W2ldKS5maWx0ZXIodT0+Il9fcm93TnVtX18iIT09dSkucmVkdWNlKCh1LGcpPT5nPnU/Zzp1LCIiKSsoaSsxKX1yZXR1cm4gZX0pKGcsby5YTE1BUF9GSU5JU0gsdSksTz1gJHtnfToke0V9YCxaPWkwLnV0aWxzLmRlY29kZV9yYW5nZShPKSxlZT1pMC51dGlscy5zaGVldF90b19q'@; put 'c29uKGwse3JhdzohMCxyYW5nZTpPLGhlYWRlcjoiQSIsYmxhbmtyb3dzOiEwfSk7Zm9yKGxldCB2ZT0wO3ZlPGVlLmxlbmd0aDt2ZSsrKXtjb25zdCBNZT1lZVt2ZV07Zm9yKGxldCBIZT1aLnMuYyxXZT0wO0hlPD1aLmUuYztIZSsrLFdlKyspe2NvbnN0IGF0PWkwLnV0aWxzLmVuY29kZV9j'@; put 'b2woSGUpO2F0IGluIE1lJiZpLnB1c2goe0xPQURfUkVGOiIwIixYTE1BUF9JRDpvLlhMTUFQX0lELFhMTUFQX1JBTkdFX0lEOm8uWExNQVBfUkFOR0VfSUQsUk9XX05POnZlKzEsQ09MX05POldlKzEsVkFMVUVfVFhUOk1lW2F0XX0pfX19KSx0aGlzLnN0YXR1cz1SbS5SZWFkeVRvU3VibWl0'@; put 'LHRoaXMuaXNMb2FkaW5nPSExLHRoaXMuaXNMb2FkaW5nRGVzYz0iIix0aGlzLnhsRGF0YT1pLHRoaXMuc2V0U2VsZWN0ZWRUYWIodkEuRGF0YSl9dmlld1hMTWFwUnVsZXMoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLnNlbGVjdGVkWExNYXAmJihyLmlzTG9hZGluZz0h'@; put 'MCxyLmlzTG9hZGluZ0Rlc2M9IkxvYWRpbmcgZXhjZWwgcnVsZXMiLHIuc3RhdHVzPVJtLkZldGNoaW5nUnVsZXMseWllbGQgci5zYXNTdG9yZVNlcnZpY2UuZ2V0WExNYXBSdWxlcyhyLnNlbGVjdGVkWExNYXAuaWQpLnRoZW4oaT0+e3IueGxtYXBSdWxlcz1pLnhsbWFwcnVsZXMsci5zdGF0'@; put 'dXM9Um0uUmVhZHlUb1VwbG9hZH0pLmNhdGNoKGk9PntyLmxvZ2dlclNlcnZpY2UuZXJyb3IoaSl9KSxyLmlzTG9hZGluZz0hMSxyLmlzTG9hZGluZ0Rlc2M9IiIpfSkoKX1sb2FkKCl7dGhpcy54bG1hcHM9VW4ueGxtYXBzLHRoaXMueGxtYXBzTG9hZGluZz0hMTtjb25zdCByPXRoaXMucm91'@; put 'dGUuc25hcHNob3QucGFyYW1zLmlkO2lmKHIpe2NvbnN0IGk9dGhpcy54bG1hcHMuZmluZChvPT5vLmlkPT09cik7aSYmKHRoaXMuc2VsZWN0ZWRYTE1hcD1pLHRoaXMudmlld1hMTWFwUnVsZXMoKSl9fW5nT25Jbml0KCl7dGhpcy5saWNlbmNlU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vi'@; put 'c2NyaWJlKHI9Pnt0aGlzLmhvdFRhYmxlTGljZW5zZUtleT1yLHRoaXMuaG90VGFibGVTZXR0aW5ncy5zZXQodGhpcy5idWlsZEhvdFNldHRpbmdzKCkpfSl9bmdBZnRlclZpZXdJbml0KCl7fW5nQWZ0ZXJDb250ZW50SW5pdCgpe1VuLmVkaXRvci5zdGFydHVwU2V0P3RoaXMubG9hZCgpOnRo'@; put 'aXMuZXZlbnRTZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5sb2FkKCl9KX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZSh1ZCksemUoRjIpLHplKHgzKSx6ZShwMSksemUodmMpLHplKEJw'@; put 'KSx6ZShpYykpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAteGxtYXAiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGksbyl7aWYoMSZpJiZXbyhtc24sNSksMiZpKXtsZXQgYTtjaShhPXVpKCkpJiYoby5maWxlVXBsb2FkSW5wdXRDb21wTGlzdD1hKX19LGhvc3RW'@; put 'YXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGksbyl7MiZpJiZ3cigiY29udGVudC1jb250YWluZXIiLG8uY29udGVudENvbnRhaW5lckNsYXNzKX0sc3RhbmRhbG9uZTohMSxkZWNsczo0Myx2YXJzOjE1LGNvbnN0czpbWyJzZWFyY2hYTE1hcFRyZWVJbnB1dCIsIiJdLFsiZmlsZVVwbG9h'@; put 'ZElucHV0IiwiIl0sWyJhY3Rpb25CdXR0b25zIiwiIl0sWzEsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRl'@; put 'ciBieSBJZCIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWzEs'@; put 'ImxvYWRpbmdTcGlubmVyIl0sWyJhcHBEcmFnTmRyb3AiLCIiLDEsImNhcmQiLCJoLTEwMCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsiYXBwRmlsZURyb3AiLCIiLDEsInJlbGF0aXZlIiwzLCJmaWxlT3ZlciIsImZpbGVEcm9wIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIiwidXBsb2Fk'@; put 'ZXIiLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsT3BlbiJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsImRyb3AtYXJlYSJdLFsxLCJjbHItY29sLW1kLTEyIl0sWzEsImNsci1yb3ciLCJj'@; put 'YXJkLWJsb2NrIiwibXQtMTUiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiJdLFsxLCJjbHItY29sLW1kLTMiLCJmaWx0ZXJCdG4iXSxbMSwiZmlsdGVyQnRuIiwidy0xMDAiXSxbImZvciIsImZpbGUtdXBsb2FkIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsInBy'@; put 'b2ZpbGUtYnV0dG9ucyIsInctMTAwIl0sWyJoaWRkZW4iLCIiLCJpZCIsImZpbGUtdXBsb2FkIiwidHlwZSIsImZpbGUiLCJhcHBGaWxlU2VsZWN0IiwiIiwzLCJjaGFuZ2UiLCJ1cGxvYWRlciJdLFszLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iXSxbMSwibS0wIl0sWzEs'@; put 'Im1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbHJNZWRpdW0iLCIiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsic2hhcGUiLCJm'@; put 'aWxlIl0sWyJzcmMiLCIvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2ltYWdlcy9zZWxlY3QtdGFibGUucG5nIiwiYWx0Iiwic2VsZWN0IHRhYmxlIGljb24iLDEsInNlbGVjdC10YWJsZS1pY29uIl0sWyJjZHMtdGV4dCIsInNl'@; put 'Y3Rpb24iLDEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSIsIm10LTEwIl0sWzEsInNwaW5uZXIiXSxbImFwcERyYWdOZHJvcCIsIiIsMSwiY2FyZCIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwzLCJmaWxlRHJhZ2dlZE92ZXIiXSxbImNsclRhYkxpbmsiLCIiLDMsImNs'@; put 'aWNrIl0sWzQsImNscklmQWN0aXZlIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiXSxbMSwiY2xyLXJvdyIsIm0tMCIsIm1iLTEwLWkiLCJ2aWV3ZXJUaXRsZSJdLFsxLCJkLWZsZXgiLCJjbHItY29sLTEyIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJtdC01LWkiXSxbImNkcy10ZXh0'@; put 'IiwibGFiZWxMaW5rIiwxLCJtbC0xMCIsMywicm91dGVyTGluayJdLFsxLCJjbHItZmxleC0xIl0sWyJpZCIsImhvdC10YWJsZSIsMywiZGF0YSIsInNldHRpbmdzIl0sWzEsImNsci1yb3ciLCJtLTAiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJkLWZsZXgiLCJjbHItanVz'@; put 'dGlmeS1jb250ZW50LWNlbnRlciIsImNsci1jb2wtMTIiLCJjbHItY29sLWxnLTQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwiYnRuLWJsb2NrIiwibXItMCIsMywiY2xpY2siXSxbInNoYXBlIiwidXBsb2FkIl0sWyJ0eXBlIiwiYnV0dG9uIiwx'@; put 'LCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZS1kYW5nZXIiLCJidG4tYmxvY2siLCJtci0wIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pe2lmKDEmaSl7Y29uc3QgYT13bigpO0ooMCwiYXBwLXNpZGViYXIiKSx2dCgxLHZzbiwyLDAsImRpdiIsMyksSigyLCJjbHItdHJl'@; put 'ZSIpKDMsImNsci10cmVlLW5vZGUiLDQpKDQsImRpdiIsNSkoNSwiaW5wdXQiLDYsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLnNlYXJjaFN0cmluZyx1KXx8KG8uc2VhcmNoU3RyaW5nPXUpLFhlKHUpfSksd3QoImtleXVwIixmdW5jdGlvbigp'@; put 'e3JldHVybiBZZShhKSxYZShvLnhsbWFwTGlzdE9uRmlsdGVyKCkpfSksdGUoKSx2dCg3LF9zbiwxLDAsImNsci1pY29uIiw3KSx2dCg4LHlzbiwxLDAsImNsci1pY29uIiw4KSx0ZSgpKCksX28oOSxic24sNCwzLCJjbHItdHJlZS1ub2RlIixudWxsLENvKSx0ZSgpKCksSigxMSwiZGl2Iiw5'@; put 'KSx2dCgxMixTc24sNCwyLCJkaXYiLDEwKSx2dCgxMyxFc24sNiwxLCJkaXYiLDExKSx2dCgxNCxBc24sMjYsMTEsImRpdiIsMTIpLEooMTUsImNsci1tb2RhbCIsMTMpLHd0KCJmaWxlT3ZlciIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8uZmlsZU92ZXJCYXNlKHUpKX0pKCJmaWxl'@; put 'RHJvcCIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8uZ2V0RmlsZURlc2ModSwhMCkpfSksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uc2hvd1VwbG9hZE1vZGFsLHUpfHwoby5zaG93VXBsb2FkTW9kYWw9dSksWGUodSl9KSxKKDE2'@; put 'LCJoMyIsMTQpLFNlKDE3LCJVcGxvYWQgRmlsZSIpLHRlKCksSigxOCwiZGl2IiwxNSkoMTksImRpdiIsMTYpKDIwLCJzcGFuIiksU2UoMjEsIkRyb3AgZmlsZSBhbnl3aGVyZSB0byB1cGxvYWQhIiksdGUoKSgpLEooMjIsImRpdiIsMTcpKDIzLCJkaXYiLDE4KSgyNCwiZGl2IiwxOSkoMjUs'@; put 'InNwYW4iLDIwKSgyNiwibGFiZWwiLDIxKSxTZSgyNywiIEJyb3dzZSAiKSx0ZSgpKCksSigyOCwiaW5wdXQiLDIyLDEpLHd0KCJjaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxYZShvLmdldEZpbGVEZXNjKHUpKX0pLHRlKCkoKSgpKCkoKSgpLEooMzAsImNsci1tb2RhbCIsMjMp'@; put 'LGhpKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLnN1Ym1pdExpbWl0Tm90aWNlLHUpfHwoby5zdWJtaXRMaW1pdE5vdGljZT11KSxYZSh1KX0pLEooMzEsImgzIiwxNCksU2UoMzIsIk5vdGljZSIpLHRlKCksSigzMywiZGl2IiwxNSkoMzQsInAi'@; put 'LDI0KSxTZSgzNSksdGUoKSgpLEooMzYsImRpdiIsMjUpKDM3LCJidXR0b24iLDI2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLFhlKG8uc3VibWl0TGltaXROb3RpY2U9ITEpfSksU2UoMzgsIiBDYW5jZWwgIiksdGUoKSxKKDM5LCJidXR0b24iLDI2KSx3dCgiY2xpY2si'@; put 'LGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLG8uc3VibWl0KCksWGUoby5zdWJtaXRMaW1pdE5vdGljZT0hMSl9KSxTZSg0MCwiIFN1Ym1pdCAiKSx0ZSgpKCkoKSgpLFluKDQxLERzbiw0LDMsIm5nLXRlbXBsYXRlIixudWxsLDIsY2QpfWlmKDImaSl7Y29uc3QgYT1vbyg2KTtpZSgpLF90KG8u'@; put 'eGxtYXBzTG9hZGluZz8xOi0xKSxpZSg0KSxkaSgibmdNb2RlbCIsby5zZWFyY2hTdHJpbmcpLGllKDIpLF90KGEudmFsdWUubGVuZ3RoPDE/NzotMSksaWUoKSxfdChhLnZhbHVlLmxlbmd0aD4wPzg6LTEpLGllKCkseW8oby54bG1hcHMpLGllKDMpLF90KG8uc2VsZWN0ZWRYTE1hcD8tMTox'@; put 'MiksaWUoKSxfdChvLmlzTG9hZGluZz8xMzotMSksaWUoKSxfdCghby5pc0xvYWRpbmcmJm8uc2VsZWN0ZWRYTE1hcD8xNDotMSksaWUoKSxydCgidXBsb2FkZXIiLG8udXBsb2FkZXIpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwhMSkoImNsck1vZGFs'@; put 'Q2xvc2FibGUiLCEwKSxkaSgiY2xyTW9kYWxPcGVuIixvLnNob3dVcGxvYWRNb2RhbCksaWUoMTMpLHJ0KCJ1cGxvYWRlciIsby51cGxvYWRlciksaWUoMiksZGkoImNsck1vZGFsT3BlbiIsby5zdWJtaXRMaW1pdE5vdGljZSksaWUoNSksU3IoIiBEdWUgdG8gY3VycmVudCBsaWNlbmNlLCBv'@; put 'bmx5ICIsby5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQsIiByb3dzIGluIGEgZmlsZSB3aWxsIGJlIHN1Ym1pdHRlZC4gVG8gcmVtb3ZlIHRoZSByZXN0cmljdGlvbiwgY29udGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvICIpfX0sZGVwZW5kZW5jaWVzOltMNyxQ'@; put 'MixsdSxvYyxYbCxQcCxPMyxkNyxjdSx4ZCxtaCxoTSxlbCxQZix4dixrdiwkYixBdixUdixaYix6MiwkNixJZixxRCxEWmUsTFplLEc2XSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtjb25zdCBMc249W3twYXRoOiIiLGNvbXBvbmVudDooKCk9Pnt2YXIgbjtjbGFzcyBl'@; put 'e2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fW5nT25EZXN0cm95KCl7fXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAteGxtYXAtcm91dGUiXV0saG9z'@; put 'dEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJkl0KDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltlN10sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCks'@; put 'Y2hpbGRyZW46W3twYXRoOiIiLGNvbXBvbmVudDpCWmV9LHtwYXRoOiI6aWQiLGNvbXBvbmVudDpCWmV9XX1dO2xldCBPc249KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVt'@; put 'b2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltXZC5mb3JDaGlsZChMc24pLFdkXX0pKX1yZXR1cm4gbigpLGV9KSgpO1hGKCk7bGV0IE5zbj0oKCk9Pnt2YXIgbjtjbGFzcyBle3N0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1'@; put 'cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NW1vZD1HaSh7dHlwZTplfSksdGhpcy5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W0x3LE9zbixoZCxxMCxMQyxxbyx5UCxFbV19KSl9cmV0dXJuIG4oKSxlfSkoKSxGc249KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgp'@; put 'e31uZ09uRGVzdHJveSgpe31zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLW11bHRpLWRhdGFzZXQtcm91dGUiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50'@; put 'LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJkl0KDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltlN10sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgR21lPShuLGUsdCk9'@; put 'PntlLmNsYXNzTGlzdC5hZGQoVW4uaGFuZHNvbnRhYmxlLmRhcmtUYWJsZUhlYWRlckNsYXNzKX0sUHNuPVsiY29udGVudEFyZWEiXSxIc249WyJob3RJbnN0YW5jZU1haW4iXSxWc249WyJob3RJbnN0YW5jZVVzZXJEYXRhc2V0Il07ZnVuY3Rpb24gQnNuKG4sZSl7MSZuJiYoSigwLCJkaXYi'@; put 'LDQpLEl0KDEsImNsci1zcGlubmVyIiwyMyksdGUoKSl9ZnVuY3Rpb24ganNuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDUpKDEsImJ1dHRvbiIsMjUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUob28oNCkuY2xpY2soKSl9KSxTZSgyLCIgQnJv'@; put 'd3NlIGZpbGUgIiksdGUoKSxKKDMsImlucHV0IiwyNiwxKSx3dCgiY2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbkZpbGVDaGFuZ2UoaSkpfSksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgpO2llKCkscnQoImRpc2FibGVkIixudWxsIT09dC5zZWxlY3RlZEZp'@; put 'bGV8fHQuc3VibWl0dGluZ0Nzdil9fWZ1bmN0aW9uIFVzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw1KSgxLCJidXR0b24iLDI4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLm9uRGlzY2FyZCgpKX0pLFNlKDIsIiBEaXNjYXJkICIp'@; put 'LHRlKCksSigzLCJidXR0b24iLDI5KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLm9uU3VibWl0QWxsKCkpfSksU2UoNCwiIFN1Ym1pdCBBbGwgIiksdGUoKSgpfX1mdW5jdGlvbiB6c24obixlKXsxJm4mJkl0KDAsImNkcy1pY29uIiwzMil9ZnVuY3Rpb24g'@; put 'V3NuKG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsMzMpfWZ1bmN0aW9uIFlzbihuLGUpe2lmKDEmbiYmKHZ0KDAsenNuLDEsMCwiY2RzLWljb24iLDMyKSx2dCgxLFdzbiwxLDAsImNkcy1pY29uIiwzMykpLDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDtfdCh0LnN1Ym1pdFJlc3VsdC5l'@; put 'cnJvcj8wOi0xKSxpZSgpLF90KHQuc3VibWl0UmVzdWx0LnN1Y2Nlc3M/MTotMSl9fWZ1bmN0aW9uIFpzbihuLGUpezEmbiYmSXQoMCwiY2RzLWljb24iLDMyKX1mdW5jdGlvbiBHc24obixlKXsxJm4mJkl0KDAsImNkcy1pY29uIiwzNCl9ZnVuY3Rpb24gJHNuKG4sZSl7aWYoMSZuJiYodnQo'@; put 'MCxac24sMSwwLCJjZHMtaWNvbiIsMzIpLHZ0KDEsR3NuLDEsMCwiY2RzLWljb24iLDM0KSksMiZuKXtjb25zdCB0PVRlKDIpLiRpbXBsaWNpdDtfdCh0LmRhdGFzb3VyY2UubGVuZ3RoJiZ0LnBhcnNlUmVzdWx0Py0xOjApLGllKCksX3QodC5kYXRhc291cmNlLmxlbmd0aCYmdC5wYXJzZVJl'@; put 'c3VsdD8xOi0xKX19ZnVuY3Rpb24gcXNuKG4sZSl7MSZuJiZJdCgwLCJjZHMtaWNvbiIsMzQpfWZ1bmN0aW9uIEtzbihuLGUpezEmbiYmSXQoMCwiY2xyLXNwaW5uZXIiLDM1KX1mdW5jdGlvbiBYc24obixlKXtpZigxJm4mJih2dCgwLHFzbiwxLDAsImNkcy1pY29uIiwzNCksdnQoMSxLc24s'@; put 'MSwwLCJjbHItc3Bpbm5lciIsMzUpKSwyJm4pe2NvbnN0IHQ9VGUoMikuJGltcGxpY2l0O190KHQucGFyc2luZ1RhYmxlPy0xOjApLGllKCksX3QodC5wYXJzaW5nVGFibGU/MTotMSl9fWZ1bmN0aW9uIFFzbihuLGUpe2lmKDEmbiYmKHZ0KDAsJHNuLDIsMiksdnQoMSxYc24sMiwyKSksMiZu'@; put 'KXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O190KHQuZGF0YXNvdXJjZT8wOi0xKSxpZSgpLF90KHQuZGF0YXNvdXJjZT8tMToxKX19ZnVuY3Rpb24gSnNuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIikoMSwiYnV0dG9uIiwzMCksd3QoImNsaWNrIixmdW5j'@; put 'dGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgyKS5vblBhcnNlZERhdGFzZXRDbGljayhpKSl9KSx2dCgyLFlzbiwyLDIpLHZ0KDMsUXNuLDIsMiksSig0LCJzcGFuIiwzMSksU2UoNSksdGUoKSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKCks'@; put 'd3IoImFjdGl2ZSIsdC5hY3RpdmUpLGllKCksX3QodC5zdWJtaXRSZXN1bHQ/MjotMSksaWUoKSxfdCh0LnN1Ym1pdFJlc3VsdD8tMTozKSxpZSgyKSxTcigiICIsdC5saWJkcywiICIpfX1mdW5jdGlvbiBlbG4obixlKXtpZigxJm4mJih2dCgwLFVzbiw1LDAsImRpdiIsNSksSigxLCJwIiwy'@; put 'NyksU2UoMiwiRm91bmQgdGFibGVzOiIpLHRlKCksSigzLCJjbHItdHJlZSIpLF9vKDQsSnNuLDYsNSwiY2xyLXRyZWUtbm9kZSIsbnVsbCxDbyksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7X3QodC5leGNlbHNTdWJtaXR0ZWQ/LTE6MCksaWUoNCkseW8odC5wYXJzZWREYXRhc2V0cyl9fWZ1'@; put 'bmN0aW9uIHRsbihuLGUpezEmbiYmSXQoMCwiY2RzLWljb24iLDMyKX1mdW5jdGlvbiBubG4obixlKXsxJm4mJkl0KDAsImNkcy1pY29uIiwzMyl9ZnVuY3Rpb24gcmxuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIikoMSwiYnV0dG9uIiwzNyksd3QoImNs'@; put 'aWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgyKS5vblN1Ym1pdHRlZENzdkRhdGFzZXRDbGljayhpKSl9KSx2dCgyLHRsbiwxLDAsImNkcy1pY29uIiwzMiksdnQoMyxubG4sMSwwLCJjZHMtaWNvbiIsMzMpLEl0KDQsImNkcy1pY29uIiwzNCks'@; put 'U2UoNSksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLHdyKCJhY3RpdmUiLHQuYWN0aXZlKSxpZSgpLF90KHQuZXJyb3I/MjotMSksaWUoKSxfdCh0LnN1Y2Nlc3M/MzotMSksaWUoMiksU3IoIiAiLHQubGliZHMsIiAiKX19ZnVuY3Rpb24gaWxuKG4sZSl7aWYoMSZu'@; put 'JiYoSigwLCJwIiwzNiksU2UoMSwiU3VibWl0dGVkIHRhYmxlczoiKSx0ZSgpLEooMiwiY2xyLXRyZWUiKSxfbygzLHJsbiw2LDUsImNsci10cmVlLW5vZGUiLG51bGwsQ28pLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDMpLHlvKHQuc3VibWl0dGVkQ3N2RGF0YXNldHMpfX1mdW5jdGlv'@; put 'biBvbG4obixlKXsxJm4mJihKKDAsImRpdiIsMTApLEl0KDEsImNsci1pY29uIiwzOCksSigyLCJwIiwzOSksU2UoMywiIFBsZWFzZSB1cGxvYWQgYSBmaWxlICIpLHRlKCkoKSl9ZnVuY3Rpb24gYWxuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDQwKSgxLCJkaXYiLDQx'@; put 'KSgyLCJwIiw0MiksU2UoMywiIFNlbGVjdGVkIGZpbGU6ICIpLEooNCwic3Ryb25nIiksU2UoNSksdGUoKSxKKDYsImNsci10b29sdGlwIikoNywiY2RzLWljb24iLDQzKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLm9uRGlzY2FyZEZpbGUoKSl9KSx0ZSgp'@; put 'LEooOCwiY2xyLXRvb2x0aXAtY29udGVudCIpLFNlKDksIiBEaXNjYXJkIHRoZSBmaWxlICIpLHRlKCkoKSgpLEooMTAsInAiLDQ0KSxTZSgxMSwiIEZpbGUgc2l6ZTogIiksSigxMiwic3Ryb25nIiksU2UoMTMpLHRlKCkoKSxKKDE0LCJwIiw0NSksU2UoMTUsIiBQYXN0ZSBvciB0eXBlIHRo'@; put 'ZSBsaXN0IG9mIGRhdGFzZXRzIHRvIHVwbG9hZDogIiksdGUoKSxKKDE2LCJjbHItY29udHJvbC1oZWxwZXIiLDQ2KSxTZSgxNywiRWFjaCByb3cgaXMgb25lIGRhdGFzZXQuIFdlIHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3QgdGFibGVzIGJ5IHRoZSBzaGVldG5hbWUgYW5kIHBvcHVsYXRl'@; put 'IGlmIGFueS4iKSx0ZSgpLEl0KDE4LCJob3QtdGFibGUiLDQ3LDIpLEooMjAsImRpdiIsNDgpKDIxLCJidXR0b24iLDQ5KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLm9uU3RhcnRQYXJzaW5nRmlsZSgpKX0pLFNlKDIyLCIgQ29udGludWUgIiksdGUoKSgp'@; put 'KCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7aWUoNSkscHIodC5zZWxlY3RlZEZpbGUubmFtZSksaWUoOCksU3IoIiIsdC5zZWxlY3RlZEZpbGUuc2l6ZU1CLCIgTUIiKSxpZSg1KSxydCgic2V0dGluZ3MiLHQuaG90VXNlckRhdGFzZXRzU2V0dGluZ3MpLGllKDMpLHJ0KCJkaXNhYmxlZCIs'@; put 'IXQubWF0Y2hlZERhdGFzZXRzLmxlbmd0aCkoImNsckxvYWRpbmciLHQudXBsb2FkTG9hZGluZyl9fWZ1bmN0aW9uIHNsbihuLGUpe2lmKDEmbiYmKEl0KDAsImNsci1pY29uIiw1MCksSigxLCJwIiwzOSksU2UoMiksdGUoKSksMiZuKXtjb25zdCB0PVRlKDQpO2llKDIpLFNyKCIgIix0LmZp'@; put 'bGVMb2FkaW5nU3RhdGUsIi4uLiAiKX19ZnVuY3Rpb24gbGxuKG4sZSl7MSZuJiYoSXQoMCwiY2xyLWljb24iLDUxKSxKKDEsInAiLDM5KSxTZSgyLCIgUGxlYXNlIHNlbGVjdCBhIGRhdGFzZXQgb24gdGhlIGxlZnQgdG8gcmV2aWV3IHRoZSBkYXRhICIpLHRlKCkpfWZ1bmN0aW9uIGNsbihu'@; put 'LGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxMCksdnQoMSxzbG4sMywxKSx2dCgyLGxsbiwzLDApLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLF90KHQuZmlsZUxvYWRpbmdTdGF0ZSE9PXQuRmlsZUxvYWRpbmdTdGF0ZS5wYXJzZWQ/MTotMSksaWUoKSxfdCh0LmZpbGVMb2FkaW5nU3Rh'@; put 'dGU9PT10LkZpbGVMb2FkaW5nU3RhdGUucGFyc2VkPzI6LTEpfX1mdW5jdGlvbiB1bG4obixlKXsxJm4mJihKKDAsInNwYW4iLDYyKSgxLCJzdHJvbmciKSxTZSgyLCJTVUNDRVNTIiksdGUoKSgpKX1mdW5jdGlvbiBkbG4obixlKXsxJm4mJihKKDAsInNwYW4iLDYzKSgxLCJzdHJvbmciKSxT'@; put 'ZSgyLCJFUlJPUiIpLHRlKCkoKSl9ZnVuY3Rpb24gaGxuKG4sZSl7MSZuJiYoSigwLCJwIiw1NiksU2UoMSwiRXJyb3IgZGV0YWlsczoiKSx0ZSgpKX1mdW5jdGlvbiBmbG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImJ1dHRvbiIsNjYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZ'@; put 'ZSh0KTtjb25zdCBpPVRlKDUpO3JldHVybiBYZShpLnJlU3VibWl0VGFibGUoaS5hY3RpdmVQYXJzZWREYXRhc2V0KSl9KSxTZSgxLCIgUmVzdWJtaXQgIiksdGUoKX0yJm4mJnJ0KCJjbHJMb2FkaW5nIixUZSg1KS5zdWJtaXRMb2FkaW5nKX1mdW5jdGlvbiBwbG4obixlKXtpZigxJm4pe2Nv'@; put 'bnN0IHQ9d24oKTtKKDAsImRpdiIsNTIpKDEsImRpdiIpKDIsInAiLDU1KSxTZSgzLCIgU3VibWl0IFN0YXR1czogIiksdnQoNCx1bG4sMywwLCJzcGFuIiw2MiksdnQoNSxkbG4sMywwLCJzcGFuIiw2MyksdGUoKSx2dCg2LGhsbiwyLDAsInAiLDU2KSx0ZSgpLEooNywiZGl2IiksdnQoOCxm'@; put 'bG4sMiwxLCJidXR0b24iLDY0KSxKKDksImJ1dHRvbiIsNjUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDQpO3JldHVybiBYZShpLmRvd25sb2FkRmlsZShpLmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LmxvZ3x8aS5hY3RpdmVQYXJzZWREYXRhc2V0'@; put 'LnN1Ym1pdFJlc3VsdC5zdWNjZXNzfHxpLmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LmVycm9yKSl9KSxTZSgxMCwiIERvd25sb2FkIGxvZyAiKSx0ZSgpKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoNCksX3QodC5hY3RpdmVQYXJzZWREYXRhc2V0LnN1Ym1pdFJlc3Vs'@; put 'dC5zdWNjZXNzPzQ6LTEpLGllKCksX3QodC5hY3RpdmVQYXJzZWREYXRhc2V0LnN1Ym1pdFJlc3VsdC5lcnJvcj81Oi0xKSxpZSgpLF90KHQuYWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQuZXJyb3I/NjotMSksaWUoMiksX3QoIXQuc3VibWl0dGluZ0NzdiYmdC5hY3RpdmVQYXJz'@; put 'ZWREYXRhc2V0LnN1Ym1pdFJlc3VsdC5lcnJvcj84Oi0xKX19ZnVuY3Rpb24gZ2xuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDUzKSgxLCJkaXYiLDY3KSxTZSgyKSxBYygzLCJqc29uIiksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoMiksU3IoIiAiLFRkKDMsMSxudWxsPT10LmFj'@; put 'dGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0P251bGw6dC5hY3RpdmVQYXJzZWREYXRhc2V0LnN1Ym1pdFJlc3VsdC5lcnJvciksIiAiKX19ZnVuY3Rpb24gbWxuKG4sZSl7aWYoMSZuJiYoSigwLCJzdHJvbmciKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoKSxOaCgn'@; put 'IicsbnVsbD09dC5hY3RpdmVQYXJzZWREYXRhc2V0LnBhcnNlUmVzdWx0LnJhbmdlU2hlZXRSZXM/bnVsbDp0LmFjdGl2ZVBhcnNlZERhdGFzZXQucGFyc2VSZXN1bHQucmFuZ2VTaGVldFJlcy5zaGVldE5hbWUsJyIhJyxudWxsPT10LmFjdGl2ZVBhcnNlZERhdGFzZXQucGFyc2VSZXN1bHQu'@; put 'cmFuZ2VTaGVldFJlcz9udWxsOnQuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzZVJlc3VsdC5yYW5nZVNoZWV0UmVzLnJhbmdlQWRkcmVzcyl9fWZ1bmN0aW9uIHZsbihuLGUpezEmbiYmKEooMCwic3Ryb25nIiksU2UoMSwiTm8gZGF0YSBmb3VuZCIpLHRlKCkpfWZ1bmN0aW9uIF9sbihuLGUp'@; put 'ezEmbiYmKEooMCwic3BhbiIsNjgpKDEsInN0cm9uZyIpLFNlKDIsIlNlYXJjaGluZyBmb3IgdGhlIGRhdGEuLi4iKSx0ZSgpLEl0KDMsImNsci1zcGlubmVyIiw2OSksdGUoKSl9ZnVuY3Rpb24geWxuKG4sZSl7aWYoMSZuJiYodnQoMCx2bG4sMiwwLCJzdHJvbmciKSx2dCgxLF9sbiw0LDAs'@; put 'InNwYW4iLDY4KSksMiZuKXtjb25zdCB0PVRlKDQpO190KHQuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzaW5nVGFibGU/LTE6MCksaWUoKSxfdCh0LmFjdGl2ZVBhcnNlZERhdGFzZXQucGFyc2luZ1RhYmxlPzE6LTEpfX1mdW5jdGlvbiBibG4obixlKXsxJm4mJihKKDAsImRpdiIsNjApLEl0'@; put 'KDEsImNsci1zcGlubmVyIiw3MCksdGUoKSl9ZnVuY3Rpb24gd2xuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7dnQoMCxwbG4sMTEsNCwiZGl2Iiw1MiksdnQoMSxnbG4sNCwzLCJkaXYiLDUzKSxKKDIsImRpdiIsNTQpKDMsImRpdiIpKDQsInAiLDU1KSxTZSg1LCIgRm91bmQgaW4gcmFu'@; put 'Z2U6ICIpLHZ0KDYsbWxuLDIsMiwic3Ryb25nIiksdnQoNyx5bG4sMiwyKSx0ZSgpLEooOCwicCIsNTYpLFNlKDksIiBEYXRhc2V0OiAiKSxKKDEwLCJzdHJvbmciKSgxMSwiY2xyLXRvb2x0aXAiKSgxMiwiYSIsNTcpLFNlKDEzKSx0ZSgpLEooMTQsImNsci10b29sdGlwLWNvbnRlbnQiLDU4'@; put 'KSxTZSgxNSwiIENsaWNrIHRvIGVkaXQgdGhlIHRhYmxlICIpLHRlKCkoKSgpKCkoKSxKKDE2LCJkaXYiKSgxNywiY2xyLXRvZ2dsZS13cmFwcGVyIikoMTgsImlucHV0Iiw1OSksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMyk7cmV0dXJuIGZpKG8u'@; put 'YWN0aXZlUGFyc2VkRGF0YXNldC5pbmNsdWRlSW5TdWJtaXNzaW9uLGkpfHwoby5hY3RpdmVQYXJzZWREYXRhc2V0LmluY2x1ZGVJblN1Ym1pc3Npb249aSksWGUoaSl9KSx0ZSgpLEooMTksImxhYmVsIiksU2UoMjAsIkluY2x1ZGUgaW4gc3VibWlzc2lvbiIpLHRlKCkoKSgpKCksdnQoMjEs'@; put 'YmxuLDIsMCwiZGl2Iiw2MCksSXQoMjIsImhvdC10YWJsZSIsNjEsMyl9aWYoMiZuKXtjb25zdCB0PVRlKDMpO190KHQuYWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQ/MDotMSksaWUoKSxfdChudWxsIT10LmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0JiZ0LmFjdGl2'@; put 'ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LmVycm9yPzE6LTEpLGllKDUpLF90KHQuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzZVJlc3VsdD82Oi0xKSxpZSgpLF90KHQuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzZVJlc3VsdD8tMTo3KSxpZSg1KSxydCgicm91dGVyTGluayIsIi9lZGl0'@; put 'b3IvIit0LmFjdGl2ZVBhcnNlZERhdGFzZXQubGliZHMpLGllKCkscHIodC5hY3RpdmVQYXJzZWREYXRhc2V0LmxpYmRzKSxpZSgpLHJ0KCJjbHJQb3NpdGlvbiIsInRvcC1yaWdodCIpKCJjbHJTaXplIiwic20iKSxpZSg0KSxkaSgibmdNb2RlbCIsdC5hY3RpdmVQYXJzZWREYXRhc2V0Lmlu'@; put 'Y2x1ZGVJblN1Ym1pc3Npb24pLHJ0KCJkaXNhYmxlZCIsISh0LmFjdGl2ZVBhcnNlZERhdGFzZXQuZGF0YXNvdXJjZSYmdC5hY3RpdmVQYXJzZWREYXRhc2V0LnBhcnNlUmVzdWx0KSksaWUoMyksX3QodC5pc0hvdEhpZGRlbj8yMTotMSksaWUoKSxydCgic2V0dGluZ3MiLHQuaG90TWFpblRh'@; put 'YmxlU2V0dGluZ3MpfX1mdW5jdGlvbiBDbG4obixlKXtpZigxJm4mJih2dCgwLGNsbiwzLDIsImRpdiIsMTApLHZ0KDEsd2xuLDI0LDEyKSksMiZuKXtjb25zdCB0PVRlKDIpO190KHQuYWN0aXZlUGFyc2VkRGF0YXNldD8tMTowKSxpZSgpLF90KHQuYWN0aXZlUGFyc2VkRGF0YXNldD8xOi0x'@; put 'KX19ZnVuY3Rpb24gU2xuKG4sZSl7MSZuJiYoSigwLCJkaXYiLDEwKSxJdCgxLCJjbHItaWNvbiIsNTEpLEooMiwicCIsMzkpLFNlKDMsIiBQbGVhc2Ugc2VsZWN0IGEgZGF0YXNldCBvbiB0aGUgbGVmdCB0byByZXZpZXcgdGhlIHN1Ym1pdCByZXN1bHRzICIpLHRlKCkoKSl9ZnVuY3Rpb24g'@; put 'RWxuKG4sZSl7MSZuJiZ2dCgwLFNsbiw0LDAsImRpdiIsMTApLDImbiYmX3QoVGUoMikuYWN0aXZlU3VibWl0dGVkQ3N2RGF0YXNldD8tMTowKX1mdW5jdGlvbiBNbG4obixlKXsxJm4mJihKKDAsInNwYW4iLDYyKSgxLCJzdHJvbmciKSxTZSgyLCJTVUNDRVNTIiksdGUoKSgpKX1mdW5jdGlv'@; put 'biBUbG4obixlKXsxJm4mJihKKDAsInNwYW4iLDYzKSgxLCJzdHJvbmciKSxTZSgyLCJFUlJPUiIpLHRlKCkoKSl9ZnVuY3Rpb24geGxuKG4sZSl7MSZuJiYoSigwLCJwIiw1NiksU2UoMSwiRXJyb3IgZGV0YWlsczoiKSx0ZSgpKX1mdW5jdGlvbiBBbG4obixlKXtpZigxJm4mJihKKDAsImRp'@; put 'diIsNTMpKDEsImRpdiIsNjcpLFNlKDIpLEFjKDMsImpzb24iKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgyKSxTcigiICIsVGQoMywxLHQuYWN0aXZlU3VibWl0dGVkQ3N2RGF0YXNldC5lcnJvciksIiAiKX19ZnVuY3Rpb24ga2xuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7'@; put 'SigwLCJkaXYiLDcxKSgxLCJkaXYiKSgyLCJwIiw1NSksU2UoMywiIE1hdGNoZWQgd2l0aCBkYXRhc2V0OiAiKSxKKDQsInN0cm9uZyIpKDUsImNsci10b29sdGlwIikoNiwiYSIsNTcpLFNlKDcpLHRlKCksSig4LCJjbHItdG9vbHRpcC1jb250ZW50Iiw1OCksU2UoOSwiIENsaWNrIHRvIGVk'@; put 'aXQgdGhlIHRhYmxlICIpLHRlKCkoKSgpKCksSigxMCwicCIsNTUpLFNlKDExLCIgU3RhdHVzOiAiKSx2dCgxMixNbG4sMywwLCJzcGFuIiw2MiksdnQoMTMsVGxuLDMsMCwic3BhbiIsNjMpLHRlKCksdnQoMTQseGxuLDIsMCwicCIsNTYpLHRlKCksSigxNSwiZGl2IikoMTYsImJ1dHRvbiIs'@; put 'NjUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBYZShpLmRvd25sb2FkRmlsZShpLmFjdGl2ZVN1Ym1pdHRlZENzdkRhdGFzZXQuc3VjY2Vzc3x8aS5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmVycm9yKSl9KSxTZSgxNywiIERvd25sb2FkIGxv'@; put 'ZyAiKSx0ZSgpKCkoKSx2dCgxOCxBbG4sNCwzLCJkaXYiLDUzKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7aWUoNikscnQoInJvdXRlckxpbmsiLCIvZWRpdG9yLyIrdC5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmxpYmRzKSxpZSgpLHByKHQuYWN0aXZlU3VibWl0dGVkQ3N2RGF0YXNldC5s'@; put 'aWJkcyksaWUoKSxydCgiY2xyUG9zaXRpb24iLCJ0b3AtcmlnaHQiKSgiY2xyU2l6ZSIsInNtIiksaWUoNCksX3QodC5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LnN1Y2Nlc3M/MTI6LTEpLGllKCksX3QodC5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmVycm9yPzEzOi0xKSxpZSgpLF90'@; put 'KHQuYWN0aXZlU3VibWl0dGVkQ3N2RGF0YXNldC5lcnJvcj8xNDotMSksaWUoNCksX3QodC5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmVycm9yPzE4Oi0xKX19ZnVuY3Rpb24gUmxuKG4sZSl7aWYoMSZuJiYodnQoMCxhbG4sMjMsNSwiZGl2Iiw0MCksdnQoMSxDbG4sMiwyKSx2dCgyLEVs'@; put 'biwxLDEpLHZ0KDMsa2xuLDE5LDgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtfdCh0LnBhcnNlZERhdGFzZXRzLmxlbmd0aHx8bnVsbD09PXQuc2VsZWN0ZWRGaWxlPy0xOjApLGllKCksX3QodC5wYXJzZWREYXRhc2V0cy5sZW5ndGgmJiF0LnN1Ym1pdHRlZENzdkRhdGFzZXRzLmxlbmd0aD8xOi0x'@; put 'KSxpZSgpLF90KHQuc3VibWl0dGVkQ3N2RGF0YXNldHMubGVuZ3RoPzI6LTEpLGllKCksX3QodC5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0PzM6LTEpfX1mdW5jdGlvbiBJbG4obixlKXtpZigxJm4mJihKKDAsInAiLDE0KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLFNy'@; put 'KCIgRHVlIHRvIGN1cnJlbnQgbGljZW5jZSwgb25seSAiLHQubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0LCIgcm93cyBpbiBlYWNoIGZpbGUgd2lsbCBiZSBzdWJtaXR0ZWQuIFRvIHJlbW92ZSB0aGUgcmVzdHJpY3Rpb24sIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJv'@; put 'bGxlci5pby4gIil9fXZhciBfQT1mdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkaW5nPSJSZWFkaW5nIHRoZSBmaWxlIixuLnBhcnNpbmc9IlNlYXJjaGluZyBmb3IgdGhlIGRhdGEgaW4gdGhlIGZpbGUiLG4ucGFyc2VkPSJTZWFyY2hpbmcgZm9yIHRoZSBkYXRhIGZpbmlzaGVkIixuLm5vdFNl'@; put 'bGVjdGVkPSJGaWxlIG5vdCBzZWxlY3RlZCIsbn0oX0F8fHt9KTtjb25zdCBEbG49W3twYXRoOiIiLGNvbXBvbmVudDpGc24sY2hpbGRyZW46W3twYXRoOiIiLGNvbXBvbmVudDooKCk9Pnt2YXIgbjtjbGFzcyBle2luaXRpYWxpemVIb3RTZXR0aW5ncygpe3RoaXMuaG90TWFpblRhYmxlU2V0'@; put 'dGluZ3M9e2NsYXNzTmFtZTpbImh0RGFyayJdLGxpY2Vuc2VLZXk6dGhpcy5ob3RUYWJsZUxpY2Vuc2VLZXksbXVsdGlDb2x1bW5Tb3J0aW5nOiEwLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OjUwLG1hbnVhbENvbHVtblJlc2l6ZTohMCxhdXRvQ29sdW1uU2l6ZTohMCxmaWx0ZXJzOiEw'@; put 'LHN0cmV0Y2hIOiJhbGwiLGFmdGVyR2V0Q29sSGVhZGVyOkdtZSxtb2RpZnlDb2xXaWR0aDp0aGlzLm1heFdpZHRoQ2hla2VyLHRoZW1lOiJodC10aGVtZS1jbGFzc2ljIn07Y29uc3R7ZGF0YTpyLC4uLml9PXRoaXMuaG90VXNlckRhdGFzZXRzO3RoaXMuaG90VXNlckRhdGFzZXRzU2V0dGlu'@; put 'Z3M9ey4uLmksbGljZW5zZUtleTp0aGlzLmhvdFRhYmxlTGljZW5zZUtleSx0aGVtZToiaHQtdGhlbWUtY2xhc3NpYyJ9fW1heFdpZHRoQ2hla2VyKHIsaSl7cmV0dXJuIHI+MjAwPzIwMDpyfWNvbnN0cnVjdG9yKHIsaSxvLGEsbCx1LGcpe3RoaXMuZXZlbnRTZXJ2aWNlPXIsdGhpcy5saWNl'@; put 'bmNlU2VydmljZT1pLHRoaXMuaGVscGVyU2VydmljZT1vLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPWEsdGhpcy5zcHJlYWRzaGVldFNlcnZpY2U9bCx0aGlzLnNhc1NlcnZpY2U9dSx0aGlzLmNkcj1nLHRoaXMuY29udGVudENvbnRhaW5lckNsYXNzPSEwLHRoaXMubGljZW5jZVN0YXRlPXRoaXMu'@; put 'bGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMuZmlsZUxvYWRpbmdTdGF0ZT1fQS5ub3RTZWxlY3RlZCx0aGlzLkZpbGVMb2FkaW5nU3RhdGU9X0EsdGhpcy5ob3RUYWJsZUxpY2Vuc2VLZXk9dm9pZCAwLHRoaXMuaG90VGFibGVNYXhSb3dzPXRoaXMu'@; put 'bGljZW5jZVN0YXRlLnZhbHVlLnZpZXdlcl9yb3dzX2FsbG93ZWR8fDEvMCx0aGlzLmNzdkZpbGVzPVtdLHRoaXMuY3N2U3VibWl0dGluZz0hMSx0aGlzLmF1dG9EZXRlY3RpbmdDb2x1bW5zPSExLHRoaXMuc2VsZWN0ZWRGaWxlPW51bGwsdGhpcy5wYXJzZWREYXRhc2V0cz1bXSx0aGlzLnN1'@; put 'Ym1pdHRlZENzdkRhdGFzZXRzPVtdLHRoaXMuZGF0YXNldHNMb2FkaW5nPSExLHRoaXMudXBsb2FkTG9hZGluZz0hMSx0aGlzLnN1Ym1pdExvYWRpbmc9ITEsdGhpcy5tYXRjaGVkRGF0YXNldHM9W10sdGhpcy5zaGVldE5hbWVzPVtdLHRoaXMudXNlcklucHV0RGF0YXNldHM9IiIsdGhpcy5s'@; put 'aWJzQW5kVGFibGVzPXt9LHRoaXMuaG90TWFpblRhYmxlU2V0dGluZ3M9e30sdGhpcy5ob3RVc2VyRGF0YXNldHNTZXR0aW5ncz17fSx0aGlzLnNob3dTdWJtaXRSZWFzb25Nb2RhbD0hMSx0aGlzLnN1Ym1pdFJlYXNvbk1lc3NhZ2U9IiIsdGhpcy5ob3RVc2VyRGF0YXNldHM9e2NvbEhlYWRl'@; put 'cnM6WyJMaWJyYXJ5IiwiVGFibGUiXSxkYXRhOltbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXSxbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXSxbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXSxbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXV0sY29sdW1uczpbe3R5cGU6ImF1dG9jb21wbGV0ZSIsZmlsdGVyOiEx'@; put 'LHNvdXJjZTpbXX0se3R5cGU6ImF1dG9jb21wbGV0ZSIsZmlsdGVyOiExLHNvdXJjZTpbXX1dLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjMwNXB4IixjbGFzc05hbWU6WyJodERhcmsiXSxjb250ZXh0TWVudTp7aXRlbXM6e3Jvd19hYm92ZTp7bmFtZToiSW5zZXJ0IFJvdyBhYm92ZSJ9LHJvd19i'@; put 'ZWxvdzp7bmFtZToiSW5zZXJ0IFJvdyBiZWxvdyJ9fX0sbWFudWFsUm93TW92ZTohMCxjb2x1bW5Tb3J0aW5nOiEwLGFmdGVyR2V0Q29sSGVhZGVyOkdtZSxzdHJldGNoSDoiYWxsIn0sdGhpcy5hZnRlckdldENvbEhlYWRlcj1HbWV9bmdPbkluaXQoKXt0aGlzLmxpY2VuY2VTZXJ2aWNlLmhv'@; put 'dF9saWNlbnNlX2tleS5zdWJzY3JpYmUocj0+e3RoaXMuaG90VGFibGVMaWNlbnNlS2V5PXIsdGhpcy5pbml0aWFsaXplSG90U2V0dGluZ3MoKX0pLHRoaXMuaW5pdGlhbGl6ZUhvdFNldHRpbmdzKCl9bmdBZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuaG90VGFibGVVc2Vy'@; put 'RGF0YXNldENvbXBvbmVudCYmIXRoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNldCYmdGhpcy5pbml0VXNlcklucHV0SG90KCksdGhpcy5ob3RUYWJsZU1haW5Db21wb25lbnQmJiF0aGlzLmhvdEluc3RhbmNlJiZ0aGlzLmluaXRIb3QoKX0sNTApfW5nQWZ0ZXJDb250ZW50SW5pdCgpe1VuLmVk'@; put 'aXRvci5zdGFydHVwU2V0P3RoaXMuZ2V0RnJvbUdsb2JhbHMoKTp0aGlzLmV2ZW50U2VydmljZS5vblN0YXJ0dXBEYXRhTG9hZGVkLnN1YnNjcmliZSgoKT0+e3RoaXMuZ2V0RnJvbUdsb2JhbHMoKX0pfWdldEZyb21HbG9iYWxzKCl7dGhpcy5saWJzQW5kVGFibGVzPVVuLmVkaXRvci5saWJz'@; put 'QW5kVGFibGVzO2NvbnN0IHI9T2JqZWN0LmtleXModGhpcy5saWJzQW5kVGFibGVzKTt0aGlzLmhvdFVzZXJEYXRhc2V0cz8uY29sdW1ucyYmKHRoaXMuaG90VXNlckRhdGFzZXRzLmNvbHVtbnNbMF0uc291cmNlPXIpfW9uRmlsZUNoYW5nZShyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5j'@; put 'dGlvbiooKXtjb25zdCBvPXI/LnRhcmdldD8uZmlsZXN8fFtdO2lmKG8ubGVuZ3RoPDEpcmV0dXJuIHZvaWQgaS5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCwiTm8gZmlsZSBmb3VuZC4iLG51bGwsIkZpbGUgVXBsb2FkIik7bGV0IGE9IiI7Zm9yKGxldCBsIG9mIG8pe2NvbnN0'@; put 'IHU9bC5uYW1lLnNwbGl0KCIuIikucG9wKCk7aWYoYXx8KGE9dSksYSE9PXUpcmV0dXJuIHZvaWQgaS5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiTWl4ZWQgZXh0ZW5zaW9ucyBlcnJvciIsIlBsZWFzZSBzZWxlY3QgZmlsZXMgd2l0aCBzYW1lIGV4dGVuc2lvbi4iKTthPXV9aWYoWyJ4'@; put 'bHN4IiwieGxzbSIsInhsbSJdLmluY2x1ZGVzKGEpKWkuc2VsZWN0ZWRGaWxlPXIudGFyZ2V0LmZpbGVzWzBdLGkuc2VsZWN0ZWRGaWxlJiYoaS5maWxlTG9hZGluZ1N0YXRlPV9BLnJlYWRpbmcsaS5zZWxlY3RlZEZpbGUuc2l6ZU1CPWkuc3ByZWFkc2hlZXRTZXJ2aWNlLmJ5dGVzVG9NQihp'@; put 'LnNlbGVjdGVkRmlsZS5zaXplKSxpLnNwcmVhZHNoZWV0U2VydmljZS54bHN4UmVhZEZpbGUoaS5zZWxlY3RlZEZpbGUpLnRoZW4obD0+e2kuZmlsZUxvYWRpbmdTdGF0ZT1fQS5wYXJzaW5nLGkuc2VsZWN0ZWRGaWxlLndvcmtib29rPWx9KSksaS5pbml0VXNlcklucHV0SG90KCksc2V0VGlt'@; put 'ZW91dCgoKT0+e2kub25BdXRvRGV0ZWN0Q29sdW1ucygpfSwxMDApO2Vsc2V7aWYoImNzdiIhPT1hKXJldHVybiB2b2lkIGkuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIk9ubHkgZXhjZWwgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC4gKHhsc3gpIixudWxsLCJFeHRlbnNpb24g'@; put 'RXJyb3IiKTtpLm9uTXVsdGlDc3ZGaWxlcyhyLnRhcmdldC5maWxlcyl9ci50YXJnZXQudmFsdWU9IiJ9KSgpfW9uTXVsdGlDc3ZGaWxlcyhyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtmb3IobGV0IG8gb2Ygcil7Y29uc3QgYT1pLnBhcnNlRGF0YXNldEZyb21Dc3ZOYW1l'@; put 'KG8ubmFtZSk7aS5pc1ZhbGlkRGF0YXNldEZvcm1hdChhKSYmaS5pc1ZhbGlkRGF0YXNldFJlZmVyZW5jZShhKSYmaS5jc3ZGaWxlcy5wdXNoKHtmaWxlOm8sZmlsZU5hbWU6by5uYW1lfSl9aS5jc3ZGaWxlcy5sZW5ndGg/KGkuY3N2U3VibWl0dGluZz0hMCx5aWVsZCBpLnN1Ym1pdENzdkZp'@; put 'bGVzKCksaS5jc3ZTdWJtaXR0aW5nPSExKTppLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJDU1YgVXBsb2FkIiwiTm9uZSBvZiB0aGUgYXR0YWNoZWQgQ1NWIGZpbGUgbmFtZXMgbWF0Y2hlZCBhbiBhY3R1YWwgZGF0YXNldC4iKX0pKCl9b25EaXNjYXJkRmlsZSgpe3RoaXMuc2VsZWN0'@; put 'ZWRGaWxlPW51bGwsdGhpcy51c2VySW5wdXREYXRhc2V0cz0iIn1vblN0YXJ0UGFyc2luZ0ZpbGUoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLnVwbG9hZExvYWRpbmc9ITA7Y29uc3QgaT1bXTtsZXQgbz1bXTtmb3IobGV0IGEgb2Ygci5tYXRjaGVkRGF0YXNldHMpe2Nv'@; put 'bnN0IGw9ci5mZXRjaERhdGFzZXQoYSk7aS5wdXNoKGwpfVByb21pc2UuYWxsU2V0dGxlZChpKS50aGVuKGE9PnthLmZvckVhY2godT0+eyJmdWxmaWxsZWQiPT09dS5zdGF0dXMmJnUudmFsdWUmJm8ucHVzaCh1LnZhbHVlKX0pLHIudXBsb2FkTG9hZGluZz0hMSxyLmJ1aWxkRGF0YXNldHNP'@; put 'YmplY3RzKG8pLmZvckVhY2godT0+e3IucGFyc2VkRGF0YXNldHMucHVzaCh7bGliZHM6dS5saWJkcyxpbmNsdWRlSW5TdWJtaXNzaW9uOiEwLGRhdGFzZXRJbmZvOnUscGFyc2luZ1RhYmxlOiEwfSl9KSxyLndvcmtib29rTG9hZGVkKCkudGhlbih1PT57Zm9yKGxldCBnIG9mIHIucGFyc2Vk'@; put 'RGF0YXNldHMpci5zcHJlYWRzaGVldFNlcnZpY2UucGFyc2VFeGNlbEZpbGUoe2ZpbGU6ci5zZWxlY3RlZEZpbGUsd29ya2Jvb2s6dSxwYXNzd29yZDpyLnNlbGVjdGVkRmlsZS5wYXNzd29yZHx8dm9pZCAwLGRjVmFsaWRhdG9yOmcuZGF0YXNldEluZm8uZGNWYWxpZGF0b3IsaGVhZGVyUGtz'@; put 'OmcuZGF0YXNldEluZm8uaGVhZGVyUGtzLGhlYWRlckFycmF5OmcuZGF0YXNldEluZm8uaGVhZGVyQXJyYXksaGVhZGVyU2hvdzpbXSx0aW1lSGVhZGVyczpnLmRhdGFzZXRJbmZvLnRpbWVIZWFkZXJzLGRhdGVIZWFkZXJzOmcuZGF0YXNldEluZm8uZGF0ZUhlYWRlcnMsZGF0ZVRpbWVIZWFk'@; put 'ZXJzOmcuZGF0YXNldEluZm8uZGF0ZVRpbWVIZWFkZXJzLHhsUnVsZXM6Zy5kYXRhc2V0SW5mby54bFJ1bGVzfSkudGhlbihFPT57aWYoci5maWxlTG9hZGluZ1N0YXRlPV9BLnBhcnNlZCxFJiZFLmRhdGEpe2xldCBPPVtdO0UuZGF0YS5tYXAoWj0+e2xldCBlZT17fTtFLmhlYWRlclNob3cu'@; put 'bWFwKCh2ZSxNZSk9PntlZVt2ZV09WltNZV19KSxlZS5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX198fChlZS5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX189Ik5vIiksTy5wdXNoKGVlKX0pLGcuZGF0YXNvdXJjZT1PLGcucGFyc2VSZXN1bHQ9RSxnLnBhcnNpbmdUYWJsZT0h'@; put 'MX19KS5jYXRjaChFPT57Y29uc29sZS53YXJuKCJQYXJzaW5nIGV4Y2VsIGZpbGUgZXJyb3IuIixFKSxnLmRhdGFzb3VyY2U9W10sZy5pbmNsdWRlSW5TdWJtaXNzaW9uPSExLGcucGFyc2luZ1RhYmxlPSExfSl9KX0pfSkoKX1vblN1Ym1pdEFsbCgpe3RoaXMudGFibGVzVG9TdWJtaXQubGVu'@; put 'Z3RoP3RoaXMuc2hvd1N1Ym1pdFJlYXNvbk1vZGFsPSEwOnRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIk5vIHRhYmxlcyB0byBzdWJtaXQiLCJQbGVhc2UgaW5jbHVkZSBhdCBsZWFzdCBvbmUgdGFibGUgdG8gcHJvY2VlZC4iKX1vbkRpc2NhcmQoKXt0aGlzLnBhcnNlZERhdGFz'@; put 'ZXRzPVtdLHRoaXMubWF0Y2hlZERhdGFzZXRzPVtdLHRoaXMuc2VsZWN0ZWRGaWxlPW51bGwsdGhpcy51c2VySW5wdXREYXRhc2V0cz0iIix0aGlzLnN1Ym1pdFJlYXNvbk1lc3NhZ2U9IiJ9aW5pdEhvdCgpe3NldFRpbWVvdXQoKCk9PntpZih0aGlzLmhvdFRhYmxlTWFpbkNvbXBvbmVudD8u'@; put 'aG90SW5zdGFuY2Upe3RoaXMuaG90SW5zdGFuY2U9dGhpcy5ob3RUYWJsZU1haW5Db21wb25lbnQuaG90SW5zdGFuY2U7Y29uc3QgaT10aGlzLmNvbnRlbnRBcmVhUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0LTE2MCsicHgiO3RoaXMuYWN0aXZlUGFyc2VkRGF0YXNldCYmKHRoaXMu'@; put 'aG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2NvbEhlYWRlcnM6dGhpcy5hY3RpdmVQYXJzZWREYXRhc2V0LmRhdGFzZXRJbmZvLmhlYWRlckNvbHVtbnMsY29sdW1uczp0aGlzLmFjdGl2ZVBhcnNlZERhdGFzZXQuZGF0YXNldEluZm8uZGNWYWxpZGF0b3I/LmdldFJ1bGVzKCkscmVhZE9u'@; put 'bHk6ITAsaGVpZ2h0Oml8fCIzMDBweCIsY2xhc3NOYW1lOlsiaHREYXJrIl19KSx0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCksc2V0VGltZW91dCgoKT0+e3RoaXMuYWN0aXZlUGFyc2VkRGF0YXNldCYmdGhpcy5hY3RpdmVQYXJzZWREYXRhc2V0LmRhdGFzb3VyY2UmJih0aGlzLmhvdEluc3Rh'@; put 'bmNlLmxvYWREYXRhKHRoaXMuYWN0aXZlUGFyc2VkRGF0YXNldC5kYXRhc291cmNlKSx0aGlzLmhvdEluc3RhbmNlLnJlbmRlcigpKX0sMTAwKSl9fSwxMDApfWluaXRVc2VySW5wdXRIb3QoKXt2YXIgcj10aGlzO3NldFRpbWVvdXQoKCk9Pnt0aGlzLmhvdFRhYmxlVXNlckRhdGFzZXRDb21w'@; put 'b25lbnQ/LmhvdEluc3RhbmNlJiYodGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0PXRoaXMuaG90VGFibGVVc2VyRGF0YXNldENvbXBvbmVudC5ob3RJbnN0YW5jZSxzZXRUaW1lb3V0KCgpPT57dGhpcy5ob3RVc2VyRGF0YXNldHMuZGF0YSYmKHRoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNl'@; put 'dC5sb2FkRGF0YSh0aGlzLmhvdFVzZXJEYXRhc2V0cy5kYXRhKSx0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQucmVuZGVyKCkpfSw1MCksdGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0LmFkZEhvb2soImJlZm9yZUNoYW5nZSIsKGksbyk9PntpZihpKWZvcihsZXQgYSBvZiBpKWEmJmFb'@; put 'M10mJihhWzNdPWFbM10udG9VcHBlckNhc2UoKSl9KSx0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGk9Q3IoZnVuY3Rpb24qKG8sYSl7aWYobyl7ImVkaXQiPT09YSYmKHlpZWxkIHIub25Vc2VySW5wdXREYXRhc2V0c0No'@; put 'YW5nZSgpKTtmb3IobGV0IGwgb2YgbylyLm1hcmtVbm1hdGNoZWRSb3dzKGxbMF0pO3IuZHluYW1pY0NlbGxWYWxpZGF0aW9ucygpLHIuaG90SW5zdGFuY2VVc2VyRGF0YXNldC5yZW5kZXIoKX19KTtyZXR1cm4gZnVuY3Rpb24obyxhKXtyZXR1cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9'@; put 'fSgpKSx0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7dmFyIGk9Q3IoZnVuY3Rpb24qKG8sYSxsLHUpe3lpZWxkIHIub25Vc2VySW5wdXREYXRhc2V0c0NoYW5nZSgpO2ZvcihsZXQgZyBvZiBsKXIubWFya1VubWF0Y2hlZFJv'@; put 'd3MoZyl9KTtyZXR1cm4gZnVuY3Rpb24obyxhLGwsdSl7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkpfSwxMDApfWR5bmFtaWNDZWxsVmFsaWRhdGlvbnMoKXt0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQmJnRoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNldC5nZXREYXRh'@; put 'KCkuZm9yRWFjaCgoaSxvKT0+e2NvbnN0IGE9aVswXTthJiZhLmxlbmd0aCYmdGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0LnNldENlbGxNZXRhKG8sMSwic291cmNlIix0aGlzLmxpYnNBbmRUYWJsZXNbYV0pfSl9bWFya1VubWF0Y2hlZFJvd3Mocil7aWYoIXRoaXMuaG90SW5zdGFuY2VV'@; put 'c2VyRGF0YXNldClyZXR1cm47Y29uc3QgaT10aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuZ2V0RGF0YUF0Um93KHIpLG89YCR7aVswXX0uJHtpWzFdfWAsYT10aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuZ2V0Q2VsbE1ldGFBdFJvdyhyKTtpJiZpWzBdJiZpWzFdP3RoaXMubWF0Y2hl'@; put 'ZERhdGFzZXRzLmluY2x1ZGVzKG8pP2EuZm9yRWFjaChsPT57dGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0LnNldENlbGxNZXRhKHIsbC5jb2wsImNsYXNzTmFtZSIsIiIpfSk6YS5mb3JFYWNoKGw9Pnt0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuc2V0Q2VsbE1ldGEocixsLmNvbCwi'@; put 'Y2xhc3NOYW1lIiwibm90LW1hdGNoZWQiKX0pOmEuZm9yRWFjaChsPT57dGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0LnNldENlbGxNZXRhKHIsbC5jb2wsImNsYXNzTmFtZSIsIiIpfSl9b25Vc2VySW5wdXREYXRhc2V0c0NoYW5nZSgpe3JldHVybiBuZXcgUHJvbWlzZSgocixpKT0+e3Ro'@; put 'aXMuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoMTAwLCgpPT57Y29uc3Qgbz10aGlzLmdldERhdGFzZXRzRnJvbUhvdCgpO3RoaXMubWF0Y2hlZERhdGFzZXRzPVtdLG8uZm9yRWFjaChhPT57Y29uc3QgbD1hLnRyaW0oKTt0aGlzLmlzVmFsaWREYXRhc2V0Rm9ybWF0KGwpJiZ0aGlzLmlz'@; put 'VmFsaWREYXRhc2V0UmVmZXJlbmNlKGwpJiYhdGhpcy5tYXRjaGVkRGF0YXNldHMuaW5jbHVkZXMobCk/dGhpcy5tYXRjaGVkRGF0YXNldHMucHVzaChsKTpjb25zb2xlLndhcm4oYFNoZWV0IG5hbWU6ICR7bH0gaXMgbm90IGFuIGFjdHVhbCBkYXRhc2V0IHJlZmVyZW5jZS5gKX0pLHRoaXMu'@; put 'Y2RyLmRldGVjdENoYW5nZXMoKSxyKHZvaWQgMCl9KX0pfW9uQXV0b0RldGVjdENvbHVtbnMoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpZighci5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0KXtsZXQgbD0wO2NvbnN0IHU9MjA7Zm9yKDshci5ob3RJbnN0YW5jZVVzZXJEYXRh'@; put 'c2V0JiZsPHU7KXlpZWxkIG5ldyBQcm9taXNlKGc9PnNldFRpbWVvdXQoZywxMDApKSxsKys7aWYoIXIuaG90SW5zdGFuY2VVc2VyRGF0YXNldClyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oImhvdEluc3RhbmNlVXNlckRhdGFzZXQgbm90IHJlYWR5IGFmdGVyIHdhaXRpbmciKX1sZXQgaT0h'@; put 'MTtpZih5aWVsZCByLnBhcnNlRXhjZWxTaGVldE5hbWVzKCkudGhlbihsPT57ci5zaGVldE5hbWVzPWx9KS5jYXRjaChsPT57bC5pbmNsdWRlcygicGFzc3dvcmQiKSYmKGk9ITApfSksaSlyZXR1cm4gci5vbkRpc2NhcmRGaWxlKCksdm9pZCByLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFs'@; put 'KCJMb2NrZWQgZmlsZSIsIldlIGZhaWxlZCB0byB1bmxvY2sgdGhlIGZpbGUuIik7ci5zaGVldE5hbWVzJiYoci5tYXRjaGVkRGF0YXNldHM9W10sci51c2VySW5wdXREYXRhc2V0cz0iIixyLnNoZWV0TmFtZXMuZm9yRWFjaCgobCx1KT0+e2NvbnN0IGc9bC50cmltKCk7ci5pc1ZhbGlkRGF0'@; put 'YXNldEZvcm1hdChnKSYmci5pc1ZhbGlkRGF0YXNldFJlZmVyZW5jZShnKT9yLm1hdGNoZWREYXRhc2V0cy5wdXNoKGcpOmNvbnNvbGUud2FybihgU2hlZXQgbmFtZTogJHtnfSBpcyBub3QgYW4gYWN0dWFsIGRhdGFzZXQgcmVmZXJlbmNlLmApfSkpLHIudXNlcklucHV0RGF0YXNldHM9ci5t'@; put 'YXRjaGVkRGF0YXNldHMuam9pbigiXG4iKTtjb25zdCBvPXIubWF0Y2hlZERhdGFzZXRzLm1hcChsPT5bbC5zcGxpdCgiLiIpWzBdLGwuc3BsaXQoIi4iKVsxXV0pLGE9ci5ob3RVc2VyRGF0YXNldHMuZGF0YS5sZW5ndGg7aWYoby5sZW5ndGg8YSl7Y29uc3QgbD1hLW8ubGVuZ3RoO2Zvcihs'@; put 'ZXQgdT0wO3U8bDt1Kyspby5wdXNoKFsiIiwiIl0pfXIuaG90SW5zdGFuY2VVc2VyRGF0YXNldCYmc2V0VGltZW91dCgoKT0+e3IuaG90SW5zdGFuY2VVc2VyRGF0YXNldC5sb2FkRGF0YShvKSxyLmhvdEluc3RhbmNlVXNlckRhdGFzZXQucmVuZGVyKCl9LDEwMCksci5keW5hbWljQ2VsbFZh'@; put 'bGlkYXRpb25zKCl9KSgpfW9uUGFyc2VkRGF0YXNldENsaWNrKHIpe3RoaXMuZGVzZWxlY3RBbGxQYXJzZWREYXRhc2V0cygpLHIuYWN0aXZlPSEwLHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSx0aGlzLmluaXRIb3QoKX1vblN1Ym1pdHRlZENzdkRhdGFzZXRDbGljayhyKXt0aGlzLmRlc2Vs'@; put 'ZWN0QWxsU3VibWl0dGVkQ3N2RGF0YXNldHMoKSxyLmFjdGl2ZT0hMH1nZXQgYWN0aXZlUGFyc2VkRGF0YXNldCgpe3JldHVybiB0aGlzLnBhcnNlZERhdGFzZXRzLmZpbmQocj0+ci5hY3RpdmUpfWdldCBhY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0KCl7cmV0dXJuIHRoaXMuc3VibWl0dGVk'@; put 'Q3N2RGF0YXNldHMuZmluZChyPT5yLmFjdGl2ZSl9Z2V0IG5vdEZvdW5kRGF0YXNldHMoKXtyZXR1cm4gdGhpcy5nZXREYXRhc2V0c0Zyb21Ib3QoKS5maWx0ZXIoaT0+IXRoaXMubWF0Y2hlZERhdGFzZXRzLmluY2x1ZGVzKGkudHJpbSgpKSkuZmlsdGVyKGk9PmkubGVuZ3RoKX1nZXQgaXNI'@; put 'b3RIaWRkZW4oKXtpZighdGhpcy5ob3RJbnN0YW5jZSlyZXR1cm4hMDt0cnl7Y29uc3Qgcj10aGlzLmhvdEluc3RhbmNlLmdldFNldHRpbmdzKCkuY2xhc3NOYW1lO3JldHVybiEhciYmci5pbmNsdWRlcygiaHRDdXN0b21IaWRkZW4iKX1jYXRjaHtyZXR1cm4hMH19Z2V0IHRhYmxlc1RvU3Vi'@; put 'bWl0KCl7cmV0dXJuIHRoaXMucGFyc2VkRGF0YXNldHMuZmlsdGVyKHI9PnIuZGF0YXNvdXJjZSYmci5wYXJzZVJlc3VsdCYmci5pbmNsdWRlSW5TdWJtaXNzaW9uKX1nZXQgc3VibWl0dGluZ0Nzdigpe3JldHVybiB0aGlzLmNzdkZpbGVzLmxlbmd0aD4wfWdldCBleGNlbHNTdWJtaXR0ZWQo'@; put 'KXtyZXR1cm4hIXRoaXMucGFyc2VkRGF0YXNldHMuZmlsdGVyKHI9PnIuc3VibWl0UmVzdWx0KS5sZW5ndGh9ZG93bmxvYWRGaWxlKHIpe3RoaXMuaGVscGVyU2VydmljZS5kb3dubG9hZFRleHRGaWxlKGBzdGFnZWRhdGEtJHt0aGlzLmFjdGl2ZVN1Ym1pdHRlZENzdkRhdGFzZXQ/LmxpYmRz'@; put 'fS1sb2dgLEpTT04uc3RyaW5naWZ5KHIpKX1zdWJtaXRDc3ZGaWxlcygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2xldCBpPVtdO2ZvcihsZXQgbyBvZiByLmNzdkZpbGVzKXtjb25zdCBhPXIucGFyc2VEYXRhc2V0RnJvbUNzdk5hbWUoby5maWxlTmFtZSk7bGV0IGwsdTt5'@; put 'aWVsZCByLnNhc1NlcnZpY2UudXBsb2FkRmlsZSgic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSIsW29dLHt0YWJsZTphfSkudGhlbihnPT57dHlwZW9mIGcuYWRhcHRlclJlc3BvbnNlLnNhc2pzQWJvcnQ8InUiP2w9Zy5hZGFwdGVyUmVzcG9uc2Uuc2FzanNBYm9ydDp1PWcuYWRhcHRlclJl'@; put 'c3BvbnNlfSxnPT57Y29uc29sZS5lcnJvcigiZXJyIixnKSxsPWcuYWRhcHRlclJlc3BvbnNlfSksaS5wdXNoKHtzdWNjZXNzOnUsZXJyb3I6bCxsaWJkczphfSl9ci5zdWJtaXR0ZWRDc3ZEYXRhc2V0cz1pfSkoKX1mZXRjaERhdGFzZXQocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rp'@; put 'b24qKCl7aWYocilyZXR1cm4gaS5zYXNTdG9yZVNlcnZpY2UuY2FsbFNlcnZpY2Uoe0xJQkRTOnIsT1VUREVTVDoiV0VCIn0sIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvZ2V0ZGF0YSIscikudGhlbihhPT5hKS5jYXRjaChhPT57Y29uc29sZS53YXJuKGBFcnJvciBmZXRjaGluZyAke3J9'@; put 'YCxhKX0pfSkoKX1zdWJtaXRUYWJsZXMocil7dmFyIGk9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7Y29uc29sZS5pbmZvKCJTdWJtaXR0aW5nIG11bHRpcGxlIHRhYmxlcyIsaS5wYXJzZWREYXRhc2V0cyksaS5zdWJtaXRMb2FkaW5nPSEwO2ZvcihsZXQgbyBvZiBpLnBhcnNlZERhdGFz'@; put 'ZXRzKXtpZighby5wYXJzZVJlc3VsdHx8IW8uZGF0YXNvdXJjZXx8IW8uaW5jbHVkZUluU3VibWlzc2lvbnx8ciYmIXIuaW5jbHVkZXMoby5saWJkcykpY29udGludWU7bGV0IGE9e307aS5zdWJtaXRSZWFzb25NZXNzYWdlPWkuc3VibWl0UmVhc29uTWVzc2FnZS5yZXBsYWNlKC9cbi9nLCIu'@; put 'ICIpLGEuQUNUSU9OPSJMT0FEIixhLk1FU1NBR0U9aS5zdWJtaXRSZWFzb25NZXNzYWdlLGEuTElCRFM9by5saWJkcztsZXQgbD1vLmRhdGFzb3VyY2U7aWYobCl7bD1sLm1hcChlZT0+e2xldCB2ZT1lZS5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX187cmV0dXJuIGRlbGV0ZSBlZS5f'@; put 'X19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18sZWUuX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fPXZlLE9iamVjdC5rZXlzKGVlKS5tYXAoTWU9PnsibnVtZXJpYyI9PT1vLmRhdGFzZXRJbmZvLmRjVmFsaWRhdG9yPy5nZXRSdWxlKE1lKT8udHlwZSYmIi4iPT09ZWVbTWVdJiYo'@; put 'ZWVbTWVdPW51bGwpfSksZWV9KTtjb25zdCB1PWwuc2xpY2UoMCxpLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCk7bGV0IGcsRSxPO3lpZWxkIGkuc2FzU3RvcmVTZXJ2aWNlLnVwZGF0ZVRhYmxlKGEsdSwiU0FTQ29udHJvbFRhYmxlIiwiZWRpdG9ycy9zdGFnZWRhdGEi'@; put 'LG8uZGF0YXNldEluZm8uZGF0YS4kc2FzZGF0YSwhMCx7ZGVidWc6ITB9KS50aGVuKGVlPT57RT1lZS5hZGFwdGVyUmVzcG9uc2UsTz1lZS5sb2d9KS5jYXRjaChlZT0+e2NvbnNvbGUuZXJyb3IoImVyciIsZWUpLGc9ZWUuYWRhcHRlclJlc3BvbnNlLE89ZWUubG9nfSksby5zdWJtaXRSZXN1'@; put 'bHQ9e3N1Y2Nlc3M6RSxlcnJvcjpnLGxvZzpPLHBhcnNlUmVzdWx0Om8ucGFyc2VSZXN1bHQsbGliZHM6by5saWJkc319fWkuc2hvd1N1Ym1pdFJlYXNvbk1vZGFsPSExLGkuc3VibWl0TG9hZGluZz0hMSxpLmRlc2VsZWN0QWxsUGFyc2VkRGF0YXNldHMoKX0pKCl9cmVTdWJtaXRUYWJsZShy'@; put 'KXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXt5aWVsZCBpLnN1Ym1pdFRhYmxlcyhbci5saWJkc10pO2NvbnN0IG89aS5wYXJzZWREYXRhc2V0cy5maW5kKGE9PmEubGliZHM9PT1yLmxpYmRzKTtvJiYoby5hY3RpdmU9ITApfSkoKX13b3JrYm9va0xvYWRlZCgpe3JldHVybiBu'@; put 'ZXcgUHJvbWlzZSgocixpKT0+e3RoaXMuc2VsZWN0ZWRGaWxlfHxpKCJObyBmaWxlIHNlbGVjdGVkIiksdGhpcy53b3JrYm9va0ludGVydmFsPXNldEludGVydmFsKCgpPT57dGhpcy5zZWxlY3RlZEZpbGUud29ya2Jvb2smJihjbGVhckludGVydmFsKHRoaXMud29ya2Jvb2tJbnRlcnZhbCks'@; put 'cih0aGlzLnNlbGVjdGVkRmlsZS53b3JrYm9vaykpfSw1MDApfSl9cGFyc2VEYXRhc2V0RnJvbUNzdk5hbWUocil7Y29uc3QgaT1yLnNwbGl0KCIuIik7cmV0dXJuIGkucG9wKCksaS5qb2luKCIuIil9Z2V0RGF0YXNldHNGcm9tSG90KCl7cmV0dXJuIHRoaXMuaG90SW5zdGFuY2VVc2VyRGF0'@; put 'YXNldD90aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuZ2V0RGF0YSgpLmZpbHRlcihpPT5pWzBdPy5sZW5ndGgmJmlbMV0/Lmxlbmd0aCkubWFwKGk9Pmk/YCR7aVswXX0uJHtpWzFdfWA6IiIpOltdfXBhcnNlRXhjZWxTaGVldE5hbWVzKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rp'@; put 'b24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChpLG8pPT57aWYoIXIuc2VsZWN0ZWRGaWxlKXJldHVybiBpKFtdKTtyLnNwcmVhZHNoZWV0U2VydmljZS5wYXJzZUV4Y2VsU2hlZXROYW1lcyhyLnNlbGVjdGVkRmlsZSkudGhlbihhPT4oYS5wYXNzd29yZCYmKHIuc2VsZWN0ZWRGaWxlLnBhc3N3'@; put 'b3JkPWEucGFzc3dvcmQpLGkoYS5zaGVldE5hbWVzKSkpLmNhdGNoKGE9Pm8oYSkpfSl9KSgpfWlzVmFsaWREYXRhc2V0Rm9ybWF0KHIpe3JldHVybi9eXHd7MSw4fVwuXHd7MSwzMn0kL2dpbS50ZXN0KHIpfWlzVmFsaWREYXRhc2V0UmVmZXJlbmNlKHIpe2NvbnN0IGk9ci5zcGxpdCgiLiIp'@; put 'WzBdLG89ci5zcGxpdCgiLiIpWzFdO3JldHVybiEhdGhpcy5saWJzQW5kVGFibGVzW2ldPy5pbmNsdWRlcyhvKX1idWlsZERhdGFzZXRzT2JqZWN0cyhyKXtpZighcilyZXR1cm5bXTtjb25zdCBpPVtdO2ZvcihsZXQgbyBvZiByKWlmKG8uZGF0YSl7Y29uc3QgYT17Li4ubyxob3RUYWJsZTp7'@; put 'ZGF0YTpvLmRhdGEuc2FzZGF0YSxzZXR0aW5nczp7fX0sY29sczpbXSxoZWFkZXJDb2x1bW5zOltdLGhlYWRlclBrczpbXSxoZWFkZXJBcnJheTpbXSxkYXRlSGVhZGVyczpbXSx0aW1lSGVhZGVyczpbXSxkYXRlVGltZUhlYWRlcnM6W10seGxSdWxlczpbXSxjb2x1bW5IZWFkZXI6W119O2Eu'@; put 'Y29scz1vLmRhdGEuY29scyxhLmhlYWRlckNvbHVtbnM9by5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksYS5oZWFkZXJQa3M9by5kYXRhLnNhc3BhcmFtc1swXS5QSy5zcGxpdCgiICIpLC0xIT09YS5oZWFkZXJDb2x1bW5zLmluZGV4T2YoIl9fX19fREVMRVRFX19U'@; put 'SElTX19SRUNPUkRfX19fXyIpJiYoYS5oZWFkZXJDb2x1bW5zW2EuaGVhZGVyQ29sdW1ucy5pbmRleE9mKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iKV09IkRlbGV0ZT8iKSxhLmhlYWRlckFycmF5PWEuaGVhZGVyQ29sdW1ucy5zbGljZSgxKSwiIiE9PW8uZGF0YS5zYXNwYXJh'@; put 'bXNbMF0uRFRWQVJTJiYoYS5kYXRlSGVhZGVycz1vLmRhdGEuc2FzcGFyYW1zWzBdLkRUVkFSUy5zcGxpdCgiICIpKSwiIiE9PW8uZGF0YS5zYXNwYXJhbXNbMF0uVE1WQVJTJiYoYS50aW1lSGVhZGVycz1vLmRhdGEuc2FzcGFyYW1zWzBdLlRNVkFSUy5zcGxpdCgiICIpKSwiIiE9PW8uZGF0'@; put 'YS5zYXNwYXJhbXNbMF0uRFRUTVZBUlMmJihhLmRhdGVUaW1lSGVhZGVycz1vLmRhdGEuc2FzcGFyYW1zWzBdLkRUVE1WQVJTLnNwbGl0KCIgIikpLG8uZGF0YS54bF9ydWxlcy5sZW5ndGg+MCYmKGEueGxSdWxlcz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKG8uZGF0YS54bF9ydWxl'@; put 'cykpLGEuZGNWYWxpZGF0b3I9bmV3IGJ6ZShvLmRhdGEuc2FzcGFyYW1zWzBdLG8uZGF0YS4kc2FzZGF0YSxvLmRhdGEuY29scyxvLmRhdGEuZHFydWxlcyxvLmRhdGEuZHFkYXRhKSxhLmNvbHVtbkhlYWRlcj1vLmRhdGEuc2FzcGFyYW1zWzBdLkNPTEhFQURFUlMuc3BsaXQoIiwiKSxpLnB1'@; put 'c2goYSl9cmV0dXJuIGl9ZGVzZWxlY3RBbGxQYXJzZWREYXRhc2V0cygpe2ZvcihsZXQgciBvZiB0aGlzLnBhcnNlZERhdGFzZXRzKXIuYWN0aXZlPSExfWRlc2VsZWN0QWxsU3VibWl0dGVkQ3N2RGF0YXNldHMoKXtmb3IobGV0IHIgb2YgdGhpcy5zdWJtaXR0ZWRDc3ZEYXRhc2V0cylyLmFj'@; put 'dGl2ZT0hMX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZSh1ZCksemUoRjIpLHplKGZoKSx6ZShCcCksemUoQVplKSx6ZShpYyksemUoVWwpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLW11'@; put 'bHRpLWRhdGFzZXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGksbyl7aWYoMSZpJiYoV28oUHNuLDcpLFdvKEhzbiw1KSxXbyhWc24sNSkpLDImaSl7bGV0IGE7Y2koYT11aSgpKSYmKG8uY29udGVudEFyZWFSZWY9YS5maXJzdCksY2koYT11aSgpKSYmKG8uaG90VGFibGVNYWluQ29tcG9uZW50'@; put 'PWEuZmlyc3QpLGNpKGE9dWkoKSkmJihvLmhvdFRhYmxlVXNlckRhdGFzZXRDb21wb25lbnQ9YS5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihpLG8pezImaSYmd3IoImNvbnRlbnQtY29udGFpbmVyIixvLmNvbnRlbnRDb250YWluZXJDbGFzcyl9LHN0YW5kYWxv'@; put 'bmU6ITEsZGVjbHM6MzcsdmFyczoxOCxjb25zdHM6W1siY29udGVudEFyZWEiLCIiXSxbImZpbGVVcGxvYWRJbnB1dCIsIiJdLFsiaG90SW5zdGFuY2VVc2VyRGF0YXNldCIsIiJdLFsiaG90SW5zdGFuY2VNYWluIiwiIl0sWzEsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFsxLCJ0'@; put 'ZXh0LWNlbnRlciIsIm1iLTEwIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIiwibm8tYm9yZGVycyIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWzEsImhlYWRlci1yb3ciLCJjbHItcm93IiwianVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItanVzdGlmeS1j'@; put 'b250ZW50LWNlbnRlciIsInctMTAwIiwibS0wIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iXSxbMSwibm8tdGFibGUtc2VsZWN0ZWQiLCJwb2ludGVyLWV2ZW50cy1ub25lIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9k'@; put 'YWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsiY2RzLXRleHQiLCJib2R5IiwxLCJsaWNlbmNlLWxpbWl0LW5vdGljZSIsIm10LTAiLCJtYi0xNSJdLFsxLCJ0ZXh0LWFyZWEtZnVsbC13aWR0aCJdLFsiZm9yIiwiZm9ybUZpZWxkc184IiwxLCJtYi01IiwiZC1ibG9jayJdLFsiY2xyVGV4'@; put 'dGFyZWEiLCIiLCJ0YWJpbmRleCIsIjAiLCJ0eXBlIiwidGV4dCIsImlkIiwiZm9ybUZpZWxkc184IiwxLCJzdWJtaXQtcmVhc29uIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsiY2RzLXRleHQiLCJjYXB0aW9uX2NsZWFuIiwxLCJtdC0xMCJdLFsxLCJtb2RhbC1mb290ZXIiXSxb'@; put 'InR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJ0eXBlIiwiYnV0dG9uIiwiaWQiLCJzdWJtaXQtdGFibGVzIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzEsInRleHQtY2VudGVyIl0sWyJj'@; put 'bHJNZWRpdW0iLCIiXSxbImNkcy10ZXh0IiwiY2FwdGlvbl9jbGVhbiIsMSwibXQtMTAiLCJ0ZXh0LWNlbnRlciJdLFsiaWQiLCJicm93c2UtZmlsZSIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJidG4tc20iLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbImhpZGRlbiIsIiIsImlkIiwiZmlsZS11'@; put 'cGxvYWQiLCJ0eXBlIiwiZmlsZSIsIm11bHRpcGxlIiwiIiwzLCJjaGFuZ2UiXSxbImNkcy10ZXh0IiwiY2FwdGlvbiIsMSwibWwtMTAiLCJtYi0xMCJdLFsxLCJidG4iLCJidG4tZGFuZ2VyIiwiYnRuLXNtIiwibXItMTAiLDMsImNsaWNrIl0sWyJpZCIsInN1Ym1pdC1hbGwiLDEsImJ0biIs'@; put 'ImJ0bi1wcmltYXJ5IiwiYnRuLXNtIiwzLCJjbGljayJdLFsxLCJjbHItdHJlZW5vZGUtbGluayIsIndoaXRlc3BhY2Utbm93cmFwIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsMywiY2xpY2siXSxbMSwibWwtNSJdLFsic3RhdHVzIiwiZGFuZ2VyIiwic2hhcGUiLCJleGNs'@; put 'YW1hdGlvbi1jaXJjbGUiXSxbInN0YXR1cyIsInN1Y2Nlc3MiLCJzaGFwZSIsImNoZWNrLWNpcmNsZSJdLFsic2hhcGUiLCJ0YWJsZSJdLFsiY2xyU21hbGwiLCIiXSxbImNkcy10ZXh0IiwiY2FwdGlvbiIsMSwibWwtMTAiLCJtYi0xMCIsIm10LTEwIl0sWzEsImNsci10cmVlbm9kZS1saW5r'@; put 'Iiwid2hpdGVzcGFjZS1ub3dyYXAiLDMsImNsaWNrIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsInVwbG9hZC1jbG91ZCIsInNpemUiLCI0MCIsMSwiaXMtaW5mbyIsImljb24tZGMtZmlsbCJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIiwxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdy'@; put 'YXkiLCJtdC0xMCJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsIm10LTE1Il0sWzEsImRhdGFzZXQtaW5wdXQtd3JhcHBlciJdLFsiY2RzLXRleHQiLCJzZWNvbmRhcnkgcmVndWxhciIsMSwibWItNSJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJzaGFwZSIs'@; put 'InRyYXNoIiwic3RhdHVzIiwiZGFuZ2VyIiwxLCJtbC01IiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJjZHMtdGV4dCIsInNlY29uZGFyeSByZWd1bGFyIiwxLCJtYi0yMCJdLFsiY2RzLXRleHQiLCJzZWNvbmRhcnkgcmVndWxhciIsMSwibWItMTUiXSxbMSwibWItNSJdLFsiaWQi'@; put 'LCJob3RUYWJsZVVzZXJEYXRhc2V0IiwxLCJtdC0xNSIsMywic2V0dGluZ3MiXSxbMSwiZGF0YXNldC1zZWxlY3Rpb24tYWN0aW9ucyIsInRleHQtcmlnaHQiLCJtdC0xMCJdLFsiaWQiLCJjb250aW51ZS1idG4iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwiYnRuLXNtIiwzLCJjbGljayIsImRp'@; put 'c2FibGVkIiwiY2xyTG9hZGluZyJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJwcm9jZXNzLW9uLXZtIiwic2l6ZSIsIjQwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwi'@; put 'NDAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwicC0xMCIsIm10LTE1Iiwic3VibWlzc2lvbi1yZXN1bHRzIl0sWzEsImVycm9yLWZpZWxkIiwibXQtMTUiXSxbMSwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29u'@; put 'dGVudC1iZXR3ZWVuIiwicC0xMCIsIm10LTE1Il0sWyJjZHMtdGV4dCIsInNlY29uZGFyeSByZWd1bGFyIiwxLCJtYi0xMCJdLFsiY2RzLXRleHQiLCJzZWNvbmRhcnkgcmVndWxhciJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDMsInJvdXRlckxpbmsiXSxbMywiY2xyUG9zaXRpb24iLCJj'@; put 'bHJTaXplIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLCJuYW1lIiwib3B0aW9ucyIsInJlcXVpcmVkIiwiIiwidmFsdWUiLCJvcHRpb24xIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCIsImRpc2FibGVkIl0sWzEsInRleHQtY2VudGVyIiwidy0xMDAiXSxbImlkIiwi'@; put 'aG90VGFibGUiLDEsIm10LTE1IiwzLCJzZXR0aW5ncyJdLFsxLCJjb2xvci1ncmVlbiJdLFsxLCJjb2xvci1yZWQiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0xMCIsMywiY2xyTG9hZGluZyJdLFsxLCJidG4iLCJidG4tcHJpbWFyeS1vdXRsaW5lIiwibXQtMTAiLDMsImNsaWNrIl0s'@; put 'WzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMTAiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsxLCJsb2ctd3JhcHBlciJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbHJTbWFsbCIsIiIsMSwibWwtNSJdLFsxLCJzcGlubmVyLW1kIl0sWzEsImQtZmxleCIs'@; put 'ImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsInAtMTAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXtpZigxJmkpe2NvbnN0IGE9d24oKTtKKDAsImFwcC1zaWRlYmFyIiksdnQoMSxCc24sMiwwLCJkaXYiLDQpLHZ0KDIsanNuLDUsMSwiZGl2Iiw1KSx2dCgzLGVsbiw2LDEpLHZ0KDQs'@; put 'aWxuLDUsMCksdGUoKSxKKDUsImRpdiIsNiwwKSg3LCJkaXYiLDcpKDgsImRpdiIsOCkoOSwicCIsOSksU2UoMTAsIk11bHRpIERhdGFzZXQgTG9hZCIpLHRlKCkoKSx2dCgxMSxvbG4sNCwwLCJkaXYiLDEwKSx2dCgxMixSbG4sNCw0KSx0ZSgpKCksSigxMywiY2xyLW1vZGFsIiwxMSksaGko'@; put 'ImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uc2hvd1N1Ym1pdFJlYXNvbk1vZGFsLHUpfHwoby5zaG93U3VibWl0UmVhc29uTW9kYWw9dSksWGUodSl9KSxKKDE0LCJoMyIsMTIpLFNlKDE1KSx0ZSgpLEooMTYsImRpdiIsMTMpLHZ0KDE3LElsbiwy'@; put 'LDEsInAiLDE0KSxKKDE4LCJkaXYiLDE1KSgxOSwibGFiZWwiLDE2KSxTZSgyMCwiTWVzc2FnZSIpLHRlKCksSigyMSwidGV4dGFyZWEiLDE3KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uc3VibWl0UmVhc29uTWVzc2FnZSx1KXx8KG8uc3VibWl0'@; put 'UmVhc29uTWVzc2FnZT11KSxYZSh1KX0pLHRlKCkoKSxKKDIyLCJwIiwxOCksU2UoMjMsIiBUYWJsZXMgd2lsbCBiZSBzZW50IHNlcXVlbnRpYWxseSwgbG9ncyB3aWxsIGJlIGF2YWlsYWJsZSBhZnRlciBhbGwgdGFibGVzIGFyZSBzdWJtaXR0ZWQuICIpLHRlKCkoKSxKKDI0LCJkaXYiLDE5'@; put 'KSgyNSwiYnV0dG9uIiwyMCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLnNob3dTdWJtaXRSZWFzb25Nb2RhbD0hMSl9KSxTZSgyNiwiIENhbmNlbCAiKSx0ZSgpLEooMjcsImJ1dHRvbiIsMjEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUo'@; put 'by5zdWJtaXRUYWJsZXMoKSl9KSxTZSgyOCwiIFN1Ym1pdCAiKSx0ZSgpKCkoKSxKKDI5LCJjbHItbW9kYWwiLDExKSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5jc3ZTdWJtaXR0aW5nLHUpfHwoby5jc3ZTdWJtaXR0aW5nPXUpLFhlKHUp'@; put 'fSksSigzMCwiaDMiLDEyKSxTZSgzMSksdGUoKSxKKDMyLCJkaXYiLDEzKSgzMywiZGl2IiwyMiksSXQoMzQsImNsci1zcGlubmVyIiwyMyksdGUoKSxKKDM1LCJwIiwyNCksU2UoMzYsIiBUaGlzIHdpbGwgdGFrZSBmZXcgbW9tZW50cyAiKSx0ZSgpKCkoKX0yJmkmJihpZSgpLF90KG8uZGF0'@; put 'YXNldHNMb2FkaW5nPzE6LTEpLGllKCksX3Qoby5wYXJzZWREYXRhc2V0cy5sZW5ndGg/LTE6MiksaWUoKSxfdChvLnBhcnNlZERhdGFzZXRzLmxlbmd0aCYmIW8uc3VibWl0dGVkQ3N2RGF0YXNldHMubGVuZ3RoPzM6LTEpLGllKCksX3Qoby5zdWJtaXR0ZWRDc3ZEYXRhc2V0cy5sZW5ndGg/'@; put 'NDotMSksaWUoNyksX3QobnVsbCE9PW8uc2VsZWN0ZWRGaWxlfHxvLnN1Ym1pdHRpbmdDc3Y/LTE6MTEpLGllKCksX3QobnVsbCE9PW8uc2VsZWN0ZWRGaWxlfHxvLnN1Ym1pdHRpbmdDc3Y/MTI6LTEpLGllKCksZGkoImNsck1vZGFsT3BlbiIsby5zaG93U3VibWl0UmVhc29uTW9kYWwpLHJ0'@; put 'KCJjbHJNb2RhbENsb3NhYmxlIiwhMSksaWUoMiksTmgoIiBTdWJtaXQgIixvLnRhYmxlc1RvU3VibWl0Lmxlbmd0aCwiICIsMT09PW8udGFibGVzVG9TdWJtaXQubGVuZ3RoPyJ0YWJsZSI6InRhYmxlcyIsIiBmb3IgYXBwcm92YWwgIiksaWUoMiksX3Qoby5saWNlbmNlU3RhdGUudmFsdWUu'@; put 'c3VibWl0X3Jvd3NfbGltaXQhPT1vLkluZmluaXR5PzE3Oi0xKSxpZSg0KSxkaSgibmdNb2RlbCIsby5zdWJtaXRSZWFzb25NZXNzYWdlKSxpZSg0KSxydCgiZGlzYWJsZWQiLG8uc3VibWl0TG9hZGluZyksaWUoMikscnQoImNsckxvYWRpbmciLG8uc3VibWl0TG9hZGluZyksaWUoMiksZGko'@; put 'ImNsck1vZGFsT3BlbiIsby5jc3ZTdWJtaXR0aW5nKSxydCgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDIpLE5oKCIgU3VibWl0dGluZyAiLG8uY3N2RmlsZXMubGVuZ3RoLCIgQ1NWICIsMT09PW8uY3N2RmlsZXMubGVuZ3RoPyJmaWxlIjoiZmlsZXMiLCIgIikpfSxkZXBlbmRlbmNpZXM6'@; put 'W0w3LFAyLGx1LEgyLG9jLGxvZSxYbCxQcCxPMyxkNyxjdSxKcyx4ZCxtaCwkMCxpbSxlbCxZeixVMixGZixyVyx3dixTdixDdix6MiwkNixLbmVdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpfV19XTtsZXQgTGxuPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0o'@; put 'KT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbV2QuZm9yQ2hpbGQoRGxuKSxXZF19KSl9cmV0dXJuIG4oKSxlfSkoKTtYRigpO2xldCBPbG49KCgpPT57'@; put 'dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltMdyxMbG4saGQscTAsTEMscW8seVAsRW1dfSkpfXJldHVy'@; put 'biBuKCksZX0pKCk7Y29uc3QgTmxuPVt7cGF0aDoiIixjb21wb25lbnQ6QWFuLGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86InRhYmxlcyJ9LHtwYXRoOiJ0YWJsZXMiLGNvbXBvbmVudDpmc259LHtwYXRoOiJleGNlbC1tYXBzIixsb2FkQ2hpbGRyZW46'@; put 'KCk9Pk5zbn0se3BhdGg6Im11bHRpLWxvYWQiLGxvYWRDaGlsZHJlbjooKT0+T2xufV19XTtsZXQgRmxuPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBl'@; put 'OmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbV2QuZm9yQ2hpbGQoTmxuKSxXZF19KSl9cmV0dXJuIG4oKSxlfSkoKSxQbG49KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5c'@; put 'dTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltGbG4saGQscTAsTEMscW8seVAsRW1dfSkpfXJldHVybiBuKCksZX0pKCksJG1lPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3IocixpKXt0aGlzLmxpY2VuY2VTZXJ2aWNlPXIsdGhpcy5yb3V0'@; put 'ZXI9aX1jYW5BY3RpdmF0ZShyLGkpe3JldHVybiEhKHZvaWQgMCE9PWk/LnJvb3QucXVlcnlQYXJhbXMuZm9yY2V8fGk/LnVybC5pbmNsdWRlcygibGljZW5zaW5nL3VwZGF0ZSIpJiZ0aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkfHxudWxsIT09dGhpcy5saWNlbmNlU2Vydmlj'@; put 'ZS5pc0FwcEFjdGl2YXRlZC52YWx1ZSYmITE9PT10aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnZhbHVlKXx8KHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9ob21lIiksITEpfWNhbkRlYWN0aXZhdGUocixpLG8sYSl7cmV0dXJuIShvPy51cmwuaW5jbHVkZXMoImxpY2Vu'@; put 'c2luZy9yZWdpc3RlciIpfHx0aGlzLmxpY2VuY2VTZXJ2aWNlLmFwcExvY2tlZC52YWx1ZSl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkob3IoRjIpLG9yKHZjKSl9LHRoaXMuXHUwMjc1cHJvdj1Kbih7dG9rZW46ZSxmYWN0b3J5'@; put 'OmUuXHUwMjc1ZmFjfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgVVplPW49Pm4udHJpbSgpLnN0YXJ0c1dpdGgoIkRDS0VZMToiKSxWbG49ZnVuY3Rpb24oKXt2YXIgbj1DcihmdW5jdGlvbiooZSl7Y29uc3QgdD1lLmdldFJlYWRlcigpLHI9W107bGV0IGk9MDtmb3IoOzspe2NvbnN0e2Rv'@; put 'bmU6bCx2YWx1ZTp1fT15aWVsZCB0LnJlYWQoKTtpZihsKWJyZWFrO3IucHVzaCh1KSxpKz11Lmxlbmd0aH1jb25zdCBvPW5ldyBVaW50OEFycmF5KGkpO2xldCBhPTA7Zm9yKGNvbnN0IGwgb2YgcilvLnNldChsLGEpLGErPWwubGVuZ3RoO3JldHVybiBvLmJ1ZmZlcn0pO3JldHVybiBmdW5j'@; put 'dGlvbih0KXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLEJsbj1mdW5jdGlvbigpe3ZhciBuPUNyKGZ1bmN0aW9uKihlKXtjb25zdCB0PW5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKCJnemlwIikscj10LndyaXRhYmxlLmdldFdyaXRlcigpO3JldHVybih5aWVsZCBQcm9taXNl'@; put 'LmFsbChbci53cml0ZShuZXcgVWludDhBcnJheShlKSkudGhlbigoKT0+ci5jbG9zZSgpKSxWbG4odC5yZWFkYWJsZSldKSlbMV19KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxqbG49ZnVuY3Rpb24oKXt2YXIgbj1DcihmdW5jdGlvbioo'@; put 'ZSl7Y29uc3QgdD1lLnRyaW0oKTtpZighVVplKHQpKXJldHVybiBudWxsO2NvbnN0IHI9aGllLkQodC5zbGljZSg3KSksaT15aWVsZCBCbG4ociksbz0obmV3IFRleHREZWNvZGVyKS5kZWNvZGUoaSksYT1vLmluZGV4T2YoIiAiKTtpZigtMT09PWEpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlk'@; put 'IGNvbWJpbmVkIGxpY2VuY2Uga2V5OiBtaXNzaW5nIHNlcGFyYXRvciIpO3JldHVybntsaWNlbmNlS2V5Om8uc2xpY2UoMCxhKSxhY3RpdmF0aW9uS2V5Om8uc2xpY2UoYSsxKX19KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxVbG49W3tr'@; put 'ZXk6InZpZXdib3giLGxhYmVsOiJWaWV3Ym94In0se2tleToiZmlsZVVwbG9hZCIsbGFiZWw6IkZpbGUgVXBsb2FkIn0se2tleToiZWRpdFJlY29yZCIsbGFiZWw6IkVkaXQgUmVjb3JkIn0se2tleToiYWRkUmVjb3JkIixsYWJlbDoiQWRkIFJlY29yZCJ9XTtsZXQgaXk9e2FzeW5jOiExLGJh'@; put 'c2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6'@; put 'ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfTtmdW5jdGlvbiB6WmUobil7aXk9bn1jb25zdCBXWmU9L1smPD4iJ10vLFdsbj1uZXcgUmVnRXhwKFdaZS5zb3VyY2UsImciKSxZWmU9L1s8'@; put 'PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvLFlsbj1uZXcgUmVnRXhwKFlaZS5zb3VyY2UsImciKSxabG49eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LFpaZT1uPT5abG5bbl07ZnVuY3Rp'@; put 'b24gaGYobixlKXtpZihlKXtpZihXWmUudGVzdChuKSlyZXR1cm4gbi5yZXBsYWNlKFdsbixaWmUpfWVsc2UgaWYoWVplLnRlc3QobikpcmV0dXJuIG4ucmVwbGFjZShZbG4sWlplKTtyZXR1cm4gbn1jb25zdCBHbG49LyYoIyg/OlxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/Olx3KykpOz8v'@; put 'Z2k7ZnVuY3Rpb24gR1plKG4pe3JldHVybiBuLnJlcGxhY2UoR2xuLChlLHQpPT4iY29sb24iPT09KHQ9dC50b0xvd2VyQ2FzZSgpKT8iOiI6IiMiPT09dC5jaGFyQXQoMCk/IngiPT09dC5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikp'@; put 'OlN0cmluZy5mcm9tQ2hhckNvZGUoK3Quc3Vic3RyaW5nKDEpKToiIil9Y29uc3QgJGxuPS8oXnxbXlxbXSlcXi9nO2Z1bmN0aW9uIHFjKG4sZSl7bj0ic3RyaW5nIj09dHlwZW9mIG4/bjpuLnNvdXJjZSxlPWV8fCIiO2NvbnN0IHQ9e3JlcGxhY2U6KHIsaSk9PihpPShpPWkuc291cmNlfHxp'@; put 'KS5yZXBsYWNlKCRsbiwiJDEiKSxuPW4ucmVwbGFjZShyLGkpLHQpLGdldFJlZ2V4OigpPT5uZXcgUmVnRXhwKG4sZSl9O3JldHVybiB0fWNvbnN0IHFsbj0vW15cdzpdL2csS2xuPS9eJHxeW2Etel1bYS16MC05Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rpb24gJFplKG4sZSx0KXtpZihuKXtsZXQg'@; put 'cjt0cnl7cj1kZWNvZGVVUklDb21wb25lbnQoR1plKHQpKS5yZXBsYWNlKHFsbiwiIikudG9Mb3dlckNhc2UoKX1jYXRjaHtyZXR1cm4gbnVsbH1pZigwPT09ci5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHwwPT09ci5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PXIuaW5kZXhPZigiZGF0YToi'@; put 'KSlyZXR1cm4gbnVsbH1lJiYhS2xuLnRlc3QodCkmJih0PWZ1bmN0aW9uIGVjbihuLGUpe3BLWyIgIituXXx8KHBLWyIgIituXT1YbG4udGVzdChuKT9uKyIvIjptSyhuLCIvIiwhMCkpO2NvbnN0IHQ9LTE9PT0obj1wS1siICIrbl0pLmluZGV4T2YoIjoiKTtyZXR1cm4iLy8iPT09ZS5zdWJz'@; put 'dHJpbmcoMCwyKT90P2U6bi5yZXBsYWNlKFFsbiwiJDEiKStlOiIvIj09PWUuY2hhckF0KDApP3Q/ZTpuLnJlcGxhY2UoSmxuLCIkMSIpK2U6bitlfShlLHQpKTt0cnl7dD1lbmNvZGVVUkkodCkucmVwbGFjZSgvJTI1L2csIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gdH1jb25zdCBw'@; put 'Sz17fSxYbG49L15bXjpdKzpcLypbXi9dKiQvLFFsbj0vXihbXjpdKzopW1xzXFNdKiQvLEpsbj0vXihbXjpdKzpcLypbXi9dKilbXHNcU10qJC8sZ0s9e2V4ZWM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBxWmUobixlKXtjb25zdCByPW4ucmVwbGFjZSgvXHwvZywobyxhLGwpPT57bGV0IHU9'@; put 'ITEsZz1hO2Zvcig7LS1nPj0wJiYiXFwiPT09bFtnXTspdT0hdTtyZXR1cm4gdT8ifCI6IiB8In0pLnNwbGl0KC8gXHwvKTtsZXQgaT0wO2lmKHJbMF0udHJpbSgpfHxyLnNoaWZ0KCksci5sZW5ndGg+MCYmIXJbci5sZW5ndGgtMV0udHJpbSgpJiZyLnBvcCgpLHIubGVuZ3RoPmUpci5zcGxp'@; put 'Y2UoZSk7ZWxzZSBmb3IoO3IubGVuZ3RoPGU7KXIucHVzaCgiIik7Zm9yKDtpPHIubGVuZ3RoO2krKylyW2ldPXJbaV0udHJpbSgpLnJlcGxhY2UoL1xcXHwvZywifCIpO3JldHVybiByfWZ1bmN0aW9uIG1LKG4sZSx0KXtjb25zdCByPW4ubGVuZ3RoO2lmKDA9PT1yKXJldHVybiIiO2xldCBp'@; put 'PTA7Zm9yKDtpPHI7KXtjb25zdCBvPW4uY2hhckF0KHItaS0xKTtpZihvIT09ZXx8dCl7aWYobz09PWV8fCF0KWJyZWFrO2krK31lbHNlIGkrK31yZXR1cm4gbi5zbGljZSgwLHItaSl9ZnVuY3Rpb24gS1plKG4sZSx0LHIpe2NvbnN0IGk9ZS5ocmVmLG89ZS50aXRsZT9oZihlLnRpdGxlKTpu'@; put 'dWxsLGE9blsxXS5yZXBsYWNlKC9cXChbXFtcXV0pL2csIiQxIik7aWYoIiEiIT09blswXS5jaGFyQXQoMCkpe3Iuc3RhdGUuaW5MaW5rPSEwO2NvbnN0IGw9e3R5cGU6ImxpbmsiLHJhdzp0LGhyZWY6aSx0aXRsZTpvLHRleHQ6YSx0b2tlbnM6ci5pbmxpbmVUb2tlbnMoYSl9O3JldHVybiBy'@; put 'LnN0YXRlLmluTGluaz0hMSxsfXJldHVybnt0eXBlOiJpbWFnZSIscmF3OnQsaHJlZjppLHRpdGxlOm8sdGV4dDpoZihhKX19Y2xhc3Mgdkt7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fGl5fXNwYWNlKGUpe2NvbnN0IHQ9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoZSk7'@; put 'aWYodCYmdFswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzp0WzBdfX1jb2RlKGUpe2NvbnN0IHQ9dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoZSk7aWYodCl7Y29uc3Qgcj10WzBdLnJlcGxhY2UoL14gezEsNH0vZ20sIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6dFsw'@; put 'XSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3I6bUsociwiXG4iKX19fWZlbmNlcyhlKXtjb25zdCB0PXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMoZSk7aWYodCl7Y29uc3Qgcj10WzBdLGk9ZnVuY3Rpb24gcmNuKG4sZSl7Y29uc3Qg'@; put 'dD1uLm1hdGNoKC9eKFxzKykoPzpgYGApLyk7aWYobnVsbD09PXQpcmV0dXJuIGU7Y29uc3Qgcj10WzFdO3JldHVybiBlLnNwbGl0KCJcbiIpLm1hcChpPT57Y29uc3Qgbz1pLm1hdGNoKC9eXHMrLyk7aWYobnVsbD09PW8pcmV0dXJuIGk7Y29uc3RbYV09bztyZXR1cm4gYS5sZW5ndGg+PXIu'@; put 'bGVuZ3RoP2kuc2xpY2Uoci5sZW5ndGgpOml9KS5qb2luKCJcbiIpfShyLHRbM118fCIiKTtyZXR1cm57dHlwZToiY29kZSIscmF3OnIsbGFuZzp0WzJdP3RbMl0udHJpbSgpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIik6dFsyXSx0ZXh0Oml9fX1oZWFkaW5nKGUp'@; put 'e2NvbnN0IHQ9dGhpcy5ydWxlcy5ibG9jay5oZWFkaW5nLmV4ZWMoZSk7aWYodCl7bGV0IHI9dFsyXS50cmltKCk7aWYoLyMkLy50ZXN0KHIpKXtjb25zdCBpPW1LKHIsIiMiKTsodGhpcy5vcHRpb25zLnBlZGFudGljfHwhaXx8LyAkLy50ZXN0KGkpKSYmKHI9aS50cmltKCkpfXJldHVybnt0'@; put 'eXBlOiJoZWFkaW5nIixyYXc6dFswXSxkZXB0aDp0WzFdLmxlbmd0aCx0ZXh0OnIsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHIpfX19aHIoZSl7Y29uc3QgdD10aGlzLnJ1bGVzLmJsb2NrLmhyLmV4ZWMoZSk7aWYodClyZXR1cm57dHlwZToiaHIiLHJhdzp0WzBdfX1ibG9ja3F1b3RlKGUp'@; put 'e2NvbnN0IHQ9dGhpcy5ydWxlcy5ibG9jay5ibG9ja3F1b3RlLmV4ZWMoZSk7aWYodCl7Y29uc3Qgcj10WzBdLnJlcGxhY2UoL14gKj5bIFx0XT8vZ20sIiIpLGk9dGhpcy5sZXhlci5zdGF0ZS50b3A7dGhpcy5sZXhlci5zdGF0ZS50b3A9ITA7Y29uc3Qgbz10aGlzLmxleGVyLmJsb2NrVG9r'@; put 'ZW5zKHIpO3JldHVybiB0aGlzLmxleGVyLnN0YXRlLnRvcD1pLHt0eXBlOiJibG9ja3F1b3RlIixyYXc6dFswXSx0b2tlbnM6byx0ZXh0OnJ9fX1saXN0KGUpe2xldCB0PXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKGUpO2lmKHQpe2xldCByLGksbyxhLGwsdSxnLEUsTyxaLGVlLHZlLE1l'@; put 'PXRbMV0udHJpbSgpO2NvbnN0IEhlPU1lLmxlbmd0aD4xLFdlPXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpIZSxzdGFydDpIZT8rTWUuc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O01lPUhlP2BcXGR7MSw5fVxcJHtNZS5zbGljZSgtMSl9YDpgXFwke01lfWAsdGhpcy5v'@; put 'cHRpb25zLnBlZGFudGljJiYoTWU9SGU/TWU6IlsqKy1dIik7Y29uc3QgYXQ9bmV3IFJlZ0V4cChgXiggezAsM30ke01lfSkoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpYCk7Zm9yKDtlJiYodmU9ITEsKHQ9YXQuZXhlYyhlKSkmJiF0aGlzLnJ1bGVzLmJsb2NrLmhyLnRlc3QoZSkpOyl7'@; put 'aWYocj10WzBdLGU9ZS5zdWJzdHJpbmcoci5sZW5ndGgpLEU9dFsyXS5zcGxpdCgiXG4iLDEpWzBdLnJlcGxhY2UoL15cdCsvLEF0PT4iICIucmVwZWF0KDMqQXQubGVuZ3RoKSksTz1lLnNwbGl0KCJcbiIsMSlbMF0sdGhpcy5vcHRpb25zLnBlZGFudGljPyhhPTIsZWU9RS50cmltTGVmdCgp'@; put 'KTooYT10WzJdLnNlYXJjaCgvW14gXS8pLGE9YT40PzE6YSxlZT1FLnNsaWNlKGEpLGErPXRbMV0ubGVuZ3RoKSx1PSExLCFFJiYvXiAqJC8udGVzdChPKSYmKHIrPU8rIlxuIixlPWUuc3Vic3RyaW5nKE8ubGVuZ3RoKzEpLHZlPSEwKSwhdmUpe2NvbnN0IEF0PW5ldyBSZWdFeHAoYF4gezAs'@; put 'JHtNYXRoLm1pbigzLGEtMSl9fSg/OlsqKy1dfFxcZHsxLDl9Wy4pXSkoKD86WyBcdF1bXlxcbl0qKT8oPzpcXG58JCkpYCksS3Q9bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsYS0xKX19KCg/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKWApLHF0'@; put 'PW5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLGEtMSl9fSg/OlxgXGBcYHx+fn4pYCksZ249bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsYS0xKX19I2ApO2Zvcig7ZSYmKFo9ZS5zcGxpdCgiXG4iLDEpWzBdLE89Wix0aGlzLm9wdGlvbnMucGVkYW50aWMmJihPPU8ucmVwbGFj'@; put 'ZSgvXiB7MSw0fSg/PSggezR9KSpbXiBdKS9nLCIgICIpKSwhKHF0LnRlc3QoTyl8fGduLnRlc3QoTyl8fEF0LnRlc3QoTyl8fEt0LnRlc3QoZSkpKTspe2lmKE8uc2VhcmNoKC9bXiBdLyk+PWF8fCFPLnRyaW0oKSllZSs9IlxuIitPLnNsaWNlKGEpO2Vsc2V7aWYodXx8RS5zZWFyY2goL1te'@; put 'IF0vKT49NHx8cXQudGVzdChFKXx8Z24udGVzdChFKXx8S3QudGVzdChFKSlicmVhaztlZSs9IlxuIitPfSF1JiYhTy50cmltKCkmJih1PSEwKSxyKz1aKyJcbiIsZT1lLnN1YnN0cmluZyhaLmxlbmd0aCsxKSxFPU8uc2xpY2UoYSl9fVdlLmxvb3NlfHwoZz9XZS5sb29zZT0hMDovXG4gKlxu'@; put 'ICokLy50ZXN0KHIpJiYoZz0hMCkpLHRoaXMub3B0aW9ucy5nZm0mJihpPS9eXFtbIHhYXVxdIC8uZXhlYyhlZSksaSYmKG89IlsgXSAiIT09aVswXSxlZT1lZS5yZXBsYWNlKC9eXFtbIHhYXVxdICsvLCIiKSkpLFdlLml0ZW1zLnB1c2goe3R5cGU6Imxpc3RfaXRlbSIscmF3OnIsdGFzazoh'@; put 'IWksY2hlY2tlZDpvLGxvb3NlOiExLHRleHQ6ZWV9KSxXZS5yYXcrPXJ9V2UuaXRlbXNbV2UuaXRlbXMubGVuZ3RoLTFdLnJhdz1yLnRyaW1SaWdodCgpLFdlLml0ZW1zW1dlLml0ZW1zLmxlbmd0aC0xXS50ZXh0PWVlLnRyaW1SaWdodCgpLFdlLnJhdz1XZS5yYXcudHJpbVJpZ2h0KCk7Y29u'@; put 'c3QgQ3Q9V2UuaXRlbXMubGVuZ3RoO2ZvcihsPTA7bDxDdDtsKyspaWYodGhpcy5sZXhlci5zdGF0ZS50b3A9ITEsV2UuaXRlbXNbbF0udG9rZW5zPXRoaXMubGV4ZXIuYmxvY2tUb2tlbnMoV2UuaXRlbXNbbF0udGV4dCxbXSksIVdlLmxvb3NlKXtjb25zdCBBdD1XZS5pdGVtc1tsXS50b2tl'@; put 'bnMuZmlsdGVyKHF0PT4ic3BhY2UiPT09cXQudHlwZSksS3Q9QXQubGVuZ3RoPjAmJkF0LnNvbWUocXQ9Pi9cbi4qXG4vLnRlc3QocXQucmF3KSk7V2UubG9vc2U9S3R9aWYoV2UubG9vc2UpZm9yKGw9MDtsPEN0O2wrKylXZS5pdGVtc1tsXS5sb29zZT0hMDtyZXR1cm4gV2V9fWh0bWwoZSl7'@; put 'Y29uc3QgdD10aGlzLnJ1bGVzLmJsb2NrLmh0bWwuZXhlYyhlKTtpZih0KXtjb25zdCByPXt0eXBlOiJodG1sIixibG9jazohMCxyYXc6dFswXSxwcmU6IXRoaXMub3B0aW9ucy5zYW5pdGl6ZXImJigicHJlIj09PXRbMV18fCJzY3JpcHQiPT09dFsxXXx8InN0eWxlIj09PXRbMV0pLHRleHQ6'@; put 'dFswXX07aWYodGhpcy5vcHRpb25zLnNhbml0aXplKXtjb25zdCBpPXRoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcih0WzBdKTpoZih0WzBdKTtyLnR5cGU9InBhcmFncmFwaCIsci50ZXh0PWksci50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoaSl9cmV0dXJu'@; put 'IHJ9fWRlZihlKXtjb25zdCB0PXRoaXMucnVsZXMuYmxvY2suZGVmLmV4ZWMoZSk7aWYodCl7Y29uc3Qgcj10WzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMrL2csIiAiKSxpPXRbMl0/dFsyXS5yZXBsYWNlKC9ePCguKik+JC8sIiQxIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5f'@; put 'ZXNjYXBlcywiJDEiKToiIixvPXRbM10/dFszXS5zdWJzdHJpbmcoMSx0WzNdLmxlbmd0aC0xKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpOnRbM107cmV0dXJue3R5cGU6ImRlZiIsdGFnOnIscmF3OnRbMF0saHJlZjppLHRpdGxlOm99fX10YWJsZShlKXtjb25z'@; put 'dCB0PXRoaXMucnVsZXMuYmxvY2sudGFibGUuZXhlYyhlKTtpZih0KXtjb25zdCByPXt0eXBlOiJ0YWJsZSIsaGVhZGVyOnFaZSh0WzFdKS5tYXAoaT0+KHt0ZXh0Oml9KSksYWxpZ246dFsyXS5yZXBsYWNlKC9eICp8XHwgKiQvZywiIikuc3BsaXQoLyAqXHwgKi8pLHJvd3M6dFszXSYmdFsz'@; put 'XS50cmltKCk/dFszXS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKS5zcGxpdCgiXG4iKTpbXX07aWYoci5oZWFkZXIubGVuZ3RoPT09ci5hbGlnbi5sZW5ndGgpe3IucmF3PXRbMF07bGV0IG8sYSxsLHUsaT1yLmFsaWduLmxlbmd0aDtmb3Iobz0wO288aTtvKyspci5hbGlnbltvXT0vXiAqLSs6'@; put 'ICokLy50ZXN0KHIuYWxpZ25bb10pPyJyaWdodCI6L14gKjotKzogKiQvLnRlc3Qoci5hbGlnbltvXSk/ImNlbnRlciI6L14gKjotKyAqJC8udGVzdChyLmFsaWduW29dKT8ibGVmdCI6bnVsbDtmb3IoaT1yLnJvd3MubGVuZ3RoLG89MDtvPGk7bysrKXIucm93c1tvXT1xWmUoci5yb3dzW29d'@; put 'LHIuaGVhZGVyLmxlbmd0aCkubWFwKGc9Pih7dGV4dDpnfSkpO2ZvcihpPXIuaGVhZGVyLmxlbmd0aCxhPTA7YTxpO2ErKylyLmhlYWRlclthXS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoci5oZWFkZXJbYV0udGV4dCk7Zm9yKGk9ci5yb3dzLmxlbmd0aCxhPTA7YTxpO2ErKylmb3IodT1y'@; put 'LnJvd3NbYV0sbD0wO2w8dS5sZW5ndGg7bCsrKXVbbF0udG9rZW5zPXRoaXMubGV4ZXIuaW5saW5lKHVbbF0udGV4dCk7cmV0dXJuIHJ9fX1saGVhZGluZyhlKXtjb25zdCB0PXRoaXMucnVsZXMuYmxvY2subGhlYWRpbmcuZXhlYyhlKTtpZih0KXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6'@; put 'dFswXSxkZXB0aDoiPSI9PT10WzJdLmNoYXJBdCgwKT8xOjIsdGV4dDp0WzFdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZSh0WzFdKX19cGFyYWdyYXBoKGUpe2NvbnN0IHQ9dGhpcy5ydWxlcy5ibG9jay5wYXJhZ3JhcGguZXhlYyhlKTtpZih0KXtjb25zdCByPSJcbiI9PT10WzFdLmNoYXJB'@; put 'dCh0WzFdLmxlbmd0aC0xKT90WzFdLnNsaWNlKDAsLTEpOnRbMV07cmV0dXJue3R5cGU6InBhcmFncmFwaCIscmF3OnRbMF0sdGV4dDpyLHRva2Vuczp0aGlzLmxleGVyLmlubGluZShyKX19fXRleHQoZSl7Y29uc3QgdD10aGlzLnJ1bGVzLmJsb2NrLnRleHQuZXhlYyhlKTtpZih0KXJldHVy'@; put 'bnt0eXBlOiJ0ZXh0IixyYXc6dFswXSx0ZXh0OnRbMF0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHRbMF0pfX1lc2NhcGUoZSl7Y29uc3QgdD10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyhlKTtpZih0KXJldHVybnt0eXBlOiJlc2NhcGUiLHJhdzp0WzBdLHRleHQ6aGYodFsxXSl9'@; put 'fXRhZyhlKXtjb25zdCB0PXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKGUpO2lmKHQpcmV0dXJuIXRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiYvXjxhIC9pLnRlc3QodFswXSk/dGhpcy5sZXhlci5zdGF0ZS5pbkxpbms9ITA6dGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePFwvYT4vaS50'@; put 'ZXN0KHRbMF0pJiYodGhpcy5sZXhlci5zdGF0ZS5pbkxpbms9ITEpLCF0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLnRlc3QodFswXSk/dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5S'@; put 'YXdCbG9jayYmL148XC8ocHJlfGNvZGV8a2JkfHNjcmlwdCkoXHN8PikvaS50ZXN0KHRbMF0pJiYodGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSExKSx7dHlwZTp0aGlzLm9wdGlvbnMuc2FuaXRpemU/InRleHQiOiJodG1sIixyYXc6dFswXSxpbkxpbms6dGhpcy5sZXhlci5zdGF0ZS5p'@; put 'bkxpbmssaW5SYXdCbG9jazp0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2ssYmxvY2s6ITEsdGV4dDp0aGlzLm9wdGlvbnMuc2FuaXRpemU/dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlvbnMuc2FuaXRpemVyKHRbMF0pOmhmKHRbMF0pOnRbMF19fWxpbmsoZSl7Y29uc3QgdD10'@; put 'aGlzLnJ1bGVzLmlubGluZS5saW5rLmV4ZWMoZSk7aWYodCl7Y29uc3Qgcj10WzJdLnRyaW0oKTtpZighdGhpcy5vcHRpb25zLnBlZGFudGljJiYvXjwvLnRlc3Qocikpe2lmKCEvPiQvLnRlc3QocikpcmV0dXJuO2NvbnN0IGE9bUsoci5zbGljZSgwLC0xKSwiXFwiKTtpZigoci5sZW5ndGgt'@; put 'YS5sZW5ndGgpJTI9PTApcmV0dXJufWVsc2V7Y29uc3QgYT1mdW5jdGlvbiB0Y24obixlKXtpZigtMT09PW4uaW5kZXhPZihlWzFdKSlyZXR1cm4tMTtjb25zdCB0PW4ubGVuZ3RoO2xldCByPTAsaT0wO2Zvcig7aTx0O2krKylpZigiXFwiPT09bltpXSlpKys7ZWxzZSBpZihuW2ldPT09ZVsw'@; put 'XSlyKys7ZWxzZSBpZihuW2ldPT09ZVsxXSYmKHItLSxyPDApKXJldHVybiBpO3JldHVybi0xfSh0WzJdLCIoKSIpO2lmKGE+LTEpe2NvbnN0IHU9KDA9PT10WzBdLmluZGV4T2YoIiEiKT81OjQpK3RbMV0ubGVuZ3RoK2E7dFsyXT10WzJdLnN1YnN0cmluZygwLGEpLHRbMF09dFswXS5zdWJz'@; put 'dHJpbmcoMCx1KS50cmltKCksdFszXT0iIn19bGV0IGk9dFsyXSxvPSIiO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyl7Y29uc3QgYT0vXihbXiciXSpbXlxzXSlccysoWyciXSkoLiopXDIvLmV4ZWMoaSk7YSYmKGk9YVsxXSxvPWFbM10pfWVsc2Ugbz10WzNdP3RbM10uc2xpY2UoMSwtMSk6'@; put 'IiI7cmV0dXJuIGk9aS50cmltKCksL148Ly50ZXN0KGkpJiYoaT10aGlzLm9wdGlvbnMucGVkYW50aWMmJiEvPiQvLnRlc3Qocik/aS5zbGljZSgxKTppLnNsaWNlKDEsLTEpKSxLWmUodCx7aHJlZjppJiZpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIiksdGl0bGU6'@; put 'byYmby5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpfSx0WzBdLHRoaXMubGV4ZXIpfX1yZWZsaW5rKGUsdCl7bGV0IHI7aWYoKHI9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKGUpKXx8KHI9dGhpcy5ydWxlcy5pbmxpbmUubm9saW5rLmV4ZWMoZSkpKXts'@; put 'ZXQgaT0oclsyXXx8clsxXSkucmVwbGFjZSgvXHMrL2csIiAiKTtpZihpPXRbaS50b0xvd2VyQ2FzZSgpXSwhaSl7Y29uc3Qgbz1yWzBdLmNoYXJBdCgwKTtyZXR1cm57dHlwZToidGV4dCIscmF3Om8sdGV4dDpvfX1yZXR1cm4gS1plKHIsaSxyWzBdLHRoaXMubGV4ZXIpfX1lbVN0cm9uZyhl'@; put 'LHQscj0iIil7bGV0IGk9dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcubERlbGltLmV4ZWMoZSk7aWYoISghaXx8aVszXSYmci5tYXRjaCgvW1xwe0x9XHB7Tn1dL3UpKSYmKCFpWzFdJiYhaVsyXXx8IXJ8fHRoaXMucnVsZXMuaW5saW5lLnB1bmN0dWF0aW9uLmV4ZWMocikpKXtjb25zdCBh'@; put 'PWlbMF0ubGVuZ3RoLTE7bGV0IGwsdSxnPWEsRT0wO2NvbnN0IE89IioiPT09aVswXVswXT90aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltVW5kO2ZvcihPLmxhc3RJbmRleD0wLHQ9dC5zbGljZSgtMSplLmxlbmd0'@; put 'aCthKTtudWxsIT0oaT1PLmV4ZWModCkpOyl7aWYobD1pWzFdfHxpWzJdfHxpWzNdfHxpWzRdfHxpWzVdfHxpWzZdLCFsKWNvbnRpbnVlO2lmKHU9bC5sZW5ndGgsaVszXXx8aVs0XSl7Zys9dTtjb250aW51ZX1pZigoaVs1XXx8aVs2XSkmJmElMyYmISgoYSt1KSUzKSl7RSs9dTtjb250aW51'@; put 'ZX1pZihnLT11LGc+MCljb250aW51ZTt1PU1hdGgubWluKHUsdStnK0UpO2NvbnN0IFo9ZS5zbGljZSgwLGEraS5pbmRleCt1KzEpO2lmKE1hdGgubWluKGEsdSklMil7Y29uc3QgdmU9Wi5zbGljZSgxLC0xKTtyZXR1cm57dHlwZToiZW0iLHJhdzpaLHRleHQ6dmUsdG9rZW5zOnRoaXMubGV4'@; put 'ZXIuaW5saW5lVG9rZW5zKHZlKX19Y29uc3QgZWU9Wi5zbGljZSgyLC0yKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6Wix0ZXh0OmVlLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhlZSl9fX19Y29kZXNwYW4oZSl7Y29uc3QgdD10aGlzLnJ1bGVzLmlubGluZS5jb2RlLmV4ZWMo'@; put 'ZSk7aWYodCl7bGV0IHI9dFsyXS5yZXBsYWNlKC9cbi9nLCIgIik7Y29uc3QgaT0vW14gXS8udGVzdChyKSxvPS9eIC8udGVzdChyKSYmLyAkLy50ZXN0KHIpO3JldHVybiBpJiZvJiYocj1yLnN1YnN0cmluZygxLHIubGVuZ3RoLTEpKSxyPWhmKHIsITApLHt0eXBlOiJjb2Rlc3BhbiIscmF3'@; put 'OnRbMF0sdGV4dDpyfX19YnIoZSl7Y29uc3QgdD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKGUpO2lmKHQpcmV0dXJue3R5cGU6ImJyIixyYXc6dFswXX19ZGVsKGUpe2NvbnN0IHQ9dGhpcy5ydWxlcy5pbmxpbmUuZGVsLmV4ZWMoZSk7aWYodClyZXR1cm57dHlwZToiZGVsIixyYXc6dFsw'@; put 'XSx0ZXh0OnRbMl0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKHRbMl0pfX1hdXRvbGluayhlLHQpe2NvbnN0IHI9dGhpcy5ydWxlcy5pbmxpbmUuYXV0b2xpbmsuZXhlYyhlKTtpZihyKXtsZXQgaSxvO3JldHVybiJAIj09PXJbMl0/KGk9aGYodGhpcy5vcHRpb25zLm1hbmdsZT90'@; put 'KHJbMV0pOnJbMV0pLG89Im1haWx0bzoiK2kpOihpPWhmKHJbMV0pLG89aSkse3R5cGU6ImxpbmsiLHJhdzpyWzBdLHRleHQ6aSxocmVmOm8sdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmksdGV4dDppfV19fX11cmwoZSx0KXtsZXQgcjtpZihyPXRoaXMucnVsZXMuaW5saW5lLnVybC5leGVj'@; put 'KGUpKXtsZXQgaSxvO2lmKCJAIj09PXJbMl0paT1oZih0aGlzLm9wdGlvbnMubWFuZ2xlP3QoclswXSk6clswXSksbz0ibWFpbHRvOiIraTtlbHNle2xldCBhO2Rve2E9clswXSxyWzBdPXRoaXMucnVsZXMuaW5saW5lLl9iYWNrcGVkYWwuZXhlYyhyWzBdKVswXX13aGlsZShhIT09clswXSk7'@; put 'aT1oZihyWzBdKSxvPSJ3d3cuIj09PXJbMV0/Imh0dHA6Ly8iK3JbMF06clswXX1yZXR1cm57dHlwZToibGluayIscmF3OnJbMF0sdGV4dDppLGhyZWY6byx0b2tlbnM6W3t0eXBlOiJ0ZXh0IixyYXc6aSx0ZXh0Oml9XX19fWlubGluZVRleHQoZSx0KXtjb25zdCByPXRoaXMucnVsZXMuaW5s'@; put 'aW5lLnRleHQuZXhlYyhlKTtpZihyKXtsZXQgaTtyZXR1cm4gaT10aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s/dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihyWzBdKTpoZihyWzBdKTpyWzBdOmhmKHRoaXMub3B0'@; put 'aW9ucy5zbWFydHlwYW50cz90KHJbMF0pOnJbMF0pLHt0eXBlOiJ0ZXh0IixyYXc6clswXSx0ZXh0Oml9fX19Y29uc3QgS2E9e25ld2xpbmU6L14oPzogKig/OlxufCQpKSsvLGNvZGU6L14oIHs0fVteXG5dKyg/OlxuKD86ICooPzpcbnwkKSkqKT8pKy8sZmVuY2VzOi9eIHswLDN9KGB7Myx9'@; put 'KD89W15gXG5dKig/OlxufCQpKXx+ezMsfSkoW15cbl0qKSg/OlxufCQpKD86fChbXHNcU10qPykoPzpcbnwkKSkoPzogezAsM31cMVt+YF0qICooPz1cbnwkKXwkKS8saHI6L14gezAsM30oKD86LVtcdCBdKil7Myx9fCg/Ol9bIFx0XSopezMsfXwoPzpcKlsgXHRdKil7Myx9KSg/OlxuK3wk'@; put 'KS8saGVhZGluZzovXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxibG9ja3F1b3RlOi9eKCB7MCwzfT4gPyhwYXJhZ3JhcGh8W15cbl0qKSg/OlxufCQpKSsvLGxpc3Q6L14oIHswLDN9YnVsbCkoWyBcdF1bXlxuXSs/KT8oPzpcbnwkKS8saHRtbDoiXiB7MCwzfSg/Ojwo'@; put 'c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbXFxzPl1bXFxzXFxTXSo/KD86PC9cXDE+W15cXG5dKlxcbit8JCl8Y29tbWVudFteXFxuXSooXFxuK3wkKXw8XFw/W1xcc1xcU10qPyg/OlxcPz5cXG4qfCQpfDwhW0EtWl1bXFxzXFxTXSo/KD86Plxcbip8JCl8PCFcXFtDREFUQVxcW1tcXHNc'@; put 'XFNdKj8oPzpcXF1cXF0+XFxuKnwkKXw8Lz8odGFnKSg/OiArfFxcbnwvPz4pW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCl8PCg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKFthLXpdW1xcdy1dKikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xc'@; put 'U10qPyg/Oig/OlxcbiAqKStcXG58JCl8PC8oPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVthLXpdW1xcdy1dKlxccyo+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKSkiLGRlZjovXiB7MCwzfVxbKGxhYmVsKVxdOiAqKD86XG4gKik/KFtePFxz'@; put 'XVteXHNdKnw8Lio/PikoPzooPzogKyg/OlxuICopP3wgKlxuICopKHRpdGxlKSk/ICooPzpcbit8JCkvLHRhYmxlOmdLLGxoZWFkaW5nOi9eKCg/Oig/IV5idWxsICkufFxuKD8hXG58YnVsbCApKSs/KVxuIHswLDN9KD0rfC0rKSAqKD86XG4rfCQpLyxfcGFyYWdyYXBoOi9eKFteXG5dKyg/'@; put 'OlxuKD8haHJ8aGVhZGluZ3xsaGVhZGluZ3xibG9ja3F1b3RlfGZlbmNlc3xsaXN0fGh0bWx8dGFibGV8ICtcbilbXlxuXSspKikvLHRleHQ6L15bXlxuXSsvLF9sYWJlbDovKD8hXHMqXF0pKD86XFwufFteXFtcXVxcXSkrLyxfdGl0bGU6Lyg/OiIoPzpcXCI/fFteIlxcXSkqInwnW14nXG5d'@; put 'Kig/OlxuW14nXG5dKykqXG4/J3xcKFteKCldKlwpKS99O0thLmRlZj1xYyhLYS5kZWYpLnJlcGxhY2UoImxhYmVsIixLYS5fbGFiZWwpLnJlcGxhY2UoInRpdGxlIixLYS5fdGl0bGUpLmdldFJlZ2V4KCksS2EuYnVsbGV0PS8oPzpbKistXXxcZHsxLDl9Wy4pXSkvLEthLmxpc3RJdGVtU3Rh'@; put 'cnQ9cWMoL14oICopKGJ1bGwpICovKS5yZXBsYWNlKCJidWxsIixLYS5idWxsZXQpLmdldFJlZ2V4KCksS2EubGlzdD1xYyhLYS5saXN0KS5yZXBsYWNlKC9idWxsL2csS2EuYnVsbGV0KS5yZXBsYWNlKCJociIsIlxcbisoPz1cXDE/KD86KD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwq'@; put 'ICopezMsfSkoPzpcXG4rfCQpKSIpLnJlcGxhY2UoImRlZiIsIlxcbisoPz0iK0thLmRlZi5zb3VyY2UrIikiKS5nZXRSZWdleCgpLEthLl90YWc9ImFkZHJlc3N8YXJ0aWNsZXxhc2lkZXxiYXNlfGJhc2Vmb250fGJsb2NrcXVvdGV8Ym9keXxjYXB0aW9ufGNlbnRlcnxjb2x8Y29sZ3JvdXB8'@; put 'ZGR8ZGV0YWlsc3xkaWFsb2d8ZGlyfGRpdnxkbHxkdHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoWzEtNl18aGVhZHxoZWFkZXJ8aHJ8aHRtbHxpZnJhbWV8bGVnZW5kfGxpfGxpbmt8bWFpbnxtZW51fG1lbnVpdGVtfG1ldGF8bmF2fG5v'@; put 'ZnJhbWVzfG9sfG9wdGdyb3VwfG9wdGlvbnxwfHBhcmFtfHNlY3Rpb258c291cmNlfHN1bW1hcnl8dGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dGhlYWR8dGl0bGV8dHJ8dHJhY2t8dWwiLEthLl9jb21tZW50PS88IS0tKD8hLT8+KVtcc1xTXSo/KD86LS0+fCQpLyxLYS5odG1sPXFjKEthLmh0'@; put 'bWwsImkiKS5yZXBsYWNlKCJjb21tZW50IixLYS5fY29tbWVudCkucmVwbGFjZSgidGFnIixLYS5fdGFnKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC8gK1thLXpBLVo6X11bXHcuOi1dKig/OiAqPSAqIlteIlxuXSoifCAqPSAqJ1teJ1xuXSonfCAqPSAqW15ccyInPTw+YF0rKT8vKS5nZXRSZWdl'@; put 'eCgpLEthLmxoZWFkaW5nPXFjKEthLmxoZWFkaW5nKS5yZXBsYWNlKC9idWxsL2csS2EuYnVsbGV0KS5nZXRSZWdleCgpLEthLnBhcmFncmFwaD1xYyhLYS5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsS2EuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgi'@; put 'fGxoZWFkaW5nIiwiIikucmVwbGFjZSgifHRhYmxlIiwiIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1d'@; put 'fDFbLildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLEthLl90YWcpLmdldFJlZ2V4KCksS2EuYmxvY2txdW90ZT1xYyhLYS5ibG9ja3F1b3RlKS5yZXBsYWNlKCJw'@; put 'YXJhZ3JhcGgiLEthLnBhcmFncmFwaCkuZ2V0UmVnZXgoKSxLYS5ub3JtYWw9ey4uLkthfSxLYS5nZm09ey4uLkthLm5vcm1hbCx0YWJsZToiXiAqKFteXFxuIF0uKlxcfC4qKVxcbiB7MCwzfSg/OlxcfCAqKT8oOj8tKzo/ICooPzpcXHwgKjo/LSs6PyAqKSopKD86XFx8ICopPyg/Olxcbigo'@; put 'PzooPyEgKlxcbnxocnxoZWFkaW5nfGJsb2NrcXVvdGV8Y29kZXxmZW5jZXN8bGlzdHxodG1sKS4qKD86XFxufCQpKSopXFxuKnwkKSJ9LEthLmdmbS50YWJsZT1xYyhLYS5nZm0udGFibGUpLnJlcGxhY2UoImhyIixLYS5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5y'@; put 'ZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImNvZGUiLCIgezR9W15cXG5dIikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkg'@; put 'IikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixLYS5fdGFnKS5nZXRSZWdleCgpLEthLmdmbS5wYXJhZ3JhcGg9cWMoS2EuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEth'@; put 'LmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIixLYS5nZm0udGFibGUpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBc'@; put 'XG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixLYS5f'@; put 'dGFnKS5nZXRSZWdleCgpLEthLnBlZGFudGljPXsuLi5LYS5ub3JtYWwsaHRtbDpxYygiXiAqKD86Y29tbWVudCAqKD86XFxufFxccyokKXw8KHRhZylbXFxzXFxTXSs/PC9cXDE+ICooPzpcXG57Mix9fFxccyokKXw8dGFnKD86XCJbXlwiXSpcInwnW14nXSonfFxcc1teJ1wiLz5cXHNdKikq'@; put 'Py8/PiAqKD86XFxuezIsfXxcXHMqJCkpIikucmVwbGFjZSgiY29tbWVudCIsS2EuX2NvbW1lbnQpLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFsbHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1'@; put 'Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylcXGIpXFx3Kyg/ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhbXlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzov'@; put 'XigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOmdLLGxoZWFkaW5nOi9eKC4rPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8scGFyYWdyYXBoOnFjKEthLm5vcm1hbC5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsS2EuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgKiN7MSw2fSAqW15c'@; put 'bl0iKS5yZXBsYWNlKCJsaGVhZGluZyIsS2EubGhlYWRpbmcpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgifGZlbmNlcyIsIiIpLnJlcGxhY2UoInxsaXN0IiwiIikucmVwbGFjZSgifGh0bWwiLCIiKS5nZXRSZWdleCgpfTtjb25zdCAkbz17ZXNjYXBlOi9eXFwo'@; put 'WyEiIyQlJicoKSorLFwtLi86Ozw9Pj9AXFtcXVxcXl9ge3x9fl0pLyxhdXRvbGluazovXjwoc2NoZW1lOlteXHNceDAwLVx4MWY8Pl0qfGVtYWlsKT4vLHVybDpnSyx0YWc6Il5jb21tZW50fF48L1thLXpBLVpdW1xcdzotXSpcXHMqPnxePFthLXpBLVpdW1xcdy1dKig/OmF0dHJpYnV0ZSkq'@; put 'P1xccyovPz58XjxcXD9bXFxzXFxTXSo/XFw/PnxePCFbYS16QS1aXStcXHNbXFxzXFxTXSo/PnxePCFcXFtDREFUQVxcW1tcXHNcXFNdKj9cXF1cXF0+IixsaW5rOi9eIT9cWyhsYWJlbClcXVwoXHMqKGhyZWYpKD86XHMrKHRpdGxlKSk/XHMqXCkvLHJlZmxpbms6L14hP1xbKGxhYmVsKVxd'@; put 'XFsocmVmKVxdLyxub2xpbms6L14hP1xbKHJlZilcXSg/OlxbXF0pPy8scmVmbGlua1NlYXJjaDoicmVmbGlua3xub2xpbmsoPyFcXCgpIixlbVN0cm9uZzp7bERlbGltOi9eKD86XCorKD86KCg/IVwqKVtwdW5jdF0pfFteXHMqXSkpfF5fKyg/OigoPyFfKVtwdW5jdF0pfChbXlxzX10pKS8s'@; put 'ckRlbGltQXN0Oi9eW15fKl0qP19fW15fKl0qP1wqW15fKl0qPyg/PV9fKXxbXipdKyg/PVteKl0pfCg/IVwqKVtwdW5jdF0oXCorKSg/PVtcc118JCl8W15wdW5jdFxzXShcKispKD8hXCopKD89W3B1bmN0XHNdfCQpfCg/IVwqKVtwdW5jdFxzXShcKispKD89W15wdW5jdFxzXSl8W1xzXShc'@; put 'KispKD8hXCopKD89W3B1bmN0XSl8KD8hXCopW3B1bmN0XShcKispKD8hXCopKD89W3B1bmN0XSl8W15wdW5jdFxzXShcKispKD89W15wdW5jdFxzXSkvLHJEZWxpbVVuZDovXlteXypdKj9cKlwqW15fKl0qP19bXl8qXSo/KD89XCpcKil8W15fXSsoPz1bXl9dKXwoPyFfKVtwdW5jdF0oXysp'@; put 'KD89W1xzXXwkKXxbXnB1bmN0XHNdKF8rKSg/IV8pKD89W3B1bmN0XHNdfCQpfCg/IV8pW3B1bmN0XHNdKF8rKSg/PVtecHVuY3Rcc10pfFtcc10oXyspKD8hXykoPz1bcHVuY3RdKXwoPyFfKVtwdW5jdF0oXyspKD8hXykoPz1bcHVuY3RdKS99LGNvZGU6L14oYCspKFteYF18W15gXVtcc1xT'@; put 'XSo/W15gXSlcMSg/IWApLyxicjovXiggezIsfXxcXClcbig/IVxzKiQpLyxkZWw6Z0ssdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIsfVxuKSkpLyxwdW5jdHVhdGlvbjovXigoPyFbKl9dKVtcc3B1bmN0'@; put 'dWF0aW9uXSkvfTtmdW5jdGlvbiBpY24obil7cmV0dXJuIG4ucmVwbGFjZSgvLS0tL2csIlx1MjAxNCIpLnJlcGxhY2UoLy0tL2csIlx1MjAxMyIpLnJlcGxhY2UoLyhefFstXHUyMDE0LyhcW3siXHNdKScvZywiJDFcdTIwMTgiKS5yZXBsYWNlKC8nL2csIlx1MjAxOSIpLnJlcGxhY2UoLyhe'@; put 'fFstXHUyMDE0LyhcW3tcdTIwMThcc10pIi9nLCIkMVx1MjAxYyIpLnJlcGxhY2UoLyIvZywiXHUyMDFkIikucmVwbGFjZSgvXC57M30vZywiXHUyMDI2Iil9ZnVuY3Rpb24gWFplKG4pe2xldCB0LHIsZT0iIjtjb25zdCBpPW4ubGVuZ3RoO2Zvcih0PTA7dDxpO3QrKylyPW4uY2hhckNvZGVB'@; put 'dCh0KSxNYXRoLnJhbmRvbSgpPi41JiYocj0ieCIrci50b1N0cmluZygxNikpLGUrPSImIyIrcisiOyI7cmV0dXJuIGV9JG8uX3B1bmN0dWF0aW9uPSJcXHB7UH0kKzw9PmBefH4iLCRvLnB1bmN0dWF0aW9uPXFjKCRvLnB1bmN0dWF0aW9uLCJ1IikucmVwbGFjZSgvcHVuY3R1YXRpb24vZywk'@; put 'by5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksJG8uYmxvY2tTa2lwPS9cW1teW1xdXSo/XF1cKFteXChcKV0qP1wpfGBbXmBdKj9gfDxbXjw+XSo/Pi9nLCRvLmFueVB1bmN0dWF0aW9uPS9cXFtwdW5jdF0vZywkby5fZXNjYXBlcz0vXFwoW3B1bmN0XSkvZywkby5fY29tbWVudD1xYyhLYS5f'@; put 'Y29tbWVudCkucmVwbGFjZSgiKD86LS1ceDNlfCQpIiwiLS1ceDNlIikuZ2V0UmVnZXgoKSwkby5lbVN0cm9uZy5sRGVsaW09cWMoJG8uZW1TdHJvbmcubERlbGltLCJ1IikucmVwbGFjZSgvcHVuY3QvZywkby5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksJG8uZW1TdHJvbmcuckRlbGltQXN0'@; put 'PXFjKCRvLmVtU3Ryb25nLnJEZWxpbUFzdCwiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLCRvLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSwkby5lbVN0cm9uZy5yRGVsaW1VbmQ9cWMoJG8uZW1TdHJvbmcuckRlbGltVW5kLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csJG8uX3B1bmN0dWF0aW9uKS5n'@; put 'ZXRSZWdleCgpLCRvLmFueVB1bmN0dWF0aW9uPXFjKCRvLmFueVB1bmN0dWF0aW9uLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csJG8uX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLCRvLl9lc2NhcGVzPXFjKCRvLl9lc2NhcGVzLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csJG8uX3B1bmN0dWF0aW9u'@; put 'KS5nZXRSZWdleCgpLCRvLl9zY2hlbWU9L1thLXpBLVpdW2EtekEtWjAtOSsuLV17MSwzMX0vLCRvLl9lbWFpbD0vW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXSsoQClbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86'@; put 'W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykrKD8hWy1fXSkvLCRvLmF1dG9saW5rPXFjKCRvLmF1dG9saW5rKS5yZXBsYWNlKCJzY2hlbWUiLCRvLl9zY2hlbWUpLnJlcGxhY2UoImVtYWlsIiwkby5fZW1haWwpLmdldFJlZ2V4KCksJG8uX2F0dHJpYnV0ZT0vXHMrW2EtekEtWjpf'@; put 'XVtcdy46LV0qKD86XHMqPVxzKiJbXiJdKiJ8XHMqPVxzKidbXiddKid8XHMqPVxzKlteXHMiJz08PmBdKyk/Lywkby50YWc9cWMoJG8udGFnKS5yZXBsYWNlKCJjb21tZW50Iiwkby5fY29tbWVudCkucmVwbGFjZSgiYXR0cmlidXRlIiwkby5fYXR0cmlidXRlKS5nZXRSZWdleCgpLCRvLl9s'@; put 'YWJlbD0vKD86XFsoPzpcXC58W15cW1xdXFxdKSpcXXxcXC58YFteYF0qYHxbXlxbXF1cXGBdKSo/Lywkby5faHJlZj0vPCg/OlxcLnxbXlxuPD5cXF0pKz58W15cc1x4MDAtXHgxZl0qLywkby5fdGl0bGU9LyIoPzpcXCI/fFteIlxcXSkqInwnKD86XFwnP3xbXidcXF0pKid8XCgoPzpcXFwp'@; put 'P3xbXilcXF0pKlwpLywkby5saW5rPXFjKCRvLmxpbmspLnJlcGxhY2UoImxhYmVsIiwkby5fbGFiZWwpLnJlcGxhY2UoImhyZWYiLCRvLl9ocmVmKS5yZXBsYWNlKCJ0aXRsZSIsJG8uX3RpdGxlKS5nZXRSZWdleCgpLCRvLnJlZmxpbms9cWMoJG8ucmVmbGluaykucmVwbGFjZSgibGFiZWwi'@; put 'LCRvLl9sYWJlbCkucmVwbGFjZSgicmVmIixLYS5fbGFiZWwpLmdldFJlZ2V4KCksJG8ubm9saW5rPXFjKCRvLm5vbGluaykucmVwbGFjZSgicmVmIixLYS5fbGFiZWwpLmdldFJlZ2V4KCksJG8ucmVmbGlua1NlYXJjaD1xYygkby5yZWZsaW5rU2VhcmNoLCJnIikucmVwbGFjZSgicmVmbGlu'@; put 'ayIsJG8ucmVmbGluaykucmVwbGFjZSgibm9saW5rIiwkby5ub2xpbmspLmdldFJlZ2V4KCksJG8ubm9ybWFsPXsuLi4kb30sJG8ucGVkYW50aWM9ey4uLiRvLm5vcm1hbCxzdHJvbmc6e3N0YXJ0Oi9eX198XCpcKi8sbWlkZGxlOi9eX18oPz1cUykoW1xzXFNdKj9cUylfXyg/IV8pfF5cKlwq'@; put 'KD89XFMpKFtcc1xTXSo/XFMpXCpcKig/IVwqKS8sZW5kQXN0Oi9cKlwqKD8hXCopL2csZW5kVW5kOi9fXyg/IV8pL2d9LGVtOntzdGFydDovXl98XCovLG1pZGRsZTovXigpXCooPz1cUykoW1xzXFNdKj9cUylcKig/IVwqKXxeXyg/PVxTKShbXHNcU10qP1xTKV8oPyFfKS8sZW5kQXN0Oi9c'@; put 'Kig/IVwqKS9nLGVuZFVuZDovXyg/IV8pL2d9LGxpbms6cWMoL14hP1xbKGxhYmVsKVxdXCgoLio/KVwpLykucmVwbGFjZSgibGFiZWwiLCRvLl9sYWJlbCkuZ2V0UmVnZXgoKSxyZWZsaW5rOnFjKC9eIT9cWyhsYWJlbClcXVxzKlxbKFteXF1dKilcXS8pLnJlcGxhY2UoImxhYmVsIiwkby5f'@; put 'bGFiZWwpLmdldFJlZ2V4KCl9LCRvLmdmbT17Li4uJG8ubm9ybWFsLGVzY2FwZTpxYygkby5lc2NhcGUpLnJlcGxhY2UoIl0pIiwifnxdKSIpLmdldFJlZ2V4KCksX2V4dGVuZGVkX2VtYWlsOi9bQS1aYS16MC05Ll8rLV0rKEApW2EtekEtWjAtOS1fXSsoPzpcLlthLXpBLVowLTktX10qW2Et'@; put 'ekEtWjAtOV0pKyg/IVstX10pLyx1cmw6L14oKD86ZnRwfGh0dHBzPyk6XC9cL3x3d3dcLikoPzpbYS16QS1aMC05XC1dK1wuPykrW15cczxdKnxeZW1haWwvLF9iYWNrcGVkYWw6Lyg/OltePyEuLDo7Kl8nIn4oKSZdK3xcKFteKV0qXCl8Jig/IVthLXpBLVowLTldKzskKXxbPyEuLDo7Kl8n'@; put 'In4pXSsoPyEkKSkrLyxkZWw6L14ofn4/KSg/PVteXHN+XSkoW1xzXFNdKj9bXlxzfl0pXDEoPz1bXn5dfCQpLyx0ZXh0Oi9eKFtgfl0rfFteYH5dKSg/Oig/PSB7Mix9XG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApfFtcc1xTXSo/KD86KD89W1xcPCFcW2Aqfl9d'@; put 'fFxiX3xodHRwcz86XC9cL3xmdHA6XC9cL3x3d3dcLnwkKXxbXiBdKD89IHsyLH1cbil8W15hLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dKD89W2EtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0rQCkpKS99LCRvLmdmbS51cmw9cWMoJG8uZ2ZtLnVybCwiaSIpLnJlcGxhY2Uo'@; put 'ImVtYWlsIiwkby5nZm0uX2V4dGVuZGVkX2VtYWlsKS5nZXRSZWdleCgpLCRvLmJyZWFrcz17Li4uJG8uZ2ZtLGJyOnFjKCRvLmJyKS5yZXBsYWNlKCJ7Mix9IiwiKiIpLmdldFJlZ2V4KCksdGV4dDpxYygkby5nZm0udGV4dCkucmVwbGFjZSgiXFxiXyIsIlxcYl98IHsyLH1cXG4iKS5yZXBs'@; put 'YWNlKC9cezIsXH0vZywiKiIpLmdldFJlZ2V4KCl9O2NsYXNzIHE2e2NvbnN0cnVjdG9yKGUpe3RoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5zLmxpbmtzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zPWV8fGl5LHRoaXMub3B0aW9ucy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRv'@; put 'a2VuaXplcnx8bmV3IHZLLHRoaXMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXIsdGhpcy50b2tlbml6ZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcyx0aGlzLmlubGluZVF1ZXVlPVtdLHRoaXMuc3RhdGU9e2luTGluazohMSxpblJhd0Js'@; put 'b2NrOiExLHRvcDohMH07Y29uc3QgdD17YmxvY2s6S2Eubm9ybWFsLGlubGluZTokby5ub3JtYWx9O3RoaXMub3B0aW9ucy5wZWRhbnRpYz8odC5ibG9jaz1LYS5wZWRhbnRpYyx0LmlubGluZT0kby5wZWRhbnRpYyk6dGhpcy5vcHRpb25zLmdmbSYmKHQuYmxvY2s9S2EuZ2ZtLHQuaW5saW5l'@; put 'PXRoaXMub3B0aW9ucy5icmVha3M/JG8uYnJlYWtzOiRvLmdmbSksdGhpcy50b2tlbml6ZXIucnVsZXM9dH1zdGF0aWMgZ2V0IHJ1bGVzKCl7cmV0dXJue2Jsb2NrOkthLGlubGluZTokb319c3RhdGljIGxleChlLHQpe3JldHVybiBuZXcgcTYodCkubGV4KGUpfXN0YXRpYyBsZXhJbmxpbmUo'@; put 'ZSx0KXtyZXR1cm4gbmV3IHE2KHQpLmlubGluZVRva2VucyhlKX1sZXgoZSl7bGV0IHQ7Zm9yKGU9ZS5yZXBsYWNlKC9cclxufFxyL2csIlxuIiksdGhpcy5ibG9ja1Rva2VucyhlLHRoaXMudG9rZW5zKTt0PXRoaXMuaW5saW5lUXVldWUuc2hpZnQoKTspdGhpcy5pbmxpbmVUb2tlbnModC5z'@; put 'cmMsdC50b2tlbnMpO3JldHVybiB0aGlzLnRva2Vuc31ibG9ja1Rva2VucyhlLHQ9W10pe2xldCByLGksbyxhO2ZvcihlPXRoaXMub3B0aW9ucy5wZWRhbnRpYz9lLnJlcGxhY2UoL1x0L2csIiAgICAiKS5yZXBsYWNlKC9eICskL2dtLCIiKTplLnJlcGxhY2UoL14oICopKFx0KykvZ20sKGws'@; put 'dSxnKT0+dSsiICAgICIucmVwZWF0KGcubGVuZ3RoKSk7ZTspaWYoISh0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2smJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrLnNvbWUobD0+ISEocj1sLmNhbGwoe2xleGVyOnRoaXN9LGUsdCkp'@; put 'JiYoZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKSwhMCkpKSl7aWYocj10aGlzLnRva2VuaXplci5zcGFjZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLDE9PT1yLnJhdy5sZW5ndGgmJnQubGVuZ3RoPjA/dFt0Lmxlbmd0aC0xXS5yYXcrPSJcbiI6dC5wdXNo'@; put 'KHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuY29kZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLGk9dFt0Lmxlbmd0aC0xXSwhaXx8InBhcmFncmFwaCIhPT1pLnR5cGUmJiJ0ZXh0IiE9PWkudHlwZT90LnB1c2gocik6KGkucmF3Kz0iXG4iK3IucmF3LGkudGV4dCs9'@; put 'IlxuIityLnRleHQsdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9aS50ZXh0KTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmZlbmNlcyhlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMu'@; put 'dG9rZW5pemVyLmhlYWRpbmcoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5ocihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmJs'@; put 'b2NrcXVvdGUoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5saXN0KGUpKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuaHRtbChlKSl7'@; put 'ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmRlZihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLGk9dFt0Lmxlbmd0aC0xXSwhaXx8InBhcmFncmFwaCIhPT1pLnR5cGUmJiJ0ZXh0IiE9PWkudHlwZT90aGlz'@; put 'LnRva2Vucy5saW5rc1tyLnRhZ118fCh0aGlzLnRva2Vucy5saW5rc1tyLnRhZ109e2hyZWY6ci5ocmVmLHRpdGxlOnIudGl0bGV9KTooaS5yYXcrPSJcbiIrci5yYXcsaS50ZXh0Kz0iXG4iK3IucmF3LHRoaXMuaW5saW5lUXVldWVbdGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPWku'@; put 'dGV4dCk7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci50YWJsZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmxoZWFkaW5nKGUpKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2Nv'@; put 'bnRpbnVlfWlmKG89ZSx0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jayl7bGV0IGw9MS8wO2NvbnN0IHU9ZS5zbGljZSgxKTtsZXQgZzt0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrLmZvckVhY2goZnVuY3Rpb24oRSl7'@; put 'Zz1FLmNhbGwoe2xleGVyOnRoaXN9LHUpLCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCYmKGw9TWF0aC5taW4obCxnKSl9KSxsPDEvMCYmbD49MCYmKG89ZS5zdWJzdHJpbmcoMCxsKzEpKX1pZih0aGlzLnN0YXRlLnRvcCYmKHI9dGhpcy50b2tlbml6ZXIucGFyYWdyYXBoKG8pKSl7aT10W3Qu'@; put 'bGVuZ3RoLTFdLGEmJiJwYXJhZ3JhcGgiPT09aS50eXBlPyhpLnJhdys9IlxuIityLnJhdyxpLnRleHQrPSJcbiIrci50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9aS50ZXh0KTp0LnB1c2gociksYT1v'@; put 'Lmxlbmd0aCE9PWUubGVuZ3RoLGU9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLnRleHQoZSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSxpPXRbdC5sZW5ndGgtMV0saSYmInRleHQiPT09aS50eXBlPyhpLnJhdys9IlxuIityLnJh'@; put 'dyxpLnRleHQrPSJcbiIrci50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9aS50ZXh0KTp0LnB1c2gocik7Y29udGludWV9aWYoZSl7Y29uc3QgbD0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2UuY2hh'@; put 'ckNvZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMuc2lsZW50KXtjb25zb2xlLmVycm9yKGwpO2JyZWFrfXRocm93IG5ldyBFcnJvcihsKX19cmV0dXJuIHRoaXMuc3RhdGUudG9wPSEwLHR9aW5saW5lKGUsdD1bXSl7cmV0dXJuIHRoaXMuaW5saW5lUXVldWUucHVzaCh7c3JjOmUsdG9rZW5zOnR9'@; put 'KSx0fWlubGluZVRva2VucyhlLHQ9W10pe2xldCByLGksbyxsLHUsZyxhPWU7aWYodGhpcy50b2tlbnMubGlua3Mpe2NvbnN0IEU9T2JqZWN0LmtleXModGhpcy50b2tlbnMubGlua3MpO2lmKEUubGVuZ3RoPjApZm9yKDtudWxsIT0obD10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVm'@; put 'bGlua1NlYXJjaC5leGVjKGEpKTspRS5pbmNsdWRlcyhsWzBdLnNsaWNlKGxbMF0ubGFzdEluZGV4T2YoIlsiKSsxLC0xKSkmJihhPWEuc2xpY2UoMCxsLmluZGV4KSsiWyIrImEiLnJlcGVhdChsWzBdLmxlbmd0aC0yKSsiXSIrYS5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUu'@; put 'cmVmbGlua1NlYXJjaC5sYXN0SW5kZXgpKX1mb3IoO251bGwhPShsPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAuZXhlYyhhKSk7KWE9YS5zbGljZSgwLGwuaW5kZXgpKyJbIisiYSIucmVwZWF0KGxbMF0ubGVuZ3RoLTIpKyJdIithLnNsaWNlKHRoaXMudG9rZW5pemVy'@; put 'LnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtmb3IoO251bGwhPShsPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbi5leGVjKGEpKTspYT1hLnNsaWNlKDAsbC5pbmRleCkrIisrIithLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5h'@; put 'bnlQdW5jdHVhdGlvbi5sYXN0SW5kZXgpO2Zvcig7ZTspaWYodXx8KGc9IiIpLHU9ITEsISh0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuaW5saW5lJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUuc29tZShFPT4hIShyPUUuY2FsbCh7bGV4'@; put 'ZXI6dGhpc30sZSx0KSkmJihlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpLCEwKSkpKXtpZihyPXRoaXMudG9rZW5pemVyLmVzY2FwZShlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLnRhZyhl'@; put 'KSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLGk9dFt0Lmxlbmd0aC0xXSxpJiYidGV4dCI9PT1yLnR5cGUmJiJ0ZXh0Ij09PWkudHlwZT8oaS5yYXcrPXIucmF3LGkudGV4dCs9ci50ZXh0KTp0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5saW5rKGUpKXtlPWUu'@; put 'c3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIucmVmbGluayhlLHRoaXMudG9rZW5zLmxpbmtzKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLGk9dFt0Lmxlbmd0aC0xXSxpJiYidGV4dCI9PT1yLnR5cGUmJiJ0ZXh0Ij09'@; put 'PWkudHlwZT8oaS5yYXcrPXIucmF3LGkudGV4dCs9ci50ZXh0KTp0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5lbVN0cm9uZyhlLGEsZykpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYocj10aGlzLnRva2VuaXplci5jb2Rl'@; put 'c3BhbihlKSl7ZT1lLnN1YnN0cmluZyhyLnJhdy5sZW5ndGgpLHQucHVzaChyKTtjb250aW51ZX1pZihyPXRoaXMudG9rZW5pemVyLmJyKGUpKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuZGVsKGUpKXtlPWUuc3Vi'@; put 'c3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKHI9dGhpcy50b2tlbml6ZXIuYXV0b2xpbmsoZSxYWmUpKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksdC5wdXNoKHIpO2NvbnRpbnVlfWlmKCF0aGlzLnN0YXRlLmluTGluayYmKHI9dGhpcy50b2tlbml6ZXIu'@; put 'dXJsKGUsWFplKSkpe2U9ZS5zdWJzdHJpbmcoci5yYXcubGVuZ3RoKSx0LnB1c2gocik7Y29udGludWV9aWYobz1lLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZSl7bGV0IEU9MS8wO2NvbnN0IE89ZS5zbGljZSgxKTtsZXQgWjt0'@; put 'aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtaPWVlLmNhbGwoe2xleGVyOnRoaXN9LE8pLCJudW1iZXIiPT10eXBlb2YgWiYmWj49MCYmKEU9TWF0aC5taW4oRSxaKSl9KSxFPDEvMCYmRT49MCYmKG89ZS5zdWJzdHJpbmcoMCxFKzEpKX1p'@; put 'ZihyPXRoaXMudG9rZW5pemVyLmlubGluZVRleHQobyxpY24pKXtlPWUuc3Vic3RyaW5nKHIucmF3Lmxlbmd0aCksIl8iIT09ci5yYXcuc2xpY2UoLTEpJiYoZz1yLnJhdy5zbGljZSgtMSkpLHU9ITAsaT10W3QubGVuZ3RoLTFdLGkmJiJ0ZXh0Ij09PWkudHlwZT8oaS5yYXcrPXIucmF3LGku'@; put 'dGV4dCs9ci50ZXh0KTp0LnB1c2gocik7Y29udGludWV9aWYoZSl7Y29uc3QgRT0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2UuY2hhckNvZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMuc2lsZW50KXtjb25zb2xlLmVycm9yKEUpO2JyZWFrfXRocm93IG5ldyBFcnJvcihFKX19cmV0dXJuIHR9'@; put 'fWNsYXNzIF9Le2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lfHxpeX1jb2RlKGUsdCxyKXtjb25zdCBpPSh0fHwiIikubWF0Y2goL1xTKi8pWzBdO2lmKHRoaXMub3B0aW9ucy5oaWdobGlnaHQpe2NvbnN0IG89dGhpcy5vcHRpb25zLmhpZ2hsaWdodChlLGkpO251bGwhPW8mJm8hPT1l'@; put 'JiYocj0hMCxlPW8pfXJldHVybiBlPWUucmVwbGFjZSgvXG4kLywiIikrIlxuIixpPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K2hmKGkpKyciPicrKHI/ZTpoZihlLCEwKSkrIjwvY29kZT48L3ByZT5cbiI6IjxwcmU+PGNvZGU+Iisocj9lOmhmKGUsITAp'@; put 'KSsiPC9jb2RlPjwvcHJlPlxuIn1ibG9ja3F1b3RlKGUpe3JldHVybmA8YmxvY2txdW90ZT5cbiR7ZX08L2Jsb2NrcXVvdGU+XG5gfWh0bWwoZSx0KXtyZXR1cm4gZX1oZWFkaW5nKGUsdCxyLGkpe3JldHVybiB0aGlzLm9wdGlvbnMuaGVhZGVySWRzP2A8aCR7dH0gaWQ9IiR7dGhpcy5vcHRp'@; put 'b25zLmhlYWRlclByZWZpeCtpLnNsdWcocil9Ij4ke2V9PC9oJHt0fT5cbmA6YDxoJHt0fT4ke2V9PC9oJHt0fT5cbmB9aHIoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8aHIvPlxuIjoiPGhyPlxuIn1saXN0KGUsdCxyKXtjb25zdCBpPXQ/Im9sIjoidWwiO3JldHVybiI8IitpKyh0'@; put 'JiYxIT09cj8nIHN0YXJ0PSInK3IrJyInOiIiKSsiPlxuIitlKyI8LyIraSsiPlxuIn1saXN0aXRlbShlKXtyZXR1cm5gPGxpPiR7ZX08L2xpPlxuYH1jaGVja2JveChlKXtyZXR1cm4iPGlucHV0ICIrKGU/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIiIHR5cGU9ImNoZWNrYm94Iicr'@; put 'KHRoaXMub3B0aW9ucy54aHRtbD8iIC8iOiIiKSsiPiAifXBhcmFncmFwaChlKXtyZXR1cm5gPHA+JHtlfTwvcD5cbmB9dGFibGUoZSx0KXtyZXR1cm4gdCYmKHQ9YDx0Ym9keT4ke3R9PC90Ym9keT5gKSwiPHRhYmxlPlxuPHRoZWFkPlxuIitlKyI8L3RoZWFkPlxuIit0KyI8L3RhYmxlPlxu'@; put 'In10YWJsZXJvdyhlKXtyZXR1cm5gPHRyPlxuJHtlfTwvdHI+XG5gfXRhYmxlY2VsbChlLHQpe2NvbnN0IHI9dC5oZWFkZXI/InRoIjoidGQiO3JldHVybih0LmFsaWduP2A8JHtyfSBhbGlnbj0iJHt0LmFsaWdufSI+YDpgPCR7cn0+YCkrZStgPC8ke3J9PlxuYH1zdHJvbmcoZSl7cmV0dXJu'@; put 'YDxzdHJvbmc+JHtlfTwvc3Ryb25nPmB9ZW0oZSl7cmV0dXJuYDxlbT4ke2V9PC9lbT5gfWNvZGVzcGFuKGUpe3JldHVybmA8Y29kZT4ke2V9PC9jb2RlPmB9YnIoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8YnIvPiI6Ijxicj4ifWRlbChlKXtyZXR1cm5gPGRlbD4ke2V9PC9kZWw+'@; put 'YH1saW5rKGUsdCxyKXtpZihudWxsPT09KGU9JFplKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCxlKSkpcmV0dXJuIHI7bGV0IGk9JzxhIGhyZWY9IicrZSsnIic7cmV0dXJuIHQmJihpKz0nIHRpdGxlPSInK3QrJyInKSxpKz0iPiIrcisiPC9hPiIsaX1pbWFn'@; put 'ZShlLHQscil7aWYobnVsbD09PShlPSRaZSh0aGlzLm9wdGlvbnMuc2FuaXRpemUsdGhpcy5vcHRpb25zLmJhc2VVcmwsZSkpKXJldHVybiByO2xldCBpPWA8aW1nIHNyYz0iJHtlfSIgYWx0PSIke3J9ImA7cmV0dXJuIHQmJihpKz1gIHRpdGxlPSIke3R9ImApLGkrPXRoaXMub3B0aW9ucy54'@; put 'aHRtbD8iLz4iOiI+IixpfXRleHQoZSl7cmV0dXJuIGV9fWNsYXNzIEttZXtzdHJvbmcoZSl7cmV0dXJuIGV9ZW0oZSl7cmV0dXJuIGV9Y29kZXNwYW4oZSl7cmV0dXJuIGV9ZGVsKGUpe3JldHVybiBlfWh0bWwoZSl7cmV0dXJuIGV9dGV4dChlKXtyZXR1cm4gZX1saW5rKGUsdCxyKXtyZXR1'@; put 'cm4iIityfWltYWdlKGUsdCxyKXtyZXR1cm4iIityfWJyKCl7cmV0dXJuIiJ9fWNsYXNzIFhtZXtjb25zdHJ1Y3Rvcigpe3RoaXMuc2Vlbj17fX1zZXJpYWxpemUoZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZSgvPFshXC9hLXpdLio/Pi9naSwiIikucmVwbGFjZSgv'@; put 'W1x1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGXFwnISIjJCUmKCkqKywuLzo7PD0+P0BbXF1eYHt8fX5dL2csIiIpLnJlcGxhY2UoL1xzL2csIi0iKX1nZXROZXh0U2FmZVNsdWcoZSx0KXtsZXQgcj1lLGk9MDtpZih0aGlzLnNlZW4uaGFzT3duUHJvcGVydHkocikpe2k9dGhpcy5zZWVuW2Vd'@; put 'O2Rve2krKyxyPWUrIi0iK2l9d2hpbGUodGhpcy5zZWVuLmhhc093blByb3BlcnR5KHIpKX1yZXR1cm4gdHx8KHRoaXMuc2VlbltlXT1pLHRoaXMuc2VlbltyXT0wKSxyfXNsdWcoZSx0PXt9KXtjb25zdCByPXRoaXMuc2VyaWFsaXplKGUpO3JldHVybiB0aGlzLmdldE5leHRTYWZlU2x1Zyhy'@; put 'LHQuZHJ5cnVuKX19Y2xhc3MgSzZ7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fGl5LHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBfSyx0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9'@; put 'dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRlcmVyPW5ldyBLbWUsdGhpcy5zbHVnZ2VyPW5ldyBYbWV9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuIG5ldyBLNih0KS5wYXJzZShlKX1zdGF0aWMgcGFyc2VJbmxpbmUoZSx0KXtyZXR1cm4gbmV3IEs2KHQpLnBhcnNlSW5saW5lKGUpfXBhcnNl'@; put 'KGUsdD0hMCl7bGV0IGksbyxhLGwsdSxnLEUsTyxaLGVlLHZlLE1lLEhlLFdlLGF0LEN0LEF0LEt0LHF0LHI9IiI7Y29uc3QgZ249ZS5sZW5ndGg7Zm9yKGk9MDtpPGduO2krKylpZihlZT1lW2ldLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5k'@; put 'ZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tlZS50eXBlXSYmKHF0PXRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tlZS50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sZWUpLCExIT09cXR8fCFbInNwYWNlIiwiaHIiLCJoZWFkaW5nIiwiY29kZSIsInRh'@; put 'YmxlIiwiYmxvY2txdW90ZSIsImxpc3QiLCJodG1sIiwicGFyYWdyYXBoIiwidGV4dCJdLmluY2x1ZGVzKGVlLnR5cGUpKSlyKz1xdHx8IiI7ZWxzZSBzd2l0Y2goZWUudHlwZSl7Y2FzZSJzcGFjZSI6Y29udGludWU7Y2FzZSJociI6cis9dGhpcy5yZW5kZXJlci5ocigpO2NvbnRpbnVlO2Nh'@; put 'c2UiaGVhZGluZyI6cis9dGhpcy5yZW5kZXJlci5oZWFkaW5nKHRoaXMucGFyc2VJbmxpbmUoZWUudG9rZW5zKSxlZS5kZXB0aCxHWmUodGhpcy5wYXJzZUlubGluZShlZS50b2tlbnMsdGhpcy50ZXh0UmVuZGVyZXIpKSx0aGlzLnNsdWdnZXIpO2NvbnRpbnVlO2Nhc2UiY29kZSI6cis9dGhp'@; put 'cy5yZW5kZXJlci5jb2RlKGVlLnRleHQsZWUubGFuZyxlZS5lc2NhcGVkKTtjb250aW51ZTtjYXNlInRhYmxlIjpmb3IoTz0iIixFPSIiLGw9ZWUuaGVhZGVyLmxlbmd0aCxvPTA7bzxsO28rKylFKz10aGlzLnJlbmRlcmVyLnRhYmxlY2VsbCh0aGlzLnBhcnNlSW5saW5lKGVlLmhlYWRlcltv'@; put 'XS50b2tlbnMpLHtoZWFkZXI6ITAsYWxpZ246ZWUuYWxpZ25bb119KTtmb3IoTys9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhFKSxaPSIiLGw9ZWUucm93cy5sZW5ndGgsbz0wO288bDtvKyspe2ZvcihnPWVlLnJvd3Nbb10sRT0iIix1PWcubGVuZ3RoLGE9MDthPHU7YSsrKUUrPXRoaXMucmVu'@; put 'ZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUoZ1thXS50b2tlbnMpLHtoZWFkZXI6ITEsYWxpZ246ZWUuYWxpZ25bYV19KTtaKz10aGlzLnJlbmRlcmVyLnRhYmxlcm93KEUpfXIrPXRoaXMucmVuZGVyZXIudGFibGUoTyxaKTtjb250aW51ZTtjYXNlImJsb2NrcXVvdGUiOlo9dGhp'@; put 'cy5wYXJzZShlZS50b2tlbnMpLHIrPXRoaXMucmVuZGVyZXIuYmxvY2txdW90ZShaKTtjb250aW51ZTtjYXNlImxpc3QiOmZvcih2ZT1lZS5vcmRlcmVkLE1lPWVlLnN0YXJ0LEhlPWVlLmxvb3NlLGw9ZWUuaXRlbXMubGVuZ3RoLFo9IiIsbz0wO288bDtvKyspYXQ9ZWUuaXRlbXNbb10sQ3Q9'@; put 'YXQuY2hlY2tlZCxBdD1hdC50YXNrLFdlPSIiLGF0LnRhc2smJihLdD10aGlzLnJlbmRlcmVyLmNoZWNrYm94KEN0KSxIZT9hdC50b2tlbnMubGVuZ3RoPjAmJiJwYXJhZ3JhcGgiPT09YXQudG9rZW5zWzBdLnR5cGU/KGF0LnRva2Vuc1swXS50ZXh0PUt0KyIgIithdC50b2tlbnNbMF0udGV4'@; put 'dCxhdC50b2tlbnNbMF0udG9rZW5zJiZhdC50b2tlbnNbMF0udG9rZW5zLmxlbmd0aD4wJiYidGV4dCI9PT1hdC50b2tlbnNbMF0udG9rZW5zWzBdLnR5cGUmJihhdC50b2tlbnNbMF0udG9rZW5zWzBdLnRleHQ9S3QrIiAiK2F0LnRva2Vuc1swXS50b2tlbnNbMF0udGV4dCkpOmF0LnRva2Vu'@; put 'cy51bnNoaWZ0KHt0eXBlOiJ0ZXh0Iix0ZXh0Okt0fSk6V2UrPUt0KSxXZSs9dGhpcy5wYXJzZShhdC50b2tlbnMsSGUpLForPXRoaXMucmVuZGVyZXIubGlzdGl0ZW0oV2UsQXQsQ3QpO3IrPXRoaXMucmVuZGVyZXIubGlzdChaLHZlLE1lKTtjb250aW51ZTtjYXNlImh0bWwiOnIrPXRoaXMu'@; put 'cmVuZGVyZXIuaHRtbChlZS50ZXh0LGVlLmJsb2NrKTtjb250aW51ZTtjYXNlInBhcmFncmFwaCI6cis9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShlZS50b2tlbnMpKTtjb250aW51ZTtjYXNlInRleHQiOmZvcihaPWVlLnRva2Vucz90aGlzLnBhcnNlSW5saW5l'@; put 'KGVlLnRva2Vucyk6ZWUudGV4dDtpKzE8Z24mJiJ0ZXh0Ij09PWVbaSsxXS50eXBlOyllZT1lWysraV0sWis9IlxuIisoZWUudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoZWUudG9rZW5zKTplZS50ZXh0KTtyKz10P3RoaXMucmVuZGVyZXIucGFyYWdyYXBoKFopOlo7Y29udGludWU7ZGVmYXVs'@; put 'dDp7Y29uc3QgVG49J1Rva2VuIHdpdGggIicrZWUudHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoVG4pO3Rocm93IG5ldyBFcnJvcihUbil9fXJldHVybiByfXBhcnNlSW5saW5lKGUsdCl7dD10fHx0'@; put 'aGlzLnJlbmRlcmVyO2xldCBpLG8sYSxyPSIiO2NvbnN0IGw9ZS5sZW5ndGg7Zm9yKGk9MDtpPGw7aSsrKWlmKG89ZVtpXSx0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNb'@; put 'by50eXBlXSYmKGE9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW28udHlwZV0uY2FsbCh7cGFyc2VyOnRoaXN9LG8pLCExIT09YXx8IVsiZXNjYXBlIiwiaHRtbCIsImxpbmsiLCJpbWFnZSIsInN0cm9uZyIsImVtIiwiY29kZXNwYW4iLCJiciIsImRlbCIsInRleHQiXS5pbmNs'@; put 'dWRlcyhvLnR5cGUpKSlyKz1hfHwiIjtlbHNlIHN3aXRjaChvLnR5cGUpe2Nhc2UiZXNjYXBlIjpjYXNlInRleHQiOnIrPXQudGV4dChvLnRleHQpO2JyZWFrO2Nhc2UiaHRtbCI6cis9dC5odG1sKG8udGV4dCk7YnJlYWs7Y2FzZSJsaW5rIjpyKz10Lmxpbmsoby5ocmVmLG8udGl0bGUsdGhp'@; put 'cy5wYXJzZUlubGluZShvLnRva2Vucyx0KSk7YnJlYWs7Y2FzZSJpbWFnZSI6cis9dC5pbWFnZShvLmhyZWYsby50aXRsZSxvLnRleHQpO2JyZWFrO2Nhc2Uic3Ryb25nIjpyKz10LnN0cm9uZyh0aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zLHQpKTticmVhaztjYXNlImVtIjpyKz10LmVtKHRo'@; put 'aXMucGFyc2VJbmxpbmUoby50b2tlbnMsdCkpO2JyZWFrO2Nhc2UiY29kZXNwYW4iOnIrPXQuY29kZXNwYW4oby50ZXh0KTticmVhaztjYXNlImJyIjpyKz10LmJyKCk7YnJlYWs7Y2FzZSJkZWwiOnIrPXQuZGVsKHRoaXMucGFyc2VJbmxpbmUoby50b2tlbnMsdCkpO2JyZWFrO2RlZmF1bHQ6'@; put 'e2NvbnN0IHU9J1Rva2VuIHdpdGggIicrby50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcih1KTt0aHJvdyBuZXcgRXJyb3IodSl9fXJldHVybiByfX1jbGFzcyB5S3tjb25zdHJ1Y3RvcihlKXt0aGlz'@; put 'Lm9wdGlvbnM9ZXx8aXl9c3RhdGljIHBhc3NUaHJvdWdoSG9va3M9bmV3IFNldChbInByZXByb2Nlc3MiLCJwb3N0cHJvY2VzcyJdKTtwcmVwcm9jZXNzKGUpe3JldHVybiBlfXBvc3Rwcm9jZXNzKGUpe3JldHVybiBlfX1jb25zdCBVQz1uZXcgY2xhc3Mgb2Nue2RlZmF1bHRzPXthc3luYzoh'@; put 'MSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRlclByZWZpeDoiIixoaWdobGlnaHQ6bnVsbCxob29rczpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2Fu'@; put 'aXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbCx4aHRtbDohMX07b3B0aW9ucz10aGlzLnNldE9wdGlvbnM7cGFyc2U9dGhpcy4jZShxNi5sZXgsSzYucGFyc2UpO3BhcnNlSW5saW5lPXRoaXMuI2Uo'@; put 'cTYubGV4SW5saW5lLEs2LnBhcnNlSW5saW5lKTtQYXJzZXI9SzY7cGFyc2VyPUs2LnBhcnNlO1JlbmRlcmVyPV9LO1RleHRSZW5kZXJlcj1LbWU7TGV4ZXI9cTY7bGV4ZXI9cTYubGV4O1Rva2VuaXplcj12SztTbHVnZ2VyPVhtZTtIb29rcz15Sztjb25zdHJ1Y3RvciguLi5lKXt0aGlzLnVz'@; put 'ZSguLi5lKX13YWxrVG9rZW5zKGUsdCl7bGV0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSlzd2l0Y2gocj1yLmNvbmNhdCh0LmNhbGwodGhpcyxpKSksaS50eXBlKXtjYXNlInRhYmxlIjpmb3IoY29uc3QgbyBvZiBpLmhlYWRlcilyPXIuY29uY2F0KHRoaXMud2Fsa1Rva2VucyhvLnRva2Vucyx0'@; put 'KSk7Zm9yKGNvbnN0IG8gb2YgaS5yb3dzKWZvcihjb25zdCBhIG9mIG8pcj1yLmNvbmNhdCh0aGlzLndhbGtUb2tlbnMoYS50b2tlbnMsdCkpO2JyZWFrO2Nhc2UibGlzdCI6cj1yLmNvbmNhdCh0aGlzLndhbGtUb2tlbnMoaS5pdGVtcyx0KSk7YnJlYWs7ZGVmYXVsdDp0aGlzLmRlZmF1bHRz'@; put 'LmV4dGVuc2lvbnMmJnRoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2VucyYmdGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW2kudHlwZV0/dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW2kudHlwZV0uZm9yRWFjaChvPT57cj1yLmNvbmNhdCh0'@; put 'aGlzLndhbGtUb2tlbnMoaVtvXSx0KSl9KTppLnRva2VucyYmKHI9ci5jb25jYXQodGhpcy53YWxrVG9rZW5zKGkudG9rZW5zLHQpKSl9cmV0dXJuIHJ9dXNlKC4uLmUpe2NvbnN0IHQ9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fTtyZXR1'@; put 'cm4gZS5mb3JFYWNoKHI9Pntjb25zdCBpPXsuLi5yfTtpZihpLmFzeW5jPXRoaXMuZGVmYXVsdHMuYXN5bmN8fGkuYXN5bmN8fCExLHIuZXh0ZW5zaW9ucyYmKHIuZXh0ZW5zaW9ucy5mb3JFYWNoKG89PntpZighby5uYW1lKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWly'@; put 'ZWQiKTtpZihvLnJlbmRlcmVyKXtjb25zdCBhPXQucmVuZGVyZXJzW28ubmFtZV07dC5yZW5kZXJlcnNbby5uYW1lXT1hP2Z1bmN0aW9uKC4uLmwpe2xldCB1PW8ucmVuZGVyZXIuYXBwbHkodGhpcyxsKTtyZXR1cm4hMT09PXUmJih1PWEuYXBwbHkodGhpcyxsKSksdX06by5yZW5kZXJlcn1p'@; put 'ZihvLnRva2VuaXplcil7aWYoIW8ubGV2ZWx8fCJibG9jayIhPT1vLmxldmVsJiYiaW5saW5lIiE9PW8ubGV2ZWwpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbGV2ZWwgbXVzdCBiZSAnYmxvY2snIG9yICdpbmxpbmUnIik7dFtvLmxldmVsXT90W28ubGV2ZWxdLnVuc2hpZnQoby50b2tl'@; put 'bml6ZXIpOnRbby5sZXZlbF09W28udG9rZW5pemVyXSxvLnN0YXJ0JiYoImJsb2NrIj09PW8ubGV2ZWw/dC5zdGFydEJsb2NrP3Quc3RhcnRCbG9jay5wdXNoKG8uc3RhcnQpOnQuc3RhcnRCbG9jaz1bby5zdGFydF06ImlubGluZSI9PT1vLmxldmVsJiYodC5zdGFydElubGluZT90LnN0YXJ0'@; put 'SW5saW5lLnB1c2goby5zdGFydCk6dC5zdGFydElubGluZT1bby5zdGFydF0pKX1vLmNoaWxkVG9rZW5zJiYodC5jaGlsZFRva2Vuc1tvLm5hbWVdPW8uY2hpbGRUb2tlbnMpfSksaS5leHRlbnNpb25zPXQpLHIucmVuZGVyZXIpe2NvbnN0IG89dGhpcy5kZWZhdWx0cy5yZW5kZXJlcnx8bmV3'@; put 'IF9LKHRoaXMuZGVmYXVsdHMpO2Zvcihjb25zdCBhIGluIHIucmVuZGVyZXIpe2NvbnN0IGw9b1thXTtvW2FdPSguLi51KT0+e2xldCBnPXIucmVuZGVyZXJbYV0uYXBwbHkobyx1KTtyZXR1cm4hMT09PWcmJihnPWwuYXBwbHkobyx1KSksZ319aS5yZW5kZXJlcj1vfWlmKHIudG9rZW5pemVy'@; put 'KXtjb25zdCBvPXRoaXMuZGVmYXVsdHMudG9rZW5pemVyfHxuZXcgdksodGhpcy5kZWZhdWx0cyk7Zm9yKGNvbnN0IGEgaW4gci50b2tlbml6ZXIpe2NvbnN0IGw9b1thXTtvW2FdPSguLi51KT0+e2xldCBnPXIudG9rZW5pemVyW2FdLmFwcGx5KG8sdSk7cmV0dXJuITE9PT1nJiYoZz1sLmFw'@; put 'cGx5KG8sdSkpLGd9fWkudG9rZW5pemVyPW99aWYoci5ob29rcyl7Y29uc3Qgbz10aGlzLmRlZmF1bHRzLmhvb2tzfHxuZXcgeUs7Zm9yKGNvbnN0IGEgaW4gci5ob29rcyl7Y29uc3QgbD1vW2FdO29bYV09eUsucGFzc1Rocm91Z2hIb29rcy5oYXMoYSk/dT0+e2lmKHRoaXMuZGVmYXVsdHMu'@; put 'YXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZShyLmhvb2tzW2FdLmNhbGwobyx1KSkudGhlbihFPT5sLmNhbGwobyxFKSk7Y29uc3QgZz1yLmhvb2tzW2FdLmNhbGwobyx1KTtyZXR1cm4gbC5jYWxsKG8sZyl9OiguLi51KT0+e2xldCBnPXIuaG9va3NbYV0uYXBwbHkobyx1KTtyZXR1cm4h'@; put 'MT09PWcmJihnPWwuYXBwbHkobyx1KSksZ319aS5ob29rcz1vfWlmKHIud2Fsa1Rva2Vucyl7Y29uc3Qgbz10aGlzLmRlZmF1bHRzLndhbGtUb2tlbnM7aS53YWxrVG9rZW5zPWZ1bmN0aW9uKGEpe2xldCBsPVtdO3JldHVybiBsLnB1c2goci53YWxrVG9rZW5zLmNhbGwodGhpcyxhKSksbyYm'@; put 'KGw9bC5jb25jYXQoby5jYWxsKHRoaXMsYSkpKSxsfX10aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLml9fSksdGhpc31zZXRPcHRpb25zKGUpe3JldHVybiB0aGlzLmRlZmF1bHRzPXsuLi50aGlzLmRlZmF1bHRzLC4uLmV9LHRoaXN9I2UoZSx0KXtyZXR1cm4ocixpLG8pPT57'@; put 'ImZ1bmN0aW9uIj09dHlwZW9mIGkmJihvPWksaT1udWxsKTtjb25zdCBhPXsuLi5pfTtpPXsuLi50aGlzLmRlZmF1bHRzLC4uLmF9O2NvbnN0IGw9dGhpcy4jdChpLnNpbGVudCxpLmFzeW5jLG8pO2lmKHR5cGVvZiByPiJ1Inx8bnVsbD09PXIpcmV0dXJuIGwobmV3IEVycm9yKCJtYXJrZWQo'@; put 'KTogaW5wdXQgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZCBvciBudWxsIikpO2lmKCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm4gbChuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSAiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSsiLCBzdHJp'@; put 'bmcgZXhwZWN0ZWQiKSk7aWYoZnVuY3Rpb24gbmNuKG4sZSl7IW58fG4uc2lsZW50fHwoZSYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogY2FsbGJhY2sgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0'@; put 'aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnL3VzaW5nX3BybyNhc3luYyIpLChuLnNhbml0aXplfHxuLnNhbml0aXplcikmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHNhbml0aXplIGFuZCBzYW5pdGl6ZXIgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRl'@; put 'ZCBzaW5jZSB2ZXJzaW9uIDAuNy4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnLyMvVVNJTkdfQURWQU5DRUQubWQjb3B0aW9ucyIpLChuLmhpZ2hsaWdodHx8Imxhbmd1'@; put 'YWdlLSIhPT1uLmxhbmdQcmVmaXgpJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBoaWdobGlnaHQgYW5kIGxhbmdQcmVmaXggcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUg'@; put 'ZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtaGlnaGxpZ2h0LiIpLG4ubWFuZ2xlJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBtYW5nbGUgcGFyYW1ldGVyIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGlzIGRlcHJlY2F0ZWQgc2lu'@; put 'Y2UgdmVyc2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlzIHdhcm5pbmcsIGluc3RhbGwgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLW1hbmdsZSwgb3IgZGlzYWJsZSBieSBzZXR0aW5nIGB7bWFuZ2xlOiBmYWxz'@; put 'ZX1gLiIpLG4uYmFzZVVybCYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogYmFzZVVybCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRw'@; put 'czovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtYmFzZS11cmwuIiksbi5zbWFydHlwYW50cyYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogc21hcnR5cGFudHMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3'@; put 'aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLXNtYXJ0eXBhbnRzLiIpLG4ueGh0bWwmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHhodG1sIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZl'@; put 'cnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC14aHRtbC4iKSwobi5oZWFkZXJJZHN8fG4uaGVhZGVyUHJlZml4KSYmY29uc29sZS53'@; put 'YXJuKCJtYXJrZWQoKTogaGVhZGVySWRzIGFuZCBoZWFkZXJQcmVmaXggcGFyYW1ldGVycyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBhcmUgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFRvIGNsZWFyIHRoaXMgd2Fy'@; put 'bmluZywgaW5zdGFsbCAgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLWdmbS1oZWFkaW5nLWlkLCBvciBkaXNhYmxlIGJ5IHNldHRpbmcgYHtoZWFkZXJJZHM6IGZhbHNlfWAuIikpfShpLG8pLGkuaG9va3MmJihpLmhvb2tzLm9wdGlvbnM9aSksbyl7Y29uc3QgdT1pLmhp'@; put 'Z2hsaWdodDtsZXQgZzt0cnl7aS5ob29rcyYmKHI9aS5ob29rcy5wcmVwcm9jZXNzKHIpKSxnPWUocixpKX1jYXRjaChaKXtyZXR1cm4gbChaKX1jb25zdCBFPVo9PntsZXQgZWU7aWYoIVopdHJ5e2kud2Fsa1Rva2VucyYmdGhpcy53YWxrVG9rZW5zKGcsaS53YWxrVG9rZW5zKSxlZT10KGcs'@; put 'aSksaS5ob29rcyYmKGVlPWkuaG9va3MucG9zdHByb2Nlc3MoZWUpKX1jYXRjaCh2ZSl7Wj12ZX1yZXR1cm4gaS5oaWdobGlnaHQ9dSxaP2woWik6byhudWxsLGVlKX07aWYoIXV8fHUubGVuZ3RoPDN8fChkZWxldGUgaS5oaWdobGlnaHQsIWcubGVuZ3RoKSlyZXR1cm4gRSgpO2xldCBPPTA7'@; put 'cmV0dXJuIHRoaXMud2Fsa1Rva2VucyhnLFo9PnsiY29kZSI9PT1aLnR5cGUmJihPKyssc2V0VGltZW91dCgoKT0+e3UoWi50ZXh0LFoubGFuZywoZWUsdmUpPT57aWYoZWUpcmV0dXJuIEUoZWUpO251bGwhPXZlJiZ2ZSE9PVoudGV4dCYmKFoudGV4dD12ZSxaLmVzY2FwZWQ9ITApLE8tLSww'@; put 'PT09TyYmRSgpfSl9LDApKX0pLHZvaWQoMD09PU8mJkUoKSl9aWYoaS5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkuaG9va3M/aS5ob29rcy5wcmVwcm9jZXNzKHIpOnIpLnRoZW4odT0+ZSh1LGkpKS50aGVuKHU9Pmkud2Fsa1Rva2Vucz9Qcm9taXNlLmFsbCh0aGlzLndhbGtUb2tl'@; put 'bnModSxpLndhbGtUb2tlbnMpKS50aGVuKCgpPT51KTp1KS50aGVuKHU9PnQodSxpKSkudGhlbih1PT5pLmhvb2tzP2kuaG9va3MucG9zdHByb2Nlc3ModSk6dSkuY2F0Y2gobCk7dHJ5e2kuaG9va3MmJihyPWkuaG9va3MucHJlcHJvY2VzcyhyKSk7Y29uc3QgdT1lKHIsaSk7aS53YWxrVG9r'@; put 'ZW5zJiZ0aGlzLndhbGtUb2tlbnModSxpLndhbGtUb2tlbnMpO2xldCBnPXQodSxpKTtyZXR1cm4gaS5ob29rcyYmKGc9aS5ob29rcy5wb3N0cHJvY2VzcyhnKSksZ31jYXRjaCh1KXtyZXR1cm4gbCh1KX19fSN0KGUsdCxyKXtyZXR1cm4gaT0+e2lmKGkubWVzc2FnZSs9IlxuUGxlYXNlIHJl'@; put 'cG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuIixlKXtjb25zdCBvPSI8cD5BbiBlcnJvciBvY2N1cnJlZDo8L3A+PHByZT4iK2hmKGkubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7cmV0dXJuIHQ/UHJvbWlzZS5yZXNvbHZlKG8pOnI/dm9pZCByKG51bGws'@; put 'byk6b31pZih0KXJldHVybiBQcm9taXNlLnJlamVjdChpKTtpZighcil0aHJvdyBpO3IoaSl9fX0oaXkpO2Z1bmN0aW9uIEtjKG4sZSx0KXtyZXR1cm4gVUMucGFyc2UobixlLHQpfUtjLm9wdGlvbnM9S2Muc2V0T3B0aW9ucz1mdW5jdGlvbihuKXtyZXR1cm4gVUMuc2V0T3B0aW9ucyhuKSx6'@; put 'WmUoS2MuZGVmYXVsdHM9VUMuZGVmYXVsdHMpLEtjfSxLYy5nZXREZWZhdWx0cz1mdW5jdGlvbiBxbWUoKXtyZXR1cm57YXN5bmM6ITEsYmFzZVVybDpudWxsLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhlYWRlcklkczohMCxoZWFkZXJQcmVmaXg6IiIsaGlnaGxpZ2h0Om51'@; put 'bGwsaG9va3M6bnVsbCxsYW5nUHJlZml4OiJsYW5ndWFnZS0iLG1hbmdsZTohMCxwZWRhbnRpYzohMSxyZW5kZXJlcjpudWxsLHNhbml0aXplOiExLHNhbml0aXplcjpudWxsLHNpbGVudDohMSxzbWFydHlwYW50czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51bGwseGh0bWw6ITF9'@; put 'fSxLYy5kZWZhdWx0cz1peSxLYy51c2U9ZnVuY3Rpb24oLi4ubil7cmV0dXJuIFVDLnVzZSguLi5uKSx6WmUoS2MuZGVmYXVsdHM9VUMuZGVmYXVsdHMpLEtjfSxLYy53YWxrVG9rZW5zPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIFVDLndhbGtUb2tlbnMobixlKX0sS2MucGFyc2VJbmxpbmU9VUMu'@; put 'cGFyc2VJbmxpbmUsS2MuUGFyc2VyPUs2LEtjLnBhcnNlcj1LNi5wYXJzZSxLYy5SZW5kZXJlcj1fSyxLYy5UZXh0UmVuZGVyZXI9S21lLEtjLkxleGVyPXE2LEtjLmxleGVyPXE2LmxleCxLYy5Ub2tlbml6ZXI9dkssS2MuU2x1Z2dlcj1YbWUsS2MuSG9va3M9eUssS2MucGFyc2U9S2M7Y29u'@; put 'c3Qgc2NuPVsibWFya2Rvd25DYXJkIl07ZnVuY3Rpb24gbGNuKG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsNyl9bGV0IGNjbj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIpe3RoaXMuc2FzU2VydmljZT1yLHRoaXMuYWdyZWVDaGVja2VkPSExLHRoaXMuYWdyZWVCb3hM'@; put 'b2NrZWQ9ITAsdGhpcy5hZ3JlZUNsaWNrZWQ9ITEsdGhpcy5ldWxhX21hcmtkb3duPSdcbkxpY2VuY2UgQWdyZWVtZW50IGZvciBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWVcbj09PT09PT09PT09PT09PT09PT09XG5cbkNvcHlyaWdodCAoYykgQm93ZSBJTyBMdGRcblxuRGF0YSBDb250'@; put 'cm9sbGVyIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGJ5IDRHTCBBcHBzLCBhIGJyYW5kIG93bmVkIGJ5IEJvd2UgSU8gTHRkLCBhIFVLIExpbWl0ZWQgQ29tcGFueSBoZWFkcXVhcnRlZCBpbiAyOSBPbGRmaWVsZCBSZCwgQ3VtYnJpYSwgcmVnaXN0ZXJlZCBhdCBDb21wYW5pZXMgSG91c2Ug'@; put 'd2l0aCBjb21wYW55IG51bWJlciAwODc3NzE3MSwgVkFUIG51bWJlcjogMjAzOTE0MjQwXG5cblRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IGFwcGxpY2FibGUgY29weXJpZ2h0IGxhd3MsIGluY2x1ZGluZyBpbnRlcm5hdGlvbmFsIHRyZWF0aWVzLCBhbmQgZHVhbC1saWNlbnNlZCBc'@; put 'dTIwMTMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91ciB1c2UgZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMsIG1lYW5pbmcgaW50ZW5kZWQgZm9yIG9yIHJlc3VsdGluZyBpbiBjb21tZXJjaWFsIGFkdmFudGFnZSBvciBtb25ldGFyeSBjb21wZW5zYXRpb24sIG9yIG5vdC5cblxuSWYgeW91ciB1'@; put 'c2UgaXMgc3RyaWN0bHkgcGVyc29uYWwgb3Igc29sZWx5IGZvciBldmFsdWF0aW9uIHB1cnBvc2VzLCBtZWFuaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZyB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJlIG91dHNpZGUg'@; put 'dGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsIHlvdSBhZ3JlZSB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgaW5jbHVkZWQgaW4gdGhlICJsaWNlbmNlLW5vbi1jb21tZXJjaWFsLWRhdGFjb250cm9sbGVyLm1kIiBmaWxlIGF2YWlsYWJsZSBoZXJlOiAgaHR0cHM6Ly9naXQuZGF0YWNvbnRy'@; put 'b2xsZXIuaW8vZGMvZGMvc3JjL2JyYW5jaC9tYWluL2xpY2VuY2Utbm9uLWNvbW1lcmNpYWwtZGF0YWNvbnRyb2xsZXIubWRcblxuWW91ciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcyBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBpbmNsdWRlZCBpbiBhbiBh'@; put 'cHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LlxuXG5JbiBhbnkgY2FzZSwgeW91IG11c3Qgbm90IG1ha2UgYW55IHN1Y2ggdXNlIG9mIHRoaXMgc29mdHdhcmUgYXMgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB3aGljaCBtYXkgYmUgY29uc2lkZXJlZCBjb21wZXRpdGl2ZSB3aXRoIHRoaXMgc29m'@; put 'dHdhcmUuXG5cblVOTEVTUyBFWFBSRVNTTFkgQUdSRUVEIE9USEVSV0lTRSwgNEdMIEFQUFMgUFJPVklERVMgVEhJUyBTT0ZUV0FSRSBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgQU5EIElOIE5PIEVWRU5UIEFORCBV'@; put 'TkRFUiBOTyBMRUdBTCBUSEVPUlksIFNIQUxMIDRHTCBBUFBTIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9GIEFOWSBDSEFSQUNURVIgQVJJ'@; put 'U0lORyBGUk9NIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRISVMgU09GVFdBUkUuXG5cblxuJ31uZ09uSW5pdCgpe2NvbnN0IHI9S2Muc2V0T3B0aW9ucyh7fSk7dGhpcy5ldWxhX21hcmtkb3duPXIucGFyc2UodGhpcy5ldWxhX21hcmtkb3duKX1uZ0FmdGVyVmlld0luaXQoKXtzZXRUaW1l'@; put 'b3V0KCgpPT57dGhpcy5tYXJrZG93bkNhcmQmJnRoaXMubWFya2Rvd25DYXJkLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNjcm9sbCIpKX0pfXRlcm1zQWdyZWVDaGFuZ2UoKXt0aGlzLmFncmVlQ2hlY2tlZCYmKHRoaXMuYWdyZWVCb3hMb2NrZWQ9ITAs'@; put 'dGhpcy5hZ3JlZUNsaWNrZWQ9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9yZWdpc3RlcnVzZXIiLHtTQVNDb250cm9sVGFibGU6W3tBQ0NFUFRFRDoieWVzIn1dfSkudGhlbihpPT57aS5hZGFwdGVyUmVzcG9uc2UucmV0dXJuJiZpLmFkYXB0ZXJSZXNwb25zZS5yZXR1cm5b'@; put 'MF0mJiJTVUNDRVNTIj09PWkuYWRhcHRlclJlc3BvbnNlLnJldHVyblswXS5NU0cmJmxvY2F0aW9uLnJlbG9hZCgpfSkuY2F0Y2goaT0+aSkuZmluYWxseSgoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLmFncmVlQm94TG9ja2VkPSExLHRoaXMuYWdyZWVDbGlja2VkPSExLHRoaXMuYWdyZWVD'@; put 'aGVja2VkPSExfSwxZTMpfSkpfW9uQ2FyZEJsb2NrU2Nyb2xsKHIpe2lmKCF0aGlzLmFncmVlQ2xpY2tlZCl7bGV0IGk9ci50YXJnZXQ7aSYmKHRoaXMuYWdyZWVCb3hMb2NrZWQ9IShpLnNjcm9sbFRvcCtpLm9mZnNldEhlaWdodD49aS5zY3JvbGxIZWlnaHQtMjApKX19c3RhdGljI2U9bj0o'@; put 'KT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoaWMpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLXRlcm1zIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihpLG8pe2lmKDEmaSYmV28oc2NuLDUpLDImaSl7bGV0IGE7Y2ko'@; put 'YT11aSgpKSYmKG8ubWFya2Rvd25DYXJkPWEuZmlyc3QpfX0sc3RhbmRhbG9uZTohMSxkZWNsczoxMyx2YXJzOjYsY29uc3RzOltbIm1hcmtkb3duQ2FyZCIsIiJdLFsxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxvY2siLDMsInNjcm9sbCIsImlubmVySFRNTCJdLFsx'@; put 'LCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsImFjY2VwdC1jaGVja2JveCJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLDMsIm5nTW9kZWxDaGFuZ2UiLCJjaGFuZ2UiLCJuZ01vZGVsIiwiZGlzYWJsZWQiXSxbImNscklubGluZSIsInNtYWxsIl1d'@; put 'LHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7aWYoMSZpKXtjb25zdCBhPXduKCk7SigwLCJkaXYiLDEpKDEsImRpdiIsMiksU2UoMiwiIEVuZCBVc2VyIExpY2Vuc2UgQWdyZWVtZW50ICIpLEooMywicCIpLFNlKDQsIiBXZWxjb21lIHRvIERhdGEgQ29udHJvbGxlciBmb3IgU0FTISBQbGVhc2Ug'@; put 'cmV2aWV3IGFuZCBhY2NlcHQgYWdyZWVtZW50IGJlbG93IGluIG9yZGVyIHRvIHByb2NlZWQuICIpLHRlKCkoKSxKKDUsImRpdiIsMywwKSx3dCgic2Nyb2xsIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vbkNhcmRCbG9ja1Njcm9sbCh1KSl9KSx0ZSgpLEooNywiZGl2Iiw0KSg4'@; put 'LCJjbHItY2hlY2tib3gtd3JhcHBlciIsNSkoOSwiaW5wdXQiLDYpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5hZ3JlZUNoZWNrZWQsdSl8fChvLmFncmVlQ2hlY2tlZD11KSxYZSh1KX0pLHd0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFll'@; put 'KGEpLFhlKG8udGVybXNBZ3JlZUNoYW5nZSgpKX0pLHRlKCksSigxMCwibGFiZWwiKSxTZSgxMSwiSSBoYXZlIHJlYWQgYW5kIGFncmVlIHRvIHRoZSB0ZXJtcyBvZiBhYm92ZS4iKSx0ZSgpKCksdnQoMTIsbGNuLDEsMCwiY2xyLXNwaW5uZXIiLDcpLHRlKCkoKX0yJmkmJihpZSg1KSxydCgi'@; put 'aW5uZXJIVE1MIixvLmV1bGFfbWFya2Rvd24seDUpLGllKDMpLHdyKCJkaXNhYmxlZCIsby5hZ3JlZUJveExvY2tlZCksaWUoKSxkaSgibmdNb2RlbCIsby5hZ3JlZUNoZWNrZWQpLHJ0KCJkaXNhYmxlZCIsby5hZ3JlZUJveExvY2tlZCksaWUoMyksX3Qoby5hZ3JlZUJveExvY2tlZCYmby5h'@; put 'Z3JlZUNsaWNrZWQ/MTI6LTEpKX0sZGVwZW5kZW5jaWVzOltIMixvYyxYbCxlbCxVMixGZix6Ml0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgdWNuPW49PltuXTtmdW5jdGlvbiBkY24obixlKXsxJm4mJihKKDAsInAiLDI3KSxJdCgxLCJjbHItaWNvbiIsMjgp'@; put 'LFNlKDIsIiBMaWNlbmNlIGtleSBpcyBpbnZhbGlkLiBXZSBjYW4ndCBwcm92aWRlIHlvdSBtb3JlIGRldGFpbHMgYXQgdGhlIG1vbWVudCAiKSx0ZSgpKX1mdW5jdGlvbiBoY24obixlKXtpZigxJm4mJkl0KDAsInAiLDI5KSwyJm4pe2NvbnN0IHQ9VGUoMyk7cnQoImlubmVySFRNTCIsdC5s'@; put 'aWNlbnNlRXJyb3JzW3Qua2V5RXJyb3JdLHg1KX19ZnVuY3Rpb24gZmNuKG4sZSl7aWYoMSZuJiYoSigwLCJwIikoMSwic3Ryb25nIiksU2UoMiwiRGV0YWlsczoiKSx0ZSgpLFNlKDMpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgzKSxTcigiICIsdC5lcnJvckRldGFpbHMpfX1mdW5j'@; put 'dGlvbiBwY24obixlKXtpZigxJm4mJihtbCgwKSxZbigxLGRjbiwzLDAsInAiLDI1KSgyLGhjbiwxLDEsInAiLDI2KSgzLGZjbiw0LDEsInAiLDQpLHJsKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLHJ0KCJuZ0lmIiwhdC5rZXlFcnJvciksaWUoKSxydCgibmdJZiIsdC5rZXlFcnJvciks'@; put 'aWUoKSxydCgibmdJZiIsdC5lcnJvckRldGFpbHMpfX1mdW5jdGlvbiBnY24obixlKXsxJm4mJihtbCgwKSxKKDEsInAiLDI3KSxJdCgyLCJjbHItaWNvbiIsMjgpLFNlKDMsIiBUaGUgcmVnaXN0ZXJlZCBudW1iZXIgb2YgdXNlcnMgcmVhY2hlZCB0aGUgbGltaXQgc3BlY2lmaWVkIGZvciB5'@; put 'b3VyIGxpY2VuY2UuIFBsZWFzZSBjb250YWN0ICIpLEl0KDQsImNvbnRhY3QtbGluayIsMzApLFNlKDUsIiBvciB5b3VyIHJlc2VsbGVyIHRvIGFycmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlcyBmb3IgdGhpcyBwcm9kdWN0LiAiKSx0ZSgpLHJsKCkpfWZ1bmN0aW9uIG1jbihuLGUpezEmbiYm'@; put 'KG1sKDApLEooMSwicCIsMjcpLFNlKDIsIiBVcGRhdGUgdGhlIGxpY2Vuc2Uga2V5IGJ5IHVwbG9hZGluZyB0aGUgbGljZW5jZSBmaWxlIG9yIGJ5IHBhc3RpbmcgYSBsaWNlbnNlIGtleSBhbmQgYWN0aXZhdGlvbiBrZXkgaW4gdGhlIGlucHV0cyBiZWxvdy4gIiksdGUoKSxybCgpKX1mdW5j'@; put 'dGlvbiB2Y24obixlKXtpZigxJm4mJihKKDAsInNwYW4iKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1lLmluZGV4LGk9VGUoMik7d3IoIm1pc3NrZXkiLGkubWlzc21hdGNoZWRLZXkmJmkubWlzc21hdGNoZWRLZXk9PT10KSxpZSgpLE5oKCIgIix0LCIiLHI9PT0o'@; put 'bnVsbD09aS5zeXNzaXRlLnZhbHVlP251bGw6aS5zeXNzaXRlLnZhbHVlLmxlbmd0aCktMT8iIjoiLCIsIiAiKX19ZnVuY3Rpb24gX2NuKG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsMzEpfWZ1bmN0aW9uIHljbihuLGUpezEmbiYmKEooMCwiZGl2IiksU2UoMSwiIERyb3AgLyBCcm93'@; put 'c2UgbGljZW5jZSBmaWxlICIpLHRlKCkpfWZ1bmN0aW9uIGJjbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiksU2UoMSwiIFNlbGVjdGVkIGZpbGU6ICIpLEooMiwic3Ryb25nIiksU2UoMyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoMykscHIodC5saWNlbmNlZmlsZS5maWxlbmFt'@; put 'ZSl9fWZ1bmN0aW9uIHdjbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IikoMSwic3Ryb25nIiksU2UoMiksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoMikscHIodC5saWNlbmNlRmlsZUVycm9yKX19ZnVuY3Rpb24gQ2NuKG4sZSl7aWYoMSZuJiYobWwoMCksWW4oMSx5Y24sMiwwLCJk'@; put 'aXYiLDQpKDIsYmNuLDQsMSwiZGl2Iiw0KSgzLHdjbiwzLDEsImRpdiIsNCkscmwoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCkscnQoIm5nSWYiLCIiPT09dC5saWNlbmNlZmlsZS5maWxlbmFtZSksaWUoKSxydCgibmdJZiIsIiIhPT10LmxpY2VuY2VmaWxlLmZpbGVuYW1lKSxpZSgpLHJ0'@; put 'KCJuZ0lmIix0LmxpY2VuY2VGaWxlRXJyb3IpfX1mdW5jdGlvbiBTY24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTttbCgwKSxKKDEsImZvcm0iLDMyKSgyLCJwIiksU2UoMywiTGljZW5jZSBrZXk6IiksdGUoKSxKKDQsImRpdiIsMzMpKDUsInRleHRhcmVhIiwzNCksaGkoIm5nTW9kZWxD'@; put 'aGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMik7cmV0dXJuIGZpKG8uY29tYmluZWRLZXlWYWx1ZSxpKXx8KG8uY29tYmluZWRLZXlWYWx1ZT1pKSxYZShpKX0pLHd0KCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5vbkNvbWJpbmVkS2V5'@; put 'SW5wdXQoKSl9KSx0ZSgpKCkoKSxKKDYsImJ1dHRvbiIsMzUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikudG9nZ2xlS2V5Rm9ybWF0KCkpfSksU2UoNywiIFBhc3RlIGFzIHR3byBzZXBhcmF0ZSBrZXlzIGluc3RlYWQgIiksdGUoKSxybCgpfWlmKDImbil7'@; put 'Y29uc3QgdD1UZSgyKTtpZSg1KSxkaSgibmdNb2RlbCIsdC5jb21iaW5lZEtleVZhbHVlKX19ZnVuY3Rpb24gRWNuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7bWwoMCksSigxLCJmb3JtIiwzNikoMiwicCIpLFNlKDMsIkxpY2VuY2Uga2V5OiIpLHRlKCksSig0LCJkaXYiLDMzKSg1LCJ0'@; put 'ZXh0YXJlYSIsMzcpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDIpO3JldHVybiBmaShvLmxpY2VuY2VLZXlWYWx1ZSxpKXx8KG8ubGljZW5jZUtleVZhbHVlPWkpLFhlKGkpfSksd3QoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQp'@; put 'LFhlKFRlKDIpLnRyaW1LZXlzKCkpfSksdGUoKSgpKCksSig2LCJmb3JtIiwzOCkoNywicCIpLFNlKDgsIkFjdGl2YXRpb24ga2V5OiIpLHRlKCksSig5LCJkaXYiLDMzKSgxMCwidGV4dGFyZWEiLDM5KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgy'@; put 'KTtyZXR1cm4gZmkoby5hY3RpdmF0aW9uS2V5VmFsdWUsaSl8fChvLmFjdGl2YXRpb25LZXlWYWx1ZT1pKSxYZShpKX0pLHd0KCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS50cmltS2V5cygpKX0pLHRlKCkoKSgpLEooMTEsImJ1dHRvbiIsMzUpLHd0KCJj'@; put 'bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikudG9nZ2xlS2V5Rm9ybWF0KCkpfSksU2UoMTIsIiBQYXN0ZSBhcyBhIHNpbmdsZSBrZXkgaW5zdGVhZCAiKSx0ZSgpLHJsKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKDUpLGRpKCJuZ01vZGVsIix0LmxpY2VuY2VLZXlW'@; put 'YWx1ZSksaWUoNSksZGkoIm5nTW9kZWwiLHQuYWN0aXZhdGlvbktleVZhbHVlKX19ZnVuY3Rpb24gTWNuKG4sZSl7MSZuJiYoSigwLCJzcGFuIiksU2UoMSwiKGRlbW8vZnJlZSB0aWVyIGtleSkiKSx0ZSgpKX1mdW5jdGlvbiBUY24obixlKXtpZigxJm4mJihKKDAsInAiLDExKSgxLCJzdHJv'@; put 'bmciKSxTZSgyLCJFbmFibGVkIGZlYXR1cmVzOiIpLHRlKCksU2UoMyksdGUoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKDMpLFNyKCIgIix0LmVuYWJsZWRGZWF0dXJlcy5qb2luKCIsICIpLCIgIil9fWZ1bmN0aW9uIHhjbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw0MCkoMSwiaDYiLDQx'@; put 'KSxTZSgyLCJLZXkgRGV0YWlscyIpLHRlKCksSigzLCJwIiwxMSkoNCwic3Ryb25nIiksU2UoNSwiVmFsaWQgdW50aWw6IiksdGUoKSxTZSg2KSxZbig3LE1jbiwyLDAsInNwYW4iLDQpLHRlKCksSig4LCJwIiwxMSkoOSwic3Ryb25nIiksU2UoMTAsIkFsbG93ZWQgdXNlcnM6IiksdGUoKSxT'@; put 'ZSgxMSksdGUoKSxKKDEyLCJwIiwxMSkoMTMsInN0cm9uZyIpLFNlKDE0LCJTaXRlIElEKHMpIGluIHRoaXMga2V5OiIpLHRlKCksU2UoMTUpLHRlKCksWW4oMTYsVGNuLDQsMSwicCIsNDIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSg2KSxTcigiICIsdC5saWNlbnNlS2V5RGF0YS52'@; put 'YWxpZF91bnRpbCwiICIpLGllKCkscnQoIm5nSWYiLHQubGljZW5zZUtleURhdGEuZGVtbyksaWUoNCksU3IoIiAiLHQubGljZW5zZUtleURhdGEudXNlcnNfYWxsb3dlZCwiICIpLGllKDQpLFNyKCIgIiwobnVsbCE9dC5saWNlbnNlS2V5RGF0YS5zaXRlX2lkX211bHRpcGxlJiZ0LmxpY2Vu'@; put 'c2VLZXlEYXRhLnNpdGVfaWRfbXVsdGlwbGUubGVuZ3RoP3QubGljZW5zZUtleURhdGEuc2l0ZV9pZF9tdWx0aXBsZTp0NCg1LHVjbix0LmxpY2Vuc2VLZXlEYXRhLnNpdGVfaWQpKS5qb2luKCIsICIpLCIgIiksaWUoKSxydCgibmdJZiIsdC5lbmFibGVkRmVhdHVyZXMubGVuZ3RoKX19ZnVu'@; put 'Y3Rpb24gQWNuKG4sZSl7MSZuJiYoSigwLCJidXR0b24iLDQzKSxTZSgxLCIgQ29udGludWUgd2l0aCBmcmVlIHRpZXIgIiksdGUoKSl9ZnVuY3Rpb24ga2NuKG4sZSl7MSZuJiYoSigwLCJwIiw0NCksSXQoMSwiY2xyLWljb24iLDQ1KSxTZSgyLCIgVGhpcyBrZXkgd2FzIGdlbmVyYXRlZCBm'@; put 'b3IgYSBzZWN1cmUgKEhUVFBTKSBjb25uZWN0aW9uLCBidXQgRGF0YUNvbnRyb2xsZXIgaXMgY3VycmVudGx5IHJ1bm5pbmcgb3ZlciBIVFRQIC0gaXQgd2lsbCBub3QgYWN0aXZhdGUgaGVyZS4gQWNjZXNzIERhdGFDb250cm9sbGVyIHZpYSBIVFRQUywgb3IgY29udGFjdCAiKSxJdCgzLCJj'@; put 'b250YWN0LWxpbmsiLDMwKSxTZSg0LCIgZm9yIGFuIEhUVFAtY29tcGF0aWJsZSBrZXkuICIpLHRlKCkpfWZ1bmN0aW9uIFJjbihuLGUpezEmbiYmKEooMCwicCIsNDQpLEl0KDEsImNsci1pY29uIiw0NSksU2UoMiwiIFRoaXMga2V5IHdhcyBnZW5lcmF0ZWQgZm9yIGFuIGluc2VjdXJlIChI'@; put 'VFRQKSBjb25uZWN0aW9uLCBidXQgdGhpcyBwYWdlIGlzIHJ1bm5pbmcgaW4gYSBzZWN1cmUgYnJvd3NpbmcgY29udGV4dCAoSFRUUFMsIG9yIGxvY2FsaG9zdCkgLSBpdCB3aWxsIG5vdCBhY3RpdmF0ZSBoZXJlLiBDb250YWN0ICIpLEl0KDMsImNvbnRhY3QtbGluayIsMzApLFNlKDQsIiBm'@; put 'b3IgYW4gSFRUUFMtY29tcGF0aWJsZSBrZXkuICIpLHRlKCkpfWZ1bmN0aW9uIEljbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw1KSgxLCJkaXYiLDYpLFNlKDIsIkxpY2VuY2luZyIpLHRlKCksSigzLCJkaXYiLDcpKDQsImRpdiIsOCksWW4oNSxwY24sNCwzLCJuZy1j'@; put 'b250YWluZXIiLDkpKDYsZ2NuLDYsMCwibmctY29udGFpbmVyIiw5KSg3LG1jbiwzLDAsIm5nLWNvbnRhaW5lciIsOSksSig4LCJwIiwxMCkoOSwic3Ryb25nIiksU2UoMTAsIlByb3RvY29sOiIpLHRlKCksU2UoMTEpLHRlKCksSigxMiwicCIsMTEpKDEzLCJzdHJvbmciKSxTZSgxNCwiU1lT'@; put 'U0lURToiKSx0ZSgpLFluKDE1LHZjbiwyLDQsInNwYW4iLDEyKSxKKDE2LCJhIiwxMyksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9b28oMTgpLG89b28oMjApLGE9VGUoKTtyZXR1cm4gWGUoYS5jb3B5U3lzc2l0ZShpLG8sYS5zeXNzaXRlLnZhbHVlfHxbXSkpfSksSXQo'@; put 'MTcsImNsci1pY29uIiwxNCwwKSxKKDE5LCJzcGFuIiwxNSwxKSxTZSgyMSwiQ29weSB0byBjbGlwYm9hcmQiKSx0ZSgpKCkoKSxKKDIyLCJjbHItdGFicyIpKDIzLCJjbHItdGFiIikoMjQsImJ1dHRvbiIsMTYpLFNlKDI1LCJVcGxvYWQgbGljZW5jZSIpLHRlKCksSigyNiwiY2xyLXRhYi1j'@; put 'b250ZW50IikoMjcsImlucHV0IiwxNywyKSx3dCgiY2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS5vbkZpbGVDYXB0dXJlKGkpKX0pLHRlKCksSigyOSwiZGl2IiwxOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShvbygyOCkuY2xpY2soKSl9'@; put 'KSgiZmlsZURyb3AiLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgpLm9uRmlsZUNhcHR1cmUoaSwhMCkpfSksWW4oMzAsX2NuLDEsMCwiY2xyLXNwaW5uZXIiLDE5KSgzMSxDY24sNCwzLCJuZy1jb250YWluZXIiLDQpLHRlKCkoKSgpLEooMzIsImNsci10YWIiKSgzMywiYnV0dG9u'@; put 'IiwxNiksU2UoMzQsIlBhc3RlIGxpY2VuY2UiKSx0ZSgpLEooMzUsImNsci10YWItY29udGVudCIpLFluKDM2LFNjbiw4LDEsIm5nLWNvbnRhaW5lciIsNCkoMzcsRWNuLDEzLDIsIm5nLWNvbnRhaW5lciIsNCksdGUoKSgpKCksWW4oMzgseGNuLDE3LDcsImRpdiIsMjApLHRlKCksSigzOSwi'@; put 'ZGl2IiwyMSkoNDAsImJ1dHRvbiIsMjIpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5hcHBseUtleXMoKSl9KSxTZSg0MSwiIEFwcGx5IGxpY2VuY2Uga2V5cyAiKSx0ZSgpLFluKDQyLEFjbiwyLDAsImJ1dHRvbiIsMjMpLHRlKCksWW4oNDMsa2NuLDUsMCwi'@; put 'cCIsMjQpKDQ0LFJjbiw1LDAsInAiLDI0KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7aWUoMykscnQoIm5nU3dpdGNoIix0LmFjdGlvbiksaWUoMikscnQoIm5nU3dpdGNoQ2FzZSIsImtleSIpLGllKCkscnQoIm5nU3dpdGNoQ2FzZSIsImxpbWl0IiksaWUoKSxydCgibmdTd2l0Y2hD'@; put 'YXNlIiwidXBkYXRlIiksaWUoNCksU3IoIiAiLHQucHJvdG9jb2wpLGllKDQpLHJ0KCJuZ0Zvck9mIix0LnN5c3NpdGUudmFsdWUpLGllKDE1KSxydCgibmdJZiIsdC5saWNlbmNlRmlsZUxvYWRpbmcpLGllKCkscnQoIm5nSWYiLCF0LmxpY2VuY2VGaWxlTG9hZGluZyksaWUoNSkscnQoIm5n'@; put 'SWYiLCJjb21iaW5lZCI9PT10LmtleUZvcm1hdCksaWUoKSxydCgibmdJZiIsImxlZ2FjeSI9PT10LmtleUZvcm1hdCksaWUoKSxydCgibmdJZiIsdC5saWNlbnNlS2V5RGF0YSksaWUoMikscnQoImNsckxvYWRpbmciLHQuYXBwbHlpbmdLZXlzKSgiZGlzYWJsZWQiLHQuZGlzYWJsZUFwcGx5'@; put 'QnV0dG9uKSxpZSgyKSxydCgibmdJZiIsdC5pc0FwcEZyZWVUaWVyLnZhbHVlKSxpZSgpLHJ0KCJuZ0lmIiwicmVxdWlyZXNIdHRwcyI9PT10LnByb3RvY29sTWlzbWF0Y2gpLGllKCkscnQoIm5nSWYiLCJyZXF1aXJlc0h0dHAiPT09dC5wcm90b2NvbE1pc21hdGNoKX19ZnVuY3Rpb24gRGNu'@; put 'KG4sZSl7MSZuJiZJdCgwLCJhcHAtdGVybXMiKX12YXIgUVplPWZ1bmN0aW9uKG4pe3JldHVybiBuLmtleT0ia2V5IixuLnJlZ2lzdGVyPSJyZWdpc3RlciIsbi5saW1pdD0ibGltaXQiLG4udXBkYXRlPSJ1cGRhdGUiLG59KFFaZXx8e30pO2NvbnN0IExjbj1be3BhdGg6IjphY3Rpb24iLGNv'@; put 'bXBvbmVudDooKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEsbCx1KXt0aGlzLnJvdXRlPXIsdGhpcy5yb3V0ZXI9aSx0aGlzLmxpY2VuY2VTZXJ2aWNlPW8sdGhpcy5zYXNTZXJ2aWNlPWEsdGhpcy5hcHBTZXJ2aWNlPWwsdGhpcy5zYW5pdGl6ZXI9dSx0aGlzLmFjdGlv'@; put 'bj1udWxsLHRoaXMuZXJyb3JJY29uPSc8Y2xyLWljb24gY2xhc3M9ImlzLWVycm9yIiBzaGFwZT0iZXhjbGFtYXRpb24tY2lyY2xlIiBzaXplPSIyNiI+PC9jbHItaWNvbj4nLHRoaXMubGljZW5jZUtleVZhbHVlPSIiLHRoaXMuYWN0aXZhdGlvbktleVZhbHVlPSIiLHRoaXMua2V5Rm9ybWF0'@; put 'PSJjb21iaW5lZCIsdGhpcy5jb21iaW5lZEtleVZhbHVlPSIiLHRoaXMuYXBwbHlpbmdLZXlzPSExLHRoaXMucHJvdG9jb2w9Imh0dHBzOiI9PT1sb2NhdGlvbi5wcm90b2NvbD8iSFRUUFMgLSBzZWN1cmUgY29ubmVjdGlvbiI6IkhUVFAgLSBpbnNlY3VyZSBjb25uZWN0aW9uIix0aGlzLnN5'@; put 'c3NpdGU9dGhpcy5hcHBTZXJ2aWNlLnN5c3NpdGUsdGhpcy5jdXJyZW50TGljZW5jZUtleT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VLZXksdGhpcy5jdXJyZW50QWN0aXZhdGlvbktleT10aGlzLmxpY2VuY2VTZXJ2aWNlLmFjdGl2YXRpb25LZXksdGhpcy5pc0FwcEZyZWVUaWVyPXRo'@; put 'aXMubGljZW5jZVNlcnZpY2UuaXNBcHBGcmVlVGllcix0aGlzLmxpY2Vuc2VLZXlEYXRhPW51bGwsdGhpcy5pbnB1dFR5cGU9ImZpbGUiLHRoaXMubGljZW5jZUZpbGVMb2FkaW5nPSExLHRoaXMubGljZW5jZWZpbGU9e2ZpbGVuYW1lOiIifSx0aGlzLmxpY2Vuc2VFcnJvcnM9e21pc3Npbmc6'@; put 'dGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYCR7dGhpcy5lcnJvckljb259IExpY2VuY2Uga2V5IGlzIG1pc3NpbmcgLSBwbGVhc2UgY29udGFjdCA8YSBjbGFzcz0iY29sb3ItZ3JlZW4iIGhyZWY9Im1haWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyI+c3Vw'@; put 'cG9ydEBkYXRhY29udHJvbGxlci5pbzwvYT4gYW5kIGVudGVyIHZhbGlkIGtleXMgYmVsb3cuYCksZXhwaXJlZDp0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChgJHt0aGlzLmVycm9ySWNvbn0gTGljZW5jZSBrZXkgaXMgZXhwaXJlZCAtIHBsZWFzZSBjb250YWN0IDxh'@; put 'IGNsYXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvPC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy5gKSxpbnZhbGlkOnRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RI'@; put 'dG1sKGAke3RoaXMuZXJyb3JJY29ufSBMaWNlbmNlIGtleSBpcyBpbnZhbGlkIC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW88L2E+IGFuZCBlbnRl'@; put 'ciB2YWxpZCBrZXlzIGJlbG93LmApLG1pc3NtYXRjaDp0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChgJHt0aGlzLmVycm9ySWNvbn0gWW91ciBTWVNTSVRFIChiZWxvdykgaXMgbm90IGZvdW5kIGluIHRoZSBsaWNlbmNlIGtleSAtIHBsZWFzZSBjb250YWN0IDxhIGNs'@; put 'YXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvPC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy5gKX19bmdPbkluaXQoKXt0aGlzLmxpY2VuY2VLZXlWYWx1ZT10aGlzLmN1cnJlbnRM'@; put 'aWNlbmNlS2V5fHwiIix0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT10aGlzLmN1cnJlbnRBY3RpdmF0aW9uS2V5fHwiIix0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShyPT57dGhpcy5rZXlFcnJvcj1yLmVycm9yLHRoaXMubWlzc21hdGNoZWRLZXk9ci5taXNzbWF0Y2hJZCxyLmRl'@; put 'dGFpbHMmJih0aGlzLmVycm9yRGV0YWlscz1hdG9iKHIuZGV0YWlscykpfSksdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHI9PntsZXQgaT1yLmFjdGlvbjtpJiZPYmplY3QudmFsdWVzKFFaZSkuaW5jbHVkZXMoaSkmJih0aGlzLmFjdGlvbj1pKX0pLHRoaXMubGljZW5zZUtleURhdGE9'@; put 'dGhpcy5saWNlbmNlU2VydmljZS5nZXRMaWNlbnNlS2V5RGF0YSgpfXRyaW1LZXlzKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7ci5saWNlbmNlS2V5VmFsdWU9ci5saWNlbmNlS2V5VmFsdWUudHJpbSgpLHIuYWN0aXZhdGlvbktleVZhbHVlPXIuYWN0aXZhdGlvbktleVZh'@; put 'bHVlLnRyaW0oKSx5aWVsZCByLm1heWJlU3BsaXRDb21iaW5lZEtleShyLmxpY2VuY2VLZXlWYWx1ZSkseWllbGQgci5yZWZyZXNoS2V5UHJldmlldygpfSkoKX1vbkNvbWJpbmVkS2V5SW5wdXQoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLmNvbWJpbmVkS2V5VmFsdWU9'@; put 'ci5jb21iaW5lZEtleVZhbHVlLnRyaW0oKSwoeWllbGQgci5tYXliZVNwbGl0Q29tYmluZWRLZXkoci5jb21iaW5lZEtleVZhbHVlKSl8fChyLmxpY2VuY2VLZXlWYWx1ZT0iIixyLmFjdGl2YXRpb25LZXlWYWx1ZT0iIikseWllbGQgci5yZWZyZXNoS2V5UHJldmlldygpfSkoKX1yZWZyZXNo'@; put 'S2V5UHJldmlldygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2lmKHIubGljZW5jZUtleVZhbHVlJiZyLmFjdGl2YXRpb25LZXlWYWx1ZSl0cnl7ci5saWNlbnNlS2V5RGF0YT15aWVsZCByLmxpY2VuY2VTZXJ2aWNlLmRlY3J5cHRMaWNlbnNlS2V5KHIubGljZW5jZUtleVZh'@; put 'bHVlLHIuYWN0aXZhdGlvbktleVZhbHVlKX1jYXRjaHtyLmxpY2Vuc2VLZXlEYXRhPW51bGx9ZWxzZSByLmxpY2Vuc2VLZXlEYXRhPW51bGx9KSgpfXRvZ2dsZUtleUZvcm1hdCgpe3RoaXMua2V5Rm9ybWF0PSJjb21iaW5lZCI9PT10aGlzLmtleUZvcm1hdD8ibGVnYWN5IjoiY29tYmluZWQi'@; put 'fW1heWJlU3BsaXRDb21iaW5lZEtleShyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpZighVVplKHIpKXJldHVybiExO2NvbnN0IG89eWllbGQgamxuKHIpO3JldHVybiEhbyYmKGkubGljZW5jZUtleVZhbHVlPW8ubGljZW5jZUtleSxpLmFjdGl2YXRpb25LZXlWYWx1ZT1v'@; put 'LmFjdGl2YXRpb25LZXksITApfSkoKX1jb3B5U3lzc2l0ZShyLGksbyl7Y29uc3QgYT1vLmpvaW4oIlxuIik7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoYSkudGhlbigoKT0+e3Iuc2V0QXR0cmlidXRlKCJzaGFwZSIsImNoZWNrIiksci5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaXMt'@; put 'c3VjY2VzcyIpLGkuaW5uZXJUZXh0PSJDb3BpZWQhIixzZXRUaW1lb3V0KCgpPT57ci5zZXRBdHRyaWJ1dGUoInNoYXBlIiwiY29weSIpLHIucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpLGkuaW5uZXJUZXh0PSJDb3B5IHRvIGNsaXBib2FyZCJ9LDFlMyl9KX1hcHBseUtleXMoKXt0aGlzLmFw'@; put 'cGx5aW5nS2V5cz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiYWRtaW4vcmVnaXN0ZXJrZXkiLHtrZXl1cGxvYWQ6W3tBQ1RJVkFUSU9OX0tFWTp0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZSxMSUNFTkNFX0tFWTp0aGlzLmxpY2VuY2VLZXlWYWx1ZX1dfSkudGhlbihpPT57aS5hZGFwdGVy'@; put 'UmVzcG9uc2UucmV0dXJuJiZpLmFkYXB0ZXJSZXNwb25zZS5yZXR1cm5bMF0mJiJTVUNDRVNTIj09PWkuYWRhcHRlclJlc3BvbnNlLnJldHVyblswXS5NU0cmJnRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi8iKS50aGVuKCgpPT57d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfSl9KS5maW5h'@; put 'bGx5KCgpPT57dGhpcy5hcHBseWluZ0tleXM9ITF9KX1vbkZpbGVDYXB0dXJlKHIsaT0hMSl7dmFyIG89dGhpcztsZXQgYT1pP3JbMF06ci50YXJnZXQuZmlsZXNbMF07aWYodGhpcy5saWNlbmNlZmlsZS5maWxlbmFtZT1hLm5hbWUsIWEpcmV0dXJuO3RoaXMubGljZW5jZUZpbGVMb2FkaW5n'@; put 'PSEwO2NvbnN0IGw9bmV3IEZpbGVSZWFkZXI7bC5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgdT1DcihmdW5jdGlvbiooZyl7aWYoby5saWNlbmNlRmlsZUVycm9yPSJFcnJvciByZWFkaW5nIGZpbGUuIiwhZ3x8IWcudGFyZ2V0fHwyIT1nLnRhcmdldC5yZWFkeVN0YXRlfHxnLnRhcmdldC5lcnJv'@; put 'cnx8IWcudGFyZ2V0LnJlc3VsdClyZXR1cm47by5saWNlbmNlRmlsZUxvYWRpbmc9ITEsby5saWNlbmNlRmlsZUVycm9yPXZvaWQgMDtjb25zdCBFPWcudGFyZ2V0LnJlc3VsdC50b1N0cmluZygpLnRyaW0oKS5zcGxpdCgiXG4iKTsoMSE9PUUubGVuZ3RofHwhKHlpZWxkIG8ubWF5YmVTcGxp'@; put 'dENvbWJpbmVkS2V5KEVbMF0pKSkmJihvLmFjdGl2YXRpb25LZXlWYWx1ZT1FWzFdLG8ubGljZW5jZUtleVZhbHVlPUVbMF0pLHlpZWxkIG8ucmVmcmVzaEtleVByZXZpZXcoKX0pO3JldHVybiBmdW5jdGlvbihnKXtyZXR1cm4gdS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGwucmVhZEFz'@; put 'VGV4dChhKX1zd2l0Y2hUeXBlKHIpe3RoaXMuaW5wdXRUeXBlPXJ9Z2V0IGRpc2FibGVBcHBseUJ1dHRvbigpe3JldHVybiEhKHRoaXMubGljZW5jZUtleVZhbHVlLmxlbmd0aDwxfHx0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZS5sZW5ndGg8MXx8dGhpcy5saWNlbmNlS2V5VmFsdWU9PT10aGlz'@; put 'LmN1cnJlbnRMaWNlbmNlS2V5JiZ0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT09PXRoaXMuY3VycmVudEFjdGl2YXRpb25LZXl8fHRoaXMucHJvdG9jb2xNaXNtYXRjaCl9Z2V0IHByb3RvY29sTWlzbWF0Y2goKXtyZXR1cm4oKG4sZSx0KT0+e2NvbnN0IHI9dGhpcy5saWNlbmNlS2V5VmFsdWUu'@; put 'dHJpbSgpLGk9ZS50cmltKCk7aWYoIXJ8fCFpKXJldHVybiBudWxsO2NvbnN0IG89ciE9PWk7cmV0dXJuIG8mJiF0PyJyZXF1aXJlc0h0dHBzIjohbyYmdD8icmVxdWlyZXNIdHRwIjpudWxsfSkoMCx0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZSwhKCF3aW5kb3cuY3J5cHRvfHwhd2luZG93LmNy'@; put 'eXB0by5zdWJ0bGUpKX1nZXQgZW5hYmxlZEZlYXR1cmVzKCl7cmV0dXJuKG49PntpZighbilyZXR1cm5bXTtjb25zdCBlPXZ3ZShuKTtyZXR1cm4gVWxuLmZpbHRlcigoe2tleTp0fSk9PmVbdF0pLm1hcCgoe2xhYmVsOnR9KT0+dCl9KSh0aGlzLmxpY2Vuc2VLZXlEYXRhPy5mZWF0dXJlcyl9'@; put 'c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUocDEpLHplKHZjKSx6ZShGMiksemUoaWMpLHplKHV6KSx6ZShiYmUpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWxpY2Vuc2luZyJdXSxzdGFu'@; put 'ZGFsb25lOiExLGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWyJjb3B5SWNvbiIsIiJdLFsiY29weVRvb2x0aXAiLCIiXSxbImxpY2VuY2VGaWxlIiwiIl0sWyJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxv'@; put 'Y2siLDMsIm5nU3dpdGNoIl0sWzEsImNhcmQtdGV4dCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMSwibS0wIiwibXQtMTAiXSxbMSwibS0wIl0sWzMsIm1pc3NrZXkiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtdG9wLXJpZ2h0IiwzLCJj'@; put 'bGljayJdLFsic2hhcGUiLCJjb3B5Iiwic2l6ZSIsIjE1IiwxLCJjdXJzb3ItcG9pbnRlciJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbImNsclRhYkxpbmsiLCIiXSxbInR5cGUiLCJmaWxlIiwiaGlkZGVuIiwiIiwzLCJjaGFuZ2UiXSxbImFwcEZpbGVEcm9wIiwiIiwxLCJkcm9wLWFyZWEi'@; put 'LDMsImNsaWNrIiwiZmlsZURyb3AiXSxbImNsYXNzIiwic3Bpbm5lci1zbSIsNCwibmdJZiJdLFsiY2xhc3MiLCJrZXktZGV0YWlscyIsNCwibmdJZiJdLFsxLCJjYXJkLWZvb3RlciIsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJh'@; put 'cHBseS1rZXlzIiwzLCJjbGljayIsImNsckxvYWRpbmciLCJkaXNhYmxlZCJdLFsicm91dGVyTGluayIsIi8iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLWxpbmsiLDQsIm5nSWYiXSxbImNsYXNzIiwia2V5LWVycm9yIHByb3RvY29sLW1pc21hdGNoLXdhcm5pbmciLDQsIm5nSWYiXSxbImNs'@; put 'YXNzIiwia2V5LWVycm9yIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImtleS1lcnJvciIsMywiaW5uZXJIVE1MIiw0LCJuZ0lmIl0sWzEsImtleS1lcnJvciJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzaXplIiwiMjYiLDEsImlzLWVycm9yIl0sWzEsImtleS1lcnJvciIsMywiaW5u'@; put 'ZXJIVE1MIl0sWyJjbGFzc2VzIiwiY29sb3ItZ3JlZW4iXSxbMSwic3Bpbm5lci1zbSJdLFsxLCJjbHItZm9ybSIsImNvbWJpbmVkLWtleS1mb3JtIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciJdLFsibmFtZSIsImNvbWJpbmVkLWtleS1hcmVhIiwicGxhY2Vob2xkZXIiLCJQYXN0ZSBs'@; put 'aWNlbmNlIGtleSBoZXJlIiwxLCJjbHItdGV4dGFyZWEiLDMsIm5nTW9kZWxDaGFuZ2UiLCJtb3VzZWxlYXZlIiwibmdNb2RlbCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLCJwLTAiLDMsImNsaWNrIl0sWzEsImNsci1mb3JtIiwibGljZW5zZS1rZXkt'@; put 'Zm9ybSJdLFsibmFtZSIsImxpY2Vuc2Uta2V5LWFyZWEiLCJwbGFjZWhvbGRlciIsIlBhc3RlIGxpY2VuY2Uga2V5IGhlcmUiLDEsImNsci10ZXh0YXJlYSIsMywibmdNb2RlbENoYW5nZSIsIm1vdXNlbGVhdmUiLCJuZ01vZGVsIl0sWzEsImNsci1mb3JtIiwiYWN0aXZhdGlvbi1rZXktZm9y'@; put 'bSJdLFsibmFtZSIsImFjdGl2YXRpb24ta2V5LWFyZWEiLCJwbGFjZWhvbGRlciIsIlBhc3RlIGFjdGl2YXRpb24ga2V5IGhlcmUiLDEsImNsci10ZXh0YXJlYSIsMywibmdNb2RlbENoYW5nZSIsIm1vdXNlbGVhdmUiLCJuZ01vZGVsIl0sWzEsImtleS1kZXRhaWxzIl0sWyJjZHMtdGV4dCIs'@; put 'InN1YnNlY3Rpb24iLDEsIm10LTE1IiwibWItMTAiXSxbImNsYXNzIiwibS0wIiw0LCJuZ0lmIl0sWyJyb3V0ZXJMaW5rIiwiLyIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiXSxbMSwia2V5LWVycm9yIiwicHJvdG9jb2wtbWlzbWF0Y2gtd2FybmluZyJdLFsic2hhcGUiLCJleGNsYW1h'@; put 'dGlvbi10cmlhbmdsZSIsInNpemUiLCIyNiIsMSwiY29sb3Itb3JhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiZZbigwLEljbiw0NSwxNiwiZGl2IiwzKSgxLERjbiwxLDAsImFwcC10ZXJtcyIsNCksMiZpJiYocnQoIm5nSWYiLCJyZWdpc3RlciIhPT1vLmFjdGlvbiksaWUo'@; put 'KSxydCgibmdJZiIsInJlZ2lzdGVyIj09PW8uYWN0aW9uKSl9LGRlcGVuZGVuY2llczpbUmYsWXMsQUUsU1UsTGIsbHUsb2MsSWIsWGwsZDQsY3UsJDAsaW0seHYsa3YsJGIsQXYsVHYsWmIsejIsUDIsY2NuLF9XXSxzdHlsZXM6WyIua2V5LWVycm9yIGNsci1pY29ue3ZlcnRpY2FsLWFsaWdu'@; put 'OmJvdHRvbTttYXJnaW4tcmlnaHQ6MTBweH1cbiJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpLGNhbkFjdGl2YXRlOlskbWVdLGNhbkRlYWN0aXZhdGU6WyRtZV19XTtsZXQgT2NuPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFj'@; put 'PWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbV2QuZm9yQ2hpbGQoTGNuKSxXZF19KSl9cmV0dXJuIG4oKSxlfSkoKSxOY249KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgp'@; put 'PT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxbyxoZCxxMCxPY24sJHhdfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgRmNuPSgpPT4oe3N0YW5kYWxv'@; put 'bmU6ITB9KSxKWmU9KG4sZSx0KT0+KHthZGRlZFJvdzpuLGRlbGV0ZWRSb3c6ZSx1cGRhdGVkUm93OnR9KSxlR2U9bj0+KHsiY2ggdG9vbHRpcCB0b29sdGlwLW1kIHRvb2x0aXAtdG9wLXJpZ2h0IjpufSk7ZnVuY3Rpb24gUGNuKG4sZSl7aWYoMSZuJiYoSigwLCJ0ZCIsMTUpLFNlKDEpLHRl'@; put 'KCkpLDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdCxyPVRlKCk7cnQoInJvdXRlckxpbmsiLCIvc3RhZ2UvIityLmpzUGFyYW1zW3RdKSxpZSgpLFNyKCIgIixyLmpzUGFyYW1zW3RdLCIgIil9fWZ1bmN0aW9uIEhjbihuLGUpe2lmKDEmbiYmKEooMCwidGQiLDQpLFNlKDEpLHRlKCkpLDIm'@; put 'bil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdCxyPVRlKCk7aWUoKSxTcigiICIsci5qc1BhcmFtc1t0XSwiICIpfX1mdW5jdGlvbiBWY24obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQiLDQpLFNlKDIpLHRlKCksdnQoMyxQY24sMiwyLCJ0ZCIsMTUpLHZ0KDQsSGNuLDIsMSwidGQiLDQp'@; put 'LHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgyKSxwcih0KSxpZSgpLF90KHQuaW5jbHVkZXMoIlRBQkxFX0lEIik/MzotMSksaWUoKSxfdCh0LmluY2x1ZGVzKCJUQUJMRV9JRCIpPy0xOjQpfX1mdW5jdGlvbiBCY24obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQiLDQp'@; put 'LFNlKDIpLHRlKCksSigzLCJ0ZCIsNCksU2UoNCksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1UZSgzKTtpZSgyKSxwcih0KSxpZSgyKSxwcihyLnN1Ym1pdERldGFpbHNbdF0pfX1mdW5jdGlvbiBqY24obixlKXtpZigxJm4mJihKKDAsImNsci10YWItY29udGVudCIpKDEs'@; put 'ImRpdiIsMTgpKDIsInRhYmxlIiwzKSgzLCJ0aGVhZCIpKDQsInRyIikoNSwidGgiLDQpLFNlKDYsIk5hbWUiKSx0ZSgpLEooNywidGgiLDQpLFNlKDgsIlZhbHVlIiksdGUoKSgpKCksSig5LCJ0Ym9keSIpLF9vKDEwLEJjbiw1LDIsInRyIixudWxsLENvKSx0ZSgpKCkoKSgpKSwyJm4pe2Nv'@; put 'bnN0IHQ9VGUoMik7aWUoMTApLHlvKHQuc3VibWl0QXJyKX19ZnVuY3Rpb24gVWNuKG4sZSl7aWYoMSZuJiYoSigwLCJ0ciIpKDEsInRkIiw0KSxTZSgyKSx0ZSgpLEooMywidGQiLDQpLFNlKDQpLHRlKCkoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoMik7aWUoMikscHIodCks'@; put 'aWUoMikscHIoci5qc1BhcmFtc1t0XSl9fWZ1bmN0aW9uIHpjbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRhYnMiKSgxLCJjbHItdGFiIikoMiwiYnV0dG9uIiwxNiksU2UoMywiU3VibWl0dGVkIFRhYmxlIERldGFpbHMiKSx0ZSgpLFluKDQsamNuLDEyLDAsImNsci10YWItY29udGVudCIs'@; put 'MTcpLHRlKCksSig1LCJjbHItdGFiIikoNiwiYnV0dG9uIiwxNiksU2UoNywiQmFzZSBUYWJsZSBEZXRhaWxzIiksdGUoKSxKKDgsImNsci10YWItY29udGVudCIpKDksImRpdiIsMTgpKDEwLCJ0YWJsZSIsMykoMTEsInRoZWFkIikoMTIsInRyIikoMTMsInRoIiw0KSxTZSgxNCwiTmFtZSIp'@; put 'LHRlKCksSigxNSwidGgiLDQpLFNlKDE2LCJWYWx1ZSIpLHRlKCkoKSgpLEooMTcsInRib2R5IiksX28oMTgsVWNuLDUsMiwidHIiLG51bGwsQ28pLHRlKCkoKSgpKCkoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSg0KSxydCgiY2xySWZBY3RpdmUiLCEwKSxpZSgxNCkseW8odC5rZXlzQXJy'@; put 'YXkpfX1mdW5jdGlvbiBXY24obixlKXsxJm4mJihKKDAsInAiLDM4KSxTZSgxLCIgVGhlcmUgYXJlIG5vIGRldGFpbHMgdG8gc2hvdyAiKSx0ZSgpKX1mdW5jdGlvbiBZY24obixlKXtpZigxJm4mJihKKDAsImRpdiIsNjMpKDEsInNwYW4iKSxTZSgyLCJUYWJsZSBJZDoiKSx0ZSgpLEooMywi'@; put 'c3Ryb25nIiw2NCksU2UoNCksdGUoKSgpLEooNSwiZGl2IikoNiwic3BhbiIpLFNlKDcsIlN1Ym1pdHRlcjoiKSx0ZSgpLEooOCwic3BhbiIsNjUpLFNlKDkpLHRlKCkoKSxKKDEwLCJkaXYiKSgxMSwic3BhbiIpLFNlKDEyLCJTdWJtaXR0ZWQgb246IiksdGUoKSxKKDEzLCJzcGFuIiw2NSks'@; put 'U2UoMTQpLHRlKCkoKSxKKDE1LCJkaXYiKSgxNiwic3BhbiIpLFNlKDE3LCJTdWJtaXR0ZWQgUmVhc29uOiIpLHRlKCksSigxOCwic3BhbiIsNjUpLFNlKDE5KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtpZSgzKSxydCgicm91dGVyTGluayIsIi9zdGFnZS8iKyhudWxsPT10LnRhYmxl'@; put 'RGV0YWlscz9udWxsOnQudGFibGVEZXRhaWxzLlRBQkxFX0lEKSksaWUoKSxTcigiICIsbnVsbD09dC50YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5UQUJMRV9JRCwiICIpLGllKDUpLFNyKCIgIixudWxsPT10LnRhYmxlRGV0YWlscz9udWxsOnQudGFibGVEZXRhaWxzLlNVQk1J'@; put 'VFRFRF9CWV9OTSwiICIpLGllKDUpLFNyKCIgIixudWxsPT10LnRhYmxlRGV0YWlscz9udWxsOnQudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9PTl9EVFRNLCIgIiksaWUoNSksU3IoIiAiLG51bGw9PXQudGFibGVEZXRhaWxzP251bGw6dC50YWJsZURldGFpbHMuU1VCTUlUVEVEX1JFQVNPTl9U'@; put 'WFQsIiAiKX19ZnVuY3Rpb24gWmNuKG4sZSl7MSZuJiYoSigwLCJzcGFuIiw1NyksSXQoMSwiY2xyLWljb24iLDY2KSxTZSgyLCIgT25seSB0aGUgZmlyc3QgMTAwIGluc2VydHMsIHVwZGF0ZXMgb3IgZGVsZXRlcyBhcmUgZGlzcGxheWVkICIpLHRlKCkpfWZ1bmN0aW9uIEdjbihuLGUpe2lm'@; put 'KDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwzNSkoMSwiZGl2Iiw0MSkoMiwiZGl2Iiw0MiksdnQoMyxXY24sMiwwLCJwIiwzOCksdnQoNCxZY24sMjAsNSksdGUoKSxKKDUsImRpdiIsNDMpKDYsImRpdiIsNDQpKDcsImRpdiIsNDUpKDgsImRpdiIsNDYpKDksImJ1dHRvbiIsNDcpLHd0'@; put 'KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDQpO3JldHVybiBYZShpLmdvVG9CYXNlKG51bGw9PWkuanNQYXJhbXM/bnVsbDppLmpzUGFyYW1zLlRBQkxFX05NKSl9KSxTZSgxMCwiIFZpZXcgYmFzZSB0YWJsZSAiKSx0ZSgpLEooMTEsImJ1dHRvbiIsNDgpLHd0KCJjbGlj'@; put 'ayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDQpO3JldHVybiBYZShpLmdldFRhYmxlKGkudGFibGVJZCkpfSksU2UoMTIsIiBWaWV3IHN0YWdlZCBkYXRhICIpLHRlKCksSigxMywiYnV0dG9uIiw0OSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoNCk7cmV0'@; put 'dXJuIFhlKGkuZ29CYWNrKG51bGw9PWkuanNQYXJhbXM/bnVsbDppLmpzUGFyYW1zLlRBQkxFX05NKSl9KSxTZSgxNCwiIEVkaXQgYmFzZSB0YWJsZSAiKSx0ZSgpKCkoKSgpLEooMTUsImRpdiIsNTApKDE2LCJidXR0b24iLDUxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQp'@; put 'LFhlKFRlKDQpLmFwcHJvdmVUYWJsZSgpKX0pLFNlKDE3LCIgQUNDRVBUICIpLHRlKCksSigxOCwiYnV0dG9uIiw1Miksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSg0KS5yZWplY3RPcGVuPSEwKX0pLFNlKDE5LCIgUkVKRUNUICIpLHRlKCksSigyMCwiY2xyLXRv'@; put 'Z2dsZS1jb250YWluZXIiLDUzKSgyMSwiY2xyLXRvZ2dsZS13cmFwcGVyIikoMjIsImlucHV0Iiw1NCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoNCk7cmV0dXJuIGZpKG8uZm9ybWF0dGVkVmFsdWVzLGkpfHwoby5mb3JtYXR0ZWRWYWx1ZXM9aSks'@; put 'WGUoaSl9KSx3dCgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSg0KS5mb3JtYXR0aW5nQ2hhbmdlZCgpKX0pLHRlKCksSigyMywibGFiZWwiLDU1KSxTZSgyNCksdGUoKSgpKCkoKSxKKDI1LCJkaXYiLDU2KSx2dCgyNixaY24sMywwLCJzcGFuIiw1NyksSigyNywiZGl2'@; put 'IiwyNCkoMjgsImRpdiIsNTgpKDI5LCJzcGFuIiw1OSksU2UoMzAsIiBDaGFuZ2VkIFJvd3MgIiksSigzMSwic3BhbiIsNjApLFNlKDMyKSx0ZSgpKCksSigzMywic3BhbiIsNjEpLFNlKDM0LCIgQWRkZWQgUm93cyAiKSxKKDM1LCJzcGFuIiw2MCksU2UoMzYpLHRlKCkoKSxKKDM3LCJzcGFu'@; put 'Iiw2MiksU2UoMzgsIiBEZWxldGVkIFJvd3MgIiksSigzOSwic3BhbiIsNjApLFNlKDQwKSx0ZSgpKCkoKSgpKCkoKSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDQpO2llKDMpLF90KHQudGFibGVEZXRhaWxzPy0xOjMpLGllKCksX3QodC50YWJsZURldGFpbHM/NDotMSksaWUoMTIpLHJ0KCJj'@; put 'bHJMb2FkaW5nIix0LmFjY2VwdExvYWRpbmcpKCJkaXNhYmxlZCIsIXQubG9hZGluZ1RhYmxlfHwiTk8iPT09KG51bGw9PXQucGFyYW1zP251bGw6dC5wYXJhbXMuSVNBUFBST1ZFUil8fHQubm9DaGFuZ2VzKSxpZSgyKSxydCgiZGlzYWJsZWQiLCF0LmxvYWRpbmdUYWJsZXx8Ik5PIj09PShu'@; put 'dWxsPT10LnBhcmFtcz9udWxsOnQucGFyYW1zLklTQVBQUk9WRVIpfHx0Lm5vQ2hhbmdlcyksaWUoNCksZGkoIm5nTW9kZWwiLHQuZm9ybWF0dGVkVmFsdWVzKSxpZSgyKSxwcih0LmZvcm1hdHRlZFZhbHVlcz8iRm9ybWF0dGVkIjoiVW5mb3JtYXR0ZWQiKSxpZSgyKSxfdCh0LmRpZmZzTGlt'@; put 'aXQ/MjY6LTEpLGllKDYpLHByKHQubGVucy51cGRhdGVkKSxpZSg0KSxwcih0LmxlbnMubmV3KSxpZSg0KSxwcih0LmxlbnMuZGVsZXRlZCl9fWZ1bmN0aW9uICRjbihuLGUpezEmbiYmKEooMCwiZGl2Iiw2NSkoMSwicCIsNjgpLFNlKDIsIkxvYWRpbmcgdGFibGUiKSx0ZSgpKCkpfWZ1bmN0'@; put 'aW9uIHFjbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwzNikoMSwic3BhbiIsNjcpLFNlKDIsIiBMb2FkaW5nLi4uICIpLHRlKCksdnQoMywkY24sMywwLCJkaXYiLDY1KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoMyksX3QodC5sb2FkaW5nVGFibGU/LTE6Myl9fWZ1bmN0aW9uIEtj'@; put 'bihuLGUpezEmbiYmKEooMCwicCIsMzgpLFNlKDEsIiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBzaG93ICIpLHRlKCkpfWZ1bmN0aW9uIFhjbihuLGUpe2lmKDEmbiYmKEooMCwidGgiLDQpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLHByKHQpfX1mdW5jdGlv'@; put 'biBRY24obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDcwKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW5kZXgscj1UZSgyKS4kaW5kZXgsaT1UZSg0KTtpZSgpLFNyKCJPcmlnaW5hbCB2YWx1ZSBpczogIixpLmFyck9mQ2hhbmdlc1tyXVt0XSl9fWZ1bmN0aW9uIEpjbihuLGUp'@; put 'e2lmKDEmbiYmKEooMCwidGQiLDY5KSxTZSgxKSx2dCgyLFFjbiwyLDEsInNwYW4iLDcwKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1lLiRpbmRleCxpPVRlKDIpLiRpbmRleCxvPVRlKDQpO3J0KCJuZ0NsYXNzIix0NCgzLGVHZSwxPT1vLmFyckNoYW5nZWRbaV1bcl0mJiJ1'@; put 'cGRhdGVkIj09by5jaEFycltpXSkpLGllKCksU3IoIiAiLG8uZGlmZlRhYmxlLmRhdGFbaV1bdF0sIiAiKSxpZSgpLF90KDE9PW8uYXJyQ2hhbmdlZFtpXVtyXSYmInVwZGF0ZWQiPT1vLmNoQXJyW2ldPzI6LTEpfX1mdW5jdGlvbiBldW4obixlKXtpZigxJm4mJl9vKDAsSmNuLDMsNSwidGQi'@; put 'LDY5LENvKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW5kZXg7eW8oVGUoNCkucm93S2V5c1t0XSl9fWZ1bmN0aW9uIHR1bihuLGUpe2lmKDEmbiYmKEooMCwidGQiLDQpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKDIpLiRpbmRleCxpPVRlKDQpO2llKCksU3IoIiAi'@; put 'LGkuZGlmZlRhYmxlLmRhdGFbcl1bdF0sIiAiKX19ZnVuY3Rpb24gbnVuKG4sZSl7aWYoMSZuJiZfbygwLHR1biwyLDEsInRkIiw0LENvKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW5kZXg7eW8oVGUoNCkucm93S2V5c1t0XSl9fWZ1bmN0aW9uIHJ1bihuLGUpe2lmKDEmbiYmKEooMCwidHIiLDQw'@; put 'KSx2dCgxLGV1biwyLDApLHZ0KDIsbnVuLDIsMCksdGUoKSksMiZuKXtjb25zdCB0PWUuJGluZGV4LHI9VGUoNCk7cnQoIm5nQ2xhc3MiLHRJKDMsSlplLCJhZGRlZCI9PXIuY2hBcnJbdF0sImRlbGV0ZWQiPT1yLmNoQXJyW3RdLCJ1cGRhdGVkIj09ci5jaEFyclt0XSkpLGllKCksX3QoInVw'@; put 'ZGF0ZWQiPT09ci5jaEFyclt0XT8xOi0xKSxpZSgpLF90KCJ1cGRhdGVkIiE9PXIuY2hBcnJbdF0/MjotMSl9fWZ1bmN0aW9uIGl1bihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwyMikoMSwiZGl2IiwyMykoMiwiZGl2IiwyNCkoMywiZGl2IiwyNSkoNCwic3BhbiIsMjYp'@; put 'LHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMykuZ29Ub0FwcHJvdmFsc0xpc3QoKSl9KSxJdCg1LCJjbHItaWNvbiIsMjcpLFNlKDYsIkJhY2sgdG8gYXBwcm92YWxzIGxpc3QgIiksdGUoKSgpLEooNywiZGl2IiwyOCkoOCwiaDMiLDI5KSxTZSg5KSx0ZSgpKCks'@; put 'SigxMCwiZGl2IiwzMCkoMTEsImEiLDMxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLmdldERldGFpbHMoKSl9KSxJdCgxMiwiY2xyLWljb24iLDMyKSx0ZSgpKCkoKSxKKDEzLCJwIiwzMyksU2UoMTQpLHRlKCkoKSxKKDE1LCJkaXYiLDM0KSx2dCgxNixH'@; put 'Y24sNDEsMTEsImRpdiIsMzUpLHRlKCksdnQoMTcscWNuLDQsMSwiZGl2IiwzNiksSigxOCwiZGl2IiwzNyksdnQoMTksS2NuLDIsMCwicCIsMzgpLEooMjAsInRhYmxlIiwzKSgyMSwidGhlYWQiKSgyMiwidHIiLDM5KSxfbygyMyxYY24sMiwxLCJ0aCIsNCxDbyksdGUoKSgpLEooMjUsInRi'@; put 'b2R5IiksX28oMjYscnVuLDMsNywidHIiLDQwLENvKSx0ZSgpKCkoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgzKTtpZSg5KSxTcigiICIsbnVsbD09dC5qc1BhcmFtcz9udWxsOnQuanNQYXJhbXMuVEFCTEVfTk0sIiAiKSxpZSg1KSxTcigiICIsbnVsbD09dC5qc1BhcmFtcz9udWxsOnQuanNQ'@; put 'YXJhbXMuVEFCTEVfREVTQywiICIpLGllKDIpLF90KHQubG9hZGVkPzE2Oi0xKSxpZSgpLF90KHQubG9hZGluZ1RhYmxlPy0xOjE3KSxpZSgyKSxfdCh0LmxvYWRpbmdUYWJsZSYmdC5ub0NoYW5nZXM/MTk6LTEpLGllKDQpLHlvKHQucm93SGVhZGVyKSxpZSgzKSx5byh0LnJvd0tleXMpfX1m'@; put 'dW5jdGlvbiBvdW4obixlKXtpZigxJm4mJihKKDAsImRpdiIsMTkpLHZ0KDEsaXVuLDI4LDUsImRpdiIsMjIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLF90KHQubG9hZGVkPzE6LTEpfX1mdW5jdGlvbiBhdW4obixlKXsxJm4mJihKKDAsInNwYW4iLDY3KSxTZSgxLCIgTG9hZGlu'@; put 'Zy4uLiAiKSx0ZSgpKX1mdW5jdGlvbiBzdW4obixlKXsxJm4mJihKKDAsImRpdiIpKDEsImgzIiksU2UoMiwiTG9hZGluZyBwcmV2aWV3IiksdGUoKSgpKX1mdW5jdGlvbiBsdW4obixlKXtpZigxJm4mJihKKDAsImRpdiIsMjEpLHZ0KDEsYXVuLDIsMCwic3BhbiIsNjcpLHZ0KDIsc3VuLDMs'@; put 'MCwiZGl2IiksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCksX3QodC5sb2FkZWQ/LTE6MSksaWUoKSxfdCh0LmxvYWRlZD8tMToyKX19ZnVuY3Rpb24gY3VuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDE0KSx2dCgxLG91biwyLDEsImRpdiIsMTkpLEooMiwiZGl2IiwyMCksdnQoMyxs'@; put 'dW4sMywyLCJkaXYiLDIxKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC5sb2FkZWQ/MTotMSksaWUoMiksX3QodC5sb2FkZWQ/LTE6Myl9fWZ1bmN0aW9uIHV1bihuLGUpezEmbiYmKEooMCwic3BhbiIsNTcpLEl0KDEsImNsci1pY29uIiw2NiksU2UoMiwiIE9ubHkgdGhl'@; put 'IGZpcnN0IDEwMCBpbnNlcnRzLCB1cGRhdGVzIG9yIGRlbGV0ZXMgYXJlIGRpc3BsYXllZCAiKSx0ZSgpKX1mdW5jdGlvbiBkdW4obixlKXsxJm4mJkl0KDAsImRpdiIsMzUpfWZ1bmN0aW9uIGh1bihuLGUpezEmbiYmKEooMCwiZGl2Iiw2NSkoMSwicCIsNjgpLFNlKDIsIkxvYWRpbmcgdGFi'@; put 'bGUiKSx0ZSgpKCkpfWZ1bmN0aW9uIGZ1bihuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw4MikoMSwic3BhbiIsNjcpLFNlKDIsIiBMb2FkaW5nLi4uICIpLHRlKCksdnQoMyxodW4sMywwLCJkaXYiLDY1KSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoMyksX3QodC5sb2FkaW5nVGFibGU/'@; put 'LTE6Myl9fWZ1bmN0aW9uIHB1bihuLGUpe2lmKDEmbiYmKEooMCwidGgiLDQpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgpLHByKHQpfX1mdW5jdGlvbiBndW4obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDcwKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUo'@; put 'KS4kaW5kZXgscj1UZSgyKS4kaW5kZXgsaT1UZSg0KTtpZSgpLFNyKCJPcmlnaW5hbCB2YWx1ZSBpczogIixpLmFyck9mQ2hhbmdlc1tyXVt0XSl9fWZ1bmN0aW9uIG11bihuLGUpe2lmKDEmbiYmKEooMCwidGQiLDY5KSxTZSgxKSx2dCgyLGd1biwyLDEsInNwYW4iLDcwKSx0ZSgpKSwyJm4p'@; put 'e2NvbnN0IHQ9ZS4kaW1wbGljaXQscj1lLiRpbmRleCxpPVRlKDIpLiRpbmRleCxvPVRlKDQpO3J0KCJuZ0NsYXNzIix0NCgzLGVHZSwxPT1vLmFyckNoYW5nZWRbaV1bcl0mJiJ1cGRhdGVkIj09by5jaEFycltpXSkpLGllKCksU3IoIiAiLG8uZGlmZlRhYmxlLmRhdGFbaV1bdF0sIiAiKSxp'@; put 'ZSgpLF90KDE9PW8uYXJyQ2hhbmdlZFtpXVtyXSYmInVwZGF0ZWQiPT1vLmNoQXJyW2ldPzI6LTEpfX1mdW5jdGlvbiB2dW4obixlKXtpZigxJm4mJl9vKDAsbXVuLDMsNSwidGQiLDY5LENvKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW5kZXg7eW8oVGUoNCkucm93S2V5c1t0XSl9fWZ1bmN0aW9u'@; put 'IF91bihuLGUpe2lmKDEmbiYmKEooMCwidGQiLDQpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPVRlKDIpLiRpbmRleCxpPVRlKDQpO2llKCksU3IoIiAiLGkuZGlmZlRhYmxlLmRhdGFbcl1bdF0sIiAiKX19ZnVuY3Rpb24geXVuKG4sZSl7aWYoMSZuJiZfbygwLF91'@; put 'biwyLDEsInRkIiw0LENvKSwyJm4pe2NvbnN0IHQ9VGUoKS4kaW5kZXg7eW8oVGUoNCkucm93S2V5c1t0XSl9fWZ1bmN0aW9uIGJ1bihuLGUpe2lmKDEmbiYmKEooMCwidHIiLDQwKSx2dCgxLHZ1biwyLDApLHZ0KDIseXVuLDIsMCksdGUoKSksMiZuKXtjb25zdCB0PWUuJGluZGV4LHI9VGUo'@; put 'NCk7cnQoIm5nQ2xhc3MiLHRJKDMsSlplLCJhZGRlZCI9PXIuY2hBcnJbdF0sImRlbGV0ZWQiPT1yLmNoQXJyW3RdLCJ1cGRhdGVkIj09ci5jaEFyclt0XSkpLGllKCksX3QoInVwZGF0ZWQiPT09ci5jaEFyclt0XT8xOi0xKSxpZSgpLF90KCJ1cGRhdGVkIiE9PXIuY2hBcnJbdF0/MjotMSl9'@; put 'fWZ1bmN0aW9uIHd1bihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2Iiw3MykoMSwiZGl2Iiw3NCkoMiwiZGl2IiwyNCkoMywiZGl2IiwyNSkoNCwic3BhbiIsNzUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMykuZ29Ub1N1Ym1pdExpc3QoKSl9'@; put 'KSxJdCg1LCJjZHMtaWNvbiIsNzYpLFNlKDYsIkJhY2sgdG8gc3VibWl0dGVkIGxpc3QgIiksdGUoKSgpLEooNywiZGl2Iiw3NykoOCwiaDMiLDc4KSxTZSg5KSx0ZSgpKCksSigxMCwiZGl2IiwzMCkoMTEsImEiLDMxKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRl'@; put 'KDMpLnRhYmxlRmxhZz0hMCl9KSxJdCgxMiwiY2xyLWljb24iLDMyKSx0ZSgpKCkoKSxKKDEzLCJwIiw3OSksU2UoMTQpLHRlKCkoKSxKKDE1LCJkaXYiLDQxKSgxNiwiZGl2Iiw0MikoMTcsImRpdiIsNjMpKDE4LCJzcGFuIiksU2UoMTksIlRhYmxlIElkOiIpLHRlKCksSigyMCwic3Ryb25n'@; put 'Iiw2NCkoMjEsInNwYW4iKSxTZSgyMiksdGUoKSgpKCksSigyMywiZGl2IikoMjQsInNwYW4iKSxTZSgyNSwiU3VibWl0dGVkIG9uOiIpLHRlKCksSigyNiwic3BhbiIsNjUpLFNlKDI3KSx0ZSgpKCksSigyOCwiZGl2IikoMjksInNwYW4iKSxTZSgzMCwiU3VibWl0IE1lc3NhZ2U6IiksdGUo'@; put 'KSxKKDMxLCJzcGFuIiksU2UoMzIpLHRlKCkoKSgpLEooMzMsImRpdiIsNDMpKDM0LCJkaXYiLDQ0KSgzNSwiZGl2Iiw0NSkoMzYsImRpdiIsNDYpKDM3LCJidXR0b24iLDQ3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgzKTtyZXR1cm4gWGUoaS5nb1RvQmFzZShp'@; put 'LnN1Yk9iai5iYXNlKSl9KSxTZSgzOCwiIFZpZXcgYmFzZSB0YWJsZSAiKSx0ZSgpLEooMzksImJ1dHRvbiIsNDgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDMpO3JldHVybiBYZShpLmdldFRhYmxlKGkuc3ViT2JqLnRhYmxlSWQpKX0pLFNlKDQwLCIgVmlldyBz'@; put 'dGFnZWQgZGF0YSAiKSx0ZSgpLEooNDEsImJ1dHRvbiIsNDkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDMpO3JldHVybiBYZShpLmdvQmFjayhpLnN1Yk9iai5iYXNlKSl9KSxTZSg0MiwiIEVkaXQgYmFzZSB0YWJsZSAiKSx0ZSgpKCkoKSgpLEooNDMsImRpdiIs'@; put 'NTYpLHZ0KDQ0LHV1biwzLDAsInNwYW4iLDU3KSxKKDQ1LCJkaXYiLDI0KSg0NiwiZGl2Iiw1OCkoNDcsInNwYW4iLDU5KSxTZSg0OCwiIENoYW5nZWQgUm93cyAiKSxKKDQ5LCJzcGFuIiw2MCksU2UoNTApLHRlKCkoKSxKKDUxLCJzcGFuIiw2MSksU2UoNTIsIiBBZGRlZCBSb3dzICIpLEoo'@; put 'NTMsInNwYW4iLDYwKSxTZSg1NCksdGUoKSgpLEooNTUsInNwYW4iLDYyKSxTZSg1NiwiIERlbGV0ZWQgUm93cyAiKSxKKDU3LCJzcGFuIiw2MCksU2UoNTgpLHRlKCkoKSgpKCkoKSxKKDU5LCJkaXYiLDQ0KSg2MCwiY2xyLXRvZ2dsZS1jb250YWluZXIiLDgwKSg2MSwiY2xyLXRvZ2dsZS13'@; put 'cmFwcGVyIikoNjIsImlucHV0Iiw1NCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMyk7cmV0dXJuIGZpKG8uZm9ybWF0dGVkVmFsdWVzLGkpfHwoby5mb3JtYXR0ZWRWYWx1ZXM9aSksWGUoaSl9KSx3dCgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVy'@; put 'biBZZSh0KSxYZShUZSgzKS5mb3JtYXR0aW5nQ2hhbmdlZCgpKX0pLHRlKCksSig2MywibGFiZWwiKSxTZSg2NCksdGUoKSgpKCkoKSgpKCksSig2NSwiZGl2Iiw4MSksdnQoNjYsZHVuLDEsMCwiZGl2IiwzNSksdGUoKSx2dCg2NyxmdW4sNCwxLCJkaXYiLDgyKSxKKDY4LCJkaXYiLDgzKSg2'@; put 'OSwidGFibGUiLDMpKDcwLCJ0aGVhZCIpKDcxLCJ0ciIsMzkpLF9vKDcyLHB1biwyLDEsInRoIiw0LENvKSx0ZSgpKCksSig3NCwidGJvZHkiKSxfbyg3NSxidW4sMyw3LCJ0ciIsNDAsQ28pLHRlKCkoKSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDMpO2llKDkpLFNyKCIgIix0LnN1Yk9iai5i'@; put 'YXNlLCIgIiksaWUoNSksU3IoIiAiLHQudGFibGVEZXNjcmlwdGlvbiwiICIpLGllKDYpLHJ0KCJyb3V0ZXJMaW5rIiwiL3N0YWdlLyIrdC5zdWJPYmoudGFibGVJZCksaWUoMiksU3IoIiAiLHQuc3ViT2JqLnRhYmxlSWQpLGllKDUpLFNyKCIgIix0LnN1Yk9iai5zdWJtaXR0ZWQsIiAiKSxp'@; put 'ZSg1KSxTcigiICIsdC5zdWJPYmouc3VibWl0UmVhc29uLCIgIiksaWUoMTIpLF90KHQuZGlmZnNMaW1pdD80NDotMSksaWUoNikscHIodC5sZW5zLnVwZGF0ZWQpLGllKDQpLHByKHQubGVucy5uZXcpLGllKDQpLHByKHQubGVucy5kZWxldGVkKSxpZSg0KSxkaSgibmdNb2RlbCIsdC5mb3Jt'@; put 'YXR0ZWRWYWx1ZXMpLGllKDIpLHByKHQuZm9ybWF0dGVkVmFsdWVzPyJGb3JtYXR0ZWQiOiJVbmZvcm1hdHRlZCIpLGllKDIpLF90KHQubG9hZGVkPzY2Oi0xKSxpZSgpLF90KHQubG9hZGluZ1RhYmxlPy0xOjY3KSxpZSg1KSx5byh0LnJvd0hlYWRlciksaWUoMykseW8odC5yb3dLZXlzKX19'@; put 'ZnVuY3Rpb24gQ3VuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDcxKSx2dCgxLHd1biw3NywxNCwiZGl2Iiw3MyksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCksX3QodC5sb2FkZWQ/MTotMSl9fWZ1bmN0aW9uIFN1bihuLGUpezEmbiYmKEooMCwiZGl2IikoMSwiaDMiKSxTZSgyLCJM'@; put 'b2FkaW5nIHN1Ym1pdHRlZCB0YWJsZSIpLHRlKCkoKSl9ZnVuY3Rpb24gRXVuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDcyKSgxLCJkaXYiLDg0KSgyLCJzcGFuIiw2NyksU2UoMywiIExvYWRpbmcuLi4gIiksdGUoKSx2dCg0LFN1biwzLDAsImRpdiIpLHRlKCkoKSksMiZuKXtjb25zdCB0'@; put 'PVRlKDIpO2llKDQpLF90KHQubG9hZGVkPy0xOjQpfX1mdW5jdGlvbiBNdW4obixlKXtpZigxJm4mJihKKDAsImRpdiIpLHZ0KDEsQ3VuLDIsMSwiZGl2Iiw3MSksdnQoMixFdW4sNSwxLCJkaXYiLDcyKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLF90KHQubG9hZGVkPzE6LTEpLGll'@; put 'KCksX3QodC5sb2FkZWQ/LTE6Mil9fWxldCB0R2U9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPXIsdGhpcy5zYXNTZXJ2aWNlPWksdGhpcy5ldmVudFNlcnZpY2U9byx0aGlzLnJvdXRlcj1hLHRoaXMucm91dGU9bCx0aGlz'@; put 'LmRldGFpbHNPcGVuPSExLHRoaXMucmVqZWN0T3Blbj0hMSx0aGlzLmxlbnM9e25ldzowLHVwZGF0ZWQ6MCxkZWxldGVkOjB9LHRoaXMubG9hZGVkPSExLHRoaXMubG9hZGluZ1RhYmxlPSExLHRoaXMuc3VibWl0UmVhc29uPSIiLHRoaXMuaW5zdGFuY2U9ImhvdEluc3RhbmNlIix0aGlzLmFj'@; put 'Y2VwdExvYWRpbmc9ITEsdGhpcy5yZWplY3RMb2FkaW5nPSExLHRoaXMuc3VibWl0dGVkPSExLHRoaXMudGFibGVGbGFnPSExLHRoaXMucm93S2V5cz1bXSx0aGlzLmNoQXJyPVtdLHRoaXMuc2Vjb25kT3Blbj0hMSx0aGlzLmZvcm1hdHRlZFZhbHVlcz0hMCx0aGlzLmNoYW5nZXNBcnI9W10s'@; put 'dGhpcy5kaWZmVGFibGU9e2RhdGE6W119LHRoaXMuZGlmZnNMaW1pdD0hMSx0aGlzLnJlY29yZHNMaW1pdD0xMDAsdGhpcy5yZWZyZXNoU3RhcnR1cHNlcnZpY2VBZnRlckFwcHJvdmU9ITF9Z2V0IG5vQ2hhbmdlcygpe3JldHVybiAwPT09dGhpcy5sZW5zLm5ldyYmMD09PXRoaXMubGVucy51'@; put 'cGRhdGVkJiYwPT09dGhpcy5sZW5zLmRlbGV0ZWR9Z29Ub0Jhc2Uocil7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrcil9Z29Ub0FwcHJvdmFsc0xpc3QoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9yZXZpZXcvYXBwcm92ZSIpfWdldFRhYmxlKHIpe3RoaXMu'@; put 'cm91dGUubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrcil9Z29CYWNrKHIpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3IpfWdvVG9WaWV3ZXIoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1zaG93RGV0YWlsc1NlbGVjdChyKXtyLnByZXZlbnRE'@; put 'ZWZhdWx0KCksdGhpcy50YWJsZUZsYWc9IXRoaXMudGFibGVGbGFnfWdldERldGFpbHMoKXt0aGlzLmRldGFpbHNPcGVuPSEwfW9uSG90U2VsZWN0aW9uKHIpe3RoaXMuaG90U2VsZWN0aW9uPXIuc2xpY2UoMCw0KX1vbkhvdERlc2VsZWN0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuaG90U2Vs'@; put 'ZWN0aW9uPW51bGx9LDEwMCl9cmVqZWN0aW5nKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7ci5yZWplY3RMb2FkaW5nPSEwLHIuc3VibWl0UmVhc29uPWx6ZShyLnN1Ym1pdFJlYXNvbi5yZXBsYWNlKC9cbi9nLCIuICIpKTtsZXQgaT17U1RQX0FDVElPTjoiUkVKRUNUX1RB'@; put 'QkxFIixUQUJMRTpyLnRhYmxlSWQsU1RQX1JFQVNPTjpyLnN1Ym1pdFJlYXNvbn07eWllbGQgci5zYXNTdG9yZVNlcnZpY2UucmVqZWN0aW5nKGksIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvcmVqZWN0aW9uIikudGhlbihvPT57ci5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvcmV2aWV3L2hp'@; put 'c3RvcnkiKX0pLmNhdGNoKG89PntyLmFjY2VwdExvYWRpbmc9ITEsci5yZWplY3RMb2FkaW5nPSExfSl9KSgpfWFwcHJvdmVUYWJsZSgpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3IuYWNjZXB0TG9hZGluZz0hMDtsZXQgaT17QUNUSU9OOiJBUFBST1ZFX1RBQkxFIixUQUJM'@; put 'RTpyLnRhYmxlSWQsRElGRlRJTUU6ci5wYXJhbXM/LkRJRkZUSU1FLExJQkRTOnIucGFyYW1zPy5MSUJEU307eWllbGQgci5zYXNTdG9yZVNlcnZpY2UuYXBwcm92ZVRhYmxlKGksIlNBU0NvbnRyb2xUYWJsZSIsImF1ZGl0b3JzL3Bvc3RkYXRhIikudGhlbihvPT57ci5yZWZyZXNoU3RhcnR1'@; put 'cHNlcnZpY2VBZnRlckFwcHJvdmUmJnIuc2FzU2VydmljZS5yZWxvYWRTdGFydHVwRGF0YSgpLHIucm91dGUubmF2aWdhdGVCeVVybCgiL3Jldmlldy9oaXN0b3J5Iil9KS5jYXRjaChvPT57ci5hY2NlcHRMb2FkaW5nPSExfSl9KSgpfWdvVG9TdWJtaXRMaXN0KCl7dGhpcy5yb3V0ZS5uYXZp'@; put 'Z2F0ZUJ5VXJsKCIvcmV2aWV3L3N1Ym1pdHRlZCIpfWNhbGxDaGFuZ2VzSW5mbyhyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXt5aWVsZCBpLnNhc1N0b3JlU2VydmljZS5nZXRDaGFuZ2VJbmZvKHIpLnRoZW4obz0+e2kudGFibGVEZXRhaWxzPW8uanNwYXJhbXNbMF0saS5q'@; put 'c1BhcmFtcz1vLmpzcGFyYW1zWzBdO2xldCBhPVtdO2Zvcihjb25zdCBsIGluIGkuanNQYXJhbXMpaS5qc1BhcmFtcy5oYXNPd25Qcm9wZXJ0eShsKSYmYS5wdXNoKGwpO2kua2V5c0FycmF5PWEsIk1QRV9UQUJMRVMiPT09by5qc3BhcmFtc1swXS5CQVNFX0RTJiYoaS5yZWZyZXNoU3RhcnR1'@; put 'cHNlcnZpY2VBZnRlckFwcHJvdmU9ITApfSkuY2F0Y2gobz0+e2kuYWNjZXB0TG9hZGluZz0hMX0pLmZpbmFsbHkoKCk9PntpLmxvYWRlZD0hMH0pfSkoKX1mb3JtYXR0aW5nQ2hhbmdlZCgpe3RoaXMuY2FsY0RpZmYoKX1jYWxjRGlmZigpe2lmKCF0aGlzLnJlc3BvbnNlfHwhdGhpcy5yZXNw'@; put 'b25zZS5jb2xzKXJldHVybjtsZXQgcj10aGlzLnJlc3BvbnNlLm5ldyxpPXRoaXMucmVzcG9uc2UudXBkYXRlcyxvPXRoaXMucmVzcG9uc2UuZGVsZXRlZCxhPXRoaXMucmVzcG9uc2Uub3JpZ2luYWxzO3RoaXMuZm9ybWF0dGVkVmFsdWVzJiYocj10aGlzLnJlc3BvbnNlLmZtdF9uZXcsaT10'@; put 'aGlzLnJlc3BvbnNlLmZtdF91cGRhdGVzLG89dGhpcy5yZXNwb25zZS5mbXRfZGVsZXRlZCxhPXRoaXMucmVzcG9uc2UuZm10X29yaWdpbmFscyksdGhpcy5vcmlnaW5hbHM9YSx0aGlzLnJvd0tleXM9W107Zm9yKGxldCBDdD0wO0N0PGkubGVuZ3RoO0N0Kyspe2xldCBBdD1PYmplY3Qua2V5'@; put 'cyhpW0N0XSk7Zm9yKGxldCBLdD0wO0t0PEF0Lmxlbmd0aDtLdCsrKWlbQ3RdW0F0W0t0XV0hPT1hW0N0XVtBdFtLdF1dJiZ0aGlzLmNoYW5nZXNBcnIucHVzaCh7aW5kOkN0LGZpZWxkOkF0W0t0XSxwcm9wOmlbQ3RdW0F0W0t0XV0sb3JpZ2luYWw6YVtDdF1bQXRbS3RdXX0pfXRoaXMubGVu'@; put 'cz17bmV3OnRoaXMucGFyYW1zPy5OVU1fQURERUR8fDAsdXBkYXRlZDp0aGlzLnBhcmFtcz8uTlVNX1VQREFURUR8fDAsZGVsZXRlZDp0aGlzLnBhcmFtcz8uTlVNX0RFTEVURUR8fDB9O2xldCBFPVtdLE89aS5jb25jYXQocixvKTtmb3IobGV0IEN0PTA7Q3Q8dGhpcy5yZXNwb25zZS5jb2xz'@; put 'Lmxlbmd0aDtDdCsrKUUucHVzaCh0aGlzLnJlc3BvbnNlLmNvbHNbQ3RdLk5BTUUpO2xldCBaPXRoaXMubGVucy5uZXc+dGhpcy5yZWNvcmRzTGltaXQ/dGhpcy5yZWNvcmRzTGltaXQ6dGhpcy5sZW5zLm5ldyxlZT10aGlzLmxlbnMudXBkYXRlZD50aGlzLnJlY29yZHNMaW1pdD90aGlzLnJl'@; put 'Y29yZHNMaW1pdDp0aGlzLmxlbnMudXBkYXRlZDt0aGlzLmRpZmZzTGltaXQ9dGhpcy5sZW5zLm5ldz50aGlzLnJlY29yZHNMaW1pdHx8dGhpcy5sZW5zLnVwZGF0ZWQ+dGhpcy5yZWNvcmRzTGltaXR8fHRoaXMubGVucy5kZWxldGVkPnRoaXMucmVjb3Jkc0xpbWl0LHRoaXMuYWRkQ291bnQ9'@; put 'WjtsZXQgTWU9W10sSGU9W107Zm9yKGxldCBDdD0wO0N0PEUubGVuZ3RoO0N0KyspSGUucHVzaCh7ZGF0YTpFW0N0XSxyZWFkT25seTohMH0pO3RoaXMuZGlmZlRhYmxlLmRhdGE9Tztmb3IobGV0IEN0PTA7Q3Q8Ty5sZW5ndGg7Q3QrKyl7bGV0IEt0PU9iamVjdC5rZXlzKE9bQ3RdKTt0aGlz'@; put 'LnJvd0tleXMucHVzaChLdCl9bGV0IFdlPVtdLGF0PVtdO2ZvcihsZXQgQ3Q9MDtDdDx0aGlzLmRpZmZUYWJsZS5kYXRhLmxlbmd0aDtDdCsrKXtpZihDdDxlZSYmMCE9PWVlKXtXZS5wdXNoKFtdKSxhdC5wdXNoKFtdKSxNZS5wdXNoKCJ1cGRhdGVkIik7bGV0IEF0PU9iamVjdC5rZXlzKHRo'@; put 'aXMuZGlmZlRhYmxlLmRhdGFbQ3RdKTtmb3IobGV0IEt0PTA7S3Q8QXQubGVuZ3RoO0t0Kyspe2xldCBxdD1BdFtLdF07YVtDdF1bcXRdIT09aVtDdF1bcXRdPyhXZVtDdF0ucHVzaCghMCksYXRbQ3RdLnB1c2goYVtDdF1bcXRdKSk6KFdlW0N0XS5wdXNoKCExKSxhdFtDdF0ucHVzaChudWxs'@; put 'KSl9dGhpcy5hcnJDaGFuZ2VkPVdlLHRoaXMuYXJyT2ZDaGFuZ2VzPWF0fUN0Pj1lZSYmQ3Q8ZWUrWiYmTWUucHVzaCgiYWRkZWQiKSxDdD5aK2VlLTEmJk1lLnB1c2goImRlbGV0ZWQiKX10aGlzLmNoQXJyPU1lLHRoaXMucm93SGVhZGVyPXRoaXMucm93S2V5c1swXSx0aGlzLmRpZmZUYWJs'@; put 'ZS5kYXRhPU99bmdBZnRlclZpZXdJbml0KCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aWYoci5fZGV0YWlsc1N1Yj1yLnNhc1N0b3JlU2VydmljZS5zdWJtaXR0RGV0YWlsLnN1YnNjcmliZShmdW5jdGlvbigpe3ZhciBvPUNyKGZ1bmN0aW9uKihhKXtyLnN1Yk9iaj1hLnZp'@; put 'ZXdEYXRhLHIudGFibGVJZD1hLnZpZXdEYXRhLnRhYmxlSWQsci5zdWJtaXR0ZWQ9YS52aWV3RGF0YS5zdWIsci5zdWJtaXREZXRhaWxzPWEuZGF0YSxyLnN1Ym1pdEFycj1bXTtmb3IobGV0IGwgaW4gci5zdWJtaXREZXRhaWxzKSJzdWIiIT09bCYmci5zdWJtaXRBcnIucHVzaChsKX0pO3Jl'@; put 'dHVybiBmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSx0eXBlb2Ygci5yb3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ+InUiKXJldHVybjtyLnRhYmxlSWQ9ci5yb3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ7bGV0IGk9e0FDVElPTjoiU0hP'@; put 'V19ESUZGUyIsVEFCTEU6ci50YWJsZUlkLERJRkZUSU1FOihuZXcgRGF0ZSkudG9VVENTdHJpbmcoKX07ci5zYXNTdG9yZVNlcnZpY2Uuc2hvd0RpZmZzKGksIlNBU0NvbnRyb2xUYWJsZSIsImF1ZGl0b3JzL3Bvc3RkYXRhIikudGhlbihvPT57ci5wYXJhbXM9by5wYXJhbXNbMF0sci5yZXNw'@; put 'b25zZT1vLHIuY2FsY0RpZmYoKSxyLmNhbGxDaGFuZ2VzSW5mbyhyLnRhYmxlSWQpfSkuY2F0Y2gobz0+e3IuYWNjZXB0TG9hZGluZz0hMX0pLmZpbmFsbHkoKCk9PntyLmxvYWRpbmdUYWJsZT0hMCxyLnNldEZvY3VzKCl9KX0pKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXRhaWxzU3ViJiZ0'@; put 'aGlzLl9kZXRhaWxzU3ViLnVuc3Vic2NyaWJlKCl9c2V0Rm9jdXMoKXtzZXRUaW1lb3V0KCgpPT57bGV0IHI9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2NlcHRCdG4iKTtyJiZyLmZvY3VzKCl9LDIwMCl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9u'@; put 'KGkpe3JldHVybiBuZXcoaXx8ZSkoemUoQnApLHplKGljKSx6ZSh1ZCksemUocDEpLHplKHZjKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1hcHByb3ZlLWRldGFpbHMiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6'@; put 'ITEsZGVjbHM6NDMsdmFyczoxMSxjb25zdHM6W1szLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJ0YWJsZSJdLFsxLCJsZWZ0Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwi'@; put 'YnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWzEsImZvcm0tYmxvY2siXSxbMSwiZm9ybS1ncm91cCJdLFsiZm9yIiwiZm9ybUZpZWxkc184Il0sWyJpZCIsImZvcm1GaWVsZHNfOCIsInJvd3MiLCI1IiwxLCJ3LTEwMCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwi'@; put 'LCJuZ01vZGVsT3B0aW9ucyIsImlubmVySFRNTCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbGljayIsImNsckxvYWRpbmciXSxbMSwiY29udGVudC1h'@; put 'cmVhIl0sWzEsImNhcmQiXSxbMSwibGVmdCIsImxpbmstaXQiLDMsInJvdXRlckxpbmsiXSxbImNsclRhYkxpbmsiLCIiXSxbNCwiY2xySWZBY3RpdmUiXSxbMSwib3ZlcmZsb3ctYXV0byJdLFsxLCJjYXJkLWhlYWRlciIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50'@; put 'LWNlbnRlciJdLFsxLCJvdmVyZmxvdy1hdXRvIiwibXItMTIiXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsIm10LTAiXSxbMSwiY2FyZC1oZWFkZXIiLCJwLTAiXSxbMSwiY2xyLXJv'@; put 'dyJdLFsxLCJjbHItY29sLW1kLTQiLCJhcHByb3ZhbEJhY2siXSxbMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJtLTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNhcmV0IiwiZGlyIiwibGVmdCIsInNpemUiLCIyMCJdLFsxLCJjbHItY29sLW1kLTQiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQt'@; put 'Y2VudGVyIl0sWzEsIm10LTAiLCJmb250LXdlaWdodC0zMDAiXSxbMSwiY2xyLWNvbC1tZC00IiwiYXBwcm92YWxJbmZvIl0sWzEsInRvb2x0aXAiLCJ0b29sdGlwLXNtIiwidG9vbHRpcC10b3AtbGVmdCIsMywiY2xpY2siXSxbInNoYXBlIiwiaW5mby1zdGFuZGFyZCIsInNpemUiLCIyOCJd'@; put 'LFsxLCJ0ZXh0LWNlbnRlciIsIm10LTEwIl0sWzEsImNhcmQtYmxvY2siLCJwLTAiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImgtMjR2aCIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJ0YWJsZUNvbnQiLCJt'@; put 'dC0wIl0sWzEsInRleHQtY2VudGVyIiwiZm9udC1zaXplLTE4Il0sWzEsImQtZmxleCJdLFsxLCJkLWZsZXgiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLXJvdyIsImZvbnQtc2l6ZS0xNSJdLFsxLCJjbHItY29sLW1kLTUiXSxbMSwiY2xyLWNvbC1tZC03Il0sWzEsImNhcmQtYmxvY2siLCJkLWZs'@; put 'ZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJtdC0wIl0sWzEsImNsci1yb3ciLCJjbHItZ2FwLTUiLCJjbHItZ2FwLXNtLTAiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsIm10'@; put 'LTUiLCJtci01aSIsMywiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtNSIsIm1yLTVpIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJj'@; put 'bGljayJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1mbGV4LWNvbHVtbiIsImNsci1nYXAtNSIsImNsci1mbGV4LXNtLXJvdyIsImNsci1nYXAtc20tMCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImlkIiwiYWNjZXB0QnRuIiwi'@; put 'dHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJtci01aSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIiwiZGlzYWJsZWQiXSxbImlkIiwicmVqZWN0QnRuIiwxLCJidG4iLCJidG4tc20iLCJidG4iLCJidG4tZGFuZ2VyIiwibXItNWkiLDMsImNsaWNrIiwiZGlz'@; put 'YWJsZWQiXSxbMSwibS0wIiwibWwtMjBpIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLCJjaGVja2VkIiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2hhbmdlIiwibmdNb2RlbCJdLFsxLCJmb3JtYXR0ZWQtdmFsdWVzLXRvZ2dsZSJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4'@; put 'IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsImNsci1mbGV4LWNvbHVtbiJdLFsxLCJyb3dzLW5vdGljZSJdLFsxLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZ2FwLTUiLCJjbHItZmxleC1zbS1yb3ciLCJjbHItZ2FwLXNtLTAiXSxbMSwibGFiZWwiLCJsYWJlbC13YXJuaW5n'@; put 'Il0sWzEsImJhZGdlIl0sWzEsImxhYmVsIiwibGFiZWwtc3VjY2VzcyJdLFsxLCJsYWJlbCIsImxhYmVsLWRhbmdlciJdLFsxLCJtdC0xNSJdLFsxLCJsaW5rLWl0IiwzLCJyb3V0ZXJMaW5rIl0sWzEsIm10LTEwIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIiwxLCJtYi01Iiwi'@; put 'Y29sb3Itb3JhbmdlIl0sWzEsInNwaW5uZXIiXSxbImNkcy10ZXh0Iiwic2VjdGlvbiJdLFsxLCJsZWZ0IiwzLCJuZ0NsYXNzIl0sWzEsInRvb2x0aXAtY29udGVudCJdLFsxLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiY2FyZC1ibG9jayJd'@; put 'LFsxLCJjYXJkIiwibS0wIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiLCJzaXplIiwiMjAiXSxbMSwiY2xyLWNvbC1tZC00Il0sWzEsIm10LTAiLCJmb250LXdlaWdodC0zMDAi'@; put 'LCJ0ZXh0LWNlbnRlciJdLFsxLCJtLTAiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm0tMCIsIm1sLTIwLWkiXSxbMSwiY2FyZC1ibG9jayIsInAtMCIsIm92ZXJmbG93LWF1dG8iLCJtci0xMiJdLFsxLCJoLTI1dmgiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1'@; put 'c3RpZnktY29udGVudC1jZW50ZXIiLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwidGFibGVDb250Il0sWzEsImxvYWRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmKEooMCwiY2xyLW1vZGFsIiwwKSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4g'@; put 'Zmkoby5kZXRhaWxzT3BlbixsKXx8KG8uZGV0YWlsc09wZW49bCksbH0pLEooMSwiaDMiLDEpLFNlKDIsIkFwcHJvdmFsIERldGFpbHMiKSx0ZSgpLEooMywiZGl2IiwyKSg0LCJ0YWJsZSIsMykoNSwidGhlYWQiKSg2LCJ0ciIpKDcsInRoIiw0KSxTZSg4LCJOYW1lIiksdGUoKSxKKDksInRo'@; put 'Iiw0KSxTZSgxMCwiVmFsdWUiKSx0ZSgpKCkoKSxKKDExLCJ0Ym9keSIpLF9vKDEyLFZjbiw1LDMsInRyIixudWxsLENvKSx0ZSgpKCkoKSxKKDE0LCJkaXYiLDUpKDE1LCJidXR0b24iLDYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gby5kZXRhaWxzT3Blbj0hMX0pLFNlKDE2LCIg'@; put 'T2sgIiksdGUoKSgpKCksSigxNywiY2xyLW1vZGFsIiwwKSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby50YWJsZUZsYWcsbCl8fChvLnRhYmxlRmxhZz1sKSxsfSksSigxOCwiaDMiLDEpLFNlKDE5LCJBbGwgRGV0YWlscyIpLHRlKCksSigyMCwiZGl2'@; put 'IiwyKSx2dCgyMSx6Y24sMjAsMSwiY2xyLXRhYnMiKSx0ZSgpLEooMjIsImRpdiIsNSkoMjMsImJ1dHRvbiIsNiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLnRhYmxlRmxhZz0hMX0pLFNlKDI0LCIgT2sgIiksdGUoKSgpKCksSigyNSwiY2xyLW1vZGFsIiwwKSxoaSgiY2xyTW9k'@; put 'YWxPcGVuQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5yZWplY3RPcGVuLGwpfHwoby5yZWplY3RPcGVuPWwpLGx9KSxKKDI2LCJoMyIsMSksU2UoMjcsIlJlYXNvbiBNZXNzYWdlIiksdGUoKSxKKDI4LCJkaXYiLDIpKDI5LCJmb3JtIikoMzAsInNlY3Rpb24iLDcpKDMxLCJkaXYi'@; put 'LDgpKDMyLCJsYWJlbCIsOSksU2UoMzMsIlJlYXNvbiBmb3IgcmVqZWN0aW5nPyIpLHRlKCksSigzNCwidGV4dGFyZWEiLDEwKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8uc3VibWl0UmVhc29uLGwpfHwoby5zdWJtaXRSZWFzb249bCksbH0pLHRlKCkoKSgp'@; put 'KCkoKSxKKDM1LCJkaXYiLDUpKDM2LCJidXR0b24iLDExKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVqZWN0T3Blbj0hMX0pLFNlKDM3LCIgQ2FuY2VsICIpLHRlKCksSigzOCwiYnV0dG9uIiwxMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLnJlamVjdGluZygp'@; put 'fSksU2UoMzksIiBPSyAiKSx0ZSgpKCkoKSxKKDQwLCJkaXYiLDEzKSx2dCg0MSxjdW4sNCwyLCJkaXYiLDE0KSx2dCg0MixNdW4sMywyLCJkaXYiKSx0ZSgpKSwyJmkmJihkaSgiY2xyTW9kYWxPcGVuIixvLmRldGFpbHNPcGVuKSxpZSgxMikseW8oby5rZXlzQXJyYXkpLGllKDUpLGRpKCJj'@; put 'bHJNb2RhbE9wZW4iLG8udGFibGVGbGFnKSxpZSg0KSxfdChvLnRhYmxlRmxhZz8yMTotMSksaWUoNCksZGkoImNsck1vZGFsT3BlbiIsby5yZWplY3RPcGVuKSxpZSg5KSxkaSgibmdNb2RlbCIsby5zdWJtaXRSZWFzb24pLHJ0KCJuZ01vZGVsT3B0aW9ucyIsbWMoMTAsRmNuKSkoImlubmVy'@; put 'SFRNTCIsby5zdWJtaXRSZWFzb24seDUpLGllKDQpLHJ0KCJjbHJMb2FkaW5nIixvLnJlamVjdExvYWRpbmcpLGllKDMpLF90KG8uc3VibWl0dGVkPy0xOjQxKSxpZSgpLF90KG8uc3VibWl0dGVkPzQyOi0xKSl9LGRlcGVuZGVuY2llczpbRmgsTGIsbHUsSDIsb2MsSWIsWGwsZDQsUDIsY3Us'@; put 'SnMseGQsbWgsJDAsaE0saW0sZWwsVTIsRXYsRmYseHYsa3YsJGIsQXYsVHYsWmJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IFR1bj1uPT4oe25vQm9yZGVyOm59KSx4dW49KCk9PlszLDUsMTAsMTVdO2Z1bmN0aW9uIEF1bihuLGUpezEmbiYmKEooMCwiZGl2'@; put 'IiwzKSgxLCJkaXYiLDkpLEl0KDIsImNsci1pY29uIiwxMCksSigzLCJoMyIsMTEpLFNlKDQsIiBUaGVyZSBhcmUgbm8gYXBwcm92YWxzIHJlbWFpbmluZyAiKSx0ZSgpKCkoKSl9ZnVuY3Rpb24ga3VuKG4sZSl7MSZuJiYoSigwLCJoMyIsNSksU2UoMSwiUkVWSUVXIiksdGUoKSl9ZnVuY3Rp'@; put 'b24gUnVuKG4sZSl7aWYoMSZuJiYoSigwLCJwIiw2KSxTZSgxLCIgWW91IGhhdmUgIiksSigyLCJzcGFuIiksU2UoMyksdGUoKSxTZSg0LCJhcHByb3ZhbHMgcmVtYWluaW5nICIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDMpLFNyKCIiLHQucmVtYWluZWQsIiAiKX19ZnVuY3Rpb24g'@; put 'SXVuKG4sZSl7MSZuJiYoSigwLCJzcGFuIiwxMiksU2UoMSwiIExvYWRpbmcuLi4gIiksdGUoKSl9ZnVuY3Rpb24gRHVuKG4sZSl7MSZuJiYoSigwLCJkaXYiKSgxLCJoMyIpLFNlKDIsIkxvYWRpbmcgYXBwcm92YWxzIGxpc3QiKSx0ZSgpKCkpfWZ1bmN0aW9uIEx1bihuLGUpe2lmKDEmbiYm'@; put 'KEooMCwiZGl2Iiw3KSx2dCgxLEl1biwyLDAsInNwYW4iLDEyKSx2dCgyLER1biwzLDAsImRpdiIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC5sb2FkZWQ/LTE6MSksaWUoKSxfdCh0LmxvYWRlZD8tMToyKX19ZnVuY3Rpb24gT3VuKG4sZSl7MSZuJiZJdCgwLCJjbHItaWNv'@; put 'biIsMjcpfWZ1bmN0aW9uIE51bihuLGUpezEmbiYmSXQoMCwiY2xyLXNwaW5uZXIiLDI4KSwyJm4mJnJ0KCJjbHJTbWFsbCIsITApfWZ1bmN0aW9uIEZ1bihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWRnLXJvdyIpKDEsImNsci1kZy1jZWxsIiksU2UoMiksdGUoKSxKKDMs'@; put 'ImNsci1kZy1jZWxsIiksU2UoNCksdGUoKSxKKDUsImNsci1kZy1jZWxsIiksU2UoNiksdGUoKSxKKDcsImNsci1kZy1jZWxsIiksU2UoOCksdGUoKSxKKDksImNsci1kZy1jZWxsIikoMTAsImRpdiIsMjIpKDExLCJhIiwyMyksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCku'@; put 'aW5kZXg7cmV0dXJuIFhlKFRlKDIpLmdldENsaWNrZWQoaSkpfSksSXQoMTIsImNsci1pY29uIiwyNCksSigxMywic3BhbiIsMjUpLFNlKDE0LCJHbyB0byByZXZpZXcgcGFnZSBzY3JlZW4iKSx0ZSgpKCksSigxNSwiYSIsMjYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQp'@; put 'LG89aS4kaW1wbGljaXQsYT1pLmluZGV4LGw9VGUoMik7cmV0dXJuIFhlKG8ucmVqZWN0TG9hZGluZz8iIjpsLnJlamVjdGluZyhhKSl9KSx2dCgxNixPdW4sMSwwLCJjbHItaWNvbiIsMjcpLHZ0KDE3LE51biwxLDEsImNsci1zcGlubmVyIiwyOCksSigxOCwic3BhbiIsMjUpLFNlKDE5LCJS'@; put 'ZWplY3QiKSx0ZSgpKCksSigyMCwiYSIsMjkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMikuZ2V0VGFibGUoaS50YWJsZUlkKSl9KSxJdCgyMSwiY2xyLWljb24iLDMwKSxKKDIyLCJzcGFuIiwyNSksU2UoMjMsIkdvIHRvIHN0'@; put 'YWdlZCBkYXRhIHNjcmVlbiIpLHRlKCkoKSgpKCksSigyNCwiY2xyLWRnLWNlbGwiLDMxKSgyNSwiYnV0dG9uIiwzMiksd3QoImNsaWNrIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gVGUoMikuZG93bmxvYWQoby50YWJsZUlkKSxYZShpLnN0b3BQcm9wYWdh'@; put 'dGlvbigpKX0pLEl0KDI2LCJjbHItaWNvbiIsMzMpLHRlKCkoKSgpfWlmKDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtpZSgyKSxwcih0LnN1Ym1pdHRlciksaWUoMikscHIodC5iYXNlVGFibGUpLGllKDIpLHByKHQuc3VibWl0dGVkKSxpZSgyKSxwcih0LnN1Ym1pdFJlYXNvbiksaWUoOCks'@; put 'X3QodC5yZWplY3RMb2FkaW5nPy0xOjE2KSxpZSgpLF90KHQucmVqZWN0TG9hZGluZz8xNzotMSksaWUoOCkscnQoImlkIix0LnRhYmxlSWQpfX1mdW5jdGlvbiBQdW4obixlKXtpZigxJm4mJihKKDAsImRpdiIpKDEsImNsci1kYXRhZ3JpZCIsMTMpKDIsImNsci1kZy1jb2x1bW4iLDE0KSxT'@; put 'ZSgzLCIgU1VCTUlUVEVSICIpLEl0KDQsImNsci1kZy1zdHJpbmctZmlsdGVyIiwxNSksdGUoKSxKKDUsImNsci1kZy1jb2x1bW4iLDE0KSxTZSg2LCIgQkFTRSBUQUJMRSAiKSxJdCg3LCJjbHItZGctc3RyaW5nLWZpbHRlciIsMTYpLHRlKCksSig4LCJjbHItZGctY29sdW1uIiwxNCksU2Uo'@; put 'OSwiIFNVQk1JVFRFRCAiKSxJdCgxMCwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDE3KSx0ZSgpLEooMTEsImNsci1kZy1jb2x1bW4iLDE0KSxTZSgxMiwiIFNVQk1JVCBSRUFTT04gIiksSXQoMTMsImNsci1kZy1zdHJpbmctZmlsdGVyIiwxOCksdGUoKSxKKDE0LCJjbHItZGctY29sdW1uIiks'@; put 'U2UoMTUsIkFDVElPTiIpLHRlKCksSigxNiwiY2xyLWRnLWNvbHVtbiIpLFNlKDE3LCJET1dOTE9BRCIpLHRlKCksWW4oMTgsRnVuLDI3LDcsImNsci1kZy1yb3ciLDE5KSxKKDE5LCJjbHItZGctZm9vdGVyIikoMjAsImNsci1kZy1wYWdpbmF0aW9uIiwyMCwwKSgyMiwiY2xyLWRnLXBhZ2Ut'@; put 'c2l6ZSIsMjEpLFNlKDIzLCJJdGVtcyBwZXIgcGFnZSIpLHRlKCksU2UoMjQpLHRlKCkoKSgpKCkpLDImbil7Y29uc3QgdD1vbygyMSkscj1UZSgpO2llKDIpLHJ0KCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVyIiksaWUoMikscnQoImNsckRnU3RyaW5nRmlsdGVyIixyLnN1Ym1pdHRlckZpbHRl'@; put 'ciksaWUoKSxydCgiY2xyRGdGaWVsZCIsImJhc2VUYWJsZSIpLGllKDIpLHJ0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsci5iYXNlVGFibGVGaWx0ZXIpLGllKCkscnQoImNsckRnRmllbGQiLCJzdWJtaXR0ZWQiKSxpZSgyKSxydCgiY2xyRGdTdHJpbmdGaWx0ZXIiLHIuc3VibWl0dGVkRmlsdGVy'@; put 'KSxpZSgpLHJ0KCJjbHJEZ0ZpZWxkIiwic3VibWl0UmVhc29uIiksaWUoMikscnQoImNsckRnU3RyaW5nRmlsdGVyIixyLnN1Ym1pdFJlYXNvbkZpbHRlciksaWUoNSkscnQoImNsckRnSXRlbXNPZiIsci5hcHByb3ZlTGlzdCksaWUoMikscnQoImNsckRnUGFnZVNpemUiLDEwKSxpZSgyKSxy'@; put 'dCgiY2xyUGFnZVNpemVPcHRpb25zIixtYygxNCx4dW4pKSxpZSgyKSxlNCgiICIsdC5maXJzdEl0ZW0rMSwiIC0gIix0Lmxhc3RJdGVtKzEsIiBvZiAiLHQudG90YWxJdGVtcywiIGFwcHJvdmFscyAiKX19Y2xhc3MgSHVue2FjY2VwdHMoZSx0KXtyZXR1cm4gZS5zdWJtaXR0ZXIudG9Mb3dl'@; put 'ckNhc2UoKS5pbmRleE9mKHQudG9Mb3dlckNhc2UoKSk+PTB9fWNsYXNzIFZ1bnthY2NlcHRzKGUsdCl7cmV0dXJuIGUuYmFzZVRhYmxlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpPj0wfX1jbGFzcyBCdW57YWNjZXB0cyhlLHQpe3JldHVybiBlLnN1Ym1pdHRlZC50'@; put 'b0xvd2VyQ2FzZSgpLmluZGV4T2YodC50b0xvd2VyQ2FzZSgpKT49MH19Y2xhc3MganVue2FjY2VwdHMoZSx0KXtyZXR1cm4gZS5zdWJtaXRSZWFzb24udG9Mb3dlckNhc2UoKS5pbmRleE9mKHQudG9Mb3dlckNhc2UoKSk+PTB9fWxldCBVdW49KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1'@; put 'Y3RvcihyLGksbyxhLGwpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPXIsdGhpcy5ldmVudFNlcnZpY2U9aSx0aGlzLnJvdXRlPW8sdGhpcy5zYXNTZXJ2aWNlPWEsdGhpcy5jZHI9bCx0aGlzLmxvYWRlZD0hMSx0aGlzLml0ZW1zTnVtPTEwLHRoaXMuc3VibWl0dGVyRmlsdGVyPW5ldyBIdW4sdGhp'@; put 'cy5iYXNlVGFibGVGaWx0ZXI9bmV3IFZ1bix0aGlzLnN1Ym1pdHRlZEZpbHRlcj1uZXcgQnVuLHRoaXMuc3VibWl0UmVhc29uRmlsdGVyPW5ldyBqdW59Z2V0VGFibGUocil7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIityKX1nZXRDbGlja2VkKHIpe3ZvaWQgMCE9PXRoaXMu'@; put 'YXBwcm92ZUxpc3QmJih0aGlzLnRhYmxlSWQ9dGhpcy5hcHByb3ZlTGlzdFtyXS50YWJsZUlkLHRoaXMucm91dGUubmF2aWdhdGVCeVVybCgicmV2aWV3L2FwcHJvdmVEZXQvIit0aGlzLmFwcHJvdmVMaXN0W3JdLnRhYmxlSWQpKX1yZWplY3Rpbmcocil7dmFyIGk9dGhpcztyZXR1cm4gQ3Io'@; put 'ZnVuY3Rpb24qKCl7dm9pZCAwIT09aS5hcHByb3ZlTGlzdCYmKGkudGFibGVJZD1pLmFwcHJvdmVMaXN0W3JdLnRhYmxlSWQpO2xldCBvPXtTVFBfQUNUSU9OOiJSRUpFQ1RfVEFCTEUiLFRBQkxFOmkudGFibGVJZCxTVFBfUkVBU09OOiJxdWljayByZWplY3Rpb24ifTt0cnl7KGkuYXBwcm92'@; put 'ZUxpc3R8fFtdKVtyXS5yZWplY3RMb2FkaW5nPSEwLCh5aWVsZCBpLnNhc1N0b3JlU2VydmljZS5yZWplY3RpbmcobywiQnJvd3NlclBhcmFtcyIsImFwcHJvdmVycy9yZWplY3Rpb24iKSkuZnJvbXNhc1swXS5SRVNQT05TRS5pbmNsdWRlcygiU1VDQ0VTUyIpJiYoKGkuYXBwcm92ZUxpc3R8'@; put 'fFtdKVtyXS5yZWplY3RMb2FkaW5nPSExLGkuYXBwcm92ZUxpc3Q/LnNwbGljZShyLDEpLGkucmVtYWluZWQtLSxpLmNkci5kZXRlY3RDaGFuZ2VzKCkpfWNhdGNoKGEpe2kuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiYXBwcm92ZXJzL3JlamVjdGlvbiIsYSl9fSkoKX1uZ09u'@; put 'SW5pdCgpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3IuZmV0Y2hBcHByb3ZhbHMoKX0pKCl9ZmV0Y2hBcHByb3ZhbHMoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLml0ZW1zTnVtPTEwO2xldCBpPXtTVFBfQUNUSU9OOiJPUEVOX0FQUFJPVkFMUyJ9O3Ry'@; put 'eXtsZXQgbz15aWVsZCByLnNhc1N0b3JlU2VydmljZS5nZXRBcHByb3ZhbHMoaSwiQnJvd3NlclBhcmFtcyIsImFwcHJvdmVycy9nZXRhcHByb3ZhbHMiKTtyLnJlbWFpbmVkPW8uZnJvbXNhcy5sZW5ndGg7bGV0IGE9by5mcm9tc2FzLm1hcChmdW5jdGlvbihsKXtyZXR1cm57dGFibGVJZDps'@; put 'LlRBQkxFX0lELHN1Ym1pdHRlcjpsLlNVQk1JVFRFRF9CWV9OTSxzdWJtaXR0ZWQ6bC5TVUJNSVRURURfT05fRFRUTSxiYXNlVGFibGU6bC5CQVNFX1RBQkxFLHN1Ym1pdFJlYXNvbjpsLlNVQk1JVFRFRF9SRUFTT05fVFhUfX0pO3IuYXBwcm92ZUxpc3Q9YSxyLmxvYWRlZD0hMH1jYXRjaChv'@; put 'KXtyLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9nZXRhcHByb3ZhbHMiLG8pfX0pKCl9ZG93bmxvYWQocil7bGV0IGk9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksbz1pLnNlcnZlclVybCxhPWkuYXBwTG9jLGw9dGhpcy5zYXNTZXJ2aWNlLmdl'@; put 'dEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3BlbihvK2wrIi8/X3Byb2dyYW09IithKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIrcil9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoQnApLHplKHVk'@; put 'KSx6ZSh2YyksemUoaWMpLHplKFVsKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1hcHByb3ZlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxzdGFuZGFsb25lOiExLGRlY2xzOjksdmFyczo4LGNvbnN0czpbWyJwYWdpbmF0aW9uIiwi'@; put 'Il0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiY2FyZC1oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2VudGVyIiwiY2xyLWNvbC1tZC0xMiIsInRleHQtY2VudGVyIl0sWzEsInRleHQtY2VudGVyIiwiZm9u'@; put 'dC13ZWlnaHQtNzAwIiwiY29sb3ItZGFyay1ncmF5Il0sWzEsImFwcHJvdmFscy1saXN0LXdyYXBwZXIiXSxbIm5nLWlmIiwibG9hZGVkIiwxLCJjbHItY29sLW1kLTEyIl0sWzEsImNhcmQtYmxvY2siLCJub2FwcHJvdmFscy1pbmZvLXdyYXBwZXIiXSxbInNoYXBlIiwid2FybmluZy1zdGFu'@; put 'ZGFyZCIsInNpemUiLCI2MCIsMSwiaXMtaW5mbyIsImljb24tZGMtZmlsbCJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXSxbMSwic3Bpbm5lciJdLFsxLCJkYXRhZ3JpZC1jb21wYWN0IiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciJdLFszLCJjbHJEZ0ZpZWxkIl0sWyJhcmlhLWxh'@; put 'YmVsIiwiRmlsdGVyIHN1Ym1pdHRlciIsMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbImFyaWEtbGFiZWwiLCJGaWx0ZXIgYmFzZSB0YWJsZSIsMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbImFyaWEtbGFiZWwiLCJGaWx0ZXIgc3VibWl0dGVkIGRhdGUiLDMsImNsckRnU3RyaW5nRmlsdGVyIl0s'@; put 'WyJhcmlhLWxhYmVsIiwiRmlsdGVyIHN1Ym1pdCByZWFzb24iLDMsImNsckRnU3RyaW5nRmlsdGVyIl0sWzQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xyRGdQYWdlU2l6ZSJdLFszLCJjbHJQYWdlU2l6ZU9wdGlvbnMiXSxbInJvbGUiLCJ0b29sYmFyIiwiYXJpYS1sYWJl'@; put 'bCIsIlRhYmxlIGFjdGlvbnMiLDEsImNsci1yb3ciLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIl0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLWdyZWVuIiwzLCJjbGljayJdLFsi'@; put 'c2hhcGUiLCJjaGVjayIsInNpemUiLCIyNCIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbMSwiY29sdW1uLWNlbnRlciIsImxpbmtzIiwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwiY29sb3ItcmVkIiwzLCJjbGljayJd'@; put 'LFsic2hhcGUiLCJiYW4iLCJzaXplIiwiMjIiLCJhcmlhLWhpZGRlbiIsInRydWUiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMywiY2xyU21hbGwiXSxbMSwiY29sdW1uLWNlbnRlciIsImxpbmtzIiwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwiY29sb3It'@; put 'Ymx1ZSIsMywiY2xpY2siXSxbInNoYXBlIiwiY29kZSIsInNpemUiLCIyOCIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsxLCJwLTAiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWyJhcmlhLWxhYmVsIiwiRG93bmxvYWQgYXVkaXQgZmlsZSIsMSwiYnRuIiwiYnRuLXN1Y2Nl'@; put 'c3MiLDMsImNsaWNrIiwiaWQiXSxbInNoYXBlIiwiZG93bmxvYWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihKKDAsImRpdiIsMSkoMSwiZGl2IiwyKSx2dCgyLEF1biw1LDAsImRpdiIsMyksSigzLCJkaXYiLDQpLHZ0KDQsa3VuLDIsMCwiaDMiLDUpLHZ0KDUsUnVuLDUsMSwi'@; put 'cCIsNiksdGUoKSx2dCg2LEx1biwzLDIsImRpdiIsNyksSig3LCJkaXYiLDgpLHZ0KDgsUHVuLDI1LDE1LCJkaXYiKSx0ZSgpKCkoKSksMiZpJiYoaWUoMiksX3QoMD09PW8ucmVtYWluZWQ/MjotMSksaWUoKSxydCgibmdDbGFzcyIsdDQoNixUdW4sIW8ubG9hZGVkKSksaWUoKSxfdChvLmxv'@; put 'YWRlZCYmMCE9PW8ucmVtYWluZWQ/NDotMSksaWUoKSxfdChvLmxvYWRlZCYmMCE9PW8ucmVtYWluZWQ/NTotMSksaWUoKSxfdChvLmxvYWRlZD8tMTo2KSxpZSgyKSxfdChvLmFwcHJvdmVMaXN0JiYwIT09by5yZW1haW5lZD84Oi0xKSl9LGRlcGVuZGVuY2llczpbRmgsTnYsdjQsdHcsZlcs'@; put 'eE0sWUQscFcsTHYsRzUsbncsUk0sT3YsUWIsRHYsSmIsU00sY3UsejJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IHp1bj1uPT4oe25vQm9yZGVyOm59KSxXdW49KCk9PlszLDUsMTAsMTVdO2Z1bmN0aW9uIFl1bihuLGUpezEmbiYmKEooMCwiZGl2Iiw0KSgx'@; put 'LCJkaXYiLDEwKSxJdCgyLCJjbHItaWNvbiIsMTEpLEooMywiaDMiLDEyKSxTZSg0LCIgWW91IGhhdmUgbm90IHN1Ym1pdHRlZCBhbnkgdGFibGVzICIpLHRlKCkoKSgpKX1mdW5jdGlvbiBadW4obixlKXsxJm4mJihKKDAsImgzIiw2KSxTZSgxLCJTVUJNSVQgUVVFVUUiKSx0ZSgpKX1mdW5j'@; put 'dGlvbiBHdW4obixlKXtpZigxJm4mJihKKDAsInAiLDcpLFNlKDEsIiBZb3UgaGF2ZSAiKSxKKDIsInNwYW4iKSxTZSgzKSx0ZSgpLFNlKDQsInN1Ym1pc3Npb25zIHdhaXRpbmcgdG8gYmUgYXBwcm92ZWQgIiksdGUoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKDMpLFNyKCIiLHQucmVtYWlu'@; put 'ZWQsIiAiKX19ZnVuY3Rpb24gJHVuKG4sZSl7MSZuJiYoSigwLCJzcGFuIiwxMyksU2UoMSwiIExvYWRpbmcuLi4gIiksdGUoKSl9ZnVuY3Rpb24gcXVuKG4sZSl7MSZuJiYoSigwLCJkaXYiKSgxLCJoMyIpLFNlKDIsIkxvYWRpbmcgc3VibWl0dGVkIGxpc3QiKSx0ZSgpKCkpfWZ1bmN0aW9u'@; put 'IEt1bihuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw4KSx2dCgxLCR1biwyLDAsInNwYW4iLDEzKSx2dCgyLHF1biwzLDAsImRpdiIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLF90KHQubG9hZGVkPy0xOjEpLGllKCksX3QodC5sb2FkZWQ/LTE6Mil9fWZ1bmN0aW9uIFh1bihuLGUp'@; put 'e2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWRnLXJvdyIsMjEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoNSkuZ29Ub0RldGFpbHMoaS50YWJsZUlkKSl9KSxKKDEsImNsci1kZy1jZWxsIiksU2UoMiksdGUoKSxKKDMs'@; put 'ImNsci1kZy1jZWxsIiksU2UoNCksdGUoKSxKKDUsImNsci1kZy1jZWxsIiksU2UoNiksdGUoKSxKKDcsImNsci1kZy1jZWxsIikoOCwiZGl2IiwyMikoOSwiYSIsMjMpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBpPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoNSkuZ29Ub1N0'@; put 'YWdlKGkudGFibGVJZCkpfSksSXQoMTAsImNsci1pY29uIiwyNCksSigxMSwic3BhbiIsMjUpLFNlKDEyLCJHbyB0byBzdGFnZWQgZGF0YSBzY3JlZW4iKSx0ZSgpKCkoKSgpLEooMTMsImNsci1kZy1jZWxsIiwyNikoMTQsImJ1dHRvbiIsMjcpLHd0KCJjbGljayIsZnVuY3Rpb24oaSl7Y29u'@; put 'c3Qgbz1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIFRlKDUpLmRvd25sb2FkKG8udGFibGVJZCksWGUoaS5zdG9wUHJvcGFnYXRpb24oKSl9KSxJdCgxNSwiY2xyLWljb24iLDI4KSx0ZSgpKCkoKX1pZigyJm4pe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7aWUoMikscHIodC5iYXNlKSxpZSgyKSxwcih0'@; put 'LnN1Ym1pdHRlZCksaWUoMikscHIodC5zdWJtaXRSZWFzb24pfX1mdW5jdGlvbiBRdW4obixlKXtpZigxJm4mJihKKDAsImRpdiIpKDEsImNsci1kYXRhZ3JpZCIsMTQpKDIsImNsci1kZy1jb2x1bW4iKSxTZSgzLCJCQVNFIFRBQkxFIiksdGUoKSxKKDQsImNsci1kZy1jb2x1bW4iLDE1KSxT'@; put 'ZSg1LCIgU1VCTUlUVEVEICIpLEl0KDYsImNsci1kZy1zdHJpbmctZmlsdGVyIiwxNiksdGUoKSxKKDcsImNsci1kZy1jb2x1bW4iLDE1KSxTZSg4LCIgU1VCTUlUIFJFQVNPTiAiKSxJdCg5LCJjbHItZGctc3RyaW5nLWZpbHRlciIsMTcpLHRlKCksSigxMCwiY2xyLWRnLWNvbHVtbiIsNCks'@; put 'U2UoMTEsIkFDVElPTiIpLHRlKCksSigxMiwiY2xyLWRnLWNvbHVtbiIsNCksU2UoMTMsIkRPV05MT0FEIiksdGUoKSxZbigxNCxYdW4sMTYsMywiY2xyLWRnLXJvdyIsMTgpLEooMTUsImNsci1kZy1mb290ZXIiKSgxNiwiY2xyLWRnLXBhZ2luYXRpb24iLDE5LDApKDE4LCJjbHItZGctcGFn'@; put 'ZS1zaXplIiwyMCksU2UoMTksIkl0ZW1zIHBlciBwYWdlIiksdGUoKSxTZSgyMCksdGUoKSgpKCkoKSksMiZuKXtjb25zdCB0PW9vKDE3KSxyPVRlKDQpO2llKDQpLHJ0KCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVkIiksaWUoMikscnQoImNsckRnU3RyaW5nRmlsdGVyIixyLnN1Ym1pdHRlZEZp'@; put 'bHRlciksaWUoKSxydCgiY2xyRGdGaWVsZCIsInN1Ym1pdFJlYXNvbiIpLGllKDIpLHJ0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsci5zdWJtaXRSZWFzb25GaWx0ZXIpLGllKDUpLHJ0KCJjbHJEZ0l0ZW1zT2YiLHIuc3VibWl0dGVyTGlzdCksaWUoMikscnQoImNsckRnUGFnZVNpemUiLDEwKSxp'@; put 'ZSgyKSxydCgiY2xyUGFnZVNpemVPcHRpb25zIixtYygxMCxXdW4pKSxpZSgyKSxlNCgiICIsdC5maXJzdEl0ZW0rMSwiIC0gIix0Lmxhc3RJdGVtKzEsIiBvZiAiLHQudG90YWxJdGVtcywiIHN1Ym1pc3Npb25zICIpfX1mdW5jdGlvbiBKdW4obixlKXtpZigxJm4mJihKKDAsImRpdiIsOSks'@; put 'dnQoMSxRdW4sMjEsMTEsImRpdiIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLF90KHQuc3VibWl0dGVyTGlzdCYmMCE9PXQucmVtYWluZWQ/MTotMSl9fWZ1bmN0aW9uIGVkbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwzKSx2dCgxLFl1biw1LDAsImRpdiIsNCksSigyLCJkaXYi'@; put 'LDUpLHZ0KDMsWnVuLDIsMCwiaDMiLDYpLHZ0KDQsR3VuLDUsMSwicCIsNyksdGUoKSx2dCg1LEt1biwzLDIsImRpdiIsOCksdnQoNixKdW4sMiwxLCJkaXYiLDkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLF90KDA9PT10LnJlbWFpbmVkJiZ0LmxvYWRlZD8xOi0xKSxpZSgpLHJ0'@; put 'KCJuZ0NsYXNzIix0NCg2LHp1biwhdC5sb2FkZWQpKSxpZSgpLF90KDAhPT10LnJlbWFpbmVkPzM6LTEpLGllKCksX3QodC5sb2FkZWQmJjAhPT10LnJlbWFpbmVkPzQ6LTEpLGllKCksX3QodC5sb2FkZWQ/LTE6NSksaWUoKSxfdCh0LmxvYWRlZD82Oi0xKX19ZnVuY3Rpb24gdGRuKG4sZSl7'@; put 'aWYoMSZuJiYoSigwLCJkaXYiLDIpLHZ0KDEsZWRuLDcsOCwiZGl2IiwzKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLF90KHQuc3ViUmVhZHk/LTE6MSl9fWZ1bmN0aW9uIG5kbihuLGUpezEmbiYmKEooMCwiZGl2IiksSXQoMSwiYXBwLWFwcHJvdmUtZGV0YWlscyIpLHRlKCkpfWNs'@; put 'YXNzIHJkbnthY2NlcHRzKGUsdCl7cmV0dXJuIGUuc3VibWl0dGVkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpPj0wfX1jbGFzcyBpZG57YWNjZXB0cyhlLHQpe3JldHVybiBlLnN1Ym1pdFJlYXNvbi50b0xvd2VyQ2FzZSgpLmluZGV4T2YodC50b0xvd2VyQ2FzZSgp'@; put 'KT49MH19bGV0IG5HZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEsbCl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9cix0aGlzLmV2ZW50U2VydmljZT1pLHRoaXMucm91dGVyPW8sdGhpcy5yb3V0ZT1hLHRoaXMuc2FzU2VydmljZT1sLHRoaXMucmVtYWluZWQ9MCx0aGlz'@; put 'LmxvYWRlZD0hMSx0aGlzLnN1YlJlYWR5PSExLHRoaXMuZGV0YWlsc09wZW49ITEsdGhpcy5zdWJtaXR0ZWRGaWx0ZXI9bmV3IHJkbix0aGlzLnN1Ym1pdFJlYXNvbkZpbHRlcj1uZXcgaWRufWdvVG9TdGFnZShyKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIityKX1nb1Rv'@; put 'RGV0YWlscyhyKXt0aGlzLnNhc1N0b3JlU2VydmljZS5oYW5kb2ZmU3VibWl0cyh0aGlzLnN1Ym1pdERhdGEpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9yZXZpZXcvc3VibWl0dGVkLyIrcil9Z2V0RGV0YWlscyhyLGkpe3RoaXMuc3ViUmVhZHk9ITAsc2V0VGltZW91dCgoKT0+e3Ro'@; put 'aXMuc2FzU3RvcmVTZXJ2aWNlLnNlbmREZXRhaWxzKHIsaSx0aGlzLnN1Ym1pdERhdGEpfSwwKX1uZ09uSW5pdCgpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2NvbnN0IGk9ci5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudGFibGVJZDtyLml0ZW1zTnVtPTEwO3RyeXtsZXQgbz1y'@; put 'LnNhc1N0b3JlU2VydmljZS50YWtlU3VibWl0c0hhbmRvZmYoKTtpZihvfHwobz0oeWllbGQgci5zYXNTdG9yZVNlcnZpY2UuZ2V0U3VibWl0dHMoKSkuZnJvbXNhcyksci5yZW1haW5lZD1vLmxlbmd0aCxyLnJlbWFpbmVkPjApe3Iuc3VibWl0dGVyPW9bMF0uU1VCTUlUVEVEX0JZX05NO2xl'@; put 'dCBhPW8ubWFwKGZ1bmN0aW9uKGwpe3JldHVybnt0YWJsZUlkOmwuVEFCTEVfSUQsYmFzZTpsLkJBU0VfVEFCTEUsc3VibWl0dGVkOmwuU1VCTUlUVEVEX09OX0RUVE0sc3VibWl0dGVyOmwuU1VCTUlUVEVEX0JZX05NLHN1Ym1pdFJlYXNvbjpsLlNVQk1JVFRFRF9SRUFTT05fVFhUfX0pO2lm'@; put 'KHIuc3VibWl0dGVyTGlzdD1hLHIuc3VibWl0RGF0YT1vLHR5cGVvZiBpPCJ1Iil7Y29uc3QgbD1yLnN1Ym1pdHRlckxpc3QuZmluZEluZGV4KHU9PnUudGFibGVJZD09PWkpO2w+LTEmJnIuZ2V0RGV0YWlscyhyLnN1Ym1pdHRlckxpc3RbbF0sbCl9fXIubG9hZGVkPSEwfWNhdGNoKG8pe3Iu'@; put 'ZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiZWRpdG9ycy9nZXRzdWJtaXRzIixvKX19KSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3JlYWR5U3ViPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFN1Ym1pdC5zdWJzY3JpYmUocj0+e3RoaXMuc3ViUmVhZHk9cn0pLHRoaXMuX2Jh'@; put 'Y2tUb1N1Yj10aGlzLnNhc1N0b3JlU2VydmljZS5zZXRTdWJtaXRMaXN0LnN1YnNjcmliZShyPT57dGhpcy5zdWJSZWFkeT0hdGhpcy5zdWJSZWFkeSx0aGlzLmRldGFpbHNPcGVuPSExfSl9ZG93bmxvYWQocil7bGV0IGk9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksbz1pLnNl'@; put 'cnZlclVybCxhPWkuYXBwTG9jLGw9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3BlbihvK2wrIi8/X3Byb2dyYW09IithKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIrcil9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1'@; put 'bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoQnApLHplKHVkKSx6ZSh2YyksemUocDEpLHplKGljKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1zdWJtaXR0ZXIiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6'@; put 'ITEsZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbInBhZ2luYXRpb24iLCIiXSxbMSwidy0xMDAiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJjYXJkLWhlYWRlciIsMywibmdDbGFzcyJdLFsxLCJjZW50ZXIi'@; put 'LCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJmb250LXdlaWdodC03MDAiLCJjb2xvci1kYXJrLWdyYXkiXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVy'@; put 'Il0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwibm8tc3VibWl0dGVkLXRhYmxlcyIsImNhcmQtYmxvY2siLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbInNoYXBlIiwid2FybmluZy1zdGFuZGFyZCIsInNpemUi'@; put 'LCI2MCIsMSwiaXMtaW5mbyJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXSxbMSwic3Bpbm5lciJdLFsxLCJkYXRhZ3JpZC1jb21wYWN0IiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciJdLFszLCJjbHJEZ0ZpZWxkIl0sWyJhcmlhLWxhYmVsIiwiRmlsdGVyIHN1Ym1pdHRlZCBkYXRl'@; put 'IiwzLCJjbHJEZ1N0cmluZ0ZpbHRlciJdLFsiYXJpYS1sYWJlbCIsIkZpbHRlciBzdWJtaXQgcmVhc29uIiwzLCJjbHJEZ1N0cmluZ0ZpbHRlciJdLFsiY2xhc3MiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siLDQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xyRGdQYWdl'@; put 'U2l6ZSJdLFszLCJjbHJQYWdlU2l6ZU9wdGlvbnMiXSxbMSwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJyb2xlIiwidG9vbHRpcCIsImFyaWEtbGFiZWwiLCJHbyB0byBzdGFnZWQgZGF0YSBzY3JlZW4iLDEsInJvdyIsImp1c3RpZnktY29udGVudC1hcm91bmQiXSxbMSwiY29sdW1u'@; put 'LWNlbnRlciIsImxpbmtzIiwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwiY29sb3ItYmx1ZSIsMywiY2xpY2siXSxbInNoYXBlIiwiY29kZSIsInNpemUiLCIyOCJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbMSwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1j'@; put 'b250ZW50LWNlbnRlciJdLFsiYXJpYS1sYWJlbCIsIkRvd25sb2FkIGF1ZGl0IGZpbGUgZm9yIHRhYmxlIHJlY29yZCIsMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJkaXYiLDEp'@; put 'LHZ0KDEsdGRuLDIsMSwiZGl2IiwyKSx2dCgyLG5kbiwyLDAsImRpdiIpLHRlKCkpLDImaSYmKGllKCksX3Qoby5zdWJSZWFkeT8tMToxKSxpZSgpLF90KG8uc3ViUmVhZHk/MjotMSkpfSxkZXBlbmRlbmNpZXM6W0ZoLE52LHY0LHR3LGZXLHhNLFlELHBXLEx2LEc1LG53LFJNLE92LFFiLER2'@; put 'LEpiLFNNLGN1LHRHZV0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3Qgb2RuPShuLGUpPT4oe3JlamVjdGVkOm4sYWNjZXB0ZWQ6ZX0pO2Z1bmN0aW9uIGFkbihuLGUpezEmbiYmKEooMCwiZGl2IiwxKSxJdCgxLCJjbHItaWNvbiIsMTEpLEooMiwiaDMiLDEyKSxT'@; put 'ZSgzLCJUaGVyZSBpcyBubyBoaXN0b3J5IHRvIHNob3ciKSx0ZSgpKCkpfWZ1bmN0aW9uIHNkbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiYSIsMTQpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKCkuJGltcGxpY2l0LG89VGUoKTtyZXR1cm4gWGUoby5n'@; put 'ZXRUYWJsZShvLmFwcHJvdmVEYXRhW2ldKSl9KSxTZSgxKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdCxyPVRlKCk7aWUoKSxwcihyLmFwcHJvdmVEYXRhW3RdKX19ZnVuY3Rpb24gbGRuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiKSgxLCJhIiwxNCks'@; put 'd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQsbz1UZSgpO3JldHVybiBYZShvLmdldEJhc2VUYWJsZShvLmFwcHJvdmVEYXRhW2ldKSl9KSxTZSgyLCJWSUVXIiksdGUoKSxKKDMsInNwYW4iKSxTZSg0LCIgLyAiKSx0ZSgpLEooNSwiYSIsMTQpLHd0'@; put 'KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKCkuJGltcGxpY2l0LG89VGUoKTtyZXR1cm4gWGUoby5nZXRFZGl0VGFibGUoby5hcHByb3ZlRGF0YVtpXSkpfSksU2UoNiwiRURJVCIpLHRlKCkoKX19ZnVuY3Rpb24gY2RuKG4sZSl7aWYoMSZuJiYoSigwLCJzcGFuIiksU2Uo'@; put 'MSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0LHI9VGUoKTtpZSgpLHByKHIuYXBwcm92ZURhdGFbdF0pfX1mdW5jdGlvbiB1ZG4obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQiLDYpLFNlKDIpLHRlKCksSigzLCJ0ZCIsNiksdnQoNCxzZG4sMiwxLCJhIiwxMyksdnQo'@; put 'NSxsZG4sNywwLCJkaXYiKSx2dCg2LGNkbiwyLDEsInNwYW4iKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdCxyPWUuJGluZGV4O2llKDIpLHByKHQpLGllKDIpLF90KHI8MT80Oi0xKSxpZSgpLF90KHI8MiYmcj49MT81Oi0xKSxpZSgpLF90KHI+PTI/NjotMSl9fWZ1bmN0aW9u'@; put 'IGRkbihuLGUpezEmbiYmKEooMCwic3BhbiIsMTUpLFNlKDEsIiBMb2FkaW5nLi4uICIpLHRlKCkpfWZ1bmN0aW9uIGhkbihuLGUpezEmbiYmKEooMCwiZGl2IikoMSwiaDMiKSxTZSgyLCJMb2FkaW5nIGhpc3RvcnkiKSx0ZSgpKCkpfWZ1bmN0aW9uIGZkbihuLGUpe2lmKDEmbiYmKEooMCwi'@; put 'ZGl2Iiw5KSx2dCgxLGRkbiwyLDAsInNwYW4iLDE1KSx2dCgyLGhkbiwzLDAsImRpdiIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC5sb2FkZWQ/LTE6MSksaWUoKSxfdCh0LmxvYWRlZD8tMToyKX19ZnVuY3Rpb24gcGRuKG4sZSl7MSZuJiYoSigwLCJoMyIsMTcpLFNlKDEs'@; put 'IkhJU1RPUlkiKSx0ZSgpKX1mdW5jdGlvbiBnZG4obixlKXtpZigxJm4mJihKKDAsInAiLDE4KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoKSxTcigiIFRvIHVubG9jayBtb3JlIHRoYW4gIix0LmxpY2VuY2VTdGF0ZS52YWx1ZS5oaXN0b3J5X3Jvd3NfYWxsb3dlZCwiIHJl'@; put 'Y29yZHMsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyAiKX19ZnVuY3Rpb24gbWRuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItZGctcm93IiwzMCksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0O3JldHVybiBYZShUZSgz'@; put 'KS5nZXRBcHBySW5kZXgoaSkpfSksSigxLCJjbHItZGctY2VsbCIsMzEpKDIsImEiLDMyKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKDMpLmdldEJhc2VUYWJsZShpLmJhc2V0YWJsZSkpfSksU2UoMyksdGUoKSgpLEooNCwiY2xy'@; put 'LWRnLWNlbGwiLDMzKSxTZSg1KSx0ZSgpLEooNiwiY2xyLWRnLWNlbGwiLDMxKSxTZSg3KSx0ZSgpLEooOCwiY2xyLWRnLWNlbGwiLDMxKSxTZSg5KSx0ZSgpLEooMTAsImNsci1kZy1jZWxsIiwzMSksU2UoMTEpLHRlKCksSigxMiwiY2xyLWRnLWNlbGwiLDMxKSxTZSgxMyksdGUoKSxKKDE0'@; put 'LCJjbHItZGctY2VsbCIsMzQpKDE1LCJidXR0b24iLDM1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe2NvbnN0IG89WWUodCkuJGltcGxpY2l0O3JldHVybiBUZSgzKS5kb3dubG9hZChvLnRhYmxlSWQpLFhlKGkuc3RvcFByb3BhZ2F0aW9uKCkpfSksSXQoMTYsImNsci1pY29uIiwzNiksdGUo'@; put 'KSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKDMpLHByKHQuYmFzZXRhYmxlKSxpZSgpLHJ0KCJuZ0NsYXNzIixONSg3LG9kbiwiUkVKRUNURUQiPT09dC5zdGF0dXMsIkFQUFJPVkVEIj09PXQuc3RhdHVzKSksaWUoKSxwcih0LnN0YXR1cyksaWUoMikscHIodC5zdWJtaXR0'@; put 'ZXIpLGllKDIpLHByKHQuc3VibWl0dGVkUmVhc29uKSxpZSgyKSxwcih0LnN1Ym1pdHRlZCksaWUoMikscHIodC5yZXZpZXdlZCl9fWZ1bmN0aW9uIHZkbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWRhdGFncmlkIiwxOSkoMSwiY2xyLWRnLWNvbHVtbiIsMjIpLFNlKDIsIiBCQVNFX1RBQkxF'@; put 'ICIpLEl0KDMsImNsci1kZy1zdHJpbmctZmlsdGVyIiwyMyksdGUoKSxKKDQsImNsci1kZy1jb2x1bW4iLDIyKSxTZSg1LCIgU1RBVFVTICIpLEl0KDYsImNsci1kZy1zdHJpbmctZmlsdGVyIiwyNCksdGUoKSxKKDcsImNsci1kZy1jb2x1bW4iLDIyKSxTZSg4LCIgU1VCTUlUVEVSICIpLEl0'@; put 'KDksImNsci1kZy1zdHJpbmctZmlsdGVyIiwyNSksdGUoKSxKKDEwLCJjbHItZGctY29sdW1uIiwyMiksU2UoMTEsIiBTVUJNSVQgUkVBU09OICIpLEl0KDEyLCJjbHItZGctc3RyaW5nLWZpbHRlciIsMjYpLHRlKCksSigxMywiY2xyLWRnLWNvbHVtbiIsMjIpLFNlKDE0LCIgU1VCTUlUVEVE'@; put 'ICIpLEl0KDE1LCJjbHItZGctc3RyaW5nLWZpbHRlciIsMjcpLHRlKCksSigxNiwiY2xyLWRnLWNvbHVtbiIsMjIpLFNlKDE3LCIgQVBQUk9WRUQgLyBSRUpFQ1RFRCAiKSxJdCgxOCwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDI4KSx0ZSgpLEooMTksImNsci1kZy1jb2x1bW4iKSxTZSgyMCwi'@; put 'RE9XTkxPQUQiKSx0ZSgpLFluKDIxLG1kbiwxNywxMCwiY2xyLWRnLXJvdyIsMjkpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLHJ0KCJjbHJEZ0ZpZWxkIiwiYmFzZXRhYmxlIiksaWUoMikscnQoImNsckRnU3RyaW5nRmlsdGVyIix0LmJhc2VUYWJsZUZpbHRlciksaWUoKSxydCgi'@; put 'Y2xyRGdGaWVsZCIsInN0YXR1cyIpLGllKDIpLHJ0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsdC5zdGF0dXNGaWx0ZXIpLGllKCkscnQoImNsckRnRmllbGQiLCJzdWJtaXR0ZXIiKSxpZSgyKSxydCgiY2xyRGdTdHJpbmdGaWx0ZXIiLHQuc3VibWl0dGVyRmlsdGVyKSxpZSgpLHJ0KCJjbHJEZ0Zp'@; put 'ZWxkIiwic3VibWl0dGVkUmVhc29uIiksaWUoMikscnQoImNsckRnU3RyaW5nRmlsdGVyIix0LnN1Ym1pdFJlYXNvbkZpbHRlciksaWUoKSxydCgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlZCIpLGllKDIpLHJ0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsdC5zdWJtaXR0ZWRGaWx0ZXIpLGllKCkscnQo'@; put 'ImNsckRnRmllbGQiLCJyZXZpZXdlZCIpLGllKDIpLHJ0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsdC5yZXZpZXdlZEZpbHRlciksaWUoMykscnQoImNsckRnSXRlbXNPZiIsdC5oaXN0b3J5KX19ZnVuY3Rpb24gX2RuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDM3KSx3'@; put 'dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLmxvYWREYXRhKCkpfSksU2UoMSksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7cnQoImNsckxvYWRpbmciLHQubG9hZGluZ01vcmUpLGllKCksU3IoIiBMb2FkICIsdC5yb3dzTGVmdFRvTG9hZCwiIG1vcmUgIil9'@; put 'fWZ1bmN0aW9uIHlkbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxMCkoMSwiZGl2IiwxNiksdnQoMixwZG4sMiwwLCJoMyIsMTcpLHZ0KDMsZ2RuLDIsMSwicCIsMTgpLHRlKCksdnQoNCx2ZG4sMjIsMTMsImNsci1kYXRhZ3JpZCIsMTkpLEooNSwiZGl2IiwyMCksdnQoNixfZG4sMiwyLCJi'@; put 'dXR0b24iLDIxKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDIpLF90KHQubG9hZGVkPzI6LTEpLGllKCksX3QodC5saWNlbmNlU3RhdGUudmFsdWUuaGlzdG9yeV9yb3dzX2FsbG93ZWQhPT10LkluZmluaXR5PzM6LTEpLGllKCksX3QodC5sb2FkZWQ/NDotMSksaWUoMiksX3QodC5s'@; put 'aWNlbmNlU3RhdGUudmFsdWUuaGlzdG9yeV9yb3dzX2FsbG93ZWQ9PT10LkluZmluaXR5JiZ0LnJvd3NMZWZ0VG9Mb2FkPjA/NjotMSl9fWNsYXNzIGJkbnthY2NlcHRzKGUsdCl7cmV0dXJuIGUuYmFzZXRhYmxlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpPj0wfX1j'@; put 'bGFzcyB3ZG57YWNjZXB0cyhlLHQpe3JldHVybiBlLnN0YXR1cy50b0xvd2VyQ2FzZSgpLmluZGV4T2YodC50b0xvd2VyQ2FzZSgpKT49MH19Y2xhc3MgQ2Rue2FjY2VwdHMoZSx0KXtyZXR1cm4gZS5zdWJtaXR0ZXIudG9Mb3dlckNhc2UoKS5pbmRleE9mKHQudG9Mb3dlckNhc2UoKSk+PTB9'@; put 'fWNsYXNzIFNkbnthY2NlcHRzKGUsdCl7cmV0dXJuIGUuc3VibWl0dGVkUmVhc29uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpPj0wfX1jbGFzcyBFZG57YWNjZXB0cyhlLHQpe3JldHVybiBlLnN1Ym1pdHRlZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodC50b0xvd2Vy'@; put 'Q2FzZSgpKT49MH19Y2xhc3MgTWRue2FjY2VwdHMoZSx0KXtyZXR1cm4gZS5yZXZpZXdlZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodC50b0xvd2VyQ2FzZSgpKT49MH19Y29uc3QgVGRuPVt7cGF0aDoiYXBwcm92ZSIsY29tcG9uZW50OlV1bn0se3BhdGg6ImFwcHJvdmVEZXQvOnRhYmxlSWQi'@; put 'LGNvbXBvbmVudDp0R2V9LHtwYXRoOiJzdWJtaXR0ZWQiLGNvbXBvbmVudDpuR2V9LHtwYXRoOiJzdWJtaXR0ZWQvOnRhYmxlSWQiLGNvbXBvbmVudDpuR2V9LHtwYXRoOiJoaXN0b3J5Iixjb21wb25lbnQ6KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwpe3RoaXMu'@; put 'bGljZW5jZVNlcnZpY2U9cix0aGlzLnNhc1N0b3JlU2VydmljZT1pLHRoaXMuZXZlbnRTZXJ2aWNlPW8sdGhpcy5yb3V0ZXI9YSx0aGlzLnNhc1NlcnZpY2U9bCx0aGlzLmhpc3Rvcnk9W10sdGhpcy50YWJsZVRpdGxlcz1bXSx0aGlzLmhpc3RvcnlBcnI9W10sdGhpcy5sb2FkZWQ9ITEsdGhp'@; put 'cy5pdGVtc051bT0xMCx0aGlzLm9wZW5Nb2RhbD0hMSx0aGlzLm5vRGF0YT0hMSx0aGlzLmFwcHJvdmVEYXRhPXt9LHRoaXMuc2FzanNDb25maWc9bmV3IHhwLlNBU2pzQ29uZmlnLHRoaXMuYmFzZVRhYmxlRmlsdGVyPW5ldyBiZG4sdGhpcy5zdGF0dXNGaWx0ZXI9bmV3IHdkbix0aGlzLnN1'@; put 'Ym1pdHRlckZpbHRlcj1uZXcgQ2RuLHRoaXMuc3VibWl0UmVhc29uRmlsdGVyPW5ldyBTZG4sdGhpcy5zdWJtaXR0ZWRGaWx0ZXI9bmV3IEVkbix0aGlzLnJldmlld2VkRmlsdGVyPW5ldyBNZG4sdGhpcy5oaXN0UGFyYW1zPXtISVNUOjAsU1RBUlRST1c6MSxOT0JTOi0xfSx0aGlzLmxvYWRp'@; put 'bmdNb3JlPSExLHRoaXMubGljZW5jZVN0YXRlPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCl9Z2V0VGFibGUocil7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVy'@; put 'bCgiL3N0YWdlLyIrcil9Z2V0QmFzZVRhYmxlKHIpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEvIityKX1nZXRFZGl0VGFibGUocil7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3IpfWdldEFwcHJJbmRleChyKXtjb25zdCBpPXRoaXMuaGlzdG9y'@; put 'eUFyci5maW5kSW5kZXgobz0+by5UQUJMRV9JRD09PXIudGFibGVJZCk7aT4tMSYmKHRoaXMuYXBwcm92ZURhdGE9dGhpcy5oaXN0b3J5QXJyW2ldLHRoaXMub3Blbk1vZGFsPSEwKX1nZXQgcm93c0xlZnRUb0xvYWQoKXtjb25zdCByPXRoaXMuaGlzdFBhcmFtcy5OT0JTLXRoaXMuaGlzdG9y'@; put 'eS5sZW5ndGgsaT10aGlzLmhpc3RQYXJhbXMuSElTVDtyZXR1cm4gcjw9MD8wOnI+aT9pOnJ9ZG93bmxvYWQocil7bGV0IGk9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksbz1pLnNlcnZlclVybCxhPWkuYXBwTG9jLGw9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgo'@; put 'KTt3aW5kb3cub3BlbihvK2wrIi8/X3Byb2dyYW09IithKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIrcisiJl9jb250ZXh0bmFtZT0iK3RoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUpfWxvYWREYXRhKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24q'@; put 'KCl7bGV0IGk9e1NUQVJUUk9XOnIuaGlzdFBhcmFtcy5ISVNUK3IuaGlzdFBhcmFtcy5TVEFSVFJPV307ci5sb2FkaW5nTW9yZT0hMDt0cnl7bGV0IGEsbz15aWVsZCByLnNhc1N0b3JlU2VydmljZS5nZXRIaXN0b3J5KGksIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvZ2V0aGlzdG9yeSIp'@; put 'O3IubG9hZGluZ01vcmU9ITEsci5oaXN0UGFyYW1zPW8uaGlzdHBhcmFtc1swXTtjb25zdCBsPW8uZnJvbXNhcy5zbGljZSgwLHIubGljZW5jZVN0YXRlLnZhbHVlLmhpc3Rvcnlfcm93c19hbGxvd2VkKTtpZihsLmxlbmd0aD4wKXtjb25zdCB1PWw7ci5oaXN0b3J5QXJyPWwsYT1PYmplY3Qu'@; put 'a2V5cyh1WzBdKSxyLnRhYmxlVGl0bGVzPWE7bGV0IGc9bC5tYXAoZnVuY3Rpb24oRSl7cmV0dXJue3RhYmxlSWQ6RS5UQUJMRV9JRCxzdWJtaXR0ZXI6RS5TVUJNSVRURVIsc3VibWl0dGVkUmVhc29uOkUuU1VCTUlUVEVEX1JFQVNPTl9UWFQsc3VibWl0dGVkOkUuU1VCTUlUVEVELHN0YXR1'@; put 'czpFLlNUQVRVUyxyZXZpZXdSZWFzb246RS5SRVZJRVdfUkVBU09OX1RYVCxyZXZpZXdlcjpFLlJFVklFV0VSLHJldmlld2VkOkUuUkVWSUVXRUQsbnVtT2ZBcHByb3ZhbHM6RS5OVU1fT0ZfQVBQUk9WQUxTX1JFUVVJUkVELGJhc2V0YWJsZTpFLkJBU0VfVEFCTEV9fSk7ci5oaXN0b3J5LnB1'@; put 'c2goLi4uZyksci5sb2FkZWQ9ITB9ZWxzZSByLmxvYWRlZD0hMCwwPT09ci5oaXN0b3J5Lmxlbmd0aCYmKHIubm9EYXRhPSEwKX1jYXRjaChvKXtyLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9nZXRoaXN0b3J5IixvKSxyLmxvYWRpbmdNb3JlPSExfX0pKCl9'@; put 'bmdPbkluaXQoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLmxvYWREYXRhKCl9KSgpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKEYyKSx6ZShCcCksemUodWQpLHplKHZjKSx6ZShpYykpfSx0aGlzLlx1'@; put 'MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtaGlzdG9yeSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczoyMSx2YXJzOjUsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl0sWyJpZCIsIm5vRGF0YUNvbnRhaW5lciIsMSwi'@; put 'Y2FyZC1ibG9jayIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFszLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwt'@; put 'Ym9keSJdLFsxLCJ0YWJsZSJdLFsxLCJsZWZ0Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsImFyaWEtbGFiZWwiLCJDbG9zZSBtb2RhbCIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsImgtNzB2aCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1j'@; put 'ZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJjYXJkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImN1cnNvci1wb2ludGVyIiwidGFibGUt'@; put 'bGluayJdLFsxLCJjdXJzb3ItcG9pbnRlciIsInRhYmxlLWxpbmsiLDMsImNsaWNrIl0sWzEsInNwaW5uZXIiXSxbMSwiY2FyZC1oZWFkZXIiXSxbMSwiY2VudGVyIiwiY2xyLWNvbC1tZC0xMiIsInRleHQtY2VudGVyIl0sWzEsInRleHQtY2VudGVyIiwiZm9udC13ZWlnaHQtNzAwIiwiY29s'@; put 'b3ItZGFyay1ncmF5Il0sWzEsImRhdGFncmlkLWhpc3RvcnkiLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWzEsImxvYWQtbW9yZSIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIs'@; put 'MywiY2xyTG9hZGluZyJdLFszLCJjbHJEZ0ZpZWxkIl0sWyJhcmlhLWxhYmVsIiwiRmlsdGVyIGJhc2UgdGFibGUiLDMsImNsckRnU3RyaW5nRmlsdGVyIl0sWyJhcmlhLWxhYmVsIiwiRmlsdGVyIHN0YXR1cyIsMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbImFyaWEtbGFiZWwiLCJGaWx0ZXIg'@; put 'c3VibWl0dGVyIiwzLCJjbHJEZ1N0cmluZ0ZpbHRlciJdLFsiYXJpYS1sYWJlbCIsIkZpbHRlciBzdWJtaXQgcmVhc29uIiwzLCJjbHJEZ1N0cmluZ0ZpbHRlciJdLFsiYXJpYS1sYWJlbCIsIkZpbHRlciBzdWJtaXR0ZWQgZGF0ZSIsMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbImFyaWEtbGFi'@; put 'ZWwiLCJGaWx0ZXIgcmV2aWV3ZWQgZGF0ZSIsMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbMywiY2xpY2siLDQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xpY2siXSxbMSwidmVyQ2VudGVyIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwibS0wIiwzLCJjbGljayJd'@; put 'LFsxLCJ2ZXJDZW50ZXIiLDMsIm5nQ2xhc3MiXSxbMSwidmVyQ2VudGVyIiwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiYXJpYS1sYWJlbCIsIkRvd25sb2FkIGF1ZGl0IGZpbGUiLDEsImJ0biIsImJ0bi1zdWNjZXNzIiwzLCJjbGljayJdLFsic2hhcGUiLCJk'@; put 'b3dubG9hZCJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJkaXYiLDApLHZ0KDEsYWRuLDQsMCwiZGl2IiwxKSxKKDIsImNsci1tb2RhbCIsMiksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIs'@; put 'ZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8ub3Blbk1vZGFsLGwpfHwoby5vcGVuTW9kYWw9bCksbH0pLEooMywiaDQiLDMpLFNlKDQsIkFwcHJvdmFsIGRldGFpbHMiKSx0ZSgpLEooNSwiZGl2Iiw0KSg2LCJ0YWJsZSIsNSkoNywidGhlYWQiKSg4LCJ0ciIpKDksInRoIiw2KSxTZSgxMCwiTmFt'@; put 'ZSIpLHRlKCksSigxMSwidGgiLDYpLFNlKDEyLCJWYWx1ZSIpLHRlKCkoKSgpLEooMTMsInRib2R5IiksX28oMTQsdWRuLDcsNCwidHIiLG51bGwsQ28pLHRlKCkoKSgpLEooMTYsImRpdiIsNykoMTcsImJ1dHRvbiIsOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBvLm9wZW5Nb2Rh'@; put 'bD0hMX0pLFNlKDE4LCIgT0sgIiksdGUoKSgpKCksdnQoMTksZmRuLDMsMiwiZGl2Iiw5KSx2dCgyMCx5ZG4sNyw0LCJkaXYiLDEwKSx0ZSgpKSwyJmkmJihpZSgpLF90KG8ubm9EYXRhPzE6LTEpLGllKCksZGkoImNsck1vZGFsT3BlbiIsby5vcGVuTW9kYWwpLHJ0KCJjbHJNb2RhbFNpemUi'@; put 'LCJ4bCIpLGllKDEyKSx5byhvLnRhYmxlVGl0bGVzKSxpZSg1KSxfdChvLmxvYWRlZD8tMToxOSksaWUoKSxfdCghby5ub0RhdGEmJm8ubG9hZGVkPzIwOi0xKSl9LGRlcGVuZGVuY2llczpbRmgsTnYsdjQsdHcseE0sTHYsRzUsbncsUk0sT3YsUWIsRHYsSmIsU00sY3UseGQsbWgsJDAsaW1d'@; put 'LGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpfV07bGV0IHhkbj0oKCk9Pnt2YXIgbjtjbGFzcyBle3N0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NW1vZD1HaSh7dHlwZTplfSksdGhpcy5cdTAy'@; put 'NzVpbmo9bWkoe2ltcG9ydHM6W3FvLFdkLmZvckNoaWxkKFRkbiksV2RdfSkpfXJldHVybiBuKCksZX0pKCksQWRuPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdp'@; put 'KHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8saGQseGRuLHEwLEx3LEVtLCR4XX0pKX1yZXR1cm4gbigpLGV9KSgpLGtkbj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1m'@; put 'dW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtcmV2aWV3LXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxzdGFuZGFsb25lOiExLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0'@; put 'aW9uKGksbyl7MSZpJiZJdCgwLCJyb3V0ZXItb3V0bGV0Iil9LGRlcGVuZGVuY2llczpbZTddLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpO2Z1bmN0aW9uIHJHZShuLGUsdCl7cmV0dXJuIHQmJmU/ZTpufWNvbnN0IFJkbj0obixlKT0+KHtyZWplY3RlZDpuLGFjY2VwdGVk'@; put 'OmV9KTtmdW5jdGlvbiBJZG4obixlKXsxJm4mJihKKDAsInNwYW4iLDMpLFNlKDEsIiBMb2FkaW5nLi4uICIpLHRlKCkpfWZ1bmN0aW9uIERkbihuLGUpezEmbiYmKEooMCwiZGl2IikoMSwiaDMiKSxTZSgyLCJMb2FkaW5nIHN1Ym1pdHRlZCB0YWJsZSIpLHRlKCkoKSl9ZnVuY3Rpb24gTGRu'@; put 'KG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDIpLHZ0KDEsSWRuLDIsMCwic3BhbiIsMyksdnQoMixEZG4sMywwLCJkaXYiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLF90KHQubG9hZGVkPy0xOjEpLGllKCksX3QodC5sb2FkZWQ/LTE6Mil9fWZ1bmN0aW9uIE9kbihuLGUpe2lmKDEm'@; put 'bil7Y29uc3QgdD13bigpO0ooMCwiYnV0dG9uIiwyOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5hcHByb3ZlVGFibGVTY3JlZW4oKSl9KSxTZSgxLCIgQXBwcm92ZSAiKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgyKTtydCgiZGlzYWJsZWQiLCJBUFBS'@; put 'T1ZFRCI9PT0obnVsbD09dC50YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKXx8IlJFSkVDVEVEIj09PShudWxsPT10LnRhYmxlRGV0YWlscz9udWxsOnQudGFibGVEZXRhaWxzLlJFVklFV19TVEFUVVNfSUQpKSgiZGlzYWJsZWQiLHQucmV2ZXJ0aW5n'@; put 'Q2hhbmdlcyl9fWZ1bmN0aW9uIE5kbihuLGUpezEmbiYmKEooMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMzEpKDEsInNwYW4iKSxTZSgyLCIgUmV2ZXJ0IHRoaXMgYW5kIGFsbCBzdWJzZXF1ZW50IGNoYW5nZXMgIiksdGUoKSgpKX1mdW5jdGlvbiBGZG4obixlKXtpZigxJm4pe2NvbnN0IHQ9'@; put 'd24oKTtKKDAsImJ1dHRvbiIsMjkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikucmV2ZXJ0Q2hhbmdlcygpKX0pLFNlKDEsIiBSRVZFUlQgIiksWW4oMixOZG4sMywwLCJjbHItdG9vbHRpcC1jb250ZW50IiwzMCksdGUoKX0yJm4mJnJ0KCJjbHJMb2FkaW5n'@; put 'IixUZSgyKS5yZXZlcnRpbmdDaGFuZ2VzKX1mdW5jdGlvbiBQZG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIpKDEsImRpdiIsNCkoMiwiZGl2Iiw1KSgzLCJoNCIsNiksU2UoNCwiU3RhZ2VkIERhdGEiKSx0ZSgpKCkoKSxKKDUsImRpdiIsNykoNiwiZGl2Iiw4KSg3LCJk'@; put 'aXYiLDkpKDgsImRpdiIsNSksU2UoOSwiQmFzaWMgU3VibWl0dGVkIERldGFpbHMiKSx0ZSgpKCksSigxMCwiZGl2IikoMTEsInNwYW4iKSxTZSgxMiwiVGFibGUgSWQ6IiksdGUoKSxKKDEzLCJzdHJvbmciKSgxNCwic3BhbiIpLFNlKDE1KSx0ZSgpKCkoKSxKKDE2LCJkaXYiKSgxNywic3Bh'@; put 'biIpLFNlKDE4LCJCYXNlIFRhYmxlOiIpLHRlKCksSigxOSwiYSIsMTApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS52aWV3ZXJUYWJsZVNjcmVlbigpKX0pLFNlKDIwKSx0ZSgpKCksSigyMSwiZGl2IikoMjIsInNwYW4iKSxTZSgyMywiU3VibWl0IERhdGU6'@; put 'IiksdGUoKSxKKDI0LCJzcGFuIiwxMSksU2UoMjUpLHRlKCkoKSxKKDI2LCJkaXYiKSgyNywic3BhbiIpLFNlKDI4LCJSZXZpZXcgU3RhdHVzOiIpLHRlKCksSigyOSwic3BhbiIsMTIpLFNlKDMwKSx0ZSgpKCkoKSxKKDMxLCJkaXYiLDEzKSgzMiwiZGl2Iiw5KSgzMywiZGl2Iiw1KSxTZSgz'@; put 'NCwiQWN0aW9ucyIpLHRlKCkoKSxKKDM1LCJkaXYiLDE0KSgzNiwiZGl2IiwxNSkoMzcsImJ1dHRvbiIsMTYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS52aWV3ZXJUYWJsZVNjcmVlbigpKX0pLFNlKDM4LCIgVmlldyBiYXNlIHRhYmxlICIpLHRlKCksdnQo'@; put 'MzksT2RuLDIsMiwiYnV0dG9uIiwxNyksSig0MCwiYnV0dG9uIiwxOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmdvQmFjaygpKX0pLFNlKDQxLCIgRWRpdCBiYXNlIHRhYmxlICIpLHRlKCksSig0MiwiYnV0dG9uIiwxOSksd3QoImNsaWNrIixmdW5jdGlv'@; put 'bigpe1llKHQpO2NvbnN0IGk9VGUoKTtyZXR1cm4gWGUoaS5kb3dubG9hZChudWxsPT1pLnRhYmxlRGV0YWlscz9udWxsOmkudGFibGVEZXRhaWxzLlRBQkxFX0lEKSl9KSxJdCg0MywiY2xyLWljb24iLDIwKSx0ZSgpLEooNDQsImNsci10b2dnbGUtY29udGFpbmVyIiwyMSkoNDUsImNsci10'@; put 'b2dnbGUtd3JhcHBlciIpKDQ2LCJpbnB1dCIsMjIpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCk7cmV0dXJuIGZpKG8uZm9ybWF0dGVkVmFsdWVzLGkpfHwoby5mb3JtYXR0ZWRWYWx1ZXM9aSksWGUoaSl9KSx3dCgiY2hhbmdlIixmdW5jdGlvbigp'@; put 'e3JldHVybiBZZSh0KSxYZShUZSgpLmZvcm1hdHRpbmdDaGFuZ2VkKCkpfSksdGUoKSxKKDQ3LCJsYWJlbCIsMjMpLFNlKDQ4KSx0ZSgpKCkoKSxKKDQ5LCJjbHItdG9vbHRpcCIpLHZ0KDUwLEZkbiwzLDEsImJ1dHRvbiIsMjQpLHRlKCkoKSgpKCkoKSxKKDUxLCJkaXYiLDI1KSxJdCg1Miwi'@; put 'aG90LXRhYmxlIiwyNiksdGUoKSxJdCg1MywiZGl2IiwyNyksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKTtpZSgxNSksU3IoIiAiLG51bGw9PXQudGFibGVEZXRhaWxzP251bGw6dC50YWJsZURldGFpbHMuVEFCTEVfSUQpLGllKDUpLFNyKCIgIixudWxsPT10LnRhYmxlRGV0YWlscz9udWxs'@; put 'OnQudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUsIiAiKSxpZSg1KSxTcigiICIsbnVsbD09dC50YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5TVUJNSVRURURfT05fRFRUTSwiICIpLGllKDQpLHJ0KCJuZ0NsYXNzIixONSgxNCxSZG4sIlJFSkVDVEVEIj09PShudWxsPT10LnRhYmxl'@; put 'RGV0YWlscz9udWxsOnQudGFibGVEZXRhaWxzLlJFVklFV19TVEFUVVNfSUQpLCJBUFBST1ZFRCI9PT0obnVsbD09dC50YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKSkpLFJyKCJhcmlhLWxhYmVsIiwiUmV2aWV3IHN0YXR1czogIisobnVsbD09dC50'@; put 'YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKSksaWUoKSxTcigiICIsbnVsbD09dC50YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lELCIgIiksaWUoNykscnQoImRpc2FibGVkIix0LnJldmVydGluZ0NoYW5nZXMp'@; put 'LGllKDIpLF90KCJZRVMiIT09KG51bGw9PXQudGFibGVEZXRhaWxzP251bGw6dC50YWJsZURldGFpbHMuQUxMT1dfUkVTVE9SRSk/Mzk6LTEpLGllKCkscnQoImRpc2FibGVkIix0LnJldmVydGluZ0NoYW5nZXMpLGllKDYpLGRpKCJuZ01vZGVsIix0LmZvcm1hdHRlZFZhbHVlcyksaWUoMiks'@; put 'cHIodC5mb3JtYXR0ZWRWYWx1ZXM/IkZvcm1hdHRlZCI6IlVuZm9ybWF0dGVkIiksaWUoMiksX3QoIllFUyI9PT0obnVsbD09dC50YWJsZURldGFpbHM/bnVsbDp0LnRhYmxlRGV0YWlscy5BTExPV19SRVNUT1JFKT81MDotMSksaWUoMikscnQoImRhdGEiLHQuaG90VGFibGUuZGF0YSkoInNl'@; put 'dHRpbmdzIix0LmhvdFRhYmxlU2V0dGluZ3MoKSl9fWNvbnN0IEhkbj1be3BhdGg6Ijp0YWJsZUlkIixjb21wb25lbnQ6KCgpPT57dmFyIG47Y2xhc3MgZXtidWlsZEhvdFNldHRpbmdzKCl7cmV0dXJuey4uLnRoaXMuaG90VGFibGUuc2V0dGluZ3MsY29sSGVhZGVyczp0aGlzLmhvdFRhYmxl'@; put 'LmNvbEhlYWRlcnMsY29sdW1uczp0aGlzLmhvdFRhYmxlLmNvbHVtbnMsbWF4Um93czp0aGlzLmhvdFRhYmxlLm1heFJvd3MsaGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LGxpY2Vuc2VLZXk6dGhpcy5ob3RUYWJsZS5saWNlbnNlS2V5LGFmdGVyR2V0Q29sSGVhZGVyOnRoaXMuaG90VGFi'@; put 'bGUuYWZ0ZXJHZXRDb2xIZWFkZXIsYWZ0ZXJJbml0OnRoaXMuaG90VGFibGUuYWZ0ZXJJbml0LHN0cmV0Y2hIOiJhbGwiLGNlbGxzOnRoaXMuaG90VGFibGUuY2VsbHMsY2xhc3NOYW1lOiJodERhcmsiLHRoZW1lOiJodC10aGVtZS1jbGFzc2ljIn19Y29uc3RydWN0b3IocixpLG8sYSxsLHUp'@; put 'e3RoaXMubGljZW5jZVNlcnZpY2U9cix0aGlzLnNhc1N0b3JlU2VydmljZT1pLHRoaXMuZXZlbnRTZXJ2aWNlPW8sdGhpcy5yb3V0ZT1hLHRoaXMucm91dGVyPWwsdGhpcy5zYXNTZXJ2aWNlPXUsdGhpcy5sb2FkZWQ9ITEsdGhpcy5yZXZlcnRpbmdDaGFuZ2VzPSExLHRoaXMuZm9ybWF0dGVk'@; put 'VmFsdWVzPSEwLHRoaXMucmF3U3RhZ2VUYWJsZT1bXSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10sY29sdW1uczpbXSxoZWlnaHQ6NTAwLHNldHRpbmdzOnthcmlhVGFnczohMSx0'@; put 'YWJsZUNsYXNzTmFtZToiaHRDZW50ZXIiLG91dHNpZGVDbGlja0Rlc2VsZWN0czohMSxhdXRvV3JhcFJvdzohMSxhdXRvV3JhcENvbDohMX0sbGljZW5zZUtleTp2b2lkIDAsbWF4Um93czp0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdGFnZV9yb3dzX2FsbG93ZWR8fDEvMCxhZnRlckdldENv'@; put 'bEhlYWRlcjooZyxFLE8pPT57RS5jbGFzc0xpc3QuYWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9LGFmdGVySW5pdDooKT0+e3RoaXMuZml4Rm9jdXNDYXRjaGVyQWNjZXNzaWJpbGl0eSgpfX0sdGhpcy5ob3RUYWJsZVNldHRpbmdzPUIxKHRoaXMuYnVpbGRIb3RT'@; put 'ZXR0aW5ncygpKX1zdWJtaXR0ZWRUYWJsZVNjcmVlbigpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrdGhpcy50YWJsZV9pZCl9YXBwcm92ZVRhYmxlU2NyZWVuKCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvcmV2aWV3L2FwcHJvdmVEZXQvIit0aGlzLnRhYmxlX2lk'@; put 'KX12aWV3ZXJUYWJsZVNjcmVlbigpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iK3RoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUpfWdvQmFjaygpe1VuLnhsbWFwcy5maW5kKGk9PmkudGFyZ2V0RFM9PT10aGlzLnRhYmxlRGV0YWlscy5CQVNFX1RBQkxFKT90aGlz'@; put 'LnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9ob21lL2V4Y2VsLW1hcHMvIit0aGlzLmhvdFRhYmxlLmRhdGFbMF0uWExNQVBfSUQpOnRoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUpfWZvcm1hdHRpbmdDaGFuZ2VkKCl7dGhpcy5o'@; put 'b3RUYWJsZS5kYXRhPXJHZSh0aGlzLnJhd1N0YWdlVGFibGUsdGhpcy5mbXRTdGFnZVRhYmxlLHRoaXMuZm9ybWF0dGVkVmFsdWVzKX1kb3dubG9hZChyKXtsZXQgaT10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSxvPWkuc2VydmVyVXJsLGE9aS5hcHBMb2MsbD10aGlzLnNhc1Nl'@; put 'cnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVuKG8rbCsiLz9fcHJvZ3JhbT0iK2ErIi9zZXJ2aWNlcy9hdWRpdG9ycy9nZXRhdWRpdGZpbGUmdGFibGU9IityKX1uZ09uSW5pdCgpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe2lmKHIubGljZW5jZVNlcnZpY2Uu'@; put 'aG90X2xpY2Vuc2Vfa2V5LnN1YnNjcmliZShpPT57ci5ob3RUYWJsZS5saWNlbnNlS2V5PWksci5ob3RUYWJsZVNldHRpbmdzLnNldChyLmJ1aWxkSG90U2V0dGluZ3MoKSl9KSx0eXBlb2Ygci5yb3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ8InUiKXtyLnRhYmxlX2lkPXIucm91dGVy'@; put 'LnNuYXBzaG90LnBhcmFtcy50YWJsZUlkO3RyeXtsZXQgaT15aWVsZCByLnNhc1N0b3JlU2VydmljZS5nZXRDaGFuZ2VJbmZvKHIudGFibGVfaWQpO2lmKCFpfHwhaS5qc3BhcmFtcyl0aHJvdyBuZXcgRXJyb3IoImpzcGFyYW1zIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSByZXNwb25zZS4i'@; put 'KTtyLnRhYmxlRGV0YWlscz1pLmpzcGFyYW1zWzBdfWNhdGNoKGkpe2xldCBvPXt9O2kuTUVTU0FHRT9vPWk6by5NRVNTQUdFPWksci5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJwdWJsaWMvZ2V0Y2hhbmdlaW5mbyIsbyl9dHJ5e2xldCBpPXlpZWxkIHIuc2FzU3RvcmVTZXJ2'@; put 'aWNlLm9wZW5UYWJsZShyLnRhYmxlX2lkKTtpZighaXx8IWkuc3RhZ2V0YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlN0YWdldGFibGUgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHJlc3BvbnNlLiIpO2xldCBvPWkuc3RhZ2V0YWJsZVswXSxhPVtdLGw9W107Zm9yKGxldCBnIGluIG8pbyYmYS5w'@; put 'dXNoKGcpO2ZvcihsZXQgZz0wO2c8YS5sZW5ndGg7ZysrKWwucHVzaCh7ZGF0YTphW2ddfSk7bGV0IHU9ZnVuY3Rpb24oKXtyZXR1cm57cmVhZE9ubHk6ITB9fTtyLnJhd1N0YWdlVGFibGU9aS5zdGFnZXRhYmxlLHIuZm10U3RhZ2VUYWJsZT1pLmZtdF9zdGFnZXRhYmxlLHIuaG90VGFibGUu'@; put 'ZGF0YT1yR2Uoci5yYXdTdGFnZVRhYmxlLHIuZm10U3RhZ2VUYWJsZSxyLmZvcm1hdHRlZFZhbHVlcyksci5ob3RUYWJsZS5jb2xIZWFkZXJzPWEsci5ob3RUYWJsZS5jb2x1bW5zPWwsci5ob3RUYWJsZS5jZWxscz11LHIuaG90VGFibGVTZXR0aW5ncy5zZXQoci5idWlsZEhvdFNldHRpbmdz'@; put 'KCkpLHIubG9hZGVkPSEwLHIuc2V0Rm9jdXMoKX1jYXRjaChpKXtsZXQgbz17fTtpLk1FU1NBR0V8fChvLk1FU1NBR0U9aSksci5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhdWRpdG9ycy9nZXRzdGFnZXRhYmxlIixvKSxyLmxvYWRlZD0hMX19fSkoKX1uZ0FmdGVyVmlld0lu'@; put 'aXQoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5maXhGb2N1c0NhdGNoZXJBY2Nlc3NpYmlsaXR5KCl9LDUwMCl9cmV2ZXJ0Q2hhbmdlcygpe3RoaXMucmV2ZXJ0aW5nQ2hhbmdlcz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiZWRpdG9ycy9yZXN0b3JlIix7cmVzdG9yZV9pbjpbe2xvYWRf'@; put 'cmVmOnRoaXMudGFibGVfaWR9XX0pLnRoZW4oaT0+e2kuYWRhcHRlclJlc3BvbnNlLnJlc3RvcmVfb3V0JiZ0aGlzLnJvdXRlLm5hdmlnYXRlKFsiL3N0YWdlIl0pLnRoZW4oKCk9Pnt0aGlzLnJvdXRlLm5hdmlnYXRlKFtgL3N0YWdlLyR7aS5hZGFwdGVyUmVzcG9uc2UucmVzdG9yZV9vdXRb'@; put 'MF0uTE9BRFJFRn1gXSl9KX0pLmZpbmFsbHkoKCk9Pnt0aGlzLnJldmVydGluZ0NoYW5nZXM9ITF9KX1zZXRGb2N1cygpe3NldFRpbWVvdXQoKCk9PntsZXQgcj13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcHJvdmFsLWJ0biIpO3ImJnIuZm9jdXMoKX0sMjAwKX1maXhGb2N1'@; put 'c0NhdGNoZXJBY2Nlc3NpYmlsaXR5KCl7c2V0VGltZW91dCgoKT0+e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5odEZvY3VzQ2F0Y2hlciIpLmZvckVhY2goKGksbyk9PntpZihpKXtpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYFRhYmxlIGZvY3VzIGNhdGNoZXIgJHtvKzF9YCks'@; put 'aS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGkuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7YS5zZXRBdHRyaWJ1dGUoImZv'@; put 'ciIsaS5pZHx8YGh0Rm9jdXNDYXRjaGVyJHtvfWApLGEuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSxhLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGEudGV4dENvbnRlbnQ9YFRhYmxlIGZvY3VzIGNhdGNoZXIgJHtvKzF9YCxpLnBhcmVudE5vZGU/Lmluc2VydEJlZm9yZShhLGkp'@; put 'fX0pfSwxMDApfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKEYyKSx6ZShCcCksemUodWQpLHplKHZjKSx6ZShwMSksemUoaWMpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLXN0YWdlIl1d'@; put 'LGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxzdGFuZGFsb25lOiExLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjbHItY29sLW1kLTEyIiwiY2FyZCJdLFsxLCJoLTgwdmgiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwi'@; put 'ZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwic3Bpbm5lciJdLFsibmctaWYiLCJsb2FkZWQiLDEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtdGl0bGUiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtdC0wIl0sWyJuZy1pZiIsImxvYWRlZCIsMSwiY2xyLXJvdyJdLFsxLCJjYXJk'@; put 'LWJsb2NrIiwiY2xyLWNvbC1tZC02Iiwibm8tYm9yZGVycyJdLFsxLCJjYXJkLWhlYWRlciIsInB5LTUiXSxbMSwiYmFzZVRhYmxlTGluayIsMywiY2xpY2siXSxbMSwibXQtMTAiXSxbInJvbGUiLCJzdGF0dXMiLDEsIm10LTEwIiwzLCJuZ0NsYXNzIl0sWzEsImNsci1jb2wtbWQtNiIsImNh'@; put 'cmQtYmxvY2siLCJuby1ib3JkZXJzIl0sWzEsIm10LTIwIl0sWzEsInJvdyIsInN0YWdlLWFjdGlvbnMtcm93Il0sWyJhcmlhLWxhYmVsIiwiVmlldyBiYXNlIHRhYmxlIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsInRleHQtY2VudGVyIiwibXItNWkiLDMsImNsaWNrIiwiZGlz'@; put 'YWJsZWQiXSxbImlkIiwiYXBwcm92YWwtYnRuIiwiYXJpYS1sYWJlbCIsIkFwcHJvdmUgdGFibGUiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsIm1yLTVpIiwzLCJkaXNhYmxlZCJdLFsiYXJpYS1sYWJlbCIsIkVkaXQgYmFzZSB0YWJsZSIs'@; put 'MSwiYnRuIiwiYnRuLXNtIiwiYnRuLWluZm8tb3V0bGluZSIsInRleHQtY2VudGVyIiwibXItNWkiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbImFyaWEtbGFiZWwiLCJEb3dubG9hZCBhdWRpdCBmaWxlIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsInRleHQtY2VudGVyIiwibXIt'@; put 'NWkiLCJtaW4tdy0wIiwzLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsxLCJtLTAiLCJmbGV4LXNocmluay0wIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLCJjaGVja2VkIiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2hhbmdl'@; put 'IiwibmdNb2RlbCJdLFsxLCJmb3JtYXR0ZWQtdmFsdWVzLXRvZ2dsZSJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJhcmlhLWxhYmVsIiwiUmV2ZXJ0IHRoaXMgYW5kIGFsbCBzdWJzZXF1ZW50IGNoYW5nZXMiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1kYW5nZXIiLCJ0ZXh0LWNlbnRlciIs'@; put 'Im10LTIwIiwzLCJjbHJMb2FkaW5nIl0sWzEsImNhcmQtYmxvY2siXSxbImlkIiwiaG90VGFibGUiLCJhcmlhLWxhYmVsIiwiU3RhZ2VkIGRhdGEgdGFibGUiLDMsImRhdGEiLCJzZXR0aW5ncyJdLFsxLCJjYXJkLWZvb3RlciIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxb'@; put 'ImlkIiwiYXBwcm92YWwtYnRuIiwiYXJpYS1sYWJlbCIsIkFwcHJvdmUgdGFibGUiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsIm1yLTVpIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsImFyaWEtbGFi'@; put 'ZWwiLCJSZXZlcnQgdGhpcyBhbmQgYWxsIHN1YnNlcXVlbnQgY2hhbmdlcyIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWRhbmdlciIsInRleHQtY2VudGVyIiwibXQtMjAiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJsZyIs'@; put 'NCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0IiwiY2xyU2l6ZSIsImxnIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJtYWluIiwwKSgxLCJkaXYiLDEpLHZ0KDIsTGRuLDMsMiwiZGl2IiwyKSx2dCgzLFBkbiw1NCwxNywiZGl2IiksdGUoKSgp'@; put 'KSwyJmkmJihpZSgyKSxfdChvLmxvYWRlZD8tMToyKSxpZSgpLF90KG8ubG9hZGVkPzM6LTEpKX0sZGVwZW5kZW5jaWVzOltGaCxIMixvYyxYbCxjdSwkMCxMcCxpbSxlbCxVMixFdixGZix3dixTdixDdixMN10sc3R5bGVzOlsiLnN0YWdlLWFjdGlvbnMtcm93IGNsci10b2dnbGUtY29udGFp'@; put 'bmVye2Rpc3BsYXk6aW5saW5lLWZsZXg7d2lkdGg6YXV0bzttYXJnaW4tdG9wOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfVxuIl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCl9XTtsZXQgVmRuPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUw'@; put 'Mjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8saGQscTAsV2QuZm9yQ2hpbGQoSGRuKSxMd119KSl9cmV0dXJuIG4oKSxlfSkoKTtmdW5jdGlvbiBCZG4obixlKXtpZigx'@; put 'Jm4mJihKKDAsInAiLDEwKSxTZSgxLCIgVmlld2VyIHJvd3MgbGltaXQ6ICIpLEooMiwic3BhbiIsNyksU2UoMyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgzKSxwcih0LmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3ZXJfcm93c19hbGxvd2VkKX19ZnVuY3Rpb24gamRuKG4sZSl7aWYo'@; put 'MSZuJiYoSigwLCJwIiwxMCksU2UoMSwiIEVkaXRvciByb3dzIGxpbWl0OiAiKSxKKDIsInNwYW4iLDcpLFNlKDMpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMykscHIodC5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCl9fWZ1bmN0aW9uIFVkbihuLGUpe2lm'@; put 'KDEmbiYmKEooMCwicCIsMTApLFNlKDEsIiBTdGFnZSByb3dzIGxpbWl0OiAiKSxKKDIsInNwYW4iLDcpLFNlKDMpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMykscHIodC5saWNlbmNlU3RhdGUudmFsdWUuc3RhZ2Vfcm93c19hbGxvd2VkKX19ZnVuY3Rpb24gemRuKG4sZSl7aWYo'@; put 'MSZuJiYoSigwLCJwIiwxMCksU2UoMSwiIEhpc3Rvcnkgcm93cyBsaW1pdDogIiksSigyLCJzcGFuIiw3KSxTZSgzKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKDMpLHByKHQubGljZW5jZVN0YXRlLnZhbHVlLmhpc3Rvcnlfcm93c19hbGxvd2VkKX19ZnVuY3Rpb24gV2RuKG4sZSl7'@; put 'aWYoMSZuJiYoSigwLCJwIiwxMCksU2UoMSwiIFN1Ym1pdCByb3dzIGxpbWl0OiAiKSxKKDIsInNwYW4iLDcpLFNlKDMpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMykscHIodC5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQpfX1mdW5jdGlvbiBZZG4obixlKXtp'@; put 'ZigxJm4mJihKKDAsInAiLDEwKSxTZSgxLCIgVGFibGVzIGluIGxpYnJhcnkgbGltaXQ6ICIpLEooMiwic3BhbiIsNyksU2UoMyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgzKSxwcih0LmxpY2VuY2VTdGF0ZS52YWx1ZS50YWJsZXNfaW5fbGlicmFyeV9saW1pdCl9fWZ1bmN0aW9u'@; put 'IFpkbihuLGUpe2lmKDEmbiYmKEooMCwicCIsMTApLFNlKDEsIiBWaWV3Ym94ZXMgbGltaXQ6ICIpLEooMiwic3BhbiIsNyksU2UoMyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgzKSxwcih0LmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0KX19ZnVuY3Rpb24gR2RuKG4s'@; put 'ZSl7aWYoMSZuJiYoSigwLCJwIiwxMCksU2UoMSwiIExpbmVhZ2UgZGFpbHkgbGltaXQ6ICIpLEooMiwic3BhbiIsNyksU2UoMyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgzKSxwcih0LmxpY2VuY2VTdGF0ZS52YWx1ZS5saW5lYWdlX2RhaWx5X2xpbWl0KX19ZnVuY3Rpb24gJGRu'@; put 'KG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDE2KSxTZSgxLCIgUmVmcmVzaCBEYXRhIExpbmVhZ2UgIiksSigyLCJidXR0b24iLDE3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLnJlZnJlc2hEYXRhTGluZWFnZSgpKX0pLFNlKDMsIiBS'@; put 'RUZSRVNIICIpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMik7aWUoMikscnQoImNsckxvYWRpbmciLHQucmVmcmVzaGluZ0RhdGFMaW5lYWdlKX19ZnVuY3Rpb24gcWRuKG4sZSl7MSZuJiYoSigwLCJjbHItdG9vbHRpcC1jb250ZW50IiwyNiksU2UoMSwiIEVudGVyIHRoZSB0YXJnZXQg'@; put 'REMgbGlicmFyeSBhbmQgdGhlIGRvd25sb2FkZWQgZmlsZXMgd2lsbCBjb250YWluIHRoaXMsIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsLiAiKSx0ZSgpKX1mdW5jdGlvbiBLZG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTt2dCgwLCRkbiw0LDEsImRpdiIsMTYpLEooMSwiZGl2IiwxNiks'@; put 'U2UoMiwiIFJlZnJlc2ggRGF0YSBDYXRhbG9nICIpLEooMywiYnV0dG9uIiwxNyksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnJlZnJlc2hEYXRhQ2F0YWxvZygpKX0pLFNlKDQsIiBSRUZSRVNIICIpLHRlKCkoKSxKKDUsImRpdiIsMTYpLFNlKDYsIiBEb3du'@; put 'bG9hZCBDb25maWd1cmF0aW9uICIpLEooNywiZGl2IiwxOCkoOCwiY2xyLXRvb2x0aXAiLDE5KSg5LCJsYWJlbCIsMjApLFNlKDEwLCIgVGFyZ2V0IERDIExpYnJhcnkgIiksSXQoMTEsImNkcy1pY29uIiwyMSksdGUoKSxZbigxMixxZG4sMiwwLCJjbHItdG9vbHRpcC1jb250ZW50IiwyMiks'@; put 'dGUoKSxKKDEzLCJpbnB1dCIsMjMpLHd0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gWWUodCksWGUoVGUoKS50YXJnZXRMaWJyZWY9aS50b1VwcGVyQ2FzZSgpKX0pLHRlKCkoKSxKKDE0LCJidXR0b24iLDI0KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQp'@; put 'LFhlKFRlKCkuZG93bmxvYWRDb25maWd1cmF0aW9uKCkpfSksU2UoMTUsIiBET1dOTE9BRCAiKSx0ZSgpKCksSigxNiwiZGl2IiwxNiksU2UoMTcsIiBVcGRhdGUgTGljZW5jZSBLZXkgIiksSigxOCwiYnV0dG9uIiwyNSksU2UoMTksIiBVUERBVEUgIiksdGUoKSgpfWlmKDImbil7Y29uc3Qg'@; put 'dD1UZSgpO190KCJTQVM5Ij09PXQuc2VydmVyVHlwZT8wOi0xKSxpZSgzKSxydCgiY2xyTG9hZGluZyIsdC5yZWZyZXNoaW5nRGF0YUNhdGFsb2cpLGllKDEwKSxydCgibmdNb2RlbCIsdC5kY0xpYiksaWUoKSxydCgiZGlzYWJsZWQiLHQudGFyZ2V0TGlicmVmIT09dC5kY0xpYiYmIXQuaXNW'@; put 'YWxpZExpYnJlZih0LnRhcmdldExpYnJlZikpfX1jb25zdCBYZG49W3twYXRoOiIiLGNvbXBvbmVudDooKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEpe3RoaXMuYXBwU2VydmljZT1yLHRoaXMuc2FzU2VydmljZT1pLHRoaXMubGljZW5jZVNlcnZpY2U9byx0aGlzLmFw'@; put 'cFNldHRpbmdzU2VydmljZT1hLHRoaXMuYXBwSW5mbz17YWRhcHRlclZlcnNpb246IjQuMTkuMCIsYXBwVmVyc2lvbjoidjcuMTYuMCIucmVwbGFjZSgidiIsIiIpLGJ1aWxkVGltZXN0YW1wOlNwKCkocGFyc2VJbnQoIjE3OTA1ODY1ODcxNTciKSkuZm9ybWF0KCJERC1NTU0tWVlZWSBISDpN'@; put 'TSIpfSx0aGlzLmh0dHA9Imh0dHA6Ij09PWxvY2F0aW9uLnByb3RvY29sLHRoaXMucmVmcmVzaGluZ0RhdGFDYXRhbG9nPSExLHRoaXMucmVmcmVzaGluZ0RhdGFMaW5lYWdlPSExLHRoaXMucmVzcG9uc2U9Ik5vIHJlc3BvbnNlIix0aGlzLnJlc3BvbnNlTW9kYWw9ITEsdGhpcy5JbmZpbml0'@; put 'eT0xLzAsdGhpcy5kY0xpYj1Vbi5kY0xpYix0aGlzLnRhcmdldExpYnJlZj1Vbi5kY0xpYix0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLnNlcnZlclR5cGU9dGhpcy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSx0aGlzLmxpY2VuY2VJ'@; put 'bmZvPXRoaXMubGljZW5jZVNlcnZpY2UuZ2V0TGljZW5zZUtleURhdGEoKSx0aGlzLmVudmlyb25tZW50SW5mbz10aGlzLmFwcFNlcnZpY2UuZ2V0RW52aXJvbm1lbnRJbmZvKCksdGhpcy5zZXR0aW5ncz10aGlzLmFwcFNldHRpbmdzU2VydmljZS5zZXR0aW5ncy52YWx1ZSx0aGlzLmVudmly'@; put 'b25tZW50SW5mby5BVVRPRVhFQyYmKHRoaXMuZW52aXJvbm1lbnRJbmZvLkFVVE9FWEVDPWRlY29kZVVSSUNvbXBvbmVudCh0aGlzLmVudmlyb25tZW50SW5mby5BVVRPRVhFQykpLHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnN1YnNjcmliZShsPT57dGhpcy5zZXR0aW5ncz1s'@; put 'fSl9bmdPbkluaXQoKXt9c2V0dGluZ0NoYW5nZShyKXt0aGlzLmFwcFNldHRpbmdzU2VydmljZS5zZXRBcHBTZXR0aW5ncyh0aGlzLnNldHRpbmdzKX1pc1ZhbGlkTGlicmVmKHIpe3JldHVybi9eW0EtWmEtel9dXHd7MCw3fSQvLnRlc3Qoci50cmltKCkpfWRvd25sb2FkQ29uZmlndXJhdGlv'@; put 'bigpe2xldCByPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLGk9ci5zZXJ2ZXJVcmwsbz1yLmFwcExvYyxhPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCksbD10aGlzLnRhcmdldExpYnJlZi50b1VwcGVyQ2FzZSgpLnRyaW0oKSx1PWkrYSsiLz9fcHJvZ3JhbT0i'@; put 'K28rIi9zZXJ2aWNlcy9hZG1pbi9leHBvcnRjb25maWciO2wmJmwhPT10aGlzLmRjTGliJiZ0aGlzLmlzVmFsaWRMaWJyZWYobCkmJih1Kz0iJmRjbGliPSIrZW5jb2RlVVJJQ29tcG9uZW50KGwpKSx3aW5kb3cub3Blbih1KX1yZWZyZXNoRGF0YUNhdGFsb2coKXt0aGlzLnJlZnJlc2hpbmdE'@; put 'YXRhQ2F0YWxvZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiYWRtaW4vcmVmcmVzaGNhdGFsb2ciLG51bGwpLnRoZW4ocj0+e3RoaXMucmVzcG9uc2U9dGhpcy5wYXJzZVJlc3BvbnNlKHIuYWRhcHRlclJlc3BvbnNlKSx0aGlzLnJlc3BvbnNlTW9kYWw9ITB9KS5jYXRjaChyPT57dGhp'@; put 'cy5yZXNwb25zZT10aGlzLnBhcnNlUmVzcG9uc2Uoci5hZGFwdGVyUmVzcG9uc2UpLHRoaXMucmVzcG9uc2VNb2RhbD0hMH0pLmZpbmFsbHkoKCk9Pnt0aGlzLnJlZnJlc2hpbmdEYXRhQ2F0YWxvZz0hMX0pfXJlZnJlc2hEYXRhTGluZWFnZSgpe3RoaXMucmVmcmVzaGluZ0RhdGFMaW5lYWdl'@; put 'PSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJhZG1pbi9yZWZyZXNodGFibGVsaW5lYWdlIixudWxsKS50aGVuKHI9Pnt0aGlzLnJlc3BvbnNlPXRoaXMucGFyc2VSZXNwb25zZShyLmFkYXB0ZXJSZXNwb25zZSksdGhpcy5yZXNwb25zZU1vZGFsPSEwfSkuY2F0Y2gocj0+e3RoaXMucmVz'@; put 'cG9uc2U9dGhpcy5wYXJzZVJlc3BvbnNlKHIuYWRhcHRlclJlc3BvbnNlKSx0aGlzLnJlc3BvbnNlTW9kYWw9ITB9KS5maW5hbGx5KCgpPT57dGhpcy5yZWZyZXNoaW5nRGF0YUxpbmVhZ2U9ITF9KX1wYXJzZVJlc3BvbnNlKHIpe3JldHVybiJvYmplY3QiPT10eXBlb2Ygcj9KU09OLnN0cmlu'@; put 'Z2lmeShyKTpyfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKHV6KSx6ZShpYyksemUoRjIpLHplKEpVKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1zeXN0ZW0iXV0saG9zdEF0dHJzOlsx'@; put 'LCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6MTUwLHZhcnM6MzksY29uc3RzOltbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiLCJwLTEwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsImNsci1qdXN0aWZ5LWNv'@; put 'bnRlbnQtY2VudGVyIl0sWzEsInRleHQtY2VudGVyIiwibS0wIl0sWzEsInctMTAwIiwibGlnaHQiXSxbMSwiY29udGVudC1ib3giLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iXSxbMSwic3lzLWluZm8iLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1mbGV4'@; put 'LWNvbHVtbiIsImNsci1mbGV4LWxnLXJvdyJdLFsiY2RzLXRleHQiLCJzdWJzZWN0aW9uIiwxLCJtYi0xMCJdLFsxLCJkYXJrIl0sWyJjZHMtdGV4dCIsImxhYmVsIiwxLCJtLTAiXSxbMSwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1sZy1jZW50ZXIiXSxbMSwibS0wIl0sWzMsImNs'@; put 'ck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWzEsImFkbWluLWFjdGlvbiJd'@; put 'LFsxLCJidG4iLCJidG4taW5mbyIsImJ0bi1zbSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzEsImxpYnJlZi1ncm91cCJdLFsxLCJsaWJyZWYtdG9vbHRpcCJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImxpYnJlZi1sYWJlbCJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSIsInNpemUi'@; put 'LCIxNiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJtZCIsNCwiY2xySWZPcGVuIl0sWyJ0eXBlIiwidGV4dCIsIm1heGxlbmd0aCIsIjgiLCJwbGFjZWhvbGRlciIsImUuZy4gTVlMSUIiLDEsImNsci1pbnB1dCIsImxpYnJlZi1pbnB1dCIsMywibmdNb2RlbENo'@; put 'YW5nZSIsIm5nTW9kZWwiXSxbMSwiYnRuIiwiYnRuLWluZm8iLCJidG4tc20iLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInJvdXRlckxpbmsiLCIvbGljZW5zaW5nL3VwZGF0ZSIsMSwiYnRuIiwiYnRuLWluZm8iLCJidG4tc20iXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLWxlZnQiLCJjbHJT'@; put 'aXplIiwibWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihKKDAsImRpdiIsMCkoMSwiZGl2IiwxKSgyLCJoNCIsMiksU2UoMywiU3lzdGVtIGluZm9ybWF0aW9uIiksdGUoKSxJdCg0LCJociIsMyksSig1LCJkaXYiLDQpKDYsImRpdiIsNSkoNywiZGl2IikoOCwiaDYiLDYpLFNl'@; put 'KDksIiBFbnZpcm9ubWVudCBEZXRhaWxzICIpLEl0KDEwLCJzcGFuIiw3KSx0ZSgpLEooMTEsInAiLDgpLFNlKDEyLCIgU1lTU0lURTogIiksSigxMywic3BhbiIsNyksU2UoMTQpLHRlKCkoKSxKKDE1LCJwIiw4KSxTZSgxNiwiIFNZU1NDUEw6ICIpLEooMTcsInNwYW4iLDcpLFNlKDE4KSx0'@; put 'ZSgpKCksSigxOSwicCIsOCksU2UoMjAsIiBTWVNUQ1BJUEhPU1ROQU1FOiAiKSxKKDIxLCJzcGFuIiw3KSxTZSgyMiksdGUoKSgpLEooMjMsInAiLDgpLFNlKDI0LCIgU1lTVkxPTkc6ICIpLEooMjUsInNwYW4iLDcpLFNlKDI2KSx0ZSgpKCksSigyNywicCIsOCksU2UoMjgsIiBNRU1TSVpF'@; put 'OiAiKSxKKDI5LCJzcGFuIiw3KSxTZSgzMCksdGUoKSgpLEooMzEsInAiLDgpLFNlKDMyLCIgU1lTUFJPQ0VTU01PREU6ICIpLEooMzMsInNwYW4iLDcpLFNlKDM0KSx0ZSgpKCksSigzNSwicCIsOCksU2UoMzYsIiBTWVNIT1NUTkFNRTogIiksSigzNywic3BhbiIsNyksU2UoMzgpLHRlKCko'@; put 'KSxKKDM5LCJwIiw4KSxTZSg0MCwiIFNZU1VTRVJJRDogIiksSig0MSwic3BhbiIsNyksU2UoNDIpLHRlKCkoKSxKKDQzLCJwIiw4KSxTZSg0NCwiIFNZU0hPU1RJTkZPTE9ORzogIiksSig0NSwic3BhbiIsNyksU2UoNDYpLHRlKCkoKSxKKDQ3LCJwIiw4KSxTZSg0OCwiIFNZU0VOQ09ESU5H'@; put 'OiAiKSxKKDQ5LCJzcGFuIiw3KSxTZSg1MCksdGUoKSgpLEooNTEsInAiLDgpLFNlKDUyLCIgQVVUT0VYRUM6ICIpLEooNTMsInNwYW4iLDcpLFNlKDU0KSx0ZSgpKCksSig1NSwicCIsOCksU2UoNTYsIiBUSU1FWk9ORTogIiksSig1Nywic3BhbiIsNyksU2UoNTgpLHRlKCkoKSxKKDU5LCJw'@; put 'Iiw4KSxTZSg2MCwiIFNZU1RJTUVaT05FSURFTlQ6ICIpLEooNjEsInNwYW4iLDcpLFNlKDYyKSx0ZSgpKCksSig2MywicCIsOCksU2UoNjQsIiBTWVNUSU1FWk9ORU9GRlNFVDogIiksSig2NSwic3BhbiIsNyksU2UoNjYpLHRlKCkoKSgpLEooNjcsImRpdiIsOSkoNjgsImRpdiIpKDY5LCJo'@; put 'NiIsNiksU2UoNzAsIiBEYXRhIENvbnRyb2xsZXIgRGV0YWlscyAiKSxJdCg3MSwic3BhbiIsNyksdGUoKSxKKDcyLCJwIiw4KSxTZSg3MywiIEFwcGxpY2F0aW9uIHZlcnNpb246ICIpLEooNzQsInNwYW4iLDcpLFNlKDc1KSx0ZSgpKCksSig3NiwicCIsOCksU2UoNzcsIiBCdWlsZCB0aW1l'@; put 'c3RhbXA6ICIpLEooNzgsInNwYW4iLDcpLFNlKDc5KSx0ZSgpKCksSig4MCwicCIsOCksU2UoODEsIiBBZGFwdGVyIHZlcnNpb246ICIpLEooODIsInNwYW4iLDcpLFNlKDgzKSx0ZSgpKCksSig4NCwicCIsOCksU2UoODUsIiBIVFRQOiAiKSxKKDg2LCJzcGFuIiw3KSxTZSg4NyksdGUoKSgp'@; put 'LEooODgsInAiLDgpLFNlKDg5LCIgREMgQWRtaW4gR3JvdXA6ICIpLEooOTAsInNwYW4iLDcpLFNlKDkxKSx0ZSgpKCksSig5MiwicCIsOCksU2UoOTMsIiBBcHAgTG9jYXRpb246ICIpLEooOTQsInNwYW4iLDcpLFNlKDk1KSx0ZSgpKCkoKSgpLEooOTYsImRpdiIpKDk3LCJoNiIsNiksU2Uo'@; put 'OTgsIiBMaWNlbmNlIGRldGFpbHMgIiksSXQoOTksInNwYW4iLDcpLHRlKCksSigxMDAsInAiLDgpLFNlKDEwMSwiIFZhbGlkIHVudGlsOiAiKSxKKDEwMiwic3BhbiIsNyksU2UoMTAzKSx0ZSgpKCksSigxMDQsInAiLDgpLFNlKDEwNSwiIFVzZXJzIGFsbG93ZWQ6ICIpLEooMTA2LCJzcGFu'@; put 'Iiw3KSxTZSgxMDcpLHRlKCkoKSxKKDEwOCwicCIsOCksU2UoMTA5LCIgU2l0ZSBJRHM6ICIpLEooMTEwLCJzcGFuIiw3KSxTZSgxMTEpLHRlKCkoKSxKKDExMiwicCIsOCksU2UoMTEzLCIgRnJlZSBUaWVyOiAiKSxKKDExNCwic3BhbiIsNyksU2UoMTE1KSx0ZSgpKCksdnQoMTE2LEJkbiw0'@; put 'LDEsInAiLDEwKSx2dCgxMTcsamRuLDQsMSwicCIsMTApLHZ0KDExOCxVZG4sNCwxLCJwIiwxMCksdnQoMTE5LHpkbiw0LDEsInAiLDEwKSx2dCgxMjAsV2RuLDQsMSwicCIsMTApLHZ0KDEyMSxZZG4sNCwxLCJwIiwxMCksdnQoMTIyLFpkbiw0LDEsInAiLDEwKSx2dCgxMjMsR2RuLDQsMSwi'@; put 'cCIsMTApLEooMTI0LCJwIiw4KSxTZSgxMjUsIiBWaWV3Ym94ZXM6ICIpLEooMTI2LCJzcGFuIiw3KSxTZSgxMjcpLHRlKCkoKSxKKDEyOCwicCIsOCksU2UoMTI5LCIgRmlsZSBVcGxvYWQ6ICIpLEooMTMwLCJzcGFuIiw3KSxTZSgxMzEpLHRlKCkoKSxKKDEzMiwicCIsOCksU2UoMTMzLCIg'@; put 'RWRpdCByZWNvcmQ6ICIpLEooMTM0LCJzcGFuIiw3KSxTZSgxMzUpLHRlKCkoKSxKKDEzNiwicCIsOCksU2UoMTM3LCIgQWRkIHJlY29yZDogIiksSigxMzgsInNwYW4iLDcpLFNlKDEzOSksdGUoKSgpKCkoKSxJdCgxNDAsImhyIiwzKSx2dCgxNDEsS2RuLDIwLDQpLHRlKCkoKSgpLEooMTQy'@; put 'LCJjbHItbW9kYWwiLDExKSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5yZXNwb25zZU1vZGFsLGwpfHwoby5yZXNwb25zZU1vZGFsPWwpLGx9KSxKKDE0MywiaDMiLDEyKSxTZSgxNDQsIlJlc3BvbnNlIiksdGUoKSxKKDE0NSwiZGl2IiwxMyksU2Uo'@; put 'MTQ2KSx0ZSgpLEooMTQ3LCJkaXYiLDE0KSgxNDgsImJ1dHRvbiIsMTUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gby5yZXNwb25zZU1vZGFsPSExfSksU2UoMTQ5LCIgT2sgIiksdGUoKSgpKCkpLDImaSYmKGllKDE0KSxwcihudWxsPT1vLmVudmlyb25tZW50SW5mbz9udWxsOm8u'@; put 'ZW52aXJvbm1lbnRJbmZvLlNZU1NJVEUpLGllKDQpLHByKG51bGw9PW8uZW52aXJvbm1lbnRJbmZvP251bGw6by5lbnZpcm9ubWVudEluZm8uU1lTU0NQTCksaWUoNCkscHIobnVsbD09by5lbnZpcm9ubWVudEluZm8/bnVsbDpvLmVudmlyb25tZW50SW5mby5TWVNUQ1BJUEhPU1ROQU1FKSxp'@; put 'ZSg0KSxwcihudWxsPT1vLmVudmlyb25tZW50SW5mbz9udWxsOm8uZW52aXJvbm1lbnRJbmZvLlNZU1ZMT05HKSxpZSg0KSxwcihudWxsPT1vLmVudmlyb25tZW50SW5mbz9udWxsOm8uZW52aXJvbm1lbnRJbmZvLk1FTVNJWkUpLGllKDQpLHByKG51bGw9PW8uZW52aXJvbm1lbnRJbmZvP251'@; put 'bGw6by5lbnZpcm9ubWVudEluZm8uU1lTUFJPQ0VTU01PREUpLGllKDQpLHByKG51bGw9PW8uZW52aXJvbm1lbnRJbmZvP251bGw6by5lbnZpcm9ubWVudEluZm8uU1lTSE9TVE5BTUUpLGllKDQpLHByKG51bGw9PW8uZW52aXJvbm1lbnRJbmZvP251bGw6by5lbnZpcm9ubWVudEluZm8uU1lT'@; put 'VVNFUklEKSxpZSg0KSxwcihudWxsPT1vLmVudmlyb25tZW50SW5mbz9udWxsOm8uZW52aXJvbm1lbnRJbmZvLlNZU0hPU1RJTkZPTE9ORyksaWUoNCkscHIobnVsbD09by5lbnZpcm9ubWVudEluZm8/bnVsbDpvLmVudmlyb25tZW50SW5mby5TWVNFTkNPRElORyksaWUoNCkscHIobnVsbD09'@; put 'by5lbnZpcm9ubWVudEluZm8/bnVsbDpvLmVudmlyb25tZW50SW5mby5BVVRPRVhFQyksaWUoNCkscHIoKG51bGw9PW8uZW52aXJvbm1lbnRJbmZvP251bGw6by5lbnZpcm9ubWVudEluZm8uVElNRVpPTkUpfHwiKG5vdCBzZXQpIiksaWUoNCkscHIoKG51bGw9PW8uZW52aXJvbm1lbnRJbmZv'@; put 'P251bGw6by5lbnZpcm9ubWVudEluZm8uU1lTVElNRVpPTkVJREVOVCl8fCIobm90IHNldCkiKSxpZSg0KSxwcigobnVsbD09by5lbnZpcm9ubWVudEluZm8/bnVsbDpvLmVudmlyb25tZW50SW5mby5TWVNUSU1FWk9ORU9GRlNFVCl8fCIwIiksaWUoOSkscHIoby5hcHBJbmZvLmFwcFZlcnNp'@; put 'b24pLGllKDQpLHByKG8uYXBwSW5mby5idWlsZFRpbWVzdGFtcCksaWUoNCkscHIoby5hcHBJbmZvLmFkYXB0ZXJWZXJzaW9uKSxpZSg0KSxwcihvLmh0dHA/IllFUyI6Ik5PIiksaWUoNCkscHIobnVsbD09by5lbnZpcm9ubWVudEluZm8/bnVsbDpvLmVudmlyb25tZW50SW5mby5EQ19BRE1J'@; put 'Tl9HUk9VUCksaWUoNCkscHIobnVsbD09by5lbnZpcm9ubWVudEluZm8/bnVsbDpvLmVudmlyb25tZW50SW5mby5BUFBfTE9DKSxpZSg4KSxwcihudWxsPT1vLmxpY2VuY2VJbmZvP251bGw6by5saWNlbmNlSW5mby52YWxpZF91bnRpbCksaWUoNCkscHIobnVsbD09by5saWNlbmNlSW5mbz9u'@; put 'dWxsOm8ubGljZW5jZUluZm8udXNlcnNfYWxsb3dlZCksaWUoNCkscHIobnVsbD09by5saWNlbmNlSW5mbz9udWxsOm8ubGljZW5jZUluZm8uc2l0ZV9pZF9tdWx0aXBsZSksaWUoNCkscHIobnVsbCE9by5saWNlbmNlSW5mbyYmby5saWNlbmNlSW5mby5kZW1vPyJZRVMiOiJOTyIpLGllKCks'@; put 'X3Qoby5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jvd3NfYWxsb3dlZCE9PW8uSW5maW5pdHk/MTE2Oi0xKSxpZSgpLF90KG8ubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQhPT1vLkluZmluaXR5PzExNzotMSksaWUoKSxfdChvLmxpY2VuY2VTdGF0ZS52YWx1ZS5z'@; put 'dGFnZV9yb3dzX2FsbG93ZWQhPT1vLkluZmluaXR5PzExODotMSksaWUoKSxfdChvLmxpY2VuY2VTdGF0ZS52YWx1ZS5oaXN0b3J5X3Jvd3NfYWxsb3dlZCE9PW8uSW5maW5pdHk/MTE5Oi0xKSxpZSgpLF90KG8ubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0IT09by5JbmZp'@; put 'bml0eT8xMjA6LTEpLGllKCksX3Qoby5saWNlbmNlU3RhdGUudmFsdWUudGFibGVzX2luX2xpYnJhcnlfbGltaXQhPT1vLkluZmluaXR5PzEyMTotMSksaWUoKSxfdChvLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0IT09by5JbmZpbml0eT8xMjI6LTEpLGllKCksX3Qoby5saWNl'@; put 'bmNlU3RhdGUudmFsdWUubGluZWFnZV9kYWlseV9saW1pdCE9PW8uSW5maW5pdHk/MTIzOi0xKSxpZSg0KSxwcihvLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94PyJZRVMiOiJOTyIpLGllKDQpLHByKG8ubGljZW5jZVN0YXRlLnZhbHVlLmZpbGVVcGxvYWQ/IllFUyI6Ik5PIiksaWUoNCks'@; put 'cHIoby5saWNlbmNlU3RhdGUudmFsdWUuZWRpdFJlY29yZD8iWUVTIjoiTk8iKSxpZSg0KSxwcihvLmxpY2VuY2VTdGF0ZS52YWx1ZS5hZGRSZWNvcmQ/IllFUyI6Ik5PIiksaWUoMiksX3QoMT09PShudWxsPT1vLmVudmlyb25tZW50SW5mbz9udWxsOm8uZW52aXJvbm1lbnRJbmZvLklTQURN'@; put 'SU4pPzE0MTotMSksaWUoKSxkaSgiY2xyTW9kYWxPcGVuIixvLnJlc3BvbnNlTW9kYWwpLGllKDQpLFNyKCIgIixvLnJlc3BvbnNlLCIgIikpfSxkZXBlbmRlbmNpZXM6W1AyLEpzLHhkLG1oLCQwLExwLGltLGVsLHd2LFN2LEN2LGx1LG9jLGNvZSxYbF0sc3R5bGVzOlsiLmxpYnJlZi1ncm91'@; put 'cHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbjowIDhweH0ubGlicmVmLWxhYmVse2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTouNTVyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWNsci1wNC1jb2xvciwgIzU2NTY1Nik7ZGlzcGxh'@; put 'eTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH0ubGlicmVmLWlucHV0e3dpZHRoOjEwMHB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1cbiJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpfV07bGV0IFFkbj0oKCk9Pnt2YXIgbjtjbGFzcyBle3N0'@; put 'YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NW1vZD1HaSh7dHlwZTplfSksdGhpcy5cdTAyNzVpbmo9bWkoe2ltcG9ydHM6W1dkLmZvckNoaWxkKFhkbiksV2RdfSkpfXJldHVybiBuKCksZX0pKCksSmRuPSgoKT0+'@; put 'e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbcW8sUWRuLHEwLGhkXX0pKX1yZXR1cm4gbigpLGV9KSgp'@; put 'O2Z1bmN0aW9uIGVobihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDcpfWZ1bmN0aW9uIHRobihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24iLDkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLmdyb3VwU2VhcmNoPSIi'@; put 'LFhlKGkuZ3JvdXBMaXN0T25GaWx0ZXIoKSl9KSx0ZSgpfX1mdW5jdGlvbiBuaG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDIpKDEsImRpdiIsNSkoMiwiaW5wdXQiLDYsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0'@; put 'IG89VGUoKTtyZXR1cm4gZmkoby5ncm91cFNlYXJjaCxpKXx8KG8uZ3JvdXBTZWFyY2g9aSksWGUoaSl9KSx3dCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuZ3JvdXBMaXN0T25GaWx0ZXIoKSl9KSx0ZSgpLHZ0KDQsZWhuLDEsMCwiY2xyLWljb24iLDcpLHZ0KDUs'@; put 'dGhuLDEsMCwiY2xyLWljb24iLDgpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9b28oMykscj1UZSgpO2llKDIpLGRpKCJuZ01vZGVsIixyLmdyb3VwU2VhcmNoKSxpZSgyKSxfdCh0LnZhbHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+MD81Oi0xKX19ZnVuY3Rpb24g'@; put 'cmhuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiwxMSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkuZ3JvdXBPbkNsaWNrKGkpKX0pLEooMSwicCIsMTIpLEl0KDIsImNsci1pY29u'@; put 'IiwxMyksU2UoMyksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdCxyPVRlKCk7d3IoImFjdGl2ZSIsdC5HUk9VUFVSST09PXIuZ3JvdXBVcmkpLGllKDMpLFNyKCIgIix0LkdST1VQTkFNRSwiICIpfX1mdW5jdGlvbiBpaG4obixlKXsxJm4mJnZ0KDAscmhuLDQsMywiY2xy'@; put 'LXRyZWUtbm9kZSIsMTApLDImbiYmX3QoZS4kaW1wbGljaXQuaGlkZGVuPy0xOjApfWZ1bmN0aW9uIG9obihuLGUpezEmbiYmKEooMCwiZGl2Iiw0KSgxLCJzcGFuIiwxNCksU2UoMiwiIExvYWRpbmcuLi4gIiksdGUoKSgpKX1mdW5jdGlvbiBhaG4obixlKXtpZigxJm4mJihKKDAsImRpdiIs'@; put 'MTUpKDEsImRpdiIsMTYpKDIsInRhYmxlIiwxOCkoMywidGJvZHkiKSg0LCJ0ciIpKDUsInRkIiwxOSkoNiwicCIsMjApKDcsImIiKSxTZSg4KSx0ZSgpKCkoKSgpLEooOSwidHIiKSgxMCwidGQiLDE5KSgxMSwiaSIpLFNlKDEyKSx0ZSgpKCkoKSgpKCkoKSgpKSwyJm4pe2NvbnN0IHQ9VGUo'@; put 'Mik7aWUoOCkscHIodC5ncm91cE5hbWUpLGllKDQpLHByKHQuZ3JvdXBEZXNjfHwibm8gZGVzY3JpcHRpb24iKX19ZnVuY3Rpb24gc2huKG4sZSl7MSZuJiYoSigwLCJoNSIpLFNlKDEsIk5vIE1lbWJlcnMgUHJlc2VudCIpLHRlKCkpfWZ1bmN0aW9uIGxobihuLGUpezEmbiYmKEooMCwidGQi'@; put 'LDI0KSgxLCJiIiksU2UoMiwiTkFNRSIpLHRlKCkoKSxKKDMsInRkIiwyNCkoNCwiYiIpLFNlKDUsIkVNQUlMIiksdGUoKSgpLEooNiwidGQiLDI0KSg3LCJiIiksU2UoOCwiQ1JFQVRFRCIpLHRlKCkoKSxKKDksInRkIiwyNSkoMTAsImIiKSxTZSgxMSwiVVBEQVRFRCIpLHRlKCkoKSl9ZnVu'@; put 'Y3Rpb24gY2huKG4sZSl7MSZuJiYoSigwLCJ0ZCIsMjQpKDEsImIiKSxTZSgyLCJJRCIpLHRlKCkoKSxKKDMsInRkIiwyNCkoNCwiYiIpLFNlKDUsIkRJU1BMQVkgTkFNRSIpLHRlKCkoKSxKKDYsInRkIiwyNCkoNywiYiIpLFNlKDgsIlVTRVIgTkFNRSIpLHRlKCkoKSl9ZnVuY3Rpb24gdWhu'@; put 'KG4sZSl7aWYoMSZuJiYoSigwLCJ0ZCIsMjUpLFNlKDEpLHRlKCksSigyLCJ0ZCIsMjUpLFNlKDMpLHRlKCksSig0LCJ0ZCIsMjUpLFNlKDUpLHRlKCksSig2LCJ0ZCIsMjUpLFNlKDcpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDtpZSgpLHByKHQuTUVNQkVSTkFNRSksaWUo'@; put 'MikscHIodC5FTUFJTCksaWUoMikscHIodC5NRU1CRVJDUkVBVEVEKSxpZSgyKSxwcih0Lk1FTUJFUlVQREFURUQpfX1mdW5jdGlvbiBkaG4obixlKXtpZigxJm4mJihKKDAsInRkIiwyNSksU2UoMSksdGUoKSxKKDIsInRkIiwyNSksU2UoMyksdGUoKSxKKDQsInRkIiwyNSksU2UoNSksdGUo'@; put 'KSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKCkscHIodC5JRCksaWUoMikscHIodC5ESVNQTEFZTkFNRSksaWUoMikscHIodC5VU0VSTkFNRSl9fWZ1bmN0aW9uIGhobihuLGUpe2lmKDEmbiYmKEooMCwidHIiLDIzKSx2dCgxLHVobiw4LDQpLHZ0KDIsZGhuLDYsMyksdGUoKSks'@; put 'MiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoNCk7cnQoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3VzZXJzLyIrKHQuVVJJTUVNfHx0LklEKSksaWUoKSxfdChyLnNlcnZlclR5cGU9PT1yLlNlcnZlclR5cGUuU2FzOT8xOi0xKSxpZSgpLF90KHIuc2VydmVyVHlwZT09PXIuU2Vy'@; put 'dmVyVHlwZS5TYXNqcz8yOi0xKX19ZnVuY3Rpb24gZmhuKG4sZSl7aWYoMSZuJiYoSigwLCJ0YWJsZSIsMjIpKDEsInRoZWFkIikoMiwidHIiKSx2dCgzLGxobiwxMiwwKSx2dCg0LGNobiw5LDApLHRlKCkoKSxKKDUsInRib2R5IiksX28oNixoaG4sMywzLCJ0ciIsMjMsQ28pLHRlKCkoKSks'@; put 'MiZuKXtjb25zdCB0PVRlKDMpO2llKDMpLF90KHQuc2VydmVyVHlwZT09PXQuU2VydmVyVHlwZS5TYXM5PzM6LTEpLGllKCksX3QodC5zZXJ2ZXJUeXBlPT09dC5TZXJ2ZXJUeXBlLlNhc2pzPzQ6LTEpLGllKDIpLHlvKHQuZ3JvdXBNZW1iZXJzKX19ZnVuY3Rpb24gcGhuKG4sZSl7aWYoMSZu'@; put 'JiYoSigwLCJkaXYiKSgxLCJoMyIpLFNlKDIpLHRlKCksdnQoMyxzaG4sMiwwLCJoNSIpLEooNCwiZGl2IiwyMSksdnQoNSxmaG4sOCwyLCJ0YWJsZSIsMjIpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKDIpLFNyKCJNRU1CRVJTICgiLHQuZ3JvdXBNZW1iZXJDb3VudCwiKSIpLGll'@; put 'KCksX3QoMD09dC5ncm91cE1lbWJlckNvdW50PzM6LTEpLGllKDIpLF90KDAhPXQuZ3JvdXBNZW1iZXJDb3VudD81Oi0xKX19ZnVuY3Rpb24gZ2huKG4sZSl7MSZuJiYoSigwLCJoNSIpLFNlKDEsIk5vIE1lbWJlcnMgUHJlc2VudCIpLHRlKCkpfWZ1bmN0aW9uIG1obihuLGUpe2lmKDEmbiYm'@; put 'KEooMCwidHIiLDIzKSgxLCJ0ZCIsMjUpLFNlKDIpLHRlKCkoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O3J0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi91c2Vycy8iK3QuTUVNQkVSSUQpLGllKDIpLHByKHQuTUVNQkVSTkFNRSl9fWZ1bmN0aW9uIHZobihuLGUpe2lmKDEmbiYm'@; put 'KEooMCwidGFibGUiLDIyKSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiKSg0LCJiIiksU2UoNSksdGUoKSgpKCkoKSxKKDYsInRib2R5IiksX28oNyxtaG4sMywyLCJ0ciIsMjMsQ28pLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKDUpLFNyKCJNRU1CRVJTICgiLHQuZ3JvdXBNZW1i'@; put 'ZXJDb3VudCwiKSIpLGllKDIpLHlvKHQuZ3JvdXBNZW1iZXJzKX19ZnVuY3Rpb24gX2huKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiKSgxLCJoMyIpLFNlKDIpLHRlKCksdnQoMyxnaG4sMiwwLCJoNSIpLEooNCwiZGl2IiwyMSksdnQoNSx2aG4sOSwxLCJ0YWJsZSIsMjIpLHRlKCkoKSksMiZu'@; put 'KXtjb25zdCB0PVRlKDIpO2llKDIpLHByKHQuZ3JvdXBOYW1lKSxpZSgpLF90KDA9PXQuZ3JvdXBNZW1iZXJDb3VudD8zOi0xKSxpZSgyKSxfdCgwIT10Lmdyb3VwTWVtYmVyQ291bnQ/NTotMSl9fWZ1bmN0aW9uIHlobihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiksdnQoMSxhaG4sMTMsMiwi'@; put 'ZGl2IiwxNSksSigyLCJkaXYiLDE1KSgzLCJkaXYiLDE2KSg0LCJkaXYiLDE3KSx2dCg1LHBobiw2LDMsImRpdiIpLHZ0KDYsX2huLDYsMywiZGl2IiksSXQoNywiYnIiKSx0ZSgpKCkoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgpLF90KHQuc2VydmVyVHlwZSE9PXQuU2VydmVyVHlwZS5T'@; put 'YXNWaXlhPzE6LTEpLGllKDQpLF90KHQuc2VydmVyVHlwZSE9PXQuU2VydmVyVHlwZS5TYXNWaXlhPzU6LTEpLGllKCksX3QodC5zZXJ2ZXJUeXBlPT09dC5TZXJ2ZXJUeXBlLlNhc1ZpeWE/NjotMSl9fWxldCBpR2U9KCgpPT57dmFyIG47Y2xhc3MgZXtjb25zdHJ1Y3RvcihyLGksbyxhLGwp'@; put 'e3RoaXMuc2FzU2VydmljZT1yLHRoaXMuaGVscGVyU2VydmljZT1pLHRoaXMucm91dGVyPW8sdGhpcy5sb2NhdGlvbj1hLHRoaXMucm91dGU9bCx0aGlzLmdyb3VwU2VhcmNoPSIiLHRoaXMucGFyYW1QcmVzZW50PSExLHRoaXMucGFyYW1VUkk9IiIsdGhpcy5ncm91cFVyaT0iIix0aGlzLmdy'@; put 'b3VwTmFtZT0iIix0aGlzLmdyb3VwRGVzYz0iIix0aGlzLnNhc2pzQ29uZmlnPW5ldyB4cC5TQVNqc0NvbmZpZyx0aGlzLmlzVml5YT0hMSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5TZXJ2ZXJUeXBlPV8wLlksdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWco'@; put 'KSx0aGlzLnNlcnZlclR5cGU9dGhpcy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSwiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUmJih0aGlzLmlzVml5YT0hMCl9bmdPbkluaXQoKXtVbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L2dyb3Vw'@; put 'cyIsdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpJiYodGhpcy5wYXJhbVByZXNlbnQ9ITAsdGhpcy5wYXJhbVVSST10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmkpLFVuLnVzZXJuYXYuZ3JvdXBMaXN0JiYhdGhpcy5wYXJhbVByZXNlbnQ/KHRoaXMuZ3JvdXBz'@; put 'PVVuLnVzZXJuYXYuZ3JvdXBMaXN0LHRoaXMuZ3JvdXBTZWFyY2g9VW4udXNlcm5hdi5ncm91cFNlYXJjaCk6KHZvaWQgMD09PVVuLnVzZXJuYXYuZ3JvdXBMaXN0Pyh0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0'@; put 'aWVzL2dyb3Vwcz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKHI9PnIudGV4dCgpKS50aGVuKHI9PntsZXQgbz1KU09OLnBhcnNlKHIpLml0ZW1zLm1hcChhPT4oe0dST1VQVVJJOmEuaWQsR1JPVVBOQU1FOmEubmFtZSxHUk9VUERFU0M6'@; put 'YS5kZXNjcmlwdGlvbn0pKTt0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cHM9byxVbi51c2VybmF2Lmdyb3VwTGlzdD1vfSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9nZXRncm91cHMiLG51bGwpLnRoZW4ocj0+e3RoaXMubG9hZGluZz0hMSx0aGlzLmdyb3Vwcz1yLmFkYXB0'@; put 'ZXJSZXNwb25zZS5ncm91cHMsVW4udXNlcm5hdi5ncm91cExpc3Q9ci5hZGFwdGVyUmVzcG9uc2UuZ3JvdXBzfSkpOih0aGlzLmdyb3Vwcz1Vbi51c2VybmF2Lmdyb3VwTGlzdCx0aGlzLmdyb3VwU2VhcmNoPVVuLnVzZXJuYXYuZ3JvdXBTZWFyY2gpLHRoaXMucGFyYW1QcmVzZW50JiYodGhp'@; put 'cy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHMvIit0aGlzLnBhcmFtVVJJKyIvbWVtYmVycz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKHI9PnIu'@; put 'dGV4dCgpKS50aGVuKHI9PntsZXQgaT1KU09OLnBhcnNlKHIpO3RoaXMubG9hZGluZz0hMTtsZXQgbz1pLml0ZW1zLm1hcChhPT4oe01FTUJFUk5BTUU6YS5uYW1lLE1FTUJFUklEOmEuaWR9KSk7dGhpcy5ncm91cE1lbWJlcnM9byx0aGlzLmdyb3VwTWVtYmVyQ291bnQ9by5sZW5ndGgsdGhp'@; put 'cy5ncm91cFVyaT10aGlzLnBhcmFtVVJJLHRoaXMuZ3JvdXBOYW1lPXRoaXMucGFyYW1VUkl9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5Z3JvdXAiLHtpd2FudDpbe2dyb3VwaWQ6dGhpcy5wYXJhbVVSSX1dfSkudGhlbihpPT57dGhpcy5ncm91cE1l'@; put 'bWJlcnM9aS5hZGFwdGVyUmVzcG9uc2Uuc2FzbWVtYmVycyx0aGlzLmdyb3VwTWVtYmVyQ291bnQ9aS5hZGFwdGVyUmVzcG9uc2Uuc2FzbWVtYmVycy5sZW5ndGgsdm9pZCAwIT09aS5hZGFwdGVyUmVzcG9uc2Uuc2FzbWVtYmVyc1swXSYmKHRoaXMubG9hZGluZz0hMSx0aGlzLmdyb3VwVXJp'@; put 'PWkuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnNbMF0uVVJJTUVNfHx0aGlzLnBhcmFtVVJJLHRoaXMuZ3JvdXBOYW1lPWkuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnNbMF0uR1JPVVBOQU1FLHRoaXMuZ3JvdXBEZXNjPWkuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnNbMF0uR1JPVVBE'@; put 'RVNDLHRoaXMuZ3JvdXBOYW1lfHwodGhpcy5ncm91cE5hbWU9dGhpcy5wYXJhbVVSSSkpfSkpKX1ncm91cExpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5ncm91cHMsdGhpcy5ncm91cFNlYXJjaCwiR1JPVVBOQU1FIiksVW4udXNlcm5hdi5n'@; put 'cm91cFNlYXJjaD10aGlzLmdyb3VwU2VhcmNofWdyb3VwT25DbGljayhyKXt0aGlzLmxvYWRpbmc9ITA7bGV0IGk9dGhpcy5yb3V0ZXIudXJsO3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHRoaXMucGFyYW1QcmVzZW50P2kuc2xpY2UoMCxpLmxhc3RJbmRleE9mKCIvIikpKyIvIitlbmNv'@; put 'ZGVVUkkoci5HUk9VUFVSSSk6aSsiLyIrZW5jb2RlVVJJKHIuR1JPVVBVUkkpKSx0aGlzLmlzVml5YT9mZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvZ3JvdXBzLyIrci5HUk9VUFVSSSsiL21lbWJlcnM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoi'@; put 'YXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihvPT5vLnRleHQoKSkudGhlbihvPT57bGV0IGE9SlNPTi5wYXJzZShvKTt0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cFVyaT1yLkdST1VQVVJJLHRoaXMuZ3JvdXBOYW1lPXIuR1JPVVBOQU1FLHRoaXMuZ3JvdXBEZXNjPXIuR1JPVVBERVNDO2xl'@; put 'dCBsPWEuaXRlbXMubWFwKHU9Pih7TUVNQkVSTkFNRTp1Lm5hbWUsTUVNQkVSSUQ6dS5pZH0pKTt0aGlzLmdyb3VwTWVtYmVycz1sLHRoaXMuZ3JvdXBNZW1iZXJDb3VudD1sLmxlbmd0aH0pOnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJtZW1iZXJzYnlncm91cCIse2l3'@; put 'YW50Olt7Z3JvdXBpZDpyLkdST1VQVVJJfV19KS50aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cFVyaT1yLkdST1VQVVJJLHRoaXMuZ3JvdXBOYW1lPXIuR1JPVVBOQU1FLHRoaXMuZ3JvdXBEZXNjPXIuR1JPVVBERVNDLHRoaXMuZ3JvdXBNZW1iZXJzPWEuYWRhcHRlclJlc3Bv'@; put 'bnNlLnNhc21lbWJlcnMsdGhpcy5ncm91cE1lbWJlckNvdW50PWEuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnMubGVuZ3RofSl9c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoaWMpLHplKGZoKSx6ZSh2YyksemUoVjApLHpl'@; put 'KHAxKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1ncm91cCJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczo4LHZhcnM6Myxjb25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWzEsInNpZGVi'@; put 'YXItaGVpZ2h0Il0sWzEsInNlYXJjaC1ub2RlIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBHcm91cHMiLCJu'@; put 'YW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCIsIm5nTW9kZWwiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJhY3RpdmUiXSxbMywiY2xpY2siXSxbMSwi'@; put 'bS0wIiwiY3Vyc29yLXBvaW50ZXIiLCJsaXN0LXBhZGRpbmciXSxbInNoYXBlIiwidXNlcnMiXSxbMSwic3Bpbm5lciJdLFsxLCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJjYXJkIiwiZ3JvdXAtZGF0YSJdLFsxLCJ0YWJsZSIsImdyb3VwLWluZm8iXSxbMSwibGVmdCJdLFsxLCJn'@; put 'cm91cC1pbmZvLXRleHQiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWzEsInRhYmxlIiwibWVtYmVyLXRhYmxlIl0sWzMsInJvdXRlckxpbmsiXSxbMSwid2lkdGgtMjUiXSxbMSwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJhcHAtc2lkZWJhciIsMSkoMSwiY2xyLXRy'@; put 'ZWUiKSx2dCgyLG5obiw2LDMsImNsci10cmVlLW5vZGUiLDIpLF9vKDMsaWhuLDEsMSxudWxsLG51bGwsQ28pLHRlKCkoKSxKKDUsImRpdiIsMyksdnQoNixvaG4sMywwLCJkaXYiLDQpLHZ0KDcseWhuLDgsMywiZGl2IiksdGUoKSksMiZpJiYoaWUoMiksX3Qoby5ncm91cHM/MjotMSksaWUo'@; put 'KSx5byhvLmdyb3VwcyksaWUoMyksX3Qoby5sb2FkaW5nPzY6LTEpLGllKCksX3Qoby5ncm91cE1lbWJlcnMmJiFvLmxvYWRpbmc/NzotMSkpfSxkZXBlbmRlbmNpZXM6W1AyLGx1LG9jLFhsLFBwLE8zLGN1LFBmLCQ2LEc2XSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtm'@; put 'dW5jdGlvbiBiaG4oKXt9ZnVuY3Rpb24gUW1lKG4pe3JldHVybiBudWxsPT1uP2JobjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3Iobil9fWZ1bmN0aW9uIG9HZShuKXtyZXR1cm4gbnVsbD09bj9bXTpBcnJheS5pc0FycmF5KG4pP246QXJyYXkuZnJvbShuKX1mdW5jdGlv'@; put 'biBDaG4oKXtyZXR1cm5bXX1mdW5jdGlvbiBhR2Uobil7cmV0dXJuIG51bGw9PW4/Q2huOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChuKX19ZnVuY3Rpb24gc0dlKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXMobil9fWZ1bmN0aW9uIGxH'@; put 'ZShuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2hlcyhuKX19dmFyIE1obj1BcnJheS5wcm90b3R5cGUuZmluZDtmdW5jdGlvbiB4aG4oKXtyZXR1cm4gdGhpcy5maXJzdEVsZW1lbnRDaGlsZH12YXIga2huPUFycmF5LnByb3RvdHlwZS5maWx0ZXI7ZnVuY3Rpb24gUmhuKCl7'@; put 'cmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGlsZHJlbil9ZnVuY3Rpb24gY0dlKG4pe3JldHVybiBuZXcgQXJyYXkobi5sZW5ndGgpfWZ1bmN0aW9uIGJLKG4sZSl7dGhpcy5vd25lckRvY3VtZW50PW4ub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1uLm5hbWVzcGFjZVVSSSx0aGlz'@; put 'Ll9uZXh0PW51bGwsdGhpcy5fcGFyZW50PW4sdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIEZobihuLGUsdCxyLGksbyl7Zm9yKHZhciBsLGE9MCx1PWUubGVuZ3RoLGc9by5sZW5ndGg7YTxnOysrYSkobD1lW2FdKT8obC5fX2RhdGFfXz1vW2FdLHJbYV09bCk6dFthXT1uZXcgYksobixvW2Fd'@; put 'KTtmb3IoO2E8dTsrK2EpKGw9ZVthXSkmJihpW2FdPWwpfWZ1bmN0aW9uIFBobihuLGUsdCxyLGksbyxhKXt2YXIgbCx1LGVlLGc9bmV3IE1hcCxFPWUubGVuZ3RoLE89by5sZW5ndGgsWj1uZXcgQXJyYXkoRSk7Zm9yKGw9MDtsPEU7KytsKSh1PWVbbF0pJiYoWltsXT1lZT1hLmNhbGwodSx1'@; put 'Ll9fZGF0YV9fLGwsZSkrIiIsZy5oYXMoZWUpP2lbbF09dTpnLnNldChlZSx1KSk7Zm9yKGw9MDtsPE87KytsKWVlPWEuY2FsbChuLG9bbF0sbCxvKSsiIiwodT1nLmdldChlZSkpPyhyW2xdPXUsdS5fX2RhdGFfXz1vW2xdLGcuZGVsZXRlKGVlKSk6dFtsXT1uZXcgYksobixvW2xdKTtmb3Io'@; put 'bD0wO2w8RTsrK2wpKHU9ZVtsXSkmJmcuZ2V0KFpbbF0pPT09dSYmKGlbbF09dSl9ZnVuY3Rpb24gSGhuKG4pe3JldHVybiBuLl9fZGF0YV9ffWZ1bmN0aW9uIEJobihuKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4mJiJsZW5ndGgiaW4gbj9uOkFycmF5LmZyb20obil9ZnVuY3Rpb24gWmhu'@; put 'KG4sZSl7cmV0dXJuIG48ZT8tMTpuPmU/MTpuPj1lPzA6TmFOfWJLLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YkssYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUobix0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKG4sZSl7'@; put 'cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUobixlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3Iobil9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9y'@; put 'QWxsKG4pfX07dmFyIEptZT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7Y29uc3QgdUdlPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpKbWUseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1M'@; put 'LzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiB3SyhuKXt2YXIgZT1uKz0iIix0PWUuaW5kZXhPZigiOiIpO3JldHVybiB0Pj0wJiYieG1sbnMiIT09KGU9bi5zbGljZSgwLHQpKSYmKG49bi5zbGljZSh0KzEpKSx1R2UuaGFz'@; put 'T3duUHJvcGVydHkoZSk/e3NwYWNlOnVHZVtlXSxsb2NhbDpufTpufWZ1bmN0aW9uIEpobihuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShuKX19ZnVuY3Rpb24gZTFuKG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxu'@; put 'LmxvY2FsKX19ZnVuY3Rpb24gdDFuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUobixlKX19ZnVuY3Rpb24gbjFuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwsZSl9fWZ1bmN0aW9uIHIxbihuLGUpe3Jl'@; put 'dHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXQ/dGhpcy5yZW1vdmVBdHRyaWJ1dGUobik6dGhpcy5zZXRBdHRyaWJ1dGUobix0KX19ZnVuY3Rpb24gaTFuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50'@; put 'cyk7bnVsbD09dD90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwsdCl9fWZ1bmN0aW9uIGRHZShuKXtyZXR1cm4gbi5vd25lckRvY3VtZW50JiZuLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fG4uZG9j'@; put 'dW1lbnQmJm58fG4uZGVmYXVsdFZpZXd9ZnVuY3Rpb24gYTFuKG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9fWZ1bmN0aW9uIHMxbihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLGUsdCl9fWZ1bmN0aW9u'@; put 'IGwxbihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG4pOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkobixyLHQpfX1mdW5jdGlvbiB5QShuLGUpe3JldHVybiBuLnN0eWxlLmdldFBy'@; put 'b3BlcnR5VmFsdWUoZSl8fGRHZShuKS5nZXRDb21wdXRlZFN0eWxlKG4sbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiB1MW4obil7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbbl19fWZ1bmN0aW9uIGQxbihuLGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbbl09ZX19'@; put 'ZnVuY3Rpb24gaDFuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09dD9kZWxldGUgdGhpc1tuXTp0aGlzW25dPXR9fWZ1bmN0aW9uIGhHZShuKXtyZXR1cm4gbi50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gZTRlKG4pe3Jl'@; put 'dHVybiBuLmNsYXNzTGlzdHx8bmV3IGZHZShuKX1mdW5jdGlvbiBmR2Uobil7dGhpcy5fbm9kZT1uLHRoaXMuX25hbWVzPWhHZShuLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIHBHZShuLGUpe2Zvcih2YXIgdD1lNGUobikscj0tMSxpPWUubGVuZ3RoOysrcjxpOyl0LmFk'@; put 'ZChlW3JdKX1mdW5jdGlvbiBnR2UobixlKXtmb3IodmFyIHQ9ZTRlKG4pLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspdC5yZW1vdmUoZVtyXSl9ZnVuY3Rpb24gcDFuKG4pe3JldHVybiBmdW5jdGlvbigpe3BHZSh0aGlzLG4pfX1mdW5jdGlvbiBnMW4obil7cmV0dXJuIGZ1bmN0aW9uKCl7Z0dl'@; put 'KHRoaXMsbil9fWZ1bmN0aW9uIG0xbihuLGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9wR2U6Z0dlKSh0aGlzLG4pfX1mdW5jdGlvbiBfMW4oKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIHkxbihuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRl'@; put 'eHRDb250ZW50PW59fWZ1bmN0aW9uIGIxbihuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PWU/PyIifX1mdW5jdGlvbiBDMW4oKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBTMW4obil7cmV0dXJuIGZ1bmN0aW9u'@; put 'KCl7dGhpcy5pbm5lckhUTUw9bn19ZnVuY3Rpb24gRTFuKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPWU/PyIifX1mdW5jdGlvbiBUMW4oKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hp'@; put 'bGQodGhpcyl9ZnVuY3Rpb24gQTFuKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gUjFuKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVu'@; put 'dCx0PXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiB0PT09Sm1lJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1KbWU/ZS5jcmVhdGVFbGVtZW50KG4pOmUuY3JlYXRlRWxlbWVudE5TKHQsbil9fWZ1bmN0aW9uIEkxbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5v'@; put 'd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNwYWNlLG4ubG9jYWwpfX1mdW5jdGlvbiBtR2Uobil7dmFyIGU9d0sobik7cmV0dXJuKGUubG9jYWw/STFuOlIxbikoZSl9ZnVuY3Rpb24gTDFuKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gTjFuKCl7dmFyIG49dGhpcy5wYXJlbnROb2Rl'@; put 'O24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUDFuKCl7dmFyIG49dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKG4sdGhpcy5uZXh0U2libGluZyk6bn1mdW5jdGlvbiBIMW4oKXt2YXIgbj10aGlzLmNsb25lTm9kZSgh'@; put 'MCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUobix0aGlzLm5leHRTaWJsaW5nKTpufWZ1bmN0aW9uIHoxbihuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBvLHQ9MCxyPS0xLGk9ZS5sZW5ndGg7dDxpOysrdClvPWVb'@; put 'dF0sbi50eXBlJiZvLnR5cGUhPT1uLnR5cGV8fG8ubmFtZSE9PW4ubmFtZT9lWysrcl09bzp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLG8ubGlzdGVuZXIsby5vcHRpb25zKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gVzFuKG4sZSx0KXtyZXR1'@; put 'cm4gZnVuY3Rpb24oKXt2YXIgaSxyPXRoaXMuX19vbixvPWZ1bmN0aW9uIGoxbihuKXtyZXR1cm4gZnVuY3Rpb24oZSl7bi5jYWxsKHRoaXMsZSx0aGlzLl9fZGF0YV9fKX19KGUpO2lmKHIpZm9yKHZhciBhPTAsbD1yLmxlbmd0aDthPGw7KythKWlmKChpPXJbYV0pLnR5cGU9PT1uLnR5cGUm'@; put 'JmkubmFtZT09PW4ubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGkudHlwZSxpLmxpc3RlbmVyLGkub3B0aW9ucyksdGhpcy5hZGRFdmVudExpc3RlbmVyKGkudHlwZSxpLmxpc3RlbmVyPW8saS5vcHRpb25zPXQpLHZvaWQoaS52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlz'@; put 'dGVuZXIobi50eXBlLG8sdCksaT17dHlwZTpuLnR5cGUsbmFtZTpuLm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpvLG9wdGlvbnM6dH0scj9yLnB1c2goaSk6dGhpcy5fX29uPVtpXX19ZnVuY3Rpb24gdkdlKG4sZSx0KXt2YXIgcj1kR2UobiksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5'@; put 'cGVvZiBpP2k9bmV3IGkoZSx0KTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLHQ/KGkuaW5pdEV2ZW50KGUsdC5idWJibGVzLHQuY2FuY2VsYWJsZSksaS5kZXRhaWw9dC5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSxuLmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24g'@; put 'WjFuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZHZSh0aGlzLG4sZSl9fWZ1bmN0aW9uIEcxbihuLGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2R2UodGhpcyxuLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19ZkdlLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKG4pe3RoaXMu'@; put 'X25hbWVzLmluZGV4T2Yobik8MCYmKHRoaXMuX25hbWVzLnB1c2gobiksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKG4pe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2Yobik7ZT49MCYmKHRoaXMuX25hbWVz'@; put 'LnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKG4pPj0wfX07dmFyIHQ0ZT1bbnVsbF07ZnVuY3Rpb24gbDMobixlKXt0aGlzLl9n'@; put 'cm91cHM9bix0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gX0dlKCl7cmV0dXJuIG5ldyBsMyhbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLHQ0ZSl9bDMucHJvdG90eXBlPV9HZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmwzLHNlbGVjdDpmdW5jdGlvbiB3aG4obil7ImZ1bmN0aW9uIiE9'@; put 'dHlwZW9mIG4mJihuPVFtZShuKSk7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PWUubGVuZ3RoLHI9bmV3IEFycmF5KHQpLGk9MDtpPHQ7KytpKWZvcih2YXIgdSxnLG89ZVtpXSxhPW8ubGVuZ3RoLGw9cltpXT1uZXcgQXJyYXkoYSksRT0wO0U8YTsrK0UpKHU9b1tFXSkmJihnPW4uY2FsbCh1'@; put 'LHUuX19kYXRhX18sRSxvKSkmJigiX19kYXRhX18iaW4gdSYmKGcuX19kYXRhX189dS5fX2RhdGFfXyksbFtFXT1nKTtyZXR1cm4gbmV3IGwzKHIsdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBFaG4obil7bj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbiBTaG4obil7'@; put 'cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG9HZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fShuKTphR2Uobik7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PWUubGVuZ3RoLHI9W10saT1bXSxvPTA7bzx0Oysrbylmb3IodmFyIHUsYT1lW29dLGw9YS5sZW5ndGgsZz0wO2c8bDsrK2cpKHU9'@; put 'YVtnXSkmJihyLnB1c2gobi5jYWxsKHUsdS5fX2RhdGFfXyxnLGEpKSxpLnB1c2godSkpO3JldHVybiBuZXcgbDMocixpKX0sc2VsZWN0Q2hpbGQ6ZnVuY3Rpb24gQWhuKG4pe3JldHVybiB0aGlzLnNlbGVjdChudWxsPT1uP3hobjpmdW5jdGlvbiBUaG4obil7cmV0dXJuIGZ1bmN0aW9uKCl7'@; put 'cmV0dXJuIE1obi5jYWxsKHRoaXMuY2hpbGRyZW4sbil9fSgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmxHZShuKSkpfSxzZWxlY3RDaGlsZHJlbjpmdW5jdGlvbiBEaG4obil7cmV0dXJuIHRoaXMuc2VsZWN0QWxsKG51bGw9PW4/UmhuOmZ1bmN0aW9uIElobihuKXtyZXR1cm4gZnVuY3Rpb24o'@; put 'KXtyZXR1cm4ga2huLmNhbGwodGhpcy5jaGlsZHJlbixuKX19KCJmdW5jdGlvbiI9PXR5cGVvZiBuP246bEdlKG4pKSl9LGZpbHRlcjpmdW5jdGlvbiBMaG4obil7ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPXNHZShuKSk7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PWUubGVuZ3RoLHI9bmV3'@; put 'IEFycmF5KHQpLGk9MDtpPHQ7KytpKWZvcih2YXIgdSxvPWVbaV0sYT1vLmxlbmd0aCxsPXJbaV09W10sZz0wO2c8YTsrK2cpKHU9b1tnXSkmJm4uY2FsbCh1LHUuX19kYXRhX18sZyxvKSYmbC5wdXNoKHUpO3JldHVybiBuZXcgbDMocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBW'@; put 'aG4obixlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLEhobik7dmFyIHQ9ZT9QaG46RmhuLHI9dGhpcy5fcGFyZW50cyxpPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49ZnVuY3Rpb24gTmhuKG4pe3JldHVybiBmdW5jdGlvbigpe3Jl'@; put 'dHVybiBufX0obikpO2Zvcih2YXIgbz1pLmxlbmd0aCxhPW5ldyBBcnJheShvKSxsPW5ldyBBcnJheShvKSx1PW5ldyBBcnJheShvKSxnPTA7ZzxvOysrZyl7dmFyIEU9cltnXSxPPWlbZ10sWj1PLmxlbmd0aCxlZT1CaG4obi5jYWxsKEUsRSYmRS5fX2RhdGFfXyxnLHIpKSx2ZT1lZS5sZW5n'@; put 'dGgsTWU9bFtnXT1uZXcgQXJyYXkodmUpLEhlPWFbZ109bmV3IEFycmF5KHZlKTt0KEUsTyxNZSxIZSx1W2ddPW5ldyBBcnJheShaKSxlZSxlKTtmb3IodmFyIEF0LEt0LGF0PTAsQ3Q9MDthdDx2ZTsrK2F0KWlmKEF0PU1lW2F0XSl7Zm9yKGF0Pj1DdCYmKEN0PWF0KzEpOyEoS3Q9SGVbQ3Rd'@; put 'KSYmKytDdDx2ZTspO0F0Ll9uZXh0PUt0fHxudWxsfX1yZXR1cm4oYT1uZXcgbDMoYSxyKSkuX2VudGVyPWwsYS5fZXhpdD11LGF9LGVudGVyOmZ1bmN0aW9uIE9obigpe3JldHVybiBuZXcgbDModGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoY0dlKSx0aGlzLl9wYXJlbnRzKX0sZXhp'@; put 'dDpmdW5jdGlvbiBqaG4oKXtyZXR1cm4gbmV3IGwzKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoY0dlKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBVaG4obixlLHQpe3ZhciByPXRoaXMuZW50ZXIoKSxpPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4iZnVuY3Rpb24iPT10'@; put 'eXBlb2Ygbj8ocj1uKHIpKSYmKHI9ci5zZWxlY3Rpb24oKSk6cj1yLmFwcGVuZChuKyIiKSxudWxsIT1lJiYoaT1lKGkpKSYmKGk9aS5zZWxlY3Rpb24oKSksbnVsbD09dD9vLnJlbW92ZSgpOnQobyksciYmaT9yLm1lcmdlKGkpLm9yZGVyKCk6aX0sbWVyZ2U6ZnVuY3Rpb24gemhuKG4pe2Zv'@; put 'cih2YXIgZT1uLnNlbGVjdGlvbj9uLnNlbGVjdGlvbigpOm4sdD10aGlzLl9ncm91cHMscj1lLl9ncm91cHMsaT10Lmxlbmd0aCxhPU1hdGgubWluKGksci5sZW5ndGgpLGw9bmV3IEFycmF5KGkpLHU9MDt1PGE7Kyt1KWZvcih2YXIgZWUsZz10W3VdLEU9clt1XSxPPWcubGVuZ3RoLFo9bFt1'@; put 'XT1uZXcgQXJyYXkoTyksdmU9MDt2ZTxPOysrdmUpKGVlPWdbdmVdfHxFW3ZlXSkmJihaW3ZlXT1lZSk7Zm9yKDt1PGk7Kyt1KWxbdV09dFt1XTtyZXR1cm4gbmV3IGwzKGwsdGhpcy5fcGFyZW50cyl9LHNlbGVjdGlvbjpmdW5jdGlvbiBLMW4oKXtyZXR1cm4gdGhpc30sb3JkZXI6ZnVuY3Rp'@; put 'b24gV2huKCl7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPS0xLHQ9bi5sZW5ndGg7KytlPHQ7KWZvcih2YXIgYSxyPW5bZV0saT1yLmxlbmd0aC0xLG89cltpXTstLWk+PTA7KShhPXJbaV0pJiYobyYmNF5hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG8pJiZvLnBhcmVudE5vZGUuaW5zZXJ0'@; put 'QmVmb3JlKGEsbyksbz1hKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBZaG4obil7ZnVuY3Rpb24gZShPLFope3JldHVybiBPJiZaP24oTy5fX2RhdGFfXyxaLl9fZGF0YV9fKTohTy0hWn1ufHwobj1aaG4pO2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj10Lmxlbmd0aCxpPW5ldyBBcnJh'@; put 'eShyKSxvPTA7bzxyOysrbyl7Zm9yKHZhciBnLGE9dFtvXSxsPWEubGVuZ3RoLHU9aVtvXT1uZXcgQXJyYXkobCksRT0wO0U8bDsrK0UpKGc9YVtFXSkmJih1W0VdPWcpO3Uuc29ydChlKX1yZXR1cm4gbmV3IGwzKGksdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBHaG4o'@; put 'KXt2YXIgbj1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLG4uYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uICRobigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMpfSxub2RlOmZ1bmN0aW9uIHFobigpe2Zvcih2YXIgbj10aGlzLl9ncm91cHMs'@; put 'ZT0wLHQ9bi5sZW5ndGg7ZTx0OysrZSlmb3IodmFyIHI9bltlXSxpPTAsbz1yLmxlbmd0aDtpPG87KytpKXt2YXIgYT1yW2ldO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gS2huKCl7bGV0IG49MDtmb3IoY29uc3QgZSBvZiB0aGlzKSsrbjtyZXR1cm4gbn0sZW1w'@; put 'dHk6ZnVuY3Rpb24gWGhuKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIFFobihuKXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpZm9yKHZhciBsLGk9ZVt0XSxvPTAsYT1pLmxlbmd0aDtvPGE7KytvKShsPWlbb10pJiZuLmNhbGwobCxs'@; put 'Ll9fZGF0YV9fLG8saSk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gbzFuKG4sZSl7dmFyIHQ9d0sobik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgcj10aGlzLm5vZGUoKTtyZXR1cm4gdC5sb2NhbD9yLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6ci5nZXRBdHRyaWJ1'@; put 'dGUodCl9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT90LmxvY2FsP2UxbjpKaG46ImZ1bmN0aW9uIj09dHlwZW9mIGU/dC5sb2NhbD9pMW46cjFuOnQubG9jYWw/bjFuOnQxbikodCxlKSl9LHN0eWxlOmZ1bmN0aW9uIGMxbihuLGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlz'@; put 'LmVhY2goKG51bGw9PWU/YTFuOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2wxbjpzMW4pKG4sZSx0Pz8iIikpOnlBKHRoaXMubm9kZSgpLG4pfSxwcm9wZXJ0eTpmdW5jdGlvbiBmMW4obixlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT91MW46ImZ1bmN0aW9u'@; put 'Ij09dHlwZW9mIGU/aDFuOmQxbikobixlKSk6dGhpcy5ub2RlKClbbl19LGNsYXNzZWQ6ZnVuY3Rpb24gdjFuKG4sZSl7dmFyIHQ9aEdlKG4rIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByPWU0ZSh0aGlzLm5vZGUoKSksaT0tMSxvPXQubGVuZ3RoOysraTxvOylpZighci5j'@; put 'b250YWlucyh0W2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9tMW46ZT9wMW46ZzFuKSh0LGUpKX0sdGV4dDpmdW5jdGlvbiB3MW4obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PW4/XzFuOigiZnVu'@; put 'Y3Rpb24iPT10eXBlb2Ygbj9iMW46eTFuKShuKSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gTTFuKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT1uP0MxbjooImZ1bmN0aW9uIj09dHlwZW9mIG4/RTFuOlMxbikobikpOnRoaXMubm9k'@; put 'ZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24geDFuKCl7cmV0dXJuIHRoaXMuZWFjaChUMW4pfSxsb3dlcjpmdW5jdGlvbiBrMW4oKXtyZXR1cm4gdGhpcy5lYWNoKEExbil9LGFwcGVuZDpmdW5jdGlvbiBEMW4obil7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjptR2Uobik7cmV0'@; put 'dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9LGluc2VydDpmdW5jdGlvbiBPMW4obixlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOm1HZShuKSxyPW51bGw9PWU/TDFuOiJmdW5jdGlvbiI9'@; put 'PXR5cGVvZiBlP2U6UW1lKGUpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZSh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX0scmVtb3ZlOmZ1bmN0aW9uIEYxbigpe3JldHVybiB0aGlz'@; put 'LmVhY2goTjFuKX0sY2xvbmU6ZnVuY3Rpb24gVjFuKG4pe3JldHVybiB0aGlzLnNlbGVjdChuP0gxbjpQMW4pfSxkYXR1bTpmdW5jdGlvbiBCMW4obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLG4pOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpm'@; put 'dW5jdGlvbiBZMW4obixlLHQpe3ZhciBpLGEscj1mdW5jdGlvbiBVMW4obil7cmV0dXJuIG4udHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbihlKXt2YXIgdD0iIixyPWUuaW5kZXhPZigiLiIpO3JldHVybiByPj0wJiYodD1lLnNsaWNlKHIrMSksZT1lLnNsaWNlKDAscikpLHt0'@; put 'eXBlOmUsbmFtZTp0fX0pfShuKyIiKSxvPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKGw9ZT9XMW46ejFuLGk9MDtpPG87KytpKXRoaXMuZWFjaChsKHJbaV0sZSx0KSk7cmV0dXJuIHRoaXN9dmFyIGw9dGhpcy5ub2RlKCkuX19vbjtpZihsKWZvcih2YXIgRSx1PTAs'@; put 'Zz1sLmxlbmd0aDt1PGc7Kyt1KWZvcihpPTAsRT1sW3VdO2k8bzsrK2kpaWYoKGE9cltpXSkudHlwZT09PUUudHlwZSYmYS5uYW1lPT09RS5uYW1lKXJldHVybiBFLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiAkMW4obixlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2Yg'@; put 'ZT9HMW46WjFuKShuLGUpKX0sW1N5bWJvbC5pdGVyYXRvcl06ZnVuY3Rpb24qcTFuKCl7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPTAsdD1uLmxlbmd0aDtlPHQ7KytlKWZvcih2YXIgYSxyPW5bZV0saT0wLG89ci5sZW5ndGg7aTxvOysraSkoYT1yW2ldKSYmKHlpZWxkIGEpfX07Y29uc3Qg'@; put 'ekM9X0dlO2Z1bmN0aW9uIG40ZShuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/bmV3IGwzKFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKG4pXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IGwzKFtvR2UobildLHQ0ZSl9ZnVuY3Rpb24gQmwobil7cmV0dXJuInN0cmluZyI9'@; put 'PXR5cGVvZiBuP25ldyBsMyhbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobildXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IGwzKFtbbl1dLHQ0ZSl9dmFyIFgxbj17dmFsdWU6KCk9Pnt9fTtmdW5jdGlvbiB5R2UoKXtmb3IodmFyIHIsbj0wLGU9YXJndW1lbnRzLmxlbmd0aCx0'@; put 'PXt9O248ZTsrK24pe2lmKCEocj1hcmd1bWVudHNbbl0rIiIpfHxyIGluIHR8fC9bXHMuXS8udGVzdChyKSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIityKTt0W3JdPVtdfXJldHVybiBuZXcgQ0sodCl9ZnVuY3Rpb24gQ0sobil7dGhpcy5fPW59ZnVuY3Rpb24gSjFuKG4sZSl7'@; put 'Zm9yKHZhciBpLHQ9MCxyPW4ubGVuZ3RoO3Q8cjsrK3QpaWYoKGk9blt0XSkubmFtZT09PWUpcmV0dXJuIGkudmFsdWV9ZnVuY3Rpb24gYkdlKG4sZSx0KXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTsrK3IpaWYobltyXS5uYW1lPT09ZSl7bltyXT1YMW4sbj1uLnNsaWNlKDAscikuY29u'@; put 'Y2F0KG4uc2xpY2UocisxKSk7YnJlYWt9cmV0dXJuIG51bGwhPXQmJm4ucHVzaCh7bmFtZTplLHZhbHVlOnR9KSxufUNLLnByb3RvdHlwZT15R2UucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDSyxvbjpmdW5jdGlvbihuLGUpe3ZhciBpLHQ9dGhpcy5fLHI9ZnVuY3Rpb24gUTFuKG4sZSl7cmV0'@; put 'dXJuIG4udHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbih0KXt2YXIgcj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihyPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6'@; put 'ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOnJ9fSl9KG4rIiIsdCksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7'@; put 'KWlmKGk9KG49cltvXSkudHlwZSl0W2ldPWJHZSh0W2ldLG4ubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKGkgaW4gdCl0W2ldPWJHZSh0W2ldLG4ubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigoaT0obj1yW29dKS50eXBlKSYmKGk9SjFuKHRbaV0sbi5uYW1lKSkp'@; put 'cmV0dXJuIGl9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgbj17fSxlPXRoaXMuXztmb3IodmFyIHQgaW4gZSluW3RdPWVbdF0uc2xpY2UoKTtyZXR1cm4gbmV3IENLKG4pfSxjYWxsOmZ1bmN0aW9uKG4sZSl7aWYoKGk9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgaSxvLHQ9bmV3IEFycmF5'@; put 'KGkpLHI9MDtyPGk7KytyKXRbcl09YXJndW1lbnRzW3IrMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShuKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIituKTtmb3Iocj0wLGk9KG89dGhpcy5fW25dKS5sZW5ndGg7cjxpOysrcilvW3JdLnZhbHVlLmFwcGx5KGUsdCl9LGFw'@; put 'cGx5OmZ1bmN0aW9uKG4sZSx0KXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KG4pKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK24pO2Zvcih2YXIgcj10aGlzLl9bbl0saT0wLG89ci5sZW5ndGg7aTxvOysraSlyW2ldLnZhbHVlLmFwcGx5KGUsdCl9fTtjb25zdCByNGU9eUdl'@; put 'O3ZhciBTSyxDUCxiQT0wLGJQPTAsd1A9MCxFSz0wLFdDPTAsTUs9MCxTUD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxDR2U9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/'@; put 'd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24obil7c2V0VGltZW91dChuLDE3KX07ZnVuY3Rpb24gaTRlKCl7cmV0dXJuIFdDfHwoQ0dlKGUwbiksV0M9U1Aubm93KCkrTUspfWZ1bmN0aW9uIGUwbigpe1dDPTB9ZnVuY3Rpb24gVEsoKXt0aGlzLl9j'@; put 'YWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIFNHZShuLGUsdCl7dmFyIHI9bmV3IFRLO3JldHVybiByLnJlc3RhcnQobixlLHQpLHJ9ZnVuY3Rpb24gRUdlKCl7V0M9KEVLPVNQLm5vdygpKStNSyxiQT1iUD0wO3RyeXshZnVuY3Rpb24gdDBuKCl7aTRlKCksKytiQTtm'@; put 'b3IodmFyIGUsbj1TSztuOykoZT1XQy1uLl90aW1lKT49MCYmbi5fY2FsbC5jYWxsKHZvaWQgMCxlKSxuPW4uX25leHQ7LS1iQX0oKX1maW5hbGx5e2JBPTAsZnVuY3Rpb24gcjBuKCl7Zm9yKHZhciBuLHQsZT1TSyxyPTEvMDtlOyllLl9jYWxsPyhyPmUuX3RpbWUmJihyPWUuX3RpbWUpLG49'@; put 'ZSxlPWUuX25leHQpOih0PWUuX25leHQsZS5fbmV4dD1udWxsLGU9bj9uLl9uZXh0PXQ6U0s9dCk7Q1A9bixvNGUocil9KCksV0M9MH19ZnVuY3Rpb24gbjBuKCl7dmFyIG49U1Aubm93KCksZT1uLUVLO2U+MWUzJiYoTUstPWUsRUs9bil9ZnVuY3Rpb24gbzRlKG4pe2JBfHwoYlAmJihiUD1j'@; put 'bGVhclRpbWVvdXQoYlApKSxuLVdDPjI0PyhuPDEvMCYmKGJQPXNldFRpbWVvdXQoRUdlLG4tU1Aubm93KCktTUspKSx3UCYmKHdQPWNsZWFySW50ZXJ2YWwod1ApKSk6KHdQfHwoRUs9U1Aubm93KCksd1A9c2V0SW50ZXJ2YWwobjBuLDFlMykpLGJBPTEsQ0dlKEVHZSkpKX1mdW5jdGlvbiB4'@; put 'SyhuLGUsdCl7dmFyIHI9bmV3IFRLO3JldHVybiByLnJlc3RhcnQoaT0+e3Iuc3RvcCgpLG4oaStlKX0sZT1udWxsPT1lPzA6K2UsdCkscn1USy5wcm90b3R5cGU9U0dlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VEsscmVzdGFydDpmdW5jdGlvbihuLGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlw'@; put 'ZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTt0PShudWxsPT10P2k0ZSgpOit0KSsobnVsbD09ZT8wOitlKSwhdGhpcy5fbmV4dCYmQ1AhPT10aGlzJiYoQ1A/Q1AuX25leHQ9dGhpczpTSz10aGlzLENQPXRoaXMpLHRoaXMuX2NhbGw9bix0'@; put 'aGlzLl90aW1lPXQsbzRlKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLG80ZSgpKX19O3ZhciBpMG49cjRlKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLG8wbj1bXTtmdW5jdGlvbiBSSyhuLGUsdCxyLGks'@; put 'byl7dmFyIGE9bi5fX3RyYW5zaXRpb247aWYoYSl7aWYodCBpbiBhKXJldHVybn1lbHNlIG4uX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbiBhMG4obixlLHQpe3ZhciBpLHI9bi5fX3RyYW5zaXRpb247ZnVuY3Rpb24gYShnKXt2YXIgRSxPLFosZWU7aWYoMSE9PXQuc3RhdGUpcmV0dXJuIHUo'@; put 'KTtmb3IoRSBpbiByKWlmKChlZT1yW0VdKS5uYW1lPT09dC5uYW1lKXtpZigzPT09ZWUuc3RhdGUpcmV0dXJuIHhLKGEpOzQ9PT1lZS5zdGF0ZT8oZWUuc3RhdGU9NixlZS50aW1lci5zdG9wKCksZWUub24uY2FsbCgiaW50ZXJydXB0IixuLG4uX19kYXRhX18sZWUuaW5kZXgsZWUuZ3JvdXAp'@; put 'LGRlbGV0ZSByW0VdKTorRTxlJiYoZWUuc3RhdGU9NixlZS50aW1lci5zdG9wKCksZWUub24uY2FsbCgiY2FuY2VsIixuLG4uX19kYXRhX18sZWUuaW5kZXgsZWUuZ3JvdXApLGRlbGV0ZSByW0VdKX1pZih4SyhmdW5jdGlvbigpezM9PT10LnN0YXRlJiYodC5zdGF0ZT00LHQudGltZXIucmVz'@; put 'dGFydChsLHQuZGVsYXksdC50aW1lKSxsKGcpKX0pLHQuc3RhdGU9Mix0Lm9uLmNhbGwoInN0YXJ0IixuLG4uX19kYXRhX18sdC5pbmRleCx0Lmdyb3VwKSwyPT09dC5zdGF0ZSl7Zm9yKHQuc3RhdGU9MyxpPW5ldyBBcnJheShaPXQudHdlZW4ubGVuZ3RoKSxFPTAsTz0tMTtFPFo7KytFKShl'@; put 'ZT10LnR3ZWVuW0VdLnZhbHVlLmNhbGwobixuLl9fZGF0YV9fLHQuaW5kZXgsdC5ncm91cCkpJiYoaVsrK09dPWVlKTtpLmxlbmd0aD1PKzF9fWZ1bmN0aW9uIGwoZyl7Zm9yKHZhciBFPWc8dC5kdXJhdGlvbj90LmVhc2UuY2FsbChudWxsLGcvdC5kdXJhdGlvbik6KHQudGltZXIucmVzdGFy'@; put 'dCh1KSx0LnN0YXRlPTUsMSksTz0tMSxaPWkubGVuZ3RoOysrTzxaOylpW09dLmNhbGwobixFKTs1PT09dC5zdGF0ZSYmKHQub24uY2FsbCgiZW5kIixuLG4uX19kYXRhX18sdC5pbmRleCx0Lmdyb3VwKSx1KCkpfWZ1bmN0aW9uIHUoKXtmb3IodmFyIGcgaW4gdC5zdGF0ZT02LHQudGltZXIu'@; put 'c3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSBuLl9fdHJhbnNpdGlvbn1yW2VdPXQsdC50aW1lcj1TR2UoZnVuY3Rpb24gbyhnKXt0LnN0YXRlPTEsdC50aW1lci5yZXN0YXJ0KGEsdC5kZWxheSx0LnRpbWUpLHQuZGVsYXk8PWcmJmEoZy10LmRlbGF5KX0sMCx0LnRpbWUpfShu'@; put 'LHQse25hbWU6ZSxpbmRleDpyLGdyb3VwOmksb246aTBuLHR3ZWVuOm8wbix0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gYzRlKG4sZSl7dmFyIHQ9UTQobixlKTtpZih0LnN0YXRl'@; put 'PjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gdH1mdW5jdGlvbiBYNihuLGUpe3ZhciB0PVE0KG4sZSk7aWYodC5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiB0fWZ1bmN0aW9u'@; put 'IFE0KG4sZSl7dmFyIHQ9bi5fX3RyYW5zaXRpb247aWYoIXR8fCEodD10W2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIHR9ZnVuY3Rpb24gSUsobixlKXt2YXIgcixpLGEsdD1uLl9fdHJhbnNpdGlvbixvPSEwO2lmKHQpe2ZvcihhIGluIGU9bnVs'@; put 'bD09ZT9udWxsOmUrIiIsdCkocj10W2FdKS5uYW1lPT09ZT8oaT1yLnN0YXRlPjImJnIuc3RhdGU8NSxyLnN0YXRlPTYsci50aW1lci5zdG9wKCksci5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsbixuLl9fZGF0YV9fLHIuaW5kZXgsci5ncm91cCksZGVsZXRlIHRbYV0pOm89ITE7'@; put 'byYmZGVsZXRlIG4uX190cmFuc2l0aW9ufX1mdW5jdGlvbiBRNihuLGUpe3JldHVybiBuPStuLGU9K2UsZnVuY3Rpb24odCl7cmV0dXJuIG4qKDEtdCkrZSp0fX12YXIgREsseEdlPTE4MC9NYXRoLlBJLHU0ZT17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNj'@; put 'YWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBBR2UobixlLHQscixpLG8pe3ZhciBhLGwsdTtyZXR1cm4oYT1NYXRoLnNxcnQobipuK2UqZSkpJiYobi89YSxlLz1hKSwodT1uKnQrZSpyKSYmKHQtPW4qdSxyLT1lKnUpLChsPU1hdGguc3FydCh0KnQrcipyKSkmJih0Lz1sLHIvPWwsdS89bCks'@; put 'bipyPGUqdCYmKG49LW4sZT0tZSx1PS11LGE9LWEpLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsbikqeEdlLHNrZXdYOk1hdGguYXRhbih1KSp4R2Usc2NhbGVYOmEsc2NhbGVZOmx9fWZ1bmN0aW9uIGtHZShuLGUsdCxyKXtmdW5jdGlvbiBpKGcpe3Jl'@; put 'dHVybiBnLmxlbmd0aD9nLnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24oZyxFKXt2YXIgTz1bXSxaPVtdO3JldHVybiBnPW4oZyksRT1uKEUpLGZ1bmN0aW9uIG8oZyxFLE8sWixlZSx2ZSl7aWYoZyE9PU98fEUhPT1aKXt2YXIgTWU9ZWUucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51'@; put 'bGwsdCk7dmUucHVzaCh7aTpNZS00LHg6UTYoZyxPKX0se2k6TWUtMix4OlE2KEUsWil9KX1lbHNlKE98fFopJiZlZS5wdXNoKCJ0cmFuc2xhdGUoIitPK2UrWit0KX0oZy50cmFuc2xhdGVYLGcudHJhbnNsYXRlWSxFLnRyYW5zbGF0ZVgsRS50cmFuc2xhdGVZLE8sWiksZnVuY3Rpb24gYShn'@; put 'LEUsTyxaKXtnIT09RT8oZy1FPjE4MD9FKz0zNjA6RS1nPjE4MCYmKGcrPTM2MCksWi5wdXNoKHtpOk8ucHVzaChpKE8pKyJyb3RhdGUoIixudWxsLHIpLTIseDpRNihnLEUpfSkpOkUmJk8ucHVzaChpKE8pKyJyb3RhdGUoIitFK3IpfShnLnJvdGF0ZSxFLnJvdGF0ZSxPLFopLGZ1bmN0aW9u'@; put 'IGwoZyxFLE8sWil7ZyE9PUU/Wi5wdXNoKHtpOk8ucHVzaChpKE8pKyJza2V3WCgiLG51bGwsciktMix4OlE2KGcsRSl9KTpFJiZPLnB1c2goaShPKSsic2tld1goIitFK3IpfShnLnNrZXdYLEUuc2tld1gsTyxaKSxmdW5jdGlvbiB1KGcsRSxPLFosZWUsdmUpe2lmKGchPT1PfHxFIT09Wil7'@; put 'dmFyIE1lPWVlLnB1c2goaShlZSkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO3ZlLnB1c2goe2k6TWUtNCx4OlE2KGcsTyl9LHtpOk1lLTIseDpRNihFLFopfSl9ZWxzZSgxIT09T3x8MSE9PVopJiZlZS5wdXNoKGkoZWUpKyJzY2FsZSgiK08rIiwiK1orIikiKX0oZy5zY2FsZVgsZy5z'@; put 'Y2FsZVksRS5zY2FsZVgsRS5zY2FsZVksTyxaKSxnPUU9bnVsbCxmdW5jdGlvbihlZSl7Zm9yKHZhciBIZSx2ZT0tMSxNZT1aLmxlbmd0aDsrK3ZlPE1lOylPWyhIZT1aW3ZlXSkuaV09SGUueChlZSk7cmV0dXJuIE8uam9pbigiIil9fX12YXIgdTBuPWtHZShmdW5jdGlvbiBsMG4obil7Y29u'@; put 'c3QgZT1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIERPTU1hdHJpeD9ET01NYXRyaXg6V2ViS2l0Q1NTTWF0cml4KShuKyIiKTtyZXR1cm4gZS5pc0lkZW50aXR5P3U0ZTpBR2UoZS5hLGUuYixlLmMsZS5kLGUuZSxlLmYpfSwicHgsICIsInB4KSIsImRlZykiKSxSR2U9a0dlKGZ1bmN0aW9uIGMw'@; put 'bihuKXtyZXR1cm4gbnVsbCE9biYmKERLfHwoREs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksREsuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLG4pLG49REsudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/QUdlKChu'@; put 'PW4ubWF0cml4KS5hLG4uYixuLmMsbi5kLG4uZSxuLmYpOnU0ZX0sIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBkMG4obixlKXt2YXIgdCxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPVg2KHRoaXMsbiksbz1pLnR3ZWVuO2lmKG8hPT10KWZvcih2YXIgYT0wLGw9KHI9dD1vKS5sZW5ndGg7YTxs'@; put 'OysrYSlpZihyW2FdLm5hbWU9PT1lKXsocj1yLnNsaWNlKCkpLnNwbGljZShhLDEpO2JyZWFrfWkudHdlZW49cn19ZnVuY3Rpb24gaDBuKG4sZSx0KXt2YXIgcixpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1YNih0aGlz'@; put 'LG4pLGE9by50d2VlbjtpZihhIT09cil7aT0ocj1hKS5zbGljZSgpO2Zvcih2YXIgbD17bmFtZTplLHZhbHVlOnR9LHU9MCxnPWkubGVuZ3RoO3U8ZzsrK3UpaWYoaVt1XS5uYW1lPT09ZSl7aVt1XT1sO2JyZWFrfXU9PT1nJiZpLnB1c2gobCl9by50d2Vlbj1pfX1mdW5jdGlvbiBkNGUobixl'@; put 'LHQpe3ZhciByPW4uX2lkO3JldHVybiBuLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1YNih0aGlzLHIpOyhpLnZhbHVlfHwoaS52YWx1ZT17fSkpW2VdPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksZnVuY3Rpb24oaSl7cmV0dXJuIFE0KGkscikudmFsdWVbZV19fWZ1bmN0aW9uIGg0ZShuLGUs'@; put 'dCl7bi5wcm90b3R5cGU9ZS5wcm90b3R5cGU9dCx0LmNvbnN0cnVjdG9yPW59ZnVuY3Rpb24gSUdlKG4sZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0fWZ1bmN0aW9uIEVQKCl7fXZhciBMSz0xLy43LHdBPSJcXHMq'@; put 'KFsrLV0/XFxkKylcXHMqIixUUD0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsSjY9IlxccyooWystXT8oPzpcXGQqXFwuKT9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixwMG49L14jKFswLTlhLWZdezMsOH0pJC8sZzBuPW5ldyBSZWdF'@; put 'eHAoYF5yZ2JcXCgke3dBfSwke3dBfSwke3dBfVxcKSRgKSxtMG49bmV3IFJlZ0V4cChgXnJnYlxcKCR7SjZ9LCR7SjZ9LCR7SjZ9XFwpJGApLHYwbj1uZXcgUmVnRXhwKGBecmdiYVxcKCR7d0F9LCR7d0F9LCR7d0F9LCR7VFB9XFwpJGApLF8wbj1uZXcgUmVnRXhwKGBecmdiYVxcKCR7SjZ9'@; put 'LCR7SjZ9LCR7SjZ9LCR7VFB9XFwpJGApLHkwbj1uZXcgUmVnRXhwKGBeaHNsXFwoJHtUUH0sJHtKNn0sJHtKNn1cXCkkYCksYjBuPW5ldyBSZWdFeHAoYF5oc2xhXFwoJHtUUH0sJHtKNn0sJHtKNn0sJHtUUH1cXCkkYCksREdlPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2'@; put 'NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdv'@; put 'b2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzks'@; put 'ZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2'@; put 'NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1'@; put 'Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIy'@; put 'NjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1'@; put 'Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1'@; put 'ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0'@; put 'NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1'@; put 'MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVl'@; put 'bjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjcz'@; put 'LG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1'@; put 'NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZTox'@; put 'MTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAz'@; put 'Mjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6'@; put 'NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAs'@; put 'eWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIExHZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIE9HZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFlDKG4pe3ZhciBlLHQ7cmV0dXJuIG49KG4rIiIpLnRyaW0oKS50b0xvd2Vy'@; put 'Q2FzZSgpLChlPXAwbi5leGVjKG4pKT8odD1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT10P05HZShlKTozPT09dD9uZXcgaXAoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT10P09LKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+'@; put 'OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT10P09LKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9ZzBuLmV4ZWMobikpP25ldyBpcChlWzFdLGVbMl0sZVszXSwxKTooZT1tMG4uZXhlYyhuKSk/bmV3'@; put 'IGlwKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPXYwbi5leGVjKG4pKT9PSyhlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1fMG4uZXhlYyhuKSk/T0soMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9eTBuLmV4ZWMobikp'@; put 'P0hHZShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPWIwbi5leGVjKG4pKT9IR2UoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpER2UuaGFzT3duUHJvcGVydHkobik/TkdlKERHZVtuXSk6InRyYW5zcGFyZW50Ij09PW4/bmV3IGlwKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rp'@; put 'b24gTkdlKG4pe3JldHVybiBuZXcgaXAobj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLDEpfWZ1bmN0aW9uIE9LKG4sZSx0LHIpe3JldHVybiByPD0wJiYobj1lPXQ9TmFOKSxuZXcgaXAobixlLHQscil9ZnVuY3Rpb24gTksobixlLHQscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2Z1'@; put 'bmN0aW9uIFMwbihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEVQfHwobj1ZQyhuKSksbj9uZXcgaXAoKG49bi5yZ2IoKSkucixuLmcsbi5iLG4ub3BhY2l0eSk6bmV3IGlwfShuKTpuZXcgaXAobixlLHQscj8/MSl9ZnVuY3Rpb24gaXAobixlLHQscil7dGhpcy5yPStuLHRoaXMuZz0rZSx0aGlz'@; put 'LmI9K3QsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIEZHZSgpe3JldHVybmAjJHtHQyh0aGlzLnIpfSR7R0ModGhpcy5nKX0ke0dDKHRoaXMuYil9YH1mdW5jdGlvbiBQR2UoKXtjb25zdCBuPUZLKHRoaXMub3BhY2l0eSk7cmV0dXJuYCR7MT09PW4/InJnYigiOiJyZ2JhKCJ9JHtaQyh0aGlz'@; put 'LnIpfSwgJHtaQyh0aGlzLmcpfSwgJHtaQyh0aGlzLmIpfSR7MT09PW4/IikiOmAsICR7bn0pYH1gfWZ1bmN0aW9uIEZLKG4pe3JldHVybiBpc05hTihuKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxuKSl9ZnVuY3Rpb24gWkMobil7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1h'@; put 'dGgucm91bmQobil8fDApKX1mdW5jdGlvbiBHQyhuKXtyZXR1cm4oKG49WkMobikpPDE2PyIwIjoiIikrbi50b1N0cmluZygxNil9ZnVuY3Rpb24gSEdlKG4sZSx0LHIpe3JldHVybiByPD0wP249ZT10PU5hTjp0PD0wfHx0Pj0xP249ZT1OYU46ZTw9MCYmKG49TmFOKSxuZXcgSjQobixlLHQs'@; put 'cil9ZnVuY3Rpb24gVkdlKG4pe2lmKG4gaW5zdGFuY2VvZiBKNClyZXR1cm4gbmV3IEo0KG4uaCxuLnMsbi5sLG4ub3BhY2l0eSk7aWYobiBpbnN0YW5jZW9mIEVQfHwobj1ZQyhuKSksIW4pcmV0dXJuIG5ldyBKNDtpZihuIGluc3RhbmNlb2YgSjQpcmV0dXJuIG47dmFyIGU9KG49bi5yZ2Io'@; put 'KSkuci8yNTUsdD1uLmcvMjU1LHI9bi5iLzI1NSxpPU1hdGgubWluKGUsdCxyKSxvPU1hdGgubWF4KGUsdCxyKSxhPU5hTixsPW8taSx1PShvK2kpLzI7cmV0dXJuIGw/KGE9ZT09PW8/KHQtcikvbCs2Kih0PHIpOnQ9PT1vPyhyLWUpL2wrMjooZS10KS9sKzQsbC89dTwuNT9vK2k6Mi1vLWks'@; put 'YSo9NjApOmw9dT4wJiZ1PDE/MDphLG5ldyBKNChhLGwsdSxuLm9wYWNpdHkpfWZ1bmN0aW9uIEo0KG4sZSx0LHIpe3RoaXMuaD0rbix0aGlzLnM9K2UsdGhpcy5sPSt0LHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBCR2Uobil7cmV0dXJuKG49KG58fDApJTM2MCk8MD9uKzM2MDpufWZ1bmN0'@; put 'aW9uIFBLKG4pe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEsbnx8MCkpfWZ1bmN0aW9uIGY0ZShuLGUsdCl7cmV0dXJuIDI1NSoobjw2MD9lKyh0LWUpKm4vNjA6bjwxODA/dDpuPDI0MD9lKyh0LWUpKigyNDAtbikvNjA6ZSl9ZnVuY3Rpb24gakdlKG4sZSx0LHIsaSl7dmFyIG89bipu'@; put 'LGE9bypuO3JldHVybigoMS0zKm4rMypvLWEpKmUrKDQtNipvKzMqYSkqdCsoMSszKm4rMypvLTMqYSkqcithKmkpLzZ9aDRlKEVQLFlDLHtjb3B5KG4pe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsbil9LGRpc3BsYXlhYmxlKCl7cmV0dXJuIHRoaXMu'@; put 'cmdiKCkuZGlzcGxheWFibGUoKX0saGV4OkxHZSxmb3JtYXRIZXg6TEdlLGZvcm1hdEhleDg6ZnVuY3Rpb24gdzBuKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4OCgpfSxmb3JtYXRIc2w6ZnVuY3Rpb24gQzBuKCl7cmV0dXJuIFZHZSh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0Umdi'@; put 'Ok9HZSx0b1N0cmluZzpPR2V9KSxoNGUoaXAsTkssSUdlKEVQLHticmlnaHRlcihuKXtyZXR1cm4gbj1udWxsPT1uP0xLOk1hdGgucG93KExLLG4pLG5ldyBpcCh0aGlzLnIqbix0aGlzLmcqbix0aGlzLmIqbix0aGlzLm9wYWNpdHkpfSxkYXJrZXIobil7cmV0dXJuIG49bnVsbD09bj8uNzpN'@; put 'YXRoLnBvdyguNyxuKSxuZXcgaXAodGhpcy5yKm4sdGhpcy5nKm4sdGhpcy5iKm4sdGhpcy5vcGFjaXR5KX0scmdiKCl7cmV0dXJuIHRoaXN9LGNsYW1wKCl7cmV0dXJuIG5ldyBpcChaQyh0aGlzLnIpLFpDKHRoaXMuZyksWkModGhpcy5iKSxGSyh0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFi'@; put 'bGUoKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OkZHZSxmb3JtYXRIZXg6RkdlLGZvcm1hdEhleDg6ZnVuY3Rp'@; put 'b24gRTBuKCl7cmV0dXJuYCMke0dDKHRoaXMucil9JHtHQyh0aGlzLmcpfSR7R0ModGhpcy5iKX0ke0dDKDI1NSooaXNOYU4odGhpcy5vcGFjaXR5KT8xOnRoaXMub3BhY2l0eSkpfWB9LGZvcm1hdFJnYjpQR2UsdG9TdHJpbmc6UEdlfSkpLGg0ZShKNCxmdW5jdGlvbiBNMG4obixlLHQscil7'@; put 'cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1ZHZShuKTpuZXcgSjQobixlLHQscj8/MSl9LElHZShFUCx7YnJpZ2h0ZXIobil7cmV0dXJuIG49bnVsbD09bj9MSzpNYXRoLnBvdyhMSyxuKSxuZXcgSjQodGhpcy5oLHRoaXMucyx0aGlzLmwqbix0aGlzLm9wYWNpdHkpfSxkYXJrZXIobil7'@; put 'cmV0dXJuIG49bnVsbD09bj8uNzpNYXRoLnBvdyguNyxuKSxuZXcgSjQodGhpcy5oLHRoaXMucyx0aGlzLmwqbix0aGlzLm9wYWNpdHkpfSxyZ2IoKXt2YXIgbj10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4obil8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsdD10aGlzLmwscj10'@; put 'Kyh0PC41P3Q6MS10KSplLGk9Mip0LXI7cmV0dXJuIG5ldyBpcChmNGUobj49MjQwP24tMjQwOm4rMTIwLGksciksZjRlKG4saSxyKSxmNGUobjwxMjA/bisyNDA6bi0xMjAsaSxyKSx0aGlzLm9wYWNpdHkpfSxjbGFtcCgpe3JldHVybiBuZXcgSjQoQkdlKHRoaXMuaCksUEsodGhpcy5zKSxQ'@; put 'Syh0aGlzLmwpLEZLKHRoaXMub3BhY2l0eSkpfSxkaXNwbGF5YWJsZSgpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsKCl7Y29uc3Qgbj1G'@; put 'Syh0aGlzLm9wYWNpdHkpO3JldHVybmAkezE9PT1uPyJoc2woIjoiaHNsYSgifSR7QkdlKHRoaXMuaCl9LCAkezEwMCpQSyh0aGlzLnMpfSUsICR7MTAwKlBLKHRoaXMubCl9JSR7MT09PW4/IikiOmAsICR7bn0pYH1gfX0pKTtjb25zdCBwNGU9bj0+KCk9Pm47ZnVuY3Rpb24gekdlKG4sZSl7'@; put 'dmFyIHQ9ZS1uO3JldHVybiB0P2Z1bmN0aW9uIFVHZShuLGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbit0KmV9fShuLHQpOnA0ZShpc05hTihuKT9lOm4pfWNvbnN0IEhLPWZ1bmN0aW9uIG4oZSl7dmFyIHQ9ZnVuY3Rpb24gUjBuKG4pe3JldHVybiAxPT0obj0rbik/ekdlOmZ1bmN0'@; put 'aW9uKGUsdCl7cmV0dXJuIHQtZT9mdW5jdGlvbiBrMG4obixlLHQpe3JldHVybiBuPU1hdGgucG93KG4sdCksZT1NYXRoLnBvdyhlLHQpLW4sdD0xL3QsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KG4rciplLHQpfX0oZSx0LG4pOnA0ZShpc05hTihlKT90OmUpfX0oZSk7ZnVuY3Rpb24g'@; put 'cihpLG8pe3ZhciBhPXQoKGk9TksoaSkpLnIsKG89TksobykpLnIpLGw9dChpLmcsby5nKSx1PXQoaS5iLG8uYiksZz16R2UoaS5vcGFjaXR5LG8ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKEUpe3JldHVybiBpLnI9YShFKSxpLmc9bChFKSxpLmI9dShFKSxpLm9wYWNpdHk9ZyhFKSxpKyIi'@; put 'fX1yZXR1cm4gci5nYW1tYT1uLHJ9KDEpO2Z1bmN0aW9uIFdHZShuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGEsbCx0PWUubGVuZ3RoLHI9bmV3IEFycmF5KHQpLGk9bmV3IEFycmF5KHQpLG89bmV3IEFycmF5KHQpO2ZvcihhPTA7YTx0OysrYSlsPU5LKGVbYV0pLHJbYV09bC5yfHwwLGlb'@; put 'YV09bC5nfHwwLG9bYV09bC5ifHwwO3JldHVybiByPW4ociksaT1uKGkpLG89bihvKSxsLm9wYWNpdHk9MSxmdW5jdGlvbih1KXtyZXR1cm4gbC5yPXIodSksbC5nPWkodSksbC5iPW8odSksbCsiIn19fVdHZShmdW5jdGlvbiBUMG4obil7dmFyIGU9bi5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rp'@; put 'b24odCl7dmFyIHI9dDw9MD90PTA6dD49MT8odD0xLGUtMSk6TWF0aC5mbG9vcih0KmUpLGk9bltyXSxvPW5bcisxXTtyZXR1cm4gakdlKCh0LXIvZSkqZSxyPjA/bltyLTFdOjIqaS1vLGksbyxyPGUtMT9uW3IrMl06MipvLWkpfX0pLFdHZShmdW5jdGlvbiB4MG4obil7dmFyIGU9bi5sZW5n'@; put 'dGg7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPU1hdGguZmxvb3IoKCh0JT0xKTwwPysrdDp0KSplKTtyZXR1cm4gakdlKCh0LXIvZSkqZSxuWyhyK2UtMSklZV0sbltyJWVdLG5bKHIrMSklZV0sblsocisyKSVlXSl9fSk7dmFyIGc0ZT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/Oltl'@; put 'RV1bLStdP1xkKyk/L2csbTRlPW5ldyBSZWdFeHAoZzRlLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFlHZShuLGUpe3ZhciByLGksbyx0PWc0ZS5sYXN0SW5kZXg9bTRlLmxhc3RJbmRleD0wLGE9LTEsbD1bXSx1PVtdO2ZvcihuKz0iIixlKz0iIjsocj1nNGUuZXhlYyhuKSkmJihpPW00ZS5leGVj'@; put 'KGUpKTspKG89aS5pbmRleCk+dCYmKG89ZS5zbGljZSh0LG8pLGxbYV0/bFthXSs9bzpsWysrYV09byksKHI9clswXSk9PT0oaT1pWzBdKT9sW2FdP2xbYV0rPWk6bFsrK2FdPWk6KGxbKythXT1udWxsLHUucHVzaCh7aTphLHg6UTYocixpKX0pKSx0PW00ZS5sYXN0SW5kZXg7cmV0dXJuIHQ8'@; put 'ZS5sZW5ndGgmJihvPWUuc2xpY2UodCksbFthXT9sW2FdKz1vOmxbKythXT1vKSxsLmxlbmd0aDwyP3VbMF0/ZnVuY3Rpb24gRDBuKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbihlKSsiIn19KHVbMF0ueCk6ZnVuY3Rpb24gSTBuKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBu'@; put 'fX0oZSk6KGU9dS5sZW5ndGgsZnVuY3Rpb24oZyl7Zm9yKHZhciBPLEU9MDtFPGU7KytFKWxbKE89dVtFXSkuaV09Ty54KGcpO3JldHVybiBsLmpvaW4oIiIpfSl9ZnVuY3Rpb24gWkdlKG4sZSl7dmFyIHQ7cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9RNjplIGluc3RhbmNlb2YgWUM/SEs6'@; put 'KHQ9WUMoZSkpPyhlPXQsSEspOllHZSkobixlKX1mdW5jdGlvbiBMMG4obil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUobil9fWZ1bmN0aW9uIE8wbihuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9fWZ1'@; put 'bmN0aW9uIE4wbihuLGUsdCl7dmFyIHIsbyxpPXQrIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUobik7cmV0dXJuIGE9PT1pP251bGw6YT09PXI/bzpvPWUocj1hLHQpfX1mdW5jdGlvbiBGMG4obixlLHQpe3ZhciByLG8saT10KyIiO3JldHVybiBmdW5jdGlv'@; put 'bigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTtyZXR1cm4gYT09PWk/bnVsbDphPT09cj9vOm89ZShyPWEsdCl9fWZ1bmN0aW9uIFAwbihuLGUsdCl7dmFyIHIsaSxvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHUsbD10KHRoaXMpO3JldHVybiBudWxsPT1s'@; put 'P3ZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobik6KGE9dGhpcy5nZXRBdHRyaWJ1dGUobikpPT09KHU9bCsiIik/bnVsbDphPT09ciYmdT09PWk/bzooaT11LG89ZShyPWEsbCkpfX1mdW5jdGlvbiBIMG4obixlLHQpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSx1LGw9dCh0'@; put 'aGlzKTtyZXR1cm4gbnVsbD09bD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTooYT10aGlzLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCkpPT09KHU9bCsiIik/bnVsbDphPT09ciYmdT09PWk/bzooaT11LG89ZShyPWEsbCkpfX1mdW5jdGlvbiBV'@; put 'MG4obixlKXt2YXIgdCxyO2Z1bmN0aW9uIGkoKXt2YXIgbz1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PXImJih0PShyPW8pJiZmdW5jdGlvbiBqMG4obixlKXtyZXR1cm4gZnVuY3Rpb24odCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwsZS5jYWxsKHRo'@; put 'aXMsdCkpfX0obixvKSksdH1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIHowbihuLGUpe3ZhciB0LHI7ZnVuY3Rpb24gaSgpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKHQ9KHI9bykmJmZ1bmN0aW9uIEIwbihuLGUpe3JldHVybiBmdW5jdGlvbih0'@; put 'KXt0aGlzLnNldEF0dHJpYnV0ZShuLGUuY2FsbCh0aGlzLHQpKX19KG4sbykpLHR9cmV0dXJuIGkuX3ZhbHVlPWUsaX1mdW5jdGlvbiBZMG4obixlKXtyZXR1cm4gZnVuY3Rpb24oKXtjNGUodGhpcyxuKS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFowbihuLGUp'@; put 'e3JldHVybiBlPStlLGZ1bmN0aW9uKCl7YzRlKHRoaXMsbikuZGVsYXk9ZX19ZnVuY3Rpb24gJDBuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7WDYodGhpcyxuKS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHEwbihuLGUpe3JldHVybiBlPStlLGZ1bmN0aW9u'@; put 'KCl7WDYodGhpcyxuKS5kdXJhdGlvbj1lfX12YXIgdTJuPXpDLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBHR2Uobil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKX19dmFyIEEybj0wO2Z1bmN0aW9uIGU4KG4sZSx0LHIpe3RoaXMuX2dyb3Vw'@; put 'cz1uLHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPXQsdGhpcy5faWQ9cn1mdW5jdGlvbiB2NGUobil7cmV0dXJuIHpDKCkudHJhbnNpdGlvbihuKX1mdW5jdGlvbiAkR2UoKXtyZXR1cm4rK0Eybn12YXIgZjk9ekMucHJvdG90eXBlO2U4LnByb3RvdHlwZT12NGUucHJvdG90eXBlPXtjb25z'@; put 'dHJ1Y3RvcjplOCxzZWxlY3Q6ZnVuY3Rpb24gbDJuKG4pe3ZhciBlPXRoaXMuX25hbWUsdD10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49UW1lKG4pKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz1uZXcgQXJyYXkoaSksYT0wO2E8aTsrK2EpZm9yKHZhciBF'@; put 'LE8sbD1yW2FdLHU9bC5sZW5ndGgsZz1vW2FdPW5ldyBBcnJheSh1KSxaPTA7Wjx1OysrWikoRT1sW1pdKSYmKE89bi5jYWxsKEUsRS5fX2RhdGFfXyxaLGwpKSYmKCJfX2RhdGFfXyJpbiBFJiYoTy5fX2RhdGFfXz1FLl9fZGF0YV9fKSxnW1pdPU8sUksoZ1taXSxlLHQsWixnLFE0KEUsdCkp'@; put 'KTtyZXR1cm4gbmV3IGU4KG8sdGhpcy5fcGFyZW50cyxlLHQpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gYzJuKG4pe3ZhciBlPXRoaXMuX25hbWUsdD10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49YUdlKG4pKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz1bXSxh'@; put 'PVtdLGw9MDtsPGk7KytsKWZvcih2YXIgRSx1PXJbbF0sZz11Lmxlbmd0aCxPPTA7TzxnOysrTylpZihFPXVbT10pe2Zvcih2YXIgZWUsWj1uLmNhbGwoRSxFLl9fZGF0YV9fLE8sdSksdmU9UTQoRSx0KSxNZT0wLEhlPVoubGVuZ3RoO01lPEhlOysrTWUpKGVlPVpbTWVdKSYmUksoZWUsZSx0'@; put 'LE1lLFosdmUpO28ucHVzaChaKSxhLnB1c2goRSl9cmV0dXJuIG5ldyBlOChvLGEsZSx0KX0sc2VsZWN0Q2hpbGQ6Zjkuc2VsZWN0Q2hpbGQsc2VsZWN0Q2hpbGRyZW46Zjkuc2VsZWN0Q2hpbGRyZW4sZmlsdGVyOmZ1bmN0aW9uIHQybihuKXsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49c0dl'@; put 'KG4pKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHQ9ZS5sZW5ndGgscj1uZXcgQXJyYXkodCksaT0wO2k8dDsrK2kpZm9yKHZhciB1LG89ZVtpXSxhPW8ubGVuZ3RoLGw9cltpXT1bXSxnPTA7ZzxhOysrZykodT1vW2ddKSYmbi5jYWxsKHUsdS5fX2RhdGFfXyxnLG8pJiZsLnB1c2godSk7cmV0'@; put 'dXJuIG5ldyBlOChyLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIG4ybihuKXtpZihuLl9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHQ9bi5fZ3JvdXBzLHI9ZS5sZW5ndGgsbz1NYXRoLm1pbihy'@; put 'LHQubGVuZ3RoKSxhPW5ldyBBcnJheShyKSxsPTA7bDxvOysrbClmb3IodmFyIFosdT1lW2xdLGc9dFtsXSxFPXUubGVuZ3RoLE89YVtsXT1uZXcgQXJyYXkoRSksZWU9MDtlZTxFOysrZWUpKFo9dVtlZV18fGdbZWVdKSYmKE9bZWVdPVopO2Zvcig7bDxyOysrbClhW2xdPWVbbF07cmV0dXJu'@; put 'IG5ldyBlOChhLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBkMm4oKXtyZXR1cm4gbmV3IHUybih0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gVDJuKCl7Zm9yKHZhciBuPXRoaXMuX25hbWUsZT10'@; put 'aGlzLl9pZCx0PSRHZSgpLHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz0wO288aTsrK28pZm9yKHZhciB1LGE9cltvXSxsPWEubGVuZ3RoLGc9MDtnPGw7KytnKWlmKHU9YVtnXSl7dmFyIEU9UTQodSxlKTtSSyh1LG4sdCxnLGEse3RpbWU6RS50aW1lK0UuZGVsYXkrRS5kdXJhdGlvbixk'@; put 'ZWxheTowLGR1cmF0aW9uOkUuZHVyYXRpb24sZWFzZTpFLmVhc2V9KX1yZXR1cm4gbmV3IGU4KHIsdGhpcy5fcGFyZW50cyxuLHQpfSxjYWxsOmY5LmNhbGwsbm9kZXM6Zjkubm9kZXMsbm9kZTpmOS5ub2RlLHNpemU6Zjkuc2l6ZSxlbXB0eTpmOS5lbXB0eSxlYWNoOmY5LmVhY2gsb246ZnVu'@; put 'Y3Rpb24gbzJuKG4sZSl7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9RNCh0aGlzLm5vZGUoKSx0KS5vbi5vbihuKTp0aGlzLmVhY2goZnVuY3Rpb24gaTJuKG4sZSx0KXt2YXIgcixpLG89ZnVuY3Rpb24gcjJuKG4pe3JldHVybihuKyIiKS50cmltKCkuc3BsaXQo'@; put 'L158XHMrLykuZXZlcnkoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbmRleE9mKCIuIik7cmV0dXJuIHQ+PTAmJihlPWUuc2xpY2UoMCx0KSksIWV8fCJzdGFydCI9PT1lfSl9KGUpP2M0ZTpYNjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsbiksbD1hLm9uO2whPT1yJiYoaT0ocj1sKS5j'@; put 'b3B5KCkpLm9uKGUsdCksYS5vbj1pfX0odCxuLGUpKX0sYXR0cjpmdW5jdGlvbiBWMG4obixlKXt2YXIgdD13SyhuKSxyPSJ0cmFuc2Zvcm0iPT09dD9SR2U6WkdlO3JldHVybiB0aGlzLmF0dHJUd2VlbihuLCJmdW5jdGlvbiI9PXR5cGVvZiBlPyh0LmxvY2FsP0gwbjpQMG4pKHQscixkNGUo'@; put 'dGhpcywiYXR0ci4iK24sZSkpOm51bGw9PWU/KHQubG9jYWw/TzBuOkwwbikodCk6KHQubG9jYWw/RjBuOk4wbikodCxyLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIFcwbihuLGUpe3ZhciB0PSJhdHRyLiIrbjtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHQ9dGhpcy50d2Vlbih0KSkm'@; put 'JnQuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4odCxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIHI9d0sobik7cmV0dXJuIHRoaXMudHdlZW4odCwoci5sb2NhbD9VMG46ejBuKShyLGUpKX0sc3R5bGU6ZnVuY3Rpb24gbTJuKG4s'@; put 'ZSx0KXt2YXIgcj0idHJhbnNmb3JtIj09KG4rPSIiKT91MG46WkdlO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2VlbihuLGZ1bmN0aW9uIGgybihuLGUpe3ZhciB0LHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz15QSh0aGlzLG4pLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHko'@; put 'bikseUEodGhpcyxuKSk7cmV0dXJuIG89PT1hP251bGw6bz09PXQmJmE9PT1yP2k6aT1lKHQ9byxyPWEpfX0obixyKSkub24oImVuZC5zdHlsZS4iK24sR0dlKG4pKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4obixmdW5jdGlvbiBwMm4obixlLHQpe3ZhciByLGksbzty'@; put 'ZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT15QSh0aGlzLG4pLGw9dCh0aGlzKSx1PWwrIiI7cmV0dXJuIG51bGw9PWwmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG4pLHU9bD15QSh0aGlzLG4pKSxhPT09dT9udWxsOmE9PT1yJiZ1PT09aT9vOihpPXUsbz1lKHI9YSxsKSl9fShuLHIsZDRl'@; put 'KHRoaXMsInN0eWxlLiIrbixlKSkpLmVhY2goZnVuY3Rpb24gZzJuKG4sZSl7dmFyIHQscixpLGwsbz0ic3R5bGUuIitlLGE9ImVuZC4iK287cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHU9WDYodGhpcyxuKSxnPXUub24sRT1udWxsPT11LnZhbHVlW29dP2x8fChsPUdHZShlKSk6dm9pZCAwOyhn'@; put 'IT09dHx8aSE9PUUpJiYocj0odD1nKS5jb3B5KCkpLm9uKGEsaT1FKSx1Lm9uPXJ9fSh0aGlzLl9pZCxuKSk6dGhpcy5zdHlsZVR3ZWVuKG4sZnVuY3Rpb24gZjJuKG4sZSx0KXt2YXIgcixvLGk9dCsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT15QSh0aGlzLG4pO3JldHVybiBhPT09aT9u'@; put 'dWxsOmE9PT1yP286bz1lKHI9YSx0KX19KG4scixlKSx0KS5vbigiZW5kLnN0eWxlLiIrbixudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiB5Mm4obixlLHQpe3ZhciByPSJzdHlsZS4iKyhuKz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihyPXRoaXMudHdlZW4ocikpJiZyLl92'@; put 'YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKHIsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKHIsZnVuY3Rpb24gXzJuKG4sZSx0KXt2YXIgcixpO2Z1bmN0aW9uIG8oKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJn'@; put 'dW1lbnRzKTtyZXR1cm4gYSE9PWkmJihyPShpPWEpJiZmdW5jdGlvbiB2Mm4obixlLHQpe3JldHVybiBmdW5jdGlvbihyKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4sZS5jYWxsKHRoaXMsciksdCl9fShuLGEsdCkpLHJ9cmV0dXJuIG8uX3ZhbHVlPWUsb30obixlLHQ/PyIiKSl9LHRleHQ6'@; put 'ZnVuY3Rpb24gQzJuKG4pe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbiB3Mm4obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bih0aGlzKTt0aGlzLnRleHRDb250ZW50PWU/PyIifX0oZDRlKHRoaXMsInRleHQiLG4pKTpmdW5jdGlvbiBi'@; put 'Mm4obil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ufX0obnVsbD09bj8iIjpuKyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiBNMm4obil7dmFyIGU9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYobnVs'@; put 'bD09bilyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihlLGZ1bmN0aW9uIEUybihuKXt2YXIgZSx0O2Z1bmN0aW9uIHIoKXt2YXIgaT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4g'@; put 'aSE9PXQmJihlPSh0PWkpJiZmdW5jdGlvbiBTMm4obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9bi5jYWxsKHRoaXMsZSl9fShpKSksZX1yZXR1cm4gci5fdmFsdWU9bixyfShuKSl9LHJlbW92ZTpmdW5jdGlvbiBzMm4oKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92'@; put 'ZSIsZnVuY3Rpb24gYTJuKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIHQgaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK3QhPT1uKXJldHVybjtlJiZlLnJlbW92ZUNoaWxkKHRoaXMpfX0odGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gZjBuKG4s'@; put 'ZSl7dmFyIHQ9dGhpcy5faWQ7aWYobis9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGEscj1RNCh0aGlzLm5vZGUoKSx0KS50d2VlbixpPTAsbz1yLmxlbmd0aDtpPG87KytpKWlmKChhPXJbaV0pLm5hbWU9PT1uKXJldHVybiBhLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlz'@; put 'LmVhY2goKG51bGw9PWU/ZDBuOmgwbikodCxuLGUpKX0sZGVsYXk6ZnVuY3Rpb24gRzBuKG4pe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIG4/WTBuOlowbikoZSxuKSk6UTQodGhpcy5ub2RlKCksZSkuZGVsYXl9'@; put 'LGR1cmF0aW9uOmZ1bmN0aW9uIEswbihuKXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBuPyQwbjpxMG4pKGUsbikpOlE0KHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIFEwbihuKXt2YXIg'@; put 'ZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24gWDBuKG4sZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe1g2KHRoaXMsbikuZWFzZT1lfX0oZSxuKSk6UTQodGhpcy5ub2RlKCksZSku'@; put 'ZWFzZX0sZWFzZVZhcnlpbmc6ZnVuY3Rpb24gZTJuKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIEowbihuLGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCJmdW5j'@; put 'dGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtYNih0aGlzLG4pLmVhc2U9dH19KHRoaXMuX2lkLG4pKX0sZW5kOmZ1bmN0aW9uIHgybigpe3ZhciBuLGUsdD10aGlzLHI9dC5faWQsaT10LnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obyxhKXt2YXIgbD17dmFsdWU6'@; put 'YX0sdT17dmFsdWU6ZnVuY3Rpb24oKXswPT09LS1pJiZvKCl9fTt0LmVhY2goZnVuY3Rpb24oKXt2YXIgZz1YNih0aGlzLHIpLEU9Zy5vbjtFIT09biYmKChlPShuPUUpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChsKSxlLl8uaW50ZXJydXB0LnB1c2gobCksZS5fLmVuZC5wdXNoKHUpKSxnLm9u'@; put 'PWV9KSwwPT09aSYmbygpfSl9LFtTeW1ib2wuaXRlcmF0b3JdOmY5W1N5bWJvbC5pdGVyYXRvcl19O3ZhciBSMm49e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOmZ1bmN0aW9uIGsybihuKXtyZXR1cm4oKG4qPTIpPD0xP24qbipuOihuLT0yKSpuKm4rMikvMn19O2Z1bmN0'@; put 'aW9uIEkybihuLGUpe2Zvcih2YXIgdDshKHQ9bi5fX3RyYW5zaXRpb24pfHwhKHQ9dFtlXSk7KWlmKCEobj1uLnBhcmVudE5vZGUpKXRocm93IG5ldyBFcnJvcihgdHJhbnNpdGlvbiAke2V9IG5vdCBmb3VuZGApO3JldHVybiB0fXpDLnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24gczBu'@; put 'KG4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtJSyh0aGlzLG4pfSl9LHpDLnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIEQybihuKXt2YXIgZSx0O24gaW5zdGFuY2VvZiBlOD8oZT1uLl9pZCxuPW4uX25hbWUpOihlPSRHZSgpLCh0PVIybikudGltZT1pNGUoKSxuPW51bGw9'@; put 'PW4/bnVsbDpuKyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz0wO288aTsrK28pZm9yKHZhciB1LGE9cltvXSxsPWEubGVuZ3RoLGc9MDtnPGw7KytnKSh1PWFbZ10pJiZSSyh1LG4sZSxnLGEsdHx8STJuKHUsZSkpO3JldHVybiBuZXcgZTgocix0aGlzLl9wYXJlbnRz'@; put 'LG4sZSl9O3ZhciBMMm49W251bGxdO2NvbnN0IF80ZT17Y2FwdHVyZTohMCxwYXNzaXZlOiExfTtmdW5jdGlvbiB5NGUobil7bi5wcmV2ZW50RGVmYXVsdCgpLG4uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gcUdlKG4pe3JldHVybigobj1NYXRoLmV4cChuKSkrMS9uKS8y'@; put 'fWNvbnN0IEIybj1mdW5jdGlvbiBuKGUsdCxyKXtmdW5jdGlvbiBpKG8sYSl7dmFyIEhlLFdlLGw9b1swXSx1PW9bMV0sZz1vWzJdLFo9YVsyXSxlZT1hWzBdLWwsdmU9YVsxXS11LE1lPWVlKmVlK3ZlKnZlO2lmKE1lPDFlLTEyKVdlPU1hdGgubG9nKFovZykvZSxIZT1mdW5jdGlvbihnbil7'@; put 'cmV0dXJuW2wrZ24qZWUsdStnbip2ZSxnKk1hdGguZXhwKGUqZ24qV2UpXX07ZWxzZXt2YXIgYXQ9TWF0aC5zcXJ0KE1lKSxDdD0oWipaLWcqZytyKk1lKS8oMipnKnQqYXQpLEF0PShaKlotZypnLXIqTWUpLygyKloqdCphdCksS3Q9TWF0aC5sb2coTWF0aC5zcXJ0KEN0KkN0KzEpLUN0KSxx'@; put 'dD1NYXRoLmxvZyhNYXRoLnNxcnQoQXQqQXQrMSktQXQpO1dlPShxdC1LdCkvZSxIZT1mdW5jdGlvbihnbil7dmFyIFRuPWduKldlLENuPXFHZShLdCkscXI9Zy8odCphdCkqKENuKmZ1bmN0aW9uIFYybihuKXtyZXR1cm4oKG49TWF0aC5leHAoMipuKSktMSkvKG4rMSl9KGUqVG4rS3QpLWZ1'@; put 'bmN0aW9uIEgybihuKXtyZXR1cm4oKG49TWF0aC5leHAobikpLTEvbikvMn0oS3QpKTtyZXR1cm5bbCtxciplZSx1K3FyKnZlLGcqQ24vcUdlKGUqVG4rS3QpXX19cmV0dXJuIEhlLmR1cmF0aW9uPTFlMypXZSplL01hdGguU1FSVDIsSGV9cmV0dXJuIGkucmhvPWZ1bmN0aW9uKG8pe3ZhciBh'@; put 'PU1hdGgubWF4KC4wMDEsK28pLGw9YSphO3JldHVybiBuKGEsbCxsKmwpfSxpfShNYXRoLlNRUlQyLDIsNCk7ZnVuY3Rpb24gJEMobixlKXtpZihuPWZ1bmN0aW9uIGoybihuKXtsZXQgZTtmb3IoO2U9bi5zb3VyY2VFdmVudDspbj1lO3JldHVybiBufShuKSx2b2lkIDA9PT1lJiYoZT1uLmN1'@; put 'cnJlbnRUYXJnZXQpLGUpe3ZhciB0PWUub3duZXJTVkdFbGVtZW50fHxlO2lmKHQuY3JlYXRlU1ZHUG9pbnQpe3ZhciByPXQuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gci54PW4uY2xpZW50WCxyLnk9bi5jbGllbnRZLFsocj1yLm1hdHJpeFRyYW5zZm9ybShlLmdldFNjcmVlbkNUTSgpLmlu'@; put 'dmVyc2UoKSkpLngsci55XX1pZihlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bbi5jbGllbnRYLWkubGVmdC1lLmNsaWVudExlZnQsbi5jbGllbnRZLWkudG9wLWUuY2xpZW50VG9wXX19cmV0dXJuW24ucGFnZVgsbi5wYWdl'@; put 'WV19Y29uc3QgVks9bj0+KCk9Pm47ZnVuY3Rpb24gVTJuKG4se3NvdXJjZUV2ZW50OmUsdGFyZ2V0OnQsdHJhbnNmb3JtOnIsZGlzcGF0Y2g6aX0pe09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3R5cGU6e3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHNvdXJj'@; put 'ZUV2ZW50Ont2YWx1ZTplLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSx0YXJnZXQ6e3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHRyYW5zZm9ybTp7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sXzp7dmFsdWU6aX19KX1mdW5jdGlv'@; put 'biBwOShuLGUsdCl7dGhpcy5rPW4sdGhpcy54PWUsdGhpcy55PXR9cDkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpwOSxzY2FsZTpmdW5jdGlvbihuKXtyZXR1cm4gMT09PW4/dGhpczpuZXcgcDkodGhpcy5rKm4sdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihuLGUpe3JldHVy'@; put 'biAwPT09biYwPT09ZT90aGlzOm5ldyBwOSh0aGlzLmssdGhpcy54K3RoaXMuaypuLHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKG4pe3JldHVybltuWzBdKnRoaXMuayt0aGlzLngsblsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKG4pe3JldHVybiBuKnRoaXMu'@; put 'ayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbihuKXtyZXR1cm4gbip0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24obil7cmV0dXJuWyhuWzBdLXRoaXMueCkvdGhpcy5rLChuWzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLngpL3RoaXMu'@; put 'a30saW52ZXJ0WTpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24obil7cmV0dXJuIG4uY29weSgpLmRvbWFpbihuLnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAobi5pbnZlcnQsbikpfSxyZXNjYWxlWTpmdW5jdGlvbihuKXty'@; put 'ZXR1cm4gbi5jb3B5KCkuZG9tYWluKG4ucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcChuLmludmVydCxuKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBCSz1uZXcg'@; put 'cDkoMSwwLDApO2Z1bmN0aW9uIGpLKG4pe2Zvcig7IW4uX196b29tOylpZighKG49bi5wYXJlbnROb2RlKSlyZXR1cm4gQks7cmV0dXJuIG4uX196b29tfWZ1bmN0aW9uIGI0ZShuKXtuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHhQKG4pe24ucHJldmVudERlZmF1bHQo'@; put 'KSxuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHoybihuKXtyZXR1cm4hKG4uY3RybEtleSYmIndoZWVsIiE9PW4udHlwZXx8bi5idXR0b24pfWZ1bmN0aW9uIFcybigpe3ZhciBuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiBTVkdFbGVtZW50PyhuPW4ub3duZXJTVkdF'@; put 'bGVtZW50fHxuKS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyhuPW4udmlld0JveC5iYXNlVmFsKS54LG4ueV0sW24ueCtuLndpZHRoLG4ueStuLmhlaWdodF1dOltbMCwwXSxbbi53aWR0aC5iYXNlVmFsLnZhbHVlLG4uaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTpbWzAsMF0sW24uY2xpZW50'@; put 'V2lkdGgsbi5jbGllbnRIZWlnaHRdXX1mdW5jdGlvbiBLR2UoKXtyZXR1cm4gdGhpcy5fX3pvb218fEJLfWZ1bmN0aW9uIFkybihuKXtyZXR1cm4tbi5kZWx0YVkqKDE9PT1uLmRlbHRhTW9kZT8uMDU6bi5kZWx0YU1vZGU/MTouMDAyKSoobi5jdHJsS2V5PzEwOjEpfWZ1bmN0aW9uIFoybigp'@; put 'e3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBHMm4obixlLHQpe3ZhciByPW4uaW52ZXJ0WChlWzBdWzBdKS10WzBdWzBdLGk9bi5pbnZlcnRYKGVbMV1bMF0pLXRbMV1bMF0sbz1uLmludmVydFkoZVswXVsxXSktdFswXVsx'@; put 'XSxhPW4uaW52ZXJ0WShlWzFdWzFdKS10WzFdWzFdO3JldHVybiBuLnRyYW5zbGF0ZShpPnI/KHIraSkvMjpNYXRoLm1pbigwLHIpfHxNYXRoLm1heCgwLGkpLGE+bz8obythKS8yOk1hdGgubWluKDAsbyl8fE1hdGgubWF4KDAsYSkpfWZ1bmN0aW9uIFhHZShuKXt2YXIgZT17fSx0PW4ubm9k'@; put 'ZSgpLm5vZGVOYW1lO2UudGFnPXQsIiN0ZXh0Ij09dD9lLnRleHQ9bi50ZXh0KCk6IiNjb21tZW50Ij09dCYmKGUuY29tbWVudD1uLnRleHQoKSksZS5hdHRyaWJ1dGVzPXt9O3ZhciByPW4ubm9kZSgpLmF0dHJpYnV0ZXM7aWYocilmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89'@; put 'cltpXTtlLmF0dHJpYnV0ZXNbby5uYW1lXT1vLnZhbHVlfXZhciBFLHU9bi5ub2RlKCkudHJhbnNmb3JtO2lmKHUmJjAhPXUuYmFzZVZhbC5udW1iZXJPZkl0ZW1zKXt2YXIgZz11LmJhc2VWYWwuY29uc29saWRhdGUoKS5tYXRyaXg7ZS50cmFuc2xhdGlvbj17eDpnLmUseTpnLmZ9LGUuc2Nh'@; put 'bGU9Zy5hfWlmKCJlbGxpcHNlIj09dCYmKGUuY2VudGVyPXt4OmUuYXR0cmlidXRlcy5jeCx5OmUuYXR0cmlidXRlcy5jeX0pLCJwb2x5Z29uIj09dCl7dmFyIE89KEU9bi5hdHRyKCJwb2ludHMiKS5zcGxpdCgiICIpKS5tYXAoZnVuY3Rpb24oQ3Qpe3JldHVybiBDdC5zcGxpdCgiLCIpWzBd'@; put 'fSksWj1FLm1hcChmdW5jdGlvbihDdCl7cmV0dXJuIEN0LnNwbGl0KCIsIilbMV19KSxlZT1NYXRoLm1pbi5hcHBseShudWxsLE8pLHZlPU1hdGgubWF4LmFwcGx5KG51bGwsTyksTWU9TWF0aC5taW4uYXBwbHkobnVsbCxaKSxIZT1NYXRoLm1heC5hcHBseShudWxsLFopO2UuYmJveD17eDpl'@; put 'ZSx5Ok1lLHdpZHRoOnZlLWVlLGhlaWdodDpIZS1NZX0sZS5jZW50ZXI9e3g6KGVlK3ZlKS8yLHk6KE1lK0hlKS8yfX0icGF0aCI9PXQmJigoRT1uLmF0dHIoImQiKS5zcGxpdCgvW0EtWiBdLykpLnNoaWZ0KCksTz1FLm1hcChmdW5jdGlvbigkbil7cmV0dXJuKyRuLnNwbGl0KCIsIilbMF19'@; put 'KSxaPUUubWFwKGZ1bmN0aW9uKCRuKXtyZXR1cm4rJG4uc3BsaXQoIiwiKVsxXX0pLGVlPU1hdGgubWluLmFwcGx5KG51bGwsTyksdmU9TWF0aC5tYXguYXBwbHkobnVsbCxPKSxNZT1NYXRoLm1pbi5hcHBseShudWxsLFopLEhlPU1hdGgubWF4LmFwcGx5KG51bGwsWiksZS5iYm94PXt4OmVl'@; put 'LHk6TWUsd2lkdGg6dmUtZWUsaGVpZ2h0OkhlLU1lfSxlLmNlbnRlcj17eDooZWUrdmUpLzIseTooTWUrSGUpLzJ9LGUudG90YWxMZW5ndGg9bi5ub2RlKCkuZ2V0VG90YWxMZW5ndGgoKSk7cmV0dXJuInRleHQiPT10JiYoZS5jZW50ZXI9e3g6bi5hdHRyKCJ4IikseTpuLmF0dHIoInkiKX0p'@; put 'LCIjdGV4dCI9PXQ/ZS50ZXh0PW4udGV4dCgpOiIjY29tbWVudCI9PXQmJihlLmNvbW1lbnQ9bi50ZXh0KCkpLGV9ZnVuY3Rpb24gcUMobil7dmFyIGU9WEdlKG4pO3JldHVybiBlLmNoaWxkcmVuPVtdLG40ZShuLm5vZGUoKS5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9cUMo'@; put 'QmwodGhpcykpO3IucGFyZW50PWUsZS5jaGlsZHJlbi5wdXNoKHIpfSksZX1mdW5jdGlvbiB3NGUobil7cmV0dXJuIiN0ZXh0Ij09bi50YWc/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpOiIjY29tbWVudCI9PW4udGFnP2RvY3VtZW50LmNyZWF0ZUNvbW1lbnQobi5jb21tZW50KTpkb2N1'@; put 'bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixuLnRhZyl9ZnVuY3Rpb24gQzRlKG4pe3ZhciBlPXc0ZShuKSx0PUJsKGUpLHI9bi5hdHRyaWJ1dGVzO2Zvcih2YXIgaSBvZiBPYmplY3Qua2V5cyhyKSl0LmF0dHIoaSxyW2ldKTtyZXR1cm4gZX1mdW5j'@; put 'dGlvbiBRR2UobixlKXt2YXIgdD1CbChuLm5vZGUoKS5wYXJlbnROb2RlKSxyPUM0ZShlKSxpPXQuaW5zZXJ0KGZ1bmN0aW9uKCl7cmV0dXJuIHJ9LGZ1bmN0aW9uKCl7cmV0dXJuIG4ubm9kZSgpfSk7cmV0dXJuIG4ucmVtb3ZlKCksaX1mdW5jdGlvbiBTNGUobixlKXshZnVuY3Rpb24gcTJu'@; put 'KG4sZSl7bi5kYXR1bShlKSxuLmRhdGEoW2VdLGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleX0pfShuLGUpLG40ZShuLm5vZGUoKS5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKHIsaSl7UzRlKEJsKHRoaXMpLGUuY2hpbGRyZW5baV0pfSl9ZnVuY3Rpb24gQVAobixlPTApe3ZhciB0PUJsKHRo'@; put 'aXMpLGk9bi5hdHRyaWJ1dGVzLG89dC5ub2RlKCkuYXR0cmlidXRlcztpZihvKWZvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdLHU9bC5uYW1lO2lmKCJ4bWxucyIhPXUuc3BsaXQoIjoiKVswXSYmbC5uYW1lc3BhY2VVUkkpe3ZhciBnPWwubmFtZXNwYWNlVVJJLnNwbGl0'@; put 'KCIvIik7dT1nW2cubGVuZ3RoLTFdKyI6Iit1fXUgaW4gaXx8KGlbdV09bnVsbCl9Zm9yKHZhciBPIG9mIE9iamVjdC5rZXlzKGkpKXQuYXR0cihPLGlbT10pO24udGV4dCYmdC50ZXh0KG4udGV4dCksZnVuY3Rpb24gSzJuKG4sZSl7dmFyIHQ9bi5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1'@; put 'cm4gbi5ub2RlKCkuY2hpbGROb2Rlc30pLHI9KHQ9dC5kYXRhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmNoaWxkcmVufSxmdW5jdGlvbihhKXtyZXR1cm4gYS50YWcrIi0iK2V9KSkuZW50ZXIoKS5hcHBlbmQoZnVuY3Rpb24oYSl7cmV0dXJuIHc0ZShhKX0pLGk9dC5leGl0KCk7aT1pLnJlbW92'@; put 'ZSgpLHQ9ci5tZXJnZSh0KTt2YXIgbz17fTt0LmVhY2goZnVuY3Rpb24oYSl7dmFyIGw9YS50YWc7bnVsbD09b1tsXSYmKG9bbF09MCk7dmFyIHU9b1tsXSsrO0FQLmNhbGwodGhpcyxhLHUpfSl9KHQsZSl9ZnVuY3Rpb24gSkdlKG4sZSl7dmFyIGEsdD1lP2UubGVuZ3RoOjAscj1uP01hdGgu'@; put 'bWluKHQsbi5sZW5ndGgpOjAsaT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkodCk7Zm9yKGE9MDthPHI7KythKWlbYV09VUsoblthXSxlW2FdKTtmb3IoO2E8dDsrK2Epb1thXT1lW2FdO3JldHVybiBmdW5jdGlvbihsKXtmb3IoYT0wO2E8cjsrK2Epb1thXT1pW2FdKGwpO3JldHVybiBvfX1m'@; put 'dW5jdGlvbiBKMm4obixlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gbj0rbixlPStlLGZ1bmN0aW9uKHIpe3JldHVybiB0LnNldFRpbWUobiooMS1yKStlKnIpLHR9fWZ1bmN0aW9uIGVmbihuLGUpe3ZhciBpLHQ9e30scj17fTtmb3IoaSBpbihudWxsPT09bnx8Im9iamVjdCIhPXR5cGVvZiBu'@; put 'KSYmKG49e30pLChudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKGU9e30pLGUpaSBpbiBuP3RbaV09VUsobltpXSxlW2ldKTpyW2ldPWVbaV07cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihpIGluIHQpcltpXT10W2ldKG8pO3JldHVybiByfX1mdW5jdGlvbiB0Zm4obixlKXtlfHwoZT1b'@; put 'XSk7dmFyIGksdD1uP01hdGgubWluKGUubGVuZ3RoLG4ubGVuZ3RoKTowLHI9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihvKXtmb3IoaT0wO2k8dDsrK2kpcltpXT1uW2ldKigxLW8pK2VbaV0qbztyZXR1cm4gcn19ZnVuY3Rpb24gVUsobixlKXt2YXIgcix0PXR5cGVvZiBlO3JldHVybiBu'@; put 'dWxsPT1lfHwiYm9vbGVhbiI9PT10P3A0ZShlKTooIm51bWJlciI9PT10P1E2OiJzdHJpbmciPT09dD8ocj1ZQyhlKSk/KGU9cixISyk6WUdlOmUgaW5zdGFuY2VvZiBZQz9ISzplIGluc3RhbmNlb2YgRGF0ZT9KMm46ZnVuY3Rpb24gbmZuKG4pe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXco'@; put 'bikmJiEobiBpbnN0YW5jZW9mIERhdGFWaWV3KX0oZSk/dGZuOkFycmF5LmlzQXJyYXkoZSk/SkdlOiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9lZm46UTYpKG4sZSl9ZnVuY3Rpb24gZSRlKCl7dmFyIG49dGhp'@; put 'cyxyPUJsKHRoaXMuX3NlbGVjdGlvbi5ub2RlKCkucXVlcnlTZWxlY3Rvcigic3ZnIikpO2lmKDA9PXIuc2l6ZSgpKXJldHVybiB0aGlzO3RoaXMuX3pvb21TZWxlY3Rpb249cjt2YXIgaT1mdW5jdGlvbiAkMm4oKXt2YXIgRSxPLFosbj16Mm4sZT1XMm4sdD1HMm4scj1ZMm4saT1aMm4sbz1b'@; put 'MCwxLzBdLGE9W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0sbD0yNTAsdT1CMm4sZz1yNGUoInN0YXJ0Iiwiem9vbSIsImVuZCIpLE1lPTAsSGU9MTA7ZnVuY3Rpb24gV2UoZm4pe2ZuLnByb3BlcnR5KCJfX3pvb20iLEtHZSkub24oIndoZWVsLnpvb20iLFRuLHtwYXNzaXZlOiExfSkub24oIm1v'@; put 'dXNlZG93bi56b29tIixDbikub24oImRibGNsaWNrLnpvb20iLHFyKS5maWx0ZXIoaSkub24oInRvdWNoc3RhcnQuem9vbSIsJG4pLm9uKCJ0b3VjaG1vdmUuem9vbSIsVHIpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLHJpKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxp'@; put 'Z2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGF0KGZuLHlyKXtyZXR1cm4oeXI9TWF0aC5tYXgob1swXSxNYXRoLm1pbihvWzFdLHlyKSkpPT09Zm4uaz9mbjpuZXcgcDkoeXIsZm4ueCxmbi55KX1mdW5jdGlvbiBDdChmbix5cixBbil7dmFyIEhyPXlyWzBdLUFuWzBdKmZu'@; put 'LmssdGk9eXJbMV0tQW5bMV0qZm4uaztyZXR1cm4gSHI9PT1mbi54JiZ0aT09PWZuLnk/Zm46bmV3IHA5KGZuLmssSHIsdGkpfWZ1bmN0aW9uIEF0KGZuKXtyZXR1cm5bKCtmblswXVswXSsgK2ZuWzFdWzBdKS8yLCgrZm5bMF1bMV0rICtmblsxXVsxXSkvMl19ZnVuY3Rpb24gS3QoZm4seXIs'@; put 'QW4sSHIpe2ZuLm9uKCJzdGFydC56b29tIixmdW5jdGlvbigpe3F0KHRoaXMsYXJndW1lbnRzKS5ldmVudChIcikuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsZnVuY3Rpb24oKXtxdCh0aGlzLGFyZ3VtZW50cykuZXZlbnQoSHIpLmVuZCgpfSkudHdlZW4oInpvb20i'@; put 'LGZ1bmN0aW9uKCl7dmFyIHRpPXRoaXMsZnI9YXJndW1lbnRzLGVpPXF0KHRpLGZyKS5ldmVudChIciksUG89ZS5hcHBseSh0aSxmciksSG89bnVsbD09QW4/QXQoUG8pOiJmdW5jdGlvbiI9PXR5cGVvZiBBbj9Bbi5hcHBseSh0aSxmcik6QW4seGk9TWF0aC5tYXgoUG9bMV1bMF0tUG9bMF1b'@; put 'MF0sUG9bMV1bMV0tUG9bMF1bMV0pLFRvPXRpLl9fem9vbSx3cz0iZnVuY3Rpb24iPT10eXBlb2YgeXI/eXIuYXBwbHkodGksZnIpOnlyLHRzPXUoVG8uaW52ZXJ0KEhvKS5jb25jYXQoeGkvVG8uayksd3MuaW52ZXJ0KEhvKS5jb25jYXQoeGkvd3MuaykpO3JldHVybiBmdW5jdGlvbihrYSl7'@; put 'aWYoMT09PWthKWthPXdzO2Vsc2V7dmFyIGFvPXRzKGthKSx1dD14aS9hb1syXTtrYT1uZXcgcDkodXQsSG9bMF0tYW9bMF0qdXQsSG9bMV0tYW9bMV0qdXQpfWVpLnpvb20obnVsbCxrYSl9fSl9ZnVuY3Rpb24gcXQoZm4seXIsQW4pe3JldHVybiFBbiYmZm4uX196b29taW5nfHxuZXcgZ24o'@; put 'Zm4seXIpfWZ1bmN0aW9uIGduKGZuLHlyKXt0aGlzLnRoYXQ9Zm4sdGhpcy5hcmdzPXlyLHRoaXMuYWN0aXZlPTAsdGhpcy5zb3VyY2VFdmVudD1udWxsLHRoaXMuZXh0ZW50PWUuYXBwbHkoZm4seXIpLHRoaXMudGFwcz0wfWZ1bmN0aW9uIFRuKGZuLC4uLnlyKXtpZihuLmFwcGx5KHRoaXMs'@; put 'YXJndW1lbnRzKSl7dmFyIEFuPXF0KHRoaXMseXIpLmV2ZW50KGZuKSxIcj10aGlzLl9fem9vbSx0aT1NYXRoLm1heChvWzBdLE1hdGgubWluKG9bMV0sSHIuaypNYXRoLnBvdygyLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLGZyPSRDKGZuKTtpZihBbi53aGVlbCkoQW4ubW91c2VbMF1b'@; put 'MF0hPT1mclswXXx8QW4ubW91c2VbMF1bMV0hPT1mclsxXSkmJihBbi5tb3VzZVsxXT1Ici5pbnZlcnQoQW4ubW91c2VbMF09ZnIpKSxjbGVhclRpbWVvdXQoQW4ud2hlZWwpO2Vsc2V7aWYoSHIuaz09PXRpKXJldHVybjtBbi5tb3VzZT1bZnIsSHIuaW52ZXJ0KGZyKV0sSUsodGhpcyksQW4u'@; put 'c3RhcnQoKX14UChmbiksQW4ud2hlZWw9c2V0VGltZW91dChmdW5jdGlvbiBlaSgpe0FuLndoZWVsPW51bGwsQW4uZW5kKCl9LDE1MCksQW4uem9vbSgibW91c2UiLHQoQ3QoYXQoSHIsdGkpLEFuLm1vdXNlWzBdLEFuLm1vdXNlWzFdKSxBbi5leHRlbnQsYSkpfX1mdW5jdGlvbiBDbihmbiwu'@; put 'Li55cil7aWYoIVomJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgQW49Zm4uY3VycmVudFRhcmdldCxIcj1xdCh0aGlzLHlyLCEwKS5ldmVudChmbiksdGk9QmwoZm4udmlldykub24oIm1vdXNlbW92ZS56b29tIixmdW5jdGlvbiBIbyhUbyl7aWYoeFAoVG8pLCFIci5tb3ZlZCl7dmFy'@; put 'IHdzPVRvLmNsaWVudFgtZWksdHM9VG8uY2xpZW50WS1QbztIci5tb3ZlZD13cyp3cyt0cyp0cz5NZX1Ici5ldmVudChUbykuem9vbSgibW91c2UiLHQoQ3QoSHIudGhhdC5fX3pvb20sSHIubW91c2VbMF09JEMoVG8sQW4pLEhyLm1vdXNlWzFdKSxIci5leHRlbnQsYSkpfSwhMCkub24oIm1v'@; put 'dXNldXAuem9vbSIsZnVuY3Rpb24geGkoVG8pe3RpLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLGZ1bmN0aW9uIEYybihuLGUpe3ZhciB0PW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9Qmwobikub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoci5vbigi'@; put 'Y2xpY2suZHJhZyIseTRlLF80ZSksc2V0VGltZW91dChmdW5jdGlvbigpe3Iub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gdD9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToodC5zdHlsZS5Nb3pVc2VyU2VsZWN0PXQuX19ub3NlbGVjdCxkZWxldGUg'@; put 'dC5fX25vc2VsZWN0KX0oVG8udmlldyxIci5tb3ZlZCkseFAoVG8pLEhyLmV2ZW50KFRvKS5lbmQoKX0sITApLGZyPSRDKGZuLEFuKSxlaT1mbi5jbGllbnRYLFBvPWZuLmNsaWVudFk7KGZ1bmN0aW9uIE4ybihuKXt2YXIgZT1uLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0PUJsKG4pLm9u'@; put 'KCJkcmFnc3RhcnQuZHJhZyIseTRlLF80ZSk7Im9uc2VsZWN0c3RhcnQiaW4gZT90Lm9uKCJzZWxlY3RzdGFydC5kcmFnIix5NGUsXzRlKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX0pKGZuLnZpZXcpLGI0ZShmbiks'@; put 'SHIubW91c2U9W2ZyLHRoaXMuX196b29tLmludmVydChmcildLElLKHRoaXMpLEhyLnN0YXJ0KCl9fWZ1bmN0aW9uIHFyKGZuLC4uLnlyKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIEFuPXRoaXMuX196b29tLEhyPSRDKGZuLmNoYW5nZWRUb3VjaGVzP2ZuLmNoYW5nZWRUb3Vj'@; put 'aGVzWzBdOmZuLHRoaXMpLHRpPUFuLmludmVydChIciksZWk9dChDdChhdChBbixBbi5rKihmbi5zaGlmdEtleT8uNToyKSksSHIsdGkpLGUuYXBwbHkodGhpcyx5ciksYSk7eFAoZm4pLGw+MD9CbCh0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24obCkuY2FsbChLdCxlaSxIcixmbik6Qmwo'@; put 'dGhpcykuY2FsbChXZS50cmFuc2Zvcm0sZWksSHIsZm4pfX1mdW5jdGlvbiAkbihmbiwuLi55cil7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBmcixlaSxQbyxIbyxBbj1mbi50b3VjaGVzLEhyPUFuLmxlbmd0aCx0aT1xdCh0aGlzLHlyLGZuLmNoYW5nZWRUb3VjaGVzLmxlbmd0'@; put 'aD09PUhyKS5ldmVudChmbik7Zm9yKGI0ZShmbiksZWk9MDtlaTxIcjsrK2VpKUhvPVtIbz0kQyhQbz1BbltlaV0sdGhpcyksdGhpcy5fX3pvb20uaW52ZXJ0KEhvKSxQby5pZGVudGlmaWVyXSx0aS50b3VjaDA/IXRpLnRvdWNoMSYmdGkudG91Y2gwWzJdIT09SG9bMl0mJih0aS50b3VjaDE9'@; put 'SG8sdGkudGFwcz0wKToodGkudG91Y2gwPUhvLGZyPSEwLHRpLnRhcHM9MSshIUUpO0UmJihFPWNsZWFyVGltZW91dChFKSksZnImJih0aS50YXBzPDImJihPPUhvWzBdLEU9c2V0VGltZW91dChmdW5jdGlvbigpe0U9bnVsbH0sNTAwKSksSUsodGhpcyksdGkuc3RhcnQoKSl9fWZ1bmN0aW9u'@; put 'IFRyKGZuLC4uLnlyKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIGZyLGVpLFBvLEhvLEFuPXF0KHRoaXMseXIpLmV2ZW50KGZuKSxIcj1mbi5jaGFuZ2VkVG91Y2hlcyx0aT1Ici5sZW5ndGg7Zm9yKHhQKGZuKSxmcj0wO2ZyPHRpOysrZnIpUG89JEMoZWk9SHJbZnJdLHRoaXMpLEFuLnRvdWNo'@; put 'MCYmQW4udG91Y2gwWzJdPT09ZWkuaWRlbnRpZmllcj9Bbi50b3VjaDBbMF09UG86QW4udG91Y2gxJiZBbi50b3VjaDFbMl09PT1laS5pZGVudGlmaWVyJiYoQW4udG91Y2gxWzBdPVBvKTtpZihlaT1Bbi50aGF0Ll9fem9vbSxBbi50b3VjaDEpe3ZhciB4aT1Bbi50b3VjaDBbMF0sVG89QW4u'@; put 'dG91Y2gwWzFdLHdzPUFuLnRvdWNoMVswXSx0cz1Bbi50b3VjaDFbMV0sa2E9KGthPXdzWzBdLXhpWzBdKSprYSsoa2E9d3NbMV0teGlbMV0pKmthLGFvPShhbz10c1swXS1Ub1swXSkqYW8rKGFvPXRzWzFdLVRvWzFdKSphbztlaT1hdChlaSxNYXRoLnNxcnQoa2EvYW8pKSxQbz1bKHhpWzBd'@; put 'K3dzWzBdKS8yLCh4aVsxXSt3c1sxXSkvMl0sSG89WyhUb1swXSt0c1swXSkvMiwoVG9bMV0rdHNbMV0pLzJdfWVsc2V7aWYoIUFuLnRvdWNoMClyZXR1cm47UG89QW4udG91Y2gwWzBdLEhvPUFuLnRvdWNoMFsxXX1Bbi56b29tKCJ0b3VjaCIsdChDdChlaSxQbyxIbyksQW4uZXh0ZW50LGEp'@; put 'KX19ZnVuY3Rpb24gcmkoZm4sLi4ueXIpe2lmKHRoaXMuX196b29taW5nKXt2YXIgZnIsZWksQW49cXQodGhpcyx5cikuZXZlbnQoZm4pLEhyPWZuLmNoYW5nZWRUb3VjaGVzLHRpPUhyLmxlbmd0aDtmb3IoYjRlKGZuKSxaJiZjbGVhclRpbWVvdXQoWiksWj1zZXRUaW1lb3V0KGZ1bmN0aW9u'@; put 'KCl7Wj1udWxsfSw1MDApLGZyPTA7ZnI8dGk7KytmcillaT1Icltmcl0sQW4udG91Y2gwJiZBbi50b3VjaDBbMl09PT1laS5pZGVudGlmaWVyP2RlbGV0ZSBBbi50b3VjaDA6QW4udG91Y2gxJiZBbi50b3VjaDFbMl09PT1laS5pZGVudGlmaWVyJiZkZWxldGUgQW4udG91Y2gxO2lmKEFuLnRv'@; put 'dWNoMSYmIUFuLnRvdWNoMCYmKEFuLnRvdWNoMD1Bbi50b3VjaDEsZGVsZXRlIEFuLnRvdWNoMSksQW4udG91Y2gwKUFuLnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoQW4udG91Y2gwWzBdKTtlbHNlIGlmKEFuLmVuZCgpLDI9PT1Bbi50YXBzJiYoZWk9JEMoZWksdGhpcyksTWF0aC5o'@; put 'eXBvdChPWzBdLWVpWzBdLE9bMV0tZWlbMV0pPEhlKSl7dmFyIFBvPUJsKHRoaXMpLm9uKCJkYmxjbGljay56b29tIik7UG8mJlBvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBXZS50cmFuc2Zvcm09ZnVuY3Rpb24oZm4seXIsQW4sSHIpe3ZhciB0aT1mbi5zZWxlY3Rpb24/Zm4u'@; put 'c2VsZWN0aW9uKCk6Zm47dGkucHJvcGVydHkoIl9fem9vbSIsS0dlKSxmbiE9PXRpP0t0KGZuLHlyLEFuLEhyKTp0aS5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7cXQodGhpcyxhcmd1bWVudHMpLmV2ZW50KEhyKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgeXI/'@; put 'eXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnlyKS5lbmQoKX0pfSxXZS5zY2FsZUJ5PWZ1bmN0aW9uKGZuLHlyLEFuLEhyKXtXZS5zY2FsZVRvKGZuLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX196b29tLmsqKCJmdW5jdGlvbiI9PXR5cGVvZiB5cj95ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6'@; put 'eXIpfSxBbixIcil9LFdlLnNjYWxlVG89ZnVuY3Rpb24oZm4seXIsQW4sSHIpe1dlLnRyYW5zZm9ybShmbixmdW5jdGlvbigpe3ZhciB0aT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxmcj10aGlzLl9fem9vbSxlaT1udWxsPT1Bbj9BdCh0aSk6ImZ1bmN0aW9uIj09dHlwZW9mIEFuP0FuLmFw'@; put 'cGx5KHRoaXMsYXJndW1lbnRzKTpBbixQbz1mci5pbnZlcnQoZWkpLEhvPSJmdW5jdGlvbiI9PXR5cGVvZiB5cj95ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6eXI7cmV0dXJuIHQoQ3QoYXQoZnIsSG8pLGVpLFBvKSx0aSxhKX0sQW4sSHIpfSxXZS50cmFuc2xhdGVCeT1mdW5jdGlvbihmbix5'@; put 'cixBbixIcil7V2UudHJhbnNmb3JtKGZuLGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiB5cj95ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6eXIsImZ1bmN0aW9uIj09dHlwZW9mIEFuP0FuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpB'@; put 'biksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksYSl9LG51bGwsSHIpfSxXZS50cmFuc2xhdGVUbz1mdW5jdGlvbihmbix5cixBbixIcix0aSl7V2UudHJhbnNmb3JtKGZuLGZ1bmN0aW9uKCl7dmFyIGZyPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGVpPXRoaXMuX196b29tLFBvPW51bGw9PUhy'@; put 'P0F0KGZyKToiZnVuY3Rpb24iPT10eXBlb2YgSHI/SHIuYXBwbHkodGhpcyxhcmd1bWVudHMpOkhyO3JldHVybiB0KEJLLnRyYW5zbGF0ZShQb1swXSxQb1sxXSkuc2NhbGUoZWkuaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiB5cj8teXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOi15'@; put 'ciwiZnVuY3Rpb24iPT10eXBlb2YgQW4/LUFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotQW4pLGZyLGEpfSxIcix0aSl9LGduLnByb3RvdHlwZT17ZXZlbnQ6ZnVuY3Rpb24oZm4pe3JldHVybiBmbiYmKHRoaXMuc291cmNlRXZlbnQ9Zm4pLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IDE9PT0rK3RoaXMuYWN0aXZlJiYodGhpcy50aGF0Ll9fem9vbWluZz10aGlzLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbihmbix5cil7cmV0dXJuIHRoaXMubW91c2UmJiJtb3VzZSIhPT1mbiYmKHRoaXMubW91c2VbMV09eXIuaW52ZXJ0KHRoaXMubW91c2VbMF0p'@; put 'KSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PWZuJiYodGhpcy50b3VjaDBbMV09eXIuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT1mbiYmKHRoaXMudG91Y2gxWzFdPXlyLmludmVydCh0aGlzLnRvdWNoMVswXSkpLHRoaXMudGhhdC5fX3pvb209eXIsdGhp'@; put 'cy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihmbil7dmFyIHlyPUJsKHRoaXMudGhhdCkuZGF0dW0oKTtnLmNh'@; put 'bGwoZm4sdGhpcy50aGF0LG5ldyBVMm4oZm4se3NvdXJjZUV2ZW50OnRoaXMuc291cmNlRXZlbnQsdGFyZ2V0OldlLHR5cGU6Zm4sdHJhbnNmb3JtOnRoaXMudGhhdC5fX3pvb20sZGlzcGF0Y2g6Z30pLHlyKX19LFdlLndoZWVsRGVsdGE9ZnVuY3Rpb24oZm4pe3JldHVybiBhcmd1bWVudHMu'@; put 'bGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiBmbj9mbjpWSygrZm4pLFdlKTpyfSxXZS5maWx0ZXI9ZnVuY3Rpb24oZm4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiBmbj9mbjpWSyghIWZuKSxXZSk6bn0sV2UudG91Y2hhYmxlPWZ1bmN0aW9uKGZu'@; put 'KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgZm4/Zm46VksoISFmbiksV2UpOml9LFdlLmV4dGVudD1mdW5jdGlvbihmbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIGZuP2ZuOlZLKFtbK2ZuWzBdWzBdLCtmblsw'@; put 'XVsxXV0sWytmblsxXVswXSwrZm5bMV1bMV1dXSksV2UpOmV9LFdlLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKGZuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ob1swXT0rZm5bMF0sb1sxXT0rZm5bMV0sV2UpOltvWzBdLG9bMV1dfSxXZS50cmFuc2xhdGVFeHRlbnQ9ZnVuY3Rpb24oZm4pe3Jl'@; put 'dHVybiBhcmd1bWVudHMubGVuZ3RoPyhhWzBdWzBdPStmblswXVswXSxhWzFdWzBdPStmblsxXVswXSxhWzBdWzFdPStmblswXVsxXSxhWzFdWzFdPStmblsxXVsxXSxXZSk6W1thWzBdWzBdLGFbMF1bMV1dLFthWzFdWzBdLGFbMV1bMV1dXX0sV2UuY29uc3RyYWluPWZ1bmN0aW9uKGZuKXty'@; put 'ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1mbixXZSk6dH0sV2UuZHVyYXRpb249ZnVuY3Rpb24oZm4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPStmbixXZSk6bH0sV2UuaW50ZXJwb2xhdGU9ZnVuY3Rpb24oZm4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWZuLFdlKTp1fSxX'@; put 'ZS5vbj1mdW5jdGlvbigpe3ZhciBmbj1nLm9uLmFwcGx5KGcsYXJndW1lbnRzKTtyZXR1cm4gZm49PT1nP1dlOmZufSxXZS5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKGZuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTWU9KGZuPStmbikqZm4sV2UpOk1hdGguc3FydChNZSl9LFdlLnRhcERp'@; put 'c3RhbmNlPWZ1bmN0aW9uKGZuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oSGU9K2ZuLFdlKTpIZX0sV2V9KCkuc2NhbGVFeHRlbnQodGhpcy5fb3B0aW9ucy56b29tU2NhbGVFeHRlbnQpLnRyYW5zbGF0ZUV4dGVudCh0aGlzLl9vcHRpb25zLnpvb21UcmFuc2xhdGVFeHRlbnQpLmludGVy'@; put 'cG9sYXRlKFVLKS5vbigiem9vbSIsZnVuY3Rpb24gZShhKXtCbChyLm5vZGUoKS5xdWVyeVNlbGVjdG9yKCJnIikpLmF0dHIoInRyYW5zZm9ybSIsYS50cmFuc2Zvcm0pLG4uX2Rpc3BhdGNoLmNhbGwoInpvb20iLG4pfSk7dGhpcy5fem9vbUJlaGF2aW9yPWk7dmFyIG89Qmwoci5ub2RlKCku'@; put 'cXVlcnlTZWxlY3RvcigiZyIpKTtyZXR1cm4gci5jYWxsKGkpLHRoaXMuX2FjdGl2ZXx8TTRlLmNhbGwodGhpcyxvKSx0aGlzLl9vcmlnaW5hbFRyYW5zZm9ybT1qSyhyLm5vZGUoKSksdGhpc31mdW5jdGlvbiBFNGUobil7dmFyIGU9dGhpcy5fdHJhbnNsYXRpb24sdD10aGlzLl9zY2FsZSxy'@; put 'PW4uZGF0dW0oKS50cmFuc2xhdGlvbixpPW4uZGF0dW0oKS5zY2FsZSxvPWpLKHRoaXMuX3pvb21TZWxlY3Rpb24ubm9kZSgpKTtyZXR1cm4gZSYmKG89KG89by5zY2FsZSgxL3QpKS50cmFuc2xhdGUoLWUueCwtZS55KSksKG89by50cmFuc2xhdGUoci54LHIueSkpLnNjYWxlKGkpfWZ1bmN0'@; put 'aW9uIE00ZShuKXt0aGlzLl96b29tQmVoYXZpb3IudHJhbnNmb3JtKHRoaXMuX3pvb21TZWxlY3Rpb24sRTRlLmNhbGwodGhpcyxuKSksdGhpcy5fdHJhbnNsYXRpb249bi5kYXR1bSgpLnRyYW5zbGF0aW9uLHRoaXMuX3NjYWxlPW4uZGF0dW0oKS5zY2FsZSx0aGlzLl9vcmlnaW5hbFRyYW5z'@; put 'Zm9ybT1CSy50cmFuc2xhdGUobi5kYXR1bSgpLnRyYW5zbGF0aW9uLngsbi5kYXR1bSgpLnRyYW5zbGF0aW9uLnkpLnNjYWxlKG4uZGF0dW0oKS5zY2FsZSl9ZnVuY3Rpb24gY2ZuKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgdD1uLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gVUsoW3Jb'@; put 'MF1bMF0sclswXVsxXV0sW3JbMV1bMF0sclsxXVsxXV0pfSk7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPDE/Ik0iK3QubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpKHIpfSkuam9pbigiTCIpOmV9fX1mdW5jdGlvbiB0JGUobil7cmV0dXJuImVkZ2UiPT1uLmF0dHJpYnV0ZXMuY2xhc3N8'@; put 'fCJhIj09bi50YWcmJiJnIj09bi5wYXJlbnQudGFnJiYiZWRnZSI9PW4ucGFyZW50LnBhcmVudC5hdHRyaWJ1dGVzLmNsYXNzfWZ1bmN0aW9uIG4kZShuKXtyZXR1cm4gbi5wYXJlbnQmJnQkZShuLnBhcmVudCl9ZnVuY3Rpb24gciRlKG4pe3ZhciBlPXRoaXMuX3RyYW5zaXRpb24sdD10aGlz'@; put 'Ll9vcHRpb25zLmZhZGUmJm51bGwhPWUscj10aGlzLl9vcHRpb25zLnR3ZWVuUGF0aHMsaT10aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzLG89dGhpcy5fb3B0aW9ucy5jb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zLGE9dGhpcy5fb3B0aW9ucy5ncm93RW50ZXJpbmdFZGdlcyYmbnVsbCE9ZSxs'@; put 'PXRoaXMuX2F0dHJpYnV0ZXIsdT10aGlzO3ZhciBPPXRoaXMuX3NlbGVjdGlvbjtpZihudWxsIT1lKXt2YXIgWj10aGlzLl9qb2JzO2lmKHUuX2FjdGl2ZSlyZXR1cm4gWi5wdXNoKG51bGwpLHRoaXM7Ty50cmFuc2l0aW9uKGUpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigwKS5vbigiZW5kIixm'@; put 'dW5jdGlvbigpe3UuX2FjdGl2ZT0hMSwwIT1aLmxlbmd0aCYmKFouc2hpZnQoKSx1LnJlbmRlcigpKX0pLHRoaXMuX2FjdGl2ZT0hMH1udWxsIT1lJiZPLnRyYW5zaXRpb24oZSkub24oInN0YXJ0IixmdW5jdGlvbigpe3UuX2Rpc3BhdGNoLmNhbGwoInRyYW5zaXRpb25TdGFydCIsdSl9KS5v'@; put 'bigiZW5kIixmdW5jdGlvbigpe3UuX2Rpc3BhdGNoLmNhbGwoInRyYW5zaXRpb25FbmQiLHUpfSkudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApLm9uKCJzdGFydCIsZnVuY3Rpb24oKXt1Ll9kaXNwYXRjaC5jYWxsKCJyZXN0b3JlRW5kIix1KSx1Ll9kaXNwYXRjaC5jYWxsKCJlbmQiLHUpLG4m'@; put 'Jm4uY2FsbCh1KX0pO3ZhciBlZT10aGlzLl9kYXRhLHZlPU8uc2VsZWN0QWxsKCJzdmciKS5kYXRhKFtlZV0sZnVuY3Rpb24oTWUpe3JldHVybiBNZS5rZXl9KTtyZXR1cm4gdmU9dmUuZW50ZXIoKS5hcHBlbmQoInN2ZyIpLm1lcmdlKHZlKSxmdW5jdGlvbiBFKE1lKXt2YXIgSGU9QmwodGhp'@; put 'cyk7aWYoInN2ZyI9PU1lLnRhZyl7dmFyIFdlPXUuX29wdGlvbnM7aWYobnVsbCE9V2Uud2lkdGh8fG51bGwhPVdlLmhlaWdodCl7dmFyIGF0PVdlLndpZHRoLEN0PVdlLmhlaWdodDtudWxsPT1hdD9hdD00Kk1lLmF0dHJpYnV0ZXMud2lkdGgucmVwbGFjZSgicHQiLCIiKS8zOihIZS5hdHRy'@; put 'KCJ3aWR0aCIsYXQpLE1lLmF0dHJpYnV0ZXMud2lkdGg9YXQpLG51bGw9PUN0P0N0PTQqTWUuYXR0cmlidXRlcy5oZWlnaHQucmVwbGFjZSgicHQiLCIiKS8zOihIZS5hdHRyKCJoZWlnaHQiLEN0KSxNZS5hdHRyaWJ1dGVzLmhlaWdodD1DdCksV2UuZml0fHwoSGUuYXR0cigidmlld0JveCIs'@; put 'YDAgMCAkezMqYXQvNC9XZS5zY2FsZX0gJHszKkN0LzQvV2Uuc2NhbGV9YCksTWUuYXR0cmlidXRlcy52aWV3Qm94PWAwIDAgJHszKmF0LzQvV2Uuc2NhbGV9ICR7MypDdC80L1dlLnNjYWxlfWApfTEhPVdlLnNjYWxlJiYoV2UuZml0fHxudWxsPT1XZS53aWR0aCYmbnVsbD09V2UuaGVpZ2h0'@; put 'KSYmKGF0PU1lLmF0dHJpYnV0ZXMudmlld0JveC5zcGxpdCgiICIpWzJdLEN0PU1lLmF0dHJpYnV0ZXMudmlld0JveC5zcGxpdCgiICIpWzNdLEhlLmF0dHIoInZpZXdCb3giLGAwIDAgJHthdC9XZS5zY2FsZX0gJHtDdC9XZS5zY2FsZX1gKSxNZS5hdHRyaWJ1dGVzLnZpZXdCb3g9YDAgMCAk'@; put 'e2F0L1dlLnNjYWxlfSAke0N0L1dlLnNjYWxlfWApfWwmJkhlLmVhY2gobCk7dmFyIEF0PU1lLnRhZyxLdD1NZS5hdHRyaWJ1dGVzLHF0PUhlLm5vZGUoKS5hdHRyaWJ1dGVzO2lmKHF0KWZvcih2YXIgZ249MDtnbjxxdC5sZW5ndGg7Z24rKyl7dmFyIFRuPXF0W2duXSxDbj1Ubi5uYW1lO2lm'@; put 'KCJ4bWxucyIhPUNuLnNwbGl0KCI6IilbMF0mJlRuLm5hbWVzcGFjZVVSSSl7dmFyIHFyPVRuLm5hbWVzcGFjZVVSSS5zcGxpdCgiLyIpO0NuPXFyW3FyLmxlbmd0aC0xXSsiOiIrQ259Q24gaW4gS3R8fChLdFtDbl09bnVsbCl9dmFyIFRyPSExLHJpPSExO2lmKGkmJmUpe2lmKCgicG9seWdv'@; put 'biI9PXRoaXMubm9kZU5hbWV8fCJlbGxpcHNlIj09dGhpcy5ub2RlTmFtZSkmJk1lLmFsdGVybmF0aXZlT2xkJiYocmk9ITApLCgicG9seWdvbiI9PUF0fHwiZWxsaXBzZSI9PUF0KSYmTWUuYWx0ZXJuYXRpdmVOZXcmJihUcj0hMCksInBvbHlnb24iPT10aGlzLm5vZGVOYW1lJiYicG9seWdv'@; put 'biI9PUF0JiZNZS5hbHRlcm5hdGl2ZU9sZCl7dmFyIGZuPVhHZShIZSk7aWYoIW8pe3ZhciBBbj1mbi5hdHRyaWJ1dGVzLnBvaW50cy5zcGxpdCgiICIpLmxlbmd0aDsoSHI9TWUuYXR0cmlidXRlcy5wb2ludHMpLnNwbGl0KCIgIikubGVuZ3RoPT1BbiYmKFRyPSExLHJpPSExKX19aWYocmkp'@; put 'e3ZhciBlaT1RR2UoSGUsTWUuYWx0ZXJuYXRpdmVPbGQpO2VpLmRhdGEoW01lXSxmdW5jdGlvbigpe3JldHVybiBNZS5rZXl9KSxIZT1laX1UciYmKEF0PSJwYXRoIixLdD1NZS5hbHRlcm5hdGl2ZU5ldy5hdHRyaWJ1dGVzKX12YXIgSG89SGU7aWYoZSYmKEhvPUhvLnRyYW5zaXRpb24oZSks'@; put 'dCYmSG8uZmlsdGVyKGZ1bmN0aW9uKGdvKXtyZXR1cm4iIyI9PWdvLnRhZ1swXT9udWxsOnRoaXN9KS5zdHlsZSgib3BhY2l0eSIsMSksSG8uZmlsdGVyKGZ1bmN0aW9uKGdvKXtyZXR1cm4iIyI9PWdvLnRhZ1swXT9udWxsOnRoaXN9KS5vbigiZW5kIixmdW5jdGlvbihnbyl7QmwodGhpcyku'@; put 'YXR0cigic3R5bGUiLGdvJiZnby5hdHRyaWJ1dGVzJiZnby5hdHRyaWJ1dGVzLnN0eWxlfHxudWxsKX0pKSxhJiYicGF0aCI9PUF0JiZNZS5vZmZzZXQpe3ZhciBUbz1NZS50b3RhbExlbmd0aDtIZS5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixUbysiICIrVG8pLmF0dHIoInN0cm9rZS1kYXNo'@; put 'b2Zmc2V0IixUbykuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTWUub2Zmc2V0LngrIiwiK01lLm9mZnNldC55KyIpIiksS3RbInN0cm9rZS1kYXNob2Zmc2V0Il09MCxLdC50cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDApIixIby5hdHRyKCJzdHJva2UtZGFzaG9mZnNldCIsS3RbInN0'@; put 'cm9rZS1kYXNob2Zmc2V0Il0pLmF0dHIoInRyYW5zZm9ybSIsS3QudHJhbnNmb3JtKS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7QmwodGhpcykuc3R5bGUoIm9wYWNpdHkiLG51bGwpfSkub24oImVuZCIsZnVuY3Rpb24oKXtCbCh0aGlzKS5hdHRyKCJzdHJva2UtZGFzaG9mZnNldCIsbnVsbCku'@; put 'YXR0cigic3Ryb2tlLWRhc2hhcnJheSIsbnVsbCkuYXR0cigidHJhbnNmb3JtIixudWxsKX0pfWlmKGEmJiJwb2x5Z29uIj09QXQmJm4kZShNZSkmJk1lLm9mZnNldCYmInBhdGgiPT1NZS5wYXJlbnQuY2hpbGRyZW5bM10udGFnKXt2YXIgdHM9QmwoSGUubm9kZSgpLnBhcmVudE5vZGUucXVl'@; put 'cnlTZWxlY3RvcigicGF0aCIpKSxrYT10cy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aCgwKSxhbz10cy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChNZS50b3RhbExlbmd0aCksdXQ9dHMubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoTWUudG90YWxMZW5ndGgtMSksSHQ9MTgwKk1hdGguYXRhbjIo'@; put 'YW8ueS11dC55LGFvLngtdXQueCkvTWF0aC5QSSxkbj1rYS54LWFvLngrTWUub2Zmc2V0LngsVm49a2EueS1hby55K01lLm9mZnNldC55O0hlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2RuKyIsIitWbisiKSIpLEhvLmF0dHJUd2VlbigidHJhbnNmb3JtIixmdW5jdGlvbigpe3Jl'@; put 'dHVybiBmdW5jdGlvbihnbyl7dmFyIFlvPXRzLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKE1lLnRvdGFsTGVuZ3RoKmdvKSxTbz10cy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChNZS50b3RhbExlbmd0aCpnbysxKSxSYT0xODAqTWF0aC5hdGFuMihTby55LVlvLnksU28ueC1Zby54KS9NYXRo'@; put 'LlBJLUh0O3JldHVybiJ0cmFuc2xhdGUoIisoZG49WW8ueC1hby54K01lLm9mZnNldC54KigxLWdvKSkrIiwiKyhWbj1Zby55LWFvLnkrTWUub2Zmc2V0LnkqKDEtZ28pKSsiKSByb3RhdGUoIitSYSsiICIrYW8ueCsiICIrYW8ueSsiKSJ9fSkub24oInN0YXJ0IixmdW5jdGlvbigpe0JsKHRo'@; put 'aXMpLnN0eWxlKCJvcGFjaXR5IixudWxsKX0pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7QmwodGhpcykuYXR0cigidHJhbnNmb3JtIixudWxsKX0pfXZhciBJcj1yJiZlJiYicGF0aCI9PUF0JiZudWxsIT1IZS5hdHRyKCJkIik7Zm9yKHZhciBuaSBvZiBPYmplY3Qua2V5cyhLdCkpe3ZhciBqcj1L'@; put 'dFtuaV07aWYoSXImJiJkIj09bmkpe3ZhciBIcjsoSHI9KE1lLmFsdGVybmF0aXZlT2xkfHxNZSkucG9pbnRzKSYmSG8uYXR0clR3ZWVuKCJkIixjZm4oSHIsanIpKX1lbHNle2lmKCJ0cmFuc2Zvcm0iPT1uaSYmTWUudHJhbnNsYXRpb24paWYoZSl7dmFyIEZpPUhvLm9uKCJlbmQiKTtIby5v'@; put 'bigic3RhcnQiLGZ1bmN0aW9uKCl7dS5fem9vbUJlaGF2aW9yJiZIby50d2VlbigiYXR0ci50cmFuc2Zvcm0iLGZ1bmN0aW9uKCl7dmFyIGdvPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKFlvKXtnby5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsUkdlKGpLKHUuX3pvb21TZWxlY3Rpb24ubm9kZSgp'@; put 'KS50b1N0cmluZygpLEU0ZS5jYWxsKHUsSGUpLnRvU3RyaW5nKCkpKFlvKSl9fSl9KS5vbigiZW5kIixmdW5jdGlvbigpe0ZpLmNhbGwodGhpcyksdS5fem9vbUJlaGF2aW9yJiZNNGUuY2FsbCh1LEhlKX0pfWVsc2UgdS5fem9vbUJlaGF2aW9yJiYoTTRlLmNhbGwodSxIZSksanI9RTRlLmNh'@; put 'bGwodSxIZSkudG9TdHJpbmcoKSk7SG8uYXR0cihuaSxqcil9fVRyJiZIby5vbigiZW5kIixmdW5jdGlvbihnbyxZbyxTbyl7UUdlKGVpPUJsKHRoaXMpLGdvKS5kYXRhKFtnb10sZnVuY3Rpb24oKXtyZXR1cm4gZ28ua2V5fSl9KSxNZS50ZXh0JiZIby50ZXh0KE1lLnRleHQpLGZ1bmN0aW9u'@; put 'IGcoTWUpe3ZhciBIZT1NZS5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1cm4gTWUubm9kZSgpLmNoaWxkTm9kZXN9KSxXZT0oSGU9SGUuZGF0YShmdW5jdGlvbihBdCl7cmV0dXJuIEF0LmNoaWxkcmVufSxmdW5jdGlvbihBdCl7cmV0dXJuIEF0LmtleX0pKS5lbnRlcigpLmFwcGVuZChmdW5j'@; put 'dGlvbihBdCl7dmFyIEt0PXc0ZShBdCk7cmV0dXJuIiN0ZXh0Ij09QXQudGFnJiZ0JiYoS3Qubm9kZVZhbHVlPUF0LnRleHQpLEt0fSk7KHR8fGEmJnQkZShNZS5kYXR1bSgpKSkmJldlLmZpbHRlcihmdW5jdGlvbihBdCl7cmV0dXJuIiMiPT1BdC50YWdbMF0/bnVsbDp0aGlzfSkuZWFjaChm'@; put 'dW5jdGlvbihBdCl7dmFyIEt0PUJsKHRoaXMpO2Zvcih2YXIgcXQgb2YgT2JqZWN0LmtleXMoQXQuYXR0cmlidXRlcykpS3QuYXR0cihxdCxBdC5hdHRyaWJ1dGVzW3F0XSl9KS5maWx0ZXIoZnVuY3Rpb24oQXQpe3JldHVybiJzdmciPT1BdC50YWd8fCJnIj09QXQudGFnP251bGw6dGhpc30p'@; put 'LnN0eWxlKCJvcGFjaXR5IiwwKTt2YXIgQ3Q9SGUuZXhpdCgpO2wmJkN0LmVhY2gobCksZSYmKEN0PUN0LnRyYW5zaXRpb24oZSksdCYmQ3QuZmlsdGVyKGZ1bmN0aW9uKEF0KXtyZXR1cm4iIyI9PUF0LnRhZ1swXT9udWxsOnRoaXN9KS5zdHlsZSgib3BhY2l0eSIsMCkpLEN0PUN0LnJlbW92'@; put 'ZSgpLChIZT1XZS5tZXJnZShIZSkub3JkZXIoKSkuZWFjaChFKX0oSGUpfS5jYWxsKHZlLm5vZGUoKSxlZSksdGhpcy5fb3B0aW9ucy56b29tJiYhdGhpcy5fem9vbUJlaGF2aW9yJiZlJGUuY2FsbCh0aGlzKSx1Ll9kaXNwYXRjaC5jYWxsKCJyZW5kZXJFbmQiLHUpLG51bGw9PWUmJih0aGlz'@; put 'Ll9kaXNwYXRjaC5jYWxsKCJlbmQiLHRoaXMpLG4mJm4uY2FsbCh0aGlzKSksdGhpc31mdW5jdGlvbiB6SyhuKXtyZXR1cm4gT2JqZWN0LmZyZWV6ZShPYmplY3Qua2V5cyhuKSl9aksucHJvdG90eXBlPXA5LnByb3RvdHlwZSx6Syh7YXJlYTohMCxjbGFzczohMCxjb2xvcjohMCxjb2xvcnNj'@; put 'aGVtZTohMCxjb21tZW50OiEwLGRpc3RvcnRpb246ITAsZmlsbGNvbG9yOiEwLGZpeGVkc2l6ZTohMCxmb250Y29sb3I6ITAsZm9udG5hbWU6ITAsZm9udHNpemU6ITAsZ3JhZGllbnRhbmdsZTohMCxncm91cDohMCxoZWlnaHQ6ITAsaHJlZjohMCxpZDohMCxpbWFnZTohMCxpbWFnZXBvczoh'@; put 'MCxpbWFnZXNjYWxlOiEwLGxhYmVsOiEwLGxhYmVsbG9jOiEwLGxheWVyOiEwLG1hcmdpbjohMCxub2p1c3RpZnk6ITAsb3JkZXJpbmc6ITAsb3JpZW50YXRpb246ITAscGVud2lkdGg6ITAscGVyaXBoZXJpZXM6ITAscGluOiEwLHBvczohMCxyZWd1bGFyOiEwLHJvb3Q6ITAsc2FtcGxlcG9p'@; put 'bnRzOiEwLHNoYXBlOiEwLHNoYXBlZmlsZTohMCxzaG93Ym94ZXM6ITAsc2lkZXM6ITAsc2tldzohMCxzb3J0djohMCxzdHlsZTohMCx0YXJnZXQ6ITAsdG9vbHRpcDohMCxVUkw6ITAsd2lkdGg6ITAseGxhYmVsOiEwLHo6ITB9KSx6Syh7YXJyb3doZWFkOiEwLGFycm93c2l6ZTohMCxhcnJv'@; put 'd3RhaWw6ITAsY2xhc3M6ITAsY29sb3I6ITAsY29sb3JzY2hlbWU6ITAsY29tbWVudDohMCxjb25zdHJhaW50OiEwLGRlY29yYXRlOiEwLGRpcjohMCxlZGdlaHJlZjohMCxlZGdldGFyZ2V0OiEwLGVkZ2V0b29sdGlwOiEwLGVkZ2VVUkw6ITAsZmlsbGNvbG9yOiEwLGZvbnRjb2xvcjohMCxm'@; put 'b250bmFtZTohMCxmb250c2l6ZTohMCxoZWFkY2xpcDohMCxoZWFkaHJlZjohMCxoZWFkbGFiZWw6ITAsaGVhZHBvcnQ6ITAsaGVhZHRhcmdldDohMCxoZWFkdG9vbHRpcDohMCxoZWFkVVJMOiEwLGhyZWY6ITAsaWQ6ITAsbGFiZWw6ITAsbGFiZWxhbmdsZTohMCxsYWJlbGRpc3RhbmNlOiEw'@; put 'LGxhYmVsZmxvYXQ6ITAsbGFiZWxmb250Y29sb3I6ITAsbGFiZWxmb250bmFtZTohMCxsYWJlbGZvbnRzaXplOiEwLGxhYmVsaHJlZjohMCxsYWJlbHRhcmdldDohMCxsYWJlbHRvb2x0aXA6ITAsbGFiZWxVUkw6ITAsbGF5ZXI6ITAsbGVuOiEwLGxoZWFkOiEwLGx0YWlsOiEwLG1pbmxlbjoh'@; put 'MCxub2p1c3RpZnk6ITAscGVud2lkdGg6ITAscG9zOiEwLHJhZGl1czohMCxzYW1laGVhZDohMCxzYW1ldGFpbDohMCxzaG93Ym94ZXM6ITAsc3R5bGU6ITAsdGFpbGNsaXA6ITAsdGFpbGhyZWY6ITAsdGFpbGxhYmVsOiEwLHRhaWxwb3J0OiEwLHRhaWx0YXJnZXQ6ITAsdGFpbHRvb2x0aXA6'@; put 'ITAsdGFpbFVSTDohMCx0YXJnZXQ6ITAsdG9vbHRpcDohMCxVUkw6ITAsd2VpZ2h0OiEwLHhsYWJlbDohMH0pLHpLKHthcmVhOiEwLGJnY29sb3I6ITAsY2xhc3M6ITAsY2x1c3RlcjohMCxjb2xvcjohMCxjb2xvcnNjaGVtZTohMCxmaWxsY29sb3I6ITAsZm9udGNvbG9yOiEwLGZvbnRuYW1l'@; put 'OiEwLGZvbnRzaXplOiEwLGdyYWRpZW50YW5nbGU6ITAsaHJlZjohMCxpZDohMCxLOiEwLGxhYmVsOiEwLGxhYmVsanVzdDohMCxsYWJlbGxvYzohMCxsYXllcjohMCxtYXJnaW46ITAsbm9qdXN0aWZ5OiEwLHBlbmNvbG9yOiEwLHBlbndpZHRoOiEwLHBlcmlwaGVyaWVzOiEwLHJhbms6ITAs'@; put 'c29ydHY6ITAsc3R5bGU6ITAsdGFyZ2V0OiEwLHRvb2x0aXA6ITAsVVJMOiEwfSkseksoe19iYWNrZ3JvdW5kOiEwLGJlYXV0aWZ5OiEwLGJnY29sb3I6ITAsY2VudGVyOiEwLGNoYXJzZXQ6ITAsY2xhc3M6ITAsY2x1c3RlcnJhbms6ITAsY29sb3JzY2hlbWU6ITAsY29tbWVudDohMCxjb21w'@; put 'b3VuZDohMCxjb25jZW50cmF0ZTohMCxEYW1waW5nOiEwLGRlZmF1bHRkaXN0OiEwLGRpbTohMCxkaW1lbjohMCxkaXJlZGdlY29uc3RyYWludHM6ITAsZHBpOiEwLGVwc2lsb246ITAsZXNlcDohMCxmb250Y29sb3I6ITAsZm9udG5hbWU6ITAsZm9udG5hbWVzOiEwLGZvbnRwYXRoOiEwLGZv'@; put 'bnRzaXplOiEwLGZvcmNlbGFiZWxzOiEwLGdyYWRpZW50YW5nbGU6ITAsaHJlZjohMCxpZDohMCxpbWFnZXBhdGg6ITAsaW5wdXRzY2FsZTohMCxLOiEwLGxhYmVsOiEwLGxhYmVsX3NjaGVtZTohMCxsYWJlbGp1c3Q6ITAsbGFiZWxsb2M6ITAsbGFuZHNjYXBlOiEwLGxheWVybGlzdHNlcDoh'@; put 'MCxsYXllcnM6ITAsbGF5ZXJzZWxlY3Q6ITAsbGF5ZXJzZXA6ITAsbGF5b3V0OiEwLGxldmVsczohMCxsZXZlbHNnYXA6ITAsbGluZWxlbmd0aDohMCxtYXJnaW46ITAsbWF4aXRlcjohMCxtY2xpbWl0OiEwLG1pbmRpc3Q6ITAsbW9kZTohMCxtb2RlbDohMCxuZXdyYW5rOiEwLG5vZGVzZXA6'@; put 'ITAsbm9qdXN0aWZ5OiEwLG5vcm1hbGl6ZTohMCxub3RyYW5zbGF0ZTohMCxuc2xpbWl0OiEwLG5zbGltaXQxOiEwLG9uZWJsb2NrOiEwLG9yZGVyaW5nOiEwLG9yaWVudGF0aW9uOiEwLG91dHB1dG9yZGVyOiEwLG92ZXJsYXA6ITAsb3ZlcmxhcF9zY2FsaW5nOiEwLG92ZXJsYXBfc2hyaW5r'@; put 'OiEwLHBhY2s6ITAscGFja21vZGU6ITAscGFkOiEwLHBhZ2U6ITAscGFnZWRpcjohMCxxdWFudHVtOiEwLHJhbmtkaXI6ITAscmFua3NlcDohMCxyYXRpbzohMCxyZW1pbmNyb3NzOiEwLHJlcHVsc2l2ZWZvcmNlOiEwLHJlc29sdXRpb246ITAscm9vdDohMCxyb3RhdGU6ITAscm90YXRpb246'@; put 'ITAsc2NhbGU6ITAsc2VhcmNoc2l6ZTohMCxzZXA6ITAsc2hvd2JveGVzOiEwLHNpemU6ITAsc21vb3RoaW5nOiEwLHNvcnR2OiEwLHNwbGluZXM6ITAsc3RhcnQ6ITAsc3R5bGU6ITAsc3R5bGVzaGVldDohMCx0YXJnZXQ6ITAsVEJiYWxhbmNlOiEwLHRvb2x0aXA6ITAsdHJ1ZWNvbG9yOiEw'@; put 'LFVSTDohMCx2aWV3cG9ydDohMCx2b3JvX21hcmdpbjohMCx4ZG90dmVyc2lvbjohMH0pO3ZhciBtZm49QXJyYXlCdWZmZXIsS2g9VWludDhBcnJheSxXSz1VaW50MTZBcnJheSx2Zm49SW50MTZBcnJheSxZSz1JbnQzMkFycmF5LFQ0ZT1mdW5jdGlvbihuLGUsdCl7aWYoS2gucHJvdG90eXBl'@; put 'LnNsaWNlKXJldHVybiBLaC5wcm90b3R5cGUuc2xpY2UuY2FsbChuLGUsdCk7KG51bGw9PWV8fGU8MCkmJihlPTApLChudWxsPT10fHx0Pm4ubGVuZ3RoKSYmKHQ9bi5sZW5ndGgpO3ZhciByPW5ldyBLaCh0LWUpO3JldHVybiByLnNldChuLnN1YmFycmF5KGUsdCkpLHJ9LGtQPWZ1bmN0aW9u'@; put 'KG4sZSx0LHIpe2lmKEtoLnByb3RvdHlwZS5maWxsKXJldHVybiBLaC5wcm90b3R5cGUuZmlsbC5jYWxsKG4sZSx0LHIpO2ZvcigobnVsbD09dHx8dDwwKSYmKHQ9MCksKG51bGw9PXJ8fHI+bi5sZW5ndGgpJiYocj1uLmxlbmd0aCk7dDxyOysrdCluW3RdPWU7cmV0dXJuIG59LF9mbj1mdW5j'@; put 'dGlvbihuLGUsdCxyKXtpZihLaC5wcm90b3R5cGUuY29weVdpdGhpbilyZXR1cm4gS2gucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbChuLGUsdCxyKTtmb3IoKG51bGw9PXR8fHQ8MCkmJih0PTApLChudWxsPT1yfHxyPm4ubGVuZ3RoKSYmKHI9bi5sZW5ndGgpO3Q8cjspbltlKytdPW5bdCsr'@; put 'XX0seWZuPVsiaW52YWxpZCB6c3RkIGRhdGEiLCJ3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpIiwiaW52YWxpZCBibG9jayB0eXBlIiwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoIiwibWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrIiwidW5leHBlY3RlZCBFT0YiXSxJMT1mdW5jdGlv'@; put 'bihuLGUsdCl7dmFyIHI9bmV3IEVycm9yKGV8fHlmbltuXSk7aWYoci5jb2RlPW4sRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHIsSTEpLCF0KXRocm93IHI7cmV0dXJuIHJ9LGkkZT1mdW5jdGlvbihuLGUsdCl7Zm9yKHZhciByPTAsaT0wO3I8dDsr'@; put 'K3IpaXw9bltlKytdPDwocjw8Myk7cmV0dXJuIGl9LHdmbj1mdW5jdGlvbihuLGUpe3ZhciB0PW5bMF18blsxXTw8OHxuWzJdPDwxNjtpZigzMTI2NTY4PT10JiYyNTM9PW5bM10pe3ZhciByPW5bNF0saT1yPj41JjEsbz1yPj4yJjEsYT0zJnIsbD1yPj42OzgmciYmSTEoMCk7dmFyIHU9Ni1p'@; put 'LGc9Mz09YT80OmEsRT1pJGUobix1LGcpLE89bD8xPDxsOmksWj1pJGUobix1Kz1nLE8pKygxPT1sJiYyNTYpLGVlPVo7aWYoIWkpe3ZhciB2ZT0xPDwxMCsobls1XT4+Myk7ZWU9dmUrKHZlPj4zKSooNyZuWzVdKX1lZT4yMTQ1Mzg2NDk2JiZJMSgxKTt2YXIgTWU9bmV3IEtoKCgxPT1lP1p8'@; put 'fGVlOmU/MDplZSkrMTIpO3JldHVybiBNZVswXT0xLE1lWzRdPTQsTWVbOF09OCx7Yjp1K08seTowLGw6MCxkOkUsdzplJiYxIT1lP2U6TWUuc3ViYXJyYXkoMTIpLGU6ZWUsbzpuZXcgWUsoTWUuYnVmZmVyLDAsMyksdTpaLGM6byxtOk1hdGgubWluKDEzMTA3MixlZSl9fWlmKDI1NDgxODkz'@; put 'PT0odD4+NHxuWzNdPDwyMCkpcmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybihuWzRdfG5bNV08PDh8bls2XTw8MTZ8bls3XTw8MjQpPj4+MH0obikrODtJMSgwKX0sS0M9ZnVuY3Rpb24obil7Zm9yKHZhciBlPTA7MTw8ZTw9bjsrK2UpO3JldHVybiBlLTF9LFJQPWZ1bmN0aW9uKG4sZSx0KXt2'@; put 'YXIgcj00KyhlPDwzKSxpPTUrKDE1Jm5bZV0pO2k+dCYmSTEoMyk7Zm9yKHZhciBvPTE8PGksYT1vLGw9LTEsdT0tMSxnPS0xLEU9byxPPW5ldyBtZm4oNTEyKyhvPDwyKSksWj1uZXcgdmZuKE8sMCwyNTYpLGVlPW5ldyBXSyhPLDAsMjU2KSx2ZT1uZXcgV0soTyw1MTIsbyksTWU9NTEyKyhv'@; put 'PDwxKSxIZT1uZXcgS2goTyxNZSxvKSxXZT1uZXcgS2goTyxNZStvKTtsPDI1NSYmYT4wOyl7dmFyIGF0PUtDKGErMSksQ3Q9cj4+MyxBdD0oMTw8YXQrMSktMSxLdD0obltDdF18bltDdCsxXTw8OHxuW0N0KzJdPDwxNik+Pig3JnIpJkF0LHF0PSgxPDxhdCktMSxnbj1BdC1hLTEsVG49S3Qm'@; put 'cXQ7aWYoVG48Z24/KHIrPWF0LEt0PVRuKToocis9YXQrMSxLdD5xdCYmKEt0LT1nbikpLFpbKytsXT0tLUt0LC0xPT1LdD8oYSs9S3QsSGVbLS1FXT1sKTphLT1LdCwhS3QpZG97dmFyIENuPXI+PjM7dT0obltDbl18bltDbisxXTw8OCk+Pig3JnIpJjMscis9MixsKz11fXdoaWxlKDM9PXUp'@; put 'fShsPjI1NXx8YSkmJkkxKDApO2Zvcih2YXIgcXI9MCwkbj0obz4+MSkrKG8+PjMpKzMsVHI9by0xLHJpPTA7cmk8PWw7KytyaSl7dmFyIGZuPVpbcmldO2lmKGZuPDEpZWVbcmldPS1mbjtlbHNlIGZvcihnPTA7ZzxmbjsrK2cpe0hlW3FyXT1yaTtkb3txcj1xciskbiZUcn13aGlsZShxcj49'@; put 'RSl9fWZvcihxciYmSTEoMCksZz0wO2c8bzsrK2cpe3ZhciB5cj1lZVtIZVtnXV0rKyxBbj1XZVtnXT1pLUtDKHlyKTt2ZVtnXT0oeXI8PEFuKS1vfXJldHVybltyKzc+PjMse2I6aSxzOkhlLG46V2UsdDp2ZX1dfSxTZm49UlAobmV3IEtoKFs4MSwxNiw5OSwxNDAsNDksMTk4LDI0LDk5LDEy'@; put 'LDMzLDE5NiwyNCw5OSwxMDIsMTAyLDEzNCw3MCwxNDYsNF0pLDAsNilbMV0sRWZuPVJQKG5ldyBLaChbMzMsMjAsMTk2LDI0LDk5LDE0MCwzMywxMzIsMTYsNjYsOCwzMywxMzIsMTYsNjYsOCwzMyw2OCw2OCw2OCw2OCw2OCw2OCw2OCw2OCwzNiw5XSksMCw2KVsxXSxNZm49UlAobmV3IEto'@; put 'KFszMiwxMzIsMTYsNjYsMTAyLDcwLDY4LDY4LDY4LDY4LDM2LDczLDJdKSwwLDUpWzFdLG8kZT1mdW5jdGlvbihuLGUpe2Zvcih2YXIgdD1uLmxlbmd0aCxyPW5ldyBZSyh0KSxpPTA7aTx0OysraSlyW2ldPWUsZSs9MTw8bltpXTtyZXR1cm4gcn0seDRlPW5ldyBLaChuZXcgWUsoWzAsMCww'@; put 'LDAsMTY4NDMwMDksNTA1Mjg3NzAsMTM0Njc4MDIwLDIwMjA1MDA1NywyNjk0MjIwOTNdKS5idWZmZXIsMCwzNiksVGZuPW8kZSh4NGUsMCksQTRlPW5ldyBLaChuZXcgWUsoWzAsMCwwLDAsMCwwLDAsMCwxNjg0MzAwOSw1MDUyODc3MCwxMTc3NjkyMjAsMTg1MjA3MDQ4LDI1MjU3OTA4NCwx'@; put 'Nl0pLmJ1ZmZlciwwLDUzKSx4Zm49byRlKEE0ZSwzKSxJUD1mdW5jdGlvbihuLGUsdCl7dmFyIHI9bi5sZW5ndGgsaT1lLmxlbmd0aCxvPW5bci0xXSxhPSgxPDx0LmIpLTEsbD0tdC5iO298fEkxKDApO2Zvcih2YXIgdT0wLGc9dC5iLEU9KHI8PDMpLTgrS0MobyktZyxPPS0xO0U+bCYmTzxp'@; put 'Oyl7dmFyIFo9RT4+MztlWysrT109dC5zW3U9KHU8PGd8KG5bWl18bltaKzFdPDw4fG5bWisyXTw8MTYpPj4oNyZFKSkmYV0sRS09Zz10Lm5bdV19KEUhPWx8fE8rMSE9aSkmJkkxKDApfSxBZm49ZnVuY3Rpb24obixlLHQpe3ZhciByPTYsbz1lLmxlbmd0aCszPj4yLGE9bzw8MSxsPW8rYTtJ'@; put 'UChuLnN1YmFycmF5KHIscis9blswXXxuWzFdPDw4KSxlLnN1YmFycmF5KDAsbyksdCksSVAobi5zdWJhcnJheShyLHIrPW5bMl18blszXTw8OCksZS5zdWJhcnJheShvLGEpLHQpLElQKG4uc3ViYXJyYXkocixyKz1uWzRdfG5bNV08PDgpLGUuc3ViYXJyYXkoYSxsKSx0KSxJUChuLnN1YmFy'@; put 'cmF5KHIpLGUuc3ViYXJyYXkobCksdCl9LGtmbj1mdW5jdGlvbihuLGUsdCl7dmFyIHIsaT1lLmIsbz1uW2ldLGE9bz4+MSYzO2UubD0xJm87dmFyIGw9bz4+M3xuW2krMV08PDV8bltpKzJdPDwxMyx1PShpKz0zKStsO2lmKDE9PWEpcmV0dXJuIGk+PW4ubGVuZ3RoP3ZvaWQgMDooZS5iPWkr'@; put 'MSx0PyhrUCh0LG5baV0sZS55LGUueSs9bCksdCk6a1AobmV3IEtoKGwpLG5baV0pKTtpZighKHU+bi5sZW5ndGgpKXtpZigwPT1hKXJldHVybiBlLmI9dSx0Pyh0LnNldChuLnN1YmFycmF5KGksdSksZS55KSxlLnkrPWwsdCk6VDRlKG4saSx1KTtpZigyPT1hKXt2YXIgZz1uW2ldLEU9MyZn'@; put 'LE89Zz4+MiYzLFo9Zz4+NCxlZT0wLHZlPTA7RTwyPzEmTz9afD1uWysraV08PDR8KDImTyYmblsrK2ldPDwxMik6Wj1nPj4zOih2ZT1PLE88Mj8oWnw9KDYzJm5bKytpXSk8PDQsZWU9bltpXT4+NnxuWysraV08PDIpOjI9PU8/KFp8PW5bKytpXTw8NHwoMyZuWysraV0pPDwxMixlZT1uW2ld'@; put 'Pj4yfG5bKytpXTw8Nik6KFp8PW5bKytpXTw8NHwoNjMmblsrK2ldKTw8MTIsZWU9bltpXT4+NnxuWysraV08PDJ8blsrK2ldPDwxMCkpLCsraTt2YXIgTWU9dD90LnN1YmFycmF5KGUueSxlLnkrZS5tKTpuZXcgS2goZS5tKSxIZT1NZS5sZW5ndGgtWjtpZigwPT1FKU1lLnNldChuLnN1YmFy'@; put 'cmF5KGksaSs9WiksSGUpO2Vsc2UgaWYoMT09RSlrUChNZSxuW2krK10sSGUpO2Vsc2V7dmFyIFdlPWUuaDtpZigyPT1FKXt2YXIgYXQ9ZnVuY3Rpb24obixlKXt2YXIgdD0wLHI9LTEsaT1uZXcgS2goMjkyKSxvPW5bZV0sYT1pLnN1YmFycmF5KDAsMjU2KSxsPWkuc3ViYXJyYXkoMjU2LDI2'@; put 'OCksdT1uZXcgV0soaS5idWZmZXIsMjY4KTtpZihvPDEyOCl7dmFyIGc9UlAobixlKzEsNiksTz1nWzFdLFo9Z1swXTw8MyxlZT1uW2UrPW9dO2VlfHxJMSgwKTtmb3IodmFyIHZlPTAsTWU9MCxIZT1PLmIsV2U9SGUsYXQ9KCsrZTw8MyktOCtLQyhlZSk7ISgoYXQtPUhlKTxaKTspe3ZhciBD'@; put 'dD1hdD4+MztpZihhWysrcl09Ty5zW3ZlKz0obltDdF18bltDdCsxXTw8OCk+Pig3JmF0KSYoMTw8SGUpLTFdLChhdC09V2UpPFopYnJlYWs7YVsrK3JdPU8uc1tNZSs9KG5bQ3Q9YXQ+PjNdfG5bQ3QrMV08PDgpPj4oNyZhdCkmKDE8PFdlKS0xXSxIZT1PLm5bdmVdLHZlPU8udFt2ZV0sV2U9'@; put 'Ty5uW01lXSxNZT1PLnRbTWVdfSsrcj4yNTUmJkkxKDApfWVsc2V7Zm9yKHI9by0xMjc7dDxyO3QrPTIpe3ZhciBBdD1uWysrZV07YVt0XT1BdD4+NCxhW3QrMV09MTUmQXR9KytlfXZhciBLdD0wO2Zvcih0PTA7dDxyOysrdCkocXQ9YVt0XSk+MTEmJkkxKDApLEt0Kz1xdCYmMTw8cXQtMTt2'@; put 'YXIgZ249S0MoS3QpKzEsVG49MTw8Z24sQ249VG4tS3Q7Zm9yKENuJkNuLTEmJkkxKDApLGFbcisrXT1LQyhDbikrMSx0PTA7dDxyOysrdCl7dmFyIHF0OysrbFthW3RdPShxdD1hW3RdKSYmZ24rMS1xdF19dmFyIHFyPW5ldyBLaChUbjw8MSksJG49cXIuc3ViYXJyYXkoMCxUbiksVHI9cXIu'@; put 'c3ViYXJyYXkoVG4pO2Zvcih1W2duXT0wLHQ9Z247dD4wOy0tdCl7dmFyIHJpPXVbdF07a1AoVHIsdCxyaSx1W3QtMV09cmkrbFt0XSooMTw8Z24tdCkpfWZvcih1WzBdIT1UbiYmSTEoMCksdD0wO3Q8cjsrK3Qpe3ZhciBmbj1hW3RdO2lmKGZuKXt2YXIgeXI9dVtmbl07a1AoJG4sdCx5cix1'@; put 'W2ZuXT15cisoMTw8Z24tZm4pKX19cmV0dXJuW2Use246VHIsYjpnbixzOiRufV19KG4saSk7ZWUrPWktKGk9YXRbMF0pLGUuaD1XZT1hdFsxXX1lbHNlIFdlfHxJMSgwKTsodmU/QWZuOklQKShuLnN1YmFycmF5KGksaSs9ZWUpLE1lLnN1YmFycmF5KEhlKSxXZSl9dmFyIEN0PW5baSsrXTtp'@; put 'ZihDdCl7MjU1PT1DdD9DdD0zMjUxMisobltpKytdfG5baSsrXTw8OCk6Q3Q+MTI3JiYoQ3Q9Q3QtMTI4PDw4fG5baSsrXSk7dmFyIEF0PW5baSsrXTszJkF0JiZJMSgwKTtmb3IodmFyIEt0PVtFZm4sTWZuLFNmbl0scXQ9MjtxdD4tMTstLXF0KXt2YXIgZ249QXQ+PjIrKHF0PDwxKSYzO2lm'@; put 'KDE9PWduKXt2YXIgVG49bmV3IEtoKFswLDAsbltpKytdXSk7S3RbcXRdPXtzOlRuLnN1YmFycmF5KDIsMyksbjpUbi5zdWJhcnJheSgwLDEpLHQ6bmV3IFdLKFRuLmJ1ZmZlciwwLDEpLGI6MH19ZWxzZSAyPT1nbj8oaT0ocj1SUChuLGksOS0oMSZxdCkpKVswXSxLdFtxdF09clsxXSk6Mz09'@; put 'Z24mJihlLnR8fEkxKDApLEt0W3F0XT1lLnRbcXRdKX12YXIgQ249ZS50PUt0LHFyPUNuWzBdLCRuPUNuWzFdLFRyPUNuWzJdLHJpPW5bdS0xXTtyaXx8STEoMCk7dmFyIGZuPSh1PDwzKS04K0tDKHJpKS1Uci5iLHlyPWZuPj4zLEFuPTAsSHI9KG5beXJdfG5beXIrMV08PDgpPj4oNyZmbikm'@; put 'KDE8PFRyLmIpLTEsdGk9KG5beXI9KGZuLT0kbi5iKT4+M118blt5cisxXTw8OCk+Pig3JmZuKSYoMTw8JG4uYiktMSxmcj0oblt5cj0oZm4tPXFyLmIpPj4zXXxuW3lyKzFdPDw4KT4+KDcmZm4pJigxPDxxci5iKS0xO2ZvcigrK0N0Oy0tQ3Q7KXt2YXIgZWk9VHIuc1tIcl0sUG89VHIubltI'@; put 'cl0sSG89cXIuc1tmcl0seGk9cXIubltmcl0sVG89JG4uc1t0aV0sd3M9JG4ublt0aV0sdHM9MTw8VG8sa2E9dHMrKChuW3lyPShmbi09VG8pPj4zXXxuW3lyKzFdPDw4fG5beXIrMl08PDE2fG5beXIrM108PDI0KT4+Pig3JmZuKSZ0cy0xKTt5cj0oZm4tPUE0ZVtIb10pPj4zO3ZhciBhbz14'@; put 'Zm5bSG9dKygoblt5cl18blt5cisxXTw8OHxuW3lyKzJdPDwxNik+Pig3JmZuKSYoMTw8QTRlW0hvXSktMSk7eXI9KGZuLT14NGVbZWldKT4+Mzt2YXIgdXQ9VGZuW2VpXSsoKG5beXJdfG5beXIrMV08PDh8blt5cisyXTw8MTYpPj4oNyZmbikmKDE8PHg0ZVtlaV0pLTEpO2lmKHlyPShmbi09'@; put 'UG8pPj4zLEhyPVRyLnRbSHJdKygoblt5cl18blt5cisxXTw8OCk+Pig3JmZuKSYoMTw8UG8pLTEpLHlyPShmbi09eGkpPj4zLGZyPXFyLnRbZnJdKygoblt5cl18blt5cisxXTw8OCk+Pig3JmZuKSYoMTw8eGkpLTEpLHlyPShmbi09d3MpPj4zLHRpPSRuLnRbdGldKygoblt5cl18blt5cisx'@; put 'XTw8OCk+Pig3JmZuKSYoMTw8d3MpLTEpLGthPjMpZS5vWzJdPWUub1sxXSxlLm9bMV09ZS5vWzBdLGUub1swXT1rYS09MztlbHNle3ZhciBIdD1rYS0oMCE9dXQpO0h0PyhrYT0zPT1IdD9lLm9bMF0tMTplLm9bSHRdLEh0PjEmJihlLm9bMl09ZS5vWzFdKSxlLm9bMV09ZS5vWzBdLGUub1sw'@; put 'XT1rYSk6a2E9ZS5vWzBdfWZvcihxdD0wO3F0PHV0OysrcXQpTWVbQW4rcXRdPU1lW0hlK3F0XTtIZSs9dXQ7dmFyIGRuPShBbis9dXQpLWthO2lmKGRuPDApe3ZhciBWbj0tZG4sSXI9ZS5lK2RuO2ZvcihWbj5hbyYmKFZuPWFvKSxxdD0wO3F0PFZuOysrcXQpTWVbQW4rcXRdPWUud1tJcitx'@; put 'dF07QW4rPVZuLGFvLT1Wbixkbj0wfWZvcihxdD0wO3F0PGFvOysrcXQpTWVbQW4rcXRdPU1lW2RuK3F0XTtBbis9YW99aWYoQW4hPUhlKWZvcig7SGU8TWUubGVuZ3RoOylNZVtBbisrXT1NZVtIZSsrXTtlbHNlIEFuPU1lLmxlbmd0aDt0P2UueSs9QW46TWU9VDRlKE1lLDAsQW4pfWVsc2Ug'@; put 'aWYodCl7aWYoZS55Kz1aLEhlKWZvcihxdD0wO3F0PFo7KytxdClNZVtxdF09TWVbSGUrcXRdfWVsc2UgSGUmJihNZT1UNGUoTWUsSGUpKTtyZXR1cm4gZS5iPXUsTWV9STEoMil9fTtmdW5jdGlvbiBrNGUoKXtyZXR1cm4gazRlPUNyKGZ1bmN0aW9uKihuPXt9KXt2YXIgdSxaLHZlLGduLGZy'@; put 'LGVpLGU9bixpPShFZSxWZSk9Pnt0aHJvdyBWZX0sRT1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLE89Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpLGVlPSExLEhlPSExO2Z1bmN0aW9uIGF0KCl7aWYoIVRvPy5idWZmZXI/LnJlc2l6YWJsZSl7dmFyIEVlPWZ1bmN0aW9uIFdlKCl7cmV0'@; put 'dXJuIGhYLmJ1ZmZlcn0oKTtUbz1uZXcgSW50OEFycmF5KEVlKSxIbz1uZXcgSW50MTZBcnJheShFZSksZS5IRUFQVTg9dXQ9bmV3IFVpbnQ4QXJyYXkoRWUpLGthPW5ldyBVaW50MTZBcnJheShFZSkseGk9bmV3IEludDMyQXJyYXkoRWUpLGFvPW5ldyBVaW50MzJBcnJheShFZSksd3M9bmV3'@; put 'IEZsb2F0MzJBcnJheShFZSksdHM9bmV3IEZsb2F0NjRBcnJheShFZSl9fWZ1bmN0aW9uIHF0KEVlKXt0aHJvdyBPKEVlPWBBYm9ydGVkKCR7RWV9KWApLGVlPSEwLEVlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiIsSGUmJkokZSgpLG5ldyBXZWJBc3NlbWJs'@; put 'eS5SdW50aW1lRXJyb3IoRWUpfWZ1bmN0aW9uICRuKCl7cmV0dXJuKCRuPUNyKGZ1bmN0aW9uKihFZSl7aWYoIVopdHJ5e3ZhciBWZT15aWVsZCB1KEVlKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoVmUpfWNhdGNoe31yZXR1cm4gZnVuY3Rpb24gQ24oRWUpe2lmKEVlPT1nbiYmWilyZXR1cm4g'@; put 'bmV3IFVpbnQ4QXJyYXkoWik7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifShFZSl9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJpKCl7cmV0dXJuIHJpPUNyKGZ1bmN0aW9uKihFZSxWZSl7dHJ5e3ZhciBzdD15aWVsZCBm'@; put 'dW5jdGlvbiBxcihFZSl7cmV0dXJuICRuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oRWUpO3JldHVybiB5aWVsZCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShzdCxWZSl9Y2F0Y2goWXQpe08oYGZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICR7WXR9YCkscXQoWXQpfX0p'@; put 'LHJpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB5cigpe3JldHVybiB5cj1DcihmdW5jdGlvbiooRWUsVmUsc3Qpe2lmKCFFZSYmIShFZT0+RWUuc3RhcnRzV2l0aCgiZmlsZTovLyIpKShWZSkpdHJ5e3ZhciBNdD1mZXRjaChWZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0p'@; put 'O3JldHVybiB5aWVsZCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhNdCxzdCl9Y2F0Y2goYW4pe08oYHdhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAke2FufWApLE8oImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIil9cmV0dXJuIGZ1bmN0'@; put 'aW9uIFRyKEVlLFZlKXtyZXR1cm4gcmkuYXBwbHkodGhpcyxhcmd1bWVudHMpfShWZSxzdCl9KSx5ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdGkoKXtyZXR1cm4gdGk9Q3IoZnVuY3Rpb24qKCl7dmFyIHN0PWZ1bmN0aW9uIEFuKCl7cmV0dXJue2E6VjZufX0oKTtnbj8/PSIi'@; put 'O3ZhciBNdD15aWVsZCBmdW5jdGlvbiBmbihFZSxWZSxzdCl7cmV0dXJuIHlyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oWixnbixzdCk7cmV0dXJuIGZ1bmN0aW9uIFZlKGFuKXtyZXR1cm4gZnVuY3Rpb24gRWUoYW4pe3JldHVybiBmdW5jdGlvbiBINm4oRWUpe0skZT1FZS5VLHE0ZT1lLl9t'@; put 'YWxsb2M9RWUuVix0NT1lLl9mcmVlPUVlLlcsWCRlPUVlLlksUSRlPUVlLlosSiRlPUVlLl8sZXFlPUVlLiQsdHFlPUVlLmFhLG5xZT1FZS5iYSxycWU9RWUuZGEsaXFlPUVlLmVhLHV5Lmppamk9RWUuZmEsdXkudmlpamlpPUVlLmdhLHV5LmlpaWlpaj1FZS5oYSx1eS5paWlpaWpqPUVlLmlh'@; put 'LHV5LmlpaWlpaWpqPUVlLmphLHV5LnZpaWo9RWUua2EsdXkuaWlpaj1FZS5sYSxoWD1FZS5TLGFxZT1FZS5YLG9xZT1FZS5jYX0oQlA9YW4uZXhwb3J0cyksYXQoKSxCUH0oYW4uaW5zdGFuY2UpfShNdCl9KSx0aS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2xhc3MgUG97bmFtZT0iRXhpdFN0'@; put 'YXR1cyI7Y29uc3RydWN0b3IoVmUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke1ZlfSlgLHRoaXMuc3RhdHVzPVZlfX12YXIgSG8seGksVG8sd3MsdHMsa2EsYW8sdXQsSHQ9Z2xvYmFsVGhpcy5UZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyLGRuPShF'@; put 'ZSxWZSxzdCxNdCk9Pnt2YXIgWXQ9VmUrc3Q7aWYoTXQpcmV0dXJuIFl0O2Zvcig7RWVbVmVdJiYhKFZlPj1ZdCk7KSsrVmU7cmV0dXJuIFZlfSxWbj0oRWUsVmU9MCxzdCxNdCk9Pnt2YXIgWXQ9ZG4oRWUsVmUsc3QsTXQpO2lmKFl0LVZlPjE2JiZFZS5idWZmZXImJkh0KXJldHVybiBIdC5k'@; put 'ZWNvZGUoRWUuc3ViYXJyYXkoVmUsWXQpKTtmb3IodmFyIGFuPSIiO1ZlPFl0Oyl7dmFyIEluPUVlW1ZlKytdO2lmKDEyOCZJbil7dmFyIEtuPTYzJkVlW1ZlKytdO2lmKDE5MiE9KDIyNCZJbikpe3ZhciBsaT02MyZFZVtWZSsrXTtpZigoSW49MjI0PT0oMjQwJkluKT8oMTUmSW4pPDwxMnxL'@; put 'bjw8NnxsaTooNyZJbik8PDE4fEtuPDwxMnxsaTw8Nnw2MyZFZVtWZSsrXSk8NjU1MzYpYW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoSW4pO2Vsc2V7dmFyIFFpPUluLTY1NTM2O2FuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fFFpPj4xMCw1NjMyMHwxMDIzJlFpKX19ZWxzZSBhbis9U3Ry'@; put 'aW5nLmZyb21DaGFyQ29kZSgoMzEmSW4pPDw2fEtuKX1lbHNlIGFuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEluKX1yZXR1cm4gYW59LElyPShFZSxWZSxzdCk9PkVlP1ZuKHV0LEVlLFZlLHN0KToiIixqcj17aXNBYnM6RWU9PiIvIj09PUVlLmNoYXJBdCgwKSxzcGxpdFBhdGg6RWU9Pi9eKFwv'@; put 'P3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLy5leGVjKEVlKS5zbGljZSgxKSxub3JtYWxpemVBcnJheTooRWUsVmUpPT57Zm9yKHZhciBzdD0wLE10PUVlLmxlbmd0aC0xO010Pj0wO010LS0pe3ZhciBZdD1FZVtNdF07Ii4iPT09WXQ/'@; put 'RWUuc3BsaWNlKE10LDEpOiIuLiI9PT1ZdD8oRWUuc3BsaWNlKE10LDEpLHN0KyspOnN0JiYoRWUuc3BsaWNlKE10LDEpLHN0LS0pfWlmKFZlKWZvcig7c3Q7c3QtLSlFZS51bnNoaWZ0KCIuLiIpO3JldHVybiBFZX0sbm9ybWFsaXplOkVlPT57dmFyIFZlPWpyLmlzQWJzKEVlKSxzdD0iLyI9'@; put 'PT1FZS5zbGljZSgtMSk7cmV0dXJuIShFZT1qci5ub3JtYWxpemVBcnJheShFZS5zcGxpdCgiLyIpLmZpbHRlcihNdD0+ISFNdCksIVZlKS5qb2luKCIvIikpJiYhVmUmJihFZT0iLiIpLEVlJiZzdCYmKEVlKz0iLyIpLChWZT8iLyI6IiIpK0VlfSxkaXJuYW1lOkVlPT57dmFyIFZlPWpyLnNw'@; put 'bGl0UGF0aChFZSksc3Q9VmVbMF0sTXQ9VmVbMV07cmV0dXJuIHN0fHxNdD8oTXQmJihNdD1NdC5zbGljZSgwLC0xKSksc3QrTXQpOiIuIn0sYmFzZW5hbWU6RWU9PkVlJiZFZS5tYXRjaCgvKFteXC9dK3xcLylcLyokLylbMV0sam9pbjooLi4uRWUpPT5qci5ub3JtYWxpemUoRWUuam9pbigi'@; put 'LyIpKSxqb2luMjooRWUsVmUpPT5qci5ub3JtYWxpemUoRWUrIi8iK1ZlKX0sZ289RWU9Pihnbz1FZT0+KGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoRWUpLDApKShFZSksWW89e3Jlc29sdmU6KC4uLkVlKT0+e2Zvcih2YXIgVmU9IiIsc3Q9ITEsTXQ9RWUubGVuZ3RoLTE7TXQ+PS0xJiYhc3Q7'@; put 'TXQtLSl7dmFyIFl0PU10Pj0wP0VlW010XTpPdC5jd2QoKTtpZigic3RyaW5nIiE9dHlwZW9mIFl0KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7aWYoIVl0KXJldHVybiIiO1ZlPVl0KyIvIitWZSxzdD1qci5pc0FicyhZ'@; put 'dCl9cmV0dXJuKHN0PyIvIjoiIikrKFZlPWpyLm5vcm1hbGl6ZUFycmF5KFZlLnNwbGl0KCIvIikuZmlsdGVyKGFuPT4hIWFuKSwhc3QpLmpvaW4oIi8iKSl8fCIuIn0scmVsYXRpdmU6KEVlLFZlKT0+e2Z1bmN0aW9uIHN0KFFpKXtmb3IodmFyIFFvPTA7UW88UWkubGVuZ3RoJiYiIj09PVFp'@; put 'W1FvXTtRbysrKTtmb3IodmFyIElhPVFpLmxlbmd0aC0xO0lhPj0wJiYiIj09PVFpW0lhXTtJYS0tKTtyZXR1cm4gUW8+SWE/W106UWkuc2xpY2UoUW8sSWEtUW8rMSl9RWU9WW8ucmVzb2x2ZShFZSkuc2xpY2UoMSksVmU9WW8ucmVzb2x2ZShWZSkuc2xpY2UoMSk7Zm9yKHZhciBNdD1zdChF'@; put 'ZS5zcGxpdCgiLyIpKSxZdD1zdChWZS5zcGxpdCgiLyIpKSxhbj1NYXRoLm1pbihNdC5sZW5ndGgsWXQubGVuZ3RoKSxJbj1hbixLbj0wO0tuPGFuO0tuKyspaWYoTXRbS25dIT09WXRbS25dKXtJbj1LbjticmVha312YXIgbGk9W107Zm9yKEtuPUluO0tuPE10Lmxlbmd0aDtLbisrKWxpLnB1'@; put 'c2goIi4uIik7cmV0dXJuKGxpPWxpLmNvbmNhdChZdC5zbGljZShJbikpKS5qb2luKCIvIil9fSxTbz1bXSxSYT1FZT0+e2Zvcih2YXIgVmU9MCxzdD0wO3N0PEVlLmxlbmd0aDsrK3N0KXt2YXIgTXQ9RWUuY2hhckNvZGVBdChzdCk7TXQ8PTEyNz9WZSsrOk10PD0yMDQ3P1ZlKz0yOk10Pj01'@; put 'NTI5NiYmTXQ8PTU3MzQzPyhWZSs9NCwrK3N0KTpWZSs9M31yZXR1cm4gVmV9LFZvPShFZSxWZSxzdCxNdCk9PntpZighKE10PjApKXJldHVybiAwO2Zvcih2YXIgWXQ9c3QsYW49c3QrTXQtMSxJbj0wO0luPEVlLmxlbmd0aDsrK0luKXt2YXIgS249RWUuY29kZVBvaW50QXQoSW4pO2lmKEtu'@; put 'PD0xMjcpe2lmKHN0Pj1hbilicmVhaztWZVtzdCsrXT1Lbn1lbHNlIGlmKEtuPD0yMDQ3KXtpZihzdCsxPj1hbilicmVhaztWZVtzdCsrXT0xOTJ8S24+PjYsVmVbc3QrK109MTI4fDYzJktufWVsc2UgaWYoS248PTY1NTM1KXtpZihzdCsyPj1hbilicmVhaztWZVtzdCsrXT0yMjR8S24+PjEy'@; put 'LFZlW3N0KytdPTEyOHxLbj4+NiY2MyxWZVtzdCsrXT0xMjh8NjMmS259ZWxzZXtpZihzdCszPj1hbilicmVhaztWZVtzdCsrXT0yNDB8S24+PjE4LFZlW3N0KytdPTEyOHxLbj4+MTImNjMsVmVbc3QrK109MTI4fEtuPj42JjYzLFZlW3N0KytdPTEyOHw2MyZLbixJbisrfX1yZXR1cm4gVmVb'@; put 'c3RdPTAsc3QtWXR9LGJsPShFZSxWZSxzdCk9Pnt2YXIgTXQ9c3Q+MD9zdDpSYShFZSkrMSxZdD1uZXcgQXJyYXkoTXQpLGFuPVZvKEVlLFl0LDAsWXQubGVuZ3RoKTtyZXR1cm4gVmUmJihZdC5sZW5ndGg9YW4pLFl0fSxUaD17dHR5czpbXSxpbml0KCl7fSxzaHV0ZG93bigpe30scmVnaXN0'@; put 'ZXIoRWUsVmUpe1RoLnR0eXNbRWVdPXtpbnB1dDpbXSxvdXRwdXQ6W10sb3BzOlZlfSxPdC5yZWdpc3RlckRldmljZShFZSxUaC5zdHJlYW1fb3BzKX0sc3RyZWFtX29wczp7b3BlbihFZSl7dmFyIFZlPVRoLnR0eXNbRWUubm9kZS5yZGV2XTtpZighVmUpdGhyb3cgbmV3IE90LkVycm5vRXJy'@; put 'b3IoNDMpO0VlLnR0eT1WZSxFZS5zZWVrYWJsZT0hMX0sY2xvc2UoRWUpe0VlLnR0eS5vcHMuZnN5bmMoRWUudHR5KX0sZnN5bmMoRWUpe0VlLnR0eS5vcHMuZnN5bmMoRWUudHR5KX0scmVhZChFZSxWZSxzdCxNdCxZdCl7aWYoIUVlLnR0eXx8IUVlLnR0eS5vcHMuZ2V0X2NoYXIpdGhyb3cg'@; put 'bmV3IE90LkVycm5vRXJyb3IoNjApO2Zvcih2YXIgYW49MCxJbj0wO0luPE10O0luKyspe3ZhciBLbjt0cnl7S249RWUudHR5Lm9wcy5nZXRfY2hhcihFZS50dHkpfWNhdGNoe3Rocm93IG5ldyBPdC5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT1LbiYmMD09PWFuKXRocm93IG5ldyBPdC5F'@; put 'cnJub0Vycm9yKDYpO2lmKG51bGw9PUtuKWJyZWFrO2FuKyssVmVbc3QrSW5dPUtufXJldHVybiBhbiYmKEVlLm5vZGUuYXRpbWU9RGF0ZS5ub3coKSksYW59LHdyaXRlKEVlLFZlLHN0LE10LFl0KXtpZighRWUudHR5fHwhRWUudHR5Lm9wcy5wdXRfY2hhcil0aHJvdyBuZXcgT3QuRXJybm9F'@; put 'cnJvcig2MCk7dHJ5e2Zvcih2YXIgYW49MDthbjxNdDthbisrKUVlLnR0eS5vcHMucHV0X2NoYXIoRWUudHR5LFZlW3N0K2FuXSl9Y2F0Y2h7dGhyb3cgbmV3IE90LkVycm5vRXJyb3IoMjkpfXJldHVybiBNdCYmKEVlLm5vZGUubXRpbWU9RWUubm9kZS5jdGltZT1EYXRlLm5vdygpKSxhbn19'@; put 'LGRlZmF1bHRfdHR5X29wczp7Z2V0X2NoYXI6RWU9PlNvLmxlbmd0aD9Tby5zaGlmdCgpOm51bGwscHV0X2NoYXIoRWUsVmUpe251bGw9PT1WZXx8MTA9PT1WZT8oRShWbihFZS5vdXRwdXQpKSxFZS5vdXRwdXQ9W10pOjAhPVZlJiZFZS5vdXRwdXQucHVzaChWZSl9LGZzeW5jKEVlKXtFZS5v'@; put 'dXRwdXQ/Lmxlbmd0aD4wJiYoRShWbihFZS5vdXRwdXQpKSxFZS5vdXRwdXQ9W10pfSxpb2N0bF90Y2dldHM6RWU9Pih7Y19pZmxhZzoyNTg1NixjX29mbGFnOjUsY19jZmxhZzoxOTEsY19sZmxhZzozNTM4NyxjX2NjOlszLDI4LDEyNywyMSw0LDAsMSwwLDE3LDE5LDI2LDAsMTgsMTUsMjMs'@; put 'MjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF19KSxpb2N0bF90Y3NldHM6KEVlLFZlLHN0KT0+MCxpb2N0bF90aW9jZ3dpbnN6OkVlPT5bMjQsODBdfSxkZWZhdWx0X3R0eTFfb3BzOntwdXRfY2hhcihFZSxWZSl7bnVsbD09PVZlfHwxMD09PVZlPyhPKFZuKEVlLm91dHB1dCkp'@; put 'LEVlLm91dHB1dD1bXSk6MCE9VmUmJkVlLm91dHB1dC5wdXNoKFZlKX0sZnN5bmMoRWUpe0VlLm91dHB1dD8ubGVuZ3RoPjAmJihPKFZuKEVlLm91dHB1dCkpLEVlLm91dHB1dD1bXSl9fX0sZzk9KEVlLFZlKT0+TWF0aC5jZWlsKEVlL1ZlKSpWZSxzeT1FZT0+e0VlPWc5KEVlLDY1NTM2KTt2'@; put 'YXIgVmU9WCRlKDY1NTM2LEVlKTtyZXR1cm4gVmUmJigoRWUsVmUpPT57dXQuZmlsbCgwLEVlLEVlK1ZlKX0pKFZlLEVlKSxWZX0sR2E9e29wc190YWJsZTpudWxsLG1vdW50OkVlPT5HYS5jcmVhdGVOb2RlKG51bGwsIi8iLDE2ODk1LDApLGNyZWF0ZU5vZGUoRWUsVmUsc3QsTXQpe2lmKE90'@; put 'LmlzQmxrZGV2KHN0KXx8T3QuaXNGSUZPKHN0KSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig2Myk7R2Eub3BzX3RhYmxlfHw9e2Rpcjp7bm9kZTp7Z2V0YXR0cjpHYS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6R2Eubm9kZV9vcHMuc2V0YXR0cixsb29rdXA6R2Eubm9kZV9vcHMubG9va3Vw'@; put 'LG1rbm9kOkdhLm5vZGVfb3BzLm1rbm9kLHJlbmFtZTpHYS5ub2RlX29wcy5yZW5hbWUsdW5saW5rOkdhLm5vZGVfb3BzLnVubGluayxybWRpcjpHYS5ub2RlX29wcy5ybWRpcixyZWFkZGlyOkdhLm5vZGVfb3BzLnJlYWRkaXIsc3ltbGluazpHYS5ub2RlX29wcy5zeW1saW5rfSxzdHJlYW06'@; put 'e2xsc2VlazpHYS5zdHJlYW1fb3BzLmxsc2Vla319LGZpbGU6e25vZGU6e2dldGF0dHI6R2Eubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOkdhLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTp7bGxzZWVrOkdhLnN0cmVhbV9vcHMubGxzZWVrLHJlYWQ6R2Euc3RyZWFtX29wcy5yZWFkLHdyaXRl'@; put 'OkdhLnN0cmVhbV9vcHMud3JpdGUsbW1hcDpHYS5zdHJlYW1fb3BzLm1tYXAsbXN5bmM6R2Euc3RyZWFtX29wcy5tc3luY319LGxpbms6e25vZGU6e2dldGF0dHI6R2Eubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOkdhLm5vZGVfb3BzLnNldGF0dHIscmVhZGxpbms6R2Eubm9kZV9vcHMucmVh'@; put 'ZGxpbmt9LHN0cmVhbTp7fX0sY2hyZGV2Ontub2RlOntnZXRhdHRyOkdhLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpHYS5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06T3QuY2hyZGV2X3N0cmVhbV9vcHN9fTt2YXIgWXQ9T3QuY3JlYXRlTm9kZShFZSxWZSxzdCxNdCk7cmV0dXJuIE90Lmlz'@; put 'RGlyKFl0Lm1vZGUpPyhZdC5ub2RlX29wcz1HYS5vcHNfdGFibGUuZGlyLm5vZGUsWXQuc3RyZWFtX29wcz1HYS5vcHNfdGFibGUuZGlyLnN0cmVhbSxZdC5jb250ZW50cz17fSk6T3QuaXNGaWxlKFl0Lm1vZGUpPyhZdC5ub2RlX29wcz1HYS5vcHNfdGFibGUuZmlsZS5ub2RlLFl0LnN0cmVh'@; put 'bV9vcHM9R2Eub3BzX3RhYmxlLmZpbGUuc3RyZWFtLFl0LnVzZWRCeXRlcz0wLFl0LmNvbnRlbnRzPUdhLmVtcHR5RmlsZUNvbnRlbnRzPz89bmV3IFVpbnQ4QXJyYXkoMCkpOk90LmlzTGluayhZdC5tb2RlKT8oWXQubm9kZV9vcHM9R2Eub3BzX3RhYmxlLmxpbmsubm9kZSxZdC5zdHJlYW1f'@; put 'b3BzPUdhLm9wc190YWJsZS5saW5rLnN0cmVhbSk6T3QuaXNDaHJkZXYoWXQubW9kZSkmJihZdC5ub2RlX29wcz1HYS5vcHNfdGFibGUuY2hyZGV2Lm5vZGUsWXQuc3RyZWFtX29wcz1HYS5vcHNfdGFibGUuY2hyZGV2LnN0cmVhbSksWXQuYXRpbWU9WXQubXRpbWU9WXQuY3RpbWU9RGF0ZS5u'@; put 'b3coKSxFZSYmKEVlLmNvbnRlbnRzW1ZlXT1ZdCxFZS5hdGltZT1FZS5tdGltZT1FZS5jdGltZT1ZdC5hdGltZSksWXR9LGdldEZpbGVEYXRhQXNUeXBlZEFycmF5OkVlPT5FZS5jb250ZW50cy5zdWJhcnJheSgwLEVlLnVzZWRCeXRlcyksZXhwYW5kRmlsZVN0b3JhZ2UoRWUsVmUpe3ZhciBz'@; put 'dD1FZS5jb250ZW50cy5sZW5ndGg7aWYoIShzdD49VmUpKXtWZT1NYXRoLm1heChWZSxzdCooc3Q8MTA0ODU3Nj8yOjEuMTI1KT4+PjApLHN0JiYoVmU9TWF0aC5tYXgoVmUsMjU2KSk7dmFyIFl0PUdhLmdldEZpbGVEYXRhQXNUeXBlZEFycmF5KEVlKTtFZS5jb250ZW50cz1uZXcgVWludDhB'@; put 'cnJheShWZSksRWUuY29udGVudHMuc2V0KFl0KX19LHJlc2l6ZUZpbGVTdG9yYWdlKEVlLFZlKXtpZihFZS51c2VkQnl0ZXMhPVZlKXt2YXIgc3Q9RWUuY29udGVudHM7RWUuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkoVmUpLEVlLmNvbnRlbnRzLnNldChzdC5zdWJhcnJheSgwLE1hdGgubWlu'@; put 'KFZlLEVlLnVzZWRCeXRlcykpKSxFZS51c2VkQnl0ZXM9VmV9fSxub2RlX29wczp7Z2V0YXR0cihFZSl7dmFyIFZlPXt9O3JldHVybiBWZS5kZXY9T3QuaXNDaHJkZXYoRWUubW9kZSk/RWUuaWQ6MSxWZS5pbm89RWUuaWQsVmUubW9kZT1FZS5tb2RlLFZlLm5saW5rPTEsVmUudWlkPTAsVmUu'@; put 'Z2lkPTAsVmUucmRldj1FZS5yZGV2LFZlLnNpemU9T3QuaXNEaXIoRWUubW9kZSk/NDA5NjpPdC5pc0ZpbGUoRWUubW9kZSk/RWUudXNlZEJ5dGVzOk90LmlzTGluayhFZS5tb2RlKT9FZS5saW5rLmxlbmd0aDowLFZlLmF0aW1lPW5ldyBEYXRlKEVlLmF0aW1lKSxWZS5tdGltZT1uZXcgRGF0'@; put 'ZShFZS5tdGltZSksVmUuY3RpbWU9bmV3IERhdGUoRWUuY3RpbWUpLFZlLmJsa3NpemU9NDA5NixWZS5ibG9ja3M9TWF0aC5jZWlsKFZlLnNpemUvVmUuYmxrc2l6ZSksVmV9LHNldGF0dHIoRWUsVmUpe2ZvcihsZXQgc3Qgb2ZbIm1vZGUiLCJhdGltZSIsIm10aW1lIiwiY3RpbWUiXSludWxs'@; put 'IT1WZVtzdF0mJihFZVtzdF09VmVbc3RdKTt2b2lkIDAhPT1WZS5zaXplJiZHYS5yZXNpemVGaWxlU3RvcmFnZShFZSxWZS5zaXplKX0sbG9va3VwKEVlLFZlKXt0aHJvdyBHYS5kb2VzTm90RXhpc3RFcnJvcnx8KEdhLmRvZXNOb3RFeGlzdEVycm9yPW5ldyBPdC5FcnJub0Vycm9yKDQ0KSxH'@; put 'YS5kb2VzTm90RXhpc3RFcnJvci5zdGFjaz0iPGdlbmVyaWMgZXJyb3IsIG5vIHN0YWNrPiIpLEdhLmRvZXNOb3RFeGlzdEVycm9yfSxta25vZDooRWUsVmUsc3QsTXQpPT5HYS5jcmVhdGVOb2RlKEVlLFZlLHN0LE10KSxyZW5hbWUoRWUsVmUsc3Qpe3ZhciBNdDt0cnl7TXQ9T3QubG9va3Vw'@; put 'Tm9kZShWZSxzdCl9Y2F0Y2h7fWlmKE10KXtpZihPdC5pc0RpcihFZS5tb2RlKSlmb3IodmFyIFl0IGluIE10LmNvbnRlbnRzKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDU1KTtPdC5oYXNoUmVtb3ZlTm9kZShNdCl9ZGVsZXRlIEVlLnBhcmVudC5jb250ZW50c1tFZS5uYW1lXSxWZS5jb250'@; put 'ZW50c1tzdF09RWUsRWUubmFtZT1zdCxWZS5jdGltZT1WZS5tdGltZT1FZS5wYXJlbnQuY3RpbWU9RWUucGFyZW50Lm10aW1lPURhdGUubm93KCl9LHVubGluayhFZSxWZSl7ZGVsZXRlIEVlLmNvbnRlbnRzW1ZlXSxFZS5jdGltZT1FZS5tdGltZT1EYXRlLm5vdygpfSxybWRpcihFZSxWZSl7'@; put 'dmFyIHN0PU90Lmxvb2t1cE5vZGUoRWUsVmUpO2Zvcih2YXIgTXQgaW4gc3QuY29udGVudHMpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNTUpO2RlbGV0ZSBFZS5jb250ZW50c1tWZV0sRWUuY3RpbWU9RWUubXRpbWU9RGF0ZS5ub3coKX0scmVhZGRpcjpFZT0+WyIuIiwiLi4iLC4uLk9iamVj'@; put 'dC5rZXlzKEVlLmNvbnRlbnRzKV0sc3ltbGluayhFZSxWZSxzdCl7dmFyIE10PUdhLmNyZWF0ZU5vZGUoRWUsVmUsNDE0NzEsMCk7cmV0dXJuIE10Lmxpbms9c3QsTXR9LHJlYWRsaW5rKEVlKXtpZighT3QuaXNMaW5rKEVlLm1vZGUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTtyZXR1'@; put 'cm4gRWUubGlua319LHN0cmVhbV9vcHM6e3JlYWQoRWUsVmUsc3QsTXQsWXQpe3ZhciBhbj1FZS5ub2RlLmNvbnRlbnRzO2lmKFl0Pj1FZS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgSW49TWF0aC5taW4oRWUubm9kZS51c2VkQnl0ZXMtWXQsTXQpO3JldHVybiBWZS5zZXQoYW4uc3Vi'@; put 'YXJyYXkoWXQsWXQrSW4pLHN0KSxJbn0sd3JpdGUoRWUsVmUsc3QsTXQsWXQsYW4pe2lmKFZlLmJ1ZmZlcj09PVRvLmJ1ZmZlciYmKGFuPSExKSwhTXQpcmV0dXJuIDA7dmFyIEluPUVlLm5vZGU7cmV0dXJuIEluLm10aW1lPUluLmN0aW1lPURhdGUubm93KCksYW4/KEluLmNvbnRlbnRzPVZl'@; put 'LnN1YmFycmF5KHN0LHN0K010KSxJbi51c2VkQnl0ZXM9TXQpOjA9PT1Jbi51c2VkQnl0ZXMmJjA9PT1ZdD8oSW4uY29udGVudHM9VmUuc2xpY2Uoc3Qsc3QrTXQpLEluLnVzZWRCeXRlcz1NdCk6KEdhLmV4cGFuZEZpbGVTdG9yYWdlKEluLFl0K010KSxJbi5jb250ZW50cy5zZXQoVmUuc3Vi'@; put 'YXJyYXkoc3Qsc3QrTXQpLFl0KSxJbi51c2VkQnl0ZXM9TWF0aC5tYXgoSW4udXNlZEJ5dGVzLFl0K010KSksTXR9LGxsc2VlayhFZSxWZSxzdCl7dmFyIE10PVZlO2lmKDE9PT1zdD9NdCs9RWUucG9zaXRpb246Mj09PXN0JiZPdC5pc0ZpbGUoRWUubm9kZS5tb2RlKSYmKE10Kz1FZS5ub2Rl'@; put 'LnVzZWRCeXRlcyksTXQ8MCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOCk7cmV0dXJuIE10fSxtbWFwKEVlLFZlLHN0LE10LFl0KXtpZighT3QuaXNGaWxlKEVlLm5vZGUubW9kZSkpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNDMpO3ZhciBhbixJbixLbj1FZS5ub2RlLmNvbnRlbnRzO2lm'@; put 'KDImWXR8fEtuLmJ1ZmZlciE9PVRvLmJ1ZmZlcil7aWYoSW49ITAsIShhbj1zeShWZSkpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDQ4KTtLbiYmKChzdD4wfHxzdCtWZTxLbi5sZW5ndGgpJiYoS249S24uc3ViYXJyYXk/S24uc3ViYXJyYXkoc3Qsc3QrVmUpOkFycmF5LnByb3RvdHlwZS5z'@; put 'bGljZS5jYWxsKEtuLHN0LHN0K1ZlKSksVG8uc2V0KEtuLGFuKSl9ZWxzZSBJbj0hMSxhbj1Lbi5ieXRlT2Zmc2V0O3JldHVybntwdHI6YW4sYWxsb2NhdGVkOklufX0sbXN5bmM6KEVlLFZlLHN0LE10LFl0KT0+KEdhLnN0cmVhbV9vcHMud3JpdGUoRWUsVmUsMCxNdCxzdCwhMSksMCl9fSxf'@; put 'ZD1FZT0+KCJzdHJpbmciPT10eXBlb2YgRWUmJihFZT1ibChFZSwhMCkpLEVlLnN1YmFycmF5fHwoRWU9bmV3IFVpbnQ4QXJyYXkoRWUpKSxFZSksTDE9KEVlLFZlKT0+e3ZhciBzdD0wO3JldHVybiBFZSYmKHN0fD0zNjUpLFZlJiYoc3R8PTE0Niksc3R9LGMzPWZ1bmN0aW9uKCl7dmFyIEVl'@; put 'PUNyKGZ1bmN0aW9uKihWZSl7dmFyIHN0PXlpZWxkIHUoVmUpO3JldHVybiBuZXcgVWludDhBcnJheShzdCl9KTtyZXR1cm4gZnVuY3Rpb24oc3Qpe3JldHVybiBFZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG9wPW51bGwsZmY9ZnVuY3Rpb24oKXt2YXIgRWU9Q3IoZnVuY3Rpb24qKCl7'@; put 'cmV0dXJuIG9wfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksTzE9MCxlNT1udWxsLHQ4PVtdLENBPWZ1bmN0aW9uKCl7dmFyIEVlPUNyKGZ1bmN0aW9uKihWZSxzdCl7Zm9yKHZhciBNdCBvZih0eXBlb2YgQnJvd3NlcjwidSImJkJyb3dz'@; put 'ZXIuaW5pdCgpLHQ4KSlpZihNdC5jYW5IYW5kbGUoc3QpKXJldHVybiBNdC5oYW5kbGUoVmUsc3QpO3JldHVybiBWZX0pO3JldHVybiBmdW5jdGlvbihzdCxNdCl7cmV0dXJuIEVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksbHk9ZnVuY3Rpb24oKXt2YXIgRWU9Q3IoZnVuY3Rpb24qKFZl'@; put 'LHN0LE10LFl0LGFuLEluLEtuLGxpKXt2YXIgUWk9c3Q/WW8ucmVzb2x2ZShqci5qb2luMihWZSxzdCkpOlZlO08xfHwob3A9bmV3IFByb21pc2UoVmU9PmU1PVZlKSksTzErKzt0cnl7dmFyIElhPU10OyJzdHJpbmciPT10eXBlb2YgTXQmJihJYT15aWVsZCBjMyhNdCkpLElhPXlpZWxkIENB'@; put 'KElhLFFpKSxsaT8uKCksSW58fCgoLi4uRWUpPT57T3QuY3JlYXRlRGF0YUZpbGUoLi4uRWUpfSkoVmUsc3QsSWEsWXQsYW4sS24pfWZpbmFsbHl7LS1PMXx8ZTUoKX19KTtyZXR1cm4gZnVuY3Rpb24oc3QsTXQsWXQsYW4sSW4sS24sbGksUWkpe3JldHVybiBFZS5hcHBseSh0aGlzLGFyZ3Vt'@; put 'ZW50cyl9fSgpLE90PXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6e30sc3RyZWFtczpbXSxuZXh0SW5vZGU6MSxuYW1lVGFibGU6bnVsbCxjdXJyZW50UGF0aDoiLyIsaW5pdGlhbGl6ZWQ6ITEsaWdub3JlUGVybWlzc2lvbnM6ITAsZmlsZXN5c3RlbXM6bnVsbCxzeW5jRlNSZXF1ZXN0'@; put 'czowLEVycm5vRXJyb3I6Y2xhc3N7bmFtZT0iRXJybm9FcnJvciI7Y29uc3RydWN0b3IoRWUpe3RoaXMuZXJybm89RWV9fSxGU1N0cmVhbTpjbGFzc3tzaGFyZWQ9e307Z2V0IG9iamVjdCgpe3JldHVybiB0aGlzLm5vZGV9c2V0IG9iamVjdChFZSl7dGhpcy5ub2RlPUVlfWdldCBpc1JlYWQo'@; put 'KXtyZXR1cm4gMSE9KDIwOTcxNTUmdGhpcy5mbGFncyl9Z2V0IGlzV3JpdGUoKXtyZXR1cm4hISgyMDk3MTU1JnRoaXMuZmxhZ3MpfWdldCBpc0FwcGVuZCgpe3JldHVybiAxMDI0JnRoaXMuZmxhZ3N9Z2V0IGZsYWdzKCl7cmV0dXJuIHRoaXMuc2hhcmVkLmZsYWdzfXNldCBmbGFncyhFZSl7'@; put 'dGhpcy5zaGFyZWQuZmxhZ3M9RWV9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuc2hhcmVkLnBvc2l0aW9ufXNldCBwb3NpdGlvbihFZSl7dGhpcy5zaGFyZWQucG9zaXRpb249RWV9fSxGU05vZGU6Y2xhc3N7bm9kZV9vcHM9e307c3RyZWFtX29wcz17fTtyZWFkTW9kZT0zNjU7d3JpdGVN'@; put 'b2RlPTE0Njttb3VudGVkPW51bGw7Y29uc3RydWN0b3IoRWUsVmUsc3QsTXQpe0VlfHwoRWU9dGhpcyksdGhpcy5wYXJlbnQ9RWUsdGhpcy5tb3VudD1FZS5tb3VudCx0aGlzLmlkPU90Lm5leHRJbm9kZSsrLHRoaXMubmFtZT1WZSx0aGlzLm1vZGU9c3QsdGhpcy5yZGV2PU10LHRoaXMuYXRp'@; put 'bWU9dGhpcy5tdGltZT10aGlzLmN0aW1lPURhdGUubm93KCl9Z2V0IHJlYWQoKXtyZXR1cm4odGhpcy5tb2RlJnRoaXMucmVhZE1vZGUpPT09dGhpcy5yZWFkTW9kZX1zZXQgcmVhZChFZSl7RWU/dGhpcy5tb2RlfD10aGlzLnJlYWRNb2RlOnRoaXMubW9kZSY9fnRoaXMucmVhZE1vZGV9Z2V0'@; put 'IHdyaXRlKCl7cmV0dXJuKHRoaXMubW9kZSZ0aGlzLndyaXRlTW9kZSk9PT10aGlzLndyaXRlTW9kZX1zZXQgd3JpdGUoRWUpe0VlP3RoaXMubW9kZXw9dGhpcy53cml0ZU1vZGU6dGhpcy5tb2RlJj1+dGhpcy53cml0ZU1vZGV9Z2V0IGlzRm9sZGVyKCl7cmV0dXJuIE90LmlzRGlyKHRoaXMu'@; put 'bW9kZSl9Z2V0IGlzRGV2aWNlKCl7cmV0dXJuIE90LmlzQ2hyZGV2KHRoaXMubW9kZSl9YWRkTGlzdGVuZXIoRWUsVmU9ITEpe3ZhciBzdD17Y2I6RWUsZXhjbHVzaXZlOlZlfSxNdD10aGlzLmxpc3RlbmVycz8/PW5ldyBTZXQ7cmV0dXJuIE10LmFkZChzdCkse2xpc3RlbmVyczpNdCxlbnRy'@; put 'eTpzdH19bm90aWZ5TGlzdGVuZXJzKEVlKXtpZih0aGlzLmxpc3RlbmVycyl7dmFyIFZlO2Zvcih2YXIgc3Qgb2YgdGhpcy5saXN0ZW5lcnMpc3QuZXhjbHVzaXZlPyhWZXx8PVtdKS5wdXNoKHN0KTpzdC5jYihFZSk7aWYoVmUpe3ZhciBNdD0odGhpcy5leGNsVHVybnx8MCklVmUubGVuZ3Ro'@; put 'O3RoaXMuZXhjbFR1cm49TXQrMSxWZVtNdF0uY2IoRWUpfX19fSxsb29rdXBQYXRoKEVlLFZlPXt9KXtpZighRWUpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNDQpO1ZlLmZvbGxvd19tb3VudD8/PSEwLGpyLmlzQWJzKEVlKXx8KEVlPU90LmN3ZCgpKyIvIitFZSk7ZTpmb3IodmFyIHN0PTA7'@; put 'c3Q8NDA7c3QrKyl7Zm9yKHZhciBNdD1FZS5zcGxpdCgiLyIpLmZpbHRlcihRaT0+ISFRaSksWXQ9T3Qucm9vdCxhbj0iLyIsSW49MDtJbjxNdC5sZW5ndGg7SW4rKyl7dmFyIEtuPUluPT09TXQubGVuZ3RoLTE7aWYoS24mJlZlLnBhcmVudClicmVhaztpZigiLiIhPT1NdFtJbl0pe2lmKCIu'@; put 'LiI9PT1NdFtJbl0pe2lmKGFuPWpyLmRpcm5hbWUoYW4pLE90LmlzUm9vdChZdCkpe0VlPWFuKyIvIitNdC5zbGljZShJbisxKS5qb2luKCIvIiksc3QtLTtjb250aW51ZSBlfVl0PVl0LnBhcmVudDtjb250aW51ZX1hbj1qci5qb2luMihhbixNdFtJbl0pO3RyeXtZdD1PdC5sb29rdXBOb2Rl'@; put 'KFl0LE10W0luXSl9Y2F0Y2goUWkpe2lmKDQ0PT09UWk/LmVycm5vJiZLbiYmVmUubm9lbnRfb2theSlyZXR1cm57cGF0aDphbn07dGhyb3cgUWl9aWYoT3QuaXNNb3VudHBvaW50KFl0KSYmKCFLbnx8VmUuZm9sbG93X21vdW50KSYmKFl0PVl0Lm1vdW50ZWQucm9vdCksT3QuaXNMaW5rKFl0'@; put 'Lm1vZGUpJiYoIUtufHxWZS5mb2xsb3cpKXtpZighWXQubm9kZV9vcHMucmVhZGxpbmspdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNTIpO3ZhciBsaT1ZdC5ub2RlX29wcy5yZWFkbGluayhZdCk7anIuaXNBYnMobGkpfHwobGk9anIuZGlybmFtZShhbikrIi8iK2xpKSxFZT1saSsiLyIrTXQu'@; put 'c2xpY2UoSW4rMSkuam9pbigiLyIpO2NvbnRpbnVlIGV9fX1yZXR1cm57cGF0aDphbixub2RlOll0fX10aHJvdyBuZXcgT3QuRXJybm9FcnJvcigzMil9LGdldFBhdGgoRWUpe2Zvcih2YXIgVmU7Oyl7aWYoT3QuaXNSb290KEVlKSl7dmFyIHN0PUVlLm1vdW50Lm1vdW50cG9pbnQ7cmV0dXJu'@; put 'IFZlPyIvIiE9PXN0W3N0Lmxlbmd0aC0xXT9gJHtzdH0vJHtWZX1gOnN0K1ZlOnN0fVZlPVZlP2Ake0VlLm5hbWV9LyR7VmV9YDpFZS5uYW1lLEVlPUVlLnBhcmVudH19LGhhc2hOYW1lKEVlLFZlKXtmb3IodmFyIHN0PTAsTXQ9MDtNdDxWZS5sZW5ndGg7TXQrKylzdD0oc3Q8PDUpLXN0K1Zl'@; put 'LmNoYXJDb2RlQXQoTXQpfDA7cmV0dXJuKEVlK3N0Pj4+MCklT3QubmFtZVRhYmxlLmxlbmd0aH0saGFzaEFkZE5vZGUoRWUpe3ZhciBWZT1PdC5oYXNoTmFtZShFZS5wYXJlbnQuaWQsRWUubmFtZSk7RWUubmFtZV9uZXh0PU90Lm5hbWVUYWJsZVtWZV0sT3QubmFtZVRhYmxlW1ZlXT1FZX0s'@; put 'aGFzaFJlbW92ZU5vZGUoRWUpe3ZhciBWZT1PdC5oYXNoTmFtZShFZS5wYXJlbnQuaWQsRWUubmFtZSk7aWYoT3QubmFtZVRhYmxlW1ZlXT09PUVlKU90Lm5hbWVUYWJsZVtWZV09RWUubmFtZV9uZXh0O2Vsc2UgZm9yKHZhciBzdD1PdC5uYW1lVGFibGVbVmVdO3N0Oyl7aWYoc3QubmFtZV9u'@; put 'ZXh0PT09RWUpe3N0Lm5hbWVfbmV4dD1FZS5uYW1lX25leHQ7YnJlYWt9c3Q9c3QubmFtZV9uZXh0fX0sbG9va3VwTm9kZShFZSxWZSl7dmFyIHN0PU90Lm1heUxvb2t1cChFZSk7aWYoc3QpdGhyb3cgbmV3IE90LkVycm5vRXJyb3Ioc3QpO2Zvcih2YXIgTXQ9T3QuaGFzaE5hbWUoRWUuaWQs'@; put 'VmUpLFl0PU90Lm5hbWVUYWJsZVtNdF07WXQ7WXQ9WXQubmFtZV9uZXh0KWlmKFl0LnBhcmVudC5pZD09PUVlLmlkJiZZdC5uYW1lPT09VmUpcmV0dXJuIFl0O3JldHVybiBPdC5sb29rdXAoRWUsVmUpfSxjcmVhdGVOb2RlKEVlLFZlLHN0LE10KXt2YXIgWXQ9bmV3IE90LkZTTm9kZShFZSxW'@; put 'ZSxzdCxNdCk7cmV0dXJuIE90Lmhhc2hBZGROb2RlKFl0KSxZdH0sZGVzdHJveU5vZGUoRWUpe090Lmhhc2hSZW1vdmVOb2RlKEVlKX0saXNSb290OkVlPT5FZT09PUVlLnBhcmVudCxpc01vdW50cG9pbnQ6RWU9PiEhRWUubW91bnRlZCxpc0ZpbGU6RWU9PjMyNzY4PT0oNjE0NDAmRWUpLGlz'@; put 'RGlyOkVlPT4xNjM4ND09KDYxNDQwJkVlKSxpc0xpbms6RWU9PjQwOTYwPT0oNjE0NDAmRWUpLGlzQ2hyZGV2OkVlPT44MTkyPT0oNjE0NDAmRWUpLGlzQmxrZGV2OkVlPT4yNDU3Nj09KDYxNDQwJkVlKSxpc0ZJRk86RWU9PjQwOTY9PSg2MTQ0MCZFZSksaXNTb2NrZXQ6RWU9PiEoNDkxNTIm'@; put 'fkVlKSxmbGFnc1RvUGVybWlzc2lvblN0cmluZyhFZSl7dmFyIFZlPVsiciIsInciLCJydyJdWzMmRWVdO3JldHVybiA1MTImRWUmJihWZSs9InciKSxWZX0sbm9kZVBlcm1pc3Npb25zOihFZSxWZSk9Pk90Lmlnbm9yZVBlcm1pc3Npb25zPzA6VmUuaW5jbHVkZXMoInIiKSYmISgyOTImRWUu'@; put 'bW9kZSl8fFZlLmluY2x1ZGVzKCJ3IikmJiEoMTQ2JkVlLm1vZGUpfHxWZS5pbmNsdWRlcygieCIpJiYhKDczJkVlLm1vZGUpPzI6MCxtYXlMb29rdXA6RWU9Pk90LmlzRGlyKEVlLm1vZGUpP090Lm5vZGVQZXJtaXNzaW9ucyhFZSwieCIpfHwoRWUubm9kZV9vcHMubG9va3VwPzA6Mik6NTQs'@; put 'bWF5Q3JlYXRlKEVlLFZlKXtpZighT3QuaXNEaXIoRWUubW9kZSkpcmV0dXJuIDU0O3RyeXtyZXR1cm4gT3QubG9va3VwTm9kZShFZSxWZSksMjB9Y2F0Y2h7fXJldHVybiBPdC5ub2RlUGVybWlzc2lvbnMoRWUsInd4Iil9LG1heURlbGV0ZShFZSxWZSxzdCl7dmFyIE10O3RyeXtNdD1PdC5s'@; put 'b29rdXBOb2RlKEVlLFZlKX1jYXRjaChhbil7cmV0dXJuIGFuLmVycm5vfXZhciBZdD1PdC5ub2RlUGVybWlzc2lvbnMoRWUsInd4Iik7aWYoWXQpcmV0dXJuIFl0O2lmKHN0KXtpZighT3QuaXNEaXIoTXQubW9kZSkpcmV0dXJuIDU0O2lmKE90LmlzUm9vdChNdCl8fE90LmdldFBhdGgoTXQp'@; put 'PT09T3QuY3dkKCkpcmV0dXJuIDEwfWVsc2UgaWYoT3QuaXNEaXIoTXQubW9kZSkpcmV0dXJuIDMxO3JldHVybiAwfSxtYXlPcGVuKEVlLFZlKXtpZighRWUpcmV0dXJuIDQ0O2lmKE90LmlzTGluayhFZS5tb2RlKSlyZXR1cm4gMzI7dmFyIHN0PU90LmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5n'@; put 'KFZlKTtyZXR1cm4gT3QuaXNEaXIoRWUubW9kZSkmJigiciIhPT1zdHx8NTc2JlZlKT8zMTpPdC5ub2RlUGVybWlzc2lvbnMoRWUsc3QpfSxjaGVja09wRXhpc3RzKEVlLFZlKXtpZighRWUpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoVmUpO3JldHVybiBFZX0sTUFYX09QRU5fRkRTOjQwOTYs'@; put 'bmV4dGZkKCl7Zm9yKHZhciBFZT0wO0VlPD1PdC5NQVhfT1BFTl9GRFM7RWUrKylpZighT3Quc3RyZWFtc1tFZV0pcmV0dXJuIEVlO3Rocm93IG5ldyBPdC5FcnJub0Vycm9yKDMzKX0sZ2V0U3RyZWFtQ2hlY2tlZChFZSl7dmFyIFZlPU90LmdldFN0cmVhbShFZSk7aWYoIVZlKXRocm93IG5l'@; put 'dyBPdC5FcnJub0Vycm9yKDgpO3JldHVybiBWZX0sZ2V0U3RyZWFtOkVlPT5PdC5zdHJlYW1zW0VlXSxjcmVhdGVTdHJlYW06KEVlLFZlPS0xKT0+KEVlPU9iamVjdC5hc3NpZ24obmV3IE90LkZTU3RyZWFtLEVlKSwtMT09VmUmJihWZT1PdC5uZXh0ZmQoKSksRWUuZmQ9VmUsT3Quc3RyZWFt'@; put 'c1tWZV09RWUsRWUpLGNsb3NlU3RyZWFtKEVlKXtPdC5zdHJlYW1zW0VlXT1udWxsfSxkdXBTdHJlYW0oRWUsVmU9LTEpe3ZhciBzdD1PdC5jcmVhdGVTdHJlYW0oRWUsVmUpO3JldHVybiBzdC5zdHJlYW1fb3BzPy5kdXA/LihzdCksc3R9LGRvU2V0QXR0cihFZSxWZSxzdCl7dmFyIE10PUVl'@; put 'Py5zdHJlYW1fb3BzLnNldGF0dHIsWXQ9TXQ/RWU6VmU7TXQ/Pz1WZS5ub2RlX29wcy5zZXRhdHRyLE90LmNoZWNrT3BFeGlzdHMoTXQsNjMpO3RyeXtNdChZdCxzdCl9Y2F0Y2goYW4pe3Rocm93IGFuIGluc3RhbmNlb2YgUmFuZ2VFcnJvcj9uZXcgT3QuRXJybm9FcnJvcigyMik6YW59fSxj'@; put 'aHJkZXZfc3RyZWFtX29wczp7b3BlbihFZSl7dmFyIFZlPU90LmdldERldmljZShFZS5ub2RlLnJkZXYpO0VlLnN0cmVhbV9vcHM9VmUuc3RyZWFtX29wcyxFZS5zdHJlYW1fb3BzLm9wZW4/LihFZSl9LGxsc2Vlaygpe3Rocm93IG5ldyBPdC5FcnJub0Vycm9yKDcwKX19LG1ham9yOkVlPT5F'@; put 'ZT4+OCxtaW5vcjpFZT0+MjU1JkVlLG1ha2VkZXY6KEVlLFZlKT0+RWU8PDh8VmUscmVnaXN0ZXJEZXZpY2UoRWUsVmUpe090LmRldmljZXNbRWVdPXtzdHJlYW1fb3BzOlZlfX0sZ2V0RGV2aWNlOkVlPT5PdC5kZXZpY2VzW0VlXSxnZXRNb3VudHMoRWUpe2Zvcih2YXIgVmU9W10sc3Q9W0Vl'@; put 'XTtzdC5sZW5ndGg7KXt2YXIgTXQ9c3QucG9wKCk7VmUucHVzaChNdCksc3QucHVzaCguLi5NdC5tb3VudHMpfXJldHVybiBWZX0sc3luY2ZzKEVlLFZlKXsiZnVuY3Rpb24iPT10eXBlb2YgRWUmJihWZT1FZSxFZT0hMSksT3Quc3luY0ZTUmVxdWVzdHMrKyxPdC5zeW5jRlNSZXF1ZXN0cz4x'@; put 'JiZPKGB3YXJuaW5nOiAke090LnN5bmNGU1JlcXVlc3RzfSBGUy5zeW5jZnMgb3BlcmF0aW9ucyBpbiBmbGlnaHQgYXQgb25jZSwgcHJvYmFibHkganVzdCBkb2luZyBleHRyYSB3b3JrYCk7dmFyIHN0PU90LmdldE1vdW50cyhPdC5yb290Lm1vdW50KSxNdD0wO2Z1bmN0aW9uIFl0KEtuKXty'@; put 'ZXR1cm4gT3Quc3luY0ZTUmVxdWVzdHMtLSxWZShLbil9ZnVuY3Rpb24gYW4oS24pe2lmKEtuKXJldHVybiBhbi5lcnJvcmVkP3ZvaWQgMDooYW4uZXJyb3JlZD0hMCxZdChLbikpOysrTXQ+PXN0Lmxlbmd0aCYmWXQobnVsbCl9Zm9yKHZhciBJbiBvZiBzdClJbi50eXBlLnN5bmNmcz9Jbi50'@; put 'eXBlLnN5bmNmcyhJbixFZSxhbik6YW4obnVsbCl9LG1vdW50KEVlLFZlLHN0KXt2YXIgYW4sTXQ9Ii8iPT09c3QsWXQ9IXN0O2lmKE10JiZPdC5yb290KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDEwKTtpZighTXQmJiFZdCl7dmFyIEluPU90Lmxvb2t1cFBhdGgoc3Qse2ZvbGxvd19tb3Vu'@; put 'dDohMX0pO2lmKHN0PUluLnBhdGgsT3QuaXNNb3VudHBvaW50KGFuPUluLm5vZGUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDEwKTtpZighT3QuaXNEaXIoYW4ubW9kZSkpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNTQpfXZhciBLbj17dHlwZTpFZSxvcHRzOlZlLG1vdW50cG9pbnQ6c3Qs'@; put 'bW91bnRzOltdfSxsaT1FZS5tb3VudChLbik7cmV0dXJuIGxpLm1vdW50PUtuLEtuLnJvb3Q9bGksTXQ/T3Qucm9vdD1saTphbiYmKGFuLm1vdW50ZWQ9S24sYW4ubW91bnQmJmFuLm1vdW50Lm1vdW50cy5wdXNoKEtuKSksbGl9LHVubW91bnQoRWUpe3ZhciBWZT1PdC5sb29rdXBQYXRoKEVl'@; put 'LHtmb2xsb3dfbW91bnQ6ITF9KTtpZighT3QuaXNNb3VudHBvaW50KFZlLm5vZGUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTt2YXIgc3Q9VmUubm9kZSxNdD1zdC5tb3VudGVkLFl0PU90LmdldE1vdW50cyhNdCk7Zm9yKHZhclthbixJbl1vZiBPYmplY3QuZW50cmllcyhPdC5uYW1l'@; put 'VGFibGUpKWZvcig7SW47KXt2YXIgS249SW4ubmFtZV9uZXh0O1l0LmluY2x1ZGVzKEluLm1vdW50KSYmT3QuZGVzdHJveU5vZGUoSW4pLEluPUtufXN0Lm1vdW50ZWQ9bnVsbDt2YXIgbGk9c3QubW91bnQubW91bnRzLmluZGV4T2YoTXQpO3N0Lm1vdW50Lm1vdW50cy5zcGxpY2UobGksMSl9'@; put 'LGxvb2t1cDooRWUsVmUpPT5FZS5ub2RlX29wcy5sb29rdXAoRWUsVmUpLG1rbm9kKEVlLFZlLHN0KXt2YXIgWXQ9T3QubG9va3VwUGF0aChFZSx7cGFyZW50OiEwfSkubm9kZSxhbj1qci5iYXNlbmFtZShFZSk7aWYoIWFuKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTtpZigiLiI9PT1h'@; put 'bnx8Ii4uIj09PWFuKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDIwKTt2YXIgSW49T3QubWF5Q3JlYXRlKFl0LGFuKTtpZihJbil0aHJvdyBuZXcgT3QuRXJybm9FcnJvcihJbik7aWYoIVl0Lm5vZGVfb3BzLm1rbm9kKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDYzKTtyZXR1cm4gWXQubm9k'@; put 'ZV9vcHMubWtub2QoWXQsYW4sVmUsc3QpfSxzdGF0ZnM6RWU9Pk90LnN0YXRmc05vZGUoT3QubG9va3VwUGF0aChFZSx7Zm9sbG93OiEwfSkubm9kZSksc3RhdGZzU3RyZWFtOkVlPT5PdC5zdGF0ZnNOb2RlKEVlLm5vZGUpLHN0YXRmc05vZGUoRWUpe3ZhciBWZT17YnNpemU6NDA5NixmcnNp'@; put 'emU6NDA5NixibG9ja3M6MWU2LGJmcmVlOjVlNSxiYXZhaWw6NWU1LGZpbGVzOk90Lm5leHRJbm9kZSxmZnJlZTpPdC5uZXh0SW5vZGUtMSxmc2lkOjQyLGZsYWdzOjIsbmFtZWxlbjoyNTV9O3JldHVybiBFZS5ub2RlX29wcy5zdGF0ZnMmJk9iamVjdC5hc3NpZ24oVmUsRWUubm9kZV9vcHMu'@; put 'c3RhdGZzKEVlLm1vdW50Lm9wdHMucm9vdCkpLFZlfSxjcmVhdGU6KEVlLFZlPTQzOCk9PihWZSY9NDA5NSxPdC5ta25vZChFZSxWZXw9MzI3NjgsMCkpLG1rZGlyOihFZSxWZT01MTEpPT4oVmUmPTEwMjMsT3QubWtub2QoRWUsVmV8PTE2Mzg0LDApKSxta2RpclRyZWUoRWUsVmUpe3ZhciBz'@; put 'dD1FZS5zcGxpdCgiLyIpLE10PSIiO2Zvcih2YXIgWXQgb2Ygc3QpaWYoWXQpeyhNdHx8anIuaXNBYnMoRWUpKSYmKE10Kz0iLyIpLE10Kz1ZdDt0cnl7T3QubWtkaXIoTXQsVmUpfWNhdGNoKGFuKXtpZigyMCE9YW4uZXJybm8pdGhyb3cgYW59fX0sbWtkZXY6KEVlLFZlLHN0KT0+KHR5cGVv'@; put 'ZiBzdD4idSImJihzdD1WZSxWZT00MzgpLE90Lm1rbm9kKEVlLFZlfD04MTkyLHN0KSksc3ltbGluayhFZSxWZSl7aWYoIVlvLnJlc29sdmUoRWUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDQ0KTt2YXIgTXQ9T3QubG9va3VwUGF0aChWZSx7cGFyZW50OiEwfSkubm9kZTtpZighTXQpdGhy'@; put 'b3cgbmV3IE90LkVycm5vRXJyb3IoNDQpO3ZhciBZdD1qci5iYXNlbmFtZShWZSksYW49T3QubWF5Q3JlYXRlKE10LFl0KTtpZihhbil0aHJvdyBuZXcgT3QuRXJybm9FcnJvcihhbik7aWYoIU10Lm5vZGVfb3BzLnN5bWxpbmspdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNjMpO3JldHVybiBN'@; put 'dC5ub2RlX29wcy5zeW1saW5rKE10LFl0LEVlKX0sbGluayhFZSxWZSxzdCl7dmFyIFl0PU90Lmxvb2t1cFBhdGgoVmUse3BhcmVudDohMH0pLm5vZGU7aWYoIVl0KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDQ0KTt2YXIgYW49anIuYmFzZW5hbWUoVmUpLEluPU90Lm1heUNyZWF0ZShZdCxh'@; put 'bik7aWYoSW4pdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoSW4pO2lmKCFZdC5ub2RlX29wcy5saW5rKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDM0KTtyZXR1cm4gWXQubm9kZV9vcHMubGluayhZdCxhbixFZSxzdCl9LHJlbmFtZShFZSxWZSl7dmFyIEtuLGxpLHN0PWpyLmRpcm5hbWUoRWUp'@; put 'LE10PWpyLmRpcm5hbWUoVmUpLFl0PWpyLmJhc2VuYW1lKEVlKSxhbj1qci5iYXNlbmFtZShWZSk7aWYoS249T3QubG9va3VwUGF0aChFZSx7cGFyZW50OiEwfSkubm9kZSxsaT1PdC5sb29rdXBQYXRoKFZlLHtwYXJlbnQ6ITB9KS5ub2RlLCFLbnx8IWxpKXRocm93IG5ldyBPdC5FcnJub0Vy'@; put 'cm9yKDQ0KTtpZihLbi5tb3VudCE9PWxpLm1vdW50KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDc1KTt2YXIgSWEsUWk9T3QubG9va3VwTm9kZShLbixZdCksUW89WW8ucmVsYXRpdmUoRWUsTXQpO2lmKCIuIiE9PVFvLmNoYXJBdCgwKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOCk7aWYo'@; put 'Ii4iIT09KFFvPVlvLnJlbGF0aXZlKFZlLHN0KSkuY2hhckF0KDApKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDU1KTt0cnl7SWE9T3QubG9va3VwTm9kZShsaSxhbil9Y2F0Y2h7fWlmKFFpIT09SWEpe3ZhciBKbz1PdC5pc0RpcihRaS5tb2RlKSxoYT1PdC5tYXlEZWxldGUoS24sWXQsSm8p'@; put 'O2lmKGhhKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKGhhKTtpZihoYT1JYT9PdC5tYXlEZWxldGUobGksYW4sSm8pOk90Lm1heUNyZWF0ZShsaSxhbikpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoaGEpO2lmKCFLbi5ub2RlX29wcy5yZW5hbWUpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNjMp'@; put 'O2lmKE90LmlzTW91bnRwb2ludChRaSl8fElhJiZPdC5pc01vdW50cG9pbnQoSWEpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDEwKTtpZihsaSE9PUtuJiYoaGE9T3Qubm9kZVBlcm1pc3Npb25zKEtuLCJ3IikpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKGhhKTtPdC5oYXNoUmVtb3ZlTm9k'@; put 'ZShRaSk7dHJ5e0tuLm5vZGVfb3BzLnJlbmFtZShRaSxsaSxhbiksUWkucGFyZW50PWxpfWNhdGNoKHdsKXt0aHJvdyB3bH1maW5hbGx5e090Lmhhc2hBZGROb2RlKFFpKX19fSxybWRpcihFZSl7dmFyIHN0PU90Lmxvb2t1cFBhdGgoRWUse3BhcmVudDohMH0pLm5vZGUsTXQ9anIuYmFzZW5h'@; put 'bWUoRWUpLFl0PU90Lmxvb2t1cE5vZGUoc3QsTXQpLGFuPU90Lm1heURlbGV0ZShzdCxNdCwhMCk7aWYoYW4pdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoYW4pO2lmKCFzdC5ub2RlX29wcy5ybWRpcil0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig2Myk7aWYoT3QuaXNNb3VudHBvaW50KFl0KSl0'@; put 'aHJvdyBuZXcgT3QuRXJybm9FcnJvcigxMCk7c3Qubm9kZV9vcHMucm1kaXIoc3QsTXQpLE90LmRlc3Ryb3lOb2RlKFl0KX0scmVhZGRpcihFZSl7dmFyIHN0PU90Lmxvb2t1cFBhdGgoRWUse2ZvbGxvdzohMH0pLm5vZGU7cmV0dXJuIE90LmNoZWNrT3BFeGlzdHMoc3Qubm9kZV9vcHMucmVh'@; put 'ZGRpciw1NCkoc3QpfSx1bmxpbmsoRWUpe3ZhciBzdD1PdC5sb29rdXBQYXRoKEVlLHtwYXJlbnQ6ITB9KS5ub2RlO2lmKCFzdCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0NCk7dmFyIE10PWpyLmJhc2VuYW1lKEVlKSxZdD1PdC5sb29rdXBOb2RlKHN0LE10KSxhbj1PdC5tYXlEZWxldGUo'@; put 'c3QsTXQsITEpO2lmKGFuKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKGFuKTtpZighc3Qubm9kZV9vcHMudW5saW5rKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDYzKTtpZihPdC5pc01vdW50cG9pbnQoWXQpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDEwKTtzdC5ub2RlX29wcy51bmxpbmso'@; put 'c3QsTXQpLE90LmRlc3Ryb3lOb2RlKFl0KX0scmVhZGxpbmsoRWUpe3ZhciBzdD1PdC5sb29rdXBQYXRoKEVlKS5ub2RlO2lmKCFzdCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0NCk7aWYoIXN0Lm5vZGVfb3BzLnJlYWRsaW5rKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTtyZXR1cm4g'@; put 'c3Qubm9kZV9vcHMucmVhZGxpbmsoc3QpfSxzdGF0KEVlLFZlKXt2YXIgTXQ9T3QubG9va3VwUGF0aChFZSx7Zm9sbG93OiFWZX0pLm5vZGU7cmV0dXJuIE90LmNoZWNrT3BFeGlzdHMoTXQubm9kZV9vcHMuZ2V0YXR0ciw2MykoTXQpfSxmc3RhdChFZSl7dmFyIFZlPU90LmdldFN0cmVhbUNo'@; put 'ZWNrZWQoRWUpLHN0PVZlLm5vZGUsTXQ9VmUuc3RyZWFtX29wcy5nZXRhdHRyLFl0PU10P1ZlOnN0O3JldHVybiBNdD8/PXN0Lm5vZGVfb3BzLmdldGF0dHIsT3QuY2hlY2tPcEV4aXN0cyhNdCw2MyksTXQoWXQpfSxsc3RhdDpFZT0+T3Quc3RhdChFZSwhMCksZG9DaG1vZChFZSxWZSxzdCxN'@; put 'dCl7T3QuZG9TZXRBdHRyKEVlLFZlLHttb2RlOjQwOTUmc3R8LTQwOTYmVmUubW9kZSxjdGltZTpEYXRlLm5vdygpLGRvbnRGb2xsb3c6TXR9KX0sY2htb2QoRWUsVmUsc3Qpe3ZhciBNdDtNdD0ic3RyaW5nIj09dHlwZW9mIEVlP090Lmxvb2t1cFBhdGgoRWUse2ZvbGxvdzohc3R9KS5ub2Rl'@; put 'OkVlLE90LmRvQ2htb2QobnVsbCxNdCxWZSxzdCl9LGxjaG1vZChFZSxWZSl7T3QuY2htb2QoRWUsVmUsITApfSxmY2htb2QoRWUsVmUpe3ZhciBzdD1PdC5nZXRTdHJlYW1DaGVja2VkKEVlKTtPdC5kb0NobW9kKHN0LHN0Lm5vZGUsVmUsITEpfSxkb0Nob3duKEVlLFZlLHN0KXtPdC5kb1Nl'@; put 'dEF0dHIoRWUsVmUse3RpbWVzdGFtcDpEYXRlLm5vdygpLGRvbnRGb2xsb3c6c3R9KX0sY2hvd24oRWUsVmUsc3QsTXQpe3ZhciBZdDtZdD0ic3RyaW5nIj09dHlwZW9mIEVlP090Lmxvb2t1cFBhdGgoRWUse2ZvbGxvdzohTXR9KS5ub2RlOkVlLE90LmRvQ2hvd24obnVsbCxZdCxNdCl9LGxj'@; put 'aG93bihFZSxWZSxzdCl7T3QuY2hvd24oRWUsVmUsc3QsITApfSxmY2hvd24oRWUsVmUsc3Qpe3ZhciBNdD1PdC5nZXRTdHJlYW1DaGVja2VkKEVlKTtPdC5kb0Nob3duKE10LE10Lm5vZGUsITEpfSxkb1RydW5jYXRlKEVlLFZlLHN0KXtpZihPdC5pc0RpcihWZS5tb2RlKSl0aHJvdyBuZXcg'@; put 'T3QuRXJybm9FcnJvcigzMSk7aWYoIU90LmlzRmlsZShWZS5tb2RlKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOCk7dmFyIE10PU90Lm5vZGVQZXJtaXNzaW9ucyhWZSwidyIpO2lmKE10KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKE10KTtPdC5kb1NldEF0dHIoRWUsVmUse3NpemU6c3Qs'@; put 'dGltZXN0YW1wOkRhdGUubm93KCl9KX0sdHJ1bmNhdGUoRWUsVmUpe2lmKFZlPDApdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoMjgpO3ZhciBzdDtzdD0ic3RyaW5nIj09dHlwZW9mIEVlP090Lmxvb2t1cFBhdGgoRWUse2ZvbGxvdzohMH0pLm5vZGU6RWUsT3QuZG9UcnVuY2F0ZShudWxsLHN0'@; put 'LFZlKX0sZnRydW5jYXRlKEVlLFZlKXt2YXIgc3Q9T3QuZ2V0U3RyZWFtQ2hlY2tlZChFZSk7aWYoVmU8MHx8ISgyMDk3MTU1JnN0LmZsYWdzKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOCk7T3QuZG9UcnVuY2F0ZShzdCxzdC5ub2RlLFZlKX0sdXRpbWUoRWUsVmUsc3QsTXQpe3ZhciBZ'@; put 'dD1PdC5sb29rdXBQYXRoKEVlLHtmb2xsb3c6IU10fSk7T3QuZG9TZXRBdHRyKG51bGwsWXQubm9kZSx7YXRpbWU6VmUsbXRpbWU6c3QsZG9udEZvbGxvdzpNdH0pfSxvcGVuKEVlLFZlLHN0PTQzOCl7aWYoIiI9PT1FZSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0NCk7dmFyIE10LFl0O2lm'@; put 'KFZlPShFZT0+e2lmKCJzdHJpbmciIT10eXBlb2YgRWUpcmV0dXJuIEVlO3ZhciBzdD17cjowLCJyKyI6Mix3OjU3NywidysiOjU3OCxhOjEwODksImErIjoxMDkwfVtFZV07aWYodHlwZW9mIHN0PiJ1Iil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZmlsZSBvcGVuIG1vZGU6ICR7RWV9YCk7'@; put 'cmV0dXJuIHN0fSkoVmUpLHN0PTY0JlZlPzQwOTUmc3R8MzI3Njg6MCwib2JqZWN0Ij09dHlwZW9mIEVlKU10PUVlO2Vsc2V7WXQ9RWUuZW5kc1dpdGgoIi8iKTt2YXIgYW49T3QubG9va3VwUGF0aChFZSx7Zm9sbG93OiEoMTMxMDcyJlZlKSxub2VudF9va2F5OiEwfSk7TXQ9YW4ubm9kZSxF'@; put 'ZT1hbi5wYXRofXZhciBJbj0hMTtpZig2NCZWZSlpZihNdCl7aWYoMTI4JlZlKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDIwKX1lbHNle2lmKFl0KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDMxKTtNdD1PdC5ta25vZChFZSw1MTF8c3QsMCksSW49ITB9aWYoIU10KXRocm93IG5ldyBPdC5F'@; put 'cnJub0Vycm9yKDQ0KTtpZihPdC5pc0NocmRldihNdC5tb2RlKSYmKFZlJj0tNTEzKSw2NTUzNiZWZSYmIU90LmlzRGlyKE10Lm1vZGUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDU0KTtpZighSW4pe3ZhciBLbj1PdC5tYXlPcGVuKE10LFZlKTtpZihLbil0aHJvdyBuZXcgT3QuRXJybm9F'@; put 'cnJvcihLbil9NTEyJlZlJiYhSW4mJk90LnRydW5jYXRlKE10LDApLFZlJj0tMTMxNzEzO3ZhciBsaT1PdC5jcmVhdGVTdHJlYW0oe25vZGU6TXQscGF0aDpPdC5nZXRQYXRoKE10KSxmbGFnczpWZSxzZWVrYWJsZTohMCxwb3NpdGlvbjowLHN0cmVhbV9vcHM6TXQuc3RyZWFtX29wcyx1bmdv'@; put 'dHRlbjpbXSxlcnJvcjohMX0pO3JldHVybiBsaS5zdHJlYW1fb3BzLm9wZW4mJmxpLnN0cmVhbV9vcHMub3BlbihsaSksSW4mJk90LmNobW9kKE10LDUxMSZzdCksbGl9LGNsb3NlKEVlKXtpZihPdC5pc0Nsb3NlZChFZSkpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoOCk7RWUuZ2V0ZGVudHMm'@; put 'JihFZS5nZXRkZW50cz1udWxsKSxFZS5ub2RlPy5ub3RpZnlMaXN0ZW5lcnMoMzIpO3RyeXtFZS5zdHJlYW1fb3BzLmNsb3NlJiZFZS5zdHJlYW1fb3BzLmNsb3NlKEVlKX1jYXRjaChWZSl7dGhyb3cgVmV9ZmluYWxseXtPdC5jbG9zZVN0cmVhbShFZS5mZCl9RWUuZmQ9bnVsbH0saXNDbG9z'@; put 'ZWQ6RWU9Pm51bGw9PT1FZS5mZCxsbHNlZWsoRWUsVmUsc3Qpe2lmKE90LmlzQ2xvc2VkKEVlKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig4KTtpZighRWUuc2Vla2FibGV8fCFFZS5zdHJlYW1fb3BzLmxsc2Vlayl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig3MCk7aWYoMCE9c3QmJjEhPXN0'@; put 'JiYyIT1zdCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOCk7cmV0dXJuIEVlLnBvc2l0aW9uPUVlLnN0cmVhbV9vcHMubGxzZWVrKEVlLFZlLHN0KSxFZS51bmdvdHRlbj1bXSxFZS5wb3NpdGlvbn0scmVhZChFZSxWZSxzdCxNdCxZdCl7aWYoTXQ8MHx8WXQ8MCl0aHJvdyBuZXcgT3QuRXJy'@; put 'bm9FcnJvcigyOCk7aWYoT3QuaXNDbG9zZWQoRWUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDgpO2lmKDE9PSgyMDk3MTU1JkVlLmZsYWdzKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig4KTtpZihPdC5pc0RpcihFZS5ub2RlLm1vZGUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDMxKTtp'@; put 'ZighRWUuc3RyZWFtX29wcy5yZWFkKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTt2YXIgYW49dHlwZW9mIFl0PCJ1IjtpZihhbil7aWYoIUVlLnNlZWthYmxlKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDcwKX1lbHNlIFl0PUVlLnBvc2l0aW9uO3ZhciBJbj1FZS5zdHJlYW1fb3BzLnJl'@; put 'YWQoRWUsVmUsc3QsTXQsWXQpO3JldHVybiBhbnx8KEVlLnBvc2l0aW9uKz1JbiksSW59LHdyaXRlKEVlLFZlLHN0LE10LFl0LGFuKXtpZihNdDwwfHxZdDwwKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTtpZihPdC5pc0Nsb3NlZChFZSkpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoOCk7'@; put 'aWYoISgyMDk3MTU1JkVlLmZsYWdzKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig4KTtpZihPdC5pc0RpcihFZS5ub2RlLm1vZGUpKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDMxKTtpZighRWUuc3RyZWFtX29wcy53cml0ZSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOCk7RWUuc2Vla2Fi'@; put 'bGUmJjEwMjQmRWUuZmxhZ3MmJk90Lmxsc2VlayhFZSwwLDIpO3ZhciBJbj10eXBlb2YgWXQ8InUiO2lmKEluKXtpZighRWUuc2Vla2FibGUpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNzApfWVsc2UgWXQ9RWUucG9zaXRpb247dmFyIEtuPUVlLnN0cmVhbV9vcHMud3JpdGUoRWUsVmUsc3Qs'@; put 'TXQsWXQsYW4pO3JldHVybiBJbnx8KEVlLnBvc2l0aW9uKz1LbiksS259LG1tYXAoRWUsVmUsc3QsTXQsWXQpe2lmKDImTXQmJiEoMiZZdCkmJjIhPSgyMDk3MTU1JkVlLmZsYWdzKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyKTtpZigxPT0oMjA5NzE1NSZFZS5mbGFncykpdGhyb3cgbmV3'@; put 'IE90LkVycm5vRXJyb3IoMik7aWYoIUVlLnN0cmVhbV9vcHMubW1hcCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0Myk7aWYoIVZlKXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDI4KTtyZXR1cm4gRWUuc3RyZWFtX29wcy5tbWFwKEVlLFZlLHN0LE10LFl0KX0sbXN5bmM6KEVlLFZlLHN0LE10'@; put 'LFl0KT0+RWUuc3RyZWFtX29wcy5tc3luYz9FZS5zdHJlYW1fb3BzLm1zeW5jKEVlLFZlLHN0LE10LFl0KTowLGlvY3RsKEVlLFZlLHN0KXtpZighRWUuc3RyZWFtX29wcy5pb2N0bCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig1OSk7cmV0dXJuIEVlLnN0cmVhbV9vcHMuaW9jdGwoRWUsVmUs'@; put 'c3QpfSxyZWFkRmlsZShFZSxWZT17fSl7VmUuZmxhZ3M9VmUuZmxhZ3M/PzAsVmUuZW5jb2Rpbmc9VmUuZW5jb2Rpbmc/PyJiaW5hcnkiLCJ1dGY4IiE9PVZlLmVuY29kaW5nJiYiYmluYXJ5IiE9PVZlLmVuY29kaW5nJiZxdChgSW52YWxpZCBlbmNvZGluZyB0eXBlICIke1ZlLmVuY29kaW5n'@; put 'fSJgKTt2YXIgc3Q9T3Qub3BlbihFZSxWZS5mbGFncyksWXQ9T3Quc3RhdChFZSkuc2l6ZSxhbj1uZXcgVWludDhBcnJheShZdCk7cmV0dXJuIE90LnJlYWQoc3QsYW4sMCxZdCwwKSwidXRmOCI9PT1WZS5lbmNvZGluZyYmKGFuPVZuKGFuKSksT3QuY2xvc2Uoc3QpLGFufSx3cml0ZUZpbGUo'@; put 'RWUsVmUsc3Q9e30pe3N0LmZsYWdzPXN0LmZsYWdzPz81Nzc7dmFyIE10PU90Lm9wZW4oRWUsc3QuZmxhZ3Msc3QubW9kZSk7VmU9X2QoVmUpLE90LndyaXRlKE10LFZlLDAsVmUuYnl0ZUxlbmd0aCx2b2lkIDAsc3QuY2FuT3duKSxPdC5jbG9zZShNdCl9LGN3ZDooKT0+T3QuY3VycmVudFBh'@; put 'dGgsY2hkaXIoRWUpe3ZhciBWZT1PdC5sb29rdXBQYXRoKEVlLHtmb2xsb3c6ITB9KTtpZihudWxsPT09VmUubm9kZSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0NCk7aWYoIU90LmlzRGlyKFZlLm5vZGUubW9kZSkpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNTQpO3ZhciBzdD1PdC5ub2Rl'@; put 'UGVybWlzc2lvbnMoVmUubm9kZSwieCIpO2lmKHN0KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKHN0KTtPdC5jdXJyZW50UGF0aD1WZS5wYXRofSxjcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKXtPdC5ta2RpcigiL3RtcCIpLE90Lm1rZGlyKCIvaG9tZSIpLE90Lm1rZGlyKCIvaG9tZS93ZWJf'@; put 'dXNlciIpfSxjcmVhdGVEZWZhdWx0RGV2aWNlcygpe090Lm1rZGlyKCIvZGV2IiksT3QucmVnaXN0ZXJEZXZpY2UoT3QubWFrZWRldigxLDMpLHtyZWFkOigpPT4wLHdyaXRlOihNdCxZdCxhbixJbixLbik9PkluLGxsc2VlazooKT0+MH0pLE90Lm1rZGV2KCIvZGV2L251bGwiLE90Lm1ha2Vk'@; put 'ZXYoMSwzKSksVGgucmVnaXN0ZXIoT3QubWFrZWRldig1LDApLFRoLmRlZmF1bHRfdHR5X29wcyksVGgucmVnaXN0ZXIoT3QubWFrZWRldig2LDApLFRoLmRlZmF1bHRfdHR5MV9vcHMpLE90Lm1rZGV2KCIvZGV2L3R0eSIsT3QubWFrZWRldig1LDApKSxPdC5ta2RldigiL2Rldi90dHkxIixP'@; put 'dC5tYWtlZGV2KDYsMCkpO3ZhciBFZT1uZXcgVWludDhBcnJheSgxMDI0KSxWZT0wLHN0PSgpPT4oMD09PVZlJiYoZ28oRWUpLFZlPUVlLmJ5dGVMZW5ndGgpLEVlWy0tVmVdKTtPdC5jcmVhdGVEZXZpY2UoIi9kZXYiLCJyYW5kb20iLHN0KSxPdC5jcmVhdGVEZXZpY2UoIi9kZXYiLCJ1cmFu'@; put 'ZG9tIixzdCksT3QubWtkaXIoIi9kZXYvc2htIiksT3QubWtkaXIoIi9kZXYvc2htL3RtcCIpfSxjcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXMoKXtPdC5ta2RpcigiL3Byb2MiKTt2YXIgRWU9T3QubWtkaXIoIi9wcm9jL3NlbGYiKTtPdC5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpLE90Lm1vdW50'@; put 'KHttb3VudCgpe3ZhciBWZT1PdC5jcmVhdGVOb2RlKEVlLCJmZCIsMTY4OTUsNzMpO3JldHVybiBWZS5zdHJlYW1fb3BzPXtsbHNlZWs6R2Euc3RyZWFtX29wcy5sbHNlZWt9LFZlLm5vZGVfb3BzPXtsb29rdXAoc3QsTXQpe3ZhciBZdD0rTXQsYW49T3QuZ2V0U3RyZWFtQ2hlY2tlZChZdCks'@; put 'SW49e3BhcmVudDpudWxsLG1vdW50Onttb3VudHBvaW50OiJmYWtlIn0sbm9kZV9vcHM6e3JlYWRsaW5rOigpPT5hbi5wYXRofSxpZDpZdCsxfTtyZXR1cm4gSW4ucGFyZW50PUluLElufSxyZWFkZGlyOigpPT5BcnJheS5mcm9tKE90LnN0cmVhbXMuZW50cmllcygpKS5maWx0ZXIoKFtzdCxN'@; put 'dF0pPT5NdCkubWFwKChbc3QsTXRdKT0+c3QudG9TdHJpbmcoKSl9LFZlfX0se30sIi9wcm9jL3NlbGYvZmQiKX0sY3JlYXRlU3RhbmRhcmRTdHJlYW1zKEVlLFZlLHN0KXtFZT9PdC5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRpbiIsRWUpOk90LnN5bWxpbmsoIi9kZXYvdHR5IiwiL2Rldi9z'@; put 'dGRpbiIpLFZlP090LmNyZWF0ZURldmljZSgiL2RldiIsInN0ZG91dCIsbnVsbCxWZSk6T3Quc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZG91dCIpLHN0P090LmNyZWF0ZURldmljZSgiL2RldiIsInN0ZGVyciIsbnVsbCxzdCk6T3Quc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRl'@; put 'cnIiKSxPdC5vcGVuKCIvZGV2L3N0ZGluIiwwKSxPdC5vcGVuKCIvZGV2L3N0ZG91dCIsMSksT3Qub3BlbigiL2Rldi9zdGRlcnIiLDEpfSxzdGF0aWNJbml0KCl7T3QubmFtZVRhYmxlPW5ldyBBcnJheSg0MDk2KSxPdC5tb3VudChHYSx7fSwiLyIpLE90LmNyZWF0ZURlZmF1bHREaXJlY3Rv'@; put 'cmllcygpLE90LmNyZWF0ZURlZmF1bHREZXZpY2VzKCksT3QuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCksT3QuZmlsZXN5c3RlbXM9e01FTUZTOkdhfX0saW5pdChFZSxWZSxzdCl7T3QuaW5pdGlhbGl6ZWQ9ITAsT3QuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKEVlLFZlLHN0KX0scXVpdCgp'@; put 'e2Zvcih2YXIgRWUgb2YoT3QuaW5pdGlhbGl6ZWQ9ITEsT3Quc3RyZWFtcykpRWUmJk90LmNsb3NlKEVlKX0sZmluZE9iamVjdChFZSxWZSl7dmFyIHN0PU90LmFuYWx5emVQYXRoKEVlLFZlKTtyZXR1cm4gc3QuZXhpc3RzP3N0Lm9iamVjdDpudWxsfSxhbmFseXplUGF0aChFZSxWZSl7dHJ5'@; put 'e0VlPShzdD1PdC5sb29rdXBQYXRoKEVlLHtmb2xsb3c6IVZlfSkpLnBhdGh9Y2F0Y2h7fXZhciBNdD17aXNSb290OiExLGV4aXN0czohMSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOiExLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6'@; put 'bnVsbH07dHJ5e3ZhciBzdD1PdC5sb29rdXBQYXRoKEVlLHtwYXJlbnQ6ITB9KTtNdC5wYXJlbnRFeGlzdHM9ITAsTXQucGFyZW50UGF0aD1zdC5wYXRoLE10LnBhcmVudE9iamVjdD1zdC5ub2RlLE10Lm5hbWU9anIuYmFzZW5hbWUoRWUpLHN0PU90Lmxvb2t1cFBhdGgoRWUse2ZvbGxvdzoh'@; put 'VmV9KSxNdC5leGlzdHM9ITAsTXQucGF0aD1zdC5wYXRoLE10Lm9iamVjdD1zdC5ub2RlLE10Lm5hbWU9c3Qubm9kZS5uYW1lLE10LmlzUm9vdD0iLyI9PT1zdC5wYXRofWNhdGNoKFl0KXtNdC5lcnJvcj1ZdC5lcnJub31yZXR1cm4gTXR9LGNyZWF0ZVBhdGgoRWUsVmUsc3QsTXQpe0VlPSJz'@; put 'dHJpbmciPT10eXBlb2YgRWU/RWU6T3QuZ2V0UGF0aChFZSk7Zm9yKHZhciBZdD1WZS5zcGxpdCgiLyIpLnJldmVyc2UoKTtZdC5sZW5ndGg7KXt2YXIgYW49WXQucG9wKCk7aWYoYW4pe3ZhciBJbj1qci5qb2luMihFZSxhbik7dHJ5e090Lm1rZGlyKEluKX1jYXRjaChLbil7aWYoMjAhPUtu'@; put 'LmVycm5vKXRocm93IEtufUVlPUlufX1yZXR1cm4gSW59LGNyZWF0ZUZpbGUoRWUsVmUsc3QsTXQsWXQpe3ZhciBhbj1qci5qb2luMigic3RyaW5nIj09dHlwZW9mIEVlP0VlOk90LmdldFBhdGgoRWUpLFZlKSxJbj1MMShNdCxZdCk7cmV0dXJuIE90LmNyZWF0ZShhbixJbil9LGNyZWF0ZURh'@; put 'dGFGaWxlKEVlLFZlLHN0LE10LFl0LGFuKXt2YXIgSW49VmU7RWUmJihFZT0ic3RyaW5nIj09dHlwZW9mIEVlP0VlOk90LmdldFBhdGgoRWUpLEluPVZlP2pyLmpvaW4yKEVlLFZlKTpFZSk7dmFyIEtuPUwxKE10LFl0KSxsaT1PdC5jcmVhdGUoSW4sS24pO2lmKHN0KXtzdD1fZChzdCksT3Qu'@; put 'Y2htb2QobGksMTQ2fEtuKTt2YXIgUWk9T3Qub3BlbihsaSw1NzcpO090LndyaXRlKFFpLHN0LDAsc3QubGVuZ3RoLDAsYW4pLE90LmNsb3NlKFFpKSxPdC5jaG1vZChsaSxLbil9fSxjcmVhdGVEZXZpY2UoRWUsVmUsc3QsTXQpe3ZhciBZdD1qci5qb2luMigic3RyaW5nIj09dHlwZW9mIEVl'@; put 'P0VlOk90LmdldFBhdGgoRWUpLFZlKSxhbj1MMSghIXN0LCEhTXQpO090LmNyZWF0ZURldmljZS5tYWpvcj8/PTY0O3ZhciBJbj1PdC5tYWtlZGV2KE90LmNyZWF0ZURldmljZS5tYWpvcisrLDApO3JldHVybiBPdC5yZWdpc3RlckRldmljZShJbix7b3BlbihLbil7S24uc2Vla2FibGU9ITF9'@; put 'LGNsb3NlKEtuKXtNdD8uYnVmZmVyPy5sZW5ndGgmJk10KDEwKX0scmVhZChLbixsaSxRaSxRbyxJYSl7Zm9yKHZhciBKbz0wLGhhPTA7aGE8UW87aGErKyl7dmFyIHdsO3RyeXt3bD1zdCgpfWNhdGNoe3Rocm93IG5ldyBPdC5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT13bCYmMD09PUpv'@; put 'KXRocm93IG5ldyBPdC5FcnJub0Vycm9yKDYpO2lmKG51bGw9PXdsKWJyZWFrO0pvKyssbGlbUWkraGFdPXdsfXJldHVybiBKbyYmKEtuLm5vZGUuYXRpbWU9RGF0ZS5ub3coKSksSm99LHdyaXRlKEtuLGxpLFFpLFFvLElhKXtmb3IodmFyIEpvPTA7Sm88UW87Sm8rKyl0cnl7TXQobGlbUWkr'@; put 'Sm9dKX1jYXRjaHt0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOSl9cmV0dXJuIFFvJiYoS24ubm9kZS5tdGltZT1Lbi5ub2RlLmN0aW1lPURhdGUubm93KCkpLEpvfX0pLE90Lm1rZGV2KFl0LGFuLEluKX0sZm9yY2VMb2FkRmlsZShFZSl7aWYoRWUuaXNEZXZpY2V8fEVlLmlzRm9sZGVyfHxF'@; put 'ZS5saW5rfHxFZS5jb250ZW50cylyZXR1cm4hMDtpZihnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0KXF0KCJMYXp5IGxvYWRpbmcgc2hvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgKGNvbnRlbnRzIHNldCkgaW4gY3JlYXRlTGF6eUZpbGUsIGJ1dCBpdCB3YXMgbm90LiBMYXp5IGxvYWRpbmcg'@; put 'b25seSB3b3JrcyBpbiB3ZWIgd29ya2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIG9uIHRoZSBtYWluIHRocmVhZC4iKTtlbHNlIHRyeXtFZS5jb250ZW50cz11bmRlZmluZWQoRWUudXJsKX1jYXRjaHt0aHJvdyBuZXcgT3QuRXJybm9FcnJvcigyOSl9'@; put 'fSxjcmVhdGVMYXp5RmlsZShFZSxWZSxzdCxNdCxZdCl7Y2xhc3MgYW57bGVuZ3RoS25vd249ITE7Y2h1bmtzPVtdO2dldChKbyl7aWYoIShKbz50aGlzLmxlbmd0aC0xfHxKbzwwKSl7dmFyIGhhPUpvJXRoaXMuY2h1bmtTaXplO3JldHVybiB0aGlzLmdldHRlcihKby90aGlzLmNodW5rU2l6'@; put 'ZXwwKVtoYV19fXNldERhdGFHZXR0ZXIoSm8pe3RoaXMuZ2V0dGVyPUpvfWNhY2hlTGVuZ3RoKCl7dmFyIEpvPW5ldyBYTUxIdHRwUmVxdWVzdDtKby5vcGVuKCJIRUFEIixzdCwhMSksSm8uc2VuZChudWxsKSxKby5zdGF0dXM+PTIwMCYmSm8uc3RhdHVzPDMwMHx8MzA0PT09Sm8uc3RhdHVz'@; put 'fHxxdCgiQ291bGRuJ3QgbG9hZCAiK3N0KyIuIFN0YXR1czogIitKby5zdGF0dXMpO3ZhciB3bCxoYT1OdW1iZXIoSm8uZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikpLGt1PSh3bD1Kby5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmImJ5dGVzIj09PXds'@; put 'LFhjPSh3bD1Kby5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1FbmNvZGluZyIpKSYmImd6aXAiPT09d2wsJGw9MTA0ODU3NjtrdXx8KCRsPWhhKTt2YXIgWGg9dGhpcztYaC5zZXREYXRhR2V0dGVyKGFwPT57dmFyIHBmPWFwKiRsLHhoPShhcCsxKSokbC0xO3JldHVybiB4aD1NYXRoLm1p'@; put 'bih4aCxoYS0xKSx0eXBlb2YgWGguY2h1bmtzW2FwXT4idSImJihYaC5jaHVua3NbYXBdPSgoYXAscGYpPT57YXA+cGYmJnF0KGBpbnZhbGlkIHJhbmdlICgke2FwfSwgJHtwZn0pIG9yIG5vIGJ5dGVzIHJlcXVlc3RlZCFgKSxwZj5oYS0xJiZxdChgb25seSAke2hhfSBieXRlcyBhdmFpbGFi'@; put 'bGUhIHByb2dyYW1tZXIgZXJyb3IhYCk7dmFyIHhoPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4geGgub3BlbigiR0VUIixzdCwhMSksaGEhPT0kbCYmeGguc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2FwKyItIitwZikseGgucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIs'@; put 'eGgub3ZlcnJpZGVNaW1lVHlwZSYmeGgub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpLHhoLnNlbmQobnVsbCkseGguc3RhdHVzPj0yMDAmJnhoLnN0YXR1czwzMDB8fDMwND09PXhoLnN0YXR1c3x8cXQoIkNvdWxkbid0IGxvYWQgIitzdCsi'@; put 'LiBTdGF0dXM6ICIreGguc3RhdHVzKSx2b2lkIDAhPT14aC5yZXNwb25zZT9uZXcgVWludDhBcnJheSh4aC5yZXNwb25zZXx8W10pOmJsKHhoLnJlc3BvbnNlVGV4dD8/IiIsITApfSkocGYseGgpKSx0eXBlb2YgWGguY2h1bmtzW2FwXT4idSImJnF0KCJkb1hIUiBmYWlsZWQhIiksWGguY2h1'@; put 'bmtzW2FwXX0pLChYY3x8IWhhKSYmKCRsPWhhPTEsaGE9dGhpcy5nZXR0ZXIoMCkubGVuZ3RoLCRsPWhhLEUoIkxhenlGaWxlcyBvbiBnemlwIGZvcmNlcyBkb3dubG9hZCBvZiB0aGUgd2hvbGUgZmlsZSB3aGVuIGxlbmd0aCBpcyBhY2Nlc3NlZCIpKSx0aGlzLl9sZW5ndGg9aGEsdGhpcy5f'@; put 'Y2h1bmtTaXplPSRsLHRoaXMubGVuZ3RoS25vd249ITB9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxlbmd0aEtub3dufHx0aGlzLmNhY2hlTGVuZ3RoKCksdGhpcy5fbGVuZ3RofWdldCBjaHVua1NpemUoKXtyZXR1cm4gdGhpcy5sZW5ndGhLbm93bnx8dGhpcy5jYWNoZUxlbmd0aCgpLHRo'@; put 'aXMuX2NodW5rU2l6ZX19aWYoZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCl7cXQoIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2Mi'@; put 'KTt2YXIgS249e2lzRGV2aWNlOiExLGNvbnRlbnRzOm5ldyBhbn19ZWxzZSBLbj17aXNEZXZpY2U6ITEsdXJsOnN0fTt2YXIgbGk9T3QuY3JlYXRlRmlsZShFZSxWZSxLbixNdCxZdCk7S24uY29udGVudHM/bGkuY29udGVudHM9S24uY29udGVudHM6S24udXJsJiYobGkuY29udGVudHM9bnVs'@; put 'bCxsaS51cmw9S24udXJsKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsaSx7dXNlZEJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGh9fX0pO3ZhciBRaT17fTtmb3IobGV0W0lhLEpvXW9mIE9iamVjdC5lbnRyaWVzKGxpLnN0cmVhbV9vcHMpKVFpW0lh'@; put 'XT0oLi4uaGEpPT4oT3QuZm9yY2VMb2FkRmlsZShsaSksSm8oLi4uaGEpKTtmdW5jdGlvbiBRbyhJYSxKbyxoYSx3bCxrdSl7dmFyIFhjPUlhLm5vZGUuY29udGVudHM7aWYoa3U+PVhjLmxlbmd0aClyZXR1cm4gMDt2YXIgJGw9TWF0aC5taW4oWGMubGVuZ3RoLWt1LHdsKTtpZihYYy5zbGlj'@; put 'ZSlmb3IodmFyIG8wPTA7bzA8JGw7bzArKylKb1toYStvMF09WGNba3UrbzBdO2Vsc2UgZm9yKG8wPTA7bzA8JGw7bzArKylKb1toYStvMF09WGMuZ2V0KGt1K28wKTtyZXR1cm4gJGx9cmV0dXJuIFFpLnJlYWQ9KElhLEpvLGhhLHdsLGt1KT0+KE90LmZvcmNlTG9hZEZpbGUobGkpLFFvKElh'@; put 'LEpvLGhhLHdsLGt1KSksUWkubW1hcD0oSWEsSm8saGEsd2wsa3UpPT57T3QuZm9yY2VMb2FkRmlsZShsaSk7dmFyIFhjPXN5KEpvKTtpZighWGMpdGhyb3cgbmV3IE90LkVycm5vRXJyb3IoNDgpO3JldHVybiBRbyhJYSxUbyxYYyxKbyxoYSkse3B0cjpYYyxhbGxvY2F0ZWQ6ITB9fSxsaS5z'@; put 'dHJlYW1fb3BzPVFpLGxpfX0sQXU9e2N1cnJlbnRVbWFzazoxOCxjYWxjdWxhdGVBdChFZSxWZSxzdCl7aWYoanIuaXNBYnMoVmUpKXJldHVybiBWZTt2YXIgTXQ7aWYoTXQ9LTEwMD09PUVlP090LmN3ZCgpOkF1LmdldFN0cmVhbUZyb21GRChFZSkucGF0aCwwPT1WZS5sZW5ndGgpe2lmKCFz'@; put 'dCl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0NCk7cmV0dXJuIE10fXJldHVybiBNdCsiLyIrVmV9LHdyaXRlU3RhdChFZSxWZSl7YW9bRWU+PjJdPVZlLmRldixhb1tFZSs0Pj4yXT1WZS5tb2RlLGFvW0VlKzg+PjJdPVZlLm5saW5rLGFvW0VlKzEyPj4yXT1WZS51aWQsYW9bRWUrMTY+PjJd'@; put 'PVZlLmdpZCxhb1tFZSsyMD4+Ml09VmUucmRldixlaT1bVmUuc2l6ZT4+PjAsKGZyPVZlLnNpemUsK01hdGguYWJzKGZyKT49MT9mcj4wPytNYXRoLmZsb29yKGZyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGZyLSsofn5mcj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhpW0Vl'@; put 'KzI0Pj4yXT1laVswXSx4aVtFZSsyOD4+Ml09ZWlbMV0seGlbRWUrMzI+PjJdPTQwOTYseGlbRWUrMzY+PjJdPVZlLmJsb2Nrczt2YXIgc3Q9VmUuYXRpbWUuZ2V0VGltZSgpLE10PVZlLm10aW1lLmdldFRpbWUoKSxZdD1WZS5jdGltZS5nZXRUaW1lKCk7cmV0dXJuIGVpPVtNYXRoLmZsb29y'@; put 'KHN0LzFlMyk+Pj4wLChmcj1NYXRoLmZsb29yKHN0LzFlMyksK01hdGguYWJzKGZyKT49MT9mcj4wPytNYXRoLmZsb29yKGZyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGZyLSsofn5mcj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhpW0VlKzQwPj4yXT1laVswXSx4aVtFZSs0'@; put 'ND4+Ml09ZWlbMV0sYW9bRWUrNDg+PjJdPXN0JTFlMyoxZTMqMWUzLGVpPVtNYXRoLmZsb29yKE10LzFlMyk+Pj4wLChmcj1NYXRoLmZsb29yKE10LzFlMyksK01hdGguYWJzKGZyKT49MT9mcj4wPytNYXRoLmZsb29yKGZyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGZyLSsofn5m'@; put 'cj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhpW0VlKzU2Pj4yXT1laVswXSx4aVtFZSs2MD4+Ml09ZWlbMV0sYW9bRWUrNjQ+PjJdPU10JTFlMyoxZTMqMWUzLGVpPVtNYXRoLmZsb29yKFl0LzFlMyk+Pj4wLChmcj1NYXRoLmZsb29yKFl0LzFlMyksK01hdGguYWJzKGZyKT49MT9mcj4w'@; put 'PytNYXRoLmZsb29yKGZyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGZyLSsofn5mcj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhpW0VlKzcyPj4yXT1laVswXSx4aVtFZSs3Nj4+Ml09ZWlbMV0sYW9bRWUrODA+PjJdPVl0JTFlMyoxZTMqMWUzLGVpPVtWZS5pbm8+Pj4wLChm'@; put 'cj1WZS5pbm8sK01hdGguYWJzKGZyKT49MT9mcj4wPytNYXRoLmZsb29yKGZyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGZyLSsofn5mcj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhpW0VlKzg4Pj4yXT1laVswXSx4aVtFZSs5Mj4+Ml09ZWlbMV0sMH0sd3JpdGVTdGF0RnMo'@; put 'RWUsVmUpe2FvW0VlKzQ+PjJdPVZlLmJzaXplLGFvW0VlKzYwPj4yXT1WZS5ic2l6ZSxlaT1bVmUuYmxvY2tzPj4+MCwoZnI9VmUuYmxvY2tzLCtNYXRoLmFicyhmcik+PTE/ZnI+MD8rTWF0aC5mbG9vcihmci80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChmci0rKH5+ZnI+Pj4wKSkv'@; put 'NDI5NDk2NzI5Nik+Pj4wOjApXSx4aVtFZSs4Pj4yXT1laVswXSx4aVtFZSsxMj4+Ml09ZWlbMV0sZWk9W1ZlLmJmcmVlPj4+MCwoZnI9VmUuYmZyZWUsK01hdGguYWJzKGZyKT49MT9mcj4wPytNYXRoLmZsb29yKGZyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGZyLSsofn5mcj4+'@; put 'PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhpW0VlKzE2Pj4yXT1laVswXSx4aVtFZSsyMD4+Ml09ZWlbMV0sZWk9W1ZlLmJhdmFpbD4+PjAsKGZyPVZlLmJhdmFpbCwrTWF0aC5hYnMoZnIpPj0xP2ZyPjA/K01hdGguZmxvb3IoZnIvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoZnIt'@; put 'Kyh+fmZyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seGlbRWUrMjQ+PjJdPWVpWzBdLHhpW0VlKzI4Pj4yXT1laVsxXSxlaT1bVmUuZmlsZXM+Pj4wLChmcj1WZS5maWxlcywrTWF0aC5hYnMoZnIpPj0xP2ZyPjA/K01hdGguZmxvb3IoZnIvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2Vp'@; put 'bCgoZnItKyh+fmZyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seGlbRWUrMzI+PjJdPWVpWzBdLHhpW0VlKzM2Pj4yXT1laVsxXSxlaT1bVmUuZmZyZWU+Pj4wLChmcj1WZS5mZnJlZSwrTWF0aC5hYnMoZnIpPj0xP2ZyPjA/K01hdGguZmxvb3IoZnIvNDI5NDk2NzI5Nik+Pj4wOn5+K01h'@; put 'dGguY2VpbCgoZnItKyh+fmZyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seGlbRWUrNDA+PjJdPWVpWzBdLHhpW0VlKzQ0Pj4yXT1laVsxXSxhb1tFZSs0OD4+Ml09VmUuZnNpZCxhb1tFZSs2ND4+Ml09VmUuZmxhZ3MsYW9bRWUrNTY+PjJdPVZlLm5hbWVsZW59LGRvTXN5bmMoRWUsVmUs'@; put 'c3QsTXQsWXQpe2lmKCFPdC5pc0ZpbGUoVmUubm9kZS5tb2RlKSl0aHJvdyBuZXcgT3QuRXJybm9FcnJvcig0Myk7aWYoMiZNdClyZXR1cm4gMDt2YXIgYW49dXQuc3ViYXJyYXkoRWUsRWUrc3QpO090Lm1zeW5jKFZlLGFuLFl0LHN0LE10KX0sZ2V0U3RyZWFtRnJvbUZEOkVlPT5PdC5nZXRT'@; put 'dHJlYW1DaGVja2VkKEVlKSx2YXJhcmdzOnZvaWQgMCxnZXRTdHI6RWU9PklyKEVlKX0scDI9KCk9Pnt2YXIgRWU9eGlbK0F1LnZhcmFyZ3M+PjJdO3JldHVybiBBdS52YXJhcmdzKz00LEVlfSxEMD1wMixjeT0oRWUsVmUsc3QpPT5WbyhFZSx1dCxWZSxzdCksayRlPSgpPT5vcWUsUiRlPUVl'@; put 'PT50cWUoRWUpLEs0bj1FZT0+e3ZhciBWZT0oRWU9Pnt2YXIgVmU9RWUuZ2V0QXJnKGskZSgpLDApO3JldHVybiBycWUoVmUpfSkoRWUpO3JldHVybihFZT0+e3ZhciBWZT1ucWUoKSxzdD1SJGUoNCksTXQ9UiRlKDQpO2lxZShFZSxzdCxNdCk7dmFyIEtuLFl0PWFvW3N0Pj4yXSxhbj1hb1tN'@; put 'dD4+Ml0sSW49SXIoWXQpO3JldHVybiB0NShZdCksYW4mJihLbj1JcihhbiksdDUoYW4pKSwoRWU9PntlcWUoRWUpfSkoVmUpLFtJbixLbl19KShWZSl9LHlnPUVlPT57Zm9yKHZhciBWZT0iIjs7KXt2YXIgc3Q9dXRbRWUrK107aWYoIXN0KXJldHVybiBWZTtWZSs9U3RyaW5nLmZyb21DaGFy'@; put 'Q29kZShzdCl9fSxTQT17fSxFQT17fSxpWD17fSxOUD1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKEVlKXtzdXBlcihFZSksdGhpcy5uYW1lPSJCaW5kaW5nRXJyb3IifX0sdWM9RWU9Pnt0aHJvdyBuZXcgTlAoRWUpfTtmdW5jdGlvbiB5OShFZSxWZSxzdD17fSl7cmV0dXJuIGZ1'@; put 'bmN0aW9uIGU1bihFZSxWZSxzdD17fSl7dmFyIE10PVZlLm5hbWU7aWYoRWV8fHVjKGB0eXBlICIke010fSIgbXVzdCBoYXZlIGEgcG9zaXRpdmUgaW50ZWdlciB0eXBlaWQgcG9pbnRlcmApLEVBLmhhc093blByb3BlcnR5KEVlKSl7aWYoc3QuaWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9u'@; put 'cylyZXR1cm47dWMoYENhbm5vdCByZWdpc3RlciB0eXBlICcke010fScgdHdpY2VgKX1pZihFQVtFZV09VmUsZGVsZXRlIGlYW0VlXSxTQS5oYXNPd25Qcm9wZXJ0eShFZSkpe3ZhciBZdD1TQVtFZV07ZGVsZXRlIFNBW0VlXSxZdC5mb3JFYWNoKGFuPT5hbigpKX19KEVlLFZlLHN0KX12YXIg'@; put 'bjVuPUVlPT4oe2NvdW50OkVlLmNvdW50LGRlbGV0ZVNjaGVkdWxlZDpFZS5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6RWUucHJlc2VydmVQb2ludGVyT25EZWxldGUscHRyOkVlLnB0cixwdHJUeXBlOkVlLnB0clR5cGUsc21hcnRQdHI6RWUuc21hcnRQdHIsc21h'@; put 'cnRQdHJUeXBlOkVlLnNtYXJ0UHRyVHlwZX0pLEI0ZT1FZT0+e3VjKGZ1bmN0aW9uIFZlKHN0KXtyZXR1cm4gc3QuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MubmFtZX0oRWUpKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIil9LGo0ZT0hMSxJJGU9RWU9Pnt9LEQkZT1FZT0+e0VlLmNv'@; put 'dW50LnZhbHVlLT0xLDA9PT1FZS5jb3VudC52YWx1ZSYmKEVlPT57RWUuc21hcnRQdHI/RWUuc21hcnRQdHJUeXBlLnJhd0Rlc3RydWN0b3IoRWUuc21hcnRQdHIpOkVlLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoRWUucHRyKX0pKEVlKX0sRlA9RWU9Pmdsb2JhbFRo'@; put 'aXMuRmluYWxpemF0aW9uUmVnaXN0cnk/KGo0ZT1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoVmU9PntEJGUoVmUuJCQpfSksSSRlPVZlPT5qNGUudW5yZWdpc3RlcihWZSksKEZQPVZlPT57dmFyIHN0PVZlLiQkO3JldHVybiFzdC5zbWFydFB0cnx8ajRlLnJlZ2lzdGVyKFZlLHskJDpzdH0s'@; put 'VmUpLFZlfSkoRWUpKTooRlA9VmU9PlZlLEVlKSxvWD1bXTtmdW5jdGlvbiBhWCgpe312YXIgTyRlPShFZSxWZSk9Pk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWZSwibmFtZSIse3ZhbHVlOkVlfSksTiRlPXt9LFU0ZT0oRWUsVmUsc3QpPT57aWYodm9pZCAwPT09RWVbVmVdLm92ZXJsb2FkVGFi'@; put 'bGUpe3ZhciBNdD1FZVtWZV07RWVbVmVdPWZ1bmN0aW9uKC4uLll0KXtyZXR1cm4gRWVbVmVdLm92ZXJsb2FkVGFibGUuaGFzT3duUHJvcGVydHkoWXQubGVuZ3RoKXx8dWMoYEZ1bmN0aW9uICcke3N0fScgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzICgke1l0'@; put 'Lmxlbmd0aH0pIC0gZXhwZWN0cyBvbmUgb2YgKCR7RWVbVmVdLm92ZXJsb2FkVGFibGV9KSFgKSxFZVtWZV0ub3ZlcmxvYWRUYWJsZVtZdC5sZW5ndGhdLmFwcGx5KHRoaXMsWXQpfSxFZVtWZV0ub3ZlcmxvYWRUYWJsZT1bXSxFZVtWZV0ub3ZlcmxvYWRUYWJsZVtNdC5hcmdDb3VudF09TXR9'@; put 'fTtmdW5jdGlvbiB1NW4oRWUsVmUsc3QsTXQsWXQsYW4sSW4sS24pe3RoaXMubmFtZT1FZSx0aGlzLmNvbnN0cnVjdG9yPVZlLHRoaXMuaW5zdGFuY2VQcm90b3R5cGU9c3QsdGhpcy5yYXdEZXN0cnVjdG9yPU10LHRoaXMuYmFzZUNsYXNzPVl0LHRoaXMuZ2V0QWN0dWFsVHlwZT1hbix0aGlz'@; put 'LnVwY2FzdD1Jbix0aGlzLmRvd25jYXN0PUtuLHRoaXMucHVyZVZpcnR1YWxGdW5jdGlvbnM9W119dmFyIHNYPShFZSxWZSxzdCk9Pntmb3IoO1ZlIT09c3Q7KVZlLnVwY2FzdHx8dWMoYEV4cGVjdGVkIG51bGwgb3IgaW5zdGFuY2Ugb2YgJHtzdC5uYW1lfSwgZ290IGFuIGluc3RhbmNlIG9m'@; put 'ICR7VmUubmFtZX1gKSxFZT1WZS51cGNhc3QoRWUpLFZlPVZlLmJhc2VDbGFzcztyZXR1cm4gRWV9LHo0ZT1FZT0+e2lmKG51bGw9PT1FZSlyZXR1cm4ibnVsbCI7dmFyIFZlPXR5cGVvZiBFZTtyZXR1cm4ib2JqZWN0Ij09PVZlfHwiYXJyYXkiPT09VmV8fCJmdW5jdGlvbiI9PT1WZT9FZS50'@; put 'b1N0cmluZygpOiIiK0VlfTtmdW5jdGlvbiBkNW4oRWUsVmUpe3JldHVybiBudWxsPT09VmU/KHRoaXMuaXNSZWZlcmVuY2UmJnVjKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApLDApOihWZS4kJHx8dWMoYENhbm5vdCBwYXNzICIke3o0ZShWZSl9IiBhcyBhICR7dGhpcy5u'@; put 'YW1lfWApLFZlLiQkLnB0cnx8dWMoYENhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICR7dGhpcy5uYW1lfWApLHNYKFZlLiQkLnB0cixWZS4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcyx0aGlzLnJlZ2lzdGVyZWRDbGFzcykpfWZ1bmN0aW9uIGg1bihF'@; put 'ZSxWZSl7dmFyIHN0O2lmKG51bGw9PT1WZSlyZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSYmdWMoYG51bGwgaXMgbm90IGEgdmFsaWQgJHt0aGlzLm5hbWV9YCksdGhpcy5pc1NtYXJ0UG9pbnRlcj8oc3Q9dGhpcy5yYXdDb25zdHJ1Y3RvcigpLG51bGwhPT1FZSYmRWUucHVzaCh0aGlzLnJhd0Rl'@; put 'c3RydWN0b3Isc3QpLHN0KTowO2lmKCghVmV8fCFWZS4kJCkmJnVjKGBDYW5ub3QgcGFzcyAiJHt6NGUoVmUpfSIgYXMgYSAke3RoaXMubmFtZX1gKSxWZS4kJC5wdHJ8fHVjKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKSwh'@; put 'dGhpcy5pc0NvbnN0JiZWZS4kJC5wdHJUeXBlLmlzQ29uc3QmJnVjKGBDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICR7VmUuJCQuc21hcnRQdHJUeXBlP1ZlLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOlZlLiQkLnB0clR5cGUubmFtZX0gdG8gcGFyYW1ldGVyIHR5cGUgJHt0aGlzLm5h'@; put 'bWV9YCksc3Q9c1goVmUuJCQucHRyLFZlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKSx0aGlzLmlzU21hcnRQb2ludGVyKXN3aXRjaCh2b2lkIDA9PT1WZS4kJC5zbWFydFB0ciYmdWMoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRl'@; put 'ciBpcyBpbGxlZ2FsIiksdGhpcy5zaGFyaW5nUG9saWN5KXtjYXNlIDA6VmUuJCQuc21hcnRQdHJUeXBlPT09dGhpcz9zdD1WZS4kJC5zbWFydFB0cjp1YyhgQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAke1ZlLiQkLnNtYXJ0UHRyVHlwZT9WZS4kJC5zbWFydFB0clR5cGUubmFt'@; put 'ZTpWZS4kJC5wdHJUeXBlLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApO2JyZWFrO2Nhc2UgMTpzdD1WZS4kJC5zbWFydFB0cjticmVhaztjYXNlIDI6aWYoVmUuJCQuc21hcnRQdHJUeXBlPT09dGhpcylzdD1WZS4kJC5zbWFydFB0cjtlbHNle3ZhciBZdD1WZS5jbG9u'@; put 'ZSgpO3N0PXRoaXMucmF3U2hhcmUoc3QsWjRlLnRvSGFuZGxlKCgpPT5ZdC5kZWxldGUoKSkpLG51bGwhPT1FZSYmRWUucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3Isc3QpfWJyZWFrO2RlZmF1bHQ6dWMoIlVuc3VwcG9ydGVkIHNoYXJpbmcgcG9saWN5Iil9cmV0dXJuIHN0fWZ1bmN0aW9uIGY1'@; put 'bihFZSxWZSl7cmV0dXJuIG51bGw9PT1WZT8odGhpcy5pc1JlZmVyZW5jZSYmdWMoYG51bGwgaXMgbm90IGEgdmFsaWQgJHt0aGlzLm5hbWV9YCksMCk6KFZlLiQkfHx1YyhgQ2Fubm90IHBhc3MgIiR7ejRlKFZlKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCksVmUuJCQucHRyfHx1YyhgQ2Fubm90'@; put 'IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCksVmUuJCQucHRyVHlwZS5pc0NvbnN0JiZ1YyhgQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAke1ZlLiQkLnB0clR5cGUubmFtZX0gdG8gcGFyYW1ldGVyIHR5cGUgJHt0aGlzLm5h'@; put 'bWV9YCksc1goVmUuJCQucHRyLFZlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKSl9ZnVuY3Rpb24gbFgoRWUpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShhb1tFZT4+Ml0pfXZhciBGJGU9KEVlLFZlLHN0KT0+e2lmKFZlPT09c3QpcmV0dXJuIEVl'@; put 'O2lmKHZvaWQgMD09PXN0LmJhc2VDbGFzcylyZXR1cm4gbnVsbDt2YXIgTXQ9RiRlKEVlLFZlLHN0LmJhc2VDbGFzcyk7cmV0dXJuIG51bGw9PT1NdD9udWxsOnN0LmRvd25jYXN0KE10KX0scDVuPXt9LHY1bj1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKEVlKXtzdXBlcihFZSks'@; put 'dGhpcy5uYW1lPSJJbnRlcm5hbEVycm9yIn19LGNYPUVlPT57dGhyb3cgbmV3IHY1bihFZSl9LHVYPShFZSxWZSk9PigoIVZlLnB0clR5cGV8fCFWZS5wdHIpJiZjWCgibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpLCEhVmUuc21hcnRQdHJUeXBlIT0hIVZlLnNt'@; put 'YXJ0UHRyJiZjWCgiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIiksVmUuY291bnQ9e3ZhbHVlOjF9LEZQKE9iamVjdC5jcmVhdGUoRWUseyQkOnt2YWx1ZTpWZSx3cml0YWJsZTohMH19KSkpO2Z1bmN0aW9uIGRYKEVlLFZlLHN0LE10LFl0LGFuLElu'@; put 'LEtuLGxpLFFpLFFvKXt0aGlzLm5hbWU9RWUsdGhpcy5yZWdpc3RlcmVkQ2xhc3M9VmUsdGhpcy5pc1JlZmVyZW5jZT1zdCx0aGlzLmlzQ29uc3Q9TXQsdGhpcy5pc1NtYXJ0UG9pbnRlcj1ZdCx0aGlzLnBvaW50ZWVUeXBlPWFuLHRoaXMuc2hhcmluZ1BvbGljeT1Jbix0aGlzLnJhd0dldFBv'@; put 'aW50ZWU9S24sdGhpcy5yYXdDb25zdHJ1Y3Rvcj1saSx0aGlzLnJhd1NoYXJlPVFpLHRoaXMucmF3RGVzdHJ1Y3Rvcj1RbyxZdHx8dm9pZCAwIT09VmUuYmFzZUNsYXNzP3RoaXMudG9XaXJlVHlwZT1oNW46TXQ/KHRoaXMudG9XaXJlVHlwZT1kNW4sdGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249'@; put 'bnVsbCk6KHRoaXMudG9XaXJlVHlwZT1mNW4sdGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbCl9dmFyIHV5PXt9LFAkZT1FZT0+YXFlLmdldChFZSksYjk9KEVlLFZlLHN0PSExKT0+e0VlPXlnKEVlKTt2YXIgWXQ9ZnVuY3Rpb24gTXQoKXtyZXR1cm4gRWUuaW5jbHVkZXMoImoiKT8oKEVl'@; put 'LFZlLHN0PSExKT0+KC4uLk10KT0+KChFZSxWZSxzdD1bXSk9PkVlLmluY2x1ZGVzKCJqIik/KChFZSxWZSxzdCk9PihFZT1FZS5yZXBsYWNlKC9wL2csImkiKSwoMCx1eVtFZV0pKFZlLC4uLnN0KSkpKEVlLFZlLHN0KTpQJGUoVmUpKC4uLnN0KSkoRWUsVmUsTXQsc3QpKShFZSxWZSk6UCRl'@; put 'KFZlKX0oKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgWXQmJnVjKGB1bmtub3duIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aCBzaWduYXR1cmUgJHtFZX06ICR7VmV9YCksWXR9O2NsYXNzIEU1biBleHRlbmRzIEVycm9ye312YXIgTTVuPUVlPT57dmFyIFZlPUskZShFZSksc3Q9eWcoVmUpO3Jl'@; put 'dHVybiB0NShWZSksc3R9LE1BPShFZSxWZSk9Pnt2YXIgc3Q9W10sTXQ9e307dGhyb3cgVmUuZm9yRWFjaChmdW5jdGlvbiBZdChhbil7aWYoIU10W2FuXSYmIUVBW2FuXSl7aWYoaVhbYW5dKXJldHVybiB2b2lkIGlYW2FuXS5mb3JFYWNoKFl0KTtzdC5wdXNoKGFuKSxNdFthbl09ITB9fSks'@; put 'bmV3IEU1bihgJHtFZX06IGArc3QubWFwKE01bikuam9pbihbIiwgIl0pKX0sdzk9KEVlLFZlLHN0KT0+e2Z1bmN0aW9uIE10KEtuKXt2YXIgbGk9c3QoS24pO2xpLmxlbmd0aCE9PUVlLmxlbmd0aCYmY1goIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKTtmb3IodmFyIFFpPTA7'@; put 'UWk8RWUubGVuZ3RoOysrUWkpeTkoRWVbUWldLGxpW1FpXSl9RWUuZm9yRWFjaChLbj0+aVhbS25dPVZlKTt2YXIgWXQ9bmV3IEFycmF5KFZlLmxlbmd0aCksYW49W10sSW49MDtmb3IobGV0W0tuLGxpXW9mIFZlLmVudHJpZXMoKSlFQS5oYXNPd25Qcm9wZXJ0eShsaSk/WXRbS25dPUVBW2xp'@; put 'XTooYW4ucHVzaChsaSksU0EuaGFzT3duUHJvcGVydHkobGkpfHwoU0FbbGldPVtdKSxTQVtsaV0ucHVzaCgoKT0+e1l0W0tuXT1FQVtsaV0sKytJbj09PWFuLmxlbmd0aCYmTXQoWXQpfSkpOzA9PT1hbi5sZW5ndGgmJk10KFl0KX0sSCRlPUVlPT57Zm9yKDtFZS5sZW5ndGg7KXt2YXIgVmU9'@; put 'RWUucG9wKCk7RWUucG9wKCkoVmUpfX07ZnVuY3Rpb24gVzRlKEVlLFZlLHN0LE10LFl0LGFuKXt2YXIgSW49VmUubGVuZ3RoO0luPDImJnVjKCJhcmdUeXBlcyBhcnJheSBzaXplIG1pc21hdGNoISBNdXN0IGF0IGxlYXN0IGdldCByZXR1cm4gdmFsdWUgYW5kICd0aGlzJyB0eXBlcyEiKTt2'@; put 'YXIgS249bnVsbCE9PVZlWzFdJiZudWxsIT09c3QsbGk9ZnVuY3Rpb24geDVuKEVlKXtmb3IodmFyIFZlPTE7VmU8RWUubGVuZ3RoOysrVmUpaWYobnVsbCE9PUVlW1ZlXSYmdm9pZCAwPT09RWVbVmVdLmRlc3RydWN0b3JGdW5jdGlvbilyZXR1cm4hMDtyZXR1cm4hMX0oVmUpLFFpPSFWZVsw'@; put 'XS5pc1ZvaWQsUW89SW4tMixJYT1uZXcgQXJyYXkoUW8pLEpvPVtdLGhhPVtdO3JldHVybiBPJGUoRWUsZnVuY3Rpb24oLi4ua3Upe3ZhciBYYztoYS5sZW5ndGg9MCxKby5sZW5ndGg9S24/MjoxLEpvWzBdPVl0LEtuJiYoWGM9VmVbMV0udG9XaXJlVHlwZShoYSx0aGlzKSxKb1sxXT1YYyk7'@; put 'Zm9yKHZhciAkbD0wOyRsPFFvOysrJGwpSWFbJGxdPVZlWyRsKzJdLnRvV2lyZVR5cGUoaGEsa3VbJGxdKSxKby5wdXNoKElhWyRsXSk7cmV0dXJuIGZ1bmN0aW9uIFhoKGFwKXtpZihsaSlIJGUoaGEpO2Vsc2UgZm9yKHZhciBwZj1Lbj8xOjI7cGY8VmUubGVuZ3RoO3BmKyspbnVsbCE9PVZl'@; put 'W3BmXS5kZXN0cnVjdG9yRnVuY3Rpb24mJlZlW3BmXS5kZXN0cnVjdG9yRnVuY3Rpb24oMT09PXBmP1hjOklhW3BmLTJdKTtpZihRaSlyZXR1cm4gVmVbMF0uZnJvbVdpcmVUeXBlKGFwKX0oTXQoLi4uSm8pKX0pfXZhciBZNGU9KEVlLFZlKT0+e2Zvcih2YXIgc3Q9W10sTXQ9MDtNdDxFZTtN'@; put 'dCsrKXN0LnB1c2goYW9bVmUrNCpNdD4+Ml0pO3JldHVybiBzdH0sViRlPUVlPT57bGV0IFZlPShFZT1FZS50cmltKCkpLmluZGV4T2YoIigiKTtyZXR1cm4tMT09PVZlP0VlOkVlLnNsaWNlKDAsVmUpfSxCJGU9KEVlLFZlLHN0KT0+KEVlIGluc3RhbmNlb2YgT2JqZWN0fHx1YyhgJHtzdH0g'@; put 'd2l0aCBpbnZhbGlkICJ0aGlzIjogJHtFZX1gKSxFZSBpbnN0YW5jZW9mIFZlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcnx8dWMoYCR7c3R9IGluY29tcGF0aWJsZSB3aXRoICJ0aGlzIiBvZiB0eXBlICR7RWUuY29uc3RydWN0b3IubmFtZX1gKSxFZS4kJC5wdHJ8fHVjKGBjYW5ub3Qg'@; put 'Y2FsbCBlbXNjcmlwdGVuIGJpbmRpbmcgbWV0aG9kICR7c3R9IG9uIGRlbGV0ZWQgb2JqZWN0YCksc1goRWUuJCQucHRyLEVlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFZlLnJlZ2lzdGVyZWRDbGFzcykpLGokZT1bXSxRQz1bMCwxLCwxLG51bGwsMSwhMCwxLCExLDFdLFUkZT1bXSxa'@; put 'NGU9e3RvVmFsdWU6RWU9PihFZXx8dWMoYENhbm5vdCB1c2UgZGVsZXRlZCB2YWwuIGhhbmRsZSA9ICR7RWV9YCksUUNbRWVdKSx0b0hhbmRsZTpFZT0+e3N3aXRjaChFZSl7Y2FzZSB2b2lkIDA6cmV0dXJuIDI7Y2FzZSBudWxsOnJldHVybiA0O2Nhc2UhMDpyZXR1cm4gNjtjYXNlITE6cmV0'@; put 'dXJuIDg7ZGVmYXVsdDp7bGV0IFZlPWokZS5wb3AoKXx8UUMubGVuZ3RoO3JldHVybiBRQ1tWZV09RWUsUUNbVmUrMV09MSxWZX19fX0sTDVuPXtuYW1lOiJlbXNjcmlwdGVuOjp2YWwiLGZyb21XaXJlVHlwZTpFZT0+e3ZhciBWZT1aNGUudG9WYWx1ZShFZSk7cmV0dXJuKEVlPT57aWYoRWU+'@; put 'OSYmMD09PS0tUUNbRWUrMV0pe3ZhciBWZT1RQ1tFZV07UUNbRWVdPXZvaWQgMDt2YXIgc3Q9VSRlW0VlXTtzdCYmKFUkZVtFZV09dm9pZCAwLHN0KFZlKSksaiRlLnB1c2goRWUpfX0pKEVlKSxWZX0sdG9XaXJlVHlwZTooRWUsVmUpPT5aNGUudG9IYW5kbGUoVmUpLHJlYWRWYWx1ZUZyb21Q'@; put 'b2ludGVyOmxYLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSxONW49KEVlLFZlKT0+e3N3aXRjaChWZSl7Y2FzZSA0OnJldHVybiBmdW5jdGlvbihzdCl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHdzW3N0Pj4yXSl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oc3Qpe3JldHVybiB0aGlzLmZy'@; put 'b21XaXJlVHlwZSh0c1tzdD4+M10pfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgZmxvYXQgd2lkdGggKCR7VmV9KTogJHtFZX1gKX19LFA1bj0oRWUsVmUsc3QpPT57c3dpdGNoKFZlKXtjYXNlIDE6cmV0dXJuIHN0P010PT5Ub1tNdF06TXQ9PnV0W010XTtjYXNlIDI6'@; put 'cmV0dXJuIHN0P010PT5Ib1tNdD4+MV06TXQ9PmthW010Pj4xXTtjYXNlIDQ6cmV0dXJuIHN0P010PT54aVtNdD4+Ml06TXQ9PmFvW010Pj4yXTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgaW50ZWdlciB3aWR0aCAoJHtWZX0pOiAke0VlfWApfX0seiRlPWdsb2JhbFRo'@; put 'aXMuVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOnZvaWQgMCxqNW49KEVlLFZlLHN0KT0+e3ZhciBNdD1FZT4+MSxZdD1kbihrYSxNdCxWZS8yLHN0KTtpZihZdC1NdD4xNiYmeiRlKXJldHVybiB6JGUuZGVjb2RlKGthLnN1YmFycmF5KE10LFl0KSk7Zm9yKHZhciBh'@; put 'bj0iIixJbj1NdDtJbjxZdDsrK0luKWFuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGthW0luXSk7cmV0dXJuIGFufSxVNW49KEVlLFZlLHN0PTIxNDc0ODM2NDcpPT57aWYoc3Q8MilyZXR1cm4gMDtmb3IodmFyIE10PVZlLFl0PShzdC09Mik8MipFZS5sZW5ndGg/c3QvMjpFZS5sZW5ndGgsYW49'@; put 'MDthbjxZdDsrK2FuKXt2YXIgSW49RWUuY2hhckNvZGVBdChhbik7SG9bVmU+PjFdPUluLFZlKz0yfXJldHVybiBIb1tWZT4+MV09MCxWZS1NdH0sejVuPUVlPT4yKkVlLmxlbmd0aCxXNW49KEVlLFZlLHN0KT0+e2Zvcih2YXIgTXQ9IiIsWXQ9RWU+PjIsYW49MDshKGFuPj1WZS80KTthbisr'@; put 'KXt2YXIgSW49YW9bWXQrYW5dO2lmKCFJbiYmIXN0KWJyZWFrO010Kz1TdHJpbmcuZnJvbUNvZGVQb2ludChJbil9cmV0dXJuIE10fSxZNW49KEVlLFZlLHN0PTIxNDc0ODM2NDcpPT57aWYoc3Q8NClyZXR1cm4gMDtmb3IodmFyIE10PVZlLFl0PU10K3N0LTQsYW49MDthbjxFZS5sZW5ndGg7'@; put 'Kythbil7dmFyIEluPUVlLmNvZGVQb2ludEF0KGFuKTtpZihJbj42NTUzNSYmYW4rKyx4aVtWZT4+Ml09SW4sKFZlKz00KSs0Pll0KWJyZWFrfXJldHVybiB4aVtWZT4+Ml09MCxWZS1NdH0sWjVuPUVlPT57Zm9yKHZhciBWZT0wLHN0PTA7c3Q8RWUubGVuZ3RoOysrc3QpRWUuY29kZVBvaW50'@; put 'QXQoc3QpPjY1NTM1JiZzdCsrLFZlKz00O3JldHVybiBWZX0sUTVuPVswLDMxLDYwLDkxLDEyMSwxNTIsMTgyLDIxMywyNDQsMjc0LDMwNSwzMzVdLEo1bj1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XSxQUD0oRWUsVmUpPT5WZSsyMDk3MTUyPj4+MDw0MTk0'@; put 'MzA1LSEhRWU/KEVlPj4+MCkrNDI5NDk2NzI5NipWZTpOYU4sSFA9e30sWiRlPUVlPT57dmU9RWUsaSgwLG5ldyBQbyhFZSkpfSwkJGU9KCk9PnBlcmZvcm1hbmNlLm5vdygpLHEkZT0oKT0+RGF0ZS5ub3coKSxHNGU9W10sbTZuPUVlPT57dmFyIHN0PShFZS1oWC5idWZmZXIuYnl0ZUxlbmd0'@; put 'aCs2NTUzNSkvNjU1MzZ8MDt0cnl7cmV0dXJuIGhYLmdyb3coc3QpLGF0KCksMX1jYXRjaHt9fSwkNGU9e30sVlA9KCk9PntpZighVlAuc3RyaW5ncyl7dmFyIFZlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3Vz'@; put 'ZXIiLExBTkc6KGdsb2JhbFRoaXMubmF2aWdhdG9yPy5sYW5ndWFnZT8/IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciBzdCBpbiAkNGUpdm9pZCAwPT09JDRlW3N0XT9kZWxldGUgVmVbc3RdOlZlW3N0XT0kNGVbc3RdO3ZhciBNdD1b'@; put 'XTtmb3IodmFyIHN0IGluIFZlKU10LnB1c2goYCR7c3R9PSR7VmVbc3RdfWApO1ZQLnN0cmluZ3M9TXR9cmV0dXJuIFZQLnN0cmluZ3N9O090LmNyZWF0ZVByZWxvYWRlZEZpbGU9KEVlLFZlLHN0LE10LFl0LGFuLEluLEtuLGxpLFFpKT0+e2x5KEVlLFZlLHN0LE10LFl0LEtuLGxpLFFpKS50'@; put 'aGVuKGFuKS5jYXRjaChJbil9LE90LnByZWxvYWRGaWxlPWx5LE90LnN0YXRpY0luaXQoKSwoKCk9PntsZXQgRWU9YVgucHJvdG90eXBlO09iamVjdC5hc3NpZ24oRWUse2lzQWxpYXNPZihzdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYVgmJnN0IGluc3RhbmNlb2YgYVgpKXJldHVybiExO3Zh'@; put 'ciBNdD10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFl0PXRoaXMuJCQucHRyO3N0LiQkPXN0LiQkO2Zvcih2YXIgYW49c3QuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsSW49c3QuJCQucHRyO010LmJhc2VDbGFzczspWXQ9TXQudXBjYXN0KFl0KSxNdD1NdC5iYXNlQ2xhc3M7'@; put 'Zm9yKDthbi5iYXNlQ2xhc3M7KUluPWFuLnVwY2FzdChJbiksYW49YW4uYmFzZUNsYXNzO3JldHVybiBNdD09PWFuJiZZdD09PUlufSxjbG9uZSgpe2lmKHRoaXMuJCQucHRyfHxCNGUodGhpcyksdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSlyZXR1cm4gdGhpcy4kJC5jb3VudC52'@; put 'YWx1ZSs9MSx0aGlzO3ZhciBzdD1GUChPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSx7JCQ6e3ZhbHVlOm41bih0aGlzLiQkKX19KSk7cmV0dXJuIHN0LiQkLmNvdW50LnZhbHVlKz0xLHN0LiQkLmRlbGV0ZVNjaGVkdWxlZD0hMSxzdH0sZGVsZXRlKCl7dGhpcy4k'@; put 'JC5wdHJ8fEI0ZSh0aGlzKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUmJnVjKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksSSRlKHRoaXMpLEQkZSh0aGlzLiQkKSx0aGlzLiQkLnByZXNlcnZlUG9pbnRl'@; put 'ck9uRGVsZXRlfHwodGhpcy4kJC5zbWFydFB0cj12b2lkIDAsdGhpcy4kJC5wdHI9dm9pZCAwKX0saXNEZWxldGVkKCl7cmV0dXJuIXRoaXMuJCQucHRyfSxkZWxldGVMYXRlcigpe3JldHVybiB0aGlzLiQkLnB0cnx8QjRlKHRoaXMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkJiYhdGhpcy4k'@; put 'JC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSYmdWMoIk9iamVjdCBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24iKSxvWC5wdXNoKHRoaXMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkPSEwLHRoaXN9fSk7bGV0IFZlPVN5bWJvbC5kaXNwb3NlO1ZlJiYoRWVbVmVdPUVlLmRlbGV0ZSl9'@; put 'KSgpLE9iamVjdC5hc3NpZ24oZFgucHJvdG90eXBlLHtnZXRQb2ludGVlKEVlKXtyZXR1cm4gdGhpcy5yYXdHZXRQb2ludGVlJiYoRWU9dGhpcy5yYXdHZXRQb2ludGVlKEVlKSksRWV9LGRlc3RydWN0b3IoRWUpe3RoaXMucmF3RGVzdHJ1Y3Rvcj8uKEVlKX0scmVhZFZhbHVlRnJvbVBvaW50'@; put 'ZXI6bFgsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uIF81bihFZSl7dmFyIFZlPXRoaXMuZ2V0UG9pbnRlZShFZSk7aWYoIVZlKXJldHVybiB0aGlzLmRlc3RydWN0b3IoRWUpLG51bGw7dmFyIHN0PSgoRWUsVmUpPT4oVmU9KChFZSxWZSk9Pntmb3Iodm9pZCAwPT09VmUmJnVjKCJwdHIgc2hvdWxk'@; put 'IG5vdCBiZSB1bmRlZmluZWQiKTtFZS5iYXNlQ2xhc3M7KVZlPUVlLnVwY2FzdChWZSksRWU9RWUuYmFzZUNsYXNzO3JldHVybiBWZX0pKEVlLFZlKSxwNW5bVmVdKSkodGhpcy5yZWdpc3RlcmVkQ2xhc3MsVmUpO2lmKHZvaWQgMCE9PXN0KXtpZigwPT09c3QuJCQuY291bnQudmFsdWUpcmV0'@; put 'dXJuIHN0LiQkLnB0cj1WZSxzdC4kJC5zbWFydFB0cj1FZSxzdC5jbG9uZSgpO3ZhciBNdD1zdC5jbG9uZSgpO3JldHVybiB0aGlzLmRlc3RydWN0b3IoRWUpLE10fWZ1bmN0aW9uIFl0KCl7cmV0dXJuIHVYKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHRoaXMuaXNT'@; put 'bWFydFBvaW50ZXI/e3B0clR5cGU6dGhpcy5wb2ludGVlVHlwZSxwdHI6VmUsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6RWV9OntwdHJUeXBlOnRoaXMscHRyOkVlfSl9dmFyIEtuLGFuPXRoaXMucmVnaXN0ZXJlZENsYXNzLmdldEFjdHVhbFR5cGUoVmUpLEluPU4kZVthbl07aWYoIUlu'@; put 'KXJldHVybiBZdC5jYWxsKHRoaXMpO3ZhciBsaT1GJGUoVmUsdGhpcy5yZWdpc3RlcmVkQ2xhc3MsKEtuPXRoaXMuaXNDb25zdD9Jbi5jb25zdFBvaW50ZXJUeXBlOkluLnBvaW50ZXJUeXBlKS5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBudWxsPT09bGk/WXQuY2FsbCh0aGlzKTp1WChLbi5y'@; put 'ZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUsdGhpcy5pc1NtYXJ0UG9pbnRlcj97cHRyVHlwZTpLbixwdHI6bGksc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6RWV9OntwdHJUeXBlOktuLHB0cjpsaX0pfX0pLGUud2FzbUJpbmFyeSYmKFo9ZS53YXNtQmluYXJ5KSxlLlVURjhU'@; put 'b1N0cmluZz1JcixlLnN0cmluZ1RvVVRGOD1jeSxlLmxlbmd0aEJ5dGVzVVRGOD1SYTt2YXIgSyRlLHE0ZSx0NSxYJGUsUSRlLEokZSxlcWUsdHFlLG5xZSxycWUsaXFlLG9xZSxoWCxhcWUsQlAsQTZuPXsxOTI3OTI6KEVlLFZlKT0+e3ZhciBzdD1JcihFZSksTXQ9SXIoVmUpO090LmNyZWF0'@; put 'ZVBhdGgoIi8iLGpyLmRpcm5hbWUoc3QpKSxPdC53cml0ZUZpbGUoanIuam9pbigiLyIsc3QpLE10KX19LFY2bj17dDooRWUsVmUsc3QsTXQpPT5xdChgQXNzZXJ0aW9uIGZhaWxlZDogJHtJcihFZSl9LCBhdDogYCtbVmU/SXIoVmUpOiJ1bmtub3duIGZpbGVuYW1lIixzdCxNdD9JcihNdCk6'@; put 'InVua25vd24gZnVuY3Rpb24iXSksTjpmdW5jdGlvbiBPUChFZSxWZSxzdCxNdCl7dHJ5e2lmKFZlPUF1LmdldFN0cihWZSksVmU9QXUuY2FsY3VsYXRlQXQoRWUsVmUpLC04JnN0KXJldHVybi0yODt2YXIgYW49T3QubG9va3VwUGF0aChWZSx7Zm9sbG93OiEwfSkubm9kZTtpZighYW4pcmV0'@; put 'dXJuLTQ0O3ZhciBJbj0iIjtyZXR1cm4gNCZzdCYmKEluKz0iciIpLDImc3QmJihJbis9InciKSwxJnN0JiYoSW4rPSJ4IiksSW4mJk90Lm5vZGVQZXJtaXNzaW9ucyhhbixJbik/LTI6MH1jYXRjaChLbil7aWYodHlwZW9mIE90PiJ1Inx8IkVycm5vRXJyb3IiIT09S24ubmFtZSl0aHJvdyBL'@; put 'bjtyZXR1cm4tS24uZXJybm99fSxvOmZ1bmN0aW9uIG5YKEVlLFZlLHN0KXtBdS52YXJhcmdzPXN0O3RyeXt2YXIgTXQ9QXUuZ2V0U3RyZWFtRnJvbUZEKEVlKTtzd2l0Y2goVmUpe2Nhc2UgMDppZigoWXQ9cDIoKSk8MClyZXR1cm4tMjg7Zm9yKDtPdC5zdHJlYW1zW1l0XTspWXQrKztyZXR1'@; put 'cm4gT3QuZHVwU3RyZWFtKE10LFl0KS5mZDtjYXNlIDE6Y2FzZSAyOmNhc2UgMTM6Y2FzZSAxNDpyZXR1cm4gMDtjYXNlIDM6cmV0dXJuIE10LmZsYWdzO2Nhc2UgNDp2YXIgWXQ9cDIoKTtyZXR1cm4gTXQuZmxhZ3M9LTI4OTc5MyZNdC5mbGFnc3wyODk3OTImWXQsMDtjYXNlIDEyOnJldHVy'@; put 'biBZdD1EMCgpLEhvW1l0KzA+PjFdPTIsMH1yZXR1cm4tMjh9Y2F0Y2gobGkpe2lmKHR5cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PWxpLm5hbWUpdGhyb3cgbGk7cmV0dXJuLWxpLmVycm5vfX0sTTpmdW5jdGlvbiByWChFZSxWZSl7dHJ5e3JldHVybiBBdS53cml0ZVN0YXQoVmUsT3Qu'@; put 'ZnN0YXQoRWUpKX1jYXRjaChzdCl7aWYodHlwZW9mIE90PiJ1Inx8IkVycm5vRXJyb3IiIT09c3QubmFtZSl0aHJvdyBzdDtyZXR1cm4tc3QuZXJybm99fSxROmZ1bmN0aW9uIGo0bihFZSxWZSxzdCl7QXUudmFyYXJncz1zdDt0cnl7dmFyIE10PUF1LmdldFN0cmVhbUZyb21GRChFZSk7c3dp'@; put 'dGNoKFZlKXtjYXNlIDIxNTA5OmNhc2UgMjE1MTA6Y2FzZSAyMTUxMTpjYXNlIDIxNTEyOmNhc2UgMjE1MjQ6Y2FzZSAyMTUxNTpyZXR1cm4gTXQudHR5PzA6LTU5O2Nhc2UgMjE1MDU6aWYoIU10LnR0eSlyZXR1cm4tNTk7aWYoTXQudHR5Lm9wcy5pb2N0bF90Y2dldHMpe3ZhciBZdD1NdC50'@; put 'dHkub3BzLmlvY3RsX3RjZ2V0cyhNdCksYW49RDAoKTt4aVthbj4+Ml09WXQuY19pZmxhZ3x8MCx4aVthbis0Pj4yXT1ZdC5jX29mbGFnfHwwLHhpW2FuKzg+PjJdPVl0LmNfY2ZsYWd8fDAseGlbYW4rMTI+PjJdPVl0LmNfbGZsYWd8fDA7Zm9yKHZhciBJbj0wO0luPDMyO0luKyspVG9bYW4r'@; put 'SW4rMTddPVl0LmNfY2NbSW5dfHwwO3JldHVybiAwfXJldHVybiAwO2Nhc2UgMjE1MDY6Y2FzZSAyMTUwNzpjYXNlIDIxNTA4OmlmKCFNdC50dHkpcmV0dXJuLTU5O2lmKE10LnR0eS5vcHMuaW9jdGxfdGNzZXRzKXthbj1EMCgpO3ZhciBLbj14aVthbj4+Ml0sbGk9eGlbYW4rND4+Ml0sUWk9'@; put 'eGlbYW4rOD4+Ml0sUW89eGlbYW4rMTI+PjJdLElhPVtdO2ZvcihJbj0wO0luPDMyO0luKyspSWEucHVzaChUb1thbitJbisxN10pO3JldHVybiBNdC50dHkub3BzLmlvY3RsX3Rjc2V0cyhNdC50dHksVmUse2NfaWZsYWc6S24sY19vZmxhZzpsaSxjX2NmbGFnOlFpLGNfbGZsYWc6UW8sY19j'@; put 'YzpJYX0pfXJldHVybiAwO2Nhc2UgMjE1MTk6cmV0dXJuIE10LnR0eT8oYW49RDAoKSx4aVthbj4+Ml09MCwwKTotNTk7Y2FzZSAyMTUyMDpyZXR1cm4gTXQudHR5Py0yODotNTk7Y2FzZSAyMTUzNzpjYXNlIDIxNTMxOnJldHVybiBhbj1EMCgpLE90LmlvY3RsKE10LFZlLGFuKTtjYXNlIDIx'@; put 'NTIzOmlmKCFNdC50dHkpcmV0dXJuLTU5O2lmKE10LnR0eS5vcHMuaW9jdGxfdGlvY2d3aW5zeil7dmFyIEpvPU10LnR0eS5vcHMuaW9jdGxfdGlvY2d3aW5zeihNdC50dHkpO2FuPUQwKCksSG9bYW4+PjFdPUpvWzBdLEhvW2FuKzI+PjFdPUpvWzFdfXJldHVybiAwO2RlZmF1bHQ6cmV0dXJu'@; put 'LTI4fX1jYXRjaChoYSl7aWYodHlwZW9mIE90PiJ1Inx8IkVycm5vRXJyb3IiIT09aGEubmFtZSl0aHJvdyBoYTtyZXR1cm4taGEuZXJybm99fSxrOmZ1bmN0aW9uIFU0bihFZSxWZSxzdCxNdCl7QXUudmFyYXJncz1NdDt0cnl7VmU9QXUuZ2V0U3RyKFZlKSxWZT1BdS5jYWxjdWxhdGVBdChF'@; put 'ZSxWZSk7dmFyIFl0PU10P3AyKCk6MDtyZXR1cm4gNjQmc3QmJihZdCY9fkF1LmN1cnJlbnRVbWFzayksT3Qub3BlbihWZSxzdCxZdCkuZmR9Y2F0Y2goYW4pe2lmKHR5cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PWFuLm5hbWUpdGhyb3cgYW47cmV0dXJuLWFuLmVycm5vfX0sRDpmdW5j'@; put 'dGlvbiB6NG4oRWUsVmUsc3QsTXQpe3RyeXtpZihWZT1BdS5nZXRTdHIoVmUpLFZlPUF1LmNhbGN1bGF0ZUF0KEVlLFZlKSxNdDw9MClyZXR1cm4tMjg7dmFyIFl0PU90LnJlYWRsaW5rKFZlKSxhbj1NYXRoLm1pbihNdCxSYShZdCkpLEluPVRvW3N0K2FuXTtyZXR1cm4gY3koWXQsc3QsTXQr'@; put 'MSksVG9bc3QrYW5dPUluLGFufWNhdGNoKEtuKXtpZih0eXBlb2YgT3Q+InUifHwiRXJybm9FcnJvciIhPT1Lbi5uYW1lKXRocm93IEtuO3JldHVybi1Lbi5lcnJub319LEU6ZnVuY3Rpb24gVzRuKEVlKXt0cnl7cmV0dXJuIEVlPUF1LmdldFN0cihFZSksT3Qucm1kaXIoRWUpLDB9Y2F0Y2go'@; put 'VmUpe2lmKHR5cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PVZlLm5hbWUpdGhyb3cgVmU7cmV0dXJuLVZlLmVycm5vfX0sRjpmdW5jdGlvbiBZNG4oRWUsVmUsc3Qpe3RyeXtpZihWZT1BdS5nZXRTdHIoVmUpLFZlPUF1LmNhbGN1bGF0ZUF0KEVlLFZlKSxzdCl7aWYoNTEyIT09c3QpcmV0'@; put 'dXJuLTI4O090LnJtZGlyKFZlKX1lbHNlIE90LnVubGluayhWZSk7cmV0dXJuIDB9Y2F0Y2goTXQpe2lmKHR5cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PU10Lm5hbWUpdGhyb3cgTXQ7cmV0dXJuLU10LmVycm5vfX0sajpFZT0+e3ZhciBWZT1uZXcgV2ViQXNzZW1ibHkuRXhjZXB0aW9u'@; put 'KGskZSgpLFtFZV0se3RyYWNlU3RhY2s6ITB9KTt0aHJvdyBWZS5tZXNzYWdlPUs0bihWZSksVmV9LE86KCk9PnF0KCIiKSxBOihFZSxWZSxzdCxNdCxZdCk9Pnt9LHI6KEVlLFZlLHN0LE10KT0+e3k5KEVlLHtuYW1lOlZlPXlnKFZlKSxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oWXQpe3JldHVy'@; put 'biEhWXR9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oWXQsYW4pe3JldHVybiBhbj9zdDpNdH0scmVhZFZhbHVlRnJvbVBvaW50ZXI6ZnVuY3Rpb24oWXQpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZSh1dFtZdF0pfSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfSxpOihFZSxWZSxzdCxNdCxZdCxh'@; put 'bixJbixLbixsaSxRaSxRbyxJYSxKbyk9PntRbz15ZyhRbyksYW49YjkoWXQsYW4pLEtuJiY9YjkoSW4sS24pLFFpJiY9YjkobGksUWkpLEpvPWI5KElhLEpvKTt2YXIgaGE9KEVlPT57dmFyIFZlPShFZT1FZS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csIiQiKSkuY2hhckNvZGVBdCgwKTty'@; put 'ZXR1cm4gVmU+PTQ4JiZWZTw9NTc/YF8ke0VlfWA6RWV9KShRbyk7KChFZSxWZSxzdCk9PntlLmhhc093blByb3BlcnR5KEVlKT8odWMoYENhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnJHtFZX0nIHR3aWNlYCksVTRlKGUsRWUsRWUpLGVbRWVdLm92ZXJsb2FkVGFibGUuaGFzT3duUHJv'@; put 'cGVydHkoc3QpJiZ1YyhgQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIG92ZXJsb2FkcyBvZiBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJHtzdH0pIWApLGVbRWVdLm92ZXJsb2FkVGFibGVbc3RdPVZlKTooZVtFZV09VmUsZVtFZV0uYXJnQ291bnQ9c3Qp'@; put 'fSkoaGEsZnVuY3Rpb24oKXtNQShgQ2Fubm90IGNvbnN0cnVjdCAke1FvfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsW010XSl9KSx3OShbRWUsVmUsc3RdLE10P1tNdF06W10sd2w9Pnt2YXIga3UsWGM7d2w9d2xbMF0sWGM9TXQ/KGt1PXdsLnJlZ2lzdGVyZWRDbGFzcykuaW5zdGFuY2VQcm90'@; put 'b3R5cGU6YVgucHJvdG90eXBlO3ZhciAkbD1PJGUoUW8sZnVuY3Rpb24oLi4uWDRlKXtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykhPT1vMCl0aHJvdyBuZXcgTlAoYFVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgJHtRb31gKTtpZih2b2lkIDA9PT1YaC5jb25zdHJ1Y3Rvcl9ib2R5KXRo'@; put 'cm93IG5ldyBOUChgJHtRb30gaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3JgKTt2YXIgc3FlPVhoLmNvbnN0cnVjdG9yX2JvZHlbWDRlLmxlbmd0aF07aWYodm9pZCAwPT09c3FlKXRocm93IG5ldyBOUChgVHJpZWQgdG8gaW52b2tlIGN0b3Igb2YgJHtRb30gd2l0aCBpbnZhbGlkIG51'@; put 'bWJlciBvZiBwYXJhbWV0ZXJzICgke1g0ZS5sZW5ndGh9KSAtIGV4cGVjdGVkICgke09iamVjdC5rZXlzKFhoLmNvbnN0cnVjdG9yX2JvZHkpLnRvU3RyaW5nKCl9KSBwYXJhbWV0ZXJzIGluc3RlYWQhYCk7cmV0dXJuIHNxZS5hcHBseSh0aGlzLFg0ZSl9KSxvMD1PYmplY3QuY3JlYXRlKFhj'@; put 'LHtjb25zdHJ1Y3Rvcjp7dmFsdWU6JGx9fSk7JGwucHJvdG90eXBlPW8wO3ZhciBYaD1uZXcgdTVuKFFvLCRsLG8wLEpvLGt1LGFuLEtuLFFpKTtYaC5iYXNlQ2xhc3MmJihYaC5iYXNlQ2xhc3MuX19kZXJpdmVkQ2xhc3Nlcz8/PVtdLFhoLmJhc2VDbGFzcy5fX2Rlcml2ZWRDbGFzc2VzLnB1'@; put 'c2goWGgpKTt2YXIgYXA9bmV3IGRYKFFvLFhoLCEwLCExLCExKSxwZj1uZXcgZFgoUW8rIioiLFhoLCExLCExLCExKSx4aD1uZXcgZFgoUW8rIiBjb25zdCoiLFhoLCExLCEwLCExKTtyZXR1cm4gTiRlW0VlXT17cG9pbnRlclR5cGU6cGYsY29uc3RQb2ludGVyVHlwZTp4aH0sKChFZSxWZSxz'@; put 'dCk9PntlLmhhc093blByb3BlcnR5KEVlKXx8Y1goIlJlcGxhY2luZyBub25leGlzdGVudCBwdWJsaWMgc3ltYm9sIiksZVtFZV09VmUsZVtFZV0uYXJnQ291bnQ9c3R9KShoYSwkbCksW2FwLHBmLHhoXX0pfSxtOihFZSxWZSxzdCxNdCxZdCxhbixJbixLbixsaSk9Pnt2YXIgUWk9WTRlKHN0'@; put 'LE10KTtWZT15ZyhWZSksVmU9ViRlKFZlKSxhbj1iOShZdCxhbixLbiksdzkoW10sW0VlXSxRbz0+e3ZhciBJYT1gJHsoUW89UW9bMF0pLm5hbWV9LiR7VmV9YDtmdW5jdGlvbiBKbygpe01BKGBDYW5ub3QgY2FsbCAke0lhfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsUWkpfVZlLnN0YXJ0c1dp'@; put 'dGgoIkBAIikmJihWZT1TeW1ib2xbVmUuc3Vic3RyaW5nKDIpXSk7dmFyIGhhPVFvLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09aGFbVmVdPyhKby5hcmdDb3VudD1zdC0xLGhhW1ZlXT1Kbyk6KFU0ZShoYSxWZSxJYSksaGFbVmVdLm92ZXJsb2FkVGFibGVb'@; put 'c3QtMV09Sm8pLHc5KFtdLFFpLHdsPT57dmFyIGt1PVt3bFswXSxudWxsXS5jb25jYXQod2wuc2xpY2UoMSkpLFhjPVc0ZShJYSxrdSxudWxsLGFuLEluKTtpZih2b2lkIDA9PT1oYVtWZV0ub3ZlcmxvYWRUYWJsZT8oWGMuYXJnQ291bnQ9c3QtMSxoYVtWZV09WGMpOmhhW1ZlXS5vdmVybG9h'@; put 'ZFRhYmxlW3N0LTFdPVhjLFFvLnJlZ2lzdGVyZWRDbGFzcy5fX2Rlcml2ZWRDbGFzc2VzKWZvcihsZXQgJGwgb2YgUW8ucmVnaXN0ZXJlZENsYXNzLl9fZGVyaXZlZENsYXNzZXMpJGwuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoVmUpfHwoJGwuY29uc3RydWN0b3JbVmVdPVhjKTtyZXR1'@; put 'cm5bXX0pLFtdfSl9LGU6KEVlLFZlLHN0LE10LFl0LGFuKT0+e3ZhciBJbj1ZNGUoVmUsc3QpO1l0PWI5KE10LFl0KSx3OShbXSxbRWVdLEtuPT57dmFyIGxpPWBjb25zdHJ1Y3RvciAkeyhLbj1LblswXSkubmFtZX1gO2lmKHZvaWQgMD09PUtuLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rv'@; put 'cl9ib2R5JiYoS24ucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W10pLHZvaWQgMCE9PUtuLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W1ZlLTFdKXRocm93IG5ldyBOUChgQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIGNvbnN0cnVjdG9ycyB3aXRoIGlkZW50aWNh'@; put 'bCBudW1iZXIgb2YgcGFyYW1ldGVycyAoJHtWZS0xfSkgZm9yIGNsYXNzICcke0tuLm5hbWV9JyEgT3ZlcmxvYWQgcmVzb2x1dGlvbiBpcyBjdXJyZW50bHkgb25seSBwZXJmb3JtZWQgdXNpbmcgdGhlIHBhcmFtZXRlciBjb3VudCwgbm90IGFjdHVhbCB0eXBlIGluZm8hYCk7cmV0dXJuIEtu'@; put 'LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W1ZlLTFdPSgpPT57TUEoYENhbm5vdCBjb25zdHJ1Y3QgJHtLbi5uYW1lfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsSW4pfSx3OShbXSxJbixRaT0+KFFpLnNwbGljZSgxLDAsbnVsbCksS24ucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVj'@; put 'dG9yX2JvZHlbVmUtMV09VzRlKGxpLFFpLG51bGwsWXQsYW4pLFtdKSksW119KX0sYTooRWUsVmUsc3QsTXQsWXQsYW4sSW4sS24sbGksUWkpPT57dmFyIFFvPVk0ZShzdCxNdCk7VmU9eWcoVmUpLFZlPVYkZShWZSksYW49YjkoWXQsYW4sbGkpLHc5KFtdLFtFZV0sSWE9Pnt2YXIgSm89YCR7'@; put 'KElhPUlhWzBdKS5uYW1lfS4ke1ZlfWA7ZnVuY3Rpb24gaGEoKXtNQShgQ2Fubm90IGNhbGwgJHtKb30gZHVlIHRvIHVuYm91bmQgdHlwZXNgLFFvKX1WZS5zdGFydHNXaXRoKCJAQCIpJiYoVmU9U3ltYm9sW1ZlLnN1YnN0cmluZygyKV0pLEtuJiZJYS5yZWdpc3RlcmVkQ2xhc3MucHVyZVZp'@; put 'cnR1YWxGdW5jdGlvbnMucHVzaChWZSk7dmFyIHdsPUlhLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxrdT13bFtWZV07cmV0dXJuIHZvaWQgMD09PWt1fHx2b2lkIDA9PT1rdS5vdmVybG9hZFRhYmxlJiZrdS5jbGFzc05hbWUhPT1JYS5uYW1lJiZrdS5hcmdDb3VudD09PXN0'@; put 'LTI/KGhhLmFyZ0NvdW50PXN0LTIsaGEuY2xhc3NOYW1lPUlhLm5hbWUsd2xbVmVdPWhhKTooVTRlKHdsLFZlLEpvKSx3bFtWZV0ub3ZlcmxvYWRUYWJsZVtzdC0yXT1oYSksdzkoW10sUW8sWGM9Pnt2YXIgJGw9VzRlKEpvLFhjLElhLGFuLEluKTtyZXR1cm4gdm9pZCAwPT09d2xbVmVdLm92'@; put 'ZXJsb2FkVGFibGU/KCRsLmFyZ0NvdW50PXN0LTIsd2xbVmVdPSRsKTp3bFtWZV0ub3ZlcmxvYWRUYWJsZVtzdC0yXT0kbCxbXX0pLFtdfSl9LGQ6KEVlLFZlLHN0LE10LFl0LGFuLEluLEtuLGxpLFFpKT0+e1ZlPXlnKFZlKSxZdD1iOShNdCxZdCksdzkoW10sW0VlXSxRbz0+e3ZhciBJYT1g'@; put 'JHsoUW89UW9bMF0pLm5hbWV9LiR7VmV9YCxKbz17Z2V0KCl7TUEoYENhbm5vdCBhY2Nlc3MgJHtJYX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLFtzdCxJbl0pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07cmV0dXJuIEpvLnNldD1saT8oKT0+TUEoYENhbm5vdCBhY2Nlc3MgJHtJ'@; put 'YX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLFtzdCxJbl0pOmhhPT51YyhJYSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5IiksT2JqZWN0LmRlZmluZVByb3BlcnR5KFFvLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxWZSxKbyksdzkoW10sbGk/W3N0LEluXTpbc3RdLGhhPT57'@; put 'dmFyIHdsPWhhWzBdLGt1PXtnZXQoKXt2YXIgJGw9QiRlKHRoaXMsUW8sSWErIiBnZXR0ZXIiKTtyZXR1cm4gd2wuZnJvbVdpcmVUeXBlKFl0KGFuLCRsKSl9LGVudW1lcmFibGU6ITB9O2lmKGxpKXtsaT1iOShLbixsaSk7dmFyIFhjPWhhWzFdO2t1LnNldD1mdW5jdGlvbigkbCl7dmFyIG8w'@; put 'PUIkZSh0aGlzLFFvLElhKyIgc2V0dGVyIiksWGg9W107bGkoUWksbzAsWGMudG9XaXJlVHlwZShYaCwkbCkpLEgkZShYaCl9fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoUW8ucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLFZlLGt1KSxbXX0pLFtdfSl9LFI6RWU9Pnk5'@; put 'KEVlLEw1bikscDooRWUsVmUsc3QpPT57eTkoRWUse25hbWU6VmU9eWcoVmUpLGZyb21XaXJlVHlwZTpNdD0+TXQsdG9XaXJlVHlwZTooTXQsWXQpPT5ZdCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpONW4oVmUsc3QpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9LGM6KEVlLFZlLHN0LE10LFl0'@; put 'KT0+e1ZlPXlnKFZlKTtsZXQgSW49bGk9PmxpO2lmKDA9PT1NdCl7dmFyIEtuPTMyLTgqc3Q7SW49bGk9PmxpPDxLbj4+PktuLFl0PUluKFl0KX15OShFZSx7bmFtZTpWZSxmcm9tV2lyZVR5cGU6SW4sdG9XaXJlVHlwZToobGksUWkpPT5RaSxyZWFkVmFsdWVGcm9tUG9pbnRlcjpQNW4oVmUs'@; put 'c3QsMCE9PU10KSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfSxiOihFZSxWZSxzdCk9Pnt2YXIgWXQ9W0ludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5XVtWZV07ZnVuY3Rp'@; put 'b24gYW4oSW4pe3JldHVybiBuZXcgWXQoVG8uYnVmZmVyLGFvW0luKzQ+PjJdLGFvW0luPj4yXSl9eTkoRWUse25hbWU6c3Q9eWcoc3QpLGZyb21XaXJlVHlwZTphbixyZWFkVmFsdWVGcm9tUG9pbnRlcjphbn0se2lnbm9yZUR1cGxpY2F0ZVJlZ2lzdHJhdGlvbnM6ITB9KX0scTooRWUsVmUp'@; put 'PT57eTkoRWUse25hbWU6VmU9eWcoVmUpLGZyb21XaXJlVHlwZShNdCl7dmFyIEluO3JldHVybiBJbj1JcihNdCs0LGFvW010Pj4yXSwhMCksdDUoTXQpLElufSx0b1dpcmVUeXBlKE10LFl0KXtZdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoWXQ9bmV3IFVpbnQ4QXJyYXkoWXQpKTt2YXIg'@; put 'YW4sSW49InN0cmluZyI9PXR5cGVvZiBZdDtJbnx8QXJyYXlCdWZmZXIuaXNWaWV3KFl0KSYmMT09WXQuQllURVNfUEVSX0VMRU1FTlR8fHVjKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIHN0ZDo6c3RyaW5nIiksYW49SW4/UmEoWXQpOll0Lmxlbmd0aDt2YXIgS249cTRlKDQrYW4rMSks'@; put 'bGk9S24rNDtyZXR1cm4gYW9bS24+PjJdPWFuLEluP2N5KFl0LGxpLGFuKzEpOnV0LnNldChZdCxsaSksbnVsbCE9PU10JiZNdC5wdXNoKHQ1LEtuKSxLbn0scmVhZFZhbHVlRnJvbVBvaW50ZXI6bFgsZGVzdHJ1Y3RvckZ1bmN0aW9uKE10KXt0NShNdCl9fSl9LGg6KEVlLFZlLHN0KT0+e3Zh'@; put 'ciBNdCxZdCxhbjtzdD15ZyhzdCksMj09PVZlPyhNdD1qNW4sWXQ9VTVuLGFuPXo1bik6KE10PVc1bixZdD1ZNW4sYW49WjVuKSx5OShFZSx7bmFtZTpzdCxmcm9tV2lyZVR5cGU6SW49Pnt2YXIgbGk9TXQoSW4rNCxhb1tJbj4+Ml0qVmUsITApO3JldHVybiB0NShJbiksbGl9LHRvV2lyZVR5'@; put 'cGU6KEluLEtuKT0+eyJzdHJpbmciIT10eXBlb2YgS24mJnVjKGBDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAke3N0fWApO3ZhciBsaT1hbihLbiksUWk9cTRlKDQrbGkrVmUpO3JldHVybiBhb1tRaT4+Ml09bGkvVmUsWXQoS24sUWkrNCxsaStWZSksbnVsbCE9'@; put 'PUluJiZJbi5wdXNoKHQ1LFFpKSxRaX0scmVhZFZhbHVlRnJvbVBvaW50ZXI6bFgsZGVzdHJ1Y3RvckZ1bmN0aW9uKEluKXt0NShJbil9fSl9LHM6KEVlLFZlKT0+e3k5KEVlLHtpc1ZvaWQ6ITAsbmFtZTpWZT15ZyhWZSksZnJvbVdpcmVUeXBlOigpPT57fSx0b1dpcmVUeXBlOihzdCxNdCk9'@; put 'Pnt9fSl9LEg6KCk9Pnt9LHc6ZnVuY3Rpb24gdDZuKEVlLFZlLHN0KXt2YXIgTXQ9UFAoRWUsVmUpLFl0PW5ldyBEYXRlKDFlMypNdCk7aWYoaXNOYU4oWXQuZ2V0VGltZSgpKSlyZXR1cm4gMTt4aVtzdD4+Ml09WXQuZ2V0U2Vjb25kcygpLHhpW3N0KzQ+PjJdPVl0LmdldE1pbnV0ZXMoKSx4'@; put 'aVtzdCs4Pj4yXT1ZdC5nZXRIb3VycygpLHhpW3N0KzEyPj4yXT1ZdC5nZXREYXRlKCkseGlbc3QrMTY+PjJdPVl0LmdldE1vbnRoKCkseGlbc3QrMjA+PjJdPVl0LmdldEZ1bGxZZWFyKCktMTkwMCx4aVtzdCsyND4+Ml09WXQuZ2V0RGF5KCk7dmFyIGFuPTB8KEVlPT4oKEVlPT5FZSU0PT0w'@; put 'JiYoRWUlMTAwIT0wfHxFZSU0MDA9PTApKShFZS5nZXRGdWxsWWVhcigpKT9RNW46SjVuKVtFZS5nZXRNb250aCgpXStFZS5nZXREYXRlKCktMSkoWXQpO3hpW3N0KzI4Pj4yXT1hbix4aVtzdCszNj4+Ml09LTYwKll0LmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIEluPW5ldyBEYXRlKFl0Lmdl'@; put 'dEZ1bGxZZWFyKCksMCwxKSxLbj1uZXcgRGF0ZShZdC5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxsaT1Jbi5nZXRUaW1lem9uZU9mZnNldCgpLFFpPTB8KEtuIT1saSYmWXQuZ2V0VGltZXpvbmVPZmZzZXQoKT09TWF0aC5taW4obGksS24pKTtyZXR1cm4geGlbc3Qr'@; put 'MzI+PjJdPVFpLDB9LHU6ZnVuY3Rpb24gbjZuKEVlLFZlLHN0LE10LFl0LGFuLEluLEtuKXt2YXIgbGk9UFAoWXQsYW4pO3RyeXt2YXIgUWk9QXUuZ2V0U3RyZWFtRnJvbUZEKE10KSxRbz1PdC5tbWFwKFFpLEVlLGxpLFZlLHN0KSxJYT1Rby5wdHI7cmV0dXJuIHhpW0luPj4yXT1Rby5hbGxv'@; put 'Y2F0ZWQsYW9bS24+PjJdPUlhLDB9Y2F0Y2goSm8pe2lmKHR5cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PUpvLm5hbWUpdGhyb3cgSm87cmV0dXJuLUpvLmVycm5vfX0sdjpmdW5jdGlvbiByNm4oRWUsVmUsc3QsTXQsWXQsYW4sSW4pe3ZhciBLbj1QUChhbixJbik7dHJ5e3ZhciBsaT1B'@; put 'dS5nZXRTdHJlYW1Gcm9tRkQoWXQpOzImc3QmJkF1LmRvTXN5bmMoRWUsbGksVmUsTXQsS24pfWNhdGNoKFFpKXtpZih0eXBlb2YgT3Q+InUifHwiRXJybm9FcnJvciIhPT1RaS5uYW1lKXRocm93IFFpO3JldHVybi1RaS5lcnJub319LEI6KEVlLFZlKT0+e2lmKEhQW0VlXSYmKGNsZWFyVGlt'@; put 'ZW91dChIUFtFZV0uaWQpLGRlbGV0ZSBIUFtFZV0pLCFWZSlyZXR1cm4gMDt2YXIgc3Q9c2V0VGltZW91dCgoKT0+e2RlbGV0ZSBIUFtFZV0sKEVlPT57aWYoIWVlKXRyeXtyZXR1cm4gRWUoKX1jYXRjaChWZSl7KEVlPT57aWYoRWUgaW5zdGFuY2VvZiBQb3x8InVud2luZCI9PUVlKXJldHVy'@; put 'biB2ZTtpKDAsRWUpfSkoVmUpfX0pKCgpPT5RJGUoRWUsJCRlKCkpKX0sVmUpO3JldHVybiBIUFtFZV09e2lkOnN0LHRpbWVvdXRfbXM6VmV9LDB9LEk6KEVlLFZlLHN0LE10KT0+e3ZhciBZdD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksYW49bmV3IERhdGUoWXQsMCwxKSxJbj1uZXcgRGF0'@; put 'ZShZdCw2LDEpLEtuPWFuLmdldFRpbWV6b25lT2Zmc2V0KCksbGk9SW4uZ2V0VGltZXpvbmVPZmZzZXQoKSxRaT1NYXRoLm1heChLbixsaSk7YW9bRWU+PjJdPTYwKlFpLHhpW1ZlPj4yXT0rKEtuIT1saSk7dmFyIFFvPWhhPT57dmFyIHdsPWhhPj0wPyItIjoiKyIsa3U9TWF0aC5hYnMoaGEp'@; put 'O3JldHVybmBVVEMke3dsfSR7U3RyaW5nKE1hdGguZmxvb3Ioa3UvNjApKS5wYWRTdGFydCgyLCIwIil9JHtTdHJpbmcoa3UlNjApLnBhZFN0YXJ0KDIsIjAiKX1gfSxJYT1RbyhLbiksSm89UW8obGkpO2xpPEtuPyhjeShJYSxzdCwxNyksY3koSm8sTXQsMTcpKTooY3koSWEsTXQsMTcpLGN5'@; put 'KEpvLHN0LDE3KSl9LHo6ZnVuY3Rpb24gZDZuKEVlLFZlLHN0LE10KXt2YXIgYW47aWYoUFAoVmUsc3QpLCEoRWU9PkVlPj0wJiZFZTw9MykoRWUpKXJldHVybiAyODthbj0wPT09RWU/cSRlKCk6JCRlKCk7dmFyIEluPU1hdGgucm91bmQoMWUzKmFuKjFlMyk7cmV0dXJuIGVpPVtJbj4+PjAs'@; put 'KGZyPUluLCtNYXRoLmFicyhmcik+PTE/ZnI+MD8rTWF0aC5mbG9vcihmci80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChmci0rKH5+ZnI+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSx4aVtNdD4+Ml09ZWlbMF0seGlbTXQrND4+Ml09ZWlbMV0sMH0seTooRWUsVmUsc3QpPT4oKEVl'@; put 'LFZlLHN0KT0+e3ZhciBNdD0oKEVlLFZlKT0+e0c0ZS5sZW5ndGg9MDtmb3IodmFyIHN0O3N0PXV0W0VlKytdOyl7dmFyIE10PTEwNSE9c3Q7VmUrPShNdCY9MTEyIT1zdCkmJlZlJTg/NDowLEc0ZS5wdXNoKDExMj09c3Q/YW9bVmU+PjJdOjEwNT09c3Q/eGlbVmU+PjJdOnRzW1ZlPj4zXSks'@; put 'VmUrPU10Pzg6NH1yZXR1cm4gRzRlfSkoVmUsc3QpO3JldHVybiBBNm5bRWVdKC4uLk10KX0pKEVlLFZlLHN0KSxsOnEkZSxDOkVlPT57dmFyIFZlPXV0Lmxlbmd0aCxzdD0yMTQ3NDgzNjQ4O2lmKChFZT4+Pj0wKT5zdClyZXR1cm4hMTtmb3IodmFyIE10PTE7TXQ8PTQ7TXQqPTIpe3ZhciBZ'@; put 'dD1WZSooMSsuMi9NdCk7WXQ9TWF0aC5taW4oWXQsRWUrMTAwNjYzMjk2KTt2YXIgYW49TWF0aC5taW4oc3QsZzkoTWF0aC5tYXgoRWUsWXQpLDY1NTM2KSk7aWYobTZuKGFuKSlyZXR1cm4hMH1yZXR1cm4hMX0sSjooRWUsVmUpPT57dmFyIHN0PTAsTXQ9MDtmb3IodmFyIFl0IG9mIFZQKCkp'@; put 'e3ZhciBhbj1WZStzdDthb1tFZStNdD4+Ml09YW4sc3QrPWN5KFl0LGFuLDEvMCkrMSxNdCs9NH1yZXR1cm4gMH0sSzooRWUsVmUpPT57dmFyIHN0PVZQKCk7YW9bRWU+PjJdPXN0Lmxlbmd0aDt2YXIgTXQ9MDtmb3IodmFyIFl0IG9mIHN0KU10Kz1SYShZdCkrMTtyZXR1cm4gYW9bVmU+PjJd'@; put 'PU10LDB9LGc6KEVlLFZlKT0+e3ZlPUVlLFokZShFZSl9LGY6ZnVuY3Rpb24gdzZuKEVlKXt0cnl7dmFyIFZlPUF1LmdldFN0cmVhbUZyb21GRChFZSk7cmV0dXJuIE90LmNsb3NlKFZlKSwwfWNhdGNoKHN0KXtpZih0eXBlb2YgT3Q+InUifHwiRXJybm9FcnJvciIhPT1zdC5uYW1lKXRocm93'@; put 'IHN0O3JldHVybiBzdC5lcnJub319LG46ZnVuY3Rpb24gUzZuKEVlLFZlLHN0LE10KXt0cnl7dmFyIGFuPSgoRWUsVmUsc3QsTXQpPT57Zm9yKHZhciBZdD0wLGFuPTA7YW48c3Q7YW4rKyl7dmFyIEluPWFvW1ZlPj4yXSxLbj1hb1tWZSs0Pj4yXTtWZSs9ODt0cnl7dmFyIGxpPU90LnJlYWQo'@; put 'RWUsVG8sSW4sS24sTXQpfWNhdGNoKFFpKXtpZihZdD4wJiZRaSBpbnN0YW5jZW9mIE90LkVycm5vRXJyb3ImJig2PT1RaS5lcnJub3x8Nj09UWkuZXJybm8pKWJyZWFrO3Rocm93IFFpfWlmKGxpPDApcmV0dXJuLTE7aWYoWXQrPWxpLGxpPEtuKWJyZWFrO3R5cGVvZiBNdDwidSImJihNdCs9'@; put 'bGkpfXJldHVybiBZdH0pKEF1LmdldFN0cmVhbUZyb21GRChFZSksVmUsc3QpO3JldHVybiBhb1tNdD4+Ml09YW4sMH1jYXRjaChJbil7aWYodHlwZW9mIE90PiJ1Inx8IkVycm5vRXJyb3IiIT09SW4ubmFtZSl0aHJvdyBJbjtyZXR1cm4gSW4uZXJybm99fSx4OmZ1bmN0aW9uIEU2bihFZSxW'@; put 'ZSxzdCxNdCxZdCl7dmFyIGFuPVBQKFZlLHN0KTt0cnl7aWYoaXNOYU4oYW4pKXJldHVybiAyMjt2YXIgSW49QXUuZ2V0U3RyZWFtRnJvbUZEKEVlKTtyZXR1cm4gT3QubGxzZWVrKEluLGFuLE10KSxlaT1bSW4ucG9zaXRpb24+Pj4wLChmcj1Jbi5wb3NpdGlvbiwrTWF0aC5hYnMoZnIpPj0x'@; put 'P2ZyPjA/K01hdGguZmxvb3IoZnIvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoZnItKyh+fmZyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seGlbWXQ+PjJdPWVpWzBdLHhpW1l0KzQ+PjJdPWVpWzFdLEluLmdldGRlbnRzJiYwPT09YW4mJjA9PT1NdCYmKEluLmdldGRlbnRzPW51'@; put 'bGwpLDB9Y2F0Y2goS24pe2lmKHR5cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PUtuLm5hbWUpdGhyb3cgS247cmV0dXJuIEtuLmVycm5vfX0sUDpmdW5jdGlvbiBUNm4oRWUsVmUsc3QsTXQpe3RyeXt2YXIgYW49KChFZSxWZSxzdCk9PntpZigxPT1zdClyZXR1cm4gT3Qud3JpdGUoRWUs'@; put 'VG8sYW9bVmU+PjJdLGFvW1ZlKzQ+PjJdLHVuZGVmaW5lZCk7Zm9yKHZhciBZdD0wLGFuPTAsSW49VmU7YW48c3Q7YW4rKyxJbis9OClZdCs9YW9bSW4rND4+Ml07dmFyIEtuPW5ldyBVaW50OEFycmF5KFl0KSxsaT0wO2Zvcihhbj0wO2FuPHN0O2FuKyssVmUrPTgpe3ZhciBRaT1hb1tWZT4+'@; put 'Ml0sUW89YW9bVmUrND4+Ml07S24uc2V0KHV0LnN1YmFycmF5KFFpLFFpK1FvKSxsaSksbGkrPVFvfXJldHVybiBPdC53cml0ZShFZSxLbiwwLFl0LHVuZGVmaW5lZCl9KShBdS5nZXRTdHJlYW1Gcm9tRkQoRWUpLFZlLHN0KTtyZXR1cm4gYW9bTXQ+PjJdPWFuLDB9Y2F0Y2goSW4pe2lmKHR5'@; put 'cGVvZiBPdD4idSJ8fCJFcnJub0Vycm9yIiE9PUluLm5hbWUpdGhyb3cgSW47cmV0dXJuIEluLmVycm5vfX0sRzpaJGUsTDooRWUsVmUpPT5nbyh1dC5zdWJhcnJheShFZSxFZStWZSkpfTtmdW5jdGlvbiBLNGUoKXtyZXR1cm4oSzRlPUNyKGZ1bmN0aW9uKigpe08xJiYoeWllbGQgZmYoKSks'@; put 'IWVlJiZmdW5jdGlvbiBBdCgpe0hlPSEwLCFlLm5vRlNJbml0JiYhT3QuaW5pdGlhbGl6ZWQmJk90LmluaXQoKSxUaC5pbml0KCksQlAuVCgpLE90Lmlnbm9yZVBlcm1pc3Npb25zPSExfSgpfSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gQlA9eWllbGQgZnVuY3Rpb24gSHIoKXty'@; put 'ZXR1cm4gdGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSgpLHlpZWxkIGZ1bmN0aW9uIEI2bigpe3JldHVybiBLNGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSgpLGV9KSxrNGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBSNGUsT2ZuPW5ldyBJbnQ4QXJyYXkoWy0xLC0xLC0xLC0xLC0xLC0x'@; put 'LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLDYyLDkwLDYzLDY0LDY1LDY2LC0xLDY3LDY4LDY5LDcwLDcxLC0xLDcyLDczLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDc0LDc1LDc2'@; put 'LDc3LDc4LDc5LDgwLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsODEsLTEsODIsODMsODQsODUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcs'@; put 'NDgsNDksNTAsNTEsODYsODcsODgsODksLTFdKTtmdW5jdGlvbiBQZm4oKXtyZXR1cm4gUjRlPz89ZnVuY3Rpb24gSWZuKG4sZSl7Zm9yKHZhciB0PVtdLHI9KyFlLGk9MCxvPTA7bi5sZW5ndGg7KXt2YXIgYT13Zm4obixyfHxlKTtpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihyPyhlPW51'@; put 'bGwsYS53Lmxlbmd0aD09YS51JiYodC5wdXNoKGU9YS53KSxvKz1hLnUpKToodC5wdXNoKGUpLGEuZT0wKTshYS5sOyl7dmFyIGw9a2ZuKG4sYSxlKTtsfHxJMSg1KSxlP2EuZT1hLnk6KHQucHVzaChsKSxvKz1sLmxlbmd0aCxfZm4oYS53LDAsbC5sZW5ndGgpLGEudy5zZXQobCxhLncubGVu'@; put 'Z3RoLWwubGVuZ3RoKSl9aT1hLmIrNCphLmN9ZWxzZSBpPWE7bj1uLnN1YmFycmF5KGkpfXJldHVybiBmdW5jdGlvbihuLGUpe2lmKDE9PW4ubGVuZ3RoKXJldHVybiBuWzBdO2Zvcih2YXIgdD1uZXcgS2goZSkscj0wLGk9MDtyPG4ubGVuZ3RoOysrcil7dmFyIG89bltyXTt0LnNldChvLGkp'@; put 'LGkrPW8ubGVuZ3RofXJldHVybiB0fSh0LG8pfShmdW5jdGlvbiBOZm4obil7bGV0IGU9bmV3IFVpbnQ4QXJyYXkoNjAwMjIyKSx0PTAscj0wLGk9MCxvPS0xO2ZvcihsZXQgYT0wLGw9bi5sZW5ndGg7YTxsO2ErKyl7bGV0IHU9bi5jaGFyQ29kZUF0KGEpO2lmKHU+MTI3KWNvbnRpbnVlO2xl'@; put 'dCBnPU9mblt1XTtpZighKGc8MCkpaWYobzwwKW89ZztlbHNle28rPTkxKmcscnw9bzw8aSxpKz0oODE5MSZvKT44OD8xMzoxNDtkb3tlW3QrK109cixyPj4+PTgsaS09OH13aGlsZShpPjcpO289LTF9fXJldHVybiBvPj0wJiYoZVt0KytdPTI1NSYocnxvPDxpKSksZX0oJ3Y3I2EjQSg/PzZp'@; put 'PTl4QnQ8VCgiKDh0VVchLm07eSkjXlYpW3I9OEMkOHhUR0khOy5wMXw3N3Z8UklFeixwOjhpIj84bXtKO0xHcmM+TkEoOGwuek8lUyMjaWYmV1ludzZzPC9vRzgmKCtrPkRkSTZYSFg9PXg5cnIhPjVBbXdsOnF8XyNdUSVMX35rbiRoXVV7aHZXM3chKGJGZEcofFYvQH1zZzloYnUubFFHM0Jw'@; put 'NHM9akg4LzNyfkg5KyN1L0FxbWB5cSM7RHJGY2BsW09UcS4zeGg/XXYoYTssZSZoIW5rOF5KdW5bTz12PiprOCVtSHNtNn5qJms+YjtaT1NEJEsqYiE+N3lUWG0+eiUuIls+ZF9ye3hPZ1Nufig0UUBFbUxAZXFieHgpUFNaQXFvYEdWP3crSm18bnN8JSg3OzJ9VyklRDI6bz1vQSM8ZCRDOWBl'@; put 'XX1wXzphNyk5NUBiVmBqNH5ye0Q3NHZFcV5bQCZpJlpOenh+P0AsX3J2fkZiL2dmfV0oWihlWFExV1dnMDR6PmUhYnkscUg1XWxYK11rOEtIWjZPaT4/V0NGc1JIREJnJHg+YGc9cX09KzlYfURnaltsUm9gczRBaEI/PE9CMW1SYGo9Yk8xPWwhYUV4SGNVUUxAZzpiV01Yc1ppJVVTUV9RXlAh'@; put 'aXIkXV5iVXJXZyh0THIsNWVyUnghZFM1dTBmN0ZEdnY2IjpNNEdGMkFlVH4xKjsleVtFVExVNFdtdjJnd0tlQFslcVtzM3ZAYSJueCx3MVBxSEk8WTBmdF9TUXZRZSVHV1dlcGBhQWheUShGaDtZMGZ0QDI8aTJqfnpedm1bMikjPjNIfXBwZTZxNkBYLk5jL3BqUEojSHclS2Jtc11KQl98ITNV'@; put 'SFNwakBSVGJGQF1vZCM5bTNvbCJlZT1LQmM0bEt3NkwobVZ0XTh8d205eV07ezE2Yj07T3hbTz8vYU5MX08vdXI7cTRVcSxGJnY+U0AhZCV8ISlAYn1IN3kxfGAjMmxlPDZ1QlpET3xqL0xjVzNoKiokI1VwVjRwXiVPQlN6MiM9Iz4uQ3ZaK0BZem8zbnZ4Kkl4VyhlMEE0IzRIND80cTMxTTJC'@; put 'YCYqLnopczd+ak5jRmI5KS9vNDZ8fDVgM3tNcjh7U1slWjMlKy4mblJbbmR7OFo6bUA+PG1WP116cztsfT1CJU9DQW8oXSk3N2ByZ2AjamJWciFnR2oqOkk/a2krNSZkciluVClLNXdGb2duQDhpbG9QUTE7Nz9DK2BURH1rRjF5VCtgbSQ7T21ydmhbZ1Y9cU0qQHk+LDI9LH5PL1hhIyJfO1t7'@; put 'Zzd6fSU5STdKVGV4R3MobkddJktjL1p3SiRMPTdDLDhBMXczXXFYW2kveXFhOWRyLntRbWdlcnhmLipfMGpHbnovVTY1QEs5NDJEWS4zSHc+Iip0c2lXZXlufUIzQCRvdXtieXg7YFFNdVZaKjlpRXNBdl49LHswQ303bElUKGM8fDhJXjImYyhgWzB9aVpiayE3PFdMcjV4PyxWUW01OllJUER6'@; put 'MkYreWRtRGZHYHcyOGk/QFpOOksycE59WDdsNy5KNzNyan0pVjtFKCl4SG1PXmIyemE9PUlQK3xfN3lZLC4xczVAPXFoOlc7QzVNVUtufCQuMFJrY1dCU1s6Y1JtcjZYQkR5KVdaMk1oOzBMbSguUnQ/IX1NcSRTOzlxdnc9WThXW183SChWO3BCXTttSkZyfUNoLi4yISRET2AyaDA2Rn4mOVQ1'@; put 'KVR4Vyg2NyFgMSp2TSZ4VGdYN0t9Y31iS0Bme29RWVs1bmJsWyI1Sjh6eFZIbFtYZy9eJW9yWVYkVXA1WkZPX0pndkplOTJYalFGTSxzPitJfnVRanxzP0Q8filZPDBLbnV4N1AhakFwNCRpLCF+ZmRXVlZBRHYlVSZoP0BTUyUyaWJhTiJNOj1APXpZLlNZNzx4cE5FfmdrKHN7PkYzNW1pbTgy'@; put 'TXE/PHtTejgvcGhDTF9TP3RuQXFNWFNaR1RGUWBPU1ZGeThsVkR6Lms+OiF8ZFY+c3swPT81W25ANzx7OXhJQG57VmFmfkFVSlMiOUM7U1Q+VHR1cUc3eiVYZH52dmtOOT97V1JJUV84XUxVVyFmZDR8fixWS1VAW0xvXmUmZnl2ZzdQemEmdHxjdCsmRFE7NWVAUit8dWBSNWpVcnhJKEUlVSx3'@; put 'LjluWGJJUyQqV1d2bSQpUWlpMDtFfUZfK05Ra3gsOGc/by41WlgoKXUhejZEVFNJXVZVOGRdWis3Zlh5MmopSC4ocSMpLy40TFliJDZjSjN7N0lFMXphbj9hRiYzWWRJL0hOYUh8UjQpS3xZfWFlPls/fT1Wd2ZxYi5VIyl7UkI6eWE5VT1qZm1ZezdFMkQ1Tyg6MD16blZlYHs3XitTXmJLTjRP'@; put 'WzAsQChSczA9R1BsPXcsYTRVVypWRFpBblJVeiwrLEBKTU54Zm88SGM3eVE2TnpxOUskan03PW9gNHtqfTcoKyQ+bGxNL2VmUUJQYFNid2MkZmNPUnNhSz5iP3FnJWVUSCZfN2hfQTBRfDxPMXF8SDd5fFJGWUhUOTh9YDAjOlUlKSpnOy9pOFpASkBNdU1kTGByczEsL0BsLy5JZ1dQfSF4OSks'@; put 'MnlnIVU2RTwlfVpUUW1gelB6UUpvfl1GVXtRZF5KS2V2MjNucCUuJjpySE86M19meV9dSihbXW5wdEAjWjpHOGddV3AsbjFMW1BlSUJ0RilaTzpMNGNfJiU+Z25lIzEudioxS0hKcncuKTtuZChrX0w0bG5EI215Z3F3TmlyeG1sT3IsXmY/O3xQWlcpNWM1eSw1UERbZVhWe24lNGx5az84QTlu'@; put 'VlsidkhXNWh6eDl3R1VeekVvcz1Jelt9QkVxfThufnI/JjY2Z0gze3l2bUliR0BYcDpWQl9wVEg0Pl4pYWkoP3skIVRITys8QjVve0ByTzFzRDNZeXp9L0pKOEJ8fW5pYy82VipGPVhfaTRXc1o/YWZXfWI9VG85JjtNO0wqYU5TXW85bnMmJT5neXpmKWNDPCxCUVVoJm5lQTtaJXVkSl8+NCxS'@; put 'b319bXA1fnZ4RTMuI2x0OVRibVJwZz8/fEd+Syl3N0t+fnhKdHdzSEVnKSpTNFo0NEdVND1WQDpuTE5RXXVSPSFFZjFfaFZKI0ZLJEtxdVVOZEQxZkVGeHZ2ZCVtfiY1emQlcFtyc1pyMjI6ZzBnXUBHNHJsWmdbLCFCVSp4LDZCbGV6MVFJTzVSJWYlLCwocXBnMHddQClYNU4oe3R1Q3JLI1VR'@; put 'cWBVTVN7KXx3YlFgS2xEITVARGRvN0JRPlMsc0MwNUc4aCRkXlpOT2pQOEIkbkhORktvJFRTUFcyYVFdUTtqMnY9cWJ1bEU7ImlxN086ZjB1KXB8XVRCZnhMeHNlZDBPSTZnYEl6NF1FM2RZajFFOERJKSNpM1c0IjZ6Zzx3bzdqMEl5LEBIL3l1fV86dH5jME9+RDs/UyVjOjVALFI2TFgmYmR2'@; put 'dy5YVGImcFBoWUJUXiVMLnlzTDF2MEBUemBQSVRkUkZ0Y0A8VGl5dGg1Tj45XU16NFJ5dENjekViYyhGbzJqTlRYKDNVejR2Z0omeT1pLF92Y1tnSWRUUzQ3elN1fV1oIXQsPltgRzdrLzw2P11USVNFelJfMHRGXjIhXyZET0lOTXE6TEQ/LjB+Y0h3eUA0T2NdVTF1QkhYdikxOmcvNDQ5KmAj'@; put 'OSVSOylEYzBKPyNnW1NdaztWMENuN1ZJWlFjclhRTHZCS2BnKE0xVFRaXVBGPGt0Q0tTUTo9SFV0XStbJiM4R181N0pQbFlkJmUkZHxDRiE0VmFbYld2IXMlWmNxYjlhZGRJRntbN148NnYyUWtpfU5VM1FZcm1NeV0jNj0kUnA5bktOO1psUWJXbntxRzd6MGF2aH1iVDtFQHxsXUpCM3J2QlVb'@; put 'TDUmREw7NyYuK0lAZjo8cTlNZFtlQ25vXkxzZz9sWyhsYT54ZUcjdmQqUylaKjN7ODlVRG9wZD9TWVcsZUJofTRGLHA4Yzc4KztYXWduOkc7aDdSW3Zaeng6NG9PI2QzPFB9ZjdYTlhWPnFpZjdVQWRAYkNdOF13WHlSUU9TOzRPWDd0aUVEUl4lZXg2QC9+T0A7UyF+XkoqM2ppakQoX110bFls'@; put 'NTU0WjA5O3phWykjXz1DSUMvczlgbUFzeTxFPmVfSDl5VFhoWmJ0JC5jYSUsK2dmNU9DJSRgIWB8TnZrWT04dWZxUiNJS1hRPzYwYTIuPjNwTnNuVCN3aFdORC8xTGR7Zy4zVnJNMGZze25UTHYufEReJT44SFkqaCEvezh9VjFZTTdkR3ZYYlBuZkBwTS5BQE4qIXNwY15lRCZwYkIyP204REF+'@; put 'V3dEbTh5VCRfdTVKbWo5JFZ4MnI5VHhtbCklRHh8JGl7Zy5uOTt6XVQ3VXtvOWA9MFgoTnxNKC85QyZvSG5DdHFjXmcmelY7NTV6bGBsKEt8JlViQGNbS3wjPVpRR14zYEwxZSQrOi8pZ3NzbF1mV1poaTdlVy4qLzxyJUpmYDtmQXtPYTpgP20xW1RtaHIlMzB4Qyxka1s8aXFtSWd2aXohMzVa'@; put 'OkdQI1k5XkpVK1EqdU42Ti9YQyxDWjBhVz5CSDhScnxuVDUqL1NoUFUqP2RjSXwqPnxaUW1eV2gqSjd6XXJmfmdIU1FTfmFlPFQmSywyNk1mVUJLaSV4MnJqNV0icDt6bTReOyNnNk5TWmhpcj41ejVoRX5WXWE2aHlFYjZOZGdrT30zSjhpWzskeHBIUWUxPy5WZ08zWzpPZ09hZj1vSjdwU29v'@; put 'XjI3PnJbZV1VOj9dZ2U6MjxwIUlePXFqS3FNemFueX0xWmIkTyowKn5dNCQwN3d+P1VWdGFoVF1ub15hV29EKkU7OXokc2dpfVpRKjwxZ11vNWVFT3V3NWlHMSMlQGU1R08xKD1ASV0zcF5jb29eeWg8VGw/KSVjOjJ+R2M4JEg2M1UzP29kYU4yPTEmfWRjaEo4fllETzRdT2tOTVd2SyJkO20r'@; put 'LENEYkxJIyVtZVNKbzQjQ1tyZl5VL0dDb20kZm80XkNKKC5Zdzgva3pYUkdtSzhmbC9rWTdJX3llbVcmfVdeSUMuUSQ0a110eFBoN0hiWC89Kn5VK3FQMk0hKWlBdiVQIiRmXnRnSEApREY/eE5pI0NYckkidTk8cC9RQ2BvUDtOSm8vYEJybUNTZSNdNHhFWl5RJCRmeTQ5RVpZY3ZNaHQ0aVoq'@; put 'TkdhX1hpWGFPQFd0Y1BmaiF0WHFPI1oiRmlMZEg5I3xMLlciTzYhIjQmTCpIKD18TDpXR0tZQHcvQktyTD1IfFt8TClMVEYkPH5MPFcrS1lALmguWHJMelh7WHlYYkwpTT92ckJCd3NjcDRVRGUwMEVWSm0vbVkvR1lVOTxyNHhFWmNtZTVrOFheSSwxczh9dkd1QmR+RltGSURVS340LEwxSEsq'@; put 'IkMmRmhFU3RBTUE1XVdGTjVkflg8dDphKltDWWdYS0RHVWZtP3YpdVVHb1VobT92LllLRGFZfUxLRzRESmJSUSVGJERFNnRjc0wxSEBjQTV+V3ZQTTBydSVgT0NOPHRaKUZCRTkjdGNHd0VDeT0qW312R0N8PldPfnZ2dnRoIkMqRkdGSyp0L3ZMVUt7a0J3KkZwRTsxfjRbTEhKNiFBNUxHNUVw'@; put 'N340XUwwS3lAdS94TFgvUlZIVTljIlF9R2JZSUQ6JD8oP0NENmQ1ZFIlRGx6ZjUiaCxIbVMzSypJIkJ8b2NATFZ2Uk9FVTJRR0JSbUVENTY0QEliQ2A6ZDVmUjlIZjxjTWhSPkVhKTVZTil4VkJYSER4SWB3dHNeLzVZKWk6T2htUEdFUmpGJjw1WXcpYyxOaGBgWXhtdV10UHpGUmlJM0VkTU1p'@; put 'UU14QiFZYSlTaWJqaE1jP2YqMldFTmRNXygvdzMwVSwyK2h4OHU2MTkvN3VsKlBiPVt4SXl4ZS9IRF9DL3dPNU9Hcng6dXo2OGMmSSlEZWZlNVZpRFReLzZZQWopUW4jYXglalVReXVheH11MiVQeihJXXhiJk9HKUlWRS91ZTVqaWZDVHdlNWJpb1U9N2c1ZGllUzlkW3ZGdk5ofnRfWEgpSWdJ'@; put 'YTdZISlgcHl1I1lJaj5TUEgmK31bVGpoTCp1UEhQT2g1JWQhNXhaJEx+Il5EKzZPbSE1aUxFQnhJJSo8YyR5blhZQ3NTODg/Mjd1ekJFUEA4YSY2NDZMMU4pPDQ0X1dzQ1dVUF4iYC99SncwSXRFMlV1R2lWNzt4ZC5nYSZoR240Y10jNS9XUm8zITVXJjVpWkFYOkVqamxqSE8wUEJOaEN7Y2w0'@; put 'ZXlFMFNHdnoodGtJKys/V0JEYGsyUjJXOyJFMGNJSWVFQ3B6ajRickUwRUliViw3fXQ9RHI3Qk5jQm5YVUJpL1h0KGRQYzpTXWFQYyVqcVNQY2ZwNzNmRyx5YkIqRFNmRjAhSC86R09pUGV3TmN8MUcwXTd2RGdDdnROY0AoSkkyNEtvNSE0V1k7UVF6QU5JYiJfYUpPRFBZb1RNPkJuWEFCU280'@; put 'V0xhSE8wUCsrcSI0dU9jbWtCTilCWzVVdFFtT2MuZSNEKkVATVV0eWdPY2hqQ2F+RGFRdUFPMVU/YEh3QDFIRHZ6V3hZcWcvQiY0aT9ZT1lvTUgqV0YwITNELHJPQ2FMRmtAWnRWSFBjNm9CTk5DQE1adGMmT2NHa0JOVkN7YzNXcU5ITyFSdnpUWER5RjBpR3Z6SEJ+a0xPT1J2eiZYT0UqWj9M'@; put 'dXZHSzNoRnglVzxISE9+USMjK08qRElUcDd7Mn1MT3RpfUF9SDdTSnZYKCQ7REFSSWdKZ0pnZXh+NClGfkFHSyI+K3UmOmQvO1c2LyJDUmM5Yzs3SUkqRkdONUQjP0x0fTJ6ZFlFbmhNPCYkMnQyODAzcHFEQnRZIzw6bk10XkEoe0htbW40V19qSV5PYz9tPiZ5ZGNJPT8rT0V5fVFeRGgvXSJp'@; put 'QnZGW2ZJbzddeDhOIXhYMkRqT2pIeXZhIj9BM3h5U084KWt9WFRHP1ksSH0hP1R+WFlHV05xRUZrMDhYa0I1QUR+KSNMNURpZCo1dD9dRmN2SVFLbDVkdT9ldEdCInd+WGFHUVpZYzUzemJtYTMhR3p3RDohSHo+Qns1KHo6SSp5OXdjUTJ7YTRaYlRDU2pFWD5JaDU4eU50M1hUSlE4MyFKejxE'@; put 'L1J5TCtIfG03UGwrZkJCQ3dhfjNuZlc6MyFmIiZZPUkveSNDXlBfeShDfiRmO1JjbFNvRTEiZVgzRTlSW2YsI3IsQFFLdDpBa1R3P3s+PHVlSGBJd3dIT1NjUmd5e3QvSXQwR3hZVUlXaGh+VyFHTS9GcHUuUWpYNi8pa0NNPEZRTmxENGIjci4+TypQR0VIJVlxR20wTGZkTDxGdnVVTSwjdEJ3'@; put 'L152YVg0MGRSaHRacn5yIXM8OF5qWTd7WExHZHU+T2FpNiFCd3hXNkxiaiRpXU43SXtvbWEsMC9rRFUsLzR6JERKdzg4bSs0WUJQLCN4bDddRmYzdHdQa0t7eG9TQHleQ0kocCpSbXJuTHU7T1UuYHhDIU91W0hoZTgwVTM+MTEra3U2V2Rwd1B5TClGZixRJGRmJShNKXRJVmQ0IThMKElhdFJ6'@; put 'bXgzVzYvaix7OURCXVA0Ni8lITgiOVlZWnk0Y0kkN1I6K191ZGRUdng4UmZNenl4WWN7dSU8P0lRIWFZbFRbZnRgNCFBYDEqMkVjLFY1L0k1KyJ1cW1uLDlQZGp1TWpJenQpSE1NR3dyKTZ4MUoqOU9tSmY7dDpSfFBZO1FmP3RAUF88dThnaW8sW0d7JE04I2tHKSNKMU9le3hQRCl8Sm1AZXtB'@; put 'Zkd1S1J5IVg7UyFPQ2BpUzZiZURpdEV3XSNqejhqIWNDa2xkcHlQLy9LdSlUOEA3Q3g4SilYLzQzMmlIVFZqd018MDNjQlhAREEhLEJHZi9aL0lEaThEZDdMUElmfHQjU304N11BIXt1cUhPXXx6WWU2X30iRVQyMCowQWlCRV08fGpCZmlgJnVWUXlddFBXelB5YUhQciwwW3l4RSZSfnRLYlZq'@; put 'T3VfVDorN11CIUtDVmlIanQ4amlkRT8qaWEzOEcpIklEO2ssSmYqaTVFLjo2XUpmPCk4S2JjXmZ2OCRnIitKWkdRTDpdYXIrTFpQVkQ5SzFqaj4vMTVwd2dLTGRmXjlrTzV3RDVjWmRiUzdxa1hXSHdlMXhTL2YqJkRBNn5aPThYcXN0T0lmcmMjMi9GQmlSN0hOSW1xdHQ+SWw1ITxrNGJDemw8'@; put 'OCFrcFghSFlteWFrUyk0bkNfNUF3RE0oVzNIWUA9dkRCejZMSD52SkJZN1g3I0ZqQ1F7QVlCTSpMekY1UlFKbi87QmplUSRoI35XPkh5bThmdjQ9RUBuK0dkUzYvU0MlazlwaSNfNCVFQFd+NDxMS0l6RHtYN1hlLF9jMnc1WUgpZWVjQFN6RVJTSV9kPlt3SWl4disyK3hJJERxNyEvJkk6eGhA'@; put 'MVooWS9YIXcsSHhUXixMYCV5N1gvRFNneD06SU1JKSgxUUVFNG4qRUYsNzQ8THM0fk5mNUgsKV9bdk1YM0hhVkxIc2lJd2VYI0g5IyJDRE1QKitMYUVDKTVMYUdmWSRTQnp0Wn5YWkdpdjRjRDliZip5WEMqOFR2U2pDLHNZR1FJZX1qVGpiWEFTV1U6MX5oNXdZUSIhdTh4TD5Id20vSUJpekMh'@; put 'JT1wOFJXRzFILk9lZndxeXR+ZDw4XUMkazxBY0M1NFFeaDQ0eiJGK0VAez9ddGlTOn11S3deKEhwNlMuTzQ2MzoqNV88bTR4Py5oIWQ8WWRCcW1TNytbe2VjRjxZVkI2KzlTdkp9WSM0LiIiZXl4V0d8UFRjNzRdOS5LVEcsdC58enYrUzpXMHQ/YUYwfWViV3BEWnBFKjpZbXQ3R3lCeGZ3NCMo'@; put 'OkBTY1khbXMoSG9hLnckPlM1aUcoYCFIUnU9PT8qbj8wWFtnN1F2UFcpTzhiO2s6bmY0bUAlKiY3PWAlcm1hRXBMZkdeRD19ZG4wfEFtfiNOciFuai5YdmdRbz94XksxJW56YT8kUyt6KnVWQSZXdlM7PjsqZVNYanAmJV1fP10vakM5JjtzKjxASSY9O31SYGoyUS8mcWhBa1FfITk4OW1SKFEp'@; put 'fUo/P10sJiY7fiFjS1NYXiNjQVVJJTtVPypMZHtyOTtvQXhoJnsjQUlpdXB5OG5sV2tXOzszUiJQdFFCdUFoU198cDNlWjxqSzVHOjVGS3JmNHB7NHYhNzhrOXNgXWp6Pml9Q2g7M0V1KThDSypDJFV3WEFuP2csUTBwRFJYcF4seHRAeUVRQGY8NiVQbWQkbDpYZ0kpQHxeaG9vcyojIyV3LDNt'@; put 'ciQuUF0jMTc0LGR2XXVxbXkvPiFuZiw4T05sU3BYc1gsdV11RixUSm1KbUpjam5TZy80ODZpdCoyLk4jUDNDaiE7WjhCSUMjejc/QzNlK0R+MEYkbzJvYTtZVjE/XThpVjU6WyoxJS4lams9Jmo/ITRtNmguVH09cCl4KTt7bW9oPkJ8RF5kdDZydyksdHplMkYiJGZfd3ZNaEx8cDk9RTVtLE9w'@; put 'Q35kdVElJTMkOkp+Zl9RXXFwQkhGUWNTOElmMCsmJT9YLFt3JV48Uz0wOkhYQ3YsfVk8dCRRUnw3XzBMYGFUdjwrVnZgfWk7c1g3R2xEY3gsTVIoOzpbS2l7aFU8W0kpanYqXTtNfnpMOGgkZ3JvIyxwfXxwKFF3dkJYe2ozOmFoUHImXWhzOCxpOyEpeXxbZ0J8QjtJc3ROKE5pJGc2bGg4aD4/'@; put 'LEN1UVtmOCU9RUIuRTdTSWl4VS90OCNVI2RXPWR9Ol11bz9mb3Msdi4/ZFo/RTFCVUZQT3ZEJjpLVlpsKzQje34pUHs/KXY5W11aO1dJUzxQcC9bbH13SGlvciRCN0JpUUUxJGw+fXApJUBnTk03aXVpNzJgSUQrSH4uMz9mZ31Ucio9MUNXR0JBOCssXnFBbDtHJVAzaXBZJmY5UyVGam4kdCRS'@; put 'ZTlCTHYhRzBFSyJZSkZIUVh4Z0YqZU1hRXZwdENge1d1LCllTW9CU0NPLzpVRmo6VVExQSMlakozTzFmS2ZVY1sraVU8LztpUz5aRCZTO3Vsam8yLlhpXSNTcHdzaDNBXkprdFRVQGU9QXhMJmpYel9kfXVRQUd5S1N2X14mJXg5bHI+REtoUls2KHxSbGB3KHA4dn1EJX0scV5vNEMiai50OyV7'@; put 'SygiQiw5XWw7dlYlO2tpdTk3aD0/PV8iTmckd0M9USZnVGJYb0ROZDhrJiVMP003X2ZJdW5zYF1mO3xSTDRhO0wrSl4yd1JrWT1Sa246XWJaW3d1N28vXTMsYXB7W05Me3ZhaEZqT09oZzckTCtweVtgZ3VVXzo9RURJd01mcHlARnJ9ZX4lJDdAXi4mSmNdP0MjfH48SEZZTVcuR1koanMkVylg'@; put 'bTNeeVNke307JiVtb0EzbHlhKSNmMVdOb0l5RjZrJERAcHZhaWZoIyokLGZLJUM+bVRCQjlTN1Z5fHE3U2BTOG9LeT17Rzk3QlU6ZiUybDldPChedVoxKkExTGQmYzlXNV4hNXYpKXAuc3ZMa2F8NywlcXs0YXQzOmJRPEZ3KCxVZFs4ZylbTD9aN35tSTx6SVMmXVJaIjpoeTFRM3tJNDovamQ+'@; put 'N0Vsb2Y5OWdVbXtJOF09W1ZUQVFrcCVrX2ZNWzd5MFRKOVo3SVtrOE9eSnRuTXo9N29xXklQLFFkLntnfVZzVFReMzZzZjlnaSNwcDo8YVtBY2JBR3ZhQUBnSnNrQ2NDRnw1JTpNWksiPCkjRyRgN2Y5P0Vmb107W2NtM3duZ2lfXmhAOV0/ODsiSXZMKzVtfks9XlBbYjMiXiErfDBNNkV9PlUz'@; put 'JG52UzsrST5nUFE4OFJXbXBhcC5wbkYwOGVMUjtaLCVqODhMLjBDMEE+SVdFL0YlQWI7SF5TSVJObk1rMixaaUBWW05PNWxFJDJ3bkowSCt+X1FZOzA4MGpETmxKaktTMWxKWi5ATXx6e2hHKlBkaWZaIUU7dkduTUM4QFd+OXdpfVgmdFRHZEtbWiV4clhBUD9TXXdBfkpWOlNsLFRGJXg4VXZD'@; put 'PllwNVRCeWlHKlU6WiF3aUBkfmVaISFjWiF3aTkpXnRePHM7bytsd3hEJDhlbyFOdDM7R0owYyF+V11sa0tEbSg9JS5VPmY5aTxzWEVIWD1mdUlPM2kqJEs7XkJNYnZEJDh5ZSFOM2krQjokayMxOGZiZ2MkaWpmXUIwXmdrJEIzcHptMjBpa1NQU2J2ajFOKyFxXjJDM3BUbTtVIigmcFtmOUA6'@; put 'KSghfl42Mmt3O0c9QVFQNVhGMENwbktwdDIwOnomcFQ4SzV8OHZqTTs6eiZwQXZJTyshRzh4MmdrQ2YuW1c4ZTJgcGhiZ2MqQmk0YXtwajwlbEs8R2s8dDRnaztVLi9pPHE5UiNsSzROUjs3cFIjMzxoZihlazIoI2ZlUzskZS5bPyUvRG13Oz1Objg7cCVyOWRiZzhgJFtvKkBoZihlfDhoYlYq'@; put 'bUVDOEVDNVljTWVpLHw4WThmVnFldUh4YkAxfG00d29hX0lFWFJIeF5wQk5BW0B8OFlOTTBhaEEoI2ZARHVsWl5rNENsI2ZPWFZQWGRASWI8bjBnajVIRCZwb0QobW1rMGc5P1l3ajVIRD95WEpzNCFEeHImN1pAPFhmMEZOTDhFRl87Pmw/WjZLPyU8Nit6RnpUTTk3JGdRcSZ5I3glblYsZGok'@; put 'Z0NkNDQ+Il0+KHpgMTRWZSpPTU9dZmRSNXhgUjBpeWJtOU89bmRDTE95YkBhRTZFYixCMjh9PSIxQXJPSEMsflk2RT5HMUUoRnIjIk5IWHdEJEdpIjBLcCIxMyI+WzwqQnohZztgPHdANTV+Y2o3O3pGb35HP182Qy9UZXJKPSVXcTRFVVswTVtHT3VlQktWSDU7cllMUyxCPXIhS1NmOUNHRDth'@; put 'JTVPeiREQF9JMiEwJERAX2YyJERAX2c3Z0lHO2Y8LFl0LigsPUJBaUczeExxL31JZHtTPzlkeHhgbSJRN0RhaVRWIylIV2d6I3Z5WHZxdD54X1M3I3MrKTlNIzUoaHVqMiQ6NmpaMCNeNHtScTgpJHg5RU9eO0lQOzVOZGNPLCp2QD9mIVA/aDo5SDFBWkxyLm1Zck4xRU15Wmt2MyVMeGRbW0hM'@; put 'T19TdVlmdHtrW3hVaSZbSU87RyV9U0BXK0NYWFZUXnZaXW1yTFFwVXZ+SnYhalNJeUgmPGQ8VFAiJjJwbW0re0N+V3dEMEtrW3RmM1tRbmAyXig8cX1ONCghVCQ/NGpZPVZHKnd7c255emV4bz9KPmJoVG1QOjMrYyNGcVYqTX4lN0w9VDVoWk1JSzRtNVQ7aXVJdFB9RiViU0loJGZVJUp2MmIl'@; put 'NFNZN1h0YElnWzQ0O288bSFCNCtzI1EmeDNVLC9fKGYpZFQmeGhoeXwkX0A8SWZTT2BlRVlMOT5yKVkmSmpLIlNHWXpPd0BxdFYlXm19QHg7RG1bMi5zcjs1ZmlpSHAkek9sTiJWdkVHfnJHeHNrYFNib1UjX3FkXzsid3ZdNDZlOUZ6dDtYVWdbOyEqWlAzOU9wUXBnWXVdZ3lSUEUxVXI3YC5n'@; put 'JWBRRWdWWSNEUSF3N0dGKy5RMys1Q3ExTDY2Yj5eU2N5aDBHKH5PXWBHKEA2LlJdYkBuQ3E+M2JSa108fGN8OyI5cW0rX3AyLjZgR0A+cXRhZH06bmUlVXVtey5nL2B6KWIhTCplKmdQVmhsMkdzUCpAUF58P18wPmR4VHpreVR6fjRQc2M9JGJJJXpmS0l5I1lKUTtqVUhsX3BeLHE4VHl6MyVh'@; put 'ZH1MP2E+QFAvTTlhZTpHZHpiTzpqW3codVY+TC9TWTdbNXhnb2BpXUJxa104eyRScF0qO29aTzFHQ21wQjhbYjFXRVJRR09DbVpoXy5FY2p4fi54R3dhM1B0eShkeCN2SWl3SlQqeEJSXk0ld0xtJCg8eDN3PEF8PylBUUtrXkdue0V0VG9IJVZMYyQ+KHM3RyxicClYelhNWUlEa1d9ZWlYPz19'@; put 'R3NdXUk3NDluSDxpK040bXVscHx5XlBtdUA7MzBEcUYzUXx1VHQybWg9eDo+IyRnVENQeyYwZGdiR3ZgeEJyUyI8ZGklI0lKNzZlTEQuOV0sL0FWZT9eYDNJJFhAY0o6PG5ZejhzbjNfJHlGRnBFOn1EXm9eRC9LQk8uJVlNc0d5bTNMZmVlSE96UHs6c0RpayNmQSVUY1c3IjlSP2tMUDZPNyJq'@; put 'SWdZPWd7P0ZKTl1mK2t2cWlKV29pT05oQTksVTloYE81Z1pVTTg2IW5tMHFCSFA0VjpXdVdgXnk2WDVQOTR1Z2NuNlc+YEZKblZUKVciRHhNaDBFJC5kWGRWO1FZU35pZWlbY1Rqc3VIWkhSVUQ8MF8yT0d1WV9DZys/YilNL0t4QSpYTTpVNkQrTiNnbElqb1hKVHMjUCsyUVJVKDdmSkVCMldw'@; put 'KWU3Kls5S2JYe15XNFo5WEA3aSlFOixQNmExfWBdeV5KQCVeQURJTUwyWkZKYEF1WF8zKzNWVC52Zj89eE1QcFhSWnxjNCRoXStNQ3dYWURsdHwhZzwoYW0vaTdXPU1rZ3JkOnhwdHpOd3pGX0poUSYhUDlzRnI7PUB5cUl+eDF7a1lmIitiWnRuWnU4KUVEU0ZsRzU2KUooMF10MF1HJj9lKUtL'@; put 'I2hmWkEuPUpiQlR7fEQ5ZD1Nanl0UlVYITw6SU5uUV4pUnhub3gxOkwjUFVmYjI7QFB1Qk5+UTxGWW1rbTZZJFtjSjQ/U2BrbkRnWDpXPCZESWJfYV8xXmhddXEjaC9AcixsWzhIQnU2dCllSXRDOl58eW8+TVVTZF5rPy5sJmA6ez55bi93TCxZYnQ7LlcsOjwyXzUlaCorY1JafF5LYGNpPGRz'@; put 'XXsoUkhiR1IwbjxDRTFFMGF4aCM0NTpMZlcjS0tvMm4jM04jUGFZWF8jaHxYMEIpOWxDYkdjXjJIWChGYjhObElMKUZSQzZ9eV5KIzdRbVRFVSMoLy99fk9VfWxabVJ0eWFjPTEqXnBJUGBCPjZPV2pYQE88dTdaQHRvVE5hX0FVPDBXcmdqfVMoOjpMJWRFW1sjTFtRK1RPfmomUHRbZCxSWXBe'@; put 'PiMhNE16Z1ZdL2tEV0JIbW1IbiIzJThLNUFCRnAwckJTWWlYJUFbQS83RklDPyZGM3ojcyVBb1RxXW5tdWN3bFAqeD1aOFFGUVRBQndefTdfL0Y7fnZoODxOV1YrTzdOZlQldXAzZl1KQFU4KkdaTW0/LzdRI2Y0cCVlZU5LMUl9fWNtKEx6RysybT8uT0E2I0dKTXxwQUsvblZha3dGflB2SGgs'@; put 'cT91RHZJSm1SRVI7MFJjUCsmcVdRLFsxWjJNSyt2WDY2RnldVkVtQUJYMyJCKzp3RnZQWip+TUVTYnZZJlo7NWEuLlIqUmRDNk93OmhnKGN7OWgwfCpAUkA9WExNSDIrTVAoJGVTSVc3b0klfGdQRng/QEZ7b2dgOzlOZjJgRSE1SiEjSkM2S01LdWB4UH05bk9jT19eV3pWSVNkT3pERj54ZiRV'@; put 'Q1hSPjsmKC4mSjt+UGxbeU4+IjlzY0l9ZWJdKk1SPnZIT3MoPFRpQ0QwY0ZPQ1hINHA5KUMqYDNaOVF5PjgwLFBPbDZXW3A7Xnx4LmR2bTN+Vkt9WihSWnRGSis6I1ozSHlnUTxUe3k8dFlpIUo+MHNUUExGc2k4KlRCWmJbTFFaT35tPkt0JXJTQiVhOSE1c3sqTXNkW08iPGtneSNnPE1abzsu'@; put 'Z2V2MjMoT3s6PlBSVTZRfTx7UFVhWXZTUFY+W28pV3JzVnFvd31dN156Q2xbNl5pbEFvOXFPWihZYypeWyhLPFp5bSMjRGsjPUNSX2BoRlZHVShLKUU1PyRoJjxAU0p2PXtDc295bTQ8I3NGPVpjJXlFUkdSQ0JucUwpb0d9SFRmMklSVVZsdEB9KVIwUyI+Ykg6ZCUqdl8yRnokS0cuelhDYTov'@; put 'PjErSFh7UEwoLm9JdyJocz1TZzlrOEVpR2hxVXc1MSk+fCp+aV9gRyltPk8vcVJCQzgzT2BYXnZ8R2R2JiFYLE1+czZtektiST5iNiJDKkU5blNrZkw4N0hbMTxgdSZISClyPTNRQkZULkZVdnZ7eTIzRUZMKU90eTlyKUx3aFRidktEX3FRS2dxPHBIVl5FNXorKyVgNF80PG8yWD07UGsjSTxl'@; put 'bWN8IzZhLzdgSChQJkFGSTFgbWkpY0I0RlZqLlhWalR2cSskSj9KVkIkbnQhejI5MXJNaytaWWs4YkFVO1FweV1sOkouUllFXTdfKDsxI35xMWpFZGhfdXFiQV87YT8yPkRDfGp+UGsjPFQjbz95dz48VytzYnhGemg/P0dXWE90N2xmIixlNFMmVFZbMVJoVkBQRG43Z3hqc1V6dmE8Xi9sVSo1'@; put 'XzlQRlNleFVXOksxfkJidUs8YXViL31MMTQ7b0pGeVV5QyRuS0o7XWZtQXJBRUpkeC9gbV87aiRTYlIvWT1aTGM1Ny9LWVl2PzB9ZD1mK2s8RipAZCU4KSYqaFpnSS55eF97WCZhM25EdDB3cHR6Xl9DVUs4WWBvOjErXUM7YDM9e2NfOURpRiQpfCQ4Zk9DaHxGRXFGI1Z7UmAvQkZuKT01VEs9'@; put 'WFdBeTpwKyVBdHhEZHw9dXUlJVpsdGRkSyZASS5zblpCVyo9Q18ufk9YS3kzZlYwQ3VXN2suNXswLkxsdiRANUBBNDsjRlYpeiEjSGg/U08lSTxFL3tMJHUuLkBrXUZVfnRaelFjUXclPHp5alJnd0lSeCZyI3ZhKF83dGl2WF8ranZBWFFdMG18RXYoZExoaX1bQVl3T3JxRy5AYktwMlV0Wzx5'@; put 'L21AO15tVVg6bTxYeCxgfXxxVVF6XjdONk4wLkJrNkdiW2QvTT9PI0lLKXNIRiouaks5NlNJUmh3MllfNC5WKXJrNGZsZXxIQnZNIT1vOzleMDRIJXF8M28lJXM+bUhORzNge1AzNmJwMmZkMDtMZHJpNFU9Rjc7LlZYOihbT1U3P3BMVjQzWU4uWCprYmxeLlJLSnZTbU08XT9fTm4zZzYhVW9Y'@; put 'JUd5PFU9cU5EOmRdc0Y7OW9kL2xVLzZycCI0aSgwfChzXnxxLCMuZFVhX0Fxc1IvQ0hseVJaMkJYfD1tZ2EkcyUwfFpfdSRLWG89d0dFcTdaZV9dMDplNnVVUV0xQjg2Pz9kWCU0aFpNQF5vOF58QjB5WWEuLlBzYV0vbG80NlUkLixYIS9tbjAsalZwUyExe2xsIV5hMWdDfHwyTmhUKTFVfllX'@; put 'O3gxP1B5NlpTSXwyWmJqXnBdQHtPJVskO0tTQFI7bWcoRjRaSk1INHtrbkkvOmdKbTRzKzAqXmZYN1F+UT9ySlcqJmBeXzZWKVNdJWFeYC5SbmdbfTdjRGAqPmc9YkVeKyovX1tCM2dENSh7Zjc6QHF9alVQbkI7XykyXy9lIyl2ZHh7fTp2ZDQuZyF1ckhOKyxtKFZ3OGQyQ1cpcjA3YE0lU0s4'@; put 'PSZFeXIuJWRDQyVLPkRkT34sOnhoMz5LazUsOitsXSM+UUVFcCV6NCJial4lZDBbe1g9aVZbSz49ISVQRjAxPmNUWXxeYnZKX3ZecWcpM2U8UV95JXdUOU9aOUhzMT13dENXaXFTI2dSaTNAJHJYPT9iNzR3ISNqW1ZJbnpRWXdZRig3cExpKWRhIXgubl9RMiVzSkBALiVxQ1doJnlhbn5XIU1W'@; put 'bSFweTF9clJPdEQoLHY9Km58KHNRbX4zJVZ5Wi5gJnd1MkVXM1o9XjRjI04ke3lFUTJVKEY+S29rN0wsV1dHXnIkLiNkW2s+KG89XnBvMy54WUt4QFlAWTR4NGlgYypTOm5AMkMvMlR8M2dSTXgrSWc1XncyZ3MvOm9iIm0rI3FhOiZAOS9db049ZExZUktHRSomcTt5YSlTbmNJXzZfcT1bUDNm'@; put 'QCh8QkZEJFpAVW5IODo0cm92R0Z2VX1wWDJnMFd0YFpWKEAsdUYxYENQPTk1cHViL2UlQ0tsS25ZdSQ7T0sxbmgyJCNPSzF6P3NTQVV0KzFxJlBDOU43QHxIPG4sRVg5W0FpOTtWT3ArS0JlU0VbT2svXk1gR1M+RldDMDs6RWJYPkg+U11uc25KRF81O1l5KVBpcU11NGJbLGUyJCt+eG8mRXJV'@; put 'KElzOmMiXmpSNE92fjN5Pl1ZW2NqQTxuVEcwfGttb1k/QEsza1FSem5vTml7SEU1cnE+NXg8X3NLeG1TejI3M25vajAlaEB9akZLYDd7eixIeE0xNj5yfnJnLjJyaVModCxLRkc7SHBzZHgmd0NUP29YMTE1TFNJKXl0TVBTUmVaa2UrJnsjNk9mfi51JGFlW3RSajF7NVtzPzpbSXpsUDpReD1X'@; put 'VGg6MyZnYmd6QFgsRDdGaHE5XjsvSXo6Z3ZhL2o3SEpCYXxCLF92LnltNGw9Vl8/Tzk/WXdQe1QhfUNGcWcmY1h0Rmt4PUdEeHh8UGxmUXd4SCluUzZHb2s/a2E2IUs6OSFDWXJQai5XMStQS2Q2byxUMz5DT2x8N2dyPzFqQGBQOEZgL2k4KkdIW3lqUXtybiR+TklxNUsxMyNkLmFAQG13QkRd'@; put 'fFtaW35FaFVyKF1ld05UKFVTW24obmdiaHViYlZTTUdkVUlTUVRjPGJyVTJ2QFZCUDxmPlVHLlZmLmtGe2JrRjcyYz1zQCRDS3xYJStGUCo7dVBgQl0oM2N9P302Sig6aURoQEwyeD03Wzw8SWdoWkJpbz9VVUglZGRwXVZRfCUuQF97c2BYOmFkUVh3PGZzRWNUO15YbHFxfHdiaVNaSS5qc2wu'@; put 'ViJrUDVZanJoIWErWF5rfSVhVVdKPHptZ1o3MihjUUYwNXlBOyhoQiMwN0FXbTZLMXNpe3BQZ20kSzE/LzRNI292SEoqJmdiNjteXjtUfkxHIyNxNVEsSDZUJU0xPTN2YSR2dCtmJFNtYExvRk5kK21gOlhsN0JQaDc3SigsUHphenFIdzRwVjBpXTVMbHciKyhvOE86eDkyMjJ7L19SfiZGT3xz'@; put 'Ny8qKls4bWJLfV9XcU1vaDI3PUdvaGVifFkjcnlSekppcU9tSiVNJEpHTEl4XnZCUCt1TnhKQCRMVDhpYlRMUDRNVlMlS1ZkVlNKU1tNY0AxZ28rJlY0KGg0SixiUDhAVGNKTFcyWzNuK1FqaHJzT0A7NVg2Nzg0Z2BkWDtiQXI9bEJIWnt7Mn5aXSZHO2pWPTJ5ViIsNzNRO2tUWFFgZ2ltYm9o'@; put 'fUhNNzc5XShnP1MsK21TdnVlSEc/Nk5SPCxiVXIoX2MlfHxZWzRoWk1naV4xNjppQmlTLGU6flgrV2FUOWhwVDc1ZGJHWW4yTSwvfX1zSzIjLDFJV3UzXWJmTyJWTTxtOVU+PT97eVFuYSw4QjY5PlVTLDVWOmV5aGU7bCYlPzA9ITh+NmVxYXd4M2libiR7UFRfOjVBNVVdb1YzcDt5aV0qblhJ'@; put 'dzdrUXZKZWJId3JTYVYsd2J6Xi9TZzQ9RDJIeGBDUyVecHphcDY3e3F5RjFbOk0zJTJrZmpbcD9bUn5TIT8/QE9nJn0sRmB8ImlAS0ldT2s+MG8lX2g1T1Ixbnt6LGtNSktTbHUheDtPMSQ2R0hkPWY6W2NHYVpNMz9aTVNvUl5YUlhbUnB1WlhJbzdrUWkkUkksK3QlR21TWVVZM1UwPjxHc24l'@; put 'NEJkZllFbVlSIVlsUT1eMlo3ekBlb2BScyw2U15JKGw3RDF6VHtOejdGYn14SzwpWD5rUF06cUcuUE0jKiw/aHpGb3JvO0NiVkY6fF8xUCMjJF1sclZ3eVV7V3dEOzlqN1MoR1h5YTlIdVRbdltPMGFbcCUjP19EeDZBMFE9R0doc3c7QEpNL3g6XjVObygkcTV4KmBydT1eM11SWWM5TFNhW1Ux'@; put 'Vy4mbmI9dzMoU0w1c2E8eXIubnxyJlo2IT4yLis1Wm4rb3xxLD9JJWd5cTg0YCpLYC5nb1JJSkAzLGk4W2l2NlJbXiQ2dlFdRCxeZ2Z9d2tTbkkrKlguXUhdZzdxI0Nga31AektJbH0jMiozMiVfK0w6SCksMk9YREYlQGE9Y3U7cnJXbWpEYH4oMGpAWnlhP3FnZz1xW3VGL3pjSmNQIjV1L2BV'@; put 'XVg/SGVNN3NrRnJOMXYrP11BQ0wsezdrKkhzez1Wd1UsTnpuUUhsO3Y9PDwrL2AxZn19TUZhXSxweSpoPF1xQ0QuaVpbW0xPNWBfe1AuPTt7bXxUPUsyZTp6XXxVbHtfcGtlRFIjb0twbSReaTFsOnQiPX1VbiE4fFZ6dDljM2VnV24lMiU7aXRSPTBYe2EjZGQ6R3U+YT8sJndvRXpuRmIwdlNW'@; put 'OmptOkRrUig6OzlHbXB7b2E8T3VCW2AudUt0UWRyTkUqTThPJHMrSTlHbytie0tqcz1wWHh8cGRmZFdWb2BpPGM9VFcqUUptUXImTjBIXVlMMTImNjB6YWZWOTY7YHRodmFwVnc2VCUzMSVgcmtRa285Rn0ibTdVN2goNzdsPSJlJE84bjJAJGYsMUBoYGs7T3VAVUxRTzsrfUw1UHNGRiouXjx3'@; put 'K3tidDRGdSUsTFc8UypfY319Vz9Aay5tYDE9SFIlS1JMTDQ/O1lLOl82NlQxQDBofm5wUipxSH5daChBKzRiJVhLe2x5PlB4Z0tQIVF1THNhS31QcEVNOjUxYU9HN3k/XkdDdnE5TTNNOEovYDlSRXpNcTVYWnx3LnN1Ii93Rl1xUi8uM2dXe3llW3E0SH5gWTpzK05BPGokTT99PnokeHgmVUoi'@; put 'Z0NTNDhgKnBpMGokKWBFP3gkKS5wPndLLlZlamNbQ2V+NlQxfT0ybF97KC8uWiErTEpGYEMyLCtAYCE7enFLUSVzenYhUUt4MGMmS3hdVjUzalBqUWtgUGJgRG1zYWd6X2sjRyg7UF9iV149dHU0P3kiZyxuJVYlK2ZNMUE8VCYlOFNaPy9+VCxmQHAmbDVaIVpdXWMzPypWKTM5ZVU6NUE+NTNM'@; put 'YGUwOXtSWDl9MVFuLHhiaSNsXitSaUx0JX0we0wlTCE/OCU4RmN9UTNSK3VfIUU+NyIqbVs1aW1UUllRInZXW0dHMEJNX2txN3pYZiZrezJ7dW5BcntxK2FJJSJ0MjVabkxsbmkqSzVONjBDfCpZQCFtZndTZkc7OmJ5UzNGWishaiwhdS4kd1VOI30xTzlfL0lAd1ZiXmhRK0kzcHpGO3ooeFAk'@; put 'YU5RU15rQntkW19LdyxfKyFLcjJQfTQ0Pzc8emhXW3xyeU0kYVpde0dbcTxPQEtMVF1QTS9OZHkjM1EsVkJGNVRXR3o1WihqeCt6bTF8MjJrc1Q9eGR7Tk5eVitZcGFdSntOL0R7Rll9dEJzM0VDciNsWG5aYlk/I00ra21KTDJKfG1rZypOLDFEfWBWeS9ZamA+Ki9gRUI0T34wXyVQRmBfSUti'@; put 'JFFOPyp9aCNHPSFiNCVsUGt3ciYzT2s2PSFxP318Q29+cW1YJGEvKm0jbEBbNWV6Lk1PazVKJno7dGxUPkUkKG1zc3BDZjBJV2UuU1FuS2wmIWFAYFlRa2lxZGhWZC5WblhQWyNxTmhTaEs6XlB3XSVQMU1tcUU6MSJLXmV4bm9eaXdYVXo0fWA7LGFueWFrYlRFa1EhTSppeDBObytTZiJ1e208'@; put 'TVF1ekhpXzc6WTovYHcheFslIkRWdjxbMDMxQEA3MXxXOW0uPzBZLCpRdlgpRUFPS0ZYL0E5eWF+MVpufEI8OWxiYWtXXkx3Yl5TeylyMDwhIzJWXVB6S3dsY1UhPEovZEV9Lk8+XXpSeCNZWlVPVytpdCV6Kl4pNjV3cmJKZEAwcTlkUUI5Kmx+VWR8dktXXW5HeH08P0hvP2R6Tno2dmIuKExG'@; put 'fEd7cUZBV0thTXhmQEglISlmRzF8SV5EZzRub15nbVBYOEM4fGxnS0MvOjsvP0hYd2JmNSpjYVshd31nYz55VXh2QS5oLERyQGVdNj8mVXRlYTZgYjUkJnZ6X3c+VGlhN3UyIXE3JEEhUzEqJnVaTjRDdTl+Y0w/PGByeXJtQ2R7fDBCIXc3eDBCKStnNjdsSTgiKCFYZEFSPil3Jjs6ZCwrRDIj'@; put 'X3xUWn4wI3Nia21YVGgjcUdGZm1pbXdoLFNoSC5lb3Fec00jLl5xOSoifk9hXkFnN11XVmR4M3B5KkslcmpOTSp9c20xWFB6ajtDL0B8UEIrcEViQl5bTHBUcSspYyU7fjpycFUhVjhWa1Exc1V9VlMwMlVeU25uVkorLjFzU2c/SitAYm8zVTE/dDo9KVs4TTU9WGE8Z1Y7QDk9OndQfSwxQi5n'@; put 'RTgqcnksSUw0Ki9lcH5maHklWl8rSlE/MEU5Knp+LD1ybTlkQUcmM11QM31wYVE2W0pTcVtJMjtgN1pCOFooQ09LM2EzfGhwY0gxdjBAO2Z5empRflpuJiU0Nk06OzJNNSojY0FNUTUyLGlgJlZlPzAyalpnYlU8K3Y2ViVUZ01kNT1+NyU3ZDNrOUg4SldNKD9iVGVjW1BVX3JLMV99PjBubnxr'@; put 'el00aUYrUV1nd01wYV5KVChAejt8ZHg2U1V+JW1wOl9fbGYqaltiLGk8NTVpN3N5b10kdS5vdEBVKzYyPlE3ezRtST1hPXtOcSVge2UkUGkyMyNnLEtnPGolJTJNNWFzbSFBZTshRiJdP30uNjxMZWR9MjBJKE84U3J0bDI/NF0vZy9dUE1fOzc2LFRPK0w4UyhJTTBuWkZbfVIsL1p7Y31keShK'@; put 'NjldTXJlQUwvfm0vd0NiRlEsMkxVdS9eeCVFclVGV3E7OjYkIilVdTZpW2g4OC41T2xtKkc8cGRkXS45Zy84ZVt1az5BaF5USVNRK0hfW3w5dUs8ZEI3MX58ZCY3OV0jaSpHaTN1MCsuQGZsfGZrJUpZdUVyVnVFcmN7aDI0OWRkJUp7P1RtL0QkOnJ5ImlgJil9Q0Y4Uih0Oi8/aVJVeiYkOzBu'@; put 'Q3lDLGR3OkBCVmZvc25beCtyJHU/NyN2dFQjaVB9SVtYWEBnKWJOI19dS0B0YTlsIyFWIzBwTT5eXihwUmA3YkBPS24/LlIxd1Q+Yk9bfXIqQGF7eGhSVVFiWWZGO0wkNXpAZ2o8clpoeWMyIVAlQFNJOi5WLkgzWWwvR1AvbVY0bURdU3tiXmchUX4wYiZsMGY/cXheJjoubHF6QEduJVopMVVF'@; put 'T342W3t7OHZ1IWZFT0gqWVUzR3B+dlhrb0dTantPbkljbkZbLGcoakQyWyY3OGwqI0tzRjImLmRbPSk8UHU1NDllOnNfZ3UmNENmMDlFTio3RExRK3RSS2h4WT4pMGR+SmNgYVExSGZSI2RyeXd4Jn13YmI2fFRmKm8qTDJhQSQvQTM0NzpvVFozQVM0RjFbTlJaX0kuVnBdZzMlc31kfno8Rl4w'@; put 'fiFmOTVtYVdhJTUmdCI/OUx6RF09fTdlPzpBc2JJP0A8V1VbI31kUEFUVkBnVmc2LDMvQDEhcVtpfkxsKzMuaiNmMixQQHlKTmZLRnFMb1U9dC59bmIjNXJkQ35yPmYhbClDNWUpKWdBPGh+b35rZzB3YCNIUzRsPywuY2AhfDZWM2soZ2s1bzssPGl5VllbS0pnRlR7eXVWL0cuaS5tcXJgUEw2'@; put 'Nm53L1F1RCJ6U3guOCZOWiUkNWx+Zm1PWDZ3MmVHVTo1MzVPc15lJE5hak5NeGhhNlpWU3tnNE1YIilpS35lRzlZK01Dc3glWVlBJkkrV1p1fHZbUSZ6R1Iwa2RqazROKTNYRkx6SV9laXswNE07cmhwN2s+MTxYa2l9KEsobDcoem41UTtMTmR2YlRRK1YzNnMuO3VZPCNsWWQ4T3phZ2RJUCho'@; put 'Rjs4dU0xLjF8TWJWSD0yYmZ3T1ptZmxsY1lIJXgyMWAwcWROeFR8Pmt6WS5ubyZkI2t2JWdJI1tlRSFoTV9RWEZZNG9LYVtWU1cvQGtVeC50NzF+e11YKXQ3UVVyaGZ3PD8zfHFvOnpQKzJiP2NiTDZGa3hsISYqc1ZkP3hkUkNoakcvQ0ZSbDphMHwjaFR+NjZLSmJCdmVdLmlLMDJyazhVZW48'@; put 'VDdTMkp5VkN6e2pHfEVZOXo+WVpbXVdfcSw1MSs2OyZzMGZfRndXaS9+ZTlzTz0+LyZzaClXcDg/KyxrJFs1TjIwfFIldmxwN35YIiM3UnQuVm45MklMXkReRV8remFYTTMlcDBzM3JbVGJFRk9eQ2woW3ojRn1PSytVYXJ4bn4wXTJlI09iai5nOTIveUU9cTE3SjFubFpRQHpxNl5mOV59aWNF'@; put 'fFBNUTsyKF9XZykzd2x2UmZadCokfU8rM3k8Myozenk5UVszQihPeDp8KU1RUV1MREZ2KHoxZHN6SH0xek9MMjVXfTpxKTkmPSlJNkxkK2M2NkxyRXlaOUA+SmhUNmZ6WnlsXV9JRTs/OGtnZHhUPGA9XVJmVT5AOT16JmUsQV1we1kzenhVcnkyJmwhZ1VoMCMpbWgsUlohNllKbVJBeX5fdTxz'@; put 'eUJqJXJHS2NgWm9sW2RNPj9sSmBPOiFYdFBEOiVtR0Y4NVpld3opXldsOCQqSUc3O35hckh1UWpePTMiSWNdWmAsNGQwUiZjI1dTUGxDSFpnYXlqV2s1SD5ZIiYrc2dHUFRkfjc3XmNXXUM2I346PiNycFBGIXgpSjs3OSYydS9YPE86VTtiWS4mTT8sRHhORj4lOndmeEl2ZiNKQjpOI1FuVyRX'@; put 'fDF2fGZrN0BpUihLMn45Q1d4OkI6ZFpuZWJuUVcpNHxpYm9zWHg7WnFZclNhPF1PTnFgaD44TCZxbXVnLjJ2T181VUNIZyp5W2IwM2cuc1hdbU5NRU5fOFQjWk9TdVNJZyElcVd1S0hpNEZ6WkhuVjdBIUhsUXBkentTdClaPUo+d0ZISkhHR21IOUNaJGVHc1VobWlMUSg3UFkyUT9gVH1vLipa'@; put 'ZUNVbGxpPSZeJWwqVykkVEcvKntqV0JtfmhIJj9fXlZOQHIhbzNzcDc1VnokI3kpOUJIWmhFWClAbztaM0NsZ1szXy5DQkQ4MGFQOEIlZzpSNy85dUdZeCw2Oy58QT56WmJMVyZMalh7L2wjUnI/YSV4Yj9WUXtNanBoPy9GQD9wQXFUZyk1eHJgVlBXQ3NWbURsS3NnYlN+YFZhJFh8JHwuXlNo'@; put 'dXpDYEk0WjV6XzNgIVJ1cjpOVSk5cndDJVRYI0gyM35tOis4TWR6TylQL0BoOWV6WXBuXVN1dFZEPXJqKFVdXzk0SihxOz9uQClvVjAkLiNQMVorTjtOM2BmZy86eGduVT14NTQrKlF8JU1nKkg+Oj1rOkB1XSgjJWF4P1tAXl1BaFNMRU0sYksyM1F6cyhlR0VbWUxeSXIqIWl5WzsrYFFwJiV7'@; put 'c1BSJWR4TWAwTXtTK21zUFIkLjpXKHM8TSp5cixeUWt5JTorYGV2UkB9YEJ0aT1aRkMzTHxfeThybHohQmFPTzR0bEVdaSI8KVhrd3RlK0p8THdCJGNrV09VTXI9MWBdYWJXU3BDeiU7WEc8YEp4cHQiQXxXLnhfWU1Qe1M2eTZ9TFYqVS5oXWwiaEx9Xl1eOSxlQiVGSThDXXkySTtTLzlJflJj'@; put 'eXRfPjtQYHRYP0coRTo4cllrb209aGw7dGwoLE9qeT1DSSM8T0tIOGxfQlRsLyM8YV9CdktvNkk0NlsvVlVTK2k2cFJ1M1l3aVV8VT9HMGJ2NVJCclV6cSxbYkAyTVpUe2w+Unc9eWIleDt4fXE+JHB3e2RuU3teYnBCOFM7Y1R8TEtbem0vJipFVlchSlA9KjIyPEpDaW1dZ2Mud3IuW0JFUGU7'@; put 'TXBEWkJBXm1WT2dmL2liVG05Xk0pJnFBPT48P0AhSmVRdEcmaD1qJmQscWh5SnsmYiRnYkV0fj15ZF58WmdtSF8kVSUhSmh4TT17UT9GaE4uSGg/SUtxVUJ9IUllfSwiQDBXezpvODNOOWxLKEJ7OW1vXi8mQDtqQy5YbGpGaSNzLCVAbltHK1FOOHpgLnNQQnB+cn5JQ0pAa0okWEtYeEx2LnBs'@; put 'PTBpdj1QW1dHc14rPT1McTIkRE9Kbkl+bX0ibFhbeUM2W3dMPWIwSWh+SExuZig6UUxhNlA1T0A+T0tudkAsYFgsTDJXTnlsVGwiVTNPfm58andHMjkoeGBfO3FrbHMvSyhZdFN7TEBHKCVVOE0zfXRuVl9sfTEmZmFZN0V0IjJ5UTx1UVZkZEshRHl0WVtvcUxBVDBmZ0spOjNbLHVYWDxUSiUr'@; put 'bzlLIWpFfiJTamlzISJselFRcl1ZbGU8aDA9YHF9MG42a0dIW3FWTzBdMlkzbT9tNVhbRHV+TWcxMExAM0tsRkpaOChEJEJHMS8zPV5bVXQlYSMpLlRGc1NjflMve0h4aktZO1daOT02dVpaXygwOElsTUYuVCxAYz4lenFUKyhsbyF2T0o6VSIoI1R2YmJucS5IZiIlJWpMWkB7XmRaJUxwR21V'@; put 'UmB6VSJdc01iVnhbczshdntydVpRPyk6LFFwPXI7MFp9bzd6fSU/fjRKQVNJJE1oI2RWZHUmPGx7Pj48KjJ5MGl5eys2aF5Vb15VWFg6YTwrJFo9dGBFb2RxJH5rQ3F8SFFDRSI/Q1ZpXT19S2NFNGFLSGg7Vl1JcytzZ31PKlVrRVE2SmZSUVtCMjQoQjRfdmowTmIqZ1csZSlWQkRPWmBUSEMp'@; put 'WnF4bHlzZmxme2s3Q3wlbHdKWGlTO10xcUI4Vnd9T1J9JnBtdEh6YkBaXlYmTG0mT19yZn4lbm5tI0lLO01ZbzEhODZNP3dLciVebl0qLCM8JClnZkBLWm02NihMbC9jTEtvW3lJTjFlfixtcUlII1tmeCxlJDQufUQqYWlOeWgpbFZEPUIlfCxDJVtKRkc7MWclLFslXWVPQjU9cVQxUSVOaGdJ'@; put 'SHdGUlk3JU9tW05VX1pfJiIyPH5QPnROa2cwd0xGZ1RYLm58VjJhUU1EOz9NbFgxZDBQUShrYm9SbzVmNC46b25Rc2tHaEI/P101cmNoNHUrWzEkO1B3SXptKUxxRzhCeTI/JDpFTCJVcylZfH1mKFVzYFpfX3F8cnNyI3FbVldDc2pCWTpWV15SK2BhSWM8fnJQRCV5MUYwIX18ZFp9QjpNfkpS'@; put 'Vls+XSZVc1ZCW3xPeD52L0NVV2t7K0NZOnxRfTEjdGomVVM+fV0uP3xRdEV9O3ZpclQvTWpZK1ErLHpPR1ZSRjFvR11jMjk7ekZaMDA4cCJlZF9SOXdpWG17QmNGe0ZBIjR+MmlONmZ4fjUrYXd1PTlNSjo5a28uS25hfXtGemtNVztMKmdXIWgvQEZ+PSNCQkIhfncqJGZQZ0NkaGpLRz5jIkZJ'@; put 'N0EkNmMuT3lrcTBgRk5SWjg+OXpLR0FSMn1naUx9OWd6RSxlR0QyRGRPRToyZG55JG1MeEluTzUuNUd9SzBdUjc6IVoocWlZb0tQN01lPTEpfjJdJVNjRl0xOWddQDUkKnEsVnZddUxfKUZxIUsjaUE4LDlidEZbe0JefHwwXTJ0dXFdcTBXIyVtLCt1PnB4X08iVk41cn1fcEA2RkokbTZAKy44'@; put 'ekBncG5UbFRgSzhDWkZfJChtPWZqOlVOPn5ARmoqbSteIWw6cU5fVyNyXn5tMyRBVmRAOVlfdSxQTygoNFBUeUc9OihbcVF+O3kzIzMsK1V3TTI5JSg9NXNtUi9TfmAyemAzQFYlVzdWamA4WylleVlxJnBjTXcub2Q6ZmF3WmxpTmNIdzl5MWFXUSFCUl5LU30qU1FDQkgpez5zOlsvYExsJVlK'@; put 'c0FyOUt3UWdLYmpeNG87MDdZTWNddUAyOFdKTXQkOyUhMiVVYTZMcF8oSyM5Km10KklzcTEkM1BaPzhqNW8yLnFOODNncFIqPDZaeX5jZCVacCg3VjtbIXk0MU1FeHlzRmRKYyFZVnAqditWWF1+Lmx5JTokViZPdk0pdyNmIypPZjh2ITt5K057d0x+VUxaUXc6WyZsNENrI3drQ35KfUl5eU5J'@; put 'WXhiQGFYKjQzRktoWCxsJmJiN2FsLGd0YG9+VEIrL2lHJiVEPmJmVVNpZGpNUyVmKm0+UmRVdT1uPGA4JGs4emt9NndWOTNYfWtMVShCV2dbPDNXKkNne3VnJiF3V0NoKzJpZTokRkliVmtAK2d1I2ZdTVFlNS5oWFgqX2RyaiFMUXRZRGszQC5HcnU6JC97XVlsRS9qXT8zTntva29+UVZke3hx'@; put 'bk8uaVUmckgjUShgUzR7fUFeanlocSV2JlZdfCMyamB8cFszeHxvazs8Yj44VlVoVnhGYmpmS0Amczk9aF0zKTdgXy5yfCMyVWhCeEZiWjlnJVQqfWgrMHNbTkVPe2ZYImJqaFVKezZvT0lYbWAqTFsmOHhqSCFDbDk2TkoqWi9yVihIcX5FK3tHaWZwMnt7TlpBdklpbjcqT0t9TSVrQTljVmg9'@; put 'MUsiRWduKkBlKX1iWCNmWyFkOT0rMjMoazcue1dyYy5xREMuZXpFdGZpS2sjPEFmXTN+TklOaDh7IihDMGdCfTApWXxMSFhqYEdPVDF6ayQsbkowRWBIYVJjKnhqcHd1R0wzcVJBVGMqUHAwZlFCZmoyUEtuRjU4O2lMVSVjOl1GR01YcT1ZX3xDSzJXVy8zd2Z7ZmJKRWN8SllTXlVAPVhYPG1a'@; put 'P10pa0M6PXF8eUt3VUMlKn5wZC8kKnFJZDxzUDB4PUEvSWtLaGAxeWYkQ2dwcGJ8QnRlQkNyPWIoVkpganlvfDJDdVdsX1tEUX1iXSxnSTtjT3AzX2s3ITssS2d3e0gzVS87KUhKcS5ib2ciaSkiWSZxV2FFW0J9aD41eixEN0Z0YSMvbTQ6TTkpIlVCKlc3e1tyXyNzKHddcGhYW2MxQiFsZUUv'@; put 'KWJLPlEhSiViJWRCNmwsdl1pImdZfEohbGZ4VCtJcmJoP3Y+R3c9enpsPFpbITJ5LnszIiMvU1ghPlVoOlp5Ly4hPTBDLCtiMG8+UE0rJE9tT2IqSTo3N3ZCSXxZXWpjZ251aU1wSUtRKXNBS24kR1E9L183VWs6Z2hzfk1QKC5taCxVbXx2Zjh1MGtCRXBAI2RMdUNgdXpYT3AqWj9uSXhXe1pO'@; put 'fjg/IUtrZG9DbmNbLmoqX2xWNVVXcDs5ZkFRXUBRQlQyWl9oS3IpRXFqUUptd0k2TGlldkR2MFkwYWBddjZGcllOaTQvXWhbU3JOVkFteGEiMT8uVWVoSylGZjxyb0ZFZVtiJnRAJmM9MW1gbGckR0hsUEthZWhNdmg0I3YzQD16JXRCJm8sZzpDXnMiczNVLzNHPEY2RzFOYXpARyYxd3VTSl5e'@; put 'Ilk0KkpRYlIve2R+JkNsdH4rVjBnW3F3YG8kTSx5QDxRSDVMLGIqa08xQmFbNWlsKUk4PyteJFNTUyMuW1BfYFhvbyM9bitkJCozODc0e3lHdC5RM2NgZzQxMlFJM2k6L1pnJiheTCRscUdSY3x8XTRtK1clOTZXe2I0TVV2dyM8YVltSFErNWN1cXYqMGN6TjNbJVMjVzx4clMkKHtGYGQ9ciZg'@; put 'Zmt4XSN2cSIkQD59O3Eydz03cGN7bU9IfFdNY3pxLmtKUkNuOD9hWShGeGQ0NWw1XXcrRzpgfCpiO3EwTzF5LDxTb2plPXR+UEZ0LlZuSHw/MVI+elY/fVEkImtqdE1tOUNTWWs+cWpXRSF2Jk9bMDosejtgVHRvQz1aYjVnbGI5O3thOEZCak5EVUBMM2lTeXImenwoWn5sPSxrMVcldyosXUxY'@; put 'fV9pWU9qWE1PZWJKbj9aJldIT21jV0dpTn1wKUFERGwqMUtJLiE0d0Q4eWI0JlM1dVVZbCoyM0VHLjImIUY7MjA9aWxNczYzXWImSDZSckJEVGU9aHkzbTxeOygyOll6IWYmTXpFUzF5I3gzTW9kdlNzZEc7R3YqbkVZZ3pkd3tFU3BaTTxjd2NqRlR5UD9LeGRadTVEKEp0PV5DYXJxZH06eWRB'@; put 'NjV6REssYnFWfTp5WWZIaEJDbStCM3FGU0ZwVlReZXdjMDohc1s9RHc7Q2RLfSNoUH1HNDhZOEdTeyh1KSVra2hsLERGe08mdFN5Z2wse1lyOVVsZns/L3AmIStFPlFTQjJseyltbkxeQT5ePXlaV15TSjFvLDx8JVEyKnMkKyRgJnN9QWhIdCtXaTVCUk08PHYvRStSc2s7RHkjZm9DPDlWYXJE'@; put 'bWF9b3tib1pEXU5TPkJfJCZTUT49PF5FP1VhTmRKVGNwSXxObldyXzo3NG5MTS90XWZibzNjVGZPcl04b2xMZV1XRXlnT1ZoSjJAVDpAUSZVaGl9b1c7W25keFtMa0Z4antUZER0VEdGTFUwR0pWMFtqIiRAPV4zQmQwenJhXVY+ZGw+WmpxNU9lZ09yRyhTVHkjWWp9ZDZbMmdiNm80MlQ4Ylgp'@; put 'Iz4kbjNeOUVzXTB8d3Y9Xl59XTZMYD9sfSpRVj95Inw1e3RnXkx1NzcwVFIoZ2oxQG42T28xQ3I/O2R9aU1eTT45XngqOT9nRHhGWFFXKlZLV3Z+Sj59W3E/aG1wPztdfVtwP0UzLnZxI1NaV3NFY3JaK211PDk1ZkA3Vnp+OV1MbCszISVbYWAuN2pYQE4oanl1fDd2RipsVF1ubiR2PmNAPG1B'@; put 'c1pPI00vP3A/Rm9wfW99eCpNakxAR19ieWJePlZQW0xJb0ZDLE53JW5YV0dKWkl3RllGZyVLVFhtUVFkejAqVjJTWFdVLCp9VFhrd0V9XzZyeyY2e3ojRTNUMSVFVkBXc1VTP35OeCZ2cSN0ayV+UFdyS0lMQEt3Sy8sS1UuP0UzQGpseVVoUlJdck9vJm5LOTNRYilvPWhzTVNRVypWPFFxalRG'@; put 'TTE7Lz8xdUBGaCpWSFUocnc8alhDa2o6RDI8YCx2JnYrdjAqfCE9NHF5TVRLSl9wNzZLSil+Wi4icXUuS2pTO3tuSzN+TVpRP29qNzZ2QkBvVUhTOWc+KThnViMlQFFUZltYW2hxcTY9OT1UeSNBeVtvbnZGYz1UXi9NbFc7TWxlYng2Qzd1Z0tabSJsZkJeQC5uTGgjT1dwWyJATUpXWkJXI1tO'@; put 'a1tiKGI4V25iSkd5O35Pd0YpOkkqWGJOfUVYY2gsO1UoVVMsO14kfEBLbWBpNC9WUWNyZ3pIY3R3YmdsPFRMbSRYZDkkbVFtanxZU2tVUXxxRnMkL3RGeVYuW14vWSVKL1pzSFU1TVZTajp2VjxsVXs7Yl57NkpvRjt6JXNxTXRPJHp2LzJLdUdWVE8xJEBEfVlRQm8kOzZbIUVnbDl9aHxXV0JR'@; put 'eyZJaF51fG9RVEdTQ2Y2OWhgKEsqMjNQWH13dnFqVS46aCtqOyQ1Wz5yMUNtalEsTyleVyZ4MGxkWC9HRE8kbGhEME8vZnZkfDwrSy57Z0NmPi90blFvPTE3ajE0OWppITslTEx4JG5NXVdnNHNicCp+PzA8Jl1KeyVFPkFtIyUzSHwlfSUqJDMzcX00bUdgO3FbN3ZbInJCd3E3Ukx1Wk9NV3dK'@; put 'MW8yZjlvTG9gKnldTmBYeWFnKTBqLkl0Sls6OnNtK3srZy5hbUNLaXViL29ofVFjSVBaQS5YeDwhfmFAO2Jtdyt+bTkpfkAxTy5vMz4ySl5aPVg8e1E0bEUpTy5IO1koS344fmtGY3VhXkBhMS5hZDYxTXJ4elAybixtZkVvLC9gX2NQXzZoaTB+K2RVJiw4PGZvJSF5MCMzZlVqcVhVYXQ0NjY1'@; put 'TkdOZEx3PEBfSChqRlE/MCFsMlY/MCw2IzFEempsTT4pXjU3X2QrOEIrK3gqMnNOWVhub25FW0MqfXREbilzJSxdOTt1X21XTzF7TXgrLj56PSRrSkd+JFZ3VWVGU0s0X1k4Vl88Q1lQKigrKzZXJVp1KmlMTFBLRSQwajRodmdgKH5rO3djKVEsKCtsWSo9MllobSZrdHgiI016RlIiPFsjSkw8'@; put 'QEFDTzAoa1hNN1NZZy97RTx6S09nIigwOUAvJHhlbzYoRXFDVT8lXWprK2dQOVVANUU1PiM7LnN7Pih0N1NWNERBbShGMVBQbkNfRHlhfkFfJj1kUGcmb2kreWx4dilKd3YpcnE3TDc+X047WkdgU0klQH5eOipFI0FvRnkiOlQqKDouai4kTS5KQWkqakQsYTRCeF56OyluQkNnNz1tZWUqZGI8'@; put 'OEhUJS9SezpFKFNnUUZOX11GMn4kcERVeSJEdCt1c3ReOSV4TGNnJntzRihjV0BxUEJ4VjIsK2A9KjxrL2Jnd0NLaShvQX1xUDEvcVUrVWNecStPJHNbQXhWPGx1d2BdISsod1ReeGREI2dMfkl1bUs1M01pc1ciND81OSN5c2lHSGooflpKWGpgMWYlRWFDInhWYnpxTVNPY3x6TiYzSj9Qcjh3'@; put 'VlhdcUZfLns3VDteKUc0aThHN1RjQUk3WmQwTnt7NiZ9R3I0XWwpR3cvN1Q7XX1SfWw/Xy5efWp5dnxea0cvSWNKeV1ONnVsLzwzLzRaRURtcnlxNzJBZzwqLFhvdml5amsrN3lSRklpVC9BbWVFNmhyUSlXY0tjcXs9STsxYjRRTVksS0FieyVZZCx1blZuMFNjaixmVUB6ZzwuYGZmRzE5SHde'@; put 'KyNVaX5PXzIvZ2N7bUlde3x9dzIuIlpfP0x7flhkPXJnblM7RnU+U0t+ZUdTNFVwQHY+OSEpP0c7Xi4wWHd7eSwrLlgsd1Z9WSRfTSp2cTtkTFpueFVJKCxxdCRWfkFLYjFVcENoQUZXfmw5WGdObUBMUyUvdlNhcS9bPD5yYUh7OyRoZ0A7KUxvcjhzKHdzaVAjZDdXbGBPYiY5P0A/fUNAJixs'@; put 'UXFZW3dOSzFVZSthIng9WC5SZStKRFU6b3wwaSNtYGMwWVYwJCt2OCtvLGdXdGhmP0toYF1QLEU1Y1ZqeVJ5cXh7ZilOdXpxcH58RnkxOSNNWyJoSyRfM2drWjpjOCxwN3x+cC8zU0pwfiV7SnQ7VUAwPDUkcSVbYUo7bls5Y1JVK1BpM34wLmBjKygjRWtbSDU5Yi4+c3J+X1RQPXdsaSkxWzRb'@; put 'Q0B4YDFwcD5hPGpgek97QzdAeUx9T0BzPlFkPU1gLG5+X3o+PklrZX1dd3tTSmYpRitUfFZ3bDhqajl0UCMkWDpEO3ZGZHlBWzdMOEQxPWBtPHYzOTZZMiNxO18kbFZvQlZjOWlvTnQqMiFFLiVbVXVMcDdCdGRrdmFsWVIhLzxaMy9tUGElcEpZTUgkOlM0SX5TSVR5XlQ+VWNCRV54PlVIaF1O'@; put 'JE1afEooeztXPVVeNExYcFEmRnAhal08UUVhS2BVIyNMTWg3NiwzVCM8X0AmK2pddCp9eTtEW183ITdwVEYrfCVkLmB3ZGZxOF5DS25PT3E2N1Y+XSFXLkZEW0spe1dtbyJaQl5ua3ZAX31zSUlKLEhzLFhvVyllbk45ImRBaHUzTGZLI2coQiNJYy44PipjNnl1Q0I9UU0xXV9bdihXOnNmIj5Z'@; put 'KzVFOEJxRm9KaCs5Sjt7dGFLXSQ8flBNVDRfRlVJTTQ5K31UPjd4aT9zLHFvfFJrdG5jfCguclE2LHBkUnMxKzV6TlsrKTdobXk5Ml4uST98ZGVuV2pbQyE3aDYkIyRVYjt6bSlMKiNbNkZiY3FNMjRfWWt9RikwZXJnRVlMNHhxNnBoS1UvfD9kem1HLk1vIXJJTkdCMnBTSmt1Z0ZdMywrKFVk'@; put 'eURvIXkiKzQoJU1aSUNYZHN6SGsqXWd3TGpgI0w4Vz5xU0xUZ2g4QWhkPE4oIWRyZkp7NDddTSxuJmxzM21sNixuenwmcC81JnxAMm9EUUFTN1spI2h7bWgqaV8ue3ZueX5Jey9xUixAXzxxJEAlSCp4RHwhJT1BdUB4Qj54T3pxYV8oJT5nQj5pck89Ml5uZitlR0RIbGN6MzBhNiFnW3l+L0R1'@; put 'XzBvJSlUS3JHRW1vMW05eV48JiVkclA7YHE8VWU3VV8qSE85V1s7ZExHX2tBcz1ZX1h3bFNgOzlDYiFhMnlNWHFHZ25AeSU7KmhXL1JVMDlRdTZXSCU4QV8zS1ZvZE1UNTdhKFF0LEJDNTUyMXBXYllmaEhCdVtScjczRHE0VUtmOHdDMGM1Z3pZRE4vRzhkfVV3bDp0QDtVJS9NbEQwY2lkVFk5'@; put 'PTE4SnspdEElcFp0JExOcFc2OiFaRSNVNFA9UklZKUxxalswUC9eLEJKXnolI3ohPVc1bFZuKjFLRmJsJUhhUytZd0JUVnAyW0B0XmdnT2RZTUhYSVB0bEhFVEpNdjYjNSJbInB3SyFNRGJQdXIvcTVecSxzR0VgfEpGXUp9TlJDU3VGSHhjNGN5PjVjNGN9cG15XXc3YEdJW2MxQmFbN2lxbGFI'@; put 'XVdlZHNOaVhiU1NbeiV+RmlbczM4dCFjM24xPXolfkZsRjxePjYpRjt5WT15RDxeR2FecDBPUzA4PUYwbzRjQGVRTm8jPU4wVD9uXj42KUZfLGY+QHZGW2omRFlmXlYxIllxW200MkNkWHNtRixaOXhZbCliWXxKTklTSCNkdUxyVnNRfFV2ejE8S2p5d0puK2JId15YfFVWXUFHRDM4dF1nXyUy'@; put 'YVhJWSlWUV9wQk5bcFgxUE9pVjxdJUVyVTV7NDYoQCZgTzo8OHpDL2Y8a319Sz5MaTVFRnFlZUUjQTUlLz9HPHUhM18/TTl4dTxncEJSKzt6RiUxO0wjMHRUOypJXjxaUWg0Yk4sMHF9blgzMS5qNWRJOSptOjMqQF5md2x2ITlrcXIqLjE9MnZGV1YobjFyMGhvdkw3O21IKUY8XVtMZ1Z+OU89'@; put 'aSsxPXQydD9wUVBsWVFwS35kL01bfGkofFdufmklKktCLl18TG5BQnBoYExvYDxjZjhVcE85OnBpTG05bzJCJW5reHxlQz5HUy89Nml2YF82Jjo9RnNtW246bUJvPzQzUUYyL1pxYU0kYEtLPi4xQzJvM1lbY2o3YiZ1N2NAb2x2KDpOVCliSW5da3dnY0w+L1FOelRhdVRaIjx9LHJ6XiRHYE1X'@; put 'X3xHdnc4b2hTezolW313Zm1NZD8zUyFIJCpPc1s3OiE/fF9la1dpbXx2bkA3ZkpkR1dSOllxMFU7NXcyZ3R1fjlmZTVwKHlrN31sX0YyTU1xX3x9RnRtOm4sbTlbbEU9OHphaC5eJDVbJlglbF99T29NflhiLyRbcFVYbz1zdTBeMjU3dTt5VnRsZ3wlWk5FKCJEU0NFemVfcFZ4JFN7KlF5ejlp'@; put 'LHlKSm1TKDl6bz5NR1VNNDxjMFdZQEpGTm9wc2s6TChVQFdbWCloZkBeMlNSYkxVKEteYFpWPVhpRTswd1JLVlo9IUM4T3xVVkdRXXtVI0FjVSE1QDB0YF1UaCNKd0N7emdlQF1PK1heKV9JTFRrSjx6XUZdZVtzVXJ3R1Ika009ZkRqTH5jRUNUPzxmN11NbXo6QGBsbFMkK2drMHEzWDMjcUJ0'@; put 'aXNnX3s/YGFfaSVsYmtQKSRBOVdbYGckNFRzTSg+dTlgd104QSwxSHRqOEtNLjMwQj56eihuPjtwLFhiImc4PnMsMXUwMUdmOTJzdmh2Mz9vWyZqUFUqQD9kJHVOfHt6dGJ+ajxAYD9eckg5cSM3MDUockhuNDxZdUNyfDhEKylrezFoVVBkcU0/NzJebjs7akpUKFhBUiQydCJmVyt6bS5WQWZX'@; put 'MnpdRSlrcEM9N1loSXkjcUBtUUB9I3Ave1U1KlVKdj47dm5VelRAUSppc1pfX0pyeTh3Sy8sZEwrPy95X3dLamkyaHxiPnMxUUwuX3p4YF1WRiVtPyFuN3ZzQCVCPmQiZTI4Vi8jfj19Zm1lOzU4ZSRkbltYVjc/JEIiOWhZIVNsWW8wTmFiOkk4dkMmMGdJRSVZVEZOdGo9KVpPeWlzNiR3OUtk'@; put 'QC94WF1LRiJhLkdJXUZ8KXIpb0VUOEYlOk02XyZ0aGZHT205ei5VMFA3RlQsb1FKKkchaWFWZiQ7Xng4RilfKnBEaVZ6d11LQCh9bnApYnY1cyloSzwlX0x6MCovNXVbRFdMP1BjaFI0Ki8rbTRNfUVvaFomd1dGYD4wIXFDXjh5Ljhaa0pDdExOVnUjMyt5VmxLSGxAP3I/Jkw/PHxfNCxlOkZi'@; put 'eU0pdzBCLHh2ditwR3RJQDxsRSxaRlN1ZmdoIlsld1d7dSx9YkYueE1JTUBxRzFQNDwvQUhHOkpyfC4yWG47P34vOnw5VU9tJDJOMW5mQj4oe11oNDxkYzpodiozYzdsV29qZ1BjfkV0XlsoU2QrdzhwPWA0TWpNM3tjQGJPcGtBT3V3RjZONilkdz57NlReeDFfS3lmX2hAaVJSOk1XMiFBYE1b'@; put 'MCJHKF47MkQlQ2pre3JqRTkuTnc9UCNeME9KPDgoeWhSP2shUzh4YGB0QmglX0ZwKnFyMzU2M1hzclNSeF4kV2p8WTBXSE5DRmpUV1VYUjJJXSxxTypeTGIpTT8/cz9BMlR7azRsK15iQWtqb3xUXnpAUylAXi8zQVRda1p9dVsva21pNiJ2aHZhJWooPzVbcT1sc1Y9OUFNTnh3Y058aXlEelU+'@; put 'XXQ0Xyhlb3ptallbLkxmK14vI2xfRiVFdEZMaUEwPzdGcl9wcVg4ckhjfC9ud2BVK3p2LzJLbUdkZCxYXWpxS1FddDwmV15aMVpqRTp5ej50e2tMVCx2QH5YW1RjQkNJXTNWVG9QQVR1JWhXdjI+KVEzMFBDM1I2WG5fKV9yX3JqWX0qQ3hFeyMzXWp1LCkzJW81MmJbamVpTVp5VHpNM2tHVGwj'@; put 'Iyh5UCV0TUJLclZPc2pFN3dMWy5qcEM9aHo7JUpZTGYwWyp7cU5ieVlvT249M0FIe3hZdytNYDEvWTZEPXFrQU9vZ047SHVzM293fWg3L05kbk9oT2N6bzd+aTN7QDBVSkhBP1pmeCo6cCFLS21PQysxWC5wSW1vbTl5Pi8vVzw1akAyZ1tqZDN4KipBK3A2KnwyLGpscl5wdG5vXikhe3RrbDtr'@; put 'ayEsYk9tU1hhNClfPSgrQyMhZ0A5QVdCanlMfVtaMSs3S1FJd3pGeip6RnplSXlOJHtPNFd5NkNVUyhlKjNTbCt5NT1UU2cyZ0VPPDlgLzVsYnc9MSxeeF9oJSViejRPI2lnQmFidSVVU2ZWY3wlckYjTERaUl5rdnMiMj1PYmssKlBpci9ZTWd6KzF7als0OEhbOj1NbERDajRncVJ7ZXF7RlVl'@; put 'SVp3XV87azBmdkY5K0pXV29fS2QqUnAmaCJrWk5fcEJJVk0qe090SGo7P1VJLzZVZzJ9TU5mP1l3ZkAhUXZNKzc0JWFNcFZPbVJYKCpgKXwhKEN3TDJJXSx9S2ltTytgWl1yVEh1TT8/fUx9RURRUlYwMnduYzw/P00lakF0djAsanZ+Rn5yXXlWek9vZ3ZZWzlQJixKPShoWTY0JnM9V2R4L21O'@; put 'cTZ4YGVRTiNVcEt4S2EyVDU4Rn10PDk3M2BNRzI3LjUxTjx5PSRnY3dJeyRVZkZ5fiVEcn5KfjlwRiIydlBoQjJLWGsmSC54WltPS0hUaTtLPEVtQ0AlMV1gdktvd18lQVtldkN6NColPE9LR21rdGhxW1ZaVFh4S1dEWlQze2hkRmBzbHBkYDQ7KF9WbShSNn1xeUtXKGIpdT9RRU9PfH5JJkBy'@; put 'PGlXJCtAPzJxMUpkeXh8OSo2VH4xSlhHcnspYCk8P2U8cFZLKU5vSSg8LCxII3RXQkd4fjVdRSxHZXxqdnJxV3B5UFZkdUM7MTo1eUVodUgjdjJvUV5bR1VmdncvVkY6WTJ9JiNGUSJCTFZ0cUB3aHZ9W2pJNzMycX1vV11pVlNuWy5dcX4sWjx+Wz5SXjBrP2VJWURdUWReX1VdJkwsZFczKGNf'@; put 'NGg1Tm89VUB1MU51V1g3STdMLiV6M3xAPSxrSkUhYU43VjU1KihoVy5qR1BYLiNtXTdEK2slZUgiY1JaMX4oYlI3V0phSWMmI0N2KGVxb1BNJCYwJUUsMyVvYzxWZiMqd242M056UVJfbGt3cHB+b0FpOVhmKmNNZkNvVzQ5aFEoTmF4OHJaRU9DInJpenF2JUpyfD9FanwzaUovIjVYYjN2SEZN'@; put 'PytGcWRGVTAkamY4RTRMbTo2Ky9aNCFsW25mfkh9X3xQIUtgcmA2OkwuLmRhWkYsVkRtZTBmUiZ+KS5uNldZVDJpIzxYbHUmMGJvQDd6cWRbMnUyPCZadTxje2pMN3IuJGkkSiJCX0c0b1FWMk5odGF4K09uLEclb1ZsZTxBK3wwKGdWOV44KmcmbWxTYVYuYD5tYFsyXU8lIWc2R1AjXzJDcjJC'@; put 'YHlIfHwuUj99PmRWZSVRTDNYdDBhVUlwWzRvYHUvdy8/QD08WVhFQ15lcXY1WzBaSiV5dWlpdlh7KWApU2pUWjRLRFRIamJUNntedmxDa3g5NnJNKFRfWV9XZTordF5ATDZOelFSOjV1QiNOK20kKWlXQ0ZXKWZqR1k/VDdLcmIrKTt6WEdgbn0kfkoiRXlXdlhkcnspVHU+dntqbkU7RmN5RkVZ'@; put 'Xm14e3YkKmR7Y2p9KVJDfUNNXUtMJitfS2lUQW9fTWx3Rz4yT1RZRG4jWCJDYTFAS0VneU1QLHEoI3ZaWV0sdTQ0bk56XlhrRkMsOlpdLDBMQ3JkayRYVUE+bng/NywwTENyRTcuISpWWGRdfVBaNEpAUzQmcCNFRz5vYUw/SH51JVhARTR0JlhaeFliOEF9Pk88TFllcH0+W1QlIyJQZC4kYn5S'@; put 'PVNOdzZPYjAvd3xfVC47O1RwPlM2bTBqSEFSYSZlJWQoTDw2ZV5UeTJPSzhsR1VwRC92PEdSMjlNYHxkRWUhb2J7Oyo9LylNWW49WF0uPT1lOF8ucyQ+JF1aXS5YbmlLaywmPU9iVVM0dmJwRkpmdXBwXSVIKnd2IlZAKl4jQTdbYDVwX3JYM1R9PiQvNjRTU2xvZ2c/Z3coa1Qlbjs/I35pKlky'@; put 'TCR8bkdLUVtJT2lqaWl7I00/IXYpZFl3KmcjOUxdIyR2cjppRC5qd05nPHtuN04zTlR2N15vL19AaSt5fnoyQFJhNnFLNlV6O2FMVk1VU0wrMWp4Nm9QcEsrXnVSV2Q9QiRCaypMYEpgNFl2Mjw4YzAlNEFtIzU5djVWKVtUQldKPCt5JGIpPWI5Q0R4P29NO006TTpidT50ZG9RI1AjNj51Mmh0'@; put 'N3Z9JlMhaWlnRGFFNlcrT0JtZCM5dnwqTTZfJnUyaixQN3dWOCI+dEBpZG9jcW9Ici82I2Y3SGFyRCRCfUJIVHIvfCF0UXAvQSZCQCY9ODpzOlZLWGI7Zjs3fU9GdT50RUA3U013YEJ9L3UyVltlTyUhTHZnenRFKyQsIywjK111MiU9aEYmX3pEJEJHdkBgIksmMUEhKHlkcXBRcEolImA/cVZr'@; put 'Nls3UUVsRC9EKVsjV3U8IUNsRDFEKVs+NXFMNF8mSyNNQkc6R1JKRil0UFB1PnQzWGhmJkBEISZGYlhrPihJSyl+d3tIN1U1Tn1RVEJocS51PnQqQVImVVpYfHtha0g6R1VJU3IzNV85KHk9YWNbaXVvY3tkSUMkQmJ1aEFJN0MhflFVVlJaZXRBZmNDJEIuYCZLQkFyRWxEZUUpW2xML0IpLE5t'@; put 'KihBYFlSKXFyeVFEIlNHPFdxPmBseEAkQkZ2MlchKTw5SmtHMmhEdGY0ZjQ8UjVOX01fNHksJCl9dndqPTBMKV9XNkxbSlk8UWZDQEJAR3hCVF5xOHZqJXEkXl5HPyxNNi5lZnJyNjZwMD5fVz44Ij50Kj9xVjdrfmtmcUh+bHZLOSxdY0p3NkozYj5uWzg4ejx5YWkmX2YjZE8qPGJxQnBZOkR3'@; put 'LHkpNEN7QlRZWVswYnFiKWZWS0pRRjlAOCpVOkUhdjwpVjsqVmBtcDA7cXpWSiMsOTx6ZGtxanttJHM0fWtMdyV5c2RQJmx6N31KVj5bcn16TC9ZcntTKnhnfD0uKnRCaXBWOjsrPEc8JXBEQ3hXTzpEezNbTDJGRjk3elA7a2lRIU1OOjwrXnw/NkZyfUxPU0hRRn1uSnlmfntHeWdFdkU3YTIs'@; put 'OSNPYntIPGkhJFtzfW9sYjY5flpAPVBhNHdoW3dpXlRUMFNpMGRUNF1dLk9jOUBSTD5wTUc+fDUkR0BnN2lRaXc9WmNjYzg/dVc3JjJebyQ2QyZwZWJ9Ml5RKEY8YXZ6KUtIclVPWnA8e3c4OU9kOy5YNDRCYDFEbVJhRWkrbXspSjV4Y199RUt9OUhwfCx5bEZ+Lj1pbU15XX59NFQ8YEczPmd9'@; put 'PFdbTzw7VXRLJjpRRytlVi5nTEJfKTB3bDI8R3UpQUA9NzpMeXNfQjt8NksxclI2Slo5Xnh1aTtuSUU1OStjUmkvbmZMJHJZU3E2NCZdejFSTTE0YW8wV3F4ZUkxTG9BblE+WjNYIUhsSDUubDNbZFFsNHVQflg6YHs4YkNOUX5TUWpkUWtMOXN5NSZPNGVyOCZOdnV9XXMiOV5lYXE2byFrTEUo'@; put 'PGQucTNhKGszYVdRbC54RSo9I1k3TzoxVUNxUGRybFRQcC4/Wk4kXz4jT0ldIWB3PUVMWV87LjpxaFJTfSVqLl0sV0MpczpucmRqPHAhS3wrUTcuYDtuXUpCdSxVI2kjbyx4PCRYXkg2dVBNJHFYM34hbU99b05kSmZUVjZYQnosNSFDTio6YW1gcSx7VUtIRE0jfFBdbipHdmllJF0ufGomTyNe'@; put 'cHtdSzU2KHNITXh5dnQkRjFvYGomUitmM35DSjNpM3AyUCl2QlBmLHV4VTZTQFR+UzAqZjg9TDF+OTdReW1gU1EhQnheKWUhcSQzQDs6R0trMFpVcm05KSVRLzsuT0wxcEc7eWUxa3kySCw7U0VPSktUK3xGOjVGbWEpZSpaRiJkc1loWiFvOFBORGtQSyQ0RE0xXSRpJkA8OGRxQnMlP1Z0VGlm'@; put 'Oj9HJWdmR29IUX15YmBNJWlKWi4hQDA2T3NEY3A5NkxnTkgvPHt6c0wpIStWO1peL0Y5QWVIUTVmcGB6S3RTNyF1UzdxOmFabz9keyZkOXxCZUNMdXBMTjwuPGQvfC5IUXo/aFdaXSU2bUd1WDdGNzhpJmBbeTw2T0JkN2QhVVhOc0c5PmpzNykwJGwscyUuSzNwSnozZE06ZyxpPyxERkw2TlA3'@; put 'KC59bnB1UmEyK3p8eE8wU1FTaUNVZHVxYHpvRDxISG0pTTdzRTg9fDJqWCFrZ1lFWzRnJXU1O1d5M246IXMzdk9oc05wZ1huT3djSks4PSN1ST5ZKXIvejdZalBJJllTWUgoal5oPzlQI286KEBMJi5gODMkU21vJmpkJUVnYzs0bSsmJGRKWyJfMktTakhGSDVUdkJ+bjZrYFJLQ0J1WnRRZVFj'@; put 'ZFswMFZpSmZAanNFb0NZdElHJDR4TS4kazZrMGBXdG4qLHk6WmtlYlsuN3BJJWIlQ2x7ayhrXXp6Tm9lcHR+V31pQyoreFU0a291U2VKSEtEU0RWaUgrNVFgc1EoVnFhYXYibjR2b0k7P180NXJFeGhBbXkpe1hoTHNNWEp2W1l6VFA0MDZqeXsmbUgrcHVjQ04xIShEeVAraSJlOCtdQ0tpYUYm'@; put 'X08raDtSdXVGfkY0S2xNKjI9alAlZDEmO05MI2d6WyN0RkwzWFcuZTU5bVJYcW8vfV4qVEApYEN6I0N0eShiMnU3W0RNPVgoZ3JYLjQoNHtWYylqWGdWel5Vd0doTDxLTHdeVXdtJTlPVlNHb00xO0tfcFJnOWp2c2BaUFg9fEB+dFt1UkUvLF4jTT1sOy80S0JaXltYVDJMKmdZRUtMXyxhWyMh'@; put 'Xy8/KSZCOWsyfEJ3KFtZJGlqXSwoZS4qfnFVMkFXWjNVYC9JT2lzM2Qrdi4mPXcxKkM1Si95QFlOejVtUFhtVUBrTjFOW25HS0xqcVcwODJsciZiN1Y2NlkrY28qTShfQzlVJWh7Qz9BRFZzO3pYRzQ9Tm99S3o/Z0cwfGwmT11IRE59eC5zXz8kISldRiZ4MWE3VFBAbSwmPT8uanU4b3F+Il96'@; put 'fC8vZ1RKaX0/Pi9ta0Y7ViooeXUrJHx2KyNuIk1nQl9MYEc4NCM+flpuYEJHQl88SWsmVVNxPzlKeVZLTHUkfk0zTVZTcT81NnFrXSlPaiNoXyEmJVJEI3NbbywoLGp8WSwpYFo6Sm14WG5TMiorIWdebkp7byN9em15a2llNmxiLnF0IyhaTih8MiladkkqK09qJSNXTDFSPzwkRmNoKWdjVXJW'@; put 'PTNPeGpvJGw0e1JoS1dAPHxfUFdATGQ8fF8zZVJVelJWYUU2NEYuRnhDNzY2R3JaXV5XOUE6dDYxYWZLcUk/VVohK1FUSEcxb04lQGRqR2ErbSFoUmBeeG0kZTZeeDg7MV5TdnNtK1o2JUs2ayU2K3AmQn0kLHE1PzY/bH0qLk5JelhaYkkhWnN3UGwmYi87dmtzeE45SnsqNUFzKktwc3BrViV8'@; put 'S2Y6enhJZ3A0c21KR0pYV1c5bCptaitGNDZhJXk2aT9HRWQhcThbKEleOzV3Oz13KCNnK2d4V2hDPFVrNWRmTEpRZixVZ2d4M21fY19WLGNwUCJrdTtgUUJdNj4wY0xMcDs5KGB1QGRBdCYrd2AxPHQrNytZYEBqSERAI2NpOXFibFsjY1ZVRU9bU15SXS5VZ3dzIzFsUyVkPnJdcjlkOEZCZWw4'@; put 'UVtrSlRlZ24sM1FHYX1KRlVwTipKNlR1SCpzJHE2MWBLK0Y9aUouZWo4b2t6cjZAaClqWSEwWmEjQDNhazgoanU6c2tRTSp9PyVST3hqVio1XUJMK1JwdzA1K31bO1B9LjhRcU95KVtNbWZXJDc/b0gkQlY1X0NxcixCVStuN08+eSpDOzcqbXd6YSFpbHI4Jk9lXmVgKDtXd11JbTlBNVRsUEVi'@; put 'MGVTNkdgQ1EqfG5wQC5zXSZkKnZYeUEyTTtROFNCNEhNKjRaQTx5UjFWbVE+KCQ8MCxDKnhDandxKHFuLENeVVhAP2dVT2dgTy5CUmVVPWQhJVU0a0MrN21AfFpSflgpNU9uIntkNkNnbjYlZE9iS19lbW43WFhwZjRJTkZidVc8JmJyKEQxPX45KXN2KUBKWzQjRl43U1Q0OlJlLnA3KmRZZ35P'@; put 'Ol5SWlhuVTI8M0NJTHNna1FePz1xamI1MnRuZUVXT3MuWlt+PjgibEAyPGB4Z2NoLnJqYksoXVBYUT8pQWB7ODRyRz9AeVtiPUAwWFdNdnVYLC9JfFhrK3NoMTJ5OW8yKWpzLCwyU09pXXokZGcsdnhTLjgmZk9SclpyLmoxel1AY201NC5SZ0tuZU4/Nz53fFU6KUk+LGUidExDUmc8YDRfZD13'@; put 'WDhZSXJWcGoyVVBwa15eNnM6cTJ1NkZnRlROYzwrPGk+I2NVeFdzOjZeYlcoMUErJGA9enk/NVRzIVMqTUYzNCVyZzNCRnsqVj4pbW5GRSxbWi5WUUBLOi9+IS8kZDE9VkxqVStsXjVnY21jLmwrJW4yTEBYcn16fClLJEtBc3dZWDFXVmhsJEtwaCUjOjVGYlhzdnI7ekwyRmJ0dygucGt7TTFg'@; put 'ZlZTVysla3UzLC5LRCVfeWhGNiw5TnZNT297VjtsQldPelhHSWB+ITNRQTp8c3IyOU52TSlnMWFXVHY6QFpVdlVwXn5rZ2dXWShYMXFkRGtkIktrNjV7VkF9KHY0KlBvaC5rWnx9YCUsaitycH45WnB8L2xOelYrNEtick5qLkN5MW9rfF4qfExJQ25tP088UjphJHYvZGl4eVViVVM0PFtZZ2gv'@; put 'eCt5UndRfmlnJWJIUGx5WHZhS29PUUJuRFtlM3BNY2dgakFlW2ZkTCxxVFhuVk9wXy4+dkB3dXclXzIwVUZVOV5pYkIkZD1QNDhEYj9FT19KRHpqSWIsOlhEMDVHeEJaPTQ8M3M1Ujt2MDlWTDApYWlOUjw1M3U0Jlo1OGZjPkgwZHo1XUd4YkBMa05uJXZJfFZyYTZiQHBRTXhmQFFyWyViNS41'@; put 'RU04WmkrZTIkVlFRZFUsZkpoWCQjNHdEJi5tMHMzTlN7aX1vVjdWO01HUCE3Yz9fTytKQHcrKXB8VSxeNUNWc1BuJTx8ak48WSpTPExpPj8lSDIuUTNSKzBvenwjLEI8cFJRVSlRR3dHTT13WUkrJigpL3Q5bUtPe1c8YzJGel81PEMybXpnSyhkcSwkVmQzT29LKHUkWFM2ZmJxSGI1VGBDNVV9'@; put 'NXB8d2dBZSlgXXkrdjJtNS5mbUYqSWE/dFVVb0YwZENuJVA/MG8sY2khQFZwJn5mOGVjMEs2Q0ZOK2tgKXdAOWdmfUpmRDQsVloyM0srR29OeVl5MnpQXyVJIXQ7Oz00Znk7TWprYDJDbWlrOXc3fWVPYW1EOi9CJElJVF8sJiRWTG9leX1eSW9kRmU9e1I8N202OCFJIklMR05NS3ksSyhxaVNU'@; put 'JXk7JmRnQzxEKFZuL2k3NkFUJnh5Si5wIzA8ekQpU0BDYjw7UUk7SzMhU3hXQCttOSlOayVQLCRFajJTR2lxcVZka0wmIlFEJk12SSRBeFc0MTwzM2d+LkFbK3IvP0hvfTNaRSN8V2lqLHZAUTIiSSswQnErMmhNVGt2Miw/ej5MKV04OGVdJUVSTTs0Pko7Xk4qZ2p6cjpObzMhbmxWO1VLbEtv'@; put 'UjBJYUVPdmFsXX1iO2Z7MSNLVHRSV15xam9MO0oqMThST21dbldtcT9naWx5JltPeCVDUlZ0YjQ+QjltVF9zciokOz5UN0tFZ3NaaFduenVWQHxyeWp8PlRqfCtyTmo3Kj4/SWBXeHt2bCtoK3YxOjVHLlIrZTpHLi8yK3RmKWxWdEE5dWZ1bUNSIUE7P1NAfXZ2YEtUMTA3InhiJXxxTWVPYSxZ'@; put 'OGBdeW9QTDIwIyVTJk14blVaLFdPcml8OE4rLHAmbmc4TnssLHFpfD16dVowMl0+YUd7X3wkKX10bzNgYzxLdSNLb0xtSS5GJixBY1VbMiFxTmtWd1c8UWxMbjFCNG0uJSk+SUdbSCFlfmkkZX5NXWtkcWs+KWYuMFYqS1BbOD1lWzZtZVRhK1BuQF4mRkdraGFBaz1DdXU1cDVfUVI8P3U8Z3U3'@; put 'fXA2Ung+alkrU1JXbjQlZGIuPXViMjtIOk1sQUZvSmBgLjxkJFIkO2dra2U1NjNheFtfcjxjb0BkOTtXaSl3NXlpUkAuVldSUk5ELnhrWkB9KCw0S3BobFY6ImlpPFFJYFpMMiNrNVJYaHJ0N2RkaG5NRmRWNUg1cFMhTWc2RC86MyFbVztpUT5uKz9mdG4hcWcwZUE2T0xVVyFHO3gzZC5VciFd'@; put 'SkI6ZE5fJk97LnokOl1CQFFTPVtCekhQWk0+PX1PKD40VVchNjdxW1ByLCRoOSUzQEhTYyZ2WFE5S35gMHZUJkVWQkNSXSg/V1Q9W159ckhKOjp8KTN0QUZuVUJZblJgSXFEe090O2pyW1ZROy5NQ3J8TF1LTHtJNEZdSEh0IjwzQUh7T3hddntEfmUiPD5MN3s7ai5DKl5xTGxMbEwvUHNnV1pX'@; put 'bWtWYGRBdjcia3ZOVnpIcSlGZk1QbioidndFQVkxSitPTC5+dERtUFtTajVpdlhQWHFXL3xjPGl6NCpeKVFqY0Y3Vl5uKW4oblhtUFhyWywzJUB9MTdWbSxAP3M8LzVbaXtaWm1VUzJnSSRXbVR7NDgueVlQUXcuUEkkV3R8alkvTm00L3A0fUZePCJiSFMjJiMvO0hSUWR3fTVsRWlnMSw2WWVW'@; put 'OjVhO0xNelBeWUpVTTAjPHVSMGBPTGshcVc8UTh7V2FGTzZUcnNZbjlWaVRWYVEyMjlsOCVoVH5CMXNhNFRiMGF4N3wyMXZ8aTBsYmBUNyJEXTJadj5nOG47YD1sdiJ4eGF7NUsxK3FMUjZAfVQ3TjJmX0Y8LzBkOlZRJDNDUi43KkhVb0l0KVUwXUhENU1Ab2EvN1Q7KEc8akM/eHMvfVErN3BT'@; put 'bDNYYkpJXkA7T3Z8QiY6QmpNODNjWDJ0RF0vOjA3WTJSPHVidmo1SkFoTm9BNUY4V2EhT3VzdiVHej59NnVXJW0sYVlIR0dqQC90byskSTRSQ0FBQUFBQUEkQUZuPUk1fS99dEpyWmxOY1QrVEopQ0gpfWdzTlVjPEtqKjZyVXtGezBPTjw7JShee2kjW04wPzJLVD9tamIuNjo9WXFwcSlQMTMh'@; put 'TkdFdF86IV80XWFGPTNvSyFFKi8hXSNyZmE3Tz1zb1M7eTVZV3RRd3tkRUsrYztLc3UkUH18L0ZabGMycmYuUExab3dDNVUycT1dfmVHQDhtR3RpOCMkd1kjMXI+bDBaRSVjIUd8KiU/W2E1LEdya3FRLmQ+MFNvVD06d2ssSVVjbHRtOWdMVzddZy9SU182SlRVXU9QazNQUjRWcGQ/ZFIiUSlj'@; put 'OEImVnI6bilAd2lpWj09Tm9qcGNOIjosNks9QSxHSjxvaVZFYT9RQyVROHIwYk4/JiVsaUVwMHtoNm5fWEsldW5tS3xuRjpPam13T3JqYGY4cmJiPSRHPihZLitfWmAudjRXVVhvV1luX3o8VEQ/P2MhO1V6WUR+Z3IuKTBScCpOeDdQQHcmUWxKRF1dYFNhbkttLERadG9tYStbb3cjciJ1cSxj'@; put 'LlU+QXt6T3BQRUdzJCFFLFYvKCsxSXY8WEM2dVluTFthIy8/W2NGVHpnIVIlbGBjZ0hGcm0lSlNjYT5gVTRtLH1oU3thfXFtb21SfT5VcnJKQnMqLGhATjZYZC8vYWZ5NkxIUVpUOTlHa157RCF0cHgwOn5Nekpidi4wWFh6OjpLQW19ODUqLzNtZnV4Z0ltSFYuY15udjR6T2wqTGYpNDUjY1BY'@; put 'WTNlXV98PDQ8RlhYa0MwVyNmaC9YSkl6czZnXTRdNzY1aUx8JFtBbmk8LH1sTlFrIXBYQX1BJCk7a2o6S2A1JVNZc3sxM3V2MjZxJFBlfTBFJDpLRktqPFFTNGxpMktiISlSc0hBVCEvWW95JCw6PUkkUlNoVHQpQ0IoQmR6KzwqN2tEbl0yQylVYkQuWkRdVmh9InU4NUZFe05dUmVmbVFaXXMm'@; put 'OWwkO3tKKGsrRkoyJXcjeUB6LE8rQjJ0fkhicnUqR3Qkej1TMzY9XjZHXm1QXVY/fVUqQzp5cm5lb3Ehb0pldkx9VU13NT12JStXXVk4TmtpdTQmc3A4eVRJOWtiN1NAbClrR1BrV0RwW2QzVF9UQTArVWssOy9zNTdxZFBAfCNQTD5PODRpZjRyRF43ZiUue05tbl56e05zZypCKnQvfnxuQXE7'@; put 'I1dIdEgwS1VhdGxCT1E4aUFHMWR5KiJfYkUufWs3QjsyP3ltPGEvZUoxJWx1QG1EVSEpJDxYLiw6Lzh0RU9ZfFsrWVpmYi9jeCFeVzpWV1cjQnp6JixuQUY9eGt8b14pVzNPWk9lLj5MN2oyXn0kbX5DTWk/emJzbXNKZWttdTVdLiguPkxTOWNHJDk0dlp+L2pDWVB0NlQ0TzFYdH1dPkVFX3k1'@; put 'OCYzbEByPCNTM28zTnkzODNFTzc4W3N7b1UpRndZTTFWe3QlQkM0LCtSUXBiSnl3PEQmYj5OLCU3JGE4NTpAT308KTtxMmglWz1oe3AiQV5IUWFOd0N8c1Z0UWlEa107KiFgdEd3KXQ9SmkhMDN3KDI9bWNFb3tOWilzblt3I20zRzdlV0NnVVkjQik/djtCVTwwUzdkVmAydz4+IUV2SGNNeDlS'@; put 'NDM1VS56X2kmKGB4Sm44OEtDQDpbbTBpOzIqMWAmQiVSRTRJP2FJZHJhSkRKfipXK1VbX0RoVzYmP2ZPP2gpTCxDIWlZXlg3bkNtK2o4ZWBkKS50bXJ5U1oxMHo4dCNtdTYzQ084RXs6eks5bn5sU1NmJk5ecDNxdXNecW5uZzlMRylaYXtHRnI3KlR6UHU9cGZXWFFENFZZX2Z+VSx+R3pRNm8j'@; put 'N1pgI2A2bCp3c3hmXUJNXmFQLkVuX01ZYUNaTSN6KndEcSUwcFFUelY3IUMmIlFId31GOjBDa006QGhLIzgicVs5eDd4X0tIeGtecytbbz4xZjJWaV8uUjx9RjFXcnxtP2IzLHFRUTtbTFlwe1A+PEsqXSVGTWhwUVomP1lAOTE0PylwZERKKSZfXl4vRWEyc11Lfj1+ZXxwI1VlLG5aS2ljciRz'@; put 'P2xqUXhVWjQ0PW9KViRmcHthL3tLeUUwXT9YW0lIXkx6QHpjZlZfUVJVZmlOTUcxU3xzcj5AdTBeJE84KTxUZ0E2MkJ9WFJzRWNNSTJDYjFib1h6Xy45QHlSNyp9JChzcylYRi98Mj15Qz9xYG15aG5uVyguaDt7XWF9ZiNFYU4vZl91eEh6Y1RyViRANUloUVdHWEYqLklDLGR9Y3FJYSM2IVRL'@; put 'Rmdpb3hZO19bcz1iKCx3OHRsWDFUTCVzMTUuKStGb2lEPkBZa0cwflc4OnZuMjVWQGpMNV41VkUrLD0+eWRdL18jTWVjZFVlKl8zYVdRdHcqSmh8IVl4eUV4WXZDQHBkR0kkJEluJjVSMGUsVz16djxvLyReQ3tVUWBAcUZYUHc+RFh2ZmdlSjQ1IzZ1TTNsKlhQVUFzOVh0VDp2dlVgaVRdd3Zu'@; put 'emxbMkM+X2A6R1EyeXx2X0BSfXlQbDVBNVd7Wkt3WTh1bFJeMTJxNWJQbSFJVGBDam1NJXRDSy5Ebztwdk10UURzS25iJihBdWNRb3IqMCFENVtkJUdDVXlzNSQkeE1MPSliWTl7ZlIzbCtRMDlXWT5sSzQkMkBlazdZM1dkPU9JcjRvNW46SDBQaF9fIy5TdjZvWWM7UkxuKU5FT3o/LmEsSyI3'@; put 'Vk85TGVKIlowYn5VJHMuQnwsWWE8XnJXNSNyeD5NSEFnUS5ldWA6O0d1dCtrYiF7XjI8QywrN0ZqN1pNQVFbN0deJF97M2EhM3RdPUVRVkU2WW8jdVV9a2tSY3FQSXBlJTlTMWMzdkFGOnE7c0pGJjlUX0VFJWc+SyNBQCJTVisldV4ybWMoTkhwSURjXjNwQCUmNTUwdmwjVCF8IUk6XyV1JlVA'@; put 'eiJRV2FnQlVUWCJDJm9NaFJuUWtvaGNsSkp6Yj1fQ043U3E5d090ZXRQWGtDTUYjTyFdIm5dIXxHKkghZiRxaGhMbHQvQyw7VXtZMHttd3IwUGBTMjY5W2lSYmxWSHBObDRXWnFmKnM7JHo5PG12ZWZBeFt7Ry5tVHtKJVNBcFAxPHxgcnp6OWMreGZfayg3UH14aGJRPE9sMU00R3pbYlFecCgv'@; put 'NUBtY1s1QHdbM1tScDsrSl9kMkV4amF1ej8wT01bd3shO3xAVCR6W3BOM3YqUEJYXSNzLkUmfFtuUStAMndseWEkdEJwIX1iPVNKZEFhUkM7ZSpCRzNTSldoUEMyO0BDQ3kqMSt2Nj54KkJtOkhMeyljZix7TipqJFZjTlNzWjowc1FYbyZLPW5jI0Erc2clYW5XVWhteWxXa29QZUBlfD0sPmtM'@; put 'SGAzJjhZa1U2W0g3fV9DaHJQNVZuJkl9Ol13JmE5MVMrTjBSeitQcCpFWS8wNzZXX0Y0Oi4+NT0yaWBeOEdtcWh1WFMmMU1ueCtXeSljXmQpNkxmdyEjQmBQdj5WOCs4YVA3byU4YWxjTCldM0tCU0BsPEd7YXhaU251TlBCbElyLnhVWyh2bzllcFE4XUNhdSNVP19FVC8+UWwzZnQ5c05ZenQ3'@; put 'YTFWZ0xXSV5TKXJ9bi4kSU52cz98aGo/aD5ieD9hQ2BNYlovQ34vLzY3Y1R4d0BEdTBFRE0heUAiIjdnYFFeLmk1ZWJnVW15cjQjTjdBN2ZtOXEzPnhbVTdnemUiLF5XN25mSVZUU2o9UihtZ2N8NG5xSCIlWGZTUTAjNSlSQ3xvTztpd0ZhfFpvezg+Izw3fXtwJFF5NEc4PVQhVj9xblZMIS9J'@; put 'alt+Nyk+UjdDUlhXc0oqVDddTE1bWEoyQH1KNiZIUipMfHRQRk4iKUkmQmMySihURWlve211OUxCSiV4OVhnWjM8S2BVUEYzXkEpRHhQfktiLCRMcGIxLjE/SzhtbHpiQnNoYFFkcDJ6LDN9ezxFMXBvVEloIzY2SixFU1Mqd31wSkJnZkRlcFBmc2VdW0M+XnQ/Pn4hIzp3O0hmXnpOWCYmYVFj'@; put 'cyUsaXF6VSsoU3FTK05xOyk+cW87XkZ9Tz5Ab3x7WDYjKCxKKFs+UUdxYU5EKjdAMlgmbjtoI1I3Z0ZpdU10OE5jeF15R2dxYlFzP0UyQnk+IWMlfTlXX1RfKSxWTG9tQyxqKT13V15DUjc9S0UjIighPUMzeGEvZHcya1FdKHRbMnw5QVBbKkc8QWpmaSg7PF5vKXkyKmhJJl99THJtNiJtdyk7'@; put 'bVtAZFM9U29ASUQ4TiUkPXZaWFBZKH1SRV9hOEkwdn1sVWx3WzZoM0NgMHQpSXo4aCZRZXN1b28+I2tbI1RLUiZAe3ZMMkFtU21ndzZ3dldQN2lEZyEiUzFuY29ZW2ozJHUoc3dxKVVnWVc1fmtINzl6eWpkR0pxVG5kfndTMSojcUhgNDs4JkZgN1tOUTdQa3pCN0g2fHo3fj90YnlQSTQmU1gh'@; put 'fWJ5cyhhQ0FFWWEkUDMqUiJ4czRQSGhQdmJfPlZ0MTB6bGRrYjU3KyM1MEJBY1RlTz9WdF5qX1gvUDVFPWxBK2kySmQ9JTEpPU8zQ1JVNGJYP3FncltYell2fGhQQUxYZ0ErKS5NJkM4VF1gSng7aUk8VCJSWjdgVjVwcXJkeT5rTkFvfGEiMz1tMFFSNTNNMX1kTXd6Szx1Xk8kUVgjRVIzWS5L'@; put 'QjlxZDprYF9YQE4oWTE9XXE3OTJbWXMmM0s4ZjBmfWQ+aE1KOiN7aTIpPH0vOCI9MCg3QVNrcXU5cjU3W3IzRCgjWTYyYVV5UCFwbmVBaE9yWUlIMHM7RVQyW3NUMX0iVFhrYHdjWX4mRjwhSkpLb3AoRXh+SkpzIzFyTzF6XnVSO08jPUcsTHg2S0k5eGJqUn06IUNAdX1TL1VCcFtwTF1LMjA1'@; put 'WDZ1S0RbK3VHU1ckVi4+YylMUUczL25aN2E0TF5sMGtiU3QoRWx+QHpSS292a2Z6ODkrRUs7YyR7QjplUUtdW3dIQ0k9eV1ncytkZ3B9ekY4TTZhQ2ReZEZ6d0FPW2txKkUufU5PcFFxJDJ0XzNCOFhHUFdiSkdTT1NHcFlSZHMuKUdCZFJtODVdaCptclcrNUd4aHdQbWNAUlM1WGZ3S107WjRj'@; put 'WFVNKFFiSj1sPFtrTSxCKj1sJnxGdFhwaixyeD5TXyFmLzczd0VaaU5odjNyNjwoT350TG08NlZ8R3F8YjBDOXBFIVVDb3Y1Pyk+cClOMDgxRzQmRXdVbFtiUjJveVd2PGxrIisqQlR7Um8pTnpHN1VoY0kyfVFSeVlKZ3B1WEJee3Q/QmpUUDNAIys7JUdeUWpVJjh0an1WOX5NT2psNyh0NHBF'@; put 'KjlgcyJxcDk2YnxxVSppW0d6LnUicmVMU3p6dE9QdC5zY05LWmJ8SXdSVjFLTGBtNX1xO3NLUkRGMlgxYWtTc2xFWDBzUD51TEBIPSFWWFhBZEY3aXZoKFZfI1NmO1VpJX56dlEieFZQSmVLdiViLjJYamljfEwyJldsNmpLPjAvSHNvWV4hQ3RhZ2hoKUhKXTVtIjBJfDx7JmkpdWwlQiZrey9k'@; put 'JT1+M3ZxK1JJcUFvSCk7XWBdRmZVTlp+dC5sPkQ/QjlaS1tUT0IiJEw5OF9+IWYhJFEqM21lK1tmPEdFbUQwanw0K3VbYUtoS3s5bmZ6MHt+SGBjU318WSg1UCE0fUBRNUtZb29sLFIzTWZqSmZ6cWwySV5aMyh9NmZGQU5xeX0+KFFBYTd6eHtwWjY2I1FPaGV9b2M+L1ReZkBnP2kqdWQzR28w'@; put 'XmRJTixRbGdXXkJvNWlUWlhIM1lnN0FFLyQ3fWxbdkcrNWRFaGpqRCFHNCxqaWtFUG1mRihnOEAiRiphbkh0QXtXRVVsUm16JVdfbj9DLi5FTkoqKlByIj05V0MzTEszbVkxLCZ4UVE7akUkbE1DcXcrNFhRc21MSW0qJnohWkZoPDU1YlI0RVBqZDpfUjsqbHtldWIvTk41aUBXW0xAfXRXOzMy'@; put 'VSl2dX16NFEqXSx2R3ckdVc3WDFwTHJ1R0glQEZhRWt5amR1U0BFcmA5WlVLdU5aJmxjMl86RXF9Tndhaks+R0Q8YVNjKGM4eXFFN3tCJD1sZlBhNWR4NXk7YVQxU0YyeSx0IVVkKjdjOm53ckJDZUlaYXliLCZXKX1pYGo8MlhkSHAkMS5KaVcrWTkrKFF2clBqcVBWKiRhYEA3UG84KSp2cCpe'@; put 'ZGZnSEgsVGQwWj04MUl+JSpWWlpJPDgqPjJOVlZ6aVt8SENhcENVYDlCWC9HVGc7Kld6QVo6PG1qaixURzVuTU09PT4lLEBHdmokKzEpJWxncztHcGMrO0wpJT1FaSs+ZG09aDhEV0d+WF4qLCo/N1dIY3h8bl1GTUxKYio3MTssNFVQez1CXT07YitdbGAhVVh0Ky8yZHQuOElITmFbMUEyZi5E'@; put 'MmZjejo6YDF3YG1ldjssZl9hWzBXJWB5PnQ5Oikienk1dXRmIUtwUW8xL0kyQUYrJWlsLz0hYk42akVDLGA3VXxhNmcyLDV8TDs+TiYwez17RH4kbW54JHFJX1pUITFhREpiR1YxfGdUPmp9UlZhdHFqaSpJSFFHVD9oUHRQXS4vSmgpI2lyVFFyO1ZxJEJxeCtgc2Ykbk80eDlPPW9lXWVgaSJD'@; put 'bl54OXZ3TnZBSTxXSW1LLDJuKmVZajpebnsxbS9GXUVnX1NWVUtWRyNvbzl5SGBwaGFedGUqSlgzL3RPMTo1YT5TZVhASk5OU2BIPF5HPmJoXSkvQ1YvPDZuV0tLPVZ4NWw9RyE4PlQwbHJtOXVCeV5pZyNwQno6WlQyQF9OYmRKR0JtfXokMHBKMUlzcU15KDsmQG9mZ1FGWklZek0walJ8a3Bp'@; put 'fTs4UXRFZCRSUXsiSGAxMmF+d3ZFIytdQlNEYU0+cEwwZSJeRlY3bGtTYDZCaUdpPDkmZ3tkZlJpUGdGJipdXnUxRzI2YDg9dFgscVFGKEkkdlt5e0FnSnpqczxSYjFmV2ljc2AlTVE9ZXQ4bj4ueUIpfVFTdTxMZVExVnI9WUl8e1k5d280KDpOSG8+fTFAYTZbImx1WjUzIWkyVT4hdVdkUzsr'@; put 'dy5EeExDIWx3V0E8Nk5aOm5LenlINTlsMThGLHtpUWR0JTpsXWFMVyE2aHIsbT4ma3BuVVNlN3oyY0RxSm9KR04xaGU2NkV0eFEuVmQuNk1id0wkfnd8fWsrNXNyLExIPTY7Wl1yUWgzKV4xUjVGTm1NMCFTfkskMW58Q1c8WDE6eXBMJDBddnljdCl5PjlKYjhYJlhqLlNDPGVrNjk9LnpRNnRM'@; put 'YW08Lmo3fkU/MSY5PGVdW18yNyVDNnxTTD9iIW5PJSxsbHdmIy9JPCEhWHZ8Y2E1Mip5ayVHeHk0ZiEiMCUjW2ZGa21ibTRFJV94JDhsKGNQbyNQKEh4NyY7biJoVEtUQFFlKiZHNk1NVy8mYEVQRzZDNSwqXz4/O2hPa1AlWmoqNmw8bkNrPiQsPGQpbzVsQH5SZitqOyNAdCZ6YkZHQiYqdlZE'@; put 'M28+cVYlZzI7JUt4P0ZeKjZpQ3RUXkdGPik9TW5DQ3pqTUUjbm45Wi4iMVJqVkk9VGxPNltWd2dZTVs6QjcpPSRXPWpWJCk1M2xIXyI5ZTFsPHAuPThbfHo7UHpHVjBVWnw7bVhWTVpbUVN9WzRuUT9kdnRJR3cwN1dNX3ZrRz5LbER5a0pZOyhKI3k9Y11YIyx9eFdjMWpFXzk2eWphMXBCJXNf'@; put 'OkVgbnlxfXIpOHphdkZHKS5SeVFWTSpPSUxmREN0akdnRnlIKUFCWWNtKVlRb0d4SmEqREArKmh6S3kwNixmd3Y0RTxTMVBzOkZ0dFJwOk9gKndJTERIX19CYFQrIzF0JWpQcXkxJn0seTxgJXA0Mm1HdEAqLDhPY0pKQnZzMnIlOSowbS94YWtBRzk1QWFvWSFOTWA2T31DenUpR0ZrMkpCIls8'@; put 'JF9MJVZIbVhoK3NyV3g4ISpRPmVwY1Y3dEBgIVJ3UiFsVV5XXyY5TDtQLH5ANiQzcUU0P2k6cmksXShMY2hOeWJAOm8hQldKblBnckAiWGV4RmA9XjEsUW5GeyE8V198ViRCVXJmSm84ZEIyLnhkKilhW0dQQ3tWK0xBUFZWN3VWTm5GaCFtI21qQTtDa3dCfUc8RDNnOVc5TzhIO2Bhe1VTIjNr'@; put 'cnU4b3NzK15WSHMpOkd3SU1+cUNjKGNve0c+IUUhMk1LPVBMWC91SDAuVV5CdUdMQGZtZUFmQi8mLm43UTsyeDg5QFMydlo/Y0NLdXN8MD5oMnF8Vl1OTUc/JV9XLGF5SDR2cHQ8Z0Q4Mn1GVjxTbWZyMXMjP1ldJkE8I01GTWxeeFdtXVhhVkpMSGA5aHgrTXBJS3Z9RUZ1O2h7Lip7QTowZFFr'@; put 'XSZuN0c1JkBGWzpLNTNyKSsxL1M6VnFsbWA2ZW9pR0R1QipfMW5xZlA+O1RvYkZKMF1SdVVxJD9UPndbXXxVc2gzenBoPCVZeSNsSkQ2dD1vYStucDM/WkV0Zi9bTTFMVEZVQHpqc2pSaWt5JXAlQnI5Kl5aLj1SPjJbKnhufXdaVWw0Z19XTnsrKTYzU21VZm1EcEFZTjVXSCxXY3ltVUZKV21X'@; put 'MWlFeEZjOiNrK0Y7ekJEV0x3WFY5WX1DZihwZn5XfmZ0KE4pSEY5VjowXk56R0ArVkxXM24iKEZ+XlYrXnx5SDRURkVJRWNUPnZ2W0c6MEpqTzddcjdMbj8vZEdmPm1yelFMYlo4LCxhRG86UFpiX05TZCU5YWdHOSEjNkV+JV1TXVgjaVg3RH1VZDBgPVNGO18+KW1FLDh8bjthKXkweyQ/UlpH'@; put 'WjNMVyRnWThVMF5JO1ZCdHEpNE4wemk4OV9EUyo4VSVKXnh7MCt5Wmk+SGk+QSwke0AoVykzZyRnbXs6JSlxSEYoNzJ9RTo7UW8+eSNTcilGdTJzU2E5UHNSLEBrK3I0VVI4Zk44TklnbE87I18jPiF3Vloxd2ZSeUAzeFt5dmo5fEt8IXQmWGhwci8lJE84MFl1LihmO2xEI0s7YTJqRXZAJG80'@; put 'WFlYbENSWFNMUkpeTE4iNFF4bi8mbHo6dTBCYXhxY149XSxGTCVqdSNOY0csXnZnOmAuWU1FJk1rInsjZ317RiQialslNUt2fGRvcT8md2ouTVhFQyFEaSlKMU4mJlF8c3c+WGxQYE1UND5DZmxMNGxlTWFHLDdiJiRlPz9XPUUoXkk8REBpTFBMSGhRW1t5UTJ5cH0+Pkc5VWhea29oSThtRjxT'@; put 'SlglWnRSVkpYc2p7X1UpXl1GMS4/MXZNek5DPENMTl9RMjZ2JWR+b3lrK0xbZjU3KjZOTlJJWzhzOV8pRmg5IlJGTD1NISo9fFhPdShTb1ojYGhHXTVGa1YpcEBkeHNBKCN9bmU1JCEzW1Z+Sj5hQ1hZalkibXhTUCxBWHRKXyE6elB2akZoRzNlcURMMktKU25gZ3ksa1I6X35VLlRwOHxYakVQ'@; put 'NEgrdFp5MXF3M3FnOW4jO1FtbXk/ZzJ2bTx4N0IuYFhiKnE+QXltKEJ9PzFnXWh0YV5ELiQrUiNDYkRgWSZlOiRGW1BpdztZbUEsa15iY0gxSSR8b0h+Zkh7Mz1sel1aNzh+KDhnWWxyeklhK0p6bGZWfSVHY1ZzQ3dSIWVEKXtpOj07VzVxSmNXeFBiKXM5LithY3tvSFV+bFBMUF06ditzdHUs'@; put 'aEtUMDZDdnw0fX1ReCY7VDljMnt5VWlPZyEkVn5IdSwmSk0xe1k1aSRwSEUrXSgxa3E6fi5COWF7W15fcUV4PEEuajB7OT85eGN3a3IkcVVDYGF9R0IoOF5ya1lJIW55ZVJDeiRpOXI6WGBoejU4PCVeWCwuIy87LFEoRFJuS01rK3JJaHU9dz9MczZ+QWgrV3NPcHYhZDUuQyk8cUQkLE5mOWBe'@; put 'Z3xiZncyI3w1SSFjTXw2OWROLCwsP0RuP1RGcmdPQV83ZjNRXm4+elhRPixdRzY3Knw/b2VLfjYzZmdoKUxEVHxyZ2ZzL2hXPUIraCshcDFFLFBQVD5uQip1Li49L0AlKl5EVW87aFVWd2pEX1pWWGxfSzdeVTN9WDB2c3xfeHZ5JFRZZlcxWTpDOl9oOmh+K3ZIfXZKMyhjcUMiKCJuWVNQYGQu'@; put 'Nys1XWBvNSlWTkZgRDY5XXpgfXw1cShPMFZaOEpSUm9nSTtQPFNmLGIjQVFveGkySykvTDZNbj5ZXlMkN2AoYSNET2IuMUBpVE4mOmNXdHFrLkpvPWJqPipnTkpfJEBje09UUSYvPk0qYGs6STZtPCVyUE1LZk8vdH1XbXduQWZ2Sj5IY3MsJTFZQSZ8QmIydUZVLnVjWWo5eU1vMF42c0o5ZU1W'@; put 'U0x+bzcpQndiUig6SDNbJlhqVyIpWlt1dT1bemJ8YktjTiUqNE44LFJybV9MJlAuR3dAMXk5SXVNPzN8RjUhKCYsR31QKSREd21rKFs9KGhBYjo2KTo4bGJ7OENLKkdaY28mRUZrNyxAc1VBYlhaRjZkMVd3UlNlfGJQOGBdfWBSWHFjZHxXc0Zbajl8WWA1eTFvaFl7VmV2RUozK1tQQVZ3eDk0'@; put 'QFBzTmRSPHsiTj8rfGE/RT5bdXpQWm1bXj1OPjVsLnkicF1semxSb348SFpeUUlYRjtrRXgkYlloSTZqbTxdaXtMO3g0OkZvPiZTNG9BIl45WlREXjU+V3BTczpuaDosQk42LjlJemxeOXI8YVtOW3MkJig3Z3xJIiYjJXZEfTlzMjJKImk7IU9bS1F1Y1N3UVVRIzU4SkIpY09zJCo5QUFSJXlK'@; put 'SFNjVjR2blgjM0ZIZGhCbjchZ2JKPCMsKD8rSEkyPFN8KEJGRkxNezgvbCMkeHNwQntTQEl3I3hFZVoqQzJdPjJENlZfLEl+aVFDOi4qbGZKMUVePSUudiJoNzFwc1JSKEFAKDZrRHtBPkVXYW9XeDJaMiE0UDpaZjIjJnJ0PWVySFg4NEg1I3V+b2MxYkMmVjduUkteMGtOaV02JXddc0QzZyhr'@; put 'd3YpeFNrZUIyYW9Nb15AS3hTPEteZT84Yz1+R3VucEVIdzZOK0ZYamtRNUxwQEtPPTJufmUuRSRhVFYhT2ZTM1oqVDZDWkJbe3NJYWIxQCNnbWM1JEh5S19GYG4lNnJhXiIvZmF9LHM+djAqIlYjditAM1NSPktDVDpXQHI1MVs1O0loW3JjMjcjWXhVLDQkRTBLaS9WWH0qbjVGaFFic0V2OyR9'@; put 'e3FoZUYvS0I6TD5OS2ZXcCtuVzdrIzk7Z3xrQSI7YEYrb3BVWHkwSEVJWTNoY059LGU0cXQzNDh9PCNAMXJrPW0wN1R+S2RDYHFTUlA6QFolc2VvUFg9Six3cmolKFZ9LlhqW2t+ek5oQl0jR0U+IitKUTNVWjVSRWdldTFdMFZCQWs7IyNMNmJZdCw3eW1OO35rcWJ6Xlc7QWIzcClGb2oyNDcu'@; put 'RE1ObmhIRmVkZWAvRkBKIUNTXWJ+IWpKdkhXMjpWd2FrITlzejg5QFBrOX4+MCkhRlFoWHx+ekNkfF5qdDV3dF9OTWE0KkZCRnljK1tUdSZmWW5+VU9CJlsySE40PyU+Q05QQWI/MnJHPk1hRTUxTW9fIiMvNXo2OXIzW2hFYmo/VVpWdDExU3EwazBpbX5OR0lMJH1ANnZNYXZoKytwakBDJn1X'@; put 'WSNqKVV1bz53eno8azkjcj0kMUU0b0wmMWlMc2IyISx5YF9UVkwieyJOaEhfM3JPUHlNODFUSHUuRnMseWZOYEdnVT9EJTJJIztzUDxFbD40T0Y1STIvcHpANS85JGl7JnRzIVZUWFpzOF9fMmc8X1hjTDx7TVBWRmhCKFd5V186JHNIYTMwQ0pjTHROYlt6PkBgYV5CRG5fYytYTCNERHlsIjwh'@; put 'P0NheVl2RHdRfWAzZzl4M31FPkIrcjA2TFJYLF1rYXhUbkdjOUYkI1hGczV2bWVuIV13Ri9hSiRXI1JiM0B7Rl9kOER1fXdXLGJXL0IleCNUKmtsKlEkVyVJfnh6WkdqXkNEdSk6L2wuUlt2Kih3ZFtLbldNW1AjKWR4WTsyMClTbFlCLj5DQCFfJFs0STQxQikjQGc2RiFVMXg/JSg0XzlpYHUo'@; put 'cHkwPjI9ZEg4KUQxJHl7NjAwOiFQcDIoK2ckI2Ara05ZOkV0bUM2Jl1weEZ1MltIaFNOVExMcyE8eE5ZWWpWbXhWMnFncyElQns9LmF8Mm5XYVA/QHUkOCtYWiFdVzZNPSMlN1ZRXXp1QGElOF1GcXMlYTY4akxTOXxmU0NhKHpvYiRmJl4ydFIqYntZUm9PQzZnQ342b3loMUBqNUFnInFZO1Yr'@; put 'IkNYaFB6d3AkLns9NTlifStbcSN+VjVOMEVsWixLVyJzPHVrMiV8YitSdnY3Zj5TN19iVnNyfixeZjpbYW50WHRKUyhgP1cwKXdKZFZFOzJzImI4RHdieipEUCsuVCVuZWouVldQMkovTCpaT28rV2M4S2d4c1M7bSVhQ253ST5MKF5dNEE4MGNWUlUofDlAdmM/N2UhfVkpbzVKRWo4UVtbdnxb'@; put 'JUNyaj5UMDxbKk1zdFNDdDxiNVNWK2duPUVjKXxgbko0XjhkU211LC9KbmFNNnxwbTssRmUiT2gjK283TkZbdUNrUDF4ITo2dDI1NjkvfEh4dlJ+aUUkXjZAcSgrenVCezpfd0lvdmFYW0lbPWUjfFNSMGM8dl4zdjQ5O3J8OjRDSkMqZDU+Zl93T2ZjU3dRQVZVImNSbk94eHh1fCYkdjtNSDA1'@; put 'bGVjeXBnJE9HUEYzZEQ9aXljL05YVkttS09+Ljt2LEkzRTooMS9+OnZCcjlteH1xKzx3ZiJkRSJJYmFxbk5BeztKRVU0Ly9QQFdIMFQhNFFEbndhT0BKZyk5RjA6L2xJO2VvKmpwSns1bnUiNmRYQjpGR1o4T2coMkU8Qm89eVciWkN3ZjpBe08jVFMiVnFnL1UobXhWeXx1KmdafiJ+OzlPLjpx'@; put 'WSMyYTgmOEx8SGNMcmZZblJHdlNZZDZ3e3hBUVh0T2Q8Znh8RURyPFQ1RClrL19GTUVqKS59Mk0xQW9wYnFqTmNqSV9OIyltU0hlSHBqSHlGNjtfKE1DcFZ6OHgkMERGbXZ1JGpVTkx7anA/PX5COzQhLCg9IlhuQF0zR11oUyRxIjIyNntoI2w0N3hJJS5HQiZ6NTRMSF8kelNGQ19lSDMvM2I4'@; put 'LkA5Ol5XTjdsczt7IlQ8dlJzbzo/e3VEQUhgRk18bTF4KTBTOSprIXxEUTJjZ1hhdTVXdERDWWI3XjlpOzVbSiZ8eWwrR1cvYWBIUmE8fltpQ0M9W0RRT3w1cjF1ZSxXb24yL31AMlgrciE8dygmMWV9Wk9XTTZRKzkrfiYxWXY+TTQ6Vi5xW1Q6bn5DKmJTSzAsXUdAKjJAZ2oqVExARXMsfUBq'@; put 'e00scWJ6VT5ybk5Ad1NSXXpRfCRLfCJgcT50N3N0RmJgVFMveVU1UiQuIl9BaFdLVzV3Yk5eRUorQiNWMHozLzVtJUFabEUua05fOlBsR2JZbix7e0JfTTkpNF1TLF59TEQwYSowaT05JFhfQjkqSUNZN1h0OzxFX25laD9UWkskImwwfXl9NEZMaCRpWEB3IURte2B9MztZcTclIytrcUZOUEIw'@; put 'Xnk9aV5Ha3FITWk6T2I+ZWpGRzVoSGtTOTFyQWRxbTpud01pYEY/KjtfSTVLMEtFTH5FTSglYkU+SjksKCtHQnNTYmlZcSE4OGZCUkojeVU0e3EvKXFMPCJRWy5Da2NxJFJ9UjN7cVZobiRQM0hwRkRjM3drVkJCTlVRN3pqdkI1UUh8WFl6Mi9aJSthYVllfC88WE5NZ2kwMSo7TTxTe2xAO3Fm'@; put 'KyR1Ono8U0V5Yndme0JMZUlSM35KV05EMnthT0cvRHtuSXF0VyN6dH1EUH5aP2lWc2xScnw1Si5EfndfaCRZfWM7Xzxva2xefFt+YURbcFA5UTRdbiRgcD8xQSozZlh4KTUyWXozUz4pLHx+VF4sfmBMS3hyRCFmUCZJK0V3KV0hTUokYnVVSEhUT0J+MGckYlc7TypZY1E2KW1RInJGdlBKYW14'@; put 'O1VHcGFHanxHS10vX2dwKnJnbEs/PXFZbGdmWVFIKSkwLylhYHtbWFozcmNUOzFmMXZFfntGcHx1dFteImNBWGFTTG10Xl1lb0hIdTtDZm5Ed0U2S3BTb1lbSyFkdDZpRWBhSSlDYTV7OGBhQ354WCRSdWtofDdgM1MpazgkK19uZktuX3liSXE3KCpNP3xoTnguNXsrX3NYLkx2QythOEprdElx'@; put 'Qm1IMDhaWDk1Nnc6WWB0eV1dc0gpJkxGbjZKTlUoRSNbaWJaVm0rOz55MTtOTkpJei53KEB2OFguXzdBXSNJYj1aeW9HYHFfWUxMVUt6Xyh7XnJsVz1KbVlfXShhKF9iUVhIfkc5P0NoSGBlV3tpa0xnXUBjNU1XdWwvYyQ4LDI7YD15Z0I2NGZ4Qit+fD4+S0hTPlo/OkZmPz1SX0V6b3Z9PEMh'@; put 'el88Z0wxNi97IiZlaFE/VGJMci5WaW5YSGZWNWN1bzFWNTthPHNbej9EV0pmZGg/R3s5XTFUfT9bIVF3YFlMOldAVW1OTUQkdE5+MV0yJiVObWMlbnhSKyNWMk1eWWw5cCwpSXpQRXpiPiNhdDc+TFVQWVMsKGFDVWFwTmwuYHk7ZndEL1kzRUJZakhGNDw3ZWFPazpfVSh7OW0oUkh1fUE4JWxi'@; put 'MkpyfX5ZODZTTmhreDFJfG1uUGNETVg8UEFQRVQvVlpffn0qSWBSL0pnWiVfaEpGZXc1QTg0azZnODBuV3I+W2pEakZnInBDektXejUmYzZmZ1tdNHE8SmsyZS9IfS4ibSh7KiRIYTNyU0FDc2thenM8eDUkOzg0PlA0dzltIzJjSmo8bUhHKGh1e3VfLHldNTdjTiM7WSF7S3Y/bld7Wmk4Rn5k'@; put 'RS8uQiYuVkNtVWQmX21jbWR4M0pQSXdueD14VyFGLjxMT15URGA+Pk5QM3ooRjw+bEZ4dzdiOT06SnBDOXdwbzloZW9Ycmk2XUJZSG93SUJTMDw2WWBgVHBMNEddaXtENUVtR0BANzQ7KVd7cXQwUV1dXmoicCw3RjRHXk9eNUlIL3BULClRc3h3YnAvcVdUNzRLOSt1fiw2T00wQiVwI2FdOT59'@; put 'X3MwTkw4U1MwMTNoYHNvcjF8b0YkZTpuQ2lIR3JkXX4vPWo3dj9mLCpINVtYd2YhI1psIXJFVT5oPEVkRmUyRnRgJGhmMTN8ZEIyPCtsOzhvcVs6NC5bb0gmcXVgPjVYJjkkdzpKdlZfYnksTENjIV8xKX4ycXt8TTtIN29MVCREbUBNN01NKDdeLGYzU1VxRHA1I0lsWG9BPnFkUCVTc0xfNWRn'@; put 'RDppLzBzRVEhaCMhUzNSODBMWFQ7Kkx8b2k3Si5GMXk+UT8zVjY+Y05LdWJDdEYrX255TndWbC9jNGxuZDMvJCI0OClVa2ssLnMpa052LnxAYCk0KSxLJFk2SGpvS3JxOGs4dnYqKXAiaC8icE9nfG0qMD9kPyRfZyJZT1pIQ19WTCwjcnZybkB7Rjw7VWhXeWpnRX0oKSslIVg5UiZubUJCNXNu'@; put 'ellrS1FYLEhRV1BvJS9rUzljLlZRPSRKK0BdNytXXSgwczFBZDBCITx+cCh1KGY6Kzk3eUIrQkhDZl15OFFtTmZsc3xNOHokaXI5N0c/O3h4VG14NmtvaXRhdzksNiRMLmA/YjBaSTNoTHp5KUR+bVhBdn5GQjliTHNUb35eS3gjYChvXXxeckAsUShoWkMyW242LjddZVpCUTYwMFdxPGJiLD9P'@; put 'QS8hRDJqTVhMWkl7WzpuK25JZUZkZDx0cVRnZ2NzKTNzVkF+cyVKRDxYO31sX04wbS98UkMxXS5yLnJPdGREL1VfLD89ZH1zKjRiTEAqPyNXYDd8Wi5FKG9CeUZzWChYfSY+cXJvO0BreW9HKjpdVC51KFFQNUEpamJsNEIiXWM6LnBIOCN2blZ8WEYkI3lRM2ZWUFgoWXhOdGY7Tj1dYEAvPDB3'@; put 'MlNuM2RiWE5pe3V1WWxMPjciVUNsK0dIVi5iYzBnRHU6LjF0dWUvKnxgbDdFO01ufDtfMXRsLl92SXNleTc2LCNZSFBDL1tYYjBQZTh7MlBhLDVEZFl1Ijk4MUYlYC94M2x1Lmw4KjpmSjM5IlR1QFciYkZ9W14iIlApaUt3JWFgI0gqWXZRQyl+KChETnNbfS4pSiI6LmFmWncxdE1gUmBdQVBe'@; put 'V2Bta0IyZjFONGxmOVFQQkhQY1d9LHA4SnhpPnk9WzkiKGZ4KyZQajxoJjA2TVpZXUxAPX18RllJZ1t6Pn04aSYjQmdYbzhOSm0xV3tzbnU/OU1YT2Eia3ZjLFJdfDpLWkpzVWl8TmcmY0l9NjZTJVBhJm8wJDU2YGQ3cCxJZCozXj9CW3dNRWNrPVJ9ZUJtcllXelpnKnksaVsza3NUZiZXK1tP'@; put 'KnpRYlU0O1BoNjgwOSxyaVJjfDgvbFhacmpAPyJsPn01fTU+eVchbk57e1Rgfm9heio3dVI5YmJUVyoyUSldTjxDMSFFfGVkQGVMIUlnPGxoeWdwKTxMY0VtdHwpcF9CVERsQmR0aSRaK15kPzsqQUM9W1RzKW4kYSgjWkxeQjI/e28/XzZhMH5HOX5GeGptTSRQIVFvL1JILzZPIk9teUVBc3E7'@; put 'X3JRJmY6YmJlb19WOzdyNHc/dXlCWW89RGEyXixtK2NjPXEibUdtSE9yZVRtZlcpaE0yeltKYkAlM0tPSyZ5bmBaWFRoRDI0OCQlaTV7MFFoVzwvfFFpOUhyZkhQZGJRJiQoV1tKI0NkdE18WTNkQiNXWSxrR1Jta1lvYEk9QWZheU12NlthRStueH4qJFd7Inh3VlMhXWhrJkRlYm0xRjY9fkhn'@; put 'RiRne0cqIUNEZlRkdjpWRCZUbkkucG1Ga0VMem1IWUtFVXAlIyh2fEtiM0N7MG59d2YqdCZ3XVROOSZXNWxXR0tidXNyRG83SC58bXJIYUg0Yy9lbUsmSWFTNTEvNCFpOW81b1t4azY6eipNe3RKYDhGenx5JGxyKl1ZMjdOKzFGZ2VrfT1ae1tpbk97MGs6SEs5M1Z7Um5QcVViUUdkc3R+cXhX'@; put 'VDNhXlV6Im9DSHVKVzQ+T3doTWZuZzU7VDk1Uzdmc3IwVVdOZnhveSRgeG88M0JMJklIYzQ/VzYvT1Ikb3NvRkMzbislcTEjX04uZU19NWt7LGNIJjhJW1V6JixjUW87QWZ1OyEwbSE2QTApZ3FXJT5yc35TWFJHWFFiVSEzezJ6PCVyVGJ6KjR8Tk9pKk1CSVBuXWFIN09HaVAxLDJJNEwxWUxo'@; put 'Z2AsMzV9fGBkbjhha3p5YFJIMyIuTWB9Uit+JU4uRVc2PzAuMGJKLlspczJQVnhpJk92fnBvNUE/QkphekRmbm5wfUhqa21EVztGUFFQOVJDP0tlNH5tSDZMbypucVs/KDxxeGo2RFo8KzMqT1NDKkt+bj5GbVBaYk4we0IkQWo2eFlXSFRpPXpRa3hic1A2XkFsTVBKUz5YSkhDOnNDcSFVNmRe'@; put 'JnBgK28scnhDTC5VZk4+filLNz55Xndyd09QbHReSEwyZTxITWA/dixQX1traD1SQFooNClMTjQuLnhIQnZIIVY5d0YxbHsrODRFXmMvX3BCL3Q/WyJpfW44aDJ7bHZtMyYrTHM8JVc/K3BxcEEhe0AoMzomO11mIjglVzwlXzVASGNXKiwyOzo7VyNabyxKak03PSs/b085ZX04O3VXUDh5KTh6'@; put 'aT8mTVRNNVNPYUlVJjF5PjdFTHExNGpIc09mTl5UYS9QMHVEd19JUFtvaiwsY1tmV0QwZlJWQzpgIyZ7WShrblNmaHM7K1R1TCg+O1ZxJDFbKHQuOTlYVnwkcTVmR249YXVKZiNFVEB3KVgyUlZWeGhoQDJQKn1WZGZeQlE0Yl9dIiFNNSF1SX5pd19VRS5sODNjQWIvaEYqN1VHMSF1SWhCXS9Y'@; put 'U3ZTd0BoIVhoczFLXVJGJH5wIX5dJjp3ckxFfWhOcmA5IShaWSglezV3fnc1fCZIdWN4L1srXkQ6KCxNVGxZKWRnY0JMbE5MViNCWlY4RE5iPXY7cUU/Skd5fCo2azNObEdVc1I9RTBOPk5ROz9OJiRDYG9mcTphTVhIQ3Ereio3R3ttaV90K0NhMyMiSlhWbDlNaSFCaj40KnhidG43UH5HKkZf'@; put 'fUFYeCUuJG9jeCZ4K2VOeGZdQ01sSldXaG16STU8X3MybTlKYFJkXTg/T3NkUWlDPV1kR2BfVkdyU1V1Kns4LnJwW3NnJmFLQHhaUzw6RkF2ajJvbH5mJG1gRF5jM2ZGWHpUdVhyXX5DSExVXykxNHY1OXpAMWtuR1BsXUgzd2FycTQwKEtmc0NRIkVrRTBqUlBbMm4wMEtJX2RmSkBqIVZ3RDB6'@; put 'MnAuSD4/a35JeEZubFQkVXo4QTooZCp6US9WbkgoVms/VTpJQ0Z2LEhYcXZpUGxYbTpoUFp0VkZIRy9QcExAMC4rMmtxZiFxOSVYeDJLQjgvfjlQdiE9MWUqTWdiQHI0THZ5STNYMFFOYHdgUW5zRVVGKTVNPVptYEQyJCFuXTlRVnMrUnNuPCt1dWpdM0o9NUtBdlglMS9zdX0zQSM3OWAjVG9p'@; put 'QCpeUjsySVJDVjlSWyYxJGJVZmhFeng/Qmx7Y0d0cElnU3lnV3V7S2l2c0QsXm8kYHUoWjtvITM8NHJFbyNycUpyQHddYE4ueCY7cT4rJGwiTTpPUiJQO2kkRH5qZlZUUEAldzYxc09BLilSO0YyTz1edkNxQipTZy9nSF9eaSN2UlQ2T1IrYipOXVtxXXg9XkQ2IUBzRl9CPTx0fXxWVSskeU1R'@; put 'JjJdb1N1XlosXnZ3JG9WfiV5UTEhc2pzMSVEVWtmelI8eW1CdEY+UTxaPkJuPnpkKzNdfW45WTNUcFkrOWc/R11qaXpiTDszRDcmLFdoSFsoVmZaKVVgbks3UipUTlk1aSVWSDpLTUY/cVhVRlQiQV1dYn1HIylSX3hbRypfUj5iX35RdVBiSyR8KzdVZTU2Zm44Zn00TWBlYE03Yj8/TitsLz5z'@; put 'IlRub2EzVVtXV3xWO1RgM05xSyFpLChCNVY5en0/PVMmRTJiO0kqcig+KkIiWnVEKjpxRVt7WEAqVVhoX1lBLzcrfjEqXjc7JTlCREhbME50R19Db1pWUmVzP241RU1HY2l5T0d9I0lYeUVIXURneGlRRDRTU1k7ak5EVmE1Qj49Mnd+JGU8e2NaeHRYOE5GYnEwdkFONyp2OWdhdStlR3Z3Qnkk'@; put 'XlB0diF3ISpodCgpMlVtNkVJajYre0RsVz9IKHJjNTE5OGNiek1FS0d+bUJbPXUvYyM9fXRaXmE0Tl1mTi9GQ3VlfW9WSW1mXUVJITlGQVo/S10zPURrdGBiM25WPiNbXnozSDhleFtXbUouT1UkeX1LQWlkcyJDcXs+NmBrUyl+YTEkWHw4SkV6UWUuamFqJmBiPSo5Rzo4d3k6QVF+Iy5JNTt7'@; put 'WSI+fGBnNTNGcVhTXXtYbVJJW0x+In56em1pZUF9YTFAY1gmPVZsPX5ZOlRwUDVVLzA+I30wPSIkZ0gzJiJfPyE0fGpRaG1aJGo0KFQxIU5oKXZvWEFGeisiNVpJWmJjclpYN1ladG5rXyNMPGVFe1IqNHF1PmJCUy5AXmBIbjJjbzxpTC8sYihjIy5vcjM6RTk5Ljs/ZHZzaUdtXnF9ZXd3T3BA'@; put 'P05jR1Aqck9fWXwoWUEjZU9CaFJGTWwwQEZPfkdORHExY2JVc0xXfjQ/XyY/NTQ8djIzNDtWYyRkWEFdSkQkflkuI1hZdmMjc1JvKSVIdXVTcFswPG59WlA8RT90LHFTRGhGeTRsTXFwUHghLHIjSC9tRFY/ejVocEVmMD1wV1RZSDsjWDNZO01ORXJbSjFle05ZQFV9KHFZNjIpUF0wdG0qaXAl'@; put 'XU10di5dNyVEYVR6eCUqZmBzS3lQa2xKJkVFOSg1cURVOjcsYltpfCY0UDpSN0UrRk0wS0hrUzcxP1JBPTc6PHI+X0FYbTRFeHVQYz82ZHlScUs+bio3M2x0QjAlWTFoSCo4RHVjfTM6OVAkZEE+eEpNelBjWHZQZENWNFEiLGZAbDN3bU51PF82WWlOUUJiVFdzZndaWE9YaFhiY29mTTkrPDVr'@; put 'dzJpRU4/TzlhKCV1cFdwWDFjSmkxX1VRNnNiQlJFNDByYzMvVig+NlJwLF4+fGQ5R3FoMFU2OXRdVD82VlsyISZLem13SDdfNVljanl8IlI0QXcwR11ZL0dQVEx9YkouM3wrfUpYMDJNZUBQemxCWjQ2Smc8KDo3QiklPlk+RkNRVjBYenE9eXQrODNIM1R5OUZ4O3I8aT5tVnFsTFArYFAqcS8q'@; put 'OjE7R0YrTUNmW1I8PnBKJGREXll5S3I7NmMsNUpWRHNnJCV0XkM0OCFwVFlJdWgsUTptT24/S0p6PVR1UnNDI0tTPFYyJHVFK3IzJFJASktMJFQqMV9MSm51Z2oyenxFO3dtLyw7Mixacy5gXXljPWd1dTlNS0BHOnBUS24ycX06a0pYZGh+Jn0xO0dONmZLdWw/cFU+OTJPfCo8NWhzenY9dUc2'@; put 'M1JOVnpMb11VY2VrKyZ2T0goaksra3VCJih1X088YEA2eEcsS04qKXUlZEYlU0ZoY2dlWi9wLnNrcz1VcDh9dWI1NVB4MnkkKzAoX15lIXNteEoydXV9OGtSWDldTC9VN25nOEhUXU4iLFUmPTZHNVBQWVUwJE0hVnV1PVhmYmhNWywhbXFsWD9DeFhYWzNbNiFbRkteOCtOaHE8KlQmPDA/bHl9'@; put 'b34zT24+RFI5YHMyUzRGVE1MZEIobVpLVyF2QzZ4aDJMUHU/Sk1bRiNlTz55QEdRaG9tQ3RrfDtSIkFjbjJSOEAve2orK1d1W2llSUIia3FzQXwpakQvUTkoUnQvNCFIL3MzMlJ4cV5LaksmTlRoQjN9LCFGMSVZTD5IZk56UUMqK3N1Xy5vaVVGKT00QE57TThVRDF6Wy4iWFEoUmIoYHRHaFRw'@; put 'RGMqVTB5Ryg1Tn1VQWJHV2Z4NHl5K2VveSYqdXw2RV4hTzNQRFU/IW1baHdVRndINlglaj0uN1RQY35SJS9kR01iYzY6NiFnPCs0bSJhLitdbzl4VElhLlkwPGJXfVM6ZE9uT0F+SS85WThXcFhwVCNFWjF9YHxTRDZyaDIpUjAqWnVLNFVUfjZpTllsMEhicz9MOGQ+aWYkJm9lOl4rI2ZVI0A7'@; put 'QldrMi84RyFCdCxufjpUfGcqekYuYCo6VFFsQyF9cXEjIm0sI0o5Ym1bb3tgeXtbPFtRJk9zWDkyXXNMX3tpRHQrfGp5SDJ0aShQYEZQQH4ucGxQU24sJXNvJGJtYjBiRG94aiRHe0djT2o/QTtKJVBmVlZlTT5IUF5hITVMfX16KEklezAjQGU8Zns6MkUvSjojWy5MVUwzPVNeTEM9fFRLRXd9'@; put 'MCwpYndCZj0uVDVLZmBnL0QwSnFIPSg/WFl5SmgoTkAxfm84aU08ajZYXnAkTG1Lb0AyMCkmJTcvTlNYLiU3PnlIITolXjAkZ21TSnsyWzErSlt6bENeQmBsfDV+UGVLPyh5QzRQdnNRdGxUSkprImVOeTQkZ00/OXpefH4lQX0kaSZbJWlPRDRkazU5WSY7LihIeWhNYV03Wkg2TUBIQyV3JilW'@; put 'dSY6dFtPekgoNXBgenBfbXsjQlhhQlRRXzZSTHU2MyV5XVE2LFkrPWgiKGYwQCFFXTd6dG10Vz8kWSNlSSVYJShdOmRgQURvSmpHVHMkfVhWMGJWRF0vdG0vZXRaPj1eYnVTMjBXK1pDeVlDSjhhUDdNWHhJLGFXRDo4QmJqOnYob1osL2lkR0lraDVmeXJoXVBKSilOZCZ8dlU6Ujtoa3dhSUQ4'@; put 'NnNEM0hpYF15ZjA9TmQrSllAJFZbM0J8dyVMTCNzLFFYVTNAK0tNKmZEITQsIkgxVj9NcCJgOiZHNlI9KTZZdkZpUFZtbHdSSVdWdGJsbitRKG5TIThzKHdeXlpyfiU6bHZ8ZEF2aiNSXT88K3crIypiclJMT1Z2cn09cGdXLnoyWipeRk9JU1QwYjlYUTRGd0FhMmhuc2ZJRjgsNkl9LlVCNj5M'@; put 'ZF5IM2xNcVZjPS8oRihCb0ZNOl9QKWRtJlhVUD1EMERxeTU8LD88SSNdakgzZWM6RzQsSGopYj1UKU9tUnppdTFRaEZoelZKTFUxTD9aXmNJc2UqcE9HZGFLKVJDK1s5MGo1JEE6WCEkRSljKzQ0fD5aPTw1IUJQKXcoWFVPUSk/S0N6bmVhOz1rek1dNztpNnxiY1UjIyZQbyM8cSxHTmhYYm54'@; put 'LDNMeHlxPC5oUkg/ampSckR7cTdFcGAwOjtsaWR8Qkc4X3pIXVdUPiNfSUt8KT41YEV+QHkyZzkzWUh+Jm9+e1pkUjt+QUJ+Xk1oIzA7PTdENUk5UiEsQngwT3I3YSZQPmJVNj1EWkBsMk5vPWYyJVBgJl45TDFnP2swSUozbmNuODFtIi5Heih7LmQpKH0zbHM0MlNhMkJqJmIobTkscjhhIWlr'@; put 'TGNSbS5kfX4lVUMvekswT1Z3KGNdNlgsNltJKDRaaTx5YCheU3xfLzU6REl5TE9iRy8qIWM3RGJ6XjMlX3B8TSVoY09AIVM0IWtVMmkqMEUlbkxQOz0seUIpYUJyYStlXltMYFkpUk0sKW90UEZTL2dGQDBidEV4emxAdjdHZjQkMGUhJCR5U2pzNnRhZCVLTXFzI0p1R3YvT3AkVFMkNCZGd0tL'@; put 'M1tJTyUlLE1mMztzKFMwQHZlbHJOYkJAcCxHP2MjW2M6Wn09eH1XeSZoVj1JJT5SeDNKLyEpXzo5aD48SCpLJlBudEV5d1cwVl5RTXl3KClWP2F7PWQxc115RV5sJG4uVFV1Z15OPksxMF8/XkkpOF15RU1bc0osc1FELDg/YFo5Iz90cnpzR31NWTNOO2IhfjpoMH0oPU4mcHcpKEdtXnNyYnR0'@; put 'OEFxUjEjKllDNDFzdHxaTkJVSEUvaHd4K3lrKnJZR0NWUU08MCN0UGZDUUZ7RzdEeShQSHQyaFp9XXd4c2s3fSMvUj9yJHJgRn1qdiNvP1didVhpfiZzY01+aG93bEcsRVI0JDR5dzFwXkZXPUF6XkpWVkpudFtYTFYiSUxfQGZjJmdQUkgvajx6a1VsQUgxbGpKOjRmXl5XYz1xQmU3QSFCYjUs'@; put 'YkwkXSFMYTQwOkwsdnFsfEArOEdKPToxXzB+cDtHIjF4OTJ7MDpAYis7TCQ2QGJyd2ozYzJXLy9dQnwvPksyYS4jbGBWIX0hJDNXLFY4SlFGYltGPElULnxKfnNXUWRpeDhWL1VabFdaOj9yNHBOOj5kKjZ1OHppUk0oL0grIW4xa3E3OzVNInhdXkNraT9iTk9yNTxaY3RSWVpCWnNPK2NSLGZ7'@; put 'UVFaSSk8aml4IU1Rd0pSbkF1SCUzZTlOTSFMOS8oayg3dCwlVTguYFBveGRBKkc1bGs1SV5Pc3NHayQuRjsjTW5jOkszdVRHPTdGY0N9IzY3aiw0THN8fj9MV2VTUFptfTRoYntCNU5bWldUfCppdG93W3IvLlh0ZU4yKXRIZC49TEAlYWJbYVkpMzx7UDVDI1tVI3xNOGNKM2dJSF4lZVQoeiNF'@; put 'b14vcFVTLzdEOGx+RXAmTXRrNjVnYmNyYG81UDd1akdKRzNwSkZhPnM3NEg3ciJGZj1nQGUyLCZRdlQqKVhTKC5+UjJzIVFQPyZFQClmWkorIUovVnVeUmgiZmh3VSxdXnQvSThHSlROYyFJU1dpYjM7PlBUUzt6Vi4qO2hiRyUuclcsL1RrZHhdJnQ+P31NOmd8NigsbEQycz43O1BMLyVhflYv'@; put 'VmovQClJY19Jd0RCVzFjIlNNMHdDOntGWyl2clFiSFJuIlphOjNIXlRMRDNyMEtMKTJvJUJpWHBaWS8xSE9VczQpOSI0eXxRd1U2eDN4NnA5eWRGWj5hQGFGSCRUMitOdktwUnFqPHclKy41K2dRRD03ISJDS1lCZig2eTFYOjcpZG4lIVBrbkVUVCswW0BjNE4vP1ByIzxjK3F6TG5EQF1zQkZp'@; put 'My8hJCVEY09+cEJGZjFEODM4UW9NUz9kNj8qOzsjfWwwdi9TaVpHWVVxWD9VMzBIRm4zUCNqSGdEXkVzcEJ5YTB0N3Zdcm91UVNffEAoS0dLIXx3fl9fOWBCNFJjRit3dWdhIkBWOldaaysiZHhrWDAqUmJ3cVswaV9UL3YuL0QmVm9TeysxMC5vWVRnKWRWaiZTTDc7anB0RHlGUSQ2M0YuXjJq'@; put 'TUxiO09+OTZgcig/JTVhTDc/ZjU1KllWWn0jfF0pLCNlOTU9Pk9LTj4pWE03d1lQdT0/bihDWk1xa2FhV2tdQ1VhLCx5dHclPVYyTnxxd2crWGBoYX0+M2ZFTzZlcWIvOX1KUVNLTHtzLm8hOnx3K2JKWVQhUyNfOyNHMGJgaEgyY25vYi4kQ3NedU1taUMoW2AoZzxyK2psOUpJN35+cGBrJVcm'@; put 'Z3xEZixfPXAsd2laJjw7WTpZPmRpT0VYZj9Ma10/UVQhajgscEVXaFBMc05HakV7fCIvUiR6bipTUSVMO1dtIz48UiNYOD99XWMwfDlfYytfV2Z2X3NzVmtUPyYicWcpTjJDU0AkTE8mb1pveCQrTiU4bCllcGJZK0dWM3c/c05faCRNM21eNSRXLjhUNyhKQzM1VCZ7X0BEOXhXdEJ+fj9RKnpr'@; put 'SUxqI0RoUXhdXnk1PDJKNmdVQGp5ajN+cUszUT95Ly5yJFM/NERPRmpJWV8zLDg+dWN3Yi5ufjEyeGk2S04+MWhNelgmTTBEKns4ITQoISgjeFRScXU7OEVeTHImTGRmKzl8aTdIKzhpLGVvNCJFYXhrISQxJjw4U3cqWG06IWIjPSNgUmFqcDh6bUNedVdIXz0sP2NEPk4uSElxMjF1ZmQhMlJN'@; put 'emYmfUszSE5FNlJmPDhkUXAjZX1uSjdMTGpQTUQhdl0pdnNTa0hFSnlaYj46JUlvSCtFOH06cmx+YmQyTWRPQyh9JXltdi5BRS85ZEQwVFlvO1Q7W119NVdFRCZQcChZbHAoU2twImFwfktuOUMvQyQkX1ViXTtXMmdDbiQ+Il5IVGc/IUFXbmxreyxSM0VtKltgNk57VkEhIW5dKCN4LEN3KWtC'@; put 'WCJufiM/Ziw6ezomfnw0QztkZUdlNjZsaDEyMSpeUmJxVTgsNjwpcGNSSFhudW8xYlZke04zZUpLPVg0JWIjejtsM3tMSltQMUZ9Ol5aV0JzfDMyRDkrOTRnQnFiaCkvVD8/RHJndDEuS25fKnt6PkJxaGksQkkmYSxRIjBmb1AuMClTb3BjRHg/K2k1YCQyaXhAMDVIcFJGSlBKNnBvcW1zdT1z'@; put 'Q11bW0tYOkMzPSVOVn1ucHUqe2VXPmNaLnViMVNpTiYue15DR098ZF5rZ1paR2wyLyojMV5SSkg2aTNPSlYsU09wMnQ4NmkyUHEhNko2fGxjfUUvTzBIUzg4T0hLVD85QyJfaTAkXUplXVdDRlEieHd4OmgvSTB6X1tmJHVadV9BL3NNPDArSFU9UFUpMVloc0Y6fjxIRFtgWD1+dSM4PXBlIWNl'@; put 'TlhUT2FjOFZLKGJ+UihTZ3VvPHQwfFYqUixbOUI6Yj9uK2gvY1IhLkcudy59P25yWy9MPV1Xd1okWixSfD1aWik/c0YpYlFEN2hkYVsra2Z3T2ElR2hHKz09X3FxMkVoQ0RHIlkiZGRCZmk+V0QyfDdxQzd3cnpXdVI3ZzpESnhXajB1PChhXn5bXyxvPlpCIXJDNDN7PloibEtMfC9oMFVPISxV'@; put 'Y2ZCamJUTyxCZnpWREh0UjdBc182OFUib3gwcn1YLzNnck5GVkhvYzg0LE5ZIS49PiluY3kyYDV1YW1GciUsfXRJa1Q0QyR7Z3lhdzpHa2BrcF9DNzp7ezJ9UjtldjM1eilfWkw5RnlxcGAvdmVzfHdqTzF6SldERHl+YSomOWV+SzR5XjpOeSxRZlpaQklXW2VMNjhdMU4hdE0lS3RePCkuUzpS'@; put 'XlM8VGxSVDo3ezxxdT9NPklSJWIzO1c8UzJFPTc4d29NdE0+OD8iKlMoZmFlLCMqRlRqQ3dgUVgwcXVaNGA/MkB5b1ZxaylNO2JzWmtmPHlufnMpd21HbVYsTj5SMjciaVVVTE8lYFg4QnojOnsxM0U5c0NHSTljUTJDbmJrSDIpQGN1e2prd0k2SFt6MFYka1suQUptNCQkS01+ck88biJ5OH5t'@; put 'PmYxWEM1NkBZNTNVTjs6UFFeInw1WFNPUUFhQ0ZdNFh0WWUmITs1TV55YClGQn5xS01FbEFvcUlMYVdQck5qekdKW3JAdX5hLF4qXj08blFJXURwJC9qJEJ0QGI1ME00JTtgYGVNQC5bcU4yM1txO2gsQTA8eTVVQEhKYCl1ZyFhcEVSU0pyfH16TkE4VDRbZFB3U3tJRW8kRHF7VXZUfC8zeDF8'@; put 'WGFDPXZDfkttcE5zcFRQSyNpTFdWeHg7QyQ5QUVERG9wXylDZkpSPEJwSDhRO3g4ekxLPkc7NnMiTW4hSVQvbW8zLHs+cWlEMllYV2kidStDMEQwXztbLCJ1ISVIUiYxLzx8JlRnNDJ4XTg8a3kiZFc5JiRiPm1YTSw6Tk86JUEqZERmVC5BSyxZb2NJUSs7RlYwN2lxU2QpWkdOYiFXPndEMjtV'@; put 'bkFPTyxFbE4zZ2BpTUp4P19uT2AsO1R4YXZ8PTtIbylJNDJCMD1JbmRXelp+SDJ8Jj9rfFUjaiwxeVBAVG55cnZMdkJ6ckoqPFFGMUJPOnFqTWJCJndNIXRWLkd7UlB7RU1mTjR3fGV5cCYxYUQkNGpfTSxZW1lwOnVCd15KcUBFOX1iIX1ybiZlSGVUbSkkI3M9LHdVQ1VpLDROaSFUfW82Z2o7'@; put 'Tld3XylveDh7dyZHKDQ8MnVzd3t6blNBNmpLP0plZlM/Wmw0P3IweSZqKDl2U1NgKzJvWVZ4ciJFaH1zNW9Ge2ZwOV80MWMldChKPUIyNGpmPjJBeSl6KX1nV2g0OjIqeG5VbFJtM2NST21PNVVKOWt9T09eNGRBUlolZmE7a2NzTkUvOVNoQnwiN1NENkFJKz0iLjU6cyN6UWEjUWgqKz8sQF5d'@; put 'flNLK3g4bm5COHdVfXRiIXMye3BCU35RdDpLVjx3Znh+alFtSHVucUBLYHwlfCRjZyJ0dyo4UWBJfX08UnJJdSwvRmE2XXxia1s8WlMhWjw6SEBBfSQkRFlZZyo7fmZIM0xNeDg9XWNRRTFxOERRWyhORkpsVFdZY2pQUnx+TnErcGZKPGohQGozKENWMkl+NUpPSTl0am8uVkp3czVaTlhQOVdg'@; put 'NWxgIipSKU01Sz9XfHtRTVBbKlBDK2hackxaODJ7LEchfjA5Tnx5dytgJD5WRl8xdzZHRkkvR0YqR1Q1cSIidmg1L0EqdjUlXnlZJFUxbz5RZVVnOX07NkB2SFozNU4zISl1KVlzOXtJeEduZ2d3Ik0wRG82c2BsWnVSQXh2Xn14JGVUOHBuQXt2b3Zdd3RyWGAwLH5DOFVvcTxiZDNVdXtxUHxL'@; put 'Z3ArMXdSZlN6fWAjLilEPF9UfjtVKU1xeSZOWyM/byF5RyRJKmZlQD5XbD1xZGNOLGZBdzY6bm9nV09YOjhAZnt2MWxnW2QlaD1oPTt9bH58ZC5vZk8mZT5FYUh0Nmk9YkZ+RE91PS4wUDNqYHxZKHU0XS50YG99aUhHZ2pgZnldbHBVVWZRWWVQVitPPnssQmUmKVNfMGFZTlZCPFtpNXV1JUQj'@; put 'T0xROz92VSJwfUN0KnpLL3c/cWFRPHJTel8pZC5GeSJ9PD9LWlkjaiFLRClYezJ8XVJvYGs+OkpgVDFebVNAdVBJWDcocjR4VkQxPCUuKGx6TC40bGc6OXB7PnYxeEw7SUhYeEldUis0WzZCfldJKGNTfX05PEo8Wix7TWxbZS5WM2ZYTTd7T30xTERxQDc+Y2NiY0J8YVI8dF4/Lmx7fVtMVzdm'@; put 'PXNHTiZ6UWRfKTlBaCM+aXIpWXVxQEJkQThtJmIzXzgkMjw3fE1pP2tQT2xyXlNkJXFYOFo7I0JsaXRNTXJHbUp7VHhPYzhRIXVZPUREdzNIK3hZbCE4WWtWRWgsc3A0WmlJLGduJHNlMiZ0UWEod01+SV9lSEYwayNiMyM/UEV+WXZTRUlGfTdXZCVtQ2pqU29vcTxxRzheMTIudnYiPnhPdnov'@; put 'VC9VOlcmRlZHP2EuOmJPLCJhbSIvfF9eWVNgaUpCU3lkY2BKKFE6blRBRGY7U0RdZFo0YjxDODZhfX5RKlpzXXw/cileMTUvZHxGMlluLGdsdSgqJkBNQzVtakl9UzVdUzwyQWI6fHI/PWU3RHVMMn52Um1ZJT9kWHhIalcsI1VsN0hKbV5zcFlHR0BFMT1MfCIlQ0RVS0ZUOiNQajRHQDlmMy88'@; put 'KkZOeT8+T2J7JCZdWFsjYWhQNGU8KC8kWkI5KFlMZTNkbHIzcDVEPzU7XmIhfC52QmRESEVFRHRPNSklIiNKS3txPn5hLFphTUg4WztdP2ddfXVgMG5uMHpTLEExWGB0NXk2flI8ZnxISUhIOGFUMiUqM0M/ZlAyfUhCbCIzZFpFRSlkK117LkJYOy45d01nTSRBOVEvPVVxJXVxUDBLST9DYjZv'@; put 'N1Y4Vyg0SW0kalg0azlOTDtSI2xTLmtsWTNpZDQzXSl6Qz0vKVgxJFU1Tnx9aWNUflMqJks5OUl6TXgvaGVpSndBPSgsR2EmSyZSbGNDSU1wX1pSaUpBJWRnXWtnZXZ6OypaN1cuM2txKW9jVCk0NVVmRWBOYEdLb3NgXWxlYUk7Wjg/TWY8dT0wOnhtQ2plNDldYFR6XStHXVo+THgzWGBdfloq'@; put 'cWxnRWBOWGtsTmBbQVRyaXFAXTgyKSg2aENTJHgxaXc9RiQ5Ui5EI3JeUUsoclZLNT9mIlFgazQ6Kj9SJShkMFdmOXUhW3QvfUN9NCJLcWh5WkslbjQzJUZxODlucyRPY215dSNIUmxhJkJqRUVQZltFMSl2VHNxPG5RKVRJInZYb3VaQkhpXUcyZWVHQWxQI3MzKGZrRyZMI3hHWiREdmRTeS9L'@; put 'cnlWNyxUT2UuNEskIyRmdm1UQzEkZWZibmhpekZfbnVyRSElc2k1Z1AvbGd6ezpAd3xbeXtHR1U2cj4kZ3QzaT9DOlJDM2opL1QzI3whOnxvL29AUF48OHR7Zk87K0xSK0RKWCFUbE5dPHAlPkR9ey86aU4rIUJOcDNVYEZqa3IkVlVQYUB7WCkxSVokJD15SFVkdCUvd29wKEw+M0pXRCkjR11K'@; put 'PTJiND5jUk46Tl1LfjRVdTcmS0JGOmV9d0JII2xZMH5QQ3RJQmYlYG4wYURDWHRMTkN0a1EybFNHTldEcUd3Lj9WaFNNZXlII2owQio3cnR2KmdeWmEmOi9zIkVYaEFiTWBNX2EwRGxZenZJcGRRTylrMVdTXXhAfUR4KGY+VzN0VXFPfDp5V2hlan1bTGMqI2JJJnRWeCk5aV97YTc6MHt5Njd8'@; put 'eykhN2QoPzRnV2FaVSYrITE9RSkuc2liNGcyKi9DQ0pXd3IvJU0qdkJiS35nYi5ZeUhaKmIjUktdYzkmYE8hIjlPYnhQPXdxUUQ8LHw5fHp1I0leWDldN1Y+RkZvWzBHWFtuKEdBI1ZjU2B4OSNPQHFZNT1TRGlLfGk1UjlUJU40RSU0d2c3UTkvTnV4KTNxVHE3WDh0N3F4RVNkekdDVVd5WCkp'@; put 'fnZGallGPWttQnp2dWEkRFdHUEVfYi9EaTl6YT0uJXRyOWNZekM5IVJ8X1piUWNiU289d2dtUng/TTFzMChOWXFHe1tidyVNaHppPzQ+SGQ3OV1rfHtiWE9xN10saHV9dS5IMXszbUI5a1U9WHMwXXIweXMwZ3YsMzVYaktzOThMe2l2SjBNPUF1dCZOWHdzczp9Pnw5fTJtciYjJW1tfDMoWFsx'@; put 'cSJtaFhHSEx+S2NvbmI8Rk11Lyg2bmR3QylTUE5WRSVJN2FQOFhJclhvSSF+I3BjamQ+aWZTc2ZXbGJRSWtjM3ExdD1qa0JbMX4+RWE1dWckUH4wUytuTEthem0vaHJxdVgoMSV9P2E1cnh4RjUoTURUbW9OIjJtUnZ1cVYlYUNqbDR8IX5Eb0RsQ090KEk1KHIpYztSKGs0S1Qxa1BZK2g6TTR9'@; put 'ZVpnZi8wPClqVyMjdkxENkkrJjU2KDhYcyZZQCFNbT1oSEBgUkQjU1BCbEpDcSYlYTV4YX45KFZNeHxla2ZhMDJwJFAoI0IzLkc8ampLcG1OcVsua3w2OiFhTT9Yck9uTWtGU0coYTladyhvQEhCSUN1VTdkb3hQfEQ7S1Qob1AzPW1mNi4hRT8oY0dsV2Y0P1kwfmMuWWExa2JabSxPY35tKFEm'@; put 'fVh5ZVlXQFtCUlFPRDlTTCY1ME4jSXBiK1llZDR8Y04zXXQ5MldvUGpadCN4PTtOTG5Weyk7eDhMRVpES0NOZVEhOSNmL19NckV0TmNIVlNiNXFSanVlPCoxZ3YrPEMiVXc+N24zRD5ZZDU8Yz1MOWRFUTFFaF1uT2kpaSg+RSk1KCloeEMwNGJLY1E1PiwwSkshfig4a0ZwUH5vXy9xIk1SUElJ'@; put 'fnZ6KnpXXXIjRElDY3hSVm5+JGErcD1TVGluW0hZVHM9JVp3bDp4Mi8zVEs2SkhJMXZVYklwI0UwN1osPyFYN2w/UWE1fEQ+Xml3Nzs2UWFISzgwaHhIY2YiXWdsbX5eIVN4I1Y7aUNgfCRTZ1dQIV8zP0RkQmBTJU0pRjVNdDldTUpsK347VFsrMTp5cVVeaVEvKy5vaSN3Xn1kZk02Jl1GJGRv'@; put 'QyJWYnsqY08oXXJRIV5yUkhMeDFIOSosfTowaUFXZUwqIlE7dWhiZWdHYzI+emlTQF1Zc2VTZHQ/SkFqe1E0dS49Yy54Z2daVEppNXJtMHJudHVlX3Y4XVgkNXhCQWtbUzFeV21GR20jcT8uUkBuPCVkdFloOSNCdmFkeGIvJWRnemZldGI7fihtfH1QdVokXihmS2JjQ01DRVZ0PV9ESjUmPlMs'@; put 'fTs+eTp1bTljc18hT1dlcl1AWkgiOFg6e31ZVSMre2wjNWhMJk4qfSg8bixiLyZhYHduZ2ImOUVtIVNkaSV2KnNfMTtqV2Q+XS8lZj48QjYlRiQ1fmRTKkYsZX1PdUw6RFtSUGgrV1REcipALEJ6WF9SP1cldzFQcmhvYSppT3YkPjVIZF42P3Q7UFJBZjR+Kj1kcHJ2Q2JDUj1deU94UXI3IlN3'@; put 'VCl+M34kS2tbPDR0X2R8dj9wZmtXSChVP0t4cCt0e2kkVTpZMH5nVjh9RlJHdVltY0FVL3pNIl8wS3t1fVtyQ2lDZiMvPG97YmhqOyE6PENkaF1UWEUjR0Q8JT9nM0ludy9uWTZNWT4mK2FzKUxTY2ViS09ZTHhEYnhgU01+I3gmfFZdPkU3LEhPd2Apc2JmWkROKFouZDxPJG1FanRSTkdFbGBk'@; put 'aC9dLllna3E7VkglW0MqJG1LI1I0MkFjYVdmNnRvNDljQ15aKE5VOi54TWkzXnRtOW1NOHd4PzREPltWP0o1QCs3Wyx5X0kpYDlaYThhSikoJVYvWGVWaj82W08pMmF6RFsleGBBKmJIVWhOJVduOHlmMExsRF1SbHQ4aFd2QWtBWF86WF9CfiE1XjRucXY2PlRGUzxNRnhDMyNTdDpxayFPKF5a'@; put 'VTwzekd1dz1PL3p6ZEZwUGw2Kyp5W0ZPdGNvT0dqXXpufGVnSlRHSXsoWCRTODpiRkdhfTswVlckO01UMjNKQF53cl4wdGdMZzdTR1leJj9uQj9gUjpkV2MpNl9sLGBOTWx7a1cxd108RHJDZVVPKjteSWxsPlAoWjwuMGNbLH42K2ZvO24vRyY7Qy9VdmV7REg/WE5IOiEoXzZtQVdRRVk2WiEu'@; put 'N2RzKGo9bSxzRXRKIWc2R05XK2ZbXl52OiJZNDolITovNnE8RGk0S1o6ZF92YSFqczJ3MkVhMFZfUGQ7Z0ldNVQ6IjlMXnlhSUIxY3BhVmh1ImV8dDAxXWpiajpYb3g+cGE1UGVBTUNEdDlBfmRbZn5SJGh9OCQrKTk0S0J1S2ZIbyovLDJXTCRuPSNmbT1zUWRjJmNOPkIqeUwsZCpNdmczdDxV'@; put 'dlBWKnAvb3VITTZ6LCRURDs5MHxjU3oxWGAqaEBKLzR8X1l4bFMoKGN0ZU0qNnxfZXV0NTJQTVkvWz4kfkdtdHg/Y3hrek57KkBofD5rMyN3S0pQfmZRdXBqLCtpKGE1eE1mbVouYyZ6I1pKb2tea18xPEYwUVBlYVc8IVBpYzVzLmQlUXIlO0hEME1OWigvLDtLQj9YYlZSaUN4IUlEPT5ZRXZu'@; put 'YV47Wl5SakgwT1tbP0ZDaiJXQiNwRXFBQVdadXdfQkshOjRgaG9NQjtSbDFFNHQsNUZ8fUpJbHlsdVAhW0I7V1ozdzJsZlF2bk9LRnpxLmE9OGckMkZkYUR4eEIkbDg2Vm9lLH1aOURCbkxQL1FhYFhRK0BuK2NRQ2FEYHFxRG9VdHUhfWYjeXZnfj9uLjMvOl1mQj49fncqaG8pYitMRXNicTUj'@; put 'Vls/cmgwezs/YnkoaXV9dFc0bHJaPG4jbyNsT3U7U1RbYDFPW0xIWD9kSysrSSw1SldAa3tWalJJaTkwd350fXNyJkcsUFA7Lz5TOSMzQ3ZJJTJUQ352b2o+ZlQ0JDBuUXFrfEl5SGJnPGFXamJMUVdiWyg9cmpPTF1XRlV1cEtXJXF3T11DJnp4Q2RWNiNtdU94enssR3pSSVhGKHcjNzBkWC9e'@; put 'T1o8YXVQTXl7YVlLd05fdEYydzxCV15tV2g0dV1JTyNqL3pCdHghalZke2s9XVMmL1pCej9aYiVnJipCX0N7TUo7Nyh8N1J8JCFAbkpZTnRMe2hzO0BhIUBPbzBvMCI2QE05dV5gIylyaEpHc0NHJCIsQSl6cj4rX2AmX0p2OmklcmdlJiFIMkV9YTMjM05FLFU2XWs3KF46Ky80eDFUdTlvUDhR'@; put 'U3JYUjw5T15rTEtnJVZwJjNvSHdiZ2Y2YEpXeylgXWl6ejhfMz1mLFRET2I5M2A1ai47NjhzV0paPTouPHNNYFRdSVN+RVtDe247fCFAWTVNU2hra2lJZy5ZKTl4aytCRGgjSltrQ2g5SFR0bDNeVis1bF58e0hZZDxRangxMnpyVUViJCFwOEM2ekhiPFlNPzRCaEkpPig1SmpMIzBkckVEOEJ1'@; put 'S0klT3UweTBnbygiS1Y4Tmh3NzdsQUoyayt0MEk/S2FjX1QxJjxnPHI+KTk9QVdTVlAkallaKmsjKUVIeHVbPyJ1W09wSDgvY2M2Y2RbVE5gTmhjUDloelA7cCV2WURgLF4xZTJjWiRHXiM5TWwvMCxNfEt6cHptT0x3MVksWEdsWCxORWpZWGJNb09eUnlocn17enN6dSpFI2VVYDwqSmRTPV06'@; put 'PSJaJShoKjRyXSEoeVo/VzRjLmxuKWNhdD0vXkdGIzN0fm42dXpEOHNWK1ZtYmdtSEsyIWFJZnZOQzdXS2pfYVBmbnpLPzY2Z0o6LDZxXk84XVE9Jk8qVXVLa2BkPjBENjM1XyZHc3BtK2Y8aUg8eURDQTlXPyFgPWY3bC8wfEkkJT5QYmZmNEVTaDBuTj9wZFBAOF02ayYpfERyejJgPmAxOyZT'@; put 'MFYkJV5QPig4dk4mQmExRHZ1VUs0VypQWXU2MXZXUkddQHNQTjRIeHMubFosSEdTbDVUOGdDRihGWVdVVTx+MT1jY0pTXl9PMDI3SU4mQSw4Y1d8MnROYlEmOllJWGg5fnRZZ00odiNJdX5ifiR2NStRZi9KfkA5d3pic15PeD00SDZPKDBBK3RTN0cjZ1Q8S1dbN0ZZa3k4QmxkKC9dbSE5SCkm'@; put 'd2wwKFQzX292TmlDdkpvfj07KzkzT0V1XiMjbkMkTSglYEQ8OFhKZ0tSbCNtXSElUnZnbC9sMGpZZ2I4bmg1LjI6cHwydTdpIyZXPyJKND5uSF1iaylrPClUTXB0dUtgQmwqJnEjW3F1UH5xcUlYcEhEKUdOWm5XaHlhSlZ7PFY8NHJ4YnIrJSQ/dnVUeWZfZCY9TmZ1SEdvMXV5UWRUK0MpMVpj'@; put 'JnUvdys5bj9nZSNSTEtGL3FLIUA7ODVraV5OT1hEZig0PFRiTGtxWE8/YDowNlVLTz5XNFhAIWlMdmJ+akhQeHZ7dihZVSNISzhzMygqNVNFbj9JM1MiOVkpLyYlMWk7I0U9L2AvIzhUfTdTNkNCNStzMF94dnldajtQOzh9R2MoJUlURVIiN1g1VjBOWm0oYERMTHo7Qno/LzB7MSohd04kI3Jb'@; put 'bVRRKXojR3hTenE9Sjw4TT9+bVRmV01OekZfZ21eQGU8ZnVXWVE0bHFuNCJXNkQ7dyRKYDFBJUVbWnBoSV8mPFRbMk47ZyxQPWx2THwlXUNpNltuRypVLy5EPF9sUW5FPFtfUlY3LygsOEJufU5NSkp0OGEjZFpEaF9lbFpmOnk9LCNpelI5YX0/fj9WWnl5Kyh8PkBrNkBDQUkhOGYvKGhiNWt4'@; put 'VClUZVo4KlJmeUphcl9fQzpjY2xJMyYoalheWzVjZjh1IzUoXigmRWxCWHQzKGFTZ0g2OWFGQHs1QiNuNTUsOSE6RDsvYipzbHpIKXZ0In09eDwqPkRNK1grWzwke3hIVDNrZGMrPDQrKGdvUU1IdyQ4TX5IOWtYOVt0Q08lSFZHTFReP2JYVT8qTXk7b3AofmVOYWhmZyVNVHt4ej5rKFNSVGJg'@; put 'M3pHdGpzSjFJdG94flN9VEcufCs7QXtPSyhIfVFyRnR3TXU5ci5BbjtTQUpEcD9JKjg+KzdOZio2QWp0ZltpUDtJNkMheDFuLj1gVVErckxJfk16WjUie15DJmg9MyF6O3J1aVdGWmheb3FJNyUxeG5DaFlyaitOXUVCMnt7V3RNbTZvWHN+PC8rNEUpJXxJM2w4VHB5dCxATV0oNHFhMFB2MWZ4'@; put 'TkEjVDgqUm58R3V2STV8b2pjbkxROEx5XiYmKSxeQ1p6bWNUTTlSSXskNnZLR1hVO1A6WEZBalkxeSFpfVFkY2F4bWI2cGpHeFMrfjpJWXJUSEQveGU6N1I5YUd9Qmd5UD1aaHgzL2x3ZCgpSklrUTIwbjcrLENHZHVeW3VuNV0kWXdUQypoZ3Bbe2krPEE8Q3NYUDE1KUVWYmJjNHZEQ0BtfFhv'@; put 'Mj1+dnVIIiJSQzw4YiNGYHd2UERXKFYuanY0KWwoTGV7W3c4PEVJfjJtOnRfeEBjSStVLlR4IyNyXjl1VDw4Kn5le2lYRm1gdnExaE0yVz9zaEc8amRoVGB+e0hdOl5EbHVXcixQeCZzMlB2ey5GU1J1Xmx+YGBPbVJYaVc/clVaInlMLiwmVXk7OCJxNHRlPE5jPzlbZV14O3Y1SyJRI2NWdjRx'@; put 'UDNsU35eQGRVaTNDNTt1KCZUVXR9c3JvbEhjTFRVLk4rI3FiRH01Nm9CdWd1ISxiTj1XITN6InRHRj1iO0pdXWNTLilSUjVGSnMkOVBIRStuakVrKmlSWkVvTk4oUjl4JTU0QXRQOiw3aV8kMyl7NTJTTGxyTDpxKEVUIiNJdD1+UE1GV0shKVF2TT49IiRRdXpxbEc2S3tOKHFJQyVfIywheSMz'@; put 'OUYyJkYkX1s1MG5jKjk+RmNvVmt2Pko9QkZLIllaI2phTl45Pk5vPDxsJk03STRRcTY0Lz9uRDY7JF5Xfk1gWmJ6JSplWGtaVUg4SHR2bTZsJmFyLjRxUGgkdCNrYCtnVFdlJG9nVEY/eml6UX5tY30jLCUhMU0jbjVuYUpPenh5XnMqe2VVZ217YlF7XWN2KjVQLzJIaWl5MkskUz5rLytuNlVa'@; put 'ZytOaXk/ajFbSFlQImpYZ3drP3QxQiR3KVFaSzMpV0ZNWkpjcHgmUUBnRDtjcWRRWDxWbD10IUNXYHNLWzBRMiR7SXZeVXBqWiYrYVcvKXJQRVBVN19YKixtSUtWMGV+eTJ6Z2l3W3Q9eEM3bUY1bWprMXc3MGd8YWwrR3dhbmlJMFE6RmdMKDYyVyFpdkExJjF8K1BaOltOcm9aaDR6bV8hTERB'@; put 'STM8ZlVKPzZvUUM1e21kNmojSjUqJVRhOHhZeitNVldjUj58Vzc7UkRiPDo9Q0lmW3VEe2BVJWQzQGtzXjsjdjFAdmp3eXFnfmhEeH1iKXp1WkB9LCwiIWFhZVFqelAqT3pfNW4odmdUYUFBOi8uUEQpMzQlQDp2KnBfIVs2blIhPHc5dGkrXlQyMDVjRSNONiJRSWA9VGpnUW5CKHhJRWFmX1ho'@; put 'PTR1d2oiZypvYDJIZW0vWWhFbD4wKldKOHQvWFpVVUk5K3Q/V1Qrc15ZW04zI1ltZHBle1EuWnFlV2lkMXNJeT9+TWFnS1BeI3wlRW57filXN3RsJEQiRj0sRGgxe1t9OS44QTA2c2BMIzVgMkt3OF1DQzo+UmR0K0NyYzB6NnBpLjA2JE0+N0c4eGVyNnFYW2xnOmMjWk9udWo3N18+fmRkNjZm'@; put 'VCNSZyU+Snw4aiRZZ1MvKkU+KkhIPClRfDthdVN7eTpKP0tVOXBPNCIlTHhkQXYmemRnUjJbXkU7PFJFLzgqfih0KW9LUFBxfkQzXjNIMTAvNUI5fEwjQmdrdm5GL2dQRXZLfUV8MSleTyViMj1SfFJuSixJUz5GRWhlbDFxXj1SWEtRMHQoYDMmVTtJZ3FTaVVJeVJ7VyZbI1UjR0BkP2wkWlg8'@; put 'fG1wTlVCZiZyI2E1XjVhXm9+T2F9Z0gmd0ZjLzQkPU1oand4Q0FVRH1tIXB6PT5yRSR+am9SWHdUZktVQWFOKihlPEtKR1U8V2kjYlhoIjZOSCJTWGhBP09xZiNibVRfQnJPVjYhRXtAXUE0JCZVODglRSpofE5ES0dgajNHdzphKUNsV2J9bzR7SSteeXVHYF1vbFNSQUAkKkpqSFNDamclITl1'@; put 'MmNWfjpRdH0mNCw9fDVLQythUU10IVZNP0ZyaCs/YldJUjhJMGFJeFM5PUtYWmZhYVdseT9kb25tdltnPEgvLEhdXVIuRTxuUGBFKkdSamRqNiVsJW1xVSs1ODRjRD9fRFFFcEEjKEBYeiNGYyVEJnhDSENVMyY/dndvW0dPMEQ+MjR6dDVnXl1hKHE5SWZZS0MxLF8kPj9OPEgvUXBCKCRTSj9e'@; put 'VW1OVj9iUVpQUD98VTp1ckl2S0U7dn45ZnleaiRsN056PmtKIVY2JClKNDw9PStPKSxoSGJgbWtLfTJeSS8hIUdWSyg/IWBkRFg/PVNeV1hnY31fYE0lM1BdW1Z7Pyo4WFpGQCNiVGRtZjJDTSM9cnlaeCFqfmgjImhleit8M3U/L0RTUE9IU01rOT5fMFR0X0xvMlolZC9HWTFSYX4zPzxETU17'@; put 'Q3prd34wcSY7T1YuPi9+e3kzOTJnRTl3MHBZL359KjxFSVRZRzdVRjNfPVIoUnN0eXJ4dVFGbEpTSCt7dF8+NWptaV5Wck5FMU07ZCpoPX1zRkd+Ry5kREVlOnJWQV12V044fWJHaDcqPDx6SnBOSHJPVn1GKDh6UGpHXl1SdHJYfEtJcW9LcnZraSQ7eHAzbSwwUnE9bVByTT19emJhWmB5Vmx5'@; put 'V35XUENFfFFAI09BP0M+OiQ3RTdhTT0+UHBlc1owNE0pN2k2NiEsWyVBd3FXQHRbRXolL0EmPWdtanpFbndKZ01zTWNGWX5xQF1vPyJ0MXJKM2IvM0doZzBAUiFQPkc6TDl4R09NanFAemg0Z0V5QEAqP0dIMCUjVUl6YlpJMnFoZmR5emEuPClYdH1RNnQjOFNlV1chaGhpX3clTmUpQ2NtSU1k'@; put 'VV49Ti5zOV4wPkV6SnRzT0JKeT54XVMpVmt3aGxJPCkzTHN0KzRoRFk/UmNKRG55UHM6QiRrUTNqTT59aEM4VmkuQjdzQWpuaV9dLjR8KWNxLitMUmdlSDZrVGMjR0RRRXI6X1ReeSg4N0c2SiVqNj9ZaGhCKW9nPFokLmdCMk4zUTM1O1tAd2ApI09rayhDcElHaERGYHIyOnc3aVtXKn1dSDVX'@; put 'NFpyX2xsRCh4Yjs2dDB3JSxQTGFWZHR+IzxKPFIlXV5CbHZ1IW0yQ09YN2JSUzZkMTEoWjJGRXU9UDBIfFEmdmhWK0h8VClkbTNSdndER0hQL24ySlMoTiguZW5jXSUxRXt1K2BuT3s0OGhHVXoyR2JQTl1UeUs/Y2g7WWwkImdqLk5eOllgcGVLdShTYkxHM1V3V2BpYFF8aS9XSDM2TCJyWCsl'@; put 'Wnk7b0ppRixyX3lkcGR8RlltLzNaKjVOWHlob1g7enQranVheXMhbV10X0FzUm5Qe0l3TCQkPEVJSFRXfVVUWjRRY0l9cyFPKWAjIW9xWkh3MUMmfFEqIzU7QnRTIXZYNnVuW1k0aG5+UF1yViJYMCRYQFVjNkJ6Znl+PGVzTGdaWyQhRSlqTWZIaWhHTjdDX007MyROdj8vOktWTlU9OThqPixn'@; put 'PVVHOmw2M0kmRj9bfTtaXn05PH1+NiFzdGApPCkpQElDe25eP0MvMXx8N1hEbFtrbDBHbzhUQD5MUihzLHJ1eU9jPnV6KTJuRm9CZlMlflNnRkkxO0k8PFpZaXx7OjdsZ0BOJG1xIio6ISJFNCZjd0tTK3ZNPnRpeD8pN3JrVD1BXnxLNnNhT00jbSlTbnxSIj5xWnQlfWpgSUJvfWRFPDdgXkdb'@; put 'az8lemV3MSNhbGskfH48IytmWWc9UjhCJjRldG1DZzM9Wzk1c3U1ZTF3fT9gNjhHUHt1eyRtX1Y4OjFPX0Awbiladz5DX0tDZUwod2ZJYlcrOmdHPW47I2w/KlBPcDRhNk5wYzJvM3x3VkhqeUM2WCQwL0hLQiw1LDNIYEkoaiMkU0VIUG17eFpBViY6aVUlKisyMXYpU29SNWA8P0c/dX5jIUpP'@; put 'SWpWKDJmN2UmNnZaWXIpMVJIOUIqSVZ3dUIkdCpnOWRXeVYuP2N8UXpHWCxlSUpDK2RVXj1ed3AoIn5DNyRGdkxRYjh+OHwkKX1KWn0jfXo5dVo9LjNCWnJKcVc2JHlFR3pTfiZkRHwya19iOlA+Iyh+ZEgidktvWWsxNyQjamQ0WWRmWjlRdldtQCtgYDh5M2pGTU5QQ3N9djo7fDx5LzJtU3s7'@; put 'I2ZXLz4pKCQ6PDZySD4lKlZHbCFhNmEkenNjLGEiYk5eTDJXLF1eaDYjN1JbQDR8aH0lS1t6NXV2PkxWKEtJXml8KyleQnhFcUhOS1BRWSwyT0dAYU1YImppcUZwN2d+e3RyfGhKez53dmBydUUmWUMmMEw7IXxXTmxMWngpMGAsLkE6RjRXJkt+MUNxTXtYRWNUUTh5V3BYMH1YeXNRY3gkM01f'@; put 'fFRjKThNe1VrO0R2NE1rbEgyNGMyIWlUK3NaYCkrJk1BbiJvPXg5RX1bZk9GQXE9TXpaKns0MDxAPHZvOFhUblM9JVA1PkksQTwhNG1HUF0mJX5uWyhlJUtaSkt7fFFjeElUeEYjfiZYeih1bUhrPkdaXUdJcWRvXjFMfVY9QklnUCw+UVZwYi9OM24sJFoye05dPiQhciR4V1YvOSZzZihAXjNL'@; put 'O2xOVz5RKDxneENhRTssKmFaPjlxOjMhbmh6e1I9QTVGUVFyKmZZI2tqMGhlNXpdXXkxJGNiQFAvJSs4cmFkNjhgRyxId0dMRF5KTWtvWzQuVloxeSJEeG1MMHB8VTxZXk08K0lITUApMzMhfm5HL3p0Kkdkc085ZlNMSE8pa29NWCshKVFVVTYlMXwpalVIRDRldHImWGwsX3BiYiI6IXRBflZW'@; put 'O1khKlZ1PD1+cjwwbDghQixZIygseXhrL1RFeTt0RnM9ZHFhbjo3V086V0w6YFhAJjNjRXFPMTBGRShuSHU4Ulo2SkRmdHtuWVF1clpjO0RJdmozT29vd3R2Z05oRFk0OCY9KFV6bnRbbzVPNkNQcUM6KDIxUFA0YnZRS2kufGttK0I8O0xlQlJnYlV3VjZbYHhacklFSXxWNTl1N1sqTzBMem09'@; put 'WVRzKHhaQ08yP0Z8NzpJYSZ5LGtANSNBVHcwRGJrfD9xKX15bCRAUEYhZEMid34yRHcxWHg3ImpnZkB7KV0qPFpbQF0mOEdtTCtAKix4ZyJBIyFLciVzVjw3TWUmKj1VVmFjSWZSJCNSYTZybT9reGVdTUdlSnRwUX1LRnMucDtAJDV2YCs8Xl1DLGQsUyoqUENXMyEsakVlMjxnIShTP1k/e0lW'@; put 'YXYhNG1vSnJXUipONioxVSk+aX5pa0o9WVpDN1J0LmF0JCNiZyFRU35SalgmT1hIQzcjSV1PdVc3YkRYajJ5e3BVPFFUXzF6bnQqRkNsdSJuZCgrW0B4Om9LaF5eUyVYMGlLMSlRZHU+Y3YldlVkJEtHTS47Xmcxa34rZ2gwXmR6WD1PQEw/Y0MoXzk6dEBIVm94Ym5xMklxPXF4XTRmPVhCJmNJ'@; put 'KGVDJFBRWzR4XUdWRjM6LmpDQk15RFczPTF9THhXUyIoX1RjVmZnM2Zednh1KU0pKF89Oj19bnJ6KUZLKDJmKlJRU1BROHw7ZzsuMEU2PHNPZlg2KExKUTVNQClzXjQ3NXpxRiptfkB7bnxAQFBSZGR3ZiMoZXUxdE5GNUAsMFpyVjlVYW1yKVJNU35gUD8lbH0xWi95Zy5YRzREKj81KEprbyhj'@; put 'XjM+QnB3SSZTYn08YW9CdF5sLyohOz9DSTEmWiouJipVN0kzfng3WF0xYTw7RExsODMzZzc2K35rUyhqfU9AUCJMIyNhJFEzSHtARyN3TGk9U1JsOz1BTi9vcm9EdkdMaDAqQD8oUXcsQjR5RGRLbGthVlpYQSRzZUxGP2k5UFBsJCskYDhHdkBrako8XiY2W3h6WltlLnNxbWAqakgjQ1U6M11d'@; put 'TCxHK0NgU0Z0YTs7P35YbzNaRWdpXT5fX2B7TllFPm98Om1IZUFaR3E1Wk1iWSI9a3o0aFdhYmg2MVg0MkB1SHlTbjpaSUZ9RzlIeiQuNG88L0ZbYFYwI2kmKE01QEYpflZaWyhybkBJMCNkPGZTbTNQNUpbWE5dfWh8LEx9aHtGOjo3JFovelgwR2kpRiZaaS5AenVhIk1jZmJqM1lIK3FZdj5p'@; put 'XXxEInYpM0d8NWphIl59KjVHZ1YiZzxrLEovYngrQytQIiMoVEZBTSIhfmRJUTg0OUBMQUgjenp1OkwwU19XJik/Oi8xRzhQTCQkT05IX29oPlR1L0kqanVqdjYsSTJFNShtY1diRUozJF9CQGdUYkRzY35scjtHYWRbRn51O1hTSnMwSlNoSkFeP2RhdWZRTXkrOzMmNmY2NlRFYit8QzcxfWU7'@; put 'Q3EkY35jW0orN2RsVEBXcTUxSzBXYkJARy8hU2ZjRTU/WkBmJEp7OWBkSkl8WUw/Ni8oP35eNCQ0TFcwRy45WndOdV9Pajo6dk9eOWsrUH58V1VKdEMsTlt6UmIxZnVIaXdBTzQqSERlZGRJdG4sIWUiXyIuM0NScnZ0fkJFamgwbylOY35wcVF8Om5QbW5zRVZ6aDtPUzd5OkE3bDI1O3dQc280'@; put 'eHQhY0d9KSF+b2hPQmdfZHBgWU1dTytSfkg8PjxmVj0oRjZoSHRRdWM9LyEvSUZvNlBzYW5kdllkZnxifCgpJlI/KkclIy5AMjM2ZjRsZWxeNzspNltCKUY3Lk5kRSFzNzJMZjB1I3osaz9edHB8QG5bNV1EN3FuVEtWRmgoUmU8c0R7WDEwKjcmfjRER3tgbTJhJVVCcHBIOHFaKH0ybjp4MG14'@; put 'LFQ6b2N4XzlwaD9nIkNdO0coXUE9UHBUPzg+Y2VxZERvZW8zWk1yVGErJV52SUhVeSZ7dHI9P2FNRGVaYHRwMGlGMXtRWVlSSnV7IngwR3Y5XT94Y2Jfdlh0Q2h4PXQ3eXVjLFtvSmU1bUxsWXM/dE9laXNUOGIiMEQpeUQ+PFpgOEAvOH0uJldTSCQ0am4sOz1AWjNEfUV4K3NKTDFIX2JrV2xH'@; put 'Y0xGLit9LmJXZyNfcl9aQVQuL05uTDBUO2k6SSt0fi9gRXJ7QTdffkR7dFZ6fV5MeDdgVXRLOGgzMmo9Iyk5Xyw7JD9iWXIzIXV4eGhfbkxSVjAoQmBzIyteWTJFSCxlS1BzdCthRkEiVCsyTV00W1I7O1Z8eVNoIT5SUy4oTFI4MmNKZFVScWx9NDtbfkc+PShZTG5+Lj19YiI+a1o2VCI7Jkhh'@; put 'VGZnPjprVSxCYmgiQlpEU3g6PU9vRilRUjgqb010Jj8pajJIanBrWS9tVkI9RUp6fDtnOj98dXNEOHlEdi5+bktiakdHKT1QfFZncixdJChNOzkhY3Y5aUhPQDBRYiFAP2haRk5wdHEsL0JAQmEyU1RCL2E5VT1EN0h3Nj56Ynl+XVAwIXw+RDVnTm0xcldRfC4vd2R7L0diWSx0Uzo1bnJ8OE8z'@; put 'XnFZTGMrdDc7W0AiLy9EQmFAKiVEZTd+aTxkKyFwZkksKFVFUUhqUCU0K09dYmFdZVZxVTUvLkY8PGUqWSpQLCNyYCxjZ1BNdm0oMkwrb05QW25qLigpMnwoaCk6eGlrWDZFOlhiMVcvMkZpMHVacGFFTW82YWBXL1Y/cEFHZCxPQi9+YFJrZG1PI2lxXXFGazZqaTpmMnUvPGduZXw8fnFCaFdB'@; put 'LDZzMnlRS3NfbFdRV1FxVl1xSDFAeTo4e2VsKmwxRGNgYyIsbGJCPyFDbiU9NjVWWm5bZn11QzQyVl10Lz5NYVpvUHQwXy59V3oiVGFfdy45d3R1PWR8aU1zbylAV1MuTWlXS3E7TWdgKW9mRiZ4QnVTaTEyd1lQUjgudX0zanNwfltbaHdUKEpGPCVjKTRHUlduLCltPF1ANUZTLDx9XSwxN1Bo'@; put 'YHZaMWU9YktHV3hGWXdFPzhHSHI5TG0wRVNCI2ozSmI2K0s2djFeYyZyQC5zfDNyQEY4QFhzJWMpTFsmOnYkLmJRVFAiMEVqKHVXIX5hPjMuNURZOU1QRF41IWpRPilUT2M9dns4KjVOVD9DJV5iRyZAR2Ztb0VfOC44R2ZVZEosYWNGUDZUYD1aM0lJeTQsS0VKJiphcUlmYmspb0IoWyJ5Lkkv'@; put 'QjouO3p4NXtWPiF5WjJzUEFQKTlzTFRqbXN5Sj5qck10SnZDU04mPFErYTIhR1Q3RU99Tk1ZPiYoIyhEIz5EOVYudUUlLntsfTQvTThVKmUjIVRAJjkkfD1KRDZOcXU6eXpPXXBlK29ZcV9iaUBCMl8mRls+e29zO3hlKWM6dWZZY3xoWjRbK2E0W0VOfE09S08uUStUeG1haHMiQ3pVKlIhTU13'@; put 'QWJJVGlLUEc6SShOOE1EZmJ8KSRDVC5nNmNRTC8zNG12cCFbQnxKISVddU9eOkcwWH48Sn5hQl8rWjlKO1ExT1A0fGJ3JVYpZUMxZHsuOztmKVAuKV1PTTo6fjVufl5tYCoqfUFgelZFbzxgPzcmX2R4Ni51fkhsckVZXTQoXjNXa14zTXs/Zjc4MDZ3cnM6MUttQGwoNlZBcTo6WihEZXRmViVm'@; put 'WGc3O25oY3wydkp0ZF1mVDB0UDFsZU5YbHw4VitEOyh3MVh7eWFJe0YuYWUyTl1QWlZpKSRHXUoiZD9Zcl1MTWVHdkhqa2EyI3U/Rnhgb3l8al0wVEN7Q3tDP1QkL1RZcjBzbiZZfD1sOTpPblA/azk3NDl6d3ticEshW11XclYmIkJDP2gyfjJAaTA7QTlmXXdQTCFuNUkxa11JfHVTeit3N2VX'@; put 'Lm9UUlRWYmUzVz17Lm9JPG5dKylXfWU+Z2FsRnh2QHx8Ym80KiIiPSVFaD1DOVNLbFhdS0Uwb2ovUyxGPF9xJnFVYUsmYGxdT2k2eGFjOk9TNTtZQ2ZpcDBTP1shU25TaHBoYVs8QD9dODE2YDBxQXlDLkY1X0FZX3R6R3UxSjZBQy9CU3cjJEtQNSRjTl8uPmI6S1B8JCU1Zl5OdGRYSUY8Kml2'@; put 'e3p8bjNPRkAwNEd3ODBBSGtQKj1HUn01Vk9lVE4hUlUvV0NDYml2SS9DXy8xYCVLejVjLjhDYlpLMjFHMjZFT3lNYjNXd1MpdURMQE4uOlgzLiNobnNkdjpZdVQldlhnKU1ZUFJtW19iSGt5akg2a1M2cE8wTmwsZHU6dzw4cTA2VHlIT2IyNTBGSWIyLzA6Y0pZeXVkeD1sOVZZOmR6NTk7PUNi'@; put 'P1lLazckQ2R7MyFgRy81ZClNQnl2W216PXZbNVEudFtETUM0R2JDNGRtN2JOPU91cVdbfC9ZbDpndzx+ajw4VnlqMDYqT15kd3U5STkpLEhNUElZeEIvdF52Lltwaix9X28vJTVyMCNGaHhoZEpuWVshYCM/XWxHOC8xUHFkbiFFPzVUQWFXI2VYSlloX1tzN0ksUCIlWVpJOFRPQ31bP1hTdlJW'@; put 'K2xYUGFhY2VHLyVCPk9GKChgUCYwZWlLc3Ikb1hDR2FfN2tzYl52MV9oS3FUO0soWmEjYC9WJXBmLnhiWnZ+NWxDaThJKFdXRTk7dG1JP1skXUcqIzZNN15iOlFRc1NEIVcuPyRPLGViLyhJcXdeQGttfEV3SzNYdkspL0guSU5pWSUrUj41PXR7RW57JDtNfS5NZGZuamw8Z0t5YDVSekp5aSp0'@; put 'Q2gsdDRmLEszJENlcyYheUlXW20uVyojeTAlMT8pWj0lZCpAPWcyKSJne1FSZS45YilIMVlyKDBHOWEkUSNJcTp4TWtHekc0VmBWa0glZ0BwSSpIa19oeDBwOENRKiJyT3d3cSM/P05dS3UxYUZCIUJ0aCZKMXghZnB5ZEl+X1FtRklqTm1dQCNyOFpJQXBTY0REWno3K1Uiey9VVXxiWGtfUmR4'@; put 'MSxfZzd6JWY9UU85SEtiVDpRekZQcj18RCF0b2MheT1jQUlKQjgrbEg3OHwoKUloWjk0RE5wc11AS2NJV3IpSjZoVkQ+fVdXa0pMJXUvTHt9X3Y5RjhTaENjX3tCUT10TCVBO1ZpQn5MdXVMXzckd249SlVHd158S3ojeDN8bUU4RUNfZlB5NWdUaTNvL3VsLk8hW0NhZGtrKXUpVn1oa2FrMDBk'@; put 'STwzc1h6Jn1xJUlkP0JSOkwyeHNgd3RGTTttd0k/MjpxMCt7N1BCMiw6T1FQKk8ha11GMi9Edl1ReX1iU142JXtvUDtOOEJlQjhRZUI4LFJXOEltSkVYMT10WyJoMT9+UzguYzNPVzFEdXxiO0ZjQzhDQn57Z2J4bkc1U1BVUm5qQWhaTE5ha2VWclRyJFRmcEtnYWZYV00wSG1vZDZfbWQ2c29s'@; put 'aV1VdGlhfm50N096Z2ZAangsV3ZdeGthbXJCM1JuezNUNE5qKj9MP1tJOVBsZTw3ZyxrN05sazxddlNoTiEuZVtKN3J+SCJxUTFBQ21YeGl3MERRUl1hNmMkRSgkK1J2e11xdUxsRltKQGtZV0h4TEc9Y0p2cWpHNDVFaGNmNGlJZUk3QmhOOix7MFE5dWVoOGR9eio5JS5haUtpVC43dyhfU0Ik'@; put 'QWg8ZzlFVjYmaiF1ZXpYMWVHVSJWODdZUDgxQlIqQV5HZS45dCVbP3FQajl0UXJKTV5XIUw6bC4kVV9TN1ReZUFzLF1mQiwwKSZrb2IlL1BUeDFfbiF3IXtrUEs/dVc7U2RqPURQQUg+WE5UQjEoPGsyOU0we3QqMyUuYTpRaX4xSCpzOzklLG1LQ15WfUVSMiQ1PEYpXyF0MlU8JDU9S2YxNGJ8'@; put 'TnxNdmRUVEZjSWNtYkI2SUMjSiJJOGp7NnJWPmNmdE5yIiFjS3ZaSFM1Y3Q3WzE7emVpdTJEWWhZVlE/PGE6I0xlNzMlNlpde3laSUBoPWszbipITzNrJnpsOURGX3tyIyV6dkY5fCVSSmAjcF9jUSosTVVvI3QwO0AoTSk+dSpSVnk/cE0lS2RYMlFmKGgqPjhAXmBlNGVxZW8ldlJiPlsoIUEu'@; put 'RjgifWhwJCVkKXZSfEp9UVI/OSg/cytud2pETmRqVj9qYy9uO1Vtd21iVHJ+SVpZTUMvSSJOdHgpNUklKVMlO1kkSWZYZ0RgSTNPX31pYVQ9PSE3TyQvfGxwL1R2dnNRT0dhcEpvbnczWT1nfnwqcFFVZD5ReGJsS1dRUlNLfCU8di97TTs1ajglIWo6I2AwXWlkaHxxfTZdJTZhKEY6XVNmeXp+'@; put 'S1RoS28xITA7LFU+bVBTMDc6RyR8UjFqLlk5eEM4JncmU2lHQ2pgNS5yLj1eQ1FxSjJIdWs3WSxYdFR2LzkmKWticj1ya0BlNWVyL2MqKz1WMz9FZE5DdmtrTmooSW9tRCkzbml9XyN5dHlnMmReX1h9QnMrOVB4Py4kKmdSZlQpdHN1Njo/Z3A3IX4wPH1QRkltOXcqU3N6cGJNZnNDZ1dDQiFG'@; put 'TFZyKlt5Yzc5TCZObCpFZnomPHVbV0VnInUodnVaMiU/dSV2L3pxNHFWXl5+NnFWbyljV35aZywpS3dqNUB0MGx0fDZHNDlSKlVnX0REIzpycC81d1ZYXSpzKV82fVR0MU5dQ1lRJE9xWS8pSXlsWlpnIjoxQTZLOWkhb0poVl88Uk59VnRsKSQiSGQ1Y35PaExSRnJZN2QoUCk3aCpaITU8Y2xK'@; put 'cSVWWF1ubSJTJSE2Q2JCY0hHKGxiOS5wT3JkMU0mNTRAdzZeYH1Rdn0/O29EYXljRHROXUNhcThNSik2OyV3eWkkdmRIP0gxY2YwMihQYlkuOVA5dH5SeSFOcW4vRldSY01NME01VyFKfl98KGVxXkRjSFVSOGQkd2J1UEsmaEAzb0hvYXs3ZjlVTzhFOCt1OEpPN1hhM2dmVTZdYzZjeCRwKzg4'@; put 'I2dxQjpYdkRWYnZhfU90fXtGeWF2KFdEKShPPipfTn13dVg4bEF3VDN0cjtMeE9kO0ROWU5tYGMjU0hmd1FzeGZEKWxSYCwzTmNla102TGBka0UwOTNKTnxYODojPyh3TExsNUE+c0RkZDVCUDV0cmFlaG47ZFpLUSNLZD5yOyhKVCNNUWQiKSlxVEhoVjteOV87VEJbPWMyY0NkdF4ofHIqVXFe'@; put 'K1YlWUgydzBpXUhlRTV1Uzd0NDVwMWl4YWxNP3kiXi9PVkZSdEcjZE9wYEUqMiZ8IVYjZzUvaTd7fGlneG5CcTJ3LFBELmJvRldjemQ8KS5mKEhjSFZFIWtpTH4veTRxd3pxZlo8dTVWZHgxWVUrKHF8UlZnYzsqTWw9ZT4vZmAmWmNGaThKdEtbZSlOVWVxez9Oblk/eENoViEiJDZMaGNCeG85'@; put 'YShWcHhmeGZXOEU4VUZHclhwQ1k8N3NsezNTKVQhNHk0RjZqW1hSczgxcHZ1aGJDV3kxNCY0YEJMOEY2SE9Qc01UezQzWkhZZnJlR25yKCNeWFZAPT08Nl4rd2tRcG1Mezg6RVldQ1RwMmdMKW4wfTwiW0VKOiNlUG5LMDo/QEY5ZTZ7aiZzfXBVJT1YeUtrZmVgKkwrKGVtWyU7WGFpRUFkNC9g'@; put 'PmFAQCVCVFJCIllSN0FLY3U3eFUrMlhZWD40VjcxLHF4M2NmaTEwcW9TSFUlMntfZylIQl94ZTw5aGI9O3FKY1ImQnd5b25dQ3p1NTEqKWY3eTZndE07USw5TTxpWmhnNTNoaDhBJFp8UXtae0RHfl8mOVVdb0BLU2dSS21hSzl8SkExOHhWb0txankjaCxSUCthKzFucUZuUlAxRCFIc2YqRSZY'@; put 'InBxQDFSSGRoeGB2Q3pbWFlESjtHOSR5SU89M2x7fEs6OjY4WilYUiwyLkRkfCl3SSt5cy5GK3Jne0Q0JDtbJT05YypnKnNzO1dfU2tLYW5TW2Jde0txJDtdL21FYko0PHAlLnhaJEI2fGtUbD1aa1A8L05ibVRmczBzZXF8IVdyQCV3RTVROXZFbjpjdmVwMFVoSmNlW3hMckhle05dTDhtTFcz'@; put 'R2ZeIyM4UyRHbT9me15LQj5aPF1SJVoicFthNEw2KitkUTx8cFFsPCQ8NzYmTDkleEZAX1hbZnxIPyFHXStPMVdgWE83KngpQVsxT3hNPkpFVCtNaTNaPCp7R01jcEhpcFU4Qj5HMnJ5Z1hQZlErcTx1cE9me2FyUyJDSikwWj52YlAxNXZ3Z2VWOUpGfW52MWQvM3BmWFo/QE9taSJoXXgmeUco'@; put 'WjJkLEEuVm01VU9PdnhOVTpTc0k5XS9paXBkZ3ohIyVgJCslNmgqcDZQRDx4U1JzfUZrU3h7Pnt9SW1OKDVxdVJNcXVCPml4O3kmdkM+d1hqUHc8XitXIX1qUFYmXkx4KklIX1hLfUksSUhXbEYoN3JTTlJIRlojZEtMO0M1XXlMOGs9ZjxlIXN3cDhhQEZyQTg0ajVfOnxlcylCdjRdKXpgclBk'@; put 'byxAfGVeMXg/I0dIViZqOE02MXt4e0R4RzNobjAmeVpzZldodV9Zc1h4JG5rbUhjbUNeIlpgT2lHXkNjQm5GQyozXyg4SVJGVWNeSVIoY1FTe0ddUTN4JGQpTkViQX1pUzsvcTV6OmBaYilESjxDRlVdaDs7SS5kWlBmOUVDXlkzJkc+cklhK3pzU0B3TEIkcTRwO3opLFlnN0psNH4lRGIrPFRD'@; put 'SDU7K2dnZSFiKD5wbEQ6Sk4zUk5PNmFFRl5TcCpZQ1d2b2xEOiViREZdXihiOXY4YWExSW9NOFVTP14sfWdfU2A6Y3NdbXRiSXB4NDRkNS51RyQvMT5fWlRZWCZhW3p2KiptYChLVUtFOnUlfCN6XTVsO08zX0gyLEs+dDRjd2pNSCMpb2tuOyt1MjEpPCJIUTlQcDRSPVBmaU5sUCNlNS56VjYm'@; put 'O0YleWNtNiN6VGAjJV8oPFc8WTpLb0VmTHhMUV9YMCxaX1hAT3wzMFlHMVdxJERKV1ghTSRseH1sT3ZZWEY3Xm05dSxQdGtbel1tZmtrPUpFUTF0ZyxsQWZ7UX02bVZwNG1IWUI/NUdLQUhpbTBMM008XW5tInBaPHVmRzsyWkdyMzVeOXBxd3pkaHFXX29hclNUIjZbMHFRVDlPWT40ekdFOUp6'@; put 'amFyMjM0YnRHbTMxfnIsZHg3RzpIWXtIRnFZTkptbUoqQHxePXlzWil0JTsrQ01MST9TaEAqIzREY3g7Q0p2S2JpcUpKaSEsZ0BXZyE/fnE6NjUubnxKMzMsM0ooQFtmYSRPfF9TUD5mNCxAJSIkNG96NEN1eVZMV09OTHRzOGV6Y2RgTks+JGRQblFgMjlAd3EvUFBvPU9DRSl8Xi9MRiQ6LnYs'@; put 'aSpZIjNZaV1wZVtqUVlZRWJxRjE0OHBmKjxgZ1FkXXd1dlMhWyRnI1I8O3kiRnZ6dkhYcjIvYEt5SW02NDNTOTxMYkRERWx4VCVSd3cqI0FQWjlDYSxda3FoQyF5XWZ9PSQwbitHQjp5TkM0YTYmQGtuP1g1KUwxQDRYb0A/aTM5KSVacHtteWYqcWdSK0wsaWNnP2tuNl1lNCM3OW4zQG5sTD9L'@; put 'R0BeQHBGaUJRUjwza3JSOEplRSVtSDhgb3JEN3l4Z1AyK21SfWl9KSV0VGsheG5SZmw4WzN+K3RIbDMhKVRBSkAoJVMmKGtYbSNyXWQkd2pYfCwzaERXUiM9NUJoYUU0PyF2eyljaVtUbU09TkA6QF9HUFUucDV2WH1gbC4qc1ldUyJRMEp3SUE3PkllYHNMb3ZlNVYhZms0NXw4eVUmJThjak5+'@; put 'SUFCXW51UHQwOUd0ZFphPHJrWXh1Z1J3X0o7flBrNHp0e0YjZithWnIjLmdQNyZebzt1RWZAPU1xakJgXkEjdmF3TGZBUi91VywxKE5dSy9rSEIkPjkiUnw8dGxBZEZyNG1MOWlGZmR7fShpIytTPjJkRT9McDFnZkU2Z21YTCEoP1lbQGlgZUVtR0p5dmZqKDJEeXFAVVA/YGhHKE88NVlQSmVM'@; put 'T2o0IT5MeWNIISZNVVpgNipEMTZ3LzdzUiI+S3R2cno1cToqd3xAPmE/YWo7TS9zZHQuL3o5fEU9O1RSWWdgNWBvQmR+ajRydlVuam97JiQxJVJDSkNLVFZ5IllibUViJEZiUCY8e2M3XWB3UEZJMyZSfF5EdUQ/TDtmW1FlSjhybFUlemUqcEJyL0JnLzFLdyRhdXNIYkRVemx5dmhHKTAvOUs3'@; put 'Vmx5U2FsQnEyWmpYSTxiaElfLjwkYThAcFl4XzZmKH1JXnBiakViRTU9fDpbdkw7b2F2YDV5eSsxd19VPGoiUnMkXz1wWDtCM3Z7TkpdIztvVyY3amcjdU9JJiUpYiNldWRfcmUqRmkjKD8kKW85TGdGMDA6YmxRMC4zSjF+Y184QVBqUjAxNHQuWHJ1aXdVRlk+ejNPcCVxZHc2LHJGNXxZUDd2'@; put 'NUpEIX5SQiN0PUpNRSF7Xn1IeFdlNX4vKXlvYkUxKk5oTklCSFghTU1Wbm1WaTJkcmNQNDE3TyxDOSsqMEhOYjE2TDpESnVPNU5rUX5FTUkkZVI3YzZ5eWYyWDdRfHtpPjx1K2F4VDZkI2ZpJWpCJmB1SjBCSWwqRXkpJk9GZ1t7MnB9R2cjR2QoRzt3fFF6P0UwSnhYLmlDNkR0XkZfWXJ1dDwr'@; put 'UCxhWWUqfGFSTWRXQ0MpLHZPKnYhayU/enUjeio6VjBUbSk3bm5lQH1UZCZ2OE4kMl1ob0hBK0J5PWZsbzpVYjNfM2F5P113ZCtLJjsjLn5udjVaO1khOmlJbktCLDBkbixFUTZsKGpDcSlEcyU0Wm5XTUk4dk1HTWJoRnBiPS5eMV58OSVEVnVMentDZHU0TF8ldG9sQ0hkQ2opVE9wMVQqO3R1'@; put 'UCk5ZGhwciRyfjJefDlsLDB5TCxqXjtLPnp9cT4jeGZdR309MmV7OFgsYFk+ajo9VEJ5NzY9NV58OVYsdVBNOyhKbHgjQmllMXU1cjtmZV00LFslMyE9Kkc/QE8xXmljdyZfWl1QdFlSKEwhU3dsSmFkNF1zXV06OCZpaCxqYXRhX2hVQE8xRi8vazIzX3VUR1tiNVd2ZUdeIWZsdHBNTnMmIUJK'@; put 'P35ydF9xTihLN3JLLno3eUd7YSJKejUpUENwUD5zZXU2fDdzJjxCdDRiKjAvfi93WVdeOmRYPmpYcF1mfFMySkE3L1BpJDh4Zi5ncnw5JU5JemEuLGtIKyl3YkpxOFsrO35OSGAkZ2k5OGV4cGlXQzVUViN4IVt8Uk19JEhzVmwoMGB9eDtXX1MkdD53TSsxTHFKQnJ3P1tncyU6X0dXazk7eVZi'@; put 'blF2fis2MnYhKUNxMmd6RDopYzpbZ1AqNzYkTD4rKDglRHdqRmpZIiY0KzA6S3hCd3tKbG0pNVtHUERyKis1KXRgb280dGh0cjYwYXxiSDt4KEl7Il5oPTRmZXdLaUtmSWxPITEpTmZCXmNQW0peOWJqSn1jKGM5Km9iMCV9MVEiUCp5eXpwK29+fGg5VzpLMVRfbUhmOGxJPEFiRFM7aUdnMiRH'@; put 'QWNCfHQ2JnsjK2EkR3BEIVZuYTZAPXpFZHNka2lELFRyXSNMbkg+KEdHWnhvc1BpJVM2dm5zW01iRVlyZG9FY3cvTT9LdHF0TnVEQWkuV1UhfE8/Qk5yVCtDY0w5MlhCd00vMSYxTGIyYiJObDxAeTZXS2IyR0o3OGBAKWo1MXkkWHJsS3FtTlRoT3lEQz9gYVI8dEtaK1B0WCU2OHQxW08mJTpm'@; put 'ZkBKLE4sSixSLDlENiN3dGljTHNEQzA8XiY+XWI5eTtVJHFzMnZIWnRUWF9TaW42ODFWWC9kNG9VfXFbWU07VkNbVjdjaG1hRmdafGA9Ryl2OTdfVG0kVUA0WzdRUlJjOXJ7ZHxIRHllVUdhJltiT1p4ezUpI0REWCRqcj87dHUwJTJ1XyZPZiosS08wX0leNXg2Uj0haUl1Lk1lRHV8YlgzMjdE'@; put 'UVsyRWJ8YnFeRSVMbz5NdHo3JDArP198R3U1dTVVPEA1dmZRU3Z7T3MiOXN4N2JMPXJCTStPJH1Db0VHYjFtN3U1VixGbytBbDV+UXJHIWt+fGgrcmAoY1I0TG15QTlbR215NEZHRXxhcnVoRCFMY2JIT2ZzfDI9JCxVaCQ2QkdqaCF5Nmw1QHlzITNfM1d9TVc3STE8YV95ViVgdCs6NW5oP0Q4'@; put 'VzhVNUtKR1BnTz4qPWEyQTNyPXgwNSUiakEqbEMpKVpfMzQ0dTs4eXdMbSNIQ0YmZEREVGhIRnRiMkhScyUwJDZsUSFCcHVnJk9QSyQxdVVYUXkwSXlVVnFVWFE2MEl5fUpZMzY7SHt+RytjdnVxKiVXXzMxZiliM1VSYnsmRCFBaUh6NE9GZD9pLEQyRFF4R0lBdWFwQHlWYDhMW1FMczBmSngr'@; put 'YWFKJFhEeURlOHg+LGhRQyNLZFtAUjFzPFdtREx1d1JBMEpZS2hOMV4sUmdER1VyRHVXRUF2fGMjPWFvczxWbE43UnlBIlNEciF4YzA3WDdSIjFKST1ma0dZdnI/XlpgSTUsbnheN0BJelMrTGk0XyQ/YHg3MCtYZTlYMjspTF9Dc2A9d3Y4MjplKlNSODpFcFU/WDs/fXI+V3NlcGpJUV81VHxg'@; put 'P0o/QntAI0o7QlJ2MEJKQ3xhVmVkYDNKaEJ+IVRFW3B0MU83KG8lODBtOzBsSG5xJl46PVh+cl1qIWkqZSxSNWV9OndDMVVKXnE+dUFgSUt1LHM1PEZPSzwzQUpLdmtjWTVfamAmfk19OHo5KlJkaEdSVHRfLDxmazNydl11WDpkOz1nPlg0PS5EQVs6N2xmJlBVSDZAcSo4MUlEajZkRUVacWtB'@; put 'UEleZDhxTDAkcSlrY3h5cFhsY3kjMjgiZHF4ViVKSztvY1FJMy5fWSgwfHplISwyVU88TCRKOGhlbllNOn01OVZXN3wlSDY8REpOSyojTiEscU1jVk5TV1lDR1I3P003Jm88YXBeOmN0QCskSyEkOGJgO2R8XmRVIWlZOmRSaDZYYmUralpoLikrOktmYiskdlVjVyx7OGMqJFdLYTxYcUt9NEMw'@; put 'RztKa056cEYpW1JYfno/VzMrIXZkXS83ZDdPeSI9dGNGe2tgIj0sdkw5SUt+dlBiPVUuUiJSckF3T2d+QTdWLihCZylrQ1o7e084PWNqIU9uRipTeDVnLjc2PVg0PTE3OSRWZzdHcHJ6NEV3Xzg3WHI7UnM4bEcsT3UjblI7XW93alFzUU43Uz0+eG5Zbm1eZ1lgRn03RjhlNj12ZTJtbkgkTiFF'@; put 'LFtAUV5tLkJXL1E3OTtVW3Y+UG53IU00NEtZPnBUfCI4TmMid1hQI29jJVUsYjZaez1nZyE3cDs4e3pobGZrc1FGZWtnfW52Qzhdbzk7NHFKXzddfF87QmNBOEdYUGFtX1I3YVlqcCJFYHUyY0szIShXP003e25SNXZaLF1FSnpuLCQsWTFVYFNFN3w2V30hLj5gJWV6JkxKemVrXSM7VSh6LHRv'@; put 'IjZyZ1oqLGdjWGY2MWRuXklNbUs9RGlIa3Z2N2NgPDd5OlE8O3Rtfkh4S3VwXXFqVWdHTDYkNTEkd0ErUEd0WTQ4ZWM/RjclbS8kd3R2Tyl+VE03MClOLz5iQk5xayJYRUl7Kitrb259OWooaD1IZS5PcmQ4d1MhM1hOdFJRfERYPywsWXwwUXhEYWBYdWZNYzReeiNEVUcqblZYbkJRb0hyO1Mq'@; put 'YVF9VzFkYFE5OzxkfGgvV35qRlluPEZuQyNHbEQ6WGY6LFp5U2QmbD1WLCFqRlh7ZFFDKUJ7ZiNeKEgoT150OHJYeEk+byEiTDNiZTRNWSp+NTNZZTMmfHBXM0whdkd4bytITVg1JVd0ekxIflg5L15xVXQiekxOfkxobmVPO2g4bHImcH0ydU4yMnA1c2l9PjouRH1hfGBSPXhWdk1rUWJ0XVla'@; put 'OFBoLDc3Kz13N3dtKmRfNSElQDVybFk4JmJjO0N+L2RFWml9MjwjfF50ejhSfTU7KjttSUxafG8sNlsjWFdxS1gjZiYjP0BqM30rMSxNOVg5fWx6bjRuSHBHXkgvRWVJXT9AYUhUMkM1Xz9UKm5tT0sxZW5yNUdnPEVUJTk2Rjw5aGFpa3pAWHw/d3Rrb2Y/cWBMOUdvNVYwOEpXMUMqKUxMSDhx'@; put 'Sk16eT5pN1lUb0djPWMpczxhOjwyYDRieDhJMzJ5UzRON2FkbjJhLGtNKjp2fTBgJiJFUVJxVnx8eC5ZKlYyNG0jMSVxIVNoTmUvbVUzKHo6OkNYdnYrcmlgb118IXheWSIzKlp9UnxGYitiPEBWaFFUJSp+TF16L2lRSTVQKTpnfHw0OnJ5ZE1PQlo8X3pRL09+ajVLK2UkSnc0aW9RSSt4YWN4'@; put 'N207RTNgS3R5RS9rQFpiXXMhMl5Xe3ZVYm03e1AhfllJI0lyQVA3TjtSciQyMk19X2hiRlhXbH4heEAqJXcqVzErJXpAN0dEYnc1cyxgUStUfXF9RXxFUj1TKHJ3dTFnND8lU3dxYjx8ciF4KFJPNzAsP1thaX5yQX5scHghLlM9fCI2MFcqe3AmPFF7YTxtcCV2OGBYLjVnUiwhZmtrRldbSllP'@; put 'dypKMEx3an5kQlJvaCNtISVsIXt3JCwiYTpRRD13YVY7Qj5TcEo4KG5uckxtb3Z6I313fTxhe3FmRVF0bThOWjUxZTA2R3Nse2V7OSZPPiJmO2F2eiN4NCF6OGpJZ1tiLm00N1kmdTd0STJnSV86N0BPKT4oUS8hb0xQMXYjKHkqPVJZVHZqYj95S3pZMlh6IWU7L1BSe3lGaWpoN1JhMjE6NV5Z'@; put 'KHxsfUsqSW8oazRkfE91P3V4a0xOTTJIRkRMLG5fJXdVWEkqKSQ4UDR6QWZJQFlROCttXyhpNHYyYzg/SnRCPmY9QEpkYHFuUXBvVDVWNDBvK2VmXy4kSlUwSVAvRlo/NExtPTR2TjBtdToxImclKEsuX0taSFtmNS4wanFMU0V2N0g1UTlDbFN+SktzZjBaVTB1RTpqKndwc1tZcG8iI2hEd2pd'@; put 'U3hEbjhmMjVEPnVjNkEwZztaYXMwOkB6ZFpoQSp7Z0JdMlNjKStecG8/UXBYUFhAT15MRCFkLzpWJVFrQiZZZkZ3WHsqO19oY3ZlNEA3Y1BlNEA9InxiQXVYXkg0T0NMIUA8Tyk5fFhuN3VzXyZGXWJ1YFteanJ2aE8yYFVPKXJkYUhqREAldnAjaj51KlgpcmwqOXwuNHlSNU8qRWQiOm17aDBk'@; put 'OElVSnErN19GUmgpNDdvZSFQK2FJI3hLV0BqQD9WfllRVnxxcmQmdjhjcSI3RDtKNURGLHtpWlNQbHZoQVghUVhHeUVTfnR3ZkteMWJCVmZjRiRvNUtUWHUyQ151NjhDbEdGJF8+ZVo0NVArKU59SWJld1FFOmw3LmFfczI3dkdweFpuWFBvRTd0ZTUwS0F7OmhmJj1wOkNHZD5wfUFdZHZqTD9U'@; put 'PXFGIz43M2s1MEtCU2VyRTxDNkg7dUZoNzw8YyohdS9DI1kmcGMoRGBXYW9DP1V3LkdUTzdUaSk1SDtFbj1dJWJ7bCI1bV0rKV55fXQ1QFQmTCZHIW1eVkhlOFBEMlRjMHtbTXdbXVlJQH1IO191dlFZXklXQENPKkFrIzZreWRWMk5gYEZeMzozREg2cWQzPTR6Z2Yzdk5Ie2lWUldheCokR3BY'@; put 'eEE0Om8/ait1Qn09bzNUeCU5czEjU2xYJTFBRzFINU9zUldVVSpVPUNGRDtYe2NfKHZdVkxqZ2QkS21mQVBCZUI4YDhjKjVVSnBKLGspY204Yy9IKDc4Tks7JXdhVVpMUGJLWilyQiZKXkFTVDpjTXQqWF5QcylpTFRkfWR4Y24xJjdweEQpLDAhTE4ydT9MMl5wTHJWUiojKXVDMEdRclhxXmVs'@; put 'KzwlMDJKLzBZMjthWjdwJCIyLmY0cn1oW2cvcEshfkFNeEBzIlZ+ej9MZVlPRSowJU8rZHFGMCFNUXBUSkFIK2NiX3g1JHomej4kU2dLUytwUzAuVGNuW3xSSSgpREx0K0E8PUs8LEF9dXQ7Xn5GNi9NdCJDTlQqLy5pZXNMNk9CTjhNT2ErVlUwP35POWM9aTBfIVN4WHxiajJkSlBRYD94dTIq'@; put 'Jj97aVFjOl9YNSh8R1pjakFJNmhnRD07bEcySHhrQTxIMGQ3JHJIVENhWDpDd1heUXd8Yj1LNTQpbTFfJX0qSmk9fGVMQzNNO1ZIXVssMEQmWWdAfGJmV35OTF4zNmV8SUVWaShOKlIwMSs7Rj9KT1BzNy5ienhHJiVgOnM0bGNtQlZ2YUI7Ty9YY2tfMTFQTy9JMXZ7QU9sYThyTGRdKmxtOTlh'@; put 'ZGA5UytXMiFZKjU4WHJiTmwmdW5MXzN6WlgjSTVdV05CSVVIWDlvTmxEak5iQjJJeVJ8VkJvQDVjTmVLM2tDdiwjakd5cFpgSjtGb0k1X2ZYVGM1QSZGL05vKUVGam48aD86Z3U/TzVfKHQ2PWRwZ2wuWEB5SEZ4M1hyUVkiSHpZIUJNKzliPTsiYXclfiFTYyNEX1teanJEdnspY3d9PkYkL2l1'@; put 'T1teZHFuMHBLOF9OIjZRfHtsS3BlaW4oYCM5SWc1eX4rPkgqQTkrXkdvPyRGUnAsfGlfJWJHLk8zLz5JL1tELDklMF9nO0VwNTcmcWVKRUhQeUI3cGBOeV5WeGg4XnRRKTp1MDF7ZEhlI254dGlTakZGeXZhfmVHUUZEXj1zfGJmbzc1NC9JQTA1dk99aC95VldkaGk8d0Y8cjYwKCxgSiJDb1hm'@; put 'RClPc1cuV2siVzc8L3s0JT8yTShEcGkraj5STUR0JCh4JHU3XVd4PEMsQVsxSz9SSWNiTGkzP0QpK0dqREojeH5eM19rRyJaR1Y4b35CRktqekJqdE1+TUdFMGYvcWMwVmJCd3tQcGt1R2BQZWVMKiM/MTJMZjd9NGJsKFJTWHc3KjFXfF8uIW53UUlJNVZYUHFtV2l5NzVWTWVVaSpkKGZodz46'@; put 'Oks2XV5KTnh8SkdhO09zQzgmPFRMSEBJJk1xdS9GTGB7STBhWHY/dHohOFgyJmxQIndoRDdoI1ldMVl9Wl9gZUYoQkp1Rm9xTzUyJGoqdFF9SHxVRVRJSTJjNE1vcUdVYERJUD5DWShwNzJjTmFpZXNZclZGUCUqNGhCVFQuSit0XmI+TTJjPj5qTFcxc3czTjg7PWlZUGVoYjMmeX1PfF91KD97'@; put 'UlRFXz0seUpuX1lXJmV4OGJ4N0ErSEpocWBRPnV3dEpHPnFFey5XRXEsVW82RFI9JlA9OF4jPzBWI10zPjBwdi5uaUhpeFAqZHZ7TWU+JlBbW2R3MDYmflszb0dPMjNVVEBJWih3SD19K0YmdUB0RUYwSnooZXRWKVkrIVsqdkB8PiYodStWMU0zSVV1R09mc2hjKjN0P35WfjhORmJYQXNeeF99'@; put 'UE10QjEzN3U0WCxXOmQ6RnAiXkE7VmJdaU40QGtaNTY5LDpLNnU4REkzKHgxbnU4OVBMZTV2IVU8L3VwRn5FV1hhOzNPQltMMSguT3lUO2BCMElIR2ZqdnduQjJBYj0iO2pSRT1pOUk2THF1T0chZzVZLEQvTDhSP3xQVF54UHlbPDVISSNnLEQqbmYmaW4jK1VGaiZlbzlEUEojUzcwVnIjdGQ7'@; put 'ZyV2VTdUPSlBZDQ3MSo4PzciamMpYnJYTzk5WVd2Tzx2JnRldDhGJF1mQmkyNjV8ViJye3EyfD5AdVIzTFheZHQoaVdqZVtFMGxHRFp2NVVPSD9vPGtAZy5aQ2NMPy9DSkprLil9UCxJWWRmbGo3I1N0VjtfVilFJGcrfT4hP1ljO2dbVnJickQ3SlBvQ3Y0eHIzND9eez1hcmhrKlh7eEVrdV5W'@; put 'NUkse3FTMENZKFN3PTlBe0JlNEY9NSt3X2NwbWR7X3pCMC5IbSFeWXlJVVdTMHZoVmlNXVRIZUo9WnYscl13U3lnPCE1XXRkNFoiNjs9MGRdLC9kcGR4ajpCNUc4XVhOflpkQGU6MUdVPX0+bkhGd3AlQWE5UW9iVDFeMzkzazZqOT5bbFFqXXw1K042NVZidFhadT1yfEhDNDB4Oy9dWHxaRVok'@; put 'O2E2MjlLPGg4WHIsS29wXSQ9bCJJJlJkU3cxYl1MNGcmJn4wLGxvYGNpUFIqfltRcH4iKGFaN29TS21mJURqJXowJC4paE4uY1JBRCxHPkBQUXBjVCg2UytVaHwkRH4lYEhXWjJxZU0uKi9+aGhhNFlaQSk5OyNfNWkqKWQjJGc1T31qeE5iK0RwSFZYdE5kTE1AeDc5LnApZzVgaW04RTlpYWl2'@; put 'OmUqZSNRI3VMNHdEISFSRml0PHlTZ01JWHM7UzF2bzk4SGdhPVt6OE4jPGcybC5eIUlSXVk4dD17azFlNnxiZSY7YDBIJGspRyNmZWsmP1J4N3BvV2hBRm9sPTlYVjI9fl9aaDZFWTsofGJydjhkOWsxPjglOER7KTp+Mll2NWxgNXg1an5Xa3d+I0p1OCNHdV5sSk9JYitfSCJkYVR2cUE2PiE9'@; put 'QWY3NyVsUlg4SCU2QDtnezxacHlhO0g7TilCbnhyUShAb3NYUER2L15iOjZ7ezZeY05aISpjbFQrMmlYQE9zKT9rYHlrdyUrU3cvX29tVCg3fG11ZjZsfCxJMnZbOj06QH1pb3hyWl9WLjJzK0crUFJPWjhnWWVaMmRwJGlbPHBZW0wkcS9tRkBMZGhDPTppS1osJj9vTWI4Uit4WDZPT15CWW0l'@; put 'aHhdPWZgWTlgXjxEelVQUiVpNWh1fjwwPTl5VU81QnIxSUVMN0szS0BAJXg+I3QlQnJyMmpjL2heKk90bUomLFBXUUozQVY2dSM6THxuQigwTkBPPipMWVo6eHQrYmxxM21qOzNUKDp7P3lYbiluNSlBVktxN3k3ZTVqIkMxZCJTMS4qSWJYQFQqblRrWFZiKipqbyM6Q1pgVSpja0oyN2NkSF9e'@; put 'P3hsRjVyeUF9SzZCJnJxLEB4bGtvIWlJUj1RWEBGam0wZlhUbD0qPjc3Q3dzZ19dUjJFeCw3aWNvX1NEVzs5SVMyMTdke2pfUyo3VzRUP0BsUip+OjNjYyFoLCY7VX01OU8pbjJPSEhjJDFoRFVKQXZ8bDQrSi55NSpPKGE2YW5lfHx2bX49JWtNQDJjK2ZRU0xnfXl8Y01+TTo5ZmEhRCppKnI5'@; put 'UngzNWNLak9ReVtbImE7ZU9TbW9QUjhUd0Q6N1Q6JWEsdSI0ZUhHeTNqMkpPdFlrWVMyZGBofl8yU3U2NDFKeEpLZ3ZbfVAzYjpIdnZweG5hL1grOHdkRCoqPCpwVXx2flh2d1VPdyFSNjMvRmdnXThtW2sqXiJJNj4oclhJZG4lZmxgeDQvaXl4JTpTeHhNQihNM2QxRjU4Wk8ofHxKWTtPIjUs'@; put 'W2svfU50c3RjTHk/JW06WXptY3ZVS3B1YDtCdFM9JXgwJWMzeClTQ2FaOEE0ZXtsdiZOVGp0OjFBUXomRWpAdFpoQytOX1NKNVdYX1NpRGo5I0coRX1Cajklb19TfWNKfUxyajJkVX5LQUJsITNpMTplUjguLEAiMX1yOCoociQ0Tl1PJHxgalgyeFdzd115Q1VLNnQlNCU7K1B0c3ZpKndIMU1a'@; put 'Km5nfTNKfUdCUGxPeCw/YCtOK2NAVDI3dWM8KHo3NmkkW3ExVX12NiRLYTw8dTs9di5JWjwqfkdCMiU0PDY5RmVrJkJKIT5vOVRvVWFkRDR3L0RWLFh8S1c4SX1GRil2KGxue1A3cEhEa1hkTnkyT1RaQDgsamdAUHFaMiJoKURsWHQ4KUN8eEFNNlZIansibkhEQio3UTMpOCVEJjNjekFTM182'@; put 'cnxPKXRfLmpGPzVJXUwkPyxfTH1OP0JvRX1FYVdwNV4kN0E7SGhNU1NvUlcpV2VbfXFJWikjVjpSTnQ9PD90MzpjYi82OXF7OHdRJTtIJCtFKjEmMSRMbXl7TENVNEplfVR9bng/LCtnZnRgR3RkNk9pcyhmXkNfM14xPW4lSihCKUJOQ2Y3eD1JeU9HN091Y0pxOjpWP048Z0RsQzo0PCZfYFU1'@; put 'UEwuUmRfdElbP3YhOVsqRCxeKlQ8MnA/PG5CQkFiOlImRz1UIWd7bGhiRFVSYm93TUAsYnplcVQ/WH0yWWckJUBKWGYlXX1ZO2JiSU5PTW0zfUA0bEtSUnVkNG5XK0x5b2ttcjFrYXZPdm93eSw5cDFwWCE5NjlrZiVBTEhWNXRzcn41UCNbMnA/ZHV+ZWFGT246LmhfP0djP2xabVRRVFApXkts'@; put 'NzVObD8he3MkXnlLKyUvM21ze2ZaX015dyk3bFEpbmlNXj4zOkZjeUxLbGB0UVpuU2JLaTY/Yil5N21NKStkXmhOcmBvfVBjVSY0JXpESCEjWmtKRyM5OEdCXXpjcGIkbUc/N2lEISp2a2IwR15iVDJyJURTPEciSlNHdnlGa0l9c0Usa0l9MEV5NEgpNU1vK1dZMmhAKjRwOFplMmd7OlRLaUVi'@; put 'VUtAWmVdIkxYT1RjLzVuUWhLb3w1ZTpnLl08UkpLLzBwVn57ZH07WllkR1lrcCprM0p+OD55TDE1VnNzUFNhW11ZTXYxdjNOXnJ6SS5kYTJMajtnOjhqbExSX2k1czd3aCFubE1OXyVePllSOHFCfEVEWCRVPFJIaGVUT116Uik3NE43LzsvfDlfQTsuY0Q1d2oqTEdiPWVzYy47bFhCLmBSZSEi'@; put 'JUMyTyIsXXEkTDxvcExhPGQ/WksreVlnWzNlZXA8enFKWWMzdUJ+S15VXmYoRXVuaUhPVnE2bmxvQjI2TFQ6QWJ0Umh4ImdjI0lJXV9uUnVNRkBoWSU8SVk9OCQ5TFQrdk1MZmtERkAmNjhTeio7Jjx8ZiViJkBXRmJbTGVaOUtQVykmIyRFIWBVKSYjVDs4SWNiWkAmSUZRWEAvWFFjITpqL1Bn'@; put 'am8rUFJQIzBsdzFaSnlMM1hAQGl0OEQxL3cvVzFaXjUwfUNPbXlfTzR6IlszKiUhRF5VcmlHfSRgOlFeRF5XOTNfU1ZfekZvZGVPOXxYJWI3QjM4XVRZcjVmcmNDXXROPih6OTpUckhVejJLemd9XUklLkA6QCMvJi9KPTp4OmNVImFda2NdcSR5aDQkLjlGdnlWL3lCfHwrMnFNMVFlWy95NHV6'@; put 'anR0MVhyJlU2SmZ0b2tjK3U0Znh6aHJbaj05WiZEXlUjJGNOYkZrRyk3OyEqXyU9WHdnRSFwUDpyUmAjZmwzVjRVKzxsZ2YoTkN1Qm9yO2RdbiUjWF8zaXt0WjBdJiZhTiJWIy57S35taTk+VG8rOjQ0cE9OMj8pZ0hFS3JbYDJ9OGs8NF5vXyQ1RT5WRzFIMlFEaGpSTWIkYExQOnR2VCRpMF9e'@; put 'UnYmSkteTn5Ae1JAMkt+ezZsdCE9dTEpYWlQXj1vMEk/KnFRbVtsL0xSYEIwekF2aUVmNDx0QT4lJW8sQSt7JSZkKC5DRGIqbntEZmtwSFBvYW5aT3B5fGx2SSxKLFlmcXxfe1JAQHcia2BPSHA9XX1iM0t2bHRASSFGMnFRWXJbciUvQUxTTzk5NU0sUk4qK0RgWTAmVSoqWzNLPTdrcDAwe0JG'@; put 'V3JackdJekxnXXgyMChqSDldMH0sdHZAL2czPlBWIUxrMyVVPEVxImphO2ZSeEc6ZW9RXlN4ITMpTDlHYUlXRE9ibXg0bFM7SnAwXmZOdF9TeVpoW0MqYVY8ZTghRi5gWWE8RFdCP2gyK1V1RFprd1piYVJIUHNlPnBVaW54ITtvaTJGRztAI0ZMW0FsU1lSVG95R3AvQC5dU11MRjF6N0hrMiI1'@; put 'T2czTUxRfTg5KXQzY3IuJS5nOjhhamZRVGt4YmJyPXNhRk4+I2ZrcDRVLiZmZS9pJlV3MC9nZFdma0Q+dHs8Z0syai4mSj9kIWc4SDlkQ2ZGV1JQJDVYbSFjQzAkOCJjIzk/X0tAMW9KNFY1VV06ZDdhNSt7alZ2SzhMNmwmJmVfMz0/IzR4WmNIcyJxRV0ufk5vIylJLzMlL1RrKipRbDh6aV1s'@; put 'XSppdnt1VTQ2PTx2d3h8RltFTTpZb1tDKj5baSgrRSVKTF4vMGNrI2tFU1I8Yml1U011OCFGfkowTEc0bDgmbC9GWEpjMTZCME9IK2BVMzpuXyF2UXtYa0dNTFltT01AZFdAJTxXO0kjOG1VVGRPdURReGIpZnBJSDFILFVib19LaEtteD9OPlBAbVQxYDZgP2E8KDpTJWVYTH46Sz5LYjhFKjMx'@; put 'ISpKP3BQOCZ0JHpCciVFOSQuXmV4eWdSV002aVBVaTtoODE8OkVCKyk/fD1meSJHUElIIUwrVFtARzVPPDk7ZG4lKHI7LE5SQDouflJmMiZbOzI4UmJyT29MO28kZnxZPGQ1Lzowe208OjwjXlhwN3JPazQ9MmBrXmdYRX02PW9XWSZ1dF5BLCZVIjw4RzE8PG9AOlUkflgiO3IpSSlvb1RybnF3'@; put 'LjlNYUoiMlBjKGo2aVFQKip+XXI3QGY4K21eTCFQSUIoPFI/eExyQ09fLj1vfHxnMzVWPWZ9NDo7PzwsWm4uQSpeQGRFfHliOkt1dzV5fS9UPU9vIyEqNEVoOEQ3e1p7ZHpUNl8lfUE8aiROckJ6eSZONEBvUjVxNjpXcmMzY3MjM2w6d3p5RnU5YypjIjY4OTh7NXI3bHZ7Wz98R0tQfWNHJUQu'@; put 'TDBmYXlEampjUXxiMEgjdkhkI1ZySlVeLitHMk1zc3QlM2BKS3lLSkRlcFUiRFhPIkR8TnlZeHglI18iUk1iZDY4c34sW2ZwTWJUSndfMkpERy9+anBPWDc3XUJVO21wdVheT3FKbiNVPGNdUWV0Qlljc0gqNyVZWmEiSDtJQ3hpOTNSXmY1Vjp6MiRYcnl+ODdxZWdkdDB9Mk8kUTpVWUAhUkg7'@; put 'VVUrW0g5JFopJWNPMHxibjluJkR6LnhVXm9lVkRFdnE4Ny48NTxlflB0TGJsfWZAby91V2wkbGxVZj5fbUgzQGlmJipsOlZkfVNgRShZNTckR2RNOXtJZmFzWDBIfVp+Tkx8WHReTm9pUT9AQF5KZWFKRWZ2bTwzY2k5YX1QNjYmUzcyMl5vL3UsY2NZfUpTNk5yI3dLVXs2TnJ2Z1VNN0g9ezJt'@; put 'L3tVRzcqWHUjdz1LandjWH1nPTBhVEhmPGczTn4rQzR2bFV2e1dvIXY4eD0iUE9MYDY2aUVgeXpPQExqdXMjal47MFZ1cztrMG4mWyNxUFFUd3dAcj5vOV9WPz1mcC9vO2daYW44WFY9PDhMfkttW3lRdnh3aTJiYWZwIy5sP1BEOSRQO24oUChZUyN5Z24/USNmJkg6SHQzK1FpWkJ0eEdlWDBx'@; put 'OWEsOmdIZ21mbWV2XX11fCZtNmpLdGZwfjhiITtiJSRfYFsxS0pqYlt9Ul5xQltfMmgxWCh9UE9kMVtfKVI4RjQ0PDdOPUpvZzFUcy8sXTZ1JXdOSChIb2dldDVGOVo8TWAkdTVxb25gaVFCZXArcz8ucGhuRUl6ZVpYViJDQyRRTEU7dj0iRlphZ15YMl46Y2h6Lm9ZOjNDIjRjKjdVLERvVV1D'@; put 'M1tMVDE0XmJ4REpWfXhNVCJNVUFpQyxDViNNZ1dWb2hmTyM7K2o8W3lZSzVHKDoqXz9hb3pNYjJ3X0JtdlhMQHRIOHpiQFR+X3lpQVdFUEQpTChbRSxPR2UpdGcjJXU1QCF8cEEoakkzMXNBWXU5fk0+c3JjeG9CNiMucHR9dWM/S0lQK2MyXXIlQDRYQCtPc0FkSz09cy98Q3MoMmE3Oj1ZLmRe'@; put 'OHZFMyVEcHF3OSN1RGx2Qy5wflc+K0FdQ0lII1twOyNsWml3VztFYkA/KHh5PHlqVDtKPnlvQnZzWil4KHFsPT1+aVEqME9BVjwjYk51Q1VuVjtGVTVkb2UuOXY4S3pkVT5mazdYKCJWQmUpLy93Xig3Qzg8akBRVlk0REtoWml2RT1nR0N4JF00L25Lfnt9amR7VW5+WlFxV2pUITh5cHV7TnlG'@; put 'KmVDbXRzeiRRcUNLPVZtIy4kWTp3O3Yjcn1teFpuUCMjWmpCVkApX0ZZfUIiVit8cVVdQ0pJQCQlKXAqfEpSZnhNKyQpWCxGbFFiKG9MO3JLNld9N0RTbS96XWFGazlaNUZVPEVBJXQ7QyxIUk9OZldHW1lKflVBcUEyaXg3dXdlT2R4L0kyWF1DSXdBQUFBQUFCdHYoZ0lfYVQwYEdRU2VHLjs/'@; put 'Y1F8TyNNVCtCa3pHfiQ9bkpYY1paZSpDK04+a0t3NjFEPyRpPXx+MDUpfmdSRix1dHNvOCUmSjxTI2Ykai43NiU2NkJGSEVNMFl8ODFRdCowUFQjMiJPQXE3bUw6JWxXOHFCbURHWFhwTXk0dEUrKDIqX3RCYj8yJHImeTxSaVNXN3d1V0chQCRQWzZMYk91d2Erb3p5fDwobV9DcHZVb18uaHYv'@; put 'MD9aIy88Tl9+YGk0eGEyPUFvK2FUWmxTaDldL2ZKbl1aJiw2UT92V0I/KDA/dEF9RXRqamdzVUM9OUU/fHh2Wj4xcHlkKFgxNV9MOFdAOX5jWCVlM0xnTCVdPzdhSVYmJltxJmhYRD4pandJTDY+SHNvQmcscC5yI005NmMid25NMClISXk/RWFzRUk7YUd0V0Y6VlMoUEQxI09OfDdNYmtGWF07'@; put 'Q3s5I0UuczUsMiEvQitYSnVkPD9IJiJwQS9hPyN3SVpAUyE8Kn04ZU5ocF5pYHcvNyssZlladDY1JDRQN3dGMjl8JGohQTUlc00qZyVWI2h4LmImNys8fnB0ODh5Ql9SZ1ZWYj5DKWRIQ21hYndJbGtocWAoOnltU2xCRUFrb1FOWzlmOyolOnZOQXtPVTgqaHRZfX5tI05JWEc2Tk5YVVNFSEhl'@; put 'STs1U0ZsQEk+JHZMdTs1KDEvdVJNc3U1ZVBKPXtgRHNed1RKVmNQMmhSM0N5Y0taKWlYUU5CQW9bY1VpXnc0KypUcXAwSj4hW3hRY3RWVD1MY289a3NOZSg5PVVtTGdUbXl+bClMd1dHXmp4MFtmaCtPZmFNTjkpX0AsfjJvNl9qS1AlMmc0LG9mUnc8OnU5flVLNCU7c0B7NWFDZUcidWBeaVdP'@; put 'M0pwR1V0WyNHR1VqMDlCMUJ9dSksN3lxcWZ2RDJoJCJiMVVCQGE6a1BXUT0xPGAhe2p5WHFjR0QhSlh2W0oyO3dIMEp0OTtifnJXRlVfb2xoaCtiP0xRe1l2eWppWE9BbmBCJHBzTVdadmZvWGdgXlRIMzoibmhnUThvNGtWYTcjVENhbXpYUW5vfTlKLjFsKkFUPSF3T19qXTh9PX5jM0Z5NWcs'@; put 'LCEmQDk/X29faHsveXo6KVttLkJGQkdtNkp3XXh2OClvdUQhQ1tjfWNURyZ+LnQ7IXJAO1p8PXBLaU89VmtoJDFtbU5kR3R4Oz5HdV9MOXNpc0dMQ055cFV2KkwscC82bTNsdHw7OlU3MisqLzAqfXZOIlRNUVU/N1Y2bz8vIXByeXRHUn12fkVCRiNBS2ZBQTFSQnZFYzA4JnZ4eDtKdz4lS2tI'@; put 'TndnVlJpSDlNRCJnYz8rcGNuTVBJJW92YERKXUR2RHBWY0l6eSEyRi8reSRfc0swLyZ1T2lPZEUqVjleZVVCY20hYHxKL2l8WSJ4akFrd15RK2hoWmYrY2pqPG0rQUcrdXdlSi57X0s2JkhHZHZIbVM+ejFUPn05YEJALlZofX0/Kk43TT0mfVIldGQzTE9iZkghIlJiS18udDk7UXlMX2tlQ1t5'@; put 'ZWpZZyY/cVRkZTZONTtxX0RKYjVLJjI8VSxdVVh0MVk/bWU1UXRbI3VhLzVYcnFZZX0wO0t+Xlc8QEhVPWMoOUopInIoOXs7MG1aUiEkdmNlalt0blYiRHMjUkomb3ArXklOZCR4VmdEPGMhdmY5V0ZFV2dbRF8mcmk3Y3FlZlJmLmAvIUs9JjdrRj1PeyQ9W2c/QiJUOD54MV1ZcV5XJFMpPE4r'@; put 'd1h5aiglRlRjQEheNXBAJmFuaEBTc3x1eDRAbE9BOTkpLzZOSGtDb0UjOjRxUXt5Q0BJdDEuY2B6fl9mbn1eYjx9bndIOTVWITwjY30pRUs5P3x2Nmw0eVVYZGVmIiNEMDNZSSx7NHVRek4kT0UwaFswXlJkXmBGTCkqeGkxJm0lKGR1NUVAO0lIJCFCcSVqXXNNbjVSUkg+NjZKZEN0cyV8NjRn'@; put 'QHRoP3YjZWVKfE9UeiVnSllCO1pyQjtWbyUoU3Y+V31UZDlDPUQ5VEwraF5rRlpYdFR6e3FKWXlVO2gjUmk1aSF8fUk0eHpDO3oqJkRyWzRsRWxPQyE8OSg6PVYifmRGTj1SN2diTmRyVy88P3RvdF9qUntxND55LHEmSlU3bjhTfS8/YypyJnRNe15BeVQ+OjRVXXdDPGMqNXouJG84WXJxZ0px'@; put 'JTp2OWBeSTosNFMlTElGc2RffnRGIyQ8T0d6cXJ0bktie3YuIkdCKTh0bCg7LHJVZWdQVzZ5OyxTWExSfWI9VkFoKVBBR0lZX2cxVnM2P30qS1Z+YlZrKl13bnZ+LCNGZWR6OHdgemxrNTU8LCZnbjcrZHhxZENGYH1WMjFNLE87a11DK3FbdHEqUnNiRl1WKl0oMVpgSnk8QX1OYjdsQGJpWk93'@; put 'MFhKLCVxJnFRTzRXUU9xTzU5JUcwSSspdFVubGQlViV1X1k3QV1KcExSI0JZd2NFP0sscSs0K1QhRTtfRilGYHxNb3ZRamUxMDpzdzNHTDx5eUlkSlljMnNwSS49VXtXaGgqK2xPUGNhNGV6cCZNcHF4NFsha35oZV9pfWY2Jj12c3xQSSxrI0YmcEtYeHBPKSk5fSxNYGNDXUt0SGxGNWYpSTdT'@; put 'YSsofUBTNDRSLnQ4dDFpJmd9bkAvJSx4UCZtJG5HQ0RYVmMqfClBZj0oOSZVaDJ3YFsmPT5eLFhFbzA+YEs2QSNHS0lieltMdGVqLH4hMGd0Y05DUz1fIkN1VVEmT0xWVTNjPXk1Xk9hXj53OzFdNCVvamJUN0YpUD45cXp8OVZNWXEpZmZuTmxOLzA2bGdVYnVFcX5VQTtrI1Z9UkhTdEBnT0Jn'@; put 'QElidnVpR35lPStLelJ4NjEzcGYrPVBbQUUxclovW3VIQjFddSxtR1B8bFBBJS9aQF5VO089fX1qS19CKVh8JTo4NCsvTClNc3c0NDY/Z3xtZTo1aUNtJHphTFN8UWtgMW9zT2hNeDxvby5SI1QrbTIjfTBHX0l6dDRHQEZOe3FMO3hKOXZzKV9iUT13QnMraUtsVGZqPSxzazFNQCtOPkReN3lm'@; put 'bGxuSDk0aTcwVU1JJWApI09oQzh+NUMpKzFXTUJbZlg9b2soWjguNkpyNF0zNzt0KVd3c0A8fkVZOGFXZCoqSD58UUAzL0l0aTYkOG5VUFoqNmpYVEAqdz89IUt5WmdGe05zQXlJcGtGLyZ4ME4oaz1JWy5rJnc0dEF5TU9lcFojR1NhXlgodXllQWsjbXttUkJreHFtI3p+fCsuOFdAdX5rKmZN'@; put 'OkxbMnVqWndFQTcjNDdQSElwZVU+Lm9gSX5CT0Jibz9hRUlLSGdmYyFEaSs+WHFNa0ttW2VfMi8mQzRLJll1bj4wW3h8dnVicXQkMkJYciR4Oy9xdD9HYkNNZXsybXopXy4wIX1VT2ZCT0lgcWRbTHkkJChNQFR5fGdNK2s4UThRKHtINHMpIk5+OHBpSDBDMytgPSVbIXNPcDxgd19vPGNNc0Ba'@; put 'Qnwscn59R0VOaz9kV2RHVDZIUHU/PCx2YShOay9bXyFoW0pjfCVgY25xXSh9JnAlQnc6T09fcUQ2JU1UdSY7T0YhVnt9b2E0QHQ8YEdbfXcyO19nPmV4ay85XnE/QExbfjJgP1R+RDIrWHUuZCJWND1WW08yJFBRcFZTVmNiYSk6Kj9MQUZ6Oig/fS52UE5IXzZVQWtrOlM/KSN8Wk5BTU1CSXdY'@; put 'ZCI/fG8mUCZUaSU1YylrWVZ2VHhvJG0/R111XXl7emxuY1BBaXt1YEthWU1KI2o9YHRwYkEpb0crI0B+SGJPZHRWejAwRz9se2JPUWQrcytjTi8rUXk+RmJLRmh6KUVJaUM1UEJTYklIWlQzMmZEOy9YJiMxb0JePEV3U3UjaE52bDA3KCJdaV0yXj8rVld2ImVjXnl6eEQiVWclLzpUYiluciRh'@; put 'SmkhQyp3T21Gb2B5emx1OV5xOn1be00sZDV8LFglRUleJkRvYnNdQ1s1fTVXYVg4OVhwTlVbYihXfDU5aT5tZmwqPWFHKFVSMzJ8UXp4SWxLWmwvNDphMUw3JDkuWkZuSThrIkN0VCRSViZaYSVhXWM6ZWIuJipObV0pTF04eCN1I2l+YVdRIjNFSXw+aU43d1pVKyhNanpHPiM9VHhIT2YqQm59'@; put 'KlF9RWkqPjt9V15pIldOUHNOU1E+VHF3czhUPEAjeFg9ZVciUXdqPz1Ce31rfEliYG5FL2xbbW5hL0QicEJMfnlYazZIK1ZxYCwjXkxSfm9gS1hHPV5MK3d6QWt+eyQ/WHdeSVhQQVlXfVIhMTJacGhgXkc9TVhETm8vVmU5a25CMkEwYXliQ2J+cVpxViFXSkJeRTYpZzM0ZnV6L3hKbiF5PUVk'@; put 'b3Jld1l9UWZ7L2RqSnRBeEV9XjQ3Qk54dE9HaiRueEw1XnwlYmh+LjgrKHF1dypIYEZ9fmwvZEVpYVZJUTt8RTtAK3hTSEw7aE85WU59MEJiNm1BWFd6TXVkbGp7IzVyXmRuXjMoZUQ2SGFWW2pMRC5UcUFaIT1OZUFKayI7JTBHZzphdDlKMFtlO0V+cHd6Q3FUWnZbXWxwR2whdFJMSjVaOVNK'@; put 'OiUzfmdvWjE6XjQ7XT4qeTNrIzJIaTNIcU4jUVBGO2hObl8rekMlR29DfUBuKW5DX2U7MTBRO2JgW21QO1J9VVNyN31lbXAzTioqKi8uW25uR043W1N9LnVtZE5ZNjdbO0JZcFV6QSU6eE5gY3UxenJCKHtpKX0hVyZkRkYzNjUsL2VYfjRsTDo5U0s4SU41Q0N4PCxKcmluNyokNnFRQ2lDXTRh'@; put 'TEJbXTp5VE8xd2plMyEjL2ZybClgYkhKMyJANU1+ZVVDdk17JjJuRHhuelo/eCMrKF4sPD41M1RwSHw1bnElNkpHTXApekVbVkdOND85RCtxRXhTcmM+Ik1+OFFCdENyTTA0T1RqMTlgQjI6IVc2YTwuMFM7P01CTHdpaHJ7c2BiUXFpSjsrTjJOaH12KypDV3glW0xlen53JX16TFtifVtgMTh2'@; put 'YHlGZlU9MGVzQlgqK3xhUzYsK25pfHlVc1pfZVUxfT9qPD9qUFhCJHZ6ZjUuMzpmQ3NGYXlNelpbcXAwTyphPz9GUW4iKCJjWmlVQmgkKlc8anZpfHhddjBiT0gvYUE/Uyl6UDp2IzxpIyhUfSY1d0RvJGZ4cCJPRzNkJlcqSzkvN1A0UVVQLklVUV5+M3dWUSlJYkMzcmQsZkBua2ZiZUdTRD50'@; put 'Sjs4JjBsRVBtTTsoQDBIayJfYXBJZD0kZEdaXmZCcDhsUjtPfEpPO3EvMTJiSjcvNH5zRloxW1NkVGRTaksqJClUV2ZlajJiaE4oTSUkcTNjbTBgPCNkSVhSP3RPXmAhfjJuaks3c15bS0M3UGw0dD56NSJ5UWN7dkJ8eiR7fTl6VTFYUCNLQVVGMEhrQUgmdSNtazMiJihfO0VPU1UsMVhqXz9R'@; put 'MiVFJT11TyN6MVFZcCE8KyJPLGRiUl5vUVVRUDw/aUcjY31OTk9LY2cubEYqM2w4fmF6ckIsKnljY3A1OykmTTtKenZFOUNpL1EpSVhHNXJ4eEtRIV1AO2l6THNqSDcycHsyPUBWZHl2V0pPMXwyKlFyMFc5L21IZCZFUHtxSU5Eazh0SVRyb1MsSTVHVl0uRVVoZ2RuTXMuUkh9aTIyIyxLRGFa'@; put 'TkM9dzw+Y2MhMW46dTsseHtKRmdRa2s5Ol1TaVBRXWxiNzxOOEErVDE2dHY4KVVCS2B6V1swemtTInpEOFJCZnBHayp3dUJ+fmZkaipbYTExInl2VWtnZSYlOEt8MmtQe1d2MTsyI2JDVF5HUC5BUjBjIV1aWyhRUyNWT2lkRlV2M3ohbF4zW0RIYk1nNXgiXVFwYnY+cTtjcFswTldgcGYqSl9Y'@; put 'cSFwY2F5S090e1hoVTAqfDZNN145eHgyeDNvWTpzZV15Wj5dWn4uUWgzMHxXQCYqZzxsRVg8RVlXdXtha25PVFIyLjslIkZPInBpSmhzazh6UCY5XihqZUltOVBKW3ZaL1c0RExmQ3UzZnxAKWlOOzRNWGZNJkVFUENLOHZGbFlFcUAmKSt8LzNhS3RwQ09HbXcwL1liP1hKVHU/LihdUCRYQXRt'@; put 'PEMzfHw9VH0uKWhYZXBIYiNTWkxPb3wxQjxAeHldOip6c2RpQUksJj9AZV5zT0dMSS9xYWVDX3Y2Kk1ofkhicEVGclR2XSJZR0hjcnpCRFZsTnoqL3lOSF5uZU5MXn1JLnNLN3hvVjRvQUsjRG8yRjwpd0FuU0NQXU5IYnxYTiwrKz9KMzd7aWFWOkFrWlNBYFU8XmtxW3RHPzdjQ2A5LE5GO1Be'@; put 'aFdRW3pnTkVMNkJ7ZD5+IjNBWyl+PCZRSzd2ZWApXV5JaVhyV144ViR3L0JXMk07bE0kSWRXenk1d3F9fks4M0csdnlKLGVNUE8yIn0sK3ssN2h+WE8lTDJ1PjFpKFJPTjIofEtCU0I9VCNQfl5wa2EmSEAkcyNdTjlYYHU3bjd5KiRddkRXaSUzVGp1N2s6cToiOlM6ImJkZShDfnphcC45TiNH'@; put 'LiE7b3FDNnVzKGRnUjpUKiNvfT5+KDNtOHJkJUpVXm1lTUw8K0YkeFdLTmlJUlhHeDF2T2hhZ0hCT3t1cnVMSlleSzUyPWVIXS9uJTM6XXExVFZsIVR8fUM0V2ZDc1c4Znl5K0QmWVtiKXU8NEdLS2FdaV1tKW1VPi5YPm9kXSpFVC5GO3pjIz9pMUB8VEBaRzRoemJfL0lncU1PYk9ebW46P1t2'@; put 'enBhSGJdSmtYenVDVlVsfjo2MS8wX0kvTG5aRjNiSEVFV2AsfjREeWhXX3guLmp9QC57ZW09Mi8iLjNaTlBmMlRuZytDUDt3WSkhKU5AWn1gfFRXbDleOHsuNDgoX1YsP3YhUjxhezRYb3FZKDRva3ZbLz4iSSE2YDA2NXlnO1cldUZ8I3RLKS4vKylxYTVueGdOLyIrMi51YnxpcUxmenhnPC54'@; put 'ZENKQCQzRiEsNiRzeS5yIi4wbFpEfjNYYjopaFo4ZUh6THp9UT45eFpIR09ifE4zeCkjTjFfX25mU3ZKTXEuNn1rZi5rb2omZSQzK2xfSyQoMVpIYnpeamxsam8+TVZLaX1MWDdYd0ZhU1I8KEshYVAzdlpbR0w4WDtlRVU1RW9FP2EudFZOXl5yI31fYV5xRSg0ZzE3Z0dWUWNRelQpejdoJV1p'@; put 'NEphMGNKbnI/OmxlYURqdj43bnhdMWtuTzhtZmNzcCswMHhHPF4qej9eQUJbbUVzYHkqYlRoTChQdFNofm9dS31heTo/L0BtSHJ8eC5mZjl1OE1xKU11VSYlJFcoWTB3XUM4RWB7TlRrSlVDNTRyWFBbNiV1TktYPiZkUUZMKzpNJEM8bGxUWz4ke1c7Q181ZiE6NCFPanBwcmdtez5aQ3F2QjEi'@; put 'Vy95UWo1MlJlQDROPSNAUURSW319TWgqSUUkPkdXcDVGdiQjVCIxXyFqTnY/LFo8en0sLyIubn5LaHhFb0opZ3p1T2M4a2FUfEBLTWs9KlY4b1JSRkZiOWchbzc/LmJqUG82Q28mJkBhMDgmM0NfVjU0PFhtYWx6NmA9OGAvYF42Ty4uR3B4TlJtK0JXaGQ/TU9TWyplZT5DeGs/OTRpRDd3Jm5L'@; put 'XWFKUFAsIz4zcWFLJnhkV083WHx3QEMlcmwvenI0TVshInZubXAiU299VEQ5dyooUFJaTWAjX2trWkw9MThgQnozd2U2dG5JK3U/UjxkRXw3RXI3ZkhPYF9sN0NyNnlrYzBZeUV3QT9gNTR9LFRFMGExWlBxdT9pKUhEalZMRXxLeHU0cDgmK1U7SlMiTXlUI2ZQdD11TV5TQz5BN1FIRSJiVi9s'@; put 'cGlqOnlMUGloWFtjSExZN0JDd2lAa0w3WjBGSWBHIT1IcWtCdmlibHRjRUFUTmNHN2RxXmJkLEdzOiheUTR0dkJLaTpySWkzIn1hUXBgbm83OFk7Z1IhfFJ5aTlNKTdveTRaYWJgcXFqaE5dSl1WVnU1KTQobHpjaiEqXnEmJjROPGN4QitjaEB8R1s6UXRSMjFnYlpIPk42dlhwMDN9W0wiPHpD'@; put 'U2g0NF9oSCRWOSJhMnp1LFc1cXAmKih0JkJjZ1FuaH1gT3M7UjhhPTdSdEl7YD9lRmpSKU9TRzprJnVscl0vaTc5d0BaXn4jXmJfaEl3en5fVWxyfDwwcnNSN2JzIUhLUUpSfTMkWHFodEd+PnJOMEBvNitHJmE3YVA5Mz5wInd8XzdYP19oIXFUW158dzk5KUtVISx4MloodHo9Uj83PV1zSDwh'@; put 'KFRGLF5RfVQjR15dYE0+SGlpSnZ2ZDh5b0NpUzsuN207b3xQQ1U3UlUyZ3JtUXltfENHVF93TE1TSW5HUi4qT1JnNilDUDpWX3J2ZXhvM2FFKmVwX3VPNkloMmd2Q1NRRWBobFcjdXs6dUlrT0FofGtDNFJtNSM+OkhgKlZmREBIUEJBPE5qZH5+VjpqbGtJN3lsTTA8cDMlQXFZejUrRlA+a2xt'@; put 'NDJDKyM6MWMvP11haTZWYyEwdUthLEkrdHs+aiVNVTluXl93eT1TenFqIyxdbVU9cFdlW3FPRShhRzopTmhpM0woa2NSWX42Wm0xSl5QPWZabD9XTlJBWXx0cmNJRDAkPS45d3lNe15sVD96WUI2dkF3VzFmXlFyTzE9Jis+RDZsO3ZSUEEwKEg3RzhkemVQdiV8TG07S3ZBdztwLklvYi8kNFNh'@; put 'dngkTCkhJEwmc240c1AuayxSMUl+WTlYc2sxSmR1I2RCPmBxYiM9az5EdS51K3g3a006bkZNYTZbW2s3UV9JRShbY189NER7XV43JlBkblQzeSptVnlkZVl+VmtOQ2R9e2cpWiguTUpTPFBRPl80O0VVZH4qaWc2K0pvSGtFQXRDbDpOQEdIfHpBU3VKUXFqOU03WD5+fV5pL00oJjR6aWVFOl5a'@; put 'XUxwS31Zdys9QytuNEEsL15ZXmYyZ2l7MGwycDBAS2xmKl5PeHVQO0dGPSIkSFk7VGt+YWViVyNgX2FscVNhUlciY0tAUkxMTzYjZGJzOSpFMSt+YV02JnM1fXE0T1J9LGEkLE9yN08uKD4oa0J8MkJ+dVpjQ2ZJaF5TeDlROEtwcjRnOSExcjtBO2pKemFkS2dhMz4yPWEmbGVYYjl2aGxoNmRX'@; put 'fHlkX2xsQVM8aitOJGRaJD0pOUIrKFhzUDVhI1lBMl9bVTpBc0xobiZgdWE3YWxeQDt9MzRbTHZMUWREeF8hT1QqMEJZMWVGOVp2OCwjJFM2UERTMT05YjVRRE90c0hkb10pOyo3dW8jVjhTbElQfkY/YChoT0gsM0dvJCxHfmAyPmdzIV5wJFlDNnJeRzVZRyxdcX5+MjZzd1NBYklXQUkrS2c0'@; put 'W34sYW04Vk07Z2B5eEwvc1R6cko1T3t0SlJfeWxQInZyfkhWakBAbkFvN20pPCs8QUkuMHo8UVRvXSVeWVJgMWdVa0Y9TH40fFtRUy4zdjFtSzgpO2hrW11YPz9NSmJTQil7Sk5uUC9oZVhRcnF0TiklP3h2RFpWa0o0KmQ7I1h4RCVuQltld2xKLHVGL2w9SkYrJn52PWVdMVR3JUVab3t9KHpU'@; put 'bi5VZk1CfHtjL0whPjBlSiNLQCF5ajksW1JoSGZHIUcsOz14RE9HUi4zY1pRYUB4d3kzI2osRFkzLzdQWDh7YSNsWHFseE9sS3lHRkpqSz0yKFhtNG90IS9eeVJyUjh1O0t1O3RJfUQrUFRpTzU0NntSeHlrY3V2NkJiK2hDWiomK3VuT1NJbis6dGs7WDAiWSlmdSV7X1NiZ1RVSERuNEtGLjVx'@; put 'bjZTeGt9YHd0akliIVpjUE5edF9QWF9kNElLJjpsPVBYOFJjWFtZbSt1VlNDUEZuKG9GPEJzTV47b0prI21aZG8kTyJxOzhvPkBpIUA1ckBUOG9rM0ZnT0ZiVE1vSHdPckhxVFFfRTBLL0R1YF1YOzwiMUQ1ez4qRSFGT1kvWSgxYUlbYkU/MFt0XVNTOntkOUpwJnRfZHdBLzBfdzZgZzpOcE9g'@; put 'cHUqe3F6Oy96Y05CX2ZJQ35BeipqZCJkKE9gOFF5bTgkRX4/WFl0cyxTMlBHM3g8RDgybjpwczRKWzw9NDUmRmlmNWFFMTlbVmo5Ol5+Mz9vRilETmhbK2BNSC8vXW4zYT1JMGBSOkBYVE90fX1RRG5rSldIaDY0cTxLV3ImZ1hMJjN0UkA1NHNWZChdXktSdHBENzhVQ2xnU2IvYHNyL3Y6RHxN'@; put 'IV8oU3tPYk1WMjQvWyx6KEZhOTAmJG0lQmZFVXZAPFB0NGUsdnFNY2tMNG08T05pcEh3NDRkO2N5YntST3sleiNZOTMwajAvRkIvSX1mQCZZY14lTj88aUhUa1BqKSxLSH4iIXIxYUA7bkV7RGdrOUB5ZTt4dV04d1JZUCVQXTVCIWB0YmFGVURsPzdTay9rezt3KVZkbXs3ZnEhOGJxa0JoOG1i'@; put 'dzBGVH5oJW1qbHgwfD9yRkg0eH5nOlFhYmVSPFQlSlVCWzh9PCs1O2xoUW1UfVNXWC50MHp5cCwrIW18MSQhJVVwSXN4SmE+XXdwMDAvYWg+Oi43cyFFQ3Q7dWVlTEMoX2d2LiliMUVEc1grK1R6U20mNnQ5YmFwPytkeVljOUlJJmhIbFpPYlg9emR7d0xjKTxuUitlbkkjRipVNSY0UjwxOEYq'@; put 'aTN5VlRxak5ObCJfNjMjMnFyMHgkLlsmMn4hcThoLCozbE8vWUJXKnw3XmgqUXdoMCRQcGk9dnE6QHBZNyhxfCN4MnY0TGBFbVhxVGlgXj1NWyM7REVhT093ayp9fEZIQ3Y8SVp9eURzcDokKlJoNCg8WnRJXm9JQEdZaWRPUjRtR3B4M1V5Oi5IeXsrQCM9UFRjbUp1aENEKEl5PSlCPWVXZDxy'@; put 'JikoTj4/eTBnJk9hYnEubHA+b2VzfGxvMSwiPn44Kj5RUiQhQD8mWEhQI3IueWY1OV0uJDFZcSwoN3IpLG5jR0cqQlAjY3Z7amIqfSlATSFGKVBle3l9aHp2RnojKmZNXn1RZUBncUtbbn5rRjcpSipSJUFdYnUsPSFEV1dMYEJnXXxIVy4/azpTS1c9KWhoTm1lc0cwZXhFOG99Nmh0VHZ8JE51'@; put 'Xy5Yb0daSjpxK3suZVc4QjB3XzQvZj5OeHYlY0YlZ2FzMjVXODhEZV5UcHojP3wmQyRLPSJfWGMwKjMyI0BpeCtMazIpPVY7XTZbNThEaEI5LD4sVnNEciVfWHJAfE45ZlBNUiF2bmJeZWhKSlA9LE0iI3pFWFNPUWJGfW1nUT5DcmMwOihPOzgxUGtBWSFicEtYR3EyR1ooTHNSWC9qT313SWFG'@; put 'MWNnOl12bDp5STRUOUdlKFhGVHJAYGdFS2pUfDlBa3xUJnIhYlV4VzZCSEBUJGVsNWIpbz5aYEgoMTV7O35OXXFvMXxqWGR7TDs9T3tlOTpdQWpaak43XncmKzBAdTVAX2BYaTcidl5dJGUwbEs/UVp2WE1pO3FVdjthYzh1dl5uOnApPiNJRiFyKlVaKnAmXVZwKlZmcjhDVENWXSpHTW9SLFg3'@; put 'Xn5HPUtWcCpALlQzd0JNaE5yfHghPk1pfVV8SnlxLjRCTWsyVy9oKEJ2TH06Pz5HPXIjeDwrLE5pTXtleDY9WzhXYzglQmZ4d28xWWtyZV5qTDVHXkk5bzAxUz8uNSI5Tm9nZW8kdjh8eUxANHEhfG1mNEJQa2FWIiZ8NywvWjM2TUFkNTlSWjAlX3U/XishJnEickxaZT4zQ0pxMUNRKz5VWjku'@; put 'NkJtaDJOOmFeMWJmWkpfPmM3enJIZGU6cCZCYGQjZ2c5Li9vNkpbaTxBMGVSLnQrTmFFLnkrRzcidEBCQE9aLywkU0kyPS9rbkA1SlU1cGdoJjcqM1k4Kj43RGVPbmU2cD9mVmhFZ2FtWTkrXSo0VSp3RCxKcjhRZzlJcDFlUGh5NFUodH11JU15LEV9cklJTGVOekYxRjxyYHg8UyskZ2lUUmEx'@; put 'WVJfVFltS2slPGhobE1SYVUxYTtbJTlYZk05THImN1gxcHJOXW9hMk9NJXQ6JSpGVWF6akMjcV1eVXRZanFxaiJsQU5HLCQpOiolfEJ5VGlXaXJpQ1ZCYmckcnolLnkqbjtFOmFNeEdPSTlpRkM4djFOaEk9YDBTeTtZWC9rOSVDZ2ZoZjNSfnw5VERiXzB9Zk95S1lieWgmRmo8d1k1TnFqI3Zf'@; put 'IUt3RCQqfEdoNGJeaDdwXT9WU1RMbG5jP198d0o4RnpYfDkuVVV4ImAsYDthbGF+ZClHbXlFRUcqdj1bZGciNkM/PSosWVBXbkxmdkRgS3lgO3R8ZDBjUEY+eCRHJjRoOUdRYTwjLns0I0IlOUQsNzhRSnlLPkNOV3owQ2RAOyZtc3BdRUh3UWpPUi85dklHUTEwZjkvdzk/PHplTTB6e2x+ZGo7'@; put 'OU5meyoyaCRsUjN5WWRfN3d+VUVwRlNMTlpoJWtnMWVdYGBxI19tLnc8SHRWajFjRWZ4OXtJL0E/SF93eSRxRlNjWXwrKy4ydnJecy9PZHAqTEQqQU4/SzkjdWJFV3t4JCEsNSsoK1ZMRVZfbk53bj5Pcjh2XUArSio9WzFqUUJKfnA1bDkubTgzK0dlfDJkU2xrTWA9QFc7VHxYb2o1fFFJPV5q'@; put 'TlVDMy8mOVlHak9bfEBhWjtmXj54MWZ+KTJGOHNqO1IxS3JvTX5SdXxDKDV+VFY1YGNZeGJhTVU0QVE1ZHlzdzZjWERXLEV3UjZ0X0x2XXF9WlhxUnBjSDd3OzBNfiksTV4sNyJlTStIXSUweFd+TzN+dFI5OThNOExNIkNadSFGY0BYInAjZTVia0VYUTFTMUosKFRJSDFmNVJleUlDTnFwP0lw'@; put 'WTtTYGNUaEtbSz9Ra15WRWdeZV0ubmhmVnk9YmBDJHJWZCpjTzRxdmNoZ1QhfHlPXnMwZGN6RCZ+d0wpc1lLKzQofS5iUWwrVzZTNEY6MWVqTT1zQnI+W05BUDdtKzc/Vj8yaUZ1dzx3M3NEOlplVjRYMCtxXWUqaCMiQ1R7fH5bYSFbLlIsdU90Ky4lJTIvRjAwRE0+QCFzUVY4dzBwUCJrNTh8'@; put 'L3I1QjEzRUQqU1RAKl04fj0uOCM+X0g1d0RDcVh8TGhXZTUqPVVkayg0aD4+S0k7RUIsXkVTW0VXbl5FZntbXnZiLGYreTt1alE5VnJ3dUlDSDRDel9BaGpIQDAxbGR2bEdQPiFgfnJvM2pFWEQkQ3ZxfiYrfFAidXpbP19jQT5POH0xOExuW003aDBhLHVZaWVIK2lCXm0kOzEjWD5ZUEc4RzJq'@; put 'RW8hPCp9IkI7OyNia1RjOm1tdlVRRywlaUo4W1BZJT9Re184NDsmXl5rcy4zPGFGNCRXTWF0bWckdnw3d0skYE0yfWhoWkd3UXwlbiluVD1ANXxsaiN7Jn1oW2pOSUs1ajY1aC9vSzNOKkpPc1ZjXVt1UkIpJlNIWlI5dWQsTnw5SUFsPHZrJUB0WkBWPztYT1pvY2pFUndreHVePXB7ejRbezlG'@; put 'OTM0QCs/VjclUVdfP0lqfUMre2gqd2o+cH5JTCluWUJ1bTk2TDBKNFUoO1YyZ1EiXkAsRm9hPiR4MmlmciJSeCFvZmpFSX1mbTFbPy5QNmhGXT05PCtedTN3MFc2fDlIO15faHQ/PkFMN0JKIzc6Rm5+UG5LYn5qZHI5aClXajs6cmpiNEBrPEgldCspV1dhY3srdCssOEdkUnFRTH0odmZ6XTh7'@; put 'b1lncEBdJXxiSnIwNT5XcjZ2RUdbR1lLYXgvKSxuX3xpRnk/fTk1YHdJRmY9OiVKbXtTcTxiaDkmQlB+bz51XUdhS3VmXmxEJUBlVFIxeXUxbFlKRH4rfjhCPGdOUUpSVmx2LD4vSXN4LmlgT0NNajc6diNKKD9aXSYwJV9GWlo9IyYhdW5KTzxiUSlnMVJjPD99aF5KcS5RVXs1X0ZVPXl1fS9l'@; put 'Z2RnJHJLTFYvQ0k6Szx5JC4kLjlKcmghSUxmWXMqQ2tKendvMVVDaGshIX5Kdl9CYDxfMGRvU29OOW1aQ1o7LGtVMkNwfV9QNjRnOnRjZkVrM2gmekFnTUk+WXNHVDgzNHtLMXJyNmlxUjVYYW9wJmc7K0huU2NWeVteWUFWSWB1cXx8Wl44OE1GfWU3YzV1XyJReERAYiUkJEg9PmtNPjZwMD9U'@; put 'NmFhNWxpQXt5alAvOnVCVDkxUnI3SVZ8TWRIc25SflNZX0dXRHssVzxKW0Rfd1BQJEdzcEdufTJFKi4sS2pIYDpbNTdAUCh6IyR2YCU0dTZ8ViovZVJrWVtgQH5+O18hLDtbVzAwIjRaekt0fFEyXU9rO2BtaTFLS0FTViI+X3x4Rl1vN18yXT9lTCQvV01bKy42PGYsNy8pUVtESWBNdU0oZXVK'@; put 'RDByQ2R6KU1CM2QiUTphWUhZS2BMOHZyS1RaSnhlLigrUzNVejQvY256I0hjLjluYzRUeTYoNEJ5dCMmSjlwIVY9Wn5Pcm8rfEIqTipCN0JTem1bMExULk80SU9Od1JxPUhYcEZ7Qzk8ezl7alheL1hqJWtQKkIodV52YTJQQmc/bEB6Z1dFSW1vNTgqUFZ7MSgwXmJ0PUFhbWt2cyp0eH1gZWR9'@; put 'ajgsVTQ9JmNhSUZETTZ1QXg3fHxhbVlUVlVbMmJ3TGgmPVkpT05vfWRHdkFvRXdzJHVIIXluInxCNkw9ZWtYU0V0Q1RfKC8mTn0vZmtFIkZeMzQkTUd8RmFUPk48Wmg1ImIyKSxVZysmc2pVa01BYGM0Vih2cFNNPmxvaDh8PU5ESjlqKW90a0J2Rig+OkBeMmFzWXVxKlZQdnhZam5SVENeT1M5'@; put 'NzJJTUFHKjoiXTJvTT9dQCljU0llc0Q2QlpDLEVCYyI6byhOej9VQ3Z+RFVJYjhgWig8JmlFTiRxW2d9fkZ2cUZtd1M6UyNMOEl4NnwxQGdMYGBeWHUjQGxgNXxMbns3QkBZblVuSGMuckNVb29LQD5fTkxCN04zOT4qaSxLdiMvYlJeLF0kbEFkJiVXTUhTJGMyQH4rKlAwWF90N3xrQkIwJFNL'@; put 'Ylc9a01GLDY3IzordjFYcnE9aWg1QEg+O1tnKmRAZGZAdj92RzxkK2xbR1tLLnMsXUJVQEQmS0wvQGNRMWN7OUNkInkmb3MjLGNofmJdX2YoOk46LjFxRCVYbnReWXModzBNX3h+YzB0Zl4oIW1oKDUmM3dWVmE+cWVMQzB5WlZIY185MnlMOmc4RkJjJVlfJWx1LnxvKlJvdlcuJVJfPldebHpr'@; put 'NnI3OlhqN0MuUCkkOCJUOVdwa0ImYXsyKyFzWndKJGxMLE9aKzNUZHQsLDZHTilufUt0WFoqRGU0bEg3QHldTGxFLm5jX0tAN04zbF9WRSp1ZClUYllHJGslOilpclBYbzgoVHhbVVd9dyM2PSFoRipnaUQqYFldSk1Te0ZhNzdIMXdIIUdSc2c9cUc0RCxuO1MiezBsImlnVmlJel81UzkwcjZk'@; put 'Vj1reWkrbj9QV1d0LypLV3pkTHYjSDs3MkZ1N2c2JjtgPkAwNjNUQzVibTAiV0JCTytvbSMrN1t1Ul9sMXI4Tz5xLHFGYWpBMTo5dDtqc3gqWnx5ZUJ3S0ZRfSxZOys+JCEiMztOfSNERmgkT1QybSI9WGwrJnwxUTdhRiUkd115c1FRNTtMQDlSd2srdVhMM2JpRDB2dE4kdH1nPy9iVXVXMnBI'@; put 'RlZHQil3TTp7NlhoKEl2aUlhVlZSUSpdZTg2KG5fQEY2cEUydUF2WDJoNWJ5fGdpZT5OK3IlJnFpNHZwKzIiWDp3YztafW04VVV3U3F1M3hHfXVtSXhwSC9BdzJHIXFub3psRk9eRCVgeEw9N0xyJiRmbTdUNDJiJmYpcSUoNnByYUV+XjEpeyhvS05EfkEoT2ZzUHU9QCpGKTxANW0+fkVeaSh1'@; put 'JV91ejolKXYhfU9JeE04biFRPTUzLi8/Z2xBWFcjMmUhalJpMmVVWGU5V0gpUD5jXkU0dTA7PW0hPDE0LyN1Ui59fCxeQm84bGl0Z2hdRjtMTVYzKXsoIyN9ZUE8Nmo+TmRgOlQsWTFYalMqZnNRPn0uSndqN3JoaXdTJiN0fFBrMiMzQClDTSVmKWNkLkUhVEYzIz91RXE0KjxNSERXSFh3KS88'@; put 'JCEzLmdhYCJ4cCw2a2xwdyQ0bExufEhDN3t0KklCQH10cSt0aFt4bFV1YlYhcjFWalhzYFMsdTE1cHZ9SVp4RHd5dn0xV0g8ZHVhbE91ckxTfmo6MldiMEZXRnlDVEloK2IzS0hBTC9qelVHMzo7LlQxTHBjbVZWNyIhe3JnU35HVWc3S3heInlIUFtzV0kzcm16bXR+QDIiU2tBM0EkVTYkJiYw'@; put 'UkZrKSxac3xKWnMvL2d+cE4hQndhSEQ0ZV9eMWspaV1iLllLT0Bvd2p5NnxkU2o/OjQ9LmZMX2Y+YlhxQ1I0SnVGMjkkLD5aQGZ3fll3ZWdUYyJ5JS9BVld6UWMjUVFoJEUyNldxbUIzMU1hRDNDX1djPUU/ITA8clIjO29YUnBZVmEzQVB1endecD0vTTE/d0tGP1FDMVkpNjV2cjx2TldqfTtb'@; put 'KWtJZ0ZqXS93W05Ed3hqRXg3WEZ5JEdLS25xMipwWFprI2BFWmZoYFpZXXR8Sl5KI2V6XmgkJFYjYj0/ZiFAREgycUozRGVoOio7bF07ZHZ4OGl4Z0R5Rl0rMj9hKmAzVnZCY31sbSFwUVVUS1h9Jnw+Z3pTL0NDPl8pQmFTMm81bz1Ba1s1dH5OR2dSRzg4JHJpIUNBaXF1NU1Pck5eI1FiMV5H'@; put 'aygjYCYyPDYkZ2skJH1jZikobVE4UkIpPGQ1Km4zVHswc1JWez5eMyRJWWBqWWBVd3FWLyIvQ0BPZUU5Xz9fKnFSJXhvTSk4NSpfb18pYFhCMjV0Q0hFJGg/SnE5ZHpQX0NsKXNiMSZSK0ErSVh+akV9eUZ9eTcxZiwwMUlffCtAYmApSk1nMjJpelpeeHVWR2lQP2JoMEdVbkZRdDtWKCQld2p9'@; put 'a3B5Skx7dz9YIm5qOkI8TT4hT3JUayUjYzklbjo4S31DX01hRURNK0xlRUV3OE9KZ0hWS2hIR2JuVyM0eVI4cTFCTmpwP0lCcnYyaThdJkxqOyF5dCZKN1R7RyxCQCkxcnFgOVs3REdJPDVhUyZkN1hEZ05FO2M/aGxfPVRnSGxzaCQiVjN+ayNYUWBbQjZ2XXk5UFA/MShpXStIJjdSJXovLyNF'@; put 'UG47c0pPeTtHVnxGKk5CXT5ubiYiRDYwMnZhP29OQUFyM0hzYytVJTtbQGZDcVtgI1owIT0uO1EvVChiSlhHZiE1SSNoVnA+QV0+WltlSkZyQngwNCtTQ1dlPnFVcE57P2NMfjs6SElKNjZNInRiJD9dW157JDtgXl0kLDFReFR6ODtkclcvZlpUblpZe3VdJiMudDRhPHg9QS9GdiFofVpyNHgx'@; put 'e3FuNnhMb0R2allNUFMpKzdAN1JqdVJSLmlxflZfVklwVVR8OShtb3xfPmx1LG17QHMlS1V9dk5fInFkI28mX2pFdWUhLGU6LmRxO2lXVlIoV3ZmfFhdckU6aGxvbkBGcHZ7SmdtS2JDRHwiV09MT0JOLkV6aHVNNlhnXmkjaTw2a2tyTEc2O01zWnVHVD9WL2lraXprdmpWXUNZPkd9OGtySlE4'@; put 'VCsvJkJhUk1XRUR+YCQiP3Jze0EuPHcoVi9OelBMLlIyfHRJI2lZaGpZNWVuJjZQfCpVTHV3SHhuWjRVfFkqInB7ZmE6TCQ5M35nVmE8NWM+dFhTTDpJQy80RGphVGVzSzUke3tYL05rJWpIaTBYYE1DUVlDI3R1NXQ5Qj1LZkR0MFMkI0coWjA1I3N7LEY5YUNaL1J1R2tuJn0/YT0lJGcpPC5X'@; put 'fWJlaHQoN0JYTlU1KjEkWHU6MV82e0IqSF47Y0BEMjVKbFM4O1FFdlcxbFZCXUEkfT5SJTp6dDpkS2BXMCRNUzxgc2NtMnhwSm5zUWsrMGBWTDUobiZjZ2JGO2VPa309cz53TlkxJUhzKlkscTY3KVpZVnB1K05SSFVUQT0pKSxkej1fInsoOElVY3wibUNqT3xhVmRyP0ZbVjNdY11fRmt4NHQp'@; put 'Q29NLFR2ZmZhb2lrK1pUY246QHlWM3E+NTFvUWsrISN2NEBWQjo3XVBpQm1pLzhTfEcjVTw0T3tTeGdMI3t8S2U0MHVeem9Ge1QqPkZPfTtCWUhFSVV7c0ZQTzV8alBTNylTSChaOUZvUHldJTl8S2NvIztQOX5AfjQzbUJMWUpXPHE5TH1uSCpAP1sjdVBqbjVZdiZoeCU6I2BsOUc3TiJhdXwq'@; put 'Pig2cU59U0w1YzZSbXcsIiQ3RCFvSFtKaHRVIllHQGAwUnVFc0tiaSlaaVEuYzkiYnJ0S1VfYDRdJmpZUjY1PW95Yy8wOk1tKHlVRWJLSyFofnV7Jj97NkZuJTJdJEh2PyVIcjNmPT1wO1d2fl43fmduVDlqdVNEXiJhRERUX2AvM0RlUGRpJUs3MGgsRmxKL3w9SyF7PElRcio7Uj5kOUZGL311'@; put 'UTk4KCtOMGEmQ3tpemBsVXlzdn1xbmdmLGtkeUFpMHRmdDpCeHtxQUMrOGdTM1pgR1A6NW0kaUFuLCwoUEpCVF5mKH19aHRxQ0g7XzBaUl5jSkdkMH1dJk1LY2xwNGxWbV8jO3A1eFp+S3tXO0RWMlAqLCwvQltxZ2c9W3kxfDVUenZnMTYvWl5YQ04+bD96WCFdNkZKK2N1WyUmOCpAeWIxWXJS'@; put 'JDRdVHkjW191W3B8Umw8OlZ0N2JXJkQ8QylvKntqNCFfb1lmWzdpbzdDb2YvfDJvLzlyfk5WN2F1cXZiKVsrZXp8SDd9TGxdXj47cHoyOHs/STIkYlhjamZDNVlqXWVNPjVNeSw0ciF6Q1ImTndmYkZrTF0heilzUDFPbSt9Nk1EeH17VjloTEk4Zmg8LC9naD88XkZRUVNZW0lvLEwqWGNuXmxY'@; put 'Vzc9X09CM3MwVC5JaWJ0TnNXRGc6PlJzTEkpS1IxXV9UY0x9Jil7bG85SkAvfi9+UW1gWSohYG4qOVFMNHt9fVRHWFk/ampjJi99UEZvTDsrQ21aMF97VSgvTW0xeChAXTQpTyxDQSx7dS5OeF4+YFtjZGk+Q3J5S0ZzOntYVGlbKzdjJjs1XXpQPD88TDwhc0VCX2Q2SllsUkp6dTh7QEJZOyNf'@; put 'K3M7Jjg6MChfYGxOISRtYiFeRH02K3c4XkpGcjpoI1dyLzUwT3xqdFouOlEsUFc3REJoKGZ0bHBONDErKUNpYz5+Y3BIcHJISVUkNElYbnRmbTd8SCkofkdzMTM2ZjpCfSEpY1NiWmcyWTdDWyZbZTBALmRxPnRwSHV6LmJ5dmgwWkJFWF1gWTozSVtSQWNXTV0oVTdUUjRYSFZwWCI6eXkpQnc/'@; put 'RllePiN5cSJmO3RvKGpdVUVgYE87aD0udn4kS2ZDTmpATDZueioieVk3YzBLc1J5PWR2b3hrX3xIcDRgKGM6WlQoYyJBUmkpI156PDozXm5wV308aGpRO1soQChkVFJnRDAvVFt+OCZ4PXFtazV6Q28ibHV4Y3lXd1FMajF4KTdoS2w/bVZ8XzJ1ZEUsdHNOejZiaDRaeyZnT3M/fFVALiMsRygo'@; put 'QkpIRDZKeiUxPUJLXTRqJkBYPDJbemdfPFNfSVt+YXUqXmw3MXouOUo1blZvcFZaOTNteHZOO2hNeUtjSWZpTy5CPGcmc09Wd1hTRiVXeixSZiVrTlE5XlRbT0FLREZaPmN7cnd4e1RJRWtnMGoiLm52eVVGdTI8TitCKkltI0VdbilYPmJtWVdmQEtPNWFtIV1+KXEvJH1keWxsKX0+ZGpZIURU'@; put 'ezZbdWRJUFAlJlNiSDlpSTxGR1pdIVg1VmhkUDVtcyFkS310YjQ0ez8zfiRfbltCMTRBTlgwVVVEUHd+RC5NO3J2N0ljR0A4aykwbilXOzpqJWRqZmg3TiFANV45ejpOb114MH5IUXBKc3Rheypma2RgYzwvOEVCWEt4RHE2InxzQ3lmTFpqVVtYLnxOVVh+cnYqM1pfey9xIzEpPGIwcWJRUVVN'@; put 'Si5PIWR5bmdnUlZHQ3IxdiVLMjk1JkZ1L09vJnRIdXI2YnNgTDNbOF96Uj9CWzNXS3Vedzc/Y3N9aD4hYktEOChoJV52Mz5uQEJZOWMvNlkoZismd2JfZW1vVGpmUGUsbl9qTThJaU03R2kiYTI7LERaNFp3fT4hRCwjSEQ1SHFlRjMhRC9IazZhTU97QmRNb1M/ZVpMSD84MztRRyJPMXpMcDwh'@; put 'czllaSg0WHpWIkFJVkBPVkxEcDJII1ZCIWc+aylVMno3NHpWfV5dL3cjfnwzRG92I1pbSU8xWUciODNSeTYkTTApZzx7VFJlT000Sm1YSWtFfDVwXzlnS1hLKmJkPFJqRWlDPio1ZVguKTBOLi9nbCUjdStJYCV7JjF6dyhNYVFlLkY0aCMkSlhKP1hLVyV3bGRuKHxlYn5lWyFSXypuJnIiWXh2'@; put 'UC9bZHtLMSYmWDFqdXhKOyt3WGkkUVR0VHhCdGdeJUcpMkBIezRebT04alk3R3VKX0M8JFApW1hFS3crMCYlX3ZUI3hSRVVGJXFaWz5JY3kpRypkO3deL25+WCQ+UT58TGdJIXJLMDFEaEN7IV8lM210Vk94MUttTDx6YlJpMyxuIVJmb2l3RHBnVCI+TUlNSC8+fUtdOXJbYWY5TXNXXWsyYnks'@; put 'Xz4ib1VCX0JaI2REWF5rQCxhUDpjOWFkJVdsU0Z4YENkM3ZRbnx4YUt2UjpxcTp3OUMqdyt0citEaW0hPWh5VSpCS0dBL1g1JFBFaXpyS3EkW0dWdzlsYzVvNWwkIypFcyMhMEVEW2NFPSUjPXhqaG97XT1wV3J0aFFCM1QocClMRGR+NkBsVyJZeGlbOSlKKzN8NHIqQ0Y5VCNKfWFhVSo6MkEx'@; put 'YHtMSHdibj4vMUxQZkNRKWwrP01ibWJ5WVc8KWIpdkohV1pMOlVQWlR+YEh3LjgjcGdKX3ZeSyRsIlMlPTJyRV12WzFRdUBSOT5QS3R4M1RbZm0mR3E3TFZWRjZXSFRlSmlSfVFSWHpPSmZvYntJQWdGeVJAVUVNUTQxO1llWnFINCM/cCoic20ieUp5ejdjQlBgY3NIOD4hS2l0YT1SI1NtU086'@; put 'YyxbQ3x9ImVPPXBjPXgjJkxvWmlOS1UyJSRyIjQwUHhnVUMrcl9pbFI/OzVMaXpXNzBfaiJKLEZ4TlBRSiEuQzNvayZBeSNPSG5vPGNZVXF+O1csY00yfXFFI1R8Q1pqQXJNTXptRGkvem54MF9deGlAYDxoU1o7L2xAam45ZlUqcGA2d0hsX0p9a3w1L0V1L3p8Un5ySzJHO0FoVG0lSWs+fX45'@; put 'bm91UiwwNSFUL1hIK2l9T2pAczsmY1VEVVVFX3ZrLF44Rm5palA1eV07LnpDPkgiTTE2QF4iUFVWQStwOyg4OWw/UV14P0tidHxBai5TRVNqRUpndTx6ZDtxfERuOV9MSzJbekRkK1A4REQsJnd5Wj0lTSNZQ2hfdlB1P3p7c0lRdyhBOz4oeUJwYnlzLjglIn0yUCMlcDJvMGxlPW9bS3h7dz9Z'@; put 'QE96SkNFI2BVPGFgKmAwTW9gP3A5XlRSLHx1S3xlZEtjPXUjOSY7TTokVT0sU2lsSkpLbSJ3SjFeSU0kJVByPWZ2REsqfV0jP3I/RTljPWQ5UzNCRVtrfmBhN15pVmAwbzJ2VDtCZUo9YmwoOnRCdDxDaE4iQjt0Wzo+WWcrMl9dP1F6Rm9YP2wvOT0pKFd3ZGJwZ3FEcEhbRSllM2lgWGphUjtO'@; put 'TmUsTW5qRUskeDosdGx0NksoOSRwPEFlN3FTImp9JF1jeE8odV45UW55Tk0uMSZZU20sL2pbb2x1WW4hVTxAYzdjT1U4InY+KD1EUUd7cz8uZjxkRjVZfFU+TWd0d21BYyw9WylxVGszeCpYekxwZWRiIyIqRChlflozO2UxW1NAXWhIcE5lX10vd14kUnJxS3llSVp1UUdqYzRvPGliak8uRDtI'@; put 'YmZYPyIvNi5fN2I/Qnk4VVl3Tk1pT0JXY2xhNGdhQWpDeXguSkpHIXUxbDIkVGouc1RNIXcxeEx8emN+NXIwbGIlSG1qKCJNRnJ8aXIjJEEhUnk5ZjYwWGNic2VYfn4jZixNa2s6YEd9YkdYeSF0dmcyZD46em0zW31kRTQzb0RYfiZIJUlxS1NKYyxvRm07LD4yUlZLZFtRSnYoL0FpLy9aQmMo'@; put 'TExxRV1vYlMhSUw+WiZ9OSslZGR8ZWV0OWxuSTxfR357Qmw/LENDZEIqayZ+VDRsKThwOWxQbiRoaX5bdHpKb11UKm91aGRScV5Ae11lUzQqLj1jaiNyLkg5QlBLJisjQGJnMzgrI2I5QCJ0Ql8vLEAsZjIqWGFSJXZKNS9jcnNqdUxwdHwpVHF+dT4ye0MxYCNSQHZKfFguXU1ZVHd5UF86Z2gv'@; put 'RFEufkRjbVF0O3w5WCVEaUp8MkN5RWRbMUpEfD1aP05MYChwZFYlRUN4aTpbMzYhRWh3OXNfQShHNGgmPV9QV0hUJFYrIzJfO0ZLRWAoQCRJY0hdZD06MkxFcSp2QUo1UiYyXyVQe1hCM2M0SzBFUVFSUGxMIUgoaSQyXi9tS3R7Um4rOm1Ue2c2N2lMTF0qfC9BcH1yLGJQRFAzfDciKkppeHNg'@; put 'd1hZS3lbOnxWJU52KVR4amAuI3taR1tQTnErRUgxNzNLP2t7WzB7Yj1ael1hRF5XSn55OF9YaHEzO05Cbz9zfW1IfWVXelhUOWx8LzB4e3BwKjNlQklNK342OG5ZOm9AdjNYWillS2FXQXcoWkNtVmNKQndsdlszbVRtRXxxJV9ve05eUHZ1KGl9Y01wMDhGUEFhT0t0WkhLJFFUa1gxdCFMRFpJ'@; put 'Y3k6VTNucCI7OS94QVg/UElneUpxNypHeTI2K01qelBIQzZ6QEQpLk5NaWBUTDJLS2Ujbm5kSnt0SWJ0MDZKdG0hVjlEJl1BLj1BeHtTbWAyZFpta0k8PjwuMkt1PnU1PSFgVn1xSiFGTkhxMDhfPkxFMnF6M1NaSi5WWyRXUDw9XSpMPzEpZzp3QnY7TDlva2IqQS9POWJOTnlzZzBve1Y/OSEh'@; put 'KkpUe18zdTRlaDN7Tl8idzVSZHQ6WiY7Rnd+ZnxvQnlxNTg7PEdYL0RLSH5tTXQmPVd9V3JzWHo+OmNIKEJUZ2k0aGowejs/YiFKVTx3RyYxcFB6bVkhPi9Eb2NRRE9TbW13IysrVjZrezlsekk8VU1rPVFBVk5tS3JCUFYpSXBdNzJYfWkjfERpKzxgPmg1Q2dMX3FYVVJKUD1rMTlLNG9rKkxH'@; put 'dkAsKlRiT3d4KlBKMT47OGVaWjE0JD9bPW4mJWo6K3pOM1QzKVgwS21jakBJRUBDPn5OPm06cz1AS0wzNCg+dHEmeWdVNXR1Ni5wT0FsSWtkNyY5SjtBcHdTMD1wYF10dmJLWWMofmNHeks4dnVnY0B9W0x6TVREZzlzJVdjYV1sdjJebmE5T1JFR3I/I04zMGVjO0xMZi8qSi98ZTZadX1IK0Z0'@; put 'RWwyPlQzT0I5JHB0NXckfHMsPEdtaUlnIUQlTSVDdHtDJl4pI1h9JlJHbmhaPktgVUU3NnRnL2hgZT1TT3w1Zko8Kz9qWypPRFM8VStBIk12Mm07KTxQRFtUP1FhUk5AImJMZERqZ2pKTyF8NSpTKS5HaDJ+YzxxPjo7fnN4TWxWSD99UVheY1J2dDhTQDsxVllNTEJGP2Uvemx0SjpXZVE7QWRH'@; put 'ZjAoOiVFekxRVWgmOjBnJlZ9XlZ3OC9ETl15YDR9UV1TXU5HcFIzWm1vMz92UlFfRitxQ3sqalVTY0BCVCNvTSRbTmdnWGx1TnsyJHImKXJ+TS9MITRXYl1+a0siVmElM2xyYmY0a2cuVEsoJWx0KTQmOlJ4PnZgcFtpVm9QUnZhNkdhKT8yUGJAO2dPNDJbSk9OPU42e2ZjW1NDanBjQ1UqZyop'@; put 'TFZae2FncGZXUjE5Pk8sYVF1TVpwJF50fHtAcDxCfV51ayFFSSM5cjUoc2Z8XzZOVmskNztYUk8mSGY/VFJsSzN2VzYuSEdoVDp5M0NMU09+QWlUIngjcUJ8akZ0aDhAVGB5T3BoZnx2MGFyNEs6d2g7Sn5TXV0+PD1iJEZUIWlWL2wuPk88Mi5abGJ3OGxMT1IuVVBweFkqYDQpTUM0bTBnfTgv'@; put 'NVtmWXova09wRD1YXmEme2xLJUhpVCUkPSM0JD4heX13OSI0O314Wzd6R05JQ0NucndgXnMvWmMkTUVVZCgkVG45eWgrUkNTb2FkNHkmbDhfLFs3aTkpPFUyTihNTVFkd319MHlCRi5KeWNBd3FwaWooXV98bDZMYXhUVm0sfVdTSHNffFBjcU1FLnllPCV0Vlh+PGVteVF8OnxGOHI2ISpGUz9e'@; put 'bHg8Mk0+KjY6Li4uJnpPYE98T252XTBlSGhWXV9uei8qODk+RTVtJjYuQmhHLzY8fXdUbXM/UTQ+PkYuRUEzMHQuM0pwby5oS08rJjdDK2tCWnJ4PWd8PiIpVzYjbGs0VkF4Ymx8MGVKfjtBRythRGhMSHBSTi9ueVJySWdUclN4ZUw0M0RKI1JaTktYRUptK1o5S30xWWgvOWBIYjshUFBIVz9+'@; put 'cT5aTUNteUZCblROLHAyUXZWJUpsMVpeNSM4PDlxMUhIeUE6X35PaiVwfE92XT57JiRSY3ArUSNkRmhHbEglXlYmS1hHImJKcFImb0EhIitxKjdqWi9uM1VCdm8pfGVpZllpMnhKX194MHlGXzNjQjFHMz5RQ0NMaVcmLlN0ZnFWNlpIPnNBUClmWGRHUl1MS2JbVmZZPTVTV3JdLHMjV254Z3Z5'@; put 'Z2ZaOGw3bTtQPGBzYWZpdX14ajdSIn16bmQrME45TDc7Kl9lZzRMcmlZdXV5ejUhbnE0MSNeK18yYlg/WHtKNT40Q1g1TkUvJCJpVkkhUzFsUSxweHxeWTZdSn5WUyxYSWBGMGlJWncxXyVKSjtbKz88MklYOko7Pj5Nc2lOb0lkXihSPS46NjhpNWR8JS9oYFU8R0QhUGI+JmwxaVAkZXN4MSVL'@; put 'd2NBe1NuPykpZFtMdEp0aTp4VntXcWVGOEJePDBYK2lBWSY9Z3xzY0gue3t3X0R8M0whfkE3PHdhOGhQJXk2ZUx5U2s7UzNdJmc/QXxTfX5UK0dGKkxyPmYuXlpxVFIjLD5KbFpmVkNgPGB8ZHA9KUV0RntzMlIyc0pqQTl9dHlYclNxQHMwY0ZRc0tCWCZmVX5OQElJbzRdYG1rK1ZROk4hZUo5'@; put 'KGZgTGdRdXl7ZU9pW1VMTXNFL0ZqIkdTXi5Hdy5aYEdgM1NkdEJEel58fEpCbktkZT8rNUtAYD1sQEA/VSJhUmZGWCNJcHUqRWx9a1Bde3cvRHosQ3xZIz5jMGF3aHVwL1BCOD9Gejtqd3xDckA6PXxOcHZ6ayV7QDl5SHdUSFQ6LyVgfU9MTyg7cX5neWg8KD1aJD9tY3BbP1ZWRGY5MywiUnNl'@; put 'ZW9eWzUpZTVQc3pRa2FLJTZqeFtUcEQqVi9fX3pITigvdltIZSZCZnx3TXZLc15PMnRUKzY8OixCNzg5LD9iRV0jd0s4VzFNI3JDSHAsKXpnTHNMLjVpI2s3SFhgUHIpNjwlKForNjtEWF0wTVdvNz5vQCNqazJkblh4KGhPW15JW1hkLkQpOmQ1OzRkb3NxZ2taRTNgQCwmOUwlOnYoZFc0ZjdA'@; put 'dnFIVzYyTDw5I2dEJXh0PG80KVQ4Y3RCOzM3cyhWa19GXmMzMD5DT1BscjV3YVllRVZxUTJCRzdSN1tISGRWalhAbyRRI0lDRDRIVE09UUZ0PnMiZmxtRkJwZGRASiY7RjdFeWI4dkEpY0RAJSJgQXN+cW5bQms8bmBWW2EzNz0/YkNyO2tQZ3pxLjVxQUc7WXIqI3Q5NTVte3lFUjIhZXYiUXlf'@; put 'KHB0fEVQP1BscVo+PEVjckhMVykze2FGIUguV3pnQVh0c0o1W3RtMHxGQzI0ell5fklZPF05NDJoOG1MUmhgN3NxZUZhLmFBejBranI7IjslTHxHVFs7Z1Z9RWxAfTcwRnAwZjM9KXlyWVE6M1JNOGVlPn1PPEkzcS51K3dwdE5+KTFoe2RiditKTFIkOj1IeHh4cipFOXYzUlVyRmk3QTVnckNu'@; put 'S1BkL3kodHZmTFMzIWJLLjgkYSUyW2EmWjZfb0lsZV5VcisoaDJoTEZ4U2FbOEpHNVV6cXslaXg/bUdyTC4oc0xlQTsrWkV7fm9IX0FwPkdEQCtsP0NNJlE/UmZndURzenIjdC8sSUZlPFAiQkYsZV9naEQ1KEVGJlZrVFQ2Y2s7U0NsaGdsWCJ1dkZANSRCamlXUG1oPFZUI3VBNDJoeU9zfkQ3'@; put 'MFdOSEQmaTBxeHdmalNuKCtGXWkjPHBPdiVTOXhzdnRVTC5oOHh0S3lKeCl8RSJBMip4MSguUCV7OGh5bHIpLnZQM0NnOH59bGZkXSpgbHx6LH49ITQ3enlzcCg4a3tFNTd4Xz1IJTFjXS9lcXdsK0E7d20qX2glYUlzeTpBIVZbSmcoUS9XYS9QfF16WEshKlg2YjBXcVFPZVNOQjJTc0VKKjBh'@; put 'T3wzNE5xI05AcjM6XyZ3Mk0pTDc6LHlyVHAlTlB6bn1MdjE/Zy5nMHlsSiwlUTp2dHIzaDpMbzBXYyQySXFFVGpvZXUuMHA4X3Q0Sz04M0RARy9wSWoxIipTUShWcHBuSzwxX0FAS3NJRXVsKWw4c1BsKFU0Pl9aWlglMEdOJElnfEUwc3pPRyxzJUhoQD5VRWMvJGBwfWQ9M0w8OmJwZyNHZVom'@; put 'VHFuSWt8KmIuOjl7JXNnI21qYypOeWZ9JUApKzBYcmMoczsoa19OVWZsLDpVMklaeVY+by5LMnhlSUQuOyZhJTNbOVJsc25hYyVtX05nJCZ2Yl0vOitDYyV5WkA9P1g+JlBCXSV6aF9oWndQRjA9dytTe2VdIyZgVXFAclRVZEJBV10vRj1DSkE/MUpJM2h6eHg1PHBwMT8yUEB8eHlOM1AjP2JX'@; put 'WnVjZ0BCUClaVldxRyp7Z0VPTzpnMjlNYTQlZlM8QW58QzRCUTAreHtwaTRST2tyQGk6IixnOSN1XTBqQF01LyVbbigsNHNENDlRQTx7e2JvR3lQQzJ+S0J6TEd7JDRtfVM2fTQ/NSxlRSMxSj9nLkpyYC55VF81b1VIWT1EVmNHZy5TbWMmUF9VX05wXk0xbERscnVWViFjZztsKGhESyojfCRQ'@; put 'bzYyR2p5TUk9PD9xNCs2I3hXWlg2Qn00QmdiajVEYz16KmUvYko/OX0hLllvS3VkTW9lQ2I+L2EqNnhDN3gpYmtSdjRYSU5KLyhwaDxMWmFNWktHWD00eGkobm03dEVdXyxGanJQaGlzLHxefCRQLzBwYzlfUzJPb2trd3FCfD1pb2xbWzI0LkxmIyh+dEVFMF1bITloMkZXbGJlfHd+TWZ+Im9y'@; put 'dEJtSSUpYTddQyRmajF2YHlLcXYpWXUsQXQwaTQlIyVndXxZI3wxcGFCZFNbbW5KeS4lZ0JdSXM0cmR4cz04fFdWTDJpfGZsV153IXpEfnE6by5QaVAmUyEpdiVaeU5pYW5ZRjc2cXU1UEZdSkRTTyRbMDhpU1tCYCUvQXReTkQvXVFiLEQ/O1l7PlVLQzg5cjZRKGprOVk6Zl46O2clajVNd09p'@; put 'LCUueTFkaTxXWlVTajdCJHc7fUlCaCtoSjk5U21JZWs2RGViI25jXVh4LHFIYmBKXks/emJVelFgdnQ/anguVkM3dS52ZTpkenEkek89K01vej5gLmt4U0oibi9te3ZfVEpsbXhKeD8val9VcWJdXktiIWRpdyJPZmgsPV1EKU1JfVA8VEQiIitwe3smYzdbaXNdMnNPVjVtYio0PWZGPCJHeD1U'@; put 'LlpqO0BvfUN6R246Zks9LG1QRHltNSZtMkFUSE0rXyE7JTZkKyNNI21uYD9QWD18KEVVRkQ5bTZOa3l0aF01KVtfUnZJLmVZVjwsJC59SSJTZT8uUSFTWGJ2KHgvOkE6e3FPKzlITmdBL2hueHhdckt8UC5rdChKbnJqTWRrIT5BamJYOzdgVHJKT2t1dj9VVktLemFEUXlmTns8STpkNEZucVBM'@; put 'OFRARixMZk0iNjcjO0RZL3c9fihGaShEYmUkSFplciYxWDRdIVh2N2VUaE9TSkxYSUhrOyY6L0hsTjdmTDghJXY1XWYyUE9DeD11V2pRTzxbb3ppVX1VY2JLNU1Jbz9vMEhYPEwpcSRsdT9rJVhWWSQ4NjdoKSMpekpTVVBTSmt+ZzpbcUpyY0BwQkFmIjtedHZKNDxGdmMpd01eRUlpX0AjOmRH'@; put 'KThDZFo6NlQmekt7OmU1Vlc5STBkV085eFBFdlJPPXsoMX41JVVYa1NHVH1EUX1SKGkqRG5+S1U3OF5wX259b0l3OmdwNl5xcXxMXk05b3k6ez9hT1VfQFFoWnw7RjJEKnVOLlQiNEpbTUdidHRVc1U/KHd5WmpodU9VJHBNRz0qTW5DRDJZQDB6QyVaSF4/RiJGZFBDOS5uIkkjSUJLOVZNdlMx'@; put 'L09+QTZ3M2the3lZbytvTzpTOkNnW2oyfXwuOkJrbTwzb2tuZ0o2IV1pZlF9c35+PHFefV1lRUU7cGZUWW9LYnNle2Z3QV1hIzIkMkFKJUNuQjw5eDs4MWRQezxxaD5HL3Yvbz1vP0ErR3d9NCFAY2NHSVhASjhgUkRrZnR5Rnw9VltIO34rR2czUkZJKzZwQXNLKUp3W0dhNkoiM2MmOzdyPmJD'@; put 'YFJ7dWlbW3UqPHhYUiNCeEVCJltWO2dYQUNgakZTI2t5bFV3XjgxI3dHeHY+fUN8P1J7JVpfPCFpOiRzX0MxYTRfRWJEMChQXXd7ZWIweUReTGBlSzZ3cVZmKmFCSVplcXcmY29hbl92O0o8WGFOQzc9K21CaXZAZipeSyNYWW9ZdGE/fkZPRD1dRGxST3NeYGB0N35EcGR6V0pqZSl1e1teemEm'@; put 'MDFjeWg1bURCYkd6TywqanxueSteWSlEczxiTHRsXUVrZS59dXUqKF12TTBrTjFYbXx8PSMyfFEzOno2a0xaMnhIYVh0ZiNPMCp0fVd8UzNXQmdYfHpiQ2dwPiQrYkEmIXlBa3IjUkl4VnNUNHF9UlpqfiVYb0hVLil1TUFYOSZqemdDZUFYYTg6Rn5mOmNSdVpbPi40azo/MTEqT2MpXm41Zkw6'@; put 'MUBeTmZZUCQ/U2Eoc28pWkAoSDYpQn1USEg2MjRHSFB0Yk4wfmJONig1KHtqRE8xX1ZXQD5nNUdMblFxKjg9NFUyT0d6QV8vez9FSW90dU1DIV8rY0J+djNEcTt1bXNVd0pkZUwhaEo5IWJnIzN2WldtV35BPVo8O2x1aEkvO3ZJKTxYT0gxPG4rRXMhXzhWPUsqKWpOQip0Tj9ZTSp3QXF4eFI5'@; put 'Y1hsbVdKWHZASW1hWG95RypUMmteSlZgVSp8UzZ6N3V9RThSMU8oMXZGKio5c3NrUFBod2h9XilAOTFpeXxNdigsYlJ8aWpsa1EvJSQuLlRpWjdlfDguYDs8PWdLfkx7VlF3alI6WnYzR3Vya08pRjxkLElmViNvcn1bSy47PSZqJClWckUldHBtby5raU9iUmpqJm9iIj5mdCplT1gjVyUxfnR0'@; put 'ZWxmeGcsc15sN09fdF48Onk3b3Jvez5jRjgqOU54WFZQRi46YFB5L3lVR3AsSToqP2JNT0VTP1taREpbOjlTWHhUbE9lKHhKK0BtU0RHY2Zhfl91QSx9LChRUXBRR15+VUtAM0w+VEhDXlVSa3o3YihCdFo2WXxlcnNuYiVeIUQ0YW11UWRLTHkxTUtFQEtROVZlKDN8VzNTKzo/RGg4cG1Sa21K'@; put 'LGszbSpgL28oNlF1X1QoOmF4S1tAOGUoN2lHdWdZbzgkcG5nVHReSDVYXSgublV7bm1TYHBjJD8rZGYzaD95aFJqQTt7P0ByKDJaWTw4MGVwdD5LSndTaD02VXUxbSh6VUxZXUdrRUE1MSQmQXYsVXR4dnQuVnVYWSgmdzJsRlo5MywwRHJ0bXYyM28uX10hTnF9am5yK2gqKGBGYihuTWArN3dU'@; put 'OXkySWcsSS5NNih0VjEyI0xHMG1FVWliLkIzQixaVXA+dlAiS1N4XTFzfUBRSEclLmg1K20jKTY6MUROVjxCP1lIP2t4MWFxMSNbLCl1RiY7InZrMVhLb1UkIURNRTFVWlMpUzFfY1MoQXtPWHosdy4+L2ZtRnVFTSYsOSErPyMrbkZzRTM8bjtteUBeMGZlNi58RUJaOzoqZVVdYDZTPkBDc2tZ'@; put 'KGVuZC5eP1gmMUgoJVp2KElSaTZNY3g3JWBzfFlAc3lCdGd6QEApS3tbfTJlfEtLejR2PyZqPyIqZ3c+Y3heT3o0NUshcD5CdzFXSWtdWUQ7TkErdVF7KU1aSyRebSkiNFB3VmxiVipDdHY3OWZMTip7Y0syXSRyWUVyaUp1emI9RWEpRjBAI1ZvNjlUaClBOSo7MS5wSk1mR097UVFMZnpoN2ld'@; put 'bSFWKExRbUI6SWM/PE92WGcjeSRZZz0qQiNkJCElL1NpNHJjQl86dUozO15oflFwX05WT3s1aCxyQlNOMjVQMHNTMTFQNUcwSjpLTXJ9ISxNR2JDQ0B+QH1acCQxJSk2TDxDdildc0dEU09reFdlMG9DYUpBIi5JZEU0N20zYENkR3JDcFBKaSJeaTRYOTZwTGxZbmhiQC5yRyNsWHdbY1NYWCpw'@; put 'OERLUDVOaF5BSUc+WklwRjc2ZFdmK2lkU0c9U2NJUmRYTUYscl5pb2xhTVIlYXsjfDoiWngpRHp+WndqY3FzYSMqLExaSjJFIVIvJExKI30xKXgvP1QoSE1SIzkiYCx+aiROaT01Z2IsZ01eKV5tQlpKJUphTUdKaWJ2TFIwSTtZQnN2TjxdOEIjOGlwPj9NPVF3XWR2WHZ+JEo8STtxSzJ9S2ho'@; put 'RU5+XkMoPF5FSnNtWUpIdzUoU2lbRCQyV196fSlLP0UlKjtzeUt2Z0pOTGlEJEIkYSpZK2BtTUN0Oj4rbE57U2Nbe3Y/dHMqaktXenY1RkBJSj1tTS9UK2NFOVNrIS4vWygxO2c4QjBuQiZjO1djP2F+RSl5RUEwK2YrYVU6UHt1PW5meHNbOypRYnk0cW5aTEBHZERldVVFdXd6SyRdYVUrUVdy'@; put 'XkQ2YjFWRyFCbldFbT4sODRTSm1bIWM/Zj86bk1CKXg8Zj1ab101amw/e1R1a1ttKXkwQWB1cV0oSl0hRHFfZHY/O2xDVmpMVjZ0IiJRT0hJfjopSkQ1V0peQ0g7ejJham8sb3p7bCQiaEx2az9vSF16cF5ZOFRUS34lU3hvTDtgUlpuW0wkOGx2Ji5lO01lPjA3dzk4ITwzVHJ+TVdoJjVRdXt6'@; put 'TCYiUDdKanVxRyMzRnFQVjZGa1FUZ1dUKHs5bzN4eGw+L2h3Vl0hJXZGZDZ8amVGPExIaU8mWDw/TWB4Zjo4flBmfldqOjp0eCp8QShVWGlbPHIlZ04sInl1dVplWnlzTWhae3NOPWMiZ2dPX3FZISFmOj9KdkU7TkhsdmJFJjNwZV4kcjVNPWt9IkhfXkRHYkA7N1h0M2FRYG4uVE87ck5Lcloh'@; put 'WEhTSHsxNXhqezp4O0osNTV1bkdlSnpNWnowQHIpTmxeUzAjbEM7OHFZYEJwXkgvQ0hhdzZPJiNiQk0sRjtbVntycWlfdCtjfWtVTXQ6fHFaTjBxL0h3RFUrLmp0bml1S351MCI0R094QykjZ0o/MX12QjxKIUhqK2B4YkBTYyhDRXdlakUyaVs3XXVYM0t0KHVyPWlQdjN9cmZEWXQ6RF9YPUQv'@; put 'KGpQSEZHMW4hM1F1UEZ3MzpPSm5bcThsX35qUDN8XS8+Xnc0fXR7bGR+NFRYKjsqdFs2Pz9EQkloPllQSjFtLnsoSUFoa3hAT2p6WkV2Oig2aVsreyQ/RDVqNE8jIXtwaDhCUT1TLDxVayE6PCgpe0Zia0hEPn0pY1U3WDcwZ3NudzIhPGdVeiNSV01tSWhSQTh6JX10TDNbaDRjNi82WWpXV0lm'@; put 'e2VGcSp8c0J+OGJkfmFAMEUwck9MUDUuYzA/JlZjKlhjRVV0R3U+dF8+KEYyaGJuZFQrXkxfS3F2TGxQSzQ4O3JLRGNqaUklPzlyWT1BYjtXXjh+cndIWSZ8XTt7bF06a2l2WGI4IyRoZTI3S0BYZXlGR2lda2lDSWJGPXx1MndgI31zPmpCYl5lUmtzNXxFLGVHYlMvbGs0MmxXS2NFMEhISWNs'@; put 'OHhhJGVTfSwuLzNzbjQkXXYlOkU4VUhRQHQuNWtZUFdWVklUXzJraUt5OiI3T2dSJihJdTtuYGJEKXAuWlN3UX1ba0MsWlN3KzRPZyw2JXFyTWQ3IXtIMHQ0Qm4ySC9ANHduTyJdIS5CJjkwNVdrdStKbnlIInJkRz40aFIoKDlIcmBDXz5fdiFzVj9kP0ZiZ3dVQUd+Oi9wT1VWLi5fQUVObHIj'@; put 'OUYpa3g+Zzs2eitoUFJ5e2RVfjV1YEspPCRlfTNOWEI9dzx7Q0k0WHRGNUtaSUFgNmxtRD1GX11WRUJnMFRoXTBkPEw3e3V+WUpaaiFsYEBLciReV0tJR1FtM0daT15TOVIvbzFjVjtVRSpuL0Q1Tk5vay91Zn0rSSZGTURZU2JNUExGKUYhcjg8dlcpL1dHakBTZ19mNyNIOnJNN281RytTZTJv'@; put 'JjNgakVIaU4ra347X0lNQmIuWXdwXjYsPXFvbT47Kix1YHdKdkdIVU5ERz4wNVtEQHRRXnViOyN1c1U/Lz4+RyIrZjI4clNQZHs+NHUiVzV9IXNSKkRKOnJmLzNYbjNdT2tHXkFoK3lWS0B5I1pyVHFRK0B3cCF6V0hBd0xPfk1vbi97TVgrS05SZGxpcCoxTl1CKl4/W2tOYHBNcT5WYkRJb0Eq'@; put 'UyowdUtbZSQ9L0l9bnp3OXMmK0U0JHJySXtjMXJ1PkV2aVoiZGddUSppYzpWUnx3Ijo9L1J7X2Q8VGRDfV8oVjM/OClnOGRldy8uN3lMSHxNISJRcHBoJXdXZTImRSJuNmZbQngpM3cqWTBvUVdPQyFyUXZQSSpfZDBkJjA3elJ0emNMTjlBOC47eld8NDUlZH1ESDFNJkslfHg7XW92WColPEo2'@; put 'XSkuOiE1Y358TXA+b1hudmNXKmFDPDU+RzNQcXVJZnk1Wzldbzt5MCxvfVBCcFFDQ3JzMWEwfDM+UE4kITpYb3M/VVNnSGAqJnBvaUJkO3NZZGJ3ZGNLNEJ9aEdLMUpdMD9yUmA4KUBBLmBDZyQ1V3VXYC4lQDFzWDEjR2kvYnJYVyE2NSJJNHR8eFB6XyxpODZ1XiZwfTxsI0dgMzR3TkYsZWM9'@; put 'fkhGJTNSeHtZTi4uQllyd2VMImY6ZSZHWVB4Z1hFYFZYRkVFO1BIZC55Y0ZKeFZYZGJnRHpLPSxOQlFAL3IkO2l7d2N+QlAsKHlFd0FCQH52Q087b2QmKHopKzdbQC8qLDJGTkIwLDxxek5bR01jZUhMbSk9LFd6UkVSUFNQJGg0K2hGIWtZQj1+WlJ4Y0UqdFRZazpvK0MwTzBkTytHazpLZG5F'@; put 'czA1dEh5PkcpfTF4X3QwInBFMFM8Rz5OMiZbQDxSRm1KVF1GaFFodCpmNVJEbGUhdW1aNjxzZXQ1PHNUX1sxQV4qUk9MbjZ7cVZqUyhxeiRLIU5jaE1Se0BDe096YmhITSRIPGRKSnVbRz57VSVCM3g/NiYzW1JmQG1kSyt3K245b0A6MjlbYlNnRVNHKkh8LDJmXkRYVkJGUUpMNDhlbi59ezde'@; put 'PFpSJUR9b0o6QGFLN2s9ejhgV21Sb1lCWkVZNH0rQDk+QzJ2X31XVF84KmczMTtWVWRjLGFlNFclbGQiPkVlLD9QPGt5P1dLdEBbazM5Izxzent6WlVFcjAwdjdrNGE1VjRMdTpjfFJsV0FvMz1lYGIzYyljSi9DTDFzVnA4JXZ2bTJtR246QjA1Rj0mMlE5RihiWSpQYnM3JmQwbVdteV08STlj'@; put 'ZlROOHVQXk5RSnFCZGo9fj40QkM5Mz15PX1lIyNhNEh0WDpzRUo2NGFZRFA4VzVMWE56ZUZdVyRNdS4pMVp3e0NHLmohfUBxVVE7U2YmdFMrdz4iZGhxUGU+fTdkWEBjZFtncVYyKTwydHgrVjc0aE5jeTU9dlRCN2ZdNjE/NkVHTVRETHlPRUduU0RMR115N0h3S29HI1RjUllkPzpLdkRbW11e'@; put 'SEp9eEc1K3xXfEZ4a0F5W3dCP1dVYH4pPDBmQHpkWkYqUjRMeEomb2hGPmBwLypsP2BaQDJpJWc1RFZEOklrLytYYSp1QFZoMjl7dThnKDMwSSkxdCZ8Nn5YQVRlZ1BGQE07OlJrTXhuZyIlYls7YDNYdUBCTE1xRm0rQ18iditxdypZdiVDcEFXWWJKIVJ2RDo6NWBtSl0sOTVOVUl5cFBNbWFO'@; put 'JWNWVGtOPGVufTZLWzReUEh8e2BYSE42NVtTIVZFO2Y/TWtRbnlOMDsiTC55R0pVKlMyIkh7I3JXe1opcGhefDlYMltaXXlLYitLdyJgRj9rQXMxVFZPfS9vXmYhVWArUUQvSV5PazNjaltKRUVeeEAuPXRGXjk2cTs2VnRJLHhVUTM0dCJeM2k+fXx7bnpdJjUwZyZmJmBeTHB7b0osWjBwOW9j'@; put 'T3xXZmolbWgoVl00KVRSWjt4citMNDlPQCVZP3RjWitQL0FyekBFV1ZkWU8rVzZzRUd4VXVycSRUIS80UW9DT0FrQiY8LGA2aC49KW94MnxmdFUjQWhdWUVOU0I9aGMpZCwvUmM7LyFBQzcqemJ1dDZSLmtUZHQzX1BvWSQmZUk+MXtFZWpCLG5bXyxrKzZJbU0raGh4VThme1sqfkNdMV9DYUIo'@; put 'fUAjMVs2ey8xK24oM0JgKS88KTIzMi5nez4jQ0lIcXx3e24pL3QlakB+dHZqRXtgaGliaWFmT3lqKS49ZGlnayRoYm9VeEJWRjUkU3RLXSFqIVM1N0M4OFJCPGJ6fShvZlsqR2oyYjBTXkI5YT1fdzhSc2QxSSN+cCVGJkZKRGdgWUw3Zj9dYzJydXZtKl9ZTC8rIm1XWTY2OXtmWG5CI3J7UzA3'@; put 'IXc1Ll9vUVBXRzxfb1pAW1E/OGMkKzdYciZGUSFbbiQ/WylSRFIjVmVbXjAkLmI8U01manBedX5fVX0sfUtbSXtNLFIwc3pqT3VZNC5RempGSFBDPU8obE9vcHJpOXxKTXhzdVIxUmVyNjU7REApUyo0ZWdXPX06PzElZHA2aTUsUEFreiZtUytqbU1zSXYqbX1QRDkpeWooNGQ/NlBuN3ReQHVL'@; put 'ODRyOlpYPSFqbTNHSSkqNXpBP2w1L1lUPVtgRmVEUnlNVWZLai94InxMXXcxdEMsVVVhJFNPRTdsVzc6RCYvbyR5ak1NU0xkJnUkXzY+azY+d3AwSSYvbjR7YXR7KHpwTndhfTp2ZlMibEJULl03RVdYdEMwSHlMcn5TPVI3V1ppaXZRKFBkfWZpey47OkVSZXVlUCRJMGo1PltzU3xXKU09eUF6'@; put 'ZCRMamxzQzQlX0pQd3g2KSx3MilxeWk1cEs3ek5IRFJ8PUlseTcub2QwQkw1V1RORFIkJl9hWVhKXk1qZHc0NkVsW1NqaDpnaGxDODd5IiZXWjJ1LGxWZCxSJHY2YzhxYWY8YypJSnw1eVdOcDlkc3NqQkw1Vz1rZChUKjYqejVLKlgqU3dKSlZYKU0vdF52L3hoSHA7XktKYHBqREVmc0l2cUoh'@; put 'WTJoOC83KW58LGl2WllmP3V4Lz15IkZ5V3F1L3RWWkx6NExEeiJYIU1KRCJDXmFUKy50ZSsrZk4kY2hFVmooajNeJTEmNSVGXlU7VEN4e1ZyRj5uPGU/a2pwelpyOC9QOE5sVUdzOVZORGF9M15bZkt1WmltW1Z+ej1MXncpPCY6dis6O34lKVY1RHZJUDBNeSspQComZDsvQDcmZXZ9MGNnZkwp'@; put 'c3MwLih5LzMkKzo7T2UpM2Jeajc0SSFgUiNGeXZCYSUyYzxJWWUpM0d5d3VhVjNRRl5gaDFwXVZjQHZqLnNCZVtOdll+KU8+N3RkLCpRfnBMU3VibkQmTkBFISgjT0opJCpedk9sVi5MWk9PQVpIP0dZQFQlMXdDY0I8XTJoZ1UhTCteN2BZdUtsLygvS1l1UCk2KnpiTixUPiZgWDtNWDwjZFVk'@; put 'dVF2RnYzWjx0TXpHWndRTSJWKmVxe0ZMWTZFflcqYm4jXWRpRTM8MTRHdyEjLyR8eC4oVWkycUJTfnxrX0ZQZGdqM2kkU3U/UzAqVU83RjtSYXgobCx7UG5CVEQ9JnFkNWVPYDRSVj5fL1R0M3tDYFNve01nSC9IMWAuUWcpIUJnW0lQaTdRJXVrYioqXm5vVVUrKW1vRGd5Ul9bbFc9dD53Snlu'@; put 'TlImJTt9JX5KYmQ6MWNMaW5wSHcjS2szaSV7RTFjOSY6KVM2cCZva2pLQU8jMGhOL1thdGYrRC9VdzY9RGV+NDlbN2lVbHR3R3tlL3xnKHU2Ji9iRHo+NHleciZwX1ZiJit8Xmx2T0IhbiJCbz5zcyNaTXtvITwlZj5MKmJ5dzZfeCNGTUp9VHVHTWZVQDs1KX0uTyg7VSFKNCRUP3JmSHs2TmVq'@; put 'KyN0IkNMSHxaPUV9VzkxU0hJMlkqKzMveHV3cixyd01vQjdgU0J3QzVwOmBuWXxeVDp4TlFbKjh7LlBuT3Upbl9XL0dDRGJ0antKX24xKj0pRktSZ0ApeXdCQE5gXXtoPVEyakQ1JGliJHV7QzpqM0Q4bmFFLDghKU5NSWlKYEk8bjE2S09CQko6dyIya1YuTnAsVGtkVmxvcis7YiV5N1k0YW54'@; put 'THovKztIKVBnN01zQypzISZxLz96LFIjcUVuRFZDXU1HMDw5c1BqUyYqQDZpY21mRWc/REFoeCxdZWNBIS5BXmFwQlQrQ3hVMXRkQDRsM3BCLkoyNzE4aWJIaGpkcVpOfEBGLlRZPShvLyIlM1MxaUNpSUo2KTsoa1dBJUxIeiZyP0hTakUlIVdlXTwpVTRhO1RCT0N+dk5gPkNWQn4/Oz0qNzpO'@; put 'RG5OaHpkXmdPJSEoSExCVXpsOkVLKzc/dT5mNy4/MjA4PmZlXSpmJUlpa3wyR2kmYG13Iis/NEFvY3IxKGJWOEpPMzZsMVJ+IVhlWXx9VX5vWUFSWENzak82KUl5NFp+aypISEdePiUrZnokVWpGLFQ9c28+eU91Yyx8Ri5bKixPZD1+OUcpRWY+aWg1WWo+ZWtjeUQ1MlFbdFAvSiZmWGUvbVt3'@; put 'YlVfdUhpUSgqSGR4ezo3STtJfkdELFtUX0NtUXtJUjNYN3Z6VzomKz9wImhEST51UEtJITRLK1liRzc4eXFlel1MamcqdD1bfjFVaHVuWXFTTmt1JUYsLCpgTVk1KCg1R04kfXtSYWZNWHxoIUptQ0A+KSx7dUYkbUdNTV1CTnQ7LCpgMkd1OHl5V0hCLl0sKmBbNWJxJGc9RkBHYSJAclpmP0xM'@; put 'QUtCQFRIekByLCNmcWBYNSlgQ0NbbSFMN28mRyhGL3VIe1crW0tWMWlJN0BqQHEyKC5IQkJzImhUN0grfD1CbngsTyl3ZGZDeE1+c1c3OEJpOiwqYE4qQ2YuTGYheERpQ3ZgZiJQR085e0NWe3U2dDJTUDA4IStJdzA6aCY3OG8oI35ye3RzSGApS3FXUmFwKix9eXl5fD5KdmBXaCtvNnMqM2Rl'@; put 'MVdTd1BQO2h+MSYzYCwqW20qPGFkWkEuY0I6Q1JHZlNmVHdJQipXJlY/U3FuT3RCX1BNUEJbLEUuaUY8ckNERC90Q2slfkgmZGo+YW0wK2ciZXpjVCg6YD90KmJ5KygpdjNoVnkrY3gkQVF2NkpRVFVrNkhkSjdNR19vbjo+SCorbnpNSGBCKEUrW2owTExTNC44Tz9KPGk5R2cxSSl5Qzc+YzVK'@; put 'QzR2cDRscUwqMSs6RjRDWHZqeShQJUFnRVNHbk1IKiZYXWgqcUA7cGBaYDMoLCghSD4jZU88OipIJkB6cGN4UE9AOm1fIyJWTTxoUUM2XSg5VzZbOVIlIlEjUiNdQW1XZCIwdElzNjRjOy9hOTBuRnJTUFlwcyV6ZFNvKCxkSX1mKjQlR2xBazJbWl15T24yZnlVNTosdUBnQW9sSDo9cjdzSzpa'@; put 'bHIxZUVkSHJXMjh3ezZPey5kXTAkVkI/KGRlV1h0c1UqY3M1VWdzMz1QUFp0UDgrPFdyP2R5WH59QTFATmo8diR1PHo4MTZ6Lmg7cGkmTjhONThYOmxrK1dnL3RXMTk/JX1IbmIkTCtRYWxNWzhATXBHK15RTXNkdX57YEIoRksrTlVybTByJSp+e3FjfEtAZVdSYW5CKk98K1d+QHBFdzsvfmd3'@; put 'PVhvW15ITVNPaDJdbm0ybGw5dmJKIW9idmFrPFt8JSk9dDYpc1Q9cjZlIT4qInJDfV9NQXtgajEvd1hKUjJsMDYiVj84JWdSaVZ2WGFyVHtSfndqMmk4THVTIW1RcylsIkYpeHxxJU5DXV5RXUo9cU5sS04wLisiMHwhezhzP1FrbHp5TjpJTFo5KmdiamJ2K3d0TF0zVldLS0U7PSw2YWJWYj8o'@; put 'RT4+L2h4LC8hZVFDXTxxNXlsKXB1UyVJOSVYLE0oeDdEcGZAVzojVXFkZ2I9ZWJvMk1aS29EandrOTxdV0M/R0p8NUB+KDI3IWFxZDFocjBGcnFPSl0/MWdLW21ZZW9EOCorKUojRTF6T0hRIW5QaGs2TnMmYFlzRX5WTFFoI3M6KncsIylZfFtlOGF+eWFjJSMrWilrPEA5fHNna1JEN0JDbTco'@; put 'QHN7fHU4fUEuPUF0ZntAMT03QiowU3QlOXlnIW9vKTlLeClYUDRYfVI7ZjBmTl5EUD1PPE0zd091K1ZOW0FrSGo2QTcmeWVQODVjfG8jRjhAMEApJGY1di9DezJfZ1JKXSJuTUYqQSowYl9JYGJRSl0jfHA6NSluLmRCPHMhfExjJCRCdEw4IzI1VlY+cjBWQ3Nxam58dEl9ZyhDWDAwZlNbSW4p'@; put 'UDZbanVVdSslajk5U0cjfipTYGImflEpVTQwSiFUdT9GRislcyZsMVo6NSksJns0UTo/cTAiPC82YXpFXkE/O0drZkI0fVs7YjFdMFZTUSgqNzxAPnN+XzJfL30xaiRiNkxIKmooa29bNi5gS31nRlR8bzksWGpxTSRTT15OZ2MjTEghWGN6REQsV2EqPS96JTQjSHM2QmRwVTslLmhbYTFjLzhp'@; put 'SldndnAyIz0jTHRzTEpEREtoNHFtL3tUWTBuYkJTPiRLKnFFRmU9am10OClGMS8lT09GU3FSMUFDayZyXikzfCwqU3kwaXJpR1tJNGd2RUxrJUdCYCpTYj8yMXpoQylGKWIzUlJrTn5VJl4hM1djSlgvTyNxdn1FcThhMyQ+c0dsdihxWyxDcztnRVNRL1M/Onk3OmUiMDdiSE5UJV1reGh8Xz19'@; put 'U0poXV1reGgjfCl9fjA8KlFYVCM8UWYmMVEqQHhyWklmc1RsXUtDL1VzNlosPF5lYW9bIVUlYz9wUE5RWyZHYnEsVF9aOl8/MzY1R2NHVzwhYi5RSEtEbWlYOUBVY2ksWllWQXQ/W1dqPklORX0rfkJyYjlsSEpEPU1rKUxzLD1Ac0JzcWhYJmp+YjY+XXh9Y29mJiYyM1ZHTDc5PXNQJS9tcmRy'@; put 'Sit7Qykyc297WXNBQT9AKm9kX3kzK0lSSF9lV3xKX3FELmAwVVVMSFo9UTBbNn1DViZoWUp9XU00Qkh3YWkwVToxaTomMHNkNi4qMTBmKHg2PXJhM0QrJGFAclM/MGhjfHRhRl1SP1phKThTSzR4SUpqYyRTM0AvXV8yOnBDJWlqezVHJig7fW9pYGxWVzxaYWE2PmpNXU8lIVgvakJSYCZSPmc7'@; put 'dXhOd19TbVlHWU9PLDZZMHhHQlRgcnZRbDxEZFk2LktdQzU0bSZKY3IvNUEieVp3dF57bUZeK1ouWT9JTzl3TGtpM1N2fXRIOkpCLF14aWVoWXVeOEkzcSoxNHo1aF8xUkQvQyRJNC92M2kxLC9fel00MkVXeSgxMno1N1V6WnddMGd0UEdqPk9JR1c8NmdwclZXUHh1NWM0T3VzU2dxYHJEdDs2'@; put 'WlkkQHhySng4WDhBMGQ2Rz1BcFdGekBiZSZmM3NlYGFJNENVQDlCdytjezc7Q3lZakBhIUNGLFsqRWJUUmksIXl8ailhW3BFPE51VXQ7OFF8YDVXeCx9OUdVQmFecjlnOyU4TmJKPkV2MTx8ZD0xJUdiRzEufjJvLyNqaXBZOXRDeTM9MGgwYTF8L1tTYCszTlU3bjxNOVgxcVI1Y3dbQVQ/cGZx'@; put 'K09YdjRCMDBsZl1GU0A8KWwvYl9MIk5ZK2hDS1ZlY2c5UEkpIk09IkUwXkt6dXtgdEJFLlRXXV5Nc1JJSnR9MDQpZjB+ISpTTV06MVc6V0dzKXUsSU9PP1pqViNhQytQWjJ9WUN5ZVhfREQhK3FFJlBKYTszQDJRSF9RdHNSUWAvbCtaYVtIMy4hTFFJbnF1YW95LjE4a1huWkVuNXApJChMSEg7'@; put 'T0M9QjZXR0VsPTtHRzQzMHBzOVlCeHZ5VWJrRTJ6MltSKW1QcFtNaWNtaDAyZHBkMGNGWSVJeTtOSnhyTm96Y0Y9ISU5Mz96Z3s1bCskUVBHOEVfRGtkRjxrPGxme0pvN35wV3Z8QjAxdjI1JX0hdXl6VVVKdSU7WX43fitjTkIwYnlTPTh4NEVIXnBRImdOT3o6cSUxQlJeJEl6OiYlYHBGZGN8'@; put 'VWI3bywqZUFIdSF1KjtFVEJpcjFGW3JWeFlHaiE8L251JW94QUJYUWVbLn1FPUswVGMoOzptUDNWXmFuN3oqO15URHgqOyRJeUUpU3IyI2VwNnpAfl9QTmFCPS5iSiNmYntCbT9vfmExNnhAPDYyYWgrc1p5R3dUQkxOWUBFUm4/Im11N3ROJHNwVSY3SUY3V1AiN35td0UuPmZxNipxaTxmKlhJ'@; put 'YGIrZFIiZ3x2PTpsVVlUQFhVTzdVSSlkLz9vM25AVGF3KkpTc2BKUXZYdm92alhEMnRRZGFdWW86b0l7LCJNQG0jSEFuMCQjbCpuc0lBblVndnxxJUtEam9RKWhqZ0lsWSxeWVlyQm9ubSE+ZiJwQzp6K21OfWJJYyl9MDMjeiNPO3o4b09hUDNBcW0zWll4Q3p1aF4iO2BMS0Iob1sjdih7SUZ3'@; put 'dWlxdn1IQUhGQXhbXmgvLixCWyo1fiYqRFhfMiZ0WmBtamhhNGwvUFAxbSNQd3ZoeSh1MHYpdSl7Z1RJL2ZAeSo5LC5WRkdXKmVbXWFwRD5sfWJ4RzNPJEQmKyx9O1coQldTRn5gSFZwUVBLe2g5TjUlTiZLW0ReY2dqUTcidjJscGF8W15KNXdpPXdGQjg7Y21hak5rfUtILlAzSXlxTnVaPmk/'@; put 'SjM/WEVkWyRvXi87aSw8Mm8qcCE5cjlGIywlVy4+YVMyXmxwOXk2S0VoKXFgTUk5O0FdR041RnpKQSRwVUhUd2JwYSg7IyFOfEVeOzV0ZVRmImhPKSQuVjY+bzB+L1RBPi9Ucl5KRThSUVZyKSopUytMbjkoOUg1WTh7SiEzKS40O2d2KkUpJiVJcGFbIm15VTpqJm9xby9eSU5UT3NsNCNtbHU+'@; put 'YUomRTxZQFUuPWNheyphaSgvN354JWIkJncka2N3ekt4fiYkIjtbOWVXMSM/WUtzIkorXjZxIj99cWM1UzteZlh5aHZBfEZeK1hpP1Ihb0ZlV1A8IVhDUnZIQiw/XUMrTVchU084TDc9IW0peU4qVTgva2oyOU9VYV9fZ1gzellvOTYucztGUGAjXmxRWVhUalFHa3ZtR2IwNWhdT0EiVDlEWUh2'@; put 'Nml0IldSN0NTanRFQUJ0SWJBQUdIclptIU91YkNdREE0RmN3KDM6PUhFZnZjVFI7SG1YJSphIk1BaSI8QWxCd1d4V0BRTUFITCQkSGNoJXgmMF59YyNkVlgxJD9temYsOTtUN3hWTUg3TyQuTHJPJHV6R3lDdnVKb2xMO2FWWUZ+bm1hO1VZNUA+an0oVmIvdWNEWkh+RGFST3QyRCY6eShDP1th'@; put 'NnZObWh9ejBqQlRAJnFSUGw5XlREYD9wZERUW35fOl8lNVdKbFhPanYhO1BSK1RtVmssKF1ZeF9tSXEmb2RZa3t+OGN2VkVCbUpxUUVsbGQzYnhZQys2bUdnOyMsfXYkIlZrYihRQVhoXkJaN3RRR1FuVG93OlR5RChuUnszYW5qQH5XREIuPH5qLmJCNmVTRz5hQF5lREVdUTRkYUJwSXVFKSwv'@; put 'YXYkLm97V29Oa0JLVnI2OmJiQnxdR30rTXFDSERESkFra3MmayhmX0xgUmJMRH4hYDU9Z0VodVciN1ByeTp6IT5XT3BsI1JvKiVTTHApVjJZSH1ZRE12R2VBfHwoeERbXWpmbkAzaX5ye3V4LENNIjc0Oih6RFs5QDdqLF01XWpHQ3ciTWlAVjlMcEI9JGJicV5PZ3w/aFF0ZkNoZDZuPlglbUNR'@; put 'QC89KUA/alRZWW8yPWVzZUMsaFJOXngpeSM8KlI6aEN+VFttcUU6ZUwyNVR7M2B7bitNU1MlWm07UU9Tc2w6YTlfZWwxbW1Iflp7KCNiQDQ+SG99RmR4ciE5eWJ1SXFXMW5gRmE0I3o6enJFQj17aCxoQVAsSjgrY2ErYlFeb05WMkxSOiZDNEQ9Q1Y5NUxqQ0ApQGNMK1EmTnJyekVsdUE5ZHx1'@; put 'PEBoZz0xQDxSSUVwMThIKDwvaW9AP1ZuWGRnWlV5Z0kpWF0rXV1dUGc9c3k9VyJ0MlZzJTtOJClvOkhOdkx+cDMiPE4mcHN2NHJHU3xpfjJFanhUKmpMb2BDd3duMThzIXBtZCR3UzI3R3ExdW8pfEdjNEJmcms7SzY5RklNIUczNjY4ZTglK25sO1paO1N4JChRRG9yITBIbCVpPzRGeEpHRj17'@; put 'UWpvViVRaz57ZlgubE5SVEs5TG5tZ3c6Vk1oIyZiIm47dC8pdE5PRVdfPit4RXVLVDsoKmMhSzVodW1hVVlzPDVFTk5XZndiSmkvJXl9PytKV11TW11WOkswckcwT1tfbVJtZ0ojcSxzcE5ETjRMW19KTkJ7YkJ1JDFlK0AjaGByPCQ3JC9qWkd4ZEp7Ump5KiRNKmc/QnVIel82e3hsVk9HRkdW'@; put 'U2JecT1IPXBTeSJoVCtlJDsrL3JpSC9SPkxFWjNGcEl8Q3lwMjVoUlVTZWgxOiZwSlBMZCk2e1EkZXI0blM0cy9iQ3xsVms+ejIjYiF8S0h3JSxmM2FdUUlUeyJUPF9SL0tSPEN0dWYwYCh4Q2Z3azszMXdxLysoLDFFaSlIQl8wKnV6VS5FajFiY1U+cD4iYj1Oams1eD5MIk5DI0ohfGRKZGxM'@; put 'UC9VK15kVS5AUWQ5VjxHTGI8PyRlIXBXNkw1Yj95JUtgUXY0O0kzfTxafXE4QGNGKCZDLE1fP3MxXTo9cW90cD0kd31QNHc6NzpDc0xbY15odl1eRCZiWVlbLGpsMnpeXiRpKkprfHhhejhWI1Q6d2l2LENCcDM/bFtLPCRdcmBvMVVEPSR2P01vO351cipFO00pMTI5MWpAclg1ImZWcCJNKFN1'@; put 'QkFDYTY2aFptR0VVUm4+NiVhUk8yQiYqVDBBbHBSM0QlOmlpIy4zVHM8T2lUO3JXT29be3x+fDUiZElPLCxqIUN4YU5lIkdiPWN7KnNGOjs4TD9NY31LeVFrZ2ZibC90VEJabmx+SipoX08jT3lycUt1bUFAYjQ2PjVnYkJvb1dxUjlOIU9rMj4uY0YjWCpobDxiIS9UdDZTXkZGaV4yNi8rZWIv'@; put 'SEJlLzd0Umd4KnZ7SDQmWVVjaDglPlk3KEJgYypqXTkidy40OXpOJVJ8S29pb2J+XlBFOn5UW1tVTDJPSnk5eHVFTkZqZn5yT2BfNWREOCZ9KkJfP20vQTlfejlMNm96fV5JckBzU0xRRH1QcWR1O30jcCUwSyYkIkJlc0NxamNnZCRaV0NGaHVAJkY1NjosYG5KPFRsUnl2SFYwRVVrcj83Zihf'@; put 'NEwpVVRoLiQieTRIKnZ6b2NZPFhzMHNxV2QuPCRPI0dlRFlvfiQ2clBfVm9TOXZeZDc7dWcoSXJHfmBnUCY7X096bWd4QnRsbCU+S0dgQjZZPz5jRytyVU9NREZ1OT1MRlRYYS9baEVLY2hjNywpVkRkOFYjSWl7YmBmbktHfiYreW51elE9Ryt7byRvWTU5PWYwfDxVIm5VYSMjSF0mVWNBT05T'@; put 'ZihfZVJjUiJ9N3xAeH0yMCYqI007OWpxentVQT13fTJPI1dzMlJkUmcsSVMzL0MqLitieDlOWURPR3UqcFZxdyg4TX0jQy4sdVZNIUV7Yy50YExjYC52LGAwNHQuc0VeLyVrYzZSV3pHc2tLbzpubFhBTmNMYlpuMTEhIiRxIU9MMEJKSHhBRHJJYTpmZVM3Q0dYYz82e0pIYlhIQWw2UjxRNXZl'@; put 'eSNlLltEZWEyISNbbSpnZT4iaFNaKjwuRFlPTnp0a0xzbHFjK0pmfiFEeig3UjlvT09oZyQhbzFYKFJRd1VgPk59WGAkaEx2dVIyPlgvIkV2YCh0eVQ/TyY3MWU7Vmhye049U1ozVn1yY0prVEg4ODM4eEFlZGBObEZWUmdsMzs9Q0I3XVBXW1RDezFYbmhlOz5aUzU6MG1YRGQ0IXB9NDhZMFgh'@; put 'bmJ1eU4+cVYkVD9eVGsoTitMQXV1QiNEdkd8JnA6VHw+X1ZwaEt+PEFpLG5TKiRGNztdbGtVeW42MiN+ZHZtKjNdQm5eQ1RJcVklaFheMWVYWHY3MT0xPjZIO3NoSEQua21xe0xTKU5JSEdvRS83PDdLOVRMYC8paDE8Y0Q1LDpkODs4KT8/My8pWCJhcm5NKl5VIVlmcCsxUTVxOmFOO0c+RilM'@; put 'Ml50N1B7KlliQF42cVI2ayNHaUZmSih6OF91c28xTWxIKlclY3dMYF1RI2k1XjN2Si9KLGNlclVzaGtXVmZhKT0qW1N7VHVAe2c5TUMoMURtL0RON2dIaVBLYk11KUdWOTk6OCw6YCo8SEh9KkphOnl1YWJOOGtySGhrRV5zdyEoYEwoODw4PnA3Nyg1LGAwekRtalVAIVtsSDMkK3QjTCZRJEtj'@; put 'YGMlTlphZkIpZEZ5QFNyLF5wUCNNYVtaXikvI2VYVGFZRFs6PHFFZzc/cGQ6WWJrTkMhVyQ6aER0TWxVIVhwbnhUME4oRH41JFtubXAkeSg0ZzJkTUtVaFRRRlRrdHZDUXRhb19VanpvXXUiZ1hINTJOUHZLXWV6aUJZQlhWTlk9ZDpvTDg+VytUMDxBMj0qKDYjRHZ2Vn59cks0cSMoTzdPUmgo'@; put 'YkZPVlBVeVU3fSw+TStPLD4mIzNXNCZWW2l8Q1V5akBOdjRTKEhmbnZ2RzsobkM6K1s7UCNwdiw9UjpBcTdka30sT31FZHh8JjppZShiNWxIKjBddiM7MVc2TEtEcVNvLkx0SCRJSmwwYUt4aDlGRkMkOVc9I3h4YiExP3lCIXQySigySVJ4YWFGUTcrSjlOZEkvJjZsdV0zMUprUWQmVTB4Yz9R'@; put 'Rj5OK1QhOXRTezAzWztBa0RNREdhdlR4amheVnxMMzRKS0RWYDMvdzF3cC9jX0l8d1RvN2teak4jcmYvUnk1Y3JTJGpEL207YHVCSXNJeD57TlFgVW0+d31ONk97VGp1KSUrNFd+Im9lSWZuOGhvNzF5YGN4NW9JODZibk1dVmsiaENVblsxRTUydjhNRWB4JD5ESTBucj1WdCpzOHVyO3xzWC9k'@; put 'PER4aUY9a3JAOCZvSEl3LzYhQWIvKWk5bCUhcSFkZD9tTGwwdz9iWipiVyYxNCUjOko0JFMkRXU2Y19XMXJQRkI2RSFUIyViQ1UmZ1VvYE9QXjhJQ29Oaz4/MFJeSFRhcm5ibSpebC4kQ2wvaF9meDJrXzsjRElzNGFuRFh+TGozPnolUCl7Ilo0c1FpdnBPU1diQjtmK1N8YmVAOCN2O2AxNW5S'@; put 'RzBtRyEqKkZuZHpWYUchdV9kRjpWTSNaYzRrRFl9fX4qe0lRZmxHKGhXSXBtNkJ8OiUsIWRMSXwjXX1mW0hEVSUxI05TUW1xfGUuZFg6K2FpKGkhMFcoRWhkQTBIfSMvKUxoXV1pND0kUTBMaEJ1MCRhLHRzZ18rRVg0Q2pOTi84OEc9cGNZVCZUVW1XbmdRd1c7UTtVd181Ui9ZNUNfWlUpX2pY'@; put 'Ry9JUDxlRjl1bG5WUkldTjk2I052bWcyQDJqaXJUaW04Y3lEPFZgK307bH0wY0BLOXk7UX0yTkFeb3hFc3RXc0VVdGZCbnw5YFM0WHRTO3c+PEVfPkBhVzZAKShQOFpgeilmcztGRDBVXV9rNTNIKkpXZ2k9fCQsKkFuPF4hRyEubn0oUDFQY3N2K0syKGVKbT1EMWVHOjFHaG9TTEt0QSVvKjY6'@; put 'UkF9PzVDOjYjLz9aYXlrWEQie24xTTR6XUNQZnVPXXtPY3w9JF1EZ2dNSEU/M315eUZEQ1Y7YzcySVlbJDh+O3dpNklvRV5WPEVBUG54fm5PazdJZ09Kc2lHQXB9VixvIzAoYlh7fnxLSzxSOFVdNHdKYUY3bHUxO0lCeVchNG0jc0ByW09+LjtPOWBxX31Ob1BVRj1YJF9+XT9IMX05dytPbylO'@; put 'UHxadEpGfnk5XzpmQUFRclBPWXttW28/T1c1Mik+dnJUZ0Y4OW1UQU08K01NUnQzNiQpLkNnUXUwJXVLdGpveTp4R1JoUmMheWsmL3ZUMCEqI3xDVilUTy9wNiRuP3RVaEZEJVM6V2pGaUk5TmopYTlhVlRVMHBQL0lpTH03eT8kVFN7V2lvZjhpJlR7ZHpuNiRAOT5BMmslQ1VARU4/XUBvSHla'@; put 'bkdFdyxNP246Pi48Sn0hcFZfInsrRGF9ZjpsPC54aGNtJGUjRTB2Mk50MzU9e0lmeDd4VCZSIyk8RExVJTQmNF83Q2tkVzZmbix9KXBfa2F1ZChFfiNRYWl3TUpdU0pvJEUzO2l+JmpLfUQ8SlglYUM+UCU2UkYxL1chTlEzYERWSnsyVHhCbiY8biR8Ui9DQmZIJShndTx8dUdjbXVVPWQxKnx+'@; put 'dUAkcFA6TDpFL0cwbEloNCxpeipDcWhwPVs0aCh0SipiTyE+ZTpbXWZ6Zm8hVTxgQm0yKip7b0c3cmtOTmlyK0lSWGFKP2hSPnoocThdWWdZMXIyaHFKa1Ymb1p7RjlHQ2xGdSpAVT5PMW5zTyszMkouJUJvdFNTMkgwZ2NwZituJiQ/YDoob35Ocnh6fk05U0drZ0d6ZXpON2d4K15hOCt2dT5A'@; put 'WVU/I19GWWVFKX48YE5dSH4+d3VNeDVqd0NqVUt4QD4/flVAcnUzbCVwWzgzbyJQNHJhWUd3bG81KDQsOiZoUmx2LGwsX3Q3YypUSU1gRHpvTFVNSCRuW0hvYHk0M1BHOy92TC5+bG57IUMpVTw0R2I4PHpHKXU6WThuImNuIkJWbjsvV0h9RTtdTHZvd3omIVtpZjw8U29aejQpdHE3b2J3JF1n'@; put 'cyVSa35oWTcjTEhaOHdqc2FiP3FPJWJFOndKeE1dK1RgSG52e2ZkIz1hWCFUV1djQzEoUjd1b3RwMzk2VG1vLHYoXS5vSk0iKWI0S3EvaE9KX0Mrd0pPOi4zcnZINVlxUUBPNFEkNGleNX1OfDxIezNzaztlP2Z3by9ZPHFec3pvXktUOEZLWXJVMCxqeXtbYWNNdmR1N2hHI2loZ2p4czhhdjdC'@; put 'Ojh6TVpsK1RgckVVcGQyYSZbcW4oOndQT1VVT2JJVTg/ZGRmQW1OYXJ4U1F8VWZAM1RvRDZJNXQjaiJFe0xSYS9rWFkkV1syM21jNk9Ye3I6I3tEIWM9bzhhT2AqS3kwRnVKa3hES19PSUohUCEzNjkhRyR7dX5fR18wbildWSg5Y3Q4dFBKME9mKUM4IiJSaV9JZlYuLz9yfGZodFA9RG9RaEV6'@; put 'USkvWzw9JVJ9UzByOmhyZSZJOm9QbnxqbCxrNT1NR1QxNXVxLk83PWFteGxAZD1mSi8peCFbYE5uamxsajR+L3EqR3g+M0NFNXFdQDJuPCMvVGQwTF15RUxfR1ZSelUodFJ4cVIreSYjRCI8YSg9OFBAMm9pfUpDP0A9ZHRga3VoT0woekJJOHZoN0pse0M3dnpnNzlFKWJNflVvZSF7djhvN3Rp'@; put 'PHkmekh6U3M6Lyo3NnIkP0RtPyNPTGs5NjV8dSlUOmMjYzZpNChnQmZnPFFweSFYQE8jbUtFWy9VRXxecmNAYWBxYnNFclhgYnpDaGsqcHZDVmsqZU9IcDNkIWAvUW9oIllAWXBofCpPZn4sM0pRSC5KSjJULF08KWlabihLXzB+RSRBN3xxdTBJQ2lAZElPRERNYVJtfENkPkRdT3JvKClXK2ZE'@; put 'bDVmc3QvckxNQlQ4KkhwaVFBd0dffn1mWGVUekdKVip5XlImVWRIUEElOUFFUXF9RnAjc3BrL1pDTVJrcGB+YGREZT04bnBrcnJ1NlE3cDdsVGZTc3VrdlJPN1FLODdgJndJMHNNS2NYVGpyWDFJZCZyKCQ2KXQxPSkkVGg7VDVILyY7Wjc+YmIzRjNVaUFFdFZqPVUwP0JRJmwvaz5OVzojOzMr'@; put 'QTBva01qdTxCczpQLH1oKTlyQ2ZdNSJqW1dLXXYmXmVjVWMlWDREJFMrdVtgJVV3YDFqYE0kP3ooJVovMzA6PyZee0R1Y1N1aElLdTk6YWFBOTR1d2EwdDpPeGhSL1dbP2peVnhJUWc3eVQiP1l+VWplJSRTTWxmKjxvQn43XkNOP15nM3YzdGdgKmhtZkRxQX1fSit5JE9Hay5jbzB6WkJZMV03'@; put 'PW9mI3hdKHltTXh4TiJyeyI4bU1JbVtAayZSWzBII0kxYFFdUWwlQF4ieFE4NkB3d15BQWsmSWdqTFE7TzppTmB6Q0h6bWN6QHhEXm9zTzNdSlsreFYobWEvVnAlRilQN3JtNnlYPjw8YnsmfjghTFQ6ZV1GbzxFZTt3TS5dX34kSFc4LEJlOSVsZClldltMaTdiPnFzXntjbkE7ZkJDayp5KEVX'@; put 'RlJBKWZRPFZwJXRabkoqWTJ8VDFFMmx+WFBANyVdWGtuUXJ4Tn1GWDdPMEdQWn16RXxvYksyNUM4KEh2PjFCRHgsOiFbPTFMKl1tO31qR0x0RW1wLF1RR0NjSytFen0mfXcmeXhvazgjXkUlZEx9eC4zMHckeVpoX3tIfH1PNTJ0T1V9O1NRZCZWViN4QmFvIy5ZaGIuWWFncTNlM0x9dyIwfkYw'@; put 'e2x0T3opeVsoS0lELltlKi8pOkRiP2prVzU1XkRyUW94Vn4qMTxmQG96O0kkTCY2fStsUks4JnQ1TklKdH1Ta0VnR3s1dDh7aTRBPUZ0NzwvRHlBPnNkek9dSUM6bipsblJERmZ6IWM4fHJQPUdWLkFURnExOS8iJEQ/KG4pLDt4QlswL0ZCTnJ6JEI2alNLKHtZRCVbcj5jVVAqMmxvTE5renZN'@; put 'eE4yK1dzfDlZUjoqb3NaNW0zVEUvJiNmQmh6UyI/UnA2NzpWSzFVY21gbU9BTzxrOnBNOCRoOXswZ1ZSZFZIek1JQmplZUlVMURCIT44ei5XWS5PZUVKZVVbdmhDNS5UcGBJbUNmM09oZjBQc3hzOCt3XSNDMEM+ZjtPTXE2RX1GcHBXPVo0dXl5VXQvIVt0VkZAbG84WSRBUXcyW3lXZWN2UV16'@; put 'TylDI20wYk9pXV1zZnZRPksmakJ5QkdeRyN8d0IwKChscypnPVZua0t4eCp0MFkxKG1DdVJAVk5eXVFEPVFIUyF1VW5WQm5nZHkqb1UmZ0E6S084fU5dMSh6Uk5fTDFQM0UqQEFoclhIWDJnSmE5eWMmYS5OeTc9emIhPDNjMlQ2PmYpdkg1YF5NXkNfY1peSTE1WlRkb21aaT9eZmFrcHYjVWJY'@; put 'SXFbUkBpSG9qV0t3UEw3eiY0I3BrSWxgXixBK1M0aDhPPHBJWko5SGhJfU9MTEphLnJwP3VkV3pRW2FmOGNyaCkoZnJwI0ZML0J7X24wJGBTIWJpWClSd3ljYlZPMDhdYGssRypjPkN4O1AyO2Uhai5YNXpaOClEVGB7LzNWPyZ+d2NZOjhdbW5nKjVPQDU6Jitnbj9FeE1kPHM0fS82ODR1RXdn'@; put 'bntKNFIkKS59bmlLT0tvWFNxXTg2Yjk5V2t+SSpEey5jY2dXI2VIdm5nTTNxPUJWIkF9KUBQZmpjRnZrNlI1aTE8IUhOWDJEKUBseihfZG94NV5Vb046UEg5M2NQckghJj9UOSs3RCxDNytlSHltVHJ7d3ZuNkF3I2ByfCxrYiVeMWAjcEtIYUYmcVl0JlU6SWVvJDBrd3V8XzlzaWM6VV96Nzk6'@; put 'bXZGWnQ5bmw8LkVYd0ZwUWsjMDlKZ3MseDZQbndkejtDPEVDaGNgLipTUj4uVVlaRz4xWkdZKDIzVDh9M05UfCF1ZEx8byVZemQxRzVNKkVRcDQlPCpSLCVESlkwOSR1MDQ/LHFMUVlySC9QT0pQWUljWzpNRjN5MVIqYz5NUF8mQmomPDIidzRHUkZfTUpvfWovWCM6QnJ+dXZrKEhAOGt8eFpJ'@; put 'eyUvejVeIW4yZWxXSn11MWc5aXg1QGV4YzAidGxmMThdUWJNNmNPOysrRC5lXmBuU00qfldrXmlDPExkIWZCIi9CRnNyMnZxVXZCeC98OlhUaylpJUh4KUJfOVEieVVVWmhpdjI1WW5Mb280PTJwVkkmUHY4YzlyS14xP3BKVk54Z3NxT0lHbVhte19yTG5JQk47Q19WSTllVWhUJmxOWD8+e0o0'@; put 'ak0/Smprb0ZHfU4iRDUlIncpOlFuV1h5cXVKOVdiLlRhenwvOTpNTS55U21lWUBsaW0+QTh2PmQ0fENtazx4aXl8cyFycilLPEc4UkptLFVbUHgoXnI9amhETl4wNW4qYzdZZnsrUC5hZnJ4OF4sK31UInohW0NJKi98K3ZOMHdAKTVAX3Q6TGw5JCM/UkI1PV59XzBUR3k0WF5LZmZ5TVVBVkJw'@; put 'fHE/JHN7Xit2VHg5ZTw/XUpfciVhTmN2cjdke3VRO3VwSGs/SyUjLCRhPyVXMTNBRkU2NSM0YjNESCVhOkRPYkouWHFUZ1s6SF1vcHFWSkBrSCw4IU0+dnIrcGlfWjMjLzZTQXY1dkVdWDhdSyF7WyRgViV4MCg4Z1kscj0oI0k7ZmNQKmFvaWAqayViOnUoJkEydntaQnQ+SW43ZXcpcU1FPDVl'@; put 'UF4kY35bYDhrbkYqSl8+d31TcjJ9dWdgW282aHsqSXMqVThdNE03VkVqW1l5TThKI3JJMH4kTWF2OFhwZ1JYcF03VU5kYEc5NjJwVDpAJmJzXWBEPTd8PGdWKnZeUSouQEx6TTB1dDdvQkpMW0Z0PmU/dlB3VFFDd30mW1hZPjddNDdVPXFtd3YpQXEzYUZNfS8vSzN1XyZEbFZVPmlGcS5UXXw9'@; put 'UD1KZkNDUylKTj4wVTlfZEpDbUpZNTg2Um1DYlo7Zmp6Pjh8cVQmfDldMnByZUpneStsU2Qia11FbFs2cjFPcVZnVDtUSV9xfHViPzxBMmFGJjQwX30lQlBVdkZ9cVo1OmRpPGIrMWlPZU50I2d0fDg6fmVYI3RbWHNMWkBNJH0rTn1paWIlMmhMdnJOayxKWz5ha0FNRytvQ29+aVk0IlRvNDpr'@; put 'WWUocU4hdD0udT40Nik4JlV4cldLdHBnLGxsQi5tKzZqdz1LI1hsbD8xeCtfNC9+NXc7ZztgZGcsblk2RSxAJDEqajpCL1JvKExbZGBUIiFLRF5AYlFjW1sjdlVXWHIvOWQuMHBKKHRqWjEvRjJ7Q2A8eVl7fDk/bnxjSXg9Mjw2cHAyWS94cGFFbDZxUFZwYSVrejFMbUh3QjVybn01ZSwyW1lq'@; put 'SCQzLEpebFpqIjl8fCF9QkJxVU0rJHYqU0h0aHMqRTBTX2IyYT1NNlFvJSUkdTQ8ZHtyWE9xUV1WKVtucik5YUptcVM8TF1jdXVhM1sxUkJZdmBdUFNnZU1zKG93fHNxZ092aXFqO2lRe1clUmY2bHVMMlV3b3dfUWchbzR9UGw8ME01WlgmSmt9QlpvRCFBckdbO2lgdEFLQT42Sz4+NlVQJndB'@; put 'Oz5ubFA3SltSI3J6Syo9UU8yVjM+LlB+QGxKcyRvaFFtUzUsfnNwazp8RVR2R29mYGdWYkQyVT05LnFpIzIsfDNNIy9PZyxdbEI9P35FTjdEZUs+KlVBblleUzRIOyYwXXM5Qm5hRjR0I0tWLyFsJGVQKyl2NixdPCslKyJ2IyFOZ2dnM1B4dFowXyFXd3VQbkpyc3E4ci43aHY7R0EhJHJ7PHZS'@; put 'V0E0XjRQREsydlZsP01gd3woVDdAPUd1LDlUWCE3eSxrWndRVGs5dlt6PUVzRXhXRl9bVjY2L2ZoXjtKSGxgRH1UTGJscEM3Vld0XlVsMT1zNnxrTDEqPUlzMyVfQ046WSpdaERxP1EqN3tbe0o7cDw6MTA4PCxsMksldV1DOnJGbzk/JVNjSHxlKHZ3NGkmMytsMT5YO09pWHV9KTExazBbKyw+'@; put 'fUhMQkpgQlV9ZFNhfmtublgkUiIxbkpFZSY5eUkqRikpIiRifkdCYHRyKWVzOzg3ITpJNl1Tb3x7cj1LeHxvWmxZI0tNLEE9LCZsTzMoNCszfXA5PGp8YzRWbWR5Ln17bjVzM0x1SGswfmgoZyU9NTdeWVRKeClHPD5rWWBILnpUcjM0UHExayQpd3grL344eU5Re35qK0MsO0FrLEpBdylsNVYz'@; put 'RXdjVFE+dSFTd19iVnM8Njg7U2R2YEVFMGdkUmR7P0Q6Qi55Sjo2WTxyQEY/SlRbPFBPNDRzQE0uIU9FXyNQRSphYHZAb1JHaC95UnUkNHd9dnVxbXBgcH0kXztFLDNkc0g/TXpZK1BQZE1rfSNFR0NAUjtgYUViWz9NPDMiaXMwNEZfVXJvU2xNIytCNFQ1dTUobk9xZGMmWWJicUEpMn4pT3tn'@; put 'TEAsKXw5dUF2Sml9UlkpQkNwSzl8eipIVz8zMEhwVWQybmNjUHI4NWhROFh6QnJpRHRoSThudCg2Xz5eIkxYbHcwTWBxZEx3TG9eMGpYSTpgZDZoIjNzRiVaOURabkMse3poPkcsaVhqNTdSSjRHa0crdnhKVGh9bTpxTGd6PThTOHdxSm9TfWJmfXYuZTRGZzUiSllNZE9ydCQvPmghPnE5L3cp'@; put 'KVBVY2hOT1ArO0pYakZ3dilZaFFxUlomWlNsPXlqfkpVQShaWyR7TXN3QzhhOHc2NjEsW3p5NFd7end1cjVqWzpDKk9eVnw0RHdgMUdScFBrOXZHeGlhRkt1ZVNGSllqc3NFfFBdfCtsJmtUa0UpdHxET3U6TWhjW2NjUTxPVlImJlZ3N1U9MD04TTRkL2dLO3xaaF1rd2M5Sz1yQG16bTI7ZUI8'@; put 'a2RxN1pEIW5kMmFASklXQ3F0YGY2KDxOSDE4cClqR2tnYzwwKyFmVTUlYj0iTH0zW1N7Qm81TkJRW0Z5W2xXSGdGTlNKRj42VWRdcW4mUGQ/UnleUVMsKzcodWY/RVNGcHJebikvV2A4X3hkXkpHJVRTXXJRalc+PFlTeTFGVT0rQiMmZCQrdlFKOHxHb0tMTjMwY0lWV25Sey5zNERjTH4kPVk1'@; put 'K2FMcnVIMEt8Vi43LDZ3W25UeURzQFFSL1AwMS98SmgyYWBRVHBTYiV3Q1lQbmMwUFdLKzk4U2NAa01XKWJyaWd9dStRJWMmRD1XblMxXXkkPzpMXUBqKTY8Kzw+bywhTDA8QjFbTGAxS3NZLGBdemI9QWFrUnhaPWZWfWp6R2pEO0cranY6eHtuY2spXlVzLHgmSksvXUleVlJULC4+TVZTfH5o'@; put 'XnYrMUdMMXgwW2BlZnUuOmZkdW9lPCZNVlFfWypkV35sUy44SSN+SWxQaFV7K1c1fFA1dT53WEVZI0NoSHBmI2Fabzwvd2drJmZsZXNkcEpGbCpUIWoqIXpLa3xdflYvJS9lLiZCLDlySWd1fEhPaCFuKEN6ZmBYUWI1NUBYLEojajFoPnR6PWpEd21mcGEjfTooTFQ+Vz5IcjVCMzVLNCwxaF8j'@; put 'SXVCIjJgPjBEXy9FUlQ3L1dtLnR0NkVDZzI8VD5nTjt9RkBbb21IaytxKzVIY35qKW86K0VZcj1oe1piQmd1RUsvaktQOnpxenJpMlt2Jj5ZKlh3NSF2KGpyOl1jUDRBalZtYj1weDplUl42NCRoZDpJUShTTSZTXTtdYilxN188fm8wUnNZaSx9bmI4eXoud0p9UCM2bXpSMil0Zm1FVThlN08q'@; put 'OVdwSD4qSikyMD4xe3ZIPSM8czlYQDhbRFlsTnY6IjB4PGpIZWRVaVEwPmVjTT5ALll0aWU+biF8YWw8WlVSKHFrY1k1I3kkeyhNfH5JeyQ2TUNKZk0rKkNCM25KfXA3VjR0P31XLnBMfWZxLmVMPlc3S0RmUCI9RkxTQzRDUGM9ZzgwMyRDI2JOOng7P1J0PkdUNVcycUloQ3wrYiNtfU4zJlA4'@; put 'b3tve3dtUjRCNyZzQ256VVFOMk8yP3tOZF9kJj9tU3hlPGkhdTNDe3h7RzBKRSpST0sudFRwWVttQH14ZVV2Tj47e3FnJCtRblRZNGYqYUI+WT5CclU6JkJWYDYmOU4jOEZpTVtaPD5iJSlxIzNaRlk1dn0kPmBpeXU0dWo6PEZWdmh1a2BfQ1tfPSI7WWBjPSptSXZAUC82U1F7R29yJT94Z1Y3'@; put 'I35rZzR9YiNsMF0heyk0Z29GbClmNjomMlF0WnE3Pk1JfmxzTU1GZiZsKEw2LkBrKV86PDEjJWIhRW9HXklEJTVCdmpdakB1KiRlNyRmTComR1JRVXFYKG5mIkVneXhTTypuQE18JWNKRWdMVHl4YylnTHlyVnV3bXpLJE1RfmpPOGQ8YSE0OHBrTjJuSztuKzJmTzswOnhjM3E/WG9XWyRHeFJn'@; put 'SXpbTH1UW3xNeyxVZHFWOz1kMTVoPFU7RjJbNWNNSm9yJT5vdlRKeCFRS2B+JiJlWVtlSjRoR31dMTAscmdQTix2XiZzWGBdZmIzN2B+YihLMVE4LDtrU3tmbXFUdFZxR0t7UUBJP2JWViMobCU/JW5ye3FPUXx6eU5YYHQydiVseT8zVS5LPGRdXUFDRm1XTHFKTjo7bTM7QX4jaCgzamU3WC9v'@; put 'R0NiQTZfLDQ2Yit3OCNkbnV1dyF2JDw4ZnIyKklbaClvUmxdPkljRF1YL3xJPmBDe3ZDeFd3SGh3ZH40djJIZiE0SWU4TCtWVilFZDF7Y0lCbVdxKUBTdzBmYFJ7WEpbK3dqOF46Rzk/KDNCSjc6JVg/X3NpQ0R4NSNPaW8kZChkY1A1eS9VRjk4ZFFFZTs/LzA6Zzp5XWRbInZtKltbNVV7QWYj'@; put 'SWtsZUs+MyxfcCZsZWpsIkV5Om8payNAUDZ8MlJtNH06Z1YwUWU8dCVoXj9LeVBkQCxyMGk2NShCJXA2V1czPTVBMyZWfSFhIWUzTT8zcX4yQDM4THcpTTE3OT4kJilJWW16JmJocjJmfUZuVXVdJkAmT3E6eEJdSU9PQSk+dTtqL3h8YjRWTVdzOS5Nb114b31TJmp3SFVFTjpDeiI7UXJlelFQ'@; put 'RENQRnc3K0BdY1NfVG1udzhEZ3phMjxVU1MoRzliMXchQTBwdUcvOSlAWlklNkwiNG49dnkkajNONHV5OEY8QzxYQENJKnE/ZF12LzdFNzB3JTk9KGA2W3I7RnIpOzhRfiJ0bThyMmpdW0YiU2d7JEQlbl47fVVfPzhTVUw0bDpmdXd+X01CQHFIeCZBKF8pSCZVQDBDUUR8RFBPdndzM1NAVnBt'@; put 'cXxTO0RhQWR1NDpiMEMhNkMoWXREeXlUYmU5MWQxIk85YzE8TXI/T1giW0NrdVRIUCRZfEd5RGxWODt8dWRxeTZDeFF0R1g/U1M6NyJfTVVtVnZ3Qy9pMXlOd1IhdHI/fG58OG1vSSgpUjYva3phV1FPT0RYQFN0Yk1mPUIyUiwqYz5yUmQ5SWxWfkVMMk1IdX5BZUJYcTRGNWE/cntBISV0O0Qh'@; put 'anN2XmRQVl82LzpsImlofXdwfjhhSEduNEV4bWJ9dUs4aUNXcX1FOTNdemAqLEFJd0p2VSl7RXNbLF1SZFAjeGl6VmluYWUjVEEoVj9VOj5MdD9vKHR3VDBRNi42VGZacyMxa0lDZyFnO0psIkdld2svS3FJfnlqSXNKdk9WPlheSF5dVSo8VHsxe0N4ZW8+eUVMenQ0KVBpXl0yRmpaNyg2ZXh8'@; put 'R1k/OnEjJE8rQylQZihwS2YvT0tALG1yMEN8LG56Xl43JjQ1XmZYZXdSL2dLeDE0ejVlKVdla1cyLkF1NVl2bXFASzJwMDFUKyh8RlN5UkNZVnV4IWt3MXkyeHJlTjs1NzNgRnRwSHFnZEp+TGwmSEA8Qmk/NCY3dEVSYWZLWz5LRmBEVl4wRjpMUWZ6TGNeb3hLc0lEK0F1PTkzWFQzJko2aW1g'@; put 'YFdfMyRmJis4cywieWBqfFZ8ayFZP1FveS4vbX1TTFtpZ0hDX0cvOyl7bjFJPU8iXUJGdGh4P3ROfVlZZT1vcjI3fk5KTjspNjpXXXwwSjZwLnV9NDVlYUQpUDZkfXtTY0p0MkZnbDhgYn05YT1tXipjSWsiZWc/ZUhiaENeKzpee3JRUFBvTm1rVzdWMDsucmdKaFohPHtBeVtqaVQyXytCLGVd'@; put 'Pm9ES2JJNWhMQS4velIsQSZvOUBLb0RoWnUlST03NiUmV1Rue0tfVmkyKkJvKHxseVU8e3tra3dnTU1RIyVoYE1fbTtsTWE6ZUtlJWsqbklDeyk3b3Q8Uy9vckpJQUA9Nytye2ZlWFAqPEc0ISxAdjlpdzhhQ2FkZkJHNz1OU342Tlk+WW5FUkJoRGB5dGtGSkEuMCImOiVta0Y7e2Y8biRTN1V6'@; put 'NXYoMyM9fHlxZDsxM0d3WjteI09qfVY5MSNdazQpQ3t9VzxER09wLEI2VGJ7SCorZSt2YyR5eGlLRGV5WzFbMVsxZkUuQVE3WWgwc0lMMEtsdisrOFRZQ0lBRHdFS1MzL1RlRDF4P2hxeC5pT3Q9fGpDb0JGYndFM0Q6MW1IYVNDKUdHI31dJkZVZSEvNitRSERmW3A2MEdKTW1WVUB+cEo9Wyth'@; put 'Xk1BOENsTXk6bEUjdDg0S0pxY2d5Kkd6c25FK3s5ZEF7MkNmW1grXXFKdHFrVGNbcE99cGVwWnxddSVUNSI8NEhgNnRlcStuUH15Ry9XPE9oPDEuL0pOYmh4a2UrYl1fSVtWV2tHZTFDfSNgWHZKWkA9Y04iSTdMNChQZ1o6PjJLQXNvfVY5IyUmMFt0cEVDWUFheVMyZDpDdT9kPHNwWFZVQVV5'@; put 'Jk1TajtYaWkoRk52O1hTTX5iV0VZSSE/M1heTDFLN2x5QVUqVEJsPG97Ri51OGs0eGQkM3lubklkaUp0O1I4dyV4ISs+YSlnfEZGM2tFbkU2QUR3OXRQXSFmWCVYJHJUYl5lQD9qPC5TN0xZdDsodEFlcy9wKy5ZQ3k6YDFsRnp9M1Vqdkw3O1lRM1g1TClwfWRWIXArb1lDeWpodWZVT3ouUjRA'@; put 'NHhAR0lKWFZqZGYjfkMySGIiKUokendpZFVpRXJVXjpGaHZTK3M4Wz1XZ3g3cHVUXXNQXnAqZXFwPXs3JW04ZEJpKEFiKkhHXWMvcHZfTjckTWZKRCtYPl5pcH14R3l9eTZZRl1ydXczQlJpMFpPKC44P05wYUU7JUMrczFAYlliVVVYMzxlXVdxPUd1KHteX345VEYhWCR1Lk8kMDExXm1yI0Nr'@; put 'emZXUH5bWTBZV3FkVlNuXlRCWVUmXzVfWHB1VzI0QndzX1svbnZDekcyIkhBeSxuSU0yY0BfN2MxVixCNFZhTy5LVlhvbDFCZXdGXVpZZntaRmBmPXZdS3lFI3ZiKmZCcl9DWWRkSUEqW1pZZntzRTl0bTciRlppaEZmXXRNfHRIJGdnXjI9WDdpWW9OVl1OWCo0dThmI3ZiKndAbHN3dTR0MlFa'@; put 'XVpZRVhLRlQqPCQmdCpCVC96d0l1TlBgQiZCc1A8RU41S0hEYWk5aEY8fHJCQGBOWllNc0V9MXlLRXl3ZTdqcE5IXnRNNyxaUkFpWWN7bztIZWFVIkRjNFk5V00uLjQxRTtTbHUvSlR2USViVlNiTE56WHhBLFZAaStSPDQoNyF+WVlHNnNJNV8mZmEvXmEmez9ocD5zdE9WQ1ByWGdfOV8uOHRK'@; put 'ZyheQ2tCOkdyLl8oJXY9QjxhRHRmJTFPeTI9YyMqeGMxIi5GT29DSDhDIkdkP0xeLkdYUVdpXU10UGU2dGVtKExQaC5Ob0FaYjNmTF86WTxaPTY2MkdOaXJWSlJbQn5KU3gmNGVNTUdGQ1hjKW5pS2o9fCxGeVpbYiwoamw7fCxBdjhyX2gsaFNhfTB1dD1ES3crZE1uc1hsUF1MVGVFbSM0dWVM'@; put 'MzlrPE9CZ3V2V3UrODJmVW1Sb1VJYDRSez5fKzc8WDplYH11ZmZTRzcmalhtfGgqTSh+UCNWVlBtblcpWDNHcTNCKipfbTdvME9OclFgVV4vKzUyK1hxOGFEVihPfSFXZnlIfiFjZ10kYll5SEdMcW96N2Zja3RpMEY6LF97PixeKzM4bGJ5MnVCdypaXnlGRlI1KEQ1dkJxaWtGQGhAL1FTVkcw'@; put 'cjRoKl9odEtCSH05V0YjY19BVGdeJUJlelVDdlJlWDZXWUB1Nz55RWc9NmlARE9tcCwlY3wyfSRWYyhOcV87MH1CW0N0fT9NQTR1ZFd2c0I5IWcxTGRrXVUwOFd6MHJXe20uUClGKkRjXXN9P25CcSgmbGdwQ3MhVy80IXUqS3ReezRHPj1pLntKLlJ1YE5mTUVrVmksR0Z7eHRkMkYrZERkRT44'@; put 'IUFzOFlyKkIjflJYWSlENzZoXio9TGJwVVpqKmA+Ti9MQ2phSnNhODN1OS9pSXEycW44dHIhPj9fKis1aylHSVJvRGV2aCVyYEVtWnpLOE9iUy5aLnJKMzhoWT8wMDI8Lk9UR3A2fTVrSXtFNDdpXXx2TzNOYl5qbSFnc2Z3UnZoOmlweGt1WXYmajooUVFiUmYkXWR2JjJ8d2pxT30qNUk3KytJ'@; put 'QThPe2Q0P2xFODJMVDpOI0FfPWRpYUltKk1EW3J5aW45RFt5TVgvNlU0S1U+LzNpM1JpYkVie3xJN0o6aGh0dlY9ITYsbmJYKTM/YCpUZ1tKZHpARmNMLmchL2FrSmclIUs9LiVLcHNkLFM3cygjWCZga3ZbP0EvYmpMaGYoMmd5b3EqUlpVOz1GVH46azNabG1ATlNbLnxyKGcmWTEqZj5gWGMw'@; put 'LCNTJllGdnJoKmJBT3oudjVAZTtlPW50Yn1SbFBDUmNwQ05UaGJKLmRYW3UxLnwrSCszO3g3dkpnMk9Ee3oxaDc6WD44YmwiTzkhSCVDVG9WOFh7VXhgQDt5ZWBQSHFRWEQ+Tl9KfDJWJSEueHI2Y2gqSyh1ZCRTanVPZzdGey5HcUw9TUslZ34pQCxGOEM5JD1mXzZZM2g8NkpJT0pVZTFNYXIy'@; put 'VVlgdSRHS282Z01pYFdLPmx2JU0oSl05PEV5dUlYeEkxM3lLZ3Ujcjl9L0hGSCNMTkBJLilWTnYmV1NGXW9gZDJHci9ybVFZWypuMiliVHVTKjM5Mz5YN2J8SikyaWs9XWd8U1Y7eWBtLnh1Y0oiYV4/LHFkKztFdE58bmwmRXZITzR8XnhkQD16bUVYX3VCTypEcU4zVWNBK2RTKHtFbVFHRzN5'@; put 'eS59YVhWTCpuanQuYDZMNXRYWV1oKD1VWXFDQ09xKSo9bTpxV0tvV3xGPFVZUlpfaFd8Nzp+NWRDU2hOJjVNKWpCWVtHU1sqeHtSbX4oNSg0N15IcCV3RGF4LmBgelMkOCNwbzhtInFzX2d4WG1DUVtbd2pDO0RsLmE9X2lTIWNQI3oibXN2VkBFYVc6WUlgZHJmU1BffTZzW1A4M3EsYVpPTnN+'@; put 'T0wlWU5OVWhgamNXUjV4fikwbkgyOmBrc0M/RiRrbUVXQjpeOFJbQ0krZlM7Wk0xJEkxNiFKXlU7Nks5O2FMX3RxbmV9Ok54bW0wWX1fan5CaFIoNWR0djJRRzBTXTwqej45c0Juamd5MnV2QVYyPTBITUdQZkJVYFJpKi8uMG9HPz44JUhOekZNVkJ4LGtDLltmbG5QSU0rMVZyIlRlfDY3ZDov'@; put 'KXVqOnBuVSVdKnlNTzJvRmlGelkhT3djNzM5UlFpLlZ1WWoqNjBmUFRgP0RbT3ptJCJvSjBsJGl5K2FZeDljS2xFMkNae2xVW2VaVipoYWY3PV90c301KXRmPH0zcGE6QFtqIiQrdCpIJns2OUdkOztyVjU8JDt8I2kpOSZWMzN+IipUMSQ0Rk5UY110dEhHUkI/NF9kNThdWUgvMUpPV0Q7MUs3'@; put 'X1cldzNsIVl2T0dOWixHJDhRIlM1WGhtWlVOakkpVXRbRWp4akdobnMyI1lYRX1ibHFvLyRVKTAzOWI2W1RyU0txOTQhcSUyVGYjI04hIS95IUVpMjJNW1d5UGNFfjg9NmcyKGAzPTdzL0dKJm9LW0M1Uz00QS8yUVtha3F+TUUoSVNoeTI8KlA4T3gwbzIoYDNVbChiKEh+Uy8/eTosezZnNmdi'@; put 'PVk4fW5zVDU2Z3Y5O0FLWlYiZ29wLF5ZLiMmTFtrQ0AqfD9hVWRRSFZYPDdeIkJRTTBvK182Z2xIMER0NzBmJVcrdDlJKnQ3T2NZRDtNOGtBfWgyQ188YHhUK2MifkxFOENgeWA9NFZdYjI8OnAvSkc7U1M2M20oW3lbJjxod1F1ajJvSnRHQW9DUnFsJl13b1tvdnN9ZHlwODNZaUx8eHZ7VXpg'@; put 'PzZ7VUQjNiQ8QmVCVHhDJVNGXXI5NkxvKm0iaXohMSh8VENWMWJ2OGBxLCI4bDVsNT5wLzF5RnQ2ZFhFbjgiRHhRKmtBQG86YHg8UShmZlY6RU0uc0QrSCJieExleVk+K2w/JklFJCNbbSxRdCwwVHd8Pyp4b0Q4bVEhJnJOIlIvOGMyYTdBeWkzeTRaSXJDMTRtbk54KlhncVBtN0o4bmtZXT0w'@; put 'WXQhL0RkZWhKX3hHRCptMDlaSWJlaEpCeWU3bSRTPTJtIUdmQylHKHB7e0NVTCpXVFAuVi5CPkwzVTkyKj97V1F1PUt7dCRiNi47aT58aiIkYjZbVDFdfCE0bm8wbyxvTFp6cyxaWHdwajYqcDJEYXlkalR5ZFNoMTg2YDdvbVRNKClKbzJeWmpoRnhpMikrT24saDpKb0o1fU5pYGpvQ0tPZk0m'@; put 'YmY7Si55O01dWGM7NVJ6OHgrNVowRHtjc09ydV8sLHk/KU4qfVcuNGg0ZUA9Tn5vQXF9WjQ9XWh9PVNvVF4ybzxeVkluZ2xLODN1YmlASlpEVik6SnQhInI6YXFeTixSInJfYTBpbU1bbDdeQXJ9fHJieEI2S2YkbGxoWnFLY3xJRGtgaF0ycTYpTHJtRWdKTmN3YDFqZ09VO0gjTVBkSnY1dTt4'@; put 'NiRQOjFWPXBYUWMuTEFwZzViUCo4UjRdMFJ1eSsqPWVPY1lQKiZ0dyFgaCx6SThfeiUhV0tjZG87NDJrd0xZaEkiYnVkcih9Y25bQFpfLCRUPUkxK0JIPXI9ZShjYHRpSTBILG9CXjNXWmwhKkFCJHssZlZeNnFeUjxWdjAoL3Y0WG02UjdrejViS2tPcDBkYCwzd2JIRHk8NmBffVNUZFZMY1d2'@; put 'TGszWDZFO2UxYXNvcGxRYGJLSHtuVjZ3fS9UYFBiXi9ULkw5PCNAWmZ8WVVkUUl2bF5sSGNsXmAzL0F4PipQWVlVV3dpRzN7Ii8hKkI1d3JbW2RyNjgmTzlJIU5TNiFwNnZjQmxQOn5ZO3IuLkVeWFVBZyFrSzIrQWlGMHFWckRGP0dtX3k7YTplRFFmN3d0aClkXUN6amlQWURaZlJMS253ODox'@; put 'SUFQUDRHWm5bIj14NmhgI3Z5e3tIITM+cmZKOWxme3c2TV9KTix1K3lPMWVDJmBoN01fdnZIeVJifmpnbiUmR0ZDPTtxWmxnclVWTVNSJX48I3dITzRZMi50LiJbd3NVSWU1VTVnRk5JJEgiWjFIfHFMMEQqZVlLbixSZyU7JHBNIWxHPUArMTEqRDthZlkuc31lUz49XkxgPXBLfm1AfmdQNzE2'@; put 'QjouWkhmOm1ZPlE1JGA1a29hW0kvIWEwb0NIW0RkaDt4I3UhY25jMmVyPUhtVFZ3IVBrMlJXNW1LKTZnVVArWCMxZ1NwNiNtJFo2K3FmT2I7KmYqSWF8cWZdOFkuKT9mflZPWiJYaSN5NXJVJCskWSE2T2FSMGs8X1MsR2whYWFQb202JFhtdnBeTHkoUlFHdDZPYUk1QlpAcjA3PiwlcTVQJllH'@; put 'OkBmakBdbEE6NXhpSSRIJlkkSDdEeTUzbGlfNF48N1s3fUBDNkQ1NkUlQChRQUt7el54VTlBY2IzQUAwdSshe11Ub2VoNSM6ZUhSQjAyMXxaQ3tvUyUlOGw7YzAvOjhtOiQ0QXV1LEMsLkB2b0BPRFYlX1Q8MGFqWS9TNls6W0tbdm9eaVU7dWFvfjoqblt7UEN8cWQqOzoxMWE7QCxGIX5uTnNn'@; put 'dUMoP1lbYlV5Yl1wYWVqZ2pEJmlAKDZQIlFFRzhtanh9YlMyTVtjVTEuVD1gKi8oLFttJHB3eGBhaHZtVG5zMihJelJ6L3oxMzlrM3hfNGBebUxUO0V5YzBiOjtpa30lYzZbVGAkeThdRUlmY1czPXN9NjVKLG5rYEVwXmp+VWkiMUxZSUQ7T0VzUnd1MC48Pmh8NFEwKX5rSCEzOHhdZGs3bmpB'@; put 'SztPKGoxUk8sdjQ5ZENaamY4LHdnXTB1XVtYXVpgcjteNGRrQEE3Y1deXnJVM3FmTiJQT3lmOHVQZ1IzL3JiYVlzNllvNUlNKmJdOHthUTojfmY2c0MwdGVrSSRITkk0cVMldTI8QHttKXgwR3cqNDAqNFNAZXVGVTVFQXlvU2p5ajErRXJ1REt5fDchcnxpWkV+X2kwUikzQiFFKnBKenE3LFh5'@; put 'TzlzSWtJWWxQe2BnbUd0XkEpXyZZWmFdUDcudFtfTW9zJCJgKXR2fClHPSNNOilMWyZMMGhFQ2BlNTZZbEU9TFsmeS5IRExOaTgrQzFpVGosWiJdelp2QGpsQ0tzNUlNN0haNT5VWkxDK18lemEweVNYeSs6RnFaKWE0UitCMFV0eWE1YEdRKld3eGttY2ByTmxwTjwxWTVjQlVqMVBYNz1gWnZY'@; put 'RHs1R3FjaXpGV2h0VWV4WU8lMXJPYiE2LDwoQnlacGBvQl4wdmpFRkdGQUZbKlt0MCRAdUpPKnZCPlp2T0g2WTBEZE1hdk9INlkwRGR1VDwrWW8saDBqO2J5dFtNSzs6WTplWykoeitSKCopOFpqMk1EaWtLNjlwYH5xcT42eS5iZFljT2hzfGp5LlgxSFBOX09dImAvei4rWlc+OXQmOCtsNi57'@; put 'MTs4VUgjTktbI2B2e3RBe1MwOmVXYTs1c3BnJm8wT2NZZGs2I3BsOGVpJj9rai5SOHp7WV01JGA6JTVwMk18L1NiciJiejlzSzR+c1g1L2E7dXFXMk1xaVY2dFZuJUxiYmVaLCJFXzFkUV9YO0gjQlc4cH1AUkFiKnpUPWtAc3t1MkltQSZTZGxFR2B6RDlXd0gjMiNZOjtOOUBXaEpUKlVNVEJ2'@; put 'SzE/SUlmMntqREBOOUBXW0ohcUZpZEg0ci9PdE1HUDhTWC56PmJUZFE5XkV6OnF7Wk1fL057VzhyKn1zJihRVHh3dGoySzNgMkdXM3hIRFNzaHhtUnpwfilbKXJxWmhsc09aVnMxNSsuSHdQb1UsSmB7ez1qSmBiM1JAPWM0dmlOdmlKd1soZngpS1AwLChuITJHUUJpcnpaNUYiRUEjSE46QzM6'@; put 'I05HT1pgeld0R2l5SilWPW9oREhLdFtjTk4wY204R101X3QsdX5WQHdeTDJgaTx4S3c1SS5eO3AqTTlSb34rQVd4bWE5V0IjRSRBJENybypRRXcufGhqZWdoNy5TZyx1fUhddHJebWQvUDROMmdTaSk6MyEyeUZGSUdXUGRpPzslMUVsMl58VkslPlBsM25kNzh7Un4mbzN5d1o+YCx4dSRPYFlh'@; put 'ZFpZcEJoPW90VmQ1UTZsRnVHXUYsUSE2fl9AYDw4aWxvO25Je0xkV0VHRTNHYVgiNVtwXToiYEtiSl5Nbl8jU2hyOzBTNWMxNi56MFM5eDE2cyxmNXNJY0lmPkUqZ3tEbmBWSShYcyN1UWVdJXhJejE4R0pIKz1LOCQmJjJdMEM7IX04MW9CRWoue0khWkxNIyM2SlhDPz06aWcrS3dpb2IjNiNr'@; put 'Lm46PFl5IU1FOiJ5WkdIMGhsUVgkTHxZQnxCMVR1SVkkYixJLmtCXVk+VUlFOjx7QlJseipefUN8MntaWlRNbjFWdU9OLlFEUUBxMSgpV2RiY3A8MUQyeExsM24vdW0wSWFLTmVAKFtFLC5oYiN3L3AkTmdZYyVSZjY7JGI+fFRnMnh2UDtqTF0sPFZMSDUxOUAkOklaTTpmMH54bl1XP19FSzRm'@; put 'Y1R1Uk56TS5LdzN9Sm0hcmFvWXZPdk1uS3Q1YEdoJFZhTXBGWmREKDxrRlNpVUhWOTY9X3AmYHZyQ2h5cDZkU2xzUk1Ve0V7Sk9PbGlwVz9lNyt+TzRMfjxkKVJaMTxIXUlXdiJXeVY1P2pwUWo4aD1OUmVrcjZFcHklNGFbL18yeipieTVLZiZeSnczKWR8MVhaOSNHVHgjUztNZTRJLnopcEJA'@; put 'W3Z+eGh5bFgiRlF0L29kKGZrd0xMdFZGPk5tYFh0VkZbO3FyPVtUbVl2OV01SVRqb25oLloxPU9eQzdSQSp2aFt3bGA7OzB5KHVjXlJVL19XQ3Q2KDJzKXwzOWd+LFp6UVZzZj9mckszcUlQfFBuQ1g7YnIwXS49fm1lYUJuKmhHcipoaG9UX2JweiwqJmJwXl5gUERjQSNbVE88RC8/NU8zYCpg'@; put 'MX5ZaDE0JiJeOEd2b2BEQS9OQlVGSFp3OjA4THomNH1QSHVSckJlfXFzcEV+ZCV1VTpwLyNZPn1gNWo6LCliWH52Mz1sTVI6UkRMKTglb0dwYW80S0oqUS9OdVNCIjE5NkxPNilUfkdtKkp0eDteIm02NkJqVSsxKTlSIiVSZTVZLzQ2dT9paWN5OCJkb09zSkZTWElDJit7bTxbaF8zKlF3PDVO'@; put 'NktVentjem9HXTNhYlc3Z0JUeGBDSnYhKlQ8Z01pVE9fPlJGZFFMQGZ1Pik2M0l0VTtddjE6OVBZRGhZYTBUU0ZxKTt9eGM3SGBHaSw7U19fYGN2amkkM1F0KUs/JmphcXJyTkZqZiN2dGhkfSlAIy5MImpTalRrZ2w/fT5MdDldUiUwUSZ2WzsxKy5ARTJmWGtmKT1nbF5BcDdYPXRWOWVIISU7'@; put 'SW9McWZCOzdwIy90eihKI2AhVUh7KFtiJTZKPy96JmNPI0ZNOTFLaF41PmA9PSw9UyNlUi56XT9TZ1t0XXNVdTYkdD12VypwJiV8K3NnSVhVflRaa1EufmZlUHM1YlV4Sl18Jlh8dCUwaH5WajI9QFlgWi5DJE5STWlERmk7Kkl3KE07USk1X1tUQ3ksUncrO1NiODRwcj47b2pNXzk0WU0+UiI8'@; put 'QkIvelFacVhSbHRtVkpbODplXTZdVn0jMVkzcVowcWB1L0RvPGN3M1YkX0lOJDxmbGpOUW1PPTB7LDtbRV08KG88bEB8L0BFTG93eXZ7USZBUUEhdCFWQHhodThWTSRIT2hVYDtIOyVIdDExU1BGQF4lajtfNCkhaFJCNmcpX2xlKyZxYEZleWJkK15wLDFnbzkjYDp3Xy8sOiZgbkpqOTE5YzdF'@; put 'JFsreHJaMDkmTnZLaFhOcmxhMWdEJkxUZTswalJPSWomWXwxYXgsbTFAe3FxKCU+OnB7RnJOPjZ6dCxfPX1hZmhUe2xqVDhZZHhhOmdHO1ErOSorPyIuXklKL157Y1dtakszWlVtYHh9cXFTJWxONTNhRnphYHJXJmd0RHV5X0kwWlZBakJ7ZlJMI3MqXn1wJFluWGpeTnhQNW1fLHIhbmRIaXA3'@; put 'TV8jLFs/Yis6RjkzWHo9LFtsQ1srMzlzaWR8dlVvRC9jOD8vWXB9KD0/ZlB8VSMuXnpdTiZqaDV3eCNJKywhd1V6cWBxOXBtN3pmU1lkazVneEtgLHpIRjZLdmhmOkEzJkIhY2Y6eyU0anFxWiVIKzA7eUk3Y1tvV2g3UX5mZU5VO3cxUDRFZVlWdTp7UihoJlVMSWRSRk9eR3NQRFprdCU3a3h+'@; put 'JCRSbTtgSFkxcyxma1deOkBUYlA3e0h3RVY+QHh6OjwsPj8uQzlyWF5YU1lpb112WjwlJnVsdXRNRHcwKXtAN3Zwa3ptfCNJdSJYI0BEJmxrJEo/MD1bdHZ5cTM/JUZndyJeU2syK1o1eCtpYD5MQCtpZDcseC5gJS8yY1YpJUkrREM3WXN1STJVPFdQcXdmblhqblsqNjdIVE0+d0s4Oy9pbFY9'@; put 'YUNkcTk5OUkxOkd+JWIpd1NeQEBoZT1FWnBYdnhbNykmP1VFR0o+fXBibTgyPGxzWD5BejU9NSFxd0xgO2pBP0w/SUApLEw0Pk4yWV9CfmdvUT0mTGhmcVJSekdYPSVjbnVDL1dGYEJtOFU+MGZxJlZLJEhhe2QoNj1fc2w+PVMxXU5jO19AL20/cDVAcGRvcU48JWI5U1VFVmowL0AuMk5UPVFZ'@; put 'c09KQW5Wam1vc1V+ZjdvfCo4LmhFel1fYHlVQm19U1ElcSxiW1AzeXZKMnxWbXIyLikxZiU/bSFfMF1QJWVKPkwuTnVOJkVqZX5mP2M3IXtRZXlYXlhTSlhoK19kWHhFVnxGVGUkLG1QJDpkdEloIVg6ZVpVISZaZn4sbmJkPnMmczFTLDY5cW9OWEU/LDNmRlp1Qlt+NShxMkhJZkI/W2x+WVpL'@; put 'cHhDcnBFZF1uLC47VCo4ajNUOkBbbDtPOCxXdjVBLDtUKkE1Q3ZQY2csL2xbbHxDWGZkNEQ4fHdJZm1AW2wxJD5PfDtpQVRYei9zdGlhR0duW29UYXUlbTpTIlhOL2BZSHJqPHdodzV8RSJQNXZXVSNLZF1CVlJ3Ky5gbGEmR0lGNUQ4I0AvYGZ4VXApNXhdZVU1M0tAeDAmJVhGMWBsd3V0Szh1'@; put 'dlMxTn5NOFtwdWo9XnR5RTp+KzBPJEhvc0ouWHNAYDRpQ18sL1VsRCZSIll5Uj5maThAaltOXzRAc3IpW0ZMIzVaR1c+XyxBaDJbY15gQiI9KCZpPlI+TDFuakIlUzdjMUFCVXJlMSwpOSY5LEFoUDE8ZUQpVXJzO3MmWHhGRTZEdXZwLy4zQz4oMjExO0BuViYzZ3FuVnpVPnE4bltsNSlqPypA'@; put 'IiosX2tvaFZ7cUFGeix7RlRlUHFFb3ojRjxPJEZtQ1UsWEpLPnE0VjolKlNPUjosXk9hWHxTY0YvU04jK0RIYkN5amhdYVtsfSwqKV5PZT5ALH5VZ1kqJUJmejo0cll4UnsiUX1DMEMxWztkLilYOChxM3ZYVll+NjRvXUh2eSguMEF1IjdMNn10YSxwazRnckJrWHFFN3ldYXF2ZUsuKShbQyJ0'@; put 'ZWJ6PURlQVtsfkU1RUFqd29mR3ArbVg5cms7b0QjJXJKIXUkayN5eT82R0c2TGdhZE5fVUVvRysyR0xIcS9uX0c7M2ouSipocjImPmY9d2k5UjEqYklFY3V2OlFFeDlsdyVNWkQ2Syk5QGA5enNWOnFdfWlHb0x5OjNHMFVjNz82fFtBPz5mYHchZno5SV0kbmdveSY6b1leUmhqWVFZUjZiTEhZ'@; put 'biIlNzpBYUIwKm9UInY/ZStEeDlzJWMsTDJiOTtVYkUmcktwcG9dcFdJOENyazhwTV9wa1A3Ijsqb3BbM3BncUYsNUdiRU9wWn4yOWVGaiQvS05bfmB9JjwsNzl9ISZMVGVAbG1eQk55cV02QkN+aDp6UTFNTTwuZWFKYHdBV11VM1BIRF1AYzokPXEiTlpgKWZTIUEwRl0lNUlbcm9pN3VuR0JM'@; put 'OyNDNGB0UURWQmREVj1mPVtSJjwhYyVNXzQpRGRzWShKQWZ+RCJQdk8hVmE1TUJtMmckQXBHYV9CVClPelJld3FgSVg7UCNHZzRSUGdBNWZvS3hsV0VveVNIbT9dbFRnb0hBPjJZPDNiTG1YQjkoVEtaZFA4L2s2Q1FPfCQ/XnFhYWpXU2o1WVJRelR7RUshYyhdeTFyM0NSJCR6V3VoWHZJajNW'@; put 'c3IrcDx4MDRiLlM7Qz5UPkRDV1hCfD06TltPWE48e1Ntdy9DX1NmV11sTVQ2OTouLj9tYSxMYWpCfVpqTz5sRW5rQ2kzXkE8LytJQEEsemYzXWcsPCVMYD4wdj19LGM+cC9iS1YmMmdOcCtJJGZDb1JTWntsdmpRWjxTJEIvZFYiUDwlMWpdYlBdQEQ2OXNLcDB0PXRtPEk8e2t1Y2B1cHhnTjI7'@; put 'UWl3VX0kaF1eQl08SSJ3ZXFdbThUSmVAZzZSU2U4aCh3STxlNX10W3kqYklxejgwdkh1M3cyQl9LcWVsSjV3UXV4OD97PVtjMkAsaHdedEAsMWEvRnY1fmgvKTBLc3tmcWAsY0NzNVFmRVB0ZmtMLCU2d2FlKlR5Um4pdUFaSyxkOHVhTmYpSCN3OD8wMT5HPEt6fUNFemIsMHB3MyM5ayZiOWly'@; put 'ezFzd1JzRiNRe35tYEA9cVViUltCXj9JSHt9JlohOzJBMUg9ZUlJT2JnQCtWX0dyYnsiUm51dUw/JVJoY2NRMkwheFRyezNzW3IhMXtHQSEpJUJSNis5djk+JmpQKnAqPTlKW0FtKF9iJVhMeiRzSmQ2U25tMSslRUVPNCUhe09qeHpKcyksb0R5KFUjdzp7WDUvZEZwUFk2SWJGJXZ+Zk1lO2Ji'@; put 'UyR3Ml1SY2xFIyltYCRtTXNTQCpMc3pUSHg3VHNGVWQqc3M1QGp4PmRfT3ouWj1peigqclBrRX01IT54UHtlMl89NU1TIStHZXFpdmMwRS51Nyl4dytKUUNWLG9ZYlNMSE91ajtsRlBIT3UkNGsrK1d5SUNrQS8sMUMxd1ReanFkR11uSDwyQGhaXXE2OV89U04pW1FVSlYwNCl2TCQhIUk8d0lN'@; put 'VlB5TGpDekk+VCEjOyp1W0s6UTcsVW02a1ouKGlzRGRPJTA6cyw+fDR7L2hJZitJYyE1YGlvUiNuZmYxcGRWJl0wbywlai8jN15+Y3MvZXdrRFs0V0QhRy5ITmEiWWleRGxzQHx7ajFRcH55NGB1e1gvISwhemMsd2E1MjwzPVk/Oi9iV2d4clYmOylUXThiWS5POktebU5dJE8qfCUkQEJzQHB1'@; put 'JHpwTihPQFl6U1d2VXViWzl1PX0pTEdVQlgzMlBFblQzYVIvNT0yNk43Ll19VDooJkB8b3czYS9TMmhBPmJCfGBXYzIsLnZ1UEldXkZGZDoxUlI5MUAhVlpNaSxJOk5qYUopXlYsYCw7Yy5fUEUxRl80SXA+fWNnWzpOXTJ0dVdGYk5BMm43czI4UDQxW3dES0VWY2A0YlU2eCU+PzolfEsrbkF3'@; put 'bixqeDFfPyFuZi8zRGRyWy95LF5eX0chLj9WSFkwd0dZNn0pTGx1cFBuRWRVdTxGeFhbR0pUcXV7KmV7JT5SZmxZcDBvd0hZKHt9aFM7LjJBJD1BN1BuaTozNXZKUF8mdHBGPGA3UjYiPjo4Qj5bMCQ3XVo8UmlhL0h3U3Q2dW5+Zm5RS2tGO1p7aDlBbWEjS1IyP09PPU5yeDthcz8zV1VANCte'@; put 'a3NvNzAqYz8mKTg3eTIuTzM4YH57Ui4oel04ODlmP2FFSCMrM0tlOiMrOUM0RWVALEczM2x2a3tSaXhjPHhEWUpbV2ByQVoiU1AxYzIsNnhdI1FNeWhaU1MzNnRQR3kxPHY8cE5dIkImdVAqKjEzW3BJNjlFZXljbktQbEdHZjYlRihlTCEocS9rKklaIShWKlM3UF9wS0NANGZxRj0jYlIkOHFC'@; put 'Syx1ZjlsZ1hhalViW1osKkI1fiUrTFl9QmsuRHVUNTEsZzBVKGtDQjI1NW1lVHNCa1JFVj8zImArUzRwSHt6JWZ9RVYwYUV1Yl5QXXZxaz9rK31eaDhIOi4vc0c6OFhofmN6U09fWko7ZWsmO3FkYUMrPFRvQ2FVJHdgMTwkWSN0WW8mek9vUG5bW1UuXlBycDZCMURPJmB6NTQpcGpOUnt5WFhW'@; put 'Ljo4PkJid3QiLixgQj51RDIvUjRqfUNEaVBLOTE+cEA8cTwuMDdQVSo+eUpfNkl3UDwwKEU/JilkbTheMWddS1s8W0tbVjlteFlNJCEwRzVac2VXRTxiNT01Q2NmYURKTldQajZZa1BNeUR0cGBEISpFLkRSe2RbeCR0MmQ3Q2RyfWRMY2RQP0ZnZjR8MVA8dzx3KVQ5KV5ZOTRmfkpoclNecUMp'@; put 'amA7LHJrREw/KmV6Vi45K0k8Q1J0WjxAe1guX3RnfCE2bVFMKjlkaXttM3RdcFR0PnczR2Rle1svejNoMDBaPV1oM1FUaUJfNVloS2lxZVUqJihAP0s1NGVhS0B6JnpLOSwsbncka14qZyg/TU5UeDE1TUdlazVDQVlAdyxvU1hhMWJjOHJIdmhVcS5jY1FgblhMS3tBaklMTlIyRGxgMU1OYisl'@; put 'UFE6WmV4cWFxdzBvPTo3MHkvPHVKdk1iRn5xOi9LPDQ5ZlI/cFA8JkUkPFp9NHphXSREfVs/Unx7PixZe3dzYVhOJSwqXig4aXNMRWZAdlBAPixbITwlMSVIaDFubT0qTENtfntjcTwvQC9QPSQvS0QsNDRNKHh7NT9ZfHpZaSF2KmlbLEZ8fVtWSFdYX3I+NVg8NnNPT0o+c0VzNFcrODVHLGpY'@; put 'QmArU3tGY3ouXjpTUlJtU3YxTHV4YCNXY1NUdy9fYUV8SzlNJmVVbmpMNSRIM0khLEYkM1RuYjNlT240QzZSanZNN2I/NHlVTCQ+Xz0rY1pdRUcsfjQmYD5AVnZFSFMyWlN5dF1LJDwwVSEvI1BHbXhaT3BFM2xjXkt4IU90JFdlVlRiZiZndD9YUXdrKi9YakVGfnxML3kzVz1AVShKOFJqWkAu'@; put 'Zj01K2BDY0p6W143dVBZI0hJaTchPylHNW1QJThecWsyYDlaVitLOXZ8VkNPZ2FLRUZ5UHcvfWxxU0p2bmR8V1JHdXNYPyRUTDduOWxbRmVrL0Q+JEI7UTE3JDVnJX57cURLT3BxJjZuO2owdDBvLmBUeFAlXnpuS2BEIWx6ZjI6dXhbWWombj9UYnJjMD06LC5dPEhYLHR0I1M1WDZLcVJUODM2'@; put 'MjVJTUx6Rm83ZWNpK1hpeltZUllgIzt6eEBuKGg1U086dj00d0V6cUdPSWFFR2BJOEM3P2g5QytHLFpgMXVLMDsuSFpkV0ZoSURAdWQ/MElDYChwM2lebzNpYkBLTSljP05EdGFWXUJzOVtvNGJjNCE4SjAvWjxbSCV4RzNxdU19IlNvSU4+QU9vSU4/Y2VNaSkwK2gwcFp5MXZ6fXJ5PVVEMVpI'@; put 'UjJAcj1PaTlAeml+Z1R0LE9+ZyhkaElXTTVhfU88QWNAO1okOk5vXk14KXZifCV+W0VhczBzUVE3PHdzUUokSUlwKWpAO1p1WXorOHpYRG1YTE8uXktZeTFIJXBHKUxXZGdJfmcra1hPfCUycVlPXnQwKzh6c3dpQDtaX3VMWVNkfCVKJXBiW3BgY1QyQnhOemNOc0g+dFpAO1o7Qld0LzdbcCFS'@; put 'WiksXj5NRCopdU16Y05NSFhNNWFETjx0W0pdcEc1R2EsXkwqe0pYR1FZWDFyYn13c1F5MU9HNzRSb15NMz9SbyhNZE1Vdn1NOlhIUjZ1VkZleE5Od3BkalpYLk9TKVlvKE1KLDYmRzNWRl4mKWMoTUU6SjBRUXtVRHptRS5CZStEbXg9IytrQHJadipqQHJaYVl3QjVZcktLWXNIcktbVHxHLyt8'@; put 'eXsreit8eV0rRncmUXtVfWs0T3tVODReZHZEeCt8eSR3SHpdTG5Hb0tfYU1mOVdObyhNa1hSbyhNJCFTVyljNXZHYVtMP0dRYGtnW3B6P3AlckxqTGxja0ddKHJpcktIUnlOYk01YVYpN0hUNUFEcXpkNipoQyskKFJ2QSRgQz9CK2Z0bm9FRVZoKShmYWFYMTVyREtscX47P0wlQnMzMlc+MU1i'@; put 'ZUheSXZlNTdKeHQ5eEk4O1dJLjFyWy5HKz9OJUNETk4qQ3w9S2hVYjAwXyw6WUVWcjJRSSI9dUJKLFs9a0RVYndZKjtFJHxqTiQ0WVM4TDoyOnVCMXordFB6el0uUy89TCpJTzE7b0VzKkAwIzE3OXE6eF5xNDtWMk1dKnMlR3FvbyxtMUZuZ05wcW9KWl5kS3Fya29tIjskZFtEeGYkQ148PCJm'@; put 'JnRkJTB0RkhkVT4wYjBzYDZaJWRhaip8Pns9KTBhMzdZPkNkRm4iOHF2JjkxQ0hRTmlQWjB0eVszZE93VXJ7MSo2Yz0/dGdkc0MweUJUdGgwIl0mZlppbE9EeEU+UzVyM0xpaWgsPWJycm9QXUEvMmljYmdWViVSWEViTz9YPUR7ejFtfGVoXXB5PFg+dn5zck1qS1E7I3gmKz0oYFldYFkpKDUs'@; put 'bC5mODpMTkZAbHZLTnBVR1VHXzgsSnVKZldOUj9aclE+O2VPUiU4NWBNPiQ6SEdFOEhJQl1SLjwxMkFyImA1P0J9Rlsva3siWCV8UW0rTSl3bDlnc21zJV5xW2ZyVUxDSyg8aiNSfm0iVTBgO1k4Ny56TlF7UWhmbGZreUlqZVI7M3xjNix0JjhfM15tcFteUFM7fV9nU0VdfTwsJmg4LGYxLHNL'@; put 'KlIrVX1VVnpmTSREIWcwPUl4SUtfMjdFW3A4WnZmdXY6SzhhRnxTYmZueT9XTkI3M1BdVHwwKTpFJX1NN0IiX0BdamsyejVtOncxSjsqUWdWMnchTDkrTG1Rb0RdJHEicG5tMl9qbGwzZnlgUT01S3w0YC5GUVt+bUJyOXUoTVc9UnBLa11JKk1OcjtCQ2IwanpPI2ExRD4sc3FtSTNQPChJOy8h'@; put 'cjx0aChRO05LZE5rUnk2LlokbzdGYSlvWSR6cSRoZl9JeHUxYFptKHNtYn4/eD8rRW1LUEtoTHN4KXU/d090RzcvUD4pPy8uPnddMmtdSWxfPH09aVFsXWE+V2VzcE0/LENbdyUlbER6bUQ7dTZxJF07NHpaYFo7bzlFIWopP11ZfVdxZ0tFNEAuYnVBSDUmUTEhOy5pNjo0elY9MWU5WHtzcC5h'@; put 'aVF6cTUqJClvNmRrRVtnbHJZZDUxWkpRTVYjODBHRTNqNFEsRChQR3Z3KyozdC5tdVgxLENUfjJaNSlhOUJ2MDlePS4sPytaKilLfDY2c2l4Y3t2IT4rZntRSyQlOHo/Ll9VfEZ1eH4vSSo1TCYzNztSd29AIiVsdE1SLCxOX2xQV2hbXXIhPV0weyxCTUBZTjxYZE9tQG51LzpCck1Xd1V8ZFN0'@; put 'W1RoSzokV0lbSDE/S09hY0NydHVQTEZGeztrO1EhZFhvb2JFPV9qTkh4VS9XLn57VW9oO3JxNyEmaTBdXjd0VlFHNEUzT3JpN1F8dU4hSC5AI1Y7JWVnNURnWldFVlNwbVZmJlBOIlBbPG1eJTJ5V0c0RCRRIk04Q2FRQCV0WUJkaEUsbkwwQWhhR1dIfEZxdGt5LEVwWD1TTXYhVyUlZVRWTk0w'@; put 'fmxQUlo3ckljXmpmRX5rPixGTT5kNzsvX2YucU9XckJLfHVbY3Ijfm8scDVyamE0O3V6Pk1kbnh6WVVHTmU2QWwrZSNOWURDbEJsKHhLMGlHNmRiUlBSNig6RUhiM15WVX0vWFFJckBLaXdAeis1OjVUJHdaWUlKbjxGVlhmbkJtaVUqYTBqK1pCWDNlfixaRWtbZDIqOjtbKmlGQnAwKW5manNO'@; put 'PzNqeVUvWExsQFkhRFVBOUQ/UiFrUTNnVCVAS1VKTzJEdjt1ZmsqQDMsaVpPTihSZkg2ZEVOMGp6T0V6MnZbVGRKXVR2PlNKQ05VT3ZPVElEU0BOKCRDSm1dWDZuPlM2WDVxV11dNUZgWilvJVpETnI/JiJZQmZCciZdc258V3FGJXVtJDVOOihEWkJLamExVjcvVjpITH4+LC58QS5AKVspPT4x'@; put 'fG99KCxXfFFRc3kqQ2ZGZHIuSEJpYnhkc0BqI2cxNE5XYX42ZFZ9cWEjT301S319LjNGemBGUDFzZkJTJDpYZG51eHUpXWp6ejllVUQ5WzU5Wyt9cF4hUlYqRz9JKnw3S0NPWUBYazBLMz9TPk5ARWE2Kz1eUlNsam86MGpKYWJrV096LiEpUz5tKnpDT3BPKUBbZjVdRGZ3UCZUdiFyQXx+aDZY'@; put 'PWZsPGh3ekt7aztzeTJGcjVqX2IufFhsTyFLL3pmdSNsMilYMnkvMF1eTTV0ciwwXUBPVnFYcSk+PEUpaGk7UUNlPDU+M2BdVTskNylwZWhlXmRbJjtPc0wqaChzRzMzRGNEL0h9RHxwKH1pSUc0O3gpUEd6e285RHt1dnM8NCx3JW9YS2ljXk86aCR+YX45Yk1PIVJePnNiaS8lOVZmUk9POTI0'@; put 'aF9KSVVGTUhPejIzQFZlakxqVm1ifWMoYzxwMiV+LGNGMC5YKmUwJlZjTnhQLjZGclBPSDMxZjsralZMLzptJmB1WVA3aV4zW3UxbUJjNDQ6aiZ+cDxYamVadiE5ajVjYTBJOlN2dDF0TVJ0Q2lQWzp2JlRsRXYrOFFMIkh7dUJkMEU8cW4qPXJ8QldYT0lpZERWWW41JGZFJC5aTnFCTzReekYx'@; put 'X1ZhMXM3bFJIbl0sMWoiTm1ZJGMueWk/TkdONiRgL093M3gjLEAvWU9aRGxKXXgmYGpNISh6Vn1Qe1BNYE04VWpNMSlIclJJQ1MqdWthJSFZTilWOVc9WDJjLj12TjdmPCtFXndRYVhDRWVqWV0ofFp4eHA3LDt5cG8lWmA5MCZlVXU7e10sK2poTCJIcV9QVVlLPDtUMndXXl5EJXRyXikjSFpk'@; put 'dlFfU3N6Ilgmc1JUVkVWaEpgdCg7VTsxNzh9R1s3eDl7OW9XWHpQLHw4MWtwVDs8cWFLMHBNXzFgMFUlIT1de0BQeGFNPV9QeCxCRD1pJnJwYXIzIVg3XT9OU3h0Q1NRN0s7Jjl9PnJvWXJjcnpZOFU4JUJIcXZaTiRIKUpmWT5hamhVVkt3JlUlSyx1b35LUTovL19SP0pTcGE0MnxfRy9MKCVK'@; put 'QWo6W1YkfSU6P2cqI0lKKzhFMlEwU2kweHR3b0I0PFBQdVtufTYoY3diMjFRKn5gLihlSWNaaCxrajQmZSFBR257ImcjfXcyLEghJVQlfGojISNsOmk9QHYhb1JIX3ZgYjF8UiN1TzFLOVhlV1UlK008WWpALiJ4LHlgLFNJKjBvSk5OPU8zR09SVHNDUDtjVjUwTkBsIyIyaWZFZmtjRSRwUjRA'@; put 'cVlvdzFte19zQFQ5UkJ7emc5aGZqZjlqOSMpSz9ZczRXdzxsJHtfJCtFRWlEOm1IZU9MSU0uQ2MxVU9zXmIwUF1BX0dFRkVoKUJiaTxpaj56TlV9KS4/Nn0vQHQ5RnZEdjxTbykjZ3ZmVExYbWhxR25GdmA8dEByOSMudjBOYnRdc3hONjxdWHA4bk44bylMYCJnVEV1RFMxfnN9IUl2T1Ire3Zw'@; put 'NCV2d3MpSm1wPDBtKUticW0kJTxYUyhbTGUjaG91RDEoMmRjfGBwaHldeUVyZE45cnJjNk1NKGgwQCtJMW0rV2tmQVc1eVlFUzJ8Z0gwO3xmP1tfZSk8MEs0JmQ6ZShiO3NtYX5rOiEpL15uSkMlWWhqa1k6T10uRFkzMyt2RFVXXVlfckpYayVEYCwsPTYzTGxkNzNRR0V3eXxNPlRGYUZzRUlF'@; put 'dl4pTF9EPG1wKFVVYFc9KXQmVn5hPjh2Xk1QcT8wK0Q8ZCt+Sm5bJEtdVXFXX2NofiQ+NFA1MzErayhkUilrRH58dm0uOHNgNFFfXlQ5UnkpIzNgQ3FgdjFWPkpOdHRORXVnIklPTGZuZSgkSSo3c31scUluQ3llJUZdZVpWRlAqdSs0cDlQKS95aWlqcHl+ZkJsQWducTNnITUkWVFYW3AzRHte'@; put 'cS85eUkienooJkJNUTBKOD89UUZ9I0IqfXArKksjRzpxVFJmaSF1TChtTHtGdls9SSppT3dXfHlmcjZZN3p0TGNJTyNzS0l4b3s8LCxoW3B+QWNAKTtucDZuJlAhOnl6YGszbGI2XkZqWnxHdHpOOkVxPzBgQik5aEtbWENoQU0vbjFZTX45fX1uPTUzbms3W09hOCp+aWRpdVU7I0klbTJdNV50'@; put 'KE9UOVJ5Zn1pVyViNTB+UHgkbyZfKSl9NDY9MDEvPVd+cypSUnF6PE8+eDt0RV0mLnF9MXFJbk8+diVVVTtaejAoMjdHWn5BU0paZn1kYSJtbkhPRz9vaVhhampKYiVISX5FQ3BUTWdnWkRYUX5nfmE4OkFaND5abn4yfjsvM34wNj9jNERCWGNmJF5Dc0VwRU5UWGM/bnxtVGcyJiEpcHZodV9E'@; put 'dyVBZ3l8VGxXOXg9eXdDS0sqXUArSl1DIUJyLFs4Uk5de3YjN15Ee01LK1A6SGE4VEZ1Sj9wN1phM3h0cW90UVNPP0dIMDt8JVZwVz1UOVJaZTxIPDUxbltQV2lXJWxYNDtjYml5d1teMjlofl1VYStXaTkpMWZrfCYpZ2cxSHMsd0BYYmpvUSlFfEdWWDFafVgqXSgjXklediRMcXV0Wj1ZIygk'@; put 'SzsvW3NnellvbmciYTN4ej9ELHVMaiZxUl8sSTxXP1pOaFtmfX05RyEue3lva2VnY0g0VndBPn50bi4/SDZOSyo7b35RVU42Xl8scCo+IVZJdH1fajRVXl5GMkp9IlUvYHpIPiQkKW5jLzgke2xMMUlrdkFnalU+Wml0Lix4RWkoOmN4LE1OeXViYUxNQE9EfkFtfU5ETmBtOlhuN0MrKFkoeGxS'@; put 'V2dKVDwoTm9jZ2FpIWMjdGxZPnVtaz93WjdTfkJSJDZxLl1PMDUvSExTUXBKRn1hJD5BWSpoezVGIil6PkBMQDxfXS8zTytDJC4pdG5PJHMucSxgQHk5IUtEIzBYcjQ2T2QobG1sd0BuIX4hfnBneFt5bXlCUWcjbE9iRzhQUWE1cGVbKjYhTE8haiM2XlM9P2xGSSp8N3BSWVdZfm0ubjx7Nk0k'@; put 'PGpJV1VLJWF+bSs5TH01PC5BeHNHR3gjcjpiSFlMTHNmQDUwWkxrVX5aZzZkUjVmTiN5XXhDTnolS0dKVV9OPWBzSGEqKkF3ampkJlYwdUNOIXcrXSRreWF+fDlUfEpzVlZRJEdbXm9fND5mKDpOZz5zUlRmSXJIRH1WIkB7SlMqaSk7QF89IldALHpvQ2VxUnhTQyFEaVFoL1JwWVQrdykpSUM8'@; put 'RTQiLG9YNTxZNWdnQHdTXVduW0F9fmtrV1FHbmYrKHNQUXp8bHhBW0syeH0lOGw4ZislaEd5Lmo0c3NmTGh6WU5CK3xHRDdML0ZiWEtpQnc4JmxpdERlR0Z3Sj1MaXVkTkdRVEo1ey5MNUY0emNkZ2NOSUdHW3EzKjVDKEFZQS8rSXNSTmViTCp6TEZ2aTBIQndKRytbKCZReFooTzlbKEc2OkhK'@; put 'R3VadGVBTWlba0FaeChhWy8xPD5LNmN6MWlTbWJTaExyN0lJTTxhLm5SQkZTP3NoMSk1YkN0YEN8VyVla0VqJFFoUkVbZkkjMXVgcENgQEU/fiR4dz5Sbig1aHhsOXs2ZzpRcyQ2My4+K0k6Tn5yTWpKKDFZTDRRWUhXfXRaenR1TDgwREdDL3VWOm9dP0pOYWw2Qil2bS9kKE58QmRlQzlyYjNQ'@; put 'ZlV9SlNEKmkybnFHTWhiJnpUPExEZE1hNGxhdzpZalEzUG53Kz1DaiZaU1VRXylARnVQUjZYOkpvX0ZIbk5PPERgSzR8KmYkPj50ST5oXyovJFl8Wl55eHJKM0wlZzhIREFYRWFUdF5SczV2UXRnXy5oM0U5MSJUZFIzLldgOHtjS2VkSylkOzZKUnx5NT8zKikhdjZKTFg5ZzJxQm05ejpzUThW'@; put 'VGYsMWdtfnY3WEM3ZW1ZJWtVOWYsNV9rRVRFa2FLWWEjYnVTcC86PVdwKypnVFlgbCJxZmchOkRLeDVmSzciPGU0VVhCYUpOekhmZE4sXUJGRjViYF90O3tvelNtazRfTn15bVdDPWJ2eFRRfS53K3VnMWI1dFRVTCQwOXx4OVNhYUVjRy9DWWp8VDw0KjFvNUQ8WHZpflF3SGY5fFUqMkxOVjp6'@; put 'WkxwY1hbY3U3dHAmZ2NXa1FLRStTezpPP3BKISJbUGlITUsiaGNKaCNEbikveXxxe0chMWdZQ1V9Y2JFLm5kP0Y/ZEhrSHA7UFp5bzBvYigoST1pUTBPKG1TTWFgMTJ9LlNJJks4ZEwqeG9WdDgyNiZBUVpKQntzK3Fyd3xqMUk/bCRZfVtKa0lNTCFWVTYpL1lsUGdoOWtnKyQzVTtiVHghK3ll'@; put 'OGdhYltIS3d4b2tXS0RaPFE+QFFidXtyPmFNaFZAJlZrUHQkLDR6R1J+YW1vaFZoODB5QmlAMVNQOEwlWDo+THZwRjlBfSM0cSJLISw7aXdkUGFXUSxnZ2h9alUlOT8yOU5fPEBHJDNmZjFXZjhRe04xWXlWWkVTMiJ0OnRVJU1Scik5aVE0UUhsdXZ7dEhJcD9Ka3F9Vm1xYTtmP2RtNjZqTUs0'@; put 'RUx2Kz8zTzNZaGxzTGVmVjwkR3FIbHFGY191MWEjdG9GR2dMRjIyZlRlRnIhO3JPQGtiOnA0cGpTQCY5PUdORlgjVXhRMlhdKSpHSldiKjhdKmtpUX5tTyJ6KWN1Jj96bkwjayMqMiJJR3tPUTIxJSt0V2UlT29IKCp7bkVmNHZ7bENsU1NJcGI2QVZRUypTbGlRKjUqaWpsUDRxOFovVChYS3cm'@; put 'QkJrfF5qZkgwTkIreStWTEgsTFtwU2FWKmNXJDx8QEU8ZWhpNWB1JFE7UVVPVnYzeDVaaHh+X1lnKUtzSmpjZ0N2PnwjP3AoIzRST3drMTxlUXp5d2xRTEk1KCtTOyNSXUZ1dW8yXlVuRnshST1pdD1WMyRALHRLMi5iPXE0eyt+MDpVcDIrbFJUOCNjbEp2TS9aaTNyPDgvejEzIVYrJDR+a0Bk'@; put 'aVFicnc9Km52JWlDcnsoM2VlV2sxeWxpfkJJTVIrbylzRzkxcG8+OCxuJCZHQzY/eFpQaTVQUk49USl4LzhOOjxlYF9fY1gwPiM1OmNscTc5UEx4Mncyd2VgTjJ1O306QWtBU31SQGkofi41azVCcjc+Xn18KiQpZ0pDbEExZF5bazA3fSNgI3pEQVB2S11tdGM3bzIuKWBvMlklQjI5RWlzXyxY'@; put 'UiRKU0xELjJgTVt6cFUuQFdpV0RKaDEpc143UVs/K2JufFhDSkYxXixxXTFqZjJdLHNwcUk3cHM2R3FWLGg3YlRDIz0zI3FCUC5zcW90PVY9N1RCXShVJCFzT1dVUThmOzlwVzFselApRDlIJXVQeXJjZGJJKVBGSHR4ZENlO0FaaS8uQnVvNG4xViNkQ2pxM3s6fGdebHxpQDc5aixQVk0/P0gp'@; put 'bmZiPklHLHxbaFZeOWRDUEpraWsqKiIyPkl4K31zXyxrInw3KTEpfVlTfWkwJjM5RVhZeiFLbHlgOlN5WWpNMj1TRSpCUiZkOmU4TShbUnU9aUJJMEgmbWFNJmgkKz9qXSp8YlV4JnpTPUk4cCtePWIzQEBXaGRLK0hhTThPaGJEVmZoOiVHclYuTmclZjtvQ0U+ODxSOXh3YEZQMFhlRD83emBS'@; put 'dCgxaGgmen1KNzkvbmVrTGFBOUk8NjA8JipVWWQyVGhbOTl0NTglYU5sLGJwN2dZIUZsTVFEOHIuXyVgbltZLzZpTDNxMi40RDdJXk08SyQuPCpPckNGPTpXM31vdT11JSQlWXlvfkwxTXAqO1UoNGlVU0E5cGVse3NXdGdVbUlySlt2WXg7OmV5akY0cnQqeUwyVy4yYWlCLDwxJlA9MG11Jik6'@; put 'd3JnM3xtbG12ZzkwPkwyM3N9ODE9OFk9Q2lWNStsRSxsNWlDa1gmb05ePTtZPExyX15Ha01QQGRtLDIoQzB5eiFWdEQ4TCxRSjYkYFdKIWxNW05QfVRiPlleX0lhSzMySStBKXV9IXRab1cxd1g6eTRmeT0iMUAle3lWRn4kNGFDel40YCM5S3k9Z147PTI/WyV0PUBNTyRFW2Nhc0BbPSldbElR'@; put 'QlhyRzt6b0YiVi5AP1c7dntILiY5RSFRNC47Zixfc3ZvRlZiWUc4PzBxeD8wRi5vLCwqbyxQTkxTaW5hZmdvNlVgRChKaUVQW0pZRVdbRCF6Rl50JlkjUU83KWtVI2t+dks4KGYqNShCYmxvUE5tRE9kLzYhMj1GVVh9Ol4+ezs5W3B+YEtAeD1ffFN9Tz0wQHReNWBsSVk3QjpCWUFHQXMlRHIm'@; put 'L0J7Z31bJWI/IWZYM3xnSVhPIz1DKnx5T3ZbVDs7fGQodzEhXXchXTJJXXdPSi5Mb3VjcjA0YylPYzxjRl1aRlB5R2Q3dGokOGNwe0k2WS42c0ddeFosXm1lS1FIYjd5T1h8eEUoeFZgYFVhezdLSSR2VGF3WW5pZDF1VVNHKXRodSxeMGMzSUNwOl5fJHhWOWRIL0pJUz1qS1RSMU5XQm1oX0Bj'@; put 'RkNaJldUWn5KJlcwQmxzW3F+TStMUl03czNsRmNEUDJQKj1JbjF2JWlGY3s7TV1bcSN1OyFSXUYsQilnIT9EeiZJY3JYcGh8dXp0aSE6eSRxSiF0WnJHV1dHb1sxKWQsRFM7WmdHM0dIRmcwTEsoejVMNndaVl09NmcwSjhtXng8ITZuOkE+emNHPXRhZkxLR1FUey5hTSpuJmJ0MkJrTFkxPX1x'@; put 'L3M/bE5lcVRINCpxTEc+WjFrNj5IQnNpL3c/I0JPQVllVT46NTBHMklHZjJ3azNOM1d7MWd3Zj9Rbjd1QyooNk9fI0c6JUI1VCNhLHhIfD55R3heZzlsc1ZiRXtiI348OlBhfm0reTheSzU0SU1qP1p0M0xQP2VPWTZeK0NjZClCMV8oM3hTXWFmNnNSPkdFPCVXPFZNIyZnN1o7NTUyXjcrOmVM'@; put 'TFswRixmaCEmeDtgd1guYFQ0OkZQSjZGRihMXSxNd3dQWnB1RklOdmBmLCtJRENkLykqNy9ZcC4wNmIzent1SzJqTXgwSXdgOXB4WE1BeGN0O2Y+WHN5VCZ0UGo7QVRybm5CRkB5Km54YEEyNXB9R20iR11DSGdfTEQpIkAvTkI6Vl1DO2t4RUt+TXYpJGB7eFNnOWNtMDQuWnB8SHZLS0tjUEYl'@; put 'MWR7STlEN2VUJFgwSF88W2YrajtzMnpHUmNUY2NdKipmN3oyQXsmSzZ1STIwU2FKJm1fXU55Ly5BKkhmblA5cl5qZGhrcFo+MlBHSno3RGJjXXx6a3x8MDsuW3JwMENIcXZmfEgwZTwxemRpUTdDREk9OXlEenYmN1VDclldPnp6MVhoSE9qZmReIjRhXWN9Yjs3I1BiPTpObGwzWkRbUDlDZlt4'@; put 'dXF3MXNAb0xvLCwlanYwQHdZTVsmLC44U3M3P1RiLCsrI3E/NnwpfCU1NmBHJnQpLk4lX0ZuSzxeemBPcChEaVRRSG81RWk2OWwhRG5aRiteIlVaSk11QDBVTjspSHFjcF9EYSRVfCVQWE9OKk0zfS4mZ2xDLjBRejtaMzNkK0RzOnFEeF0pJW9gbXRzP2pPTXhqXzNwe3YoVSssIUAuXikqb0s9'@; put 'eD8mJXA8Z3RaQF5RTyojdWhXRnglJVomTEo/aGJATDdzcCF+VzNjRmZVKlJoXjpXKncleDA+WXU/bCNYZzcsY3t0a0I7SkwvNjFGR11Nd1Q6K2J2WXVFfXpDSUM7KGVFdkN3LG18Oyx3WnZhQ3twI0FsfXozbFptWGhwTU1gRDdsRyVZPSNuTUs9VVkocEBucCsqPTBicTo2TWBmV0dpRzB0a3VP'@; put 'Jk9EeHN9IWJFcG9lTGRZInQxK3U5TDNLLF4keGNtOFswRFtkRStxfFtJTX5JanB5dzI5c044QTokaWlfJE1fIUtdcDtjc3ckWWp4cXlQW2BGKll2QS8kLHJmI0R3Ymo6fmJGXk1HVC5iKFYmeDhkNE9XP19GTk9zPlZnVn1FfGhoMHdbeTp9UHhdd1BhTUcxKzQmZFJ6QC4rTH5kSXJ7JlRPSU1H'@; put 'LCFLYksqS1YsIVtXKEM3QnZaUVEzMzJaK01fPmh1bSxtU2pHJEY3a21BYT89MVdEL0ZudEpFWWUlLlFmaSFJd10pJiVocSV3T0B7cXRRWmk0WE9vbWFsLHhSbEhnYl1nT29gLGc1KytvRk1HeW51fm1uYFZJSS52e1Rtc3ohNm5ab1ljUkguWzx2VSFHRT1jPHcjKCR0MnZ5I2A5WWlRaTlQUUA/'@; put 'PXxRaWpfM1YrK1smJW9KQGx1fGNTITV+ez5FJUQpO101aDNJcVBvKWcjSXhjPFVCNC5wdVBpcT9FSlg7cEJtaXE/RVd6QyFyP2dqKUVQWkcpW3ZtenZ7dih+PHg/UkBzP3M2cE1SWDJvWlRiRiheTi9VR3phUiZNMmt6bWg3IlV9KUlGRDc7ajwqb3sjUjBXczwrKXk1OnRRV2c1UGM5VCF9S3Ja'@; put 'RHBHMzRkRi4sPHQxKEFWUnJDeTUsLFhrZVdZPiV0PU1UUi5RU1MkcW1ASGY3YnFKcD5pcD1CMT9RWnB8aTo5cztGckV9KVE5bltCWX4zJjBGRml0SmdfJjFeRk0rKn1QZ10wdDhsU2V9fGFdbyYxV0NARHFaKk13R0gkSnB8SyohPTAlN1BNUmY4Njl0JWZpRXZ0a3VQT3JbO3d6PlFRLjEsRzQ2'@; put 'c1Z3cjtGXyMxTE9UTChdWkxTP3tKc2ZlTXliWHdTK0Aub1s5c2IxQiUoQHlrQVt5XT9iVUR1JVYlQ2pSfjw4eGpaaDsxOXk/b30vKlNOVl8uPlQ8TXs0UEhpW0xpeHdnN3g6ZEQzUX17ZF1ZJX5RXSw6PWBRbVdAUiMzTnYwVUJYVGFgdSFjQXFJUnYrMElnY2ddNiV6LnpmW0hrSVJeeEUkPTpX'@; put 'dmtqW0ElVGhVN3JZZjUsTE5GSTVgcEJ6PlJmMTplaj45cXFRSWMhPmRPSWtFalNVcHhRMF1scz8vV1UsOWErcWFwcXUxaEVxL1t2cVZoI1BHNTkjY2x3VlgqPmNxdUZSInd6THB8Z29GeyZZTzp4fCx7TD0idDp0SH47LD1+ckMicXcrVEZyTDV2W0xlPGU3XUM0TCxRWVFvO3V9WD8ranxfQU1x'@; put 'cjJvOnsxLmZxJil8PWIhKUUwOjZvQEdDZ00qd0R9YiJQc0V3e35wKF9fbCldJHAjWVF3PyFeN2giIz5OPGRgMkk2OXUwMkk+O11qazg4Q2YpSD9lY2VvQlpfV1NgT1YkMHIpL3k0SipqZE80UkhaXnl5Yz8ucFlQe1k8JjF+SXtudk9oMC8hNExPJkh8OjhSM2EzLlVeVSpmezNVTUZffENKdnNU'@; put 'fkchfEpacnt8XzI8ezBMazVjRDlJMV12WTYyOVJwR2xrUG85JCNiSV40Mjl9ZmV3RG1fMHgjRChAUHMhZ29xbSxQI3xJdkdxdW8pWzErSktMW0NMSW52ISRxNVBHeVBdcHc/IUtubDohU0pBd2NCKXwjZkpjLGZiaTNwdDZ4TTVYOzM5cjw+cnxCdUFKKGRaWHN6YEc/a1JVWz9nY2h9UkMjdFQj'@; put 'dHpTQiFdejZrQEBWSiQmbnh9XjhlTiVwQzlxbVp9QjRKV2ZNUHpRO1YzMXhVNl9TPVZOPVZWcjgxOSYqYG5ubnhmc3JLSGA+cmI+aC5ubzB8PXhsRVBCJVdQJnRCU106VjRxSUAvcWNkNzMjeiQuZTA+Si5AXn1PMXN0eStqPz9MOylrKHAvQVtiOjtqWWhmQENsN3g8VnVMMSo1KlF6NmBscDJT'@; put 'd3hxO246aj9CfDo4Y0ZzZ3VeNF5JNiVWMlM0PUpFNTRnRk8+IT5nOS9XTnoqWmp8LD5LTFNxMG1WW0F1WER0Qz1pVyFgI0ImcCZDfTZXUE5yP3M/OUNvYkFIPUMjKyVsRVUqN00uZSVafjhpQEA+Z1IzQHh9JT0zKzM1T0FlI1ImLig6aDgoT0R7ZCsoa2Bfb15KYGRFZ3xsXSlaezY2PmtSW0ti'@; put 'djp5aDk8d0deTXkkcGFweVYuTmA7d1ddPmtSJCp2VU49WERQQHZUTnBnPzU8bzVeRSgpU1s2JH1FLmRaKGYpMjdVUWd+PEApKVI4RHFrX0MiVzt8ajlTckpGSm9TWkt0MzB2Yl8hYVNwQiZCPjlCemZIeVFDdj04KzxBYWk1aHlSWWlQRmNCeCp2LkpjZ2o9QThzYVheUDRnR3ZXaC42aml7WXok'@; put 'W3BFY2A/WTxOY2xsfjlZa2tlOylCRjosNkAyPncpa0k9bVdBQm9heUdmZDlTbDJvODBiYVBvQV81flV3SzJ8WT1edXpnLi4sRjsuOEY7fCM+PDJVXj5gVjsjcC5oQjAxQD97blBFWmtmd2UkNzI4T2YwXyZsbzZKdE5baGUuPFFoOlt9Mjl1Jm5yOEgqUTlVLmRPVDcsdGFVJSxILmkkaHZgUWhu'@; put 'XXhAeFNwfi5lIl4yOXgmPEBPTnZLXX0vO2dLPDtOblVGalQyKFFALHFTJWk2Qi9nTGFIZSFdd19oXzY2PCUiP1g4ejtAYX5VKnEwL2p+Zl9fSylPOnUsc0l9aGtlU1Q9PW1kPHp9VUwoUmBhR3w2clt7QHhyRTI0XTgsLDZDKUViWzNDVn46ez0vPEF8KmBJKUkyLDUsZHxPajk0Ljh6eSlePWNu'@; put 'fGc2aj1Dfl52dyI9Q3I8cEV7Ml13VSpvX1hHdjVeIiUwMEY7OztGfHFxOnBpQjkxMXllSltwaHVFfWZyeVhbMGQxa2dROk1QcntyIV9YTFlRPSModVc1T0tTQnROOW4+QlRpSGQ6TDBXfWJ+PCxYSyhgRDY/MCV+eklqZXgpWWl0ZjxXSTh1V3QlOj05Wkoyei4kLjhzUStnZzpdR0g9XTlRUyMv'@; put 'bjple197NGhDUCNdVV9FSFRAfl9Ab2pqT1EzUWsmRUs7QjI4LHwsNHNpaGFiLHAvLkZkIjBFOk5nL11XeDcqTEZYZihPXTc6KlVTeD5FSm95NUssMzNsbFdqbzxqUyNyUTBUVWhZVjRWaFUlIV89MTczUU17bFYhamklRSlrVXNaOUFYO2l9Kz1hP1AlYjlaLGsmZyt6R0VVT21FfEg+cHRJOGdB'@; put 'eD0xVzpDd107Q3NDWEJmdWV1Li47eCN0aTY2SnsqNVNwXiR7L3p0cnF9ITpvTkdISlcxdmtQSXNvRTkpeClfSVtTS11JNn1mRjZVR3w0bEBZJkVZNXZPbi9Adit2cU5RY3BGRXwyPn00LHc4S2lVd3wwajhhXSlAVSUjfmElK21sOG9jV2AsSFlNZTtsYiM9LjdrJG9jN3FlVnEqYS9KUUFKMGtA'@; put 'ajtidHRTQCRJN3V8aVUhJGM5PGFAK31ZZ1QldSZ3SnksaTVVc3lieSxzN01fJEBTJXZIdktRbi5qQns0aUdJQjEjOjRwJCV9UFNjblAzeWcmJmg3S0FQRiZCJjY1KEkpOyV6L3FCKXQ6ZHFsZTtZVEYzc1klSV8oVWlYXUM0THAlQDZfZD1tVXVXaCpANjVLOCtOOzE5b2U+NS4sPGZoMl51ZnFm'@; put 'QiZsezFePiw8cTs7eDIwQjk5MG1CXyEuLiwsaWQoTEs4MX0lRSVBVkE5YyZnMmNHSW1jUUVGe2JgTjM9MDFMZ2lvSTF+cSYjIkg6XkI+YHE+PU89dHExW3ImLnt6fUxXeXdkJGs3e3pOUWR7ZCxvMkp8MiUyOVNwfm1uYWtKQj47QEl8ZHJdd3E3KktRUHYhLnFOXlNoQ2pDaixpLGN0Ol0uVDYl'@; put 'b0NlMVMyfiFNWyEpamoyZE90USU6dzJyZ1ldLmVUMTUsYiEpRTE/X2V8JHwjMixYSWgmJm9kXy5lMlV2fGl+cmAhdHV1LH1+UWV4Lk46LlZ9MXVsW0x+eGlsYmtqVT0xYiVfIW8meHFOKzNdRD5mO2k1W1c7VGdEK19LbFR9SCxyUCxDQVV4fkFscDVwak9RM1lvZFpgM3xFeUtsbiNnc09UPG9T'@; put 'TWhKQVp+RnpTIkAlOXZeTX1WRUB6W3BJMGs7QllDS3lmYjtoKC5rcm1GUUxLPkNfJCQ0SHpwPkZlcyRnfS8+cUg/UkA1UzRQOVFVejt2RH0vPnA7OmRgdSszajkkSFcpJFlpPCo8ajpVc2hufTl3XyteZ3dLdTlBRS9tQn09QWdCMHcoO1IxUiZpN3g3QFZLWlY/PnxRNW9FVTtnKm99cnZ0NWxz'@; put 'N11nfk9rTlFXYDtYfWA+P3IvUFpCZ0lgd3BMJFtAUWgxPUQ3O0NmfTNsK2BpIjNpTEpvUzN4PGZCU0BJbzU5I0MiU2hXJF9fLmxzSjhaRnx1NSo3ZGNJW0heVzNCamleWSUzPW9DOkowTywoOnNvNCpgMXxUMml1Q0dfL2BfLDtpRFtTUmsvSi9eYlsuIUd+ZT0mV15EcF5VZChKZHg9I1RkOkg6'@; put 'cWh3JXBRWEVNSW96RlojKHFBb3o/dmgre1h8e3w/djldVzpXUE5Kb3x9fEVke15dWFZ3aXRbe0BbZlBMSjoqb2xqTF5Wfm5HPlJSei5qRzRjJlEzVUQ2ZWliW0Aobn0jZD9gcSN0XzxVbFYlT1IjSTllSnUjMFpJSj4vPkBqTVIvYXFrOCh1Kl4sUX5YJTY5cFE+Ozd3ZDpfMTMxRUZ0NjxSXVJz'@; put 'UjJvbFB0XVVkNzY9Uzh6JGI2V1ZSPz8iX3QvWXNrPjdXMmd1M3IhcjZZQjhDcUxxZXg3PWxlXXg3aCwsWHhzSGojbEV7QC9eI0BCKHx8PzNadHUoM2dScytNYD9xUnp7eCxlaGpvb0xbZ1IzMVhrd2YpcDU9WnRzeFs2e1FfaFEzXl1QdmtLVT4pYl1rRS9LKkJTekVYQm5XflQ8bT9IOVA7dC5f'@; put 'WGUoQ2dzJENZemkrYClpQjgoekx8JD0+LkYpKnsvIUpzRkoxNF13TTJlJXkzQU4hdXg8VjIsNFJbUUg3NTVNe1AlZ288MCJ6Oiw4OTZFSk85O0s7LzlDcU17b0NwLD5iI0BEc1I9Xj19MmpSdyFMI3dDYUU5YW9qNG1POjRdRUBSPTtld1YhOzxlNnwkQSxJI0dHZX1WcCplcTxKJGwzKnwhS1cw'@; put 'WmMhIjJaQjJbV1pvP34hPW1FM3FWVEhoKnkoVGpbOXBFfDtKWGxQeCs8WToiL0kjWDFqOkk0K0EzXitXX2YsZmI7ZWo8YCp8YWNwdWt8TWdnNGcqLD09ZWhuNl9dbX1EIWIrUyE9IUpRcV5gOjNhaUczVyxaITleNzA1PWRGUCN9TDZHPV84WEpgWTVtKmRrXlpIXi5yb3U5OiF1R0A7T0EmNjlo'@; put 'WWRJLixQNUIwbXF7YUljLnhRaSVve35WMFprQCNUYTR5V3pCLi47eGlRUXR1Z3kxZ340UTJMYlVjZzd7YFYyenlxY2NaTC5GXVMyUlsrZ05zRiVkRS5HJFViY0osKTVhdTk+M2pANz1CQXozNk90VWBsLl87TkJjeDc6ZT47QCw1Szsub2AwfDE8clJnUk41MmJwdTZCMG0hSzBtMz9OMz4xRE9U'@; put 'JlNNOXM5PnRsYnxJOEl0JlpHY3cra2B+SFV3WEgmIlVBTy8xJVhCcUc3NjRVWl4wQXk1e197SUovTVZXVk9Gb0ZsdXlTTlNOJnlscUU1I0pyJnY7Yz5xeE8wVV1JTGpJY3ZgLis4c09mZnk2WVhxMmozZl5aMmZfNXwxUEZSSyFzaip6Zko8SlhmV0p7fUAsKDAwUUtBOk5MRHpyPjZ+NX54WkV7'@; put 'PU1aYk8hJGF6RVpQNCxHZipzS0Y6LFlVRyMuSEYxPVR8YyEsdyV9SWt1Q0NJQXd3UCF4TXBfbyh1RX1iQHtQTFlxUlJjcDNOQzMzcVppb3klZXB+JiUmQUd4aHMkVVJbQEFUQm99SSVUUWpuQkAuPXI9OyErVV1DTGkwOCRjeiZqbEFPakA4NEJ6QVlUQXAxKEIqaGspUncsSDFQN251R1Q6dkZv'@; put 'QTNYNWpQNmx6QlpvemZIblI5KllBQUFBQUFBQUFBQWxGOXhWTVBqWzxJeiEqcSY3Ky9gLi9sVTpaJTpZPmVvRVNweGZuaHBPdFZVRWNXTFY4K2x7I1BnWUpWcWRJPGtEY0JlW2h5dWJlOUoyJFNhaTReTyhjK2F4aXNLaSk6aD8iRyhOSl9ieW5sfkI2bVpLXkJTdldfLGs9bnF6fXBIWTtiLnlU'@; put 'P2NkOER8PiNHVHk4elpQZi5EYDUvcnIlJFRkNUlxTzY9TTguOD5fa20/KmksOiJkZFdnaGpMXWV2SHk7azFBVikjVyRaYHpvYCEwQmBPbmR0bUE3e2pdbFo3WVlHZ2RjRW9tYmZvJkhdSW9GZ04pQiJWOU5za3RJKVZEc3A6MWZgd2VjWCZEPEBhImFKRzt7P0l7d2IiLEk3MjFoUEBVSzRtJSQ0'@; put 'czU3c1gzcjJHU3tNZSI6VWwpNiQ4Qz9FI2hWU0xQelpWZzZDXTArQTg2WkdUd1QycnVIYU1RfDk1dygyX0wzYXp7eE4oLmFkWS9hIU46OkNhbSsoYj86TCN6X1MuYFBKQGNDMj9nWTN9dnxXX05tZis+aEciKnNKYGZ6RnIvQllmXXNyRjkheSF3XzJ7IXBdTnc2R2c4PUhJIV9pVU9eM3YoQWo9'@; put 'Llp2OSUkWkNHSzRyLFpFa3ErTCpCaUE+aW1pTjMjd2QvWGRENjIka11eUz5CWUM7WU5PLEUuWXZLQzUwbFhkNTVuNiw6bTx9RnI7OCw1dmBRKlEpc09BbFI5bmI3YGFebEgmR1h2Nz1MeCpMZlt9LHArc3w0VDA/Z34wbT1PUyV+ezIsJTdpPlAvNk5yZDB8XWgrNHMiT2l8N2hWNGY0bkxZUjV3'@; put 'c2xhTC9fdGY8QygpalZJcSFHK3BwenEpbC9IR0tZUn4uajs+ZFlFXXgxR0NlYFglKHlLO2okS0wxeyYoTmR4Z0RnNjhGNT1URDpDY208PnhvKlJXK3o4UnBYeihvLkkxKD1hYkI1QE1aP34pJF85L1RkdkR+U0o9fkZPRCRafkVabG8uT0J9JnsoQEplSnZISjZHOHFbMUxHe21jfX08XihIIW1m'@; put 'QWtmeyZyaz1qSFBVS3x+fFJ7cFV3K2B2Wjc7XSRySUZebSJoWX1kM2JHViZfZWEkcW90LmpscXAzVSgzfTZKbmkjTFJTNlZwZShSW0MhcERzZjYwWjt0b2l3KShmPy4qK18uNnApfHR7enpYOFFLPyxlNEh7SG1TI0Bdb08pPjBtRz02Ol13SWd4P1VlJmRxYisiNHJUdDk1OkB4RHd9cSE6YHAu'@; put 'PkdAQkJ3I3shRWpSaWVEOEQ1PGVDJXhwSkowdjVRbnw0InUvRWI5QiJ7T3tER0MoPyJMVWc3OFFySTJUfkw6bEdDWWBkajchfGtNMExrMSpiS0puWzx8dU5MQm9ZcnRAU1sma0x8RVRtQEc2aEViQDNpTj06JU1wMmN4JlVtN086WUJVQiYqJVVFQilfeTtqST9VJFIyRjNkPlV0eSMydT9wJkB8'@; put 'Lm47UXVVdmZGQEdLZGFqMko4cCF1fHJGazY4TGAwQXxJTU1ofXpPcShGLj17L3BXYVpfUihzN0k1Jj10PVh+fXI0UmJ2VnpPWW8rLj5KRGIyYlEqUD5xLjwqInVvOmJiUDMiU1BXKm9FUiVEdnshdFg6bSJPS3ZXOWBlclZYP2p+VTYrfitLS2kyWlV6PmsuOSY2bmBge01KRSQwOy5BOylLKnVX'@; put 'SFApVCxJM3lIU2xoMlFiLiEqW3VgVnlwITUrNDxqbTlCMyRaS1tnSEshWCNKJFVfeSxyTmF5YWM2UWtRUitUMzVlJlQrdj9WOVRfOjdOUzZFV1deQnN6MWVjJk1hRiQwV18mdnd5Y0M2aEM/SW0sZDw2KW02b2hkXy5XN1VGXU8ia1coNlNNTj5WUTQ0cng4cW0xYSwve31AeCRfL3Q7Jl1ScVQ3'@; put 'dCs4dnJwP0hteTxAZ3NdcSlMWnNreStiUjxbP2gqLyxrZyVwcWd2UzwvRGZdbitsdEJWTC9uSH5UM29rM1RqRn4jNlEpMDNRcW4yJEs8I0t5aTVNak5vR1JPRFM7SGxwe0QoNyE+W1Zydyg/WS4qWylGZzpPPEUuWzlJanF1RHheR0k2NlEoJFs3bl5QaiFefW5OTXY1KW50bCJOQEddMDFMaF55'@; put 'V0l3PG0pW3laIjRIMCo6Y3lhZHh+bGZUW2FyZVltN09wT0paImV9W1JyU1dwWmB2KGFoOUY1TVldX1FlQ3BFN0xna1l3ZC5xUWw3YjpyMigsR2w7LH5bW2RsWjpYJE4lX0BLLDdkRFB2VEhwe3R8VjZLKFtTey5YSkR4TXpbPTNJbSNGWiRjKkR3c3MlaEgvL1EyWkVoKUY2M3deM3p2L3QuNDE+'@; put 'c0JbdUApMzRMPiNQO3YoS297YXNmQExVVHM4QHNEaix5MkdOeEpbLzlGKGx7KX4xaVhvbm8lWSltMVpzcFJEU2s5dCZQSihKTk91cEU3NnBXOV89Ry5JWk1AYlR7MyN4UmtQMW5hcUwhUnBlS2V8eDtFaSZbdEd9Qz9OR092UnhvUmMiaGZrUiVLbzAvRE9eSlpdNGxObTB7ODYmVz47eS51UVcq'@; put 'WzUsXW0jfnprbSY+ZmdkUVMuVDVxU0Z7cCFySz53PjQybTRTeSNqdUB9Vkgjdk9Yeld2M05WNSp7bWJmRCgoWDFvZE86JXtXPnVEdjxjIX11VnssJmlTZjxYZkVeVj4meilKbClvaSJpdE1+dWUqKXZWfj1CO1VNdHMldnpQYVQkQkNqTns0O1dAWnVRUV9jR19yWUMiKnJQb2hESEdUPGQmN11T'@; put 'P1Z5Y25fbEovflZ6OnlEV2RTUn1Bc1VGWD5VVDhfOW57e3BYTzd+d01HbjA9TURebGhwR3pkZDQoVHFEKCxgV0gqS3dhO1VybWhCJmEkSDwqMFpfLFh2ZUg+a05WUSRHIVUhWDwhRUBWcyR+XixUaUFWXVtxOllCSlZSOW5VXls1KUZIRigsZClOXyM8Rng3QXdyZH4oWk9KKC5VPVJsL081Z3Qw'@; put 'XSx0RGIvMCh1akxQQD9HSCpkUyZpe0dwcEZSQyspOWlWOSIqVWtiTk1gRCwhQSNeM1pAR2dWOF9GOVhfUC5fPUo3TDkkQyheSXBYYyZlVExLOkhpU0ZGeEdQU15mK1I4aF91PmNDKUolSVt+UVQ3K3E2P0FISS5POCIzNjhyZk0/ayNLcmdPI1k/TCsiXiRVfm9dKFdkWHcuNlN0YXx1NmtyM1Ez'@; put 'cGFERkhlekI+e3BIUkJad2NOQCxke2leRGU/MjljQUdgP19ldVlNZW5MM3IiNmdPZD53XmxQMTdnKS5mbSYyTUFmQ0JYc3gzPmNnK3E0XmExdVphWSw6bTVlKW5JJX5eKVE2bSRdMjQyX2NrNikkSVVIbk9LUiV6R0NWRld3SzdqKDg/Jmlba3QrdklvUyg5M1I8QzxDdkUiKHRbKVBILipeNDJ6'@; put 'V19XOUI7YzR+K3FOcihtd2FaXiFCPj45JXI3NX49JD4iX1khVjokQTd9LHk2YEZIUCRTIzFgSnhUUEtFLGFnI1N4bHkqSlZEYH5eO1FQVSRiUkcsQm57YjlBQFFnQV1WIz98fSFlbnpCND1CMmBFUi9QLzs+QlciRTpZJXVMOnt5eFpiIzA5XyZTMTQhdGkyaG5kYlp2SFF4Mz54V1F+SEUoNVIx'@; put 'O1JpYlt5KUwye3tSN1lJU3gqQXk3LyxGO1AyPkZlez4vKFFeNCUiP3JWa0xmdkhtLFNSQlNZWkpQUHpib3hraGklWllLZSx3OEg1JEhTJU91JEspMTI+JEBkcmFsWXNSQE8yd3BCaXM/eCpsYWdsbF8zdjw0KW4rfWNvaTRGXSl+NjR3XSJmPWZ+cDRMWDJxNCZwYjckdX4yU2MmcSsyYClaRGxv'@; put 'cSN5Z0o6Jk4vJSQhQlkmYk9+PX5sOXBaLytMKmt2W0JeflppXSNZRix7ZCEkYGsoMEBZNGB6TTBjdmRKemFPZnR0LnpoQDJ3cDFSb1hRdjg7aHBDcFMmcHVAd201enNVKUZ5bWRuMGIzQWV4VWs7Qlc1S2VGSHZ8VnR4IitWXUpZbkM1Q0FWQiZqb1ZmRCFoWntISyFGdFcvISVFbWRPNEtUP2JG'@; put 'WjE6UElZVzcySCY+eTBmOD93JixBaT5UWDtufWFEPSZdM1tvPEM/PX5ke3E8RkV1QXJKLH4xYW9XITVmQyFpWCNVKyRlYSE2dHRfRDVJbUE1azU9XXUhYlNVfDpiSDRGMTdLWmA8KnU7SDwqKmpSLyoye21bXm41SURlLzNMeHc1fTxzaV8wTkh+czdsOTdqdV1VY3d9U01YY01lJX15JDdFUmhW'@; put 'fHdgRCpxQXNSYm9FWE9ZRkpnR2Z4bGlBN0U4TGQ6RGs/dWNkRXpLOVBnfSNhKWttPXdBPShNOTtmeG9baFM7Zi9WS3hJcEg8MVtodnpGemJTYXJhPWpVOHg+NnA2Z1VtU3RoMklFOlYsLj5OVCtsSU81fF1pT2I9P0M5MCMzN3NjZyhSZF8mMjdlTDxoblhMIWRiQUw9czxLK0g8cVV7dFp0NTwv'@; put 'aDdBIkVQSXx8SCEocmgyP1JkcGN0LEB6RlVxOUw7MDYoQntjUUJzfllQei8mUTpXImhPME10Kz1QYVZycSlsIlJmPU9JITJ3K2gmbXNTZ0hNKVZXKWAwcjNaVW4wOkh4ZF0+ZlYhRFgvTnUzeD8rQDApOmNhLF9sVEs8X3h4dDJVRVU5QDdGemkjOWZrL1NVO0hyX0AlUmQpTSthWzIuQHZFcH5v'@; put 'JD8xX3RfMHYwa1NeViF5VGE8JWh1aDl8KlV8ek9zSEZZZlkmdXtzLHZSOExDRllMTmFfIkc+cEtuZV8rPCU3Wi5pRWN9PG5TWGAlMEBeUHlAZnhmK09kanleeSZJWFlTYX1HTXpPX30udWNUISklX0ZDPkxmZkxwNCtUa1FaclZkYC8zdjJvQTZ+JkhXTEVWN3huMyZCPVA1XmF1My47M2d1PkZU'@; put 'QTMmNkRHSHByZ0FpKDlDZzA+KVpmMFNrRkciLnFyOG9LTj00bFp5ankoPz91eTB5VVFSTFM7Rn1aR3kpPmtNVkI0X1tlIT0leXAhdnx8XnZkVkdfV208fTZGOy5lL0FQOF0vRVcpKXcqNGhRIihkMyU8QTRLTTEiRkIlU1J0Kj5zeXJMX2s7ZGpPTWorVDBwUXomKnBtIktSZCwoakJfMyUhfC9L'@; put 'R0pUOGo+JkNhZU5ZVmpFLHdTaUFUPklLYDljM2x7QTtKeD1kUWlKaV40fjFzTCFBa2k8I3piWVI+QEFnMDU2eVJtNHdqWyFVeysyQ2ZtSGNlKFl4Xn5Hb2xBYnA0R0IoeFc9VUt7R3s6Wil8MHVdKlp1fllsJng+ISIoeHAhe1lvcWJZRD4iNSRNPTA0Xl0hXWtaUzwsVixqdyZfcnJeIixadER0'@; put 'Wj0wJFEqTCMlWFArdW9XPjcvXXlzd1U7eEcmMW4pQXtjbC8xNFZoRD93SWhEOToqMm5rPFQ3bFMvOnZBdyFMemRqJU81filxa1NZIlN2OVBpRCptdkduekN3U1M0cDZ9WURNekdlTz5iQ3pYTzQ/RnJqNGdDNCk6OHAmfDQ2X0dqaEh2OGlPJlFfZX12Xk9VIXtzLDdVYnpGcmY/IXFma24uIlUw'@; put 'NEckKzVdMVdwfTc8aWomcU8mYThfcnorOUNHRz9+KXt1LmI9Zj5tVV0lWGQyQn1STFdxZ2V3ZyhNQzQ7QTpgZTBibjxva2g7JWF8PE17IW58Jj9wLH0lblRSamlXLiIjVXwsRFdFaEE3SDtgezA1KShgNG9ZJXhuYG5pSElHaStfVkRkQD1TQWJpZkpgfSkjeCVodXk0I2tAUVNKKnhxdV1wRmBu'@; put 'MjdgKlg8NCI2XUhZbSFURms2UWk9az5pUD5XPEF7LlAoRVNZe1EuVyhIb2EwV3xrbjI8VCFLZC92aH08OGp9aFFPIT9CPFg4e2pLYz5NZWBwcXhkQlQhV0VhX2NASUgsdmh3cEU5X0g9OF93cFNAeHtqPy9bY2kjWm1DOy5RJG8lan0sfXZDW1RjQF8+Y1R6UWszaSxmLEsjfV1vRGk7cVJRRG44'@; put 'SyM2ME5zak1VMj5qVTF5ampQUDlIYV90cit6bDVqcFh4R040SEEweUFPP1NyWl1qPUA/PjlgTXI7bWJuLnxjN2AicCxtVTtae1tNInwqWmheeGdVJnNMbD1KITgrKUQmMU12RURyK2RFPkJXKlUjIzBEYFBCPV55UWUwKE1xSnFsM0JMMU54fHFAN0RqIkV1U1U6ZFpBenVMeiR5SnZpNl9fLkUs'@; put 'PT8lYjw4ZnJVSkxfIjxRV3I7WVN9JmlCP3pYWlZVTHI4Pn1vbEMrNkM6RFtDa1tKe2l8KEFrJm43KlcjQFsyOVRWflZyZUs9UT5oQXxrXW9VOEtmZVAhdEl0e0AsMzxlOFAvO1A7NHlBLmMybD5reTAzJEZPezlfcUsxc3xwazVXX2ZiZTw0XTd6amVrSk4rbUopSUl2YmdEa1haWWNfVTRZKW5d'@; put 'cj81e3hKaUJnfitePVZvVDRyejZJZD41XlhiQTRrWihIS0klZCM2UkA/Knw2azB7cHhlfGIyR1QlTT84ZT9OPz1BWStYenFnWixbRD8vcXBfczYzbzwvKE5IaTRgRWpVR21RcUQmTTZsLHx8LyQ7YlZfPTQ2Ql5QLi8ucjYrQXxRQExVWVcuUm5BTjh1c3NvYihvcjx2cEk2WDJuaSQvXUpAfkRu'@; put 'dzVXIVJCPkt5Oz5xZmIsd1BjNUImVChPIUllTlU3OnciYzZlPzN+QmZCQig9LlQqZ3Z8eTh7JlNvMXluV3R8U3t2PlklfmNeK3Z7IUhUTzFFKG88QkI6ayxhO3lSXjJyOU1LdEEjUGZvY2BfPD9WYWA+RVF8b1oveE94UDI8PnI0OyF4ZE5KPyk3VSJKLFAjInxwa3dvZWElSVFIdCo5amkoZlNp'@; put 'VCU+cTlyd0UwNFNpdzJHcnxmazxSUGwqaXpYUmNqdiEub1VjPVdEKl03UT5dVTJfdklaclRbPXZTLDFTMCFzYEhtNUZHclBISy5FXnwkckYlSi54VXtPUmk7WVtnc1FAKiFTcV9ST1EsX2F4IjRgQyhoIzt7fSx+YyZ0X1NnSzpiQnwhQiwjcndYWmdRSU5XXj5Helh5VWFbPyRWVzN0dEYqMWJU'@; put 'cmpzNUVxeTw9YlI4LywqZE9JJSt1ZTJFL0A7PGh9ZHl6RzkmbFUyeWI5SGk2WzZfLzVVITttTTlNWGw7REZeZkpJe30ha2l6a2NtWVM+MGFOcyRCX2paIU16KzttJmZpPEpsPkgrYSpdWGRJIzNDeEQzOTpnOV94I0xma0lhXjNAWUtLY1hbQTchVmlhI2g8RHB0P0YoTzQmfWg2OmQwVFZFW3c3'@; put 'Z3IhSTBuNC5tLyxHUk1IQltWeChvRiRIJjdxa0x0dC9wQlhrenhALnUvWnIrezA2PWEpI154O0JBZn4yZk5gRilPUkc4KnBYaHRgWU9tXk9aeCp0QjtAPXJhajVrZ3BCbXIoRlltRy9SKyliQjckZkgwIi4wK0thdmF9fnxTKXd6WlJON1RXQHtTbHp7cXhFYz0oK3Aiaip+biRYW3tQby5rNE5S'@; put 'e2lZTjwkVld2PyRrSWlgaipUWEM2dWIsNkltY0dpJmJvL3dOO1Z2OFdTSGphakw/TipkYWQrZlNecjR0blhNcW5IbUxnVG00Wy8yLylWVihpO19pb2p3R0BIInYxMXJgYm9iXThaOHtXRFRSMz4kRngydnUzUlRYMW4odEtMfXt6IV9ZSTFPOypDK21hXj15WiRxRUk3QisuIyF9bkFYajs+dWJo'@; put 'JilETlRSSVI+QSE7dCsvYytPOn1VNnVFVlVAUnRPX3N1YXBpS3Rabiw9ZV0udFlBUnRmN2ZeM1kuPFo4K2VWNH48I3hpcUZKSFlONz4hdmRXYGJKQEteOF43d00zVzViS1o+cD0yaD4pJElyd2NWZl9AUStaSDpaY0BNZGA4d2Y8fHchLD1RYmM1SFQxKSxJRj5bSltyJFhVZ3dxQiN2OGN3ST5l'@; put 'VTQzXkZrO3RUQk90KHw5I2g7WGokMEtWL19nQ0Z9a05aaigvVShGQFtmODg8YiJ2JjZ3dzNZPEY8UCVXV3duOSZPX0dYKCtlS09mNDRNPHAyIm8ma1BWNThdUW4yPldVckp5XlNVdHAqI3NFblJQXlFwW0dBRnpDdl8ucz1jUFZQcFYzVWdbOnhnO0h4RVlBdSs3M2k0Vnw1PTledmEmVyguUXpR'@; put 'O1Umejw9Sy5heT9+JF8oalo5fmx4cUsqdzV8cV59YWpUZUY9eTpKJHNwU359eyNXZj5YV3huXX05R2o6fm0pLFU1K2V5bjomfCtyYjY8Ql1dVSxqbWptdjQjQCtbP1UjN2dqRDJeTlczeEQzRCVYfHNYbHgjXzg1Lyl5TFt0Rkg5Ij5ubCRjVEA2cC52fDg8NS4rYjc7OWZvNXhuLl1VOlEpfS44'@; put 'aFJePDtoKyZwcyg5eFdgQzVzLC87QTVwVllAJS5QMi8lMHRIRjlncUFpZ0VmQih4dU9mZU9kdzoiRFdYKlFfOmojYFE/TVJrRW0lanZqOkUrc3tualc+UF14Qm4ha0o1Z05+ZGVkKU1TfjdsNW44Pzw7SUpqal1vc2A0KlF2PV5RRUokISp+XV4zJVR6KXsoRHV4P2ZYdlFSfXE7W2hNYHh0JVJY'@; put 'M1dsMXA1eDh0VWklVT5UIi56X2doZjdeV0hoVWdSLCFyMXxxV1J9PykoaVAoPFVMP2FzbDVIIkN2Z0JmeFczcCtiJntgWUcjajhNMj1UTld7aF5NTypgeEBtLi9pa0dpQysrKmsvOXdAZHc5cCN0XSl9Vl1YLEhaNDA2OUxMU2dkMG8vam5VJF9zTi9PSF1PP3JOdGNTKC9bdlR3TWZed3Epa019'@; put 'IjRhc141OTdgYUFiPmx3PzFlUl82PnZDaj1DWkUsTTx6NDtGfHRHRihrJUx6O1p4NnpmJT9oY113U1J4OmV0NSNWUXBqUzxqbSZkKFNoSUdhXlYvNixGNmMxN09qL1lwO2Y3dGhzNzhheTAodFJALksxZXdKPUZRJVkpRG91OW8mbDEhRkhNeDdINS9fci48fEZtPF4oczFPVzdTaCQrR0RNY00h'@; put 'dGo8IWdCWkhHbz1MVlorZXRhMEFdJE92ezNhNV4ucTxRPj9kMm1nNWRzeT40e2FvX04me2NLKWdscykzYjBxIUg7I01wRUx9cmpRZWFPcFsvNzhJfWshVm9YNnw4SjUhWUBSUyFWSkZjTylHR1FoKHxMb3JPIlt6TT9pKGhLKG8lcDhiXUc5V0J1X2ZxVjwvT2c0TDNCeyJwMX5kOmRFcWtXVEZe'@; put 'c1FvKChYQnIrWyUoRXx1JStQV1giPzsiaFtHcC45dUhAeDsobjpTPVheLFBPSm1sdHx9bS8+O2EhUHBqSHtQJV1hezgzfUh8KTU0c3AuUUosTmkzditEMH0sLy52b35qZHFEaEpQO2ZqZiI3W1FLaXpOWEdMUyFPRnNJcXEmRHdBWmNMQk9gT0pTfUJdWXxCbExqKjBnNWI0JUY4fixATHdlKTpa'@; put 'TDhdZHYiY05hLDM1ZT1mK2pLSE9AfXQmQDVYPiR4ZHxjQzdMdWt+bDprOSgiOHhgVVFDV2VPW1dmJlNDOCswRCpvQEE/dS5AXiFHUEAsdD40fUAzRTQxbC8hMHt+TjxPZGg8VnBdQSlWX29dL11LM1c4fGdhPChbeiVVfiJaWl8wQjQqRXV9OGdGQjt5dXtqejtoNT07WGJKflhBTDNZJXZyLGZ0'@; put 'QS42OV86NjJQQi9NN11zSEoxQFsyXnl1cjB8K1J0WUslWUAqc0VqYTM5R2sse0IzYmJqdSljfGo/bl1jUD07cGZdYCN0QyZVYyU7XnhkKWReX0x8eFc8e21WVltCezB2THZ2aEAjPV51MUVVMkV9LCJrTGxzP0E2MEpuZW16d3k1fmZsdTtjakxaQWJQKG1PYlBaMEBNe1pBTCNvbm9JMnwhUEpW'@; put 'a2swNX5bIjhRYlRkUCtFRz5VVkAzM2ExOThjK1lnbG16UVh4TUZyPHBlfksuUiRlTHEmK3wsRHtIbV8vKCtQXTpaNSEvWixAVTpIYWc2R2R+VntlTT8vPH0uZTlIQ29XVSxOV2V8ZXk2fEp8In0kciQpMSFHXVlvLEBNRGJodDsiQkIiJkVdU2Y8Vj9pIjx0XV1iPGFZITxfcVByNTgsI2RjdlM1'@; put 'Uk9hdT1BL2o4SnQkbHhCNXhlcnc1U2p1VEpXIzpFaXhWdT5PSVUlLzpDK1UoNmVZZ1o7VHFNXj4hZHByXTNDQCREOTZ2Y1R8Q11fPW0mOEM/TVslZGhbY2xoYyxrYE17U1JDKyozPkY7MmJ6fTRRYCMwPTtgLjF6d2VXYH13PUp8fXJzK0kvaE56XkN6ZVtHKStwKTp1WiFCPDJXaTsxNGtBQlMl'@; put 'fStVRzphPksmQmZ4RHgqd21LM3t1LlFMNjQofFlONjZFL1kqUjFpeTEqQix3YEc6QS5oZHlUanh6W3IjNyxKTz9uZXUvMn4qcC9oPFpmTko1K0Q9XiJQMT9GRDdyM3M7cW16Q3JYcSp8YmB2NFhec2M/UldFUVhPcDN7UURXY11kbThtMSxYISUpY180Vm4rdDElfnt2JDgmWG9eWT16KT16ZWRW'@; put 'QWVLJVhdPHNeQHZJb2pYcmZ+TWVdM2RFfVA6enpTU3QkInIwNSV9VXFffCtUdmM4NiZQSmxTOXJ7P0lqKCNRVXtpTl9sb019TDw0ezt1JTRlSkpkNS9LIWEoN2xWdU8rRT18UGd7elhUODRCb25AOTM+emUhbkFBQmRSUTpQdElrMHxmezRFSExFcD1EUHMkd3tkLD1Gcn50JXFjTiQzbG45Ynch'@; put 'QkJyIWh9RlhTNChvNXRmL2FuUWVSSFIhOVllTGVWRlZIe2JuRjlqcj58bHB3JFhZUHlNfiUiXloqTExteytvJE5YOCVyTCZmSXRDdT1yYE5HIlVNOzw6W3dmQ3NkZG5rY2JaaHkyKmYseV1iPGl2dmpXI2tZN0VHOVQ6SHxHWlJKUiU0eXJLRl1AX2hXOWZ4ImoleilTdUlsTmgifVZgZHc/MCoy'@; put 'S1l1b0RXekQvSCwyeSNye218MS9SVnUsezpNJTFLPl9rbSFIdChrL1AzL0Y9dENCU3IsM25lPGJ8UTFRO1VXMV53MG8mWWY1eldwKntheWxqfXMmbzU0N0dYUmBBQ15RLy44cTBZfFNXaUV9fnJ2cDFWc0pEYXA/aXEoeFV1W2wha2NqS0c3QV1XfkhAa1MwPjFqb3RhTkAzbExZa0xDKXpvSkd8'@; put 'VTZ6VHxDRkVkWml7MyxfWmZNQF46QHhjJmdUN1pMR25IUy8pUDMkbFUrM288c0Njc0VaK0U9YFFjRzEoLDc7ZFZNeFQjUU5mQFlIWzUiNHtxNnVNKHdnXipJZFd2UEpHR3IpeFlTSE1+MCIuQ007KFhdb1F6RFJMe1VeRFY7Y3ZYSCw2I0A1KERVZSg1MitgWFglYWE2PDFbPEw+LGc+TSM4VHYo'@; put 'dVQqKyp2UVBofikzUCh7fVpVekgmdGFJX3dGQldTKzpDQmxRPF1meU0wUmF5InglbnR0WFY7PGI4MFkkNig7cm1ZYW9YS0xSIVthd01lOjopM3ZVblNxUSp5UmZaI2RVZC56VHBoUH5fMlNYYVUja0xoT2gjXTJbOCtTajhQMEhUXzVKSE55WTIxYUNufClqS1k/I2tdQS5AYD1ydyRSL1RHQ1oh'@; put 'LjR8Nj53dEFjNElBZTZqe2toQmdEKWBxUWppUWZkezhlRE8oMFt7WW1QeXMsVlpyPS88R0Uxb01zclkocX5LaWxwfFIyOStLb0xFRChHKSVLdiEsRk1Ld0QreDpqOW8lO0VDOHY2Nn0yckNIMzsofH1GaWdFO0FPX1ljUWJlISZJQiVaJW98MFkiMnxkI2NtZHg6PWh9YmklcDVPTzF0Kz9ZOVFU'@; put 'TlJPSSFudTplU1F0LF0rZnk5QWYwWlc5KmpIc0o/WmFWc0QjfXF0IS85K3BEOk9ZU0REW1tmIVNAZ1RlMm9teV9aTXZtLDg0biFgZ2YufFdIU35PbGlTKW57dmNwIUozMFReP2BxIWZoPypHVmVqTz50KztJakllemxjUlZvOShAcEYmMkUlQ0JGMDxZRTVsQTA9S1Q1SFBwTngqVDF0Qlh4bj4p'@; put 'PyVEbFg1U1RwWjRCUGZ9ejI/e2hXSXs4IW5DTUkxUlVtVUZSNjVXMGE9LEJMKnZdUFFwOCpKT1NsXltQI0ZwSU0mOihLP2M6SnI4Mzk+a2M/ZCFQPUtLQlcpWG1OOkhiViorTyRyLm5pQUgpJXZjRyxxWTNFbVV6Jk9tI0VBMXIjKCZjSFVgVkJ1Ml0+U0VQYiRZQSRXM1tFPDkpKGhkVEYuITYj'@; put 'NjlbcylLOyZ9VDxzfE8qfVN7TkU2RjkzL0UvRjA6fFIzb0lCVWVBP31jKXdVSWMmW3kwNHlHeElPZHdsV2xAW11lV09PTElhKTB7TU58bjZdSSVBfXx9YEVJYE0yXWVEMzxgeXdSbnpkQWVAcVV5VjxNdEtJUHQoWWBsenluPTciKEhaTSlgeWhtfHhXfSVaL317X3dXUi9CM08jb3krLmFOVi9s'@; put 'KmwleDFiPnJoWEx8MmBzWnssTk50SGc4bmpfPzx4ciFISERnfVBvS1pXZ1s/I3MpSGtXOEYkZkZea3NITFFnL25bNkBPaTR6dHNZcFMrIU1CNUszVXNyQlEwc0BKZnF4NDtAO2x7L2szWl84Vk0wcFMiaGBkY1F3V3w4YjVaPG90UnxaN2IjeW4hRzAscm98RnJ5OHZyVD0/SjQxVzYpLDVSIzok'@; put 'PHp5ezs1ZGBVM1FdQz5HRTM4SXk9elVnPDphcWxvdmsrNFlVN0Q5RWhoUT06YEY2KSxyZkozIVFjK1Y5R24kc2B1VFVfc0FmPl05LmlVTCl2Sy84c0B9Um9ZYnRUM3RdaCRKR1M3dnsyR05rT28rTi9pZn01UGkhNHZfJVV4ekBsYmBXPW5AI2duQENddUomVkFNSUxaKjxWZjIoR0BJbVNFNH5C'@; put 'NUp2UiVLZlQrPnxqWC8yJml5ZWtvNEN1N1U5eHIpfXdVMFphSiM7e3RmOUdDcFBESjV2JiEpRzlNY2hhNDJnOWRqJDJxbDxhRi9kQGUxKDMpcDRvUzQuRFJpRFA/b1V3UUNkeilLMzlnXlksKko5UVU4ME0rIntqOiM6aCEkYUhQNmxmen1mfm1WUEgwbE0pJiF2O0FlaGVsOnVDU2YqfkRBb0ZM'@; put 'UDdWR1BFVT53MkR2bktZNVR+Y1Z+MWVJPmY6W1BIQGdXKlBNbH03UVJCX2lbXztQei5dOHQzV0ddJXUqO2g1fnA6PFZJIyN0cEl4fCNubDo/LFo/T2h3cU97O2BaRmhgZVcyVjYucHlwXmZeRz43Vml9NSs1Qj9aZHYhXmsldUxDYFtCamd0PGlOUnckPHN3eSxrLz9XKFBwT0FPLnlAdy90RUFm'@; put 'bV12ZUw2fixvJTlJLHdOU24/cUh7dnclb2g8VyQrRG1qczJHPkwmNW1yQC9vU2ZpKSlNSDNCPEZWW2hgMkRUVGJPMTJicC4+bVhreX1WJU07Jjc/JFlRXV59eSpJVTU6MVZ0L0ZaOCtuT09lIWcyNEA3Nipxb3I+dmxmWCZ4eCNjfkIjbCVYdk1pWmMmMncxVntMN3kkbDJ3dVMpZXxYMkpETTRk'@; put 'ODhHVnZMa0E8WVsqOkR+bm5MVlcmIzRaeCtlQihRIThFKV5LVnY6aFFDQUpOOGdTcjZfYGtHSnU2VGpDUX5pTzRxJDluUEliI19AbXtBZ1d3Z3NsOmNqSDRfcz4/NklkZkNbWmA0fXpKSTJ9NDNAMWZyUHVoKXc+bFJrSkxZQkRWUV4pMEpyVGUmZjhoTl1CUVI9KSRIXkIzRGwoUEldWF0kZVlu'@; put 'P1FnLn5xViZEOSZnd2k+XkNne1hjbDgsPVs0Sm1oSkdheWRkM3xiKkJHVT42Kkx3RCs+PSNCeEo1RSVIKkVEP3tnbjc2VH1YM240ZSRUZDVYQTIyRDtZRGdjdkVZV3BJU01Tb2EzUjlDLChodFZpSlFrUFZoSUllTHouOGBgfVg4UC96KlJOLygsJnB7TzJpIU5sbEVwIlsrInB0SkpIekdsTDZg'@; put 'ZntGLGlLQyIqeHg/NGhqTHxrYnJzfEUyNXpTamBva2lgdGdSMy4hRV1oQ1ZqRWlENFQqRXJGc09dKUY7c1ImZ00/KWYxc2tFZEc9Lzh0dzpWMUw6V3hqRWV7fEZia0MyOjBISTc/QTwiKmRsXTVTZ3NNKTNVOihxX3RfbXYiem44ZlJGSkE5TTt1TTZTcillNE5GdDElek0qMy9TKSVzND9Kd1pr'@; put 'VSFSWmtyM0wjPDlTVlFfQ2FIezU6Rm00NDVJVWtkaXBBNHE/TEF5PzBgKjlCLzlmZ3hOIiYwPCI9KFVSVTRCZjR7cj9YVCkwdnV9UV4iP21CNztLL216SkhQSTB2U0BBMXNxRDovQ09sbUd9WDh1TlV8P2Zzb2c1LGo/dyV2Y3BTNzFDXnE/OW16T1kyT05FVVoqLC9MWypvTkpMYkBnQ3FMR0ZZ'@; put 'U1olYSk2dEVxRSspdHljSiJrN1E8cDlsOFhnKXZZalBNblcpOk9vO0BrX3B0X0E2eFtOeW0+N0QqJWxfdGUiK3NTZUIrSGs+cm8sKEVqL2xFMSw0PHZ7cnxiV3ZMcCRYPGhdRyFYSiR8RVBYXWhtfktaTHNxPC8pTHZWbWlZRGpWSEtOQT5CJVYwb0U/Njs+XVE1dHVkZWZVMFdVUU91d3pqKE9y'@; put 'Z0hMbjxnUi9fZWJ2dGQqOyU1PUVQJV9BM2R4SXV8SkFYP1YuYkRbTURhUnhpeClQblB9XXBLSGg4fGM8VyN4fkduLmBwVHNAWzBhajVWcHdtRSJlSEsxOkwzbHBEcGUxZ3EsSDkwb1ZgSigxOy9nd2dSNV9VJXRCdE5iUVNMYix2dUhDQEg/TFtvLjlsLyghLFJHTyNzJXBHcn13Jm5ydnAzOSNs'@; put 'YlcvNHVWWipHNFArI1ovQTgmclsqK19HVkFgNmwkOmVbX3g4TUdgP1Jbb1ZKdXpuPExrWj9vKjRUejtoKmgjczZYRipkMT9iemw5LyshSGguO2opYjhXWnc/S3c/YFg+ZlNCenJ4KVhQRWN5KDgyMUMxallAPCZvKV1JVWFvdDcxXU8lWVd3ayUzQEs+S00jUT9kQTA/ZWJUIywvUC5yY3xWQmlr'@; put 'amt7N29nQ3xOV09yLiJXW05TQFZaVDtUcGdLMWx0RG0wYSRGRjhmYDlHYm4zMlY8VWZ4N1lxO1BfKFJvck4zJlMqZkFRRGFrMFU9O3tIIS9UMWVRdz1jK2BlN0dBaTpePVNOWn19KllXYU0+ITcsb2cmKDI0Ol5OU2N1ZTsxTCo1dkteJTNIb0tuRz0rNjd8YltYMEUwQFViXT9OQ252SlhsUzAz'@; put 'SGBgRTNkUV85eWNkYmc6ajZ9ekpsP1tOR35iIzdndVVrNW5sdlFsPlpzXVk2UzJzJm1NfCJdMCUrQE5FZmlVWUd6PT5KImNJNFFOfk9NbUBbU0h0aW1eMD11YFkmQWVXby47STsublh1UVlmfUwzYSYxJks/dX0kcXFtWjdXK1VqekdAK2JOcVV5VnBCQzc1O14lNC92fjZJdWZlc0UudndqZjd7'@; put 'ZTZlJnNqd2lDI3NgTDc0TmAxVDV7eU1mZXU9UnxVVy5CcF5kTEhkWjh5dFJjX0Y5XXRse2kxInYieElPI3pLNms0eUgkLlJoWnwydW8yaHJpSk1uR35ZfCFdYlYsekg9cCJ9TSo4P2YuXk9jMy9HW1k6QyEyPjIkeUJeIUc9NHEzKmFFKiUvdUFxOVUkdEk7b3dVYll1O3BmZVU1T1FwcEJBQGVX'@; put 'aTJ+YiJOXltNa0RnfkNKJnY8QUMxNGpGWzRbeH5PbkoyUDEsNE84dG8/Xj04MFVVYz1wQmhaPlR7b0VzZUNfREd7fS5+ZD1wZWRQdXFRTkNXQXxYbHZsMC9vczlefGN+dzElRC5TbS5jW3lnWlQ4JHJyPntJVXM/NGYlWnJ4dE97I1R2dEBDIVtjPVFbUnghKTNQVSRZdSMpWFQlUygjd0cuUT8l'@; put 'cmMuVFVtNm99NVYmIXVXJFZ+N2shXzNIeWV8WVs4NUZBV30wSWhmKTY3QFBFOEZ2aTBjVnpqSSlVcjt3U3RpeFhWKzwxSH12emlQRmlETmNbO2d4dFFxMT8wPEkjRk0/M3BKdXFoViElaWZqUW88JnNafCR3VF1rM1MzLmJmKDkwOzpjVnpVW3M5cFp2MktibFltYVoqZGpuMT5PfHYoR31jU3By'@; put 'e05Vfk9jNnRndTdnUE5wMmxfU1c4OHhPcGBnPlFdfCojS0kmMGk9Y1U5IXksR18qKD9mZVk7ck8uW2sqJWxJSHxtQUxYQ25zQ15GfW5WeV85JFZoVHJ2OVZgY0JyZWZnQGQ4bzxxWER6alorbWMjNFAkRCNxMDouMyxHakxaYTs5WyhiMV5eOiFQb28hQl9sP0c5O0N+bSVXKSM9VGdsVmJqQHNo'@; put 'NyV6V015WTtETmIqTkokY25qWjJoKVBFeEF0OXN9dmwxOTY/ZV9xOD0/QjFlWlJPKjU8Ol0lY0xkOlReVGAlbCZ4cE5mNWdmaXFhK2JLPDVMR10saW9wPkNddTMsSS82M2ZNSXYhMH5vY00iN2dLI25VPHgoKVlHZXFAO1EvYGN7LkZvRS9LKkAhUnpjZktzdHk4SGdtOmhbVms/blFUbTZxMGAh'@; put 'bHh6YSY7dHg/em9hYElXSnQ2P01Hak5+ZHJnNi9lbVVzbjlta2JNYD9oRS5JXiFSVCNxR1hibCVJZiRtanJOM3IyenpRMlAjVTdCLGhaaHM0Z0M1e25ETztGKzpyTHlXZ2JNW3dqVHs8NG1PYXFLNVklP3VyRj0md19LQXdYI0ZZanw+TXBBMlFvPkZlIy4pX0QvYnNqdUN4S0ZCMmo3NkYhKyRz'@; put 'el9+dmE4anh7aCR3YDtWfVNLOSxVLF0iQyNaOlZaLHopTTxka2JgK3B1VituWzBoI0IzW0x6aGlMKThNK0xEXjMhL2w7T3w+MnNJUWdlMFZydzkydlAkZyZKWXkiJk4wQjVKXkVpVzokQFdYWVREMGhJMGJ3WTgwM2pZNEJ8QG1bbG5bX04rQnhNUjIxU3MkVUJwal5XUUNyRHhWe3QvNjs4SyRN'@; put 'LmBuKX4+cXdWLCQoZ31iUj5mMjQpTVA5XyE3UTROcSohX3JndUF2V1Y5dlJVY2UhbHdqY1VjR3ZtPSMuMjtIQyZgfWFJZUAyT0A7MjA6cEQ4Li5YUCYoZ0w7Lj8veUNJcUxGej1wd3Vvc1k8NjZCPTBYST9SZGZHO0NfbGclITBzbjRVbHkwSTU6MWx8IWFDSGNUWnM3WHxXJXQyXlVYYkBqfE8l'@; put 'Szd3fGsyY2ExcSRYK1hjODNpT1ZRN3R+VVtNNyYpfWt8ai5naE9qYHBiOW9WaUoyb0FHNnslNyV7KUBPbXNqRl1oaTohXWhAPSthKU1SdHdoPz4uX1JCR2Y/MH5veDZ0NzhXOjVjd2taMTh0VXhJe3Q3ZUcxdTsycCJqSjBaRC8qcXYodF02bn5HWkx1VWpBVEBNbGVfRHlyIXFlJXJQZXVoJmZt'@; put 'ZVg6aFY3XVE4diEsUTdWJWRMLGgrfi5mWGhzJm5gQ05kczxKcClVeiFtVEZ5ckdubWk0YWVqIkszekM8ekZ8RTBBUjhEMXBKP3Y1TSRFPHRIVFZwY09FO3djI0x5V1l8eUFze1UzXmsjOylbJWB6OmpxLHMxVGpLSjAiWFFtRTJ6bykjKVdfUi4ybmxpWnFyOS4/VXoyejd3OCMuZGBOL3ZSLzlN'@; put 'dUNrLm9OKFBdbi4pdUsiRmNeZDtrPiw0K0lNKWw1aDA3Iz40QDVCcV5LezsmSVpRcFtgZ2c7IXZQaTVoKTopVn1iUEReJVAiSCskPD9IamouUnU7dnBlXXRzTCh9e2BwN0loSW1hd2RFfHhoZSVUT1gzNl5NJXd5akcjT01TbklVNkUjd2pfYUArajdyVz9dVFc5c3smJiplcW1dWFUrM0xpNkBw'@; put 'PEZkTjBNaXUwPWFjPzJAVDVqPnRFcEVhW2JRXjB4dHQ9d1osaWZLKkBKbH5bPjYqfUVicSppSnBvRTtIMSFfcSRRYFo/NCZ9U08qey57TT9WaUx0SG5ecygvdkhtJF03RGVjUyYyKGhifkxjL1B1K3JETDZrJllgMCVXIURsQ0JQMVFFczNsSTQ5Xn5DQjJ0eklRJipldV1JZHNxM29jZFRzeyhK'@; put 'P2x6U1tVdyRFKlZlMixUU0BQdFE0anIiT2VsMT5dOWBtWGhgOjJuc05ZS1poeTQ7LylSOiNbYiJ+ZyZ4L351UWlKUHhVQCpBRWQ7XylNVzZEbXlSUCJ6Wjp+d2s2QEM/YEAqSDtSPSx2T1BNeEYqSlQ1c3x2PXdMXWtPImZzOWFYfFsxbEJKUUw+YlZ1QGovVVVlX0x2YC46QWoxXWk5cDYmanp2'@; put 'KT9qPVNlZCxMX0t9UFRlTEFRMXBBP19JfVtISktLcnhxSDVBbGZ9PjlDZ3BeSWF4ImgqfkI0ZmZIbH5gayVedjpnKkFVc1g5OXppNUBNNGFneGk5QVEuWSxKI3lOQmkqaThBOkZnXVB7MH1NTGNzLElNazBAJDB2RSk3MS5XcSpdKllPaUovZV5STD1xZjtPKml6Zz80WiErcy9BdD5FNERwS1d+'@; put 'Kkxvb2NuPjlXK1QkMjo4U285Wiw5OWEvbXM3NlBjbytiNk9WIy83SE5SNy51PyN8Km5NSXpqdmNueTlNWXFKP3U6MmI+VWZScG1KMiY3Y2cuV0h7Q2EwUzdwX31efFFAQlRwMFUmaiVXflZFcDpaSzdsOHJINVo9Y0pvKU08Qy9VVldGeCw+dzovKkZmSy8sTkB7Izx+JjVANlc+Lj5YJnsubihz'@; put 'XzR8SEV2T3h9Py9ARUlyMlFhI1FKdltlS2lPLmVNQlo0JjYqZ1YpZiRFWVQuRGx3TSNpMnI4fEQpLEc9R2F2SVojdnN5bG1hJG1UTWpkcUYwcXtTeVlkTz1AUCZtMzJaTylZOX4+bzl5REZ7OztgY0RXR1M+cVosQU9lfkByK2p9P2l3cU98OVlucDRFdjlbK0IlcDxNU3I9KH4qVVVRYGcwV3Ip'@; put 'VFBgWWh8UzpMekZob2FWO3NrX3sySyU8VUQ1NT8xa08qIV0hS0Y4T3lvTzpAdWVnZ1FTeywjckg8dypRXzJ8dixfKXUmL0NYPXU4dnZhYCtqcVlUd357KDxVWXwmeEVRbjBHeGYyVkE+WVY2bntWKVYuJjZSbyJFP01yNC81azJkVTN5VFRtNmIjSnlYa2ZPcn4zQVU2IVpWMzRxYTNUWiouSFZi'@; put 'bFhpQUtAZmdbKVVGRUh9Si48fmB5R019TDFvU1Aka0E8Zzw9WyJXdjNKbG9gSztAPmRdPS42TWk6YzMsOiZwW3hpNnp7Vj1haEAhUjwydGd3ZV0vPl4hc2FOZnN0OmlHWSQ+WnhFZGAxQ3JHb3omUzJIO0p2RUowcHVuUUQ9ZTtbNXk1RiZzS1pNV3BpVlZOZUp4RkxeZjxJNCJ9Ry5BLE0kNSl5'@; put 'Y1VxcSJrJCleN2tGQFhqbVd7SCFiWFtEV3o4SyRafnh6SG5XfDJ5SmpaNXd8cnZlL2teUiNVNXM6YmJpWkJUc344STBHTnBFI2c7ZypfQy91MSxFfWMrO2t0XkA7M3JlR2IlaUAiL2k0VHhPIW4xfDIpS1omTzJxTWloPlc4fU5PKGx6ZkFpTE5ASkxxWDxMYzcrJnI1JVRsTSRDMy5CWSpOUnhP'@; put 'SFhMQyw6SnZGZkEvPipyQD5bc2FDYTRrRj93ZldpYEsjUihnYFYmLG97SGQ6cChuZUYmRnVKaEEqSCQjfkxhPiJmZVFdJS4laixnTTlEY1dJNWhJWHZ6T3RZW010QE1FQkJCfj5eYklyKjIjTX0wMn5Oclo5WlA0ZnppQkh4I2gpS0ZAW0FVPTZHdUIxYlVBe0FhbFlDNy81bDdHSHpjczJwNC5S'@; put 'WFkkJk1xaSlQbHopbGV1fGJgZU9SIn0rTlNkKnA5VnZoTCsuJV5rSUwzP0RpU3VMZWxjfEdQVWJUYWBGMFFFTSgwaz93aG9TNm02MUE0UyFaW1Fta3pDQWx0YWQvM0JmU059YDA0SURtJH4idEpLP0hYVnZXVEU4Uz11QlFhKDIzV2RJQGFkdjcxRE5bXT5sc3AqQihQSHNVPEdxbjsiQ04yI0t2'@; put 'MTxKKnRTVWdsYGlCLn0/M3lHbVdGMmEjOSkhOVhEQlcqa05JenpTai5HOVt+b0E/PEpDdzBuVDQzb1lJK29GJVdCdTBBfkYyaiFmaDp5OyhvfmQlOiMwcH0rcllAdVRhcFY8OEFhZkNFNHVrQFdXejJRPntPcFspbVhoe2dCZkBOYjB5PWM9UElwUWJ8UHomIj9YcyovW01rYWJRRlJjTiwrdllj'@; put 'Zntfa3Eje1R4ako+cnhMd0kxNjJQe3BSVzpEV3RpbTg2NUlreEghNW99Vmp9Jj0/VG44SGVTYXpDY115N3hmanxnLEU5JjZ5KTxtMUtLRWk2fG1RdHkod0w8KEtuXjRUWnBYdyFqbj5hdl8uWV43cSZfT0RMQXtaRWsrQHZvRDBPRFhoLHBgd2tRTm15I0A1WUd5NG59cGFMQFdQZGpuJEJZbXN+'@; put 'YkolWiljfmVYci9iNDIxQCZ3YSF3KiRDXjEueng/XVEqcik9Q1FwT0goenAxfDxjJF5gdTQkLDxCVCVHdVtvNktSbVp6bUJHTW5uOUFFSERyRlBQPntJfDNkanxyRHU+RHlEMzIkInR9PTBQM0lvbTJnXjl5RHhJRW1JMnZqeyFFQTBrMGBZdzV4YT52eGQ+dWdVQ2kmMWdSRiRFUTNjdXYoPCEo'@; put 'L2N5SysvLDtsWU1ySTQpcUhaYnlHIkNxfkx8YjFEUndOYEgqZ3RDQjgjKXROZm1mOzJ5ITwydiplLl1kd2BSNzYiYS5yOnByI0ljdjspbDQvOCFuRyMkdHU6V1ArV3BEfUp8QVlsdzEvM2hMKCF8XSpYZyQraCVMJnJwbkAuJCs+V3tZbHFKPj5kKGpSPT4rQDwoLm18OHtOI01jM2t5Kil7dlll'@; put 'XmdPM20yOWE1U2BdImheOUI/NnB1X01yX3ohQk9HSjVSVWtuaEZQTXBlNE1XRz1pZkJKKT5DNmBSflhWWF96fFpPQUNrN1A2YDdMKTNRTHw0TmNjSzlCYnxAW15kNFtzKUlxZXt6ZkJeI1tAX2c2aVlJX1hoPDZ1NE83Y1dpLkBzcnpUejs0aGReY0c4bDlmN14zXW5qUm5wVip3bWI6ZHZ6TjAy'@; put 'e3UxXTBjME4zaityOk1MRFlIVnwwPzx7YW5bMmhOQCU1V2l6XUNBU3Fzdlp5OVVGRCl0IztvY35wZFpVMGpiOFBCe1V2Z3o6I0ZLa1NINEk0Sz1uYCJjQmRgcnBHWjEwcnVbLi8qLlpQV1s0MFdRNiJuIi56M3hTfixZT0MmK0o2RVlJKGtbZzt9TCJFOWNPTF9YJERjcTE/O2FSdjJsKVomZDs7'@; put 'T3krVGt8RlJXVE9WdCVCN2c6KUI0bXtPLGM7SDlJJndZNl95PyoueDE5Ql95IVBuVTtTN1lqKWQ+MX5XInYoOld1UX5kVzs5Yz8mPH5NJSpFZjkwQ048VC47Jjg0TkpbKkdAUGIhZnooVVI/UExdZ19YUSolMEtMb0VtT28+VzJ+emwqJjxzZCE+PztJTWtNOyphbmpXMl95YE5Ic25mR1QxTDBn'@; put 'Y05KL1lSP3RiI0YkMmVEY2B0OSM6e3t6TVM3OiUxRFtCMiEmLzVGP043XVZnLkkyI0Rpe3l8S29fZFpBM2Q8JUB0PFtEIkE4UD5CYko/IWxBTUxMfWRgWF1OZitqdnJqXn1ganhxb2spUkxheF56cEJOfCEjW3N5eTZ5ZlppfWo/U1dyZDBtR281IWNsQ0NJdEdbX2VfR0Blbz9BaCQ5OmhQIkMy'@; put 'NFZVLHtEfmwpMTAzfWAoYWRkNm46aXVDdWc1P3UlZj99dzlXVCo5LnJqKVlHTFVXXztdQy5XN09JaEYza3dFd11+fE1PM0laQSRsKWwwRiMmeV53RDgqI0xrVFIpTjs1OU96MFFFQyQ2NzYwRGVKVWE+RzIyTTg0cz4xM1E/KDRXe2hwYitwR0gsOy9dalloSzQ0dkNMa3coQnMsS15hQDd5TSMk'@; put 'VnJ7Wj93L1dwOywsJmokYUw5Rj5WJW0lSilgL3UvTl58XWE1aihoIzRje2B+LmVlYCUoMXBHaiUmLDtJSGcwMzRRTEhuRThDR0dPRlBMSlVXIXE7cXJlb2R0KV5Xc0wlVW83MXhJZi9jRUs/N21edEs8PTpiQT96fUFUMilpTXooQXBYWUVQQDQveilwLFpsfjM3PlAjND9tYmAwZEI5QHkyLmFs'@; put 'OF8xI0NlNCgqZEE5ImJVUERSPTBobGA5aCFWdVBiOjZZcjNveixRQjl0KVpQLz9MYSYkRn43Vy8mPV9OLkVgdSxlL0JHOiVsPXd1UHVlay9uQ0N3cE01SntkSGg+Ql08Xn1gV3EwVG1odzJJRmBHZ353X2ohfTRMYUNAVnpVYkZTI3YkdjJOWEREYTJ6a1JOMjFUfj1ZakxaS0w2IV5oZ11ebGJb'@; put 'cXUkXj9DZiVDelZRUT1MfGp1Uz5PM1AyS3h3IyZId1Q8V2VHdyp5XlN+SDRSOFpNSTR3T0F8Mnh6RjZYMF1kYHRzWkxSYH1dQFpgeVZYRylaL0QiYkNEMGpXMzJLcz8qaFE1YXZBI28wSmZ0amdsb0RIQEMkel5wSn15KjRCWytpL1BLaDp1ejJkYEdadVNFd1Y5JlJjKGxOIXJib3dyRipjTSEm'@; put 'cCZBSk1YSWdUeGF7ZytCV1MlcXU3X2BMQS8rMVFZWWdaXVVKaF91dTArYUhyXXA6KVJwfDZhRFZ0KiE8ZXJbLG5HelMufWF+XlJkZFpSNE5bbmdkcmdqIXkoZlVOdUJSTmtBPyZZM0RGQGNlWkNxQ3YqOyYpW0JHX3BkWmF8U0pCRGJ4OlM3eyNpJEBuaTk5M3VmI0lfXTMjI01nYFF3OGsoQHFd'@; put 'aytWRGp1WHAjRUMyW21RS3NeLDQ6bF9WcitfTHM8akEmcDM7WzVSYXVBNTUjJkhZSXkxd2t4PyEpemUwTHB0RV00e3JMTDNEOnxjeFIpcjxKbU8yfUhxXXJZbXUoKWBdMmVXbVBkQiNONzZPX1NiYD5yZCo6OnlmJjNVX0BaYHJgRD1nZDwxSiNBZyJpK2NuN2p+YylFWiF2TW5vKF1UeXQmY2dA'@; put 'TjdHbzlYJCsiIyNGM1cibF9ROkZbVGFWZXVMaVRqZDoiQDJxQFRHdSk4N1IkUyNRNVlnIkklR25VY1NUQXE5dUJ4fFZHZ3VFeUc3cFc0ZFp5dDA6Ym10JTJWQkV2PEFfUWchQUdwaVkzOkRGMkdoNkx6Xi5KPGojWGI5altoP31AbSVJKEk6U0MoWWUkWCxQVVVBMl06WzhyX18wfkZRZ09wcmgx'@; put 'O0d9UnUoRH4pKCRvZns1cldsYE9AWiUiM35lVTg9blpiPDkxLFhjJlJlLF5pTTgzZ0xscD16dCtidUlAbSZOUjs+T3Y6aH19PFMjXlNDJTtmIWNScVtAWmRQV0tINiFgT2YvVFtQPHxMTExZbjkyencweW1KYjpmRlFtV2khJWxyVUlYSXNCUkByelpNNXFOVClDWERYYiRzJH12NXF5PVB4WGxQ'@; put 'MUpSLjFZLCpRRnwwOmEkdXU6SCNEb3t8XXtOO2R1TmVjcWErZ0x6V05EfiQ+PlUySSlsd3huMDZ3NFssIVtUcyxbIkdlKjB6RUVhSFlOMWhuPVIxLHQmYV09MVFsISFeYGlbPjZ9OmA3ezEqUjxKTT4pcmlqeT4xYCpxLywrVm5UYl1VeHNbfWtUWGdgKSU4ISlxJFEpKkJ7NVBTSzVQKFpWWjs3'@; put 'JFcjdmFiI0JCY1QmQ24mMz8lY2gmSWwmfGlQPlMzdTh2IiZKRUIuO3ZDVkRwQisoJWYodCFafSw6W1t4UyVNI0JuJFRSY0szNCM1eF1MeklMc0cjfkFbLihiczg6NnVtQUsrYHs1KmNaenpfNGs9KyY7N1pgenI6ZlNeQ1QqfCkuLm5Zclg5Plp4Uio6NyUoRUtid0lpU1RUI2ckQUMxRjR6Tkt7'@; put 'PWUjezZ1UTF9eF16IzZaQ0IqSF42KF1TakRKJVl+VlpHOiR0TGZsZ3suaTd5W0MvP2hkNTxUPzt1X3orbyEjR0YxfERMdD9gWnFfbz0vQzdyLmt2eShKO1FxMVZQcHJIWDxiTzRpKkpfRnNDUEtLbzckaCM+OClhW0xSNTpNQko+dmwqIW5BQy9lKk1zb0xYUTd1WDh1P1ptaFZLOXF2K3xFYHo8'@; put 'Q3ZWa2JQUDtDYVtkU2I0KEhQNE9NM2NxQHY5SXM1bTJodWBkJj98WDNrL3VaTkZFZ19EJi9mYltRMGxxYjVHVDhscjNwTmpxfDE4Lkx4cm9ueD8uSFFbYHV7O2tHMFt2VGBwcFBieXsuZ2NaalZyVX0mckQ9O1RmRzA6NVNgXzlHOCpVXkg7UXc5QFFmSWt+MzxoUlVzJkR0UTsiTF4jSzdrb0R9'@; put 'K2U8LzxTcnVSPEVPZE8vOV5+WGlANX18UW0vY0d7Z2ZPRSpRb0R1VEI6Rl5EUDI4IkBoJTVQQ21DRkRQVEIkfmhBM1I7O0VBUztSaHFNdHhnWl1OI0VGK085QXFJIjljXlpMVHFteTM3IWUue1dKKmJ7eF1rRFhDWEZIQSg2M342Ml5nfVVOIV5EPkY7KzFZfFEyellyQ1lBcUMxQlFSazd3JG5o'@; put 'bjR9VGU0MytEY1h8PSFyKiZxUWVwNC9eeWI/YDleKl88Kloyb2w4Z3o1N2Rfa25ROUV6TjxDRXY5fGR+PHBmKD9MPTJ+Zi5dN2B5Rm5LPGhpdE4hVEVUJCxhOmVoJUBLSzFpOVQlTjFDeiUvb3JELDhYRWwkVzVXQnIhe2krOU0uP01tTCwjNFVFLytfXyV3KGgmTig2QFgwRSReSTtXWV9oLz1R'@; put 'JntHP3toIToxbFFwcEx2I2s+YjhBZjVnPTooUEd5RytPOHhTSl9DenNMK05sYHQ8OHl1aWhISk02TmJQRClMSFYoPmsiZGNkbVhybno2dnwqSTZVMz96WzwybzhfZ14mKm0qMlhJKDFdSkFyJERVWlFJUX1gbnt5WTNCRUJvfVRoS0BYKF5SV2FvNGMqMTpZTkpIKH5EQDM1bX5tL0s5RT93OnVy'@; put 'L0V7dXIubUBCUiRiVip0W2xtUllfWVM5M2Zre208e2NHK0lmQGduY044VzdTM1BHNCFCUnw5Tk1qfiQua25VSkhrWkAxNyFbclY2O1V8RnpaSjNTVHkkbyt5Q1dEcXZYWjhRbCgwRGAvPjtgW2Q1V05iTUA4c2MhMWl8fj9yd0FKYE5mTyF5eylXbFovZyVHeTZfWTF4eiMjW2pPfEEjK09kWXxt'@; put 'Ml9RJFA8S240a2hmblQ/bV98ZEtucC9ENWJ3Ok5NZXxwfFtpdEsiUXk7ZDhUTztyLCQuRz4vUStEW3dtT0FpY3lGQS8jVVRsPmxpIyNUcFdeUUpEdjF7aE5sY1Y0bmdFPGp9RXdyQT92e1h7NnN5TTsqfV5TV3cla0JLbVVmcWI8M044IiZtIUdYVFsvVCh9XyFDO05RNkg0OjouWX1OMEJVPkRx'@; put 'OHQ4fk9MNnguTWVtYn49VXtAdzdNb0F+eTVPYDQvY142MCwvcnBtYW9XdSUjeTt4QEEzVj5WLGFjVkcoaGw7WGV7L1ZUYCtwY190eTQ+KGhCSFA4YV9rIisuSHFUWGw/XTRTM01kXWNaUEt8JGlpUVprPmd7WVdZKlg4QyMpXiNQLkRaJFV9ZmFQX0gzYVlZVyJSSVZsOCsvTSJsPCZ6MWYwVlRb'@; put 'ZlY9YF9rQT80MmtiYF9ENCZoMkQrXlQiJn0zJW5RKVBRcU4xO0hla2tsZ0dVfm03MzFlY2x6Imc5RWE4dDohYGFtNCxQXWtvdDBhdjE1YT5nWUEvSE5pT31SRVdzTytFYWwsTSF0dlFEbjhMN355YWg0UWljZzphTGZNZ0ZpL0xLejQxM3YpKGBMTzA5WFMmMFdMLlVbb1RCZXkmXy95LHtnNX07'@; put 'fUhAa3V1T3R5TDpNW0pAM2llZEN3eTwvbEslM15kYWNKPUx2IUxfMG1XOUljUlEiUm1VbDBHb2lWUTEsNntlNFV4NUpSZE55Nz4qQnF9IyQwbjU5NU1LS0h8MFlnJT5XdVV3Yj1iV2M+YyNgUz4hZXU0YkguaVI6ZD9+b15oejU0PD5ocX10c0xfYDNyaGlid3Y6SUtAIX4zWiUsdW9EM2E2Ul1D'@; put 'K0tpVEQoVWFjP3NoPEBhKm1WcSZ3L3lkcTRXYW1ZSEwucileY3YvT0suXilyaVQxbEo+OmdALm0uPHBqSFtyNVN3IX1+Y1lAUltyKFF3dHtdancoOyUzM0VqdVE0cmg0KHg9WGcwfXhzMn1qR3cpWDw1elFjUkwlO3h9V0dlfGwrTiZBTjVmVTpqZlB1QE48NTFwPGFUc3BkNEl2WVA9ck8lVWVz'@; put 'eERLMG5xNGxiIitmTEh8NSY7fSg/L2EscFt8WFBIbD00d1VAamEzaHJHQGMuam4rRSFpYktCKDptRU4jPEt6MDlnaVtSN1RDJj5IPX4kV0V7Ll8jIyM8PW9lajtBZFZSQ3R5X3MsfCltekI9YUNAViN4NUBxc0kpNXs2ZDZhZVRvMnZ7IkcpNDVvQHZSSE9LW3kreERFNU1oJFdIRENzTThIdk13'@; put 'b1MsXltoQkpqd01mfjxPczJxZXYkbjRYbkBpOkVSMU8keTxOMX1UVjojZ1llMXxGI25eTTlZP15Cbis5QFs5SXs5MGJ6YGwsTXw4NlJ6YzwuUH5lJTIwPlBVM3REUX5bW2BpW1hHSDolKzAyTDN6TXY2Kk9KbmlPOVBJRFZoaHojNTN2L29vVzphPH5eeip1QkdxdkhIWmFZQmFOOVQsQjNlfT5n'@; put 'Y0Q5fj03eVdJPTF3c3EqWjZFRHdSdyFZPlh1ZXVfakd6M35yK0EvX2RvckY8Pjlrclldb1g2ZURzVy9QNF9yTVZ2PUVNW25ZKHtaY00vSWFmemU/aTBebX1LaXAlYjtHUENaej8sP3JjejhHazJkV35xc3JvTF5jSH0xbVhlPklbU2hOOENGWFRuTSQwK1k8NDtqRG5lW3NYPUR+UlV8I0pGemd2'@; put 'QzJKU2FNUEVqJSJleVN0fCMoWUQiZyY+eDwpcl9DQH06ZihLO2E2c2RxLz94a3MqL2BRWHZ2SH4pdH1uSSx6Zlg3bj9iUnUycSp7TnxNVj8hbCk1Mio0bUZKWzM9YCYocyN+Yk9lLitvPV1ZbnlROGdpbWY3QjIzIk9Ke1ZWTUtsZzs1fXVyK1tMKTBaMldYLHI9VlM0TygmRSJVYDxhOEs/UHho'@; put 'Mip2XjZlaUFZaDR8Nkdsb2klZX5ocTFQXXo6LlF2VFlUS2wxJk9ONkR7RjZzaFosPFQyREtHIXgmamNbW1lyU3VAPyVUXUNkQy89LGxXRzxGQEIpZihoNk88XT8vUEU/MW9SdXBnZnZXNkxocT4qPiQrbHR2ZlR8Z242NWx9PFk0VEJ+JEc/dUxuPDJmey4iM0NDe2NBWktdJXp7bkRhcTBeOUYh'@; put 'RUUrKGVOdUkmZEBnMCxpRm4sKiJ1Jm5Mb20pfHg7ZkNEYCIxRntwSHJsMT1OV3J1R20jSVc5a3NkcVJJP1YqO2hwdVY7ISpXPEo1NyYjWTpNXltVJixlZTx2WiFtcTpaTGZZQ15KTyokOjMqPklNS3QzRyFqPTV8bE44XSFHU3dlR2BsUkU5K1Z0OXYoeTN1c3lxb1BJeUJjYWtzS1RlQE9CfGVK'@; put 'YkNuOElCQGlDQkx3ciFOP3giJFcoUz0iVClwUDdAbV9ZcF16cko9cDFvcnYrTD1oQiVNOmI7Wkl5RHUqZCh1YUVYZHxufnEsT3IwWGNaOyh7TDUlVDMlKzdMYTZkQipQLl9OSFFCX3k8WikpdlJ9cGVlR2gzRiM9bGc4OWp5MyozJGR4aG85TCRUV1tbND5AaDM1alslPjRgfiFuL3RJdXl7PDk7'@; put 'NDUyVlZlOn58NHprI0FKYWNHNTZ0JngwfHc/PyhmPUMsNSQ0S3N+fFNQZWU/dzQoRSxKUXd0XStBPyJGW2dNUmYpKGBsdGY/Ynp3MG9zdEw3Ljl2Slo8Tnl5RmM1OVY8LEhFRVh8ZEpxVkJ+MnpuJktlY0dhN2hGSkQ+TnVuNX5UaHMzYj1rTFFAdE5eLENvUTx9XnBLQ1ZRcGBnPW1ZOEJhQmwr'@; put 'JTEzWmAlV3IxQTZXX3JXK0BZYiMyPC9AXm9ibjlkcmxPLiJ5bjZUQTNjK0lNMSJgODAhL3p2S2NDWG9xNCtEb18/SipoTU9KfE00VipETDY0SS5eR1c4MjN4KG1bQV8+NGgiWWowbnhqKTFfb0VoWkB2ZTY3OlFva19RUiRGRzx2aUleRihwLkx3MUt8WigmRipqV09xWDFOamkwOHglT31oUXou'@; put 'eFd7WTJaYlNiNEUsdl0pezx+cjBoSEtmLzFxdD9qUiNDUTFaVHs+VTJnRlEsZT5XSUo+NEZRMCxhYXdxS1VLTG95cyNeSkF+Tkh4RmVaLyEkYzxuM25FMm5PTmxYNzhIcy5DSHtCXzhOK2Z3NjBycyljaE5GcShtVDVscmJOVFZgaVpAU1t4dV5XSHBQWDFna0ZyLCJ7JlBvfE5jdmdAP045fm54'@; put 'PV1VXV1Jbzg9a3NjfHRiJHRkKyhlbExDLDl6czxLWzYoJjArYygqRTM8Oj9zMW5EYzdbSGZbZnpSNEdtUmMmNWRGUTlaOWhsVC9wMCokVDdjS34qLz10Ijg7XzMydkRjaSkjZ25rYDh7dj0oZikoKWZOdFNzV1p7M21EQm85eChzK2VfLEl5JWBpV2B4K2wwKU46ayE/SyNrJFJ+MXxGRnohNGx6'@; put 'cndpcm1VfFtLe0swaSUreGNib2hedWZqPWgwWU8mWl5ZbnVXPFEiY2ksdHVpdkksQmY1U01HRzFVKDwlUCRxNUcwVyVFWns3K1pFVDE3an0pelNvY2xhPz4vNks6bVRLZjA9U2hxQ0AvamhUKEtUWk9PZzQ9PWRRYW42dGl+ZWJSQmhPbmgzUzptSXRzaHc3UnQ1OX12X0pbbDohRTYxLyFxQj48'@; put 'cCFVZVpjantpeG8zU2I9OnFGTVdSVXFRbShFYjF5YHN0Vjg1OClLQU5raWtDXWZrJlEkZG9mLCpxSVM8UDg/NGg5V011fnVlTS5CJHE9MTwzRlBEO2NgUV1PIlZYNHszezdKLj14PzQvXVRZWkAmQkJ1Rnl6KG5wYkgxaVhKd3xZMVRTfDFqMjgraTBpV2x6K2NPX044MER9bV9ZPyRCNDVAXzI1'@; put 'LEBXRD8vd3xZUDkhaSMwdExnb052JklQVV5pPSkkJnQoP1h6YGFVbXd3VSEkbUp3Qyk1a31yS2BiLlNfZj1EODwsQnZEck9DS0ZKVH1iaytQaWRuNik6SkZ7OzBoKmpmOl9ESDt9MHFyMVhuTE88LDtPPUZfRWZOOkIqaVNmcCV2Q3o7JlV+fCIoV0ZKU0BdaXlTNHU0cFRedVc7PjxZVFFfc3BU'@; put 'KG5YPik/UlhtUmZxPks1Xjd2QVc2KTxPa2gkK1AvIiw9Um1+IX0jSnAyN247NSU6cVd3VU01KloreUgrKEpvXXIzIiNDPXp5LmlCfWovNDl6XTRAaDxpKz5QMUdRPXNxRy8kfGhFclM6PnNVc1JyYTpdRU4xLGZETiZRWTJYIVUzXXxkbXFxPlEzUy4+NUZfKmNibiQpZ2h1PGFgW28+LlY5NzV8'@; put 'VEdVVjsrL1hDb2ZHbTJSRio+diRbKn0uXzV8Xn0zckxSL015U345SntKWFVHKVdTcWZXPzdYdlQ6TXVuTDV9WWdTaV0zW3Moa3JLWHVEOEpQM0coU30yMzc1UX5YP0VFLFA5JFooSz9rR3RGPkRJZSlsLEpHaFRHYj10cE14LE5BWSZXZ3ddaXpyKSJkQkhMWzFMTyMqWTh6SEJ8L2Q1NGZiNUZC'@; put 'NGRKRiF2V3hzLH5iS0JeOltuYHZsN24+MmFbNHwqTk5LN2JoSlptcl9LYSFpWHlGeDpVLDw7PDRpSE1bbT9FQjlrY3BBOl8+W2dpOnJGMjVgSGpZMjNUOVZ6OCF1SzlePE0rN2oyV1A3OXwqKmNIOjljZz9GWkoyfitHKyhsO0ZZS3cibWZVdEssR15RclJ3Z3N6SzF0OiF3fk1nNl1MPCRBVT1m'@; put 'fD9LWDgpaXFRVi9COGZGIWskcXxPW2pJSz48Ji5Ffm5deFJzJFpYTnRgVSwifmNnakA+VHY5NTFZeXohSTFvInVSSjdpV01WP3E2UEBGYkQpMipXdyUwdWopL0RKSCwhNXpQbHlsZDo+bz9PMmlsWCYhNChsZCN9NWN4bCZOV2BabyVea18vKTk2eFFhLio7XkhWUEx1cHdJRDQyQSkmWGNOV0sw'@; put 'QmpUIkpRemV4PktMTH0oe1leWlQucEMoTl4hbi90PzM2QEMpSjJ+fmxZTW8udV9CbitTYXFEQ2pgQjtDJi4zPFRYMXtvbmh8fHgpVjpHKTVsVjtPdlhwWi5JLzBeQlkhKH1GXj4lJj9ocGBOakB8dTxHWC5SeWJKcnl4UnlvTSpgNCR9bihPK0J1ZHBxXkQvcXtLKWI2R3Epe0J2diJCRV9lXTc5'@; put 'IUdzYSJWXTR6VVtLYkZRUzR4fDdJeGQ4LHViKjJHLE93fFBGJDg5Ql8hVnZ1Lj19b2ZuK3tZdjM/b2JyNVZSe3h9SmxdZ1VHcio6QTEud0pnbjBPRHRSVDg/KE8yVD9UalpMRzRfcVBANlZfeHRed2RwfUliLzsydFNBVkdzQio7eE8uMiVAO05PTE10KDVNOmlYJH56LHNNV0xBOzlMeUJqZX1B'@; put 'e242aVlNQ0xuWjdAfSt3ajc5JSR5dEVIY1YvL3Y6PWx3JV5hYW50LixCPktUMS9ldk1IfXVhIWg0bDBWanA1YWRZe1ZCMXNiOjVQe3RWLEh5Qi9jeyhjSlNibTNQWytLRSFfWEF6YyRRXjR5ezZIOHwsO1hIRm01SUAoPFQsV0EjNFNTJDAkUEdRSlEkTHdgUVFDdDdVUX5YMjZwPGNHRWsvMlVG'@; put 'a0JffDdpQWMzflNUSURzQUM1XThGMnB8eEJ3JVAxL3gvJGUsdzgmTTRHUDVSbz9QNC9FckoxIX45Nl4uZS4uc11SbypXOzxZJGJMY0dCYDJhfl8xME87VGBpeipmJT0hb0tydyp7I2xGOChEfEV8aUh7T2V2WkJNcHB5JDNpVkddeXxlQzJZRFNbMEYpPyE7bWtgWUhqNjlLc3Q5ZlNKMFVNWWNM'@; put 'QGdIUjIkaV1WXU1keX12YDlNa1BnSlNTWFt6fGRRfXFFYiFZRiEyIXNXZTZWRU5PJTlYMkxSKVBCKmZuXX5uTXN5IylXc3VhKkloIlhLPjZedSlsdF1Ael1TcV1HL0F8RFF+UWhvYWVGZ2tVMnohcl1fPUQkdDUpJW8zOGNMJUVYbzhlIW9JJiR4b3tkbShqa1pNNlZ0SmRTTiUsJEcuKl46ezxD'@; put 'KmJIN0p1Z2ZYZGd3V0x9cCFiVyxCSlBRcC5tKUssUXFkbGJ5b3dkaCIwcFFPUzJLc29uNiFWcylSQzFsPlNPVzk3UnZkSG1YWjZLOlhOZUtsPG9CKFhIYVdHcGZFUGYwRi4ySkNHfEhKPVowUU0+YTQxe3R6USQkdFEiTzJaR0wuVVU0fiZye1lXbmc1MSg6dFhiYD5ROnxXN28xKml1ODw5dzwl'@; put 'dHo3Z3ZlUVNNR2p5VCkqMkcwKjdlOypBMW1ma1pHKmM3eSlzejkxU1pJYjw4WUpkMjhjTmNqOk5+cmRwOVZ4cnRWNXVSPlVFMGB6L35udWA9JXd7WUhSKFB8c35CPXt4e3BFNExvW082Wzw/ditlVGlDbSI+V01BQyohO0grbGt7RXRSMnEsSmAwJm93cX4+cTApOWR+Nzd1TEwkK35TKzomKlJB'@; put 'SGJZelZqX0lTb3lSRGNrQ2B6Uj8qYWxgM05HfXFTQkw4RGc1VnNgW1B7Yk5Qd2d2bkdPJiMkUjhRQFE0enh2YVA1XjxddDl5RlVeMmIxUzIpbH12Q1YldVhebWBIRlBpdmJ5Q2UqJE91PD1JXldEL0lOKzA2MSZ5b2tybGNDWD01YXZRUXp7LlpAIT1MSyROST07TXNueDVHTWFaPF5WTWZTJHd0'@; put 'X0IzeEpxZkJ7VyVzeV95dWIvZkVIU2VYbkBGMSl2LFZ4eVQmJHU9RSE1c301Tl9US0dvT2pZLmB1L3Raa2w4RkpPfmhCPnU3ZWpHQDA3ITZwazh7KztRdiZ2LFIlUXE6bjU4W2p3UEBRd2lIdTI6VTVCZHh2JmV4aVpdaVJSL043aShhTCxFbUMuVWQweHplRm8hMXFGeS53JiVUIyVgWVlLP2sq'@; put 'ZG5oL0prTmR1fFFNa0w0Oyl1NE4xUGZUPnR0JkJlWyxublsuIXxqOyhhSU9nSnl+Mix2JSZiO21qYixLajl8NGEhcExZTik2VEh6ZHJycGsmTSRwbTgrfVAkVykoa247eis0aDJvPnJ+Ui5RU2N5T1BAbmBtS3UxSyxaMWkwMWc2S110VHV6SDdwK3ZPaDBmSykydz5+RGR7dz9FTGJaIThiRzx+'@; put 'OUVmcUl7fj1WXmRAe3dELEl4fDN0flU8RGleZ309UVMpfkZqbGsrIix1JThSKD5iazJ4MlRuVFttSzp9WztTa097ezhSIzY2e3NbNXlTbV0xb0N8WWY0UEtzPU4vMSxWPWMlRiErK254ImRAKnV6fFRgbGwkQkVbJjtpcmFUK1krWXdKOVU5aU0udWtEckhuWiVkR2xPMS5RamVSJDN6KlV2dGhx'@; put 'P3IrPF02NzVEYWpKN3xkQzw8cnhdQmhORGk2OURLVSUwNjhOYTF6V1ZWW0NAdil3ZzcxJjZ5Vi5sSkEuRkNAQXZTaWpCdj92Zz81Zl8jWGtzMU4kMjN8dDZOVjNrYm4vbnckeENdIUxkQ0JQRCsvTXZVd01xJHshb1g+bzM8MjozVE5fbCtDVjFFbW9WOVBRQGAyMHwyNnZddH1deExUKzYvUXIs'@; put 'KSh2KG5RflExcmV1TTc4bDJkQD9UK15USlFYKmZIMGFfVkNUNGgzKmQ4NTc9ai98WmQ9dWZYS0QyOHRtMkJFTkpPRXIwRF4/VVs1eWtfNUpeM3c2KHcualQuJm5dc2lfejJpP2k8Om47PTh6YzpmYTZFKFlQdzY7WFR+JEdQVHohSFhYcy41fkVOQn1NWEJrWWhhcFlgQ3VWNHE6eXtmR1BTIzgw'@; put 'c1M3LmhNWGwmODpTYUVRWWBfWGo8VkglUnxBbCp9MnYkUTxVUTs5M2pxMmFEW2FPKD1BWzNZRjc1dDo7NiVKI1BATSFhSzU9RDhgI3xxS1RCfiEldGN1T1UlemluUzJZNG5GUlpVdCg5KXZ6JEtSKyZ1WT1iVnp8NHxjYWhIO1MzQn5RUTJ7VXwobCZ9aHEzMV9zV2k0cVl+IUVZMVpYO3tlamRY'@; put 'e2ssfC47Tnwwd24oKGk3NTcudnhJa0pJW2RUalZxZz1Ven1+bTxPeGs6WjlpWnMjK2ZfYykiZmFHW3p1VDM7Wj5PYGdyayQ2fU5pTW58NHd7dGdTT1JqalQ5LmF0Nzp+MWthfH0lOCsxWFF1PWRbVU8pVGBEKmt8TltmfHc7Vj1jNz4qeEhJbH1OYFd1PWU/Mm59UltJUypuNXE+bCExd3liV102'@; put 'Vk0oYyF1X3I5VkJSWWoyUDZoJE4+TUwxIm1yOkhzeW5USWpXZms7aTZMTDBLKnkpWzpxOngzbHR7NVtUWEd9O14ufnNSel92UEw0WlMzWS5rcyFTMX4jTm1TbzhSVXxnM1UzRFlQMCZyM09BQ0dVSlp1PCRMUlg8Lj5ONFU9XkA/V2lYZDU7M3FxbGp+Wnd3V11iUlNOc1ptLkR3aGU3fX18WDFu'@; put 'U3lMLzRQfTYqTF09fU1DcGt0MG5ebHNzT3huc0NZYWlhTDU9P098eUJ7MmJ9TnJmNW4rYSVDTUJxdEU/aEshUjJ2NzU6aiReQ3FaOzA0Kj1EaltYQm1fOVRxRy5tXlUuczx0YixRajopMVs2VltKPTt1M2FhQT56TmFDMkwvbG5HIzl0UlVeIXZqZn1fQWIxIU1NO0ZSaSQqUl9iVT4hYlgpOmle'@; put 'ITVKejNKNT45KkAuXmZKQzU3TiVwfTlremVrOEA9SCVtfm0jM0tYVWs7XiZEUWhAQl4wViZwUHp7aCZ0MWNoblpoa0J+SFIxMmtzLmBULFtYWUFLeEU9eEV5U0Q1NEFUYWhUNEJ5Zzx1VXttI3pVVzpNM3F4enpEbiZsKTpANkNJMG1eSV5OP1NxPXxlUX46UD90TUI0aSwle21oUHhVO1UoSGhy'@; put 'dUBwKTxLXUkyTzQyQ1s/OXRiQEt6QSZKcGghZHFHZkJLTUhPWXNOZls/MTdyWXM7KlI1Ql5BXW5hRUJKKz1NKyRmSVNBLDpGQGR8QW94L0w9UGR7Pm0qX11PLyVpVEc/WktfTEpJWyt0S2tnNXMvMFgubjd2Y2o2WjNqaktvPkhkQWI0L2RhZUcyXkttZ2RjO0dIY1ZxUXhMXXY0fWpwVXdfS3kx'@; put 'WV5eXz5AKjBLKXcwPE8uJXFDcFpsZmkhdT1dRklSTTlUdyRdaE5QQUh3cWwpVSZzVTU7amAwTVlNd2tAUDI+aGxEJm1ifX1ITEJ9a3hdREcoakNJenlhfEsvek4vKnc8d312b0wxcEo1ZHYsMnkudDR0SVs9L2RPMFkkKXlwNzsrQ0h4UlhpLnFOUVMwPWdjbkgqK1BKIllAOlVkXmpSMyMuYitu'@; put 'OSJadiNETEs5OEtYeiR2YCJsaHdvWG1QVkZFTDM6cTlUeVhAX1hRSHZYdER4dUM3X0o6c3YqRVIuMl1gRUhdbiZecGlTOSxfZVg2PUNMU3w2QFY5SnQ/fjglJDp+V3F7VHI7X3l+ZEYwa25zLFltfUN0OiRRRmxrXkB8Rls7UTRSe0ZzKzVefmtvOHs5bWYsTX1CPCEhZDAuWDUvZHU/YihXYFFz'@; put 'RTshZz8qOGxzMHpNTHcrKGBAd0M0bz1HeUd1IXI0IjBjRH5NWihsfVBBJVM/cHVbeVJRJCk6QWU8MHFlU15xciV8cVM6OTVCUXEzS187bTppMDRJLDswZVNCekpfZWt4MXh5d2QveGlhMkklKFIkMVJ6MmxKRjZ3QXBIV09uV1Q6M1UwT35PcFpVKjgzSi59Knl1Y0wpXV1HKkh1MkA4Y0tab2k5'@; put 'SlVJQmJDUEJrUVpbJE4+R3UjcmtJencjR2hwbCtDR1pqVWlxN19pfFpbVmFXX1dSP2kzUkVGLlBfSTtUJEEqTnFKZjdkNU86e2B4Nko0V2d1YFZNfldmcWFTRSNpQVBGZiEheDtgfkEjOUVZVXM1RD5+V1EwVkFqfDhnZW9lLjFhWUkjX2Mke2NRS3V+R0RUUXhMYV9SREUwXTJCengkZXU/d1Qr'@; put 'YX5DMzQ7KEt3cFUhbndeNHlXYyR+VSF+WlNCPissY0lxfmZXajNBKWtsRCgjSH1vUXp7JixKeWNUO2MzfmM/c0s8bWd5QCQ1Ni9GI3t8cGcxNT12OTNFSmM7R01+c0A5Smw6KzY/PndbNUY/dCN9bk9LJm9qXTJSI05jYHB5PEw4Vms4Vzh8Klsyd0FYNHAvOzQ6bkFuPWZBR1hQd20xVWlPI1Vv'@; put 'bF9VbjpLcHVIQ3s3U0ZFS0whSTQmImdyc01hYi9De0o3fE5XcEUvbzU4U35Pb09UZ259eUJMLj5TXSVIbXFeMCpXSVZUSi47TmdfN3JeMUFsOk0kVTo8WjFRbzc9ZF9VYWQ9PHhFbyFdZjxDYEtARUNgUTFtS1FjdTZrdU8+Rlp3NjlZLEFVVyp2WSxXUTQreTYhXmBrNGs3OEgwO1Nib3p9PWlL'@; put 'ezckVzJedUwoNzRoX1A3QiU1bSRGSF4jb21QLC98aDI7KThbKi5zY1tDRnxAZDBweDx1bWZiRTclKj58bUpAfGZ1XVcyMWY8MSE/RyQ/bClOQ3hMPC5HU31RUmBDd0pdInh7Y3AydishU2M3UWE8P2hYW154UnBabTt6aHZmYCt+VSNEMSE1JTRaW0ZDPS5ZJnxhN1dvLmh7YExYPyNPazU5MCgy'@; put 'V2RbK0NqfjVUalNKfWtIMy9BX0w1LjBzaUZ4dEl3ZDs0dyprPm1WNUpvTitPPDBELD06KTZ6dUtqfW1KJnU6Uip3b0AmMGAqQ25deHU2KEtgRlUlc1huXWxKVFUrUVBZTHAxSjZ1KFpBZFptLlBnTG93cz9Zelk8dkVsPytLc2p3KH1jSC8yNXUoRjUodkRQSmpYcT1SekFYfiljNHJdREsoJSF8'@; put 'U2EoWUh4WnB6c3dqUFgiRj1HJHp2YUBkXzlJI2p0T2A7LlByaT5xJGl1RF4zIX58N3QrWlNZRiE6WSlgOCZpWXVTbkAiflg5UHclPnQ1MDMhYzM1MUk9NCxkaykkRWVALF9tJC95Wi9wQ2gzIjtRS0N0ImdZWU1PQklIZWViT2IseTVyS0BJMkxsblcyNS44Y2FbTE5jS30haiNWZXkkdTckX05P'@; put 'NFFnZSFKSGxVaGklfUBMNWQ7a1ZlRThIcW1kWltrU3x9TENWJjhgKFJnVzxLSGp5eWVxdUo/diMqdzw7dTVDKzN4UX5la1I0Knl2TWo3dk8uUW1dIS5fPmZFVjolQz54KEJWYDdzVjszTlMpN1lHP3NIfTJYUjczWz1zMHBhSUpYWVREVzVJUDl2K1hGOCs6PyM5MFpsV0Z0RF5oYlBSNjNJXnxn'@; put 'L01NXXA9YTc1WXFCdjp2eFhOVXtfKCFDRFNRY1g1IVlWMSZNN09VWWR5MV5TMV58eyYxN0txfEcrZjE0Y2okbXtfdFFAOzYhLls3c2R1ZHs9T1s3em1aV1VqbiFEb0NpdzVySiN4PylOa3ByNC9xODxyRUg1fjMxP3kjMjY1IzZ3fSRCJClWKHw3PTV5USohfWdzQktyRF99WlFlXnRATT5hNlYi'@; put 'QlNrR3l5YTVOVHNULj5KWz1raVY2anBeODJIJXZUYSsxZTF4c2UoUV9VdDQ9OXJxdS81MG5wIXFnRWMoZl0iYDlEPWM+a1ZMPUxDKGdILjRlOVg4RitxX2chZFs9TEFKI3o/JHUlQlN+P2hLU1g1XjtvdyZAX11gblB0aSJ+ckNLXzwjXj02Z3cyVVZoUi9kVjU5VlIla14/Yi5RIldAcCVieU5+'@; put 'VkhWUDZiRGdBbX5wYS9vaW00MklXM2twdHl4SGJjVFNKc1pYXV0rZD4kNVQzOTJBY1lzK35CTDcrdzdFPEx+TmJqYzFdVyMhUClRV3UjckhKeTR1RXwidVtJUTRDLnZeb1hLc01iWzJ4UlRAdklBS2VKMkMwYUhZIm1ZS21hT3pzV1NrSnBybihpUighXj4jLlI4S1UuSkpKLF8lWUx2YzlsLD17'@; put 'JUp6dXo0QF5ZIW8hcy9pTzMiRUk6TClyRz9aLkg/SF1gL3wyVCs0UX4wflNoNWgxXWNwdTNMcUxBOGNaR0Z5KiRzSUArYGlML2x5IkM2SlRGMipvOjx5S2BLTT52ZV4sK1pyRjxNSGZNIUBgI15tVFpFOGJwOEs8NGc2XkQ/MjE7XllDc3xFdE8vam1ybF9heC9GLmVALlB1R0M9blc3T3FpWnl0'@; put 'KVgsdVVDVnQxdV95TXp+eHRQWG5gYTp3ejwjT252Ui9DMipqLCF0eFQqbG1+MWlaOmAldCk+fS8xYnFNX2FreD94elZtYWRrWnxmISl4cVhefHFFT3pYM0RueiE5NCpTTH4qc3VjajAwS3g7fGtNcV0uSFs9R0dAISNFaHkrUTN4O2BIJjViPWMvL3FCNGlEXkpwOFkyQXkjeW8oSFsiM0o8NW9q'@; put 'QnpEUD1pcF4/ZDNwTlohWVRhW1E2XU5PY2pYTmJJYyFGTTx2aiRCeDtNQVtOfCFjOXBzMTdxZjNMIV1NPlt5Yy5VYyNIPHIkK2woa2t3Li57QCohazpAXlJGYzdaPXVLVEo3I01XYnJwKiJlVS9TKXlqfmV8TUZeb3pIeFMzYnReYW9jbkBKVndfUDt9SGBZNm5Dfk1TPFdZW1VkJi5paTsocTNX'@; put 'YTBjW0hCcWY1fTEhVTFgUS9xVEI7L219Lk4yOTh7cUhYVW5fKUI8IlM/ZWFoeTdEIkNxO3gxb0hse2N2N3s7ejcpXVZZTVBsLHU7cHV5Ump7fnpkI2RudVlPNG1eJDYlTDMxcGp1bCNycld1M1k3cl9vXVhfUiY0NkpFTEdpPDRrW3clKWcwOGE2OWYrVz9RWCF2cWQ0JlBsVzcqUWZmc259JmRy'@; put 'bXxdNFNDcC9MNWwxanVxSWNXbHJ4cHRidzxUZ3A5cSpbOkZnRVo5eCJMKHI2UCY4WSY7RWJocUxRdChYbVBbVWQ3Kjw2In1eT0I2W3xbYStSQ11xOSlPN1ZLWSwsPWBmL0R9cEB2cj0jLE47NyRGSHEhaHhGSW1gT0shbTdzdnxhYF8hY1tnaSZXS0JJSms7dkg1KEJhY042KytiQDhnWFFeZWc9'@; put 'RkJAQ308ZF5mW2JXOVpQVW9MbTByQ3MjTU0/PS5bRTAsODFNakhYY0Q2dj4wSltJRzdGTDMoKTx4d3cmcSlMd3FES2swQlEpX2ZOT1IzYWxDeylpKEI9eGxHX010OjZvPWtzW0ZWYFhwP0JkMlBkLFEvV1pWdCs+bDFRaUNLe2h2bXIqOTVCNENvV3JxQnQrb1pjL1lvVz4pbnNfejMmb0xDL2pY'@; put 'TzBNQXRnVFVGOE8pLF5oJFA7eEh8JHtNXjdlP3w2UGImNmtLOHR3Wz4lLmx1OF9JMTomLEVVOnA8Z2g7KWJtL0ZROnk4JDM7JjoyQzp9JmJMUjBQODZJP2pqQiUyY2d0alB9cmxFNHUjc3dSSH5xMXIlNl9Bd1NYVSNHTlNfTnpXQlI3P0xQUzlCIjF9TWg2IU9SZmMlXWROSyRCM3dQLEdYLGl8'@; put 'cEBbaH5dTUNeZXh7SmFZN0lpZCw7QTNbOGhFclNgZXdAcW0mI3tLNmNXcSpWaDA9cGVCJHRwS3woeHdLVnZANFNRJkRjb0kwPmxZe21hKjVzV0JkUltWZ0MsaWg2MTF3QmtJcXdIdXxDeyZmaSlRa11xKShFWFZPWnt+anw2b1cic2hmaiRhMCJIb1V0YlhuTmo4QUVgOGIlTD8+X2VkNEZRYUIv'@; put 'KkV6P2F6YW1rJik8OFsuQkF3dXp1eUpjQEJbJUxaUWwyUCFbPDxudXQ9bkUmR1d0Lk1+eloxT2Y+e2lJOCE5Ym8rMjtwQT5aVm1adz9rWkZGWHZybnh3T197fnc0RnZXc3ZvQnk2dyk1LlkvbzxMNmlzYUNlMiooJTxjbVk6eSQ+LHh1KnE8ITR4emw5cn02XWN9QV1VTUIsQG08UjB5JX5+M3ZJ'@; put 'JFcsTTNic3ImX0pEKFdGRCQ7IiZ2dXo/UF08MCgjUVQ7XkFlWXtXNWJLdThZfVlyJU4xXj1XXntmR30oZEZuenRAZEtiZ3BvZD9sNjB5XnhgX2Q8NUMkTDx6KWZzPS4mWExxUF8qSmplfFN5WHZEW1ppIiV4OEx9SkszOWJjckooZ30lRUR6cX5EJlBgUzhkXSE7OExbSEBXelQoJk1ARkptYHpn'@; put 'ViMuQ3RbU3dfJUg0aWhdW11ybUFLKCNKK3wpRXxwQE0zQkszfDVWL18/OVFDQzE3X1J5OVZQO0lGcXJkO0hmPUYxI2BwbGRvVi92RG06VFVvKmAhQkZ8QXt6amVMVF5PanhxOFphXT5PXyV7aiRIX158MlBYeU1kRT1nZksmTjMxYUQ5Wn58O0QpQmdLbmU+OUt8dSRvanZxUUphOlt2WSFnTGFr'@; put 'TzxUWmEmPiVXK11YW1kxWio1X3QhSGc3aEV+cDV9dVtPYDczIjl2Sy9NSTZpO1giSWU/c3VMRDNmMkpdNi92YGYvZyM/I2JNJnxueE53RUJqQE56YVV4UnsoJmNlYkpQSz1qL3oxLEVUekZDfSQ1L1c8bHZ9JiltVlMzX3dgIl9hNG07NitDbnlEImlVTjVkWlE1UGgzZzgzeW1kMFVrbWpSWXZe'@; put 'Tlt4KkklQ3NXUVMzen1xWWlZUmh1Nz9KV0lpM3RjVUkuQS5sWD81OGRnMmFRflk0MjZZdWpGaUQ0TlptTGBDSF1+aT4xK3gwZHxLenpeUCNWI3BleFJDIzxpQlN+KCwsajF2cDhHR3YkXjBZeHpZSlspZXVXPk9sYXwubTpgLkZqeGJjKGxLbVNYNz5aS2N3d0RMNShFbFd4ZFIkM0t7I0hWM2xy'@; put 'Yyh1YChbZC5UM1kqSDZ0eGQkPWppOzB+I35obihAOFlFcD0+NStpc21YZ35GZ0VnPzw8QiRtUyokRTA0UElZPjljX0g+TDZHPWVzT10jaSpVKW5ke3plaEpyMyJ6WTouR1BFZV1CI1E6T3o6In5tW05PRlRBWS5eJCFibmV9PHM8M0l1VFVJbko3bSM5Smx8JXwhW2xRPEZyUl9hSEtxYy8qRj1U'@; put 'NjN2RmRCOkZ2OmtIaHlaWmx8P1V+U3RuQUFgW052eXJiMy90NVJWRk8uKFI/PUt0NSRzJSpSJUl0RzV3YX1wdS97YHhyW3ovdWVTKHQzMz1OTSV5SkBrTmFhL1Z8b31kLjlVX0Yye3tTMUJIIihnOTM+bG9mNCNiaTZva0giWjpLMEowKHcmd1BwNUh7aXFnaklDXmgre1lweV1CdjFydDY5cVVN'@; put 'Zz15O24hJjw9P2t5ZitJUS87fjoySHh3UDMvNCZRUGQlfVpVMVQ2Q3hTWX15dFNPajIzYyVyRG55K0dCQk1PaVlyTE9AIzclS1JFLzQ6czRxWXRTZz0sIi9HVFk2OUtkImd9d0ptdy9SO1IsKFU0N0doKiwwMSpsQ1o5fkUjPCYkamdZfi9sUWooe31UWG58TXNnKHduXkMkal4hWkBzUDoxQXc7'@; put 'dCk3T1EqNFRgZ2ptQGhiJV1Mb3s7NmpKZWEjS1FXTnAyey9xKDc2IldjTDRnSDRHQkxCbzN1b0czKyVCUjtqcTopQ31XTi5TXTpmSkE2fH0hJGpUdEooMClLOE9sWHY2bVNKPi87aFgvZUZ9e0ssYEVCTldtXkFpVjkxdnJuWCUvJjU6ZFIkSEBwZFJtYTlpcDVbVX19Mlp6OUUvYVprY01kbl9F'@; put 'JnZCZm5fKExlUjtUKSUhd0oxNV04eWAsZUIla0RhP2oxVGwqVj9NNipaKylvVSNxWVhmSmtxKEFGInBGX1IiSCZPPnYxRlhbZ2BLUSEldWdlMGNDVVEpX0NsV3xCbG9WP1I0Z09EVy8zMlt8JDtqdmVYaE5yUkFZQ1MhJEhhZSFiTFRWNEdVay5Nbl5XQzY6Pi51OyZQX1cobFMkfVBAZH5KMF9k'@; put 'SC8ycCV8NSooZGtzdiRyOj1lbWUwPXlTSSpZbWtrJV9LR1pERHpOSigrM2E4WjlsQ2F3SylHaTBCfjBLImdQOylxfCFdR10ydmwzUER7I2hTMiVOUTsubUVNV2YpVl1yZFdNUyZxeT0pPmhId24mSi9saWZ5eiRxbmQ7Wn1ZYi98YiYwNkZgT05+RVFJO0ZTK3pJczdFQmojXW02PkZtPGdBRzw/'@; put 'cVE1L1g5TGA5YituXnIvODtlcXs5TXovSVZoMFV6NUBeNnhgJV93e1pfXWIoYlRgUmwuNCxNKitUSzk6U0V+OjhkTldQU1t3RX0zJmNOTkRuTnsoR3Fmd3EvVkdMSShuSTAyLzhxYyk5eEN+WERiJmRocE0xUERyK09wTkd5YWRlPEN2eyhdV3c0Tl46UEdua2h8a1F0d2hUQW1+SzhqVmYxX0tH'@; put 'Zk1fZ2h4R2A0OnYrQm5DKHZ4eCR1ZnY1T0NCdWc7dCJgczlZKyVtVD16T21oSmtxWEhwektvcmJEb2BteFROanEieDZfUEtLQCJGYFE0NnlvK19CWG8uOG1jcFgjbDRfV0RVZ1lMbEsjIkE4R3hWcXxvZnlwazddLCEwQ3okW1N2Lm9BV0EjWmlPIiQoZHYxOWNOJis2K3F1OzleanJJSXtQTmA+'@; put 'NWtiSkh3WEJdcHAzZ1tkS2F9REwhQ31OKyFxSnI2Uzx4Sm16T1csZTpQcjZZVzxzc05qOERRL3hATzRQZ2dyYCo7RnJRV3lCcXcwUGJiS1B1JXFdTE0zPzNvXn0/TEcqJVRhUUB3cyUoRkl7Z0ooWX1ILH1TYW9bfDc9aUpwWltEdn1dUkZDWmEuIUYoLkR+bEA8cklWKkpnNjdkXW8kIUA4MFZX'@; put 'JWhuInNjQUJdOE1qbTAvbE0zKTcsPStMNUtILHlaOipsO1tve0YlNDB3TjQ0UkAsVFB0d1dnUEd8eTNzMkYwRE9zTCUxKGgsKzl8QzAmayRbdC4lY18zRm1NPmgvdiZQPGJuSGxTYUJpSjN3XntJYT1wM1ksSD9vKXgpWElhRk9KZV9Gc1JPe0x7fEpzLDdKVz1Gez1qfGpJNnkiKnRyLmFRdSJ7'@; put 'I1RZOTQvN25tRDw0M2tjI310OXxDY2hRPX5tP09ZM3g1b2crUkRsT3B9TnEsc1NzOWVjQmBxSTMyOkk2JFJuPDF5dU1vbHQ1bSJ2QHRVP3Iyelheen1PXiJTcDg1d0d5SDtCfT04LlJ+QT1WQjFwbz9eayNFJmtgbW9RPVBiIUlqfWlQNXhUbX05fCVaLFpBP2BoKGw8Wno1eVtFamZ7cD1SSUBJ'@; put 'MjgoUE44SFdvN15GJDVsIyMjbHAwbCVhRHRSST45cnlLaCxlJntCV3BiUWlaKGhdcXMiZkRdfWV6IX1CWSo8Rl5AQVFsT1d+bCxnV25xdTssT2UxeVZYUj0vTCw7dXpFOlIsI1tMZ3xjTUJKQnpVRSo6bUBuMnModj9LQS80OXx9YkIzWX5bRig7aHxIIyhsWCl2eio8T342XSRIRjFESXFheilf'@; put 'YkNRY0Z4b2UuZnRqO29Qa21MJWF+PXhYZzpSajtRIjZbISttUDxpRDBKIX5NYyJgclFpMDh+Sk1iRU5dRnNySmNiV2w8WWVuJjppKENNeClGRlEvRS5iIyo5MjtxdXdZSmNSWGc6aTE+WW0oNUo+JCMsUS9KO04vaXphSzhhK1pTZi5lcn1xNmxNcnU7IktAYG5NLkZtdmYlYj8uLHwqWTwyUX1B'@; put 'WyEoeD9iekl1PyJYfXB1TCljPDw8QG9TQnhuTD04bXRAVUtvN0lqVzlKKXFKZHtmOS4wKihsfTEiYGY4TTNSYGVCOlVBKiVSbCJoPXoqXXR3LEwhVTFSe0t6LmBhUHJDPmRqPiZ8NzBFLlkvfmB9fV1seyhIVmVQd1QuVygwRVtiU0RkTyx3e1V3M0JDcU8jVTJdd29+NlZVYmslLEBVS3N8Ki46'@; put 'PmFvX0NFMEVZVUg1P2tdcjIhJkpoLiNbTWRmVltbbGZaREgxQk1NUFFtfU4lXlRXMlRCVSlDbEx+ek5WTVc/U0ZSS318Lzp8PW9oM2wrUjA/bTVZZXlwalMuI2pzaXJFfGhePSh9QHs1Y0pgVColKWFARzcheHdbNENYfnx5czYwNXpQcGNxTEAxLlRZZHJzOXMmVTNPcWE+cFhLeXxDZHYoMFE0'@; put 'a3whc2gkRn5iby5USGsuYjRFaVs4Il9kKmosaFZSJXJwREd7IWhOfkA0V1tWJXo4bUZhPm0rXSVOY31NVCRRXlliZURuUSN+NHQ5cX5gMWRVSnd0UV8hVkVQMDFsMl03PmB7SFZDXXRlIVdCb0wsfD0sPkZ9ZHtAUXxCOEV3Vk52dXBoL0wxRUV+KigxLGd9dEdlXUMifEBJLEdiR1g/JTZyVU4+'@; put 'aXtBJSlYYyVtezZJZXk7RElDcUU6aVRwVS9oO0l2OlA2NT8mZFsvJltFWStVfX52M1t1Q0QifUJEYjR3YVRrUmZ9TlRDdTxVSiV6VjtgU0o7Skl5YVhMJHRufExSLCNVLjooQk1xc0JRfk8mIUxsQ0MjLFRbNUU7REpRVG9xRHwhRVV8QHNrWUJrcGkzJDtlOUNzV31SW1EoZSU5bUBhVUl8azFi'@; put 'TnJnPGEocG48YSlhfH02NyhdKzgiVmwiIXZuPjQ+enNZcjlOZEJpSipBOk5CYWVIWWk2U358LH4pJFlsRHtDeHdSJjNZey9GdnhsSm9rRnB9XW9TRStuPHVhTU5eQXQiZnR5KGJ5Kit+UiZZcmVJNDc1WUtnMjg+bjMmQ2NRPWReVjRyRlQmZ0MvM3JyP3NMUlYmWFJhSTlbOlBZaT0oM3ZqWXox'@; put 'YHxYd3giUThoMHdRRnwqXWgjYjdaJHQkaT0rTUE2eEQpTlA2KHFoLzRxOTQ4O2ZBPSFkW11nJDVpQ3cydEZ2bCZsYGt5Jnsja0wsWmJjUDM4Tn5nZT1yZDNgQkdSYV8sWEx7YmJ2WHI2dmRnVTxbdHNecVApc1d7Q154cn0qUWNyLio1NlFrbjVyZjJLWHY1WF89azJTOlUkN3ZqbWo2NE9DODco'@; put 'ImQ/dUxMaUN5L0AzaW4wMC5DSnlpJGR0O24yeXdMNE5Fc3dSLmdAUXVjOHMoWXtZSmdzbiNSOWo7V3s5Nk5XIk9rSTcmRHkhUzlTc3NGYSQpITRxX35TP1NkeGB+UmFAOjZjNHRHMD1GWmgyLyhIXnY7Tm8oWDJCVExvOklTdkskL0NtOlExQ1lYdTNPOj8yO0o6amwsMiNYRmlIUm8sVFt4cU9T'@; put 'Tm5jPyYha0IsbCkqfm42d3hAeldVYWRlcV1iTyp4Y3dbTncqPHBfemkuZDxaPXt5MHVfITRwMmM8Vyk1S3VyK2tUNFUrXXFoTUVHUTNOKFYwQ3R9ZXlwTSooY3tgWGdid14waC9OXV4lRDgjMChWdj9qfiFPZ2RZSG44cS5ydyk4TXBvZlRWUGMrSTxudW91bjh3fCp4QSpWbVhLJlQyITE/PXIi'@; put 'WGdkLDRPNDppbEdOSmRSdnBJOFdodzw0SX43b2pUZWEwaiVfREAxUkJaSnkrSTZdYThYUH15VX08QnkuTWxPKFY7KkNjPDhjJW1OaylNMVBhO2ZHLkE7Km5sUkxWT0d3ZSQsJUloS1dbU2IoOXBmUz9DPXlJR196Ik04bChGWTMrTU18X3I1RFQyVUMvIzhCczElOz4ybHNoTHMzJkEmJFE2PT0u'@; put 'TmFeNjBWWiYjYX5YV3ZgLDdpWHokJV1ZP0Y7czZWV0pHOlVyTDZZcWhiTiF8cmRKQV5CP1lZQ0ozdkd0Vz42WENFTXVkM3lrI0cjNzw0dmNgQW8xL25kZFJgRiRzKnF9NW1gL2glaXVCYW5AcEVveyVJQVQmNm5+dGxQemFCRnFHREtAe0JhOj59KVVZVkY3SGdmZH0mQUxnRnRVTiZDVmJsNXtb'@; put 'KFtHOX04OXJvR3YxWWFhaz1iPTxNc11PaUtgQiZrZiJ8Nl9AYDdje28ySnUuM0dLNiZvNmt0akFBNUxgdlt8WGhxTmxNKWZYV1MuZjI9Zn5pN0Q2Jjl2I1N2YCFGckw7MTlPeEtKX0lXUUNfNiZYV0ciVnJ3SCgvd1FoYExQci9VWkAvRiY2bzNAVTdaejghdF42ckBsKWBfS1gjQXZieEVYeEdC'@; put 'dF5SKmxqbigmdGFIVyFUdXszYU9mWWt6OGMxJjVpPX4kODRqd0pZVUV8RH51LDY3MW5uSE0jaX1pUTtbbVpKdU9jZDVvaE03bUJ5aVtOU1I1MVpdIiNaLy5yYTJzZVB7STZFXj0lKTpFQzozV0ApayEucTNiSmB1SzBDQ2NRb0V1Tk1sInRESjgyQFIzP0JvM2BPRlozRUxRWF1+KXFELm5adFBN'@; put 'aUVPciVdcylJSmU8akNfQVVIKVU1fHY6VzVCMC83bldvQkFbPTY2LkFbck9ROyxhUXtZKlIqJEI1N2spZSR0MXU+PVg6RzkvLngxKyw7em1sd09AcXNQVXU1SWt1P2NbYGtqZU0xTnY8XnwpKXNlPjJWbGVaeyt7bkxTeiVhel5FeklfVyIqK1A9OmY5cEpmTU52WUk2Ji4mS3VhYTduYCpXTFJH'@; put 'QS59ZE01T31eNXp+dX1XaT07YUNsSnNqWU81aFZ4N00sNHg7M0taNXlmQVZfWFQhRkhsJmgwQGJeQmV3X2RVRDd5aSF0I0xydGg0TkNUeUdhKFI8V1VuXmZuYz08ITI0UjE3LCJaL15PYXdNYGZgUTtTSnRwd3BGVV5bZkJTUW06d1tEa11yPEhxT1piSTFFSk89P05pUUp6TWpeWVQpS1NKTHRV'@; put 'YnxOL0E4cVhRSzJgZGxgJnFLJnhbW1lzTGh7UTZdZlJnSkhiQitFLjN0RmkxLiw5YH1aIkJFeSNwV19LMFY6TF5fR1J1YmRaKzoueFFjKVV8ZjhadF0yWTdXNE9reHBONGdgX0ljeSZ6UDMxLHZtYDsjQG9JJD9qQ2FQXTBpdFY1QGw1Tk58eGc4fnQofUBwbVE6dGNXM3ZHTnJPL2Q6PF8xZlM5'@; put 'WDEmKjI/eEdIaiJ6Z287QU4lXnI6MUE5YVMkT2Z0eXpMJTRrTTIlT1BXajlzaz5td2E+PnZdbktQKnteR3BoX1siR2c0YjA0JkM2fTx2czt0fUBFOSM+aTouITlOSEpbLDpxY2E1eTZXKlIybl5XJWRKT0hCTldIbjZ1M0NYfFg9e0lmOls+Y2NHJTpSLkdWcn1dSFhWX1liaTlLPFMxeCI/a2Ml'@; put 'WjtZTnRydHZ0IlJJRElFTzYuMmk8VU8pLz5aLjlLKiYpLDNxVGVQPHUufi5+VXBlOEM3OHlCeGhJRihjQVpqMGpJUCF+Z04zMlhOVTdURjlCeldhSXh7YiU4V20rUihdTyNvbCssVnNOJU9SM11hK0NpWi99VWgwXylJT2QsZztPQz1pOTolc3ZMakFRSUBCNntZJjJ4bCFpUW50PEJmX089XiU8'@; put 'cmMhNjsyNGRAKFVVRGdgfW9WTntLWUpHSyk3ZEh+bUp3e0YwWElbakg+b0F7Wk9zZl9zKF9kZktzb2lnRSssdW10U1hxe1ZaXjBdamlXOiMhbjA6c2g8VXdBXlckQj9bUDNbYyhpdGJXZW9bNGZJRCJDU0c3VUxlQyV7UUYoK08kIlV1VHYwSUUlWTddUmNsIzgiVkklOiVSKENWakQlTlFJUClu'@; put 'SXlGb2NXcV14em1DOiZac2pbWmUpLiU6MkV9ZCY4d1taflV6KGhLQ3RsLD5Mal53dlE2QXg0R0kzTCpnJVpCXjlKPFhgNigjNUR6X2VvZ20oLy5UWX50ajxZNlZ3TDxPT2J3Ln0yYjE6UkZTMGw4PXo9dzlwQixmfiEsc2dGeCh5dFRuQk5WcUMoeywzUEJpdGMyX0NWV0dHWEIoaCNfVSFTTFFp'@; put 'eHlyKjMvQEd+TmVmN2pvfiYlSCxoNmZFNT18T2ZIaEs5dzw8cUJZWm0iLE19a1VlcVpCQTpnPX57NFNEbixdXlJtTy95cjFJdT1WQFdaMThCYiF8fE59e3ZjUGBoOjJKYD9xMDd1dkZ9TF1eTyF1e0VCSyRFPyoxRzQsX3hyaXBbJUQ4JnF5ZTwpQGJZcCRud1trbHpTIUouOjdScl08a0I2Oyk4'@; put 'TFMwdWMiMnVMRl5fWig4TV17Q10qPmdASlN4MDk0VjFCXy5FdncoQGo4eEB2djUifG9XNUdtRCMlQVZgOUB6a3IueDNuNjNtZ0BHbmw4QGB7eWRTVUV0P0lDOEB4dS46aUFpeEdWfj9rKnVfODk/ayEzYkZeX1AmcilOcUp9ajhnJGxgTURRMlJuNiJFQXAqPnZZcWRbb2w4N2hNdk5ZPnJ2XUpv'@; put 'aHFnTVRDTXEzeHZgXzlNKXZIRm8sTTxoTWNuS15UQTNbZlhxL1VNdUs2VE9JZjpxYHk1TkkybXV+Ol9va3IzYnlqdT1LckBnVFBnVXgiOFp0WyFqK0YscX10NUZQMURJO0NQREV4QHl1WHZCbTRXa0YxKlU0dUQ9eEtsckF3LkxZZitvSGFESGlFOnQ1NFVNcDhjRGRbYk41UD9jYkg6I041PDlf'@; put 'ZCJ3ZykjM0h9UTdrLjMpQzFzcipuZn5XNCpbK20zNHwlQWV3cEZjLHpYSW44RnJrWm07JTdmNyFCWipgS1A7JSxgI0FFST13fFtrNyErbiNffl83UkVCfEVhfHFAYiQ6KVh2YW1sY3pvTFZbbE5nS2o0fUNFJko/MjFQOE1dPV9JamlDbEg8TDArZFheeW1idX4hN01nUXtGIlo1S2h2WkJuN148'@; put 'c3NbIl40ZnROSEh4eStEMV1ZRzkwQDY1dDFWRV1aMitYczx6Jmg1c0tCWEp9bkt7InZ4YSQ0SG5AY11ZZTkkTWRYVkhZfCxHU296QjwhYnh+ZTk1Uks3WFouU0U6RikqZ3VYdGcwN1VHWiU4KVpWdnhKTTsrWD4qQ0FSNHZXc2tBeixOfkM2VFgvN0gxPlI4NGNYMHgjX3k4aSguZVFDPSl5WXlC'@; put 'amJJQkJ9SnFhalFnPjhbLEpza2Z8UlI1P0Eydm8pLkRQYClHYls9TipNSDtmM2JlVW47IXVTXVNVdXAiVTY6bl5eQFZAMXpxPnlORWUqR3ppSzpOImJOOTxdYFJqU1E5dHYsSytVTG9zezFXPH1UNnp+JVVeJUU1bi91aUYsO3VLbWR+fWAuY25DOFhBYGlLIXZ+YXwmdFB5Ny5nXXRxfW1DZ1A1'@; put 'Q3w4T0MpI1prSyJQIUhEXXBdfEt9Sl9iWjx0SUVJM1lHR0pCZU9WKEgzazt1UzteXTFbWT5EfH1IWk9kbTg4VnExOCVTU3V8I3Flb2E2ZVZUelsoIiNIb0t5ZER0KXJrTy9RVmxIXW9tNmNXJkBGMntjKm5ILjQ/OTdfZE1WRWdkSkwuOXxpN2QvPl5IJDRCX0EpT108b0tee04zQkd6N2tAMFcs'@; put 'KGYidigoUlFGJjFGS2FnWTV2XUBASVdHR0MqbTosQ1lCd3w0O2A2WitKOSlScDNxUmt7QDJ6T2o2aj9+NGh9Ono0d2QmZislTz9uYzkzUV4oZHlOQ35KeT4vSXcxWVBVKiNBKTRic3pPM1BKOERhZTcpWS9tVSwqUi9kI1FJQj5Se1c6Jjw9PHB4IS5fOEBxPHw3ZHJyJCMoZWA5Yng8Ii9AbUpa'@; put 'PmlkbHV4S3s+PSRoKU5GZFVjaj5kQ2VFOmtDfT5ePVZvfGBoMnxtfWJdOmpLOX0oMGxEUlpoPDFVJTp5e158Ozl+SE1+RzdNR3RgNG10R3MoQylONElsZ2ZIaGUsWGRmQy5LWj5QVEx2Lnc6OkNMRX0weTZGSVZCeVNKNDErNTFlZi5mZjpIdn1eQW5QXXh0MGUuQmAyUX1he0pnb3IpcCokYFho'@; put 'e2hdKzw+eSpuMVFaN0B2aF5pSndAVCpdX2pheWB5aUFgfEZ5dENUZmo6Qm9SbzQkYm18VlNHYyExV3Isemx+MnpiLF5PanZBdWNkTDJqSkJnQkh4ZXR+cXdhQmJYSSY3XXw9cDx3KFpiaDhvZmZiYEVtMTVxdU04e1YmdSNDYVBvT3xYRHw7XXlXK2FAPm9uJDZVMkZbLEVJLEpJM0ZEcj5oXj9w'@; put 'fVAhPUM0T2xMZnhBQm8pMXA0TTFUKGk9dUlWPlV2LjF5OzdQc15kUWFJZyMrIX19X2NbW3txXmkuWztGYjBUKm87ZE9ybFMhIXEuZUFnTGRsekV2Nn0iYlFGeWUoNFl7L0Q+WGV2KEpfWyowQCxCUDw0Mmw6bF1FKjQoRDdQU30rPlhCQnI9UXssbHU9fkVicFZQUVlDPz1RLl1TcnU5NGV0YlRn'@; put 'RSI7W31ESU10QzEzO0MhYEM0RDs7bCguXi8xeSpvUSpKKWJ6I0tFdUlOZjVAMDo8d0MpPzh1cUxsb2llPS5ieF8wZlA/Q3hJZGt+YXouaDN5eEJTX3spQykzOC8ucH42XyZBTCZRRlQrZGNXOGoifVZIYys8fWlFSnhoMXxlRDUifC84P0N5UWVXK3U1OT49JUU/alU5SH10TismT347SHdDPWgz'@; put 'VWhSZHc7TlJ5KUtfYVl+cnRZSTdzUDkjJjA4UFQsL3sqUzlgXmV7KEwxLnUjcDMoWmR0LGY0KzcrTC5ffFY1Mkkwc0cuYywubjM9XTFtSV5wXWhrdTlMKXV6dlJPanNEaVQkMn0iK0ZjTXdqVyhUbXVmOkV1TXd0Z21DdnNjLldjdjNpZz9LRCNOK3ljcV45dE4ldGBkR05lWk1GdWZ7ezluOm88'@; put 'Mj9KQyZhfVtfOHAsWUwiW2k0MCQmUk1DRjI4ZipsfHptWFpxT0NZT1hTaFZgPFB3Sk4+dnhxez0xb2MpSSNfZD9Fd2FHLHBXUzJdV1lqTEpsQTZAWj5VV1FEMylXSjJfXWoyS1ZpVkE1cVtic05NU3FhOzh1OEFFMFtDUDw5OS84cSliLkk2UG5+dypVa1VeYWhLVCIsRC9sTFJlfXN8Z215S2V5'@; put 'I0BxdFUoSEs2eWgzbzVGY0dffG5YQmFtO2pCJVorUSlWe3s0NkFbZkskPChjVjR5cXQxfS5gTlpGVDlicFtYU3gsR21AXVAzZjl1Lm84RT0lSUUkRHo5NjM5diQvTDtmVEZIMU9HTDFyfTxuYC5MLDc2a1Qwc2c6KGdtbW9fU1tGZEFyPVQoalJOMEM7I2JpTjN1Q3B4RCpfaXxpJHdpJiUoQzVw'@; put 'X2kyaTBmeF5naih6TyN4N0JjUnNXKmchQHo7aFVwc0lwWFU9VlImRDcxcG4pYHZuczIuT1N3Xj8rIi5TbmRJdys1M2IwL1dKUixoP3duellfRkZrV3l7PWc6WThXT3B7O144K3F5UVl5ST9CckZvWUQsPUoubDhEPEhkVn1aMn0oS19WfD03VWNBdzxDUlN1VS5ZWCp3dTVtODAzL1RqXXU5emlm'@; put 'JDNBUzk8XTwzeFFpMklee0xKVkFKI2NKQkRYdWFPM3w9MXZbTndhW2tXJStdOn05Vk8/dUBrWlJXPmJuNHVQbigmS3xhMHZPOkIzdDRRKSQmbn1QI2xOKT19Jmo0ZjI1Y1U4MFdqMnBKdj9BZUYpQjtybS87JnkyZ1laZSMsSkZrT3l2fSlWKilEc0BfXkY9RldXYEY0NHEwO35QRldXYChabk9S'@; put 'Tl4+cGBUIWIwX1FHVDRCNDVzLDxAdTlwfEZKLGMuPzNaWUxtUHh5dyV5YXBxT2NxeStycCpNWjsrUD1HfVJLOlRjSGlIfWpweCxvV0dxaiVidVRibUUxPU45aXRZUEhNSz1ibUx5L2xLMSIvbWxVei5SVUd6UF5kZU0yRD9tZiIiZWhBN0VlL3M1ZEdKM1ZKMDRMZV9gflFdWUVpITFefiVSZS9l'@; put 'dE0zM3JrQm5BNTVPRStTXSF2IT1gRkkjckA0YnNbeFVmb3N1b30wfjYwe0kiNDV5Q25OeTduSXB4KXMpfGQucCM9cXJNfndxS1IqX2sucHlLKHNBKyVEOj9bdiZmZDdhaCZTe2xGZ04hPVpnfEkuMDUreCxvYC9+aSFSL1NIWzgxVTZMM1o5YUJsIzpmKVo1KVtmKWY9UX5FbVN9PXZeXStzMGJD'@; put 'dmRaK3NZN0dMKk1qYUdObVt1RCZAQlB5SC5lTnprTmdxIm9OeXhnX1tvT0lEe1h5NCEheHAuckR1NXxpZjouJFo6LjlnR14+XkIjU2h8cUZ6dzhAREtjels/fm1pVkw1OT85I31MLlJLLm19eUJhMkdWUyNvUl1SL2FiOm5sYlAqKFtmOT0wcGRbcDhgW2BzZ29jW3BNI3wjLnpSe3J6PVo1XjFw'@; put 'e3FAXWtrZzBvMkVlcHd3cG9EREpXKmppPWlMaUxZP05oXX4kKVlQbHgvfSZsQUAzSipfcG4pNDNSbn5UMSFQWEVNcW9UPmdWMUpCKiZzRVd0QiZATEtPRlZadkVibCg8ZiJha0JZNiU1RyZkOCJXN31ZNlc0Lz4waG8/MH5jLmc+WS8mNzVLSiwxfV1eQWpUTltbOz9nOit4MkE9bmJeMCsqLDJH'@; put 'LnUpWGJLciNsRE9mO3tTPys+LGQpaFgjKTglaHBLSiJQOy5wIXBURjI4biE3NDZ+NzBHZHlyYG84KGBrY2VMKXp9TEhBSzokOk10YjNud3g+THdNbSN4bi8+ayJKOkZJKEdWbz9mOk5NKHhFd0RMdFZRZ1g3OSEkfkJjc2M2Tngic0tGeDRyNSVPLCU7Q1siKnNWZVlXbWxXVSJLP3xdPzE9UlJN'@; put 'a11VRzc0YSVZajZXY2Q+eHUycjlHRVUscWQ/JSRKKTMzPFJVbTAxNntSKiV+P24rUnwzT159eHIrJGAzX0RwaT15Mj45cltifE99XXE/OXJvPmlHUEdQUkdlIW9kTkJUaVJVRXs6Il5NKDlrWnh1MiFJeD0jcSZfbWplYHlxRT54VDVyPFNmdTFrRnI1Jm5GZShtYTIuS01WXWRFWkplcCJKZ3U/'@; put 'LnYjdG4qfHZSSS42Tjd9Mk1bZCJsMj5+aGpqNSRWK2FCJXR3enVWaG06c1VTSU1FNSZKWiJncTdDTjxORG0pRmVkIiMxZX47QytMdnRRKChbX1NZSX1dIU51OnhNRkZGPmRzfHlXM3ZEPV9lc1FORGFOQi43ODN4TiE/OHgkSikxVVNhY1FDSHo7KlBPR0trSUNZWD1XYWM3TlAiSjdJeHUyPnBN'@; put 'UUleO21oJVs+MG88c1F5PlI1ZnxqR3F1YCEyYmteZ0UhamB8XmBpL3Jqemtve15PPnUoVXF0ZXNkZz0uOHpeSF47U2ZkdklsZn1oVSNKJlUhfVpHYHRYfW9hWGtEQG9VPkJSYzp1UjdaeE9pYnwuWF9WNWZ3bXdtbDNhfVF+XzMrPC9JP2dmfjt2TXEjaSh9KkRES0d4ZXhQdEVzSDFhP3Vyczhb'@; put 'NTJoWkM4dXFrY0tzYzJycXVRKDBPWzBOPyI3PFV9NGVIWikmWE56XXxBM2slOVI8SSRWOlhCXmhkb143TiQwNyhBZXBRUF9eU0ZxaUpkXXc7VHExaHt6ZVI9OCIuYnAxakohPW4hfV49JERmKWJFNXF1RjkjYlVYZXVHcCpfJnFKWmt6clZybzJDP0coJVg8LmY9dnVeJEZfNHV7KHljKllzfHou'@; put 'YGdZPUhwUlhDVz1sMm4/JT9JQVtKdEY0MWVNWCFYYGlDVGYiRzJPP3g8ai9oc0lWQjxOMUJFYilVOUwqY191TCh9b2tBPmNeUVIjRDRdNjwqKEtobVZoKmFsazghI3VpNHZ5V3s/YlpYYkl5dmFPYU92fW93PXRaJUNIWnJyXUM4UEBedE1qVno7SGdUO0ZXY05nTjFXYVcuTFQ7eHVgT3FpKnhi'@; put 'Uz43JlorY1FFI0BLRXloYlA0XVA9PC41a0xFTkgsYH4seDlmQm02dnZwJmxILGhWMHEzYlJFJm9IdHZkPnAlR0lYYGw0YUxmTllxWl8sai5HVl93bThmNU5IPTwmQlYjQUdQN0RjcDFTbDtSZU5KSWBkZjJlcTc7dnYoQTkyTz53bEhlSCJRM3J9XV5dZ0chPWJDWmBhOC46b2V4I3RIVEM8fXUv'@; put 'I2c7Mnlyey5kVWB7az5OS0JvZiJoWWQkInNHbUszPE5iPnlyQD1CX0FxOT5CZSM6InAiVDI0TTZ7YjhiOGJbXVckP1M9XiZsSDl3ZnZdMXo3RjtAcmZeL2gzJUpYbDpYOzl9PTJYJXJCJigpZ2F9Q301VF9zVFovND50UXNJb0BEUypTXWB8XiUkekU8U3F8bFF+TGRDN2diVUNtS0FHOzEjLDcl'@; put 'MFZvQz5GMG11dlsjcFJdNDFYQGpoWzZ8KUptXS4hUTFbXkw/b0hSOkdpWSVsc2ltWEt0M05iTHtrTWlkVl1kIiUhY1dtYWltWE96fGJXRTl0VWhMMipXJGZXMzIzN0A8P2sxN0tKP0QpJFVmdTh9USl1KiovVWN5fj5nUjdaIUl6Kj1PU3cybGR2IXpocjBIS0E3d0lRWV09RUAoUF1dMSpmaFtG'@; put 'IikuTFUrWDcyYjsmSWxOUklmNkV7LCFzPVZHWjt6T0lPOlkjTX1rbU5AenJ8KVkje1ZmOCUxSj45cm9lSWJidCtoUy92fC4wTlR4MDpfbTB4VUNMaldRaHx0RFpOMkVCMGQ2NmhlJSpiSUwhbDw+fShOREI1ZUNpLyFVMXQ0Xitkek83RVt6KFF0N0ZmJjRAeUlnYVhwXmNEOFdTe1RaeCFJMn5N'@; put 'JSYzcyhKPTgsN0lnbXh2XyV3dlhQdjFbRnNSKEhZTU9GZVAlajR4IU90eFR4X3Q3LDNlOCEsbTNgRmlBU0IyQi5kOSwxKjgxJl1kPCFBZUI4e2JCODp3UzNROEI7WF17bTp3LlhlOzsmUEd+fXcyPDIlJntFajdlSlM1fmRCOFl7SzhBZUI4SmJPeSpmMjN3K3AmI3hIej9ILC95VXg1b2V3d2do'@; put 'YW1bUUAkPTRwMCkpKHcvdjlTYVlUXywmQjt5clRfaCN+XkBFdDBAZVRbMVsxaCNLUGtVJG5UKDdiOWw/WkR4QjdVLFgiPGBYXTVvRkplOnApY1JsU3xTS0p7QkJ7Vno2e1BuKFFMbmh7UWNFWkdJcFdwfC8+K0BYPWtbNDw/OTxYWjlxPUl8Z1Y5SjZYU0coIjJaVWoxMmhSNWRVUl57WDJ6cUgx'@; put 'dkBdej9FVG0lXXoiZEI4eGJHVDlnNT0/VEhbSXNWd3xiZiY+QjhOV3Fgcmw+Q2JmVz1JOE9rVFRHMCwhPyMuak9aIXBjOkAxUU96RTooJmVDLzU9JDooOWNwWigrdUMveVteMHZyWnpdZSUhO3lPbDI8Rml8PD9xcTgwaEMoUVQsalVVaFgyVnc1cjJpeFI1NmRgLEd5fCpacnx+LkhZSUxFc1BA'@; put 'fWpGdVQwZ11LUTlSd3RPMHpKdVpoTkFrUmN1UyMxTVFaMm5hez99djhTTUVkYil1MEchcXFhR24xJSRYW1IpSHxGVykrPiUiNnAlKk1QY1tSRm05RjEmJSVQPm5QUzJObCg6X3pwVE0iWSVOb3ZhYT5MdmY8bTp1MW41SztALmxvZi97YC4uLyk0VTQiXltqNy5Hd2s4KGcuSzVqO3cuQDM2ZVEy'@; put 'YVAhPVVAPzZPUjFfM0lAdCE7NkFZI0xoOWN2cF1CRU0xMiV9d0Jkfi4od31WNlt3Nl1WdjI9XzFWQXlYb1VOfWsifUVvfWtEUj9hbzIiZGNWX180LFdlX2VMOlhmdlN+OklbVmxKPFpJUzRvPUIyWHh3QkB8ViRCdUx2VllVR1YwblUzJktaI0AjNmp7cWAzOHluOnJ0PChxZThbaDwwX3pla0xw'@; put 'cDRLblU5TFlYZD9eUWlecEJsNClFaXw/bE1CdzZhdlMpXWZwd0hXdiNTJTg/K0BIRmgpSmMlRj9DRzk3eT97SDNKfWI3JCI8ZG42Ni88YTR7WkpzTy8/WzI8Wm88bSUwVSgkMDNxbEllbTcuVT5Zd3YseGZFTXNUdGQmfWhpUE1wIlowVmlDVTpIU35gQndvXnB+VTo6V1JnTDVOJVVzT15sQ1Jo'@; put 'Ll45aD1udnklUmdhU2U7bGxURWdRWVlnbyFGeWZSOXdzQyZMNl8zaz5fMmJNQlR7cGxwPFJpU2svUVc+RWk/RygyYFowdjJCVj1OTzwpdCN2UWRRcn5gMj5Fem8vM3pEdWxHOE5yXTZuL0J8a25mVEZAQnQyM1FYK2xOVFZVdzNIbWk/T2s4Ryw9QiMvJCk6bnVfMXZbNFNOPEJUMCxFZjBIVWtA'@; put 'bGNtaWVAWkZQWGhTWjx+WDlyKTo0KX1kdSRsSzt6XTdlOCp2UT5CK3tld2FdUDM9OlZlKndLZTpFIXguN2tncWYqRkwhcXUwYy8iJCpmT2hmL0FzMWczNH1uOittLF9yYXovMWR7WWZ1JDY3bkokbGVZQHA4X197JFhqKHtIcD1lYWgjLDszR3NkJDl9U0wiJnI2d1YoNkJAXjlPVkpFaHteMmFC'@; put 'ejZvQkFbOSM8TW1oRzBrZj9MfXt6QUQ9OiRLa21XWChVQ0IvKlo3KmhBU0IyU0YqaHYleV9DSzRPSyo2TCl+JV43YEZ+eERFPCwzISE4cHopJjt3MV1kN1o5N3VGS2tBU2t3Pyp2NXBKKkJKPmIySE87TXM/T0M2cWc8SCRfTHF4VDczaExIMF9TMUtzPk8oSWlgcnc8SV15JGZpXnhPdXhecC81'@; put 'KmMmeHhyXXZdaT88UXpZN2BnIk4iRk0ocUoxTS9QQUdjfDA7bWx4dHF8XW1XX0dabDpJK0RUbkt0X3c3Y2RNMnxnR2p5REgxJnZSb2QkOEZ+Wn4kclAwWy5wSH4rWDBacVt3ZzROSkA+UTU3TGlnRks1fUpOSVVRUUt3S35nWGRdX3N4bDksX2tNTXg0Kjo/fCg6enVSRjo9bkFiWSwiLjRNPUV6'@; put 'UTFxY30vZ2RgRjgjSE1jKU9rXm5Vc2pqUWpLYUU7PztLckY2RilfIkxmfFN7LHJaW2E8T0Q8WEclWWFlaj9MW0Z7ITZaaiE0PG5HfUxGekoybjJHbiNAcylKS2ZWWEBLW0F6PDA8MFdYVGFsMGZGcHZHW0g+RGxKP1pmM2M6cHlgS1tSO0Z6Q3VGdjtWWVArbGw3UnU6YU9bXilnfDMsb3ZgNmp6'@; put 'dXZ7alpbJHJIW11HaCVPUS41NDV7MlF9PUlJbFJHbExBeVU5dk1HUGw/am5kOUR7STwqKUpLZHhmQHA8Y29NVjFXM1ooKUhPbmA6XkJUTVhhYVcsclVEVEh9bzl9XSZmJWw0T3NpfC5UVHFYP0BhaSpfQmI6TjAlayMlNHY2dD9EM1Iybm1YTUtTJU01UGR5MmhsP0NhMm5TdyU+LGpdLkVzJGNF'@; put 'W0NAQUBscFVkaXJyU3pyLlFVeHFUazc9KkdIIkNfM2FVNzt0YyFWeVV0XXI4dT9yZFFOXkVQfSkwXmFBMzhpLG5+P15KcW5DTXhVKTNgRVZNUV1rT0hbJF4mTmpWcDl5VFtSOXokKkY6WD9kWjtKaDNdKDQ7ckN9aXB2TWBQRiUqU2AlITQqMV9BMiUrfGp0dndDOElQeDUmWWRoRXt2MHwrY0Ff'@; put 'Q2EiY29UPT9JJT1UNTF7SmkqIXpAaXxSaF0wI30qQGtPXWc/dFJZfjpoSjE7Vm1sOkd4WmwwOGMhbGBRNi5KQGV5cX5dKipGUV5fT2pIb3l5Q3dGVmVBWS45WWJLQiFfMy5WKVlEdl9iIkFke2IxLllkYUNPemtgMStVJG1zNUA8N2FZX0BJSyV6JGVSQyssbTlCZ0prKmkyOUI7LGlrUEJ0aHcv'@; put 'Wz5EaFE1ZHR1XiVUKU52MXBSbHxTVmwzWndkQFdyc1Ujels0bXpQLG96MnpmcHwoNyNwdWRIZDFqYG0iL24saCRvOVFVVFJHfjYrazNPIXlMdmhZdmo/LEtKJiNmWj5qNn5abHd4U3p1Mlp5OFshMThWLzJoZiFGbjN4Syxmb159OUoieWpdRWhxPSVpT01gUCEzRHt4T2dgNHRlJmhjUFI3cmtD'@; put 'bkNpLG51NWlNP1BVMV9bLjlxVFc1ciJASEt0XzgzdSVZSnJAfVgwL3ohYlg4QFtPI2ZPITs3LiVaN2JwKEFncWdIMik/Z2g0bEVuRCYrNzorUlJOdW8qbi5WV0xYKmxxVn1VdyxLQFsvUSw3InZnR1pfTGpNVnkrZFFoN2BsWXxsTiM9fXZgPnY2PSN5ZEZiZ30vbWguNEgyYl9DeztVYz5rTFE+'@; put 'U3Fydz9KRHdeb3xBTnE/MkVzRUpCS0pffTYyYWBsX2g6V0dLSko6V24sVyo2Uys8dS9KIyxHJnVCbzJWVzN4Wk8xU0Flb1h8XX4ic0tSTituK25VciYzSjpjZWlxWDddMEZvO2VzUyZjXys8OjozcHk8RmRneHcvZlBpVTRiRVhsPEIzOlU6RDR7cjxCdXdOZW5CJUxTd1p1YzB0OkUkQEZtOVFZ'@; put 'V3A2dnxdVV1iTCUjIVRJKk1xQ3ZALlszam5ZdlpHUz97MyklOGVoRCNyXTB7ZHhpP3EkK3gsVW0hSno3PHFfbXcsVW17SmtPcEhoQkBfTy9qSDlYUXRvNj9eMDBkWyRBKHJjTFl3RSt4WWxeb15jJiEwJnsiNE9TdGkrPF9OMW5fOl9oSl9dOFZ3dzdmJk1xLyRAYDYzJCRpTUtnTlB4WFRqY3xG'@; put 'ZCJSMXhjcHtRXl1wTFVFRXpGZnhfb0FPRiI9Qjt0cVtXejpFWXw2aDV5STIoek56elo9L2ZXI3lMWzN9cT1DamBXdHJQLmwrNExmdjZSfktePFgiYFpZNGpYKUAmfjddRjkuWEo7TFVlVSNESURebVM7N2R2WWQlQDVVRypXcV1CQ21BNSo5RFoxWzlqOk8sWCxgSFE/N2plO0YyZFZmQDZUXVEo'@; put 'Ym9OcSZhZzMmRl9IO3R2Z19CbDRCJGxCI3RHZjVyMWZMLEF5S21CUSN0ZXxDZyFZZEk7RHlQL1lhZ3YqIkkzSntpbWVXUkZCb3VrcXpLLmhnZTQ8KSpAPWphMXU3UEZQakR3Uj9GWjwidUZBPCFdQGFORyE5SDguWjJdSilpbWVfPT1uQURaZX52S24iQ1RxTz5sZEd4NzMudiU9ZEYkcDl7ViFC'@; put 'REx8T2FbYEh3QmNTPVRuW0NJc2g7YDYwOHs3Tnw1WkBDTHxHcVp1L0gqYEhTbS5jNFVuS0gkXnhoOlhVJSUqX3Q1JGUodD5LTVlVO2YzYEdje2BOUVohLEp9dWl7cEEuYlYpO19Aa0k9fGBZfjhGSS5pOSVXcUteZUJhTyM7emsrbDR9UXU6KXJWMnhkUUkvZEhGb2ZlJHFjVGUhV3FudE1ER15L'@; put 'VUR+WWd7blZ1VER0a0pRViJwa0tQZSpqNkREJi5jbmBFQEVJTHc3PiQwNGxCUzpeRjdZZFUjeUUlITF2dH5YRSosVSVTSldhRVs4aVY2TGk0alRITU14d3hqRWRgL2oydFkvdUk9YUIlS3tWbTg9NikxeE18VlFjbXQpY1hSNkIyVXhoXzN5dUsvZiR2LEFpTlFbITI5WTVjKlpWSEYmfFcrPy5E'@; put 'MXA8V19vcik3VyVWRiZDMWw+R3pCQmBvUGU6Pj4/cGxiJSMxPFtlfk5gKyNNRlVKeTQ0JUhtdzN1Rj5OQ08wPHpXTjVka1ksciNESmFfQCxwYlYkdE0jPn14VnRoaFpIT1hbPjBKYVJ3XWxtSTpkflV0W2l6Ly9iVFhJN0s8Xko+eXo7Y1UhKTV8V2BtQTVAS30jYnhzXXlfdjIoRG0xd2RpOmtL'@; put 'Lyo6eikjancvX0sjO0xYbl8jLlYlb2pDJE47P1lZUWx7IXoybD4pY3hhYmtbSSlRWU98UEVdSjBYKERIU2l3LFVtMyt0QHhnKWMpJWAjcD1WQlRpQVVQWHRSWjQ/enYofilYQSpFY3h0djdjaFhPInV2OCpIMEpWO2FZL28lQVlYTGg/dFIhNUdYfjQ6JGFDTCwqaH0pPS5mTWdtJmA6Ryh8YTNs'@; put 'JXN2Jjl7fHF5YHloV2FNdW4+In1pTU9FPCkpcH5pK18ydSp7QDQxITJmMFZFTltFdFcpREhUWFtKWGN2MWtVJVpsamV4PzBjdzk4WXhabDJeO3xvRSE0aHxgR106NVg5UjtIMXRFd0hoRnZ+WypFUT02YFVIckJZP2NdMk97O3tRbkc0RzAodFBTaTNQclhBZkB0JUYhQVh4SHN6WTRuMUVyIzlN'@; put 'W0FeWChzMSp6TDFDa3RVeUN1P1dvfkxxKC5EUk9wKkpyeXA8V18qTDdbPHM7WVVTMlA+fjxrS0VBJW8mWG5rRXVlMlFHfFcmfUpvJlApMlA6XTtmOit1dzg0eXZNMCxHQEVuPWZ2JSREUmcuMG9HbTU7MSY2ZHJNcF0jPCU+JTNWcGo8aFg0VVo1MmhweV8mLy94RClla0BrSlAjIjRgIz8pKylA'@; put 'Z0c8cmtkNzJdXjUucU5aIUs+SzM2Ui5DXkRMfWJhUVNDT156U2lYTHJzNjQ5Nl9NbWEuZiJWdk5UajBpd3k+KyJPWypzdXZffU0iLnM+S0UkYFNLIWRDVUVBKSReJDRYR0cwP3xLWml1KnQoZCF0MTxkTUpWd1JATCJZUFgpQE9fYChGRXpFLi4yPEcwcUN+KXpzfjRsPzVfbUdwUWB2aCZsLEJV'@; put 'UV1DLlp2KCNMWDMpVzd+Q0k1SCJrNUYxfkpQVzkxSitYN1p5OWZOU1J4cmM9VyR6Zn1GQW5WIlgxTkAzWDdpSGp8MVRgRVtYak8jRnVsJCRPJHJpU0lsQypXOFl6My83SytyQjw8dnQmRlNZJjBjfElrQlQ6QlFGSTl7XSNwRWUxUy85RUBrUlUoYS4xUzorKztbXThRdDxCLnFUZTQlYDZhNGB8'@; put 'KyZ7TWQ/U3pMRmB+NzR1UXdrfkUoQjYobGcwb0l2Mys2eU5WT1l7KHtORTtmRENicHVTcj9VJV9PYDhaNXUkVnkybT1xcjhmZzg4cHF0O21LQXlCOlgmNlp+YGZvJG4iOllLW2tOJEJDSz1CZ1Y7Mz1taDEkKG5oSEpTQDJgbXY/cDhgW1F6RF5hOnxiVUY7KXIpfGRHbk8pe11fTjdaKnx1dyR9'@; put 'O3pxLCF9ODc1c2RkJmZoeyNSU35AeTJxMGdqcTFDY0xMUTVLVVEjSVMoJmt4Mmk3NTE1NW1lW3ZpKixAflRJRTl7WCsiRWZSayQ1NSJFMmNbSiFpOk94cl4vd2NRSX01c2ZXIytRcVpuUH5yWVV2ektQbDgiPio6VEs/JmRgfUxQe3ZMLFQ1cnVFVjN9WndqazhYRU8/OVMpcihvNSxFZ0B3em4y'@; put 'OUEwb3F4SHEpI2l1bmkvaFQoSFIpZjhGL0FpLy4jaXRuP3lZZVlFeXpsZzRJRElWeF4xNE9dQzBYXz4saHpEZzl6ZFh2cXF4SG4pPC5TNVlqcXF4SGspe3QvJDFQM2VDTkhQQCl1KVB1JkJpeGxrKVpyLihIOmhhRlM/WmpBQ1ElYmxWUjVqcEdCSFBqU2RMSDRHTjdpS1QsMWc9YzApLGE/K1B0'@; put 'MEtiKWkzQUVOekcwLGV1dyI5YkZvZG5CI2MoNWpQWSpHYUhCKExfMi9aQ3RIYSw5T0JvfH4wUlJTKDhYTXY0ImNlcF9kZmgsY1J5OUA/ez17fCJlLE9DS04qNChyUCl3cy9nWWYmcEc1OyxBM0cyaHJINyksV1opazhEWncqPz56OSR0aDwoXl1UMDlyflpINF1CT3AkUj9tOXV6OG4hfXl9Pylo'@; put 'N0UwP29hUyJ8dj90RFZpY3FmPGBfezg5MFZpaF05fUIsb3EzPjFXTyNMTXpWMC8kJGVzIjVFWTN6O188TksuSXJVaCJJOkZmdTksNVlwW0AjdGlnJWZ8TkVPX31Jck1+TnNbcjE6Mmo0Lz5HT0pUZixxM2N+YkEhdT1Hbj44XlNfRVIqd2EsaG56NCNPMUFjUl5YTjg5NDQ0ZnQvWFpITjM4VF1G'@; put 'KS94OUgxIVovfSE0K0o+KFtEMXg6TCgySXBpfDtINVVjW0U2OV8jaF10SHIhbX5USy5ER2pZUTBZVWxxRF8hYkNOdDtPcT9TNm03JX0pKGdJPnQ+bkQvUThPYGQjLzZrbyllRVEoKHhGZiJGd28rS3tYUzxHX0F1UiEwWCVfa2JRcD9EaHYubEJJOlk+eWRdcVNxQCgqZ0k1dnh5PDBKPlRuM3dP'@; put 'dltMVDdJaGx7VWc6cGcxaFNeXSgpMFVeTCU1MTgjbkprVkp9ViRMMzJCTV5wcVREWVslQUo7KmghKk1yKF47R3cyPThIfFUzNjhPMGJpcU59WkRbdHwlSG1+YVc4eVd2R3dAWGFFMClfTU5ELGMqdCtCWEhQfGV7U14+ZHM4VGU6JStbd2MwOUQwW3c3cnwuTjtWe3huTzBbLyIzM2pxMl8wV2kr'@; put 'OEYldD1BQVRIQ0dbP3ZMW1B1UnBLN3hMbzJ4XTw2JHExJjojNl9FOHUwV2cublYzcTM5cSV8XitiLlUlV25mLyxpS3JoMTpRQVhDL3Q3Xn1VPXxiPUllSmp2RDhXUm1XNEZSVXA7Sn44ZXoqaEs/JjRTbE1MUS51OzNHXkZeZWh0dG9uNHcsLjtHQWFjei88PV9gYX1dQnUjdylpe0JCNndEb1op'@; put 'QChPbTU3dTszcEplXSF2QEJoRE5KdXtvUS56ZVI1N2N8SHxdXnImbTA1Ol1uYnd0YTwrWUh7VXUxJk85e3dYZUVTO25EVFNLLDUpWGRmJkdsP3kiR2YhXzR6LiE/eGRmLiJPWUpKSH0xay47R3pzSVNfXjs6cEdQe2xEfE1CPG4haUgifH43M3FsKFI+TEk+JikiJFtCfVUuSShyWE0udkdCOzxN'@; put 'VzY7aV5FZFhrIXgrditvLlQjZnduRkxHIlVVLFhpa0k3MVN9NDxyMiRRfV1XM0gmYiVhWFslQENkfVVCZz8lKXAlaD1afWlJVXZpTzxbaTR3ZzJLITtHJjcrOjxvZDVORmJYUm8zbWs8ekNOcltfTkVffjVTNGoxNjJNc14pSnYuT3NxWEVZWShbOHVIejw9Y0RhVnkmWjk0Jnd1RT12aT5vR1s7'@; put 'PHVaLHI/REIzYkBLTUVNX1s3eHssT2B5L1NdUjR6PEU1KiloV0tKe0tVTUdFXz9AZ1tKOWJdJEEuMi5nYit6fG8saXwuN2l7I24mak0xKiJKYTgxbkFvY3s6KWZJcHlIY3FTZDo7Vzk5TmIrUmg0YDNDT1Ixb2BLaVssKVZFSDMsUkBfNEp3PyJPSzo8TXNOS3BrYU0uOXRVXlNGMFQ+b2tTc3dK'@; put 'ZCZjXmUpN2A9TW1bSkoob3hHTFt4YG9HMWdxMCsyO10ueCFqeWR9RnZpNnFfcCxlS01uZ1ZZVnVZN3dLbnM7XkFlSmtzaW9wemk4O3YldFRPWyY8W0Y0fnZkeDJMMS9uQFhgKTQ5WzNRPWRINjp2fVRUUWhsU05Ud25Ce35KZ3FeYEk8OHhiLiozXzMjbTlQP0tebjBKSDojInV4STpuaXJvdlA/'@; put 'S1lTKFZhMnJpUXhXaX5nQlBKfWpodn1FOSlfcWQkTyMjJlI3cndlSmtzTmJ8SHlNLF5QflQlT0hkQzY2WDZ4eG1dJFE1alZuW1hdcy5ZZy9QWmJoaSslPmdvOWY/OD9BZXZvUnxZMXxiN24mKUVgN216WmBXNyF3MFhieypWZmc5S2Y1MU9rcUZIZHI+LnVGZXEkdVRlcWM5d3g/dlllTypZZ3s4'@; put 'JmBlSTxjWWdIMTJOeH5seUxnYXV4X2xAfkRZdVlKbykyejJTJHVCZVJNbkpSPzpyQG92UlB+eyZxWHFlNyFUO35hXTp3N0ZsN1BvOEwvLzNvTCh6OSEqZWtQJExwM2w4WlJZZz1qZHYvRkEmMHQubkFNQC4wYDluXlR2diRXcyRtTkNMNDRqb0xtJkA8fms+eXJUXywmS3xrPnlyVF9ac3YreCxB'@; put 'bCZJXjdbYj8pZDVrYnFJLHF6VGwiQGI1K1QuKT03Nk08eCwiJSkjLD16MEQ4bGYlOGdlWT0uMjBXZCZPUTA1UTJyZj9lRzwiT1tgKjZ1WkklZF4jK19Wc0RMTz57YTZ5NTVXWD9HY2YrPzJUWSUkaHlFcF8pI24xcExFa3QwczI0LDFAJXgheCJ1Ml91QkY8MS5GKXxVKChWQzpveV9GXz9kWmRG'@; put 'Jk4sfGNGdVJbeXRiRGo2TX5UP0d7V04lUW8+eVE5eU1FYG1yT1RSK0Ake0kwd0RDX1MjQFcpMWpkTT5nSSpKdz5YWjJQLGd5KlUuemxEX0tNS3MvRWk1UHoycDYvPD4hSi9IJFk5WGpofCI7LCxbK1IhRWZLMFBdWXh0a1l1Yl9eM1dVQVM5Kl1EUC9ybzhfb1ROTilkUkdPVjp7WDFMZVJWfSxA'@; put 'STkyMVNJa0pAJGVKUHg6VCF2WEt1YTpGJnQ/Y0x3PztDRyEzV11PUTJSKzE6R0RWLmx5SUJPS19DRyE2OThrJDNjKnNLbDxvd1lVImR+dmtyUDNsIWFwdWA+X1I2T1U1JUl8Q0M2YEhNSWlNbThDdlJ6MGNYMl47aUtbJUZfcj11cHxWSk1UIXxXfD9QfmZtNDNLPENBYU8jKDBxaXdmYkMoOCRI'@; put 'QG5rZSU1diVgUlJ9dXtXP3RTKGUidTAlSGxXSn5OYTMxUy53K0A6d34ySHN7MntmJUl8cjpPcXVPJVFtSGAiVHJ4UExQPk96empLTFNtJHNaYG95V20rVWRDTjMiJStuLlZmfiQ/azA1OjJ6LjtbVT1FNF1YNWp8az5PI2ZveGtTTkhgNWVsX0I8ZFVDdjZZXV1DdyspMV9AZXcvT0tue0Q1Zmkj'@; put 'K3lOP3t8I3lKQipIZDp8Nz59PHQ3fih5N3hrfi5eZyUwR196ZENuPXx+NGVAImteSzRdQiMvYDIvIyI2YkJ4LnNGKDZlK04hNHdaIU1DNVMySGElfGJjTXw6OSpuO1ZIfUZsM0tYbHpucVJkIjZxWEppc3dYYS5KUiNAaWNDcTVtVldJcGt1M3oyPFpAMDg0ViI7fUhXbzssVSNoLD02Rkt+cl1d'@; put 'NT49Vm5GVU1fYnFgfShNJS8kOWkrMWVhRyUoIX50SWpFN11da2x3OXBpJF4kVFtNZHwsfWswL0MkVVY5KFdqfjUkcjYxfmpiMmgrK1RmUiJUJTY2ajAjNX07TDpqfDlnbSFrYEFrfkh5fEQ1NiRsKnJ3cSJMKzpJZFdiNHdFWmBBNkZKd0BVdnJzVXZVaFtTXl10NzQpVyhQZCRXejZCPjFiOUJT'@; put 'SmBeK0A+VnslWlV+NCZCbT9fck9fMUJWM15neEBtWkNGOEBdZGNKfiFvZ1teKkAyZWReclJKVjN1RFlCUk8udnF4d0ouJnt1Xn1AXk4lIipDPmUlWV5+WCUkUjVxOHZPaTY2fU4jMj5qaysjWTVOVk4wQjN7UyVmOSw8K1txMm4/P0BaV0Rka3FgL0F0VzE4QChwfGJGcCh8eGVXcWZ6XyZsaWNy'@; put 'Xl8pQmd2P3lLLGkoJFlpbGpfYD9hKzUkV0pRXWc4RGZ+WyNvSzhBKjg5P3gpLzZGdyFqY3Q7eUUzbSxSeTt6djBYZHlhZDdnM1g8bTlYLFI+PX5YSElRPV5MYC5yO3IhXTFqa14xST17T35jZHdTVWc5ZTFwck9pbnxJLHpvKnUxcFsqYWksJk9pNU5sRGJAT25QanteOTVOMEliYyRSMnZNWzhe'@; put 'cyZuKUY0KktVJiVNP2hDLD9CZSVzW24mYEI7MFRFbEooLDtvY0BYZnZeU29zZWRyVkxJPjd5OWdYJHFiOSspIVsjPXsuY3BAKlR6LGBsWyVzQm5GaE9JOjl1WzgyRFJvKkxseDBdbU8pUyF7PV87TlEyVlU6ViVTMFohJTRmNFd7WVJuW3FUZn5jJSFmInJ5bEtYKUl5RTdtcDBKNHVUeT1tOFou'@; put 'JkRRcnFmO3t9SkhjQHkxXl9EQmtUaTQheiZ3WVckIX1hJFR7QG08PVJ6bEUkQlo8ISxAaDYmZDBrczkwWVRsZCIsSTNpTFhzWDpoP1QrRTZyKz1NPXQyMi9EMDJrRE8hbjdhckZlI0MhNz5ifDYqVCFgTiNbJW5aKUoiZz9USnxkTik9c3VlOGhyQGptS3ojRkBPY1NSUD1ke2o7Ql4vKUNMIlRK'@; put 'SjBRI2p4RyojIkwoM3FEdTN7RjFzXjJINHM3JHcwRl07cX4/fHZNa3xMNypde1hSaSZINT9iXjRJZlBRQDR1ZltAdEZIMWQ5YGBXVn1OY1c+Ikc3aEpvVzQ0NDNWKyVwciNiXX1rSjFXbEZsSDxiNyM+RGFfXU1udEE2K1Z2QHYuLjlBM0FsYEdJXX5tMHtEcihaP3p5ITtJd1FSJnkyS3lWR3lj'@; put 'd0dwP0dOeFFdR3tXUFtXMHBGMU9icWszdkQ1YltkalsyIW84OVRRalFMeCsqMVshbmZCOEFlTGEodmIwTyY+MnVEQEdHRiVwOUtjND5iOi5JLz4zMzNweUZaLlQ4JXR6NWBhIVtReGZ3R3A/R054UWRiKkIzMnFpN1U8PG9WMldrNGFfd19rd10sc1Z0S1d5bSY7KUZNbzJSbkI+dT81OXhLOU9t'@; put 'QkRXeHBkOmEuSFU+PV82MnVxbGEySXl6diliSjZpIWh+dmM8cytDO21TUXREdSNUO111SlE1MmghJFI8dmc+O0BVREoufH1fIzp6dzFzSkg+cWJJaWtKXmM8ST1nels8IUFlRlFINS9lRjhxdGNxOHpIS3pOXyE9OWlAZ3o+O0VJIWkzV10yUmArLl1CIXFRaDtGP14uImJnY1Y0PXF9JWxAT0xK'@; put 'SD4xMmglc1Elc19wTnpJeDNYcmV4ZX0pQF0+P2tHU0skXUVSYUdoXmZkP1MpIyY7Tlk1Tmk4NHBmYlIqNUs2IX5TViJDWH06MGZFOCtAOGdCOG9lQjh4YnxZT1Q2OjdeWyF4VTVnUVBoYUZ5KylUO0U8akopell0ZTw4ak5eUWUmJXBmbzkmOzBebnAxb25zRHUwfGhjJDRnUTxFdVA7MXJvLz1Y'@; put 'YncwckAiSW1bbThhWz1YWltXeGNlSzMlMjl0P2VDRVQ5KkR1KW5mSl5ucCR6WDFpcUd3MSVhJTt3eGxKX0UzXSsiUkpyNDN+b1NUY2paeXFITyZVVWc4PEA2NDglXjtoOG91MWc6WiRsT0Ndb1lKTT5QVmg/ZzdNU01NVlN5UGY1MC95eyxxPS4xVnFhW212enNfe3xUYGBgMlBtWF9wWnBxN0tl'@; put 'cG8+PWlbfUdzSWU9Wns7Yl9AOl14O2V5fSVZVUl8d2c7cGNbZWFmOUslSG1yWmopPFlObWYqMjp0QFFeMTIhIXc5VCpOailEO3RkNTxwcVJdJVFTKFAmLzZ6czdrYEd5PTBPU15AJTcqY0NwJCshV3A2ZlYmaktkaTsoamA/cEojOiFrPTBZaVU2RnlUU0dUITA/W1MlPExaYjttdjJGNWgsT0Z6'@; put 'R2pKeXRZey4pYW05LFlvdlI3R00sJnFjQF8wKC8xWCQ/NkwkU29XO3prNTdVdEgxbHQzRXlQOH03IXFRaCNafEA4Izk9PSo+WlAxcVhWZ2ZgeW8mYnFoZz1Eai5VXTJxfEdGR2w/WX10SGxAWS9TWGpPRClEVToveC5beipLMkdUZ3EzVjlGT0ZeYzUsNDM6SyZnYVZYYj0oblBwYSteNTIkOi54'@; put 'RmRnVkF+LztFI0NlKTwrQ358PHp9ZGM+TFNVKXglQ19NZSIlYF1ibUUvaChGK24/KFslb2VqJDFzJTsrKV0sQnhEXlojVnRedUNtbWY2eVVCOEFle2FWWyFGKV8qYTsvS2g6VW51MHxUYDBvIWV6QzA5ZHNiKyx9Nz0kOUJJOT5JeDNAfGxAP2gmaWk6OERbeDtHI2RxR21sYjQoW2xwWlBjbl0o'@; put 'bW1mUzhefT9jLjhWTiw5RyxrcS5PcEkoRUclJDAvZXRdMEF0PVVGIVg8Q1lCcCRZZlJtTUNTREl+b1UldXhVXSReRi9NLHZtWGVTRyg5QHk8eXs9KVguZml8QWVVZzhsMTIjaEhocVVKUHMqblZGeSE5Tjk3Y15beHNfaCVEMl9Tek9DMUZ+dC9zNWo2cmlGUV13N2ZVTyx+TngjfHlGJjprQiVw'@; put 'NHllai56dkxgbztaLHZHVmUjJTNhTSZdW2JDJCh6MHddfSgjRztucFFYeD5VUGtZKVdkYzs1U1tIN0N3Y1tGR3FsSU8weWVqIkZmUVdxOT15RCVWfU06cEFCR1FhPzFCNVNueEUrJE5XI3RaeiQmT2kmPGxzM1lSM3VgS3N2QTxaWztCdXducGZaSXZaNy5abnxQV1JGfHFNQDVlK0RQTnxPdjBy'@; put 'MHZEUiQrQ0hLYmV6eCVeK1R7dkozSVBvVi5xZ1V4Y11JUTIlc1swUmJ7azU2XU5zMjlyV31KT0RNaFBxS0JubnNLNl0kPGhCWUY8QDVyVz96czhndGAxRF42aWx1JiUjIl9WP1o1SHtHfDRmY2ojRmdqQl1rIV9DVilfZF1sKSxDUDA1M0MmKVBnT3shSEgjdF1RMyRGaCU5bCxpTFRwVGlabiNn'@; put 'PltWRD1kQjtmXSFkMmQoRy9WJl1GNTE2TEN6OE9PZU1uI0F5SElscjNJdE5zKkVtXyp4PkdJbEt5UUMjRXcxeTojPk10ZFM1VT1GWzZ7L2s2TCNkQm99dyljcjZSfm5xalteZU1yJXRIS0NFNlpfQEtJUm1QdFpWZ1A6USlPIW9AJHFkRyhAR3JLOmt7Snh3V0c8ZHVSeUNRY1EoaT8yLjdWWFIv'@; put 'OHBre3wyJi9FS25raTt4WWZbV3JsVjNeJFpGQHA+TGpAIX1gOW1oN0xnSz8qSTJlR3pjPSYwYWdvME1gVX0pKkBUNG17NTI1UFt5RXNpSkx2S243QXYyVl5lMlhIJnVfJWd8TS4qLigpd1YsYD5sN1Z5UW8vO2QqTCE+UFs1enJ3VWxlWj1gNzBaKSkrT2lHM1FefHkjPkE4dFUyZkNtazpnMFtm'@; put 'b3hdZlVOMk5NImJ5N0YqN3hpQj4vamM6LCk3Xz1OO1ZTWjxAeVUmT2E7bmAiWUdKWXJpWFF3YShvPkd8JjolM3tsflsmdiF6WGJ8VjN1Vm9oSClSZm1kRF8rT3h8YktrWyQ3czJfRFNoTUxRWyFdcDNUdHM5R3c/ZiNeM106V0BSRGRjOCNZQEp6V1g8NERNPkk5NzxddExYYTF8WiM7S2FZNU82'@; put 'TSt4OjdtRUBkM213b2ZoPFg/OWo3NDJ4aDYxaS5mb0dLeTxaWEp4ZkEsa1EiYWpzNn1gdld3NT56SE4vZXgwRCUiaVQiPE1qTDNWQCQ8Vzx3RV8uan1RY1s3JV5YXVVyO3QuW1BgaitAJC5nV1UxREBGQEptczpTVSNsPW0/N21BIXxlZ0tzQiYoT3pPVklkZjo6KSE0bDFJOnNJPVA0QnF7cmw4'@; put 'aFtnWGZyc2gvbjVySW5PakUpZFJub2twJiwzPmdoL3RFPDV4cUElXi9GI0k2OjcxV1ouKXg+WEFIdSJLPnY1emI9TEB8LyRMdWsxI1ZdZGRVRXpONlE4RSpUIiFJQkM6bmpZQkJsakIwXyhhSE02VUI1fVcxIi5lU3pOVjFsaylLaE9CKlkyX25pcTA8JTxPcCosc3VkJEBoYzRwcXt5el1sMj81'@; put 'Rm5wZjQ/YUVNfWNGImdgYGNZamZraWBSWEclbD5pMERUbTpSM2olLyUkKXJtNyhze2FOMEZENWdEJmROJShTIW5VIWZVY0pBVEI0eHVOfjosYHlhaXNdfkxHPylAdVB8aDNnLHR+Y3RqPHswSUReKDtaM0dmTkx1bVVdKjhbeit7KF8hdVR2I05rY1RKK3tVSl5adk0xRWhoRz9AXUcwWSkoWktp'@; put 'KWQyZkZCMVdFPGNpdFNAKiJrTkIuJHhiRDFZZ2N8IyNQZEdtXlpHfGp6JCwxelZZWmNSOypfezVfPyhfMWMqPU1dIV11JCVdZSQhejlVWm1Ge09PbERuTXRNMnU6W0hLSD4ydUZyU3coQkZISSFqXXI8LilYMWM5I2Q9JndvNmhCKF0wPz1DbWh6TGlJUkssZldZMzBLYDZdKTspXjM6VVQ3YWpF'@; put 'aWU6R3hhMlUmKE8lMH1hRFM+bChmSkQ3Ol04M1F9XkJ8Yj5nXXlKMyNCTmlvU2gjPHY3R0YhTilPWm1ibVNed1oiSWA7OU58fFlLSEcwfDh7Q05QJHJLUVpnb2diQHlXeWZqXjFubyZSVDJtcnIrdiNeVXkwZGRuUUZYSWouWlUqSjZ9czkwS096dkhjRV9TPz1RSXAmb3B1bUdxcWFeMl9LPVlL'@; put 'XigkU08hcnk2PDhvfmdsOjtpaXp8OG1aQDgrW2AsfGZmYyNMVklkan15Ty57KiZNIkBmRGhUOz9eTWNAKGxDKXdZRlJ+N2ElWjUpSksudUl+MXw3Ky9DXztoOjJ1VGJtJGFTOFEoajddRTFaKHV7Uzg0KGhuWnhGQ217RT9ARm80TmBoMm5NMFRTanlybV5OW2AyZj5TaCZNdlN1QVR2ImxKRzo6'@; put 'aV1CJXVzYD8pVy42TnYyOmVBPSJfczRVejRyekcqTWJiJVNZYTM1Q25CdDQ2XkssNjZiYyN5Yy9HVWRoJToyXk1WOWguTjReUXRzSFUpKS5uWjkzTlM3Yi5AOmwxJEVVYmd8cVpPP2FGQEx1RmY8WHxeXyZxeFlCMlo1TWY9Jjs2YGoqOnV+LFs6U0hYRjNtRHZ7XShlWWt4L3F8NUB9L1YwalFj'@; put 'U0UoNWxvcHNOMFA6OWpxKTQzXiY7RCs1PCEsSWw/UDQjcGJ5cWRWUD8hO15zWVVaUl4pW1ZCKGBuVSVKTFRyJjk0K0tKLl5Tdl0xM1I+aTAjV3BvbEo5L3ZqdTEzJDFFdiVSJkYwKUZ4SClJP0pANEUsITlPPVFye0xgTyRgNlE6cDkwL1cxKzE9Z05xNk48cF1RVl5wTjNteW4rQkZfL14zMj9F'@; put 'TWxGYEReIUNlYCRLcE07OVt7VUJwenlYUndVKjF3UkgrViU+XVlJIVp0OW5VUUVPWGAwI1lfJlZZeEIldWFKJWc0dlcuYT4xMmQsfVgiNjRTQW13e0tJZDA0dywxbyReS2t2d25qalhpKWR7QiJ8PWJrazdGPzxFPko+YH0xVj9iNzVXNCs5M2slVUFOYTkzfHp5dz0lZ1t2MXRjaUdBVy9aJnFL'@; put 'ZykiSW4sPVQxQlgrcC9WanpYXnZYaUpBUXJMU15YV2MqLFZCRUNQRHN5bEE7T0osZEpDQ2JmYmMoMzJDfnt1Y19zK0NxdDtQRG0yPHg0R3REZkk8Zm0wRXBQTWo5OjQsIlRjbzVXaiMqVnclSzJuLmo5NF5xQFMqZ19sayYlPyElQWolTStBK3FUZEEofHxQfk5DOzdAZl9aMyIwbiRRWF1OX34j'@; put 'VlZ3LzNdN0JlSXxvJlNZITxlI0ljIjlAYkUiWzZtW25bXkxhfXxQYHI8LFFSQiRQM2FCLCxYfGhwP19GeihYLGZKKiljRERodX1UMiwyPDtlQSNEOTB1d0dZckdJIkc0eEVzXXJxRmlaa0FYKXZvOD1ycnAlWjlFdnxuNHV8JFtHXzNhTV5gNUxHNU9IJnw0KCZnbzlfdmpdZE4yWTBRIjREWWtP'@; put 'TFlOMVFJN2E4Sm4kOGtta0cxbFNkLnE3WT5tOkdfLGB8LlguRnkkZSlbd2FaRF8rWzRxRT0yZFhqQCxPVjsiPSI7OzNlK2IpY3s3ZCsrbEsiNEliKy59ZFBNOUtVV31YV3l+Nis0SWJxY2peUShjN3VHXih1STpiZkRbS2RePEk1S04+bXBCVjUzdnIuTHRkMzZGL2lEITlLPD1vLDtIWEwyOlcm'@; put 'fnBAK08idmpaLGU6ZDdoUCRLdHFFRSk/Zz4zTkZ9XjZZUVpNW0FoJDNheUV0aHZYN2ZXWTFiRlJ0OVUhan53Vn5vOnRjUEBIeSI2byYsKTpDV0Z8QD0oK0lacmpCeW9jVTxtK3R5RUQsckM+MmtfIX1leHprc2A3SUo/YzhvamxrPEE1YH1ZVF1aKmQpWHBhRihkNkNQQUY6VlNFOkFITVUzOXp4'@; put 'fUpwMVEpZk09KUp4JEM6YkRDbF4pNkw6ZFRuJmYzJlZQX3R9cntjQDgxUFhuP3ooK3lxa1oqclAyTCRuJV98Snx6dyhkUyNURHkyKWBXNVluZ3VXU2wxUkxGUEMhcUgzZi96Km1xfT8lKmlweU50bVtbKFhGKVBoQTdDS2VFZWAoI3MrYlZJYXcuNFIjUl9aMURhN2xWVDQsUGU6TklRQEZ3Vixp'@; put 'ekhQezBuYWw6VjNzOzFYSzwlJDp2dnZpYl9KeXlqQDNxKX1jUjtaR3Q/P2w/TGJrcU1Gcl9MNGJWW1YkQEo2JDt1Oy8wQTBucjhVMTlGYjMsPDBuejtaR3Q5Vj5QbmxDVHRnKmwwLGIvLHBfM3U7OHI7KjUyc1NrT2pNSS9jU3ReRCVITlgmdHJ8fHwjaHV1b0pbKSxpcFNOVWh+THs2alJFd1Zo'@; put 'ZjpPeDZEJUF8VW89emo4WE49WnQzJnMsakg/JDg9Q014akZSN1RMSyM7PChoentzKjBgWDBNbzsvRiR8RU9NOktHLnpobGt4RUBxU2hdfVRuYypKTjNteSgoUmxgM2hpLmN8ZDFLX0w7OiJLI3gvcmBhV35eSmo/Z1F2NVlIc3hHXW1dI1NTIX5bRzZZWTZgYyYhbHUhRlpYR044aEpsTEFifi9y'@; put 'ZVZmcitRTEgzRTI8LkY2QHVVQEtaNXhLTDVMSWoqMS5KVld1dyYqVlUzKzkrSGo/P2BmcW9EaSRLVHdeWGZBaXgmQjlBZSJhTHRHLm44Q3xVVGN+SlF7TCppWjI5L0pkeGBTazByaz5YX15ITG9QYSNQWClnQTN1RiNaJVdLJVZWKUdkUnR6cm8sOkZieDFXSFh4bUl9dT8hYEZoIzo1ZjpORSMs'@; put 'dT1Hez0waSVqWHlIZS5JZWwlQHZWJFUuYDFMWm5+UHtNRTdFJVYhO1ssbThVVUo/KFImRX5kJFo/dmFUaGV3YCNgTVkocyQvfCVLfGs+cGU5U2Q1ajZ4UF5VfS8vQDR+YjFoJm88eXIzTyI9QmVQZWI+LCkjLj0jIylzK1JlT0d1UX15QWhHJVBfei9IVFJzLF59X01uPSMud0xmMzh7R3pOPX0u'@; put 'MyJkXyNyeEJhZUh9X3FPVG17SV45aCN0N3ljNCMsK3NTbWloOmkqMWd9MzlQQE5ZSm0wPXFsd2N9STNsMlB1b3AvX18jdk9keWVGc2pfXillRzFXX0Fxd1BdP2NiPTBEMFhgcUlYUkVwdGhUeF8saVswNDtvNTlTbyIxfUxJalkyfUxoKWo8eS94UWxAJUFXMW9rbyY3O35ZYU4kekVvNjVMbypv'@; put 'SGF9THtaLyhAdD0/IjF8THtaSjM6a114flR8TDZ0PT9MU01VZTZBLkpLaz9rP34mI3RpWDxdX2tbdipOe1pnS0dYbD9OWGZ4NGksRytHKTx1ZiU0fntzWUAla0lXM1hCZDN0R2teeHcxM1M+RD5XQDhLLDZ7MzN3P301PXlfTWhfd21Da3pxUTdvITY1QHRmYjJjdXhufXQqeTN8eXoydmwrRDw4'@; put 'TT10LDA0SVBEUXdWYz1UXiZgKXFxW3RXMjJxPiRqKDkwPmNTdyUxd0whaVl1SiV4d3o0JEloalpWYC51YER7JF98VFNgWkBRMDFgOWV4NjhDRCtRMHpiV19aM3x7U2svNTNKOEN5LD87clU/PyZaVSFOK01WMUpzMFFOY0YkKz4/STNVd3Y/LjMwdk9aVmcxWF09YEZ8IVVNIkYvI0V6Oyp8R0NH'@; put 'Pj8vVz8sVX1zY14vZnUreV9oS0ZreCYrM2UienlnYDI4SSJOTS5ZKkhqMzlkeChZayt9OThZayt9OSljZ0s/clVLR1hVWGt6UFhwMCRVW1J3d21bdDVKZEY3NzshfmV4eEMveV9uMyssUnlnZjBfXygpQkFwTD4oSkw5K1lPMWdmMDl8N3h9Nl0vLy9idiJFNypjKXAvPlp3RzJxVlZ0Ym5bP3oz'@; put 'OXh6WXc3O2Nmd0dsP0olPVQrWl9NUElxN2g3UXpAdSUzIlVkVDpPZWQhQCxTIW1AKzB4dGJPKnZibGtFbGxWTjA4S2FPZVZpc0dKWUooTT9AWVBoYV8rPFZWY3RaXXxKR1MvY2JGMG5naVJbXiVaW19OJTgoYWpGMDN3PytNRGVkQjhBOEE4ampFKStnaTA8VCN3SyFSSSJoU31TWzVTe2I0NDRU'@; put 'ezdMaSF3M1YwSUFhVGd4UyhuXW9sUFAlRTwhQyxHWm9ZWFdSZHU0Z1Fvc243KDdySSt4IkleRDM4Qn01QypFWHh+M2BBNiFbKH5TIWQuQTgqNHhTUG5wRG5LRlljR301Til+RnhUbz1KWCxuQW1fXV1rVD5wNjFgUjVpXyhGIWtMPXAvWlFwSXAlJlNJTUMyKjM9c0wra21zTj4hQFdlPCNNX2ND'@; put 'bUhbcXshQ3QuODQlV0JUbml4Xj9xYHl+YkUjVTREd3w+KzNdJnAla2JqKDlhfGJlXypuXmQyOCVzNERVMlIxJn1wc31uPT9iJFhtKHhpVm5renFjRW0rMkg2MWplQVBLLCVNM3VqY311QWU4Njwha1lNWkFHZjwsM25ZdXVIUEl1JCphUjVOeEhQbCRrRnJtUzt3X3dBVEo4MnEka2RRM3c/KTBx'@; put 'WzErZG0kfW1BI0tvTHdJaFJPZ2MyZlszVStsN0M9SjtGLilqelM/MCZ2QFpBKCx4NXROYm4xOTJPNiRAJVNWa0I4PGl6PHYlQGA7MEY8ayRka357bjk+Z0FSfk5xLGMsdGYjOVB1dVJIJEVEOm1PeEIqVUsvIzYvWm9PKTJ1STFzWyJ3bUZEcCs0WGI0NlR9fG5FV0wyfmtiXkF7JiEyWlhCQHtJ'@; put 'ZEMwJXIrR0hCcH0pImE9Pyl4T3pPJThgMWwkc3QuNn11KGU8OFtAS3d8bilNM2tyanBWdk1nKTdeME8kL3hZdmFdelIpaChzUVdjWjsmfHFFQWFtMXwuRko+ZztLNS5XPU1tNjYoRzhPPV5VZkl6PmNSNHw/OFlCZlJ4cUh7VTl7dlpveGdTfG40dntaNW9CX2p4WUVZIS91bXN+dWlYczE1IUlL'@; put 'OXooWSgqaVBGW3YjMnw5UUwrWyZpZmwjOTsjWXREN0tNMS5yaHopKitYdEQ4M0loL3IpNmhaPmYpb1FvRHtjUWt4RWdbLmxgPk1sYUVbMSxSYD1raD1BQj5yeFlvfCF3N0BSNkpkImEiNlE/WDB8Yl59TiNRPHAlT0kmMW1wNmI/LDhnbERDbSpIdDE5ISRMdTtfPHYhe0BPS2tHKFlZe3dfeTFU'@; put 'c21qJUhYIURNT0l+ZztGSGVmIT19d1B9ViNzNSQjazVJKSlSR1BwYENQeGxEclhSfVtkbFFeJEd3bSpvYGhFIXVIZ3BJalohaCtJJXFtRHopXURjW3hgcmZ2L0d1YUoxI25wdn1FcUM/UzlDY3tgX1ltcjFSS2lNWSl7InddJDV2dG9BU2lGSTs/MHZdQmpdJkMpRmpDX3UsQ20rKTdGQXtBNUFh'@; put 'cT9qY35CczptRH5YMzloL0owdUZZXUx7cj9gO3hAbnB5TjxDSXBCOEFla3cocDo/bmBZfTFRLlBeb31AT2JFVnkkbFgrQGV3Il5CfGlJVCVHISNlRV5WUXh7RnxiMXkjWTFbQm8yKH5RQThALjk5eng8dT9eK2JMTU8uIVoubDQ6YX0oOWguU3Nya28xfDMhVCFnZkg8TWlPPngsQzU4OFR4byxZ'@; put 'R0tKVVtHbF9YNC9RMjE3LzcvN1tSOjV8NGNIMCR+OkRQR1JjW3pSS3NJOVZoNlNrTlNnLnV2ZklwbmYmUEAwamByUz48RTpSUmptTjs4NldsUWdieEhUY1tRXXkyX0wpJmkobFk7fEh8e2QvRS97Ql4xUW0xc2F+TnouTU16VnVVXyswV3F1QjpId3whbm4mJWleUDNxckozYVs4Z1BUKWttLGl+'@; put 'aSQ4ZUEhPTB6WVN3MjJOPDlsRyQ3b2FjUl02ImU5ZnVpQ0wpZyVQfWZHQnchUV0zT2MzRm0rYyVFa0F7KGtmOSl8YkkjbztZQHNbYF5YKGspK2JaLF4hc3lGMS9lemN9QTV8Rzt6RmhXS2NjU34xb1g7L3QhPm1wZGpMVSs7VylMJXB+O2pjImxKL1BZVWJ3Q0dZaiI3XVVVS2NkNjpeKzN5MFo5'@; put 'K3dHOXs1MVZRKExBUkpzTHBve3hpOUMpUipxI2syNU9LKDNiPHt5SiJnVD9LbCY2b2AhZWElKDk7OjI+ekB8RjBZQmMua1hVXyIlc3RmMig8fCFsOD8qOyZge1h+KHxwRUN3NUlfYV9DPGR6IVYrP0NDdzVvXl4xRTRCLHxRLiVtS3M/MywwY31SMnpAKnhVVX0+SVJGZU4xbmtzZnlFVlAjQGtm'@; put 'K1g0PD1GOTd7TSFNcXVDeUUwaGIrcyRNZ2wsMXg+bWFmVjBRPHxmRlN+KzBJUGhvPmghdiZzPyNfZnNwZ3hKTmdtWmZWITxuMH5AfUIxMTYrVnxdSi45T3A9UDMxJE1NaiUuQ2xdJTp6IUgyfmpWJTY8d2NJLmQuQilIfTNmcnshXTA0WUxbSmo9QEV9NTIuZFVbQzE0SEVKQCQ+QHRYW2VGUFtK'@; put 'YmAuP0xOPH15Xnoxbz52KGUoK3lEI1ZrMlJDLndDR3AlSm1yYDNAR0lha1puU0x5M05Jal5zPDo8Jj10WkJUeHc7M1E+JmhVO05sMSNCfGB6ZFprfU47QTdieEZTendWa0syNj0wSCVXfTNXa0tHTV4ydXVqJmRIMVdNS1teN3hHXnE0R1dzJXNvP0xwZllhM1c8bUthXTkoWmgvRmghZkAiSjBu'@; put 'SzpDVjxURW55KlZZMy5VSVI0OzMhfmNAJCt3Zzt9NDc3KUVkYz5CaTk+UXZ6OyVMdU16dHUuP2IkfT9DMCx7JClVazg2anR+UV1MciJoP1VJZlpnN0pBYSNnd3hiR0I+bUAzYCV2N15DTGxEPExQaGs2VG5OR3pNYX09TkFENSUjPEhQfmhodXIheSJWdj99c1NZYncsJWpjUHVySzNtZnlrWmd0'@; put 'Nkl5S0k6YHVTeDpCTlJocltnX2hVS3xASy8mYHtaZm1vcyQiayQpSjZWVGdXWGJVKVc6ajhRTDY2YkI6VnYhdC9oLltFQHtpdEcmQj5aczI0UiU4RiRMfDhTZ1A1PjdmWSVsfGZNPGgsdS5Adjs5NHFJfUhpQVM5cT8pLjhOLHkufHRNWlVuJkg4Ung8N0wuLzg4aEVRSSFyb09eMDErb08iUD0u'@; put 'T1h4VmFdJHNvdWZCSGQwKWFVRGpnV3psQWt7MEZhIUtONiYpYzUmIz5Oan41O1ZRaT9dNW56SjZibS9gTm8udig3cUtjJjZAM2M2S1pvIkxhQDBxK0cze3xHWk17Mmt0KnI2S3Y1alApWCxkTkVIUnJUbWFBNTgvPC4+LChqYDx8LjMpWS5ea0RrOysjZ2c/XW4wSnJKQDZgWHFrZ0plSFZuWT5p'@; put 'RF5TYWR3Tmske1spVUhMezExRnF7dUBta3w1cWt3USVlcl9LYnEuJnchVDo/JCtBKCZNcVA7OltzKikoe0tJT2hzSnF9bEBMWX5na0lxTjFgUHo7bG5nWE5xKitlcWl7XTxpO31VfXF1aW5EZkI/cVtuO2FXbDdYOHJIODxvYyZuSTleRlElQH5VQD0vSzJrQnwoPiMpd0ZHUGE2YCp1STYhK1c0'@; put 'aCtHWkgwIjEpWi4zOlVsQUxpPDtCX1gyWyxMZ0JfY3tgciZ7NFpCVHs9USZBbmRZc3BCJn17e0hRVDdUKjFsaUhGOywobzQ3UDMkKiEqViNrWUcyWlRxcz10X19qWGg/YWhZUSJnZVhTVjtFMnI7SlJHR21fWUkheC5Cb1E0KDAyTSJOeFYjVHwzT3teWF8rdiFGaU9eZGRPezJ8WTB1TmU5K2I6'@; put 'QkM2N1BwcUF1Wz54W3ZWTElWU0dDXjlSKkopd0w1ZWgrUShkZHUrMng/TVNlZEV9XWg/cjQjaCpUM0RsREY8ZjYwRSJNQUdwOl9EM3FAVlFEbXdPNyQ5ISNUaktlXWhBNUs1NkY/UEhgfi4hfD4ud3Rud3QxMGt6MCJPTj9FZGxQPXtxOCZVKCpWaW4uJStxQ15razshPTJ7VSp7cz9EWioxInR8'@; put 'PmR7Xz06WGxUPkQ0Tld2UEJIanJYXmoqLnghZFRldTFoO2JsfG1rXkxCJm9RI0Iqdl1rbz1AOkArUmtVQiZ3M0lNO1FReWFMclR5Y2ovN1t6U3hnQ2JAanBAMHUzVjBMP1pFTD1WYl9bRmt6cEt3fH1kKDteZzRFMUhdVltvYC5kW0NqQjlwJCl1djJfIVFzanxPYSVeOipbbl9VYUU/KTJTZS9X'@; put 'Xyp5PyQ+THtiJmcvY01DKENmVkpJfEJOTX1BT0N1dUQ6dG9QMEh0NkZSQCFzT1o6OmB4cWsraV46dkd3LnB3MG1Qb29QNkhUZS44UmI5THNTKD0/MFU+anpbWHxBQXVLUlNAV0dhQVF0dyR3Ly9AdyFwL1JeKl9rNkwjQSp2VWljPmFEZ3l0WUIkbVIzcEhmfCtLeVF4XUZUIiJCTE5QdHUvRmFz'@; put 'XzdbM3h7QV9oVSteK0BqPm88P11QeF5nVDg2aGkpNjglLisjOno9ND9NSFBYUEhZSGdkbylsInBfQlNOPE9jZnNhJGddSDRPSkRsQnYoS09DIndEZEx0Wjg0W3RmK1dhW3srQj1KaCx3Tyl4IXFyTDR3L0k9aXErSUFBQUFBQyJnQUQsVjI+UmYoQ3M/OyFhP2M5Sy92YmQwJE5QQShIOC9FcTEo'@; put 'Ll5uWT5CUzowQFRDJV9fIWNCVTBAQjByNW5OI0ZyS0ZmIX1NPW9oRCxTRXxEMWI1IlQ+NSZ+aX5xQmx6JV1oI31TZDVlJisqYXg7Y3MxQldRR2NFdFFAU0A0NFZ7TDJgcmVabX5gJCEwVGFUUCFJJEw9U2FGNXhIXXZJc1BUPy5JQVV8aHdJY1U0Wy5KRGM2V18/VFJ2VHp+YGR8Tk5je3haPDtq'@; put 'JjF0VHBYNSRjJHkhfGlffkRuRzpfMXJXRHRIKXhnQWNFenJ3XlJnTVNwKVc5KCJgNDVPPTcmJTExO2pXLDtfI0guYzNjLGZ9bTIrOF9jOyhKXnp9fHNNPyZdNHVPam9tKjMyTzN8QERffTk/YGMueFl8NlJQbFMzOlZHdmM2bFVCfjtMc3s3OE1iaUFEcmNuI2toeCtkK2BGPVBkPHZ7I2BYWHVl'@; put 'TC5PVyFZLmxxWjJjQGJ1PztHS1NpXzZhaGJFWlRBJk0+UiVCe3hHNnA4VlVDVDo2SDc8RGopfHBqbUNLUX0obmI0eFRrOXR+NHBLO3MyP2xPZmlQL3Z+TjBQJDtrayR1MkRbMHFoRCp2THx2SF51cTZIQC4lKzlpbkZ3ODhqOmhPKkMmbjo0cC84LnFIUCZja1dePWAkM0EjMGtnYGIzcz1lZXhf'@; put 'aXhBa3J4Ij05VkQlaXE9ZGNXW1lbQT1pJU8hY314TDIhLHx8YGQyInxrPCNCN3ljQTtgWGhMIytoKUkkdmNIS15LX1drRWJfK1MpXWdOdmFWcDc0P1A/IS8qdUJlL21lRjZBMGwkV2F3Wyg3fmpFUCsud1c2YzRfK0FWKSxNZ1pZa1Z6NzhhK3BSMlVCZkhpMUBlOSlBNSxRe18hMzNqNF95amM7'@; put 'VkNATDBCNnpHfjtfOFphcF5FRndJfTxmLD1II3F4WlMlPUMob31tKVV9MSUhJFl5MkVuI0M/dmFpWioyMF9hNT8kPHI0ejpPa2hEU1ZbOVFPZCxjNk4pPmY0aXMwek96aShxZFtHUUxfNm1OdHkyKnBuNF53KkJCa2xzRUlxND8uXV5eIjNeUX1CezFZVG0/QyZLTkpLbytme1F2OjIkWkc4JDJ9'@; put 'NmkxVEU9IWl0alspJFhibylsIVEhQ3k6Y3t4KGVRS159Zkc4VH4+I2puJmc5Nj15XmRpUThPZHZeYEt4PTNxRT5NVThOSCR1alc4emsqRz0iWV9sKmhiJDpRT2hdOlBNNXFVYDdQRFouUExSKWtnc0g5MEhOUjM+S2t7cyxCUDdFVFZqZ0wpTXZebExeNUk3SjVqeTlobElNYkc9eFkuMnFnRWkx'@; put 'bjFmfDY9cWhoViFYKDJdNzFPTz43aXZCJW5nND8lcjF4ZmB6dF9fYGF4QE4+TUk4KH08emQ+WHdNWnMsTWhVZCw/Li9nL3prem9xPHNyNHU/KiEiWVpkWiM3MHtoJDl2cUNjXz9UaXB3O1BPYiVULEciOVgsYG1Vamojajl2O2ZuLl0zVCNaI1EzWCV2KTJYKzlAflJEcUd2NXJvOEV5VzhlcE1q'@; put 'MStaYENGQnlVZlpObilaMHtFQ057QD14S2FiRlkwdztgcyxTVE1OL1E2e20rYFQzez5qZjAiV3tvKUNILEZ0WWpURkVFNGhmJjlYdTpvTmgzKlMhLyRIRCFVaTgifVguTGVuKTM+WSxWckYmVk8kRUdBPSt1XUxzX0J4Ljl2Q1htRHBWWnZ0Ly9LJkIwOm5XUH14TlRUYGZTe3JhXmUsVERANnhV'@; put 'NlR0ME9vVEdYVVg3ZjUhQlJjOjlyVXc3fWkvSWBMbUJoR2ZUdzNdOix7RzV+XVZAemhjbUouQCk4XzZTR1A5RihjLm5Pbm8mdzR9KVhRWUh4QyxFcCYpL19LeUc3KCMsdEpsV2t4SD8qdVYrRVJYb30vXW9vZGQ/dzkzXm97Lmh5UHpLWEk/IUhgS2IuQFIxeC5+YCpSNDZTfC9xRmNaPihpPC57'@; put 'VVJ9IkxsJXI6ekpvd0tuJl96bnp1NEpzfSRFbktKXUR4YGRdK1l+RyNvX35SRyJXfEVzU0MxU2QxbFM3JkxxfGJqc1owYjJVQWljPHNjTlg/THs+RUV2T1Z1TitFWGgpXjtMcz0yZVlnKzd+I2tQenUvbTVqfktvRUJgSD0wM2w7PDROeU97emp0OD1qJit4V3VzMD8uQCgyV2BaI2Mqb0d6X21d'@; put 'LDFEXW1UOyF6Wlh8OGxwIz8mOFkye0YzW2UoMnljLklSQlMvXWIpfCIqPzk3YEpsNyJUNXZvcHszPGpWUVBKJDVkRXZ+NGVNT0w6RywrQVd3bSxtY1QhUnQmQ2MpfHI1SDpoayJCVmpJRTRuV1RaIVdKOWdeNlReIjBWPEduR3dhaz4wZVM6ST1sbC49RSFMcS9CR0tTUEJheDF+ZzU9UihgVXU/'@; put 'QW57Y1F3eiVyRUh9SVdsQ0ZYPnR6TzdLVktoKGBYKTRVQHFGMHZLcyxxRGFGLC92bX5OfVUpSTdqSn5BZj9VX3dxKzolc29nWzM1LG0wPkxFJlEvSSNCSGMqcXRxT2xSe3xkNWVzRG5ZYTQje09Fd1h0NWEjdGgwMipfMDZyUE1vKlpYbXc+SnVWM348Z2lsPHpCckE5RHsvdSV3YVtkN3ckTXNu'@; put 'TV1yZnFYVGJlPCV+WUYvaSZIMk9Cb31KUkp5ZnoqU2gsOEJJQS4/aTs+ZHRNMW5LK1YxWlNZe3V9OX1eSFBoOERnN04lc3pzWSQzaCpHKWglVUEmMFAue3dDIX1abUdmNEEsJmJYPyI7NUJzdlh9UEAzT35nYHkvVzssLHMlcUZsWEIqfSlbNUpSWXhgPHd+VGp9SVZFan1GPFdWK0pnJWVkNH5D'@; put 'OHRQQUhjTDdaNylJbXJrUFk2V2phfEc6NGUzL0suXVU7JmJwUC92RiFyeWVGXUo/IlhLRlFJU2BJRllvNDlkKj5JVUclJEc7ZVYlOHpDSDJtUktyPWhrQTFWI2RkNmJhTVtwPDAlcy83TFVALyZuSUtUdmQzcm1jd0ZgNFBlbipAYWt2ND1kXjEoSiJbekR9YzNedklvI3o0KVFKYF9BWkJMOiR6'@; put 'MFVteS93UiQ0cEN4R3phUTE9Vmc0ZlJYP3JGMEZoS307KSsvVjo0MzFXfHAmfms0dEhdKHxaME9AdFZDbWpvMFlaLlZRT2dZV2xTVFtlTl02MFMoaGdCdml5WHU/Wm0jcmt9a04pNFQvYWo/ZWx9TXddcC4iY2t5eiRXSkF2VnpfMWxWTzcmO29YfHFOaUBiZm8oUnokWHBPLDhhR2JHPS8vQHQm'@; put 'IVYpZjQhOUtlbjVFQSojbm15MnQyZHc2Y2RYXWUmMj1eS19vUVVscUFrNChFO0RfazBRQmorX0l0I2B+QUJjam08ZXZRSjMmWFtjZ31oTVVSaGlvW0NjXWt9Kj8hdStoMTw1W2ZVNH1LX0Q/Tls3Pm86YCxwISwjWmw7Uj1dOz57JFQwOm5LX0ojWHpecURVPmN2cCUhNCJUKnl9PGFuVSxPYWRt'@; put 'WDh4Zn1YXWE9SmJXMSxGdyo7T2t9NGcpTnp8QE8vej87K0lBJk0qaSFhUnRpYkl+ZFhdO2ZfWER3dEkiQVQqMDd9blV1Py9FXlk2N2tXNThkfG4wajYlW0ZWUVtHajs9ZjN3bnRPUUNkaW49ZlUvITtGVmg4blprNE5mTT9saFByODBYUkwjdVouXjRrKShHNWsxMj9IenNvMDU7QD51NWNkIyY2'@; put 'cGoqOHI6cW59VSYsLHp0bj4jOVohaFdPJGgwMkcqdXdkcj03UkJLamZeWjhPKixAKyYyQmBIfV13cTxpQXJdVTk1PEZwaVNVaXJ3TzAjQ3g+RDUrOzVnVk0rSStXYWc9OmUkMno6bSZfTlNrPyJaO3UwLl9eRVB7dkRQaFdia3xWP0A6TCFVL3FkZ2trekRjbU4mNytEfG1kTD5UdzVoMSQyXlhb'@; put 'TEt0PGJbfTN7ZnFCfSJRWUwyR3YyYlNGYCpDeHZHYGMzUHhJWDdUP3x7ND1keFFafXYhXkNvRC5zcTp8Lj1pYjptQU4sYTs8OV82akhvTFEjakxBUEFUVFN1bi85PSZoZzd0MilLNWklIm5CQz9WMU5vYDJXJkxwQnJ0IVVsbm97dkx2fVJYWEBHOWUuY3lTLkkkWSYuV0sxPypCLktRPEQyeGdK'@; put 'MSVtUFdPN1twRUJhOk5TTGdkdCV2cjdtRUVWdCpHKDRVKTdoYUZ7RURnVm9jJSlhMypjNSZ8KSIhalRidnpqT2JEeXkrZDNnMWxFYWJaUl9QWEduSy5YT2tAL1B6K3Ehb0NvVlZLNV1CLnYvfkljR1owfjduKzMhbmh5QGBRSkVEe3w3dT9uImZabmxiZD8kKngiWUVHRX4ve2o+VGJ6QlZMViEx'@; put 'N1A3QlVmS01ORCpoWGVyL3pIWjdRMmxINl8yWltSckZpfkQ3NGh8dGZyYlhhb3FVYzY7OHt2X1ExSVdVIyRZZWs+NEl8eXdzaytdIVtQXTJaMFtmVTR1LGt2NkJfIjRaYTQhaktiMERWM21RYE1QZXglSkQ6dzJLOmNnY0Moa1NERk5fJnRaXi4jcTJibjYoY1IsSj54I3I4PW47ZCk4fnQjZiRU'@; put 'dit8L1pCbWRpLzgzOTNrQjZWdFQqLnxSZyZmZmpJQmojNy5acE86NiEpc3hqQz5kcENGLEVIK0AldD9DfGB6bEI1UG86PmB1JlokRjdqcjEvV2p6LEoyKUoqWDM0ZV5TXV94YVcyQ1BhM1s0cVNJLitOI2lURlR2bz9PbFBreCE9bF0hNGlgUiZoVzIlJC5ifV8sYndndyw3PmVrbGBrazF0PDAw'@; put 'QWgqUURgez8oQzgzaH1TPi5YOHMyeWBCVnhZKntCWk1+NWxWVSVeeXZlOl09Q2x5QllsNTgjW3xYJVc8cFJpO04mc3ZRKSN4cXg1KXE8SEZyKXxmdSsqblY3SlVZcGUuKHlMIzdsT1Y+a01WI19icHx3RjomOy9PMkMrQk9gMXI3YXd4ZVc2RSVPclZ3R1NxW1ZGY3psfjhgYUtmY0Y7L05dUyRF'@; put 'NGRwZGJ4QW9APFYzazd9OiViT2ZAb0RxMFpCfDVYTDFXPSlGUGtCbC8kVXZ6ITZDUEdacEZHdXVVOU9iWWEhNSZIT3B6Z19iUWxCL3Z8N1ZWeTdWU0lCUHBAJT9WZS5WamlEeWlCM1tRTEdwMmJ9eEZvWEddV1Npd34udi5TaH49RyM9aENyYUdualEme0VVMHs4T3xCXnVOS2JGIipPQyV+OWh+'@; put 'M2h5eWExWjYkUyxKUChNSFF2aj9ZaTg+eXg2XkRZdnpTeVFFI3MudWEoY0w6YXZVV348LGBNSSI/P3tiSXovd2VKKFVNSXhNWD96VD9PImZMd2w1TmQ/UnwjK1J5OjdbL1hDS1laIWh5V0R3JnNNaT8ibX0/KzhOZVV2KGxQcH1kNWkpJWVqcnJseUwxMEliZGNVY2FAfENARE04W3EyOWVhNEks'@; put 'blBoKiU5RiE5VXBAIm5xUEx5Y2tCXmUwYENeP0JubkJ9MCRJOE95NDlVVEsqNjRlO3s0YUErISElfj19X0A/ckwzUGRgfTVQTW8peGRaRVFpZltiV2hfOEF7Sj9PaUdqXzpBPjo5L2kod18sWkIqRVdQSXdNJiNyOEttczAuZShqS0xMS2hpK3dgNjA0bUtoUlJYQiV7bEdzPnp3cHBkKE8kTllL'@; put 'JTtLRSFQQ20+bVV2UV5NdVovSkI4dUlLRjAuNVZ7a2pCb1I5T1VKdzRQUGJeRDEmeHFjNlAidUo2RSNdKi9RSyE6YXV6akMrPWdqMCxnej1IPW9GWyouRyZGaHs2Q3AvXSlNaCtKdjBfXyljYDV0JH0wISt1KGx7OipvdGBCWnlsVkpkNSooXnJWaT1DaWZifU9DL1VCIV1DRHg1ZlZBSWdnQ25z'@; put 'ITJZYyNzb3toSl9bPDF0I1Q2amB1M3RVQkYlQDgqMHBGNiNqLzF6V1YqPkZ2QE9mJG8mRik5ZGc8SXJqRnQmN1ZuVjJ5V014aVkxRDY+QDZNTjsoZE5UTkk7WFEkWGkwWSYhb1dEYUZDSyM/ZkZrUGhbTT08PGo1QU5HSmoyMmMmTipheEhoW2cjN3JSW1AoNileaHIhbHB6RTB7MVJhI3RnN2pt'@; put 'PnBFTSp5T1BfPllVXnprTyxiRWtPLm5WJDB+LHZ4PSpvJiErKlgwUUlgZVZPXytkc3hEbSw8TGlhSkFuMmN9SkU1UUFwd155Y0kpdGxYKyJ+IXAmaUE2S2tARzw6c3JdXVJaS3Y3KHdUOSFfXk4lNUZ2VXRANTZ8SnhXcUhhV1QpSDhAbHNxaUlAKjhjXls4UmdEeG1pNUZWVUgoL3NIYiJeQ2Rz'@; put 'ST5bYTRbR0psWlc5ZEg5fTJufXJyMHs9UjdDJVorUDk8emliPk59M0BLajIzKHFmK3RzMG82b1lTV0BCW3pyKjVfRVdfZyNGWEt6ensrKjtfSH48P1I/NG9mU1J9Nihob35eS1h9dX5Pcix7JnFwbjlUQHUweW57RylZR3dRVWQ5YTBLa0cjazJIaCRNQEZrJTYoaCRfPEVISk4iZy5le1FpTEVE'@; put 'Ykh0aDtadGlNZFd4OGFSV206N3QhNVdrSkx9Uz5qKS5wJjBwQ2QhSDNZVnZoSmpyODw3Zj5yTmR+ZCU9Qj1YVl1ZektARjJQVXNmPnNxamx7aChNOEU7Z0FEfjprOSleL2c8N0ohSXpkKHw0dikoKHF8b1VOISt+L0hRX3JiLEtAREBJOEEqQX4qYXdpZCMiXTIxWGU+SStneX5yLzlgVyEvWHcw'@; put 'U0d1VDslVFZidVpHQ1RzeWw8SVlIcToqbT47KWNpLyRWYkZpaDFDNnxWSmdeMCQlMUMlKDY+eElIJE8mSTdLVj1JWmVDIS50Si5tQXpIW0BPeEVMMDEjPnBUWi4/UEJDUyhrRmNDOTVTXmByQDJUaGUmYEs8T113XTE6NF9GTjFuJFVFe0tpb348QWFrJjJic3ZHbm41Kz4kfXo7JW1JUno/Xlhx'@; put 'T11vNUkiRmJjfF9zdntPQnVMTDNGeFM7RnB5LFc/Zy8qcHpoQGl2JGdldEJRZktaWj9Oe1NDODNKSnhIWkJPciFNQ2l2QkA4UUh3fk40I1UkWnhGPmxda0V1Q2s7RWFGP0xSdStwX0NHa1dpME8vMUVwPD5Dc0BbMjgmTzsjclhURzJeRCZTUiZaJiVYdkRfeUNmJU5PVSVJPU9IWmlbaHFmKTl9'@; put 'RVl2akFPYWdJZEl4Ukk7fCQyYDh4P3R3dXtgX1ppSSojbHFCMF9LdWsjWVZ1Ri93XkxicEV1dixgPH0paTRtd3xmNERIbGJxdlA/U2JKZU17PF4lN154P0NMKHloWU85KHpwblk5MnEmYit7dyVXSjEvU0JubXpmKCtWaFJuIlhaMm1xRi55IldueDBaeH1kPmJ9USk0KChANTZ2LHw1fEdISnJf'@; put 'ZUc5Qlh+UlJSNXxwUW98MCExeXEkeTRYNlRaM3UsQmxeRGlNclR2ZFFVeTVPOyRkSXdWMDtrOEBKNWheIWxSTHJpWWVPIislPGUhQWV0ajJtWnxHTlBCY2xgQFFaVmVXbTIwIy9VU25efTR5REFxRlN6ZlNUSHBbbyJlcVl8RzZBUlcvNCV6eGgkb094NzcoQHYqVFJWQX49fFErPFZ6TWxISWcv'@; put 'Jj9VNSpeWSgqaXdXd286OSp0alNbPVh0Q094KkJlUlZhMU5qJFg0RHZXanQmdXR3b00uVVU3MGQkV1RFOzE7KlpSaEZfRk5afXtEXyhsJkpyOEdRKkVoeXd0YUh5MTYvZHwmbXxuZkswaz5XOi9ObD56WGQ0bjlyREJmc0woSms7cyJrZDYyIXZlNiZlMjJSXy5kRT5WVHp+cHlFTiNFQzRvSkk8'@; put 'Oit4RnpjdEE/Y2xzVisvRnxPdFApT0NRSDRPYDIvLz1AJWtmOmJUNXhqdE5CK2xmRmxXWG1oZmBTYzl9dCZxWDpIfDZARl1IOWRoVFUuSiQ2MGEsXyxXRj1VeC5zMCZvWDJoalY9cyRyfmFdXl08MlkwLk9jbW1VfDp5XXRRTz5bTHFfb1FEWGlsIThCYyg9czcxdXJ0KHVTQXcvLyUkfkU2M25a'@; put 'bCFiREdFOWZ0V3U4UEQzcTg0RjIsMDsvQWlQYH5ePDVRVVU7WHBgTVk3Yjc+N3ckIjc0K1VFKHlUcX59aVUhPzxfe3csU0AyKmxfWmgvOmtnUSFNWVNbTTRoQzEzO0JWVDNMWmZ5bjNRYXc8X1omcjtPSERqPmtXa05GPSM7Pk9ZX288ZmxPMGE9SVpgPkFjVlgqcElWLEtVcVNBOytRfG13PHxO'@; put 'QHdKTEgqSz91fFFlaUddOyRySGFnQ11dcUEmZmMheyQyem0wMyVlQkopPVJNeFA+LFpuaGFjISN9diEqKCRVaU98UnUwTmdjRXYhZChqTkdPZUArZ3NmM2hxKkhPY083Tlg2Sz1YSjMhblZnZnp2TXVvKkwyY28raUpJX3lKdEFhTC8iaVdmQEhGOzQqa2ZJfUh8U1V4OUAoOU4xaCpZRF8lOG9p'@; put 'bywka2lgdllLRDw9Vy4wR2Z3UFhyP0VEM1I7W2JeMEc6Wkk9NCpYclYxIWZgak4zUVRYNWlHZTddUikpZCNMTmthXTVBKH0zMX4sOSZULkg1KEx2QEQuKD4wWkZbMWc8QlRpNl1ae10mNm1Ta1IyMjk4eDRpSUMuJXJReH5jYn4qUCRlbyprRkArR2hNNVNiUHQsRUEoMEhjQ0BVcHYwMzp0d09l'@; put 'Vn1MbTByPjRddEAwMWhGX35YWEkqJSJCfkB6LnRZRV9qVkVnVWd3VTZfNnZNUjxER2hhaVFxYWNFLl17X3JtK1N1R18kNT90JjQxK0kybG5pZDBCSEhTVjpNVzkhLEY5PWF7VzlEdiU1NDE0Y2k8QSM2a2d5OlJHREQ0bF1kTXlOYztodlVKdVhwXnEzOjo1fkAjOTd1PjlKP0d8UWJ8WXtRXXM8'@; put 'Zk0+WFhyaEJ7NnRgaSVFOlRydnNQWk9xWFFfKWVUMktnV1A3bSlfUTRCSClpOjRAcDA/fTY5MEJkQipJRWVCbUs0SVtVKWNSPUJ3L3t0UC4vJWw6ckF7SC5NdmlOeFZiXV9kYFUqdGRWcWBkNm9Yd0QkI31SITpwL1hJTCFUbUYhREAxfGZnR35qdVk9aCshdCE7UiUibz9PbGZMfV0qWkVvTmNn'@; put 'RWkvantFOHdwPXRBZ2c7V2EwZEl7PjldUVd3TXZLdTsrZEU8NTYmYkRJaENeIkA1Ql5sKCVGOXY+azNXcE5QKzxjWD11VEc3JWUhcXdyWig6NDteS0YiI0JMcnFqXmBrdXF3UFpwOnBkU3dAclI5XyQ3ZDozRzZ4ITFZLitUezp7YyphVCFrRUBvfnlPKjl9U117RV99TTJyUEdvJiFhRTdkPllG'@; put 'eSYkYEUkIixzXW1idFVxZlpEa2J5PV1KXldpL2lJJFddJXI8IXNbM0tAKWAvbjl7Nnl7KG0mbWo6PjVtKEJ3O2d9e2BdQDZpUVM2cyxnTERycEpaLGxGRVVyaHpQc1ozaDRwPz4keSlOX2J6YiEwL0IvSk0yXW4mOCU0V2Jmcl82OSo8YCp0dEd8I1A0MTEiJmkuaVpDPTpAODNJKU4mbVcxZE5B'@; put 'ZSExVyFbUms0M3VYfT8wKl5oY35ofEJFeHljd1RVX3JJZ1ssM1t3OFQ0RmdjSmVhNmYhKn4wVy8mdUJaT2RHU3NtRFhQekoqeUJyLipvIX1gIkloaz47bC5IW0MhNmJzNXhjJT1BbEdWcFh7WFosNF8sPkNkRFtVYUYxaGUwRVZnKiwudlt0TkV4YSgoRnhTN2ByZ2lAc2MrPX5yVThKImEqeD9N'@; put 'aC9tN1E2NDV6dV5IXn1hQDkpSz5jO31XJkBzYWVpb09nN3Y9SjpebyldOCQrdU1jRkgpP1Z5aHRHZmd8VGdQNEMic3ZdZF5YXWx9V3tPSy40dk4uWCpVcSleb1M5eFF6N3YzLyQ5cFl5aUJqUSJTX25lTnYwb3FGWSNITTlYTEJDckVbR2dScFNgaj09SipUKU8vMGJiSSJvRWk0elZQWW1ASHsi'@; put 'MW07UyVgSWFYdG01ZU80alkxPDlaPlUlalpkIVp2LEUzSFpeO0RzRzBUVjNIbyw2Xjwre3RxKV5kXXZ6ejYmUWxjfXB2diEzWyhWbUc5ZDFKQytEO0Ngc0w2U0N+ejxvbV1sUklIOU1leiVXOkYrdFBYL1RDX0Z0WSY8cVpfLEoyInw/Tz9yKWA4bH1IWH19M2R6cHV3dWVCX14kb3VbdTZWalVu'@; put 'XzRNcUslSj12Rk0wNlN2cyIpJnBWQSooZG06fW03Yi9MfD1dNVdPSUN8YSZXMkkreis4aGlUND0+cm1nST50fWd7NGZONn0ucTd2KEQ7UVpZUW1GZXIqST9wLEVVcX1nPD8oTVU/c2s1QjhMQ2tHRyEoZ11ESTAhNlF3UEFzIWlSeF49bjthSiMqaUZFUSEkUTszNHhwKUNxJT44dnIyRjh6Onpb'@; put 'NTM8VW9del0qXk59IkslVlY7W1tAcTtha2pvcHxwcEtnNyIkc18+KkR8dVN5IzxAflJ6YDtgPDJART8yV0B2ay5vSW9GZ0tnfitVYiMlMGxBJHs4OzdSKWFxaCxmUW5NYmpxM0ZXTjxQJHFxJWltYi9pVWkvJCMiZUksKShHLGczWmJfJGZ3cVpNUzEyeDZ6aEMxX0ZmeXxOLjp6bjpGbjglUVhq'@; put 'ekImaSpEUHEsISUvXjdRYzJpSX5BOG5lP1thYUlfRn00fWo3bnxrZWYiRGtwaVUrMDpMMjN4WmQodHVYTnhYbGVzJnghIS9Ec2woLDBVXj4pSH1vTlRdZDY5PXk5dSRJbzlacUc4MlBoYWE2cCw7Mlp8VDZsPnlUYzNrZyxVSFs6NVM6bk8jKEM9Ti5dJiMzUlB0aiViUjh2akhxNzlMPV0jfHc0'@; put 'THdXKHszbT5tMlBCY0hhXT8jSk4lbi4/KlNDSywwVmBuI2dvPVB0QDdSPn1gezZIXmpYK2pXU3Y6cHEoJiVfe2UxaDtmXVNCOHY3Q1V4fSM/MCRCWnBFZzcjWGJnI3k2Kyl5ajgifVJjOkxIOnVrV1A6JWMzOk9taDRxK2lpam4mfXY/YStMK0hoSEFXNWVKRUQqPXAmIWFNZDlCKUd4azckeUsp'@; put 'dilVWEA3d1d0RUJ9I2xNe01dQ2k/Ryw6ZUsjbFZTOWRkdH1OOCpVQnpOKTxXYUV7Ky9Vfm4hTEdVdjA5NiY2eVl2OzdlcWZvLllgSnh4ayFlNlJORXZ1U3lPWmFwS095ZnkkTHgzXnhbXj0qQ0RoInREeWBUWWdCUmNIbFQlNzdgdVBTL2xkTl1nV2g/MyhAcndDKjBXV3MoP35TfDleaXtyIzJR'@; put 'Ym1WTE9USzk8e197fjZ2NTZbPnVUd0FmW1Zvdj43Qm1JdX4mZyFvRitrO2YrfXBeZ19LYW1EU1BadWh6SFAxYTUmOjJtSTdIUkYyeE9IWygpa2x7SURBOWNCLFJNUllTMkN4Tiw+cUJ9cyx5RVY0bH1aJnU7cUV4Zismbms3LylgUXlvMnVSJEJFVy83YkpSRUhZezBFdUhMXWRnXT5kNmFQMD43'@; put 'aXQjOWBfXUxta1NeZnlRJmUqIUVARSxFS3toPGpBYVEvdVdZa1tgZFpeTFlFTyI2IkZ2MVZrWyZiMnVVYixqWSpAITU/Rn01NnQ+R2xoTHVvMXB1SHJYN05pTXg3OnM3ZGlHZTI1TSkzTjd6NGEpM0ByaTl2bTZ8MGh+UG1mYGRfZlIqaSpuQkpXcHY7JXJ8TDJBNnA6N2FqN2hReHNlUXxXXmpz'@; put 'fDl3TyM1RWg0TFg7QjU3L2ZaeDE2JnN6RkpNNikhMTlpcEdiSitQZmViO2g8S1J1aFNMXzJEK28mVThMUkZ3NzM9JjJqImlLXjRBWkJXelVlQzhscDlhYGFBXn1nL152cVhNNTdLT20ye3ZaYEtvV3liPTpPbnFHNTlNajZrSUpNfDhGT3R3akokYjhoL0oxREUpKGhwe3k+ZnxQMDZtdSNqdW1W'@; put 'S01XaT1oPS4mdCY9ZG5JUVB7Tl53c3lKQ0NaMSt2dWpPVGxNa3JZZXJgakkzeH00Z0whMDZ+SHppZFQ/UzFbc3l3IilIZCJtfmI9TlIrIT1zJVQoYT5MKURqYCxwUzs5Y0hyb2A3YWUkV0V+IXlnPzFkaCNORndhPTU4Jmp4bUx+Oi4ofWVvcDQvYk8kX3VPNE51Lm52dUpCcmlDcWY9dXxFVU99'@; put 'U1ZFVVl3O3NvR3crMlA0VWRUO0BaWXZIUmVtdE9NIyNiT0s6UHpmUk0sI0gjdn11L0whc3FoWHw1VUg8Ny4+ZFA8MVhDQkdFVlNKXWAiRFRWXSwkV01VTnJYWjMpMkB3UTFyKCNIbTpibmRuUzxFWGRTa3pSMXM+Wl17VG8jQUtiNlJsSzFSPF9mI1srYkoyVmx8OStyQ0Z9IUFuPHl3QDBKd1Ej'@; put 'VHNyOEteW2N1YG46fDp8OCRVS1IoLk00U1tRYWt2KVlLbjVqLnV6bDh6PTI0ezx4MSkrMXRkL3d7RE9kbVFFUSp5UktHS3drK3Q3Q30oeHdtfE96aEdaXW9ZYlMuPnRJQGtJMFlddEshJSQ4U2YiUWZYZV5FQiN6ZnRDcm9hek8mYkxbdTJQOU82MGBpTjpXfFJKP14sKWFbYTx6eFk2Nms6ViZJ'@; put 'QGNIWzNpcjhTM0pdPkMjbHEmeXFBaX0xJX0/TnRrdEkoSVtFWWZSNi5xSHgzdlslcnQ1ZmUySDUvUDUyZE5dYXZhXUdvZiVOVjo/eUVvSHFZPytDbWtlXSVfazBufU5weVljS2opWmJhVi4+U1hAMlNEPW8lcm1VMGk/dF82MjIoVThHc0tDejI2USssY1t6eVJNO1F+TDZdXU1eKm86fVNVI1d8'@; put 'dTNhYjdUUVJPQ21XUVhxK2U1N25bYVhvdSV4TG0wbmcsLHY9JDxNPHxRKSEpRWJBZmtyLkkxZDxxWk5FZUp7O2k1XVFZXkpLNDsieX5GQyksXzx0REA5cDouJC5SY2ttU3VdU1khLixRNVNhcylVSFQlMHBlR3ZtfURkKT9HTnlpR0o8fVJUT3I6IXg2KW9RejdMND9dMGNRVCllLE4qfUlmNVBL'@; put 'TXlVKExsKVBmOXs9VH5tdTNpTlE8U35IQmIlO2hffiRSZ0VfbEtNX1V0LFJoUGRUTj5XOjAlTV9Je3FSSFpKay8pU3sycUw4N24ucFhFR0lEUCkxNHx0OnIvTko1eSgoR0MzYXo+MD5fcGsoO280a1RIfjtwPHB0RE9pUDpVKitIZk96cjR7K05ARU1VK0RbVjhfQU06dWIrQiNxQCNwdl1QfElH'@; put 'YXM/cWw/eTxDPmxnSVdzNCFaOy9EIjJPWjNxYExHTV19OlR9RD07cWFzc2p4PipYbjFlJk9JZH1NK3h2WjJQeHhSTWw7b0xZZHxNRj1ybUg9dmd5THYzcU9ZNW5QK2lEPn11NC5daVZ7fHw9Uj5ZKlpQKi4pfFY8ej48XnovLF9WYSM0SEVffDpIanh1Kk4lWT56c1twcUslMmJaQypdSVM5Wnx2'@; put 'bmt8VmdHZDB6VXdVZkY6SDlaVlM4KGJzNEhHZkgmO3JkOWV9NTkqRVtjIVNDYk1qemE0Lz56bH09NTxmV3YvY0gsUFBsa1I3SW0pc0d2N0JpTDRTaXxbe1M1ZDJ5JHl2KSV1JUJPfmFPW3dOXXIvcmlJQDdFTmFaOiVne0FYdn5Vc0RmMyVUSEkiJiJxImg8cTs6WlZ3VTN3SXYuSS5uPkksT1FS'@; put 'YU9vO1swQ1coUXNpN1Q0U31LSkI6LihjSnhLcVA8ZXZwKGE2IUVxOU4zY15sb095cCUzNCI+U18kJHNZYEhPRFZ4aS53ZmprN3FaTypmJDx0Tno6LF1SXkEoT3sjb2JUSHFyXjMlc3IyRldrbUImdVp7JjMyNUI6REY7XXMuZ2UkdHAwMCF2I0loPkNSOz89dz8mSzdQQzNQWzRKbUskY1pAfCgu'@; put 'cFtaSGI6Vjp3ZnUrO0AwQ0lNWzchbERSb3pYMFdGSV1UMHZlKDJtRys+RjNVbnlpZFJgQX1FYGtoPEZOTyw/PWVgdldHPk1jVHEjNDtOZ1Y3R0Q5Oj9XRXwkOHBZN3xoR0RhIW55TFc9aVk1W1FnVCYxPyQ2XnVXRVUpVypxTFU9Mnt+SzZrNUdLQDguWDpZO30vLlleMDdAIjdxOm02SVAjUSNa'@; put 'L1tBW3h+WSZdQlBMMXA2U28hP0kvekN9Z1JQPVt2WjZyVUtnXkNrQnIvNj5EW3ErKHtLUXopMS4iUXlNPnliUlUpYSE9MnRPJih6V3lqSSFGbngqRGR1SUV7ZSx5Qmkqc0tvS2FlU2c/alFzX3RFTDk6ayF6PW1sRTZVQGFMVXxhaH5lbzJ1RjVTdCtlWlVvTH5gPzl0bkgkTERQPEFmM3gjUVF3'@; put 'V2RuUFc1RU8lIlV0Q2VFPWxrI1VAS0YlbiR7WjQ4QnF7Mmtia2Zpe1N7R21CUSZBLl4pdXBFRVdKd3RgcjwoQzU3QlJMRT9CS0AjM2pGTCU1T1BrVjlAWmU3djtMcUMvRWIwRllhZzh5b2tEcS4vWjxnOzI9QWNfMntNLD1DcWM/LkhpXkAxNUR7XVk1dUxiJV50QiohZ15qSEUodlhmLHU6XlQ3'@; put 'V3s+TDxkYmhyaWU6KnArMShqfTJBPjhWKzkxKDdJUjhiVSZCaU5qNkMrKX02RzwjP3x8Sl1kMU9wR3J9Wz0oW2pmMTkxaTo/VUBtak52PmdISXFUWklCQGlnQVIkMWRNWWQ5al5YKT4wfHUlQE5oNS9RInFJPCpfND9QfV92JWY2QSVPfEdETC9sI0R2SzFqMDlzfU4/VDxkVnslTU86YHlPOD0h'@; put 'VSlCbEBreFcuOWtZS2hEO2FnN2g0QzNjNy9iKENQa3QyeG1lIUNxNz81NEdOcmxYVXo0Xk5eRUBUSU8xN0ZpM305WyQxWUBdU34zfW0pUkNXdT13cyhfTGJdPk9SaTx3blNKOU9IYzJpbSlUXSRJXX1dVDJrQlJIPlkwfGwwPnMrdTghRnwsSTpWKVIvWGdOemNhMVVLK0F1UUBST28+PC5paXR9'@; put 'OC88eTlAfVdGa2Y+O0dzSXM2bD8rdD1vKl1pYWk/QGNGTH0pcjwyKXxEQHV1bTc1ZX58WEcwVlpIKn5Vbl4vRltEUClfJko+dUl8ZXdodk4/WGw6ZTBZYn08VlhZSWEvVWlOZUErPHc6YFtKcU09YWY3RGZlSEVlaWBTVSxoM2Zjal9DWT18akteLklqX0xPdno0Qy94TE9OdT0lZE5bXkwhVF9d'@; put 'RHMlIzN+bUBFQiNhQWwydyt7TkBeTndQbCImQ3NDenpJTS9RRlF1fFNeYX14UWd9IXMrQXtMWDU0UCpUMzNQdGQvbkxafXBkdFtRTzI9TmdQOXB7X3RKRWs5MnFeQEJtV0NpK0VBd3RHe098cHJPXyMqO1A/dDtzZTBDTkJ1TCZmcSgiYld5WyMiSlh0byQ/Q3ErR1FrSVB7fCZbWFcuXixDdGYw'@; put 'SHM8eSwrOUMvUjxFPl0wRF0+akZfUjM9ZGlkWHImK3gwZWUxKEEsR1RkciZeUy5uS1UkNjI7T3lTLFtjQFpqbyw1QTlvTSFMIlppZT1+TCxMV01qMSlPcnF6JDY2XWxjT3E3NTJMI1slRytIdnwmKkRefTZQLyMjTnBhI11AejhPWGE9Inh6P0Nad19rd2BUP21QQDIwRUg4NzkuJmx2Qns7YUAo'@; put 'ZmhGbWAkNUJWc01KMDx4TlRfKTMmaEJ3Z2tTTXdHWDBCKFBxXk5lU1JVWnUhSVFGSl5IVzxHQ0FhUkZmKl0yTGhqbipCU35fMktJbjF0RkE3M0dSZzI/Ojl8fjIhZ1tOWGtQaUEwI1dALE9+dUtzWzVeem1EeThKX1thUjZ1eTBObktET3d4M0BZJUZdPyZYW0YhKTd+bSp0MHpiKiZ8Z1JfRE4x'@; put 'cD0lP3Z6YTlIOC9sUmNKOHpgOVVtPVMsNSVPZlJfQ215XWBJaGMhKi57Qm9dUV17bTVIZG5yRSM0ZStmd1IlMEosPUpybClvUCpNeG5INmEkeil9IkRzUEU5P1UxIV8rLlNZSy92VCp7WzdiQT9vIVN9fWYmYSRlQ11TOypeKUcqQVhsX0Q5MWRRNmxhXV83bFJfOTglTGpRXW0mbjRDMVZkKFJf'@; put 'aGFUbC8qKnNkZTMrP2djK2lZdz1YZWkwR3I+KihCQ1BlWFQ6YHdZRTZETGZeIjNVTFckTmp9b0BGc0VAYj9xUDdDRk00UEdpW0E0PUxqUG48ISppbyZ0PjwqfUt+QktCWEB9P1t1TzdHJXN1RDBjR2JpZTguX085OUJLWFdhSyV5Mj9FelhEdjddWjNLUGl7fiRIKlJlfXlRNjRHYGhSMik7WXFs'@; put 'cElbbEFvaFRhT3NhZytFUSFwLG9jbDxud0psR1JPSGZUYWMxTH1HPDZ6cXU4ViF1ajc5Nm9uaiYoMGB4U213cTdfVGZ5MWwrJW9FRShuUmBgVzVRYi9TOjFwMFNzX3cpKE1JKDwpTkkrXXVMTU9YKDtFdWRiU1tQckRNd313UnVEaz92Tl5tWzswMDopNiV1I2t1cThSLjIxfWQySklQW2ZwajNx'@; put 'WGg/bU0yQCIpdlA5TD1jVH1ucFVDZVB0NEo5Y0wlVmhHV10zKWh9eFUrYSV2WXhgJUQzPHI5fWVWUlElQ1s1UzBqeDZ4c2FWUyxfdEJIKWRPQCs5KUYsalhiTj96Ujo2MG8oWWhoR0Q5WE96SSg9U10wIjxTdkArNVM9WkJIcHo9UCFHdjB1emIxWW08YXZoUCZsMEJ9bTg/N0gkbmVBUSpAVXBN'@; put 'RlhhQ1s9KStRcXBHfGBZYnpqPjYkKztUKHEldjk1clBjNUIzek8iNUI0SU1ANzNRR014a3M8bkAsfmZmbz1FYW58XksrJnElOGMuOCopYXVofXUrJV50bikjJm5EflhXaV5RQ2VQJHQ6VzNAPTBCQmdLT3lGY3VRKEdEN0hVUF8iNU4pUCMkJUZiT2FnJUYjW2xnenNAeVM5JH1pX1ghR2t+IWJT'@; put 'IXc5S3JuXj5sSS49Szp5Uz51PE51InE5V1pYI0NzUkhHJDskK3tpJTsjKnhFeDY5MV1OO2ZzR1MyPXlYfXFWVSVLZSxJZ3NMZmhQcyxgfDNWWSV2W08sI21jbWE0Zz4kVFtmMkthbUIyMTJaN054fGlyPG9wRWA/dCI0fVFSTiJKQT12aXVpImdkPmNmQXVob3F0P3hBYFliZFo5KVdVNzdGVzda'@; put 'UEJ8LiJeKExOP0BHISs4KmdNP18ydyhudV5bfSk0TEFAQGxhO2QrJWt9TjB8WWF3diRKNUVEV3pYNlBhV0M/R0I+QzlmKykpWFhrckpMUTU1VUk8NWdAO1F7aGUrd1V1JSVGO31oQ1s5IjZdJHtfcT5NcWgyZShuSSE5bEImM31ZOVk3YWw5RFUzbGdWTHxiRV9ScSUpZVVxb3hGVFg7JiwrfmJo'@; put 'fVZkW1MsKHROeXpbSnNaYiEyRE4iSEApSkJtbkleUypZVWAkWzpLO0A4YlhPSE9Sbk12PDBZVVl6ckorRHw3Pz42Tn1YRXpVVXQjfVN2MGF0Q0p2eHFiYDtCcEVOZUgjfmFFSUtDaTFNT0VrfEw+PF8ueit0Omc0JSQlSTU8b297bTl3Xn5nXnFJKFhwcmVwKihWeElFNlMkTHE/MmtAVkluclZk'@; put 'P2svL3A4OiksM1FTTGxsO3BIQGxAbVEsLHdyb08yfiQqYWAhaD14KldqSio+Mn4pXTk/TXsuTDVkTjVGK24yR2U0Z306JVJNKlFSVUdtN15ebkhOXV5KfFZMP1FkcigrVjRANCkqOi5GJUpQOTAxZ1g3MG0jYS4zOC82S09lSC48O0N3SjI1cSsrMnUkXnR0JG87VlRjQy5EVDpOeTAibklLLHI+'@; put 'alcyM1giO0kpNmJdfj5FQlRaeEpWRWRVeFZYKV4/W2gpaD9BXV9WXn5RdEdvbW1aZF9vKmpMOmkzeyVxUjI0R25kPDpGSy9NS2Zib0JZWHJnLEtoZ2tGWV9pVDl+bCI5VnhRe1lkTzYuK3VVcHtlSjNEckEwd2lBR1gjWllVfTRVMTEmYCF5dE5oP0wzJGF+QmA2Wj4iTEArQnlFUXJDY2MifHN8'@; put 'PjJZRFM4Xlpyb0N9Izs/cGpWNjQ9Q2krTiljUH1obV9xVS5sOGM0XUF0amZxLkFqNVFRLz9beWNDZyF8XiU9REV0LlQ/RHgwPnYjPihDNnEha1tROXFDPG5mI0c1bCtGUzBQY19LTyQ7W1tGKl8iQFFsJDh7aCpYQyl+O1lLbGA/Qns/cl1JYywuLDovSDxwUmwkXjVnSzlJTHRlPmR0SDA5blci'@; put 'VDwjfjdZdyxKJE9le2RFI2Vrd2RTdk9nZERxKU1xRWYoNnIqal00U15aJWw0NiM6S2BnUWpGW1NRYmR7VHc4VkUuMDYjOC91QzYybzdwSUhfZTs6U1NMK0BtVCZVd1c7Nil2clM6WHNIMXFiYnY/Ll8kal1+VCw0d1kpJnhUJTtuLksjfUR6P3c8aVd1b018NmRLVUxVVG8/Yy4xWDw3RmVQKHls'@; put 'fXgpalE7I3EuWzheLitBaFRWYS94alR9MDhERTdqOk53elJXLGpvSWZxZl8kKVh0b3RsOWw2cEw9ZnprOlAma34zK2lQWFlnYzd4YCs0aiJNXjRMWT1CPyh3XSklTFN9dyRwX2JZZCRNJExeamNQJjZzIyE2IVpGUD8kWT5kQ1FzZ3ZFQUZYXURhPSpgUUFydn4idWk9W102Z3xJN1giekckVz5t'@; put 'ZVloXVhhOlV7W1dxbil0fEp4KkZUOzVgLDxfcEhTaUMxISYieXlVPFtCVnJoYVdsVV1uRGYmJltCTXB3RWFHRHc2RVVGMUErJjhrbSI3cUxuUiZgcC9zaG1geGw/eXFMcSYxYiFHTzFjcWoyL081M1NTbXg6dkRjeHpLPX5nWHxaVyY3L2s6WFBoSnAoJmYpWWw4MTZ6ZWRVQTA+WDIzQ1IxV2Bf'@; put 'U3s7eUA3L1M/RFN0U3RzeWdERDVKMyV9SjNdLnJVdHtCKmsyW3o7Wil3XU5keS9RVkhiNCliRUg8IzNYJVRHUlAjJHdvX0FeIiN9aENLKEQ9Nzs7WyVkOzt8PHl5d2tTck1kN1p5dWhZNkw9OjYmJXlrN295NTQ9Q3p9UFdnZkAyW0BWM0U6fHowbmtUfiopLy5ndXMpNGgzUiM1ODFPKDpdOCFz'@; put 'dTdwZjdEITY/XyZXN3hZQzQyV1lwYGg2bmshXnl6aygwIlE+WmJZSV1OJTBZTFhbcEZeU00uYkJgTXQ3JlZ1IWc3RVNWdVIjdXBZPGA6TSpdMWpPWFdtRCJAXl5VdDgkOVhodENMbGZUVGY/dGljNUxxfVJ3PVFFP3U7QnZ7Ry5kOmEhTllvPFtQMmFISyI6W1FPVVVMI2p5dyhFbmtHZilfNzJf'@; put 'VGV1bUZpO08yY1tJVXJYOSNKVnkzY104XUhNSGZ1UjhdLnQ/KEtRTkwzRXR9cjArNWg3XTZ7Uns6VnVRJWwkdjVlSV5pQ2Z+dF1LYi9VSDtFeFZmakslVE8qXUVvI3EpXVBTKygkMkNsWTBCSnchSn1DKl5ESU9PbzpEQXs6KTVqIUNJdnRBQSE/b1oyc0tlLiVrPDE1NCw3K1lkd1A7KldHRG90'@; put 'WnJDaS8kKGRuelg+NWFBU25baHRqL0JFMkQ6Y0xwRj5GWDJBVHUjbSwjTWllQjYrS3FsZU1sKndlOjhNTWV2PFhIQjB3a2hCRVpPIkc2cHM0SkN0LFBMKy9sNipfYldrMjN+aiVyWG9dWy9aTVp7W2UqblkpS3loOnNeaW1FRCM5ST84N2JsVX5DeD1le05PRiZSOk5dU3hjKj0zUnJKTXslS2BC'@; put 'WT91M1Y/WXxiUV9YckFpTFErZH1naldKQkUpNDU+SGNDUjZ8PVBxfTRSO28lUmYkM3JxfUI8LjByaX5bZytrZyZ9STBQJWRQfXVQRFl8K2t3b2xONjMxPy4ifi5ncXhpKnAsIU9eUChMLzptUGAxUFd3YF94LzhAMGpxc2Zqbj16aDBbbiJPYD01byt5JTswZVt2cEdiVktLelU5d25gY0QiRCUq'@; put 'WiJoWlJzdjk0Szo/eFpwPT49ejlxfV0/SnRIfXFBdkpneENyaU1ZPGxvUXFjZFJ+NzBLdD1kPisxQWUkb05vODd9SnkhMDhIPExaTiFIeDl6YGNzSj5AZW4kUnFUWCtVSDRLazFEMVNiai54Vk8oPkBLODZCMWQ9dVkpcFRZdG8pfXQoVld+MEk+NzQwIjI7Xy5GaHd3PmZ4I2w6ISloZDVLR004'@; put 'QlRUaik+YE15VDJgTURtVnlUW0VKTlI6PmNfTTtJJH43LjQ0fjl7O0VTKkxPVHtGXmJrUlNwXV0+RUh7ZyV1dzheQnhPVzArczpbQXA2QitUMiRbNlk/Vjt5eTlPKWdXfmRMZzdJNlc3XkBQZFlaXTswWHNpaEc/YHMzWXlUV2g5US46bCkyTkBqQUEocj5rWjQqa1NyRFpeQm9xSTBmbjRQVCki'@; put 'XjFFLEQzMytCYl9BTDUuc3xmd31MS1BdVEdyNE1Aal52dzwyJC4zU3hFKFU/cyJCQzNodnRgQDRIK2dCYzplJjEydlRCOFZEZnA6eG5fSTwkK1VJcnt7KXlBYS50JTBtTE0lXWRrZXQvLD9TWUlkV1U4aCtrVDNqRFoiJX1aWCUyRjdvbCZHfC9KRFJVME5gOVZMN0t2eGNmWzkrUVJkKXI3W1k5'@; put 'LGVJNVJuUlE3NEY9Zl1rR3p4K2xKJjA4eldlcCVFYSI9WXZKMjVkajtPWy9zP2dWIXZpZ0tEMG9aNC8mR0VASXo8S2FveiZjYFAibCwuXnE3aSFpQCFmKWJETmtJakZfKlMxcCIwaGUsXm5yUWNtZSlOJkw6KHU9fkxgaEJEZGB0JjpwVHo1e080YkE5JmcmeEdxSixiX1gvLCxsJTBORjEsJmYy'@; put 'MnhITS8/KSk7dD9hYC5YYzgoYGZXWH0uUUE/PU1PJk5IJldJWnptTDBUKFRleXs3Y2pHOnIsfWlUW1FZPltaIy5mOH1AWShzTVt5Oil5S0hFeX1DXmUqcVhiRzkpYT0xREA7fHApMD9KcjF1JV9gXT92aHBgXnlCNyVCc1ZpaVtCQyM2L1BkJlk4d25UJT1tLzEqVjhiJT9TbSYmIXF7WEkhU2ZR'@; put 'Q0VAfU1hfk54TDokSHVoaC5QIlE9InpHaj5wTCouYko0aWxBPG8sU31hRig1WjYuV0JkMV1yV2V0Vko5Imt8Y0w8S1ZDWHN+aylLbFl7SzdNUHxlcE9EJCE8O2lEKGhyY3khdUM5IUw/O34mb1pvPVhKWlVURFNEO0prcTZjSFhpODZXTjhDJGg1diFeTDY/NiFeJFZEaiFkeWpOOTwuN2FELCs2'@; put 'altqaWY6Xyh2NjcsSypaajZgLn0kUHhmOF12WnpKR3UoJTk5a1JQMSVKbDh6cEB9Jlt3WHUvSnNaMmBRNjJST31hSmx+Mjh5bz0oLDYqKFFwUzVuWy5UNjJeQC9AYk90UEhgMj5ic0FOZlZ3PyspMjAkSlJGdGZgbmtbYTd5ZHhsalhwejBvNDY/WUYkMjZseFJxRnAlejtbZy8vPyNWRDt3Zj0z'@; put 'TClMez9aZXhSOF1APDhGQmordDBTWF92JX1HJDE9SHZrTUsxRSJoOGd3LnwrWGNIVEhJOnZUYGhTLDlgRkMoQik6VF5hTHImJmE2QlpBfXJ4NnIuTURLemZDIiR+Wz12K10zNXV1bTUmU1ZOUyNvNkk8V29LdV4hQWZKTnlTfUw3KFVwPiM0PWdsWUE4aUA8NzpMbCNKZy8/TTssKFI5ZEV+eHdy'@; put 'MUlCSWBwWXk0SDI9XlVEJSR4QGQ4bXZhNkc8XlU9OXw3dihJI18zVFg+YUBJSjVkYSY5VV1gTyoub2tnL0tTYGBfVik5byNWcHA3QUtYKWdxK1N5LzZ4eCghRU4ja1YkJHYpOFE9cWpnImR4fltAbVNuNCsmd0hWQjs8fVldSUdTQWZ7PzhsXSNMQ3pAPTE9ZihDRSFkXmJCei48Q1k/Y2l3Yk1S'@; put 'KWVyckFYMHY6VkNoUktnWm9PNT5YLy94XmBHV0ZeRSZaO3hFYihfUng9X3duOT5CZWUwV3R5PUVuaW9OV199YzpdIi9BWitINmJCI2gzPiZKOmJmJFpSPEhudzpEVD8/ck5vVTM/TTdyVk0/OGYrJlhbUXM9SVs8c0h9SD06fVNrR3RbfkNibkNBVC9yWE99YlBfWV9od1FIYSpjNHAwI2dxL2tE'@; put 'eV52d3I1OlNyIkZmSlBWTTBfb19vQCxTclFyeTYsMnBpOnR5bCZ6QU8lIyFxQkt3bloqImQhJk9rWlI8cjxjM28oRXxEKWMmNFZ+WmdgdX07JjYkTThWKlQ/OSg9VSUscj5DSiFSUFpOUHE9VXJNfENdQUtDPFRmSCJjcE86TihXY1J4bz40Qml1SXZXMHdkfCFPMC4kYk5oMmd0T2kxcHJfMGR9'@; put 'Wzc2YnVmN2IsKSZhZX5TOT1rJjdwQ19JPyZ0bG9BNDZoNDJ3NG8zWXApT1kqY2lMbXdNZVVpfD9QfjR8cTwxWl1LWyV2QDBiPjRGVT57Zl4kJHIzfSEsPz90SDE+QihrWXViSlBjQVkzaVRvUSg8NXsxNlBZUSVnTXUrIUd7cElPWEoqdzEyJXRNfGEmMS5aRVFXY05AIU1zOjF4LjcqaXhIaC90'@; put 'RlY4fW9uJilkKylraWY3NSVCRVNjWXxLdXFRcmY+OT4yZjlfaktwXztvcnUwPzV2TGpTNUNpbHBiS2cyTXhAeSl8K1hJWHJZfHtbUnlzTCxIdT9XU2Z6aHd6TzImdSVubk9jU3ddNCwwU040NkhYSUB7ekJJfjQyXy5eSFRUWCRkMHEoTWo6K1JwK2dvfmZBemFoOWpVI0wpa3I5N1VuKFVkdUxU'@; put 'ZmE0UWo9T1F4S0t1OixIdEFoViNuPHZKK204KEwqQnlDVEoqMTNRODFZYDghQmBRPWtCTCp5LFk/b31FKVJCYnp7RS4+Qi4sRD1lNyFCWF82RjNiO0tFRWtNI29ubHF9WG94bzwsL0pnKmJGOUpwVkBkMl9CQmA8Sng2QFo3dXZfKnBAcWRjdj9QLiFeVXF2eTZGJT9BYXNlRTtXdUBOdnd+SENp'@; put 'WXhRPTU3d1kodX5JOjl7UTZdSG9McGl9VjVVWz0/RiVGfS9dRzVXekhHTzZbdnI0YzI3elYwbSp3dzsseH03L0NsRlRELkxbT2chKDUsO0AiUjFCKFRufWRLKlROdmBKSHx1UUhQK0dacCs1RWpFWjl4RT0/LzBrZmE/SixQIThWVXJjMUtyLGxHKk5vQSx7IiVVekA+PnFIXn1RTmcqMWhzOXlL'@; put 'Q1NQdU88RSVQdnUsPG5vLEJjQXBYQ09SQWgpZ0R4IkJ1ZTxwXUQkcENMP10kOHIqT1BlbV5vJkBRQ21zQnxBLiJEQ25vfCJ9eEQlYHB2PCRMLkI/e3tyNDlqMkk5P3tsVEBtMzl7ayFJUypXWzVhZ214XnoyLnlMcSo+Vmc7d1Zga09tSFsiRjs+e1IxUkp0bkMrTWRKNSxkfiJwM0VSK1NPcTRe'@; put 'fEozQWxnInYsKCsyVEo1XVd3L0hlOmcuKmsyNjh2VTk5PXFxMXd5LG8iOmM+WnsjWk4wQWJxQmp0OC45KDYrbm56Zix2ekwmP09AVFdtTilVZGA+JCgjJCEhIXEyKFArWXh4cS57fShGaFBGX1IqVTxQPW4ybXdYeE4wOmhLQzlXTU9VVU4+UixZIz9gbWhJcGE9UFYsUGk3Y0Z1UX1RU1lieVJu'@; put 'TEQiQUgpQUx4djo1cWtwN2cxU3h2VFZZNzkxKU5db1Qhamk1d2lRS2VlWDtqQ3JzdGhRbElAIyhtP1BMMzBsRUtBQ05pWWB2ZXUuJEBuIkhrNXI+KD9hWk8yP0IoTSMmJCleJUR3UVB2bW8xZDw2PmhIQGQ2aTZBQHxJYEgrMWtAdG5wUjIheiRvOEYuZ0R3ZDo+SGd0M1U6VEt4MTdLKiNyLGkj'@; put 'RG84NSNCRjtdLHVNcFZYNW1nbkAqajRRanZ2dCU+Q0A/I204dGxBPih2W1RvYmUlanE7c0xDdCNdbnliQ1FRKDN4QFkiYUZNPzc0TSg1NEwuYEByXWJAYSpHfCwqbFFyO3pwTWZidWB+QEsyKWsoSDlzdyNxclJlbWU+JiIqUj8jMWlmU1puVlIoU1VgcmA9W2NENkY4Uz14bV41d0dQbktCTCtz'@; put 'RCZkR25URTRaISZlKS4sRFBuIyVGY1o4T3R+e3JGb1RQJEEmWy5PRWdmWk4jYUgwV2ZYdklfdUBSK2U7P0tFbm1tZz5eMiNUIzIycDwvMCk2Vzd1Zjc6QWpeO31OM0hdSW90QE47S3AkYztEakcvKW5fY0QybmUoLkk1LmVqUkZoIkg+aCt0eHZiK05CfCFofT4lSSRdZSUiQD5kaF99IVhWOmJW'@; put 'RCJgUi4rZUNhY1EkUmBMJEszX250cHk8YXFEIkRII0Q2KChlM2dAbzJucSUoSGIqeSQwM0daaEFwM0dDam1BIzlrdXgrTXFpc3ImOl1gM2BLMGlZXnI2VGs9YGhmMk1oQVZ2blp6fnNrRXt2KChSS0NlWDc8WHFmfH01bXJyeUxle3kuQmImRD1JeD9rfDsjUGczcTtMPSReKHlXIWwqTkYsP3pz'@; put 'TUdOcmpEeVg7LlBYX3U0XiR5aTJsLGUpLndZbDF6WXQwU09mb3hXOihCVDRqMltqQ0o+dDl5ZyM1U1JPZFFVRXNbeiFjdXVgS0A/Um19RVoqVSJLZm9NUV4kQTFkYSpGWGJ4O3w+WCJCLGV3LkZ2YGR8NFdDRlA7STwyRF1TdzRpYzdaSn1TSnNFKlgiMjk4OVpyRW80QX1KYmFBPUc7Tix+eWVg'@; put 'WVJPVHY8I15yL2E1UU83MyIsTjtSZE5mQnJsZUc0dDlkXUpdRTRkRyp7YVldbGhneyh9MmFEIX5pdU1hIkRfeiFPbytHalFkTVFLUkB4PHs9c31QO2J1c1MmU2lpPko9TmlJa3ldUFBdeShheG09QEhyZ2p4YTJuL1lZViluZkg9UEQkXk1FLz9fdFpOe3w3clsrQyk4RzdHaUg1Yzd3dj14Sksm'@; put 'RUNOfDx0NGhWQ04/QnpnYGJDcWRpVDo2cSJxPzBVVHJbSHQ8Ri89TClOfGdGIWJaX3EsXSVQNWskKSZJQEwvQzFeZXhGRXlAcTdeNk01e18wbjZ4fEo6XyhnND04NGFkckNkTXF7SzYyX2Q5dVEhYCFhMEgremxjRkImfkVXLm0oVGtGflNqJk1dZXxCK31hOTtqZmllaVhldz15Q0tETTBeZ2o7'@; put 'MCkxbHhsL05PcipLLEBhL3RLfiRkWjFIRT8iekUoMmhzUkp7M0EudkZRfEYwPGBgaGdKfEY0Ul9LUV9KRFovYm1EL3RzaUgwNFVlTz43S1FNLns3U1BDWVR3bFI0d2dnaGYqPWh8Qn4kayVURypbNDR1TGRoOHltRzBJNTBoRTxpaFl4N3NpLiN5QmVxYkcwOGBVV0Y4NWlpWGN1RT1GMSgufDM0'@; put 'WFJBJGFVbiZENjlzKnpAXlE4KFMpKWV8aU4pP30yRGcraENMc0o9el4xNm54bG00cVoyW0RdKyIsSX5qY3RSel8pL2k/eGNCdWFZYGl1NHVLZiluaUV4bGhIL3omblM2O28pfWhETnN1d0ZRcD9DNStFQkh2d2VPejtlc3toeV0sKTVodTw9PjVWWChoPWxfeHVQb25yQVt5QzVQUyFmdUlFVmd1'@; put 'K0Zwa3t5LEQvWCRUdGAwciwsfTM3NENIWnZqe09RKlZ3WFQ0bV8+akhpQk5Jb3BYXXJuJVBLLmRae3F7YD9GTmtHe0d0Ul5ZbUpPZDA9PXE1OVd3SEk3c2VWUGdgMXo5djs5WD9QK0VbS2A2M2VVfjZHT01McDxFXVs5cTJuZikxZ0FKKUxfTDwlQWt9aE5FKlF2TiF0ejVWSyR3T1diKmBnTT5Q'@; put 'SylkREZgSChEe1MsW219Sns0aFEkWW1QUGlJRHhYZmxmaWxqPFguQ3IuV0h4TjBGMzlHJTcmNypkTVVFNFZgIUIhazNrQi45aEouVEtoLmlJVlVDMDlgIUVGUyRiPEVpOVpKVl9eI3ooJmo6IkZ0U31lMSZWeUxwR1dhPE00dHBIfDNGYGhUWWwjcVM1emMmIWtodHg+eEJOWyZWVkldJSl+KiVQ'@; put 'W1FRdnArMTchLkx1c2hWWkNabU9JL2hOPU1udHQpYn5sfTxSM1VtMCRuZ3pkNjF0aEhnS355emgoT246biwsZWN2MGJ2OmJJSUwmcElEX0NqJHBmMm4oRWpWelNrY3lGejUhcEQzTih3VX1kNk4pQGo1N1FjXmguMzhEcURPTkx1ZD57b2xURkhmR3Y6Qlk8ZW1jJkY6QzQiUHc7P1EoTk1JVi5j'@; put 'VXFHRThEJnksKzNsUH06N31pOF9wQk50VEAyS3kzSTtaZTsyVTd9e1R6JURuS1t1aFReckY0dlkiOUoiUWlyeX0zLy4sJU1YTDxFTmwrQSN9am1JOlR0RyEpUk4lLlthbypdcyZFfWZYe0I/IiZxRyMjW10rOjt8ViJhRmRIeWJoLDpObXNPOHExTXlrN0JWWXJdeHtuemxyaFN8bCNpOHc0XTBS'@; put 'UT1JfltNXz43amZGUSY3PUpvKilYXnxFU1Q3en5vYCNEZWhZM2lYVHpUbXlwWDQ4bUJ9eSZtY0U4QFRONDhob2h8Lyohc0Iue3BSYHZ0Yl4ubWYiMG5AJCQ1fGZTSz0ycUxvSSRFWiZkZ0d7YFA2cERtMFM+Qi43NnQ6Sn07XnxQPGIwbW5vZ3UmVC5lMChaPTNFOWRDTVUzZy9QMG9aeGIySCQv'@; put 'UEZwUnh5aysrfTxYPzxUcCk3OHs1cDQrQFBaXmB5PVJzKk9JPllEYTE7TG8hR1heU1MqIzM6eU5YWWpMU0IxVFIpTWF3cDs7ZV9JUSwjVFdufkBkJHxOY1R8PEZETz8jdFFxWnJCSHUvTWN5TDtLRlJgW31pPjRuIS5YMkUpbkdPYW9faSxdP2xkSCZ0LyNVLmY8SmhNKUVHcl9Ld1ZHT3tqUlBu'@; put 'RUlgRGpqd308fDVxbDJ3LExJdns+U05KUDZqNVB7MCVRVj1UQjB4Ri88UylrdXwyaG0iRmJbbzkoTVJ7JUI7JV1Tako0TiwqelZyUmR6fVtyfWgveWEsPiJQemQ2KHFYWzcmOlQ1Tyw4YipGaGpzVH1vPUlxKihBSHZwX2g8WW5DPUlaQX1oT316LDV0QFFiOnM3PVphQ1Z7QmEoUVJkbnwxNEhz'@; put 'dk1fJiVhZlM1X0xoM0cuT2Y4R0g4dkQkYkt7NkxwJTFaOHt1ZC85a2A1Uioocyk5dmFIY1J7NEMmNVMhXV4qJjd9Z2ooWndXKlIjckAyIX1oPCg+IS4yZVleUXVaTSs9S2lIOlJSQDcmeHxOM0AjU3ZGXlF8Tl9SR0JpLEhicH1KSSt3T0Z9PmdtNUt9empuOVBEYG1DYXJRYyMyWzNoX1l9SnBz'@; put 'S0IuUmNSL3ZXZXhYJndiMjRRb1ZxVCpOP0smPnloNyMqfG1fKTtdNUBoVVZucnVpTDAxP2w1SXYydEgxOFNDNmJDe31vfT1oWCJLdDZUXWNPejRdNiYiWXEiPUlmSlZMNnhHSV81WUh5TTxmM35XM01iJVplUjlWQHZ1T1lXaFtOJXRCIl4xXXNTKiZpWFI0d0s8KzJnd3MvbmFgRkxQeHlbYnVt'@; put 'STo8V0FIdU1zI3UwNXVqeyNIL15BeXNNd0ZiYVBqS1trJXgjSE5gbGNwJD0mVTxxLn5HfHc4a1hFfFJKM0FeYD1WL1p2cmdUJkd7Ylt3eEhCPFZQXnR2PXdzLkZ1Q3FtJDhTdlRya0hHdW15LH19YE00TiQmWVtLNn1pdkJpVXFGWSRXNThSfF96WDtoMlk8Tno/cldpPEhSbyF8X2xZNztfQmFn'@; put 'ZXtOUTFkbkphcChFU0lnK1h3fm5TIVMvJHRGcm1ZPTp4Un0kR0o8JkQ3N3Z3bEQkMWpocHV5NG4jPXJXVjR8JGJUc3ZxWzNXcURjOXxMYT43OEMjakE7fjMke0Y3Iik3NEVLfTYhamFRRUR5RnEhU0EuTGd+enteMyhjc1ZjOkd1Vjh4V34yelI2NSRGQzVQdCQkW1pYQyZqIzBsen5bR1BNd3sl'@; put 'blNlOEYlS3VAKl88dHhIfVZKWG9+YCU5STNCJWxiWVpheXJsRjQ3Vy9LcjtxLFBKdztAWkI5PCtQfHMrOExSQDE/UktuUVV8Nzh0NmFTJkNwJDZPIXN+aDQzLD1LM282TF5iKzZfdG1tPiUuX0teVy9ue2wySHt7Z28oaWghbmw3bCRDenZPQmk8ckJXIjRUS2U3d3tTRTB4P3d5cX01ImAoS1FE'@; put 'e2hEYkgydVQ2NGFPWnh7d292PVEkYGE0L3tXV19tXjM4M0gpTlohNTZWbWEmSzZ+eGpQYStMaFNFTGVQRVpnNkc0b1pJfk16Uk15VSY8SVFPXzR5SXptVGFpXSxUdHhuQEJLIz5pTXMkYFMscCljKTc7VjhzNil3QEhvS1NXazFlcnNRaFdYPX1Vc2lRI1d5I0lGQW5+YlMoO1VweVlFKSFNS1cs'@; put 'JTdmZnpOMi9BLnQud2VYWG1kS1c/I11AY019dUJSJkZ4YmskWWpKMSEuWUNzSUQjaFp7QDNZQ0RkTllgSjZbYy9UTlsqK24wQW0zREZKc0x7dnNvX00oMyNLNjN5XSVfNVVSTHRDRVB9TF9HKz4pKkdsYlR9PC93Y1JpI2N9X2hHfiYlITkkTz1ZSzIqJHxmUVh1Xi5hMVpVZyNyOGZaeCV6KF9j'@; put 'c0dmaV80c09LNl5tJXJCVEBlQH1ye2teelRWWSxfMz8zejp0QkF5JWBrVlE3RElCR2UlaitWO1VYImZ9YEVwWmhEXTlQQz03S0smLGNSNFdVUjokI097XmlBIklgby9+LDFHXSo+eiN9QiMkKSJ6XmpmKkAyJEhGPUJQNllOX1BZak5Rbm92SUYyY3IxUU4lWCtEU0d2aTxDd0JQeFcyeHM5SGR7'@; put 'Y2UkKlcia1BVYCZASlcrRntUalMqPlhIMjooUGdAPl93IXlMYyl6NkduTXtCM0J6V1NwXVB0JjBxX1ZmRkpmflJucS9Ld2RGeH1uUXEpT3dVPzYvfDx9LG5QKW5uc34meDJFaCIofnNiWChXPHtBam9PVkxPWUljMXEzVWBvXnx6T1QqSHtWd1V2WSZHXjpJOmk7NE5Ud3BnOFdbbih9Ujh4KTFa'@; put 'P0JkP2dyamFwZ0ZANT1eJmZ+S3lVUDl9e3AvXT57M3hEOWV2MXpHaVl6dyVybFspQjFyNDV8Y1VDQ2RfUSlvWVNeT1N6MG9kfmdNcCMhN2k5JH0pJVNXdC85cFdwbU07b2ZtOWZ+TUllXjhBM0B7O0JeQjJXPk51aD8xNlMka0oqWTxgZmF9PmZQdV0xMVJuWFNmW2VYTlhEN2JpYU1NLylFY1Bi'@; put 'IWo8aCNZdV59X35RKj1NTzs+WH0pdipLZ0dPXSxzXXU1UGFTaUdXV1F4Snc6c0IifiZkQERObn1jcTgyb18lYldrX11JZzZHNEl6Kkw2VjkxWnJbKWhYdjIoP0Rbb0k9MUpgM2toVSxZWiJPbyVHVl0wa1ZEOX44NnZHbyhTSSw6NHQjIjFfLGA0VFlBbHI3R0daOiZVJTRuMSpuVDpRbW0lL0wh'@; put 'LnZXQz44cllkPmFGcm0laD09Sig9N0ohd0FzPj4uNERFTHl6PkU1WjNbPz9LTllPSUVtIV4uWGo1ZSo2OzEzS2A7RiRHWCIsKC5dPnF3QDZWJDJEfGd6OiZAdXYibylOWDxAZDtINzZzOmhydiMveGhGQkhhSDZjMkNQcnt0V2dIUWZqKiElc304MXE/VFtbMUhzXjZSJU10fGhvTCx8eUdmYzp0'@; put 'L00kV3oxRGlvenQxa1plKit0ckpBYyNya2JIPlA6PXN3PHlRZilvJE1gXWNIYU1UOmxxJWM1PTIvS2E4UGxGJUBwaSxXQzdQS0ZMYVI3Mlgjdmd5WT9OYj8/dmN2VT9KZl00KGZVZXZTdzw/U1ooW2h4UmVycjllem4yQ1Bbai5uZX1nLGd+aDV9PVEieDtwOVtfSUF6RnZJUVVqUTwkTHQ3Onl1'@; put 'bzk6Q008aDUkYlhFIXdnSXhkTVs0XWdQfnQrPVEvQCRhNkNeVCp0SGN7SmxjPmE7fXppL2F8SzpXUXksMWFqVUh+Tn1XLEVNakMrbEI6andzOlt1NlpHfmdNUzdjZF1OVTtXc3VzZ1VNPTFnXSY8LyxMX31VPWwodnheQHEvNSRmeXE/VCowSFQzSnp8TkA5U2lyR2g7TF4xdi88dTtuWDx2UUBt'@; put 'WCp0clY3IzJpaiU1JUNpV3MmLCZ+ckJ4IV9VZzpPcmlXJFBRNUZbVXVaR3BRdWxAVl1kRVl2cXdZUjYqIngrOnl9KGQkPmsuMVJZN1dTSmpYRUZkNHZtX1F9WyYlbipNWiNVVXJ5XVBPSyR3Y0U2c0B1JnoxWHhfKi5FKVFBajlYSH47QTRvZ1k1N1IhNiMwV2BHMyNrNSomMFoyWGZmXyhLMTUm'@; put 'IW5EYiMid1NxaT5WWChgdSZ1SFowW0FZaUUsT1g2aWMudWBxLm4iM19xY2A5Kl0hJjR3bmhxX2hQWFJsJWhSRz1JfE9KZTdOTXhUbVpneUMsLjhjaFNiJGB6fSNDSHJSW3tNJmBPR1NLUl8+bD50ajNCSVomNWckeT49WmNxcU8iSHBYMHE1W30ySTdUWGd7Wz51OjZgaW1nWCYwSjAyeEljOVZI'@; put 'R1MxP1V7fE1naDF6aWE5IU0iZF80P3JZNnJJVzZTc1JxI2YxPTlgPEgwRH43KSNCaFhveS5oUD4kPiF0LismSFF3Zk5zbnxPZSleKVZLeWA4SDxOLypCdSUlejxdVDQzTzUzRyN3dy5wWWJnOklDcnIwUGFYP3pAOUN4UntXIWQ3SjBHb2cvbWhpPXFkfDE1VCwvV2JRWCNgPDpmZXQobTE8OERs'@; put 'Ojt7LnFZRVJ0UG9uXWhtPWZkNS5iU3FANG1HKikxfmhDQ0R6WnJfaWwoZV1fKWtrSHhfNVkmaEdjSkFUVDgvKF5mS3pkU3B6YjRtZzI8KTY5KzxNSkNLZTMreG85OElTaEFgJmhmO2xyMFhwPCsvK0VWOHteeVg8ZFIpRTJfUEFjKnl2Wz5OZDVmS1JrJT5KTG1YKUo2ZntIVDRtaE41e3k9QHU6'@; put 'WyZ5QTsyImx+SlVNRFd2Q1cjNF8xcHJGezlNP11FI1o/dUJYclNgbmJFVzB4bGwwSVQrK14+fXY9SlNrXkZJSClGP1VpX2Q6KTtTRWRFeGd8SC9ENiM8SCZ1e1o6cVYjXTA7fFZePUk5LnoqWkVCK1FUeT5gZ11tJSs0IW9leyVpJk84RClXK1E/WXNqfShEclZ0eX5FVENRJkd7QDdbJShZIkYi'@; put 'KjNNSCRYemNKZlZ1PTglRjdKK2ZqZnVQKTpta2tsIkIoJSlNZ1F6X301fjFUYyRueDZOL3hyV35CRWdJaGk3UEQ3QDQhc3lWPyZOJENza2t0Q0QoeGI1PXd2Xl81JURXNz9NUHY4OkxJNU5VRG9JelVafXwwdVltRkdOYnIzPUF3ZiN8QiJeRSI3cVI/fWd9VzdpeXdGZ2AyLFthOFhWKG9XJHZh'@; put 'fTx2NEc7S2xnR2I1QlF0cWRRLGlgPStfUDlYPkdgbklLPm8sVGcyJkMyIyheRDBWSXVEUXBSdW55NSRZRmhXPE5HaFQ3eWJoJj4wRlpyaHxEU009RUhOVGVkQmJwYH1fdFlHYTMrO15gQjtaViJsLERIJnE9aUUqMm06YWdRUjQpMzt3KUt4ZWIjNnFqKzp2PmBLQ0tGTyFPWXRmY1ooN3smJWFe'@; put 'P3xZKGxmfCpNIz1vaFc6amR5SG9iVD9nYnc8OX41a2lsOTY1JEshQkB2TjxtbVp3SkZJOT56cigsUERsRVpfdz0mJUlYbXdVTCt+K2UqdTRYOXplaU9rKDUicGpeMlpnUHp7cDRgK099Tm5KNVYmcHUwaXJfYEMuVyRIQD5ZSTZIVkJZLiRfbT4rNyM1O3Y5XiNXemxBWHd7JmVsN0JeRFMoM3FG'@; put 'ZUtHLjoqSXwuM1Q4QDVqei89aHd3U0pOMEJzfDxFK2hNNnNnbiZkYkc2JkwuLl1jTSJsfGBLS2pvMlglfGkiR1JSPy55cVZCKjJzN2MrL0p8Y00kMC5tPGhKTXNrZjZpWyYlVipDNX1pMnpuLiZoNkhhWm9IaVBRM2BecnlnNzxkYSR9eGxdISUoYlJdPzc+YTtRISZ4NDhSYEFpXjxFWUp+IlEw'@; put 'UFQzekxiOShhNm1DIlszXm1rRGV2bHZ1amtOKyxLPjdjInVpOWVjKzZ+QHFzYDZPfjVabFtSWiJAKUZGWmc5OmViZDA4PzplRHhqQ1lKV1E8Qyptb0w1dWpHIWAvWSVoWj0sXjkkQ2Y9Um9JV3tKR0RTdFdAMUlJPHRAWmwuJCN9P3NocTg7TSQ5QDk2Tl4yKEQzISl7ZXVSJE8rQlt4I3NKM20w'@; put 'dyhKd0tNSUd4KzN6MDRYJUErTE5UK25hVVpAUTpMSkFpflk6cjYwclhJPGF+MVAlWHpra2klZCZ6dCtPQzEsR1BlVWFHWjl9Vl9YQCk5WkYxTUFZSW5rMUY5ajIwY3JzfmRHNm1AJE5vLHglMy5HSywjL1Nwbk1HMG1TbUlVS1B5K2pUR3UpKC5NMCVmIyU+TjFZNFhKLFQyLFo4eHhFdGhFZ0xG'@; put 'JTAhKzZTdUU6fm5VTGtGfFREJUFpKkhmbT5pNS5KRyY+W2p7Zl9GVzUuX2d2eF89SHdrbnJzO109PkwzN3gzT2ZfdlVOe3d3VTIic0pCQ2U+V2AvQ3RiQSooPVVeNWk8WH16Vko7PEBzalclSG8oUndvPmh7JTQ6ekhRJjg8RkhlL0lqeHlIeVpoWWpxaU5ZYndbTEA0XlF6dUtdNEN8UWN3UnRT'@; put 'NmVGJC8wcTlEKlJxVEc7emtXY1JiMX5tNEMjWHVpeztEOUhNe0hfUXtZR3AsaCR0X0RXMH1zdiMyWSU4M1FCYDM5RHNXO0VVRyElR3pwMzJqbWxKKCtsQ0wpY081a2dbTjtdRl1kaDwsYXxCLC9rMTxzLFVxazBZQChJaj9hdzVreF5DKERvYXhMMWZsSzxmOXtBUUQmJUxQT2RNdT1KOU5QKztY'@; put 'Szw0OTZPUzJ0Rip0aEt8XUd2YD0/N3haZFp7JllqMW8wVXtCKkFxZ35MYTkrPjYjOWVCWVdUUXc0S1k8NHQjUW8pM343VS4+S3JeSU02dGFhPHxLV1lCR35jTldePFdRL2xHWEd7R0NLO3lJUkRWO0Y/cmZvQGwhWDsmI3MyR3Z7ZHAvTm1Le1ElM002IXUpY21ofWA/LykwQDdCMl1dd2wzaUIo'@; put 'RjpKfHZ2US9hUSQ9SXc2OitEbilHRU1gY208RWw9OS8xTE1RfilMJi4hKEx3NTpVMDR1QzdxOGpIWzhwQFVEajlhfHR0YlFJajh8X0ZDOm1hTzsqUUlNWlsvMyMvYF5idT5RUUw9dV0xbj5zWnUuU1BiSjlOUCxlJVNNTlA4SX5JZnN4Un07TW9tUjdwYEsqa2J3KWNpTEM4Kz00dy5QenowdU02'@; put 'KE5FUHIyVE9fdHR6PSJGMDYySWVVYjJXQ1MmIUdiKk88IStNRX5ZaSx2Y2dKQHJtYCp9YDJ6Q2s/IS9FTSxtJjBfOjZhd09aOFBHbkh2Rz4we0J5UllPbXA8MkE1cTFRKz1ULzt8eGZHdChbQ35CKj4pWHVDS3c0PnY4ZEArK2JscG5tNnkpKl1RSkA+aGluSDZtej5yKWBNNldhQG1qVElpbUZC'@; put 'Lmd1cUVAWDU6WFtOMllOMV8jaGRJKFI8VHNeXUorS1todjExOHc5PHlpLHJ9WmhoQEM9QiMkZ3QhMDl1emMmdSEySClvJDt5ZDpfNjs0SXJZNCtpY1o2aD93cjNSQkZMQyVrfTssa3Riel1+QXhndExWQlhOWChXKnFiU3lraFgrQ1FDMUsqTUR2Xz4iRnNxKClNeVIqbFVhdUIsXV9gMXdJe0Iq'@; put 'MnZeMD8xTiRaRShkckdsIWRlMl0meytaKlNJTkI0dnkxU2xJbWozSjteVmllPTVaPytDTFdzYFQ4PCJuUEtsIjopKEAuczVja2oyJmxvL1svTnJiaGJ+fHZzNTVsKFAjOkBVKHsrajY4Q0Uoa0gjfWJLZStBM0ZZZV5LS0hTMDpRXSxaWTRRbiwjWWVEMCJUWTNbNGQ6WG9AMj1OPTQ6NVVweHlM'@; put 'aUVjdCpZZl9vTXZpQWcvZXFAeVZjUVY0LjdxZm13PGcmQjdRZjZuK1s1RF9sRENSb2tVU3ohYGxzQ2QhIj1kc3IjVyw8fCUwYiltRUhuOGIuP3tXR2lZKnI0TTxnV2pgcmMsY31LJDpwZG1mJXM0S3R2clhJdzlGRkohQkd4K35TVGVdRiQvZV92YS93ZVkxMVZtTUIoUX05NyIqOV1DQExeaTIk'@; put 'KF9MfCZVd2YpbGEjbGViJktxOn0vL3BfTytQMkYvO01eciFxSjxEOXhfWEw8QmF0Ry9FcC8lNEQrZENAPkgwInpdaFdOa2JtKVlgdiF4My5MUCRUbzpVeXk+Qik2MUNefVQ4ZiF3Yl5EcSMmb2RNYzwlOD95fHglVXkmJSZUdEVKWFhBTVQyJU49cHJHT0RzKDQxYylQYkNWNW9VfTB7V3x1Im1H'@; put 'bX1kWjNMdC4kMSpJN0doI2tkN1ppU0lDSVkzc1VYIU1WSWd0QkdLV3p0eiQxUTAuM3d4by9Jb2I2WCJdVmV6OnsuUWRqWCtsPXVzOjpOKDRhN0VSait+L0JBWDRSSVBYY0o5Ujo7RntxMEYlZS8jXkQxTSNbampWVXpxM3JEcTYycnQvQyVCTXBnY2R4eUkjcThhYnZJbSY6QzQqYjlsOGFzNmZw'@; put 'UFpPUU9JdiVaXmQxYU83e2MkZEcrczB8YnckS3oyd0wvakdnaHAxZX4rJFc1ZzdiJih6SVpkWUdpNyFkZThiT29ZcXp4VUtCIWs+JS4yYU16W1J+XyNgeiEoZ2V8eF5wbXlteXNjMS9DVn5qbGJ9dG44djFfR3NxZ0YuTS8rRk4lK0BxSyVhNl8obXksPEhDYCFfaUJEQHAjYTpBPnp3LCloVF16'@; put 'LlMsbiFpMGs6Xi94KFE8VUYpTWZvT2QjIk5fRFMkS11BY01rNUxMKVp4JS9yKyFDPTBzWF08I3BffG1mQzNwNEZZOyRqYW1LaW1SSV1IKjZnOlI4entkblRqVl1mLjdzSH19USNPN3w6VUhZNSpyWW4rOmdSTCNwJUw2JSJ1SzY/dmJXRmhUb3JDVnBjakkvX1tLc04rJWs1cSxfIms1O3MkSmVz'@; put 'S0lWeXAoVGYsYWQ4ZU5jMlV6TXlERHNjS0RdQyQuSzxrKWhCREQkWih4WDtIZjB0cV41Jm1xLGg8bUdpTzpnX3ZmSTMpWy4jXTZiV25xaWl+YG1vQFo5PUBdMk5BfDlleD18PENXK0poa3h2PywlP1JwUDkzc009OzREcDFFdTF4ImB+WHV8S2ZZZUppKlZJOzw8KjI2K3koNGdVSXx8KV9sVWFG'@; put 'JkRJVU1ddV9RNyFlJE9aRXgsM0dXY0RMZCF6YEsrdDtDIVc7X2N+NSV6LjVeKE9WUXcodDFQdHpJWWlNTXRQLy9aQVsyS2p1YFhVY2I6NEJ4d1VSJVZxPVhRTn1rYmxkQylAdGFGSHokNEB6NnlgYVVJZXFVPFcvY1l9eClhO015WUcwfXpSOmA6Lnt+QjVjRUtMfVlyM2s4fiFHazBVY1BUOzIq'@; put 'S3VDK2dEXlVAbmpdZlJLQChGWiNNdV1KSlQ/d1g0XyxuPlYyK3R7WDxQIyQkcS5jX2dKZHRHJn1FW2Yhai9TUyh2fUI8RG5xUkdHaipacXNMXSU/Z21mX1lffjlHXjJALmBXRCY7O1UyZmZdY2JPY1AzR1ZAWUJuV1JDU3NdMmwjSDQqQT9DLDBESCxpMXspRElsSDpybGhRTG1yfF9kcn5YQCQ7'@; put 'PClBUTV0MyFuIyQ2UngqQkNAL1AiT3ZyWzc/ZVE3NyRgJVlGJUsvfCUjfkNbT259cHkofF9iNGVVVjJaWk5fX0JiKld6fGV9SCwqYGxIRF5pOz5dMTVvI0gqSCVzSF1wfldlJVpUfXJMK2hSJipQYEJzV11eTGpjNypOTWtKVjwueCRUNC9Jc0pRRnFySWZqdkNMaGhYVzcoe31VSDRPdihGMlU+'@; put 'IW95RmpNSm02YWc+RUA+WE9MSXZHeDkqKEAlfEBDKyR2XllGZS82c10lQXNSQGphR0xiXVh2dW0mNTIlODpbOCEweCxxZ0gmRE9xIzViT2F1OV5laCxzJiNKNk4yRFdeZFBtOyRLS0w2eHJeNV9CVWddX1RfMmJuJTldZjt5Rl9CXjxyK306WXozPWloWjI/ODtDOVI6LElGU3ZMOmBgVmg0XWAk'@; put 'TzZgQExfJVdqMj9bMDpaWFVrUjFBMTJYZmMidlVzWF5hLHIxSkcxaC5ZWWp2eSRRWUdZSmBfKGJmQCxuWSEiX0VHPH1LJXJ6UXB2U14raF9vTTU/WHdqTj5gVHdTUmE8cTFDP3wiQnF+O2dxKkQvJHNWak51JG57ZGE2cllNKGs/fGgreDBIR1hyPFNRRjBZNVUiXk5mKSUpKGZgLGowa3tAOTVh'@; put 'Kyh1QXF0JSp2WV5vaFg8PV8sNkNfWEMrO3EyIT0kZ3ghTUZPOyYiImBUUHpvdihULDN5LEYlN2BXZitkWnheWH0mKlZSVXt3NTJTSlRfekRvJWFVN2VAbls8bCZsXlBJMn5YWX0+ZG5VdypMN2grMllDWkY2WUkmSW45OlJ4Iz9xNn5TN05WT29ySnpuVFJCT0RtRCt7VkpkZGxhZHdWdTMxdDg+'@; put 'KmxQIXkudSpFdGIuUmp0XSxNNjZeQDU9R1VtOjdUMlM+NThpX3txMywpMyo0RV8oJHJqLyR3Vk92aHpnP3kkZF8lc0dEeXh3QDcqfl1sTjU9e3EofVo/bUF+Vm4kJjI1JDd9bCpTPClYTXZ7Rnk7fjx5S2h0LmJ4NnZBIjBJOElnNlhDKyEyYjFxV2tIWWZ4e3tjZFtAKSt6Y3hnKHVoU11TIUgs'@; put 'bGBHWVN8c0BmYFZhOipSSm9NazJ2MHdFeWkzZEYzRiMiTC98LnEuIVo1WnolI3o6ZDFkYk1yTWc4TER9QSJsMWRRYGtndCh8V1g5LDpLUl1xO1hDdmxJK2ZDPWwzVUQiQmIxJSVpb2RRUyEiRjVnXyMrYUZ3MW4oYGxRSW5EfXpdSW93TWk5aSgsSHNHWHwwcUY3fGdXRXM3c0ViTEZzWFpJLiwk'@; put 'PzN+OTJAX2pZRH01YSF8UTpueW1EUjkoNm9TRERIej1JdnNuZy5zP1deRDRFaSRuaS9jTVhRWks4cGkmOi85Q2VTY0tsbi90eCQrVykoZjc7bz5ePkE9eElHd3Y/JVcpaTQxSWFQfWs3Q3UralNobVJ+eXVGVUtLQ29He1ldanZoIU8mO0pZN0J5RCJSL3IzKlcvaklTZ05pX1c0RE16KF47Vmxj'@; put 'N2Z6WnZfbWxdOWozbGM+PColLHJEZ01dez8oZkU6Z05bLGNKPnlSNTc2cV9gaU1fTW40cC86IzpRUH4vYUgkQioxckEyKGRVcis7LD4mKnsjTWNQbEspJj5WbUssfnJ3fl07bVFdNylQWX11eEUkcWc+e1MuWnVTIyksOHZaTWY+azdVVSM8UGhofUhiND9rRkd1WlVFQ1FKY0ZBXzZ7VSlrYEA9'@; put 'YkV3dUg7Tj1FezAoOTpRUlA/Y2g3MHJkR2BqcjU1P3VCbkc6djswSE1lRUJvKHFVZ1hOc0xlSVlPSUddb1pNcmkrPD0iaF1UaG9Ke29iOHIkZCN3bUJ5OWJGRjRybXA1MzFPSHRqJHZNZDlpJFhnZUNtYVVUa34hPVpNY2xOUkBSb2ZoODovdTJvSF9NMik4LnxiWDhoSUNMSmt1LCRsbXFuTCRW'@; put 'LG5RQFMoVGw1c2dFPHBieUZOSXxWLE1KfS9HM01fPHY5cTMoO3BGUWU2PlV4V0ZCcSZGYntfO3AqLnVZSTZxKEw6cWtwYUlTbmhueSguUE9dVjtabmRAQH5SQG9qbmtzQFdDe3YzMThDY019QlRwNihzLnZxTDh9aCF9cWsyTDw/cyYyfjFreE5vRGtvNjNHMytKe0ZHYXdddno3PCVePEo9MEpY'@; put 'TlBNYW9VU0l8U24mJT5bS30hNFtJalN+eGsxTCFCLFNpbjt0S0srMDg9RmVIeHU9e3ZrUDFaUiMqZkR4RXY7NSsobVgzX0UsZFQwY3pNcXk0TllyPm1ualp1JnldQ3dQIShqRFRdeiR6OHNKa1JvemxgOUhXfV47SD5KImt+ME1AVjVJSUZnUFNvWnRANmcxMUBrKzlOVSE0WkwiWXhlWFJrOTI1'@; put 'VW9idS46O0Y0Kl1bNiRXOl4pZlRZTCxZP1M/UDdFSSY7K0slWGZSS2xjTVRwWk1iIklPSFplRGt1Zysmdm55RnJBPitRZylyIkBTQEtCKW9oeXYsYkU5bjcrK0t5L1RrLHU3YVdkNXMmcUBRSGlSMCo+b3pFSlBKUnskV0ojMGpOTV42ZHgrLH5tQXxBKHxgeis7P29nbixDc1U0bjdkSGRgKlRw'@; put 'JE99JExtJE5YLGtAKTZbXUFANUYmPHV1KElFZHxlKFYvJFhRMl13bXlKVnR2NkouMTFCVlBNZlIwV3hQKG57LCImc21rTFVrO3dsZGNQWjh5M0YodUh9Zk8/bS57bmtyTFskXWJbPEh+bGZYSVM0fHxNdnopKTJNd05EPm1zUHMjcjJ+RyFRNzpQQ1k1QTVlKXo2OS5uQENLXldxKVZEI055VV9T'@; put 'Qi5rR09EUElsJmxLTkY9YyR8clZlXiZOfTFAe0siTzF6MVttTixoKlJDUGhDU1c2eGh6PiMhJjJYO0NyOXhiVDNBe0BAaXJ3S3FRIi58Ql52Q1dAU14xV2R2T1RuMUorVVN1LD9tITlYT0JqPXVKW2c6PERHd1p3Qy9hV0RWb2loUTUkNCRUWy5oIz5oLzZiMWhbbWNRenpzXmoxZzxudVUyQFsk'@; put 'V2BdZV1VNDdxLmcwQ0dSR3U/YGlGTCYwRShBSVRbV3xILG47P1IpZTAhcVRCPG5pazkvM3M3YC4yOTsyZ18pPkI8WkNoSTYyem14ezFUWDJ1MGZYKUJeIV9TZVphTyVOJTBgZ3p7RyZtODckPGtRZ2MmfCsrVmJSe3ReRXNlUjx6UnE5MlZZJEhjUGo6VnBbTk0lRC5YKHZeIXQvU3g5V1hXM3FG'@; put 'RTMmY28xRGssSU13YHxzczI1NUhUbVJ4MXl7ZVJuNCZsNGssUVo0cCoqPHA6ZXYiYH5pSzB5ckQ/M2ooMktYQGZvTV4wUFpwUFN8LkgjRSh1N1Mpa25DWjhvTGVSZU14bSV+PXhwfiUxY0FIeUdtYiYiQ3hkZ0AufCMoZkRHOTZIbDVWdnEqWntVZV5OQWNQUGxbLF5EUmp1fmFiT3dXMkVmd2dE'@; put 'KDY+aiJ7cjVkSCZte0hZQGYhJDxqX2xaW2Vea3tQYVtBOHxFZml0LDthMjBYeHksVHlpRVE4KW01ZTNMNDAycFUoRFZgKFJKLjR8MCR9Pllwayx5VDJBXmY3Ln5KR2JdTiY6SiZmL2kvRXVRYzYwISR4WCxFKT5bZjVrR3hXYFszRnExKkxybyVBMmMxTkdFNWxzYy9rQENCLEdMdG9KI3Y2K3Z3'@; put 'M2Z+fi5TK1EpMGQ9aFBkPDZvUGVVIUAxUWlERTtgKnxQJVQ/dH52S2UuaDc1Qm9DVF5NVFJteX1Pb1NncWliKztERz8+TkNhXzpmImRWLi46czQsUXZhZ1lmXVBGOV1tRXxHVzBAQm1yWW9nKlMydHAoYipgYG9eVEY2Y15efkVRVERkYztHUUJoTl9tP055cVc0QCldX2U0QypOJHlTLyxqSzZ+'@; put 'PmA9Rik+PnNkaTZidXFyRnhxPSNyJFhscHFSRUteNTpfTHBSdV98LGI7aT15X2whOWhFK3QsXTxCMHdHJCorT3xLX0lhYyxpZG12ZCNDa1hmYlhWKXM6cD56TTt3KiUzVVdhUTl0XylPMnpJO1ZSaWdEbng5WXQ2NVF0b2Y8STk9Pi99eGM+VjZGclZvIW9GLn0uMzheanpqcS5rO2VCRzxOPTw/'@; put 'NV51ZXNVP1BaJDZ7cU8lbDheLFosWmZVZTwsKn55U0ZxW1F2OVZ3OUMre0VoV298IUMwKk9QZyRSMGh1WiYobjtRRjQ8RC8vU0ooW2JuSmgjNyshXmRwWGojK18jKTVRTzVFIi9JV2ZUOlFBM2hFbS9hZH18I2ppVyViMTsoVVErLlJsQnY4VEJUOW9KMzZ6Onk9PnFiSkx1aUNiZXorUW1hclhM'@; put 'Ljs5eTMyI3JSTkVoXyxsVmcpVDBBZEdsNkh+ZW1WUjtXO0k5aXBdPGBRZk9GNnk5RFkzanglMnpdTDw/a2JCPH5RMUUuQnojUGpmMUFNbDd8KEZRV2EzeiRQOHBXSDtGeDwuNUE8aVRYfURLVU1JR1MhKT13S092RERNKS8odnB5aHYwXWMjN3srKSw+fHB8cFUqQkNEM14ofip+WDkhcn1wNWRp'@; put 'S3I5Y1RIN3IraVA9YChHLF50VzlFY18xZkNkdmlUZn52MkB3e15PNFtiX0gvNmEjPDk3Rz45PUJlSG1aRj1SOHtldygzcjBgZmlhTj9OSnZ9citGc0VZZi48PkB+Pk1gUnBKMDNhKzlwOE83SWouPlYkekF9RDN1XXFnXj5Ubjl6NiJsU2UlbUxMTVhkYHtoJkZCVS9YMGc0QUMsYnBxTDlXTGAr'@; put 'ai55YT5vXS97aF5OfHxxNzIrXlBbXjkwUiwsITtjPHlNLHhGVy5ROmpqbUIjVzBHWEdKcipgR3p9cF97bEY8NUddSXxJWVRnNyt5LE5dMjIhQHQxeUM1aT4rYVYwUH4jaTVGL0tzRlFbOlpNMEZ3KTdVazU8ZU56I35UJlE5QHhtQixdTDdQbnVyKyltXlJ2aEluWVJLdVtAKGxGOHZ8ZE8vbUss'@; put 'SGooLixdcksuXSIqYGBuLm9WWlZVelBOKkRtNytiL3g5eTwpVWlnQltLSXljOTZeRDJ6eDlqUH1vLzlmWy5hPihzZjdhKV4qYXg5P3dNQGhuZ2M1RDUpOldIQ1k1U1YhLlp3MyQjbHhYVW1WISlMZXIkWWB0WVsmWmNsKGtbQ35ALGEhQy9NfjA9fTprK3JWOmFMVlRBNTU/O35laVtReHt0fkZ5'@; put 'LzRaOkRHP3ltSX1vLmw7Y0RSXVUvaixdJWJqY302cFh4Lj0odi4sLF4rL3NbSSVFeVZXa192Ui5VOCUyPFMwKWxRSzIsa0NEUntUYDpBOWFUT3YwIVNlVjNCeFs1XVVAe3I+X0w2eTo1U3Q0NCU/T2BAJFo+SlBGSnhqOytHXWhhOF02XUR3U1t2WHFoflAjTnMpd21hUCoySD5zR31VIkJ1c09H'@; put 'dXIhRmZ5fW9ZcHZobXozYmQuVCJ3Ykc/RT9GfDlOcV9aeGEhWiE7aig1NlNvX0dPNlZZcUZKZz5Ac343Q0UjYDFlYCNkTXpQei5EX1VHKHNVTllSWG9YeyEjVWBMZC5mXTwqMm1WSjhwcTohOF9kakZqSGMySGVrNjlib0hIJColeWksMHNpRV5CKkkiPGgiJmw5YX4ySTpwVnBYYHtsNT9PZCtN'@; put 'c3tAQDtlU0M+LnRVMF1jP3sjNz1LZiU9eTsiPXBeXlREM3xqOjhKVUhlPF82P1pLeTp4RVtvXzNLSlo1JEB3WzR6UGAsIzpOI19Ze3Fhd19QXnUyJmIlN3AoLj42WUhNLzVkN2JhXTg9QyJaLykodip3Z35OY21VbmdITWlxRURNXkd7c3ZDd2pHY0BBKH1IZzNKaTsuMyx7UFBGNlB5QkJANkQj'@; put 'fm11SXhNTj5LdUZIUipYNm58U3xTcGhQSmZieUcueXd5YGsrOnNQYzouZSx+SjZmL2pRYFBqKEFHQlBoX0IoaGw4cnBrTzIrbXgiOjhhb2EjUlh6PShNSzxAMl5nPlQxTDt6Ol1AYSM8QXBtVUZHXzE7OXdeJkZ6fX5tcixvfGBuRVIxdGJdUnR4dmwiaUtPTkVES2w9WlFCTzVjVWpPVClNPTk+'@; put 'SWQldHhnKnNkZiI3Wm0sLH43dSYuMCZlMV14PVlifVokM1ZDPSYxUld9d0JHdVslXysyWyQoM1ozWmcpTVlueWtjcmFZSDo+YjI4QypqRiZfXS5xTFNoIV1aRDo2dzlVS0d1elQ/eGleOW0mMzUhZi9YSFhueSRFWT1rMitXYyJMbko0ZGpNV05wOHAkb3E8dWNNdyg3MVtnYTBCTVVzL254fE57'@; put 'SEAqUmRQZUdJYiNNKTAkM3gvITtWeUM2SWM/UXtKcjQsbSxbeX1wQjt3ZzM9KEwvTWg1PXVaOV8+X1ZqO3JrVVk4TT5ANmwjYXNlcGF0e1E7cV1DUUE0Ois4ZzQ6UH5PKU8ydCpRTCFxcCZCMiR6X1VCVXpoOjozYW1+aTlfKkphIzFZJjRaXkdFOD97U3VNMiVTTD5iRXo8RkZoYGovd1FvTk4u'@; put 'MSwhL2VGRjhiVn0oKmNNai9VKDt3RzIvdTkuV3ppXj1PI3lAVSklQHwrZXFMeURDfFNTdk16V2RDP0R3PzdvWjc3YDhLQypZamErTHM0ZSxBN1Zwe0xgISxRREYsPVBHemRvaXR7WFV6eVM5KWl9WGs7WGk0LC9rQF4qJGtGUHsrVWg8YnZBYzVhb2pjSEo4eDh1TGZPUENAKFJTPUdRLFQ2YSIx'@; put 'WV5bUlI5Q2RpPlciI0BqUDgvX31PUzZ0LGByMlAzJlpdeV1Mckp+IUAzKTxNY2lCZFdSXWswc0UxOlNBcl1sN3l0Oz9XQEEwcWUqZ3IqUmR9Uz8wOjpjTTorIyFsZmo6KHdjaixgVDxKaVg6MVJFOzI+bk0+MENZTS4+Ui9+dVlDY0wlTUtJMyx3cDIqOF9bPE57YDF7P0JXN1FNMj13Om8lK3VJ'@; put 'Tkdkbmk1SHhwPEhobUQzTk1mKHZNRU5mfm4hNVhzW1lDfjJDfVdudlNFbFBoT1RgTDE4Y19LcjFSLzs+fDwrM3xuWCkmLFI/W1Y9NE5MKn14UW09emRlVFdpUEdefXMmIiFgcXA8TnhDYlZjfVVCOGZfakxoaDMmNFF5ZUdzWWJ5cGcrLyV7IS5AInI7N1JzfDleRzlpYXVBLzc9RkQheCx7JkdT'@; put 'eUh5WSIlMkBXO2lIenUmOW1FYjkuV0EyJjxJb299U1p9b2dZdTtgbmBCZSpLYU4mJmpubVR9ZSZVLDZaajZOeHBLUWE4QWNRWyo1RlJaelBnMTE4cXFrKVF7MntbOyV4Q3J9bWQ8e19ieFtgXnwkT3dMbFNVN1A/UFNAdiYzMzJiakl7O25aST4hWVs0djFES2l2TXNpOiUhPzYpMUVmVEd1QzJn'@; put 'dU93Z3VwS0Nxd0xMQC9dISZKMWtSTyFtK04pOFNlbzgpNns2P0ooQGNPMj9kVXpsPUIwRSV5fjhmSjpnZzByPkQvJWl8fiwiX1RAZn5rZjIsSmlGRn04KndtYyFCTUxvW0J9TGtCcD48MmRuL2ljOjd1K0xlTlE7NV89T3pUfmFfNyJNfjh9N3BZZyJUKS5rZnBRLkZkaWE2dko7d00qTjUralA2'@; put 'Nmh7aUp7Rk9bRjpKQiZHPldGQ2tUZ2p0N05hUz5FeGMwXlszbCVdKF5mKF1EK1VFdzMmNCtQNGE4aj11PVhYXnxzXlE5WDM3VTNIOldwKyVOU0RxeGJ7K20rIUN2QkdodDYyUk1XNUZ2L309ZEwjRl5KTXtYVDsjTSpNZmlPL0VRcD54Z2NpUURjXncrbDtTIlU4c041aTI9PEVUaXtkPmJYVFZW'@; put 'IU5+TzhkJGRkSSg/IkhnTmM7ZWNqZE9UUnU7NkdFeXRvNk9fYXpwJjJbZ2MrNUIhPTpuQzRCazFTUlpZeDVAIURIIVhVbXcqYGU4YmZnJS9xdmJ6IkxhcT1FK19dckc/cSl3eEwpJmVMRSE+RHtrKFZkQUdTdD9pUDRvPjYvS3tyX2RvOGo1NkY4YyIwc19SamB0aXlMPnhhSCJYI0JuYj9bMU8o'@; put 'blZBQ1MjJjdOOHJkSEF8I347YXMvRjVjV2BCUDNZRSMxfmdfZDk0Imsme3Nmb0p6bWAsJlVxPnxXSmEuMlU7OmRxJCl3RGs3cT90V25fUCRrVkxESDpUcGI4T3pAXVB7VzMkcSpBczVIUj9zSSgjTzpCOktGMztzbGA/IlpfV2RJcD1bUnx9V1NTOnp+TFtbVVFjKnhQKmU7I0QlPSp2Xn48WXpZ'@; put 'ZEM4eFpBaXJvNj5URDVoblore1R5LyVVZXw6bF5oeSsrbj5bMkEvUVZ8SlBnVEpUcVpEKyRVJTViLEp9KUZoUVo5X1t6S3x1NDFwJXhDO2BpaC4hNGhGI11hWD5NVFRnaktWOF5NZTJqInoxWT9VUCJHI1NJaD5AcklqKUN+LmFNWnVLeH1gPEI4YEs0SFFQPVI4NWFtfU14fCw8UH5fUixWd0E7'@; put 'YlFVZDVCO2NDaXs/VWtUc0xTPCI6dTFSREcqK3FqeWlZJmAxPEhBO3drWWpDKCYjeXtXKkMxJjFjT1Y+U2QsbWcmYn1tdFguPkRvN0xiTDdLUFlMSGZSWkF3MilxeD84cHZ3TXB1RFhCPCU8eSVwTl5VTHFbIkovR2hPUHROZjtGI0ZgRSZNJFhPMl9jSnRAYDtpQmJAeDpTYnkhP3d9eT5XVSlJ'@; put 'cltpQ2JoaEx+OSNZYXd4UD81VEB5TUJqVnV4b2QvU2NvbiEsPFslIj5mQlNWKHs3PFVhfl4/UHNOZ1V0YilGeihhc3FSIzMmZ2xPMDkucysvK15oUShWKm9ASixYUVV8Pjt0Ty9wLjUrRU9KSFojcFRrPTc8N0V3andsYV84KEVfZTxjKylpdFYoQThZJi4wbnwpQVskTlprVFMjJl5EeEJKcSYw'@; put 'TVlHUHNHR189RUhOPEZUfi5hSV4qVCZnb2IyZytKWVViTVFadkx0R2F5e3YhOEdDYEJCUXZLdT8oZmN4JE81TjpoRFFEP3kiV2F0cCpYbyZhXUNbUTslIl1uUkspWCpFKEtKfWtzOV9RU29XTXUpM3A1PXk2WUUrOSRaZlMoeUxpfkQvaVZ4cnMiMS9hRD0lI0RYbnY8SUV6dVE9VSp9SFRfOkxE'@; put 'T2QzZ1FTcHUmTWA2aSMjW2kvSnVjVTVEQSRxa2g3NXVTKl0+KjxPZ35SMW8yNjxWV0d6Y0hIYXt8Mj1EcXZ7OSpSTzRfQTJ3RDdrRmxuTDZeIUM2XWkvR3ZEaFlpZipUdF9kN0ZjR1E7aSlAWjRPUE8jcGFRMURnOE9PU0lNd0RbcXNkcmIven0oJjdZQmNoez1YbFUjPFtAMHphPGU1Nyp0b1Vu'@; put 'SkFlL1A3R2Uwbl5iPX5YP2AlXU9mYE9SI2wpVjNRbUhhTW9ieDwhMmIvRD1vNmdOb25PUVVIeWBpTWwzZDVELkFwX0w9dkEyYTAwWTRhV3NuQV4iQEdgSyQuQ0QwRWpxSUdHbTowKjJAbihKNGpuZUckbXlXVlgsRGFbJV8/JUZTPjApdWo4ImkyW3hXdE1ocV14U1h3UVFsPi5ifWg5b1VaV2lo'@; put 'Kyp9eXByLE9MbypCe1ZQfDxvIWVuPnsvM1Q+anB9LEUjPnxTcUw1aEA6Oiw2YEZ+dnopdmddLlckRjl2RTYiazczLjJNSDsrdUFTNXhyfVo/QXJkV3YoR3ZicjJUNm9LOS5XY1NTdz43SC8ifF8sL1dVXVche31manQqKVA4cXd6fFRbcH1mU31HaEswImpRTWFvant8cFQiM1FnZ0hgWUZDeTB9'@; put 'Mml5Vy97aFszR0llTUJDRUUjLEFVLmFoX3ZMaEsyQFtRKnk3e2E0QDRXdHlXQ1FtQihRcFZ9WWk2P3tCR1MqUWxncF9KaEZkfGxSNTcpaUQxNTNYfHJvdHphJCVJangyYUVNKV9+RzZnZ0VyP0QySD1SaEdkMSs7Oy8yPUZddWEjOng9Qz52R0liWzhCQSohYiozTFBkRXVFUFB8TWw1M31xeDBX'@; put 'YXdrOiskZE0jdE1tI209d3tqZj8qWXl8Sj5ES3ddUVNNXjQvVm9qNVY6ckojRTlYckRtUVlydUhTPjV1diZ7WWBJQl9nezgmQnZAMlg7ISlDOW8ze0RuUVEpLDcqZ01PfUszcS4mRGV0bWpeY09VRyYrSXd6QntKOF15YFBzYDlqQWJXVSpzaC8lP2o7WEspO24wUmk8d153SiIkUUZHSnk5XUEy'@; put 'NVYoUG4/bz54dyEwcns/Nj1dL2NmaDBkci44a1hXUWN6TihLR2tjXSlgJHs+RHh5MmlQS0dwOnF1ZTpIMSZVeDY3JV41M0Aiey4/OTsrMHkpPlhtcUBKI18pSF09T3lQRjJ6Uk10bFQ8IUd9RWAsaUdZWlFhNjksdjNuYlg7K1cxZTMia2hydHM1VnlMMUpteENPbEkoQGsiIztUY1VsME1ycFNi'@; put 'Q2JhSUtbJSptOXFta0NXeHx0fX06PDI9PUVoJkpqRW1HP2puQSZDeDt6QG5PW0s1KGd8ZzBSYlcqWytRZCpROHdCMD10Jk5Ha25RTWs8IXlwUiJoK2EiXiJWZFdlfCRObExyLlNBPXlZb1dScTtbd1REQVMmVmc3KWVzXV1JV044JSxbYD9RPHkpWEg3MXJnVl9iRGBsT2tNdzhLbXFbLjdHVFIp'@; put 'clR0ImZJSlV7YTJeOU93VGQ4d0MzIj5GTGBoeHpbMEI3ZyF6aH1mTjlMMHV1djNrUHklL3ExTXc8cU1lMSMiIiE8U0oxVVljYD45P3l1JENaTjdOUmN4WlZdTmlmPl9sRy5tRV5OMjRlPV1XdVt0OHUrd001ay4peFM7LykoXklPVkN3dyx0X1gpQ3Z9UUNpX3E9K117djovLmAwPTt5b3dCNitM'@; put 'cEYxMjR7T2JZdFkhTlladXhJWkR2aFF4R1E2KCJUUE4qaEYmZ2NFJHlMdH5YQVZZLl97dTF8fnA+M2Zwc2IwWDZyKzlYaGJhRyR2OTY+SmRgKkh9bTY3UG94LiV8aitYWFMqQmtVNDF0RkZye0tUZV9CVndid2VZXk1jaWB0QTluYFs5JWYqQENpJlVVanBTSGk4cFdPUz03QHVRWHUsZHEmaT9l'@; put 'OmlJdW9BV08qWGJfKT1RO2ZGKCJ6Q1ZQO3VFSTcpVUA2dVpdMHReLFVieXFvbjdlSVNqfEpjKXJKeCZqUE1QTSlTJHN0I3JmNUR6UHAxRmVCSmVDRnBCSyZHdlA2IygqfER0MlQ7YDkpOjN2QlBYfj0mfkVVOm86Q0MrKz5vNGVqfjV3TltnP29kMGYhMXgjK0pLWmNQSj0qOSJZcmUuSjdLYUE9'@; put 'azApXj9gTmJwJSh0SD9rP0M8MSksUUlQUDdsbHpnLyxzdypXfDZFPkVja1sycEYuREAqSiJyTF4mP0h+NCJ9Y1hrfTtWQ0dldV5iIW42LyFBbU1iWi52QltPbzs6b3gkOU1CPyZAcXJ9KVQmcF1FT3hUN2grIXZ9aUZWMihaZ3pPMDdCIWBzLk5DNyIrYSpvSSxkOzVqM20/MVIpRnFjTEkiPmR8'@; put 'OEFAOFAiOWhxJiFXS01yUTM7Lk1SdisuRXZUMHRgaEtLbWhsLFB4NV1VOX5RUnkpc2lmLlsjYGhIT2tqQExCTyhDez4xZVBQPEs1WzcvPzhOe2VvalQjPEVvZ05uMWJNPXQuNHp6NSZfJXc8JitxXUt7MiohWHFhLnduSz9FN0RPakM0UkZQT0A+czJgWjovcHY8aGcwO1N9TEdUO2xvSVBaYzhk'@; put 'c0BzKHp3XitVOzxIayo7TkBAdXZrTEpbSWpueW19SHltUilhS1ZbNH5Vd0UlSlZrfXdHeDQ+UCMvX0c7TCwjLkRHbjt1JT8lUTc+azQuMmFgTnAueit7WGtXTFhBWVRUalQlUHlWNnhEdiF8WylnQXhLa0xWQFJ9QUE3dW4mdDJhNzBUVzt5cFg6XUc7NXxiUjslODokaFhZNSMle2dbRzc7bGhv'@; put 'Pjt0VF00Q0ZfJGpwVXBJUS8iMCUqUCVJPEVrRi4sN1p0QStEOSEzVzJ1MWw7cygmeHhBVSx9UlpjbW8iczBWalpGYTFpXWFoOHFdNkhsLypzUExYRnlIfV45N2VXYnM7aTxRezc/dGVSPkMmSUpVdiZWTiooVFBgb2Jtak9FLFhhWEUxVTE/aUx9NT9vfX1rYzUwNlRsRE5gNjVmfUNndC9VSmVj'@; put 'QzkxNmFlViNSSyJAJE4kSGFUIVhbbCJoLm9yVz1HSl8kNEFWKFc1a3BLbmBeJURbIlF7ZnpvImxtb1p2fWNgQWBeekNba0NheTtnKXVsZGkyaWssZyV4eC9HNUIjUXc9fiNwMmJxTjpNTCpofltocU5JWUNkbCJlcVBkZE4uOG1bPiEoTFp5amBDJnpkcHxQanpCdEVEZW8kVD5mKTBTfUlsZ3h5'@; put 'QDZzJjJTeV1DbGBhQzQyR3gmXXpUUFpbUVNzUG0xemJLWHs1Y21Bbks7ST8uLnU4REYrc1o9fVZ7US5CPmslbTcxTk5rbj1baVFMI3lxTTdYU09jJiomZlNsVyNfZ0RyezFecytEKn4zQmY+U0QpdFJnNk9mKS5xalIoYX5Xd1thKzBZUkswMm95JlNxWlpLbEIjeHdLVWtuVCtoKVJjMzQ9RDNL'@; put 'MHhwbChuPGlkOV87PDhNfiUuPkAocWtLaD8iWi85dE96VFV7NGxjQ2NkSn1XcW1XVUk3SDRTdFNrckExeHBLVm1fbnlUaXF8NXw0ZC9RSlJxN2xbWH4iYExvXkopUUp+dVklbDhkZiNWelVdU3pGaVAzV3Y+RC5MVztGclcmXjphfm1kSlBKUHVjJl8sXnNuUTclX3JMUlhzRm1mQiFaTDBtLGQ3'@; put 'STU5ViwrJXVrYSF2UzEpPWt4YjErTFo/JCw/PTg3WlVEcjpGXkFHTW93IVQhL01vYn5xVmJHXmMoeTojUjghWH40KmN8OWskOUpFZSgqMUMpNmUvKGVITjl6IVg5WkRmaVhfYUZNWjRLXlNOSGkjWkVdWTBLS1hnfDVndCFCYkUzT2hEOUNNInk5Mlh9TEIiOmo1Pnd0Z30sJl5lKSFGI3JxO0Zx'@; put 'QjR1PUQjbzo7YFomP2h5NlhyMmdmIjcqbG8xUStYLEtIZVRAVEJFOFt4PHpqc1N6PTAlMUswbGMzR2olWnljdmFTNWUmdUwrTU0+dTcjSFl8c1Q9LCUoVDV0bV9FLFp2diRSemdlIldLaSxlKUZRdmdoQHdfPS82JGhYYVY1PjpAM2xLb09GM3Y3a1ZJSWVnfmdZKz1EZD0kelZMKllPR2VBIWR3'@; put 'QShQND1NXl09UWhqLjlhWDYsU3pxJXIkJD9ufXhEITtbUWhTbmBgTWpCSShiVW0uKUYzblRtelhxalduT2pzTXwmd2xJbj1dKHx5VjN6WEpAOSNtIiRqazJtRV5gNi9VW0wuVEs/cXF0LmVrdnN0KEcqWH09YTJTXll3WWxVVEJTQl9Wem9+bCRAZmh2MmZfVjBHPEZVX09oImo6ZyYlZGA8Mn1s'@; put 'Jj1vZ0h6SjJhTy4lcyFwT347V2Qwd2k5WHg9QENEbktwWVhYWkIqIUQ4bmsiPipiVko8dUlFPEkhJD1tTlZEaXxwTyhHWnY0JVRpazVPK2Rlb29VTVRkcWAjKDM/RXJBejArezpCRlBQViNbPF1JTigxRytwQEhaKy4sR1pCVyVjLFUmRy9UJEldcCVtS08le2c/OTU4L2F5cFlMZEYlaENGei5F'@; put 'Q1Q+VDteRFZXIV56Zl1tYSFjMV02IzBVe15kO1B7VD4zLEhvPGdgTl9iVHZ+dld3ZXlCN1BZWjQvejVHQ3dXNVhval05d3F3cnx8WFVLNmdERTlwazlBaDRLJFdXdmMiU09WaVh5W31yYSxbMmJhK3QjSWEoey4uO0grdkxiSkd2bCwlP3lJOVMhVGAyJlNwb3c4KU5EYUtfSjZ+JUB1azdvcVRT'@; put 'U2JBKkoiMEdrV3BNVl4peHNTZHhBKy46TUx1dT9YLkU8RF5PMyF6Tzd+azw6WD9OK0oraiRwJVt9OHY1a15JYUpRNkh4X1tTWUchZlZ8QnZURStkOUAkR2xES2tqaEw9Lm9oalRoT1M3YmFBdmo3SSw/MlNnLz4/eFhVbEIuKlU9OXRncGBITChJcTlZSj4sPz43P0NNfTZBbTBdTzZ1TXE8JnAw'@; put 'UiVCZ2dCbDMvXj0rYzJ+ISUyZn5DPytvOFMkKEJ4TXpzS1lSRkk9cix8WzhKQ1lVajRVNEJkdHhFWjUmO2c/Sj5rTT9HRlIvOjUqRSxgamxSSyoqWW98WVomSCUzfm9DcWNwWTYpMDQzRGdgJXJpUCZ6P0pXQ19baHxYW2I0WFk/S1prIkRmMyZGREs9VjBOWiskXm9zaihUY0xjWVQqcD1OUCo8'@; put 'IkY8Tks4cXsvaW87ezZAXStmJmdBeHxJMUJLSV8uQH5AUlg8NF1vbVNTQzVsUU04KkJ5QmNQVmlpRENmNH5gOWNGbWVEYT8/NU5dSz51ZkJDWm9KWS9ERnlkLlJwYzl+cypYKUtlMVB9N1J+Ljx7NjZddH1mLCpbYm5CWGY8ayhPbzt9c2RQekp1bEpoQVNNMC4iejYhWn5HZkhLPUAmQjRWWSxL'@; put 'fDhxKHI9Rl5aRm4vaThhPF1EUFI5TF1OKTZuSSFePTAqP1lqOFElLkh+O3YrXXIpbkt6c2VUX2VNL3tve1BfJH4xKUNxS0dONkF1Q303PlRHKiQ1a11nZlJFSGkmM3hXMkYscktEST5PMihaQSYxVzkjOTEldjdMdk8xLHl6SWlwajNqejJ7WTdOPG5BYS5DJilybEtadiZLRSZUNi4/MS87b0Fw'@; put 'OVNMdXlhOiN+PHJZUXAsWVNxIWdxQ0dIaF5dZEw/Q2Uiby5FT3oocntHQDVPPCVqNyxrOTZbYnFUU2lZM0Z2RyxEOE4qX1puQ2koTkRgcEkqZ2dFSnkkciEzKkI2Zjt1fH5kXVNMNG9uNTJ4MVlMcWVkcyVaJHw9SkQ2TnkyUF5OUUpxPTV6OG1pbEZ9KiNDfkUlOHg6YD1vOjtANSZkQ0FtOl5V'@; put 'cT8ofCtzb0t0ZXVuVF5NSyhbdlVsLHxEentAJDEmUnFqSiwvLyUvLmN1WUB2bjhzcj13VkosOWZJeGc1IXJTaz5xSmRITm8+WjRFJGhwRzkpRT5+MFFfcDFCJitNPjNnXU5kdlpaZVBJS1lRIUlWc0lKWDpXXSE6akRtIyhHKDome01kdiF0ZXVDJnRheF5wV01zdktTOjJsUW1sZTlGRGNHbXE/'@; put 'bExHNHs+P1JsS0heZFsmbnM/dERRXjFIczNWOV1QQiVsIlMlUSlHODV+PEAsVmlFXzgyZi9vbnQ1dE5OWUpUc0AjfjEyOSxnSyw8ZSp3WD1FQm5VbEdSTTchOjRMaWhPL0s0bV5ZTDZ6LnI9dF5jazJncHJHV0ViNGhgR2NrQj9odCYsLixFS20oVjE/Knc2Ii5oa11aI30qd1t4cjleSk5gW043'@; put 'cS9ybHNoWCxoMlZ6O2QuPl1fSz8pKlc6JHxJY1pNMio3JDhINmRXVF9wUXtdKVtLZmclel1sPEZ5YypdbCtWXz5kNzJocUsoeEdmUThFcV97OGE2YFcjekY0OUJAe1MqeFc+eGJjTCJfIiRdaFd0YCp9PzR0Tn0hSnYuWHVOfV5LQjNZWyQiZEBdL3R+fDlOPCJTZkpAWSZ3PDR+PUdkQUs+cFAl'@; put 'K08+JVElViUiPHolcjxkMV0jcGh3al41PTtXPGc3THJMbVJoY1E0Z2FnVmkwbWIkTCt4dDJwaDBIW1M3WitGd3FqWmh7P14qTl9CS3MsKW18WH1uOig3Zi93MV4qUTxwNGpwVFloLzxoZCR7IiRtNTdpYCE5MyQ1LiozVXFIWGgpbl49WzsmYjk7W2Z7K21tN3AlN3JDcDBkaWFnfkQxN3lKQWBY'@; put 'aFVuNkdXW0FgMSt3SklROig6VkAyIkR8V1hrMjVdXXEvS1tHXTZGeHwpVUNZTlJZeG47IyhTOSVUTkEuKTspOSg1JlRGT3o/JD8kJF5GX3xlPGU5IiJSSmY8KURVXSglbWRRYG9+TFRnK0lGMVlwXTwuYUlQQHllZXYsOiR2RShMbiYyMCt2LnVYaEkoV1F0SUZscmAhQUNDKiwvOz97UyteLFJj'@; put 'dSsyYyY9Slg1ODN6TDYhZHp+fDYhZzZkKGY7T1RYV1YqU3U1IXw4OXEkI0BbSjI6PWFHaUldY3VhTmQ3KGpDYnVORE5XekZyfFpTPzpNRHIvZnFOIzlSYlFIOENfMWs7UkgkITkkWUp2JlU2d3ohOSpYZ09RM05PJFZUZ1sqUTlaKmEuKmpRfjo1PGd5PGU3cEJHZyModmxMVHVlU3NwRXEkQD1Z'@; put 'NjFoY1lPX0x5TG5qRSVbcC9rfV1Jc3pkU2hAfFJEdkJXNS5LRjtSVHNlbGlEZnNtUD1eODk/JXYpeEBeUm9CamlSd2FORz9fMHpoNFNHcEVIaH4rXkJrRkRMUjdAV25VVzhAdE5nLng1LjZ0Yio2ajpyZDdkJXdZOlJjKXc5cm9lTjNYNShmcXsoW0E6Rzl+Vmd8TTd0I25mPGVabV5MNHBAe3E9'@; put 'OUAibWhESEByM3FdR2lnaHtsY2opMnFtc1VlYE5OLlQqcDxzVF0xVGs5UjBHNVEzWGhdWEtsTlUmdHM2MU9NRjM1fG5Yd2lHbFc2TmpgWlAyO1Q9OGlyPT4oOU5Td15sTVR0I34vOXE5cHVzc1Z9b2hHfW9lQHRuWT06JUEvRWdkXihiQnVbLiopJnQ3NkZ7TGxyOT5wJnRKVGY2YEd6bll1Plc/'@; put 'bStnSmRbcDMzbC9yST9HMGFnVlY1MGFXNmE3dWRnM1hmOjR9cjxjZ1M7TDU0KTNObGptXzFAMThHTTZWeWs2djZGRklwLi9lOm03dWRmSzVHX0csPXN4N0ZxRURTeUxtNW1raWxxS0h2QEA9JC41VE1wa3BQKXhYXTVVY0E9cH1JU3FpfiNbQXckayFZfko9OExwc2xHfUI8RSE5Uk5fNmcoej1U'@; put 'ZWwjejNae2t9b2hqSDFsekhGdUZRdUR9RXk3KiQ0bzJUTWNDVjhyczdSfTxdL1A1VE1wOFZ5cyZ8W3tuVFlsUGcyOVJgODFiIjI9MSlkKU57KihKPHhSIWk9fi9OKV9NM1omemp5ZDxfMXQlcCR4WW5ZMF1aa2w/WnB2Q2hNVHNBZkAiJk01Mj9SQ1omalVnVW1mRVMqKTAvUn5OMytAQDE8ZVM8'@; put 'NjNZNEU1YmNaeCQqMn5gbUlRUjJKbWF9NkckK2h3W0N+TTxYUV45Ljs/TE9MM3RsTT9hKEVaSkRTb0I1T1FWd3QmSTMrJk1VIWdqQFppMzIjKDQ+YS4yV0o1MFttfDVpbDJ1aXpMbWwhK3gmIk10VDV2TUBaWC5QbHo8PE5VbXRFdHFMbWc4Snt5NF4kJjsybTk9cTNEJCpFRzsiSSpXOld+LG1C'@; put 'JmpzPlo1Q2p8WigwJWs3WDtXUFYsNiphZVUkYkUmXm8oUjViYXJIMEl6a0k3ITFjTWt4eiJSIWFKS0xseWJFKiZHKV5dVWpWW2cuUjIkXjBOP0tCWUUuLHY4Y3deLlFiY1llWUhzdmloT0MsQUEsUX01VTl9bzlyaiY7MFU7fThqS2M0dU9dWmEwMk9uYTowM1BVZm8hNDw6WiN+P2pSd3d3PyF7'@; put 'dzheUit3NzJhcyxiZHo9KmtEe3s6fSQ4K3dwJCVyS2kiOjt7VjovZ15TK2FOYEhlVXtvK2VtTzhvRi5QTjhnXWtPSzUuMXNKJXxAYzEiT11bYTJ9JT9rTDtmW11DOjNlZC4sdVBdSSZARmo/ZWZkPHBzaGExL1pjW1VnK01CSXRVLzYpUDR6UCE2anZaOGpOeVh+RVBSUypvMzlPIyJAOVIjdUZ2'@; put 'ITtpelJBLklUbUteZzNOci88QytuVSI6ISpnUkgmMitvKXd3blchfFhdbVZgK01ERi99JDd4QitWa3hBcWkuKk1COFt7cm0oRT5IVTBFUD5ROj4/SU9KbjBsQzQ9e1ZCfTYxPyNZLGFAP2ltNC8/e2EzVjoxSCVwdWgxTyxMNW46OEVHe0csQGwqbzwzMy5qQEB1RWU4Q1BncStUOk0oZS8wfSQk'@; put 'ZSk3I0A7ZS5IdUtjd0wmWVJXfTI4RGArfSs5T2pPQ3lmXm42aTtCYXdbM1t8ZyZIOSZxRkomUkBLUnpuM055fDlKKmM8ayl+THJdSnBHKSZ0KXl+aHBgMWIhTE5TNjdSLjttfj8sdGhbP296JXp8VTN3Zyl0S14hR3cvI3lZSUhgU0olTmUpMldLQz8+OnRWeC9uN0w3P0I1cStYMGhYNVZdTnV1'@; put 'RjVMSFtjQGM0d2VScSVodENYXWAoUU8qeDJsL1BjbEVHclNqcEVWZW9hQUM5QzAxTUZnKmw9W0dAeXJ4c1MxUHhtaTdNLkZyRUI7TEVQUCU5TH5JM0Y+Y3BaXmx1PT5mfl9yVjtheiZBYTBVJmRVPzZ1eGdlYCIsWyhEcGYmcFBBOXExM1lAOm4oLzsiJE9OJkYuZlhjfWdrNWA/alo2MF1XVnJf'@; put 'XmhKJFFoQ2VSTlI5cSFvVDx9MGtRRyFSN0g2OnB0ZnIkfW8pOG9QJSVJM3ZQWlJ4YT9tZ2whRiJvNV5wYGVSQntPIyFZOSR5Y2YuSC89Qyt3WHZ+KyhSTXBhSm5dcFtpaWh8KjlOcG1CQyMjSzYxInR6aWlsYXsreSEwdHhdYntsKSMzKF0xNE8vITVAZ1BlTlNSR2RWLHhtSEsmZlRsXlk1QCoh'@; put 'fDRxYXpPbXpEQCNIRkB8P2o/YyRoamhtVURJKzwsc1s0bytSVGE2OUU0ZjhvX0t8Lk5rUU4kYTU6c1tGXzElUmU1aVV2WTY6Z0JvbERtQ1BbKHl3Uk0pNjtVUSh7SUldTXtNdVNsLEBkM3FvMmdAZkNxKUArYSJldzppYFo+YEh2SGRjTlF4YWM5SVBeO3k3eEgqO3RQWDNyb1llQnc+fU00OyNa'@; put 'NiokcURiMDFmbTEmL0hLcz5pTHNFNDFebmlnayx1bHUxfjluUHEsVE1KNkckb2sybUI8P0kuUyskJm9BJUUmcH13X0lLWCxbKkRtfCRrIm57b2oiIUo4b28jaXkwc2dDSnhzSTEoQD9CTiZeUUYpWkc7SUJWPz9RVUIhRVNCVnVvSjN9M2xFNG5gaGNRYWNsNilUZFJlckdKbzg7eGFSPXVrQmU/'@; put 'TTVBYllQbykyVnp7O2VrbWJINH1NPDFNcyk2YmIwMGZtXTI+bSkmdDE8PnQ9e3c2cGRQXURzamRkMDIlQTh9PkNONnVvKj5fW2ROQXJqbThBVTlfaEtaMGpyd09CXThteVNkYiFyWTokW18zKG1efGNmRVRtVypSVyw4ZEdlLyJbMkAwXmI5cE9TenI4TThYMzJFZ3I9eXtUJVlPe3U2LEhzQFVu'@; put 'NWt9LFRxK0h6K1RJOV9USFFBWEo3KVUjLjZgZD5UeTs2ZiU1JkZhPUl2R0B5O3BTTT19e1szISVfJHE7e2FuNix8YUFeSEUiTXRQJj5PMWZVImVuKFFFVyNmbTM7d2ciNFFEJkI3NHtBTnthKzY7S0xzeVomQk0zL3drPGY5QFh6ZE56Ly41VnM3NTR8UXtSWTg/VDQ8QUA4UXtBJT9nWjdodytN'@; put 'dlljV0BLZU5OdnpRaTlGK1doTGI8dXNRa0kuei8uOmU0MTxlbXYyXVdHUWtITkpqTHMreDI9UzkhMm8yMi5kM0JtZ0M+UEo+M2NIL2p9TFEsQnhtVSopLztnbzkmOzVVY1txe1E2en5vM2dYeUBjaixRX1tVY2VVOztjSTdSVCppdXxjTSJqLCglcE1LKnFbbThaLyY8SmtyWG8ybHpuPV5DZDlk'@; put 'Y3ZWKjIxNHpPa2B6ZW1KMDBePUZxTzM3b0NrTyMyekFVdk9INlkwPjw8cjxlNDk5OVs7c0wzKkUhfilZTHpIfXUkV29nbzkmO1QkK1ZpQFs8P10rc15HNzFYOE1POTAyPFtdRHJuUUYmPmd4UF89TyZlNW04M3Y2OWBueUg0NXQjcDFzT1V4WkdhSUwvLjBjaCEubWpsPGdQTUYrM3gpMFIhfn1A'@; put 'WntRP2gzfjxEKV1lNDlGY0FfbThofWwjUjxNXXsjeitlPis5RXM5bUtodFQoSiYxKChjdXxAQlN4WzgpWHtrUyR4Pzp+bHhQMiJZdmBTMCskLlI7VjVOU1RpRkJaMTpuKmh7ciNwIjMqLi97TD06e0s0M3BGIkI4QVlORSZwSFc/ZyU5bj1jZFh7XmBfJDV7NF5maER1azByPjF9XlF9amc7OHx7'@; put 'TU5ydm8yLjE8fG1iSE9ueUgwW2heOT02Qy5KT1IlRzU7Kkc3OTVOfl9GRCFEa2gwJUl1TXNJXlMpTmFtb28kZiFYJUwudUxYdlUwQ2t2MndQJmhPLjJjJjJtPGRNMGVOeV1mdWFfLnVtRVJWI1A/TSFva01MQDUkMjkjO2VQS2ZFMDVpMWUyP2QoeUcsKjllWGs0bWE3bE1ndnVuO3xHZCN7NVU1'@; put 'MyFDfnVFOjRoL01QIXojV0old1EueWlUUz9LeHhPRXtKRH5AKEgzd2Z8VmZlT2xQQ2wjVVRpY0U0TGJETGgwaG1KVlgzelEwJlpqdnJdJXF2UU1SUFlJLGU1Xy9ELC4hP1FyRXRkVCUhS3Y4MGJmS3ghZTUzNX17RGZHQV97RGZIdGMuK2VkJG1vIVprOG5gSUNLI1h9dUZwN3RCMixTZSI8LG53'@; put 'e1g6U09HLzVoIiwwclYlfiheQHtxamkkYUB2OU1KbkhDZE9jeEFZdDF8QHtPaFYwPTJyOm1bVHVKN280Ty94JCMkR1JvOE1XVEAoJlMsWiNNam1qLmBvImNocGIuKjkmSkxFanV3LCVzamlGO3VGSDkhLEk4fEBBKytAP34ocXNnWTxtUV9POllsVD5sej5wfTZ1dVJPZyVxVlZtJE8xYmhAZzFo'@; put 'LDZeUWhpflBManQ5e2tiP3tKUmcvJExwZCRYOjYxZmFZIXBjPlRMZGxQS0A5ej53SUN8WjpETHcuL3s8OHIkREwpPktARGUxMnZyKStKJWdFNi9tN1FKOTJnNFU+bkxwImdFZWEzaDx3SmokOUl3bDk7LiV4TnhZbTgkWGJIQDtOYk84JXxHeUNDLHczWSV8RHJbWFVXWlBPMUZDclptJENTSC40'@; put 'NSUpYWl3R3w4JHFGKihYRyl8cTpWUDViaD5RP34kK1tSUVlEKWJ7WypbUnwxQXRKUX4sc14reD54LmpPZyl8THVTcmdSN2MySTRIR3wkLkhqLGwvXTEwdGtyKHohJXw5S0pRbmVDIXdfdG8rbjBmMGFWTk0xfi5geDwsUEApMXEoc1FQWXVTY0MucHthPEtNYkxFUV0qJFlRRThxNytxNkc7K3NR'@; put 'V3p1e21gIXRSWGokWEhXKmIrWFdVOlVOZ0AqL29UflFPS1dpe0RNWF0pdT5xdUxTVyloI1lJU0dNSWZodUkofGZYMU1IXiF2b0ZQdn5xLllUZXNJVDMrT01IOkUidjZKfStISHhoSSZjRFYxMl07LGVXVCN6OmJwQltKKC5ZXSElKDNSeUZLQ0hteGJWYGtZZGR5LlFKVmdBJl4wZVM3OVlpXT0y'@; put 'X2QjVn19ZXdQOUY5OUloPCZxJj81emQkdz5EOktkRl9CbEZPK2BYcWkvSW1MeGh8YEFtbHg5RkFyPDs9XWkqd2c6ZSF2YTUsd0w1N299RCV2QXUrRmBJSUMlMG84NzFFZX5tYzZZMH43MjFTJmJUSVBGY0BwU1shSE14JmlXaHE5bFBBPyxzWilydzxxa0JaWT16aGBCN29HSVpgVlQ7NS5OI0ZH'@; put 'QSszLlgpaTRzRXpRYnl9R3hYRlhXbGVxLkVqOGV0SjAwX00md1ErKD9oPVJ+KCxWcURFNEJwdk5HT3s5LnBxLkwkfVBpdVY1dk1fUXRpPko6YGU6Y0FSNy5rW1dzMDhjcVR7UElsfjg2bHNbd2gzWnt1Q2BeOWNjXnYuRi4mJUNMaUphQ0FlQmUlTC5MPjYoUT4zKGZ8TVZYPEs4cmxNKF1nP2Zs'@; put 'Xk8jKl9WOSowO09PJmB9ZVVENSx3fHRQJkIhLn01TD9OSFU+UTF2cmdzP052JnRYJn5RVWpAO05vPnFSaHJVSWhhdCUwPih5S3FpNFQhdTcoIkBOTyF0cmd7dT87KkQlTHRaXnlGNUh9SStIc2B3VHJ1WTdhVnJFcHMpV1hqdGNjVlhdQ3c5IjR2TFRAVCE6b3g9XS9Zej44fjt1c1tGTlhffmNs'@; put 'T1V6cExtQENjWlkqdD9HUyI5azp8OSlMNDxeaktZY2FuQiwrVW5NP35ZbShUI1NWZjF4SF5YLm1bKHJbfFNvTCRWWFYiJG8vNFEzYj42e3U9eHI8ciVUZlU7ZTZZMDcxWTBEZE4sdD1wS0BwXnZ9MzpwbnYqcHA6cV46ZUB+fn0zS3huT15lSiNFRCRiOl8rOykzMSo4az5DcTMoVHhEZEskTCUz'@; put 'e3RyIyYwWiQoNGEqVWo7d0tFOzhrKDh3S1EySXE4dExtL2htTD1NYltxRyF2eVpVfTU5UWlrcUUyUFIxJlJEKEx2blJqY0VTJTdrP3gzbHhYVjx5bFljXjRUO0kpWWM7cE8meVMwSWFFVlgrMiM+P3J2aGhrIm9sanNaVWBuQiwrd2ciQ1oxZl8ucm5MSyUsOTRXd2dsfiZgOzFgRDdlcD1eL3Yy'@; put 'emVpU3ZeM1pydDJ1PGldJj1FO1dpK1UpYnEufXFUQiNrJDF4JUwsd31hK3k7aUd1O1RhRTB8LzhPZ044TFYvLGFJTEJNUCoiK3lwJmdJcX1RVEN1NHNXKElvUFh6aHAsWDxzcUxvVldMfjFgI0IxU0NHOkx4S0c8PChhc1N6S3p9L2xNd3pnZmZdQzImaUAjY0k+MXJwZDYkSHM7TilZdU86TzNp'@; put 'ZXwxe2pmeUBEOGQyO3YwRkwrWkxQNix2Pk9QOXFvfn41c1kwe2x6NktucXRgJTFbJl5NOENneXRtQj9nJiltUyUjZlpnXTB5O3RuWm9mNzI5WVJ1cz0oXSZjLH4wdlVyQy8yTF4kbXMmfnJSOj0/fF5XM2I0OU95Rn05O186LnQ3PUQ2O0hFakFfKlp7XmBLNStYfFolYzpAUVBRVVN4aGVIMT8w'@; put 'O0AhQFUlbmZARH1jUSVGIWYhUzYsNlNVdWQpcDF6aGIxUGU3R3ZAUDw1JDsxZ3h+SHhkLDIlYjNVREtPPjosOmhvam80PT59KEdPSWU7RCskajAsanVvLDYlY1FOXkZ5RT0xLHhSRldIKEtXWSR4UnB5NktBaVkhblB4JnEjWXc2S0M/UmYrZUV1MGxkczRFdWRZKjYmXVteSzk4Szp0b0NiY2Fg'@; put 'ZHFYViUuUkluS0NCYkBNRHQkXnhjSzFNczplISZSO0JpImA9SDNXUU8/RnZyNVpHXkJeX2xdOXdYZCFxKXkpcUo+aHN7fHI6ZS5kdlI4fiJdPGRCJD5TTSh1PCU+eDlNOWFVLG5eME95OWF8a2dZO09raS5+Ink9QlAhaDQjSW4vSVJiOUsvb09vTyJNOjN9SFcwK1d6bC5EV0RYaFhhWUQyQnxG'@; put 'aDRSIjZYRWU7YCVVPyZXIXRaPmdPbVR+V3YpVio7VFo1IyE2eUhVI3pObVJDTTUuJj1CTDVLaXtMJWghVkkyelpRUl1ZS1UyaWtPIWNoR04zeV4scTxGdWwkIzpkNXIpTjs7M1MwelFydUd6VFkvNmw6TDVnOjFYP0FZRXNFXzVFZlNRYDUvNixWVXJgRipOfCt7XTgiZ2JfQEl+Z1pjY1E2R05Z'@; put 'UlBHOF8hU0VEbWdQPXNfYlg8MFFWUUdCcHolbUkqY2VVcUpjQDgweyRLYUcmZUlDYEdkIykvREAleyNiRk44bTBxc0YuUl4qcy8xPWg1JlMjW1UvbSN3XllxLixnVWpNfDBVLGclKy5bSnAoT0NAcD4iPkolKTVEOERKKXNQaCEhZllke0VhQzxtZmtzSkNpQipMZUhadmwxTlc0Qk98WWNIKHM3'@; put 'V3g8d0AwREw/R1VhQ0dVNXV9TnZdU3VMRFQ3NENNO3cvXl91Ql9lZ00+TzBnY3NnMHgmOSg/bGk1STwrNjpDYWxjLFUlSWJrXkxuZFU0SytPdyslMUBWTFkwRW5CI3leQT0+dVpveztSUmRtSXMpclhJNVhVTSZWY3UicWg4NWhhe0EhcWNLRWxSdSVCYyYwSzhrdWooInxLcVs8eTBuZGo5M0ok'@; put 'eXNTakxXJGtnUkptNVlyb0ZBcHx1fUBKSz1vPl1WMCN+MUIlQDVpVkRCK0UrN2lsTjAzdD8iYzAhLnV2NlZqdkVwfThER100dWp1SF14JGIuJFE4ejZzSmRiK3I2QXB2WldESntKIUYhWkcsR207dUYiVT07RDxHZHJTLjt9W0lPRHBsPnpZW2FiNSVWTit6aiR5Szg8djlpLF1dWlp5eEdQSz0k'@; put 'WkR1JCUkezR3WEFXbzI+R1tNUl5MeUhEXmFDdiZhU3lfdTB1MSl4bFZNYj9WbTR5SEI2OXM+Kik3Vy9TNjVsMjFHYWEodjtGdThXUn5LTSpQNj1xcFF4dkNGZytAT044XSlnNiJeM3Y+PDNNWlhvME57X21rInVfRjw9RDZaRlp+JGNoXS8qVmR2RjxXMmxiPmooViQoeF14WXdXJl8mSjlJTTks'@; put 'dXhEUHlfO0J+Myw2YkllYjZQaGBQREZuMD16UV4kUnFaITNvSHtdelYicDJeYkdxRSEyb3kjamRaLi52YCtnUHdDMiUmZSlifDBxYiVsInZHMUFXQDk5cXlaUWZtaFFQdShTKEpaezUudT8/KEY+eFIkQ0c7SC8mdkZ1VndvKTYxOGlPZEdwI1RzLHolMH09M3poPEdXcENwPEBaSylTMDlxJHJl'@; put 'NDoqY0xaajptdSk3KXN6ZWoxJW0lMHAkeSNnVDMlLjpFOFNlTzFDZiY0Ois/LyZaUnA1OCpmT3d9M2VobWQpLldrSH4+cFI8dzlTZS5kVnBaUjAjZEtLNkBxcm9sb3UkWXBDbCMwJEhoZU9RdWtuYUtlLmVwc2BRQ1AlfVlSeF1VaTJOI0Y0Zy8pSThEPyZna1RtVUtyd2t+Oissdl1HQk94eEJt'@; put 'ckZzNT1RNFl5PV4sQDJzKyxadWtGJWRAfXNIPW1oSGU7NWRCeVV6S0tlO3lpQVU+WXNvZjcmdyt4V3h7WHAhcn1iQGxFNXY0Zk5kfXsxV150O11VLDRLUT98Rmt9QSk6TENoP2J4MT42QmReNls0c3tYciYlVEJaO2Fhe1thfGs+NWV4Xm0lSFZ3fjZMT2lrY0h6MzdxZXJsTkxmQzQuTDRrWys8'@; put 'PyEzKWY1a0BYPl1LJDd0KjQrTUQxODE2ISpLMHJ0W1pAZz0yYDh2bVdaNGdtVFVJciVTWzdSaSE5WE9jL3ZrQDNqX0BYZVBoVHI5IyNZaGpfQmw9QllUOUd7OWNNTCkuQ1pvcTdNOjM9NnZ6Nmw+PVlpNTYpfUpFPF9WPF1hWFkiazgqdjhbNU51OHImPElWWjt2ZXBsI2ZtLnN7JTN4M2ZdPyE+'@; put 'amJfVD9JaTBfJFBhLGc4NzkpNlNwI2llflpJM19XNz5fISgoNz11JD88c2xOe1EwJjs/aDNrQnFQVmFkNlhKNHlnVnw2bUlOPWY2RkM2ZjB8ZVtYaGxQXzIsJkNQWS5XXkZvdXl9cD4wOGl3SFR7MD5ORSo3XjR7Li4mZF5fUyU2KFpCV3N6K1p2PUddM35eeT9aWHdGZHxwPnhTe35wd1t9YiNi'@; put 'dWRQJVtnW25Kb1M5cDdWIixkYzdnWTtPfVdyV1ZQbWZjLGdlQzRIK3ZkW2FTUFJQdmg3IVR6RVpKckFLcH1VSHhIMi9dbTwvVzJBcXhsOTJtVylxYXMvITlWZWgxUUx4LDVha317XX1nUCU8ITFOPnM9emhBcTBAWTIsOENZWn4zPSJ5VXY0Vk9wOVV+NEwldy8pZ1ZYKWpddV9dMHNZcnlwREBy'@; put 'SDtCIl9QbVRIenkpIiJ5N0w7d1JbanQrXmRlclNCZFZqPGtIVThMSTBraVBnQm9oWndjTFVVUyZtK1VRQ2p7ODckOEg2clFDbCQ+aEtUXUR+OyMlMi4zSjtQYkk5clVCQGM9JHFSYDVGbzpzelpxXVJUPnc2OixXcE9rO2J6c34sTDo7MHlRYnZtYVU0UjNDaVFeYkBzUHIqZGBgKSpOUjAmPzdQ'@; put 'VTFuM3NlPj0ybEFPIVd9ME5RfnxkcTl5dXc0TnJNQClvKT5ReSl3Pj5uez4sXTkkP2k5Tm1QSytPOXI+ZS9HSVB3eyR2Kl8vfEZ5Pk4mX21mSzNBYEYjTE9NSjAoZXRyb3BHaEEqUkU7TGA1N0RCKld2Ymt8Ik9CcFQ7e3YmTl0uMHgjVipEZDs2X2EibWdiZmReMnFda0ZqSj9oTT9Kc1RfbC5a'@; put 'N0I0UilIfSliTHN5aGl0aCpWeVMmQkdOUmMqYFV7UG9sPHE0SkY2IUpPKjtLUzNmYV5baHhqKDR2ZTI0S09rZVVYVGE5ST1OS3tda0ZqSl48NTgmO2soemxaWFoqVzEuR1tEPyNVOl1vTl5qekBVMkJZNj41Z2pkVmJWRjNSMlIyTyN8anhnL3RbLyV5XnRLJG9vdzs5UHZPayhHcGt2eF4pbE1n'@; put 'X2lPZGFyeXxWMWI1KkU8I11dZiI3Xz5UMms+PjNNTFFVRWNpMyUwckh6R1RtfU56RlBYYkElcDxOeHI1e1F9Nzl4OStYJiIkR2wxMCRuPiouWl40QFBoYGgoWEZhPzsjeEw6Vj5lUV8ocH5ucG1jJEAhbVspY1gmblQ7SlZaaVl3bm9ReENOI3prW15ja28rQndkZX4hPzJAKn0/PypgPlpafD9a'@; put 'WCpoIUROYiVOKjIkN1orP2x1NFpqOjozXkUlNFNzZkI1ZlJdPS41PzVfJVFoQSN+QHBRMTJlbV9ncDMwNTxkenhKUnolaGV1d2dKUFk9S11mZSNGb2oyWWFJPnUhYEJZPVJsQDV+SnhvKGQ/Li9AOE41P3JlVT4jeEAqIWxjJDVgc3F0LiZweCl3RFFgSnAvdmF6JGFtVCN5aUFxVzR3YH08aGY+'@; put 'YlNtSWg9MzF7UT4ufF1wYy5Yan5Rc0BdRDcxYTAzQisjbzsoNSY0Uk5EaFk7VVRmbT9wfnZgfnt7KChAVjsmJixlLjNsb10sT2xbWy82cU4xZzZyQTlmIzN1Mll5NH1nJFo6RWkkfTUzWTV4KUdmaEVhZ3JCfSo8Lz1pbVNtS2RWZFsvdl5DXWA6YllTd3p3b0c9TTArKyEkSC4jbmooeUp4cXpU'@; put 'dTVGRGN+OUJCV0JYZlE6Q3RVTmhvQHYoSUFOZHYqfThTXlozJjo1PTxFVGV4a3Eua1gzTXhLLDZVW3N2S0o1LFFddkJPX0AzQ01sREVPRnY2VzNgMWY5cXVlU1dkZnRGUE5dLFAoQzQpUGl8eTpsVDgqX042ZjlgcW1WJl5EI08sRkVgLGVoVEZhSD58RSF1X0RWZFs5IjpqWk59VGEzO3cuL293'@; put 'NTpELEpyfnRdWFZxQXkreDcsOElKUEomZ1FsP0JYL28rLkZOQGdPfTFpPFF1LnFnM10qeCg0fiRlelRTM1RPZ04pdFhhQFpGY29lQSxJWEEvcHU8MyxWfk9CW0BhKEttdnQmTUloITFpTGxMMUt4dmI2QVVaKUNLKix3dkwlLDFvb3JLUUQyLHh6Okc2TmhPOzIxX2Y+US5wdzA2ajpuJV9sIU1l'@; put 'VSVVVHdnYTNwc0dmKVRAPz0uZWVYamE6UUFfa0RLIWg8XlVSJEBmKlFQQnw9VyRkT145UCU6cCgmSDFsclAwS2JKakJZZVVfOl81Xz9LTT4kMF56TEshRTtGe2BMSyFYMylNSU0+JD5PfFloYkxiS1BWR0dlQExLITpPSkkxQXYwYTdlZ0B5fTMySyQ6dUhYN3JeN3csZWNMbyJKcGhiQl0/QkZO'@; put 'YzxFZXBpNiQoKUh+U11LKERPSVJBRnxVYUU2LHZ0NXR0JCM9VndYbmx7ZHo1ZF9dfT1ZYVFZMSRyU3JTNz49Xk1laHcjVm09bz8vT2FIaEdIK3ReIU9sKmk/VCNwQCI9VSNNM0omODZtZW8qMjlYcl1dViRAeSIhKGApR1o7OmtfOF1XMn1aOnwrJkBEOF5peGs3LmZgWE9rRTQ+ViEhcTVeNzYm'@; put 'fGU6bVJ1Lis8U2JTKiMmbz9ibiZRYjw5fitxMXRePSE7aHlEe3NNcmAkcnxTbVJmdENINjlbLHZrYVQ4RTl0V2JVVzAwPzsrXiwmVis0Mi92az15OU1zRGRsLFg8OC9Talo5XVAjUSV4SF5QaDYkPU9HM1EvaCZJOChRSFgheEE0WTB6MzY2dHQ6ZUVxKDkxTCQubHg1PEEmJS5kUU5OXjNsXlJg'@; put 'TTAmQFouTUo7InsvYnZZMk1bUDNjaFgxXzsqIXJzR29LOCpudltqKTVqWktjeTwkRjZ9dEFXYUFyZj1IY0hCTTdAT2J+ODNlM0gmYDd1ayRUZ1AyK083JlRsTFglWHNkJW5HIjVjIUFbcEEvTjBoSHBASzBJeTU1QytGNlI0UUJscDFNOEBBOFhqPnJ5OG5wUCttPVpvQGNRTkp7fWAjLyo6OFMp'@; put 'MF1wVnMldyspR0cjaiNtJUBBKS9nfkAyJStYRGBrKCs8TyxqT1EhOSgsK29LLmNWdEQ6USsxSzshPktrLCNUKzBOYy4wWTVSUm5wRWw/ZE9aQDBRKnpuSS5oejZJejgqRnI2U281PChlb3hrcl5yS11jPFJvRV5Se1djW0JKMjhMbilCR1dkO2xGYWJrWlA9Lmo0OFpudlhoOXdFR3A5SSR6fDtl'@; put 'YUkvRGhkP3p3VStLYUAkYk0uVCtRcC93WiU3djplRGQsNSlNRUd5e1V5ZHZEZHpwPGJ1WHt4I2p8OyFmQiR3eWxQa01tTChAWTdTLH14aXZJT1lvWmhpfn5ZSDMvRVhLdiZ9MihPT1R1WipCdV9ERDVETTNdJXpKeHZ0OVQwTDomUm9oVmRsOVI3Q0Q0SG1QV0Ayek8hVkV8aFNESzRteHwzflpy'@; put 'dzt9JVtPcTxCOm5tRUw0fnglSWFZRm5DTTNxb2FBLjx5UjpoXUh6QFlRMHFSdntGdjhBJXZaZEBFdTQuJjFNT3w0U3EiZVdxJF41VChAT1c6OXpaSihAXyxHJUthM2gjbEZaW0Z2K2p0X3F5ST9DZF8uWWFWVXkwcXhqYkA6WCJreF4vL1Npc3A/PlJAYEdHYUhWSHltdHwsWiQ7MUFXaTQ0O2dQ'@; put 'TV0yOT96a0lAdFB6UzN4PXIhfERFbldpVXEvfW4xS0pWVClUNjklNXR5W2AzezR1T2FxdS99PVR5KyJMWE0/JCpLQUNdQjVhfGshX0ciXyE6PnxSSHpjQU9zfD89RWlYSSZdJD9sZFN0emw+ZGxORjQ+YDx2KzR4KGZ0K01UanY4TDtjPzZ8NmooSz1xXjMqOXI9TVQjamBPUjEmNlF7cEJQZltX'@; put 'TztsWm9qN0pQeXFQZ2dzSCRGV3kpU3d3PEA4eUM9Qjg/SyVeSG5kRVgyWV1UXjkhYjxJNDlAa0AyMHwlX0VmdWNaNTEoRXVGRyIwR3ltQVRgNW1AWUp6JTVmbyFad3NYPitNd1o6IztDSDZ0e3trYXlTKmcsdUhmamgmYWU8dihKSGVUWHl8XV1Ze2Y8TX5ZZS52N2gqZU1ML2RTWFthYz9eVGpA'@; put 'S25nMFBZb1Fod0huSjR1YSRHPlYsYXxrdTJQUHkkV2lPYENie0ZKKGZ2OXxGMi86TXM9MCVFMHw3R0dmdFspY095PHlPMj5HKFhOZipwalljXiE2ek1kdipyanZlVlNRZD9AWFQmMXREdExNdyh9WklmZG9qRG9ZSHlmPFkhME1eOUEvYkMjYjRNaFIvNFV3USliRkVNVE15LDRlVChjKlohbiFF'@; put 'Pn57e01gQy9JblpsKGB3YCheOT4vaypHKDAmOktHb351OnkralJRND58RSFPVmdSZi9yYDd9XXM+TjJ8fXdSM1YpckReX2w4QDR6VlhhOGRCWntaP203PmdMcFNgWmV4KTgieXoubjdxSHg+Sz4vfCtrYXkkNS9VQHJrRFFsU0clSEk/KF45YkdoWSh5YzVMRkopTiVYOXxqQn1ILGZ9MyF5e0pv'@; put 'UW5HWHMjOkNtaWs1VnQ8UFRYWFZBQ1N1TmgjIT5VQGdMeE1RXm8vfWMhSCpPcUNwUCMsek1RbFNDVjZZTiZiMEJuSCg8fHtVPGRBIVVSVUlpOH5EJj9+ekNRO2g5cXUhKzBfSiFxRTJuUTkyeVlEXzcsMl46KT80PyouXSJoW0oyMHAmbCpBcS45SEAiMkxTQ1VfXkA0TEYldylhLGEsZEVTWTZ4'@; put 'cEMxQl9WbTE+R15VbnlTYXp7UW1ocXxUSjY5R0Y5LnAkeiEvezM9QlZ1eUY6dzxab0hwMDxOU1NMWktMKDRlV2MqIVVaZyVVRktVSWg7ZSFucjBzWmpQPHJyYGdzNFQhN3IpZGxAY1U7JkpAXlo/W2xfQFRXcDpAQlB7UkEzR0VFcUs8d2JUL14/RjgsQV8vJm5KeyVLemsrfV1AakVNPD0lbmVd'@; put 'Y30saHxrKlY5OmgubmwqbHhbY0k4QEI+ayQiR0YzRG9sS1F9KDl2VSNQOiMibVhWKHoxUVZkKU00Q05LfkNTKltaa3NKTVJ1U31QYj4rO1I4cCowPGUjV3QkLDUlUU9vQ29jem0udVtUZW8wMGcqTk9eWXsjajhNUCF8VmxNa31mdTBdSWxHM1Emb0RndH1DP2lxWDNpaEttPyJoMzxMXmx2eClL'@; put 'XTpFe3c8TGd+YioidTFuUmtKcE9PcURZTTUhTWlPVCg7YmgxKUEyXUR2djUpfC4+XShYfm98SytRUVtfLnljUXlrSF1FKyVQczB+PmcqNzUkU0dBNjFfPlVPfFlbXnJgb0VIRmNZfCpESEIiTihOdUpwQzdxYn0mXXZGdGAiQ2dCV2p3OT99bHJzayFRTnVoS0g0bml3Jjc5WlJXSm9MdXIrfU9f'@; put 'TzQhOjkjZ0ddPW04XV9FXS9GIkdebllRJE15QnNJOF8jIVUwIiFnTUF5cyZ4enxBdDVrc3pufkQ/RkpETCFjYmZLY1thQkQ2WVJXMXhwaWwhVSZiTFU2WWRrOXNmSCE6RHlDOmhpdDpHJEJOVEBrRUw0VWMqcVp9fCpWYlFfUnZ0fSlqUXNbXjJJMFRQS2RVYVtGWSFxV1hCJSZIWTcuKUR3NlQz'@; put 'VlQpSy9tfXJ3InE1UUFHMHZFMUpWcT15bmEjVCllPWtsM3VvXlRHWyg5dXNsbTw8PTU5TG5sUHFnJXI/SW5hKFFVaHU5USspZVV6Z1dDZUNeM04pJWY4Z2Evdj1EMjMqNFpaVGs7ZTJzRTdlWVJCbDhKUEo+bFBIZnMraC9tOSJXanVqR2dCZFJfMzBKe0U5b2tZbyZVJWNlfSZ4bWQzTndwUl18'@; put 'Sj9IIXhhND47RVhlIiF1Qz9Ua2deYU1JMURfW2pLYE9CNlBwIksqO3kkL2c/PEkxP3w6VmNQY3dObG9zSjtZVXVtRkc8WHQ+V3FRaSNXSn1ZOlgrO1Z4RDlAbVdlMGRAJGI9bUxqKVY8VnRENlgrfV48ZVsiOkwwXVFUdl50azxabiMzVD5gXVdoUilwR2hnQ3lLMiFySFkhZ0EqfnZpaDBaI3Ze'@; put 'PlprV09YR1VaX0I1OlRYSnNtV2lkVHhoLFpRVExBNEFdUzVdR1RldEMhYDRQRmh1TC44QW1DR09TdV9EXnI3e0xeOVNwMHBUSEY9MWJNaDljUlhdQ21oTGlNaDljPCZUIWMxb3pWQCMuQHJCSWtMTG96cktRNExYditTXmJeMnkpcWNJdURkaSltWFFPRUIwMWJ9RyR6V1R2biEuJTtRW1ZUdkNp'@; put 'ZjtTdV1JPTJjM110PUFpWFRYLFRlYmlSPncyI30kKypedllaRDYlRDx8QltLemBVYzFFZTtjR0tQdXQ0PHYvbmFlW0ZzWDUzX2pROm9gM2ExNmUrc2t+aCtgU2coJVpzZDZQOUslez9zdnM2O1VYPSEqTnMuaVN+eUlBZldZYmlkVnkpQ117dF8pPG9zaypWUlUqW30ualBfaElYQHFDS2cvS2Bl'@; put 'YGVGNn0ofWIxKEAqPS86QXB+LDtAX3pBLzR8VG9UaCtyZzlzW0QwZVh8XXxCc3BifXQ8ZT5tVzEpX251bCFoQlA+aktySHomI0ZRbXVva0Q4KzNXcGpOKTZJUnRyOiVATUk8dSZIW3xxWzhIS35xNztrTj1YcDksNVVkM3VkdUBjMylIejRQOiNqfXIjQzwsYW4kdVByM3xwTXYraUh6QlNbPy5L'@; put 'b3ord2hqQWE6UXB6XmJsfGZ8RX47VEJ9QC9FfER0NF5mZl97XT8pK1IvfmdjJmdhcWsibUV8KG1EI1lWbmNmKzRSanIrKkZJUCtiM3kyUTYzSjA+MjkvZ1p8eX5RQX1RTHYoMzZlbCJZYEtzP2hDK0ZCQGpXSXEkQkJAdlR8SCVIfEEud2h7aTlRKnUreXBvKWxAP2hQWSVgbixMQXZgMWVuUTdZ'@; put 'UHE1RWQ+Nkk6PjplLkp3PDlAc013d1k8Wld0NWdYOVoydD1NMzNxZStza0FAXmhOXSkwNnlrUGksdG9Zdnl7WSwmUl91fSk2O1JtWnFecnBsTCFkZkwyXkkvPW95dSU6IS9KSD1TaU4qb04yY0V2Q3VCR1FSc0k4X1lqYCo8KEdvLy9gbiU2Kip7WS4oNyNPdnZHRyUhdXFmPnlEZCw5U0l1bTou'@; put 'P2BNPD9aZTdmSVZ4PF0waX1nKEZbaH5OTzV4XXRLXnRJdkkpfVRpMntJRGNgSixibStVcy5zVGUqXl4sW1JzMm04RHclQS5zWFM6WHZgXj54fHFSKXE9OVs7cV1hS0osKStsZ1pSUTAzbHsjLFFQSG1PS0Nkfmp1VHQhTDI+JlRTKGkzR3hgQFZfYGgkXi85QzNvRTFISSE1X2Z6UDNHWCRLX0dF'@; put 'I1dfSVk6fXFYPlUjKyh6fWpLV1ghcm8qejpYey4pLFIqPismMSF1UF5VX3s+WUImdl9BajpxaXxrSVc+S11wdWlveX1eJjU3RihNNjJZbks9VF9BSFZ8dEQkRG1wLENYR1Bmd3lZRyl4MmR4a0ZxL2taXWQudGszTX5Ld1U3I2Z8b0JNNztfP3F3RChAWklBYVI2V05xVXZMW2E+c3BgLzA1PW9W'@; put 'KSskdmV4U1NEY3A9Uls3Nj9wVj95cTJpI2h2dHlZNSxzXiRAQlYlJHxYaGJlWVR6I0h0Z1Y5e10wVD5Ub29JY1Upe1U/ciF+dWlbbXg6VkBzJmhEPFZtQlVkZFI3PSg6RjI6JEM9blRISmBNRChHcD80QXtINjFZfUFedD5rNztOeUhSQGZsIXpoNj5kL35RdX07bEw2VWEmYlBJLDNOfD1kYSRP'@; put 'PV9jRF0vY1tZU3dqenE9Snx2ailscCpAKnpUT2xwaiRtNiokdHs1KEA1WnR0ND98cVdOKmdZUXolXWF5WV9Cb0JFKVFEJm03JW57RnhTbn0sTnZWJC58W2hQbiRlMkNvQlB6OkwoZHcubEdpciIjRixXLGlzTlpOIU1WMDZEYW1xMUhnaERTeVF6bzYuOCxmQVYpaWppJj9DdXpUa2RmRlA8N0B8'@; put 'ImVTU2RjPG9GaCh4NHQseUZVcD0hPzZbNitTRUQlVFI9RSh0dnwsbk87WXBNZ3k9fWI7ZURxPE40aDZRUigjdlFZbUd6NVUkOndeZyt7Smkjd2dhfEZBISw7Ryk6R2t9RURLR3A0dSk4L248IUVLODRNNFZLODRNWCFTaWdwY2YjbFBSMEl4UkN9SUQhRGJ9MilhaXE7NChjRXd4UTwiMltHW29v'@; put 'd2gsMi54Myl4Y15MITokWDNDXiVrbjg+KTlMQ248OX5tPyFWMS9GZHpCfWh6K2k5NEk8OWg2LlMqRUJ7diMjaSpkfCo9Wy9lJUs8a0s1NCUlJTl8YlhSSTBSeWQveSlpTTozM2MhPGp2VCl8RW88VEpYZVUhKzV2TX5dVEd4fCRHa30xVTJHOUJpd0YhKGIwM2tMQWt9ZSZDTENDR19xJHZyMmMx'@; put 'QXY3dHQ/bD96X0FANFguTVBMNDwiK1B0SE9RMypeNDRDYTV+UTBzQEh2IlpORjEoQX5bVFZ0RlZNS29sXkFPQj9YT2NzJnhyazdvJXZjaHlweWIzXm1xXVZ1c3pyYmFsKXRjKE1oLyIuLCIuZFJFc1IpTiwxYk5PIVBmVTVgZFd4V0cmdEs0N0kwVH10dzAiPTEhb0xkRUMpdDE+X11FeWA6JSpT'@; put 'eUFuP08+Z3ZsMWpUb31yeHczZ1RddWFPbWZVblFlS3J3UGlJJkVzUilfIUA7emBwXXxTenBaZ1Q0W2tQVXAjX2o8cHNmPzlbL1FLeT96NjdtMFNkJGlpXV4rI1k1TmkhcHFiLFs8NTswK2FGOWdwL0NMQmtiXiYiU0pafXdMdj5wXzA0SHYse3I2MGdEN19AWzYrLFA/MF01Z25Ve1ozQ15vMkEv'@; put 'TktuW1cjYiYpSDZtYCh2fnlKLi5Ve28/ZH5LOVNOXzs8aCMmRFs4OXw0K1hmJSwpbXtWQl0uU2U4MjlvM3pzW3V1USQ3MzhfSmtLOCQmQi9kYSRMWkt1eTQ9UGowaiMmJUsiMzc8Rm5WXzVXPG5ZXXJRamYzKk9aMC5EMyYzZCEvTTNgbzlTPm57Q20laFldI2gvNngjQ3hXeCg5aUxpNChNeEJb'@; put 'KkJySDpsa2NLKmcjfl9FaTZgIiRFKiVxcGRqb1Q0Uzo2e117VC8+NzZMSmY0IXxebHtTPFptWTEqenE8aV5yYG4vL25XQWQ0Tyg4JFpdfEpvU3FzWG5WSX52djIrb3FmRVEwKXo7VW4xLm1jTDE9Lj1LQWU/eVVnRmVMMVRIOVhoeEBQJWFCTXl0TyZgaSVOXnVGQix6cVZYOmFIL116Y3dwdywo'@; put 'WzFzN1tARjJmWDVuL0d8cEIqfCopW2I+dUY9TiQ2PFJRe119KkZCZEcscUZzXWcrenRGTlhDcFRxRShUKFRHS3s6b25LQk5RT2hBMjpgImpiZk5LezohRjB0d28ueTZRPzd2NGkicGBRYzBJVE9xP0kueT90NG9jKmssK00mRG5+UTBJITlgdCRMOTMxdllEYCxsS1E8PnQicEhAfXA2Zi99bkRE'@; put 'dXkjZmJHO2V0OUFwM1BzPlUrbFcjb2xdIyk2VCVqfVUkYFtBX1EmSGE1JjtnWFRkdk5GLlR5Wml6Xm07X1lLdl5WMVRbckNHWWpAL1MzO0VqTzw5SUNYbFo0MylzQVR+ZiUsc21oeU9dXl5TSXtZRztMbzlrdS4sKCxwLEBnMGJgVzBGUnssRzY1eHB5Szg1TWpTK2szWj1pLzVnVm1GRCVNc1F3'@; put 'SzhMYzxHXWp1SlRdNFlJJV9sdytXM2EjRXlVPDc0QGdkfSsyKjB3dXQpc2kkfWNtOml3RTx5IXxTWS5mUEhpRUhkZE1XciV0cWR8eld5MDMqJTgicXptQkdOLiUxYCsybnhBSHFiT3F0a0xyTX12YGJfSlo1eHYsMjAmLl0zLDV3cmFfPXFEUE1xTVpZbi9AOV4rQEN6UGBiRyheI3F1ZFgub29E'@; put 'dzd0RjVTMiQ7Jn5NWTtiPUBtdHtze0BJUnk3K1Irckp6M1FgXy85PEdnPTMvZ2BwN3tTcG5qWXI3MFkpK0d7bTBWckdQZUVhOH1RIXFkY0ZlaCREKlB7VjNuMVloY31INT0kTVVRMEFaQm9FUTI+fCUpXjNNO05FNVl3YUspfWx0YjMyUH5dKHB0Wm1vOnJJTDwhanosUSZAXmdQe0dZVSEhR3hz'@; put 'dzFwPT1HUHVqTnpWeWNmeXkxcD1pUnxPX09HazhHRHdEJHJTT057a2F5VU12UDYuVlIjKklpR25bZjtLKWlCfWs+MV1lW192LnlyQGhJalRkX2d8Uk5gQHVwJFAlcE1pOC5vOSsmKGQlOzIwMmM2OE82InhkYUw2JTh4WmwkaiEjakBQbWYjbU9wY106bklRTFpET3llbTdhMCI8JUQ0YzJJYk9d'@; put 'TTFtdllhWEI1SFtHTn4xQTpNakxRIndBWSo9b2tRPEhhSjZ0TiZqK1Jma3g0NntbcH5gP2M7Qnt4OTk8YUd7QigieDE3YEJ+MFVEdik4bVhPIz1FYGxpaFV8YU01dmRyU1V6Zj1ed1RQYCtCLzE1JGlTRjhTYTh5fEkhKnUkbT5kYWd+KDA3ZTZ2NjFdQlYzUj9DOk1+UjMpTVlScjJBb2J5Rmwo'@; put 'JWVLRkh4US5NUlosOXcsS3JTZylsPSViTS5+ME07OCZbI2dtfjR4MEFZb1VnamFnczlqPXA3cEs6VjYiZVVrPG5NSUU4QCVANSR4KyglZCQ2OmB7L3NZI3U+bDM3M1tmVnp1STx7eUBPR31xQGUwSSVQYypINT0hR1FZPmEsVldAZDdefGBZQChdRGZGOUlbWXNOYCkpMHdKOS85OiI2Sz4kL0Vd'@; put 'I1pzWWhbJClaTzRRZy49eDU5XilnSmlFKl5kI21+b055JG1dJXY+fV1DcForTE9eOUpdSmAmYHR9I0gwfGs2PygzdUJbflcycz91eFFxMTg5cEE8RDdlVzFyQj43JjFoUHwsLj8+IUo/UDA3WXJRJDtwalBneiZWPWx2ZGtadjBYOFdZVVU5bGtmOHw5QEJRd2pWN2dHM0chJSw0biUwLE5MbjZ3'@; put 'S1opOVpSMVE5NGFWOihjUklFWzxAaCt2bVhpK1BLezMxK0JLaWpeNTp5NHpNWTxNUkNYR31RVns6R1VScTc4dng9fCFhO3s3ZF5Ze219QDpzYCZSSl1Ze0gxUElXI05kaHIhOU0leFJPZ3wxS15XJWJLUDFLOEAlVTpAQnxPbj1KejhkYU12Wng8QG57UGY3ZTcjZnM2T0YyQkZ8MTUrKVBZaSRq'@; put 'T05ZWWgkZm5xKDxmaXhqJTpnYjV4Niw6Izt9aFRuKTw8O3NgZWFWdXE3P1UsdzloX3g8KURNe19uajl1X3c3bGhraTleP0JZMXxAO2VZfDNnOTtFZTRJc19TJW9reSp9XWpwKEZSIzpXKylBWVhuXl0vXl1+WnJzZzksTCh4UigrdDo3Ryw9K2FqXnojZTdJe2o9SnovJDJZZWFoaG8wT1BFXVBp'@; put 'eGp4JmReJTwuZ1FnQzVnaFsvbil3SCVVNVF4RGtORnZQMDdZQm9UXlIlSigkMkFaLz1pN0FfOT0/bFcsOXtTNVJNczoicTxhY0kuejEwMGIsSiZ0dGNFLGA6N0hSbS4/aSt5JEZ+VUVgREh6Xm9gZCMhPFZELk8sRz9VYzE6a0UiP3thVXZ4RiV2aFh7IS81PmMscmQmUENLLHc9VyNCSUBKbyx0'@; put 'Om10VDgvVTpbSSNMenZIUENKem84ISF2RjN1VmZZfWxQMm16fVY9fX4/bGdke2JRMktpZ2MwPzxOTXNVOylbU2lAYlpWIVBJJVFDRyxGZFM3JGNRZFF8PnlTZUpRYTNbS2ovIiR9JkhwRSF0eyU7ZFYsL314I0lKXzU3JCVLRyJucXVAQGFXPDsqI0paY30laFp2XVhMMDtfOUtkTz0ubFRPVGBP'@; put 'bldyOjE3ImhTNCM3dU8+VCN+IWdjPXJaO2VZUGVVO0xeXns8VE0jWi5OLHEiYUFfYk56cDZkYHUken17TGIiVH5GUncyN0c6eTAuMDc5dzp1fn5WY05+c1FHT3tVaSYsXk1ETXJ0PTZEUER0I35bVlZdZmo7TVh5T3I2fnE2bTh6PDV5eSEvXXVLI1FJYXhDNVhmS3t1WGh1Tkk5ZFtSW0IxbzBe'@; put 'Ul17d0tTSHpgT2M0K3xFcE5QSyFPfUtpeCRjTiw7M10wfkxfUSVTP1c3dltXXm52SixHPlRuQmpveTE4byl1JXQ1RjRrSmI0PHsmTzF+Vjdsb3RLWm5tcSRBcEU+VzhKe3hiU2U3cXJ6YCFQdnFHPFhYfHZzWTd+XS49TitLTUNbLElTUEdrNGlpVldRLCk+M3VTLjY4WWl6Nmt2P0Que1pMVUB9'@; put 'WmU4e0I/JT4iRks+Q05sUHwkMSp9WFRVeTgvODs6Q3k8LG5Qe25RZX52KDB0OiF4Nzp4XXckPipJLGRNUHled153LiVlOCRfKytVc2V7WTtEPEE/NW4keC41RXFtNzFLeHZIUTRfLyQ+T1ZaMF18dVFZMCZodzApQmJka0hxTmBDIiEzeitLOzFRPHxPTzxSMTA3QEJLLGs/ZT4hUkprcFpSMC9k'@; put 'aywySW52eyxPe1RHUXVEaDhjdzNueTdkT2FrYl1DSzUxaV05cUB0MDpASnYwOT5rTi4pbj5VTjJVaGVicG17WGVUVzFZRilhWEQoeGJtOmpvUXtbVDNTR2tRNyRfSTV4Ok46e2J7OXJiI31OZlRhMldKX11eS01sNEgrbUlJUjUxaixnYF8oTSY5LHdnXjA/Ny9haDl7a2JyOHV1XyUya0YvWDhX'@; put 'PSJRZXZOeDlYeENCZHciaDxyUTdFX1svWVFFSDt4cSE2YX1fSzU3cD5nPnJUMSZrY2t9OUZqPGg+RE4vcyFUKEhfczljd3QxWDhoYjIqYVJtM2k9fVIpOFcyJFJDcVsvdylGcHpjQFZ4NUFNdGckV3ZnflN0MFlAV34wVHYrREBqSndaVFdQNT19MCRIWVgqaE5MVlooZEROYFNDQ3ZbTGR6c2xp'@; put 'ZjN8QURATTp9TihfQSU6eS9VSDxIKzV4fUd+Ok9mb0h6S18wJFFIeWB1MnNZSzZjMF1oNngqYHByQHY6OTFPRSV4SGhkOG9FdSZjLyx9YkVzUil0O3xeTXdiZXpLe05gKWF7Pl92aWIiPWUoKUReVipud15MOCZqeW9VSVBxI2t4eF0pQzhlMzIzMVYhUnlqYWEhODErLDJGUEVkdUpZbCw+cFlV'@; put 'cCtLdFEzQnFvVlEhR29CLCNKTjZIXzM2TWxXLyhLKDlWPk9ZZzI/UHp7K2QldjclTSxqcit4JTg0Vi84QDZwY05JNUh4b0JNZEB3anArN3ZQNWw6QiRIeDtEQkwwSVVtSUdvIWkuSzg3OVQ9WkhWJCNALGdHRXxbODxXfUw5MTIsU3dHdDtgZk5xMU4kTVtWbzlQVUBpJSpKUE87Wzs+IShMJihx'@; put 'aiwyY3FyQzYoUXRTQm5peDF9Q0h9OlZjdUp0VUosTFgpR3E4YENWNFJxR0piejA2N11sVl0lamZAc0M3dWJFYTs3UD1aU11Xb1NhVCMvfTc7czE6PmdFMilhaV9NKzVwJitMc1JpR2NtLzEvLyljKnp1L1RdInk3UFdSP0gjYD0zSSpWKj1ESU5lck9UM118KUEsTlhzUSNsdi54a0hFNVJaW2FM'@; put 'KXE7akt0RiVEMzMyI29qbjR6cW0+ZkZ2bS9JdFhNeERrMXZZVUQpQ1EzRFJHdmAvcG04dlZLWHZBQmg0Im9PJDwpJFQ3ZT5JKUNQS09PJk46M0hmLmF6fVEhLkdicTJpSk43bjYoPjs1R3AxaEAkXk5gJitEazp9dXk3OSN6JVozKXxqMigwSzNaSyIzdXBjT1J8UWFFNl9MIjNMb1lUT3VybkZG'@; put 'bCF8JVkyPTpBN2VvYDcuTlppTkEkOStnRDR+TjZZMERkL15OYCpaLys+eV1sOHt1Q092LixXJV5NK0h9Oz5vW0w8VnNVYFI1MVhifmxnNWZCNTJ+Un5RIldvOU5FdzJARltyLCZiL0UoYSZ8dywmS3x5XSsjPF1LVkchY15YN2JsLn09NjBUYVZ8Lyx9S01UMDRrVlhifG1FZmljL2Z2WENtWl1J'@; put 'aHV9KXJoYmN5WENTQF1tQWV8RSt2UH0pNGouUVUiMERhRWsxTyxCbDwzNkUkcDUuQjFDS3RfODdIRj42b2JCbCI4dmdocTYiQkFWXT0penJEdlYifUh9dHZMVUBJezdkOTtXOml2RElOYHJifmxXelY1WXUsXlRCNy5ORW1uQ0tEQEVuMmdpVEZwJEtzTFRAS0tKeUEvIUMqdCQobytWXW0mZ2lU'@; put 'L0NAXWJYTTp5MGQ/RSlULkhIMWtGKUBoQmFiWFRGcDRpZjRJVSlPN0sxWmhMLGEwWClQYkt4el1ie082Q1dRSClTaV1Dc3o0enZSeVdESHV1VGpaTl8rPkxlQnM0PUlxPjplX2N3KCwrOnE+NF9CP3AyTzhqXjVHWV0oX2NCTjNYWkpTNlA3T0dWblhyVEhyQn47NkN6KXNuencoQkxSP0N1SnBT'@; put 'aEZNJjF0Tk86SSNEIWlleC5JXnZUWXk0XWYzbnwsOVBiIyUoSk9NJiVGfEJKWTNMfnQ9R1B1NHlzRk9VTUNTcy9SO149ejFjejxOOHc1K0VzKyo3Ol1fSERtJj5pRG1vTiVOZW5lKXU1YFlxTFZQbiIhKzY2X3hIeCt0TT1yKXdmYFtPdEpMODdISzllS1FELjtrZ1ZGQlg7MmRrQ3JWekwwLFEj'@; put 'b2poJUJAMnlnWGsubDR6SHZKJTpOVFMzJVtkPFN4cDhvQXFoW2x7ZUdHNVNNXkslMFcmMGozWmZaUXc/ZTQrRDN1ejwpIjFmI3g9ZX5vbk4sXVBOMU9zWU09TSVuMz89V2x0X0BeMkYzX0BFaWFqRCEqb0N8I0I9aEpZQy5zWjIhKldAUEg4YktdLi5PQ0paQUFBQFFzRHYoK3U4RihNdlo5LzxN'@; put 'QHVeXV5BYUM3JTp3LzVFeVhCI09Vanx2IkZRQUFBQUFBQUFBXTkoeVBPOCg0I2AxLFNCeSpZRHpbZEAxJDRjM1hdIj9YKF0lKjlaPV9lPHs9K3szVHlkOT9WI205YzNZMD1iaCYrXzVEbyRadkkjbWg+fSoiR3FkWT1jTWIuaXdyP0t0bmVtSTBaSlZeQ2xicmJTKjV6U0o/fHNJZS5OJkBhZnxr'@; put 'SCllYjdycFNsOCE2cHBmPyxPZFQlcHhXPEFGRU5XNl9QelppWCRjeilqeGJbVG0ibDRLRjtOO3siYnQpMi5JLiMkP3RRNUI/S2cxfV15KDEvMlNAN0pmUWRlSUNudDdgOHdZQVlWOnRwNDxeeipEfkEhVkBwW0xsR1ZGTDMsRzoqYSRSdnsxaiYjL3Z1WCxabn05Mzp2L3olTVtJQ2IhSCJzYDpn'@; put 'OHRVLz1bPEhiamspSWF3YnIpODdNP2VGWyxtfShRNHtoMjlRdE8kdklzYmh2TEUoM1EmYnwkP0xxaUNiQiMrLlcyajUycVAxKT1mM0A7QFI6bn5hLyl+M35ZaGkkcjtbQ0decmlzZjQxYz9SdEt8OiZCMkhIRTpPIy5nW2R9KUBRUEVsdDAvJVo/SDlQcVBVQFpVeHlzI0RldDs/U287KExDeXoy'@; put 'K0htdnNPTmRfK3JSel5EXXhFcEJMcnVsdmRDWHRSLmA0KCo/XlNkYU18NVNQNEtZbF5lPFU7K0NsdC9DQUxsZDghMVZKP2wvVEV9ZGQxaV58QlEmcVgwNkd9Zy5lflI8ZCtIMzhHUnssN00qeXRCfUZCPlRwaWJiQnBpLHVdMCVvWUgmQzp1SShlTjtvfkdvaiUkUDhBJTlgUWp2K2hzfXZkTS45'@; put 'dWZldiYhPUd6bSs6eW5kUnhFSjFOR0k0SXc1P2Y3YDNUcCNgXTlXRCVFOXtDPDVNNU5UVlBaMzpkPVY2ezpEJT1NKV1Ib1U0Ozxra2czJS47Mi5FVFElRFRha3g5d2koVDQobV5bdCFXRlZbZUJCPTpEfU9MXixIX3Exe3wwOzVRZmBUIlFZPz1fJEQ5UTtiWDQuQF0kYkVMWiRoSXY7cFY6KmFf'@; put 'fWpvOVB2WkNVOlV1KWdMJU45RzF4UmxzX2RseikzK31abkVpcyohYFY5eG4saCo1PiYhSS4hKWp0PTdGMGVZTDt0bGcodFNLVXIhSSx0UjdOPmZBJWl8PkoqUlBVeCkqcD5NUjIhO0Nld1MhSmhCX2FgOXZIT2h9R3FPejJtLDxLXmQpTDcoTm0la3FueVJ8OkkkNUFJRklJWlZ4TzZOK0U6T3R2'@; put 'fEZvKjUxSmRBYUlLemFnKH1+UHwuPUlwWHhPJl0hYE5UPj1OTER1QX0vQC5aKCJoXWpeN2pSPlAmUyNIMiZ7OjZYKXJfWUglPSp9JVo6eTEyZj9MZVguVWlTWyV2YHJkXn0uVG4kNW5kIV9pOT1WRiQuQVczTWg3fVcrRC84UzZgfkNZVklubnNDKmwscXhPc0Y/dGk4eXFfVVVfKlRxcF0zfilQ'@; put 'TzcpR2kzfjpFTl92X043ZjB4bzdQX2IvfmFjSzc/aTxRMVtyVzhsRSNXVVo3WTxOX31MPT9CdSRPV1tkU3V6aFRAODA6Pk50fWFgU2dBXyJ3KFY7bSJfOWx5cCRIVEloS0BvRVldNns2RnxpM0BmKDRjeDplM21lKnlOczRLYW9aREB5IVJ+c1oocypIOUNfNUFqciRZfGY1ZHQlaFdbVl1GJEJ8'@; put 'JWRIQHROLE1qb2Q5MHFTZ0VLezddJjZEOXo9aGxQZysyO1tCdzkpZ0I+XSwlIztbOlI7P2wpZFhgTUtdSzA0d3V9Wl1SJGhRSCQwI3VwV3B6Q2d9RCJtaEZLXX5gTWhPKHJ9dCxAMU1uT3ZQdXYqPzJ2L3h2TVhBJTokLmRBfTE2LEJsSHJucF9TVn1qSWF7fGk6LD5PWSlfP0c+TCo5TVtyPFFC'@; put 'Rzc1UC5feFJdJEVMTkdEZlYraTRDS29tc256LmdDPXBwJXJSZiRmKy49JFkrX2shXyo6Rz1LQ3hQWWY7dn5XelBTRCR8ekdRRkppaTpjZWsoLyxaZWZeYXkqTHkmIyFoYndbNHs5UDo0d2N1flhEUy8lZXhNM05DJE5ueWIrcXZ+REhLRnhSIUd5KWJHZXU8NXhUKTIzXmN5M3ZfczhsIz06KyVG'@; put 'Yjc1fVcwSys3WSpnclszcHdKYUBEOXwpP1c6blJ3KEduek5GO05gWCRVaiVNJEtiIlI1SkV0JTdQOUhtI3RSb0E6ZVQqPyVKKDJ4ek8uQlA5cWcufjN7NWxTOS8qcy5YWjRQVzFKOjJITi5NKTc1PDY9LHMiWCZmS112RzN6QV9qSkRgMWAzKShgRj44LGpuKnwse29QOGQ5VzBLdDhSW2t0Tmwp'@; put 'biR4VGdRSl8uImRsbVN6IV9WKipXMHVeOTRLYS4zXmt7NjlrNXsuXklEZmVncnVoNnska0lMMH5gUjgjfnJeTVk5LkVmdmwodFRESGY/OiY5dENRS05TVFVVQHRiZTxJVENbVjU4MlteR1BEX0AyZ01dRCRMNGMkczo4SU9IKVpMcV5BQEJHZ2koW35JamNzZlgxIyVafHNtW20rdj9oSHFQPEUu'@; put 'UFgiOz0jMmkzQ3AyWEluJX1bTiNRNXpUbVIkb2drQEBGKSJ1XzB2TmZNeSFHPEZeWCg+LzAufjslOiklNXRMJTV8UVRRRjw3JldgKk0yc0wmVXI4czJBUngyZVM2RSQqRGBuMWBCdzwuZlBhYnM4NV1lLjAhIm5neDtZKUBrMyZpRyo2Ll5nJXh2XTBBN3IpQGNZayRva2NpcX4rbjNNQ1R9MXpJ'@; put 'Z3J2X3luSUI2Y3NSUypmKzdIYGMsc2U7QlJOUjhyS3pkK3F1VkZpRTVzJTwyNWJDcVd9WGdQKzlFQ2pNSk5AYiZOcXteJX1FTGRvej8pazBgfCF5W2Ila2B5YWpMR0deP2d2OSJodEE3Lz46YXlpay9qfDBvZilkcyFWbnl4MypGXl5SUzZqZHZiV0VPQD9iYUUwaTQ7WGpPMjRIXmdjLFo4KUE0'@; put 'OnFrWFdjJGM5RDRkak5XMVpaLFguZCg0RzxvRXN4Y0VWdmlIW3o6TXs9M1lzdG57RD8qaWEicXpvQjRUd1tUTVt5dT9aKXVZKmlrUl1zTiZeXV4sY29bbFglbz1SLyVWKEpnOXFLRms2KE0udHIidjNlaHdxfmFPYm1aKDVAMmt6Jm9Mdkw3Uj4mM3pnT0g5d0hbaWY/aF5HTiZyZ114ViNgO1Er'@; put 'UEBLd1NhRW9gMmdacX1TPjtyVk0uYkwjRUYuPD9WNkIqYzJucX5LVVA1VjIwZVIjR1dyZk1kaUBFVFNENSg+bF4zQGpudHNTLE96RXhZczRKIm0ifWVPUERsamYyTCk0MW5wZzVlP0A7VUV1Z3kvSW81ZiRMWWp6VUxTZF59V204QDdARyJbay8pe0UqWCk3fWVFZEZ5Q2ooemkpeyM3ejcqbl1+'@; put 'cWokI0o7YDwsM24qcGZgMl9BQkl1bH0uTFR5WTJaRUZlLk9uO0grZ3oycXpbUWtqNHQ1fX4xWXt4UVooc2pYTlJHSH07ZSFkbSM8V01mczBeUj5JLkc2PkA+cVFHQ2NmVk8iLC5TPlFZQ11uODExaj1LRkc+Wm4xb2JDYDlNMVNyQjBpSGtpMTxoZnosZGAscCpyMlphUkBTMHg/X29nPmMoXSNV'@; put 'c3syYW0ocVRGIm1wK0VnOyp5bH1xbVV5UV5Ge0J1d0B1JSVpLjxQNm8uPkNEYnZGSHMjI2IxeH1GSFhPeTVsN0BNTnpsT3leOnNkcEs2PVcrQzJZbitaUmY6bHBPaGA0cDxSLlhVQTw7S0ZweFR3ej1QIi5DcUJVTztGLCglX2N7T2NeUSpGNFtxeyFZS08kRi5zRz5GRVNwLyREfl8sMUVCT2RM'@; put 'cCt6dTd1NFhoSytXTyVJS3UwOmVocSo/SFUzdDgwakJqOjJYO0lsOiJXJG8yRkJIUT9deTFXejBOKiNjcUQ6LExeQ294KV43MHUvQUd2YWxhOVJdSk0uNWNKPlNTYGdvRStePWFrakM9Q2Z4MmB5ITBRV19NNHBZcyVtXW1FXlY0SzgkbGM7YDYrcHJXQjc2VlUvanBwQm16RDRJWHcqP2hPN1NI'@; put 'bVhLL183TV4hYixHbjVbPksiJlVOXzIwZiR9V1kzTDM8OHl5JFVJVlhiS3xOJmF7c1MhY05yLFVPLCpoPTt4LEA7XVVkJExQezReSFFYNCg5azszOUA3LjU2OXBSP2JGQDxFbUhTey9mdS47UzpnWGwhWEk+RGJZYz1PKzpIOjgma11WeDEmIzEqP25uT15VUz5iODczcmgqNF5mRGpkI2EmeG58'@; put 'OiVFdmReW1c5Nm07a191WjsyPlNtOGExPiw+RXlhdV8wJXEyc3YlWXMiT1ZtfSkmO0VHNCVhJENley54KlcyP0JOSn1VSVJMLiYpfSE9ekM3JTprNWR2RXwpSGFxIWE+NilkIVZrdmBteUVBVk95Xn1dZXFFXWtlciU4MyUyVkhSckhIRFpIJi81a3lgWyZtLHVkX2w2VjdKX213RE8sN2JFOUZG'@; put 'YTwlI3Z9e0g7dzlJTjAhRFM3fV1TKCkkUFY3P2t2MX1HVkpCRTpnI2hlKHY0V0tgUS93eGZNLl4ufHFiJjJmZnc+UU05YUBafjdEfVhPNzI9UjRsOWRuNFZ6TUtscjMwdyMkYWE7Mi5yO1UqY25sOWVqel0zKm0hWkRLQmY6P19pJDEjd0hGU1dse0BMUWlMVzVwZ2w2eVlKInwhSDdFJS5dXmVs'@; put 'W080WjgrYnZVKlpuSXtedURqO2sqRThOd1dQfjZvZEprdUxiK1pkZSMkUlMqWl5QISRra2l1fiVrejh2NTU1YDBPO3A/SyVGOC5TQElUKnd6UzxeOG8zWmNCRFVqfiJ9cihFVzdDYlR1TyEuSHgxVntuVV9gJEVpPTdBX2hWXSNOY2xFZFpzKTwvOUpIaEAoZFh6fVRFamRpK3RzUUp0RDwucT11'@; put 'N3FzdCtnOjNpTkluPSY2QUw3WSh9KXJpRVFbVEx4VzdwdFNhVXM8N2leMEcxNVh3d1l9WEx3dngqWz1JUnliVWNLXUUqI0RIYWREXVNmWkE4K0NtJWR5V1J8MChoL1pVOnl9PHZVVSsyYyVYUjlbXltgMngvOGdYMkl5P3VJczdYMlU9ezA9OGBSdztEMElmfSlQTmx1NjF0bUpUITlzLFUrYUdG'@; put 'Pl9ZQ0hDcmVoeEFKP1lCU1tLKkFycmZIOm1udC87WjByfWl5Pil0KU1geUQiOUV3PD9MTVViQGQ4RCZsYkQkbkhpMzQ4ZW8rOF9FZ0olKG42KytQOnp2ajliSm9sKjt+Pm84NW85MClZQm5ERUpQfGMmbldPTCE5ciVaOzp7VDckMXA0WX1EayNbMD85WWpATHdxe0g6R3RuP1gpOz5KKmUlR2l1'@; put 'fk1Fe0tKMHVtbDpTVitfYDtxaD8jZ0tYbFM4clE9bWRhbnQ7a2p6O2g1Z01UIzQxbUFvfD9rLi9mfHpVdyk1SkNtNDVLMyw8KGckNWguM18pT3xVMy5UfVk1UlNtWlMqSENxfmhle34kMGIkaXAkaWE/QjZISCx1ZiV+JHcmQmtUJlY7NzNgK2s7eHsoRzFYeClKRiosSDhiMnQ9YDAhZ1pYbnto'@; put 'XVA9MHhCbnkvKVBtRzMwYkxKdFk1LEdicH57WkdzV0dyVGpSJEpEXl0qd2A1Zig1aEA7Kllvdl4wckMyem57XjB4YThJbi8kcVhvOE0peSVUPmNQS1Zjdm9dKUpVTnVNL1V8eG8iLndoLmZNQHd5fSF2UmdmPlkkT180V30uIj4lIWxnaWxBbm14WWNQP25aTTpsQkwxO04/O2BWJGYyWSFNOHpT'@; put 'VVEqdEZXNzM+JE0uclpGNG02fGNzJSgiLFVqM0Uwa3pqdCFPdmwiS19jcEYjO0hrXSFPelYwQjgmcz5tQj1vaSJ8IyU3RiE4YjFHZnpxdWNUe0Z5fnpgdmtEW19uJEVtNiVxX2dBVnw9UGVtOTZadVJuZ1ojVThUWjd+Q1hsJG58WHFWR30pKSNxOEcvTk4zNVBZdlo6SSI6b1ImZCR1RzowO3Vp'@; put 'Szw9TzUkPnZWfElCMl9lOX1taHg8fElKQntDcyxiYjZJT24kTWN8ImkjQjArVCkoWFV7I31KUVE3P1o/bkJ9fFdhYWdXJCx6cGNGPzYkKkx9MT5dfHBHVig3emlyMTprMnRUcW52XVNCW146IlcpSiVjSU5bOSVYVjs4dShZP0c0PSFSX048elhOIjMlSkR1Pz97WiZgQzxAUDRrNWcsZ0RLO1tJ'@; put 'd2o8REMqMXo9TX1yMUA6fEs0PUksTXVaKz4jeE1ZcXs/YWVsZjNaZHgzOyVdbixXJVE3JURGX3tlM3Q5ZV1JVjg4aX1iQiY/Q21eZ3ksal9RVyNidzg1dTc+YmpZXSwjTG9pPDdCQFg8QXpfMUhpKThIPHJIbHxdMFYrTD9MIi5OZWU2YW1ZSyxaZkJ5b184WXYjd2hALl1iVGpiQHBNdlZkYXo5'@; put 'bzI/XytbbW51PiIpQUNGKjxEfjpiWktMM2V1LD1KVUdGLCVCZyQmaitfTkpPaTgmbmo/OUhEPEJOKT5LTWJGNjgxQWVlSU8xIURwS0wpW0pfXzYrSyZkRTBUN0E5diorY0tFSjF7UkM1MjN2fHgsXyYlb343fiJWVTIzSU93NGpkSDJPNG4uW1RTJjJALDFRV31PZVQ4O2tzMFNVRFA1YzxuYmcy'@; put 'a1tEXnw6LilYdGxsUEQxVUJde0h0QlB4aHBRenY2b0chRypAdzN4RTxSbng5YyVbISlFKHZJSEt+VkZiLn5VYVdNM31gQztEUHckSlpSTF4ka05gbXh2TCV8ZytpcTxAU2peSn5CLiYvNUhaNVlwVTE3X0J8YFFyVCNpTHdOTUE2TzJjNGldImtoNkROL2FSKElSVGJCM35fW2tlY3ZlRSw7cC8/'@; put 'SWBrcDJ4V3Myc2k/fk5aIWo/TD03bGgwJE9xSUc6I18+eiU+MHBmO05WeDgzQnVZQ2Zmanl8cSRePWNUMG0leSlqTWJfczB4TiNxZWVmbFs8d1csV05vOCtTVjIpJTExY2YsN09jZixIRkB1T2lrLEVpU3I4JD5FPUBRL0ldJD1sNiUwe3hsQEs8NGRyPixpU2xQP3ErUUNvYUF3TEpWV3VONG8r'@; put 'fUBjNnxabXtsIzx2S0ooWTNvP2VyQFQuWCQ8VldoMkVWJCUzcVtxSm0mWzZWNkN1ZDk1aSVbS21mXzw0eHhwYiNeKEN0bnloUW1fXz1+Zk1me2xfWWA9ZHtPYEo8QDlxU2NWS2pNRlVALH55QzY6OStNKndvN1gsImU2T3FCSXh1MEMjd3haIStMejwpNiVfUm05LFFgWHxdZFM0TSZPdWtFejYs'@; put 'OXVEbjBwZiMqT1FsS2RdMGMjPWE7Z2gzZiw8bEMpe142OENQOUQ+Um1GSz8ifm5HeHU+QHt4Z09yQ3duJmtwLHhmemE4T3owRlRFIj1tX0UrKGlFRk9zQCxQZktLZk15NlBwWyVKKCZFI1lAODw2ai59VmF1OVJzelZPRHMkdUNdZ0F6YzVmMGNbbDFGXyo2QkB2d2ZHXj5pbmBzfDNSRF9dPlIx'@; put 'cEk/TCshSkA0cyska0VTe2pGdnNPfE1OLnpjVSYiSlVYUzg+c3VkYnBCWyY8RTpLXn5AWjEoWlAhLloiXiV3ay9AVGBwWSEwSlY2ZzRlNmk2Rn4vcGNvLzReYyRAPU02djJQIUtNPyo6eyt6TThYb2ZTXUxpYT9CcUo9PUY7Kj8sJDhPMnVZaF96bl9gQzRae2JsJXxyN2NqVjt4NykwLihdL08u'@; put 'Zi8xeVFjVy5yRV1EY2ZuKCpoLDB5PGk6YTc6eDVXVD5Bc1d9PkZZW3NWal99YlRhZl4jfl14K2N7aUkmNTprWChQd3BNdlRGRmsrM1dJKF8xRUZtNU5vZlclP3liMTtaZjU4ck12L2VTY2hYKC4qRlkvVG9FLnFgWXoofiFzY1RHKDRQSSg+ZVIsNzIkZT8xW2I5QFZ6ZTBeZ11ZS1k9b0ElfTRa'@; put 'Iz1GKTtQcCUxXyF2STl5VUU3P3ordDtfeGF7TFMmRj8mJHZSRHBoVEk/UE40SXk9OWlRc182NlA4MCVVUUNKMz5vbiVKcH58bmRfKURSRklCZzBqMS43PWNsR01yP34/MEw+d1QlXndeYV0yeERPeGtDeCxpPnRIQ1c3U3AuX3Z6LGtsbSVUaVt2LDdIfHxTQFBhRUw/eFVTPzo8fWV7IjcjZC5W'@; put 'QDJ5VT9WdTQ7fVc3ciI9RG8lNlJwSSJSPUNSJSJ2K1FfLHdBIT5Bc2hweWlJdHw7aXF3OF5CYURhMGR1OXY1KipGQ1Y9TWBeWkVtdyN0PzY8OWAoeTs2SWRRKWpVIXddXW8+IztWREwyTH1tLzkqQj9PIm14REZJRDFHWkphJi95WD17MDNQPF1ocD5IJDcuXk1rMDZgL2hXODBRZ2c6Oz4iS31U'@; put 'e2tVaH1UdTtRQVpjdyYofVhkZEk0aiMpY0suRCRxYSo2TSQ7Z3JlMT1LM3pLcyRWQ2RSWEhheCZYV3J0Ui9JbFtyTjlDakp5fkNjKGtYVnZxZCEye01jSWpERWt2JFVoZ0xRTnB+aStgWzRuUVlrQTFpLHEzYXp4UH53QHN4e2s0Wk98Uzc4YT9jPndfdHpzTE8xOVBKflRrPTJqfmI4dVZwMVsy'@; put 'UEByWUs/aVl1e3QrO0JwOyFnPmYmTUYwJj9+d0t9Kj5dMlNZZH1rLmokenM8WTEzSjxsOjg5aCRze11tP1JReVRQdW1xRGowN3w7aVUhR1syLl47P1B8S3soVDtGX1slJjg4cC54ZFY9P19WKU1STTRTWjdXPUJudyQkS1tgMUpse3lSfV8kZDxPclB6eD0yXW46X2xlJn53MC8+Rm5dRE5xazdJ'@; put 'YS5iQX5yM3p0Um42KCVELFBkPmcmV0U5My5MWEsmYUY8YCl0WXk8QjlWZkpbTylFZHNFYUQ3MipQPmZZQHNCfXxWI0Y+Rj9sPCYxRGpkd1J4ZSFUIVBIbUllMndmQ25TayN5TjQpLDIqRi5mNng0Ij8kfklDOmVVNkNKJj4uLEpOeWpuT11RRT5JJEpQakk7ezBLLyx1Qz5zc0YhSmNeNjIuS3Z7'@; put 'Rj9qeUNJK1I0ZktqL2x+Imwpe2F9c0g2UDBxNDs3M0ZzJX10W0Y2eCxyIyUxU0tlSXwoIV55elBMbDticzl+RTtGRXxTfktNNVNgNzMyJXRmY01KfEhZYGZPY1FyKjNFajAwbyZPbHk2UXN4e0g1QmJOP3ZvM3xLM01UYCwxcmY6JlY9YiNGO2B3aF9PVCZtQnF7ZntAdEY3UmBGI34sT3pKYytX'@; put 'U1JjZj5zUWM0dXYiT09ZdXYvOy47QDk2JCtFeDwmOi80PmN3KGcvfDZCfChRLk8qJEZ6cUA/WWZjVD9EZTAvREJGTVBDRH5UfCwwWE1dTlFeWGUjOVpwJGs1dnFQcnMucmhXRisxSl5AZysmTms5SWo0ODV0KUp3c1J8OE59RiNvPk5vREk7ajgkKV0/MDJoRDghPjU0fCZ5TGYidTtWRlMkXXFH'@; put 'QEtEdDc6MFlvfUw2c0k+fG8jaFQiTGA8b3tdPCQ7KTRwendnIVlaND9DP2VMJWNFe3FpVVtDd308LE83Rl1ae0pEfkFiYEpDOk89UTJbIiZmSjxHPW86VnpfLm1rUEheS0JuR3U6Q017ZHF6dk5dckxVI0ZdblQvdDhXYWoyYUVCUn1kYlhITV48Uz83emBxSHJoIUZYKW4jMG1YW183ayNmcTRV'@; put 'ajpNKiZrSVswOU9DcSooOngxZDNIfk5eU3VPPT9HVEtTLjslMCE6NHRpfjJSdkVbQnI2bTBpSGdXazkhTz5leW9CfHNicERCc3ZALHduNDYjRlFZezFbX0N1SytHbUN2IzQza2NCaTpqWSpfOEFRJSt8cz82QzBSbjVVfUU6Y3pHZlJAQnFNcSpnbm5jJl9bfEclNDVId3Y7cFlwT1BYdE1pTjFJ'@; put 'KE1EXjEpYH45Wkl3O2s3WyhAeDk0MDJkWDA/dWJncyFYc3s8Tkl0cXZeO1F2WEFLcH5MIz8yYVUkQDBdejxMdSo5UkpsIXFMTCtETUJDTkBmNTwrOSNwNiw0RyxKLlMqODJId04sUUN9eVMqeEBWc0cqI0NlR1RPPjs7eWNDVHpBNyR7Xyl9ImpveFZKWV4qZE5ESWk9WUxoY1puSGZxYTlkL09d'@; put 'bz1jLl0icD9tXT8zJkFLJGNyPXouM2hkfiM+LnZeaExXdzpmZXZRKHRrVGoyfHNnd0NDMGdlMy4wQSFuZTl1MHo5ZjxZLF43fD1uX19JJUlRVVpgViRZeW9OdFE0MXZqJW1yTityNCI5M3lHSyZgTjVfMSpXXUUzbXtIdThHP3xQSCsoWHFCSUpKLE4oc1E7TWVXOThLeS9mJXhPO1ZHeV97cn0u'@; put 'Jj1BNSE8Q2l8bXsqW2MlWTRnOWddLCZtO0M4JnJ5SktrNDw6ZmwjXTNeNFsmRSFROz5LMmQ1ZnJRcWZzUUw3KDRJJjRpZCQqcH1jM141JH4/Zmx8VVpSRlg9SDNCOFkjc3dyW3Q5JiFgUzpicWBaRUFXOjBmcDdBMFdiVFBlKzZLZTM9Tyh9c2wjKHFWSl5gbE8saitIJShMdW8lYiEzcSkxZDFY'@; put 'NWBLckxaTV5nTzBNYVhvYiRIYnJ+NFVhUVA6KihFdjAxP3Uraz0mL1pbNm1QPkJEdl8/Mk1+MEhrTi8oImZoWU9fWSlrUmorNGMqYzlOVileMDB3NWA6MkhUQHVWNkIqcEVGS1g2aDVhJmB6MVlONiZDJkxVaD9oUWFsUVFZWSIsfnoobWpgLDdfa1VLPHtlTCtrRT4mfDg/ZFo/dEc2W1ozOHtN'@; put 'dy5eaTwsKy8jbUcqb00lYlg/NTB9JUVaITl4RitXKnUwZXlsUGR8KXVAZmI5VUE3MD1IeyY4TlVLXS8mLmR4aXFYfDxjO0Z6O0NKWj82S0YsJTNmZDVtY2VfZWZFQG8uTE1tQkkiImJOXWV6OUU+JD9yQm8uQHhweE90X2FwLz4jQDgoV1hqQC9VIkhsW05HU2MlPWNYJldhVGp1MlIjIWpjPH5C'@; put 'VlEmVDUoamV8ZERQRmkvSEBxKWs9MU8kaS9bOVcmcGkqZ3EleERKIkpoSzAhaHBnOUsyLGxManEzfk04JStJWi9fczhNT0xiJX41a00lT0xtd0J7YFMhZDVicDtGQihLQyNAcVJqWkQxWEklaiY0O0lbT2hGYDEiLiJ4SzJaMGBtRV0jO1tyS2NSTSlgfjlrLiQ3anUkUW5eclM4bEtwU208VEBz'@; put 'eSR7bnUqamNycDBJaTMwUnk9PSFaTnVbP118akFaYXw+PXFua0RNSGp0JCwqbD93O1ZIIkNzXmg0TkJ9NjJkSm4/eVFRMm93YHtxVkNMJSh7ZDteaT1YUlY/UTd2KzZsOkNMaDd9V0t4OWtNeFFMMEZ2ZSFSLzc9cTJiKUFkPCNuWTAlQDM2MlJhZ2FpVy5YImIlWVVlOXVYR14hdFcue3VfOXhi'@; put 'c0VhZE8pNSxqdypFd0d8ZD1BTzFxW0x0OFM3bEgvImJIQEg7eXkyKiY3ZmBlJDNeOXNNVWtPZ3JGT1QhVG8oW15NPDRfZnlkZy9VNjt2W0JXT058eGZCTTB8TFslSDxbKzxGfWljL21SVGdmMj91PTNiQGZ0UVliczBFKi5pS0dDUVpnKDBVVChQailFMDZsLzI+TkhHWzBDd3pVW0Y2XUghbGg/'@; put 'eChkRF5XRjNRbkFKTUlgJGNxbn5DQ2pnYTRVN0QxUTc2KDNRXlBRfkEseFViT2E3KFQzM3RpW1IoKlJlVWpjLFImd2NZNWJHW0s+Zz8rXj1Jc3d9RHJsPSQjMkswaHhZUGZfTERgJXR7IyNqOiJsSmpIWXBQdkoob2t9OmFtZWMqekFOYHY1aXs3cUIhOXA4WTBIe0N6InFxdXpVQ1pjTEswJV99'@; put 'Ki5rTHlYTTNkeFdKcnEqRD1ucyVIQlF5TTNVPzE0JDhmZlYsUnAzYSRbTD02Q0RVeFVrek9WbkQqLDlhNyl3RTBXKVsvPVlNNC5wVUxoUjNwJj1nPlUsQHBVYSZCNi9Aa11jL1k4dyYvbmlIZCtKYT46cXk5R0FbJSQqKTZ0fWU/M2JdN3Nla0VCV1FmWiRheiUmTkFkVXovdkNqcUMvbDJvW2I4'@; put 'T05tcXJmTWdtcmZGeToyZSF0eEd8My9fM0E7ckMzfkk8VG5CY2FdW3Y0KHN8ayp4RE1LdVVCc1lzOGRwSXBRJS9+eEdJOVt+Syxhc01CVU5ULDVuaFYyKCk2SDppTDIyQn0/ZFk2P1hYWnNab1B0bHF4Qj5tZD9jcUpaPEgxJjpXYXtaU0JmQH1TNmhiW0sqQU4/Qm9+W25SMnRHWmFTO3gmJiw3'@; put 'KiZwOlMwck0zPVhdfl11R04/YmBGQlEhe2I4TmY5QFE0ayNNcytLSjIxNVo5UUtFdmAjOXlpQl5dJFVkKWtdN3ZlKzVldz9nUj57dVl7VHMxNX40VFsmbzltSDY2fnAzWTN0RHp8aWk1REJOQFM0RWpBcEtEM0crUXFpbVFKUGcoXyQxXlROcEs6QUNVRWZfZXpzQS9gN0lGOS8yX15ScS9iUGhW'@; put 'NjBQcCFYNC5de29aQml9PEN5bztWWS5OQkA8Q3ROPlVfK1ZmV3djW11pIUsyai56YVp1TncjQjlFIjNEWkl4eEVOWHVxfllFbF41MHNOXW52KkwvYz08bSgidDF1XXZ2dGBHIWN1WXozK2YvOFI7Yns/PShrJWF5e0R1dXpoUm1nNSx3R0dhRFNNVVN4QzxFMjU8SGxkaF9lTEdKejByajJFNyxp'@; put 'eEsiOkEuNj8xST5gOXhGfWc8fjBvfVpmJmk6aHxFVTAvKkdsd1VaSCVdcnosLHl3WClASXdgbHh5LGxIJCYpMitQKHspRHsqfklFMTpTI25lTytkdm8sJldKMjhGYEdxOChES3VsYFspZyxKMn5iZkw3U1R4LEZhUl4mSF8/XzpzNWw+KCpibFNHR0dUeVlJQktkQn0/WEZdJmozPipUQUhSLEB9'@; put 'UDREJm52akQhNF9AX3dCMDlsdS9YYUQmS35rOzJhT11KQkJteSwwPURhUFIyQ1VmV3JPITtNR2Mwe113ZnwkUWdhaiZjOyN0ayEjKjBwRVZ0MW5wPFJhSSN8U1lsJTxPSDxnKFQxLE9wZi96QGlDVWF3PUZtNjhSVzhLWXMwVE9BMUUwY1I8IWpnXmJuXSM2eWMlKkkxaWhPWGBPIUNaTzZmU2le'@; put 'UVRsWXRfKCxjM2hjWGo0e1paRm5HNTd6eWg/PW4kdTNZbiMpeFslYGQoL1VXQ04xVF5TfXZERW93UDRqeTFIfTt7TStDITVSKThXekNrPVB7Xmp+YlBAQCtgUktwXXw3R1lHbUxxQXg2O3QsKDkjciVAZnM6WkAxeSs7Ql5JQDlGeyYsNTo1en0hWzpDQmMieiJ1NVdvdDxgYF5aTSo1fWNdNSZd'@; put 'ITNyK3dXPXg0KHFtOUA0RztYcil8JCxEQjghMlIkPWNnVD4oTVcwYl5ObEs6ZWR5X2ImIkU1X3hacz01c3tVJC9KdEYhL3ghcWtrQTVsYltQYDZEaE9eXzdwLjgpUUYma1RKfV0zdE8lP2pVUWVQejBLMyteYipVMk5ueUEjLzNQWTRUS0VXQHJaQDBufDxYT0E2aipObmNidU0jRmk8X2RmNGlb'@; put 'M3dNe3klYHFxYnY7Snx+UUhtK1heeiFGR1Z4cTV2PTcpTW1ab31XYUU6anBTb1I+ZEJ7bFMpUjVPPE8iVCgmZzs5SmcjfiJjSH5Ua3FfbE9NbjF9N2ZNMV9PQyxnIz9FUTI0RzxIVzoxKW11SVJAQHQrQldyNks1OjR5TUBpQmo4MiFqdEp2PzVVOHooVz87PGhLTCkiP1d3ImBZWTF1eHh8Yz9J'@; put 'NX00JkJhSyxrK0BSMzdaV0xwWWpIOmFHUkVBN3kxNF1od3MwU0pSPy5lcz9zYHpdeSVpXkB7XitXUF5vQ09IXSxsZClgKmlDO09KJUJ8NzJKTFgpclgjaU4wKl1dRDJTQWR2SF8qPWt5TH1hbUFpWllQY10+XSlgUjUhPDpLK15YRW1HUXsvLyFfZEpMIWNCUGRZKT0objxiXTBMRSVhV0c1O2FL'@; put 'Skp3fCssXTpdbn54YEQsK2ptSjVZPE9XPnFyK2ssRDh0TWx0UnZMSX4iQ2Q0JUtLIiZ8fmtdZnpLIm1gZlV8dXg8Zktmb29OI3FOeiZkc1Iwd0BAalZMYG1AKCRtJm1eKCtHVjYrWEdNISNPLiYjR0NndzlLK1p+VUhSYCo/MHI0PV88SHFJNSNMUl5dci5IRTYmPkZHQTFJMiVyazdpeWM2bn5A'@; put 'JFMueFExclhXSThmazNfQSF6cG4jdUhEQ0tyRWtVKVIsJSpjXSRPRiVOMndqQmU6W05LSGBENWRwSDRkOVlnRixTZEV1VGIwMy5UJldFWSFRflImITlaNFFFZzw/b3BOe1BvJT5GXzokXWQ4YVFTYkV5NDl8YmZgWkBLcUQ0TC5Wd3wrRWluZG0oQGpdNjF1NXhJQmoyZ3o/eD5iJT82V2gyaSxf'@; put 'OmYhTDI6P1s3ZzJvPkN5eSUrSnIsP0BpSXxEOT8xNkIvRSs4dkAvcCFiYS9tNVg0KWRwOWFZRWtoeyRAP0xeaT19VSErNDd9UVdvOip4P2UqUTBEWTpVeS9OJW8kczYmQ299YTBPbHM5VmZTOi8ucjNxV3d7Lnh4O0VZfmtpKz0oPCpVTFdSWz4oPnBMLzUqIXh1PWAsfSJ8Wl8qL0FNb1pEWGpF'@; put 'RHZvcS42ZHlmW0VsQUR6ZlkoNj1IJjYyTnNmfT4yb2tCLm9ITDZ5Jl40TTs7eWolUWo6WGFtYD1pezRGXnVkamk5ejRPZjY9PShYRklPbi5TOjdhWGEvRzoya2Q0SFl9LHdKfH1tOU57KHtGTkRBPSJgSTBfXkExaldsQW0sXX5yOzJ9fUl9Yk9OZVokKyVkRX5UJnEzcXtHXkQsbXZlVXs2JVZS'@; put 'X219Mmk/dUlmRDBSQ2d4YmsrJDBqLFh5THtFYXZraXNpc3t7QHZPV3tMWmBYJSQ4cE9yW0NaY2EsdndpaSlqa3tdRVNDXnpPY1dqQXluWShOSnMoUGtVIlQsVV0oYlMxS14vMUZaI0BuRUsyNUReWGRBRTF5SSFzV14yMChqayZ8JHpEbVYjOWVLaHs1dVtycC56akgvSTlSQHsqTjYofWdvPFVh'@; put 'ZntwaGQ9fm5JU1gvbVYpKkR7V1FeNmMhblhEVThbVF1nJjdiVnw5dVhDJj5+K2xLcW1bTzk0SCNfaU5Ee0UmdHtQJGlMNDF3VXJNcnhwNFFpRnM8MEp2LEFKKU9+JFJTOHZVXjc/PktoUGpeKURzJVpoTGRdImFFQzIvSSUwOkZbQiVlRWN6Zip3b3BxUXt7TUNPe2cqMiVsL2chKzI+R28qQFdw'@; put 'Zz19NkNEeGRKbjw8STBdRHpGVygrdXJuenUmbzAqSkB1cVVANGk8fjE6TGUiMUNlXllVOjd6V2Q0OiYoV01FMDAiYDpAISF4ImBJTSEvZmBqYVE5V0dxfnRALFFpUzF2WTw/L0kuWUkrIjgiR1tgaTYiNEI9eGJDNFNDPSF4WzpNR0h8ckg1Q3p9TEAyNlk/KmVFd2I2eSg/ejE1a249P25hWlJb'@; put 'WWYsbFVsOjAwbTJrYHE/elBWSj4veTZ+enpxZD1gdkAxMn57PTcxOypGPmEhWCRpKGdGPz5JXTU2KkB7YHhjSWtNc09sYCovNW5wOT9WK0lRcV0jIj9ZaGw2JFhYYSY4VDpfL35KeHV8U2JVMkU6Mmh1QDZCPGFkIV1wVlgmUzVicl5JLnZobko/LHxWISJ9aXdNeUZ5cUo7QmVXP3FSMUJvQ0Mh'@; put 'ZDgoUSo8a3dXNEY3PmBDaHUjO2wuU1VrKl1QWGImOldGdm5GVm9pWC5beXZtPWJUOS99Yn1qWUBZQTNKaF1EVVQscHcoYDpWcXtDbmZ8UnRdV1hXdDtDZ0B8UW5BLjpeQytyXWk2bVZHSmJ+JkI/SGlAPlBDTV9ePCFNXmtLfSpyazxeJVUyQncuME1rZys/azVlbzVuJCE/SjU9LDxhdUsvK1o6'@; put 'NipLMlBHQGg8IS94a2F0VUBmVV9bU2FHTmI/YWRGbG5oPFhwKCI4fj56YjMubkozeGAhPlEvenRTd35BVk9KTjFPUThhOXJIMkR4I09XdmElak9fNnJoWlowPiFSLGBFKGZTUDxfJj1ucGBwaGw4MlVjLy5NOURNQWoka1pARFQuQm4yaG16WTQ4RWxJTXlaLDJ+UW9lTlVePzQ6X0V0Sn5rZCxu'@; put 'cy4oaGh9U1tfWiJ1bTIhalRMYjoiTWM4YkVvTXkoTmlkbThtMiEvJXJMSzNUd1grSUk8d15yMGVacWdaUV5sfGAyZnZpSVRUSFR5Y01BaWF9SkI2ODBSbl1uT05hZUxbbElhcUhAaGExNlhGMmxCNGprb0QzcGBeYi4uS3dCZWwsaiF1byEmQmFYNSRTPm4ySjNMU0g1Z2o3I2E8byJOfjNyLGxL'@; put 'T1B8IzhNQlVmTFVkPHNvVT9tRD0vPCFURnNVLHo3ZzcmeloleUx+K0owRVVjPFBnbFJHR3IjX0NJVyxKPWNXKixkMF9AdWkyR0N8RWI7MW8uQnAjez5mWTdlOHFnRTJIalJVMDcwcX0+c014NnVTWGtDKGJTT343SCFUKGB0THMqPWcpMTN2YXBseWsiNnUlPVhCdDQlTmJXUUxDclRPPjVvcyM7'@; put 'aDFbbiM4RG9PI300VnQ+bmA+XXEzSUAqZE4xOCNJMD9XSkRsa01jPE5PbkA2T1A4KzNpIyJXRWp4Y2dyVFY8ezUrYVZIWCxJa0R9X0RLNVBiPGI1W3IiMFEsQnJUPCZQLC9VYDA1KCF6Qz5TMjdiVi8jcFpZeHAiOyR1fT1kRDtecyNNOFAwYnUlMSZgVGImbE9KPUluaD5NeWgmOlhTcmJdZXl1'@; put 'Xmtob0tWXVtRQiFvfEoqWjg9ZmNlTTs5cyp8VT9PYiEvNEtvW0ZGV3NWJGcmUitSbElJblk6TztbcTdQX0BYfXtKOiZpaX0vcVAmUj5wal1xQj9FUylbQ0h8bChmKVVlRHVgTkJNZ3k7ISN3KGZ1fHIrenY8THs2fiU+KHFzQXMvW3w/RVpbZEA0SX1zdlU/IyFheVp9PlBBd0IxZUFMZWRtcSY1'@; put 'bGxeNlhgWDUzZXpgdUtPWFJDQlJ0Si57PklNUCxCez9eU3Z4XmU3VzdAb1Y5WjN8aEhnUGB8a2RoZXpzcG1GblpvL1toQzxQZX1janl8JWZJPGU8L1kqXmBWVzJsVC9LaXVZNjJpUH1qeVQiY0J3RTovT1VZUi9VUWNXTnxUTj46K3UyNzxgQFRAaGgqMDkyNT1WMU9zbUtDNksve0dRc0M2LzQ9'@; put 'WE97L2BvX2F4RXB+LkUiQHc+NTxbckJ5SVtXJTdJLlVeOHlZUyZaYiliJEJDellScldUIy59aFh2JDhuXmljJTxFdVdTdVV0bnBmcEcsXzJOMkpZTWVxaTtPb1ouZDIucVhISDAlfENTVnV4NSM/QnJTeExsfFEzN3UhRGQ4a0t8SkdUT0lrKCE3QXE3PUJmaElaLCglJCNmOGRrcXshV1VoSXAo'@; put 'MWt4Zisvc1hSVnErPj9YI09bdlVHOWNiTV5BIWpqeDd9OGhEYiRtS3RHJUZediVEKGo7S1AvekkwMSh3ZTY/XkJhYThfLygiTXwyczh0MX1sdHxTbzkvTCFUSmk6NypBXXIycVVyIyYrPi8hYz1nVF1JPCN+JClAIWU5P2ooNzwxfXhPSnlWZUAiIyZSNThXLnkxOCVOd1FPTyZQMjU9RzJKYmY0'@; put 'LEFdY3tORTsuei4+Syxwb35MIWo1P0hYJW86JSZBdHY0aCF1PH5MZHlyeC56NnZ5ZH1wZ31lakdKTEJXcG9+RmJ0THRgOjIiOCpjcSlDMTl3MDNwMkg9V1koOEtMOTs5O3pBTCNCS29DMX1lVFYsLFdJN3t4MCsuL3Eqc2E3V3BhaWpWVFsseURYMjNuZ3Y6YEFaVV8mRyx3RVB8bTV8anl4RiNa'@; put 'fEJFeCZTZVs8JEJWa2NZfFQ0RE9KN0tIWEJrJjExdnZNJEkhT01Ed2pWSW4jQD5kOnc3b01Gaz0xYF0rbD5DIXVkOnA4Jk5sMTZqekZ8eHtXSkVXJVgzKG5Xeyg9fEM+UWlTXTVRX3lebnYjVnFKSGo/QHtbd2lWPEx5b2ZIYUMwJWFVQzQ4MyFRK18ufmopXnM5LnZtI3N0PGJ7aX5QKz82dzN5'@; put 'OGFhL30qYE5nNnJEfCkkTWxLZixoNzJDJShdRTJuN2lGTU5zR1pHcXBZOHNnNEpIOVYjflZKIVgmIzNmd1NzcntvKztFa30qS3tVZy5xIUpxUXI9W0p2S0spZ3sqLnRPRjF2cTJPcUVsYURDIl5RNVBEVFooUFU4UmNSNEpdP2J3cXZCI3RUTyJKdHo3Lz1pPlBZUF1TZiMoej55WztlPzR3cS5O'@; put 'WmE0Nz42K29UMjd0KUpjPi5yVXBEKzJMdz9HekkpWllwPiNuJiwmOEYkdV12bC5MZDBwSTViTjMyaTtpYHJadHhGZFN3Yz4mPj5iemc8W21GUCNsJWthei5tZDVbfXdnImY2dyFuNlJ3IU9pemdoS3liMFdhM119R2khR0BzdT9qLnl0P3hqbTBpLnJnNFBTUnhEYGFCZWx6Q0J1bitZeVc2Wl1x'@; put 'R0JUWjh7PWxuL30uQ0hrb0o+REMjO1huTEUzcjJpdEovVipDKjZrOjJENEllT0MhSThZdjFiUjpuNG5RI3MxVj1IJSUjWjBkPF17Y1NkTVtEIktBRVlwUD9tdT9tXzBre2c+VDQqZ2soSDB3UDd1ZShTLi5xX14uM3g4L25KWVJAWitFQGYhVFlCPEVFSW1leUhZLGM3MDxbenhmJnNie3NMYFpD'@; put 'bDB0IUR8OC9QIkZQPmEvN2I/bSFbYEVGV05NOUpyTWNZPDBRSkNrdSJGdCNmQn1ARyZBTHxiIT5NO1klW3dCXzlWX2YxZEheSGdVWXBadVVHND9KNi5nQTBwTERkLkxhSi90ME5paSFIV1dMYH57NzEsbDM2KXVReXI3MWRQJChqNDs6WUwlYWw9dFFLbEx2OC9TK3lXJElDNHYiUy9rekBCIUpC'@; put 'SFdPTiNrViYscU5DcUx5JFo6MDFbMkUhdmNoSnFHRl0hL2xQYj49LHMheFBHT0oiPy5GL0F6c19RSl8jal1qaUFNdix0flg3fHA1dzVXXSp0N1g4RSZtIWglNkN8TEZ2QWAzeXpkcTxydG5ifH1xVHJpVFNWfHhyaFVVMEsrbEhtQzp+QyFFYUFDQVdHPHJTNlp6TlJ6QiVGSyIyaXcvX35TRnV6'@; put 'cVJiMiUrISIrRih0MiRlLyNpJSU1WCtaOTxOL2wsSF1Ja2dXJDdRVSRnakcqUWImNVBGb3QxMk1qXk1gMD1iWjsmTDU9I1skMF9GO19UZT1+Tn1qcC49YnkrYyklc0liRD0vS3V7S1l0YTk+TklGMFIob0Y+a3p2eltuYFJWYkQofXVlbkBSRyxRKlJrTSZZI2tUNVohX3g4JSU8LE08ZmswREtb'@; put 'VCl2QUIoPD4vI0kzKFZPbHlfTiMhQi9QU2QhLmZZfWJ5Ym1CMnpufH0rNHN3TH1wRjxaPVtWM1tkdVhgQHU6KFlRTDQ0YS5nfDg5SG07RX09ejJCT2JVOn5IY0VqaWZ0VnNqV0VLUUtIZ1JAXUV0d19sc2E2P0t9YFN0enJmP2tLSztnK1NPI1E5U1tFMWBnMTYuMHwzeDFHblJVUStCcHsrTGhd'@; put 'ZTdQVl0rR1tTJklHKFc5aUB6WGV1dmVTUHd0QGsySHFTfTB9KkMsa1IjQyUjdD4sU0FvMmFGWzR+Wkk4aDdaWksubXt2bmlLbzBdXlR2RE8pKyssWjtda0J0L0h6T2NCL2VSNlthWyQ/JHJAPzBjT082a2IuIz8+PS82cnF9OmdqMmxHdl5JTGR3K2Z6R1ZWT0pgekVPY1ZDZW9OLkdEUz1GRCNE'@; put 'ND54W1QjZ2tUKlY6UDFTW3RYI2NseHI/JG9sVj4yU0dfcWU5XUZXak1QTylaSGB6ekxsajk/IiliTjUoUm92WWFINj9EW0ViUWZgNzwwfm5xWVtXRCltaigqeltoeG5CP14uU1FTQStUMmhuXls1Jm0kaUpPUTpaeUR2V2IscHk9KWlmT0x6Wl8kKUNqNThSZWlxRExScTdhUyZfTERCYDJzfWhn'@; put 'Ty92VlF3YyYwNzI+QiMhJCZDInJJbGQ7KzBgQ3RRNjN8K2Z8PXJDXkc2JWZ8KilJcl8/IVN8b1QvXmlRcEpbUUtKdmBzeDQwRkIyRW5EUUx0Sk84VDpKbXlPd2d2SGNpRSEmdWhUNmM8Y2hnVlpda1c5eDxsVEZ0T3AhJCtqMFF5YjlEPl9sPDo4U0xVV2EjLjJEeWQwQ1BnYEZYLnVaMn49Sj9a'@; put 'QXZ9L0xwSHpRXUtbfiZHRUJUVll9dz5ZeSV8WEBOW0ZsKTQwdXZnaTRfLHkmdD5TPj8lNnVMUkBoeSRGS2Z0NzNFUUIjTC96VUpJPnIyUVBxOX5NWW1zaEFIPEJDW05GcC4mNHZMYldmVSxhO2ZZQUkqbFhyQyJmVEFIaShOSSlITlFbRGRHMnpwNEJfOFZpXkcrZkdtVm9kWncsZStFRjNsYSpw'@; put 'Ji51e2RfMGxYVmBQfWE+eHZwOGMiQ29pWT8wWFIuLCNeXTU3dWhWbWY3ZEc7allKb1IsNTl2THYhMiteLDpLUmV9c0A3VDFAXmU4RDhdbEVnanl6Zj1MfCp8e3RzIWkvbCVDM2ZLPCJxVC8sb3g1SzMqOiMuJWJveHI+LkEqeFo8OTAjJExpYThPT0o0b0c/W0I9OEhKVmNYQV9tZj02dWJUazg2'@; put 'TUAvQ3wrbChhLj5KTio9N1gmKXptbDFbblYmUGI1M3l4Skc8JE1da1l2aSZmT3A3LkdYOyVLTWd0MChieUBqZGhSfm1Dajx7O34pXjhOeG1PX2ZHMzwzS1YuRVVZMVhIXUxgVVQmTzE+MURRb140cEApOUVRR0UlXix5JHR5VU0hd1ddU0hxP3NDQX5NUDI/YWw6PXxNUTEkOE1RTThneTpxKktu'@; put 'QDA7UE4pck5Kb3l1cStyRzQ4bHUjPElMWj1mT2tJW3hZdWVOMFdTL10kL2ZkJXQzan5GcWczcmEkYCtdc0NsQ3xRLlowLj1OaSVaY2Y9byY7Xj02Sit1S3I1SjljZ1R5dDQ8JC9kI1BKaEdpTGU5Q1g1Qz9lWnNCOitIKStxc1BGWVJsRVRWezAvS1l8aDomY0h1Ujp3aW5XVk5ZcklnbDAjR209'@; put 'MyFuQFZmRER0TTkwU1Y7dVpqZVd5OWB1aTd8VXtDe35FKE5BOXc4ZkRNWDQlJFEyb3xCIUNufDEsZFc7JTAvPGcjTkx3PEA7Oyw6WHA+P3MiX3VlTUpvPltxcHQ+Yik8VjI0YCtzNSlSQ1lRODBNfGQ2RFB1WT1Xc2FWdDhmaSlVejRSVSZxZEg5bit7Ol4peiFqbUQ2V142fHNNO3NWOiN1SnJS'@; put 'YXIve35jfn5HcXB5TjgsdHFPI0t2ZU0rZnguX01oLk1faUl7ckMlJG4odTdoJShJN3laejtUe10qKndHRyheMyI8cClRUz44Qn1lLjBPPE9ifnE+MmVTdG1QWnpQSVN3WX09JGMsbmEpanx6e1JmdXFOcyNQaFBCdC5kKyNILC5Mdy9XKU9fZzJ0RX5JX1ElKEZXZ2hUMzgud21kOjxTcngsRkkx'@; put 'RjFPZGkyJk0mSnZbam4qM1hIIlA1ZEY1TUsyelM/IUJFbUN6SCpHbyRCbzR0SW5RJjw0W3xlZGYiZXVUTGxdN0JEVEgiPVVQcWUod3FJcVNIVnpLPitIMUx5Q25ZO1BsOU1nSDFzWzkobF45L3x7eE9aUVBSd0E8UyZDNjdHcUJSQ2pWNXEza3ZLWzc2PiV9ckZTLFQ/NS95UlJhbyRVdEVSL2gk'@; put 'KCIsOWI8Yz5VYltPayllUiExWl5qPmlAMDNQbjNlYH59JEUlPUJ7M2xFfmV5OGptVDZKRXYxNWRZSTUmbW1baGJfJjtbNSlPWFVYeGZIYERsXjkhL2FRYVFGQmozLGtNQHFgdkdtZnU5K3tfeH1jV2BqZGFQMEkiXVo6Y0tsPHs5dWFVeUwkblIwVXVsaG1YPUBeL1JOd3RVUkd+aFRZPzh8SEFq'@; put 'QElPMWdwMWxhJkc2I0ckR3klb1JhJV8sbD55LHFdd0AvTGgsTCFjXXlXekJrTnpXZFE6R31kNj1rdlU9YENvVyU1dTpsPFhZZkp4NGhldFt9cThCKHYmeXQ8bigjbXIiV08qUWlfX3gzNiRFfiR4bF9qeVM5cGg5RylAbT5SX1IxejFtOWRrM3tVOngzTF1sd00pMilhJkBWR1c9KSR8P1JKTDBg'@; put 'aTh0YltSdUJ+TiskZ3FPJHVCKHpYMVpLUC82S0VqekAqV0olRj8wRDksZE58RkpCTCVsWUU/NHtrY25SbFg1X2ZIPV9EWHcvb3I0MUgzc3t2ckthd2woQC4rTUl3RDRHbCNncStHeCR9WUpZVlVsfnwsMyReQjVndWEyKXhYe0hjbGd4JHBtODdWK0sjZ219W1skPmxyZmxjSylKV0xER21MSWBV'@; put 'a1FoPTs2ekRpfm5SOll1a0k4RVRwVGNRXjZjZFt4LlNxOilQbEFdJX15ISpCKW1uOSUsfTJLPigvQi9gViZ7VEhUJl14YndVKzMvXX40Nk5PPmhPLFVEWSUqKzU3ayhqaEUxVEtpOnUkYyJoPTlydltwaVpATzspJX1yPXtMXyZ8TDVlKHcvbyNfcD07WihSR1IvdXpTIVN9a1N7d2UuKjo0VTBD'@; put 'ZDouOllGLDQsTE9SdWBFWUNmRDFnRFF5e25CeCo9QEpEO2l+Ql42cW5bT3pDSXVYRFZUdiRVW1k7PnNpfndMMXlUfEJwbHRMfD89MnNnanc8eE88Pn47TUw1dEUiSnBKNEIpezp2YnNuZFFYeTN+LkleeEw0NzUxe1M1QiVbRCoqMVckTCI0PVAyfkFXKjAuPkNFbj18NGBMWW1LZStxaitRPlpV'@; put 'US8wbW1WWS84YGdDITRaRT5oREdUU3gmPT97Q2g0WV8rJDlfZWlwaWh8LFFVcTtlYEV7KTVZey8iS2chO3dTMX1vJEFmVnc6PEA8a3YsQkBySDkrSmEud292ezsqJGNbOiN5MHZlU3lWXzImN1ZkPis+V0tOeVlURGV9JWtAWjV0QiROcVFjZyJ5Z0RWUTw3Z0tyWVBCaXZUXmZATz0pejN3Ljxt'@; put 'eW0wcVdVbHEhJmNtaF8xY25pWHZjcipRTS97VzZpdng+LnhHcn1TLCE/KSRFWSg9RFdIIn5DRHtPV1MqUTlseEkoLGkuTFg7ImZ0bT9nPlNEZChjSTY6NCxkJCRYVFEpITVkRCVLYnVqVlh4VXc6Wl1CPipAJlo2TVZdYmswRzxgfmNhZ0AhYmwlWWw4ejNmIzhsJWV5ZD49L012dUVFbHlxNHp0'@; put 'PkB+XVFKZXc3YGclW3p8biJUP1Z+eiVOXlFtfGp2V3srQDF6cFc6SDIrfHxgQGpSYXY6MDM1SmRONnMxWjkke2BlKy9QZkxRdi9GNT5ANXUkVEBkLC5ANUt8dzksJS4uO0swPnJpeDddIyJxZy5BLGwqRHxgMnZ4ZSsoZmMpWzJbJkt3Y3tRIl9FbD5aWjc5cDxFWE1taHhAWlMkfkVARiVsTXYh'@; put 'USo7L2JZcWFiT2M5NkdHNUt6SHFPeT5SWUFqXWtyMTFCM0YmXnJ0IlkzK3t1b3FLZ3tCNlBRe3hTVig7e1FIO1JWb3ZXc0cyTH50Kzg7dlU8dSluYUVtYkYmSXp0fkpfYGtNP29vQi9wMVJPdWhENGJMSkxEMXFyP1lDKl5ML3o8XUVUMzlrKSF0Uz0kJkM3Wkp8PTFTKS9sTG0pSUVVezJIeCI/'@; put 'Qzh0SVslRSlNVHQkbyZHfmVJcGZzT25YUjg7V0JyejkyP2VAKFkxenhCaDg3YWM6Yk8mSHBCMSxRbiR9YlpHcXlGUWNmJTtYWE1uKC9pP3dNPlNtW0tzM2cmJCpge1lNfl1PVjdNbkp9WEd8Pig5L0lySERjaSo7NURLTmk0Mm5iKENeM2hjM146V1peOXdjVlVEY1ZjKlFvTnokJnRqMC9OPHpQ'@; put 'clVBNU9QanI6fkZ1YmRqfGUyQX4/TkpbbUFePTRHey9ja292JSMrWmRKfGMuX01Zeyl6cCYjQU97XX5WRWQ+InhAOFkqcz44d29Ia1ZAXVpZR204Vj5QaGI2Kz08ZmtzY2Y8PW8uPWd3cEJhMllIPDZrRS9QL3BEPSN1Tk9UQXB+a0slNjNARWc4cSNFSWUramhfcjpgUCM3XmkvQCFQaiFWNj8y'@; put 'U117dGZUIUU/UU4hK19CdDVOcV1zM1pBKilKWSo1QVl3WXl6cy9YNzk7N2tvJXh3alFoaUdDdkNJKVhgcmpPRnNeWl11K154dWcxaW94ezJPRFh1czJhd3hbI29ZSlJ1WUQhVGpKZT9zVHlFNz5FLGMwaGNALFBgSXNdVFZJRjU3X1ovZWBdcjN2OlEkaU0/NENEOzchLzBbanNXTVFeVTQ7W0h2'@; put 'KT90NyV1WGo+c2ZLcXJEOE9YdE1lJjE8MTFMUDcpVFEyJFVhKW9iVWF1NUg0ZiEvfT5hfHkyQngpSDw1W3whVUlSb31mSCIvYmlPREpvZ2lNS2BFXyJARGJ5aD5jQmYxUi9fTHE5MCJ2P3c0V2dYXnhvO0UoITJTQkw/ejZ9SzozS0xXN1ZUcmVbdD9mLnIvRVF5RFI/TktdISJaI1VmfjkjKWty'@; put 'NiZRZkRVOGpnYWoySjdzYUlrfHojNUgoe2gsb15ySEJva0o8PiNndTtnIW4rP24xXUs2NSxwO3J8RDAid3FaJEQyVkchUXdzfVRqdDwoQ0U0am1LUEFPQz4xMGheR0VuYG1zNFguN0t8RW14WTx5UGpeTEQ7L3I4RjxaJTpATyFLVWxOP0Y3N20rM149S3p3QyxVcS8hMjF8X1cwTjFKZGNXYE59'@; put 'XmQ4M3g5TUtzRy9vPiNrd1VhL15EYGleZnovN0JoIjdDZD4vcnI5dEJpOi4lYDY4TGw4KEUpXnEveGkyYU5mQjdzYV9bR3guOGUqSXNDJCQsQSQuUzk8eGxSLjJuQERwMihlWyYiSCk4QmwrUGA5QmlHZXZfRlRgJWMjeVtlSytCbDZHdiRjSnBCR1h6PmpEZFAoVSwkd2NSdXxebC9SZXhzMS5N'@; put 'VD9jM1AzVnE1eEFGcSxqJjokVCQ4JSVxOTAlZHZ1MiZEWXRrSn1DflNobCVZVWFgKjc8Y2x4WldfWDYobkdTW0EsPFVKK3A/PllrPGpPWilrdEppb0kycm1XLExkO0sicTNleF9oOjE7K25DTVk6YmR4OyklUUpeenpQS3JbZSUyKiNUQ2tvbC5ESVh8KlBqYisxKi5YU0gxXlQ6OS5MTWhKJHoj'@; put 'LF56ISRGZ0JEQzpQKlV1NStSYHkrITE6ZUtHUV9tKWsuJWU3NHttZCVLYk5mLjs5ezt1YWQrUXIpbDJQKlQra1ZMWixQY14oQml4WltvclIoKW5IWSt6fl9FYD12ckVkY1RjRThsdzNPQGxfaFR3RXNEXks8WCltaHorR3xuTUwxRVN3bWhZSTtOQjZPKyg/OlJ4OHlPen1QZy55UlhdV3BzXVtD'@; put 'dmRRNiFLVzNDUjNCWjRKX3hSYTYiaFRddGxgOEVYaVk+SHBKc180UlY4eVhhe2MjPzYsRVZKSUF5aSRmJFUwOT9OKE1NL2Boek9BSC9zXmhUMXNVYV8lQTN0Ul91L2I0U3kxa0FtT10zaDwwMCRVRUU5KUlKQS92IlcxXV9eQC9VJW9wXVdnYHQye21kUEc8U3Y6ZihKa1pneDJnU1Y6OSEpOmla'@; put 'SWZtfjRgXTdBe206XV83ImkxTDA3L3YzakxuIl0uVD0mQngxKyY0KyJhZT5UYGIqOnxGI1EwP2MhY11lUzNEWHtALGZ3Tlg4Rmg5KzFJejc6dVdSKHYxbTNIT0hsJGp9KXdpRTgyI29BTSU0ZnRuSkZ3ek1gQ35GSWlMTiIwdVhSOUIvIyZEVWMhRUBLRHovQ2MyMW59b1clPW5BZXhpQjpYUlRF'@; put 'ais6Mkg+bnIpdXxyVE1OUCZvOytVWXZFVklsOXU6Ri4uNFlhK2QmcjFISHpZNiNnRl9xVipMQVVnbWpOSjhvM1svT3RHI2JlaE5kL2QubEx4Ti5Ya0U2LkMrSDwvdXtOOFcpXmg+MX0/Nl9bfWUsSlhrdDNefX1JMjwqeFZQJUxXUV19V0ZSdWBiJUpsME0ma1ZpWDtoJFohLzl8QFU2MXtXNXZi'@; put 'W2ppTktQSlBmTjljeSRTTVNITEQ5eEEpQnRPT3M2RyJCNCk9RjRheWllPjxnXigueUdFVTdqQDVvdihLL35fLD1rfURFVEJUfkY4e0Z+eExSazR2ZWpANjNPQzJYbX1YUVZ8RyxVP0trbDNPSik8JmdvQzU7S0JqJlBXK3lDcjY6aGY2dTRGI01sXiRrUCRaN01kRj1ufmNmWHEsJEE8VSFgPTV2'@; put 'SnoyTHVOXUkkbW9xQmREbjNifVA6fGxISyo4UTtrNyxGaG4idVVhM309MmFSYCQ6fHYoaTYqWiRgJExfTjJRWUszals7JXNtVjNOP1Nfb1JTeTFYLjhgQDdKWSlgcGV9WHBXQ09yfGxuMXR0ZD8vUyFGen44Q0xIWzsifj5zfHd4fVk8SiNfTl5VeXFGM3UjbygxKD4qVnomRmVhRmh3W3hAXVVm'@; put 'bl5pVWs/cVl2VHxBVDRUXXRuQilieSZGRDIzaTYrYEtOW0RrfjBYWjE4UDgyc2R7bnViYiloUDo9YWlUSj5wI0h8SEImbHJsLmY8fio6XmNbRyM2I2dQWSRNd3RhXnZdLmQ4cUUoSGdUVjlpNlpUfnJoeEhpYUp0QEFURHJKQTVyJTRUPkpRcl42WiM3Mk4pQjJ1OikrPXExazg+KnguQDpdPHdo'@; put 'aHQob2BvfnRYTCozPStRPHhVb2FnW3p+fjMkMEpgeFN1M0l4Ijc3fC5gTj5+QHhxcGkhfnEzLjl7ST9fQXZuN048V0ZRQGI1V09kUkE2VWc7TmkqdGd0c0s0YXkmezE+RG15OVlYQTVeKUx0SXl9Lz1yNVt1M3heTG5AMWZpLzpXVD1+LmR5dnh3Oigvej5eOFRlMWNGW2xqQ0M0SlNybGNHJEY4'@; put 'cHghR3dDRSMiT0RMN2s+ZmNtVXQoaGE4WzlCUCUveiprPzouLldWJX03ZEBUYmApOVJZfHlFPjdjKFhxd0V5SipFPFA1S2lSRDo1Skl7OiQuY1AkZllbVFVFSztYPUY7JWEhXU9rVXF0dmJwOW5+Vnk7MiQ2NFFZajN1NHN9PjxmfWJbSjxkdEUqY1gkRXtAQFA5dzUmIiFSZ1NOMktpUWp8cV8s'@; put 'akJQTHN7OlkyPVVbdSpeeV44MjJuIjE8R0l2MGE8TGBxbEFDRjc3ez59LjQkR2JrREtdQ2cySzpLM147LnZ2L2tnMl44PD91XlEwUTZTOjVvUl5BPGd7SU8zcmY7W0QkL2EsbVVpNVMiQSRwZHQ5KjU5KmpFPjBdQjlsMnA3X3p3I1ROU3REJHpGM2I/RGQmY0pAdmJLQWhSTUgjMHNHa3VUTlJJ'@; put 'aGl1JGR5PVJAZlI1WnUldSh1RHVoJF5kc2wlam55dz0mZ019emR2L1tUKVYuOV01Z119Mm54Pz1oPTEmOTtAWS9lNSpgOVkjZFZgaTFoMkJwUVVvSmlwP1QzcCN2eD92NjRvYG0lbCJDQHZ9d3QrM3tEXShIUSM2NlAvbkR+S3p3Ol5lNVQxekJzVFtyeyQ2dU5xJTJ+Nj5XJnFlTDdjNUVLVUdn'@; put 'RTAjKnRGPT1pMmY7OF9zOT1vdmBZc2wmV0ooZERGQWU8LzZ9UWU0b2BkbTppdDY0SXxzPGchKWBqTWQjMjpaRWNgYmlJeUxJSlshZjdtJTc0UWVvX01MO0oibEpjLl5hSjNmRWMyeEVwcCJgaml3LipWUSt0aGpSV2hOWShZaVlZK21jZzA9PiN0fF1iU2Q8PFJvfWB5dlFLY0lWcXwjTEJ4blpE'@; put 'Y1AqW1t2ZDcoUDt2YFt6JHY2W0BhU3IxNDFZdzpJVlRNbnQ5fE5WbHg5XWcyV1k5L3U7b3daSFgyfUpXXkxHZzFmNmsyYm0lfSZPWmFKfVNxYExQUk9FPTgse0J+OlcvY0ErbUY5cUg0IVlyeFtrSlJxZkVCRmZ2RiEjSzpoVmVvMjAoYHZZZF5yXz1HUitIZX1iU3YjX3x3MX00XmJrPltBflZs'@; put 'NXYkO2h7fTxiV25aRTdoRS5bTGZiQUxna0I1flosTyFweUoyfjAwb1ZZQ2NxREBxISYwWko/UUV7TWZmQjN0P2R7KmlUMThuXyVnUjMpJD9uNTFFaT9VK3V0NGw6fE9KMzAwZXcmTmVRWnAkdDUwOmt7ITA1LylIITc2c3kmVC4xP2JNY3VMT2JlSFJdJHs7LD16YiRPaVtkRU00X1VzPyNgfj4z'@; put 'NyxpXVRgW1R4Vz83RmZYWjFVSSQxWUxxQ3dzU1ltM0U0a15SPXNVPzx7Rz9VWTdnJCg0ZzJLR1U5VF5vfXtSbXYvWlhRczdkMmlfc2lCOl1adld0YD1sInJgKkxmRV53O1RETndwfGhLRCFPc1cmVnVKSCExOVA8OzFCbyNIVXU9bUAmNT9AayVZOUJ2UEtDNGskRjtnTktZRWAyKTpgYXduKmw4'@; put 'TVNSSyNkXlI/bENoVDMuVEo7fmY6QEd+KHVdLyEocjtfKzhsaUh9W1kwNSk5MSFLbUllPnVYbUs7YWRYNzJKVkIqWCRvIUlycSVRWHR0SStTI1Y5S0MwfV19TTpYTihfQmtvOT49THdJMC5vPmU5N3crcD1VJFNkKzNFRXV1MCtdOV1SRE15dmU0ald6S09rakc0P0EsenY7MSUvdSIyVjxWfSt8'@; put 'c21UcDBuNHt5RltOd1ZsYVchTzs/TUBiYCFhdTxjWSNHISNqfXFAaUJsdDFQPHRDJkt1aWdCbHpoX2VbdztLZzw1TlUvakA3LGBhfUR1T105OlFgTEp3eTR0S2o4dDhWQj5pbERnOU4/aGlxYldqNnJAKiRNVSpAIixJSShNZ0w+ISpbWnFsWzlwI0dtZjBfVzd5JH4iZS82SSRsQyo3IVhgaV40'@; put 'dEY6L1M7UXZAVTs0L2VtKng7QWdgVDN8VmwpfDRXODlWLyRIR2t8TGliayl+SHEjbiZ3MWNaJn5CJXdJXjVwY2Q5X3t5bTFDaStfOlp2UTZANG5rZ2pySz09NyZKP1FKb3l9LEkpeGFvSSlydFNvV2VqWGtuZmVUP3UrTHV0ci9YSH5lUmV2cS9bfFd9bV1bY3pPYFZ0V3hmX3Q0cl1YK3NJQTZH'@; put 'bCJJbiE1SjldQCQjQUZsTzpwUnlAfChOYE8iLCxAI0cuLlN5YGY7T1B7aStJMEVncFcqe096e0dPczt4W2VZeWpQNiFuSmljRF57OWJwSmJNbSw3QXlFRjdKdmUwOl9eJjxFYzBLLyl+RVZxOSxhQkk6aXM4UVZ9Jmw2SCVlWmw0dmozL0t7Q1V4Sjohc3JhY18rMDBvdW9GWlFYTDszSFNrWU1t'@; put 'SzJlZnVZYUVKX0FqP0MlbH1Rd0RubVYjQThhT2wlR05LT2VDd1pAfnZlRzs4MHc4PkBZbW5EdnxpKDwqWUVrMlZ7Kjl3TEZLJWdkUzZ+VS9CZWVLWnhkX2ZAVSFGNWF9KlooQlE0Kj19QlhVc0wjP2srYXJdbjszfSJxeSs9dTI1RiFrYVpCaGp5TGg1TEFVcCFXKEsieihaXyE2SEZHfXF8VCgp'@; put 'JnxBOXl9dVtCcnNDSyowR2JhbHYqSWZ3RjwjU05WcnE5UFJveSpMb3IzfF9EcSwjZyE+LCQpNklJP1RCKC8+NTIuaS5zOH1xLHVYe21tNj5OWTRBVyh1SE9WUGU1Imc0Y1dgO1dyQFZQNFJoYXJPPlBTRiw3Qnd6UHc2cV1UZV45NHcySz9EcWlRd0VxODR3fXlEdH4hZFg0LGdje3VnKWJDeTVt'@; put 'YjhIQCFbbW13LD06K3BtalJtNiNdPV9FbFA6RWVqQDtpXltfbzlNU0hGV1k2djhJSFFZXV58K1c0ZWkuOD1qaX1sSmBmWHZZTVpuVHNhRH54anJ2c0M5Zzs2SHEiQ01CUX52ZXR0eThFLzhuSUJNQFg5Z2M8aUI0VTxyeEAxVWVkTX58RVg5Y3VjQCQpNTJHS1UidjxCeUUxRGJJS3RWWDxGVW9F'@; put 'Xk5IMSlXNldGI1l+TCRhVjA1ZEk2TXlLWzc7aj5mQy96QSFrZEBRTWBzT05UcjJaVmhpOGhWakNuR3luUUJNbCVKMVpZfjJfbEBFQGhYPkI0R3MyZjoze2JHfUZMeDk2WWMkJXZneFAyWVtYJFNvN0paNG4hKDwxUWN+Z1E5fGo3cXFxQDImKEJYWkIqQTRVVDlnQDA7MnVDfEtjRTE2cTtkUmIx'@; put 'SiZlTSRZQVZYcjlucWhQQnEkQEwiOCxCRjFETUBLbnl5dXRpMmdtQjUsWTJUSSpvdDdob2hjZlMxfi48QVQvQHhIN1pUbkVwJDosNWF1dF9qcFszTSNyRit5U3N0RTo5KU5dOHlBfCYuOnFYTixnLmlgME9jcXY4KT9XQy44UncudVRDdHpQdUt7L2kwR3hlMDZ5U2EvOWNKSnZGL3pfaj8sYCk4'@; put 'N3ljZCQ7JDldQUNQamJYcXpYMCx6Y1FZTzBET2g3IV5ISWF3UiIrTVI8T2wvS0Y+JWVeUGdYU31iUW4oeWNXP2N1Z2MqWGlTN2dTVylzaTc1SVBFRlsvWyN0cGl7RitzQzZSPFJyWGNFdmFOZTBZd24jQzVpMEFZbCtrdmUxUCJ3KlpZdXBkLHlQdF0yQioxLygrYThIPmBnK30uNz4pYHlJUiZN'@; put 'UHY6S0I2U3ROSVNmelEpdEtmX3xPcDVodTslZUB9YFVuK1d2W3BzQm4+TS5SbGA/LmdDRVJtSVh9azdTTUVrK2B2JEpxPVtJMnh+dTs2bk09dkxgMDJLajk+MkNwaDcoaWVaYElqelljPCVNYGBMQmtrNUlDbzZxK2shRExLL3lwUH11X1E4ZV04ckgjKTJhO3R8TmFIO3I8JW5JQVtufHZSX24y'@; put 'O2UpRzRVZHw/czRSfW5WOSoiPk5ZbXdXZF5fKy5JV014XnglYFZ3dEI8O1Q+YTdKU3syUHhLXz06N3V6OmdofFVLVFB6ems6e000QGAkNyE+WEE4YkQhd3FJWTZxMiVwaF8/QXokdUltZCg1Jj81TThZT3F2JUdiPk95KU9ybWY6NX1LIUA2emxtVE5FNTI/dHJSKiVSdm54dCNiNEw1UnFrSSFQ'@; put 'K2xJc3c8MVheS0s7SUo/e2RGbFd8RCEwUW0oKF5TcEhZak5yb2A+YU5ldVMkNGYuKWFaWFp2Zip3enZPI2lOQHdEKSszfU5nJXxyMUtReTgyPSNOPlhmT0dTNUYwM3BTNUIrXXE0ekB4R2F5ZltzJW0hOERTTFErSTVCJTdvfilafXAkdHVRSHsuUUpmeGY/NTpOT2BrbCg3Mil6cjxGblB2c3BE'@; put 'Pk0kZz1ucXF3S19tQD5AX0JsWC5VWypvYFo0Kiw8cG9CcSsmLHBbK2hecnpkUU1WSFkoQGdNaEE/ZmllOiRad0NUUDpYX3tfQ1QsKjk3MjN6Mmd9XUplO1sxaVBGfCE9eDJ3YTVFc2F7Ilh1SmRVVyUyJVUuO1R2NjQ/fWs1OG9fRkUoMTU4IyZdTTRVTGF+aHIxX159PEBoam1kb2lBUXQ4VEYr'@; put 'dlAzeXUzR2Usck5KaV1+JWYzXUUhJFM3fXE9YSQmQWRfIVU2TH09S3hwQ0QoX3YhZihxK2ZyajgzIWRUcit9NVlUNUNmJkFgNi5AX3czbCRic0ByVHx7akx9MmdhMGE6SXR6TmNkcktISm48cns9PXBsbDlBaVZWOmVfTm9FezExUl58MEJBWjttbk4lLm9PTztlT1tzSGJ9V0BrT0tTSFtPaXta'@; put 'O0ZIaWgmXl41QHJ8U3xtQVBOdiZqdylkU0FTUjtbQDEzRWApaTwmajYvOjd5VGQmMy5seH1ieHshJDguY11QbS9bSkFwfUduLilXJm8ufHdxUzRNPm5CZnZeZzlDdiVBRSgzeUZkYFJGWT9EayUyLiNMU2NRSlJLTnBYUyN4O2FLR2g3NlFBe01xdmAoVj1jNXk/ZnVxYUBUQUlmPzAjJFI6ci4p'@; put 'MT87eDc7Q1pyKEpmX2QodFJyXmVFdzFqWX0vclQzXS5+NC8wQlgiJmREazs6QlVxTDNPPE9wKkQkMGQjLjk1fmtJVjhsTWRaQEBifD1WWDBGOmk3WXlJRGtQTjtwNTNUdTVQTSwxJlNLZz5nP0V9OCFEaiZFak49L21aWUs3TyopcUdMUjFjJlczTVlXZXB4aWwlUm1KMnBsNUQqXyo5SCE2WnE4'@; put 'N3QkM2JFQXE+XzY9Y20iL3ZhJXJSMX01SGx5XTBFeDx2X1VoVCVrRyE9aj9NSVRYTjFUIjZyRSI3MWsvJFtCSHVgIz93fGc4bTNFQmUlTGd0UTk0Qml9UzY7X0RMVilfJmNfWyhNRH46Qzw7NCFhPHpBWmgzKn1AOiZ2JFdVcCMxZHxLWnUvUFRwOi89VDRWSEdsQCF2MClYMyhmUTBOLlBTVThR'@; put 'JlZmMEp0Z0d0QWdAKHZdUy9tWWhrXzpOKyt3S2osakp0NTU0SkFqIiJJaWMpWyFsIypeaFdrVjg3PUlbditQakBYTzozdnZTQVR+SHl4KFklaFQ/RkVnTlM8cDd9ZmZJIX5CU2E2YCMhTUgpMlMqPm5+NFlVLy8mLjdtM2c8d0JXPDVQS05bLnQoK0NOYXk3fVJ6QGZPPVN5cXt9QUBgeUN7WzNG'@; put 'fGVLblh7UyJkKWZPPUNTT2paNiwpRyVpKiptKzNDNSNMeVBxNVFjUE9EPnJyVkhYWX1yJjh4UkF4S29oTWFxNH4xZVZ9VEJYRTJabX5AIWIySSxANGBHTTNldT9FfXZebUh3ek1jT3dNKytYeW5wRE9mNTxfSF1aSiFbRCxuSytLcUdBIlNwdTFSYG5GckJvQ3FILDpUflFZdklHaUBTUSE3YjI0'@; put 'MUpYalpISmg9QipGMzdjbEg8Yn1VP0NJRmk0SDZFYCtzJD4+O1IyTlEpL15VOT49MUduejtSL25aNUhhQyQiUGsuR0JZaXVnWyNqM3RJXyZCOmxQSVBpMk1QWk1raWIjXkddaX5QdzI2Ik10NmQraCJyRnB4ZEdeIltAby5XeUU2LklGLlMoW0tBbmdjb3FrS3NOZ3pVezxVSiVoWDBZW0pxIV9O'@; put 'V1dDcFhJKi9YeihoN0w7JEFRPTx5NEsxXlIkJm5LSSIxXW87fE45QzV0SHRYSnRlRm5HJUhSSU92U3guV0dIIkI7JFM5NEpyTX4yeF9vYV82YVVvRXdwOGt9RDBCZnE6TEsrVWgzVWd0c3Ewd28yT2MjU01BTH5XRFAxdXhbcigqfWVXYyZITXsqb0hCMF9FPG1FSXROUSp3QUNzLHM0RkhjL2Y1'@; put 'LmJmLEswPlkieCtpcHlII3pSLkZ7bEwwNkVYZGJkLz8mQHJ6SG9Kd2gwdXI8WlFyIiM1d0tCZHhsMiltcktZMF40XT88UDJAcz9QWU4jYjVvXm52STp8diNTVVVjYj4lTHEwSHs1W3dRWyF8NDR4MkNgZXNnZ0xtMXAiNzJGWFVHJF4yTmUmSC5COHYkZEROSX4xSzZ3fmV0MTxWRE5KTGNQXXgv'@; put 'TCV5a2o8fWElTGBNfmxTayk/ZGI0IWFBbntMPyQjUyohL1YyXmhMYz0jSDxndztbcltaV1Q3fk9qWGtUPn4vUj5+RCpjaHd5bTIvRjo2JSZNTylaLiExW3YwSCNMVGZ5c0dbYW1FLCFXQDZtfjlVfiomcHtebnVzZVlpTzplMn57LCVFemB5Klo6PnddZ2M4XmIpck9jZ3pkVHckJD5JbS9hRTZj'@; put 'cWF2T05ySUk9YkNZOEcxQldgOmAiRHV5R0ojQ0xJcG4lYz5bYCY6RzI4PSFQKHwxZmgkW2wuN1plTFF9Rj14KHlKciVXVyY8Zzl0QzZSWVQsOFBSQVRxVksod0NMYTcpaFJTYHBpcT92PnVXOU1sRCledCxDWW5qNkUiPyMxcGJGbiFKcHt6SihiOkAoIj43Yy40d1t2T0pEcSxCL1FuTlE2MjJL'@; put 'bihdby42ZiZseTxBOCQoSWckJmY9LEdMUnwmN1ZXSkBJN1d4JCVqVzphQGVeazUxUzs3LlUiQz4ldT9WKGwwJDFDSmxJbC5BOClnMD9JP1c6SUg+L3l4RjY8P1JjNSg/YzR4dDtnSF1iWyZ+UF1IO100dVl3JmxYbUtLbi9GQFViZjRIOFBATjVaclhLOkReZi88TCFoRF5hU3BfSl0xfkFZN35h'@; put 'WHJNYiYkW0MlZS83eUJoWG0hI3Q/dDZLYHZdYilRcz87QEssUDJmbmFxa0pnbUBjYTRZenwrJDc7My4hSzNnMXQqfUl7MHpIU2QwMStvelIodlU5TlViLjk8PkRPU3Z0TD59JEFkI3tPUj1HSFEoIWpKRDlmcSg8flB3Rjd0dzh6ZURHWk5ZI2omX0lqT2ZXVyg0PXNjeVs3WzAvTW5LVjB8NHFW'@; put 'IytyY2RQW3RWT0s8UHI6dXB2RG9IRE0mX1BDNWJQdUEjUGVKM3RsRkJKcDBYaDledFlmT0Q8R2EjUERXKHp0WlddUDhDNCpZI2VzWXBHblF6Xk1gdSVENFlddEY8bSpnPDxzckdXZUt5Tjc2cXBIPklbPnJQPm1mYCsjOjA+WmVXbzFzXTo/cUxgK0FkZVFVN2BEQTZ5XVNWUlIvIjl1Xz4hJkU4'@; put 'aXo/elIxMDQiekBIdHpsVT5NZnl7U3M8bjYjN3BtYnZVYj4vdX0yWmVVRmAuekAkJS92SHNKdUp3S3lFdDVHcmgiNigjVHNgT1E9TVdnb11XYEN3S0t4OFNuamw0aHAqQUBkN3FVanJIXn1ne05pfn1ZT2RqTlVSSXBvWUdUOlN+bn5FS3EsXjxFXSV1T0ZzT2Q3XXwhLEhOVkdtLkhYaHRHIVBa'@; put 'SyNMJD0yPCVGVjVdaGxlQF85QTtDRTp+SHFhJHlGQiw/PGpdVkBoRT9FdGBNSzhIV0ovcSp5IWpJdkZ1X1QrJDQ3OzFhS1IqaW5lITxAeHtNcV16R1ZPKUIpTVduJksrfWxyQWVWc1RoOzEjfH1qK3EiZk9mfUdzK00vfShHYz5CL2FQMF0oRTRLVEI/c11JWiZDSk9VI1hxcU1+fiUqI2JmR3E4'@; put 'MjUrbG5UdUJ9Szc5I0NfdDFbdk55ZHY7JkgmdXhjY2JdMkUuez8pRVYzcVAhLygkPU8kVzJYQllyeUI+ajE3REVmWVlMYm00TmROXTtJeClTRD5xKEFqVCt0QigyL2pSVmczaE0xUCthYjNMUVMlI1MqIUNqOG8hWEQpTF9xVXc0TmU1LngrNTs+Wm5QUGhjRmwjMDZsVVojcjsldCNnRjxLNSsx'@; put 'WVs4N3xuV1dASzx7VTksL2okPUJXIVVuXWZjVV9jSl5DaE13Z2gxL2pnRFIxMnMqMj92P3YsbXlmdEdYcmtYVURkb15RbiU6eUhMbEpRRUsoZlltSFsrVDZQOncyLy9KRyokNk9OXi9HSGBZVHxtR0lKU0VVUFtQQF1uW1NrSXR4MmFedk5dMGtTeGk9JkB4UkFGaSpfOGI5a0lxfU1nP0VTOFtE'@; put 'W31nQ0RXcm8/M3YjamRFZn5CbkxSMTg2cVNCKUBYUnslUnhKSUd8U15jSz9iPEcwUjxJfXRKZTQyOFBDZT1PYTIyc2E0aWpycmQsVTsyMzRGaklCdlh3KThjKk40dGlOWFo+K2ApZCxPYyVHaDZbI3A7eSxlWn0vPjgpL0FVSD5mI2M0KENVLGVoYm5TK3RCMWkzLDQpYTI0UDhKSTNQeEtNJTVR'@; put 'UU00RD0ibDdfdWtZU1o1Q0tzey4jdzt8RCozSnA/KXl1Ol92dSQzY1dUfGVqUiJ+aU1xOkwubiRqWDsyKVM5Y3dXLDAjTmI5QFZbNTNrREllNHJROzkzcDNKZk1HTjsvenJsfDB9UHpPezhNN1QuQ0g2c0V6OCtzMFRyI09EYFFXKDxjOWw6KmElZEJMZnFvPk1EQ2RJZzBFI2draDJSIml8QSpq'@; put 'c1F5dTEsdWN+eFNxRmAmMFpPOi9sa3t8UkxtVFYxQzEzVEZleW5bISxCRDF4QG1MNF9fUDI1MjNxZzJ4WD9pUHllITNFVFFAayN2d24kKWNZcHZKfjJORmg3K3QmOG1YaXk3OUc0WShAOn5ufEUwPVJNdlZfWDVuMzAuWjRPQk4xTzNFUEJ7S041YW44MX5dZChfTGVPVCVgWn05dFBiIUosOHtT'@; put 'PVpgZXI5eDh3b35fQm1pIltmMyFNbiFmJWtjfV1nc3k5ZTdXOio/cmI5Oyw/JURzeVFXQ0Z9d0Qua1hjc15oUzx+Mlo5KUtdUnx9XjB4MFlfczQkIW1Ua1FLe155TFsheGRwKSJpcn1waTMhQjg/Q3klaCs5YmJfbnpqNTdKWkYke2lqRktyYyReRUszJDB3b1ooMWw3UDImOjFbWUs5IUhSMiJO'@; put 'e1BVMmsuI2kzMlg/R0xFU1t4R1lPLHF9VkN8ISxWYF9uMXx7XTJ8aCNCUWNvMn5oRmZSOUIhMnsvMGw8WiQ3cDpbZkVPZihOSDR4WmUhVCFKfF0hfmZiZURuQyxLW31pZlZRMFsocnA/OT8jeVVqPG1rPm4pWjxUTlo+Mnd5bWV2QjlVR3smeD0pZ2E/bWdvIkdbIUE7WW1VbjJQRzwwMzBvb1Bx'@; put 'XUdWJWJ7d0YwJjAwNGdxanl9LyI1PUdOQkNDTiksa2kqPSl1ZX5aaVI5QCIzJCNQRWVTRFpuZ1t8IiN3NjE6SHZkTThjJShnWiNIajNPSFdub1YsaV06KylrNSYwRF5dXTtEV21SfUhwcGU+ZWc4L3BLejlBRWV5JWVBfTQ1S2orSWthcj1lQGRxMWBVKS5hNU1RPyl9dT8pYkZjMCQwNXUyLC5Q'@; put 'X2t1JEIkQzB4NTp2bzdSVElRfWs3RSwqdEg7Rls0cGEvJiskLHR+fVBVXnd1cDVjI2ApKHk3aEdqKTVHdzdFPFd7Sj9NWTdvR3RNKDZEdGReMU92TFY+OFNVUVRrazlaVl1BVyQ7V19aU0c1MD46TTpneyNKSnhFP15AW11EeW8rd084WCRDbSluXzJ0ODFrdGRuKHBQc0BZMWdSZFdqZWdkTUlP'@; put 'YU45VVdLKFk6UmM7OHkwSE1kRlBSKXYiflpCTGNoS0l7ZVo1WHteUFplKTEkYXVfc0Y8eGk9YnprOUVkanIyTUMxU3gwPVphfSRwfGh2RDM3emIlNyxdO0NJOGZpaUN5SWliZShSIzd+UTVAMXx6ZTUkSG07JlUrbj0iT3twPyY7SERkOCQxOHAxeXpsVyYhTFRtRHZJQ0RoITpLOlZYelhQRV9r'@; put 'LDFSWSprSVBtSyt6X1IsMjhTeS5LSC9jQFMxOl1yM3I9KzNHN0I1I1pyejZhNDd+ez5ZZERscl4xNE17YHVOK1RGOGBbfjh3bDYhNDclfW10bmZSP2IhQn1gLH5YdHlUN2krcjkiVEVjdnI9SS9fTVRvUj8/IWwwX0RBaWY8WGArUyQpYlBQOyg2UGc1bF16Sk5QRkBDREc3YC8xYTh2Zz9DbmJ2'@; put 'SmAuRE0zd2g0Pz1dSnYiZzFBTFBuKEJ8bls4clN+bCJRK1lZL1BMTFtvIWY0XU8/e21KWXtsbHdXdyUjekZRTVQsST07ZGtjOSw3YFpSVnt4Zn1xcDdIOE93Y2FdaXMvYSM6Lld2dHc3O0ZnSSRya3szYXI4MzdsSVsyWCxiWU9rcndbP1BsLnU6PUN3Pn4/RU8oaTVKPFphanJGZV1kPDcmVjd8'@; put 'QnFqQGssJHh4SGVUU1FTT0I1MzssLD16ck5zMW5aOzd9V3JjW3pQMU8mQGtUal8hWjw4Z19ZbyZbeEAyZnpJKEFNcVBecH1KQDY4KklrZXI9Syl9YTgqOW0oK3FgdWg4T1BPaXhDcywwPEwhbTB4Uj0kLjlUQ25jL2I7VGdWOkJhcDl4UytNQVEkZDs6Zzc0fm51Uj8uZXBAM0hMfnZ+VCguIStG'@; put 'M0NwUWd0Ok4+VGZWMyUsPHdFdHBRR0JoKn5XOHAlWCpNRDZkJS5CbFgqKyp2TEUpJSsjJERwT0J7L2pqVS9IO3hnQDA5RjE8RVtlLFd5WispNElDVm5TMUxZaT49bX48O0h6Kn1Qa3cke3JwdDw+WnVhT0dNeS41OkdCMllJIXY+KE5VdWREITV3TSpAdVhKeDA1IzEoaWYjOylkM041OilsNGsp'@; put 'e1d0QiI4fn1ie3Z2Q30uIV9WQGdxamplckVEaHNDWEFYeV5vJXBLSClCNkZjSlplPGJJQlAsViE5X1c9OlMidX0iXkQsP0F1dExyKFkvVVQjUWk6KWpLZ0FaX0dpRnlVaCN0S2dhUUhHLk4ySWksTSpKV3s4RGlGRVV+dUtWVD5bc2opWj5BKUMqeVRnQ3omOllYdmxxdWJhWjFzZkNmTkZSXUpA'@; put 'NEEqK3AsTW1qUlhHKXlkWXUuYCk2KV86bz05aGllMldTS2ElOnl2PzEvWDl6IjlGZC4hM0ZpUkRwTHIrL2Q6X0J1NVtncU43dGZsc0hHaHJ+Kn5BRWxJdlc5XWx0fXZHRFImbGFFYylxWTM5bEx4WFtfcHJDQn5kP0gzc151QDh3e0NETTpES0RqKy5TPGw4TD9QIjJ9bXNqV2c/OSJNP0dhWF9e'@; put 'cn1aSHcsWFBaVD5Ma3F4VHF2ZVNheX5SYHpRQilvZ2svdTMmPStJK3ZMXnAzIUUmeDIicTo5IX5NO2pYO043LGl8S1N3RkszaXl3WlBUb3B2dGVaQzV+W1s4M1ojUmJNYW58WlkhN0V3aWd6blI6SS8mRyN1c05sWEAxfTVCSyRkL3FNLiY9XlkjY2VbU1V0K0pxIWMhLCU+YjZzQTtyTmQhZDhz'@; put 'VSt6JEUlKzo8ZFokJX1deHdHT050cGtLTF0jd3shRSxyRCxdK2tlRSlZUEdDUTsmYXZ2VkVzNXt0R0AuWFEwMXdoPjg5N0N7UFApSmFnYmk/dnh3N1Y5ci5nRH4+VWBBXTx4VFFSaWVhcyMoUU9DNiUwZDswcllpYGkoeUxlPTkhR1VpTmJZcD9AP1deM2hwJGhHVzVyRlN8a0d+UEYxTEY+TWMm'@; put 'OTUmVmI9XzY7YHlocER2Ryk7e2ZuUmtjZCxtTVZ9XVd9VSJRQlliTDIkSlkpLkVDLyRSTzBKIkcyZD8qYGRzbz8xaDBGWU5Yaz9zOUNMWlBuOyZUbTVfN2pvdHxpT30lK2NPTF10dmdAcEpqKnd3USJzPz9UMGJlQ2BBMV4wenlWWElyOnVoZW4jPnNTTzdHLkZjTzFGJUQuVm54SDJiZ0FuVXNW'@; put 'XnFTJCVLcGpjTHZ7eXVWKlVfYkQwMTtfTSJQbD8sWWg5LDVOVGNubis1e0g/JjZsJTVwKTVZQGU7aGZ1WUpIRU0leG50bm59Ty5XM2JIWjwyek05SCskSzpFK2FsWys7IldRRlB6Rk0/TEVnNTpJRSM4RHNaciovZj41QHpIOXBWUmVNZSttaSJ7Skp6dy9jdT1ZdlQ7Wnw9fSI4ZyhjQWoqMmVR'@; put 'dSlncWgiPSROJE0wNy8sO3FiZ3dlckpzfSU3LFgrQFRwQVA4OGFRd2g9Xyo7cypTVWYyKyQqR3dlJEosV3ZpQ182VWpTX1BKKC56K0BvVDpKPiloPFBuUm5aPiRyYihIMVBfMS89R0Z6aW8hSjw+KkJrWlIkT2FJLCNQOmM4TlQwfFdUTU18fGhAfTU3S2M6MzBrRzdgSU96Y2FiPmZ3UE1JVm9M'@; put 'IVlMLzA8QjZIWzxiS14+OSghWjxaY09bYWxITXxVUT5eK3d6Q1UlUE8kSzdsSjd2cm5dbEBkWyJ1SWAme2VxIkJDfWx6O1AufG9VPGtVMDdLLDYiNztqPCwhU2k2I10mRTY3JEY1OzUwfVhDTUM7djBHRGU5KFg5dVZLR11daTVucHVRS1c6Yy9TZl01ZC8rVHEyZks1VmluejkyRiNERH0+VXtv'@; put 'SDIicFAxTUp1aDhjaV94Zz10KD5FZVJRbm1PSHt8KmNGTCRnVlsvT3M/PFJaSnU/SlQ3SFNYaERoJklsZSNqJlhCYz05R2A1fm4mbkg9ZUwoNDdrZ3IjeF9sMF9yfiNdLz16akdoSGtwOVZ9eSs/d1opbU5pdUZ1fTFeYVdMM2tsNHllTGFNJGtnV05Ad2ptKGcze04lYno2VTdnLn4kcntTOXFE'@; put 'TkUxODAiIUBaPW8sVSokNyRZcXpLcEhvK0ppRjI/QlBYUWIjVDsmfldjSTlqOzJ3RFIlWHN2W15gcUVtIU5dS1B0V01VVlR8XylWZyY7ITYmTnJgW2RpTEpwOCJrWHFMSzApZDhzbCIhVllfTGJkKjBGKnN7dnAhQjEkW2g8fjR6W3BpaWk+QzhlRF1GX2M0JjR5OXgsRHVvaiQlITJQdFd8d0xO'@; put 'Xl9LWThFdmh8KWZ9OUdyYT1jOHYoSCJzYHldJmhBMUNZQjYsREttMH58RE57dmVKQz1ALyQ4NW9rfkx3RlNBOS85emhjRitNTXRybnYqeVRoTEY6ZkFwak1kcHdJP2g8V3ZaOH1uU3d9I1FxSHszMHJXVU8ocV4pIyFQKzk/cWQxdiFdMWQpTFF8L1FZdjE/TVghdl42PyhETWI7V1JyTXhQRk5w'@; put 'NFI1dz1wTVhgNUJjZildITxjQnJpOV8lM0VSRmRReG1fTk0xcD49PSpgbmg2ZWR2Tk02RipLYlM/bztEeEB7XU5sQz0sPzBWTFRRRkhxZiZkfFFLW3gsJCE0dXRTdiFSc0BweUV9TiEwUGFJa21zQzpyUFpmU3E1TyZ6RFFdOmlmTSpPWiMvZFddbVNwTWxkS0I7KFN3PVVdVDV3SFFQISVgIzpI'@; put 'dUwveksrUyVHTSR6eV0yazg2cl8lYkd0NzckYHBbRG58TGp7a2o/Qmd3aGZ8OGEsQy5kPGV6V0U3c0ZgYVY8TitDaCFTSV1ML0B2ZUwha089Wlt1Y3hHeUBwIjJPOiZtKF4mXX5MdlQ8Tm8uJkxlNzwvYl5gKH5kV2BRW3FpJlp0RE0sZmo1OGRXRSNhOkpOWUtaYCkvdGhMbSlAYWMlOnA7JWBQ'@; put 'JVYvTz50Y2BAWnJQRW9DJSlXfEBZbTFaOlpgbl1CaihFPDJ5OjhNcFJqdzJBdStGb1RoIkNYZHc6OCljN2FCKEszOiVJOCVZamtKM3ViWXw/VU47dikyOTljbSghQTQ+KXhbdi9UbkRJdlQhZEJ7YjlKOUA5Vmg4XyNpLCxOWE00KzlCUlFkWCYhKXZKT0p9Xy9hKXF0PT95Wm5FT0RaNjoweF09'@; put 'YGAiJng8NHJPRn45SV0haSI3Tkh9bk4maX5NUiVZP05zQ3JbdkJYJnE1MHN9dWNdN24rKlA+eFhrWTtkRDdyQV8sanI7eVRpd20hI0d5KXJGJHBgUSh3UEJJc1szY0E4W1JCUSlNP2UyYiFgci9aXytqSm9aZ2UqLFtpRDROYEU8dyl0c3JQVH4oSGU8JFozY3VnIWdaITgybDxuIm51WHBgM0Z6'@; put 'MHxCOmlXUyN3ckxXO1JxTCIvTEBNSDhgez9CPm1dIWFZQyFZeUN4eFVbOjA1c289dngpaFMkclRMYzdIMnE5cE5iLEdJcTQ0RzFRa3V+KENRKDNlclE2NWxiIiFdPzRlY21IRWsvVGd1LERbOCV5KHlQYmEvK3RyXXNDTlkjTntoKVMxPjs1UVtob2tje1BCMnYwQVQoWGpKV0BNPEllZ3lRQ3px'@; put 'cyQmcnVtakJZaVk7TloyeChhMTN2IXhXVyw4OnAieXZQbCFHVDA9fDJnU0xZRC5PezhmRUVCIkRRdCg6TX1xW1ksRSVMQ3REMWAqRCNvNShmSn5LPEM2LkwzQ3tCRUJrSS5rVlV1SWtCKUpoJlVMUVpbbi4weV43Sml0NVFRYEAjfDAvRzw7WXhDaUdmZEtBKnlWXVhvWzFmfWRHZV1UNUhqYFd7'@; put 'OSs3aCFtezAqKllQJWZOfi5GNldGNzU9cngve2pxQHBfS0Z5KHNYNjAmRFQuZWd4XllSb0A0aVFIU0d8WXUmPyQmTXYoJFhKfTAqJWYpb1JZa0pzbngkZlppTXRScTFkVVA+YmklcS5ALiVfOyJfT0Y/JXF6e05+b2MjeTV8L3tGbUhaKz4hVGw8RXE9X3tPaDs0fEY2eEFbfTlsR2VWVFp6WDAi'@; put 'YWBBX3hYU1dHPG8zI3FLMEMreEJNYHNldVpxJkFNYVY1VVh3RTdvVlQ8S2FjQkdVd3k1NSFSSmpYMmcrKFUjfj9YPGR8YW48Y20jQHh7KSlnZTR4N1omPG1hblpfV0JESyRSdzJacGlTS01MaFAiSXRONmA4YlFePmlrRVR0QyQxekpjS1ZGTSF3KCUlanVIKng6Iz9ofVlieXwvV2UjT18+YEdW'@; put 'NVR2PnNIeEZgSzp1SHV6PSleUT1RRXViVGFtVTo8dHhAPEQpQUdtcmMxWTxRQy5lUm5UL0t5OC5NSXdSRzk6SHxfTFdIUmU0a3pnO3p7Y1sqUmNEcCI7R0AiPF5afS5YYHYjZEVsQVl1d096XitfU1QuME80QCR7Jlo7V3J9YjlZTTdyaHNIWX17Pl9NY3k8TXNYKHlUJCpuaD5oZVlqaihTNUZQ'@; put 'OyRGS1BDMGlmOW0laHxCWlcuMkcoZFI5VTZjJDVnYS5zPEpZMGNUMSolKFpeW14lcE43JldjWltYWV9WNHBYOnZFZXU4NnhaYWJzNC9yRCtpQ0s+U208TXtTX006SkI4eUpKPnEufXpydG9AI3FeIiR8Q2QwKiI6e2xnUV42Ol45c2I4ZkRHZEQ6dElleF1jdWQrS1tYQl92ZzMqWnQ3Nk9BTGg+'@; put 'QkRoYmc+eXxsKnZ9Rz88Jn1YVmhTYWIuPSU5PElISkdvVGRhVmo3MEEpNFovSnZxW1RQfW14WlAyU3BBalcpNTV1QDYiXjtza11WTyxpVEZDVXY9eE9XaChqKGFPYy8oYShLLlorYX5yfl9YJls8LmwsS1l5UU0ySGhmaCw1Um9FNUt+en4hOkx+SGpfPDIrWyJrZjxERjk5azpVRTtKW0JvYkZy'@; put 'SG0yQV1OMENyZUUud1E7XW0/VTwlPTFtYFNvX15RQ29kRHVhKGlnWHBlNmxAUyosVF12V1F3Yylwe3dhZnJIKCxeOXk9d1JYOzl5JjRaIitRQ2ZkUDw9P09wbjxAaFRIcm5LaFJOYk9ba3lYSENLZ0h7Qmg9eFRsZjJ+eDZYOEVMZkp1ODFeMDdHfjhNbk9zdC8+JG56ZT5rJkBAaHBTejFSS3c6'@; put 'LCRDemU/OyU9e3M+VVtAMURkVDx1ZiNyMnRYWGRkRit+eEcwN2J0Z35RfHdPTS8zIUMyJnRdJVRgWy52YXh9I21YbHhCYHl3Z2cwQVQlZ2pBdTBRYUxKQX1pYH5WWzozN3VdSjhdWFQxSywkdnA/S1ZddiFqWyF9b2c8dXNpWSlBMkVtQ2daOWQ8MEpTM3ZzWS9WR2Q7enthfHtET2k/eEJGenFU'@; put 'PHNJeEoyUl5yM3pTKC9TVi99fjg1Lmc8cChpI3kuNC5iMmcmTyI+YG1nU046JUE0Lm9YfTxebkM6XmdZNStLdFJVPS9SZH1DKlp6QEV7OCJLZFswQGFkZVhGJWApflN8OEYsSkhqWmN6dkdlcG0oMyZ4QHRHYzY4WHUrL0pAYy9IYl08JS58KWd3aDplNEdIVHoiWV9ZR1l9dkZaRzx1ZTomXzlC'@; put 'ankxKDdJNUkxMWowYy93KmU5RlV6a3FLRGg0VnYhY0sweGxaIj9EPUJ7ZEMpdiN7Y041aytvQnpWfWVMYilSXX5IPjklTF81W0BALFklYWoqcWhsQlY0UjFuSU5RalYpQEVKQG1DdnpBJn06cSZeUEVfRF5UbDRfX01DO2ZMaCVtUEoiK1U2IzFMPHZkWFBRUFhlOE5rJGpPM092c00lN29GMDRX'@; put 'UCVhRURMN35PX2tWNT51KGhuMFghLDB2PD5ERXtiYFB3cSFJTkpTTjZifnxqTkt3ZmkoTDFZQjx4K3tmbFlBUHk8MiloMn1GenEyRCF5MzI8JCJvdXNIa0QjTkYqXzh1Mz1oPzEsRnRLME1WJnRJMllZQX48VnBwM2RNKHBlZU0xVGNJeHFAOTNOPEU3WU4zYD1oKmR4R1RuPkdrKlFWeXBPZXti'@; put 'KWhCLGRyfUNoa3pMej9fYGdpNG1rNzY8UG8ydnpDbWQ/YHk0W3hQXktPP3QhIzcxfl5HcFs2MFM4KnUlOEZPVUw1fnUqL1c1KmN0Y0o/Sl1bS1o+I3lzITBwaDclI0c2fH1Kb3UhWyQzbG1xKG08fEtlY183NUMsdD5WLio8NGdZVF1DKn1Maj1LNkRdUj1ebDQxQVJNXX0wNW4hRVVEKVdGWXlB'@; put 'KTFEVU9TXzEpPXNHfks+WHR4XTUkNTFdKUImXntBcVRncmB6fk98T3p5QGQvcl4/NjRnSXZjKEs1KDpvXWMoSWZYQSRpcVFQdjZsIXVhXXcuRiZiek5JalRScyM8O0A7ZmFtMmRpbUlRUGQ5KlMvJWkxPGwpfWJAJCFrdnUuQ3QxRFV7NVplTTxGVChpYkZtOnBKNn1wRV8/I01SbzlaNWA8ZF1t'@; put 'Nnp+Iz0xXkU/dSMhaXcuLHU7QiQ8TF5reFVrMk5qKzVIU34mNz5STGNAW1A4T1Y/bnkjfDN2bnUjbGFDT3wvTm1iPHpuLFJkZm4wR2A3PjAuUDokPlB+QSxueSlPJTgzaiZsRTB+aWI9KFpBbyhpTExiIlVyVkhea2pUMlRLaT1APVhPKUh3c2wqMiJWYGRvMiQpTGArMj1rZE0mLl9+JTVQRiwm'@; put 'ZC9LZEZJPnhJIlFISkB6QXpXUiYmTk5PZT4mYz5hVlpJN3AkU1V4bjgqcShUOUd8O3I4ZmBDJjBNTCI7WFs4X0k5OklkfGRxWiM/aGoyYyppNTgoZjArZ3daJDtRQkphRWhuQmIheXtPK1FfPV1mSkx0fGFmT0wlWTpPPX5bOzkoSHkjU0AmRUhKTUNdUU9hZHpqVlRQPXxxSTIvZyZgaG55fHt8'@; put 'LDNTOm1uaV9PemJ2eGp6RyZLQXZqUj5VbnJkaVpRZV03MS9ROTZSPX1lPUchUF1IaUVubVVgTj98W3ZvU0BGX3dJQzNNX1hlPXsmZWtaKXsiUUl0O1VLTVdMP2IqUjA+KysjdWNbTEE4X1B8VD07V3BILmtnaDBJc2loPyR8JFo7NSslO1Z9cnJxVlY/OThoW0t2P1ZqUDw9ZWVLbmlJeFNtS2c4'@; put 'eWJ7UUdJfX1mU1gmYUYha0pYMXd1MV1fUFVeZjhMV3UxJHUkMmswaFs8YmtIXjQveiNnZVJMNzc0N24pR3slcn0mc08wPjBiP1JSVHhLOiFiM31xPVkmTHtzKT9IYFhOI3pgX0lHfDRyQkA5WV9AWlZJL1lSI1dPKTcyKlAjOGUrJmJZdWg+VCZfXmAjQVJGa0EhdyVjYWlCaXUiTUNaKTRVcH0y'@; put 'aSQ9VHtePnojTW0qPFdGSFNXbVMqPUJAa1IsMEt4cnxGMTZqbyMvWG1yaDhWNHM8WENJN2ZHVktELngsXkVRVyxtPmhic2w4Jlk2dl46RG5kbl9bXnlsJChNKWI+SUkmTXolQWc+VEYjZ01VNWI3Izp9OFRDQG1veSR8XT14RD1pVGhtMUFzZiJ6NWp1WEQoO0tjJUl9eUdEWypIMHYhd1pmPUY7'@; put 'ZVtLcHlqWlclTkosaDdxfH41bVZ+M11ZVSlBZVVmK012X3tLWmkwMys/eVQyfUpLbjVKVFtJQXYkM194diszai9gTmklSkAmPyUoa1sjbFkhN1h3U0d4UTFzOj9MR2ZabjdKIWdraTxOMH1PeEQscUZOfkhKYnZ6PWA3aio1Pz1RNUh5V1VNYFVfPFQmfG9mYC9xaCg2NnlYMiN5eXYjfHtmR0pj'@; put 'WSUmVSldY04xc0Y9fkIsPE9ZfGRYdWV0Y3JbclR4N1RFJnB9cCZOZj53fDFnJShBPnZnUUc3TVt3XmtqUjVUOEc9TmFtKTBfJCkpJXYoXzAhbTI6T3l1NUspYjhAI2N9KVJOZi9JJmJHZVE/N3xaXWR7JldNMCV0SUJ7dCJtOmg8bSp2WVpwSEQ8UnE5QFoqRTgibS9IUEJxfkR8XW0odTVVREQr'@; put 'PGBFcWM6ZTR3IzhrcVBmNzhtVDFAM1Fmd0hVaXF+WVdOWyRGdEElN2tOTnxsQ25sXmIrc3QjSV15a2J7R0hQTnVnfHRsP0U/QF0yUmgvNCZaWCxhbl9NKjxMakpyWClnQSZpNyhOTiFpSzsrbyltP3ZHdjB9dnUiV19gRH5jTXVfb18rSmImei5HKUV4REpaWWBsbi4iJS44ejR7U3gxMkNZcmde'@; put 'd0dedihyd1E5d092JnQoNlEuYmwrX0swK0s1Q3I4R1hGIUZoMSteb2ZsYU0+Wzl1L31FOCxuJFYuRGxZVUZsdU92cHlqajlEb3ZgOCZlMVJOQU01PFltMkRPVD9MYFdkN3x1QVEqaGxiOFZ1UzdZflZ0bFdpSz8pLHRVc0RMLlQ1PEohbX5WRTApOEJ1Pn5BJU05QzFRcSFjKG0+N0k3TF8/V19d'@; put 'U25mL1YrN0Z7R3Q2MEs8eztGMipYTytmY1krMHNHYlkrRmdbbnYkPVI1PllRUHRNfjNlOVojeWVfNXhRd0EsNmI0M1VDXVRCNzc1XzBqc1c1UF1EXkBuIVtZeX0wfFdjKH1ha3RbLi53KVpOW290LixtJDwoSFhiUyhLZmslSWNZbykwcVFbTlZfRzlueFdwRn1ESSEzMUxeazZRYXB1VSM8fmUq'@; put 'Rj5ZazhkWz5YQSpkU3dMVSo2Xkk3c2hVOi9xcjEvRUFkJkdRbXBWcjhjdF9jJmBRRCVoVzJXZXFlJTtuSEpxVSwra1d+Yi5JMzNONSFrfms9RE9iYFRGb2N0R1JdV1gwUnV4V1V4NytsV2Q+NVFDeSNWKFhARShiLzVpLGkwNlgpaEp8VW5HdWxtRUNyXUBOa2BhQE9Sc1s9Ljx8V3wxKk1AQmlH'@; put 'e3xtc0ltPGBWZjV1USkjXTo6QihOKCxXPW5OSDQ/XmxbOUNHMWd4Py5sJkVdJWFFWWFMKWJoJkNmOCNNN0YhclA+RVUkTGI9KVRCTmd1VlEiLG1dPGU0IWF7MGpfakUpdSRNMTEmPipzMGUyTTFgSCFGP31DSjdENVtOOHFBbk9TKldQJU5+dll1ODRWJFtjZ0s6LnE6MDNoemdVR0MoPk5SYHVJ'@; put 'Vj9UMXY1WFA4O21lUCpRbURELDdAWSlXd0t6PmdsUTt0LltpSU4xNFpieCFGO3hwQ3BFOCZxTyo/eEZjSXV+dXUlTGhoN31yUXFtK0Q/ez9BQiJwJjl0Qm1eITRhWlpBK0V2PnNPRFF7XnBwK3wqQXN2OEJhcVh2OF5tLGhRUls6RUljZylAe1pFNHt4PCYkYjR0NilDTGMrfTs1QiI3Ryt3NlMi'@; put 'OC44cj9PRXwxbmNKZml8QCxTKEkrZCZZMjRLIUgyT2VzPXJfWXxAelh5ZyZ0NWBfS10yaGo/Y2tHbXRhfSgxVEZ7Ql1bK2pLKWsyVjpNfUVqM2w8YDR5RDM/Ymp4ZHNnKTAkdmVVNzx+RCosfTlrP3dNVFJKN0oqQk4yNz97Tl4yQz4rXko1O1FWRVB9T3xFPnt2LzV8PipGK2l8OzkoJSlpPHZ3'@; put 'QlFQfGU3JlJqQVY8ezFHMDRWZWJUXjdLJDN3UiE5LlRfYWtMY3F3fVd6ZSFocFE/RWR+PVpRPVZTSHEjeiJ5ZXJabVM1NlRHTjphTCNOMHhbTFc1YjBDdyVxIU5yZCxsQTxVWj1DK2dDd1ZIfF80QDJNJH49bChCcTg0dXQ/KXlrZXQyPU9jdyFWZ1J8XVZoU3wsOV0+UD9ZaHVpOzp7W0M7PyN7'@; put 'aEY9QGVZZHRMTT4+YmdjOj9GNmx3S0B+ZWI7THg7ZlpUWE0xQ00zSzNSWyN+YltDPmp3a2c1eFZfWW1OeDd7PXJqYDd4QHpQOyh7eVVKVSZha1t1SFNCJC9beCVjZnxPJjkjQkEoTl9HPko8WkYwTEwkSXtvdTswUEhybnhiKFlkNCo5NSxRWDM6UElZTixQeGxDW24pYi91XSZ2Ii9gKXJmUmww'@; put 'NDhTW3M3ITIkIUZyOnIpPzIiPkI8YkV8MStCT0MpbyhSel15OiJMMz5GZDRiLjkwdTJGfGtLSy4mam46e305QnBeUDkhSnc/IVI3NmNYRGJSL08leXJnS283Yml0UjtqK3cmd1MpVkIlN2N2TUs0ND9BQ1opOzhhRjsye3dkPTVdYUU6Rzx5XWxifXtOdz9nYlt8ZXlnI2gkK293VkMzK1kzfHhJ'@; put 'VS40PGlPOllPTyV6PF5rPCpXMnZUMCw0M2NaR2ApJXRoZjhMViFXR1kiVjwjWnt9OlFvdVtIK3ZeP3tqOURmaEY7ZlEzIy46O2oyN1U6Ki5yM0FZfXdzJFlodStyRz5DW0x8W2UreSIzfHUvZEM0fD1+fHNwKyMjMSF0Rmd2LGt1SD5MVWRZOFAlQnJYXnMlWXNEcVl0OHVpSlYsLlh1VFIrOFs0'@; put 'eEhuKktBTSlpe0J0NSkkNVNqKE89N3BzJG4uSE0oKTJCVTJ8Rm88a3s8amVCKm1rIztNaCk0SXlDdHNRXm5ANU45S0woQVZuJWVfK0IocXRYc2xsOHRjVVdfaVtZWDFwQjV1QlV0Lj00RSpFZEdjUmc7YXQhd0lkJlddWzd6YzQ+PUpwNmtUJl57QyNvTUwpRTJzMFcqMCZAKFpFOz0ofEdkT3xY'@; put 'aWBlWn14ZGsleWNsTkw3cklYdWFqeF4/PVcsIU4+fmJFMHs5QE15Oi9eW2Q2VSgsVEx1aVNkOk5SdUptX2h1JFtrNl9AQD13ejIyLlt2LixSYE9qUjVbbCIhTClsMlJ5aTpgKGBmKGR3YEsrSXtWPnU+ZGtAXzMiLGgjOHZ5Ly5nXjMvWEB0RlVkPVsueXFTaiQrMkhdZDxJNUEzZlZ9az9bRX1W'@; put 'cTk0QUx7W1NVOjxjWWV6ZTBMWW8iRitheHw5YGlwVGx1S1ROQzdvXVMjdGZMRDx4SX5oOSVpT2dvb11hMzxUPCkvWWQhQGI6P0JmLn0uIXtLTXNoRT9qc2kkUGhSSzkqQGAvQzE3VTxrWDNmNGVXZS5MYjtRK25oV2NgLl1QJElnSSMwVmIwIiY4dV5UdXJjUkJJcld3TUMxRWRhMDpvN0BZJV10'@; put 'QzwmcCgzRzlCJDwmQDBWbzp6RGA0RGQqUl87RFBbPDR1WDJIfnE8SndmMG98LzJieElMeXEsUTN0cEVwWVdPMiJEQDNpSFB3V0tNelspP3c8UmBtdTZoaGs+TykzKjxAJVMyLz9CRzNZejB2IT9BTV55MCJ0bmhSLGglRyNXTioiXVchXX5mWmJWbV5aOXhDL2hlPThTV0tPIi82a2g/S0ErN35k'@; put 'fCN6YEVDZCZ1dU8scGtHMC4wQi9TNnA9XWFkOk5zSXhOIlQ7OHhOYys9JFt0QFI0JFdEL3czO0RCXm5hfXJ+PGlOZUsoTFE3a3FufDhKZyxKZzhyIm1dcHY8TTs/aH1FSCoiNyYmNTxIT1NGJjQ3ckw3N310WXBUIi4mXU1yLnQ9UFE1LCU5eU8qMD5pQzZEdl9nam8xa0RMe2p0VlhvTjBjRD1d'@; put 'Z2A/PDVhai96Tip9WW1KLEpueFY4JmdlTjB2REtXPiZPUlZIVDpvPFpdZkIyU3teW3pQO2laOThLZU9QQlZQU1goVj5KTnhsazc0WzIvRD9WcGBHNEJkLiE1cGRGMiZxLzRMLEM+YmZQQlROUmJWWVt0TiI0NVY1UlM3PHUsc2R4dF1iZ1hoUmkwSnFCPzdocU9jI3RyazhuYUdGd0I9fGUhQj1o'@; put 'Z0F4K2ZFZnI/SzM3WmVhRHtodWlDN0ljOj10L0YoIWkiMFhBflNtWTpRMzZeLF9xeHR+RzZXOmNsTlNbMX5xKDs0aTB+JjtpWn08c2c4KmZwRkltOTZUcn5bOnpQbSE/amxTZXZGfmlqYmk1LlpyLFRwR1VVQF1GKnAseCVpMTNPaCNqXXErXUZEM29tXjh7Kko8Kyt0LFt0dnc0V3M5UHAudXlb'@; put 'bWN+RnxRcEF+QkNJfEA+aSJTSGJYSFBgSCtqOm5jKlNJP3EvSXx1JElSdTN2Wm48Uys6a1h5XlUvU2sqI1o+OzdQemZVUkU1eW4uZmROeVt0eXtiQkJ5SXxzYFZVN3VGJm4yKl4lLFMqI31pWzdRS0FPWkpjY2M5K3AqYjUqb2RISnImU3cyRXY7Sn5GQEZgYjZmKlNbc1ZITkxfWSJLMVhmZigj'@; put 'czQkb0kjcSMmdyF3WjFUKi5wdVVrKjQsJEF7USg3UEU5M30oSGg6T25NenJsMDl7ZUE7WD9Han5BPitIRUAhI2Y5WH5XX2FZaWFlImpQekR4UGhpKENYREpjNHpdX28kYXJ5NXVBSS5OJl5hWX0lYEhEPlFad1s0V0VRVEJ4RzBMWiorQlQ4RHQ4KGR2Mn1pNDkzIXpGY3kkeixgRUVmfWU1NDtn'@; put 'NjQ0b2Bdcn1BS308USwzaD5VSGVnajc5WVMxKzVSNmwhUFQmcj81WyIpMjo+JW1bVTd9bk8mZ3JIcVlDVWtYZCNnejErNiRDN2o/aGNGOng1WCRbVE1LWzZ5XkM2T0s/VE94MzxRcXo8Pi5mRWIldklYcnhMPFN2WlJBd0Z9aGVbSCVlNkVuOF1JbEhlSSFOcm03MWxDSnRpYT5YKURtalgifmg+'@; put 'c0tWN2dzNS8rVXs0TCF7T15iLktFXX1NQFhiY3s+ejU1dl1eKV9FanhWSVE9RDtzW3lmWEN4SiVlR2J9L1VPYG0wMFs3KUJtX35pcjJwUElDbj9UVmw4QEAuczk9ZFkpa3tQNUp6KHZIYkQuTzNqY1VXJCFGP20vd0NUJXkwc2NTPUlES1E1PkJXMkk+cENKeCFjdCRqPSxqdFJjRCYiZVM0OCRU'@; put 'I34mWnxgYXcsQ0pUfjFfQnMpNUwkZSpySV1iImwuP31MSTchNHJvPk8jcVJ+LlBmbyt8fTA/ZkF5bGUzOjZla0d5Liw8TmxeeTlbeHtMSyomd2klMWZOSHRSdCpwI3glWCNwUylsampLSWF5TmxENWpnTCFQVllJQFdoOX1yXUJgVDJBL0YkYVNyeVdeWDI3VkQyXlAyIXhzdlRFWUpdVH4/K250'@; put 'a29ALDJRPTIwJVoqRnJiT3hUOWlMV2UiVj5FcSF2MndZdVI1MzhRJWMkXTFGb0hEOzg7eyRtWzMpUyl0enZTfldOdzo9MEJ4LGQ6LFlgVmlvSmkjSmI+bms0NX0+RC5DNipefG9hP05pRWxXNm9+UjRHWyR6Q204SXJdIlRRXlZSXVc3ekBFdV1DKV11ZiRtbiJhV1YxcTklRDkvPjlvSHwyLHcx'@; put 'eV9CQzs2antWZE1wflFYI0NVWz4wVjVhci4yMUMxYFJVaEdzQitAWD4jUyJxdk5APmh8QSFYMDAvT0VyOHchVjFUeyEyWTB8cVQvPks4ZlNzKXVic3FuI3lRdHp+VyUyXlolaXJYXX5CTTE2N2pLaikpem1hcDBjZWxQdS9TKDRUQnAlQlEuMFJucG5CNHFse1chRillWzUvdXN3UWw8Yk94Zzo5'@; put 'M2FJfVAoU0o8cGtJY0gwe2Y5O2pIRixoZ0tdcDAmaWdIUUJAZ3BCSGtBeUosak5TOEQuPmxzQyYoK34oIyMuXmBRfiU6OD5XZzZMJXU6eSghLEBYRjo0VUVsZ3IiY2w0djJwWnpYU2ZNZ1hpb2p6Im1raUN1e1M8SF9KaTlDTmw/LyksWzs1c2pDJEA/JilEOShEQmdINTorU1FvPDBta28mY2JI'@; put 'KEQpSGxfRD89byxPR3pJS2J4OnhZaHR0e1NiUSs8JXNSMkJ4SGE2N193MDZ9ZktaW0dRPUl5Yl06RVM3Mz59dXR8UlVdV343c00hIW82bmFRcSxxUmxoWn5rWl4iX3U+QjRyMEBSPDwvY2MsZ1NiRVBjQGI5TX1tUFpjdTVeWjFiKSxxI25vS0BLQEQxeUpHemg3dkdpVyZBRWxZNjUxbj9rLjAh'@; put 'Zm0laWBNPjBtZEdmSGduS2lOUiU9RHgwMEN9b3lZMldZaGQjdkpwOTU9bGdsNzMlW2lCZllCLkhkMComL1J1UTVzaChlRXNtVjVaXndpYmxTWGRqZXQxX2AqdzlKSHFIend1d1I8eCpGVyVIenNVUTdaRzlKXnB5L0hhVHE7NEhncDkuJHZHaFUoWDIvRU4+RS87KHRXVFFjTS5FNkpWbS9SOjpt'@; put 'Yl5nW1sqam9NRGgkaCVWYXpvR3Y6ZDU0bnFnaV5sWGtlSn47cVtmRk92LE8zSGp7PD9VdVdbIkk/eVA3diQ6SWAyVFBeVjEvPk4wdkUkN1RSIUxvJlsxZDh3PlFkNysyOmI/YC82TV9dd0tZQSxXPnJiTHlVdSxOaUU5fG48L2RHcz81bnlWRVBjenl8Y2BzPjVRQiJZIzdVaS9Efl9HbWtteEYw'@; put 'VihPIV98ci9GUzlSSVI2YEpTOUwmbGRhOl5XY3JEJSskVEpDaD9PbzcxUG1CZF1dTVNHUGgmTzljaTRGIVE3eDUjb2xeZT4vKUR4RnhvfVJMQF1nSikrRWRtMzBDJmNpemB9LGZ6SkhVMSg0IXV7YktJKC9LQX4xUT8jdDtHKC9LZmhaV3tFKFMoNV9WMmY9N35JNCMvUE9qKSNTbmo1dVo0eG1Z'@; put 'aVh8VFpVV3MpUkR6dCVZV2thOGpzLDh8WEMmL2RSRyF1YFkvcU19W1MrRVgxfV0rSEJ3Pk0xRChfY31jKXhSeCYrJC4mNFZuMmQ/KnxXSiR7LGNdbjpOLE5QSEhVPkhydXlFfSFXaitHIyxQV2JRbTVifFtWelUpKj1WW113MUBKZ3tiTjc1LlR3P1trK2x5Oy9Cczo0I0B5enIlZEBPdF1dMHly'@; put 'WEtyNURyVSs1UV4kITUmKCVmbildOls3TnJMPz06QCk7MSx0c2BvdGxuNXFUKGd1XWsreyosNnpiT3BXJXo0PmczWWokdX5yJVszcGEwdV4wTV92NkZdQFl1eTkhRWFQb2o8US5UZ3xDTWdlN2tQSl1uRTVhIXd4TzkhWktISW48WVZFP0xPZmx6OU1oRWQ8RWNhfU82SntKaDFgZG4vUTd3TSwv'@; put 'XU1JOjZ0SVBiK312JmtIdC4me2B9I3J6PTw2bF4xPEtEKHZ3IktnKnVXMkZmQk5DJXBdcitPJDJNZ0JDdVZRM3kvZXZ+eVRNfHY7USFFI2I+WndVLDt4Lm00ZkBXQEVEPC89ayVQcHUpUk5SVThXMzsxUTNEUFhdZTxeRj8wTHV9SWFFMF1Za1h8X31ja09SVjFPIXgiYSNmUChoSG8wVUNpTTxk'@; put 'W3JfPUJuOTpMRkE+I29NW0N8KVVXa2tEWXlVVyk2RW1MXkg9TGl1cG96VW1pN1oyK1NAdkRdOSRMPkwudTNMYUpKMl96I2NpRCYpeXZPLlEzZjI8LDlyWm59TG44NldmNXs2W0c9WWNKOmp9QVE0Q3U4WUUpXmp9RVo/JXJzZl0sX0g3Vzh+JE1GYkc9fXVMdEtNQ3t+JT5MOCN7b0NAM0UwW3ZE'@; put 'Zmk0aWlEVXZMdDRpQ3tocDZvUTdhalU2OFZIZ0dyeVkhTTxlRVdwPjJpYGlIPHhwaywqTGdPPUVJemIzZTwyPEtscVFUb0cyb1F+SmBofiRMPyhwJj9pPzBkLm9NU2VjMStnazMuc1o4VzI6P1gvbSJhQlgkSUJGe3lYNyFfI0RKVmRGXkUocUNMK18hS0kmbVtUL3Q0e29aamdbeTYyVkxfQnJz'@; put 'OlopKjMjLmA+OkZbO2tCMXV5NjYrXkNrT0pnbnYxeHkvdV9hUTUrZVsvO155e2trRjpJbE0hTCVgXkApKUw0SEYra0JlfnolWyVJZCNCY1BraFg2Nl8zQlIzTCojaXFkP09TVUBQV3Y/MkxOMTpgS3BaRDlJMmpScClDPyI5WEcqTGBfbThFez1odkZtZj5dU21lLkdELHhERk92PkhIVHpIMFBo'@; put 'UHtOWXZRYHV5STw+eEVzQkJuVCEyfTJXeE10YDJkaiNZbDVoTWc5UFhCflJwWkF+bExVQit1YSMsa0NhKFF9aGVTM0lpWT1HYFgiWzBKXUZ2M3RzcTM4aypOOD5mXW5nUUpISkF1PVlib0Q+OSo5VUBrLH1lOSMwWD0hJU1ASHFNUzM8cyJKXjhJJTtidiIpZ1MuVyRMY2MmWnVHZHpjdjJUXVl+'@; put 'VlFVQV8kS3BKWEdYcmBeSnRMK3ZFfUZjNHU6aGI6PlY4bWhmP3hXNGokZWg+JCF+KSJENVlAZXpWJXRFazI0XTMsTHg1KXlUMjFPSSxRO2ZYS290YGlxYXc0emkqfEEsQjVKWyEqV2Bne0gyNmI6Z01waVVZR0pnPztJK3lDM0tYVSh5O2cmUHpeUyJHdTVFTWV5dzRzQjozYlU5U3RlYVMwY1U3'@; put 'eSYxSzhkNUQvXVFgWjEuRlJ0WEZ6UWB1V084dV15aCZCQnhYN0hsOV53aCJ4KmZAXktXcTZxNippWSZrQ0g7c11LTTR9fSx2TkF6Rjw8bFVQdCZBSUVHQnJuP1AxQl5CWnc6NzB3ai9JQTJBV0hMcnJQK1I2QSY/WildS3spSyZtQjJHQk1JMHZqeFtTdmVHKzV+VDVCYExXV3E/SU9yU2RqOURt'@; put 'Pyl0LGBgSyZDPXpjTVRkYExXVzwvVHwrT05CUSF2V31GTTRVUkp3cnNjdXUxNHJVYzp5YnhpYTdIMUJiTFZ8V098SUBNP1hARWMmMyEjQU9wKWIsYiNdfUFocXhxfFJRQUp0c0guQEV0bipReHhGSSk6VGRQOD8lazdYNSE9P3U0bGVqRHFtWFdAV3BRbl5FKUpVRkN6X0Q5QUFSPzZnQnRicX18'@; put 'XSlRYjQ7PitVc3EpIUg+VT5JZ3xxdnglPD1IMVNkaj8hQlpWWHZZYCxiWUI/b0glUiR3YSY1RyVqIm4+QUcjSyRMOi8jM2ZATVN7cSlAcHVbUDE+bEArSzZQYnwrfG9ObzVxbGc2PV9wUn02Nj52RSkoV3picTlMbkh3b3UyT0VvVkNWXmJHcjs1d1ZpWHUxKm1jRTQuL3dAYC8ybDhSSTpNYXwm'@; put 'YWVfVCIxclBYdzlGS31RcHh8KlFyRkFML05EdCxUN2ExeXZ0LHhJP2ZDNSI0clBnST9mY3lkJlhEIX51MFJENXJxQj4qSmFqZF5IdFMoRW9dbC51aW85dmIoUzZRbi96flAlQzwyPTklP1R5JnNYcDZjNTFuL01xcHM9S3I9dXJwdTMoYHZ5bnZwSm4vIygoM3RlI09XUlJAbWRmelsyP2tkOjpj'@; put 'WWNYQmtAUSQ8MjsoTGlkYExhTXxBNjtyWXRKPTMiaDk2MnwqVUldcXUpPWo0amcveVQ5XXxtRjl5MSFZeFdMb2xqUkpwc3AhUnxAaXw6YyooanhSKFBpNF9fd2l8T0pTWE9xVD4+b3huP2BhTEU4ZFd4TVtJdjw3Iis5JTxBOU15KUFKc3NGfER1SVlDNktidzR4M3hUI09aX3xubVMwV0E3dCZP'@; put 'ezZocTRoRWdpQ2kwWHFdIVtLL3gxdXM1Q1dXNmFwTUpZMHJWI2NMJXc5ZD9MbXM2bi8kNVE/JTZKSEUrOTh+KkxjVmJ8cDdVX0oxNj5MS18+cmU0OlJPRWYwNkUjSytOO2NvUDBOUjUvK2twa2dTRS4jZjdtcVY8LitGRm4ja3d9dGpNaVBIP3BELDFJWEBFRFFKWVdBS21jVCk7KTFLLFZGMHgz'@; put 'LCQyUSFbdE9sWDRLZWNON3NFVy5aRzZAVlY2TH02a0h5cX1dd15TRldycV1RdylHJCVxZmJSa2BhYEJ1ZU82XlJ+PGFOdWRrIm0+MTNhRFsiPSlHW2ZmPUoqMUUvd3p3IWZ5RT8xKHQ7ZSVkKGBoRHxQd3o+Ym5zJl8kdnhbPzpbfXY2cC99cEooL3IrYSs2NkxVbCM+PX44NEUiV0ZzIl1dOENZ'@; put 'SlJrP1tLfEY5OXFYOW8uKjZbMjIrSClIbi9IPmtwUU9heTNVSj46MltQY1EoV1prVF1HQUMwSSQpVVsjQz5bWU5NNGYvb0ZUOUtWaSxPPzl3VVpreioseU9FdzZyTmpoNyxZaFZtRT5CJUxNd2A+O01bb1d7TmBAIntOdV97NmZZJSozTSxMYjorXjlqR1pecXc9bl9gdHNSJlVffFhFQn1+OTpa'@; put 'dGo0fD8+Vil8TTxkeFRrNjc0ZHR4SzAzRmJVWDsiLD9oX2srIVlva15QJnxmeCRgTkpaQFpOO3I2MFgudCZyazRqTUAuSng8a2lucVEyPGJiUE00KEdmL25nQ1NkPDxzeUYweUJSUjIyWVA5NkglcTVvPHo/fWJAVUgxfCExZk1Ib1d6aD88fDw0e344KHoiRTpgaHNFe1Y9JGd5KHV5ekxjUmNP'@; put 'amZDPFtsQylMKlQ9dW5yRDJmViUzai8vO155N1dQZEk+Ul57aVBhRXp2WWRGa2B5MDxMWnhIRV1pUSRiLlAvKVBVSU0qRE5NQHxAVitvOUlnP3dTRjF5YHlFcCY4VlM3Z1dta1d5VUFYR0Q6KX15eFNBJmg7VD9RbyU7azNCLCRVSH1aTU9aajxYJGxeYSgzVkhodVgkODZWRmBTXWx7bGRtKkps'@; put 'QktwfCtwKnIyUERaaEpnenV3Q2AhTTd1TU5FK2ZjR3JkVGh4YE18JUJnZE5aN2dbfGw3Oigydjh3Vj9xT1tvJl1haGZ0RDxraVhUV1JsQUxXUzhGKmZEP0dOflJ5XkFFYD9kXyREOVk6az1qYTswTV8zLHsvPT1jUlpvUDVlLHxWbSU6JVNiRHF+QHhzRVpYN111VGg1IVUuLFlGWUZbMno2QUU9'@; put 'aVUkQXlrKVtWM0UjdSldZDRTNSt3ZHwlXWMrbz59OnoqJXxIZ2BWRzcqXUgoKjY8RTd9eyRkU2dWJj54ITVhOUQjRXJEbCxhVjM2Nn5oWkBbLkNucC4yPSx3VF18YmZ2WVZ1Y1NtTFRJazxIJlolMWJGIyZpREJtYDssajZzd2dVSDY1YmdUPig4N09kTDY8Kk9OakBEfSM6PUVBU1g2WD5aYzs6'@; put 'bHEmd2Bud1NdQzRMSTBuUT9ANXJpIkx8a1Q9QGhQe2tbRFc2VWxXUGl0JXEmLGhrW0Q7TSpeJHlVKCIiKExVOiVzLDAySi4wbWU4TzA3ZlBTOXNIKkhUPG4mUW9ePj5OclFQWSwlZnlsbWVwRkVDKyksJCVdfCpzQ1hgXk4jL3BZLj9+JSVGUUJIMkssfE0zYG1oOVh9WFdyZ3glMHZTeGoucjZY'@; put 'b3RpfXV1VjJPXj5ySHxrOy4pQiElXSsqWmxXfjRsZTtzRzAwO0BeQisjPHV9cUwwN3NkZ1FUSSR9ZGhJVGpidExHbTM9Q11eQj8pd1Q1dEosazk6R0RURTVaTDhTV2dyLFNEUT82RmQwRmlyTiJEQV9zLFRSOjU/SE8pJi84UC5TIzR3ey5ZWndaR0RVLm5CeSYrTXJmfk9mME8iYFErIU9wSnAs'@; put 'UWQrJGQ7Rk1qZ3VmfmlNWVU/RWl6TWtWclB0IThvIS92KTlZM2dINixAcnlxR2dCfHtYUTZWZnd1d1IpXntrNVEqeSR2O2lqclVfVk9zZ2Jre2ohdyYuVXxaWE42MCxAMzd2WVlENmJSTDB2ZUJsZkx6LkVhaSRfNVdmJn0uTn1Jdmc5OCYvTUdZOiZdKCZrWmk4SmFFTiZhO2BmYENKQ04reHFi'@; put 'PXA0T2ZySEluSTl8bjZeVHReTmVmKzAwKXtPX0NuWkxjPG52bklmRHYjS2p8fDA1S2J4YT83cnhkNmJHc0h3KE1IMGJyeTpbKGkqaWpdM2A+UjVyNmcmSDEybDZSSVF2SV47Q1Q0O1FnIjxRKzcvQiRTQUB2YXUocU1GRkN1TCM2Tj5BbTgrLG46YEY6dlV4QkgvIktxLzBpJmt3eip9PCxrfFBt'@; put 'O3pLS3dUVzVza1daOiM8X0ZnKDZRVy9qMmclSGF3WkdJSClYTFpbWzE/R1lVaTxMcTVPKnt5bSFabCtedkc/WCokRFpXNEFsZ1s1fFJJP3VnJmJeQnooRjBDdmhQJGNMLjFFZ3t1SmRddVJDP1k7QGRsYHJ+I0s8UnsoVGY/cTd5e0M6TWJnVjpEaXYjdS8hZkJ6YnhyWlY7KzZrZDE9emEvblRg'@; put 'b1V0YVFEcmklfkZKU2wxXTB8WXkxM2xNXUhORDplbEpPLlBwYVtFNzErLDtsS0wlaWJTT2MmaF1rb24mWTosY0ZMNnVRUiVNSngpYndvP157VnsvNzYxLF9TJXVxOVArdktqXjpkeChONz9xTy5XTjB4ey53dkc/KWw1fWR8Pld3I0ElWSkzVFJSSV5LJXZ6dnM+UEw/VUM2T0NKU2A/JXJyJSZp'@; put 'aHwlTiNLPWR0PSRUREd5UF4uRm4vSGZGL2wlbHtPNlpiTTY5WTNjRVl6ZnFUMmx6ZjMwITNXJG1MOjs0IVVYVT1qPDQxI2gjI10oOXh+VHZGWzI0TW4xcSZFMGw7Uzo4KWxeJWVsMl5rMDBrQyQyI2RKKm9qZWBtTHt0IW5wUXFMdkJtTkpWYiVdayJyVSJnaHlfXTBDcUhRbDdTVnI3diNsN1M3'@; put 'SnEwT1hVaixSNmc8bHtIIVhTN1IkYiZ9XWIkbkQuMmljNWVXN0cofUQmL2J6S29vUG58RihUSj5WXnFeXnlgYjNkT2VnYDVAO258QGlgWX0yZngldCh3Vl4/RT0sKUNVcGpnJEpFfE1udSlPYmR5PSp0I1pkYnUod11hU2t4fHU1RnN8R1tydUVfK240R2FadDdscnVSdj55OThZeG8lU0s9ZFQ7'@; put 'R3lVe19qLHxBRDxFIV9+bk15NzFEW3tyVXNaNXZZaGRRRiN1RlNjcG9ARGYqV1RucHBdWyVlSnErPS4wL2B6Q1lyYXkvbGRkUSQvMT9qY1BpXUlaaj8kazUrVSovbFVDaXZjQ0o6YTFvKVRHVVgrcDRtXypbZ2djdzB9JDtPS0dpWUF4NFNocFpnRCguZjVaLlI0X1NmUUBdcHhOWiVfJjM7b30/'@; put 'VlFwZj1mTSlKc0cvVCxLflVnRVU9YVVQWVEwRXEvdTV8PyFuZiVQPkhlUSFkNW1zb3E8b1MoQFR6I21DKnc1a1gxKWx6NUleMitNRT1AP2swXVh4P08hfWlEP2pqUEhRYTpjblRuWjBjOiRleGIzM0BDKS58T2N6WX5rN2E7V3RVWkRNW0EsJFFJcjhUP2ZzaFRJPlYpWz9oYHxGR1M3JWd5OGJ2'@; put 'eiRoXTU4Y3Y6PzpUQHo0cSxjL3VuTU1JSWdlZjY+dzlOSmxlbWNHKms3RG9+Yld5eT92em9KTT4sPmtOTX5ddUkmN25zQzsjYXlLSzE/N2txb1dhVkZTWVMhPVB8QmhjZDB8fUlFcE5BLHo5TWh3X2ZCTWFsRm8pQX5gb1NqOUNHYUZGbyhFaGo0THhDOm88W2M9KXEuYnZqRXAzO2k0PHchKj5i'@; put 'ZnReMnNKXnhRKnsxe1M6bzNuTktVT0N9WipXaz9XbVV1JWo7O01wIlRHWnRRSl18STZ+SnBpJjd+anZ1PTM0SDFBcFBAeSRqNztAMms+XSEyUzBLL25UczBbLy8pJSkya1lfSTQuc3IlZkc2WTUmLD9WVy4pW2dmXlVfKEgkQnp6ciVYV3NEVnB7WmB1Xl0qaVF0czpRdFNJYT5zeUd1YG9SIWtm'@; put 'VDxmeEY9cmx5P0hpYnVYXVclVllnMFpucSxjazdhKlEvQDFXXVsrQFUlM3tIN0J+SDc8O156ZGRWVT09ent7LGF9U2c8UyxpVlVILGlHR1Z2O0tLU3dRS3tpZGRWVXAlXW4lSkxMZG9nR2tVTDEhNTkzckN0NGhLaHU9VzhyfjQpUWUvY0VNSVVgVHpueHQqeTwqUElhX1Yyd15MZmM/Z3RUV10+'@; put 'V1AyS29gNVBjWn1GQD95PClQQyh5Kig+UENkZTw2Vm9CKzBXRXJKVSkzSnU6L08+dHYzMzl5Pz49R1lJQGd1NC5uLlZSXlVda04/KTNrcHZ1KDxndTNEPnhsdCN5W0AhRnkiVix5R1dbOTFCLlopOTM8aVAzUXsiJT1PWWZScE1IOjFXTSM3aEwjJWg4KFRLaGZaaGRFNTJrQUdKXnBkTCtzbHkx'@; put 'XmoqME4hNih1aiREUERhb3QzJixURz99WkBGVThQQ1VvJThNRjl8WSVKP3Y5JXhbanE3YWZAJCFQb356LkBDfiwme3pRSChYelZIZUdhJix2eTpeRHckSyExbSwlISlScnU2PiRAL2Z8eUR4WGpvdFgqbkViJkY5LDJ2TTJ1Pjc0PUd6NiwrRl9mRkR5TG9oUkZeQnN8dnByUCJPQl88QCRxdStq'@; put 'YDMqdXciJWxKejZFXTptISFqcDV6QjBMRDlNb2hSRm1ZWWxQcVVQMUBpO2Bea1M8Sz5MZE9dbCR8SzkyJHtHNXNhXzA2K0BSQFdOKDorMjd+Iz9yXW8/TzJFNExOQzdfOlZmIWZKWXkkMTpLPEtmJWxfeCJVMTYhMkp8WyRrViYudXVdXShxaTMpbUlXdXQ7an59e3V6U0dhVSFLOVc1MEB0Lj5I'@; put 'SUEkRShrTj1VaG4wWFlgNiomUjY9OD88JmJeZ3BlYjcjTjZ6JnhBb0tKKUpVSTVvPjJxXS96Wzt2eUAqZVtLVWprUUlDVmxGTEtqTnAwX0hydXZ6JExINlkwRF1iYmVkblR9MGgzfEQ7Z0xuNFgoKUQmX3F6WW1+JVVlKGZIfX10XlFKeSZgNjo1PTh2U1ZsYGp5MTR6fTFRMG9qaTxRL0xWO01a'@; put 'VkZYNnI7NHtwQjVHOVI+MlR6d15GODBAayxYOHxJVSRuQEYoRVhrKjVvQyNUeVdFaDNUVEFEVlVsLDJCKmpxaWZxTlE6U29PMGhsUng4dnw9cF1qLj5KPkV5dSxPKFFZP3dCeUR2cWIiMTVRQixaKk80amRBSU83OWZ+Nmg1UkF2XSNHV0hxS09UeTJnezY/cCshIiRLdS9eUyViQCNZUHR7Uylv'@; put 'WkJ0MTo1KltoLEZbXVVqWy5kI2c0Y0cmeSFOTzhtMjVFUjNjKnUudUZNXz59bzkwNVJxPV9IQXoySDAqan5EVEMqdUpaXTljQk50diMsRXI9YSZjMGN3dXA3T2F+eCxJOSxzejVYKFVeK25+W1omV3p5eis3WjhaRnpHTXNkWTN+QjBkblo2d25II09sWFNNVkM8VyFbeWBvaHtpKHJnYlhJTjY9'@; put 'LlM1N1twNiImViZFSzsoMV0hPnoseUtURGNsb2FTZnZPPipJMypiWWE5SzN4ajFYOGE5TUxrUCNxOFEoI3U6fSV2M040UlNTK0cwYEp5JDZsSGF9RVpnSjVRY2lvQiFbNWVGeHU5TT58SVkjVms1eDI7fUQuP3N3UiowLiUqZTo+UklrLHI6K1B9aGRVVnlhW3spIzBycFUsVXVSNV0pYGlCXSRr'@; put 'QXE8IyRNREdYQCghYE8/ZD8wN1AjOEFQNyViM00yeiFmdmdQQzgidT9CLChIaEtdLzhfMV9BLDRyTkM3MSNAPVA8THE9RD09enpjdiZpSn17UnNeajN6bT44eHg0OnJZJVY1OmBZKVg8VjtATzNeZ3d2YWs8UC9UKC4yRH1AKEYjQyg3RX1WXl0scDFofHFhMVkvbV49TF04IVRRN0J7YCI6VD1u'@; put 'MGhZUzJtUjorZmNHcHt6SVVXe25ESyZiVTNFIlpYI2N2IV9+fEZFNCF8Q2w2QzI5eUElU3VfWWp9PDA6aiUwPmxXM1U+R1lTTWEubEh1XjZqaCpOS0UuTDQjY0tFQW0wcGRtakJ+bUNwMG4haiMqUk4iMFUoPkhSaik9ZmQiOSUyPHMqbnpEeUQ2RHt2LG91MX1VSkheMU5QcCl0P3c3Rkh+Pn5T'@; put 'ZC8mPUJ3LGshOS9SbmEmNCtkZUp+Ii9lOGtrXjkldjhHayZuNDFFZmE5bnJhYWtBcTBRYipuK0MxRHhaQyo+SlZhIU9HR1hCNTczP3ReT0VrOUNEPTVNXX5MQkcyVkRVXm1rYXY/fGJ9RUdpRE41VnpPfClFR0J5Qip6cUFHKVhwUDIjIUNKKmVIMyhpVyNHNVYlN1dnL09fNGdjYnUkR0lYenY0'@; put 'JktNXWF+MCUiZyZXZD8+aituQ3wqLyVNMUlwOHoibVB+L0BuYDhTVlNtVXZJQC4kTiNOZDpBdnJ0PWtLey9sWkIiVFIpZztfSFZubFldXkFZYShRWj5VeXtmZFZjYjUhbHEhdyo0Q0I7WnJQPFYzInlDSi8/N3ZvJkE0ZSkscWw6JG1RKUliVWhHTTw7WndaaHEjX19NJlVXWH1AXnA0Qn5CdGAh'@; put 'QVFre0V3IkxCbFpXKV5LXXMmKl56LHElPTA2WUYwYEpPTUtPJWRlWVpkTzZaanFdLGFJPy5mWj9iUSNIZj8mXjhIKUd+a0s0blZoY0NxamlDP3B0RE55T1NPLF17U3VdRz5zQG0rN2dnXXRdIU5yXy8wKDl2P2RwVGZqSkBUSn51RUtnfDEyOGM4JTldNkUpLmd6SyxaZjhFUVIhNlZAVDImRVRB'@; put 'TyJZXy5JSiFfLEJLVkZzUWgjUWlvJGBQUHZ+UV13aW4wNVJDKjddaGZwIl4xWywwQ0dJbnVhNWIqWl1ZYipuOFUlcn4pIyk7QGZXQFQ8Z35RM2NrQkx4OEtMaTo2O0Btd1Z6dD8vQV1eUFBZUVtaI3R0d00pR2EqbjklIyhtSDt6PVc5NDVDeDpTTVtOS3pgOytnOm4mcGpgT2loY35tI2hUKitr'@; put 'dm1OczJjNF41QGF9UjVHUnByN2YhUTdjY0ZKNlp1YlN8ZDpebTRgUHtqRFlyUmNWQXdhOyxpSll9RWdbMmNNQkRYLEldcittezR8I2J5cU1QLGZWUlo4dF4xb103bHFMQFRlS31MPCFsYz1tK2lAdGE1THA/fUV3YTtuTSQ6MmdBJUkqN10oNyUicHVpb0ElM251aS9SbTFyTndzaEYwViY0biRz'@; put 'enouTGYvZUtuWiNpTF80byhUJXp7U3ZlU3dtKGhmM3hkPUB2LFh2QGNFTmVMXkxFYSNBQ0trNCZqJUk+RUJjWXxmS2VOWks+Plh7U3c9QGV3YEoqL0dSZyhLRiUzai8uOzpGUiokKjFabVRhOXpTSSgxRSlEX1kjcX5UKFNlTD5SK08pUndrbFJTZ3YqMllgRltvZkZUMV02TF8xQWV0YjU8JTFg'@; put 'PUdpdFdaeVVnRzM8PUddLGcrbCZNKTlgblZnSHRqRVU4Z2NeZk5VM1NbRkJ7ViZkezJ6U2lIS29vM1U1UT5mfGc8a1BZQ2cqPFsvYm5TRTBONUhuKWJRfSh3TWE1RHZXalIjRmVaakhJWSokeWRuOXI0VSw6UXF1Vl5qeFpkUn1MWTBiTFg5bCpKQ21VNURTfFV2L0MuV1g4OU5CS1Z+MGtFZU04'@; put 'KWM5MzVSNHozc2F2P0JWakxhMy9JT0p2OTM1I3NWcUUuLHxRVCFZR01ZbjRLJjZ3cT0/VHxUd0xWWF1NSCZYRywwfHBkNXU9N0JdcHYjP046Tlp9RX1UQHc8TyxUXU5sKlNWTVA4VFhIfHYiYDRFJEJpRm48K0NNe3N3NjhmWSlJfEpoN0AoKXRuVXtFVTtvLzBVcytjR1hAQzFWeyVrPzd+NlpL'@; put 'TEN5Pjc3MXh3WHlabiwhUF5nTzIpbXVjM15wW11rR2N9Nk9idnN0dT1mWTFFaDw5XVh8P25RfVdyJT9sMDVQck54ekY7O0ZyJj93OndmOktGaHZnOkh6JGpTZVM+RVhCSmJeRGF6VyNhJFBfa1pjPjNofFlTXnFZaitsNWZzfE9MVlB7O0wqZCo7V0BWI3JRZyU1KzJkKjsqTGU5Ij91PHpXPDly'@; put 'UTw5bTlbJHlxY15Pb2tIISN1U3BKZ0VhXU8ha1IkPlRpWVR0VCsiKD14P3ZmYm5hMG0/MVkwZCk7PV4sQmI8RU48NE4udkVuZEdZQEAzWjN+SlYiaG0uXmQ2JE0qK042S1prLmpKTlNSTXhkWWFoRXtJLllPZDV7UGxGZTooXigsXkdWJXBCP2Q9QlIkNn1JNVI3OGcvcHdeSzpkUz15fF1FM352'@; put 'KCx2TyU7XmMzOmtoKVtzc1FDREIuWGp0RnZfI2RVaWx6VGRLMiZyMjtPPWgjNkBuLHtdU3I8amhDMyNWPUJbKmVJOyk+aDw8K0dNbFBDYTdsJGphYy9tIXA8TVVtJiQ0c2VqYy86STViPmQvXzVyZyRnWiVaTilpfCR4Klg6JCMhLmNRbFFvZUw7bjBycHFsZ2IyRGQhTlN2aFJdNnQ4PGZQVzol'@; put 'KUAvLGlMOjtvO09MVWAoYnZiPU8lX31tMXtseGJTJkx+bXB0PSVrK01AXSpdX1o+V1grI0hoWDA1R3peW2dbcEJ4JnhyKmE3X1hteCV6ezRtZ208SFNzL2xmRC47MSNfSVJofHdKU31JQyxVKUVKZkxfNHdmTXsjXVsydnBWSXBsfks/YT5ieFY4XmY8PVl+XW9MRUZdJSQuIzc2Y2ZrfUl9Q3k2'@; put 'U0Y9RSopQDF4Plpwb0tNV11TaG98M21PIV9GRG1pQyNpdjN2USYxJk5fInovQGpnc2xtMys9Y2opUnckM2UhM3JweyU5REQ2JlVtKHJ9QVRTX3FnTi98SDQ+U084cjs0dldGYWNxUiFYKFtIXzswZktxeFdfSk1eUylhJXQ4Xmo+SkBJdjlhOm87MjxENX5YKSQxZlBZfV9RRTh0ajt2VHJCSDNb'@; put 'OWIvMFpNJlNsKD0ybC8+YkM8dkVgWkZPR3tTOGp5U3sxPklPUmw2NSlaZnpESDBFPjtGZUBZOV02Lk55XXxKRlppM0Z9ZWhZNTtWOEU3SDg5MU0wdDZaLklVN0NgZngpSlJAUWpxY2lJZHVaQUJCRi8rVCNSPSYxY2pzUCJOdnRZMX14e1khPmU3cUdjZ0MjP3FSZ2tUSC9Pc3hjbWlRIV9EQm5T'@; put 'RTQsYnY0bl5vXWV4IylNKWluQVF8SGJPZ1syakZJLGJLX1ZNVyoxY2N2c15sNEsufT1vIylXR2hoWEdmPDcjZHtwckB5NDpvWmNMeTVuVDdTfn4/W1l3QyNOOUQ0XVJbOFlkU3JfV3Emd2J+ey85cSQjTEBxZVR9JTBOem9ta21pJlRqXUNCRDVYKkMjXy5PVkU/dnsyS0lYY3pxWjUvYExJZXZa'@; put 'S1J9YTpqcU9dPFVIcEBjS1IiXVtOeV08TUVZMXk6emBxIm9sSDY0cD5FRE49I2ZXX3IqdTQ0LGFAUC9HansoZGxRREJWOmx2UktEeUlHQV1HfGEpcmRdJGhPSSJTXVtneUtybWVuWDA0WTEpWHVXI0dBdnFRRH5QJWxUR2VzOktMJDREVmpDKiR1SSJBbHxvN0tQd0twPE14JkdyMFlHX10oOHwy'@; put 'ZnByMnhqbnBeOCI2P0ksc3B4XU9rcCFgSVVtKlVoZlZgVkJrR2kxcTIzcmguSntNXipoZGJWO09BPUhVKUkmbFZHOGR8XmZsV1p3W102fnEhdCo8OiIsWD9DQlY/WUlQelI/cT5aIXdCLm0ocGZ0OzF4cSNWaC9SMjtyKXNLX1J1WDByZWIhciQmI3tnU2FkVVA1X2d6UmMoaFNreGBQWmwkQUZO'@; put 'aFZycmpmYU97TSlqYFomIjsodzVgN217OkxxSWxaVyYlTClUaXd5QkAmQkBQaSJCa09IZ3FqVmZdR0JOKXV2XVBRTkhyX09aNEx5L0tNfkIxcVV7a0Nhcjo3VnZFZjxsUkckOjVkL214N1RVOXBvXllgdmFoPEBEOCNxUlkxYDhyMHQ3IVltOzFwcz98bVJCallzK253NC5peChvTWxBflE7aU0j'@; put 'e3V1QTZ4dkI/ZG9bQGJMTTMjfCQ5eEozLyoxRSYqckFqWWk0XnlvT14iMTFiU2ZbWmNYSyN5ZVpPVklEbSVqSHVFPk9Fa0dDbktuSEc2MkwoV3xfPTErdUIyYj5kSTB+Q286YihVdUN4Sis2Zk1yJUFLJjRUP3U2S350M217cUhWN2AqYDpZQTN1cDc0OktxOTZtPUBLRj5xU1hSY2suaGg4Pksh'@; put 'aSFYfF1PZ0hJTE1PdmFsRklDLDxFKyluR3s9VkQiUDNqfnxpZWclLmJqIUcjJS5kdFtWXWpzZl81KSkmcikpbWMiPW42cj4/YSRJRnNxMjYsa0d3SXlFd2wwVUxPfn1OXkQ1d1d2UWU1WG5RLyVeW2RlZypJI1hnI3VtM10sTiIranZSd1QsS3VPdjxxL05MLD1bUChXV1RQXjE3KE5HdkdOUCQu'@; put 'MjVabCQoRFpIKzhoUzY2PlM7Mn1WJlopYGFnY1tkUDBJJnVOUTAjTDNjRWA9W34qQG9hbCtUQ34rSVFhdV9DbkM+bnEsNUdEXUlJQWVaOGopZFAvLzttQmdBYzRhYipXSmkpWVQuc0ZfUTM5ZUxDN3dLUUNRQ1J2WWNAMl56Vl9RVD5jX3xVdSZCQEI4U017S0I4U3Rib14wQFM7ZyZ5WGF4KzBe'@; put 'LEI0SEZteUh9LkdnMDU1Z2M4VndLenolUzRHI1pJNVhCWzpXV3FBWTtRWmpgOGNxe0hiUj5rR3dobWJtaS5rT3hHSEUhbyY7cWRYUjpgIzwjNzE+cHt9ckVhRVEuaUVvcE89b00qKVIyLHBYYmpFLltMZSwsfVNJPW4rQSFAYnc3OjYkRiJQNTtKJCVQRChtOXxvQ2NgfU07QmNWZjAjPj9+UVVr'@; put 'KmQkSTRqQlgjM0QpQDF0a08hbFNFYktuZkwrcWR0Il1LW1U7JiVRMjl7em86ai80fFZ+dWNYX3J4RUlPUDRuSGlAO2BeOU9ofjlqV0I5WUZ2WUY+Yj4qNkl9amBjPj1zNVYsOFhYNHgpeWpNZj92R1Z8S00lL1VfVTJkdjN9JmpyN0NRRztVSTl8MSZxcnohcntJQSxdc1EqLHRmM25EOXUyYHll'@; put 'S2pea0tUL0teL2wyUTlYQjlrS1tYa0sxO1cxPVFYaiFyIyhEeERaTG9MYFNrfj1JK3RUJkhyWyx6LGxPLjtJSVV9L3Bjfkx2UlkrX3Z5PG0/RWlLdlIydUBWankpP0lnTHEhIWU2JnFifjwoNjopL2c0PjQ7TlpmJmRWMU42T1l4eVBMWmlGMTNyPUNkVEclTGVMWSVTaV9bb1FgOCIvUT5wUT0q'@; put 'bn1JSmwuWGBrMGkwKWl6IVAyIjw0cVNhYnV8NixnT3M6b3UjPlo+dTA0Zio4akVOe0NndH1gZC84M3lpNm5qbVZZKy5JZ09MZHh0IysmazNrZCNwSFZwSjdIV2VtUmVfWi8oXkNdcjlYdWNzSUV8YT0rcXdNeUc2fkcsdk02RXBYWWpKcSFyL0hiPU9MOlQkUl5nL0w5Y30lNU9OQk9jP0gzQk59'@; put 'bH51VSlnL1RUIVkze2Vwb3dGaU53LC5qeCh2YFBaeUsqWXdzNk4rWkB9L2t8UmZnO1k7anE0cGRdZjQrLktJTDJsNSxnVTZyd1opYmM8YCgjZk17JGl5eGIxeis7ditESSpQR3poMnN7N1JZRy40PjdCKDpsMFFrYjVQfj5lWVg+KF9GdmI+VWZpOSNiamBUVHBEWTBbQyg3eCU9OU1SbVY4UWlv'@; put 'XW42fVQsfiVGOmNqOWV0bC9ANmReZCQ7VCY7NFt6KWVZdCphcVZYeXpQNy9ZaCkzc25keyFZITMkWSxBYHFJeyNOZCEyOWRPX3w0QCJlbzNbXio9fjkhZmxIMTl5O0BjTGJkV3VtR20sXUpEbWozaU53Y2JeIUkjYWlvRW1sbHZ6Ri94WEM1OE1oVk4lVz1gPiRwbi8rSDVOOyE4QXBpS3Fia2pK'@; put 'fXYyUDwiTyVVZXBkbmg8Xk8iMmJkVCFranQ8cnY5Q2gjbjpCKEJHeDRNXUMzem5sL2dmM25BZypEfl9aR2hFXjFROnBNbUJIQFdGYVRwKzFkPDpaUHxtZUs8ZlpkKmgvK25beEUmcFhYL09PZnk/ankkZmpCQjk9UGlIPkxFUS9dMDs3XW9EamBNKXxDXTlsb3JpK0BXbDpVdUNTbXU2R05dQUEu'@; put 'Q1NnbUIyVTM7aXAhO0Jjc1FGKHF8K21OLjpCLkFrbj1Ba2o1NSlXLk1BSURCUzhsfFhAQmVtPEQhJXhnUHJ8NTkhT11bMDhJNj4la2JgSGl3NW0hMi45a2dbW3d5T3pucDklMiNuR3JtWSJ2Q3J2OT53I15iYGhQc180dkZLIi9fckdePF5zLF9HSDk2LGZiKjRmTTd3azJbLnNBeW07Wnp4KFAj'@; put 'IjQ+VTh1Ym9dKiU2Ul07Ln1ALiNdIig0U213JVVpeHI/a0tlPHtnYygzK0VKYktYIStjIzt6UV07Vl44SXZqIz1DS15YfEQhJSRqZywqcl1USU9XWTpmZTtyKXpCVFZZTCI8eGJ1YW9RY212cylSKTlYXUBiN1klWC8jeiV6eUBRLF1DO28mSU1HQDRLMHpqLj9rI101L2srISVrKmkoeyVPeCY/'@; put 'dkRXcitTSVtmdD9LY2tsY1o6JFFeWXdTZkh+MDE6MG1iYlhuaGFHcWFLXS8rfnJCeS8ybHsjL21dekBuaj9gMjo8dzVhbF9IRUNIa2osfEd3dUJYMGIzJm9NR1R1TUIyfUI3b0AyeGREYU1ZUyFPKThaRjAlNDVMVFBgIn4iUEIrd2A+NV9AZC5laDQ9LHRWd2Rwd31kZGVTJDE5fj4rN05jWnh2'@; put 'QV57I3JPIj5fIVImd157Tz5FYDZQendDWkMqN10kcGoybyxld319cD4vNEhEWCEuayR1WFhCd1R3KHM1bVV3V0d0c0huN1htVXU9eTx+Om8vMnVhWWFUSlleL0pPbFBANDdTKTImVDw0ZUl7NFRhPDJRSDBSO0xPdzpITGtsVXZNeCg9ckFpamF9VlYsKmRzUF85RipRR2ZZdkVgP1dRbmArJGl+'@; put 'eF40JF9uQnJEMWhCMmpDWjFXZy51ITxIV1QlaT1NW3FsVCZGPyhrZmx1YmAkWXpuZnE6QyZFMjtXUnBMKUpJQzB8Oi5GdWk6OXY1OENTMFFFUFQ9cHAsTjFkZEZpNVF0SU0xdTBgZXl3dz00bl9naSI+Llg2djt4QEVVVEFmXiozantaTX5KPTdxZmYvWmhQMiM7ZSJeaXhrezk4SSR0eWt7cGRg'@; put 'JiNsPyFrb2k7T2RNXVEpQGE9K3lHd0V2KD9iYihxPHlMRUhYT3plNkNZMzdrZ2I/fSlhZ2c8eC9CaDV2P217Mz1oMCFATE11Z1JdSlRUeSsxUTp3ekBOfTU1Jjt9WEdjKW4wJDt+QDpaLz9xMmMxZmBPKWc/SmdnRl5rbzV3LlFPaUJbMnltLG5INUYzKkg/KTZUV018cC96LDc3fk41YU9BR1l8'@; put 'RVI4PyliLDczVDgzW0JObTdrIjojKUVvKXQzQ2ZxJilFb0tvVTdfM280WzZDWExBRGYwSzpBVVZVSEApXUhmRH1FT0Jka0N5dHw2XTlXPnNjL3JzO2BLTHhYWz4pdCxgUGM6eVdmVD0pYS9WNVtWVzFCaU9KSWJEc2ZwRl98fUx3RTUvcUk2QyZDfUZNNG03VDk3SCY/b24kNX5DSC8veURLNkw0'@; put 'ZHlOVkJ9RkxMKkFhakY6fnhBUWhCXkxxfFouMEZGWzlzM1RXV191Xyg0ayM+c0YkV3dUe1c7Yy5uRGZ7Q1g1OGB2Y0c+fX1MSD9YQllBRS5faXVKRXIlZ2trNihwRkM+V0lJPDplfEk4JWV4QjFBQno0emlhYTpYPmJJZD5lJk5FcyQucnI/MnVzOm1IQF1mODNWeG0vYkMyUkcmWCQpLzI0WW8l'@; put 'PF1meCRgKnhDcUBpZkhOJXZyVyk3OmV8LllhUjd+TGxHS3UrdUgzO0dXSlosP2d4VW5yLlZyPS8pZW9+Z0RPJlduOjBSSnd8NikzWDB0UERXLkpFSV9oP1dWYmlSIVIuciokNnJyajVbOGd0KUNbQTxWRHVnQmZGcmQ6aCozcnQyX0M/MTR9ZF4zOjg0ZXU6QWY9PjA0VDhzMDo4VGQqQjhbRVBH'@; put 'NlQ4d0laPHAhI21bTjRmPyZALj5fVCQjYlhUQC4mNHRWalkrckVDaENaSm9rKXl9cTtCSTpbLyxnNiYuLnBWX3QkLzVPfUlGWDxbY0hweEZibnVDSUhFYWN4Nk1jVVNZfH1iQmkpX0dyO0J9LzVPfS5qL1hSO0h3QXJnaU5PWEh9SUVTRUN1RmJecX56cWdzLEcuQXtBY0JpaCFNLn5lXkhiRH0s'@; put 'OHlVLH5XWiIlNE0uNnJqSGZEMWdxJSs+PWNnUVNxK09VUyxBNltMS1RLL1k8YikzSklQNTcpQjx3Vl4iQ3t6RDcqNCh7L1pPZ0l0dzZ9IjZBUjx5bDAxdWJZMmI3UyZvaTRfM0MpXSJlYC5bI09PNjkrV09uciZvY3F+fSZvblpAYnl8ezYwJTcsbUVyZU1IP0ZSJkA0RipwSXAva2Q4a3tgZkg8'@; put 'P2BRQC5CR1cwZ1dVQl4kJFRgdDQiP2M4RXd0SWZgcSF3Q10jT0M2czNYSmVDRmxwWy5rKjNtWEFyS0VJSTRFN1gyYikzaTA0ZUAhTXRNPzwkKjNtKUJyNUQkL1oufClgUm9FKE9JLD9iJEx7S3J0NldzVjpCQ3tYSElga0hRQy80SjYzemkwO1ZuWHZMRkNQVXkoJFF7Nl5UKjM1ZkwuIzpHPylU'@; put 'R0p3WEh9NXhNe3Qwdio6aHVYSH1PYUh9UDd5SihCR2RdLzllInUrK3U4P0RqNS5iTFA6YzVleXloYz5gdEY9W3xHJXhOXjhSUERuWD5gckQ6WSYzV2V3IToxNitKUnlUM0QjWEU/dGNvQSZ0W2ordVJpQnIoQkg6X05jMFVtfXkoVElieGAoSGZEI0t+dD1qM2Q5UkVDYkh8XVQ3eWFRSVJkWEQj'@; put 'S2l1ODRmdWMvdTsjREg2TEFRdDxvdyhASnFWWVJIREtKLzR3LyNEI1k5Qyk0OGtmdCFGcVZANV9gcUd+azBgdXVzdTw0eERnPyh5QENxVmhAYGBpR0VdanZPTV5gYUcrQnJpZWk9WypNRjp3WjI6JFc4KTM0R3pgWkxNRmMifDBFRjZHel93V1lUTlswPkZtU2xGfUdOMGBOZWNjdkRQZEZ9Rys1'@; put 'V1dGWGd8clY9TUJ9cVtwNCkzOFJ1VkhZPFVALlR3KjNRYCszbTEqJGtVKTA8YGJ6IlsxTVdsWGNXdXp4NGVVUzdkcywvV0FhLFksT0tKaitHKyUsaWclTnZYP29pQ0tKISpALnEiMUhgWk90YkNLSmhzVVNRT3MsRnpiNWs1fGJpWDtTdyEzZSVOR1h2V3M3a0BUbzUxMitwVlpZP1tQT002LFMs'@; put 'SGtYKyh3WWlYM09zRHJ1P1IyV3NEZDRgTi9bVUtfRkRZUFdTZ2BOUTxHXztmYE5WdDhmOm98Wn5MUkliJHc0IzQzeil1clZaOGAhZmZhZTtYdzQiMy5JWEZwWX1WR1J1Q3Q0ZXIvQkRoKTNNNUJydXdDbGt2UmB8cVRaejE2PjI5T2M3JktDUUl6NFkvbWVwWz15KjM1aW1TYVdwIXdQOSl1NCIz'@; put 'd0lAfGM0d01ZL2JQQC5TP3RWWFk7ayY4U2FtYzZbIk53OiJiX3ciKVVpOlsiTmA1Ukd5OUA9UVE4KXM0IjN6SF87OFZuNWVyKVlqKXRxM1tid0h8TXg0XS51bTxbNjB7ZkIvfGcoTndHU0pvWkdnU0UzLC8hRTp1LlcjW3MkPj4idlFKX3lwOHBKM2B0P05wYDJzc2cseiY7KWR4XVVvZDMvUypP'@; put 'X3ZjQVdYMmx7Vm1WejEuNDJRSTFedVNGIyhvT180PDppeTRwUU98Ul9FZSNPJnJSITR8NywrKV8wN0NXXj1EY110JF87YkMoPkt4QSNSUiM3Zkk4Zn13NjhuPUk7MyljKTxHVSs4Z0pPY0lxIXBDTGswRmhOZmoxPm4jTyNta2FhS3pSTWN2Q35rXnkhLGkpcCJuTzBPdltWXVNVSDt0d0Qld35N'@; put 'Pl9ETiNPVFIvQmUhIl5TaFtmd3FwMDw5bzNfJjc3WUglU3U3YyRBI213JDJaSkNUJC80Sjp8QVUkX016XyRZSzROZ1k8dG4pMWJVUWFiNzJqSl0/ZDUrMnZ7RUEkZjE2bW4lbDBTeFVsdnR7fmxRbnIwXypoKS88dGcqVEhxQG52blNoLFU/bFkwbU5nJll9MFBgNm86OWYzVEY6SyVYPEY0fE5P'@; put 'M3xhMnJtMWEyUkklRDNnME0haUBweV5FOnYlamUyeFc6PSFfJTQ7YXVbISY2M1ZicVopKF1Gbiw5XXQ7YVtoMFVGITE6SHVYeFRtQ3doR0ltb1NOQHdALykhW3thZkhZayomJS9kaFYyZzBvJGImN0MhT18uWEo7QFV6JGZRVTM4XWksNUpCOUlKP0Y/a1FPRGEiYD8kW35MQ1grd0p3cT9yO3V1'@; put 'bz8xKEMpaSpVWkZpRCRNeWFIcF4kNlZacDZ4bG5eYXlFQHlsOXhRWGpaWncrJXZWPTQ5ZnlTIzdUOEtuQ017V1BoalBfcWFIbEg9ZHlHL0xbYyFZbkw4NHkiPXZ1NXQ1P3YqNmM3WTFGY0AlS01EZ3smK1txYjNLSndqNCEvZzZbOGt2c0BgPD9nekApfDFgTGtsXnokbXg8Yz5iMVtvbzIuR0pT'@; put 'P24sIU9OIjxfeVl4JmNQaH4haUdUNlk8cThjIltmPHx5NiZsLGFpRHFAUDAqTXYrJX4uR1NYWjZUNiE2OUs8X1peKnxXM15nbTFTZUA8SDcpQ2FUOnlkSUFsNXF1eVpjdTdMeTE+TC4vb1pLNntoMFlPR31xV3dEe3J6RF1iOktaWlI8elU0ZVJnfDtYO25UOVJAVCoqQ3A4biQsIiZbdFZCY3Ro'@; put 'RUAvTXNQUUkqImtwVTMjZm9RIU82KXt2MTojNHY0KE1ENSxPVCxGMkpxd3pGMmg3fC4+PiZ2cElyaXBbM1d8cSkrRHs0LF1DX3EoQmNdfEdEN2pLZS9aVWNbZ1BAYEFHZltvZkh1ZiZFKT9oK1dvZiVBUjVDKEBCV2ExJmk1bSFMdkBlfnpIdT08UXAiMEspIiJeOnZgVSwhaUxmLkIibj0sVn1E'@; put 'IWZvW2JoRFpYLChffGo6QURIckRzajxzUSlhL1coRjFrNj43d1hzPWQuOSozZnxYX34/I1AuNHN7MSowUVR1WztgbVlkKTlTKl94ZE5RRVVpLkJpfExWYi9WSHVPMUY8bF5Qb0EvOztXe2wwNGtSJWZdYj0qP3NsI0dlV2FgKDlbYHlqImZ+K1ZCIztySnVJPntNb2JjVT9nflE/YkFjS1lbS3Nv'@; put 'YjciUGlLWXZHPHp6flEhPDR1N1VfODduSno/OCVsUVYsVzhrImB9Q0B0OFUzVUIofU5MPGpaSURDTl0yRz5Laj4uN1lfMm54NTZPbFZ1eXpuOS4+JVkpT1FhOF1yNTxiR2wuZm1YSlJHZVpoLHJSTzZhIj5YJkFjN1JtLjtxVVhDKm4qSF5OPHJPQ25eJitKZENfSTRRViFULGFpNlUjNz0pT0wp'@; put 'Um9bb2JoKVBfeDVjW143fksjMW9uWCN5N1kxXjV5dVo1LyhzPCFPZmwxO3c5YGg9TXNxXi5aakIpIjIpQz1dbnBOb1QoQnlISWR5UD45OEN5PmowNU0+cTwsOm5XcmNDIzs0VE5VdHRdO29BJC5PVkNaX25hYl0rSENJSEhLUltHWlV9MzB9Y08yTE1+TFopUkUyI2peXlBiLjcuPFV5X118MHg4'@; put 'bEgpQyFYNXteWD9iVj8rM3woRHtLR356L1RAYiY0QXNpeEE2XmR+el9DcVJNcEBEcWNNMCx0N10rVnVvaHglUC81cywzNU44KV96Umw+fVIkKnVPYVtQMzx4c3g9bC5dO3FzVn4mSU95QkhfeVJDalEweHo9aiY4SmF2cGZhKlFdW0orKXUuJntqanhDZCpmJVBRX3w5XypEd1RebDpEQm5LI2x9'@; put 'JkBaZmg3Iy5KNW1qNUhDNWomSXBTMVRUSlZTP25NMGg7TnArb1BoaV9DaG85MkRqdTFYaE1xVnF2fVs7KUg4Y3ZzeGRdTiYiaWgqWlRSbW9CeDhTYW5EQGU6ZjRMQl08M3x0RHklTlAjIWdkUGIpbS9QcmV3ckxzUGVHMyojVyJ4OUpIRDx0U3RselhMOit1ejRJOEU2TCo8XS5BaWUpXzA1PGNT'@; put 'XUZ3IUhnKDNQR0pbdGpJN1Z4Rl48SHd3ampzUHxiWmUpTXh4fV04SFdhRVo+ZDMhRkp1OjdWfXR+a1Iyc2QrNSo5TXF4Y3IsP2QqMyI4KmVUdj9kfjRSWlFma04/R356WmNzVnUwTmc+YHhKLlk9aVYsYDp0XTxESHIrRUg6JTFUN3dWaSVmSmBObmNAJj9iSlhRPkZ3KTNTdWUyOXE7OS9VX1dB'@; put 'LDlyR1s3TnZSSlgqIUliNmc5dXRqNSFrYzRaR3I3PSZjfXErRXwvO0Q1OmJjQC5JWFIwKTMkKXJTRyg3U0dyUSFGQCNbXlNTYSlkc0pPNE4hfHEmRWg1S2ROOGpIJm8rRllXJUlJJDc7X0FeKDg3NnlMSGcha0c7LyFhKEl6QHJBdyN4NTVxckFnKjovYiYqVFF2cz9KVDJ6fSNwTXJNMyl8PFBg'@; put 'd3NjQSsyZm01K2dJdj1YKnZFKUpFK10ySHhFP1EhSVl0LG5vTTpTYFl2NW02dXMxfVJkMFNSNl8rKi4wXll8Umo+NDI5JSpAKXhmNk4zUHg9USQxLGFRcGclbXZfPVslSGUhT0dYdWY4ZHI1RT9aaFFmSjVKWVQhTGdoeCJVU2sqTHpYOCl1JFlSRDVPd2FAJWp7aiRqYV80Vnw9OyE2LGpbQF18'@; put 'VDhnI244cS9sMjxEIyp4ZDhYVGo7TTNgaGkjaXUjKVsyM3BQKU8kIWBvO25UJEVoKnAqOkc5OnxWezxLbCNuWXlAKig2Xnh5eH0/KSshJns/XlhRXSFsXyFfS2ROXisqNX53XlNsOXd2ZDpRSyR3O3FqM0tLOUlyTGJCLkUjS2cwQ2N9T3pfNnlSbkJyTGc5aXIleSsqd24pfGVpdXMxfTtiJlBt'@; put 'YFU6Kyw8UE1FIWFjcTUiVXR9bkMhdkBMU0t6SzQ7USlRSyg2S0AmVFBDTU1TVncrQCp8eUlkSFBvKCxNfGJyRkJxW0ZRPlNSQz5mR3A/Mlpydnp6NGVXYChiMFlDJENrT0AzSGhJPz56a0smdGltPEI7IlpGQUY7OjUoRHoza25RYzVGb3tQP146JTMlJTQvdj9uandMN3Y4Uk5obTREOkshcl8u'@; put 'JHtRQ31MV3V7L2xldXM2bDBKNiRiUXdzNmJ5b0I/ZGZRRzYjNz9rPE5yalVERC55IjZve094ZHcuYWwsazUrVyFffG1JY0IiOSQqWyFJcyk1T2VUTT9PO3FHalpNVCZhejRle1ZQZHNZbnFKWTdkJD89Z3FnP11MWmFNVUg9ZEs0QVYrO0E+eiYvdExXQStWeUhpMy92Pyt7IjIiVTYhWj5AKE4r'@; put 'T2RlKFIrUnp+QGR0MyomX0tMIStddl4pRit6NEwvS2orSj1WSj4iJllLRHE7ZkZjPGxbNWFQNEg3UzUwNVM0SDVTNTA3NHBYfXxsQVB4LDZoL09oIShgIWpLI1hWeSNOKFNqRmdTVEw+OTBNQntVdzE6IkRmcXUzIV8xV2UsYzMjNz0pVnlfJTRMaWdRSjF2UDpQWmplIjEjN3JxdCxJPilKJlM/'@; put 'aiUkbywxamtAOiE4UV1Zaytxa1AuME83O3wlQW0iVGROTGs1aF56N0pkWVE4ZU5pRSZTfipNPjdTKzY7OSkhLilTKkEhVzMmaWIrIzZXOiUhc1J4KUYyTXxNdXgpOD11TzFSPSxiKXolR0pVcmZXbmclSjAqOVE0NEFXSVM3SWo7bGt9YGpJITFgaDROfVM4X1BVZTFeeHwyOSwlKTZKLDJFcCIo'@; put 'UXA2dU97enNTTl1EMTp8VnwhIzNsITlCajBjMVoyXm8vIUpsN2I5bnI9YC5LNHp7I3xobzluNnB6ZmhgZGFiIUFXQFQ+Z0guWDFIaWQ2KlBRRn1hX1VuZ1IqcDksfjVOcEpBJTtnR2Q1M258SS5MbT0kJTd5OTNsb3BeLnMhdW42UW13TEdVPCokVXA1OiRndGAjVUx4c2FAbiJML2ElWGsuXVsx'@; put 'OXhpdzVkJlUhK0FQUTYjaHYrQVJ4dHA5S3RAdjYmNXAhRH0/PUpROWo1YE8uQSlEMi95PFRxeVZsck5xMi9zeCZqW0xSfWJgeTV7aU1DdzBoKUlRTjYvYXdZRkcjVCwhbklmXTBwYmF+VCUpXnoqPzVSckgrIU8oOzhARC5nUHF3K11VMXwyRE44VGU+RVk7RU09U2tbPTNgZldpPEUhXnAsRyZF'@; put 'ZEw2SkhtODoqcmJ+TW4saUN7VlNHLkVTJlZaVVVFWk03Vnl8XiRrZyFQZERMazd+PS9eKStNOzQifHRDNiFBJVdLOk42NTZUdSVKNG10ZzxBM3MmcXVCcjZ3RTp6STJkSHt4UkBZaWcmXntIc25FU34kOmQ+MkErK2B9InU2LjZqT3pxIi9wVWQkaSRIe0U0KFpxPFVeeXNacklUU1A6WX1hbnJ4'@; put 'diVKSXhWYkxSIWQie1F2IT8iIiIqVEQ0VSgpJCVBNjlqYDhjflImOEUkXj97eW1IJUNmTjU3fjxLdmpQUjV4NkVVOTVoKVo5NG1dbCZKOlZ6YmlWSiNLKUZVQ1lfRXAuWVE6VU1Zcmk4WzI4YUhvblNZaDc8Q2w6JVd0QGFCWEEkKGs3N3s0PFZAKXZFNntMIT9VbXduUz4wKGkzPXV5PkBNMWlK'@; put 'dVcxISs5ejljemNGb11yRl5bJjsrLiJ8bD9KQF4qNiolXTJSPkk7K0p3fSsiOG5RPn18W1phc3BlTk5mJEszditOfHVnczlDVSlhOmhkbzlHbjR1aWRfXzNTcEomZSwkN3tMe1owJDIvbEBnLCRDPDkuJWYxTkowM016VV1MfHc/cDRTb2RCdlgkOXlAKj1eV19hK1dbSkU4XnxUIT1HK1tRZjY/'@; put 'VUdSQl97KyNSX20je1BzVDxhcGU+eXJ7LEBOeztwQGROMTE/RV9aYnh6Plg3Ojs9RVdse0BBXTJ2V0ZFKCQ6a0ZeeDsySCsiLHtdbXdYLkpNIyMuJF1QZkVrXjV2cUtrXktdKFB+KFFYSF1ZS3tIMzYvS31SQzZifUR7OD5Ycip6MDchXSthbEdZaC4rUFpUK312c3coSClYbT9iN3s3dn5jb18j'@; put 'UTNuMWtNMnU+N1pWIT13dVJ1V05vfiVYfGQzLHI7THlidTRpa0RtMyFDPGRKS15QeiMyXmxpZ2s1MmM6XT01UE14eXB0LFFqN0ZIZFRNNlU4UkdUQ2YpOU9bay5UTTZiQ3MjJWcpbz5rLkledDZaV1MlV0pYXTkxa05dXjpmZzpIX2x8aWNzJEJnMkB4cDZtcGJBVGV4SjopZl5aITM3ImAlLylM'@; put 'JXtbS2hjSStYWm0zW2p6bCNoW3JERWpTayI2eE5yTFNUcFUuaVhdTXg+Wl5ZTTprTW59c1VjKmRVQl12Pj5nSDFkK1pCPmQqIWwhajxIZ3JvIiFyJUlUQSFMfStgWWpPYCR3Sjg8I3B1QWIqfXJWMShrLzEodyNuPzFuaCYiV2B4WGs3YypKaENDIUM1Wn5tQnpzME1TW3RwY0AwPXEqaEdWNjA/'@; put 'RT1JSTY+Wi4oQ1hDOiUjQ2NyKyEoVShaeVd0c1lsQCw4LDZbYlM2UDFWPFc+VVBSWShRWmxGbjlAVno/e1JTe2NUY0ttdjcvVnpYKWEmOCFiUU1fZzkpJXVYWX4mRiRDUTdfQzxSX1h3clJ0WVNERXM0UjQxQ1B4WEdkWVl9YkZCMjgoP3RBRDc5OWk6S19CeTRaeVlmUnhYR08xUUVQcV09bGQ8'@; put 'JDV7OStnWjs7TWhySnkiR2YoY2B+YiZDZGA5Y0YlL0J9KiZjK1cqbzl2NFE+a0N7ZzZeL0tKfmVsZSJmPWNiKHshblg7MjlfN05iY2EoXXI7fTpLSWwpRX47NWV9aV5xaWI2M3lXZ0V7YVg3SCJzT0BINVVVWExXMVlGSzdbfmAlOXRgPU4lOWo8cCwmS3xnYVZUUzVzKjg2e29sOyUjPDJjYiJb'@; put 'XTwoMUhfZWZQbTslNHhHensoTThFPGd7Rk5kTGRaIWRTamUyJl0sUEVZSX1TdWNxIns8U0MjSDJMYVlednhYTV53V19dQFEvTE1bJDsuPnY4dGR3cUtjPnY/QjN7Rz9FaXNxZU9DMCQhZVtnTllvaFhYOVlIbnVVd1JyVGEpZ3UmLlVKMXlaP1NoQ2t6Uy88REdnM3IhLHdeNkM6cSxGXnQub0w7'@; put 'WEkmcnRJJDFibzN1ZFJaZjNZIykqYj4zNiVjUXNeVXYsLiZwdiNDeDxDbFBtMDxnVEZNQG9IPEB3dU98b1dWLHhiMlBdUilZKlNbJWZCdlgmLls5e11wejYyKkxEKixwb3lkYnVQXU16djsmJjtbelpzJH1NMz0pIVc1a2RDeEJySCZ0I1B4KmJXOiUpR0sxXm9mW0B5e080VH5HPV4hYG80PzxZ'@; put 'bDNrV25sR3FuWXcyTVdfTzE7WWNzZlZ6dz0qWVptM3l5PnFgRipZVW93dnc6KjhhZypUeHtIK1pxUmM6ImdlPj5sOSNgV01US010ezVQdWpLOS86NyNjZFhOSlpUbCVoUmphTXV8bFFFPlZRR208dytNXVlrK0Ewajx8YHYkJFo4bTs7eEpyLmhIcWIhJXRaIl1ofUBPQ3BpSWw+UyhddmsjQW1K'@; put 'akdLWjpzJUZediVNUT9fOjVwTXtYamh4Pndxck9tQzU6NHhMYmohaTxbbTpOXlBjcXM1MDhaZUdya1NoeTsoSnFMM0l+cXMzSVtQMmk0NEJUXTIuQV4uS146Ly9gVzAvOiM1X2diPmNdVnB3L1VhKldecTZ0PkE2W05JSzY/QDFSY1QxTGswRX0rNUAldT1gTmAwZjBrZ1E6PnpHYVkzN2VTUWZ3'@; put 'VmRJVHZkW1ROUXgmN2VCVEMwa3F+ZzwyLl9OIzxAIXFmL2dnXTAuQnwwTXBvQi4wIVhvaiUhT2ZQdkBQM35xb2ApfCVzWV1ENTpSYy9tI3NTVVNhREUvbWtOYzw2YVFGQGxKeVAxKEAsZ2M8ZXVtb1JAdkp5LCI9fE00TEZwMmdrMDdKKlcsPSQxZjxsby9pXmhUY3AkTkl5clFrZ0Z2US9UeGVP'@; put 'cWJoZ0I6XjAreylOI0JCMXd7SSpTaWQ8WzxyVE1FSSxtNUk0TitvNl5uaHdjdDFQPFkxNGRoeEFEbj9tP2dwQSNCOlROJiM6L3VrKS9NVEw5WD4hJUYzVzBuajVqZltBWkVbPEc/Z14qeildU3ZmYERqQFUkcmFobERyMEpgT3FYX3x1UUx9IzdgYSZKfUt2NTFHTyZ6OXhwYUpeLHhPMVFGVWw5'@; put 'OUsobChRIXlbLnBaSF1yQVVUSll5e2ZUYSZbfFIhclJ0NnY1MUdrUm5nLmd4aG5gZyYraUo0JDFBNT9AJXxNMUwmV3loLGdXaXRdUiI5Nl0rTXJJaWc1UGtva2gpL016QjFdbiJ8OiQvITd6XVVUYlllR3JrU0hTJGs3WClYLFlkPnh3MG9jez5sIm19Z3FjcUJwL2J2cnZ2Vi5wWWI9K2BZYkAo'@; put 'MU9fV0pNXnI3SyJwcz1Rcmh7JkBJPUx1TCgyamosK0MzTTxRVW1mSls9W2tSI1l8Z3VaP31UV14mOkVjTlNZR3lvKFVNYUZfQGhWKk5VanRLMHFFK0E5PFdXeT55cD0lUVskZFNKTXdbJDdldi9hUzwqOlRtSTI0P1kmOFEoaXV6ZWBdaUVrSiZEYVNiQ3RZL1JncCxGYSpLcSE5Q2hDKStDd2sk'@; put 'fVdFYWRCNjZBd2p0YVozZnFZempUWkByeDJJJHk7KD1qQEprdkdoXi9qYk5yPkxAb3VVK2AhcGokLGxdKXNtcGJsaiNOYTdxPzZ3PSlrX3BRSFQwaXhDeFQ7JHFpM2FOd156XnxgVCR5antQZFh7Z3sjKTtBdXwwIiMoajtMI1ZQNUhuI2h2aFhqbzU4TStAK2I6SHc1PlEsPUA2JmJ1WSIudnpf'@; put 'Wm8pKUlPbU5oSXxzVnA+bXt+e3JiQypPaCRfWiVAeHhHW29aRzV3JXM+M3VWdDZ7Olk7eW5OLGpIZGk/IW5mX21Ob3Qhbzw2e2NyVF9mYSZFZGE9RzNraGBLYTM0RXQ7bkZdKm09aDR4OkU0WnQ2OkAick1INDtRUTJ4MUU2NGZ7SWtWe3BJVzAyeHVCQjVDZilsfjg9ITMvQGJeSzdyUDVYMTZ2'@; put 'OyJwYHc0bEw0Z2hSfTlLS0pZPjxHfT8wSSwuJih3RD04JnZHW118bSNlO1R6R3t6cGdPOX5QWTFJKGw7eyp4PEl5PmBDS2ZqNCozaDNnUzFfY1VyXi4maUA9Pz1kTihkTXBPbmFORDk6JU0+fStkRFo+PGpPPlhTRSMqbnZTMkFfQXRPZk1qeSMxempKTk9OeWE8ODhFKDFzcnFaZ2shVExxQFU7'@; put 'Wl5fcWZeR0ZvWGp6PUQhdDdQSj9jJFlneHZPMGRQdj5bRV0zaXdFQEg8O2Q+KClOUHgoOWJrLkFEI1ZhTXhWUyMyU1glOT0kQEV8XkpRQCspcG9FSGg9fXk2YmdxfnZJai4pfT9mWlR8V1ZNVXhSKld3KEN0SG93IVdbP0RVQShoQ2ZQRG0+bj4hfio2TDRgW3k6KClpPUNDOl02Q09wNGdnQTZD'@; put 'OHNKcHlVZUwrPj07KUhuVDFyRU5GbiUoXVEqe21tViVefEV0M2sjfTRLYzRmQWo3ajQkblo0RU9NVTpXOT45czpta3FbNk1OamhPbTpXZkkjXjN7dygmeHVSLjFqNC8yPSwpfEElRmAqMUlGUmZbKiN5WnNHeWVCSjErZ0ZvfD1DbzFWJlUhT0dgIU9lPTF3TklqPDh+MD42QkJEfkxHWUd5d3JD'@; put 'NjFjek5mTkApWlJ5PyFIMFZHTTFOWmBaT1ZVQmpML31TMElaX0lOR0cseEloQExYInw/WWVkMEtLOUMqLGcjOFNxb1h2ZUpZMTJ7IU9IaUR7bWlmN0JxWWpfNWR1SWRdZ2U8RG9UfXlKXlVVOENEcTp4amghdSsjSXEqTXdudjlwOSw7NWJRXnFEJkljMSxAUXRFXSFTZHlnNkdjNCNuS0tQN3xA'@; put 'JUF3dl8qbnVvR1ZVcFQsL35sdnZRQms/MypNdy9hYldqUjRhVz4mZzZsaltHWlJlMW95PTpQPl9OKURORXJrIyQ0a0swXngkQnJFIS5nWmE4WVJlSjciezkjIU5ESzdKSUZIUjd0YjNicDJtMipCJXF3LF1FVDtVZW8kQDkwVVkoYFYlKDA8UFVFZTVqdFRUSVchd00saUtNYVd5Uk9NK3NIMT9e'@; put 'aH5KUCtLPCxuNUtBWjdeKU1WJDVWVlNRUlpUIWN8KkVtV0skQmohNyFdaXRYLFVYOVJBblhZMWJ3S1oySzdfQ3Q2W1pRWl11VlssR3kxMHVSQTJYbThsWTBxUk1hQVNCMlElP1p1N3lpSntwZWR0S10qPS5hPnRaXXdNTFFCSHpePUtDR11mZG42UVA8VTM3STBqUTBVNkVoWT4zQ0RDXWxTd1pJ'@; put 'e1d4R3tXb1E3P3oiPjhqTXswZD53R3okYD1+emkmW00zVmA7RGdrWSJANHVxa25rU1VHTXdbN3VGXnpzP00kQFhEVjF0R3lTUjl7VUZbXz1pImV5QW5UNVN4KmNob1UqeVBYWFp3fnlWKW00WCs9NmlfO3EmZzlaSS5FQl4mKEByUUZbIyZrPlRETT83dFFXbCFLSyNxUnQ9PSQxUnt5JG0sRUhw'@; put 'bSxQfGswJCsjIlRzTFFOfCRPOmIhdSV5YmtUQG0wdjROaExFUjx4IXlsKEtLQEwyV35ePixUS0BxYFtSPUJqVlUrKVR0RCZAfU5RZWI7RGdpKWVoS2JRaz92M3JyUClFJjRmdzQ7Wlo2WFVpIk1jYFs6bXJuc1pwSzVhJlBsIWdpeSVKSXp4OilSZ2lDRGY5IU5qKGxGX21TU0RUeGJISFY7MVBA'@; put 'JDhGKj0/WDdhMX1AZnlQPmp0fXYueHc5UCY9e3IhbSg/Tn5DeFF5PU8+dGN4bW5qZXdwfkpjTigrVlAlP0IvRCNIVXpyPSReWn1OWlZGMEdYKz40KV0+NVkwVD1kLnlZdm0/PFRXIj16P2hsMS5gO29VbndARmhLezsqWkhWJkc0MlVRSyVuXktbbCYiRE43MH5MJUlmVl52Wi8kfDkvVHQuQmJB'@; put 'ZjgoJGx1YWIkX3wvbDJtLy9rR0t8WyQvWVohWThXYEd8b0AjbnlRe0RRYXppc1peZDtwLFA5WCJZU3dERFgyIklWd2xOSlk2WXtrVHdqXn5vPlJKWWwsZkxjJllzKTJBSDNxSD1VWHlgS055MykzPy4uJV80cn55eGgjamt5bTp1X01ENWFDP3EkREZuQnIrPGJGMzZFbTNGO2JjT0xGN1g1PjJl'@; put 'N0s0ZVJgVF5DelpxcTIhS1taRi5CWzczNTdneiN+T3tHYFIjUnxKP1twbSxHc3YucHtVSDROeSlgXyNVS2heXyNgR1s1cWp1IT93Yz58dGg8UEh9R1VAR11CWzkhKihCcDBRYjxMaHZ7PVZsRUAvWVlLWDNfaHV8YToqeXs8NFFHZ1FHOWZVWT5uaWp7RixwaUdIXXk6VV04TkAmWChsbTo1LjJb'@; put 'RjRHVV9CMUVeM2lgWmd4QmwpQ0VbJHdnVmlSQzYqTUJNYDhJX2g7RnV2cntEWTIqTXhzZkBxdmZ3U3tANGAzWihaIyFwNWQjWmc/SXZnOVJ6KmRbInIwYV54UU9fMF91dyVRWlQ1WlQvNixOYEUwa3B1W3B9QzYjendHdjl3cVd0Y3FaQGZ2P31uYlU7Zi9eSSNhZCM/JSIrfXZUK0hvO3RYW0ZW'@; put 'ZV5bZkBTYko3U3tZdHhmYDJfVGBbKTxnTix3fThVO3QiPHtYVSskTlcvSDhgQDJ7THxMOWcwUngwfT1ad2J4KWgxJVdlRENhV2QvLmM4VXkvTC5ZKFNaMmh4cXleLC9GMTNGNmpqLCtfNXI5ei44OTdvK1lTLj8qTXdQK05OUlB7OHYuRVgrbm0+JkJ1MzhjZzQ/VkAhbCpbISpwe21+Sj9zYl48'@; put 'IVo9cH4hJUp+cVl6QHV6ckAxQCx5RndoPldSWTp5M31UPT18YVU3KyVSel8zIWxeYD8ybTg6WGp2USlYW3Q0NnZGWHFwezU9UitlSTdjZ1lFJTpJWXdLK2g9JiFiODM8SkMmYyZXOXtwbHEmPyJeYzY5d0tyP34zKHxdbipjeHpyWzJ5fTxbOT51dXFYP1NdUDQvVTd7MEZnX0hraFFbdWgjbDpa'@; put 'PX18ZU1AayYoQ2tfJEVoNStiaVt1NCtlVXtpZEFNOkVSPCkjU2wwOl9icnswOFF6PWdwfHIqXjxBTCNIOXw6Sz06cFJgeWhbU3JvM344KDE2O11uXjBBbjRzZywzY24+ey9PIyk6QWE+Q0NxKmF4Sjl8T29KfTB5TH1gXlRKYWJNSXE/MUxUM3FvUX0qNng5di4sVk47P05gRFUjXU53NGU+YEFW'@; put 'ZzlpRVhsLlgmVWYyeiptW05MYFQsQz5+RFhwQHdjS05YdnM4dmpdJHYvKS9HRCgiZjFHKV4yfkBnbnxTeXs5aUwyQyZZUnEsbz0sUCszWSY5ODgmc29QYShPNis2ZWlSZkZGXUMzSXN1VnoqL29iMDNfMk0mRVpvXmE6OVcmaVY3Sn03SmZGZXRhRiF3a20+dURPVTkmRmA1QkNKSWAmbzcvS25S'@; put 'bn5lYXI0ejUpfkRjaCxvSmdCay9kXj1zKyF2c1YmalUlPDNEel0kPnIpQ0ViTG55Xl19O09LOjtqXiQ3RyNBQ0IvTCp7Qih1Q31ydlNhRTVAK0BxPSV5LjpNPnFGZ2w9VD4jaTtCfEhoJG5hej8wcmZ8WCw4N1Z6Z0dOeTx5Qi5YfGt2QTkhcytgLlMvXVZyNDAiNTZoeSNWXl9EMzw3UllAXz1T'@; put 'dHJ1WlojXm05eE8lS3VuNEMkOGddKjZbRihCeWxYLFtDOGw/PnsvcyJBT2FSNFZbMyt1WHs7VkNQamhOYEhDYWZSQyV2YVsvdT50dj9HRzhvL2NRb0dyVmZ2K295VEQiTzIjW3xrSGZxPSUvTW5uTHtwfTQ7TF9XY1Y2eT9LTC4rV0QiT1Q0QUdETWkzUyZYIyg7U1ZQR3N5YEc7O3FNe106O24z'@; put 'PEs4LDlqVVpicmJ6cGQjPCNDcEI+Qz1VX306JVMyQipEcTBqSWt8bW1xQC9yNSpKViN8Yy8uUiYsZ3lGVTdLbmxMREdFNWpPKm4kPGBLXTtHPWtHWVE3e0Z6bXp8dzg8QmdjbG4/OGJLK10mU2w9UCQ3XVNkYF8zM3EkbjxOfTllRltHKWAjcD8mKDR7KXkmTFZia3UxME59R2goL0R9cCQleXIw'@; put 'WV5DJSkvNltvKDwlOSVBVzs1bSRNaV9ZMTVlZTdzYzVtXWp8PHkhOz91NFQifVZwQih2a0IpYzVaJEt2VDtML0k3XTFEK25jKm8vYnZmdHIwR1JtTHlEW1V4Xl4sVDxSR0RxPmJZdVhCZEZyTUlfb1Q5I1MmMUVQT2pbNXche0MmX05NVXJQUiZ7aGs/Ki5XSGpxRT5QV3tZSTc6WWxZUWZda1cq'@; put 'V0gjK3hTRGN3P2RwT3dMWFZ1fTx2P2RwZlY3cE5sZ1skNC5TUnN6MkFDV3FgdCl1bXplU3pWQHJufGVaW3FOaTokMVVlflZhXkR+JmMpYjQkRClDaiopcGZANGQ9TmYzfHo9Pj5CZndCKjddNT93SStPQFlvYlUsUStSPixffEd8PiJ8V3NbZH5iX3F+I3xNSHxhOVhNdGpLXmImc1E8eGFHJlhE'@; put 'YzdgMGt0PnNfakdsN0E2c19Ham02fFUkTlBleSQiPE9sQVZFNUYuQVZ3aVFHaWsrLzZ4OXBuV0hHLGc/JWc5MCZ3UkU6ang8VSF6SGM/WXglU0cpPWNec3dvTEJfSER7VEpOOGFBZCkkQXBHaj1gKW8/WWA9VzoifHU+fXpbKDY1dTNKJW41cn1JeXRbI3giTXhdNXdgWyk9Kkl6JmB6KHhCcGRf'@; put 'MVo9QCRgOFlgJXdSaF5ueiw3Un44O1ZXYHRKXTJ3VGFBZGhaX3BHalN7dlt1MGgzeGRoaztVW3xeOldXYDNyY0R7bHQpU0J3YTtZKjY6cn03SSR6ZzlDdz1sTmB2W1AlOU55ZCpATkRYfUhQazlscU5CWWNiPkx7X28iPWx0dTBYMUIqN11hKVQkYF1aM1pWQThDXj9HPXFlTVtkND59ejVMOkBX'@; put 'RiZHaFFJY2QmPElzSFlGLitOQWIlSzZ0MjFsK2F2NVNhUi5Ba0VBKmguR0J0d0QoTWdjODQmaTh2TklOYmgiRSJiTFJlflFNTVZEPGlfQyVJV1hMQkFBQUFBQTVGQUF3Z1BjIVlnJn5yJSlRdjg9fnJfVG84NSFBd2pfUjlaejVdbyNKPDpqNStCc2I+ODNzTiV9NUxrS3k6Pl9tR21QIyZYejFE'@; put 'TCp2PX1lUytfTDNAWTdIeTAsISFCbyE9YiMxT1AwMFEyaUZoVGF4L1pfUXMqMltoM3thKClKUUhuaX5Xb3toLDM4R3BTczBnKlQ4PzQrOn41KyIwYEIsLCR4ZHhAY0t2fWAwWUdyOlUxXmJDTjBubHpjanhkOGhJbDwySUFbXjwlITddciVOc2BpJCpUKEpNeXB5KCw9NytuQiVxVywmMUJRdn55'@; put 'Q2BHbVFIP3dYfjxJQjhqUnJYIng4fko+VENqUDd+K3gkM2cyNCYhdlorUE87KjtOVyVoVHdQbXNWYlBsTkA2XnkxZEFRKGlmK3RgLDExckdCdjg5U3xzcFoyVWxnfFArQilNSjBHRFQ7cWRrZjVDTDJNclhjdzZvfDlVO3FBUktjYlk7a1F1S0A/PXN8WEdhQislUT0zYXFhU3FheGN8fjFdI3Ip'@; put 'OTo+Ln5RKUYzZyN+Y3FSTF1FemRxT0ZLQ05zKHcrUzw5LnlBUyUwQCR1LjlTdjh3WWYoKU5QbyNqc0osdmU0QmltKCRXOFE/c29sS0U2XUcxVyFUe1NBRFA3OGwvKDdEZW1WKilyWCRqTjJGajxHSzBMZz4uZHhKImVSd3gwK3ZIVEtGTFImQ29fLG5DWWQ4a3BMMVchS2Jnb3xiUklXbSYrMUpv'@; put 'K1FJYjRrJlFpbUs0UGIsTjhDdnc6c11lWz5LSlpRJEdJJjtKcTlTMFlTa3NlZHxnZ0hpVClGPjIzJD19Q18lczJlOSJ+b2l6IVVedmt+aytUKkJ8NjpmVXByXWUlc2JHRGdfenVBJHFLW0B8TVVIL0FxPWdRSnoreX4lXTFYOTs5e3tnND87XkdUem04SnJPYHZ7RmZfX1ZzLnd0VlglUls9a01L'@; put 'TUd+Mm1kekNQWUVyIU1+ZGYkd3BVXWw2U1NmLEUlIkE0YFVLSHghQikoUTomNVtsW0FZaDtVUExNYjJNLjhhXkFCP3NSYFFpSn42T21eay5DPEF7TEsraWs3TSRUSmZsa0c0JGtwR2hjU1grOWE+ckdoMzM7bDxVaUxudDtTQGpkOi99QDgpPmQ2dikvN3xzIWZyLiFYN3YkeDdHRXksVyZCTFIm'@; put 'al5VZURDZCU/KWt4fGlSSksoOkVjU1BFMXh+SjtMNihFYF5oKXcqTik+UE9pXlJHfnJPZS5JeClIcXAybC9NIW9zbztZZlBNW3A3Qzg7RTJsRnB6ZCFXVG9pXj08ZWkwNT1QbC93blVZe0U/c2RkemR0Y3B0d3c+bGJ0VmclbG44UF0qPDFoKnFKLC97KylLVGVuK11wXV0uZUJlbnxRJDlwbSFf'@; put 'K2BuU2hmRTZTaTA0bnJNZiQzamE3PGRMfDd2OkFgblFFUDpifnJbYGRsJTlZPlAkI05JXkQsQW1kOTJqKmpKT3FpZ3pgQHx5UFBnOjpPVHs5OGpGSG1XPD10Lks3JE5oOSRDTnlNbTpHcXBAMFdUKj9NJiVqdj9tMGJdTUBZaVkyMExCbzZJISNAWnBRYHFbYF8iYTZgOXtpKjNLOy9SQE1CL3NA'@; put 'ZE06SW07eVtFJipSTH1ybUF8RyIiJDpLOUIoRDxPP2cpeD9yJUZrNEQsWGUuVFteR3JoUlZaeDYlIW4vQmVdM3wqJEFLJEAzWCpJY3hkSCs8flBjaHx5KDx9dER0ZzpdRUVOYXIpamdiTnYlNVk6XUU8YmsvUmkzKm1odCN5aDZGIixfOUdsfT5WREh9anJkcXwlW05vdEpIIlBbTUdXU0FUaUR0'@; put 'RTV8TDdvWHx6UlB2NGJ3VGAkM0hNfFM1UklPZnxWRF9ZIVkuJGJ2c3oyfXYqbHtKMlo4a2ZLZEZNY3IyRTtXQnh8WnhufDgmTyM6aSpSMDMlSkszODokS3N2T194bltlYCtpJkluW3dRZ0JzNSNDKkRLdEsvVFdJNSpqV3JhO2FeYmVbVTErenZfVFsyV1ZgL25uU2N4YnRkLG52bUZve0FALC9V'@; put 'O2hPW2o9aiRYcDYlbE5FQX1zZDJbL1djJWh9KSloYUJlYHtpc0JiYm9KemtFa1hSeWhlJF1JXipTfnFleXVJQ2ExeGNDKVlFPmV0cG1+el1JbytbIm4uWjE9VU5+VWB6VSQrPkpeREg5YUkzS3R9fWkyMk1jNUIwd1o1dWdtP3BWW157THp7Kz4ufm4/bEVVe3RMOzhKW0tgJjhkPVUxXj0/bS9W'@; put 'LDw8cUVNYyl6Vz9pPSVkIno6TDBCaTpWWVU6OXxGUUY4NExnNlRHRGlVczJxJnt4JEFhVn5LRjguOzRWMk1GbEZPPkNQZU0/VW55KnEzZFpycE18WjArR3tCW2goPSxANER8UWl1QE5TKSFFaSNXJH1IaXZAaHpYOH5bUkIlVDs1WWlMRjRrTGU6MVZTI3ZZSypUK0MpdU1JKEUsSjBEakMpP2Vx'@; put 'ZV9WalQ+fCQyLDBvbyxueS5PYVEzOWUsPW9JaSElYEkoWGs2az5lJm5qLEpNMlo/cklFMGF1QDpwSioqVGxMd2QwMH4/KnNrKS9lRUNGaD8+TDU4IkdFKERAdG1JYVdnMF46dClSazEzeHw7S255S1ldRD9dSmZ1TCJ+ODJKNSwlIm1UUTBNVXlGNHlRcGZ5JEIqQiM+Nj0hP0MyeHl1RF5LVzRp'@; put 'KVVofjhdbClYJEZbWVtBdyksOjc/RWE9fn56R1kqS2FyZnRxVXJVfW1CQ2E0bWB4Zz1VRWlxLm5OQEE8ViQhIyk3V284TWhMeHdBQkhPNil1YVJ3PlBERCUsMSNsME9ZV3UqOTR7bGtdMFpoImUxTkZ7YzdtcjFTaDBwPig1VnxdPSIhdlp5P01NaVckOU89WyJhLkxXSWczcG8rKzw2PXMmY0J5'@; put 'RjdNbDNMNGIyd2cmSVEwPDA7XiswbzZoImRIQ0dTMUZKKFdYfV5GIzEqJWYqZHM2b1FsRF1DYmhTKjNLdDl0TXZWQ3leayZfWW16Y08iaVIqMXhpYWMwVlBdVmZafnxvOkJ2PDghSlVndDplb3tDJl1dU0g1VmtCY0VQfDspPVsvIU9SWW5QdTBbMHB6ZC89WXhfa3w5UFcuRGpNdmhgI2ZtbCJn'@; put 'RkRfdmFjVixHfk1CNEQsK1BvbDhaQHRjQz80fih8NUNXRDNFN1sjVzNKJUB3Qj1ZdjcySkIqUywqQkFYNWRSaHtCI1UpNlRFVFVaO3pqNCpLRFV8bkI3MWt8Ni8qY1dZMU5jIVJlb2grbClwQ29TUj9OZ21lWXgxTlR0QiU0fTRqdlJ0KioxKlolIlgrX1l3VltNS0BLUUp5Tn5gNCE4dzU9M2ok'@; put 'YDU3R09FeHloQXU6Mnd5e2t9UUFrQkdNfFpUSFF6MXJAQH1zflp4VWZiV3goe2NGW3Ysa1V8fDghcihzRW5Kd1JER3tIXmJ6NHpNTmlpM054RUlQTmYzb1NpS25NJGFiZXlkZW1SY1o3VmFqfm9+JEklTHoxZm9hWzxudi85VUBObHpEJGc8czg+NkRiYVhiWnJxOll0LndmfG1DX0RCJFc1W3gy'@; put 'YDg+cFVDT2R0TzJpNDZzcCpRUlBWKSRSRVYiR3wkYEk2YTtPPyE7dW5vZTFsSGlTUS9dUX4oYFJjLHAyMzIpa009M0JzdCpUTVgkMCxUSTNralthUFQyRFNHK3wvPj1aX0dRZUAhJXZTTyI8Rlp6I2YjIVdzMDpXSmlBeTV3VU5vPmhXaGM3dUEsWFBBUXB3RDF8Lm0wZ1d4cSkoNXN6PyN+X2ZZ'@; put 'NH0peigmNSNyVHNxPkY7KjBhXmUvQ2RRLi5gVVhZWUxUUTYxU0o9PTBZQ0E9O1d5TCs/MVVTWkVkYlgjRnlJN1I9PlR5fk4kfT1UIWpeNzlFdV08UmorOlR8ZSo2RFVPSjl2TF9SUCVJJSFqOmFSRE01PE5Ya2VlK0grRT4zaF4zWWdOb2pgPV0uWGZqc2EpemkjeFEiTlgsMkovMGxzeF94V2Jw'@; put 'Uld9YXZ5MnZiQmFTKyR8SXsxZylwTzB9JHcwYXs9cStAYEloWmNIL2RROjZqUW1YdyJrdXUhIlU/Vig1MUMuYiNudFhpeUImIikuJlMwNkc7fDIoYGYwI2RzOngsbkBBe14wY1Z+KSl8XnxCIW5WTEQsOCo0dVFwMjp8bkVzbmg1NXVFdGJgP1swcnR5aHcva3UrMCR2NlFiLFMqaiNDQTNjYDl1'@; put 'TDoibmJ2JkRmWyNFQTchbClDMjhufHk7bF1xSiU+UywrSiklW3Z6XyFITDJgfE0+XT91Wn57flZRPD1xIyx+Yz1fdURlOTd0W2AoZ3J2LDAmUzt2UW5JOl0xdTh+KVJ5fkUkeF1rM0A4L0U+Q1JjOSw/PXtKRF5VU0UlbkttYWsibiM1U19LVE50YF1iVyo+cyNANzlYOmFhM15QTGoucVd7RWFs'@; put 'aVV3Klg4NE40YCJfQHZPbSkkSHA8aGpfdFgzfDR+VmwxRl1xNntgRVMsWGVaQU94NklNWkFKfXRJRCR8eUZBOnM8dlBtcFlzeVlUWFV4OiUwYV4jVVVUcGxzYH1TXXB6djpUbnZLWWZQX1JYRztldnV0Xms0b1clbSJ2THt7aDliLn5sKElOJnRoXS82TWg9LnJ+Rl5jWWpJY2U/JHlKJi5kOmpP'@; put 'cDh3WkxHTTV7RXUvbHhCWWgufEN1MW4pcms3Ol4zeXo1RmZSRiJtQSZ2RDh9TnVwbHVffCJOTXJvcnRhUDpFMDEqSGpaMTByYCR+PWpDeiJzK1VlPzIjR2hAaTlPIWc1VkVzcH5tKktKKXphXkNRQ3BQbzhmZGw8aVRWLDxxTEZySDAjRDZFMzBUP2VUZE4hMG5vTk9ibHpCbUNYQHJ4fHR7NG44'@; put 'I3NLTThkUTsoP2QlJStFYU5XVFoyfTYwOnIqSl5PPFQvfHwpdHtkYEgoaGNBR0JvKz5uNztTcUsuZGF1e1dDaTl8XWVZKX0uJSY1MT1XVmdyXm1OZE0jSFssRDZDQHgyfXUsVSw5Ijc3TEFVQS5QSXVbfihqcyIzcTRsQXdjPy94UndufVpCbmB2U09vcG07KiR3MXRzQTUjblRHalBiYWIpcTEk'@; put 'RCImUD83KDhCWVtKUmc1dSJNUCE7KVJuJUZpUn1nW1EhVW11VzIvKksrVkIiWTpENi9adk8oaTA1N3JzdTdkNkopNkBVPXpPTDdHR0skMVguV3M4bjpZYUVkNWl1VGB0ZnFQbX1iRXJKQ1FVVDMzNnxBYDZ+ZywpLEZ4LilTdUZnWzlXYyVDfHQ8PSVGNGNpYiw3V0NvQUJJe0tIZSgwRCspdDJ7'@; put 'eDNAKFoyVnJlIW9YT2Q1MjcuUDMje08lVFNiRj9Ye2Vwa3NuMiheJFQxWFRoflhscDw2W35tKzFCL0pKKWF4bU9OYkBdYSRyRFc9L34sX19OclA6ZDtPUE84V3AyWip7eGJqMmo7JS5oNHVoMF9paSVoS1JrISkjNndFe0ZfbFNPdzhVcW9VcmNaU0ZeKFpyR006Rip8TkB9TDpeIVhubnNmUCss'@; put 'aHkrOXEuVmdxSGBWRzVtLlhbSmxYUWNbLE1HaTVUanpsQiJeTmw7Ulc7fD4xPSNmcHpXb2xMSChnW21GVyN5e1FhXyVSMHRxcUEzfi9uWTBfMiorT3YuN2JQLDYhTFZXNEUzUFQiUnNpSlF0Q243OSNoXihPKFg0c1V+KHYwUGBKbFViemJTQWZuUEVFPEYuV3t5el56NTtBaVoyTkh2KS9ZNElI'@; put 'U3tUX3VeRiN8YVd5aC8yfWBvdyorIWMqZSJbVFBnTlA1MHZkUSpMO2xFSGVgeEJ+K1ZVaHFXd1l1V2ZAcGwhaFdrIUozfW4mJWMxQG8zeWtfPW89I1R1dV9OLnNubUxRQFgyR3NbcDpaKyskXjNGZG5vdXlvfFJpWVY5TmFTRiNZK1VSWyZRJDhRTkt0aytrcGhEfWRncHk6Tm5TXUNsZWghOVZb'@; put 'KDw/KX1QME9EOF86Z1AjNmpJU0pqJStge0FHaWVMTDdqWmFebFZ6O2diMksmUi8+Z3AxOXVNOGkhSTo9N2dtU3cpKjJoeWFvNC9JPSNdRFB7aTMqU3ZnUDo2bzNqbnNhSCRkaz1JMnIlXT1AIk5hXV0uKUV5dGNxKzk1UT0iXkB5TkBVS0tiblhpY11qS0N+emxjcHZtIXo5VlEwNFY0YFIiQXxt'@; put 'SWt9SXw9bCxGY0l4MVhkajlIY3Q5bV1pYE4sMzphWEgxdDJIJEZXNF1pKShrYTxsRF1wO28vWy5xeFF9e2pxbW8rNVpCVF9VP2FENW4wKD93M2goZHUieG5ZZ3lRJHU/T3ArSlorVmpaKk1sRiFZST95dkwmVDxCZUVDOk4mb013Nz1UMFZiQ203P1hQXmgmKEZdVllDcHlfOD1UXURfYS8iJk5d'@; put 'ITA/dVJSeTM1aUF9TWppeU8kL0lySmcwYlsuI0YieSUxakNCYkZwelgzVFB2U0Z1UCZ3OEg4YHcmME4jX2FPPUxRYSFEajFxOnBLUipzYkZ8VmNGN01jPWtXWHZEN00vLyp8YVBzYj5vVj96YFJCUEszKWU+O2NdNXB6TS84N1IkMGtZPEl+WzY0ZVspXWssX25GcyElNG8uS0ZeNC8pbTNNaXRv'@; put 'W1t2Tkw3dSI8bTZhIj8vViQwcGRdb3tmdEpdXUUoe0QiViVdMHNrJTg8TUAhbnBkV0B+RnNPV1NsKiJZIlQyd1A1QUQ7PlE/a1RVZFNxZkZtVXVJdDFAeElKfGZiO2Z2WH5QZnBXX2tQYl1xTTx9KFhwJUVvaUVQYj80Y0k/QncqXXs8W3FqRDhZMCEheXhqd3AzJjJJU0NdSyxUM2Q4VDsoYFgu'@; put 'SS5ZNnRkYGRKZmROUGFwLH0yIVc/Il1YWXtxYko1STtEXVdwZm5nS0hxS1hneSxsYXRkdWJGLj12InR+OHhuSGwoIngzYEY+MjRJaWQ4bmVQIyRLUzZwbn54O3JvaXMjTz1SXWthMkFHYShqITNEP2A4RXVQSFYqKkNkRlpVbXsoWHkvIlFYMTkkbWZHXl1NTmBzb2c+bGVMZ29wdjBPOik2QlN4'@; put 'Lmp4Z113TSV1ZDs5fXxAeUVuPzJTQkFsYjpJVDYjVFAjMz9ZTlI0OEFUQmEkWmpFTkU7YGR3dyV3elJMTlBQanFLfURTYGwrPXExfHgrdkteMVFJeEE/ZTpoSUNlSi9pdUMhSy45MThmJV0qZFosJDRaclJ7UjAzLFlUSDI/R0xsaTx2RXYzJX5sXSY0Kl9XLk1HLGZ3QStvWFNuZno3QmNpSTpN'@; put 'NjExJH0/VC85RFNkfWlRREUrail0bWUlRFMsZHtIVDQ0KjJnVGtqZGZOVDRYcjlGZ2J8N2FdJnxqfkMzfk41ZTEhW0MjeH1FajhRLlVjd09VQHc1RHFobmAze3tOUW04RERPYVdMcDF2XnNtSzhkaTNBbT83V211KXlmNFtxTSkmUmJISnA2enhke1V6RXQxRXpwdns+UjdEalhiOlg3bFgjYWBN'@; put 'MjBaV0NPX3hxP0pgKVZ4VDAvSjVuVkRGIWMqUFEscn5oVWU8b19rVnFoW1BBPnpMfjpfRCx1SVZTZW1ISSY5VzczYU8mYkVQKFtpOCRTVigoSFZ6SXAkZytHJk44U2R5bTwzI2F6Z309WUZLTStFRnFybjFUQHpkZDsuampsfDVNK1FxVGM9WFtCb0ExaVg7VXFBeUBpJl02fDZje0Mrdk8sWXxF'@; put 'fD84YitfNFZDOmslL0wjNVhqNWFlQHBFMiFtU1Zsc3w0QUppbk50NHouUXF1KTlLZC86dSlMTCZ1ODMjP2pnIWdUZ3Z1YVpmUEtgSCVYcGYjNGZsYXxTMCxsKFl3MV49RShaM15qZmBQQ1BrT3hWcS56QH1fUktWdFlnVEtlLiQudkJJLChnZClgYjpdSXB7X1h8dUpOcCYuM30+M09FVCQhLyRT'@; put 'PnVydXYpbU9GT09NbEBQbkUqLil2TWhqLnJzSywsKHwub3g4cmdNLkBNTms3NiJPZSt6RUhieXtQVWx2bGZ4eTpWcCtPZiM2UDV2bi9TbDtTX2BZTXhASHROVDErZXEqb25yfC5jNXJ4aylfSjwmbVZgWlMvOUFCfnR1TE0kfmo5Y2lWNnlOVT4wUEM+UTFoOSQuR3x7KiR+Zi4pJUo8IX5RSVlf'@; put 'ODxNPXFlLE51bWtlfWRlIzw/QypEYmUlaWpvbVM+Qj58WHJbfihqdWIvan5iOEFzZnlDXkNaU2NZKlQkZyhwQiQ9V0BCVW9iIT5DdHswPzJAd0IqfUt8VmZgK1t1YU1KO3tCM01VVVlUajg4JWJvSz47dWBiKCFYXmpRJlolQEJVJU9oZUpGRFRQfXk6ZyZ7Rzp0RTJXOTJiQTt3MzVnMH11YW83'@; put 'U1VLLGQkfmtMJF5HUWk+W218bC4jX1EyRC9AbWYmMnQ8RihLSjgzdiR5MUpFN0BqaSF4VXJ7I35DfDVPPH4mVmM+VW1yZjUoRVRCMEpJZSNeaH1GSiY5U0h+LiY9QEp6QkNaflpMe3VIJGV1YkglMHFmU3JCQ3pHTzQuJV5PXSlJZUE0fkhlUyQ3XnBZaD94YVN2fWpLQ1RGPFdfOVE0WSNLJm9G'@; put 'fmQ6bFFWKXNDYmF+b1QrciFOKjlsPix8NShOWkZ4TTV2d3czY19qVVlXMXF8SFlBTGF9Iz18fXxOfDp0X2NbNSVpOmtIfV0uRC4ofFoxTVk1ZXhoUT17OnZKczF6czBpMFM3X21wdzwwZSs/Xz0xQVI8cTZmKjRxUiNmdWpBTGJlJHZdMixHb2NnWkxAQnV8Vj0uTjBWdyRhOVIpWCEyS3M7ZENE'@; put 'KlUxSEs6PUhiQ3NbZW52YjxrejJeJVE0QTUpayE9ZmcjenpeIzgpP0pAJnhmKj50YCQqWWV4PnRKUTtTKjh4N0szLGFaZ21rWE5rZCtqYzFvXXlCOEtBWXJ1aFkiOHtGKHV6VTl2TGwuTStaXSl7IyRjRTBNc3YzdDpGXUtOTltWbk1aJDA9REMmaXNiLypoZV55YjhaN11dYkkyPWt1NXUjc2k0'@; put 'IkV0IXcsLGkzOFVta256YC9zMjl1P2RRPmVdJHFRQVA2YSRUOCNpME9nV0A5UUoidmcvNF11TSVaKEUjL1V7QX56LCgscEQybVNVXyh0Ry9PV0leX2Z2Rk1kM3VDJlhyaVhkV1hUP31MUEhBLnNTOF9jRjVVZkkyYV97Yy94VmpLO3MyKGpjYFdTTFNuPzgsXjYiSi4xcGVSeyE+WV9GeyQ5dEdd'@; put 'O0JhOiQycjEqKSwpK2dKXkhUb25WPDJ5KkJ1U1dsUiJLSHRnRHpVQ31JYFVvNX5OQlhIPSl4VkliZyZUTnI1U3x6JS5gPlk6LkU+YFYqUnhXQ1p+ejtmT09YNWo9bFlTfWMzL0M2ImxsJmJafU8rNmBaWyV+OyNhPDUwNmI0KEZrUHRVRyg5KVY4MXgyZUZpfjQmSjFNV3A5LC5aTkApTEtEVSZq'@; put 'PilJNSM5S0NWcFh4SiE1eTMsMUt6XSZfbHZDNHFRMDNvc31tRTglJkpSdW41YHlAcT4pKX4iUnohPjdWR0l9fTBgfm0zWG9udWYmQG0pbChEXmksfTlKTkRyP1JVX1NRWHBfL3ZIKTN9MWdqamhGYVZmJlArVD5uY2YvIWxLb2d2LDFmPFhlI3c3Kmw2SkB9aHp7IixnenpsZXxpQnw+d2Y4YSx2'@; put 'QFJMJn1wUT1aamoleWY4alJtPFRqQzw6LHR7d04oTjhmQ0ZjL09Ie2I4PmMqQHBIJCZaInJ4b3doMk1sfDJ4Lm1nfVF1LzxgaWY1SD4iMH4kI0N8Qk8jXVcvWCFkWH5gbD1fP3pdYnZNSUYqIz90OXIxNXZ5XV8odSZMTTY9RF9BMkNPND1ZXWl4cF1PNUtib3RmXn46KFtlPkZyUEVSfDIyfng6'@; put 'JH1gdUhjL1h4e10/eCx2d2NPR0RXSHhHIUxgeFciXmF7TUpaUmd3KVMueTBtMnx0fHVfMFROITM5NHp0JUQpMiMqP15oaF1+OGFlckh7RVFMZ1Y2ZmliIiVRYz1hbVdjNiFYWWN5Z15bTjZ6UCgrM3BqUU9qaD92Oz5oQWt8W251PWYxViwrRElULmlMYihjYyVrWEFATUordGc1aFVqJEZfQG46'@; put 'Jmg0NCEyQlNyT18jZXUhXU4oQVVtU1VyVyx9fC8mJDFSRyU3U2FBSChEe08/dEZtTjlraTQhVkIvMn1LVnszdERoRSg1T197KiklRHJZTkZwZ1VTfkckVT1ncztNV1Vrc05XOWl0RDBnVDQqSTgkOns2T01Na3FuPW08PUphUzY+YUlTI2VgOTwpeSxmdn0zbWBUNUFUQVhDU2BQZmwjbT8zN1Jq'@; put 'T05LUU9LZjR0dmtaJFZqK25Gd0x0ajpiRU9+dnksUmJsaXlRRFlqSDk3VExUJjdkZjZVfk17P3xQbUZUVXAmLm05RVg1Piw/dnRvKl41YiJQTj17LjtPX0VMWSs4Xzd3UH5lXzUoblt2az5vIzVyOGhwej4rXXl4LlJJaF5ldnxmZU5jd1hReSRSIz9ZRiY4KmBZeTU6Tj5WY1F7Wihha1Z0RnRp'@; put 'KiJldEx8VnhnRmNnTEthJUcpfWpOSUl5SU0+bGx3NEJVJC4lcWI/VklmaSZkaH5FTXZ1c2kuST5LYUc5czQ6VGg+PWJUQlQvUW5bWnhwUF1deyZeNVMmakIrUnVjVWtLemQ9W11xXVhtVX12cn1dYVVdQSxneEVPJVsqaFUsKGdrRGMqajMhU1QuTEJ6PGBxeCEveT9weyZST0hMYCh1Mzohdkxs'@; put 'YnBJZjQ5c1chZWZfRXd5U0ZiT2pbJV5DaTk9MVR+LlhQMzVHTEtvQzw+YkF6UXQxNk0xQ1guSS5KU3xWWltRQyFqcWEqMk5mVFYlS0pIbTg7PSIrY0BYa1skVjNza0t3OnJoOkZGI1MzWGAlW31bJDxSZ01PTjpsP1pEYU9mZjxpXS93Z2NSQyhqaF4hdmp5WEw2V1t6eTwsJlB5ST5ZMlE4Ul1v'@; put 'NUZ5Q1NwVEVUQ3QjMGVuVylQNV5JN2U2cT0kOEc2b3tJVT5SZ3RIeypnUUdJR3hxKFVieVk/ZG4kU01LRV5lRkYoR0dYVlM0eWteYUdxJmlgT05eaHtafEEwX25DZ0pUMjBOTiV7PXlyK0J5diQ8b3Y4Li9TQ2F2XjRgWnYmYUBpS3koMlkqPlo+ND9icWxqaXgkeiJrWiVUI1Z9XiYyYWUzfVZI'@; put 'JFtEWzpvb3pGSFR8czlNRGt5dEokbGRkPHFvTjZORF1mfU14dGt2YUI2bkRqNC9tLi44bFArIkBeVkBmbkpvMnledU9URCR4c0hJXn5CJF9UbF0kSDBhZGo+bzVpV05sO21+S1BZWm1NUzJBMjJDZW5NMTYzPzAlMyt5ekt8NlkxL2xhKERVPjUqOk90MEhQMSZuNj5zZ3pGfU1nKEJVXmVBRDg/'@; put 'PVt6YzEiKktmMyRDKXRbbjtoclQmV1ZEfCk0b3ZVV0hIekYkYndJcm03MjheVUkiRSN9YndpWGclW3NWMnNSdEh3OiZ9MS4xK3RGc1chME5GcCQqWDowJlYvaE1fTVNKZzY9Q2o/czE8Z1RXKW5MRChYTEE3NGRTRDx7fDFScUFsQyU/KFRJUCQ/YFp+NXEpZ18hUVdqUk5gW2RxMTgvSXh6RVky'@; put 'Yyg9KUpMTmtBQil+V3Q1YXFvfGtLe0x6MXooMDs7LjI9Z218Yl8hWE9vJG89aEQiezMsMyF8bH58ZSUvPSRFX1c+dl4qMkNXdWV5RiQiZz1RTHB4cUU0TlZIX0BWNlFuIW5rNmF3RFc7Y3huOyZ1PVRPLmA3TSxlM2ojfDo/Oy8icjZ2QjU+Il1ncVdHTHEsNmp9JlNgUktfQWFLWXVjZ2JBPWNq'@; put 'cnspU3xzZjJJNy5tdXl9R0tEIXpaWC5ENFVDen4+NnRiJDZPKUEycy9eST8oKC5SWTUiPEMhNm57S217Ik9wZnNRcWpBX2g8azheZVdxJSopJH1EcSFiQnJ5azg1dGd9N3h1dyoqZWFhNldWblpZLl9TQi5jO0wsOz9YdHE3MV4jSE9ESzNdWVJ3LD8maCtJSTk4TjQ/aFZ6STpkTSVUUlMkOnpM'@; put 'Pj4+VXIvIj4rYXdgRF5rbXc+WGYkPn1GdVc1ZnZbKWBkfCM5bmF3XU8lQFNldTomaD8rJDZgXUkpUixxeVFrYkgiQSVhajE8fSUsNzVPT30jKyZCcWRhSj1sMn5BSnVoaWUhIVB3THw1VXEuMjt4cnspTSUpNDsqbiNKTj9DeCs3XmZMaUdfWDp5SDMuW3EsNF1xM3JEKVJyX0I2cy9SQ2RtNU91'@; put 'XXE0c3leZ2Y5Z3kyT1JBWmNwWXooX1Jjd3sjUjEwK01hcGJldiE4b2RFdVJFUkBeM0Z0M208b0ZjK1JHaz89YlM/UDIoMyh4aSFvJixnUCVvVH4sb21FYmR+azN3YFdpJV0rMHBNRjVgciwrOkpdUCJbbTVxUXU/LixFaTVwbUc7Q1dWJntjNSt+XWs5U1pjWn1PMSNxYGl5bHdaN0Q9Ik9IL1Q3'@; put 'flRoI2AkPSRAZzc+T1JyWiNpT3ExMn4+Un5CPm4oe0slLFFWcSF1O3ExRl1MZW9KUG97bERNWllvNVZifnA3SExHZEA4eXhOSz59Rlgxfn5SeFtMPi5BKnhncDxpJmdITjRGV11+e3EhNnZwTVUuN3B7NHgvPjRoY0o+dEU3NWtVKjhTKVtgQDcucnVwdXt3fkpZb1Y2eF8+dWUyKkxPSV8rbCNC'@; put 'akg1ejlHZFNVR0RQfiQ9V0t7biJ1KlBCd2pzNCthaDAmJSQjQk0/ZXJMOV4jOE19SClgXzVxe2ElbytOcUxdfGYzJSw9Z34rL1dgcltMamlGWygwbjdXN2NlYDVQUW8pfDh5YDtzOzAkKG8hbldgQilWcGZINkVdfiozTSxSK2JQJWVjdGRqOHNQTDl6V1dnTkI4UHwzW05AI0FnXkFxP2prR0hR'@; put 'dS9kPUg4d0hmQC5XRSthQnJMKiJFbG5qKTlGTmtle2hDTnY8T1V5Vl1VR0NQbTFMUDB7YjN4JDMze1ZwTlZDTDYqZTF+KSRtUzVXTiRdISghfGxkQVdqfjdodVo7MU11dkw1S2x9Z158fHYxaHVBdFluJEhaQ0wzej0xKVdmTCQ6VjxdNltPTC4oNWFPW1tLXm94MEM1I3VffE8qZ3t5byUwZiQ1'@; put 'YlpyXndQZSUzM1QkRXZgQ15XMklTP0ckSTYoc0ciVSQqZkgsMnhOJV4pYlhFVEFTO2hkcyt3ZV1hW2wwVzMyQldSfSxpYlptQFlZWSpbTD1oWlVFS0ZfcCxSa2BCMnpqWXMoRmlxTHBLSjRvZD1mTHspRjttblBEeWxsUGspODZMdUVmIjRwQ1FTUFNQcDxLJD1rY2V3WkYuaTsyVFZtdzc2JTlN'@; put 'VXBrNWtgQHpoRXJaMm1DO3Ylbmw/T1F3OTAvOSZQKj4xOHlDPFBnTlspaFslX1R+VFZsTFc1ekw6KFZsanwmb0tBWz8hQ082bnMhcVZ2eSYyaTFlfVQ2MWQ2bzlmU2lYYm57VysoYForTjk2SkArUmgiQGUvTykqbnolNH1vSn5ueG8kVCwpUTdrWTEpVSgyI2V9OmE8eiYmQ09AeElafEZqa3l+'@; put 'TWBxNHR1KGNYRy92IyQlRlkkckxpdztqKX1bKXJga0Zvd1dicWokSDpeVygqUyxKciNaSE5IeXd0MH17OnFBJS5zUkREXz4kMVRBP0RDQlt5OTdYViR6OE1xVmxPLFp5cSEuQ3x8fE1PTm0qMykwKGImM29IailgTkJnIXB8YkgjcldFbmVJXzgqbmQmRkMvPDkxZD5+aWVQcSt1cGpVWXhnIiNf'@; put 'W3U8aHswWW1ldU88YD5GeGxPTG5kL3o0WTVeUTY+bWklRSZjeU01KT9BJllrTD1YN25mLiNqfX0hXl1UYjt5VGlKL24zZHhdeX57SmdpaVF3N1d1NUI4UjtdNCFhW2k6KH1DSExUT1RHYTQ0VGtJYVtCQDRyTHZkYlNxfT9HbSFVQzltUVJ6N1Mma3RIP0tYX1RGPltOJiZAMmwsJD0+dSpLIzhI'@; put 'bHZSe35NX1NQY142WnZ6O21mQ2NDVH1gaS56RjFjZFF5dVJKNHVnRDxXdSRTL3B9QE88c301bDJaYSNafmB3SCJGbT9oc0JOOE4sdzRGTlQ8enpePikzaiUpXSgwdjQuRkp2bllSYGghJXFJW1J7VUAraSRHJXRxOX1MVV5+YE8jdC9GN0RnWTE1MUdRZy9scEQmQDdzc1spXSRubEBIWVR4NV9N'@; put 'I0JMT1FHZTNdRDVVRHlqRHdXbzJvLyReXmk2KXVaO292VHFoMnZwYlRQYW1EZWgmPXwxZHpzfkNDdVFSLk5LKjlhdXpVRkhIQjJOX2JhUUNDfnkhWHA4Tml5dChwSXt7OjAkeyQoMkp9QitjNC9VJilqYDQuT2FuZmNLQFthZUJATGYmKyJDcTJAOGJ9cGwuJG9UW04/MEIzKUlFflYxMUIoSHJs'@; put 'VVh1aXdUKm8ldiJRSjVrS3dNSGVvU2ROLyo9Vnk6Wj9rUXh4OWs2e3pXITJBOnRHcjxecUVmOVNwYGl5N3UkNU0vcDQ8e20xUEtyLEUhN0VaKlg0TjtyfD1nPnxWOXhIWl8sRmFiQSNSPlNVaW9Qd0orS3Q9ZUN1OltpXmRoWTtJUD83LldhLl5KJmk0UzcqZyVFNEE9LEV6NnQzZllEbE1pMl8j'@; put 'SyZXMnA8b1BJYXJOV0FHSWo7M1Jia3pQXVldMFplKlk/RX5+WG5uMnlOXW1zb0ZVODNoM1hdeG1KWmNWI2lYcjxSLnRPfUVlNy9aMER+T1g4Mk1ZMjBfblEpUHBdW2VQWmJAMiJLXzBUR1I3c3gseD18emtEfmxYbUZqYV59ZHc1TEYpcjo3IV9ZWnI8JUNLR3ZDbW1eTXlyfGVWUHlrMnhUS2s0'@; put 'ZVBRfmkhcEgvb1YxTUNJfl5zOyhle2BILip5JmBRQXFITnI7N1VuaixYWVNAVG1PPXtNXjxvalF0Y1J8WnxsL0U7UnpKWix8amEpS0NfezwmcyVDNGRIQm9YN3w6eUhybHNtbXNwVU5FeXpQYyRXcz10QUtFKCwwakkhbj5fVC45el5HMzNOeylQdkpuSG50TkdMViZybClGTXB2XW9QNGNaaS5y'@; put 'N1FGOltIR1BEfiY4T1UmTENfayt5KVg6eW43OFNrWGpfeEBkYzR4W2YrVmlDOEYle0tAK3hlNz05QD5qfS5wKyFeOjd7KENVa1taSF08aDFtdHY6Z188PEw+cHhCZTldOyMqSksiYkRGeUZ2L19uQTxPUTs/WGdaYEJ5Y1hbJjZ8ITVzYURbR3ErelNLIXsmRTJ6djRTN20qOkByOTY2Vy86MjhR'@; put 'MSU9ZGx+dTtRX2k/VV50MFRFMyhiWnsiJSgiXSlyPCxfKiJRbGFuPFY4OzczVWxsW0VzPV5iYzE7bVkvW2cldEhDRXcsazprSF1reGhPe2UmbUBHbW1Xan1TWSVofXJsYy46fGlwakR4MTxvb3lke288WnR+bmZyfFFxTnY9en46TVdgbnB6eW1RU2xlV1taNzBoK1lDdldjS0pAPWUmSFclKzEh'@; put 'STdEJWxxVzBMPjdkQGdfZTQzT1RLcnNdalQkcG90NkNYfFtdS2p1U3lmMlFjcHt8WXY+MDxPeCEsX1tPe19HNDdYPEIkPmNQcTBASGAxI009JnV0M3lWWDpxb24zQiphZk9UZVtYZyNGPihPPz9CNEIrUywsUVQ5dkxCXi9eV1tdM3pvYmp2bnJEIUh6KXg9RDt3OHRTO3w1PmY0UTdaSS9qOX5j'@; put 'fUxBZH1Zbnd0OHg/Uzt3RXZfJitdLFpjU08meVBeO3VeK282amNwXyVwRWl2UC5lNGROZT5CN3s8TXRyVkJoQ1ZtNEB6YDNuMmcvSW10SDF7cUJ1ZTkyUDEmXVtSYmg7SnFJTz03dWtdNz9NTzYscykzb1hFTkx1RUYrL2R5MStqbUdzNVhnS0JLVmNeP21sKGZ9OnBeVV4oYTM3MHsofW5KKj82'@; put 'a1lPImpqcXlaM1B3M2FjUzpXeHgyI0UvOn57YXMoTUdoVCxrfDdNUztGPjs5SV10SGY2dH5wIWU1eW9LXmU2QWBJPUNmY0ZMb3FgV3x5dm9oNFRyNGZDTjY+IygrWmNzZG1vOVBuXnhWZ2oiJE1JY3lAPnUucUYzcCFZMXkkL1YmQSxkOzFiT004UFRje3NATH1AMUBSTE8iU1ooPEdiMDY2R0pF'@; put 'SW05OUVQISNUPFouOWE4eyRXKUVeOFpEcVFwaHswdm5SekVbR04zfEc+Q25zZyw7QVtmRGomQnJiUV11bSxVd1pbeixPbXU+O119TCxALkJGcyg1ZVopeGNrUiVvRUsiRl9YU0NQJXBTP35EP3deNCJoSnZ3P3tPUC4mRnoueVgvKVZjYjRNRSJIM2V0SXJeXW5IKT1IQjx5JVcxK1h3RlZKPSM2'@; put 'I3o2SVBDSFR4JWs2dUBPZzA5bX53XVRiTTp6MT9XODk6c3U4dXRoXTw5Sms/UShIPSR5MV8+S3krVz1NU0VAX0k+UkxObWo9cihZQ14rUXF9MGRDI3xaOEZyKjxNVEx9fDJjdlFAcWA1YyNgXSozdjxmI3dzdkdNZXxyampZVCo9PWFKZitZeWRHcjxyKVlVI2xIKEVKXyZvXjtDWFslQSshdjFY'@; put 'PkU2XmlfNGluNk12Skw7ZVh8YT8vd106PGgzTXN6dEdjfmo3PEFpeTc3RWNnZVA/ZVY3fi9kPX1fcSojT0daL1lobjMlW3JEeGFAW0BubjV5MGMpfmIuUDIjZy5HOy4raDI9aGJiTU9ibU1sZCtyJFsmJklFWXJsQnRnRm98bEY5SCtsZlB5UUwhMGBkbEVEKlEsRHk7PkRqNGZnSXAyYyQzandb'@; put 'dlMoNXpjQ3YlW2luYGF3WX0kU0FMeG1RTyJFNWAiYDBYOCYoN0UiNChsMFgmOk54IyFXKEM2Nz9RV3JqTWFFfDQ1YUxmeFRVdmVFUjx0I3dLN0pwMjl5Mzd0SFAoPmY9TVUwPF1qdG97OkE0JVRaLklfVjJqRV5ke0pAYEVeNmhjUlZoJWpYc3tnZ1o9JFJRRWtAK3V2YXF1KnJddSY6alcuPiwx'@; put 'O1lFTVg0PWgxL2NyeX4kcHA3PGZIcD89aDI4YHwiRiwrVEM4IUAsO1tzM19uTn1hLz03Y2MibXUsS2xYK2QpdiU1LlNhNGUzUGp3LFElcEQuODNHMyVyVit1MUApdHIhPXUiUE9GN2V3ZlNONnFHKEZeXU5yJmQ9L0syI1lORFZ6O2JmMmh+LnM2cSZkW088cnRkcm5NYl8jPmUrZ2RuSjc/NUJy'@; put 'TldqYGhiZTA4cXJPZSt7UXxPRnd+YXU9Y0djW14pVSgvSnYxeWM5IX1pOnc7YnZVMmZYV2s3ZzF3UGJIPFNqUmlhQkMpKG4zZCV2bUlrUTN2Ql08Oko/OVNrJGpCKGxTdlReTDReaTxRNTIlanU2YzE3UGUwXzVxbjRgRlgoVTAmUiVAP3hmbUNCYyZMNX5MYGBKcThycntMbUgkV001LnlFMG5C'@; put 'NmJmMlV3ZGo5PGNdJXhUcDRHTHAjQ21VT2lgKmYoW0JeSGxtOHNPZygmTm1VdFNOTGZCUz4hUWJZRj5keyUzLmpDTTwzTDNwIjY4cDluOGp2cC5rSlhpJi4qIiQrc14rKVBXZGZmfmMmOyhnLzcvOnI3byZ0SCQ7K1ZwaD9wdFU7UDdCRlB9c3h6dUAyck1KVmtlP258X2tERTJDbDVAcHtEKGJs'@; put 'cUdITmdeaUQ1b3w0Z3tST2VgaDd1TFArQjdxeGNIYyk6W0NhVTpfLyouV0hXKVQzUFBJZGRNKjBwfWZpcVQ9azpxVn0zeCRMJX5oYVZtQF1YMVEwPGI/TFElYTZyNDlsJDZpfHY0L11lWlZUb2dsaF9IRWdYbTY6IW9uIkomfXJxaEV4enVyfiwweTBsRW5NfTE2XitJMjg+YHhnRjs9O0J4OlV0'@; put 'QFFNRyR5QG5LclBbMCpXYnNSdVBQeDsxQDIiXXUwL1JyeWx2dGw8ZUFkOC9iVHJLWGlwPkN+MTQ5ITldeWA+dXNfOytCQVgkdTlZV3F+ZnU9PnVjWiVVYWojN3EyfnFPXS5fb3RPNmFDLFJsd0dqZW9ET1BQZmspWGlEW0MweWJGV1V5T3ZQNE58Zz0jQmlkM35zQkRWPENvYiN1YXZHMkcpRSgj'@; put 'O1JwTFIvZitFVz0wclEhTDVVbz49XnFkTEB0Ol97PGVYdGw5UltfRkAremV+RyRjclAxWndQUj5hMUxCUWBPfCUyKjwofW0kaVZwKz5jYTh+SWZFWF1qIS4iV2ZYYFtEZmJFQ0AsM248X30mJl0yVmlzeSVAWCQwZnk6Z0BJRUJ8b2JkeiRzU2l9NERDIjpsPEAvQzg/KnZrN1pPdnhEOFJxblR5'@; put 'OUNUXTsmPWdHUn4oXzJ7eiRhaFlQbCMvZ0E4IUZJfHZsdjljdXclZUBvMlJBKERdU3ZnaVI3Ozs7RmcmPS5FejJjdE0sODA1VykzQ34zc2VQQF9VJnV2N0YuV34oPUUqbHsjOSlpOnF6dFFEME9iW28/XjdyeyVjaCFkSkkkW3FMTGo2VTNkPDxHZ1coTU4mcTRFVW1DPjNSWHdPTmZ1VTRNXilv'@; put 'N31IXXRdOmArPmVTPjFrSE86X0pJfHNEckl5S21RbD54diZTQjNPYGg2Jl9tWSR+P15Ge3B9SXpbNV5GNiJvWyhDajdQT3RzZmRzSkgvXzdBd2tyfUExfkZSdXpZLyxhbH5pMktFfilYJnQqMzx3X0RhXVtJOyx3VzomT0JjTSpWTWNCTUU4Ni5mWmhjbSNQQ3NfJVEqX1Yqb1o3X1RlTHZjIyxf'@; put 'aE1xTnY4VkwpdD4qaH4pXzkwezwmOiskOFE5JkQmQVNiX0dnXmExRnNTblYyKldhKytgPzUzVzR1R1kvYjN3b2c+ckN8UlFFZTg9KjYqanc5cF1aRS4kLn1ZJnluKit1bE0hZ0diaz9kelkoZ2VZdUZvY3QhdkNIYXZXP1VeWSNgcG5yYEQ/NCY0S0ZLSk1CZjxzeStoODRMTmpKWXZPSDY7VU48'@; put 'ZUorPEh3ME80LGFwJnEsKH42OWZiXkx4cHJ+YG81eEp2Rzc7eG08OU0zWC5qQ1lwNHl6enolWGtWXXc7b1AoZmMqS1dgZ3VsJTxpbUkvaDU2PzR+P1JDPGlGITR+L0l1IT5WXmg6Yk1aZ1A2Y2N8IjZHczcoPkpYM0JXPiIyaXkueVAqYSZxZF82S1t0cFhgcF1qOG9odHVlfkFqNGBoZnhwUUZf'@; put 'I2QkXjsoanZWc0pEekkrSmN3RE9fWHxDRi5+PVpjYUk0SmNkaCpHPkhXPTc6a3NCLzI5amlVTihJNm89UTM0TDxSOitgYSxFJmdTYD4pTDFaRmk7cWU2X2F8d21kR2AqKERQek1PNERMYm47W1dVW1R3cSFvPS5pS18yPEp1cUg6YzFUZVthRTYsTTZXTTV6PyFpdWZBbCg2cX47ZFREWXRRbHVx'@; put 'cXNmU2Q0OC5RfWVnWGF3PyFIJXdTWX1JQElXXSNPR0pXbEhlRzAwdzh1KUdtKDguOShNU3gmfDN3PigkJEFIcVt+NDFZNnxjN1NQYiZGfHVIYX1UXmxuRmFSYTxqWEp3R3VKMjlITUxfZkssTE5vN2RQTkhAdWdycFZKYUAvI3leYyJqVTszMGhtRWReLENQbn1WaEIufWVUR302I1ZoKEF8anlP'@; put 'dms+IjdYLE1INypJMklGdlssO2tlbl89KnVtPX1+PUdofV9obEZ5X0I5Q1svMH1zYlNAI3ZPelFjI0hVOXVzY3o+cUZEY1EhZVFUXn0vantrS01YS3U2REUvTUdOUi4xYkFlN2U0bWQiemRsQzJYfEwyTVMrLnMuKEF2MFJPNUpwXy97bGxZX2FffURJK3BkajkmPHZoL2IhR2o0TlpSN0k6Vk4v'@; put 'eFBdLmBqUztXO0FsaVk3dUs/ZEB8VExCaTlKdjspWitJQTpbe30oLzZHcWxMdXRCKipeZyV1ODBtKDRVW14vI0Z0dzxxcWskYExBKGwxU0NPa1NDIylDdUk6bGNpOElKQDJnW3ZwSkxCfiRDeTcoImsvUl1mfVh3ezwmIVlYUE9xPDJSVFk9cU1VU2AuLGFlWjpOTnQoQ2l1alRvO0FxeG1GXUh0'@; put 'PjA/SFA0WlVaSUEkZWkrTHN7THZuODJoPFcuSmBLW1MleS5LamZjOGJKIj0kTntqe3RnZTpZMTs2MytELCloOXk/eEFCTk1KTzYwQCVjKz8+RCxkbXs2cjV7SnNxWHludzU2cUJRbDRxIilESHQ6X1dfQ0VxX01oXSNveXchK1lAcVlKU2V9KVpOTThjYzx5UzdmMThZT2hPM0FFYyp2emJLS3Aj'@; put 'cmZZe2xTdDYlUlV1WFp6eEZKQ0dtZHNAdS48Ij8iSnJ2S31dIjBwIz4kZXxCNSxwMEshfHNYVzh7cTY6cilXTWM+NUJSRk0wSWswWCxnb2UqWltrKEI6OnxXUk0lM0pFTWhHWn1vP1EpSCpDdV5QNFNOfGF1WDdVZjorTDlnS09fb1d8JFI1PjxIYHomNjZrLng6MFphNWtodUx2OFtBNzk/L31q'@; put 'fX4iMTFTIT4ocWRzaUtaQyRObmx+KVZNR2Q1PihOL2JfZl58bVhEb1ZtKEorS0QsRD5eaSh+ZUdCJmgzfT02Kz85emMhKEg1Nj9YKlYrQ0NwPCsoPFs5fDReMzRXY106ayxvOyJrOE5AfXY7IztmQCV9VzIwPlFqXjI4U3VGQDt2IlJadURIeXhyR1dLOEpbSCtJSSJ6UGxvIzVGInBsa01EaHBq'@; put 'cj9rZThbfHFrUUJCQ3YkbDtaa1ElMT5qRytEOkVWS1V5SWBEIVY0IXx7Y05jK1QlPlZeNFVXQyNeQFg0ZWJCYWoofmkseCElXVl9MFlmLE0uU0tELzNCSHdhV09XRXd+fDNrel9MX0RFRlkvZm1nJUhueUteJXZzLm9+PSRDJkZKZCUoKWpea3UzTHt+b1ljXXVRT1h6SShyfEguXVh8YWYpTF9h'@; put 'bGwhc3wkJFR2Ri4iaUtIREVyRlV2IyJGeztpQnw8ekJgPiZRfVU+bTZgLzo0Q2pkZSgxW09JWjVfdjVSRnxiRzNGJUpwd356WGlbK2pDUEslVUpvVjMsa0hWPFcoIVJNMjdVKDB3dU1qczhMMFR9MmtAI2ZfdD5QYEY5YWlheyw6I3YxNmome2BxY3tnXVtjNDVUPWA1cnddSyhGY1EjQmNPV35a'@; put 'eXtVN3BMPSJ4e19wPUw3bDVHUCw/L182VCRMd0IudSV9aGhqdk5nMWhnXTgvdFJMWnBeME5EaiwxLk1SZ0BhVkZZek1UR0d7MVVvPHU/PjhnYnhFKm0/UFhqQEQ7KlFxeWJKcG1sP0A5ZE99bTNTNyhVfHdGeGVjWiQ2RTR9OywlOzV4dDNQYkx8eX5nY3spVnYkdTF9fmA0QG9PdjVALmJaU1Ny'@; put 'LC9la3lRbztUUV57JXA9OF5+d3Q1YWl9KEtpOylJZXldXnk9S29aJl5WMWIxYEc5VmlAdXV9WX5zMG5zYGpUO3ZAWDViOHt8LFJhWmEqSiNZV2UmUj83JjRxeUQ/Nz8xWER5cCpHcHFPTlhPMCtIMUh7YWVfdDlDKDFQUm5LPEcveXJFQF98MkMiLl9OUWF0MFQraCltZSEjTlZobm8lX3AwPkNh'@; put 'KyRDSV9vKl9VMUovNmdAbkJlJk48TCR7RTQmNl8lLDA0WCQrOV9DeHBFfT9AJHhye0hpel98NkojYkB9enIsdENvbyEkZUw2QT9xcUBpJmZ2QWt7RD5TP0R4JU06TVJFWHRUaDcqUV9lPUI0M3BpZSNZST1zMSVnVjY1UEtXMCRbS25SSShrLl5KOjIkREBAMDd+S2IvUzdVKFU2eXpmOWE0TDFN'@; put 'Sk1oYXl0VDhLIiVEdyw5KHMwX0NxbG1MaFEqe21OQlNKfDxgWXtUOVNJLzNPZnNFP3ZpaSZuTHBxYVhGPT44RWVPPDhEOTguanV9dyVRV341RUY8ZkdsfUFuNUB+JEYvT0w9ci9OTG9yaVguP1dxW3xRdWJEPXN0XTw9PWNWOjVxenZ9ez9yZnxlO3koc0ouWnN8c1l+Sn4oW3RPeFdyMGpvSVtN'@; put 'YFtvPSNkdlghc2Y2YVkmcWo+Uzl2VlRtd0JEKGc7OF9Va09AbzohZkZdMTApeWIjKCRWJm9JSGMlW2hOMjo8JiMvfVA6Ujo6MHdwWyt9KDJ2Llg1KndoMX5qdX1YXylKSGhHdSxXWEhNeGBNPEJdNmsid0sxb05rNWNiPFg9RT5lIU9jMXBTPEBeRFshW0EhbG1jJll7eTx9PW4mdn5MIkg3P2Fq'@; put 'RihIVmNeSnpucGl0fGpvYWVsR0M8aT9DaEovO1FKKkosYDE4NWsuW3tLWXRMcWNOeHpEWE9udFtSQWk2TX5fTXFmaywmQVZvKHVjUnE9eDZ6KSNyRWFoSD0+fVtrI1c7LH5SWk5gP0owWilVOnZ8WkRqcyRgbSpNLiFieGtAdnpeJXozVGlBQiVVdn5GNGs9aFcuU24uUURifXwjU3UmPVIqSklH'@; put 'Rj8wNVQzKjs/bHVnKTA8KWMhXlpvYlpgbzoqK0BJOkU6MyR7KHxjKGdCOXg8SFBiYnkzbjklTXo+RWVgbWRhJWdmPkB+KlI2X104eWY/NihtRylyOzxNfCg0W2ZeK0xoUGNgJXE5RHN2MTxpY3BraStILjl1RHNhQl81MWQ6Lj83PWNGLztyczxMMVcoZ01vO3pjJileOE1rVD1sTjs4O09qUGtK'@; put 'bXB6enRIcVB+cDNPfVZwNzY0QCxjTk86XTRZS0FwS3VwPF02YSlWSl9fZUU/alZrJmtwKnVAeTJGRW1kXltTcTs7O1NKLmB3PUYmJkJeI1IqI1Ixbl8jQ11gbj4xR2lgbUtxbCtHOkBkVU47fnA2cnk3Z0xeRDYwfj19LDViaiNfUno/JWteOWt6TDhVW1RCYTIiK3RGWEwwdXtTb0QzPEV2SUk3'@; put 'Y2Y3Wjx+cmR6bnoxYTUrIkc5NVVmdkVnTSlRXVBYeWx8V1p2TCo2YndpKmRwbSU4OiMme0w3MCgwW3tFKG85TSEyRjQjc3J6U2lPJWpvREBzWlFRLEwsQ1BDMSt3aXs9M0pkPUs1T08lWT04SX5LfWp0MHd3IkVoKVEuYHVbQToqdU0sen5ebiMiUTJSaTQlODM0TDJ0THQsZlpjbHU6Y0p0cF8v'@; put 'd0JjeWJ5VCVlcE1ZMmxNbkwmfGQ6fShIbXdOTEg0YyQrKEFdW20va0s6fHRLcV1mV1lXSCNgMihDLDlxXXFeIWsqRHs6ZUtJQHhjanRzX2IxMTQmdGJwSXFfI000YX5hWmdDITBHN2ZEaD9AQjl8SzpgPmdIPntyRml+ZXVKWj9uJGo0PmV4a0pZS0lQZHduez4zczcvRVtLQS5KQXAyYjg8cU9v'@; put 'T20xd2BmcE9eYnFiKE56IzlfYDYkcClRfmVfR3VwdDEvYU1JJGxyUEpfKmRCPWZIW1s4QEdhRjVnZEMrLCZlSmN0XmRpSX5SQDp7eGE/W2VLSTxESHoxWDIoOjtvX0pPfUZQT3BfWURyZ05pKyZmJUdkbS4mJlFOWWdifm1hbU5PPHc1TWEoQktYfSpLbCJ1ZC9KRVZVRTIsJk1DT1RRJmRSWHZU'@; put 'XVpFVlJkbmx5Tj5Ka0U8cDYuWEJeKUROcSUlVTlsQH5fRTwjYCoqST5nNzZ9bDQqRXp8JnZOcThec2FIdXE7bl1sWTFRV151IkgqVGZVUUZPVVlsWVM9VlltZ2NDc05UdzJpWHU/fHdOPiF1VnpHeHlWZVk0QXVudWE7XkJiazxNX2xhdjlmb2M1a1tQbX1pWHxJeWNbbmQyYn40XW4yZGtwdWIs'@; put 'JjpWazJ8UGs6SmFIKXo3cjsrYUghI1VhN1JwREJTX3Q8T3t8KnA1K1MyYGY5TF5UZUlfbSx+a31HIkFbMVhmaU5YOE9CMnFQezh9WFFdXz8obT1eVU9xXU0pbH40M1Q8WCohYHMpPzkpRmk9eVZ0OkA0ZWdOaEBmfV0+JnxmR0krI0U1MjQqamB9TDxhKFVUK2dyMDx3TkwqL1VoYUwzblpFdkxZ'@; put 'S3A8akRjeCh3e0ZQc0dxYVQzIV09KnJBdlFiIWJgVGJoX1tATjszZUVaWmhqXTZvfDA5Qy54flRVT1N1KWNUU3Y9OzssNy5+dlUkdFdYZWMlTVVLJEIuT1V5cCxqeWN6QndHTGlHKWMsLCRUY2NSaD58Qmw8cWZdImB8KEd8S15HWiRON0J9QjZAV1JVSHEqaVplQEFRLnome3pXYHd9dSVyLHx3'@; put 'aippRGRgQ3lNRlp+dzB9aFRpZz5Ae3NoZW1oeTRMIUNiQTxMYEFYJlpyOWFIX2tYVltTTTdgWEYoN3s6X3FMYXNOTFVhPVI/eE9+KShqK0xNI2NKNjNVSyx2QVEsWWNAZlVCdCx+YTIoTF4udSZecCMzS1YyVlNKQi9nWmh4LCtLempVbSZQP2MhTThrZjQyN1JUO1dRNXtVXyFgeDlVTUVac3B5'@; put 'IkQ3IypUJStGdltDSVd0ZWdVbVk4Rks1Ylo6ME1Qfj1GV2pHeWxvRHtuWk9aVjNfVzNIO3l4VmV9JWhtM2htQyleWl9kIX55Ujk4PkJXYVopYEQwWyUyMylhd1AyX3pMSzwvUSZqTyhAWD1HKDE/Yzxzd3JWOXpQOWhKVTQ1Qk9DbCJ3ZExZdnsqdnA9PDVjRExAbGNDWGovTl1KeURVfVtlQStP'@; put 'XiokbEJjeTJqWzRBUi5dO2RkfjV3anl5PG08KkVwKXx4K00oQj0pZGkvWG5MRjFAbW1MI1loenVwTkhRMzJrPU10XmxZOXN4SVpSR2M0V3MsY1l2fjV4M0Ilbmx6UGxXQUc2ezl9cTMuWWdpPG8qbCgrZEU7YkI8ejxWN0MsfnAlLnB3Z1hSNz5YRm96L2l6VG5lfiNPYDdbOT5MJWZAdnkqOCMh'@; put 'dGh6ZmduaStfJWwsWEU7dSk6Y3xKRE5IaUErV25EXTI8OVlVdUB5QHowWVk7MGhQRH15LC9nX0s8KmhrXXl9cChkT3BAOiZeLklQRltPUzlhWkw2Yj5WKkFJYzBGRkVbOS5fTyRkT0BrOT1tUyNZKjpLRlUuO2Eha3JWP3BYJExKVGYubyRUXUs3TmVkNjtYYno1Y05XOiZSSzNCJTdaI0JAImQ9'@; put 'UFJRNm5BOm4zKFQrIW1ldzFhM3w2X2gyPDlreUMsM25DQlNBUE5TS0MkeW5WVWRMX0EuRlJOWkYkdyRjRFt9JT9ENyVdcl85e1N6UFN+bUZhOXVmclFaK1peMThYQXI+MkdrI1RNOS4/X11zR3NhKF82UE1DWCVfT113TmMiZm16fjEieVs6XWE4cy5jVEVUQzs8dDFtNCtZcHYjM0ZQdGhfeWVB'@; put 'aVBTXjRkcltxJklgZVRHWml7UGI5OiUyW1lrWXs3RHNedVVJbXVIUzhwfU1AV2VmL2x3dWguOGtleXRYZ1lSR1ZIcC9mc1Fyd0dQIXw4SDViOXhESF1aYDNsJEwwbjNjWXxBcDVCZi8kamJwOkBdU3ImYnZ5YVFfZCxwJnBJUSheKlpERGFWfjFNVGVVOio3S0xETSptcyhVaTNJO3ZjM2N0dCtF'@; put 'PyVyU3JsRnJWUDBkLHpicGZwcC54Ryg9Z2hSMlB4ZCIkdlIvOyVJfTsvV3lIJk45LDBsQGc9THswdWIwYTx0USYueTooMyp3Xnc3cTtEKig3dVtVS2VRJX1Xc3khbHBlUGgsby5qVSZUTl9OTHBQQCtYK2A6aURMUVtqYHxga1FlT0ohJVNnQ3NAV1U0VDsrcEphN35bQ1JRfkl6Rn1tQVpfbzxO'@; put 'JW4/NVNDa2lxYmVQa3dlR3kpfV95OTglZmNdTT9IY1UraWxhdnwpLnozdWZ5Y2h8dHFPWC9UJi4xYSpDUGtteiVuRGpDVi8pVm0qNmMuNSNEISZgLGtQQCxZMUk9ViF6Yn02YGI0K3Y3N3VzY2g2RDRLfj1oNyZHWTgoQ0lIMGQvK2xqPG5VLHh9OWdlLFZdUTZ8V0pbZjd2U3NLW1hWfU58akgi'@; put 'ZGRTUkRpPmlaRk5FWUdEcT9zZ31yOn1aeXFkY0AwSHtjay9ac21YMT55Lm8iSzpBPXZQQXc8VHRGSjg9Ui95SX0jeTZ9aFF3UnVSLGlJYn1NN21kWD92MnRDUiIhPCxHYj5AP1txOG94NSh9K2BLdU0iOXtWYldvb2t0fn1EdXw0eG5bZVsycjpBPWlAMVI8LnZVKURRQ2M5eXhRUj5oYEt0Lz96'@; put 'YTxPPV9lfm5oYExkJEUpW1gvV35GSkp4IWo1O19lPSxrWiE9UTw8Q0xBRThjfUgqPTYiSj1tc1Vzdk8/UnNHakg4eyp0RDJsPUQpSltlNlpQLyxxIl4we2IpeSxNPShMKFlvPWtOO2lCR1gqdVcjVUxZM0ZZdSspU2ZhZjtFO3s+RmlaKjgxMCE/THlZZnM8PGg0JW57W0kjWGlzb1A/cElPejsx'@; put 'XSl7bkdFd2FlL2spUClLdEtUYT9fWWVfUj99VGt3LDtWLCpbfTVaJDslbjt1JUg7T3U4ZVdwbTYkc3grVlokNj1QJUwxI25LWnhfZFJlMCs/SF9mIWRGe2FMO0tudG54am1gNEBPZHpHT1N2ZytgTTlUQEFINCFeOmYqSTF0VF8rL1hQPyJqUTZqTmBLalJEfkB3Si9xVDJZa3g1KmR+K0BGIy49'@; put 'Mi4jV0VCPWlAUktGbU0zdGhZbXNhPldEO0UpNG5fVy9kTEBnL3tmZG1wT3hWU3A7e31IT0NRW0YuVTkrJVRENSpvL1slVGhEe1Vpaj16PH4wYjBWZ0xgXSFQN1tqLEE2QnNIUC5DJnJ6eEBfIXs9LnM3SlV4LCRxeDw3ekpbYEZLMFdYZVpTI1ZlMWZhfn1EMj9fNHlpezpQUndwcWVXIzxvYD1j'@; put 'MDFtUF8rLExdVGFncTVLZnklI0hJOX4zQkVFVCtJP3hkY3ExMmZrUHdqfm9PMEhaZVUoNThlQ3xmcls4akFsLGhRdmBSJX1ERypgXkJUa0dGfnszOnhRWGgxUCk+PlF0RD5KPEhYKXxJMXRbNzkoT2VyKzNVOGZmcU0hUlssZ20+PiNkRkQsSWltRWZ7YnRpfWU9eUhdTE4mJE0kOFJ7WlB2SWZy'@; put 'RSF+KyU/KH1gdiMjZSEodGohI202fW9hYk4oUCw3OixkLyxaUWZmMStGQnoqJXJzek9lJHZXWGM1JW9We3UsLHA7QykoRnJoMWx0K1JJTkt7SGFmQmMzbk4ja2EhIWIsTyQ9fDZdamJbN1c2SlFIW3JDI2BNMFg9WDtbQ1AlMjlMSXcxYVp5MjJjJUQ6OXYuVC5ecko1Y2EjR1U9Xj5kVjxFR0ts'@; put 'QTE7ZG5kWzY9bXEoOlR3aDNiaGxSTTRzdChVYnEzVDxUbjlVcTYwMDFzUylCTnY4ans/Z2FtNyxmVzZTZm0vIzV7Y0liTTFoQkFlcyhKQlhbaFo2V312Y3ZMRjc6cl1qKk9sWCMsbDEuYC9jWDR1dHFAal9uWXRoUmtKQHhLWEQvQ2VzJHAhJXdtOihUWkcrKyhgY3lraT9YVTJwfkhFSHJWWUxI'@; put 'QDpTdnBhcTdjWig4IkQvLm1vNSUzfT1LUmZraCY6LG0wX30hUkFJUWd0ZU9ebyw0bV4sQWtCbVlAMXE3azgwQ1FyejoxbFAjVTMmaEo9fFFtRiRKaE1tK3F6eUh5PClpKXEkKnNDPndVTkV4e2Q7NiNOZVEqZjp1YVt9MkRzeE1YRyNETEpFKFdHL00zRGppb1d0QnEyKFpDI3NicDtYW3tPdUNv'@; put 'QDI4ST5mMVFDQDpnfVY7PmlbUUQ9NCsoTX43RHhsSiY/U0hma1EieFtocVZ7L3F4VF5NNUoxYTl6SHguJEdqeTBPRCJ1SkI2dnA3dnp4SExIN2w7K24oKExqMTFYVkReY0hieEIpYXU/dCM5OSZDTzQ8L099dUBrN2g3amVBdHIzViRERH1ZS1lnaj9oKl9QTD1vZzdKb1NsaXRfKyUlZEx8a0dp'@; put 'eil9OzwuPEowUVFNYTFqXU93XkZqZF93Z3VgO0FwPHoiUFtvWiNrWi9UbnN8MUpbaFtfM0NASCgoKUt2LG1lZ2RgdkVzQT5SSGBZe050XmtIVT18SGtXUmcpSDZQQD1uU2t5e1c7L2F1UGZFN0pgeDlVXXQ5ezs1SGJyJkZnfmF7bHMsJTEmYkEqWytdWkx3PEBRN002T2R+a208I3tHK35XWW4u'@; put 'aiE3RSZOb0I5dHZOaz1CfkFVcGFyYlt4RWJfcC91JntvVXF0MCI1cU1COWwuNXBvNG8zUyxdRkFaUWQ4c3tPN29peSszWFZwWF88OV9zV3NRUEhVcCx+N3FzJHlrVFdiaz5lU0pfWywxcjRGfiEhNGJGWXlkbX5VdntZUXFfalMzSTU0NFt+LHA9VUFMTHJHUDwkUFhVS2c+TGklVVdmSWUrIUhv'@; put 'YHl9akBOK2FWP3MuMCZ4VSMubihDR3E+QkBCJlVsMS94RTRRTUdSS3VXJiZsdXVLRklEVnFmJj15R3x3Zj9fa1ZCPngsRU4ibWxNcE1RYT5+bE0ySCI5c0QzT0pVQ1R8aGVITjhxVj4hLF8wSVg/QjBSZjFaZm1rNTc2Z0lDMytiQkNNU1l4TEY1NW9LZWR4NCNGLjZrRFQldDg+TS5fPUZSKTNg'@; put 'UildPll+ZU1JdTg2ckl8dU9zb1NJWVFpPlJVLnkuKyJ5b3BWNDNLaysvWmZyWldoP2p8dkRKKD07ITB+U3JXMWBlKDZRRFhUO2whSmRAPjVfY3osSFc7Jk8uPGsrLnJCdygqST81Qyk3bXZpUWkwYTBpMWppcHN9VylkM2UhPFguc3FhTnlTT3kqZCJTVD9IJHV5R1IzQ1ZdSjY5YXtFcTNqbmlD'@; put 'K2ByZnFiKk9JVnwrPGtCI24qQG45fnkzWGNXIlhDIl0lLEhGYDlUY0ooUHchN0JxQ1ozflgmME0sa1pzWmIpdzBPY0o0JCNRVjE2N05HUkpLaD47USJMMyRRLkBKX3xlOVZwX1ZTUTo8LEUmbm5PVUYwJEUxdD0vQCJpSXhXazA1NiU3JG1BbUZwM3ImL19fXjsqeElRMl1dSmNaTyxONUtOP3xa'@; put 'O3VdPDBbZDl1ZSMqO3FoVG5IT1FoPSs8MXBASXRNKXtEL3IwbStEPXo+UCo4TFVpKSxhQ2pLYyZjdXN5UVNRI2tBbl1eNV1WSHhAdXsjY0g5dzE7JnFSdVB6NHt2b2t6eWdlX1ouJkpoKT93bC8/QDhMdTQ+c3t4V3R2aURlLDBZcysjOi41Inc/Klk6VnZ8Zj43Y2JwTypzO0BgeyI8QXs4OF4l'@; put 'Qzc3dj5dQTxdOjsoe1VNMjBVI1Bnd0NrPUY4bnF8JDpAeGQhfCU4cHApbHJ8JkJyM1A6N1U1NiohPkVsQnlGLkdULmZ7OVBdPnI6UzRlUythSEcxdEY2UjJOXjFgaEFha1Y8Rl5SW2t5YXNhcUcoeUkzNkwpWlhqdkRZaXk/YVYqeUBLZn5fcCxQImU5al4+MTRldXEleEwpUXk9ey96RzZiMGAp'@; put 'Vkk8cDBaeVkpd0Qicig/SHRBfml0Il1rTFl5QURoNm9iLzVgOSJPXXBNQVhRUnVOTjg6RzR0LGEqTz8uVHh0YyFsWX1zREhqenc3L0JSZXBQOSZne2plRFsqXWxAS1luVE95UkRNM0JyfW4pSmI9P30zV3VVXkk+e3FCT2B5OmM+W1gyTEV5fi5lMkx4Vmc2KDY+fCRgZUEmJWIrTXE0P09IPGRP'@; put 'ekZQbjdURGFAMiJWLF8rNW01KGh+KGJ7NSgqdjRbLGhGSlBEU3dCI1Y6TzBuJFZ3Wyh9cGV0NlI9RXp0RGs2bWZabEo/aUVsaD91U35yaFkyJlNbLmo+KDAkSncscG1tZHMqKFVvfTl1bTlELnZgeSlXcikmU00oR0k+cVomelkraFkjY2Y7Z0lkP1JZMWdhY1JLdU91d28mJCZYY2RyMGV0X1Mr'@; put 'X193RW9zRz5qUEZxekAoUmReYSxZblp1JCYyNzpNRiVqQkQpcCNvfnUxTU9saVFURTZEeD8vSHF6ZmcjWiEheEVoczF0bVhiLnt0ezd8WnE5dWpmTF91V3R4Ll9vbH5aQEliO1lATj5bX157bEVkem5lZiFOaX0iUStkVERtbkF6ZCp5V15LaWBMT0Zaeko5TlcieSt2JCNkeGk9JDNsfEwldVZD'@; put 'YmVAdTdCP2BRJSZEdylhdXM9PT5bXztCXmRPd2JJPHlbWnVZUylNdEArZk14TnZWN1BRbFBJRXVKWkAvMzd3YUdHUHY/UDFnTmVKY3xzOyI2RDcoZyhhemNJL31fMEo4Q2RhLkp0JjsjfENoMU5Ea1p7Uml5cjR3Rkh5T3NZUkVyUHM9LERRO3VbdjtyNVhbTnRpLkZ2MnE/KiFke3UuKDF+bnh2'@; put 'dSJgIjpYclkoOXk5W10rSF9BKHM/VXxZYjEvPXQ2fGdxOj5KW0dnUXZaaWVTd0xEX1ckYGNiUDY1NV9ZNVE0QCYkRWhkImduTEBuVzRHbjBSe1FIMXw7VDVpT1UqK2tzPixEJDcwZl16amRGZVR+ImpgWEpWbnlLWilNeCRCanUyOjQkIlVjU3piPFdKcmxMc3cueTlCQzZBZXpzX1spT28iJGUl'@; put 'cWpbXSVhbEZBOGovIiwzRXBSTXEiSVF4enMkRn57LG9jZDZ1JC5zWExANTY4V1FxYWJTVl4uQ1pAWk80JihkOVdrYm9WKyEjUSFMM0UpVyhpSVtWIjpmcHZXeTVuWTpXaj1JZGAjYSZmNUJ1WEgwK0pxPlhvMj1OamdqZk8qVykra2RMSzEpSiN3bmROLiE+SGZhQVg1O3dyWz5zfk1vcWc1Mn05'@; put 'Tm87YVNjIWVEXjl5QiVzNCFGb3FgPV0zbSxyMyIwenN3Ii5CQmZEX0slWmIzbCkiRlpWcS8rTjFwe2xDNntnP1Yya0dWIzdwPHkqMFp1Ly4/NUBAaEtOdGdOIj5PQUYqVDRMRngvOSNMd35zS0Vlb3lGd2g0fkMldmJZRk5HN0oifVZHeH5eTTB+RW95fEdpO3Q8eFY/QyV1PWMoPmxvV35WUlFd'@; put 'PGlQWGdsNjxCMzYwSiNVSntucE9qVGo8S1MiOV91c31dSHg6diprUHM5NmpLeVVLP2wjdEFddDhqVzpyL0VzMHJgWVU8aHJUUiZDRHE2ZSsxV1F6azAoSD4ya3Z7el9AOD9jMExGbEVDQ1NxJXp2ZWwuaDx1c1hHI1gvKCRTVE5SUXVlSU5uaGF5azRiN0xYNlVVdC5uZDFvXn5wW3NBPF4rV0Rp'@; put 'WGJNdl0hb0tbMS8pciUucllgeWhnaj8vJV1ecW5FMGBpfVp1UW0/aTZFYH5bW3xYaH5bO01RLnRScF9MfVg7cEUveFQoWCo5XSNqe0w5YTJMVmw0V0RnNVJRZX1RcEVxPDR7OVZaR182PjpPPlN+PXkwLEZsVE5fYUc5Yl9lYjtHb2c+QjNnfUhlJlIsUW97UzZJbTcyfjhOJHpMJkhIO2JnRTpi'@; put 'QCh7ejR0dzJfWSs2RWVzRXJdc3BDemN9ZVk8Onxya2VeI1UvUnUxQjZmSlIhbWFzP3VNYzh7NXBlWF9XPGMjdTI5ODAwZzk4MTdqaUlZQUJGeWl5flp9P0BzcW45MlUkdi41dG4pUV90PDlqRmZbZ3tWI3p2UjckcEskN2dgQSRzLjF8Yjl1O0dFcG9FayJCPSR2ajJOaFZnImk6QFphRCRudFM+'@; put 'P1NEfFt5WWQ0JHBOdTNgJFU1O1RVRGoyQCkpZFY9JTddUGMhRytYWWZUV0s9d3VpZ2N4YGMhfiF1LHwhV0tkXk1jT0EsIz1iUnNldURsN0JQTU9Jc05wJVNwWSI1QWBSOG48YDdQVWdKW3claGQ7emg7WXtmMVF+SWdTWjt5cTNfVk1rVHFESyIwQ251W0ZiaTA5MTMrLm5rfT5VOW40KlEmR1N7'@; put 'JmJLfkEhJmEpU3xoQzUwSXU7UGFCdGNfUUlNKkQrWiRvQzV0fDx0bS5QLmBRcG4venhYSndGOWJ0TmhIaTsjP2RhUjlPQ15bblE6aCFfblcwcFUvPS5OfU95ZVpET1tbVlNgLnZDIWdqTnZ0NztEPHE8IzVPJlBmIlB7dX5ldzEsbllVYnJGQFt2SVNzfU4ma2I7YXxNWzx0TlBESlsiVk4xSz1a'@; put 'JU9ZZTM1dnUpWSEoREVScCEua0RXW1c7bCZhdj9pWCM4dkFrWTszbXs6SlFLXXp9byI1UEhDQjEpb0MrRE4hYWExfFB1TU1hS3hgezdnNCYpXWBLMEFpQEpIb3E+bzJbeW94KXZGNjY5Lj0rflcsKHloZDZETCM9PH47eGBYNmF+dF88bHA/c14kXzZuPm5GdXZDUWFlKngqT11BU35sfVt2SGls'@; put 'Yj85fjlEN0NVVE96QnIoWUpGa049T0lpSVFZVi55dXlDQjdFQnQjN3pRRV4leGRpKDo4clc/OHc1USV7LjM0Oyo+dnleWCphUkloNy5HWGUoYFR6cHFBdXI8KnUxIUM8e2lmLE5IfjB7Rj1Mc0tsKWVlRHwwVF5POkBLTihyKiRCWXZaMnJdeXpUOEAmKzN3NXYpJFpJMyJAYkJGVFAsNDlTVzMu'@; put 'Pl9uJStpYUVbU2g9TXZhQj5jUT9ZMEpwcTNqSXNzO0B7PGVHUUpkODBUTz0sfnJNPDMqPXxlI1YldVNwOjZUO1BfM0ZbMDs/dS9GRjFdYHo9RW4xS0U3Z19pL2o5JSpRdHg0d0s1fkVHNU47QEdqe2hPS2JgT1hRS1FJQEUifiYpVGB5SXdAc3FGOSlNdXRkYV5wQi80eDo4LFBGSXNrMm9hWlB8'@; put 'L0lWRzM7ZylWVnY0fCtvY1d4QyMvXmFMaSlqbyJdYCpTIyZ+Xi5FcjdbISp8WihwaztyQF4wbTIvRnUqLy9DRF93TU9GOW0yYkhqRyg+M1E4MlE7NiNGfVJlMzMxVXlOWGB0aDdhTlJJZU9XOm80KmcyOkZxRXNjLkMpOShWKF4rfWU/PExCantJSTk1PztOUX47Ym9AV0k4XSpvIygsWDx0Nj1u'@; put 'JXJFTkgwVStVWkN1dFV2Q3JCfnI+bH5qOnQlKGUjTVpzRD1KZls/ITs+XWEhdGBmRnM6byw0P0l0I1dAOEw3NkVCOkZsS1B2T3grL2g+Oz9gVGwsPmw1cGgxRVl0PkgsbFM6VTVmRURQM1dHPW0oKHcqUmQlMGR7fi45Y3dxWE06TTc9RGBAa290fm9FSWN6MH0wU0IyYlJWeGpzezN6dXhuYihW'@; put 'd3MocTxxRzF3cXRVJmZ2SEVFaEJAPEx1Ryl+cntvfjMvNVspNzkvRiVGO1NoQ2BJUUk2USpzSSo7XWV5JSxtd1g6RVFPUEhrO3dWRCRtIS9oKlYhNmlxckFNO00yNlt9ZGRqWjpLI0Z7VjdZa3VFdyFJNCFzY2NRTXEzbihwJEtyYltDLmljYGZOc0hgTjJ3OE1lPiM1bSFTWGc5WUN4WUZ8O0hh'@; put 'U0QmdUhkSExSeFt2W01KJW1lOmFvUX1WLGRIZV44KiRzYipMaGYoYEVAYlEwSl9NdV4yUTc/e3pPfkE2dkQpXUcjPi5FNGQ7aD4/L1ZyNmx4T2RqdzwwS10iNzIzV0tSKW5oTHRrKHIrd1dmPXU6LClYcj5NJDVmdjtQdHE8VkgjUm0vOUVufFRVZVQjYXx6STh5NTJVOEdCMH02KTdKLl19fV1P'@; put 'fFYsO2B8dWlHVmU+eX1nSDl8SXtDTUxmOE5tOHNWKFs6KzZKLCJTOjBCPVt3M3A7PkxnSU1zeTtCUWZ9MD5sXl50ZkkxdkljPy48OU4vbzB2d2JLa2JFR0RqJE54cjRKSD1+O1clRV1BdiNQP1gsKnh7Lmg5JXorJEQpZFJAS1ZESHQyY0M+YEIsUm9MP3lrZSVhMEQlfm5ISWUrKndRWmVUcCR6'@; put 'M1ojVVEkZ0FJckJ2QDp3eT5WU31jfiU1WGlwPWUjIyVFbkVIdFZRYSFlXkkrPEZKV3didGVeNXh6dVNkbzB8KXhWdTpXbU1hWTloVHloUiF3dkViOVFuP2QoU1BRZSt1enFeWio+Yi5ATFBWPUw1V25bUU5yT1EsTVRGVENpT3cwW3UqZyNUYl03Nmp4dCVYQTJ1LkZkOzI+ZCtHMX5RL2p8KHBf'@; put 'REh5YVF9KmR8fmllL3kzSFIwMThaRnx1eGVEQzg7TzdXRXFDLD8qNVskVi9AaXszTGcidEdfczpmLHFDcnpfZ09uRyp9Nk1EZEhSKTtSR1ZpODB9TnN9Kig3RWd0NGBPZjEzM3REPmhWMV47K2R4a34qJX0iNlhhPzlOdG00aS85RSYxNjgiWklPXSM+XTM5d19+KFZgeXtIbDN7Znh+ZjAiZG5v'@; put 'Y0Nlej4qMDVkNmkjRmhgMzs/RzliZGxETmxLQ0IrOllMdFhea3R9QE1aQiJbPHlxI1tCIX5iQm0uISVWJTNQO0goclYxdkFCW0Z2aGhxZHBNUmRiZ1pYcXJ8UnRRNiFUc08zOEJuOTRYQ30+RSg7SyR2Ojd9TDVtPXd4QHYhJFY5cFdtTCwuVU5kfU4wJFRxWSYvekgzWlkrSXNvRVRyZDJ0UnFu'@; put 'QEojUVhHYT83elc3IX5gbT9NbFFEZkUqcmhORmVIK0NjRmtxdlNOYmAuMGRYaEpbVlV8RnZ0Nj1Eal4pW01ANiFWfC5wSDl0Izgwd1I+S0chXVA6Uz5oX09fLH5PfGc6IUU/M3s9OTIieF59M0lkZ2ZqIlp1WiZYUGBFTDBWckV4VHd7bFl8aHxadF5zRlFqKmdPOUwwPUQmc09kUmU6K0YrJCUh'@; put 'ME4qOzMiJDZwPzshVzlJbDo8aSs2UU0hInxeYkMhVyRNYEhBRkg4QShJeGV7fVdmb1pAPlQiaUxeRSQ2bmliQH1JM29VPzBOWFZIPXFKTzxWL3RWT11wYnBZVmROflhMdmZ3VHArRTFve1d+O2VZQChadzNDUn1xfDAhKWFNN2x9O3pjR284PEBkazVoPCg3YFQ/fjt+UU15SyYwTz5tRSV+dl18'@; put 'MnJxQzAlPjRASVJjU1R6MnxeJD9WKktDUk1CPHI6PWpoKyNGbzElUFc3I0UqOnQ2VmdFPHxoQ2tSRXxBK2N6VSthNl8wZFchViwmJHR8bE1UKVttUU5MQlleX3B5WlBwfnVaWE47OkdlZlpCZ0k9eXBadylSZHleKk5mUF4kOnZMYVg/Z2hROW8kKU8qWGg1dyVfJU1XQ3FZRWtEM3YhbiZ6KTZt'@; put 'KFk6bXJsYzpiLm57OWBtfHJbRVpPMlpSVUt1OGthfENaJmY6NUY7KU1bdDh4XT0uPU5RRWQiWz4zcE47QXlPVSE5aTM8QzcpKlNwJGchU2lwQVEpKzlncm06ajhfaCIyVS9uZCl5cXJiOWtTMmZQdVdfRUFIcTRTVmVyZXxjS14qSllCU2c/OUp2Y04mNjFgaUhCIm9TaXhKMVc+KlMoUC4md0pw'@; put 'V2prN1NRdSsrLmg1dEUxJEpvUFE6aTNCOC5iMz1FPEoyfjA0aWZPUTx+fnx7SWFvN3N9bFk2VXhNaEdDPE1XMERzcHpBdF9aanN5ciZOMlpDe2QzMW5qZkNsWzA1LD1LYF5jNi9+N2FzZDM3an5AIUdVVyFASHR5Pm88c1hUdDkiN3hdWFY1I003aXxgNlhoWls+NGUiQjJnWGg/UTpoaFBHbnR8'@; put 'T2xtMnR4ODFfezZSbGIlSmN0LnFJP2V3YWRTUjAzRylrXSxmSz1vR2x1dVZkQHJIY2FNXlR9fXE6U0E8UUtJdS8udShyZkRoNX1UWWM+WH17RUAhMHo7KU9WWyRPL2Y7e083XykocHI7SEJwd29+OWt+RllWeiIzd31oL0ZJSVkjdTxkWn5JSEQ/LDFGQ28sRXVWTV8jMXh9XkReV2hnZF9Ea1d9'@; put 'bWhQcDF7VDo5QEFLUl4+aj8xUTZldj1QaDk0UyRJS1lFSDhLMCYmKExMWTl+N2FoPFtkNDVKREsqNyQoTVMyY34yVyw8N29UaTtUT3p1PFQkY3AjUFEjc190e0tXRmUjPCtga3s6fWMmJnV0JUlsIzU5PyF4PFNWeTc1Kz41VlN0bk1YOTVHaD4zfDpsZiZnU3FEKWB6SWc3eF1OWDB4USkvJjdk'@; put 'QiVfVHkkc24mUSNUWmVzaWlUQF9AVG0uVWJQXjomV1c4MEFAOVE8bCFYIWRXa3o8Slo3XWE4MFpzKmp2KHpfemEwTHBWIlJWTGJ0XXkmWUZleFFQYzhTZDJ5REtwP1k9MkwodClKN3loS0loRTomTStgRiM4fEBPaChbSnQiJD1PdVh+OzJDPyNKMW5jKkEqWmAsZ3tbIzJkcktkbSJmXz06LC5k'@; put 'RWh1eDo6TllWRSQmbk9WU3xYcGwjIV5WWU8qKEdQKGplQURvMChqUDIqOSRVO0BhYj1sUDYrM0xLQEZwLlpCdTAhQj5tMmh8SjhYTWhXbWlhJFF1VUcqIiJedlFTJCJWLzFAQyNKLkwoUXIzODcvOipjV2J2LkB7cWA6UEM2VVYkMkd0VERed0JSdnRVISp0YjxtXzl1aCU0UDBxZix7VjQhIjd8'@; put 'PntCMlBSXzI3ISZnaUg5UzA5dHtmO3lsZyhBMEBmNn5VUl8ieCw+fmI2WyIjb0sqTitTe0VwXTU7VklIeC5xWnkqJXEhck9lTjRAWTJ4alpgKkUiWHV6PyhMYD5PZHp0SSFkQE1BOmk5MWIlXjAkUzozdjZNP3RbVzUpWnskVFsvOmorVVROUn1qPT09Jll0cm9TQGJRenMxXVVEKXIqU0k3TlA/'@; put 'ZyoyenhDYEY7cCM9R2VxXTdjN19acT5PXm42P0FtYkI2Om4waDtfVDN8aWltaSxGais5az1KciRTUjxiLiVzVzcsclpATiNYRCUlWGU/SW5qSX1OWD5DfjtoKXI7Sjt0e1hCOFAwNGFEczB1bW08MkI2KG4vRjN9RTZAb0BvJTAwcF1HZzopXXhGPzl3YVspQEx+UTNFX0hAcVBdRUhgcH1rYSQu'@; put 'I3ZWMy50Y1s3OjYjQy59OWFAUWVGQmpkLCE2R2pHNGpJS3wuVD8vMj9gKXpQNmAwJXA4PS8rdkNRfDBxNXBON28+eG5sS01obGNLYy5oWGdHcDl5fiwjXmMueFM6azFoIlIpald+TH44NX1HKk04aldjK1AmZmg4TV5XayopMlddUzhAdDY0K01RJVtVM0doZXBRYE4hbW1UfWJ2Lj9wcHdCQ2R7'@; put 'ZlVTKl1sejs8JnB2JlAsTF9fUiJ6MX02Ukp0WSZga0FgYnhBOkxtNG5DKH5kUFN6XWZXV1ZKPm8/bX0kfXsuY1dTSndgd1ohNDAlM3ZmJT5dWWZfWmNvPkIyWzRaITZ+bzFNVE0jKH5ZbzVPSDdMNX5TbTEqbjhdaHZwI0AlQSpYIio9VDh5O2pNR0xFTnxiVzFNMD1EbyNffTtCMkV5Mk11THhV'@; put 'QyhfMnQlTWdWWTpPQDBJNEhJQn47LFdtJiN9WEZNOnl8YSVVI2lWNmNTWk4qVWpJWitiPCw/ZGRsaSJ4Jld2QDh1Kn1iP2crIUlJanZCSkU6ZkFAMTtkfEcveXQ3aGgydlRFXyRgI1Blc3YpNFRNM3haQHs5Qy9oRSV1emVGTTRlVClAUUtHNG5hfntqalUmNl5pMXo2ZWddUUk1RGU/eThbIzdV'@; put 'TzJPbHxreFdwRWBtIyw6Qn1wSVBSd2h6cFs2bnY7O01qJX00O2FhI2pCYmIyO3xra3VIe3NNK3ApVDUyZDdTSnBOcW4hTUpKKXE/ais0SGRfPUJqbDxZRXFKZVpXaTsqJXxrTVlRWSpRTXg7PiMmfmxUZ2JKI29qVSUhYEtENm1vfkpGXWx1eX5QQz9aKiJhbW4rRUI7VnZ9NHFKe0span15el8u'@; put 'Qz9uV0huQ1Bidyk+U3J2YT52U0JYfmRGJWx4c2xOd1BCZXd7T2tLUEpAOF9MXihuTzw9PDBnZGJHR2dqZUk0XTQsSHRCRVdxVnI/R1cvamhWSzxFXUBHX1BUSngrWn1LZ30+RWw5XnMmKU8oYW4+RHRgdlJrY1BpTTN7aj41Jjx9KHpCWTJMaUJhUyxJWVtqI0pXYWFJe357YjpyZmxzclgkYTNN'@; put 'I2BjX0h7UWlbenhIMFAyLGlxXjAhM3MmL2ZqRXJDNHRUeV47Ll5WUGV6TEJwRjdqeWpaTVgvaWZxNHw/ZnIrdFpwQnR3Wndzb3dCSnwrOUokYWAsJnVMcFd2Kk9afD5PYmhHYWA/QkRsY1ZaOyN1YyJwQm9rYiRJJENMVCMvInNOdTJfQUloUGNYYnM+bVAkYWpoak1JemNLP05keF1CVG0mUUUo'@; put 'VD1pOG9Cdy91JCx4RkY+dzchQHhAZlB8SFFCNDNBXjB3WHFsSyR9M1R+Z2xOXl5xZy5AM3dKdi5rPDM7cXdmQGt1Q34rV09hY282XiZwXVMwUTs2blVoWWN3ZGMzXWVSQXJKfm55fXBeW20wPVhSc1BmTDIlfE44VmduKCR8YF52fWoqPmhNIzR2TTgsQ0x0W01PYVdsJiE0bURKSGdFQkg2YkpP'@; put 'WVFLTVcxQylubltRczFBLm9VOTEmIXdNUVVlQ1dGPj5+KSJ2NTojKHI8IWJnblRmPm9KeGt8KXp7PHJoSTFSSWtvIU0/MSQqLks7aSprP3JFRShNNl97SG1jYDMjVnRuRzVFLFl1LHZCZj46XkooYzU+WjxETTF5ZyZDME86aHBUMSlsPGBneCpmNyUibUA+fjMhNzFIYz0zdGxEXmk0LClIdGEl'@; put 'fk9uSFEod3FuKlBpbGwid09vX3JoPXhCOlciKX1zWnZ1Mz16Pz4ueyxTcSZlVHJMKlJYRHJMT3dEXSUvfCY0Xi47eUxENyljdCJfVSp1fCUoWW12PlFEW19jemU9ZC9UbWcqR2AmJURYQ1BncWgsPkg4Ky53eyFpT05CJTh+VTM/TXZrLGBTJXV4bHhvPXh+e3NmPCQ7JH1NJHkuelZRUm1fRGlE'@; put 'In5bUkJ0bGllWHp3N2NNZj5CWkoze2MocGp1eH4pZnlxbF5gXnx+PnlUMGxXeS8qUEh2aCRyRFBJPXxBPD08UzFIa2k/eWo4UztgRzhrKl8+ZElzOUQpV3ApKWs8fjp2JDJ0IlFsNURvQlhoWz44cGxEYXtNbDgoQUk+YnNTNGMwfjFfeDF6MUdAR0UsLkZgSlVmTDNwRyxLMzwwL29FekM1cm0l'@; put 'Ij9mM2s1Q3cpKSxXa2N7MTpeaCwyWihTNkBLPjg+MilJYjZLbGdIJSs0QHpxez4/IV8/SVFQcEhdfiswKmRyeiMlI2N9UFk8JntmUSwkUVAsI1c9JEM/ZiRlJVZ2eHdHQmRIU0UrUF05JW90JnhzNzg7WngrIm8+PllXPjJAI2FQZmteQml2eWsjWT0xXUxHSWplIz09aD50cltfUXd3JW9rM1l+'@; put 'ITNyK214O18/WH5WTWVEUCohQ0x3eW8hTDE4YEE3eztjTDtlImVZMUwkVGxgNE9abmhXfS5JKk5ULEQkVWlNYzIhaEtrNkA8JXxlV3Judltbcm1aXih6e0BjQV4iWkhdZEREIVBmSn5AbF9xfjwpQ2VuLHIyODNXcEI2RXxSQzpYKXUwNWU9UWkhTWVOUWZHTkdIeTNUSS9DSHZzNWtpZ1N9M198'@; put 'YmFTSFEmKlVea14veGhKYSI7X3tkOGxSMiQudT5tJHBaMTx0WlR8T1RZfmU2JlpQbkRQNDM+VGUyYShwM3R2Smg+bW5mW0hTRylILEYjQ2xxYWtGPkp9V2RhaixTd11jJU1MWntCZzkkSDYuWmBTbmhiSWQrYH44fGgiUUtAIWQhNWY8Yy5KMGB7W2s7RyMsXSwrVn1SdFgrX2JxPnNDSCR7PlQ8'@; put 'IyQ3Yn1uajwrUl9POjxuM2ZjPXdBRGF8Yn08V0tRQklMeyM3NXBwdnEwdXVUU3giP3l2STciIlkvRVd2VG1FRCZdc1BBS3J4WjhGd0B6NlpteVJEXW9hTkB6dzF8ZSphUUtlWnp5KlVXN2M6ezwlenhVYG0mdFZXfDJ+L1RYI0RiZyRmQmwjQjlNYVp6ckdXLD5PWGwwcTdFQGpVa3t8SCtoK2t0'@; put 'L3RecWNqb1h8XntfOiVbKU9CTSJ3QGgsMCJwWEJ1PGxbKSRfJWdAPnE/Zm5ZOl0kRG5Qc1NgYj1+MWN1UWdZOjRubWImRSNOO1l6WXZsWG1QdGZOODxZPz9iREJPdWZBNz92WlNkQHBDd0tOTSFHMFNiQmp9MDJPUVZ8ZHVAaTEvcWpwMExbNjJNbl48L3JLPUF9XXNeOGhBYTRuaEEjanhEbXJu'@; put 'L0BTJk1HTXZ+IiY4WHpEM3VDbDp6R3RtSTIjUlBzdFhAPjR8clk1TVFzOTFBLmB9I3k/Pi4/R3VlOkh5S3VMUnFhflhIPUZ+OjdiUGR8SzR7S3dePC9EZEVAMUsqXjlJIU9uU2dxczRWJTVfL0RnMjorfG58OyEuZW19MHk5JU9qM2VgcCJQNSF5L0clcktHJi4qQkxlJnZncFdIeCNlU3QyZnc/'@; put 'QGRhRGgpfWFdfmglMVQjW01wWmRkLFA3Wkc0SD1fajwodj84WWErY2h4JjMheD9DK3t+YTwvMHF3MlBYQT4ocjR0Yil3aF1td0J7TVlAQX0pYyZ+OnI4P3NbZFVLQFh8b2hneEpZISF6bnhPPFVbPCFIK1dbcmFPXXAkUl5DZGNxWHRpMHxbKSFHWTEkVjx1aFFdQ3JAJVNMZTpveF9rfW9yQmhz'@; put 'dUZNeTE9eURhOHxgcEQ+cn49RDp9eElFN35ETS9Ld1t1dDQlTFErS1lfWWglVkBZREw1eVNqUWoldEg2MVpSTFdwdCQwNltTbk5VWGBsQGQ1YkZgQER5Q0VCb2NUfXE/ZnZCVEViaTNQUCFHP0U9aEtdV3pKKn56ajh0RkZIRXpNJGtpSDd6WV08bW9bRVNZdD9yRGd3VVs9cSJWQltPPzR6UjI3'@; put 'MFowXUVmQTBzKUlsMntVUnZ+JVUjXyI/akNYYF55MSYqa2VtMUBnN19VZVNxYkZmeHZ4VTkjXnNiT21tUEhacEowU1N7Tyw1SXVrLiZRYzhofkVCWmc3NVc6YWYoKHF5VEo7Y0I8KnhNX2gybGIhKyNhLltXP1Fhe1t3YzpGTzMxXTVeR0xOQltqWWojYl00JUNnaX1TWStDPndyNUg7RmIzKzk+'@; put 'W31jey96fEwsZnIzbGV2WUhMOkMqcE5IOyU/NnVCcGFJUGgqeWh0SVtWcVpLSGw0YkQlN2JpZDNWPiFpNm51OFM0ITBYPlZELDFieTxlLFNhTCpuO3QzODY5T2dxOVo5bXpOSzpQZEhmRTZ1ai87aCRET1kodVN9I0AzN15jMHNhMmU2fldrLywzW1MqJClFSzhlS2EqKHVeNjFGflZ9X1ksJnl7'@; put 'dF40VjRUfHhIdX5IMlZqNCRvMGlBS112QUQ4ezlpa0xOMmZIdFVSSDgzeEFBKDEhbktfbWw5KSEzPHApKVlfTDI2ZmhdRiUzXTIzQWpEay5qYWBxZjg3cUVwMn58b0hBZDZkQzprLFkvNn49PzpecUdzRFhGRisqLzM0VlBQSkRkRHE2c0J2Iy4zUSxjM2s3WV57V3VrQkx+NFFYeGBzTlAwTCw4'@; put 'aDBdLHxhRUpmdm80VkhXfTNuc3heXn11N0wmYT9yMWJXT0BoIz9aNDh0NWJuK0QpOXdpQXFGS2xSZ29sIj9kfk9PKm5qOjVDSWp8YX17fXssW0hjODhHYTMyO0FMVl5pQy4hJiMqaSFHYV5LRm1ueVNHRSpoTTFvR2oqVH5EenQwMFN+TztUa3gwbW0wXUgrKm85RnomZnEmezpKfXd0dTxSeDRs'@; put 'YD5uW01VdFN2aHJnSCJidzw0R287UDt3YE8vJlNCdGkpQ0VmfH5IMzhLallldXVASzRme2dUXzY+KzE9QHZwdmpbfXZHa29AfE5aPEtwRSppe21uKTFfTD4oKiZ7LC9Ab2tqYzJmPmMkVkRNS2U9IjJnZ1tlKyE0TW9GNjNbXU5jdWI+SUxwWWBKeTxgRlU4MiNxd1F3QkVHMFBQXVZ7RlU/WkN1'@; put 'JCRxXnhLP0VQIkpoTkM1OUxWS0IwSnkmaGl8VjdmfF8mZHhUYntCYk1OaGpAKXNMJHd9TGlNIzxmNWQ+Vj1jI0Y+b0RYXnVPREtiIz1tLF44IU4uWHB9Ol0oMEh+aSh3IjtLPVVVcjNJfiRbSkNdQiZHbHQpdSZOL1FmekRyQUZtZyQ6VSRGanZUfHNJWV1nbzovK2lKbWtCZCFVcVdGTyQxeG0/'@; put 'JHAqRWVjdiQqeldfeztLPVQ4UHNWJCg3NilWWVViL25RZl5DJCVpIUFNfTc9S2dmLG11a1VOTyFsW3I0c1V5RVA1TH56JDNEXSw3OjBNPDQoNywhSnNHaVUjLnFbdm04UExrVm9rayZXKlR7Yl50ZGZRJGBtZX5wa3IyWyg6K00rblpIO3xucEdMdHQ5KTh4OV9VNGErcCZyPGNeMWpiUmgkZUpr'@; put 'N2tBXmByZUVuKjgsL152d1tOL09VfHc2cmdDaVE4OTAmZjZZb3Q6eWh5fG5IfnlMMkVZIXE1XzhKMV49MHEjPm9RPmhfREA3YWxuezpbNTQ0JSlCNSZ3Iy4xSz9PbmdjT21mMllbU3xbT2hFMGl4VVRzZ31ZTUB5K09lXS9KejE6Rm9oQ2lQV2tPOGcwMVRgfjk+ZE5Vcz9YdC9xUzRVTTxoRHxy'@; put 'KTUoZ319KjNeWCFKcDhqOUl5NCU4cFs7fkY5O3hzXz1yWms6ZmltdCYoRWpoOzoqJUw+JnRNQElGcXRET3tsTi9HVDFEV3J5bzpINHc7T2VxXlI9ZnV9Tn5YNHcrPGQ5Wy42aC9xV1Q7SXBDOSlDUn46L19+VVYuKDxUP3l5VzReZnFWM31vfHIyRkwmVkVdNHZ8WTlFUlhHXk8vPjw2Om1gflA1'@; put 'JSxdfV9LP2lSeVcrIiYpMGZdUzpmSzZARDIsc3czIlU/IUxQI2J0ajNFZlF3YldGOm53Rix9NSREdT9kJVpURzV2SjohUjMoY0g+azhpMTs7Z3s2ZSlxPnpUTXR3YUdhWnQqRjh2WCZ4NWhVLl95RDAuK10qfXRZJiRPOl50d2IibHhEPkQpfV1KcFA0YXE+TkBnKlp6VUpZdk9PKz9OZGs8QWVf'@; put 'SEYyWjVDOX1SVV1fYy95ImovTUVmeDU2NUY4RUcqaElgRTVaQFcyKjpDSS5BYCg7QlhbVX5gfSg4XzZpblcrPD9TW346UEFHfH11bS5bbEVJRUJgVGNqISRSKVBqRWQpNiE4SlNrZlMwfEhJejBNbntPXnRRcGtHOCZ4U3ZNV0x2VnpLLnpyOyxjZ0tyKU5iN15dLnhrUWE1JksyI0I+YUc0JWpL'@; put 'ekFxOk5gRkJPWmp4KU08IkFObm9NKF02JX5qd3RRNGA/OStZKmRATXZoLEpue05RYkdiVTNaSjhwUjxLUktBMmA3eSZpMSJfVi9EfjUscjA5TmljYT9iLz95ajh2VjZ7dTNoNGdMa0kmOldLRDlkQ0RyPEJ0R0djbyp9MWJxQTh2MHhtez9JKDR+XkJkYDQ+fFo3RHJELmdIYl1UPnQjMG1gRmcr'@; put 'V2RZWGU9dzhybkQ5JFJgOExAMCwjO0loUWFQQ09gR1BFWzB0OC5SVzVmY2VKKj1DYTl8e2ElY0Z+cnNITj8rc1BXWmV1X2wmXklheSh6L1c4WjosJWwjMHZoPk1PcEgrbzp2Ull1VyFpY1pnb0twJEgpenk3ZXo3Ql8oaEVnWk8qN3goWkQhP2MiWCozaVV1cC53PEZ1cFkjcVowaVVAbVgsQld1'@; put 'Vng3K1s5XiQzTShlezhLfUhSU0d3Vy85LGhfIWBCeDlqX3c+ODNvNn1XL2hHRGY4KzROZnBvQkB1W3A6PSU1RHI5W0tMfS5eYEAzfUB0N34mdncuRmtnQk51OzZOIyMjTUl+Qndhc1RqeUlpRi9jNW1qc0tRJD51PFNuMTFRMEMselUyfFBYOWFIdjFNJFsjOEhHRjFyPThKLjs1Ji8mUGo4KCtE'@; put 'MjF4V0c+JDQ0W3ltX3wlam5wU1lIPDNjXXpQWzlHKDkwOEZuckR7R1JVLHpiP2ZAcFZUTT9JW3h8TU1RNjUlVEJQYjtoR1FHISoyNVt3dyw1UmhPNlN+dkMxQXVHXSZFNSksb1IwZ0RzcFhTRkZERXp2ViRUYUV9SCtWWlcjbGZ1Mz5KcWxNY0IsdkIudVhvNnUxUFYlImhZTF5oOHw6JGgzM31Q'@; put 'NzJrXWUpfiQyUDVRa095bzgoInksXTIkbXxYeSRZTDc9VjBKVVcxMGZ7ITA1JCQyOzdvTmcqcG9iQ1p7YX4+eFszXUIwIzZiWzwpZl9ie2djVD5WYiQ/P2FKMDxAJENEOnFQUntNaE54OXFwT1doY0ZZaDJEJDg1UTxhaHA6WCxIZlFKcCwxeHJtUj1TeClGN0cxcDI9aTU0KCNJL0NocD1KbGcq'@; put 'JWdWZy4zRXlAcCxVTmJTI0tJUGl8LDNCYUpkLCR8OUU0TFVHdyxxcSx0NVo1KSlZR2NLdkkrRj03d2dVVzNDPENVNnFDSn0uczB4VmZFZ3s9QmJuVHp7QjxhPHMsXVc0dipfbV1+PXMpdDpueDIxL308NEtTRn1XfVNnRlQsV2EwR340eDcya2F8V21WQlptcyp3Ml94RUIoamdlKmpOIVRVfiw/'@; put 'P1V6ZDY1O11RMDQpZHJ9U3E4LzU3UEcvYz9VZlYkLk16VT5uazAobyw6cX0idGolO2hpQEs5YVMvZHVKQ1BtOGVpYl9ZamM3OyFdJS9GTVApdSRQRXBrdEp9S2cvb1thQk1LIm51QGZbTU04Yk9oUH5lRzwqL3JrVTFeWzFnKHxBK0BPUE1iJm5eNll7VSk5IjlSVTZtfF5xenZOMi87ellLKjFX'@; put 'eE14an1oeWw3R3JRQjwoIjNFTE00W2lRNlgyfHdHIkxNQiFaS3lwaSpbPitte2lab09pPCVGfmtxTyp0XiRkfHVKNDhtbnRYLipgckY7UygiWWFBWWklRlZmYnxdZC5rV0l7JHFQKVUlQFtITSNdQVh+cktYRzQ8UF1idX1Qa0AvdkdQMjZSWTFzREUkRT09V0lnKUxbQSgjU3IofU57ZzFlZXck'@; put 'Nm86VlFnMClCIVhuZl1DOWpLZkd4MCJ6XWQweFA9QlBqaX5pWVhqdWtTKTFiPWxjZiUmIyE0d2RvaWZXbiRpMF95VDZVRmNaKWBiS2ZATm5OcTBZeT5pKiNpUCN1e0BrN2QkK3hFPltpMEpyOlYjdyJ2dVh7aSF4Mi8sKzw4YypXVSsjeWFrQFVZQnNUQmUuYjZabD04YHhYcmJNMWB4SnBBUW9h'@; put 'IShuVUY7L1ZhVXMjcUFNSTsofSVecCVwW2MxR2xnQHx1SEY3dGVkVFR4djopayRuYUp5fTN+JjRdTlZpclM1RngqZmBYZkA0K3pkQSN6YHBYZGR1M0ZgQU8iejpWYTYjSypSVVVaPU0lWmRQbEVsUDJhTEslQjhuXi4vZGx2JCY6dWksL3AlLDlpP0cvS0Z5cnB9b3VmVlFxT2BKSTN3dytFbENL'@; put 'UVV8dXN4YlcrWTd0MVU1OW9FLHc1ezJJQE48QHxpejBhfjBDIyZIYXJPNVNgaWJxYXJRW1h4TTU7bFQ/NTI0c1lxYTBJLnFGWjR4SW5mUltxTltoUyREWTZhXSM4KDRRPGUvcSgvZFJTNWc+N2IhYDpnXj5sKWhTUUEsdURyemplQGErazhZe05iM0k9PUQuLCEhfi9OdU8jYUR6dCs0aVFnTlRY'@; put 'OSgiJktOcFt0N1spJGlKZVdiUEI3fFNubEE9QVh7ckl7PSVgZVdIakouNGI9S1ssUWpGWys6K0FmdTVZQ3F9UmI8L3tIdz1oPyp8aFpjYihCM3VaaF9VT0olQzJIX3ljamdlKTNPZSxCbXl6bmUmQD5xMStPdUghJSR2OiplNixOeGddZUwvcGU8RGNuPiF2TFNWOngxNHNCI1NxISp4fkQhOnsm'@; put 'V09uUn1CY0JAdHh+Xyl3RCVrcyorL10vJWQraCVNXiJVK21sVjd+dkhpOylrKU0pSiRsTm00W3g7cTptXnxvWV15OH5KZnFrXz59biFAc3R6VzFPdnFOL05PJnxGbmtlZmp0OXpweVFQaUAman47JHteZD0oeSlobUBiZGRVOz1QPTQwSiFxOGJbUG9FLnwjfHVWUzFMKzopdUdbXXlYVDB5KXhG'@; put 'bElIJXRGYz8sNWJpJkxgcG55T3xNYywpK1daOTNDOG0zbEEzaklMRXhfYihFI1RdVXV6K055UFhBZFp3UH4/aFghKn44JSU7cS5mPE5QeUIkWVQlKSt4WWNMZVA3VCMuME0rVDhNRnVMdzttPntIY1NIJUNVNHo8THxEIzg9NlozV1l6Z3l1VmEyOV92am0oU0UjLHRaSkUmMnpIV1R5WCtCVjBb'@; put 'YVUqSylLUVc/eVhSbkU8YGA9YUVVVy5icFVOWEVacml8LlJsYl4rJmlnM0pTVVFELkw+UHQ/PHpXRnhtITo9fUxzPjdoaDIlYFA7dj1xYzheRUQrYyllSkhvYkl9WW9YYW5HU2Y+Ykx8Pi5FWFptIlJCJU9GcSQwLHMkQm0lVilZWEpBSnVgWnByJDgvanVbKlA4IW98ZngxZnh6cHROIUohdXBI'@; put 'U3dLcWdlSWx2aUtSJUApW3krOyFubjNUZSNfVlheT3FbbztMc3M/KDhkWTg+NmkzOjJPZSMyd2lpOENPcFQ/TS8/YDx3fS9TVDdlMiNQXzxfLjpSUHBze1JPYU1zTFpwdipFcEpxcnc7L2I3SjsjZEx2eWopSVcpd3JjQEgxMz5IYF19WXojI19Gc3dxUDt7ZzpVdHY4aytpMCUuc1V2ZUFVVWM6'@; put 'c1RQQyJiUV5IQjo+ejIzXmcrVHN9STVRMF9PJS9fTmY0Qk93cmxaREU3eD1GZzdGL2RAa3ZMfl5WKnYkO09xYzJxc0xLTmF3WS4rZXFmaSZbREI6SkEzSy9AN3xvaCxwNSNoSklUIz1ecEhvTDs7MzklK2BadyZycz99PnU7aTFmRzduRjhBMnpnTWZ5ckM5aU9ndj5hUmhufC5VJWpXWUBqRU05'@; put 'eVhqYS5VS2k1M19LY09xVT5WMzRVcHFQZTZSKT0vRmNjSzNueUJ6IX1bdHd5NztQREZlTno3bjpOVldjQnUqVGkiQ0R1IkQ7KSNFLiFNWS9MYEZNdjpgcm10IWAuNyJJIW5iaFI5aDk5c3NFWUFRXWBwcygxN1d9KlZvQHt7IT5RRip1JSh9Nmg8Z0k2cmNTeHxkOTxyKlVHTHRrfFpSP103PWVE'@; put 'fTFeKntORGZEYWUpOH47RnJQWmtXYHJzWWlhI3gjWzJbcV4rKENuNn5dfTlda15AXzh3MCZvWi5hfDgyLk4jO1E3SGBxfWdPUHVpaTFQO0wiZVpwWHg5RGReSF17b01DL2JgNWlFekdASCZoMlpoTk09Zj8rfTlgemtbM211dCsuOzlKcTFpZVkvPzV+Y3hEYlEhKHtzcUA7ViI6WW4pMkhaOlsh'@; put 'fX55WHJMOX1efkNQUkhUcCN4ZlU6bWhKM2BaVX42MVh5blhwfXVYPEs7fGU2fClsZ2sjSFRfSk96fXlMUUdILFlhLCxsYThJfkxyJmBoUiJNYEE6Uzc9RH5WPihLSiY5Ri87N259eVlhfmkoVCVKTF08PShGSml5c0Q/azEjdnVaLFJUdHRwOUBRbTs9Tmh2Z3ksOElwKGRURkAwKFBVfjt+QURW'@; put 'UG5TSCV3LysjTDY1TSZeSXYyVUt2OiZlSFBpOHxjIik8Xig1bzs3VmJ6czdIbmtxeE4iUHN5XXg9KF5Ja0Q/Jix0SUVAfCk1RDR+fSZecFZ9ME5hJElTSyxXUnZ1VXMhKEg0LlFddCwvPzFuYXJPbDxWM30ieTZ7YV1FKHw8VHtsZkYzP0pubS5Za3FhdHs1QU5MJCxvU3V3fSxzb1FhPXF8Q31n'@; put 'QlJ3X1VrNiEzRXIpYUMyeXk9KSI6aDpzNl8xUHQsKyw8YV0sLytkWF1zPUs4Vkd+Snd7NCl6MSNJP1JlOVp2ej05UXNdNXpNNk4uQyM5IUwmezJfV11mPDYzO0Rbb1NWXjBVOkslMWt9V3wuNClLXWJMQllHUXcmJWVlc1lEcTMrQHt0LjdbQE8yaix9eV14clorYXtndlVYKEYwOiIjd087fWUj'@; put 'bDQ6L28+KGE5OFJZZEN4Sl0zYVN3TStnZCxJaituQT52OWhrMzVQRjIzfHZUVzREal5ZXncrInM7PCJzekhVPWFUPGB0fGc7b3dYL3ohJVU2dTlPQE5gK2BxfVJCXlZmNUNkUHBJSkBVb1pPaGxwWj5fZXFyVUtIYXlNJl9yamhfPXE9U1E5d3gvLjg8MG8qPjskaGZjPXVJWEFdWUZxRlMraUxw'@; put 'cmxKMGo2X34yN3JFazZ5cE93RUQycC9CRmVidXkiXXQiTTVAK0ZtOVk4WFFCNTxPSEI0ZFs3Ri8wXSo0WjNrajNHMCVxfExmczNYYHcvPH4wMSY6OypGRyQqXW94YT4lO2ZKTE9JM3QjRHc+TDpZPV4xL2x1YUxzVE56bGNZa0R4dTlmUC5AbkJ1enJeNXdkMitvcTwrckh0KGo3dXJLaSN2YVM2'@; put 'a1RYelhZfCVofnsmPzNOeEVUWj8wN3c6K0J3VWgifFM5XlkqPTN6MlNqNWhgZylWM1UkO3dMJVlVJW8jSillUEJXVTRMN3hNeDphL093WiVlZyw/KjEsRkRZdjs7K285Xnhda29wP097Qjc8Z2U7YUtHcngiazArJS9qXltfOitPdDRSaHVZNylScG45biNBXVRuNFg1O3lDdzNzfTkmJiNKfSY5'@; put 'c21dYFkycDM+SSRLYyksSj98L3BvY1FoTzA8Q1VseVdtI3lYdDY5KDYpakNSdUVlYSo8TWcvPlZaXThFM0coLio4Q0tKPmQ2YDMiTDY9eWJra0k7X1JbfnxbMDJQaTVrWHNnWXxIb09ZLFVDaShqVGBqQ2dDakchcjNTWV9uZGUxQEgyVFEkQEd5dSlnWWd7N3cvOzN1Tmk0MDxlIWVuU2N3KFk/'@; put 'VD9VQyJBMCt3Sz9BTWVLZTlIJjxNbzNLKVY0cnpiZElWPnhXXW42SjRqUjooWW5PT1pMdT5vfk08IXQuby8/IyNUVSpEPyNXJVApOHZkViR2PlNrc0hHNU4kUnpPZldufklmQythQU5dM3I7azw5JExdI2pZNk9AUiooLkgraV0jNXBfVHJKYzFaSlJhZUg1bEBDbHlOfGlYS0FERmd9LCRddXQk'@; put 'M0tZIXlndEVkbjJzKW5FWX07SmR6aSVwMmtheHFLV0Z4TnNIQlB9b3g/MGhGTztEWTMoVDpObjouX2NOOipfM2l3bWQuYzlNRHRTdmBNdlpVS1ByW1A/RGp7dT0id0lDcFBqSXxubS80WlNsLygpRXRzT01TUXt5ZShEaDc9Kiw3czsvI1ZwKiMjVkgoelFKVipsYUp2XkE0SERgeU1MTF5AZHQ/'@; put 'L1hUMmJrYGdqO2A9XlZoK0NgOSp4KF0kUTxAWHg9Q1NgRS94VjJBaTRnRUc8N19kdzIiaGldXSRvLFdodCkraFlAN2pRMWJXbiUrMz9LMVo7fl4qPVNyQVdlUSkkW15yZE59QkkwLiEsO196LCYxWiQxUFFfU096L29hS0pMU010M2sqfnpPZWA6dU14PDU/VzNJOUZ5JC5JKFpDcVUkL0YuPjEy'@; put 'JElpaVBtNnw9dkNKN2UwPXJoY1FBZH4+ZkkhOkJXbzwmMWZWKissPWt4NXhqVUI6eUdIMGQ4OXB5QnMyOERpN1REcD4uLGRbOnRyZUh3PVh7e0R9eTlEJj9VZCVody8hZ0x+Nl4wTjxmaSV0dXM4SjNfWGxdc09eTX00VEo9LilOcmM4QStTVlBxKEslXiF5cEFWWndZTTc8VUBtPV9+JHlFRiw/'@; put 'PSJMRjJ7VldtU0MjWWUqWEJLYTROZF0oYDJmN2pgNzVncmFRRyNtfDYhe1h8RmN4bDVPRlp2WnFLVSEwVG1ddl9nNHMiVT0jPSFpTk90Njt0LjtTa2ohUENUSlAsODNVIm9gdEl9Ylg8eHdCJCtRNU13dyM1dzZ2SHdPW2x8VT1MX3Epe3Jmcm06aUldJUxWNm9XZUg2WDY0PipoMCFpNG8iaXZA'@; put 'dyx8Qm5NS3M0dXpncERRIW5fT0JPY2NQOkBuQTlubGRtRH5WaWNKKngjI1cxaDIwRG5bVkJLbGdGRFU8ZlkkNCFdTWJuP3tlVzlnZl52ZHJ6THsoUm0zVF1PU2A+RkMvNkc0QnEpek4hYnR1K3E3MU4sRm56djBRankyQ2t4JixJVXwwVmEjciwsMWFmbSpNYzA4aUtRRCRSKGFpZUwqdVpINVM/'@; put 'VE9OazZtYzEiUGJLKVM2RyxMNWYoQG8iN19Rd2pgLGZafUt8JXFSSF5vXXA5cmBzejlYU2U4IUZeYURGdkplQ2tCIjNUOig2ZC9BTGBmenB8ejskb3I1MEM8O29tKnQ8QjZjKEJubFVeR0hsQT9NZlh+fXB0Q3pnZXg5bkpzJVZwZlpLPDZveyNQZXVyOFtDeVspY05GQ3RxOmN1MU5oQXIqMXM1'@; put 'PjdCXkBxKVl5UXc7OkgkRX5pcSF+LFYjS1haZkUmVHk0d0xnYUx2d0g4e3EoKWhhdXR2a1MyKC4reHxNbGF0YEYpODYvNmFHSmZUQUllK2U3ZktBLn4pWkgkUXZFdERCNU99QldkNmxNMlZRLHxDP2V7TmZ7dWd2LkQ5Ij5oKlNMa09LSW8jMXpyckY2Y21yRDhiaCt7NkZVWVM7NWgoRFt5Q2o8'@; put 'Iy5WNT06ISQrWUtMO1VtVkNWTTpDXy5TZ2JaVV5+Qlg+dj1nb2hbaXRxS2Z0JEN9OkhyN04lKlZyT3ZyTWdVYll+bnxBXj1YOVFlblZtI0o0W2piJHw7Y11WcTRuZ0lxdyJ1WWltK3I2ajpDZ3N4XjM5fldBYiRpTmshMXZXdX4qWVlbfC8mIjFQI2RdSWMkdFJPSlpRSVV5VDl1cDJgPiFldFRo'@; put 'MnFyYzdSKkJdXWskc1hqZX5XZCheKnhRUnZLQWZtMTtYXWJ5JGYqPD5mKndtPi9mWndzQCplfHR6VUxYKmVQISZuLjRVX25yM2ZQUFolcUFXWlYlJFdNWmBtQGlvb04pLkJ8QjI5R2I4fFR5ZktedUxjOk1ubElDYHlATD9XajlAN3pEfDRMeHF+I2k6L3ZGUk1ZZ317ez92IU9KWyJybkorWCV9'@; put 'b1NSXVg1RTFsQytoanxhVzdIO3BtMitVajpfNl15c25GO2k1PmFpKkt5WShoNkZSWWV4e3t5TVNoYytZU0ckU1NBXmtpMTJaPTFDfVQsa3txNn5Wd2RZYysoNkYsPl93UTJoIyopdFljQ3lWNlM8R2BFSkFjT35rb2BGTkdDLkh2LHlLUjBWR0p1NHE5bG47d1tsaSlddnBUOjtVdm0pNGt1Wzdb'@; put 'Il5hS3M/ZihrZFNURiolNlZlJTpPOEFiX19GaWE3RXcoO0w7KT8/aD9iYzprZ0hMfkcmJW1eKUp8fHBiU2MsTispQVMwSEhNWDohYktGSUlLeW5qWjpMc3cwNjIuaH1WenolXkpuXkVzNixbUlFDMjtgc3pWVj4hNGxiM0dVTFdfU1JwY3x+dT53dm50ajluSDdXcnw0TE02LGBISCVDJTc1UFVh'@; put 'KW58KVpHJktmdkhzUSo7PWtvZXQvaWQ5YDc2SGw/WCpJaW1tSTdWa1k8XjRfflBUSWVJJTJoPXdbOEJPPCw/UX1mJWNocHojUjZtRUFZbUwvQ0twSTJmNy9CO2V6eiNKNVt8WkdGRztRJDZLcVhFWmU2VSxKcnV1RStUVXpkPWIuKzRiUk47VGpIbjthOyY4RHtba2AhdHJ7L3RxSzRSQn1uLCpF'@; put 'fVJwM2d7SzM4UHZvK1kmVCxFbThkMHRQIi9OZWBnczdGcCZqMjZZTC9aPE95YSQwKGgxdW5NWW5TLGxTPXEmMTBOTnMxISVfMUQmYzFfZX5RX05VNUo8KmdSb1V2YV1VU0FALzFndHlMPiNzIjRwIXBWLzp2V0Ulak9PZHR2dHR7cGc2QyIoS1MoTipJJihtJl1eI0JeL0I+Mlk0Pzx6MztPRU5p'@; put 'W1NKM3EkeHFOQz99X2skUzpXcyl8TSo3bTNSV2Q+OlY9YnxdUm8zKjVdZnxaVkRiRzRRbjxzPlN7c0IyYGdrYUhUZDxxdVBuKCZXfCVfNXZYVlZwWTFqWSNzaSpkMUI7VkAuSTROZ3QrZUw2cXJJa0Z0Wih0OWMiOl5SYig/YXZKVCtJZD1IeHNKNE5tNy47dFI5N1E3fD9WWkEjeyVBSlA8dyVW'@; put 'JW89VUFQXkYpRl1uelYmQUpic3U9Z3U+VGI2a1VVeExLUDleZW84bEtKa1dTRjtqeG02V2wvJmBvZCh1RS9KIlVJV0IrPy97bj0heTdTPUowTlowLkgxclFOKmNWaCQ5Tno0ZD8xQzldNz9ONiU1YzkufkxzPmg1X24hdVV7bkQxKyNEYHdsQiRjfmV5MXk+STlUUV85dUlFV11GXj8mTjhQOG05'@; put 'Q2tkNUY7U0lCQ2FEUkkvOV5ufG9eW3Y1My5mVltQczElY0MxQmV1PXtfdyRWKnFie25XK2RgbnJaZXUuPFY1ZXtkS1B+JF0+c3wmPG1vdlY3bldRfSk8KWN6TXk+VDs5ajklMCZ7bCUpMlQ9JHt9NGdyQ1BUXz9vVl9JeS5VUU80anlpPXU7Vy5od1ouTC8vaDVrLlJ3JVBIT2NFIWNULFpgJEN6'@; put 'RkMuYFNPMi47MUFHYEFRdSFKaUsySnBTTjRSM1hUbiwmIToxKCtAZzF8X0kvMm1DJFhxeE1SKyZfKi4kKD9ZMkltSVB1KSlAdChoTiojX0gzRlI/IW1QR25+JGk8KUBibkFUV1piUU0xeCRsaEZ2aEguJWJveE0rZVVYP259Ujp0cWtUQmFEPjMzR0c7KlhHezwmaz8yQ28/X3RtWCpNbk8vNiVQ'@; put 'ME5INnB4ZHR8NjMqamxPPE1iL3pjY1cpXnZrWCJwYyFzVUI7c2Y9bFF9aXFeWDVWfUNjT09WIXt1bTBiJGhYP0lOSTAyfnB9biNBRyskc001STFFTjpzUH1ofCF7eyJHfHdyeH54UTU0ZiVQITg/TDxTPGdoQDFeWCo5KChgWDFNYUBMO3R7NDAxSF1BJCMweSYpO3kmZnk1S2A+TWJvcEN4K0oh'@; put 'V3lxJilfUlVmZmZ+LFBacU9mMllJck9aaUIxTSE6X3tHMlNDVlF+JFUqeTNoUkNCXyFWQXJibjVONFBXVShzPD84PW5bQW5HYCxIcCQqVjVMPFpIXkl3Q0NFNnc4VjBvdlBdRGZDXnN5OlM6RjdSVyljcylXWGBeTEF5RSlhP1RQYj8mZXMjMkQ/OG9ZbDouUlZDaUZFbnYmZkdfTjIqOD8rPDRd'@; put 'TF9oUCIzazl5SClqOCY4Oi8/ZmpUXS4jczJNXy9RXUM5NGRiSm1rZk5WSF4pLD1GVlheQzRMcXVXMCk6dyNOPlUhVUkpalQ/aCRBcHpQNTs2O18zJHtiP288cl1Mejl5aXF6cCkwaEgxe2w2LDpKVFhlLGAkPWhYXUMkdC9GZFhGLzhSZUdPYGU2PEBtPXFGeG5KWTo7MktgclRSMmJPT3dRNjhR'@; put 'LDlpc154VW81QFtbUEwuQ1N2eDVmZEByUGh+emFSVjgrX1Y7WjZHQUVOc3Q/XmtTSEU6YnF5fSwlOi80WyxXNTRvLFFzSW1mbWxwSD18P3IjXy80P0FxZ31DK0JnY1Z3W2hrd1cjdnY/Umw0TnpOODZjVH1DL3p1dUl5Z35gO3NAXWFjIUlvcVlse1cvWlNfdkY1LmslSyNEPTNRUHBbXzxFT0F9'@; put 'KkdsTi93MUp+YFdtOlYremtaUiYwXngjdGVZPEBVY2swWzpScVRnYyx7KDtEZGMjWC56ej5CeDI8cC5OSUt4YmBGOzFkZiZPJGBIS2VAIl05NCYhV3IhfVRhTSwzQz1gbFpXI3B6TlIvNiY1V2R7PXkuVkYoO1pSdStTT1MwdSZbdEQkeUgvYm4sbC5hR1hVbjhLIVpUWlYoQGhLKH5mYktuNTYh'@; put 'TjVYej5KbCM3Y25IfG9wTj1daHojNDRxUXskJFQobylpfE5zRHN+KlVofmZXYDA5OEtvaSUyUmMje0RmeHtKWHxrI3EsOyVsKERYXUM9K1VgJSFBPCZBKTF8IUUkTXBSJjFeRHU4SXJ1dkxxdWJtVkMhPGFIcypDIzJQYX1fYUQqN0Z6LzxhT3c8LEZHR2Y6U1Q1TCFgQlp4YzdoclF5YFlKR3BZ'@; put 'S0c5TFV4Tm9RK1N3VWlBbiN6Im5ZLEElVkVMQCxyNmk4XUI5emdAOzF5b0U2WWI2eik4S2RDN0x2QGdZJDZSN3MjIjlLL0ZhdXE9WzA6L0RBdip9NUt+UyJSQlE3Xm1xQ3cwMX0hMHBwNCwkJXc/UjdDISMpe3ImJEM9aWh4VXgxJEE8Y0VFQkxhaGFWLiQlWmhLYVtJfiFPIyN7MFZ9Ul9MMEor'@; put 'ZkZZbD0rT1UrYTJBPF5DNExxdS9GXXc6Rk5Mfkcjaj8hQVNmK1EhdEpzIXpJNkwxVn0pU1omKmZ0bnoxTzddZilvR2lRYF52RyVWKWdsKlU8JFpZdy5udz9YIUkwbUcmOjNCM1ssdXY5aHsvLkJvQnFqVSM7SVsiOHNieGltcm5AcT1pM3QzXnw5b10jW3tnUUchaiJgQj9LKEtgI0Jxckt7S3Am'@; put 'NW0sSDBYKExxL0dOZFk2QkNyPzAxJGQ+bDNgO2JvUSx4dG0iZSYlSitPSyxib2kvYF1gamJmeGRSSCRFQnA7cm1QLm1QZmdiQjZZS2B2PHJtTncuN3hHRX1YXXAifFExcnJtWSUmTFVjd0ZDMEt1fiMrRU9mQExqRzpRSFlLbCRZbyNMRX0xMithVGYxNCJiJFc2KjBDJG5WKzRLRkZ4e0dUcHs8'@; put 'SzZ+RSZXJU5sbmUlUXpyTVNwUiRjMGFJJG9jRHkiO04vd2dVSkcxMCt0JnpOKUgmcyRxbGMkNHR+T3g6aSRba3VxemBxV0ZJa0x6SnwkPCRbZFEsSztjTnB8MzhzIVE1OTFJPjNMRnVrc05meT0jVlhoUTlQUj47NGpYLHV4RD5gfj5zKztgUjZHIX5CRE88WzZAUGJuTGhqUW1BTj05bFVIfGBP'@; put 'P1E9RiFgQjB4OzhpX2BmaENCYjxWSSN8N15Ae2BtcXw8UCU4Wn1KbSFsMX5fTW1KVFp0fT9zVmIoPUNHbkZ2c3FMY0I1fl5+YX5QSWc4Kz59Qk0wX3NZYkpBOlBoQ350MnRKM0QrbEp3d0B5MyJicykqS2xwRnJ1KX1neF0+YFA+UEpvNyNaNV5EbUpEfE9yaT5OcCJuaD85XjVueiF3eH4/VSko'@; put 'L2JQSzB3IipMOF4+TSg1UDByI0tPV1gzIUssPTxqJVYlcG8sVC8iUE0ieV93YU13TT1LVj05eW0rKn0qUWpOJlpodSlaJGt6Uyh4VnxSJUdOfUFzMUNaIkZ7YUYwdWMsdTVkI0xHMHF0T01Hc1t8P1g2STxLVDd6YXRPKWZfe1NvSEFgdkpBNXUlTS5MKiFCSE80JnNFQ3c4bjp0a3A5XmUqWTx6'@; put 'QmdwWjZJaVFZSXpOZEVXMHIjS08iTENCWG9bekZLRDJAK0tPMGhkMTg8ZS9sd3gvbHdKeDd+fFMzdVd0fX5sV2dDcEJoO0UwciFOIyQwa1RAPnJjYXlzK1VEemJEZl0jb1tjaH11cEs7QD89JTMpOypMdSZkNmlRRHp7LiZaRnZiclYpYk1qOGA8bGImMGZFI1tbantoeCtjYypfWmdzIUFROCtz'@; put 'fVYwPElFT09MemkrdTlSU2VjV2pqbEU0MV10TjJBRV1GdDtnXlJAdFIwYVE0U2k0KWJZYWouTEhNK3pqUTZ1WlJLYX5MTVN2UlJjQ1l2TixnWVk4fUZrWD5FNXEldl18WzIvWy81IUdhOFk0dVtRSHY9bkNZanQvYj4iOTRqeml5cUUzaXN3WCosIkZVZ0poc2ZWe1U0WXw0YGg+W0EpcFB7SlA4'@; put 'O287dDA0QXcyRSRkQ0RWTUljcCsjOEohSVs/QShxbnVDfnkhaUwrU0tpSHMuVU1USl1APTM1Q3NiLC5TSnpuVEdnVE0pTFlHUklDR05FK0w2WGdHR0ozTU1TP2YhdVlAXT4+eTs0Qk1baVksZlpEOXw/XmovMmIsVWZBVzhbL0NURTF9OX5aMWVkVmIlWGBJbj5LOlYzT21iMWlMaGcjYjQvL2Ru'@; put 'KVlXcmQjUWdTaWM7NDwhV0BwWjxTLG4qVlJUYHAjMU5TTixDXXVbdUJIaH5OWWsrdWBwaHhnVjddMnVxKmE6MXlmKiRJZ2BsRDFDbCRYM35bSCV1OEdISiFyWn1OWk0mfElRKzYoSExZelIpZndpOk9wZ0U6M1A+OiV3Vzp3JXg3QX1FeW0wdUhGPGt3d0JHeWY1cnthYE06SSwwRDI6RF02cXJ1'@; put 'QEY1dm1+e1pgNWJ7aHpQekBaOC8wKTIwdnROVWJRazFxelVAa1k7YjdxUTliViVAUHFAeXU3amJ2eFdOMGo0cWBLWEdNUFJhW3duWlEqT1l+NUlFQ21BIStzUGhbRCt3VShoaXt0R2RxZFJISSFTSVZhWXQmMC4qNi8/ZGdvK35KMEdFKmdOSj13JEAqKFJUKTBWTSR4eGV9ZzJNKz0wNFd5bzcv'@; put 'MChqVWkrQEI0Sj5xbVMhYXglQEgpUmRnVT9xTGFkOHZrdE9INi5FfXVAeSo/ITB1WE4sKUx0WUVWP3VbeipiIzVNTilnemp7eWBrdEdFKDwrMWM/UHY4KjU/eXJ0WUVmaGFuKlVZY0NMOkByI24jRyUpS2ZyMHJeJT4kOjRnaCR7KSZKJTg5S0pKSFZGWmtHNlBuIVRMOSxNfGdKUVE2d25BI1Qj'@; put 'Sz1VfnssSCU6Wig4N110aklmYklKblNOV1hWZEV3bGZ9d1tXeVFMdjBJeWcuLElYMHN+TVd+d0t5WT9OcywqKispMHZeTV1qUF82QVQ6dWZhd2YvdntgYW1FInYxZDN6RiVXVj10VClXeiRJYX5xbyJlVzF0UkF4WTUxTywsYmZQOXRWY1tteXxOI2ZAYTZlI3RjYXlCdXxlZmFdVCtCfD1Va2FU'@; put 'PkZ2RlJ+PUNRLm5wIz5MdkIhfGtmQzU8UlIjPV9+fEpwcCNzJF5ESSl6I0MhYmQ7Rm1VViJHOEVWRDs6W3RESzo5VlpePy8oIyYhPzxaMipeLns/ZTgyTjF1MD4jXT9dYWF7ZjRbUDhPXkN2eyg0PEFyTmFdITBAPTo8Xl1ScnlwSitKfjgmTVkqeHhpOk9CdklWfWQ6dzk+OVc3bEJxKW9kSyEq'@; put 'WTBURjQxVmtkY0lVNWh0alVLaVFzXVdxWEshUjJNRWZtOiw1ODQuMDlCO2JQP1E0O2ZSJilKY29oeDBhZ3VwLylCPnk3RV1OZ09PbzZAXy4+Um1mNWZKMGNJTl0pU2hiMkRdbz0lUERHOHIlczZHO2VsRjFlOCQvY2BqOSw1dWpYS1NgOnJNOXN3TyZ3L0J9bmR9el4mIjU0L1BTUWU4fHVVaUA2'@; put 'ZVNQNlpVOmYyTDUlL2VGNXRuKyM9KmozNSlkZF51QEc1Xm8wNXN5ckp4WWhOM1R+cFZgKzFDTywuQGFzRyNGaFBCXWAoLGN4WUU4PHIlSmhQa2M6QDYhWT93NDJNUE8ocX5ZQl18YF1sIU4yVH5wciV1Pj8rVjJXeFBeaTFaRm48bG5jPGhXenFNXVNGVkBQT1MsOFZDdyg3IV1balFmZWF9N1VN'@; put 'aVFFfDklTmQvbnRaYmBSUXlKcmVRP15QKWdjeT9KfnUyYWpiJlVPYmlpImFuP241XUlVQylHK3YhQDpOK3I/SF5OK0xYWityc0lOPyg0L0RkfU5ZR0Reb0ArJForcmlHfXp+UXsvQ1o7Yk9pVDRAb114Y1d1MyJbN2NXZk42RiRqYSR0SzJvcCVQOlREVzUsdnBPRX46SHx6RmlgOWtBbzYoYml0'@; put 'ZDsuIXsjfnVbQSZyW0VAbS8wImAlKTFqXktoQHgxWHMoTlJDQDMpbnpkUllrK3VBWTtPUTdfLy5PNlB3RGV5eU57W1VxS05QKkttL0NUfl9DVW5xXXFYNX4+aDQqbWEmfE43JDBqeCJGW0ZjWHoqVlhPTzZSZDNVQHx7SzRuMFpWZX5laFkma3I/cXk7bktORlpGJStucFVJIS5XZlNQNlpmWnFy'@; put 'LnZZaXJvOVZKTlBzV0JlYExGQVRzV19ANGR6byVEdXBrZTp+SGxlMU0iNFVqfTAkNjw8b0VVQ1QuJSsqTyRkT2k1d0V+ZUx2c1AhY1h5aTdZdkdCYWoxUCksN1k7d0NqVi8/KD8qWWk1RT9EeiRxK1QvenF9Jkx1PjxgOVErQHIhRTU0Mjo5alE8P0N+ISp4dzs0ODU1L2hxYDNQQlp3ajQ4MUlB'@; put 'WD03YiF1QFtAcU8yM1taZz12SWFVdnddWC4pSyx0Wzl8K21sIXJmfTBGc2M1dTsqXzlSMiZOXXpoZGxpTiFWIj58aD5xRHokKzlBKnVJemdCdERgV2ttPDVRJHxocl5IZzQ6Sihkak1uNGxrYS5seWgvaTR6aHosVDh0WXVoSDU5P01ZLnd0S11KP3tSfjY5U3lgWTJ1M0NwOEU1dEBJZ0lkQnZJ'@; put 'Y1NYQEgjTXllaVVXcHdCVzo7PXhQMURadjZzbzUlVl1AdVJXJTBtJFdpPiFJW258ImpuMmoySWFCQChQVTdBeW1QbU0yODZOTnYzNiR5X3VCKyhhIm9KJFp9Y35FY0FVfnpmYzgxOHMjNExVd2peXUZGIjJabmUzVWVBS3YlX0BGKTVTN144OjlOI2JVb0JqV3d1cCRHKHZpRTp2MD1lezJKX3hT'@; put 'TF02MDw+PWA8bTVsZH54aHt9ek9mJiMwIUNPNUNbPFRdYURydngmMzkvQFA7SThBOFt9PDYqdTw/RWtUVmRvNSV+MyNdcUQsRlt9ZjxeS3pGY2AkVDc+dThhQmpuSUFTMEUuZyNXQj57SUcvWWFqQyspYmRRSEVYMyppLDBNInRxIjtodGJ1NjtDTndUWz14d0ErPGYuT3Y9KzRDR2B4SWRxZHdu'@; put 'T0ZoPFBHZiYzOTluRC9mRVQudl09LHtTOiNKYl1pQVMmOnYlb31PVVFLOFVhM35be0UoWSJKcztZaUcuUkl2JUZoaCM8VithQU1BUyV4WlFYJiltWlUqYylMfk9NaT08aCtnbEpQRFRJVUJmdV56bTx3PEsqfnBJYmVwaGMxTmQjfHYzbVdzS3dLY3FwZHVPUkFEfXt5Jnlqb0VCVDpCeXAyOWFX'@; put 'czJQL3ZdWT1LNjlvIVE/IUNQMUBvfkNRUUNrJSw4VCpNKWB+JHM/KDYuQGZaQGtOSUVNZFZXKnAldUc8RUBZbDR2KCxMLmlGfSQ7XTI7ckt7Q3A3RHdpKE9EVXVKUi56WSVfPyZnSTo/OlQwWElFczd+Z3pDLFdNN2pIYHQ3ZC5MSCpmJWNkeW4ibVNJXT1HTE5tUCNHYH5sfEk8e2VCO3lFIlo8'@; put 'a3wwNDMpUkszNiNnJl0kZ1IkPjNPLm5YWF9tLyEoUCRsR1FDX1F5ODtCM044aSowNjxCXThqOXQwN0c6cDxlJkBZXVVDfTBteGU/KVtqW0lRRWc3ZDBgaEtoSlorO0Q6TUZncCxncTcxZ3ZGJW1tOG8sR1NJcXVfKDw5JX4kLmNNUztaclkqYCQ+KmB+el5AMD43OFUqN0xXSTJXanAzYCttdTk+'@; put 'UlJyNXdDREI6Y357K1tnJENtXTwuTWo6Ly8pekJFTHlpMD5EVEJaZVsjO2ZfcTFnP3A1Pz0/XUZ2OSJpYWNqd3BybHZ7VGwvLGw2LFVkOTUmVWFlaX5WYSMmM2IzUTU/cU1tZDZPUnNsWkNLJHZWdW1iJE89MG1obXhNb01mcW9rYlVVPWklZVsoTG5GSjB+cngxNTl9XjNpRkRDPCg8VDZALjUp'@; put 'Tj9VKkxeRzhwW2ohaCU0PCVMVE0pJmhQU3giTkdxJCYva09EcDpWYks6YS9Rcyh4YVlHcVc3VTlMWT1uYHByWiVQeV4pZXx0bi51IWNoYFMjNnxvZVI/UjhaIS9uVlJdOTNDPVlINSFGXWsrfWslS2BhIz12W0gybWlvV1YrQEtMeV9MZ1VqXiZgRk1gSXFdRHolT3QzPFcpYEt7YDdmXkpASlEo'@; put 'M1srYjRkPiJidDQ0WHtiI307e0k0MCkyWmV+YWkhLENHP2NVdnUrZkhNU2pYZEJHSkRhLk5IPT9dRmxpN0YkJCpSXT5FLDBvLGNpPyhucGU7RD54eFVhT2lSIXt5LHpzbUpkRi9MXmhFWHdAbWp7fjs2S0BZJFBHeXtUK0E6TDBJV351eiEheXZbX20+IiI2MU5eKWFTYX1CS3pRLCIye1cmPHlH'@; put 'WnEyJFB2UiNZbU42fnRXVis1YiRvc0YvfVA2ckxGc1oyTWFIdDB7S09vTFc6e0NjNV57L1VuZ25TeDhERzVCImYyWl1NIWg2WTBsISRJezNDRTlxJj5NMz53UGhdO09FXmJHSWxKNitFSXgxO31CWl5mXUx9YC9ZZG1vajpXOCs7NTA7UVJBKlYlT29NRD5uYGY+PV49XkhKeXIzbGgweEcoaGAo'@; put 'LDpqc0A0cXJtRXZueWx5OTdDWmV+fFJDfUxHcDh+aClbanw8bSRxPlQjUndQOi9CMTBQOFsmfFZgeCx0XzErOi5uRX1oPTxwe2k5byRwe2dRPH0vUEMsS0IiUkBpU2NveTBhJmp6O2ghSCE6MDlTZUIyOTZgNG9tY3IlUj57fENaUm88a2tJNkV9VFMucWJoWDVlTjElbns/Im94UUtmZlV1UERw'@; put 'Tk5VZWxiYmhGdGZqQXxAeFkseClwODlAdCE1ZktRPnFQNk9yIWk4QntOdXZSSlZhRi5VRmRvcWBddUdoQFVYVmoxN25acj43SGEiZGYoKTg8XT9fXj9BXn5uO2l3SmJFIjBTfiM9JChbTl5be2xhenssc3IpREJ5QishPSNARFlge3N0NHk+cC87QVEiXV1gK0IkIUdgWX0qYEQmVj4rYEc0dn1D'@; put 'PkxffStUQiowYFN2Vm1eW2p9Vk1SLzYlKVRnc1tdMH4/Ik51JHBMcEhvcllpYCFxKktHR0JAa1syRjFdcVFJdktvRzlvUk99MFNmd35hfT8randGYns2bmoyIz5HWWJOTTtvUXd4NEdIclkialZTWmMrYV40ejtSemhPaX5VV3sxOU4+N19YMDJUOyV+JSNrUlRZWytib0IxPyt0e2BeTWRdMUM1'@; put 'Z355ZT5iKzMyRVJhPFh8ekp7QnB6KUxifWl8Tnt3PV5QYzRXemdHTSxrJDRQb2FmTmQjWlc+fCR7YVNLNFtQYlpWUz9BZ1cpWWk+QGV+RCNMXzF5bFQ1LGUwUmxtI21CdDY/WW8/JndrUCUmTm94Y11VdT5KSy86QSFJZiQ+fGNXIzF1MlJDTCllW0xgalcjeT8/MUd5LDxPVj51UylFOkAvdj1C'@; put 'Z1V1VUN9blUvPDl3JD5EZlc5V1Z1bVVPQ2s3Ky5lQFcoVHdjajtAPTY+N2xQQ01ET3g3Qlo1fHNoY2oiLlorYVc7S0tRKHBbNT5DWCpzMnFXT1Q2MntTTCsvKTxlJXE2JWk2Unp6X14+UFZ7fGdrRWdGXnNGRW0zSVp2LEtBJmApZmhmI3EsayFAWClwbEs+MW92QStESGZpLGFzLCRvJEs1SlpI'@; put 'ayMmaDFWPUx2PWklQ2xCS141c1BtaVM3dStnQzNkIktMeltSRU0iYDB5IyEmbF5neFhyI0MhL0k5ZmVeR1I8MEh7bzwrI3U2WnBtdm9CZVs1Xi8wNmthQylyTTEzeEcoNjZmamYyVkR3WExaX1koWzh0VnNqLFtxXkBiaHVKTyNaa2p2N1d8LzQsLmFSNjlodEZEOFZpW3tbUWksKW1NYDIxNEpw'@; put 'Ji87eX5WMnBvfDpOUFsqP1hGM1E5aUBWKn1MaFcvZSglW3w/P1BGcUwqfH1bWjwyRlhaM2JJWkE2Y0BNLDczcHh+Wm51OldAWUBASzokfDVgPHNuP3EmXUBqW0c8SGomVX5pTFopPSQvYms2SHsmVWEwcCx4c31ofmEpRkddd1cwQzpyPkVGSmokOiZHZ2xtd0NpcGxSUnVMUCR3T2BnMnYpWD1T'@; put 'PDxgS0VlViU/JDthRlYzNzAsRDBoVjJdOlYqTmo8X0podzhdJXxPVlMle1N5QGx8dlt1VncjLl8kbHpZMHEleENFXiluP2tVeH0oZ0VbTl89QC9jRTo3O1dvY1hNdmAuZXl4eGNzaWVhTnxSSXBReGZNb29AYkNWL211K2U6M21nUENzLmF5LCFGc2cvaElddlMhQHUlbjkwMEJdaXBganpiQH1j'@; put 'JkxSPjZ5WmZgNDAuLC9fM3dbQE0rPWghd0BHRTRCMUt4NUBOP0pTXm8hOGF4UjJiV2QsYldmVyxjYzllJlRXZXNILD5oQ3F7aXUuJU03fTNKSWRvOjBAbHMhJXxiKWlzYHFPMkQ7eGlybGssUFMlbndlR0dkTH1YOnhVIUVEMUprPTRVJHI5SGg4YTl1IVslUCg7JV5oZEYqI10iXzx9JFtuUUZs'@; put 'QHBTUEElaHFGRn0lSztKVDdKQFlAKUN0TG94aWthQUxPQUR2eTA9Mlo9P2cmbiVlVVVLbVQ7WDlKVE41Kk0seHYwSlRpS29wQzpqQy9eSHY9QkQkVjI3MUdQQnRAJXU3dzd2WDkjbGxqZlRaQjM5byVnd1IxN0chSjw0Xn5eSzFPa3ZLPi5DLGtpdTFOQzZqalRSJW4kbEJsQ1JKZjtZKTFtZDIl'@; put 'djtaOU9fYmBTTHovbT8kfW49KVBhVlMhaGZkPEtBTHN8R3g1KTh9LF9QaXpnV0ojYndVdiQpTWA0ez9YL05sZUlAbEV4KW0uK0ohTDV0QDEjNCoyQGBuI2kuajApQkxHIyYhez9nUmY5NjNiaCpnb2UzSlgjblBsV1AvXXwmY2hsZ2BpL2BvT3ZdJTU6TiYkel5kN2pEK0BVfiFJKGAsPGlGYzVt'@; put 'bUtLWixjKGVGY1d9TFokM2BgPW1GS2pQdCRMViF9eCk6cDtSOzk3OSFUKV0wLGJ4Z3M1NFBoP2dScXxdd0VwNjMpOCY7dHJgYjlVT0sxK0VMaCVAbmsuN2hvI29XckFmXTAwRl1EaUxTflthIm9rdjltTiE5aWZJYUUoTWtGe3tEbi49LEYhJH03dEpxMVNsdkAiXWRPNyFXZ3N6NjdQMHo5RDhg'@; put 'eisjKCVCZGdSZUUzTW1JQGV7cyRVRW1dbkt8LiR2QF1vM25Ydzl5LF54PDd4eyNPbXh2aVtRRl8ocUYvV0N5Rm1JdmtGWmtEal1WVTx4VSQhfCV8e0wuK1pCJGphcG9oUHxwWmkoZXJackdUYzUmKCVWRGM8XmxNJFRuQWdvMjhgfV1hWWFYdk9hUnlPPFcxWl5CaiNjbF0yWTAjcFk9b1tiUl0+'@; put 'YHNWaFMrVUBkQktVRStsNEFtSTBZJVdBJDhOOFZPe3V6RDtdSikpYU1QS2kxV1A7XzVjQG0lOkJKMnc4JTsyVk9JSXF1V11Xcmk5bEwsanhjY0xlMFpCKF1hKl90UGk7fWg+Ykt2YVpIeHJPZzUoN0h2VSxYRCw2anJ4R2IlSWteREx6QkZHL0YrdFYma306RD1xJC4wM2lUWVFufXhtUmBqP0tS'@; put 'V2hWLH1IPSVvcSpkIV18X3dBMVNkLlRZW0R3OlghJmx5ZjdaMklxZ0hgdl02LjdXamtJZmBkWXg0c0lgXTgvMHFGVGA7Sl1XZXBoPVdze3cqdSxvfWsobGxPW354InQ2eFcmZndtUjYpQHFsV0guLjZyQ0xSV0g9aS5NIyYoMSR7PW44Sj1QPnZBK2daWDt9RVd4aHJ3UiI/WkczV1RmPEI+UFQk'@; put 'L0hxRV5XNldyITZxNSF4UmUmMHwuQz5Nd2EialZYZkA9T3pQZU1wWWNARmd3VVI3aS8mMlhSbTY/dHNUdVY3N29nb04jJnpJL2YrZy9hJk5Wd1Q6ZHFoe2k7azMjVjtOK3tXUkohQVtsREo+NjFaWWYxaTMuXXRjVlNTWl1jPyk9Wlt0VypVLkhtL2ZCL3BATVBsNntIMlk3Y0tZYElfYFYmUVhO'@; put 'P2VOQVdBVEMwa1NQJjhQcEY6U1YlLFVBJkkvcDx5USpeUjFaIVF0S11YRUkveHZPLygiXnxQMlEwb0IrY3lAUzFkLCI3WGdtPF5bNmx9OVM1SGVuP0ZdOnlyS35JZnk9ZSVNI3FXVjM5aT5bRXYwaXx0PW1QU2ArS0NVTlY/Lz4pT2x1Yj4pbiFkfG08NEFKOTwoKCptYD5yVWVYOUlUYlgib21w'@; put 'N2xYclUsbGQwaCQ5XkNESGhUMn09bmQ4dVVTQ11bSzZueGtoU1B+JCIyNTNeUXhdUnwrYyYqQD8mVVR2ZmI+N0w/UWM2fk84ZCgqLCQ5TG9lR0JqPkNJQi95eFE0RWVQWyI2eGw+flcwZEk4ZChiVkFefXttKHJjNFI8SVhGPWloeGpLIT1OV14yNSt5dCJlYCpTNXxHKylmMi5BVUJgQ3Bxbks0'@; put 'ZztVfjYwLC5RVEJRXyY1OW9Bal1oNiVzeDJ2ZSJnYiElPFFvWHw5JmttPl1rJGRKI2IwdCFJI3RReyQ3XSltbUMkO3peWjEvJmttWFR9XyU+ZENSLDZAZThDNkwkND1mMHIrUCN0UE5DOzFTKHwldk0yaCRqbSpqOWpyZyx1bH0zT0wxLlV1SFMlRHQlY2ZIXmtaZ2hyTkN9dVZqIzxScWE/OFVJ'@; put 'YUVReCs9SW9RRmFaQ3BZd1Jia3dnMiVHLi9hVltdTk50KztDImMjV3hiL0JDR211PkE1NElFU2VgKWEjI0IlNWlRUXNJeFtmbGo6KTwkIVl2Tkt3bj4zZk01M2UyaWlvJiU8VXAyP0taKG4yNXN9XllsKTVzdislIXJzOSElV19hXnJRZnZDIyFPWi5OPmQjXj1CQksqPVhXQHk/cm9MPWFJKDlT'@; put 'ciZZVWA3TlppVEh+a2xJcXU/cWA8Oz8uRUlKfiFYO0NOLktQZ345Im0mTnFjWCozZUNwKytLUjhdZlUlekJ3YT0kVnB2Y3pMKGB5KGNbUTtsTWdHMW0haTVnITFRTlVmMlEueUMzV0FtJFR3SVFCcm49QyhhVixycHNwLFEkM0gjNSN0LGshbFtfNlhdfG0kUGEhZT5KWVhkPmR1cixWe1A6MSFY'@; put 'MitRWFopcD1oKiNXPzRxK3JXYDBoSTtNUWhibFRLVHZeSWZ7IWQ1Wit9WD1ldFAmVmc8dEpJLHQ9SWEhN1gmeEpYdDZDalNqcElZX0ptenpHTWlNI1I7cDd4bWZZUXJCe0ZVRV55TElkTWBDQFVNaDhDWFhAeUwzTFpzN35WNDxJLHtfWS41ZnZQMXAkUkZIOV06azl3Mi91QD0rPGEvVEBeITFp'@; put 'PElkOy9OOFN3dCVBSXx7YyRDaCloSVlbKH03W09EeWxYOmNDWTIvU3RIJnUkLGB7eEJNYTUwYncvI3svSDQ7NFI1RE49Q1VMXiZKQEYiO0Y2MTVFd1AzelAwcU19SEp2NT1GMXFMSWVNOkhbQEVhOyViJEExcTw9QjIrUS5AYT0wNyFvbkxTNztVPG9qPVRRcjQ6N0srKSVkPz1oVTspTmJjeEAz'@; put 'SDwjInVKImwxJl04L0Mra3M0JU0uNiZZczdiaD0hXWtqYS88YCRrVWtyblFoW1RhaDglSEBgRlJ2dnd6UFtgPT0lbHl4aG5LKFlmQmtaWFZ+TGsxdkxaa0YqOlBKLzpAcns3Z3grYzJ0KSpXKipHOnFoUHY1PE4oUF83UVFRLk1pIUxaekwiMTNsa1BYPzNxOHp0ZjZ1LFJvYXZPNWN3T0dOJCN0'@; put 'ZmZPWjB6eipmdVNdY1V5biEwaiNZcDxINjs7NlRQL0tAYFR4WWskZFN4VCg8dmtEPldNSXkscnpyQEAjcjldak80T2l+flluamZNZD5DaD9vLCtATmFqRWJsRSpnPEdWNlAzTyF3cj0jaz5Dcns5ZFZ2NWtiNmdxNFRvb2lbVTlrfjgwXm56VXBFOFReeENEPkA9MDpObzh+P2tKTyxpSlVdcjpH'@; put 'cH1wJnV0eDNKeUhaaUBBTENlZ2VFNSxveXh9eT9YN19lUEw5YmBtLHJfaExvTUYoTUZKK3tZMiZTO05zZXI+PSx7WS48bl1CaSpBYGROXz8/ZyZoeSNMOEt2bUJhQHRxIWgpXmlzZXBvXll9OCx5VFtjZGRFJD04VDVqbUw8WiFdNF1MMEpUdyQiem5oTVgmVzMpZSNdLilDOnlKZE9RbWdoeSsu'@; put 'OztEOTkhP3hfYzt1fHBPazlBJCU6cFsiMUZuJFEwQHE4MSRTV3E7dGcvWmt7MCNWKTNiJl1JIUt0Q19GM1F0PVovZGM2QzA0RlUlUHcraltTbk5bUHV2cFo9clowfm1AaWc+RkY1XklsNj04VShPI0ZIeiNxYEl1bjBhUn0rZmxUK3xEfkYveW5JPHp8RU5IaHZWKUlkTTN3PU0xWCt9fiozenZ8'@; put 'KyhFWFAmXVhzTjVPdSx2P1F3JlYjUWdTdHQ5fVdRXU0uJX1uMkh6QHNPPGpUJkZFJCs2NT0zX2VJfXMjQm1EWXQ8bWcvYF5wX1FRei50KChxKU5id0l1MVB0aUVlQlhiNyhoTFhacHQhZShhYi9lLmIuRTliJCR2amVAXVErWEVoPjVhV2sxYn5WUz19dUIydD5Ma1oyYyJNXzFYTD9bOT12ME9x'@; put 'VSJRUWUjenJAKD0mV2BRTVg8W3Q0T0g8b3NMSUVOM29BSCJucEt2b3V8RldJayZ9SSh6SDxvP3YwdmNiQ2lhfmokbkFTOGhaNlpMbnVWQjZDWnhEdCxGUzBGbS8obkZ2QCVwPUd1aEBQeklfMjNJb0tNZ0c2Xko5RTM2ZTcsJm02UVhePnhie14sNWMydHAocDBOajMpeD1GO1ZAISp2L0NxN3cz'@; put 'OVFdQHVPWHVsZHVTUyk6RVR9e0QzKXU8LFRSZ1RCVnlQPDdGV2lGTDVYfVRNRSZjbCMwSmUqKXtDWWRqV0NEbFt5bH0ycV5NJjsrWSRMdk1Eb043P1NIOXdhcF5zXl00W3BqPEUjaXJIaz1lPUJQYF5gNj5FUFZTSThLcHJsJiNVdlJNPiVeSldqWTZ6O0xSfGM4e2x7NDZbUyh3eTBGXzx3bXl0'@; put 'ZXpFKzMrUTV4dUVZTEV9eEh9UE94Uzd+VlsqNFEvLy92QElfIW4+UnoiOTRZclt2U0Ihcj9yIUZVbTJGLzE2KlRkcDZVfFM/dyRTVXVNPF4yfXBtJF05K3xwJEY8RT82JW5ESHYhaV9FZXExWFdDUi9hZVk/RG1bQFEzQlhhOnx7LF5sIW5mcXAmJWQ/WEkhQDlCbkZTMTpUOGVJKSVafmE7KEM4'@; put 'NG5GW2A2SSkiMVBVX3V1VUBNK14jZEFvdXFpLzhIeDc/Zl51ciomOUd9blplMkpNdWJMWEQ2JSFGZW4wPDZCK1hhXUpLUD1ocEpaSlhQXVJUZ1F6fFBZM3VwbUwpfHEuQV9CWy58e3BCU1ZaRzRkeU4hclRZOWtTU2tSaENedSlrcDdCb1huRjlHci9KOXhfeylAaWpCLzwuWlc0aCJtIXx8SUtY'@; put 'LkRLQ2A4VTkiXVtRLldoWmkmZSt9V2s0Vk1oaC5nciYlN1g9XXMmP3NQNkQ2Q3szeEFbb35AMjoqeTJkQ0IrPER2JUsiRkNrVGxePiUuXihrOzxBaDZnY1U9MzJRan0kMXJeTik2NXR1b2hHWjFbWEY9T2ArLHUxU2s/V2BBUjdvImRka2hTNGw0SC9xQlVBS0J5Nn1IOjtyTnBOMzBDbjpTOmlP'@; put 'emcqVE4sQjB3UiZrSixAOEZRbTMhMyQyMEA2cXZ9ZzJ9MlI4WzRJRUZGN306JT9KczA4ZW9IPFR6MVp1eEBLc311d3tOeEIhVmN8YnBGTyN0XSM7V0VMYEp0bkA/XjdHcTFwL0ZARWVOJlIyJnplbzg4R00oTV9xKFpjbGJDeF12ejRiQFpRSiZ9Q1spU01sYmtCI089d2M8ejFpbXxCRGlWKGVW'@; put 'YGBrQ211ZGJaenZKS0JtfWNPZz8/TjF9MylLWkQjWT9qKTNFXSgjVSsrQ2JXVSk4VXVnWTI1MjY7Q2JgLEJATnojbHloSlp9TllgVkw1bDhNWEZuVzxVX1A4MVg2ZzBwUDRWdVs4YCh3KkgyZ0difi8xVnc7T1oiSyNpekxyR0I0S0hLcEFmWy9QYWM9L2ZaXXxaOTlGcThTNXk2MVtGdXo3OXRz'@; put 'UCtocEg8I11UK0Q7LzVlLDsvPj0rW3pVKTpVKVs1NmlEOVpKKXguO1tmaUFCUGxjK0ZJJTFUOl4qTkxVemAwUU5MeyxFSXdaQzJCLkJbJXVwaH4xczI5MEFVNC9dbj9SKz5UVXIoND1KVWhgPTZFW1YhO1lQWUUpaWtMQH40UT18fDchRl9WeUgiT2p2IVdMbj1KTHtLRjtgVlhFKmcmKVcsZS4u'@; put 'eDdAbz0wRj40YS5FVnJMRXlDPUxBaDFuVGlrTEBXWyY9aDgodmtQJTcwL0pFPUt7Jmx9L3BUbVBreGBpVlk5fVdENyhuXX0xJkEzZlNQLkd2VyZIW291TTc4d0BjL3cuNnFGLHchKEA0WCs+N1tjTW5aJUR0elp0P1tkUXRbdnpYW2RRO1Z+UkJCQyY1LG9iRjhoOSg4c0QpPi9IMiN9dH16REY3'@; put 'MDttYnpMOzIwZ1BrMm9PWTIsQkEoW1MlIyNrL0A/STZJdlZybVhocnovUTJRNDZFQ0VydSx1eVIzKSNffnArYDBJJTo8cVp7Ujw/Lmc6ZjxLfkEvYWd5Zjo2VSNqWGdtJEl6LyU8WSlxeXFAPloqLG06ViNmeCR0TDkwQFlTT3M+KkluPFsmOiJva1I4eH5ae2p0L1dOJXRgb0hjMTc5OGA6dDts'@; put 'N3JhT3ZlVkpaQW0zZTY7MktkVX48RmlPaj4zRXojXTplUjlZJDRHM1B2LmtpUWg7Yn46Tz1LPW0mPWJbU0J5dGU/R3tWMixIaytle3QoNSY/T2UiKkQ4K1pjLHtjYzZ3QHVSb1tFY0Q4dnw7NlBlQHZJW1pgR0trOClfIUJMJks7YFY9XXZ6PFRZQDptWCZBXipeImJZOWUsIW9LVUh+UzFrYVR8'@; put 'QFk5SWVpUmMuTFRqcGJeOyxrfWtqW2xVelZWbz1HWG9uZzoxVEY5SFJ9MlAkO0NOXWhLbiEld3s4YTB6fDlDfis4Yk9oLzg5cmMqc0dQVHNLPEt9a2FuJGlJZUhLWTBbYiUhZSowWVVmaSRKTn47ajt+Jks1LntyYltFMlZXLzZyezBgM2hOeCRrYEBaUXdQQGkrcXUsKGorQF0wWSU+ND07Jjtf'@; put 'fVU0LEN1PyJ5UUwiMiJhSH1bfHV3QmJYTVlkN3tvJE9JQHlEZEZQNjYxNTErRjZWJVFsOFZKdnZMVEBvb185OFo2PX1SZXkjZEFtPyxyOXIyN3hJVVZLJFJDLEFEKjgmZHJte2YmTXJeUXppZmNQRio7OWJZTUVBQyhXLFQ5UHlDTGkzMj47eEAoU3Bhc1Vwc35veWBsUHZgSTI2XkI1bGMjOUdL'@; put 'eUVISzdpcUBzYXxqNjF0V09ESVZEQz1QMSx1bUIxO3RGQnhYNktPcn1AXkN3UkxofV94d0NOMT9ZcT51ITM9MTRSP1A0W08vMlZgUUVYeEdzN3NbT1p0Qj5QQUpzW196OTMqfn1lYUxlcEt5KUxtYWxRQX1wJH5OPERPfiFHOiUuPUprbUk7d3xTJmp1fio5bmY5YkFWRE1ucCVaSW1HTj8hd0Al'@; put 'LjZ9K0JZfD84aTx3PTk8QX1qXX5RX2FiP05OPXc8S1FYXzUkQ3ssaipgL158SzBuWStjZVddYV41TTk2OiQlfWoqKmszXWp0UHBERi5lKmlpMD06RTg3Mip0WHVNMSo8dXdjMyYocipUPncmVGp0QldASkFvSWtrU1JIXlZUMFoydXh1byxgd2pzNFJbPC5vL3N3QmZvM3hbPmVZd15OXXt0a0Vl'@; put 'cz87NGA9dVU9VGY5KUYxI35GZiMpX3hvejY9Y0s1W3JrXkw/UCRxVS9qOVVMK0A0d0woYkIrTHt2ZnRMJjBwI0Vpcz9pPFBYNEBlaEhFNV5JcnU9YE8iSHQjPy4hOXhNOVYzLn1mYjU/cT9iZjhRR0ltU3hGK0FQdWJHKkMwOnRCWllJPDNhIzJZVSshU05sMiRRNHt3aDJvKnIubl8hYnE7YDxb'@; put 'XU5scz8mdHJfPDh5Xk5sWmElOllAUWd5MERrI25BeT81PCxjUnMzZE8vMCRCODtgSGAuTDQqTCwsTXxBWVhBQVZaVXRnYFs7ejo/VWFbQC89Kkp5XVg7VF1dNCs2NmJNVUNSO15KfHNGJWt1b0EyQi5CW35ST1Updj52PE92U3BjbFImU1d2WWY6XnIkMjFGUWNpT0FGRz4rUVlYVHJxNDJfRER5'@; put 'd1FJcyR6akl+JEFvIV59bTVqR3JZZ2d2OlZrVm8/fVA/UktgdVtsSzd8PmIqbyJWUlUuP1NdNXRSV2I+ZG41OyUxRTsqTldUfktaVWM6dXVEOVdtWUcsdW1rNnE1dms8alZIfjJTZFZmQ042X2FVS011OElCbFVhbmBTRm0yWU1CJTZAQW98I1M4OWhdOEhbJFsrOTklUzBFK0RAPnd8NUpbWmZQ'@; put 'Rm1YMjhoIzpvPEVoXV87cks0ZkFAQEIpWFJJflRePnEjMmZXdXh8MSM2ZypSflRpU0EyI2RRQjdpZypaRDU8aG8+amxwOmpPS191PlJUJW1hTVlDKlRINFJaQD1VNXR5QjpqdlpwcXsubSoiUzZeV2BRS0dTc0FMSit2ezgyeVVvIjlhXmEkKkdBRXw5Jj1UOTxbTUl3Q3slaDJOe0VCZVtMWi5m'@; put 'Ri4kVWtAfVVCMk0zQVUzbDt7MWJCJTpnREtCeW5mdWdLeV9hdVJ9YFl6OXlFZTo7Nl1KcF1hamk3RmV9KClvcldgYEU/TktXOFAvU0chPEl+MDV0NkpaQHspQ0s/c3t1OG44Rl1NTj5xS3Y/MzdyVSJZPEpfVDNSbEQ5a19mfHx5cW9mZmxCdyJyL3tpSWB2X1hEdkMkKyVdSzQpfEBYLEFkeGRy'@; put 'enkvcVEvPGx1e1E9I21qfTtkJjMqPk1ALzw5VzBNMUpPI1EqbmszMSl9XWJOYjZdZ04hMlZdKTgkM203JCY7MERFWHhsemFVclEwaXFhcU96eXRfTXF3O0N8I1VYXV1qMSQsPWpfW1dbKW59byw9bHBlR1FqR3YuP0lZP1NCb3xUME8wSUg5P3FxWXIwP0BnYk8qelduJiM5eUxgVWZYcHkwK1B6'@; put 'YWlAW05yTj1UUik4cUBfIjFiXWxkQEo1JGBAK3JdVSp3RVtDVD5rIV1TTXZsSTZeYnA2flJPbllvKEwzU2c2bFJibGlGM0NSTG9hdEYuIUo0SUA7RW40d0RyNFVaS119OlV9YFd+dmBmNF9dPCFyQEIvNj04UE42cUYmKWtHRGFOSVs9amdaP1BnPlhhbFBacH5JdTg4RE9gey5RXU8uT2g2Ozov'@; put 'T3R7TT0sdXRuRHpRaFZTeCk4dC88Q3FQI3RfM2k0TyJ4ZXQicCxee0BILyxvMSFVND9vUTlfNFAkLGZvNkxGXSNgVkssTmdvNkhLeHZSSF1ee1t2dm56cWBEeXlnV344Ny4wL0d6dlRTTG9XcE5SSGY/LHgwU29UdmxsQXUoakhsMFNJI0IjKXBhUUNtQ1Q5OzVKdnZ6YXVkeG1YWW00OVNtWCs5'@; put 'Vi5LWjxgKmY3KitbLi8yNWAhdlFGJU9NQlk6PiwoRXQkcUBAOkxeb2VCOTswPWVIWE94UCFSYUV3cENELmFPZFRjaiRpJih7Q1NgPjg6aF5afXJoM1E3aHY8LylJUUtpYWkvey8vVCFueSJAMktDRW0yS0tXPG4pWl50ZjIwJXtyOmI5eGM2NyVJPWlGZlhvZUpUPFRpa3BZMn07QmJvdkpKPnxQ'@; put 'Kl5qN3BwMkZLdEB4LEErfHFwcGhhbXp0Wj4ufSwlanRmYzduUnMhU2xPPUtpMWZKWn0kTzlpXjVob3J6OHlee3RGJjF5aXoiPVFpLHN6KWJMN2IkRVpwZ2k4RT43TzJZa1BqdnEpenVmPUx8PzgjI0VPYlUpbyJyZiVQTCRebXJ0JVcwOjs+IXlpQ0VETThnQF45LE9xST44eSpPdGR5Ym5GV3w/'@; put 'QFE0KWA6VjU7LGwwPDNkSjpsLjlIXzxoaGo5cXR7NWVpV10kdk06OzQ7ZVNNaSZoI3NdVGdYVyNtREBlcFoqZzJ1W3NuM2sxUDFGJW8icTJFMEhsc3dnVGZuRFpTN0ZNWD9YIVlJQTJ2OElwXlBNYEd5SzNNZiRyQ1FzRjZZaUY0KURwOEJ9bWN6IWtBYmk7TT18cE09IzFWVF8xZWx1YFMhKVQ9'@; put 'OypfOlRkVmh3eUYsOHQuQyJiUl5DOzl+MndXaipaRk0mLEZHQ0lsREt6TVBEYkV9amxAWz9mMzohdmRvPlpoWixleHc4eXtmWm9zL0lUdSZmNUlWVX4vWF0yckgqOFU5aGhgcSlMXmhyPV9scV5sVDwma1EhSiF7XmpjKCRPbTVbaWxCLiklZmhlPzBNW1ZWU2ZuajUzWmRoL3RkeSF7IUBMZ2tJ'@; put 'KHtZXnJdJmU1LHAsbzk3Mm5nJTtxayNfZTlZaCxLO2c9ZTE3c357OUZZeF5AZjw3a1t3VjRSY1JHTWw/VSp6TGkpSGhbdUlkVGQ4OlB2KHVQJjtffHY2WHp6dz1qLDFIYXBYSCQrZS9XVXQ/dnc2bENHNlRSRGxiVmBEXnFFZm52W150MVpAWVtbQk0pK0Y8Umx3UGJMITBnUlJJKX1bVilgWkUo'@; put 'dUZZezBuezBNezFTN3xgPVAjTWBJYC5FOmN5PGMiaiglUk50Sm5ra1lpKTUzMik9THErT3QvKVJmYU8iXUZkbFkhXlZpd1ZeZVN5XVJONjhwLlgycGl5fjxPRmg8NVlMTyEuLmE+Qnk4KHdafWoweGEoXVdfVTFfbWdrMDVjPG9PQj5NQE8hXz1wQGl7RlNQMHNYXit8QEluQUosdXdNY0BAUnlI'@; put 'cTFEYUZLeXFldHIvMl9KNz5SVipfQ1U/T116LzVrSUY6JVJ5RWVLYn5WY1shZXw6ZWUuW3FbZVFebkIjdC54P1cpPi9hPWRMVlVwV04hbmkrOEkvSStZfXkvR1FNOW59Py4qcWYoO1RXMjFiMGZaR3daOG1dO1QvUXd9V1B3cyRFelFjJGlxb2IrbnArO1EjeCV7ZCo7UGUiN3FOYGF+VXcmVFRl'@; put 'PW43Q3BFdlJde213IUlwclRaPHhVV2dIK2VXS15mfjRjPXosVSJ4TT9xZlcmQ31KNiYsQ31FL1FhYCtmNXAwRiMrU2hlJmp9JDAxK2xeL2lsazJ1YEQ6dD5ZZm5wVDRoaWhZN2QmKSZ3Ujx7YXVjRixrYnJEODtNUkF4a20rOiZHal5eYVNZNyNHWV1ZfjdpUU82LDwsd293VkszNiNTNXFmQD1p'@; put 'R110eiEhYTBgPyNHRVRCXy9CUHchYT80Kmcvaz0/fk02enRydiV1MCF3NSZTbmEhKUZgaGlgKld9TEdYWncuIXpPZUZbTXFlZEU1alh3JFhdQzRMM0g/OF9DYF8ra0c7Y0N1VHxKdFlXIzFaQWs7YSJlQjVyJHpzRCRpUSY5NHE9WjhVUjNMQHs7KDxYcmlRVl9HZUo/Q3AlWk0vemolb2VPUklY'@; put 'MjNMfEtbIWRdaCFLKnxAMU9CSVssdi9EPGRFMlA7XWh6X2Bve15sYURHJF5AUXZQYDN8dCRBZVc7XSRYVmYkP0sjSEpxfD1yR05nVztMX0pgblAwPldXVX52M09GZHV7Lnk4Jnc3JGZRWHk2d2JhPnJ+e0NwWHpoP11bWyVUZTFmeHNIczFZKVtSTU8maio8O3x7YCQrPy84X3VrZSkuWk1UO1pu'@; put 'PHBQTUl9dSR5SG9xfkU6I2Q4T0RGZXdUP20uaHg+Y1RCZ3pZNHU3SkI9O3tsRFVGTispOUc6PU1WWmxoYCtpTEdiPntmTHNZWT8kST1pVkZxW3lFajVyIyI8Pi5ye3gwVU83QzJqV1BAI0lvZD82Lz9YR1tNPj4/cyM4VDRkLjNlbkQjb0hmbm5bLEgoQEVMKH5AfTNpfj85V1JCenFZPGlMI0NC'@; put 'Z3ZgdzRpQD5uSW0iXnVVaUBuK11USFA+XyNkKDRQdD1ncHE/L3VgRyhsb2BHfW9NM3hTVG95Vz5iXU82P31dTjVuMVcoaCx7JTUwIklAbHN5PlQ7elF0Mi48bHJGa0ZfK3JVfVZ1ZUZ2ZCNyMntpIV5vcUNUNzY2VHVLQV8iPSQ6Q0dtVj9BIXNtQ1loNDReU0tpLl1mZCkjJTVzTlJzWCI5Xndx'@; put 'R2VVXXsuN1F8Ij96fW9qJm42PnJXJm4kUU9ARCJuK1p9Sl9oU3VTPFZFcStXVTczPGZRJF5QImExWChqIk1MUkFDa3tCIU12Qk4kK2h0MjFaJnAhRlJpZllDLzM0YFlrWipaa1dZQltuJE5hdk96KGJmZiZsTltOWVksPF5bJHEkb0E5e01dMEx7Z3t3O3pFRFEsPF5oS3ZMU2R1bmBdTDFTQ0dI'@; put 'Nj8jKW18Xl9EakJCVG1wUylHOj5gRWZHN21gL25hPFBDTXU/LFtweC8yPXh0d0w5U3l6LCgreXxnP25wcmshInl7dn4+IU85bFsqdS8kdXYlQzxkbiN9fnAmJU5VbG03NTRmSE1ae1p+VH1IfGIuV00layRHOy5IYyQrTGRFXVo3U2hgendtP10+Z1dEbHk2Lm86XUM+YlZGMEM9cGR1NkFrMkAw'@; put 'ZSNOOF9lVHo5cWsqLEVFZG5sW2QmRXhHSUglaywvYDZtfHclVzJDPjRsI0pEQHs/LzVSeVVPcnA2WktZLkt3TiM7Lk5nNlVWTiFtbHs2anRkOj9bMS5xVUldUmhrYzpAYXM5Zz1tYE93WD9beVhWK2cvdSojU0JURXZHSmVONk0mcUE3ViozYX1jSUdUdiZCLzA0aUReVVErXUZLdn1LOWMoYnxB'@; put 'LyhzO1NqMl9ZV21wYnlwJiVnS08lSVpeVl0qYlN8ZU5kVktnODpPQDA1fV9qfiQvJFBFWF8iPTB5ZXlpcj8zazkqPSJwOUZJMHN2KCI7eFt8eXVvdD07UEtec1ZMITl3W1pEUD1wY1NqbHFoP2FWKWdAc2ZOP1JPP2pbLl1xI3teKj0ubmY6KCVeb2N0PTtWNE1OZmhmfUVSY0B1JHkhNXlxRUY8'@; put 'IzFFbEVpP3FaOkkpP2A1PTh6Xj5SQGZfZylkbHgrJXxCRk9iLyVhQiNHZD4qRzRBb2JnLzZzcjQ+ci9US1VGUkFeaUIsRy8zdjJmVF5xV2B4RFMxU19CTylnLC9wdytkXmwwUHprLHAiYTR7W1JYPSk1OjVfaCx4RHszJSh6YjJzRntQYlk7WitAKnovTTJ6TjFzeSRVRjJNQEUmdzxaNztLQnNP'@; put 'azleMTpoIyRYanUiX2NnPy8rZkw5aTxoYGssZDtEcz4hO1Mxb1grRV4+cl0hXyMxLnNSemJeVWlKWThdVnE+Yz5Wem59TCxETTEyTmROMXN5UF8yajJ8JGExLlhAXTtYPGI7UiFpK3tkPVgyYnJAMk5oaCxwTTN3fmswW3AvQ15NWG5tV2UpQDMpOCY7bDpOZmU7XXpPfHJRMUc0eT49bVF9aDpy'@; put 'VFhGaS84T1M3OENePjlhdTdHZmtsLC5OYDpnUG5mQiR5JEE5UEUucEZhVGFkWGopVzR5Q1Y0LzZeUzBaTDZCIXlKMzFwezM7YHl7X0ZvVytPIX0jJSpFckd9LjZ1JSZxSVU8LkEwckBtW0JHajw2PSghMkQqMnFLJn4jNXEzeixNJSIrTSU3YjY8WCVuT0RAVn5eTmdbPndVcl5MO0NsQ0JUOHQw'@; put 'MHx9c3IsMDlUUV9KPGIod146b3NwN1smKy5bQHw8Yn1eKCZnVjkmLzZeTiVvc1skKzdbQ3p2dDB3Xy45TU11WWlZeVheKmMvY2Y5d1I9PW1SM292P2YoKF9nVzV5ej1YYEIsODlQYWN3M1dEaD1lPUU4O3hQOk4rP11WPUtFdylWcHc1S1lWW0ZAbzt2TUBhcEdHPjhMdTdkV2hxJVM9YVRkUXlK'@; put 'bXlecnMpOFUjJUwoemU9NmZJeSFeVSUwemcoIVJANTU1aGArOSFlOWtgY1BpVSxdWkheU198ciQuZzt6RzFtPT8vVEd4IT8pNiEwcChuNz5rIXBtWEtzJEk6R34/XUBVV1FjTCF2YFpbWXdSPig/WCVHUSE7ZUNGdE90cWRebDwlYDtySGo5XUlpe21AYWJyeiVXb2BaV1pXZ1MsfTlQb18reCxD'@; put 'PGlSImxWezFmWD5AZTBzI2lmMyU4eikxZipVVzloOlI2eV5GKFczTCtnS0Blcz0/Z3cjUjYmXkgoVkt1JGdLTCtvS2wmaWMyQ3Ekd1hTMUA2LmRjNmUjaFYwb1ZmMS44TCFVSEVVaWAmR3tHemRCZnt8ayw5MDFLcl05PC4vWUkqS2tFaEpLWClneGw1KTMkemwhUz1wW2whbGNSfkYkcS5bIz5z'@; put 'MmkxJTRZTmZfS1BmQG43ZVtjZDZ+PGwjJTg3akluSWNiJFQ+c0VRJmx4cGpOUEtQQDh3ITVVTWVIJEkrd111ZSV9Yyxqfl5iQ18mUFJeP11rZCldaXp5aCZ+Ukw9fXZrPU9nWHhjRiQ0WDJjbnttIyhJKE1LWkxla31jYWNhY2FFemE2Y29Lc35LayZqYWl+UiEjPzlUejdqLCgpJURDXTA2bSgq'@; put 'dH5RJmExTHRjNjZlRUYwIiszaWlTczJtZiE1Z1A8O35mSns0eDljQ1pUYXNSNmRvSHZzU2dQSUFzVlFnKSYrZ1pAMCo9JVc4MCU4N2pRUEFWaCE0Yz95fFBqbWw4R1BMME9mXXBTUFZaejlXVVM1bEgvSnZ9ajVud3VWPS59TzlzdW1nbyU0NjZzWU49fkJvXnUlX1VIemFwaXt+YzZDNl83V2Jm'@; put 'W0M5Rmc0Iy5xNWVIN1AleEt4T1tQfFkjKFshVnZbZnJQIzMxTiFbMmVQN3FnLCk7I10sTys0Ql41Rj1qLm5Da0JKSkhGZ1FWMCZ8JTFIR01yMXJHeDdXbUJ9UW83YnUveEJBQUMiVmNBQUdIPVREempYNVljRj4wODchRGtVaToxZ0FTaWBEWENLbFgjKl15O0NBQUFBQUFBQUFBNUIpJS9fe1Ry'@; put 'Y0I5PDVQJXkpR21KKnZSMlcqNEkub19VUVYsJigveWg9Z2pnOHsyQDkkWF1PaTtsQnBZNDpsXl9LIUZeJDxSRX5bI2A2I0csVjgzNEwocilWaGA7RzJQW21sMEtoWWJIZUlneDFTOU9mSjw8K2oyZl9QPzhjWEV2MlkjT0IoWi5VXzQ4Sns+LHRMaH07Vkx6Ti9INEYkUG8zUG5iRV5xI1oqNW5q'@; put 'ZmYje1A1RiMqPSI4RzYxNTQkX0BLVEtKbl1fK2lzPUsudFJaey9YLz97eFUqZGx4ayl+bDchWm9EQU9oS0FNQExDQjhacU5fI1U2U0ZbQTJsRnMhVmNgYmBTTGBgdWl3NyhCUXIhfHNiO0k0JTVDVCsrckxeWihJblBrPXJPdFB4US9LRjFCa2A8ZWl2L0orIi9QSExZfiE9K191eyksO3IiKHdP'@; put 'N0JbbkpMZ1N4aDRpM31GUzljODNeeUJYTGhdVUguRHZVSERTOSpRU1RCNCsvMUtwTzkhKig8IW8qcWhDOlNxRk84SFZNdTQiU1BIZCJKa2JjLGpxIixHaitQaUc5b28jXmk/ej9iSzl1ekZJKS56Y01UOX44JHshWXw7YFo2XzAibHh+YGFyKHRkJW0wTUU4NVNWUGJ4PURtU0g+ZmUkYDR4I1l+'@; put 'Tk4qJVhjOSxCNE93Q2s9OU5YITpNK0pNYFlPQ2hyVywwQnF1dHJ6MUdvfl5balpuT1YiYERQdUxRTjlzVCtqQS90NzNJMjNoS1B4W1B5TltaWE01LF1aLmhDPltRN0VdYEc3cDhWaDNZQGZmSHhxO3srSWFpIiJNRkZdWjpvWXI3L0A3SEtFU0FtLjB9RzheXkVMXkMobGttMCZFSjBoQEAkUSZa'@; put 'Sn5UZ1BFU0coQCxVKXtUOlRIW1IqKV1oY2V7QWFxVzheKV9EL3Y3eDZEcyZGc2tPKF5TNldhMj4hPXN2dHBCXUpdc196VFV1VG83MXN6SyZtQGJENWVTaXRPKUNwfmZuRkZmN05YVEZEWzl7VSVlTER9RzB8UklBfGQzPH02IUtfZTlFNzdxbUAmJDozOEdOVyh0UXNdbmpGNz01NU59O314JFNj'@; put 'RGwvdVZYJlR7R3RAWz19IzxTNSxzUk52YjFJLFdEfikvb2NxKV8yaUVbS206ZVdvJiNKais8UH1LRXFlR09tMm1MIjBKIy96PF1yRkRxVjtoJFtYZCN4VWA3aVtCbHM4STptMCY3JTJWR1dkazcvKl19Skd7JnExaiZ2ZWx9aSVEVFpOZ2Q3SCtSOm4oPWRoaEZCMGhSWjk5U2tie1gqYzZ1bGkr'@; put 'Xk1pa2dhM2NgYnlTZ3k0dmFpRldiXmN8L2FFPD07elZIQlV2U3k4fTtYJTZaKSgrcFFNbmguRG5HPGhFaz9CS303QmNVSkJleCMvUSR9SHEwZmVUZWR2NmN9bGE9Ki87IXFoaSVVZT5dZG9iZ0RSTiVfejJ7QUBdZCp3NVsydiRyZm9uIyV8SW8vWFBjJFN7dHs+amRoWXFdLmNnLF92c2xvbGE7'@; put 'NVopUEoxS2cqKS5IRzJCTyx2MFlEfkNKfkM9L0VySTJaQlBGQTZEc3V8dUpJIXNyQWsyWip1M340VSliUm9oRih5Ry9gVW8pWzRaNHFqM2t2WFlPekJLMGFlfVdGNnxSOUYwaWshe1RvJEZ2MDg3SlAuQVNtYkYmMkcodzB8PSFteipnPX1DeEwoWmZsWj0helBPWiloQGoidS5gUzoiTzw1NSRg'@; put 'WHZ+aUVSInhQRkVHJSE4TFh2bz8jPDU+Nk1XYUQufFgqI3ExWG49NlVlMHhWS1deXmZjY2VhbGMpSCtBM0c8ek1hXSNJaj5gdDYmWCZQQilVcXZTNWFrQSUuNFdscXJeZnIyK1p1UlFfcWxrcXtqVWpTaVU5az96OVh6T09te1cqJXs4e1kyXyV5elVlIUF9dGBZJG1CNHhoaEd4U1QmNSkpKnVq'@; put 'Ulg8Kn5UPXpVQFEuQSVSVF5abk1gbyJjQUZrRElDeldBTFFsd0cpPGQuIUduKTxDbnQ7PDY+NU5XTlk5Tko0UDN1SDUsVHp0T20wMzF0bzIlKFFTe1YjaVMpLC9PdXkjQ3FgLihXU0BEMlYpdWssd3xUfltkKENXWUJmVHxmdn0odC85O0k9QXh6KWxvK3olfFVgUSNiZDclRn5HLHtZdSFjZW9g'@; put 'XiN4SkExVjA5P3omUGcibklYaCZRXjlfSmpmSSRveFk9JmVgbmVsLClNZGtUTypiPk5pTTdpWnluRzJZRndKOClGfmIuU0JISWpXV2w6V25hREx1S0tQTVYrR1o3TlVDK0ZEJTkoJGg1O0JCSVdeUzRVRF9sdyZ6NzNkM3p3OFs8IzcwVjclN1tyZ2IxJGlOX19ESH54U3BLTSJ0Vnd5PHhlX2c0'@; put 'bjhzKzZDK0lRSUxYMGhnNF9RV3Q8VkZxcUMudGkmUS81Ni8zekY3PCgwaUtURWxNNmdqPTR7YmhzaXgpREpOMEZoQkheaiszYjskJS9BeSNncThaK0h0LncpWVNHTWBGW0ZMe2ZKNClafk4reDk8cStVXVhyJWhfLDsyaSxSSUpDV0ZdYEh2UWJ9Mnt1clZvfS4/NHFQVXNkO1N4NkZLSzpLSEl6'@; put 'JVs8WX0wdmAoSEQ+IStweGtnYyQsMWBqPk4qYFVLaVNhOnZGY2JFKXBxX204ZjFILHV8UH5rYSl6PT5PTWBvQ3pgSyhMRFRiV0crLDAmcz08dDB4KVJjUWdQU3hHJkZtXjtTcHQob1E7Xn5iREUxZGxkLDNZNDAjQnJ4VSYqQ1JbK1MzRCJ0PmVCXmshKGtnV1F2bk9YQUJJVUhsOz0yJCNNMmIr'@; put 'XndRdDhOVVl6Xy5mTiU7eGVFajEhd1RjX2RuRHhSelMwNHU/RjZ0JWpjelp4cy90ZFhiLCRGdkgoY1BPS0VrUnNwRSVlREExTDFxSVFvfkY0Q1lLeVc6ZjBnKVUmIj5VXW8kVHc7YWtTVSJWMjx7YGpnSFFvdkpjejdZQilWcERTa2pqajohaXZlQlYuMj4oSWlKJmglOyRTWGpwQ1RRYnRXaWFK'@; put 'Vko9eGl+c0t5Z2djRihBOE1zVUcvJUV7RzolZmxbSixZOHwpfFdrWjZ9LCliOGBDRXtGc0dkMjJWMypdeXo7T1FVP3AvZjFzZj8+XTpeWE9Ke0MxMlEyQXEjYjZaInd1eENnfSVgRG9xeW0vTU5qO0JZY1Q8aU8vNXEkPltNN1RRMzhjOU5INnJPR0RFNDRgPGhmNzVvTl0lWk9hUHA1d2ltQ0Y/'@; put 'QjBSJVFDW0lCPGVSYCReViVNNGk1K3cvPHhCK1ZnKlpmfiR9bCxOKWc4MG01SGJHI2shUyQ8Wm00L3BpLFdkRm5JOTUkfGlbTEdZRC8reFUuWjVFOHx0P0E6My5Ebyk/W1BHQ1pDSUcmPF0hS1V9JmR5c2VaIUw+dC8hNTh6Nm9JKzExPGRqWltjTmFLWyQlJihtKn1aakxmJk4hcm1uMkFtQzVn'@; put 'bnNSSjlpSDIjQU1GKTBxQzI+K1N1eittY2ZxfVtIQGk5Xyw2QF8+R1dDcERqcHI4WTMqdSYycTNuVUVnUXElXlpeKF9BMCpSI1o0UWloI3IqOkE+PXcqYWsvXlskSV01InY9aUdeJndVO0laeyxNUiY8PnkhXW02T0UsS3AmXzxMQC9NNkk6U0BySF4lTStESFcjbVUsZWkiPy8mRTI+KGdhWD8r'@; put 'alhNYFhjJF1sbCx+R3VvIUJGLypqLj0kakomcCo7OlZAOyM0fiRsVkxIUzpUWmYqRHE4ITg5Wy5uSjlGOFd4dTlbMzptVWlmL1YhN2dySEpfdyhfelFWYlFNS0xXZmBaS2kmUU86RGtPezY0TG5ASmE6Z3t1eTlkMSYqRjgmPkIueUg0Q1U5bncjeltlZUhvO3hGUCFwZHdGcj4lLGpqe3hNbVU7'@; put 'MkA3ZUJtYSs6OWhbMjxMU2pqXlNafiFacWdCczJJS1Y8ITdqMnptYCkrUnFCRz5PaX1pZXs/W2hyOmxHRklQaUpEP1hAOXkrOmNPVmp8L2c8eENabSFkdmY6eUFiczd6XXUqMFVEWDg9fDF0bDNnO0NpcWVkJDh3RGRWLCZQT2I+VHt0V0Z0fFkoa3ZZfEVlcG8jImkzNjwuNV9QfGdFXTY2YEVf'@; put 'PzhkLHpKX2pzaTpoYzgvZ0guRml4dTdvVnhDQUAuP14leCtiLiFKaiJNbyMmek9heE52ci8jdGdgS24zP31sckFQUUptdXszUl1WTVQ6UW8rNkopXzM6bHBIdzlKOmZYWElWJWcweiZ0M1tsUyFiT1piJnFlTjV1KDpsd3FHeCtyUlN6LjhHX1dVY3E1aS5pVUR8RU5dUVI9ZlpZYVFJIzVna1Fu'@; put 'PSM4Zj52dzB4WSZtRk1CWzNHbWIqaFBCaDt4dE1CZFsxX21mKXoiNyshTCRbWERxdDAhZUU/cH1XS0l2eyNPK1U4WGl4PnhjN3NHPWshZUMyUjVycVNgWUc9KlRIT1QjPjk/TlNebmd7MFszNFJmRFZEQ04lRnV7QlovQS5eNDVCZHIwcTh6ZHZuJD50VU55Qmo0RkRfUFF0Ml9jYTR+NWB9elFB'@; put 'OyZ+M1k9X0dfL0kjWUgzVDpxL3shK0RMVDFkT2VnXXludUQ3cSosRz1II0YrVWd4SmFRKl5qbDxAYVFgPndgUk88QVt0VFYldmY7cTFZYitAKiw3Wi9lNCFWMVJgVThbN0I2YnpbfVcqaCZJPU8qSXMhbVQyPkwoMCZOMEZUPDJqZDokdThZZF5ZS01semJFPXo+OGJSOFlDWWQrJWp1LyZzKjBP'@; put 'd1g2fktRXl4/UWxqXWBDRWtIM3pbUj9vKG1dM2JZMndOMUMkLHlqTiNZQH1sX10zLjpfOmlPflU6TTgzcDkvYiFWITp3WjdtREgoNiQ0Q28jXkdVMmA9TmlAU1dGYTc9cEJTOkdnaHc5SCZZNXYyVSUhSSg2PVpaZ1Jhc0JWRk4hJCY+QjY4dEY4MVtHP1VreDlwayVeSTovbmM9ZSIqaldSdCZG'@; put 'LygzNSszMDtMRmM8ZlBJa15OND9HbyolMl5BSyxRNmV3QjRQTSp8U1dbUHEkSWF9fWhnb09qQW08eSZ7eCVbPlF2W1UsX1NscDFFMW9DPzZHdj53UXJhaGorNzdvdypBUDlqfXdAXmFzXyE1N0tKfSZLTyg0NW9WdmVZdFpXQkJlRzBUK2h9YFBjViNDYTBnZ3pUeUBNNlJ1VGBMdz1yfFBrOVBU'@; put 'dn1pcDZ4TWFjRkQxVypMWjxacGZKUXIjN2FfTiV5W0BOLk84ZiFLdkdEez02MmBiTX4sSm17byRwZnApIT1SM0dNKml8Tj06azZzUXAvdCltcHB0YHV+V1UjWS9memMuSSVpLyF3N35xJldZVX50V25zei51S21edSkjbiw6Nls4QHFoS1g1TEdKTTd2NzI4a3V+XzlmLCVue1EiMl0rZFArayh5'@; put 'NysiVkRTMVQ1OTddWF5eRC4kdTQiLit7RV9ycFduUTtTXVpSLlpSOTxYQiJWUyh6eXJRXm1JeDdnWV4uLzUmfXcqb0VpZFU5fldLfTozQn03bVtuPD90YjRNeStxLFg0ZlU8KURobixVQlZyI3l3dit+ZHM0Z09OPk9MVlp+V3M3byNUcyFzRlVvInVCeTJeVnRYYElFTXJPQkpnS0IhMzdqLDIm'@; put 'Xzp2VmxfcHE0IzQoTDN4emApbFovO1M2eUIwbF91PV1pJjZ6a2B3RWlLQm9SOmg0Zy5DfmRrOCYuOUJHTHtmY3dGTk5Jei49fiY7YHRWOzheck8ie3heNWJ6KVpoZ0BxSTg8YmZxXSF4TytFeTpoRiljKSNHdz1bdk1JNlljP3xXL044Jlcsemh3JSw7eW1SbEhMSGZhLjV9VClIaEBJPFB2Z2x2'@; put 'ZDE+ViU7YHY2RDJ2ZU4+Snw/RzFeOyt1TVQ9dDw2VlhwU1gxM3E+YHc2WGBDQnEhKnMyWlJCODMsNlchQk9xKUxbLE07R19iYUVYLmpvJjZQOjk7M3FiImV7aXx4OiohTlQ6U2JqTTlYUH1zUkdVfkloWEhnPkEvW15JT3lhI0MkITViX1o/JF8jKHFaPVlEezZZMHtqcl9kKzJyKlgvRClhXjBZ'@; put 'MTU7cWh+cjpneE0kVys3bDR5SyUyNnFrRmQvN2YkYkZBazcra2BXTzIqdndxaURLJTFoTTVDYStyVkBhP1NHfExMZi81UWgpWD4xQHBLcTExJlhFO0h6Vi9GWV9FXUdrZjtKNz10Kl8iVHlGSl1NUis2byF+MEVjOCZRLy8jRntLd0pjKUN6fnxeXUhMVTw3L1tnQkV3R341QlZqcjlMMHZTek1v'@; put 'WTFRPi9NRXNyOn55TWYyVCluLkUlJFR3dGpzODF+VC52YlozNV1mNEBaR206NVNPfjNHOyIuWmdoKUtadnRVV2RHfE97bEZ8JC85dHNvcXtEeiFNfm0iNmBTRldOVn5wfSN+cHdgY2A7LipAT2UrWGVVbltBKnJtUzg7QWN3VU14KF1acGhxKXl1MlpkS3N8SyQrX3dmdlFBSEZtLikiWXhvSjRl'@; put 'KSljPTl9ejx2QH1LVDt6ckJpSnIjIjJkQDl3PUZ8W3N0dlclVTpTTVtia2QyVjg3Iy53QFt3RXl7dUpYPzksaVVmfHxQWnFqJkFjfTdIUHZ4XT4qMjVzWkJMSlN1KWk7IWpwKThCRGVfV15ieXpxKV5dOjNAaXlAL2NxVVsobywqQS4vZjguK1U9YV1xNHAleHRBVWNvKmUseXolJTNWRi4kUEFj'@; put 'TH1OJkhrdSkrWUg7U2F+Sl5IdWpfP3A9LiJIKHR6NV4xL1sqaHB9Zz8xO2FuOigyS2g1IzhtWkBkdnFmZk99ZERuQ35RJHImOW9gWnByWShUeGteO2o2U01FJDxbU3poZUcudldEZFZNYGxHTyk+bTZyfWpHLCt8YDJueFdedlF4KmBqNDR2VmAua1hKdShQSywhSmZASXFJRH5qeHE6O15CJGNw'@; put 'WltIN1gzT1NdL3NWUkVxbkZWS1l1elEmYTU7fiJGRU1xVENYXVUxLCFHeDlRN0Ikb3U/QzwydmU8JEtmRSskaWgxJUI6bW1RJHg5dWRZUnNYMSwsSUluOzxXNC4jITM2RXsoMktxbDJ6SSlsIzJSMT1PVWlvK31lTy8oXjxFcmVKM0J8I1hTWWxvRG1WaGopOyo7U1huWz4hSi5yd05XWzk3IUYp'@; put 'dGk1ZW8veWNxJWo6Kj44QXA2bEs5NT4md3prWiRKdygzYExYQW94LFlZQnhmekU/W3tycV5FOGVUcE5HSXZULCEzSzlLZj1CL3gxRSlYYHMyIyE+YSFjN0NYYGt9WF05JT17UjRMPVQjSCxENDByRjxZRlBpfGVnalhefiZmUjw0dH40RztNT3F0cyVSLGVbKjl8ZXV2UmdPe0Z9JileIW1YPnF3'@; put 'Z21SZk9ZJiFRQE48e0V8NClRTjlgIVMzdH1gJFQ2VUQwaVMmc2o2N298IiwsdkpsM1Uqe3pkJl5zLitRfnE0TF52RlA9dDNncy93XkBmMC5yOCw5NW5ucn5eI3JMKERQMj9FO3lBKWl3a3tgXWEydTN2fEFfQ3tbQFptazwsUkwoX0dwYkVffn5uZFlPZnl7PEFJal9zY3cxVmVgKDNFMGVXIT1D'@; put 'b3RHZnxWcjQpYFIpdCxjTXQ8XXZMZy89NnBePCsrcUYoUm9MQmZUSypFQm9Jb2dMSi5EK3c/Z28hKWo9Wn1aSkxJZ0VxRTopcVB9Lz9WOGxqaTExNHY0PFlbWj4jTjJ0akgzeXVYUyhHSjZiNVN6PU1GP3toRWNIfGAwWTphWXduRzs4VzdvPSZ7MDp6cGM8TXg1ZVJabFQqdntEOSo4MEUqaT9n'@; put 'PVQobD9bbGloNGtQITxtKmIuWTVhOHZ7OXxMSTEobj9YKHo5UGxxN3Z5WFVNYT9Md3xVNWI8d1glJjB8SX0rOjt4ZT9XcTtzYVBGdlQvb0IuNUZINjMlblZ+UHJFZFVtdnJoSTdSe2QxdHd1eVhqa35oPSIxRXsmLn5lQDQ9WmRXO10mRzRpZ3VqZC8maS86KHlfeSZXWX56bC8lT2gxRn5oXV1y'@; put 'ITRTOGI3N1NlXl1XU3Z0Y2wrcFV4OXsvZGVEXSZLckE7IylUbUx4aWlqKD0pdnlYOWVHUmYicmRPKVB+Pl02I0xuRiNiVXMyMCU4Lz1zKnB7bFU5NkhwbHNTYy42Tikjb1JvMFBiRz1BYkBGM3djUFMyY0gsMi5yOT9zMld+R2Fna1h5cmYlaUhjUSh1VUs0OE8kP3Z2KSM2cGkhTE9bR1ojZDh3'@; put 'fGF8S3NdWnZ+Ik9vQHlgQCZWI1pVJExdbU1EWmwoRn4qdD9hdEd5MTw2aV1jaGwoNTpvP29RIWRhWlFJInYjZT9QfD4qYlR0QmZeX3lIbXA9OjpFfF8uUktrYUpUTlQ5OTlFQGE0LlolSzorYHx1QUMlVFArO0hjaiordDk5MXBJWi5JSjVYal41eFVAM0YiZDVfJk5FXzEwaStrODZmSS99OXYs'@; put 'XTZIIlt2Ym0qYzE7e2xUcSVKWEk2VlFAKEdBc0ZMeyQkMXAoKGgkalJZcmtPRERnTj5jQntYW0RaVExxTzdPbzRHSD59LkE0VVJgOXVnXTN4SywiPGB+cDNIeStrOjZpSlpnOGczJihgenZEYH4yQVA3VXxeOkcqQXNjRjJ2PGlYRDQrO2NfcnttPnR7MTBJPV0qKzk6Sj9vOT5rJVtFfFN8MjNQ'@; put 'TjVCaV51amhgeGJJeUx3NmQ2dG4rbzB4e29LWWIuJmFNPWtjcV90fUM5K2AzazpzeD5kMy5MIyJ2TzR1aX1QYGVMYlNXZ21RYmpvX2IyW3clXWhZS19jRXR1VjEmW1M+eF5Vdy5vaGAqW0R3SyNnU1lvQloqWCwxZiRBbi9DVlczUj9uWzp9ZnAsdFFkPTR2NUt1QDhXOHFqOltNMTdlei5yfWhQ'@; put 'dUFzXWt8bE9qI0xqWjA0T3liazlELylOUzdafnxdRSFIN05pUVY5QyRqbnNgUiV7cE1vNzRie1NzOEpBcGhbajI+VldrP0pJVnZGImNxaW8sMypiRWtLWyNZfUpldyZrc3pZa0poI10odylfUVBmdCpMYFN+XTZlfGw8aFtyPFNFP3UwekN3R2ptJWNJUU9zOCNwTXJjL3ppTix7cW9Yc2grYGgz'@; put 'Ymo8b2FEQkUjS0ZeeH5UPDxUTk1HaiQ3SlNsTzV+YXUzeVhWTiVtZTdJPzNDNGcjbkwsLnJuOW8rPCkzZippT1dfbEkycWJjY0NYOnBNYT5GNF85X3ArbHYjKkdXLilDNHZUcjVWRkNrNXRfMjFfbiteWzFLOFB4azFLb35+KjZXJm8xRzx1Sz82Wlg1YUkvVUhUeChre31hekVQPCVEZ0hTVCl4'@; put 'Rk9AaTB4VkgsNXFyeGI/RkpPez9XZTJOJG9nZikjLixzLlR0bnkrNT55YXxVYWxxbUJELzV3NiFRZjFsdWdoUk9PSSNCJiFXIklhODJhRmZpa3hFTy46aHd0XThFZkZ0NyNVUyY9bTRWNFd0SDdgP2k/JEx3dzpBTllqRDE/PlEkJlIuWz5kTk0hJTFhXVZiWHVNZUk3XTgpdWY6Z0p0JEM+Oz9G'@; put 'Jml2KjBRX1RSX1RZbSQ7TiVCTShWKiwrakZTaVJKTE12U1EmXWtQcDBNa21LejFHWXZgY0VpaG1tYGN1bmtvP25GMS47IVZkQmlCXmJeSm5ORVFSNkw+IXxRUzs5dTkpVyQ7ZGk9b3kqM1ZjZHZ2e1Z5P301NSgpa2dPeFd6TzVfdCJoWUo6KDkiVTdQTGxUMFJQNHVoNTghQGBddm1TPEtJSG5D'@; put 'ZDRuMkt4bkMiRzNucHdFO2ZrWV9fRmojeWZ9fmBMRixuYUUzdys1IlZ3TFhoWXJCdj83PyErdTZSJUtbaWVoLlB+PGt0TF90bFFEMiprSnYvJVl6RV5nUllmc3t+YVpNfUkxZkNdQ3Qwc0o5MSphWlFIazxAajhMczRdWFkvaV0/VixFS3ZGW1ViLzo/fn5sPUJydk1FVVI+PlJdJDQpTC9GNmok'@; put 'Kz81QWVfcmYhRDttMl5xKFteRz1JVnV2PHVleE0yQzY1Oi9gbiFyZjFnWT5KKHdNYSJfIjw1SUZkal86XyVkZ1FzITN6PFtvWiQwSj9YaW44YTNyQCY/ZDlJKUNuVHpwOW5QbiYub2FuZFdzcClSNFY1NlBaJTEja3FEJmtdcyhMYC9oS0dOVkM1fiRRQ3ZvXjNFa2VGVUUjZE8mWCh8LHwzUSp9'@; put 'Tn0mfjA6SkJYU1N0NDF9KXJ2QzY8Y1VBe0V3InUleXh2PlN9PUJWcnIraX1QWTJyKUZEWTQjdGtyTHMwWEx5anJ1PVFdVXs2d0ZYbD85JX15TWpbN0JsYyFsTXY7Uk1FVU1xTkx9U1tEfGltLzFTfWRoZCE/a2pfI1FkMHsmU2F5eTl5SjpgYylBLzBRZFJSN0ZMQSJgSntNO1p5N3ZqRzA6TXRI'@; put 'MkBxKmJFcShGeHVXLyI0aEN7SGVnX3d2e0BUanJIJC4lJktGMVo3M1lyI1ZvOFtVVGNZZmckOHN2OHsiOnklUTcpbTF9ak0jMlp9ak1aPSs3MyVeXUwhPTtQOCgvfFcpQj8/Pl5OdXpjRX5eW3xXKXszNyNVQTFnb1hFU3B7Y1txQj9aQTptPFEzW0pqKDN2UXhCQ0dKSjdhI3cuWSJ9Uz5eUmVt'@; put 'PUc/SU1lXnR9WHtgNl5DMlR9JT98XTteMy9pSUdLLGRQMik9IS9hPCY6QUdZPFBdeWRid3F4TilURiNNRTJufDdoOSx+bWwsblRSMENuLDJyTE0pRDwzbTM/OXV0NUxDQ35SbmBgWDIyeEt6QHlfKV81akNxQjx0biVRLm5CdShCNEttX3w8eEpJZTpacyJRQ19oKy5tWGN8RnFLNVtJSnNuVixX'@; put 'biE3Ym1oVWdyKlFzeSklOUUwJFk2emBuWFdVYCNwVHpBZkArZ2hHREo6WVVXdFZkRV8kfDd8em9SdnFIPXw0V29qN15taXlqTVY7UEN7VlVGISF4YzFRRzBZdjIxNTVRVWI5SlN3IVR2UDZCVURVZGRvaj9zU3okSTVzKCtJRExLWmE6VDhvNDBOJEssITYiVTJWOjs/RDQwPTAoUjN0dC9uLCR3'@; put 'Zy9YIWI7ZntvMktXYiw4JEl6JnJORDJmTn1jL01wXlJhVV5XSERtdU1BaSVTJnYvMUpyVXVZSk13KU5DXiU/fVloPHcsdD1tTiprKHJIRzxQJjxxPWR4fiRKMGpEe3NpSFNpP05zIXNzNHFHY3Q6cENiPFhzL0xIY1lTLDNHRWg+LChLIlhkSDAhejdGWDBMbyFeOCxrN11SODJQaE5ESW56Ynhh'@; put 'JTpiOUc4PUszJExndHpRc3k1IXNaX0NxKDRuWjBVPCoreH0raCxFQj45YXQ+U0Y3N1gsa0ksO1U6JCFuXztTO1k8TnYhIzQjRDJoSS5QenBOK1s2d2smISw0aF5aQHAiT1ByZTY4NzYsMGFIanNnMC5SZHY8c1FSOEkiOjtKekEzTz81MCxCOT9eV2E5VlEyUnRZKSRaXW0sPkNSW1UlU3lFSF5k'@; put 'eCg/OmJ0XXdLeDVMdGFSI14zYip8IzR+cmhmLEYpO1czISNkeF9SfGFHaChpfWlGSnNka0c1JW1ENF9kK0RRbixXajJxeEJIJURre2hMUlt8L2dVOl57JGlCSF5udWR0Oi5OTlJEVlUhclB2I2dMeFdHOC42MXBraiYucjtPJm5LaWhWTzs8PUxCVyE4MWBLaXdRcy5lNkQvWmd7TVJbXnc+MCRj'@; put 'cTxOYmNzcXI0Mlo8RUl4azh0dWt8fm54KSlJQDhAIiM2WzZBJD85XXc1P3pYTWQ3M2VHO0hqLzt8Uyo7JVlwQDJfdT1aYS5DKE0zX1h2T2w5a0t+UExTQEVQXk0sY2UmQTwqfCN6SHBWVGMrLDJPP241cVpzQGhXI1VXRi8vK214O01sYHNdfC5EQjomcnxsN3F6UyxQQi5RKkxfWnh3QkUsV3RC'@; put 'ZXd9emQhW1o3cWJUcGF6U311WFY7Kn5JVDhHUk4vdFM/dE9+QUlbZWFOeSwkXnReLjpPfWxTJFoyIUw3eDV+dyZUSktdJU9EekU2QTY5InxUY0F1aCVoSTJXOD5JQiI2eVF5RjBrLERDQTRhXnw+ZlM3MHNWcSlEcSkqI1Q+ezo9K0F0YzpRcjp+ZzBWU19mPXU+YD87PTtTaWcxdCRtXWUhdyVL'@; put 'N1tNVWdoX1FmOl1WfSU5RncpKCo3dClSQ3kjbEVYTDIzSXd9fWh3KDNEfSJhUyEpTCM1Mn5mTHplLzJbTGhxNmxsTihNWzhRRk1QNDhLZ0Q8ZCFAbjUkL0FyPFR0YUw4enBde2BrbnRKQkouYyV0PXk7NmRkQDN6XlJfbCEzQmIhd21VdmpOP0BtQV4haytKTkVAQDA1N15+UCE1c3UwU0diJmY5'@; put 'PiVuJjFjKkVOfjlPXldESXopd3FUREd7anhndHx1V3w+SytSSm5yanVZPFt9Sk83MzFTR1N8PnJfOS9bPyFNajRFR2FFN212KyNzeFpCaE9rWCokeFJgRzpyXWx1bHF4aSpOcSpNNykzbTwmdjB2WmN3WyRuQlBxeXgieTZiQzBKeTdpL0w6eztkJGMxayxhe0VAcWhyczkqcDZjYjVFeyM/NW40'@; put 'TnQvRXN+Xnp7VWZhZD5gPjZ4cnFaeiEyMzloTExJKWZnQDl+QW1ePnBETkhHUj40UHFZIT9OPSNSVWdiKUxmfHVgVDYiZnR4LD9tOmdGYTBjYCpDS3MyXml9WG4/I0w/SndaJUBncHhfSGRvTkcuWjh6PSlCY35gZVAhcj8vTC5Kal57fnZeeG1rVVg/TzJgbCN9fl16fFtRdGZfT1MpfkN8PTs5'@; put 'NH0oekM/blA+YDspNXh3am5IfklHajZ9XilbPURTQSE7RDRDIjRkSUhJOCZqa0BXK1F9eH1MIUpSZFI3RC5ddCh8cUV0YSVEZDFPdF88PkcyI0BfK3ZoajsmIn1OcCs2Pm4/JHY1MjhvIjxUcHdBY05TVTEjU3MxVlQ4b1s1OTAvdCMpK1J0Xmd2QS4lKzJSbz94Tld5RiYsN2dhcmo3Vy5bPEIw'@; put 'Om11RyRjaXFwRkpaJTE0dllWcTwpWkNBZS95am83UC9HS2RkL09tTjNXUUFaZHp3XW5sIioiXjhsUDQ3ZVRbJWloe2ExZVkoUlMrfE08WVlvS2dMPiwzNEUhVzhQelk2IkQlQSNnOiwjPC43ZGAwMT18WnRvaHJtbjg8dlFzLG13cGNWQzQwPWxYMzBATjIsP1V4MyFrQTp3Vj1xI1ZpL0FeZix8'@; put 'ay81PkVubFhqb3YlbEdWTkNRLkYvYGYpLD5nLCJaP2kwekZwXncrPyMxfnMpOkJLWnYiUzVWdD9TYi45c1ZAODg3PWB0M1Y1dSp0WzFPZlh4azpBPVVocXA6fGguZWtSTG88eElDKl5pMixyRip3L2plYnFsY01gWTA4NUBvaFNOYiVVdTI3PWpvY3wwfXZRNlpfVGhnUnl4QHwhTk8+dFh2MSVA'@; put 'aEgqKXhZMH58ZkUyWkNZUkBLOWRUXWJ1ITgpeWwlO0pKUWhJInozI2RASSJnanlDXUB8eCh8KXhBejl6dGgiOWgxN1hFKHdSeGdeOCRxMCgkaXM0dWpQOkZnXnBCZnQ6QDA+RCk2fVJXYC4vV0tJPmYuUXloSUE9KHU9emR2SUM5KywjUFpUaGJqbnVjKkZULnhQcSFPSmRCNHpeZVQ+VVsuKDNz'@; put 'ODd7Tnp3VUdIS1RtfDNFLDZ6dWw4d2JUfk5vNGl2NTs7VFRDU1dbUHxvWFA4V0x9I0pDY2Nud2p4SnpMSj9FPVp2eTElJGB3K3h5UT95d1R7fnhFWWpLI3RdV1d2Lm9NI2EjW2Q0PjxdVy4qODVgWz5gZndHe2FyQUM6K0E1bHcxVThFdUEmNjRzfFIkeVNfITEkNzohanNwITQ+QkhtRUJ0QFdb'@; put 'dT5yV0MjZTRaX0M/Y3M2TXpnJUwxXVRtWGd5OWN+YDM2WmY7L09ROXVRMUpEY3VkSVRHelJjS1Y2aDckQ0gxK3g1YHs1YVI6T3VXRHFienNzNy8iOnIwQDZba3FuUkhxbXorbEVCTjg/cXMsPDthb1l8ajNHeDQ8Uy9gN2M1eCw/a2I4ezUkOkxxZVkrQTFkdip2RU41N1pPY3UleDJsRD5vaVVt'@; put 'dl9xfGJDdFJEaE4/I21McmxGSWIwSmFXWU06OUVsVTRbMXM0a3cpTX1gVXRrTSh8WTdLcmF8L2tmNHglMExmVSJUM2JRQyIhXkRecSt+ME5gaGZKajRGZHpYLkxBOCFMZnQiMjpERWt+bTUkYDRdfH0qeEcjeTdZKXNAeVEyVk4/MnA5ZFd5NVl9ZklrUF0ubEwhM3wieFpeUmRlQSp7aztUNnxH'@; put 'K1hPV0duWH5neU9IWUNJTUZKRF1dOiluKjR3dF1BIWZEfUxxIkRePVg0Ql1jKl1zdk4helBFVH1hIlkrRnU5IyZScVp8JG1wcnhzVVRJbShfYXBTYUNzdl9gYmxufHxDLjZ1flplWVZJc2xDa2tMVnYiYntCJkVnYXp6d31UVUE6IkpXbmZzQW4hUWx5NGs6SlcpOV8xRUtsRm9yN0xjKn1lcUA3'@; put 'OXJIJTo4PU0sXjlGbjJSSUg8PUddLG8lXih4RGlNR2UpOEQjfEdSRVBKPHtdTXp2PUFRXVoyJWNMWUklNHxZPkhpPEJjYSheajFTNUV4WVhybUU3bjoifjpEb0dRVzEvWjZhZGpMSGR7ISxCMXt0c1lqKmIpNGshK3JuJEA8ZXRnPXIzWFEzY0MxUTtWM1QsPTQkRHQ7QTUvUWd8KVlXPixRTy5T'@; put 'MUN8NX1KOGtsNHsxcFtQLjdtQVN5Oi58ZV4hYEo8WmkoK0pbdiYyLHZELy8kIlojbFdEPjNJfDhVRjxIcnQ2T1dbIzh4JkoxfksiTlgzMV1eT0Apcjt3PiZsSiUsMERZNkcmWUtFczVpSV1YcXF3TG5hVzh5RmZIRl50dndOIV8sOjM0VGN3KTd1U3huVFBYZTg6RmJ8WkBpOi5edHx5NWZVZi5+'@; put 'QzZ7SCxUPzZFdio0Rz1tWCx+TVc7a3VxREhGcEoxbTtKPkA8N3N+TGZRRTxZfUtJbmlkeSYrPVMsRU81KHhkM3FAblszVX0hQHJLeVEoJjQ2TH02JERlM0BBNm9CbHd3KD5DQFIsNWgoMVltOzUjIWJHU2N2fUV6dmN2TnR3OlIvOyhgTklWeXQlSFhKXzRWMiR6YDd6WXFDNiRIO2g6YU4oZGh5'@; put 'aDYvTGMzJWgmMnNDYTIpZ1JfKFpGJm1tTnVFdXxXK0FAL18kSVswcXI8dyw6UE1dMUZtS1BuaFRqdjFSQ2YxLHYjKEZsZ11baE5gRSorVF1WPGoxQyYqQnUmSS58O0xhUSFDajlSKExGN21wVm1lRkM9UUFJc0xVTTlERkRfTVlYaTRyMjZWeDxNRlBmdTxCZjFxc0E6VF02NTplKjcvTEkqezk2'@; put 'WHBBK1RQdkUpemRAKXJHW25EdFUla15XQ29gUjVxemNfRnp6Nng1Mko8akFpWH4yNXxbSH45cmciNkMsSGQreE5AUVJeOUU1XVM0bDN4TTleP1JVSiVVdUxeQ1BFTHp1QSkybTJrcVVIdy5TYVA5Zzs/Y008aHk5JGJzZGhqTHR8elsuMmlROzBHOFAyIXQwXStpM1dDPVlbZEkzfX1lK2dIYXQ+'@; put 'M2k4aUw9S2FrInF+KyRxcE1YN0JWcSEwfC9iUV9mNUdOfVFddmo7JVhoWHZkWSpRNTh+S0hzSDU6TDJdbXE9NUQoPTBEfmI9Qmh4Iz19SypoWlo4NHtHR0lgRWVaZEdlWk48PGwxZyM3LCQxWTcrJHApRjlsbnt7MXpkUTJieGZlS3dbWFtUVXpIYE90OH1jQ0lqL3UsNmIoVzY5SXZ+T2NadEU6'@; put 'V20zXVNEd358QzNILGkmKk0rPElrK1FeajIuOjYwUjpbK0F1WE9wIUQyVDBnL2NMUFp1Mj04IilRbSU9aCk8MFM2ZUleQnhSZSNBMUloPCtTbS59ezJBTXE6clY2ZUcqfFo1SytCRm90TEFGOEBwMTw/eFRvbUIqelkhU1tQLiMjTD5tPztrQXgvazp2W31EM1MqVzlzKy84TCtZOT1WfFlLXldU'@; put 'dm1wPShLd2kvbEZKKypRdVJkdWQlN3lvZ11BPSx5JChMVWtxTlNFdGVRMjJAJWBQTzUqekIhYkJhWVNXO2hRbmhMU2x7W3E0Li8/ZUMhUEU3WyF3Wn5vMDp2XmB2TDhgaD1ONjtDQ0E5dnJbLDlGQk8oeUFdP3o4L2V9OSFjOEt0dkQ/SWRScTZoa0Q6dUo5Ii5AaUpSaXEsRUUvQEdOPHtdZF1e'@; put 'SytXWnFZZko8IThlOVdwNW1EJHhGT3RTbVR4U14xNE1KTCN6JW8zb35VLClnIXlpW20yPitBMjtuVGM4Z1R2KFMmUnBtUWZrMTVoJVM5Q1MmY2JxKkRDPm9ZUS5VbGZVYD4iNXBYX1twUHNYMm4qITVWcHVgclUuaSpiZSo6VHguR1tFYDsvO00+Q3IrO2VES3RLKW9tZVRDYEdJTTlFSmtMfVl6'@; put 'el1NJCpzTzN3KEd6TCsjfj9BdExVazw3THJXV2BnJHJeKHo8cC96ZURHR0BafjUlPGxrSXlVcH5hTFVzNEskODQoTiozRUZjPjk5OFI3KV8wSSZkNHJzQWM4T25MWk9deCM1RjBPQHYvPCtfN0FUKSU6dSI+bWg6JW1tV0RjQ0J7cDAvazBULixAfU52b3AyUilPTlhwcG9MRWhmd2llYCRJYllu'@; put 'bnFSI2Q5eF52MkdiTCFdIlhHVil4NyU9UyovUk1TRUdqO0JzPFpwdEwsWzZxezl6ajhuLkdlKVAheiV5UER3aXcsSzsse35VQlghaDZzOTJ2X2hOTm9LUzZ3fUFpPXRgWURnKV1xcTVOIWI5OSgpX2VURltdcVlQSm54MCY3eFtdO3daR0xeSDJyc2dfbnhVVH1NQmBQcXMkaFs2N0w7IUErbllF'@; put 'M1poZER+Sj9qPnhxZ0pQfjJ9Vj8qPiJUVl97WHooKXxrInRTOjpRVHhXXWRHRExgeTtWYEUxIkxFRWklQTBFNns0cWpmfTtBKFNIdV1QRV9qSzxGdG9bYVg6Q2Z+dVlAOT5+e0JqeDdEZHYlTCtXTGpPc1lBSkhRU2xkLk9SWmI3UVJrK3FtODdVezpiUnxISVIuVGdhfiRTR1pidV16Rzg9YXZX'@; put 'Z3BBZUM1SHt+TmVdOGpHeCwhP0ooc21bO3BVUjgoVkVCSFlVI2puTk1SeTBaOHZIQ2QxVWNBSm8/MT9CdUdXX3RKeHkjdiV4YXMyaSUzV0RNcXBPcXs/Xn0mWGw8N0BPXiQrazshRl9pbzowMXduPS5hV0xUYUFEP30yUUFHUDY5bylZfiFmPHJnPS95IlZrYklsP05OeSV5UFVjNCFgbX40b3c9'@; put 'XnxiYndPbjN0cXV9cnE/eE0hQ2FUSyEwW19PdjNkSDsvXVRqK2BONj0+JmUiQzJOYG1XNyZZc1E3Pm1dSF5+W2Q7KDpCd2d2bCo3JTFATyV6ajRPX0oucX1UIX5NU0B3YUx8RFptJEY2QytUQi5idCUwJUNJUEgiQ3s0OnJOYyxwXiZUS3xiTjZPMHVMfkZSWjtXZWlVUlZCNS4vPjxyJUo1aTVv'@; put 'cUMxc0FKdEJFczVDVkdEbzNQVyVYYFcxVm5beHR2cU1BciVnQUFtZHQwbHxARTBHYVBnSX1zTnEzaTI4Xl5mXVJzcFMiLnp1PG5AcEVMbih0QXxAQEZSPCRBKFU+WGdvOF5XZltuMGosSHlRKTg6S2hQVXklJU4rWzJpWzh6NlMpWCVXZ2NnVWYjMlshVSZSJk5zd2RBPl5UP2AlPk1kXyhuVSl8'@; put 'LDU2cmpfRyw3WHUrZDZLLGxNbHZwQ15RQi9lOm5gSGlMUklhcTBXfD8xeExrSH5YYFhPQDYlV3EqVW97aTdyOyt5UlNmY2IuZ0VXLylubEtSPmtZaDY8dERXfCxFP1lodiNIWERBRHByXUpAa2BSM2tHLDQ2O0p0XzU2SnNgKF9fUEghI21ibStCcC5AfjlpdmwrcDw5YT9GckBeOE57WkYheTB3'@; put 'fEt0Szc1JioiOC9lOClCaF1BRW9RP0slU3EhKkBDZVJsNEhqUTE3PVA/L0NpbH0rP3BAbl9HQzI9TzZZWmYhRUA7QHpDMGwuPk1feUdbcWFsfix9R1c5SHMxKEF0N0pUSms3N2oyTXEsXWAwa1UwW2N5YFRUQkMjb2UwS1AwLjQjeFBRN309UmdlRGxfUUYsI2dTVWd3VS5IJDJXWU86cEVyT017'@; put 'dGhSRSJbPXIzcS9EfG9xU25XTz9rUXR4PnJAbWtEbSg3UHc5LFVDSGdSc1ZWQWNOVEJ9PWldaUVANkIsZyVELF1MUks8cC9abCNafG0jRzRXeDNVeX10U041JioxIT4yWmpnNzsqcFIhfSg9YDkwTWFVWSR5ODIwJFlVUnlVKnkuOUd1OD1TVSh1Z1lVRGU0YHgmYlksVEZnJSx0NTRHOV5NJWZI'@; put 'QHA8QXM4ZUFiZ05uSy8sQ0teQ1dae3IycihSaUFbcShMc29BQGE/TWx0fF0zWGAzOzR4KT09cSVnJWVLSUJAKWdwbClsZ1ZeJWVsd1Frczx2amUlTk1Ceit5QyIjYWFKIUciVS43LjxkXVRvTEppKyN9OXhtZCVTaX58bXVde2ByMnxKQmNASCRNRWxpSE17WzF2IS9UcEUkSH17Um52SHNPY0NN'@; put 'Lj9sPClDfGp0UEshdSN+VywldGA7SmhzTSwofkk9MV5dPShfeD5wdlp1Tnh+RU9Fa0RuQCRGMnV6OCZ0W0hKbVUuJlpoZnFEQVVhMylqb3NfUElKLlNYQEc3M11MbFF9UnY2enQ0Lkd3Q0lhSyEjTEBVS30sNDFdKV0hYW9AbkZyZ2k3X1Y5M3d1dFgkKjdbOHtndWMpXks6ZzA8dndRTUBJN3px'@; put 'TCVdOl0hUlYpNmBbT1BnRElVeSZbVjtxZjg9fm4jQEByVk5UXVtzNmVXVF40QVRhdklVV35gQ20laz9FQiY5QjdYL1QiWUtSR11YUktzKTl7ZjokLHk9Wy82WWEobTlycmRGSUZONTowP0dqVn4rbn4+OSQjVFBGWCtXa0NjUSZ0bnk1c3NuNXI/fnxjIm9eampkSDcyblQyWm40TmloPTM2Ljcz'@; put 'VEdXQG5zc251bE1ANGl3O3xhbSxgbEBnVEpGd1NOPyVCOGBNKyVqVGRfO2U3al07YEBSInNOL2tnfFh+In1uXTlPL11md043VCgzOj46PzwlYn5fSzp+RHIpM1VDNSFkby9uZFRRYE9KZ307TyRsLl15NkA9RHI8OX5RKUVXUnBbNHt7PFpZODBgIz9daW5dKmxUPm4pUHRPPzE7QUkvfixeX29G'@; put 'clU/UXU1XlN+K3NkflYmUVdESmY4QmY0ZVlkK2ZwbztBN2F4X1pNPk9ka1M/TVdeTWFKbzB6OWc2MXRbTzJCJThwVjY4OWojQlpOUGAhQl5vUntsUENOZn1NQmQlbmJLSXE2T0JHIXFOekFPUSU4WUo3P2F0XlsydlpwbWFhX3xISUMpLyhXWTp0W0RdZkYlPGY8I2RwdnRDT0tNPlFpNlNAREVl'@; put 'fD1XQ09ffkReM2EkVHU6YSV0OGMlKk8qbEQrOyJVYk4ha3B1USxpbUkoNyE+QClAUktSfkpUS2pRRmlSaC9kfWFwWzRbTTgxfDkxbklKM2FycERFfShjJUxsKXhjU3dIVm0pVmYvTmtSQDtZZVFET1ltOX5sJkN9TEpwX19vYWc3YXl1PW40QV1DNnVDRHRSZz9GdyhNY1RdfWNFdkEjeShyb1kr'@; put 'fDc8SkcxUF5rYnx8Y2Q4IzVEWyNie1BUanhpPFl4YThoTDg9OzZdX2M5N2VJJlkzW1J3fkd1QS5fbS9WPWtyPz9yMVB8RE5HeVVuU3kkdyt7VlZ2Ymp3WlVtfmlCZDk4M2BGfnlafHFBUjwhTTxYVlkvRXJuUV9dXj5OWENFcmU1Y18rQi4kP3JQNj53dnwrdHpGJCwyPiMlald3TGVnMllleGA0'@; put 'MEYye1VFQ3psQzxAZlkyOCVqVn0lMlkxd0YiMVNIT1t+cHFaKURbQ0oofWM3aixLdEZ5T1E2bjx0bUVMTGd7fDNqdnBvQkpBdjpbMixTbVciTC9ET3s6VTwyUnohbmN3O002W2JlIy48QjkpWkhUJV84Zjw1K1hYTWlVXkZPX0BiMDtPXl1ENkosdWheenVGNjFCMVBSb1pBbVMlJiRDTXJFSD1m'@; put 'K0BMbnpKU3BWdDguWENnYHpXU31daWo6bmpmM1A5LmgwSmUqQik9RWNbKn4lXzklUiZ6ezZMNnk8TVBYL21CYGIxU3V4ZlFSdmdnbUwrTXttfFQzKUciT0U7dFRvSzNeKGNmdk08b0l+TG5GQmJ9RX1Ccm09bzYhKTBwX1NjQTEiNCQvT2RQP1A/VWorZkgzPHRbbikhbF5ffEJQeFUqY3duKzZV'@; put 'bGFjZTx8cEBzYTZxbjUsPiUqWGRGSHhUZCRVXWVrZCloeCZTW3M2bzVlYTE0W1NqQlpHaFl6YXQ/UzteViQhSyU0O0lWfS9QRFIlXXprUSN7VzQsaEtGSUUhPis3UWlmXyVGWks6QGprNk9ObWtBYnhTXjhET3RYY2RNKE12dXtRSkdrcjksWXlsISZLLnAmIzZFfF11Tl9USUlZZyQhWVBpIj5b'@; put 'KyZ9VCw7OVJhcX4hV2BGc2ZmL1tEZTlZUSFjYElQSHtQR2p0Wlo/QnRDPjI9N2F7PERDYld7V0YlJE51NFM9XUNRL1Bnen5OPVUyX3o2KFAzR015QlkpZzlRfmV2N1ZrLnchXks7dTd+ZDxgJEhzbEttLEI6RUomRmUweVQ9fWdZS28yWS5kRzZPdmEhdiF9LipjT1JKWVJwRlI/K0lyLylqezU1'@; put 'RUspNUNaSHY7YUc2VUJ6S29wZmBSMng7cD5jandyJW1IZUhpUE0zSExdJSxTeUU6PWcuUUpLYDZRQVFwRHNOMjF8UWdoJjRYWGg2KSx1cCVvY0lRYXN1NHhjZ0ZWPjA5LlgkTEs1YzF4TFZ4TkpOWixEQ1ovPkQ+LCQ8ZlZgQFlWUlV5OmRbVyRjZihjSVpCNzdGOXg1bjUoWyUuISUvZjNjeHRG'@; put 'ZkhJd2d9e0YrT3JbNkxNVUo8aCM7OUQifTs0Q2t2a3RjcXlOezpyVCU3MmxTOHxAeVUyNSx5QG9bVFBzLGEqVGBkbjd7YFk6I19UZXovL1g7WDNHdVA9ZW5NWn5EY3NAfEsjPnl1O2x+TDRqfFFLazc7Ol4/YCYxLD5LYUBgL19+YGpSb00pXzo8Jmp2fD5XfH43SURGTiFZOy54ITVHcDQxQEp5'@; put 'b3k5WkoiREl3TTB8OFoxO0lkQTYjYUBMbCVnMTZlQGNSeGFjWT5xckhUWnkxYmgmOk8pUD50SCNNL04pfStrVGpVP3trcTRWVzV4LjNFPV42bypKKWs2Rj8oPXlnY1F3TmdDbUs4PHsoLmNFa0JoKlQ6JnRlfncmb2AqRixRJkVaKlBtY1I3Ryg3bURENFgue25HK09FJkF6T19Tc24yUSJlQEtw'@; put 'JlE4TWN9bUtNcF5xeGJEdjBvUWRlelpZNVgvRFl8QUlPQGhQO0BCWCMiRFpiTGMyJF4uQzhTSSQiQ0NYOD1OSWMzdUglIyt1RmJURmYhNmsuKSk3T1Arfk5gNT9Cd1QqeVFQdFVZO1BTPDIpcSYlOmFLcjQwZy9VOF8qTDRIcTJJMnlVbm8rMTtjYCo3Ik48emJCcUl1X3dgYFU6W2xVcDVKT0ch'@; put 'ZF5lV1E9a0hCfHllMikvbig0YGtYcUc1RT9jXVBBTWtRPlhdZD5beCF7fWI4TTtKRik/YkBjVlNmSn1LMXUyOztecjEvQ1E7YFM9OywpdSJhVVh4N0ZPZ09VeEQlWmRvRixjY0JSUlJDRF0/PmIlIX46PTZGRSZ6RWliZTdzaHtjUDtkdiJ+dHx5dkxNcWEsYDVGdzsyaS9hWyIrNTxQenx3dVM3'@; put 'XnY5L1ExWnFjck9lOjEkaG50Qm1jMyxsWHh9PjBTWWFfXkBjOygjbVowRCF3NUhyMmlobEJNfSk/ajJhRXsiZCxCaXNKeGhwRStoVWpvKEpgWT0xYT9fVlRTR2BifncuPFpUQTgwUFZxN2Nqc11DUDpmIWQjQ2ROS3g8W2JNSnxFOmgjdCl3aHpnfVNeRHg1WyJ3YVFRYCpSWShFeD5YJlE9eXEi'@; put 'bU5IYSwrJWNBcmRGT3FzU1dZYzhVKFFLM1d9bExZNHo/MlIwQCk6Ol0pPW0iL052cSxaVXloUSo0flNacGRGZHk8Sz5vJFcoLkZMdF1tITZScCE9UDplfj5hVTA2LHAkaFE8O2gqb1hUT21NT2JrMlh5WnE7cjtAbDNVKFd2eEBHMVN0WGkwLG0yenFGbV1nPDBgK0cyJnVgVUEmaD9zWVtGcXNz'@; put 'UDBJV3UrNWNOI2Rgc24sdVFuNW1sPiJWIyg6RzU8TFBiWSZYTFhkb098PCN3eDUyZHlSUjp0XnEjPVVnLE9jQ3N2Y1c1S3lvWiM4Sm9Pcmd4K0JrclArUVRGK1hMcmVHO0Z5JlN6YCMiakV2NnhxRnZ8fGdLQElmb0JLWUVLR1ptdCUoN00/M0loUE8odH5vIUszXzgqMHhAbGwkbjAreWJFYUAo'@; put 'OXorRGU/VTIxUkNiP1dVTkNMbT9oVmFwZE9tKW9ebFI+c34mSUl4M3FfTHckSixkVkV2LmEmPCNUUXM1OTBGWEF0dS53dEo4W3g5QFtqeGZJSSM0Tm1feVQsTCx4Q1RIdyN8P1ApbCxSImtEbDxBRz83cFsjRU9nW15dSX1VM1JCdVJaVjVQeEwoS2hPIipRVypANUJdQD1ZMUJHaFJGMF56WlA0'@; put 'QXRAST5eazc0ald7SV0jTDdedkpGI1taO2hzfEJrZ3ZXMl10O35odFQ7QyRkWiE+PmFBSnRQWzo7NUZRQU42cCg2dTQuJGsjRjlQbHQ2PFlCM11lIUooTHZZXTMmaldvciFqYkZfVUBrI11eKV8jR0Z0RXt4MnAmTVBuPiY0d0RbOyNScFAmXj1kays7Qk08e3Z7NnMwK1QiL3ZJPH5UR1FoOzN9'@; put 'JWRmVThddiVGI08iJmo8ZUN7L1ExSyEuO3gqY1hgNHBrX2lJb0kkOXUrUj5QVzVQKnVRTEFLT3VEfjN1aCtjXy51P19vT3N0N3JyKXc/WEg1dUpfayhQTm5sM0hoO2NNUEtdQV4pMHF9Nnhuel1LSHVde2ViaVhJbDIrIVFsdkBQbGpMIy5paT0+QEF5NnV4V3Z4TUYkQDNJZ016UC5HWiZ9bGVh'@; put 'a0d+Mz8qPlJHSXV3XjY1Z2M0fVI4VHh3KFdkJiUsaE8zNTxzQzNKLm10PmtOUWtmMUxAIjZvNFptZH4oVj5ALC57JTZFMkYpcT08TT1JMlBteVcxMmZ1b3w4W35wTjhqemE6WXMsa11hQUlGSUUmeUQjKFlZeFc/eTciOGVSZ0BmJlhqUS5GLls8WSRTWF8ke2JjaTAmTzRIWUkkP0BoYWtSYnNW'@; put 'U2V9dSFMQiw0UyRyMisuelN9b2N4dU9vbDtBblB9c0R1fCVjampbUnZELGJ8KUglRl8zeGp8cldTU1F3eCFqZDBqdUd6MSpAKWx7Z1cpPkFkW3JTaV9ULCIqIyp7bylmdkJ0LztTPVkvTlhBc0dGVk9TRCxWWTpRPD1rYmMhbVA9VHNkT0orK0d1eHUqZmtNITMzIVljcnFhN2wifWtYKHFLeTVi'@; put 'OjR1TXFFMGZ+alo5UUc/VzwlZW0lQ3xzcHdFX0U9cUska3JmbDNEUVc2aF5AbGRPYixGbUZGTGVBK19mdDU2Jiw0MERPekRULDxoN1N7P0FabiYrbDFtY29sIXxLenM2KUMqJikpajt3Olp+UHM6JF4zUXA2Y0tGZi9vLHk6ViFmJDl1fkxvR3BwXTUpWEBWfjJOKmpxe3tOaVhRXSp0JjVAU11B'@; put 'cC93dGJ2UnJ0QHdUcltSNT9AVEJTNDYyNFE8KlRYZEpLeHQiYz9OdmExQSQpan0sRHQzQj1VY2dMTTp3TFpbU0IuV0pATyJoJip4YFAzPitAck50VjAyQDhrYCl3WVomY0VyWDZXLyQySjlrR1psekw1TjtCOXBhMXx1O05NZGVDbEdDeSJoYWB2MzxAc2BmeHFKSnJnRXU3ZEpxSTdFMVlAVzUm'@; put 'V0siTTVMVnxUOzliVmIzV0dNNS9aZy8kcXQiPGNfNWZfITFxcjZCRTFhWVoqcCY5KyR8PF9zcig9KCNHUz1dQGteTyV+aFRedCp+eltCazdWcVlzfj1pWTVwVjtQOlAuYUNVWWV6fFM1QUpbaS9vMVNgay9pQkt3PT5pbzcwOm5hOVd+SElLS3Q+L0p0NWB4ZyxqY2w4UiN7VD08XylUQXVEX0Bw'@; put 'Xzl5ME4oUllRUFhdVC9URiQqazc7WSQ2SCZiOTlgSkxTVH5pNk5Ua3s0dTJkJXcvcVJCRTU3UkNsImhIUyZ0YSZkc2N0N1t+Unt2TCJVfUhvOyk0MERAY1lYdk9lP1JEPj1gdXVgWHR1SEl4T2BLWWtZSDxVNlImTS5BVlA7X0VkQVBpTVZGYFgmJEFDLi5ea0dxQy5+YX5JTnZmQXw0Q0hoRVM2'@; put 'bnFxfkFMeF9sZmxmM2lgQmhzRiR8QjtNTXs+T0l3eWg7XVliQjx+ZF1JeElaMDtGZVkuV1VJMV5meChyU3pgOVdhOz4sKmlLLE9PQzNBXnUzIUowVjZrQHpuT09ZY1NLLi9WJFFVMitedXldMWhSXWhtVitUOCo0XnFAeEBrdzwpXiRIZ2pXL3BibVg8TSJUeFZ2dDhpdD4kSXxmdTxjTyE7c1J8'@; put 'PC58L3Z8JUlRMUEzdTA7bGImWnswJStOY1dSOWJrIz5WYSt6c2lsfDpyTTM6U1BGdE9iR0EzfVQ1YyF8KF1oPXk6SHg4I015dk86VXhsQlZac0c4XWVNSD59MFc9c3tuZ3k8bldEL0pgIkA5alYmcVQ0KDg9Rk04YFZfUlRBeFoqdDAqUiNmNDRSY0shISJ4Pj9vNFIoKmQ7PFM9RXRoIWlhcDxR'@; put 'JjRGSEY4WXpvcXAjUVJELDVtPEkjekxvS3I9PUpNL0Z0MSkrISJ1Zz5ob2pkYSJJPHRYOztLaGMpVVBadz1VR1hoRHRrZ3tSJlQua2ZDXm99NFtENiFzOWZdRkR0TXREKnVlO2hGXk9edSRHRERqIzFDeFVLPW1KWm0pX1VgVGA7MEdDeDM0OzZbdzg8UyVURGlzVVZuW0hvJUgpKEtwb2hyTWJz'@; put 'RzBYaSEwSmRWSyQ5JTF3JEs1MERjcmRZYU5CVU4keUxuIiVQdWBKfU1dOTltTD4mUWk4cnUuTEFYTjc5ZjF2MER7X3R0OyU9K3hpT0A4Pm93c1NfKjRUMUJwUU5DNWpDc3hVMHRmcW49PX5qNnIjcGJwSSIuZilnO0MpXkQsU1loVlpPWCxUSn47ZytxbzhZZSI8NUN4dj1VYlMmfW5RMjJYSzdW'@; put 'Y0BqNlRoM0wyajI+endNdHB7NDgxXiRFbGh4KHI4Y3JKRT53VzV2Q31zPnZ9UWBKM1NXU1lxMGN+VzBWWm56bWVASDNzXkhsb1R4fT9SVys0RGJxJmk0MitHXXFyQGJybTAiNkBEPVhYdTtnUClPS0V5PTl5VnMlSkRFbHA0SnY6MWJYZjByTTJAMzQyISVGUlV6PHRnWjAvRk46YkhzM1o7WTdy'@; put 'Zn0jcjpZQXpPYnU2dnskJjlgcS5rQWklMno9eSo3OUMrLkkxW0Y+XzZUMl0mdSsycl9iR2U+dEt+dV1mKEApTkx5OSlaPlVhOCRebV5eWSxDXzNgM2JPWk1jL0VIIWkhYGBDaUpmZjddWT9BKS9gUG56KC9bYERXLnorI3h5O3NYfXReekl9R0p3YmJQRDZNent2SHZwSCVFRCN5ckohW3VMQ3FJ'@; put 'bFJOanRPM19dVXMsKy9rdVZJVFswfUhKbVBiaUtYSE9mc2F4UHFKN3BXVEpJZCNMS2wwKjQjdE44UzBZczg6ZGAieHdpclZqYT8xNnxtaFN6RGJPWV0vPkB0YGQ+TDRJSVApLF1JRFBoaUdeTFYkd3tqfV51VjBpYF1SMUUidHUoVnxVcEwzSGBeX0xFImdzdjZ5a3FPXWZUVEIrQEl6Q3pwVVhU'@; put 'WGV2OCVTTDpOdz4lRFBWdlhqNE9TTmU9U19bVyRCc0dSITNLUmJ2eTdCTmhnIiMiPl8yUmdFWmdWY0s8K1IuaXpRJHFvdWgzSiZCanAsailsfjp+K3lxcjdLUVhqb2leRFs7W25kOiFaSFF5LD1lRmpvTTpiVm97Sz45OGI0OUAla1IoIilqTj5eRkhtVmguZW4+ZmFdVmFydktGRCpteklUIkIv'@; put 'c2gmdDNeWSxFS2E8KnhEXmFCcklVUk1YPV9rQ3E4ZDB7UjBqUEwhc0FkSlBOajh1QDIhVmVudnpYMiFbSEdEMztON2NjSCpGeGE1I3VsfXEvM1VAVGpNeS5tYmAiX3ooMFJgaCpqfkFuZUldcXRtT214aVsjJk0qPGBrNjtzQW8sfUsyN2NAelRCQiQ6PWp1aywqKmpsdVIyY2cmJCRFLHFFZnIs'@; put 'al5NZUc7NG8zWUQvaGlwLmV+VzlmZStoa3FsTGgjZzVEMXFffnVQJm4hKldzUUA4bGAhdmZUYVZfNH44N2liT3d3NF5mLjFmTy5xYVBWY1VnIkBNNmZUenVSTzxFKC8lWj9IKjRYTDJdLiIxcDVba2dwU09tKWZpcHAqdmM4eHEjZ3d2RX5GVDV2MWtMWkFJMHFpIUhnTjE/Q3BJNjR1VXVTaW5S'@; put 'T1kpUDhqXkxzPFtzOW47U0YoZElleFlsOX4zb1l1K3I5Pz50OixEfH19c0U6QiorODRHRGlkVHwwWCt3NmkhNWo5dkJeLEIrNGE7d2FNLzx+R0kmKX0uX017XW91KGZxby9iMFJxfW1NRHhaMCVlUzJ0eHpsdDtvOyp7JUg9eWBeMzNeTjVKalNmcXteJV0xXntFdll0YzZbYF5hW25oejReOHol'@; put 'JGYjIWMiV0hZWmI1PEdLOyg8cyI5JjBXZilpSSlCc3AiSFhARFJfdHdwb0o4JHFaOjIucGBWTjB5YnZaU3BbeEJBZ1JubDM2eEhlPWVNLyo+I310azhBbF06TE47LFNoIiU8eyhuNGcpdD4+W3k/ZldLKS8+R10+dGw/UEwlKj5QR184KjhfMlcifGMpJkNveztMYjR7QmtLVms6SlJdb2VXLFZw'@; put 'NkZ0KVdOajFLNzVCVihkQVpOQzhwUm43R2NFfThHa1g+RyVaMHZ9IVBuPyMlNVFKckw/YTJERHBSd3dEYk1xaCE+SU13aUJiWS44NDFNXih4Mm1SISNjaHhWUT8uSSt1RlVRUT5da3F1RypQOnZwTUFMclYkeW1VYHdtT08jR0h+W257OGd5XSM4VGk7Lj5AdHExelp8WEdwKlJbVnlhRlpAUUg3'@; put 'OFB8VipubSM0JkxmND53cjwsZUMjOCVffHE9OVImYnM7citkXWtGTGdBYFQ7Uk1aQzI7IX1VOEVaR21PPE5fckBpezdYIW5lXSJyJTdtXzBJSUdEPEshYC9vVW02TlhiKjI6L2V0UWNFMyJ+cE8mLmZMZ2UvVztWfmdhW2t8fDlhPn5GaWBHU3IwWEF5N2AiK0VaSmshV0dxMUQ8MXsoWyl4N2xG'@; put 'KVEocFtFJF5kKnwvbzFxN3piTzVHX0tSRj9gaWN+aDd3VVpvM3dLbHBBZyk/SlFCZj05ej54cGYrLGY3OUZyUzBFPFcvfD4xZ0s6Pn58SERnZDokMU43KU1fKW5PRSUhZGNwMShTKFY6a2hPJDB6dS9JUz4sXmtRdTRqVjB6SSNQRDQ+Rk9ASCQkcV0/eFQlemh3dT83d1R5MiNid3t3fCp3e1R4'@; put 'Z1k5Vm1AVi9ETT8iUFo1Vyp8cjBifFZid11CNn1tTnxicCwman10WlVbPVhwelYraz9ifUlFRTdkfkYjQW5sTGZULihET20kNWdlW1dVLzI9dUx5d3BfOCUhV25EPmZXXiZwdS8yY0NOd1dfZmBLJSI7VUdwSD9nTk1SYms5aSVNdFo9Z2sxIURFTCUla1g6a1pHX3ZZTGZOUHp3eUdFZ0BFYWNj'@; put 'PlhSSV1jXzVpeGlKQHBKfj1kMVVITG52QE9kKEdVeEMjemY/cVBhVmYkWWVGOVhlIXRCclFyZXkwb2tyWXE2fWNpM2trb35KX0lpeFJ5Oz1NOFFvRiNzLlNmaHM8ODFNbkJzYzkyaXAjI2soZUJfOWFDSihdLm9TWkUudD8wYDcqQFdIQXFZJHdTfSJ3Q1FrNEEuLHZCNHAlaSwmY2FmYGQ0alRV'@; put 'OGoyQU9hPVE6X0RDJmEubUNKXzlZUE9QN1lXLD9jXzVLSlMzezI0THJOZCJNYUx7eDdaJXRTNTZENWQwJnQwZFtkQHR+aFVfalp3XU5PeE1fbiFAN30zYGl8dVZNfHpYLlBCcnhdVz13PmE9ZjM9UWEhXVkyOkddfT87JWJYRTlsIVcwOitXWE0/I2h3P2hmbCZ7LlYzdEklekJTamZkdyhuR2Q8'@; put 'Rj9DVn13aVRdKDtKJUZ0TG5eRGB4eU8/aSVEb3hPKW9TR1VPTVd3YTAzJFdvPXl4MyZJZGtzU01XazVENWY7WGNEZV1aIkc8OX52PHA8dHhlJmpEV153eUo0eHgsZ0xHbCp9bCgjZDFyZEZ8ej05U1U6fFMvOyFTeno+R1oyUCpwM347ek9yJnZLbHI4UThTX35EaCR2M2RKe1Q7eH5uTnFxQnIk'@; put 'XilPPHRWX2kkS3tOM3A0JG9IZ2lqZSQjQGRFYWZ5Wyx5LGdCeVRfJVtqNWZ+RTdzSTR2ckNZQSVOPV1vUj5PLlQ0L19vZ10sYFEjbUdwPGgwKD9hJj9CYjojJS90JC5IMXlZd1gve3tnclBRMyZtPDdBMj9aciNLfEYjYE9RZVFoZjV3bzwsRHFIfEV6VWtuciJMV202TmUhQGNCemg8UGU2V3Bu'@; put 'fik3e1ROSE1CemtiPXJYQHxCWn0jQWRhNnlIdTVVKHwyYjc5RH0kcU1MSHdWeTR0Rn5UXV5mMjBxPWhebz5qfkB0eHI+RmtuYmMsUm9wcTp1QGNeeX17cDxmaFg/SXlAalFfInw5a0hmRlB7UW99fHs+TX40MlNqW3wwI2gma0U4YUZYSHRvO1pebmA5RyJSNV1wKl8hfDkuME5iLy87Z0JZYFch'@; put 'YlhyKGcqWGREPlAyYnRveFpLe1dvUGVZZGE8VTdVRVZTKnBmMFQxcnpZVD0rT346IiVad0RqcTJmIWsqUHBdZ3AwU1tBPm5SXk5GeFM9WVZTKXF2d152an5xeGZpM3g0VE5mVGRwN183LmBHSjJgUTpyLCpQREJkQyRGPko8WmMkclh3bUhPeFI4bkQ9djZ7JEtLQGRnWnBsST1UZkdhKTF5dHJK'@; put 'WF0pdEczfUVfT1p4ZVRDfj03KXFeSGZBZFhlTkZUYnRAfUk/KyU5fXhHTT11VCt7KkRzd1I/NjFiOHg6YE1TN1UwZXRfIUN8UVJYRW1TQmt0Zz1aWnFEX08/R2J0YXxUIXdoNnVSbHQ7cDdfXkB1K0lxdE5mMVpMO1Vmem1aNnAsPzlsVlZbVHRxeXRyOU59cC86UyNEOkRVUnd6ekNgcXljXVo3'@; put 'V1l3WytGPGM0XnZ9JW5OYU9WTiF+TCZNaHcoJSJPcU5YUERSPCZOOzVoWThZKGJTVXo5YClRPSwzYCZyV09zJT9IWSpGP0lKc2xrbnBiLFFmNHBpYW5PN3EwJV4vWHBbZChdLElQdD0oPWpKQ11ibU9xVWhnLFBkUk4qQl0hWihYKWldRSkqdSNhKVJ8dCRSNTtYRlhsXUByfU1FbXo9Ky9BJlI2'@; put 'TF49I05NO1RhTTtXKiExPSg0e2QlOmt0bF1HdTFidklRNHJNbUV0QkFYQjhQdSovMm80XW8yc3pDYmJHVDQ0SCprT3k0W30vLFFHWFk4WGNHayxuVUgzPW9NMWtseHsrbC48ZDh+QkxmdWUwcXk8WTdpMVFnLiZ6P2IjMClQXSIocFh8U2luTzFpSXp6bkhzb1syJWo5VjNgLF97LC9KV3k5SlpE'@; put 'VEx3VmUwYll5T3VJY3B7dzleT0I8ezcjKl0rJnpQdXlZfDpXLjlaflhMeVBUOHYvYzc+YUJ0elFPVDlNWj4lV04wc2MpZ1RkcWxSIW9QdTlUO3ouVHJrPDd3IWdvPl9Qa2hTaFs1VzQuLkQ1SVM/Xkx6anovbHp8Jl9kaDtLVW5mSDpGWnsyOWl0O1spUU5VSV5uT0A0QjIrP3NWVl8yL0tuRGJR'@; put 'S2FdWnpdTmhjTDVbZCo2Ql1yNk5IP0FLeyMiUXdSfTJ4bHV2NzQzdCl0KzVRPyF2Zl58dyFyS3hddUI/Rjk6eWFmSHlbdCxmVll5bihUaFo7LkdOQEIyKlQyVyY0dnZrcz9NaDojTHBkWzUuKldrMj1uKWguR0gzOF55JjkkSmMjTCUvPUtyIksmbk9lRDtpZ09QV2B+ZFhYWUhdVC8mLm0wS2Ft'@; put 'd0szJlBXN056Z31HMXFrZWsiY3o7RlokL3spaDIyQnA9RjRjQnwsXXNqem9MZEFKeldXMkk/cywwJT5eP2RkcHkuKCwoYCEoTyp1bktedGpJYUVAeSRDTVlFVUVRQTpPRX5DTnRCREhWUF5eVTRLOGFedXx8P3BYUzNhc29hTi5AIVRqTHR8Jmcyd0YqNCNBa2NEcWMzSSwxVHk5cDI3S11PUlhK'@; put 'JDZncjZ3Z2pPbSN1MFJOfDtOSnQpQ2RKUy87cXdAUDJpcXtRVUd2d2koTn0iREtIRlhCQUxnPXsxZHs4L25sUH4ue2lpWD46MXdzXm9AUnV0WDZ9U0I+ZWNgIW9QUFBZQTBuXXlRdDdTPiw0dWMlQ08ueUVnUnlkK1ZjRSQqZj93KjghdzI3PmM8P2I9Zz0hI15baEE1SDVzTHl3dXh4QDExTX14'@; put 'cyV4KURBT0pAIiRMRFlvQW51UUx2N2hyL1I2VjpGZ0Nfal9hTDt2Z2QjcTVgSCMuSEA+eipyLm5Jb3RaezhoXnV+U2w7X3NxbjMvfnlGLF14e25TKFtwM3YkSW9nT0RbLiJ+WDZRcF85fF0paHI4KTxJWmEoKzRnOGRkdSl6IzRaSjkvWUFpNj8xaWEpKDhjd01VS3trUF5aNUZpKFtebndLKURP'@; put 'KGcmInU/YGJATSMoLixvXzElTUtxXiRCTVEibVVMKnVKJmB6ZHN8a35UZkk1RHQlQ3xQO30jUTIlXUFzd3Zqdj1xMj1OfUdsMFg1al07Pjt5ZnwqIU5GYmRPbSxJQUFFSTBCJDRZPE1uXmVATGUpPFB3QzpGO3JRYDAxaWh0fSNOcXZiaVoxL21xcV81T2hQLm9oVVlPRzNidlY4TGRVTSoyMV8m'@; put 'RX5ZZDAxOGpPLzVISCFFTDkkKnlEejVFaEBgVDR2TTU3Z14zTXBjUTNmSkpNVyNRaSR2IltCUCJBVlgjKmM7YDpwTlh7ImxqPntCLlpsWmJEcVBHZHooXTM9ITwzdDFiVWFQIilBYEtQcHciNGhASUQiMEdhRXJQdDl8dSojRCgpT0JycHV+JVFjUHtoXmVpTj02ZF5DKiZmVyRIZHNWampOWTpZ'@; put 'aUdaLmBXQigrT0UjRG1BNmtQPVdrdWFLSUJRRk5yL0I5bi85UD5+RUJAVDo3TFFXfmRVflVLUCp5elZ4djpvTlpJKD1IXyQ0K3xoTy9GUSw9ZWMrdUcweW96fjNQR355aG5BJWchZ2xIeTFFTFNPYyxOa25rZysrXSg0PX1JMH4raUFEczVSQWxrREhGXXo0S0ksdipgcFNVZnR1PUc8PVVeYiZx'@; put 'T3RxfDN4ayhSTUAlSFN+Kk0+a3RPQEZrS3ZldFMqeD1oJCoqPmEyPS5dXkZHK2dhMSVmQ28vODQreSwxU1V2bSNEQDpDKl5NVWd5amJfWT1wRj8yImI2RX1veWQ6MyxWSzc2TUVSampWZVNjVE9tXWd5O31gUGc/NCRxRGFHbVpISzFwRitubC9COU5NbCI1W0Z6RVddb21TIj14aVJlZlRZJFM1'@; put 'W30/NSlZbmptc0VlX2R5cnZifUdbOTV6Wkt6KTB7JTFVeDMyOGQlVWQ3b1hpXi9eO01ifSRoUXJuc30zQSYjWVosWGxMPl9PfUlmUz8wW2gwQC58K1N4cSM9ekNtT0pRbGl2OCQmM1kqeVUlTE1IJDYuandeL30vSytxMjsjb0RlNXUqayp4RnpOc3R5dyQ7KnRGTCZwRXZ8OSFPYjFJNDlJVC5F'@; put 'clR3c0khRzcpLClDVFlmLiMoeDo2PzFhbiEqSStOMSZwQUF1bCpMenZ6aWhpQVFVYWFOPm1eIzN8KHNXNXxMRlVMdCJ5ZmRzbTF9P1UsciteVGhydSxtWilDLCJze1cjPyshQ2ZqL2kjfG56b1Q0OXdJdygqaTp0b21YL285U0gmfGBhfEJVbWFlI2xXOm45enZYR2pYUFdYcm9eUVRMZTshOjls'@; put 'REh3TjVYbmlCOVU1Qm83Sk59WWVOOlZhKls4VDcsb0xGZ2NRdncybykyLmEvVFRjRmJtOnA0TEIpWF5DcCpiMGkhNCVrMXB0P0ZvM3cpIk8lMmErT2JPbmt5JWlVUFhZflddX0lPQTJ0dGpaXXxmP3FZIilxX05veEZ3PW1ROThRJlNlakc4MT5Ndz9iWndtP1MwI1p6blBvbmNuXypMS093YmZ2'@; put 'YHQ5KkhWfDV9MT5uaEU1cmtoe0YjWFQ4b1peNVt9PGJIZCQ9Pzt6Smx+MFBNbld7TF1rKTZOOTdeKjVKM0YkOiVpZ0FlRV8pPzRidG9eK2tweypdUXxxJVRZT2k1RXl4U0UwdmdCQEMpSz0mP0pEc3N+KE9fVFlAdWJlcl4qMUJmRDNnUVRsSCFtanNsJWt5WnJWanBdQjQwSTl7dmh9RmJPb35k'@; put 'PlF6L1FPfCVqZ3lpOz5+czRgVWFQellSc3FxYGZMVlRHdnE8VWUycVdGeFJqZzhsZFB8WiNaL1pGVUg/QUAsaURMXi4kZ1FLbXBsZkRiJVpfNnxVLm91aEgmOXZUd3ZaP0pkZ3EkMnRvOnAkeEM/aVJ0Zj0ucUEoaU1hfjlNJlgscEZ0QEkjNyVHSD9OMXoiJEVyX3o4RT4vNV5+VjVgNHYhLGY2'@; put 'I1JKd2VAJVhxZnZ0dCgjLHZBLGZNc2ZWQSx5b19iPD1xP35ZaSp3Q0RQQHc1djZ5b3x0dyZ4b0dhISZrbWRYV1RCY1tscCFkcDtYUm9tPE9uJjJiPSlYSjYwKHR5RUVtI3JAYEJyUC9LeUx4UiozSWA6Zy8rXShyVX5RSDxJMHhyeGtbakEiaCtlZHNUfCIxQ3xZN1Fhe1hXJUg5KCs8IUt4bkUr'@; put 'Xkg5fGEmdDQ3ZGJaPFBVRVZncFtufFsxfT9ZWGp1ayFfPiR0P2lfNmAmVyNmRm1JQ2F0XzZWeTwvPmt+WUpQZyxUKkVobnZUVF1bdmpkQDU+bEx8Y3kmU2ZhO3wubC4jJWdnJnNOIn5FVC9ub3hSaVEhSEt0SS81JVJEXnxMUmFreGFCQjtxLzp1ISQpL2NvcHpEZDI5KS9Ue0M3aTw5YSkxTF0/'@; put 'Lzh2S0RPdnkvNm4pWT5ITE9vXTYiUCM1WD5OOCovdDFNJTx+K1N6U0hzKCk+YWlZd0pAR101MixjQ1okZyJSeCV4THdgKlZ5cVBfOXpzZTI+bHQhaHh6cDJsKjh1enlfL1hBaDQsKGByNzRMN15pYiNqbEw+UCorMWk6RjRiL01TYFJJbit5UjxHRnV2OlZGQzw2eyphMEI/VFU3NiRyKzBxPG5v'@; put 'ODJFMDlGSWQjMUQ9LChFaFE7TjksW1ZWJUh2K3dZdVtUSG4uNyY7THckZmdUOjspVTtJaE9vP0RfdCpldTtuRikjTXddNjN8cm4jeXVxIyYoekdhREo9OUtpR3tZIyMkXUlZMiIpTG1jVEhdZmx9YUVmfXhlMz49PitYO2xBemptUS5iVThYSS5HSUVBOTEwKjY0YWYwRClbRl84JUsoRFZ7RFJ4'@; put 'TiI0O19Hcjo9Nm0pdGpASiExaDtXeixQe2s9XiVEd0pJRjNGIj08fXFsZ1ZyUjxQYiJ3diw7LHAyN2krM0k2bVJGb2tmdz87UEo7d09GJCo/QTx6KHwqRU9jb2Q2LHV4cjA+SW1yMU9VVHI2RF9rVSt3eUF6WVVybnROLDdZXX0/U3d7cWZ6R1BTWVd1PXpMYmAlVkRuNFJ0Z1lDYUwxTXVFKWZ9'@; put 'e0RINz0kYDNvUyJONDJfMDxCKnVIfnRqbzs5MmdFI1ZUKTFXVHBXMkF6X0dDVWMyNTNJa1IyQWVkI0h9MX16VDF2T2leWnNhczpYNyokXkFVTSpSXn5iW115WDUqPih3ZSVtOUdva3FreVZfNkpGZH4pOzMudzJdIlVMXSJvMCo9T0R1UVR+S1UpOVJ2a1JVU01yRzB8I2phKmgxR2E0QVpAcV9V'@; put 'IiVAaik0OUR5Y2oxTzRDYFhGcGspZFl5TWl4WzorV2kycSpTOChQcmQvOXF7aFpmOUp9JVNKXUBCeGZjKiFeI3hVZCMsZ0c1d2ZbO2plQ11rUksmfS5CWG0lbW1sPWV4aTQqUnp8S3lHPlRPWl4yRCFjaFZVVjp+dGszXiM1NmtDS3c5UF5Db2hQLCwxW2FxVXpAb3E5SkA5YkojZG9+KyJmenlx'@; put 'am1WJU5YTkxsS05fbTM+QFhCNDhlbHkoTzFBSHk5RWFpaiJuQXxlaG4zOGF5dXk7dFBjXzVobDR0QEpJJlZlTT45QkZ6WFJPMzkpRnYuPjgjYV8lPEc5UCpYUVQxPjlUViw3IyYwZzM2LzJ6TzFtJnojWEApe1Bab0U/Qj1MeVZXfSx9O2xmPzJmLHJJaGByd0BoUF9RcV9BYkpyR09YXjVXfmsk'@; put 'd3pMdl9uRG12NipDSz5WVGordGRJM1t6cmV5NU15aTRoOmZpM0dlQ3dpeC9fKmRgRVA2b3VRaVBfJXkrM0wmIldDKURqS180Ul91TGw6PHgjQiZjRlMxW3dbW1lKPVA0Pnd6cypRVTw0MGt0TV5Sb2N5UCQ4Y1k8K2BtLE1AaCE1KmBbXlo2PSsqdiIsSEZ5VWp1R3o0S25rVl97WGVfVUU4dVta'@; put 'fTlaRV9ZRjVHb3R8VCJWc11IbCZgWDpeWStYSy9uO0J6SUssR3Z3KztLT25YSFB0O0NwLnxDUWRoe1khZzUwejN7Sys3UHU1VjsxdUhqZCNhRSwuL3N6elE3PCp3XVFVOXxuWW9bdUg3L0VCM0NdImQ2L29nM0RSd3dtMXdjKHB7NHVWMjg2Im00Y3spTGcuSVAwRUZYfClAb3hVKXNzR0BqeHdY'@; put 'bHZQSDJuISo4PDopTXN4QX5idClPVm5eW1VtY2N+PG5uPXh0Xyg+ISR3ckA+VSVxSGt5SzQoUyYxdm1YJi57enMqdXAlPSteT1E8Wj1LdVAwUSgsYCRBI3xbQEJ8RSxuNF5NUSYkOzl2WWhnajhkX0Z6dHkwbjBdbGEkQERFPF43PEt5X3l9N34pMERIa1J5ZCs+LHtTTW46eih8SD4wdXU+YF5V'@; put 'aFIodVdNbmUhKTxoYChyY1tiUiVVYi5RIyoyOy8zajV8IWBEUXchVFgvSmM+QGFuamxOKFZDXUgkV2BbeWZGKmA+XSE8UjVeTWxLLCl4RGNvcE0/T0Jhdl0ud3lEaUtIQlpaW0YqVDQkWDtSP0tkR1o5VURMfUM3UlcjUGZkdTN9XX5mIndfVDlBYGAze0I9RGRzditqVXdyIVVkQEIsek1lRSx7'@; put 'aVdgekpleHI2Yzo7VjZXOVFJLkZtTjk0Y1l7NEVnNylPJFlYXixFfE05MUlkbjUmTGR6bGI1IUN2fnA7KUVray9CXUxgOjhHSCYlcDFkNF0yNlNrdXZJV1V7RHgzfD92O3ArTmZwSVtzQT1HKn5HN0J0fkVxT3YuZEltbz1XPCo/OGY0cEQzNmhyY3hhcG5BSGZSTXNlPWkwJn4waFhNLl5JSV0l'@; put 'fGIuVjI+P280fDlEbnAuXWg2T0oofUhdQ3k+JCw9TiU6KjMpQVsxMWNEcSNwPygpP3EhIUV3OChObiJGV1BWWTQqK3FeR3VraSYmUEd9JUZVUTZKLzc1aTcjRHJmaTxUJjYhdEdabSkxRXk/VmYsKUAybiRRJXgvfiN+WClzPTtySXJTfSNyW2wpVFlYLDZqSUZCNm1LcVtYdSI+X3JRTyYoPUBB'@; put 'O1BzPWBWNiZCT1FEeTkkRTA8MDU1Mzk/YlgxQDBSOi4jL3xga2A4bFU+NSExYVhMQkxZRkReSlpoUFg/VXdHUVZoOz5FO0BARDgwalk9eUgmcWosdFA/OzVXSFFIfD54NlErP2g3TTxDSkxTQHw1fiVRen0/dzNHKF07R0wzdjdpRFdQend5SzNlKG1rNnBVOFNmUV0xaG9hP3F8QGV8I3p0R0JR'@; put 'KVZWMVhrQVVQWHg2Sm0xSmBTN0BkMikrbFUhOGApSUdXYFBofk0/MVl3XVZ3ekRBKEJQMEYoY0NfaWRfU1EleC43RXpgJkgyKy9vcGcuQj8kSStEYjNoM052P3gub2lNWGc8LyYxU09PKGMjbGpvflBXQV8wMkR3Z0l7dyx5anYkISFUYzUoREUrPyRvN2lNK0tCZE51e2hRLj9uVGspX0FoSSlL'@; put 'ZUJzPnJCMnZTSmJnSDFhJmk4djVGcTY2KllscEsjU2BiKnc4TWlsM25hZ2p3KSZAQmRhSHVhLlVHKCQyWCNobHQ9OGwjblM3Um1IMyNBQUtsdWZPdHY/MyxaVDAmek5dQiFDJE1HTGAqOTcvJVo8JHFgNXhvSlV2T1ZlQjxFMDN7JC54Vj4vSWwhXzspRDJyVk5EK3cyVzdKb1M0UmMuM3l7UTRE'@; put 'MUd1bERyL35pLyhtNUc4XS4hPVBXKz8pYj5ZZWd1Ik10fVl1cExGZDhbIj5vST88QS5xSGhkXzZKK0FOYixDMnc/d3lCUXQwZWcwSX5wSjZNPSNYa2AoPnU0YnxifGFCfFc/RCNeWjBePmg5UEpNTztHLiNHKm0qVEd8VGdqXylDMUQpUnsiSCYhMFRJQXx3d2lqd18/dipUeUlVQE81Nj91MDk8'@; put 'ZGhnPmVKRSIxTGsxaj9gMV5We2VAWldsfnN1RU5ZWnJ3TyFhPWFCdEJFOlJULC4pcCNLYExQYmlnYWk8RjV6PVIwamtLWTRAS2NsI0I/VGwwPyVUdDxtYz1eI317cFtuK3o2L3JhRyo0MXNgcFRhOkRYczhQPWBSI3NKRVhrKXBCIjchMEdxT2ljdk4qT0U3ZUAkNXo/PjFXIi97fCltfTtwJT1Z'@; put 'fTZAYSVVUC8iZVVVVTdsKTA8SCFWRjo6OUAuZzFLdEgvPFlWQH5NZytTLlVvb256fE5fT2VNPXlIaTM6dFh1UTV3ND5gTk14JWYxc30+c29kbE1Eb3tJbHlaMW54X1pXZjR6KCJjMFM3al85TyUjd0o8SmBTMmlKa0p6c0NHJCZJcEtNY2NaS0RidzBDNiNNZU4yOHB+Tk5CdW1nfFlWPypEKDQy'@; put 'bTA9eiU2WG5eIT48UEp3N2VqJGt9Pitkd3YvYit7MFV9Tk96ZilkXj8mSnw6NCp2ZjtZZ3U7LGpMTTFwcGI1VyFaP1dIQV5ySnZMK1R5QjghM3IjZnswayltSUd3Z09LN3h8IlN1KF4zKUxJfUVKRnIrZXoxNlJSPzlEeVJXWD95X0VdZC9qOlJZbVJ6a1F6M3o9fmphLChFVERzbGxdKlNJUShb'@; put 'fVhPYml1Vj55NDVLQVlGeW08c3E8WHZEO2pbWjY8cD1xQ00/a3BfZitsYlNfXWpKWD9uJTBtb0dJJUgjZTRBJEMsKnlUWWdXY1ZGK3ZZRUNbS2Zqe2J6KiYyLDxwOW1KZl89PH1MPlM+UE1WSXZPenNLPiM3OTRlZ1o6OjElJihEMTlGQ259JHQyYn0kUShwMClwWTNgbG4sfTswN3JIaSF7SnJl'@; put 'QFQpI0AqIjU4Y0x8WCkpTUtqWGU8OTxZe1B7ajBTeSphRTczMjh8bGFhOVtJcXdZaGJSUFMzVjlRRHZFfTs6IXpreU4kbDYqUX1EVGhkcD07WkY4NDw1XztaVU1RaSgoU1ZKYn1BYDZCbXQlLnF4NVMxeyM1QCRTaVclQn1RSj5nTn1MNVAjNjJeQjVSent+Vkc8O1hZZFYkOzBnXkE9UnpgTEU3'@; put 'N2t5WnR2YzI1LkBHUDUuY3lmXVhVVl1sWGRlKmdWNCk3ZTUqZnlXSXc0aSp1MnJQcDxxJnhZTkl9Qy8pXTR6dS8rfWlJQCxlUCVqIjgvZyxKMCNqWUZFM1Epd2U1cTRrTkxDSkY0RCtVN2FFckR8V0JUS21qbip6VVZhZlYyP313UiZAPGY+QihOSXxsaV5ra0hsPCg/NXZ3VGY2Sy9bZGEsRHF2'@; put 'UXxzb2FtKFAicHNIVUsvLHZ9UCxjMkUqZTpGcyRUMmF9QC9XNkhddU96dUROX1ZvUVV9LlF4WiopR1g7IyU6e0w7V0J5RyR7c244KlBWMHN6PzUuOEMoPCpfaXk+YnI5VWg9JDgqM0p9YGdZQlBnVSV8OEcjT0s2SihpKlk4XTolU1ZyREJ8YixDQ3prZjNjOHJJRj8mM2h1cVQqIS5AeVtKZDNp'@; put 'QDRpPyE9KVhRRjhPUk9KXX40c0hQTzxLe0tsbTpRQ3d7YVtdakNpek1TcVU9V140b18pRSUmODVzbEA0WU1VRCl1clpENCp5dFE6YnBdKj9CUUBzeVdtPWJDUVJ8Rzx9PG5hRDJJenUwSiMsSkdlME8ySj1LPC4+aV5qTG5MSlcuRHZMXnl4R09CRFZXdERrTFhZR2R+dzxEJWlaQStUeF8raEd7'@; put 'KjVgbk1SOy42SihzazJjRCw6ZS98akE5ZipgclNlUUx+ZDtzIVU3RjIiVCV+UjNTSWgiK3JdYS5BL0JReyQoVE40LG9kOG1xTD1KP3p2Mn4uJS51NSl4eHNTX2IqYzFrMn5VLDt0LH5bR11HT3ZpZXVVSHRFRDgzJFkoJSxkZGh4eCtYSyFYVSFrQHV2JWZUQFl2Mk9Zb09TVi5oOjtda1NaKU0l'@; put 'P1J3R3I7O30rMnUleV5ZWH4vRD54PS4sZTh6YU5VTll6OXNQVV9gOUxpRzFZY0VFOjdXS0N9dSkuKWc1akNkcVN9TGtNOzg4LnB3S3YsVHw8cyxiOG8uR3V7cWBsSTssQT48V1ZYU19zJHlkVH4wXTMuW2lXRk8hVWdOS21ieDshNnpOPEBxZklAW2NAYmFyYyNMdzJrJmpDNmVmbDY/KXcoYTda'@; put 'eTcsKXRXa2dRVCt7WikmT01BWVdIZCF8STouY2dzUCkjdGZnMExWWXVofV8yU2tvKUtRXUc1PUN6dFdJKGpQMWtIOSQrPXp7Z00pRH5OfjxEU3AhI2FMUXI8NmNhKTwyTDAuYkN8VUdgVXQxXyxnaUh9ODpGKitTdSZYbkU4PillPV4uVkgvKVR+PkZIeD1sYlBQZUVmdXk5KTJBfC9lekMkNGBi'@; put 'KVhqKDtlJExrWG9zZlRAUFMrU2xQQyFKfVY2MjY8M0NwdTB3MiY5XUZ8TVJyYmRoIVR0M2tNfmAyfTNgcWtlNmp2aFE5YURxeWo8c1ByPUxTRl80ImdGO1c9XU1pRDNqMHlpcUtzOC4xMkRoSnF2VU84byNiUGdscE5eVXxzPDIoKlhYdmhrT3pyJnc4Z1BjT0JCXTh1VEZSdnEmXjs8bGIzV2kl'@; put 'OWtnIlNQLC8kbyZAWkozYUcpel0rMkV9LnsrTVpSYWR2W3Q+SUhyLkxpc1BDcWVaTHthQXAyS3xfTXouVUFjPzAkfUlIZS5hOk5qTn0pJF9KJHV3ciRjU1hxLmgqPEJTRlA3PTU4YGJGJismU2AzUm5Xe29tWjZKYCxqRUk+XU9nel4kYz9ldUNqRyk+d2B8eSYhfGQ6bXN4LFR4VWs+fGIvNSRw'@; put 'ZWl9Z1pdV2p5fmtqT0U5dkBSXiorUGVLcXpWbFdULGAsfFQjRmt1V1NHIi82b2lDLH58WUJiL1MvTW1FfUYxZnBvXUpuKF1QIzwkJDFwNy9tTk99c0tWW2w2M29mJnVvKFh5aVJtZENmcWI1W2JFSFRafmBqL1lzWXJKWzhVUm51PVQlbSh5PHtfckV5Xmo0Rip3a2x4VGEwfSI6W0JzWT90WF09'@; put 'LHdMdSQkdTR6RGNbNjVkNF5ZeVpfMj9NczUxcz5acHcwPWJwRj0jKHdkY0l6djU+Z3N+Ul4xOU5iTUdTaXx0TTJVPyJBYy9nbVttUGx7cmEpMHheKyIpUWdIRD1gaFE3d0orXUc1ekBAP2kyW2p7a2h9Lkk5X1o2VVJfTVcxSyZjMVdOSi4oeXZ5elZsP0NdPWRMdWlqS0EjbVt0PFAxKl1JPyR1'@; put 'PE8+dlMhaEtyTHFUWDFPSk5vd1FfdktQIzwkd359dntXMixpMn51ZGFuNnxyaSJJZnVGb31NRnFhXkN8S2R6ci56K1EvNi5OZEc0R2p3dTszSDVeWDssVkBvKEZaI1pTVF9udlU/Mz0oLn48MitrSz1RKVJfYCE1K2RHQyldckRUaFtGXnsjaiJSYmYyWmNecj1jaXJzSXhzbGZEOG52I1h3JEZ+'@; put 'NkQsLFM0cUxpN1h1aT4lWGFEPXh6KVloMDUybzZDWTlzOmtBWX1qUitTflpwWFVFT1EiUyR5RyloZmhSbGEvYzQ7NmZGLyRCbHcjazxdVExQNGNNUC9FZ0hwMTNDI0YvWy82XWhzX2NmZXssdWp5aXlUKzg8IVFyaXpOT2Y8eDNYSnFXZEhkeF4mLyloOnBHZ3d4OmQ3VnJqeXNiQ1BddjVAdklN'@; put 'emJHXTtiKjBfYE19T0R7fl43ZHI8YUxHM2coPFcjKyR1MSt3eHRmNyNJOm19RD4+dllQUW5Pe352TWxkO288OXJrVUtOTVUhUjdbY2I2LH5VezZ7VTtyXSo1dDV5MTg6KVsqYzxMRS9vPmp1WlZXfWNzLixaRlh2KFg7LF8jc0YlLzR0c0k0R1hhVWdPLkl3PnBIZz80M1BXR2g4VkZyIzRiL2RN'@; put 'Nn4hOHx4dzNiWTB7Oi9LTDV0VzJCSj90Mi54I1E9RWhxe14kayQkYUZBe0BGdFFCS0VxU3JGUUdHPChge19VNFhdTVdPPylJLz9KTD4/eCtrXV0xRVBWMjp5Nnp0dGg5fSMrNDtNaSpJbFQ3aTIwOCZEY0osRWoqPzw2YT9SXVYudmdka1o2SkQqW1VbNVt+fik4VypCW3JVeXR3R19PfTMoMF0y'@; put 'eGAwNGlCMUBSTEZuOFE+Z0ozVUp2Ni9eSyMkVyJOYF5Vb14qXWdlallOXytjdlgha3BNMXolY1ZALGZYUVtDPHFURmU7Xmk/OkhhUWY0bVIoSEFAZFpUPkg8P2QkMSE0XmVjb2hxOSh3aHdIUCk9O2g6IltqN0AuWW5YMiFyLlY7a24oKWk5b1Z+a1M6L0o6ITtpWTFGdzRAQW86VzF2Rm0iYER6'@; put 'NFFTSSF7IVRLfDV6MnpMMjZPPn0vbjJGWyRKI3Z8KloxTVNURGNCaHEqU3tFQS5ZaHM/L213SGF8P25BfVBUfSp6VXNOXnZFeWdObUBlKWFsTTlsKyg3JFtjdlp6UUAkJnZ6XiRYWF5UZFcsejdRbGJSSiJ8T1NEIS8kI1EwMnEoSldkbkh7PlVsbXJQQTBbeDlhUnYjRiFOT0NSXlJXMmp7ODp8'@; put 'PHIpbjlZdVhtZVY2WkxbR3I8YipPPWYoPjkwMDZTX2NbcFJeUjR9bG8mN0skWl5oIkhTWzhZd2M6XTE4Zzc6RypVL0Q8Rik6biokJiUkOkV7RT80JTcoRmhnTXF6YC4+NTNZMTZ4bF9hY0FHZXV9MDVkenBJcFpkeTBEXiVMbD86SXFXME5ISilQUjtPKmF+ZDcwcj89fitlbD1DOEgzKHBKU0xa'@; put 'K1MsdTZkZlUlKGp+QDlYWn4xYmc+bFlMNig/eiVQd2hebnswQUN9cz9JcEglQ29aOjFMazJUZyZkSX4/NFJPOTRNTiNqOTE5WCVPNVJWR1p4V0V2cHgjPlNzbyZLYllYP2BOW0I7ISVkcUUyZ0pVREBRbF97aFZJdypdQTFFZjU8fG9makRjPyxyNmE1bjs2bGQpMGtTV092eT44WGNVSDRHVTQ0'@; put 'K1pWaUlYcCI7P2wwPUh9RkAuSEwzMGB3fk88VXJ2RH1gM25sSVVdWS4+bzNZZ0s6bXEjLE50ek4rQFt4QG9uZkZoL3lyI30iJTU5M0kwcSFESGo8YGYzMlc0KSpEc2pyWEN+T2xiZz1CayxmPnN7SWFdIXpIdlB8YG5NP3tTdlM2c1pHMjhLNig4ez08ZmQwYCFobF1FT1Z+I0lwRCNmSHJjYHUm'@; put 'YCZma29KMV9CJGZyLG4zRCk/I0NYa2J8KmV4JTR4TFJQQUV2Y3luVytAPHM7SDdFPk4lKlk4OFB6QG9QS0U8SUNmPXU3bCxTcml+JStDNl4lPiY5ZztNfmN1PUtVXnQidVE3SV9tcjQyJmc3O2s2RXo7aEc8Ym9vM09lMHw0REBsUW00ZHhVX0ZYbXskYzF0RF1ZI1tJeTVxZFpWYX5gPUo3M2ta'@; put 'fnQ2T3slMyxjayhJMVVlaXpAJHQ4fDA4aHZnOkN0WUR+dWk+aXJrNyU/X2pdOH4peykiVWFIaFdlTnt2d11sbTVMOE5KOCEmKXUpVihKOXB5L0ZocF5yM3FNKm1meGVhI1U9a2czNl1VUl1KV2JKQiF+V0NBYEU8Yl98XVUvU1J2THBENTFFUndPNW8pO2gmXjpdL0VmNGVNYTJyM1J6ImlDSSRz'@; put 'SyUrR3M2L2hqcTIxXnZ4YV90ckpHcyRTT1JAOVVvdVlxYXZFR3tgdkAsK20hMXssYyp+e15iNGlXeD8kPGN8OVp2Ji89I3N9NlUhYUNHXzgmMno0IWc5US90ZDJwYUYyYmwwMnloYEM2Z20yQ09sRn0oNS5xO115NEg6UCpbRF9fbFVuVUBOXTBLZkVuSXdkZnwrZmx6PEJsRnhlamNIPHMualAj'@; put 'YEVZdlArbCI4S28qNSsoS3dVVDZLYGEhVVBQb0ZOZ01dQjJKKD8wRiMreC8ueCpDe1ppJl4xMkVNN0d4ZC5dQzVUOjU3SFg5ZnhaX1FmT1o6IlREREgqXk9PZDc4ZmFtZFFjNGAvU1pBKUBzaVNmP3Ipc1h7fEwmIkBtYXlqQzJzQGFwPFh+PDhUdWYpenpFLDMmVCFtak1me35JdC4jZnxVWndo'@; put 'KD1qOiRiZ2ciN3V+M0w+e3RsengxYGZbT3NpLGo+dV5XKk5IK3UxQmpudWoqQVR0YzFAKzZOeT5bUStpRUdDLkdJeld8YkNwdFRMbC45RzsoZiIlb3UwUXd8ey53SVl+QWAjfFdqPVB1OFQ9JCRqQjtYUzhdfXxlZD53O2JyTz0qQ2c7RXxxZDRqR0xASSF0NlZLJU5nKUlWMiNNTWN6bSYkekcq'@; put 'RX50bVFtWmJeL08sQ0tvayJmKHNxQVN+e0V3XXZPZDltYmJIXWNNZ2I2Tm0vUzMhSmh4Pl07T21mL3Y6Oy9Re30mMGlRZXUxc0A7QGVkPyt1c1ReWmpBTS5YNjB4X0BUTG9dXVNJUEVbQyVDbDZTNEheL2FHYyFVPGE/JH05T0pvOVgkQVRnT196JiUvZk00SDNQaE4vRm41RitOXiZxQ09HTkcm'@; put 'SV9Iey5oODkrUiR7LDBAMF9wI1poWG50MSJVcy80Rz1qaWtqJURhYDNYNGFkaUw7ZWNHb0cvLjwrSEcjaylaQyt3Ukg8VkZaVGdBW0NHdWgqYFVHPVpPfTQ1Q3lqPzRAe2BCRVp9aCRwZEZ8bDM3YEtUZUddL2g/MGhNYV1DR25bez07RiJaN0BXdDNpPEooJF0xXm9rRC9vNC9DeWxmfj1VVUkz'@; put 'NTAzNjpwY11sSmcjK01rMGthLHpPPzFSbFM3bGJ6N0gweF09SzZVVXFoamhLPUNMWSgmUmt5ezd7OFtqT3hdNl85TnpZNVNDS2pURnc+bntJSzxyXWswTFNORGlPTjtYPUZ5cFNEWGUuRSsufDciO251ZH19QUpbNVdzKlV2bFhRVihadD9oe3YwKjpvRXI/Jn12bWI7I0tDflYwRXteWzFAd2lH'@; put 'JGhSd1R9ZTZeRGRRM00ifTF1elc4KHZ0JmpIKj5pXkxpflljTjosI2VLfURZVCw9T2QsJXgoIUVNUEV5TCZtMEpdMlVifTJARSRoWXs5QlklQC5OdFp0JSpzcDsyeWMjOWpMPlphUjw0SDpJRFMuNH1oXzd2N0BUR0dSRGpLdSR4LF9ZIyleJGpmdCNjaEN2TGBJXnUjTHh7PEtadjlpQk1YbWJp'@; put 'fUNJeVBiOHZ7fFpNMkhnKF8/a2JEXyVwfSMlXjN9ej8qNHhzP1J7MmE1NCg8Q3laKn42JHI1NUNGaCY9R3pefXFuSXVKLF5NSWpnQmBFOEY5dkoyQSZ4KyhdblFKaCZ2K3dKQW1XIyFQQ348O0VNTTpRNStYbUE6PEhMWSoocih1VC9oUmo0U0x2dmN6PztgUU9tVEdyeHVsRXFJXSlIYXIvSS4o'@; put 'LEViKCZmQiNJdz0/Nl8yQllebFY2QXJaRmskTlQ1ZFYobm5vZjBYWXZbdHJNQmpIYThGYHYwUkM6XyVgZl50ZyM6R3lwOzp6SS46dGE+MWcwXnVzVWYmN1l8QlVOOkMkM30pL0Z9M1YzN3IjUk94TGx5UTlMLCReaEtLTVFAPT4zSD9oQj5XX1spbkppY1NkZTdkaCNUOCN5YiJ2fCIsOWlNWWNf'@; put 'OSJpZWRKJlA6OjI8ODliPDgwSj5gSS5jfiN7b0JwOXVXaXwzcX0iRCE9QGo/V3dOYkRqPXouTD5TUGJyaEk3bXojKD1YUlE4cUNndz5TcXJfezYxOnYyNjx7bTRLbiVDaywkIWpJPGoke1hpRTZmdk51Ky9rbj0vM3pwNThzNTpkKW9qZUdCOW9TY0VdRHIjPGU4WCVZVSZ3M2MlemBFMFcyaXcq'@; put 'VGJ0UFJzTGElSD5NKDFjP2B1I1FUPk1TSjhEQn17b2Z5TVZlI2RlV05uU0tlekhGSzBnUDw5WEwqei52UkJ5czU6WzU7SGBuaV1oJGA1OHYmTX18VVZARmZvaHxERn1lUEtiSlVHXlIiMzEsOCk/Kil4fGdIKTVXazYiWnErcTo6RTs4Zzx4P0prbFF6YVd7bG4jVUBub1JXOnpkY1AhVFlyPnx6'@; put 'YnN9Z0t3SVNVMlEkaSZYVT48IStGbDA7V1owQG03eGc/NjA1NXd3IWM7U1VHXV5nISw9dX5rPV1mYTtELmFmUy98KkVVSWNablhaKHkhR0swNzgufCFVRz85Qm0jdFhifj1eWTVxeUIjX2xDPUYiUl8xUWouL05+Png9a3o7dj4vJmBDNU1RM1dhYGwlRlhnd3NueissJm16OXhFe0I7JFUjJSps'@; put 'IzN0c0FdR0w7ZVJAUW02Rik/cENHVjR9NVFOST5dVzNibnc6T1t1UzF2aXlaNktaVkxmbWRAV141V0pqKiUpLHJodGtFWjUze3sqJGZVPVo3aTU/azc6bFNBfEdMcj97VDIzd2ZHc2RAP3I9IzBXfEJAMzBDa0RJejNEU0h3RDRGe3FxPW55UmI9P1khYyN8cH5hVj5hRGwjMjVSamxUQ0lGeld6'@; put 'b0AzblosUXU7OU1qfl94LjN7M3MrY3FANiFJbkhrY2JYbTVMQDljfihHWnc3IX5+Y29+SXYhPzFPVDlxYV4kTnNfdVc4NUZgTlIqZj1jYGcme0J5RzRUJncjIUVRUTpmfmVmZys8cV1QU2UpOU9lQitMQXQpdVckRX5TfmQ0Ni8hRzJBRXo/LEVhOlc6Mn1DdkNnZ2txJll6an40YnxkSH14Lzo/'@; put 'XkMubS5LdVYlbWFGWnhgXkxNMGVhYWRpJlckbE4oJlp2SURTXlt8N1JFOCorfkY6Vlk3Qk5KKGQlS3wmWFM+NnssVSNFSF9QQEVyUCR7WmNOYjlBUmw4PHFAIThzNVg1K3g0TFVOdW5jY2A2MXFUdzokRmtgRkYmdVBGPzoqRWVLNzJwJGt7b2dDJW8yLnNUKk4ldHNbaiFefnJRfmxHfTA9V0Fy'@; put 'NWw3NzVxfSslQiM1O1ZuTC55a0JhNVJyIXd1IUlhcyMzUkoyOUQ5aVUsS21QPFgqY0sla14wSD5BOTg/cS5daFpGV05iP0J+JjJrdXZqYFBvRGRzMiloX3UvUUwjZl9dKDhEKFVfTlEuJG8/e2FBZVcreVN3RSlyOio1UTxaVzxlU052Q2VxIUZNcE1jJm5JPGMpMGEoXVB6RDhDI0d2e19OPXAh'@; put 'aS46NnBIZFl1ZnR3UkN4R0QpOmZedlE9YTU0dylOQzFgW15LTk1POEt7RVM3azhlcSJ4ek8xOW88Vkl4K2NLYGB6QyRhM0pPbiM8SE08JSpCQll0REdIQCh1MCg8cGJaYmd5Qk5uJHsrKnRnd0p6cyM8aXptRVgpP2xMSGNQSE5fRk9eSUx3WV45Y35VVWg5X30rTyROfHJEbipSZGM0bSVmbWkr'@; put 'bFB1PnEze2tVWGguUzJRXyReSGFHUjtNP2NTVTRQfEc7XlswNztMbUhaOmlJTjBnYXlxYnklZStCckFzcnIzVCwsI3F1d21OQitPZk9xa0VKLiYubnNTUGl2WkVnRUFgM2REWClYcShYZXVVOTY/LjlfUls0WF1vJEE9W1NCPVY8cU9UQHcuXUNhMVZJYldaKHxbJkRlIS8wPjl9YiRQODpWUSpN'@; put 'Wmk8XmUuUzpoL1k9bjE+OSojUS54QkBlW1tXQVhFMFR2c35CN1MudDFiJH1iQHtCQlI2W1lKOCswaUcrMiU4UkIxaXEqd2JWRzUsVWJZTWt7NWslcm9uezhLOXB0QUJIdjNoYTx2bUNlJk0sYCo9a3gvRk4pO00uW1VyOWJEbGlden0yWklaL15+aD1FRTBVVHw3KXQ/SG94ISNTUlFDWV9Da352'@; put 'THkibl80PTdnP0ZCRFtReStWN0k+N04qcWI+R0R3IjI+Pz56TTRRTUMybVZmVF4qbERlI3E9NDFzWVFlW0pOKWdQU0l8TUlnRUA/Iio8TTBzWyV7eSgpdyRNWzI5PXt8Qm9nOXpYNkN9Y100ZkhmODwjaGR5dz8sKVlIX09YS2ZMeG9ZbktmTFVGSD1URnZCfjQhdkc/O1B1bnkpQ01jRyVWK24j'@; put 'NH00N3UoT29+SnhuW0Qja3ZzMmYmZEgmZDdCdFMkLjErb1Ukekh5Vzk9KE9FYXcic0NHaE5uckVLYnVgOEI/Nnx2Uj1kM1NGMHlCUU9oRHlKZ15ARF5mLj5MKVR1L0FoT1dpLkgjeU9ZcTp4SWZwOExeJVVhOX5vIipVT3hDaGl+MyZGPXY3TzRaRU44bG9gLEZ5K3x6bFE+Wn5na2EvJlFJQyxM'@; put 'b2g/d3doI04yKUpfUzEwN2slZWRCT3NQS2hNaDtlcTQyLnh6cXp3QjZ1aGB3WV5KSiVtYkZ3PUY7eF9gend0WDRMY0ckOTlNe0FGIz0ifEd1Z19+Yj1OSVMlTy8+bmhEa3JVWlJCa0NgKlVFIjxtPF4/IX5fRT89VXE7VX12OiJBUDtQWC4zP2p0KylhT21SRXBfQ000TzxRc3VxSyIsSXE2VV9B'@; put 'XlB2T1tFclA1TUN1YT5yfU1CWkpEQyZ8U0YhVXpCRUdTXWJRSl1sfXIzTGIybCFnYChWZztMNEt+LEI6Uz0qQDNBVnEsN0JxKW5KbnhIbDtpYmYhdS8pfVVhZXgvXnYkVFVXU05ITUp3dVkjdy4rd3ZNXyxnVHohQmJWIj8sfSMvP18hPjVYOSp5JmV3aG0uMk17UjlrNStpaTZaTFRkbTsrNz5y'@; put 'LkI1UFFqNldHSDlmfTMqL180M3dna2QxPXdSdWdfV3huRmQrallXX09zZCY3ZishU3w7Q0VXQ2dbWEdPOCg6bTlNUTxASVkuKjJLIVBPQlcuKDRfcEBXKndNVEVkPiJjPH0iPk1PJGJEaWB7RjZeY0B3M1tYI0Z2dURzKnJKV29VXzhRI0w+Sj19JFN7UFtqIThkMSVaJmlsaTo+PnBtYlhSczk+'@; put 'YyJ+QkJEY2YzLlsvNVYrPClZczRsdkBZan1LWHtCUUkxNVhuJlJUMD5ZNFhKIkxffDJTK307amRfOSJkdlVTMmx5U0xfK1YrMElXV1peblJQTEM9MTFub2dRQ3J5eTBdPWJDNlZ9e2ldXlFebzZQfko1KyZ0dElhJm5YKnQ6RzV3MV9FQmE1InRUNF5KfGMjO3NEa2dwRUcpQjJSQ2B8czVVQmw7'@; put 'YjdFUSpWWUd8ISFVZF01S29hZy5gTXhucWNuZiQrTFVtcXduQy9WLypxcm5nZSx6PEUrImV6IUIibVk6Ikd5Rl8velZjWEFPJDU+L1dAXnsxNjk0RUAmZ002eEtGO2Z+eyEjZn02Sl1XVi46a308YF1JX3FWZHh2aURdbH1ka2BfZjFHK1RlLiV0S2t+TCw3ZEVSZjAkemAyJX07YkNNOTxMYU16'@; put 'WHZZciFwe110QUF7RkR2fD9fOUplKXFRXnd3MVAuSkszJDY1Ln0yNmhjMntrYDNVdmpqOF1adzJEdlZkeE1GK0Q7NERGWHZsMGxsI2x5S3U3eCpAMzxkdCFgVXVkO1JubDRCZ35YdjUoKHFUT3ttSilUdFd0PEB1KFtifEl2ZDpaYHNGK0s7YF1FdDZqczB0P0dpeVs+PDJzXXFgZ110V2tlW0xI'@; put 'JWd8YWBhVSk0bWw1eDcoUSNQaUo5VUc3LCJDfTdIUihLM0VRVy97cUpMMlc6JDx1ZUtKPUN1SHskP2YkeWVpOEhGd2Yub2dMbkNEUXJCRHYrZzZ6O1E9N1VIdFlyUSJnWzYvNzl7NGN1TF1DaUREQXNJfjs7KjI+Nm12SUoxV1lJdXVdPmgscTQwNUZWdj0qRnJfI0svRHk9fXEmM2IrREJqLCko'@; put 'MCIsN3hweGx8JDRpTjVGb2xWRmZBZzdDNzZ0NGN7ME1DTWspVVpGfUtuPWlgZ0JFc2plOXMmfHRaaFMqVSFzMjlZc3V2LD9layUock9YPGxoVHQkMzBmY1JxL3lgWXh0cGp9W3V2MEJuOmFLbkdFUENCTXAhRjhlQ0QlQzUpbXxeLyFjbXUybFVtUnsvW2ZgTTpnfDFfXUR9M1YsKkpnSFEwWWw4'@; put 'ekIiVF1vcWsiTCJWSlU2WlVlNEUrWHxPMS9CbW0iS1ZmRTpAVjRofTBTOGJKaUV5c210QEs+JSE8TzYpYl1HVjVRYUg1VXBaNlpla2o9K0IhWixAPSFNe0VydURHS1pqOGdaJFAwPDksbkwxUXlWYFYvaEU0OiUvdyF3SVVJb0JvPCN6TzhlKks3SEhiV0JrbSEvKTZONkBvNyksPFgpNis1OT0v'@; put 'Zlg2OWIoeip5a2YuW2FXKkBAXThXYkx+aHVrUGROU2RDKSZrJi9+eFQjdkE1SDhGTVhRb0hFUzVsc298ZjlObik0KVQyWn47UkNROk1OZj4saGV5dW45aCRWV1BSZSIpZyNiNip6X006IihkKUFRWjFfdVI5Q0pMQ0chWmd7OjJiKkdNYkF9JCl8VC9qU0YpIzhpI2A+RGRhPVV9fD1DQXEmeEhP'@; put 'NDQpPStsNSspNm5QeS9jcmUrKyRYMF0sOmhffUZwSlYjPkpnSjJKPlEvSno5QSlFUUlobCV0QE48dGMrQ20pNiV0NTg6UkBeQE0lU1M5ZXwiKUFXO2A9S25ia35CJmxGNFkudEY9MC9WRUZ+czoyfVpSfG4lc0Yrb14qP3N5dG1KMDNXPDpaXXtLZUVuQ2BEMlkpSHtNJnQxX25XckooJFNaQm1A'@; put 'ZCwzcmsxMlsmem5+Nj1UNyFDcSp4eT5adTl3JnJXaWluJFNFIVN0Vi4hJlpsTk98NHwkdm4ieDZsdCxJMjQhY3JePUI6dXpXOVtdZmlVNyQxcFdmPlZ2I0VLTH5YNFdzSTRzNlpSW14+UzlGIl1XclpMYmtwLk0oYUtyPixPWHpWPVYoJW8sa2w+PjdxeXQ/YD9AJS95QFJPKDgjRDwoPFQyeWJ+'@; put 'MjosYno2X3siSkcsWT4sK185OGV5SEk3Lnl9O19ncCVMcVBGU3cxUExVW0NWMzBlcX10L3kyYENGeHhtSWkwa3luRylqSyR0b31VPyhGKztdLk4vNEZSRT50R1hZKHByNUlxaSIsejR1MTY9UWhsNUVkKXB0Xy5WMjw3ayNRUnFXPzdAU2QrUE8oVHw2SGdnVz5GdzJPISlmO0gsXjcxU1MxMmdy'@; put 'KHQ3JTpCVl8hez9mW0dmUiJYMkozMXBNeyplPko+fCNaVFN0eWtUJHdzeFJVN1EmLn02KVtldVNiKnlUIT1DWyFKQXNZQ0o9azcsbz14PTF4MF5UV3BvZS8iR1ojRjpAVVNYUl9Jey56dFk/O3ByMHsqKTtBSkpeL3dGdGVAJip4OzBAQ3J5PyR3QHJ3P2QiRDddLkgoflFyXyNFO0hXKn5tRXlK'@; put 'NEQuaiR9fUwmWmBWTlN5N1BjZHFlVV96RiR+UWkvSD1lUjpSKzRVaGRCVj8hKlFIYWArVEhdRkQxNT5ec2Q0Y2xGZHY6SE5vaSh6Ly50RkJoaGZ1OV0idC5fSy9SO0dWZlJ+aShBOlJ9W35SPyhgNDd3K2JydSYzdUldQ3xPVjsoa3lPazdbWDdfSUg4OHQwJURXUmdZbHt2aSFPYysvMG96K2sh'@; put 'cX13RWVZQ3J7KHcyOnRLfFZfN28pYEMoYT4yIXl6I2xTdFhfc3RGSWY8KDRSeXt6W3g3M0A3VjdTTTBbO3pPT1ZwJnVbR1JBSmp8T3kvIi9zSDt3TiQvJEM3fWwiMFFjTXpQW0srPkI7RSFXcGkqalRmWWo5UF5PLCVKZnJVektuMH5fXmEraEdgc2NoXj0lOShEYDt6RS9OYkJ4bFpXWUxscExE'@; put 'SCZQJW9+dT1PeTI9LyJ0RUc7UmVlT3wmMFM2SHh6ZHQrbEZaZi9DQksmTzRmfld7ZlVifGV8Z3FPRmd+eTFRYHUwVEchSHV+M0o7fVNJWDN3QkY1UGxhd1hsJmx6K2JGNz1tZjFMMTZ3SWltQGpBUlJrTCxSb1VqOGR6LkBrWFUkcSRtU1t2WSxPWFlxUHIpXlFnXkZxXXVxVGU9d3g0KGFSOT42'@; put 'NjZffFAwKCwhVEtuSCJXWXtMc0VBcX4+WFVme3UiXz9rTkF0RC5zNHp0LF81XyFOK24sK3lXaltCdDBmeEsxI3VtW2hCXTNPV0RjKikzKCooWF49ej9+Pn5MQlRMV304cTw9UCV1cDVnIz0qNk9tajdZfjJKSW1TWUV1dipdY1pZa3ApLFJGVkpmSyVSLiRiYlZefF0oOl8wVkJHZzJTI0xaYFNs'@; put 'aTFieWRqPzx7dzdYQ2hqeDRCI0I9fD5lRyZ1T1I+e31bdGRAb19RKE1maytmdzoybEZTZk91Mm56YnptSndxakw7O0JVPVYuLFRSWUovVilzSVMqITVzWFBpO0NJYyZTUEhGPlshdCs4RTB2cWV1TFdAQWordl1QUy9aPX47R1lYUlNIV0dYcX0hI3xFamtnPmMpPyMmOmkya1BiWGdOIkFmaXc9'@; put 'bk1NUyEoWFdUPW86VCZSWlY1Wl1XKGlaTGk7W1YmW2IvSmpIQX56RDBVZ1dGKmFCR1NkWG4hTWYuV2JIP1c9Oihsbi5dQkhqRTQxfEo5Q1NJWVBXUDJiTD1tKGwhZTUvcnorIm1xUkJSOzleWlgsYmgqJmJEQGhjcz9HQ3NKeyY5RCE/XT09Z3omdTtuXkVuOFR2VWVyfFs1ZCtxRXEwLF9BNjRD'@; put 'cGVLa0B+MSx6Y3JRRmZHfDt0Y1BHTFpMSDlkO3MzIkIjRntRTjVjIiQ9VjgsUWUsRnxoXnRSaWJCKShnYyUhWWUmNyYyVERBPzQjVTNEPFdBVSJBYzl2PHhMOjNGeCk/ZiEoRXNBaD1XaVdyQH1iLkc2PVJxSGpyYnN2X2BSRk1DL29NZkMjSXhAVW9EYHNxfXBReDc9WV1yYzxISTxLJGpGbDFh'@; put 'S3dpWGt0PWckKER+UllYN05jZlUhQm1JPUskLjdpZV9hfnI3Xyk3Um99JGl6Jk1UX2lHKUxLd1ZjS01gST9oKjsuaSthdjsiMGkzeFF7WHQwNmIrfXo3ZyZxWFJ0Q0I8fmxFTlowSFJgcnU8dXkuSHg+YzwuRHBDfHlMK3l1QixwWlVpJXpwYFlaMyUjSWYkVUckcFt4WUs6Qyt3OXIsMDtfMUJG'@; put 'ZHV8UVMmUDluWm0zNGwlajFzOCRVLntGUE1OPzdofV9RdzpRdSojLyFIeGFuajtgMTBAa0s2c15gX11ee29eRDRrZSpnV3guMVImOHtfUFdwVHEmTX4qenA5dlRlYVJVSWJqKGozQF1IOzxVL1Y6SCVgRFlqbHpIVyZBZTd0TUBsNTJwUD88JFF3Q2NTOm1sNyMrTi8sZmJJUC9sPXhsX2V6PStw'@; put 'LiNnSjU7Lm1QfiliUX5Tc1d8LnZyRVNwQXQ+UHAiYys7TltiWktOaVNCKT1QcDI3TGJnU19OUTBqTWFkP1h2IVNlNihhdDNaT0BpSE8/WWcrdkUkaFRqRF95VSxFdGhUenV+PVV6Z2lKZ2gvaSJKRC9jKFU+dno4QG8lPHFjbD5NQXFpO28vP11YQiwyM0dmZyIlaTtXajJifFpNeDEubDNBSSIl'@; put 'PiwqPUNCUFo2cms/MCkjNX1aZj4hZyMoRT51OTNAZzBNYG9oeCxRWUJfY11TKSNiTyQuTmxFT0U7cD9RYW5gX0cwVGJAWzRObEdffjZ8Kl53PEV7cCFeUnpfQVMxISZRQmEoeU0qcWZ9PS9AVXREaGtNbiVWKUAmPjlIPyJUL2kwR1Y4L2s3WD92V2Vhd09ZcmEyUj0qUlhLWVZjW3R9diQ4aTBo'@; put 'R0RTTjB6YlR9ZmBpO05lYFd7cjEsRF0oNnFORVV0UCgwZ0YmOEBZTlRUKT47UVtXMHdUM2tMQE0mLFhTWCNibl5KRWVGdiFscTs0alVMdVcrdkVRPlNPMWIibnd4KUZifFk/SEk+RmkwRjpxcnpofFtFJUYlX2UqYH0jZzc1bV59PzFzNEdMXUJBT15eU1k+XzFXMTExMEs/NHEmbk50dXx2YDR5'@; put 'WzJnV30zeWc9eiR4fCFWXX4kd1hkSy8+ZVVvPGIlYmVOQWlgQT88b20rLkZXKWZkWT52RT4sPl5DX0ojbyM3bTVtKSE4M3lnO3hKUzNheCpwUGo7VGs1fFdVbSZLJVdfYTllJmw/IXIxb2poLyg5b1NdVjFPRiJ1ZD5fanJodXEmJW4qTUV8TiVQPzA7IXB2WXVQdTRzWUBNbWhTTVRaNlkwL0Y8'@; put 'Ji4oIT0kMWllNTowMT1OVFUhVTRzVH4sezRzVS9ILlRrJFZ3bDEsITJVcyJuU197ViRsMSxbVkJhL21LVGhUUWJIPl0+VXRjVmZnYSguMlVzZTNVPj9eUWA/dyNRMGoxQixHVFI6ZmMpXXw4dGo/TGM2S292PFlYT3AjLkZbMDhkPFB+cD9aPlN+SGUvN18oV2lWIy4yLE81SkBkLjYhWXR4M2M8'@; put 'YGh+Ylt2QmUic20+bHM7dHJwdUxZXVssUGA2KWZ7KixYUmM5ej9URXxCdjwpWzxhfVVvInhLe0kuYH1VUGdrRzhHMkF3W0VRdllFQm5+K28ua05UTiRtaGQuQU0xLl18dSUpTnded1QjUD0zT3NQQCZPYi5BVGwjIjBYIS9IKUxudUtQNG01NE5wK20yMFd2UFFiKFRRIzxlLkg5JG5Ie0N2aFVz'@; put 'TXBwWyZqclF3PmoyYH1Vei9yMnlCNlt5clU7QUhhMntTdURXa2kwKzwqI19wKDxscTxNVjlfIUgzM10/aVljVXdqWWpOUCU9e1ptP1UybUFkSFJ4VHZNeTxfW3osWHJ2fjAsIkksMkBqZVtmOFcpSn4mTF5EVk1hajU0cC9SJUleSzVKRTd8VzFoPW87JDFBLkF1dn1FNm4uP3xELjpyOFRHfGYo'@; put 'M2hFKF1CfVg9VWYuP0NbSUY2aHhZPllpIj1KZE4sOzUjcCllVVVoX1lGM1h7aGZ+eHA8M0dZbChMWEY7OmtbUm52PHJ0RU5genF0KmglaFY5Vj07TWcmdExTe1d3O3B1fXo4YmZmZ243bjkhKDZVVWVbU1R7cDh0ZX1xLCMvdiNPIyMmJCU+djBtZms8djd8eltCXUhnMn5uZz07UHA2JC8pXjwk'@; put 'Kkxua1dKS2ZXa1FaZVlWOVAyXzs8TFs8bD4qdHNqU0w8NiNTfWsjOU5wNUcvRjdOaUNqM3UiamoueXJ9dGJyRi9oVnV4bVN9cGVtbH1fa1teVCpFel0ma1p1YCxqPDhmM1JddXppa317NUd7VTdVS3oiTkQwRX5NcCZvMXZvQiorMnV8WG4vU2F5PE5uJCYrfFtLO1J6K1lpI3VvMF5qV15zcyJ3'@; put 'cDllZUAybl5vdTp5N0BXcipqakF5dE84VS5BNjhwdVBpQHg0emV7TTshWk49S20/ZU90KWooW0NkekBGaExjVTlORmwyYlteIW9MQWB3N0JQKXtkXl1je0ZOczAlRkpOVD8qMi8wWm4jazh5PntWOlRlQWlHaklHflNSV2FXZGdWNz9YVVJWcyFOQTJeWEFjYFZaLkdKO2lAKXo7ZVI3V1pDeVFb'@; put 'b0R3QWtCfDohPmpJUmwmLjZUNFU9fUY6NEYmW28hO1hXWyE4UCpmeGFeQFRBcSE4Pzs2JVJPKjE6NSkmOHdoTEZyRWcjVnBCYX5VKXVwIyQhP2NiWXw6Z0BIfUFzOnYsO1oqKEJTTFgzZ1dzXTpqTCpxWzJxKE4+ZGFfTjt2PiRdPiF4bGUzUEBsQipgXU1CXyVqeD5jNn0rPjl4Uy5qXlJ7bVt8'@; put 'MEMyc19ve0E7ez0yaDBeUVsmPV1IS11eNHZKO0oldixreT80ei41N09lPk4+VXxmc0ZiWz02YFhQfEIrLCk1IiR9akImRiJzQzNQTGs/U3xYRy8meClibzY0KE95P2ZzZE5ZcGZ0Z3NbQmx8JUFSQH5zOkNMfEp5b3R9TWRdU18mVlVVP1FCI34wU2Esbmh6M3xVaFB3NmhfJnlJaSIlNXNCVDh2'@; put 'JSphW11ZRnJiKWt9fX5RMFY4ZiErPTBIJkYzb31vTFZ+JEMjNSROcSV6d2ptTnBnbDU6Q2xFW3RlemVgMkY4eyFyUTM4LGNNIUFbTD10JSUrM3RRVWxDP34uRX4zdVdHWCJoLmgxcVovZ0w7O1ZDOHJWNWooNjNmRmNPX3JUQ2VGflV4NCk0altHLCIvKj0zK0AuIl5YNWVufDN0QDIqbHQ4bSRW'@; put 'WmkxL0M+a2NtSTBKZ3J6YSZhe11TSGxXQl1CcCglc0Z9WnRLeU1jT0U3dXE1e1BHRj58MjNENHAjWWJDNjBFOnJZQj9bPDxYX3BxTUNEJn5fPns+TF5bdi8vfSgzUEBaa1A6UUxaX00xX2J1NU0+SXsxPlBhRCNZaSNfNDlbaWtyaFFISm5PZiFhY34mfHgqLl5oc0xEYmlfLHxdd0cqfn5iKUch'@; put 'eyklSzp0Yz5lX0ciJmpJdGNbdHcrUXprfjpkNF97bjMxN2c5cyxsdSpXZGguT3A3TCskKExjN1pTRVoiKndRJCpeL00xaFEzd3woXi84YnBVRV5ZRSRoendPIXliQlRIT3t2em4uMWtvcWtFVSI9PHV9aDYwNzpibV04YHA9Tlh+aVdyTGFhITB5Ty8sLHghIWYsPyEyJSw4b01Tcz4lOyZOYVBP'@; put 'ZCpKOD1pWEhXT3tXUFcuN2hedHs9TkEud0VkNGBmdGQqPypNJGYuNU91e1d3RFdjM0xxdShQV081em5zI2JASFlEM3dXP18hTk56PDdZeGcxemVkW1twcmhWOkM9QG8mKjR9WFhTVnZ8K3Y/fl07XipSdnApeyJFO3dMWkFNclZkXjF1ISRYUDd+PU40UUk8UjxDX0FxPSYwYmpYNyx6UW1AfGpg'@; put 'V0I+OH5uZiVQI2MoY0QsUVgoeXd3UGNRPzFHJFdmRC5iYV1TfH1LKGpJJV9vZ25ldkZSb2kpaWo7eTQ7W0B0NSNOMXx9NVtHSGt1eE8lQiUpREhWTHF1MF9iQ3NeVnM2UGJbQWtPYz83US9GXkojTWZVR3NCamZWWGc0fXBJbDR+ZnFUPUp7VTtme2gjfT80KnxUKVZnSFdMR2pPIyJsJXhlJTg+'@; put 'Ql84cHdGSCZSbmo2eXJMJWc1MCRYKTB1JEsvL2BSczN6Wz1OSCteb0AxeTFmRFVGRUhJJmIzNXJNRzU+I007NnJNOUNKU2A9S2A8Vkp2NSlbbk9MSSZPb0wiZ0UsJUdVNSt2NyFWdHIrVWg0aG5BRjVaT3sycnl2PV0jKm9+dERdayNmOGp8YjVhfnJpWCJWYT8oJCx2c1J1Vj99LEZ7Q310aFFi'@; put 'WXJLUHpvfnZ9eVEkRTB+RHF4JmQjfmdMcWV7LkVBU1R0L3wkMmxkP250U0pteHApSy4xVF8maG1+YX11Lmt2JS5rdjM6dEAwNUhva3E2dV5beltrUmpbIlllUjZ8YXFRSUImRyp6UEtEaDlLUWFDakxNQncsI0JUV0Mrcj9JYj14QHgpb0BSLCNxP31NNzFTN0FoLCoxen0zNkJYTkRMeUZlQFhp'@; put 'eCMrUCRMWzVEaytzI25bMyh1UWJXMVlGVDIpcy84JXx9dEZwbGRVe1Z4UnZQPVddaUU3c25nQjxdcmlpUn5OPGE5QU9MPnpnLkMuYitya2N1dUtleVdAX0Qrc0NtYFp1eiMzKSVPNCU3byVQbHN1O09vPSZWbTRbPUh0UGQ4KVUyd0k4ZktuX0g6eiJWPnNLejsuI15UZiJNR1BPZH1QN21HSyVn'@; put 'azBaNFo3dy4jZSwweTs6Lj9bXSY8Wk1mIzI2ZEdKekdheDkvLDtKZmdebVVLdjg8NnNjfVVDOFJZUkM9MiZCdl8mKGNzandDOGxZLGtOfV1vVDdCYnZSRi8hTiFOWHluLkFzfHE1dyU3NmN6YHhlRyZyNi5FTzBwVzRnZ3RdSHY+OUdQd3RAdSUrSCtpenclPXh2Q15eKTxadyxxd3xVWWsiPzx4'@; put 'NGZlTipXZUApMntDV3NoMFV0IlklfFo5ZCxMNFkqR2QmYC9xSThvcVFxdmdaMChzWitvWFRTK2BYZ0Y7NnddIUx0UUAqI1Vjd2dZSCVnSixnUTJyWjk5I2hLIWYsV0UkVV0hI3M2PitbcUkpIXVMKkZ9VjcraDosYixkQCsqRF9HbkswSXtwY3koMzFBKFlePDUqc3VncGtuVV1ra3MmSGBCJnFD'@; put 'JnYkR2xMO2JdWHAiVz1gV2p8Szh0MHNBfSZuQywjYVg2KFB5JlRpdF95NXNsXWx5PCZuPl5qYWtXdFZpRkkxdlh3YSRjcm07TGRnN3x7JDlleG1jKldNIlprPGtPfkNmZ1dGRVFPaWkhbztIZH5wLGpSKEhhTlkjVjY1fTBNe103TEd3N3VZeTIvRTt7bDwuczM5WiY3ViRTfUR8eHIvTy5JfCg4'@; put 'TCUyaVJ4ZC8mPWU9NHQ0ST5YMExOcEFGdT42N0BiSVBzcTcoV0ooRSV2UktYLjNLV211Z3FfcWYiJGpMMm4oVS5IU0lxWUJtbmNZMGBPL2koclApeXVPQjA7MmwwYCgmaWt8bGF4PiNOUzRgZC9RNmJDNC4ubCFeeTtWL0ZNKlBJIWRldGNVc2FtRCU/TGg7TjdsXzs1azF1bX1wQGwicVJ8KVdd'@; put 'MTY9czlPPU0+VVNrWkx2TyR0MzQ8cDJzRloxXmw1P0V8JVZWMFFVIUhxVzZ8U1EpaFZ7MHcpZXlbQXFWV3hnUXEpfHlLZ3xMe2ZAT3RAaTJvcXIkRlZ7YHZFSj9MdFZya1VEWGdiL2tbe2lfPExmXXttbkdPUzdDP2d7JHVlfGVXaXoxdztGLjwuP0o+dXg1dnQpVUlgXmQ3Lj1ucl9jdHdpVz1A'@; put 'QDcxI2tmTV1NZFYjZmZ3Pkx1TGx7UnVxSSk9ZX46OmQ8Kz5Fb3BPaC4rWFJjRWk7KGclUHdwOHpEZFBobzlIPFFmOSk+c0xddik+czUkVEw1S2BJaE52azZORUw9ZTRqR3B9NU1xa1RoLmlUSGZGSWdSKkYjKklTZ001eyYlPzA1KWpUPUVuMD1+aW0mWHF3NH56PUF9SDMkJnNna1ErYEI6bGRw'@; put 'OXVUVis3VFozb3tnSHB8JS9KO1ZLeSV7LEo7ezFgWTE6ayV3PlB7M0lRNUJfSEdTSnR1JiVeeS9JMExeVnU8ZTNFJiIuRzUkTyFROWN3Nn1sfkNHWERVX1phYD5QSHY6VkRUeTk/NH5HTyZyVCFoR2gpW09jQl0pPzR8RUpOci5ZV1FedzlEfiM6SGRKKk1DfS5nQEhrc05aV3Q/ZUpJXjBoeVtm'@; put 'WTg8RV1IR1AvP3A6cDVxXng4b1QmaVlpUzFPZW0hfC57fEooTEAmNHhSXlAwVmw1WnM4dShifTJLMDBFcUNgJiJreDwmMX5JL0wpPSlmNSVsYTk6YmVaJiVnVyV3SyhyXSE3andTQl9Pc3RmNnxdLGRXSkJSUzNgTEpyW2FMKCQxczVrandzQ0Y9RntWelVFJU4sYE1WJCZHJiYhY1s+fVkkQkw/'@; put 'RiFybWAqWmh+WDBXO3lfS2VMTGc/aVg3dHJwWioxZlZ4SlN3a3J+NilweWI8fkBXI3pGNDd9VTFtdjBubCFrLGVncF1POVBbWD16OCxafUwkaUpWMjFCK3UjJD8iQzhyLE4xLHtBdXtMJHQwR2VnMXNrc3RmVDEje0dMZ1JzeHd5STFdK2k1NEhnJW4jWU5CXkE5cTJVKyRiYnNhbW50UURRVzxR'@; put 'TjxuRnsmbmpNL2NTOk9MTSF8KzM0WCFpWWpwMHY0PEwlTDIwY3hUT0xeJGRsYCVxPX0ze3lQL1huNUFZcFhQUHowfEBqc3o3U25wMF5tPipnam5hQ3gvaj5Pfm9Bcnk+QCtXZFROPyF8ZFtYUGMoUy5qPXhjYXQuWzIjMmtdRiZlMGQxZlFtPUN4K291IWZmdFt9OHcwMihMalJmOyllTSk9S2hX'@; put 'fXlPRC5IXWdaSlopSiZ3MnUrV0Bud2dFR18hPncrNCt1Yk0kOHl5PEp0dX5gTytmTTAhVU9hLG5nUU1ieWt8NzxzeTNMZ0dzPz5fLHI+Q2JYaXU4KmImdChQIz94KDA9fDlxK2RNaXlGfndqR3cjRX0/RmssInZuc0luKV1tYXZQVlRrUTZVPW5uV25xeTE2S1tXRWUzLD9AUFkoWXwkVy5uQHE6'@; put 'cFEvTGwwfl1YS1tvejE/OmhyTlpPPEBecyZ5KUtZVXA8anpAP0JqPklJM0ElSk5XVHYieVpZfj97bkoxW2xsYGhRR1E9fXd1e1NFR11sJiE2L05OTmhjMU8qbiQ1OStkemd2MTB3T0ZwVHZrSSxuZGU4KEQoUXFVeTdsZHF+MTtxSlJEYXh+KFBsWl9OfChZXUMhNzBZaGMqSX43TislZD9dJTFU'@; put 'YSlCJmguekt7ci9zailbV2FdSEdWejtjVHZ+ZDhMZkYqSWU9eDNxY3NaTV52VXJQJkl0TDQ/RVsrRVIpQnZENExBS25DbSlqMml8U0gyWVk4TFRpODU/NF88SV5JU3IockZYW2VmLGkmNWpwRmZ2TG02ZmlYejNMbTltY0NALGAkVXhKU2V0UH5RVy99c3xFM1NXZkRqUnN4IXdpalQ4QDZ1PCIv'@; put 'JWYqeixzKC9hT297QE06W019MTo9XyhkVnp2I25QJF1PPCtvX3AueGpYI110bjRXY3cwJVlbfVVrdjZnRX5jaH11JE9zaEBeOT1WZD4rWFNaVDF3dzJELGJfR1hlWn4lYj0pPWV+JSFZUi9qNk0kXmpdMkt0VmFufkd7Pkx6bkRGVT9Ha2A5eCxfWSojTUhNNX5gRFZNYWo1NC9IV1grRV9dUD1Q'@; put 'ZlEra3YrVEZpW0duJSVpZUhUb2VyZUglP3xWQ3Q0IWAkRDN5JWI0OTZ2emVkKlteQlIiVEwiKnRHSCJEaDZINSlzalMwPDUqYyR1KCV6cy46bWplL0U0LCt6bnVsflouW1QjU15jOGA/LF5eMjQ7ZmFhK0NKOWIpQTVNM2teMHx7bFBRKFpeSisoSEY2NDUyNnhvR0ZXUmllNjp9cFYrMUcqTE5u'@; put 'Iyx6QkpqWWkzdHUzSS8yTDZRSTJkbTx9S3w/YEQxIW5lKU5VYmslbVFSKkZROiJscGRCM2s6RygvU0hHUEZhMiZfLCZ6cy84bj52ZnNhSm1ZS1lvbCIwSmk8T080KTJbdmt9NEdMbFkucD15Kkk6TzxpQEguYEpedSRhKzUyIntoUEEmJEIuMHRZfmp1dEdsaCRBaz95SDYxQzRfJlZMb1BseHZO'@; put 'QzZvNHRfNW1PZnJ7a30mWWV9VT48Z0I6JElofDBuc01oUiZbUFNmODRefDF2KSokYiFVOD8oYE5VRTp6dDNqbzoqfUw6KjxbJWRITmM1Z2pZYVN7SUFGanF8Xz5qQypELl8+Mm1QfmBQNkIxVzZWL3tyfSMqdVtiQ19SayVUJkNRUT4jZT9kbGRsIXIqc1JeLkE/fnBMJX0/cFByfHcsUSshZWE2'@; put 'PkhMJH47RXYjSXVmOixMI2FUNyRlPVpCYT90b31MYF0lOV9ET3woMlR5OH5VM215OzZHTHVMdGY+SFM4Vm5nKGxmTj1wT3svZ1htfXF+ZSE5TlRsUTsqYmheT2djLlhCTXFjQkFPSUVTLzJUX15bKnxobDQ7KT9wYUZEN3hDdXl8RUUhQSpbfSxOQU5DdkV6TjlYfEYjPDM/XTtWMSgmQTRreygv'@; put 'JFkiSCk0eCw+YkMiIVIiVUoyLnQ4JDJ7dTJsfj46KjB9fnVgWXJsKEhFbTg2UnUhKyQySER8XVNVOT0vPFdxZD8uOml5SFc5Vk09XT87em5pKi50b18reXVmfnJ9IXt3ISs4LDUvNU5zTkArfGdzai9lRixpX3o7b0ZlXkVURiY7cntDYHhRVjh5QiRzNWJDaFhfMV4oa0VQNFpMKmdoO1AoWVBj'@; put 'UT1xLDBdcmk0PmtvWno4RlptdiQ3dCpmNW52OTJfai5UWmpVN2d8TENuLjBNMXNYSFV4Xz0/en1UbjhxMk5ybE8kKzxDJWtZOjZ2RHY/cFc7Xzo9SyV8XkosMy4qM05hTWF+XTEwNz0pJV5iJXQkOVJ2Sldpb2JWdVQ6fFl2Y35ZOikoVT52RSppbE9XUmliIjlNZGdMOjN6OllmPnMmRDQ4SW1r'@; put 'bTYmKShKbDBTYUpHUkImfT0hPUFuSTxic19AMj8pKDxtd3lOPXpWRz92RmdiQzghdSEqViZIdT0vXSkqdUBjdHlTa0YxZzJTa2MwNzxRU3ZCPnEqcWtbcEI6XjZieXNKUyUoMDFyLlhzdyQmPUZNfCFePGFCYkFuWWR1aUUyV2VqZldGPCx4fDVUWUBsZ3hIY3smQS4hPU0zW1g7X1U9MVt+Rmgw'@; put 'cjB5W05MdF9TeVIsdHtJdnJLa195MT1wOGJMdWkkRFUkT2dBSGgsdTorcXhfT1JQM149T3kxRV57WmRifjRlfFkxYldTR3s+cnBtPHBuSS9BUHR6UF93LnNvLFordml1RT1vKVRfZV59PUA1PnxFUldadlJqNTFrcT9TUFBKPEIzfiVSZW19W3NtfngiJU0/eXJ+JnB6S15ZKXtdOElUfjRUbVp4'@; put 'ajEiOD42QlZATUBDW0EsY2pYPXwoZV1OejJsKn57bz5VTUA6Km9UdWFsSSgla15IT3tMQXA8YVdpRCRReDtQWyt2RW5bR24yUVRWIX5jV2o0PTA2IU53LGEwR2lfa3xsMSw/WXxOQm56bT4yVCtINjlEe1JyWHJ+Tih7dHA5JGpAZn1pUFlwSS5nYWJuSD1bMkEsbmc7c3EjRX5iUH4pZH1QdFtY'@; put 'b1pCbyFEYiluJW51JTcxO29pNWMle1kkOn1TfjlgVkM+YHZAanNyLCh0QDN3eT95a2BWQ3tGWWt2IiFAa2A8fjQvYGsmYDkzVSg9ZmJrI0B+OUpkSE0jcT99UG56N2ghRyIhQD8hWFtsdHJrZm9dRi5Ea2xERzZfVWthTEU1QXlCKn0zTTErflk3dE1ITSNxZlYqTjV9ZiwjKStVfFhoYCoiYFhF'@; put 'fUZVNGYkNnEsbnc4QHNCKEY4LHQrM3sySyVjbTpTdFRdZ2AmfD19OUJgPzwwZWU+UWtXJnxwJipwdUQ9KjhQSCF9cyYhbklZSn5hN016TSYhTiVFfTdgI0NRKm1+JHFgYWtXJntPakFHdTlpUkRbT2NaU3J3MmJnPG1JbTNKVXppc1tjOWJvSWNbS15AVX1pXyR3QzdGPT1de3A0c0tbLk1RMVcz'@; put 'KilHZStvSSFbRVswPkQhM2VlKFBSQl0lVUUwPmk1dDprfD4qN1BEKlZuYChTRD0qTWYwb1tSJWhbZyIqZnd3fWFXWV8sRX1yeEtEVVt3IjVSZSlVeWZCeGtlN0ByI1BDZ2phQi9zIiJ8JDJ6YWIxKlIkeiVxKmxlKWM4b3xePT1KNHAwUlAjUWliQllJMGxIZFltUH5ESEtYK0ZmTFhePFAke0N7'@; put 'VkI5YHBMWip8SVgue09xWXk0Q2JZL1s2IzRQeVV0UCgwP3dCRS8ka1pbdHRgRTF6dSI9JjpWKTpsMD4ibUBTSWRrJXxjdTxCbUtPaFBHUSRuZDBeYjU+My40UzFvRWNBNk9YeC5FbSRmNEcrP2BLV2J4dXQqcktQVWNxJkckNF9yV0ZuWk5oMzA9OFkkKWk6OXNNR1Y4YWhLfDEsOiRuUyo7fSRW'@; put 'JVd0VWBzd2J6N2JYOmBtRlZ6TFUzbXlfTFldO2E1M2Frei9IaiFCaFZmKXdsSD9leW9qZjU1cV5BejVCXjxMNGd9c0x3PStkUzx9YTI7OTNrXmU+bVA1VTNeciwmalk2WyNWbnlsL2EuJFglTz08IStIWTZbI1RGYzhmIkEvRHFEOW1fNilFW2pCdTNiQisyIX5ER0pTN1RKPkM9RzE1bjIlYWpB'@; put 'XU56eXB8UVNfIVopW2hyQl1hPipZSH07Jl48JnY5VjB+KzI9OF5MTlRUNz0xdGJ9USF2Mm1AWlcla3I7fDA9L3xAS21DaW1DKHtWOmBET0pUUiwhSW1mVFh2JmRpNWdgPThMTGo8TSsoXm5ATUVlcG4jbTBvYXhVZlM3Rk5yTyxae0JxLj9kRz0kcGFISz90TDkuaEZ2JjVFdCElXWZUPH1bVGs8'@; put 'e2p+JVZaJD9IYjlXYFk9S2E6Lj9BWn46QlBeckRoMVosbkZSRUM8TyU5K3t+V3FlQ2QlPXI3fipFLkd5YW0iX0ckYmMrRyFAcGk3PEJLWlNbVEtFV2pwYVZeOFcrXXwxdmE7JW5yVT1aNXgpQjxQJkdOLGg4fVlpOEJtdih9eU91Yipjd2o/TF1eNnpLPzQhdF95MFAwLmI5akQsUVFVISMwY20h'@; put 'IWpXWHd1fmxvNTF+JXV3Q2ZwUF1IOl58dTh0fkEsMm51QHJxcXB5WkU9YTw3YX1NfHple0k7ZFpOViN3KlI1WW0qXVthOkcqU35VYk5hbiI8I05Id3puajx6OEI9TD9OX2krQ3U0fUEmQVY8Qk58c1guXk1Pc35MPylITTUlTUN1QyZOW1t7bT9BdUNuK2Y0KSRpa2ZXalZlYyVvLzl7fElYe00o'@; put 'Qz4pX0p+QXJkaEZjM1Z2bT4kKHMoTywkIzFebXBvbDFvMVdhOmB6eyIoRi9GL0ZyK315fCQiXV1dVUN4fHArWk0zQD0iQ3A7anx7Vy5pKSU8ZHY5MiQwajtXTnsuL3VScnR7cGooPnZ0c1F0PHtiRWY6ZHB9fW1HV3A9Nms6Vn0+I0AqIz9tdXdGQ2pLSyxFbXk8M1RCTGM4OyM8X0BZdndSeyxv'@; put 'Wy9BP2dCaFRSSlJHUDw9Q34rOm5teXI7NEBLXkRTbipecSh3NCI8czk0W1ZWdTNsVFAyc0R5Iy4wfjdtNFRmREIoMzFacEhuQ2Zde2FnYFp9Zm1nJjFpYn1kbmJrPik+SD1GQjE1NmtDNmhvaWpxVD5AQ0tqR1daOXpHRHx8IU1acSZzV0BlNng4TlBnbyhsL19PPDlJNEBMcGAjXlBHIUtjdXYx'@; put 'VS90ZGhWLyowUEwwLyRGNzNfflFROzNWWW4+ZD5JIk9vMUx0dn5bT1RINiluK1ZvSFArXnwrQltDP2A7MG1hREc9MEd2JWFgbzlseUQ5RzoyJCYlQGU6PSpncDBmPVUra10pO1c5UTtMcUxLNztqPmJwXyU/cmhVdj00bFA9UGwqcVt9eGspfDEpOXRmcDNyV20zSTdzTWcwO3omY3FjUjdjRnVF'@; put 'ZWdbUEAlfUpHNVl0dy9zKiVTbkM8bllWTktpVSRdPGMsLkNPMXZ7USVDIWc9TXB7SUBfOVlUOFFbczRHVEQ/TWt6eShpdVZ7TERifnImVllLLzlefDBDan5jd21mL25YV0QyKzQ2azRtMyVabzZWdm5yZks2elhSNU1fJHJveUhMMVhEJjMwYWtRMW9EV3hNdTZ2L25bSzY8RVt9eUFWfTgrKUVp'@; put 'cmgob2x8cUdgbVBoPkhSfl9vK3Mkdk80PiFVMCp7Ly96JmQ8Iz5uVG5abk9jZT0pPGk/ZCJnc1kiKn4lVH5aIX1HTnZeZWU5TXsoJFZXcXw3fEdeQXEpSmVnRSRNa0U5Xn41aixdfjdbZV5ePTRUYXt2P1lGJlU5W1I3fDI9KzFjM0Ysb2QoN2dybl4mb2pUbGtOVC50V1FIMEQvUy4pTDZxej5S'@; put 'WHMscm9zZ0pUQ309P3paMWNeXzgxOj1DOWZbeiJFNSV1bElRWkhfan59cGRkKGw/VXJFfn4+YXZ9U3NmdzI1OyY0fiJaUVp6MiFgM19scXduW2xOJWpMYD5vSTV5OzZhYTdGTCpbWWJlVGNoWDNiTWF2T0g2UG9EXUlWTD5bMSpjVX10e0huel1qXmdLWkVeaSxYZEtQYj1EQXMucF1QSDBeZ3tU'@; put 'fXFXWGlMVkZAdToqcjhnSStaQTc4QGdgMS4oNVs1flo2VWg5PiFucT8rWj8keWlnb2NHaVVkRks3fnxVPyFlc2RKWTRmRTFQYXpwKyRUREM6Jmd4MWc6X1VMbjBZS01jZyUzP3lEXih0LkY/bT1pXyw7K0NlTEhldm59TTwkUXxvTFQpbj5GUCltUTkjaTd+JnxjI2x9LCRqUmpEYlVEKDlARCVu'@; put 'I1thZH1PdVQ1VWw4UmpGcnNVXy8yWVRheGtvMDtSMHFjWT00PGJlQ3cxbXElLn4xJXIkQXs3dl1gYUNfXkViOnFLV2pYZDVpQ0J1aEspdFJLcnUoSDpgKW5aK09fe3A3bXtQIWNWJlZlbGI3YndeOkdINkg5dnpxY3tjUkxbfUopbWg4MSl4OFRrXyJKPHttdFU8O1dzYGs/RCJsQVlVTGo/bi89'@; put 'OmAuaj46V2R4VD4vbGllJGxYSXpuaVBmamlkM1RjdCU/VUhtQmd1OWw+KksuR2UxSnhdWTY1QkhbeV12bCNdLjlyY2NbXT9iKTZAVytdZF1+UF5qPzBOT31STEAqR0lPSXg1W2t2WWNFTTQvemd2fXNVWHErWj9rSjt3X11vWCRgWHU5P295ZlVNWk4iNCJXRyV+c0YyciN2QntXKHRHLGlZd2N2'@; put 'JUUxOVU6a2orXVgjNSR+dFs1NCF8NntZMXl1TigvdiUicj9PQkc9ZlQ8RnU+VTs7L05sekxqRW1GcS98QnI8RzFucUJJe3s1WS9IO3d5TFguNFtLaHw4RnM5UVBCMDkmaD8pYjN+OHA1VyRUanpRS2c0ISY5fjh8P3NoV1NIQSQuNEFHIlhMWExHT2h8KnYyJTNrZ3FyfGU3RyIzfih9e144PCJ+'@; put 'fVQpb3VtISo0Q01LWmBWZlNMKz5bVURJKmg4fm9GSDdYKTUpOTI6Nz4kZnxVZFh1JWkzSXdmY29zZjBZKi4vMzY2T0ZKUj5yR1AxW0d2Slg0bkF+amZITG1kQToyL2FEPSk2YlVEXUNWZDIrcj4xPT5bek9BTiJRS14hQDEuVC8rbUo6d0BZUjZsSGYsKWFkQCgxN309TmMxNXJLNm5kelZpYzYr'@; put 'R0A2cT9mYyZecFcrRGd4TWVFbmBrREh7KDByfFp8RTpuTzFNdmZ4eUYoeEglWWM5Z14vJkBnZFU4VlE+eV5rUUY3fUwofFRATihWZXFzfnBhb2BwUj53ND1FKlY5Qj5aaShaNzNdO2l8a1JNcyosKX1BZzw4ezlpIWdRalVtbWtRNlFxRiZ2MjVpfSJ1VWd4P3pjTjR3QFl7PTw2S3Y4U0llMXUr'@; put 'SnU+WCtJQ2VSK0p1KVZXWH1Ia0tzUV9LRWVKT2J8Rm9ENVhAUno7eTJgel5ePCJhekl9aDxqW0sxJis0dDNeWWJOYV0hInFgUXZ6K1U9Kzc4XTozUHFIdzkpJS43e2k+WzNrUiZSdmsqIkpMPCpjYiw3KWYlMTxBVFdeczlOPTwqbGcoRyllSHcvOjJlTWwxKFJLOjRsSXJINjtWWzdfbCRrNXoi'@; put 'MUIuQWtBU0IyNj18bkE/bHFtU2J6I1lAQmRALzR0UFErV1c2R2t4KkR3K2c1c3Z4UlosXUZ3IWdaVlp9b0I+Ql9CfG5GRHpwL1Qhbmc2Z29GJithdnhtUTEjayouSDEiLkRsV2wkNks/SSxZYChKX3hGaHVRPEoyWTN7VWxbO359dn0md1ksJjZSYTd7MTd2Vls3cGkwN282aSNIVDpKd0BhKFIl'@; put 'Qj5CX0FxQiZCPjNBeWg3LHpgL3A8VktWY1N0UGlnZlooVEtPN0wrRG1rWjlCXlArVTh8cit1eSt7dGBJUGVvWWVAfVdPe14kIlE2SzNFeUJ7eShZW1B6VDIzRjJGJWtTSW9oY3c/WHBTJTZRVjlAK1k5aF5kOF9fckRQZSZYeEhDTSx3ZXc2akp6WntPbzYlc1ZEJkRMcGpDbGxyRHYoMF16elU0'@; put 'VEpEWi9xUHNrYjohTjo1ZzAsdH0hTF1bSGQ7Xl4ifT45cEdXdzhFKT5HSHxwUDo0fHZYZ0gofjZILHNhcFUoemRNeHxPVl02S29xLjV5NlhDfnBkUnRVVSlBYGlNb3JWPEliZC9tLk1xdmMmVSlYc1haWUEvXUZCNXs2Q3NKNTx9TiVLaENIeSkkLG40OjNhP11KWU9VfU1ze1N1TzJbVWNEbHNI'@; put 'ckA8VG0xJHpgXWNCYnFaY2J+Y0dOVmdILlsxTi9DQSkjOlNDKl9MJExdangyJW1TRlhrcyhIRDtMO1lfQUtzMWBJRV5WN2AyW1hpdCskPFs5T20qY0BJJnlyMEdDNiRhMzAxW0xJKDpDLk5abkJPSil4TWNGLC5zRHU8W103RGVzS35tP3JPV3ltQFMiJTY1KVY2Mj9oJTc2e3Qjazw+XVNrJG8v'@; put 'e2wuKyZiOSQ7LG9YJXFuYlVbV11eVTo/S2AyamsxLEhER2JRPE1hIVZHXiZWInZBY3UqZVBOWX0zQigvNVZsViZJPU9zanldbFNzK34jLykjI2oqUXVoMzViYDBaXUhzQ3tWX35VSlkxISw6NjhpJlZtc0Fycn56XXF7SGVJL2gxITE2cERXRyVFI2Yob1VeZCNdYVFUJDd8cHFmU2tWcFMsMXdW'@; put 'IU5GUG1xPCksRWp2PnZMMDpMa1lae24/YUZKITlzKF8+azx+KV9FaTtzRC80eGo4eUBhRnpVZTJtMjFxSk1xI3xKKUV+XTE1XjY+OWhyWSM/O0M0dXtoe21aYF1oIUpHW3Y1STttIjIoK3dAOHZaO2BfSGAse2BwbT8pPT5WLE1BPkttSjdNK04vdT18ayhjcDRydyxLeSomKnlSVUkob1VpJjgw'@; put 'Nk4vI2FtX2Z+N3llTmFFSGMsTSRPZk9pNVBNTzk6eXpafiV+ZCxbSXcmfF5mV052UjVMWjdGNSRDW2E5fHppe0pjPF9Wc0hfXnpmWWEjVndvNTwjMGQ+S1RPTEZgTXs4PUt4VyNjLz9qVVVndEkrJiVCYHVveWxmPl5UfCVRWGMiZGJaNDUrTmt4e19VZ3VMYWNuVjN0I00yXXgmeWxVcD5SKVJd'@; put 'UVg7YUs7ZXglUEZRelovOV9ESU9TNyl7UXphYnBwYHdvPFY2K0A4bClOcWJiVT9pZCUubyZqa0hPUGIhVUJBXi5ONWFPODRQWio4QCtzaSsqfWV4WWIsZGREamZgWFZXPz17UD47OzIkJGM0IXFFUHFQcGFDeCtGNHBGKU5sTk5yIjhFP0RSSWkoOSNBKU9kJX1vcTZkWEpLMHkjNkkySjkzVnc/'@; put 'dVozIndeeVNSVFRgLi57KWdyUUVFWHIpUGFDLzM7K2hyOVAuMH1mSWooL0ReLjFGXlI7d2phcGFpa1JsLHEkW11ucEtoRGReVko8Tn01I0txYzd5XVRuKzVnUmE7IXN0WWo7VTlYXnQpKyE6LyYqJmVwcCNDWW0rWit4KGk2VTY7e2p5P2ojb3UmXTY7PiNJI2w/WjJnIkpZK0J5cDc1SENZckhi'@; put 'WnFZOyolaFtTVilpJm5WPHAqaCV2VkptNG5VI1l5KkxVMTJQfUsyY2pFbkYoITRxdm42PlZwXXZKYjYsXUZ3IXcvJEMhXzEuem4sS3Q2KkNLcllYRmtiPjV3NUd+Lih7Y1o2clhXOEYqWkhJU3xhdGFdclE7fGdXUVBHYSpeQWNRNFBTdmpsZCY/ZVEpLi5Id14pLjo2YkI/Z01KZyU1SU08cCpG'@; put 'PUQ9dCx0KzpmIXFfdkQ3bU5mVkg8Y317SFVtZXBYOWYzfklwIXxVUGNQaEpLZ1AzY3RRUDBSczRUTmomdm9dfWtnZEYsKFkqMiYlMiNne0gvSEp0IVBwSzshPVlwbiQ9Nl1LTjQwc2pgJXxwJmpie0xbcVI0c1cjcTprcDJIRVI+VFdTV0R+K34sMERFPyRLe3cmW08xMncvblsubj1rSGxVI293'@; put 'UzNSJVlRaV4vaUs1cFM3cSIsOmpwejAjTmY0ODNbJHY0TXN4bF5NM2MvQSR7JEVPNVtXVTM0WjRzS3d5c05aWF1DWVs+STI2OzFSKkBgSCRddzloRnZ8TU55UioxTnBIcEBnXWVRV2woPW0wVW03byltR11SQnlNd2x9ZFRYT09eS3B1YEhBeSxESD5CaUUpQitdIWg8OVBSRDxJcU9QZiZSOjQz'@; put 'c0BMRk1hTnFZYzhiMEY6byRSOlJgUmBicSg/en1IVzVmT3JJOF9WOXVPZTplTT0laCtQOWpSenlsWUckOjQyd3doc0BDUDprZz1YUDpYVT1nXyJocCxHbVFCLEddQ1tTPixzUj13NGc0Qz9BXWZwO3l1TlFEKXZVWWZOMzFENjEhMS88XzxfRWY6K1U9PStmPDVlJHpHb2M3Pnl0WyZlOjhEaHVO'@; put 'K242bGhEeSYiYHpiUiZbR0c+NmpFayxJYEtWXjpOe1NGdzl7Nk9tMFtNYFIuUi9HfWg4MTRRfXImUDgxM15ffkBhSjVLciNQRD92ezgybVp1SW52PSQ/en1hIS9kO0ZeWCY6VHtwPjlWZW44VDNxP2Z5MEYsUVIlOnlHJjp5N0AxWEJYNmV5Kncrb09HRSFlZ1ElZyl0OktdPH5gOzsiZlB3M1c+'@; put 'STQ3PWh6SnJiSG96UUBiX10pUXlWezR5MGNYT2FrLG5zcWtaTW5wNmVAalIxeGd0SSVnTm8iaDpvZHdAQmI0RFl4SG1dcVp9LElEVDFNI3t1MkAoTyMyXis6YSpBPDY+ODNXWUssMmFAZGJ4aTh5XWFNYDc9MH1KTUxsflFYLkxtcVQ5VDx+MEprVyZjR0JOMVkoXk84dyxqe3NLcm1IJDYiWV4r'@; put 'RTwpRVp4JGhIN1QpVClfNUguUT5KUE4yISYiTU1UMG8mVDd+Xm4oVEVJQXk2bS5zIWVWSVF7e0QydzpzeEYuISNbIT5fOGFZbWlPK0g6NmxbYnZnKXorckk4TWlyR3FJdD9eMTBdVXRXfWlQOzhdYm1dNF5DSCtEZVlJQH4oSDdZOSlhLHJIUEhEX3ZAQjpMa3g3NWsvVzg/MSVSb2poRF1VPlZm'@; put 'MUFvJlR9aXR2TzEjPUEmWjJgcCE5XV96YTRXdWZfNVFRJmMjVWV+SiF4JD8ybi4rdmViLF00az0pNEtrfkdUUzN+eWI8d309floufSpGK3Z3UyEvcV5ybExocDRETzprZyw/NmJ5KnU3TFR+OjRkIiRyenlhfjIuMlQxZyZGVH1Tfm50S1swQ3JTdVAxfSYkM2g5JDtfYkBUTG5VJG8+PWwxLEQj'@; put 'ZlkvMj5EdUgre0oofjsiPXxQWUlsMk9GfVoqMmY+L3Yrdix5O1d4cXtuIVBHfTZAb201NFIsVlFbbnphK2ZNOmBIfl1qak1NUmRRTWRkV0BWblhPV01peTZrfVM+VCgpPSRnVG52ZCIzLyhqfjAzI3x2O1tyLHNwOmdCJldpdEJBNTNza3FpXTs2VCU+K0w+cFUqV0V2YTleRmo/dzlMRiRfaTNi'@; put 'Tj1dPlYyJnRban4iaW85aCFVNjEvUWhuYDl2QXpae1AqcClhQDJjSSVzNihnN3NoVi9AMj93Q2UzLiY8e0UmUDdLcldbczFQcHwvMjA6NFhNVktIe1VRRW9qeSZyWU1VUVMlRXdMamR0UW9KIlUleV13ZDRiZ11yTFpFTlJgQEkxe1lkTFcmbmZeXzReJWE3UUBxOkYrRDlhYiYxW15XSWxQZXd8'@; put 'eHwxSE8+SjUjYTdRPEpdNTxeQXE4aDBfJV8rKTBMTSM/eyQpV1Z5dVtSeVtrTzxKX3pZNHQoPn49RSlsbUVkTkw0Xi4oIXx8OCZmVHsuaztjT0N4MC5nU09RPDZbLlksQ0gid2FeYHBbXy4vWWY3NS4wTDhdZmN2flhBd0VKX3NhbSVSZFVMP3VKLjooaHEyJGtlVytgN1hzVU1ifXx4SHJORDhR'@; put 'cHl+M0tmOERyPXN4SFU3djBWOkIiQCM/PUE6QDY8M0IqKWxrM3AsMDFxYjI6eGh5diQ9eG88clI4L2ZqYiZIdEZoZkVZdz99M1g5TXk+cnhxSSlDUHpXIkI8QH5DLHdUcXlGNWJrcnRrYV1PY1d0Y0t0WVI1eFJmVGJxcUFVQj5DJFJHRyY4ZlhVfkp3aERQZVopXUVQZUIxT2VwSFBlck1EOChZ'@; put 'el4jX2ptRDUqOzk/WXZTJi4oLH0mUlNrR3V+JUFGbmA5OD5WQ2ZPYWw1b0NLOEBFVCx+alY9RUI6IXxCO3s1NnxCX05Vfjc3QSl8dlowSyViK2wwVzljO3h1cUdsLFs4M3MvZH1hWG8lPi9PYlFUb0kvL09iUU5vO1FuMGUxJT0lLDohUTpVPS4xaDtTVlV+OGM5VXorYyh1MHRJaiVKYzshZDVX'@; put 'PXdkX0RIdG19UmVBaSpbTzRIN1IldC86fjlkMmcvWzg+PCFjTW8kIiMmQC9ifnQyLzp+VjdBKVtbXn5wME5JaCUsQytPYlFAKUh4X207YyRQWEE7e2Q2SjtMVj9ubyUifj4wZTQ0fmU3RmxUb0V0LEpsOCZRPipoKiFwZWBSbj05LHNgOk4xL0BvOSY7SWhfNGBbcn4zMTB8UHxsVjVib2JbXV58'@; put 'SjtiUiVHWj8qfWw1ZjBZKk4qTnNMNjspPStMc3h2SEcpeClyd24rNjAkPTw7Ri9US2dXP0YvZTBnZTkzQnY8amNMKHJmTDJzV1VjOCNpMn5KXXBuTTtibzhAU35SOiFIfng2MEVZay5YcnsuIlJwfV1APz9YQyVHXWZ2JilQXyt8cTh8dn5KMk01MC4oaWRdKHhYTz8waDBZeFhAfmJ5YVZZXzR1'@; put 'JC87Iz1mTTw2aF44WV5eYGY8ajNPcSprWUImcUlwfDh0YitfdS9bLDMybmdgdHl5OVomKjh9Z0hkczQzdkljMjR+Qk5fQnEiWVhdPj4hPiE+dW00diJqQStfQi82IzpOeT14PHheRVNMJG4qOCg3ImovMEEmZiYjOl5jMnBFPlt6L3hVdXtTYlh3KC5+eEw+fjhJV3NrbzdEJj1lZDhrS1R7cSZo'@; put 'ZXl0cXRxQSVafXdKPEptaVIrUCt1SlNMdXFsJko8IT5vLlVbNW9FPXtFXUwlYyV+PHhnLGhNfH1oaXdwMFNvX30/Ij8+JVgxPyYjOmk3WTF8IT50fiVMfDc4fG46WyNAIlUiZ0JbP14qQXhRXiZBLkFrQVNvUiNYWSleNUp0IU10MUZVIShyfTA8dnZZIzJXUV9xZipQYVlERE5HdlRyNS5xd1lB'@; put 'cWo4QFl6e2taSnckT0xbej1SfHt1OltsKGcvanUxRVVRMTAvOG0mJk1DRl57JWRMRG16aXFpWE1VU1ZgZitCU1cvVmJzdXsyeXc5PTtDRHMvYlBXYUBTY0Rac2pHWm5yRWt8NX1UbHd8Tz0ucF1DJj1CX2IyI2tNO0kmQWhZK0BddUpnRzlTfXZpdDdsVDEqUDNaTFE/MCNdVGsraj8hTWdMNF1D'@; put 'c0ZZOF5COklNPE0yVFdGOCF8WjtdWy5FW147JSRCZTxHc0EsRyE7WiskTHFhcjExfHlnT1MuZkBdI1JXY2hbdk82V3l+YGt0QndNKy9YfVVbWGUmdFR9QkwldCRlTkZWWz1PMiIuYCI/fkpFVW9xaDRAfXxMPnglb1YjaVIoPX4ocjUvcCtuSTxwbnIzIXFXJD1YJUV7dmB9U3h+K3JeR2toXT99'@; put 'Um9LYlQ/Nlh+bGZIWHQzanlyLkoreGRNMiROOjpFfVVPKzhNUzxvMkMyX29Mbml1ZSMkKTRRSWgsLF5xaGxiJDkzeyZRbE8oRT9AME5mbGZuWXJFNHpHLkR4bXRzdj5RV2IkInFRcTJGcltNZ0lXL0coeWh8e0UheDJFSzFrUEdkIiRkOXU7cFQkRXJobiNDLnBqc35XUngyfDxycUk4L0ZIJiVR'@; put 'cjgiMFM1Lmc1MDpOK3VScW4hMSUvS2E7bWBFNUJ8XmF5fGBbcWVHSiswUTYxSyVtXVJNc20lfVVCX0kuYVdLO3VyRktDT3RRIyo8a2pUVSkiPSNmNlRINlEwL0NYfDgzTls9JXMjVGB7fWtnIygmUEdtcjhqLj8wdWo/SVU5U2QzW1tSMH5sdClCZSFzZFo6RWRnQT54PjNpOlN8ciU/dFM/aH5M'@; put 'QD1+KD5sJG14Yzw8MEVfRSQlK25zd0BiWko6Xl5RTUdILD0/bS5GPWF1ckN+X3c0KjVoSD45aHpAMjU3WTBIbTRMQk47KStsbXU9dFZHZklfK0JfRHxOSnRTUXpzdShjXiRfQDRCLnA8b1NCa10pUCFYYlc1ST8uTERCVFI0MXtKb3I4WlU6SjtvdS5GQyRMP0Nec3VxdGlIYixnLHteW3VQNX4r'@; put 'NCVESU47MmwvPyxzJGZBWkc5P3JTeHg7OnZ4W1tVPDp4Oyh9OT4+TDkqeGpVbml8JTAvTyVrKm9qJl9FWUg9N1pRbms3c1tlemc+Lj5Ad2wjTHdITmNIciJ1NVlnYH1yTnYoZ2kxZFdQY3osOXtWRUF6RDkjaXtLIXJTPjN+SUIuRFQpVFc+dnwpTil0dmU3OzMkOylCZT9gRCFxTXx9W0pSUURU'@; put 'Nn4wfUtNcGtTNE1fR01HaURaT2ZFL0AqR2ExKyZzW1J8az55clRfIz55clNuan5OOU0hQ2l0eUYhWXRCRzk4OjZwKjJlMjx8TD99ZGhiUClYel1xdCkkZm5Ne3smLmd4azFiPTFwLkg9P2wkaFtIfXFnbjo7K15lNVNBU31fX2hhTi9xfGQrXl43ZjBSUGdjQlN4dyoucmFIfU1OaGJJIW8lPFB4'@; put 'fnlwJm9ZYntnSj43bzNBWylsWntYQH46dloqUzB1flJBPnFefH15L2goX2lIfHQpUD89RFghWzxLayY5UClTc1h5Vi55US4xKlBGQiJVPFQ6fWE1ajFeX2U4ZTdIWCZwfDE3RSJVKn0iSU18SVg9JE9xRCVyPWJGaHEpInFaaTgyZTdJJG9IVV59KCx0QlhadDE0dWhyQ3A4eGhlfSk9PWB0PCJ0'@; put 'WyZJPls1UF1eRGdnfT9LWCZ0KEYyMXI6OCVqUjsjTjI9WlBqdiM6X21DcExrLiJ5QClxNzlEU1dTWnNFSl16SDpgfTs4RTIxPGB9XyF4TmJfK1ZMcGssbmhlN1dpZWlyL2FMOEdgckdEIXZBVmhfKCVhe01qVl8mYmN+eG1uRjlDfUNjdWZ1cDRxYE5KfCw/YyZvTkNZRkR8QW82X0BgQH5qbEox'@; put 'dFc8RUdQPlZiKG4ucUs8IWhgRWFAXmQ1WDtAOXVGUnszS1p7dkBlRU92MSlhaXVlfFBKdTMmTHQmfDw/Nj92d0deU1ZyYGVgXXRVLERfUHA4VDVKeVRldnZEZi9BdzdCNHxEN1Ywc3Q6WjB8eTc4Y31Ve1tYYFE1aVhqWFBON3o6SUxDXWwrKV9WPnloQ1ImQCl6cXF+fEtaNy8hXVErVDhDOmBP'@; put 'dXV5QktVaXIoNyp1dnx+QT9TdFp9YVUlcCNJdDBaaXl4V3BQMEFPSng+PDh6PWI/TGgpPk57eXpCKX1FKnM6Xj5xKCtMc0gueGkqWTtCX1NWLH43c0A7OWIiJDM/fDx4SD5saUBWQnxpU2tSTCJwPWI2L3swPmZnQGxkbF0pMl90X2t8a0JNKz5oQFBWOWJuQ2hlSCwvdUVBWkRPMnY4SG9kcFF9'@; put 'YGI3fC46aSZHcCJIKTJ4OFdpSTlpJGchImYlR09tZGN7L1RyOllXTmgyWkFBQXVXJmE/QW9JZ2N5InxMSyp8eD5PUSEhfEdPdihXZTVVbXgsLChAcWlOLCRJPWloeEFBQUFBQUFBQUFsQjYuXWYrZHBGZmQiWlJRcmdiLykrXTkybj5WL002aU5oZWVZeEsuK3I5Zl9JcmorWnYsT1ZKOCs2V2Bb'@; put 'aFpdUyIrYnVIc0tiLlsuLylKd2kvLjMqcGtyfjZ7eyRNVX1mYjMqYTpYZU1LYXpvUXRnMDtgPl0lbEpLVzsjKjRyNE0xcGZ1XSY5UnYoe09aOmI+PztXLiQxcG8yTiQpQnVlV3VNT1ZeLmRJfXA9aU5eJnF9eVAhZHtXJmRINlRUe2tSPT9AaT1aUzs1JFZjRUE6JT05c2UmTHNBXT1aM3w2RV1Q'@; put 'Qm4pOFBiUCx1ZUJaNntSSjFEajQqP2YpNT0/WntYIXMwRCVARWkvL0MoOEZdUk06IXB6eHVZVmROcHchZClzTCwoQ1o9Ml1ffnV5eilbMCVMKTkpSU9SJWhmcmQ5SihoY0l3ejc/VHA1e1RIZGgwXjNoWDg+Wl1tX3ZGZjUzc1daOjBdREBXOys9L3Z7WmssX1ZCTCxxPzE0MSUlKyVHQj5PeXVH'@; put 'SV5FZXZMPlAsXlc3fEhvP0x0TiEhUkhkZjhCY2paNTJlcUVoJlZYNmk4YSR8KjxCLEgvezBIKyp9Pnx1cVZvZ0ZCbl9bM0deITMod0MiTGJ5YGhAZV1ZViNga3BYUDAuRj8oTn1nP1ZTUX0+MTdgfGBoKlMwVmhwTCtVVWZVRWJuVHFkYU0sWFRackZ4UWwxV2VqLDxyOk0xQD9gU20oXzhsT1dy'@; put 'JGJJOk99K2t3dj80XUNTRTllOD5rbTssSSpgOjtTWVFJMk1XPGpxfVo2PDk4Y1ZpPnEmWlBsOTFtUCt1MkVTUF52USo5Ri8qVUc9eGQ3X2hORntvQlQ4RDxTNUg4XU1ZNDEsYmR3fjhiXWlMMHoyZUR2Kz4hWF50fUBMdSE3QHRRKENVTGhsbSU1WXhveSRdP3E6Il87eCpQJD1tOTtiR3kvVChp'@; put 'SEMxZ3dTYytLQ0t4TTxNXW12QGNLTSxuO1JWKmAyMUVsUTpwUXp+cm9RbCEpXVhycVJtcm49aEIzOGRxcWo1TmxkbyZxXTVNND1IJUlgPCo1UkhbMjIiZD83emIuXWVGMXA+L05wR2s5WlJZOjErOW50emRvL04ycWE9cDgqRz1ZKiFaK09HMnhgfSthSDJNODNYVTR9bVdnMm8yXlI+L1dkOFhb'@; put 'cmd9Ojp7ZGQzVCpDdUo0LyRgfEgwaUVbSE9FRS4iZC50YyQxWSYrJEVpdGx3fUJAeTl3Q2cycyY6WjxFcUR5T2I8X0huTW9SODU8NzVScXhLNVhVOy5DT3V9ViFYPlB4S2R1Jn5iMm88UDx0Q1kqTDQoSFJ9WFYzLGoiZT08U0w1JHJNWCxiSF0vM3lRc3R5dFtYcSZHMUFkbmZVMXkpc29+MVVZ'@; put 'UStoPVp1flsqdCtscWo8ME96aFJwJSRGdlswfihfWnxOKyV1Xnt9V3tmMXE3XiZfRHoiRk0xV2E1MCJzRjw0Iz5bdE9vUnFAeUVKajdhbCFhOTlCPHNkeWk5S2ZuTX07KiN4PSsmZC5gdURySmR4aiRVLHcqJEpOZ15ZPF4+XWlrYCV8aGZWdXUxej4iX2l+MWx8dzpXZXg1WzYlIj9+JnIuRlsh'@; put 'RDNnLm1Nd1Z+bV5TPyZPO1drenVvMGVaJHJ9XV8yR0ZVPCJjT1VYSGZ9XyV4NSthRD81WikwTyIjb1JURyFLTWRXJHEiMXtfJH1OfjBaVDZreWp5bEJgLnVEUU1raE9lMl9WMnNFWzl2ajhxYSY7W2RJRkBBQGJVaFJaKjlfZG9ZeGlqKX5saC9odFRyRzhQTDVVcCRRcHVFPjRNPjhyT2k9WTN+'@; put 'RDdgUU5ebFY4M1lEeHtQYlg3cGlLc3dseFQqOUB+dmdSOihWRF9YKnM8SG40Km14OFVYTiYkdlUkJikqV3FqWmZDIjtsclBAT0pGQFc5dzpXcnBid1R7Y1dPN0lyJChgZn02Yz9sOnldOEVpU0QvJS56USl8JHB8OXRRJTt6UW8lTDJRWUh2TjNgZzJIZ2pdQ0wmMVp+XSkueUpqfHk4QGNMdj9X'@; put 'KjpVP05DZFc4Yn5ldFAxU21kWTEqfWZ8ZDArRSs9PVdeNXR7cU9LUCk6dV5Rb0RfY2NJdzRhWDJDSzQoU3RBU3x1TSRyPSRHSGhLMWxJM1VmTzhvJHZJeFpKITA0KmRZTH5AcTxYcVU+dFNmdSMsWERjYVVZd1EjLnZ6PlZHRFIyZyROOmRkWnVoM2A/VntISzJGYWgqRGpZdS5uelBuVE9DKGtV'@; put 'cmZhQFI3Zj5GQ0QxNSRfal9QNVZCdTpWL288T2NLbGxEeix9ejc2b1NXV1l1QWYpO0QmQj18TE1SSSt1KX5HIi8hbD1pUloiJCtVNGlTLzI4dEZmU1lPUnR6RzB0PCw6T2V4PVVWTG9YZGJ4ZDpEKHQ6JHtXXi89YHZKbVdoQVU0RXlsYFUwPSNSM0pjJiQsMjJPWEk3MTlQNHB3RW9edS5UJSk4'@; put 'TXBzdHwmcUwzZH40VWd7YUxxaEZdWHhKQ3ArUGQpUitacmltMWhfX1BvdldfSzRyTUdPT2hNaV55OG9RfkF5Kj9NJXBoeVc+L1BvSjFOYlpeWl9YOHwoJSpyN2BYPmt8YXB7d2ZPNUBCJTdVW35ubH4yVUQ7UlsoZV5kWChlaUozOlJQfTMxSCxQVXcwVkx3an4kWFtUMDE/VDpZYENyMThIWTFD'@; put 'e341OzF8Kj8oYFNCdW16TDFga3MqezQyJkc8M20jcl5wNiFVVzs6LzUsN1BAenMufmhCPkgpejJlYyEuWnNnUHJeQmBkbyV2ZCpYb0NDZWZvKWU9aixXWmhdQnJyUl9ISWxwW09zaiwzVS5LVmA8RSxSfjVsfkJgYChjKTEmeV56UGB5Ji4mZCMpLjFCbk0mOXZMKkhiWC5CSz5GayNUUll2MnV1'@; put 'd0k8QnFpNURWLy9fWXBQcClQOio7IWY+SlBmK3VvZzR1Ym1SWDA3TT92eDFpY2lSPS8lTllhT1lUUkQkVn08OEZNOmZYY2FOM1glSnNIeHJpeUVvOWc/ODd7eWIwPk9weU42ZVRhLE43JCQxI0xoT3ZkR0Q6NH4kTSRLYi9lZkJEODt9cm5SPUJSeHdGODQ1e187ak9LQFgkfipoL1tKbC4yViU9'@; put 'PklEc1ZZKz85JjkoVCsrNHUsbEt9UXVOeExkYj9iYDR+Mj9tQGA9LDdrKHolfltbXXF6T2wsdSplWkZfJTVpM1lrOztWPl9PcXVwOi9OP3ssUXBdND08dHVMVEkwajtZTGx8PkEpXkh4OWtQUkcuJE1TZUVBR1llWUxXPntXfj5uaVRKP1lZYEIqPm1zfUk8Kl16Oj5dd19nMi5jY0BLcCtdeTAq'@; put 'bT8pW1VUfDFAMiNtOzVBRDlJcE99dlhBSl1BZWBBdThLTT5hV0MpJVJ8YV47SilGPVc/NUVqWSNxOVM5bjV6ZDM4UGdSSjZBeU9wOzsxfltxL0kwVFt6KUpddX1fYCQjfGxJMC98djZNZzV1NGU6U3FXKlU/UW45YylfeSZXX0wjUVAoeGhGXzJpYzJRdnV3RD1oZ3BZRWpASyNKZTdXPCpJcnF7'@; put 'W3goIUZVVDdtcSFUSlJMaDhXVVY6M2Mhd3dzSFFrZlMsNGdpeUVOcWBzVUJSfC9DI018QHNSJTw/YUIhVWl1fHZZUF0lUzpwOEN6Rlo+eStheEhlemtXQTRVY3RxYjV0MmV+bHkuKz5hO3Q9NFBIfmAzMjBHQXImTkQ/aD5fZjA4fWZ7ZVlHIzt9JC5eP3V7US9zWHVFbThTPFR9ci5rYTIib3s5'@; put 'enA8dj9ocjB1L1AzJmlNYnMlWT46aHZjTSRONXxoMlt0eEdzJWJzcFgyTW83eSROIThvUztkITJWI1hdTkNeMVheOTBEcHNLe3FvOUg+KWU4SVRgKVJtelBdTVE6STNPPDBgQzYxQF9APXdXIiZDNGp7TzsoPHZGQWFsSlJZZl9LIiYuYktAWSptRjtDYH1lVHQ4L3I1Qk9jQ3FjVWAvQy94R1dB'@; put 'e14uZnRUZTp2bFldVD45PCoiVChRJj5ZZitEWFA0fjFHN3Z2ZXorIUQzQyxLanw/OSMxPylTOWhrflA+cyRPfTNydVZSb3hzVitUajI4ciVQKj9xbzY/NTR2XW9vNi9+Tnd7OTNAK34+aHtYRmt+U2JHJmwmeVVRUWpqXWtzNEg6Ni41PlN6dU0qOE4iYDBQXyhUTSplNEFWYCJbIVMrdzBmLC87'@; put 'NHFfSnZoJS49STR8ViJtdjY+Xl1PQmF5c0xWRDFnelN7RUdEP213TiQ8SS5rMjs/V0QrP2cyQzVHMEVpd3FWc2hvfUIwU25gYyt4bzVnIUtVTzs1YHhgNFUsbT4oKEBge1ZaYzN9JTNuY3cpcUZ+WERhQmRkZm9NeVhNdDZIdl5hfU9Qc3JTZjRsVHxXa0wrMipFJH1yaCJDfjE1dz5ZJCNgbmph'@; put 'MVooVlUpSzB0LlUqeCs5dGEqYG0rOXYkdjRbWzcwYihMNWhDTm4sUSpxZnx0OjVuKSk4Z31iUFR0MzRZKGA4L2haQGdudCZtTGheYT0pYjk7V3RPYjNLeUglS0prbWI5RlJxLyhCPEg1KXJlXj4vZT5mQCxKOzF0T1I/L2o9X2I9Lyt2JCtUTTAzJWlGQG5MQ111L1s8a01ASHptdkBvbms1X3Re'@; put 'MVVgUSlXfUN9SUVYWzQ8UTglSD5Ba3BbTk4rK3JmcyNwK3sleSp4M2xMOGUlVHcoSFpLOlliTDBWVnZZSkRfSkE9VSw+eUo2bl85dHdXdEFRbzYxZ3puQkZjUGlGNGFLJGdpa3xma3AuOEd5QGF4fVl3OSEmPDpoe3h2bGphUzVzNDd8WmZFKkk6WjhycWkpUk83JV0ofTMrey9zYlsmUiQlZUxF'@; put 'XylZWiZdQ2lMZVZpVCxQTnMoI1s0IU9hc3IvbW1qTzB9InIxemZvX2M/W2h2Sm9FZWpScW9mMDVKRnx1Li9felhlR2w5VzJQbVglSUBST2A6Xi53Uz11JEQ1N1trX3hSS0V9RW4oOzZnJEFlVW1xRXUpSUZkN2JWaVZ6PmVZall7bU9KSl5xb0lNX1s7NU5XQ0RhdmsraVBbSC40RThgKmUvPjJk'@; put 'OnNiUm54OFc9WjIzYWw1UyFNMCl5dGxnNHE5MXFxXUNvOlNwO3ZPaV1ldj5uakV3eXZtT1JySURdeXt3OD9lOTp7YUUzOCs0OmguOXU6UDRdRlBjS2g3TWpySVZebm13dVcyanF0alpBdkJ8Qmozakh0UyJfRHBacCs4RG9adHRvaGRHRF86RypwXUFnSmdbSDxXYTFZL3t9RmpfNHh4YXZ0Z1N2'@; put 'YWc5STZXe2U8UmAvb30kKnVpV0ZhMSlFRmtXPUpZQF11bWlDSXcsSExEeVBhKlJfbE9CcThOc3BrUktWcWJzKCt5P256YlM3OyMxfjd5aV9JQUUmW2VvXVlmK1d7aWltfXgqZHBFI0VZZmwuU2EkQ0wiWitGeG83UWM1R0Nicitue1Y8OX1+MUc5eX1yWSl6dHM0VW5Ha25mVktaaUYrIXk2RFZw'@; put 'UiRbbyFsMF5tQWU7XVFJaklrKUhpbCVeOE99aD9JaUU8TD5IMmY8Y3BbMmZMUyVbMzQwP21icUVbci9VYXE8Pl9+KVd1dVhvazI1OktAX2ozW1t8eEoke0g2PDEkLyw4fDo5IWFFez5abEFSLHN1cnd3Ul84PmJtVS8oKDhWM340SEFhQHFhfEg9NCFUNC9vKldfSFNxPzlAO0BFRmpuU3p5U0Ys'@; put 'V3kyZj0mMyQqdlhAeEw0VHVFLkVAVDUxOVksNG47eWUmaEhIS0FWNyt8QD49aFJvKkpiKGxTaENneDZ1Lm8mMmJpVkx7bno3YTl1TVo6dE05aCF5X1g7NWtXOGx0OE9OQUZIaE5MQl8xNkp3KEh8OHo/RUtNOkpJUWJfUDk+R3FKNjEpcVt3KE4xWnVgRkRdUjFJTjMyM2ohfDRrSTtASyRAPDY3'@; put 'eTMzJjUxWVNFdkRHejJzRytLbk10KjBGPzkiXlFNKUhQW2Zea2ImUmIsOkBGKilvaiZvTD0vOllYT0J7JTI/NCE0MXx+JS82MitTbTlbIkZBaWZqejs5a2RFOzRtIjt4TWx+OEo2YV1HOFRIISt5cH14eU5RZEA9NCM7MzhrOk9ve18rSzsiUFg9LitUWWhRTUJSdGlmaElpUyVGJlRlSGhXdkRD'@; put 'STRDUDg+blo2K0Z+cmx2Zlg8Zi9yYj8mcnhWSHhDdDowSE01fHhBVSp9Lz8wYVtfejRAIiNFRXNjI3NzYDdNInZ0cyheIWRtWUwwRGVXZXJnQmpAQl1TOSYrdUhEY2NHRWdSUUBsQk1qU1Y7aVNXI0JUT2Y0ViFZLyNQR2ZsdE4uNylQZzZkSTVEaDd3fl5qK2VsTTZKQktDI28ib1BGW0cuPWt8'@; put 'bERgN0pJeStCV31pYTImWnF6MlhaRD1AR3lEQjRIZWUjJjM1LjtOU3d9TSo9VHcxcWNwSDZFeEwqZnY3TUkpO153XiFnUGN5Mmg2KHEoXUNnUWRjTzFxVXslTHxjVytddkR+YjFJN3ksP28/bWZSL2luOmhSOWdMOl1Aa3lAYiNje1M5M2BtJE5uL0U4U2ddRndhNzRaQWNeVCNNVk8mT0RkNlpV'@; put 'XkpKX3VUQCIhOjBacCZFPGk+QWRTZkR4TiJaTkpxKEM1bUYpTzNzLkhEdmYsXmtMcyskX3g/eVJwPzUiWlgyJU1XTlAveEdbfjJJU0BeblV5OWJUcGp+XjVZY1lMcC5KayUkOmpzIjIiSGIqd050JSRqelMifHxxTX1fPE1Te218ZVlmQFM1dzs6dUo7TCJ9Oixgc0JkY01VO2g8MSRYPlpgVn1M'@; put 'RjRkJHNGSH4zNS5mYEUyWFNRRTBCeCJwQjY3XlA9WVo8QylAcnpIMTdjSThxSWJafXs+bTR2W1FyOEk5XU1PTy8hR2dfeWV+aG4vTH1qJDdoNHx6ViFpUHk4XWE0UyhjTjBoQXxqIW19U1FORnh1fEolPXRSZGQ+QDJZfE42Y1BzSypwV09BWCZJa25VdmJVaU5eKVFbJFp2XUkzako/eX53OCFt'@; put 'Mix7cE5JUkwqIXErWyJ8O1N6VC4xNzY4c21gLnxRJiwxXTxWNDl8WDJxfTZ0a0IjYiFMQFBvfTp6N0w/MkM4OlM7XTR4RE1LRS5CdTpMcXduW2JleWguUTpwJDNdM35nfFd2eEk2WTRuJWJlXkshQlMvZSVCMFJHZ059aVIqX1t3dX5daEdCcj5dNk1UMFQxczslJDBsQE9SeXEkXVBPSCRiQCom'@; put 'OHV9bW1xZEN2dFZpb1ttPjlbRVddPHBAZkRjUFNVcy47fl5gOkgqSDk4N0M6cEU/LlZMSn5RJX56QDZDSlB7X2x4LyNvV35LJUYje3k6bUJqNy5BJXxZPmgpamk9fVhidzQ+O1c7OGlEdHUmZUQ7N1k2Q1VxNiNCWDNYejpwSU1+ODAoRFNzRHVtRWpWNUY3Ok1aZkMmQVR2cG9ITVsqU14/K3VI'@; put 'OTFsJDluPmJmRmA+NUhCTj0/Xl5VRCpDRWc9cmpaRHVwT1lnR0Yzb1FTQlpAJG17W31DZ0RXeHgzOTxXZ25xTnRGREQ1Uihjc0Y+YzdabmFrM15CMjtqTEpqdWtqQGRBS3wveHQ8Q2E1anspLzFpfmJtfE1VfVtAbkl7b3Y+bEhNKG1gZ3AqJnlkZF1qbGlmdHZOOzghbCZLc2EjZTtoRlNWbWBC'@; put 'OHZOcH5RT2Axd2tvZyteQV9VfjVERUJkRiVHfWtMfUBdTiY4JHZlUmwhUT5FIjUlbTZqKU8yTT17dlZENExaLHxYLjZbNUFvSDVQeXJ7TFQ2IiJJaHBZVnRvLkFmUSQ3UzZicTV0QWo9Z2lANSxWISwvX05sRExxKHYwQmROO2RbQVlqeyU/LiRWSyo5UXokczlqI3AxT2VpXmFkak8iOUxAQklj'@; put 'cnxZTEV7L1NbPGJ3SV0+PyYmJEx8YmJ9cTMwUVlVRzZEVi51RmNEfXFDXmJ8ZV9taH5PNDorRXdleSkqUnxWKEBCLD87SzVjLnx3YCh+blpmTm4kIWA7Kj1SSWVTNkI3KHszMlNTeyhXN2BWSnxqZnQ8PTFSeHk2aHQ8VFMvXWNEXVR5PSQ/MmsxcEc1dzxRYH0rREBdQ3UwQXI1Z0VvRmQ2Y3pg'@; put 'RjtSej8kYmU2NXh9SiVJUXFsVGJ1cGxqQVU4eCFtRm1nIi9CKkx1Ky9TPG48fSU7Oz09N29GPSxLQ28xbi9adkh2ey8vQDh2XWwlPk8zYTlEYiNDPk5fb242T3c+fDBDbWZwO3JYeE80JExvIVtXeGs3V2lJLEJzKVQ2I2xZbzd8SC44ZG0qSDZILmpNTlZkcEwrOW5eeGE/Z1Yxe18yOEo0JmA1'@; put 'I0pPIVZKYiFHd11fQ1dmd305KVYpYCVrJl4/S1k/VFR0UWcvXSEvL3UjKitEbyQ+NCZjbltUQ0t0M2p6U0pSYXJVWEc+UjYwWzclMTFVJihiYUVneURqWFNNXjVrVktyTUZpNVYyPE9BbHs3TkdrKztmPmI0OUg+V24waS9kTj9ZWks/P0txYUEsNU1AdGl1ODhuNGApcnxPP1BBUV91P2A1OWku'@; put 'Un16dDVYVUExSU42IV07bHFNaGt7NCVKOVtDSCQ9REhfNilSSXJnKWExUFY4UEVOYVYwLGE6Z0U5Jms5YH1VV2pKJmJlcU41IzBPK1QqRX53UGJwZTNoKjZedlU6PXVKTl9PUUNdOzczTWcrRD87K11gPHckeixHSyRpS15FVzBmfW5GfmR9dDJzLjA/c05mY25IZntDdzc6JVhOUCx2YTRjS3kq'@; put 'Z2c5KnNQKDNAYER6M3VHYG0sI1hfSTtiSU0vLF8qXTJTPFo6Ujw9KytNdDxFWS8xd3Ihfio5MW50UGI2IVJPYTckTyMseUo5dVpLdC80WEk5KiopIT1Qbz1Icj1JTXZiV1F7YCRKeT5jWHFKSyY0P0RiSVJ4Y0hDTW5+I015RzxXNTtiQ2J4IV10b0BdMSY5IWR8NE5mOSoqR0Q9d3U6Jk41ZyUj'@; put 'O2xaYSw4cCNiZ2REOlElL0g0Rl46cHFOIT85MmQ1PmExNEcpO0B+aj8sKSxReSs7IzgzOUAqdjNqO3J9bz40biRnPnByO3p5eTQ0PTI9bEJSNT8rbGppO05KLChUTSw0V3oqNiVGL2tiIUpRV3czaFd1THteJipAIW53RFlKfWcoL1oxbGx5UzR5XjkzM28rKEBkZEFjfEZlSjxUfnwpIWQvKCRY'@; put 'akdNXXQ9XWR0Qzw3ZWwofkgsOXxfSD4paFo1akAxZERWJClqbjhrS1BjfEIpKkNaU185WmoqemooZSJHKUM4W3JJK1kxdm5iO01hIVQ5REIsajgvYz1dW09uP1EkSW0wPVhtc1BKdCojPVBlZ1ZAc0UvPCEycmNBTWlbczhXRjg7L0M6RERhaEk5a3sqSXcqZHFuMl0pZColM0d8TTQrMUYrI2kl'@; put 'aGIoMXFAMlI7d1p5NkVBMEhUKW06K3REd3wkRFZbIUMkdyl1VHhIfEgzZG9uVWtjekdRakR3Ik5DYk1MMkNFYyMidXo3MkIuNT9jNStHRVhzeiIqd2EqO3t5aDJtbTpYeSQ2ejNFUyIoZDppfkoqQEl0bTp8UHksRDR8MS9XPXQ1KmJxfUtQLlFOaXRMSzFsWztSS3tsQV96TV4+VkRJI3hVQG0v'@; put 'dTMqaVAxZFdUYnYqOllCKjVWcV5uPzJwS31RfkBUc09acXJ9QWVZdSkhS1NOalZwJmJla2RPVng3U0t3dFdlQ1FdU11YJmpXYGUxeVV+UFNNciNITUx5fFA+ZSh2ZUwsVUdPbk4qc0RKMnhCO0pXU2I4W3c/elAyVSROLFtqWFtKM1QyS1tIYX1OQDpQdGBXWDNaaCQyM3FoQT4pJjlmLDlGJUA1'@; put 'c11iWTx3dCxhNkhLL0d9a0k7aSNpYCFgSygvVVBCW2EyXWsjb3hqX3FoJS5CTSQhQzN2UHk7NlFeTGsydXBmfkk3TE0hPWBaenwqXkk2WGV2T1NrRmJaYVBCK1NAfE1CSyZkbWFGajouRTNXbWpeUCk6SEF0aj9LbDM5b1EpVF0iTi80QG94NnljPzNvPWxCX3p7W1cjSXQ5UGBdUDxvdX1BSj1v'@; put 'eiJpc2wlTzN6TERPKlEoVjMldl9+TTFxdjVAMV9xZGpfOFhqZl9NTEtUNys/Yj83M0d2YnVHVD4lbF8saCJJWE50U2praWFkW2A9W2VOS0ZWMGs+O2FWXl90V0RPVmpYO31vS1B8V1NZS04oaFVrREZpXXYzSk41ZnhBKi8uXVZyXXRfV2oscVYsPzY5M21qbSNuYU8+e1ZURFVqU2B7O0h7bj1+'@; put 'Zzg1PXxnW11LYzNfVm44bm9HLGJkTWF6KEJeWThrWUZaUUpAUW55Qlk1cj9CSjpxaTFjZitLblZeUTMzVDFtdUlMSSNlfHJ5K1BLLzZNZn5hKFlnUzJMO1pqVXNRX1RqNEQ1PXBfKmwrYm11YGBKZDlSUTBuSSs1KS9pVWJpeWcjZXE6R3BoQTp7VXNoK0UoYT9EMjRyaGRuejthMGc3aVpoU1VI'@; put 'eU5MaiRlOFRddEZITVNYaStQSyhaUXc8Xi5jOTR1Q1dvUC92VVdheV5qIz1ZVVswRFJPckc9TTd6VFovL15faGk7eyxVUyZ6WX59UmVkPkxdTUJ+OGpUZSE+JnpMS0cwaW1PWDxGdCl0aDs1P3U3MG94ZUN+V2k4MEpqP1RCSmslJmQ5TUdTZEViUUgzViNoMFBfNldKSyJLPClLRHVFbHNHeHkz'@; put 'US5HKk48cCkiVik0R0lRW0c1ZyMiQk1jR0BSWWB1aCU6WEpubFBSN31rR3ZNJkVBcSMrflRXOCk5WSpzYEwzLy51TV59ckZIOigqbDFNfnwvdU42US55Tl1hMkRiRDc3SEslWF5scyg1Qk41bHRIYWQ1bihvekNUS0ZzYUxrIkY6aCFLfXNWOFJRRVE7U1B1MVphO3VyX04jKFUue2V9K35dYkAv'@; put 'JD94VGNZNS9fbToxLyg/fF9HYTB8SEohbkJGandITEwwZFNpJT5kPmtENlFXezZ9MXFHXUYoVzUkLDEmOGpOTDBHJUJ5S1UiLmhDL0prYCw3LD1jNExlam8mJX0yPiF4UFRVdkM2dXB3SjxLelFAbk8vUSNmfGFGMiUhciguP3pvNV97cThnZCQ/QkIoXi9YRklgZlt5UVJzYWNvM2tmPkw9KlNf'@; put 'K1hgS2p2KlYhU0d5dH1wZDhaYy5ZbHlNOmssVGwkKClyIXFkVFMkUSVwd21LL2tZQkR4SiZIVl5LVD8wdnV3VERxK0k8TT07N0d2eHZ7R2xtVDpeWWlwRFpNVjk0Kk8kOyNFO0RnR3tjdl42PUhwSjMrMkZtVSpwTmc3bHJ2O1pvYixxOSVNaTlKOSp3P1AzR0QjNnwqdWNVcj9FOkRlJGcyc1R0'@; put 'QzRMaClxR0klMVsxYkxhTDdgempMZkl0WlV5Iio5P3AhcVl0S1BqeGYvVlo8enFidkYuUi8ub30xJS5RN3Q4cFdbVkFxLGhJTnN1PD0pVzM5Pyt+P2pDRl5tQ2tfUjk7R0FpWFRLTl4wUF93PCFyfVovdkw9WjNGSyNHVnAoTmsyaT5ZWzlCQ29FPzxDKHVDWHVSRG5vSG9kQTg/b2FUJF9oYUgw'@; put 'dnBCJCZnQkZmZXRydHJoLGd9WE1nQzc2QWZMV2dud18jJTw5e1c3P1g3NEhFYF1kcEh8UVZYR11TNlk0ZC4vXThFJWFMZV5PJiFQNXgsXWFadUR5MDJVSGlzPDNyelFbMlFQWHlEQWtyQyhjM35XbEFLSmZecCV2MTgxbkFXRHJiV01xak5NWVtaIjNGQ0lWczZvJmBWc0gkPz9sZEZtaT9TMHsq'@; put 'L1VMQEZxKGgkNUJDay5VLjMuKnZ1LEAhT2xxcHFwNktDcGVVVCYkeWtOZj5nKV5xMXIqO1MrfVRDPCx8RWgpK29bMzt4M353NjNwX112JkQmUywmKXc9e289fkNLS2V4bzxiTWleanYwPldkLGw4ayRSQzx4OFpdITQzQEJ9Pn08SzQ6JGNxQFBsa2EsdndAdUNUOkFnZkZ4c1U/SmlyKjhUPCF3'@; put 'LFE+KndnIitvXWl0JCxxVT01eyRRbylwOFYxbStUNnguMXBVYk1NSyJBcyxxc2BUfiZNKzsoYjZicVtlIUpBTW5QUkcuPX03NGt4RGllJXRIUnFSejtibkhWXjZwKVBOeWR8TTtjIkR4R19STmNafiJKWzdIS0FmaURhPmFZSmAmJnZ8N3ZZKzhaMzVWZV5VPlkkezBuTzFNU2lUPDkrejo8Wz4v'@; put 'VFNJb08uJDM2eCNZJmh9QzQ1UStXZFVIJUZFbWMubjI6SmpsQlJ2S3hZdntEYEIjNEFlY0BDYXxkW1BZTyN0V0VjVi9YQWlOeGBQTDY8YkM6K0YlbnBSVyg6cUlKQyxxRU4zdmA3ejNQdUEzdnkjX2B0QlNqez55REF1bEljOVhqeUJtTFppclUwPTowPCEqQzIzamF5W3J9XykkUFAmKU1fd1B2'@; put 'ai5WSSIzcGZjL0ljMUk7KHF3O3NVe1MxTS5+KTBxLl8hWD9nQG9lOHMxS3lMXXozckk8KzVLaVhZJixhIjpjdnt2VTt6XVFaSSZ7X3Y7U2EvSXZPPXY6I2d0QUt0O01ISiVhJVt1dTJAeDx3VUl7LHc2TmhFLm1HME9gISh0KDJuRT1uNDt6SGl2O2hfTmMqdl1hSH1ddDhpXmIuRz56RjZFeiJ1'@; put 'QGArfmVPLF0/XmFLVjhZP1Y1amFQUmBBYXs4Ki9lcE9ZVktJQSs1K0ZYJF4qdHFKSjhqY3tSSEBMYWx+MlE4fEdJRSw/T0FUYSMxNXZBSXlId3IlVnRTdE1LS11+JVhCbDNbcnNgLF8yKzlMSGBKbV5ibyNbP1h5RyRQVXA6b19tUUYzInYiMSxwNTR6eSkuPjFfNmM8YHRSIUtjeUNuJWZnJVov'@; put 'UV5sX25uMFkqcGJoQ0B4STxYVU0lWlhNQWx0eEVQaEVrLzljMiNWUzhiKF1EJGZSKV53VURobnFHVDp8dm5gfUFFPmApN24oUHg8PFE6S1F2MjdkYDsiOC90RT5wdm0qTjsyJE5JakszU0ovKVlWZCxhPFpkJlovcmReP2V+dFc5fWpzPWIleUQ7RmNwLCJRfSl8YkRnZFJPYUo5JnhNcSYhUiJA'@; put 'dkgvVFcmckFufmpuWiVAS1lnO3h9aWJnNDkiflN8TDNLUjN5PXVhbCZGRyM5b2hCOWhhdHd4R1IrP0gzb1V6cChPSDM/QmBSLjd9X3EhPjJaMFgrTjQxImJmSiFDdF1KcT9ueyQqY2xRVkxIJjN9WV1kU000S2MmLF5+U10hYDh5Vlk6TV5De3o4RG0wUXZSJnpaJmIxcDBkci5GZFZDbVFsZD1w'@; put 'P11LWSpkaGJVYF53SSg8RWRhNVB5NkYkPk9CL0FTSHFeSFJXPV00bjpMMCZufUx1Z042OmJkZjhEW3s2NXZmW2pyaF1IV3pZOUVefmR7OEdxbmB5N0NhQmpJUixGbismJj1LUGhLcko1YWU1Wk4yY0FaIyVsREsuM34uaERZUj14YzphazghUDhoZXE2YXxMS3x9XjxuZnsmXkleP3hpRH55OyI4'@; put 'YEJLL2B9bypSWiZLX1EjLHZyREZeZTRlRlQwRG1Ld2UjN15EJDlkeiptWFswJWtuVXVxdl0wbFpJcU01KExnUkp1eSNIW1taVEVQN3trZzFoW3MpRlE8PTFVJmBma3wjfElLfjNTM0B6b3ZmeDNKOXd0XWVqUHNwP2UwQDBhYSJZJnQ8U303JF1MdFY2ZVgwYnJmO0U0TV8vWkY2TGZ3Pz57SSsy'@; put 'b2pwZT9LZkwrSl5GTWBWdHc3MWZOQyhdUiY3JFFCbzVXOTltM29TZFZwNVE1YCJyQnVZV21fKXgiR1hdVkwqbHxuPUlOK2x4L3N+RChXbll8MEowKkR5Zy5qek9lfD1AclRiQEcoRnVTUlRWeGw0RkhKPm5fPGxIZV48MDxSQT41U1slJVVSamRZc3FEKSQhWH47YyxmWEw5NXZqO0Q3RD9GYHJs'@; put 'MX5LK0VjZz9oO3BJIi5rZkcqS3xfQGM/fFUod0taKWQ6fjdLWDRFMXZDaF5SNGBER2tie10kcX4xIl81dXBTc1NhSzR0N1I6an1iYVFBNiN1VC5IRm9nR1liN3BjV29RdHc+O1ZsMUs2TEJgNDM6YXc3bFFYRjc+WyxLO2tgJDg8T0leJXNXbEFhZiljVUFVXSZfK3ZXMj4sX0JKSXN+KnYxRjZV'@; put 'fCpJOWdjYE88N0Q7KzZfZ3MxZz16X2c0a2ZXPU4qJkw1aE4ldVZAcDQwSHhdbCo3ekpQOjhER3JObWJtZ0x7bGdld0VAO0hidjlIUlQmYD5QJVh2XiI3TiZfW1sqKC9IVzwoUG5tMTtTOFV6aEYzOzMpP3F1PkVJVnE7TWZaU3twP3BHR0NCNiVxI1FDZ3NTLFU2RW9AXVZUeW1MbSNtR18mezY1'@; put 'U0ZkYSRKMEdKZ1dwNF0jNkdgZmA2OFpIPSFQNix3YUUyd0Z7RTs2YWlHKlQzNypOZygldXdqP01LclltelFvUXo2eSNrfV42LEhTQ3NhWUNnc2hvdUojeTQ0Sz0rOXJuPF4oXUVVfkM8RTdCWldlXzx3Ti5JWXRVSG0/bjlmMkNpZSF+O35BK1IwcFZNWnBzL11HVCYyY2c4K0lfQEQ+OzVeK1Al'@; put 'LlhTXl10P2M7byMvWWkuej08TmZVNDt7VUlfNWVuUlZBcSppRWc5aU9CQEU0djBpZT9oSWZnRV9PTz8/enoqLil6MUNyOH4kMXJfR215UX1Hci9WeEpTYmBXMF1QYXFMLkBOTEBicihHYTxGbkk0eV5bTX11JHxZWWRFbzY/L2xeczYjaXROfiIoTkZGQ3NDYVU/cUJ1JDV+Wno+S0k6O3ohfWQr'@; put 'VV0hRTlOYypXUW4kcVpaVSspTzZ7WWpsU1VVRiVvfm1HPCE2ODE5JTQ7TUdrIjVrczB5SGtPRD9SNXEjNV5TSnlXJExkdyh9TUFGem5wcGUqcClAai9xeDUvUChsW25KRHo1KWFkMDwpKjFMeE8pJmwmPFYkcFZCcE5hPkk0LlolVF15fjtTVFN8ZlM+QU1+UldiLz50MkJPXnpMPyRmOTZpWSYr'@; put 'OnZMfSgreFJYUU5mSVVmeVQxPnJLe1I5WSJAZCksdUlFTVNINltAUnFJSzVWcSNXaCske11UXW8mX2tSOyR0W0VkalpbbFBbfCkuT2hVST5eNmdPQXVsYDNsaFk0Oiw0LHIsPHA4dilEYVFHS1A6VCZQPE96K1AqU3NFU1RRdWlzWXdXb0JtY3Mhb3FNWjtZLCo3QjVWQVBbbWRvTnwjS18ydUdD'@; put 'Wld1OHZlX2VndzM9MGc4NyMiTGdbJVpnc0J4fklxbCNGaUcuTHNHZUw7ZEp3O1YjQTZhTWJ3IUMrZ35qZCJ6K3gmN0pufTxvdSs9azUpcWYjTmFYXlAqa15RWT0+MG4rYEs3ekByMndkRlVlPHdrUnlTbGx9fiNsViFjMThMXSJjcUNRKl86NFZoWnAhcTVSd0U8X2hBeGpwK3AlaGdYXkkvL1ck'@; put 'RFUzSihmcG14K0wmRC5BViF7ZG90U2lAL3o9cnAva3guRz80QE5RRVZBVyhvSjs2KjoyQkZOKi9pdzpgaHM3cDEmY2QrT2R5QSZ4US5eZDpBT2VbNHthMyxVX0N5TkU5dFdMV2xaNU9GLzRyYjRLYlVOMXt2ciVNQ01JNz8jZGpaPkw0KnN+aGcqUTZtYTAxdU9sb2AuSCNUNWkzUHRUQ3x1Q3JK'@; put 'XUtENWpOWzFlTUJQPSVRXmxtKnJFeilXPl5vO2kuXlM/QDFdVFdGeXtwPG84OSg0Y3Y+cGI8JFNWPFswLFBuPTQ0QHlgbTtTNnhkZ11ePUR7fE4+eDMqMF02R0VmPnYja1t+UzAweHFSI3ViNUtUOTJIbzU7Z0tKQE4ld25NKVAsdkk0Mk1aOi8kdlQue0BVITJKZU4kYXBsIlQlQzpvSj5xLHsr'@; put 'YVhfZ1h0UTQyL3tvRD9EYjA6cyFPb0Y4bXhWdFNfQ0kmUkgzRDIuZUUkQVhuN3leMHVmYD0xIzppbE87bV07an1fVWxwI2JFWTA8Z3RZb0grfCkyQnd6PU8pPGBrKTMhLj8xR1prOCp8T0deNXRqWkx3cF46bk9XdkFIXStQZnxSM2d+TjN8ISpWXSsiUlhvXk41eFZvdkJlaks6eHx+XyJVXkV7'@; put 'Rj95cnEqPXIqT34vSSFVa1cjeG1PRkpZWFVNazJjOlojdTg1L35LVD5YRz8/LmFPV21fRFExI2FxaUg9ajohRSRWS0B9IjUicDxuI3shO2hYSytIczdGT0luclk0Okw4L1QjMyhSVHhnZUo+NVc2bjElJFFIRiZqY2QrSXJxQSpuTDB9Nzc/QkJZRiVyRyF2Vm0kQjliITchdDwpaltJdls/Xn5Z'@; put 'QWNwVkwkeChIQyNtUXUsRVUkWSxHRmQ9cEpVY2difF93P0V8JDs/UDlefFM7WCtkWGYzMTNxcVVNb3RPR0srV3lbSFQxOGBXfHVAckc8eEYpelpCcV5ENlN0UFNJLmxvYndqKEUpMU1PayZqLCpfNCJlXSReTCF0TF1XLktwcCkxMk4xPj47Zjh0ITpbZV9qI0lCTmZ0V10xKWMyXlh9OF98ejcr'@; put 'KnViXjZYR1spdFtkZFojRFUhVDRJaFoubmJVVzkjXWp1RV4qQD4uZGFDL2paUUZ+ST5FZChoQ0lqSyFEa3BtUTMwV3BgUmx1PV57YVt2YW5uNXpRK3I5M243SlMqalhhLktOOllgaU1eeU1aYTRNbyMueXcpaiYiO2tfQHxRal9VYkBBTDA4QzVAVCtXS0lhKmhKLi9fQGVzaGl4PF5VdHI1bFN3'@; put 'aFIuSkNucERlOyEzfDJ2KW8wZ3dAbyp0SE9yLnxUJTMscyhEMFpSXndrNmFTVXsqZDZBNWlIYCFvMVk7NSxVZzlfa2IyfEBdSG9aIW15NV9dJjg3RiY/M2s4d1tXQSlPNzwvPSRFXzEydVlWalg0c2EpLjkreDIialdfSFJPJChEcTVySlNJanpTVy9DcF1wYytKQEBWPEBpVTtHUDB5RVdUWU4o'@; put 'd0U3TkFnajA0b3IzPD5HdTAuRzl2eUNVaX44RCRzWnIxSDgrVSNhX1NnNXEhOCkxYWhZfEVwIWNtRSpnb08rZlhjcChkTyNEcyhddlo8c3tpIldVYDJbemFSWiR9ZTxUeDs6XUQsS3VmcSMzVk9NNlJ8QS5sQyFuTUVxWTI2WnlrIi51Y1slTH5NOG8vbE5aOygvMjo4JlUrKlMieGBvUl9qc1NP'@; put 'K1YxaX0/LlkpXzVuOWhIOnMhKmhybGVpOFEyJnspVlt3bnI4bVRGfUU+fDlqQy9NKTolWnJxVW9rJFM6TlJ+NXp1aUV6NnV+aHBFMiZZdnd1MnFwO30yRT08RU0wKS84SEJmNi9eanJILkNyZis/cW9CKjkxTmwlaiNZNC9SYH41Qj57LFlPRSN6YU5fTEhQKXNZazZOQUh1cFpIXlZ0aXo9aFNM'@; put 'W2ZTKFIqYU9FLmswNXpzR1BPYSVSek0/X1N+dVp1MSV7ZHpwLyYrbDhjeGRrIk8rMmk2R3U/ZEhdS2pmRDdkWyZnKjpeYWU+aWZqcjRJfXM/Wyh0M15uMzwrO2gpYjdfQnF2P3NaaSJTZTYoZkpWdUR7fCFvKihXYU8kLGVAJCluJV9nUmVsYVQ5Z1IrLno4XU0rOVN7OmVPUDNQeSZZW1lhPFtu'@; put 'TlFjY2lEV0NAfVVPeipGanxNLjVkIk14bXdfJllwY2g+YnFgWng8PmV1ZClXPy9OaDR7ZkhIakk6JGlaR1UzfnpgUzpWYXsyM1Q0P0o/RjpdKyVJJTd4QiFoeWptfjxSYUJeKlY1KGBuZ2I3YShkO2hEJGFDQH0vaXlwa3skNGlaJipyRGw6LzxddGdHLFtnYSNzdiNsRGByTWRUTUhGND5YLCUu'@; put 'eTsyZTpnc0QhRDFJYkVJRjBPIWU2OCpwODxkSUZZTEwoJjFGKTk+Yn44RyZUZlQyXUlXeXlvKz9xQy4zblhIO18wNyspeHZqJntqK2tkfVhLIkt0fmpZQ0picXNCUDtLSns1USxIQH02cFk2P1NLMkZedk1GWThCbkRaJG4mcng1Pl9QVDclSW50c19VbWpQTHlrSVA2YTMvJUgqLi8oMmRIQ0p9'@; put 'XyVvTll+TjZ+bSRhSkpTZ2xLRklNOkJPRjZ4TWMzY0RtKTVRI01hLnFeQkchZjs9QTVjL189MGBTNEgocyhOemlZcDMrbURManFhTltJNVNHclBQREleazh7fH1EOD5DREpJRVNvNFJGfF5CTjFgVStrQypidjdFaDh+MXxsdiptQmpCJXJTSzc0PCFHSSNqSWJ+XkIiOWBNUEdycndBYyFxWlhl'@; put 'aGRVI0NHMFR9Uk43clBEfn1HKkx5ZFFpMGhjcV1TcSt+O15uWEM2WXUwNFRgNTd4VEgvcyFzeyRhUSgsI1ByejpGbGJ2Q28kSkhrfTZWSCJuQFIrWUo4c1IxSSZlZ2J8aVlyY3BdfnV+PXMxeGE9KkprKSN8WytlfjpUKWU4NXBTZ01JZCw6QCh4Wy5zRkhNZi9zNHxUQ25sUHZXK3RhK19re2Vd'@; put 'NiNWfXhfcUhUfjs+aE02MSR9RXgkSjp7aTwpJn18N0p+dikhTGFBQ3hka2xWN3VOYVF1elc+TDdsdU8ydCtDRGNdJig2ZG90e2ltKzoxcGhxTEJOOUheTks8QyE3OXRpJTNOd3RkRlk+Y05hOnovJXE9KnpRQ1UhW1YkcEFCQjMqKTJAJF9LeWZQTk0kNjQkdTkwanxZTWYhOCZ2dHAsQklIJig/'@; put 'fChhXW0/fX14ZjM4cEB2ISlRTylnXSF1digiWUEhXSFJa1lXSjlGIm9GZzA4QXtJQktGQF5oTCtxLmZGMGpCPGVhU2tJQFY6U2I1YzJASlEqWUhJcWdGKHgyaSIocjRaRSRFNFsiYSJDZEBDU0lXMjVCYWc7UXNUOGgvRkZlV1Z3VmtxTHokaiFjaUtVKH00bD4wZDUzdEd+eHpEIitbTDA2WmJi'@; put 'TSQ0NjFgTyEqRUBZaDtNRSxKMntXTFZUdW9Md09FWmo3YzYhTTorSDcqVld3OClrYzt6ZGUrKGh0IT5vK0cvNXI6I05ZOzZ5SHEpSk1uK11+Rm5LJU05ZWhXLlghZCxmelZvRlJ7YkFvVSslRG1oTTdMdC9saUI2MFhpZ0lnPEVzUixbcX5qIz40aXZUanNqOUt1UGMmXUhMMHZYKDZCPzswe2Zo'@; put 'TSJ9U2p4eWlReytlLH1XLkpqaXEudVldWk41NHchcGBgSHElSEI6OFpSUCVzeiF7cl5rWCQiZzB7YFleKU4sYFlZNmpGWCFbazV4UyJCTmVSTDs4UkZDRmhfYDpmbk5gPzJEJD9NVSJBKn4hVD9rdXB0MSk6Jm5UMmBIUlFLPz5PXnJaVilSQ3E+WEdqX3FHXV12YW8/LDo2c1gpR3JNQmtBTm9R'@; put 'QCVgaD5wK1tpWlNLYXIvVHNuWGRwWG1HfUUqe3F3SGchYyYrQnooWF5EODRpYmxqPFY/e3Q7PF9FIVFbVGFnfX51byRDWVEwfiQ1I346OEwsbX1TbGZ5RUVLZH5EUlM/KHFlOjRqKjomRmE0IS8paDVlQ1RSP1V8LH1qKzV8bSpdOUUsZS58LGhdRW97a1M+KFF6amdPUCs1Y0J7KjlmayEqT2pF'@; put 'Kkl8ekt1QkNzMHRZS3tMMV1DeH0mLCN0VX5YVmg1Onx9TFNueCkoSVRxQDRRMWdOX2RbT2ZFcTp6OlokS1dqbm5rWHU+TmpJUjgxd08pQm89SlZPfFkySnJnKTVWNU98QD4qIm4zInNAYk0/WyZ3P3smZDRUUWohRS4/ITsxUGgmQUNIelRJZnExUlBdOV16RlkuOmFtV2xKUnZzMU5wcllIZiIm'@; put 'YEo+cm90QT9gJTUmJmlWbnljPDByb34+YFtqZ04sITNBSz9CLFUkQ3NmI0Z8SVJVYElMakRDa1t1aixiZ1Ehc292I0p8I0kvYDk/NGFSVks8eHZKUUcjUSpJXkpyQCheIXwrXlQsKipbP2pbTkR5dUBHMzB4QC9LZyx0VVV2PEd3QmdMa2x3SnBZfExRR3dDQEIxI2djL1MkUzB1JE9nIzppMVUy'@; put 'RzpUfnRfaG1eI302b0hUcXEzdC9nfEJOXVQ5RTxhLC54WD5NVTgsIjU3MmRNQkQ+fH5RJn4hcElbd3RDOShlcnkjQ3ZeRWs3YWFGM2E2cGY2ZnxUVGh7N3U6ZyRXT3FAPlZ1UElVUUdPb3FZUFpEN0J1ZWRxKy9ILE58UTxaPl9yU2lAQlNpOlRMNCM0e3s+VnVLcGEjN1IpJWVzbi5zY0d+VndK'@; put 'V0NNbHp6OnJFU3hfIXpDNHEreF57WjxOMnJLSjpRZjFQQCxAUEFIJCkwIkRLQjMoKCZ4KjNZO3FYWHZlNWg6XWpAI3x3dFZNdEEzNXwve29yUz1HaG86UHlOZyIvQCo3TiZhWWAldkhCSUx1KkxQOEE8YCR6KmRJV01xNyV6WVlSOUEuZSRHSHo6OkVRLk1EUnI4RGtxT0pGekBxP1N6fF5jX1lR'@; put 'U00sYmJaRjZOMFZXUFVYImdKUUtHSDJAdW9RdD0zNThNJHduJU9pejF4PCJ1L25wK3ErV3ZhJjc3YUVAbEw3LHBkVW03VTA0M3hIKCRib05rdEhUeXUySyEiUF9bMn1PMVt5NiRbeV9vV1Iydzc4fTpWPjtdSTZAZEJxLjI+UEpMNVNgbj9IOjtEMyM8QE9gOjBIUEpnI19PZkpyOnsrVzptcjt2'@; put 'IyF0MH5JZyJVODdKdkZEOlszfHo2bSxRMSZLLF85UyY/LCosPXRHZGZJKkJSOFU2OlEuKjthQjlwSGlYJHNpSkxEelJEVTg4U2JGUDArfnFPPj5xR3BJV3F0SlBJej5OI3ZyLDxQREAxX0BoSCFOJXxPKSFVZVl7fE1VWVlTR3AvfDxhM0J6PmJyez5uIVFxPSJhcVBxXUQqKHVrPnQoRmNTIzZI'@; put 'JVEkOk0kP2hVcntlUzBibX0yXkQmNSpQdzVLTTVjQ3JQQF9zT31INXRhclo7VVV+bUlgd2h5Z2h9N2FRYlBvIXNVSjMpOlhOX0RIbFBAKmVjN18jVFJJRnA+NSEjL1hoRj9RdEE1S09OZitHVT1aX1FIYDReT0ZMOSE9WVQ4Lyx4SW89cnVQMjEvIzx+d3VtdDdZNnZ2PC8jfDBbbSM9WF9VSlJs'@; put 'LDRjbjNRbFNzZFUhOkxLZU89V1hIWkxrbHt0SS9Xelp3LEJOSDBuWWp0MVdGT1YvdjsqNndOP0t8RHMmNjpbQkYwVDo+UXRNQkZ9OW8hYzZqKHxQbCxALG53ajkkfSx5UmpDUns2ekAjQCJAI0g2Qk1gJj5gQDZDWi5Ke3RKenJAaihUPV1pci5nPXF0c3RzM3dGPCR9eEA5JnxdM3o2WF0zSXNu'@; put 'fiF2KHV3SDkjdDl4Q2RXaGs+cSE6TnI2cm04TiVyVVJlfHB0fCJhSis/WWleYGNnTW15R2JPLGpAfjF0VEdLZFBHI0tyWz9UO3w4a2VROXspfkp5aHd6elslZGolIkZnJihkUiNATnN2OEVbYkUvZkYle21uQURnVCtra0pbUG1LRENJZFpEYF8uVElTRVdge11fQylQcD8lb0JNQ1ldeGg3ZjdX'@; put 'ZjdCTXBQeWE0blt4KntdYn1oVSlXZixJdHdQXSphdVlqN2ZhRDpEeHxkNnxkMShjNT58VlhNMkxzRTMpSj0ldTc4P0lTejhXQiVRUDJwJEwlVUQ7Ol0pdDg5V2F+Y1NVQEZhWHlEIWNkdXQxSjNhazshMyNAN0s1RTM9Pk1KI2p0Xm1EJDEsVWNdPjc8KyV3Lmp7W2g2UXMwPFlvbGBiKEg2IWF3'@; put 'XTFaPipDeHVxWnlPOkZ3M0w0U21sfH1UZVNObGg9fVpNR3xzUSpvd2hXS0lEdCtqTDB1PCZwd1JBIiEzakJ3KV9SJkxbWFV0WyFZQ2h1al5UbDVdbFpueW1EOz0+bEdVW29pKXtSIWlSYlRWbElkJXU6bl0wbTlBYCZSdSNqJF5VQWdoYmEyRDtzbExpeWhzZ0gheTpjc1o4WSUraVJXUmZZbURm'@; put 'X2t8fSZebGpoXn1EWHRNXUFXdGRUMjlvPk1vYiwxOStOZytuWURRciZRaDZ9eiImQVVDdUlwJkQ7WGRHcmA0OGRLTDtfSUZKLEZVYytpalEhV2Q7QnB3WVtTYSt5JGRQQUlbaSRSNC5vbDpNQGh2b2syd0s5YnM7cF9uaVpgRTh6Z25fSVVMMj4odUB5clJvcSkzPW5HQGVCeWM9W0lgdFYwZCtB'@; put 'cmgmd0xVPUprY31xPj1Kb2Rwalg2NkBJVTNjVHRDXW0raEtzKi90VFZZQEVvWHxHPD5Rel1qYSU5MTMpNitEIVRPa2xob3E1UCM1KCxlN240SDooR2xNYTkrdSgoXm5fNlhJWG4vV0NXMFRhNWN5b0s5JmU+Mn4qJG92Mj5BMyh2MngmeDs5L3BSMiEvRj9nSU49ZWJ+cH0meGxIZDgrb3goNSNR'@; put 'dnBIWS5ePkZvZ0tuR2VlO2pVYypITFpMMyxzY0dRLCpaJls6azFuKyQ0S3kub2hTN0cxRnx+QVA0NChoXU5HfCxXVElaZTVEU2doTkh2Z3pIU3ZZK2FEVCFDLEg6UEw+RngoTio0MlNlSXxnQEVEfXE1az52Njopc2VZTSQvIltfYSNnRXYqWnt0di9le31xKT5XV0AkLyIjKi4wbV4iUikoW106'@; put 'ak1eOzpjdDp4QG05ME1DfCU3Q0tGLzU/L1pTUENYezolLCJvTXYwcFs3SVRzMVVNWSJJUGRTb1JOJHM3LFsoOHtMJH1iQ0JuL3orP2NXWFU0Jk9kP29ANzp7cVlSWUJxNlJGelUhY1BiOzZAUj5QJnNFe24ycipPMCpyJnpCPXYrcyNDanRYMklEM09ibEdhT3d2bk9+OCUzPyxnPX1Wbk1qMXpo'@; put 'VGg4UVBsNyJTfnt+USJWfn1na0t4RUM6W1NFRGh0OXo7eGtaYnouLkpsSzJiWmI4biZiK3hvXjJaM3F0bXttXSVMZTtOaitZcTxfeEVLQ01BKlMpNSgvY3slMFtwbWIjczI4R1hGVF1IaFpQZmJmMyhaaVdUaiR8ZDxvRCRzSjZSYTYleGckOGFKe2V9QVl3OW1KJHNiaSh3M2ErSlZIJTU9ZEA9'@; put 'aU9RLF09aklgN3RFOnZZJCRvRyt9b1NIfjxgVmxrOHR0W3pkV3hPZWF9c2g8UihSWXdSbDpoJCElSjxdfXNnbkt1R3tUT3lbSSp+ZHhLNUxMS11IRmNzY0U2JnhbRyt1a05qdy5lZWt7Vk5fMyJuOyVgcVFYX111diFNXSg4ZzQsQ2xBengkWmhxKyxgWHdgdTI7TzojeDhFZnY6IUpiVWR+NjV0'@; put 'YXo4TGV3ZEBaQ0YuV3hvXTVGajo4OmtRS3BqX3Q/MSRacWZta1k4OFN7RjtQSCojPyUjLixXUWo9d3JuIVlTZU9USipYd0wyQXA8UFJNS2Aldy5Wd3NsW25WYFdAa1BkZTN0Sj1aKmk/ZU9AJF5rU29RSUpeSUV8XTxMajAjdyFFSj1QbipRSyNPPGVsQy8sWl9eQFJFcD1wbmFwVDtOZTd2ejk0'@; put 'UGEzVC55RCZKQ1tCQFUsMi97YCNmQFF6aHFDcXFCQGZyYzVHaTJ2bE1oaVcwTCV1R3lbQEY3cjc8Y3lyTmBoe2kvR0h8WmFUVEU+Qk9ja1cwfUImb1FpKVNvNyhFL1NrNHh5Nz9vY250Vl9jWjF0dmR4NHo7eHA1NnomMzVKRT83Jkd0K2hnRVRqNGU7QUlpZTdfSzx1YGc/IVt9eiExTmR9al1i'@; put 'eVV2a2xVdmN+OTc4dE9id0IyK3RebUxLeWNdK0AoXnMvU1N1NGgidX1DJTFTZWp8Iyg6a3ZbOXdgL1RVfnJhczE7RzdzLH1EVnUyKlU8MncsaXUvTmRlMSQyaHEzLncqaF1raiVBXVpzW2d8UmMzUmVUQDRnaHRtYSRaL28rQllRJiRtVytSdWg8REpBcS5JO2NGbDpmNTkhLmRsT1FBcEdSIWpD'@; put 'SDQyYVJwajA+ODZYMSRaRFViWUMqfT88JXhAOzxDTnVMVDpeS1V9Njo2OjdrWygxQlhsNmtRR1VEIUJrP0ttMjlyNyt2RT91dDJnPDJvc31DbVFFODclJWkvd3dkUl5ja3hpYFs1ckkoXXJXPFRjITg3c1NQUjxLZn48JSZNU2hzQmY0SitbXU0meShvZnpHTXBrLkJKIiU+eFVKLDpiIiVYVzpw'@; put 'JWhIeHQlKnsmb3o9dkF+Qlt8c0BbfEVZQkk6fTVhWEg9LyNjc0cuMHtMXXNDTExvaEgse01NdTRWR3Q2OnFreSR+eFF+V11VZF1oVjcjRClFPUwoQF17aEU5dWx9bTpyfWgoSUB+bX4lfEJJXmtZOGtMb0EzPzQ4ZkJKJmgsISM0USxlUjA3Mlp0InBkdDpOR1d8e2pGSiNZcTsjM1FOMCtjZFFu'@; put 'OihfbkVePF8/WURpMXF8SkArQ186Uz55JXg5TDwwTz01SCVlJjwxX10kTXdERGJ1TlZOdF1IbnszeVU5anNnKTssJkg6M3tfXll6OmlWKyYpbn1pLyZsMDRbKDsxT0N+LlEhVFUhIlgvRHQoaU92QytKbylDP0ZwSDFMczlxM0goeiN7VEZSRCRISW8qeEhASWVhQS4hbndEPi47YEpgSm4zN1Z5'@; put 'YDU5IU9TXnJUOXV3VDs2VmBPdj12UCZ3WVtyKWNrPzZgMGttWGpHK1RJZ09VJHtPWHZlLkU1LH5pR3NYP3tNYnk6VlcoQXwpJCl9V28jOSwlb1MrXkQ7TV88W3okT01OVSFlKjZ7VkNaSDsiSkIuazJnbUpOU0Z3bTh4TlhZSlYpRjBmSXlefno2d0szUU1UYk0zXnohUU5GVF9zOjdhYzQ5KlJX'@; put 'dWo9ZVk+SmdraTYqRGBRWjR3Ik4zXXojMXhPUWE3Nzxbe2UjPHR+KkdlT1RyOEtiN31fPHJOR1c3XihlU0hrRVtJOnhiMWRrZHV+ITt4e05iakxFK0xqU2lAb1tubD0ueWtfXn0lZ3RvPiF7bntgST5AM1lFSUBGWFhYdnNYX319RCpdWVpKPXkuRyFjdzAzT1k3aCRteDIyJHhUb1QmVGxVdkZi'@; put 'RGUvRkwsVVhAOiwuREA3ZTtZJk9EcEg7WmpWM3l7NytAcSVWa3lfbVg3IXg+dz92LClpVk42JVZ0NWdJVWtBX1ROcDh7YnhxcEJFOGs9QDQhdGo0QDAvQjpsZzF0djcxazdEIlF5bHhhVHpMNFIoWkNDPG4vMlZOOFRtLyZDVE9OTzJ+Il1MOWVDci5tYFA9YjVjejclUyVpLGZvOy8mNGFEKHtK'@; put 'dFMiZT1rQ0lxdmIqbEomMnAkYnNhU3gpQnpWdHR4ZEhmeFBnKnIsN1I3VF42MkhlS0BuRTpZSGpNKV1zUDdKUjVWQzhfQ1E6VUAuWzBXc3RHZjdFPXs1MyVfKEVbIlldVzZrKGc0TC9mMXhdbCg9UFJXL191NytBU35fPzdzWHUpc3NjOE1MUj8hN0tbLFZ0M003dHNJREI2cVB8MERKSzRibiFW'@; put 'TV0/SlAzWloqcmBCY050RDpwLGliUXV4UyxNYW55RWdRV3VIYSw4VEBtR3ZTeDFBS2MxKXI+QS5qcCQ+UjxKKGtWI01TVU4uZCRxRVYzfX07PCVbcSt9WldTZzo6cDwkIXNOOmEwXj8hemkjd2p8Mi9oa2w1bUJqZEBlaEwsSFhSLlgvfTx1OGpkXzZKfUw1Vi5rdjRRSHw+IUQ4bE5Zci48ajFg'@; put 'NHImOSpPOmx3YF5gcG4sfldEeHhAKix7RjAvXn0oNSx5ZXo4WCJkL05dazd7XU9XMkZ6dSFfOSFJZn5iSjQxWjB5KWFVczAjYGFDYWAqNj9XSWApV3xxaDl1OCx2aTdTPVBoOXc3Nz1XdVtfbDpoPGhxTW0meT1HSWkscUM9bF11OTVOKDklckh7JXNWV3l2Z2BVNig9MVFhJTJxWUIzW014dT1t'@; put 'b2YjR248KUlfVT5VVmxkTFgsUGEoN0w/PU9uUyUxQERFNDR9QmY+TypgfUw+KkQxXTVLcXpJTVl7eUV0WmZsdjgiMzVzSHd4Wnc/Um5dfF8zbio2ZitFejhjYnk2cVZPXTArdTM+XXUuKTwsaWwoJGJYYmMkSmE9PD1kOCxHS0gsIUxXMEpDaDV3JEcvO1k8MDhmW1JCT0I1M0ViWCR9d0lkNnRY'@; put 'fGgxc2M6T0QoYWBFLGdgJG01fjZtdis8YH5ifjU/JmFqMFJMIzJmbCxKQilJbG48RSFvOHdCVF15ejF7eVNwU0YiLHp7V0BYdUs1LFFBKypxJmBvdih6eWluJVImPVJtbl4sJHRYXjdDclIhXUNoVEdRalpORT91NnNUNmRLVUxsMldtX11sYWZ5UU1+MmEla3B7SDxMWUAxXlI2THdAK0R0VllX'@; put 'bURDNVZLSSk3ezhlPTRVZXw1QTA/dTN4MltjUXg7VVApcEMraSJIa15IVDZjRUhDeDhPNSwjXl4mM0Jydm82ISJUakd4JlQuWXQ3LndreXNCRFEpYnsqQXFQRyZkR1BaRjtuPEcwSXlmQjYsTXRtOyxdPjw1Q2JmL1UpcllNREs/dihDeUE3NUtDPHJQJlJlLDNXWy93azJrc2U/ZzJSVkpxJEF2'@; put 'TnRfNGBJRTp5TH1zSl8qc2Z5LyxgZXhDW3UraFhzJUVham5uQ2puRCZ7JCspaFtgXjU7VHlBImtsUiQsOHQ8ZyYjJV0lM2lJdzBPXXEmc3UjKW9nNyRASTZyYCRuIV5OIVNaWWpyc0RvOTowXURXSlsuMldaKlJbKU1EKCt8P0peSDlCa11GSkM7JHdRSiJsO1dGTUs6JWVTNTVPImhATmdRZi80'@; put 'Ozo+UHxaY052KzJFUEM1T2QocGd4c141LGNMP1YkTzZiU0FPMWUifTZPdE8qL2JFbTNOdDZuemR6Qk1dMmA3Mi9uIyFJZV5kXX5EaixPJG9lLjFFKmZIPCQuOC43aXBPIjd4WmNnPz1dODZNcT4iPkBAZyIuJnI/KChCbDA0P1V1SXpZdHhYVEI2QissOiokaEJxcldkUFpsSi8sL0w6MDl9bzdQ'@; put 'OUk3dVovNjElMmoofHZDO10sW2R0U0pOQ3EoJlFLNy57VUBaXj8yK3l1X0c4OnhGLk5aVnhbQiJuLnwueEh+Klh6YWp0VzAlKnwkRi9nN31lIk9iMUxUWHhfXlhYcz1oMnlPYXpfX3NpZjAmOlRFJGk6YWAkQjs/ejdOSDJYR20qaitLJDU0d2A/X2FBeDZNfTQ+cUhLL283MzcrdH5dUV4xc3cr'@; put 'ZXxXR11Mc1IlQ1c0Y0Y2b3U8UzxLfEF4NiNWXyV+QCVoTngzTjFdZi5INT8mSC9tfGJfIygxPnxmYGAud3ZeSyRSUDBGd2pjTXFCak9dM1IlbT9OYSlGcDBQQ21PaWBqQyJIaTZUbWhSdkN1My9oNz1IMDNNcFtLdld6TGpPbmApL2I9VyhvXSpXb097X2NsNyV9RTlFZihzdSR9MFkpc1JzJkhk'@; put 'PmVub2htSVQ0QEw7UjVxJEN+Xlo4TWZjV35lZGdndFR1a34rb0d8KTN2MGQvJmcxLiZSZEhkMDtqMUBEdWEhMGNid3oyLklmTWU2YkcjYHhaNSJMXkRHMH58XWNBdSpWYzomSHo+c01lfW54RCJUOENFJHcrKF9XMyE+cDQ+VT92JT9QT05kKmFAYXVdajNKfXw/NVszJXopL0I3MGtWeDxIT0Yw'@; put 'dm85dm57SjY5Ty5uVz86Jl1vQkMsclVhTEt9bTc+a3YoJHc8aldWJX1lVjBRVjloPV0zKTk6Vy51WkZxKkBgbllKNC9GL0cweiNKVCg1X3tweEBIOkFwNTw3Yi4sTkdqI0AuNkx5Mz9lLjhmTkRrJHssKi8hbUlAM3kva0hGYG1GNXFTcyFRKnBfKkZKVUJrSEhWVjArUWJKcHBVaig4RWhHJXxE'@; put 'QD1XfmY7bVoqWHBhMmE1bmQzOHlXSjwyQjlaT2dtMmA8e11zYWRJQTVdcHFoQGxiXUJZMVswV3MoKD9VU0Vea0MzPXN5LHBYc15PJCQpI1MmL3ZAT2RhV1YiaXsjPjxyJiE3QEVKdXR8fHklKG1fYVtrISkrfDEjSn01cT86QFFfS1hHdmYsaDI3YDk+N0xqY1BlTCw0P1k3Kih0PGk8JCJTaT5l'@; put 'XyUjYHcvWz1XT2xmMld6akk1PCRbTFt0cClTS1VtN2ozQ3xpK1VbL3ovQG5rRl8haG5xaCJFNC8uQ0IkKlQ7Y3ppelJzcT92XUxtVjdOVlQoJHpQOCovYEsrK0RMJCFlOXtjQHhLV10kazcyalJyZiI0KGZ4XVJ9eG4mSnZtaGRiUXNOfHRfS15oNF9gREd6eEVOUWJ1NHdOfm09fXEwQF89UF1S'@; put 'RVdROUpORTdaLmlCOzJWZCF5SklJa3dUe2dQTGBNL3VUd11WUGx0bS9uK3RhVlhDU3AydXFmZFMsQnR2dVZBVyxjbn5La2VhWVcxJisjNWZEcTxLLjQ6OkIkNGR2M086dkVyIyNkX31uVVAvanI/aCQ9V31qS1BzLnFWOlZaR0xCVGc5cHFOQmtFaEtJJip5MilDMl1rbS5lSEd4JHRXaUE8b3RE'@; put 'IUt5TyRfWiJDJXF6SGBuQXNwXWxRWHcuXmlUKUA1JEgzLGhGZ0I+UmkySlZSZFdoQ3JrezVBez0yej46SVtxdyNWMW1TKVV3W0FJOUpgW3NUVCFwVSJ7YCI7JDI/YUNScnddeC94VXdAVGFfPmJjJlEzNzE2WUk/d3Q7S19DZWgxRXZbTkhMZ3N3VnZQK3NsdjslNXlkeUdxIkBnejNWRU02cl5N'@; put 'Nz0vRkZ1TG1JSVZYbm1OTkUka1RdQkRBdlozc1NMSlpOdEcoRzY7JHw1XkNJblQrMH1HdWh8eEMyeDV1cVFWWztGbGBePHJEbnJ0QDdEOTlEclRZTz8xeFV7OVFtUCFUZSxbIVpEYT1FUT1WdE55ZUkyIk18L2BgT0djYSMvOVhbY0VgamBiKkNUT2psZEVvSipseVZKJmF4LjAyWis/Wzgwdy4r'@; put 'PywlalNPU3Zkd0ksV0xnYFswUzhWTCYxSF5WflY2SCp+RWc6RC5EcHVpNnowdzwpW1JvRUU3S3pAakBHQVRiOE1fQFIyQ2ttO21za0NLKj8lVnU6Ml1ebGkqME92dkUyeVc9PlVMN30xdGpdfGk4Qn5dOV5vNnV3Okw3NnYvY0BgeVFmJElxLiMkIThLcFVMVD1SdWd5e1hUfUdORXFPNz1GIkov'@; put 'XUY5NWZ4RyQ0MFdiLylgeTwqVG12OGFEb0QiVyZ6TU54UXJ8LjtNXjxpbjcrX2MqfGl6WT5pdjUoTUZ3ODFtYzx1IndaIn42QztfJlBiKi9ncGtfeTJhKDs1U15zYmRQMXJXP3VdRT9sYEMke3B1cDRNJGJ4djJqS1hHaVAvRTJlPG5xODdZJkp7YSpmPnc+LFptQUxqMHJXQlMxVXt7KUIhXmhs'@; put 'PiNrNVcpRTluKHVNOH1ZOVBoNWY0WyRnd05pfFpBLn5CIkteanhNKGhTYUhMem0pSDdhNCg0fVNRbGE6Kis8KFA+eyxtT3JJNkAwfHpxVW00dG12SEk3dkI9PDBofmtNb2kvYzc5dl8jLjZuRzp4REhqNTFnez56di4iVWhbXThqZWlfVy9PYD9jY2VVKTcpeThDajpPIzB9e0FHK3FlOk9tQzh1'@; put 'TktTK3M0ajwuMHFvLlRQdGp6TzM4P25zVjhFKjtVNjhKeEdXdlNhfEIqTlgpc2JSWn4pUFVUbXhkJkg9d1Y5fVpQKEZdJXhNMjtfd2xEIywzInlWbVE4PnV5aChPYCxjdGl8O1VFckZHOkFxOz1DP2N2VklbcWg+Un0lbXV4JGExPHU+R1JGNk5FPUo5MU4zc2x+NF9rNFRbLzFERjdtJURzYFsr'@; put 'Ok5RUHVNdkJ0PTdTXm9jZlZ6OnV1W0kyWFZ5UkIjeyYoUSwsOF4kV3hzPGBddj5YLFt2fXV9QlldZVh7bUdfX21wRHJ1ZihVRThvelpwZHMiXUBNciM3aW9ZTkJMTHx3Q01NUihxbGt6Y2lRbVIuZ3QkVFNaX1haN0wiKT5WK0RsRTArXml0UWw+e0U1Ii58QUphUytXJC9tMlpUajl8aS5nMTFo'@; put 'eyNFZU9ESGBKYVQoTlpHLDNzNlJ6KyYiLjE+JjZeJCtdI293bFB4TlpYck9uWltmN3U9ZFY4X3B0c08rJn11ZCRBeX5vMkllTDZXMFJFQF4vbkw8QyklU2k3KmYoPlMlXzVFWVE9JFJqXUZePX5ffG59ck9aTWQoU1ddZypRWGovInN9Zy5vNmI0OmpedENSWSZUQXUuakFnZVFqLyJ+R2F9Vnxs'@; put 'P2UmRHx2KkV7JGhxaDZ9e0pOP28ufEBIKUxLS1E6Y0E4RjQ3cHtSWXwpPkBSMlA6OWpxX11IcG9eUzJ7fmUwbkZiP1MuL3lsMWs+M0UzJCJbWHF7JChuPVdaQzdIUVAlcXY2endMS3w2YGNfV0M8W2dJeThEVUlgelJneWJ6UytwOjlfN09KQiRNYTVeZ2ZBU0QuTDxFfT06ITNWcTFDKWZ9VS5q'@; put 'bVM9MGRDNDBkXmMkZCErMmtIfEU6Zyh+OHxZc3spb346aHtnKyZWOzl8MWhNaCF5IWssaExbUDJCUjZITy9wKSlUZ3gyPHkxIUE7UHBuUU0vJHJ2LCtgTGRvRVNRdiRHPjg1M1tXIyU7K3ZlLDtOS2k6WS5oMTRPM108U1toZzhmUk8yaG1fejZsK25TLz1leTpgb2FqYipMSkZid0woZUZLcCYo'@; put 'YHF9V0F9QCxGVXFgbTp5ayhkMkledEphbGBmODJNa2RMa0U5czF5SyJMfTFqfC4xP24hPkpeciljbXwje3FaXTo9UGhAYmV0MC4yRSx3SE1JalFuL3BhRkZfO3A5OyZrKi4jSz0vUDJBbkNMfWBWZTY4IzpDZkkrIVNFJFh5dUNMKTZvV3IlLHIrJSkvSkosdmk8OCRzZyZuV1kxZUVlOj5qenFT'@; put 'bG5SPl5yW1dwYU5qK35mM0ZHUHlWRFE2Onk+MUYzUU0wMHhsOGFmOipOKVJnP2kwV2ZhbXN7eShJc3UzRS9LQ2NZL25EJG8uNGcyU2gsPlQ5a0J9aH5Wek13Y2x4MCFpen46cXhRJmxJJGowVGFkWTNmMWZ1YyZjMFVgbC9iOEtbQi8mJklWempEQV4jOnokKWtyKXJbYjN7RXdWKmlDfTR5XWFM'@; put 'S050YXdpUSJsVGlSdms6JFdpYC5RYmo2aDJASDRHJVl6d3Eqb2VZb3RGeyFTZlpoajYqWE9vYVNrMlE5bn5UTiR+V0s1aHglWXF8RWF0c2VGMjZLc3h6fTJWemBTVFVYUi90NWRVMDgkdV8iLEV9WkxLXW8iJStmVkl5SHh6TDlKbiFmMjo+fGouaGFyVjpHYiJNa3JnWEFURFFyeEQzWElkaWdQ'@; put 'dTk/dnJEMmFWX3I2MXo4aU9nVDB3ZUQsUFg4dDI2PkdSaTVnZXh6Q0B5ZlFIdS9dXXJSeFVQKF5OMzshPVpnTiROeSMyWWpAPlYqJFV6amBQOWc4YVM7IUMsWHY9YVpwTDouOUhjUjlXL2xkdXdVMz5kSXo8XUw3NEYiaUp0cGRyJjJObDY/VH5SUFp0cjlncnhZQjVBKS5xO1QlL2U/NCgjZTQ/'@; put 'WDlrNSlZeklbNzxscGkrZDE0UUlnSDVnbThaR1RpRzMyYnVNU1JfI0NGW0NfVSQwbnlBd10hemBCdHdXNklzKjZGPU96SDsyNytmZ1FnM0V6bXB8cT42O21PSGA4KWAyLyFwal9BMW92clkwb19CfEJxczx5WmgkfFo6e2s1cylVVkYuP1l9Uml1bW1zb0toK3c4ITFKNEw6PEshVlZ1VWF1ZiFj'@; put 'UXo/ZEo5R0hfOVN8QjRucjg5Yzd2KGwrPilldV1ZeioiWkckNz0/X3RbNWhyKlk3YSs2O3swLDN5QXJ6JXRkfkxtVlpQR1EidnFDZH5sO0JuZ0QuPigjRXFwIVUxQlVeUU9+JE4sMCN1KHBNR2M3VXEiM05sXTYlWypTKytDSzc6KiRUS0QwVmlLSypyX2VUWVNDcElkPC9IJGFrM1kpJn55RXlf'@; put 'MUJYVDd0K0RBNExjfm4ofEdrb1h8QnBjUERpP1V5fX1mJlNgcyoscWFTUldEVyMoW1hgSHZYVm1NNC9+UU0hcnE1M1ghKVVraCR8d0VwcEhQUGlraC5zSU1rcTR7cXp1In0oSWU7QHFLbyNoRFMhXjNUYHt4QjpKYGEoRCorfmt7RDNqP14lQzhjYVtUXTJHXVNDaG9gTjQoeWg7QWsuI2slOC5C'@; put 'WSF9PU5xNXd1V1cscEpTbklUTip0NEJ3LyFiaUVlOlRhckx2fl9ISmMqaEomWTh4Sj1fTnpDLnl2ZXswX0t8ekhnPmV7MU9PXm5QIUhTImEkOzhJcVM/ITp7R1ssKGdFdFNaVnI8Z2hAKEQ6Rk9XVUo9WCVLKHNqRn5MNVROZlUyNlkoTVojUS42PXsvTmg/QlYkQjdHc2tqJTFXSkkjYiFGK2hG'@; put 'YDZ+SnZGYT04dnR0VWF9QXp7RkddJV5uVTtpUl5KWFNAM09vfjdmejVeLmxgczEycVhGYFE1KTs3OiRZLDdiclVGR31FQkdeeDEmbHxubElBd3chdFc7QT07SWN0RnMwJHJQLG8/VGxEVzciN0hvQFRBWnpLbmh7Q3tBWXR0QVBDJns3bH58KFVZM3V7LFYpUUdFME9JbThXJi81diNkbCorVUV0'@; put 'YUIkYkY4NFt6QTkyOls7XjBBdWdpOWBlQHtrVDZTcXVgMWNBcio/c0lrWCF0OixhQWhAWTN7Pl8uIjJISywvKGV6LEtMVz4/aG1HfSFTSiFjL1M8fD1ZSkVRUSxZQFMmUGQrdjUpe0VBbURIZGJ+dnV+WC4oN0BGJF5EL09kUDBAMTV7YDl8S1NffCZHMTReO0IiLDxHQU9hWUlYaDZjNXQ4NHNs'@; put 'QURvPERCMHFCNTtWQlNxQD4yW0FOSXR0YiwhMEokO2lnI0xoN3VAPzFIQ2RUP2NZOVRHa11aTzc5P1liWTk8PnV4cj9VYU5lP34/JGhhPmEiWm4pNzNEfTlKNkkpUDw/LDtoI1lJam5+U1pjfVo/Iy9CYF1fWEJuWzFHXTNNQ2wmPXxBcS9+QnEhQG5zPTlaNStiMm1yOGRYMXpYPigzRVEqTndZ'@; put 'XjFmcl4vO1l4ZDZNTVlgP2B0fCY5YVZjfDpaOzprNzFETjckc0kuNGFNejhsNSVkd0lyWWtUTndlbVdQeTB3R0pvcC8/bV4rRy5QQWI1TSp8RVckRUVneD5QPG9EZDBJZXUhZHVbM3FueXk5XW81WStlWFdvRyJHRT5HbiZ0W0hyJSNrM3M3XW1sRWBlXixjJCRsa1plbj1aL3VGbk9yN1t6K3BU'@; put 'ZnJQSF92JUBCbyMyQEhwLHR8eT5NRzptVHU/MkRBfTwmOn5gdVZ9TG9oL3wwL2ZuIlkxVVNPcEwhaT1qdkxSX09WW2ghVF9QMl9jbGxNclYlMXFwOGhUIU1SfiomaTYjbW12IXxTWi9AMU9MbC8jSVBaNFN1TTRHKXQ8SFpzbjNuV0pbKWR1dGw7NyJWSlpYQzV5dCJPIn01R15RNztHMkpNKiFj'@; put 'JGFSO3pfWngrPSxJfW9NJkMiOVVPOEx0VjhJcEFdR1JMczdJOU84akt+S1UwS3dIdFF6L1ApTUNec29Ee2lPZU15VypkQ11wWmlWJmcuQG8lX2hGaVlFV00sYlBKX2IpU0RufEQ0UzMjJHM2a1tyKkooUSp2clMwXyY4X3htVFVIQzZwI0l7OXdIKUs8d29sYj9oSChhSX5oSFBpdVUuIWEhbi4x'@; put 'ejcpbFF0M187O2tdWDk7SlVzbHVdJFMsOSxaRyFvSShLMyNnPm9NYUx5QzRXV0oubjo8VWF4N35jTEt+bm0vMkNRNHtKKEtJMFh1SWYhbXIzVCNdb1h5RlhANFgvUkdOYXkqZDR8c19wcG9aNTZTJEksdFlJTj5OTFBSYGM2N1JaJndqKzcyfFlaalgvYXAzJkpCPG4qcmBwNEhgb1luRix5dClS'@; put 'STM8Kzh2czw3dEhWMmJPMz5GVyNVKmNsN0dbJHpZW3NaSk4sY3o2L3t+emNicTg7d3x0YEYpRTguUDtiX19XJXZvZDNpNlF6bURNa1hIN0R2YzwoXURqOnpUZ11aR2h9K3glYjZuSFY8OV4lNVNWOFB7ZStDYXwmazopJmpLfCk1YjMoJFc9XkJxPj12UVc5cHsmbyhbVVpRWFVXMl1ARVNDPGlh'@; put 'L0AkPTUyWChHVDc5JEdAS0YyZ2J0WlZ2UmRkPVlSeGgqRjVkfFlKZk5PKW4ucnw1Vk0sW2lqYG9gTXZLSik7bi9jcUJLSiN0azUweShEaTZiYTxWMXNFLGU+ZDxucW9mfkpJLlZ7IVN0LkxPY1MkflhaNGFBUHtzPi9yVkBFbFtrU1VMPl8kNSpnfkxBOn5xOlhCImVxVGklQ201RyhuPlJCXTsh'@; put 'el9UVC5eZyZ7RCZ7aCVuTCl3dSg3eHZSRGtpb1drXVlQLFs1L351WFZAX1d3Mzdjei94LkdtN0h5JVdlQUMha3lGOzMweGRiUWlOcUB+dDQ5d0JUOXZ2LE49K2gyN2QuNVMsI1A0fmAmLjQsRHVXVXdQcHl1I0h6bml2WmIrezo0SHJrb2FIMkB7RWd9dlpnMjNAay5GMXN2clpjWmR4Oll8dkco'@; put 'azolbnMme0dtO0Z7JG1aIS5MZnEyaCEsc20kMEtaIXdaezkzUkd+aiM/OU5wWj4rfHg2cVpJZExxLkFYbEw0NGYsIT0sMWRwaWBlLChMempncmhvSVRBNSF3fTA2K2wkaSI/THlGPjV+Vns5PVpGY25uIjAyO1pZYm5qJjxJKWx7NCNpaFNtTTZfPDdpIkZDSlkkXnA9XzM/MlZEIUt6REJdeVgi'@; put 'QT0rNTVFRDhTUS9tUTMpPGBPUUtTdzhIelUjUlNJSzlkc0gjbnw8TTBpU347NFI8dW41c1RfNy8jMGNfUkozZjxyTVt7ak0idCsiWFluVVlVVl9HV10xM1RxRixXRFgzeTh4YjFhWVh9QUBNSG0rS2cqMDEoOV87JldBbDNRY0RmQjcjQXxHMWd5LCRWWT4rci9jMktHMlFQaS5SMGphZ09tVWp9'@; put 'fGVBdywrMEQ8eGJ7K05QSDNkXURjST06dWI0Omk3UVdBOCttd0h0Om8lK19KPCUlKUtdaCJianwoMkdPYl5iXjJoRTtwR2hPTG5HV3kjKmU6d3cofEh1bUl0ajp2M2dQdmw+U0N2TS8pSWVTMUUkaDJsVEc7OU0yISosKW9UY2VGXjlvb3Q/cGckVXxmUyt7MVJTfkU4XkJbSzhoSU1SMGMqMnx5'@; put 'a2heMD9DNjEqUmIoISUsNnF2OnJudmJxRWY8SF0pTjtDeW0oViQ6X21FT3N4KDZmfFVrIiw/OXMkJnRHVWIhQSFDUkFvZihiQkM0QjcwZGBYSHM8RHBtO1BXY0FQaSg9eHhBVFFafGRQfW1ZfWlFJDNFRjdMd3hwPkJkcyMyb3lWTCohVEZHXjgkeSVLNkNAd1grOXNSWld0cT5XRyVwKXRYXlFP'@; put 'PlhddW16RnNudSI8L2hnRWhIMmVtez8hVUkrbk59PXRsOixGJGd6WGVsQGNBM0pTbnd6XXVyKWZXMCpKLFlvXXE/RF5wQ1crMyQlPzlPbEFFa0FDMWwwNmF4KUt5SWNNKGBxXy5xb0lKcDF+Vj07WnJibjBdUWtXcj1nPEFIXiFOKjMrXTkxd2RPJGZZUjk0Jj9DIVI+fHk/LyxYQXQ6Sil6QWc3'@; put 'VnA2dEtNZyZ1UD40SDt4bE9eWnU7dHVQbDZpZ3lqe3dEJSlsQk9Ke1ArbzdlRG16LmtOQG16d2E4RXFDMiIjSVJieysze3gwWyV1YmJrPXg/QlZEN0drJjJJTWNha2QubTtub2Z+SiQwIXBuUH1JYVF9S3RfYFA1Z0dtTlpLalF5ZWAhKnJVUkZhMT0lPF1LZElpQEVTTk1tc21RbHAqUl4lY2M1'@; put 'X1YibDp7UTJXWnZ3dilARHc6byUvWTFJYjBAeDFZPDR5Q0ErMk0ueyVqZHJjS0lJekhpU21POyZLKVljYXxuPHFdVVhWTDwvfWdrWTNQLm8+Y0VAIUYiSTZJNjhYPzZQJCJDZH41TUNde0ljdGpoI05kKHJgLypjMSlPLmg6fU86T3A/UFs+b1UlRkp1bnpHJktQNjI8e0RXLFZEW3NMQVVQYEEm'@; put 'IzRRIl9NKmMmP1s6RHFkVytoVksyMil5cilCandXfn4+QT4jKThycGBmO1g3I2tSakVJJWs3cEFEZVA9YF1rVEBke1IvUjVJJUMjM14sRDwkQDRuOEp2Wi5EeEZTQlRVamlqdU9+bmhvNi8qO0w7ZXhkal0kJWRFIjRGPWVGKU4xRklnPmRLR3t3Z1NLVFVkZDlPfDQsTHhFOXU5ek0kSGIiUkkx'@; put 'QmpbLGJtenVSXkQqUixfQWskdnxqRitIfHVjNHQ6JnFdIk0xZ34kJEBEWjMmZCwqMUlqRCxUVHlKKkBQOkkuSlAwVkJtZl1hJDxWM2tLITxnJCo7YXghXkM5IkJyazU9OVFFeGlGYk12MlR1UENQNT9FdSFbOl1VWDdeZE1CQHklOnw0TGlQbSliL3QjQE0sOWVgXTU/Xyo5Jn04QEpVb1ZjQjFg'@; put 'KmdgL2FXdD9ENCEmXV1LPl5yaGdrbkgmRVByPHYpc2g/MEowXkdHQ3JHalRLK2toPGx5P1YiSnt7TW1gJlMzQVQlUmU0YWx5V09edUNvM1Z+OGo/O0xlakxBUHBUTUg8aHx5VisvWyYxTSQhWD4yZUIuWnZ0OmkmYUc0MD8/NXxyYkJ3alRsKzBScWh+Y0omU2tVeWxoKVN0KTp1czN2dSg0OW8o'@; put 'aVhxUzA7bUtZRHhUUmpxIzJsM2pOKjJsQ0RQTyUzLis1Jl4wdVBvbkxTWyxgOFVmUkNpajZ1M0FjVE9WakkybGs3aVU3RXNYRmhUa2Q5THY+d2QrRztVfCJhUSRBKVt7XWN7JXcoXUhfQ05Mdl5wbkNXYnlWe3kycH55cys+aGJYcyEoJHFsR1FodXRfPDkxSVBNPHFDWygiSExtTUM9SEB5PjB8'@; put 'NlEuTFpSK2hDbi9uSzBZKSptZ0Rvb1lKMl9YQk1iOTY/SnpEOjdxazczeClwQHooeXxJa3JRZyE5T0grMCpHbm0kNmMvXnNvOzUva0FmcDF5cH5VSTJvbSJ5KjdJOm9OSDFsamFBOSZDKGBYZDRYLmNAM2U6TDEidCJfO11dald+Wj0jKV01NC5ddkt3RjNnPTh1WFZqT3RJJj1OJE1zOVI5YE8m'@; put 'Q2o9WyIpK3V4NV10UEtgdE8jd0MqTzRwbyw+bk4hSEIuUi4pXlkhRjxMPWhHcVRNZ1JJWEt8XTVse1JpRWhKK0BLW05WNzpMbElofXMmK0wjO2Y8V00wbjAyeHl7MUU2V0xNYUhzZ01jSzxRcjEwQGBiWUI4W3lqUWAxRTA6cXooLnRSdyokaiQrPXE/cUtCbUVBTjUwNGZkNi9AXkBFUSYufUxN'@; put 'QzFYUixnMlM8SmAyI3J8PGtEQGFrWTYkKGIvamE2Mkk/TWhYQ1piTHBlMkFmIXNiK0pVbkw2KXJhUyZlXlprP28pail0cGFmO1JmfCt1ME9fRyp5VipodVJbKjw/aWNxKUs3byQqeHhLeFViXnY5R1cyeXB4UFdPM1AuQTAsXkBgMDpseGkqQiFVXyRYVi8wNGJrTiksVXc4S1dmREpWYjhybkpA'@; put 'PXQwfENZNVpfbnJ7Q19KOnxVX2tZPHFSRUw5Km01ZXUxJShPaFZjU09PVUhwWmwhO3lEMTtGTSh2KHVoc2JsJkJFc3EuekZRezF0alBlcC85dntdXUovUEp9WGoibHl5SjxQPTtASnZTb29eSnAhYHQpRER9dy9KJl1sJXNMcVZ+QEdpNGZ2bERbUVs/WGU2dlAjPVlWYlFvPzV7UGokc0U4ZVJB'@; put 'L2c/MjZTc002SmReZU1oYD9peUZYWypiTk0/VSwlIXZmeVhQPmk+P29xYngmLGVnJGcrdW0vKHRVTTRgKTxEQT9edi5sJXYlSTFrPkJGeT1kOD5yQUt7eUNxeGhqNUljfSxpbzF2bilQYDN9LFFVTmZsV3NMeERJOjpIcWYrb0MsPFlDQkhHSCYuNW5QTzg3dWdCWWB4bV5EQVMuaFJJVGBnKipU'@; put 'P2JXeE06S29bSSg4Wj9rYCNTQVNdeDl9Iik5cilQU0QxOGlhMHl0V2RoXiFdclF1anZHYFVGdnt4LHRnPzUqaHI4KHBhISwidW9URGxdPnFqIkpOcmpnMF1XfDZ9MDYyJioiemwkMT1PJn46ezxLTURfN0NMQ2k/dSNje2NOQ29ufFhxPEhYXjBWOm12bmhZfTNCT3dZR2FFZTJ+UCIlMy5IMlpE'@; put 'W3lxbWAiKkomMlJqeVhxZjU9PGNWdTNgd0pdPzBkLl83OShUc0V9c3JMPEBWLm8yNkZSVjMjQm9AW0R+dH1EOEVlX0t2Z0VqYHVobyNtMHNvOzkwOG1iUDVEUVlfP0dwc3Qlezc6IUgrSkBAdH1XPVVJWFNTZnldMX0rcnFsZj85bWprM0IubnZdQzs9KTBrMCFQMVc7Rm1Bd30/YEYrWHR6bFRY'@; put 'Z2I1e2s6T3E6fHJJT3kzYnt3ai5OUXEmQlZVVG5PKCtoLyozP3chISV+OiY4ZVUpWWJqU2xGa1RzeTI/a0A0KnVLfUZfW1ZJWVckaCpRPG9MQ1dIMGlyI2dtKT9xWDZrenkvWHgpTUQ8JWd0aEU/cFF3cF5TamxadEcrXllaJFJrTilrSGwie0IkOU4jInlKQ0k3cmsjaXVHMnF4SWFETExIN1pr'@; put 'LGk5OVFrR3VfJk00d1FbUEVMI0NQNGVaP1MqdkdPPSl1Iiw0PWpWNU54Zi9oMFg7bDY3N2AwYltHJmIjRklWQGREQytZTmx3SE8rTD1aMmRldW1yeysrZWNsSWphdW8jUHU8UkViWFlqX3p6LkA5R2FLVUlAamBzUFZyb1UjQCxVd21CL2xnKXE0fSIrRmZ8KlUvYTMrJEsvelViPGRdZUdkZF9+'@; put 'OklKRVtaV1FiRSVgTmlQfT1zXlZvckIrQSRjPDBeJGk5azEwMSRbLnsuV097MjVPczBIUkJjeDEuPnZTQjZzUXZhUHVBJVBUZSo5d2JsJTdvUnFEekdxYSZLMlEhSyttUiUhInpKPTVnUSRZcCVRVz51R3JlIVdeR14wY0MmYl8wajF2YlVsOCZfdFI6Wi50NyJNVXJnIyFjLj5qVjtQbkRLPjc1'@; put 'eUFNJmtsYTkmb2d6cXw5Q1dKdDovdyV2OSwpXWNwJjhrTWFJIyE8fXt5QXd2bDdTNTlkfVA0aUheIVhCV2BFZ3BIIVB7X3xZVk44IUxhQmRCWWhvRHl0X104M0d+QWJPfj1QezBaXzA1fFFMTHdRMUwrW3NYKitHMUQ7UTlzWlhDUzAxW3pTPjhgS2ZAUUoxO0EpRXpeTk56TDgxZ05sUCVoc3Rj'@; put 'Ql9xQ0MrV3BtO3k1QS4hOWNVYT1KM30uX1U9XU46PVlOYUZOdlZnPG5EOFApUFR4I1Q0eCR0Pk44e35GNSwid1c2eWN6PFJHQnwsW259SkJmT0A4dTpPRio/TnAkVX5dQ2lsQitQV1tjMX42KF9+X357cClxRTBwRmYqczQ9UnRoZE1kSXY/VW9mPXh3JF8kZSh7ZnU2cEFMTnxkXztERXBpN2N5'@; put 'L2UjdHZ0LH1YbElMVm5tYFIzZVlUW1MxN1Yoan1KcV5oal9lR35KQm5EIWNfLzFdN1RzbjQuYnIrPilSIV04WzxUWUVUcmhufXhBYVghK3Z6bjVaV3dgXl12T3hoPXkoMl45fkdrSHM/aU9MPmY7NT0vOi45L2IzciVkVk0mOHo8bUs7YWU2JlQrI1JITEI8fU5rW206ZTJTMUxYdyxFaUpKTTMk'@; put 'ZGBUQEVwbmcsUGpnKHEqXU46UE05KVNkbWlwKEBmXUUpMiZlSHkzaGpjcW1hSEJucjliLzBgVlgwYzNGWjhNRmFPVDdIcmRpcV40VWEsKFBnfjF3Pz4ldFNnO1t9WD1iW11CZHspJCk2WVMydXNoaiVHQUBDKFheRD5+cm8wVUN6W0plJFNmV3BrYDNeTF1WcnpCO3l4Z0N4bFovY0IvViQhYUJV'@; put 'JDkzb0s4P3V2MzosN35MI0N0NDYwPjpoMS8oTUt5ck8rJU1BbTZXOHM5ZW5mO2RPX1UsemNLQj0zI2ksbzUkMSpdYmw2KXVMS0NPfTFkY3ZPKDp3bSJnKHlgV1N4P2daUlFSVGdwK28+YVJKN0Y5dlhrMjdWJH10W0YsLk95YDpCNkowS1Q/N29SSzNWS1VJMzpRKSV5M2FVJGBNP0tOekJgelVF'@; put 'WFJtLE18WkZkaSMyV3hPT1o8YT1QajREZXRdRCtXT2UpNk5EZStsa1MqPywwTXIkRTIuU2I1cjleQmEmY0JQdFcje191cT9gfm0xOHIxMit8WDhJMTY3KF57IyYyMkF5RG59MUJtNy4iYFBRR3hjVXBvci5ZTGcvLFlnYEBCSjZyRSpVPUMlTUpyWXA2RSR0PzcsQGNkaWFBRmd6S14iRHRqKygq'@; put 'Y0p1JW0uaVU8Ik57a2NPUV9AI080WmZuJDlEMGYzNkVZRS96VFRvYEJBIkpgQHglWEB3em1IOm5NQUEueHg/TiFDVThGdCg2V0NIWCN7RFZqKVhTck9oKDpAQEQoKV1sJGNlNGY9bTJ4SGRdKSJMKEAsMEZrSmE0JHZIbUNHPyVncFZwe0Q0cmFVelBqPyU2ezB7W2lKdmJETFI4TGJ1ZVEiYTc+'@; put 'OEVIaExETWR6dXE2JT9PbEk3clh0Qzo4KXxtcGdJVzwsRzRCTHxVSz5eSW4uW21mWF4xX0JqcSozWXAxNzJvXmxkKzBxSGxnSzg7T2w9c0swXzU6bSFeX3s+ZFQ5NTZkVi98WUdGWTdXQElgKXhXQnpnNiN3bHlNd2gsaW9XPiF5Qjx6Pj58REY/MEFFaXViMFlzdUFTJVQsOjNqPFIzMUxZM1he'@; put 'IzRyKFMyMGJRfHFTaXkzIl9BbzZQRnUmVmZUel5+c3Q+T2siRUpfO1VaZ0pOLE9+ZD5LT0FuP2s9cldvREZBenU+NVhfPS9Wd14/YStdQn5YRSl5UWlqMFd4IXczd0lMeSozNGhnYklVTkg4K0FJV34jaWpudHJ3el5IWzsjeVUlY2EsW0I4LF12bFU5Pj1gUnYzT3JLcDpAS1I+b05FYlNlOGJj'@; put 'OXxXTj1qWHEubE4jPTszM2loYD9yUiUwRmpJR1tfSXthMGEiLk50RHltWVg5bTZyTTp5UUlVcFFDc2VjaX0oaENVLFsqW203MUk7QzdLd2BjNX1+WXhvLkxCMmF3YVZkP1ZlSXVtfHc7Izk8fE97Wig6ayRBYD06Nl40Ln0lY0Z6U0ZoNnQkOFJyREQrW3BwTThXSW1lS3dDMi4sW019PSFgaEhN'@; put 'e19UJWBHXVVyOihoP1ZfeCpAUkpPOENXLmwyKXRefVIvKW0qcSw4WE90U0xDfjVlRyZ4JFY4KHk3cVZWIzdCJTlkQ0ZvSTxSMU8mJGkzRzolIlVHIXtKUEp5b35UaCRRQEBSK0RBSFUoZk09fkgmOjskLipSaCk9P2x5LEdeYH5mYkVMYl1YcC5JLm5jIz5oUX5vUS9wdzV2JnVkTmFsQmBiMUo0'@; put 'IWQkfSooLHdMIXdGeTd5MlY/TFAxejspc0Y0ZD5xdy5oYiJJWV45NCZgdWMqNTdoM0QobjNQaSxXfiMkZHMjYUI/IyVrOFByMzUlaUE4ek4/RUg2RlZVXygrR0prTTErXi9vRWNsTG9RWndOZE4heU96P31gQyh1VTtpOm5mPm9pNUx3RG1iMEswJkJda1tAJGNaViNNUiZ2QmY5LjJnMFlHIVZx'@; put 'LGg3JH1UfXFMfGtIIyMzUlgvUHByJnMqOWxfbEFNPkIrd1owQl9xXnBXYC5ASXI3WGxfc2pwazh8YUludFpTcTtmfTsmRnl9SVhuLE1UPlhzZyo7bmJfNi5zb2poKyRTa2c7Inwva31kZz1vVj45SWgoWGc8RypsfG5jXj5NOEF9L105T0djZC8iOjl2e1UjPk89YlN+OEJdLzIobGhwVlt8KG85'@; put 'JmdlIiZYbHdyU250QDFsXj1DaW9ke3VgW11VQmBvYGtJekJnSiE3T3FuTjU/U0x7azEmZmJOMmo+YnROO0Q0dTMsLEEqVC9SaHxfQjpMd3xRQCx9fD10X2NsW2l6KDBNQnopWEA5fEhJSChJJV0rZXFPWVhuWlBuSmB+U3hkX0F7OnJ6aDZiVWglUCNuSClEbDxgTmhXfW51L3t1XnxuQ2NTfnVL'@; put 'RVQyOnkhUF90VUB5Y052QnFKIndTfik9K1hJWX01fHsxYCx1UXM9MD8ubixEfVJbdGdKJmE+UXJuKXcmTiRZMktidHthOD95XVUianRCKTswLHVVSTRnUT1mcT9EUS9iPmF5dzNTTnd+PzBeKDdRTCk/PGZ9SjA6a31mJW9qVy4/dXFwdTxHez8zRGZ+fUdkKl1lbERYeDN2OWR4SXhtYTUrIiRB'@; put 'eUkoZ3JDQGM4fWNpVkxjVnlPJW5qcjhpR0guZCNwRkc1dSNHV0lFV2dmWiExLHR5e295clZjZ2okXksvW19Jazp4TzxdWSF+QSptQ35wemU1XTh9Ziw7ZmJjfGsxZjhMOTAvREdOJi5ia3NyZGVYYWtmc3tbUmJpPko2KGBgLD9WaU5qR25uWWV6ISs0Y2ohfUVBeShYNnVgYlY6fmwqQW5tNFFD'@; put 'cy81QCshYjApZHZEKSRwXnFIaDdSQW1jWnIpblkrNE9ubHMycFRPPjEwJmpsUVp2e1JPQzopSzJPYzUiT1ZeKEhFRVV3UElZVzJOUWBmRkE5ezhEKjxTY1tNdT4uazhuYmQwQ2oxKiJLX24uVEYiSSJ5aVdlKXtAUTNjYD5LeFM2a3I3PyRGc20iayRSU15BO0lLMFg1PTx3TmV1Qzg/IzRSSHMo'@; put 'LCxyP0Q6e3NsZzYuO0ZzYyFLMGJfVDdwTU8oUFBjLjUjfGFRY3szd1NlbUM2NzdZa3pBaXFtS0lVZ3dKZkRaWEhPcENhJShISkh6fSw4Y20sKG1IYFRZNW9BaGc7dy9ASElaNEJQKmgocU87aCx3YWJPNlM4SFQkblVrak5AJTxYSTdnMjRafmRUYCI6eD8+OzFVOzhyT0dnIVBGRVA+UklfMl9C'@; put 'NUx1Tz4wKyh1bEwhQDg0anc0fW5LNHUjITwmWE9uQCJuQ0lHNXhAO3UjZGg3Iz1pezJYX3csOG5+cVcvMilddFkhLmJrMk4vNkFPcGFBIklETzVbPFI5TkZQZCwkSGVgdn4qQnJbP0N2OTUvZDw3MFp+OF9oRCUyalp2PXBBRlhgcX1yZz5VZyJSQDp+VzskaHtNbCxdc3IzM28sSzJYMkttUyM5'@; put 'UXdwLjZ8U208RS93PGd9ejNCcCw6T1ZLIX56dykwfkVEMn1LOFY2M1NOVTp4KVhzQWlpfj8wXWpHK1RVMUBkYjFLSlFeO3N4OF9TW3Y0K1IiMmg4ODJ5NjVNbCFLWWF1bG8kLDI7NktPS1VyfXE7QVc5bEEuRTV7XVZ2fnJNM1ZuV3pYY3h1LkRmInMzQjtRVix6VGZrQjQ+P2tmMy9CbiY4LG96'@; put 'P2l+NixTL0dbcm9hKXk5Wk5CKmAzLmN1Q2N5TVNUdXY1Wy41Rz8jZzpIakkhIlo/V1lpODtqPF10ZXRZWXxiSGdTUjkuSml7WVZ6M0w0YyE3OV9nTmAsRztwMnxoalcyaVNSd3dyXlJQcGRvaylrOEx9cm0+Uy5BaVR3ZlhYYG1bbGAzL25OWHtMVnRQY2siWU4hPDZ3UXpZSHhKKTU0VitFdH08'@; put 'MXkpXjFZeylrezRxJiR+dzxtI1B6YihrM2ooPUQyO3BsX3xlNVM5KkVdd0VVU3V0fXowMi9rQiIpQEVZJnFVR0htUlpqQ01qRm1UVXBZakMiYH1GalQmdl4sUzE5RnMoN0RqWStnW2c2W3thS0peTnx4WkEyZypEdlspPmYyVWtBZU9NSHlnbGlfUCEjK0tSbXslZ0ImLFdUJD55UCRsPlgrT3Zv'@; put 'Qn5MQjxYZzV9Tj15R2B2anU0e2A1OT9aUmlbNDEjPGp8Y1pgQmxuJVEwY1FzQjRBJnJ8NlNfXSg/amE4aHVfYltEUk9CZGs+aFZIUXJST0xgNTk7d19SWExRPH0oOCF9LEh9Zl44aDEkYVBfQSVtS15wR3tQOjpTSk9lNCZmSm9lSHAsfEtLL1RIXnssP3Z2cWtldW57P1J+Sj44UGlmOG00VSRP'@; put 'ISh8Jj5hOH1JV2QwT3I6NH46PVFhRmc5KEI1NVdKe1V3cnw+JFE6JnZrfXNYWkpMK2lwTGpgKCxMWXJURnxPb0BeLD1MbmJLIlE/KVoifXxnRmBncUo4P35ESFJFNVlydyRGfWdnNztddWdPN1hLaHY+Nmg7cUM/UG5Zfl1ORUl6fWgvLCVEZ2w7NUh4QGoyK2F4XTxQZnteLyklTXVjVmRkNGAw'@; put 'ZDEuMEdsd0BfWzA9WHwyNm9TaT1NfHRVXzMoWThee1E6c0IpVzNrOkphMEU5b3p4KFRSQjo5QChKek1iSDJYa3B5UEpjclpwMT1LVlpzNDc7IzBIYjtnSGZTZSp+PHpXTiZyRGZrPl02bDdpLnA6TGExITRmSEUoKixgaWBgbmhnW0xMLHZ5aztSMj5+ekZBIjJ3RWxRVV1aMSYuMDAxPVVZbWRQ'@; put 'fkg2MFdZfCshfjZ6LkRiQ2poQHh6U0Roek4pakRzR0laKkJsO3g7WmUsSEJ5fWhRITUvM1EjfisvSW91eitWQFQ3SWY3S2JNdCo5dS46WGhvYSFLWEwkVik/LllneERhKTMkUEV+PCtpT11halslNXQ/RVJmYFgkPkIhNTVmJjw7LiZINSpKT0lsdTpMW2U/dzloQmlBMGtCYHI0UjF8TkpsQVkm'@; put 'MC9aU3J5VjM1WzpHO15pc2xQTU1NK3VwdVt8MTMobU80MDk7SFEpJiMlMzBqaHYzcSJSbXFxJjBLcno2YXRvVk0lQGw+QTx7NUxdXl5tW3dPWnlVeGVWJGJ1K3hNU1VXQ3FLRzdnPzA2MlUlbDBjfU1zVGV+fm8vSnwlZ1t4LFs+Y2J0azVOQiJzMzdRfVBgO2wwPC5LSispU0kxKHdlejRtbSNh'@; put 'IlA0fllVYU58ZHRSNVB3UHZfb0AxLldjMW9DdXhKdW1hZ1tEO0xAISQiZ0txK3M0M25ORFVtfighIkRpdVlUYkQoSWhRMW9qLFlZZ21CZzNGKG5UXiE1O25oYEBCT2lHJmZ1bEhPYE1aSmBiYXc8Wm08MTlSdyFGO2BRWSEjKGpENk81fm5RIyw0RUkxNnk7L28zekUwKmVHMzlKaTdwWUBZcytj'@; put 'WyJwc01sN1Q8fTFCNURkb3omI3s6Q3hHNlYwV2NbTGAzQUgqfEZmYlMyVmUlTSh8bmFdKkdjVS9ifTwyaj5eNDQrRFVlKnU+fkAhJnJ4UU9lPUU+SiVpJE56Q0wuYzB3U0BkdCwrVCFba24rRz9GSmNxIz5vLzguajQiKC5Lbyl+IWdaIU5AQTYmbkk0dioxP1g5YixpMnxLTCZ0cE84MHYqWnp2'@; put 'WEIoW2V9cGBTdDl1Pk9WRVBRM18yT2o1R0xreGNoZHhRRFhEUWIjayF4UEpTOlY3T1kyXnhOVEYoXnsrZEQieHowd0NWbmxiTVBQMk46bXVWdkMwZS5YKGM2c2BTIXc7QzpEbH04azFjUFhFLDczTEMkL3E6S2Z5XnElVnFTV34+a0A1cSZ3S0p8ZyIuSWlmckhufnpFdGcyXzJUOnJvdnwjeWFm'@; put 'PjslNHJdOkZ7eD1aTDNdcWg7cGlxInNXSyoqU0AucX49IilOU21FSTN6I3VlQG5ERmAoZGtPYXZpOlFCUDx5TXs+dy8hdEh+dHJTdVUrUHdGT0kxRVZENFE0TW1mZ3JYdmgiN2U/Z3xCQnB2Q1Z0X3xWTVgxc3ExcH47LF1gN15qKyNkNSFfdGtoJHJmNU8lRjw0eT1ga3pYIzdDVjBPL2N3OURo'@; put 'RT15XzMmJHUsa2dCdEdqd01hbzkmMWEzIWZoPFtxaCFSSUMieUt3fVBkWy5UVGFbYj1YXz80eV06QGNvMj1hX1tfdUtgNlNrKHVaQm5ZemtMT2x0QF9aJWNlMyoxZCp0YjVTYz8+MihkYDB8USF8a1NWY2ZXS3I4cT1xMWEyRXBQW1I6OWpIeF18PnR7Kz0mKjRSWkZybFomblAuSjs7Un5rdU8i'@; put 'cnJlZnM+V19kOk93WlN3XStsMiE5N2dbRlN1aEg0WkI+aWx5TF5YUUhwYWNmZVRfbiNgPnQ8OjldJTVEYyo/TWJ8KSk4LnBJQ3BVdlpUaHR5K0t+aDAuaGhONlhIMzo6VFZJSmRXYlRtdz9QWnxSV056PypSLnVRSk4kUmkxU3hKVio9QUcucSFjPyR8RTo1cHloI2pweitaSTZXdXYscmFAKmR9'@; put 'ZlE9ZHVyU0pbPlE8LDFNTXlwR1R4XnpQVktOeiwvKEleMXVZMnA1OlZxWzxVY2E3Ljx8I0p0U11welNrczlKS3B7QSNYWUA4M1tRVjtHd1RJKD5xIT9yZnsxUEN5RloxTmhsSkRKcHo7I1QpInZfdlM+azF+MTorYFh1PSwuNSlbc2dgTikwTj5HJm4vUCEoWW9QI2VkPUtVMTN4dFt7QTh8cW5s'@; put 'Qj8lb1BFSXUjQXBYX2l1I3toMj4wODIoOyxIYjllS3RSdzBGSTU6K2FteTJVT2dRK2Y5Zj56UTpAYmNeeklFTyQvKGNvPnpDd0FUa1FyVkREREBveH1AejI4Tj5Sb2g1XkQ4fWF9b2VANHJIMz1IK2IzYXNDSl5mI3pbRFckalVRZVJ+dlJpLkckZnA9KCs1Z10+OClKJltGcT54V3loTEt5RC5r'@; put 'Xk1fVXRdKDJpaU0sOnMsM0peZXlLXV1uOHFmV05eTUBUaUxJVkNqUi5aNVJSPH1rRjw5Pi90VndmaDozdXl8IWFeTnNXLl8uTXJVUjUkZjROaGs/cmArQnBgIU8pJmdaZDRBNGRVLytOVkAoK08mP3dwXnZKVy5PbVhFRkcsbz1+dCN+Jkt9KXUyRGYhXzVjRkReTXZwZ1RVej87Rz57LDYqMkQh'@; put 'YEZVLjQiaTN7amZBYnxpUWV6a3xzWGohaWtOblhnPzwocmcyJkcpKXpFRzBpZUJMY2U8OjoqbXgvMyJKRmkyLipJdkY/aUY2QHJLOlplMSV6Wik0XWpdJnZ2OUNddFIhP2debH57LDhjOmJfQzx1R0ZhRjcjT3UpLCZdXjRKPyFJa1d1Y0U+ZFomQllyNDEoWlB+Yi8jPXFSNjtVQFNraUd1dVg/'@; put 'Q1l8ZGBTSDVjamk+ZEphNmBHc29vKnRlczM3TjpkWEw4I0B3S143WkVmeHFrajN5OWxbLn5nc2h0L3xESiwibylUMCRMcjBYOF5jTVt4UENaUFA0IyJJay9JYUNYKE52TiY4O3csey9+WnB4OSw6d143MVohSEhbcz1dN1YpS0NPSEJmWUs1dU5UdnkwRiJTbGBpY05IQVEmbHkkKD52IyRdPEpL'@; put 'bHhEOkB0W1heS0hKeEVPeXhibCFMOD1ienUjaCQhSlIuV19Icyowdjp0OVJPI3tWPkRKeCMrc2J6UXVGL2A1amssL3wpZXokaihAKXtDbCo4ZXFiYTRnKSFGSjdENj8sdStQfiN7bEB1b3wwclR9SC9UVSVlVkssaCouNFp5bn59dElnaiNdQ0ZbcTdzcDF2YC5MMSgqfGRQdF5PaW58fFdxVit2'@; put 'b2Z3bHx8R2dARjFaalJ6PUldbFNASUk0OyQmRik/YT0qKDdFSTByKi83dl1ydkZkY1E/bkddRFkuTSYwJXBsUlslLnxsezdtZmRpSXRTXnhhTHFGaXZuckl+cUgkZTFII01qPVJsST1tcG13eHdUOTElPG8kSyN3KHFYRUJgK3lMTz1aPHYwckFITGVtdHJLbCszfHIjWTdFPjMqcDE2RTxDVTJm'@; put 'NVA4RltnIzM3PipAX0hZcnIkeiE4fTVtb05rd2o6Z05ZSH5CVVhHSWZYXSZxRkxUYGhQVU1lVU5vYE14PVV0JSUhQjBXNWVibmN5bSR0UFdFPzZvNW91ZzNbSWBYez4oL3lgeyQvL29leWciYW1PdjIhNkBmdFYkfSRTVW80OCZSSXh8fioqbGg2eHRBcnJzZHxqX1FhPjxsfFM+KEppdFVdaSM9'@; put 'O0t4ZFlKRU4mayVxV2gmOVtdRVd8KTx1OmtqRGRwMUNAOF0wQ0d5ZWRyWF52NyFMPy9+XXUhNyltOFZyTnpuaElAZnFiJV8rPjg+Mn1VYyRtbDpuQ3Z0V0QkV3FVcSEyQE5tK3M9aGUoSzJEZ0h5aj5tVm8rMXsvNm1nRTdzRm5iZy5lYnp9RG1qbmdxSjJyVjM7dDp5YzBiUTBtS1o5Xk5WT1lm'@; put 'e21UfmxpWEllW1lfOCNiQG51VjUuXmM5UzFoaUw2bmVFV1UuTzopeHYqT0FSc2lWUHdXWzNZJm0qR1lzbEx9WV9ZZ0ZWMW0rNSNhcnpMUGFycyt1QmxRKDEuMm1NYlV8X1gpekwvNSJhSyZ2JFUrUSVpSHx1NVo0IypxUEo7SSIoejlGKjVrRHBRPmc4bmlOST1fSV11RnBZVjhhWnU8aSQuM2xv'@; put 'MDNTRmdHK15zVksmfi9LOFAsYHQoM3FJWkJJfV93PXNpN1pvKyZBP3U7Ql5nbDFkWnY2Yyx2YD5lMWhOUzZka2grIUBnKjdFRVRvQEBgd3Y3amV5cik2RTImQEUuQ2sxI213IWV7JGhTdV1yLy8kbik/bWV9a0M2ckRZZyZOQihBMGBoJCszcEJYOnRDKjoxPkpLaW1jbyE5OyY3T1NFe3FbWC8k'@; put 'YVtKKDUyYWQ+OFcxRCx5dzJbPVdldVldWj9fYkwkTC5CdVo1QV5iKXxHXzNbb09JckBZKnZoTVc2OGt+RU0zflBLO3I4Nis/UCopaTxAYEosVnpZKzU0PUhrTFBfbTA1IlQzWGFvfU97UlJ2WnE+JHArNDpnbypCaDVLX29aZVlHJjlvdTZhUlpwfnVeR3xhRzwrZX5NPDopSlljM3RfPSxkYnVI'@; put 'SGFLeV90cHllNUIuS0oxTjQxIko7PWt+W1l9Ok98cV17R3A4IXR9Ok4sa31XNV97JU8uRCw/LExKTEhYLHZLfXZjZE04NndPaVBAOH1kK19tLHU0PS5+a1g1ViowNjAkT2MuTGJEKzcsI3lhVShwPEZgPCorWT05YC94QFlVYylNOEJDRjZGUjw7Rmk4eWFme09KNjE+VGt5VFJNVH1lbUc/SjtC'@; put 'fmlAfGltaXsyZmZFOzQ7RkdNJTdvbGp+eSwuaExacSVYY0hOT1ZkW14+cEN6UWZrRkxgXk1EPjp6Wjl8Uih+aThuVCV5Q08lfW4pVD8wNlBiTkxQUmk4bGlTKDRoXUg/IzAxJFIwPC5dV0tdTjUoc1NESnR6aypMb1N8RnBWYVdjfnMkNiY4NiZFNn0rU3hzWG8ydkAyKiJqOTxtX1UueUs1NEt+'@; put 'R3F0KTlQVWNWMmwyM3UucFVIcVpoZ2c7b3swfXoyOFJoYWA4MXRnPm1lX3JTKUB9Ql1zPUBtYXEiN1ZrTyo6b0pAVnM7VGNnaXJCbDNuWVRoeWlAW312bT12KkZ+Qn11L3tFfVNBKlE6MF1oOzZIY11hIWZ+TSt3cnsodCpKYV07SmFBUCIuIUxJKyNNeCthPzhxYzRRNmQzWkM2SSM9UEU3YT1D'@; put 'MGxOLz9nOVowaUh5SmRmVVhDeyY4NT19bGk3dT10OExQUlR6RCMmbEFYQSNBSCpTNX1Hcix8QjVwOFldLDd+Yi9KZi8ufigqTUV6Q1J1VyVobkZvX0FtXXMqfi43OXVNbEQsd3M6QWJDYUFYWGNRJUBqb3J3SHUjeiE4X2NUVilMfj1ndyRqPFgzQkh0MXk/MXQ3PTxkPm8lTn4jb04iaERLdXFD'@; put 'XVRLY3NpZ1MhPUgzYjVMPX5MISZ9P2dXIzA+KndaQVMrQSUhdGl0S1N1cD5RZmEpJDF3az9tWVleT0hFbDcuVl1PL0xnQ3FUciJTdDt+JCVAa1RtcVc9T3IzO15KW3R3RytTWlE9N11+KEx+TSlSfXtuJkpAVjx4aElneylEIlhoOHduTkJLfCJEUHRTOH5tLEN2RztCLkI9aG46eiRDRFVCPHx1'@; put 'b3xvRWNLdFQ9KEtmY3Fid1FZazY3ckFsKVRMYTIvVTkjcF9gekloXk15IkVxdXZ2TyV+MmslLkVQIUk8LF0mSkAhfUpBNHR8X3J5bEZ5SkR6ImEmTTd7JTZZNDQ5YmdyWm5LVDZMIzhseVVdRUl0QHVnZV5vLFY7aXtCQ0hDZi5iOGxKWURxPCtaWGYyVypZQzdSbyJ8LHchby48b0VRYXY5ciVj'@; put 'VG48e3pbYnpCJj19RHduWmUyV3hpZ012SndeWTVkOi5yPTx+LDZfL3skLFg3ViwkOnBDd08+QjZvcyw0R0t5YTorRXhmZ1BJXl4vNmwkeGUwc1lXUm95cnVXV3JIZ1N4Ul8mUzJHWjp5Lzo8Yjl4XkxXVSRIb2tlPSFXeHV0aUQhK0BlL2xtbDIvPCt6aWN4QVEsdzw4ZCVNNWxbZS40OmZpOEM1'@; put 'VWxrenRUfjIsTFt5TyQ6Nlpdc0VOUD9wWDdUQCN6YHssaz03cktdSmwjNkUkQmxifiZbcEpBRm94SENkWml2biFWVF0iXTlxLjlQNjpWeXUlcCR8ZD5FKTM8KURGPzJXVi4zK2VQNGhfY3QlI009cmlQQU4qPF5GbU95OmxqRjtQPzwhTDFNenwiLiomODdtaGtMcz5wPnBXXlspcnxvR2VjbCZp'@; put 'cCo2c2xXQm06ei9FOks/U1Q2YDg3Ikg2NXQqYkhHTXl3aiV+PnhQPWNDcEZyRX5xZVJPLzFdejMsWkBUQzxocXUmSHEoSChNKGpoQWUiMkRYdHpFYHk8KS5aS0M6d3BpWmouV1g1ZyhAKzFpRWx+KSN7cUBFb3dHcEo9JEZfKUp3Q04+OjB5biFuTH4meUN6cnl8TllnPDtAIyVwam9lOXouNHhG'@; put 'bXxZUjJdLkZUfE4vSG1tMFdFPlM2NUVjK0lMcHJJcyVDYDsiP0tDLGo7fl1kIittTXA2XyVsejksWXMvUWwjRkZuWDNsRXh8VmVncHQ9T2VZfCp6azEkI0ByaX1UUTJtZ112bWFNJUd0YipWP3dLUCUrZilDNXVmOTlDbEAwTDF9aV0iMCRePF8sb1tvY0VCWipLamAvalk3aU1kV1Q2NTd6OXI0'@; put 'RCIrQH1UcDpoPkxGZn0+Wjw4JmtOLDJKeUw8XWRxeTBOMyQsJCV+WHc1MTQmcXIpTnN5I298NzVbK0Ihdjw0O0U4fVs2VH5bRGJMVy5rWD03ODMsMiNUMVZGa3QkNGt8MldGUVIzIyNVXU9fJCU8THMucix4QEdjNFJiWkFzPXNdOi5WWGBKVyF1UXhIRUU6Uz9bdTVhYXFUSEk4Zlp1eCZgNG4w'@; put 'UVd7ZSM6d1pQJlpObXJJImkkQUpGQUIxcU8iZV1vUCRvPnlSeU53UUNzYyImaGk9U1hfRC49OSxlKyFNfDEzM2d7RDwpfXB1RF82YHZHRnAwMW56MT5GR1h4LDFgOmhuemhhUm5bTUM/PGNLYzZqekZAI2czYDRlMVdRckBJLGtPdjFrcXx4WnxsdXteSVtEZTtid3BeRlkuX0JLPDk0aUsvQlQ5'@; put 'Tk5wTXJxc3lTRyhZbHp8OShtV0dCeVY5XmpvbWJNa3tEVUdgXTJTSS5OWkZXLi53SV1NL2leeFAwWD5XaUdsb019T3lBMExUWjliVEYxJUhDJS9ER14sbEFNKk1ePUoyLFI9PSksfUMsWExBOm8iNmAqelN4ZkZETWBPdnN+QGdYRUtwdUUubzAzWSQlant5diZ8M3REND5QKSM0R3p7dGZxNnho'@; put 'aEZpRWI9Wi5TRWo/YVFxYUpOKGZ8a1I6LzJ0PEUyNnIyIV92UldPRkMhdlJFcERxfSYvW3BXYyxpcHJrfVtpZzw+bDhnai95cmlYSEwiWHIoYmRJJltxUm9+eWMwKF9PSFNVPTVRclZYVnxiKjxGT19RLFc3UiY+dmM1ITIrfjhGNSh0VnByQ0t4YDU1XkZYLDdCVUVGam89fkpvPUQrPiR9VD9f'@; put 'OykrKiFUWm5tK0EqVEtoMFI+Mnt5eTYiPXFDQjZ2d3h7MyhubH4hOzpXa3t+aHArcEYpZypLWVR+QGtFfHV0WkAqKV41a3MrMVZ4QHQoaSJjTSRhYyZNIXljeCYyZlVtdlszLEVIbl95WVdJLHszV0NOZUR6LDx+WipodXVeUXw8e0t8UyFSWDdDbU5sQCJ8KDlgNjBRd3BRbFdYMHNpMzQmVV9e'@; put 'M3F1WmBqcFZmbEd+IXBia3NONW81dzhuc2huRil7cy58SFBuL3IsSUw+Pzg9YnRuZmAmQTZ9MUpbc1pyMlpxNk8wT1U1QHxEYTB9Qzg/KTRgJndbYC5WQDsmfVV5cS9+OTpzQVZdQGYwZEp+dXR9fWlpJnJgMTg0SmpJa31RKixWTk8rUl9SSWElSVhVaXh+Vj1HelFzUDs9cVhXTSxZdzBmekdL'@; put 'Pls/cVZSKV0iJEwodCk5SG1kUGFofSE9MFVUKGIqOzNxU0A0W2I/JE90dnJbTkZfe1J6LCkzaT1MXkI0dnBRem9ZKEhhX1EzREB3cmdkRiM+M29OO0tiSXk+NylNcyVQMGUiW2twejpIYGVzan1oN0toUGI4Kmwwc041ezIvXjB6ITFdX2RLcz19V1FvRjZtXUMjX2c1NEVPQiI/dz5KKHdefC81'@; put 'XWEiPW8wMzJDTE04JTtsSkMlSWlqeGhRP3pHIjZuUXV6Tk5WNG5RJDtVakVZJSpNV3JzRl9wJHVePD5GdiRFOFoiVUp6QzEpWEBGWn1OMSVvX0FbRDw3Ikg/cT10RkU9VDdUdlRWX3c+elVtKDR8YT99QG8zdDZmTkZxcjt5YltYQVMhMiVveTxAeDQ6QSZFYHVyfWN5Pi9taD10PXsjPmQyakpl'@; put 'MFVVX2RVY1tQfkljRUlPNGVecHtZKDFkKWttYzMha3JIZHp5cXdyVyg7OlRRb1U6cGlmJjIoXilGX2tuOHUvOFpgOHw1PihvSSlBQy5+c2twMHlSWFt2Yz5XRm09ZlEzInooeCUyeypRfDxRaEw9YnJyLFhJdy9ZNSRZKSp0YldKaT0wY1VmW1MhcnVUSDpZW0NEX3RfT0hgOGd7Jl92W19EMCxK'@; put 'fVBxXUhUJDwpR1E5bGEuNnZ2On1eOWdfUHA8QEs1ezxxWGdNPDFoImg6LC4wImh0TytgdDc7ck1pN29+c05gaXk1UDM1WitRW2I9RFtUc01GIX14QnNCd3llXmleOytyQWNPJXAzaFssVEdkR3w2WClDSSQyTy84S2xdLklnSC4mIiVyQSF8P05ZWHRybylDW15xNkVZZW8ybTU7PDVtLy9bPVpX'@; put 'SEQ6Ly9jWi55YldMbnFmUTghcWtiNy9zXV49fj8/Xy5UXSRkX1NkYD5RNHx7fUc8SnE6aDFya1tLQW9QN2FwMHVPJnhATkFtUz5dKUEvTG5UbDB4ZSRiSURvPTA6KzxsJFErUCtOK2IofS4oMV5wJSxjIXRTfG9GJj1WWSp4MFszM11MKmA5cmJHS1peVi5zJFEhfF9MYix1ckFCbi5wPVNTTSNd'@; put 'QyZOUDNAJFRLeW9bKGhySTxCeXRdZ2NHV11qeU5PLGdmVE4kUVVRV2pzdXpfQGovIk1WUCFZVmdtTisyfixdZSRDXjM8ciheeS5wdWNpfEEqUTQpL1tpJCpkel54PXtpeUB+OkVUeTxOXm8weD54d2BvdDt2dj4vRlk1XSkwfX1WQ0c2RWJsPS95Vnt9YnhPKkNrNzUkbSlHKmlXX3Y+JmhvfGpN'@; put 'dHxgT2A1UnBIfll7fGMoNSRkdGxEMVU2PmViMUBPIiU2fkhgNjM9d0oxdjhKS3tYfD5gP2R9LCY2fCVOeXBFNGcqTDxjWltYVjp6ZkU2TG1hX2FPK2QzeCppT2heOTwue0B1NGJuOyQjMXZxVlM8Ly4rO0E6QTtgPU9rb0Fre3NgdDtNYEoqcyFhbmY7I11yWTQvT2VjaC5aRD5uODlFUEl+d0Ix'@; put 'RER9TTx7fnZjJnQ/TTtzZTZyMD85UV8rO15scSg5LyVpXXMrKm9kejspRnEoPlFMfDt8fTFUQlJnZHtvflp7WjxyZXpDeShBUXt2I3d8VFNgdjB5cD88LDVSWlV2ZWtDVGk1ejtVWWpqdHVpOUNgOSVsdVRkY303Lj0ySkt7dXV6WnlHT31edVZQeiJ7JXxbYT9ZWV1SOnNbPzNneFF4NHxELHtt'@; put 'c0JnQShiLFtyTE9mSzNhZSojeXJUXywmJnY6MWlDLnJpUF49WjN0Y2g4NSsuZ19OcjJGbVZFNWMyLyxxSy47WkNrLkZGLyJ8Z2FwMEs4WXk3e1JuXVdaWDo9cD54aX1hUVl9fWZNS3M2SSwvVTFONl1obkJmTU9HKWElKH5CVU5AS0gvZVl3VE8yQDBIQT9+Pyk1WywmJEY/THRvZFlHSj1paHgi'@; put 'YGJ1cE90fWcwQEdXKXpjVjNdfTthJTpBOyp4NzhZUSFeVG97cF5VXzxTZ31GfSFaO0toLzZOKkBaemxETjdhbFMrdWJ4SiM7LkRIYkMsI1ZLTj9ESFJnY0IidjMuOS45ImRLRjE7TipuSkAjb14pY3B+KTUiTzNNQiRxVWEudnwuOS5ddnUzJEZqOGNCJHFXWUFfZDVVVyR9bl84KEtCOWBEb0lq'@; put 'YXhUKkdMTylgSUx7SGt1WlZXPXA+T2RuZVshYEdvKTVfOjUkI2BtP1libkUkK3NjaHhpZDIucHdafS5ad152YlBeIW08ditie29ldVdxaVVdM355KzNJRktFMF5KQGRvI21Adj8uMUMlfSJdekZ5MzVdZ1tQM3BqNT9sYU16X2UwfmklQ3t5MFczWjwiMSk5Ozx2PVtbXWVNbWJwOSlpU0dZJFpB'@; put 'OTRzUFI0R3MmR0M7dFVzckNZKFpNbDBzTnRAYFV7OlNWdjkuM0xVTVJKb0h7TitheHdnRH4sTEcwMTEkWmZHNV8/M2xybHI7dlNMSWM4U0VZb2ZSaVNAbz8idFZjJl4zYmtlPkZWWHMvLncwcGkrZUBdNm5LJkg0MVg3JDVNOyIjNT4ld1Z9RWRNYV17KV96dEFEJnpCN3Z6b2U/SF1fPjNTZVsz'@; put 'XjRffWVAJm0yPFtSNTJ3Zyx9Nnk3TCJlUTxyRWhvUzVLPnlyLnpYUTBjK09QaCNaS2QmWTRWRXk1PjlTPT1qI1E8KzN3dmF4NUZeNEczcmV9K1NGVytLOEpQUVZJQEhAXkdROElGWG9jdUQ8bzNaeXQvel1FQzxvY3UrXkl+XmhjaD58d3xhaGtabFshYHM/NVhfWX1RXjNXWklOYXQ0TG5uZC84'@; put 'b0R9OT1fLmY8ZD5ebVsuVT0sWjhGLzl7fV8+Sy53VTc+fFVtS1c7a1sma3Fufm99eT1sZXUuVXA5ZEV1dXJEN2k6Ok17b15sWz1RRjYvR2Z1ayxrPHVwKHVXaF41MVU5ZSkrMWdMMSRyUE9yMiIsMkVfanFORHljSmVia1NtPCI6LF9KOks5V2B3WWVYW1JoV3c5ZDkxdz5daEBgd29PPmpPaFtg'@; put 'UDUjSTxqfFEkaFZXOXR8RyxBRjIhPjgsTW0kJERpcSkjYDdoRCZ7XXYlWU4+bFhmTDtwKm9AbTU+JjZ8NS8kNH10TixoUUowKlc7NiIpXlZ7UWIsS0h2enJiN0R5ZzU0UXlzdzVJaHcsQip3NUx3RyQieDFtK1FtTWNVd1REIU18TGdNa0Brc1l3NF9DTmJdJk53WXpuXmQmb1BQcTdjWTYzcUMx'@; put 'PUxIXkY+KklSKGRGdylIZlFuYCp0NGlTUXB6VF5BNCN6UixQfV99RzxgI3ZbWXNEPDQzLC56MCNNSUApYG8/aT0vYjJdK29lVz1PfFs8fXNDVWp0UGxTUTBHcjNaM3g+X19GbGtJc2lUKGpdRl02SUFnU0NScmZHWXshVEomPENGKXtoKkohaUBVa2kzaXZWTXIxTnNNYU99NG54bnVfYldXKGVf'@; put 'PClIXmtAPD9IaX53eH5MejlEYEwqPTtdZnAiNVU9SWU5PCJ6QT0uKD1qdCIiQjwhTVVzVz9lcT96dHciLGpMP3Y9Nm5mamFCIXw4Mj1pbylfJiN4Unc8cnBaZmB+eTxnUGRgTFsjbVFjJXdJbyFkbU1HVmpvd0tubiZ+XWJNPyF8W3R8Nyk2VWV7P298Zn07V155OmNtdEkiaGZpPH1BTDdZQjwl'@; put 'cj1nS1UiSC9HPXRFYGZ4N1B3ZG1Za0ZNT0xgPzBJZVg3YXxSOSVrcjFiRHhaIU1SYT1ga0AqNXZ6X2smTks0fj5jU1h2eFs7N013YDAzRGNWXU4mQUg1K2lfWDYpOElzSCZBUk9KSXtXOkZGTnppMHE/QkZAMEFIMDlSI3txdUs0VEh1UjA/bTZ2RHAiIU1xWF84MXF6PSxJWVIvXmpFWk8vXlth'@; put 'fDdJSTs3X0tBRShaNEd2IkglVVJHOjJ0ZDAmRVcwQHcoeHhaeT00MTQvWlVLSTg/OzdELGFWUXo+NSl3dE9GSFd3fkwxfDRZXjVuWl1Ob1lOYUNDREQvXl0pOVo0Tk8lVVJjXU1LSXpHUiNHRiwudlZjNTZvYFZqZkRzMyQjLGw6I05yIy48RXFUaVR5Pj8wPmRKW09HYSlJREV+fSYhMkw/VWgk'@; put 'Q0UwQyptbms/JSQuKF9+b1RPU10ha0BIJVp5ZnExfEZFd3Ntb2xJaVlMfnIxXXtSZV1fZCx8MXUxcSZjYUxlfnFLO08sak1kUlB4ZSZNd2U0SltjJExkTHtTPyErSzlZQTIuYD5JOy9UPExyQi99WlhednB4ZEJQTW1ia2UkVnsiVnhbZl98Ykpma1tbNWd3K0FmLj45VWNEW01pWlt2OlF+cTFF'@; put 'amZNKFZDc1V1MTN8PnRESG1ic1prSG1ifiZVUiQ/aT9NfE5DbHNxTEBnVVVSenBDSF4zVChGM1Rubk9CKFp6RlVOcVVEQz4mfFEkfHBzM1QxSTx2JGhAM0t1LmcrSD10S3V1JTNkKUZxRlB2bHBie0VgdD9bI0k+fi4zbSNDdypBL29ERWhxXyZgX1VjdWcse34sOyNtTCtSK0E1QDoyYG9PPG1j'@; put 'MWpWNz5sWzJgbFJSKGJ5Zi5rTmtzMUtlJXE/Uno4VmpCYThyTzdXMz42Q3F2cW40cEJ5JmlvWD85Om1zWlJdPiYlQjViND9+Tn5lMUchdUpaajliXSxnLnc3VGxnRyVDbmxhY35RaV9CJHcqK1FaMkdwSzspNHBhPThJL05NLmQiN0UxfC5mPXxFKDVTYUBRbEwrY1sqQzRBeShrX3xfO0xSSjA/'@; put 'UWw9QE5WblZSXXh9PHNZeiU2LCQuMzRGcj9bKTNZJn0wV2ckfH5VOTQsNntsYFVzIWcxZ3ZgUyM2Ln5Fc3grXixiPCU7dnRHUmshMStkckI1YmJlc0gsKGxqX3ZlTUdITVVVXWZTfFdXMD9gMW59Nnl6dGJbayRiSyUrYiJSdz5WITwoTmxmaHlVe0NuP3t2LFtwaml8Iyhqe1RSdFdiVE9ddjJZ'@; put 'KkhkVHRSeW88b0UlK3NjeT1KSHI9LjZJJVNocj1zT09SVD1iLDhjfWRXc3pjU2x2JSUjYX08QGtde18/OkI6VjNwRDs2VT9hMUszMkAlNWE3VVkrTkBuPy8pZlVZMVFgbnUmUm1OaHRyfSY7NF9ocnhbV0Yzcn17RSZ3OikkajhrK15neG8mTiVDbjBRfno0TH1UajlBanAmX0l4aTpMbzhRdz9q'@; put 'T1J4XjJ4fDNwcFZqZzZRIU1MNExxdXZMT0NGNGNlOGtTe1dCJiQiZFF9PkZ1ans6dmJdYy9NfituelREQUVkRENHc0EiZjhkZ01NVSswXSptWCwrZU8iaDdzX01vPGxDUzgkJDZmKWEhdzkxeENdY3lJXzNTSkQ1bFJwRHw7dzErZF41ZTdIUlQwYmZTcXRrWXZzcyolSGZ7OTBpTjVKWWEqbHQv'@; put 'RjtWWnhGUlZYd0kjc1hRJWRWOUcieDg0SVFNfTM9aF1KPV9ZZSgoNG4sQyU/aitlNSM0NUZOUHpjSj42QD5pc2NqTHtKXjc8Q0JGbiovVEo1WGMxUiRNTE9sVW5ebiUwRSRBUyF7RSYoQXpJPFVFUVVQR0tDSz9KdnQvczhWQls4VyRBSWpCckE1W2JIY3pwMVlZYixyNlMiez47TzB3TCI+Sk97'@; put 'ZEoyIkBoeFZXP2pEXWhrK19xITx2UHlDR1IuQSk4TCM+Qz5bcW5ZaVRjaU55SSh0bHYzWlA2WHhbRlRjaUZiej1DW3doNyN+REEwMGNWLEdMam4rRj8xUT1CYy9yMShIZnRLZig2ZXhwLntkZ1ksazd5VkIuQTJSaVBZPGRaP0JoT1o0djtaRElANnlpYTxpXUpMdHkxIXh3Wi4ya25STkJGcyIo'@; put 'eTAwRkspdmdMKlQud15ocksxSDR0OjtGIWUrTFBMREFEaz9eUVRIc2klc0ozXSIkKENmTzU0bnl1RzVORlsieUlJO0xnXUMhWCpGMEU4QG9VU0NJOCI0cUN2OHhYJlZeaFFRcnZgKEkwJWwrTlcpM24sVTEhOXlNUHMvfj5FInhGO3Q7MS5Efkt1R0JMV0FyMTIwZmdOJXt6LChifGZHZkRdUExQ'@; put 'Y1JWWDVYWnw7dntlVTtGLEZvL0JKUipLP0FZJVt6JVcmazdhZTR2V044amMyST8+NitvenUiKl90MV9YMWkrTkdsfllDQyx1Y2klczVLJm9rcmB0PnVncj55I0RfbEkxWEp3YXEoeEJRdn08ckope2RdQkNYP0AlYSkkbS45fTlgcSFeNTplXjpAK0AiQXp+czlIIShoTy8kKVU4WH42N3Nmcjwo'@; put 'JmZfNyFuaHB4LHlVKEdyfnNtcnhyWG88JkttUk5NOyN1T0ZrN3d6IylUWipbaWRlQkQvOGthb0JvYGVhTy5NN1lFSGgxSEhXd2A3RDVIKGkzYlYxS01jalVhL1pfWTNwcmAhQj1wKU0rPnJhZH4/IShlTk0+aVh+VTxvM31UWFMhXmV9bjhVOWo9QGY9cGRRQCkySWJqLlZ+KjBXU0ZLRSEhPzpG'@; put 'RTd2XlhJKT1US0UmTmlfbzk+ckg7Yiw+WUlVMlFrUXdqLGEubDpBIXU4ODhXRWtLNXN0XXhufCw/fnBwektRfC9vUiZSP0I5UCksIShGalNQMmA+Z0EmKUs5TVd2bjs7JF5IVFlDfmVJVmhyTjNxeSV9RGFWLnJCfntWJGdgSio3NnoqTkZ+WWdgJl9rN1hdSURPT1FNJHQ1bGFKdXsmYmBlPmR+'@; put 'SiRteWNCKFVadkB0NlpAfWM0e19sZSgqe1RLRkhDN1ldJT5+e2BhLltkKFoyQFt+VGYuNmJOMyZpaWA3aDVTfigobjo5JWgkfHJ8U2wuYGpvTGdEKTIwW2VdPiVpWERSPlY9UHhiMH5CcD5zeTV9ZnhSXVJfPE5eO2xTZiZte0p6ZS9CRXtRK3kpKjRmamB+KHpsWStUI0Q3cXZCPFg6LEBbUElR'@; put 'QygkI2w+fXBmVXo4bnwqIzR4fSoqJCpqcVBhXywleSRTfCw4ZyRdITNJKDBqMFFXNmNrc1FZanRJLmZXSEkxe2J4N1A1U15AQjdIPm5iVzIhWmJDaUs1QlUmcFpTJGNQKlZ6Yzs+OFU6NGsrSzRdYkE9Wl4kLChoJWg7alErJWEoJD1KWUo2KXM9OjFhdTldInVdVFdGSFdtU0ZzfSQiOEJoNFM7'@; put 'Sj99XnJbbWlqLElvOWZWYCYyQFFsPUVuc3E4dSplUWg6I1MlQGVBZDpmQWp9IXFKSSwoZVFqJGFIOW18LlcoKV5+UnVRIWJnTUNKI2J8OXxFKm4uTGE+UXhbUlJuJG05dnZdSyElYUJNYWlid0pNZ0gwciFiemlVTUssNiQxKUtdaWFwRTY6YyhULE5IT01ROS5AQlYyITJESXouP2kpPXkhOTFD'@; put 'MG1Nc2l8SlgvcENeJnpLeltLP05qdTtgcUpOR3wlcy8pJGU8TildKEIoOU5CXjIsfHlvRUF2LCs+OW05VWV5dmppMklMJSVNVUAvSXNXPCpkUzl4UWF5dmppMkkyd05WTlJuL3dVbSJydk5DNWJndl96Ni4mWnV1OEBqczMzK1d0OX1IczRnWExgW1VxakgzMi4kN0w5QiZAeVdqLzk5cTpOOWdT'@; put 'RHAsTXM8dT9yPkw9PV9WNFdkNWJbfVpUXTcjPng2WGMwaj5DeHZMMj8mODVCdFkmeEA8VzJqOUBiPWNWYSxFXkx+NkF9K21DbzIuN0NJYVhsKlJiJl1jSU5gVWZzdT1vOlN1RUZHVGMwcWg8MnduMHR6RT9RKXUzdntYNDN7QltmL0h7bWt4N2g9MC5IMlB3RjViTGEwMVBpYGkzUjg+NmM9VHo4'@; put 'VDcuSTk2eX5Ic2tSeip4WUQ7Lj9AezdsMFk8ektvZm5dQS9EbkFedVYicSl+UVJeYUN5QGlTV09eNF9YSU1DO1psW0lHbkksSEN9QVE/TXROb0V4U1MjKnd9REJMent0STJmaVVkP3dpSklET3Z5W3BwN011fFVNZjJVY0dOeUB1YltJP2kiMiV0PXFSWWcueWliIUVxOUA/IXByMSxMLGUobENJ'@; put 'WGQoXnIxPGhdYlk9L2Q7Jmh5RTMkY11UdF9JOWo+T0J6RG0lK1g6VixUPX0raE1NbmFRZjxAN0BUOkN5fkNDKH1WbileZmF2dk9xUFAoXzY1M3AqaCZLKmI6a311WD9ZTnVBX0dmc0w8NitwRiVHN3UpOD8+OjZfISlyN0VxWTRhaSQ+aVUrVltgU1JnU1QhLGw5SDY7Nk4oSS9SN2pSYmBHa3dp'@; put 'dE9KYy9OY1RtNDFYSUchcCs/aSs4fFpjXXxLNCpjX1siJDtEc1VrZiUkekBYPGVMI0w1VnZ5X1trQHU6cHd0Ind4RyZQJFJuczBAMC4vWmNMNENoSFc/JWFsZU04O2o4elslNi5zfWcuTXo1WFBGfk9SclBIfn0xe3dWMV5kdHArSzIuV35qQF5zOmtidlB8PDQoZFVhUmJgOiRjbTd6ejViL2o1'@; put 'YkRkTGEiUkVKfF5SI3NNRXttK31JSS9gZmghXlA6MEMyVFIjKn0kbGFaeV9lclI9TF97eyFRX3k1TUgzJSxUTnVFc109Q19IaDJ7KjBPMTdMJmlWOSprRTZPZkgzbVJ3aXZMVSJLb15qXndATENGZF9tQk92U2RpPSYhI2teMnJQNjpmfFkpKWs/NTZOS1VXP31LTmIrM0dST1ZkbWhFeHtJWFYp'@; put 'YWk+WlF5MS5pbTlfalNkY0REMS5GSlprUDN4R29KaTZmfF0yLn09PyV3TGx5dU9HNllbSTBqcXV7NFc0PXkxfCZoO2dGOioifVkwZ35TNEM5I1c3S2ZSNWtJN0wvJWF3eWc0TDxvUC4/TmhqOV0zTHROSDZhdXk2ZG1ZJHdFWDAsUkwkXndEPlcsSXd2aU1maHh4VFBOeG1WT0dYdU9hUlBUJmU9'@; put 'NjBRT21II3FIZy4vTj8wfjsiTnR2YjshbHlGQENMYEZ5Q3wuUlIsVGZXOUN5bVI0e0M7c1pyUjRkMEphX0g2QnAhRGdfX2ZIITdjRUV+I2N1WEhEZDt8WSE7b0shdF1dMW54UFdFSkppQnFWanNMdz1eeWJpM3dzNWNALjdocSsmZ0I3Q3goUz92OHRGbVFCJllJXj1JL3dBK1F9QlBqNCQ0UnFX'@; put 'TCkrVDxQLyU2LCxZTkpePTAqNFk6Vit7MXlTWUBhcShLd1ZiI3k5RGA6PyQlWTZsRFZOKnc6byFRRlBWJjlpN2ZaQCorXmQhTTViKCtIejdaXTV8TX4sdCZVRUpaIWRrR15meEIqNnZMMXNgWkt7d3YuNCNNW3d+VlpPWl8lTWA+c2pgaHRVaEZeMHFReDJyfnNwfVFrViglJiV9bSEwaFQxU0xq'@; put 'MDN0VDM3c2UpI1B8XjhtamFqSyZ9SVRjXkI5cU1uJHZTSmN4ZHFmYjUvfjFnISxNeSN8YE0ybzRienkuVXV9eDR8eDNoemg+T2lPSzd7dFBnTkpTPTkqKVZycl9NU1VpT3RKZD9+Nk4+WnVMJl5qNFdRQFV3UD8mYzN4dihYQHlRc3hSTnQ3dUNqfnNJUDsiX05DaFQ+VlR2aUh5JUQhYFU0QDJZ'@; put 'dG89S0wvRyElSWBEbjB6IVRjTHhrLHd7YGh5ZkFpVXtZKGQuRFJRVVJwIThvfipCOiU9XzJSaUcvQlZvQ3k4dlE9aFFjWEtRTXM7dD95Pj83KnJHQEtGQjVsdWZyWj1aUWtwSjRRY2csOk4pVnBhRUB3RCRpQigrcE0jdGBRMXAvXWpkQCpDW2F+ZiVpVkwzfURWYGozfnt1UHVbVSglS3RuRjIh'@; put 'b2QyRnlwJl1MIylRflheNl1YNH5hPlhmKCVQeT5XXmB0O1d2MTdQRj5BbjR3I1UwMDdITXNXdDQsNkpHZnxlV14oYnZ3eCFpcUU+em91UmRGaUhRQ29iPFNrdHkxLlUjSVpZVFNPMH1mTTZweCFjfSs5W3xbSWR5STRMbX1ycmRgQVd0TypnX3tvT1p4cGw3MyhbSk5dNXE/Nmo5b205LCVDYkRK'@; put 'VTNReExsbl4rRC4mUTEzbkVhfFp3N2slU1gmQ0FOQTBhTS5+c1tJRlJLUzRZfXd1UHw/NSh3Rj97JH12LyZGXiZQJUxlNnYjczlaR3I9ZSUoczQhVF9JQ1NiWDBRWTI8Sy98fSFoR1FZRWFoIV1rT1NlRGl3LFl9Xj0idlkmWGxNfjU1KWFac2N+QXYvRlcpZDtmZnM2dlJxSnAmKjE0VTR8c344'@; put 'Sn4meXpZMVB+e31SNExrU05PZzhsV1h4I2Z8diRyUWA7LlBJMDEhb2guaF4hVG9ASHF6IT0lXS43dyVNPk5+aCpdVSE7dF5QM0U1bXVhK2N4KVF4azl3MEkoJXt6X0c7clA0QFc8dil2O0YuJmRVY1tgYEw8WyZaNDdUNlJEcikxMlF4c3BqP31wbHVLOUc5VzhWc3ZjSzY2JE92bnsrKll1MT11'@; put 'fn5fTUd4PEAoP1chI3h7by88YX59WEQmVCU1VDNTQ21FPEZ1fT0kaCFHXlMjay99dV14O3Q1ez9WbjcjIVBtWVcuXmRHPiFvMi4kNyZze2JyKmhAMDw8N3BUNSUhSk5YVktDMktGOklbdjNVPipNK340Ym9kWEpzXmtNP1slO1kyPEk7TjFBPU8xXV1dUDRBVV04Z0soL0wxVy87WXwmU1c1MFQo'@; put 'VmhwJEU2XyEleT04V1pgVUI/bzBZJklMVy9jRXM1c3VeN29KdjNMXV1qSkVAIUxIXndLInc8QCsmLCkidV0lJUN4cjtXIzp9IkJpdWkkWWd7ZShqOChpayMmRWJRRDxLYEVWR3lbdkxgcFdbTCFgUDgpKiFdZVBES149cDNYTEU9OSVhZ19SMVl5W2I2flkmYCxCXnU9eV1SI0QhdWt0WWp2ciQy'@; put 'JHojTFVoLzhLNlJMI0VgcEx3Pis5NEhHV3NFOD1wSGJfTVp8OT1nU3IlSi88fD1RKD5+JksqIWU9aXlwMWxEZyZuVUYqUn54JTpVaEFhcjYye35bS2BeSUU0RW0kIzJyRVBRP2VYWChROjM2O2BUcVohUGcoaUN8clEsOUhTK3s4JUxEaFpNLzljfHVLS3k1NDEvMCUlMkNrYXVsM2RkKypwMWNZ'@; put 'fFAjPlhUUChCbH5TfWRDM3NFSiQuQj1CcVtDe0ZAZHMqdlp8WSxVTXB8WlBPLkxOKm1SWlhdQ0kvZE1fbz1bPV5mQn5sd0ooVV90eHIkfWs2Vzo4NDtWKVtzWi59X31kVXpzfG1lLHJwXmg3czRCTVE0VVkoVGhIaXErMHomdE54bEU2XzNTSyx8Lk54c1ByV1A/bCteTDFpPU8yai94U3hGV1BL'@; put 'bSpgYVFfeSoiJmtIb2k/QDRvQnFbLHByNmNDQHhLXWwre0hvWTtWc3NMV0AmdipXfG1OeTZiTXBnKkFYVl5HfHl1cEFeKW0mMiZIaTtLcmAxSVojSU9rc2UoRCxmaSF+aXlMQSVAUlleUks8OmF2Ol1GOnc6bmlSVzRUIi8+KHt6QiUrbktSWUE2LEZ6WVtJP2lHUTVaUCp5c31lX3NELG4pWUFf'@; put 'Jls2KzJ1TkZzb0oubHpVbWRpfDF9YDluM3hyQCg6PW90YXBYR21nWSZQfD1ebT0hS0ZeMGdHMHNgJClDbnIrPG0xcFdNZCtCNC57QnNudnopPi9iaFpndGVWRnM5ImYiQFMsS0JNP1s6UyhzLCRhcT8ibjJ+d3l2Jm1zJEovTiNgX2RAS1pyXmJyflczPSM5T2gkaGBoUWcmdDZKaVJRdnB8XzYs'@; put 'JX5FTFVSU1VzPjVTQDROfGJuWyNbI0V9eWgid3FoXS5iOVdQezFwUDdofDwubTJQYVBeR1VRQWlVXm5ZQSs0PHosNWhpMVtiWilmWn46bCglVXJFPTl2WChMPzpIfXNCbks7WzI/Okk2LjdJWXwqIjEvUC4kcXlQVyswMDo2c0BueTBKYytld1QjP3tsa2d+dyRSViNfTVs6dzRwYztvez0jIXxi'@; put 'TzRMfDF1UUd3MC5zLzEsRnt7ZkNzallaXSNtWDZEaEVTXkxRPWZ9Mmc4cERFQF1+MGVEVzcqJFJgM1FzfmBGTm8rNWJvIV4qaiRtRXFnP09RQj8mZ0VKOT5ycDg7Ij0oPyU7UT45XkJDXSNta25XPXJgJm9LMXooa0wvbDxPKCxkZXNIeyFuTjY9e3VULiM4JC5gL3I9fDhSTmhhOVFuOzlTK0A/'@; put 'dVFBaX56SlQ+Lm49OjN7fWQkM1UsS3FRPWZTWWVsPy5Ac21ib35NamJRfVdqYDg+eSRzSlVyVW5Ee3E8PmdQayQ7Nj42Y2koeFQyWyNzbCRlJDs/RjQpVE8xVF1VfmtXXmU2Y0VNaXNVKHN5d1RhNTFCUj56VDRmfmZMazhibXA+e3osSGo+eyxqPTkoT19qaWx7VEdpTzo/VUNmNW5GWk1bb2tl'@; put 'U3IyKl9lYmY2bk1vZjJZR3U5JS5NPm9PXXVFeUZbdExsT0B5WWA3c2xNfEwqRVdHJnFwPV5lVTtSSU1wWS5nXmhuSXMvSU84VDJHejd5R10yR3IlOyQpWTFZKF8lVzdxTFg9dmcxK00lYiI3LG5GNVN2ajU4UDdmaVEzN298VkVZXypEK2pzSEQoX29MSmA7Llhvbzt6JnZ4bVpCXnxvXS4zUUx3'@; put 'OURbaiRGdy9OVXdfRTcze1ZHVFhTXmNKb2NUKyR9eyt+TWBTWClJRD9sMUJmaytuK2guem9gYVZ3bjVhd0doWCpWJiZrfFlMZUdYMzxdS0VaTHg/PiIueEZ5WlZYTyJGeytrMSslMlF0VXd2NXgmXlZmWHpba3c9MHshQyN+bSJrYjtfPD00S3JTR349MCMqJEkvdWE2UTVCZGNhLG4mOjZeIjQr'@; put 'VldLLjdbaGdoKT1rPWBveW5bSz8wN3s0IUt4NGk7OTR0fXtaX25uWEdmPHRVN11QZGU1IkN2TmBeISE0cEFvWl9EPilgTkdhX05FOS5APHRxIjZXNVo7SyFmJVdgVWFVLl1kel0wQHhwOC5kVXl2THtUY0xHXWN3TyRqPSwyJnNlNnpFPWNrLiokfWZITkQmd3Uma09oZCQ0bGQsRnRiMElFbXJg'@; put 'ZFUuTlAzbDpZI1MzUTAiRzkmYD45NnVQM2pZaiJoWT1xLz1JJSxqUkU4I0RJVkVKam58X0gqU24pRiRxXjkicyVSNyE/KUBsNz4iUnxlVl4rIXleflQ2eWhfamlmQXosSzFEPl5PKGx1RFZabltbeWw+aCk1WUlgamxeai8vPCguQ0l9eiFINzdaST4vJkNZWjV6NSx1aH5kTVdbXkZnaXVyQG9e'@; put 'ZGFTRyt7Wl50Qj17Xl46RXpTYk96bTNXZjc3flp9YmFGKCl4VXxBPU0kYFVLSmp5dXlbajV8M2NFSSUjQmJMdFssWHNeK280LkJfaT5sPnYwWFElJmg+QnwvNFdze0R1cFs5XiNYbDluR085bldPbGNePU0kODhyQ3QhOVdqWEB3bUVweTo0XkpBRUY4U2M9Q2FATj0/QXlZaHZ4VzJwZj5QYCVD'@; put 'R3dWfiU0dyxQe3tsVHdmW3N7WFNhPixjNGBRe1B6fX05VTN1JVclVHppbyhiJSxqcSglUiZodkYjJDtle1BvMVtmUmcmfHw4P31EfXRlJl8qSSlacFF0emFXJTxYeHVQW3E7dyZII3xTPFdaUlZOKzNRPSZCVnJ8WWhgajUqO09MaFo1PT9FQjlJO1huQmJ+Y0I8fUdfInY2enl0Ymx0YmZ6VkVG'@; put 'MDw/SU9NcFEzV3Y1RUV2TnxVS3F1OWM0PmE7Vj9FNUwoSmpoeD1ealt8RiV7cCM5RFZjI3xBcWxXXU58bTcuP2hsPm1kdFo1VSZYYF5qPmtfMWRNSEhRLkVmRzQhRVZrSiM5MEw3ckdCTlJhSkZ8NUJgaFY6KE1oMDFpIyVFPX48JU9ldzl9RHpwJShaaFp9bz50UkJiQUp0KyZFJXVxSzkiOyZ2'@; put 'VF8wMlllLiY4e1RfKCYiXiM8N313cnwuSmckQzFMMCo/bDRONCFFeUVMZ0o6Z0tqSlozJERnOjMqJkQ+UXxTSyhKSDhRUU4+LClzIW5GQWBdU2k4emROJVc7U047QClHUlp3WWl2aXdgN3VVNjF6K3Z+OUZkPUcweEkuXmYmbV5xN2lBPE15IzchRiZvfGd+JUc1TXFKVUp8LFJqbHNaWD5gZGw6'@; put 'MnJ0a0tfLi5vfVZ2eiJAbXFWajFvYVB5W0xmalVdQ2JpMU9eJiJieyNjNzddWSFWPnQmZWBPaC8hcyV7dnNkPiFOLD1RL0BvfW1JOz1uIlB8YEFrQGokK2FMMzttSTJVc3hwaUV6U0hvYVZzdnlqUmZYVWYra2ROLCRJNEx+JUIme3pQaiMkK31ka2d5ZXFpLlc2aHhkLzdzaCt1TTUxaHF0b31W'@; put 'N15sRW1LUThWW2Z5dkhWKkBtRH5QRzcqPkhYI1szPWh7bzlbRk9gOU5ERXRjdXMkOHZwfl5dYkZ9PWVxNCk5SzhIUGA8MC5geVlSdjJwKVpVdnUkN0FmYHA+L0MqeDsrYDJlXn18QmBPVSUpLGR9X0Uxdz4zPj5zdl8rbltPWFJ9O0xxdVhwK2A2NS9XQFFEWFt7KVZzR0RbJTBfZDAqVHZrcTx2'@; put 'ZF5FPWA3TkgoMk5lPmcsRDRPSXlIR3gsd2EuN1N3cipkSVNuRitiUyh+d1dRKjo/RXNwJiUkZz9QTzwjSzUlci5AIXB5ZFMlODwyVW9Zei9VKGIuZDEsdHNHXjhLND1GLlt7UDM9cUw2an43eWBoJUAoTSRFZlg4MTo5L1Q8SEFtb3M1PzN8eTk9P2ZYUkVrWiF0N3sxfiNDbjlMaVUxZyg9NmZ8'@; put 'TjE4UHhyOHxxWXRKU1gyL2wmQS9nWWx0LCV5YEB+PnNgRjgkOXpvUXFQV0hKWGw7Tm8sOU1eNXJSQzFGdTUmXTF3YVI/WDp6UVp2PiZQYVBsIy5nMHtFXmx7bXJya2ZRNz53bDs4Mig2c3szPH53Xzkmc1tvYSN0blcwaktxTzwualdTeyUoSXdLalk9UyVQPzZEbENZeU1gYTF+ZTtGeSl0dHdB'@; put 'd0VaPkwjSyFLaTRzbThEajNINDNSRkZ5RnZnOXJgfWMwXktwUF9ERzBlVE1YcCsqMXRANlNXYTg+dHg1RU0sQmNobXpkYlREJTJ0JGtmWkU6dHEsP1c+SUBodilwcDBNQFp2RX00Pzd8UVRITyppI1JfO3Y3UVRlNTgkeUJRU2slQ2F1bz86MjIwY2xAekpLNHZFO0dILH1dVHlxKzZQSFc0aSgs'@; put 'ejcsMGN9XUp0ODVwZGAvXmxtPjhrNDdoWV44MHd2YmJPTy4qYVR9ZVhedVlab0AvQj9iM2goT0g9dGpMKmp4eTtJNE9BJlo0UkdLOj8scStOXiVqXSRaWmovcUNdN1p7IVZ+c05IezRuPGZQUXguYDl7R3xSV05JSz9TOzMkW1p5ZVspbih+Oj5ROCR0STMmRXMhKiRoWHNMe2ReNyUkczE7eCN9'@; put 'bDRLSS9ZK1B+N2hTKnBQbkleVy9jMjtFbXFiajk4OVRWLHx7XyJJJkhrSS55MSUqZWozS1Zrd0VqTHUkYVZuYkZKTFJXMGg+PGAmUnB6aWRtfUN4e2ooSXYkNXZ+eDEsYkJhb2hBc3NLNHt0RjtzekJ9NjdNJCZgbHhTcV8qUmVLRH1lPzJZUFI/PVs4MGklNmFedyVRZjFUWn1jbmRPPShuX1Qw'@; put 'e3VNPll8MXddNXUxUGguazl+Rko8ampLfVc6ISJBfDlPRUVaWk0hL155RmRNcTc2fGRlalBnUmdpKDUpcDwmLCZtbH1ycSpXeSxbIy9jQ3wyJF4lVSVgLCp1OFVReXIyWH1JKFllIWVCNCwmNil8MVRSZk5GMWxTRjd8d1g9R0V2eXFsUXtBJUAhfnM4QDxiXjAkaV1lbmBxQkxoJjB6LG5zJGRf'@; put 'X2dRP301USs3cXEvJFBKP3ZhNWNKTl53e0Z+QiEweDN9dCQ9ajh+UyU6I3VLWl1hcFFMNW0mKl1zRCIjWT9pKGhkKztKSDYqOUc2Sl0+UUkmQl41ZX1NJiVEQmtfZmpXXWxeYz82biVkV3N9dGd2KE1+ZTswWT5CfUA8MCVCck9qZDE0OT19OjtFeXtMdyg8TnM+bFdFNUh8VHMie0QrfEk3XWJG'@; put 'cVBSRkEoKk9JcWNoY2xxfiFYbTlkRTtAWH1ufF1KempaXzJzfSZ1X00wN35dLzYvKSxIQSFLc3hWMFBAJWQqPXtVfHxBL1RRVSsyPiJoW19XT1F5X3I8cG9fQGhXclRzbDxAQnYiS1BMXU5fPTtrIThodnNOKG4oS1pjVTkscX1bcm9XZCRuYGE/bU9wbnIjcX1NXTxufHkpaFJVS0Z0YkYzZDoy'@; put 'bUhDKVZxJENKLlFze2xIL2VxSWtbNmMmcSwoV2JOTnd0MWM5Y0wxMkRXUS5RSiEyLGcuXTsqWzxWZDsmRiZ9VixzQ04iQHddOnNPOCNlMWZSXzQ9fHU9YXI7MGUodDZNfV1KYSFlNl9WTypAZzY+ZCxmc09IQ3YxfX4iSjl4ZUBibWBpcTZLQjwpdmE/YFs8TEY0RHswJH18NSYjRFt2aDteOWJJ'@; put 'T0dJcTxHR3YoRi82Rj1ufXJ4I0RYWzVCNEtxXyFIeGhaRjkpdyE4bm48JGhPfEIrZTF2X1NhNzxLfWp8XjIiKCU/SV4rOHA5L3M2IUV+NzRlNVIoLzBNfjhwJXdtVytZQ2BlLCQ2I29qVUZIYncwW09ESGZCfWhpIWlCaEEpNFJiKlRVPi9iOS9PcV92Z1I/bzdDU2wxcUwyW0Z3TCtLP0B8NCU6'@; put 'I3U/SFd6c2NsVl5TOCJsa1NaOTUoNXVBXjdvMi5lfiZ4NERsdn1VPG91cnpyQF4uQUlUQGx8RiwoeVV+P0NWdjhdc051YntjcDs0ayxoKmY5M2RYMUNOfUV+e1BaTTBsPk1EMVUkdjNBaGNDc19rZ2RFKkRMOWdVN0FdITx8V2czZTA3b3kuPDJibzFiMTwlOkpfbF5kNlcpYUlSJUFYejsyUFN8'@; put 'JXwmUCRhPz5jfm5+KG1GeVNyZHNmZz5RM18yUCZoPSkiRHttSjkhOWV+NXtEfSp+fmFSOlsmVzA3dlI1UlVvekskQHNoWWdgSnxHTl5+dSIoeypnU0h4aExYSy5oUWQyIm87NnhqYlFvMUY8RTx+OD59PkhBQikyUEBAOWMqSVcvaz5uYVEsSV5qMStPZi4mTWlMUEduQDlaPkBzISpqfTNnR0kp'@; put 'fTdRPHsvaSwyPzlmJjlyMzU8e0pEZDpURytRJFAmbXt+dG9NRXFjeyxJbEVWPHJOKCE6e2xeUHt5T1c+KHVuUUI8aCZ+NW46dWFSWnFVfFhqeV1+MGBQOFg1KHp3YyJSZnJ7MSJHMFNDTCprPWYhe0VYY0dPLy5sbk0mNVk9TFZKbkIwMWJme1o/RmdnREtVRWNVY0A7byVOQV5YL0xQNkxFVS51'@; put 'U0FaND1aJih6cVdlUFQsRHk3diVVcVAsKWsxQUp3TkMxUnZYOVptQ1c/TER1Ql1DYjV1OD1KKU8vRl50Jl9MUFVZV0opdTZ3ZDdSQF1LP1lONlp0NG5VQzBjSk8/VWN3bEFUajpWPmdJRVBVTEsidSFXQVkxUjB3NCVYTCM0I1RKVk8pL1RtImV4b286eVEifVhaQVdvV3E9Sj5EZUw4RWJ0Y2kh'@; put 'b05dc0thT15zRDNDRjlAKXthTTpDRSxKKFs5MjRsMUw4JUZsM09SYVJRIU9eLEg2KUNNQ1pCbDN8eHd+WFZ2OnlXKXFHRSpLaWh4NzFHNjxreThlWjgqIWVKPEA2IXUicDFLTnMqZWhtc0Z4YkVoRmlUQDYkdmlVITJMc0x1RCp2X2R9OXYkL3kqdy5YWChUV0QkLC8mLzpRdSVKSH5DbXkmRSY4'@; put 'XXN1RVRTMFNkcDRUVE5rdXVjZ1UiRVR+YWM3ZDBKRjtTK0w+X2h9b3NZSCFZbzBRcEk9UFBYaHRaMDh8ZlcoWEpwdHRra29FKDA9MyglKk8iJD9vRTxtfFAhK0hMaVsuc1Y3VH1tZWkwNT9rKS84Y1ZdTnJnfUgyX3YmSyRXWWg+TUB2YFBnc3leekpuRmpRQCRbaCgwUj1Te3AiUytMPE5OYlRu'@; put 'WGJUOFdiVFolXStYYnVtLmptU1R1fERgSyJaQ2BKYz09Iy5JQHd7RD46RWpyS297bnl0VVh7SCRNcCxKc09SKEBrMWVGXl4lLDQkSUJxPnRXXWlPfS4xbGQ7fml1VTVDVW9OYHQzLmA+KThPTG1LKHJKPHdJX19YcCVFVEk+KSZnfDAiLDQkdyVRSmVwWiE5VGNbenIzXyJrX30+eHMpW0NYP1Iy'@; put 'IiRyJTQlKDZaLiw9QC4qc0VgYCg4PmhVeFVtOVZVRyo4PjBqOSwwPHFJUnJedEosK1NjWCo1YGlRanJJPilzJUZUQEJDPHZ8RDIrJCJlWWhROlh7Im5jYypAREpBPUp1S1tMVndyOTBQOEN5fWRaSzx1KUkuTD5DRyUiVU1KPzJNc1tPLy5SITVdKmdMaWBDQ3IuJF83eHQkZ3VwKXMwUi49akVq'@; put 'cHJxfHtPJi5lUX14ZntaNWUxRlR3XmBXM3x4Xl1dQD8qYyRwYHNSSTkrPldCcDEmcm1URi54VTVQdFZXI09+Rl0uaHYpP3BHal9ob1kzQyVqIUZXKSxmKFU+VUZ9UzA6PDhIUF9NcU8hajg9S20zNT5RJTc8WkIoc1M7UWloeD1RVjVQKEdxT2BBJUZMUEBOQFcrKntaQCJuTENpSCphN01venos'@; put 'dnI4a01GVC88Y3swTjh+a1FHRSZdM08jXygpXW88IilYIzgwRTIoP2NpbGQoKl1DdmElOUM0YHQoN11GYndkUWxldl59KEdrcTo0LF9uYCEyYTNAQkRIKH5KTURiLDosUVUrUm98WCZrc04xVCZ6YT9HLmpjeXl1RGR+Xkw4Ym9IfGFnfF1SWD11Y3klM3wuOWdYRTYlMVQuaGQ8aSU0bUFxeUdU'@; put 'alN8Nng2NXlkUF51XipNPS5VMXNkTXM8QVRAIy5YenxLW0wrUUpZIz4mfnttTlhNLCYsSDF4UytRVVhQeW9wLzQ1fnJwLGlqZnUxbyxKO019Lmkrdn5uZSE0YklfdS9iQF9MK0BHLERwQVZ5PVlLUU1lYjRaUzdpanFfX2hsRHYlWDlANW5NNzw6TnRhXmkkX04iXSxdRGdBZWlJdT5+NG1gKCtd'@; put 'MkEuLkJtLmliSTxXelFvVi9wYiZSJmZUUkFpNmk9VG9UPUp4WUAzeEFnKH02MmclMzp9bnpTe1dXfldIPDx1TiJqKlg+dihiKHF3NE5xXSh3RnJoSl9tJUtgQSVzdTEwPXBsK1VCRnFlVHF9aHxNKGs+QWlRZyh8UEEzfXh5UGdGKW0qJWg0Jld1Nk9uYHgoMyklJUZ0Oix8QDlIM3JwfmUkRnQj'@; put 'I0NBU0VrWmdELm01PTpjN3dTLCExMDo+VGdHR3dvT3FKTHJvY05kL0J3YjNRaDBDTW1iZ1IzfX5QaFZIVkNpY2giaG52TDFvckQicWp1X0NxRik0JkoldD1zcFM9WVFbe0JBYCtzNERxaGFMSVR8aDYmOWNKPyR2KDwqZUZvMVlKdShVJVBgaz9VfCJaJUN+NjpsfDNiSUNPS2gqQkdYQF07ZFt5'@; put 'JFpFd2hRaEo8WCt9IUVFPGthZS8yQlQmPFh1fWAqbDY5OUN1MVRwY0RMI0xZQH16WHIvcmQkVWQ0XzZQNGZrUTdiY3lTUU1oKlc9dnZHTFY0KUEqWF1ZJTB2UGx0aTQ2YEM5dmJzTjU6TT5kNTVlIUs+M081aXV6X09Hb0IxOGMkfHhXTiUxUWJzL2NnLmdzeS86KGpeQ1FwbUdLQDlGPF4sR0VE'@; put 'K3ZGJE95UFByVU1mfTlfeFV1PzsrbHxXTjtiUl5KKE9pRz4iby5td0lbTnBVXntLNHlRRmUuVks9R0NdfCU9az1QKS86W3R8SSJ2O1FIbCshc2cuS3krU1hJJm9oIlUsL2lqR1tKSGJjPiY5Q2JvfXhoNHNjfjp+PVo8L3NnKXd2L21jYX1afk1pIV5FNyxAcyY8MU8pNiIkWCtRaCokKjZ8b3Uu'@; put 'MyQ8dGZhKTVXdkZSMTowfCJKX3QlNUZlRWRYZTtWNWFZREdOKmBFRDddKFA2K0hkTmhIK0dyQFBVamtofXBCJkI+Ql9BcUImQj5ie2BdZChvYTkhREB1elRre3s4ZGhzOkw/clg+QU5AeF1naVQ5SWR9Q0RjbjVCbHU6NCh3VVsjKmpANHR6SyZ3b2dfWUUmbzd0Ql9HPD9vN3V1MStPMXRCdUVa'@; put 'Q311X0NmbTopP2B9JDo+N0h6KT55L3V1bTp7MXJKZmFMbUhvTUF5YGVsTmZ6RiFVN0o3ZEp0e2A5RzElMkJAYHBBVm80N3p3MC5CO3hWfH42WSQ6aTBwWyV4VTM2WnZhYUd7UzNTVHp9X3N0fENSMnNYNmRlOGEpZncmLDlpfHJlNyk6I05+XXNFJVY4Mn5vLHdhUnEmUlJ6a1M2MHgvOi9HTl01'@; put 'dUdSKDJxPUxTKEFhd3I/Y1dbaz5PIzddTHkxfUJASD1fWX0vJDZwXkdOQnNZbE09SldRdjRsRSh2OlBndzR2NHpuJSspemZPN3xtYVN8aVlmaSNuaiYjWFRpW0deT3RnNCVvNDxKYzdFcCVjYCF7OSxsVHYrOWJAa1AlcygqI08/Oit+OCNwd3M1Y2BTM1txPVFlPyQ9SS5ePnZUbkMhYFlbVGok'@; put 'Kz5RPUNNM1p9UmxteFt3M1BQOEViQ0hPQEVeMXwmTVp4YWByJWdTeHFzNXNsfmldK11bQDREYWxifVRhIUBFNFN6biJ0dkNWam15Y3JjYjUlTyExeE1nVE98Wkw5ZXIwYW9eWWE0alMsfT9QYEo/ME9gbX5YbSpMRU0+ZERyZyNxRkQ1a2wkdkMlZzA3ZSRxL05HT1RTTWI8eyNqPXc4cVQyfFVN'@; put 'SSZfeXF3R1djbX5CSF95d3h1eEJ4aHtnb2V4K014cj50LCQqSygjQERtdyxoOEFmdXdUI1V8SDUod2gpV3NgXS9EPEdJbX1FUCNnc2tKfi5PTWNtOiZjS2okLEtlYn45S0BqQ1p4WjJFMSEzbCRdSnswelJDfVcpMilkUntjYDM+Z2dLT0Z5TEJgcTFeISN6KVVoYWozKFBOT2Y+KktxPzB6Mjp6'@; put 'YkVFPW5sZF1USm56KV9lJilqPTEscyplZzNgJiROSS9+TSF0OXJEVH5WXyZfN00vR25mI2Q3Vl5DdkdDWCw7WENFYUNteitVQkcqQD80dDI/e186KEYlakx3TSQ3dUtBTDZaQmFxN2kqVEBdY3tkKTosUk1kNWpgelhafDFFXVN7PGYiQHFwMHRPIWRVYmlKKHt0ODFHd3QuZFVgVTE/Zm5VPTFU'@; put 'YjI5SiJAKH5oMV52PWNLSDQhdE0kNylAIl8/UFM9azh0YHg3a2EyZFcwJE1QP3MkbFhtem12M2RiVFh6Ik9xOSJLbWRGUn45K21sOnZrWn4kejJtSHJzeC5uejRAZypmODIuKDZNa01rTV0ibTsmeik1b05zKStAKD5zaVUjZD16UEx4SW5tN1lzWXxdSiYrbFdEbCtufVRteGksX3pDKEZZfDlP'@; put 'RFZhUTBDZH0mO3JrOHh7UXtrOTAjMU9yY0RmSChWMzBhLHM2d0VYPCRIWUh1UH5xaGVANWJiRyFtSTZkS0pOUTRxW09vPF8xcT5UXk4jMm9ycFFbYypCZ2V7b2pUND4pQH1xYjhpYDlubWUsTVlKNFc5OFh4SSFMWXxFPk1AQkVOdWFHOG1kVF88ald6bXYqVGVAJmMjQ0t3Mms4YEFRKHY1fHBm'@; put 'WHpPKDcqYVp0Y1FXfFhjfG5dZ1I/OXRlPlFrTT14aEpqJDUwcGExMTQmSDV1aG9fIjNTMyEyb3JpLFN+MEMlWi5AaTo6SWZsPW4oZG5uRiZ7b3wmMSFzaEU8MX5GSi5gMEN5JVV7MVdPSnZ+aCJHMGNbNUUxRG8lWmg8Y19+NVFKRiVVLmpQbjdROm5Mey89Lk0xN0BQZW5tcCVAbWAuPTJnblA8'@; put 'fnByKi9pcmxvIyQ4cnZwM20lQENnfmFkTDJWfHUqUEIhb0BhYHdCPGcvLG88RCVvI1FtLjwjTk86NkU5aW1RPCpFPjdzfmxWVyhIYmxRdDJkVlh3ISQjMihdQF5zczhzbFF0YUJlQjFWJXt7ZXJzOGJrPXpGdl46R151MCMwdihtKiFmNiRXN1Ardk1PQFYqcix9RHZdI3dWTTZLfUxyMzVFJm5T'@; put 'IntFJT5fc0wmajhWZ11QIV9gbD12cHoqSzFsayFiI1ZAXSQ8dXZQa0QkUSFHfDQuRnRELmA6Umc/dkE5WX1bQj5IZl1HVGd+WEU8dVpaQEpkfVtJJEchbTJReGlMXnYyOEZNcC8pIypYITg0cFg3MG85OXMkTG4uN0JPfGV6RllGPl5KT3wjdDRbeWQwSk47Y0lYSUx9PDJoJmclc2dfTTFHTTcz'@; put 'UWBlMjpic1N4Rns/QHBfN3RONW1PcHIsMz5YM3BJcDpRcjw+UTRoVVtDOyUvYzJPYWRdMHpsWERdUDNlLFJ7ZVdreiZSWSN4cVFdbVQrMVZyTF1fP3N7aj04WTF+UmtpezZdMFAkZmIyXThFZ0lHSldCRCE5QmpPIVVhVHtZJDkldCpAUHVZIkMsZiN3QFllU31GajlCSVJdU3VPMzhBSDlpPEBA'@; put 'd1t+d1pUMElhRXJZfngweWksaSwpbD9lez16ey5TM0xoeDNfXXBnWVZfY11hNT1zRCZfa2JDPXpePjJsKDdbUlA9N29YbVJVWiRIcmYmNV5mYWBgKEtPVGhoczt3UUlxZ2BrMSgyeShZKyxFOWhqeTBKTTxGYXxbKzhsKislb11VNjRoKlJ1biMzWCZ6RSEoUzhrLDJrczQ3RFQvaHk3ZywwJXNW'@; put 'Iz1kQ0AxfCUwIztZfSxRajliQzpPeCx2KTlwK1IrJT1+P3BOaCFhSVhrb3BaeEMjMk0zd1RDQmdeWVJvYUh0eXlNeE5HZURyLH4mWiZ5V0JmdT53Qkw/MT0sMChyOjJOPyohISlmfmJRWVd1OjQ9YlIhdFZSO3l7TGYlKSguOD8+RjpMUGFzVnI0PEB9LnlnVix+aWcyOlpjVilnfj0ubW4yQmtr'@; put 'c2BRZFdzLkRkcG0vLnhscD8oayttOWtIbTcmLDlvPWMzfCVxNVVwa1VkU3FoPyVBbStfbntJfWFpfC89YmhGeFlAQSNbPUJbKSVBYlRMLD1KeWQwNl09O0Urc2Rre3o0bmBVX3RoLGxNKjI3WkB+QzZRVitWWC9vO0hqOWRfR09GT0IoQn58WyxUMX46Nih+TGhoakgvYGBHbm5wSiwuO0RhSEZ2'@; put 'clJrSj88PmA/fnN1UWhdUz49Q2MrZk8kKkNbcDMrUn54VSMpfCYibGs5QCVVdEl8bjk6OXZ9N1daTGtxKDZKUnRtV3VReVlsamh9X2VteXwhNz8jMn55bGRbfjI6Mi8lXVBPQlc+Pl1GaHtXb0gpIjxrXkpSZ1ZnUiZfaWA5fGZjNTYoLntXMlpfU0RYRSw1aF5nUE9QaUImP0UzR1t7WTkrW2E+'@; put 'O0BnKyx5b10wcj1sV3U5Pk97JXE8VDBjU3MjR01SOU1iOWQyKTtTOlZCeGpiKjgpcUM5LkVtfnhlZX5aXUoxdDAsdHN0Tzp6bUdYXT9Pa1RXfCw6RCs/WGtZWTxeaFt0a0tjWkkiNkJ3TypweT9Eck15Si5JQU1BQUFAQG9BVUUiUVp0OiJFTXtCKHo0LG5wREgubyFPZTM/anoqJHpFVXN1aHgv'@; put 'STx2QUFBQUFBbkIqaEU2UTJEJDpGWXY6bCxaaH48KDAiR1RiJiJNTFNGQjl9VEQlb05kJHZvKX1MNjNrNUJYP0lBSUtyM15jZD5AWCJQZTRuT04pTz1KbnsqYmBQSWI8TihTS3pGflltbDY1cFV3dm9zZk4xQEtaQ1kweyRuTjMyZixaNis4ckpzV2RYWDQkfklfKzE2Vzdpeiw6QyJLZjBhZF9x'@; put 'b2lbc1ApPys3XmljfTFQL1Z0fExCSVp5OV8xem0lMTk8V0BjQ0dfbEJQPGBEWEE0MyRDJk5NVHxkSmN0NDxdfSh0SSZda2g9b1VBO0RTdXRpdlRXL35lQXBRQCFaS3dlLmpsZ3AhTmlXbH5PLGYyaT9Qd1cqSFtdWlJIKixPQzp1RjhKNypuPHF9LG9HQ1k+dUVXfCVTZzJ2UWYrLEclbWN3USoj'@; put 'NzQwUlshRnNpNE84Rjs0MW5HMEk7LjRsJFsyTTN5SiJmX30uLENuQzVfcWU+KFRQUU1TKzt6ZXt7TGBaZjp6dkckPDh1Mi9qLEsmSjQwdiFGXUZtZVAvSmAjZixiIj40JDVsS2hyPj9aXVMja29YJSFsZnJlXlp9R2h8Lj83O2VWRWs5PjxJL29+TzsyWnlOZURCR0BOTnRCRmgsQk11TCNlTDtv'@; put 'eXkxW01nNX41SjZDJjtYbXJbYVhpSVkpZDl1UTxvK1s0UzdZdDlMN2lAXmRZPmN5ZWJGU2k8SFsmKldYNFt2dGVaMk5+V3lHOTlAcmlddWcvO2lhIUFLMzhxUWw/KExLNFduPURpNn1LOV0kU048c1pCOn0lRixYZEcvRGJyZGExe1tjVEtBeEJSQFN5VU1MM3k3KiZiTH1fZz8jXjZ4VSR7e2V5'@; put 'P35WLyJ2WiNuY0A8eTJCUV5leWlgVzhnQjsmb3AiNn5qNzxPYm5paCEqPWAhQCNMKWYobjh3Tn5YXVJNfiZzV2YyYCFoRWN2Inx4Mmo+cm1nMmdJJSU0Pj5lSUsmbFtEJVVqNV0lIUMrZmRMSCZaSFdDZnY0dlJRXUtTNEMpXUxlMDIqNSw4d2dMdmFnW1tHQHBMU0RuNGlhVV1ONTshKX1od3p6'@; put 'SllSYXJFKHlEYFhZTFNvdWBYfVVKaTVMMyZGJTB9bDsscytNW1JZUDdMZ1hNWHB7SjdVakJCbkd0UXhRWCprallPPE9DaUw3byU8MVJTMVgwO1ViU0p8UjFVT05Vcl93M3hgWGB2dGRbd2FdckJqIT9QOF5sezxUZGhKcFF6VEd2L2F1TFRnVTd8W1dtJCU0Nks3LE06OSFUeU5MM3ReKU1DKix2'@; put 'RjtySj1MSipOQTVdMmZBMlJlb3s2Iil5O2pFXi9yPlBWWHpLTDBvM05BNjdyLDBTNkk7M0IuJGx0ZDlxMylNNVpzOiVjckRGT1J7V3EqKXs8YjxmV2JiWXwydjUmZEpzY3RwNyEkSjYwaWBdQHh6ckAqX29iUkk5NmE4JnJYPkBZbXs7ZmZQc0dgPylVRllnL1ByPmRBYHRrKnx8WCQ5di4wW3hM'@; put 'WldjLHYzdk1oKlNZWXNhSShMaSNZXndFXnFHalF6QjQ+ejdXZ0lUa3VBNT0wKEhOeXIsKXJ7K3cueTVyYXFFZj5wQnJZVnZHPEI6MU4hPTFKU3J5Izp7RiY4Ti9RSCpLbmNCSD54KnU9PExRZCl+MTFQdjZxby5ePkZDdnF5aE80fGEvRi88bC5tWiNPU3hZRWF3dyNDb3orN15CPitIXXd8RVRN'@; put 'ODxZTFllKzFxUldvK2lkT1NPalZFTkV+fDRaXklJV0txbmB0QC9hYD1TbUU2VFpvJkM0QUZuZ1RCcFN4L1gvYlBpIzliP0YpKXt2eTZsfTN8aT4sSHEjcV0kNUdvOXoqRmpzaUsqZUpbcVlkUCguOGYrYC9MUUIvPCNeZjw7fGp5K3w0KXpKT1lxNm0qTC4ocVAyT2ZVKysxflgqRkh9M0dpOzNb'@; put 'QShaMy5VaCM1OVRHJndzW251T0cqZ3kxMEQrN25qbzJxWEBHN1ZUdCw5I1prQDAma2orPmVPX1M9TyRHP30wbzg6NHImSzpacEV3a3dJZU8vVlN7SzVFVG53ZUlBLlk3VmhWPmxuelQvPWB+bC5aSSx+eXlXSXdncWEqcV1PY1A3IUUvVF54UFBHajlsdGFybjJXdkwiWXtBfSJfVHIpfnZSKko+'@; put 'cVEpV1IoVXkwd3tdN29SZTtfKik1biRfI3I2cVtLfCp7QEQwNVlZfH1NTEZoSUV0TCNgNWZZPjlvcmFWdS9EWTw+R1VJRj9ySGh7QUR8WXpNR2BkU314JU1fYEhdYlYhfHp3dGIrQzRyY2lhUXtATCZ4Lk80TkhqSSFSJFZoSGUrQ2opS3J3ZkprN282TmlHOGleWSQhNVhYPHFzK2lbdldRcSEu'@; put 'fCw/UEkvNEhnPj52TUAlPTREenAjI1gvNn17IXZDLzwoJVl+T1lgRTBuUCxxX09WRFBCNF5sZGZISU8pN3MrZCkyUmtSVDQyUCtjWFIsMX5WfkdyKVc7Q2MqWy9WR35xfm53PHFqQU18bCQ8Tl1IK01WLlJMYDAoUXc0PDBnM3okOHojfF9eI1hzZVhyUENOSVpZe2BRamhVQzdkVjg2TTBbfDI5'@; put 'S0cvQHA/ODxMWS5HM35oR0VEMGVEI3FnSF4hR1J+TTh6bHRXKis1cmk8bD5KelEmR10/TztfJEEmLlBONG5uN31RPiJoSSt4PytUZlZaQ0tSdykhYEVPc1EvLzRFN3woTm8pInw0R0NvU1pDI1cjRzB6PyMpRT8rMHtPRG4iK3NHenxtUj1zOXA0VWo9b0ZkR3wlSUZRJiRsXkNjPTd9blNlO1N+'@; put 'JFdNTUM8c21hem17amBjS2RLZjdgNmc2JCU4N3NHP1RST3djUCpKSDl7NjcuXig7UWdibmBBKFlUZDMuezo6PWpyOUhLKy5CbkQzc3BUfjA5bnRPIm9rM190N3ZQUjQqdlN1eCRKWm50d3YoXTlPdzlEOV5YQHY1S15TZm9UUnp9ekdoSzxVLDRTLl4iOy5INDs5Lj8hTEY8XU5VSD1RaFVQdGZG'@; put 'TjFuJTFRUWAldFVwREtmOXBXKyZ4OFdZQC41VWBLXnVaPHE0YFlkS1ZJKiQ8XSx7TnB4NzE4PC99VUVib0t1KU8ren1VQ1FSdE44Yzk5KWcvZU10RjlAez5gXjM8NFtrZCw4QCVYcylxd0NSUnJtUkNSUUx3fmxAX19LXSkva2JFXXpNd1B2QiYoImBiY2Z2MWppOjo0MW1jKXVxcmVpV1UzS3g7'@; put 'JiYjVkhZLkQmNzIqM3pEeHVZfXpwM2h6MEQyQ3Z0WDcxaD8lR2skeE05bWdCYFpjImZkVTQza2tAbUptRWlpU25JYkZMUy5fJkp5aDJTVmRWQ2QhO2EsVW41dUpNVVhJc35PT1FseUhTNHZiKDlBb2VYdHVLM0xIUiNqTz06WnRYXjV3OldoOn53YUZocCx4XS9dYDY8Qk5ETkN1KkM2OzExRl9f'@; put 'alpfaWI9O1Y0STVNMDU8InY3bHRxQj9iNDNNc25Ge3RhVj00WU1oYWNQWChrOmg9NnlKRDR6TFR7JWslP01kZz4uS0VPITNmTXttLzpvVShTQHJ7Vl0+U1ZvW3BbSEJJJkRycnFwU1JGSGV0OWFHWHcoPyV3LGE3N0J2LE1NNDdOP2sjNmJ2QDF8NXwhb1RBTXc0STw5RFJCW0tqMSVvbV12ekwi'@; put 'XTt7JGw9cn5ZeUFlS34wK1R8PGxVc3x0Z1hAPXQ3W3JEWzRXXSF2cUkjc1JBJHJnNzRbM2FwKV9hQ2l+Pi5oLFZrQmhQT2wmZ2p7T10rVUk6MXwvMWpxLjArJGEkM3o3PFcrYn0xS2w4bmckNXM0USJmaldNVWFSbFlGNjhiQilweS5mRkhKTSl5VDxXLi5HOGZvMTxnYGE0QiUqVll9JShOPT9b'@; put 'akZSaGg2VkxhVSQhPk5aY3I1T3VfeHY4VyNudD8kdC96bm5NUGFIR2pGbS8oKXJdPjMiWmRdQCg9YFgwN0hKLnFybCFUP0hnTyQyMiIjb3laOy9bPU00X2tKUz1iamFHN09IZUs5MT0zV1g4d2o8Ln1bYD5je1htc0oycXhSekd0MXdEMjl6RGslIzRlPyNvMWheeXhCOGVQKS9dSyppM25fWj0y'@; put 'MyR6XU8iKFo/LGR1Kip9T0FVYlJhfERLWEAsWU1yaEFOfDcmcCZUTG1KZzBCTWtrY149ISledDNxQ3Y2VSJLWWJ8WF59TFttO01Pdm59I1RoX2N2OkU4QjcyT3ppUmdUX3tZJCFGR1Esd3p6KE08YXtYbV4hemdjRCNIUX5XYWBUQ15Gfi8/eDxhPVdsTnB4em5+RyFMYSx0ZD5HcUdBYH5HTjxq'@; put 'e3Q7eV17WyY+Kmx1Mlg8LnRFO0t8Pk5MWkNxdjArTCh4M0srVTQlST9IfD8ubD0lOHlwU0FWOiZJRk1qKF05RVZVUiJxRz9wTFBHM2MuLmJOQ0JyeHJ8MUwrQFE8WHVUJnF6TWc5K19hdFJmNnssXWAyQGExL2FKNj1DLGVSTW5ReXxKNSJORWZTVSZXMipHY2sjKkdMK3RuUlkhV1ttRiolNzdx'@; put 'KzZYPjN9PXMlMUo/NGQ5amk5Zy8yQCxrcWtnbU0ic05+RzU9PEhUWWVPL2UoMkNpd1kiQWdTMFgmV3hEfnxbOzBNe1J9Vj1sOiN5OVEpPGhXZygoOCJscHdlTHNFSm5RejhSdDBeRFIlfUk2Xi4pO3FoInY4NX16QCgleD1MbSpxeCooYV5XOGRIbnQ1TjlOZGRGMXczdH5Yd2s2SDx7aDpUUEVt'@; put 'MyttRTo1OVowbUNfQk47PEMwMFk5aW8iXV4sQSQzWTMva1FzXk9NVDwwR0VZUzAvW3NCOmFaT0E0N2UuVlAzam9RI1haYVJjLjciUXFNSlorQiRoRDt8OW1gZFgkUGBDWFlXV1FnZ25KemI8bHo/S1ZhIjFKYT1bTjovdGAubUJ+Y2EzXT99digmbzNoUlc2eHd+cSI4XyQ+Tnl9QlIvSCEjLy8+'@; put 'VzZNTyRrdVtQbTRhN0wkfXoxZyNIbyllW35uXU9RV2soT0BqS2chYXM8byYvJCpORH5nMk5VLyRicG47WVRAPkkoVkBpYyxFMkdSdy58YSlzc1dgUkorYGlifmNTcHVIPykpbTUqTFVATzFbWTp6RDNDOjBFTHk6Li9vQ18oNWNZKmk2O3l7Z3dveXNjV3d6XU4wezhsSjR4SzguZ2U5Z2wqVWt6'@; put 'MCFCLzZIL30mVnI5emBbdHYwPWBFO1tDb2hiYGA5bzlVTX51QmtVN2x9Y003JUk1Vmhlc00kSTBkSCVvMlEoR1BwTyNMN0pWOnAsKjp0R35kQj12WipaNElyYjJLKEd4ZG1xWlRJdEFdSmFpeE1hbT91QEtWVVJ1eVJ8IUckMGZWXzM5cEYwfVUsKGl2bV8+MnMlRkR3JUZvJGR0NzY4SzNdZSE+'@; put 'YTdgfi96SCNHYVI+dkkkQm51VzBGNDAmIkk2MlI5RVdER11IK3hgbk9CN0NlemZyb0IvZ31PPXFVYyJpfiFjOFFHeX4hbjFGJUZOZFQ2M28wVE5+UlIheGdaa1M6dVVvbmVBbSkmciZeO09JbHhyWU1KJC4xYWNoPDNWaH4ubHpZWkR9WFMxdSxGZjNwZW1lSGM/OEI4WmphNEYhYHR7ZXMuPV15'@; put 'JU1Ndygvd2g1JSVtJnR3RTFjYXZaLnt2RntmVlY3T1RPSy4zNEB2I0E8eXtWNDNEYXlhSkdGazReR3xOVlF5RFtNZyZTITVEWFc/XmouYmpiMUZjM09dNlA/K2t7NEtpb2JpZHJufUc3Qyw0dz9ucSI6RlpnRDpyYUtremIuc1Mxcjd+LyRhYms/VF1eJShvMXJMbkd2NUZsVmpyTzN4MUVoMWBg'@; put 'KEBTbVRrRSQlVFNlSUZncTJaZ1k+WzRZMCVTRVc5SW04SGA/bHdDQzFieUYidCY1PDVqKWV4Vmw4Om9eaDhbPmlHLn5TYyp7KlJsKUlbQXQ0ZU1JMCwpfXp9ZGx+fXRpQFg7bTc6P2IuR0Z9PGo8IXM3QF8qUz8iZHA7UGY6WFFlTVhLeFFAM3leKjVyeXpIJFVxLj80VU97TDhKI1p9a0A5QXx0'@; put 'bE49OF1eTTRKJVBhRVhMa2BFfEdoM0d7N0EoN0o1a0ExdyM5M2lXbldEalMvYzZ9PUx0OGtZcnoiTmFzMDtSRyhdWil8WCkhfl4iQUFARFp9czJBfT1+RHBofn1SOEJ1QkdPakxlVjR3VXVuVHE/OnF4aWhnUSQ5Wj4sdmd0THwjKWZzP3s9NlQsTW05QEhKSHA/eFRZNzRtPzNANGJrVXZlMTdI'@; put 'cmJiU1FldzZmLkxUJmo7RGlpKUpVWDNBbDlve0B2X0F6JkoqL0ZiW3o2VnAxRzwoOENWU3oqdVgrZmFZX0JPKEFyeFVJa0ViRyFaRmFSNjlwey8pOGpTRnlFUFtgKHhEdXF7TWIiQDRHbSJ1K0NYbkx9ZiRNQn1lUiVLUmk0aEdvQj4/VVhEcUJUflM4b0t1KEBVcjYvbysldVQ9K15TN11dZFQ9'@; put 'W3ArOm08MCZWRzJqRE1qQnRDS1FzTDpARlhvKSJ8bzFSe1VQWTFRcSJRWFBQYmhPU05adylSdElpdlpzP1F2Mn1VNytDc20sJDlXNS94UjNOSGFySCZuYH1VJipfR008Pkt1SCNsJilgdCN5b00yIlBYXkciXjImK0UsMiNNJF9aKHxsSio8UkZ7ZUxGMS9XPV9WbS4/bz92Zms3b2crMXZsQWlF'@; put 'bT95ZjFOLnFiYWJoMjkpY1NpSEtWckQwL3JjVFlDK34ifXAqOSw3VzFOW3trV1ZEeFNbdEd9OiphWj9OdEFJOjNaSm5vTkJMKzkxK2Z3UVVVfEN0ZkVXYXxSRktMP19TfjhvJDZJe0ZHX1lIeDk2aGUzYmo5dik0eWs6PE4ydDJbRnVlMzt3Qn0lNTp9d2V3W2E5cno6SlZ0e1N5S1J4YWNtQncl'@; put 'VDk6T0dCRENqRkJJdTEyUmApKGEjNWE5O240N3xmTH17I2o7aiFNclByTUExNkV0aGE4MXc6cEUsaHMxMSVxXmthMUciT3QoOnJsbipEaXZ1YVpfJm9rIUpRfndCMUI9TGR8ZzpmbjFdSD4sZCZ0I1kkPF9BUlVFPUF9Ly5USTRsdSptLHlLd2UoUyt4Uy55XjpbSnd7dlRYTkozd1MkM3k8b3Qh'@; put 'ZlQmO0ZHYjh1KUc5eXtSPmh8QVFkeHAxQHFdb11JRzxDb3duSk9ASGJzeU1tYztaL1dKaGp8OkJdPGRpZFJERm4+PEA9Rjo4SkksTGhGVj40cmQhOSlUamUxNkxuNlFuUDZHXSZ1O0JVIiMzKHZrPWRSQmVRJExCcTNMM0haWHphcC9UZmFPeXFzX0N+WWkpTTtFVDE5XktsRGw1PU8yZD8sfTBS'@; put 'YFhUZnNxdWcrTURkaCJxZXxbLmE+R0BpZFVhOE9jQyJyJCNVTH5hXlp5Wyoqem47MHtYcGtsPmtXSCgxPEdNXUdCe0xVazVhNDsxUVlLVmxnQ1Zlamc0YEY1PWh+Y1dRaFAqNlFGQml5SUhlPmNedUhiJjB5UkAwTX1vVH4/K2JVSWMheUJnejpUTCpTP3IrVUIwT1BsU3plXXFHfkprdFhjUU5t'@; put 'ZThzRWdRIkFAKCFnfn5zUzhzdD9QM3F3e3xERn4kXytyZkloVXxZKnVKdFJUSzptd3JkcHkuXStPfkVsQWZFTmtTNihFaWRkcTFqYFZ5MnN0Ji9ESzYoeGYyMnp9NEUvdWwxTmAzdXAoKFV8KGNYOSx6aFkqRCpVT1JdTUA0SE8rJigiZnQ8d0goUHpeUnE0RVJ9ViI5VTxaTmhaXk5TU2hffUUi'@; put 'PWhSNy9hYnJOfWJEIVYjPipDJGwpcCVob3IhKEFWWzdnUSwyI3tINiRpU144K2JYOz05R1FKSHskP3FOWC45bmYjMClBflhXIWFpRWpjS3QufGxRP3NlNGNhKkQwN2xEKX1DflFeaFp+KGM3OXdJezBWeD5vXldUM0MyOmg6cW8mXmRbeiVjMDQiKWxWVl1KKmV+Kz8/RlZTLz1zKiU/QGEjL1s0'@; put 'MikoaT57Z3Fpd0Q6VkZjNms0LD0jUCxZflp8WWNyMX5yKiNlI293ZUMmcEVDMUNJdiltSjYkQzpKQEg5aFpmdzxoaSpBJj1MJGJgdnYzQHJwYVFgYk5aRCxOPj1oa2Q1LnhsL0oleE5wIz53Qy8uNzl4PkZiT3kySS9TYz54MkZQJVY1fF1hO11DQV1QM3w5Z0tKJG5Vey97IlE+RTEzZkhYXyQl'@; put 'cmRQdjVaa2pCK31kam95LHIzNCsjOnw3dE9xantkSUk/MFg1PDxnT0wpKCRSPk9uTUhvP2JMZ1RIc3o4Tz49MDFhZlM/ek1uNixLPmV1Wyw9QFdDX2l6aFdpN2NSUE81ZTVxKnt2S1VlXmQyPilJQXRRWEJtbS9wKntiNEdRTkRNM2FOQ3A+VE54UyhMJjdUSkdsUWo2aGYkNlZGKDJES15yRl89'@; put 'PEgkP14yUzIjRUVfUFhIbHA1Smc7ektsQE9GT0JNYGV0X149Vj1FbVg9SWJ9RzthIk9SSi5id3A8RHk1N1RZIW4vS2pvNnsuMnRodUgpU3BLUGU4czdGJVIlOE51PjQkancvWzM7fFM0RmF2XSZjQ2pJLiFXS2thfVgzdnQlPWx5PkJ+cT9Oak5JVDpXKXpgZTdjRE8ieGs9KE0mIjZZTCU9PShC'@; put 'Sl9ATjI2Vloweit7PEI5SlpuPjpXTz5LY3dteHdQQlB3PzR7TWBxNTdxM3U9V15YZTpxLkFvUlIwLylRYWc/eipvZyU2MCR5I0o4QFdTTDM2fl0wNENZOW1teHlNZjI1RDIoejZUW3dXdjF4MzxHeW0rWltJXTJnK0Q7eU0lLjZPKDtQNU1aWXxSQjN+JE1HWShDMS9GdWpmTyYpeWNqPVN0fEF9'@; put 'Y2BzfUluWDoqNmheflBVNilbYjg2RGtqaDxTUTh1QWE5bkl1JTR8ZnhQYUJuN0Qra2ovKmZ5djVXQTxmO3RtV3FfWXdHcFowb1JRIyI8MyRSbz94S0YzKnBWZ1t9NXUoYGx4fi9OPFhSeypLOCR+Uklwd0t1WF81eTJSeHY7ellKSzk/L0JkMkNhcz95aHJpT1dhWSxGZFhONG95aTdAd0QjJFlF'@; put 'OSkvUVpFQnxvPCNgfGJFejYsT1V0STlUIWk9MXxneilpMjMvUG4qP15HYUlSJmElN3pSaFpyTXArejtAe11ET199MCxYe1ArKXJqNW9OMHxCbSx5dmF9Km9mRGR7O2xmbSZgRTRGUiFCRntvP1drKHwqPzpiMTJbP1dRcntKRmwkfDdCPy84T3RrJitFUW19TCZNKVQxSlgkRXx8R2ZtQ2ZJSzcv'@; put 'UWZUNT8vOChuYGA2OENFa3Mpc3xmfm8jMExFbVdFOW4/RWpWQEQ7X0ptKiYsUCUmQkVlb01ZdG8kUCsoPTtKdCZncjd+OHROXWMldnNhXW89ez0hJD8uWHtrTGY9TTd4PURlJjskY2cjZG0sUSZafGBnMDNAWFQhe1h4WXw8XXBOLz5neXZvRT9DSGFpVSN4Rl8mRVdBMiJaOHNnMk5mS1Q6NEtK'@; put 'QDk8KS9HUmxRRWc5dz5DMixpXjlqRXcoPG81QTx+IlZ0ZiVrYCloO0RgQipSVU80eDchTSNJRUxqRUM0P3h1UmdwbF8yYk5EU2NUY2s1QlhTUHJPVzdfNmNvWjZ7WzBbWyx6YGpCejI9ejcvaDVxTXNSaWh+dkd3VmZpS2okP0J1Mms3fm9qWzMjUSs4W3ZkNWdGN0pXfFQ1PFZNekJ8bz1KY3pl'@; put 'Ykp1NjAzZmFlYEwqL2pyZU9RfC5fdiI5JG5ve0J1W2htT0wqLj5obmg5TX46RGlBRixVMEJ0YV4kXmMsNEJkbl5QUUxNI2xeTzBObnJlY0R9JFdkSFlzNSsuNGE6a3QrKU5OeyZjd2FLSGxaK3RsUSlTej1LMERMcT0sNTkrSDdvP2MsKXpjK2t9QWJ9YGdRTz9ROUEiUCwmRXx8aylAOVl1WDln'@; put 'W0BmbCszdGQ4JW5eKCx1ImRXVisxaDY5WFc0fCJUPEt9UD1YeHgqeWJEbkBse2MxR1l0VXQjN1pWVjtJW19qYEROXkp7LER3L0ZzNiZ3JE1ELk11XlQkSV8uRGBSXzZ6Uz4hY0s/WSxWenFaKldrNW99XmU4NlVaek5xL0JmbGdpa3NJPDQ/b3dqKFouTHg4U0ZJPXM5ZnhgYW1NQlNDPjpnSDp2'@; put 'dXYyUkMpazZ7JUksWiZmfntHczRAe3ViUjQwTCN2S0BuWzZ5IyVVPmRVYihQNVJhQX4kciJAdig/ZGxtO15fKmkjJm1DeCQya315Pnd0PntIYzoxPE8yfT9ubGl4QW00czcmOFdNNTVrXUYlXit3NTpRIksxNntSIzszMl9QPFVCZDZacjQ3TTkzKCZ7U0QodTMsa3l2PFY2fDE4aTxUQkdtLCxe'@; put 'MSpRUiREPWMwP24pRTFFJFh6cFc7aExdS25GVFZUfFBMUSI0cXwweXIoV0wzJiVfaXR8Xl8lYl8qJStmOFc1cSw2OW9sRCpkLHJdQmcxSTlHY0cxeiNRQnthST5HSXguWGMjejwjTVs/fkYpMXlqNX5ZUjdFTm9XYy93TjJhan1rejNWfmAwVk5zUDhiVCNEMzU+a2pzN1B2VC93UjpZNE4rQztg'@; put 'WUJRZTh5aE9+Kkl6fV8keGVhZW1fZ08lKkh3XTNkc3VddElYd3ZuLHg5OldQJE9bMGBZLFpbdVQkdF1fSlRWVEZyPVRvXlhDZGxITEJXfiRFZjkwUE5jdXYoNWNFc1hTeylZdSNIXjpeMSMqZWM3YV9Tb0htZ2sydmlVM1VXX3h6ZlEwVldKS2k4YWdzN1Y5JmpXMnZkP2RvTG44b09SQG07em8m'@; put 'dW1VL1J3Vj9kWXVvPmpGITcweVk0Uk5wJTBOaCNGd2phYUVuTTV0alRDfjc/Skt+eHxuRV9GaDk7aig0XzoycmlmOEdoUilTd1Q/MSg2cXl0bk42ZD5gcl46LFI1Um1HTTx+VjRfdyV5Mk1fUVIrbiYsSHczbj1AbjFIalNJO3VqPHlNUF8yZ10/Y3UlRFJUZjdwYzB4NlBReXkwKn5+I3NVMDhs'@; put 'MTJCU2d0bHY2VXw5LEF7UyNNezVXclgpT1lSZmFOPzltRG1KcyRCdzJLdVtafU1QXUkoKURdODMpR0h4Y15wNjpheHU/Ik8rQUcpc3kyUSViNDJHOGF2U309WWRQOFhhfEVCQWwkejYmIiJ9LyFfMTt+VndSKmdPaWttbEZ6eV97dnV+KWV6RXZsWD5IKyhuTTQ4QFFtajVVNFFbZFk4PWxLQU8k'@; put 'ZjE3czhWI3B3LyYhfiF5QVh6e2NsTzRfQDRFbSlwOCwkMStRdUk3dTYsaUZ+W1tDOzorIl5aRjBZRX5BbTVLJUdXVGpjc1FGQlsqKUAiUGAxKkUwO2soJVNfZGpBK2tyLmk7LFlUbCRSdjZvWX5oT25HY3NHRUZ5LEpYVk9pSGdZQ0ptM01qWCV+PUtzc3M/RUJEJkg7bih9VipFWDhJJSNPNE5t'@; put 'Ins/aVd0RSJtUks0XnQ4WyNMdTNKM1dXQzYsOl4mXXdZeix4RzUhJls5cTFbU3lDMWhwLiQvRzBTNmVmenxYdlI3L3NqUkF6bl9JO1JSSkEzWTI1Vl1fc0liNENIXXtsZ3kvUXhrQlFBSyw4Nj0wJFRCW0cmcnA1ZURZdzI3V1YraEo/ITI0cjJ0e1Y4PDBqKzF7eWYuQEFuVCFgdEddPkxufllO'@; put 'MmVoUGxjJHZ9X019b0gxMiQ7ezdwJGttYFsjXi56WHwwW1tBRy41OGQ+clFAInw1dFt6V2BZYVtYLl9rcX5MbTlfczQmOXFAZ0JDTWd6OTFTV3VKK3xhOFI0OVt7aEZYK0x1eGxxYl10SVprZTdKWlJ6L357RC5hWmp7RCl0RmErXjF7cz5IV0woMXY8P3oxI0RHQkJbXXtCfkcqNFZRdGBxPGpt'@; put 'UFNvSGFeX3tZSyxBeHJ2QGIoLnpgcUowayh9UG0uZnxRWzdQUk1LLEx3ImtCMjlmJXBTe2l4dSgubnVoNT9iV2Zmaz1HZVBtaV8mJGI/NzNHOnRPMzk4SixQZzg7Nm48VH5hWl9oUlA5Z2ljSGhANT1RW2IuLlk4JHd2RikkTkBJW1MuYDxZUHAueD1haEY9SC8/OjpVS2wlQ2M+OHxeWmpUSXdB'@; put 'NCxHODtUfD9HWn4uP0Z3XnJNJGRDMU49W1psKyNjX1N8aDJTMHRReFEkJDJiUVMwQHBQYzNvemprfS5bbVdGc0RwNkw1ZiNINWNQZ0lzOnAiIyRRQTlrc3FTXiohdH1NLEZxcmI7Rk95OE1ndFZoWyt8fjdmKnhkezhCeWgpIU1GYj84dCZtbC5BTExAazJ+fDRrXnw9O0cvY1d6aVo8USFnfF0w'@; put 'M18vPHo4UCx5RXxCVyV5WE8mbnBeSk1eYDlvP1VTOWlCRXtjPWVsSURGfFVVVWdze35OYklVbjxVcGJmR1toPjF1aSlRK0RIYk1wd1FLPlE5SF1XRSlVdyxhcjhWRiUqZkA/W0g7OiI4XlU2emZyOWdePzluMVN9X3cpaj1EYjlPQWNVK2I4KztZV0xhZWRbQVdgQ1JYXjg7S311fjpXPF0ieENE'@; put 'e0VoUjxUPUYmLiNJLExSZiZXLl8kczNZI19GSlF1a0pGaTV9VDVld2hIRzthJS91QjB1fnhtU1JYUiR3SE56Wl54LiFeb28/bHMpYiluXm5MZH1seWldUldVUWE4Xz5OeU06dk8oUDRJRkhRSX1TMVB4MW9wMz5GQk80Nz8oeiElSWs8fkJxOzBCIW80O018M3Z9JWI9NEY8Z3dMR0ReKnl9NTFY'@; put 'Sjk0XnAqPCRpL2MmOVI4QUNvfkchKSJZKk93U2cuSW1lOlFxSiFYRU18Zz1+MkQ/SHcmaH0zXXdHYXpSRzpiaEhHRXU7bD9oRFV+bXNidll+VjRpQDN9JnM0QyxkSj52emRsL31BXyYkNHwvellQLHNdP0pFS18/WHpFVDZbfWBwRmhkL31vfjdGIjsibSNEWFthfDR0Imx9NG1qdzdWSEMvcCU7'@; put 'RSYqRW5eSjZLVUg1OEVpTEkqMl4lIV5OeXI+TCFNVH1TRCM5c1UmdXMvTi5IJUA8OytZWWBhdUpOcUNSfDlHUi9+MFpYVFM3Z1pfWEV3JS4kaUNPcy5YbHkvZnVTcyptMD5SdEJ9OEk0Z1N1LDI9d3Azdzomc08xQCRDLFYlKzQ3L2ZEKSUyWVF+UHFdJTciJGZKcjQyNVA9ZH4sVjIwYmV2KFlz'@; put 'QXNmOWRlQz5uUjFEOEdvME5oKnAocUc+WVJ2XTpdUUwsKVM9ZDxBcCRNdG81JGxZUnF0ViFZWCZ5Tk0uTERCcVYvLjEyYmB6RDBsdlFGazlKKlh8RzJbUzI3VXhXRFAmX0RNQHo2MVFNQkQpVlUjclEiLGFEQ1hTSUIwd0E6XmxeXzpvXW9QfjlGQjt2I0oye0x8OEgmSmovRmtuam00NEIkciI1'@; put 'Lkc5WT4+Zk9pZ1t4JHBNQGQ1bG9XTjReTzQ3QT9WX0FVXXl2Qi9ROGppO08zaHtdJEE7dyxDU1o6ZndQVT4xdHUvYGZwXmEyaVBqSyRDUXBSJDlsOUUqLk8iSitVIjcpM1dme2Ujdn1YUEtSRWJeUSQzKShTVjJzdXxbR0F7dHU7IkEjTEd0RFMsd0RZQ2s0aSMhRzpwT0tiYzhHZkZsMENtMFZP'@; put 'SjFwTE9GfFcrUit+YlNDaHhZITM6WCpqRzovV1hGJXwle2ZWeHxaJDw1IyNGPmNreD8uaE5OaUJwSC5jeilWTzAmKVJkQlRXQW5AK3dJOztkNztSMUg/MVZqcUBdZEdCMWdmfUJhZThAKWx5TTBgJlsqUUl7NHloQ30/PlFQTzJCeWAxbkQxIU1iXWVgPURwT2FEZmJHVU10ejNKYHk8V113Uypl'@; put 'P3xRQEM2bm5Ifiwwc1RmTG05KHZjSkMraSsyOmhpcGA7UkhzWUtmK3x7VCJRX0NnMSUkWnpgQz07KCRafER6XUdFT0AoSkV4MHMzfXNKfS58YHpVPGIqUSxYSEhsPTtsJmMzKW9SQmdCellJSkshP2hRJmQwNFR6UzwsQTBvKWp6QHRkb2Z9OC9CNHIhWGVCTkczen4reW5XLGU/MkA5Xm5RQ24i'@; put 'YEhXRyRRflAqKyFgT2FYXWBXbHh4JG53ajswPzJ1JlBbaShWX2Z4OU1uQ1hXZlkzKTUjZXBNfEdNaERqWnovRTp3QVRUVV9SO2M+NUNEelslVEhmSHgsM08hY0t7bz4wZkU0TH46cmVVM2I3WV5vVlYzUCw/dDtEdTlzN3I+MD9IXVk6KUVsb1pAI2ZTbWM3O3xQN09uNHYpYldZOVhZOSxKWHp5'@; put 'XkFTTCo5YUtOWyR2Pz9NW3B6OjRbaiRKSH1BM1d7MjsmbEM2QmxqSXtYbn5mNG5wa31yK2o0UlJ+Y3dkWz5TYGA+ZGgpZE5pTyNUXSMhbFVLazMrODFGNWMjaDMuQ2giWHBaWTpFeVFCejYqYW1oaSNXeDNlIW1UY29iKFM8NHJtcWlzT15AWU8lNnF1aXR1V2BtUF9gfWU1TmRlZFdSdUdiOTB3'@; put 'UitGaDFIW25OVkh9UzVZQyE1eSFAPlFmR2Jla2hUZ2JuQ0xwc2locWVwQ2tfa3NkdT1MS2VMR0ZdK1Y3djw8cFpgZFE4KDtVZXB8ZU9FQzJpRk01ImopcWs6Q0J2Pk0pZTpURU1iKjB4VCpuaGZCL2hBREJgJHxsSWouWHchYHBNR0NTSzxaKDByOlY0bldINzN1XjRDQnJrWnpQXS5jYzJTcTxG'@; put 'QDwkaz06SUBbcXhzWUg4VHBja0d4bU8oYjpXNmVhUSxNI1JObnlrdUM1TSZ4QkhHQEM/W1RVRml9JWoyNzR4UnBSMCpCIXElTFNGaDIvZFA3NnhyR20pWUFBKzNgYkh6dDNPdEp7JFk9fSFNOTYvWnRIa180IzY1XkdrMlpUfmN3WFB4Jj4xI3NFZmFHVyYhQ204IUhbKT1sMW18eCJxeiZBeVdd'@; put 'MT9CaTU+KmBibmBrXXEsWXlqbXwsSSVDRDx2aVJEQV1zOTttY19oTmwlYkA9PlhQVGA4cEw+WDtNYTptWkZAIzA8ZHlOVStEZClZTU9XTzhaWGNoRzMxRGI+YUo1cl1vMnsoYCZPTz1qNz8sYTxmR1E/an5PVEFCVTojKFd5PTcqbGcmOXJURF5wI2xqYlF2Q1IodHwkdyJyNHpXaXdSSShVMF8q'@; put 'cT12PnQjLyJ0UEBld0xLa24saG5dbD11QzlZU3ppLEFkdy91WHQ5KzBQUDVJLCV7Wy43W0BXdFZxKFVRdX5jSCo1dXkmVlJSa1dkTjBaR2l4JiZkfVVKQnpzUzJ9MU5lcE08XzV4JTohYTU2XWg8KjkmJU9JXyZaVXhxdzs1MkpZVzJtSkQkXWxIZzdRfGtvLGVlTTxbO3x6d14pT0NaSDxqREZb'@; put 'JC5xMmp6SFNncEY/L0hlfiJrPklkSHZTQkc3djNqV1paN1p6WiVpdHBUNCl7XVRMPjJwaChaL1dPZCJiVGl2N3I/LGRMSTRuRDRoZ18lYyF6KjNqXUx6PE5XOyEzbnxKW1ZkNXE4YSZKcFpwT2VedUZ8byEhQjRzc3xOWmJvQj5MIW43SUQzUFR6W0wxJFs6JixiPit7W156YzxfK0JGTkZDKEV6'@; put 'X1R5TTlGR2Z3d1NvMXJZeT0sL006ZiZ1byw+bz44XXl8MDwiYzd8VFE8OGxsV0p8YUB1OFhSZjtQbE9nZlpaWVJVLGhVVE80L15DbmRBTzdwTn1XITFIWntmcS84fHFYWjxQcCpheGF2TFttRkMuNUVhd2hCRTAkWlclIU9IQGBPXlBVNj00K1tES3RrSixvPmh0ZX1wfn0vYEs0YmIvdD86bVF1'@; put 'fkshN3ckJTs1bFhpRnZscT56MnF3dTE3UFA7cG1fPDZyWSJvJHNtIWV+aW9AemEqSVF5TzcyU3cxNiQ8ZHh6OF41W2pwRERtRjJFUXRaRVtvbzJePkVudT5TMloxaCpNQHtzWlRXN2p+OSgyeXY1XzNfTy5zflIzSWhfVkx3VHpTLlI/Zlh5Zyg+b0F1Q1ZGNz85NVQrOUgvNDIiOUZBXjEkJTk3'@; put 'TG5NdTVpL1l9enMjWktoey8vPSNrQC9ebSxndEsjRWVvbk9aJS5GdDM5L19naSJYKn1APFM7Yl5hbDV1KE4zNyM+OG5ENXFAM04pdHlJW05VOmJzR20hT1tHdWReIiNCWjNZWmYlSX5bPWtmQFsrd3lLX25QP0psZlUkXi9aVGJIUmMkZ3hzNTR1bi98YV43ckdEa2Y7ekxDUHZjUTd0JWpLX3VM'@; put 'eWluNUR4Yj5wMDIkRyZgeGhuKGFBKVM6ZzI6eXRPQFE7JmVZck5tL0RkamBfQG1TTmR+cHRCe2d+SDxWL0gsKDFheHxKbTxzL316T0Mua0tsYmVfZUxGOU5LV29Ic0RwIylKRCx8amZSZyElNHQ4PDw7bEJrcVtlayIoPC83LzBCSFY8YXR1WUJ0cHNEWnsvdixOInhoJG5EMiUkbkIvXk0yK0Qr'@; put 'cTBkMSFFWz83PkI1ayopUylabko/JFdmQVdtZVVaL0F4PT5VdzlVe1VZUF09QzM3Z0IoajElYipKOz84NUAyLGIhdihjMDlEflBwY3Ffa2B1NXxVS3YsYXo4PFNtTDdNaGMmQyErdE8yUU9eZHtheFpdVDcyaExCZldHMjl6WCtSdGxLOmdYOHkpVW5TKGNEaGAhfT1dWipXKW4vQEo1Xy5LZVFd'@; put 'OGBPY2dKaSI5SmJ+eXhVfGhyeHp0dj5XJF56TyJjNSFLS0ZNZE1SZn1mbzwoeC4zT0QvM2tXQ1RYel5ldkkqUVEuN0dGbmN2d1teMzc1MGJKeyohLml5fHRwVCgzSGUoOzJVI0FHdTpgPk87SzF9M3RJfG03b29uPztjSXs4fCxVfHokR1dUfHVfcHFffk5JP1pwbDsxTyYmMTx6fWFZVzE2QFU8'@; put 'ZW03PixXPGU6PWBJejkmTCNZPTdNc00iQTw1RHBXVmlKY0NASjpQciE2ZSRzaiZvcHMhUXxuZyxuNlZIfip0ZSYpQklII0REbzhSJUc8JnBVZUhTQEFvTHhMYytDQyR9eWVXZWAwQlI3KEA6ZigyYmc3YzZMQGxZZTY0bk1eZHQkaGF6NWc3NSVuISlaVGRLNSYyT3R1SXtNK3FHRERwN3NiRlEs'@; put 'WTdfeDl1Lko8YnxVdzsqcTkkdiw4e0YoNmd3QlBMVHc4O2JPZklIdjR4Si4wZTREP0xPako2bjM/ZkY+WGAqOnplZn1aRloxQXh1fTpPbUV6MF1LYl0reFN5Sk9YKHE8b2dYQio9RjFjRT16UyNgZ2Y8YnJWKWlXXSU9OVpSJDZHeT1IPSU7a0d7Xy51R3JqX0QmfSNsZk5bY25ZQ3xuRXNSfCNY'@; put 'NDcpOlJbM3t+SWRreyw1PnJxR3tPI2NbWkwzWmpYdTRSe2NneUY3KVE8ZWArQlVlbUJQKGp7TlhIL31bP04iYCs6WzpxLyUqNHFaI05jWGZqYjJpayx+VjVecip7KWYwUS5SXU4rOGZgR0ZBcX19bDB0OUlqdDRnP0EpfipWV3VdPSRldFZ1RkNybSYpQSY9eztkIk42UXQ7a1NAS3lGMT51RWNp'@; put 'flBeTCJfTVI7amhDSiEpb0xLMU4lPyo/PjteeDB9Q1JmeSJxRVhgTn5MeiguT3pwRTUzRVFPb2V9QnwybDRZUDB3PnJvOzlnMHR0VilGOiQ7Q1NWZ25UJntBZWlPfSltd35ARlBHTDs1V2pOWzVAKytsX1oiNCEvZyMzayYuM0ROQCY4cndXMU4zUHg5bVUlMWY3RE4rO1skPl9BS0h9KiRDaExw'@; put 'WGFqWnEufWxYdG1qU0tDdmlMJExUU281XXtRQmQ5OXQrXW1iRzRTQmVUakt3PVomZ2ZaOjR8dTI7SC87ZXA9cl1vJklGbGp7IkhTMFpoN2c/eDsib21zRThkc213IiQlZmZ+IyVFYS9yajU6dS5MRHYlMEQ/VzZtZD4xaGQ5SHFkOlAjdTBJYnJ7WHRUWGtJK0oyWVM+fVVieDVZVk5FeDxDSCRm'@; put 'RGdlKm8kY0l1cnNfYiNaZj9LbChNOGRbeFVePXFeYS9lZzhSaj9RaztVejtuZG0rUEpTOlo7PUwqSUdTS3Z0W3UhJjNsZClrOlB3M1h2VU9MPGhwMjksSnZjSyRUTSo0VllPckthdEJIOT9eVkkpdik/RE9edzZbd2MuYURCSz9FQ0QlKVp2bG5lY0NqeUMjMmtCM2dveH1EZDtOe0p+cSZtfSlY'@; put 'KX1kNHN3fFF2WkIiXTFpQlVgQCVrMTR3eSQpeV50aFBQdXBuRktDPFEiZl42dUwhNEc4WFdRPyp0ZXdULFIldER2fWhQRXdqI1t7UG9QQG1NdlFgWiYoXWNOMmdXPVhYbHc8PHVBP1c9flgoMlBUKHFBPlNIVmFveGd0dDs5TFckTzpgKFRwLjMwPEQrSmsrIXwkeiZuTURsSC5SIVhscEcvXT5K'@; put 'cFtedWp+Z21kYDlYLG5YQTRmdUtOeXs+M3hPKHRRIzBMZWlrUkIrOjgoUGlgTUdjIzR8RSxaYENFcGwyb2lEZ21sS355aHlFK19sZWBmQ15GWVNkRTFHJFNPS181SERUZjBAJX5RQkNeXTRmMjN3O2BhL0hkM1kwZ2dAPHl2KzNiZSlJUW17dUFJXmReNWZuPzlQIV5RaH5ocmtCRCNzUWNbJGZ9'@; put 'Sj0hclRhJWpIJUBPbmdGcDlSQEB7eT5NUy8rKDwjSCUycWtnTHQlM2JSd3U3UlQ/al8uRX5rOXdSM2pnM2AuWFdQVVlndVIpZF5QXTtPdC8wcilDXkRUZFQ7JF9rWE55WkZxcGRrbGM9Z0VqJlh5LGVuImVrK1E4PFR5VlN6QCxfSWJobDxRTWRASk9fa1BEIWkzYWd9U0dXZnwiIy9BYjxVY2hd'@; put 'KjlkJENiRVVCQGh8YT8hcVU5fWFLREF6IWQ4cEdRLFlWd19GVm9AcHRvP1lrR3UlOmZeSzdvTF1DJm5MXylWbFskaEl+Nldpck0lO0w9OnhtKi5NMikmRCNHYEpNenR3X34kNTZ3dVBDdEBxU0Y4Pyg7X0hqc1kpZzBuTm80PCRTdig9OGtIRi5DIkB+WkprXjpueERIZ01tcXtoQTp+UHQwYFRp'@; put 'bGpSbi5dSW9XenlSWnV3OE5rVFE8TDtAWEMhfk5EPHR9NiVIMGxKPnVqYDpgRE82TGxFeXEhXTpdPSgzbCpzVzYzWyU/RHVYIzh7ek01YjRBcHtKWXp4RDk+PztwZ092bTpDX0dWRm01JmZUKndjanZQLyNVMGhQQ016WlNwTUJOdjAwV1VxVmhGVl4lLERRKXo0Q18mTGkvO1NBcXd4ZFhXczdQ'@; put 'ZnxbJmB8WWJLbT4vfDl7dCNEbipiYUg+QX5xXztTeyIjalpdIkg+akYrKnZMLH1NMHY0KFdVTE9JPj4iNz9ZblNna1pfKzlPWH07aGxROTJQQGB8KUNPaUZyKi5rRSNHW2tue2lQWTtGVFFFfXoyREpTfHxId0AqYlFpcGdkOlV5JlljOz9rWEB6TmJlaVEjdCMmQ0FVOT8+YEFBL3phYG5bZzZg'@; put 'QSt9MDBxI1ZoIXk0ci4oQFQ2VTFTMiEzSlQ4U3VRbHlQZCUvX0tuJjM7R2pbbmV7aCYsUHBHZjBRUnt0TWB2b1ZENkpvUUROen0oNUs6TTsyJTZvaVYibTZTYU5zYTt4MiRZW2xzRHgsTkVtPjsoKSQ/bUVmdVUqQG5LOCEsXmcrTVhKXSFgMEg5LHx0QU8hakdEaG9bI1dYI1UxMGd0Sz91JEgp'@; put 'QDQ+bDloJV5dbGYuJH15Z3ZxdGtFYkA+ZWgvQkw8TSF5RExIcGdLUDdtfHNWYGRQajEkJG5INCgpWUYlZys7UFY5a1ZhTWRbX0oxZDxxXk9EYTdrJWNbSWlDeXRUTyhZVF5WIVojNU1Ufm0mVVgpelhMSW48Iz1DSS81TWUqVDlfd1dWYHErTW83JVB9dDRrcWpHaFZmTDduQE18Y1M0c34kdSVN'@; put 'PyRRVW5gNUFzTFtyN3RJLF1SPmhYYDdZNDBvNTxUOS9IOnNZVWRIK05dfFBeITg1YFN2WmtHJFF7eWIySj5eTzlCTyF+fXZ5YWhOfEhWOk1dInFAQyRYSllvPDpdXTkqclVCNHJGX2B3cEVnckpiKnJrZ0tqW1Qla0cuVilFRz0+VG9XM2R5flMjWU1mNjl3TSJUaD0wIX5DeF9NT0sqWTtSNTB0'@; put 'JiVVOD5MalYmKnJ9TGBnYzZLaXdWTFkobzl2WHA0PXwsbmAhNDRORyFGPGxDfkFUKGMmbXk+dlcxNmFJU2hOWkZLR200JTJCI3svRTJ5KiwlSHw6YGhpPWZAYD41OkJrJm5jMDJ2U307XXpjMnVsTX0/W2VnRjQ8OU0mZndTXSwqLE5MJWwpXU5nSV15JEh9eVFVcyEsdmR0PFRWWj8wK3ZCSUle'@; put 'fFhzbTljKjI2ZyF+dUk6W31EfkdHYGFUX2ZDOl5MWDUoMldhbCx1TlM6MSZuRU9aW3NZeSk8ZEpuR3ZuM1siXWVaYS5Nc31IYHROViZtXTkpITlkPlFVfWxmSUBnODJ1S01mW0Q3QyNtQ2BHdiYhPT9ueCNJfU0uLntZVnUlXT8/QjFDfWg6a1FUdnNycHdRKnhSeloyeVljdDIjMWBEejplY1V2'@; put 'a0lOMVtpVGxQX1hGNktePDlFYGJvWiFKb1J8bCIlKHp7cGl8Y1FJPlslIlghb3BQSE07b0lFaFlOZUNdZn5mNGlxcGUsZD0vTWZTb3pDUVtHTDt9K0J9Izl9UmBjW2QufGNTZy4kWTIsMjssYTVmTFZ+MlRxPGpSU01ELHNUXWBnamQseSlGSCQrXyNFalBBQDZ7XVhyJUAqa0x2OzFJPSRaWXA8'@; put 'Zm5gPlA8Lnt7Y2VVS1F+cm1McmhhTXBdWDcrd3JMSFQwcjc9QHMidFVmSnw6YD40MnssQXd2ckpTNCp3bWBMcXhieTFDVV5+cFR4PEhfRTF3Mz9FY2grKSowRSFVQV4jTHdhdjphRWM9eSNtXjszbER+SSlfP0tlPERqOiFtWTUrJX5mX000dE4rPWZiV2xzfiE6T3BVTk54YSYzbEs4MT9+XU9n'@; put 'InRWXmZuKUQ9TEc/fFEwM215SCxgNEdfODxLUXlUfng4Km5EWTw2QmNDPVpNImpKcj9KOz5WZzd9bFRzKUJ1UEx+V0Q7YyxNcE4lN3ZZUXc1e1BiNjUxVFEkIzVfRGRRYGs6N0EqTVcseVdmZ2BeeiUmems1IiRaXi87TzxSfUlCfDozQSF3Sn53SHdeazdsRmB5I2N0QnFwOWAhOzQxREJ3cms4'@; put 'InQ1bEh6NkY0KDdZbHA3Sjk/UE9YdE8zWSRhZEZuYlo5MldxWTxbfl88OTJuTWcyc2xGI2EpNzpnL1drdjttOlswbjMueVVJVjxpdXsjaS5kaTl0bENAej1+bWc4bHZrM0EuSHFSIW1EfUd7cStCP3U5XUApPWEoPkYyWDtAPDEwNDtrITE8SDFoLmFUQUgjZlZdMWBmSVFaa0Vmby86JThNTyJW'@; put 'aTRMVE9DJHdnZkkwRShnPTdlflpzdmNFOHYsJjdjfTZqaSh4SjAhLjpqUDY8eG5VeiNtRVNnRzpwYFljQGJYOFhgLk4sJU0ybW9dQU1ZbG5VSishSixuQG9NaGkyKlltPEtqcSElSWRlPmwwRTl7UjNwZU1lWzJmQUdfNkxuUG45UWdMRyh1QFVTS0pyd2deaDhVNU9yYjl4VkhyfnE4NiQuaCxb'@; put 'RXJ7em98XXE5dTdhfDpAWyJFNyFoXUR0KDt9Vzs5M1BGMU1qdTxsXiZScVQ/MWoldThxU29ScFVeMl5qQis7RHBMS1tzQVVINzYlZkcwOStaPTgwfGdQInAwK1JEOG98flQ7dFkmOVBGYncjQ2I2W0AiU0t1ITNxNX42JmdlbUkrXk1weitAbFtzV3BRO0QhazwxKVRyazw5QkReR1lPWmpEOGBN'@; put 'cT19R3l2UHgxMiEvRVA6MD1eM1hLbXpUPE5lQiw4LHA8cVU0NXwzS34zeXlPaWUkY0E/Zyx2bGtOeTdmT0U7RndQWV9ubXhEZCN4ND5TbmFZLDR+Xl12WlVNWjE9QlIwTlo2YG5GfTNsdmczNGVzSTU8LEFuQThdOk0hKjg0WzpEMFtYcD1Tajl1XT54NFdOVVB8NEdzdzRGWzN4SHg+XWE2LlhX'@; put 'Jn4qPUZ3KGZJIkVCbi9SQixZJm9IZztkRjhEWGhlUE5uV0RxVDRiRE9hIjlHaDF9Tmk8fXZLK0ZJM3J6OTlyNmJ3Il5ualU7bCRSR0w1a04wVnAsOzhPUD9jJFlXdHNbMn42VkJlKVgkI0h0bWgpR3tbQH5VNGpDYjtgdk4rI3JtcjJuRF9AOjtyRDRTSTovMUxpJTBXd2hJUEVyXnlnMGxVYWZw'@; put 'QisqZ3BnengwSSQ5a3c8OHVzUi5FIzsoUFMyc1B8cllBMzshOCFJQEozaHclYG87QS5lbFopLlFZe1pFeCI/I09dLy9LeVtXcmdLZlE9bi5pRHNIOFA9UTRkIzUkRXVzW11YalsmP35iZmJDbm1+aW5FPnxITT12TylSNz1dezA2fnpQUlZ+KntKM3FMSzVhMEZNSEJRMyxITzlkPWgiY2thWS9R'@; put 'Pk0jcE4pMDwvJW00TG5JSEw8WFB4S0ViSVBzd3dVdGlwJWc3IlJ5e2RVVTVbfXZ2TVdlMGhGPExVflFzbi9zb2pYe195WFd3KE41Jntxfm0rdz1aRkZtNVsje1d0aHZyXnRbcEM+TmBYNFMhRTg2VTVOMj1XVFkyOypATkRlNjE2Lnx5dmYvaXEjMXNMWlZyOyo5VCRvNnhMV0JqeD8rU202QjNA'@; put 'cDc1MkBeOldyJE45OE1DYURyYy4uKW19RiVoL2piPDlCJCQ3TWY5NlZGOFQkXl4hS3VCIXRQRm92YjByMWM7eUB6TGomJCs+dUNDYEooaUVCO2pQPiolY1JSbWReKHluZlB2YH0wWFtyd310bC9lYG0pJmhST1cqNnApOGN5Y14vK0ohJUpiQSM6RF8kZmtIWGR6WmtmfEU4UHlxSn5YOkBsPEhn'@; put 'OURoajpGTmB+NVY9b2opYEZjMiRPSUVBTnNpfEgwNTR+LHZ0WUlKT3pEZTpCKVBiOnFae3UqNltASVlRRE4sK191WV8mV3crRHpCU1p6RjJuL0opZF5tfC5wQW5ML31eNzEiPmluVkRUemAlWTwsREx6Nl93I0g1fmlAcGhXPnQvZGBfT21LOXNdTn1lNC89ZHB7ISJDR0MhMC8ua3V3eDxackZ7'@; put 'WGFkJHhTUkNEcUVWIlN1bn50Pkh2a1FxQ0duME1Oan44I3c/OTJ7X0pMTilCMkQvPVhOdklgPi82Oy9naDFsaSIoW1FuYTY2U2tebE8mKnxDK3RqbjQ8VlFuZHNtQmhQY2R1diEpQXZpV0x+X29CPkw9Kj0+OnJNPSE+SHpGb3BxMj9JPyFzQEBoayhFcjA8JT8xIklgXW5IOCZJQlUsMCsmYkkl'@; put 'YS9gJl9GLD4/cU5ZW2gjKHxDektyfGRpYnR0eTpSbFV+dERyWHhpQngjaDczSUpZVFlgVWk0TldiO1kjWkQmVjldUE5eP3lwQnYwayVtNnVWM09yMiwuJTJbRjx9fXkzTnYrISMyOC4wTDdDMnp1eSV+U2h0fnR4WExnbXA/TlZgTUB0amVKZHBwdmVMYjlfbHU6InhPRDNNOHUze3U/LjV3OiJg'@; put 'VFtJM2QpPWYveG5NakhwM3tSWnpTdklSQ21CZ0t6NUkmJiNDU0hZPHJWbk0qUlFbKSVxY2Z4PFVRPH5LfjlCKGtTWTZ+O2xoZHNTYzBDLypjfE1COTF0dEpzPj10Y2gwfHNXMGVge2tYVyYvPjx7SkQsZF18MlJEa2JdPnBHV01bXnRYYzQ4eHlXNjo5Vjk3R3tjPik2SHZ5KjRPantXbDo6WjZm'@; put 'ZjNGc1AyQjJSWTRNKyx6NXtFZ3deRXkhUWNGUjREXXU9dz9xaHIoQW89NCZVfS87eUhuYTdlUU1tfG1nIUlQSjJXVlN0WXlYM2xaIj9HeytwfWg+UGEiUUA5KS8+cTIiZ2c+NjVrRG9PR2t3d2EsNSpmMGVtNj9Ebi9WLmFNVyJhQVVRTDEyQlpoNDIiX25IN3NGKm57aGRAJFpqRVQ6e0VuL3p6'@; put 'PFt7KnpXXyVLKiQ+dFN2JF4hWG9AYCM6UDAvX1MjTFZ+RVh9L2Z6fDpBOEtnXmp1dyxkKi5sL01IVSE5Sip0ZGlBMTM/dWF8QHkzUD89Ll87UkIlKEh+MCxrNSJsfTlgLDZ5SjFLTn0hSXprfVZnbW9NYmg4X153RWRra1ldQnw8Wk4kUSRNOEVVYDEjY2UofXIxKT50Ln5wOG4pMWxMS0J1XWVw'@; put 'PjxwfmZVXSlaQ0xlTXgiQVpFTCM8OXFEPkE0cTV6PTVVR2FwSDZjZ10mOlNqUGk0d1Q1bnxkLHdrR3dkN3s4VTRKOVJdVWRtKi5fXkk/eF9OSmxPP1BVW05yQGgpa2ohYDZodjc+XlssW314LCkyPFhRJU4mW284YlEhVFYuVzg4LyFUQkUse3NvX1daLyY+e2BNW1IzRCtOPGpfZTF3S2N9XjF2'@; put 'Uz1ML252bCxRbnQ7fF9QdHF7SmE7OkNXfjBvQ0hYYylodCNvJGFNeCVaZ0B5cmZUe1lrbXI5b289KGAiPzYjeCl+IjhFfUNaRSwzP2p4I2o1S0BRezo7MT9xVHY8ITB6e319ZyFzMEQsfVQ3fU9rdT9ENDRTOVNLfmBrTXAkXi48ekxjTDQ3U0VPemlGJkc5KEl2UT9HPG5CTjNGUz40YG08IyFN'@; put 'WmFafU1pMDwjaWtyWHZsdjNbdm1lSnMvWTQjZWE2IWAhZHpBfUR6a1pdLHFSOWBLY3FDV1Z1QnBOaVg5ZiFWQU5IRlFidDZXOjlbT3pATF5lcy5zNVNXdmkxWTtvKio+XyhsQmFCTXlwPC50MTEkRV9JI20lLDZ3QWExLGlkPU1Nczwsd2lCTiM8QCw7O0o5Jms/REZGXkUkYHtqaiRDSyNBaFQ/'@; put 'ek9Ac1dPLyNFQ0s2ayo6c1k9bGBZUUUzISJTdF1aOnFIN0BqJEZxOGY7QlJoOipqbTQwe089LkJ2OylNVT9BUGczdGk8PGpdVEd9ejphYUR3bkpRbDYvYGhUUjdCbSQ9ViNSTWQ9YFsodW1RKCFCIUF+X3ZwOlk0eihWL3clakBeYXo9Tz9vRGcrRWA+bSUsMXNgSHYkPiF9U1tVLmlQRCg6Y14m'@; put 'WTU4eCJVJFgrWmUoZDIoWmU2WHdGVjN4MEEhR3hvPTh7bjRgejdxV19+KkZ8NGkkKD8+KTVxUDd9b3x2fnZEN0M8dmgkOkh1dlIkXiJVQ2orVG81UXB2eFEmdCQzP2w/RGlnUm9ZOTc1eyV+VHo5eXUsXTY5K2pzUHVfVXE/OG9TZmU/UWRwIkJLRmBpRWp4Z3QhTVR7VXUmTiohWXBPUHhNX3ZH'@; put 'Zm06VyhWMGhIRktHLExQOEBSW2AyWHBVN0tTa2F+YUo0fkFSOTIhTEFlfXc3VSh8R255dHcvfCN9PX5jbXYpMCxjeyRgPihvW0QmUXQkMDNJfmZGJkolOHR1cm9LNykwOGR+Mi4jXlQxR3tbflBUP1QwazlKIylvbmt4Yk0/Tz4veGVVTkRzWyJbXkZEZ3pjTXE3SFJWVCU9NUY7RzhKfStZZVUs'@; put 'NzpgKyNsbGwzW1M6bnswVjlALE8la2t7Lyg4QHN9b1J7W2p7Rzh0dE5wM0xnaGVRbSIkVFpbKmV0WiE2RThhZiRJNksoanFtZyxPcTtyQ3BOZWBjX10/d0R6XkkmM3hHKUNlKDl4SD9odStoOmY4IWNIMXVmckVlU098alEjNClxKFNaLFc/RHYvcW9yKH04SH1Sb3cqSSg1Xj5wWlYoT3d1Lnsk'@; put 'ejhoKzZQdj8odG9VaUVHMG81VSVOOGp6VFBBJW1fVS55OXJqMHl8fD4pMWlNLnRbXkVkUE9keDZqe1YqVjJkVVouQm0lMy9AXStQe2A4UjhpJlZTbFhbTy99Zl97Q3UuWVt5SWdkdW4sejkkIUFYOlIxKlAjV05BaiRQK0JyPWhXWTN2WSsiYXNGZSlzOH5OeGtRSFBqW3ZCJjhhe3I8RW1TQ3Uj'@; put 'SUpvI2RyKUg3OytLYV9WLEVjUEFAd18hSUA+PnFkSV0hV2hHKTZxb0MmYDRhcX5XMnN5aDBUazVQWC9icWc6emoodSNKSShOLzNpczNPVmtkTC4vVkBmWzF4IjwmMzRKcStPaGp8YjVRQ2AyWjpKbnlrLENhRypoW3pYbFErWCRmR3JETW5GSHYielV1akA2MHhwJVt+JkIza3l+QVclTnNZT00o'@; put 'emImV3VUfC5FVS9gfHZYR1AvezEjJGpZOD40M2JNfVBYLGpOOU9CTVtxbkp2JXJgbXNecmN0cDd4Y1ozWXhEZDA3KHdnSVFsU19NZ0pmaU9eSk4lSlRLTm1gJHxga1FOVDZsXzgpRiUiTkRKZk99cntaU1E1Z2NdUHVdfFAhcHxxZVAsU1RzbnAwdVpofHkiTG9ZTjFpWE97PE1wd2dzWmI1Ol15'@; put 'YCVCKEwsKmo7OkNzYD4/UzlQRVBoQzN4STgoc1YwZEEsSy9pdEEwb2ZMXmNAcFI7R1NlO2dQOiNefTI3PnxfYV94MyhbYVZzUVVPU0dAKjs+X3ovVEpLLipsfUIxUEd1Mm1QVGNwe0ZCI1sjMGBbVVkvKF93IjsqXy51Z3klMT17bWtgWF4jWFRzP2l1akc9T1BqeWdOVyZ3O0JBaU5Uayg2NGA2'@; put 'bGEraktzRVs6Q0FuVmo8PFVsMkxSR1dEY3lsXUZeVFFwJHguM1FebXdbbkpTJT1gVGxBbnAmbWdEdmpIP2pAaSZIPyVlTUhlKVl3emZDK3ldej1PRDhffUFgRXZgYFlQXWVkPGFWPURBUmd7dDo1KWpSME9kWm47YWN4dHU4MHheKmhCRCVMeytraThAQl5vOjBhYVozPU00b1hlb1U0dEMuaG8m'@; put 'WTcmT3EkdGB6WHZfZlFlcVtvTyVXTGRFP2Vtek5bVUh5b19TVCtjbFIyPFNmVDghfT5yPmFeSk9vTVhmNjVTIlJPe0hPPj5afl08fUZiPH1YPk9raUc2MV5KW2V6VCxDMXVONnhRZXwmQDopIXAzT2xbLnArMD4uIV50PWAoPGt2W0s4WkU2NWs9TTFqM0lIdG9weyIwa0BffiUsR29sU0kvKlBv'@; put 'Nz4rejlBYntMfWojcFBDezI7YT5vS1VkRl5RaTZOLy41QlM5WFdsTmQ1Y104ZCMlcEojdCM9aSowUjB6MC5SeD1aMG9URj0rVis9NCQzXlZEXnMlVmVEelt+OHxNdnp7d2NoU1dTYnQiZFg/fUhXLk9KIzNsTU9HSmNGRDRLVntGfGxraHFtPDpRNlYuXzpLKDh2RT85Z3FIRE87fDpmYjI4fSx4'@; put 'TS5sVUhXbWZTIklgcl5pNWNDV2tYKC5ja1ROJSE0Ym9IQjUsO35uME0sZks8LkI0cUpja3g+PmcvPmw5Q0JuMmlOMS9sSUFTekdiJUYpL3NuOllldCImNU49ZFI9dD9mbXZjMk9qVVg+ImdabXZSTjJHZzRuL2pDT2sve3dxMSV+WHNDNit3RFglTlV0IVI5KHYoIiE2cWJ4Pnc1ell2dU55Umtx'@; put 'JHpPSGtROFs+eGZ1fGQ8WnI5OkEwVlIkZ1c3WjUqL3x9Zz5KLnx2fGZwXiZgSyh9LkM9XnFaUzBbQjxrLzRkY3dKQTBOTXYrfEokNDUpPHZjK2RJZzUkZiRNMSlacUUhbmYjWGA7TCN0PWpCeVpzVDw8S183JTdLIV8uXkRkTDJhciojd3RfXUtPNy9zS3NJQiZqKmo3MG0/YUtjJDxAOUwvbCk0'@; put 'e0JZQU5HelpWNSNjQ29XSkUwUi4yRSN2KyNtcWYmNl14JkBTbFk7VEQxZWQ/Tl02O3t5aD80M21UMV85PUdkeEBqJjgzUERkOUxmaEhZQHhEfl9rSEtMeDR8VHcoKyZxRnl3PWE9UEJRLHEjNmImVV9iKERddTEiX01OJltvYEo0U3o+fmBWS1pmclJAOk49JTBERWg1e0w+ZUYqPi9lazZgU01L'@; put 'P3tGMVMiRltUK1Y6TXpaTkxPRkIjeCZ5IStbd0lOckhgOGd8ZzdMUzZoKkVgJVBUV055e2xAZ1pXZ3p4dn46d2ZrWilgOT9eR2tDRyFfdjdveEx4Kz1eVzVJR0hmKTdxMD1uMj4wbDB4WSImJjpJaFcmV2w9Wzg0JXl8OzYvMV4xNXQpa05HQjdTZmNIVEBMe1doK1ZAQ0hUKCFnQ2VjZFdhWTwr'@; put 'eWMxLGgiMV9nYkBqZF5acm1QOyQwTH0zY20lJmQ/ZCxATVgyTSZCR2p7azopdXo6VzszcHhBeyw6fTxGPT9sKDcoSFtEWV1VZEVMM0IpKnRkOV1QOFN3NmRGLDEre2UyRmU2IXE+e0JUYkE+Qy5VO2ZAK1chaTs1Xm1kXV9ZbFNrT0s5althNHsoajw/bThvXm51Ukkma1FqYjppMHs8XTw3R3sy'@; put 'VS42JToxIjFJLiFOWUVjRz8lcShiUy9iSkAjYmVVKD5tPz84KWZycF5MIjovPksyJU9hMzJCS1ozRUMpeWZfeDZpJHJFcEUzcmA9a25jWThRcWZ5SExCQy4xWzwwJGFkZXBubkQmY0lpQmdMb1hGZnh8Nko9di9FNFV0RHdRWW9bcyM5TmR+ZXwvMShAMGVPWmksIjFDOi5FT2clIS53fElWXi5z'@; put 'LmE+Z3ozW3c8d1Bndl4+bF9dJjMxTE1rU35UfHJIWnpTdzNCbUZrLHhxRmlfSnR6PCt2XyZKNWRTOyx3bk9hMTp+N0Jibl4vdXZjcGw7MTB7cnE9JlUiXjYzMltwZUBFeS9OTSE+dikrZjBxMTpHNCQzSV1IL2Y2VSpwcytzVypyaz8xbjJ6TF5pdnByc0xielMsajYrS2s0XzVKSTUhc3NVK0p3'@; put 'aXxDclJiYG1DbHtHbzcjVVk6Q2UyWCV5R0V8JX5SNyp1bHYwOm9nan0uI0EwNWMxMUElMEMqWG8qTlBaMTo4T2BGWWs/cDRxIzY0fUtEaFchSD9tI1JdYjQ3TTlyPSRrVCkwYHJEQEteI3w8K0txO0AhVGBbQU43ZTtWSWxqQ11nbGE4ZmpBKHhgZWorWTZodGJtbGZOQ1BrVURdcjI3V01kTlFW'@; put 'ZSR8MnZaZ2M7MUpFW0VeKU9dNFQ7PzVTNUd3Uyt6JGtIPD8/VlpJSSs6d0VVMVI7YntkXkhWM3NFWiErPVJOLmV9SFhUTm9DOD4va2cqJnpuYmhkaEpgQHZseWc7IVslNnRzW3BlQkl2PTRMYSNUKDFYVW5eLGJuOUBLaHtDe1ptKGEwUzMvdlZ3OX4mRjJKWDV6NWQpIUkheFg9eD8rOCJiW3Qr'@; put 'dn17MlYkVD9QMnA5dl8ve2RTLitrWERkbWIlTiVudjpSUFN8bHolSXRgMnNYd19VOz5ZJn5lS0VJWCJRLEQmdXYjPXtveHMzeSxQdE1DR1tYYEFAeHcqQFJ0L2lXdmk6eVIzdnwwPF9wTHp7RHh7bHI8cUZRazRNM3FNSmBmTVVgPSFlRmAwI2ZPSi97UFdZQTRZZEB3OF48ME9HUy9QZyxrPil2'@; put 'P3gqJXNaQnlDbCNlUk9OMzE/O3w1cVpCND53N05BcUJpPDt9SjhfSXgkZjxnP09JLixlfD42OXBNMV84dyRqR18uSkgvYWokeVA7bXtBVkRGPz1+JDFuIm0ufVJGLCYsVSNXSmhjWCYiZklIMHVEYWlOd2w2MUlveVJXXiI9Oj5AeE1JSStQY3Rxe0s4TXtOb1A1OjNHUzZYfm5jJUl1Oyt8aG9M'@; put 'KmVDWGhTTkowNlF4XUpYIywuZT1eMWVIcjkvQTpHMXxsN1VWYCZLdlJpYCREPkk8SExKOUV1SGNYey5sVk0hISJ1THFqMl5zR348Tio4PlhoelZ8NUQ9VEdFbSMmeWtGO0VQSmJoMGgzVyk2bmhdN0A2OjIlRG02JnlDYzcoc3MwJHhzZFluTFg2JU8xblUyc1VwIyUyRlpPPDl5QTNqJDl8Ik40'@; put 'c2FEXkY2aDYuej9QYUBieXd0LypDZ3IjdkApSEl7QERYYGpzJik/b01aZGFiQ09NW2QhfCUmYz9xa2wrOENOSmNYKU14SE93Uz5zcyRUZENLdUZrb1NvYT07TWpjV1tMflkyNykqK05QYnNuOV1HVnghO0IuQmVAWVdVM2Fycj4lc1NHQHF4KSRLWyRHZjdNPng7OWJPYHNjRW02XkBHLmY5bz0h'@; put 'RzkldSY7azpobjg+Xy5RSWQ8Rz9vUmZNZyRPaytTbmVUYV91QStoe19fYTg+fVNCZ30iLlo/Q09nOkxmLkc1VSJFKElJW1F8S3tIaVUzK2o+UG5pT0MvPS5XVSJPfDRZaX5+fHFdPF5sV215b0U1ZkVkZ2lPNXEkM0lpb0htKiZbfGtsRj1CIz0wYlZaeWRCVXguTXJEPERsPWJAU25UK2BWO3Ir'@; put 'bHI0SjpyWVMsWkxdU0pVPyZEbEM4cj15UntCWTVVXW03YmAuSz9EaGVIbEpdT0lNO0EyNnUqVUVWK2cidW5sZ2R6LC9lTiw4KnJxVWFWZSk3cWlmeF9UfjJJJX1iKHksfjhpV240eHw1fihTKjk7YjdzODhBd0p5SHxhQiQ1dCt9fUxrM1hqO0s8RUF7ZyRYZHYsTVJVSlVwempbPyomNFN2ZHNq'@; put 'SmxMMzo7RDwhbHdnaGpvNj9uS2RiMl0/NWZhPkNgZWBYfXxdb0VQPlZTVEtqIUAvKzBaVzEyTUI3aD55UyIvWih1TWFPNSF0V2FNPENlazExTCptYEJ7clJSVlt7aVlle3hoRURnWCg4NkF6Xyl8JHNZWUFhKipLcElQTzQsZmF7Ly9naHx+YkU8UVooXV1OOSVDVGgjd3U1W0FKKG86ayJ1UlFx'@; put 'U11fIzxUQ2A7TUBAPGNZbk5SRUUvM0xObUN4WnJ0fUkrTCQwUj5WdXl4eys4QzUyLzoidFguSVg2V0R6cz4rSTxNPlplVVV0MV4uR2tKRFhrQmBQSVB+KShKUltPQDNyd1JdJE9CT0A3JHlqKm5Takh8TlQ6WVhAUWFfWUckW0J9azpzUWY9ODpeRGkrQnMieS5zcltZT0QoX2pYV2RGL2VuW2c/'@; put 'LiQ9aGAlR3dHUDIzMEs/ezpaYHFRcGQ3bSlhTToyZEhER1heIkRRdH49ZSteI3RZJF1hVD1nPk5HMkc/aV5aSCkoSWdHZVh8TmpHWHoyKnpeWUM3P2lTTmxEPGh+WXxLYH5eK2NFbSwoazRNVlttTmQ1LC86SiZTWWkrSmF2YXlvV3ZBT2pseilXOUtrYl0wcCFaZ35bZmh3SmdMPHhqVltdU1Ij'@; put 'X3JAaTErTHRgYz8hTWVvcDckZngvOyt1RzVrJVtkWl0ydWd7MC9VSkBNXzAjMiVeWFQvQG1OO0lEflt2ez5kS0JKI0ppazNGfig3SGhwfnZGZ0w+ZTEicls8YU88U28hMy9bJmxVWi5qJm4rd1pVeUQvM180ZCkvUnJTIUB2K1h6OyRQOGE8cjUxX1E7aG87NkZ9cXF7alp3VVcjbz9WQXA8Tn5l'@; put 'd2AsfHp5fE9rZ2J+O3lDWEpePzl1W3g2bCpDVjdmWWNXa0U4UzdJUXJRTmwie0gkSipFZj14b349M1shUEQxUn5JeHhzZWw1O2spOV5oTm8kanMjLEkwQ0k2Y3MofjhkZnArbipeYXhFWF0mXjNzOFtCS2t9WSVEd11FY340YVI2PyYqQDd7MSY6OT5gcUJ+TmZySXxdbUoiai49OzAvLDB+ZHBf'@; put 'eClFRUF6NlJVZX5LO0QzQUR4SH1rZnZiRkhVIiFkamF4cnRvUVlLPm02S1BzJktCKEYoL35jPl9xdn50XVZLcTpjKChedkw/Q2h4UitKa1FjZ0VPSn1sYjdUY2tOSzhVcWVMOzxhSkAuJkZMJUQ/WSV5dUNoR0NDWSJOZWwqM2VKUHQrU11oOiwhUkt5YDdyMlpCJXpzbWE8dy9EKDJ4Nyp+aF9b'@; put 'cCtXeHNPZiRRe2Q/R118Nl8hY3UmRl0sdnNwS29zVzpDTV1+bUB0XzU7fChoZDwpIXJCW3M6N0NwUm8zUk1kQmNyNVhlaDNvVklXZ3dGbnNPNChlRntdPTZna1slMTojOFNoNj5WPTt6PzhGfWIlNFI6fTMjWzV1fE11UCZ8RERiOj5WazhSbUZqbkpDUUMoP05kVS5vdWgkOGYpInMyO2NjaF1T'@; put 'T2xPYXQxOzpQXiJLYEsoU1ZMMEFCM0h8OHpJSkk4I346Iz52I2NSeUFqek4zI0p0KzhVYEdGfjAyOmZAYkBweHdqeTpJcz1lKyUhUmFbdGssIU5JVDZJN2lFPFJtYmopNDtedFNQMClybXVXWF8yNnM3aVs8OTR6L3w0Vn1tfmU5d0RdWzQmbz9iZltDKU5jaio0c1JyYWhMVTBjOV5WaF07cHY+'@; put 'YyxoUWZFY343I10+Z0ImeW9vZm5td3s5R1NzYENoKVBKZHR+JGorWFtoKm5gLDkuIW40aUcjbUVtaXZtQ0A+NGt4SHs/S0RWInshSnA1ZTVOYV9OZkNlUmhLMjtLcGR4Kz5iLE8/VD5SL3AlP2tvY2pEW09YY1QhZzhIYVNxT1lSSWt8di5yRnxYUz4/cEU2M2tpXTcyQ2BnSCxfUG9tWEAuXzEp'@; put 'O1ZKV3UyMztlN31LcXpOSCVITHk0WVQ7Q0MoMyomeFNNTDUkQDZnWTlneVlnSWdya2V2fmpUcnIpemBAb349SlkrJT58PWpyazMoYGJnKD1kSnpyQWkjU3U1WGF4aCRkKis7PjtJY3o3e0d+KDpoPD1OY0UjS1Ffeyh6VTZkd05EKmM2WndUZm9FZko2L0V7UWpxZ0k3cSxCMXhMdWYmcjJFWWV5'@; put 'b1dhdHtMQz55X15fdEZTdDVZaFVpNGFAJFU9VFJdKj0qTDxhdn1ibmdYVTxvP2NQNT9CZDRzbEtocDlMK0NaU1l5WjMrM3Q6Yzd5JV92RGVtLjBBbVJONjVCTiZ2MX5TQ1IyMkNVcUNCZ2IoVSh5X0YscTM1dCJQZUVGTCZqTWkjUCVlL2JnajthK1cqe1U5SmhLXTg5bDphLD5IQiokZjVJfCNB'@; put 'a35ubk4se1phdHJwa2xUQm9le3h8K04hXShQaHVPZjpCKihjcncrdm9BNH59LGtEZSN0RkgjYUdtJjtNbkUxJlcvTkhEfGJZR3prRWpYOnd4TFh8bV8hWjNvJnklW3RbbmIyPVUwYVNGIVJ3XyE9SnVbNEZCLnJDLCRRSHV8W3A3ci9LPSNXQDR7PSRCcGN6ZV0lZzElVDQxemRMVEJOaH1gWFAq'@; put 'P0l2bXJFQmN5X00pdyovfUliW0UhOUo3TyJVPF96SlVZZXVQcXU4Vj4kSytvP0guaFFNLikpSFVhWD1yXW1ucWojRm43ZU9bNjlsSCEyRWxmYVZ0Rz1UcVhALzpHI3pAckl0ZipCfXY9VCopVFJxZ1l0IzpdVDwkMThgdVdZPEBaVWQ3aUxwKWlELEh0QzdafHFMYV5EY2YzZkxsdXdQPVY5KWB6'@; put 'X3Q/UlhnbiZsMjg2XzcpYkRBYlErKmVKS3krYDlRRj0lKWxZR159NHR4K2lNNkduKHBmOzsudmtdOGZBRjMvYXhWQSx8fnBjJnVVPSUiISU4JT1jJEtiWjolU1RITkllXy8mVnhSdV1INVZyd3ldRlNPTGt4W1VMKi8yLndVaF9uVEJXbEszPHJqUjxye1M0WVdEb2p1Li5uZ1h9IWIvQzE3OUhr'@; put 'T1tAPSZTRGVdZ0Z6IXNGI35lSTc+aTNwdWEiZWEsO3o0UFhQZGdIY3Z+c2tXJDF1JGIhNUsxS3RwNTx0d31VNn1qfCNKTGp2ejo+Mms7W1NrRXYuT14oU0khb3FGTWorSC93ZS43XXduPEBpcFo1IU5vTG58TklUUmM4ZnozdDhrSWBwalR4OCEmSTJUN0B2ez99Wm13OHkxdmU/OjxMV2c0bHIx'@; put 'QnYpYSIyMGZEVipsJVZ8RDtPcC9CaXdOISFpRzQjWXJmKChpaGMkIj9YanQxZj5QUjVCeCVqa1IwZ2hDKSRnanheMUAqbntDU2hXaD8+c2tPKnhJT0skUWglIjRScH56SH18KTpXLzNfWGNaNi5OOH5xak9bQ2xrO3g3LDVJUGtaY3plc0pxXnNoXVlQPmVNUFY9fXwqcW1XeEg1aj8vZFVXWE1F'@; put 'bWNZQj46I35ANFhncm83JlpYSklfZ2kzPmZVO19QVDQ7eTliL3MkaUwxWHd4OllON3M2P29XV2lAUHsvTjApY1U9UG15dDBlVz59KXtkS2FHYkNNPGs2bjkyP3g+OlR1XnxSJVFBbyNTNkRoRTYhSWFJWWR0dS5FU05ibUtVVWhSYytwMllbNjJ4Xlt2eHtXakAyZF5AYFFgSTxDQ1drb1FvV15R'@; put 'WFo3YngoQnxyVG4kREZNLFRwcD96KjZCZFs0aF0ud3JObVAyVHRVJUhNKUpzUXxtX0I1Sls/eGlbViIqTXVYRGsmdXtKYFF5akokM2thOSQvdzV6Om0qXmhgUmQyeSp6JX45Q3tHPGptLG9mWDlvWklnczdAOF4+aENvRG53QCFhQ10oeEYlJDtDY3FKQyxOTkgpX3R3OEZ0dU9lfnZpITQ1L3B0'@; put 'WXFXOC58NzdIMX0ha19rVSlyYCJldFIpNy89JmFGWDlXRGQpelspXUZeV1siOnBVbkc4bnA8eTRpbkImZjU7M1AoR3BpR2ZmYD5lRCVdKyFHKiMuNkw7MSpMbnY7KlVoOGRHTC9NXjA4XWAjemFXZylhPUE0NFBLclpMJi8pKSxeezl6bSVONTxuKXJsaE5IYlNjYjJRTmZvNGZjRU9NUTptQyEq'@; put 'NWRyeF1rZzU+TnwhKmNob3g5N2QmY3Q0I0F+U2chQElLJDFpNzNpMzk3I2hzSllgREs/KEFrPkpCZl5oYVZBUV1qWnhZPCYiMzA1ekxmMy5+dCRjWmhLbVJTaHJPTGFyensuOVAkeD5fOiskaUNmVWUkRT5TMitMYFY+djsjQj5oU01+TH1JLkN5SEtTQzBsIzooZX17aHRHcjQiUXc7QSJ3fWxq'@; put 'OnoyUlh1Z01TQz9aUF0wL3gsNUthS2VQa2dILCRyMiYoam5YNyQiPEBfWnhkbGBmNCJmNnAwOkkuZjY/JX5WcUNBeFR5QyE/bzBIWFIxZF05dm1wVUk3WlR7OlYrRTJYfTxFKnMqRlpmfkRxNHwlcSYzR3hPPHhYd3pbXWpuVmdRN0ZBN29HcCUmeC5wNzx4QEw3XTJicUIjb2MyZiM0X1YlPCls'@; put 'QG9DYFo0fDE/akhqLntAdEBffjRVbXY5flQ1XlgjfD1fVD54KHdCN3BYaHkmOWhfQztvRH1aa0pGeVlyTzJ+KC5jbnZEUm9LfCRiZDxYIy4kQXhuQDZzJDhGN05IeCk8W0BbTD0/ViZjP3J3bzBFOGZAfn1afSNqZVg1NH1gQnBOJVo6bV5TX01eL21TLylkKStlVylNKF9NZylYcithXnRdeDFf'@; put 'NHZ4Pm06cnsoUUBYeXY6NUJdQ1V9PTxvRzpJZiwsNTBkQ0ZDMGdMO3o6THYyVyNxZG09UG0pN3M3NTE8YSJyKDQ0aCh5dDFMTW5xNy9LcClSJC50fSZyd1VYZCo7Ukw3dl4yYz9MYVd2VS8xUF5lJnkyVkhjbm93aGVoSHReZXs2dkN6cXY5eGAvfV1KR1k8SGUiR0NoTzcuNiRaSCJGOF5YLE9Z'@; put 'UkZpJCpKPUR2XSRIeHskYl1DQiJYcmdlZ1B4WX0kR18xIWNBKTdIbVVbRm1kXU5FT1UqSkMhY1JmRmtfZSZOL0NbWyw9YTRTdHM3VFtPcDsmfGZSRHFbQTFOMzVRRUY8TFdzVyRRQEc4R2NaN10iTHY9MU1ufldPQn5URS5JVUREKyFZa0NFTTdyUTA8OF1DQW52cm1hW0U2ZDldUiRUW3NRcyJN'@; put 'U0k+TXVDVzY6SHJ9OW5YKThVaUtsRixDWS5xWyE8MWgqLnR9aXpDQVkrMzJBXnRXciYsPD8odEJETDZWLmJOZl9jOEUoWTlWPDYpL3F5Q0dlbzZOLmF7P00kdFpYUGRNI1oseDE6NHVrL1pdXUA2TmdZSlNASSkqJWREZENIRUA5Uj1BZTB1IWl+NypdZy4jZWklVHdsNjRjN1JVe1diS0pASHRR'@; put 'TShATHcsTkh6ZTkwI2U7NTd1SmV1Vz8sflMsN0glI3g8NjI5QFYxek1JKHhHcCFAT11pUTo/Rl9adFIhdko9LkJaVkAkW3VBcHViSVVsWUlUWSY7aSNSfEBjbmw6VDQrVC80ayg2NUwjL2NmLzZSNU1FPn42RGo9N3JJMHxGT0JqaHZ6JSRPRkNuZF55Ump1Xy45eUlFNjQpaixlRVhmQyV3WT87'@; put 'VHBaLjJwW2EvdWBaWF4rJDRVUUxhRTNpLm53RCFlXypNdXIzSCZhaWgodyNTUj9eKWd5eyImRFE7Z3BreEhdbSFlP202JiFNd3R7ZC8mJTViV1MxYXxAYixbL3t5T01FOnZdc1lyNUM+IiNqVWJWKFcxajZyanZJKUosUFNdXz0uMHdJaGguakJvNCpaSUUoTzU0OzJGWCV5I2cxRlJBJnk8eDA8'@; put 'R1FJbVpkYzR0KCpgenFOVHQzYTo5WHlkWn1EVzpmW0t7MyxyPXp5TlYrN0ZPeX4mP2AmV2lGcHJ8LiFFeXNgPV8vS1M8RSRhR1VQSShNLzFwdF1jMGN7WTtBdl1iOGk2c35pRGFKY0AkfntoX2I0bDtxMSNpQns9QDEySSVUMUdxSnZ0NFI8US89dUEmITliT0VWdzcwLj95a1AvfVFRVTBXYV8w'@; put 'XixPOTZaPnQuV3pLZl5FfkpselQpWyUveDwzZyhSJFV8PVo6Knl2L1NuVVdmUmYvQzMiP1EhYWJjIihHflpScmYuODF4ZVBLPl4lQmFWRlBNJCFwd0kjcDdhaio7bVVydnpIbyk9YCE8bnl6W3Ejb1ZFQD9EQy8zYDhjY3Q4NHVtOF80MnpRUDEwV2UvSmxuOTpuXnpwRTNaUU10N01sIztYJCk4'@; put 'LHw9Ukx1aVFTZEVZL1lfSkRIZipWTDY2bUh9bUwiI2wmbzViKEx3ci5Ze1RibDJ8N2l4WTgpc3t5Y3gsM2EkR24kQDlWRis6fihZdEVuS1M6TSx2alV9Zj9jWUBdeilhJT90VyNadz5XfmNDPTk/dj4/T3c0I3hwOWJ4InRvc15pSWM7SjBxPV0iNlNqOmpELGE0K3A7fn1sRGVTfDByO1YqNEFS'@; put 'Z0UifU98cj48ZEY2K2QvVl14QCY+Njc0VEZgJldUVn5WM08mREFoIUN0TWBqWWlodkMlIUJGPm5UYD1vbSxPY0d4ZkQicERXfFhpakZgbGM6S28vKiRqREg6c0huRiRGIXt9cFNQSTF8KmI0IyMreFlSaEMxPCVDak5kXj1IWiFNeSpbfWV3ckNvUixYZDc6ZTwkcWB+alF9ejhzJl1wbWh3YG8s'@; put 'I2RuXlNCKS5pendIOjN0Zl5FMkY5Sn5fKl1oRm14U0RYRzdkemJUQU5vJSYqeDYwZiFLMWkwYVgmSmEkc1hHZUM4YTEoOm5CMS9zITNmb2Y4Wz9vTyNrdHhzSyNKYWk2LylpSWF1PXFlfk49UnZeI1M5V0BCNG5qJXlQLi98Nn5BVT8pekJgPDRqVDUuNlRHQl17el4zeTxabWApKix4aGAwJDoy'@; put 'Pj50VD9MdGdtLE9oKUx+fFN5S1hSYnFUejh9NDM9IyRYeXQra1Q0cStXaUI+TnJQaFs6aG1wPHk+bHpPQlozaSYuemY1ckN4YUlWZF06WSE3IVIqS301cnlsPlptXXZsMUBudHNOVF5iUltVZ342Nk18KkMqV0RtfFkwIUh+MmghSFQ+WmFvcUdUdit9W2E4aGpJS3M/bHddfW1TNjBzQilvQVl4'@; put 'Vyw3TGduOFUsZyptKmlifFJNYzVLcEgxempUOCYuSFIhLHp4L1Iyez5WP2BNcXZla1UsWSp+ZFc5RDQ7VklDLGQxfH42OWpKUHB9bUA2LzRIXjYzUk40OjJ6RnVlbWFDd0AjJjo4U1slYEpkVVM9UEI2Tjc3X3FHeVhCYClkZ05Bb0VKZkYjPHlsPTZORVpWL3VDczF2MD9bUiFteFU1aX0meXoz'@; put 'UFY+THZ0MjY7NitTRGByQzxEZUk2NjV1PGhLd1RqSlA/bS9FbHdTMGk5JXZjb3xHSEdASHdscVc4UmUsI1ZROlFdekUqS3xbUW0rRipERTJOL2puPTQ1fGU2PHwmJDc9dVZfY3x4by9pKCptSURbOVZ2WXJXVmN+ZD4mcFFfRChYcDFyKnBrSnYocH40aU1AfkozK189cnFuSy8+Km10X2p5PiZG'@; put 'TzZxWntPWG1WVEc0N0dMTVpVWkhwMXh7LkpDWnxscUw/KjEre2g3O0xkPktvWy4ifTNnRU0hWUVEMUxERislUERnYkZoLGZGMlcsXTlOLjAuRHlaVzAmLzV8TndUbV1CJE06d1ZdTm19T3MqV1c3JDdkeyYyXn52LFVNK3w0TCpkZFckfk85MiZhTDxLQyVobnU3dix7OCVRRzlmKzhWWW9jLz95'@; put 'Y1smOEFqc04yUGkhUEhRaGloMFhYZHFJVllMe3c2JC5RQmdPMG1zVGwzM0B3SDtwNno4R31OflBgIyZJSVQ/WEA9Q0V3YSFiSGYhLiYzfSk8P1J7OlomNUNBOksyc1p4LzBrYntWP2BWUHZ5PlJXeTd2LGlhQkg4bDJ1PnlJcF17Jnl1Ml9dZ3FoRHVeMS98cixTc1hia1UpJEBIJnF7UUhBN2xm'@; put 'a2EheFdWWSssWHU1O2YhbXkqXyhsQllgbTBQVzEjdVtCRFAsQHJUKiF3JD9ia3c/TkpgPkg9MClsVTBrSE8kYypdb1tidldSNj1RbjM3Zy9KYllwcE5QVHJ3eEBudn04SVN0VHRiKl5MQFh7fUpAN2h5K2ErcnM1SUZDZkgrLyFUWkxoWW1HJk4yK2YlTU0yMmA1TzMuSjdLbVk7bHpTN3BISDsz'@; put 'WHxlRzljVTIrKFRDdntdITo7X10pTkpAanhRcEVDNTBsWjpFTzg2eVBsWjwiWVoqe3NkcjhaRVE7VFdpZHIoRjhqK1V9fFJvPkxeeTtTLywuW2BMW2Y6P3VoXyE2QzxecUw0RjMiZHdaRi5idFFgbW8vXmtKW0EqQyo+Mzh1YHklb2Asc2tJdyF5Vnl2Q3lkfih0NUV+TigzKCJAbElZWXFNMG9y'@; put 'bmlobzt7YSgpPFosVCUoNyNUcExQZTF4UUR4T1ApIntoKUsrPDVXaEx5Oy5HQH1VLFNvWWZxTyJQX0VJWGcjcXJCKnIyfGJgRi9WRDdATFEhVnokIWxtdHhkRjJOMk9QbiN1RyxGdWZHYGhvOzxGNUgvLmZmbCxgRExOVHI3cXVpMkw/LmQsejdIVSVVdmhkNi93UDZnO255WnhwW25ZUTZ7WSUi'@; put 'Kyp2WDpdST1rUHY0bi9FaD4pSno6a3owe0R4ZTBrRzB1V3IqJjZuTFJoYUZbbDxxKjhCIlZ3e1FjPFViL04/cm9QYStkNzM8Q0BvZkdFdlsyKGh+KyEvRGRbMFEjej1JJmw5Qk10ckwwLGYkQWlRKiJfekpxODFbPTRKVUJuNyZUNjAjUURmRTJESngzKHBQe2x+flNIQX0wZEo7OlNeb31LNFhs'@; put 'NSZiVn1vQHY0c05ENHk2eCwiJEx2IiFtX1dLWGRsRFRINm8jb1VyaHombktpa1h3ZFBtaEsjfj5Xb2dwUV5bJihbZkgzT2BEZjx+OTQiS04pNjIvVmJDVio/UWk6d1Vhazg/Ump0SlR+MUpuUXRKTSkuczI5I0Mvd3ByNmdLfDRJOn0kcGp3YzN1WSFbVl8xPG08JlFpK2B1NXNtY0pMbnwkOF14'@; put 'Vi80OiRbcWYpQyhKK3dXOms4Ml5dZDcoRSNCbCIqPU5hLyJvJU98ezUzY1QhTXw3MGE4MHN2clRELHJoeE4+ZUZGd2lBbWYrMEQ3UD1lNEhBPEAhV0dEaDQ2VlVjJFc4Ym9iQm1bJExpYnNqciZYUyo9ayR3OV9SRlAifigwTHdmdytrMHwkNT52S34wcW0rQzpLcyw2Rll9eDQjZDBkWj1IcGBW'@; put 'dGpRb0xSZD8yeT5jellae0lBeFZqb100Z3docio1bHxee3xwZmB8LEo6TjdjPUZ2ZFg3IW4mbWYwbDRKJEx7OHNyPFlrPjwlZ3lHaX45eFtiJnZvTmZ3XUpNSnhiJUNYKEBISi5ydzIrOCU8IyU9Z3xdP0tzdj4pakgsY1VbSEMxSTR0YXVsV3lMJkdVTnZGW0VhaF9bYjZ7aypRNTNCS2ImdDZF'@; put 'Jlc5JW5zVCUuNT4hVEgwaz99Jk9kSXxJcF5uT0U3Vn5yYl8ofTEvcT1PPWBLYDlePXN7VFJkUU5kNjx5QEQhPnB3fTV5MCpCUTZ3WCJGPW1pVit9TH1WRFs9flpJWmc8ZzszbSI/QChxcVEjW3U2Q1tEanIzc2pHQHUvQWtpUitKe0JEI1ZNJC9LTn0mMWZAeWFUJWF4KGF2Ujwje2c3ZEZiXnlp'@; put 'I3tlezddN2dLVndweCE5QTNbI2d8TS4ycnhfa2wiRlldOHxhflJ4dGZiPXZaY2RXRkVBeVhgOn0hYjRKLjdNRldlKGB8P2xJMTs3bkhOamskfGY0WHMmenwvWDFWZVU0czp2UkkuZCF1UTV+YFZkeH4uJjgsWFh3XSp0Q0BeMVhnK0JWOmdKOzciaz5HJXYiQndxcCZ8eEFqNEQ5Qjl8L0I/bDxL'@; put 'TTUlMChhdFVTJXYoL2A3byNzKCV8Q21Qci9HdFZAWnxhfTo3OG0oUSl8IWRYOEY4cjhtI2NqNkMjeTY7cDowUz5hJkNKSzhYMFIkIVdPNl5zbk9IdlskY0VgaDhhK3xrTD5wKjl2dDZMJE5fSkgxWXxKaylnLmNQeEBqLlVkK1F0ZU07IlZ9PHhkWU0kRGRUQShANnJ6Nm5nPU1uR1NhbSgxeV14'@; put 'ZG9XV0Z9bFgjZiM8SDtjVTVUKl1gYXxaMUh7cVZWcVlkMjRrZkZxZXhwUl8rWlBhTWpMM19+blA1SCsscl8rUDlQRkczOGlCc0hqRVQvV099fixUcWhueD1dWXMrT3hOSyJfM2U8KXVoRHc4KSR5Om5pU2Y2YSFVTHFCZldPaF1qKDFfNH1CQ1ooIzN6PGM3LiUiMFQ1ezFvfH1lUjUvXkdMSiJn'@; put 'MDB8Ui9QZFBoO3JJVF51VjcrVnMoXSN6OD1GI3l4LjFiKyx3RjQwJjw0Zi5XJkJ8S1IqZDJAeEp2X2siV340PipTVlJWcGBXXlB8UTJicExPelt8PCoyOmZDQEVDZVNJZCNLa1twdF17T0ZnM3IxX1A4eTpmJDhHWEhyaUguWXFAP0dWZ1g7eXR4bzVBQylZSGchSXlVbnJuWFBBYkVaVVJkez5k'@; put 'a2ZHOiR5OXFdbDY2NlgiR21iR0lMc1JlZjJIZUBJeWwifHx6TVtWe1FKcXpMc0o1ejxbW1ZTNTw6XXk1fndaX1ckIUdHU3JuMkZnTShOOiZrTUlFcU5DXV1dL3BzM3FRZixbNH4uWHo3YikjRFc9fS9UPHooQ3xKOz9AQiUqMy9sZFtWZ0RtbzwpYz01JiR7fHslcko1MlN8ZlMxWztCPzFNRFNP'@; put 'KjA3JHtFXl1xR31aTWhTdHwuWyhxKWxnZzspZkJsJnQucmZESSkuRFQsT0c2clA3Un0mN0FGN1FVbzQrYDdrN085diRaUzlFMWNUWiFTTCklW10xUGpjRUpUd2pXOi9GfEMjKmFBLCliXi4rbVk5OU9RKiM9SndfTFBWKUw9P1tCQ09LekBaMVYxI3B1X2ZzIyNPPj1vbSM2LHZTVHlzMkZYdiMy'@; put 'd3pDUm94UzspSUFmfS9oUzJLRG45KmpoYHI5Z0h9c291LDhydn07flZ6PjNsIm0za2NLUV1kMjAreCo2N0QrLjN8UW9UajFmX11tYmltPVswNHE5N1B6bWhaIyFzPSlhRVJ2YWgyQU9JInsqaWBXWzNIbH5OWV99QHdFQHNUa2JhfiRVSl4wOjNYLzNIL2FaIW82YVcrIiQ6PTAxR1R+dSROKXFj'@; put 'QyVbeSs3dXQuUTA8KUFoazlnPz9BMkl6UksjMXJaSEBsNGskWFt5VGJDb2paYytkbiZhLEQqVko8Z0I3Wkc5RUpWN3RyKzJjfS40PHV7V1kvcTt7ZH0xfGRvSl46ciNKNE1XJVFwaENTPEp2Sj9yNTojfENkVjZwNGM9VTEpUXEkcFh0PismK1dHbiRbMzNtYVdTdztAPVNdP3gzT3EyYkxsJmhx'@; put 'MHorZkNgOUs9OX1sc3J6JHd9QVIsYVlLUCk3I2RQR28/W202S0FYYiwwfFk3SHxnWERwPFpaS2d6UyQpZ20jYkxzeTFWa2J+anRZNVVpRVhHVX5NJSJsPmpwZFQvfDNTWTlrQEQ5WStEazNrZzkrLnpMPV50Rz5yR1p4VldoUVZxKFc0el09KmhgWzUmdVEucVNXayReZjJNRVc6I3p+W1A1O14x'@; put 'WyhFT1UheExsXUNpQWpPKDk1NFZIXXgvXjxWXUl9O3w+TF5wV2N8ZGtEVnFkfihSJl5jU19DPktxMDxHKiIsYWRmKmNiKV9OJjJ2Y35pN1RRM00yOnVCVUc7TkRYPyt4cDtZWzM8NnUreF8oTDdDKVBwWyExK353My9GZnw2RjNHaSxUcklGPmFWN2FObD5ELyJVayQpZWI/WlQmOnBPYCllMys7'@; put 'M2AlRmIoK28pI21zQ3hKImBbSStea2lWMSYuKXRDWWJhKyohVS9uP0dLbVE+VyJDS0IzWlclaDRTKk5xRjg/emdsfi86QURWOlpYW1o9LD1KPXpzIXJJWnhdUi5ZPHtdczllUV9nWG5NQDdxJHNETFFmWlJyPzpyfW1SUT8zRWcjTGIjN1lZS2Esa0NYPCw1WkpeU3RtSnU1WEdGQ04lOEVTfGNV'@; put 'Sk9PaTRKQDxrdCJKbmgkVDIkSjx8a0NxOWlGWjh7bmJRUFR6ZS5kUzZyMWRzSXkxU3MhIVU9SHJ1aU1sW0hSbHJrbnB2KDRMUWVTV2hNO3wxSGwzYGs4LEJ6VEJ+Zn5aRj1xK2gpLGg8VU1AQ3dwVjVdYXVMIVFdbylqeD5UdVduSk5PNGw1ITtHclZfKWF5K1pUKjZiV1JmPz9aalNDQ3hBKGIl'@; put 'cGw2bit1Mmk7Wz5iTVBtemV5R3N9RV5zTWVtNGM7b2plNXd4KWIjbWtVUGRTOnJ4RFY0XlFKND9CPTwjKm1BXXhWfTJYKU4vbz0uS0hwITtWQGklUjI0cz5MaDljLk1NZmRlJnc/NV5wT2YkZ1NdPyN2MXJMdm0oO0BtIS9TXjZONUtwY0ZhYFc/SkdSN2wyMDl4Mk8peHQ8QEY9KmEpSSo8WVRU'@; put 'Lm0iLG0kLGovLj9BNkI8SSw4cjMpJSsvaVJQYFQsOWF4Y01DY05aTGAsLlhiaDRebSkrblF2Il53fTFmYUNJcmIxbGI9MGpgJFUpN18wbDkxNlB9PChgY1Y5b3R6QVB+UVswd1Z7Vjk0NippRiF0bVtvSnAvJTBsX3NlISZ9dk4wQGN8JWI4a1dRWVUldG1GXXB1KXtaOHRpYFI5dGJVNEYiTnch'@; put 'REFrLFFfIVUkN1NEdV9fJmkiKDN0QmRTL0FATTNvVEFbTnRscV48VysmfHU4eFR+U0E4UDMmfXxsM307L0psQnlRNTZrIkU/Q1RpXXNqO3NNLDQmbXQxe1tkbWd3Y0lLdE5aPEI4R216RyF4JVtvOWFRJlYhVWdySENATUtSRF90LnRXXnY2ZjtnWW1oV1MlUSV6Z2tHL0pfQV52cHF1LmQrNDJC'@; put 'YVNNYTNKOmo6dG1lR2B4akZUe35aVjxhNjo1S11kTz5TTVJWSUxMLn1TODRuJTdAankjNy9SMkRyVS9fWXpDQkUvZFRLSn5CdlRiQ11leTp4by4jQm9Ga1p9PiFKcyt3VnE4bmljRjxWJHNxPWRvKCpfVGtOU2NHQV5TQk8jLnZjekVsQTYmXnBHMnlsSmUodCJYeitfOFpndD5vR0p+Q2ZySVp4'@; put 'XS5YbmoieUcjPVVtZTB3b0RbN1hvJipYYSxfZTJQciopOVtuWSEkXXA3WF5yNmUwe3U+KUY4YzQ0XWhhOXx5WyFjTVYmYFY8NXQlWH15cWg5UE18X3ZUT0J+ZjFZdGFOOStwSkZpZntDTWpIOE86SiNvRG5uWjUrZiFLJlQwVHlXZWRjJWR4Ryp4XnVbRUxYRDkpRXQ3MSgqdWgqTFkkTDM6I2Ng'@; put 'U0pvZ1I+MjUhZyZpV0tnfjtNX25SUiF+NUZQXyRjaCZnfHc5I0didzs8KTl5ZCJISEx4Z1pxfk98ez5Pbmh7TWQmZmdCdTxTZG5PLHAhcTQxWS9XQHxbOUc3ZEZnIlhFRkpmTlNkMCl7JiNXIztIdjEyZzl2JEtuSkt3IyFHZXhUbVRhb1AqRSYobltLMXxAc29DKXV6NjBCSkpzZDkhZmFCajJi'@; put 'JTwhUEV5YSE8QXNWUyMkKyRgdDcjNjwsVmVIKXYjRnNZTFA4IUJNTFcoViwyNnRtTjNHOiY5aSxBNC4kJDBtMF9jRFB0IVIuOSl7VU1RclAscXE1eSRmUTlrZ2R6IXxHOi9hQVdAfj9yTD4yX15mUHs9T0ByNXdyUzkkNHU1VDpvXUxOeGRtU1Q4JTE1I0ZYJGVUWFJJNi45SVg+ZGIrfDEvJSJf'@; put 'NjV+QHIhejxdJD11T3wrRk83cEpCWk94NF1jQ0B3ZFs+XUl4Sj5ydTBeZDI8NEg0WGoiTGteISlpal5YeTx9ejRQdFgxPEFzJG8+IzdWN01wUSJsSU01bGJPQXpPeCNZTFsxKU4qRXovaHlncU47dnw+Ty9KX0txM0UuKiFocm9ZPDVIc2V3K0BRQiE0Y3IwclMsVkYkJlE+aylqNUNxKXEmaz1S'@; put 'I1o2b35mQU1dZT5qXV8oWT89ITVZU1RBXTtFT1l8Yk9tcCZ2bjp5d2tQaGEjJCFdLEFwPm9lIkhYNXxGS2FpMW4uVHd+PiMxW0pNJEgxOy9gOyhtN0tiXUJkMXU9JmV9NzN1P21eX2wvO2FLL1llUyhaJW9eNGlxOHIlSyFCSDZ5WndTbmVDMyN4M049bElOXm1RZHc/NzZ8cj1AMWIyJDZhMEBU'@; put 'NDpiSSZCM1FWND0lMTZlLCwyaVQhelJYazA7PzlPeFNAKkx4XnBoQzpsSlUkJXo6aTVKZERYSUcrSWJsXXJgWDVHV0N+RHY/IlFeXyR7N01faSlHLyRsNCZEQkZdZktpZ1NdQGlWPHZeQkchM05BXkpTRlVzWWg6ekljUGpKdVh5Yl0jQkJIMVlES2p5TWNuSnY3eCV4c1tJO1dAYThLOU53Ykpv'@; put 'MlFoIkp+W3U4eT5oRV5uYlQybm8iMHEufUpycEN4JSMxezZBRU5FYFRwOnkxJlRGVXxUPC8vSWh3YFhEITdMT0J5X2E3eGNDXmV5IStPR1hwaiVmdiJ0ZXs9PCRjN05XNDdTP3luYUVaJCEwYkhfRF54JSk0dTs2UX5BWT88V2VDTiw/Q1NwOitHXyY5QER6K3R4ZjNTXSxETT8uUzVAWCh8JWIw'@; put 'OGMlW0Q+dCNkajBGUE1pakJyMnhJdEA/SWVuOHlhJklbOX0qPW5kNDpocT1LVGUjVG5JT3tDW3NpX3JDMSpWfl40QjtQJVVFRzV0T0kpb15oXkBpd112Z30rO0QsT2ZlNVMiTzNlQ3ReYFI3XUNLQCImaHdsLktmJnFNYkNrTmRoeD5XOW0xajcwJFBkZUJ9aFR+N2d9NSRRKCV4SCNabWxadFNl'@; put 'cnwyQHtBdV03KXdZcGt3X2d2NjMkTSUzNytTez5wcks5SG0rR0BGdE5GVUpLPD83Xi9RPDZ2JDsqezFVc2ZJMTR0dExSdnBHdklTKDssblQ5MUojTE94ckFITFtPU3E0b154QDZfcnk8a1pRbVlYOjc6aC9YLFJMUl1fW3xALlIlWGUlbn1zKWJ7YnQjK0NJSFZHPnxgQDBjLGY9TWlUMFpDKy98'@; put 'cChxfWNifm1JQDlBeCQqalsoe2NMZHtvaHhoZyphQmRTU0FzNiRyW0EhbkRgRjEhcGAvVS9OQEdGPkgrWGhqMTtpIzs+WUtPdCFHQC83ZXVlKi83WX58REs2ZjokUGtTKihsUEdqeUdZUWA6UzI6bzFidnE5M3IlYVhFVV4/WV12RHRxVHlNNCUofjs8W34wISFEOn5mQ2plWShDZk8+QXg8b2Jm'@; put 'VCx2ZUtsVy5iPVM4Wlh6cjY/RHB7SzAjKmN4LHQvTD5GV1d0U1RXPkU8N3dVUTVMKnljbXQzY2FOW3IxSTRDZUV7ekVNeHo+SjI7U3psbGRyaDBnWHQsUU5Jen40P0Y2WkRkJVF+QlFkPyV5RmFHUGFHL2tUNG5Rb3RhanlFO0EuQ1JKa1MjRXZuLzBIIlRQaDZZc090VVBxK2h8MntlcTJWKFFH'@; put 'YCl9NE0jc1JWRC92SEdfYDkkdDdwU01pRXJGUVNuIT9tKX1lZ0pAV080TUZIP34+KXFWRzM0a0NAUi5QKzxRTVNeUiQ6eCxoOEo9PFd1O3lhWmNnXyp9aT98N2Jgejcsbm1QKEk7WURVb11Kayg5WlVEMzdhZio1KEY2ZHExTEMod3pQT0ZtdCN4ZWszbStlSWVZZitQSEwme3omUjBUKyQxMTUz'@; put 'b3wyOWRQbFgjWzJBPztyIW0kKj45PDsrcGpfbmtTTjAwMWQpYS85UElLTGQxTiE7SjVJK1tSNyJvfUQiZEJFMC9JUEFtKD9lWnFIYUR1dEl8XnFgc3FWKktVe3dmWD0hTCIualFFJUJ1OXR2QjBwQD9TMCtrOClxVSJ6MnY7ZmYkRHo5XXhrVnlvc253c2U/bjU4RXxZZVIlM1RJV31uK25zZVFj'@; put 'JGciKWxsPXVpT0YqXjZsXzM2UnNHSlFeRDhiOmReWDNvbGI7V3ZlYiRFWDVEYXhzdSQ5R3sqPmkwOVV+KVpWMzIqa01YT2tORiEuO3c7P3h5O0YkJFRSQ0ImOyZXLmd+cE5OUmlxYUtsZ3xqfWl0bk9mWV9VaVVHKUtAS08ibzVgOiFgbjt1SVs0PEM7M0o4SWs/ZmFoNGZ7QF8wXSh6WitlTGYp'@; put 'VGQqd15vMXBJZDY6NkV6Wy5IZnpBc0lSVnFqeTRyfS94cHVmTnBvX2dCNyVYMUpHKFo9Tm1BYmhecU1QN0JKIntEUDcwXjVdc3MoLlpBeG5MKTI8ckA1TUdyTGFdciViIjksNz96TV9aYy8zWz81UGdjIXM1cTdbWihXTWZXbSp+KkNhZn0ob298fiVLX3MsX1N2ZCpyPH5+JDB8WEUrOShPZF9S'@; put 'bXMiO1BddGhObz9eQ1UhIUpyKnJEMnpvVWlEIT5VKHRBOm9zbUNyYEkvVkcoL3YwYT82PU56RVp5dWxsczQkMkI3bSZTcEJYPT5Mdkx6KnpaVF16bDQ2XmJdal85JFZhUSFudFE0aDJ9MlhYOU9OIkc2dmpYcioxSnJlWVNJNXdHS35AbEtrSXw0U1U3PkJLNzpNM2dZNVBNOCxBJGlfUi90NX0s'@; put 'bVVyYUo4Sj9EXmIsI0MkN1MiRiF6JU9iTEgmMHwwdFl7V282T0gjPzs1Mm9HMzMpOklrfUVPLCliJStzQCh+X21nZ2JlWVMidDltRncsRH1nelFYZW0mME0mVFgjN1NLcjdhT3AxbV89OSw6LHJDLkUoYSZWVFpbXldLQFQlbDZnXXUkey83MTEzXXBUVXFpTXdvLiN9ZW1zTldIciFeMkx3aVlX'@; put 'ZCNdfUReYil3XkNLaURXQmRjOHFvfGBmbTtPbj4iZikmUHs0aVY3fkdpK3VWdmcqVmFOK3NgYzZmPmFQJk9wUi9QeyU5PHlLXkU4d35SPnksakYkV3w9RkhrfEl3eH5wKCUzZWhFbVZmfDs2O1MpTWFVN29OZGYwdUooVTZYJkRVdzt2OUwrWDZifFNVMi5FX1h7LEo1VmJ5c20jQDo5PmM5XXEw'@; put 'e3VVbE9iPEJLTUNZdl87WUNmcmZ6c2xtRjwwW1FJT3JSPShWMSZhOyN3K3NFKCpGK2NQNEVte1QyJTx1JnNbZEdwb31sTGQrU01xb05nXnIzfGRKSyp6S1B+ITg1In05S0A4UzludyQ3PW52QCsxZDZzPy9uYypCJGRMeS5BSH1xezYzNz83Km5lSC9ASFhvelZ+KytDb3hWYGg+aXI/JiZdPk9L'@; put 'JmU/PSh0YEZWSmtGLyhTWGhud1EwXjxMIjVBUjlRYkA+XWx0UWVwdH1YTSZXVFEre0cwT0QjMnN5TWNTNG1ZSipLcUB4Om0wWSw3PkF0OH1NImU/Ri83VFhyfTJ5ZjRfVk9pcV5Ydkw7ejdbZW92VlNZY3FwPFl7SW9LNTQ8VXRAOzNaUF1VU0NBVn0kLCt8XjolVD0qTE1JQkVoW21lMUtWRkZR'@; put 'YiJPc29kYWsmVCs8JUBRQ1kjQk4vRFo6PnVNTFl3PjhuSSZHdGVuMztaMS5+RCp3XnBDc0NMXnJ0fSUwUDVDcXRyLEU2Sk9+ZmRgU0U3NDB+aVpvfTxVMk8wUDtzOCEqLEUqOT9NSlNEMDZAYjA8WDwoOlpJQ0QwUzt5SURUfH1KdC5VTiFdVHIvRyZmaCY+UGNaPiNgfjR1dWEjITMkWTA0TzpC'@; put 'KXJFKSM8UlJ4ODZfMV94Xy5ITkk0Y144L2VvWWczeElPSlY9QXl9SGNHMEddRTloRSlgUjNHalVaTCxGZDZkcn1SblQpRylHPXomTDJ6Jm0zaHxAZCJsclUpcipWdldvV2ZkV001elV2LzZXK3xvOksjW2QqbCFufV16U0MpNTgzT3skZlQ/KlBmJGFZUU5lIjUmdVcwY2YwLEs0Om5UKDleZmE6'@; put 'a2YlXlNDTHxoL3ZYM0JUUS91TkdzODxmdDBlIkJCc35eNldHO1JIZDFLI3dAenM8fEBvVWI+bUNYfj8mfFBjYlYiW30wbGRqeDZbclJgeCkleCRFSUJwZ2VSa1E3Wlt3Lz0+Mk5sa1N7LFBIZ0hiNykkbTZhcDRVL2xTUCleKzZXZD40Wyw2U0ZoL0UjSzcsNlNGJS8zQXsqd2NpNGhWX21WYipi'@; put 'TV8/YH1wJT9+fCZHUlphSF1vaCZoZ21VPG96WVdqfnUqZUs5YF96RWNpPHlnUCpIaXAuTmEpJkhKblsoY0s4MT8/anshTyYyJnpFR195YCQzPlNaNE5MTWFPPzpEM21IWjI8bSNOfWozW3h2ODtISGNgND1qYVVwcztBY2VRUWh6fD9CI1tXXTc9Y1E9JkFoMzRObWhDdGhQTF1TImFvdnQiJVoi'@; put 'Y29MSUdNNF5jYmVAWT59aUdTaVplQkhYMip4fn1pR0Qpc3VCSE4wKng1fCpNYyksdEJIbHNpQ3NzJndpaTpoRmM9bmJlbC9BZHxPfSJscyZ3Y2YuYkNPc0xfZDlKQmE0MyhEYWApZD1aKShTV2hZOnl6REtZc0ghfG5hRTMmPzlleFtoeWlheCM8UHZ3a3oveCF8MFA7NVpjRmNJLlFUeUBvdFU2'@; put 'V1ZGY0YlUVQ1KlsiSzZUT0ZjOVo3eTw8WHopQkBHJHxnTF5uVFdjIzFkQkgyV1hgJVdbIkgiLGAhaz0wcCZ9ZXlANDl6SDV8a1BlWWxzPndOJTEzRi90IltULGBrU3QwcCZIaGx4cCZFYTtgL2UhKzRCJS9tcyxgJn1Ad0tpb0w6KzQ+PEcsMi5sSmB5TCpOIUluLyVLTEtYNDN8MFA2QC9BYG9B'@; put 'WkJIZkVnLH0sLGVhfk9xbSt2T1VZKlp2ZC9UZS9QZkhHIUBKNmJIOXF3V2JgRWRyREJOVy9xLFJhPU1ffGxBamRaalVIaWBRWjtCZnw/T2ZqQiFLNCM/Y1JyKTJiQFR0Um9JK29xZ09KZUAvNnMwfVdXV2cqbzRJNF90K3lDKzJiXU5FUUYvfShhZStvdkJWRWpVa3pWbCZBJlplfCNPMHUmd2ow'@; put 'cW9+Vko0T01TN3VHJjRWZDRAckVqKypNV1g6NG9WaFRfdU1CPl9wZT14T2IyV0lCaHMvRDhxJHV4ZFEvOmZuT24pOn0zSGB8dThENzRuOVB+QllsMChFODNPRDdRZk5QbXU/TVlsNDNpeWQ/VDheSClaUldAQkFpOlZGL1VpdVZhdTs4VGRrQFQ4TTBPYjJXWXRZP1Q4aXlbX0plXSswTmM0b1JS'@; put 'V1t1cHEkdWFTMkg2ZkowajMxSjZmI3lWbCZBTi5RV2sqVj5+RkJIMD9xOnBCPl06aEo0UW88YjxGVCwkfCpNZWBqRDJbYnpYWS9MS3piZV93QSU0PkVHKk46azQ+bmxddzV8MU1CQEhZMzhJNH1BPGI8RipSM25QV3BZfWhYT1VNUGh0I3Y6YnpCYFFaKUAxRzJ1QVdSM3d2NShTOnBzNUttTWA0'@; put 'SWNVP1QyVmx1ZSpSfD5nczVEOC9UKEd0ZzBSaiVbYkMyX0VkbHh+fVdBSXpjQW9EO19ZSkl6WGZLNF8iS2h7Tns5LlFLNUFjUHMifXdMOXwzc2goUlhoPzF4KnQ7fUBlZEROIWZdKUR7UGxYRCRQL3Rvd29kQiVvSUtUR04vQUFLQyVjX2RHezF0K1U9KlJhOClqLiMsQ3E3fmExIntEWCRfWGwh'@; put 'UVVYc01bVWVRVHN4ckt5MWVzc3xDW2UiVnA7PStbZjAqSXk9S30/K2YsTltvbztvfDs2fD1EfkJqd2VOeUZ9UV0rRUh7JF4iLmxlaVBlMldANzJ1elcveHlvO0R6dmN2NkVMNFosVVslJUsxaXx2LGFrP3Aya19ITWo3Ol46cTpqSjNpW2RbYGZGM09fVzk3aUQ7OV4rM0RtZHJoMik8VnpAa2lt'@; put 'UF1IVVgyUyghITgyRy5oPHZ7RU1zL1E5YSNlQDViTUslb01vOUVJeCoxT0lOe3JTQDU7cyZaUHhqQHtrMSZpMlIjQF4wKk9gT3haJWE2eTwyaldJTEdqNHJURndCW31rUVlwZk5ZY1phTSNIWlp5MGE3I0JhfkEvNVlHaztge2BYVWYzKyNubzJEJVVVPmdbMCYsOVU3Qyt5InF9NC5OQF88UlBK'@; put 'OyV2Z242NTNbOTIpeFRFe1o9MUg9RzREY3YuX3wyfXtDeWlYPlQlIm0pL3p+YGlxJllVQVhJKGl9VDtgSyN8VT0iUy9JMEI/eHJTcitZcFYwMnYzPGdGRiZUZVFWMjZoVXouUDw2Q3poWz10NjY1K0FxY2pBYylzRkxRR0wkXTlWJEM5PDNoQlV+eTZFN0MwKTZFN0NFQHpTMktkNX0pSSVGVEhC'@; put 'O0pLPnJzQl9KSEFeM2ZzIUxvXjtVI1JCKU15ciVoYkZRKDtTfV0pN1RMSXRbWjJ7cWR7TS8lZSE+fGlyc1pvXk9wVkRUbl1CYm5hTE81KVhYKCVfVi5JVjVSKUMmMl5Fbn5Zbis+R0chfmtvKTtoRk4oPyFOVjFQcTohdzdLaS9VN2tBRzVxdWlxX1QuUyVbLjlEaXdnTUckNDBZWXVsc0R1eHtl'@; put 'dD51K2JjM00lNGdkWG1kZChpUUtdPG5uQzs2dVthdG5AOlVzI3A6Un4le1MoV3RDez49TH4we0VfI0NZXzFFUkw5MCZ9PXJVUng8az5NfFtrSmZjPEkoJXN8Zy5MajRHVCVnXlUmYHsmW0hoVXJUXj84XzRoL0xufmQzUHM6LmQsX048cTFWUmFeM1QuXzR7dy9vZn0mT0Q+MXh0TXRocChQeWBR'@; put 'JkAhN1B2fCw+PFRZejhzOWt1ZS94RSxacW99VTRVKXppKEVwODQlN0kmIT0mOjhgPkw5RjM9OmNBSDk+RElGTmQzamxudSUhVF0qZEVWaHNYRiIyaTJXYlkqK3JoK1pmTD89RWlMbj9ZTj9nNjgkQ2l8S2p4WTBUIUN5dlhTXT8rfiMmOXNGcyk2WjVrbUF+YzdROmd1KHtiSGZyUytwdjhUbnZb'@; put 'RWNOSmcoZmhRKjpnfGpHcWNkXShVeHN3cSJhRllDViU2PSNeSE8mJVIvVmA/YUZGUUVfQis0TUwseFMmaSt1cTg1aUxHNj5OJUN1Nl9oT081Z2RVVUlYRyh0U2dkcWFeP01STmM2eU8rKiklQX5DKUVQVCVoZypoaS5sOnwkP0RAdj1IRD1paHhZYWxJanZhXm94PXkmUTwwQixBfSguZWA9ZnMw'@; put 'MUc6L0lbIi9rNlNlYUosa2Q9Ql4zYl9RYEVKTHpva1VePHg5WEJQa3B8RmNiIUVxfGE7fCYyWFl+UF8jWVRVRUQ+Ll1qJVo1MCY9TyVKRE9PL30vbmxmQWwrPEcwMFN8fkU5LG1wOVt0SWxvcmNLYjRXLFFHcVJgcXN3P3BWcUJWZ0ROaDBbTS8/biZ7S2JYam4xdCtwRjluVG0mRUZeUDVhW1Q7'@; put 'SmY5Oyx3I1tAajpmIS47WmVJS0BXPFhIb3VjMHd5cWNwQGApTnJCWEd8WGg5c3NWKkZSLnRUOzxUR2AyeXd1aV9edWI2XXwzMEwrQmZ1IUw9aDQhbnJCO0x6UHhdbUp9NHpENUJARDtiJE9wJnxVUz9IPyRmMkUxYTBZMFVkLnwrai4sZWxAVDZ5L0tdVT4kP0k2UT5IeSwzeTtgcWRVRjFKZntf'@; put 'N0pveEFGOzs5cG9JWjt6cyVkdz1gQjgkIT9JNyxvSXYvRi9MY0ArVyJAcDJVaHwxWT0+STl+el5yfFckNH1UQms/TXIlN3hBOnRDUjomc2o3UmNzLCJCcDxYd3w/NjwpdWAhPT8ubTkicVpudj15KldRWzR3VkNNb1dqTTM+MklqLGQrazRUblkiOmh2JF1AfWw0YEtoM10mb2xJeT8oImQvaWQ2'@; put 'ckBsKlsrdDxgQmNsNXxTVTBfT0t0SUQ+dXdnb0ZLZil9cXIsTyQiYUZROVhYVWBnenB1N3FKWVUucEV5dmRVPGhMP3kuKFBBNXcifkUxayE8K0pZOSVVTHQ4UGZHVTI0PFZWN1U2fCJVQFJSM2wlOVQlNT9XbVE6MXd3KGtCdF8wUUZfSGJ1JDRAdEgqTng+QD1LLEV6YURSODttM2xbR00qZGQs'@; put 'XUdZZjFGditAfEhxbGI7TDBzcVssZTRbdWI0RXd0eVt1YjV4LExxLnJzfCp3Kz5MK2FNLyohSUlfdyxoTUV3L3x9S0MuIjs7STBFLGZgTDQ/bm1nL1hdfDxIY2A6NHx9YFpzNGs9U1dIbzRPT0dIL0MzJXg4XzRWaGYkOkF3YS9qR0B1S2k/YT1vKEBWVyw/dUJWMGQwXklSWUBJMytRMHZ1fkBn'@; put 'ezNYR0VJI3ssYWp8UjtJMiskWWpzbiNXTXRjIlFmM1JFTmtlZmV9XXtxJFBfYzR9RSg6dmpZOiFPL289LFtGZUNRSUMzRFV9TEZ4YmYyTTs/a3MiQlZoNWh+OjdTfEw7dFN1cE4uUD9rdm9nYDkjdXxdKltdNmM7aTpheGA5S1gzdWI3aGlrc0RgfCtmWy5RcjdgZ1U+TkgsUjpHQE1yaCVGVnxz'@; put 'Uk13dDpAKzIrTzl7RyNibyxxKHhjMm9ndmpkW2hINHJZcF4yejguODZYcCgmb2AmVU5jRlopRixUdTgmTmgsaDF9PHB9YW1XTVROeXd2d1ImXzRmQGlRPmoiJGAocFdbP3dPKy89RlchWyhAYH1pfXUrYH11dG52I29yUyQqMlsxYTUsVVkyX3FCISUuZ3dAVT9fcnl5eVdyPSYwWjFnOiJOb0Mv'@; put 'Mzw4LipscT9geEh0RWRWIzl8WDxwRCUxR0coZmE9VktmdT5SPGhHLHVuV15NZFFiU0Y8ZzBCaHFyISt+I09bI2Y/WEhufnlRWDJsYzgoNlVbNnVIezZeNXNvPl58VlRMN0dIfEFSd097RFVZTCVaUF5hVm50aW9STz05TTpyeHlYIX4jeH5WQFcqc2IqUSImdDxndDRSTyVoc1pdUCQjNTpTP3k6'@; put 'OW0uMHg0TE1BWDpbQ2VSJGwlNlpxSGElfVtrOXpEVilVPiZ0aEJPI1BRN1AuLkBhfVokJUdpVl03Z2FhUF4wVX4wQVd+OHhsM2NMLDxyfkdvSTZaUEk8RE1qS1lxWFEjSkJlRD8iWG0lNHh+S0wrNHdCdkdBTzcqXTQ2Q3hJNXQ/PSQ2QVlrW350IUYzVDYjOltRZUx5QWZgWyUudyFYcl9OPzNl'@; put 'Pnk+KHsjTmNDPl1rWD89OVtoUF1gRzs/TmJDdGg6LDYlR2BDTDtsOExFVntQeFt9PUhIPWpdTDdjfntlQjlmPkdjYComUn1IWmJxUFpPUnNTWyg3XWk0W3hqKG1nQldwPHFgbnM/V1k1QGxnekM6d0UxdCw6KSNOcXQ1IiZjSzd8Z2IjejJVRlFRLERbOH0vRygqdXJvfHV8eilAO08wOV44LlIm'@; put 'OWdsWj0mRWhhOzUmRSxBS21JJDEhW3c1QStPRW4pNCo5fi9gP3MrcHNRc0ZIZSpNdX50NCJ8TD1TVVR6RU9kc3pIVi96djU9bltrb2tNP20zNlpISk0zWz9xPk5wVyRFUS9DUjBbNTJ0Pkk3UlUpNnkvInlSSnovbFsyT11sQEFCT29LeStLeyVXcWhHT2ZzaUQjbTFIUXdsUCguW3NCS2osQD0i'@; put 'QSNHW25nYz1PazwvNmYsYEBPWClhVntsNUs3T3wwK0lvYTM5TElnfFElQGY5WXU6RnEhYGdwP3FMM3ZEZGdKeFhDIy5WMjtWOzIsRldrM3VnUW55JnY4UVtfPWh5YFMvRj1geFIpcyJDXXFFQ3xCfXUsaDopdyJodiklKls/V2E5I3kvPlZ5MW90WnsyPWAhQ2pEUTlxZCIzMTdHRXtZJC5iTSpx'@; put 'PmdZckFwOz9bUHwvK2A/MFkxWmtPaDZlKE86OVI1UXspdyRgamt4WzptblF3aEE7JiMuJSxmSDNIa1MlcUNwQyk5NHZMXSpnXmwlNzdVSjI5XzMzfVV+YzVUYzY/UERAcCZGZ3VtZzZtO3F4PHMpS1V8SmUlczU2dG08SW5aL3xzVWBAfUB+PWBZUD9NQCJONCwqJEF1XlV2d29dKkhgL1FiPWtN'@; put 'fHBLIkJBV318PyU0UT9AN1ZVJVcyPFk+a04xZ1UxLCFieSplUiorNVlZUW9+dDklO1UhQE4rdVZoQGR6R1RjUTFoJTZvUTFaRDElWTdpOExNXm0sQXcvIzhMc1o3bkJnSCNGdUMsRTlgbyhxZlQzfD84bmA5VmlqWW5nbG9JUjN9dVtZcChHKUdbZjZlZT1XO3srR0AhdnBpMSFsO2wlRn1DUzZW'@; put 'eHI0JmxMJWFQXUclb3xdI3U/QWNSZXg1NDYvNjtzWUMkPTQ5aUIrODh+UF0zbmZ2a31ESHNdflZJI1RrVV13amlKYyplYHcsNDpoNjpgUlVGZnVjMFtMK2AzZmxGKCkmL281JGY9WWBBc0BHQVY9RStgc1J2OV5dLCZuJGo2WjhyW00+dyM8bC5KOFVkLnZEcX00W0YsbWRgb1srLHlCMGo7QWdq'@; put 'LFhjKHNYK1M5RHBsJWVOQ09Bc1E6aldmRmElQUZ8SSM0fUtJbGQpTEU3UV5Adjo7Xj5jT117MH09OkBlOEZGQlVKM34hcSRlOXxOJTJ9KT9lSy8zZklQTnJYczBeOmcpZlshRmdDK2clYEpwOShqMUtAZWglL0ojRGFYW2B0akxTekg6KSldOypGSyFnemtwTWA0aTtbPEdrSzlrXSE4Q3hiVkpO'@; put 'JGxwNDVjO2x2e3lnfDYlMjxaIkQvbyxLbi5aandLRiF0R3goS0QjS25wWUBWSXppXkVZWkJ5OkdUMXMoOCRoJkVAXjttQis6K3cqTG8heEhMMiJ8VFp+PyE0NW5eejUkVnU9LkZYdjYvSS9ROFpqbDRic0lMZllyZVshNER+VUVZWjI7ZyIyKyVxTDxFcCxtRixsPiJJKHZvc2tESVBdNEBOa2lr'@; put 'fGozOl5maCt1OV4hbmoydkIpXXZ7QjNQSV5tSVUmKzddIzE5JUh4Y2AhPl1lMnkxN1lwbTo5JSFzJX5nISQmQ2FuaXZIZU4wOGNYWTRnOnZaJkZCK3llQjhnNX0/ZiQoQEVZRHJvXn5vbiQqakwkMEV8STpKbSQ3eio1fnErU3YrZTtMIVRrI08vLjNFVFA0ckgxL21JS1A/a3kqW1pNO0YxWWtP'@; put 'ZG5OOzF5OjI+UmRzWSVmWzQ/K2A+PDtbTCU4S0BXektbR1tASTt+W2wxRzRlRCpgc00qdl9WI3h5MF5vX3BwKSokQWdlb3ApJU1PeHw8fDswZFB4W1BkaDA2SGFsP1ptWDlUMUMyWmpbcD16dWd6RzgkNE1nRnUpZSNpS0g7UXhQMyNDXnZsMVs2TmN5KnZdcyNhaF1HdTlmW1R7RGZYMVlHaGAu'@; put 'ckxyfFhiOENmKmU8eFpaOUJATlMkdUIwczUlcTV4WzlnMFF9ZVdZc3dNcC4zODhNczVIOHArUSVVOlRUUiYwPVVVKXpWfkwzRitbS2wvIkIwfUBDYmlTRHd4KkxZSnhSZTlpXWVOJFRDJHBKaGxWSSV4R2BuOCVNISUoS241Ukc0VXhITj8/RWVEdjN8LDI2cyROaHR5Uk5XPGV5KmE6SSg4dnsl'@; put 'Sj1tVyxoOW1NaHFvSndtOTk9VE4lJndwLzlSO19GJDI8djwoeHAvKmFkUyo9VEpSNSQmWFMrVlJ9RCZeezFsQmtfS0tZQng5Kylrd2wxJVBRWlswPj9vPmVTVEt7R2JrYlV7bVI4Q2JwaSNALGdmTns/bz5CNTlIa19YPkdwUiNyKWw2JXZ0VTRIQntiOixnVCttQmszfDhidGxyVmA3Lj1Lc3No'@; put 'YmlHSS9qPn1FajMhTmJrOWNpc3RDel9MJThLKlpTKHFYdHw5b2ZjeWc4Wyk5KiUkZjopdWxHSlJVSiUma0Z6dmgydVV4Ml98STpiVVMmJH5EQF0hezY0KVpTKGpGfjtjPHFsYDlDO1thPTl5MVl9eCoqWSl5PlNWfm5kKXwwVGQmKG9ReiU2UF5WK2tSMzVAUnFafkJobTJXYlsyIT45Pzx+WGwy'@; put 'RCphPXBbfSZhfXFeITRicC5+ZD0iWF9RV25SX1BZW1YzZyhuMm8vN1UhRV9UPmVQQmM7JDVyU2slQyphfGNfMHd9PkV4RVB6PnkyZzV6V1pdMFBNb0AoXiEjN1FIYyhWVSRgS3dmR0x8QC5XVlhBYkBWYGVhbl5vRC9lW2JwNltGNDlBcFEjZ0gjZFo8Wz5ea2FeL0VHO2EifTR2Y15zOys6WzJG'@; put 'Mkl2Vj1abXhnQkttWU9CeVt7bUVqNDAqYGRMaDxrcFFWTVEzYyZuXjprZk44ZDRzaShVaVlqaGQka1NecU5DZmBWNSpqQzY2bCVnL1ciZkVvSig8PSoxSkh2bjFUV3s+JTdBJVoxWGFAbWY8NlNzejYhVEJPU2tVWDsuLjNLImE9aXQseTlqcjEkUjExYXsqMU8rYiptLj4pVzNZPjxdSTRKNkRj'@; put 'dFpeUCtje2RaaFF3OSMrdXRnZ317Ni5yT0JMVyxvUlt0eHE8WV1lYCJvMFUjXSp3VEJ5LjpJR0JmMm8uQVdXMTZDNz55NFMhfUFkJHY6eW9vdjVfNStCM1U/YG1NNyhRMmZhOT05e3JwMzQrdjpmKCU9U3lXJkZRaUxOcXlzMCFzQ0BlQW44PFl0NUJEXUV9fkhnPWRaJVMwYzdibDQyMmU0enpy'@; put 'VTUyIzo7bSlwMnFtOmgzRldfI3wmZmk9KyJwI0MyPjVXZHFnOVA3ZHtffWc5KC5maSsuO1NvVmxVal5sUiRnNjhRW1QpaWljIztIYXF8KURoJWdARk1fe0h1LkZFdFhHMUlRdiMod09Ca1N3W3h6XWgpK1BlNFYxVENvI05XX200U3BiYiMlK2RjWXkmWG8hVFhrcWFlVDR2M1lnNiFGSHlnPklz'@; put 'YEREXk4kPmN5Y2s4NnN1e3EiRTRrbG9te09FKHZ0fnZFWUpPe0FQOUx7SE1nTS5XZF9TXW1bWzJGbFJATz1XW19ZP19bNnQ2OTJJcGQ9cF1wZTpIcm5FQFhffFdacyFVR31pe0t7ZT5TK2crKnJZeWFUL2B1bzlMJGl0UVZQKHN3RSsmanM/SF9mWlU7PmVsbG8wXm4zYHlncyxLSllSd1ZnRjJv'@; put 'U3AmOGBSdCsuaT1NckBvUyhLfC96LEQkLi56VSN+MytiJDN0UVs2YiJVW2hsXyh4cjhnTjB2OVErVlddfEcvPz0rXmBLUzg6WUJpenBBPV51Rlt8PCtONn5LPVVuazsiUHp8Ozx2PlNZeEs6NHl0M1hdIjRONCM/KiZXMTA6en1DSDUlTS50Q200Y3EpeGp7OS80W1dhNHsoKComeSRQd3piIVNR'@; put 'PXhBKXd1TlIzen44bWFKdkksR2ZhPiU9ZGhnSWtZPTA/dlhKS3QxQiI5XnZHQl1ZIU1JU2dASnQ9Qm4yQWEwL3teOGcsNls0RSwwWyQjYjgoaTh0LlNwJmVRUF1zbHg2TmF8UDIkJktOJV9wVVthQCE8Xjh9Vj8qQ3hiNGsrTFM0b2lTZSMyclNoKkd3PnBqZWdgWDo0KVgpSWNZZWVjWX5kSzYx'@; put 'P0RIW2w1YkVse0MyOHEyRmRCTkc4SU82WGNrMHc0Li5Jalh7ZEB1SDVMTzZYYlh5dy5PI2lbY0s2MjhuRG8lVTZWdiRAQSEyNnRHNFtPI1kwYmRGUyZUaEJYOSsmeTk0WjZlc3JBWVU+dyFGXzs3P19DJjVeMVZmMzt1I31gQj94JmpULkxzL2VVSFt9NiRbfT18ZDR3bF53NF8mSW5KL1I+U2Q3'@; put 'MDtnYDJQdjokUE9tc3xDL2tAe1NnUzs7N1tAJnRQdHs5bnZTWkoqWDxrYFpfa0BYL01vJFMwTyhURTRbMzVVbFgiXkIkZiU9dWU/KlNrbVZSY3U+Ry9NMGVyeldKOGNYJjRscEtKUDB7TytPViNONUI5OCRfMWg0aE9lRiV3QnBKXipTfWdNRTc7UlBgJGMwOmgkVGdIInJ8ZX00RTBnfHk0ays0'@; put 'QWA/MyhOdGshK2kzcH1YMXBqOFZqP0hmSG9iUyJSPjosM2ZqUjolNCEqQz92VyErUENSP3pGeHd0TVhkTn1NbClmKXM/UT8objRfc3N9XSVSeCorKHlPJVJKZF5mO1glUiljSmQ7WHxQc3AiMEtjeCNZX35sLF0+cSRbJCVlUUYhQkNGZkcjVW1rMGJYOXVMYjs+d0JpQF5VNkJgWnVmR0FNamh4'@; put 'OyQhSElnfnJxZ0RfO2d+cn0ySU9yaGN4OjNiQGxYK1FCak56Rjwvei9dQ087L2tQUyZjZ1tnR28jKTZAO25eIm1vRXZXRzo5bkA4diF0IlM3M3l2QGBLbndyKHxEK09dXXV4JSFTTXwvSmpUc3A5blozaS9gIjdOcioqd0xeMmslUHNwP0w1XldsVChffD1QUkhkUmZnR15YV3lEaUw6XytlbnM1'@; put 'QCRWR0NAMj17P3ZoeXUsSl5HXUYpRzVgWmI3ZSI/Qy8pTHMySCVnP29YL1ZuaE9CP35IPHlmdFs0JCpsdihOITJGPixDejtaYHg+KUY5ZSpuNHMzZlc+QTpbIiFVSGZkRzgjX1duY0hIPylyOC5dRl10dHxCNVtkPn1pIkJdYE5KZk1qL0N4Z2ZBK25ZXltFNSE/OTRMa2tVMjpwPUE9N0dmWDV4'@; put 'cXZzJU8xNFBzVC5VWC8rZEdMflYrYz5tNFB0ezFZP1MsT1JrVWdVdHNGVytKd0MiWiY1Ym1wLCgkXzg6I0J8aWRrVDZNWDpgSUQ3KSZ2YWZ6R35LeVcxQiVFQDtXcDpgcWQ/cVFgVmxLbzpDUTlJWFhjPz1XV0xofVBuVDxoUk99RElrZnZnUjtvbWtpRUtEbGt5d2tQU3o/Z2xYWz5fUXRjX0V+'@; put 'QmM8PldhdX45aEAkfGJAQ3RnTWA+Sz5TZ2FWWHpwUlRTUkNpaGZjZlhnRG1OOTFsPyVmS1M2WVZ0RiJdS2lDcmlhTj8sXkh3RS9abG5jTSNESlghVzk8Mjs6b3tIbSRKbHtAeSsvRUVWWGM/PVRMeVJraWJCSmFzU3Y6QXt6THtZaHg1MmtNO2whUDElPFclLmJKaUR8Zmp3UWM1PGJrWzR6YU9e'@; put 'LlZNVCZyTns4YFk6aEFLXXFlTmlkX1Q+e0QyTypNeDAxfHhUWmdfTythWiVOWHQxbUFOUU5tcExNSEJMZUI5cWJRY1s4Yl98KVlOYGx7SyQrfDZqL2UmI0oycjhdNG0lelVfMVRqQyNfOFloPyFwLz96bCVrSWdRcTQ+WU0uSkt7TUw5PlN0UWQlO2o5eiZIM1l8QEJNJC81NCxALFhtIUpYeSx1'@; put 'aGRGcUBTJT8sfCwsUFNBblZiOHdmODwxT2p3PDYxZlQsZWwqb1MlRS4ocjxgWjIwbmVpLz9BMjMrb2pCMlN6TWt1b1l2QlNZW2smandMeUIuWHZzU0MuQWtpTUMuQWtsKi4oaiY5X31xbjRAfSN4KU46VCNxWC9hNX5yKC4zPiFvei9vXnU6PXdJb2gwWmAva3A+d2M/XjxxazRoPi9yW2VFKjNb'@; put 'Yltpc1RneSQmbXRVYVs/bS5Zb048cGQ+OXowfTZbY0JoYD1bVW5wPDhKYUN4emtHUT8mPVhaM1o/NSohJDxabXluP14kNlV2I2d2bUZhTCptamJIXXxNSFN1Ll1HekdhbVklK0tSeFc8Y3E0fmt+W3xrd0A8Y3JObT5dWTltWDssV1t5eHRebmYvSmxabD5VZyVCZnI7KC57L21eYkkmXXRiM2hx'@; put 'R1M3RCt5ZU05L3pZUWFnZ1Bobk5bTDtZJlFsV1ZNUSplMSkxNzNlZjIhRkpYQWB9aC8xO11acmNLS09XQGpgeVBCMCxLNFFxWj5tKmVIMVlfbUdzVHt7MEolPVNVOTRKQSZ9bC85fWlvcy83cF9fMmdwdiEqfCpnV10lVH1PKjhMImNCaEo4UFUxUC9tUn0iRnFAUlViPCVFXkw1cXouVyklI35H'@; put 'VzdedlJ1bHJwWE0+JkB4PiZpbWlaZ1tIXURjfT4iPF0vSGFnRWVBOHNYRDpubV80YUhvfiRAZmEmIzksYUlpK0dWQCwyLjtDXyM/R3lvbkdXL0dGYUBueCYxN1t6MS5sRVo8M0dFTlZMUTl7UiNXbixZN05kPH5Ld11iZFQ0ajgoM2FibClfXnNuPz8vOHxjJTcvUEo0YWYhViQ8Yi5zRD9OfDcm'@; put 'VSNdR15vZFViQC4oZjA9VFlbOnA3VmglLHIpRjEmSHpdQmoyTkUzLjFQMDIzZDxqaHwsfV4iO0plTFlvWFgjV3dIVnhjUHgqMVd7UyRKVyUwTnJ3OUUpc0guMmVyfWsqV05MQGwrIXJNXztQRW4sUWNZcG4wOjwsK2tTJE9DXUA8cithSS9kO1gsKHVHPHhiZSswb1k9cz9qJV5NJl0yS09zR0Up'@; put 'aik8IjhCUkhaSHVJOU5DTyhMYUhaSHIvcj47WHpPXU96T1hQXzRubHVVRCtIOkU6TG9FYX1lY3xlZTskVkpjPHEoY2dbU0dxVVpDKkdeKzJbRTY5fHxXMytUeSx6ZCtfVzN2b2VEJW9eW3F5ZmAxP3dIJWlEbD17e3UsVl4vM0ltYl9OKG8qV1RGe2xkUSQ5e2g8RGJlaz5yVDRTVl8hMEM3dWxv'@; put 'VjZNTG86QDJOd01Ua0dKRmdJQztJMVFRWXojbDYkei5qcFFsdFFESE5rNFtsazROcSouL286cE1pNEN+PF0vSlhQP2pBN0NWPWdhPH0lMiNUYm5bT1YpLEN8V3h+SkxOWHF9SklrN1E9cTR5aCFNVXBGczo8eVs1aSFDc3BJYEwxMzRTWFtiMVd8JWtRIio7LjdBayhRTSIqaz0/SkJnTXtrWlhd'@; put 'ZFplMWdCMTc2PzMjZ0t6X1J0USYwTjRWTmwjfShLPl05U2pMUWVAcWszUi8yLzUhMl9DLHR8L1llMTlXJXFaezlqciZdSXE9bCRRVWk4QCZyU2lHZHpZXXhZPVRmMlM7RDheQFN3K2ltOiFzdStNWFNdcUxCd1hmPXc2YEg7Z0RkfX4/fGtBR1M1R2V+aDdCbWQ3L353RjVfdHBFensjRkZaOFMm'@; put 'MEswS0JoOFhwN0FDLn5hXnx3VSF1ZDwmRWtHYjk8QHZIbU1rSStocThGNFk8OGJOJXN5PmNCRG9aREchTHkwbD5gXTU4TmBdR1RoYkd0aEtOT2pEKSRbPG9TO3wvcmlKSC82PUUhYFBJR0MyTDh1M3E6NmZgbkYyUGFGP0t0dXtZU3V4e3k4akZLe0leXjR5NyoqbyVwXi5vZFh1cXwjfVlyL3B1'@; put 'c0Y8V1ZqeU4/diJiXlhYRGJaWT0mPXhmJkBUSy5USz8raFUwKG5mTl5yNkMuNCthckhIQl5XejFbV2VhOVc+P0VuVFJyfm1Zc3F0JUlSOituVW53MEY7Xl99cy5acTlKSXk+JSVYI2dLU315OixLdTJUQlJ2LFRROXdrKTVUKD5YQThUai91djNvQGsiWypCQ2AvKjppNGB+TWg5UDRbWll4Kjdw'@; put 'Okc3TlYxeDNxXVEveF8oMVAoeTIkdjRvSihyaWJkOU8iZiVNUHlFTExeM21wNzpPV2FZbE4mVyFlNVczaG53JkIhRkMuYXwiJU5lN0Y6ezokQlYxMm11VyNMNEkqY3xASDxXQmlFME15PnF2ajpuSl9aTkM/ZmFJKT58e01vX2Y+TTd6d0cxaiZhaW56OH4wVVdOe3t3SHtlInVJUm5oIkNgQn0o'@; put 'P3ZBVF1AOjZhYWo3JU4zSWteJTBUUSpySUo+SGojdHRGRiZkYilobzRFOk9yKWpgISZLfDx7SUxJYEl8bComOz9dKENPSyQuTTJqK2ZqdT1aeDt2Ry5mOVVqOTBRNiFeIy9yJkc5XSRuMTUrWl9YJHdCXXE+dml5QmJDODMxOTN6OFUoUDlaeyJ8MCZZUGQyJWBAeWFvPUU2XkpOZVVaYzM0fiY9'@; put 'aXUrYEpOY2g5eUc+eHshKmkzRiY4QnxUaFBdRCZmfnk6MGFoIyJZTmsqaUkkfj1SW0FTTWRHMEQ0N1hFWWlIOWdkJGdgQF40c0QsZ3E2W3s0cTRkK3lASXdVITIhQzdzLG0lc11obW5oNzdvcHw6ZGJnOWdmeFI1OjlQOV5IUndWYC5bQGRKMUYyMjZaclQ+MUIuP3FRS2Q5cSRxa2w9VytHaVZm'@; put 'ZDRlfjVFRikkcCZ9WVdsJVY+NVdgcGdFQl9ycEpZU3dlXTguZSUxcnwufmdVX05RT0QkX1BuLj1JN3FyVF8rVmprcj9qQ3xKMn1tV0tdITVbcFkleH1XQGlBTF9rdGgzX0IzcC5rbGk4VyN1Kj5KWUhHaFBMaFRNNF9VSmVlRXF4fGI0IWZjMklLVj0yfSIsJD9MT34iZ1FGP2JGVUZjaSorM0lp'@; put 'NCJUXVY4MyZNQU9McEs8b3w+SyNYei95VnMwOEZjNFRneC82LyJ7ck9rNlN4XWwyLmo4NF1iIWBZXVFZY3xUcWYmPz5TLzYpQF4wS1swKzNDeCYyLHtUb2YlUUZ5I0NjWzBCfUxzJkFIb31nRHQlJjtUZ0spSC9VYTFfK2VoeFFGfHRXPmppeXNfPV9fInRNM25CfiVMKDVWKDtPM0FwZjRNbWcj'@; put 'Z2JYM3BnTCxBU19tQGlOUj09Ql9ecCZ2elIrfCIxNj0ySWJbT0tYd3p3aXdZXSgmSihtY1BPJEFqUjxkRF5xVHxDYG1OL0R1a0suSlVedTtkb0F7OFhBYz55ZUw1ZT1rXnBZJVNmd0B1b0Yyfm1mNHEpYSZRQyVVPzBBUERMeUp+blZJJktGMG0xdzRiKHxYTDpfI0BDYkZYKSVNIXtJQVRgPUsp'@; put 'IlhxX0dKcFhnaStNempmZ1VaYzI7XixBazF6b10rSig5bHQ6c0xjXnV7Z3l1O1VpTn13e3JYSHdHPDduLF0sOnB0XlVPPTM5XTE1Kz5BXSVwa1ddcCtRIlAwXyMmdmUzZ0FEXTt1Qkg3SnQkMFQodjpHTixJb3hFRWpgancuNlJCamEhemR5Sk1RSVIxTGRsNFdYdHUvRnx4b2MiRXdqNWppWXlh'@; put 'amFBa1YoanMiJlk4RmNwbnxZRzRofDI0SUtja1V6YnhnOl4sSURYfSwmbCtzd2diIkxiIUpRVGBDJXVRJGxEWHdqeDI2YiNJIVl8QCFROzYveHZpN1J9U2c7Qno6RkVhOSVLW1R5OlpaVHlnMzVWLzV3PlJFMyhqN0xfdmQ9OUUjK1klI3hPY1JsWTssMVckbHhaQ2EpP1VReTswazU4elIkIjEw'@; put 'YlpdUU5PPEtnZC8zTXIsTU8zLythPEI0JUlMKW0hKiRJZk0jWSFLPWloeG1SZDspcl8sUXpWPClvUjM1SSVpeDtWVTMpXjttNkxTZyJAb2M5XV9sQC8kUz50QEZYRilWVnxMUXU7QGlJamtDYFBqITZ1QGRCfW5zcSF3PitdPyppKW0kMm9LOXg8KkImSWh5ejxkXTd9VWVrZWE+YUVEQFp6bXVW'@; put 'OW94NChqIiZCLFB4OWF8Okpbb25TUGtYLGlOKExXRTtWVT5eSjwlNmY5b10xLiFGJDoje3F7aVtCQn5BS0Z+My5KbXA/PW1wTXJ2dFk4RSF+VDFvMz5EaCNPfFJgbiRseV1vOjJiPmpQY2AmT1smfHlKPm1jMXVIMjlPbmJpWl8xUU5YYnxRS1ZYXUNQbyJLeUx4dFUzYG5eS1NHe25qJnRoNzhb'@; put 'biUudU0qNkBiZUw0JV9qZE4yYkdSTHFkQjV8Z3FwND5aKUZDP1hlWmRZZDYjazA2UTs6OS45SWN4Z0pfejZneFJjYUIwd3ZSJGVEOnhAKU8xMys0THh4Imo3UmR6Ny5SLChtYTlFLHMyIThgSFJYcTh3Z0cqc2dBU2ZRPDFJe2ZlNyteIUY0dT50eVZyWjN0IUpxNy9yb3JZRmJgMiNoYmQ8Nj03'@; put 'ZDcydmFQTlFSeV1baGRWaTNrKjpPUW0mK3EhR3pqanFpa0poU3BQWDouOHtZPWxtK3ZVRlA7NltxVSE9RCtORTVeYDROS2QxZHkpOzA0WDhycGchcjVqPyE9eEAxYlNkLzdmbGBkbThKRGZuOn02W2lVI3dsYD8uJW98LlEzcXJXSUIwXltTIV5QVGNSfXQxbXVYOnRafURyJTFEYjM3b2BffFtq'@; put 'NkY6O3hPOnQld0NsZjo1STF1RG8ifW9ldmNAMXpQKDxnW2dBPlJmZFdPfXV2dCUqJCxaJkFucFVhLnBROzAvK2J4NFB9NVtxfXljTkplPXVoR0gvKkw5ZkZKOG0ybmxSb3c+U1FuMWVbYEZdZm00InNHeEk6ZENIVV0vNjBiNTpeQXw3bWUoLlglfHQzN29JVXdVM2EkPkRSJm5vOyxNVGtPKXtd'@; put 'QmJlcFlRNlAwOkFyQ00uUyg7cEolSmd0LkBeLl1gPWcyVnA/KDlkZVtXfk14XSw2Vi85LFArfFpXSTQ4NT16XWomOjIoI0xfKXxtdnZDYmRbJFZiIn14PjlITFFFL3ZZcThNam9CTUM8fV8oZ3FPPy9DKnR1c0V6d2AhOXhHL3c6LDNCPTkyXTdXTSo8OXd5dWtJWmB5MS95dCYrTHVeZE1PZ3F5'@; put 'PVlOOC5NclpdMj5FXi4rNER8I0I+TzFCNyZ4LFdlZlo5Rj91RW8kSnFTNVtiNTpdb3cwM1ExbWFjZF4uVjBzWHVsOWtIc3BKOmYlKkBPeUgkUGtxJj8zaHspLnByQXFVcnxiYF1yNCUmZzRJOVk5PDxBQlVISjQoUkhHTkYlW09jMTQ1a0M7TSVYbGFCKnVqJWdxdX1eaGZhcGtRRnVEXSV5LkJl'@; put 'QjA9XUNxIm1SaEUvT3A0JElJX2RpUjs9ZU0yNyVwNUsxbG04NyFTLiUrdyhWJTtvYy9Cb3VEWSxzRFRHWE1KTjVLLEJtJWh8Wm5VO1EiV2ZQPmF6dTRFM1hjOCVke19eZmRMV2NEIiVLP2Y1Yjl7UHN9SDl+RUpGRm8vOzpXKGN9Uy93cDleSV84fi9kVTFXWEtVS1NLV0NXc2p4aTkhUU89dnlC'@; put 'LHFRd1gubWlNO1h7JHZmT1EjfGwkNS8ub0JPdjRYKE5YNS53UFBJd11GRG04Vn1NIV4lUipzRkBVaSE/NVExUFVNVW1AOnVyJTMvS18rVkdJPSUockdLLz9gQT5gSUMoJERCVXIuVHEyfTJYbGlyQWNgZSw1ZTVhbFN9UDlRbClsMVQ5ajRJSSZYc3hrcEFGX2dDSXYiKVRuUC5ucVtTUjEldUE/'@; put 'RGV4d01PeEtBUjhyLi87UHczbnhsa3FQPCMpN2skTEIjWzUyJVhiU2tDcUI0Yzg5SDcsVC98RklkKSltQk4qTGxGKzByNEI4UDclKU5jSGBZcTNofUY+ZHFIVUI1fD49KXNNYzw3aSR1ZVA2KDEvb3p9aF1hLm5ZUVV0ZSFlNz59RGZmMSVNOjp9V25VaD9eMV06b35dbFhXWyhseXQ4InFAL0sr'@; put 'Zl83IjowRjxOQHdvTlEvTV9MeyJvOmdqPjJqVXBYcFJNWDNTMVYyU1VJcGlKTF1pUVkjRHhZP0IwIlssYj40Mls4OnRTbHh1eEZGTlQlPWpobXNQdUM0cUUufVAvWVRnUGNGaV5QbiosZG99P2d7enY2ZyJVTUk0LE92d3Z6W0V0bGBAQDw/JkBkTVNBbnt0QXBmLmBiP3hSYUk2V3R1V30rOWNA'@; put 'T2s6Sk8xa1pdZXg+K2g1QFEiQjBvcHtfemNmMSZ1Qi45I1lPPEtdNDpmVSE8X1djQCEseTUyUTFZbjRCLkFzOSFCYylzL0Y0cFhSKVJbbnppOyJxLnleS1JjNnxGNEFPLlR1QGJVeTZwJV5bSz42YSJXbHNsT04oIlI3d1tCZ1habDdgcER0Oj9DVF5xfTBAbHhyWjE6OmokZlltQU9xcSlEVk0l'@; put 'TmNbWFQvZntRN3dJS3ZaPnhURGZAZkwzbmNjRWtTbjROMnUscyNTbGBkP3dfd3F2fUw/ckwuP2V1LkYsVkRfNyomQ1I6fW8qKWs/V0lkSC9JWCVkSEImQUk2WSZTKWd5dV1FfUs8P047ImVHdDtPOGFneEw6I11eLGIhOkV9S157MjBXcWFqIkc5ZjQ9cWN1bzIhe2xfPT53Lkw4JGNoUiFtTGl1'@; put 'T14/dCglUXVNV0VwU0QsOXklJm15VyllJCVeTUoofm5mUW8zWkwjLm9wSShOdEs0d2dYUT5tWzoyLkpVUlVuO1NlfTciNm92NSMpRn5kdmdbIT9vVCIpLmlVZTRwV1FAdSR4dit6bWtgO2VoZ3JIKFt1Nj1hLDNFdiw2JDF2d0hQRkIwXzl+Jl8leT5TIVhfKGsuMVN4QEI2NTJbVGcxa3U6MWxs'@; put 'JWxAfU11d0xXPzZ7JWVsMWtKeEJCP1tkZm0ldFhabD8lMGMlPUx+eVQjS3g0VkQ2YDNjLGtRT2FVZFJNWE14NHViWXd9ekRGQ1U6ZytSfDc2MXcrflt3VlZ5UTtKR05pfWpESTdmKXlOS3ZWMDFbRDRSakkjV2h7PGY0OzQ6P1JWRTxKQzJ2KU9ZQDc5NWlMe2tgYHhCLlt0XTRybzIuZU5YR0FI'@; put 'aFBgXWNTIng3WS9gcGZXUHJzdUhRZTxHIiI3dl1dOm9seSVGQjAxOjpgK2Ypb1EmTyEjVn52KjdgdlpWYU8jVytSclRoNTM1WG9rSWJJODFSKkNxRCw9XjhlOD88MHFjYlF5QkdsIks7ZmBoWzAjXWV4Q3FPeHB7LypvJCg9cmxTej5AYDRYbypMQjA5QzRifXYrZipbRzM0aElJaC9TeGFNTl94'@; put 'VXpZWzUyL2JAYktEW2hWZWs9W106MllwWmh3SHtpJldKdUk4Ln1oWmBwXTZ7NVE9M3M0aD55ckZYZENlbypGZ1pNaWhaY015dStbRzNEd0IsMkJpTEpaQl5BMyYzRVJQSlYvTSVsR1BuX304REw5W3Z1dzI4JFAwKnQ+SV1NWTg/WHlFb1A1aE9rWykpS2wzOEkrP19VJjdsKUpnaVdYJEkkSSUx'@; put 'UiorJj47RyFZQjRMO2pSL1ZnLnFzaEYpUT4/YC5kMypjMVpqMj44flo5Mk1aTFpGNGJuS1NeI2BHQyRPVitFQ2QkMDQwX1hjOSVQNjpDfEs+SnNwM1Z+O3YqUSsqMUYhUjt7d19oalYxQi5qMlFTbkEmQWt7WWtGe2dpe0I9JHxCJGtgVD1lMXQyVFBuW1JhWn52W0koZiwrSFYjamM/dW1uW0ZB'@; put 'NUc6cz1kWWU2eVl4ZkZhSUo+XUY7O0xxYzA7QC52ak5laDwwMSIpe1kzNSNjRWl4ZyRLZThhd0UvOGdPKiRoTnoldTBmPDt2Y0xHXW57VHZsSmhRby86aSFMT34zbDtaSkVhVXlpd1U8SXwvUXokKkhdRiFAe1tlaDd2MCRtPF9gY1hGNT88YGZ2OW1aak9YQGlrRFlVKz5STz95fWF3fkZsdD1G'@; put 'fkhIXWgyX2d+ckNAfGgyVCk0Q19AXShsRUouIThranBUIl0rYXFFYGFZek1iOmp3MDJbNzJofCR5RzozfD91ZG59MjZ4VklXOjl6NjtldyolOzlYXlZoU2VCT3xrUFNRWktxXUlEKUd6ZSYlaFBMRUVidz9yblohbyVEeD4sKSRzdFo4PUcoaWRLYmxxaX10YXNLOXEobjlAVW0xdHdxPlgwWWAk'@; put 'anpyVF91JWUkWSZEVDdTdnFhaGMvdip1V1hMaTFoWmJpYCplIT5PSDZBME5SNncxKTRRQVJ6KlZRQylhaXhsNmFfWjh6R1pNaE1denY5KEY9WFcyYSsxO2ZmcTgwYT04MzNWb1t5dzojIWJSMj82UFZZX3t8YD8kfDIrSVlwciYrcVNAP0tJfCRfZ0VNJVk3Unp0UnpsRSpNaGpKLDUjKm8lUEQu'@; put 'QWs1WFN3Wy9PI1kmIywrKTRbb2xUN3BdJmBoJmt5NDkzWigwJlMuZXlGUX5aMSxDOGgpeih8ZU9RRmtLOCpIRE8/N1JYVWNpKW94KFU4MXA6czQ/I3JmfX59WGZIVDdvfiRicF8/MnlOMVdtWSg+ZFYiQ3R5MjxwXS5ue2VVVy5UUGxGKixGW0NWIjZ1X0Zoe04uVU0iNUd9XU1Xe30mQSgsWXF8'@; put 'Lm9bKSRgfWNPd25PPj5BeCp3L3JzLGB3bGtfRzske3BwYSg/bHRudF4mLi49YDshP3ViYiw1K0RBYGU9KWtgdGxYXiZaKnAofCxSIWM3Uk1pZ1EpcTgsXm8wWTYzcXgkYHwrdnpyJVc6eShVOHxsJXFfOFQmXmJtZjt5aUcqTXhyI1FjZXNZajQvbTxCKUpWIUc8fXl+S308JWouO0ZRPzBKVWlv'@; put 'QCY+Zy9LfT03byh2b1hJd00mJit0LDpfYlZCMD82TGMuU0lbZmtAKjpeamVDR0BdZTA2SEN6N3Ztcmh7az5LKyVgL3ZYKzM5cXRAcT4/bzUiaG5WTVF9cCMmXzgqQyxFNFFkPj5ucUAxVCs4bHI+eDo2TzFrUCZieGlOUmQ5KElBOVJ3KDBTPmoqNSw3b2w7dH06aUIzVzE8dnpzVF8mVmJwXm1z'@; put 'NWx9bnBVclRfZSVsJEdFOzJdeCpvMmJTKDZ7N1p8VVBuTV1XbVMxSFtrPTZXWVVYME5HIyo6JUt6UDhoPm93fjFIKEN8dEtIVmlEWFd6O0FkVXdpRzxIZztLWSQrSllTd0BjWTEhQ1lKd0g5Z2p6ez1hXms8bDUzOVU4QmtPa2owNltiJVdse29YbC5fZiVXd2lHcCxDdG5AYSh3O2wkbD5jPTZh'@; put 'dlBdYksqZTY6XmBWPlRmcVFyOHoiJWouJWZafUVEaTsvMmZYJD5LLi5OSDZ4WkR6VFByTkJ+YnB3UDdvdk8uR30xPzY3PEdnTlVVeTduXlQ+az5DUG9MYkk2KmQ8IU9INVN8fT42Si9AUGlQOCpOUkhmOGxjRXdwMSlhaShQXnZpJTpZall1JEBofUsuSU92N11taj8vcjhQTkAhKSp7JjZXfGpw'@; put 'YkFSPzB0bzwzbywlcmxlMWE/OGkkSElxdV8wfTJtWjpMRFFjV1NmPmtvfCh0Kk12Wj5dbnA7XV5AajFFRHhxMkxPJl88THcrbk5Oa2dCb2NvW1taT1lMLzxYeXdIMXYrJktbbmBOJD8wMjN4Z3ZUblt6fkZ3Kn5tPGUlc1c3ODEmaDFQfFV5a2I3Zm07RUl5cCIzSFZfajM8YUZfUnpxWyw5amwh'@; put 'aEkpbyhJP2d1TWVbSj55ciQzYChPdig/R0Y5elo/SShPejBjdjkrLENKIk5JWWFgemdxWGtCR1JNaGUxKjY6bzJsaHNkQmdVVUZsIWNxeyU0S1hsdiR0ISVOT0xzNUteJnZjangkWHM0KzJLLGBrd3I4NmpwLjIqSEQpPXJnZ1IjSmo1NVVWRCFIRzBMbW8+QUQqPldLV2hLNCNEPj1kPjk6fTZi'@; put 'NiU9Yz5tS0ByRiRleWQxTTdIX25iMHM5SjRMTGs0MChvNDEzIThSRmsjNUBVbEZWez5HVHtJW000KyFFLHZWN2o7Riw5bypQTSp+O1twbWxiNVtmJE9rQlcoZVFzUWUkWGEhP2Q+OT9kWnNyKi5NKiZld319cG1RW3tdViEibmpbRkB2U1Q5NjpDLy55UWkuLm1WVnF8V1duWCo5OEg5biZaVCFP'@; put 'YCokNiJ6TTFqYFpPPFdLK3xnZlVGK0JbO1lIQyFNJStWPmxaKXxje3tSUi9AND88fEo3LyJ4I0VmayQ5bWVALiIjXml6cX0rOHYlT0hdPEgjR1JrSHowRjQrQ1pGYjNsJV5eJXZZN2lOXio8b2BLSUBwOj1rPn5FXW49eXo/MVpXfjtrRW8rOzJJVihfZ0pmdlE5TnBYLGl+JWBwLnRmJm9TUyIs'@; put 'TztJX1pSQ35qbXdgfXpWWD5XRTpFPyw+UmswfiJPaHZSP0BZMWRGWEc1dDxONlZiPW9yKDQ8W1l4b0tBKCVVaFJCMmA/Okg9bzJyZT07QXkzQ0ROaUFzNGZ6dCtSZD98QFE/UEI5V05vJHB1Nn01LmshRXtFNGI/OGFlQHt9UklYZGl0L30+biNGMz8wd3BoSmUvYCpwRUQ/dl1bNXRVfnI/RXtP'@; put 'QEUjVDRTOE8xMzAyT1pRMWxfUCZ6VUV5OVZ4Vz92cUYlXntqXV9PV3FmTno1LGY0Nj0+a2dXVGdqW3pqI044T0x1JVk3UnsxcywjPTM1MSsmNj1dIl4sJlExRCtWIyQ2cHxtd1hiTXMuKUgrMCsxZzdrWXI8M3RmcSxgbiVQbSNjXyhHT2hOa3ljPmpyam98NSZMXmgmKFpnUXtSS3A/QF5yKj93'@; put 'JVlJTzNpTHhqYXprdmk6N3YvMn09Wm1FcH5+Vj9UW3RrRnpiUSVddSQqWT5uZiZXe1FudjlZPWtWL2k+IUUuW0UrdyNdfTsrYXljRVlodzthNDhSKl5qanohMVIqKiVdaTppWU8oby5qW0kzKyRZRHpGNTtZSS9VMn0rTDNUZV5VdmFdcmUzZWs5QWs1Ol5oPWpLXUxHajBwMFkoTSs1fHl0RTVw'@; put 'WzUsVTdWJGxAK1dAPUA4bWQoJXw/ZEhZcSZnQjAkSiI1L35rOE8xSHIyVDxALjVNMyY8Lmgxc0RvYDNpMU81cm0xdWZSeHFZYUhXYERrazFPeU5YTWE1YzZ3XiFlTTJgeHpaSjlANCYxVldoWnhRJmg+QmQqZjFzTjBqZ0Q4UXQvRmtpWVksOEs7bHxJey9XWSVZUV4rI2Uwa1VXckNnWHVxZ1VX'@; put 'SnBrOW5KUFJlKWVKW0lAOGdAOHAmJXZ0RElDSkVge1VhX2dKTks+NEhJPn1YWlVRTSZlOnAxPF0vNCZreCM0YUtxdT9eNUJ+X1VOTF8uT0AoU18uT3UvOjhON0MrelFfRjMkRDdSLFJ+TnomMFdCNnxxeGI0NklkfVs/am5ySFB7SDFlO2U7OXo3ZiVQOnpYfjxVd2whcGk4dSl4PD5sQCRaRlNN'@; put 'I3BiIWQhZ0BmP3I6bD12elZiTDF0K0YvcnNyJDZMREZ3OSRFUlZdVj1pTCQ4JGI5UGxXKy5sV3piX3lsRldKLF56RCQ/O0drTWBBVmUzJjgjOWxHOj08IS9XR35TY3BxfjM0dDF2cEN5SV5FcFJNImVATSJ5WVo0XW5HdDF2ckF5SXxBcFJXTjVLXTY7a1ZYWlVBSzlXUjFSc1YkPTN4bzUyb114'@; put 'KUhkaSVfRUJCQUZHJV1pU24vPmNmMkF0KylLQjdVcyV4bXxIMWIpV3tWWCk9WUQ2P2BuaTAsOjJkVylHdmRYcVNwXi5PKl9bYnxrXl48KTdDIy4zVXQuNXRwJGBuI1RKOX5KYHhlLDRBWmtjdFlofVQ9SnVxVDtAVUdMZT8+bWtqUjQoWCxpTyY0LDh2WVFyPkE1WHI6NkQ7bV5VREJfTixyVU4r'@; put 'L3peKWZ+N0NjWjVzdGBgezJub31zZnUqTFQzeXZfTFB6W1B8Mmo+ZilbYT4oW1tie1d6aGhqO3YrJSY7Qy8lP3B2JmgkSSlzXjwuPjlfSkVqOz5ae0QxezspMnZqa3UzIkpZMSgyYG1LZVZDV197NUN6czl+ezhvRiErSjwzKGVdTzptX1daTFMxTCtWKGB8Pj1yOER4MSxjdUNocDNkX2VYW3F8'@; put 'RmpnV1IlaGplZVN3OVZpUXJLI2w7MG08fTpnXSNeVlssPkFGPCRnI0ksbjZhXk14Ll9nbCVhYCE4KDJmLDE2RkM5b1BuXWVUK3xQZHFtW1FVdFFnWWpFMjF7TGU+fmdgITNbXTQhV0coQm5GWlFKSXtaJmhOVVc7PyJ7Mm5XdS9eSmFDay5GY1cvWD43Q0QlXy9kW183MXNdZi9VLFhxekg6ZHYi'@; put 'NUAuT00/RTQ+MlA3cEJzX1drJG49WzgpUHZ2X0xQciFbenlDWSVmVXxibyQ6VF1mYi8yejs7OlNHez87W05Fb0pqcDAobCpLXSslc0h5Onk6MXVSMVAwX014ZTdReWpzQ0NmNm5zamklN0VGZV1xdXEraWV2cEtNflRmSVhZa3c8NDJ4N28qciheSUAxUX1wXV83aGdRZ0JrTV1vaG85PTNFZ3xz'@; put 'VU5JfG83Qz97ZnNwKElAZ3hSbFFzNm8xbm9wNT4hV2ZfbE89fXk6PlhZJTdvWyxhbV5USmJ+UilyeV5ZVUJlT2w6QSJKKy9jVXE2cyw2RSpZcjU9TTB7ITAqZms4Y0FhRUkyTVBBMEEsTi88VDBbO1pqSEMzXWtvJGVNL01heWBSPHlHY3dVRiZJUDJmeXJRMn5nZCQpdFZYLGgkT15re1Y9JXhF'@; put 'ZUdeKjVtWl54azYlMHZFaVRbSS9QZ1hpVjNJe2FSRDQxITdmUFhsdUVlSUpeQFE1eDg9W1sxUEh3dXpkRHp9UkIyRHU5QitXeEtrVVpRbXBUKTJkKyhLcSolYHxbMEtMe2h7KlB3MnF9fUhIOHE0XjRVKnl6OTksV3htVXhANks5M2ZYLEdNVWIxOC9gZjRAbShjdDIrJURpc203KDdmWE5jfFdz'@; put 'cFNYWlk6dGZYZS9yei9HOTNibklOTUtdfFBPW3E/TGg5O3NRM3JvZXopWSNVLDF+QSl9XVlfbVAlMDxtT0c2aFkpY2ZbcE0yXUt4djg7WURHTWxDNEp6NFJUMlQiQUEwV1lMUnQwKTx2SEg6VHNxMiFwZlFGQEFTQyElNCtFNFkyMEQ8aW0rW0Y9aXhCRUFBQUFBK2EmQV9AN3UiPUhGLnJTITNl'@; put 'ekVIZCMoZXYoaDRtdzcrVG92SjBGdUxpOX0qcDldNnAoUCY4Mk4vXU98UVZoZG0/VXlITGZHYEpLfFRZUX57ZDllNSkpQjVtKTskT21nK34qbV8lZWhxZjBLYFVgKkJLNT57dHRtWU8iWlI/NiNDfH1KSUVVL2I6b0dYME1GPnpxV28vVlB0KCNLTUNvTjQuaGFzYkBRMlA0WF5Jdy8hfkhyQkF5'@; put 'V0gyL10iazdfanF4djppUHk5bG09b0dGUXtPa31yNmNQSEUyJmFQTm9DaFlic2I9K0dIZ1hVOmtMOjdmbzlbXW1rPCl4XXNCMiEsQ09EaVNlSTRZRyRpW1lLT2JuZFg0fUw1P11aTnFwWyJQJm9daDxBZmlSRmJAfilDPEg6UjBMOXNgcXksSHlfOEJQTTpGY3cqdT03dT9KUiIyJEVURjM4U2tN'@; put 'ZmhqaW1LWGBlfmpiOEw1fDJNWz0oVGxVPCYvSy5YKWlpeylpQ3J0aHUsOHMzdmd6IUwkWihGRS5NKkR6WW1LOzBCXSYkRTpDUHg7TDZxPT0+QjV6VF1+IVF6UXVlRXRQTStOMlt3VUhZIXd2VGNrRlRiYkliNzdAZF85IyVbYmFvZ3Q/SHV7fCZ7NjRJUXV1QX1ncixDYWRmR1FVZCU3dVFaIiFM'@; put 'PUNwMmpERzE4I1IlUiNhR309YDdXeHU5aFFgP2EwRWkxS2ZFaGNDQThSdiNzYzlZeHU1LmpieX5sVS53Nm8iMCkoQFgoOndBXWo7ejZCfkxZSnI/eFJfNElxJDlFRzpeOTIoZ316Iil7T2I8JHFZXWspYFhGenZRdzhNfkJHZXRzPHJNNGk8NGFXcndiL2FZdX1BMnolbSg3aF5DP3NXMi8ic2RD'@; put 'PFQ9PVVFTWQ+NmpWV2E6PVRPfl5IPnA5dndSdjJpLy9nZGVLRzhvQ3lwX0c5QD1vQzVvU1tQVFgjW0xMKXx8WyMjWTtTcU0ja20/eWRYQGJYL2V6LHZPZlB8Qm4qL1o0Y1ElVk5YXllNeig6RypaK0FXL156cSU4eU10dFc2KEBEIithbTteYXxGZ2VkNFJmYlAyMDZoQkpDNltWSDtyJVBFaWM1'@; put 'YHdPNyxOe0I+cy9ibVUoYU5+U2dgYGVlZ1ZEJFsjKkc3KURHISpFMTA4TUh2W3lxXXV+MUZyIXohIiFQMkpMbyUoVjs8QHRMaXk0JXIjQ2p9JllNW0NUfG1zPVFHZExCWyV3UXNXTGt3aUIlfX0oXW9aKyxFZXl6L0I+antqQzYpZnZhcUk3N0cieE9CQVpkN2BnK0hKJFF4dWh4eUN8ZV1gL2Vp'@; put 'NTh8bkpHe11Wcl1jaGJDMHJGND9+eDd2Uzk7MVV0e29QVmBqY0toL2FjX2tLal50Olp5Wy5OZ3EuWStqVX48MX0sYismajhuYzE9Ti88Y3lXcy4rUjxBfnUoKCxSQSE+Png7RyZVUWd0YXVeQlVuXXxjfDxoXTptaHVNZTFKI2ZQfHd9Ult0VSZZfS4rdHQmXyZWLEQ2UHVtRGsoYjA3a305KXt9'@; put 'ci95ME1rWCtrQmooLHF5Z016MiVJW0xOVk1COyo8UX1LKnZOI3YzNVArYkpaUzZgPFhTMCltQk9qU2A4eWwsSUJ4bC9waU9IUC8zRE9AdE05TWMrfXhycCZjRDUwcE03Y2BIfGc6Z0tkWSxSazA2VUhKN2VkZX1CdHw7XndrL3huVyFUIWlhMlE8U3VUKHk/QHZebDNlNEE7eFQ9W0NRYm4iX0cx'@; put 'XkZ5ZCxoP3RWUEU8Tl5MLEkhK0clazV4IjlPanV7MTdlfWhxMlp2SCJaITokWn1zJkdNN3BKP35beCZid2w5bkFJZntSYFhFTEFWPmRZbHhBMnJhSlZMdz0kPytVOkN0TDw3WXFkaDxpTnc0QHJRSHsiXkFSTkZIa3d0JWJ0MShtR1U8dXFxKltCVGF0N0ZARXZrJGdXRCU5TlJpPTo9TFpsamlF'@; put 'UjMrZU1IPXp4XzVvRzB6N11+L2w+YEp8MF5Gdn1WTjo1IysocUo5fnZeZik/aUsqP051dXw4UFk9SjhlOUU6K29McztUb218WzBNfDshY356emFqWEByUSEpQnc/OUhgXk5kdnI5U1V7TjdqLlF+bSVDNmdEfiEsNj1UcFhUKHYrKUpMb3F4Ol9MXStrc017STREX2xKezZOYmw1dSomSTVKXi8u'@; put 'QFBgbkU7XzdsLDtAJDY4TS5fNl1vNDIlYSJFVF8md3xPZXV+dTomWjRIKmMrK089L3pmJn1qejB0WlBhZj4wPCMxPXZYWHh7Tn03QmY8K2A3YnlvOnFHY2ZWLm1jZ0pVTm14T2IrQVF3NyRwMSkuW2MlU3BUdktFS2dJRlhYeWwzbzlwT2F3VElmVHlFfVtzaVEzRClbM2NuenVmQmZbcmdsR2g2'@; put 'M0RjV1FFdl9EYztuPWh8NSU5NXhRIjVVSV5CckI2KFZoS3Vmcjl5ZEdgKyQqQkFkZSE5eCh2NWQwKXpyfChtQHlaXSl5PVc5JXtIKnlQUTd3WS8sXXVKNDwwP1MsYHZhRWguLyYvNjVVIXVONyo6PlgzPTQrcUJlNnJqNVNsKUdmOip4Sjw/Z110YGo8PUkkN21+ZzMhQjcsMEhQVV1uVG8iS2RA'@; put 'LFpQMloqYUhVISRHPjBVeTJXRDQqSGt8OkZVI2llMHg6Wj40e2lNTWYidXEuNXxVWTxNNFIiZlp2RlchZSNUZS9kMCtrSjJ1NkI7c1NaUn5pPl1HUkp+RnlnSF9uYmwzJXdxc0o/QWswNW9mfjQuWXUmJnRaKmkmYEdnbCphU1M4cDxZJWBUcC9eZSZVbSQ3YntecGhNSEg0NDlyRnMiPF5eajMz'@; put 'UGdvNiRTTSI1ODNHRDBnTiVQJlt7cSsmPi9vNUMiVS9oIyUjLmY+Wm8qI25hMzdwbT1LU3Fabn17VnlgRiwxfjhDLHc7STNjJGNyUiRkQk1VfnBbOF4rJWxHb1YraTo+cnROKj13ZDgpWUYuTGo/YkIpM1o1fENFUnwzNFJHcz5DZXBjTih8N0UvcSs6STJyVXc5YX40UHQvOV1GfGxCZCx9U2wq'@; put 'JElncmtRRXV+L0tkJCZqVWFreXwsTGJ4QE1UOE1HZ3MiM1lhPkg3YklZVCYoPGJoVVN7YzBFanhycDBEZ15JcU5XTDskdlV7dHNaWj4xOD07UD96WkxldFlLXXNvanpyJGVlTyRsdGBDbk8qPko1eVtZKVQsYmhYQkUmWFkwKjVCdEojXWV4Wz95fl48dCRdQWxyQkNtND1NOFZTbDRidFMyLjJG'@; put 'Z2g6bmNyZV1bUDRoKHRiLzh0SHZrTSlJXkxWTjpadnZeYnkwdCY+X1okJDJrMjQ4Qk1GNT57dltgRGV+Nnt8VkdrPUhOdTJuWHkkKGJrNEdwZkxgbzFUOERPT3ouSzU+NExTOmU+al1COSRJMkphSDwlSWJvenZ2Tn4oT2k8TiNLb0lBX0BATHhZJlRjIy5sM2wqUyhoRzIoSGQxdjszI2VYI2RN'@; put 'NUl8Zk53SzZGNXtYdyQ0VktIOENZTXwxbUxwJUFhL1lzQ09YKTQxeyI6TltIMkd6Q3B0I1Y+O2RYYkRWblowV3E7VWdSYGxxI0d3bTFJR3BwayVhTjFGfmdeQzZMZEV6bjNtXTUjdSMqNzNSLz1pSUJ6PDxfPEhrVGpHOEx9X1U6InZlWjlsMHt9Rnowc0FzTDIsPD8rYzhdQF9GQE5TcVo3TiE0'@; put 'bD06SV5FWERUUXBhJCphOl04eHosPlZ3UlVCbW00IWxfPTVvIXB6Z2hWS2xyQVptdXB2PkJQfmxiQUIxWSF0ZzpyUmx9KEhQdiQjLy58PlRmQz83dlNpZ21pW15kRVIvIWNRLCVCMVRmKDRVVT5mLGchZWFJPWksOHhdSiYmZGFROj58LFhMN1NfWjw+ZyVhZl8kZlhTQ2RRYHt5dVc3KiJlc2Z0'@; put 'S016KnlAU05KVmBtR0t1InskX3wpVi5VfHRVa09PMExXPDBFKnlCRD5ZRCNxeW5WXzltZUdkJCMrSjpuOFZfbi5yayIiYmV+STJwIyJlazZFeUtWOVUmKilBZmNNQzp1ZTI7TE1QNSMwPzA1L2RgJS5GfWtQTz9rPTRkPEJCZ2prS3E/ZVQyOXx5MzRQYlU7TVg5KDNdMndzLlM/clFHeCZ8SGkk'@; put 'YXJ+SjM8NmQjIVpxRC9xJDYjV1soJG03d0JaRnhXOyhCMFNrPHIyVyxQX30lK1U4Nml+R1VDQkR7bismd1VoRS5XI3pbTWxbejlLUnZ7ZF1ST2pxIVYyVGgsKTtmMihJaFh+InFUSVByWmMiTWVaOCFhVG1wLHxUP09MVk53Wzlsanh+YD1xTEpAfWowbkokUVsjeD1VLk9AMlsvJiFuIWNQaTJw'@; put 'SXx0RzB5N0tbRkk/R21EdiI7Kz9gPyh9KlpHcGskYSorXnJnYz5tfC5tIiQuP3UpSzhYMWJbLCZSQmtjV2U0dl8qYEQzV35NS0xsSWdPQWBNLChsTCUqXnxgXSZqW3pZaDV2bUd0MmsyTUZ9LFckaFAmJXUhRXxYb2UjPEVbXkQlMk5bWWZEXmFOeURRPVR0fD9eZFR7QWZ1cjouPG82KGBlISM+'@; put 'eTdIaCVOTT1hd0YobCh9T3xKN1ZST3Z8Ql4xNVM/MDMwNyVYb3J3YDN9MnpLeTRKMjBjYip+fnNeSkt7L2Q1KGhNKXlMMndkOiQ/NXtgdT0uImtyfi8+SS5zM1BKXUc/THldNTJTVDk/Yn46c1MlcTAoMVloV0c1RVl2c1FIQEtEMSFVN3kzUD0wbnh2ZDlINzwpSSN4PT16anJ8X3JVOz1XSjBj'@; put 'bjZaQSRoR0lfRFZaYHV+SmZmO0x8bkdDIWNfcHZjKlBuQ2o1S3pAWmRlOUh6cUEiQGZ4NkxQflVGPzpTSG5+ekx8NEl2alZ0fUdQe3dHUCpRRDp0W0dqIVp7ZyVhMl9NdH1NOzMjXlZgJUkqNHYlVHZSPko6LDl+ZjdDeFghVyQ3dXN5ZHYuSCFrR1QldyRXPz5ASmtrMmJ3Wn5hMXlVOXZTODMu'@; put 'VDZkM3VadWFdbEJANjJLdT0kKXVmaURBPz06TjhmWmVQPVFdaWovTmIpeFdmJSs+JTYoclt7ZkR1Uld7UkZbSnFQaUtIeWlYQDU7akchVW5dRndzWXdYUX1sbnJLLzJpSmZuJnZpaXNhPW4vSzY8MXF8WFlvOGwyaCowSj4pXjtEOXhWfntjbVo4WzQuP0txQ1RLTHs7Zl5RVGJne3cmLjVxTUM3'@; put 'MzozW0hFOHM7dyUoVllrMn0/JXZyITF6WV0jajdtI3oyKiE/bj55Y3p9Qj91PypVR3RdYnp2QUpsJE1oX3pvKCReaGAvZEBzJCNkXz4ueWUkbF8sV0RoYSRSd0xoUHBMU3BbWnNhVUxSJSYhP31aWTR6QH13JTVeYENUW3ZkLFhPfUkoKTBFP2k6Y3cpVktadmhSNSU1RV0iQTB5cmRqT0FoXzB1'@; put 'NTtnWyVIN3lnQ2ojVzpvK2NuP0lnMit2aWp0bnNNbXlkb3JbWE5yc3BASj83P0JDc1ZwYyp7U11zPUNlKmZkOX5San1+cnQvQlJOJFNrRCMxRXBYPTIzZDBxU0A/JltDZEkwMysqIWlNIz5Lei4hblVINEo2SGREJklIKyU6QkVzQX11aGt5YT9fcCg5L3U8WFM8alpSXTtnbnhlPFBTbHBXMUtC'@; put 'bFR9dFJYVkA0VVphQW0iZHxQNF5gS2IsKWU/KmhJKUY3aSsyZkxIPEBXaGV+fiIsSk98dE5QYmVfKTMkM1R7ZStXanNrZyxjQVUkdTMsbDBsWkMxY3xOJnJKLz1YcWArcTVHJFIpPVN8R2o6R1doc05NISJgQmF3PF1eWyQmKHBoTHU1eWh+WX4jJElEejApdElEOS90ImZwKDB1fl90PjhaNyNH'@; put 'aFRaeDI8d3Z2RHg8Yjc3IXpsNmE3di86Lmc2SkNiM3wwSzpua2liPEBEfW1ASW5NZjUxVlVIdTE7IlRQXj9JTUUxZGhnJSguLCQwQzouY0U+ajVJaUMoZlhpKnI7KjdCd2VjXm1jdHpWbHFLRzZMNmxRTz1jPjprSDk+b0RoWW1bbXhXVDRrbj8vVWdzVGw2dUlpOlhPM3xQbExgIXF9YkxNUD91'@; put 'PX0yMHgiLHQzfXNtT3M8R0R1VlZxciYxPkNyJmw5dF9XdVRRb2JXd1FGSFlsMmpRZSV5RV4mbzpTVThOWlUlRngzc3VkY09+a1dsdDV3NWFVcj1ATzo+JHQpOmR2X0k1XWcuMzZMV1Qvb2VKa25Wc3ZnMXlqeyIkN1YlSVJOKnBHZlBVZnIvK0YzL2hoKzVbJTR2ZDpeKitndUt4PUVgNikmPk4v'@; put 'KERrYSNSOSFnUW9vYnpddWlfLEZSUlB+NHQ1clVWWGh+ayU9JVJmaEVWb2tCSDBQQDd3UWwxY1svTWgiamdGRCQ3NXZFV0lyQylvUD0lPUQqKE1kemtgJnRzKEUralFrY0ROSD9kUXdzeW5GWU5OYzBhL2xWUkEjYmpKcmx2c10hMGciZUt0WVJnZnE1Wl5IejJOMXZQTmRmI0VEST53VChmSCJg'@; put 'bV0wZz87aVBYcmB4VWZ+W116IUFOJWBMflcpOU1scnBsXV4xO3lHPipyaT1zKXlKd0VaTkB5WXNCYDdAMD1+dk9PcVZlS2djelRQV1MlclBVNGRAN0QpQzF6OismY01ZeXdiKD9gX1c+eld1RGpVRE8yV2pPU2F2UkB2PWFJbnE8YjROfkZSKTpxSj9FP3V4eGR1QmV2dzVkc1hGaXMiIVAxO0hb'@; put 'Tk0xfU9Xe3orMlduI1o5MX1fdSNlPEB6dms+WSRiVjM0JUtgQDpMV0wwJFE+WjQxY2U2RSNwTFt0eFB2SmBUZkk/O2RfclE2WTtHWkN6Q3xgSHFYJiFQKmE/Q0QjdnZUe2Jzb3d9JWkxKDlPNG1ALFA3VnV+WE1eVFJsNDk0YjV7Pz1JRFRqTWsvTktDQUBZXkcqP3ckPG9NelFNTmJiMlk6UVZ0'@; put 'ZCN7YltfYSt+dmdAcCtYPUEzUkZbb01ALDYscT1ZbD48aEchW1ZnZy80MGRlLC5nbnkqRGE+P2pbUnlRR11EIjd7SSpsfTQpOWRxWHJaQVBgfl5ycC4mPjkpODVHOXpkK2ltOmtyYnszO2xfVHx8ZD1oQFsqYlIzPUlPXmBfeVVgJkYsJXNGdlopImFrV19TJVlkW29SJld1fkZBZlQ6bTBiQGJ9'@; put 'XnFFJWU6L1hRNU16cyJvKF06WG9yWjwreXwpNEQkVkEzQ0g7ZzZfR1B1TF9pcVlyYkRxP19NUGF1QzheZTtZP0tjUDU2fFRDdEpgT3Q8fUdLUCx4c1pPTD5sdG4sYnJ9TmZ4ZHFRUl9XUG4sPWtRPFllW3tZaz0pSHZQRnBFZTRbVFs6WGlbYFhudX0uPXlzIUAlfEF6Ono+KHRlZXt1ZVpIaSJi'@; put 'RUh4T01hbDssTlliN0NXUk9zeyJUdXRpMnZMT3NJP0R7TzgmJUBuJD5HVGUwanp1fSF9Z1QmVWk4NSlDR2xsTDVmV0BpRjdeeyZpejc+bEhDKztSJiEvUWhyPVA1LyRbamJCP1VHJiJGPjhgLjtfdHR8P0hHUyM/PVVAZCZwR1ZVZz1lM01XZzopM35HUWVCaGIkOyZZNDwuJFNhYnVbakkzVFNe'@; put 'RSpaUnVUL3g9NVNZWWwhfXJ1ZSJ1PWhjOnQpW1AxJUIlb1dXV2xxUSpUKyJjPX05YUwjMDN9MVk4ODFUQEJzbixWeiNrYShrSEAoa3RofERVciFmRXo3OSF4Qn1GMVtdaCEkUzZIV1A9VkNsY35rMUYvKWVYek8rJTJFXVRXcTQyIV5oa2djOUglKz80U0U2eFBjRzt4an1NfE5PSTk4PjYsTHhj'@; put 'RGxvRHxEV2pEelNwSXVDcF8jMmglVWd8filWSFMod3Z1M0xoMy58WSlyRVZrclVdUD1NbnFfN11qMH4pciRKdDNiWkhzYVYwWGJqZEVpRCFsaEFpLmF1YU5dNylWNi8iJXZ0PlNUQllsS2p8Xj46eDIpWUU9d0FCTS5TYmhEaT0maDVjYHZrZiQ1dDMlTXQ2RUcmdW5rSjRAP096WXRYckFiIkNk'@; put 'PXZQVyxIPEhKaztaWWhnJEZOOSl8OVQ9MC8ud3tHbVZDRGxWK2RJYnYlUkpuMTFjTHJ+QDpEcTl3Nz47SzNVdXglN2RyRjZfIVlmRFIkLmVwaXN5KTA1di4wenlGUUdQQEhCNVp4cl1XKnMoXlJORylLVm5nYEhrKzMiX0lYVExxdy9zNih3TFpYTDBZbXRpenQvWE8kbGB6R2I5PEBQRzU/d21N'@; put 'TkQ0X1VkViN2KnomP2wmL3pPZ3d2R2p7KmMhd1dDUmdQKkVpUWglMDFUOjxaTTtEPUk/ZyI1ZyV8NzQ4S3R0N1VRIU1iTWdpI1tWayxwSEgiJlN2JTlndFhGeSw5PkFrdSptP3VBTFI+VksjU2VjJURRRz1AUE9sUmg3U3ssN0luNXFvY2pjS2lzcD5abTtCbms2T0oocWkiU0E0PD1aKThDYXdN'@; put 'QCF3ND9DQCtzRmVhTnIjbjM+Jkd9MEx2RT5ieSNCTHM/LEwjWyEhbCt1XXdyTVFGO3RgSXomMHBaQTFwaCE8LkBCdX13SCFNVzBOOGtnNCxndmN1XyMvY2AjW0V1PDVBfDFRQSo7dEx2U1JnPkMqckhrdC9HdS4kOjdJLFRpKm1gQEk4R0FmWzNHXWtlMjFVWWVOekJsaHRFIUxIfkZ6OzZJR2A9'@; put 'OisrNi8lRjF7UjU9PXYjT1NSVDlEXk8hbyEjKjFRP2VKd0B1RGA5WmZddXBGeC9FLmhQdEdSLFlCZnoiIVQ8YS59azF8TntvLjBWRGcoQyMsWDMpPkcifGNRTUQhbGA0STQpXzxDPTdSey9jVGg6LjopTVtefC4mdHhkTCFCe0g/dlh7SiFuU0ZAYS5eb3dVbkome0dIJTc9NGVwLihmfjxpJnhu'@; put 'RW0sPF9ZdUguLlFEOlFjNEVOMFFKfUxlJStTVWx0RWh9OE03cF4ocHYoVjhscH58bF0yfHcvTi5iMDttdGVVZ2pxR3BJQlEwdV9LbHFVc2BVWSl+RDtXITVkVUo9MlozUnk3Qm4lM0I1aDxwKCVUKjlxRH1SUWhwNWhiSlRMO2lELDQlRnxARDkjSTk9WFFgfk4rO11UV0k8QVFdNDovNFtWLkwp'@; put 'dnowdVBJLi5uRVlRJkNeSiVRTms1YT1wbWpBN1R2ckN8Wno4cC9XMlsxPiR0RChtTHkwbVJRKVRTUHQvVERbMTtdbiJhJHN3InZeXnBWfDVJeyhWK1YmezhEdy5Id0h1JXRGJVp0NmAoNipKPX14eWQ/d1NPdixpKHZkbyh6UERQQzFhOCoqRGVISUIzZXVpInBsfHlhQVhzcnB1bH5mekBQbj9T'@; put 'IyVuSlZxTGliWTJiZlhbP2tvRD9bbSZjImJkM3cvX3tXWy9lQnRgaEk+OmYibk5qNX18IUVEbF90SVQ3KC9DOGp7a2tbfGp1K3QzRmB0S3khSzN+YnxnN28uLmIrY2hvU20rYkUyV0R+SUc3JUo5eEQxdzlqUldoaFo4JCgmejsuSmlqbCV8RCE3U1YzOGMyKCslQlhzbTIxTTFfW2RWNnU7ITNF'@; put 'PnNuZ3Z0SzxPL3xPaE52dCUqKj1rb2p7XnRFeWthVyZtZCRXL0pbMzxvKVBXTTg6I0skd05+eWlGYDFJfk5dQGlZc3hiWGAxdH1eUnZUTXZ1SEFlPjRzK3kiQSlQPklIakgoaGA5WXZPS0pec3RQbmB0OFsxIXpqY1ptSE9NUX1kSTg8ODlzcjV6MEgwO0F6cVciSWJiPiZpXTFdNlYpaD1hcl1q'@; put 'dnUxKlhGfGI6N3l5UlslNyJtOUwvWm99UE9VJEYzUS5TczBXcklPamEja25xNElCfCohfmIrWEcsYmtkPkJPJVFPbTVdPHFoc14qZ3d2OSRsbDsscHBmZSY/cUBLS2F3cXlma3lLfG8oTn1BTks2NUhDOXQyfWNCNFpqLFh7LHd6XT1sYld1NmIxbCtgRFM/MXleS09ZRmVwSWNQdnBSfklJe1hW'@; put 'aGdIQmtyWVFAVGguOktkVis6N3gsTn1SNlNLX2t4RmIlSEZCJnhtK1MpTzZsPW94TWFGaWw4ITwoNllxQz85SiEsNTYmeDckNkNbInFtZVAvWDtaMj1tUk8jYHorR2RofmEqSnBJM1hEeT5HKm43UGYjcnpQLFR1MGd3XiEqeTJQUWZmJj18RFtCWGE1aFoyVCZoVVNDY0t1ZkJWdiJLZDJXczVK'@; put 'KkpjNzwsRDhmcXdTNntjMjh+U3UuOkttXnZFUUg5R2t9QmVaZHA5e11kVFhIcjw0QCwsZ2MoXW1BNmY0WVJSMkheK0V2MUpTVkBKYXwrR0BDW1NbUVo9e0tPZy5GcmtqeTVGQlJEQEM8JkhVTUthQW8xdkA2VDJibDNkaEhBVEglTXBKSFN9b2U9QWY+bVlETjxja3R8RCRmZVRVJi97TCNFP1RC'@; put 'Sk1AW1JdTFdOREQjTVU/YHBCek5VVGtjbSYkMyt1ZVJJZld8WTUzLztIOjo3OGt6Si4jZkMrMD0iVlVzWmYsSFZxOWAyQn1GaGc2TkVeYGg0NiNRblcmOHl1Q3FwTz45WUokVmJfbUptT2pTe1dfTjp0MWluS2AsU25WYEM8e3VBW043PFhXQSVRb290Tzc3MnltTXpjK1dnI1tbdTJPM2BSKGQ9'@; put 'OGI6WypwamVrfj5Nd3k1LGZtXmMyZWZHbHp9Tm1dYjAoUGQ8SFpCKyFGZCxQIjo5eV5OY0srakREdEZHNlFMUyYrMWVJLyxFVE5pJnJtVSwuL1hlKXVfOU1hfjUqZXw2U0woYEVmPF5fZGd8IkBKOnxlb1ZKVyMqX2ZHP3dGPTUiN0ssXTI1S2hQS28oImldT2xdUjtXOU1jZG4xS20xU11tS2ZU'@; put 'V1IvLFhBQW43dDN1RHZXQWZOdkZVTjFkRW89VDdNJFh2YXwsPl1hcDMqdzBlTld4MXZ6YSZoVDMlZC4xdzJVdiZDW0gqcVMwWFB5aC5xITo4ZHU+UzdSfXRSenY/UGxuaE5yclVpNHFjKEQ4LERKZnZCLjR2d0ZjLD9NQElffjwwZ0QiLnloRVhJd2wsZGB7bHBlKy44fnZ3NnBAbHpAQk4yL1kv'@; put 'Jn1sRTRgS2BTTkMvbFI+IWp1KT9GcitzdFRzLzpFVz1PYUVAPyU7MmUrejwhWVJiaVFHYnc1SFR8MjIqPFVmQm58PmplSE9fXUQubE5vWmx6emRmTHVDUzI7MXNRXSwxNHJKYHNEKSRjTiplT3A/ej1iXixKJUlmPUJWJiU8V2IjayM9PTJPL2h4IS5NJVcycTRtRCxOP1duajxed1FpKlE2aj9z'@; put 'TXNROGRNQHczaERNcEVSRkY1YFhKWyNGbDthY3EiKzBsRUUqZFUkfFdvLjpSfkFSNElJLkIzcVgsaz89UTFnWFUoTGw/dz5qQ0ljWW5rREBEJSwxOTAyOCw1bGJWMnZUUn5zW3UwSUhvP2c7bXFwN2EoUENjbnpucU5ieSI+QVozVzZDPkw2Pj0/OSZkLlBjKjM0dmwhTVhzVCpVMClqM1tzLkl4'@; put 'QFF1aGsvTFQoVmkuTXZUK09XQVpvNl9NbSM0YGFoLGVFIUp1ai9rW1E8Qj5EQzNQP3l0aSIkV1FPLzUyZ2pafWg2Z3hYVWNlRWhrYVU+fiEqQWUqYWJue1BRTVlWXjtXe0hjSGRmYjViJCtQT2hLSCRjWF5tdCsheHgwal51Nm1LJU56a0FpMz0+SSReXWZTdyovMmVoTU0xOnFnfVM2fFF3UFRT'@; put 'ZTZmfU1mczV7YCtbRTRlPml5clk6cXBpeHBvUnsoXUlXUSNlWDYsN2hPVVRzLk4sTWZOeCYxajNaVT4wSTE5PHtZSmxwQnJPWmshZ09GUk9KYzcyc1JhdUVlSHJaNHdtYWo5d1cwSFJTPkF0bkQ1fEt8OiRCWk4uPy5VX11QNDMqMD1qbHpdQjUmMCtXLFVNSTRxbD1YYTpNayxfIlZQMiNUJUR2'@; put 'bmgkcCMwX2RuUGVZfUFfbF19YjNuITN2dE8lSnUuRz5jM2p8ND1bRjc5WyklT3Y+XjptTSgsZXZ3RXhoeGtDejguaE08JU5COWgqPnI9OkF0YDhDPTZnPXkpdCFCLmhMTGx5K1lLe1c0cFshMnJPMzF+bFpYKihfeHgxJGBDTjA0N1lNaVFKT3Y8NFJ+U2hxKnAsdGYvXi5xMk11WlVHQV1hKDRN'@; put 'LkIhci9jbV1EI0dgYFJvY1FyaTBQY3RDRWQoOmRCWl91YnxHP2B8fTRId3h1Q0Y2M3lDTUIwM09nWTIoUzxzKD5CcFBAQTN2dEB5IyRgb0V4XnlwV3Q2SyZlNkM2aiNhQHIwXWdASFplSD5nTiUlMU5oW2h6OlM7QkN8InglO0wuUCslZmZ+KytHWSksS3lnYWk1XyZHdSVYInt1LCxnbS9kUmY5'@; put 'flI9eV8jcXg9X2cxKClPP3dZQG5ueDwjV104Zzo5bTREdkM4P3dwelcoL08qIjw2Qj9JbyZrMXUwbHhWV31LMzJ4e0c2NmNXQ2dITkI7WWBIeng/aDNXbWY7Lz19Y3RkS2ZhTmVnfnU8SCpBW2RjM0lhSVE7dzdjQ35GczkvOUZYen5AZUM6MUdCfl5DVyF9TiE/T2tRNHQzTDhLPCZFbSpiLjRj'@; put 'YC47NG1VQS5Mcko8ZldMVGAmWiorbnQ7dkVKeS4pdEtDYHB3QGoyPnMmem5bMEtxJngrLi5oWUpwO3dFaGpnIWA+IjhwS3FzRSRiZ1NEUHBDdVJbQVJVTXQ0OjpGYnJbOERha1sjRUo8bWI6bnZxZiJGKWtEKDJ7aGtETmsuand6OzRZWmJafFVXcm9idzlBP2VVKnI2SmgqZyVIeGxufmFPWlpM'@; put 'bj5BTk00PX4lYl5jQGdaXStYPFN5RHA5TlN0UF9ZQlQ9bWgyU3A1bmdyRSN0JkgzSUMzKTA0Zn1vTV9YaFA+YH4leFFKblhfbH4jWGA5ekhLUUFxSWg5NXArRnU3ezJDaTBVbSh5YHYjPW5udE9PR1ErOyMjK35RXXxUfUhIfVRwO2xnVkZAQltpe3QvcH5KW2RbbEhwVkk+OyN0ZiMhV0FuNWk6'@; put 'Qk5KOEl+TEpJeiJBMVQ2VnFNUWw9Mn5UYFZ7blZHOmpLVix+MUwlcDYkI309cl58QWs3O14rWGVjZCVPOm8saGtdPlZWei82eWp6ZVIyPjFJIiZsUTIsI101RStZVW1vZXlSRHRrLihPbmM9ez1sTVhpN1FvXj1qbkp+NnZNSiRAYF94eGE+NkR1Jk9wOyFdTGIqRDNIWEN+Qz54LDtPXTR3QyhH'@; put 'SmJYXUhsMkYkejkvIyhqYT9BcVh0KyhJcnhWPTZHQCprTTU6IiVqdFNSKyV7WWRBZVs9OEpKPz95aTIzZF9eazNeT2NFe3dFa3pJJiVrMShGTiMuND5ZS3JBNV5IWXxFLDI+MFd4XUhhbTVdTHxuJihxSFdSe2M0X0M1XXswRj5ZP0JlWT9EO2lOS31HRWBhZihtOD1BOTlKU2xqVFdLT0pRcihG'@; put 'Lih8bz1rLF9mZU84NFFvKGZKZnVnV2ZCcn5QO2VOQHQpNGcuXnZbW0dWKjlLO3U0L0omLkJxZzNbQD9uTG13REl8Ll1OalRdZHVGdippIW4+UWk5JmBLcTkjfHxMbGZVZUAjO2hRcykwKlQybDZPWVJMUWpbL0M2c1crMGAkKWJhQkVHTFBHYyU/bntDJDBlTF1ze1RbeDBUMEV3UzIoeWNaYDk9'@; put 'dT5mdGYyJFY4OmUjJVMiQDVzZEVrXlJzJk1Ya0koY2QlNU9ONTxRM2ghUCZZNmFgVjJtM1Y4Z3c+d09ySDZxYDhsdzdVNGZvR0ltdipmNVh2RSxzV3wxIUMselpbRHlnMmhncXB+ODg5MllUZSJQLEoyQj1bKVM8VFB7XiFEcjA8Lk00LyJLcFFzZj1pOThOMVAqPUNYKGxFQGpaM055T1I6TGJV'@; put 'QUhlRC44MktDV301eyhUO2pvQTAhN0B0NlooN2JXOGVYZ2JFRTlGNmAsNSRHSyNZYTZmbEdhQ1lXT3JOQm9GOGJffiFyWWpkXlk3KC9nL2lhcD5QOWQ2OmkkSTd8NHdFIlBVQVImVkhsLGk3UitnSCtWZlEocDRpVno7S0N3fmwoTm1fQCloS0UwLzMxPWMhbHZYO1dOKkp9JDMpVXxlSSpiR2Vh'@; put 'YClJbHgrJXZPeWZodj5LKlhWPWFiMGNObXI0XTV5TzBAUyY9SntPOllwLn0jWn1sM3ssQFclcGcwSEdIVHJuRT1ZXi9OPVVwI3FoMDdBL30/WC5beXBLbVZ+ZENjb25oIVkmJV5xK3M1YSk0K318Rj93Yy9QKSh4UTQ0ajMhNkQkYyIhaH5dO05vIW8mOGBDcGNDWFplLzR5VjduT2MiUmM0SExn'@; put 'UFMxMU50QWlkRFNaVj17VD19b1grR1AzMDtVWiZaLEx6PHBwbHx8VU1GVFIiUV9zZXVWU0RNTmhtayFpMXBJOSIuLmBtTjo2dk5SR19iMSFfL2pHMmp9Z10xZEoheGxCbj0yMlEzW1dSWDI4SXpLLDV6bX1gJEgxcjMrMDltOztQNVUqb01fT1UwQHIqNHN0WzZ7M19gNF9nR299Z3k9RD1UOnk6'@; put 'akVJMWBvUDEpe218S1t8fFhTbUk8USVWbURrbUxmPVUwVUhXVnZIcywyUCEjXVUmdGYkNUsrWjc/KCxrRFYhLG5yWS47QHRmfCZ5M1c3U29XeG0vUFY3KDR5OiRVeDskcT9nQyMpX0QrMWskKlpEcCRPZCxDbH16ZCVuO3QzNCVYMWsyKkxhSmpHZEg3XSReZ09yJj03fkBgYHJKSjxDPGpCfEBi'@; put 'OlMkV3V8QCJEblc5JSREPS84K0xjcSNqcFA4S0omb19kMjBLZUN0UixmbkhuTzJ+dlVFXXdeRyVodkJ5cGI+WVQzWDE0blByfHIhRmpQL05Xa31zcGUwVmo3OlZ1QlglTSRRdlJFOGw0ckVtbmNIOkRgWmVxT3ZRZz1PJG9mS01qUG4mUGVTbVR+ZU9hKW8wRihmIk5+LypeOEp2SVthL2lLQz1Y'@; put 'NVBuLkVYRCkxPXhabGNXLDlkPFYyLExrQV9XS0YxdTpAQENqTj9Efj53U09reHVienJTWTJKJXluREc7cWdUYlplSCNBOUkjbTkrb3lJcEVXMkBdWn1MOD0jTmNgUFBISUFSJkFdfjE4cXcxRj9CdUI4cTRORTw7PHFzZHRFIUNER0tALjteM0o5W09HOiRNSF96S1ZBZWt9cUxIY0dKYGkjJXFn'@; put 'MTRJbCJyWlcmOTFFciRwa1JyIjUhQDpWPkVVYEkrXWpdOjlCYmQ/ZEYiRTlTaCNiZWFpbDQ6MGFwSXltT0o6MmtObS9PIlk6c04ifVNrPGI0Lnorfno4OVZxS0tzZFRmQyhSd2xySnokeWU6cHR0WXVNSXA3OTpxa0JqeFNveUFhZzNdPEwyRVZVJTlsOGVQam5XXmw4fl58X1tqNH1FaHlOW2dY'@; put 'MiopTDwuIldXU3tTYkl+bzwrMWovTlRye20mZXB6QllsKl89W0wiOHhJWWhNXWBqXSh+b1F4bS5NWUl4cTlfW2R5YiE9UmZALjwrOFRkaVd1SURUSDIrNUklQmdvMWg/InJrTUQke21kSjFqVktnbkBPb0x9aXlMeUZpTXtCIkcqKiUvM3o7b0VHbiNXRXp3MG40NU4+WjJXfHJRfV9ERUwvRlAz'@; put 'RiRSVm16JEcoQkEvKXpASkRCMzV3VmRfNT9PQnRBTzJzeyg5aGlGVXB0PnYiaVdtWmR7LD9YQzRaIXs0MXxTJFBOeVAseFB1KDFmTldPX1p4ejs+SEFbTDZpdEJdai5reEhsSHw/KDsuViNpY317KDNZSWlHbk1CQF82KHI0R0R6JDg5fEdwcnB6VVY8eXUyVHZDdCZCVV56XUpofUN0JEUjOnM+'@; put 'ZGx0ZVRbckthU0xVUktzOVNOJDk7Xy41LGFQW3s5TFJzd2BCPVk9TSw9eXUyXW5NOyZuUkRHWylXTU5vdXU2eEBZUXNafERKL3xfY2h6TVN9TVh4VkcoeXx7I0FIc0w6Lkk0V1YjR2tkT3JaI01SakVWQyg1ZSFqLD5ZPjFrcms/LDgpXzhRQjJNR1Ntd0FFM09PLFg7aW4zfjF7elFgdk1DPVss'@; put 'dXxPWlBUd0pxR2lvQShAZ1Z1e0pAPEAwdTlbLmtxOjluS0RaSyVQS3A5VlQlZ2tQLj9xU11yfj1VMn0uJV0wQyFzVlk4PEtzX2xzLkMqeXo1Z0FIQmBkUlhNLmQwTEsqKHNiIlprSWcsX0tzPHp0c0FJKSZnMHN1TiRkNkJMP34+MHguR2x7PFF2aHB9UUc2VEZeMXMzMnV3I15qbT0/MVNnRFJ9'@; put 'RSwyYSxNLnsvP2t2SFE0ITdVRmJ0Pz53Q2QuKVopam5MaUtjQ1Yzd2ZOVzAzfjxwKmpvJnVtRHE4QXpLKzJsbnQhanlXcz5MQkgxaHFhS11INyNZViFuVDhIYzNQNT9UV3VbcHNyU2Q7cm5ocz50ekh7cHF9LGQjXWMldjJpM0s2Ilo1fWxnUEpZcyN9RTR+ZiYkV2dgKXguRUNhYkd2OW50YWF3'@; put 'JDMhXUw6OShLOzFRVzZBL1QlTXNRL04jfkBrYF1vIVNfK1tkeVgvSTtTZj43I31TVHIvYTRJPj98VGB8bVQmblZScjxsclg1QisyKEE0KjY3O0JyMlJHST4+WyphfWRDWHZjKjFRaT0iNno/PmNuXU5eI2IjOllNOTAzV1NENCNvQ0ckLHw2QTVHMVV7JFQ3IS9TV2p7TSRBSi88V3g/eCZ0M3po'@; put 'Q3VMP1FXS1hRXW8xclZVQixVb1A2ZFB8djM3YXRldFNqcXlYXyxlK0ZwKU1aXlIpODhnTCkwM0p6OTJYOClMQVZQZlFCVlNHYGBMO1JbMVA3ZWp3aSVHXmFrQnppS0ltRy51RzsrIjlFcSswK2UoV053YEt7bHo0Qi44SHkwYTszUnh7ZyRXazZPKE5iQjlMOVdeTi9rYmFyUiQ0bURzZHB0dFBJ'@; put 'fHxaYlp9ZiRHWHwzRUdMYGlQZ0JddkZmZCpXWiIxdilAYUFgIn5WbTdUfFIxITdIR0leY3RCRi9fYWZgQnJ8fCI0aUpWWndzOkNHTmAkQj5wOihIV0ZTaCwkN0h2KEtzSXRINmowS2dCUDBiQDkoR2UoQ3lYcWRLQmpiNS97IWx4PU9zKWV1RFZnVnZWajpBaiEickwoP3gvY3pgLmk3Tk5wcHlf'@; put 'MEhMekhAUEZPdUlAQEVGfE9XIyo9SWwoWXA1Ul8uaitYRmpGLF0/ZChHO01ERXxRdEt6UjtGZ1E8fjxTYCpXTGpwKX1bTTU8T3FmRE53Ris9W21uSmh4aiRdOSlPdyNkcHl1bCt4dXhqIzNvN2ohW247MzN5LEV9JEQlbVk0NC4pfXxbfWBofG9pTFV7c2M5PSMpIitvalJ1K09FQkp+dzxWdEYs'@; put 'LFl9eUhOVUFJJjlkemYmLmZEJVp1TU5jWGtmc2JiTC5NNkclN0hpfSpLXW83LFp9bXhISEExeDp0Z3s7Z1hlcE9NS0slRXxlYl8mPF1zQG1dYEhTQ3NrVyR2RmQ4Xzc0LEIlNFd8Z3dvbSNAW2ImJjN9eVtmRC89Il43cGUsYkdiZGRzUFVLUCMjXSFeYUBbPkpLUEtTZzNIJDdlenE1eF1sPF4+'@; put 'ajVCPGxnaFhQLyUyPERyZkJxY2NVVVtndUFzUS51cj16TmF2VSVTS3c8ZTo0ZUVRYVlUeWw8PlAjZlBtNmg9ODF5RTRxb1tBSCl+ZlNGLC4wfVNbNXhZMXpqbFpPUEpOaHRwbzRacC9fd2B9X3FeSWRXVyw6WylxX3swZ1cpLGxzYHw3RyVXZ01QM093U0YuLkM3OH5iTVtkbW01dFU5alAhO3B+'@; put 'c11vPlpKS0w6N2l5MT1fUEhmOH1yNnJsOU9dbz1COypCVF1hRWBUOV51X0toVXVLXzUvb2JGNT9IfiZmTWF2ZCVNLDszb1N4LihqXiNvezAqS25GSkhNKmk/MEJ3JT4qKjRGN2kqcHtAXmB1eChBRzVPZEpzaEU5d3UpaF0iNkBPQ3gvQTRQQ08mJEE8Pm92Y2VUIk45XmBHQE5FTksqWUh1cWBG'@; put 'OmpmWH0wNiRaenUxQWdrZmI4S30lTihtLGkjLyZ6UlskNFYsUDBpfX4wOmpta0JsdnV2Zk18dFMiRmIzTHxTY0ApUXg8JHlEMnx5ZT9bNjpJOGZXa0U/QUAzZnBMS05YOT9wQ1VARGRKLz5QaTh3aWImazNDM1tdXVV0MCNYeV5WaWlyTlFFMHdtdTJ6byVvIlszKih8TGRkIWZTYHJXQFc/aFFn'@; put 'dXQvMStNRyE8Uj5fZn5TM3tYUyNJVFRXWCF3YTs6VE9dLytnTnYsRyI0VHpgLEh+OmxGNUYpZy4hRkcvaygiS2E9dFtNIXUuTDVtdjhKVCw6PHYuSjI9QTRedDQqTTA+RzRCOSgrNlF7Qy9DfXEmN010P0loLkNlPE5KXnl0LyU4aGdvcUh7VEptNjYzU3VRPk5IcEkhP0xLJGU4LyV4UmxEPlQ5'@; put 'LjJkIUEudmA5eldkfmBbK3t6UkJ3VXZELkZSUF1SU25dWig0Nk1efXZrMFdOZk5HZDl9OU00NlhLJE9rfFB1aDV7OFs4YWAiRUBTcWgmPTA6W21CRn13fk59dXN2N2A7TkRvT1ZQN0wxJEhqLFI4T0plRSsmO2FoUHBHNkpIIzIvNSIoYm84cWQ7R3ZOWXJMI0d8aTVKRDM4SDw7KiUsUWt8a2xw'@; put 'eChkKFpTelFII3ltc0RUWGl0TkMzUENHT0JpYjpDLlNtO3lXb1Q8b2xPdjkrZHJMUnI0OC5qVXdWIilxcix5fmdzP2Asb3dXOyNtPih0YlhsWDlmQFlGeGJNRE0mWllnX2M2WV1EJUI1STJBYjw+ZVFEWE9UUDohfEE5RE5BMltoS2tIe35XNHc8NCEuV3V7MU9melQxb2w2WGpKcnoqMSY4NHdY'@; put 'ZmxAd3ddITJDVEtyc0xrLHFjXU0+K3lmXVVPRHhiXmxrM15SdUlYPDdIQElNeylESF1qTTw6YTMoKXYsbUhVQjtlKUM/IVolaW81RmFbLCYkVD8ke004Y3RVLl9vQittJiwpNFBnIUhVVH5oTT91aG4qWDFuPXMvbiJjKHNtPnpZIXNRVTJKNTJ+X25uNisoZlk2YiMyQCF4JWksWEdUOjR8NCZb'@; put 'ISNuKF5xNmAia0ZvI0I1K2ZdTFhuTSpkVEJfIXFfT0lWSVRoTD5nOzhgQGdBSTZRZCNjT0wubkdEe1B1RCEuXTxtTU8xTlNGW2psMzk0ZmkwSFpRZ0RmT3coKyZtZV0wU3QkVzBwKlFYVXpiP1EmVmxyaEh1IUMsXy93enAmQXNgTUxhNTttL3s2TUlhJiN9eT9IISJyWjFSSmJ5dylyMiNgWVVN'@; put 'SCxNLnwoWzhwJXlvOG4yKVM3R1opSH51X1BvUDZ3Xl4ve0gwZSxrfDZ5Pjg3YT9HQjBKUVhyNFFGbF9TLFJWN1tDZDd2aH0sQ1hNTFAsNDZpPjNEcEM2OUxKaUUhXmI8RW51JlU4OFBmYn5sYylFXyt3M2tnbG42aiUhJXEicSpOfTc4WDdKQV09Pn48MVgxcT5WJi9Jb155dXRZd100PFBgVm1r'@; put 'NihEdll2X3h8WnEzNC5FNXQhOjQ8Y2E9RThhMEF1YD1eRi4/MlVudFM6LE55M3xOKiI7VnZxekg2NG9ZTmh7PDYmVl92aiNgeUpQZ09+ZzJ7TztXVEpnJCw+UD5JQmZmakBeI2I9XndYRVh8VklnaCp4dnU8eDxjZExNemoqcjk3alg9RF8+L0ZxXnckdVJ5VCYjMkY7dFZ7KyM/QlUsVHlkO312'@; put 'SzB2XzpLWHlZXnlidCYsY2E+QEttNjVGbGQzPCVGbU9tNXFZdWxaNlEwXSE9NGpRbz1PO2pzRTUicj4hRUsrM1NuWVtDWVc1UGs4JU47PU4/K1t+RDtdKmtpT2VLalhKaXY9P2Z1ST59MGd4eD5pIUNzX1NdSCUjezVLLkcoVGNtX3Y6K1ZUMnlBQnY7QlU6UV9eUVZ+ZyN5Kl4/YnZ0dTpWSSJz'@; put 'IUhiJEFgUl1uLF9pZl55cGs1b3tKWXQuIlN3TzoodUEzL0BpXjpiYzxLTUpqISpvSClYczVrdChQNkcvcltZYlVkUlo+IUNIfCZ0U3pRL3U6NTgxI2V5XjdOdDhvOSk0MldVJnpvPHBBeV9aQHJ9dG0wKURZY0UqI0dJNkdAOmhAUlAxYGlhalBZWUtHODAmeVBiXmpqQlZ5MXJ+R1RpJSI2UEQp'@; put 'Ly4yKzVAbGRtbHE7KzVuNFs5ZyMhbUtFRVVzPEZbMVZAWyE8ckpmTHooZ2MxTnlNSjFCSEk/Q3NwbW9OSVQ6WmB7SEBELCVeJHN5Z0VKKG1eNThOYj9LVj18VSR3S28wTnNCNmkvV2leLG1BPFQvQztgfj9AbThFTnlxTGF6RG1aZi5HPDdHd1IpKEomfVF0VWIkfnhaQC8+SyhNWWAjcyh5eyhX'@; put 'ai5wYE5CcURyemNRdDQsIyZ8dVNhWXZpNHMqTlR6MnVIQlYhaVNtVTx1TEF0QlBIXlgyeStWKnhQYVJEL1h8SHAmbkNULlcwenN2LD1vPmI7UUZ6cV1nWD1SPnViaU1wP2Y5aF80aFtIeUdbd1ZeNjMpWUpLK0YxMD9qZHA1QXlEYkhmOXRkIm05OmpmME48Wm87K2tQMkQpWHx4SyZ6QGE8QGln'@; put 'OUw3NzlHZHR0ejU8d3wpVTRPeFskX2EuX2BaWHJfQHlvcD8rckI7Rl9gck5pU2ZXdENOail2PlcufDlGQC8wPlYyUGxJay9DcVtBRThHc2tla3RCUmN4c0BLQUBZSGEzemFLOlN5USswSmAhTXZwcmlKZX1sMyxUQygyQ1pSY0NxRm9TWG9KXTUqeXdfb2tkPzVVPG14MnhuTGN0Ryt4QDM1IT01'@; put 'ZmheY28jOm0+eXorfnFuJHUrfnJCUGdoSlZtblFXPjx2L010Ol9XNFhzW3BidTdCcVBzVXYhVT5YUmpUKXBsM0J9T2VrLnptMU47NTF6bSFOT1ooV25oSEpNVFZ7aVc8KmArLENAfXxEQHRUaT88PTwjeEoxfWR8OmxxLDlNMnxdcndiUVcyfi8vJFN5QFhEaVsvISpEOHx7PjNAPlZLRCNZL1t6'@; put 'dlcjaD00YUBDanxQMn08PU5lRmtZaUJSSXpzNjxve31YWD81Kj5IcSF2Y0VGUzhKRjwyeGQmQkh6KjtwZFpaOyssLG9ZTU1eM0JXNmdEalslSyZvQDVhOjpAQnFnfGIsdV9YYF5YI3UwOElyKDw/WmxsX0xYcEJDUihufUBqeWsweFdiUktgVTlXKT9xXXpgazt5QiJtKCZJSTVUdF1qY1YmQFIh'@; put 'bigqJl19Nl82L0duQy9+VTVuPUY2M3F1ImYlPUouV11LdDlYb2tyfjJ8N30mY0oidm9XdklHXi8uK28mMGlbU3JrJC9vKSw2W0lQS1ZOR2NNdmIuRHF3KT1TWExoeGBPdFpWYG00WiZ+cz8qUnFnOD1BX3w8c0V2SE8xLmwxP20zSXEkZixmYy8ve2hQUjhyW1Bad2hRRyZWaEQrRX4sUytXJXFL'@; put 'dUYman5FXnlpQGg6JCN5XXMjXWtgLGRsLFV4Qkc7dTRKU00kUWJYY3hjKSp0X1hxeFV+fj97OUgkeVZKPzYuY1QvK3EkcGF2SGQ/PCJ0JVYhVFFudz80UyIwKUkoUyxKWHI3L0RDJlZPeVpdaDRfWWl0Z0FRdE5SRyNnXzRyWGJMXnYxb1FpWEtrYjcsJWBmSCJGK11EP0ZrcVgiK15wT0ZaKnZ8'@; put 'VGxLY0N8WHpzZVFNYjhKSDVFIzd0aGE/JHZLN0B2N3g5JkNUaT5AdXVicW01ODJaY1Q8dVhrS2FWd19QenR6ZkQiY3hiOStJfSsxNEBPRW5sfF9vS2lBaSJieU5zN35yK319eTU/QDFDeyprbjNSa15uK0ViVylIYmdkQm9MMTlbUXFDbnVJQnxUWXk5eit8XnFkWCJuYG9aczNIdWUveWJNYm1Z'@; put 'OiY1eCs3U199RndJYEJKez5MVmcyRDd+Q1FYbEp5RWdnOHApfG5OKVkpdn51Pj4qdnoxL1U+OSRNV1JFfGJDT1l5KDsqXW1heWJWRDUqTTVZQ3Ekd2JXNiZkdXV2YXpCe1ZyJiErSTA+REBHWSt4OUBkWENXdGg5IyV2SVBdSChle2xkSmksPkUmVjhXT2RgX2pgTVY2Z3RKRWJpV285e0t3KlBp'@; put 'SDdga3h7YU5bMSQkOkhPOHQ3XlZXajN0NCFVKzBhL1N5UD1qNT1tNEpLdCsqaWBDJXFjPzJAVU4yWk82Z0hqU0Y0Y1RRbUdNJWo/b2ptQTQ5MVNRO3RhbFdCVitfcDlVREgvZjhZUVR0M1lIVDZvJl1ub309eX4hZkNBZnVVQiooMXc5SmBBWG1COE1mI3czQFh3IzZSckxOMn1pIklKVS5pKG5o'@; put 'UENbcTFuVnR4dHs9bltGQ2xqfXpDUSZEe1p3PHA6eEwzTDVrYnpWelFMd0pIYHZDe1pzRlVySUZEJVFOQlUpTHFmPC5Tc3Q0KltMLFlLX3hfRjwvKWBxeiZaTEU7YXFTdXVXfG8zV102L3gqaiohM3V7eWFVdTJ+Ukp2YDF2VGppU19yey5VI3BYLHhAXj0jRFBRJWBaP2ROa2sySipPRT4yXVhD'@; put 'dUAiInI7fmwmP0x0cT1jIzhKRTdSNl1BRDd9fCZPXmlsSlBzYzd+T3tvQHkjcmFmM2JYWU5gRGBRLHliNWokeDxaME88Uzo+Ym4wTXFDKC82U0EiP3M9UD4jTV42I0RpQVkmOCZxUFBaR0pLJkZbQj1kZXxXVUNqKXdOO2NSTVs2LnJHJiVwKmloQVBMPHw2aCZ1NyNRanx8NXFtWyp1QGFUYDtu'@; put 'Sn5FfG8oZnQvPlVCQn4mcjx+ZyprXlFlPXVsZ3UuNHtrTEI7ZV11MkheN2h0XyRqbnolb3FKPiZ5SnwlZV9bMCsma1ZbVGFVakohR2NGPFNHX0hya1ZPN0NZRF9OMG4meDlbWFUsNDlTYWs7SDtAa1suYClLNHB8ViYuYU5PbGZLcnpwPFtGVmhjV0QsVmdnYG9qM2tHflNFYUA2REk6YyRdV3xm'@; put 'YH5tSmw/LzMqMmdMLE9LcClfNDpmYmx1OVBHWD82bygwYD9FOWVlKU0uaSFzTWNXcGdVbik5TkZmJUBjVmdbZkJgVH46SWk5OFlMVj9zZm4kXiZEayh1Q0AoTDt5JDx4ZSN3VzNKNGZedTQxO1pNQnZJSj9iP1I8PzteSF9gfEV8JkV1fXZ8Ji5OM1dAdzZ5UVdUOnpdI3N5Z2JiNz85QEtdbFRH'@; put 'K2VURz8mTSh3aVMsdjl0aF1mOUQofkZ9dSlUeldKemg5RD1vbHM/NFF2d30/V2hKRlVGZ2hyR2xdamA9VjNESX18USk4TXpmS3Y4Q35OQU1gdmNUSElye2d6KlskYHptLDNgcERfLE5xaGZDbVN0S15EeCh5bTdSJXF6bDBxSzAqbFg8UCxFOXFxSzdRMkM+Um43Ojh4O0xTens3YSFFUVQoIUVO'@; put 'TVZEUj40PWIzTXpvPEp4fHBaZWNkdH5CKFQ6d3tHUT0kXUcpfWxYb1RyLD49RFJOfE0hL0Y2cFNyQn41USp1OWhdbzlAWCpOelsuSmNIYkU3OE9dUUcwRCUmX21fJGRaQF5IaUh7b28hJlNgdnYoWHMyX0M2SUttInU4NW96K3dyS1tVPUBUTHBgfEdmSD1EKFEsNTZlUl9GJHBtSi5pZXw/MDZX'@; put 'UzM8bTgodUdjfl8iNU1UWyt8O3cufHx3NHUqU3RhQWZmeW08bWEoKjp+WFFxbl1kP1YyTnpubnRfISlZbWI8N0UkSnwwP35WXSR4QlYkfXlGVjF8N3ZPYn0rTWR1WnZ6eWxddUkuZHtje3ZmbHYrQFo1Vi4/WGJQdkU7QFt5aUpEIlF+LD9Na3Y2XXBdUWt8KHEhNEdiZWg9VGd0XiorMXRHTy9j'@; put 'bTxURFMsR1I1b2V5YEIuVEA7bkluYDtiPk81NHJLMDciXWBCNnczenxpcXgkZHUweDxrI00heSZIYls9byNjT1QjayZvRyYlcWFKcXNedUtlcVIiWmw3RHYsakdeWyI3JnpAfkpSVXFSTXhue0RpenwjRkw3PCEiQnlUYnU2bGpQZE9YUDsrNVdURzdhanFCKDhBb3V2aX0zNnw6TTJSbFpyTmRA'@; put 'JEklcCl4b0cma2ErVGo+enZaRU4pQ19MfVNUSk9UWmguQXl5cHdjQUVIazE1L3QmUihLbC9vMltbR18zNzV7bnJOaT5rezU0a1NHTzg6TW9uRC9NcSk4XShAKlpuZHlJNjhvTn1rPUtbdGpnPEk1bSkrSFZEPzpVdzMyZ0JWRF8hIXpUYD5adyMkJHt4WTV9fHUkQTIiOTpyJXRKTUl8KGtzcDB1'@; put 'Xm16eFBDKU5EZisybDpgSEk4OSQie111U0U5WXt1W001SDJOa2hOQEZ0M2ghNHw0JUZfa3Y5SzBzW1t3aCU6cVZ7W0RWbHdyMH0zK2lKMUhhbGF6VEEjRH5HSjNJVVdmbWsoIStVZmgxNVp+JmAsWnw6I3kkUU5rS00hUylfR21Vc2B3eHR+ND5nIl8xR2gwRipAKiR5I2pnOm8lYExdZnZHSj8r'@; put 'ZWNNfDJeUjAuOX1gSzpLWiNVXUdte2wsOGBWcHpfUzpAXUI0KkR0LEc6Y1pHdDE7VXU2VyZteEs5NWgjY203Tk4+fHlTOzBtSG1HTEshOEpkcH5KVUd9R2JCIlB9JWh1SWVyP0lNfixxMT1XUlQ+WUdCQH4sfkw9JjJ7I21pUl9vclZEMHpwWz5PYyEpJnluUDtsbUZRM3YrJTI5JUFVWXBJIW5n'@; put 'eFdqdVF8JE4oS24vRHhMMjVRYGFKN2YrYU5iZ2taKU56NGxhTVZpT3h4a3ZuVjhASTwkNHZzVDpZYlVsZ2BzfiptYksha2o+LGhCXnttJWlXayQrYTtLYyhXRCk+XzAhSyFkcUQ2YHI6dFBUblIjUlNkW0lVZD9EQ0tMbHpETCpJSWNdc1EpMzIxOVYoWz5oXUZYRUhOYy9gbzA1fW5MQH1UOU93'@; put 'dnBDSGdrLk8uY1Q2LFFFWSZnPFVMS1MsLjVoV09TS3ooOiVvQGcwJHsiVTA1UHZaa3liajlZYkIqb0NPOWUmQHNzPHJ8M04zU0JQcG96VnwrQnpJZUVRbnQkYlVleyl2UTBzYTNPO3hvdENDWy9VU2Muc09AM1VzTWdxdHA0M09xaTJ+bT1Mb3RAKm05aiJDcnwkRGk0VGRSPHEoR0hkL1hhLi5n'@; put 'X2JYb15ocVJQRjUqbk93Qi9BfGdYdWpZK3NpL3k1R1ImQ0BNV2QuXj8kaClxN3V5S35KQ3A6M1dWIkh4cDIkZkpSPXgjd0s7MmNLNldRNk1eI0J1MEluWUpZSVRJSj9NTUpMejpyPkxPUVF5eGVAfHpkNFl0VixtZDtXKEMmPXYxT2lrdVJmQlsxY3h+WyM9dzJxalNSOE4mX1ArdSlfP1NyP0hr'@; put 'OD05PTUsNnZ3QHtZdmw+NkQ3IWl9WWJYc31ecS9HPzV5cX4leEpySGxXSm9dRHdjeHh0NlpYX1lJUmp5ZGxWcmk3diN7MHxfUTt4c3FAdF42bltCPGd2M18uQjY+MTcydTAkd2kzeGRTXiVuJHpKfjY8K3hyImwjUkVMYWFTYCp6TnFUWDFYTjh4aGNeZW4qWE1VTEdbd1FYR3A4KFFRRllLP2VI'@; put 'dSQ6eH1lNHUhKGFkdD4+SV11Ik5ZMDo+b292Yzc1NSpzKGI1UlNtZlU5LyV2MTYjPj1jJnJOSGg9c2RVSGteNn0/N34re1lEJENGLl9HU0FYKzM5JVhKSClje3c0bm1HP3dsTlJGVGhnQClsIjwrcGc1aFQ0akZmMEFSPWZqPDBSYTJFKnlRUnR+bl9HbSptTyFVLnkzejVzW11SIzFocG1vSDBo'@; put 'W2ZPUjRBQGAxSWBRZG49XjNgVlVfNUdHRlRmLjUrO0shLktUZjU2ZVhfXW0mXllQTEp2bkJBXVtNUSkzd21RfjpAXl9UQWc/RUtUOyFoLEkxJS98Pn5pJFVtS0gzSkdbcHd5e10yXyJEMC90N0o1YF0vKXA9UiFOJmc+aE9UdjxJI0VSYT9JKHp0b1YkPyt7TypiOz05PHMjZCpxKzI3Wzc+JiRv'@; put 'cUA0Ymg8WXFBOj9FUGg9TUpLP3khVTJAKSIhMWI7QGUyc1goSTVAR2gpRVJIYkdpWywkZjB7eCEqalA0eTMhWV1fUXM5Ri93U15NamhyY20uMUNlTClYPCR8QT81c2M3KXg6enlucys+Q3dgPFQre2xWKEAqSHJCOVlzT3BkYDdMKFtQKFBAR3ZPPkN0PW1EMGU3XUpqZlJrTytTL2ZiUyR9ekoy'@; put 'QTU6ZGVbYGNdVks1cz1YPVgiOGYqZCRvNlZxXjJ4RitAPn0jYnxxaVhSMjMyXSh8e2gqNDY3YFtUW3QpU092UmF6bWsyN3YhKmZjcm42XjA/UT9nWXV2I0d2UCFXZ19ZKGJUcm00ayw0YSVqSlVqX2h0eTZxaGJddzc/TU1lNzJwN218LnFGQyNhNDtkV31sZkB2eUI8QFhxa1YpWn1kW1hValsj'@; put 'fmJdVGpNZXhRe15aKUtaPTBhaGZmIURjcmlzTTBoV21OP0pPZFA6dkkzMk1BMTQ4OGI8WmBTN11FVmtsKnZhM3A3NC56flZ5Nil7RjpyRFhVaDRXSElCdDhvWyFsTStJajgsdmdJKV5eRj9JSFVCInJLPDM0IztlRGFZbXcua2c5d2hTWXZlZnQuYXJATDsoMDlRb1I1Vz87RWpEXSNnY08/QSkr'@; put 'YSM+WylKVzVHUy91aiEmZClKSTozPEtvLyNTSDwyIjhqcVoxe0wiTkhQMD9xayRUfSV2diV8a01TQitibFtUISh5Izs+WX08W3RhJFdRWnUhI0p+UE5RQnU3QmYrPnR7SkxGJlNlJjN2Xzx2TiExc3dTO1l4W1I/Z3hUP2NIMyk6OnsraC9jL247dFpiI1I8LGhgUm5EQUZMVnpLLktHR3lAZlBz'@; put 'K0k9c2RULjF0JUV0d1szPFQ5S3E0Zl8hXyteXWFvTz1AWDwmUzdHKTtROUgwSTRNL3hteWNmfFQxYFdEWk1ATCYqVHRXTy9JU15vSmJCdTZBREsuTztgdjMmR1h7WkFiYFhqaS5IfXk9VSJMfGRtZ1grInhIKGAjIz9iZFMoPTM+LiV3InEuXmhOWF1MJTtbYyRqPkU/eU15dEM+YzpqbDUvSXVX'@; put 'fCk3QDM7SUleez5hcFNyKTVENCMyZSYufiw2XkRaWyVjJi90dFNlTUlEaiwwJDUseCYvWkk1NkQ4KiFXTlpWTXt3OHEsYUxCN0F7eHpnMyp4RG4mVWxmOU57bit4UWw2OkpfKSx7PSI9LHNhMD5walZYOX4udn0pOE5UQEc9cyVzcDsjbCJFLF9ecHpIImo/eCpkRVRYTS43NnF3bnhhQTE/PHU/'@; put 'b1lCKC4wYG44eWI3PylyRT1EeWYkUUFdP0dbSngucHNrfXUocT9NMW9WU1hPVzZoYlpLaSEjeCgkODchRngrZDk4MmZfTCJYTSZYdmokcllxMW40N2h0PmthXy9keGZJb0IyWCt0c3FYKy9neTNmaWldbkkkTVRvaD10eSx+eDxvMDAlcWI3V2BpbDlFP21FUVdrMmw0R2c9IlVtTVBoWk1OQ15K'@; put 'LHVrOHV2aEVyPS53RU8rVCxsWGo7XjVARTEmMGBkK2duMSkqbUB3TkwiMGdtVV1MblJpUSs0IWFhSHxQa0c6U29SaXFQX341cl9YdnI8TH0vXj9QMiEuJmNTOHdnTUQoI05NTnJnKT86STdKRG9MT2kkRWhiWUpKMmlKRVl3eWd7Qnp9JTlJfSowW3tLfDg4LzMpWz0hOikoMy9URlFia1BwbXZE'@; put 'fiUuK0pyKFZYZCx7R3YhT1RmNkssR2EsNzJAO3RwZE9IIVJnY046TD88LnF9WHpzWHgyakI9NzV5KnNzR2RhWHRlZF5nayNle0dIL2d2VSZ3RXtBYU0yYUN9ZGRqJH4pN1dQPFd1UWFzUiVLZEwqcEBden5JWzo8XTlWSSRhYzVDK3ZLV2MudFA0M2UxXTNKRlQuI2lBYFUpaCN+WTZKVTtVdFBG'@; put 'ek5qI10mMWEkdllidUhIT0xEU1tiQlpvO0NYSVpMVUcjTyZaa0pEI251JHw8QzkpMzJNenFFUGojaiUlKHloaU9LaFhtTk94YURma0kwcF4yNXhhVFMqZmskWCIjeVlkdUtLJTFSNVFnLjRBJFJKNDxfKEdIYCE6anxLaGVyYFA9OmxTYEwvUGssWjZyYyY5M1EhZmxzakR8ZFBRPHs2KVFDOits'@; put 'TT4pTzFwfWl8TCUrWTJ3YlhYQEVtbTNZRmRIQHFzQCo8VXhZMiFwNU4+RVZkbG9CIVs8P1o5dW8keFl6Yzg3Onc2Vmt2RURVUF8xVTAqZE9aajRuLk0mK3x+R1p4ZlZUT1MkNmUyekkuR3leVzM4L3UxcF5eI3cmejFVIWROOFNbMz0wRmIwIU8uY3pgaExSeTNrTVB1MyFMTzNqeWc1YlZ0eG5p'@; put 'KUo9MTE2fmFjSV89ZFgxUDJUS1dZczpDcD90WWheTHEvX1MzRk92KDBhbH46fGhzezh5W0B8e0guYV1ORkhVN1oiJUhmQXM9LD19SHRIRnQrUTZuUTZTbilFNSple3lieUYrNkNgXm85VEF1ZHEuXn12WSZnayReIyg9cF96YHJxaX5IWD4pNileRD9QIWokO2JbbnM9YjUhdWpGL2A3bHRhXkJv'@; put 'ZCsxJD9RVURtZUEpJVl6VzFLbj5SMTxxLk9oSWhAT21JZTU2dz1vNEpZNi5LV2Q0ImZUNEM7VGhiQiNkUCVRdisrXnxtWUZ2WkddIV9YPW0lKVNWM1IkKDtvenk6LyVxUkcsSV1sbm5DOzwuMkpxfCQlOV94SkVqLDdFe1NZc1RbPEg/PT5geFRmWVt2fT89Zjg/PV09UXFvclVzMVVtV2Uwd0U7'@; put 'N3VmJXs+PnZac290P3RvYWtycUV0KixJZyFDV3dQWE9CWGpQOTFeNFVgWVF2PiIjKV9bajpsY2VLLkBzLy5mNSZHWXBjIzFEOGZiUXhsUHxSK2MmUVRpKXsjY0E7ZEtMc25PSktwPHwlQClsdnNpbHFEYy40WCFPdnE2QWNMe09mV1JXN3M/WjdIeDFyfG9oKDwmZWs6Z0FWUS5dVzRzYE48PXhp'@; put 'UHlTX0NrX0dgVCMhSyZ2aWlzYkskKEE4UiNTYlB+WHA0SCM6RS5mfTlJLFpseGhYdEg0Lzx6NkZ8dVZNMkZ6SE5Wckc2MXpUTWdzazprbjIkbkxKO1lNR05tbTYkYj80YEY1JH0kdFtPUVJndz9maEN7S2xTTjk0WDZKOks5SkFNQi9TNTFJJUZyNWwhVW9ROXU+KUZiQUpPZmx8fVplRzNqPyo/'@; put 'aWVHOUdaNDU/TWZufGZLbSU7QHdaMmpJfUtFZFQmQ1FqbWE/Kz14SGxMYFdRW2MhJnRTd3o0M1lyKlNKcVprWC8zcWsyQGJaWCwsVCFaJCFyPDA4O31fZVs2blEvdksmODd6Wj5feS4zUnZpLEw1QlovQzJIVHk+Yl9IfjFmcH1nI34lb3lKOVoxLz91Kk5QNTI/eUB3KDJuWnddYSkmKV5pMHxU'@; put 'OE1gZXp9UEA5IT5XS1MzOm9gKXpyX0tWTFQ8Q1BCTVREfUppdVNYJT4pXnssWnFsejZePVRjTileIXljTXpldXIyMGIqdk1pLyFZem59fm4mYX1jSj0wWmJfPjlDYCpRWHEkWFNzfkhCeztRZ1o5UT1XbF48d1Vwd1FPUjoyWEB1NCRCazI9YTwyXl5SJV06Sj43I3JDcjIxWXIkPzNmJl9kZG8o'@; put 'TDc2cFFqIkBPfTR+X1txMyExTi4kMGBQfFNDfWJaQFtNMTdeKlF0WyYucV1XakY3TDpOKCNJfHcmJW0yZCt7O1d+XUY6SHpfak8jZWR+L0lsXWl1fCQlQzF9YnxkQGZ5dnl6UiMsPEdgYz9lS0Z4UDxBdl87ejhVVFNTRVhefFhTIi9SeXc/Wi8uWikxRHladVBFcVRAT09GNjlzUmc4MiR6Wy5n'@; put 'QFQrdF86JiJQRiFOUSUhKGVHQXh9Jk9lal0wVChpej5pNiRXX0pqVDFNcSFBdUsxa1M5PVtXRyFAc0NfYiJ3ZDlyNj8qQH56UlVmMkUxI0UjWWc7KV9RaUd9TENfQzxlMEJBZEFIREVwa2RLWGQiYnZSblsuOl52bTU/MkgpbjUlQ31DQWNAc0A8NDpOQzExQE40fSJZSiVFR2NLYy86NE9ST0th'@; put 'SGg/V1RGW0F8PmgwdVY1VnhfcV9SYWJzdjc4KnFnJGMoaSpWKDJWbykpRkczc0JmYEFpMyhVfDRgN2xzPVN5S2Q+W19hNC53RmBGXnx1ZFsiQGEydl5xT1dZX01dejBFZ0NLWzo7XV1dXzNXMCJPNkhDNnU2JVdOJWZ1UixsLHxifC9YTmMvVCpbbXFaQnt8LjMwQmVIMVkqdm9WV0w1bHpEZl9k'@; put 'LDFpUTZzMH1DYyVERi9eM1YmYkx5LCtnOE5WVCV2M3haW3hMaTBOJmQwRFY+Si5oNmtWRV0hUDIjclF3P3ZKIXo7WVo6LChJKThPXj82KlkrPyErKlgxWWJTb3VsTVRXXnJ2fEphRio/UH5+WyhpU1lKZjhmUyFsOE42TV1RcEl4UzEqT0NzX2lpcCY8dHxlSUk9JndLYDBVRTtUOjxUO0VkVltC'@; put 'X2dLK1AiOn5OYE5PUiZvNExmRk1nZTx5ZnY5JiEiIUkrNjVCdSRLXiEhZX1gcCk+ISw9Ol5qS08oanFseX0sfGs9dmRnfkFwNmJLMHIjNUhIVFVqNnl3S3JgUipITzNgSDN6UVdoazo4JSMsV1ZFKX04WUo3JX1CKCMuNHYwIV17QTpXVUtAJkN2PjhwSlY4K0UoKUwrXTh+NS5Be1pIfFRVOERW'@; put 'OGFhNTZGWnc/OHBSdjMjPFUzVCNeTFU+SlYqVyRkLz4vVjRZVW9MNmpGPj1OWCRSSm1OUE9ibTNwV2x8My5zUzZuNGdfNHo+I1dSW0kuOiRrfDMrRnpfX2hSZHc/NmhaQl9Acn0sci56VFFATn1BMlBZbTNAZGl4MnJLVCIyP29EUGk7e3VoOTE2MCI2WkZidzhCaWNIPm4hblYzc2dTU3RCcyZU'@; put 'fTBIbX5STD1zU00mfktWUkIqRTF6PnRkP3h5US5RNSR3QkZESH1FOmQ6YEBkP3oqcjduQUZVVW9CT3l0WjE0MTRYWXkuI3VtcTElJHIsJF00em1BUG5RZTxmdEtETHRmJlokaWREWCN7TWt1SnVrXVgpcXYhZ2hlRXBMTjNGMjIsfFt9cGRCZWkuZERCej9qJHxvWnomNihzJVg2a2ouN1IwTUw4'@; put 'UENuOyIjY0xNOkZGZTRTamQvdk99JjZrRWkvUXZZWDxUM20qbjRUKFJIellgTHElXTp0X1ZaVyhAflhFS3Q3MXw5V0QqKFVPKyFYbGh0Oi9XPiVdLkh4cnw6RXppOTpDY0UmYT9EfkkqWDFaWSZuR11ZQGphfVlIbmM1V140VytZS29OfUh4YHFpKFg6eWAlMnU0S2B8M0hEYUFNRHwhU1oyRXJJ'@; put 'dlVUOXBfX3BZKjJtZHo0X21geGNKVH0vWj5OUCsjfS9hOntpI0BjSEx5bSlIaiZvIThnTlZmK3syT2RMWkFyfVJfXzUvVHFkaSxienR6JWVOKilnMjNrLD1xQ2dkS05GRyZ4LFAsZXVNU2QwZnpJSDYwNEtFNktbeyEqY3s0c2FgdDtPW3tFZ2BTQ0krJUQ/WyolOmk9U049Ik5vOilULlVUW09M'@; put 'UnZHP0ZkMF9OJSwucz0jJTFIRmhVbzhaKG4rQDw0aFNTNVMjKF9bLmxUZyFNdXZ0dCM1eUBDbU1STCVNQ20vZTM3X0pubixWZ2hTLnV7KntzMzc2KW5Ee1EjfmV0IWB9fn18QlBRRF1eWnFNNlNHMClHL2JlPjBpWkJfQXJfNHIwVGApWntvYFVPNEhsKTAwLCFFNDMmR0ZpXnlTSUVJOTVYOEpW'@; put 'dSV+Vm9QKHo2VkRIcnxdK3IqeiN7QGVMUmZOel4rOVoqNlZ1YlRgaV0uP1Z1TX14JSRSPSVJb1N2Wk5zVGROQylHfGg4VjRWWkdybk9iXUZbS3hHUmN7V2x5QjlSekMxW2BkSUJEMjc1dTVjTXQqJHsuNmNdazhzX2UxdT4peTtae1N8OVU2QHVzODNFfVBCQ11MXjB1RT0/MVBCXTliLG9YUndh'@; put 'UTk3QkEvSyRtQ2BMJHdme2w+fE5FLyFtMiVDMHBHMUZIe0lSJjB7O1NFLjUqa0x+YHM1KiEwa3A4MF59bUZuYCFxQX4zZS9HPTI5NGJXfDpbLHxhXWsqaWFtR01LU1QjYTdWOkxzbnliaWRlUXRGVWhYUUw6dFY/ODpBIyZhIkszdmI2ajEmTHpdb0lVWStaMSpKKnRKY3RgVDFYQ0c2M0wjZkFl'@; put 'ZVJeTWgrOmY3N2wvT012LDx9Q0dRbF45KjVCakRFeFhXYFJESzdYWEQ2PjE+Wj5yW0VAPUJdbWh1ayI+KmVmLHtkdjhrUnEkelFbX1U3azAkTDl5ZCZwVnYzXlJOQWdwU0A1Tm9LOmg1ZnVYdUgqbm8iJi5xWXFzZEs3KGRsJmp9MnZ3MzUremUmSWovO0N7MWkoLjpbLHkzImJ3aj40OFUySVpr'@; put 'RGosYDNFWmN+TWtLU1d6RXgqKWRzYEcmRGM5bVEzQzd6XnQ6aGBXaD5NVVdXZz15YSE1U2dYUDthe3ZVVzJnJV8/Jlp+ejI/PUV1WG1TWnhSfCNTdWZeVlIlcDI1KGUwYC9OIjVManBHV1k/KEAwaCJmMn1aI0pLKFpxR2ZYJGguLHAiPnlJYVssaVUpRyh1YTIkXnI6cWovZj9pNjB2MUU8PlI/'@; put 'OFdCa2NSMnBAdzZnO3RnaiFCcj82U09tUDoxIVghQGlQKW85aXM8U2NoaltFI2NbVlNgLzFpbmo5fC9LaWd0Tmp5ZFIqZWYyeGJtJTptaSg2aXtWN0x5NVI+ZjxrXj94QzBGU0tVOCNNbj9VQ1dBakklSjB7fT1yJndsVj5tWit5dl4mQj5yUlN6ZypzWTl9N3NMSXM0UGpLZWB4fGx1JkhLTCpm'@; put 'eFdFdTR6ZFBrUDB2WGE4c0o3Tk83O2p0N317b0hzS2M4Y0lPNCE/UDI+YmFPKi4+Wnl6cCN6T1Q0dDM/NEYxcmBWLiRMKW1rPGIsKkdVbjJNYmN1TXwkNGUkSyVfRkM+RSFvTE1hczMwVU50KmdVQyZxZC9HLygvWThAdjFNU0g8KSMye109dUh8OFMhVihvS1N2VXgmciMqJFVAdHBHZHIrZS9n'@; put 'cmRofTcvLnYvSFV7PWNhfiwoJC88SThlJEAqVlVHVGtjMDtyZDspTSkiVSRBeXN+eyl4e2Z+QSN6NCQycCpGaGkjfSYoPm14QW9uKzM3VkJ8KCJFZyxOMip9X3w9fXA/dm5uNUV+PG4rXn00aTk0eUhFIWM7UmNKUyUyNXopXV4jbGsvLCJ0aiMuSk9IKUNsNXpTRkN+JV0rOSp9WWRmaTo1Qlgs'@; put 'JjcxY29mZGgxNSh4SGpDYU06fDJ0QDlWSUxpI0l9Y2pKfmxLTUIsN3d5WTs5UURSUUFZYSxFSVgmRXVqJD9aXzp0enIyTHZzLmcyKU07XnoieWBsb2Vhak1aKXBvdmdSLEchK115Sy59MyFGQzZhW2ZYcEg6fm5KQ1hsPiRbPDNjTVFpSitPOzU2PXZ+LmA7SWV6fXtdXjJDeDd0TmpDRi4uaTNw'@; put 'TTtsMGU/dT5raCFZfSp3Mll+MW86b09FNUlXPXtAISZrbVREK29PcjA2WS4sLnFgal5KQVZEb2Ayd29aPHZiTlIjZ0R5PnQzZEZlRWhnbGdFa3JyWCtsbzZSUDwjWDtnd3tHUkZlSUFVemo1Zi9COyQ2TStlX0Y5Mk0mVGlWPkQrL0J7KHZ+OTN3azo4ZT5xeGo4V19ralQ+dE5XbmQpSDtZYmtN'@; put 'Jl1CLHhbQVNfaFBDNkkwI3toKTp7TVpjcT12N0NzWCF+SHBPN1s6blJ3cDNNKFtnMFNoeEZhWUZlIWh2UUJhJnFdb1U1P0hNL3wjSyhYQHczcVROQGtNaypybiZjTU1QIltpdCYrM3YhRVY1Y0Q0OVNqK2JtRVJ2Mk8sMSZYal80SSFsUmJrOk0ldE8/Omt6X3Z1Uz0sPykhRStxd1opZm1eaDU0'@; put 'NlpFP2ZsXVJraGE6dHImVjBKbl4lekFfSzJKInB+ejw1RjNuQWJha15JfXRrKi5jOFY9UFF3Ly40Y1BqLlFHdWAkY1lCVzUiRUFrRDZFJFgpJk5XbUw4JmE4cEt+OlhFVSEyQklJUl1CPip+JE45UUVFTnI9YmlXPH5fK1F9TF4lYUJNQ3B4ZSVzLFRYP2V3U2siO2lUaGBHOTRQbmlGNVdERUVX'@; put 'Qzc5IkBmWiEmTGk8SXVHKTgjeyV6M1RtIl5ZP0UqKFRiND03VCYuO1prQWtFS0wsRXlBOlYxS19rOSYsOntlbzclWGkoZjtRR0d1biUrV1A+KSQhTCtmem9vZnM1SWZ6T0ZQL3puaih0cHoqXkgzblAxRzNfPnJ4bCU2YDw1R2dhTSN9Ij1Sc1U1RTc9WnxyfGdeSUpJS3kjVDx5Jm1AR1o5fE9Z'@; put 'cikuMDl9ZnxGMS48MGNYSHUvbHJQIig6ZkJrWElFXU1ANFl7Ql8kKlJwQXpWZTRmZmRuQDFtYlplOXU5QkdTd3NyMmxCZkZ9YXdOKW99L3J5VFU2aEF5aHxHTUJ8fU4zc215I3Aodnt4UioiSjxnJmBNQ1BGNlJRbj9AXWgxeEt4QmUkVnQwPnpXKVtyQV9rO3B4dVZ7K0M4b3QwK0Q6cmRqRjhK'@; put 'MkRjXktZKGFJRylYSnB9LzV8a1h9VjokfUk6WWcqWG9qcHN4MXQ9OS5PVyR6I3wpbC55dT5vVGR3NG5Eeisubz5yUTw/ZitAIX1wdFdUPXUwN308ZFU6RjpGczU5TFZsRGVOUiIoJFgkX11bd0lFfSVnbiN6KFY8QmdKYHAiQyl+KTZ4TTJQZnQuKCh5WVd2ISlkNiRha04yVmZeSCFwcmprY0o6'@; put 'Ml09YkJ0ZGAoOGouS1AkfiladzdhTkRsYFlgZHRmdi5oJnFOOXY9QXN7VCg9KVhNKWdrcSlpTnZEJDIuZE5GbzJOazE5NGVSSE5xY1JsOUZnaEorOXs9KVtbY1BBL3UqLHtxd1NNQiFMO35JTUBCRkVtMW9FbmIkZT90NEcibk9iJDM7d2RrNUpNVHVdJTE+cHprR3NQKCFxZyFeaSp+X1dnZ2U6'@; put 'SVQvPClKTVoiW2ZuSChKIlhDa206eztXZTphfXBIaU17fVN+W1VAUEV0I3NqYktKYWYiSXo6KzB8RStJb15JMWleYzRgaktDPXJbOzs4ZnNjNHxfOiF7VnZfMUU5Li85Pk97TG5IJlVKLk1jbipsK2Y7UV4oS0BTU05RQ00zLDFQQ3t3c086U2VydXFRcG51SzFQYUt4KSFIIURTXzh9fndzYXtP'@; put 'VTA2cT9Bcj1LJXo5JnZgdStSU2EiI3hXQmNrbD8/bEZ1R115Iy57bU5zPi9FKCRgMUNFZ3tmR2pgWzgrRHBMUn5UY00+ZlJLbTpZdnwhPCJeW0ROd2dEcVtyc25wXSlJUlE9ezBlTjtCfEQxa1dlN1RmbHlLV1FTaihnXn1MJkshOWcjYGQ1STtuaEc9JnxIak9QcCF0bGRJPH5kVmMidl4vQkgo'@; put 'dzZRZig7KkpHRF80TW11UytaKzhGWXdKWSE1NGcpTj1AS3tVNzBNM0E5cnUvMWtJYT10d3pOZ281Q1E/VzJMZD9JZ1QvW2ZpJD08fTVWcj47PGojQHk1bXhhczdOOHkqP08mOUEyXjYsbix4LHpfYEpPNEBmW2JEaGdhMzhVaSVUZEV1NEQlI0UmOllMVDZmSG5iP1NkRUhaPDpFMiROfXg1PTZr'@; put 'M199ZWM/PSk0OXNWdHN6e255KW41K040Wm8ucmpgVHRDLFloPT4/WkMmbDJocCpWZWh3NXtwKUoqLGRneVdrWztqcF1jWypOalQ0eFY9bW1bYmIyMFF1SmVGeEs8Omg7R1ZrPi5zcHxTRmxOMy84WF1bVTdRVyxJQ3krWiJdXnZ7bGxbfTc5OXZyQiFjdmI2LGQscCF4dUY0bjpwZkldbCwodi4w'@; put 'OShmZ3VnU2VqaiwmVjJBRlJrfnVKbW9uOzJ3S2p3NjZOdmBYJj5pU0RPL1U9WiZtMlB+USF6VVllZ3NIMHYmQyxOezd4PFtbIyx1ZlNKTS5nXUpNTSZtQi9ec085WHY4ZnozfkkrT0JYdiZ3QzxEdVtxdCw2QSs2YHpIezxRIlYjfmE0TlBPUjs4QUhseXkiPFdAU2t6Z0suT21WQUx5W2tyIXcy'@; put 'ayw1VXoiWyJ1YTM3eF9pNm98KX5lbWMwdTdANzhrYTJDfHpEa0YqbUxMQXw7bkRvRHNFfWdpPjVkeGBdZCl3bmYrOngrMTomXnB2bXwlKixTZlssP3h0MEJYWCI7I2NmWjsvNDg/ZGFtUHp6NSpnQHV+K3tZbDB6SCJnL0VWXjh+VDcoWG5YOXEoW1JJbiViajE5QFZIKzJ8JV1YPGRQXkU3dX5r'@; put 'dCpaWWMuR0B0WkRofUBNN2h+XWJ4alsoMnhIQjkqXWBJREMuUmgpLEBTdD5iLztkdVRoT341LHlveFVUNmtFM0FVK2hFJEIiIV03Z2w9dD0yaklhTTh1XSNGWVpmPyhOaSpIImZUJWFWdWk7TV9naldRZVE6RSZJWzVxOSl8fFQ6JCE0Tk9qWV04elVKWiZSMENDPygsL01eNGF4cG1MUmlablVO'@; put 'UFZDVG1RNXRpW14sblcpP10xMDRpNjlsVEViOlBeUzMuLFh0b19FJVlUP2ZISjhfNENYRldWe2pRNWw3el0kWXNJaiJwKGw6KX1gNEg/eHhjYEpeN1NZTHM9RGsuKktiXix4d21uOlg1ajMhVEpLc3x3PDFqVTQsJSooTnUjV3RmfCs7YH0lP0N3YkZPQSZ6QkhmX0sseV9FPHZAdFsoXV8uPVRQ'@; put 'LHBEMylPZkc/OWV9aH16NElPZXFlcWcxP0tdMVc3Mnd4TCl8UVZaKm1rVSVHUnh4MShoTFVQeDxmYUlxJUV+VVQ1RHZjYSZ8dHVyVSwmTDtDPF9HKG16UXF7NjVRMTZOTGo0S3k/L3ZAeXxyU2cme3dDMEo3PXx6ZW5BNmglIUxzWVtNZmBkYFpQXU5+RTtjcUE0bDJxOTB4NyhjUEN1SXE6IVor'@; put 'SjYpSjs+LGFraCNrNXp6cSwuIWI9XnR1QjM+RzhXRTZAIThZKC8wdGVGNHUwZDx2JUwhLEtpOkJUQmYxJEJQbnREO1QpRnFAZyV5fWdEOGspTV55ejBfaTBVLitIVXYveHgxWjcjb11wQSI9LDFRQEZnUWkkRUgpRm0iUjwzUEFIXi81WjtdYjMzOzF7aDZuVCVNYyRgSSgmLHBeM15bT0dOKD5f'@; put 'JTpDJEIwQ1FYNW8uS0s+QGtARlBGZnNzNTBwNTVAciU4Mkk+bEBYc3xkUlIqLyJCNX5pdlpNPyRvbmtfP0RZVHpdLGhuakIvOklIW30/JVVJTEhIaEh7eVNaUHl+aEgyJC93KS42aFZtVnp2X1B2PkkhJVcrRk9HaDtEWC5qQ0dpKTx9d0oxWnR3TGdFWCpKM0ArUHV5PX48cSlTJWw4Mj1oVll0'@; put 'bF1geXY4R2FMZW9FN0o4M21hdDRTTGswNll0YWYxRGAuZ05vP1s2NFkrSnc0MDgiYEFZNzhnPSZuUVAhVm9WSlt0Jk9FaWJZOngyJFVqXXlRQFFtNl9wP3ZZNV5fRG1GdWNqJWtLQ1YsQkYmLlApJDF3cXpqO3pCUDB1fCxyPil3cFRiVWchXzVdSXBLVypTWCNxflhoTi50QGNjL0Q4emw6Xj1i'@; put 'LEJyV0cqTzFfVXU4XltuRn50O2FrSCFtP3N+YlAkMD11N29iYipTUTVBJDxoQz48S1s8eiE/WzZuTVd7eipEdzImL2YqMno1IXVFbDcoVHgiTjMud1lwK0E3XXg4ZERPPUUrR2BwbV5NXno6Qk9fPG50OVllNyR9Yzt4ZmArK1RKUG0wdmxHbylYUHRiQ19qRXNPU1lNRW5ZOl9eJWtgWGFHMW5y'@; put 'cnpHUG5VaX40dDlhSmY7eGFhfmBKJGtvIXgvenFYdFFCQkBFK1M6ZiRodWVKOitva19UTHgkdzFJQ1dlfltaSXpfNmw4OkxHSmFrcT13SD1APDwyXThEK2o7b24pWVImVWgufHNMQj96ITR5Ok1uNCgoMU1eVzU5RW1FXkw8MFEme2RYezZEKjkjcUJOLilxKV5nNEZ3KGJ+ellgb2g5UHk1cSxZ'@; put 'cUczelA5dGpPY0hHJHE5e0NqVFRYXUJzaFZrcztzN11eRTtlOSo3VSJLXVRAfkUxfn1pNXdsP1tCZUs/Zj1pVlkuaGowa3N+IVlVKDQlPzBHQHo9QEJdWi5mXThGeHcxZ14iV1FrU09RanFzKjB8UkpUZjpKSzV3YT5dby5iYyIxQChXfl9dMV9nWTpYc0JPJnM8QTYuezk7cXVyfDgzQDJ9Ui5H'@; put 'UyYqTnp6fSlmNS9ySlQiYnRZXX4wWS88Rl50SDhFdj9iLmU+WlFVcWRsUXd3dUpmTl09IjUsOERWYGM8MUQ+fTlLVXdyI3pYPDt9KlRMTXJGYGlwUSgmX1llb0xKXmA9WmVPOEEidHBSTj88eSpuYWlZKDA+Ym08VVc3e29lTHFucnB7eHFJPi9qfl5PUVJxUSlHbDg6YyJuVm51R0s+ZjpFKnRW'@; put 'RVg8RiEjUnJ2X2tVLmt9T0RpRFtHXT5mVE41d209OCtvcjByQiEqT2gxWDA9UFAkVW8sJjBTcmNlbS8oRlEkdi46P3NBb1VOYEw+alloUSNaNT1GbkF3P3c5UlA+SVR5S2UrZTxNWz9XOXJBbFlTMkluLzQ3Kl83VypCNF9TbyI5V3BGQi46KFpYclY2SHFQdCN0TkclNGhVPyNMIzUuSlAkLntQ'@; put 'ezMwJjd7SX04Qz1LTXxNXSszNHReeC4xQG84VnxyfUFSZGpeKyo4R2F7JE9OVl0yKENndDsoTUQ9ZyNiSzhHNl5xNmFWUD1iZ3B7e1RXeCxvVXN7VkRPNFtoQEhNPV5hOHVxX0llQmhaJGhCV1B3OWhTYHR4dHJyMT90eT9VVVA6PV8lX1BIPF5+YVpWJGhLLyMpLGR4YUAwPypfJWJCZm57SllX'@; put 'bGguVFtDO09TQygpUEV8SkM5ezJ6elhLYWNnOl1rRiwuUCZ0VkpgM29OVUpMcz1PPSU/RD4vODxOWEx1b1lpNnlDVDxtTXk2Wj0mTHwsbz1zPChoLGFaYW1Rbj8wOV1gVGoiLlhjW0UrVXM5QT0wQy4mOVowPGJkIjcpbGR6YTBiIVFzcihIfihmcVJYTTdYRE0uVUpmMSRbdFlofSxFbnMqRSph'@; put 'RmFtVWpNYUM1IiguYyVkY09RWz4xTV5LViJdTUVuVD5uZyZ3T2l5Im5oZlcxL0JiMWdUcjU8NmFrd3VwYjVZfGowWVVwZXNZVDYqR0V8OSFIT2N3eD06VTwiMlFNM0pJLFVgIjBzJV94UWRbMk1pJiM3ITBXSzBxIVlLWTxKLGhuc20pTTwuZ1IrUSJwKFhHIzF0T2NPemowMX5IV2szV3xVOSJU'@; put 'eG5LWSQrSGgmUVNSJkdoam9UeTxpfGZJRlAlKHY0VElmI0hoPChlJWFBeW5RXzhlI30hfD0oMC8yXVpSPiE+NTl5SWV1ZWBrTW5UNUxsR3lRNFZ5eTArfDolSFlaKzR6aVBvV11ya0EvSjYvd1pEMlZ8OnZUcG4oXT5pKXZ8SHx8QyxGWkd2X1VPQ1R6P0VOISZieTsvcSs7KEFbJGE+bkJiQ2o5'@; put 'a3I/VkU8XUFnelRTMmpiNGE9LkxYXS9pT10qekwyRWErXkhDZmwqZiVpS3tGJTJYUSM/bXh7K0srdEg6bEphRmNyWEFmLHcvRXk0IkNJV0ViaiRIIXU6MzVkV28qTkt+ZHEsOGowSHFQYGo+PnBNbFk7QDUpMklGbVpnbkVraFNnbFF2PmYoNDNZT1koVjB1clgkbXlfdU5idms5TChwV3hfcVkl'@; put 'ZihFLGE6c1pdJXg4ajlJQ0pdeGNmWzJQIjEhMHIhRW47VyYzIShkRl4mZTJ5ZE4oUlduNk5YImpqRSQ2XyEyWXdNckpITDdYSCtEfEQjKV1YZEguNngmT1JfIyZofXVeUUt2PG1fJStCREhKP15LZT9ITSY/UzE1VUhePEowYVo8KS5tO1gufkBeP3h4NlJgdltFPWJ3Q2BUK3xYM0dPUWJvfC9H'@; put 'Q1paeUBlPFJIVlp6QnY1cjpse3MycDNeOX5HYFdMfWRTbmZoI0hgXkhCVl1afU5wVzcoUDFGOEk3QVlybX4selJDR3AxaVgsYCVtfjhePmA7bGJjJnM9SlpNWTp2cHlAO19lSV90dkNtX2g5T0JYRVZ0ZmhOLitMLyM2TTdZVDlFWlQ7aGRwekt6PlUlXiwkRjhHRll2Y2VDbzt4Tl0vc0dhVlEj'@; put 'Wl5NXylYTmBic35VTltXTT5ILHw7W292OF9ha15Xd3dDXU5QRyssfGswTXE2I3Y1UlMyendmJG5qeSROQGFUfSYrVCNwSWY+JXZVQmRaMiwkViNaIUdTe3pyUXhrQkdnMncyI0BPQHkwMXwqeiYuN11MdjJ+Z1A0d0ZZbElrWzhwcFooIip7S3hxcnBJKSVYTVE8V2d3YUlLNHB0KD9sKiteRWRP'@; put 'SjFIfU1dNTAsY3k4NjxzYm96PlVIW0haRm14O3kxbyx1aEJQXiZLWnJacC5PY157ZyNrIlVUKksmfCwuLkx9KU5xWFlvfF4jX2FXS1MjdXBOKEwuUlY3Q0NLVll2QHA/RFpaMEpKKFNvdyF5YGUqdFdIP2pFNjtUXj03eyw1Q3hiaFVgZD01Ki9ZKzh2NHYhaixIeDF3SSJCQnUudjQ8ODMlKCQ0'@; put 'O1lLZDpuO0FufjVpVEwyWTxGMnZLJnRpe0xodVk8QSN1fSV8RTVZd0BOdkFbaSs+YWZLSThsP2omNF5JKS5OakBdO2htRyw4UHVXaUdRNj59QnV8U1lMe0xQNVMhakZebjV6akB1WSlqcCJgI0wycjNER3VoYClAWzRKOXtOd1N3TWs4aUQsO3hZc0VvI2UmaEwqc0V+cHhIQm09SFBKQzlPby9p'@; put 'djZyUm1VUHAvXTlgRjQyQ2g0TCxNSEpOVDQyM2NISWAvOnpfVlQvXl5bRzV0bV5WQllHKjNqW0hlcjYoK0Vydygicnc4V0cyXUFzPV1Ya2dAJCF7alVeWCZmVXt2fSxPTV5wcjxjckY1YUwiN19hb0JHJSMxYEVCQH15NlomWDw1ZzdaKylvRSFsJHZOckx4ST1pY1ZDWlBfYGJoY3EkI3hrbHl6'@; put 'U2olSGI+akNnS28+ekppIjx1PHZ+S30pQkw5MD06RD5RMCtYcDpsTChNNzA2alIiNmBMfllhYWZWSEs1TFtYTjdPZkRCMUg2eykvQkNkbT1uNFp8P3txLCMoUjBfIUM/YjtGfk90THtxQDNJb3hUV1s5YTlGeFRiPG1Jalg/MHRXQDBPaCVxYG9tUm5GeiY1JmwrLHhFfWJnXVZaYzgycEpuLHE+'@; put 'a3Q2NE07KW86KT1QdjY+YllPWFVhInZ7b0c5T3N8Y2szJC5bZXZJLiIxeWZmWTl2a0pGYW9oI1s1enFgQnpmR3NRIjJCRXopens9WEMpdSorVVhidjA2PywjSE1HPXEmTH1KRSUmI1hpVGRiP3JiezM6LjQlRywkSytHRENUNnRAOl1QKlg5fGk4ZTxGeTo9RVV5OiwqXnFgWmF4UXJxW15hPW95'@; put 'PVEqVU1HYS48O0VOQ0dfd3h2eXYybXFZSDtjblIvKlNiVz5GbG43Vz5dInJiXW9JS08xd2VnKDkjal9TZ1tgMmd8biV3bjZTeEo/QjkmX1ZUcXFuYkxISjcpYUdoXX4pLig/KnZeYmRscXo/YV9lQzl8dF1UdzYsbTFFNTlXMSYweXgwLltZUT5JQkpeQ3VUMCk8T2BSWnUsKHxuaHdXIUprSyt3'@; put 'MHEjdnc8bkdRS0ZwQEQ2OkNmUnkqe3o1KTVwcWxxcU40TyQ4cm0mR3puTFc+aUFXK3hLVXRgTCw6KUhBOlomIiJ0Lzs2VS99LldddH16QHx6eDcuNSNIYCpiblY2PC9OfVpAPzRQR1JIMDMuXShpcTFwXyMzZC5SXVgyYURZdiMjTHZPKSV3cj05dChGY0NdOElwZHI0MStWeVpSUW5KZmNuZ1lu'@; put 'KmgyJShwQXQjZlsyekUjREh0WnM7YWtuPkshQz4hKV5AcmJhUzMpIyo9eklmXWduUlRyc0dbbjQxVE1TR2BONU0xViRNdiFoU2dEQDtfbCVfKjVSR1Q/Z0NBSHYoOkFRbHRRezIqMzQrOWtzMTNAKGgsK14sJVlMKGMhX1RBPlVxQVdhS2xBajBIW1JETFVfQW5beDAmKEY2ZTRNb0ksQXVrYlJ+'@; put 'SktnaHozcn06Rkc0WSpXOTxxM28waTYpfTliKUdrRTo/N25mODJFd3UxczlEaXFJKWZQIzhuVTZFMmpma21RaWpQcCM2PGE4fnlWNmpqYiNEU044PG9Oe3J9NjZ6VWwjMlc4dSlINDdhV3ZXZ2N4c2BjcUg6NE1GM3d0Mjxbc2cxQUJhYndQfmNFbipXSzVMZUB+am1JdlYyXng2QWNgbjYxSVNu'@; put 'R1BjJGZVZl8+SUpTc20uMy4vIWRlMTdwPTc/WDAremc8MXlKMHRzdU1IN2QzeWtoaXUwb0FJQnt0XnhlLE5wZnJ6UCVvQm5iNT9wKTEhV1F2LnAvMDIuYVFia35uZHNRaEV7XVpqKUNVSzNJZ0pwdG5FXjFXUkJPfVdrSXlnNkteQkxgZz1jYUorRm4zPX1wblFCTytSSWlUcCVLb0RydUBnSCgj'@; put 'VzA/LkRVIWYhKnpmRz9SfDJUJmNsWyRqRS90SXlSdjpseyQ7KUsqK1A9RkFXcUMsVktMVStuK0VLMzUoJHolay4qL2ZgR346eHxkL0BfIXNQfXN2KHVETEozTXdzX0pjJT9QYE9zNVJuZkZ3Z247KiFaVUtzR2xrT0R6a1ZkNDRPKj5uQ10xbD0zNk41RV5DbXYmKDd9TEtiV1R9THpMZjo8amN6'@; put 'XzlAfmxfX0cubmBCdlJucF5geVlTNm1HPituLjBnKkl6aixRR00scjxfKWchSGI7Ik97cDsyPz18TF5qT3NzNU0mVHJyMUksKWc4MD5FMUV+KmpQa21UUDZMSEBAZE12fjRMRy5WdGZ5Wyt1aFMxRnwpSnN+VDYhQnA1W2l5Rj1pNnBHMlJlXTFNZWhUSkE0dFFYNklCM25aXjgqOCRoWjUsXWld'@; put 'YGN3MjN4Lm4zIXpsdT1fdTFnIzVfRihIPHMvOSZTNlQod247Nz9dciFwY3AqdSpaRj8pL3txP29vbCZ1YnFBXz01UGV+OHhTalN8ZSN7V29LQ3FrN0BAVmghVk4kWTRXMiE1YUgsMzhrXXpGPjE6T0VjU3lKcUVtYz98bXpRMHB8L1lydXV6N2paXj1JfFBSX009VndQbm8+bUhWcUtObVJMMl1w'@; put 'RVJqeCYscTgifTV1cTIuO2w/cn04UkdoeFJ3V0NeZD1jUz12fXhSeEZWZ3p3YjspTjgmeChzUGhWKyp1MEQsaHEuKFMqMUtweC8wXTl7VDlFL1hEMGhpWn5wTmE/XiRBK2dvPT90L1JiYjFTRyQ7VGJqLCsvWGcicjR3QFh7JUhHW0EiKzJxKnRXYWBXeGQyKHxGV1RsTjBfUHp7JS90Vj4uS3Rq'@; put 'KV5DLz17SiJJL3J2TVcrPnk/NHMrTlV8VFl1OEV8PW83b089WWw7KEozR1oiflN5bUIkPDs5fGh3W3JuT0MrMVFXZ20sTjVHOjY3T2UuazdlMFoiJFZ+UTp6fTB5XkFmanBnKVhMTmF2ZGNwYF0kfGYlZC43SEdgQjM4RExVWW1qO3Uve05HY1suU3guXUE1SXA0clNoRXI0a1dKN0BMc3ZxLns/'@; put 'fXpvUyspM1o9Pk44NzlhQnVpd00/MEpIZ2RdKExibSljOHlKKS4mfDQ8entyfkBfejhwJU5DaHA3dE8mPmZsdTFiUUglJCYhQzY9bnl5MEIoRipJeHt4QVViVEo9Y19LNW88Yz5JND5seEF+Nmk2WkIkcTpvPFNSY1J9W1tuT0Y+QFBjTX1Vd0phdkQ1O1teb2RnaiIiWTRuaCxkW1RuKSxfZ3Aq'@; put 'JUJ4JDN7IXZfa2kxYkRRSltNTik4biVgdVhgOGdaPSMqUyxjbS8jSGwmUC4kXkM/MzN3Zi4rOEI9dD17WHI0fXZ7MnFnUWlEflJKZzJgTzpIXzVtIn5vMHVnK2JXLnRzJGQuOHwhK1Z1NVJHPm46akwueyVLW1h3Szx4TUUsU1I6bm9YcUpmREwzaHVBST52Tmg/JXtoIk5JXlNTSX4lQlUpZF81'@; put 'TWY4PS9PK3ArUDAhNCwsRSpxe2R8Y1g6OGIqR2shPiwqajJmSDZ+PFJLRj1yZEpLTExdOXZwJWFJPyl7W0xwOjg5a05yY3FsQnRyIShTYUImQF8oQlBFa354JFt1QEpXNyhyOSNBbGttdW9wPW99YFUpUVpwYjVoTVgyR2AyY2lpdGJzWTJbW2JnZW1ROTQmRHNba1pCYEM4NT15WnhnMmZSPW1z'@; put 'ISshdDUvPnwhMjZqVE5MTzNXcCEuUkJeIlVuZ24jVX5zakxzelB0RW9CbnRlZT1RQXRMcUI4Jl9velk7ZFo5VCRUdDRIV3g7SHJRSkhbUCw0R3BTIWReRkRHUGRuYjFGe3osTDN0U1lgNzVCJS41bFRwYzs5YGM0b0wkTy5mXU0qNU1uTXdWfmIuJUZ8Q0VleGpbTUQiTyFuVkJReHlgaURoW0JO'@; put 'JT9uMnkqMl5EKl4qW2BRTG8odi9xVVlIYXw9TDU9dCtfUWEhTV5sK2p2YiZyN0VaaD9jK1FOXzFrK0h4fFF5Tl52P15uLlZIVV0wZ3Y5XTFMPFQ6YDd9cDNSTUMxfTBAUW0mSTpvZms+PyteTTZASDBGUmZPTUpMQWFOPnE1bDJePWVsYmUhRHFefjJRazM7KDw3YXNVclpZazdkKDdZJkJybFZU'@; put 'Jk88bE5WdV07SGZbNXMrKU5FbCxGUzMyZEVFa0hsd1lOKUQxXn1aMzEwPXFvYFdOWV1oWG5mMEwwQXdER0IzejN+YTg4PWhiISZqYGxQNCthJj9QTVVTZyZBUCYoYThfRCEsVyFvTV5laFlxOXthXnV2TWAhPGxQdTRuQVpvR2h+NDFSfEZII2sueygzKX4lUldYUFJjL3Q4fGozO1NGP2YsV0FV'@; put 'WW5KSUBkTEBOS1c6QTA6eWJNOlZueTAhak8xSHA3diF7ei5LPG0mfDt1UUY7TENoam9GSHd7UFh1Mm5QNWI/RlBGISY/JFFLTHNJNCI3NzZ7P0UyI3BmLk58QTJKVjxXU1o5YzNAOGQ6TjR8LiRXTUBaUT4yXikoZzVkSSpkTXxZREpeMjElNV5LYUIjWmh9NllMPWNdOk1dLz54d2xwZ1V2JnBN'@; put 'b1NiOTY5ZXZQV2lScS44cCowTHplQjo0MkJoZ1AyWStgM3YzXmE4elg4Z1FWNVlDMVheTj9KNT1Acm1fTnJye3w3S2swU28+OFExKDhIOkVJQy94YFRUMDlwaHRDUFV8TysuOVEyOGtbfDxHTk91Sml3NSNvKyRoTUUqd0Y0OyNnXUYlX3tNIVFaZXR9azdVXU5sNUBSflN8b0tFRnRVQTMiK3R4'@; put 'MXJeMUB0NHQkc3JAT097NjVMeH57dWImLyoxRGI4TVBbOHcsPmNKYTdAX3s+a3wzJGxWZChBZkc+LzhDTGklKHkjNHxeezVfRzIreXA9M0Y+Jl1NcDM4N3BwSi5MQno2cnthe2E5VmBPQXAmJExVOD1bPkYjTShed25DS0oqKkBYQ3tAKnlvRUFFYHQ6UVpVMStnQ0c5Pj1ERz9KN0pxWkxtPWIw'@; put 'PlJScEIvZCokNl4hPm8mSEhiOXA/cyM9OiRMQXgxTUteLyN7SC53YyRnY2YycUR+NU4xT1JNM1d4YGN3dFcmYTxYY14pYEUuKkMkUT1sIkYkVHV6TEE1YjJodThZQEgxTj8vSF5wJVE9NFoha2lIVUhJUkkmOTd8bUV5fUIlZFJFKEQpRXNaWHFBcjFNUD9raHl4fk86Nnx3cE9gWiNAN294YzE4'@; put 'XmsrRGtwezZjRV1rYDYkKnVKaStmP0w1djlmJjQ/cT9bQm5mYV9fP3B0NWxGWkF8Ump2ai8wfUY9XXg9WHRVWXhFbnokYnNLUGNTZnRZX2BFTlVdaz46SDFiI05hKUJtTVs2aUU2N1ZtPmZiZ2FpMVtXVFoiPU5GUWk0Oy5sOzRHVng3XTg6ekV+QTAwRGE7emFsTnc4ek5aMV12Qjp7T3Rablp6'@; put 'QyNaJj44YG5WTj5SYilvWj8wdGYoPlEqUnZ7LihrVlpAZHo2JjA1aCo8VnJ+TC8lUX5YLn56R1I4N2VXdy9PN24rTzUmflJTfj9ILDBfSnRXWHI0e1VEZj4kMlFfek9XZDVEW04za1EhV0NHVWxVMmZ8Q0J1TD8vS19AQnxjTV0lblUvT0UwI19SX2wqZlZkL2l5cmkkfUtAYlJMQlBVdDh7YTR4'@; put 'Kld9Ui5RKEhaKmNBYVk0dD41SXdlMWVNJmNnMHNeUy9fLEJFZU4sQDNXMkdILjxDIi56LGN3YXZhdlEqWDpmJk9TW1JJTENiS2ppUEguLiFTIVsuUDNdfGp1KnFRUz5KSl5LdlsuS1IidVFZO0dyPmVnIklFdiF2X09SJSooX2tjUF0ybXcvdDlZKFo2cVFURyksZCVHW0woazdvJiJIaH1dXXRl'@; put 'Rnl4Lix4XncmfjNBJW4ybmRCQ35tKVc2Jiw9LD0qLH1tbyY4WUpAczdpT2xecTRWeFFba0xdRG9jRVk9dDE7XzYvU0FrSkp7QHpsU1BzZzRQODNqSnk7bmxzMWhWMCQsKDQ0N3dzPzNTS0w0SldUSGZsZnJqPSl9V2pPWyNDaW4lJW9OIWRzL2NnWTYpLFs2Q2Z6WytHZkE/YkwuQSZsPkpaVDFk'@; put 'IkcxP0JpaTZuNi86KnpFKFE0RVQzVS88Oj0lZnlzLltjRH5LfHlAaDFCfUQreU0hfExvYmRDV0IkenFvZ0Jvc0NTJEYmSXNWIyokSXlYIXl+Tl91Xjd8REY0NXB4MXglRCo/MVJjLmM9YSx3d2E/QzUydE5zU2pNW3c1blYwMF0jRXw5R1pXeChQQi97MFh2Q2xNezZbN31lbXZWPXxePmQ9fHJN'@; put 'RXdoQ1JfW0NSVToyeiVtcXk6OCVAdCZKQ2srQGhTUXM/X2lleEcpKmtoazptLH0vKk1HZXM6SktEfV0/bj0pRTx6X21QP3Q4MkNFbk5FRDNUfWIhQ2ZBc0JZW3lpTDNqSTJCaUIoPGVMMilKVU9dKyVUQ0JfTUdZSTIsW0NmfEhNMWFPNjFzYCYySGxgIj8kfTxxc251aEZ4SSEqJHtiYkVbX31i'@; put 'eHhCM0g/P3cwP1l8LlhLWGdzVTN8cldpLlcuMVdYJn0kT1ZDamBhTUdZMzl3OGhzKlcvRzVsaUtJb0hwNTIhdlk0TFdxd0o/cTMoVzZ9aD9ALiwuNShFPl5la0ZhI0ohbCszaH1oKX1lVWZ3bEFhfChHcz9aYVUuUztwc186fHR9NjllX00mU3F2cFtMRUVDUzpWYnBlSldZWSluPSNvJSpoVjlh'@; put 'U1ROdi5CaSp6YFJGdS9xOHVJSU1AOHU8WD1PIndfbkU7YXBuaTMucnM/JDdaRWhYNUFMKUJvfDFJSikiP01QSipufSM1ekNkUkN1fSprRFNeSGtNRS9dczZUVjsyeS9hODZ6OkopcT9iT3NWNigpVnpoc2NeXUJ6Kz9DVS9sbUpYTSU6OUt2aWMrUj8xN2ZnWStFfEQjISZmdkd+NDE8QjZ+KTAp'@; put 'Tj43dldye2FtQlVkUlopJC4ucFhNVit2fW9RU01SfGh3PTA2eS90Pz9tYnVMQkxDJkdSSnYxQlJ3YWBGLj9xM1toLm5dWWM9Xll6KjVsU0U2QmJvJUZXUl1qO0owQi9bMDtaNT0uXld7Um51bVUiRz0/UUZ2Ois/SjBbTXwmSiglSUUzU2UvTGwpY1l0fCIldldjNTdsUlh1Zn02RVtPTUhhVTR6'@; put 'eW1XMVNuYj5HQmgqNCJLeFFlU2ZgaGMia3dBdHUwYWdWIm9TSnRFImlgVmF4YFk0enpTUiNNVUZUb3gqX2k7M1s5eUV2SyoiIiQifUNYS1M0ekR3I3hOJCosbkZjdCVMRn5rT1B9RCNNPnd0fDRRK2ZlXmIrL2ZkITZIR1lUL15BVUpuaylxIUAhRn4kWEdVPUhVaXxmUFdnbiw6RDtGOVtvRzRx'@; put 'KW4mQjIzekRzTFopajViZ1kwfUhZYzJ1bE4jR3x3cCw3TDxJbT8yXipSSkZ9XX5WRWchOENdR1JYJThZI0svcV9vIzFqLzxvMjU8WlBsQU5WVnNgWWpKeC5vOEhNdSVfTyxNOmhLaVMiWCtgNzgkZHAsRE5+YV1OUiheeFkwXnt8dCFNY1lUJTR1T2h8RHBVWS9VL1hRalAjO3svaCQlRn1dLjRH'@; put 'NSNEaUdJIWJYfkhZP3FJeEo2bjo5Z1pNQVMoSV08UShYTiU3bjAibSM8WnxyJWo5XjxGQTRXaVE4ZSZBPDViLEhHJGV0RUdDRWw0b25MWz1pPj9zUkpnK0NEWGQjaXVMajsqJWw2PWE8Qz9YIWsuMSs2aGZMcEIwdGNHRXZdfTNWe0AkdEQ1RX11aD92anVJRGw6KGs0VHFYSnksO1QjWytnVSNy'@; put 'Mjd1ZEdOdTZbXWVuIWdMRWE+UktfLCZeaXxJKjBJaTw8JWBbL2JzcEV6dS9Qc1ZZXUxxWE0/Xnx+cFoxPHBJcCJEPG8rRjM+NHQ1ZlhUflZ4PkxpZnZsJjFsI3xNZjRCKUh5TH11PzkhdiYxZlB9XXw0QltGLGg2IXxaP2lzJG5kNGBGbHhOV1QufCw5NFZxOkMoaT9dSnJQTD0qUyxCNzImMUYp'@; put 'P1FGUktzT0B3bktLfWU4UWZEcmNfUEFSajVPWjskeUhNKVlsMUd2MyhzWFJ5REZxakBRKVt5Wzgva0FyL2hTS0Z1VT5UdENgJTo5MzxRI2Z6cD9HKF58KlgqV3QjJH1bejsmOXQheypSfV1uKm1WdEZnYGRLInZ+a0kmUFgoW0dCV1tTNihVJGtQe2JyOkk6Pz9ZSUwmQloqOHZUKSN9Vy5ZOVRS'@; put 'cz1XOj0pKExTKHk+RHM3aj8iayl7PmF8U1p9RG5PWXxKYz8oNkkhV288UShoWyt8djxvNylbJVdFc09ZZ3lxTUtGMjpzaH1dJkppViI8KX55PjM4NlB8Ujk5NjVaTy4oZjRhMSQ6Q2YqezYrN3h1RjAhW2puRzQxX2pUUj92P3FUUlRvU1MjXXhVNT1+dF87P2UsenZsfV1yLl47bz1OL3d4ckxM'@; put 'P3p3dFF4eyRxOCw7REImIm1lT2B5OCg/V1pYbDlnb2k/dHEuJV8uKmE6QkwyVTkiJD0weTVXYUluV2pCdWZAPVtuUCtLfF00djt2LkxUIXliKlsrU3plZExGW2xXdHQpcS8oeVFjQiEwUHVKLClfPWlyYEQ0byZ7Rm59KH15PUVqWTFLL25VPkR3WHVqJi8+UjZbLz5eO0Y2YV1kVT1CdHttRixU'@; put 'biFkaURSWzFeVVYxeC9ueWh3WnN+JXIyPUtUWDtLQSpAfWIxaDFEeHJXXj8hYnB1Ll1rMn05MmgzbzRfIXBsYjh1Li5MZCU8fV84Zk97amw3VFsrJF82O1RPQn4wK1JNMD9eRnY/Iy4/UGA9d24oZndQN1JqTUhFajZDRz9VX3x8P1AiL0ZWWG0rREs0THF1RlIhWV1DNExaeD5OOF9Ibi51VnY+'@; put 'R2FvLnopcT9WQl56YjkqJElnNXROcyokST1pQDBBREY/RjJGdy9iTWMjPnRPXzsyZlhPdjk0UU88XylrLzhqKkx6ZUxbPUo2a15bTTVJLDo2a3FnWmIwdlpFM2tEKnZBQmh+UU9OQzVNR1ZZKWtJdU03X2Z0Kjc4eTNpUjM3KF1tUGFOMnZFSip+REAzQCVhOEorMjJubyx7TEd7Q3R0L3ZjaXtX'@; put 'TSYlSyJZanx5NVhiK218cixGfj8pSn5PVzAiTHtKO1A8XVhVYE4mKklGIiZ9YVZgVXFJQUl8SVlVLnM1ZmdvZltkQlF2OXBOSzpkNHRLRWRAXWRbVjNeb2pSfXFoXUJFUTdQOGNsZSREeVt7ZjZxJHAvRypdRTJ1ajAxX1JfQS5kWComcDQ1LFl6Ky5+ZyRgclZAYCIifEcvdTg6NDEiXUh3SWRA'@; put 'VmdwYVQpbXo7fWorMWtwZCRnLl9gNjRwL08jQFlmbmZJS0pJcnh4SD8rUXF9STZufTVMeXZJaTI9eVdCcmRwInJkYXc9dFZNYU9bL28vPF0yP1RWPzk6PWlOMXR5M1ZZIlc+OzBRI09PQzg5bSs5ITk7MjNmNlBEKGNvYllBczM8O24hckN8bVB6JT1sNE9FcEtaKTdAe24iSmM9e3x1OSR2eGdV'@; put 'V3tjKDo6OztUdTxEIzpBfTUlSy9zLzNgNltlcSVwSGExdVlaPnhkSlArX045WSU9ZHhKMUl9anA7Z1IwZi9ZPV9ZZU8yRnIkUVUjSCgxZmNGN34pKGlZUGlVSFZnK3lSLntRbnRWfVsoc3c6Jn10aHNaJUh0VSQ4Xn04RXNwcGl5YFVLQzB0XkcsWEQjYm1JSDNgcVdPMyxGK3wrUlIwVnxweWcq'@; put 'fX5mamtyOzl2TzpPZiM6NjVRVGgsfT1NOSYvb0M9eytuYDExUVUrbiJ9Iko9UWw3Knt8YXdrSVB7YVchcyhKIVp2XyhzMWlMRUJUTEVZT2cxWUh5Y1RYZnd+Y0osY2skQ2k1UTBjUD9pTXpZMCxSPjAvSTgsYCFqJV49MW5FNmQpa1QkZVNhZkBlbHNCRV1ZN2IvcTNtfikyWiRlNztkQl0iQjYl'@; put 'LGZyO1s9Kj8sKkV5QisxJFBFaXB8TUReVW1iMC9GZ2kxe34/UmNYKXwqTV85fXchTz9QWWp2Q2hNK3dJTmlrb0dUbD1dUkNtQjRScjJeSStEQi5MeG58Q1p9P0V0RWp9NFFmb0tkMEM5Jm1KYzpwUkFsKSE1eztbZTxKX0VPJV4+VC9eRnxXXnBBdWUsQCIhZ3R6di5DW2xxaW5DTWo8YG5lTzt0'@; put 'bSppMGcpX3wxSUQpOGRQdkhkQlt1PmB8dX1MbU43REo9XWY8VVgxLiwlWWdtaF4hMztLei90OCE8OT4kPDlPUmZlbFk0VX5sX15LMUNQMmNCbChuZlA3SypSdDNWb05IRTpAQDRuWTI7OytERTtiRmYiSz97dH59bSx0TVQ9ajo5Ylc1Z2ckWDcmLjlofj4yY1J1Mm92amdlZEptWiFlN0RyUHxJ'@; put 'LiEzVz08NSl1YCQxbyxMM1c9amJ2ZyxZcFE9OlB+MEBNXmhiTW57dzBTdVNoOlExVDh9MF9qQFRUbD17fWR6ZTBlUkZGcWVPJXBSI1srQF46Nm89ZklHeTYrREsmJWgzcHxhPTBtYSQybWxhcipPOF53YmV4bmxkaSpVeShbMDBuVU1MP1VkSjdvNFMxKzIzYls9R3xhdmBjfCkzQV14b0ZMRyg4'@; put 'c3FWYlcuJWFXL1VSNCQlYldyXWtXVywuVVJNRStpKiVZe21VVFBmMjl1N0BXO3J9cFU1clJ8UW0kfEAoa155QzoqNDhnfD1pJElRfXEyLk42emViUiQ0b3Uidz1zUWY4ZXk5MypweWFbSG53OHF9X2ZwdUM+ZzJSYXNtT3dAdytJOV9JSUdHZFFIdXElfkhgRlNPRntIM296OF1LLjtxaGo/YXEw'@; put 'XzYvSnAvXXU4I3ApfnIqSHhHYVFVZC83SkRWSVQ+Tm9mRUB4dUpCOFBgLip8XSxHZE9FM1FZKzZGZDleJmQ2L3xaT247aTZBM35OPUg9aFBdamQ5YTwxXkBtT21FTHw4e304VmQpb3o9SkNKMWtGblZqOyFsWFhZP2d7WFVGXllpYzhZdk9INnB4QlFINlkwWm1fXVd1ND0jdiFdTnc+ajlRPE1f'@; put 'cFpVVT5LWSNnNCw5XnEsKVNKYTg9QHFmX3J8c3JqeHBHcHshXUBiMCVNe29rbzNTVVRdNmxQbyN2clVzSEBqOWNzOT1gcmpJIXBRNjltN057WCVabkNIP0JfZG9tP1J3N3pgdTA0ZXV4N05MT3VgJjw5ZipwRDJGNDZwaDw7Sit7ImpPJEE8KEJhT1goJXB1TDJybWRLcUFuPyspWClWT0AkR3ww'@; put 'cUU4PTxAQTJlblZ7ZkQ8I34+P1RmU3VzcDNydlVTYjRtKTxnTSQrMCJkeUlMeDNla00vWGcueEpGL3FSLywpTXIzd2ptVExvKjI0XmZhc05yeGMvM1MkW2E7djMzOV5QQSNfLGBIQGhoXV9Hb2NDOCVwO2BLMTF0KXRvM3J2ZU1qRm45OzI2d2VsXTFDUmUqWSF1T0d3bmEwOy9ITT0iOSNadFBs'@; put 'NllRXUxlfFBfTnVfSHFvVjA6K0JbWiMxamR8OG5HXnRaSCsrTWpoOUYyWTg1RGowI2BodGdxSXtoUCxUXkc+JWdUXnRaJHJaITBfLCE3Zm9RQ1RuVEE0M2BXVUdpenBTRm5HXUx0UmpNSXcjR29jVzA3O1VsKnpATXoheXpva25sVUdNKjJrUUh2MDkjOmF4RUY4T01PWXh0ZHpMVFY6QiplKnp0'@; put 'TlF4azcpPkE3R19fLGtCL04obDB6aGFOe3tZKlglSC47eWU9a041aWxjUVNOIUl3UkBPQ2F4REMrPGhHQ1d6YGJuKF19OG9nOj9kUl1YdlkoQnNvOnNefkVUJXp0a0U+VlYkan0hUigpTzh5fkByaSl9KSZzTC5DZ3N1OU9pYUllTWpkQmZvayV8OVl0Yj1aKnt8KV47XVpDRTtTXXU2SDdMTm9k'@; put 'Zz12amM6UX1oTVlUU0ZFQ3dOdUE8ZUdEKVt2RnRbTm5ObXd3TEJmUyhmTmN1WH0yMVRCLFRecVNjMklROUVjdmZbSHFhdFgpMUh6aWNyXmd6InIpUXQ0aFU/fml5UFNPJFAycHlAeVAjK092MFEkfSFERT0zTHA3YmBIZ2UmNUJ1WVhYNkRuOUYzZndlbCVxJEdXKyFdSDR6ai85VDpfZXA1d1BE'@; put 'KHg4M3BIaVd4fklFUn5aJCM8YDlPZX1ASk02al98UHJoeXpbUV1eWyhwZ1s0eS5FXX09PFcyQTB4Wl0jREw6Q20xWH1dY141dW5rPG5Od3R4dShuaEc/NTprN3pmK2lxTzBzWUtRc3Vxb3JRd0l0e04kU2xVSSk/e146L3l3JkppcXdPR05BbHc1SnBfTiRYbFFBY0h3W2claDpGIyojSzZqTEdN'@; put 'XmxEbVFGUzdzW3IoNEFFVzFZdElZKVcjc0BJbTJWWj9MfSYjIkJCSHh7e1hVSVtlNSFGeW45bltyZzl3aVtILFBifiUwRzNifkVRaStKPGtobmBnMWdWblFTbFJsfGx6Xm8jQlszL2FwfjJhNDRWPy5hZjhbOi5pMGNRIkd3fkxPOU5na0smYUYxdDtRNEQlQzhKfGBJWnApYXA+JWg4MWpycmA7'@; put 'PWlTaD1qXS4iZl1WKlZlZno+RWZZWWZBajRSMSNnN1Z8clAifWAhYlZaYHtnI2ouOytfLEd5RkVYNjtEY10+YTlHcGZuVFhFIjk1UTNPUz5yLDp2QlRnIzcsa1Z8KzIxKipIWyhrXUdpVypTQD9KVzg7fHI9U1RbQGJuJiV4fl89YiwuUj5XXXF+ZSF4OCRUPSs4UXBdZHJ0MXFBNFJXOjdhYzcs'@; put 'aG5qeDNZdG51JVJwYDN3THQsWCQxP31gZDdNRFAkeFs/S0g3Tl9tdCtvOEVjUkYwQ241YC4udD5Ifl57WSNsTyVMOXdIKVt6bD5GdVBpWTFeS09kU0dCbmdDME0qeyU1cHZ5Yj1FO19NJiNxMVNwOmpCbnlONGd0U0JbUCljQ0VmWX1YUipPYGpBZ145ZVJwVUIxMkdYYlZfR3U4REgoIjYyR0Ms'@; put 'ey9DUSo/S2hPKSpqbSM3LGR1fnc7a0sxJl9DUSpPaEModTxEcFpgQktGaFAsTEB2NUNoR3BaYWlhRn50Il19Mj8qLG0hNmMxd2YpTjp8VGhzQHRiSSMkMmZpUEo/MXtSPHFPSmVpIkksLjAxV0NGOiNqVC9DT1h3RnJbSXFmZV9zKyNgLFJfIT1WWF87aj1VY31fIWlXSW1nXjBGeX1CMmlQRyR9'@; put 'R2x5OWBNU3VgND4pKz86YFYpO2RJYlMvfDk4el9efSJLVmlaPjFFSHBhZmYkfWM3cEFRfFNmSV8vQiR3czBnakpGNHtZPGlHZltjPGo7e3sxb0BHQnVMckx8WHVZTH4wQm5gTzVeQ3JlTSVJSW8xLFhjTDxsezU7NzUsR0NuNExUTFRRfloofkQ1WzI3ci8qMnZwSmclaGg5Wnp4eHg+Qjs8Q1l7'@; put 'QXxda2FacytQPURjcVgpVzdPTj1DI290WU9GOj8vYUAiQHhIb3pQaUpic05yWXQ8SDAuWnJoZSh2JCNaYjAsKm1oeHAkZWhJbzN7WTdUdV5XfEBXWVJWKigxKHtbZFV0MSQiI3RZMV14LFFScTVIJDpxW1Q5Wz5LIWtUdX1gUzVqWWhqayN7MVVaWldhbDFFfkFkczQhPS9iZCIifX1mNC4iWkZ3'@; put 'WG4sRTVkP0FJWlV8diNOWyJgSFcwfDViRDRxWVl9elpgPlcoX3VtaUhdNGQvX0soNFJDbyxDcmNjL0ZbKElifVFhMWxgSWh2a1ZVX1tJT0M7L31vd3xle1Q2WzdoViU6L2EucHEoXVZNc0lCfl4+PlFAbjJ1ZDFHME8sQnBfdEdual46MytbN11qaiYzNFFGTU01ZkklJXVhPFpsaGZIYylAPUFZ'@; put 'SC59enxdSDlpWm59SU5XMWQuZ1M4K0o/P29CJmBDPnBCJmppTm1uY1BiXlR8Kml4YiZbeiIsVDZ5dUMydGkwM3tfcmZfNHtESU9TLDwpej51IygzMiIoQk5YbnR3eU9pLHgmQEhsPHRjRio5OVFDWm0+Xm10dWBDN3xQKVRbXzUxXTxfSGlKUz8mQm0qfUJ2RTJtPkxDTF9rU3hUOH5qcERZYy4s'@; put 'Tj0qNFZKZjI+Ol88PnlMLF9XLzBrInVgNVAoJDYmXzlpJX13ITFKc3BWZkIhMTgsZUduc0VfJVcqNFpiSWZiT3RKTVFZL3llOjZhTygockdVZEViOTc7YltBZ0dFNmNJRmo+ZjxhOzRnTFF4YDRRXjxxdTBPLjkiNWZpMisoc01Ic3AjJUNWJjReMjNSfmFQMnQ2WS4jXTRfNWE/Lzd3Oks8Qylb'@; put 'fEkiYD13djUqYF5vOjl8XXx1ankqUVl3WmZQMENWPl9QWzh6InVpWCxYV1tRM15IdERlcGR8N2duVWswJTU9eyNxYClKY1lae2JOLF56VmpYL0JNNEJNQi4qLGtXRFBXInJZWyp9TF48d2tHcCU1VXAxPC9Dal1TakJIPz8pV1AmNHlQWEBQcD9tKFthYF9Rd0A+a1tUMjs2JTBjNWY3R2R2QEsk'@; put 'SylMP1tqN1M8ak9uQmQiLDUiV3c7a2kxQiNDcFgueihCKFZzczVoPWdYPjpadjRFcip4Z0khIXNKfF5gRGkrUU19XXJUe1NKTHJ3b3ZSa0pNP0V9WiJickpxWjpNbjxASGRSM0I0QW9pb1pyVXxve2spbnJZPzVydWwsVFlJW29eVCMkOUU0ej5ILFdvZ1krZC9UJFU1dCU1dEA2Q21GZDdFQGw4'@; put 'X19+KiZrX0hnaUNUbWwuR1IhYWRQPGt3SDwpRTFTODdIbTY2UWJlOnNJQFVYYDYrLy5mTVt6OCVHMyRTSXJFWTFgO3ZhZGgyeFJZIWVCe1NdbHtFa3hHbWVBcCNtYyElWVtmMjsuRXxNfUBPXltLNjYuXz5geHRAc3MyPnpgK1UudmZgcWU9e11iQ2M0NVA5Iz0hTDA7bTdGQEl4ZX1LZUQoc1Z+'@; put 'KzEydn1kW3A2YVh9biYrMkpBPE8yO1tnczcscC8jOCxaRk9hQy9aV0QjWz8oWFt+fV44aWNecCtSc2dLUWcqbX19SU51Pm1Tb1JXJEUiQ24lKDIxNjpEIWZIdmhGfV12XkZ9ZHMrSnNsT09ZOl47M3FELC5HOiwsUHl6ZjQuI3s8QnRpdDZTMFgqfVVdX2kzNSNNMjxlTF1ETnlLWT88bDFvd2JA'@; put 'Mj5yIj1TdHtERyo/IWJYU08yKSV6d3tfa0Y6b3oxfFlbUXNwJDE5KmkzaDQ9RmRzU1IxUlhPfV1rWHwpPTViZXIsZGNTKH1JcEklMVtRc3RSZiRHJD9+YSl0IyhbNShVcURzbjJoPEpJVVhPPTUjUzNEfkJ1SVtoZk5NdEw6OFZDd21mfUdQdUleV09SMVdyJjdrI2t8SlU5WkptMVIiQSJlMmh0'@; put 'dWBFUkVHIVgpPldeO0AoaUtFPFlyTU07SmlyPEt7RnYldzJ7NkZTZGljU3w7QHApMFdqK1VTMmovI3h+JDk4aS9xWUc+elhVcHRhaUQ8bztjX3ZEblopYm5nTDRLPi5sQG1FU29iT1B5bGJiSTQ8TTF8XlpqS3NgLiJ1fHlzNmovKlQxZCZHIyhSaVUoU183ejpCd1ArWjhvWCQ9V2RvT3JLK0tx'@; put 'KTFTZG0pWUUqRiRxaFgqTjtyeiV6an5EIyJzL1khN1lQcn5MPCopdyYqNGVkXlhlPk4rdUZNJTxDJnRYViorMn1gI1phSWhTamBVeTB9JStwL2NqX2BHT2hTTjpHbG1kK3VaYGJjcyZ6YURQb2kkdTlZdGIwP1FFWSN+Vl0hQ2tvQjZCTn42JEAuczpXWGlGM1NYMnZVUCNzUWJhcDU3akU6ciZR'@; put 'Zm09RDo8bFFkbEwlSn5td1B7Z35od15Kak05dl5BcUU6Z2MmMnAjX09BUDtUUWk4cUVZWTVrbjBKZ2kxNiRTKkUxU2x3YjIpaUNUZToyNmMhdjIkU1liX3RHMEVhQVt8K1IuM2Zgbzt1YmQ0Nkl3Tlsxa0hbNCxlMF4rZk13MkhBZ3hQYipLQkdrViZhTSkzQDNISGEzY2gzaGJxXmglXjxWJDtO'@; put 'aFJnbXJDeSsleHVaWnEvYnN3O19jNEdHQlhFczhteldWWldFOTdRcD11P3ZFd3NJT3E4YDJXfDkjSWA/PUtqKVgwe30qTmRePHQjfTBDcGA3dEEhdWAyaDZDXnEwTWhOU3EpTVNZYkRwQmEsa19OWip4T1RmRkpZaU9dQjkvUllUKWJjXzwhSEFdMUhPRUxOUnlJOHEqUC9BTzNraHxifHl1LFtp'@; put 'eFBEcU1IYGdJQ3pPZjt+Q1lTYzM9N3JQR3wrQFZNYmFTZ2w+VHRfMl8pSEN6S3J9Z0Q7bDdeNHA+ZChtYGdJQ3pNKl58eHBZL1srWWMrZ2d7dkM4ZFFWMHBnVV9pTW9Xa0NvRigyPVI8azZ6QGY4RVIkbiRuX3J2XktxKW9JKGVwQ3EzXmwmZC5UQCg9dlhydm5kcG8/bSYwaDpVbjlEaSNMRlVb'@; put 'UiVvJE9rSWFRVlZ5JDpJdzMjVkt4Ljx1d2QyWz5yU1oraGpCcFYwdCFyUVZfSllLQjo9VGl8aHx9JjM0QzloaD81OTF1ZzVLVUZZRjAvYV46XStDZywha1IrREBwR2AmSF9kMnQ7QT5jOHpVOXF1XXJATnU1ZzF9RSxSZGx1MXZma2MiRWlzQmZtJTpJQyY9eDQrSHRGPHdedThPKjNOeSZmUkk8'@; put 'cC5mKl00On1iTlUkVVkwUXBhNG9HfVtEUihYJlUudEorSktrP3RNJiZ1T2YhJF9qN3wvO11sWzl4WE9KdFp3Wz51T1p4di80OypNezNBNG5+cUlHdUUpIis0MT8sYms8bk44NyoxQmR7JHYuXyNddklTXlBeeF9HOixTUl54XzQuLlVSL0w2a1pBQG0jSylMb2FIMmhiMGkvSl1Vbz9pW3xdeWxo'@; put 'OnFYRytzYnY9VXxveH53QGVKKnp0JltGdCsoJFpzYjRtI1dafUQjQ2YlJFsyT3hnUGVSTlMieHExXk5aYHJ8VVQlWVtWX2dJWkcxP1ZfckhFXShwfCVfclYlZCNgS2NRZV5dVWxie21AVipwaWlFb2ReOnFVaUVvQDpYZjtgXWA3M1JMfiVMQkFIcEE9K2h4JClBKDJwOjUkcnIwbloyR05ZMmhT'@; put 'fHNET2RgOSg/RGNSMVRCTCpeO0p9Vlt1VS9pdFlLQTx6RFc/OjBzaDl6TT8zVFtNZFt0WXQ4Wn4qYjswbktDUGpBdSJMLjJ5PipURk5XdFl7UEdwdyIyN143ems8SHV2Kj14QSVoVygjMzRAcn1yXXVTb3Q9PXhtZnFCclojRWZ4aytxKm58UWFTXWlqQyFxOmljaFBTbSpOKlJxclZ0WiNyfXk3'@; put 'MW5ZK2dkI2g4WipqYW1gcl5ZZz0wbSk5YmdkOVs3OWQwW0FjbDwrSWhVbn5ZO2toXztHNlkwMGUydVQ3dyVIPGRVS3hdQDBhR0spVCxIRTMlalk+QTJQfX43aDc/T1JeekAvY1R8Wm80VXcxKFVPalQlXkgqeytDREc/VE5NdTlCTVR6dyMqaUxFQk9yUitnTEE4OyM0JDwlVHR7IzRwJWJGd0Va'@; put 'UlhlPVdES3QuNSZ2JWpJTTkyNUVQQzlXeE9hZjVOeVM2U21nYU9PWmtmUjxTMHNlMV9JcS4wJVksTl10RzJkKE4yYXx7Ylk9MWlBOD5LUUUoUlNsO29zYCE+QE9EfmxdcmoodSFiI2pAeClmWkhkcCRMbF9YQy5Pc3hbaTk4YCZgemh5Ln15Pl1XYV5tQjswQCYmRnZCLEROImc3cEpLP2dYVjc4'@; put 'L2VYMEdzcWRoM1MwWXl8emwsZDh5ISUzM2gqJTV3c1R2T1J5QyMwM1ttVTswQD5lQWgyTi8wamRBZDtUMyMoWjYlPipUO0c2JGUjaGpWVXB0MiFNKEt5L0pAUztGQDB0TG5rQG1wZWFQSz9vX2kmdDVmUnkkKGVKfEV1VHRFYiE4PV4vfWZCbzFAYDFoeGI5bzAzVVVyYW5BYThLMix9WEA7JXs0'@; put 'ViE5aEQ4UV58aTZpPmhdPHw+KUdzPVo5emJgJDpkb35eW3t2PVhfOEBgckkzNFNUeTdALGMoe10rYjkoOVgsRHFRS1lhZj1lXllhYEBMMDRReFQ6dltZTDVAcFVLcEN2OjV0JlRycGgzSyN1bnFDUU9CcHJwUEtbJkMpZDx+WWVYbSttZHhYcDBbNyNuOCVvZ0ZJT0wvTk14YXRKNC5NPl88eUI+'@; put 'c1F2YCEheXxYeGoyc09fZ09iTUYmWVB8Z1VsYWhxK1klU0EzKWAoISopSktHRFZLK0F5LmwuKC8oNWUoZkl1ZEBhPH1JZkE9YEZOfWo9TTMlVSU0LC5yXWJPaXxZe2xRVns/Q2RfcWQweCV0c1tCYD1AUTlyT2JRSmM6aTBmbUk2XXZ6WDMycD0qQipuTmkrVXw1SU02YXFGVk86RUJ7eXJuKnMl'@; put 'VENHX2lkbDRbNi5sS0kxdHR1JlFCeS48eHhkXTRhdG9idn53fFk2NW84OytxfldNVURiXnE/NWYlJDo2bjE1Pm5fXnYwTVVmfmMsaV11NC9IWjIifHkyRSw9bVYvazdoVTJFb0thPHNfJG58PkVvOF8zWHYzOHA5Z1o0ZVBlXllvVE1jOk05cmoyOntKX2U4S2hVeEsrUnFoQ3BZLyZgdnU8Wl0o'@; put 'LCJ2JTZbISkjVDMzRzw9VEJLUzRfRXlCZGNBYGNnQTR8JmBLPmAkYkxtfGUsSUM8KjFKRnRrQX1QaVtjdTRWPlA4di5WbmBfJFFZL3okPTZxWC5WMHh6eEtdanNPPz46OjVZSDIsOHI2d1ArdjJLLy90YHAyMT1wZDptTXl1V01xdXM8L3E6JVpsd2FEVWdTV25ERFRbay41b0d0YVUxXz5ab2xt'@; put 'eE9wVmcqMyMyY1NieFtfXy5BPlAhYjs9ST12PjIuNDQ6ZEovRkMkez5VKEtXSSYqdG0rM0wsLEFpYkRfaC9gaH1AaDVMK2QvZC4mY0svREdkNUB8Q3BvIjpwXnJAUjFeSDptOV5deihKbDB6TnNUdi99NWBZXnwpWXg6KjRvV1dkRi81Z2N1Oy9ObGpkcCxLMmhmezlSdzo6Tmw4NlM7fSU4Tl8l'@; put 'ZzVodXEuVEs/bGFdYU5dLmw4NTc1RGlCWnN6NGJjKWV1QzddXm9RW2JwJjh6cHNmaHh0PChXMXxMUHF1b3Z8Qzw/XT4uaCxIclI5RkFUaSQ+MjkvTCNGJHZWOUVkalA/d1BXcWhJQV5RPkBENVtiaTg8Zk1CIiN2Lnw7S0t7Z1s9MEpPL0Nxc0wjKndbQENFLzdzPEMjMDh+dzFXfCxHKWY3Wmcl'@; put 'anBRMTpdK0puZUNHTng3fCZUQ3Q8RSljPHI8VUcoUn0qbXdFIz9lNnsuNSs7UXJnXlF6ZjJlUlZ8a0UremVZT2lWYT1GOVlha1J4OXAoSCxqUk1LRjZsUFlLJUR0ITlbQ31pNFFCMm00U1t3KShuX3w3SCUvQztTI1J4Jlhlalh0O35pclQzOVk5SyNoMyZ1Q2htWkNWKGxib3NLcFkoXTBbfW9L'@; put 'R3s8Tjd4JUJWVFt6P2JocmxUQEdfPGg0dTdmMmReclF4eTx8bHt8PFZnbXZAZ285VUZzcD8yRktRT0gzK3Y7PS9meHtVVSxnU3M0YSk6U1c8IUMzUjYlbVBLWSxYW0sodTQwJSUzKm9oc1FVR1tobmY2VDhHQ1YjeDN9b3hPVj4/SV1te2Q3cVE4ZTx5YWt3dnZTbFFZS1F9bTJgSnQiVTI3K3Av'@; put 'ZGFIc25yRktmPy5+LkdMZjMzQE1XNjZZYHxEZmVadyxQdj80PXl8ZFUwblhdIXIvSGYmTTl2W25YbShlVDl7bUlmTTErR2RVaD05N0hHIyRJfVJuZnRVQGN+al49MUl7eXkuZC56PVJrWnR3Q2lJK3IyZjQ/MXBaNjBtYDZAcWJfcWxbYUAiJWd5KSFGcS9kQDNbfWVFPUldYTBvIUR9RTFmZUFe'@; put 'MEcxYVQscG97TXY+RTB3dUtDPThfQVFXaCU6NmFmbE90JDBjKy8uOC9uTDl+W0d3VWdhVHlvc3E5QyJqMkkiMGI6RTZNPi5mVTl9T0JMXyxse0RXOll1c1F9K0VBNipwd3Rsb11aX25ZXTV3VjhiJHtNNmMkXzdPJVFMV1UoeHFgQ0c8RSosSWtifnQ3fnAkImc/WT90e1VFLEtYWFlvbUx4ZS54'@; put 'Ul8qdF5USWl4TFZxWFR5d1Q2fWtmYm51OVVtKzVFdil0IVZGcmJQNyojSVBKNEk4WUxMV2FlXS43fUlzMWZhKVFDWCw+M1JPIn0ic2NZWUooJkcrSE01ckk0R3kvJlRydCtJanFQVHkpPUhEMmo2R0dzT2BILDVbTWlHamdmYmtFMGt1Intreil5Y2peekkleG14MloiTi9oJXQxa21DOyhYTzds'@; put 'b3d7a2t4ZXEhezIrIiJ8W2EqWGpbMkJBIUoxQm50fFtMTnMmZUpFOkl6PD5oWTxpR1hCWVBYcVo7NmBKQVFqOVs3ejQ7TXh7NnkkdmolRiJJUyowe0opS100ezVjbjMlfkJbKVBHJDdJNVlOXVd9VThZIUtFdH4jV285PG1pe0dEey4xRUgqZVJPVmNlWzFESzZIdz4uInFPbkxkLDddQkc6ZDZW'@; put 'X01Zc3FpdHlEUE1UPlNkJXBHSVhpeFJAfDVxJF1PIiFCJSRxRGouKGNLTDN7ZDwqUjNnWUR8WSJBX3xLKjxCRVlzX214MkszKmtgbFJjNHh6MkIqMnJZdWtDa0FTUiorU15CLFg2cT9vL1FdUHgxfDQ3IXF7JDFySTJJTlRIKTRjWz9+MGpXTGhPc0VuYUBZRzZUIXp+eClIfkVqdThya2c7IkZF'@; put 'fCZAfGlwUihmbmsvSnM/ZU8jQElYdihQLCUsV0ZtYERAWnlSZ1dmUCwrKU12YUF7IUs2O0ZOJmw7VWdEQlJfTm1gPnNgTmlkU1lFMGowODtnU3IyOTtWSHZZRVIkS1dIOWd0PmZOeEBdXk5AcnAhekVzfTczT3N2fjo8U0hONVomcE9bPSNITWhSIWNAO1JHNzRYPkNmRVlDQlM8RFo1JC5rWkUs'@; put 'cSheVFA4Vighb3BDaSlJR3BVLFMyYWtXJExuLCFaJTQ6dS5aVUksYSUxTnY6dSp8NTFiUTN3JWQzM0A5byFpNndNKFY1YjheIUlqVzFSMUg6QExQSkxMU09reDhrb3NRejFFRD1JOEVSY3BxVipRX21+Vng9MFVvZyN9PFtGU2VNKkFfczZbWlVEQFEyaH1QbDFpKFpMYUNNKF16aUZ7XzxRRlR9'@; put 'dmxKaTJ7PlovcmopRkVvUFgoMyZqK0JrcW9raSFKUz4zIkt3IVR0YDBnV245Z2w6Ik81LyVjSXlFcUtSezVtSkVkIjNPUU9oP2EvZ1RHRV0+I1hjcGZHdlduJkp1eUk8eDArJWQuKi5oRD9VTywyQEdTe3skfn0zPiJALzlsOmUmaXJHeEhdOHxbLEU5WSs2ZFYmUzlJdmNhUSNmaXh2YmkqSlVi'@; put 'IypPcGFgT11wVURvY3s2bGBDYiJvZzkjYXpOak8sfT81NFRFUmY5KmM6P0Q8cTBaYUxnbTBqNk9DajAuV1syNDprRU9hMTEuTyhSVlEjU2gxcSJaIjZJT3VeVGNIPW5QSn1NSW1pQ1N1UmFsNGJTUHZtL3JiRk4wV3RFQTpVUXNiZipqUzRJRk5+WGo6a0UxNVJCa3o2STIifiteVEYwMS9abHNF'@; put 'O0xfOXVKOEU8NGpafXosV25VdEoyKWJCeXooYTFFNT9ldE4qTkowIndfUFIpXn5SYUNHeihOWXR3WitwUmRhWW1uI0o3WHw5PCh9dmJTTUFdPkM8d0FvS2pIb3Q2SU11SjxQdGpsfHpJemZKLEImRmV7MVI5SiJNMGlUSFtoIXRjImd7aTZLYUk8VnguS3lDPnUoJHVKYkh5TDlZQ2Qza2FDQzY1'@; put 'OV0+flFFRWBaeywuSTIpMnU/diNEREhRQFtDbzQsQ3RkN1g9JEJ0Y2dSY1VZIilHTz90YlNAem08eDc/SmJUNUIvQ2JUNnV+RVM/XTJwRj9uQ0M6b0VhJFF+dndHI1g5a3dHJCJsQ2pMLmE3eV1uKUVRP35lIVdqbGMwdkxzYkU2eFBARiphKmlqMD1ieGdmLG1DZW5mSDFhXUM3bzAvZkQ3PCNs'@; put 'XkQwczJFVVI6KkxSSmdQSl5fWFVSZGFjVVdZQm0hdUJZVX4xZiRFa18+TTQ1QSh9RkYiQDspPFtpNnlVKHZ5VT9EX31lMyRQS0ZpbDpjOFtfdV9WMENLcCkwJTpsVXN0IXZiOmBreFVJVVEjIU0xYz8maXozWntSWUYmbCRhPSVuIWYjT0hnYDhpMWY2MWlQJjsuRDtbTk5GWWNQLC5EKlAjc1Mv'@; put 'OGsuUyMpNmtlUFsyNUBEaGt2aTFmLDIsZzdhcFF7Wy45NFQsZHBDR3cjfnZ4dFMiUFsiQVRHe1duQHd3PUhPIUxvLjAlWE9UUkJrI25DMUMzfihNNHU1PGJVLi4qSklrTTh1Ll0ocHVvXjl+YSNzQkpBbGdVVT5eOy49fUAvaCtMeG5QWy49RnBsYUQ3WDw0PmovdHM+RS5fLy9EdiwqV0paXTow'@; put 'Y18kUT5qR2Nxa0VBWW9Qb3pHJE9nbiphdHtndVY7MHI8Z1VVTyN1YGduVyg3IV9ddUM4YS9rbFNtKFtnI1dMVkVCfUBCKC97Xzowam4/Wj4vOVk5Skl1VGt9PkkwM2ckby5sazB0TndhcUUyJF94aFZnaGllQj0+anYldmlyMzEmX2hbIkZSWEhEKD1XOCxscDJ+QUNHSm4reyhZSW9Bd3FSeCk1'@; put 'L100JnNNY31XO3RsYldhd0MkVFVjOGZqR3FIKnxGKCFNMXd4Rm9QZkRIYD1pMlJIYFF4MXJyJDxlPHcsfX5mMHI0NVlaWi40KUs3e0cmPVJUZF48OWNeelUkc2Vza3NLSnc7NVcpSmg5IiNlPXZ1XlZHYlpjXlgjZz4vYmcjJHo+NntFRChoel1IVj8lNGUsN0B2UkAlbnsqWCk7WHIvPyYiOUlK'@; put 'Vz5HIXMzRSwxTDs5On5ValRuNjR9LjEpfVEidipSOlhMMVdyPk5xe2hjemgsezR9cW95O1AzKVckKD8lbW1sYmFTX3NsfTRdXTRLWWJJaH1eZE9kfGJoXyg3QDo0diJxc09VMWw6bTVVW3Z9RTl9U0N+djxfeSJpeyE7RDNYNlNFbXhlPjIkaDRiI3oiWENdKXdAXXcpZEZkYyM+WnZaY1JGOVp3'@; put 'd255QTFFZip4bUR0e1NdbWc6XWBqKjEyPk96UWhOMWZ3OCpVJjBgQSZjYzU0PVdPZlYvK1F7Pm9rMVlic2hzN05FJCVPQi81Nmh+NC90OnQ/MXJaIzZNO19WYDkhPGpgbXEqb0AiRj0zNCwsfWNtVVQ8WGw9ez07PWpgIkN+RSZXRklQdGhva15RfmYiMnBgcEVUcCI8ejV2NGMqZFJjempAYmoo'@; put 'TjtfR19VNzdrPUliKmUsLHc7UilWYyhKMVJUOCFJLnE/WCsoLH1RKWMjNk1tNENycTdDVXBsez9Sfj1FImBUS1UvXjJdWDpXd2wvUFBMWnpYPzFiTGZXdnpEcE0sRXsiQUNaO3VhbnVXK1VVOlZBT25RZXFjKUNWS30jMmVDVFk6cV9jW01BL183VThmRitqMlNqan0wSnpUNXBWKmxSa110PlFH'@; put 'SzokIlhfXjJrYXxMZUJDUkV4NT5UbjsiMzJ4U0hTQ0tuaj1ldz1DVlpgZj12Tz0pcWApOUF9RFFNO0ojS0V3SyNAcmhpeVVKR08mLzE6aldJRDlhOlthfEZFfFhQUio6dzlGcUAje0Zgb2tVTT10S25APiFkNDxUTXZEY1AjN3hAZl1IY3U/SFddOUMoWkZIJnI/Slg8b3s0NEkxM25pUUV+LCE9'@; put 'fkV4fmZhbXZtL31tUEUwa0oqdj9acWFfVWMuaHE4WytASi5nZW1sbVlRNmlEPGglU0QjO0xtQFsqdEhiNHQ0Wzt4PmJfJVs0ZFhmPjQsfD5PUkNCKXpUU3dfRkVsOVJpfEUyYU1PSWYlOyxTIkR1eXZFIzs3YXhoIkhESVgmU3ltfXZociksNU0zO1VWSWgiTzpnc1RBNEJDV0p0ZVFaYGovc2Uh'@; put 'IVpnZl5NKlVncG9OSSM7SW0iRilXZig2SXJzTTJIKVhFbE50Kyh6Lm8pKm54YzU+K0o+T1lJKEFHfStxZlRZeHZOIjF2e1dlODdheFo3YFJfWXpeckYmS3c0UWNCOSUsfnZvPyZ3WFt1KVl1azFmZy9afmx3dkhyZzVrYGdaK1s7XURSL0JnXn4pWUBhSj84PClDb288M3Y8Sjo0aWIkOHluR2VD'@; put 'OF9fRTguemxtOXY2TUA1RkZiT2MzNF07VjhCRDt7OHRNVltlWTRMMl5MfkxZMEU8RHVuK09bR0VWPSRLQltLamMjOEE/VjFyP11BTlghazVvJmUjZjcrYmVTYF1CRiVuRElUIV1WTERfKVBzRWo4Q1UvYElVZ3Z1dHJMSkQ/Mn54O2hzQyxTVkFodmp8WUkwJHZdV2pWT3xDIzVtckwje31NYiFp'@; put 'M0xuYSloeHZiKGUyOHViWUBbNV5Ha2J6RzlhKFBNeX4kNWt+SiR8OS5DK2AwJnhDdXolZ3VjWXBmKmdQeDxRIz5ISXxEfnhyflJsaixUd34wNkx6TElZaUcqNFghZ0c1OkJmO1h9PnQlYEh5WyhCbHopKltGN019XWImYCg9UytvSH1zeTVnMVU1QnthNUojWmVONGE2d2gpSnV5KnF4Kz1Cekgl'@; put 'SFB6Tl4zInpQKj9JTCY/dkt2Pz5fMmZqfEsxbXt9c14wX3cjNnU8PV5sSGM7SkpWYEJwXWhzN3Y1Z3AsUigqb2glNiJEJmErK2R0WF8ve0BWS0dNbSxLTFRwbk5NUlReZEtJWXBMSVJENXJuJUl1aVd2Ym4wO1FmRktmPVUoeT9rcEdmeUN9Piw1SURBdUxHfWUsdmhSZiM/RERHYWVvSSlrOGYm'@; put 'S24qJUZYeEFecFFCXnJxYV9bTnlAKEw+Lm5QKCorI0F2VmZ9XXNeMF99QnE/SShnUUwze2ZiM0pfL31oOWU9cEp5R3prfVAqUnh2a3xRUG5JOm59b3c/XkRrPGl0JlRgJmxuaCoxNzRhdUxeYVt5Z3o2dkxEaUZMVnsxT2EoSDtefUI2fXRsIXo6PTAySU57aFI5RSx5emYzfVRNRDZ1LFJwdWEu'@; put 'L20heVZbMG1SPjJtQiUzbUIrQkBOM31hbXNIYEhgbio+MW1WTVo5YGBuMCNxNUNHd19TWUNTPzYwTUk8YjpObDQjU1UpMyptYE9gT2JPSDZsXXFkJmAoN2hiJTNKejguWG9AWi88JVojWCxZNFlTWV9yQzJvZEF7WVcqVTd8bStzSV0oTTBHayIhQyFeXXNIXiZnOHI6WmBzbFJsODRqTV4/RERk'@; put 'eWkmIl42KW5vdihXeHc+KCVKVz9SQ1AsL2pNZDpLZU5rQGEjajhSYUhWJVZ0UFNOXXp2RmFIWkxVfCt7eEg/NjpXXS9OO31BQFEjQnNWajxNNmFdKHpBZ2lbbWRTUCozZGhwUCZsMT9WPkQ+REFpMmgzX0ZDM35teV1KXihpdCR9RyReVD81TU1lPTBqaEcxe2NdYGQ/I15xNnVzaChqekttUWxV'@; put 'Z0UxakcoZz4zYCwlY2N9aGE0MXs5NUsja1U8YylMdz9bUDt0MGglUUYqNyJsWjh7eFJydH5RQEQoan1XIVZBeElHTzFAUlJNenlkVGd9XmlKSllDcn0jVSNXImV9MipZNDxmIUZKdldpY0lPWmQ1SG93Zn0idm8/LDxbYCY2bU91Wj9RbSlGTkcyWFVMSSFPXXFSZkQmM3hVKXdWNU1JIUVFdio1'@; put 'fm4pUnc6YFBTLCYmZnw/I2VIfV4vfnVqSDZET0pPQDo0TX4lQiFQRHQvUS95JDUlUTl7ZHNfcmF4VCNtNy5WTVEhQ3R+KERXcV01RGszX1FbRElOM0BnUTNSYUJsZGwpcSUpOSlAeDwqUyVkQEFvfiQyK1pnKzB4TzNxM3t0WVlTUT5bTE1SKjlzbXxubiZKbkRebnBLNiw9S1tgPyNWW15HKiI/'@; put 'YFN6JFtKdCxRXjw6JWwwZHthLnhXdk43dEBGPGsuNnphW2pWfCZLbDo7N3hxSV84aH09KjVvKVA/MEBqNW95LjM5ZGpLPGs9fVMpOGFyRWJSYlltKWtQbHlMMjpAfXxxSm4vJGoyKyo5KW1KJlJyTFZQMGczYzdbMmApUFVTazZoPyZPZXgrQUxvV1ZtdFR5LnMhN1dVbGZ3dDVMVXghYzA/TyN2'@; put 'NyhtYiQyUWMkTz1YZHlnXVBeSUIlKFpCPSVaPzFCMEp5JUJja2FCW117ZEhIOiNAVCF1blV6WCRsLil4RzgwKjg3Xj1OVykzU2NwNVpJbmc7bmtkbD5xPHp6UWZxd25wZEo3bWs0a2NvX0ssdT55NkA7K2U4bVVTPW54bkBNflVeZk04UV8wKld+SS8vezd0UndEOF5CPjMqUmF+Y3E1OmIwP2Z9'@; put 'bGh2U3s4Yyx4R0Yvc3tRNSY9RHlXb156RzNzQGMpS0tVVF5Ua3Y9PGVhNzoyV3JvM2V1ZVF0JENCUD1VRiZfQ1tVMStIbmc5Qk5+V0ZNYHYqSz1pOWRURi45bFYxO1ZfdyR2dzlYXig8fDpmamZgUGZmUTNtPyImRSgzNEZdMH0uN0ZLN3NGWykpR0AmN0Q1IWB3dmR7JUBKKCNaN0tXck99KUE2'@; put 'MD1UKz5lS2t4OmFEb3YobntQeXdoKS41b29Qb2lGZUJnbXBANGg6UXo8VHQ5NF1DRGgzck10W30mdWV7SVZwJFUzKkM4KmZ+ZzRVXVpDbyZfRFcsV21kc2RsY3hOdUJpLHRTaWdBRmNGM3EmYHFrQHw7WGt+b2hmUT8sL14zVUNNXW0wWykxZGNLWE1wblZmMCh2RkhFeWBLK3JTTyx6ZmB3cSJv'@; put 'WU1TXUszLFllYC5NOT9lc0xqRUBDKUBWUzhYNTUsRS9zUkdge3JmTX1laDNUVUNzIUBoW3xqKDEqckY6eS5Ifm0lQHVUNiJidFVRS2pXVnBVaW4/bj9DbyJyLiJ3UXc1TFV2NTRhNUZTcT4uJC5OfEgwa1RyViRLN3NaYDlKUkFfaUxdYjNXZXZXNFBJSz1ZLz0sKW9kS0JfYmF4K0JIeUZmO15g'@; put 'KEp1eUJdLG89Q0I+dUpBNlBSJl57ejFLanp0N0J5LCt0SitEQCRCcWE+dTZCb0ZGKD13JFFITm5ROTU5NVdFWjBUN0Rza1lSN0VTaUFBQSgoT09DIndEX0pjY2UhVjU4dnpEKSpRIkNBPW9JZSxtQTpRb3JMPXUvRm5Sflh8TEFBdVcqaD5NQUElT2JULnxpTkVrWzZtdyZsaE5OKz9AeiNhWmZp'@; put 'TVRJOChSUWJtU3VlKFpYTktuSVo/SDZuYXdFJn01NzteT1lGNUl1UDc6d1NBU3pGJE9mellNYGpmPEMxUnpCJixEPDAsaUV2RlBgY1A6SnxEdz5dVF9JJlVUe3xqR0ZKYlRFSj8+IlFKJVZFLkMpTTIoQGlLcndyPzY3anhscj1LdDt5ckgoJSlPVFQ1XktdUD9LcTssVlY+elkmUH1odGdBdyoq'@; put 'XkhicVN1dlpdOTZEcVRnN1YuMkVqIVltZTdTQ2FvJHclZiE+PmV5QStYNipRVjVwNjtdQWtmJUVwNC9AT3I1OiE/MX1sSDxfazhGazIiTX1YVyJlVXBQOF40U3lQcl1nbk4yPiMueXs+YmdFK29vUy8sQGQ/WEtOX19XIzdwL3piSkBRSFojTEBCJUMyZ3xlZ2E9ej1wWl8veSR1R1lXTDgwfSFl'@; put 'NEhjOCwwMU57X25DcDNGPkZFQDhySTl1OVkydV1VakB4cCZ1fGVsQldaLjBmdSl1I2sxYV9OMnxdMigzYDF6c1FVM3tNcmJWMGZAb09WPTB5WnBRLi5EMEgpZyoqbkZgeWczS143U3c5XX0vTUhxL1VQTGdMK0p4WXpENXhbWmkrPEA0LiM5JSt1aE13IV93SCZUfWt2I0s/K1BTUEUjYUxLSVB9'@; put 'YlQlPUJlYyJiY1MqQCxJdGApdztMbm9eWkYmUTVKeEouanddRUhFcXhnZ3VbOFFwd2ZOfWdeaHs7LnJ1Xm9Pay53WzAkUDE6VzZ8RlFqNWI2L2V7akhkSzBgdjc3LnZJOGJwc1Msa0FhazZ0fVA7bmZaZTVIO3p4b2hdT2ghLC98SjpCW10rbUxmKmR5PXVkMnMyVWU0UzN0W1QoP0hjUjcye3o4'@; put 'ZCZHVHNUM1s+SVMhcTguMXhURFh6eUpOXUZ1YkRsdTA2YHpicjk+NE4yaVE2fk9rQkV2V0NecWBIaGNvfSNWVlciN05IRlVoWDtwa0dJTnldczMiZUg6ImtIa0RfJCFYeCpzMW4rJGw7Xjdfd34rZ0RPNzlHTy8+RldZZGAya3l9KWttQms5PTY4IUcuRnQ5JiwsQjVASC50MFhaOGtOJWNrd045'@; put 'eT9FaCE/LF1XP1hfbT05UE1RWDhyWmViNkYqTFlbcHlueXZmOElFSWFoIyhxKnJiUyJsRzooJTllImBGI2F9Uy92czM1RC9tYlMoWV9IMlNncSs6fnl+VzgxLkhLcGJTRz4wX2pGOj10a29PYkBkKk8mRSRgMGdUZDo8Mkg+IW18dj5ZOj5bd0JbJTpaIj02MmhGYGJtXmVwbVklbWUvbSFAWW1a'@; put 'Xjd5V0lJZ09SXX1GOkh1bz9HXjo3aGU7fDlzeTx7aHkjXjdJZzYvIWFMTyV9YE4ufWRrKiJtI0cud0RYem5dN3cqL1M0UjhFbX1gO0FePmUvaUlvUGlsQTBYXjpjQExraVVmWzJ1NSRmZkA6fD9CT3NqQVEuIk5FYSUoTzEhS35HOyMyQGVHMj5vODUmOllPZmBwXzlIW3lzNCJsR0c1U3FzcT48'@; put 'R1hXOEUoODglTVUrPGxwaHk7fDFBV2BIbzpTYnUjVi9OVHd7P2QkVG5hUmRvSn5iMmp1YnByejF8aFk1dUVXPXtgNU9SSlZ9NX41OC5GbVMrWT9MLlF7UGVCX2RURHAxWHY3fCJdZkokPVl2Uis1e3t9LkZXQiZpKHpBTURVJj9YKHNzaURFWGhBT3o2PlpzbSxxVWUzYzVvZ0dtW2dwXiNXNnR3'@; put 'TVozck5adFZmRlFlX3FsUyFkPnBtQFlXUWZBWVVbQyooVDc5fWtDV0libUtkPXo4SlArP0Q/OFleZSg9PjVYKFUvRGhlZ05yWFAyK3YjUHxPbkJ0YEhgJU9MYnR1aGcucHQ7dGxPX25SJXgzU3opV0t+Yk1yKDI3aGwwcERBfndKPiFKe1FwRypnRn5Qc3lVfUFRenYlSkY7LiZoY0guS1FzfV0w'@; put 'ZyxXMk04ZihmcktTRSJvMmtuWHZ4dGZvN2p+Oio5M0tbZDBjdWpwVDEvV0FQaEcpbnQrJHlnY0cwYlt5dDJGX2NZIXRWXzFjenNWYDpqSTJARClVNyNwbUdmR2B5YSNjaGIyVkVWUWlBQjp7UltyNCV8NnZCWTAlKUpIT0UiaWNsWDJpXTNzUzk1YXN9UnFbZGRLV2JHW2NZQzZGYV4hbD89aEBd'@; put 'M2l3JWdTWnMzaERpSUo7O1FdfmdgLFpFNnAzLntFYmVhVjtpXzBVeHUkQSgocUQicFovIUkrbCo4Zj1SSSV0WjIjbEdUZllIcTYrZlpYO21oMVF6NSpeKF5gfUUxcmEhWCNRPyQucDJHdDFtaSw5Ly89bXB+e05ETDNCY3hfJk4yQ3A1dyVTUSM9JSlGJGIyfT03XkU4OnFjXVs2Uzc9cV0iKUA3'@; put 'TkxpPHo1Pl9CVVpqY0x1cit2U0NbUl4+a3pGTmxVS3gsRSVqQ3lHRVRlYl5HZHlydmsxWXEzXzQiZD1kQkhnPj9sa1VKOFBNLmErMDkzdWxndnxKNmJfW0V0TjNqZUIybkdPZUA4c0I/cV04Lkc9YG0kd1Q0cilWcGpUXWpvfTtNInQsVGZTM1FIPXA/PW9Ccix1JntWfSZVbSt5TDh8Y1QlJEou'@; put 'TCM4az89bGZlV0RlcVovWl9PSEZOWlJhX2xtVjRjZyozUS5vKG57bSxNZnF8PC8iYWdIRSojZiV+X1E/WT4lNDZVYCMxSSpMWUQ5Q1o6PUlkYUdLLzZYITJQNmtPVmplYFg7K3EuW1FLdjRsPEFQaltjZSQsOEROUX1rPFQhZWBnV353aSFVNyY5JFlWWlk7dEFgL0k6XjZ4aEZFMFVlJHxLVSlC'@; put 'emNFczMuej1IOD5qPTlicXVLdUV6MylZU0U9ZVsxXWQ2c2MzbEMxO01IUTl6am9EWGNHb3s7O1J4e1hMViVScTM2W1s1ek0maHRnJURNW1I1JVArbmVlRlE4bjsjKVc/PGd6cUlVMEtyfC9vN2ltcXN3aGgmditHQG1bX3ZkSnljQDxyTDk7dTQyVWklKUNZJWZEKWZSUT4mN1F0XjZfYEM/eSFl'@; put 'IiRiQ3FTUTNDZnhufGshU2xzWDcsJXt0Xz4rZ2lAYHkyMkxoU2lhNC98P3ZATSpYZVpTa25DemJ8bDRDV0V6MVMrKUR1bW54WE9DR2VMJXJddUNZQi50ZVlyWl1uZFlTYF9SaHE4YER8RjUzSEhPVTtVVXNUQDohQlY/Wz1ROkNxMHE3Ji9XYlJNTVZPT1ZSeUUodHFEYH13WWJMP25ZXm9WTz9i'@; put 'Tiorcjp5cSZmc35xZTIkaD0vSDhlXlEsNllXZkAmZXltajVqL2VNS0lneWlzWCpbUldAZUJdem90TjdzPiJEZGlKK1dGLEUjQFtpZ1paN3pfOFZFQ2ovVHRvKDU1KXxeWCNCWnxIPk4yVktLdH1OTmxVcSFOOnRVKzQuV01HfEZ9WiJxU1ErWSY1Z307aVQ7S1MyZVYoO0xYSktJOytfMyEoUzA3'@; put 'SCMmKnF4emFlJno3RVZGZGtNZWl6PVRdYkVFaW9Le2JpUD8mZVZmSGVhY09wdzNqTU05Ni5fXSVIXiJjVndzNCY6S21TZmlrQ2JYWTkhS3VhNmBWYDMwNn04WTh6d2k6eiN8YnQ4Ql13akZfRUpEK2dpOWRgWntaWW54eiYydHJxfjxJTT03bnhndnVVKUpEaVFTZD9hbSM7Y2duIm15az8ocysw'@; put 'MkNdVzdZNEh3VjJxKjVoXXlzQk1qMmx2dE1aWzpHT0R2b2MsVGNFOzU6SUNxYTMlb1pWMndEeTdYQ1NuaE13YihtYCEwbkN2Lks0TFltd3xecyMzfENje3wzOUJ4WS44R2dmVmFMcjhMWFJgNWxdVFAqSWQ0VnR2TGJDNzgheiFrPSozfCRSSiU2aCMuZGFVbn00d3lwSExqT3B3VSpLZlJIa1tj'@; put 'b3JbbVouW0B4UzFLZTp8SkJwd1Fsd1VrSVoiMm5xSyE1UXEmZSFkS0BuPzpiO19aWjJQYEs5d081Q0lkYF1sdUpndGElMl9TekVnNGEqSFchZFtFRnw3bGxFVyRNdi5aRndwfFEjZWIxcDdGbU85XmM4cy9tOHY/Wz1+OGowe0lmekokbCMhOFBQPTNxSFhza043JjFnN3czNzd9TD0mVGErVCle'@; put 'Tj0mWWtweVcpaFFnUShSIX1zdSJrdmpMZ1N3PTY9fV4+Vl92cC89OUcvZ0J9RjZnezB1NDFrUlAoVld+dmcxNU1AYT55VjdSajlCdS90cT5+fFUlfGpWTDVofWgyW3dyKkouVXdqTyNRWTx9dU9JaSx5M3cxdy5UfllWYTFdUzNHfExEI2pPIn52SSwqdXRab0lCJDY8Nm5kMGQhbUNONnkpNDJw'@; put 'PSRNdThxL0RfdVI0JXEmUntuKnpbTyl2UXFBbjxVW3E6c31bNzVheHljPH1yUX1zfXQwRFppP3tkNyZwdDUvRUhOOn4xRUJnaUwldG9AR1JuLk1VKmNMOk49bzRRIWxqREZJW0FgM2M7WVNWeWBaIzVXU3YrUX1QRHdeUlRmcTNEW25KJjw5dEg0ZEdfP244ek8rZ2tUantXfEI6U3VOZjNuTEM4'@; put 'MnMqQUJ2STR7N3xmTX49RFRrMVZSRGh6RDZ+Li4iKlIvNk1GcHZiRU1LKlN0KyxUM1FqOEVAa0Q5dW5PMmdTMVBMOTdGblp5R2Y5KXE0Kn50IUpvKmw4IltCTnxnVl83WU8meTE9YH1jRHZGWDx1fnE1fjw/QXBMVVBZPzhAKjtFP1RUOUdXO05yMXlNLyFbQ3F5bXMyNjBMSyVaVEZYMCI9cmpr'@; put 'dnNCVHZ2R0JnYyUyb2dUSWtudzh7JHxlQDE1YUsreiVpK1N6aVdpYnFQL1dkeiJtbiVwK1dLcl1UL34hO0laWDpFbGBqNSE4Ty4rSEJqM25kX1l4QEpZVHQ0ZSIudWgqQmlaZ1VRbFZLQ3YjPHpJIXhCS2ZnYyxaTU9ubD9te1FxeUtjQW1qcXNPeERXKFYqWSgqUlc7RlApbmVFN2NHVilrPUZ+'@; put 'bjdzbklRfUlzb0E5PHRaWXdgX0R8PVZsVUxVd29aQkx1cSNOSDVuPjs9fjRqdXgwSlNbLHVpc31SW01SMEBgcyZkX2lpKU4vV1VTTFZVdUE0Um1ufH0ySUc6UWFdIWNDUG1EIzwvMCkmc0RyPWpUbEVoOUJ8MX5GJVg7dG5lST8jOHFkQU9IMV4hdSksWF53RENbTSZTdFJpWTdMcT9ETFFDIUp1'@; put 'Yj1UK0IuUEYsZlJWL1Rje3RVR1pBeCs0LH0pSmplQGZpc3YxKHVwSGpgKiFQR3UmSmF1OD1bdDpGcFNsaHMrZ1JKYXovPlBjSyx4RXNNImBMQjs7ZitHUmVSfmV4JVhScURROUZJXk1Sc1Zndlp4aVksTywyLFJqMShra29OU0ZDQGkwKUgubCxqVEtfM3U9cm5bW3xDSDZSX0kmVj15ZHJ0KkhD'@; put 'WlAsYEhJYDo5SkQxeFEiSlllNiFKfT9EMGtpaFUmRls+aFhCISpydFg0MCVVL151JS9vPXN4ejtbekdlcVN2RmxyQjR1ZEB6NnpkRkduLENdIm93PkZ5Sk5wY0pJYTlrTks/ckNqTilAbzYvalhmckszV15GcFNPXl1va3V1KEtTIU01VUhtTCFFPFtKY2hVfUlgZ1hkX19JNSpZPChkMDlgRF86'@; put 'OzMqTHU/eDR3R1c6QW51KjNJb2BwKWlDQW0vKnQ6fShnfHE+IVt7WkxFYThWTz09RE0sTUZ9NH5xMU9dRGNxYW51Lk9KJFZ8OmtRIVJKLnBxdGFEc3QrVihITV5ON3g4NXRtYkRIYTIlL35rIiZiTTdvVl9WXVl1dE5dW2svVGVtVzpWP1pWayhpR3NbdW1KOl8wPHoyPTc5X2x2Xj93JUUxQyEo'@; put 'LF1FKj1gY15sPVt+e1N7eCVxPk1GV0lkOEJbe2V2UlhkRE1rc2IiIm9UZmc0eiVQRCFAbWJWKSZkbDlAa050KmlKLno2ZlRMNThiMTtaNXtxUk0xU0J9IUZ3NWV3bktFNXwsTmwvRGNJRFo7b2IwfiFBcHpHZU5PbCpJckUqOH5UOCNISXNsP3pOUjxEL1dNdTthQV9MOV99VzVOM1ArNGQ7Vj1A'@; put 'X3I9TmkjVzgqayR4SntBYShlSy8hNT5CeU19QGZPV04+YmBlKnFCRzJeOk17alV7cGh1Jn1OWTNvSyYhTzsyelplSVV9V0x5XUVLODZLSWxFOm9FMm5TSTldZ0hESF9RPXBpVldxK0oseUEsT2FfSFg6Qng/OjlQNzdnMlB8L0IxQmsuY0YrTVpWQ1ZsfnVIQjBiYVBTfio7al5VclBaO2NrJCMi'@; put 'a10/VT47UmxwZkRANEc4KFB6NzhZKH0iKSswO3AvSUg2UW8xZSoofnIxQi4oRjI1Rl5Rdn5zKW9dKjE5ISQkJHpyYHJ7enpnSGhHQ0x0c1ErTDYpYUk2ckgpTXF6W1JwL1Q8UisjNEIhbFkxRzZxVUZuRyNQZig7WlR8dlVbJUQqQkZmemI7JGM5TEBqMXlYSXU1VkQsWmNkRl5uNTpILlNNbyhM'@; put 'bkZLM0pvY2R9fCMwQVtpaHc4XTFgOkJ2W2loeyFtTWQiOHdVc3tdcFgzLENMYkNRQywwdDEpcktaKWdefWp7KkBNW1luRnRYJExUfiRtYjloRm5HTWokTjokQXVrbyMrNHp7NFcwcjdbRVF3b2VXV3NiTkI7I2w0XT5WKzhncExvIyVGYkdeWTp1UmVrPDFzZisoKX4oLl0pd0B3QCR5bCU4LlFC'@; put 'L0NjUl80VjlILnN9YWdNbXpSLFgpYndVPjVPOWFPL3Y3PjIvTC9UfWx+ZUclemhaKk5VWFJLJjQpZSVhcktLY15rMWVLZH5BNCFhJkpRI059WHMpc2lJd1c3WUs6O2dIX3skU05XaVldXnZISTgjZEY1aHluNlgrfiFNcnQkOTA2bX0jSnl6SGthMWR9XVdDLGdbN1RQQkB3Xig6LzRuMEJdLClK'@; put 'M3EsYEtufWdUaj41IV0sQnFJX2g3citGbk1yPldkPHJASXVFfUVrNGA3TENBbWVfS050Mn54XVs8MkVbZmV6TlZPUCEvWnI/MjQ4QnJMSEY7MytINSokVHxRSGZ+cU1SUExkazxGckMqL3g+VyNoWlhgZHVNVX4+UE9xRlkiPXo+TSZJOUk4diJkdmlEbj4iOmopL05Jc3c4Ii5mZkk7dmVTKjNj'@; put 'ejhgISNtbS9ZWX00LmBTc28kIzE0Oi5mTk5kaiUiWFNCOENMXXc0UEYsLj1NeCNiL3UzRDU8JjwvVj9CJThGO3k7bGMzNWVfJnc8SEp6fW9EV11PQ0ZlJnRvRTF2ZDh7XjIoXmEiInt2cExpN3wsVVpGOXFfOU59WEVoMSVaVldFTl4rYD1jbVJLaTlVSmpsdV5UaCN5d1spcUY5P2dgVjFuRm5M'@; put 'clc/JCwqNUJ7fkRIQl17aTMzL3tGXmNsfG9uVEYpciV+OThaNjkzS1B+e1RNKl5WTkVecC96IVlRemJfaT13dSJCQVpuTzJyIjQoTDNmZHVDRV5YaD5WN0k7dTtEJXh6RENQZHhjT1tWMDBONU9QcGpPQC55KkNxLGElNnVbeHNtMVZCMiNkSmBMXlclYih7amBTaSUhVmk2UDp6cyIlRi8yOWJs'@; put 'eF5eIVhGWDl0NksoPFEiR0w6LnxSMzYxQUxNN18mVGBgbW1ANDFYNV9kJnFMTGJ2NV9YMmBHfi4wSXxYJEwrJChBODFgSjhlWm5DZmEvbjdfcGFgd2dten50Wjo4X3FaeDEkU2x2OlFRKSQwSDA3I3hIIWJERkJHT2AhfXhAJlU5Wzlxb3w6M3ZWSy5DRilLMVJ7L3VFSkVaeyxUS1d5NlV1KXtb'@; put 'UVBXKEdRN1ZORS9aOitMdHxUVkBeW2VtaG5gZz1SOERPTjhlK1M5WCU2bTJIQ3UpM2w5ez9DMCteZjxjXzBZPWJQL0FkfWFMaGM/Q25AUUpdRmooRzssRUx0LGUrNzA4bE9+VUcwVVFEVzhDPEVqRlI4PSU2aSw3fCs3OT8vIk5tfHsqMUwiQzR+K3RtIWVZK1BZV0tqeFY9YixMaS9SfF1DVVdV'@; put 'ayMlTSFeMDNYSmx+LkwuVTczVmxMZGY2NUFvOj1heXVTeEBlWmsjUzxifVJfI0FwNChhNmNPS1A5Mi8zSlNpJDZlQlFGYkYkZjR7S24zSEsmPVQsY3gmV1tXVilkQXx6YzRweH04K1VPOD9WLmIlQS9OeCpIRCtCfDRsaCI/T0FsPTUxLkhiUFhscmFaWDdHNGM/JXgxU05kY0ttRTBbU11zV1R2'@; put 'NHwuNGU1eiVQJFl5ZXtEMTxSWzk7WjokOE10TzAoPmtYLDQ8WFJMRWtGYT9dUyJgZnQrYGArNF99KnQkVjw+QyprLkB8SHBjdmZadDU1VXIiJClKJjw4UEhhQChDJmRCU0luOzk8ZFJCMyQyY21nVzY5TnJSfD5lMFQsREloQz81IUR4S09WUUsmdGV9JWlpaGZOZ3Q3a2VRJSx+MHM8V35hRzEp'@; put 'd3khTCpPbiJ5QiZXI0E9eyJ3WDRlWmN+XSkrZHhYQ1EwdXgreEswN0ZvW1NXVmVdMiUpMCJSSSV1P2FzPGZOJllRT11odGM6PERobi9uI10vMVhOKSEoUHxJeWtrV2s0RSNgOm5xcio/eVh3PU83Y2s+V3Y8fl96WXAiTWAoQl9wezRbX3xGQzNOLHRrY1dSbGdAYk5qKDRLLixoaHFeaDYuLjIr'@; put 'eFcyaStTKHQ9TUZOeUIhUXJKLy9VdCJZVmpdLFVIXjFpYFFVNENzXTdTMm8ycWRkdXprbCYyS1gxVmt6P0k2OXd1fTtETkxRNkkzWHo9OiZ0Vk1rN1tYYzNFXjslfk81VjtUMER9bnpfalphJUwmKTB1Lmhjci5EYnRhJjp2XzRYM2VyLlVpaEgmOUxgd3JAfl8yL1dHWlk9JVEhbzQzaF1LTDo/'@; put 'dndqdGF+LHg1JlBofDR0RVFwbSozUntoMWlmVjkpNGpleSJLZSlBVGd5XXYreWZpcnssWWlCZmk9cz1fV21xa2o3TmFgaEo/fDUlQEdrNEJbTX5MJEs3TWRRTmsiaTFdPjNYZ2RaUlF8MmNFI21oYiFwZXgscVtOKDBCN2FiVlZ5aFJIfixKPWpdflByfSsrO295UXl5SWQ3VWchJkRIcU5nXzZo'@; put 'VS9kUyopJWVgaCI7fV9CZm5eZHpIencpdVpHfE99RkBtOXpJcSkyai5RO2pxNHZAd3p6elBNTmQsKGUyUm9ReiFTZjAqMkU9QmdeX1Ezd00lM3BCQFlQSis3PTR+KXRGfGcvKWB0NER5JEZiTlFFfUdIJWFbWGAiSmtvezN6PlJ6XSpOZnF5Q2ROb2Y2I29HU0JtdVM5Yl9+LmcxOUU8ZHl+ZSxZ'@; put 'YSJtOXFzSDsjcmYsRUApKncyNzJOLEYzLH1hYmIoaXRNOU5fVU9qWm5TInttPy4jSlJfOkJdITxQTnR8QHslPV4sXXdSNy5oazhWe1AjMlRgfFsxdlElVk1mUyJfWGMmRGY4YDB5MDcsVUtGfjloRDUjW2VQb0U8UTtGWlZAe0AyZ2I3T2FNLkBQTHMxTVs8SiRYflQjMyh7ZUB6cUQ2eG43ayw0'@; put 'cW1bUU1bfmYsRjYzezgqJnRmJn5zaFY7bShXdV90bEYoWlpqbysrYWpWeFo5aFh7a1lDLj9mUHspYT8oQTtET1FFMUYzZytgKCFgPilvPjt0Rnh6cGluKHc7X35xcUokW0tQKXQ9ZV9hLEU+MW1eSFEqO1dSODB6M18yfWNqYHp5OzRwSGJaNy8qeTJXM2B1LEI4Y1tLTj9sSDQ5Jl9veDNjbG42'@; put 'STlua248dCVbZmNAWWM3K0ZmJD8kJmxnXXR2aDVvbHEqPDI5KykqL14uJTkwcy5RODppP1JSN0xORjs1ZXtxcGUlX3g4K29RaEBKUFVvVTpYeWVSSSI/L004ezZeKVZia3VgRjY5SztJIUk4O11OLnwwNnY8eERuUmNgRytQSz8lZ3dsWV9wQWMlKTJAMntqei9QTXM+NDBNMTxrQTlIJm9ULFQh'@; put 'Nkh1Tm12PW4oLEpMS1RUZzd2aW8iQEdFWlVVTmw0fUtVYmJMcGtITGg5d0R5Z1s3ZEprdFVRfm9+OG4ubiZYVnV0Tj89QkVsW2IsSFk9NTxvXTcsSV5aO0UmZn5rRXEwPktAXVVGels1Z0BjbX0kKCsvQXhXIX13QV9Qaj0raX1kVHJ1fmdwVDowT2t5TntUNzM3JkhGZCVfe21haSphZHpTdkEq'@; put 'L3c3WFlaOWFhPHZud0k1NkYmR0ZJNHwhZ05rOTxrYlRAeyRfZ0xvMyhxWnFiPEs5RHIvPXRIKTd2SkdwVCQydzAqNys4ZXwhek9teGJSbismS3VVPG4sfTZ6NUIiOS9iRTlNKmYzTDo/e3hPYTImQFlob15XOWpAWCo9QTBHM1Q8Xm5MTnVla2FFdmFMZGVnRUBVUykwQ1klcVFOWUxdd110d3Nz'@; put 'KTZfcDZaa2FTfnJ3eU1jXndZVSkpOkVadEI4ZX10ZzxbZWd6IkBMX0BfIk5VTF5CVCU9WGEsb11RYSozP2NIeVBMbTU+dSpbRj85WW9KVGQ2YFM9byJtM1d4IXBXTFp1W2J5UzV6UmYlc3hyNUNePWg+Z0IpOjNhaW9RX1BGUFpCclltQkpeQUMrVHJQU18yV31NTUYkITdId145ejoqZHlzW19x'@; put 'OEQ9SkhWfVFtSVoyTVlyfi9TISZabXMsUmBjIj9EeXprZHN0ZTlqdigqZTdvTj11YiVjY11KLyVJKyFIUDUiTWdAUV4/fSZ6WENeSXw8O0JMc28qOFBWYlZBO2tSOj5aXWhlX3lwIT1bKihWNXdHU1ZKVC85ezkpfE1qQkBSPWREclZUd18wRTQjR2R8ImQ1RXh5SE1OM0dhfU8kc1Ajblc+LzxF'@; put 'TCkqNjA8NWV5XzdicyVvWjE7V3xxbzpnU3huVH1YSXNqSFFxayZ1cFlnXWJbflB9bnR2bTJOP0lgcDd8MGMhcDFtMTVDflheYz9WXW13fmtpJU9INzxCYCo0bTZaSHpPOEp1e2MvRjYwYixhKHAhQDRWZ3xPaUhfOURPW3lbei5Cd11XRyksPFF5PT15RTReNUl3VkdhTFJETCUmKnBSIU5aPHhp'@; put 'UTc/V1s5PFYpUl8kI3NzYXZLMVd2Nkk7a1t9P1AiOSZTLEpQKH0+OnNfJnIrOGt1bG8kTDtSUGNLdHV5PVBlYF4+L3dXT1o3SFZGLDN6dylrTlpeMDJWenw0MCFnVkpvNy8rY3VpLyQ9ZWljKFl+Ji9VKypPdDkpYi4/PjRqN0pzQTRpbC5Te2ZJKk5Cdk1fakBvI3pyZX1ySVI6eVpeKnxxYUVy'@; put 'VEJrVTg6K0AuUXVgRihkPkh7fXE7UVNoQ2QxJX5ycmgmZVNDbElsT1k3PSF9JltyKHRtQFZYUFhZJGxJKTcvMVh9QncoTSNFVHZJS0UuPlVIUCo6fkpMJV1XfFFoSGM3OnxyZXBEZUtyfV9PVG06e0I9TGUudjl+b1tIeHk/QztFaDNfKUA1Oj9majhfe1FWYEhSK3VXQXZONlI1e2pHMUMkfC85'@; put 'MSs0dCtlKDcofEBQMHN4XS4wT189bnssUTl7W0szK0I4TyYsJDdXZUouS1J+MnBHNnBnalswTHpqbzdrQFdmVnFAako0Mmp7ezg8enVdbElQd0BrPTtuNylISS4kaTxudXtPVUIyMjglL01udFh0VWU3dSFxekJrPkksKWROJnZXITsuO1dJRDUjYjVNbUteczZIY1tyal4pPS9CYjBeckAhNFc7'@; put 'Lk8rdmgyZm8qalJeJF1FfiQjM1IkaENOTUZ6TFZXOVg2SUlKdisseV9RUkY+VEpYa2hZb2NldnB8ajxhSVhreUNOJXRjPCkuOSRsQzA7VENxYnlzaEBQMmh8TjdjcH5nNjBXaXY+UlgyZWc3M282QTElPFBmQVYvInJ0JDo7dW5SSGlFeHc8Iyh+XSxsYSsvVFJeeWEvVEoqKmxMVnhIcjdNXlp8'@; put 'PkVwSlVIXkxQT1BudGdkcEdpTHN+JHtJbSFZZHBfIixEfl09dnl4Xz5xYU19fXhwdjNNLERMLj1LTyhBYHQpbHdkSFN4VlJtMy47Xms8ZCt4ek0zQEpAO2g6a1lrIWZbcmNUcUlbfTYqUkRgV18vJihTTEd+P0N5ci4rW0VaO156TjJ5ek1XPDhea2pkZXQiNSZjLyppKiMqVHBxOEU9R045ZnVS'@; put 'XkxZNUd1RVdFMGhoR2ZqUCZtZzlFO01hL1M6eDFDX1UjVy50KjdpWTxDfk1wYngpOGBzY2lKJmhKWztAKko7MWwwJl0vJkF3bjc4NF8qPlk0L099SUwlIzFoPTwvIThfK1N6M0o+U2B6IkpdeigifCVNQjM6LE5dVUVxKlArQHV3NTNENyR4PF9YQlVoPUtAdW8iY0pASEV5aT8wdHosPlM7KGkj'@; put 'UF93QF53VWd3fVc/TXwxKnpKIjs7XnVyMVdQdmgkQWQjcSRNV09VQEp7YGRoYXJvPyhGXUc/MSxtLCR7MkxhP1kuI1IpKVpzYiN0UGAiRHtoYFRVLGg1OE81bzMhKUJGUlVCekRBdGV+JjQ9fXooe0h8MjUzNHNuXkBZRSViI1h6ZWp6fTg8THtwXy8ifWc8MlBKLE05aiJldnw+L0gvc0c1Py9e'@; put 'UVR3fklWc1RPS1FlfGJia3ZZeVFjVWNdL2svVGpGWFIjZG9+ej92fCNfUnxPXzJIQUFHeCohbTE1PV5rNihfSSR2c3w9a3dlPmxgaHxdVStNczNEUDhMWC5Ad19mZV5YMSx1fWd4eGR6NHVSXVhuKk5qQUBMdEYsUXokaltON0Q8UW8+SShZMm57JT5FWjNxdkdYJVtHRD9KNEJTTkNpJVhASVRt'@; put 'bk9VT3R4NGJoK3g3KzR6dX0iXj9QbkRpbXRpKEFrMCxZZ0RwPTljdClsSTtDMm12KjYmZk5nMzBJXzZhWncqImQ0aVZoe246MSw/Y1dUTEBOclM8YDV3OUtrQlRQPysqWjZ1S2o1Q2xHX3pYc0FTcHNpWnFCPjoielFlYXM9RVtCa2g6cSI7UltXOnFuNFp6YnE+XVZofG19P3x4ZSIwK2JhWWRs'@; put 'JHV7YkZDL1Feb1tNXV5AImAqIWFQOHRwZll9JlVMPD9+QGpLdnc/dDlbVm4+dEAudF0lb3pnMk88OzV4VVkvInxvSzxtZFY3enUkVVV9RnkrSlJgSklFYy8rPzE9JCFXdi92SXcyI1dLMGRPWTJAUmpDOGl+Sn59dnM0PmgvMWY2aSltVERDP2lZbzlZdC53aUMsSWtYNzFgTXBoSiVuOihYMm05'@; put 'XUlePmEwQzRQKC8lenMlTm4ld3pVXkJqSVJwPU1BJWtscyFaIytfJm9nek5dbWwiay4qV254Sls4LilvW1B2WldjaSFUOSlKS1E/X0ZMPFhCSnZlNTRhVUw/XWtQdXVhaXxKcylJO2R2Pz9GbS5FfGM4JXJNQEohdTdANXpZKi44fi47cURjdDVNSVJmMVJWPWBdcXxeVVAsLixSITdxKkR4dWZq'@; put 'ezNwN2FmfW4mLiQyezh1IVRsYzx4VWQyPHJHZTtuQFkrMnMoJk5fJjN3OT8kWlNAaWxbT2xTL3pHNHk/Y0YwXVQ2TzBFc2dRJDs6QVFQU28oRitbUDFCeTdgZVAseT5Ja317I0M3ZD8kMzJ9bm52bVFFVE4jTVZdQ2VXOjUxPT5pa0ZrRFA0QDV6WSFXMk9WSVFLeDpHJVl+MlRDK3RbWE5JUkpB'@; put 'ISFXKG8mTG8lczRTcC9OR041IX1nR3dIMmE2fXcoQyFIJkBCJSwkP0A8fFdOJn5QbDdne2grR11fOH58O0FSZUV6SEg3YHxZcGMzI3pQU0BkTFZwbH5jcGxfayl2ZzRtd0ZsOjVvazh8JkJ5ZmdmMzQhVz4+NjQ5JGFyPHNYKX1yQmIuOVo0RCJvWHReTyM8PC40ZUVnNHdUJmlBOFNsTyN9aFsh'@; put 'KG4yci5Aan5xU2N5amNufHI7bS98Mkx6L2FVY0E9PFBONClzKnAye1tSbXVKdT5vfTc8VTQ4QFg9X15VRnwpbkliYVk8R0BIaXh1SFJdSXFnckpONDdmeGdXQS5MaHZDQjR8YEtGNHlpV20vUntTM1c5Sl0yZ3AlZloodjRXWT9iV1AkeUJLUnx1SmEoeVM+dGtzJG14XTQleiVNJCkodSI2IWhX'@; put 'QGxPLzNtMGJiNzN3QFdGSlo0bjIyMl1LVnpPS0kvcWpwT187Pis2dz9zNU92bTFIVjNwRlJEPU4sV1ZdaWt6LDJ0V2NeZ1Y9c2MyOUZbR0RfJj9QRWNyeUg9VH5nREZTTFQ9TmluJHRKQHEpWnF1Uj1vUEtldntkNHJ8eWF8Rzs+YFhTbmYwNCZadjBMS2RAUW5ISlA9KEgxaSluelZqc3s7cTVR'@; put 'SGg6V2FpSXApeEovU0RGelluIlomWSFacU8zfWxOMGBvc2l9Jj8yeiV5TCppPztFO0t5ezpte2Y4IUdHalFbflAlUF5TWDA4RiwzK1c7bSEoNCUkImM8MFt4Uzs/IUNRSmRDOyNlbmAjcU4oJChWakdYYEpdcDV2QyFwL0VdeDk2Q3x5UExnXiUvX283ZiFdRG9APFhbWHx9N1NzOld2VVhIQktr'@; put 'Wis4IXkoKTdiPWJnVnMyPHwrMHJPYylbbiRoNXUkJFYhNVY0Rzhkek82VjhxeUZOQnhGJCJJJHNgZCE0OjZLLy43ISlsZmFmclIsQko9WVdvPXA4Pm9PQUMvR1FVM1I1XSNJNyQqSzlzMSVgSltwVGlKVzhjcntYNys8OkRHaFJoKFQockx0bF5ve3h1dStzKnJqOjBTOjN+d3RvfDhpQ1N3fUI+'@; put 'cjZzJl1DaVk6KE8wT05uWFtdImg+SD53amN1c2JGJl5uKEpwKjIuQ21DOSs/NnpiZHFiU3sjdmRvOUwhblJlUWw2Kitfbkc8IXN1RiVjYCtwSldnRy9CWmY0JnFeOTwqKmN8STIsa0ZNKUc6TElSTGJ7M2UiPzpBRm9+Q316ajlkRiVuJVQ1bF5HfXliZDUuLkh2b35bTmEhaE1LaHgjQmdeNVZ0'@; put 'REpEISpBcztITXw7Y2xKQmIvfUdNKTNHKDZPQEVXSFtpLH5tZUFKfi9QYS9YNjRHTz9QREx7XnJiNl19JHlzOXoyTEh0Zz92KUlZT15lVX5hJHArV3A/PjYjO1RqNypAV3dwOj1UZnRUfnYoUThLZ104MC58LCN2QSloNDVpQjQhODg6emJ1JlQ5OWQ8NyZ1QFd6RW8oZix4OnUjK2wkOzNIMl5D'@; put 'QWQwUFJTPnlUIVtnRihQe11ycSVJRXFaIlZ2OiI1WnhmWCs+PUZQS0cyYSJ2PkdAejteJF0zPyE7NipmbndTX0NTMkRPKTpaTWYiOyV+cURIXU8pJkg8OCQlc0JleE95cnYueTxKTkxqYVl9KUBkLlYwcHN6OFAybUdRcCt8UWRRekEiN2ArdktxV0RVUCJGaz1xPGwrJXhkSDNxSiRicyQvdnxd'@; put 'cnJESU89NywpKUZ2YG83VVIoMWV5UVQ3NHtAX0YpWSE8M157L3ppdT9SWVJidTFuR1JDNTBuVk08azt3a3Y4dWYqUXVBbVtlYkVGb25FYzA/aEdHPGcyVWpqSlAvc0EyYWZaZ1k4TjJMQStnIzZsNT9FXk5OcVlgQzo6LCR3NWpoNiY3SVIkOjp0KEM2Ykc9PmpVKndaX15gQjVYJjdWKk0+Kzpv'@; put 'OElydVB0Nn50OjR3KDthQzpnSGhWMmJ6JHgwKCY+UVRkdlJOQD14ODsoMm9WOmNtNWRePFJTS3x8cDgwY1Q3cDc/SVoxRWhecSVDcEBibn55XjxiVHF7Ry5NV2NHVVNqMnZEdGlSN1UxKWpdPHg9Kjk0JiMoZXQ/MG40X3duNU9KclBUR3xxWk9iTVY0SU9JZiNiQD5haEclO3szLihRVz8ycmZ6'@; put 'OFRZZmRXZmtaYElpfnI9JFMkO1lHWUtiNkwuJChaaTNjUTVaNEwocmBqVlh5Rmo0X1spIiMiZ3hXNjpKRzBgWFBtWTliMXI6dXIoPFJnN1hgN21ZInNzVThgdVg6cklrJiJCTSYoSzhtaXMialIkfko4SDglNGBCRklveVFmKi44PGNmbFJrW3NsdGNWKlJibit0IW0qRUU0aVRMWjF2X2B3NXc7'@; put 'Rl9zMz49VG5ldFIxXyV4KGBxYWpDR1g0Y3hBJFJYXil4MFFEKmJQbHg0U0VSanpwSXRMKlJdVXBZPjJFOXlPYTJmOFciVkRTXiMjI2piTmBLTWgoNTNNP1hlIjg2bWssNXkxYSkuais1SE5eZThxanhFUEZwTzBWNnIrNH1oaVNSPm45KEliRUtwcjZoPkFla0klSnIlaVNqc1hsR1NxVEFodDMr'@; put 'VWZ+Xm58Rn4/MGpdQkwjSDlsbTQ6Tz47N2YwUTpCRiJ6ZGdzblguaUdoV0hNNj9UNkkzZyFDdz17T0ZeTVYxXUNfV3hmKDcwI0BiP2o8KDJ0L2s6NVBbRHpQMDg0UnwsQnwxaXlDJV0xXztDUSZzJTIrXWVwNl1mPWRwInhobWZmdmNTUndvTWZkTE9JZEBKPDhmKmxxSTZTUX16eV5FbT52TiI8'@; put 'QTlba3d4RTNka01mcG1aTjV3aiRFPl8oITU6NjN0RTIkVUtGJCJARmA+JmVdKTY0Oz06MChfL1QpZjolKUxncWN6bzdkLnNbSF5CWS4/YHswNSl8WF4lNE4layV9OUo5RnFvV0hOdT4hPlh7NEJ9RHc3IV9mcDRfS14xL0Y4bCUvYVM6aUpIVi81cmlrV0dPaCwiaVR6M0NWWFojJWxeYTNjJWhY'@; put 'JF5QRXpwO3d0OXteYzVlfWxTeFVnWCpiais0R1FoTGQkRDFkQ2ZOLldkP35+al1jV1p9YjMlQmF4YlJIOTw1X1NVLFVTfSJvR2diI3BVd2JbZXpvQFVmcmw+OFd0MHkmWmQ1UzU6SnRHfm9aaiY/bmpyPzc6RVhfV2hSYyFrOl0rc1g9YmFdclFEe0ZvSzU3PyE1UUhAIkUvZntBXmVebFVSNyJJ'@; put 'XlplWHpOLGVBfT1xIjQwQyFbZTY7My57fmtsVV04LigwdzlFcj8jaj13PSY0ODJTe3oqVWNEXWRuaUlCOFE4eG56ND8lX2N1Z0hFSFJ8YmxlZUUpcEdlc0x6RFpkeU1PY0spQEFZRVNtekJ7LHtgZ344fVluZUFwZExpfmsyUmswKElSOD46PT8oN0wkUUwmTFs1LztYZEZYK2xQfWcqeF1AUEJm'@; put 'fTEpYEhYV0V0Q0VmYmlsSDYqNlZrQ3ledU9vT3dRYEM+ei9ObnBGV1BhX0xEPDRoYms/bj5Zel09V35PJDwqVixxWWtvQ2BTVy95cWgvSH1jNkIoR118YS8+MW4rbTBZWT4zTWU+aDd0U319L3UzSDhCOFBvfH1mbTZwI3FxKiYhLkZDUFB5I2xYQEBpQiZbKjVkTUVZT29TekVnQm9pYkM8RDVA'@; put 'Xk9jZmZ8a0dFIXMoLm80Q2JMTG8lYmI+QWJfKkUzPG0xYixlbTFTcSVmLklUNXBQdihsXm9nUD5GSndsUlR5bzZNNFROXyshNW9XZzBFfWw8bm9BbUshSG5lcXYzWys9I19nL0VzRndXNXxeOitST1B+SVhxWUhLJTc9TDlxdF17L1crWilQOUw2MlNSND9oeTRzZyIhUk9FSlU7KWY7cCVsK0Y+'@; put 'YiRsWjFlU3A8dmFaPzVOVHZXOWxmNzoxY2h2fjxwTys1cF86NkxGU3VYTXJjJjVuQmhOO0M6aCkjQGFxMFdyckpua1ksYmJDOnY+LHZJQ3xmMWNMOipBKWooRTUlUmclTihtPkdOMitEdF9Fb0dUaCZiTStHMHYoME5gQD9oOmNhaGQkWn5NL0hbfTYrJVlqWld5P0hEbmd8eWYqSktjXy98PDwz'@; put 'UFZCXUBSOTtYa0t3JCZIMGR0KEokNlRYaTl6Tm09fn50T1JefThwLDRjJFBbQzNxMllkTVc3dCVjMUBmKHA5PU40TnlkWmE0fjJbWWdMRV9tQ3tpOT0qLihrRltIbFJ3YHAoQ1BGbTEvP0gwXTZHW0tVVTs5djVtfFhbYSsjTk00R3MqYElBR2hAbXNuSmJwW3Yvc0UmP3BweFEqJiNDaUNScFhh'@; put 'MFRXNTs6JF9tdFlJaFNqbUl6UltsMUU2dnV+MkViYW91aUVnfVcqT1E5c3AwPyxjV3p8b0AqVDElRzZTNmdXNXVuaD8lNWZ5NGwuOEZdKlZIcFp0YywjaEU6NixlPSlkQnkzc1FDdENoP05LNzl7T01eS317U19PdD8icz5mRXR4MChJSjF8WlVjYlciOWxuJjVKfjNodT1heSwqZDsjZj5kTVZA'@; put 'SGRiMyl5dUJQRF1jVkw+UHE/ZDQ+OWd1Lj0zZGxFeTsqTlVndCxXSyVfXUljZkEoOCkuKixIU3t9UERwQ1c1YX5hYzY+andIQFJdYCR7THVyQzg/fTdjfUhWR00mKzk5TGxyaiR0ejNbVnxJe0p4TTdZXl4odTc7QUlnVzk9ak1LO2lfMyVjPlloPShCQG1BKTRhSiZkOTwiajt5TkB8WVBwYTAm'@; put 'T2h0YTBrMDx3V0RDXl5aR1lwejliLjV5KVJPOFQ9JkNoR355ZzJhTGx6OEwlWENMR1AvZ2x3LDhSMFE3SClUXmA/Rnk5OmQoOE1YbWVSRzRGKH06OWElbWZ2VU1+TzRFJkhlVnxIIV01IVtqVFdPNWtBYTRkVm09b1RWeilQT0dbWCxAK215bzV4JTI1Z2srN1VbL0xCKkQ0Mj1Xez9FWCE+bHom'@; put 'Oi9geCZUK3RrRyRGd0tdYik0Q0g4NV5ZXklTKipxSVhVcmA1SVYqX25CRGUudEdaKmB8XmEsJjRTLzp6PTxYZHgrMnJXRXMuSXRfY35lcks0YkJ5XWE5IilWK2RGQEd6LEZaRDJgSjQ+IUUwXlslK0gkTDEkOXdMfnheaWxRL1JpKCJ8XmVqajAlaWxMaTMod080K3VSemp5YC9pWlRVPXw+MTs5'@; put 'Y2B3eyVXLE1BJCw6cCRaUjpEfT13Slg2LkAvZHxVe0Y8amxgX3VyUVJYSXNWdXJ1XVk6MVcjPiUoW01nezwwWSkuQVpANWY+bzRqXXk1ZFN7fF9HW35QcEVeel1bZ1YlJCo6KX51YGJqfStDMEkqKigudUpTdypkISF9I15EPCJkKD9HL1VZUy50Rk5QO0EmMEclI15bV1hHQjRoLChGbE5WTW5a'@; put 'VnA8NDFicFJ2WHlGTVZnLz1tbnh4ckw+cyhCTUszYVg3b0hqUmF3ITk6Vn1aQkpfMGZLYyVEcE9pZWZRQ31vbitGOjBvVEVifWtbTF5UcnFyTWUpQEdVO08rZWZzZ0hQZD9YeHhheltgPGxMX3FNcWZOd01Je3s0OXU9aF56UE9eIXE4U2o/Snk6RWZeQGphMy5fUVkqSWVFWXhec3RgT1lfOEdJ'@; put 'dmcwRD87eTlUMDtJfF1gWHFUZkpQdTk/dWFlXj5RL25lTz8iW2p0W3hnP016dDpxVCVhWUtaNGw7fSVHZk5kQGQ4VExiND5DJWFjZ2okJFFLLy9iITUscl1gaW9Je3okPmk/SCJnOyIvK2l0M0kwMjB1Kl1WWmlwZW9sXitnO19tPXt+eTJNI0c1P2FTM1U6Qn0jWilaXWV1IkRnUGswU2gsd29J'@; put 'KE8mNGh9Iy86NSQvfnEiU1FROHxjY1UxWSQkekQ5YihYajpUQGwuejQmQVlCSzYkM1U2ZGQ3SG9zL1QyOnIkdSJjZzVtKEJnUiEsVXdLNFoyemdgdWdHKj83allISGBxJCMjUF17fGRJPnwjWyUvVnFXVzBQQmdbYFhNOUdlPEI2Vmg1NjhlMT1lem8lcXl0QTJgJEQzMyNnQW8vI1ZxP2VAJSM5'@; put 'U0l9NDUoRFg6QX1PSEM9SlU5IUAxU2xzPEwlaGEjelBZYk5YdEpIYCl3Tyk+WzYlYnlRKytLam9oNDlOIylDcT07aDBXNVcvT3wvc35OITRicyp4cGNYVFl9cHxMPmRfOD1CWEd6Kil7amg0Wz5RL3lPPC5XR2k5XSgxMWZDfkFjSU05NiM1RH43cXAsTnQ1XTtCV0hjIlg6fl1aTSZJPjBWOFkx'@; put 'PUhtUWRyL19CSmUiIW1vJGVJZWlqS0B2PCN4LlkpQmZsOH0pLihkRXNLd2Z5TUIuZXhBP3U4VXlpV2EqVDZvYzVbPXlEdSU/OGt7VU8kWXRTMltGR2tQM1tgWyg3bkVEK1dnTVdhQEhyW1FwfT5VaSpvSlpOXThNcm5KI3xaNyFOVClrcm1XXkFLJSlIaG5paVEpOno2THZqS1pmeCJiQjoobGJ+'@; put 'Qi90XUt1MV1MfCwwXl1WUShoX3RXKGZRRE1vS0ovI31HPXJ9cVJiOTlnWkpxVGouSUA7bDx0Q0tZIjB+c0s3ZWQxey5XbjVRYE9nISsoO25qTSJeO2o6PS8uaztWTEdTcCFIcjpea2chdXUyMCRbdHB5WGRYX3tudiheYGxPcz82My5wTCUuOjE3YGJIc1F7YSsydGBwYT5vYlFOTHRudmdOenJk'@; put 'eXg7OmlXZU9KXWNjajxJOlBJNiZYUm49bWRTKn01I3ovYjIqWiZ2R2o5VnNVOnlPS2FfTkUrYzkva0dPSmIhUCp8Yn17VClEP3M7b08vdjVMTzBpOUAiUWx5ejJjXWBxSzdwTEEhRnM+Y2RIdSY+NEZiMlBUOVJNQiw/Q0JhQ3Ehd0dJXlAlUzJWOjFna1l9JkpGRmZ+NEtJMlM8Ty9fUmxkOlY2'@; put 'ISU5c2wxPF9PXiR4a00qS3J1Snh5I2F7N2lrIUR9KH46dlVaW190dyZWIXdzMENEcSZpW2tTKzYlNFhEXk8pcCVlKkpoV3FifGJ9LGIhSGE0aFo1Z248cWlDRFUlKDZUaiZYUlY2YlBWcUM3Wz4uMmgvSjRiWHBUWGIvTjYpcUZuaVZsRFAyWT4ob3dNXXNeZnc8eD5GOUxuT3lGSX05YX1hQlR4'@; put 'SkkuWHEiam1nITJFeEQ7YFguXlZWK1VDZGVjVFdVNCFdVG1dLHsjXSQ0Uzt8TTlGQU9DPEQ2aGN0UCNecHhgKnRbVUFKLnV0T288YVVaO1N6IipFK3sxR0FORmI3VG10VEVmXyI9YXt0QkxdK3Qpei5Qb0sjb0heOmlbfSJnIjVDd30sTFVmQ14qPyY5ZExddiQsNCRXNlE2Y2xSPWUzZXJOZko4'@; put 'SkRPVkh6VEFja0llWUZ2M0hYfHoyXkMjN145OTVnOG5XTSNrLnpEK010Szx7UXY9LGFVSmZqNCtkYlFkPHt5UDhVNExxQ0kxQDorfFI0RXVrNEg5IlldcVdaen5yTlp+PVZpaDpMe0p7T2AsRVtpWy9tPlAzVE8qOikjdTt4PFBsIW5LREtfVjtVOEtOdVtFZzhSOSxsJThsTVp2KllmKXEiPkxW'@; put 'JHkqOUNKRGxpUFhGWlBkMislWnBhUEhxOUMkOzMrRi5DXk1OWFFVR2xeekVkOG9ETjF4RlMyR1VhUDpPL2k+W2lLKGBtWHNbQU9yNVVrcCl5NTU9RHNXQl1AcWw1XihCeHFgM2hOMTc6Kj46K1JRd09RPH0mRkdCU1A+STh2Xi5KbTJLIlY8MXprKz8jR0BWfCRfJW1eZXJfJVhgfHlzTlUrSXVC'@; put 'UVJ+WCNJKG1layJXYml+elNbYmhESilxPXMrRzlYfjFSMDh1JFRGbHhWWXdZQnYiP2BkOW84aGhtT0B1Km9+YjZBdnpeSlo4fkUpfEZVUDZAI01BS0VMbShPd156WT0ifVE3KkBdOz4qYGhBNkA5YGwjWmlxYnE/SXg+W3I2PXlyPE0wZ3w9N1ZITWAmRyVncTVGVjxqKVRuTF5+T2gpPVRmUktM'@; put 'K2V1JXkoVVAiW0NoTTZJVH5QLzApNXk6YDhueFQqfWs6eUd7XVAoNzhINGpNWVp3MGUiRz18IiwkKCxKTklmM1I4XThKOXJSPStPXTpdRiEmcVovfCo8QEZmUFNvfUd6QTtlTlsyX1BxIk1IQkt4JG5JeHZVTSMvQ2xsS2tiNChqbTYmPi5iI2JTSzs3UmJTQHQuYFc1WUFyTEwlIno/XnkqVjsp'@; put 'QXErezx3TCU+K0M3P0leUmheaCI1ZFJPfmM4LFtyWEo0cSFrT0JZJnFaUTBdOEQoKGtAN1BbN1FeY0IzKz12eEoiWHRiN35PdjwmdlFVTihBYyVlTXBRfXFjRn5BTU1SRUFUXjF9V2V3cFs+SVBYJUVPdG4xOU1fRy96PyhofStCYSE5UzBwQldhOnd9UVcsbE0kOHEhWzkoT0Z6UHU5QHd9PEFj'@; put 'VlMyPVZJMnlPajpMa1pRbWQyW2gpZUZdTlJzU3RuVTw1fjtOO3dxclt8VHFONnF7Y2dbUn1dbjdAXT81OFlUWyhRYDg/MHYmWWhNZENxQ2tRdlM9aWZpRWFZQGY9Yn5JTT1XVTpfajNTUShXLFM4SGAlaDJudS5QOT13TX5OVGgwREs9QjtpWHBfVi4qdHM4VDB5VVhVbCs3cUxIXVhfYVNZO217'@; put 'dEMrSWJvJnlEQHs6ZCJiKz5kSUVbRjhEUWxPQG9RRyJ3eip+Q01GJXB4dEYqY0J4WmsjMk0sVnZ1X1o5VGc/VmoqSEs2JS9rY1NvKXYmZmwmU2FKeT5IZF5YIS5YQzwrOjRsZ3EzeG5PV3QpcWBFXU9vMXxCZlFkdVcwJk9NVXEjJXBveyNvJSxVe3tTPzcicmVHOT44SDl1aFBSRVgoXVBzVUwk'@; put 'OHY5Ty9eMmdgZHBpKHZSWElkfSg8NnF6NSRLUDtUXT9BT1g3IkVZQylreTkvck1vN1JCOkV1fF5RY0NrX3A7Zis1Ljx5JWdZSE1kaWdEbUokX3A2d3g7UXpuUzp+WlYiLHw4W1NUfW09Vz0/NFA4Pyo6LCVHOShufXVnOSpxdCosYE8ofGtrL0Q8Pzd0YVYoM00+fUJJTktfJEhiSSMseCRjVzsx'@; put 'TEd3RFlQTFNJVm17RWZAbyJzYjprflVrIkBgbih2LDwlJFJ2S15pajF6QUlIW3Y9bFB2TmxfVVR0fFRUTmdVbz5UdVJqVWNgNW9iM301SV9pVF0mMnxCNFpecUF9ViM+eDxgc1VZbGM5LnpSPGRBYV1HMVokcVFeNiMpYkNbaDF5YVdIRHBuYCZhMHF+P0JnI0pVWzlCPUhISGZgVC92WnhmVzwj'@; put 'VjpzfV4uQiZMeFM1JXhSe0IocTdwKT8uQmBddVZrPW5RYXZwMiFLbEZ3T1BRfSFqLms0UXVITGMhe0deUSl1dnR+fU1BbiVyOl5gKFFERktQP1ghaTdEPlRkSV4obSs3Xi42KCF6eD9JZnZRQWA+fDBZZjY3ZXQsNSlkdHtvdjNeTDcxczN6eSNwJlZpbU1BTjJXJXJDbD9fZ1huPVZUUD09PGs4'@; put 'dTNpblA0VGxtOmVNMFBwY0B+fHRtKGVlZU5SXnlPezdaSSJZOE09QFgzWWV7RzljX1ZQdE1YUUxqaG5BOTs1b3IxUENKQGB0Yz57YkE+JEMkfUUuOnxgZixnektWYyo/dDpVdnI1YCJ6S01dK3dXSmJ6dSVrSGJAR0tzU3QvJmBdOklwYUtOcFpxNCF0Y2g8TWc7V0hZUXMyKz8sSFQ4USVfZnFp'@; put 'P2lVMFs7fGB6OWR3TkRzX0xUWTZhO0xDeE9wbUA3Ljo6LzQ9MHJAbXZBXylMTHxUS1VgOT9IUDZAfnA+SCNmRTJbW1ZJeyYvSDRpVEF0RzVoYTJKV2ZBJXllMGlaQDF6LitjMm5obnsiOGB5VTEjSXl9NXZ6NXw4eSRzbihEX3U6IXAoUE9+cWlkXSxdQipMNCEoZChyZkA1MHk4KzIsKUc0VHx4'@; put 'UlI2Z30wMHlHfkMqS2V8LmJrKVh0ZkJyVXlWJSJGeUlIdXl8JmNYQWdwNHYuPVtkdF93NHBYMEklbWFFWWtCcU0/JE5ALnNhfDNnSTMkNWM2cF97YlsqMnhgKTpQfWMkaTdwPUtPPXAxaThJVkkwOjp6WDpDLCNgZ1ZweH1JU1UucC97MSYpP0VebGhgcGJtPXElTUpCYX48WHNwMU9mJU86V25J'@; put 'XjR9KmVaRG1EPT9Qdil0TzcweFFHTUFTckdGQyhKaFdQSSFZM0sudEM6bTY+I1FaYit7LHJZUilveHQmOiYvbWw5LiQ4PzJ9ZTI4SmJrbHxRY1FpOkg/YjtQaD85TiIyWzhTKXR2VVM1SXdaZT9zLyxNLkxxUTt3OStfdCl+YVJkN24pfiopZjwsTEleeF9fPkYieE1PKjFnP0RGYXVsQmRQd0hI'@; put 'V3spLD50bjJxV0lRY0ReTEJTKU0rYGFpcUs3OSh+MHlGUkd1OUtOL3wwekNvSzN2IUs8PD4vVyMsJUpLTTBQeElxXSMjW3RVaSM9JXt0aztRbG03OVVGTlg1RltXSDZQLEU/aSlEaSgoZXVUe2glN3dQU1RTLl1maTw2TmY1aXdIQTdMVElFTjo+Rl9Hdm8jfTZ2LlJPKi5HQVo7QDVPNkUkKjRT'@; put 'TllMc2RTbDM0cjxnRDd0cV1oTDIpLmU6ZU8lPFVuME0vUXVkOVZKXnBAfVQ6O1dPfk9JcywlblZ0eFRwQmdfU0MkbWs1dlVfV099ZHhsOF1HK1dTXSwsQlUiRnJWZnEwZjojYWZyUVQyYUhSYlpdenszMTsoV1E0dmJyW0BoRWteRVo+JE80S3teR2l+UkxCeFokNSVbWDZRQ15LP1hUe2xwU0Ei'@; put 'Q3V4QVtgXUVRdSJWcCEjVzRkYFdJcVJrUXZDQDFLfEdobVkoJWB1NlYrN08oQzRqNyVFXmgmUndtTTFbcnZqdXBMI1VhdShDXkl+VEQ+KUE1VHUyYGR6ZTJTOCxlRzA+WXMwX3FyeHcxVFQvdkFoN3psfiFfckVnOyJBOjMxejJqIXArbHh1MGJZaWVrfShSI0RmNS5GMXdtaXFNOTkoPl9NY158'@; put 'KkM8YFFefl4uRXR3Vj9WXV4lbVNiTHJNQnRDWEx3bT8mbVI8en4hc0N7YyQ5b0xTYFMjdS9UVkRBWitgZzM0bzBSWStQI3NoOCtTQ35jZHJ1KXtaVSFuNVJJZDVXYCg7RWlVRjQ8L11hTChIXk13MWZgRT9RNFFRb0gwYSk7cktlMz5uKF1YLilXT05iZHhvXnkoTyZVK0BxIntpazVvc0c5Rzl9'@; put 'ISRRUTw8OEpuL0ZeTEV9OD14d0wlaWBhcFpmciwrQU8lNVksNzFzeks1U30xJHxSQk5GXkoqSyt2I1osXVtMYzIiXkRtbCMrZlFUflduOT1mNDJIVE4+Il9AUWhySD15clAwMndHT2czR1M5PW1oTXNMdV12cCloO0IzKklEYk1APWRMVU4kQzVGWCJFTGVtSlQ4I3doQzYudGsycCsyXjQpbUhZ'@; put 'N1lSTk1FR0pUQH16PCkvPj0oXlFYXXpKZCxueWN0WWN0YFplVk89JkJ2YWNqQSlzalBMNEd3ZnFAQm5YQE9ZNyJoPTxKQzxoNnllWCY9K14mbHMkY3oqfWA6VXB2bVtlR1IiUFtyYX05YFkwQkYoRDI2SWBFfkJoTzF8YmJ3KHhfJmBfciReOD0ld0wwQjU2Zns1ZlQ7eWpnPDRmTHRWeVdQU3Jw'@; put 'OzNlXlEwRTdfNUQ1P3xbM05WMS9vcil0KilUP3I6SD1iLHR3IyFIMUtDfF13b2lSKiRjcWU8JTt0Yi44fi5zOn10K3Z4Sl5rRXVQdndXdzJPWyQwNT9nOmVjQiFwJStqVjF0TF5mZWxfYnRNYS89ZlYwRnBfcl0ubW8ydmlAW3tLZmNbMVVwfX5sXXhWUzxwRDk3Iml9VzZgN1lLP1t2L2hLTnop'@; put 'bGdTLCQzNEYsJCRdYkUkX1kqb3FGKUBudGBGcHJzYmVIZzc5dEtbSGZGQk07Kkc3WkgxYjBiQVNfbSJKeiRsQGk0KSYrUzZGM0VJdGEyfVVzJmZyT1RTPXBWN09xXypyRmtHazZ6MGtvLi9pTGV3Pjc9c1FQSyJGMm9EOzsjSHFMWlNeJlNlQl89Ui9eYF9ffj5wV1NIL3xoN0JVKyN4QkkzOS4+'@; put 'N359TkpbTERObDZgNW5ZYXk4O2syfnlSXWFNemRfUEsjbmtHa0dMNHd1MTdmLkNwQyNGe3hLe00uMzhQNXFWV1ZVNiE5X1BwJHUiKEkha357O21iMylnRyo6Sy8qelMwJUQmOXJrOyxYR0hqczMyOyYxVkY4d0dzP3g1QWxbTzVfLChwLnVuXShSRDxAM3YmNSFlIl9lK29OVX1oayNHXTYoXS9M'@; put 'Q3oifm1nMlslXTwyVSpuQkVeZ3klXSNhdWRjNk0lX3ozcEc+bWkoUX04aDRZVy44VU0qPzZLLz1TYEZfMEtPPnIwN1ZabnxSa1N+XyE8JmopfHBSIT5aNXRMeVE4P1Ria3tHJXROOUoiSiJ+TEQoZzhQbX4rdGZLMzUxfmN1JWRATVdpSkYpQVJ6fjQoWlBjMXBDIU4kOTo1ejd5QTpQZXhnaTFD'@; put 'RSY/eThFPjBjW25jRGF2L0pIU3xCTSQmcykuYmQ0Vl82fEtFLnczXU1gMFBzdypDK3F7T2hsQ3IrO0w9P3lNYExRe3l1akoiUzFDNjUvKDYpWGowRC8sRUY/c3diTEFnP3VBPGdiNS8+UF5qSiteM1Q5KDVoUzRHKThqRFpIa3NpW2M0PlsrKVFXaGImWU19Jn5SL3ZdYUVGXU9yIXtJYnZMMkZ3'@; put 'PyhrVT0xaVVoLltaKE4zcmpXYH5TRWRENDBiLl5RSFJ8cXxVeTFZaXhsaCYhbk8uQHZJNTA/RHk4SWgzb3xKRDdONE4qb3omeWg+NGYxOiVsUCxPRWleJVBeW3w6JmkhcGluOkBhMVBQIXRzfEZxe31FUnhxUUIjPVt7aVkwZH56ZDUuK2glV0Nrcm5vU3M2REw9eSRqLlJJSmVdZSlZT1poJUVO'@; put 'Rm04R19SVzJENXprSCZeal5jUXIjKyxyZGE2cWRSMldRdlswbm9wQ3Yra0c2eDVpYTdgZHs5a1hCNnk+dCM4JmBlYz1zd1JpV2l+YlBJeDpxV0BdT204OWt0eGtHYmNBe3JKVTszLk01KjNldns+ZHtZdClFSXJ6ZnosOEQ8MFZASzZ+L2lpUlFoMUppJVVwRyJuY3A8QiVLVjA8a108Kz1BWlNM'@; put 'I0doVFA0OUVmXm0sfFVPWG9JX0NxSTZEO3dCTCxOKzEqTCIoeHAsYSh1SHN6PHB4c082NHFMJVVsW2ZwaTAkZEo5Q2htdHxadVdaRSNeNCxyfFZocEtdND18ezZVZUcjQ1djeSpkalQrZjMzV118bUJSXUF9dDFsMDtONiFkdFNqVjBfc1hgal1NcE8sIVIqZU4uT0VOeHF7Yzs1L3BdO31GPGNG'@; put 'Tlh8M3tBb31DITRIOTxBN2ZhNSp9LF46T0U9VHZOPC5EMmQ2TTBjQjxUKVVbam9NeHYjJGlGSzM3SXZVfTVHWygxeE1UNHhNK0ZDVEtJQzN0TCwkIUVHYlIueCJMNypMZXVCfCshbSUxeCRLXyxNXWUsT349NHU9WHFDfHNDUGg/JSFOL35mVlAmVTVaLjpiI0dIJCowKD8lIn5aO0VfYVQlcERm'@; put 'NiNvXyt6YFgwcDNUMFZMSzNhfmNpMX1WcFMoeVZbSjZZTFcmJCUiMy9OQXFlTHk6UV4vJnNqVFdRQ0R9UUkoRWcpREx6V2pncTYoRl5vOkdAOU5vVy5QI2BOIUVJV1Q9SUlRfGY4a2BOZUtDUzQ+Vi5BNGh+NEEuSmtfKl84TU9TbVtgNng+OFAxMVhVMSUmK0p+MStsTV42c2leengzSEhVc2I5'@; put 'aFo5Q0NuPGlFTlRMM2xvOWRIXz1vRE9hNEt6SWQ9e2B8QFRwZWF8IWQ2U11XVls8TC5hMkZdRHclPSFKSnNHKEBjeE1gajF6a3cwUSVKVFVpeyxbey5vP2tgLmxgR0x5MlI1aiVZXylvamxieGp9JV4jRGUhaitiO2lYYVp8MmJZdnIkLztVbUxDIWUwJCx2LnBXN31hXlAmZUxaKjdgKCQ6UTVS'@; put 'ME5NR0JPW2Bsd0BWaSg5XVE6aytdflRmey49fiFsNWxkWWI0OFBMO1Voc3lnMGcqP1FOSzx3L3J1fTJPXnZKMGJMIjd4KTl9YzhUVmQyLjRka3grZ1hEcTZIbi4kLnwrfUBxKGxkPikwLEp3ZWJ3I1dCPVMlcGViZjA0JW9+JkpzVlNYWDhBKzdXbC95eCtjfnVZbll0cmIiLlRXQCh2JS9MI099'@; put 'fjM3VSRqJnhPYTMwbUdWfDQ1MUMsRTZQQHt+cGJOUWBHNHYzX1B4fVBjWkFvWy49Vng3c2JhQi9wJktnZCpUYHorQEdJRTk7VmVzS2EyI21lIlM1N2ozV1FIZlZXNyNHZihfNCJfZzwwRCokVWA/VUxCXWlfLHlrTFYybyUvUjBMcldFXmUkdWRSOzAmflFCbEpSQD15XWBhMShMP0tkZHFKcTgp'@; put 'KHlkbnhZY1Z0TXBKKSolOEw5eEdqVjw+W0Bfd3lJalVfKF4iajw3Lj5VS1A2VF43Qm5FeEBqTjN0Ri5FLlJbNUlTZixVO0lfcl5VVHBzIy5mRiVJKHVvaWldYzsyJmxOWSRRZTFLUX1IVT1SXUtnOFUyVWJKZE1gZTRAJjd2MnY5QCRUPWh0KUxnWTRUU3BEXzRNR3QqeXo+K1lHLHs7NHdTWDkq'@; put 'TDJCQyh6YiVaYjJ5JkMyaTJQcE0lKz9pKnRXel1RfVdyRjR4e0cxVFRHKDkrMSU2WUhBIjBFLC4xbXdUK2N7UG1mPD00OnNhaHV+O1U1bDRbRFZpXUk8W2F0JmJUKDx0czhZSWQ1Y1JPVD1GMFs/Tzkxa0JUNCRRdUxuPjpFMj9tXmIpI3V4fl1MNSw5TjBDNSh3Llk7eVZxOGoiM0IqZ2olJUA9'@; put 'K1dbfVkpTXwxUy8sVF9bYDdINTg0REhWLzIpViN8S1htPClYSSZZVUFjKVdJIUU6Vjp7Q14qXjNAa3BqMnNsaGJwKnNUKW9He1csdmFPcCVjMjdxZ1Z6b0h4UTA4d2RnRiR8Ij9LL2h4Jik/QUVLLnFRblpDJDVQZEJrM2EkVlVTU2RCQE45YTx4Xio/SHtAXXIjYGRLfCpRNHR4ZWk1djAlenUw'@; put 'UEFeLCxxW29lI2RdY3wrSzVZRVI4ZnJQblkrOE9CbT09STkhNj9KSXBDaDMhbD5TYyQjeH5yR2E+WE5aT3VkZWhWdnhQKE9jMitQPGhEV1pzaXJoKHJ0cjV3dzQqL1o+Z3BVNHgsLEBHNXFvZU1BQlh1PFVnJElFQSIuREEoeXtZayUrW1toVXVuflM5c2hRUTpNIjwrPT1+QXxsXzlgc3JSVjp1'@; put 'ZjBtNWYqZkViPyxndWNsIzJbd28pPTNzb3V6R0EkSC9gdXBraTw2ZSNEOG88Snk2UWN3L0J1QFNNKktQRDJDUDVaIk42LHU4T0c7P2A+MDRgPVZ9JUVPNU0/SjgrWjp3cSoiRGBXXUVHUFIlLltyOjU3dXcqbVlaO31yZT1yby9zJjphSTA1UnA6Wl9NNkFDMHE2XmAqJl0hIW10TDUhK3JZYDJz'@; put 'REMyQ253KHAqLnAwV3d2SV1CW2g2LkJsPT5VfVZ8R1ppJkJ8KCNqSmZrdnEucV55QyReZjZWfSJ1V2NzQDsuSSlXVENsWFEpMnk3aV5CUX1eWnNATF1UMHcjMz5VQzFaJUZqY3dbUEVdT094fFNrfitSVnlPTDtCRlhCUVFhI15XNmFlb2EwMCpiU20iMW9vWTckeGJmOy5JXitLTDxAaVdvVy8x'@; put 'WG19TUxBQEVIeloyRDIqQyg5JmJnJEFwfmdhfVtMYllmczNpSilwQmE0ODBKIWNGPSpsM3IlXXt8fFRHXkl2aHFVaDAhM34yIX5ZcFljNmZBKnEjaSMjaDs6TXRKcDlKeVI/fUpRfG1Yd1RBTzhbelB1UCNxajU6cT82aTs+ODwxZEU6LnoqPn5FJEQ7eF9Namp8RSRlKnxBLyU0RUtTazZDc19J'@; put 'bXlxOiRxfEx3YTJ8IlFzYVYvSmJPWnt1SW58NVlCZ2VGZ0RMM3ZYJjxgVlUwK1BsR0xYVHRha2NefS5reDxRPSlAKi5OfjU4XmgieyF+Ly8vfFpUd0BnKEBWeD5rbztMZyluKUEqTXJ3a1lfeFtsQzE3P25qYFFJPnRmQnM4Jk9uWHIwZSF8fm16ZkQkSytiaitQQD5HaXRIMShTNDp2dlNwQEhm'@; put 'RnJOa1U/LCwiOnhebDxvJks6VVckTSlUW0A/anU8flhfamJqJiRFclBQQmRoKF03SUU+dD5fa3hWcig5JkksRVNoakFVWzY5USZEWzYrbjpKTXheSXM6fXIjOU1VfGdYTW1RY1JhRiV8JG90dXg6ZlVqbSYrLF1MVj9leXZVMmZyezEqQix4ZExubFNHI3dQQjo0a3N5bXdgPVZTVjpdbV5HbihU'@; put 'Z19iIndCTk1bTDgjSnRjWlM5RklANTohS3hJP1pUKmNkSzV7a21Ta3FAPzo1fVU6cCxuKylNWmA8UTFnbEUldlFmRTFSRXdBdmNMK0ZvQ158PCQhNVJaTWtvT0wkPHN+TXlYQzdwMzVaWDF2cDQzMTtwQlV6c09CRiQhRUIwd0lidE41c0V1ZXtoZ05gRDVvLlJIST86Li8+X15dPSMycV1YM0pQ'@; put 'Y1d1bF1qOlRKTDRYcmIhZy9SN3lPKnkscCt7YGRfY35MU00vXn5fVlA4eFF1SzQ8QEBVdEZ+bUp+Wi8iVkMwU04sX2NVOmNzV2RiVlEhWlcqTnsmSkNqOUMxWWZZWFc9M31jPjJ8dDM1SUZ3N15fVWVdYG09NW1lX2FVaXRgNld7UGZ3QkFaaDVXOm04UW8wYDA4UCRHKkx6PmZzZy5bPzZGdiRF'@; put 'QjIuOCZXUigrSylTakQ3Mis1bjRRVH4uPiR8Tm5RT3VxVSYuMUJOZjEjeGF9d1cxLm9NUmlMSCw+XjRvOD86TSE7ZzBDKihlbzg7ZDJ1bkxTfHtKWFV3fnM1PkN1SzlbRmhManlXVGQqZEBSbn5DJXB1VkpQUjRWbyUwUC5kSGJVcSopSF4uNWRQVn13aF1eK2BPUz8mJCI7VUQkUGo3TVN2ImpI'@; put 'e30zPzNCY3p8Ki9QI0pzI11hWXxwLHxqMXVtXzB8RHVfUjd9JEREdyReT3hzT2MhODQ8THJnMyI9aG5mM3okWmJpI2NeQCtCOyFAcXxSRSF9OmRZc3RXZFY/Nl9xKXRHdm86UTN3PG1hSjIwL0orcnQ9aSw7ez1QZ146eHh5eEdqV05pSnVDL21LbXZQfjJWQzNSQGxHe1FZR2MxM3h6SVA/WE0+'@; put 'cyVhTE97IWh8LFJWTm1OYypSUUdtS0JPMUY9fHZUMiRdVV40SjtoNih9ck8iLGleSDJfKXZWXy9JaSRjW1N9aHBJdj16XmJjJlFjOkU2W0Mze0VLUS8/Wl5SeS9DdXhCTCRdPHw0X3J+VT9LQCwxUiUydklQY35tNUVwNUE3d25MXiIpTXtoUDFIVFZrdDJyfm9NJD1pTGxVV2AkUmhaOWlWa2Uk'@; put 'NWIofD4xdiEkVCI7InVqaW1zeklxNGlCX1d6TWJtSCRXcnFvWE9uXlU4YjxvUGNXZmA6JXpWakw8JXxiIjhWVTR1LyhzTH1HdlAqODFXfVtwXk49Zjg7eWRxSHJxQ0BuLHE8dSZ7JTEjQFgpNn5QdHJ0Ml5SOVlxXykkfitxX1JGUWp7ektvUSg0LnlANVVhZmJycmc/Kz51KSV1cWAoUDB2YTlB'@; put 'SiM/T3M+YntGeUlpXnZTez1mYTZSdHM8PiYhPyNMcSk6YHFkKXtBdH07O35KOmNqNUkiLjlWOFVYNldQN188IUU1Z14pSmVYcE57TipqS1ciWHJJajB6MnhhN2FTdnIufVtGS1ZKKjtfdkJ1M1B4NlJGN2NNLkQ0fGcjJnI1TURLUmBVRn19UnhiQFh7Tys0JW9VMFc8bj9kME5VS0lvRmJ9bV46'@; put 'VUxCKGxxQ094dUZoPTUzO0wxJGFqL0FzZ2tlYy5BJWgwKiVDXXJvP3ppaHRwdXREJkhSTmFYdWcjdiM7MExnZDIyfjJHK0ZpQy9PPjpjKCRGJF8ueTQ9PksqbkFELylXNy5BVjZfUU5lfDcyfEp3ZGx7MUd9bT93QGJIQjZRNTh2MiJkdiVpRjs8alZkS3Jie2k8In0qNEtQalV9IW8lbTghPiNT'@; put 'IjgzUzpsTl4hcGxkMStNT04jcEY3IilAbSt9Mm9ue1pDLi5eNVt7Lj07al07aXkpV10hdmdHXUpoPm5vVTI7SHtPMGRtflpNJjhIO0JOUVNIXkRNUzN5WHpXY283U1R5fiMkcWIsRClqPkVdfjZ+ZSpabGVQO1ZGbl5RbjxVXkxvPTAjXzpAQiNVaFNoaFlHfTh8JVRqdmZEdXBxazwoc2RCNldu'@; put 'cnZVbzEqMjJ1e3F8MlJ9QyEvMlk2UyRzPldKQGVyS0BZUHV0fVlJJD9ZIV1LX1ZfKHtZOmUzW3o/cHVpJlc9VWY2Pz1RISIkXiVXNU4oYTV3O191dEt1ZjM4SnJbPyleOyZ3KVp7JUYhKVsxLnBhNmNsIk8uLEk4P2NBSy4+RTh3P0NfOy5BTmNLX3oiPGM4NlsvT0QyIXBkUE9NYUpfXl9UeXJu'@; put 'IThbdCtyOTQqPExAWFdaIz5ecmQ9bExjVG85OHY9NCUxTVVDcjlYOilQbTlUQG85SiwrVzxue3JhfU97bStjSy5CLi9abEVCP1YyS3VMVzIydWRVYD9yLH5QRWAlb2Juc2kmaF9EaGZTQWtte2ZTMWUjQT14MWchN3hxP1V+YUdkaXN8JiE2WW5mcUM5Tyk6WzNmM2MzTyVTeiU+YGY0TjZHPm1I'@; put 'TVdxfkpkRHtTXz5uYHpheyEzQVt3eDVUVjMofUMpSC9bOTYzUTxzcHtYZFhmOGNjaWRsWTIuWWIldks8PWlQKmhQLiQ2JkJzS0dEb2pGK0BYOyVqIl5JVyZERTl3RkgvUCQ9QitiYX1dNkw7VHd+STlGVjwke35LKTdtOiZrKGtoYGJgVWpkeDUkY1NjUGdmZVBJQ3Z1MyhIOmAqdHIrR2codHI4'@; put 'aExDIy4/aHcxcn5SfHwqWm4mM080JCFOQ1Z2dW5WTUxmQipAVFppfl9CdEV1SVtLfCliaWw4NyV9bXhgbm9eIzRENj1ZOCpLMVRpZ0k6KlNBRnJbdTEoZCwiKCYzP1JdRThQcypSanhWJE5pYn5bYXl4TnhYNyJZS1NrYntVel1HK21gKyszLEE3NlRDJHZjdUdOQ29MO0ZSYz9zUE9wVDFQN1Nr'@; put 'SnNSJDU4dCU6VE5aN3ZfaWMjL2ZLZXdOIkoxTXRReHMhKFtQcF85PGEhO1VxS3EjUzxKdXN6UnhRUV58UEg/V2cpMDYscEY4YnBpSF0oVmZwcEZjdnBtP1EzOypdOjF7LyxjfCZCR3V2fUxLOT4zYElqJVVGey4mIndhRzFeZU94SExTYCs/KHpYN1FqfFFvWUpFfD5daiFieEBaTSZCTWRVWE1Z'@; put 'fCFCYWJgNFskSk9sU1I1QVY+d3gvNGR8PS9DNW1hXVUvXjg1T25mOXh6NGZkTStAWCtIKDFdRm9QcXRiankjekJXOWlHJGtsb11teUkrOkRSakM1ejgrXm49N0dgMUNJeTZpRzRHSk4saEZTSm1HdkkxfS83NGpuLlk4UnhYd041O1NYWGRILnYydXJKey91OH4uTE1jNEhCISVnPyVzVEFkWFJQ'@; put 'R19pfDR0VVlafmJ7RWI5eCNofTdtWyJjXXVbKklefCVjM2Z9TT4qJkxtL31PeDopPmkvLnowb2FvViElNWRaL3BnQyg6fkw6ZzZvSjhTNT9GUT9+PkY/QklhSihQfkRwPj9OTjZFR1ppc3ZqQmxldG5lTnRXQzAqNGI8XWlOIjQ5bHcpRSRFWkJgU2RWN01zO18hJk1FdkI3Ok84Pn00IVUxaVEj'@; put 'Um13JHhKKXwvQShaPzpiUXxyc3RoW2tJJTlOMEsmcEwud3ZrczB2WEI1SGxCSmhwdGhVaW5kY1hvQT5BKiZ8Vilwc0N5cDpmKyZZb25mK24jTH1SP0Vle1BKTVI9cCNuTXRWcGEsTH5sQTJZM3t6fXI2UnBxJDlJXnd2ayxMQ05ZKHwxeSN8PCs+TTwyPyViJFpxcU0mYXBWdHolXVBJamVgamJP'@; put 'Qzo0WU90RjlvYnVCKjUjOmouN1R2WWFUKko+Rn5HfVlrXXxgM19XTTVGMFkkLlloUGouflRiezxjczJRRmNeSWNmJlo4ZTFoWU86dj1pRHN4RU5bckZfTSRCSVNeQjd0UTJLTnh8ZnJ1V1QjWEJPYG9kKUVQRVJhZHwpRG4ybW9jMFEzKCwvNWArN2lCfV1QYV48RmF3NjkuIzIsXlIlYnZxWWYq'@; put 'KUcrdUJ8Zj0rX11WZ1o8bF06fGs1e3xMTWNpS2Q3MzxsM2swPGNRTUk7bTxjfnBvOGxSej19RlVIaGo5UmZ2L0pRe209QUJBfjFOQkslMiwoSUduQDNvNFR+WW1nUF1LSlNQNGUpQ2BlYXRtRyNzO01jM1M/JVA1c0BhazxUfWklaUhpWHduRERFUkI7ZSYrKygzMGJePFo3dnVRbG4iVS82RT4j'@; put 'eVVhRnouJnZRS0h6W0U4VEx8YzBdUXcvSVgwbCg9Rl9rLkh2JF8kRk0uUE0yKFtTKG1ZRz1oSGBhO1FqZ1c/YlJTbSxdJnlKYnB9M1oiJHdTRCNlPnReeU8kT1tFXnVTImcvYjs8MEdEMCZqWExtM1ddQiY5YFJWX25GW1Y8cSxkfj9GODxIcVt7Ji4+NWtXYi9FbVM3XSEyM0smZGhGNGF6OCFw'@; put 'U0heJlskV3pPez9OLjhid35jPENGekwpMXVMRDlSQSl7TXJsV2BzQ2JdKUFuK05dTXJsJjM3dnd0LHwiYU9qdHEic3E9OTpbWV9uOWs/KDc1Tj82ZHx8QkJyImRGc3UkTX0rUSlSJihpXkddZEJmd3wmb3V2JUJTS35JI318OWpaQiRdQWNbQiFzQVVTRnRkU19aeGhyXXhLbk1HMSM/Kk9pUl1v'@; put 'Kk1nJXtXUHBxTXJ5e2E9UFdCRHU5I3x1TkJoXl1vYHkwLCV8WzxpVGpoZCs/T0ZoW0ZhcU58Z08yfX1HS3duPEBzRzEwOCY+bShOVGQ/Py46YVd7dShjVG9rYyEkK0FuVn1KZ0ZuRlBfI0g2Z14+Nnk6YjR3cjFWIm46JmxVUEVvSSlRKVcqIU43VUgqbCtScUAqYF9OfkBPRy4wKjZiKyJxTD5W'@; put 'KG1nelB9SkRiOVI0XTBkPnRRUj5wZTA7ckchQi8qUDw7ITFDP0Y+LjB7Qkt4ZE9iZH5eR0hvNSR8QXtiWEkrQy4jNE49K0dsPnVgaXl3I1A3OiVGQV5kYSErZkRzfVk2cjUjOkhEeldALlMudGx4VDg2Z3E/Kys9OnAjfFteSDU5cGclVCoqM0ZxSUlTTSlZTF5hIVBLLj1KTVRVMjEjSXc5MT15'@; put 'Yk97WUF2WTRgTjJtWntQRjN0Y01lcExBYkZPLmIxdmhEZGsiSE1Qayl0MTlFPCVvaUN7YTE1dHkoMy55RlAhbjRxTHZFY0pBP29tckopKj9lLFAldHdSflBsRWlOPTprbWN1fjtjb2wlb01EZmtVcDRhWEJvaGFzYEVwKzdRY0QkKnxURk1jRjp4eVV0KEJRQDA0VSl3JFp4M05SJDE0NHY7IVE6'@; put 'c047ZF41VF1pRVFrPnRwY1t2VXpMKSZeWT5eVio6IT1kKm4iMC5GUGM4Qi5kaHVXSUx3UEB0LDR9dTtlOkdad15uRmssTUJQWXpHMnFCRGB9OSgweEh8USM1UE45VFhGTjc6clJqKzleIzVNeTJtPG5RUkIoU2FiVEpQdn09XnomVFh0NilyI1hpcCFAdkQoaVVaTzJHODJQfXMvXyYrej0mfFJt'@; put 'dSpTPXRbPyhMOFVOYjVQZHZWXTYzJChMYyxKaFkrWkFvTzU6VCx+b2xEcV0oWTZ9UjssRnlubXhnQ2Q6JDZUOjpfOT9BS01bY2d7VGptIztGM3J4cTN2bC4yLyp9MV54PWp7dWBbImI6WCtoeTRqSkNbMSNZV2krJHArOGs3dzdIUEVqKERfSiZqO0wmZytpZUolbXApRFlGJjYvRDAmby9OIiY3'@; put 'Jk9uJSNLSChzOnUuWmg7JDJfeWElUDJ0JjAhOlsjS3JoX2BsNjwvcEpzOkNBWXIkPyhNS3tyYnE/Unw6KjdXcm9ARGIhWFNKYDZvcU1qLHxHeHpEPF8hOHgvOjtwKFpITU1uZnxNR0R8PDE3KzR5RndQeHxZQl1hNWRtbFAkbktkV1F2cW1XbzJ8V1EwPEQ5WGhfeSp0fTdFIjZEcD48MDpMYjpb'@; put 'OSJEMy5LR3VpZE87IXxnKTgkKjVIcSEzVkpoOUFMREhgeXJBck9xciVAako4N0QrPTUsQnFaaTIzT3hfby9uNmE8WVdraCROMyE5ZDtzPkl2PixlP3Z2VDlTaVg1UWdlYGJKdjNMUmh7L0IrOHdyfE09SXsxeDBwO2UvaU5PQCw7YF55ZDhwVUIsWVVfLi5sOV5QcldMW3VkeHw2V1F1alEvZDM3'@; put 'cmpDQHJVJUdDTSxlVkghaWohNjUjPXpgTnY2InBDMW01Kz07NHlmcjBfK3RVVz91W11ASygockxBZk1JQlNIbTkrcnNTIkolZ2MoP3hKI1RjTU9nV2dqLm4vc3peYypHc017LGxKOSE3eSljTEE6MTQ6OkRDcXhUPXYqKDplUSs5YGFwbFUscW08Q0xTOFQiZT9UQlUhSiZ0L19CRzoxZCFdRnpm'@; put 'SnwlQCh5Om5zbGRlL002N35QWzp1ZlIwIy5JUi9PKytrXjouZTcjRjhVQEdoWVJPTk5sYzROLz40bHsqYHwoRmV9VV5sT3RCIlFndVkzJkM/XU84WytkLFAiVT55N2BnYDxkPnt3d0BdWWFMKntneVVqeT5DZUViRWhMNmFEXUVdRWkpRllYfnQuPkBLfFFBJmoybGRmajFra3olNGF+TkJ+eDp0'@; put 'IXhyMXc7ckEmK284SlZ8cT9za0xmdl91I0ZgJkVgUj0sampnXlF+bjlpIWVMdnJVJFVHMj49Zl14dE9kbFc6cVJSNkZbeSZTei9MOFpOfTpyMmZLZDNaK3xTJkFqfHxkNnJna2pOaGclUlp1c15RVjhfeEYyWHlaYDk2YyFmTXtndjNIUjRNQGQzN05SZiNjLHRjekdPelR7YVEhYzlsOjFPP25F'@; put 'elcwW19tZHlMSFdlV0xeOzcicCNvT317dys6T2ljP0l4TEluXjIoUkRBQWF+ZS9SNm0hfTUsVW5BTHdPKjE4JT5eOWFiemxKKU45TTZDbEQ3UShwRXpgUj95fEJLUlBJZj5HN119L0Y3c0w2bEwuJCo4MDghUTVoTWFvTlA4NUppUUVbe3o7bioibng0cToyJS58YGJ7SDZHUS5GRWxWdyMyPX52'@; put 'emozMnciQTpHVkBIUk9eaV5mWFk7WEgvRWFadXRyWV5Ze3NXbXQ4O2U1ZjpDTmRoTG1WRkI5V1JZVUlFNXdvaEwpeWJOUHJhV1BJIVplW0kjc0V7dC5+dEpoRE0ybTBMX2BOfCl6V2ZDTlZuTkc6NDBgVC5lZFFRVEpoTitYLEhNcFUkbWpeTk5zL2NuSl40UHxvLDBJUTB+fnxARk4uQzVwTypo'@; put 'Qzo6UTF6PDs3dDBVRCNFfjZvO0ksQnRDLGkrdzJjWzFEWWEsSCVpdy9fQVdgW3A4elQkYHExNlkuM1l3bkJOKyhOanRab1FYKUoqaihjR11Va1YxU1RQXXdgSzJfbmtwfkt2QjtAWEB1ayNFaXQlMHd3RUlBfCgufHVod0JhZTNiJkVFfFckK1pOa1g3QH1ZPyl2UGBhJW04Il1Ab0xIYSg8NzI6'@; put 'UzsyJHJlfkxsfUdSR2twQiFwWW9Jd20peEI5fEsiSzx4fj8lP09kYVRFOCZjZkQqSztpYShlZTRFdS41XTxPYng2IXcjaW5UU2ltU2gqRj8iNGdRSnpJKHcjMSVKOFt+b1RWOnhke1ZvNCJae3FsUSQsRFIsK2JPRD1NUzY4THVlamxOUWR+VEMlSndba1ZnaXFZTGAlbFlvWD5+RmNtOFdCa1Vh'@; put 'Vm4vPXIkSTVWfUw6e1Z8aXFxY2VZLDphfmxqRXJOYzp4fE8+Z0NzQk0wTXo8aWk1ST0mUFp4O1dpSmkqW0ZKdSNjcUYjcXM1WHdKPiNNXmxURWN4OkNxRXU5eWs4ckNNMFZoditMRGlKfHUwYmN7UUFOIW1vUTldRyM9eStkLiplZjkuWSZzKnlvTGY4TSFdeHdmZjBMdE1dMyZFL3pKO3w1SV53'@; put 'd0w0PCw4MzRDV1NVR1d7L3p4JVdAQ1ljOjMkI0dpXWxHTHgrUER5QVNlSn5NREg8az1sQklWVlU4VTZCfFRYJUJze3cxeyR6T1guXnJUYmhnOVhHRFlJOmokVihxOVMwa3s9IjZnIz0pbnU+JG0+czZQcXBPZyV9c2V1e30ia0AlRG9WckdUI1NPVyN5R2xDWVtvT1UoYyhlM20ue2N7LChSWEMl'@; put 'RHUoQjI5ZXYzXXxBJDFQP0V2VVdeJDF+PnJAYG0hKlM+Ti5PUFJsKHJzNn5dQGgoK3EqZUJHSlJXQCJkYlpTKltKPVlOTj4zNXNTbEZJVjk4PElhdTx0TlJQN2FBSGllT08yNFN5aEJPeXRNMjBMaDpWWWp0eDFTUENAZyFSc01xa18zI3J1ZlFid3hCbWU/XmNSRUI0IWMwbz1PUG5GOGU7Tjho'@; put 'TT9VaCNAckIhJWMiL05IQSxoRmUzXWE8WjVQKT5gbHVOSGdmTCFkaTBlKyozOVgmKz8qLlRPSlRJfFswZjUzRTpZL2R6PDspJlpFJCFVKEpeYWlve0d5dS8iYVQmVF5PfWh4XUoofWsrJEJrN3lsM3V3JEVhRW4iIUV3cj86P1NJK1A8OFteXzc+MUVpQXZNYEZ9WENNPXIwSFd2NV1GRkFKaFU0'@; put 'JGc/QiYyI1lnXkddOHEjVEQ8cWs1X1M7YmFZan1rZS5kekgsWUJwUEAzJH5IaW1MaTl9ejFmVipBU3xDWiElWlosI3l5JGA/aXZETypHe1Y5ZllFJEtdP0FINmpybjooezx1ZFNnZjR+PG0jTUVfV3phV013RjxVLzR7fl1pWjF+JEFbRVdlTmI1LnxyQmJ4TGF8bWpQcjRLXWJQe0U8TVZaRnAw'@; put 'ZjJrQzRTQiJoTFN0UjY4Z0cqaCVtYjF4TWVsdm8yS1gpL0AvPVg2TC5IWWNuemZUcnIoZ0oiUVJTdEI1QWV0PD5JUVEhPTRzW3hmUF1TaHZAXkh4XjFgbjVzfG8zS2wyI0c1Y1E1aTt+WSVROUxZQCUrQD1RSms+OCZ7a01AXz0iWWpCdGFAcXJRX1lrL1Z1Wy4reFc3SiNbVk8qNT5gTFJmemko'@; put 'VkE4Lz50Xz1CWFhyei5idWxZcDUqaiU/TWokIT8zPEYxYWIqfEZbbCsuX0pYKlVJTmFIM3pva3tkLzBpV2A4aiM8YzNHLmAmYmdmXm52OiYzW2NRYiZ+bWBZZjRlR3hwNmBXSiljPHQrTkBzZD1vRF1WbFBuZix2dSNNYjNaYDZAdkJXKGt5eUtpJHc4Y00sbSI7Pnt4ZGJQVExdT2hvR1VoISxw'@; put 'ditsRzxTWilvLCRoXyNhck83ZStveGR0a0l0WmFYSk82U3pVamwpZ2FUIjpkOyRlO0hdK0AuZH1PZm0rcnhnTSwrZTY3bHcwYiZsVlJSKiYhRzF5PHQuYH5Sbz85VEhtfi91PV5+fkhKYSZSQEoyTjs8ZUA3bHpYK3p2Wzc1cXcoZ3VYO3c0KTo+YCFFZTVqcTMwL1svT0U6Mm0wL1FmWmdyRjZI'@; put 'KUs2LmpRbVNMKT98XmRDUSt5RithYXpAQld+Qm02biVqTkM9Lj4sRCIvSC9xXSg5TGFtKi96JTw+JkdYdmZwPzpudSRxOkh+L0VVV0NrdnxQaztqPz0lVX0xfjVlV11RSkorcjkhTEU/b01YImN8PDhDIzc2aDg1dD09ZWd0SW5JV2FNImNrOHNPPjI0YD05e3tlITZucCFhd1RVYHxaZDNOImM/'@; put 'PTZKVjR7czN5YVtvMmZ9W3ozWj1PazxKayomeU1+a2dTdyYwU3A5PSQoNypTXTFgSXd+THY2I3soV25pPl50MHRDKUVQXzxGcSp+WFtKYkQ7eCplNCExRz5zTDM9XzViRlIiZlJoVDRfJSE9Qncjd0RUZWBIIX41Yj8hVFNRSmdCYX5GMEhxT2N1PTVda0M9U01qWm4mdEJQUnZJaCope1ltJUtm'@; put 'JEVuW0orPHM5VygpKTd2Z3M3Z0JiVShKaWQufiUxfVhKKWZ4P3osM10/UiIwdVk4Q3htKWVuVzA4IXVJVFdJbjh2UklOMjthVEA/JXtSSHgoYm9OZiEsMSEueUJJIlhhQmJpdVJ9ajJCJChae1J8XXBoQW4lY3khRmpheThAL1ZLM2V4KVtYLlZGJXJGSTk/TEJjLGkkJnpkVmk2VSVAVmRZbTF+'@; put 'Qn5kKkA8WHcqZzReNVA1MHAqNWBtdDp7KmgyUnhgZDgxN340bnV3enU8KVRveTh4Lld1PFoubGtfLjJGdDJPSG48ZE44WHxUSXQqKGcqOygzN2tHZ3trUXVJLChyM0dNR1RGaz56LCt4KU40e2FUfGB+ZlM9I2NgUENfXWV+dSxKeTdVI0djNTE2OUJTJENbRXNWfFZ2JVpGYjI4b29VKCZPaGdL'@; put 'Ly43JV1jNnM5cyVtTU1VXUVlcGROLkBYMyk6M2FgcDxud0N8YXk1Nz5oZ3NCNWFtJnRBUiEod3ltaT4yVl9FT0VYe3pGbkUmfEQ7XXg7XVUuRUswakx5SFl5fk9UbW9NUCxKcC5UKDguaihNIy5MI2BDSDVYIk9udjswMVg9TzVscS9jbUUkPFJRK3d4TSRaP2giMHpyXXhncUgwMU9FTFBbVkdL'@; put 'VSVlNCh1UjtgOlRBb2xZem1AYVcyL31dVl11cSpSTkZpNEZNNHlpTX5VbmkvJiN4dyImVn11SVpwZHtzV3pYRWxvQ1B5VjBJOEt+MjBWcjg9alBsRDczO3gqVlgoaGhQYU1KUnpQbyojVjBOamA7cW09N1d5U3M+NGNvK1ovSlNIdH04c05DRWt5LElxODFlPGt6KVpKcWdMb3k3fiozRUc1JnJp'@; put 'NVFmWUBmSTosfXVdem0qQWUlJWI6PF5UdFtNKjVrY0Z5eEduZTpKQj01cnUycVRrJUt6RG1rPW8wKkx3bXB9KFttNWBxI15GViUxcmJXRipQckooYjMqQkEvMiV2fXtVaUYiOTB0KzAre0tlVjA/PXpaKVQ6WiZsY0J9dWdCRX1oIi9NTVY5dTFNa21+emhtV0xtT1tmQixoekZzPVBmOWRrbzU6'@; put 'ekA0em8wKVpVaz9TJTxvKiJHW0lgPkxMbjNUe19jO0E3TyViIWksRSNQIUFOd3Z1UnVCS0Z9Jmg+L1M6bihRblN2QFc4fl1UaDE5cmBVUFlAZiNdVGY9WSh5Xis/OWhARFB3QX1+WmkucWlHbVcral57PSssNjcrNStKQkRbUjEwMGpEZ0c1SHomfH0mfjJLVzxzd3NiSkh0cDd+TFQuJWB5cWZ6'@; put 'X3JfJT9KSX5veTVyVUFmPEcmMnJyNmN4flg/OEVNQmZheWQ3LGFxUzQwUGdCZ2FzejZ0W3lOaTU2LGc4Xy50QjdbOHp+YmI9P1FbXWojKUpWZ1dmejslaVJAMzxWU305WSZgKURYUD5gdi4mZksmJE9kZWQ3LlBIN34/Rj4hPSpmbzRNWUV7VWc9TWYxaTU1fkZWR0dydHRsSCE4WyNGbiFWOyI4'@; put 'OUBwUTwrK1tUUnhTMF1aS045ejBmNHB7ekpMOWx2W1twe35eSTNdNylOMGUlZjdjK2xJPSQvZ2wqZV1eUU54QSE2NTEsXVNKTjg/UnhAa1R+K3NsXTp2PCEqfkNXZj53X15AVi9WdG82IztNZGtzeXNuYWB3VjRLLyNReFJ0XSpgK0xXYGssLn5IUCs9V1BCcWZzUHovRGl3N2ZCOXMlL2JTVEpX'@; put 'PXg5fWlhY284dTZuayZYOG1xVHF4bmF4WVF7WixfSXBydHw9QmdOdCZWI1gySEUyNkQ6JjgzfElidDFdd3UqXXlxZTddajA7e1FdbzA0RC5uQE8pYUhMYWVmTiw3L0tAVE1hXzI6TjwkIUd5amhlQ29RfVhDPl0maW4yZzl+TlA1fS8iWHRfXl8qOkNbcVE9QUooLjJ6bmx8MUtpJVIiPHMrOF40'@; put 'OS4lVCZeIz4pOV03MHxvNyk2RUE1NmtzV1MlOFdIOzdpLyQicFQ8XktFUlUpO0lNdTJLWmIyaURvWChbOThKLDdLLkNHN1dCODY6I0Z7RX1za3pkLFdJXmN9cGVjR1pgJHBeRT9hc0EzOXI4Il5wQUtaZTRXVD0/cmhVSyZncUk/THZEOFRUQTxAKENEfGI1fUA+TUJPUS9WZEZXQXNDaSI5dHxW'@; put 'NXc9OkNkZzowRyh2OWBYMl1LdXNdI35mXyJbOit6SyJVKVNiK2NtIkNJSWIhaTdGUjd2RHdnen1IWDRaZl8/PG1PVVR3Ojs+SjY+Pys2LGVGdHxyXUFkczR7KnF4Wn5EYUUjITApTG5+Yz5iQ090JDFPeyJhNHw9UnBlQEY5KTZmKkFkanMue3sjMV9ZaENMbzlRPkdkbTdGNjw2KTlCOmc1PERk'@; put 'Z2VxM3EzXX1jUGdvOCRgZClzNVciR3VEdDZ2P0o1elopTERUQUxDOz56XT92ZCs4LCZ7ZigyfkBpZH4sTl5DSU4hfUc9SW4hPi86JXV0e308ez5FOS9wUihoKXJNJXQlNnUlYU8wSCldX1p4WlcjWHJ5VSg6UTZpbTM+L3gqSVM/UWxhMytqSWBiJEkjQ3B1fHc6QFJQKHA8PG5pcntDaFZAVkB0'@; put 'eXx0TjJrUXl1WXxuc05vZE5yODovLklHW1RzayQjZnw4QCEoeUspX2tZMVVsU0laLlBOM351VHd1M2AzYk9qcVQ1XjMjXzY9UkF8fTIiWzZNSGtUOH15VWdzS0xeY1BbMiYpN0NXXVkkS0gwPzdiS3lWNCxGVWBbMSZNRkRddTdiWWg+UFtTKHxtJmdFZk1lRzp2ZD4xQVl5Jk09ant4ZXV8RmJ7'@; put 'PlcjOyYuTkh2Kzs3RUlaNHVocHZwdyxVX1p7N1FpNzwmMU8lciI/JTU8RWw+XypQeTk/VDRfTjRyYSM6JlE5RzZnbnx+MWw8S1ZMLF8yLz43YDc9cmdsVXVmUGxxbk84VGclS25pfF4kan13fC9bMW1TVXw2bmQvTzZ5LHNlSmZsNSkvUG0+LEJ9MEh0Z0ldJlNGNXJXdF1IJTlWfDFIaDErcmBP'@; put 'VG59UH1EelJgbD87O05LJklmKV9yT0NOJVcwUENhLkVZcix5X2d0ME1ZfDJOT0tUJVhnO0NOQzd4d3QjSGFBSXVHTHgydXBjVm5HQEw3RmNzYWVMcmolVH03bCNJTEcqP0ckWCxrKl1OTGZZeHoqKSNzUkgybD5HM2xGUGU1VlQjSzxgZzk1Y0xnc05Qb1psdSQ+OHdrYyojNiJ3M1NWJFY2JFBB'@; put 'KkpnSDYxMTQhTGxUNDJhKW5hJFBLUz9+M19VJk40c0dJe3lofS4rek4/RFM/aWspTjw1OXQ2cUlBOEttNFpGekR8RkdPPCllWmZ1TFYvRlNBOFdoTFdBOTVRKUNBVTBacXNBZFohQnh6cFo9Y255MCMpNTVKW1Umeygzby9TTD9jX3l8eHdnWzhxQ20pR1JpOWhae1IzRElIRzY8Q3AwPUg1OnND'@; put 'QnVlVl56JGpEb0lVWF52NVNwdVZRKUBRR09SVklBOVMjVEZgO3ZoUzpDXmN0Sz4kaX0pbipubkc1OklXLyxbRywkXUp4ekxAKjV8RyZmfDw/VXB4RFUwMD9oZ2ZDPVN0dCJdNWhyUXw1d0k2T3RVZUxQNUBRfHsia2pBU0IyWV40aXM3dj5kPiM3NWNVd2svIm5Xen1JYkxTaV56c1VEezIsfVtF'@; put 'Z2ptKX4wPCVzQj95OHc8JWFMdWVWNjh2PzhqXy4xMFF2Oj1PZl9mQTd4dyU4V0QwMGxqMEc+biZ1X1Q6c0MoTlgqK3paTzNRNHg7NXBVWCxPb0FuV1BOdUxsZXIjIWBKM3JiTmFzODlgQ0p5QmFhQjI3VmNlKlBRcmVnSyltc2IkSmdqbV5ZWzwjKXU+THFVQWBxcFZDaV9fZWtFKTdYJlo7KWQ1'@; put 'RkVHcW5MPGskY0NaOVdPe107e0VeSm1TNisya19IV1EmOnRVVUpOXkIlYF80OXtvXWRSW05CMU1vc18wJWZtYFs8QHBiZ009VDtMNV0lNF1oRmdRJjp8UkN5dFF4TmErOmB1Oks1VkklbDZKWFFDS18pW3F5UilBdXlyMDRbXjZtOHNWbkwjRGdRJjprIS4vVFghOF9xWU92QlJAaTBNYHxwRmA7'@; put 'dnhCITBNSHQjc24lL2w1I1tZTCtUc3FwVmQvMFZTPVpZWmQxITxObDUkamdRUCgqP1YvN0UwKkN1MToiWSk8PX0zVzsre0dNKUZFdHwpbSVkdnMkcGg2PTdzZWIlbSVhXSw8NS9vbjN2W25OY19kUUkpPHhOOUwlVFdPQjtGRDNbOi5VbEZ2PzNybF8qKE89KlMvUmNnKUxndD5baz5XNDRqNDlC'@; put 'XXtWaHF0d1N0fHl2SXtkOEVvNlNLQ3NxJmtHTmNwZEpOQlF0PFcqV2dEblM8V0JGMXQxV050VCRvU3xbOWxCQn40Yld9KCwmc0tuU3g7K1JuU0B1WGxpL2R5MVc2I2xxKXUzRVImPXhmbVtrdlBYY1FKREkpVXQic2p9a0M8L2dIR2RjKVI/VGwhImJmWyZvL3hLcC8jLkVESj42bWFxd29kP2he'@; put 'SXEwQVF0SjIpTXBbdzIjcHpdNyhlLixNOkNtdWxzV15zckRZOClOTCF0fSRBalJSaWUzKjZMSGt7LyEiYjlmM209USgrQjlnRVs3Izc6dGpsWmlENH4kcUp8PC4rUnJ6MHxaR14qdyhqeDJ4PCQreE4vcCk4em08OlEoIzIwakdFRC5TYmYpKG9jYklRezB5OWxML2t9UlRgR1A2OHc8dHNfV0pk'@; put 'Zl86e1kuNnNGPEovcVtDeDttRU82QiZifjtjREVeUCpDXlAqdnBJNV09a3F8Xm8paltDXjdwdnB+S1dnVnlSSEJ1UXBATSljQUVIWmQpYX16KDdhMz9QeX5zMHNWKlVFfTBifCZnUTlUWEZ1dWNZNHZvInI9Y1phelEmUXs3b2ZDTFJFemBTQCp5bG4qQipQYi9GbGFDdGh7T0ted3FPVWtNNHN4'@; put 'aS9gWkVMdGg7JWp1diI/QENTeGI0XW4kUXRoJF9+RSlRZGNpTG80ZnckUTlbfS9iRnlLdTRJbEo/YUYiV0s9VjFsYVYkQkYxO2ZCW0RBT1JfUWNISFFnLyhLPW1yZzBsdCtfR1pPNV5fNlt3KCtIT0NZVjd2IUZOP3peJGBIY2JDUkxGbH5IOmVwVlQ8aiY3dXkwaDlsL2oyb0RyMjg+WkRRZSs9'@; put 'dyE+RjVkUmdkYW1XciVyJHZ5YiQlN2hUWS9CcEthfms+bH1bUVoxSTJKLF9wT3B1OWose3U9eyI5anZrZlAqXWZVYCMoZWB3e0ZmYXtSM19BWnRlP159fUE3YHFNWzhhYURPL0UvInJxKHQjfHF4SHJkJEoqOV97MEUxUCx3SmJ0USgjejRZTl5nYyt1bWBxRH0/TSo0I1tNXkBuVDlsS2QsZ25Y'@; put 'TWxtQDkmV24kNjVtM3xadVluJDsvbipaWV9bTUdMdHE5MFdNeGRCOlhNeE41TTliW2VPLjtqbClWMUcoVnZFImciXihidyxueFQkLGtsYHZXRk9xNT0yV1VIWmEkUzd4RHAwVG1LK3Q4QDpwY0lIQHMvIWFrQDNxYXkvPW95NSEmI1s6QEs6dX4/OjhbYjgseCEkKUk+OWBJQU9WRipdS2whLjds'@; put 'PEgielFRfE4lJGU+Oj5acll0S15LQmsheENJSTlhK2kjd0teQG42VldRSnxGeFRlRnhab3VXUVE2KSY0UVFBUy5AfG06XTtdL0FVNm86SFEsKUsqWWZgL356MyFAVWU2V1BWXV1hQ0p2ZWQ8WnosU28hdCwrb0Y1REY/P20oVGpJdnsmVkklQXh6QTx+bTElYihpbVFeUlU9O3krUUtmPixAZENR'@; put 'OCVgQy9lZkw+IWVEPTxDRFhHdH50fEhaKVk2X2YwNF9mOyhDOX47c0FNZGBYKThYd20wMn08dSFHIkI0aVdlVk5beyQ8QVFESVJpdyU+fTw1JkRrYDAvJjhxT2JMRShNeVcxJCF9Sjs2NDJOMWx7aD5CbU1xMW94e1lhT1Jlc09kTWU2Nlo4fnYuZkh1fGgjVXNqem5VTlkkSTxQRnk7NU8uO1Q8'@; put 'RC9KPEB9UlV8PzUoKW1aXio6ImEkMWRlMTgvbSU+Xl4/Oit4fk19fHRKJjdpIW9CfD9rcjBlODNiT3klKypfcHgzPzo9TSVMZ0RKdEA8a2woRUtvZnd6LyxgczAzOmM2amBfWE8zVVRRbDJ9VWlIX1BRP2xlWE1PIl8jJV9sTSRMRjtDQSFXJW94NGJwdHU9cEBZdCp9dXVjTE1eTj1SLiVLPjN6'@; put 'KFRaImxKeUZYYHJEM047PSo8Nn0zVFQuYiV0d0RnUW9IOzZNNnpHfjBkVGdUKHdxcktWUmZRQGdMXVBYJUpnNjpDZGVlazYrYW4ra2UwXmlELn1TR1htfitALHIzcUVoLlcmZjpYVzchMnxveHx9L3t1InhbR0AlYUw7TW51Lno3eFh3OkRuVWdXT09ZbylDd0VmaDkzW3lBTENIInwxZ1FDJTFs'@; put 'N3VsUW4yTyNzTV1OfSVFZ2hDIVJtanA0Wk5lWCNZYFd+Oiovdk8zYilEX1BPa2h2KGIpYiliQW41Lkd+SCZwSlY9K3pOTlA6KGVyOWwkNCosdklRcD0sQllmVUtKdTY4L2JFQD5vL3BHK09ERFgjWn1qOGooZy9mNTchTStaeTAiWCpPWiQxYVc3T3F5SmJnMExMYT9SNERWd3BRQ3NvKltrTXEm'@; put 'Ync2R1lIM2JLIztSO1cvTTtVM01sZFs4d1U+RC8pPWVYViszQ0AzM0VGQmB0MFdzeiU1WExUWDd9X3E7dnJnOTVYYFNsL0A4KU9seGNxQndETEhadCZJMzJ4NS9ob0lQRG43T1lKQTZGJSh7TCZmaF8zWzJrRDR7Sm8jIjgxfUAiamAyNUVXLFkwZVRjR3VUSWdbVEBPSDpObzV7eU80fGsmK2FB'@; put 'JEdBcTd0d1M0SV5YJl4lMC83ZClVNl46UD9iQzR4QVNzcVcoUj9hW0pQUz41LyokPS9LRT0qb1NDaTw0YyZueExoMExfalBidUw8azVoWEJ3ekd5ViYrY2s5ZEw2Q2UiS1Y2QyFDZnRKP2tIRSlOQlVxcFYmS1d0NVlIX0QqfWAoeGxkRlVWbDBVdSk9Qm1TSFhdW3tFMzYrWXE3LltyQ1dBIXRz'@; put 'Y2xNWTJjditvXWRXT21TPGsrIUpjSWEsYz1VPGtCQkB8YXUvPSk7QVdNcGZbbEAvL2k4KEtCUmg3QW9fcUtDNHh1KntgO3ZbUTxrblQyJiM1UiFRYU03Rzlwd2QjRSkxXlNpQXloQmQpZ1VCalJDWXh1ST5UPGtXaUUpeCp1VS5XKGhofkhTSiQ5Zj5rOS98ejBjVEo7aztbXVFuL1YoTT1IdWN2'@; put 'XjkoSGIvUVFjWFBxc1lpNHNQTkJ1SW1TLzkxbiM/L1g5LlgyejR5byNwZDREViojSjcjMzlTeUoyNk5kYCo8JF9hMWQ2UypAW2VLTiY7dVlCWnU7XmRne3FbL3htPCRkNTB3MHZQdlg+NHs4WSNVYUYkWio6R0E3Mls1PClfc1ZZKF1UWEJ1KmVbS29nd3kxfkZkdEVBMkJ5MWpIXWFFTStIeGQ2'@; put 'NUxOczBIdjtOLzhGZGpPdF9pdWVrcXh8MDttV3ZKRCpxdlBKZ2ZMRVlmYSpnTSRPY0lkPUdJOlo3NWNTKHVIVDExNnheV1dvMzElVUdUTCY7eGZJLy8wPlcldEU2KkY+T3gwVmQsUk9rXUdsb3lbMn0uZzE+dD5hLkthc1BJYWI0JWovT3JRNldNdX1vTD1pSXF1KSF1Ok9tLHMmdV4qYCZtbW52'@; put 'LnttIk9jXVJQZWJRNSVNQFZwfiZIUD1tNkQpPEE3R2hJNzBiTltlS1N+PUx0eWs5VWd3OnNzKDBbMHslRnw9dTF2eGR4OlFxUkxlekVRWVd7VEo0Jm1+NVI3ZV5oOj0qUTc4RX5WSjx5LFRtM2xBSStaI1ZkJktMVyhzRCtzJD0oeCIsNUprKDBlMG01Om1UeGtxUX42SX1dLF5+YTdNeiRNZylV'@; put 'alZCMyUsdntza2ZiXUBCdz53dV9nIk42SlluUVBoaEdzfmllZEohdzVFOCZsImN8YS5+MDwlIzpHMW9BZWt8VGQ9TUUxOk4qTF1APWhDV3hfdWA6UVFEMm4vSTMlOWQjIW1WV2FPNExGczA1aFg1JilOWHZPUVtqXTUlJilucFFKRUpII2pIZFpuZTBtO1l+dXdEVCxnZHchYTtaVGNFIkMxNEpA'@; put 'QEQucU8rK0hGIjA0fkFtTChIPWgyU3hmWkZZL30xRClgRGspQW1UPzh2Qjx9QV8rQjw9MWdwcDVTIXFsWWE2NVMwKC93Onc8RlQkMyJ6c10rOHlEWnFDcnhtd1g9QX50aztzQ01rfEtII095Lzx2Sl08JUNtQiFuUnV1PTIvInQsUHV1Xz4xdHlQeUNQL11WRTpCXXssckV+TXg1S3kmNCgvdTVj'@; put 'a1pteG1lLm13QUAoTFFEW3lja2IwNS5zbXQ1eG1xVVNiSS9XMz1yRlAqVWtqejR8MCRbKGpKNmA2SldEazhlb1pXTixCNCNnLHI7akNUM2pwUVVSd29VQ3h2YjhOOTU5JHk8USlsbjVGPUdsbT15enksKE1SVFg2JHdHempBT0BMeTcid3RHXSVDSSJZNGV8dyRdYUtxPUsqcGM4R0diNiZ3LCp1'@; put 'eGtBQGpdW0JNQEVvW3E3a3JRRnVDMypeVmNQOFhCRjBbNywsel4pdno5eG45SUhgdGxZdFlWSzNyeSVlNnJmbnQ8Nk1WJGtMXjN9Vk1wRHZuXX0uJkwuK14zQlN4KmdnTHRbdSpDLj5TKWg9V0R4eSxNWFk/bEdwbCwoRDx4dyhrVEojKSQ5RFJ5NXEvcHooSFMjMFMiSitnZzspOkI2L2k8YiNu'@; put 'al5RJUQuTT4xMyhfY2pSMHY+NUhTZz5XdyNJfGliajMmWlUyUlFURU1wPCxrYGkxb0FlOFokJXwvZVVeL1R+P0xzI0Vqal5JUEhEdk1MWDVVU3R4YSpNT0dBUzFaX05COlpLUGAuckFNdmdhdC8rWjF8KSw6WDl4fiQhbFR8ZlEueE88P0l1YncmZ28wKnZ5dzZke081WD4wSnY1Mn5DL2x2U0BQ'@; put 'fGZtbHxmc2VuZy5wJFd8ZlkrdF1uKzk6SkloeXQ2MER5QD55K1IuYVl2MjJ+IVQiRGFaNXUhPkczIUlzZkQqQiN3fGlOb1kwXTFKd0FZanpyTGlsKDJjPTJiMHA8OG9+Qk1LQHJtZUh0blZeLExQRCRURiZFM3dHeis7RmloSzx8dDVza1hDYWA7dncsSHZjR21zcjVJN1g7Nzc4bkVZM3wzP2J9'@; put 'IztbVV1iS2N8KiZALGlffUpoKjtJNH16VjRSc3JEfjhXSjtVeC56fTw6LiwkSH1MPCNtelZufVRiUHEsIX5oMSt1TVE1U0o6UWdkOSFFa19pKjM1KyphL2JhdDZOUy9fK2AiRWJSYnB6Yk8ucy5KIUBgTDc3KmNALmEsLj5ATz9TcHFqVV10Qi89cnFMS2NzXyQsZl5lNUZyNGU0fnU/RzBbeExn'@; put 'cXY1JUNwSntCWHVvaDtfbVQkWyZ9ZkFDWW8sSWRsIVAlQ2VsU01LSk4mfmluUUs0ZWkvbXNjSyZeWkRFYCRRWFJnPCVOcFM7U2tdJENsMUBBXT0jdnVmVDVLUT4xZGdkS2pyNDtgJHZxVy80TUopSXd7TnNvJngiXWFUPnRaJCExSS5SfVNoJkcsWko9PD9Ld3ovPyVvSFU1cXpscm4/cz1DMk97'@; put 'cXNDdigxJVF1elZvcUxxNSgjJGI1a2pwaCZQUitSbT8reHRxZlpILlRKa0RkbFF5Wl9jT191PHtbXUVuMUhyOTBEbF4sITZpbExKUVsiR1o9Ylk+Llt+bDNqbyJbN2JjOTRrbnZuW0Z6M0hMITNZdiIhTDZXZntWalRYS2ZmTmJyTiM2Vnx5ZyEkNTZYPnIwSWg1TEptYkEyNmRnSVNmODtVOEF1'@; put 'KnU2diMvXUswIig1MT8sazJ1SFpnUWFrJFZ6ciQiaWx9dSszP0pOKEtLPmFdQyJ3VSxfRGpxTVpfdyNNfGY/cldAImM1dlZwLDxHMHlmPVk9PXxnVlpLJSo2Vk9kIyR4d1NvJX0rdHRydm9YaCoqIkBSTj97T3tAJlRdOXlXRFkufXpOTHZRZUB1an16e3BUM3dSM0NJRkdleXE+elJ2QHZyVzAm'@; put 'MkdEfEJ4OzticC9PeUwiMyp1SXVkZk5zQ1lsVD54b1Y8PDxaU19jSl9FZUNHVntpbFkmLkliWl1NL0kqVVFXdHoiTnAxflNUeFY9Kk58ailsWmphL1dKX3xiSSYlJGFbKHRLZjI9QylgLyEpd3o/OXJCIT1me3coMj0jWEo5Yjo6PHhuSER6K3xXVlcjJTpvVl8halEsTHFPQUJlIXx5dk5jJm1k'@; put 'K0NYWzk8QSFkQEVUOitSTVVAOU4hWVM8REg6bl8qez4/UWMqIX09Tl5SQyVgLi9tekd3M1Bhck8iWmFBZl5Ubl0iS0hZe2BEJC8kYj1RJDk4KEx0LGI6ViUoTE94LiFTUlVFMSNmfjBrXTZLSlk8d3pqfURvTCMjREhlPX4zJjs5ZVpIbHJ4K2hGKWI5UCRFKCtIM3JYXj1pXjpVZ2JJfiJRdHYp'@; put 'T0BlJlpyJUhdTGpZRH5aZm8wPG9DaShSUTZ9X3JOX1o2fGt9MCRfTEF9X1VhUHk+OCh6RXVOY0xeNF9EOVd5MCIpM1d8QmBEP29BQVpSZUtjRihNUmtmRD9YcyVCXVlVXXV4dkNRaXlYamVuL1MmaGswK0A3dGR7Y0B0VWNYW3N0NkBEZDBWMit5RjJveEB0Zj9yZFYjUHEqZ09TZCQ0eStuVHpn'@; put 'eWJvI1RNZnEocjhZZTF4I0ouVVRfbHAkRXEoU2tCUihzbURBRU52TEledUlMKn56T1NqWmQ8fWsmbXwxcjczSDh2ejVIV314amMleX1pdzJeO35BOEUvJChYbSNxLGkuUH1QPyg0KGtxXm4kV2pxe3l5JUB4Si9sOjgvUyk1e3A+KitidXVJQ1I/KCVzdWElOVo6X1ZOIVs/SHtUaF89RCVgcSJd'@; put 'NW5jYSoicVdmdiZnRG5TZChGbS5VJFNUJCFkekg1VltnSGdpMSEpY0AyZShWaSo3Nzc1SXduMi9KTy8mJWpaOWdmaWsjS2VPXVFCRSNBYjYxK2d8YmFtaSs9OjwoRG9iZWtnZ0BpVTlxJm16STRIe0o8dl1WZzJ9TlQmViVwXSMlQkkzMzJTSkZ8KFBlai9uLmxbZ3s3VXlWL1UpOnd0ciwibzRP'@; put 'RGtPa2c4P2MpcGpEPn5GQ3RfQjR9e1NjKkp6UCMxfWVRTEpWVjgiUyMiOHdMbGEoMmQwMSFIUlssfG4yUndLNT08QmtOPDp9W3lfTVt1NFJnTHFWRnN2U1Rxfn4lQmxfS25aTG9XMVJ4ZEJqJmBvZ1F3eHE5RGlqbEQsQVE5aGAsa3l3OVNaR1EpMmM+QXZPI0Yie0E8MjdpeCwhMis6QDF3L2pE'@; put 'aWNEPVJXPlouaThgZj9CS1czSjtoX1ohfnpPd2NFRnc4fT47YyovSkZ2TlAyW0FNLlZCU08yY1lRfnJ6bCFkSnYlRSZuei92KmBDeHdxNjFNNDJRYm02ZnV7SnI4YjMkdGRpc1RDYz9ZNUw9Ol5LdnRUOiIqQ2cpT3F6KG0mQik0RU1xOS5dflNaan5ZWSRVV2AjcmBlTzt2YzMvYnwlY0o1KWku'@; put 'OiJCMW5oWXhla1M5ZzF7O0VCVV5FMihqTkZ1ezthYXdLXihtKVJDTjAsM20zUDU/a0Z6YDA8VmRzQ0Q7Zjs8bkZmR343aUE8JGs8UEc8aSp2b0dSQSpXOTsoc3opeE88TVN6eThgKzg7LEIqYE1IVHJ1STEkWnwmS2M+I1I7djtAdkBBSytHXnp2Y1dlSmBfNVtPaGkyezEmTkFrTz5lSiJiOz9d'@; put 'OnFGNDMiSDY6LjNkbmRtU3R3em9YO0whbl4sd3NwViRsND83NGlGIVR1UXUrfl9WYztWcFE/U2J0ejk2KzBSTy8pLiRyQ25ATDAuQkxQZkE+NWsuZ28meXEzci5TTkN8UntMJTE4K3BxQXpuWF1KKDFEVy4oNlFwZ3c7U0tmWS9GUnclITQpMkJwIkp3SCxHdD5GfmNjLFteZz53WlI6elAxV3Ip'@; put 'QT0mPUVBO2x4QjtgT11CdWB+OmF0fn53d0dZeT98KzcqUGJzZTgodVRCI353RHFQaklnWX1xTmtgcFtXPltLQT54YD9vY29PbkUycUkwXmBFbn0+Q0gleXVLSHV8UXA6Mj9oS1t7RlpON2d1NXkiSSFzaUlfWC5oPmhweEp0NE4wNWpmYHRwPHhFISNxbVVYOEp4TDRNb1VXPjI5RkhfNkhoeFhh'@; put 'Nzs8Y257I3NTWythMzckLlAjViZzJjpGOXQsd0RTJExsUDZISkFBME9SIntzKF94aFNyW0R0TkJQPzouQ3hUc3FXMkIvIj9HSF9kdHZpWUo9JDFzTWBpWU4sWi5oVWl1OHFCVVV9MSY7YUJJJj5xWFY7SSgsZnZ4T0EwMUxaajc5MjFaMXwxdGE1JXJuMyg8aDsyPypPd11LP05PMWZkdEVxJkFC'@; put 'Qih0fTguNCRqc0E9dnZubUtab29PQmMvVF9BdGs3eDtDOn1jK0R1S1o3XnhhI2MjM0RlISRpQWApPHlLJHZ7fH5IVUVlYVpbPVFjY11kcntPLnxUMkpiZmRLemsuQCNyWkNvRWUlLzJwdiVHRip2KFQ+YTY1XU1rKyJWe3src1hdIlhbNi5oLGVxaiIxOXNbYXEpaDVUXmtvOG4wQlg0alNWITl5'@; put 'MV4+eX1Id0RHWSFzR0c1RGRfUz92c1QoST4zaztJdDZqO1s0X1JJUWlZOHtVfjQufUQ2Zj4sKnJUWDF8KyhQNmkjbiMpIyFqWUY5XjdCKndeNH0vK3dGOlIuUVcrWFB8XUlRS0lNZ0xiQSkqOzAhU3NVO31pJFZ9WUVWX1czMV5Ja2g1bCpvU3Vmem1wI21oUC4pYFlZLyR8dyp2MUdXP3hKX1dA'@; put 'dSkjMFRLWXtwS3NmOGw3byNkdkAuTDg6ODE6bUxCMmFISU4kdEpERjVRUCI8OVlRWEl9SFFBRU00Ly5SPVpzajcrTCtAW2h2XzJdRTxTRSZQNiQ4O1BGRTA7WSVmUyg5cFt8aH4yPUlOUCI0Y0QrdzpbYilpc2w4Z15oaSg4dURDKyEhMD8jWWt5OXJXJjVyLz5WIkp9Xz1lUVUoXTohP35dc2tm'@; put 'ZE9nPyJWMyQodjdSXWozTkxeNllQU1Y8LE96N2h0cnNjPzYiOGpNfiJsWGRgd0RzK154NlAuMDNJVms6d1RnLlckTT4qMU0xMDpfUjwocDBgLklAUjt+XWs0UG1ha3NwZ3o/ZiZSVDpwYHR3dEgxc1hkNXtUOEBBdjUpJFkpIzZbQV4pQTheWjRjJC9CYkNBd1hqOkUqekNoL2AxQ25bWCg8JkhH'@; put 'Nk5CRnNfcFdsImNwbT9hWXkraDBidmEmMjVAKz83Rk9ENkkyeDcyLmgvK0FJRDNUcnYjRnoxU3dJTWMwUk9OJVt0R0VMT2pjQmQzT1lIOmFrdlE/aWFRKUkhKHolQCowOUIlaSQkIllJSGlMPHclR2VPaixsZyFCMDo4RlY5K2lCWW1nW0FITWpWODBxZy9ZendjRlJPZC9iUD1XWE4xM1JOMjMq'@; put 'QlBWd0QjS3N3elddTjIhbF8lUXpfMmRNSTlLZ2N7V2dJTzB7Sm1qPldRRXxhSUg3cnVCX1J2dT0rJFFLdCYxbkczajcqej8mKmpuI0YuR2tjZDVbJFR1Zj8uTWFPalZnWUtTU3RvQEsuWzJpKlJETnUpWD12Oj5CKltKKldgUkJZSEU6QmAxeTZsLDxJVUpvQFtELD4ydXVJVDckUjduPkl5KClQ'@; put 'K09yLiM/VyYyMUAye2VsX3IxOmkhQjB0RGYoM2B2Y3RUSm5TbUNKYERBeDlgQ0Mpel9haWtuZHNrazkmalZFZWpLW3QwS2lLZXVPNyRAQ1UoLDhdalJNc0kzPGgyKE9BaGdfOzVDakRsaXpfUTR2SSFBPDpdSkpsS2Y9XWR2Sik2U0tDT0J0P0FFZmleT1lXKTRieGpufikvRWA+Onc3UWZLeHZU'@; put 'OSk4b107QjFsVmU7JEIjS3B4bkQreGVQZTV7USN7PiFFWltdJE5rZG99PHI2MSl7PiViJVM1ZXhIdmtWIlBVa2V+ZWpucVtvWDM7X3k1OyF7UzlmbS8+bi9kLC9sZ318THBKSiN8VCw4YkJtaC5IKTIvbCNiNWUkRF84b3xBSUkjMERNZUM5ekYueEkuIUVnP3hsUDtAaF57QzleRis2PyFBSVF5'@; put 'b2ZGPFkrdWFpKyVReSh2NCVySm8wRVB0SXQwT2oscWkhVWVLZn1QJlhsLDg5bjxOQyt5OCJeYF5TJDxIWUxxdUtwREpRRjxBM2xzaHJuYn10QUZqKyg/XW06UDpSbCpVQUVhbU0hRCRpYXk7W3dPbXZ7fXBCKXZ0PD1Fb1llK0xkUncoU0kwPDdEJShzQV8hPzs/Jm9NOFVOVF1qLlZdPj5IWCNj'@; put 'UF1xT3dQQVdsTi9KSFhzYGw8bDxsb0IhYVplWWxaPHBOfGgpfThReTBnWnZiN3gzeElsK0lIbHh8MXZjcDpXOWY6RG4jNVBdJkNvdnQ6UDFkJnJXPTA0YyFONXpsd3xCNzdHQDsleXd0YU0lOUg7WXV+d11hfUJKdVRSS0d8JSUvQSl3NGJFfT07STdFKU50ciV0KG55NHZJZUNabV9vVlJZQTxp'@; put 'VEgkSTV4ODtdJW9tZlNnRTRlIXRQUmpaOEY8aWc9PyE+ZDlKUDhJS0Q7PWlLS0JiVUFgalppaWVXeGIkYFBkI2E/OGw1PFBsbnFHaSNFbXA5V107NmB5OkNpRW8sYk1WZXU+UjAyfCEiaEAwZjgycy8zSCJbZj0xNzN6JTkyQ21scDQxc2Y4V0EzOkVSeXQ8LmZvdiV7bGRCb2xIbFIoLmBtOCpl'@; put 'Ln0iK3ApSTY7fURmaSUlZ3g3MiMqUiU1aWd9fCFUUjBGdnYxc2dFJns4a1ghWjg6M2kzRC9XI3E9bEIhOUhNIjZuUjBGPCZmeEhzWSQmcDFSSWkoM3tRZX1GQExsM0k5V2ZMcFtoe1dzJlVQPEU7dmtKbyFJe148aXRMXzhhYiVDWGtzZmhLPj1qOCNgbFIjX3ZrRGV2KiNYNmlhW0lXKipvTWd9'@; put 'aFIjKj1SbHhnckhsK1BGRWhONG98XSUxbVFxSWxDbnVVPHQ3VkI+V0hBbiE2SntYJktZJG5GTWckbFUxQz1EYHx3X25XPSEqT2UrO3ZsX00kSXAseSpebS8zQUtYRTgyWkskKm93XVIuJGBQa0xvODklZnhKV19IPlkxXWhtM3lNZXAjMzBwIzpZVWw+a2FQLjomOmdASjlLOmoka2F4PTFQTm9o'@; put 'IWVdJGlvejt3Kz0xUHppbnosdVpMc3dLbDBTYjJOYjE2YjpObDBTYjJOYjE2XVU3ciExaSNPV35Cc3BeWUU0QC51a3lKLHFvVntJKi9TRTE8JWVXTj4pbGJyVmo6V20wU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyNiQvYj9La3JxXj0laFJ1QCVFWWBzK2I6WmQ2NUt+UiRFeWpwcCNDcDQw'@; put 'JjxiOmZyP189Kj0qQyttKipLNkhAdHllJk9TZ11OcSQvYl9hPyg/TTZIKiFTXl93SlZIU0hTVHVKVjtHYUBwJC9iO1k7UU9IMXd4O1NQaTdKQE9zKFUpMyVsWDx5Unh7QFhZLykxRTdJI0AoNzl8NDVrWWwsS34sdWt5SixxMV0xbXl7K2Asaj1QWD4lXXIkKn1raU80YCR+QSg8fTF6bXl7MCw7'@; put 'eE9ZTDwwLyxrdXRXZl1pWHZkZ2ZUNiRwXlIkWFpUfWhtSEssXUBrRl1UUHFSYjImPDt3P2tBbz5uZHk7d2N0eWVfWWskaFQvPXI9Z0AlPyMqOlFpVCY8fEllP3pLTXVTOCQiXnlqOk1pMUNmbF5KUmY/TH5CejxycnBwQCh7UXkofFZfRjEqV0M/Z1YvfTt+NGojX3hQRFJGXUVoWnRwMk9vTH07'@; put 'T0owQjQoUHRVWHRweDloMiJdS2k3QjJDaCQvaFtDcnc0V145amdRSWZHOUpCP01POUpidF8/QzxkcDo7KkU9RUNBOkFASjUqUEokX1ZCaWkidTZDQyJUIXJQeEY7VDtMX2ErSG4vTyt9XXMhLks/SHkrMztvclp0UFdUWCV6ZlNITEh6cE4yRSx2OUtePldqZyFgL2NzN1hrX28ubHAiVDddUko9'@; put 'KE1yMClmU0hMUGxwSnhGelhie3Q6NH0lOTZvbz9ZTGVDOnYyU3d6V0BrdzJTZjIkTDh4JXtidkZmTEdlaUZCakFVcVA7IzRTeWZjaypMfT8/fG5fdWRJUEF6NSVTWlA6KVJnakt3PUpeUUAkaURNNkhPWHplM3Z0Vmc/Sjl5eSptaHNJbz9fQ3o7dzM0WlBbWFNnSUwoKEhMKTciKm0qWlZaUHJC'@; put 'U2cuTHk9ZUVPcGdSano7dzckIlksPXxKXz8lP2BKNkhRYEo5V0crbSJ4TW8+bjFkbkhGZlo/UDc9aE13c00vUlVmTj9QNzt3Q3p5ZTYrSEhBUkd5blgmdFh6UU9MendvWlkrNSJZZVN3ZyQ0SkBydm5nfTkyc00iNVouYTchL2QqaUdzZ1I4NyIqZHk7d3xXWlBwSFQ2Sy4qYU5vZ1JmXSRpcHo7'@; put 'dzFjMjIhWkpIOHc5djtJZVlJanl3dlomRzthPCsyT2hMPW5WZDdTQypGRXQxaiolRC8hMzdITUYlTFg8P0IqZVNyNGgqeHc9diJFIWsiTWRCNE9TT3JaYkgvSGhMOHdMMTExUEJ9aDIrL1IkailhJD9QOTJHcCRrYSw9MVBfPyRpe0o2SFVgSjkyRyttLzBNb2ghMjptKnZaTCVSTno9MVA0aisw'@; put 'clgmdDN6O3c0TGdEQTVzQyFGb05nd3Y/OUI6T3pnbnQwWGNvYCl4RH5FM1cvUnI2eERpTD9UUWlFdmJGSUcxSXxqX2FKMD5Jb05ZIjFYKXcldEN6QWo7MTFQaGpjd3NNaXdKNSNUOkl8SiV3QDEldFh1VkVYcSx4N3hSa2RvO3g1RG1BQkIyT2ZRQTNpS2JMPl1xbSVVZVEhSzJAJmBwdFJPYkhv'@; put 'TkBUWWl8Sl0kSmRTZElpUU9pPUJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZgXXUhQj41c2ghWX5CIkIiQiJCIkIiQiJCIlk9W3FbUmw7LFtafWI1O197akIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIi'@; put 'QiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCImJzP19ZPSJ+YW9yfkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCIkIiQiJCInR3enxCImZnPn5RZEouRGRNYXZPSDZZMERkTWF2T0g2cyQuYCxqLjh5'@; put 'L3h7NXdXWXVSdGF2T0g2WTBEZE1hdk9INlkwRGRNYXZPRmdNYXZPSDZZMERkTWF2T0g2WTBEZE1hbDxEZE1hdk9INlkwRGRNYXZPSDZZMERkTixhMERkTWF2T0g2WTBEZE1hdk9INlkwRGRNYXZPSDZZMERkTWF2T0g2WTBEZE1hbDxkZyRqfT0oPFp7OTZiWlBVRVpkYSZmbTUzU28jNkhLVHhK'@; put 'dj0xUEUlUWZLb2ghY0AkaWpdJGksK20qOVBMOkh+bSFtYVAqanBVZlU2bWFsamh9aG80IW1hbGo9MDorOVA0emdmVE4lIW1hbGo9MG88WyRJamE5VmphOVkmM3pnZlJqPTA6KzlQPyFVSyV5SW4vMDldc3hHTn1WaHEwIm9AMDM/LGRVY1tQMzdvMi5kVWNbUDNfPUwvTTFNI09ZTDw5T31HRisw'@; put 'bzIuZFVjW1AzN28yLmRVY1tQMzdvMi5kVWNbUDM3bzIuZFVjW1AzN28yLmRVY1tQMzdvMi5kVWNbUDM3bzIuZFVjW1AzN28yLmRVY1tQMzdvMi5kVWNbUDM3bzIuZFVjW1AzN28yLkdKemUhVndlXmssc0Y5djVnM2htWEtQNiFwMFNnPlRWKTE/YSptNDN3PVRWRyVucU9vP19ScD9fa0AlP0Fi'@; put 'cyp6JDouTGF2T0g2WTBEZE1hdk9INlkwWD1bcVtSbDssW1p9Z1lMTSsxQ2RNYXZPSDZZMERkTWF2T0g2WTBEZE1hdk9INlkwRGRNYXZPSDZZMERkTWF2T0g2WTBEZE1hdk9INlkwRGRNYXZPSDZZMERkTWF2T0g2ZGcoe0lnNjVLflIkRXlqcHAjQ3A0MCY8YjpmcmdSVHVKWEMlITFHb2dSVkAk'@; put 'aTQrbSorOm0qeno7d01ubjYoRFswJVo+TW96JVo+TW96JVo+TW96JVopOjp+RW99VHRhI3ZCMHtxRTYiMSVaPk1veiVaPk1veiVaPk1veiVaPk1veiVaPk1veiVaPk1veiVaPk1veiVaPk1veiVaPk1veiVaPk1vekQodWxNaHttTlJnM11KTyE5bzpQM3Q1blsqWCI1bk1zTko6YTRCeSg/VmFq'@; put 'Xkg+JF1IPThpWyg2OnRrbntNV0koWyJ1ZElRViUzVzlyRXUpQEQuaTJ4VEpZdjchSyJ7dmFZSnZ4aD11YHUuTzJjfHVgUU1FTG81bmUrLF1LVzEqJV11QjZuLiQ6KjFrWGVrRn5tRTg6JWRAO0RjKHs+Wkx4V11IR3U3blRpZ1tYbH5GIkFUWDlXIW5pe0I9JDQ5eTd2R0RyPEV4MWh8Q1o/RmhY'@; put 'P0ZodD08cTpUKDc3aFNCXSh7RVg8QkswVyY2XSVjSkhESSFBSGpDLjRgMlBEZHQ/SlpGbU9AQXlELERyTHdrbGlTSG11Ij4/ZVMlYDI3dj15VDZwYnMpVTNAPV8yYEJ3NEE8OlMiezRmbmJ+dHlXT2UpdFtyQFdrZTNfaW92eD5UYC4hTXR0ZylxSTNmRkJMT3B0KUhebiMxSjw2ZDVGJiJ0PXY4'@; put 'UnJSdExWcHQ5YklPdytYWHx4PkhAY1JZeWQkNCtCeSokK21fT2l6UUtDeWBaSURIb3BPb0MlJHVBRk1FbXdXIkkhQj1Gej0idUxhRkNYamNUYjwpazRLQ3tRTVZFKXFDYHRHP2dUelgwa2BSXXk1Ujx2RT9wUnNFTE9lOkhXMEVQUHZmcTFeZWd0MlBMcD8zTjUjQyoqUHVjOGZCUFU5V2hGKDR8'@; put 'dHB3fVZ6LnAsUmw4I3lIWlQuKmR7Z1tFajxWLjhXRH5Xd0Q+V2hGVThqQTpQdS44Ry9JLDRQRVlJPl8lVG0pZGlhcEtLW2g5THVXaU9OSFpVODpzZ1FpfnR7NXlNM294WnZIMXdhWU81eFZ7d2FZTzUwY2I3Qz8xVUhaeUJqN2FQJDpBfFFUWFowQmpXd2UrLyEuUiRNeUk6MUo5dzlMfVkxNm01'@; put 'TzkpYzR4Q3k7d3NWWlB6Qks5KWNrJCJZXW0ieEolX1RWdl9kNis4IThQbG5iYmJiLkVsbk5GXmZKLmwuJS90NWw1bTEhL0wzImtBKWcpKllCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5C'@; put 'X0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZRcEImQj5BbkpxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImOD1CX2xyQlVsckBXQXFCJmFQQXFBaEouQXFCJkI+Ql9BcUIm'@; put 'Qj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxQiZCPkJfQXFCJkI+Ql9BcUImQj5CX0FxdXJjPVpzQztdazY1MSRS'@; put 'VnlHYHltWXxXdXUka0FBbXg0a31RKUU1RkpVPSxWUlFDJUNvQWV1K1t3KT1URzVfTSJMUUFnQXVXQUFYTGRaZkw4KEZ1JT1KWjgoSnBWd35fT3hHczY8VjNxZUdTbm04ZGBDeU1DdlovSENTNiIySltxL348d1FeaCoweXVSY115cVs5WD0rV1JfOF9neCFad1JaK2YxJSxjPWwyN3twRkB4Z00l'@; put 'Kn5YZSRwSzVUY21ZWlpJcyM1R1g1OmN2NUxAb0RseiozPWpeODs4YnB+NVVuNEAhMzVqd0lWXTRvZEdsSkphXXRZV0xQOyRCUTdkM0hHVTY0OyJ9RjxOX2REYDRWeyp5QF5+WXtFVFJGL2YkVUpiRzFGW1shLl43M0VIaFBvbjtMOUQ/dH1GcSUkK2FUKXtiaGJoQlA3d3hFMnhXWXsuL3pHYH5l'@; put 'THliTitRejhkREBKL1N5QlZHLnZZVVhUa3IyI1VySGVMYkU0Lnsybks1X3xCL313TC5APkM7W2huPmw2Zz9gT2Y1PGB0QjE1fWNxKl1aMDxxTWZES2U5c1pAYHA2Um5+dTRKYSt5a0U0aTBOLl5PV0xGNDxZIyNEbnAwU1kmPlgobk1oYmI0IjdKY2x5diM1YzJnVCVZZUszOzJUd2xUPEYifkMl'@; put 'Wms+cDAhV0J4VUVeWC9RcFV2eSVGcmA9VXJtUEhZOzdVL0lWdTl8OEUvUms2Pl1kVUxRL099Z3VkTjF3PXtBPHtKJkg7aS90LzxQfl1TZzhYUFFyRW5RTC59IyNkPFBCJHd8QGc9b0ZfRklefT1LYk0sInUxXnBxaWUsVGJgZCkiTz44UzNReyM4VihUKTQkUiRVbzN5Q1l9SGR2RV17WXpnenpZ'@; put 'OUBnTkFfNDMlaTZePnhTKSNKWF5RK2l7bkUmcSRWTnczcCU0JDQxMC5QVUE+dEdqNylfVy5seCJVeTNpKGl5TURpSmBSc002V09RWFR9aE5haUJFQig7MkMqWDd6fmNoY0pzQHQiZWw5KC8vNTlzI04lPExHKmNWNlBtam8iRWpiJWNvR29NPnVJPjA5TjJTVCRzeTR+eWZnVE5ldzFtQywlTFJe'@; put 'ajBGeXk2NnRbcS9ZUE90I0F8PkUmVi9UK1N+WSQiKVJbSlF2IU15bmQ9ekU2OD80OipIcCVBWGt9WWhrXXx9KXshRGRyfHRiNTFIR1hebjVlbylPWGpIRFc7LCheS0MpPH1bPSIyLil8enlIbm1xQzBQI3F0SChZflRVeDQ4KEJlfStqWTc8I19RTmE2Uk9nbmk6XTB8NCl0dTshSzp3bkBUIUMv'@; put 'eXpzXyxRXit5QDwzYFlMIzdSbSx5O3Z5LiZSOVZrV1t1NmUrOUh5TSNhODR1MG9bXT5JZGEqd1dZKzVKeWBYd2ZfKn5DIlt5SDM0eihfcDxhOSEzfTQ+OSolODlJR09JZztocEgqfjBuKWE0dlVCS2VETGxNZlhXMUhkfWosWTdJKk5fIXN6KEs5VG08V3R9cWxHUGA3RWopXlcuZmg3dW90QjB0'@; put 'cnk0bmA0PX1jMFM0bkQ7aXtIb0h6O3JBc2szIk1qPHp4RiReI2V9czJpclJwTGFwQzEuPztAbHMsNi8oP2NWYEZsS05HfSVbPTA4ZkV+Nk1rZFo9b1k/YTApL0MmJVdaQ3hWXmNRKmduLEspXjcjQytbNiZLRTIxRDFYeihBKVNnT0Fqd2VXflkjOTttfUJQa1A5PHdDcmZxVFVmfHpfRD49MUQ+'@; put 'Yz5hQ2JeKExlN2xtcCZ+UmRdfmlwQEg1cWRNeHFUSUhuYEA7eDF3RDlyUX1wJDRSXV1gfl1LJG0lSyJhLGYzUitzRGg4LFhJajgrUjhaN3smNlh2UDc7emx+L09XOTIlXnhaKjhqOnRwMFZ0Q1FrJFAwREp6KFhGXzQ7LC4zSiRzfC84K0xRZ0pnKihwNnZJanRsfSFnLFYjOm1vSFtvK0RvZSlt'@; put 'a3Y9UCxeNWhOPDk9Xy5LIms3TnEyInN3Tys2S0klWT9RUVJ8VDtja3FJWXp+TVJROn1hI0klNFtAW3VjRFp0bkk4PDkkZ08wTXIjazVYPSU1LCp7RlgweilNNj9tLEFuPTVlcikkUHciOj94MVlrPX5LMFd0enkpc2V8My8wRV56Q2ArLF52Wy8oOzRkRHBzS0NHLH5oSE9BW0kweklfWjkxTVdN'@; put 'I1hRang6Kl5gQi55c2NjUFJtJkBHcHdDTnU+N2QzU2wjYFJOZUYsSFpfWi5dZi89fUxoYntgVnk4ZjdocVhbUE9sXXIxcEdFSnAhem1+cGFPPC94VFU+OE1ARCZjVFg8RyI6cE5VIiFINDo7ZHs9SUlvdSttLyN6Yk1IYD9aPlcvZ3dteDcrUFkpdVAsPnZzSnx+NUZGPnUhUGFvP0MzJmNoaFdq'@; put 'IWU4c0FwLypGaj0uTWZKXkFpU21IO1R6fGtbNjFfODF7PlVjSHUrW0RgJF1rSW5lZ3YmeF9AciM4OF1ORlN+KVtoRWJ4OSFzb35VUVBzUkshVipzOStiMm10KixHNSNedGtYe2BYNUd9RTViXlg9RyJfNGIwUTpATSZ0Z3k4IjFES0ljWi4heGZ5KXgmJHlKfkhfbj8/KUBheWZFRD1MWD0xInYv'@; put 'bDZ5JSl7MjdKU1ZzTk4jcFo9MUFRW1QkMEY6YHopekwxVm5aKzdMdzJZakB2W098eVI8Ryx0Y3A5NVJIeTk2TDxSWUBQRHlrNDRjTyU3Ok1QQVBDS0UpYiwmc1osZH1GYT84X0NfO2EuanI3Rk0lfUJ1WUJzN2olL3U2dVAxZiJsYH03Il8lbSpAWTleOz80SlBRJHtrLlI8OGY/JTd3O0dfYy9I'@; put 'fmIxWFMxcXdEWjpDTmYzfjx5LkBweStdaHxEUntyQzA3Lzl5WHZNc0RaZH06RUBEX3V8QnhDRzMzMW1ZaDYkO2ErW2tNPWBoOXhiTlA9aXZLXXRYIn1xdUJqaiRkdmZyR219RyJ+ITBUdU1HRmhBIzIuW3syOkg6eEAocU4xWGEvUl0zIkZAeSlscVJQdXAmOERvZHpqPypPQk05enhtbkplWkhN'@; put 'N2MpLHU5cT45LHlNbEooTV9oI0EjOVkjejhiVk98aClxN05NQUIoNzpld1hnPFRPK31rUjouTmUre1BdTkkzK2pSe0d7ZzouaCxYWD1Ob25sam9DeVdlJi81eCpHLytCX311VG9hI3krR2xvMlV0ZDB6TD5dSlRNMVlzPzAzNCFebis+dT8/Km45QEhpXm9PUXpde0thT09jNnpdMX0zeTxGaSpw'@; put 'PnFrQE8xWToqaTs4eHtyK2siflAlIVZGcWs2NmNWV3ZwWVdeIkBOfUwzZiFhJihsJS49JjwuI3JnQihUP1VbKipJZ0kydmdZbyRnX18kbC96OUNjRnteUTgyQEpoTH1eND1CXiF9MSFBPSlbQURtJGE4e2tfQD9mST1LdzVUdFopZiNybTRYaGxJKCY0fTg0c29JNWRpPkwseEp7XShYfmduXTQh'@; put 'TCVZRyhPeWR9VDUzMG9YPXdidXdiQmZ2NGQ2NmxEMFtrVElNRFlGZHc6KC5bRSZvWmdXRDZDbXplW28xdy40P28kYTJ6YS9oQTZHOGl+UFFFQGdsS0JGemFeWmBBbmBaRTg4K10/WlBvYH5mOmhlW1tZSF4oUHc5QG80TXVpNDF8LjpHTjJLWTpUa0AhMUswOzUyPDlKczkqOElURl1jRFV0cHoi'@; put 'QGZ+KzVSJVZDVVNZVip6alM5JCFvfXF8Ulh7ZHlGLC5Bd1FVSUE9cTB5fSRqdGtQblArNT8/S0RlRiRZPXZFIylmTEBuW2dRRmR4OjZyfSNYWj4iNHBbcG9EXXNDMkY5U1ArLzdHXWBuPDZUfnQyRFAlWTs9KVhHT2xJRTw/XiZebjxxNCZgZVRsbjJVeHs/cjdYQ3huVzNTcW8rTlRabH47YHxT'@; put 'bm4uX1tlZmRDQSo2NVRQN2ReVUQsK34wTFklbTcxQCxSKTt3NW1HfGNSYyNJJDk0YDJgdng3Ujk2JHtwKUgkZyowe1pJXndARiMybCheX2w9fCl9WFI2biFYdkFKKWBzJjJKWysqZCp1ZExBV21uSUN9VSxZcklULDRvPFhtQzBQJDJPMGYmOkV5ZDRiYVJGe180SkZeP0hZcV4id2t0bT5lOSlO'@; put 'USosRDQqNnZ7N21NTileMUkydjFDZWswVHNAVS8/aVB+PTk0T2M2ckIqM3RhZ0YlUl5KR3EkQXYoXyEpIjAlViE9MTwkV3g6PU97JHk0bjdzdGh7NnZqVyo3V1ElOytSTlY8QEc8YlZ9LCV1SXImcDxQc1E9LiJZayUxVkY5YkUwVSxKbHVTWnBXayFHayljS19NMn1DZVt5dnkpdC4yXSY3RVRk'@; put 'UDtPRHwmcS9iTlpmUW8/dVRPT0V2SFQvRCNVRnVQbWFsdmhsfShOWzJdIU9JbDZVOCNnOi9DdzhqO257TH1bVC88WnA/R19bWDA6QkNEajFNKS8jOkB+PlQ8c3VDaGkhaTdOJHtDejpfR3YuXj51XWM/dihIKFMrUSJ4IzBlPTFIU2hbeVp+M0kwMns7PSxsaixCRi9bVWI6aEc5WEt2TF9NbmIv'@; put 'OGMpUXB1Z3ZJJmEwX3ZCbEB0ciNOe3p2MGBYe3p0QXNJbyUwRjo9I3tpcGFvTjRUWnB7aTNgPV58U0B9Zz17RTRzfk49L3UwXmQ8Om9CLm5AI3NvNX1xZ2l8LEN9fSxVRSUqOWQ5TllDak1tVSZCT0k7c1YqZlUsR3khJHA+MiE+PHxLNGZrPWlONm8jW2NeYUR6V1I7R3tRKkVFdHd1TntjdTpT'@; put 'YDswS1dISkFNKFU/IV1ebVFDS3ovZH0vSTJGJV9WOEMsVFV5W1A6SEJLTU50Uj9wUlZJcmpLdnpSOGFUN18lQkpuIiNGUGJqJiVWcGEvSVczOHlSTCw4TVl1aEw5b0BhRTZaLkJkblJ+MigoSj03Si98UihLViYuQ1R7YGNsYVQ2JSwxRGJlIiFTcU1EUS59aSNhPjhoOllpR0NLWj9yak0mUzRS'@; put 'cyQrTmkmQFRfOTUwIz87dFBFIjlmO3ZkWiome1tGbiVnfSlZanBnYk9oRF9TV3ovckY9P1loV2NwbHo9ZCJQZiYhbmAwZTVec3M9SUJyV15UfFgqNDZBfSVtQVZ0IlsjSjo8YE5BZmcpZmwxbU8iUjc7IikkT15yI0VzPkt9VjlhU2lMMH5GIX1lQWZBZkpRQnM3W2ZOSH5KdzM1QHk4ZX5POn19'@; put 'WzNyKD9zeHpJbjlocWkuMU5vVV8waiFIa1ooQzxlVnR+dihQTll9RiU6WXNqeGs3bWIzbDkweTF0TE1ycUBycDUrRXtbZWllfCxWfT1GbSh4MjBZKCkvJWsjRlFme0xWXU9pQUlzKkluKFBRZDN1Ll4zP0p5JVFCKiVFbUo4I05yNHlCaURtYms3JjNab3p3dT9GQ14+WSVqIVchPWFfdVN2Y0FK'@; put 'KSVzWilTSzkpS3BdVCM8dlAhciYoSFU2TEdGZC4vXlc6YSlbIkJpTldGbDNQaiE1fGVOQHY9NGA6JG0payZbSEskKWk1cmM4RjU4LzJALEY2PnBoKlR9M2kvIzo1dG5DaVFidWtWNUIzUUJUbDxpSSFvQChRIX55MTsmfVIkS3l7QiUlZj87VmJVVj97ZlswT31QTEQ3N0VnPT45OGdxeTRfe1J2'@; put 'RkdfJE4mcjMlMzAhM3tMV2NJXmV3Qm5mdz15IWlmYCR5ZGkxUzJCMX5SdjluS1VHS0ksKnR1NWsiPVJ+eVBWJSxjKXUkSUl4IkhtJFM5RFRxW2lmcSYiZmB7Pn1eJGJ9eVV5cV9tVTBeLnlpcEN6VDA4R2VLNlQlfkdLYEtXJFVJdHxKcjNQTj5lbytoP2J3PHBWImUhT01paE1pOH1LdXNsc2Zu'@; put 'YTFLZVBOQV5qaFRZVHdicUorKTJqY1o0S1c4YEZeYCtxZXMpa1ssbTo6fjUjMTo6WTtjeXFMYnw1RCVuMGFWVnxiZGdPfWkwe2l2PnJJdmp2JXlUZCg0d3MhQTs3LCE4Wzo8OyZ4QzFARGR9STo0dSNwbUZMaTVpS1Z+eV5QXiwmIns4SVg6d3suJHo7NGRnM3BhQHkrdHY8ZWU4e2A2KH0iMzN3'@; put 'VztHMyE1VjtaYVg8L0tCfTN3UD9rRGROLHZmaCI7TTpLXkdzKnZCYk16S1NZeVF0JSpbMCk7TndhOX0zRDhXME49W3p2RElHeXs6SV5ZT05gJCQrUyxDWk1PbyNUSDdtfDpCMGshW3EhXVZfV2s5Jm5YJTRpRnA1MTVnaGNRWkJUfld0Q3FaVlluIVcpTFJ5QUFxVyJKT3J5ZlM4YmAxQVJITypu'@; put 'amdlTk1LREptIVA7U1ZtWDohXmNePlBaTj9bNHE3ckZeRylUWXFONSRQNkdmR2lLPTdwWlZZTSs9OUJ3YTQxTSEoKnpVa2kmcXdGSWhMc2ZPZWxxdzo9U1BHbnReRyIqKkg4W3RHLHFdeyY6UGNqLHF3K1hfaiE2XVZqZWxrJERQYSsmcXc8b0k6N31TMkdNR3Q7VD03OFVJckZOfjZObWElTy9w'@; put 'ei5KK0wwVU5zNTc+bUAha2dtL0BHV3Msek43Wk9sWkY8VVFbPmFZP0Y4djl8LndxdyY1aTxEfWR0M01jTCNJbTJiWlcqWSk9I0UiRjhiSzk/Y2ZXaSJwXkc/a3VuNlc5S3B9QkM1V31xYyJOcGJGfENteXpqXiQ5L112NlhYUis3d1o+aHRUPXkxPTNZaWRZeHY7JjprIyNQa2NHUTspVEdYN05W'@; put 'TT83JXF3e006bkNNLzB+PXxPJCwsTCZMIWJLTyF4alMkXld3fkZfZjFGb3RfOEx8V2NuTV5qfFVmP2hNOC8iOCU/LzRmajJFY1NYdU5nQUM1LDs6fTJ6MVJVVTFqUzBWY017NF9wKjUkaTJbKEgzd1JtPENuPXRwbys1N2M3NlMiNiNEYitEMihUR0JAJT9kSkdhNFZkJE1YNUpuZTooPXZXTVJX'@; put 'UF50PVByTm1tYzh9az5lT3YwZ3FlR0N4PC5NPnZaXjJ2QGhCRFImP2ZeYWJHbVJKZGArVFEiPnQjVFIhI0ErZjU1XmAqO2QvTExtP1BBdSMjOF1WTyJJKTVNLjMqS0tGWm1rcWV2diVbVyV+RkpbS2ZFYitIV0c9ZlBtSiNKNztWSjFCRiI/N3BnRWpsWik3Q2dwU0BHa2ZjODYzMDNhLyM0ZU5S'@; put 'V2pXQTRlNEQpQjBCdDdibFlYJWkhOFMjO0cjcmhaU0IvXXNlUnhiSilGQXpVUUpZJmkqTWIxeWx2aTE2R0pdKCptc0podClnWEdXNzlJKmFmW1Z2RVlQc3g6SHpWNVkpcWVbeG8iQzFgSVNneHBfV3h0JTE3IyFzWS5uNzM/NDtKc2VFUlQ/TzxmT1puYHF0OUkjbTcxUEQkW3ZKSTc6W1svZkRq'@; put 'VzgoU3hDaXA/d2w9I084dnowfnRGdlNtO2BqKXAiWls6XmBlTVl0NHZtbH52T1JQejxPemRsWUdYYWw2fFp0UDFqRHgjX0VFPnJlNjJSR0hGUj9hOkZlQGs/JnpbOiN8W1BiQiQiY09iM21MPT15ZltfZi5yVjF9WGUwb2d0L0MoIVs7TD9kaCF4dGx1a1V5bVt2fnl3STNTLFdtKlpYXykobHlD'@; put 'enNNRzBkXkxGNDp3KzpZa15dInp6SU1TW048b15QVlAvelokdTpyKUhwbUVbKHBWTDliaHs6fE02WEc1KTkxaWtFIjU4aipjQitGcElMeG4yM2ZoPU5JWDlpQzJSci9qcn14P2pYcVpPOmNjV1llWVU3d0p5Vy5vcSl9ZCs5TVlJXkE7SUhfUFAuOndqdnY2OTcvJHd6d2ouP3phV1hyOl5FMlhW'@; put 'SzpvTXNnVGNdZTtwM25xcyE9PCNiRzs5JjtVeXtOPUsqcVR+MEtRM3NSKC5wP1s+ZnIkW1d5O1JyMTI1WyYjeDY/OikjczUySG44WD0vak1uOyNEZXNeJCY/cWpycjl6bU83eDw8NkY5O2ZAIzhdUFYyZlJlLGdXIz40e21LOyxsUnMhN3Q7VH57Llo6YkppckVdQDxwXldXZGwsVWs7UzB7Lkgj'@; put 'YV9qPz08QDxtZSp1SWE4bGwyRkc8eDMkLiVJSChsYjU7PD08YWxrO0Y7dzdDZF44SDBbI255KjciKnpsSmF8PDAyJTdyckRXTVowbG09cmV5Nzw0M1U4I3w2PE9dITM0OXM7KkZQJmcmbl07NjlnODFebCohKWhrZi5eKlRKIWBLW0Y4aztqRiU6N3B5N1dnKyNfPCw5SHxtJC5iNyR+cjdOUz01'@; put 'VXAwMGV4ZmghIW4zPFIjNDV6JS5ITGcxXSFycjxpW3RoVVFjYnVkdmsxTi9QNzIkTyFyS2YqXSU9b2F8PFRaK2w0SE9aX2IrI0Y2KyM3bDZedDpzYUJhKWxPPU1OLGVEcysuMSNQUWtTOFMhZENZLlB+RCxCfipBfX1gQH5dU2VEV0xlVC9tV3dJansiUm9AeV9uXyEkKHguZ0d0LjV7LzFWYFB5'@; put 'eC4/L3IuRCRjPGk2RjNvQjUuOW1qZ2RnRCtTJWImfSZxfWordFM8dG0mOjNUJUNpRFIzNzUjbm9SKlZgYkZHdzsuPT83ImlNUlckT2xzbzZNVjY7WXh5TUE/UjJua2I1WG0hR2ddU0A3KnEic0RUSkFvJmYzcithMTlPeVBvLCtJVjxfQSo6VUhLWF1uTCRKJCpTTDgvOm00OFFmRHwycXhpKVRt'@; put 'fSozXmldMHt6ZFRadHowSVU9Q19UcENhL2VHRjM3TTRCSVVjWlUzSkt9eEczODVgN197ezImVj1qZ3k6Nys4cHUkXSEyZFVEZi58TU98JiNXV25CWktbc3tYeSYyQDdLd2M0IiRzdmY/cChSLGZnWytdM353bXpnVz1jZVZTWmlmTDl4c3w1emJDNnwyTmxTdH5+LH14eWpfPn5GYElWKGhrfkYr'@; put 'UEBgfnV8OEoqPl9+fl81UyJzan5WQyhNIWxKTEp1UmRLVWl8XXxzV2p+VF90e3NXPH5FfGc9ezsic15+T34zSUF0fnMuflB9UnFMYypnYmA7dVROa1VQQVVgcSp8bm1vTSwwUFlbWUxkY1YxeWQiIWgod0okaGM/IWg1fDEqTGN1KHtvP1F+c31+QX4pW098I3kwQCs8V1ttSGM3Z1lSY2JgfWs2'@; put 'YH1RaFlfe0xjV05uYSw1dCVAMnB4LEQ1ZG0pfkNgPjBFdkxFdWZaJlkwNC9lPDgwQD9jN2BSTT41QCkpbnREUUF0T0AvVjMkdC9XZitNLFUwdy5WIlBCYkxpNktZeCgyN2FLcSxjP2ZaVnZIWExfX0UsKGZHTFglVCpCa1pxQ2tLOldJT1d1ZVpLQXZ0ImUkQTZrZkQxemtVJkExWFZCczFsSE0m'@; put 'LmEzcHVTJEtjc0NHemIzcDZPcn5OQEdJTS8jfiY/VmV9cyZ9M3d0Vz5+Ol9nTlZMO349e0FOInNOYDA+Q056dXpBV0wwdUlwTSxHKnQufEVOfVY3NEMxL3BjVUJyfCt9c3BbUnQ5YFV9ezN6IklyeWkoV1tYUz1LZCV5TkJTK3QyLEFifD4uX0Y+S3x1eF8+Qzo8SkAiI01CR1AsaVRaU0p4Wncx'@; put 'dWh1W257X1BMfnF6clsiNU1YMEJhfXN8LnxDWW5PYShyYV5QOUJWYn4vPVA0NWwwPk1wS0hwQ0orU3hLUUQ8dHoxSCl6S0wvVn0mLHR6ajBEOWB7aGY3Wkd0dnx+VWVfY0w1cFVtN19acHclW147Tj9NTT5LNVYwbjtuXW9PKDE+a29vOSY7Yl9MfDlBLzkvUkMvZjlhJVQlajZnaDZITTY/WTF9'@; put 'YXN4MnB4Q3lecjB9d0t9ez5aSnc7KldaU0t4ZGZEdFlwMD05aCIiJDE+OlhBWCxSMXw8fG4oX0hoIUV8YFk2UlYxUkgmeT5bOF8qdT98IzRmSjE+aUhSdmR1dlFzV0RoSF91MzwpcXlEVT1+bSxfP0gmQDU4X1BAfX5TP2J+bm8qZXU9UUdoYyV3ODoxfSRhKFprdjlbbj8iJDE+a0hkPnJ9LiY8'@; put 'Y05QUjchKGBZUDs5eDAlb0ZRMkBaa3Z2W0xqR316fV1FPSxPfGU9VkIwPmhFaUpGcEAqMX0yJTZ2Y3lOcSsrLyZfNXcpcFU7ey5rOGByIiRKPTpGNyF4PVZOKlA3SyoxNnZGem9FPStUV1ssZnM5a0d2L1BGJm5YNk8qWlR6XnxFV1RyIW5tbWxvPUpXJEV4bnJ+I182bG1jJG0xMkY/SDFGbmwy'@; put 'TWQhbXtYal5DM0R+QTI/QHB8WDouUVIrfTFmKCQ4K0NPR2V6d31hVmhXRSMpQnt7b3QsfWpMUlcxOl9zNEx8bEcqeDYofW5gMEYyJHBpIV95UGh+KUUweTlzJixEP2F2OHxLW15zI3FxOHJ2S1BSfGB1XX0iKEsvemQ2ZkUpXUgkYHJZe30pNFhXcz1mZzsoSEl3X0N2N312ImYoNltQUVZ+QnVz'@; put 'c1t5SiY2OlhJeF9GQzh9QylSKEBoSiZdNnZRYV1NeEl9dXY4czYrYyt0X3ZnRn5qZFt+QklYNE1gdUQpfkl4WDRGe0p5aG5ZLzFPK31Kci9RQD96VX58eilmKGVWaG51P3N4KnN2cW5JXnlRZCo/bkksc1dJZm49JjltVUBYSW5+Y3tnX24vdlFEfjBkPX59dn1zJVdxPyh8fEUzc2NVSUwiY2Zu'@; put 'LixuV2JFYDtIPm9WeH1be1koZSJzVyQ/Q0hsfnhDdFdGXUA9PH1oUFt+akZJYCN+I2M5c0hZN01HNUBkWFttTH19I1g4c3o7bDF8czw+fX50PUc3N3NmKkJIfXc/UWx8cDIlfjhPJSxPPmhLMV9Idz99bSlffnh1eFtQKkRVPnxeeyV+TUZzV359dWo/fk5VWl1wfHJRWihbcyMkW18oWTdzeHxK'@; put 'TCYqdmQ2dCR0VX1+Z2ZXOnMlLFEsRzc4fW07fnNGLEZPOXMvamRuLyIyOzd8cTM7UW5VLGAlMThaNntXLDZ9NX1ILzI9RFVgfHd2Jn5iLk0vWX5BZHt+PzNNcE17clFkc1g4Jj5bXnN4eXxlQnBzeC9JNGhMMUZZPGc5cld+diUsQCxHN0B+UDxNLyN8KUJNNEJ8XyVafEU7PnNsXXxJTmA5Q2xX'@; put 'Im9FYyhHLkNaXmB7aX50UjpRaFNYNCRfTjJffjVRWDQ5fTxOIyRBflR9Jn5MUiUsZnpvVlJbbXpTfmB0aldkSitvS35AcDloV29zV3U/d2RqfmcqfXN6LyhVVHw/NmZuKzFmZ1p+e19QNHxAWlpRRys3K11faCN9MWxkK0Q6VFVmfjAlfnNeKjBbW31PVCNoeEMhXjB7R1ApfkVXJSxaMW9WZHwk'@; put 'WmlXdDQyRil3I2d4fFhrWSg6e31zUCowWyt9Zzl7fnY/KSVMfktFMz5kWCMkWWAoWWxXYmMweTJxKzc3XmA+NXM4MlB8bjcyTDdbOnZQfmE0Xn5FMHRXdStqa19+V10uRjZ+PCgqc3A9UUxOdklWY19ddlB+VyEjfkxEaDY1Wy86IXNvZkZjJU16a1N+UE1KTHgwRjd2Omc5ZHwxV29zRlhtVyor'@; put 'WlNnfmFJP1FhNixvaChAIUwvNmA4eHNza25nKFBgP0lCfmlMbSg0SjNGdSlJRnJ+QSFec1k2IVRSe0ZyKj5rakBNI11oNFhfJkkzK1hebkpuY31zNTJ0WHRCWTwueyE3Wyl9KmFsRHp2Rjs8I30ybiNUbUVrRUpGMW90eSRaIy4seE8uU0pYMlFhNi8rWlNufGAsZEZdJmpUbTpZL0QwXTBnYDw/'@; put 'bT91NlUodSRaOFpJcEBmKSNQSWJ7Jmw1I0Y6QiNFO2Bmek1UJCpnaThOZk42YGZgOjxkJE81OHJlRVBYa3M7IyV8OEFDO3UuVGs6RCN9NjJuQDghJj03fFN1VTtqa1Yib01PXTVlVi5lOG5wRWEsOHE1a1ZnLCM4UkdmfGpgdzBQfjhEOjFeRmwyVmQuODYpPXhmc0E5WitYNz1jayEjJFhwa2Z9'@; put 'SmhCY2w1fmpdNUgpRzAwJFBkP2w3USJbVGw6I0Y2QCM+MXQjUSFja31eaH0xUG1jIltEI0NrJGZHOUFIbFN0ZlY1e2RSVD5QZG9tZnt3fnwpZz03MmxDL05YZWpXYWxZM2dSUE1OOmskNF8vMG81aDAuKlArYytONC5uI25dZmMzPDwxIltHKC8jPiNtMzsqYTgiUng3TXp4OHQ0ZGtWLmdlMFAx'@; put 'ZkEjeGJte2s7RV0lakAje3AiITkqLEhGST8jUlp7ZD8scDBhZ15CWSNybSF4YTtvQ083b2VbI15tKyM2LjZ3Km9wI1dnfntxYUo2KWo6JShscmVLOnpdaGxiYVdQL2o3JSMlc299anJnYXAjIyY6TzBVXT5md1JPLjBdKGY2WlZpOHgvRCo4UyRuJnw/PyNoRX5rd0thOTdqJGpyVSNLVlQ6OGN1'@; put 'cjlsQ0olOSNua3AwRSZSX306KWAiY0sleCpoOHhmODlQI0I6NHpqdkRlcm1LYnhdUlpIeHJnXmYuPVJ2eWc9PGNobSo9N2ptUzxOVUZbXWdAI21TWCRja0d8YGR1VTQyZiVDIztZI2VPPVU9VjNVO08kL2ZnWyg7JF5Rb1I4b3ZjJVMqVVZaJDpgaEBCOyVINF5WL1o1RTtqOSFVNnBpN1V5Nzts'@; put 'N3xtZzM3bHBhcHlmJUMjPzxTI154OTs+W2QzXS5lVVI7cTRyOXwwNGtxPElXZyozbHp7X11RWjBhL0B5ZyNuSiVKOz4wRjtEXXY3Ik85MD9LNW5aJU1ffE8iWWRQYzlOLiMjcUVaUXReVGFVRilsfXl9L2o1SHMqMyRxQV18JDFwN3tZUS9AcFVxXitxVG97bH1KVFskU1haKXEia304P2Y0dCp6'@; put 'cGZ9YVAxfGZYJTd6Inhiej88OilvMiZmTGdtZlc1Xmddd21JQTE2P094c2VzO29ebl5pYns9WHBLXkM4c2V9I3hNMioqUXNLI3RrTjYrTHM6bEFyOzxFI1s8d2UkdCtnbjp4MHFsYmVIOGhjbix3MDZVNnhvPDhQSztfLDdQOSlhNn0wQDwmI21kWGhkcn5SZHh3aDJuflIvQiE5Ni89dDpsQn1f'@; put 'SSo/fGoub2xQc2VuSktNSWZFbGA4cyFCOlMjPTZhcEFPc3JKay5vbFBdW21tUWVLWis9VSFeZn1Ca0VFUFAkd1ZDbHhPcEVOQ18xTjhjb09SJkxEayU4MXFTOCgjWm8/K1dLXyFmYWpnIyVvQH0hZEszPz1nc1hKNnMjNDIjJXoqTUlBcHcxKkozU2E2aDg0SnJwJmd+PDFIW0VWITZFUT9VMmdx'@; put 'TDp5bzZEMm1Bd1taeGA3M0N4N1JJWmNtTGd1eTNmKDhkPzxmKyNBMko4LDprNVB5Q3gvPmUpfmpbZkh4VVA6TGxlR1ArUF9nQiNaeiVdYzpMSiYlU1lkXnRVO2pMc3Y5VC5qOFpAISVqVm1rdClVSzp4QUhgYHg0OSEkOiQ6MG1uNjlVdixdbz07JV07I2BZSXhLOTw2SVc1NnYmP118VFI5NGt8'@; put 'PGwuWVBMTjYuSWYicnFwPyVHXUxsWFlTLnRnSSRYent5eThsZm47TixWQFshZm9BdyZrKkNYeiJDd25BV1lPXixUSGxkZkRkWnM0KyM9NlhLYUVUbzpaeWZrSHZOTHs/NzFSP2MzYmxVWzc5b155ZCM+W3M0RCIoRCxwLGQxU0Zmel1aOSRnXThPbDkhJU05bHFwYmU7N3UmRzlmPGthOGU7N0J+'@; put 'Qnh0NHd0TT5iSV4/aTlBT11mOzc8d0ZsLiMzQkk6N3RMSkZJfE99dGtlWWFsKls4YG9GODwqVGFjejVjeU12KVhQOk10ZiIhJlldNWVqfSRHJE1JYGF3ZXJtOTl5bUU0M2JSNnpJemd5Yi9lV14jYzFmIltHXVR3WSNrZV5jTDZ+YkYyNys8NlJTWj5SbTxXPjdBc2lnc2Vka2Y6WF0wMkR+PDZg'@; put 'ekc4PW9nT0AzOFJ7OGRebjV8L1QjNyZ7MGNhVDhxez5bL2V8PH04cFhiOl8vZ09DL201fC9PXTw2XW1ONmlRSWhhbXw/SHx1S2s3QXtibWZbbCpnYSNZLjg+KmJ5TlRyZUdsWjhvbE07Ll1CZ2A8I2lbOk8yMEdgeDlkWDJiaFdhOGpdNUY2S1plalgsbVldNV9kdnhmYE1nIWlBdjgrczBZOihk'@; put 'RSMlMUdnY3pgTjVaLGMoNGJ1TEpSc1JdKWRfOEojaDsmJHYjcyY3ayZwdiNxZX1HPSNSayU4OyFIV0AjWkpbWzw2USFaSG5yfUIxN2kqUiZNYlRPI3QjPGw/YTsyU1FUNjBtMkdtWj1fdlBEQFQhYzlhdWYuRHlGbmVedSYuQ0VNPWpWcUtnNy84R2srbXZhLDxyXisvQ2QiZE15d3BST2s3dTxF'@; put 'NEo6L1UwYVlPX3wqbG81UHM5Yj9VRH1na1VnU3lMXVptKFYwO3ElTmtDY1o4XTw8ZisjSTtDZz03aFVCNEtkM0A/VEEjSGQ/OHI5UWEpNW5dPzM3YlkqVyNLUShwS2VFXWQzOV4xcCZDMzFbTl0lJE8mcHM7djdSYSZ4QHFIZ3FeeCtVOHd5YnpKa09ackVMUXNTdlp8PG9tITl7aXBZdVM9IVQj'@; put 'JmczUzNNS1pQLmo5RnJNNy5lZzgubmg1cyF5bWpibzNWUG1mOEA3K3JUb1UvMHAjXVIvcWh3Ti5VbUdxXmNMTkkjZWZJNkRkfmssXWIqY2FMZXZVNWokNjhiKjZ6e0NWRmx0MHg1VzZ8L0M6fU9bLmAwLFpbcUc2fC9PXXxrQF1BcF5jTTZpYG97L3hCMCIwK3E/I2BkUlRBfi94WzhVXmJtPzYw'@; put 'JC5MODtWMCpYQCF3KXUwNlsibjoqWiw5SUhrRXxpZWJORUt7WURnN2V0O2x5X0lfYUJiL2pRYGxTWjhXZ1N9UmYrI0Z7cmc2Sz1FT11XTyszYjJDcyIhIl81IyF4S2I4Wn0obUB4enwxZWlOZHVzJEpkPiY1PHttQGFJSnJjPVloRzxTNTR3aC89S1RUbyZWWmo4QjdEL3w4Xjx0cnY5Xm9pOH0v'@; put 'TmwwUy5mN1Fbck9dT0lWSUpyZiFVSjVrMFMrVlJyYj16dzcvYXhPLC9bKjM5b216WWlaNVhNN0A9LDxeYC8iWlowYnBtI3hrbjpMX3tpWFdeaXgwJF1FVDgvXmZEU0s9a2RNYW8zfFNFXWZgbCo4XV9JQ1J1a1AjejVxIWsyU0Z2W25LWyMvMGQ7e297OC9jfT9fN3w6WUQkV2J9Wy9lVUJdcm1S'@; put 'JDNKQCNLWjZVaWhDL05YbzNVYX5xfC40PEBmKjZUZXM7Q118aTVKIWZuOkBxbkslcDE0Zzg2Yj91QVdQWklhNTBadn5rbEt6XXVTXTxbIzE8JjVKOGs5L1k8bTckNy9NVGNeSmJmPDtgZFAlbFFJRn1tbEk/VWc8W1JmOGZsZT0kOndvdjcvPm5QP2UpPWc3M3l4Njw/IW9sJkNZT2hRaS5BXXg0'@; put 'MzBCN0QvXj50JiJZS31KaEw7NDlJZWdhJWVFUCFqbGFXUHYlVS5KWjMmMUNSO0NseXJfYy54Ky5GUDZKOmY+NFs8PFdmOEc4aS8+NkQ6JGJiOn1PO00rZG5jWFo3JWptV0BkJEw6T11pazM6bSN1NFlocCQ9T2NedmZrNGplZ0hVXXcjKHB4IyIwPHdjMmxtXiF4XT9xQlNYWntrfjBkel1mZC44'@; put 'K2xpSnM2LkFhOFpyXl5pMFVBSDskVHdjej40VWgoQHdlQn08ViQpTzM9Zj5MRzh+OCl7VXliO00+UTxDXVFsPiM/eDdwIVVIXWwuUiRuJEI4TTt3WSsjM2dYaEdrV1VyVSwjUiNTK14jYnp1eWllV0o/IUJdbC41Llo7WjN4Zlg8bV57OClpNS4zMGhye290O1ZsKTsmbDsuZiV0PmAqQjhDcEw7'@; put 'bV49NkxkJSY/OC9VbzZfZmBnJVBPJENjNG1jNVZQUlo3bG5LWTN1ZE8kNThjbyMlNDJoMFkyKXVzMD8jUiMqOXwvaiFoRTdlS3l2bFg4LjxvbVFlWzpwOz1IO1tMbDwjZ2FBeHVkK1AuUGtZZypbXnxqISM2VURhcDAwaUlQJWVebV9OViQkTzxlLy8obXwucSRBZEtaWiksPVttQE8rZDouanhz'@; put 'LDNIZ0hxXj41KWpyJURyWyNgPDE1Ond4XWgvPDE2UkxOazdHayw5dDp3YXJFV1BSZjIjPCFdZjJWdGYkI19mWDYoWXhdJXBEVyt4dmxaMiRIV1B+OC5QSjtCNHMhQ2RdI1kyVTsrZ2gwU3M1MDBtUDgzOj5rN2IvajQ1MF1IPXsuelldNXAkNiZiZXclNls7SXMlXj9eLERsNGxqbTNVPWdeW3cw'@; put 'JEsqOFJUKEpRa3xxfXhEO1kyQ3IqITcremZgQiRbVDFNOzFxNTBZSy4jQjU7PFEjVzNHZ2gwVV0/PHhtTHlzYT9VdmtBY1dmQzRQI0VbdzdAMHRsW1ljKkJOcDhzOykjPSNlM2o5X09YSypvImNnSyo4KGRdO1dsaGs8dDhlJXA+YU42MkgzSkBSRjQ7KWQsfllTOG5mWE5kalosdzBFUCNld1Yu'@; put 'ZSY/TzI5OzshUGhsVWJlan18YFZ5OWRBciU6ezh8T0s9Tn0uMHwxVm1raXo+bmFHZmJ1LGx+MC46dVVMZ207VGxJWlJdT2ZJI0Y5TTpnOFFhVHt2T05RMWY8ZEE0T2tiazZ4YlR7USpaJGwoSVJkOF18aik7OGYudjwxIVZ6e3VbKzhSIU9GMTZMeS4rfll7dzA7eDc8IX5qTz14bCNlSjYqdVVh'@; put 'Iiwpez5bVmdqNEU5YXAyTT4jez0oZ2BnZ1YscEVkXSNGVDpxTEhXUEFjNzlzITAkYTp5bCsjfXIyWUFjUWUucDUjclslbEI2QnIiIXltfjhEOjhiWzBgZzZ4ajtvbW1kMWZJI3wvPWZHWk89RDo0NX58T0tOUXhyJWJaNklwQXFMTW5rLzBkVEosbDM8ZGFqTWVHIzlpelM0UmBdSDxLOnJbMEM0'@; put 'IyRxdGAzcDI4OFQpL2FfVS5oci9FPmAqPGs+RnE/I207cmExMmFwdWtZYTQrRmwwYFc2NTA7IXErbXlGMUdJdGZIXSUrSHZaKEo9dnJReSl7Qjs3aiw6Z2UxOH04JWlQNkpZKHh3bjxXc2w+Xl8jZWYiWWxeaGwrI0c5L0Q2eExlWzcmW1YwamxiZUR9Kjhvbl0xZWBFUHpZb0pOLi9rQy9II2k4'@; put 'PyNSI0Y5ezxsVWczQ2MyPDcoSihAcU4uVmRaaXBKPzg+ZGsmZCE8Zlg2VTNnYVBZI1VyRFkzWEtDY3g7IUB0cyRKPFt3MDhSe0BJNlMkSDlUbG5kKiN7ZiJqXyozSjtrQi8kWlQ4KWdoMFtIdFVNTl1SS1FNZV5CL01TZ35rSXt5PXYlTjFdZ2pvKkpDOFdpZDxRJWVALGREbCsjUCNePE9rKF0/'@; put 'cSg8bVNDY0NsRyN4NXo1IlYhVlQ9SXc9NyMzJi8lXSx4PiNXOHcwSTooZHtQLztsbT5UcHJ3NW5ATTpsOzowUWhIPSEjVzhjXngjP1tUbG1qcDs4OmQ7PlVMUTNdZmNuLzY5eDUqQCRmcWI1eGJwQjdHVng7RiNqbH44aVFwe31UIyM3YnEzInJqXnY3e2ZaWTZVWTN2JmltcVVBT05yIS43KyhP'@; put 'XmllbVRKXVZzS2dAVks6UltuXzx8bW9wM3x+NSRYSHNhfVFzcntYMlNzWSNSbm16Tm03NzJiPCNSc1hGdSVeb2FtajRTWnE7TEo7VXw4RzpUb1MlSTw6azYvdXN6YTZOX1tkIWFfKXU4K3g0QzsjJV8xVG97MXJ7UD0rLzU1UCQ2R3VhYGZuZVJJYUUraT9adGEqb3FOQTF1NUplZUV8ZlMkTzI8'@; put 'ZVtbdzBIW0tiVDh5KypMTUJVI08xYlFsTXJFTTE7a2o0UCRJPHl1YElgamkmXUBXOX5rfVBuQHxSMElaO1drV3Y6bClmdGFdbjpaV1B1YX5QfTVFWnlQPUB5Z2M5bXtEJiovT11Qejpsal0hb3ttWDYmeDddQGt0YE82cmxmS3VOfjhEUSZsPlopbE9bKjpLelcjTCQ7Z1BvTjd7bXlgcC4sPUZx'@; put 'MzRIZ2JARiplbENuWm1DY1tyUCMpWFlDWSNPMXFgRDEiMGJRaDYqQGNpTFR5YEx5TG82a1tyezYvS0dKb2t4TjY7dCNjXkhkOzZEOlVvOlpMZyFWIT1AMyx8eGBoKUUzOGZ8YyJbYXBDQjA3L3IiVkpnWDYjZUtwS2ZueXh4dzBNY080NjAlOGdrSTVJRz40VWhxdm8zMDt+anlsXjg3Qlo4czB1'@; put 'NTUjXzZpcGFnWTVHckxnZi9BczZnLD9dSSZbRWROcWxlYXAvajwhPjg6Un5XWSpqbD8malEzME5yWyM2VV1ScW1TZV51THA3NnFyeSl6V21UVHtPXXIkNj56JW5mPGJzeHtJSFNSOzQ5UiN6XkdzTCpCNEN4WV1Je01uU105N2dicmIhXjplbjtibExZPFtfVFhTQzRgZj97Iy9+ZlAlYk9CMVVn'@; put 'OSptcT5uLC9VOH02YWFoZW86eW1xJDxmNnZSc107V2xCNGRnciR0aCJRME9yYXBAVGxZKEZ+NXpPLDE2JCM0U2gwT11FNFozWF0xNmQyQU86OFk1ak1NTmYkQTRicFkyZDt4N25xOGJHckJlWDhsbX4we2dXPVRsJmwrI19xQjc8Izh4WXJ8YDprTSlTKlE8O19GWk5zd2FRVmI9KVYkeDQ3M11A'@; put 'PH44R1daLnQmOltTVGpwOHg1MFozOlJ0Oj8jQzpJV0I0Q3NebERWRn0wJHwvPEs2QGI6KGBMZEpRYj1rY1M4V11sLkx5YkJjRD08RmQqdUt9eWVLXm1xeW1zJF4lUi9maE59STBbSFZeJTFtLjokO0FXUFJmJi85Nz9eJSleVzJrUWV4JjNsVz1RPyVtUVBNbEZzQig7ITo2TGJJTlo4fmtgOE00'@; put 'Pl1uM2d5M0pDN0QvXj9KW2BUYmNzPSs1L3dfdWk0PiNpbVZEel5FNCwpTDk0UW5AN2RVUCQvNzAmMUUmfSw1PSszKntFNntwK2AkOi82IlZ3XnhObWtiYUtabCZ9LFpwaS5lLEFrQGYlUzV7O1JIMFA5dTZ5UHYjXm1BIzFZSmdHbCJSOi8kM2JhLmpRWSVsPmwibUEjbmlKZ3plPCVRZnlldzUh'@; put 'VTtrJnBwMTw+RjdDaUpSMl0lViRtdlUsNmc2PlZ6U2M1bD1EJV5pSU0oW3NdLDxxcmxYSllwbjo1dVRycEhHMzthSFBMWEQ4RUZ4LGE1TmhbMzpuQE9MWHo8Uyw4TmNSdWtKS3JGKCFdRWI0emspOl9AS2NDfCRCOTxaKF43Z1EsR1t5PUpTYGNYfkdzcyxlOypFIzJFOjwle2s7REM7UFlCY2Yr'@; put 'SmZ5YGhsSUVnZiRpcmx8Y2suUEwub3ReWGBTSVlEbiVEMXJbLjZrWVAyKH5faUxzMz5sN3pPJFF7IVhkdmZwaHFjO2hFOWR3K20xJWlnZlMmNWszZjd2R2IhWTZaV2VHSDVYMldgQmg2KF1oS2dUPWFMZTJLIVBPVXJsIzdpMjgwN3Ikd1Y8aWxTKTVRdENAPCtRO09Ze04zNlRhZy5jVktQMXB2'@; put 'OGU3Wj0mRHIhWi5tLl02P3FVMF83MSsoczlALipJUTMlMSg8YyxhMCYsKHkzJUw4PUI+ODp1SSpqSHJKWUFxYzZPWDFgQXlKdWRqP3A2UVd9OnEqcEwuIltKSHxeISs4Ok9IeyVwNGE0cj1zNzNPZHQmSWE7S14/eD1VSEIqJFNYb2hTKTd5MmRdbiFtJjxlOFNneXhGX2VWUjVUNUdfJlJbSjAy'@; put 'YWlUdzU0TWhtNlNNJD1LYGlPOiRGKFkvNVJAdV9mYmltfWJpdy9DU0pTKnYocWJFPGZKWSFRPDZBb3tVdzFLRlFZUT06d2M+NyMhbD9sYlo+TjBFVjNVN2JPP3AsPW9Jc1NeKVEmTmQ3Qkg1JT85dk5aU1huZ2t8bE5jSGFqIjg2IkoyMVg9aGJwO1B9UE1DdUI7Tl1fQ2QlbSNubkNdekRie3Uo'@; put 'OlpATlNwdCgxMDY2c2s0bDR2NjRpNT1db3tkXz9EWip1d1lmcDE7XWBxREgsZEFgYlpkJGlRPHNPO05ScixfbmchV1A8e2Y9dilnRDVMNXA9XzVRRFE8cT5vdilFbkhnM3A5bXZGNSxGUmcmVC5ZLmxZV15HPT4lMzcvJE1qZWRXK1hVcTU1UE5MPlQwVihsbFUraE9ybz4sMV0xP25rPTxRalhD'@; put 'IXgleVNEQjouZ1RpPEdrS35KMWxMdSZ5VHpBZmw5VChmKSY9SUksbEFjTTxRaz0vJGVveyRVMktJKjBEdyhFVUdHYmRnUEMqOlouSj9URn05Sm1iUjZtWGdQJHxvSVhiYy8vcDJ3fXdbZDRZZmFMcmNTKDYja3JaYHlTeEN7UDdlMG1xfGM+P3g5QEwlLyJFRlpJITdPYC5GWWMpLmJKOXs/SVko'@; put 'V1FAZTBVcVZjZFh0U3MqdTV9b1FHXTdadyxeQn1Delpsd0MhZCk/dkV3N0hOUF87dH4+L253NWdLYjBraXAyS1lLV2w5dmNmVG1jTkgmQD1kUmIvZ0hRcjpqUy5HcD0wdzRrLmlhbFhKbnJfLEVfdGchbkxoVDlmZiwzZCpPMypCWVlOZHM1emlqWjR1fnpyW05MaWY5eCRbcDhKaEZ2Izd0Tzpt'@; put 'ZXpNWlMyUUc4cVRgcG4lNyJNSCVyd2xHPDhRTE87c2siWC44QTZdYnRjYVc+cHVUdl06KSM1LDNDR0xFTFlHRnslZklkI2cvaXV+em5wS0hARldZfk82OHAhMldBIUE2JSRyK1B0L2szKmxrSkhJWUdkcXpHX354ODgrXkEzVCE0fX5QPmYkez5LX1FkL289MkprVCs7ZDhyT3ckfkZ7RCRefW9X'@; put 'WypKI0heUGxzZHVufFJEZXdvd0JTY10xWFdOVn1sK1VRKGtUWkdHQno8eyY4KCs/NjV6RDxGUyk8Myx2Z3IzMDp0IzU1PlljVjg3OF45czBjcE5zYV86M1d1dFBvODVQMVp7LEQhXShmVmxDclFHazsyTWtUNGk/O3MjX3BCc35OTyU5dDYpcmN0TWtjXmM1PUIqa2ddP1Bac0p4Wj9mUGZsR3k9'@; put 'OWQxeSs+VnJqZ1s1NyoyNjpNUF9kbClXJm52dS9IZHFKeVlwVXc8RVp3LCF4ZiJyQkVpTl9fSFpqYDEoNHJBbVkrL3csYlUsVjlUdzF2LGJ1NTBOSzxdS1kqbHArU2xIVnVKemQ8IW1CSypURjFYJXg/Iz1wU2ZDVCl5eDQvc0UqIiV4LCg7d21mWyRIYHg3WF4xYjxZRHoiekxsKVIqV2AjaHdU'@; put 'fEg5anFXbHhfVlVGfW8kP1VsaXo7QG8xeWksdERsVy5PNi5jd0lUbU0lfGNLX0hyUzY1IX1GKj84cDhDTWxRQmFzTDhPS3U5JUgwQCJGc2gqYXpydGxfM15DTEhkaEJzQ3VGc1tRNixwPV52U3UwT1Y9PHVGXkBVT2RubjcySn0/eWM/WkF5KnZNb35HIzp4SUVwKkIxcT57JDwqdnpzMVtYKnc9'@; put 'Vj9wN006Wld1Rnc/U015TFlJWENHSnwiZnFqWFspPz1ZWTBaUy9xPnpPTUFteWVdP2NDQkZqQn1hNiJWdEU8a09uPEw9X0E2bjJsO354VEZ3QH14IVdxWilvPWhnVFQqMkYhNyF2L08wJCg1L1ZXY2s/ZFBkUy8jWkhQL2xKQ3dWRmRZREFJW3I0Jit4bmI5Z3Y+XWA6JF14Uyk1OCEzdiRnUDJf'@; put 'eTp7dVd3V15sbloyem4/WT8kRXMse2pfMX1rY0NsbCprLncjbEY1I2hAVC4lYnQkMEBZXVJ7XVIyNDRRRHp0QTtDSEVNKU9AMExzJiYuZ0I7XU4sfk9obT13ek0mezQybiY9WU8lNlZMMChybFRAV311bXBONnZCW2tsZEc2R19FcixDTFJ6ZWNaZWZlYldIR0tYbjt8U2N5PnpPRzJnTFdKcF9G'@; put 'SH1ySl9IJCJnfU5OfXskelk0JEJocUZZWyRbeSxHQTs1TTRLPkQ6Vil4bl5gJGZYRFdLW3hXTHhrS0coeD9wQ1M3Xj4yV3tWUHorQWIpNDlOPCxLfSgyLFEuLEF8SHV1K3FGWUVNLkwlQ0RhK1ZsQUUpOXxxcC9CQXc3LzJCezp9R0huWl5jP0lafjs6V1s0Y3g5LmlUUkIiRTZyNlopNFd3MEdE'@; put 'PXNxNk90dFBYIzkkWiwkSGxdYGc4NTM1L2FGZHVoSz5oSDNHWil9dz4vd3toYTFVaF8vOVorQmNsSlhnWG43dUNTfXRhT0VOQlBvRnNMPW1KRikmdT07PzVfRH1dO0ZEODxOLiEmNkZzIlA6Tnk2SyJ0dGw5b0IrLE9DJnI6WjUiTX1iY21heFVeP0dhS319Izp1ZUIyQClZVHttJjZLV2NwKkEx'@; put 'M1g2OnphLDU8Zkl5a0VIc3B8fnpYTCRNUSlwTEkrZUp0PDlZa2h0R1lxVDNMezZ5OW5ERGMyYzVfXSMhMlpSSHg2aUo1P1YpR1VsciJaOyIzN2YiV2U4VGhjI0tTUVdyOT98biFYMT8lI0lwS3lRUiUoOjN7YVh6S2F6OGtGTEZSUUREZmhFZHUxQDszWih5Imc9MVB6UW9XYlBPMnUuZit1cTJN'@; put 'VFp0UUZZKEhObjdfVSt5Imd8UzM1PVNZTD47KzpecHp6Y3IvbHVwa3ZhVXg9Y2RjNl0uPjZlViYvPUZ5KS8/P2cjZSo/S0l1QlR7TEtfdHVid19nUHx1MFp2dz5ga1FUUSlBVjwpJW54TmQsUitNM1ZKbjs6b0E1aDFHbj5LLG9KdDcoJCl6eGlHKSFiYGxJQV5TaHcjaGN7eXcwLz47MFBKRzpX'@; put 'TC9tXVhpPkprTUQoIWJ9MEk3RCxIM0QoSkwiKExfbGhGR0V9R3F4aWM2aTBlRylLVnw8Tl1jVyp2aXJ2bzM0d05LcXkiI20wPDozP25ARnN7cUxOVT5ZXzRIRDZpNCp9ZDhneUxvLywuc20qPG52VFJhUyRNZTYxKyk7c2xZN1k2NnVfT0NnLFRDNVZkfDdRTWFIYF8pJVpPciFGXkVDfmRJV3RU'@; put 'OXFPa0ZTW350OyNKMXR7WSE1SjszWCQlSithOy9Me2NoWTxFLik/Vm0kO345KU8uJD05cXxeS182cSNeO3pHYi5ueXtgcntUZC5fUU9fejclfmMrMC90fHxWciVRdE5jKVhqbSVddEk/P2F3PjdRfmJ2JWx2QmMpYil2MndpQSE5I0kpZ052fUVjN0dQQF9gSyJ7cns2NFtGVEFPdD09c3RKSV1H'@; put 'RChjaDExWj9LS2Z7b1RDcloqQz87Ji8/eyFTQ1lSSHV1JDh3bjQpKGxoOC9COl06OUghW0tFYjA1Wmt+UHh7b0FFKnlyVjVzJExqIjZLZmhrUnhHZjQ2cFc6MUlNNUp2fH1GUWZdJkR2Q3MpZlArQTsoc281aDVHdVBwWX1qWF5pRStWdHpJJVgkP1A/KH43JkQzYXJoVWpQRTomWTYiQWwqbnN0'@; put 'O2BJX2hKWTlpPzt3Uyh0SSZ8SlBwKypxQld5InwiPFA1Z0dAU2BEc3IlZnxjWDxBPWJgW1hoWXsuSnhaWDl6YTEiI0N+ZkwsLmYsLD1JKXtFS3VJP0xnTzBvZClpS1M8RCxGSEZJOz47XU03UiEmJkQoOmoyIzwpPUslWCRJVSVXJU43WHIlZDpbb3BNeihYJFhYUllgWF5iOmp+T0tVPE4hJlhO'@; put 'MGkrQy5xISFhVHZMR043WGBdQ3JYV0hMWW9AbX1OanZfRjByI2F+OUlOSUA6ZWR1I0sqdkBBc3tnZnZyQmc5cCw9Yl0heFA8fHwqUXhFPSRTeS9SPl1Pb3k1fEhsaFI6ejRxQ2dqdzI/PSN6RVVtRiU5MjdkanNAMlJWPTpKZnRMNHQ0cntOLl02XVQzTzs6XjJafF89I30qUU1EZW88aHAsWj9v'@; put 'XywkQmBHKEVRLEZVZGEvKz1qPzw4MV9pKGc2UV0/UGE6fER7KkBMY0csMnFoUWQzTHhRQjFZXXhiUVNOWmssRyhbWk5nP01zQH5wdHpnKTFFbGhWOiNVN243UnNwLzZZMm5Eayt8U3NPTz5uZC4+byVtOmEyYltLcz9hLGlxVmJfalhFcD92TCw7KCg5aHd4eyF1T3RuO2ZLdzRwWVR1KXhfUHBb'@; put 'PSZkeDIlUVMiJXlWI3woMXtnRlVYR3xFYCM+UGw4aHU/Jm5OWCE4S1U/KCRlWD00ZDg0fXJKazlrKURtUk95JVRqLlUlYCFyckpQPCttJWQybyY9eCF8T1ghLjdAKiZXcUJVb016eipuVXNOaXU3OTNPSlkqP1hYdVpwcVp8eGJSKExrITpRSEhKYyomMlBvenpmJj8maU1IU0tNJjZwXWpGZSJz'@; put 'WUA+RlNWXkRsKXovT1I7T1BEU2A6KDlzfHEpe0xeQSUldDpZTEg5QD5GUypiY0pBKTF6Ql9gTXk3TCtuaHAhe2pLQURGZHBBN2FMMkJObHMyJmRQQmlFPX1oUTVTOEhgUTs3TGt5MixFNzlrXTMscjAmQ01IcEBDSjlreHtDR2ovNV4pTnIyJnlZaFJHRHdaQjJHWmNUc2lAV0k5dFloWjp7ZW0v'@; put 'TyFPNW19Wy94amcsJDlbKyRtPFQhRXMlK29LVT1jeFYmVTNVKytqZmA/dCVrdTRFRyRmP2ZrOm9dYHAvOnNve3daLzVCRjByRWJYU1tBRFJ6SzZ+T0oxZCpFbGgqR2RWMjdrRTs7VUx5L3RTSCVycHQ3P3trZS5RMiV3ZGV4XkRhMiMuWFhPU1BNNEdoUW43SURAcnIsZmswNipaRkYzOEpFVWNV'@; put 'NjxmOntvMlB0TF53QEpGSUVXMndBMHBmclViX1JSUVhYKW4+RUNHRmlZIWdoL0dfdiE+KFdTaTR0InVfVXhbPjsjQj9jKChYSiE0flcofCxiZX5vMiw1PSZfUyNTPEQidzJfRDRqaDp6P3JfY1IsQWN9dEdrISpTNj47PDpDZlsoJXQpWWR1azRsRXl1bWhkOigrTSx7LFs5T1gzTmxiNH0wVGF0'@; put 'amhUUE9NfVVhcV9pL3lQfC4yQSQsVC5hcU9yMlFEIjt3eWpgPFl3SnQhVGlWWnMlNn19NXxDPT1yMnpJNnRfRGBYe21LfFlQRWk7JTwybjR7T3JhKGpmb0g1R2EzYm9mTD0jPjh+M0J6NkE+fFVhQjI5IylpUElOU3NEajZabm0oczNYKjA4R2BwPl5PfHI3OjltNFlPdkdaITx3JkV0MkZFNmJM'@; put 'RHEvb2ZoR3hTSTA4eCE9fFtLTEExfm82VVdIQDNRY3sheU5ObVcwa2koQyMucU8sUVIpdDdLMUhBcyt7S2tZOS5fJEB4UFhkOz8xcUN4QDZLVkY5LkREQWBSOXhBY3syV2JhTXJoZSpZSWhLPDtoNTtRVnx1WFk6XSVTbCJWbT5jNTUrSm0pU0teflM2ajU+SzppL0xOYl95ejE1PCJJdmxeL289'@; put 'UVZ0VHVqKl5jQUJybzhuTkloWnZQR3pvMCpPdlBMLyskeEt0UTFCdHpLcjVEVDwjbWkiYz9heyVlN3dXNzt3RUR9WXt0WlI5bzYuJFJdXkhzNTpORlhwWEp1WTN2aFA1bXY5VTtJPWV6ZjduWUxqZDlHXjN3UCVkUS5QRF9EPlhBVyhjIXpoaD1jUDcuJDovW1Zpcn5ibmM5RzJGT09lNzxdKUp2'@; put 'QD51IkE7Iz1JU0VIWk1WLHxCWjFiXWFAbDtBKEIwWUJ4RHZmSlJjWkU0ZHFtPG5PTEM5XSZFRTMzPllJVyxxPzxPTVJbSlIvenE9SCUmOWhvb3FPezJFWkNkODh2fkdRMEVzLmBoWTZRbV9pXTwwLGs1dilaIkZfTW1oMip+PSM6L3QlO156LyhGPX1KcDVhTSQsbjJsJTRxXUdrPUl6bzdzZVI1'@; put 'OHQ7aCFyRngyRSZrZUpXTjsjRTZfWSt5XnxLSUNScTg8PTRkM2MjOTJPPExhTnZKfilpfUNNNEh1aFhJTEI/JFsvajhdV0pWZDtqUyg3R3A4UjxFRUs0QTZTOUwwVVN0VmU1RSF3WUosbTdpNDIoN0w1NHNJdXt1ZTI7L25RTWNQMzddWy96OGJLd3U2XmBDPmhydXxkMnpFbjFhU0RxQFRxeihI'@; put 'dEQqJGVXMG5jW0JWZGxgJipAR0JhKWFnUClecEgybnNNWjVfMFs1UmdUVGdQWikpYjpEPTNkcm06N1Vsd3RFUmI1d1dJJkU3ZjlKJFpmPyluTEdiZC4+OWUzeFQpcXgqWjhIb2dNN0hOcks+dCRCTmJjTmwsWE0+eD86TVlxUExYdX43PTpJbEd1KVRDXWJkP14+ayMrYXY8Xk9dR11gcXslWn5n'@; put 'blRgLy98IlVAZlVVR3RQe2QqMDtTRGg0aj0qX3xYbm92JnU3dE8kbTZEYFJAU081YV1uekIlKzgmWj9tfHxOZl0kV3p3cEFrWENaN11NTyUhW1ZYKzRyS3AhXld7a0xec2FyPVZZV19QPzMqV2FBUSEoLlk6WjBuLkZrSmw2QEwlY1JGVilrbjZaXW9yY1FnSjokMCE/fUV5L29nbEdeM2FsN3R1'@; put 'Z0M+OzIkVEN4Wno/cGNGb1pBTDNgckQka3dXeWZeY2w9ITp4MCIke0xVZG8vXzN6bFJKdGosWG1POlhUKHcoKE1eaUZZTyU5T0heejtDPmJSViwjU3Z1S3dxfWZWRUgjbllCd0MuJCtVSjg1ST5wcDAlSXE/MWJFeX1XIzh5Nns0Rl9ZSDN1TWIiWmd6WWNDQ1Q7c0JRRWRoI1craUElezE0KFZr'@; put 'QFhySz1jSyJTLl5rJDwkPyVYbV03WTJtbVd9a0lrdz1uaWU8cTdkSm1FMFIuN3g9QEVXPHxVRn1RYnFaYW99eGIxKzZ1Wz5Oc1NlYk1kaXpzUSlCTyFPXUxvSkskcHVvcVo1aCV0QkZGc1R2JGltUWZofnk1diRPL15uN312ZlFWRTBFWH0xaE82cUNSdGRwOCNddCx+fS5DTGBuLFY0ZEM4UzdJ'@; put 'bjBQej1uTWIlWWtqWHRaLkdfeTAvfkkxckcqdnFbWjA6fiVndTApWWBgL25oLF9VaGE8WEgsZFkvYnwhcHszUnl8fHgrVXU5YWFCWjhOQUskPzt+b3hNSixQTHBKS3lwL0tVMHI2Wmg6fktRSXZoaX0uTENBUU89Jl41WHwlbXZhPGN4eSIsc3JhfDV6Qnxwcm1OXzpYI1dqbS9aX1dOeC40SCZA'@; put 'OCFSclhCT1JKaj87TFkzOGI5TkcheG5BeWBlc2Z8fnpNdTksaiI7I3hFRk1jPGQjOjN8WHVMbV9yO2M6NzpXQFBHXzsqZH5DLEIqLjY6WHVuUT9HbF83T2MsS0tUdCo0ez17eUUlZ3ZoaEo6fCxqLHpabmM7RVZ6blomPCVlUT5WPCVWN1IiQlZBW1Y9Lz47RHsvdDArYGolZG5FcHFWKWg0cXAv'@; put 'YlReeGF7Il88SDwrT0p0WV9eR11Oe2NZdSlTW2JXQjNmMiIuJiRpWl48L21hKmNNWnkmZXg0fjp3JDU0YiwsLCUzYHdvNUxAY1RhIVI7TCY9MHEkREw6JGhdblZNJVh+Q0Nwd2pkI3cueH5QeFohfnhhNHxlPWxhUktZTmBgOz4sLFpNVWF0KGdrIUt3fCw9OSQxWWthKmhTe1twbkdTK1dOQ1dy'@; put 'Kms5WkJkKjlAZzU3MFQyUWZoOC8qW0ZgW0l+b0RraXhsP3B+UHg4IzYieWZKOH5XaC5aQWJ9Ijx6TloqM2cifDMscj4xODo2OyZYTiJ2MUN8bnpUOnBCNkokZTo+OyxkRm94dE43cTlELjt1a1N5X0ZRIytqb2Z2Yj47MldvekRyQmBsK2Y4Rkh6ZzxePUxYX2F+byFzdmFRMFsqKDdgWCouP2VM'@; put 'UldtPztiMHZ2cVUwMWVwR1p7Pldzfl09IiN1K3BodEZwS1peSjJhWUVYfXlnLEQrTWpyXl4+ZFMmYkIzciNhYkdeUH4kaiRdX0ljO1drOz47LmRQYCtJNzNAW2t5WyxqSHV6YF0kUnp6Imk6aTElKmAsYnBwLkBgaUx0QWZTS29NK2dIYFdLNFhlP2BpXjEpPXh0fXhwJCFEV0J6dWZyP2FNRmQw'@; put 'IX51NlpXRVNJbn5MPjtHe3hDKG43eHQvVUxZd1lFI0I/O25qKVpFa1FPYjtjTFMhZUxQdCl4QjQ4R2RCVylAbWM8PyJ9MnFdQ0pZTjcyU0RQOX5XLm5AaiooJDlmT0FWTkhudGxeLnlCV1RsZkV0Mj5aZWVyaEJ6b1E8UEJJd0kxcipZazZdRmA+ezNDRTk0M2Q/emhoWjpKR0R7a0llXT9GOm9p'@; put 'Kn0iaTNZajZ5I1o5RCY7dno5YF4xbWgqRzlkYnRMN1ZYJnZleSNXbCJpM09oUzgxQnVaXV4mPWBScFUxckVibmdNUGdCPzxDNS9IeUFoRSJmME5wZDtGIUdvXXljKytNZitrQTlAYlRgX0tYcD1sS3F5KCJ5WWhkOjkxNChUdDc1Iyk6V0JUSUA6OzEjMjJTe01WRjpaTTt2MWkoQnN7eWMpMFcq'@; put 'TUV+OiNNalF6N0Y1YD1BYH5ZVzVyISRdeysiVlFnUkIqW0xGMDpfWXMqaWw7VjdDKW5VT245ci9CQU4/dis+UF91Zjx1TFFwamI/SzNOUDNIeEI7cGczXVRLRyk+TU8/KXtjVjs9ejk8WGR1bzRBNSlwdWRWWVpCcnZyTmViJnZWL3Z7Oz4vMVNGTnVMMXA3cXs5THlDSntPVHBOQVhnZURMY0tw'@; put 'dEBZQ2QsXnh1RjMjQ2NDTz9bT2IhUy9QZiRGZVRPOWh8Ik9kVW1MXnlwbS8jWE8iNWFLZWUhR3FSV2VKVT8uaH1OQlREYmE3V0ZqZU9AZkJQZFUpWz5naUZOL1cvQFM/KDp5NHQxVVhhMi5kU05VNkk0fF1Gamw3ZipSPEZedlhhLCpIVTVPU0NyM1l6SWZ4fnlURHouOVI4RjNeNjQuRldFNElE'@; put 'aTJvdGEwN1VdflN5Z3EkWEI4WWthRzlgdUZmK2RSYlpRMmFkTS98ZVg1ZXpCZU1Te308fCp2NnIvYkw/PzE8IzYjVzV+SjNoMHpYX3AvdFo3WiFTMDRseml9NyJ+XmJMXzdGMzZ2OjBYSktGU3VUcE1wL0Mqd1FlSlUrYmpANzYuWnRKdH1TeSleTUV9ZEpVWUZ5QF1XWTQ9IXlDdH10bCttO0RI'@; put 'ZXguRF5aW25NQ2NDdF1XeXpwN34zMDwoPWJvWGF2Tik0KTlBRHZiNWlYRHg3bFl6YFd4PysqRTw3RjNQT2Rbbk1iLyRFNXZCREo2cix4cnpbeGRoRENlTVMhfmhYM1dYcll2IVcyVkh7InhXT2d6eV57R1NbZUg4MFAzc2d0O3lUJSRLZmlTOyRYaTxGX1FacE93c2ZpIl1lbEBAVUcwNjtZT01Q'@; put 'SmFDKW9seSF3OixQfjcuKytwLkNKOUF3V0hiUEtTWl9wRmt4NFhMVShVY0NrTmltXyFvZ3c+JHozYltCQGRKVSFiVTNoS1V2e20hMm1aeiNSPyZkemBiRXYwOGcudH0mXjUrUFQxe3VEdEk5MF4+dXxKODZoWmY5ME59Jl1Nc1l0RXVnI1pIcyU7MzJ+MTYhaFp3NjpiNm9tT205NyFwb3hVYExv'@; put 'VUhbcFg3RlBaTE1bd10uKGlEImpyQT9JSWxGKWteK3YmJm9MNXJtb3VBZXguOWBjW3RhY2k4cipfejZHWCYjOGdjektiYE1+VCRDQCokL2RLZllYdm9odDhTb1IzbVVXcmYvTjNqUXsxL0ZRfThFR1Q9QlsoTEQ9fH56aUl5REhxcDV1NndzQlcyYktaTDhGM2NbMy46M3lXOGpeeS94MkYsIyFu'@; put 'REMoMXAqTE5xLDpOc2h1emtIfDZIZzIlQDxfN1dAWDlIZn1RZkczT0hUYF5ZIW0rQlopa29KPGcrV2cyN10+NDRSOldqOVNvSjNDLHwie3xHeWNxUjQ3PTxXYTFOYVBqSUJ9XUd2Xzc0NV5sYjUwdVJ4SThGM3V2Y0NNVG1CVjVLbV00cGxkc3hZLjU3ZjB6REBqYjt0M0xBQnAwU2VMLi9DK1o2'@; put 'YGNbJWUhPFMrR2c4QWJsanduSE1neChMTjcpOk5zaDJ6Ml14KjlJTD1dOjQpPzFVNmpFdjB3RT11fSZQTjojZ3c7dihOdSovWj9gckNQZUpVfXhUMz9nVXZvTWxCdk52cHp0L1MxWnFvTlo7fDhgXkdFI0h1ImcwQ1cpN2Q5UXt6I0t7cTZifSZLTUNJOFFjfGdZLixfOGlaLkA5NWpiVTNpM0go'@; put 'aSt4LDd4RThsWSJRXyk2QnguczV1LiFiSD89IjMhUzZecSNFY2tlfD9MRzhGM1VbMy50ZSEiYD9vSGAiSmtyRjBpJGIhTTwlXU5zaEpHO0cmayJ4biNsc2l9UVRFSF8vRDhZazlPOWA0SFlaMHBsdUdFMDhZWnFCVH0vdFlrKGNZW1dQRFJXbykyXW5ze04/WWtFSmFJdzI6aDRVdkRKLjIlZml8'@; put 'RHo1ZkpndWgpUk0meUlibHU8YmJORlhjREw3aFo9Xn56KTlId1IjKjAjKE53UmljZjVhQTxzY3o6RDhaW0NFLDZDc3pdQEJ4NEJBaF1OLDxUVCI4R0lVWT1Bcz86dE48azU3Vlh6YU5lLnVzQjo3UnRSaj5QNz9bOVoyTCpKI313UTJ7U0U4WlsvfEZpTFU9eHFxXVdvOVc9U0oiQy9IaC9AO2xT'@; put 'Ij5IZHpEfnZxWn5vTkMvQFBEWS43czFSQkJIWT9CbCU8aTJQSGVbO1tvOCNaNTBfXnpIT1QxIjIkNTRFU09pUzt+eDkkb3VnVVlMa3hMWXt+bzB6Ojteeik5Olp3YUUpfSZDUV5eKVBIL1lWeWdafTRrMVJyKm1RYTdxVF4+UGI1MXM4U29zMiNBcndXaW9nUlFuOmlKSSVeSXdJQlAwZjhEX3J2'@; put 'YU1Wa1Y6Omg0b2dOSztARUNNd2wqTThGMz1ZNC5YJDNYT2x8Uk4icywqSFRrMW14SHZdJU1Rb3U0TFVYfUIoXUo4ZEA7U3BkNlFNWkpjaWBrUDJGVTB6PFc7RHpwK1RpU0t1LH11MCxQbVdocDRlOzhxIiw3KlpgbS8qKSJiTnFYdiErQmNmKkR4Pz83NlRjWEAyTWlddHtsNXo7cHZedG4jXXtF'@; put 'TnQyRWRzWGExYmhXdHB0ZjM2UltPUnxTQHhEJGo0KmI+RGtaRkdqfGVsQHZmUHFIbDd6NlFjNC5HKDNYLHxwdWs8bU9jb2VmZm8hUVguUih5VW5jKy84ZCVJbHoiVS50PD5FRSI2ciMwRXlGNlQhV2hRS3BxRi9keThTb00yMSFwJGFFfEcubz02SSJQbFldSVUkW21YfG1INzIlL1guTyl1P21F'@; put 'XnFMaE8jTT1YSD9semJOJUJxTThjTThGM0NbUXRfNzJKaHB4fCo8OExpPEpncENVbEVFQ0lwTm80QXpTX2suJmssQHFYc2gmeitCOiNGR196RUs2XWJGUG1WM21BQlBlJXB+SVNWY1BNIVg5JTdbZkZvWmozY0VfR01Udl1CRFA7ITdSO2Y4fmRYaXx1PSUjRHhgLlVOdm4lViMuUSNvUW9HMHVm'@; put 'PjJ7dSV8OnpzJTNNPUIjb2MjTE4reiFoKFV7JWUha3c3KkU7UjFjL01ZLFJ0ZDMobDxFenVJXURSMXs3XSIsIUJIekw8ZF8wUmwuOD8vbX1XQzViOz9dZHguc2BjW0ZTbi9LR01pfSYlWD5INl5uVTtbaVFNOmp5RlJ6O3tGV29UczF2cT1QLDp1dzxsdFdjWDs6RHk5Wldob3c6XlsmRjNpL3Zt'@; put 'dXFuZHJ9ZVtdQFZvKWVHU1oqK3wiLkYvdk9JUDdaV1hqIVNEWU4hUyx+aGFMVF1Tejt+WkI4UyR6dERQL24jQS5UeSNXSCU7fmosY2FtXV1keC41fUZpIXYyInQwcU0/IXciMFFHamkjXnopOVsrRWswVy5nVSFJS3E6ZDRvdFt4aCs1X29NTClSWmZwNil3IjdOO1pfNmBXNmdMLH5Zdkd0JWFd'@; put 'I0Y2cmJ5QG5BZTZvQH1mbV1ATk40LjNePz1VKVFoLDpONWpAWypTOTR3a0Vud3RUSX1YYmRPYGRsQEJSPW9+I1V7UF00anEiWkV6L285X2t7KlVEOWIwekgpVi9AOyNCeCpFQiVkOEUuPUR9ekg1P2FsKDo2NVlPdkc/ITZJMWNnbS9FT146Y04wWXdZT0clJkVCIm4uRHY6TjB1KFsmOFJ3WUpG'@; put 'LDwqfmY2MVRbPXZMdiNTZVRAeGJvSUAhI2JGeypENXl5ZTImYGxFWFBiVkJkNC9kSj9AKjxlIl1MdzRBeTo0fE9yZXtLTjl+ZCVrcX5AbzAxNjVUdzRIYVtdUSNiWzBDMkxJMUJPJHJ6d2w8N1B1PVYkP1MuaXRVOXpncWFyZTBJTDxeRjFmNGUzKGZES2I5cGZsJGZ4SWchUih0P3crcEgieSpP'@; put 'cio6dyZSYDNjazxUVCpGVXVTT2N7dTxmdHMkVSF5bzI8Onp4UiVne1E0OndQKXJDTGwkIW17QEQqLEpGK2gmI3hqOitxfH1Ndj1LRFREfE9PI1A3ITE2QkRyKFlXLmlPNkQlcVZJOSMpNlRIYHlFcFlVOk9FSSttRiprbEksJWN+O2BFUj97WUpZMnhTOEk3Rnd4RChbIzhOWj88My9zUHt3PjA6'@; put 'd1soP2MsPk0xbXtMQXR4XSV8S1ZQOikpV0gsV2p5YXBoWDU5Xmc7OndfenkvbG5zd0socmM9SkhqaXNWUEhCQFheYDIjdFVVbHFsXkQkZWghfXBRb180elNKLklSOGxJQlI7VSZUTmgzQTQpa3h2Und0Rjk1WjE6d34lKF5+MzxrcloxcXx1dVMjWm0qb25gWE5YL2JDLipEcCx+MTsxOndwX1JQ'@; put 'QENDQUlRQlR2QCVZUiprbHNiJnR5WD14NVMjJltDfVRILD5mNW9KMWJvPkNEeER6UV43P2IpO058KmQ2WG9LRno7JkZCKz5AMyg7Tl9HcFhrT0ksbXsySFtRK0hnWGUzOmF6ekNNez5eJG4ibVhdVF9RYmRjUjljM0dNU2FvYitETXQvPXU/ZEZHQ2RGNyFzZzZ3TCt5ak0kYDNLXkc1Kz89VCk4'@; put 'SWk+TjUzZi9MQmRUcCRHcTl5e1c8SFNwNipjamVqKzdiV2k4STN6WWNPXVFWYFZGTXZzO05TY3hSWWRBQ3ZZNDZzfmAlQEM7TnN5ZmM9dkpza0R9RXo1NUl+SVZwK19MLCJIZWoyLExvRWcxLlgvcXdhQkR1VTJmRFQ+RmNBSToxcjJxd2lkalQ1anRzaCl3STElTU0mbzVVWHVEcFBpKzpjOHB1'@; put 'TkYib2JYN2J5MmB5S1kxbzY7SFRTdTlJcndsXTs3Kjw/OlJ3LD4yVVUzNClAdDFjRkdDUl9RZkBhR0hRWE5PdCNEY2ZeRyJqa3pOb0lGVVpYTDQhJXQ4bjdiOEkofCl0c3deK09iWHpyMUwxNlViaSQwP2pgSGtndmtde01vZ3EhYmQxXy8/RGFTMjZvNFMxK1B7Yzs6WkBtVTl9e1t0MjJ9biU+'@; put 'RkhMaTNeUD1vc1NxN1VRU0E+eEchemNnMyhQNygjR2RbOyQqb0RLRmc5SmNdSmhyeVE5anlrbmVqVVNhMHBJV2UwL2I5PXBRQzAobnlJempRdTwzRV5HPkJNKn02MW8vPHUjLmc/djRHXkdKNlk+Kz1rOCpNKzosVD5Fcjk1P0dLMXBYaEo/Ii4ydmkraFBiY0ZHaGR1WnxIKDIxcntVdUF1V3dk'@; put 'emNyTiN1VC9TRkFWKigpRjpBWFc7Tk1hbHE3SG8vfCVUd1ZSZkxSRzhVQ2R1WUc2UmxRO3h1QmxoKix7N2JZMD5bU0duems9d0siSXdFS2plXUdhJjFrbTdbS0l1VW42Ij1dTTliL2gibCFQa1EsUUA+ZHEmYXZUO05dUSw1VXp6cSVWM1JKXkZ2TCE7TlFhSkFybSUhJDNqSEZ7OipgWDxOVix7'@; put 'bTZ1WjA+SyhLWy9pRCZXMVVIZTRBUFYoWCUyR24oYEZFMkJUcD44LllqLGRYLCRLYEpVeDRIVDA3bHFgdz92Olh2KCtGLyIlYGhxYmAvNDJ5QU5gemZiYyszfTlhdV9YOj4reHFUJjlCViQkNkNFVjpiVisrRFUwUC58Sl0+VlJgQFZbVGJRZmwkc1lNRFk+fn4/d1F+fDN5dUIwblNkR3kwfF1E'@; put 'TzV8Ki9bPldjK0pga35eS1BAeHxzYDloW2NKfS9wZiNyZGE7PmtWJD5oXzB3fDldfHpmcVZVa3wxP2dvMnl0TTxmLyYpOG18an5YVGMrU3huTTd4UTlWOU06RXtMTmYuUEwoWUg2YWxYfSNsbCZ5U3E+RFVJInpUK2Q1XjIjNDZteHQjen05XUNkdFFuTnVWVT4sSTtzNm1xbWJeK2JmNThrPXVR'@; put 'YVRlb2xvYGpGL35OUj8/RnsxOjEqfU0qJDR5ZzM2T2tpeEUieix+S3FpQFo2Xk1eIm9XcDNxT2IzbzpKIUN8Tj1YaG5gIXNWbCRVP2owdm46PixobFteNlA6NWtSQndkIXJXfGBqRVdWbFcsYDZQbFd2PWJNLEYpXTQrV09QSVBAKVdsPV9hOCFQTGB1aExRS049eSUyUTJaZlcyd14kMXJgMml3'@; put 'SG9DKl9VPXRSYTxPWyJWKkc4bkNrUnZAL3NxRzJ9fjpYN01eWm5EcmZHfiksXzBwI01TLyldKj0ybjcuZSV+UnF+Zi9KWTJ5XyoyUWp9dXY7djN3VXkyKUtiUWImN3k8M209eyp+SVohYDlzbEY8KDNDV1U/SiN9STspNll6dHVMXTFKYysuV0crMF0xUWQzT2o+U0VLc2VmOmQ7UW9VfStydGIl'@; put 'Oj9kJE9DL0taUngqTWV9aVRYa2l5MWUrXX1ZIVlEUFNMb3hESzgkISMxXkVsMHskKndRPWZMK0d7Y2pQMGMhSG9BSUxtUD1Uc0tsMldZfSNzUCEpIV5SITosc3U2dGNmbk92VlFkK2xvY30oVm17O11aJmteej5Zci4zdSkvZDpPS34lUUh6Y2d+WTJRNmZQTFNQa34wJWxeTDt6X0dNVmZQQE1O'@; put 'NkFKOHV6RGZMUDJ5dyNUPX5WSTtSTkR3Olk5c3JEaVNDOG46WThVaHw2OlVBNDJvYzE3X3ldNlBIdUNkOUBtIXp3dn5BWj9MbnxlTTh9SUwpX1A9QjtYXnJDUEAkeWZXVzNCPjxsJFJyK3BJMnkrKFg3e2lmLmNhb3Z6SGFJWXw1ZU8vYi8uPUd7JUxSTlBMXSh5fHZETVBGbF0+dmc4czxBMjd7'@; put 'PHtReUheWmpXZnQxIURIJXxtbUxzTWI0fV42YytBciQ3PDxFI0A9QEo1dV5IMnxSQ2VXWkhpdFBxNWlNcDtvezglVVo4eXI4MSY/ZV0rcmEyfnsyZU1pb0I6fDZQL3lfSjBoUkg1eSNHQ1EjO2NfeXxGSFFIXl4mbl5Qc1c8O1hzIXtVUEhLOSprNF1rMUYwZCErSDshRV1EfHx2czszM1tkfmFm'@; put 'fDwkOyFBMFdBXkxMLE4yIXJsJWJvSEc4SihIN2dicGk9QT9Sd1tieDJGdmp6RnxfcF1oJUxpQ0huNihfQ354d1VCJElIXVImQVl4Nz1tVGZXTy92UDx5Iz4xW1hKOjQxOn06V2ReZ2lBNEMyTExeNUhgQyQ1Zi41VVJhfWVtUD0yXnR3Yzt1Um1VMUZoR11rPiM/eGpdQX5pS3J5S3txMF4qP3hW'@; put 'PldXKVlXJltiYUpsam5GOVB6RmB5OHtTK0hpU1Y4N15+SGlLVkZnfX5ZQzczZngvfklKJnErPC5zNW09QjEycldiT31NdzxlVElEPjJ6e19KI1c8Jnh7ajBGPzg0MX5PTV1CXkUkaFc4ImhnaU0vciJIdFhpOCR4SWk7bXM9O0VoOnRraE1+KiZ2V0U+W3Npdl90eiZuMWUudV9yOT9AQmlvSSpd'@; put 'VFUsRkFnS347RzFIcUd6fi90WlY0OXAoX09dJkhkfDNGO1I6fFR8O2N7fHdAMVZXSX50Szh9Q186c0YyMnV6JiU+WjB9KFo+bTE8dUE/ez1tMVV1QT8/JDtRUHlEdFg2bjF5d3YoS2QlYTk0Kmg9OlFkb2Zkc1J7fHd2dDldRn0hZj1CNWx8e0soTEE5NjtRPnRFdDEpTC8sQlVBMGwjJD1rQWZE'@; put 'XjltNikiUWI1Zz1jRW5mQFtUKTd5RjN7YGhLUGAoOip+SVNeJl1bKzdXPzg0dX4/bnZgfi4pc0grW0JUWWooYFgpY2NxdTVfdW4xVU4xZSp+JXxAQXdLaihdcj9KO09bflgsJU4sdXQodzUoN3FxbUlgUjhSfC5ScUIzSjY9QTJdaFdecmxzQi8mbkJba19BL2YkZmZkcylgeFNWUDJtJjM6PjRB'@; put 'ZlZtNFdXVVlwaW9VTEw+NCZufn1FRSFUVzdZJCh6c3NldU8rYjlodVBzcmtfKk8rb0Iudj1DMF9ObH1lKyM6KGNJfH05NEF+eUZIY199M30sdnVbOShKWnJtIjtFVi88dXI7eHZbZ2NdO3NSc1t6OFZXbFY8KTxyPGgyclFgYH1mRF4pI2BVOUtMWjMoX199JEAsdnRDPDJnTntLK0Z4US42PGki'@; put 'STNRSD1dKTNgMUsxRnZ9YTtSVGlnN0xUbV0pNX4sOyx2S1t5UFBMYzJnTjpHckpbfGJRfn1RP3UpZiohQ0F0O1M+RVp7In4maSpaaV5DLFM8I1ROfE1KI3ZqTV17bWI1P2hOMX1aU2Y6a3tAOX1aO1YyeGYzbnhaekhvYXNhaVQjZSprMWNNeFZDfC9lfjsmSCY/TCNaMU0ofmt+Py5MVGpFaFBp'@; put 'Kk9gdE0xLiFjVWkhWHxEd2tAIzVuVHVRc2p9S3tCZm8oL2V7WSJ8UmIwJlp4RjQ/L1Y9MSZAOEdkdEB0Wi9ANCJuc0R7NT82R045UVZham5HXTo9P00rZklDYC9CWnNZKktDWVB9MngwMHRPQm1qUnhpN2hySGZfM1o0fThbUV1MKixEPTJyKjx8JVtAXjtuKUA7L2E+XmVxVkRCQW5GSlU4a1tw'@; put 'Ml4yNjM0VVJeKF1QIWhHaiVhL1ZfRDM9VGY3LjRweXdFLkBnLnx9TFYjKzdNVkAmdS8+YXkmR3h5Q2Mmbnd3UFopNVBgQkB5Q09zeVBjKXtkOXc5dX5UdURGbyg2SmIvXzhfOFM2SERgRm9RQDRlS09PcDIxcCV+YXpZZnc9VExMVkhfZ3d7PitzP1p8KFJDTUpJRDRHfSE4VCtWNmdsUng9aVtL'@; put 'PWJ4Ijk8SHhAO0NubEErbkxVUD9kZWdUZVF6UElMWUdBPnZoenBzZlgrQGpweWFjVjIlVjR2I3J6blpvV3dsKS5GSTZjVXFhO1YwRF1AWUBBZyVDK1dsZHl4flYrVHg/PzNWNXFEVFY1UzshZVAlLCxeM1hgcGUlfTQ6YmlMdXdDdWRnQ3VMMjRDN2I/anJ8WUxkSkxNNzpLMzdkMTUhUnY6Ziwy'@; put 'ZXxCT2hGW3dfNGQqSFhWfHRodT05YC4rUl5VRlUjO0VCPVY2WishLjtUaU1WckcweyorbnBxRDY7Qk8ld0kxMCImb01jKWc/VT1bNiwsTEZPV1FOWGc8SUB7SjV9MFBiXiw/dnB1TEFYck1AfFhzIXVQRl9HeXNfVkA+RHRlcklTTGRsVDxQPG8/K2d6cWJ+MHBQWGkyNF1NZVEmU0lvSk9HNmd4'@; put 'MURuWUQyWj1xIVArZkU3cVJqK1Z2Wl8/RWR0SiJIbkJfczp5ZjF3eHJVTTcje1tRYnhjR1YyJHgrMThIejJZbjwzRn0pRkwzc0ZXI0ZhLHF6Ui9pQGx1WCpeXWNRYFNsXT4+Wzw3W3ltJVRVSzA+KUQqfUdWdlB5OnRofGhsajsxTSUzaXZYVWpQTWJHPmlnbmB1UnNdancqfUVvRTFjVXEiSj5g'@; put 'MTc9dkRbX2s6YTo4RmFAJG5QKnkuNjIxM041WGAwdygqVyp9KVFGK0JAM0o7R0BmMi8uOlhAViRrNnJeSjdAV3VzejYoYFclVk4qezJaQ3xAOEd2THxnYT5VdE4kK3olJU4yNiFYX3xMcnxZSiYzPmlIJjo6cl9yMzAwbGE+W2BDQUJ+Wnp2bGtsSDtvU1UsXUlHRE1+UFdBR3hOeChWdiU1clNp'@; put 'W3IofG0+LFk+JXVYXUR0d2x2WFFyYjNxXStXfEdZNi9wcTZTOEdXO0JlaWd8d1t5NG0jRC8ufGRsb3NSKk4iM0UyMz4kTCYkPm9eMWY8JmdXTCVMQH48RGlCZ3kjciNrTGAzKktyQ188PXo2TW9GPDVCZUxRelVnT0ovZ1JoYm9GSjlDSElJXXFLcDxjeUM7eUs7MHJwakQ+Q1N2MW4kaGx8P0Vo'@; put 'KTt+bFtDLylITSZpSDU9UClaRGVMcDdxSzFVQGRaUHJNez1QLi5QNFZePD0pP2Q7SnVZPmJZWVI+TkNEK1U1QVslWV5NZHtHWVRSKE0xYXZKU3NLSHMpM1lzW1FweThVWzoqW1c1VXxsLC5hY2pvKDckb3pUO3hZVm9FWCt1fDczT1FZVVVncHRYfFs1bT5HdHZfL1B8T206dGhTJk0kZnAiTkRb'@; put 'UWArUT56KHx0NncwMHhjZjBNS3k3c1BZKW9wZndzZmMiNEBsV2gsKm0uNyJqITVRZEZFYFlzPzJqLkZ1Y2ddTSZzJCR+JmVyQ3FVejEsejY3P2lPVSltfmBjSkp1bCg+I2pJeXgwdmcjRndLaTNSPzI1NkhndH0rP3d1fF8jQUlMU0oxTD50TntdSTpRQzdabi9iQjZLazNWSlYqXnU/LC5DI2RQ'@; put 'TDlAR1pfVSg5fFdCfk9zbG9wVXU4VWRabUQpRnJhMUJfQ3E0Pz4mbjN5NTVnUzFDUWlJQjdGczUod2tqdHMmdDYoLEYpIVd+TTk1KWUqRipWcDR2X1RsfTRUd35veSpBQyozdkkmQHFYWSRBKiIsSkAxWkNzOz5kL1N0QDpfZFZqV0xGcS5GX2ddU0xHYHhRcDxRaHdlfnppK11qcn0lKld7OU0p'@; put 'RmRAfV83USliNm9NWUNFTTl+VUMjVCVufHxFZXF5MixZTH5TO1I9bEkyQn1WJCZuaTF4W1N1PTdZLzhbYGxqWzFNODBySyFEOT8vPnQhQSokWDQxOmNpWGBKOUpoQXhzQXM9bnV7cSp4IjtDeUUrTU1MSmIsSzZlb1U+eTMreCt+QFNqLEF7WWc8JFEvZ0QrX1hUb0FKfnxocX1bIkImTV5lT3sp'@; put 'JW02JFpkYGRUU01DbnhsTFdHPCNzNVlIVlZGIyxIQ0VbM2Z+T1E7Ml06VndwKF9YcGN5RUYiTW92OjQ7XkwlfkV4Y09yOVpgPkhrfXU/RThNS1A+OjhXOS9ablgkQHs4Q2kzd3VCfDVZYz9WTXZHKEVzL1ArdXRVK3hFV2g4W0wzWlhXOjQqPWBlRCZWUHdse15TeVpMSyp5cSshMTxjNjg0ZDZQ'@; put 'cCE7Nj5XMG8odmc+dmdsP0h6XzghYiVMUXFxQWR1OCxgYWliMnokTEl0eT9YbCFXL159SEtvOCg3KikjbiV+YWxxQ0N8bmRReyR+PXkwS0BmKSY+WUI2SSNhMUJFfFpZVlZpXjtxdFo2Ji8rU1JPRGkjWX58QiU+TyphPjFRYn5peC4pZSo8JHxWImdFT1MvQisjIztiR0FVfURpZy5namR6Xncu'@; put 'WyNuclpLX1VOQnJaMy4oYTchO2NGJFdMWGQuezdabFRMQFh6fnlKMVsvZGsoJSp2Xi56M1VDM0V3fFVzdlZ8eWQufTQ8cXRwK1duY1dBdUt4P3krZU5pfDI8bVY/bCM0THkze0lWT1VtYm1rK204JnlWJV8hSWBda0BxdXF+Tyl4eSEuUWssJVFpKGslImh6cT9xMyo8TF5oaFhCKiZ+blVHc3hX'@; put 'PCkxT3BMe1NWfHFoLkxIey9LQUBlUD1KdzFrbm9QVDcuLjhDRnA7RXddUlNPdkB0bHopJixUYmt5RHFVP3A2XT4hSzRMdz9NfUdLQiVydUdfKEk3RHhFdGY3JjMpYzxARnZzfX00UnlHJDhiJlNePyVfT2h6WyV9PVE+VyQ+T2E4SFsuTSY3eURwNVltV2tuPl9afm80LC5RY1crdU1RaHtXOG5t'@; put 'fEUpfUYuN0JIV3g1b21FdT5MdTQmelddYCt1SCR0IkFlVmIwSiFDWkRmfGhqXTFXdmowblcuOWArQVU1JGQ1NS57UkdAW186PUlUS340PyMsd2osPilvOSh7Ji9Jez5hPWpgP2RsNFZDUCZaTkVjan5KVkddTyZoSnFmcXV0UWBaYjk8VSxUKjFwKXxTOGxXWVsoQlo7O2wmN3hNfiQ6Si88JUZ8'@; put 'cHcpVC51KjxPKl05RW82Q2skPUo9X1dYRnR8RW1gdUtXazpWdkxBJilJVl95bGsza3QmRkcuZHlIZzxlbWJFc2hLJHVFb0hBN15aXT9MMnRaaDticXxCbW01bURjKixWTzp8ZyZQUUt3d3VUanFORX1EeVY0aU4/aGpEYzRGSFJQWlBtW20kcjpVRWIzNW1yI1NDM2ltfSMkY29TWyhRKHNLJCQ8'@; put 'a18uWEk+cCRGKFc+d1pNfS4lUmxoe1UpMyJGU11lOkVmSnk2InJqKHJbeiIqJmJTTTtgKi81YHRlWzFFWnRWZSUzTmMoSCFEckozKl9sTGhmVzd3MUh8UEcrVF5NdyhmcSx2UUJefWZIYFA7QHN3S19LWTBgZEoyW0wpMy4qK3QyMzRKLkwyTHZYKHF3aVVSano6cG0sPEw2Mm5+fmBfdC9ZNH5D'@; put 'NTF5ISV3X310L0lJJlkpcjp0TXBsJj03eGlAX0s8QkpMSSEpOmdESl9eZCo7ek5qUjJ+NUNNLDRefXBKZS9VYFVjVUAqTmRKPDFMaSx8XzN7fjlecjxAX3I4KmkmSG4oPG8wUSUjbXJdKjtzIVt8alhCJE8vOC9SZDAkaG1VaWcofisjPmpPUHRgMUtAfjR2PmomVF84RmQlWT83Pmp0Q0NyaH1m'@; put 'MShZTGw9eytIS0xsTEh3cWBOQ0B+ZHc+ajo3KWgwWXU9NXZ8JHRSb15KTFAxKF8+fTsjXkRmb0hrTElaNiJIbzFdN2dOeDU0PUVoOCpAbFg3bSh6bylzZ3ZaPmc/Ykl8N3I4XzJ2OT97RztpOmBTNX0qU0t7KHg9fWlKRnJpdm1+IUV4Ji9HJHNndlo+UF07b1pjJXhdc1ZzRXFkQF9lPFRDaCgk'@; put 'VmVxYis7PClMOCZOQzR3ZXo+S0pfO2dPVnhUV25QcGkhfDNleUZXLFhrZTF8blJnbFBsfmYvSCFHQCJZJFNbfiFFSDxIV19waUpLfjk0Yyp+RW9CYXx9dE97OXV7b1FsXiFHeDdJYGExKiJ4fEM+OSlfMFlNJnpmNHh+MiQxKWFpKG5CP2ZtJlsqbn5XY2p+Zi90czQuaSsjdG1XVUVhdiYhUGIi'@; put 'UE9ARk9LK2dmU1tPajU0TVB3NXIxckhEQVgveFBrIl91OEs3di4kV0tVTDBFVTVaem1HVGBxYVVAV1NqRCF+blIyNWsifU0lR1U3bDUlc3hZcmdUVEQvL2pMSXxRJSMlYV4jKk9bNSg2aW1iLmhrbDo0OmMyaWNwNHk7cWQoIlU7ZFVOSzRdcUxRczhtI1UwPHYpbH0xVFBhPTk1XTxRWk1aX1NK'@; put 'X2BPOTN4dndFOnA6cXQsVjUoT0BvLFAkVV14IVo3YXZUcDhuVXs3blRwN25Ve0BsVXtyLiNBO3w7PnN+QnQ/c3RuRU9XW2xHcXNCdDRodG5iWnAuN01ffWU/bDFXW2pFVlc7VEs/T0Q3fUxpPX5YRVFxRSleRVp8SCk5fnRJPTlHdXI4Wnx7KDhzc0l9c0d1XkV3X3d0ZX5fUVE0UXUvQ3dfWXRl'@; put 'fltRX3NRdUQwN31ESzFGR3VoNlp8Z2w9flh1MFtlfjhDZCs3fS8ub3ouY18icn4seU13Y1Z7Yz9UMjdVJCRjJTQ2LkJ9WTB+Lz5aRVhmUjkpL0JCe3xjPFpkMDBPLDowbWdsY2wzLnc6PzF5UihJQnhTRixFZX1MJFZtbF5qbW01ejUvWTJ4ZVF1a2pqTHkxd3RjcFkrSEFmNWhJckksX29nN2dj'@; put 'by8kNGpYeENBSCNSRytaKkg3dzRIdVdFOlF5JnZqbiUxZGVVKG81LmxVYyUmVkVaYiVaLjEpVipPSWFVWS57bFRoQ2o8bWRVQjRPNCJWfXI9XnVbaWpKeXR3LmI2Vnh7QTw0aEdyQSwpb0E3ampfK0ROSDAwb2JybnhiamZNTkNpdzhQYmpjTWpJaiYlKmc8aGpNeTtLXm9aL1ouTV51Uix4TG0w'@; put 'SW5OcyEqeCJseGhzYCZJQ2pGeTV3QVR+WHhBUXZqaXtHaCthaTBJbkhEUWQ3dzR3MlA8OWkmRykxYDV8IStIMUllaUhFVlNianVKMDF+aEspLEJHSDBvWHJYeFtoSUJCezV7VTVGdXxsemhyc1FeYGkhejksPGVaaEhyMS5dYk96XWxSaCxSSFN5akYsT0siYikrS0tVZGM2PGoyYVIxVGdqJWc8'@; put 'QmoxaUtDYml3SUh0MSlNUk1FczFPIU9DKkY4MXMpT0NjIWZ3N2E+YUJRUXZMaVtER2YsKHd7S1JgdX5JKmpOUiZhW2hHQnJJSChAQGBRYCg3Qk92ZndvUHhoWX1bO2gmMypeOzNoRD9hUmB1TkVSaG9gYjEkMX5mT0VzMTxpYnh+UVYoR3tOdmUqcUU1R3YsIlAyKih6cU4yLD4xY1E1Z0Ara29h'@; put 'TjIsPjF3JSJ+IjVdektRejQ5KTUyU01BImFfPyNlW25ITDc4VUIiKyFmPlcjKEZIKFEsQmd3WUxNOlRUflg0RShlRnI2LHZVfCwwWU9kNWxJeVNvMS9sVHlWRSwoNEFtc0VjXSlBOmM0eFRpJjxATi4zZ1N8XWpUTjo/K1F1XzJkeTVTV31NRjVeeztsbmBuW1NweFg5K0w8NHc2YWxfUmBMWGhA'@; put 'VDtyO1NwZjsqZ3BbT0xGej9XQGprL0xgfEVKTCR5KF8sfU1zLHZMQDosUld1S3BpNytoUSYzQz94Rn0qTDxpc1VzcT90fFQ6eEYuKktmaXM/clBHJX53TnN4Ul96OE9MVT4zSWRXN15LZlNMOHtjeDJGOCoxZ35obF1tbWUlRlE2PUZYaCEvdkl+bj4udkd+Qz0udjo/UVYyRnteL2FCXW1AMVFQ'@; put 'Z0Y9dX4uNHI4Ing5Xn0se199ZUk1cXIvdl57XWZ7MF1QVixRaF8hTGI0c29RXSlbX11qSUw+d1YhJn1oZGZucHxhKml8Z3M1Tl0pL19PdjBGIV4vYWVNXSltfStQMn14OnR3TGVabTA0R3hzPVhoVzU4cy8kN1J1Ik9zITdGakt9VGtrSExSIyp5UStfJW0wRnleUiZOTH52VVIkfWVXPFFtQCJd'@; put 'UFdWRnBpaHxOOC52JXtKPkhMZ0MoczxrVXhKVUEiPSksQjgsUj40bi5+fS5dKWV9Z1ReKTlfVFEwRlNeUVZhRWdgRj04OXJefC9tWWk7ITlmb1dlVlphV1MhVVIwczlocGlNfn4xcT8lc31nXSElKEF0OjhTMmgmM2ZuMnlaLF16OE1MSnZWITl9TCNdKVF9bWgudlc/ejgxRm4paHF1OD9CZldF'@; put 'OGhaLD88MCR+MWVrSClsfjUoLl5hNTJbblk9KkRDUHp6SExEfn14SExzdShfN31pSyx2Rz86LE9XR0NwaVl8M2VvYitPRFlITCN0ViFFSHhGJigrYlo0dF1RVk9XdSJUfC5iaF9ZMHt+Z0ZnI21lJSZCbjFdZjciXWVETURATyV5NylnTndNfDx1Nz9mYSpFKWdOeDVQXzd4cz0lT1lgOXVTMGhd'@; put 'bm9RVGdIQSltflB6cGlUfGphLnZSezxWL3Y3KV82aGwwU1UpPHNjX3p9PEosfl5Zalh3bUAhT0IkPEV+NFZ+c1ZdJiwrfmliKWhGfVRrZU1gW00vNkVFUn5zSl19bCt+MCpAOSN+bncqPkg1MFE5elo3fm59JXJnKjFmWH59O1AyNHo1cFhFWEZmTCw1Tn5zIls8Sit+RSpqXyF+W3l0KGZAX2Mi'@; put 'PiRSL3VzfjFuN3tzcnRYWmVLbi5rcldpT3VgKC9vMXV+TXh0KCF9S1B8fnovbkl1fiZ2dCg/YFBRW35ZP28xYUMjK31sJFhqMC8sIUltYyFUKCpuMUt5NVs8SilzYlkjRShOMU1EY199VEg1LiJaOnhSRSp+cFcpaF18PXt7fiIue31kezxRJTg9Lm5Jc35KcXQoOH1BPWMzP1FgfW9IVS57fnku'@; put 'IVRyfjZudCg0YHNwQH5IaV9+YVRJViFsYlAzcXM0X1QmfGp+X11qfnUpI0UiaTlfUVV9aVBaeEE9fFZtdCg1fis7fXNLW3FQYH5iMj9RXX18LkEuIyRwfjlEOmIofndSKWgpfCVPMn19NTdLcklkW09bOmB1KHdefUZEPnp+ZyppMCo+MUA0SjdLTkM0Lkk5ekY0JSYlSkUkNDJUPX5RUn1sI2Yo'@; put 'fDdzIWh3L2d5YU5fPiZ+clFdISZ+e1BlWCRQKWgjfG5NIyU/fjUwflM+ODl8UWR7fjlEOX5JZFpbN3FbT3k9S1A4djd8eVh7fkIsezttfmVidCgzfV9Se348K2BlbX5fWnQoUmAuVj9+VXppbi99MHoofjM0MD5LWHMoV2dfMW96aXMpaDpJNUwqPjlaeVFKYGN+ZygqQVhzVVtzfW0uK35DTCo+'@; put 'eHxYTVl9ZSosVVpCfmg4NzVVIWRabSw/T1kiWTZ0JH4uSiloQFt9fmdDKn1qa31zQD9Pei9GY1FaS20kTSs6d2M7QmY2K1FZaCgvdHFJV3EmaGZmM2xhck18X3hnKEVNIyZAOTd+Nm5VeEhIbyY/UTd+WT1AOV5+YV5uSX1+YXgzWU5QWF8rW1Z9IiNobnYrV3sycm0oQk1IXypraF9KWVN8cD1S'@; put 'fExIfXNHfkE9aF9kYzE+W11MKCs7e34zKlJxcChhWHJXbzo1VU03flMyVT1jLG4uTSNxOCxRaDFfIWhtVTFIXiYwPmh4eztocUEiTXpTfk5JVzFdVUImbV5sUjM2N1JEeiNoZEcjaG1VfH5gXiVhX35Ee31sQXRBfnlYdShyfU5XdShxfX0qfnMuP2c9I34+SCo+b3xuTTV+fFQjUlB8ajRbZEt0'@; put 'cUNrNEFBWzNpWWJWTWFTMy5kUStUPz18ek0lTmt4IU0lMzE6UyRPSl5yNn0oeUFBQXQpJFRgT09HQCJHamJORERtX301fXFuQUFCIiVMUmBPT3Y/MUZqYk5EKVRsVjpDUmB+Tk9ASkp5ImV+SClFQlRFVyJkfilCM0xKQF1UNmBwXzRxIkcqbj9kKzcmU0pgNEYldGV5KSF3LnRdV2AvTlJARDdL'@; put 'YzhEVUV+flAiIStXM193TDQuMi8vfDI6cVV8Oz5rX0VCKz49flR8dFB+dGRaTHQkTU5tcVlyfnVuQTBEMCxBXWU8TTR9NjVseEJpKUhRd2tJIit0VzNyQSJEKXRQfHpFQit6R1RKNFFaWyQpVjEmKmJzOVBfel5Xc0BsXXtKYyZvTygicEhEX3RIMjtbKkciWypDTkIzfjRDOX4zYzN5QndUO31e'@; put 'Z0J6P0lXQGhKTztfMS92RipNLH1qNEB+NX0seVBfT3x+TUdFeC8kTWVqcVkpfiUjeG45Xm1sfFdwYiM3Y2JBPGVDY1t4O3VpIjshQTtFPVdibFhQUiQybXA9eTguWFBabUFISmxAXmF2W35+V1hQWlE/WVtoNGB+WCpTfEgsYlZWRFczbDJYNXhNOz5Ne3BbIlU0Y1BAQ1hhOlpsM01RJT94WF0w'@; put 'ZHNzI3pDKjs2MTYiWlBsNzZ6Mm0kPEAyOSk1MjYkU1dXN1BSbmVkZ0pMTG5qKl5ybXNzWUlZaEd4azFabk4maDc2P3tsfWo0fjl2PX1RP2lvaV1QYjdLV2opWHAxP2MzUmRbOW1RKy5JI0gjUT5NMEJ3V3ZvaylgU3xEVEs7bnJ7QGVtemt+STRMNGBQMjVqRXQsKj5SPSJQaEA2ViVbSnAvcytY'@; put 'LHMvJElLPnl5RG4xQk9ATF1+fWwpKzFxTi8haCFwcntIeWV5bT9jW2w0XzdtQDFVN1tEN2k/KEpscnA9bHhuSVU9bD44PHIrSV5TbjwpOUd0XjZiKWpRbiN6fEB1PmVWY0NvbDdLdE00LjAlI2wmPz0pPWxXJCUjZXloaWRbLGc9U2had3FKdXd+ZnkrcUxrRjRSLHxrKTBGYH58X31rKFZyJEhZ'@; put 'VkhbcUpSfltxTS5BdFVdPDtFaD5QMH5FTCh9Jj9fOyFYKjlrfnF9VGptfUpXKVtSe1UlWG9QfkY0NH4xbnRnODRiU3A4NzckVVdIR0xOYmZ8SjFIbXMpdE9dTFlwOl9RTEApbG45MCk2PnkpYkQhdzYvVnAzQUpFIzdrQ3l6dU81NV1WYG44UXc/QkhwaVFURGozfEQ4LiFdbSpNKUJFRlc6aT8u'@; put 'LlJWcFd3ZmJVdj5nNWV1JTM1KkdHQ05wW1ApQik5ZjVOVVlUcFpsWVpweWNIQ1VPfHxaJSFTNE1iSzNvZTJHeGd0NDNQR15zWXg3KnImcmYqWUBxYzd5MG9nSiV6NmQibGNULk5ST0xjYjAreFVPSmdnXjE6aEZTdytsWTw9e3l8TUdIKU4zb3NuQ0ozJlhPLmw2Nnc9MTYlSXJjZjJOTUZMKFos'@; put 'V1UqWklJIWhTdkpFUyV8WHA2eStTSCt4SWkka1UkNGlNUHlGaDEpNU4qOnIzIWlFTTpTc09IMSgoIWNFazcoaTVxJHAxcVJgLkViPWkuTjw6ZUpBJkZuQnhfaUA+aE1KTF4+I1pUT29KIVB2YyVHeT1oMCZnQW1hXy5HbkFudSVTK2dbIjs8VER1TiF4UiE4eUZpZ0owPSlPKTRpRER4Im1lSmEv'@; put 'Plc/YSYlRywyP1F1NEpjeCVuc1B2NzhGJmwjfWZDI1FtZSo0eGZzayRsQzBhT3w/SW5QdiI7ZSskfTdCTmlSR3tafX57a2Y9LG13blQ2aG5Od2w+cFlFI0BvZX08eDI+QTAoeTU3M1JsMVdbYVBRISt4LkYqc0gqZF9tVWxhRHBUWlV4O15MKTBRdkdhRmcoNnVRfG1TQ0tkVWhadShUXmZJe3Ev'@; put 'a1ZtZz0zKD56QlYzWEpEK35XPHNIYDltNSNJMyJKTGgjaW1nYDdSYGB0cTIrOVAybGRzd0g5OUl9Jkk8STlCQyFseD1rYm5WJXN9T3djfD9lKEopTHJiU1liIywobGNjbn4raFowI3IhRFVNa1tWe1pWZ1piV3xwSzt5bXhDP1goMWVzdyVuUUxwLjhUSEJXRmVNeytsT1V9OVFyOlsqb0wyPmAm'@; put 'SFYzSWxFL3VKfVQuXn1nNnclMmFCIjh8VkYqaDBRZWpJKTtWU1kvQU82NSpQLGdkJjRGVGhYQn44YmpLdSZXOz57UVY7K3U5QWdLX0sjNTR+cT9QYXx1KjYmKSFyQ340KWE4Qyh9QS5pKG1bYXMhLGVzZzY8RV1GOFMoIUBQJlVpVF94O3VrSFFPIj5CeSJMTUNLTUVnLk0vTTgkKT1GTWdsVSk3'@; put 'c2BfbzAuQDNCcE1HPEh2Z3MqYUByQjd2Klc7S0dsY1lEM2Q8LjFrJnt+SSMhRFB6U0tVQnZeR30jOXhifjIyUGk+dzIrdmJPNFUrQ3NhRTxDfWMiZU4qUTB5bjNrVlgjc2EwVDIrWUoiaXp2YndpPWFJLlczdHc3bkdKLjcjV2lnSHtRJEZpdEM/cDp1KH1jZWB2NUlHSkk0ZHxgOS9GMjZ9Pns4'@; put 'al4hX0F6X30uT0N9TnhRd0BERTJhfUJDaEUrQnQpX313dFcoc0piX0tEZWc6flsjXyprR0E7IV56czkiT0omLy51OlFFTjJ9V2JZXXI0WDRwdWVnTXRFQlpKbHx3QmUoXVg6KjEvNy5RZHA/Niw0UUYsMnk4fklsZl9iUlF4NXw1MjltVD8pSmlGd1MrPC59UnVYKHs7OXh9fjNAYmxdKEl3Skow'@; put 'RSl8UFRDRlt1OyolOTVEbEooSzFsSV86LGJEbjkrXTlPZjpIJkRIQ08mXjx+M31Zfjc8LDxfMT17QWcldyVHayhWdW5CcTEhQ0ZEfkk9Pjh0OigzTDR+Kl8wNU1jd0oqNjhzLGRISnN8VjRxKzV+QkskUmx0VipEJClFR0ZQcXZQN2sjRGl+bEk4PiRMYzRELDpBc1dgMDh+S1ZMbWllZHMlfDQ+'@; put 'bGdUN0JkRylEKSZzVEVSSlV6RS44NWldI29UYndKcmtQKDhCY19OWFQ3dUdCdTRsdUAsQEM7OEViMm9XaUJSYnBKWnF3UkRnS0A9WlI1MT9sTkRxPHRRM3JVO0xYV1M2cmJbQmYodE9dXipDez5AMUx+ZyZzTDMhYWRhI11zdHs2Jkl+M3RfUDR6d2NoXz1DYFtTTip1MVEiTEYpQ1RaTiVGIyRS'@; put 'KD91Y0pBJTxDeWtFM2ZPUXFoUkEpL2JsX3RDKlhfNGc7cix0L0IqZShwY3MpUUNFYyNmSSYkTExtL0pWfEI2ZHNJWjFTJmM1Qytvfn1yd3dPblhRVGVXaClPcUUwOE0oZlZ0cmNMfC5wUzpbKllSZihEfWVnbUwyZF5QfD5sMlV8In5APXhjYT9vV045c0U/WyNtIm8pRFIqby5rNzhjNnFpWChn'@; put 'Xmt6enw4anJSekRRKktGfk5UWm1Tc1JBYEhmKTllSjdKNUYpQlRtTUU8Zm4jPndQV2l8ISwsMz84JFVhcDA/NDdYMjQlfVZOVy9rKT56UERwTD5+R3pzfE9OSDVHYXB8dHE2Q3pffn5ZTnZzaDprbTg2QXRxQGJuJDRqWFM9SyN1SmdpeEcvJngqMEQrYztXRV5GUFQjazV+cXpiPHlZLFMqPC4l'@; put 'XzApYWB7dUZeWlpZMFB2LDpjXz4iN04kdzl2dWo6PiUmIz89bkx9MTJHQHYkUUk8JTB3NX49ajtDRzFoL2JPXjFfaWhsPFZvdXJ+NHtodUpZR3p0KmtXa2wkLyRKclM2ZSIvI2YvQj0kSUBBYCJZIlRQUzM+U1Y4VH1UZkpsR009UFFec2xHfWQpNlV8ZVdZdjdUSThyZj9pX3t6dyZ9YHpwYiU0'@; put 'LCRoX10kZVR1NksscEIpX0FSZyhTQn5jPjRKTn5dPXZzIjZqRV9HU2Rebk9gY1tkTE5CZlgxdUkmel1QNFByeTxjYkZxKTg+d0JjYjZTS1swUkBgLGNqWDJjSV1sfkFFaEZzczRGMCMyRnxyPTlZYmVHWE5pb3FoczYlSXshP0dneiRzS31SVTV1K3pyKmtXO0FCW2xzOWEiNUdDKHdyKGJTaHpR'@; put 'Yjw2XXBNQlooOE5ZUS94TERGY0ZOSFZ5X3BGTm1ifiJjVyhtcCFTSCpeRyMkPC5yTW86K1VTdD9zUSFibj5jakNLbyh5cmNle1BrdFopRilQOnNWbTkkTGkvTFtQXzxDWGE4bnQiSjheOXgkfCopeGNjUHRNTSo3c0pWQSlRV3hfdGFZcmZqREE+LyhhZUN3JVk6OD5gJWVHbHR3dXtyI25VZCMr'@; put 'ek5rNERHWUNvcyhBLjVzKWJrSG9SRkpZe1pLbSF4U0cyPmV6Lyl4eys1N3NycmxYWjUvdHl+PzFyJCZHLFE4NVReaT83SD9GKERQfEt9JGBFNn40MUZsKD9bZF8/VFg8NEMjaE1SL1hUO29ffmg3UlMrfXl1R1FmNzFFPiVBLHQxOW5TMCliKVl3JTgyXW9zIl4uI1djOmBsYUFycGAqaVVJdWln'@; put 'bWkofnxlK3JQPnhXPytSJkYoQUspKkZfMTkvJlhTNCpMQ0I6fWdvQ1N3fWBJLmhDVHpadH5oTzVMdDpSSlc2ci5WLyZYTSNmNFREOXN8W2VfKmNwTFlCemRIVmwwQ25kVlc6U2lQYHhhR3dQcSMxaXlYP34ycmM5fipMcjU9RmVMIz54Y24uS2FWaiEiN3MsT2Rfalp0OlA9RzdbVzN5UFUuYkJr'@; put 'InlwU256bzd1TT1pIiVQKTlQSDRQQmVze3VSXjBIXnxgWTw8PSpAcENPNFtnZHd3YypIXWVePXslP0FgNSp+USxSKD5VSlUpKXpZaXxlLihleHIhSll0PzhzTmBgeVhEVk9FUDtzdExIMmN8fjhZfnUkaVdCM312bVNPNUxSMkUrfWpKXWE2eUUySGN2dmY9UT5BfX1xX192dyR9aU1USjdZTzhK'@; put 'NFs+Mn1dVEg6V0RpeVlsP1tIQGdZOGRoWk9MZSk4JHtGUkxpdCt7WTEqfCliSHtiM1B0anN4PDM3Y2N4QzEoXTZqUyoodWJURE44Xy59JCZTRzxiey40M2QrQyFQU2BSNyRZJCFjI1lOdWRhTFYqeHBnb3sxd1JRXXVJXUMmfSliNl9IMmo/ZHghWilOTiFuYU9dOVQlW2s4NHh6fUU3LGJtdSh9'@; put 'PDIwM350THV7PkJpOH1mMSFjK1JKKU9Mck40LCFzOE5XWH0pfEVxOCF4WiIoI3MjcmBKMjRPLlIifk18b05hK2VPRUBYcV5qQTwrKyZ9S0V1aHxXJipuSTRgVFldTXVhbVlpcyVlOCRyQHVoWCpOX2VUYSg4WixbX2NFXm0xOkZeRV12fDU+aDBfeXZ7fXp4KGNjWUZXOWgyOmw+LHheJXM1UCgr'@; put 'Ol94TXdQREVhTn1nTmMoVm1tLj1xZz1BKXwuZilvYkhleztKL1E9ek86JXppPnNnTzMvXkJOJmZrNVp9YG96S2UoQy5MfVVjdGEqc3cxRV58W0F5L01QSWBPfGxtS1ElTUMsQSlyTWYyPnlLOjp9L3c6SzV9UUt3L1VVKz9tKF9oJXQ4enMlI1pBIyNJYWlnWnspc34mezt3Z1Mzd1l0JHNYdH4x'@; put 'Zn5DMDt5fUdOYT9+dUlBKlNibVk7JDBFMXN2RXBafUlpVUs0ZHg4JGh0azNdOiJ5TGMofnA/VyFATEh3eFtTQDE+YDUrMntjRjcjPksjPUVpPFFnU1dRPC8mdXUsISNMV0BZMXF8a2JYMDIyQj9rc3VwZG5MNlVhQiJ1cjcqdUBFRFIwcnl8Y0Q9UGg+YUV+Rjtdb2BTbHQ3PEldS2RZRjpDMFBF'@; put 'MyZMYDFufHFKWUlHRGB2T2p5dSVrU2pwfnwsW0RpTSE+ITU1UDFobUBeRU5KXyJ6LzxQJHRgRDJ9Q3xkZ35Ednc2XWV5dVlFOlFfSnFDISt4Q1ZITDg6O0ojKC5FZW1WLnZRKV9gUz42Rl5zWSV9dFBbSld6UkMyYm5QVXMoenFOY1Y0cUsrSSsoeiReQFQrUik/OnlxTmBhPDZ2aikxPk4jKWZI'@; put 'JC9VaXNaQ1lqQkNpUVdoPVBgaCttTDR0K0NiKTVZYVdKTFB2O31KYHJJdXVIejdpKTJZOGguVWYraUchNiplQkVSOGVnKTloI2xJbVBvMyhbR2lEPXlgRipYfGpGS0ErdHE5TzFMeysqMnZ2I3JxbnQrd3oiTDlEQEw8aSlhbSg+ZV9zPn4lKnlnZE9dK0ZTIVA0NmxwRj1oVjUhLyw3Lj5VM2Rn'@; put 'VWhvbSFBJGpWLHFyaWZ3PlR0TzlPV3Z3KV5QTkNHXmNxLj5XaTMvJmFHbksuOlJVLzgoWGBgYlljNG99RSZUeT9sKndHS25jMmtjS3VMQ09mLGhGLCN6aU5bYUM8IS99dDRla1A2OSErQHd0Q2J4UTRLdTQzbkVgVGBoUmw1ZVk7Kl5SdjN8MmNuTGQrWThdeSFzbXhyYHJqVC41Mlk/TFhSZyUq'@; put 'dFBgOV9JSltpKjlHdmNITlNsSWU3M1o3ayopR0dIMChyTDVXSFBTU2JeRVZON3c0bT47Ji5Kd2AhbzQrN0YwZFJSI2JDX094MHZMYXRjJU5SaEclSTVgTkAveyY1TjtiODgvfEZTcWp+dG9hSlZzbk4uJjIkSFJhO3AwMjFGQjI4VlN5SGY6TUJqeVpOLmRFI3YpSWQ/Q3orbTA9X1FXKl0qZU1P'@; put 'djZXXWxrOnpEKmgveVRDfEV2ZEc0fU1dNjMzSSUwP0l6djA1dWdAVDJQT3Z0Q0M/cHVFN3x+SV0mQlJeU04xWEcsIV0sTkcxYUxCMGZjMXlUemJyZik1OClJU0xBSUtadHJoNFgxODtyc29xamMudExCeUovPjJwSThaZ1VyeTAudDxLeWZCanxDQzBwaiZGMkpAUVo7MXZARU1FNSg6TiN+SkBY'@; put 'XzJ3WV86R0Ahb1FrZFU5LEEpdEM1WnNjZiw0Lj4yJFQ4RmFNMSp+Z2A2RDl9JXE+WV40fFFLNjMsfDA/NnRwSTZEPD43KGp2X0skcm9fUHl6NSpodlZQYyN0dFJ6N2MsTlJRV2J4clh5USZZWnZfJGpAbnQmTmRUNEN1UnhKUV5oZks1O0JwdTFGWGI0WWNmYWpFdHxNS01BYlRkXyxpZlRgU1BT'@; put 'UFJXSWkjLDRNRjpSUkQ6WSV+eFlMJnpKSjs0QWtlJkNTZHk8Ri9VYXRmRl5hV1JbSkVqJEtMcVAxR0YscV1AMTFaTUI7WnRSUFNQU1A/eyReeyw1ITYrJmp9eXNOMnZrSWd7bmhDWlRWd0l1bnwobTJxeDpOT0AmSE9LRSt+eTtrO1J9Q1RmI04keXFFeWdacTZpS3pRTkZXZGJEQjZ0WnJHbWQh'@; put 'cCtxTX14QlJYQkksQyFyamh0dkN5YmxMOG5EWFA+M3A3SWdqWHpgWUBTbjElUlRmLCVWeDZSbSs/TE1SJGVrOkJbRyVVbWhmR1tnejhqMjRDemtYZ2VeVlp4cF9fLCZSMnZ8Zm13L1FTVyE4eWBQKzcqLz9dOWwrX3pUSUZDcEBbTHZvdiFSdERYTkZ3S21wVV8sSGtxMz9OMj54I1lSSCJhbz4/'@; put 'JkVVYUBIejZYUzBzViowJXJEZkEha0BIejEpVUchemlPIzJDeWRmV2p7Py8rViIlQWdGKkY7bFdaP2Uxe2FWYyVqUisrJWo6MX5ZZ3k4bkRaQm8zP2F6Q3ZuQUBsRT5rSUxdWjl1RT9JYmphejw/c1UyaExEbE9RRiRLVlpdU1BkeWc2fDpoUXRvP11we3d2Y1o5XXIpbkE/SU9sfFNvLj9rKkww'@; put 'fVg8Pnx1fXVqO2lxbCFnKi9Sc2xxMCoqbUp4an1RcSsjQk5DMEk9U2Y7anFRakQyS05UKV1PNnR4SmVFNCExKDJHO0UvSDpkdnZZbXVjKS4oVVFhcEhtcDhWW1tyYE9ae1RdWVZ0Zjt0PENSKihnb3l1THFCWnVgdjYrcUBqaC5ZR0c5VXMjeiJdSm9LKlR1OUFPRHFHSHh8alV8XT4wdFE/Vlos'@; put 'YU56aElVOlZFbV8+SjBQSyVrISM/VnpHTipxPTFIZjpNX3NAe3wyNXxaYHhAZnpwTyJRXUslczpWO1ZFeTJxeV8zKzpMVVJASyl2TiN2NWFlZTwvaHJ0R0Qod1lNKnxCWjZkc2pHMmNaeDNqNyFhe2p4PUYrO1RAT1pqKDlCWkxWa24vLGAyY1o3QjE8NnQ9YjxeQmJiT0BpTU4pMHp8Pj5aKVUi'@; put 'ZkAyTldaVCgiXV45ViZNU2MvVGF7S0ByKW5EP0t0bUw7PDpxWnRlK29FJWMsVTYmZXk6TlkyT1pHbm00Z1UsKVM4TTBJLnQycU4lSCI9OzNBU0IuflJALGdNZVY1PXBRJXpbQHZOQjIwP2JrZi5JTUQudE4jY0ZGOHdkVSs2WF5zYFZLZEFzY3JVdSFgamlbVVUhKVVZKCtHQ01oa0U1IX1KfkBG'@; put 'SkgpYXFgdGMqUHA4IWN5Z3g6SDZQNG85KFJILkZKWlhRSEZIM0tvNShpbyRNayR3Q0QlWzEzP0YpbUNAclZSfSxlTHVQWGppa2oqMnorTFNFeDRLdVFtQ1NTNTBDZjFjUXJUNiZYZFRDdTFmQFh6RGFJQ3g0IV1NM3hkfk55elNraXpdVE9uN2g1KyYuZUdaYVVJJCoudG1+a1Z9WTAxa2pyeFFy'@; put 'MyVFSVJDO2FhUn0sJkYmRDVaNDdgeERqXiwmRlZhXU9iUEJbcTdAMX4+dkw3JlY5cDFmQFZ4IXY8di5eOHR+SVA+LklXakxVME8mYmRUO3hkaF9LXmFbMSpSdit9bjNIUVlleTssQFF5KzxMPlhsRjNoLF5HJEolUSUxSXp7ODFnalYyMFRJSlBdbSZATHZgRHlrVE93SyVBW1sxbz8lRjEsJnMo'@; put 'bWtnL3wzYGNvMisqLmFMcmNiSll6cCNpcUxnXTZwIWBWOTFWVHt3TWt6YUVjOXFtZjVQNHFXYHJSUVksNnUhI3hLSTR7Nn0rKFByMSxROEokLGNXYG5qbHc0SHdKJmJlSVpndGA3UDE1TGlAeXhDSkczZDgyQyxUTXN0LFB4VEZCZlhtUn1Ab3hqZk01NFdANjpkenk2ZSxtdzxiQCIxJFRZKlRi'@; put 'NTdhSUluZ2d4ZjNvc0BOelVqO0J6eTQpQWJ9WXt2JFheaExEV3g2SEJKQVtBLEYwPUNKR2FNKDclaXN3PFpQVm9SIk1CbzwjdzJ5cHlxOXFQVVVAcUtdQmBEWkF6SFlyQ0tpZl8yUm9wK18qe01hUFl4ez5JLF56RE9pckRMb2oyUXFocGdqZkFbfSsrMlczRmltSTVBbDNfQCgkMG84YGRgbkAv'@; put 'eVhPVnkhS2s6QGtsX3hqRCl4dUdEXl80dlVmWltRXmg8dl9LP1opLyFNSGdGUGN4PStqNGpSLnx2IXZJNzNvbXgoYXlgMis/UjMpLjhnWVtpaFY6XzkrPkdSOitTSztkOShxLzU8QWYucUdSPSFtKnFBa2x3NFRDbmpKM21TOClQfUhjMDdsTTN3YFBLQ1grc2RqWmZzYFFTT0tncCMzSndbLERA'@; put 'UVliOkdDanN2e0E8Tnlyb0x6O3E4YHAjdGZMeXVuVmRUMU9OX2U9OXhZUmRmeD5hWFJRK1J6IUh0YXxQTCN+cVcwaCVDeWhNeVgzUHZeWGZ1b0E/IjFNTiVhOGVfe2ZMWCVIRTMzenxzaTUxX2gkIlpaSEVlXV5oQCt7IlRDUm12dChDPnteYXlgZis2LmVMViEzP0p0b04wdUByI0pDWzhkTS4v'@; put 'MnFacjUoQylHQm9XYFJLV1QxOjh2eSQ8bChQeyEpY0hgVG97LGxuajtOTm5rUz4qOjg7OzBLVnFfQS57dFJDI0Y9eEZCdiFjQEJ5P1QuPmhLQEgyTmY4NVA3STM/RSlyPzk0bFY2Vy4yUTxGXnUxOyJRSC5CIUtKXWdWR0l0UFs5JD9UdEhBKClLKEh3bXIwRS92S3EubCxEfCpeRWtCP0gyNyxM'@; put 'NFlhMWBoVnRSaSFRZj5OKXYiRUJlNGZIdl4/alh8eG5JaWd3SkFrWjxBYzAiWVlyZX5FVmcxcz9QIUxpRCluInNEfkg1dE9HezN3cmAyMWIuVXgmcm8/dDg/STNKOko6JUciV3Eqd19LezkoaD1oaW1xXnt4KFEldXIwKVZCaH4jVC8se11HX3MmbSlmIjdBIkRaZlBIbCFeUmkwR1lIakRYO2o2'@; put 'cmpuUiZnQmNCQkJ8SV9SNll3VEo+WXF6QSxFXkpUTHU8QHcoYX45NShhdStCXUVvRl1FLGMiR3NNTHZ3VFJfOyR9aCZ0cEFjQnBaXTZBJCYkX19pJnpvcyU5U3FLVTt7VVh4R19sJmRyNnAqdHVOcEhlT2Q1Wj1AcGNJU0U0eFYvIyMkWmtmS05nRlEvZG9uVkZNZ0Y5eXcxaHN6fG16eC4ubSFD'@; put 'I0osbSFDPitZa2tUKixObyUrUXI3Sz54PVQ2YkZWViVoTmJJZGhdSyJdT2A9MGN6UWhaem8xVGhlVWNRTiNdPV4sQjV9KV5qPXk0MUdTNlordC44OFE+KyN6bEU/MVEqISh+IUJZIXQuOCxQUFg+KyN6UndDVTNJSkZMKChHImwzUTsoeU03PEgjaXdRWStLTFQvWVFpIlkpTGF6Mj9hfDZ9b3w/'@; put 'X3wpZ0dwKzpHfHVnc3AxaSE6eVpRakJuaklMJS94Z2pUQmI4eFk6WXpiQGdrRHdxQlAxZmxKJU81clh5a2RrZGtka3Y+WFVSXllRc2ZQUFY7OlQmOX11YU5rdThAei5OREhFJVIxPHtpQXozMHxJLjVTVUoySXkoekBbOVJdVF9hT0ArVFJeOVI+eDAyImFCUzwoLHJSWSZHXmFfUSsodlhfUVR5'@; put 'WU10SVYlOiY8JGV1ZFRTVmUhXixdRyNBUDElKyN6bXhiQDpIcjFiQDBwczFAaEcpWU1XenFTRjNibXxSNyslLk9TNmIrSyttQzI1P0l0LmpaM0dwWWtrVEJiQyM8LGJSNmIwZyxIOkk8aEcpS3VUQ1VSKyhzeE1gcG8pLDFRfkoycE4xSSlCQl5rRTBNeUc2IzVBMyN9TDAoTm9IbHQkS1IzeHZN'@; put 'QiZfPktRVldyU1N8Snp4OilwIWdxfTprLC4yPTVgdHZ2IXZxaClOOkJdMmxWUiVdbkRkVFh4LiwwTEBLMzxRZWZRUmZ6XUFMS1pBPmpyIlZ4dHk6UWhdPnJkVm8xODtHezQsPXM4bjIqcFprXWVMO3FvKFB8P31sdnFOVHtgcW8+UEAwVV4kPXNZY2RJYGFrXUU1O3xhbkRkcT9jW2R7TUJDfiU6'@; put 'ekVbTUFkbzk6WVZAQkt9dkJBfUVKTUVUOzxCQXBGaWVgemJgdldoeWwoe2l6YCI7KElUdj5ZWzEqZDZQPHE7TDNGVmltMlc7eUAlOiF+SEtKYUcuP0ZzL3VKKGhRL3QobS5UdiF+entwaTRGXn5YfWdOeSNBIjQhdChJT35+a2d+THIoN31WdUQpcVAvdFZ8WyIhKFRFYH5TcUhSRk5INl53fFY+'@; put 'VWZ6RTpVWDdwR0Q5WkRdS0s+YnBdNDEjfVpCMUYsPHl8b3MoV1t+XnNmd3t+IXxSZTl+dXw6UGx+Mm0vdndeOEJZfFQ2KH5iXT47W30lQCY+bz5iPHJzeXR7cyR8JEgrflZdNGBgfk57WC5zc1BPaCgidyk+d35sSy9RfXJfZXY6ZURPfTwqIn5ffF9oPS9dQF1YXztWP2NKY3MvWlFMRS9EazZ+'@; put 'UmxxOGQ1MWVZfWR1dn5BbzZNX1smSERPeD5hUHh8X0gpfn5ATkdefDBSaDZYLFRFQSJSVFE5QUBkZS99U01JNCgmMWVFYHw4aXM8PS85X0tfZXg9a0I2fnZsUnx1PHl8cX4xSG4qMn4mLDdNQH1eMGtCPEA3MF99XTl9fFAuOX5CPEU3Qz9KQ1R+MywoaFZ4Tns0fWFNU0xqLkE5Rn49eT05KmhW'@; put 'TG9zUH4vUWBFa3VnXkV+OX4mNW1XQkF1KGw/OEIyfFlwYH4wYHlYKn19aFBXOVU4JEl1OW12Xzx0fH11X1JhPXMkVV4pOnsxXWV+JEUhJGJ0NGxoYCV7ZV94eEA5SzQ0UnIoQH08d2hXdTQ4WlREXz14cXJ+KUUhJCEwYWZ2YFloQSIhPGFQYH5vRUIicH5FRD1+SXtfbHBze1BgcyRBWDQqc2J0'@; put 'cVdFfkQ9dChdfVBkfHMlfCkqVyhMIXBQXTYxZVNgVXRdc0FfUFFIfndeJWg3Jk57MXN1N0F0KnN6QWo8K31dPyIjfXxbYU0vcUBdLFVXVHQpPnZ+QkpjbkhLVmU8KWFQVHxtcCl+PUBqMEV+WWEzRjR4MWVxfXl4SjQzdC9pNXQpKDFlSn19dGh+NT05K198RGVPV3lkV0xxflk0fHMrfGE/cXMp'@; put 'Q1R4WCs6dkcvKmgqPjxRSGJ3OnVfeikzc3BqP1FNX11QUCheTV1lMl9WbVYoQjhLYztdKUIkc2BRNT4zLzxKQ0BtXjl+filWNG43KWhrfV8oO3NiT35zP312NCR+VGpET3w8eHFxflZBL1E0cnBQQH1kZT9zMERyKCFzKEUhJCk6ZzlbfERfKzdJfntCcjhCMTFlN182KDl9fHRJNH4yJGFodFls'@; put 'bH5KNm4uV3wqT3UofltDSEA5JV9xUHJXZjBNcDl9dEw5c0I8dURbKmVEUmBhLHVzSkE7OWUrdFdwV3BgYVB8cyJBMnl+QD5ETX5tOjFyaF9nPWdfV1ssb1N8R3s3PEQ3K1VROUEid2gpejI+Pl91aiFzZmgoaE8yWDQ2PlRvInM9c3JYM3lHWyx3R31iezJ5e3kxIVt9dilKNCF9XURuc0RgNzgl'@; put 'fCxTbzEiW2RHIVRHP2dOJmhONjV5W34sZiJzd35DMiFoPi9wQ2Q/dmdWKF5ge35kfi5VNWh8eD05MDY1U35zRCJnTkovX0JuXzFlUXF1fjhqUFdKM2wxYFJyOGBbIyRxV3wqYVBTflY6ZihhNDRGQ0c6RDJ5ZVtLZl99cjBFQj0/eDp+fjp3dFd+fjEkMWVSfXZBTzROO0A5Wnw2UE1KVX01SzRo'@; put 'akd4OjBfRnUifnxgUXg9fkBbOzw3czlxUTQvVUIiKn44XzgkIn1gYSU+JGVqVW9fcVBKLzY0MSFAfT5uOGhXKVlTXntxdj0yT31zWkMsU0AmLHFXKDR6a0BzMjEic3V+fnUkRFZgPTNjWlt+Z2t3eyl+KVtmSX19JjkmPjh5P1EmPmo7PEpwKDliKWgqflY8PUJCeiJgdndJJmM8LDUsXSpmVXYk'@; put 'XkV+Nz57SiNHaVc6MHBpIWBGdTFyNV9rQkpjLz5DSDpRPklJMTVyZWxyKHx9ZFFXTHR+ez1CIil+KT99czA/QDFvTHF8YnNGN19ENzFxKWVlfChqX2RfTlkrRCh8WVY9MjhfV3JaI3F+b1ZNL2lrISpBInFzL1MmdyltNyt7OyM+NDxDSHlrVWAhXnFXTDQwW2hXaUUhaXNzNEc+UTwwYj9gcz18'@; put 'aDYuT1NdUEBQfHQ/ZEMofmFbLjE7OEkkKSNBdEw0eUIpPnF+MkhBIl99PmlxWU9qZ34wSE0oMT5DZHFaIWMhQmRbWnVmVy5kUTlCYEBiekRFOyNkeVpmR08/QENjL3dDJmlBJD9DK0IlbiQjRzxsQlpkdnhGLG50SDdkTEEiYj9vQ3lUNEFVdVl6VkZtOUBWXUo9Ozh+LH5FP2FzZDpqcTE6Q1JM'@; put 'KSsmZ2o4SXlbMFlBWXw8WypmRjBgL0ZlQWFGcy9US05YIkp7MHgjSjwwRXdvbjk4cEIjQVMkOHJnTjpwO0FmYEJwKz1mIWNvQHUuS3Z6KWE/aDEmfEpMZnNTfDwpMGg4XzZUaUV7UGc3JSFaWypZcUVdeT07PC9rISNFVS43OH5wOGFVOTdISXFGLiZYRyhyKF9PeEkiQy9ENkNNUmZDYDlBZ09j'@; put 'X0RGTTtIY0MlTGZgOisuZypIM1EvKU5yT2o0RGR+YnBDaDNdODpuUDBFYEV2TGBFKChvdEk+NHx+Zi5dNCE4MFEwTWI3YEdCOjtdZyQlODh9bClfKWg1cEoxJVBxV2VRJSRSfnpmaHZgKzZmYStRTGJbSXMsUCwpbmtxOStHeklhdFo7WVsqJnxEfFpvLCh6cz1NIyU4TWcsdSU4R2tbPGNLRDsj'@; put 'UEZuWlomZWNpT3VwbmJDYS9AUWNEYlJGRC9dXmpCOChURkJTLz57MX04bSpCMD5qOFR0X0UrV2k9cEtIWFpMXTozQ0NSYUJqbk8odD5+NjA+XyUxNDsmW3RRQjA0ajZbdE1IdFhsYjZ5KGZJLl9FYyIwZyJCIlF4OEJlL2Q7Rj0oT0pZRUpaOC80cHFsUUJ2dDIhL2hFU1FHJFN+Y0Flc25zQ2s0'@; put 'fTRrYUpRZn5mKmI3ZHApRHtjKi9zemYyNk9yfnVJPyRbQGhybj1HdSR2PGprbissUz9vXzs9cGA6JFtAVHJdbSZxQm4mcUE/WGYkIlsrYD4wfUFuPXAmNyZFWzo8ck1jRUNtQ3J9W21LXUEvUD5vbyssLnIkPW9veiY6YTxPXyJUaDVEenAwKDl2ems0eVFhP1NLRCVZW2M+VHl8XT5oNUF3ZFtD'@; put 'OUt9UEVoczgvUXwscFVvJkhYXmd4YmBnV1gxMFJWbSFoPiIkRyszcixEVW9+VGYhQGtSZF8+PEcoaH1iO2YldTd6YGFJeWMwMEhvImhdQWMxcUlXLHhxbn5adFQ2Z19nZlQmLCtNVTo0aWpQWSluZFZqajxPc0g7IVh6dGBQWHBMaTVDR2xYJFM4NEpBRFp2V2FpdVp+eFUyZkZMNz9LdkQrTz14'@; put 'P21HOiZGL2F2NURYOEllRVZYckJbRnNCQUE+eGQ1VkVfa1UyNWB6bClZan5ZfFt3KkQsLjJUVWc9M2w+WFN6RTlod0pqbl15TzJSY0sibUIyc19YYEV6M3F5LChEM012OkheaDNuLjBbQUcrbnV1dUBvXkM5dFQ/eFA7QUx5OEZifHVKJUY+cEBDKHZJdFh2Z1MxdUgkI1FFU2hmeG96bEZUV1Ay'@; put 'MG87fXZKezlIR3lMbnMjTy5MZmk4WiYyIn44an4hc2s4ZFpwU201XWNUNEtGW2w7OV5oe149QmU2flU1PH1jKnJ+UHQpdmZeViRkU0twfE1DYSluTyg7KVF0OFhlM004KyJYTzRfPyZlJiZkPypeNjI1PDJPVDIpZGI2QXxvNmRtUnM+Uzs5KiUzP2N9YzUjKStMS0NhRiFkLypwKm9xRkF6PVB1'@; put 'dDp1QSkpbkwqPzFwfEBqRTZ+MXhRREp0Lm1PMFlecTs0WiZpQjJ1bExtJHhlSnlIcEwmLjNRbixlO0xVfHtOKW5POHJKPVhXQ0koUjVDNTo2PDVDcGB7diouc1N7NG98P21RWWA+Q1tCV190R3Nmazh0UiFeKF1wQXRhYjRrS3E5elQmaG1vfVNQX0BNKz84QiZlcjNgeTU0KitwZShdLFdMPl5Y'@; put 'MTYxd1hqdzQ2fHBRfm5AKys2I0subzhSPWBpP3FmKGBIe3BSM0B8JUZHdTZGQ0M+cFsvdEdKKE9KOkhkNWo7Mz9dWjxBQClBQX1KcikoQXVJQU1aTW9ffTRmfk96Q3RbeTtCPlA9Tl12IWE4Yyt1XUQibDBfPUo7Q0FAe1BtSy5IUV06P1FiJXliQCR9dFAwNUByRXFqaEMlPiVTVGhzeE93eU0o'@; put 'MCtYKWxhRU0ucndHWUt1Tn5OVmlDb0BWLzNfYSxUWXcmUTduU3YiTllbKz87WEhVZiFEWjp8PlR7O1gyKGt+dFtKXl8pRzZiOTM9ZDViNnFlR3clNXp+QDFudlhFSyUpXUkrXTYuXn0zRUJxYnZ4S1YyaTpEckhKXSRScU9zQEpGKWJSJm52Xz1+IkNETHQ2NVZOKEE0ZWZGfTpkNmBSSXJvdzpk'@; put 'UERKTFovXUl6U0M8dlp8fEJhbih8Yj80TUxEK3lVSD9Hej84dl9LdHQ4SCI+LExiQ0MxbEVKVm9NNEZTT2xCQUoxKDZyZ3Q5TVQoRUpbOVpPMkgxfngjOiMkR3JJSk1YI2dea3dgbXQ4KW99NGRAZztbbC5ed1hFcixATS51e15aNTU4Tmx9TixJXkUlYSs2K0B1WXkvdlJWLEVaOWZLbXM4UldT'@; put 'am5fOn47MT1ITDZ0OCRhQSQiV2gscjEhISxgRyZiYzxefENzaHs4TTp+VlNvSjhjI3ZnfnlBeCR3OztXbWRbfnp0aF0vK2x5e0VEXSlbQnQ2SGBefDdRNT1DdFZocGBGYUpFWDA7WE1naWdhcUZkeHtWdkQlMXx4LGA/WTg5YHZ8X0BqUFlEWTxFOmV4QFprYSpgcEhdblhwV1Z3QzhNUWxMa0Ul'@; put 'PTY9dU52P05kVXczK0lzcEkkMm96c0NPRittWXZlTGAmbTQodUY3OG84PU9HUjRmaVBqPGFFe10+d1ZdNUd9PShndlduUSNARFQhTUY9eF5bWzwsVVVMeXFub0ZzREsvcTt9OkJzUGdsWWh8UWg9eVB5L2QkTEYpPEZ9TDdYVTZQLDl2V0xEKSgxP2BvOXRpeXB1bi52PilXbkM8fVo7PztjI01e'@; put 'Ozx4Jj4+Um49R0swVTI/KGUrcFA/TnE+TkliOztqVzJqX3J6XlEyIXYkPC8sc2I7dyk5LD1DSXtDX1FAMXliUzY3XipeJFZ8QDw+X3xRbSUwPiN2OyNSal47bkVbblIqa0AxL09CfGxsPUB2UXpXQEA6aSYrLktMIX50RlU5Y00+RClIdT8rQ0ZfRXddZFpKWiM5YDVZJHBodDRfMCp4JFk6XT5P'@; put 'WTlbZUVGIVd4OCJrYTBjPFcySU54OjlYVz4vSz4icEJmOVZFMHZdJGZzXVZ2IVtDTzApfE5hWkZuTTVyM1RxfVckUjl0NmBsTGlTRV0uUlhuM35vO0tqcFZWZXpTRTN7PT5+PjdXQlt6Xmc3XmNwZktWKmxXUFkpRCwuWFpAZ2p+STh1JWZqVz1nVmBOWnlXMzMjRlgvO2NFZ3pYbytrKGg7LHdm'@; put 'ejJjJHk2L25NWkswSWlZUURbXn4xL2R4XUcvdFciMSRlWTZ0RHY6b3JZUVUlRyFpP2huaVk1JmciTCt9NDRvem45aiF1NnhIPFFZTlRSV0RzelFaTkRLTyFOTW5FJVhAV1czWkpJa1BGd1VvOipka2ksWlpMT3F+RzBNMDREfWNFUXRoe29MPk9IZH07eit5QEl6Mj4hIklrP2JmK3lDYXYzUVcv'@; put 'NV1tNDdRREF5JTIiWSJWTCV5fG9pKCxlTm9UeDhBMWEwNGk1cSU3P2RRNXI1OSVPc1s2eUNPPkQzQXcvfk5hMUdXaFVdZUouaislOSZnMGJqdy86VWYha1hKMUlgNDoiSy9lUEpYdjk6RGQiV0Isai94fSJYeSp2MkBQfUh1SVlOdTIvMCJ6dGpEQy54e2NbIko9L044aT02dTRyMUJhfkpqdylZ'@; put 'W2FONTQsQ24wd113SzFKIl9NQHg2WXA5ekVVXkh6cjdtMHtbakUpZldXKF95aWVzTkczdC5iLnIhRC4+ayV9VHB1c3F3WltEalIhTyFyRnR5Mnw1JSkscVI9YlM5UnQyMWYkUW59bHNpLEtlOWIyO2tOY2MpZSV+PmdkNHRZTF5AYihqb19mYDxBWnFdLyZ3OEhBYS5JaHxQUio1V01iJis5bDhS'@; put 'KTxdZCoyVUUkJC4uZGRHIWBofilLemxrQFU4QCk0MWpESztVQFJmQ3Ira2FRZz5bcDFvZnMhNnBbaX47P1M0Ri5qTDRUTGNyKUVrcCU3RF9QYW1gdzdbOzdDQjltTiQsflQhLHdAIyUpQlhjIkl9JDxGe2ZsPzV4NUtbRGxLclBaTF9oPmkuTjRlcTd4ZzwpajQmZU13MSksXm1TWCtRSStdXSs5'@; put 'QypgZzJ8NUFbd1pSbjtvWXVQLjheN01fanJBdGt6Py5gRnVoVFFOZ1YuVzBlbzI5KVdbV2JEVFpbK0U/VG1dVEUva0lPI0RleWQrYyhZLkM+T1pWQkdTO2dLcmp5S0ZPZWVrR3VyfUNBQVt1RzcvSmpgWk1+fjRnZFRzJnJbMyp2dnkofHgoJk9rZ2lCY3FHRzo3Ujd7SSw3WWBpYDZYdkd8Z2ph'@; put 'JXlxfUZZSVUoaW5iOHApbX5YRFA9MkBuWWltZFdeMip8Ky42bH5TISg7KEtPfnIvfnZQfCV7KGoxbyVdLmJdPj9fdT0mUThDLkQpWEo2X0p0S0ZpQz83MnB5YDxZTzsqYUEsYyY0ZUt8RCo6LFk0US5BX3g/M00qUEo1S1owNDQ4UD1oYVJfXnBGSlA8MHByYHJseCViPWVva2YxRUpENjxgeURo'@; put 'P2k4aSR8Lz1mcVZyPkpKc2YoODF0O3NKV1lUOTtZQUJkNm52RTBibGx1dkpZKWheYE0/NXA7cyo5XTZaKnsockI+Olc/WnR1OU1DU25LKHN+SD0sIX0+bVd4QGZIel0zQlR7en1XWUNdK1VfYDBqOHI9bCwkT1AuMUlbLj8mcyFrZylHLjtSKEJxYUJTPUtTZn4hOmsjInJofFh0R3smJHwpZCJF'@; put 'TDkpOU0oTysoKio2USJKRnoqYG9JRTwiQDJCOmEzMntCNyY/JFZeOik2VVdvK2BXV3wjYGMuW0dbYH57enNNdXRbQytjeEZiajpdXUtIfldfVjEwUCw8dm5BSytPU1ZkU1V0RVA/LExhLkhVM2l+PXpCMmNgRFVeVWhRflJAZWVYRlVoUiVnSTNgLyMuTFZlVSlXYiQ6KHFTJDFWazNxRmgxS2RZ'@; put 'PzdsNThybUQzKFU0b2poWzdweE8wbGVXLk08dzJDISV6U215LiFdflYuPzlsViIlNU4xXUkqXz5fJXRJN0hvaVdkPGBeKllUbUUvMHw9eW4lOzIjaEUkKT93cGh1MVlhWVBkdDUxN3V3MHJrdExxNERfO2pzR3ZtO280fShwMjgkSzBRXz9oUjdOdD9CK3NlLl43IzlFLHZSQjNyI3wvK0N2a2l1'@; put 'dF4zZXQvWVg5TG4/NSkuK3lVI1o5WjdDRSl7SjJKa0NFPHdBNmNVbSE3c3Q5JDokPSxvPSo/cVFgRHB2ST48Wyg7WzVqX3c2UGd4LjR1VH1kY2RFbD1GOW5yMm8rdzJ5YkArSFFXWG5mbWdoSE9fKUJaWTk8ZXxDdyskWThjOituPGNrbDRLSCY4WmJLIyomfGlTP2hFd0o2PCZFQU5uZzcvOkp7'@; put 'P2xIbVl0aWwhXWBzNkBPcTNnNiM6ezVbeVc8UmBMK0M4bmtycz18Nk1+fSNMMDhCalZ3anozNWdtJXNoLjBLZH5HTC93cC9vWzN3cT4xXzFifWE6eHpXKnxkbGZxejguW1lEZm9tc2tNWmN1JDE0JnF8PC9wSz4rPDpBMzZ6eyRJd29MQ0YocSU/YTtdW3VDOzxnVHU+LChYQSpyOVJOZWxHclJB'@; put 'Pjx4IW1oUz9zI2ZNeUBdRGJLd0oqVC44R2IqeD1DJXNJdCo0KzxwO1c9YHpUKXUyQV95aGBAWmR1V0Z5V2JmcUVYUlZ3RGhzKDxJY0dlPD9eIXI/W09HOik7U000bC9rXVdwb1kwMHFJbC9XVFc0d0UvPS9HcXM5X2FKRyQ5JXZnKEJIQDckLylebXcuXyJ6d184OjEvcSNtMVpmKnY/OCREIUJU'@; put 'eF1+R1ZdIiNkSlVgS28veWUwKjoiNFdFTCFNaDNsZz9VJElWVFl6Vl40dSF3Tndmdkc9X0RhNl5ANyR0OEJDJm5ZX1V+cVRkYF9JNjBodDdnd1g8RjF3LCZNSHpJakk+PUdFYjFVQGs4PkxbUzdyYjBDNFZSezdHfW0lYF1mVGltTGZlYl18SWJgLkp7LnBQMHVONyRNJHNtQ3wxKlg2S0BGVUp+'@; put 'LnwrI11+S1MlTm8yfHRKVHlLOSYzNjRddGE+VUlKd2BhN2B7UFRoeD1obyFTcDIoLGUwQmJ+QVs/a2w2MHExIWxFU3NDTSQmN0Mqc3BFTTVmWFFLRF5AM2dMZlNqWF5YdGFRSD1rUFJoI0ZjSGYia3Y7cltgZkc7bCRPPDN8MTdaZmhDRkNdOSozcTIjJSEiYn1jR3ptQEB2ZiMrLDU3akJSLypx'@; put 'UE5scGJiNzZCdzk7N2J0eENdeEhYeHg3MFs0TVcwRlAkKzFwJFolXzRae3ByemddSlcyVUs0LDVMTDdeXmR+ImppKEVHV2o5SFgvTkhxe3hLWkNYNm02Kj0yaEdfSTVhQ25+aj1SaEpDbn1hI2oqTkgmPTAsV0YpVmZoVEYyNTtNdStfR1RPYkhqUkR+bHNibHl+dnZwOldkI2duVyU2MGt9fExN'@; put 'PiNVZ2xUJmMsVXhrUi5oXytQWUd4QH1iezFpeX5kT3dDQV1MK2FaITFoJGBaYGd2PD1eQ0NGLmJsZ3h3cnBjQX41eyE9M1V9JnBSRnx4bixsYUBlV3FxT2JPeEAybjMkcDY8YXUoaVhOOUtALzBJZTF6KUgrVFIucTM/Yl0pIW5Sc3MqKn1RclZkeSQmMzN7cEhqKmZZTWRGYlNwKD9pZ2pUKGJ1'@; put 'KUIrZiRxMV9XQX4idGVkIlIoTy9efmpqO3gpanZhK3MmfWN4aTBQRVNKLDtqW2VCQU5ney5gfSZheDUlfVpfTDBKc1NLaCJrc2IjMGdyPGxBVT9OdkVZI3c/XmtOa2t7YXZTYl0wJiRab0VER0IveH1HRWooV309Q3MpWyhkdmxdNX0qdntfOElvL0VnPXtNeHo5VF9JfmA5cH5PTj00N0RYc2tp'@; put 'QkN1RFNDOzE6JWB7d1ZsOEhGJUA8SF88S1VXcV1gUXgjYHxYPXlHXUx2aSspQ3RRMjJCIkA2TzZNdGgoOWB4RWxwNUxIY1YsfXtxeUNlKDkxQW45emdofUlWVHpFKmlda1RiU2wpXkJgSl4yUmhbJiRHUj0pbk0xK0Njd1MpaGM2SnNbIiUoczMmdU9KIj1CU3taXXVKIShmai5aMEE/S3VDWFIv'@; put 'NDpCbiMqLnBfWmVzcT5JL1ZDIklzX0x2bTt2IW8lV019R1ttanYkMWEmflhSOi46bFQpKkZZZThqbFV0VlNESU9le3F1IzQhV2koS2AhRileZmF5eSxUWS5lQnw4PHp+TSxGcnZJXytkbihsdWU2azs/SV9gbH0kV3BYcDw2fnkwdkoxbHhPak1kTyRdLnB2MXZ9NSk9WE9bRWNtYHM2PyxbMF0/'@; put 'SkF+dkteWGc2azcsOylpZmc8YFF0RlFGO3t4KUpMeU9MeHczPG9IbCghc09KQGk1JU1mQE4xfV0kdm8uaCRgNCowYlVVdCZGZV4wRFJvWGEzY0NgPDZRJFc2KFBWM3RPfihVZjwjaSJENDo6aSNeWmQuT0JzZUZtdFY7Xj5QS1kicn5zQzVHdn4keCV6cyY6SilqVXxdSFdNPzhsLHojYmd2U2g9'@; put 'ZmAzWC9walMuWG4+dS5yckV0TntqUCRAL3lUWSl1cSNURjpAXlpKWToldH45YzYzPXJtSFQhOF1LNnU5MUN+OlU+KnJHdjIlWn48Jm9OZWpOKiQhTFNge2VGYz1xKmkwOipbOjh2NFJEaihZNnNbO2c+OmQhWEFFcEx7fD1wZmZFLis+JSFCMUhicnZLMzwhekFdazRvYUJAKltmfmd9dHcpeG0v'@; put 'ZUJLT3wvPClsK1l8RX5Je05+WERgZzxqOXxJeypiYHomV30idjUmfUdpM2toYUhMcSQhPClUcXB5PDthPW5fbm9MMUplcl1JQzRGcEZJa219XjYic3EmOGNoKDpHKjJvdig9QXx2I35yezhncFh6U0NsNnkkN05rTC5OJU9oTlo3LFU3NTtmenV+QVY9TXpnP2s4fTo3WkxTOjhaVV9kMkl2THMh'@; put 'ZzgsZjYuPUc9VnxpZThSKSQmVHEkX0xfOGh+KCw5a318OSJ7S0U+czV9ZTdMMUBCfGRiQ1d2bUpFSTJ0M3s9a0hSMW9CKXdlRUM+KSw8UD0+Pm9xOX1EJW5YKlFYdjg6e2ZVaixwPGZlVltPSVQ0bz43Z0N5N0BYIXZaTSVOJVpjKmpCZ1pGSDA4SVYiJkR1Mmc2PFokeFZpOy9fYXowS25ac3NC'@; put 'TTI8NzMlPENrZjtsOSRPfFg0O1pdYEA/NT9gOUpdOXR+TXpMMnRLM2AvfXxXSkYyWSJsQyYjX3FvVTQmclZHaCxnW2tnI0srZkIkOHV0XjhQMW9LfipXTCpbQzRuKmRZcT14Rn1gRndfbG5EfWc3PkdmKlUmbSVFW09rNDxLaDU+ek1FXVFxfWdGUk0qM2wpfiQsWFV5SVFDeFczRkBbPS5mKmZ1'@; put 'dGQ6dUJtXiFVWik9LyxKbUVIISlDYWR1KmM6Rkx4LnFxPEpEKzU+fVV5TWw2I3koI1pHcy9jKyVlNkYjekVDRUpZeWhYK2R4RXtRN2Jqe1hZTXcweTIkdFJUWysyPy9WRypKTixBbGRfNEs8Ny96V0dANDBbZXBYLHtrV3ZDenc3STdFaXh8RHI9P3wlOVE3PlFjTVJZRm8vNWElNiU9NHVsbyMv'@; put 'bFQyXjdKLChnJl9ScmI+VCspT2p9ZVVrKjJtYysqT3FUd2hNeEAuNzdXZD4iS25oRVg0VkpFdDlLXyxubihHNyNuYjc6NmIpYHZddl1QPG5eR1ZOV24jZWI2e3slTkJRQGFuK31ddSgpMjFdTT1pIilfXyM7cEJdWzBZbk1hTkopM3JoQCtTMzhEYlhsOGs5ZXkwNWU7a19PbnlJTEU9WHQiJSZR'@; put 'Ni9OOXN5NyQ4KExXX3lbI21jTTIxfjZbSXhpcHl0QV5+W3xnSCI6O1E0Om1hRytVXk0wLDl9QTxUdHRwZF5jdCpCKE9Mbn1jaXc8ajgqRX5tbDxXd285PU11ZV8wckJrUGxFcG95SjllNXl1MVtKI2pyXTFgPDBlZEU9KjI0RzJYdFg9KW5UYHE5OjR0NVYwKXd9VWl4OTQkeVZjNnZqZyZ6ZytD'@; put 'KT1iKUZlfGhkSmBFSnJLKzVvOzhKS1ZLMTE2Mj1raiZxTTFLZS5Fai96Q3pxL3Z6YUhwXlRFKmM0aURMQzdrK0hhNXhUJF93anFNVExWIUtCQXFtcnhjRHVCQFBhYG91ZnU9Vyh4WTE8V1BORCl0b3R5dnBuP3RJQnB6QmI3Siw8eCtRMUNxODx0bCN1NDtMRCkyY3dkRDA8VG90PWpKOzhQeWk9'@; put 'L2JYVzFFZzdPV1ZkL0wzclFIMzJaI3J1a2ozUHNlUEYva11xInsqan0vMXZVelNTR2M5WHdJWjQpejlXckNJQF94ZnZMJlF2WC9GU1s+NU5pK1AkTkhISy95N1s9bjJtYHZSXT57NnpkS10yPTZJdmw/XTB4dz0jVDQsOmB4Lzh6dGs0fEM0MDhSRUk3dG1CPjFxVnNuI2VidD8zUHhPVSxVRHRn'@; put 'ZkwwUz5peDYrZnpWRmdTP0FLXVZJNFYxSnNdclN6dmRiLHVEZzpCPlh8UW80flJdRz1uWUU0KWQ6KVRodllraXBJZ3klYzdSZXh1Uj9ufi9oSS5PRyhReGNPKWhfakVWezFZTjgyKy9sYmUwRSJNRnBEc0BqRGJ4bihIYHMwKFhqVz1PeWBvWjMvdVdDdiUvYnU0cVslNSViNSg0cERPPjdYWl9f'@; put 'Yl1qSkRfb1sjPTVPTmllK358OmN8fktbRUZFXnVgenRDb1s2K0Y5KVUzQERCem9sYHxNOT91bEMhOmIyZj1SMGxgRyJTO0p0fE5LdHdLcSN7V0FCMlo2TyN8P1EzTXJfWWR4dCZEaUU2QzAofTAmRmlMUm4hK3NRdGNbPiE0aV9OVm5PWFZWXkFWcVV9bCw1NmxzdXJZc3x6SyFNejBZZ0JAKWJt'@; put 'LD11VjsqNE1ZT1ohMWp0OEo3NGNOblB4KWUpZDlJNkRTcG8xYUsmTWdyOFBpLFNqSUk4NW9dZGBlRU5rUDk9Y2V8big0aUcscUo3LE8wZDsmNGM0Ol5jbHBCaHMhaWpAM1k+O3lKJVlHRGlhRVBsYzZKKSRWQW0zWSpnUi83fHdXMztNLyVVemE6UjBaQEZyRkFDcWFkKlhfb0RtNDZZdjI3dmBZ'@; put 'SDchUmglOmt1IWFYUi8/REhOMD5USkBlenIjKWUuIWA2Mkl5N3Q/MiF0LzFIRUYhUDhCRktNKTRzeFNqW1VhZmw1biN2VEtMbHlwNnZ7dXUzW1lqKVFsYnt2ZTxKLkJeKzJKfkh2QGZfbVYhKmtUU3Rad1VuaWM6WjZmelZwfCRjcUxueCZLKzAkSyUsTntwZU1YUmJlYTQiay4sQyk0OD04Vzss'@; put 'SCpQTzdOP0oxP25zPHZkNFtWOEF4ek5qVzBrWGAuV3NpRnJ8TkEvMS5ue04lcDo8PGxbT3cpeDZ7X3woNFFLX15neTcpTE9bbWFCRV0hNTErc0wqQmc+WHdLLHRLWyY8Ol9AbCtOQltwQXs0U1JlLjN2IyMhSiFnSi55YyFyXldNVExnM1VwcD02KHxrQXNtQ0dfWl9vVGBYJH5POk8sJW1QI31p'@; put 'LEpuJmA1Y1RDQk87fnRHe0YoQHpCNFh+KWAyQCR4JEZ0Jls0ST10Z0NvKkZ5aGByJnpvUzBCOXthVk0iOyREc0YqNm4+OCVGY3xJKEMzQmJ0TThbT18yeEJeQHx1PVdaV2gpezFxelZCdkR6KD5iSkx8YzU1T1Qoaj0sa1M8PHQuREVUPTNOaXNWYy4oPng9SnhyZWxDfTlxKlNvUzRRbV9hO01H'@; put 'Liowc31YTGl2QUQrOE9heWFIOUpsRF4hYi9LUFdWVV9IMURye2B+amE2eXlNdV4xeWgwVW1MbEpPV2I1OFZMNVR1OkZfYns9dXAucD1sXityfkYiOTVYLlQ3PFdqUmJ7bWRTTlN8ayY+KDBHfiIpWy5Ne2F3Z2U0cHd8PXw+Kk4xOTw2fGlCXjg8JHZHRG1qQlhjUXt9TWs9OC59ZHZXWFJkK3s2'@; put 'dHFiUy9EcnF8ZDtXUWVjRnJXTkdVPk95bzJwXyMyfVQvaEI4Q3RPMFE0eXd5SjFKNlR0QSIpNXNjTUlEVVBldUcrTXtmel95T0Q6Jlt6dGtzKTJKXVE9bEFOQmpIfkIwWFc4MTRONyUqLzJsOD82SH1MIz52L1hTeSNIaDx2SnFfPHUzJmY8amlONT9uU0hjaT9BRGhlIjlBKnE7TFZxak1NfUNU'@; put 'RnM/P2h3JlEpaVBVeDlLY0t+fUx6IXxbMUoxczkvJl5YKEBHSExLXSkoIyFvM3F8UCpFQiVyOUNSUW9Qfi5lakhxWEhAWGErKlZ3M24zO0Qlbj5eV3hubC5USWBkNC8raG1yVkkoQHVMOkldZWA+N2AoZD5sblFbQXZuQmgseFtLYUpQWylsWkp9P3R2JUM4YyxUajJdcHd0Oy5EPE5OVVB6aHpL'@; put 'fU5iJjA7L2BbeXxrUSZiN0svYnRVYDtLYkhvVj96Vi4vcSxzYGE0TW5tfXZqPDtZIUI7YiYwbVpnbHtfZTFtTDYvYiNhKntLTExkSkFhT0RFZlIza3R2b2x9L2RiNVckU2lhU2M6UVNXPFV7QVYqRXdecyk6fVZtSC5LOSpiI2FTcTlDaVpiRSs9VyRlU1l5U0x4X01vR0FxQi9tSWovXmFeXkJJ'@; put 'NyNuIUpgLnV1eE9qPXF0RFR1Oy5IRHUraCprRVtefCpWJmFJYztEJGRRZ0g2bC5yYHplXkw5SXIsaDBnUjlga0JoPFB2VlpeWDJ5UlJXVzRSYEo/Yk1yMm9JPk5fe3tlbURxdz5oamdddW9RLlVgTmlLITFULE1iLjVLfE1iT2pEMW18dDkyKkVKSChBSmQrJUxZWDMhPzchend+QncpK0MjKjVt'@; put 'YFNIWTY5fkpbQHdBfmJndixzMFB5a0pHOn14TklOYVIrT2A6bmA7UXtZSztgdnlSY15FaDN7KClsUHY6Z2pOZFRkcyE1JDEody4pUlswSUhjYUpuO1NJZHBWR191WncsR3Q9JEJIL0FyRHZpc0hPSFo6TXx2RC89eU5mV0s6YDxqQXYhI01KQlF9MUoqVXg5VGsiSiF1OWB8VyZZJCgkLjYhKD9v'@; put 'RiVlazwmUWgxME9FZFRJNXNDRDgrNkxiKERKdUExSys9YzxrK2giYnl+cmdoYHR6aktqbDtILDgyPCg+UiNJb3AiUVFbJTMkVF5Xd3ZGZT97VHQhQitdUDJPMiF6ZWgoKCVuUFdeImcrL3VBfFtCSnhhYFNgdChzUXhubERMY00xPHJUWk9KVjRNMmlodTRLbHFsb0hJfTxvLENyVEklMnZAaShg'@; put 'KnBJWEVbT0BGWEJSJGtuK1U9SHQwdixPY1FGQEMjdHxTXmgwfjc0dEUjNV0pK0NSVjt4MC9zSU8ofiN+Q2VXL1FBUC5TLnYoVWEsQzpHSnA+UW5vPUwpSFghLj5VWkB6I3ErO35sbWJjej9MOnFZVWE/YGpdVGt3c3YvXXNjKzNPXkgoLzpkdFU7JVdxNDl9RGJTIzQ8RnVxUUZ2Sm87KGxVJnw9'@; put 'Imw+M2JBKW1TT2FJUywlTk5NcUZxJDtFMnFGW1tlW1FJJXhfL3VzXml2dFNscncoN04xfmtsLFYjVz06di5EdnomWjtrPlJGLENlVDZzU24yO3RFe014djlnN0hJJm5GaGxaZU5wXnh2MXh3dGw4bV9Od2JVYCxAVENNRSVaZHdvZ1k5OTAwWjJ9cGBYIlord09DKSlbQTdvP3NtXzdIPC9jeTh+'@; put 'aG1UKnx0Z25dNDYoN28rPiZqM0BKTCVYbDd2ZUAhNytMNX0uREdRY0pZRGVGZ1lEb3ZLMlsyOyYvQF4vZExldzVwYCVSOUM6NlUxI18kQTpebVYvRTJkTnliKk0pJG1IYSxaRi9OJEpkTVk/XSIvWTFFblhjMyQ4KjV5XWdwVUxVcGVMYj9TNn05IUlhRH1CcFdbMHVUVkNpbG14N2lnLk18dj8+'@; put 'cUp6JTx7IXUyPWN9cj0zb2w/Oj1KO0JjOCR+aSlMbUQxKVkoNjdzTWFdTnMwTzA7Smh+dX4ufHtRfFFreEV5KmFlNHc8QkFtejE6ciNHIyJba1p7NDlCeGM/V0x+PCJIWGAhWUZnIzVhQXFbIlhaYyFTT1pgTjgsPE0sY2w1MVB3WEBxJFY4MigwQVJSRlo9ZERpM3U/WVJmOzQyQDZxbHZXMit1'@; put 'flchZ01ASXpMTXtHdSsmTSptUHw8QEIueTNUKk1daFpEN21lYjIkVHZmdklBbiF9dk9JJiQpSX5XOW1Hd3Y0QURoOWRVQ3kuKlE5V2haN11UOyt8bDh7JHNwclZYYX13biNmZn5BJltxTjBMTjpFVSQ8VHouRCkmTWF0P1tIIytndDkvUmVMSExvdWRUUUYwWTZafm9NVComck1tM2x2b3QhPFg4'@; put 'W243cFA+ZTZQOyIldE89LnBdQmhsP2UsWjIiJXlhMTNCSnQ2PjwjXzJlZUJAOjByfixSSFBWJiQ2Pko/cWNXW2AoYCxASVk8KTFCVSkoTXJnO0RsOF42Vz48dDdpMXllaVgrLEUkUXxeRyNXQzViJi4hb2JKQFpeYTZFMn5KOC5VS3U/dFF1UjBtcj9QRCE2MjJYInRDcXs4MUMpLjFba34pdn1z'@; put 'RmZvNHtQRWBgdHdRZ2xLcWVrZ1Z9c1kmIyxsbEI5MTBjJnUwYEVkfigjckp1ans7UUQ0N1o6dCN6XWdJRWpxJjQ6e2FXXSslRFFuaUx7QHBpbV4oUUhDblA1WkRUODE1eFRMbDI4YkddJiIhMyQ9NiE0Y0hjUzhrQ3E4LmlOSiw4NGN8K3pDYGAzY3xHU0Y4eCReZVtdfD9IITdEQVdUTTw7KW0r'@; put 'dFUqZz8hYmFmezF3OytDUFIuWEsuSlJwPWswZXpXaE8/RDRgelchcUx5Z00kTHc0SGhdYnJ5X2IyKUJbOUs3eFhEJUdPTDxHWFlaMjdsZDlvQX4sPi9QOUp6eGh1IT8oPjtxN3lmOHNATSM7Ljs3U1BbbD1KJXtIQj8mMjlMb0A6eldFSjN2e1RmJE4lLzJDSGI7RCpean5WIzh3b2lEMnheVHBY'@; put 'dXNZP3VGQ3RWdGMreV1gfVg5UylsZ3wiTyhRbEYqZndQNHZNcUNqJjRLZj5wcmtHO2hRTUFBbE1FWyFdYUlRZks8OEJTNWwjZ2lpdmliMkN9SFY0Vnt5OmZKaFVIekswMD4lRSsxPDhMRnt9Wjh+ZXBGRkQ4eCwvcEpufCNnb2dnX1clfDh8V1VzQylyaiFnN2paej4/ciQxQClbNFdUNE9VVH1s'@; put 'Xkk5ciM9KTAqaUElVjxITWN4KEI1L3Y1azI+PHgockdbPlA9YzoxL0VjPi8sKEhZSn5BQjF1M0shNGtaTFAuNHljRGhybUJ2Kzhubi5fe3djRHhPP3haUz05YlpIW2MpJD9mYDcxR2ArJnouXTd9SmYyKEA3bGFrPVRHPVgibTYiPHEuSi4vYDFpd3A5RTdqMlBCXzZqR013MiNZTm9ESSZ0OCt4'@; put 'LjlDa2pfdVdaeClOWHp8R1Q5MUZbcSoiT2dUPixZIj1qTkRFPS9dRVRhdEk4fFBkeEA+b1puWEU9RmBRXi5sZnFvLHwiZlJpI2N+WzR+QyguTjs9X3BgQnczRVtJRW9oOEJhdFpEQHRpbjVUamQ3flp2T2o4UG81K3N5T3p6WUBYQ3x3en1kaUVIV1BeUCtNWFRfKCp7QXBvSUwpMlM9KEhoWVpM'@; put 'PHFqWS85QSlsYnVCQ31pRzNWN0c+aW0kYUUpMCpzPmg9bSQ4cSsuTD5FWF9yaj1NfkJYXXN4NjAlcmBMOWp9NTwyNGhJYThAZ0N6fXRsfll1ZzlvclNwa058LF9WaUYxLF5WQVtPVy53NlUkOXZTazpQPmVUOChkYFRVSytAVmp9VkgpZ3BWOzMqUCgpfm5MP0hpIXV8LDM3Q29ZfjBUcmAoTCRt'@; put 'R3dMVWk5Y3ZvP3hqcGZdJGJqMGkkclRjKFY1YE9rWnNgPUlaNkBMaUVSKGZLQ2liM1VIRXxSLyhqJGZuWG4zQHpCaCs+UVQlKGdGJDY4R19WbDhYe0NJR1IiajUzPjY1RkJQSD09NGteNGssRjYmcFlDVkkjRDs0MC87XzFkUDIqdHNOP2A3JkkhITNWSC9hTFZgQX4xQDRdMTUpbTZrKU1dbjZs'@; put 'fWVAIjB8OVl6cHQrQF1IYlZ7eCRMKnttcFV2YEA4RVNHV2YqN29ITTEpRiFbPlgqRnVMSEdkfV56JXglUSpuSXY8TzJCTmguQ0RnLy8yUkBaYXpMYXVfSkhbeVIjZSVnYjs3X1BAZzk2fV5Vcl9XKF1AU2IudEA5a14wTFNCaiVhJkopMWtlcHVpdG9reHsvMCZmNHB5cS50RC5iS3AuYWNfYyYu'@; put 'YWV0TyN4dW5WZSwpSUI8TSlPLE8hOy9gWzxPRnwrYEplcj1yQmIuPj5AUVBVOGFFelpXLiRCQ2ZlO0lIbVJ4JkpleVkxUVY8JWA9TSxye0Y2X2F0XyI+NHglUGkkKE5oUXdpODN+clpUek1LKDtSOWNjIz9MU0AsJnxoZGxROExONXFyfihfRjk8PFF8XyNGbis2eVk0Y11mJDM6bGVZPiNqKndH'@; put 'bl1Lfk5oR1I3akRSbn1AWkBvd1ZMTz1fe3hdeiRyeUs0ISs9aTJqISU3eDlrR3B5fFJVcisicnQ4PTVNKHQxbDlBS0JBL3R2ajQwOXhOY2hlOHUrdWE2QHIwVkZbWDRISmtNXTZ5MHR6IzI6aiNrQD0/YVszeFA0KyZGTkV6PlZqOXpDSyFCaEVHbHo4K0Z4SFs0UWhyUHYuZ2B+NTl5ImJfMjl4'@; put 'T15oQ2RRV0BkQlJTSH1ddmNNIWhANS85cV5dVDxGSHExYnlAaU82QkBoUF5Nays8eUNLVFlMLj5teTE6fGUpNUpre15hQ05Lc2dCOC44Yz8rOzQqRWd4L0ZVJGpeKSI/VmU/LzghQj8hPDFVeltxbW9JYkpyMTlkaihHIVUmXjxxTF42OUcoNXBEK0oqfSFRR2Z1cz40bk1MY2g/M2EsXU5MNVFf'@; put 'Xy4rdUNGQiVLJlp8V2I5Xz58VzpUOm1DMSQ7OzEmYmdqOHoqbSZ9RmB8THdNR0tWUT8yY0BuJWFCP1J8ak89Zjd3NzlpJn12YlhoU1E2TzB+VUtEb0VMMlVGanRranV8M0UiPUVZSVJeRHtAczc/LysvUipvUDpqUl9OK1Y6dVd2a3heZ08mUUI2cEVhSElMdVQ3P1hdYiVkPTlwQ0BOPFQwQHBm'@; put 'ZFYmMHQ8bkgkNUxgSUFCZk5zS1UuZURJfjsqOmUmSmRuRW1VL0lFUz5yUmIjaGgmZDdsLl8vSj0vWnghaT5NWV4hbl52SjRqSUNoPiNuZ0NWMXtnO1lQbiV2Jk5sdHo5NWpuU2pZcVdDVDN8ZCllcUYrKkozLDd6XXNSdlM/OHJ2WDV2ZHo8TVdwJkJgans6NTZgcXU2aVk1RSMxQk9ffDJDXy8i'@; put 'PStlJm9LelZ0Mig1N1dsImYzb2cwKFJvM2g7Y3Z4aDZvTXZDbHZ2WXVhJX1BdFE2Jm1iTFMmP2M8Rl8kZz9MV3NEU3x0NF9vfT5BVSt+Q31eL0BKIS9eOGg8VFdaS35XPGkvInwyPnwmKGcxNUo/T0NNWW1NWFl8KXEuayxkcWx6N19qOnFZSy5RJXg5S0FGJWNael8zRG50dnB1dVopemY2REQp'@; put 'Y3lwVlt3ZW9nOz9JJE95bHpsKllAPSZgLFYzajdoYiZmdmoldykjODEjUlZTMm8/JVZmfXo+KSlyMlM8ezMkKEciYGpoRTJefSEzZ3lOMlUlTGc3SUFdaSJVN119YzVAc3pVYFBRa3NjVVU5My8rZFkxam5+eGNeVzVIKi5IRlNSK1hMOmxBY0E8ZChnNDJiT2ZiV0wsJSUhJGlbfjdjPTF+QEZD'@; put 'dFlPOGtMUSQqWi92cDlxaDo+bHx4Z3tOd1l3SUsvR35tS3Q+aElxVnNzanxyQCR9WlQ6ejt0aWc8KlpUSCI/PHolejhheiEzc2NCakNUPCp9WWhkfHMwTlRFX1VIfmBBY0N6X3JoWVBNa0B+bEhYWUJAdXR4cCFqQyhJIUc7Q1Y8N2RxdXtpIjlVTk41cVJFenBFaXtNTXROWj5MbmN6KD1OOz5G'@; put 'fld5JS5DNWZrT0d1ZiNybCxnKi5eKDVNYis9R2pyUzp4Z3EqI3N7VnxrUHN7PGgrc1ZeaEpidW43SUB3SVE0NCpTaFp6L3VGX3NmQSNBKjlmUW5Yb0lvNHRgQCVGTVgzfTpKMSxWYGlEdSxCQ3A7Q3okUUZ7cFE2LGdxMCU3aHh8Zn56MC9qJHxrUWlHSHxAbG5+VXszaVh2ZytxVW16WUFDMmYy'@; put 'Wk1ORUhBQ0pYOS5wJDtOQUdCbGt8aFJIcC9ENCg6WVU+e2JjJjU6c2paWT9pTTp2WzgrYW88MGlHYDB6Y2M/PUtebDxMcEkjJE8wRmpSVyZfKSQ2V0pPJispOGhNOmQ3L2kwXVBlWmk+JEZvZXkrMkkjXXpufCY0bTA2aihhX3dlPSxpQ2dFOSljIWFLcTooOD89S15MKCRqUzwmU04+aWA5dVtP'@; put 'RU9FR2x0cWY2YXpkSG5iV3VuOTBsN35naTBzUFFVXkckNzF6KWxYQkFJQ2NBakF6UnRQLzhWSEckTkNgcCNpIkc5Kjp6YT1zSFldLzp5SCZjKlhNaW4oOyRDRWJHUipzfEdTOGZOXTU3OlgkMHFvdmk5VF5Kd0Y4dTQyckUxZ2ZjVVddQWAocldyYToiKX5AdU1aViZQNWcsZyxOV0FWcltgb2FL'@; put 'QVpWL2ROVEttbS9MdWBHTS48S1FiRTdRMylWTEchLzQzMSMxcGNLXnhhVit+QypKaS9mbD9PNS5hMHRZenc/UldkUWo5MVk3diw+a0B5bHojMWFJRmExNE09dD80bUNfUExEO150O2RlRTJTdXl+S3g8NHwreXE9OHB3e1lsOGtheG4zRFdVQ0puUjFJUl9+Q25vTWNVZDMxW1Y8fE9NOmkiamFa'@; put 'ODM3bnZFbVdVRi9KMUU2OmpRRmRLXnV1XUwsWm8uQSwuOUMyaWczOz5HKHtyflVESWhTezBkUTp6Vjp8bmRbV2E0KT8/eGNqZEp4WTYuJVYuXSVHTCElZFgoeEh+QDBOMDFTYkYyISNZQ2NUM21zQkZJSigrVD51MGZlYTJJcmFvIkR2dF9VIWwsUm9CRjlHKFl4a0VRTyUyTXBXemc/eHJMPnsw'@; put 'JlU/MHo1O0VPOSxdKCkvNlpIO106TmgmOlk4OVtRJXNJd1lJQXRRTlo7RX1rSk5OdVNiRFk/PChkejViZzRXJDtpcmdGIV5LX3ZKKFZJMlR5a2ZAZVZOKiw3SGZZSD82Rjw3YXE9I00zKjtmVX0vQmZVfS9rZGhALEBQY1tSQ2E/PV9eVFVWSUgxWEJYP2ltTSU2JWEkWFlnXyFbSlUwUzhEPz5t'@; put 'K0k2bytuMipHdFoobGZbT217QFtCYzwsSy5VWj5yWlZXVTxPZzYkLnNYJCJvIXJYN154W3h8T3skOSRFLExrWFl+bUZmNV1pZEpfNzR2JUhvNGlEdXQ4OCJ7SVVKI1UpZjA8Vil4ckBYbF0meHQ0ekZ3U3VOJl5ZUV1eTyx1SzlSSmt5dDdSQFlzRDF7TU9MQEdoJjh4eXtdK1dLS2NmezJISkVE'@; put 'VT9hQSksdk1ge11EJF0xUlFNLjQvOEAlOmVlRXI0UDljNUwxdFM8TUZTdy5dXm5IKGZtdX07UXpzdWNlbCFZKXQqPFNRKkFTY2oxKF5dNEZse19YdSE3UTg/Nz5sP3pkfTxZZiZuKU5FSUg2VCpJN2kkTzlGRT9SXjBzR0dpI11TMXBIVm5uMmFDL1hpXnw5JiJUTj5jclF0WVo8e0VVK0VMMUR5'@; put 'Vzl+Tl12MXNxXj5lWUY6dmkkMkpmN15QcXQwY3Y4X1MmbXxINzJ6YGlAK007cyV5N0cvKGFqP0JHM0dXPms8eyZRNzJ9REJDVmx+TDtVMmU7clNtbGBZTn1nKDhsIklxK3cxdz5nLDl5Jm92Ryo3ZUlMNklqUTxTQVs4MUY3alB+c3MxcnlfbnIqbk1ebHIhbj8/fjhoZ0dzJUFGcEJRWElmK285'@; put 'b0shOXRqa1IxZ053dzB3QFJ9aXk3YHBOQ2k7b2twfS5Yczh8THl9XSx2bj9QfGY5OEYsNnJ+eVliNWUxUH1QVGpYSDN6O00+di40VjF3LkM7JEJATF8hPXQlVG9MZnU6JU18cXxoMj5zeFErcnFefnY8LGN2Z2t1cWVFWyx7UiVPKkdUeXEzXX5iUXQoYTgkWCpjNUx8UHMsLFdeZ3FMPFhuLF1L'@; put 'c2JkQS9DZCoqZzdaOz9NaERSIXRFN2ZQYVJQe3Y9VyllNF5pdz9VcTlfNkl6JEcyZltDOixNd0BTfShpOi49SDE4JUlFV2NtKD4ueFQpU0FdUC9JJStZd35ZMGFNP2FEO3soXk16KDpec0AqVVMvW3JiTiUpSz86JkxUWHJZekBQOiw8dEhCJCYkYk9wNGl6P04lO3lNNDs6fDthIVlSa2J2PENh'@; put 'e21hUHhCYzN1UV5sTEJiIT8zdzZDP1chSV1OMkB3cl9lfHxEKDRwcVlDZUZ9a047ZH1KWy5AZVgucEUzMENUI2IlKy8jd3dxaF9pUXVRc0tqZmtEN3ZnOkNjOjhvUChucyxsU0hOZXU6P3hyVUhuQzJXMTorKVc5ZiZ1diQlWjRHVWVXV108UDJ+Lnc6UEpASGhgO1JwOFQ2MVFzTnhPWXIqPF4r'@; put 'a34kYXgyKj5oQFEmfXk7MjE1PyUoJH0/fWRlOSI2LzVOUUd+M15COz9uaDtfI19QZG50PzA2OnJDRUYsfil+RWlFbzkpVzxPeW5+W25odThKSHN+fTQsbHtRJG5yKiw6XTNKNXlCayEiakYzKjhXUnQpWV5RWkBbTUgmKDE5QnVFakg1O2RiJVljZkN7P1lCR0BwMVpOYyF+SkJMQFQreHVHUT0w'@; put 'Vi4pb3NIaWR3ZnUhPiJleTNKSVFLRyFabEE0KSQqa117O31Kc1pNV0ZsPTYoLkllNH0lKWZUOTJfZ30lSzoib1V4N0l1ZUVvL35EIz8uUG89LzJJNCNUVUM0ek8/SGNANzVwW0UxQUlyakMreV8lMX5XYEYvaE1qaFtHQHM/KzhdViw0ej9pNl1rSzkrT2JmTF5iXU5MYlU2WC5ZUilhTS5oQkta'@; put 'KzAjR0pELzVLZ0tXdFQqTkFYPVhHcVlCeUQ1VnttZmcqQF1fMmFbWGRpQHxNaGBUKmFXRU5EW2siclExe2g2VDtbYnQrNDVrP1siQ0RUMWQiPTdGI1N1NVlBUE4wNGFld0UrQT59M101Ij1nbW0xfno0dGFSUSgrOCxCWWM+QFUwa0UxLmdXN2p+c0JyQV9HOCV7bU9VTHgyQi5vL0N1KEhvXUUj'@; put 'KVd8bk02MjdiRGxOVTtJIXNsZj9rNEtseFtjZ1ZeR2pAJCgxRUd3TExKZ19gP1JQKXc7YjBHfkJzXkMqaD9zbHteRkNCUys2Ql80JVl3UHtaWloyOkxiT3ksWjEhbCRSR29CM0ovMXhIQj9oZUo0bW8zdG46OFVlNV1ZJlA5QE9qbWc4Lmolc3xtJDp5WStpTmxrYV5Od1k9RTptcnxkNDo6cXA4'@; put 'SHAoKS9oOnxgLz4pWHEhfV5mMiolRnFpQ3VbKUoxNS5jcnJjWy9pQktdWnlJMVo1VnlXcW1Hd3V1OWxqLkROVnJ1QE82KCEkaV0pRWI4Zjw8eGhZd2d1Sk9TY1RgbERJdTxkNERSOkV2U2k+TyowNWhMI0hkem5oVlUoaz07eDxmKCJse1VTIklPUn4rWF85MmQ7WGtVPktEI2xMPldbYm5KJXBC'@; put 'ckMyZV9DNmNhZGNrbURbbjsqME92aT97WmthYWlMOk9ZSTFLc2t9d2FAdnc4TjRQYXBJa159dDBeOUxxTy8lMyFbaEh1ejQzNXozc3gpKnRJYSZId2QqcEdmKVA2cHEqVEdxSlFCQzNofDBmb1t6emd3JjkpcWIzIzlrc0oocnNCQj5lcXRxR3FARChwdns7am0rXWJ1QDgzM0Z0di5pekYoeSNJ'@; put 'NGkjN2ZMdEdrYCFjKHA1WXhRLmguaUx2XXxkQ0Y3MnVNeGkjVE8sVmFeRUVZaHB0SU8rIUpfMy9SZW5rfDwpVnhefTp5VjFQeHJ5YFA6Oy8qYUpoa2xBZ2QsZT0wVyZRel9QRCVuXSRGdT1xKiEiKkNWZnNdPnZyOlhBVkRUenxrRER8cz1qSDhxLjtFKmImLmA1fkBMR189MXU+cU8sL3F2ZyZ+'@; put 'bWlQUFc+djxaM0R0WnVKcHEkV0l8eFt5KmNJd1dSNipGNUx1MGh8PUY2ZXkmWysmIUpgLl80OV5bKEtMMmJnd05od1t1LDlMQ1szVldVW0B8VyhodjNRK3l9ekAxP0J9Rnw+e05fPFF2SDxXLy5hYCgvPzQ8TltueTNeUSE6Yz5dU0peVHFDYFo4UWw2TihTPXF4c3gxfXJVUWAuTnBydipPOUhN'@; put 'cHQ0R2N8Vzx3bCEpTVZdYCJYamheImRKcWx3d0VSJCZ+S0loYjUpIzVHZHJ6NC8yWkxkVGg3JiUydWJFbV9+elElZTg2N3hrRzpBaFdRKD84bXNyS2xqJHwleFRrP0JfQHhQRWMzQEZvMDorVnY4Jkk8Q2gmaUN1Ul9mTWk0MyxHSz1EIiQ/bnJ6RUchW3luI0RWaVhHfWdgSkAsOTBzQU1iY09h'@; put 'SVJ6dEtddGFMRkhgWE19ZWNlUEAqdXRuWllvb0VKIWpLLFQrM0N2VUN6RCYvP0tzWjltaElzaVoxb0ZZXzJbaSJTMzIoVmNiKjs3bnpFe2xjXT58RypJdkYifVtCLnV1eEh3Lyo5Rm0vTFc0e2IsVyYkYCRyQixleUhJNyZBQE02O0RMYUApJnV9fXp2Z1Y9P0tWXlhRck52W2xRVkYqRFt4Wypr'@; put 'KSU2Wj9vJWxNJi9JSDU3cWdQaDR2VT5hZFpkU0hTfXBXNHghKEhWKSJaKGJsd3pUeHRvTltkTDEqV3lnbTxpQnZ8JkZ4dExbcG8saCIvKjlYdTJEMEtWISxPQExyViFSZHhrPzpYVyN1dWd1U1FgRnhibEV2Z10xcSlZaD12LztyTm9RZFQ3XnU6amFfWGEqaHphd0BQMEJON2YqXm8qN0hZeUZy'@; put 'TFY/L2s4YSFrd0o7Ik5uN2V4WEhPJiJISnF8TXosZSZGfnc+fU4/a05QPlVgSSUxaU0mRjJJcnBZSiMkXSN8LDIhLD91Q3dTVDhfMUNOaDg8V0Y3IyM0YSYpTTpYWUBNMXV3MT82NStmMWElIi5KLzdZdDpDUyIyaS5MdDl+eG9sOyg9OnozQUFiYiZ8S3d4Wl92ZWg2KDEqaUBkLHZOcUMwQn1O'@; put 'O2ZkTlliTTlZRUVSYVJPTG81e1RvSmQxT3thfkliMDpJVV1fTHVIVCZXc0coM0BJUGZ8SSF4XTEveklyP3wyPn47TkNdQ0wmQXtbUz81ZnN6VSNfLiswUyZjb114eWZoLmNIYlVBSmZKdjlbWTduUEg6IWxVZD0vPC5RLGxpZVc1YElHaiZsUFRVKzkhTUs6Kz5ZSTFXISlObjlCbjQ1RjImSWls'@; put 'QiokPWgiUE8/YXh0YHRwRUE4eHNJcXRTQHR3Ql9yN1IpUytdISV4WSpjdmRzbzQuMGI2cndEeT5bWDIuMFtFVkZuREJKQnJCaDM+bl4sTyh0LkpVRS8pbnI7PjB2TT5+eC93aH5YPkRjWSYzbiZjbUgqI0p2T11fOzU/eEprRnxLZVlQPmF3X2BsTmQvRyJQbCRXPV9lZnlHelA4XTBhVWR6Oit1'@; put 'ckBzM0BxPls/JW9vNkNjSWUoemg8cEVXYzk3LFQmKl9POEM4eHpUVW1uckZbSH45NkZhWzV7JFlQXkc4MmJEQm1jd0orNTpWeDZSLzImUUExS3hSJGZfUiQoVVdYW2JDQWxidk45KlJvenNZU31dTF1Fc2MjbFkiQj9fO0VuPURYPCFPayghTEJucDdHOC9FWH1SSjksfUx2RGtRd3xrZGZJX2BX'@; put 'PHx6MDNPXiZVcCpHOD5GWH1RMkdPJFJocyY/VlF1I0RsQjVxfj12Tk80QEohSUFMKGkkJFN6R002MGslIXF5amNES3JKPUpfdCJfOiZCTjgqQ0oiVnZEV2NPMGlGZ2lIVWhdM2VsJiw9RS4iSnZ6RWhaKGc8ME5je1JEMUB2RyIkeVtMem1IOHlUP3tPLDUhbCRrVXFOWW90WFNXVzlYUFA/XyRD'@; put 'UDNwLkpVV1pVMzVhWDcmRjdhVHFtZndUSlRzbklbPT8ralBfUGUyIzJjNT9sNko+SXhMZW1mWD9Ca1lgdDV2TkZSUl9UVkZjSGRPd3woVXRkSGJxVks0PTUxe1dIKUUyIygsfC5MOls3SGRdWFJzYHhTd0ByQld5VXw/Yz5Sa25BTkUvcXFSVzBNXnZ+X0RtS3V4cG06ZCFzdyFXU1NnKjg3X1Q8'@; put 'UllRZSM7ZSMocXU7UFE+LC5ZQDN6dGo4YUBqUUFVWHM7Y1JMJiI1NnFzaiNeK287dCRkZC9EdDsqRGw+UFVgMy91JG1sRVI+XTEzcSY/LHVKditeO0UqMDdgKTtxdHk9UCJQZGMyUGcsaj5fJmI1N05SWENKemBNOjVRW0JAd0dlZ1NFUml7Rm48I1c4WC9Ta117KFpga287e3krYCF7WUN3I1c4'@; put 'e3FYXUg7VUZSdTVGeUc0PnFINm1tSHkvOXJuW1k3V2gySXpfPGdbRUBeUjB2TTR7dX5uRzt1Yj4wdWJRY0VsNExLI2dUeSN8V0pFXWJQZjp2Qz8sXzVHNWN0cjMjJncocV4zdDd9bE8qSH10ejRhbjc/Qlc5Y0ZzQVUuUC8ybHE3dnxEYk1RancpeG4/ejc5S0ldaU5pM3xSams0JiZsb2wxSWxo'@; put 'QmslemZLYnRNS0M+WE1NQlZFKypIcDsjfjVQREJCLDEmZmhqMTxWZUQpbktrfllvaElGP3dbN0c4MERYfUgsazgpRyoobV9URCtvdz4sN2VmcVlAOGByd3t3OntrbmU1emlYIWAqdHdHSD5hdTYoMz8pciUoMWJKRShXODBNXWZKc2AqdDVYU0xzaTJCKSldVHo/YjEpfGoxTXo3Q2BTPzJyR0tP'@; put 'XjFSMn1uXlRpUiRJb3U4bUxnfDxNK0pvWFpETTx7KzlMc1R4IVZAI1Nje1dJM0F1dih7YVk/Ry9sI3t5K2QzfDF2KFtLeTZxJWU4JWJOSEkmNC5PQHNqIUdxR3hyZ01BN3o4UkVkSXxnaztVNkwmcXpkX3RFbklAX0tCdUh0bHYqIkw/PXVKTlo5KWN2NCVJQWEwZCVYW3BpQDNJfnUvPlFhLlNO'@; put 'PmBGL1BzaStyYEVSeitVWF0vdWglIVdgMj9NZ2lGUiNNR1hZcmhxUmNDK0J7MjoyI2Iic1BJc28+d0MvLFphSWtyZWdiTVZdZE8wRWVaNFJmN0s5Xy92S3M9KjNJdC8zMTheME5rLzdFVV9iWSFRaV5YQ3pAIj07d2VoO2ZdcU5wWDt8Izo6KFkuITkqcSEpdkh1eHlxdzprPkJlPkxeKy4uYisj'@; put 'VDFMc0A6NF1melAsKCgyVnEvT0V4ai5gNjM4XV92OjI5bGRhWWUzYFhqVXZGfD0sL0xTOGhGdml4R0c+dytxaF5qYi9sZGFePWhsX3ZjY29nYVpwLzR6ImZKdG59JW0/OWFHIzNab1p8cUQsRHxxK3goPWtINV1IOj4oR0dJNkk4SHMiQHF5KkZKSm4qRDpmWCF7JlVFbS9rM1Z7UCs8ZFYqdzdH'@; put 'JCIzVldmWk0mW11ITHpNLFhrJSlpcklBakxYfUV2eDR0Ykw8IkBHaig1Pm9aKVgleUN1VV99OVU1I1pLWV4iZihXajBoUXpNJiJBX3xPQ3N7cE8rPy9haHxDajI5IUxbTDs8RSl+SyNxMmx1OGU4KkxTRTR8dSk1P21hektyPTdEKmd1SldeQ2lWSn1rMWF6OmlXImNQaT1ScG5DeDVHMUFdRTlf'@; put 'WF41OE5yUWYqaSFDSSk8UlRoMGVEVzVXOCx2QDIrTFoqL0BXZURrUSZxe0kzTkJ9S10rTlcpcmJSUkI0MTJ1QHl4ckNrZUUoUCxZLiQrd0RXbEVYfmBidDtTYUNubCxLWElAS250JUZwLklySWBVOyZXIVdCV086e2JPRD0pclE0X0I0dkRUfFNsSXxrfG9PR2tXOiJiMiZ1SHM2WixgRVJFMUU5'@; put 'MWJIN3E4Tk56TFlhOlhUMEdeUEQwbzBTKU4jXV9wUipTMG8sKXFEeVdUenFoR0NXQGRqXz4rYS9GaXFzaFpaMndKWkhzeSxEUXpkcnh7OUl6WEpoQnwpSG5KaTFadkBkL1lGL31XJHRPQEtANVdhYDBHVyt4XlJ3MnpSI3hdfE4pNTIxbVFqYmUmTW1oVkp4akNlVlpWJkJGIV9+dj1eKnZyc1R2'@; put 'XUM0KWxTJV8zazxDIlY4OjdeIVA8XUtML2Axenk5Lz5oV1B0OH18I0g7PGR+NXc3VHZ+S2ZGPUQpaUU7fHg4Jn4kRCZVd3NZVG9QPyF2eVFPW3skcGQxX1Ejd1F9dDVGW2QyIVJpTiYsaDpGaixpeTczO3AxWSw/TXlbRXgudUh+bi94YDw5dnZKeEczJDQoUXY9Pz0vdzhRLDlGcX46Ik5IJGpz'@; put 'SVt7WmwyVyk9Kk12RHkkdzE2KzV4bGB0KUxoPVhwZkd9PkorRitDbE4lLCMrTzpLd0MvVmA1eGswMVlSZEIzOyolfFdVQVQxR2s1W3ZRdT57IUV3TEprTFtRcW1ASTBbcEt8NHhBLEV8cmV7dHhdRTZNNXcmWykvdVVlNz0zLiVfKTNzeEU2ZnhRIilRLEhWdWBCRlg4XTt+X3djWWM+KXU5OjhZ'@; put 'VS9zQHw4aE5hWiRkKHA9b0VDJip7YSpQI0pfJHtIamtVO14lcV0vQ1hoczw9TSwoQT5sYUIpPV9STT9kO25NPE1AXihORSgpUVZAWCN2PFo8MVAhO0lSbDEkI1BHZHQweF90SXN0RltxSm5PTVtfXitvaGdmYzZgSnUyVzNiK1ZkPVBGNV06c3dgR046L0VheSwhLHM/bmMzdSQ0UFhUaH5DTzlt'@; put 'T0JlZ1FgfHY/S0s4Jih1L3RXKjFUfVZkcnF0dzcsQkZ3KXVAQ1lYMWoqZWVANllUZERsPDRUPlIvO3MldCJRW3dHPygqYnV7TWZUSHAiMzBrJCFTeU1SeGdGST1KP0Z4SihOI2FDejQ3eDx+VnsrWFVGSHhqVXUmW3NDZ0MmbFBedjlPMkZrckBNWm1zMyFmWW5gIUI4X0NSQVd9N0V1TzUhTztG'@; put 'eXx7WkI1c3g/Kmx4cDVBKGFDTEhSNyRXTGRZcSEiRVptOkZXRUA6SEF3QllCaCUkS3RBQlNgbCkyVDREJjVgaFNAbFlLPnNwfGgwL2l5QTFRcmZ3IzJJdzJBVVI1X2hIPzEkT3JuRG4mczFPYnlhNF1HfWBPeGExVj5ZK3hDLy9SeWU+IWNNMS9MUkJqKTJXVmRfQjJtLGg6KF9GPFciMXxXZlA/'@; put 'KChHPmFLOkpaK1BpNEF+NkZ4N3dQYCJMd1dHNlN1ciNNL1BYTGArP1p5KU9vK294SGlPcDRxTHx0PFouTkBTLy88Qm5bMkJhdFglQlRLMFhFczpIdTVbd3Y7LyJWMHVkeXxRbi5fYmo+V0h4N2JWIzpmY08mXiJCdFJ0Ymp4W0xILjEsSnF0ckh3cztXNjRLT0RuJVQ3YG15UHJ8WnckTV5ONWJH'@; put 'ODlIUWVEPk5QYSpoIn5DQDk0JV5UdFF9RWF3THBuNndWcUoiMC5ncDhfT1FkY3ZmZD9VWktxJTNwMUtfImRTO21FKCk6JnJ9dVNbMGZ8Rj9HfD98K05mImI1R0dyXT4qMVNYNkBzUlBSeD00SXxgMUxVRTEmc3JCMFk5SU83VDdeXTp0UWxYfHUjbWwic15gKWUyL2RifCYhMitAZGdOM3BhLik3'@; put 'LlBoc3dISGNEZ3F2S0tQLzc3N0htPztlQlRqYzQ7JllkYlt6Q1p7NlhJcXNQeXc4IiY5eyhfNSMxO0JIOCo+YUg6UVpRRD5MUz5iRl1lVyk5eWZMRGVsWEtWciFgajlHOlhuJV8mLEZ8eEgie2ZLSnZlZExuTTM+YmJOdlF5d1BwNyMlS2s+bjZiOmVVVykuWis5ez0ybC9DOFg9O2xnbFZNfFFG'@; put 'UmhnQXh3ZS59VjQmJSF9a18mZ3RRe0lhVF5XX2hpfVJTZUtJPmIhQV02KjZwcS90PjgiN2Q+ZSZ8R35rX1NYe31sUXhEUGouREF5WGg8eiQwLldVOzZHXzY0eHU2QVtWa3h1UStnLGZ+cU8mP01tNEpYelhtek50ZEV3UVFwImxOdCp9REgrOldHcndueHh8eih3aUtSJnQzcTpZY3hvMFRLLz1S'@; put 'YngrI3lpRWNIQ0c1Yy4+fERRUlZIN3xIUkxhS1g0b1ojMTlCWGUjOEQ8KiVXSz5XWXZUOG88RjJAXUo/aGd3RjticmpAVDl+aitPKHlmPG1HPEcraVg+cnNqOVY+THk2UU0+KzNobl11ZSEyUThKWDxAWWFxbmFsamZlRWZHNXsxeklFb0VfdDEhRz10MHF+T0dke2RWJlVwPDZgN0smY1ksNUth'@; put 'IzloWjFCc25DQWdhUERsdFdxYkZ9X0ZIcHRJT0NyJjczVW1kJXUwP0NiZDBdMUhaNlFRaWpOMz9jPXRhbGo9MGdrSyZNWU4wQ11YYiZrI1EzKyRZY09We11jY1ksNWQhRXwoSzovJFo3Ijx4aDdlSmMseSY0V0hPKkIqaiU5b09PTTBEJFpidTpSPUc4MVIqMXFKT10iZys2RFp5TG17aWVvS3w3'@; put 'dlFWMnk5dSRNT2lVcSl2aXxxeWhjQ3FXdUBKczR9dEZIIj53JlZFW2hGJURCN0ZSdHdyMHYoW0pGZiYsYEw0NV0oW1ZoeHRWRU1nNShaTzgsQFZIYExhZyY4LFFoaz5EP0Q+Ql91JDZ4IjwlLjdwVXsjeGg3ZUpIWGUzRXB4NVZLaSYlMjg9fTxbeHJnLD82c3xdd2hwbzI5SXc1SShxeSQ4aD5A'@; put 'YCYzRGomV3VASmk+UD9HMXA8Q1ErP1UpUDs3JCUmTlFLPng3fU9vWD5lLDU0d1s1amlaRmI6N1ElcU94Q2spUkpuPk1vekR6fCU/WUYqZHg2bUloNUx+TDYhYHdORyRBRnRfKTN8ZnRtbl9FTkpwcVBAanMrQ3pFbC45S1EpTVZEN2E+YnBoODlxNXJ4VzpDZ0Eie3wqdT09eDtxbzVmbD0qVCYy'@; put 'byUyTWRQRyEsRlRzITFFWiZeX3lRRXVPel8hP0RBaSpVOXJvWDJkaCprSCtWP0c6bjN4diRbIzVVa2BzbStsQXhGcThZRipvZ09FWkwkQV1AMEYoX15LdCg2eFRVVkJxbnt1a0pIWFEveStQRTZuSklML1tDfmZgQkIhPHNPWGQxSU9dIntFeU5URjUmcU4/TT09JWd+dEZyVENhW3diZ30lN1ln'@; put 'Sm9ONSZ1OD5ZNSNJNTEyQGYjPT5tJlIhPSUmdTFUekxPckkxbmtuQ0JWdGNycns+Y3owNmxCM1heemRqJXdSeGk+bTNtVkRdTUpwaF8+REhINldyenIiTFsvWTBBIkEseyMwXkU6eVg9NER8V3lqM10/MFFgUDRYZElPblVTPnlpX0VIRWVjbWoxc1s6cnlFWCZePzlkfTEkNixvcCgqT341bXE/'@; put 'KWdbImRVezJhbm94STdkWG9oOjNQRn1PTFZAIllfV2wlWzNEc15yXSQsZ2RoYjd2NHRHRS9PM1FsX1NjMyheZmtRPk0oSFdxPTJuYGBHK1JPIzR4eFlMelU+cXZDSEtwUlFAMSR5UVRkbTZ4QT9+SHM7aztrSUJdJk1NZ3U7YSpWYz93YnBVWzsjKzk6dj9bZHg1a2gwJi9nSWNpWX5xL1ZFJi80'@; put 'PSVDeXB2eEBKX31uIWdifHlZdnJyNFFJZXNRdGtbc1N3WGRCZnhuPmQvTCRKZVU+eSo2YlNoP1czQ3czViZrT1lzQXtDOmclPzs8PzckS0JFVnF8fHhNYnwzZko1JXxnPz4iK2ojaTNUJmEvTU8mWVJ+fEZxcFUpNk93L2Z0MHI1WT0lRVkuSjdGNHxpeGV3N2N4NU9FRG5Je0BzVFBOPXp4T0Vo'@; put 'Uz5icStdNnY4enNQRDF3cElWcnpgclZ2U1hDZnxNSiU0YyRKfEtZIjJ4Q257fiUwJFJ2WVkkdjg5OEI8e00wNzclbiJ+Kj8xQW88LjNZfHtFQDt3TFA5eE4wY3NHZl9dKlBFN3psXmEhZUxRJl5GfT1zRy5KTnYwJjs4NmBQSHZLO0dycjo+KE9fNURIMSk/ayF8blZeQTEyfCx6RWImUUlnSTdi'@; put 'IkBlMWxiNXciL3NPQH5JQis7QT9mM3wsNm58LEdDOVA/LkV6JTkrfD0sMjRSMWMpU25ZPk1RcVM3R2JxX0UmMDFhOmpSRCZYOmh6QHZFOG5GYk00XkIqVj9HMGN9fFFaT19WJlcyMy8oVT1gSDldJV5gPEYwPTNeNnsyJEVuR2NUcWY/WnhmMiMmT01iW1JJMl9CU3lReEV5d3lZTyZoSFlGZkJi'@; put 'Ol18aGNrRWRCfC4maiUzbzdkT3lZYUsoXj47SW5IcDNPP0QsTFI8VTtOI3RifmdSNEpBLko6O0NkO1pIT1B2IkE/cHkpfSx8R0cseWtYfHFjWE8hRTJfS2pEcU9NVzJRdU5WISs7cEc4MmwydWk/WUBjLEVGeWJicGVZazlAWUVwaEUqNUYwIl8oKEl9eiRmUiwwTylDWiE2US5vJj5CUSl1Vyxg'@; put 'KylPQCVdQzRuNnBbWzxvU1VHe0g8QCkrVGhzTSx0SEVaUmFpViVMZlpPMX1kMUtUcmUqNDk8aHlYRCEwSktDTSQ8dV8/aUdUNldLPFMrVHViRG9sOGB3K3s6YFAmNzI+LFU8fn5wLlhfYkpOJDZIQztJWWxaV2kjWEZlV0xlLHM0e2p1MH1tRHRyc0lKdkZ8O2xSMmpEUyhxYy5pbCNqYl8kV3lo'@; put 'VlkyLiNoZ1oqSWNQY2dMOitnUW5IblFyIWdUPG9Yd3g1VyY9KiUhITd9T2hKISxBLHxXdFJxTF5GY3xYcVNDcDtjOFVoVFs6dEc4O082X1RTLHRze09ZQShTKVs7c3h9OS56MDxIWGRKOk9Pei5oek5URy5zRVpkVyo5dmwhdGFxIiM3LDAyVzhjPlQ/fU5MaC48SjhvXkR3cnBzTTIjQ2wwc0d9'@; put 'bmBsNUc4NFhjcXs0R3xWaCk7NkpKdnY/LHkjWyhGUTU/c01DSE41JFc/QEc8aU4vJTlASGA5NX1CRncjODBXXUlPPWl4UzcoSjxNK1JfbF5TVW5eZCtYaGlEYkNAaV1vNWZXQTBaeUgvZXh3SHBPQHVdQDxELnpLT1hjdyZ8MVJ5KG5scnZiaEI1Mk1jb2VKb1ZTQ1E+X1ZRPC9WcSVMNEQ0MUEo'@; put 'blpqU2F5XTE0e2h3NEolIz5HdDx4aStwNXlSYzF7WE5Hb0REM2MkMTkyRER6SyZleHt2Ok9LJlMzY3F8QyJKe01rYGl1eTk+KCNCMDBFTil1eFsudiIkRyQ4S1s3T2EhZ21CdnRxaVBQSWYuRSlCJl9lalQsVGl4QTgwKV4zOk54aTdzS05yaWxAbCUjZUxvRGFJeytlJXNuSHRQRHI/UihhOn04'@; put 'fndzeytKJSozaW0ib3xGYFtXWVA6TEIwZEMyTUpYMnI3KSVSdHg8UCM+Yzs3UXpCRVo8QUZ8ZjBUc0g2Q2FlWil9IWc1NEJdejJMTUQ3NTRtW2xhZUR+X2lKNlg+Jjp5e1NiU2FjNyF8enF5d2xaQyRTaG1LdVRoJiJkUFU1Z0RWIUpyNy5NYn1CKkt3VTBlKWlEST9DeyZJZms+M3ohTjxdVilU'@; put 'aH5jTGI7ZHExQm4wX3hieCx9P2tPIz9uS1VLVkI7YzdoSTVId08jX1grL1cjRTtBJUgmYWA4NDY5Oit+XnlzJHlCdWFxXU4yVEBFUHhuWnM0TWB8ZEs3XTdOVWRtcmg7TzMvS0c+d3F5Y35hL3pzVi8kNi8jUVJPfkhtdnJvLkBUVitsc2xZYU1zM3ZsX1R6XzU0MFEwKz0wejc4fE1pSl8xOjpx'@; put 'fnpHV1VAcHZGSDs0SjclMy4jaz5CX0pGd14idm1fK294dGZveWJEeE5fQVN4YVtfUzZ5KSMzL3M2cyQ+RHMrRUV9NzFtUDV3IzAsZVNISXtVQ3BjI3ZicmtSWjE/VCk7ayt1UVRbaUIrIzBGZXJhJUMmMyRvXUpSYXtMWEtuPDpLXUYqZT1lQF4yInR1ZjxBM2hSdXVyX085d0BKfVNZXXY2Im4o'@; put 'Tj4raih7UiQ5XT1Lfnt5RVZkXj9Od2slL3ZFb01EbXkreVFzb1kxRzN5ZTp+fSFIMWRQWDVVRDNfSVgyOWhoXiVzaHc6ZVg8PGxBOSZFWStKbDUpMlhrZEdIezQ6bl4+ODgkMSltZiVlVkNhYHljS19ELjZ7RFopYEdTYjEsRl5bL1kjOkFaayZpai5UeU9JKmQ9JT8iSl9mdDs5MyxIa2IpQn4v'@; put 'dEtOalYqbVBsQkV0Uytsc1lQO3BiPSZVLixxJmtWKyZiTD1vc25BXSZYT2h1eUJ8NDx+Wz9LYmJidlpzfCsvczBuPXl9cTd3LCFfdypGIk1yP2tEMU5DOnl9RGh5cU1sdVFBcUFYYC4zckV1bjUpdHl3L3FqcDU7MCZAWGpRTWo7JkVCKyZKO2FdOWw6XmNtZnJzW0I6YytMKl47Zj9tMSFeQmJO'@; put 'JkheQyYvdCkyXzlrTy92IkQxKjd3YjBLdH5aRS45YUVwUzFxQGFCVE4lIVBYYC4xW0I+Vzl+KV87RltJMylJVjwmfjQoYWdZMkRmI1JIWyx7ZUklOEcxcnZQdzwmc1JaSjFtdEc0cj13eyU6aW84Ink9IVs3ampQbVY+JEV8I3hPN1IxRCFydkI5LH49dTEyc042Ky50QVRncF9oQTlhfFhONXV9'@; put 'WUI5UTY0clQuPkJLNyNfXUBmW31xS2VlNSZeTlduQkUqZFlILDo3OWZvc29+UjBeL0BmTWBXPjMpbHE3IndnOT1aV3ttOE4yeSNyI1E4Y2gvLjd6LiswSFZKaj1QSCZLSSJlTX12SiRSP2twOD51PGI4b019dk8+NHUxZTh9dEw4JEhUZHYyQDphVnQ1WmlhekJtI0BFck0ja1Jnel9vSmVuSV42'@; put 'SDg+fjs7SGs2fXY3S0pAZD5EPEZ+WkxsOERQZGkxUn5wMF5WTn07MStrJjVJZHohK3k9Y3puLDkrTig6YVJ4N154dUpWcEw9Y0k7fDguazxHcUxIZHZReHd1dFRVKnNXMWEqcV11P1tnS3E9LkRnJFF1flkvLylLbCh2WHo6aCQsVS8mZ01Ka2BxN1hOVClIdFd8SGl6YiJzZGdJKVpDezVKMSN3'@; put 'OXxZVispJVRydDZRIlEiQCZaY2YxWWZHfCZiITZRTSI/MGt3TXIwSEFaTmokYnJjMiphd2xUJEdiTTVyU0QzTV8za2h5YGUwOlorSChaK0goWmYwYmIjRyhMQlEsbntrZkxBWD1MfSg3OWNvVVd4fGFSJCwxaX1JeCtlP213cyRJd1pJeCtDWC8lfXdVP29xITkvKU1vV2p7dV9Dc2Z4Qn52VEA1'@; put 'MS9IT1c3eDYoNSFuTG5MTitEYH07VUVOMW1XdyIyKHcoZ1V3eUpAKkllO3Q8RUcwcWdndENUbiwjQ2olKDljIkdfKk5nIyovbGdFeV5YPFB2LGV2SGcqKG4hczpLJntedktLcHZnP29aP2tobT0kI21bTntDKXQjLnJCMzB8Q2YpR1IheSE5MkxTdSE5ST9APTM7VGU/OU9FSEsmcXlnJFVDKWxu'@; put 'QyVFaklqdytkeVg4eFhlVl9ORmNZQG9fJVp+NT0wKlpwTFhHSFVLTV5jWXs1NzBSaDZAXlRQcXdJLzkyJUtkdHYuRiZyNFgsW2NCWlpqY2Yye3FGY1V2MWV6Y2oye0tsfko4PUwrLzEiPU9CTmtxdzR9VE9gTW13eT9RPGZzS2g7XUg9cDopYFUmbmQiR00qK25ieVU4MFokekZNNj9MYntNNX1L'@; put 'dHkxOitdJipOe1pmanVJRHkxWjN1c0RjdHBpRVVsTnNmUyt9XzVQdUN4QXp8RyQ9c0RMVXRsQHdxWTksZWNBRitPIVRWNSpVbmZIXypkRVMoXVNtdyVpUGZaOHhsPG5DMXxiL2xscW81UUhiKWd9RTRJI3VwakM1R0M8KiV9cHohentTeXAqRXVDP1cuIkJnVj8hXzdxWDN5eSppPHUyM3YmUjdr'@; put 'PitgOy8lUl5CVDpqZG16MU9uVikwX0AyYEZhPCMoZDVCRU9iMTMyT045Uj43IVomTnZVRUgpR1JwcmhFIyk3XyxhU2RsSlNWZXV2SSJGaEE4I2F8WkYlX1pGSj8kVFN1UFZTQzwkcVM6VFMpT1ptS0s/ektRKTBkK3UuVGdCMzBkKU1WZXVddjpDYnJtIXdKWGZZVlB4bSVCPzBNWCQ4S0pZc08i'@; put 'OkQ0YixoaFR0WzUidHVXTHdpNGZEaD9KSEZHV2tSUDRCME5gTFpMODgxSzQ4Ll1GLFBOOzRfXXtIaVZoOFhITGI2KnZTLzxfa0hwI2lNYn51bzYrfiVpMmRnWSw1M0QmV0VIL25ETj5ZZU1aWFhYcEIjcjZDel9KRjE0T0ppaTRSSkJtZ0R2VzYidGQ0PTguT10iak5nKUIuZ2U7Ui5UNk1AK1th'@; put 'R1UmQEJ5eWVRK2V5L11ZVld3TmBkeWtzRmB5eS4xVmBDejR3JHdtcXpXbl5GbGopTGllSU5pQ05qPzZZQEJRdERIKF84c0BJUypBJChHNih9SElnNEJqTEtGZzUiQ0lSTSF1XnRQNGlkUzNYa0pRTUk/UTRnei5GWHp8Un1pWmUleCY8a3dUalB2bSNlMkEhNipQMHJ2NnkvT21pL00sSCg1M2Rg'@; put 'Qk04Z2dHVGh2XnZEbUwqXUBiIWxSe2UqVD5lLmhwOTY9cjttJFtDN0NFK0hUN1I3STdDfFImOVV6dXVndyxhaEVJaXhoYS9gUVNVfnRTV31DZn1QQmF8UEJLc0lYR0VBJDpSUn1TRCg1YUxqIjxJckZrRShJOGlTdFZsZEhYaWI6T10iV3RSYjJdOHFTNGY2TkxiQVs/ajVLIUhga0pqOlFSNmI6'@; put 'UytUNlUibSE/I0Q/eVMuZkVsXWcveWttYUM8RH1aVk55MUB3bGpZelFSZkBZVndxRmB5VypZYTM1TDBpQ0RVSG90ZyF9T08sPk1jSDR8Plt7NkNOZyFZVzRLY0pMYC9uIjN7QTlHeDpNQGFCSUx0ViZVeV13NWt+SixYZytyalMrMkdgOCJ0RmtLOUczXzAhUyhCK0p5d3woSUYmTCsxQ01XdEJC'@; put 'Vms4d0ZsX100fDMoQSlPRFshTkZoI1l2OkNAO2lvRl9KWkNWYH50Y0ZbMnFjQUBwTVloc25taSUvW0NYVjZ6UktCYGk/Rl9eSntMNX1mPzwpaj9sK1cmLHtuVls/fT9iPkhTJlVWfGs/MiRdZDVTJFZ5dShDKXw7bkpfXkA3WVZ8UlIqT0p8SVNaQXldLGFTU2QyI2swSEtVYEliSiNGSndqTSZ8'@; put 'RkFva0hYe192KVV2ZVJGbD9JTFI1M0E8L2J1ODViKWFdTnVwKU1haEZ7QlNDbWZuOTVKP0Noc18+O3JTdlRWKXpFPXRycyhyPlF2N0ZfYkYwY31yNVcqUlJfWnJlekU6OX5xMVZMZEBsc2h4K28xYzlzOVk/XUhVbC95dGFoUCp3b0Y/WzsieWB1W2UuJmlWNTg5LH1PTTMxQ1p+PnFAbUs+TzV4'@; put 'YCVbV2wxIyQ6ZC97N0p2fVhMLFRZTjBZdy5XJUI4bW5SPy4mMV02TT1xVHJ1RTZnRG9WWG43U01iXmk8Jit9R0k1NzA7IXVTP0M2I3hOPGZEfGApQ18ycUh0XX57ZUl2Tk41PGE3Piw4KXBOenxkXjdlTFdxIU56cGRPYj44OC8/Wzh9TygiV3E2K2BLfC4rfDd6UjQoNjxbcUk4emRfUSxmMDdi'@; put 'bWpmdEJgPmdDaClxL09SSWVMYTEwZGxWX3ZdYilKUGc2Q2tTOTIoJXVaMSN9Q15DN3FbM29vOjgmYVpTaklrTC5rOmhlX1IuPTohNTIvS119O0lfNDo3L0tdVE9TI3BxVVh3LiF2YnJiTlhoWiZYR0FsPVhQfjVTPEBLVilWZzxrL3VJK1ZSWXNiMTxUNGk9UDBZVkl9Tl9zWzBURUwjWkU3X355'@; put 'NyoyWk5aVywmRW4xJHUuQjo8LDhORlojQ2YxfS9xOzJCbT1CN1FsSFtLMkljckVyTWpHbCNVNDspZTd7Ty5mOm4sLCk9TyZ7KFAsPEgyYHdNUXhXYzE0QilFLy8+SntCRDBqUVQoVW1yVTVAa1c1JDM0b0BgKXUhSjtfZnw3KTJRdkIqQjQzOXNJbGdkNnxWSGF2dShAJldQQSNTUy9KK0FQPldu'@; put 'LD5WMVp+RT9OeHRuV2NqP3J7U11fN3RSVT9EfENIR3EvV0ZJZ3F6KSQhZ0RUVWAqfXoiJnJwJWB2KnI0K0d0e2NnYF0yUWI6Z3M4XkkpLkpVPTQ/MH5DS2Q/IT1NMzcpMHtKeDplX0h3d05uTmhNTXZTUjwxfjtNblp5Ojo2NDlwLyxXWCtPaCNRbmArPVYwQzN+fnV7IS5jK3N5OnJqYVl3ZCZp'@; put 'Um8uW21EP2VbSV9aJlpZb3Y6VmwhSlA1Zzw6MUl7XXxyYSpeJSYpLGJwZHRYS3xNZ2AyMGQoczFqYjV5P0o3XTpkX1YpMiN+aldLNFV0V05yM2ciaU83VT46U2x6LDRELFRTaXNEYGpQUG9ONWBfM1FaaEFNTmI+P2kzXXE7ayFwPj9SaTpCO3EhLlVPXlZtWl5BRXRmc0Q6Sygsa0IoL2NHcWR5'@; put 'c1thdH41ZCppM04mTVVjRU1hJn1ye2tiIkwxT3JPJCJrYCo7WWsrWlg+Q3F8SSV7JCpvbEdxWjJecU9UO3FZQ3ZWKkkxWW5DSGFzMVZySmBbUGEyY0NEfk5XQmgjPDVFRX14RDElb2RtQEsyVTlMcCI+WTNfNE5CYzg6M2omNzp0U0dGUH1KQ0QmJiIpMlU5SnZvYE4wI05nUT8ueExUNFV2MW18'@; put 'dl86ajQ5dVcwXTg3Q3UoNk97S0MsWWdqVCUzMSl2aDlPaDpyRDdkSGZRfDRdZks8Wih3Tjg9PnYmV1N8Z2JpMFQlQjRyJjNWbytZNX4lUjFZMiVEYStuLyY1cTE2LGFsTW5GVkpCcSVrbE1SbmtNVmBjK1FMQDFlK2pRVT5EWE5DKEd5cUl2WypdKjZOWEx5WCpGYTdRbH4/SkpmRntdb0AvTXtX'@; put 'Y3ZyNmw+MCZXe35rUFJIe0UwOmVaLHJUJVJbRT9PVD5pPzNmUlMwaEVIfTNlPkUxO0IlQm5nbCVMRTtxYF5RXyxYQF4vLkxATGJlWlJ2QEc1UV8yWW9Kej8mJHE1NSw7W2NDYXorYkZEZn5pdkhNeCg/PlQ2VSRJLDwhdytGZV1UR1RVJjN2Pn5HY2NycilfOHlFOkNXNntnZzApQiE1YkQpOyxV'@; put 'I0MkeWt+W2w0VVhuZVJgPWUxOVZxX2s1KExSdSI4V1VOUkJ9eH1BSF8rSk5vLyx8ciYlYjV1ek43c0VlX1Jfbl1TcCZ3eDRmNGYmZlU1Zn5JelRaSmpxZzloMXtufltnW3pRQkxBWUJPWShEY2g6WiF2I3V6ZnQ9YDgyP25CT01uNmEiYyZGSlAsdWA2NXhzOm4rViY5VzRiaDcmMzAmVSN3U101'@; put 'Sn0rY1FFT09oUG01KXVMeyQrVEZzWlU4YU1yNXFzOC9PNXtddlRXbD5VN0twWEA4JUVJVGUobFZCOlspRFlhT2pWXnF6T2IyUEZNRFVbVV9+UWRvPHVefW9qT3gkeTE0PV9WKEk5ITcmVHVTTD5+fmNdb3ZIQmVINGBeMnUqdmxGcVRrUzhGX35RUW9NKzZ+OWQwWTVrWmNJaTo7JDVSXSs9TSxA'@; put 'cHUoPXFVNT4kRW8sUUo1ZnwsOzNDbFY7NjE5PHl4d2o5OlZBOS5pMzI3NyN1eDBsJHo9PmM7aFA6bCRlWChsYUspcUVmb2BFKFtCY3tvNW9JKGxUPzY9ezhKbStxKmNmO3lZVTJiMGUrIyUpYz1iVEwvezswI2FiSnw4eHViYkw4S3hoU3I8ZDo5dXFpaXAucmZGdDYmfDomKGw0aytxWmFEfTIw'@; put 'JSxaMChEP1MsaClxMlo5R0IoNTVKXXRodnRJO0pENmt2OThseUJZU3I8bStuSmxfUmhSelZ8SHhAT2oxW29bZmFsR1s5bn04K3V+QFo5QzR4Z21OLyZzYVMyO2ZiXUZbM259OE5wfEBlRkYwRi45SzQhfHR6PSYjKXE4WGFjWld9ejdhV1h0O3s3QWNjan1DPSJqTmhpN1pjWFIuPFFzdlh6OzZz'@; put 'Y2dse046Uno2WUNScTt5aEBvaTV9TiJ3eFJ9bntKSFRgL11jWHpeZndxT29AKVJsfjZNS2oxQVU/c01uQTFXNF9ndHpbRH1pMSN9ZHZVRD5qe3JdVm5vfiYsM1RVLlFvWzZEJGE/fEVxT291OG9QeUwlNmVvUDVZelYiX35DQzUwTUZIeSJPQXlBOEx9ak5IO3hiWGRxXyw8MlpCOCo5aE1bZlFs'@; put 'R1t2YiJpQnU/dnhsIU5nbEdmfjhJcHtANktsakU7UGZEWnRIMDQ1Rkg7UmJuajs1fihjaiFFTkR4bDM2d1JlRC5RU3wjXSFhPXw2b09xW2ZdWkRbMUB+eHdscUJsU3I8K1RROD5GS3l6eX0/NFo0VSVXQHJLRjB4TFhzeShDYVYpeDVJP14pVDs7amplL0JqMnFhY1ltVEBIYVNiKW0mel5GZmlU'@; put 'djI9UEZ4bV4mJk5hISp6QmsrP1kvPi5xRURZcTFmRUdDYmB4O00kezFPQ3o8am18Oll6WXIoK0MhfER8WkF5XkxCTUxvdixiSSMsVD9vJFN0antjVTJpQENtWlhbeDdNN19sMXJrciF3Oyt8N05reHY5SjN8PCl8XyJTcz9WQEl5TVAxUXJlZUx2b3dQNFguIzxZTmIvWixLMXE6Z2kwOCM1eiYx'@; put 'PnIoUVNbTCRpMTB9cHJEVnw4dyN4YClxOUcwaENfJSFpMTBga142NHNlUDU4LDRoUy5+YShRR1t7Jio9eFMuUi9jeE9GMG8oJWttcWUsQDg7bVc4WjBoWnNuQ10/LF5henhaSnI7MSh3b0xiSDpkK2krIj59c2VsU0JHajs1fShjanomUEd4bCU8IkAoKyFhVnN+JFRVcmg9LHJFXlFVOGJPPTE/'@; put 'fSZRPUBmKSQsJXx5Z2NlNC9QMjQ9JlEqQCJqaTFnb0luUjpfJncwP091YCR+UnohI15aY1MpUl4vLnssbjUqYVZNOVtWYDkzXjBvKi5FOT1ZRlUsSSEhNk5lS2pSWFQpSWZjNl9JNSM5SV4wNGFUL1tMa3NrVnkyREJyOE95YUlyXUNDbmZgJmNVK0FUNXV0JnVJP1lxVjBQNk5OVlZxeFh7ayFu'@; put 'Wz1rQGFPW1pnLlk6M2hjMXNaRkxnPjRkeEZhYmN4YktYOSMxTUlaISEqKkg4Rl8qQDhZZU0yY25uPHZFUj43UntTXnE6YHJUJDFbLyl0bnNrcmNtYz1Ba1NrcX1yWVUjQi5QQHEoPj5sQyFzUG5FUiUmLnkrMiJ5QTgvRDB2RFpaSGRxaEV4bCVNb1I5IVgsXWM7YCw7OygpXU5pKXE/T25vXyZZ'@; put 'MHxJcWhGLEczcztVSitxOk5gIV4mPiI9K31FKV03NChxYU5RZF4mcnpmd3BoOCt4UyZRYkBwR155L3xxeU07SFplQGNrR3k1Qlg6aEFNOEpFI3pZeixCbk07T3hVZEIsI3Z0d1IxT3BoanR8SXBoZnRJbEJ0LjhWVHRQYzFJYF9EMmVybU1ZYzFIYFVEamZybWpUSm5Ubip5VEArI1FHWzFIUXEr'@; put 'ZCxAbzAuYXEpejUwMV8hS2w/UjM9Zj5DbWQ+VWhjNGRnQjV5T2R1SEQzWXosdVd6ZkVkI2QrTzdLeC4rO2ptTCpdIn1qJmV5VSVqZ0xlbXhKbiRKZSV4Z344Q1kjS1ZqImVNZzIrVzhlPGhWcStoTUVFKzUpcDI4MFhEZXQqUn5xQnw4d3V3b01JVUQsI0p6JjFhSGxoSHR9MW9oQStoJiVRfT9p'@; put 'O3pmVWJMYjJRXz96LmgxbX0wNjE6U1lqU3I8VmpVYihUMlFAPykqfExHYXxYZjs9WDdqOXp8aWp7RlIqODZ5dChDd1k/VjRsQU07O2Y6ZGpXXUZ+PjBVeTpeWUMwNWROYyNFdXg3YXJ8JlFnZWFEfCI3YSZuO2ZQT0FEMnhoSWteYGZscSJALnovSUBjMUN8Ii9RdnxEQyV+akp8SGUkSWNJeWBX'@; put 'Zz5Pam5xST5hLGlPJiMoRksuImAwJGhANk93P3lWT28+ZlNkNDouVzhqXyE/Jl93VSVuaGlZQ1lfOHo6fUB4YyZ1d2xsNFAyeFNRaiVFTlZFJClxM0dub3RnNEhkSkh5dE5fVy5MRk9+KiZ9VUxQPHVqI0k8UXdONkw2TSQ/ZEchUmo3KCM0eUguP3xvcH5eTUJaZVA1VEVgWyE7aEMoPk84KWhj'@; put 'RTY+ejo4XWdFOVRVPGhhYkwrfSRIP3ZXNCVfJCpmfEQubE5vdyIxMX4vVUxDZ04jdjZkZVczW2J6fX1vNFdXakN8RGV+RVIxWiV9RiQpc115I3VPUGh8Qm1zdEAjM0lTaEQqckUlUXM/XTckLGl8KUs9aiFyQ0YyfGR+OG1PQDtmWVpHW3xqLjJMN3djd2R3I3pVSyU4aStpZFlFVTRpPFF1MEE4'@; put 'QFZgX1hIXk8qNHpCIlhvOmc+cWVbfCpxOUVhUiMsZXxMbFU4c3JqLGU2OHJrI3FmbWhtKUszZVc9ZmphJSw5JkU4SnRRfUdrbCFbX2sxZH1YNytIUWQwS0poQn5RR1hGRTh3aFcpdjgkYTgmOFAlMUc4Y3hKbl9Idy9+TDI0d11LTl9OcjFMTSV8NHVPTW1HZ3d0Y0tEUnh4L1J7aEdDYSsveVRw'@; put 'e0w/aUZwNz1qQWBLaU5fPUlLI0tMV1tPO0tLLnZ2fFBBKG9fXn40eX5wLjNGcD8xNG95X0tbWE58UmBzYD5TTHJlN0VxbVIiI0d9YSV+ekFeImE/UyRkR0J3bCNLKVJhZlV8YF9EdixbLkp+NFFGNmN8OCVvfEBqUldqVi4mVG9hZUtMb1tmTTciQEpOeE10WmU3e3QjTXB1O0VlYHs4U0ArfClX'@; put 'SmM1ZXdIQkowTjV2KyNiRnBPYzglPyhpalM9Qn5aXSs9SFpCKms2Y1BfS2VKe2ZuQ3t7OFMjRCNzZ2p7X09AcighMGldQERqVi8pXXhFNz1CQDVbOTVZJV84PkpYOixUZ25nRTJ3PDhnQ315SiRPaUREdm5QSmVPdkpFe3toPDFTNl08TzV+ZzBFRFIjekl0L1lFPTxmVHEiQGdpb1RRKSsjN0Z7'@; put 'LF5ucmUiUyp8MUJJKyMoSHpLOzRXTjJCQUJSKFtRUSldNVM2PXhQNkojQEBmezt9QHIhJHNtbnM7e0wwUz1LNFt1R007IVVuUzAqQGZJWn0sSGlBcHx2aUVLRmsuUXxmeGBmX3BBXSE/S21LOngod0lSIVolZjVJOl1OYDYvMVd6SDouTEZDLyhHRzFaY01WUCE9VyVqNCFoZThJOl8zKmNQLDUr'@; put 'elZxZyxlUDZIVWMxeV9mQ0QwVTg5b09dVy40IXcod1hnM0JXX3shOClSNl9nZUl+eGxgLCtyWE1dfFt9TVU5bDZoP2RbfSlNZjtPVU9wfUBrfkRLSjJ8X15md3ZWVkByYDApNl0sRl1eZnRDKng4ZVE4IVJxP1F7Ry99c2U7SigoNyp8NlZjXV4sTm1LTHUhK3w6bGY7L1Q/P35AcDZMOkp7KXxi'@; put 'aWY7NVR+bFlVWmZzei9AMCsqfXB+RmphcGNWOlJtejhsNzJwbCtYMlF4IVckWzR6eU84em1Za18hMmk1MHowKHYjclspMVdjMV9sQ09XblFuPjxTWS8jYF4wbnJzSm4vR2FOWDhda2lWQWVTZ0xlNnZPbysjXS5EW3xALno3YTdMOF4kflllMGAway5DZClBTzVda098ODtYPVlKbjZMRmBAckwr'@; put 'Ond4U3lqNSNnWCtxU3lqe0ZyUmgrLj8sR3Z+QDYoXnAwLnJlY2ptWWA6QGZMa0Zbe2Y8VjIsMUJuTShjS197OGN1fFh6JGt2N3pNO3NtZ2tVezFOX05WPlclJmdxd0Y7fUcuZkxLWWpzSSs1W1BfOEYjeGA7SXFlWlUsfHFsdTY2RVlLTmVkOld5WXo3V3FNRUQoc3VJQCM3eHNAdVFwdD9tdTRU'@; put 'NVc1WXolcig5d1RpaUpIbDRXQ2ZIR0hHNTs6eTZFclYpSlV4VihEZUshNXRMam4lP1lqSkJgQ3d6al1ueG8vN0w6UkBJbCJuPD8+dEJ+WmxmaVZmSH1UeS95T0Vrbj0jNU90NyhCbXRGfWFEIjxJVkFJTiJ7Jm1iKl9xKDpUR3g6QkpyIkkpeTwhSkEhSyI0Wnp7KzJ1dGFVTUUzRGJBSGZDMihU'@; put 'PnlRem5FaXt7PkY2RHkwbnxKclN8ek1meWlpQXNlP3A5bX54WFJHWURldTBUYVZ7QEYubERhQF9FIUAjJjE/R3coZiRHZUt3W1MkPj5PbF5HdnJIT2VAQl4zL0JBTkhzbnh2QEdzTV1MVTpWMWNCNmQzLForPkxZXTVGc1U2QWF3cFpjeDBUNDgsUDgiSH1hS31UYXc6UEFYfHRWaDx8Mj5RPyhN'@; put 'JXVob2hBYUZ9Q1EodEE9PzhEOlZxWjdBTnZWalN+TkpdcCkuTVs3Qi4xSUIsQnJTNiJORF1uQ0NjM3Q/SX1yLFtmRV5We1pwQ3xgTGEkPmI/KitHPiVNNnRPJTIvajQ4bG88Q2cwWSp5cmY6MXhjLFdKWSNNUTdtODh2VVdOO0xXTWU7ZWleR3lBTTR3IUgwJlM4fCwzaUImY2N8Uzd3XnBTYSRa'@; put 'fDhve1Z9W3tfa2RGKUg0ZFguUEpxck1yZmU8MXhxYXshOH50aVdvK0RVPUpMcj0wSC5IWWUrNlE+UnNgZksxJltEfiwxJltEdVpaYU95SGVvKlBKeGwmNV1kSXU2UV5mY0kjfExLSWpkSW88TEsjZSNgUkMsblA3JkdsNT9IQEpbYXJIM0Q1WUdYcStPMnxrR3QyaDVGIVdmPzxjbkx2NzRMUGNN'@; put 'Y3dXa3Vkdkw3c2FdQ1R0UUFDdClNRVVFQUFBIz12JEhDQEwzMndbd1VmLj4uTHg0RGF0SzEzX209cGUwREBTbmVSJi81LCZocT4hWDZxRD15bzt9KGZSOGdtSnZVI0l9Yks5QSx1VmZgZXZTRDs6fWYkQ0ZGfCk7KF8seF4rQl9UNnJCXj0lR3g5LGJBR00mSD5ZOlJiaiksNn1hQkNiVzsuYSF9'@; put 'KXFQa0tWdGA8Tjt1ZS5NKFopQ3VIJVRzR0khbCkmKSNIdzdXPDxLLDpUJCF6eHNdQWB2aXlhakIpYSlfODd0KztFRUc4WSQyYywleWlvLj1SYjZLWE9pP0NyJj8yKVlmeV1UbVYvJEtQVEEwKToqZCZsbittMEo4K1VwKU5PJHNBZGY3UDswUTUjYU5LbmU3YU13c1BqP1JJT2VxVE9xZHhISENP'@; put 'bjRgPDZqVV1dXTM0XnpzLH40PiJBJV4jQn0mbkxeUTNXX2ssV2loY0Nvaz8hWk1RKVh4RF57Vzcve2E0JUgyMTRXSmorX1dgKGRiTElWRXB1MihIRkpoI00/Kn1DKjhqTy9QPFdgRk4xInN+OW1DOj1qRU1JNXYzWjdHO0dGSTxuM2AlRjhWPVssRz5KUTRVKDQ4ZTlGQSgoQW1ZJCNUM1NxPSN4'@; put 'KEtlPitUTS4qbVg6Ompedmd6TjN+W15oYDNsTHgmLG5yZyVGSyU6KEdOeEVNYVgrcU8qN3tjfm5NSnVSUj8iRUE0eUgoVHJLY0xGKWYrRGwsdXgxN1goSGY0RHozZ0wsUkQmNiZLcTp5IlRLcSlXaDNbZUFWaGN4ViUmUDdbNi8qc3g4SU5naW5OJl8kd1U9YzFKJSlNPkgpIXpKejVoRiJgazF5'@; put 'WiUwNFludW58RkgkWzBXWSkoazdMYiFpRmxYRil+QU5QYnguIjsqPklBRjNLV0ZwPUdXP1tjRXkyPltMSE9eZkxKI31rbTppPFEwNndhfWgkfTRiR3pTMSxiYEA0UjFlczhmS1FXbUF+NVgqR2xYNXpvczBxNnBLXkt1MV5KQ28jYUAvK2A8SF5JK190VGgjR0shdzheW3NTKl8sN0k2Ii9AL1Na'@; put 'e0lrUHpDJjNXKTQpd1lXM29XUGJRNV0pTlpmQlAvSUkqbGo/ZC8rfnpXa3UjPUVFV09FZ3g1PXlZKzl0SSFbT1lga3l0SlBFOUBEMkV3O0l7eS5OTT45YlRse3lrVTVBOnsrUjAwPjdkM0lDaihTbSoueFFRL2BhLFFDMDA+PHR6YXp8P3kyKCRLfmNTM3s0eC5WISZZcWl+L3MpTndJQCJUU0Aj'@; put 'VCM6bTEubmksZmc6cH4mTTJJJk56K21+Tlh+TEB0clFwbi9wIUcwX3t0JjhqTHNoVXt9I10lY0tUPGRedVMrKUtzPlojX3VgK187WU0vXT1mczUvcDozdFJSblVbSm8+Wk0+cGJ7bj09M196OHY4NFNmTi5qK1NDO00rYCElPmF0fFBwfVB1NmJpPl1peEU2X3x6Sm1OXXRMV2hoK3AvPmRIRE0k'@; put 'alMkQjB1bDd9QjRLYGtEbE5KbytIKyM5SCYhVD8qUWokNC5uR1MxMGhIXyNUW0xiOGRyWE9pfn0vODVdbzRBMXE/YXk+QGpScGo5MW42eURgQnlPaG1ueD9wVGh2fSx6YzcrNEoyM1lVajRxNCpkczJuSFZbXndtajF8P11pa2Y7eCV6WUxdfnl4TGIvSEoqJl89R1p3MDk5Olh1RTI/WzYlK1ow'@; put 'I09Kcll5V3locUErfTU6aGxDamJ8ZHJsUnZrZkpGeiJJWShxRGUlL3tgQHBmdXYiUWB0eCExaGlaOzdQWlI2WUdGZjg1akMsKztfXj9eS2BrJnk/RjM0ZjdMYj0ycGRRcUs0KyM0R0F1L3tKXlswT0FUQlM/dlM4OWd2SjB0WDQjWmguU35fIitBWWMvcUdMIXN+cGJ6bkMqbGxRU2whQTptenB3'@; put 'STYyRCJrZikwTTo1Xm8rNlc+cDk5LlkkUjcvRmBvNGpbb0ghSjQmRFd8RT9hQFh1SGJ0WUN3dnl0N3FGNkxXYGE4NzFlI0Z0M19YNjtiUCFpeXFzIUhxaTBXdWFjXkooMkhtIShiSjtlPmtGO156OHEoYE5PUlJtITdGdHpmQDQ4JWlKJF84JWtWe1V5KkB3bHU7WW8yaU1TYzNhdyw0NXFsazBS'@; put 'JEkxMT5vVzB4cFsxdiIjYTZaI144MyQjdW8sU2I0JnQsJjx4PlVTezteOHBKR3RdZGBaeDQsfl13cjRucXBrb1BXYiZIPnhTVU5RQWk4cEQwTFNJZnhfSStLby9KOz8iTlk6aUVJNms/TD9rZjY7eG04Lmt1WCx5IyNTZWpZYHhFfTR+d0E5L3VjYUxGcz9LOm9FZVFsJnJKNm4iMGMxcmJ0Tjsm'@; put 'Sis2Xm8sZkMkPnFJPT5tSkNTOH5BX09fbCUhUnBsJTBxPE4oRyxKI0U5TH00e1slbX5MMyZLenZ7LlAjOmU5SEU3Mm89akd6aWc1djE/QSRpcHNJXUdbQkglZGZIW31UUCt6Sm5ZWTR7K3QwO213KWtbR081XV1oYSVgVVdfNy9fSzx4RnhqM30zWEwobFpJYD5ITHQueHdyVkN7UUpMTV01bnVY'@; put 'JHhrL1FpO0p8Jk5ZQzcrWjE4O1YmRypwVWlUY3hdXTt8dyV0ejBxPy8+N1JUZyQyYSRpM1dqbHFiQjckMGUuYkl3YzxTWkNLRjBIL19lUltRVVApOl4pTVg+XWI4JHwmWGNpWmBbSGojYmEuMnQrS11he3h7Xzt8N0QvO1tjUjs9OXMqNzx4aTsqI08jfCo1YyVmUjFCWVclYlVZOSt0RFsqLjFQ'@; put 'fTc1RX1mR0RxZWN+OyE+WSY+XTx+ZkA7P1dCTW8uezczNjU5XVk3IzUrIXtxLmxqfXA1WSguTComZjc9KWlHdmlVZl1KYmcpfnxeZ24jfDR3VllsSyZDbyFrNz4mWC8iNXJHcG9jJk9AKiRYPHBtTDEyVTJuZzxZXl1WfS9zUzxIKVRXSy8ibjYiLk1bRzE0cyxKYDNjKnxtWWl9R3oxeVdzIUBG'@; put 'I2ZHdiMxZUxMZjBTLHZRdVFUKzw4NzloP1VvTUg3OmloOXwwdT9YK2k4WG1POiZjN3V1TW4iMz9tI0FLUXkjYE89Q0NvYXFUPTVjXkIpO3dNLj9WPjAvcW58P2hLIW03O0VOdEE6by5ATWw8Z3JEbXAhXWBWY24sJlpNT0hvSUhNOy9EXUVURSErenghbXhJaH5eRVt0djxzIytnI1BtUWh5SCxm'@; put 'JjxvJFVeN2EldiMqPDNnaCkyP3JuPyxpXkkhL0ZjcHUzR1t5aEVOWU48cEAweyZbZ3t3VH0qZkxRdig9Xj9SZnIvdnVdUXtbKix8bmJiVTZHOVAobFpmWzFMXzBqcVVLbEUlTkhqYiNvREVeWDpKaFVPbjIlanJ5MihTOCJEdkteX1c3fnk5XnkoJSFaI2YvZ3w1Mk0uUjFFSyl9MjNUPCwkKSx9'@; put 'SzU2MXxITlldRTIiTFNfMW05Mm0uPDVKQ2dnSjt1NEtxO0pWbHheMUhqQTwpInttPnx3b1Z2TnZdK3wuP3Q1X2p7cTlbViVxK3hTaEYvYWB8fUEhOGZOTmV2ellJVHosdlREMD1McGAxXyRTKTIzbnxSejp8KipqPnNtQXNCeVJWRHBaKHRNKWheLG5TWCY0M0dmSHxqJV9hZzVSdkwzT1IzYDhT'@; put 'YSptRCltUTBDS3xRIUc7KWc6bHA9azpmY2VRUjxvYyFEaCpFVkJ1NW1VJH1wcyk0ay5ZW1MybWVGMUpWPFgzaHF9eyYjWltfOitfeDxGOiRwPVlWNEBldXZReGlSImByc15vVlVvJmNreXBFMGZ4aGxwcW4pP3NMK2BRUDhPLDE3bFh4dV4qNVZ9MjRRdjk0S1V6UHA9Km1uZyNJVnw6Yy5TayRr'@; put 'NEl9dD5mSSxaQz4/NHNQR3QmaChvJnNgKDtVZD84fE9gJXR8cEojJFhmOlkuKjFUL3x3W0F1TjgmeEMre014I2RreHlzaHQwPXlXXVkmKEdMQStQTFRzaVYxeS53PSZqOkJfZG0mW3cmKi9fWjdnVnRVVjRKWkk1Tno5QV5bImVLWns4MEAzLF8/ZyMlW3AwJCQ7KkUhelByelE7Zl02MF5Welkq'@; put 'an1USX5dJDlWe0syNV1AW3xvdHx8dytPYiNEJixfOWB8fTl6ZG96IXM9RmIiM2B7KjJ7SWZoNFVaPGFRbl1IU1kjI2Z0eyE2cmxNPT89fDJqIXtiPUtQKS9rbDF0V3YpWW5DcnVPXSM8O1BtTTN8KDZ0fHA6Sm8lX1l9Y2JaIiQ8I0toTnBwIWxUV3pkeXk4PX55TXx2NCFbelNxfS59Rn1ueENO'@; put 'SyNDTGB1VyEqeWJMPUorW0tOdlZVe2U3L0VKOysoV3VXJGVDUkZxQ0Y1I05XfmgrOmFzNEVOT25oOCQlS18ueEFpIzs+S3JoamxoUWJ6MiJSe3xwRUhAX0J6XzxIQixUeEVpcWtsITImamluWXRQLDQ1dFQ3YF1BPktseXk3byFOYkImMD06dHRyPGQqcVZPbWA6LCIiWTdeeFc4SDAyQVdReiE2'@; put 'ZS4+VTVURipGcyQobGJjP2Q7KUtlTXJfL2BGNCZhQFpaSX4wTE0hJXB+KEBWMixNV0hkUWRzc20zd3gqMHchZ0chW25Sfn07N3E+bkptQW9JMjVWR0tfUWIrXj9mOTgwcih1d0NEbXciT0ZMOj9LQD87enxWV3tJSWhFX3hOfjJGQUhzPEcxdzBCaUI+aGY+MGtvRnQ/NFZjS2hDQ1c4cmBxUCM8'@; put 'PWk9NzB+VE9UR1V0UFsqeldfTVcoYGxVfjwzYlRjfiFAIiw0ZCtyMEY/QWB6VTBkS2UuW1BDZn4rYnttZjZsKnxgL15uczU3IzBwej1uKXtdUihnLlFFP1ZmcUZANT9qeTdyUFJLdiFoJEBvciN9OTFPRHszfjFYfmVXbTNaWjgpL1MyeWtNVHN+fkhlX15odGBzdE1LaUNPNjVpQCEqIT1dWDt8'@; put 'Lkp7cldJd2AzWVc6eGFNLnNgVmhSOCkuSGBqXndoM2FufXJ8cEYjJG9OSlN8NHNweCtIX3ciJVd9bGR7NyxtZTNfJU95TTZ5dm91TTZTPFBxRUxaWTR8c0svcygwKVpfekIoZjx0NnxwY3tlY0dpOil5fGo9Mkh6PzVhZncvRX52JFpdSz0wTE81ZSVyPWZJZV5LeEwvN01kc0NYUSNySGdOW2Z7'@; put 'U1RwYV5YNCpuaz8zLig/cXBSZHYseyx9c0ojeTVyOiRnV15HY3JOYSRgZ2RKZHVsUDhAL3A5JStXUy9OeFQkNnJUKVlOXmE3bks8Sl9EMDBGOStmUGk9JDkmUDRVc2lDLyJVZyZLP0FxcnM5SFY6ZW5VU0tGMlA2c2c4KSFMXyorTjg2ImQ2USRsS2FHcDpYO3p9azs9anAmMmZMXlVQekJZbVU5'@; put 'TyY7eC81bixZVl5gX2AkdF8yTl5TVD5BfXxrKWBlIj1aeXYkNDJ0X2JOZShwb2NwVn5HNy5pMVdUQk5eW3EoRn0qLkNfbWUmaEMiIyh7NngoPD9+ZSMsMVN+XXxmM1osfiE3elNLV2ZweEcqcDEycCZ+XSEpUUg0W15Vfip1PUxtW1A/bm8ofig5Xnthe1B5KXgvU35vJiNDT3NbJntMPiwmRzd7'@; put 'fTFKbHlCbiIvdTZmb2o+TlozQVE7VH1lU34zbG8kSXxfSXYoSTFHcXJCSX1PPjtZWlA5R21HcE17LkpGPlJ7NH49XmF+XjBwVT1eTF1tQFRWOUVya2QpSEsvbnN0Q2hmY28/KH1pamUmWyskQDVLRiZ9P2AoUDM8O09DTkRlM18hKVJpbUBeMnxUNXcsW3FDT0JbKUAsc1olRSMsYEssfWxtN2dG'@; put 'Ky5yTmt6WW9JaTFZNmFafVBuZ2tnUj4qaSZEOHw7X3wvUTU8VyMoJnkmRUJoQix+dU1mdTtmbXwpL3RLSi5LU0luOH08eyxTOCNHVlJhYmEkK08+PGQ0JmVrKGgsIylOc25Hdmw+Vlp+e1I3JTk6RjA9ITNraGlzQU1ZcDRjVDsheWclNmQoVilOWDQ4MT5Ye1c4MVF8UUFzTEs5aEJqW2F3KnAy'@; put 'JFF5I3w0PlJwPCh3dFhVIXg6cTJ9QVpKYE5RZVFqVH1bZWJET1lVfH0zcXV5dDFwZ1BgfTxUJixeIjpucVZ5eEMsQ0JWNCgyenJ9RE9yWUZyfDIldXZ3ZUReST5eLnZHMyhvLDJtOz1XU31yNDZ+PktlKz99X295fj5ycmpZODI1Jjc2M2NfWyNbblJfezN1XyJ8Y1U8NCM3N35ObkglRT5ZTmwi'@; put 'eDk2JmlrRk8pe2I8aXthUWhfO308VlZaL25UVDQuOWl2Ji49OnMyXzVfJks5Zz0rRjZ4LFE0dXZtQWNqSl1rWz9Se3d+WThmIz41bjt+KTVeNDM+TVdpdkMuMS5fdyxvQ3MlfGlUITUkSj0rKFZ7bWszWGk/QD9nNGxrQiN4cG5JYHorOntQbUd6Sig9YittX2lsaFI6OzM2MntVInNAJmhkODEz'@; put 'TDRzKl1pMU5kLGBuOFhWVGpdWj5wWTIwLyZYZToxKnNyPnx6el9bdENLRjpkRnsvQDp8XkBlNyopYkwmPGFQdmYiUGAobWEoJWpfYFkvalZaZjlMbnJxe31nL2NOTjRbaWVwOFZ0PjN+YGVsPiojU14wcmZkMy4wfHlPVyl4RSpvVygxRlhzNyYhfi9JRXJMQXE6P2FLU1pvUmtDZ2wxb3l9ITts'@; put 'Kz81fnNaR2psKEtacTczQEMjMX4oc3ope2M0QScpKSxmdW5jdGlvbiBEZm4oKXtyZXR1cm4gazRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oe3dhc21CaW5hcnk6UjRlLGxvY2F0ZUZpbGU6KCk9PiIifSl9ZnVuY3Rpb24gSW0obixlKXtpZihuKWZvcihsZXRbdCxyXW9mIE9iamVjdC5lbnRy'@; put 'aWVzKG4pKXZvaWQgMCE9PXImJmUodCxyKX1mdW5jdGlvbiBJNGUobil7cmV0dXJuIEpTT04ucGFyc2Uobil9ZnVuY3Rpb24gb3kobil7bGV0IGU9SlNPTi5wYXJzZShuKSx0PVtdO2ZvcihsZXQgcj0wO3IrMjxlLmxlbmd0aDtyKz0zKXQucHVzaCh7dGFpbDplW3JdLGhlYWQ6ZVtyKzFdLGtl'@; put 'eTplW3IrMl19KTtyZXR1cm4gdH1mdW5jdGlvbiBEUChuKXtyZXR1cm5gY2x1c3Rlcl8ke259YH1mdW5jdGlvbiBWZm4obil7cmV0dXJuIG4uc3RhcnRzV2l0aCgiY2x1c3Rlcl8iKT9uLnNsaWNlKDgpOm59ZnVuY3Rpb24gQmZuKG4pe3JldHVybntwYXRoOm4ucGF0aCxkYXRhOmA8P3htbCB2'@; put 'ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz5cbjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+XG48c3ZnIHdpZHRoPSIke24u'@; put 'd2lkdGh9IiBoZWlnaHQ9IiR7bi5oZWlnaHR9Ij48L3N2Zz5gfX1mdW5jdGlvbiBqZm4obil7cmV0dXJuIG4ubWFwKEJmbil9ZnVuY3Rpb24gYSRlKG4sZSl7bGV0IHQ9e2ltYWdlczpbXSxmaWxlczpbXSwuLi5lfTtbLi4udC5maWxlcywuLi5qZm4odC5pbWFnZXMpXS5mb3JFYWNoKHI9Pm4u'@; put 'Y3JlYXRlRmlsZShyLnBhdGgsci5kYXRhKSl9dmFyIFpLLHMkZT1jbGFzcyBscWV7X3NnO2NvbnN0cnVjdG9yKGUpe3RoaXMuX3NnPWV9YWRkTm9kZShlLHQscil7bGV0IGk9InN0cmluZyI9PXR5cGVvZiBlP3tpZDplLGF0dHJzOnQsaHRtbEF0dHJzOnJ9OmUse2lkOm8sYXR0cnM6YSxodG1s'@; put 'QXR0cnM6bH09aTtyZXR1cm4gdGhpcy5fc2cuYWRkTm9kZShvKSx2b2lkIDA9PT1hPy5pZCYmdGhpcy5zZXROb2RlQXR0cihvLCJpZCIsbyksSW0oYSwodSxnKT0+dGhpcy5zZXROb2RlQXR0cihvLHUsZykpLEltKGwsKHUsZyk9PnRoaXMuc2V0Tm9kZUh0bWxBdHRyKG8sdSxnKSksdGhpc31h'@; put 'ZGRWZXJ0ZXgoZSx0LHIpe3JldHVybiB0aGlzLmFkZE5vZGUoZSx0LHIpfWFkZEVkZ2UoZSx0LHI9IiIsaSxvKXtsZXQgYT0ic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI9PXR5cGVvZiByP3t0YWlsOmUsaGVhZDp0LGtleTpyLGF0dHJzOmksaHRtbEF0dHJzOm99Ont0YWlsOmUsaGVhZDp0'@; put 'LGF0dHJzOnIsaHRtbEF0dHJzOml9OmUse3RhaWw6bCxoZWFkOnUsa2V5Omc9IiIsYXR0cnM6RSxodG1sQXR0cnM6T309YTtyZXR1cm4gdGhpcy5fc2cuYWRkRWRnZShsLHUsZyksSW0oRSwoWixlZSk9PnRoaXMuc2V0RWRnZUF0dHIobCx1LGcsWixlZSkpLEltKE8sKFosZWUpPT50aGlzLnNl'@; put 'dEVkZ2VIdG1sQXR0cihsLHUsZyxaLGVlKSksdGhpc31hZGRTdWJncmFwaChlLHQscil7bGV0IGk9InN0cmluZyI9PXR5cGVvZiBlP3tpZDplLGF0dHJzOnQsaHRtbEF0dHJzOnJ9OmU7cmV0dXJuIG5ldyBscWUodGhpcy5fc2cuYWRkU3ViZ3JhcGgoRFAoaS5pZCkpKS5hcHBseUluaXQoaSl9'@; put 'YXBwbHlJbml0KGUpe3JldHVybiB0aGlzLnNldEF0dHIoImlkIixlLmlkKSxJbShlLmF0dHJzLCh0LHIpPT50aGlzLnNldEF0dHIodCxyKSksSW0oZS5odG1sQXR0cnMsKHQscik9PnRoaXMuc2V0SHRtbEF0dHIodCxyKSksdGhpc31yZW1vdmVOb2RlKGUpe3JldHVybiB0aGlzLl9zZy5yZW1v'@; put 'dmVOb2RlKGUpLHRoaXN9cmVtb3ZlVmVydGV4KGUpe3JldHVybiB0aGlzLnJlbW92ZU5vZGUoZSl9cmVtb3ZlRWRnZShlLHQscj0iIil7cmV0dXJuIHRoaXMuX3NnLnJlbW92ZUVkZ2UoZSx0LHIpLHRoaXN9c2V0QXR0cihlLHQ9IiIscil7cmV0dXJuIHZvaWQgMD09PXI/dGhpcy5fc2cuc2V0'@; put 'QXR0cihlLFN0cmluZyh0KSk6dGhpcy5fc2cuc2V0QXR0cihlLFN0cmluZyh0KSxTdHJpbmcocikpLHRoaXN9c2V0SHRtbEF0dHIoZSx0LHIpe3JldHVybiB2b2lkIDA9PT1yP3RoaXMuX3NnLnNldEh0bWxBdHRyKGUsU3RyaW5nKHQpKTp0aGlzLl9zZy5zZXRIdG1sQXR0cihlLFN0cmluZyh0'@; put 'KSxTdHJpbmcocikpLHRoaXN9c2V0RGVmYXVsdEF0dHIoZSx0KXtyZXR1cm4gdGhpcy5fc2cuc2V0RGVmYXVsdEF0dHIoZSxTdHJpbmcodCkpLHRoaXN9c2V0RGVmYXVsdEh0bWxBdHRyKGUsdCl7cmV0dXJuIHRoaXMuX3NnLnNldERlZmF1bHRIdG1sQXR0cihlLFN0cmluZyh0KSksdGhpc31y'@; put 'ZW1vdmVBdHRyKGUpe3JldHVybiB0aGlzLnNldEF0dHIoZSwiIil9c2V0Tm9kZUF0dHIoZSx0LHI9IiIsaSl7cmV0dXJuIHZvaWQgMD09PWk/dGhpcy5fc2cuc2V0Tm9kZUF0dHIoZSx0LFN0cmluZyhyKSk6dGhpcy5fc2cuc2V0Tm9kZUF0dHIoZSx0LFN0cmluZyhyKSxTdHJpbmcoaSkpLHRo'@; put 'aXN9c2V0VmVydGV4QXR0cihlLHQscj0iIixpKXtyZXR1cm4gdGhpcy5zZXROb2RlQXR0cihlLHQscixpKX1zZXROb2RlSHRtbEF0dHIoZSx0LHIsaSl7cmV0dXJuIHZvaWQgMD09PWk/dGhpcy5fc2cuc2V0Tm9kZUh0bWxBdHRyKGUsdCxTdHJpbmcocikpOnRoaXMuX3NnLnNldE5vZGVIdG1s'@; put 'QXR0cihlLHQsU3RyaW5nKHIpLFN0cmluZyhpKSksdGhpc31zZXRWZXJ0ZXhIdG1sQXR0cihlLHQscixpKXtyZXR1cm4gdGhpcy5zZXROb2RlSHRtbEF0dHIoZSx0LHIsaSl9c2V0RGVmYXVsdE5vZGVBdHRyKGUsdCl7cmV0dXJuIHRoaXMuX3NnLnNldERlZmF1bHROb2RlQXR0cihlLFN0cmlu'@; put 'Zyh0KSksdGhpc31zZXREZWZhdWx0VmVydGV4QXR0cihlLHQpe3JldHVybiB0aGlzLnNldERlZmF1bHROb2RlQXR0cihlLHQpfXNldERlZmF1bHROb2RlSHRtbEF0dHIoZSx0KXtyZXR1cm4gdGhpcy5fc2cuc2V0RGVmYXVsdE5vZGVIdG1sQXR0cihlLFN0cmluZyh0KSksdGhpc31zZXREZWZh'@; put 'dWx0VmVydGV4SHRtbEF0dHIoZSx0KXtyZXR1cm4gdGhpcy5zZXREZWZhdWx0Tm9kZUh0bWxBdHRyKGUsdCl9cmVtb3ZlTm9kZUF0dHIoZSx0KXtyZXR1cm4gdGhpcy5zZXROb2RlQXR0cihlLHQsIiIpfXJlbW92ZVZlcnRleEF0dHIoZSx0KXtyZXR1cm4gdGhpcy5yZW1vdmVOb2RlQXR0cihl'@; put 'LHQpfXNldEVkZ2VBdHRyKGUsdCxyLGksbz0iIixhKXtyZXR1cm4gdm9pZCAwPT09YT90aGlzLl9zZy5zZXRFZGdlQXR0cihlLHQscixpLFN0cmluZyhvKSk6dGhpcy5fc2cuc2V0RWRnZUF0dHIoZSx0LHIsaSxTdHJpbmcobyksU3RyaW5nKGEpKSx0aGlzfXNldEVkZ2VIdG1sQXR0cihlLHQs'@; put 'cixpLG8sYSl7cmV0dXJuIHZvaWQgMD09PWE/dGhpcy5fc2cuc2V0RWRnZUh0bWxBdHRyKGUsdCxyLGksU3RyaW5nKG8pKTp0aGlzLl9zZy5zZXRFZGdlSHRtbEF0dHIoZSx0LHIsaSxTdHJpbmcobyksU3RyaW5nKGEpKSx0aGlzfXNldERlZmF1bHRFZGdlQXR0cihlLHQpe3JldHVybiB0aGlz'@; put 'Ll9zZy5zZXREZWZhdWx0RWRnZUF0dHIoZSxTdHJpbmcodCkpLHRoaXN9c2V0RGVmYXVsdEVkZ2VIdG1sQXR0cihlLHQpe3JldHVybiB0aGlzLl9zZy5zZXREZWZhdWx0RWRnZUh0bWxBdHRyKGUsU3RyaW5nKHQpKSx0aGlzfXJlbW92ZUVkZ2VBdHRyKGUsdCxyLGkpe3JldHVybiB0aGlzLnNl'@; put 'dEVkZ2VBdHRyKGUsdCxyLGksIiIpfWhhc05vZGUoZSl7cmV0dXJuIHRoaXMuX3NnLmhhc05vZGUoZSl9aGFzVmVydGV4KGUpe3JldHVybiB0aGlzLmhhc05vZGUoZSl9aGFzRWRnZShlLHQscj0iIil7cmV0dXJuIHRoaXMuX3NnLmhhc0VkZ2UoZSx0LHIpfW5vZGVDb3VudCgpe3JldHVybiB0'@; put 'aGlzLl9zZy5ub2RlQ291bnQoKX12ZXJ0ZXhDb3VudCgpe3JldHVybiB0aGlzLm5vZGVDb3VudCgpfWVkZ2VDb3VudCgpe3JldHVybiB0aGlzLl9zZy5lZGdlQ291bnQoKX1ub2RlRGVncmVlKGUsdD0xLHI9MSl7cmV0dXJuIHRoaXMuX3NnLm5vZGVEZWdyZWUoZSx0LHIpfXZlcnRleERlZ3Jl'@; put 'ZShlLHQ9MSxyPTEpe3JldHVybiB0aGlzLm5vZGVEZWdyZWUoZSx0LHIpfWdldEF0dHIoZSl7cmV0dXJuIHRoaXMuX3NnLmdldEF0dHIoZSl9Z2V0Tm9kZUF0dHIoZSx0KXtyZXR1cm4gdGhpcy5fc2cuZ2V0Tm9kZUF0dHIoZSx0KX1nZXRWZXJ0ZXhBdHRyKGUsdCl7cmV0dXJuIHRoaXMuZ2V0'@; put 'Tm9kZUF0dHIoZSx0KX1nZXRFZGdlQXR0cihlLHQscixpKXtyZXR1cm4gdGhpcy5fc2cuZ2V0RWRnZUF0dHIoZSx0LHIsaSl9bm9kZU5hbWVzKCl7cmV0dXJuIEk0ZSh0aGlzLl9zZy5ub2RlTmFtZXMoKSl9dmVydGV4TmFtZXMoKXtyZXR1cm4gdGhpcy5ub2RlTmFtZXMoKX1lZGdlcygpe3Jl'@; put 'dHVybiBveSh0aGlzLl9zZy5lZGdlcygpKX1vdXRFZGdlcyhlKXtyZXR1cm4gb3kodGhpcy5fc2cub3V0RWRnZXMoZSkpfWluRWRnZXMoZSl7cmV0dXJuIG95KHRoaXMuX3NnLmluRWRnZXMoZSkpfW5vZGVFZGdlcyhlKXtyZXR1cm4gb3kodGhpcy5fc2cubm9kZUVkZ2VzKGUpKX1kZWxldGUo'@; put 'KXt0aGlzLl9zZy5kZWxldGUoKX1bU3ltYm9sLmRpc3Bvc2VdKCl7dGhpcy5kZWxldGUoKX19LFVmbj1jbGFzc3tfZ3JhcGg7X21vZHVsZTtjb25zdHJ1Y3RvcihuLGUpe3RoaXMuX2dyYXBoPW4sdGhpcy5fbW9kdWxlPWV9ZW5zdXJlRGVmYXVsdEZvbnRzKG4peyIiPT09dGhpcy5nZXRHcmFw'@; put 'aEF0dHIoImZvbnRuYW1lIikmJnRoaXMuc2V0R3JhcGhBdHRyKCJmb250bmFtZSIsIkFyaWFsIiksdGhpcy5zZXREZWZhdWx0R3JhcGhBdHRyKCJmb250bmFtZSIsIkFyaWFsIiksbiYmKHRoaXMuc2V0RGVmYXVsdE5vZGVBdHRyKCJmb250bmFtZSIsIkFyaWFsIiksdGhpcy5zZXREZWZhdWx0'@; put 'RWRnZUF0dHIoImZvbnRuYW1lIiwiQXJpYWwiKSl9YWRkTm9kZShuLGUsdCl7bGV0IHI9InN0cmluZyI9PXR5cGVvZiBuP3tpZDpuLGF0dHJzOmUsaHRtbEF0dHJzOnR9Om4se2lkOmksYXR0cnM6byxodG1sQXR0cnM6YX09cjtyZXR1cm4gdGhpcy5fZ3JhcGguYWRkTm9kZShpKSx2b2lkIDA9'@; put 'PT1vPy5pZCYmdGhpcy5zZXROb2RlQXR0cihpLCJpZCIsaSksSW0obywobCx1KT0+dGhpcy5zZXROb2RlQXR0cihpLGwsdSkpLEltKGEsKGwsdSk9PnRoaXMuc2V0Tm9kZUh0bWxBdHRyKGksbCx1KSksdGhpc31hZGRWZXJ0ZXgobixlLHQpe3JldHVybiB0aGlzLmFkZE5vZGUobixlLHQpfWFk'@; put 'ZEVkZ2UobixlLHQ9IiIscixpKXtsZXQgbz0ic3RyaW5nIj09dHlwZW9mIG4/InN0cmluZyI9PXR5cGVvZiB0P3t0YWlsOm4saGVhZDplLGtleTp0LGF0dHJzOnIsaHRtbEF0dHJzOml9Ont0YWlsOm4saGVhZDplLGF0dHJzOnQsaHRtbEF0dHJzOnJ9Om4se3RhaWw6YSxoZWFkOmwsa2V5OnU9'@; put 'IiIsYXR0cnM6ZyxodG1sQXR0cnM6RX09bztyZXR1cm4gdGhpcy5fZ3JhcGguYWRkRWRnZShhLGwsdSksSW0oZywoTyxaKT0+dGhpcy5zZXRFZGdlQXR0cihhLGwsdSxPLFopKSxJbShFLChPLFopPT50aGlzLnNldEVkZ2VIdG1sQXR0cihhLGwsdSxPLFopKSx0aGlzfWFwcGx5SW5pdChuKXty'@; put 'ZXR1cm4gdGhpcy5lbnN1cmVEZWZhdWx0Rm9udHMoITApLHZvaWQgMCE9PW4uaWQmJnRoaXMuc2V0R3JhcGhBdHRyKCJpZCIsbi5pZCksSW0obi5hdHRycywoZSx0KT0+dGhpcy5zZXRHcmFwaEF0dHIoZSx0KSksSW0obi5odG1sQXR0cnMsKGUsdCk9PnRoaXMuc2V0R3JhcGhIdG1sQXR0cihl'@; put 'LHQpKSx0aGlzfXJlYWQobil7aWYoIXRoaXMuX2dyYXBoLnJlYWQobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERPVCBzb3VyY2UiKTtyZXR1cm4gdGhpcy5lbnN1cmVEZWZhdWx0Rm9udHMoITEpLHRoaXN9c2V0R3JhcGhBdHRyKG4sZT0iIix0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlz'@; put 'Ll9ncmFwaC5zZXRHcmFwaEF0dHIobixTdHJpbmcoZSkpOnRoaXMuX2dyYXBoLnNldEdyYXBoQXR0cihuLFN0cmluZyhlKSxTdHJpbmcodCkpLHRoaXN9c2V0R3JhcGhIdG1sQXR0cihuLGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5fZ3JhcGguc2V0R3JhcGhIdG1sQXR0cihuLFN0cmlu'@; put 'ZyhlKSk6dGhpcy5fZ3JhcGguc2V0R3JhcGhIdG1sQXR0cihuLFN0cmluZyhlKSxTdHJpbmcodCkpLHRoaXN9c2V0RGVmYXVsdEdyYXBoQXR0cihuLGUpe3JldHVybiB0aGlzLl9ncmFwaC5zZXREZWZhdWx0R3JhcGhBdHRyKG4sU3RyaW5nKGUpKSx0aGlzfXNldERlZmF1bHRHcmFwaEh0bWxB'@; put 'dHRyKG4sZSl7cmV0dXJuIHRoaXMuX2dyYXBoLnNldERlZmF1bHRHcmFwaEh0bWxBdHRyKG4sU3RyaW5nKGUpKSx0aGlzfXNldE5vZGVBdHRyKG4sZSx0PSIiLHIpe3JldHVybiB2b2lkIDA9PT1yP3RoaXMuX2dyYXBoLnNldE5vZGVBdHRyKG4sZSxTdHJpbmcodCkpOnRoaXMuX2dyYXBoLnNl'@; put 'dE5vZGVBdHRyKG4sZSxTdHJpbmcodCksU3RyaW5nKHIpKSx0aGlzfXNldFZlcnRleEF0dHIobixlLHQ9IiIscil7cmV0dXJuIHRoaXMuc2V0Tm9kZUF0dHIobixlLHQscil9c2V0Tm9kZUh0bWxBdHRyKG4sZSx0LHIpe3JldHVybiB2b2lkIDA9PT1yP3RoaXMuX2dyYXBoLnNldE5vZGVIdG1s'@; put 'QXR0cihuLGUsU3RyaW5nKHQpKTp0aGlzLl9ncmFwaC5zZXROb2RlSHRtbEF0dHIobixlLFN0cmluZyh0KSxTdHJpbmcocikpLHRoaXN9c2V0VmVydGV4SHRtbEF0dHIobixlLHQscil7cmV0dXJuIHRoaXMuc2V0Tm9kZUh0bWxBdHRyKG4sZSx0LHIpfXNldERlZmF1bHROb2RlQXR0cihuLGUp'@; put 'e3JldHVybiB0aGlzLl9ncmFwaC5zZXREZWZhdWx0Tm9kZUF0dHIobixTdHJpbmcoZSkpLHRoaXN9c2V0RGVmYXVsdFZlcnRleEF0dHIobixlKXtyZXR1cm4gdGhpcy5zZXREZWZhdWx0Tm9kZUF0dHIobixlKX1zZXREZWZhdWx0Tm9kZUh0bWxBdHRyKG4sZSl7cmV0dXJuIHRoaXMuX2dyYXBo'@; put 'LnNldERlZmF1bHROb2RlSHRtbEF0dHIobixTdHJpbmcoZSkpLHRoaXN9c2V0RGVmYXVsdFZlcnRleEh0bWxBdHRyKG4sZSl7cmV0dXJuIHRoaXMuc2V0RGVmYXVsdE5vZGVIdG1sQXR0cihuLGUpfXNldEVkZ2VBdHRyKG4sZSx0LHIsaT0iIixvKXtyZXR1cm4gdm9pZCAwPT09bz90aGlzLl9n'@; put 'cmFwaC5zZXRFZGdlQXR0cihuLGUsdCxyLFN0cmluZyhpKSk6dGhpcy5fZ3JhcGguc2V0RWRnZUF0dHIobixlLHQscixTdHJpbmcoaSksU3RyaW5nKG8pKSx0aGlzfXNldEVkZ2VIdG1sQXR0cihuLGUsdCxyLGksbyl7cmV0dXJuIHZvaWQgMD09PW8/dGhpcy5fZ3JhcGguc2V0RWRnZUh0bWxB'@; put 'dHRyKG4sZSx0LHIsU3RyaW5nKGkpKTp0aGlzLl9ncmFwaC5zZXRFZGdlSHRtbEF0dHIobixlLHQscixTdHJpbmcoaSksU3RyaW5nKG8pKSx0aGlzfXNldERlZmF1bHRFZGdlQXR0cihuLGUpe3JldHVybiB0aGlzLl9ncmFwaC5zZXREZWZhdWx0RWRnZUF0dHIobixTdHJpbmcoZSkpLHRoaXN9'@; put 'c2V0RGVmYXVsdEVkZ2VIdG1sQXR0cihuLGUpe3JldHVybiB0aGlzLl9ncmFwaC5zZXREZWZhdWx0RWRnZUh0bWxBdHRyKG4sU3RyaW5nKGUpKSx0aGlzfXJlbW92ZU5vZGUobil7cmV0dXJuIHRoaXMuX2dyYXBoLnJlbW92ZU5vZGUobiksdGhpc31yZW1vdmVWZXJ0ZXgobil7cmV0dXJuIHRo'@; put 'aXMucmVtb3ZlTm9kZShuKX1yZW1vdmVFZGdlKG4sZSx0PSIiKXtyZXR1cm4gdGhpcy5fZ3JhcGgucmVtb3ZlRWRnZShuLGUsdCksdGhpc31yZW1vdmVTdWJncmFwaChuKXtyZXR1cm4gdGhpcy5fZ3JhcGgucmVtb3ZlU3ViZ3JhcGgoRFAobikpLHRoaXN9cmVtb3ZlR3JhcGhBdHRyKG4pe3Jl'@; put 'dHVybiB0aGlzLnNldEdyYXBoQXR0cihuLCIiKX1yZW1vdmVOb2RlQXR0cihuLGUpe3JldHVybiB0aGlzLnNldE5vZGVBdHRyKG4sZSwiIil9cmVtb3ZlVmVydGV4QXR0cihuLGUpe3JldHVybiB0aGlzLnJlbW92ZU5vZGVBdHRyKG4sZSl9cmVtb3ZlRWRnZUF0dHIobixlLHQscil7cmV0dXJu'@; put 'IHRoaXMuc2V0RWRnZUF0dHIobixlLHQsciwiIil9aGFzTm9kZShuKXtyZXR1cm4gdGhpcy5fZ3JhcGguaGFzTm9kZShuKX1oYXNWZXJ0ZXgobil7cmV0dXJuIHRoaXMuaGFzTm9kZShuKX1oYXNFZGdlKG4sZSx0PSIiKXtyZXR1cm4gdGhpcy5fZ3JhcGguaGFzRWRnZShuLGUsdCl9aGFzU3Vi'@; put 'Z3JhcGgobil7cmV0dXJuIHRoaXMuX2dyYXBoLmhhc1N1YmdyYXBoKERQKG4pKX1ub2RlQ291bnQoKXtyZXR1cm4gdGhpcy5fZ3JhcGgubm9kZUNvdW50KCl9dmVydGV4Q291bnQoKXtyZXR1cm4gdGhpcy5ub2RlQ291bnQoKX1lZGdlQ291bnQoKXtyZXR1cm4gdGhpcy5fZ3JhcGguZWRnZUNv'@; put 'dW50KCl9c3ViZ3JhcGhDb3VudCgpe3JldHVybiB0aGlzLl9ncmFwaC5zdWJncmFwaENvdW50KCl9bm9kZURlZ3JlZShuLGU9MSx0PTEpe3JldHVybiB0aGlzLl9ncmFwaC5ub2RlRGVncmVlKG4sZSx0KX12ZXJ0ZXhEZWdyZWUobixlPTEsdD0xKXtyZXR1cm4gdGhpcy5ub2RlRGVncmVlKG4s'@; put 'ZSx0KX1nZXRHcmFwaEF0dHIobil7cmV0dXJuIHRoaXMuX2dyYXBoLmdldEdyYXBoQXR0cihuKX1nZXROb2RlQXR0cihuLGUpe3JldHVybiB0aGlzLl9ncmFwaC5nZXROb2RlQXR0cihuLGUpfWdldFZlcnRleEF0dHIobixlKXtyZXR1cm4gdGhpcy5nZXROb2RlQXR0cihuLGUpfWdldEVkZ2VB'@; put 'dHRyKG4sZSx0LHIpe3JldHVybiB0aGlzLl9ncmFwaC5nZXRFZGdlQXR0cihuLGUsdCxyKX1zdWJncmFwaE5hbWVzKCl7cmV0dXJuIEk0ZSh0aGlzLl9ncmFwaC5zdWJncmFwaE5hbWVzKCkpLm1hcChWZm4pfW5vZGVOYW1lcygpe3JldHVybiBJNGUodGhpcy5fZ3JhcGgubm9kZU5hbWVzKCkp'@; put 'fXZlcnRleE5hbWVzKCl7cmV0dXJuIHRoaXMubm9kZU5hbWVzKCl9ZWRnZXMoKXtyZXR1cm4gb3kodGhpcy5fZ3JhcGguZWRnZXMoKSl9b3V0RWRnZXMobil7cmV0dXJuIG95KHRoaXMuX2dyYXBoLm91dEVkZ2VzKG4pKX1vdXRFZGdlc0Zyb20obil7cmV0dXJuIHRoaXMub3V0RWRnZXMobil9'@; put 'aW5FZGdlcyhuKXtyZXR1cm4gb3kodGhpcy5fZ3JhcGguaW5FZGdlcyhuKSl9aW5FZGdlc1RvKG4pe3JldHVybiB0aGlzLmluRWRnZXMobil9bm9kZUVkZ2VzKG4pe3JldHVybiBveSh0aGlzLl9ncmFwaC5ub2RlRWRnZXMobikpfXZlcnRleEVkZ2VzKG4pe3JldHVybiB0aGlzLm5vZGVFZGdl'@; put 'cyhuKX1hZGRTdWJncmFwaChuLGUsdCl7bGV0IHI9InN0cmluZyI9PXR5cGVvZiBuP3tpZDpuLGF0dHJzOmUsaHRtbEF0dHJzOnR9Om47cmV0dXJuIG5ldyBzJGUodGhpcy5fZ3JhcGguYWRkU3ViZ3JhcGgoRFAoci5pZCkpKS5hcHBseUluaXQocil9Z2V0U3ViZ3JhcGgobil7bGV0IGU9dGhp'@; put 'cy5fZ3JhcGguZ2V0U3ViZ3JhcGgoRFAobikpO3JldHVybiBlP25ldyBzJGUoZSk6bnVsbH1sYXlvdXQobj0ic3ZnIixlPSJkb3QiLHQpe2lmKHQ/LmltYWdlcz8ubGVuZ3RofHx0Py5maWxlcz8ubGVuZ3RoKXtsZXQgbz1uZXcgdGhpcy5fbW9kdWxlLkNHcmFwaHZpeigwLDApO3RyeXthJGUo'@; put 'byx0KX1maW5hbGx5e28uZGVsZXRlKCl9fWxldCByPSIiLGk9IiI7dHJ5e3I9dGhpcy5fZ3JhcGgubGF5b3V0KG4sZSl9Y2F0Y2gobyl7aT1vLm1lc3NhZ2V9aWYoaT10aGlzLl9tb2R1bGUuQ0dyYXBodml6Lmxhc3RFcnJvcigpfHxpLCFyJiZpKXRocm93IG5ldyBFcnJvcihpKTtyZXR1cm4g'@; put 'cn13cml0ZSgpe3JldHVybiB0aGlzLl9ncmFwaC53cml0ZSgpfXRvRG90KCl7cmV0dXJuIHRoaXMud3JpdGUoKX1kZWxldGUoKXt0aGlzLl9ncmFwaC5kZWxldGUoKX1bU3ltYm9sLmRpc3Bvc2VdKCl7dGhpcy5kZWxldGUoKX19LGwkZT1jbGFzcyBUQXtfbW9kdWxlO2NvbnN0cnVjdG9yKGUp'@; put 'e3RoaXMuX21vZHVsZT1lfXN0YXRpYyBsb2FkKCl7cmV0dXJuIFpLfHwoWks9UGZuKCkudGhlbihlPT5uZXcgVEEoZSkpKSxaS31zdGF0aWMgdW5sb2FkKCl7KGZ1bmN0aW9uIEhmbigpe1I0ZT12b2lkIDB9KSgpLFpLPXZvaWQgMH12ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX21vZHVsZS5DR3Jh'@; put 'cGh2aXoudmVyc2lvbigpfWxheW91dChlLHQ9InN2ZyIscj0iZG90IixpKXtpZighZSlyZXR1cm4iIjtsZXQgbz1uZXcgdGhpcy5fbW9kdWxlLkNHcmFwaHZpeihpPy55SW52ZXJ0PzE6MCxpPy5ub3A/aT8ubm9wOjApLGE9IiIsbD0iIjt0cnl7YSRlKG8saSk7dHJ5e2E9by5sYXlvdXQoZSx0'@; put 'LHIpfWNhdGNoKHUpe2w9dS5tZXNzYWdlfWw9dGhpcy5fbW9kdWxlLkNHcmFwaHZpei5sYXN0RXJyb3IoKXx8bH1maW5hbGx5e28uZGVsZXRlKCl9aWYoIWEmJmwpdGhyb3cgVEEudW5sb2FkKCksbmV3IEVycm9yKGwpO3JldHVybiBhfWFjeWNsaWMoZSx0PSExLHI9ITEpe2lmKCFlKXJldHVy'@; put 'bnthY3ljbGljOiExLG51bV9yZXY6MCxvdXRGaWxlOiIifTtsZXQgaT1uZXcgdGhpcy5fbW9kdWxlLkNHcmFwaHZpeixvPSExLGE9MCxsPSIiLHU9IiI7dHJ5e3RyeXtvPWkuYWN5Y2xpYyhlLHQsciksYT1pLmFjeWNsaWNfbnVtX3JldixsPWkuYWN5Y2xpY19vdXRGaWxlfWNhdGNoKGcpe3U9'@; put 'Zy5tZXNzYWdlfXU9dGhpcy5fbW9kdWxlLkNHcmFwaHZpei5sYXN0RXJyb3IoKXx8dX1maW5hbGx5e2kuZGVsZXRlKCl9aWYodSl0aHJvdyBUQS51bmxvYWQoKSxuZXcgRXJyb3IodSk7cmV0dXJue2FjeWNsaWM6byxudW1fcmV2OmEsb3V0RmlsZTpsfX10cmVkKGUsdD0hMSxyPSExKXtpZigh'@; put 'ZSlyZXR1cm57b3V0OiIiLGVycjoiIn07bGV0IGk9bmV3IHRoaXMuX21vZHVsZS5DR3JhcGh2aXosbz0iIixhPSIiLGw9IiI7dHJ5e3RyeXtpLnRyZWQoZSx0LHIpLG89aS50cmVkX291dCxhPWkudHJlZF9lcnJ9Y2F0Y2godSl7bD11Lm1lc3NhZ2V9bD10aGlzLl9tb2R1bGUuQ0dyYXBodml6'@; put 'Lmxhc3RFcnJvcigpfHxsfWZpbmFsbHl7aS5kZWxldGUoKX1pZighbyYmbCl0aHJvdyBUQS51bmxvYWQoKSxuZXcgRXJyb3IobCk7cmV0dXJue291dDpvLGVycjphfX11bmZsYXR0ZW4oZSx0PTAscj0hMSxpPTApe2lmKCFlKXJldHVybiIiO2xldCBvPW5ldyB0aGlzLl9tb2R1bGUuQ0dyYXBo'@; put 'dml6LGE9IiIsbD0iIjt0cnl7dHJ5e2E9by51bmZsYXR0ZW4oZSx0LHIsaSl9Y2F0Y2godSl7bD11Lm1lc3NhZ2V9bD10aGlzLl9tb2R1bGUuQ0dyYXBodml6Lmxhc3RFcnJvcigpfHxsfWZpbmFsbHl7by5kZWxldGUoKX1pZighYSYmbCl0aHJvdyBUQS51bmxvYWQoKSxuZXcgRXJyb3IobCk7'@; put 'cmV0dXJuIGF9Y2lyY28oZSx0PSJzdmciLHIpe3JldHVybiB0aGlzLmxheW91dChlLHQsImNpcmNvIixyKX1kb3QoZSx0PSJzdmciLHIpe3JldHVybiB0aGlzLmxheW91dChlLHQsImRvdCIscil9ZmRwKGUsdD0ic3ZnIixyKXtyZXR1cm4gdGhpcy5sYXlvdXQoZSx0LCJmZHAiLHIpfXNmZHAo'@; put 'ZSx0PSJzdmciLHIpe3JldHVybiB0aGlzLmxheW91dChlLHQsInNmZHAiLHIpfW5lYXRvKGUsdD0ic3ZnIixyKXtyZXR1cm4gdGhpcy5sYXlvdXQoZSx0LCJuZWF0byIscil9b3NhZ2UoZSx0PSJzdmciLHIpe3JldHVybiB0aGlzLmxheW91dChlLHQsIm9zYWdlIixyKX1wYXRjaHdvcmsoZSx0'@; put 'PSJzdmciLHIpe3JldHVybiB0aGlzLmxheW91dChlLHQsInBhdGNod29yayIscil9dHdvcGkoZSx0PSJzdmciLHIpe3JldHVybiB0aGlzLmxheW91dChlLHQsInR3b3BpIixyKX1ub3AoZSl7cmV0dXJuIHRoaXMubGF5b3V0KGUsImRvdCIsIm5vcCIpfW5vcDIoZSl7cmV0dXJuIHRoaXMubGF5'@; put 'b3V0KGUsImRvdCIsIm5vcDIiKX1jcmVhdGVHcmFwaChlPSJHIix0PSJkaXJlY3RlZCIpe2xldCByPSJzdHJpbmciPT10eXBlb2YgZT97aWQ6ZSx0eXBlOnR9OmUsaT1yLmlkPz8iRyIsbz1yLnR5cGU/PyJkaXJlY3RlZCIsYT1vLmluY2x1ZGVzKCJ1bmRpcmVjdGVkIik/MDoxLGw9by5zdGFy'@; put 'dHNXaXRoKCJzdHJpY3QiKT8xOjA7cmV0dXJuIG5ldyBVZm4obmV3IHRoaXMuX21vZHVsZS5DR3JhcGgoaSxhLGwpLHRoaXMuX21vZHVsZSkuYXBwbHlJbml0KHIpfXJlYWQoZSl7bGV0IHQ9dGhpcy5jcmVhdGVHcmFwaCgpO3RyeXtyZXR1cm4gdC5yZWFkKGUpLHR9Y2F0Y2gocil7dGhyb3cg'@; put 'dC5kZWxldGUoKSxyfX19O2Z1bmN0aW9uIEdLKG4pe3JldHVybiBPYmplY3QuYXNzaWduKHt9LG4pfWZ1bmN0aW9uIGF5KG4pe3JldHVybiBNYXRoLnJvdW5kKDEwMCpuKS8xMDB9ZnVuY3Rpb24gYyRlKG4sZSl7aWYoInBvbHlnb24iPT1uLnRhZyl7KHQ9R0sobikpLnRhZz0icGF0aCI7dmFy'@; put 'IGk9R0socj1uLmF0dHJpYnV0ZXMpLG89ci5wb2ludHM7aWYoInBvbHlnb24iPT1lLnRhZyl7KGE9bi5iYm94KS5jeD1hLngrYS53aWR0aC8yLGEuY3k9YS55K2EuaGVpZ2h0LzI7Zm9yKHZhciB1PXIucG9pbnRzLnNwbGl0KCIgIiksZz11Lm1hcChmdW5jdGlvbihmbil7dmFyIHlyPWZuLnNw'@; put 'bGl0KCIsIik7cmV0dXJuW3lyWzBdLWEuY3gseXJbMV0tYS5jeV19KSxFPWdbZy5sZW5ndGgtMV1bMF0sTz1nW2cubGVuZ3RoLTFdWzFdLFo9MDtaPGcubGVuZ3RoO1orKyxFPWVlLE89dmUpe3ZhciBNZT0oZWU9Z1taXVswXSktRTtpZigwIT0oSGU9KHZlPWdbWl1bMV0pLU8pJiYwPD0oV2U9'@; put 'RS1PKk1lL0hlKSYmV2U8MS8wJiYoRTw9V2UmJldlPD1lZXx8ZWU8PVdlJiZXZTw9RSkpYnJlYWt9dmFyIGF0PVtbYS5jeCtXZSxhLmN5KzBdLmpvaW4oIiwiKV07bz0oYXQ9KGF0PWF0LmNvbmNhdCh1LnNsaWNlKFopKSkuY29uY2F0KHUuc2xpY2UoMCxaKSkpLmpvaW4oIiAiKX1pLmQ9Ik0i'@; put 'K28rInoiLGRlbGV0ZSBpLnBvaW50cyx0LmF0dHJpYnV0ZXM9aX1lbHNle3ZhciB0Oyh0PUdLKG4pKS50YWc9InBhdGgiLGk9R0socj1uLmF0dHJpYnV0ZXMpO3ZhciByLGVlLHZlLFdlLEN0PXIuY3gsQXQ9ci5jeSxLdD1yLnJ4LHF0PXIucnk7aWYoInBvbHlnb24iPT1lLnRhZyl7dmFyIGE7'@; put 'KGE9ZS5iYm94KS5jeD1hLngrYS53aWR0aC8yLGEuY3k9YS55K2EuaGVpZ2h0LzI7dmFyIGduPWUuYXR0cmlidXRlcy5wb2ludHMuc3BsaXQoIiAiKVswXS5zcGxpdCgiLCIpLEhlPShNZT1nblswXS1hLmN4LGduWzFdLWEuY3kpLHFyPU1hdGguc3FydChNYXRoLnBvdyhNZSwyKStNYXRoLnBv'@; put 'dyhIZSwyKSksJG49TWUvcXIsVHI9LUhlL3FyfWVsc2UgJG49MSxUcj0wO2kuZD0iTSAiK0N0KyIgIitBdCsiIG0gIisoZWU9S3QqJG4pKyIsIisodmU9LXF0KlRyKSsiIGEgIitLdCsiLCIrcXQrIiAwIDEsMCAiKyhNZT0oV2U9S3QqLSRuKS1lZSkrIiwiKyhIZT0tcXQqLVRyLXZlKSsiIGEg'@; put 'IitLdCsiLCIrcXQrIiAwIDEsMCAiKy1NZSsiLCIrLUhlKyJ6IixkZWxldGUgaS5jeCxkZWxldGUgaS5jeSxkZWxldGUgaS5yeCxkZWxldGUgaS5yeSx0LmF0dHJpYnV0ZXM9aX1yZXR1cm4gdH1mdW5jdGlvbiBZZm4oKXt0cnl7bCRlLmxvYWQoKS50aGVuKHQ9Pnt0LmxheW91dCgiIiwic3Zn'@; put 'IiwiZG90IiksdGhpcy5sYXlvdXRTeW5jPXQubGF5b3V0LmJpbmQodCksbnVsbD09dGhpcy5fd29ya2VyJiZ0aGlzLl9kaXNwYXRjaC5jYWxsKCJpbml0RW5kIix0aGlzKSx0aGlzLl9hZnRlckluaXQmJnRoaXMuX2FmdGVySW5pdCgpfSl9Y2F0Y2h7fWlmKG51bGwhPXRoaXMuX3dvcmtlcil7'@; put 'dmFyIG49dGhpcy5fdml6VVJMLGU9dGhpczt0aGlzLl93b3JrZXJQb3J0Lm9ubWVzc2FnZT1mdW5jdGlvbih0KXtlLl93b3JrZXJDYWxsYmFja3Muc2hpZnQoKS5jYWxsKGUsdCl9LG4ubWF0Y2goL15odHRwcz86XC9cL3xeXC9cLy9pKXx8KG49bmV3IHdpbmRvdy5VUkwobixkb2N1bWVudC5s'@; put 'b2NhdGlvbi5ocmVmKS5ocmVmKSxENGUuY2FsbCh0aGlzLHt0eXBlOiJsYXlvdXQiLGRvdDoiIixlbmdpbmU6ImRvdCIsdml6VVJMOm59LGZ1bmN0aW9uKHQpe30pLEQ0ZS5jYWxsKHRoaXMse3R5cGU6InZlcnNpb24ifSxmdW5jdGlvbih0KXsidmVyc2lvbiI9PT10LmRhdGEudHlwZSYmKGUu'@; put 'X2dyYXBodml6VmVyc2lvbj10LmRhdGEudmVyc2lvbixlLl9kaXNwYXRjaC5jYWxsKCJpbml0RW5kIix0aGlzKSl9KX19ZnVuY3Rpb24gRDRlKG4sZSl7dGhpcy5fd29ya2VyQ2FsbGJhY2tzLnB1c2goZSksdGhpcy5fd29ya2VyUG9ydC5wb3N0TWVzc2FnZShuKX1mdW5jdGlvbiAkZm4obixl'@; put 'KXt2YXIgdD10aGlzLl9vcHRpb25zLmtleU1vZGUscj10aGlzLl9vcHRpb25zLnR3ZWVuUGF0aHMsaT10aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzO2lmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbiYmdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbi5p'@; put 'bmNsdWRlcygiJSIpKXZhciBvPSt0aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uLnNwbGl0KCIlIilbMF0vMTAwLGE9dGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbi5pbmNsdWRlcygiJSIpO2Vsc2Ugbz10aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uLGE9ITE7dmFyIGw9dGhpcy5f'@; put 'b3B0aW9ucy5ncm93RW50ZXJpbmdFZGdlcyx1PXt9LGc9dGhpcy5fZGljdGlvbmFyeXx8e30sRT17fSxPPXRoaXMuX25vZGVEaWN0aW9uYXJ5fHx7fTtmdW5jdGlvbiBXZSgkbixUcj0wLHJpKXsoZnVuY3Rpb24gWigkbixUcil7dmFyIHJpPSRuLnRhZztpZigiaW5kZXgiPT10KSRuLmtleT1U'@; put 'cjtlbHNlIGlmKCIjIiE9cmlbMF0paWYoImlkIj09dCkkbi5rZXk9JG4uYXR0cmlidXRlcy5pZDtlbHNlIGlmKCJ0aXRsZSI9PXQpe3ZhciBmbj0kbi5jaGlsZHJlbi5maW5kKGZ1bmN0aW9uKHlyKXtyZXR1cm4idGl0bGUiPT15ci50YWd9KTtmbiYmKCRuLmtleT1mbi5jaGlsZHJlbi5sZW5n'@; put 'dGg+MD9mbi5jaGlsZHJlblswXS50ZXh0OiIiKX1udWxsPT0kbi5rZXkmJihpJiYoImVsbGlwc2UiPT1yaXx8InBvbHlnb24iPT1yaSkmJihyaT0icGF0aCIpLCRuLmtleT1yaSsiLSIrVHIpfSkoJG4sVHIpLGZ1bmN0aW9uIGVlKCRuLFRyKXskbi5pZD0oVHI/VHIuaWQrIi4iOiIiKSskbi5r'@; put 'ZXl9KCRuLHJpKTt2YXIgeXI9Z1skbi5pZF07KGZ1bmN0aW9uIHZlKCRuKXt1WyRuLmlkXT0kbn0pKCRuKSxmdW5jdGlvbiBNZSgkbixUcil7aSYmJG4uaWQgaW4gZyYmKCJwb2x5Z29uIj09VHIudGFnfHwiZWxsaXBzZSI9PVRyLnRhZ3x8InBhdGgiPT1Uci50YWcpJiYoVHIudGFnIT0kbi50'@; put 'YWd8fCJwb2x5Z29uIj09JG4udGFnKSYmKCJwYXRoIiE9VHIudGFnJiYoJG4uYWx0ZXJuYXRpdmVPbGQ9YyRlKFRyLCRuKSksInBhdGgiIT0kbi50YWcmJigkbi5hbHRlcm5hdGl2ZU5ldz1jJGUoJG4sVHIpKSl9KCRuLHlyKSxmdW5jdGlvbiBIZSgkbixUcil7aWYociYmVHImJigicGF0aCI9'@; put 'PVRyLnRhZ3x8JG4uYWx0ZXJuYXRpdmVPbGQmJiJwYXRoIj09JG4uYWx0ZXJuYXRpdmVPbGQudGFnKSl7dmFyIHJpPSgkbi5hbHRlcm5hdGl2ZU5ld3x8JG4pLmF0dHJpYnV0ZXMuZDtpZigkbi5hbHRlcm5hdGl2ZU9sZCl2YXIgZm49QzRlKCRuLmFsdGVybmF0aXZlT2xkKTtlbHNlIGZuPUM0'@; put 'ZShUcik7KCRuLmFsdGVybmF0aXZlT2xkfHwoJG4uYWx0ZXJuYXRpdmVPbGQ9e30pKS5wb2ludHM9ZnVuY3Rpb24gdWZuKG4sZSx0LHIpe2NvbnN0IGk9bixvPWkuY2xvbmVOb2RlKCksYT1pLmdldFRvdGFsTGVuZ3RoKCksbD0oby5zZXRBdHRyaWJ1dGUoImQiLGUpLG8pLmdldFRvdGFsTGVu'@; put 'Z3RoKCksdT1bMF07bGV0IGc9MDtjb25zdCBFPXI/dDp0L01hdGgubWF4KGEsbCk7Zm9yKDsoZys9RSk8MTspdS5wdXNoKGcpO3JldHVybiB1LnB1c2goMSksdS5tYXAoZnVuY3Rpb24oWil7Y29uc3QgZWU9aS5nZXRQb2ludEF0TGVuZ3RoKFoqYSksdmU9by5nZXRQb2ludEF0TGVuZ3RoKFoq'@; put 'bCk7cmV0dXJuW1tlZS54LGVlLnldLFt2ZS54LHZlLnldXX0pfShmbixyaSxvLGEpfX0oJG4seXIpO3ZhciBBbj17fTskbi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKEhyKXt2YXIgdGk9SHIudGFnOygiZWxsaXBzZSI9PXRpfHwicG9seWdvbiI9PXRpKSYmKHRpPSJwYXRoIiksbnVsbD09'@; put 'QW5bdGldJiYoQW5bdGldPTApLFdlKEhyLEFuW3RpXSsrLCRuKX0pfWZ1bmN0aW9uIEF0KCRuKXsoZnVuY3Rpb24gYXQoJG4pe2lmKGwmJiRuLnBhcmVudCYmIm5vZGUiPT0kbi5wYXJlbnQuYXR0cmlidXRlcy5jbGFzcyYmInRpdGxlIj09JG4udGFnKXtpZigkbi5jaGlsZHJlbi5sZW5ndGg+'@; put 'MCl2YXIgZm49JG4uY2hpbGRyZW5bMF0udGV4dDtlbHNlIGZuPSIiO0VbZm5dPSRuLnBhcmVudH19KSgkbiksZnVuY3Rpb24gQ3QoJG4pe3ZhciByaT0kbi50YWc7aWYobCYmIWdbJG4uaWRdJiYkbi5wYXJlbnQmJm4kZSgkbikmJigicGF0aCI9PXJpfHwicG9seWdvbiI9PXJpKSl7aWYoInBv'@; put 'bHlnb24iPT1yaSl7dmFyIHlyPSRuLnBhcmVudC5jaGlsZHJlbi5maW5kKGZ1bmN0aW9uKGFvKXtyZXR1cm4icGF0aCI9PWFvLnRhZ30pO3lyJiYoJG4udG90YWxMZW5ndGg9eXIudG90YWxMZW5ndGgpfXZhciBBbj1mdW5jdGlvbiBmZm4obil7cmV0dXJuIGZ1bmN0aW9uIGhmbihuKXtyZXR1'@; put 'cm4iZWRnZSI9PW4ucGFyZW50LmF0dHJpYnV0ZXMuY2xhc3M/bi5wYXJlbnQ6bi5wYXJlbnQucGFyZW50LnBhcmVudH0obikuY2hpbGRyZW4uZmluZChmdW5jdGlvbihlKXtyZXR1cm4idGl0bGUiPT1lLnRhZ30pfSgkbiksSHI9QW4uY2hpbGRyZW5bMF0sdGk9SHIudGV4dC5zcGxpdCgiLT4i'@; put 'KTsyIT10aS5sZW5ndGgmJih0aT1Ici50ZXh0LnNwbGl0KCItLSIpKTt2YXIgZnI9dGlbMF0sZWk9RVtmcl07aWYoT2JqZWN0Lmhhc093bihPLGZyKSl7dmFyIFBvPU9bZnJdO2lmKCh4aT1laS5jaGlsZHJlbi5maW5kSW5kZXgoZnVuY3Rpb24oYW8sdXQpe3JldHVybiJnIj09YW8udGFnfSkp'@; put 'Pj0wKXt2YXIgSG89ZWkuY2hpbGRyZW5beGldLmNoaWxkcmVuLmZpbmRJbmRleChmdW5jdGlvbihhbyx1dCl7cmV0dXJuImEiPT1hby50YWd9KTtlaT1laS5jaGlsZHJlblt4aV0uY2hpbGRyZW5bSG9dfSh4aT1Qby5jaGlsZHJlbi5maW5kSW5kZXgoZnVuY3Rpb24oYW8sdXQpe3JldHVybiJn'@; put 'Ij09YW8udGFnfSkpPj0wJiYoSG89UG8uY2hpbGRyZW5beGldLmNoaWxkcmVuLmZpbmRJbmRleChmdW5jdGlvbih1dCxIdCl7cmV0dXJuImEiPT11dC50YWd9KSxQbz1Qby5jaGlsZHJlblt4aV0uY2hpbGRyZW5bSG9dKTtmb3IodmFyIFRvPWVpLmNoaWxkcmVuLHhpPTA7eGk8VG8ubGVuZ3Ro'@; put 'O3hpKyspaWYoInBvbHlnb24iPT1Ub1t4aV0udGFnfHwiZWxsaXBzZSI9PVRvW3hpXS50YWd8fCJwYXRoIj09VG9beGldLnRhZ3x8InRleHQiPT1Ub1t4aV0udGFnKXt2YXIgd3M9VG9beGldO2JyZWFrfXZhciB0cz1Qby5jaGlsZHJlbjtmb3IoeGk9MDt4aTx0cy5sZW5ndGg7eGkrKylpZigi'@; put 'cG9seWdvbiI9PXRzW3hpXS50YWd8fCJlbGxpcHNlIj09dHNbeGldLnRhZ3x8InBhdGgiPT10c1t4aV0udGFnfHwidGV4dCI9PXRzW3hpXS50YWcpe3ZhciBrYT10c1t4aV07YnJlYWt9JG4ub2Zmc2V0PWthJiZ3cz97eDprYS5jZW50ZXIueC13cy5jZW50ZXIueCx5OmthLmNlbnRlci55LXdz'@; put 'LmNlbnRlci55fTp7eDowLHk6MH19fX0oJG4pLCRuLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oVHIpe0F0KFRyKX0pfXRoaXMuX2Rpc3BhdGNoLmNhbGwoImxheW91dEVuZCIsdGhpcyk7dmFyIEt0PUJsKGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kKCJkaXYi'@; put 'KSxnbj0obmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhuLCJpbWFnZS9zdmcreG1sIik7S3QuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIGduLmRvY3VtZW50RWxlbWVudH0pO3ZhciBDbj1xQyhLdC5zZWxlY3QoInN2ZyIpKTt0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRh'@; put 'RXh0cmFjdEVuZCIsdGhpcyksV2UoQ24pLHRoaXMuX2Rpc3BhdGNoLmNhbGwoImRhdGFQcm9jZXNzUGFzczFFbmQiLHRoaXMpLEF0KENuKSx0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRhUHJvY2Vzc1Bhc3MyRW5kIix0aGlzKSx0aGlzLl9kYXRhPUNuLHRoaXMuX2RpY3Rpb25hcnk9dSx0aGlz'@; put 'Ll9ub2RlRGljdGlvbmFyeT1FLHRoaXMuX2V4dHJhY3REYXRhPWZ1bmN0aW9uKCRuLFRyLHJpKXt2YXIgZm49cUMoJG4pO3JldHVybiBXZShmbixUcixyaSksQXQoZm4pLGZufSx0aGlzLl9idXN5PSExLHRoaXMuX2Rpc3BhdGNoLmNhbGwoImRhdGFQcm9jZXNzRW5kIix0aGlzKSxlJiZlLmNh'@; put 'bGwodGhpcyksdGhpcy5fcXVldWUubGVuZ3RoPjAmJnRoaXMuX3F1ZXVlLnNoaWZ0KCkuY2FsbCh0aGlzKX1mdW5jdGlvbiAkSyhuLGUpe2lmKCFpc0Zpbml0ZShuKXx8MD09PW4pcmV0dXJuIG51bGw7dmFyIHQ9KG49ZT9uLnRvRXhwb25lbnRpYWwoZS0xKTpuLnRvRXhwb25lbnRpYWwoKSku'@; put 'aW5kZXhPZigiZSIpLHI9bi5zbGljZSgwLHQpO3JldHVybltyLmxlbmd0aD4xP3JbMF0rci5zbGljZSgyKTpyLCtuLnNsaWNlKHQrMSldfXZhciBxSyx5M249L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyh+KT8oW2EteiVdKT8kL2k7'@; put 'ZnVuY3Rpb24gTDRlKG4pe2lmKCEoZT15M24uZXhlYyhuKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIituKTt2YXIgZTtyZXR1cm4gbmV3IE80ZSh7ZmlsbDplWzFdLGFsaWduOmVbMl0sc2lnbjplWzNdLHN5bWJvbDplWzRdLHplcm86ZVs1XSx3aWR0aDplWzZdLGNvbW1h'@; put 'OmVbN10scHJlY2lzaW9uOmVbOF0mJmVbOF0uc2xpY2UoMSksdHJpbTplWzldLHR5cGU6ZVsxMF19KX1mdW5jdGlvbiBPNGUobil7dGhpcy5maWxsPXZvaWQgMD09PW4uZmlsbD8iICI6bi5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09bi5hbGlnbj8iPiI6bi5hbGlnbisiIix0aGlzLnNp'@; put 'Z249dm9pZCAwPT09bi5zaWduPyItIjpuLnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09bi5zeW1ib2w/IiI6bi5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhbi56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09bi53aWR0aD92b2lkIDA6K24ud2lkdGgsdGhpcy5jb21tYT0hIW4uY29tbWEsdGhp'@; put 'cy5wcmVjaXNpb249dm9pZCAwPT09bi5wcmVjaXNpb24/dm9pZCAwOituLnByZWNpc2lvbix0aGlzLnRyaW09ISFuLnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PW4udHlwZT8iIjpuLnR5cGUrIiJ9ZnVuY3Rpb24gdSRlKG4sZSl7dmFyIHQ9JEsobixlKTtpZighdClyZXR1cm4gbisiIjt2YXIg'@; put 'cj10WzBdLGk9dFsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrcjpyLmxlbmd0aD5pKzE/ci5zbGljZSgwLGkrMSkrIi4iK3Iuc2xpY2UoaSsxKTpyK25ldyBBcnJheShpLXIubGVuZ3RoKzIpLmpvaW4oIjAiKX1MNGUucHJvdG90eXBlPU80ZS5wcm90b3R5cGUs'@; put 'TzRlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/'@; put 'IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O2NvbnN0IGQkZT17IiUiOihuLGUpPT4oMTAwKm4pLnRvRml4ZWQoZSksYjpuPT5NYXRoLnJvdW5kKG4pLnRvU3Ry'@; put 'aW5nKDIpLGM6bj0+bisiIixkOmZ1bmN0aW9uIGczbihuKXtyZXR1cm4gTWF0aC5hYnMobj1NYXRoLnJvdW5kKG4pKT49MWUyMT9uLnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6bi50b1N0cmluZygxMCl9LGU6KG4sZSk9Pm4udG9FeHBvbmVudGlhbChlKSxmOihuLGUp'@; put 'PT5uLnRvRml4ZWQoZSksZzoobixlKT0+bi50b1ByZWNpc2lvbihlKSxvOm49Pk1hdGgucm91bmQobikudG9TdHJpbmcoOCkscDoobixlKT0+dSRlKDEwMCpuLGUpLHI6dSRlLHM6ZnVuY3Rpb24gdzNuKG4sZSl7dmFyIHQ9JEsobixlKTtpZighdClyZXR1cm4gcUs9dm9pZCAwLG4udG9QcmVj'@; put 'aXNpb24oZSk7dmFyIHI9dFswXSxpPXRbMV0sbz1pLShxSz0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkpKzEsYT1yLmxlbmd0aDtyZXR1cm4gbz09PWE/cjpvPmE/cituZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/ci5zbGljZSgwLG8pKyIuIityLnNs'@; put 'aWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpKyRLKG4sTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOm49Pk1hdGgucm91bmQobikudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkseDpuPT5NYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KX07ZnVuY3Rpb24gaCRlKG4pe3JldHVy'@; put 'biBufXZhciBLSyxEbSxmJGU9QXJyYXkucHJvdG90eXBlLm1hcCxwJGU9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceGI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07IWZ1bmN0aW9uIEUzbihuKXtLSz1mdW5jdGlvbiBDM24obil7dmFyIGU9dm9pZCAwPT09'@; put 'bi5ncm91cGluZ3x8dm9pZCAwPT09bi50aG91c2FuZHM/aCRlOmZ1bmN0aW9uIHYzbihuLGUpe3JldHVybiBmdW5jdGlvbih0LHIpe2Zvcih2YXIgaT10Lmxlbmd0aCxvPVtdLGE9MCxsPW5bMF0sdT0wO2k+MCYmbD4wJiYodStsKzE+ciYmKGw9TWF0aC5tYXgoMSxyLXUpKSxvLnB1c2godC5z'@; put 'dWJzdHJpbmcoaS09bCxpK2wpKSwhKCh1Kz1sKzEpPnIpKTspbD1uW2E9KGErMSklbi5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0oZiRlLmNhbGwobi5ncm91cGluZyxOdW1iZXIpLG4udGhvdXNhbmRzKyIiKSx0PXZvaWQgMD09PW4uY3VycmVuY3k/IiI6bi5jdXJyZW5j'@; put 'eVswXSsiIixyPXZvaWQgMD09PW4uY3VycmVuY3k/IiI6bi5jdXJyZW5jeVsxXSsiIixpPXZvaWQgMD09PW4uZGVjaW1hbD8iLiI6bi5kZWNpbWFsKyIiLG89dm9pZCAwPT09bi5udW1lcmFscz9oJGU6ZnVuY3Rpb24gXzNuKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNl'@; put 'KC9bMC05XS9nLGZ1bmN0aW9uKHQpe3JldHVybiBuWyt0XX0pfX0oZiRlLmNhbGwobi5udW1lcmFscyxTdHJpbmcpKSxhPXZvaWQgMD09PW4ucGVyY2VudD8iJSI6bi5wZXJjZW50KyIiLGw9dm9pZCAwPT09bi5taW51cz8iXHUyMjEyIjpuLm1pbnVzKyIiLHU9dm9pZCAwPT09bi5uYW4/Ik5h'@; put 'TiI6bi5uYW4rIiI7ZnVuY3Rpb24gZyhPLFope3ZhciBlZT0oTz1MNGUoTykpLmZpbGwsdmU9Ty5hbGlnbixNZT1PLnNpZ24sSGU9Ty5zeW1ib2wsV2U9Ty56ZXJvLGF0PU8ud2lkdGgsQ3Q9Ty5jb21tYSxBdD1PLnByZWNpc2lvbixLdD1PLnRyaW0scXQ9Ty50eXBlOyJuIj09PXF0PyhDdD0h'@; put 'MCxxdD0iZyIpOmQkZVtxdF18fCh2b2lkIDA9PT1BdCYmKEF0PTEyKSxLdD0hMCxxdD0iZyIpLChXZXx8IjAiPT09ZWUmJiI9Ij09PXZlKSYmKFdlPSEwLGVlPSIwIix2ZT0iPSIpO3ZhciBnbj0oWiYmdm9pZCAwIT09Wi5wcmVmaXg/Wi5wcmVmaXg6IiIpKygiJCI9PT1IZT90OiIjIj09PUhl'@; put 'JiYvW2JveFhdLy50ZXN0KHF0KT8iMCIrcXQudG9Mb3dlckNhc2UoKToiIiksVG49KCIkIj09PUhlP3I6L1slcF0vLnRlc3QocXQpP2E6IiIpKyhaJiZ2b2lkIDAhPT1aLnN1ZmZpeD9aLnN1ZmZpeDoiIiksQ249ZCRlW3F0XSxxcj0vW2RlZmdwcnMlXS8udGVzdChxdCk7ZnVuY3Rpb24gJG4o'@; put 'VHIpe3ZhciB5cixBbixIcixyaT1nbixmbj1UbjtpZigiYyI9PT1xdClmbj1DbihUcikrZm4sVHI9IiI7ZWxzZXt2YXIgdGk9KFRyPStUcik8MHx8MS9UcjwwO2lmKFRyPWlzTmFOKFRyKT91OkNuKE1hdGguYWJzKFRyKSxBdCksS3QmJihUcj1mdW5jdGlvbiBiM24obil7ZTpmb3IodmFyIGks'@; put 'ZT1uLmxlbmd0aCx0PTEscj0tMTt0PGU7Kyt0KXN3aXRjaChuW3RdKXtjYXNlIi4iOnI9aT10O2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPXQpLGk9dDticmVhaztkZWZhdWx0OmlmKCErblt0XSlicmVhayBlO3I+MCYmKHI9MCl9cmV0dXJuIHI+MD9uLnNsaWNlKDAscikrbi5zbGljZShpKzEp'@; put 'Om59KFRyKSksdGkmJjA9PStUciYmIisiIT09TWUmJih0aT0hMSkscmk9KHRpPyIoIj09PU1lP01lOmw6Ii0iPT09TWV8fCIoIj09PU1lPyIiOk1lKStyaSxmbj0oInMiIT09cXR8fGlzTmFOKFRyKXx8dm9pZCAwPT09cUs/IiI6cCRlWzgrcUsvM10pK2ZuKyh0aSYmIigiPT09TWU/IikiOiIi'@; put 'KSxxcilmb3IoeXI9LTEsQW49VHIubGVuZ3RoOysreXI8QW47KWlmKDQ4PihIcj1Uci5jaGFyQ29kZUF0KHlyKSl8fEhyPjU3KXtmbj0oNDY9PT1Icj9pK1RyLnNsaWNlKHlyKzEpOlRyLnNsaWNlKHlyKSkrZm4sVHI9VHIuc2xpY2UoMCx5cik7YnJlYWt9fUN0JiYhV2UmJihUcj1lKFRyLDEv'@; put 'MCkpO3ZhciBmcj1yaS5sZW5ndGgrVHIubGVuZ3RoK2ZuLmxlbmd0aCxlaT1mcjxhdD9uZXcgQXJyYXkoYXQtZnIrMSkuam9pbihlZSk6IiI7c3dpdGNoKEN0JiZXZSYmKFRyPWUoZWkrVHIsZWkubGVuZ3RoP2F0LWZuLmxlbmd0aDoxLzApLGVpPSIiKSx2ZSl7Y2FzZSI8IjpUcj1yaStUcitm'@; put 'bitlaTticmVhaztjYXNlIj0iOlRyPXJpK2VpK1RyK2ZuO2JyZWFrO2Nhc2UiXiI6VHI9ZWkuc2xpY2UoMCxmcj1laS5sZW5ndGg+PjEpK3JpK1RyK2ZuK2VpLnNsaWNlKGZyKTticmVhaztkZWZhdWx0OlRyPWVpK3JpK1RyK2ZufXJldHVybiBvKFRyKX1yZXR1cm4gQXQ9dm9pZCAwPT09QXQ/'@; put 'NjovW2dwcnNdLy50ZXN0KHF0KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLEF0KSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxBdCkpLCRuLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE8rIiJ9LCRufXJldHVybntmb3JtYXQ6Zyxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gRShPLFope3ZhciBl'@; put 'ZT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihmdW5jdGlvbiBtM24obil7cmV0dXJuKG49JEsoTWF0aC5hYnMobikpKT9uWzFdOk5hTn0oWikvMykpKSx2ZT1NYXRoLnBvdygxMCwtZWUpLE1lPWcoKChPPUw0ZShPKSkudHlwZT0iZiIsTykse3N1ZmZpeDpwJGVbOCtlZS8z'@; put 'XX0pO3JldHVybiBmdW5jdGlvbihIZSl7cmV0dXJuIE1lKHZlKkhlKX19fX0obiksRG09S0suZm9ybWF0fSh7dGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KTtjb25zdCBONGU9TWF0aC5QSSxGNGU9MipONGUsWEM9MWUtNix4M249RjRlLVhDO2Z1bmN0aW9u'@; put 'IGckZShuKXt0aGlzLl8rPW5bMF07Zm9yKGxldCBlPTEsdD1uLmxlbmd0aDtlPHQ7KytlKXRoaXMuXys9YXJndW1lbnRzW2VdK25bZV19Y2xhc3MgUDRle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIiLHRoaXMuX2FwcGVu'@; put 'ZD1udWxsPT1lP2ckZTpmdW5jdGlvbiBBM24obil7bGV0IGU9TWF0aC5mbG9vcihuKTtpZighKGU+PTApKXRocm93IG5ldyBFcnJvcihgaW52YWxpZCBkaWdpdHM6ICR7bn1gKTtpZihlPjE1KXJldHVybiBnJGU7Y29uc3QgdD0xMCoqZTtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5fKz1yWzBd'@; put 'O2ZvcihsZXQgaT0xLG89ci5sZW5ndGg7aTxvOysraSl0aGlzLl8rPU1hdGgucm91bmQoYXJndW1lbnRzW2ldKnQpL3QrcltpXX19KGUpfW1vdmVUbyhlLHQpe3RoaXMuX2FwcGVuZGBNJHt0aGlzLl94MD10aGlzLl94MT0rZX0sJHt0aGlzLl95MD10aGlzLl95MT0rdH1gfWNsb3NlUGF0aCgp'@; put 'e251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuX2FwcGVuZGBaYCl9bGluZVRvKGUsdCl7dGhpcy5fYXBwZW5kYEwke3RoaXMuX3gxPStlfSwke3RoaXMuX3kxPSt0fWB9cXVhZHJhdGljQ3VydmVUbyhlLHQscixpKXt0aGlzLl9hcHBl'@; put 'bmRgUSR7K2V9LCR7K3R9LCR7dGhpcy5feDE9K3J9LCR7dGhpcy5feTE9K2l9YH1iZXppZXJDdXJ2ZVRvKGUsdCxyLGksbyxhKXt0aGlzLl9hcHBlbmRgQyR7K2V9LCR7K3R9LCR7K3J9LCR7K2l9LCR7dGhpcy5feDE9K299LCR7dGhpcy5feTE9K2F9YH1hcmNUbyhlLHQscixpLG8pe2lmKGU9'@; put 'K2UsdD0rdCxyPStyLGk9K2ksKG89K28pPDApdGhyb3cgbmV3IEVycm9yKGBuZWdhdGl2ZSByYWRpdXM6ICR7b31gKTtsZXQgYT10aGlzLl94MSxsPXRoaXMuX3kxLHU9ci1lLGc9aS10LEU9YS1lLE89bC10LFo9RSpFK08qTztpZihudWxsPT09dGhpcy5feDEpdGhpcy5fYXBwZW5kYE0ke3Ro'@; put 'aXMuX3gxPWV9LCR7dGhpcy5feTE9dH1gO2Vsc2UgaWYoWj5YQylpZihNYXRoLmFicyhPKnUtZypFKT5YQyYmbyl7bGV0IGVlPXItYSx2ZT1pLWwsTWU9dSp1K2cqZyxIZT1lZSplZSt2ZSp2ZSxXZT1NYXRoLnNxcnQoTWUpLGF0PU1hdGguc3FydChaKSxDdD1vKk1hdGgudGFuKChONGUtTWF0'@; put 'aC5hY29zKChNZStaLUhlKS8oMipXZSphdCkpKS8yKSxBdD1DdC9hdCxLdD1DdC9XZTtNYXRoLmFicyhBdC0xKT5YQyYmdGhpcy5fYXBwZW5kYEwke2UrQXQqRX0sJHt0K0F0Kk99YCx0aGlzLl9hcHBlbmRgQSR7b30sJHtvfSwwLDAsJHsrKE8qZWU+RSp2ZSl9LCR7dGhpcy5feDE9ZStLdCp1'@; put 'fSwke3RoaXMuX3kxPXQrS3QqZ31gfWVsc2UgdGhpcy5fYXBwZW5kYEwke3RoaXMuX3gxPWV9LCR7dGhpcy5feTE9dH1gfWFyYyhlLHQscixpLG8sYSl7aWYoZT0rZSx0PSt0LGE9ISFhLChyPStyKTwwKXRocm93IG5ldyBFcnJvcihgbmVnYXRpdmUgcmFkaXVzOiAke3J9YCk7bGV0IGw9cipN'@; put 'YXRoLmNvcyhpKSx1PXIqTWF0aC5zaW4oaSksZz1lK2wsRT10K3UsTz0xXmEsWj1hP2ktbzpvLWk7bnVsbD09PXRoaXMuX3gxP3RoaXMuX2FwcGVuZGBNJHtnfSwke0V9YDooTWF0aC5hYnModGhpcy5feDEtZyk+WEN8fE1hdGguYWJzKHRoaXMuX3kxLUUpPlhDKSYmdGhpcy5fYXBwZW5kYEwk'@; put 'e2d9LCR7RX1gLHImJihaPDAmJihaPVolRjRlK0Y0ZSksWj54M24/dGhpcy5fYXBwZW5kYEEke3J9LCR7cn0sMCwxLCR7T30sJHtlLWx9LCR7dC11fUEke3J9LCR7cn0sMCwxLCR7T30sJHt0aGlzLl94MT1nfSwke3RoaXMuX3kxPUV9YDpaPlhDJiZ0aGlzLl9hcHBlbmRgQSR7cn0sJHtyfSww'@; put 'LCR7KyhaPj1ONGUpfSwke099LCR7dGhpcy5feDE9ZStyKk1hdGguY29zKG8pfSwke3RoaXMuX3kxPXQrcipNYXRoLnNpbihvKX1gKX1yZWN0KGUsdCxyLGkpe3RoaXMuX2FwcGVuZGBNJHt0aGlzLl94MD10aGlzLl94MT0rZX0sJHt0aGlzLl95MD10aGlzLl95MT0rdH1oJHtyPStyfXYkeytp'@; put 'fWgkey1yfVpgfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX319ZnVuY3Rpb24gbSRlKCl7cmV0dXJuIG5ldyBQNGV9ZnVuY3Rpb24gazNuKG4sZSx0LHIpe3JldHVybiBlPS1lLHI9LXIsW24sZV09W24qdC1lKnIsbipyK2UqdF0sW24sZT0tZV19ZnVuY3Rpb24gdiRlKG4sZSx0LHIsaSxvLGEp'@; put 'e3ZhciB1PXFDKHckZS5jYWxsKHRoaXMsbykpO24uZGF0YShbdV0pLEFQLmNhbGwobi5ub2RlKCksdSksXyRlKG4sZSx0LHIsaSxvLGEpfWZ1bmN0aW9uIF8kZShuLGUsdCxyLGksbyxhKXt2YXIgbD1hLnNob3J0ZW5pbmd8fDAsTz1bWzAsLTMuNV0sWzEwLDBdLFswLDMuNV0sWzAsLTMuNV1d'@; put 'LFo9ci1lLGVlPWktdCx2ZT1NYXRoLnNxcnQoWipaK2VlKmVlKTtpZigwPT12ZSl2YXIgTWU9MSxIZT0wO2Vsc2UgTWU9Wi92ZSxIZT1lZS92ZTtpZihyPWUrKHZlLWwtMTAtLjEpKk1lLGk9dCsodmUtbC0xMC0uMSkqSGUsby5VUkx8fG8udG9vbHRpcCl2YXIgV2U9bi5zZWxlY3RXaXRob3V0'@; put 'RGF0YVByb3BhZ2F0aW9uKCJnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiYSIpLGF0PVdlLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInBhdGgiKSxDdD1XZS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwb2x5Z29uIik7ZWxzZSBhdD1uLnNlbGVjdFdpdGhv'@; put 'dXREYXRhUHJvcGFnYXRpb24oInBhdGgiKSxDdD1uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInBvbHlnb24iKTt2YXIgQXQ9bSRlKCk7QXQubW92ZVRvKGUsdCksQXQubGluZVRvKHIsaSksYXQuYXR0cigiZCIsQXQpLHI9ZSsodmUtbC0xMCkqTWUsaT10Kyh2ZS1sLTEwKSpIZTtm'@; put 'b3IodmFyIEt0PTA7S3Q8Ty5sZW5ndGg7S3QrKylPW0t0XT1rM24oKHF0PU9bS3RdKVswXSxxdFsxXSxNZSxIZSk7Zm9yKEt0PTA7S3Q8Ty5sZW5ndGg7S3QrKylPW0t0XT1bcisocXQ9T1tLdF0pWzBdLGkrcXRbMV1dO3ZhciBnbj1bXTtmb3IoS3Q9MDtLdDxPLmxlbmd0aDtLdCsrKXt2YXIg'@; put 'cXQ7Z24ucHVzaCgocXQ9T1tLdF0pLmpvaW4oIiwiKSl9dmFyIFRuPWduLmpvaW4oIiAiKTtyZXR1cm4gQ3QuYXR0cigicG9pbnRzIixUbiksdGhpc31mdW5jdGlvbiB5JGUoKXtyZXR1cm4gdGhpcy5fZHJhd25FZGdlPyh0aGlzLl9kcmF3bkVkZ2UuZy5yZW1vdmUoKSx0aGlzLl9kcmF3bkVk'@; put 'Z2U9bnVsbCx0aGlzKTp0aGlzfWZ1bmN0aW9uIGIkZSgpe3JldHVybiB0aGlzLl9kcmF3bkVkZ2U/dGhpcy5fZHJhd25FZGdlLmc6QmwobnVsbCl9ZnVuY3Rpb24gdyRlKG4pe3ZhciBlPSIiO2Zvcih2YXIgdCBvZiBPYmplY3Qua2V5cyhuKSludWxsIT1uW3RdJiYoZSs9JyAiJyt0KyciPSIn'@; put 'K25bdF0rJyInKTt2YXIgaT10aGlzLmxheW91dFN5bmMoImRpZ3JhcGgge2EgLT4gYiBbIitlKyJdfSIsInN2ZyIsImRvdCIpLGE9KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoaSwiaW1hZ2Uvc3ZnK3htbCIpO3JldHVybiBCbChkb2N1bWVudC5jcmVhdGVEb2N1bWVu'@; put 'dEZyYWdtZW50KCkpLmFwcGVuZChmdW5jdGlvbigpe3JldHVybiBhLmRvY3VtZW50RWxlbWVudH0pLnNlbGVjdCgiLmVkZ2UiKX1mdW5jdGlvbiBDJGUobixlLHQscixpLG8pe3ZhciBsPXFDKFQkZS5jYWxsKHRoaXMscixpKSk7cmV0dXJuIG4uZGF0YShbbF0pLEFQLmNhbGwobi5ub2RlKCks'@; put 'bCksUyRlKG4sZSx0LGkpLHRoaXN9ZnVuY3Rpb24gUyRlKG4sZSx0LHIsaSl7aWYoci5VUkx8fHIudG9vbHRpcCl2YXIgbz1uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJhIik7ZWxzZSBvPW47dmFyIGE9by5zZWxlY3RB'@; put 'bGwoImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksbD1uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRleHQiKTtpZigwIT1hLnNpemUoKSl7dmFyIHU9YS5ub2RlKCkuZ2V0QkJveCgpO3UuY3g9dS54K3Uud2lkdGgvMix1LmN5PXUueSt1LmhlaWdodC8yfWVsc2UgMCE9'@; put 'bC5zaXplKCkmJih1PXt4OitsLmF0dHIoIngiKSx5OitsLmF0dHIoInkiKSx3aWR0aDowLGhlaWdodDowLGN4OitsLmF0dHIoIngiKSxjeTorbC5hdHRyKCJ5Iil9KTtyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGcsRSl7dmFyIE89QmwodGhpcyk7aWYoTy5hdHRyKCJjeCIpKU8uYXR0cigiY3gi'@; put 'LGF5KGUpKS5hdHRyKCJjeSIsYXkodCkpO2Vsc2UgaWYoTy5hdHRyKCJwb2ludHMiKSl7dmFyIFo9Ty5hdHRyKCJwb2ludHMiKS50cmltKCk7Ty5hdHRyKCJwb2ludHMiLGZ1bmN0aW9uIHpmbihvLGUsdCl7dmFyIGkscj0oaT1vLnNwbGl0KCIgIikpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4g'@; put 'YS5zcGxpdCgiLCIpfSk7cmV0dXJuIHI9aS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuW2F5KCtlKyArYS5zcGxpdCgiLCIpWzBdKSxheSgrdCsgK2Euc3BsaXQoIiwiKVsxXSldfSksKGk9ci5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuam9pbigiLCIpfSkpLmpvaW4oIiAiKX0oWixlLXUuY3gs'@; put 'dC11LmN5KSl9ZWxzZXt2YXIgZWU9Ty5hdHRyKCJkIik7Ty5hdHRyKCJkIixmdW5jdGlvbiBXZm4obixlLHQpeyhvPW4uc3BsaXQoL1tBLVogXS8pKS5zaGlmdCgpO3ZhciByPW4uc3BsaXQoL1teW0EtWiBdKy8pLG89KG8ubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLnNwbGl0KCIsIil9KSxv'@; put 'Lm1hcChmdW5jdGlvbihhKXtyZXR1cm5bYXkoK2UrICthLnNwbGl0KCIsIilbMF0pLGF5KCt0KyArYS5zcGxpdCgiLCIpWzFdKV19KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuam9pbigiLCIpfSkpO3JldHVybiByLnJlZHVjZShmdW5jdGlvbihhLGwsdSl7cmV0dXJuIGEuY29uY2F0KGws'@; put 'b1t1XSl9LFtdKS5qb2luKCIiKX0oZWUsZS11LmN4LHQtdS5jeSkpfX0pLDAhPWwuc2l6ZSgpJiZsLmF0dHIoIngiLGF5KCtsLmF0dHIoIngiKStlLXUuY3gpKS5hdHRyKCJ5IixheSgrbC5hdHRyKCJ5IikrdC11LmN5KSksdGhpc31mdW5jdGlvbiBFJGUoKXtpZighdGhpcy5fZHJhd25Ob2Rl'@; put 'KXJldHVybiB0aGlzO3ZhciBuPXRoaXMuX2RyYXduTm9kZS5nO3JldHVybiBuLmVtcHR5KCl8fG4ucmVtb3ZlKCksdGhpcy5fZHJhd25Ob2RlPW51bGwsdGhpc31mdW5jdGlvbiBNJGUoKXtyZXR1cm4gdGhpcy5fZHJhd25Ob2RlP3RoaXMuX2RyYXduTm9kZS5nOkJsKG51bGwpfWZ1bmN0aW9u'@; put 'IFQkZShuLGUpe3ZhciB0PSIiO2Zvcih2YXIgciBvZiBPYmplY3Qua2V5cyhlKSludWxsIT1lW3JdJiYodCs9JyAiJytyKyciPSInK2Vbcl0rJyInKTt2YXIgbz10aGlzLmxheW91dFN5bmMoJ2dyYXBoIHsiJytuKyciIFsnK3QrIl19Iiwic3ZnIiwiZG90IiksbD0obmV3IHdpbmRvdy5ET01Q'@; put 'YXJzZXIpLnBhcnNlRnJvbVN0cmluZyhvLCJpbWFnZS9zdmcreG1sIik7cmV0dXJuIEJsKGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIGwuZG9jdW1lbnRFbGVtZW50fSkuc2VsZWN0KCIubm9kZSIpfWZ1bmN0aW9uIFhLKG4pe3Nl'@; put 'bGYuZG9jdW1lbnQ9e30sbi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihlKXtsZXQgdD1zZWxmWyJAaHBjYy1qcy93YXNtIl07bnVsbD09dCYmZS5kYXRhLnZpelVSTCYmKGltcG9ydFNjcmlwdHMoZS5kYXRhLnZpelVSTCksdD1zZWxmWyJAaHBjYy1qcy93YXNtIl0pLCJ2'@; put 'ZXJzaW9uIiE9ZS5kYXRhLnR5cGU/dC5HcmFwaHZpei5sb2FkKCkudGhlbihyPT57Y29uc3QgaT1yLmxheW91dChlLmRhdGEuZG90LCJzdmciLGUuZGF0YS5lbmdpbmUsZS5kYXRhLm9wdGlvbnMpO24ucG9zdE1lc3NhZ2UoaT97dHlwZToiZG9uZSIsc3ZnOml9OmUuZGF0YS52aXpVUkw/e3R5'@; put 'cGU6ImluaXQifTp7dHlwZToic2tpcCJ9KX0pLmNhdGNoKHI9PntuLnBvc3RNZXNzYWdlKHt0eXBlOiJlcnJvciIsZXJyb3I6ci5tZXNzYWdlfSl9KTp0LkdyYXBodml6LmxvYWQoKS50aGVuKHI9PntuLnBvc3RNZXNzYWdlKHt0eXBlOiJ2ZXJzaW9uIix2ZXJzaW9uOnIudmVyc2lvbigpfSl9'@; put 'KX0pfWZ1bmN0aW9uIEgzbigpe1hLKHNlbGYpfWZ1bmN0aW9uIFYzbigpe3NlbGYub25jb25uZWN0PWZ1bmN0aW9uKG4pe2NvbnN0IGU9bi5wb3J0c1swXTtYSyhlKSxlLnN0YXJ0KCl9fWZ1bmN0aW9uIEg0ZShuLGUpe2lmKHRoaXMuX29wdGlvbnM9e3VzZVdvcmtlcjohMCx1c2VTaGFyZWRX'@; put 'b3JrZXI6ITEsZW5naW5lOiJkb3QiLGtleU1vZGU6InRpdGxlIixmYWRlOiEwLHR3ZWVuUGF0aHM6ITAsdHdlZW5TaGFwZXM6ITAsY29udmVydEVxdWFsU2lkZWRQb2x5Z29uczohMCx0d2VlblByZWNpc2lvbjoxLGdyb3dFbnRlcmluZ0VkZ2VzOiEwLHpvb206ITAsem9vbVNjYWxlRXh0ZW50'@; put 'OlsuMSwxMF0sem9vbVRyYW5zbGF0ZUV4dGVudDpbWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSx3aWR0aDpudWxsLGhlaWdodDpudWxsLHNjYWxlOjEsZml0OiExfSxlIGluc3RhbmNlb2YgT2JqZWN0KWZvcih2YXIgdCBvZiBPYmplY3Qua2V5cyhlKSl0aGlzLl9vcHRpb25zW3RdPWVbdF07ZWxz'@; put 'ZSJib29sZWFuIj09dHlwZW9mIGUmJih0aGlzLl9vcHRpb25zLnVzZVdvcmtlcj1lKTt2YXIgcj10aGlzLl9vcHRpb25zLnVzZVdvcmtlcixpPXRoaXMuX29wdGlvbnMudXNlU2hhcmVkV29ya2VyO2lmKHR5cGVvZiBXb3JrZXI+InUiJiYocj0hMSksdHlwZW9mIFNoYXJlZFdvcmtlcj4idSIm'@; put 'JihpPSExKSxyfHxpKXt2YXIgYT1uNGUoInNjcmlwdCIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiJqYXZhc2NyaXB0L3dvcmtlciI9PUJsKHRoaXMpLmF0dHIoInR5cGUiKXx8QmwodGhpcykuYXR0cigic3JjIikmJkJsKHRoaXMpLmF0dHIoInNyYyIpLm1hdGNoKC8uKlwvQGhwY2MtanNc'@; put 'L3dhc20vKX0pOzA9PWEuc2l6ZSgpPyhjb25zb2xlLndhcm4oJ05vIHNjcmlwdCB0YWcgb2YgdHlwZSAiamF2YXNjcmlwdC93b3JrZXIiIHdhcyBmb3VuZCBhbmQgInVzZVdvcmtlciIgaXMgdHJ1ZS4gTm90IHVzaW5nIHdlYiB3b3JrZXIuJykscj0hMSxpPSExKToodGhpcy5fdml6VVJMPWEu'@; put 'YXR0cigic3JjIiksdGhpcy5fdml6VVJMfHwoY29uc29sZS53YXJuKCdObyAic3JjIiBhdHRyaWJ1dGUgb2Ygd2FzIGZvdW5kIG9uIHRoZSAiamF2YXNjcmlwdC93b3JrZXIiIHNjcmlwdCB0YWcgYW5kICJ1c2VXb3JrZXIiIGlzIHRydWUuIE5vdCB1c2luZyB3ZWIgd29ya2VyLicpLHI9ITEs'@; put 'aT0hMSkpfWlmKGkpe2NvbnN0IGc9ImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdDtiYXNlNjQsIitidG9hKFhLLnRvU3RyaW5nKCkrIigiK1Yzbi50b1N0cmluZygpKyIpKCkiKTt0aGlzLl93b3JrZXI9dGhpcy5fd29ya2VyPW5ldyBTaGFyZWRXb3JrZXIoZyksdGhpcy5fd29ya2VyUG9y'@; put 'dD10aGlzLl93b3JrZXIucG9ydCx0aGlzLl93b3JrZXJQb3J0Q2xvc2U9dGhpcy5fd29ya2VyLnBvcnQuY2xvc2UuYmluZCh0aGlzLl93b3JrZXJQb3J0KSx0aGlzLl93b3JrZXIucG9ydC5zdGFydCgpLHRoaXMuX3dvcmtlckNhbGxiYWNrcz1bXX1lbHNlIGlmKHIpe3ZhciBsPW5ldyBCbG9i'@; put 'KFtYSy50b1N0cmluZygpKyIoIitIM24udG9TdHJpbmcoKSsiKSgpIl0pLHU9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobCk7dGhpcy5fd29ya2VyPW5ldyBXb3JrZXIodSksdGhpcy5fd29ya2VyUG9ydD10aGlzLl93b3JrZXIsdGhpcy5fd29ya2VyUG9ydENsb3NlPXRoaXMuX3dvcmtl'@; put 'ci50ZXJtaW5hdGUuYmluZCh0aGlzLl93b3JrZXIpLHRoaXMuX3dvcmtlckNhbGxiYWNrcz1bXX1lbHNlIGwkZS5sb2FkKCkudGhlbigoZz0+e3RoaXMuX2dyYXBodml6VmVyc2lvbj1nLnZlcnNpb24oKX0pLmJpbmQodGhpcykpO3RoaXMuX3NlbGVjdGlvbj1uLHRoaXMuX2FjdGl2ZT0hMSx0'@; put 'aGlzLl9idXN5PSExLHRoaXMuX2pvYnM9W10sdGhpcy5fcXVldWU9W10sdGhpcy5fa2V5TW9kZXM9bmV3IFNldChbInRpdGxlIiwiaWQiLCJ0YWctaW5kZXgiLCJpbmRleCJdKSx0aGlzLl9pbWFnZXM9W10sdGhpcy5fdHJhbnNsYXRpb249dm9pZCAwLHRoaXMuX3NjYWxlPXZvaWQgMCx0aGlz'@; put 'Ll9ldmVudFR5cGVzPVsiaW5pdEVuZCIsInN0YXJ0IiwibGF5b3V0U3RhcnQiLCJsYXlvdXRFbmQiLCJkYXRhRXh0cmFjdEVuZCIsImRhdGFQcm9jZXNzUGFzczFFbmQiLCJkYXRhUHJvY2Vzc1Bhc3MyRW5kIiwiZGF0YVByb2Nlc3NFbmQiLCJyZW5kZXJTdGFydCIsInJlbmRlckVuZCIsInRy'@; put 'YW5zaXRpb25TdGFydCIsInRyYW5zaXRpb25FbmQiLCJyZXN0b3JlRW5kIiwiZW5kIiwiem9vbSJdLHRoaXMuX2Rpc3BhdGNoPXI0ZSguLi50aGlzLl9ldmVudFR5cGVzKSxZZm4uY2FsbCh0aGlzKSxuLm5vZGUoKS5fX2dyYXBodml6X189dGhpc31mdW5jdGlvbiBRSyhuLGUpe3JldHVybiBC'@; put 'bChuKS5ncmFwaHZpeihlKX1tJGUucHJvdG90eXBlPVA0ZS5wcm90b3R5cGUsSDRlLnByb3RvdHlwZT1RSy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkg0ZSxlbmdpbmU6ZnVuY3Rpb24gaTNuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLmVuZ2luZT1uLHRoaXN9LGFkZEltYWdlOmZ1bmN0aW9u'@; put 'IG8zbihuLGUsdCl7cmV0dXJuIHRoaXMuX2ltYWdlcy5wdXNoKHtwYXRoOm4sd2lkdGg6ZSxoZWlnaHQ6dH0pLHRoaXN9LGtleU1vZGU6ZnVuY3Rpb24gYTNuKG4pe2lmKCF0aGlzLl9rZXlNb2Rlcy5oYXMobikpdGhyb3cgRXJyb3IoIklsbGVnYWwga2V5TW9kZTogIituKTtpZihuIT10aGlz'@; put 'Ll9vcHRpb25zLmtleU1vZGUmJm51bGwhPXRoaXMuX2RhdGEpdGhyb3cgRXJyb3IoIlRvbyBsYXRlIHRvIGNoYW5nZSBrZXlNb2RlIik7cmV0dXJuIHRoaXMuX29wdGlvbnMua2V5TW9kZT1uLHRoaXN9LGZhZGU6ZnVuY3Rpb24gczNuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLmZhZGU9bix0'@; put 'aGlzfSx0d2VlblBhdGhzOmZ1bmN0aW9uIGwzbihuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50d2VlblBhdGhzPW4sdGhpc30sdHdlZW5TaGFwZXM6ZnVuY3Rpb24gYzNuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzPW4sbiYmKHRoaXMuX29wdGlvbnMudHdlZW5QYXRocz0h'@; put 'MCksdGhpc30sY29udmVydEVxdWFsU2lkZWRQb2x5Z29uczpmdW5jdGlvbiB1M24obil7cmV0dXJuIHRoaXMuX29wdGlvbnMuY29udmVydEVxdWFsU2lkZWRQb2x5Z29ucz1uLHRoaXN9LHR3ZWVuUHJlY2lzaW9uOmZ1bmN0aW9uIGQzbihuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50d2VlblBy'@; put 'ZWNpc2lvbj1uLHRoaXN9LGdyb3dFbnRlcmluZ0VkZ2VzOmZ1bmN0aW9uIGgzbihuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5ncm93RW50ZXJpbmdFZGdlcz1uLHRoaXN9LHpvb206ZnVuY3Rpb24gcmZuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLnpvb209bix0aGlzLl9vcHRpb25zLnpvb20m'@; put 'JiF0aGlzLl96b29tQmVoYXZpb3I/ZSRlLmNhbGwodGhpcyk6IXRoaXMuX29wdGlvbnMuem9vbSYmdGhpcy5fem9vbUJlaGF2aW9yJiYodGhpcy5fem9vbVNlbGVjdGlvbi5vbigiLnpvb20iLG51bGwpLHRoaXMuX3pvb21CZWhhdmlvcj1udWxsKSx0aGlzfSxyZXNldFpvb206ZnVuY3Rpb24g'@; put 'aWZuKG4pe3ZhciBlPXRoaXMuX3pvb21TZWxlY3Rpb247cmV0dXJuIG4mJihlPWUudHJhbnNpdGlvbihuKSksZS5jYWxsKHRoaXMuX3pvb21CZWhhdmlvci50cmFuc2Zvcm0sdGhpcy5fb3JpZ2luYWxUcmFuc2Zvcm0pLHRoaXN9LHpvb21CZWhhdmlvcjpmdW5jdGlvbiBzZm4oKXtyZXR1cm4g'@; put 'dGhpcy5fem9vbUJlaGF2aW9yfHxudWxsfSx6b29tU2VsZWN0aW9uOmZ1bmN0aW9uIGxmbigpe3JldHVybiB0aGlzLl96b29tU2VsZWN0aW9ufHxudWxsfSx6b29tU2NhbGVFeHRlbnQ6ZnVuY3Rpb24gb2ZuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLnpvb21TY2FsZUV4dGVudD1uLHRoaXN9'@; put 'LHpvb21UcmFuc2xhdGVFeHRlbnQ6ZnVuY3Rpb24gYWZuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLnpvb21UcmFuc2xhdGVFeHRlbnQ9bix0aGlzfSxyZW5kZXI6ZnVuY3Rpb24gcGZuKG4pe3JldHVybiB0aGlzLl9idXN5Pyh0aGlzLl9xdWV1ZS5wdXNoKHRoaXMucmVuZGVyLmJpbmQodGhp'@; put 'cyxuKSksdGhpcyk6KHRoaXMuX2Rpc3BhdGNoLmNhbGwoInJlbmRlclN0YXJ0Iix0aGlzKSx0aGlzLl90cmFuc2l0aW9uRmFjdG9yeT94SyhmdW5jdGlvbigpe3RoaXMuX3RyYW5zaXRpb249djRlKHRoaXMuX3RyYW5zaXRpb25GYWN0b3J5KCkpLHIkZS5jYWxsKHRoaXMsbil9LmJpbmQodGhp'@; put 'cyksMCk6ciRlLmNhbGwodGhpcyxuKSx0aGlzKX0sbGF5b3V0OmZ1bmN0aW9uIFpmbihuLGUsdCxyKXtpZih0aGlzLl93b3JrZXIpRDRlLmNhbGwodGhpcyx7dHlwZToibGF5b3V0Iixkb3Q6bixlbmdpbmU6ZSxvcHRpb25zOnR9LGZ1bmN0aW9uKG8pe3IuY2FsbCh0aGlzLG8uZGF0YSl9KTtl'@; put 'bHNlIHRyeXt2YXIgaT10aGlzLmxheW91dFN5bmMobiwic3ZnIixlLHQpO3IuY2FsbCh0aGlzLHt0eXBlOiJkb25lIixzdmc6aX0pfWNhdGNoKG8pe3IuY2FsbCh0aGlzLHt0eXBlOiJlcnJvciIsZXJyb3I6by5tZXNzYWdlfSl9fSxkb3Q6ZnVuY3Rpb24gR2ZuKG4sZSl7dmFyIHQ9dGhpcyxp'@; put 'PXRoaXMuX29wdGlvbnMuZW5naW5lLG89dGhpcy5faW1hZ2VzO3JldHVybiB0aGlzLl9kaXNwYXRjaC5jYWxsKCJzdGFydCIsdGhpcyksdGhpcy5fYnVzeT0hMCx0aGlzLl9kaXNwYXRjaC5jYWxsKCJsYXlvdXRTdGFydCIsdGhpcyksdGhpcy5fd29ya2VyfHxudWxsIT10aGlzLmxheW91dFN5'@; put 'bmM/KHRoaXMubGF5b3V0KG4saSx7aW1hZ2VzOm99LGZ1bmN0aW9uKGwpe3N3aXRjaChsLnR5cGUpe2Nhc2UiZXJyb3IiOmlmKCF0Ll9vbmVycm9yKXRocm93IGwuZXJyb3IubWVzc2FnZTt0Ll9vbmVycm9yKGwuZXJyb3IpO2JyZWFrO2Nhc2UiZG9uZSI6JGZuLmNhbGwodGhpcyxsLnN2Zyxl'@; put 'KX19KSx0aGlzKToodGhpcy5fYWZ0ZXJJbml0PXRoaXMuZG90LmJpbmQodGhpcyxuLGUpLHRoaXMpfSxkYXRhOmZ1bmN0aW9uIGRmbigpe3JldHVybiB0aGlzLl9kYXRhfHxudWxsfSxyZW5kZXJEb3Q6ZnVuY3Rpb24gcWZuKG4sZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5kb3QobixmdW5j'@; put 'dGlvbiByKCl7dC5yZW5kZXIoZSl9KSx0aGlzfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIEtmbihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEZ1bmN0aW9uP3RoaXMuX3RyYW5zaXRpb25GYWN0b3J5PW46dGhpcy5fdHJhbnNpdGlvbj12NGUobiksdGhpc30sYWN0aXZlOmZ1bmN0aW9uIFhmbihuKXt2'@; put 'YXIgdD10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIik7cmV0dXJuIDAhPXQuc2l6ZSgpP2Z1bmN0aW9uIE8ybihuLGUpe3ZhciByLGksdD1uLl9fdHJhbnNpdGlvbjtpZih0KWZvcihpIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsdClpZigocj10W2ld'@; put 'KS5zdGF0ZT4xJiZyLm5hbWU9PT1lKXJldHVybiBuZXcgZTgoW1tuXV0sTDJuLGUsK2kpO3JldHVybiBudWxsfSh0Lm5vZGUoKSxuKTpudWxsfSxvcHRpb25zOmZ1bmN0aW9uIFFmbihuKXtpZih0eXBlb2Ygbj4idSIpcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdGhpcy5fb3B0aW9ucyk7Zm9y'@; put 'KHZhciBlIG9mIE9iamVjdC5rZXlzKG4pKXRoaXMuX29wdGlvbnNbZV09bltlXTtyZXR1cm4gdGhpc30sd2lkdGg6ZnVuY3Rpb24gSmZuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLndpZHRoPW4sdGhpc30saGVpZ2h0OmZ1bmN0aW9uIGUzbihuKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5oZWln'@; put 'aHQ9bix0aGlzfSxzY2FsZTpmdW5jdGlvbiB0M24obil7cmV0dXJuIHRoaXMuX29wdGlvbnMuc2NhbGU9bix0aGlzfSxmaXQ6ZnVuY3Rpb24gbjNuKG4pe3JldHVybiB0aGlzLl9vcHRpb25zLmZpdD1uLHRoaXN9LGF0dHJpYnV0ZXI6ZnVuY3Rpb24gcjNuKG4pe3JldHVybiB0aGlzLl9hdHRy'@; put 'aWJ1dGVyPW4sdGhpc30sb246ZnVuY3Rpb24gZjNuKG4sZSl7cmV0dXJuIHRoaXMuX2Rpc3BhdGNoLm9uKG4sZSksdGhpc30sb25lcnJvcjpmdW5jdGlvbiBwM24obil7cmV0dXJuIHRoaXMuX29uZXJyb3I9bix0aGlzfSxsb2dFdmVudHM6ZnVuY3Rpb24gTTNuKG4pe3ZhciBlPURhdGUubm93'@; put 'KCksdD17fSxyPXRoaXMuX2V2ZW50VHlwZXMsaT1NYXRoLm1heCguLi5yLm1hcCh1PT51Lmxlbmd0aCkpO2ZvcihsZXQgdT0wO3U8ci5sZW5ndGg7dSsrKXtsZXQgZz1yW3VdO3RbZ109W107dmFyIGEsbCxvPXRoaXM7dGhpcy5vbihnKyIubG9nIixuP2Z1bmN0aW9uKCl7dmFyIEU9RGF0ZS5u'@; put 'b3coKSxPPXRbZ10ubGVuZ3RoO3RbZ10ucHVzaChFKTt2YXIgWj0iIjtpZihaKz0iRXZlbnQgIixaKz1EbSgiID4yIikodSkrIiAiLForPWcrIiAiLnJlcGVhdChpLWcubGVuZ3RoKSxaKz1EbSgiID41IikoRS1lKSsiICIsImluaXRFbmQiIT1nJiYoWis9RG0oIiA+NSIpKEUtdC5zdGFydFtP'@; put 'XSkpLCJkYXRhUHJvY2Vzc0VuZCI9PWcmJihaKz0iIHByZXBhcmUgICAgICAgICAgICAgICAgICIrRG0oIiA+NSIpKEUtdC5sYXlvdXRFbmRbT10pKSwicmVuZGVyRW5kIj09ZyYmby5fdHJhbnNpdGlvbiYmKForPSIgdHJhbnNpdGlvbiBzdGFydCBtYXJnaW4gIitEbSgiID41Iikoby5fdHJh'@; put 'bnNpdGlvbi5kZWxheSgpLShFLXQucmVuZGVyU3RhcnRbT10pKSxhPW8uX3RyYW5zaXRpb24uZGVsYXkoKSxsPW8uX3RyYW5zaXRpb24uZHVyYXRpb24oKSksInRyYW5zaXRpb25TdGFydCI9PWcpe3ZhciBlZT1FLXQucmVuZGVyU3RhcnRbT107Wis9IiB0cmFuc2l0aW9uIGRlbGF5ICAgICAg'@; put 'ICAiK0RtKCIgPjUiKShFLXQucmVuZGVyU3RhcnRbT10pLForPSIgZXhwZWN0ZWQgIitEbSgiID41IikoYSksWis9IiBkaWZmICIrRG0oIiA+NSIpKGVlLWEpfWlmKCJ0cmFuc2l0aW9uRW5kIj09Zyl7dmFyIHZlPUUtdC50cmFuc2l0aW9uU3RhcnRbT107Wis9IiB0cmFuc2l0aW9uIGR1cmF0'@; put 'aW9uICAgICAiK0RtKCIgPjUiKSh2ZSksWis9IiBleHBlY3RlZCAiK0RtKCIgPjUiKShsKSxaKz0iIGRpZmYgIitEbSgiID41IikodmUtbCl9Y29uc29sZS5sb2coWiksZT1FfTpudWxsKX1yZXR1cm4gdGhpc30sZGVzdHJveTpmdW5jdGlvbiBUM24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX3Nl'@; put 'bGVjdGlvbi5ub2RlKCkuX19ncmFwaHZpel9fLHRoaXMuX3dvcmtlciYmdGhpcy5fd29ya2VyUG9ydENsb3NlKCksdGhpc30sZHJhd0VkZ2U6ZnVuY3Rpb24gUjNuKG4sZSx0LHIsaSxvPXt9KXtpZigoaT1PYmplY3QuYXNzaWduKHt9LGkpKS5zdHlsZSYmaS5zdHlsZS5pbmNsdWRlcygiaW52'@; put 'aXMiKSl2YXIgYT1CbChudWxsKTtlbHNle3ZhciBnPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIiksTz1xQyh3JGUuY2FsbCh0aGlzLGkpKTthPWcuYXBwZW5kKCJnIikuZGF0YShbT10p'@; put 'LEFQLmNhbGwoYS5ub2RlKCksTyksdiRlLmNhbGwodGhpcyxhLG4sZSx0LHIsaSxvKX1yZXR1cm4gdGhpcy5fZHJhd25FZGdlPXtnOmEseDE6bix5MTplLHgyOnQseTI6cixhdHRyaWJ1dGVzOml9LHRoaXN9LHVwZGF0ZURyYXduRWRnZTpmdW5jdGlvbiBJM24obixlLHQscixpPXt9LG89e30p'@; put 'e2lmKCF0aGlzLl9kcmF3bkVkZ2UpdGhyb3cgRXJyb3IoIk5vIGVkZ2UgaGFzIGJlZW4gZHJhd24iKTt2YXIgYT10aGlzLl9kcmF3bkVkZ2UuZztyZXR1cm4gaT1PYmplY3QuYXNzaWduKHRoaXMuX2RyYXduRWRnZS5hdHRyaWJ1dGVzLGkpLHRoaXMuX2RyYXduRWRnZS54MT1uLHRoaXMuX2Ry'@; put 'YXduRWRnZS55MT1lLHRoaXMuX2RyYXduRWRnZS54Mj10LHRoaXMuX2RyYXduRWRnZS55Mj1yLCFhLmVtcHR5KCl8fGkuc3R5bGUmJmkuc3R5bGUuaW5jbHVkZXMoImludmlzIil8fChhPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RX'@; put 'aXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuYXBwZW5kKCJnIiksdGhpcy5fZHJhd25FZGdlLmc9YSksYS5lbXB0eSgpfHx2JGUuY2FsbCh0aGlzLGEsbixlLHQscixpLG8pLHRoaXN9LG1vdmVEcmF3bkVkZ2VFbmRQb2ludDpmdW5jdGlvbiBEM24obixlLHQ9e30pe2lmKCF0aGlzLl9kcmF3'@; put 'bkVkZ2UpdGhyb3cgRXJyb3IoIk5vIGVkZ2UgaGFzIGJlZW4gZHJhd24iKTt2YXIgcj10aGlzLl9kcmF3bkVkZ2UuZyxpPXRoaXMuX2RyYXduRWRnZS54MSxvPXRoaXMuX2RyYXduRWRnZS55MSxhPXRoaXMuX2RyYXduRWRnZS5hdHRyaWJ1dGVzO3JldHVybiB0aGlzLl9kcmF3bkVkZ2UueDI9'@; put 'bix0aGlzLl9kcmF3bkVkZ2UueTI9ZSxfJGUocixpLG8sbixlLGEsdCksdGhpc30saW5zZXJ0RHJhd25FZGdlOmZ1bmN0aW9uIEwzbihuKXtpZighdGhpcy5fZHJhd25FZGdlKXRocm93IEVycm9yKCJObyBlZGdlIGhhcyBiZWVuIGRyYXduIik7dmFyIGU9dGhpcy5fZHJhd25FZGdlLmc7aWYo'@; put 'ZS5lbXB0eSgpKXJldHVybiB0aGlzO2Uuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGl0bGUiKS50ZXh0KG4pO3ZhciBhPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIiksbD1h'@; put 'LmRhdHVtKCksdT10aGlzLl9leHRyYWN0RGF0YShlLGwuY2hpbGRyZW4ubGVuZ3RoLGEuZGF0dW0oKSk7cmV0dXJuIGwuY2hpbGRyZW4ucHVzaCh1KSxTNGUoZSx1KSx0aGlzLl9kcmF3bkVkZ2U9bnVsbCx0aGlzfSxyZW1vdmVEcmF3bkVkZ2U6eSRlLHJlbW92ZURyYXduRWRnZTp5JGUsZHJh'@; put 'd25FZGdlU2VsZWN0aW9uOmIkZSxkcmF3bkVkZ2VTZWxlY3Rpb246YiRlLGRyYXdOb2RlOmZ1bmN0aW9uIE8zbihuLGUsdCxyPXt9LGk9e30pe2lmKChyPU9iamVjdC5hc3NpZ24oe30scikpLnN0eWxlJiZyLnN0eWxlLmluY2x1ZGVzKCJpbnZpcyIpKXZhciBvPUJsKG51bGwpO2Vsc2V7dmFy'@; put 'IHU9dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKSxFPXFDKFQkZS5jYWxsKHRoaXMsdCxyKSk7bz11LmFwcGVuZCgiZyIpLmRhdGEoW0VdKSxBUC5jYWxsKG8ubm9kZSgpLEUpLEMkZS5j'@; put 'YWxsKHRoaXMsbyxuLGUsdCxyLGkpfXJldHVybiB0aGlzLl9kcmF3bk5vZGU9e2c6byxub2RlSWQ6dCx4Om4seTplLGF0dHJpYnV0ZXM6cn0sdGhpc30sdXBkYXRlRHJhd25Ob2RlOmZ1bmN0aW9uIE4zbihuLGUsdCxyPXt9LGk9e30pe2lmKCF0aGlzLl9kcmF3bk5vZGUpdGhyb3cgRXJyb3Io'@; put 'Ik5vIG5vZGUgaGFzIGJlZW4gZHJhd24iKTt2YXIgbz10aGlzLl9kcmF3bk5vZGUuZztyZXR1cm4gbnVsbD09dCYmKHQ9dGhpcy5fZHJhd25Ob2RlLm5vZGVJZCkscj1PYmplY3QuYXNzaWduKHRoaXMuX2RyYXduTm9kZS5hdHRyaWJ1dGVzLHIpLHRoaXMuX2RyYXduTm9kZS5ub2RlSWQ9dCx0'@; put 'aGlzLl9kcmF3bk5vZGUueD1uLHRoaXMuX2RyYXduTm9kZS55PWUsIW8uZW1wdHkoKXx8ci5zdHlsZSYmci5zdHlsZS5pbmNsdWRlcygiaW52aXMiKXx8KG89dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFn'@; put 'YXRpb24oImciKS5hcHBlbmQoImciKSx0aGlzLl9kcmF3bk5vZGUuZz1vKSxvLmVtcHR5KCl8fEMkZS5jYWxsKHRoaXMsbyxuLGUsdCxyLGkpLHRoaXN9LG1vdmVEcmF3bk5vZGU6ZnVuY3Rpb24gRjNuKG4sZSx0PXt9KXtpZighdGhpcy5fZHJhd25Ob2RlKXRocm93IEVycm9yKCJObyBub2Rl'@; put 'IGhhcyBiZWVuIGRyYXduIik7dmFyIHI9dGhpcy5fZHJhd25Ob2RlLmcsaT10aGlzLl9kcmF3bk5vZGUuYXR0cmlidXRlcztyZXR1cm4gdGhpcy5fZHJhd25Ob2RlLng9bix0aGlzLl9kcmF3bk5vZGUueT1lLHIuZW1wdHkoKXx8UyRlKHIsbixlLGkpLHRoaXN9LGluc2VydERyYXduTm9kZTpm'@; put 'dW5jdGlvbiBQM24obil7aWYoIXRoaXMuX2RyYXduTm9kZSl0aHJvdyBFcnJvcigiTm8gbm9kZSBoYXMgYmVlbiBkcmF3biIpO251bGw9PW4mJihuPXRoaXMuX2RyYXduTm9kZS5ub2RlSWQpO3ZhciBlPXRoaXMuX2RyYXduTm9kZS5nO2lmKGUuZW1wdHkoKSlyZXR1cm4gdGhpczt2YXIgdD10'@; put 'aGlzLl9kcmF3bk5vZGUuYXR0cmlidXRlcztpZihlLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRpdGxlIikudGV4dChuKSx0LlVSTHx8dC50b29sdGlwKXZhciBvPWUuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24o'@; put 'ImEiKSxsPShvLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksby5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0IikpO2Vsc2UgZS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJlbGxpcHNlLHBvbHlnb24s'@; put 'cGF0aCxwb2x5bGluZSIpLGw9ZS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0Iik7bC50ZXh0KHQubGFiZWx8fG4pO3ZhciBFPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJn'@; put 'IiksTz1FLmRhdHVtKCksWj10aGlzLl9leHRyYWN0RGF0YShlLE8uY2hpbGRyZW4ubGVuZ3RoLEUuZGF0dW0oKSk7cmV0dXJuIE8uY2hpbGRyZW4ucHVzaChaKSxTNGUoZSxaKSx0aGlzLl9kcmF3bk5vZGU9bnVsbCx0aGlzfSxyZW1vdmVEcmF3bk5vZGU6RSRlLHJlbW92ZURyYXduTm9kZTpF'@; put 'JGUsZHJhd25Ob2RlU2VsZWN0aW9uOk0kZSxkcmF3bk5vZGVTZWxlY3Rpb246TSRlLGdyYXBodml6VmVyc2lvbjpmdW5jdGlvbiBnZm4oKXtyZXR1cm4gdGhpcy5fZ3JhcGh2aXpWZXJzaW9ufX0sekMucHJvdG90eXBlLmdyYXBodml6PWZ1bmN0aW9uIEIzbihuKXt2YXIgZT10aGlzLm5vZGUo'@; put 'KS5fX2dyYXBodml6X187cmV0dXJuIGU/KGUub3B0aW9ucyhuKSx4SyhmdW5jdGlvbigpe2UuX2Rpc3BhdGNoLmNhbGwoImluaXRFbmQiLHRoaXMpfS5iaW5kKHRoaXMpLDApKTplPW5ldyBINGUodGhpcyxuKSxlfSx6Qy5wcm90b3R5cGUuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbj1m'@; put 'dW5jdGlvbiBqM24obil7cmV0dXJuIEJsKHRoaXMuc2l6ZSgpPjA/dGhpcy5ub2RlKCkucXVlcnlTZWxlY3RvcihuKTpudWxsKX07dmFyIFUzbj1oKDk4MDgzKTtmdW5jdGlvbiB6M24obixlKXsxJm4mJkl0KDAsImNsci1pY29uIiwyNCl9ZnVuY3Rpb24gVzNuKG4sZSl7aWYoMSZuKXtjb25z'@; put 'dCB0PXduKCk7SigwLCJjbHItaWNvbiIsMjYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLmxpYnJhcmllc1NlYXJjaD0iIixYZShpLmxpYnJhcnlPbkZpbHRlcigpKX0pLHRlKCl9fWZ1bmN0aW9uIFkzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13'@; put 'bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsNSkoMSwiZGl2IiwyMikoMiwiaW5wdXQiLDIzLDIpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCk7cmV0dXJuIGZpKG8ubGlicmFyaWVzU2VhcmNoLGkpfHwoby5saWJyYXJpZXNTZWFyY2g9aSksWGUoaSl9'@; put 'KSx3dCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkubGlicmFyeU9uRmlsdGVyKCkpfSksdGUoKSx2dCg0LHozbiwxLDAsImNsci1pY29uIiwyNCksdnQoNSxXM24sMSwwLCJjbHItaWNvbiIsMjUpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9b28oMykscj1UZSgpO2ll'@; put 'KDIpLGRpKCJuZ01vZGVsIixyLmxpYnJhcmllc1NlYXJjaCksaWUoMiksX3QodC52YWx1ZS5sZW5ndGg8MT80Oi0xKSxpZSgpLF90KHQudmFsdWUubGVuZ3RoPjA/NTotMSl9fWZ1bmN0aW9uIFozbihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDI0KX1mdW5jdGlvbiBHM24obixlKXtpZigx'@; put 'Jm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiwyNiksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpLFRlKCk7Y29uc3QgaT1vbygzKSxvPVRlKDIpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIGkudmFsdWU9IiIsby5zZWFyY2hTdHJpbmc9IiIsWGUoYS50cmVlT25GaWx0ZXIobywi'@; put 'dGFibGVzLlRBQkxFTkFNRSIpKX0pLHRlKCl9fWZ1bmN0aW9uICQzbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsNSkoMSwiZGl2IiwyMikoMiwiaW5wdXQiLDMxLDMpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRl'@; put 'KDIpLiRpbXBsaWNpdDtyZXR1cm4gZmkoby5zZWFyY2hTdHJpbmcsaSl8fChvLnNlYXJjaFN0cmluZz1pKSxYZShpKX0pLHd0KCJrZXl1cCIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS50cmVlT25GaWx0ZXIoaSwidGFibGVzLlRBQkxF'@; put 'TkFNRSIpKX0pLHRlKCksdnQoNCxaM24sMSwwLCJjbHItaWNvbiIsMjQpLHZ0KDUsRzNuLDEsMCwiY2xyLWljb24iLDI1KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PW9vKDMpLHI9VGUoMikuJGltcGxpY2l0O2llKDIpLGRpKCJuZ01vZGVsIixyLnNlYXJjaFN0cmluZyksaWUoMiksX3QodC52'@; put 'YWx1ZS5sZW5ndGg8MT80Oi0xKSxpZSgpLF90KHQudmFsdWUubGVuZ3RoPjA/NTotMSl9fWZ1bmN0aW9uIHEzbihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDI0KX1mdW5jdGlvbiBLM24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiwyNiksd3QoImNsaWNrIixm'@; put 'dW5jdGlvbigpe1llKHQpLFRlKCk7Y29uc3QgaT1vbygzKSxvPVRlKCkuJGltcGxpY2l0LGE9VGUoMyk7cmV0dXJuIGkudmFsdWU9IiIsby5zZWFyY2hTdHJpbmc9IiIsWGUoYS50cmVlT25GaWx0ZXIobywiY29sdW1ucy5DT0xOQU1FIikpfSksdGUoKX19ZnVuY3Rpb24gWDNuKG4sZSl7aWYo'@; put 'MSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiw1KSgxLCJkaXYiLDIyKSgyLCJpbnB1dCIsMzQsMyksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1wbGljaXQ7cmV0dXJuIGZpKG8uc2VhcmNoU3RyaW5nLGkpfHwoby5zZWFy'@; put 'Y2hTdHJpbmc9aSksWGUoaSl9KSx3dCgia2V5dXAiLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoMykudHJlZU9uRmlsdGVyKGksImNvbHVtbnMuQ09MTkFNRSIpKX0pLHRlKCksdnQoNCxxM24sMSwwLCJjbHItaWNvbiIsMjQpLHZ0KDUsSzNu'@; put 'LDEsMCwiY2xyLWljb24iLDI1KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PW9vKDMpLHI9VGUoKS4kaW1wbGljaXQ7aWUoMiksZGkoIm5nTW9kZWwiLHIuc2VhcmNoU3RyaW5nKSxpZSgyKSxfdCh0LnZhbHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+MD81Oi0xKX19'@; put 'ZnVuY3Rpb24gUTNuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIikoMSwiYnV0dG9uIiwzNSksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxpY2l0LG89VGUoKS4kaW1wbGljaXQsYT1UZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFhl'@; put 'KFRlKCkuY29sdW1uT25DbGljayhpLGEsbykpfSksSXQoMiwiY2xyLWljb24iLDM2KSxTZSgzKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoNCk7aWUoKSx3cigiY29sdW1uLWFjdGl2ZSIsci5saWJDb2x1bW5BY3RpdmUodC5DT0xVUkkpKSxpZSgyKSxTcigiICIs'@; put 'dC5DT0xOQU1FLCIgIil9fWZ1bmN0aW9uIEozbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMjgpLHd0KCJjbGljayIsZnVuY3Rpb24oaSl7Y29uc3Qgbz1ZZSh0KS4kaW1wbGljaXQsYT1UZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkudHJlZU5v'@; put 'ZGVDbGlja2VkKGksbyxhLnRhYmxlcykpfSksaGkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihpKXtjb25zdCBvPVllKHQpLiRpbXBsaWNpdDtyZXR1cm4gZmkoby5leHBhbmRlZCxpKXx8KG8uZXhwYW5kZWQ9aSksWGUoaSl9KSxKKDEsInAiLDMyKSx3dCgiY2xpY2siLGZ1bmN0aW9u'@; put 'KCl7Y29uc3QgaT1ZZSh0KS4kaW1wbGljaXQsbz1UZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkudGFibGVPbkNsaWNrKGkuVEFCTEVVUkksaSxvKSl9KSxJdCgyLCJjbHItaWNvbiIsMzMpLFNlKDMpLHRlKCksdnQoNCxYM24sNiwzLCJjbHItdHJlZS1ub2RlIiw1KSxfbyg1LFEzbiw0'@; put 'LDMsImNsci10cmVlLW5vZGUiLG51bGwsQ28pLHRlKCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O3dyKCJjbHItZXhwYW5kZWQiLHQuZXhwYW5kZWQpLGRpKCJjbHJFeHBhbmRlZCIsdC5leHBhbmRlZCkscnQoImNsckxvYWRpbmciLHQubG9hZGluZ0NvbHVtbnMmJiF0LmNvbHVtbnMp'@; put 'LGllKCkscnQoImlkIix0LlRBQkxFVVJJKSxpZSgyKSxTcigiICIsdC5UQUJMRU5BTUUsIiAiKSxpZSgpLF90KHQuY29sdW1ucz80Oi0xKSxpZSgpLHlvKHQuY29sdW1ucyl9fWZ1bmN0aW9uIGVwbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsMjgpLHd0'@; put 'KCJjbGljayIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIFhlKGEudHJlZU5vZGVDbGlja2VkKGksbyxhLmxpYnJhcnlMaXN0KSl9KSxoaSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1w'@; put 'bGljaXQ7cmV0dXJuIGZpKG8uZXhwYW5kZWQsaSl8fChvLmV4cGFuZGVkPWkpLFhlKGkpfSksSigxLCJwIiwyOSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQsbz1UZSgpO3JldHVybiBvLmxpYj1pLkxJQlJBUllJRCxYZShvLmxpYnJhcnlPbkNs'@; put 'aWNrKG8ubGlifHwiIixpKSl9KSxJdCgyLCJjbHItaWNvbiIsMzApLFNlKDMpLHRlKCksdnQoNCwkM24sNiwzLCJjbHItdHJlZS1ub2RlIiw1KSxfbyg1LEozbiw3LDcsImNsci10cmVlLW5vZGUiLDI3LENvKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDt3cigiY2xyLWV4'@; put 'cGFuZGVkIix0LmV4cGFuZGVkKSxkaSgiY2xyRXhwYW5kZWQiLHQuZXhwYW5kZWQpLHJ0KCJjbHJMb2FkaW5nIix0LmxvYWRpbmdUYWJsZXMmJiF0LnRhYmxlcyksaWUoMyksU3IoIiAiLHQuTElCUkFSWU5BTUUsIiAiKSxpZSgpLF90KHQudGFibGVzPzQ6LTEpLGllKCkseW8odC50YWJsZXMp'@; put 'fX1mdW5jdGlvbiB0cG4obixlKXtpZigxJm4mJnZ0KDAsZXBuLDcsNiwiY2xyLXRyZWUtbm9kZSIsMjcpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtfdCghdC5oaWRkZW4mJnQuaW5Gb3JlZ3JvdW5kPzA6LTEpfX1mdW5jdGlvbiBucG4obixlKXsxJm4mJihKKDAsImRpdiIsNikoMSwic3Bh'@; put 'biIsMzcpLFNlKDIsIiBMb2FkaW5nLi4uICIpLHRlKCkoKSl9ZnVuY3Rpb24gcnBuKG4sZSl7MSZuJiYoSigwLCJkaXYiLDkpLEl0KDEsImNsci1pY29uIiwzOCksSigyLCJwIiwzOSksU2UoMywiIFBsZWFzZSBzZWxlY3QgYSBjb2x1bW4gb3IgdGFibGUgIiksdGUoKSgpKX1mdW5jdGlvbiBp'@; put 'cG4obixlKXtpZigxJm4mJihKKDAsImgzIiw0NiksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKCksU3IoIiAiLHQuY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uP3QuY3VycmVudExpbmVhZ2VQYXRoTGliVGFibGUrIi4iK3QuY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uOnQuY3Vy'@; put 'cmVudExpbmVhZ2VQYXRoTGliVGFibGUsIiAiKX19ZnVuY3Rpb24gb3BuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDQwKSx2dCgxLGlwbiwyLDEsImgzIiw0NiksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCksX3QodC5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW58fHQuY3VycmVudExp'@; put 'bmVhZ2VQYXRoTGliVGFibGU/LTE6MSl9fWZ1bmN0aW9uIGFwbihuLGUpe2lmKDEmbiYmKEooMCwic3BhbiIpLFNlKDEpLEooMiwiYSIsNDcpLFNlKDMpLHRlKCksU2UoNCksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCksU3IoIiAiLHQubGluZWFnZVRhYmxlTmFtZS5zcGxpdCgiLiIp'@; put 'WzBdLCIuIiksaWUoKSxydCgicm91dGVyTGluayIsIi92aWV3L2RhdGEvIit0LmxpbmVhZ2VUYWJsZU5hbWUpLGllKCkscHIodC5saW5lYWdlVGFibGVOYW1lLnNwbGl0KCIuIilbMV0pLGllKCksU3IoIiIsdC5saW5lYWdlQ29sdW1uTmFtZS5sZW5ndGg+MD8iLiIrdC5saW5lYWdlQ29sdW1u'@; put 'TmFtZToiIiwiICIpfX1mdW5jdGlvbiBzcG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsNTYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoNCkuZG93bmxvYWRDU1YoKSl9KSxTZSgxLCJDU1YiKSx0ZSgpfX1mdW5jdGlvbiBscG4obixlKXtp'@; put 'ZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1kcm9wZG93bi1tZW51Iiw1NSkoMSwiZGl2Iiw1Niksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgzKS5kb3dubG9hZFNWRygpKX0pLFNlKDIsIlNWRyIpLHRlKCksSigzLCJkaXYiLDU2KSx3dCgiY2xpY2siLGZ1'@; put 'bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLmRvd25sb2FkUE5HKCkpfSksU2UoNCwiUE5HIiksdGUoKSxKKDUsImRpdiIsNTYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMykuZG93bmxvYWREb3QoKSl9KSxTZSg2LCJEb3QiKSx0ZSgpLHZ0KDcsc3Bu'@; put 'LDIsMCwiZGl2Iiw1NyksdGUoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoNyksX3QodC5mbGF0ZGF0YT83Oi0xKX19ZnVuY3Rpb24gY3BuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItY2hlY2tib3gtd3JhcHBlciIsNTQpKDEsImlucHV0Iiw1OCksd3QoImNoYW5nZSIs'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMykuZ2VuZXJhdGVHcmFwaCgpKX0pLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDMpO3JldHVybiBmaShvLnJlZnJlc2hDYWNoZSxpKXx8KG8ucmVmcmVzaENhY2hlPWkpLFhlKGkpfSksdGUoKSxK'@; put 'KDIsImxhYmVsIiksU2UoMywiUmVmcmVzaCBDYWNoZSIpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoKSxkaSgibmdNb2RlbCIsdC5yZWZyZXNoQ2FjaGUpfX1mdW5jdGlvbiB1cG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsNDQpKDEsImJ1dHRvbiIsNDgp'@; put 'LHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikubGltaXREb3REZXB0aD0hMCl9KSxTZSgyLCIgTGltaXQgZGVwdGggIiksdGUoKSxKKDMsImRpdiIsNDkpKDQsImRpdiIsNTApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVy'@; put 'biBpLmZvcndhcmRMaW5lYWdlPSExLFhlKGkucm91dGVyLnVybC5pbmNsdWRlcygiY29sdW1uIik/aS5vbkdlbmVyYXRlQ2xpY2soKTppLm9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xpY2soKSl9KSxJdCg1LCJpbnB1dCIsNTEpLEooNiwibGFiZWwiKSxTZSg3LCJCYWNrd2FyZCIpLHRlKCkoKSxK'@; put 'KDgsImRpdiIsNTApLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLmZvcndhcmRMaW5lYWdlPSEwLFhlKGkucm91dGVyLnVybC5pbmNsdWRlcygiY29sdW1uIik/aS5vbkdlbmVyYXRlQ2xpY2soKTppLm9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xpY2so'@; put 'KSl9KSxJdCg5LCJpbnB1dCIsNTEpLEooMTAsImxhYmVsIiksU2UoMTEsIkZvcndhcmQiKSx0ZSgpKCkoKSxKKDEyLCJjbHItZHJvcGRvd24iLDUyKSgxMywiYnV0dG9uIiw1MyksU2UoMTQsIiBEb3dubG9hZCAiKSxJdCgxNSwiY2xyLWljb24iLDIwKSx0ZSgpLFluKDE2LGxwbiw4LDEsImNs'@; put 'ci1kcm9wZG93bi1tZW51IiwyMSksdGUoKSx2dCgxNyxjcG4sNCwxLCJjbHItY2hlY2tib3gtd3JhcHBlciIsNTQpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKDUpLHJ0KCJjaGVja2VkIiwhdC5mb3J3YXJkTGluZWFnZSksaWUoNCkscnQoImNoZWNrZWQiLHQuZm9yd2FyZExpbmVh'@; put 'Z2UpLGllKDQpLHJ0KCJkaXNhYmxlZCIsIXQuY29sdW1uJiYhdC50YWJsZSksaWUoNCksX3QodC5jb2x1bW4/MTc6LTEpfX1mdW5jdGlvbiBkcG4obixlKXsxJm4mJihKKDAsInNwYW4iLDYwKSxTZSgxLCIgTG9hZGluZy4uLiAiKSx0ZSgpKX1mdW5jdGlvbiBocG4obixlKXsxJm4mJkl0KDAs'@; put 'InNwYW4iLDM3KX1mdW5jdGlvbiBmcG4obixlKXtpZigxJm4mJihKKDAsImRpdiIsNjEpKDEsImRpdiIsNjIpLHZ0KDIsaHBuLDEsMCwic3BhbiIsMzcpLHRlKCksSXQoMywiZGl2Iiw2MyksdGUoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKDIpLF90KHQuZ3JhcGhSZW5kZXJpbmc/MjotMSl9'@; put 'fWZ1bmN0aW9uIHBwbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IikoMSwiZGl2Iiw1OSksdnQoMixkcG4sMiwwLCJzcGFuIiw2MCksdnQoMyxmcG4sNCwxLCJkaXYiLDYxKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgyKTt3cigibXQtMiIsdC50YWJsZUZsYWcpLGllKDIpLF90KHQuZ3JhcGhM'@; put 'b2FkaW5nPzI6LTEpLGllKCksX3QodC5ncmFwaExvYWRpbmc/LTE6Myl9fWZ1bmN0aW9uIGdwbihuLGUpe2lmKDEmbiYmKHZ0KDAsb3BuLDIsMSwiZGl2Iiw0MCksSigxLCJkaXYiLDQxKSgyLCJzZWN0aW9uIiw0MikoMywiZGl2Iiw0MyksdnQoNCxhcG4sNSw0LCJzcGFuIiksdGUoKSx2dCg1'@; put 'LHVwbiwxOCw0LCJkaXYiLDQ0KSx0ZSgpLHZ0KDYscHBuLDQsNCwiZGl2Iiw0NSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7X3QodC5ncmFwaENvbnRhaW5lcj8tMTowKSxpZSg0KSxfdCh0LmxpbmVhZ2VUYWJsZU5hbWUubGVuZ3RoPjA/NDotMSksaWUoKSxfdCh0LmdyYXBoQ29udGFpbmVy'@; put 'PzU6LTEpLGllKCksX3QodC5ncmFwaENvbnRhaW5lcj82Oi0xKX19ZnVuY3Rpb24gbXBuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItZHJvcGRvd24tbWVudSIsNTUpKDEsImRpdiIsNTYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5yZW5k'@; put 'ZXJUb0Rvd25sb2FkKCJTVkciKSl9KSxTZSgyLCJTVkciKSx0ZSgpLEooMywiZGl2Iiw1Niksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnJlbmRlclRvRG93bmxvYWQoIlBORyIpKX0pLFNlKDQsIlBORyIpLHRlKCksSig1LCJkaXYiLDU2KSx3dCgiY2xpY2si'@; put 'LGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpO3JldHVybiBpLmRvd25sb2FkRG90KCksWGUoaS5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpKX0pLFNlKDYsIiBEb3QgIiksdGUoKSgpfX1jb25zdCB2cG49aCg5NzU4Nik7bGV0IEpLPSgoKT0+e3ZhciBuO2NsYXNzIGV7Y29uc3RydWN0b3Io'@; put 'cixpLG8sYSxsLHUsZyxFKXt0aGlzLmxpY2VuY2VTZXJ2aWNlPXIsdGhpcy5zYXNTZXJ2aWNlPWksdGhpcy5yb3V0ZT1vLHRoaXMucm91dGVyPWEsdGhpcy5sb2NhdGlvbj1sLHRoaXMuZXZlbnRTZXJ2aWNlPXUsdGhpcy5sb2dnZXJTZXJ2aWNlPWcsdGhpcy5oZWxwZXJTZXJ2aWNlPUUsdGhp'@; put 'cy5zd2l0Y2hGbGFnPSExLHRoaXMudGFibGVGbGFnPSEwLHRoaXMuZm9yd2FyZExpbmVhZ2U9ITEsdGhpcy5mbGF0ZGF0YT1bXSx0aGlzLmdyYXBoTG9hZGluZz0hMSx0aGlzLmdyYXBoUmVuZGVyaW5nPSExLHRoaXMuZ3JhcGhDb250YWluZXI9ITEsdGhpcy52aXpJbnB1dD0iIix0aGlzLmxp'@; put 'YnJhcmllc1BhZ2luZz0hMSx0aGlzLmxpYnJhcnlUYWJsZXNSZWY9IiIsdGhpcy5saWJyYXJpZXNTZWFyY2g9IiIsdGhpcy50YWJsZUNvbHVtbnNSZWY9IiIsdGhpcy5saW5lYWdlVGFibGVOYW1lPSIiLHRoaXMubGluZWFnZUNvbHVtbk5hbWU9IiIsdGhpcy5saWI9bnVsbCx0aGlzLnRhYmxl'@; put 'RGlzYWJsZT0hMSx0aGlzLnJlZnJlc2hDYWNoZT0hMSx0aGlzLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPSIiLHRoaXMuY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uPSIiLHRoaXMubGFyZ2VEb3RGaWxlTGluZXM9bnVsbCx0aGlzLmxhcmdlRG90RmlsZUxpbWl0PTFlMyx0aGlzLmxpbWl0'@; put 'RG90RGVwdGg9ITEsdGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQ9bnVsbCx0aGlzLmRlYm91bmNlVGltZT0yMDB9c2hvd1RhYmxlU2VsZWN0KCl7dGhpcy50YWJsZUZsYWc9IXRoaXMudGFibGVGbGFnfXRhYmxlT25DbGljayhyLGksbyl7dmFyIGE9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24q'@; put 'KGwsdSxnLEU9ITEpe3UuY29sdW1ucz8odS5leHBhbmRlZD0hdS5leHBhbmRlZCwhMD09PXUuZXhwYW5kZWQmJihhLnRhYmxlPWwsRXx8YS5vbkdlbmVyYXRlR3JhcGhUYWJsZUNsaWNrKCkpKToodS5leHBhbmRlZD0hdS5leHBhbmRlZCx1LmxvYWRpbmdDb2x1bW5zPSEwLGEudGFibGU9bCxh'@; put 'LmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPXUuTElCTkFNRSsiLiIrdS5UQUJMRU5BTUUseWllbGQgYS5zZWxlY3RUYWJsZShsLHUpLEV8fGEub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKSxhLmNvbGxhcHNlVHJlZUl0ZW1zKGcudGFibGVzLHUpfSkuYXBwbHkodGhpcyxhcmd1bWVu'@; put 'dHMpfXNlbGVjdFRhYmxlKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7by5jb2x1bW5zTGlzdD1bXTtsZXQgYT17U0FTQ29udHJvbFRhYmxlOlt7dGFibGV1cmk6cn1dfTt5aWVsZCBvLnNhc1NlcnZpY2UucmVxdWVzdCgibGluZWFnZS9nZXRtZXRhY29scyIsYSkudGhl'@; put 'bihsPT57by5jb2x1bW5zTGlzdD1sLmFkYXB0ZXJSZXNwb25zZS5tZXRhY29scyxvLmNvbHVtbnNMaXN0JiZvLmNvbHVtbnNMaXN0Lmxlbmd0aD4wJiYoaS5jb2x1bW5zPW8uY29sdW1uc0xpc3QsaS5leHBhbmRlZD0hMCxpLmxvYWRpbmdDb2x1bW5zPSExKX0pLmNhdGNoKGw9PmwpLG8uc2V0'@; put 'R2xvYmFsRGF0YSgpfSkoKX1sb2FkTW9yZUxpYnJhcmllcygpe3RoaXMubGlicmFyaWVzUGFnaW5nfHwodGhpcy5saWJyYXJpZXNQYWdpbmc9ITAsdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCwhMCksdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEp'@; put 'fWNvbGxhcHNlVHJlZUl0ZW1zKHIsaSl7ci5mb3JFYWNoKG89PntKU09OLnN0cmluZ2lmeShvKSE9PUpTT04uc3RyaW5naWZ5KGkpJiYoby5leHBhbmRlZD0hMSl9KX10cmVlTm9kZUNsaWNrZWQocixpLG8peyJDb2xsYXBzZSI9PT1yLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJ'@; put 'dGVtcyhvLGkpfWxpYnJhcnlPbkNsaWNrKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7aS5pbkZvcmVncm91bmQ9ITAsaS50YWJsZXM/aS5leHBhbmRlZD0haS5leHBhbmRlZDooaS5sb2FkaW5nVGFibGVzPSEwLHlpZWxkIG8uc2VsZWN0TGlicmFyeShyLGkpKSxvLmNv'@; put 'bGxhcHNlVHJlZUl0ZW1zKG8ubGlicmFyeUxpc3QsaSl9KSgpfXNlbGVjdExpYnJhcnkocixpKXt2YXIgbz10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtvLnRhYmxlc0xpc3Q9W10sby5jb2x1bW5zTGlzdD1bXTtsZXQgYT17U0FTQ29udHJvbFRhYmxlOlt7bGlidXJpOnJ9XX07eWllbGQg'@; put 'by5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZ2V0bWV0YXRhYmxlcyIsYSkudGhlbihsPT57by50YWJsZXNMaXN0PWwuYWRhcHRlclJlc3BvbnNlLm1ldGF0YWJsZXMsby50YWJsZXNMaXN0JiZvLnRhYmxlc0xpc3QubGVuZ3RoPjAmJihpLnRhYmxlcz1vLnRhYmxlc0xpc3QsaS5leHBh'@; put 'bmRlZD0hMCksby5zZXRHbG9iYWxEYXRhKCl9KS5jYXRjaChsPT5sKSxpLmxvYWRpbmdUYWJsZXM9ITF9KSgpfWNvbHVtbk9uQ2xpY2socixpLG8pe3RoaXMubGliPWkuTElCUkFSWUlELHRoaXMudGFibGU9by5UQUJMRVVSSSx0aGlzLmNvbHVtbj1yLkNPTFVSSSx0aGlzLnNldEdsb2JhbERh'@; put 'dGEoKSx0aGlzLm9uR2VuZXJhdGVDbGljaygpfXRyZWVPbkZpbHRlcihyLGkpe3RoaXMuaGVscGVyU2VydmljZS50cmVlT25GaWx0ZXIocixpKX1saWJyYXJ5T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMubGlicmFyeUxpc3QsdGhpcy5saWJyYXJp'@; put 'ZXNTZWFyY2gsIkxJQlJBUllOQU1FIiksVW4ubGluZWFnZS5saWJyYXJpZXNTZWFyY2g9dGhpcy5saWJyYXJpZXNTZWFyY2h9bGliQ29sdW1uQWN0aXZlKHIpe2lmKCF0aGlzLmNvbHVtbilyZXR1cm4hMTtsZXQgaT1yLnNwbGl0KCJcXCIpLG89dGhpcy5jb2x1bW4uc3BsaXQoIlxcIik7cmV0'@; put 'dXJuIGlbaS5sZW5ndGgtMV09PW9bby5sZW5ndGgtMV19c2V0R2xvYmFsRGF0YSgpe1VuLmxpbmVhZ2UubGlicmFyeUxpc3Q9dGhpcy5saWJyYXJ5TGlzdCxVbi5saW5lYWdlLnRhYmxlc0xpc3Q9dGhpcy50YWJsZXNMaXN0LFVuLmxpbmVhZ2UuY29sdW1uc0xpc3Q9dGhpcy5jb2x1bW5zTGlz'@; put 'dCxVbi5saW5lYWdlLmxpYj10aGlzLmxpYixVbi5saW5lYWdlLnRhYmxlPXRoaXMudGFibGUsVW4ubGluZWFnZS5jb2x1bW49dGhpcy5jb2x1bW59bG9hZEdsb2JhbERhdGEoKXt0aGlzLmxpYnJhcnlMaXN0PVVuLmxpbmVhZ2UubGlicmFyeUxpc3QsdGhpcy50YWJsZXNMaXN0PVVuLmxpbmVh'@; put 'Z2UudGFibGVzTGlzdCx0aGlzLmNvbHVtbnNMaXN0PVVuLmxpbmVhZ2UuY29sdW1uc0xpc3QsdGhpcy5saWJyYXJpZXNTZWFyY2g9VW4ubGluZWFnZS5saWJyYXJpZXNTZWFyY2h9cmVzdWJtaXRXaXRoTWF4RGVwdGgocil7bGV0IGk7dGhpcy5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpLHImJihp'@; put 'PXttYXhfZGVwdGg6cn0pLHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLHtyZWxhdGl2ZVRvOnRoaXMucm91dGUscXVlcnlQYXJhbXM6aX0pfW5nT25Jbml0KCl7VW4udmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvbGluZWFnZSI7bGV0IHI9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMu'@; put 'cmVsb2FkO2lmKHZvaWQgMCE9PXIpe2xldCBpPXRoaXMucm91dGVyLnVybDsicmVsb2FkIj09PXI/bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpcnN0TG9hZCIpPyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmlyc3RMb2FkIiksdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoaS5zbGljZSgw'@; put 'LGkubGFzdEluZGV4T2YoIi8iKSkpKToobG9jYWxTdG9yYWdlLmZpcnN0TG9hZD0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfSwyZTMpKTp0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShpLnNsaWNlKDAsaS5sYXN0SW5kZXhPZigiLyIpKSl9dGhp'@; put 'cy5pbml0RGF0YSgpfWluaXREYXRhKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7VW4ubGluZWFnZS5saWJyYXJ5TGlzdCYmKFVuLmxpbmVhZ2UubGlicmFyeUxpc3QubGVuZ3RoPjA/ci5sb2FkR2xvYmFsRGF0YSgpOnlpZWxkIHIuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJs'@; put 'aWMvdmlld2xpYnMiLG51bGwpLnRoZW4obD0+e3IubGlicmFyeUxpc3Q9bC5hZGFwdGVyUmVzcG9uc2Uuc2FzbGlicyxyLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyhyLmxpYnJhcnlMaXN0KSxyLmxpYnJhcnlMaXN0JiZyLmxpYnJhcnlMaXN0Lmxlbmd0aD4wJiYoci5saWI9ci5s'@; put 'aWJyYXJ5TGlzdFswXS5MSUJSQVJZSUQpLHIuc2V0R2xvYmFsRGF0YSgpfSkuY2F0Y2gobD0+bCksci5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUobD0+e3Iub25Sb3V0ZUNoYW5nZSgpfSksci5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGw9PntyLm9uUm91dGVDaGFuZ2UoKX0pKX0pKCl9'@; put 'b25Sb3V0ZUNoYW5nZSgpe2NsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZW91dCksdGhpcy5kZWJvdW5jZVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e2NvbnN0IHI9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuY29sdXJpLGk9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZGlyZWN0'@; put 'aW9uLG89dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudGFibGVpZCxhPXRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMubWF4X2RlcHRoO3ImJmkmJih0aGlzLmZvcndhcmRMaW5lYWdlPSJGT1JXQVJEIj09PWksdGhpcy5jb2x1bW49cix0aGlzLmdlbmVyYXRlR3JhcGgocixpLGEp'@; put 'KSwhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKSYmbyYmaSYmKHRoaXMuZm9yd2FyZExpbmVhZ2U9IkZPUldBUkQiPT09aSx0aGlzLnRhYmxlPW8sdGhpcy5nZW5lcmF0ZUdyYXBoVGFibGVMZXZlbChvLGksYSkpfSx0aGlzLmRlYm91bmNlVGltZSl9bmdBZnRlckNvbnRlbnRJ'@; put 'bml0KCl7fWRpcmVjdGlvblRleHQoKXtyZXR1cm4gdGhpcy5mb3J3YXJkTGluZWFnZT8iRk9SV0FSRCI6IlJFVkVSU0UifW9uR2VuZXJhdGVDbGljaygpe2xldCByPXRoaXMuZGlyZWN0aW9uVGV4dCgpLGk9dGhpcy5jb2x1bW4/dGhpcy5jb2x1bW4uc3Vic3RyaW5nKHRoaXMuY29sdW1uLmlu'@; put 'ZGV4T2YoIlxcIikrMSk6bnVsbDt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9saW5lYWdlL2NvbHVtbi8iK2krIi8iK3IpfW9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xpY2soKXtsZXQgcj10aGlzLmRpcmVjdGlvblRleHQoKSxpPXRoaXMudGFibGUuaW5jbHVkZXMoIlxcIik/dGhp'@; put 'cy50YWJsZS5zcGxpdCgiXFwiKVsxXTp0aGlzLnRhYmxlO3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2xpbmVhZ2UvIitpKyIvIityKX1nZW5lcmF0ZUdyYXBoVGFibGVMZXZlbChyLGksbyl7dmFyIGE9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7bGV0IGw9e1NBU0NvbnRy'@; put 'b2xUYWJsZTpbe3RhYmxlX2lkOnIsZGlyZWN0aW9uOml8fGEuZGlyZWN0aW9uVGV4dCgpfV19O3JldHVybiJ1bmRlZmluZWQiPT09bC5TQVNDb250cm9sVGFibGVbMF0udGFibGVfaWQmJmEuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCJnZW5lcmF0ZUdyYXBoVGFibGVMZXZlbCgpIiwi'@; put 'dGFibGVfaWQgaXMgdW5kZWZpbmVkLiIsdm9pZCAwLCJGcm9udGVuZCBlcnJvciIpLG8mJihsLlNBU0NvbnRyb2xUYWJsZVswXS5tYXhfZGVwdGg9byksYS50YWJsZUZsYWc9ITEsYS5zd2l0Y2hGbGFnPSEwLGEuZ3JhcGhDb250YWluZXI9ITAsYS5ncmFwaExvYWRpbmc9ITAsYS52aXpJbnB1'@; put 'dD0iIixuZXcgUHJvbWlzZSgodSxnKT0+e2Euc2FzU2VydmljZS5yZXF1ZXN0KCJsaW5lYWdlL2ZldGNodGFibGVsaW5lYWdlIixsKS50aGVuKGZ1bmN0aW9uKCl7dmFyIEU9Q3IoZnVuY3Rpb24qKE8pe2lmKE8uYWRhcHRlclJlc3BvbnNlLmZsYXRkYXRhLmxlbmd0aD4wJiZhLmxpY2VuY2VT'@; put 'ZXJ2aWNlLmNoZWNrTGluZWFnZUxpbWl0KCkpcmV0dXJuIGEuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIk5vdGljZSIsIllvdSBoYXZlIHJlYWNoZWQgZGFpbHkgbWF4aW11bSBvZiBsaW5lYWdlIGRpYWdyYW0gcmVuZGVyaW5ncy4gVG8gdW5sb2NrIGFkZGl0aW9uYWwgZGlhZ3JhbXMs'@; put 'IGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpLHZvaWQgYS5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvbGluZWFnZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgTylyZXR1cm4gYS52aXpJbnB1dD0iZGlncmFwaCBHIHtTQVMgRXJyb3J9Iix2b2lkIGEuYnVpbGRHcmFwaCgp'@; put 'O2EubGluZWFnZVRhYmxlTmFtZT1PLmFkYXB0ZXJSZXNwb25zZS5pbmZvWzBdLkxJQlJFRisiLiIrTy5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXS5UQUJMRU5BTUU7bGV0IFo9Ty5hZGFwdGVyUmVzcG9uc2UuZmluYWxmaW5hbCxlZT0iIjtmb3IobGV0IHZlPTA7dmU8Wi5sZW5ndGg7dmUrKyll'@; put 'ZSs9dW5lc2NhcGUoWlt2ZV0uTElORSkrIlxuIjtpZihhLmZsYXRkYXRhPU8uYWRhcHRlclJlc3BvbnNlLmZsYXRkYXRhLGEubGlicmFyeUxpc3Qpe2xldCB2ZT1hLmxpYnJhcnlMaXN0LmZpbmQoTWU9Pk8uYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uTElCVVJJLnRvVXBwZXJDYXNlKCkuaW5j'@; put 'bHVkZXMoTWUuTElCUkFSWUlELnRvVXBwZXJDYXNlKCkpKTtpZih2ZSl7bGV0IE1lO2lmKHlpZWxkIGEubGlicmFyeU9uQ2xpY2sodmUuTElCUkFSWUlELHZlKSx2ZS50YWJsZXMmJihNZT12ZS50YWJsZXMuZmluZChIZT0+SGUuVEFCTEVVUkkudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhPLmFk'@; put 'YXB0ZXJSZXNwb25zZS5pbmZvWzBdLlRBQkxFSUQudG9VcHBlckNhc2UoKSkpLE1lKSl7aWYoYS50YWJsZT1NZS5UQUJMRVVSSSxhLnRhYmxlKXtjb25zdCBIZT1hLnRhYmxlLnJlcGxhY2UoIlxcIiwiXFxcXCIpO3NldFRpbWVvdXQoKCk9PntsZXQgV2U9ZG9jdW1lbnQucXVlcnlTZWxlY3Rv'@; put 'cihgW2lkPScke0hlfSddYCk7V2UmJldlLnNjcm9sbEludG9WaWV3KCl9LDFlMyl9YS50YWJsZU9uQ2xpY2soTWUuVEFCTEVVUkksTWUsdmUsdm9pZCAwIT09aSl9dmUmJih2ZS5leHBhbmRlZD0hMCksTWUmJihNZS5leHBhbmRlZD0hMCl9fWEudml6SW5wdXQ9ZWV8fCJkaWdyYXBoIEcge05v'@; put 'IExpbmVhZ2UgQXZhaWxhYmxlfSIsYS52aXpJbnB1dD1hLnZpeklucHV0LnJlcGxhY2UoL1xzZHM6L2csIlxuZHM6IikucmVwbGFjZSgvXHNcbi9nLCJcbiIpLGEuaWRsb29rdXA9Ty5hZGFwdGVyUmVzcG9uc2UuaWRsb29rdXAsTy5hZGFwdGVyUmVzcG9uc2UuZmluYWxmaW5hbC5sZW5ndGg+'@; put 'YS5sYXJnZURvdEZpbGVMaW1pdD9hLmxhcmdlRG90RmlsZUxpbmVzPU8uYWRhcHRlclJlc3BvbnNlLmZpbmFsZmluYWwubGVuZ3RoOmEuYnVpbGRHcmFwaCgpLHUoKX0pO3JldHVybiBmdW5jdGlvbihPKXtyZXR1cm4gRS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKS5jYXRjaChFPT57YS5n'@; put 'cmFwaExvYWRpbmc9ITEsYS5ncmFwaENvbnRhaW5lcj0hMX0pfSl9KSgpfWNhbmNlbFJlbmRlcmluZ0dyYXBoKCl7dGhpcy52aXpJbnB1dD0iZGlncmFwaCBHIHtObyBMaW5lYWdlIEF2YWlsYWJsZX0iLHRoaXMubGFyZ2VEb3RGaWxlTGluZXM9bnVsbCx0aGlzLmJ1aWxkR3JhcGgoKX1jb250'@; put 'aW51ZVJlbmRlcmluZ0dyYXBoKCl7dGhpcy5sYXJnZURvdEZpbGVMaW5lcz1udWxsLHRoaXMuYnVpbGRHcmFwaCgoKT0+e2lmKG51bGwhPT10aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZCl7c3dpdGNoKHRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkKXtjYXNlIlBORyI6dGhpcy5kb3dubG9h'@; put 'ZFBORygpO2JyZWFrO2Nhc2UiU1ZHIjp0aGlzLmRvd25sb2FkU1ZHKCl9dGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQ9bnVsbCx0aGlzLnZpeklucHV0PSJkaWdyYXBoIEcge05vIExpbmVhZ2UgQXZhaWxhYmxlfSIsdGhpcy5idWlsZEdyYXBoKCl9fSl9cmVuZGVyVG9Eb3dubG9hZChyKXtz'@; put 'd2l0Y2gocil7Y2FzZSJQTkciOnRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkPSJQTkciLHRoaXMuY29udGludWVSZW5kZXJpbmdHcmFwaCgpO2JyZWFrO2Nhc2UiU1ZHIjp0aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZD0iU1ZHIix0aGlzLmNvbnRpbnVlUmVuZGVyaW5nR3JhcGgoKX19bWFr'@; put 'ZUdyYXBoTGlua2FibGUocil7bGV0IGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2dyYXBoIC5ub2RlIik7Zm9yKGxldCBvIG9mIGkpe2xldCB1LGE9by5xdWVyeVNlbGVjdG9yKCJ0aXRsZSIpLmlubmVySFRNTCxsPXIuZmluZChnPT5nLk1FVEFJRD09PWEpO2wmJih1PSJUQUJMRSI9'@; put 'PT1sLk1FVEFUWVBFPyIvdmlldy9kYXRhLyIrbC5NRVRBTkFNRToiL3ZpZXcvbWV0YWRhdGEvb2JqZWN0LyIrbC5NRVRBSUQsby5jbGFzc0xpc3QuYWRkKCJjdXJzb3ItcG9pbnRlciIpLG8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGc9Pnt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHUp'@; put 'fSkpfX1nZW5lcmF0ZUdyYXBoKHIsaSxvKXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgbD17U0FTQ29udHJvbFRhYmxlOlt7Y29sdXJpOnJ8fGEuY29sdW1uLGRpcmVjdGlvbjppfHxhLmRpcmVjdGlvblRleHQoKSxyZWZyZXNoOmEucmVmcmVzaENhY2hlPzE6MH1dfTty'@; put 'ZXR1cm4idW5kZWZpbmVkIj09PWwuU0FTQ29udHJvbFRhYmxlWzBdLmNvbHVyaSYmYS5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoImdlbmVyYXRlR3JhcGgoKSIsImNvbHVyaSBpcyB1bmRlZmluZWQuIix2b2lkIDAsIkZyb250ZW5kIGVycm9yIiksbyYmKGwuU0FTQ29udHJvbFRhYmxl'@; put 'WzBdLm1heF9kZXB0aD1vKSxhLnRhYmxlRmxhZz0hMSxhLnN3aXRjaEZsYWc9ITAsYS5ncmFwaENvbnRhaW5lcj0hMCxhLmdyYXBoTG9hZGluZz0hMCxhLnZpeklucHV0PSIiLG5ldyBQcm9taXNlKCh1LGcpPT57YS5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZmV0Y2hjb2xsaW5lYWdl'@; put 'IixsKS50aGVuKGZ1bmN0aW9uKCl7dmFyIEU9Q3IoZnVuY3Rpb24qKE8pe2lmKE8uYWRhcHRlclJlc3BvbnNlLmZsYXRkYXRhLmxlbmd0aD4wJiZhLmxpY2VuY2VTZXJ2aWNlLmNoZWNrTGluZWFnZUxpbWl0KCkpcmV0dXJuIGEuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIk5vdGljZSIs'@; put 'IllvdSBoYXZlIHJlYWNoZWQgZGFpbHkgbWF4aW11bSBvZiBsaW5lYWdlIGRpYWdyYW0gcmVuZGVyaW5ncy4gVG8gdW5sb2NrIGFkZGl0aW9uYWwgZGlhZ3JhbXMsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpLHZvaWQgYS5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcv'@; put 'bGluZWFnZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgTy5hZGFwdGVyUmVzcG9uc2UpcmV0dXJuIGEudml6SW5wdXQ9ImRpZ3JhcGggRyB7U0FTIEVycm9yfSIsdm9pZCBhLmJ1aWxkR3JhcGgoKTthLmxpbmVhZ2VUYWJsZU5hbWU9Ty5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXS5MSUJSRUYrIi4i'@; put 'K08uYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uVEFCTkFNRSxhLmxpbmVhZ2VDb2x1bW5OYW1lPU8uYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uQ09MTkFNRSxhLmlkbG9va3VwPU8uYWRhcHRlclJlc3BvbnNlLmlkbG9va3VwO2xldCBaPU8uYWRhcHRlclJlc3BvbnNlLmZyb21zYXMsZWU9IiI7'@; put 'Zm9yKGxldCB2ZT0wO3ZlPFoubGVuZ3RoO3ZlKyspZWUrPXVuZXNjYXBlKFpbdmVdLlNUUklORykrIlxuIjtpZihhLnZpeklucHV0PWVlfHwiZGlncmFwaCBHIHtObyBMaW5lYWdlIEF2YWlsYWJsZX0iLGEudml6SW5wdXQ9YS52aXpJbnB1dC5yZXBsYWNlKC9cc2RzOi9nLCJcbmRzOiIpLnJl'@; put 'cGxhY2UoL1xzXG4vZywiXG4iKSxhLmZsYXRkYXRhPU8uYWRhcHRlclJlc3BvbnNlLmZsYXRkYXRhLGEubGlicmFyeUxpc3Qpe2xldCBNZSx2ZT1hLmxpYnJhcnlMaXN0LmZpbmQoSGU9Pk8uYWRhcHRlclJlc3BvbnNlLmluZm9bMF0/LkxJQlVSST8udG9VcHBlckNhc2UoKT8uaW5jbHVkZXMo'@; put 'SGU/LkxJQlJBUllJRD8udG9VcHBlckNhc2UoKSkpO3ZlJiYoeWllbGQgYS5saWJyYXJ5T25DbGljayh2ZS5MSUJSQVJZSUQsdmUpLHZlLnRhYmxlcyYmKE1lPXZlLnRhYmxlcy5maW5kKEhlPT5IZS5UQUJMRVVSST09PU8uYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uVEFCVVJJKSxNZSYmYS50'@; put 'YWJsZU9uQ2xpY2soTWUuVEFCTEVVUkksTWUsdmUsITApLnRoZW4oKCk9PntsZXQgSGU9TWUuVEFCTEVVUkk7aWYoSGUpe2NvbnN0IFdlPUhlLnJlcGxhY2UoIlxcIiwiXFxcXCIpO2xldCBhdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9JyR7V2V9J11gKTtzZXRUaW1lb3V0KCgpPT57'@; put 'YXQmJihhLmxvZ2dlclNlcnZpY2UubG9nKCJsaWJyYXJ5VG9TZWxlY3QiLHZlKSxhdC5zY3JvbGxJbnRvVmlldygpKX0sMWUzKX19KSksdmUmJih2ZS5leHBhbmRlZD0hMCksTWUmJihNZS5leHBhbmRlZD0hMCkpfU8uYWRhcHRlclJlc3BvbnNlLmZyb21zYXMubGVuZ3RoPmEubGFyZ2VEb3RG'@; put 'aWxlTGltaXQ/YS5sYXJnZURvdEZpbGVMaW5lcz1PLmFkYXB0ZXJSZXNwb25zZS5mcm9tc2FzLmxlbmd0aDphLmJ1aWxkR3JhcGgoKSx1KCl9KTtyZXR1cm4gZnVuY3Rpb24oTyl7cmV0dXJuIEUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkuY2F0Y2goRT0+e2EuZ3JhcGhMb2FkaW5nPSEx'@; put 'LGEuZ3JhcGhDb250YWluZXI9ITF9KX0pfSkoKX1nZXRTVkdVUkwoKXtsZXQgcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiKSxpPW5ldyBYTUxTZXJpYWxpemVyLG89bmV3IEJsb2IoW2kuc2VyaWFsaXplVG9TdHJpbmcocildLHt0eXBlOiJpbWFnZS9zdmcreG1sIn0pO3JldHVy'@; put 'biBVUkwuY3JlYXRlT2JqZWN0VVJMKG8pfWRvd25sb2FkU1ZHKCl7UUsoIiNncmFwaCIpLnJlc2V0Wm9vbSgpO2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyLmhyZWY9dGhpcy5nZXRTVkdVUkwoKSxyLmRvd25sb2FkPXRoaXMuY29uc3RydWN0TmFtZSgic3ZnIiksci5jbGlj'@; put 'aygpfWRvd25sb2FkUE5HKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7UUsoIiNncmFwaCIpLnJlc2V0Wm9vbSgpLFUzbi5zYXZlU3ZnQXNQbmcoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2dyYXBoIHN2ZyIpLHIuY29uc3RydWN0TmFtZSgicG5nIikpfSkoKX1kb3dubG9h'@; put 'ZENTVigpe2xldCByPXRoaXMuZmxhdGRhdGE7Y29uc3QgaT0oTyxaKT0+bnVsbD09PVo/IiI6WixvPU9iamVjdC5rZXlzKHJbMF0pO2xldCBhPXIubWFwKE89Pm8ubWFwKFo9PkpTT04uc3RyaW5naWZ5KE9bWl0saSkpLmpvaW4oIiwiKSk7YS51bnNoaWZ0KG8uam9pbigiLCIpKTtsZXQgbD1h'@; put 'LmpvaW4oIlxyXG4iKTt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksZz1uZXcgQmxvYihbbF0se3R5cGU6InRleHQvY3N2In0pLEU9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZyk7dS5ocmVmPUUsdS5kb3dubG9hZD10aGlzLmNvbnN0cnVjdE5hbWUoImNzdiIpLHUuY2xp'@; put 'Y2soKSx3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChFKX1nZXREb3RVcmwoKXtsZXQgaT1uZXcgQmxvYihbdGhpcy52aXpJbnB1dF0se3R5cGU6InRleHQvcGxhaW4ifSk7cmV0dXJuIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGkpfWRvd25sb2FkRG90KCl7bGV0IHI9ZG9jdW1lbnQu'@; put 'Y3JlYXRlRWxlbWVudCgiYSIpO3IuaHJlZj10aGlzLmdldERvdFVybCgpLHIuZG93bmxvYWQ9dGhpcy5jb25zdHJ1Y3ROYW1lKCJ0eHQiKSxyLmNsaWNrKCl9c2hvd1N2Zygpe3dpbmRvdy5vcGVuKHRoaXMuZ2V0U1ZHVVJMKCksIl9ibGFuayIpfWJ1aWxkR3JhcGgocil7dGhpcy5ldmVudFNl'@; put 'cnZpY2UuY2xvc2VTaWRlYmFyKCksdGhpcy5ncmFwaExvYWRpbmc9ITEsdGhpcy5ncmFwaFJlbmRlcmluZz0hMCxzZXRUaW1lb3V0KCgpPT57UUsoIiNncmFwaCIpLnpvb20oITApLmFkZEltYWdlKCJodHRwczovL2RhdGFjb250cm9sbGVyLmlvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzAx'@; put 'L2ZjMS5wbmciLCIzMHB4IiwiMzBweCIpLnJlbmRlckRvdCh0aGlzLnZpeklucHV0LCgpPT57dGhpcy5ncmFwaFJlbmRlcmluZz0hMSx0aGlzLmlkbG9va3VwJiZ0aGlzLm1ha2VHcmFwaExpbmthYmxlKHRoaXMuaWRsb29rdXApLHImJnIoKX0pfSwxMDApfWNvbnN0cnVjdE5hbWUocil7bGV0'@; put 'IGk9IiIsbz0iIixhPSIiLGw9dnBuKCkuZm9ybWF0KCJZWU1NRERfSEhtbSIpO2lmKHRoaXMubGlicmFyeUxpc3QmJnRoaXMubGlicmFyeUxpc3QubGVuZ3RoKXtsZXQgdT10aGlzLmxpYnJhcnlMaXN0LmZpbmQoZz0+Zy5MSUJSQVJZSUQ9PXRoaXMubGliKTt1JiYoaT1gXyR7dS5MSUJSQVJZ'@; put 'TkFNRX1gKX1pZih0aGlzLnRhYmxlc0xpc3QmJnRoaXMudGFibGVzTGlzdC5sZW5ndGgpe2xldCB1PXRoaXMudGFibGVzTGlzdC5maW5kKGc9PmcuVEFCTEVVUkk9PXRoaXMudGFibGUpO3UmJihvPWBfJHt1LlRBQkxFTkFNRX1gKX1pZih0aGlzLmNvbHVtbnNMaXN0JiZ0aGlzLmNvbHVtbnNM'@; put 'aXN0Lmxlbmd0aCl7bGV0IHU9dGhpcy5jb2x1bW5zTGlzdC5maW5kKGc9PmcuQ09MVVJJPT10aGlzLmNvbHVtbik7dSYmKGE9YF8ke3UuQ09MTkFNRX1gKX1yZXR1cm5gJHt0aGlzLmRpcmVjdGlvblRleHQoKX0ke2l9JHtvfSR7YX1fJHtsfS4ke3J9YH1zdGF0aWMjZT1uPSgpPT4odGhpcy5c'@; put 'dTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZShGMiksemUoaWMpLHplKHAxKSx6ZSh2YyksemUoVjApLHplKHVkKSx6ZSh4MyksemUoZmgpKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLWxpbmVhZ2UiXV0saG9zdEF0dHJzOlsxLCJj'@; put 'b250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6NTksdmFyczoxMCxjb25zdHM6W1sibWF4RGVwdGhEb3QiLCIiXSxbIm1heERlcHRoIiwiIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFszLCJzY3JvbGxlZFRvQm90dG9tIl0s'@; put 'WzEsInNlYXJjaC1ub2RlIl0sWzEsInctMTAwIiwidGV4dC1jZW50ZXIiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbMSwibm8tdGFibGUtc2VsZWN0ZWQiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1i'@; put 'b2R5Il0sWzEsIm1vZGFsLWZvb3RlciIsImQtZmxleCIsImZsZXgtY29sdW1uIl0sWzEsImJpZ2xpbmVhZ2Utcm93IiwibWItMGkiXSxbInR5cGUiLCJudW1iZXIiLCJtaW4iLCIxIiwicGxhY2Vob2xkZXIiLCJNYXggZGVwdGggdmFsdWUiLDEsImNsci1pbnB1dCIsIm1heC1kZXB0aC1pbnB1'@; put 'dCJdLFsxLCJtYi0yMCJdLFsxLCJiaWdsaW5lYWdlLXJvdyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwibXQtMy1uZWdhdGl2'@; put 'ZSIsMywiZGlzYWJsZWQiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsNCwiY2xySWZPcGVuIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFy'@; put 'aWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJM'@; put 'b2FkaW5nIiwiY2xyLWV4cGFuZGVkIl0sWzMsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwi'@; put 'Y2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIlRhYmxlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siLCJpZCJdLFsic2hhcGUiLCJ0YWJs'@; put 'ZSJdLFsiYXBwU3RlYWxGb2N1cyIsIiIsImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJDb2x1bW5zIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGlj'@; put 'ayJdLFsic2hhcGUiLCJvYmplY3RzIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNkcy10ZXh0Iiwic2VjdGlvbiIsMSwidGV4dC1jZW50ZXIiLCJjb2xvci1n'@; put 'cmF5IiwibXQtMTAiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiY2FyZC1ibG9jayJdLFsxLCJmb3JtLWJsb2NrIiwic3ciLCJwb3NpdGlvbi1yZWxhdGl2ZSIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRl'@; put 'ciJdLFsxLCJsaW5hZ2UtdGl0bGUtd3JhcHBlciIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciIsImZvbnQtd2VpZ2h0LWJvbGQiLCJwb3NpdGlvbi1hYnNvbHV0ZSJdLFsxLCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtZW5kIl0s'@; put 'WzMsIm10LTIiXSxbMSwidGV4dC1jZW50ZXIiLCJwYi0xMCJdLFszLCJyb3V0ZXJMaW5rIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsIm1yLTUiLDMsImNsaWNrIl0sWzEsImJ0bi1ncm91cCIsImRpcmVjdGlvbiIsImQtYmxvY2siXSxbMSwicmFkaW8iLCJidG4i'@; put 'LDMsImNsaWNrIl0sWyJ0eXBlIiwicmFkaW8iLCJuYW1lIiwiYnRuLWdyb3VwLWRlbW8tcmFkaW9zIiwzLCJjaGVja2VkIl0sWzEsIm1yLTEwIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1pbmZvLW91dGxpbmUiLDMsImRpc2FibGVkIl0sWzEsImQtZmxleCIsImFs'@; put 'aWduLWl0ZW1zLWNlbnRlciJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJjbGljayJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJDaGVja2JveCIsIiIsIm5hbWUiLCJyZWZyZXNoQ2FjaGUiLDMs'@; put 'ImNoYW5nZSIsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWzEsInRleHQtY2VudGVyIl0sWzEsInNwaW5uZXIiXSxbMSwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiZ3JhcGgtcmVuZGVyLXNwaW5uZXIiXSxbImlkIiwiZ3JhcGgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXtpZigxJmkp'@; put 'e2NvbnN0IGE9d24oKTtKKDAsImFwcC1zaWRlYmFyIiw0KSx3dCgic2Nyb2xsZWRUb0JvdHRvbSIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5sb2FkTW9yZUxpYnJhcmllcygpKX0pLEooMSwiY2xyLXRyZWUiKSx2dCgyLFkzbiw2LDMsImNsci10cmVlLW5vZGUiLDUpLF9vKDMsdHBu'@; put 'LDEsMSxudWxsLG51bGwsQ28pLHRlKCksdnQoNSxucG4sMywwLCJkaXYiLDYpLHRlKCksSig2LCJkaXYiLDcpKDcsImRpdiIsOCksdnQoOCxycG4sNCwwLCJkaXYiLDkpLHZ0KDksZ3BuLDcsNCksdGUoKSgpLEooMTAsImNsci1tb2RhbCIsMTApKDExLCJoMyIsMTEpLFNlKDEyLCJMaW1pdCBE'@; put 'ZXB0aCIpLHRlKCksSigxMywiZGl2IiwxMikoMTQsInAiKSxTZSgxNSwiRW50ZXIgdGhlIGRlcHRoIG51bWJlciB5b3Ugd291bGQgbGlrZSB0byBsaW1pdCBET1QgcmVuZGVyaW5nIHRvOiIpLHRlKCkoKSxKKDE2LCJkaXYiLDEzKSgxNywiZGl2IiwxNCksSXQoMTgsImlucHV0IiwxNSwwKSx0'@; put 'ZSgpLEooMjAsImNsci1jb250cm9sLWhlbHBlciIsMTYpLFNlKDIxLCJUbyByZW5kZXIgd2l0aCB1bmxpbWl0ZWQgZGVwdGgsIGxlYXZlIHRoZSBpbnB1dCBlbXB0eSIpLHRlKCksSigyMiwiZGl2IiwxNykoMjMsImJ1dHRvbiIsMTgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUo'@; put 'YSksWGUoby5saW1pdERvdERlcHRoPSExKX0pLFNlKDI0LCIgQ2FuY2VsICIpLHRlKCksSigyNSwiYnV0dG9uIiwxOCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKGEpO2NvbnN0IHU9b28oMTkpO3JldHVybiBvLnJlc3VibWl0V2l0aE1heERlcHRoKHUudmFsdWUpLFhlKG8ubGltaXREb3RE'@; put 'ZXB0aD0hMSl9KSxTZSgyNiwiIFJlc3VibWl0ICIpLHRlKCkoKSgpKCksSigyNywiY2xyLW1vZGFsIiwxMCkoMjgsImgzIiwxMSksU2UoMjksIldhcm5pbmciKSx0ZSgpLEooMzAsImRpdiIsMTIpKDMxLCJwIiksU2UoMzIpLHRlKCkoKSxKKDMzLCJkaXYiLDEzKSgzNCwiZGl2IiwxNykoMzUs'@; put 'InAiKSxTZSgzNiwiUmVuZGVyIGFueXdheSAodGhpcyBtYXkgdGFrZSBhIGxvbmcgdGltZSkiKSx0ZSgpLEooMzcsImJ1dHRvbiIsMTgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5jb250aW51ZVJlbmRlcmluZ0dyYXBoKCkpfSksU2UoMzgsIiBSZW5kZXIgIiks'@; put 'dGUoKSgpLEooMzksImRpdiIsMTcpKDQwLCJwIiksU2UoNDEsIkRvd25sb2FkIHRoZSByZXN1bHQgKFBORyAmIFNWRyByZXF1aXJlIHJlbmRlcmluZykiKSx0ZSgpLEooNDIsImNsci1kcm9wZG93biIpKDQzLCJidXR0b24iLDE5KSxTZSg0NCwiIERvd25sb2FkICIpLEl0KDQ1LCJjbHItaWNv'@; put 'biIsMjApLHRlKCksWW4oNDYsbXBuLDcsMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDIxKSx0ZSgpKCksSig0NywiZGl2IiwxNykoNDgsInAiKSxTZSg0OSwiUmVzdWJtaXQgd2l0aCBhIG1heC1kZXB0aCAoc3BlY2lmeSBkZXB0aCkiKSx0ZSgpLEl0KDUwLCJpbnB1dCIsMTUsMSksSig1MiwiYnV0'@; put 'dG9uIiwxOCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKGEpO2NvbnN0IHU9b28oNTEpO3JldHVybiBYZShvLnJlc3VibWl0V2l0aE1heERlcHRoKHUudmFsdWUpKX0pLFNlKDUzLCIgUmVzdWJtaXQgIiksdGUoKSgpLEooNTQsImRpdiIsMTcpKDU1LCJwIiksU2UoNTYsIkNhbmNlbCB0aGlz'@; put 'IHN1Ym1pc3Npb24iKSx0ZSgpLEooNTcsImJ1dHRvbiIsMTgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpKX0pLFNlKDU4LCIgQ2FuY2VsICIpLHRlKCkoKSgpKCl9MiZpJiYoaWUoMiksX3Qoby5saWJyYXJ5TGlzdD8yOi0x'@; put 'KSxpZSgpLHlvKG8ubGlicmFyeUxpc3QpLGllKDIpLF90KG8ubGlicmFyaWVzUGFnaW5nPzU6LTEpLGllKDMpLF90KG8uY29sdW1ufHxvLnRhYmxlPy0xOjgpLGllKCksX3Qoby5jb2x1bW58fG8udGFibGU/OTotMSksaWUoKSxydCgiY2xyTW9kYWxPcGVuIixvLmxpbWl0RG90RGVwdGgpKCJj'@; put 'bHJNb2RhbENsb3NhYmxlIiwhMSksaWUoMTcpLHJ0KCJjbHJNb2RhbE9wZW4iLG51bGwhPT1vLmxhcmdlRG90RmlsZUxpbmVzKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLGllKDUpLFNyKCIgVGhlIGdlbmVyYXRlZCBkb3QgZmlsZSBoYXMgIixvLmxhcmdlRG90RmlsZUxpbmVzLCIgbGluZXMu'@; put 'IFJlbmRlcmluZyBtYXkgdGFrZSBhIGxvbmcgdGltZSwgaG93IHdvdWxkIHlvdSBsaWtlIHRvIHByb2NlZWQ/ICIpLGllKDExKSxydCgiZGlzYWJsZWQiLCFvLmNvbHVtbiYmIW8udGFibGUpKX0sZGVwZW5kZW5jaWVzOltQMixsdSxIMixvYyxYbCxQcCxPMyxkNyxjdSx4ZCxtaCwkMCxMcCxl'@; put 'bCxZeixVMixGZixQZixvNyxqYixVYixwTSwkNixHNl0sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgX3BuPSgpPT5bMTAsMjAsNTAsMTAwXTtmdW5jdGlvbiB5cG4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsNSksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0'@; put 'PWUuJGltcGxpY2l0O3J0KCJ2YWx1ZSIsemoodCkpLGllKCksU3IoIiAiLHQsIiAiKX19ZnVuY3Rpb24gYnBuKG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsMTUpfWZ1bmN0aW9uIHdwbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24iLDE3KSx3dCgiY2xpY2siLGZ1'@; put 'bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgyKTtyZXR1cm4gaS5tZXRhRGF0YVNlYXJjaD0iIixYZShpLm1ldGFMaXN0T25GaWx0ZXIoKSl9KSx0ZSgpfX1mdW5jdGlvbiBDcG4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDYpKDEsImRpdiIsMTMpKDIs'@; put 'ImlucHV0IiwxNCwwKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLm1ldGFEYXRhU2VhcmNoLGkpfHwoby5tZXRhRGF0YVNlYXJjaD1pKSxYZShpKX0pLHd0KCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUo'@; put 'KS5tZXRhTGlzdE9uRmlsdGVyKCkpfSksdGUoKSx2dCg0LGJwbiwxLDAsImNsci1pY29uIiwxNSksdnQoNSx3cG4sMSwwLCJjbHItaWNvbiIsMTYpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9b28oMykscj1UZSgpO2llKDIpLGRpKCJuZ01vZGVsIixyLm1ldGFEYXRhU2VhcmNoKSxpZSgyKSxf'@; put 'dCh0LnZhbHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+MD81Oi0xKX19ZnVuY3Rpb24gU3BuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiwxOSksd3QoImNsaWNrIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCkuJGlt'@; put 'cGxpY2l0LGE9VGUoKTtyZXR1cm4gWGUoYS50cmVlTm9kZUNsaWNrZWQoaSxvLGEubWV0YURhdGFMaXN0KSl9KSxoaSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1wbGljaXQ7cmV0dXJuIGZpKG8uZXhwYW5kZWQsaSl8fChvLmV4cGFuZGVk'@; put 'PWkpLFhlKGkpfSksSigxLCJwIiwyMCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQsbz1UZSgpO3JldHVybiBvLm1ldGFEYXRhSWQ9aS5JRCxYZShvLm1ldGFEYXRhT25DbGljayhvLm1ldGFEYXRhSWQsaSkpfSksSXQoMiwiY2xyLWljb24iLDIx'@; put 'KSxTZSgzKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2RpKCJjbHJFeHBhbmRlZCIsdC5leHBhbmRlZCkscnQoImNsckxvYWRpbmciLHQubG9hZGluZ1RhYmxlcyYmIXQudGFibGVzKSxpZSgzKSxTcigiICIsdC5JRCwiICIpfX1mdW5jdGlvbiBFcG4obixlKXsxJm4m'@; put 'JnZ0KDAsU3BuLDQsMywiY2xyLXRyZWUtbm9kZSIsMTgpLDImbiYmX3QoZS4kaW1wbGljaXQuaGlkZGVuPy0xOjApfWZ1bmN0aW9uIE1wbihuLGUpezEmbiYmKEooMCwiZGl2IiwxMCksSXQoMSwiY2xyLWljb24iLDIyKSxKKDIsInAiLDIzKSxTZSgzLCIgUGxlYXNlIHNlbGVjdCBhIHR5cGUg'@; put 'IiksdGUoKSgpKX1mdW5jdGlvbiBUcG4obixlKXsxJm4mJihKKDAsImg0IiksU2UoMSwiTG9hZGluZyBtZXRhZGF0YSB0eXBlcyIpLHRlKCkpfWZ1bmN0aW9uIHhwbihuLGUpezEmbiYmKEooMCwiaDQiKSxTZSgxLCJMb2FkaW5nIG1ldGFkYXRhIG9iamVjdHMiKSx0ZSgpKX1mdW5jdGlvbiBB'@; put 'cG4obixlKXtpZigxJm4mJihKKDAsImRpdiIpLHZ0KDEsVHBuLDIsMCwiaDQiKSx2dCgyLHhwbiwyLDAsImg0IiksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCksX3QodC5tZXRhdHlwZXNMb2FkaW5nPzE6LTEpLGllKCksX3QodC5tZXRhdHlwZXNMb2FkaW5nPy0xOjIpfX1mdW5jdGlv'@; put 'biBrcG4obixlKXtpZigxJm4mJihKKDAsImRpdiIsMTEpKDEsInNwYW4iLDI0KSxTZSgyLCIgTG9hZGluZy4uLiAiKSx0ZSgpLHZ0KDMsQXBuLDMsMiwiZGl2IiksdGUoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoMyksX3QodC5sb2FkaW5nPzM6LTEpfX1mdW5jdGlvbiBScG4obixlKXtpZigx'@; put 'Jm4pe2NvbnN0IHQ9d24oKTtKKDAsImRpdiIsMjYpKDEsImlucHV0IiwzMCwxKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgyKTtyZXR1cm4gZmkoby5tZXRhT2JqZWN0U2VhcmNoLGkpfHwoby5tZXRhT2JqZWN0U2VhcmNoPWkpLFhlKGkpfSksd3Qo'@; put 'ImtleXVwIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgyKS5tZXRhT2JqZWN0T25GaWx0ZXIoKSl9KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKCksZGkoIm5nTW9kZWwiLHQubWV0YU9iamVjdFNlYXJjaCl9fWZ1bmN0aW9uIElwbihuLGUpezEmbiYmSXQoMCwiY2xy'@; put 'LWljb24iLDMyKX1mdW5jdGlvbiBEcG4obixlKXsxJm4mJkl0KDAsImNsci1pY29uIiwyMSl9ZnVuY3Rpb24gTHBuKG4sZSl7aWYoMSZuJiYoSigwLCJwIiwzOSksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKCksU3IoIiAiLHQuVVJJLCIgIil9fWZ1bmN0aW9u'@; put 'IE9wbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRyZWUtbm9kZSIsMzcpKDEsImRpdiIsMzgpKDIsImRpdiIpLHZ0KDMsSXBuLDEsMCwiY2xyLWljb24iLDMyKSx2dCg0LERwbiwxLDAsImNsci1pY29uIiwyMSksU2UoNSksdGUoKSx2dCg2LExwbiwyLDEsInAiLDM5KSx0ZSgpKCkpLDImbil7'@; put 'Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgiY2xyRXhwYW5kYWJsZSIsITApLGllKCksd3IoIm9iamVjdC1oZWFkZXIiLCF0LmNvdW50KSxpZSgyKSxfdCh0LmNvdW50Py0xOjMpLGllKCksX3QodC5jb3VudD80Oi0xKSxpZSgpLFNyKCIgIix0LmRpc3BsYXksIiAiKSxpZSgpLF90KHQuY291bnQ/'@; put 'LTE6Nil9fWZ1bmN0aW9uIE5wbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRyZWUiLDM1KSxZbigxLE9wbiw3LDcsImNsci10cmVlLW5vZGUiLDM2KSxBYygyLCJhc3luYyIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSg2KTtydCgiY2xyTGF6eSIsITApLGllKCkscnQoImNsclJlY3Vyc2l2ZUZv'@; put 'ck9mIixUZCgyLDMsdC5yb290JCkpKCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsdC5nZXRDaGlsZHJlbil9fWZ1bmN0aW9uIEZwbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLWFjY29yZGlvbi1jb250ZW50IiksdnQoMSxOcG4sMyw1LCJjbHItdHJlZSIsMzUpLHRlKCkpLDImbil7Y29u'@; put 'c3QgdD1UZSg1KTtpZSgpLF90KHQuc2hvd0FjYz8xOi0xKX19ZnVuY3Rpb24gUHBuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItYWNjb3JkaW9uLXBhbmVsIiwzMSksd3QoImNsckFjY29yZGlvblBhbmVsT3BlbkNoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1U'@; put 'ZSgpLiRpbXBsaWNpdCxhPVRlKDMpO3JldHVybiBYZShpP2EucGFuZWxDaGFuZ2UoaSxvKToiIil9KSxKKDEsImNsci1hY2NvcmRpb24tdGl0bGUiKSxJdCgyLCJjbHItaWNvbiIsMzIpLFNlKDMpLEooNCwicCIsMzMpLFNlKDUpLHRlKCkoKSxZbig2LEZwbiwyLDEsImNsci1hY2NvcmRpb24t'@; put 'Y29udGVudCIsMzQpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKDMpLFNyKCIgIix0Lk5BTUUsIiAiKSxpZSgyKSxwcih0LklEKX19ZnVuY3Rpb24gSHBuKG4sZSl7MSZuJiZ2dCgwLFBwbiw3LDIsImNsci1hY2NvcmRpb24tcGFuZWwiKSwyJm4mJl90KGUuJGltcGxp'@; put 'Y2l0LmhpZGRlbj8tMTowKX1mdW5jdGlvbiBWcG4obixlKXtpZigxJm4mJihKKDAsImRpdiIsMjcpKDEsImNsci1hY2NvcmRpb24iKSxfbygyLEhwbiwxLDEsbnVsbCxudWxsLENvKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgyKSx5byh0Lm1ldGFPYmplY3RTaG93TGlzdCl9fWZ1'@; put 'bmN0aW9uIEJwbihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDMyKX1mdW5jdGlvbiBqcG4obixlKXsxJm4mJkl0KDAsImNsci1pY29uIiwyMSl9ZnVuY3Rpb24gVXBuKG4sZSl7aWYoMSZuJiYoSigwLCJwIiwzOSksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2ll'@; put 'KCksU3IoIiAiLHQuVVJJLCIgIil9fWZ1bmN0aW9uIHpwbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRyZWUtbm9kZSIsMzcpKDEsImRpdiIsMzgpKDIsImRpdiIpLHZ0KDMsQnBuLDEsMCwiY2xyLWljb24iLDMyKSx2dCg0LGpwbiwxLDAsImNsci1pY29uIiwyMSksU2UoNSksdGUoKSx2dCg2'@; put 'LFVwbiwyLDEsInAiLDM5KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgiY2xyRXhwYW5kYWJsZSIsITApLGllKCksd3IoIm9iamVjdC1oZWFkZXIiLCF0LmNvdW50KSxpZSgyKSxfdCh0LmNvdW50Py0xOjMpLGllKCksX3QodC5jb3VudD80Oi0xKSxpZSgpLFNyKCIgIix0'@; put 'LmRpc3BsYXksIiAiKSxpZSgpLF90KHQuY291bnQ/LTE6Nil9fWZ1bmN0aW9uIFdwbihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRyZWUiLDM1KSxZbigxLHpwbiw3LDcsImNsci10cmVlLW5vZGUiLDM2KSxBYygyLCJhc3luYyIpLHRlKCkpLDImbil7Y29uc3QgdD1UZSg0KTtydCgiY2xyTGF6'@; put 'eSIsITApLGllKCkscnQoImNsclJlY3Vyc2l2ZUZvck9mIixUZCgyLDMsdC5yb290JCkpKCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsdC5nZXRDaGlsZHJlbil9fWZ1bmN0aW9uIFlwbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw0MCksSXQoMSwiY2xyLWljb24iLDMyKSxKKDIsImRp'@; put 'diIsNDEpKDMsInAiLDQyKSxTZSg0KSx0ZSgpLEooNSwicCIsNDMpLFNlKDYpLHRlKCkoKSgpLHZ0KDcsV3BuLDMsNSwiY2xyLXRyZWUiLDM1KSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoMyk7aWUoNCksU3IoIiAiLHQuTkFNRSwiICIpLGllKDIpLFNyKCIgIix0LklELCIgIiks'@; put 'aWUoKSxfdChyLnNob3dBY2M/NzotMSl9fWZ1bmN0aW9uIFpwbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwyNyksX28oMSxZcG4sOCwzLG51bGwsbnVsbCxDbyksdGUoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKCkseW8odC5tZXRhT2JqZWN0U2hvd0xpc3QpfX1mdW5jdGlvbiBHcG4obixl'@; put 'KXtpZigxJm4mJihKKDAsImNsci1kZy1yb3ciKSgxLCJjbHItZGctY2VsbCIpLFNlKDIpLHRlKCksSigzLCJjbHItZGctY2VsbCIpLFNlKDQpLHRlKCksSig1LCJjbHItZGctY2VsbCIpLFNlKDYpLHRlKCkoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKDIpLHByKHQuVFlQRSksaWUo'@; put 'MikscHIodC5OQU1FKSxpZSgyKSxwcih0LlZBTFVFKX19ZnVuY3Rpb24gJHBuKG4sZSl7aWYoMSZuJiYoSigwLCJjbHItZGF0YWdyaWQiLDI5KSgxLCJjbHItZGctY29sdW1uIiksU2UoMiwiIFRZUEUgIiksSXQoMywiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDQ0KSx0ZSgpLEooNCwiY2xyLWRn'@; put 'LWNvbHVtbiIpLFNlKDUsIiBOQU1FICIpLEl0KDYsImNsci1kZy1zdHJpbmctZmlsdGVyIiw0NCksdGUoKSxKKDcsImNsci1kZy1jb2x1bW4iKSxTZSg4LCIgVkFMVUUgIiksSXQoOSwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDQ0KSx0ZSgpLFluKDEwLEdwbiw3LDMsImNsci1kZy1yb3ciLDQ1'@; put 'KSxKKDExLCJjbHItZGctZm9vdGVyIikoMTIsImNsci1kZy1wYWdpbmF0aW9uIiw0NiwyKSgxNCwiY2xyLWRnLXBhZ2Utc2l6ZSIsNDcpLFNlKDE1LCJBdHRyaWJ1dGVzIHBlciBwYWdlIiksdGUoKSxTZSgxNiksdGUoKSgpKCkpLDImbil7Y29uc3QgdD1vbygxMykscj1UZSgyKTtpZSgzKSxy'@; put 'dCgiY2xyRGdTdHJpbmdGaWx0ZXIiLHIudHlwZUZpbHRlciksaWUoMykscnQoImNsckRnU3RyaW5nRmlsdGVyIixyLm5hbWVGaWx0ZXIpLGllKDMpLHJ0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsci52YWx1ZUZpbHRlciksaWUoKSxydCgiY2xyRGdJdGVtc09mIixyLm1ldGFPYmplY3RBdHRyaWJ1'@; put 'dGVzKSxpZSgyKSxydCgiY2xyRGdQYWdlU2l6ZSIsMTApLGllKDIpLHJ0KCJjbHJQYWdlU2l6ZU9wdGlvbnMiLG1jKDksX3BuKSksaWUoMiksZTQoIiAiLHQuZmlyc3RJdGVtKzEsIiAtICIsdC5sYXN0SXRlbSsxLCIgb2YgIix0LnRvdGFsSXRlbXMsIiBBdHRyaWJ1dGVzICIpfX1mdW5jdGlv'@; put 'biBxcG4obixlKXtpZigxJm4mJihKKDAsImRpdiIsMTIpKDEsImRpdiIsMjUpLHZ0KDIsUnBuLDMsMSwiZGl2IiwyNiksSXQoMywiYnIiKSx2dCg0LFZwbiw0LDAsImRpdiIsMjcpLHZ0KDUsWnBuLDMsMCwiZGl2IiwyNyksdGUoKSxKKDYsImRpdiIsMjgpKDcsImgzIiksU2UoOCksdGUoKSx2'@; put 'dCg5LCRwbiwxNywxMCwiY2xyLWRhdGFncmlkIiwyOSksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoKTtpZSgyKSxfdCh0Lm1ldGFPYmplY3RMaXN0JiYhdC5vYmplY3RSb3V0ZT8yOi0xKSxpZSgyKSxfdCh0Lm9iamVjdFZpZXc/LTE6NCksaWUoKSxfdCh0Lm9iamVjdFZpZXc/NTotMSksaWUo'@; put 'MykscHIodC5hc3NvT2JqZWN0U2VsZWN0ZWQpLGllKCksX3QodC5zaG93VGFibGU/OTotMSl9fWNsYXNzIEtwbnthY2NlcHRzKGUsdCl7cmV0dXJuIiIrZS5OQU1FPT09dHx8ZS5OQU1FLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0KT49MH19Y2xhc3MgWHBue2FjY2VwdHMoZSx0KXtyZXR1cm4i'@; put 'IitlLlRZUEU9PT10fHxlLlRZUEUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHQpPj0wfX1jbGFzcyBRcG57YWNjZXB0cyhlLHQpe3JldHVybiIiK2UuVkFMVUU9PT10fHxlLlZBTFVFLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0KT49MH19bGV0IFY0ZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0'@; put 'cnVjdG9yKHIsaSxvLGEsbCx1KXt0aGlzLmV2ZW50U2VydmljZT1yLHRoaXMuc2FzU2VydmljZT1pLHRoaXMuaGVscGVyU2VydmljZT1vLHRoaXMubG9jYXRpb249YSx0aGlzLnJvdXRlcj1sLHRoaXMucm91dGU9dSx0aGlzLm1ldGFEYXRhU2VhcmNoPSIiLHRoaXMubWV0YU9iamVjdFNlYXJj'@; put 'aD0iIix0aGlzLm1ldGFPYmplY3RBc3NvY2lhdGlvbnM9W10sdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLnNob3dUYWJsZT0hMSx0aGlzLnNob3dBY2M9ITEsdGhpcy5tZXRhRGF0YUlkPSIiLHRoaXMubG9hZGluZz0hMCx0aGlzLm1ldGF0eXBlc0xvYWRpbmc9ITAsdGhpcy5t'@; put 'ZXRhT2JqZWN0U2l6ZT0yMDAsdGhpcy5hc3NvVHlwZVNlbGVjdGVkPSIiLHRoaXMuYXNzb09iamVjdFNlbGVjdGVkPSIiLHRoaXMucmVwb3NpdG9yeT0iIix0aGlzLm9iamVjdFJvdXRlPSExLHRoaXMuc2hvd0RhdGE9ITEsdGhpcy5vYmplY3RWaWV3PSExLHRoaXMuZ2V0Q2hpbGRyZW49Zz0+'@; put 'Zy5jb3VudD9QYShnLmRldGFpbHMpOnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFkZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2JqZWN0dXJpOmcuQVNTT0NVUkl9XX0pLnRoZW4oTz0+e3RoaXMuc2hvd1RhYmxlPSEwLHRoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9'@; put 'Ty5hZGFwdGVyUmVzcG9uc2UuYXR0cmlidXRlcyx0aGlzLmFzc29PYmplY3RTZWxlY3RlZD1nLk5BTUU7bGV0IFo9dGhpcy5yb3V0ZXIudXJsO3JldHVybiB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLm9iamVjdFJvdXRlP1ouc2xpY2UoMCxaLmxhc3RJbmRleE9mKCJvYmplY3Qi'@; put 'KSkrIm9iamVjdC8iK2cuQVNTT0NVUkkuc2xpY2UoMStnLkFTU09DVVJJLmluZGV4T2YoIlxcIikpOlorIi9vYmplY3QvIitnLkFTU09DVVJJLnNsaWNlKDErZy5BU1NPQ1VSSS5pbmRleE9mKCJcXCIpKSksdGhpcy5nZXRBc3Nvc2lhdGlvbnNDb3VudChPLmFkYXB0ZXJSZXNwb25zZS5hc3Nv'@; put 'Y2lhdGlvbnMpfSksdGhpcy5kZWJvdW5jZT0hMX1uZ09uSW5pdCgpe1VuLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L21ldGFkYXRhIix0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoIi92aWV3L21ldGFkYXRhL29iamVjdC8iKSYmKHRoaXMub2JqZWN0Um91dGU9ITAsdGhpcy5vYmpl'@; put 'Y3RWaWV3PSEwKSx0aGlzLnBhZ2VTaXplPTUsdGhpcy50eXBlRmlsdGVyPW5ldyBYcG4sdGhpcy5uYW1lRmlsdGVyPW5ldyBLcG4sdGhpcy52YWx1ZUZpbHRlcj1uZXcgUXBuLFVuLm1ldGFkYXRhLm1ldGFEYXRhTGlzdCYmVW4ubWV0YWRhdGEubWV0YVJlcG9zaXRvcmllcyYmIXRoaXMub2Jq'@; put 'ZWN0Um91dGU/KHRoaXMubWV0YURhdGFMaXN0PVVuLm1ldGFkYXRhLm1ldGFEYXRhTGlzdCx0aGlzLnJlcG9zaXRvcmllcz1Vbi5tZXRhZGF0YS5tZXRhUmVwb3NpdG9yaWVzLHRoaXMucmVwb3NpdG9yeT1Vbi5tZXRhZGF0YS5zZWxlY3RlZFJlcG9zaXRvcnksdGhpcy5sb2FkaW5nPSExLHRo'@; put 'aXMubWV0YXR5cGVzTG9hZGluZz0hMSx0aGlzLm1ldGFEYXRhU2VhcmNoPVVuLm1ldGFkYXRhLm1ldGFEYXRhU2VhcmNoKToodGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YXR5cGVzIixudWxsKS50aGVuKHI9Pnt0aGlzLm1ldGFEYXRhTGlzdD1yLmFkYXB0ZXJSZXNwb25z'@; put 'ZS50eXBlcyxVbi5tZXRhZGF0YS5tZXRhRGF0YUxpc3Q9dGhpcy5tZXRhRGF0YUxpc3QsdGhpcy5sb2FkaW5nPSExLHRoaXMubWV0YXR5cGVzTG9hZGluZz0hMX0pLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFyZXBvcyIsbnVsbCkudGhlbihyPT57bGV0IGk9ITE7dGhp'@; put 'cy5yZXBvc2l0b3JpZXM9W107Zm9yKGxldCBvPTA7bzxyLmFkYXB0ZXJSZXNwb25zZS5vdXRyZXBvcy5sZW5ndGg7bysrKXRoaXMucmVwb3NpdG9yaWVzLnB1c2goci5hZGFwdGVyUmVzcG9uc2Uub3V0cmVwb3Nbb10uTkFNRSksIkZvdW5kYXRpb24iPT09ci5hZGFwdGVyUmVzcG9uc2Uub3V0'@; put 'cmVwb3Nbb10uTkFNRSYmKGk9ITApO2lmKHRoaXMucmVwb3NpdG9yeT1pPyJGb3VuZGF0aW9uIjpyLmFkYXB0ZXJSZXNwb25zZS5vdXRyZXBvc1swXS5OQU1FLFVuLm1ldGFkYXRhLm1ldGFSZXBvc2l0b3JpZXM9dGhpcy5yZXBvc2l0b3JpZXMsVW4ubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0'@; put 'b3J5PXRoaXMucmVwb3NpdG9yeSx0aGlzLm9iamVjdFJvdXRlKXt0aGlzLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSx0aGlzLnNob3dEYXRhPSEwO2xldCBvPSIiLGE9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMub2JqZWN0SUQ7dGhpcy5tZXRhT2JqZWN0TGlzdD1bXSx0aGlzLm1l'@; put 'dGFPYmplY3RMaXN0LnB1c2goe0lEOmEsTkFNRTpvfSksdGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9dGhpcy5tZXRhT2JqZWN0TGlzdCx0aGlzLm1ldGFPYmplY3RPbkNsaWNrKHRoaXMubWV0YU9iamVjdFNob3dMaXN0WzBdLklELHRoaXMubWV0YU9iamVjdFNob3dMaXN0WzBdKX19KSl9dHJl'@; put 'ZU5vZGVDbGlja2VkKHIsaSxvKXsiQ29sbGFwc2UiPT09ci50YXJnZXQudGl0bGUmJnRoaXMuY29sbGFwc2VUcmVlSXRlbXMobyxpKX1jb2xsYXBzZVRyZWVJdGVtcyhyLGkpe3IuZm9yRWFjaChvPT57SlNPTi5zdHJpbmdpZnkobykhPT1KU09OLnN0cmluZ2lmeShpKSYmKG8uZXhwYW5kZWQ9'@; put 'ITEpfSl9bWV0YURhdGFPbkNsaWNrKHIsaSl7dGhpcy5vYmplY3RWaWV3PSExLHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCIvdmlldy9tZXRhZGF0YSIpLHRoaXMuc2hvd0RhdGE9ITEsdGhpcy5sb2FkaW5nPSEwLHRoaXMuc2VsZWN0bWV0YURhdGEocixpKX1tZXRhT2JqZWN0T25DbGlj'@; put 'ayhyLGkpe3RoaXMuYXNzb09iamVjdFNlbGVjdGVkPSIgLiAiLHRoaXMuc2hvd0FjYz0hMSx0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPVtdLHRoaXMuc2VsZWN0bWV0YU9iamVjdChyLGkpfXNlbGVjdG1ldGFEYXRhKHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7by5z'@; put 'YXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YW9iamVjdHMiLHtTQVNDb250cm9sVGFibGU6W3ttZXRhdHlwZTpyLHJlcG86by5yZXBvc2l0b3J5fV19KS50aGVuKGw9PntvLm1ldGFPYmplY3RMaXN0PWwuYWRhcHRlclJlc3BvbnNlLm9iamVjdHMsby5nZXRNZXRhT2JqZWN0QXR0cmli'@; put 'dXRlcyhvLm1ldGFPYmplY3RTaXplKSxvLmxvYWRpbmc9ITEsby5hc3NvVHlwZVNlbGVjdGVkPXIsby5ldmVudFNlcnZpY2UuY2xvc2VTaWRlYmFyKCksby5zaG93RGF0YT0hMH0pfSkoKX1zZWxlY3RtZXRhT2JqZWN0KHIsaSl7dmFyIG89dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7by5z'@; put 'YXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YWRldGFpbHMiLHtTQVNDb250cm9sVGFibGU6W3tvYmplY3R1cmk6cn1dfSkudGhlbihsPT57by5tZXRhT2JqZWN0QXNzb2NpYXRpb25zPWwuYWRhcHRlclJlc3BvbnNlLmFzc29jaWF0aW9ucyxvLnJvb3QkPVBhKG8uZ2V0QXNzb3NpYXRp'@; put 'b25zQ291bnQobC5hZGFwdGVyUmVzcG9uc2UuYXNzb2NpYXRpb25zKSksby5zaG93QWNjPSEwLG8uc2hvd1RhYmxlPSEwO2xldCB1PWwuYWRhcHRlclJlc3BvbnNlLmF0dHJpYnV0ZXMuZmluZChFPT4iTmFtZSI9PT1FLk5BTUUpLlZBTFVFO28uYXNzb09iamVjdFNlbGVjdGVkPXUsaS5OQU1F'@; put 'PXU7bGV0IGc9by5yb3V0ZXIudXJsO28ubG9jYXRpb24ucmVwbGFjZVN0YXRlKG8ub2JqZWN0Um91dGU/Zy5zbGljZSgwLGcubGFzdEluZGV4T2YoIm9iamVjdCIpKSsib2JqZWN0LyIrci5zbGljZSgxK3IuaW5kZXhPZigiXFwiKSk6ZysiL29iamVjdC8iK3Iuc2xpY2UoMStyLmluZGV4T2Yo'@; put 'IlxcIikpKSxvLm1ldGFPYmplY3RBdHRyaWJ1dGVzPWwuYWRhcHRlclJlc3BvbnNlLmF0dHJpYnV0ZXN9KX0pKCl9c2VsZWN0QXNzb3NpYXRpb25zRGV0YWlscyhyLGkpe3ZhciBvPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe28uc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFk'@; put 'ZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2JqZWN0dXJpOnJ9XX0pLnRoZW4obD0+e28ubWV0YU9iamVjdEF0dHJpYnV0ZXM9bC5hZGFwdGVyUmVzcG9uc2UuYXR0cmlidXRlcyxvLnNob3dUYWJsZT0hMH0pfSkoKX1nZXRBc3Nvc2lhdGlvbnNDb3VudChyKXtsZXQgaT1uZXcgTWFwO2Zv'@; put 'cihsZXQgYSBvZiByKXtpLmhhcyhhLkFTU09DKXx8aS5zZXQoYS5BU1NPQyx7Y291bnQ6MCxkZXRhaWxzOltdfSk7bGV0IGw9aS5nZXQoYS5BU1NPQyk7bC5jb3VudCsrLGwuZGV0YWlscy5wdXNoKHtBU1NPQ1VSSTphLkFTU09DVVJJLE5BTUU6YS5OQU1FLGRpc3BsYXk6YS5OQU1FLFVSSTph'@; put 'LkFTU09DVVJJLnNsaWNlKGEuQVNTT0NVUkkuaW5kZXhPZigiOiIpKzEpfSl9bGV0IG89W107cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihhLGwpe28ucHVzaCh7QVNTT0M6bCxjb3VudDphLmNvdW50LGRldGFpbHM6YS5kZXRhaWxzLGRpc3BsYXk6bCsiICggIithLmNvdW50KyIgKSJ9KX0p'@; put 'LG99c2V0VHlwZUFzc29zaWF0aW9ucyhyKXtsZXQgaT1bXTtmb3IobGV0IG8gb2YgdGhpcy5tZXRhT2JqZWN0QXNzb2NpYXRpb25zKW8uQVNTT0M9PT1yJiZpLnB1c2gobyk7cmV0dXJuIHRoaXMuYXNzb3NpYXRpb25OYW1lcz1pLGl9YXNzb3NpYXRpb25OYW1lT25DbGljayhyKXt0aGlzLmFz'@; put 'c29PYmplY3RTZWxlY3RlZD0iIC4gIix0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPVtdLHRoaXMuc2hvd1RhYmxlPSExLHRoaXMuc2VsZWN0QXNzb3NpYXRpb25zRGV0YWlscyhyKX1tZXRhTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLm1l'@; put 'dGFEYXRhTGlzdCx0aGlzLm1ldGFEYXRhU2VhcmNoLCJJRCIpLFVuLm1ldGFkYXRhLm1ldGFEYXRhU2VhcmNoPXRoaXMubWV0YURhdGFTZWFyY2h9bWV0YU9iamVjdE9uRmlsdGVyKCl7dGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLmhlbHBlclNlcnZpY2UubWV0YU9iamVjdE9u'@; put 'RmlsdGVyKHRoaXMubWV0YU9iamVjdExpc3QsdGhpcy5tZXRhT2JqZWN0U2VhcmNoLCJOQU1FIiksdGhpcy5nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyh0aGlzLm1ldGFPYmplY3RTaXplKSxVbi5tZXRhZGF0YS5tZXRhT2JqZWN0U2VhcmNoPXRoaXMubWV0YU9iamVjdFNlYXJjaH1nZXRNZXRh'@; put 'T2JqZWN0QXR0cmlidXRlcyhyKXtpZih2b2lkIDAhPT10aGlzLm1ldGFPYmplY3RMaXN0JiZ0aGlzLm1ldGFPYmplY3RMaXN0Lmxlbmd0aD5yKXtsZXQgaT0wLG89LTE7Zm9yKGxldCBhPTA7YTx0aGlzLm1ldGFPYmplY3RMaXN0Lmxlbmd0aDthKyspaWYoKHZvaWQgMD09PXRoaXMubWV0YU9i'@; put 'amVjdExpc3RbYV0uaGlkZGVufHwhMT09PXRoaXMubWV0YU9iamVjdExpc3RbYV0uaGlkZGVuKSYmaSsrLGk9PT1yKXtvPWE7YnJlYWt9dGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9LTEhPT1vP3RoaXMubWV0YU9iamVjdExpc3Quc2xpY2UoMCxvKTp0aGlzLm1ldGFPYmplY3RMaXN0fWVsc2Ug'@; put 'dGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9dGhpcy5tZXRhT2JqZWN0TGlzdH1wYW5lbENoYW5nZShyLGkpe3RoaXMuZGVib3VuY2V8fCh0aGlzLm1ldGFPYmplY3RPbkNsaWNrKGkuSUQsaSksdGhpcy5kZWJvdW5jZT0hMCxzZXRUaW1lb3V0KCgpPT57dGhpcy5kZWJvdW5jZT0hMX0sNjAwKSl9'@; put 'dXBkYXRlU2VsZWN0ZWRSZXBvc2l0b3J5KCl7VW4ubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5PXRoaXMucmVwb3NpdG9yeX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKSh6ZSh1ZCksemUoaWMpLHplKGZoKSx6ZShWMCksemUo'@; put 'dmMpLHplKHAxKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC1tZXRhZGF0YSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczoxOSx2YXJzOjYsY29uc3RzOltbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJd'@; put 'LFsic2VhcmNoT2JqVHJlZUlucHV0IiwiIl0sWyJwYWdpbmF0aW9uIiwiIl0sWzEsInJlcG8tZHJvcGRvd24iXSxbImNsclNlbGVjdCIsIiIsImlkIiwicmVwb3NpdG9yeSIsMywibmdNb2RlbENoYW5nZSIsImNoYW5nZSIsIm5nTW9kZWwiXSxbMywidmFsdWUiXSxbMSwic2VhcmNoLW5vZGUi'@; put 'XSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiLCJiYWNrZ3JvdW5kLXRyYW5zcGFyZW50LWkiXSxbMSwiY29sb3ItZ3JheSJdLFsxLCJuby10YWJsZS1zZWxlY3RlZCJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJjbHItcm93IiwiY2xyLWZsZXgtZ3Jvdy0xIl0sWzEsInRyZWUtc2Vh'@; put 'cmNoLXdyYXBwZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwic2VhcmNoIFNBUyBUeXBlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJz'@; put 'ZWFyY2giXSxbInNoYXBlIiwidGltZXMiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyJdLFszLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiwiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIl0sWzEsIm0tMCIsImN1cnNvci1wb2lu'@; put 'dGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJibG9jayJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iLDEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSIsIm10LTEwIl0sWzEs'@; put 'InNwaW5uZXIiXSxbMSwiY2xyLWNvbC02Il0sWzEsInNlYXJjaC1pbnB1dCJdLFsxLCJvYmplY3RzLWNvbCJdLFsxLCJjbHItY29sLTYiLCJ0ZXh0LWNlbnRlciJdLFsxLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwic2VhcmNoIiwibmFt'@; put 'ZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWzMsImNsckFjY29yZGlvblBhbmVsT3BlbkNoYW5nZSJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFsxLCJmbG9hdC1yaWdodCJdLFs0LCJjbHJJZkV4cGFuZGVkIl0s'@; put 'WzMsImNsckxhenkiXSxbMywiY2xyRXhwYW5kYWJsZSIsNCwiY2xyUmVjdXJzaXZlRm9yIiwiY2xyUmVjdXJzaXZlRm9yT2YiLCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiJdLFszLCJjbHJFeHBhbmRhYmxlIl0sWzEsImZ1bGwtd2lkdGgiXSxbMSwiZmxvYXQtcmlnaHQiLCJvYmplY3Qt'@; put 'dXJpIl0sWzEsImNvbHMtaGVhZCJdLFsxLCJvYmplY3QtdGV4dCJdLFsxLCJtLTAiLCJ3b3JkLWJyZWFrIiwibXItMjAiXSxbMSwiZmxvYXQtcmlnaHQiLCJtbC0zIl0sWzMsImNsckRnU3RyaW5nRmlsdGVyIl0sWzQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xyRGdQYWdl'@; put 'U2l6ZSJdLFszLCJjbHJQYWdlU2l6ZU9wdGlvbnMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJihKKDAsImFwcC1zaWRlYmFyIikoMSwiZGl2IiwzKSgyLCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDMsImxhYmVsIiksU2UoNCwiTWV0YWRhdGEgUmVwb3NpdG9yeSIpLHRlKCksSig1'@; put 'LCJzZWxlY3QiLDQpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihsKXtyZXR1cm4gZmkoby5yZXBvc2l0b3J5LGwpfHwoby5yZXBvc2l0b3J5PWwpLGx9KSx3dCgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBvLnVwZGF0ZVNlbGVjdGVkUmVwb3NpdG9yeSgpfSksX28oNix5cG4sMiwz'@; put 'LCJvcHRpb24iLDUsQ28pLHRlKCkoKSgpLEooOCwiY2xyLXRyZWUiKSx2dCg5LENwbiw2LDMsImNsci10cmVlLW5vZGUiLDYpLF9vKDEwLEVwbiwxLDEsbnVsbCxudWxsLENvKSx0ZSgpKCksSigxMiwiZGl2Iiw3KSgxMywiZGl2Iiw4KSgxNCwiaDMiLDkpLFNlKDE1KSx0ZSgpLHZ0KDE2LE1w'@; put 'biw0LDAsImRpdiIsMTApLHZ0KDE3LGtwbiw0LDEsImRpdiIsMTEpLHZ0KDE4LHFwbiwxMCw1LCJkaXYiLDEyKSx0ZSgpKCkpLDImaSYmKGllKDUpLGRpKCJuZ01vZGVsIixvLnJlcG9zaXRvcnkpLGllKCkseW8oby5yZXBvc2l0b3JpZXMpLGllKDMpLF90KG8ubWV0YURhdGFMaXN0Pzk6LTEp'@; put 'LGllKCkseW8oby5tZXRhRGF0YUxpc3QpLGllKDUpLHByKG8uYXNzb1R5cGVTZWxlY3RlZCksaWUoKSxfdChvLmxvYWRpbmd8fG8ubWV0YU9iamVjdExpc3Q/LTE6MTYpLGllKCksX3Qoby5sb2FkaW5nPzE3Oi0xKSxpZSgpLF90KG8uc2hvd0RhdGE/MTg6LTEpKX0sZGVwZW5kZW5jaWVzOltY'@; put 'ZyxRZyxsdSxLZyxvYyxYbCxOdix2NCx0dyxmVyx4TSxZRCxwVyxMdixqTWUsRzUsbncsUk0sT3YsUWIsRHYsSmIsU00sUHAsTzMsJE1lLGN1LCQwLHpFZSxlbCxQZixxYixDTSxrRWUsQnosSUVlLFJFZSxERWUsVm9lLCQ2LEc2LG1JXSxlbmNhcHN1bGF0aW9uOjJ9KSx0aGlzLlx1MDI3NXBy'@; put 'b3Y9Sm4oe3Rva2VuOmUsZmFjdG9yeTplLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pKX1yZXR1cm4gbigpLGV9KSgpO2Z1bmN0aW9uIEpwbihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDcpfWZ1bmN0aW9uIGVnbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWlj'@; put 'b24iLDkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLnJvbGVTZWFyY2g9IiIsWGUoaS5yb2xlTGlzdE9uRmlsdGVyKCkpfSksdGUoKX19ZnVuY3Rpb24gdGduKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiwy'@; put 'KSgxLCJkaXYiLDUpKDIsImlucHV0Iiw2LDApLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCk7cmV0dXJuIGZpKG8ucm9sZVNlYXJjaCxpKXx8KG8ucm9sZVNlYXJjaD1pKSxYZShpKX0pLHd0KCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCks'@; put 'WGUoVGUoKS5yb2xlTGlzdE9uRmlsdGVyKCkpfSksdGUoKSx2dCg0LEpwbiwxLDAsImNsci1pY29uIiw3KSx2dCg1LGVnbiwxLDAsImNsci1pY29uIiw4KSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PW9vKDMpLHI9VGUoKTtpZSgyKSxkaSgibmdNb2RlbCIsci5yb2xlU2VhcmNoKSxpZSgyKSxf'@; put 'dCh0LnZhbHVlLmxlbmd0aDwxPzQ6LTEpLGllKCksX3QodC52YWx1ZS5sZW5ndGg+MD81Oi0xKX19ZnVuY3Rpb24gbmduKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiwxMSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1w'@; put 'bGljaXQ7cmV0dXJuIFhlKFRlKCkucm9sZU9uQ2xpY2soaSkpfSksSigxLCJwIiwxMiksSXQoMiwiY2xyLWljb24iLDEzKSxTZSgzKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0LHI9VGUoKTt3cigiYWN0aXZlIix0LlJPTEVVUkk9PT1yLnJvbGVVcmkpLGllKDMpLFNy'@; put 'KCIgIix0LlJPTEVOQU1FLCIgIil9fWZ1bmN0aW9uIHJnbihuLGUpezEmbiYmdnQoMCxuZ24sNCwzLCJjbHItdHJlZS1ub2RlIiwxMCksMiZuJiZfdChlLiRpbXBsaWNpdC5oaWRkZW4/LTE6MCl9ZnVuY3Rpb24gaWduKG4sZSl7MSZuJiYoSigwLCJkaXYiLDQpKDEsInNwYW4iLDE0KSxTZSgy'@; put 'LCIgTG9hZGluZy4uLiAiKSx0ZSgpKCkpfWZ1bmN0aW9uIG9nbihuLGUpezEmbiYmKEooMCwiaDUiKSxTZSgxLCJObyBNZW1iZXJzIFByZXNlbnQiKSx0ZSgpKX1mdW5jdGlvbiBhZ24obixlKXtpZigxJm4mJihKKDAsInRyIiwyNSkoMSwidGQiLDI0KSxTZSgyKSx0ZSgpLEooMywidGQiLDI0'@; put 'KSxTZSg0KSx0ZSgpLEooNSwidGQiLDI0KSxTZSg2KSx0ZSgpLEooNywidGQiLDI0KSxTZSg4KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvdXNlcnMvIit0LlVSSU1FTSksaWUoMikscHIodC5NRU1CRVJOQU1FKSxpZSgy'@; put 'KSxwcih0LkVNQUlMKSxpZSgyKSxwcih0Lk1FTUJFUkNSRUFURUQpLGllKDIpLHByKHQuTUVNQkVSVVBEQVRFRCl9fWZ1bmN0aW9uIHNnbihuLGUpe2lmKDEmbiYmKEooMCwidGFibGUiLDIyKSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDIzKSg0LCJiIiksU2UoNSwiTkFNRSIpLHRlKCko'@; put 'KSxKKDYsInRkIiwyMykoNywiYiIpLFNlKDgsIkVNQUlMIiksdGUoKSgpLEooOSwidGQiLDIzKSgxMCwiYiIpLFNlKDExLCJDUkVBVEVEIiksdGUoKSgpLEooMTIsInRkIiwyNCkoMTMsImIiKSxTZSgxNCwiVVBEQVRFRCIpLHRlKCkoKSgpKCksSigxNSwidGJvZHkiKSxfbygxNixhZ24sOSw1'@; put 'LCJ0ciIsMjUsQ28pLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKDE2KSx5byh0LnJvbGVNZW1iZXJzKX19ZnVuY3Rpb24gbGduKG4sZSl7MSZuJiYoSigwLCJoNSIpLFNlKDEsIk5vIEdyb3VwcyBQcmVzZW50ICEiKSx0ZSgpKX1mdW5jdGlvbiBjZ24obixlKXtpZigxJm4mJihKKDAs'@; put 'InRyIiwyNSkoMSwidGQiLDI0KSxTZSgyKSx0ZSgpLEooMywidGQiLDI0KSxTZSg0KSx0ZSgpLEooNSwidGQiLDI0KSxTZSg2KSx0ZSgpLEooNywidGQiLDI0KSxTZSg4KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvZ3Jv'@; put 'dXBzLyIrdC5VUklNRU0pLGllKDIpLHByKHQuTUVNQkVSTkFNRSksaWUoMikscHIodC5FTUFJTCksaWUoMikscHIodC5NRU1CRVJDUkVBVEVEKSxpZSgyKSxwcih0Lk1FTUJFUlVQREFURUQpfX1mdW5jdGlvbiB1Z24obixlKXtpZigxJm4mJihKKDAsInRhYmxlIiwyMikoMSwidGhlYWQiKSgy'@; put 'LCJ0ciIpKDMsInRkIiwyMykoNCwiYiIpLFNlKDUsIk5BTUUiKSx0ZSgpKCksSig2LCJ0ZCIsMjMpKDcsImIiKSxTZSg4LCJFTUFJTCIpLHRlKCkoKSxKKDksInRkIiwyMykoMTAsImIiKSxTZSgxMSwiQ1JFQVRFRCIpLHRlKCkoKSxKKDEyLCJ0ZCIsMjQpKDEzLCJiIiksU2UoMTQsIlVQREFU'@; put 'RUQiKSx0ZSgpKCkoKSgpLEooMTUsInRib2R5IiksX28oMTYsY2duLDksNSwidHIiLDI1LENvKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgxNikseW8odC5yb2xlR3JvdXBzKX19ZnVuY3Rpb24gZGduKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiKSgxLCJkaXYiLDE1KSgyLCJkaXYi'@; put 'LDE2KSgzLCJ0YWJsZSIsMTcpKDQsInRib2R5IikoNSwidHIiKSg2LCJ0ZCIsMTgpKDcsInAiLDE5KSg4LCJiIiksU2UoOSksdGUoKSgpKCkoKSxKKDEwLCJ0ciIpKDExLCJ0ZCIsMTgpKDEyLCJpIiksU2UoMTMpLHRlKCkoKSgpKCkoKSgpKCksSigxNCwiZGl2IiwxNSkoMTUsImRpdiIsMTYp'@; put 'KDE2LCJkaXYiLDIwKSgxNywiZGl2IikoMTgsImgzIiksU2UoMTkpLHRlKCksdnQoMjAsb2duLDIsMCwiaDUiKSxKKDIxLCJkaXYiLDIxKSx2dCgyMixzZ24sMTgsMCwidGFibGUiLDIyKSx0ZSgpKCksSXQoMjMsImhyIiksSigyNCwiZGl2IikoMjUsImgzIiksU2UoMjYpLHRlKCksdnQoMjcs'@; put 'bGduLDIsMCwiaDUiKSxKKDI4LCJkaXYiLDIxKSx2dCgyOSx1Z24sMTgsMCwidGFibGUiLDIyKSx0ZSgpKCksSXQoMzAsImJyIiksdGUoKSgpKCkoKSksMiZuKXtjb25zdCB0PVRlKCk7aWUoOSkscHIodC5yb2xlTmFtZSksaWUoNCkscHIodC5yb2xlRGVzYyksaWUoNiksU3IoIk1FTUJFUlMg'@; put 'KCIsdC5yb2xlTWVtYmVyc0NvdW50LCIpIiksaWUoKSxfdCgwPT10LnJvbGVNZW1iZXJzQ291bnQ/MjA6LTEpLGllKDIpLF90KDAhPXQucm9sZU1lbWJlcnNDb3VudD8yMjotMSksaWUoNCksU3IoIkdyb3VwcyAoIix0LnJvbGVHcm91cHNDb3VudCwiKSIpLGllKCksX3QoMD09dC5yb2xlR3Jv'@; put 'dXBzQ291bnQ/Mjc6LTEpLGllKDIpLF90KDAhPXQucm9sZUdyb3Vwc0NvdW50PzI5Oi0xKX19bGV0IHgkZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEsbCl7dGhpcy5zYXNTZXJ2aWNlPXIsdGhpcy5oZWxwZXJTZXJ2aWNlPWksdGhpcy5yb3V0ZXI9byx0aGlzLmxv'@; put 'Y2F0aW9uPWEsdGhpcy5yb3V0ZT1sLHRoaXMucm9sZVNlYXJjaD0iIix0aGlzLnJvbGVVcmk9IiIsdGhpcy5yb2xlTmFtZT0iIix0aGlzLnJvbGVEZXNjPSIiLHRoaXMucGFyYW1QcmVzZW50PSExLHRoaXMucGFyYW1VUkk9IiIsdGhpcy5sb2FkaW5nPSExfW5nT25Jbml0KCl7VW4udmlld2Vy'@; put 'LmN1cnJlbnRTZWxlY3Rpb249InZpZXcvdXNlcm5hdi9yb2xlcyIsdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpJiYodGhpcy5wYXJhbVByZXNlbnQ9ITAsdGhpcy5wYXJhbVVSST10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmkpLFVuLnVzZXJuYXYucm9sZUxp'@; put 'c3QmJiF0aGlzLnBhcmFtUHJlc2VudD8odGhpcy5yb2xlcz1Vbi51c2VybmF2LnJvbGVMaXN0LHRoaXMucm9sZVNlYXJjaD1Vbi51c2VybmF2LnJvbGVTZWFyY2gpOnZvaWQgMD09PVVuLnVzZXJuYXYucm9sZUxpc3Q/KHRoaXMubG9hZGluZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgi'@; put 'dXNlcm5hdi91c2Vycm9sZXMiLG51bGwpLnRoZW4ocj0+e2lmKHRoaXMubG9hZGluZz0hMSx0aGlzLnJvbGVzPXIuYWRhcHRlclJlc3BvbnNlLnJvbGVzLFVuLnVzZXJuYXYucm9sZUxpc3Q9ci5hZGFwdGVyUmVzcG9uc2Uucm9sZXMsdGhpcy5wYXJhbVByZXNlbnQmJnZvaWQgMCE9PXRoaXMu'@; put 'cm9sZXMpe2xldCBpPXRoaXMuZmluZFJvbGUodGhpcy5yb2xlcyx0aGlzLnBhcmFtVVJJKTshMSE9PWkmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpbe3JvbGVpZDp0aGlzLnBhcmFtVVJJfV19KS50'@; put 'aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1hLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzLHRoaXMucm9sZU1lbWJlcnNDb3VudD1hLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzLmxlbmd0aCx0aGlzLnJvbGVHcm91cHM9YS5hZGFwdGVyUmVzcG9uc2Uuc2Fz'@; put 'Z3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PWEuYWRhcHRlclJlc3BvbnNlLnNhc2dyb3Vwcy5sZW5ndGgsdGhpcy5yb2xlVXJpPWkuUk9MRVVSSSx0aGlzLnJvbGVOYW1lPWkuUk9MRU5BTUUsdGhpcy5yb2xlRGVzYz1pLlJPTEVERVNDfSkpfX0pKToodGhpcy5yb2xlcz1Vbi51c2VybmF2'@; put 'LnJvbGVMaXN0LHRoaXMucm9sZVNlYXJjaD1Vbi51c2VybmF2LnJvbGVTZWFyY2gsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcnJvbGVzIixudWxsKS50aGVuKHI9PntpZih0aGlzLnJvbGVzPXIuYWRhcHRlclJlc3BvbnNlLnJvbGVzLFVuLnVzZXJuYXYucm9sZUxpc3Q9'@; put 'ci5hZGFwdGVyUmVzcG9uc2Uucm9sZXMsdGhpcy5wYXJhbVByZXNlbnQmJnZvaWQgMCE9PXRoaXMucm9sZXMpe2xldCBpPXRoaXMuZmluZFJvbGUodGhpcy5yb2xlcyx0aGlzLnBhcmFtVVJJKTshMSE9PWkmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJu'@; put 'YXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpbe3JvbGVpZDp0aGlzLnBhcmFtVVJJfV19KS50aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1hLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzLHRoaXMucm9sZU1lbWJlcnNDb3VudD1hLmFkYXB0ZXJSZXNwb25z'@; put 'ZS5zYXNtZW1iZXJzLmxlbmd0aCx0aGlzLnJvbGVHcm91cHM9YS5hZGFwdGVyUmVzcG9uc2Uuc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PWEuYWRhcHRlclJlc3BvbnNlLnNhc2dyb3Vwcy5sZW5ndGgsdGhpcy5yb2xlVXJpPWkuUk9MRVVSSSx0aGlzLnJvbGVOYW1lPWkuUk9MRU5B'@; put 'TUUsdGhpcy5yb2xlRGVzYz1pLlJPTEVERVNDfSkpfX0pKX1yb2xlTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLnJvbGVzLHRoaXMucm9sZVNlYXJjaCwiUk9MRU5BTUUiKSxVbi51c2VybmF2LnJvbGVTZWFyY2g9dGhpcy5yb2xlU2VhcmNo'@; put 'fXJvbGVPbkNsaWNrKHIpe3RoaXMubG9hZGluZz0hMDtsZXQgaT10aGlzLnJvdXRlci51cmw7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5wYXJhbVByZXNlbnQ/aS5zbGljZSgwLGkubGFzdEluZGV4T2YoIi8iKSkrIi8iK2VuY29kZVVSSShyLlJPTEVVUkkpOmkrIi8iK2VuY29k'@; put 'ZVVSSShyLlJPTEVVUkkpKSx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5cm9sZSIse2l3YW50Olt7cm9sZWlkOnIuUk9MRVVSSX1dfSkudGhlbihhPT57dGhpcy5sb2FkaW5nPSExLHRoaXMucm9sZU1lbWJlcnM9YS5hZGFwdGVyUmVzcG9uc2Uuc2FzbWVt'@; put 'YmVycyx0aGlzLnJvbGVNZW1iZXJzQ291bnQ9YS5hZGFwdGVyUmVzcG9uc2Uuc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPWEuYWRhcHRlclJlc3BvbnNlLnNhc2dyb3Vwcyx0aGlzLnJvbGVHcm91cHNDb3VudD1hLmFkYXB0ZXJSZXNwb25zZS5zYXNncm91cHMubGVuZ3RoLHRo'@; put 'aXMucm9sZVVyaT1yLlJPTEVVUkksdGhpcy5yb2xlTmFtZT1yLlJPTEVOQU1FLHRoaXMucm9sZURlc2M9ci5ST0xFREVTQ30pfWZpbmRSb2xlKHIsaSl7bGV0IG89ITE7cmV0dXJuIHIuZm9yRWFjaChhPT57YS5ST0xFVVJJPT09aSYmKG89YSl9KSxvfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1'@; put 'MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHplKGljKSx6ZShmaCksemUodmMpLHplKFYwKSx6ZShwMSkpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtcm9sZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRh'@; put 'bG9uZTohMSxkZWNsczo4LHZhcnM6Myxjb25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWzEsInNpZGViYXItaGVpZ2h0Il0sWzEsInNlYXJjaC1ub2RlIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJh'@; put 'cHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBSb2xlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwi'@; put 'dGltZXMiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImFjdGl2ZSJdLFszLCJjbGljayJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsImxpc3QtcGFkZGluZyJdLFsic2hhcGUiLCJibG9ja3MtZ3JvdXAiXSxbMSwic3Bpbm5lciJdLFsxLCJjbHItcm93Il0sWzEsImNsci1j'@; put 'b2wtOCJdLFsxLCJ0YWJsZSIsInJvbGUtaW5mbyJdLFsxLCJsZWZ0Il0sWzEsInJvbGUtaW5mby10ZXh0Il0sWzEsImNhcmQiLCJyb2xlLWRhdGEiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWzEsInRhYmxlIiwibWVtYmVyLXRhYmxlIl0sWzEsIndpZHRoLTI1Il0sWzEsIiJdLFszLCJyb3V0'@; put 'ZXJMaW5rIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJhcHAtc2lkZWJhciIsMSkoMSwiY2xyLXRyZWUiKSx2dCgyLHRnbiw2LDMsImNsci10cmVlLW5vZGUiLDIpLF9vKDMscmduLDEsMSxudWxsLG51bGwsQ28pLHRlKCkoKSxKKDUsImRpdiIsMyksdnQoNixpZ24sMyww'@; put 'LCJkaXYiLDQpLHZ0KDcsZGduLDMxLDgsImRpdiIpLHRlKCkpLDImaSYmKGllKDIpLF90KG8ucm9sZXM/MjotMSksaWUoKSx5byhvLnJvbGVzKSxpZSgzKSxfdChvLmxvYWRpbmc/NjotMSksaWUoKSxfdChvLnJvbGVNZW1iZXJzJiYhby5sb2FkaW5nPzc6LTEpKX0sZGVwZW5kZW5jaWVzOltQ'@; put 'MixsdSxvYyxYbCxQcCxPMyxjdSxQZiwkNixHNl0sc3R5bGVzOlsiOjpuZy1kZWVwIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5yb2xle2JhY2tncm91bmQtY29sb3I6IzMxNDM1MTtib3JkZXItY29sb3I6IzMxNDM1MX06Om5nLWRlZXAgYm9keVtjZHMtdGhlbWU9ZGFya10gLnJvbGUtZGF0YXti'@; put 'YWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTE7Ym9yZGVyLWNvbG9yOiMzMTQzNTF9OjpuZy1kZWVwIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5tZW1iZXItdGFibGUgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMjk0MDRifTo6bmctZGVlcCBib2R5W2Nkcy10aGVtZT1saWdodF0gLnJv'@; put 'bGUtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyLWNvbG9yOiNhN2E3YTc7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN306Om5nLWRlZXAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5yb2xlLWRhdGF7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlci1jb2xvcjoj'@; put 'YTdhN2E3O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9OjpuZy1kZWVwIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAubWVtYmVyLXRhYmxlIHRib2R5IHRyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0uc2lkZWJhci1oZWlnaHR7aGVpZ2h0OjEwMCV9LnJvbGUtaW5mby10ZXh0'@; put 'e2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZToyMHB4fS5yb2xlLWluZm97Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItcmFkaXVzOjNweH0ucm9sZS1pbmZvIHRke3RleHQtYWxpZ246Y2VudGVyfS5yb2xlLWRhdGF7Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItcmFkaXVzOjNweH0ucm9sZS1kYXRh'@; put 'e21pbi1oZWlnaHQ6dW5zZXR9LnJvbGUtZGF0YSBoMywucm9sZS1kYXRhIGg1e3RleHQtYWxpZ246Y2VudGVyfS5tZW1iZXItdGFibGV7d2lkdGg6MTAwJX0ubWVtYmVyLXRhYmxlIHRib2R5IHRyOmhvdmVye2N1cnNvcjpwb2ludGVyfS50YWJsZS1jb250YWluZXJ7b3ZlcmZsb3cteTpzY3Jv'@; put 'bGw7bWF4LWhlaWdodDo3MDBweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsucm9sZS1kYXRhe21pbi1oZWlnaHQ6dW5zZXQhaW1wb3J0YW50fX1cbiJdLGVuY2Fwc3VsYXRpb246Mn0pKX1yZXR1cm4gbigpLGV9KSgpLGhnbj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0'@; put 'cnVjdG9yKCl7fW5nT25Jbml0KCl7fXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtdXNlcm5hdi1yb3V0ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQt'@; put 'Y29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmSXQoMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W2U3XSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKSxmZ249KCgpPT57dmFyIG47Y2xh'@; put 'c3MgZXtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgpe31uZ09uRGVzdHJveSgpe31zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVjbXA9UHIoe3R5cGU6ZSxzZWxlY3RvcnM6W1siYXBwLXZpZXctcm91dGUiXV0s'@; put 'aG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaSxvKXsxJmkmJkl0KDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltlN10sZW5jYXBzdWxhdGlvbjoyfSkpfXJldHVybiBuKCksZX0p'@; put 'KCk7ZnVuY3Rpb24gcGduKG4sZSl7MSZuJiZJdCgwLCJjbHItaWNvbiIsNyl9ZnVuY3Rpb24gZ2duKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNvbiIsOSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMik7cmV0dXJuIGkudXNlclNlYXJjaD0i'@; put 'IixYZShpLnVzZXJMaXN0T25GaWx0ZXIoKSl9KSx0ZSgpfX1mdW5jdGlvbiBtZ24obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDIpKDEsImRpdiIsNSkoMiwiaW5wdXQiLDYsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0'@; put 'IG89VGUoKTtyZXR1cm4gZmkoby51c2VyU2VhcmNoLGkpfHwoby51c2VyU2VhcmNoPWkpLFhlKGkpfSksd3QoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLnVzZXJMaXN0T25GaWx0ZXIoKSl9KSx0ZSgpLHZ0KDQscGduLDEsMCwiY2xyLWljb24iLDcpLHZ0KDUsZ2du'@; put 'LDEsMCwiY2xyLWljb24iLDgpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9b28oMykscj1UZSgpO2llKDIpLGRpKCJuZ01vZGVsIixyLnVzZXJTZWFyY2gpLGllKDIpLF90KHQudmFsdWUubGVuZ3RoPDE/NDotMSksaWUoKSxfdCh0LnZhbHVlLmxlbmd0aD4wPzU6LTEpfX1mdW5jdGlvbiB2Z24o'@; put 'bixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDExKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS51c2VyT25DbGljayhpKSl9KSxKKDEsInAiLDEyKSxJdCgyLCJjbHItaWNvbiIsMTMp'@; put 'LFNlKDMpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKS4kaW1wbGljaXQscj1UZSgpO3dyKCJhY3RpdmUiLChudWxsPT1yLnVzZXJJbmZvP251bGw6ci51c2VySW5mby5VUkkpPT09dC5VUkkpLGllKDMpLFNyKCIgIix0Lk5BTUUsIiAiKX19ZnVuY3Rpb24gX2duKG4sZSl7MSZuJiZ2dCgw'@; put 'LHZnbiw0LDMsImNsci10cmVlLW5vZGUiLDEwKSwyJm4mJl90KGUuJGltcGxpY2l0LmhpZGRlbj8tMTowKX1mdW5jdGlvbiB5Z24obixlKXsxJm4mJihKKDAsImRpdiIsNCkoMSwic3BhbiIsMTQpLFNlKDIsIiBMb2FkaW5nLi4uICIpLHRlKCkoKSl9ZnVuY3Rpb24gYmduKG4sZSl7aWYoMSZu'@; put 'JiYoSigwLCJ0ciIpKDEsInRkIiwyMSksU2UoMiwiIE1ldGFkYXRhIENyZWF0ZWQ6ICIpLEooMywiYiIpLFNlKDQpLHRlKCkoKSgpLEooNSwidHIiKSg2LCJ0ZCIsMjEpLFNlKDcsIiBNZXRhZGF0YSBVcGRhdGVkOiAiKSxKKDgsImIiKSxTZSg5KSx0ZSgpKCkoKSksMiZuKXtjb25zdCB0PVRl'@; put 'KDMpO2llKDQpLHByKHQudXNlckluZm8uTUVUQURBVEFDUkVBVEVEKSxpZSg1KSxwcih0LnVzZXJJbmZvLk1FVEFEQVRBVVBEQVRFRCl9fWZ1bmN0aW9uIHdnbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxNSkoMSwiZGl2IiwxNikoMiwidGFibGUiLDIwKSgzLCJ0Ym9keSIpKDQsInRyIiko'@; put 'NSwidGQiLDIxKSg2LCJwIiwyMikoNywiYiIpLFNlKDgpLHRlKCkoKSgpKCksSig5LCJ0ciIpKDEwLCJ0ZCIsMjEpKDExLCJwIiwyMikoMTIsImIiKSxTZSgxMyksdGUoKSgpKCkoKSx2dCgxNCxiZ24sMTAsMiksdGUoKSgpKCkoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKDgpLHByKHQudXNl'@; put 'ckluZm8uTkFNRSksaWUoNSkscHIodC51c2VySW5mby5ESVNQTEFZTkFNRSksaWUoKSxfdCh0LnNlcnZlclR5cGU9PT10LlNlcnZlclR5cGUuU2FzOT8xNDotMSl9fWZ1bmN0aW9uIENnbihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxNSkoMSwiZGl2IiwxNikoMiwidGFibGUiLDIwKSgzLCJ0'@; put 'Ym9keSIpKDQsInRyIikoNSwidGQiLDIxKSg2LCJwIiwyMikoNywiYiIpLFNlKDgpLHRlKCkoKSgpKCksSig5LCJ0ciIpKDEwLCJ0ZCIsMjEpLFNlKDExLCIgVXNlciBJRDogIiksSigxMiwiYiIpLFNlKDEzKSx0ZSgpKCkoKSxKKDE0LCJ0ciIpKDE1LCJ0ZCIsMjEpLFNlKDE2LCIgVXNlciBw'@; put 'cm92aWRlciBJRDogIiksSigxNywiYiIpLFNlKDE4KSx0ZSgpKCkoKSgpKCkoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoOCkscHIodC51c2VySW5mby5OQU1FKSxpZSg1KSxwcih0LnVzZXJJbmZvLlVSSSksaWUoNSkscHIodC51c2VySW5mby5QUk9WSURFUil9fWZ1bmN0aW9uIFNnbihu'@; put 'LGUpezEmbiYmKEooMCwiaDUiKSxTZSgxLCJObyBFbWFpbHMgUHJlc2VudCIpLHRlKCkpfWZ1bmN0aW9uIEVnbihuLGUpe2lmKDEmbiYmKEooMCwidHIiKSgxLCJ0ZCIsMjQpLFNlKDIpLHRlKCksSigzLCJ0ZCIsMjQpLFNlKDQpLHRlKCkoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2ll'@; put 'KDIpLHByKHQuRU1BSUwpLGllKDIpLHByKHQuVFlQRSl9fWZ1bmN0aW9uIE1nbihuLGUpe2lmKDEmbiYmKEooMCwidGFibGUiLDE5KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDIzKSg0LCJiIiksU2UoNSwiRU1BSUwiKSx0ZSgpKCksSig2LCJ0ZCIsMjQpKDcsImIiKSxTZSg4LCJUWVBF'@; put 'IiksdGUoKSgpKCkoKSxKKDksInRib2R5IiksX28oMTAsRWduLDUsMiwidHIiLG51bGwsQ28pLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKDEwKSx5byh0LnVzZXJFbWFpbHMpfX1mdW5jdGlvbiBUZ24obixlKXtpZigxJm4mJihKKDAsImRpdiIpKDEsImgzIiksU2UoMiksdGUoKSx2'@; put 'dCgzLFNnbiwyLDAsImg1IiksSig0LCJkaXYiLDE4KSx2dCg1LE1nbiwxMiwwLCJ0YWJsZSIsMTkpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKDIpLFNyKCJFTUFJTFMgKCIsdC51c2VyRW1haWxzQ291bnR8fCIwIiwiKSIpLGllKCksX3QoMD09dC51c2VyRW1haWxzQ291bnQ/Mzot'@; put 'MSksaWUoMiksX3QoMCE9dC51c2VyRW1haWxzQ291bnQ/NTotMSl9fWZ1bmN0aW9uIHhnbihuLGUpezEmbiYmSXQoMCwiaHIiKX1mdW5jdGlvbiBBZ24obixlKXsxJm4mJihKKDAsImg1IiksU2UoMSwiTm8gR3JvdXBzIFByZXNlbnQiKSx0ZSgpKX1mdW5jdGlvbiBrZ24obixlKXtpZigxJm4m'@; put 'JihKKDAsInRkIiwyNSksU2UoMSksdGUoKSksMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O3J0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi9ncm91cHMvIit0LlVSSSksaWUoKSxTcigiICIsdC5HUk9VUE5BTUUsIiAiKX19ZnVuY3Rpb24gUmduKG4sZSl7aWYoMSZuJiYoSigwLCJ0'@; put 'ZCIsMjUpLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDtydCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvZ3JvdXBzLyIrKHQuR1JPVVBVUkl8fHQuVVJJKSksaWUoKSxTcigiICIsdC5HUk9VUE5BTUUsIiAiKX19ZnVuY3Rpb24gSWduKG4sZSl7aWYoMSZuJiYo'@; put 'SigwLCJ0ciIpLHZ0KDEsa2duLDIsMiwidGQiLDI1KSx2dCgyLFJnbiwyLDIsInRkIiwyNSksdGUoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKCksX3QodC5zZXJ2ZXJUeXBlPT09dC5TZXJ2ZXJUeXBlLlNhc1ZpeWE/MTotMSksaWUoKSxfdCh0LnNlcnZlclR5cGUhPT10LlNlcnZlclR5cGUu'@; put 'U2FzVml5YT8yOi0xKX19ZnVuY3Rpb24gRGduKG4sZSl7aWYoMSZuJiYoSigwLCJ0YWJsZSIsMTkpKDEsInRib2R5IiksX28oMixJZ24sMywyLCJ0ciIsbnVsbCxDbyksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoMik7aWUoMikseW8odC51c2VyR3JvdXBzKX19ZnVuY3Rpb24gTGduKG4sZSl7'@; put 'MSZuJiZJdCgwLCJociIpfWZ1bmN0aW9uIE9nbihuLGUpezEmbiYmKEooMCwiaDUiKSxTZSgxLCJObyBSb2xlcyBQcmVzZW50IiksdGUoKSl9ZnVuY3Rpb24gTmduKG4sZSl7aWYoMSZuJiYoSigwLCJ0ciIpKDEsInRkIiwyNiksU2UoMiksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9ZS4kaW1wbGlj'@; put 'aXQscj1UZSg0KTtpZSgpLHJ0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi9yb2xlcy8iK3IuZ2V0Um9sZVVSSSh0LlJPTEVVUkkpKSxpZSgpLFNyKCIgIix0LlJPTEVOQU1FLCIgIil9fWZ1bmN0aW9uIEZnbihuLGUpe2lmKDEmbiYmKEooMCwidGFibGUiLDE5KSgxLCJ0Ym9keSIpLF9v'@; put 'KDIsTmduLDMsMiwidHIiLG51bGwsQ28pLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDMpO2llKDIpLHlvKHQudXNlclJvbGVzKX19ZnVuY3Rpb24gUGduKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiKSgxLCJoMyIpLFNlKDIpLHRlKCksdnQoMyxPZ24sMiwwLCJoNSIpLEooNCwiZGl2IiwxOCks'@; put 'dnQoNSxGZ24sNCwwLCJ0YWJsZSIsMTkpLHRlKCkoKSksMiZuKXtjb25zdCB0PVRlKDIpO2llKDIpLFNyKCJST0xFUyAoIix0LnVzZXJSb2xlc0NvdW50fHwiMCIsIikiKSxpZSgpLF90KDA9PXQudXNlclJvbGVzQ291bnQ/MzotMSksaWUoMiksX3QoMCE9dC51c2VyUm9sZXNDb3VudD81Oi0x'@; put 'KX19ZnVuY3Rpb24gSGduKG4sZSl7MSZuJiZJdCgwLCJociIpfWZ1bmN0aW9uIFZnbihuLGUpezEmbiYmKEooMCwiaDUiKSxTZSgxLCJObyBMb2dpbnMgUHJlc2VudCIpLHRlKCkpfWZ1bmN0aW9uIEJnbihuLGUpe2lmKDEmbiYmKEooMCwidHIiKSgxLCJ0ZCIsMjQpLFNlKDIpLHRlKCksSigz'@; put 'LCJ0ZCIsMjQpLFNlKDQpLHRlKCkoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0O2llKDIpLHByKHQuRE9NQUlOKSxpZSgyKSxwcih0LlVTRVJJRCl9fWZ1bmN0aW9uIGpnbihuLGUpe2lmKDEmbiYmKEooMCwidGFibGUiLDE5KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDIzKSg0LCJi'@; put 'IiksU2UoNSwiRE9NQUlOIiksdGUoKSgpLEooNiwidGQiKSg3LCJiIiksU2UoOCwiVVNFUiBJRCIpLHRlKCkoKSgpKCksSig5LCJ0Ym9keSIpLF9vKDEwLEJnbiw1LDIsInRyIixudWxsLENvKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgzKTtpZSgxMCkseW8odC51c2VyTG9naW5zKX19ZnVu'@; put 'Y3Rpb24gVWduKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiKSgxLCJoMyIpLFNlKDIpLHRlKCksdnQoMyxWZ24sMiwwLCJoNSIpLEooNCwiZGl2IiwxOCksdnQoNSxqZ24sMTIsMCwidGFibGUiLDE5KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgyKSxTcigiTE9HSU5TICgiLHQudXNl'@; put 'ckxvZ2luc0NvdW50fHwiMCIsIikiKSxpZSgpLF90KDA9PXQudXNlckxvZ2luc0NvdW50PzM6LTEpLGllKDIpLF90KDAhPXQudXNlckxvZ2luc0NvdW50PzU6LTEpfX1mdW5jdGlvbiB6Z24obixlKXtpZigxJm4mJihKKDAsImRpdiIpLHZ0KDEsd2duLDE1LDMsImRpdiIsMTUpLHZ0KDIsQ2du'@; put 'LDE5LDMsImRpdiIsMTUpLEooMywiZGl2IiwxNSkoNCwiZGl2IiwxNikoNSwiZGl2IiwxNyksdnQoNixUZ24sNiwzLCJkaXYiKSx2dCg3LHhnbiwxLDAsImhyIiksSig4LCJkaXYiKSg5LCJoMyIpLFNlKDEwKSx0ZSgpLHZ0KDExLEFnbiwyLDAsImg1IiksSigxMiwiZGl2IiwxOCksdnQoMTMs'@; put 'RGduLDQsMCwidGFibGUiLDE5KSx0ZSgpKCksdnQoMTQsTGduLDEsMCwiaHIiKSx2dCgxNSxQZ24sNiwzLCJkaXYiKSx2dCgxNixIZ24sMSwwLCJociIpLHZ0KDE3LFVnbiw2LDMsImRpdiIpLEl0KDE4LCJiciIpLHRlKCkoKSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC5zZXJ2'@; put 'ZXJUeXBlIT09dC5TZXJ2ZXJUeXBlLlNhc1ZpeWE/MTotMSksaWUoKSxfdCh0LnNlcnZlclR5cGU9PT10LlNlcnZlclR5cGUuU2FzVml5YSYmdC51c2VySW5mbz8yOi0xKSxpZSg0KSxfdCh0LnNlcnZlclR5cGU9PT10LlNlcnZlclR5cGUuU2FzOT82Oi0xKSxpZSgpLF90KHQuc2VydmVyVHlw'@; put 'ZT09PXQuU2VydmVyVHlwZS5TYXM5Pzc6LTEpLGllKDMpLFNyKCJHUk9VUFMgKCIsdC51c2VyR3JvdXBzQ291bnR8fCIwIiwiKSIpLGllKCksX3QoMD09dC51c2VyR3JvdXBzQ291bnQ/MTE6LTEpLGllKDIpLF90KDAhPXQudXNlckdyb3Vwc0NvdW50PzEzOi0xKSxpZSgpLF90KHQuc2VydmVy'@; put 'VHlwZT09PXQuU2VydmVyVHlwZS5TYXM5PzE0Oi0xKSxpZSgpLF90KHQuc2VydmVyVHlwZT09PXQuU2VydmVyVHlwZS5TYXM5PzE1Oi0xKSxpZSgpLF90KHQuc2VydmVyVHlwZT09PXQuU2VydmVyVHlwZS5TYXM5PzE2Oi0xKSxpZSgpLF90KHQuc2VydmVyVHlwZT09PXQuU2VydmVyVHlwZS5T'@; put 'YXM5PzE3Oi0xKX19bGV0IEEkZT0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEsbCl7dGhpcy5oZWxwZXJTZXJ2aWNlPXIsdGhpcy5zYXNTZXJ2aWNlPWksdGhpcy5yb3V0ZT1vLHRoaXMubG9jYXRpb249YSx0aGlzLnJvdXRlcj1sLHRoaXMubG9hZGluZz0hMSx0aGlz'@; put 'LnVzZXJTZWFyY2g9IiIsdGhpcy5wYXJhbVByZXNlbnQ9ITEsdGhpcy5wYXJhbU5hbWU9IiIsdGhpcy5zYXNqc0NvbmZpZz1uZXcgeHAuU0FTanNDb25maWcsdGhpcy5pc1ZpeWE9ITEsdGhpcy5zZXJ2ZXJUeXBlPSIiLHRoaXMuU2VydmVyVHlwZT1fMC5ZLHRoaXMuc2VydmVyVHlwZT10aGlz'@; put 'LnNhc1NlcnZpY2UuZ2V0U2VydmVyVHlwZSgpLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksIlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlJiYodGhpcy5pc1ZpeWE9ITApfW5nT25Jbml0KCl7aWYoVW4udmlld2VyLmN1cnJl'@; put 'bnRTZWxlY3Rpb249InZpZXcvdXNlcm5hdi91c2VycyIsdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpJiYodGhpcy5wYXJhbVByZXNlbnQ9ITAsdGhpcy5wYXJhbU5hbWU9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpKSxVbi51c2VybmF2LnVzZXJMaXN0JiYh'@; put 'dGhpcy5wYXJhbVByZXNlbnQpdGhpcy51c2Vycz1Vbi51c2VybmF2LnVzZXJMaXN0LHRoaXMudXNlclNlYXJjaD1Vbi51c2VybmF2LnVzZXJTZWFyY2g7ZWxzZSBpZih2b2lkIDA9PT1Vbi51c2VybmF2LnVzZXJMaXN0Pyh0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5z'@; put 'YXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL3VzZXJzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4ocj0+ci50ZXh0KCkpLnRoZW4ocj0+e2xldCBvPUpTT04ucGFyc2UocikuaXRlbXMubWFwKGE9Pih7TkFNRTphLm5hbWUs'@; put 'VVJJOmEuaWQsUFJPVklERVI6YS5wcm92aWRlcklkfSkpO3RoaXMubG9hZGluZz0hMSx0aGlzLnVzZXJzPW8sVW4udXNlcm5hdi51c2VyTGlzdD1vfSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnMiLG51bGwpLnRoZW4ocj0+e3RoaXMubG9hZGluZz0hMSx0'@; put 'aGlzLnVzZXJzPXIuYWRhcHRlclJlc3BvbnNlLnVzZXJzLFVuLnVzZXJuYXYudXNlckxpc3Q9ci5hZGFwdGVyUmVzcG9uc2UudXNlcnN9KSk6KHRoaXMudXNlcnM9VW4udXNlcm5hdi51c2VyTGlzdCx0aGlzLnVzZXJTZWFyY2g9VW4udXNlcm5hdi51c2VyU2VhcmNoKSx0aGlzLnBhcmFtUHJl'@; put 'c2VudClpZih0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWEpe2xldCByPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaTtmZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvdXNlcnMvIityKyIvbWVtYmVyc2hpcHM/bGltaXQ9MjAwMCIse2hlYWRlcnM6'@; put 'e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihpPT5pLnRleHQoKSkudGhlbihpPT57bGV0IG89SlNPTi5wYXJzZShpKTt0aGlzLnVzZXJEYXRhPW8sdGhpcy5sb2FkaW5nPSExO2xldCBhPW8uaXRlbXMubWFwKGw9Pih7R1JPVVBOQU1FOmwubmFtZSxVUkk6bC5pZH0pKTt0aGlz'@; put 'LnVzZXJHcm91cHM9YSx0aGlzLnVzZXJHcm91cHNDb3VudD1hLmxlbmd0aCx0aGlzLnVzZXJzJiYodGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQobD0+bC5VUkk9PT1yKSl9KX1lbHNle2NvbnN0IHI9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpO3RoaXMuc2FzU2VydmljZS5y'@; put 'ZXF1ZXN0KCJ1c2VybmF2L3VzZXJncm91cHNieW1lbWJlciIse2l3YW50Olt7dXJpOnJ9XX0pLnRoZW4obz0+e3N3aXRjaCh0aGlzLmxvYWRpbmc9ITEsdGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIF8wLlkuU2FzOTp0aGlzLnVzZXJJbmZvPW8uYWRhcHRlclJlc3BvbnNlLmluZm9bMF0sdGhpcy51'@; put 'c2VyRW1haWxzPW8uYWRhcHRlclJlc3BvbnNlLmVtYWlscyx0aGlzLnVzZXJFbWFpbHNDb3VudD1vLmFkYXB0ZXJSZXNwb25zZS5lbWFpbHMubGVuZ3RoLHRoaXMudXNlclJvbGVzPW8uYWRhcHRlclJlc3BvbnNlLnJvbGVzLHRoaXMudXNlclJvbGVzQ291bnQ9by5hZGFwdGVyUmVzcG9uc2Uu'@; put 'cm9sZXMubGVuZ3RoLHRoaXMudXNlckxvZ2lucz1vLmFkYXB0ZXJSZXNwb25zZS5sb2dpbnMsdGhpcy51c2VyTG9naW5zQ291bnQ9by5hZGFwdGVyUmVzcG9uc2UubG9naW5zLmxlbmd0aDticmVhaztjYXNlIF8wLlkuU2FzanM6aWYodGhpcy51c2Vycyl0aGlzLnVzZXJJbmZvPXRoaXMudXNl'@; put 'cnMuZmluZChhPT5hLlVSST09PXIpO2Vsc2V7Y29uc3QgYT1vLmFkYXB0ZXJSZXNwb25zZS5ncm91cHNbMF07dGhpcy51c2VySW5mbz17VVJJOmEuSUQsTkFNRTphLk5BTUUsRElTUExBWU5BTUU6YS5OQU1FfX19dGhpcy51c2VyRGF0YT1vLmFkYXB0ZXJSZXNwb25zZSx0aGlzLnVzZXJHcm91'@; put 'cHM9by5hZGFwdGVyUmVzcG9uc2UuZ3JvdXBzLHRoaXMudXNlckdyb3Vwc0NvdW50PW8uYWRhcHRlclJlc3BvbnNlLmdyb3Vwcy5sZW5ndGh9KX19dXNlckxpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy51c2Vycyx0aGlzLnVzZXJTZWFyY2gs'@; put 'Ik5BTUUiKSxVbi51c2VybmF2LnVzZXJTZWFyY2g9dGhpcy51c2VyU2VhcmNofXVzZXJPbkNsaWNrKHIpe3RoaXMubG9hZGluZz0hMDtsZXQgaT10aGlzLnJvdXRlci51cmw7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5wYXJhbVByZXNlbnQ/aS5zbGljZSgwLGkubGFzdEluZGV4'@; put 'T2YoIi8iKSkrIi8iK2VuY29kZVVSSShyLlVSSSk6aSsiLyIrZW5jb2RlVVJJKHIuVVJJKSksdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL3VzZXJzLyIrci5VUkkrIi9tZW1iZXJzaGlwcz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNj'@; put 'ZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKG89Pm8udGV4dCgpKS50aGVuKG89PntsZXQgYT1KU09OLnBhcnNlKG8pO3RoaXMudXNlckRhdGE9YSx0aGlzLmxvYWRpbmc9ITE7bGV0IGw9YS5pdGVtcy5tYXAodT0+KHtHUk9VUE5BTUU6dS5uYW1lLFVSSTp1LmlkfSkpO3RoaXMudXNl'@; put 'ckdyb3Vwcz1sLHRoaXMudXNlckdyb3Vwc0NvdW50PWwubGVuZ3RoLHRoaXMudXNlcnMmJih0aGlzLnVzZXJJbmZvPXRoaXMudXNlcnMuZmluZCh1PT51LlVSST09PXIuVVJJKSl9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VyZ3JvdXBzYnltZW1iZXIiLHtpd2FudDpb'@; put 'e3VyaTpyLlVSSX1dfSkudGhlbihhPT57c3dpdGNoKHRoaXMubG9hZGluZz0hMSx0aGlzLnNlcnZlclR5cGUpe2Nhc2UgXzAuWS5TYXM5OnRoaXMudXNlckluZm89YS5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXSx0aGlzLnVzZXJFbWFpbHM9YS5hZGFwdGVyUmVzcG9uc2UuZW1haWxzLHRoaXMu'@; put 'dXNlckVtYWlsc0NvdW50PWEuYWRhcHRlclJlc3BvbnNlLmVtYWlscy5sZW5ndGgsdGhpcy51c2VyUm9sZXM9YS5hZGFwdGVyUmVzcG9uc2Uucm9sZXMsdGhpcy51c2VyUm9sZXNDb3VudD1hLmFkYXB0ZXJSZXNwb25zZS5yb2xlcy5sZW5ndGgsdGhpcy51c2VyTG9naW5zPWEuYWRhcHRlclJl'@; put 'c3BvbnNlLmxvZ2lucyx0aGlzLnVzZXJMb2dpbnNDb3VudD1hLmFkYXB0ZXJSZXNwb25zZS5sb2dpbnMubGVuZ3RoO2JyZWFrO2Nhc2UgXzAuWS5TYXNqczppZih0aGlzLnVzZXJzKXRoaXMudXNlckluZm89dGhpcy51c2Vycy5maW5kKGw9PmwuVVJJPT09ci5VUkkpO2Vsc2V7Y29uc3QgbD1h'@; put 'LmFkYXB0ZXJSZXNwb25zZS5ncm91cHNbMF07dGhpcy51c2VySW5mbz17VVJJOmwuSUQsTkFNRTpsLk5BTUUsRElTUExBWU5BTUU6bC5OQU1FfX19dGhpcy51c2VyRGF0YT1hLmFkYXB0ZXJSZXNwb25zZSx0aGlzLnVzZXJHcm91cHM9YS5hZGFwdGVyUmVzcG9uc2UuZ3JvdXBzLHRoaXMudXNl'@; put 'ckdyb3Vwc0NvdW50PWEuYWRhcHRlclJlc3BvbnNlLmdyb3Vwcy5sZW5ndGh9KX1nZXRSb2xlVVJJKHIpe3JldHVybiByLnNwbGl0KCJPTVNPQko6SWRlbnRpdHlHcm91cCIpWzFdLnNsaWNlKDEpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3'@; put 'KGl8fGUpKHplKGZoKSx6ZShpYyksemUocDEpLHplKFYwKSx6ZSh2YykpfSx0aGlzLlx1MDI3NWNtcD1Qcih7dHlwZTplLHNlbGVjdG9yczpbWyJhcHAtdXNlciJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczo4LHZhcnM6Myxjb25zdHM6'@; put 'W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWzEsInNpZGViYXItaGVpZ2h0Il0sWzEsInNlYXJjaC1ub2RlIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIi'@; put 'LCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBVc2VycyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiXSxbInNoYXBlIiwidGltZXMiLDMsImNs'@; put 'aWNrIl0sWzMsImFjdGl2ZSJdLFszLCJjbGljayJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsImxpc3QtcGFkZGluZyJdLFsic2hhcGUiLCJ1c2VyIl0sWzEsInNwaW5uZXIiXSxbMSwiY2xyLXJvdyJdLFsxLCJjbHItY29sLTgiXSxbMSwiY2FyZCIsInVzZXItZGF0YSJdLFsxLCJ0YWJs'@; put 'ZS1jb250YWluZXIiXSxbMSwidGFibGUiLCJ1c2VyLXRhYmxlIl0sWzEsInRhYmxlIiwidXNlci1pbmZvIl0sWzEsImxlZnQiXSxbMSwidXNlci1pbmZvLXRleHQiXSxbMSwid2lkdGgtNTAiXSxbMSwiIl0sWyJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiwxLCIiLDMsInJvdXRlckxpbmsi'@; put 'XSxbMywicm91dGVyTGluayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihpLG8pezEmaSYmKEooMCwiYXBwLXNpZGViYXIiLDEpKDEsImNsci10cmVlIiksdnQoMixtZ24sNiwzLCJjbHItdHJlZS1ub2RlIiwyKSxfbygzLF9nbiwxLDEsbnVsbCxudWxsLENvKSx0ZSgpKCksSig1LCJkaXYiLDMpLHZ0'@; put 'KDYseWduLDMsMCwiZGl2Iiw0KSx2dCg3LHpnbiwxOSwxMSwiZGl2IiksdGUoKSksMiZpJiYoaWUoMiksX3Qoby51c2Vycz8yOi0xKSxpZSgpLHlvKG8udXNlcnMpLGllKDMpLF90KG8ubG9hZGluZz82Oi0xKSxpZSgpLF90KG8udXNlckRhdGEmJiFvLmxvYWRpbmc/NzotMSkpfSxkZXBlbmRl'@; put 'bmNpZXM6W1AyLEpFLGx1LG9jLFhsLFBwLE8zLGN1LFBmLCQ2LEc2XSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtjb25zdCBXZ249bj0+WyJzZWdtZW50IixuXSxZZ249KG4sZSk9Pih7InNlZ21lbnQtbWFpbiI6ITAsZXhwYW5kYWJsZTpuLGV4cGFuZGVkOmV9KTtmdW5j'@; put 'dGlvbiBaZ24obixlKXsxJm4mJkl0KDAsImRpdiIsOSl9ZnVuY3Rpb24gR2duKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJzcGFuIiwxMCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQ7cmV0dXJuIFhlKFRlKCkub25WYWx1ZUNsaWNr'@; put 'KGkpKX0pLFNlKDEpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2llKCkscHIodC5kZXNjcmlwdGlvbil9fWZ1bmN0aW9uICRnbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwic2VjdGlvbiIsMTEpKDEsIm5neC1qc29uLXZpZXdlciIsMTIpLHd0KCJzZWdtZW50'@; put 'TGlua0NsaWNrZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBZZSh0KSxYZShUZSgyKS5vblNlZ21lbnRMaW5rQ2xpY2soaSkpfSksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdCxyPVRlKCk7aWUoKSxydCgianNvbiIsdC52YWx1ZSkoImV4cGFuZGVkIixyLmV4cGFuZGVkKSgi'@; put 'ZGVwdGgiLHIuZGVwdGgpKCJfY3VycmVudERlcHRoIixyLl9jdXJyZW50RGVwdGgrMSl9fWZ1bmN0aW9uIHFnbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwic2VjdGlvbiIsMikoMSwic2VjdGlvbiIsMyksd3QoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGk9WWUodCkuJGltcGxp'@; put 'Y2l0O3JldHVybiBYZShUZSgpLnRvZ2dsZShpKSl9KSxZbigyLFpnbiwxLDAsImRpdiIsNCksSigzLCJzcGFuIiw1KSxTZSg0KSx0ZSgpLEooNSwic3BhbiIsNiksU2UoNiwiOiAiKSx0ZSgpLFluKDcsR2duLDIsMSwic3BhbiIsNyksdGUoKSxZbig4LCRnbiwyLDQsInNlY3Rpb24iLDgpLHRl'@; put 'KCl9aWYoMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoKTtydCgibmdDbGFzcyIsdDQoNixXZ24sInNlZ21lbnQtdHlwZS0iK3QudHlwZSkpLGllKCkscnQoIm5nQ2xhc3MiLE41KDgsWWduLHIuaXNFeHBhbmRhYmxlKHQpLHQuZXhwYW5kZWQpKSxpZSgpLHJ0KCJuZ0lmIixyLmlzRXhw'@; put 'YW5kYWJsZSh0KSksaWUoMikscHIodC5rZXkpLGllKDMpLHJ0KCJuZ0lmIiwhdC5leHBhbmRlZHx8IXIuaXNFeHBhbmRhYmxlKHQpKSxpZSgpLHJ0KCJuZ0lmIix0LmV4cGFuZGVkJiZyLmlzRXhwYW5kYWJsZSh0KSl9fWxldCBLZ249KCgpPT57Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMu'@; put 'ZXhwYW5kZWQ9ITAsdGhpcy5kZXB0aD0tMSx0aGlzLl9jdXJyZW50RGVwdGg9MCx0aGlzLnNlZ21lbnRMaW5rQ2xpY2tlZD1uZXcgS3IsdGhpcy5zZWdtZW50cz1bXX1uZ09uQ2hhbmdlcygpe3RoaXMuc2VnbWVudHM9W10sdGhpcy5qc29uPXRoaXMuZGVjeWNsZSh0aGlzLmpzb24pLCJvYmpl'@; put 'Y3QiPT10eXBlb2YgdGhpcy5qc29uP09iamVjdC5rZXlzKHRoaXMuanNvbikuZm9yRWFjaCh0PT57dGhpcy5zZWdtZW50cy5wdXNoKHRoaXMucGFyc2VLZXlWYWx1ZSh0LHRoaXMuanNvblt0XSkpfSk6dGhpcy5zZWdtZW50cy5wdXNoKHRoaXMucGFyc2VLZXlWYWx1ZShgKCR7dHlwZW9mIHRo'@; put 'aXMuanNvbn0pYCx0aGlzLmpzb24pKX1pc0V4cGFuZGFibGUodCl7cmV0dXJuIm9iamVjdCI9PT10LnR5cGV8fCJhcnJheSI9PT10LnR5cGV9dG9nZ2xlKHQpe3RoaXMuaXNFeHBhbmRhYmxlKHQpJiYodC5leHBhbmRlZD0hdC5leHBhbmRlZCl9b25WYWx1ZUNsaWNrKHQpeyJsaW5rIj09PXQu'@; put 'dHlwZSYmdGhpcy5zZWdtZW50TGlua0NsaWNrZWQuZW1pdCh0LnZhbHVlKX1vblNlZ21lbnRMaW5rQ2xpY2sodCl7dGhpcy5zZWdtZW50TGlua0NsaWNrZWQuZW1pdCh0KX1wYXJzZUtleVZhbHVlKHQscil7Y29uc3QgaT17a2V5OnQsdmFsdWU6cix0eXBlOnZvaWQgMCxkZXNjcmlwdGlvbjoi'@; put 'IityLGV4cGFuZGVkOnRoaXMuaXNFeHBhbmRlZCgpfTtzd2l0Y2godHlwZW9mIGkudmFsdWUpe2Nhc2UibnVtYmVyIjppLnR5cGU9Im51bWJlciI7YnJlYWs7Y2FzZSJib29sZWFuIjppLnR5cGU9ImJvb2xlYW4iO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOmkudHlwZT0iZnVuY3Rpb24iO2JyZWFr'@; put 'O2Nhc2Uic3RyaW5nIjppZih0aGlzLmlzTGluayhpLnZhbHVlKSl7aS50eXBlPSJsaW5rIjticmVha31pLnR5cGU9InN0cmluZyIsaS5kZXNjcmlwdGlvbj0nIicraS52YWx1ZSsnIic7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOmkudHlwZT0idW5kZWZpbmVkIixpLmRlc2NyaXB0aW9uPSJ1bmRl'@; put 'ZmluZWQiO2JyZWFrO2Nhc2Uib2JqZWN0IjpudWxsPT09aS52YWx1ZT8oaS50eXBlPSJudWxsIixpLmRlc2NyaXB0aW9uPSJudWxsIik6QXJyYXkuaXNBcnJheShpLnZhbHVlKT8oaS50eXBlPSJhcnJheSIsaS5kZXNjcmlwdGlvbj0iQXJyYXlbIitpLnZhbHVlLmxlbmd0aCsiXSAiK0pTT04u'@; put 'c3RyaW5naWZ5KGkudmFsdWUpKTppLnZhbHVlIGluc3RhbmNlb2YgRGF0ZT9pLnR5cGU9ImRhdGUiOihpLnR5cGU9Im9iamVjdCIsaS5kZXNjcmlwdGlvbj0iT2JqZWN0ICIrSlNPTi5zdHJpbmdpZnkoaS52YWx1ZSkpfXJldHVybiBpfWlzTGluayh0KXtyZXR1cm4iaHR0cHM6Ly8iPT09dC5z'@; put 'dWJzdHJpbmcoMCw4KXx8Imh0dHA6Ly8iPT09dC5zdWJzdHJpbmcoMCw3KXx8Ii8iPT09dFswXX1pc0V4cGFuZGVkKCl7cmV0dXJuIHRoaXMuZXhwYW5kZWQmJiEodGhpcy5kZXB0aD4tMSYmdGhpcy5fY3VycmVudERlcHRoPj10aGlzLmRlcHRoKX1kZWN5Y2xlKHQpe2NvbnN0IHI9bmV3IFdl'@; put 'YWtNYXA7cmV0dXJuIGZ1bmN0aW9uIGkobyxhKXtsZXQgbCx1O3JldHVybiJvYmplY3QiIT10eXBlb2Ygb3x8bnVsbD09PW98fG8gaW5zdGFuY2VvZiBCb29sZWFufHxvIGluc3RhbmNlb2YgRGF0ZXx8byBpbnN0YW5jZW9mIE51bWJlcnx8byBpbnN0YW5jZW9mIFJlZ0V4cHx8byBpbnN0YW5j'@; put 'ZW9mIFN0cmluZz9vOihsPXIuZ2V0KG8pLHZvaWQgMCE9PWw/eyRyZWY6bH06KHIuc2V0KG8sYSksQXJyYXkuaXNBcnJheShvKT8odT1bXSxvLmZvckVhY2goZnVuY3Rpb24oZyxFKXt1W0VdPWkoZyxhKyJbIitFKyJdIil9KSk6KHU9e30sT2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlv'@; put 'bihnKXt1W2ddPWkob1tnXSxhKyJbIitKU09OLnN0cmluZ2lmeShnKSsiXSIpfSkpLHUpKX0odCwiJCIpfX1yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVjbXA9UHIoe3R5cGU6bixzZWxlY3RvcnM6W1sibmd4LWpzb24tdmlld2VyIl1d'@; put 'LGlucHV0czp7anNvbjoianNvbiIsZXhwYW5kZWQ6ImV4cGFuZGVkIixkZXB0aDoiZGVwdGgiLF9jdXJyZW50RGVwdGg6Il9jdXJyZW50RGVwdGgifSxvdXRwdXRzOntzZWdtZW50TGlua0NsaWNrZWQ6InNlZ21lbnRMaW5rQ2xpY2tlZCJ9LHN0YW5kYWxvbmU6ITEsZmVhdHVyZXM6W2l1XSxk'@; put 'ZWNsczoyLHZhcnM6MSxjb25zdHM6W1sxLCJuZ3gtanNvbi12aWV3ZXIiXSxbMywibmdDbGFzcyIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsIm5nQ2xhc3MiXSxbMywiY2xpY2siLCJuZ0NsYXNzIl0sWyJjbGFzcyIsInRvZ2dsZXIiLDQsIm5nSWYiXSxbMSwic2VnbWVudC1rZXkiXSxbMSwi'@; put 'c2VnbWVudC1zZXBhcmF0b3IiXSxbImNsYXNzIiwic2VnbWVudC12YWx1ZSIsMywiY2xpY2siLDQsIm5nSWYiXSxbImNsYXNzIiwiY2hpbGRyZW4iLDQsIm5nSWYiXSxbMSwidG9nZ2xlciJdLFsxLCJzZWdtZW50LXZhbHVlIiwzLCJjbGljayJdLFsxLCJjaGlsZHJlbiJdLFszLCJzZWdtZW50'@; put 'TGlua0NsaWNrZWQiLCJqc29uIiwiZXhwYW5kZWQiLCJkZXB0aCIsIl9jdXJyZW50RGVwdGgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxyKXsxJnQmJihKKDAsInNlY3Rpb24iLDApLFluKDEscWduLDksMTEsInNlY3Rpb24iLDEpLHRlKCkpLDImdCYmKGllKCkscnQoIm5nRm9yT2YiLHIuc2Vn'@; put 'bWVudHMpKX0sZGVwZW5kZW5jaWVzOltGaCxSZixZcyxuXSxzdHlsZXM6WydAY2hhcnNldCAiVVRGLTgiOy5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OnZhcigtLW5neC1qc29uLWZvbnQtZmFtaWx5LCBtb25vc3BhY2UpO2ZvbnQtc2l6ZTp2YXIoLS1u'@; put 'Z3gtanNvbi1mb250LXNpemUsIDFlbSk7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHg7bWFyZ2lu'@; put 'OjFweCAxcHggMXB4IDEycHh9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3JkLXdyYXA6YnJlYWstd29yZH0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRl'@; put 'bnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdICAgLnRvZ2dsZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbi1sZWZ0Oi0xNHB4O21hcmdpbi10b3A6M3B4O2ZvbnQtc2l6'@; put 'ZTouOGVtO2xpbmUtaGVpZ2h0OjEuMmVtO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjb2xvcjp2YXIoLS1uZ3gtanNvbi10b2dnbGVyLCAjNzg3ODc4KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LW1h'@; put 'aW5bX25nY29udGVudC0lQ09NUCVdICAgLnRvZ2dsZXJbX25nY29udGVudC0lQ09NUCVdOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IlxcMjViYSI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjFzIGVhc2UtaW59Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0g'@; put 'ICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LWtleVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24ta2V5LCAjNEUxODdDKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNP'@; put 'TVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1zZXBhcmF0b3IsICM5OTkpfS5uZ3gtanNvbi12aWV3ZXJb'@; put 'X25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnRbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tdmFsdWUsICMwMDApfS5uZ3gtanNvbi12'@; put 'aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNoaWxkcmVuW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxMnB4fS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1zdHJpbmdbX25n'@; put 'Y29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tc3RyaW5nLCAjRkY2QjZCKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5z'@; put 'ZWdtZW50LXR5cGUtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLW51bWJlciwgIzAwOTY4OCl9Lm5neC1qc29uLXZpZXdlcltf'@; put 'bmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWJvb2xlYW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tYm9vbGVhbiwgI0I5'@; put 'MzhBNCl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWRhdGVbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0t'@; put 'bmd4LWpzb24tZGF0ZSwgIzA1NjY4RCl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0l'@; put 'Q09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLWFycmF5LCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtb2JqZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQt'@; put 'dmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLW9iamVjdCwgIzk5OSl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVu'@; put 'dC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLWZ1bmN0aW9uLCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbGlua1tfbmdjb250ZW50LSVDT01QJV0gPiAuc2Vn'@; put 'bWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1saW5rLCAjOUI1OUI2KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbnVsbFtfbmdjb250'@; put 'ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1udWxsLCAjZmZmKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5'@; put 'cGUtdW5kZWZpbmVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLXVuZGVmaW5lZCwgI2ZmZil9Lm5neC1qc29uLXZpZXdlcltfbmdjb250'@; put 'ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLW51bGxbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZ3gtanNvbi1udWxsLWJnLCBy'@; put 'ZWQpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS11bmRlZmluZWRbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1rZXlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigt'@; put 'LW5neC1qc29uLXVuZGVmaW5lZC1rZXksICM5OTkpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS11bmRlZmluZWRbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtf'@; put 'bmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZ3gtanNvbi11bmRlZmluZWQta2V5LCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbGlua1tfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19u'@; put 'Z2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1vYmplY3RbX25nY29udGVudC0l'@; put 'Q09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0sIC5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1hcnJheVtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFj'@; put 'ZTpub3dyYXB9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVdID4gLnRvZ2dsZXJbX25nY29udGVudC0lQ09NUCVdOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0l'@; put 'Q09NUCVdICAgLmV4cGFuZGFibGVbX25nY29udGVudC0lQ09NUCVdLCAubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5leHBhbmRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b2dnbGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcn0nXX0pLG59KSgp'@; put 'LFhnbj0oKCk9PntjbGFzcyBue31yZXR1cm4gbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuKX0sbi5cdTAyNzVtb2Q9R2koe3R5cGU6bn0pLG4uXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltxb119KSxufSkoKSxRZ249KCgpPT57dmFyIG47Y2xhc3MgZXt0cmFuc2Zvcm0o'@; put 'cil7aWYoIXIuaW5jbHVkZXMoIi8iKSlyZXR1cm4gcjtsZXQgaT0iIjtjb25zdCBvPXIuc3BsaXQoIi8iKTtmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKylpZigiIiE9PW9bYV0pe2NvbnN0IGw9b1thXTtpKz0iLyIrbCxvW2FdPWA8YSBocmVmPSR7aX0+JHtsfTwvYT5gfXJldHVybiBvLmpv'@; put 'aW4oIi8iKX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVwaXBlPXVoKHtuYW1lOiJsaW5raW56ZSIsdHlwZTplLHB1cmU6ITAsc3RhbmRhbG9uZTohMX0pKX1yZXR1cm4gbigpLGV9KSgpLEpnbj0oKCk9Pnt2'@; put 'YXIgbjtjbGFzcyBle3RyYW5zZm9ybShyKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkocixudWxsLDIpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpfSx0aGlzLlx1MDI3NXBpcGU9dWgoe25hbWU6InByZXR0eWpzb24iLHR5cGU6ZSxw'@; put 'dXJlOiEwLHN0YW5kYWxvbmU6ITF9KSl9cmV0dXJuIG4oKSxlfSkoKTtmdW5jdGlvbiBlbW4obixlKXtpZigxJm4mJihKKDAsIm9wdGlvbiIsMjApLFNlKDEpLHRlKCkpLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtydCgidmFsdWUiLHpqKHQudmFsdWUpKSxpZSgpLFNyKCIgIix0LmtleSwi'@; put 'ICIpfX1mdW5jdGlvbiB0bW4obixlKXtpZigxJm4mJihKKDAsIm9wdGdyb3VwIiw0KSxfbygxLGVtbiwyLDMsIm9wdGlvbiIsMjAsQ28pLEFjKDMsImtleXZhbHVlIiksdGUoKSksMiZuKXtjb25zdCB0PWUuJGltcGxpY2l0LHI9VGUoKTtydCgibGFiZWwiLHQua2V5KSxpZSgpLHlvKFRkKDMs'@; put 'MSxyLmNvbGxlY3Rpb25zW3Qua2V5XSkpfX1mdW5jdGlvbiBubW4obixlKXsxJm4mJihKKDAsInAiLDUpLFNlKDEsIlNlbGVjdCBjb2xsZWN0aW9uIHRvIHN0YXJ0IiksdGUoKSl9ZnVuY3Rpb24gcm1uKG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsNyl9ZnVuY3Rpb24gaW1uKG4sZSl7'@; put 'MSZuJiZJdCgwLCJjbHItaWNvbiIsMjMpfWZ1bmN0aW9uIG9tbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLWljb24iLDI1KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgyKTtyZXR1cm4gaS5saW5rc1NlYXJjaD0iIixYZShpLmxpbmtzTGlzdE9u'@; put 'RmlsdGVyKCkpfSksdGUoKX19ZnVuY3Rpb24gYW1uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiw4KSgxLCJkaXYiLDIxKSgyLCJpbnB1dCIsMjIsMCksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKTtyZXR1cm4g'@; put 'Zmkoby5saW5rc1NlYXJjaCxpKXx8KG8ubGlua3NTZWFyY2g9aSksWGUoaSl9KSx3dCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkubGlua3NMaXN0T25GaWx0ZXIoKSl9KSx0ZSgpLHZ0KDQsaW1uLDEsMCwiY2xyLWljb24iLDIzKSx2dCg1LG9tbiwxLDAsImNsci1p'@; put 'Y29uIiwyNCksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1vbygzKSxyPVRlKCk7aWUoMiksZGkoIm5nTW9kZWwiLHIubGlua3NTZWFyY2gpLGllKDIpLF90KHQudmFsdWUubGVuZ3RoPDE/NDotMSksaWUoKSxfdCh0LnZhbHVlLmxlbmd0aD4wPzU6LTEpfX1mdW5jdGlvbiBzbW4obixlKXtpZigx'@; put 'Jm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDI3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1wbGljaXQsYT1UZSgpO3JldHVybiBYZShhLnRyZWVOb2RlQ2xpY2tlZChpLG8sYS5lbmRwb2ludExpbmtzKSl9KSxoaSgiY2xyRXhwYW5k'@; put 'ZWRDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1wbGljaXQ7cmV0dXJuIGZpKG8uZXhwYW5kZWQsaSl8fChvLmV4cGFuZGVkPWkpLFhlKGkpfSksSigxLCJwIiwyOCksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQ7cmV0'@; put 'dXJuIFhlKFRlKCkubGlua09uQ2xpY2soaSkpfSksSXQoMiwiY2xyLWljb24iLDI5KSxTZSgzKSx0ZSgpKCl9aWYoMiZuKXtjb25zdCB0PVRlKCkuJGltcGxpY2l0O2RpKCJjbHJFeHBhbmRlZCIsdC5leHBhbmRlZCkscnQoImNsckxvYWRpbmciLCEhdC5sb2FkaW5nVGFibGVzJiYhdC50YWJs'@; put 'ZXMpLGllKDMpLE5oKCIgIix0Lm1ldGhvZCwiICIsdC5yZWwsIiAiKX19ZnVuY3Rpb24gbG1uKG4sZSl7MSZuJiZ2dCgwLHNtbiw0LDQsImNsci10cmVlLW5vZGUiLDI2KSwyJm4mJl90KGUuJGltcGxpY2l0LmhpZGRlbj8tMTowKX1mdW5jdGlvbiBjbW4obixlKXsxJm4mJkl0KDAsImNsci1p'@; put 'Y29uIiwyMyl9ZnVuY3Rpb24gdW1uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNvbiIsMjUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLml0ZW1zU2VhcmNoPSIiLFhlKGkuaXRlbXNMaXN0T25GaWx0ZXIoKSl9KSx0ZSgp'@; put 'fX1mdW5jdGlvbiBkbW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci10cmVlLW5vZGUiLDgpKDEsImRpdiIsMjEpKDIsImlucHV0IiwzMCwxKSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLml0ZW1zU2VhcmNo'@; put 'LGkpfHwoby5pdGVtc1NlYXJjaD1pKSxYZShpKX0pLHd0KCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoKS5pdGVtc0xpc3RPbkZpbHRlcigpKX0pLHRlKCksdnQoNCxjbW4sMSwwLCJjbHItaWNvbiIsMjMpLHZ0KDUsdW1uLDEsMCwiY2xyLWljb24iLDI0KSx0ZSgpKCl9'@; put 'aWYoMiZuKXtjb25zdCB0PW9vKDMpLHI9VGUoKTtpZSgyKSxkaSgibmdNb2RlbCIsci5pdGVtc1NlYXJjaCksaWUoMiksX3QodC52YWx1ZS5sZW5ndGg8MT80Oi0xKSxpZSgpLF90KHQudmFsdWUubGVuZ3RoPjA/NTotMSl9fWZ1bmN0aW9uIGhtbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigp'@; put 'O0ooMCwiY2xyLXRyZWUtbm9kZSIsMjcpLHd0KCJjbGljayIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIFhlKGEudHJlZU5vZGVDbGlja2VkKGksbyxhLmVuZHBvaW50SXRlbXMpKX0pLGhpKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rp'@; put 'b24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRpbXBsaWNpdDtyZXR1cm4gZmkoby5leHBhbmRlZCxpKXx8KG8uZXhwYW5kZWQ9aSksWGUoaSl9KSxKKDEsInAiLDI4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS5pdGVt'@; put 'T25DbGljayhpKSl9KSxJdCgyLCJjbHItaWNvbiIsMjkpLFNlKDMpLHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoKS4kaW1wbGljaXQ7ZGkoImNsckV4cGFuZGVkIix0LmV4cGFuZGVkKSxydCgiY2xyTG9hZGluZyIsISF0LmxvYWRpbmdUYWJsZXMmJiF0LnRhYmxlcyksaWUoMyksU3IoIiAi'@; put 'LHQubmFtZXx8dC5pZCwiICIpfX1mdW5jdGlvbiBmbW4obixlKXsxJm4mJnZ0KDAsaG1uLDQsMywiY2xyLXRyZWUtbm9kZSIsMjYpLDImbiYmX3QoZS4kaW1wbGljaXQuaGlkZGVuPy0xOjApfWZ1bmN0aW9uIHBtbihuLGUpezEmbiYmSXQoMCwiY2xyLXNwaW5uZXIiLDE4KX1mdW5jdGlvbiBn'@; put 'bW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtTZSgwLCJcbiAgICAgICAgICAgICIpLEooMSwibmd4LWpzb24tdmlld2VyIiwzOSksd3QoInNlZ21lbnRMaW5rQ2xpY2tlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLm9uSnNvbkxpbmtDbGljayhpKSl9KSx0ZSgpLFNl'@; put 'KDIsIlxuICAgICAgICAgICIpfWlmKDImbil7Y29uc3QgdD1UZSgzKTtpZSgpLHJ0KCJqc29uIix0LmVuZHBvaW50SnNvbikoImV4cGFuZGVkIiwhMSl9fWZ1bmN0aW9uIG1tbihuLGUpezEmbiYmKFNlKDApLEFjKDEsInByZXR0eWpzb24iKSksMiZuJiZTcigiXG4gICAgICAgICAgICAiLFRk'@; put 'KDEsMSxUZSgzKS5lbmRwb2ludEpzb24pLCJcbiAgICAgICAgICAiKX1mdW5jdGlvbiB2bW4obixlKXtpZigxJm4mJihTZSgwLCJcbiAgICAgICAgICAiKSx2dCgxLGdtbiwzLDIpLHZ0KDIsbW1uLDIsMykpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgpLF90KHQucmF3SnNvbj8tMToxKSxpZSgp'@; put 'LF90KHQucmF3SnNvbj8yOi0xKX19ZnVuY3Rpb24gX21uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYiLDMxKSgxLCJzcGFuIiwzMiksU2UoMiwiIEdFVCAiKSxKKDMsInAiLDMzKSxBYyg0LCJsaW5raW56ZSIpLHd0KCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIFllKHQp'@; put 'LFhlKFRlKCkub25CcmVhZGN1bXNDbGljayhpKSl9KSx0ZSgpLEooNSwiYnV0dG9uIiwxNSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLmNvcHlCcmVhZGNydW1zKCkpfSksSXQoNiwiY2xyLWljb24iLDE2KSx0ZSgpKCksSig3LCJkaXYiLDM0KSg4LCJjbHIt'@; put 'aW5wdXQtY29udGFpbmVyIiwxMykoOSwibGFiZWwiKSxTZSgxMCwiU3RhcnQiKSx0ZSgpLEooMTEsImlucHV0IiwzNSksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKTtyZXR1cm4gZmkoby5lbmRwb2ludC5zdGFydCxpKXx8KG8uZW5kcG9pbnQuc3Rh'@; put 'cnQ9aSksWGUoaSl9KSx0ZSgpKCksSigxMiwiY2xyLWlucHV0LWNvbnRhaW5lciIsMTMpKDEzLCJsYWJlbCIpLFNlKDE0LCJMaW1pdCIpLHRlKCksSigxNSwiaW5wdXQiLDM1KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpO3JldHVybiBmaShvLmVu'@; put 'ZHBvaW50LmxpbWl0LGkpfHwoby5lbmRwb2ludC5saW1pdD1pKSxYZShpKX0pLHRlKCkoKSxKKDE2LCJidXR0b24iLDM2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkuYXBwbHlRdWVyeVBhcmFtcygpKX0pLEl0KDE3LCJjbHItaWNvbiIsMzcpLHRlKCkoKSgp'@; put 'LEooMTgsInByZSIsMzgpLFNlKDE5LCIgICAgICAgICIpLHZ0KDIwLHZtbiwzLDIpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKCk7aWUoMykscnQoImlubmVySFRNTCIsVGQoNCw3LHQuZW5kcG9pbnQudXJsKSx4NSksaWUoOCksZGkoIm5nTW9kZWwiLHQuZW5kcG9pbnQuc3RhcnQpLHJ0KCJk'@; put 'aXNhYmxlZCIsdm9pZCAwPT09dC5lbmRwb2ludC5zdGFydCksaWUoNCksZGkoIm5nTW9kZWwiLHQuZW5kcG9pbnQubGltaXQpLHJ0KCJkaXNhYmxlZCIsdm9pZCAwPT09dC5lbmRwb2ludC5saW1pdCksaWUoKSxydCgiZGlzYWJsZWQiLHZvaWQgMD09PXQuZW5kcG9pbnQubGltaXQmJnZvaWQg'@; put 'MD09PXQuZW5kcG9pbnQuc3RhcnQpLGllKDQpLF90KHQuZW5kcG9pbnRKc29uPzIwOi0xKX19bGV0IHltbj0oKCk9Pnt2YXIgbjtjbGFzcyBle2NvbnN0cnVjdG9yKHIsaSxvLGEpe3RoaXMuaGVscGVyU2VydmljZT1yLHRoaXMuc2FzVml5YVNlcnZpY2U9aSx0aGlzLnNhc1NlcnZpY2U9byx0'@; put 'aGlzLmV2ZW50U2VydmljZT1hLHRoaXMuY29sbGVjdGlvbnM9e30sdGhpcy5jb2xsZWN0aW9uPSIiLHRoaXMuZW5kcG9pbnRMaW5rcz1bXSx0aGlzLmVuZHBvaW50SXRlbXM9W10sdGhpcy5lbmRwb2ludD17dXJsOiIiLHN0YXJ0Oi0xLGxpbWl0Oi0xfSx0aGlzLmVuZHBvaW50TG9hZGluZz0h'@; put 'MSx0aGlzLmNvbGxlY3Rpb25Mb2FkaW5nPSExLHRoaXMucmF3SnNvbj0hMSx0aGlzLmxpbmtzU2VhcmNoPSIiLHRoaXMuaXRlbXNTZWFyY2g9IiIsdGhpcy5zYXNqc0NvbmZpZz1uZXcgeHAuU0FTanNDb25maWd9bmdPbkluaXQoKXt0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5n'@; put 'ZXRTYXNqc0NvbmZpZygpLHRoaXMuY29sbGVjdGlvbnM9dGhpcy5zYXNWaXlhU2VydmljZS5nZXRBbGxDb2xsZWN0aW9ucygpfWxpbmtzTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmVuZHBvaW50TGlua3MsdGhpcy5saW5rc1NlYXJjaCwi'@; put 'cmVsIiksVW4udml5YUFwaS5saW5rc3NTZWFyY2g9dGhpcy5saW5rc1NlYXJjaH1pdGVtc0xpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5lbmRwb2ludEl0ZW1zLHRoaXMuaXRlbXNTZWFyY2gsIm5hbWUiKSxVbi52aXlhQXBpLml0ZW1zU2Vh'@; put 'cmNoPXRoaXMuaXRlbXNTZWFyY2h9bGlua09uQ2xpY2socil7dGhpcy5sb2FkVXJsKHIuaHJlZil9aXRlbU9uQ2xpY2socil7dGhpcy5sb2FkVXJsKHIubGlua3NbMF0uaHJlZil9dHJlZU5vZGVDbGlja2VkKHIsaSxvKXsiQ29sbGFwc2UiPT09ci50YXJnZXQudGl0bGUmJnRoaXMuY29sbGFw'@; put 'c2VUcmVlSXRlbXMobyxpKX1jb2xsYXBzZVRyZWVJdGVtcyhyLGkpe3IuZm9yRWFjaChvPT57SlNPTi5zdHJpbmdpZnkobykhPT1KU09OLnN0cmluZ2lmeShpKSYmKG8uZXhwYW5kZWQ9ITEpfSl9dXBkYXRlU2VsZWN0ZWRDb2xsZWN0aW9uKCl7VW4udml5YUFwaS5zZWxlY3RlZENvbGxlY3Rp'@; put 'b249dGhpcy5jb2xsZWN0aW9uLHRoaXMuZW5kcG9pbnQudXJsPXRoaXMuY29sbGVjdGlvbix0aGlzLmNvbGxlY3Rpb25Mb2FkaW5nPSEwLHRoaXMuc2FzVml5YVNlcnZpY2UuZ2V0QnlDb2xsZWN0aW9uKHRoaXMuY29sbGVjdGlvbikuc3Vic2NyaWJlKHI9Pnt0aGlzLmVuZHBvaW50TGlua3M9'@; put 'ci5saW5rcyx0aGlzLmVuZHBvaW50SXRlbXM9ci5pdGVtcz9yLml0ZW1zOltdLHRoaXMuY29sbGVjdGlvbkxvYWRpbmc9ITEsdGhpcy5lbmRwb2ludEpzb249cix0aGlzLmVuZHBvaW50LnN0YXJ0PXIuc3RhcnQsdGhpcy5lbmRwb2ludC5saW1pdD1yLmxpbWl0fSxyPT57dGhpcy5jb2xsZWN0'@; put 'aW9uTG9hZGluZz0hMTtsZXQgaT0iRXJyb3Igb2NjdXJyZWQgd2hpbGUgc2VuZGluZyByZXF1ZXN0IjtyLm1lc3NhZ2UmJihpPXIubWVzc2FnZSksci5lcnJvciYmKHIuZXJyb3IubWVzc2FnZSYmKGk9ci5lcnJvci5tZXNzYWdlKSxyLmVycm9yLnJlbWVkaWF0aW9uJiYoaT1gJHtpfVxuJHty'@; put 'LmVycm9yLnJlbWVkaWF0aW9ufWApKSx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLGksbnVsbCwiSFRUUCBFcnJvciIpfSl9b25Kc29uTGlua0NsaWNrKHIpe3RoaXMubG9hZFVybChyKX1vbkpzb25DbGljayhyKXtpZihyLnByZXZlbnREZWZhdWx0KCksIkEiPT09ci5z'@; put 'cmNFbGVtZW50LnRhZ05hbWUpe2NvbnN0IGk9ci5zcmNFbGVtZW50LmhyZWYuc3BsaXQoci5zcmNFbGVtZW50Lmhvc3QpWzFdO3RoaXMubG9hZFVybChpKX19b25CcmVhZGN1bXNDbGljayhyKXtpZihyLnByZXZlbnREZWZhdWx0KCksIXIuc3JjRWxlbWVudC5ocmVmKXJldHVybjtjb25zdCBp'@; put 'PXIuc3JjRWxlbWVudC5ocmVmLnNwbGl0KHIuc3JjRWxlbWVudC5ob3N0KVsxXTt0aGlzLmxvYWRVcmwoaSl9Y29weUpzb24oKXt0aGlzLmVuZHBvaW50SnNvbiYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoSlNPTi5zdHJpbmdpZnkodGhpcy5lbmRwb2ludEpzb24sbnVsbCwyKSl9'@; put 'Y29weUJyZWFkY3J1bXMoKXt0aGlzLmVuZHBvaW50JiZ0aGlzLmVuZHBvaW50LnVybCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5lbmRwb2ludC51cmwpfWFwcGx5UXVlcnlQYXJhbXMoKXtjb25zdCByPXRoaXMuZW5kcG9pbnQuc3RhcnQsaT10aGlzLmVuZHBvaW50Lmxp'@; put 'bWl0LG89YD8ke3ZvaWQgMCE9PXI/InN0YXJ0PSIrcjoiIn0ke3ZvaWQgMCE9PWk/IiZsaW1pdD0iK2k6IiJ9YCxhPWAke3RoaXMuZW5kcG9pbnQudXJsLnNwbGl0KCI/IilbMF19JHtvfWA7dGhpcy5sb2FkVXJsKGEpfWxvYWRVcmwocil7dGhpcy5lbmRwb2ludExvYWRpbmc9ITAsdGhpcy5z'@; put 'YXNWaXlhU2VydmljZS5nZXRCeVVybChyKS5zdWJzY3JpYmUoaT0+e3RoaXMuZW5kcG9pbnRMaW5rcz1pLmxpbmtzLHRoaXMuZW5kcG9pbnRJdGVtcz1pLml0ZW1zP2kuaXRlbXM6W10sdGhpcy5lbmRwb2ludEpzb249aSx0aGlzLmVuZHBvaW50TG9hZGluZz0hMSx0aGlzLmVuZHBvaW50LnVy'@; put 'bD1yLHRoaXMuZW5kcG9pbnQuc3RhcnQ9aS5zdGFydCx0aGlzLmVuZHBvaW50LmxpbWl0PWkubGltaXR9LGk9Pnt0aGlzLmVuZHBvaW50TG9hZGluZz0hMTtsZXQgbz0iRXJyb3Igb2NjdXJyZWQgd2hpbGUgc2VuZGluZyByZXF1ZXN0IjtpLm1lc3NhZ2UmJihvPWkubWVzc2FnZSksaS5lcnJv'@; put 'ciYmKGkuZXJyb3IubWVzc2FnZSYmKG89aS5lcnJvci5tZXNzYWdlKSxpLmVycm9yLnJlbWVkaWF0aW9uJiYobz1gJHtvfVxuJHtpLmVycm9yLnJlbWVkaWF0aW9ufWApKSx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLG8sbnVsbCwiSFRUUCBFcnJvciIpfSl9c3RhdGlj'@; put 'I2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8ZSkoemUoZmgpLHplKENpZSksemUoaWMpLHplKHVkKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC12aXlhLWFwaS1leHBsb3JlciJdXSxob3N0QXR0cnM6WzEsImNv'@; put 'bnRlbnQtY29udGFpbmVyIl0sc3RhbmRhbG9uZTohMSxkZWNsczozNix2YXJzOjEwLGNvbnN0czpbWyJzZWFyY2hMaW5rc1RyZWVJbnB1dCIsIiJdLFsic2VhcmNoSXRlbXNUcmVlSW5wdXQiLCIiXSxbMSwiYXBpLWNvbGxlY3Rpb24tZHJvcGRvd24iXSxbImNsclNlbGVjdCIsIiIsImlkIiwi'@; put 'cmVwb3NpdG9yeSIsMywibmdNb2RlbENoYW5nZSIsImNoYW5nZSIsIm5nTW9kZWwiXSxbMywibGFiZWwiXSxbMSwidy0xMDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiY2xyTWVkaXVtIiwiIl0sWzEsInNlYXJjaC1ub2RlIl0s'@; put 'WzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIiwiaC0xMDAiLCJwLTEwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWzEsInctMTAwIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwic2l0aW9uLXJlbGF0aXZlIl0s'@; put 'WzEsImpzb24tdG9nZ2xlIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJtLTAiXSxbInR5cGUiLCJjaGVja2JveCIsImNsclRvZ2dsZSIsIiIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1saW5rIiwiYnRu'@; put 'LXNtIiwzLCJjbGljayJdLFsic2hhcGUiLCJjb3B5Il0sWzEsInRleHQtY2VudGVyIiwibS0wIl0sWyJjbHJTbWFsbCIsIiJdLFsxLCJ3LTEwMCIsImxpZ2h0Il0sWzMsInZhbHVlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIs'@; put 'InBsYWNlaG9sZGVyIiwiU2VhcmNoIGxpbmtzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2si'@; put 'XSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIl0sWzMsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJsb2NrIl0sWyJjbHJJbnB1dCIsIiIsInBs'@; put 'YWNlaG9sZGVyIiwiU2VhcmNoIGl0ZW1zIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4i'@; put 'XSxbMSwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciIsImVuZHBvaW50LWJyZWFkY3J1bXMiLDMsImNsaWNrIiwiaW5uZXJIVE1MIl0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLCJxdWVyeS1wYXJhbXMiXSxbImNscklucHV0'@; put 'IiwiIiwidHlwZSIsIm51bWJlciIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJkaXNhYmxlZCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLWxpbmsiLCJidG4tc20iLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwicGxheSJdLFsxLCJqc29uLWFyZWEiXSxbMSwi'@; put 'ZC1ibG9jayIsMywic2VnbWVudExpbmtDbGlja2VkIiwianNvbiIsImV4cGFuZGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7MSZpJiYoSigwLCJhcHAtc2lkZWJhciIpKDEsImRpdiIsMikoMiwiY2xyLXNlbGVjdC1jb250YWluZXIiKSgzLCJsYWJlbCIpLFNlKDQsIkFQSSBDb2xsZWN0'@; put 'aW9uIiksdGUoKSxKKDUsInNlbGVjdCIsMyksaGkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGwpe3JldHVybiBmaShvLmNvbGxlY3Rpb24sbCl8fChvLmNvbGxlY3Rpb249bCksbH0pLHd0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIG8udXBkYXRlU2VsZWN0ZWRDb2xsZWN0aW9uKCl9'@; put 'KSxfbyg2LHRtbiw0LDMsIm9wdGdyb3VwIiw0LENvKSxBYyg4LCJrZXl2YWx1ZSIpLHRlKCkoKSgpLHZ0KDksbm1uLDIsMCwicCIsNSksSigxMCwiZGl2Iiw2KSx2dCgxMSxybW4sMSwwLCJjbHItc3Bpbm5lciIsNyksdGUoKSxKKDEyLCJjbHItdHJlZSIpLHZ0KDEzLGFtbiw2LDMsImNsci10'@; put 'cmVlLW5vZGUiLDgpLF9vKDE0LGxtbiwxLDEsbnVsbCxudWxsLENvKSx0ZSgpLEooMTYsImNsci10cmVlIiksdnQoMTcsZG1uLDYsMywiY2xyLXRyZWUtbm9kZSIsOCksX28oMTgsZm1uLDEsMSxudWxsLG51bGwsQ28pLHRlKCkoKSxKKDIwLCJkaXYiLDkpKDIxLCJkaXYiLDEwKSgyMiwiZGl2'@; put 'IiwxMSkoMjMsImRpdiIsMTIpKDI0LCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMTMpKDI1LCJjbHItdG9nZ2xlLXdyYXBwZXIiKSgyNiwiaW5wdXQiLDE0KSxoaSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24obCl7cmV0dXJuIGZpKG8ucmF3SnNvbixsKXx8KG8ucmF3SnNvbj1sKSxsfSksdGUo'@; put 'KSxKKDI3LCJsYWJlbCIpLFNlKDI4LCJSQVcgSnNvbiIpLHRlKCkoKSgpLEooMjksImJ1dHRvbiIsMTUpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gby5jb3B5SnNvbigpfSksSXQoMzAsImNsci1pY29uIiwxNiksdGUoKSgpLEooMzEsImg0IiwxNyksU2UoMzIsIiBBUEkgRXhwbG9y'@; put 'ZXIgIiksdnQoMzMscG1uLDEsMCwiY2xyLXNwaW5uZXIiLDE4KSx0ZSgpKCksSXQoMzQsImhyIiwxOSksdnQoMzUsX21uLDIxLDkpLHRlKCkoKSksMiZpJiYoaWUoNSksZGkoIm5nTW9kZWwiLG8uY29sbGVjdGlvbiksaWUoKSx5byhUZCg4LDgsby5jb2xsZWN0aW9ucykpLGllKDMpLF90KG8u'@; put 'ZW5kcG9pbnRMaW5rcy5sZW5ndGg8MSYmIW8uY29sbGVjdGlvbkxvYWRpbmc/OTotMSksaWUoMiksX3Qoby5jb2xsZWN0aW9uTG9hZGluZz8xMTotMSksaWUoMiksX3Qoby5lbmRwb2ludExpbmtzLmxlbmd0aD4wPzEzOi0xKSxpZSgpLHlvKG8uZW5kcG9pbnRMaW5rcyksaWUoMyksX3Qoby5l'@; put 'bmRwb2ludEl0ZW1zLmxlbmd0aD4wPzE3Oi0xKSxpZSgpLHlvKG8uZW5kcG9pbnRJdGVtcyksaWUoOCksZGkoIm5nTW9kZWwiLG8ucmF3SnNvbiksaWUoNyksX3Qoby5lbmRwb2ludExvYWRpbmc/MzM6LTEpLGllKDIpLF90KG8uY29sbGVjdGlvbi5sZW5ndGg+MD8zNTotMSkpfSxkZXBlbmRl'@; put 'bmNpZXM6W1hnLFFnLGx1LEV6LEgyLEtnLG9jLFhsLFBwLE8zLGN1LCQwLGVsLFUyLEV2LEZmLFBmLFh6LHFiLENNLHoyLCQ2LEc2LEtnbixFVSxRZ24sSmduXSxlbmNhcHN1bGF0aW9uOjJ9KSl9cmV0dXJuIG4oKSxlfSkoKTtjb25zdCBibW49bmV3IEVyKCJXaW5kb3dUb2tlbiIsdHlwZW9m'@; put 'IHdpbmRvdzwidSImJndpbmRvdy5kb2N1bWVudD97cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+d2luZG93fTp7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+e319KTtsZXQgd21uPSgoKT0+e2NsYXNzIG57Y29uc3RydWN0b3IodCxyLGkpe3RoaXMubmdab25lPXQsdGhpcy5k'@; put 'b2N1bWVudD1yLHRoaXMud2luZG93PWksdGhpcy5jb3B5U3ViamVjdD1uZXcgTXIsdGhpcy5jb3B5UmVzcG9uc2UkPXRoaXMuY29weVN1YmplY3QuYXNPYnNlcnZhYmxlKCksdGhpcy5jb25maWc9e319Y29uZmlndXJlKHQpe3RoaXMuY29uZmlnPXR9Y29weSh0KXtpZighdGhpcy5pc1N1cHBv'@; put 'cnRlZHx8IXQpcmV0dXJuIHRoaXMucHVzaENvcHlSZXNwb25zZSh7aXNTdWNjZXNzOiExLGNvbnRlbnQ6dH0pO2NvbnN0IHI9dGhpcy5jb3B5RnJvbUNvbnRlbnQodCk7cmV0dXJuIHRoaXMucHVzaENvcHlSZXNwb25zZShyP3tjb250ZW50OnQsaXNTdWNjZXNzOnJ9Ontpc1N1Y2Nlc3M6ITEs'@; put 'Y29udGVudDp0fSl9Z2V0IGlzU3VwcG9ydGVkKCl7cmV0dXJuISF0aGlzLmRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCYmISF0aGlzLmRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgiY29weSIpJiYhIXRoaXMud2luZG93fWlzVGFyZ2V0VmFsaWQodCl7aWYodCBpbnN0YW5j'@; put 'ZW9mIEhUTUxJbnB1dEVsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KXtpZih0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgYXR0cmlidXRlLiBQbGVhc2UgdXNlICJyZWFkb25seSIgaW5zdGVhZCBvZiAi'@; put 'ZGlzYWJsZWQiIGF0dHJpYnV0ZScpO3JldHVybiEwfXRocm93IG5ldyBFcnJvcigiVGFyZ2V0IHNob3VsZCBiZSBpbnB1dCBvciB0ZXh0YXJlYSIpfWNvcHlGcm9tSW5wdXRFbGVtZW50KHQscj0hMCl7dHJ5e3RoaXMuc2VsZWN0VGFyZ2V0KHQpO2NvbnN0IGk9dGhpcy5jb3B5VGV4dCgpO3Jl'@; put 'dHVybiB0aGlzLmNsZWFyU2VsZWN0aW9uKHI/dDp2b2lkIDAsdGhpcy53aW5kb3cpLGkmJnRoaXMuaXNDb3B5U3VjY2Vzc0luSUUxMSgpfWNhdGNoe3JldHVybiExfX1pc0NvcHlTdWNjZXNzSW5JRTExKCl7Y29uc3QgdD10aGlzLndpbmRvdy5jbGlwYm9hcmREYXRhO3JldHVybiEodCYmdC5n'@; put 'ZXREYXRhJiYhdC5nZXREYXRhKCJUZXh0IikpfWNvcHlGcm9tQ29udGVudCh0LHI9dGhpcy5kb2N1bWVudC5ib2R5KXtpZih0aGlzLnRlbXBUZXh0QXJlYSYmIXIuY29udGFpbnModGhpcy50ZW1wVGV4dEFyZWEpJiZ0aGlzLmRlc3Ryb3kodGhpcy50ZW1wVGV4dEFyZWEucGFyZW50RWxlbWVu'@; put 'dHx8dm9pZCAwKSwhdGhpcy50ZW1wVGV4dEFyZWEpe3RoaXMudGVtcFRleHRBcmVhPXRoaXMuY3JlYXRlVGVtcFRleHRBcmVhKHRoaXMuZG9jdW1lbnQsdGhpcy53aW5kb3cpO3RyeXtyLmFwcGVuZENoaWxkKHRoaXMudGVtcFRleHRBcmVhKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkNvbnRh'@; put 'aW5lciBzaG91bGQgYmUgYSBEb20gZWxlbWVudCIpfX10aGlzLnRlbXBUZXh0QXJlYS52YWx1ZT10O2NvbnN0IGk9dGhpcy5jb3B5RnJvbUlucHV0RWxlbWVudCh0aGlzLnRlbXBUZXh0QXJlYSwhMSk7cmV0dXJuIHRoaXMuY29uZmlnLmNsZWFuVXBBZnRlckNvcHkmJnRoaXMuZGVzdHJveSh0'@; put 'aGlzLnRlbXBUZXh0QXJlYS5wYXJlbnRFbGVtZW50fHx2b2lkIDApLGl9ZGVzdHJveSh0PXRoaXMuZG9jdW1lbnQuYm9keSl7dGhpcy50ZW1wVGV4dEFyZWEmJih0LnJlbW92ZUNoaWxkKHRoaXMudGVtcFRleHRBcmVhKSx0aGlzLnRlbXBUZXh0QXJlYT12b2lkIDApfXNlbGVjdFRhcmdldCh0'@; put 'KXtyZXR1cm4gdC5zZWxlY3QoKSx0LnNldFNlbGVjdGlvblJhbmdlKDAsdC52YWx1ZS5sZW5ndGgpLHQudmFsdWUubGVuZ3RofWNvcHlUZXh0KCl7cmV0dXJuIHRoaXMuZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKX1jbGVhclNlbGVjdGlvbih0LHIpe3QmJnQuZm9jdXMoKSxyLmdldFNl'@; put 'bGVjdGlvbigpPy5yZW1vdmVBbGxSYW5nZXMoKX1jcmVhdGVUZW1wVGV4dEFyZWEodCxyKXtjb25zdCBpPSJydGwiPT09dC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKTtsZXQgbztyZXR1cm4gbz10LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksby5zdHlsZS5mb250U2l6'@; put 'ZT0iMTJwdCIsby5zdHlsZS5ib3JkZXI9IjAiLG8uc3R5bGUucGFkZGluZz0iMCIsby5zdHlsZS5tYXJnaW49IjAiLG8uc3R5bGUucG9zaXRpb249ImFic29sdXRlIixvLnN0eWxlW2k/InJpZ2h0IjoibGVmdCJdPSItOTk5OXB4IixvLnN0eWxlLnRvcD0oci5wYWdlWU9mZnNldHx8dC5kb2N1'@; put 'bWVudEVsZW1lbnQuc2Nyb2xsVG9wKSsicHgiLG8uc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpLG99cHVzaENvcHlSZXNwb25zZSh0KXt0aGlzLmNvcHlTdWJqZWN0Lm9ic2VydmVycy5sZW5ndGg+MCYmdGhpcy5uZ1pvbmUucnVuKCgpPT57dGhpcy5jb3B5U3ViamVjdC5uZXh0KHQpfSl9'@; put 'cHVzaENvcHlSZXBvbnNlKHQpe3RoaXMucHVzaENvcHlSZXNwb25zZSh0KX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikob3IoZ2EpLG9yKFRsKSxvcihibW4sOCkpfSxuLlx1MDI3NXByb3Y9Sm4oe3Rva2VuOm4sZmFjdG9yeTpuLlx1MDI3NWZhYyxw'@; put 'cm92aWRlZEluOiJyb290In0pLG59KSgpLENtbj0oKCk9PntjbGFzcyBue2NvbnN0cnVjdG9yKHQscixpLG8pe3RoaXMubmdab25lPXQsdGhpcy5ob3N0PXIsdGhpcy5yZW5kZXJlcj1pLHRoaXMuY2xpcGJvYXJkU3J2PW8sdGhpcy5jYk9uU3VjY2Vzcz1uZXcgS3IsdGhpcy5jYk9uRXJyb3I9'@; put 'bmV3IEtyLHRoaXMub25DbGljaz1hPT57dGhpcy5jbGlwYm9hcmRTcnYuaXNTdXBwb3J0ZWQ/dGhpcy50YXJnZXRFbG0mJnRoaXMuY2xpcGJvYXJkU3J2LmlzVGFyZ2V0VmFsaWQodGhpcy50YXJnZXRFbG0pP3RoaXMuaGFuZGxlUmVzdWx0KHRoaXMuY2xpcGJvYXJkU3J2LmNvcHlGcm9tSW5w'@; put 'dXRFbGVtZW50KHRoaXMudGFyZ2V0RWxtKSx0aGlzLnRhcmdldEVsbS52YWx1ZSxhKTp0aGlzLmNiQ29udGVudCYmdGhpcy5oYW5kbGVSZXN1bHQodGhpcy5jbGlwYm9hcmRTcnYuY29weUZyb21Db250ZW50KHRoaXMuY2JDb250ZW50LHRoaXMuY29udGFpbmVyKSx0aGlzLmNiQ29udGVudCxh'@; put 'KTp0aGlzLmhhbmRsZVJlc3VsdCghMSx2b2lkIDAsYSl9fW5nT25Jbml0KCl7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLmNsaWNrTGlzdGVuZXI9dGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsImNsaWNrIix0aGlzLm9uQ2xpY2sp'@; put 'fSl9bmdPbkRlc3Ryb3koKXt0aGlzLmNsaWNrTGlzdGVuZXImJnRoaXMuY2xpY2tMaXN0ZW5lcigpLHRoaXMuY2xpcGJvYXJkU3J2LmRlc3Ryb3kodGhpcy5jb250YWluZXIpfWhhbmRsZVJlc3VsdCh0LHIsaSl7bGV0IG89e2lzU3VjY2Vzczp0LGNvbnRlbnQ6cixzdWNjZXNzTWVzc2FnZTp0'@; put 'aGlzLmNiU3VjY2Vzc01zZyxldmVudDppfTt0P3RoaXMuY2JPblN1Y2Nlc3Mub2JzZXJ2ZWQmJnRoaXMubmdab25lLnJ1bigoKT0+e3RoaXMuY2JPblN1Y2Nlc3MuZW1pdChvKX0pOnRoaXMuY2JPbkVycm9yLm9ic2VydmVkJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLmNiT25FcnJvci5l'@; put 'bWl0KG8pfSksdGhpcy5jbGlwYm9hcmRTcnYucHVzaENvcHlSZXNwb25zZShvKX19cmV0dXJuIG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bikoemUoZ2EpLHplKG5vKSx6ZShOdCksemUod21uKSl9LG4uXHUwMjc1ZGlyPSRyKHt0eXBlOm4sc2VsZWN0b3JzOltbIiIs'@; put 'Im5neENsaXBib2FyZCIsIiJdXSxpbnB1dHM6e3RhcmdldEVsbTpbMCwibmd4Q2xpcGJvYXJkIiwidGFyZ2V0RWxtIl0sY29udGFpbmVyOiJjb250YWluZXIiLGNiQ29udGVudDoiY2JDb250ZW50IixjYlN1Y2Nlc3NNc2c6ImNiU3VjY2Vzc01zZyJ9LG91dHB1dHM6e2NiT25TdWNjZXNzOiJj'@; put 'Yk9uU3VjY2VzcyIsY2JPbkVycm9yOiJjYk9uRXJyb3IifSxzdGFuZGFsb25lOiExfSksbn0pKCksU21uPSgoKT0+e2NsYXNzIG57fXJldHVybiBuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG4pfSxuLlx1MDI3NW1vZD1HaSh7dHlwZTpufSksbi5cdTAyNzVpbmo9bWko'@; put 'e2ltcG9ydHM6W3FvXX0pLG59KSgpO3ZhciBFbW49aCgyNTAwMSk7bGV0IE1tbj0oKCk9Pnt2YXIgbjtjbGFzcyBle3RyYW5zZm9ybShyLC4uLmkpe2NvbnN0IG89cGFyc2VJbnQoaVswXSl8fDIsYT0ibnVtYmVyIiE9dHlwZW9mIHI/cGFyc2VJbnQocik6cjtyZXR1cm4oMCxFbW4uQykoYSxv'@; put 'KX1zdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVwaXBlPXVoKHtuYW1lOiJjb252ZXJ0U2l6ZSIsdHlwZTplLHB1cmU6ITAsc3RhbmRhbG9uZTohMX0pKX1yZXR1cm4gbigpLGV9KSgpO2NvbnN0IFRtbj1bImhv'@; put 'dEluc3RhbmNlIl0seG1uPVsiaW5mb0JhciJdLEFtbj1bInF1ZXJ5RmlsdGVyIl0sa21uPSgpPT5bIiIsIiAiXTtmdW5jdGlvbiBSbW4obixlKXsxJm4mJihKKDAsImRpdiIsOCksSXQoMSwiY2xyLXNwaW5uZXIiLDU0KSx0ZSgpKX1mdW5jdGlvbiBJbW4obixlKXsxJm4mJkl0KDAsImNsci1p'@; put 'Y29uIiw1Nyl9ZnVuY3Rpb24gRG1uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItaWNvbiIsNTkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtZZSh0KTtjb25zdCBpPVRlKDIpO3JldHVybiBpLmxpYnJhcmllc1NlYXJjaD0iIixYZShpLmxpYnJhcnlPbkZpbHRlcigpKX0pLHRl'@; put 'KCl9fWZ1bmN0aW9uIExtbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsOSkoMSwiZGl2Iiw1NSkoMiwiaW5wdXQiLDU2LDEpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKCk7cmV0dXJuIGZpKG8ubGlicmFyaWVz'@; put 'U2VhcmNoLGkpfHwoby5saWJyYXJpZXNTZWFyY2g9aSksWGUoaSl9KSx3dCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKCkubGlicmFyeU9uRmlsdGVyKCkpfSksdGUoKSx2dCg0LEltbiwxLDAsImNsci1pY29uIiw1NyksdnQoNSxEbW4sMSwwLCJjbHItaWNvbiIsNTgp'@; put 'LHRlKCkoKX1pZigyJm4pe2NvbnN0IHQ9b28oMykscj1UZSgpO2llKDIpLGRpKCJuZ01vZGVsIixyLmxpYnJhcmllc1NlYXJjaCksaWUoMiksX3QodC52YWx1ZS5sZW5ndGg8MT80Oi0xKSxpZSgpLF90KHQudmFsdWUubGVuZ3RoPjA/NTotMSl9fWZ1bmN0aW9uIE9tbihuLGUpezEmbiYmSXQo'@; put 'MCwiY2xyLWljb24iLDU3KX1mdW5jdGlvbiBObW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiw1OSksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpLFRlKCk7Y29uc3QgaT1vbygzKSxvPVRlKDIpLiRpbXBsaWNpdCxhPVRlKCk7cmV0dXJuIGkudmFsdWU9IiIs'@; put 'by5zZWFyY2hTdHJpbmc9IiIsWGUoYS50cmVlT25GaWx0ZXIobywidGFibGVzIikpfSksdGUoKX19ZnVuY3Rpb24gRm1uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJjbHItdHJlZS1ub2RlIiw5KSgxLCJkaXYiLDU1KSgyLCJpbnB1dCIsNjQsMiksaGkoIm5nTW9kZWxDaGFuZ2Ui'@; put 'LGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoMikuJGltcGxpY2l0O3JldHVybiBmaShvLnNlYXJjaFN0cmluZyxpKXx8KG8uc2VhcmNoU3RyaW5nPWkpLFhlKGkpfSksd3QoImtleXVwIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoMikuJGltcGxpY2l0O3JldHVybiBYZShUZSgp'@; put 'LnRyZWVPbkZpbHRlcihpLCJ0YWJsZXMiKSl9KSx0ZSgpLHZ0KDQsT21uLDEsMCwiY2xyLWljb24iLDU3KSx2dCg1LE5tbiwxLDAsImNsci1pY29uIiw1OCksdGUoKSgpfWlmKDImbil7Y29uc3QgdD1vbygzKSxyPVRlKDIpLiRpbXBsaWNpdDtpZSgyKSxydCgiaWQiLCJzZWFyY2hfIityLkxJ'@; put 'QlJBUllSRUYpLGRpKCJuZ01vZGVsIixyLnNlYXJjaFN0cmluZyksaWUoMiksX3QodC52YWx1ZS5sZW5ndGg8MT80Oi0xKSxpZSgpLF90KHQudmFsdWUubGVuZ3RoPjA/NTotMSl9fWZ1bmN0aW9uIFBtbihuLGUpezEmbiYmSXQoMCwiY2xyLWljb24iLDY5KX1mdW5jdGlvbiBIbW4obixlKXsx'@; put 'Jm4mJkl0KDAsImNsci1pY29uIiw3MCl9ZnVuY3Rpb24gVm1uKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDY4KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1UZSgpLm5nVmFyLG89VGUoKS4kaW1wbGljaXQsYT1UZSgyKS4kaW1wbGljaXQsbD1U'@; put 'ZSgpO3JldHVybiBYZShpPyIiOmwub25UYWJsZUNsaWNrKG8sYSkpfSksdnQoMSxQbW4sMSwwLCJjbHItaWNvbiIsNjkpKDIsSG1uLDEsMCwiY2xyLWljb24iLDcwKSxTZSgzKSx0ZSgpfWlmKDImbil7bGV0IHQ7Y29uc3Qgcj1UZSgpLm5nVmFyLGk9VGUoKS4kaW1wbGljaXQsbz1UZSgyKS4k'@; put 'aW1wbGljaXQsYT1UZSgpO3dyKCJkYy1sb2NrZWQtY29udHJvbCIscikoImFjdGl2ZSIsYS5saWJUYWJBY3RpdmUoby5MSUJSQVJZUkVGLGkpKSxpZSgpLF90KCEwPT09KHQ9aS5pbmNsdWRlcygiLUZDIikpPzE6ITE9PT10PzI6LTEpLGllKDIpLFNyKCIgIixpLnJlcGxhY2UoIi1GQyIsIiIp'@; put 'LCIgIil9fWZ1bmN0aW9uIEJtbihuLGUpezEmbiYmKEooMCwiY2xyLXRvb2x0aXAtY29udGVudCIsNjcpKDEsInNwYW4iKSxTZSgyLCIgVG8gdW5sb2NrIGFsbCB0YWJsZXMsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyAiKSx0ZSgpKCkpfWZ1bmN0aW9uIGptbihuLGUpezEm'@; put 'biYmWW4oMCxCbW4sMywwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw3MSl9ZnVuY3Rpb24gVW1uKG4sZSl7aWYoMSZuJiYoSigwLCJjbHItdG9vbHRpcCIpLHZ0KDEsVm1uLDQsNiwiYnV0dG9uIiw2NiksdnQoMixqbW4sMSwwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw2NyksdGUoKSksMiZuKXtj'@; put 'b25zdCB0PWUubmdWYXIscj1UZSgpLiRpbXBsaWNpdDtpZSgpLF90KHIubGVuZ3RoPjA/MTotMSksaWUoKSxfdCh0PzI6LTEpfX1mdW5jdGlvbiB6bW4obixlKXtpZigxJm4mJihKKDAsImNsci10cmVlLW5vZGUiKSxZbigxLFVtbiwzLDIsImNsci10b29sdGlwIiw2NSksdGUoKSksMiZuKXtj'@; put 'b25zdCB0PWUuJGluZGV4LHI9VGUoMyk7aWUoKSxydCgibmdWYXIiLHQrMT5yLmxpY2VuY2VTdGF0ZS52YWx1ZS50YWJsZXNfaW5fbGlicmFyeV9saW1pdCl9fWZ1bmN0aW9uIFdtbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiY2xyLXRyZWUtbm9kZSIsNjEpLHd0KCJjbGljayIs'@; put 'ZnVuY3Rpb24oaSl7WWUodCk7Y29uc3Qgbz1UZSgpLiRpbXBsaWNpdDtyZXR1cm4gWGUoVGUoKS50cmVlTm9kZUNsaWNrZWQoaSxvKSl9KSxoaSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGkpe1llKHQpO2NvbnN0IG89VGUoKS4kaW1wbGljaXQ7cmV0dXJuIGZpKG8uZXhwYW5kZWQs'@; put 'aSl8fChvLmV4cGFuZGVkPWkpLFhlKGkpfSksSigxLCJwIiw2Miksd3QoImNsaWNrIixmdW5jdGlvbigpe1llKHQpO2NvbnN0IGk9VGUoKS4kaW1wbGljaXQsbz1UZSgpO3JldHVybiBvLmxpYj1pLkxJQlJBUllSRUYsWGUoby5saWJyYXJ5T25DbGljayhpLkxJQlJBUllSRUYsaSkpfSksSXQo'@; put 'MiwiY2xyLWljb24iLDYzKSxTZSgzKSx0ZSgpLHZ0KDQsRm1uLDYsNCwiY2xyLXRyZWUtbm9kZSIsOSksX28oNSx6bW4sMiwxLCJjbHItdHJlZS1ub2RlIixudWxsLENvKSx0ZSgpfWlmKDImbil7Y29uc3QgdD1UZSgpLiRpbXBsaWNpdDt3cigiY2xyLWV4cGFuZGVkIix0LmV4cGFuZGVkKSxk'@; put 'aSgiY2xyRXhwYW5kZWQiLHQuZXhwYW5kZWQpLHJ0KCJjbHJMb2FkaW5nIix0LmxvYWRpbmdUYWJsZXMmJiF0LnRhYmxlcyksaWUoMyksU3IoIiAiLHQuTElCUkFSWU5BTUUsIiAiKSxpZSgpLF90KHQudGFibGVzPzQ6LTEpLGllKCkseW8odC50YWJsZXMpfX1mdW5jdGlvbiBZbW4obixlKXtp'@; put 'ZigxJm4mJnZ0KDAsV21uLDcsNiwiY2xyLXRyZWUtbm9kZSIsNjApLDImbil7Y29uc3QgdD1lLiRpbXBsaWNpdDtfdCghdC5oaWRkZW4mJnQuaW5Gb3JlZ3JvdW5kPzA6LTEpfX1mdW5jdGlvbiBabW4obixlKXsxJm4mJihKKDAsImRpdiIsMTApKDEsInNwYW4iLDcyKSxTZSgyLCIgTG9hZGlu'@; put 'Zy4uLiAiKSx0ZSgpKCkpfWZ1bmN0aW9uIEdtbihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwxMikoMSwiZGl2Iiw3MykoMiwiZGl2Iiw3NCkoMywiZGl2Iiw3NSkoNCwiYnV0dG9uIiw3NiksSXQoNSwiY2xyLWljb24iLDc3KSx0ZSgpLEooNiwiaDMiLDQ3KSxTZSg3LCJF'@; put 'cnJvciIpLHRlKCkoKSxKKDgsImRpdiIsMTYpKDksInAiKSxTZSgxMCwiWW91IGNhbm5vdCBzdWJtaXQgZW1wdHkgY2xhdXNlcyIpLHRlKCkoKSxKKDExLCJkaXYiLDI3KSgxMiwiYnV0dG9uIiw3OCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSgpLm51bGxWYXJp'@; put 'YWJsZXM9ITEpfSksU2UoMTMsIiBPayAiKSx0ZSgpKCkoKSgpKCl9fWZ1bmN0aW9uICRtbihuLGUpezEmbiYmSXQoMCwiZGl2IiwxMyl9ZnVuY3Rpb24gcW1uKG4sZSl7MSZuJiZJdCgwLCJhcHAtcXVlcnkiLG51bGwsMyl9ZnVuY3Rpb24gS21uKG4sZSl7MSZuJiYoSigwLCJkaXYiLDUwKSgx'@; put 'LCJzcGFuIiw3OSksU2UoMiwiIExvYWRpbmcuLi4gIiksdGUoKSxKKDMsImRpdiIsODApKDQsInAiLDgxKSxTZSg1LCJMb2FkaW5nIFRhYmxlIFZpZXdlciIpLHRlKCkoKSgpKX1mdW5jdGlvbiBYbW4obixlKXtpZigxJm4pe2NvbnN0IHQ9d24oKTtKKDAsImNsci1pY29uIiwxMDQpLHd0KCJj'@; put 'bGljayIsZnVuY3Rpb24oKXtZZSh0KSxUZSgpO2NvbnN0IGk9b28oNSk7cmV0dXJuIFhlKFRlKDIpLnNlYXJjaFRhYmxlKGkpKX0pLHRlKCl9fWZ1bmN0aW9uIFFtbihuLGUpezEmbiYmKEooMCwic3BhbiIsOTIpLFNlKDEsIiBMb2FkaW5nLi4uICIpLHRlKCkpfWZ1bmN0aW9uIEptbihuLGUp'@; put 'ezEmbiYmSXQoMCwiY2xyLWljb24iLDk4KX1mdW5jdGlvbiBlNG4obixlKXtpZigxJm4mJihKKDAsInNwYW4iLDk5KSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7aWUoKSxTcigiICIsbnVsbD09dC50YWJsZVRpdGxlP251bGw6dC50YWJsZVRpdGxlLnJlcGxhY2UoIi1GQyIsIiIp'@; put 'LCIgIil9fWZ1bmN0aW9uIHQ0bihuLGUpe2lmKDEmbiYmKEooMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMTAwKSxTZSgxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoKSxTcigiICIsdC5kc05vdGUsIiAiKX19ZnVuY3Rpb24gbjRuKG4sZSl7MSZuJiZZbigwLHQ0biwyLDEsImNsci10'@; put 'b29sdGlwLWNvbnRlbnQiLDEwNSl9ZnVuY3Rpb24gcjRuKG4sZSl7aWYoMSZuJiYoSigwLCJzcGFuIiksU2UoMSksQWMoMiwidGhvdXNhbmRTZXBhcmF0b3IiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoKSxVaigiICgiLHNiKDIsNCx0Lm51bWJlck9mUm93cywiLCIpLCIgIiwxPT09'@; put 'dC5udW1iZXJPZlJvd3M/InJvdyI6InJvd3MiLCIsICIsdC5maWx0ZXJDb2xzLmxlbmd0aCwiIiwxPT09dC5maWx0ZXJDb2xzLmxlbmd0aD8iIGNvbCI6IiBjb2xzIiwiKSAiKX19ZnVuY3Rpb24gaTRuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7dnQoMCxyNG4sMyw3LCJzcGFuIiksSigx'@; put 'LCJjbHItaWNvbiIsMTA2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDMpLnJlbG9hZFRhYmxlRGF0YSgpKX0pLHRlKCl9MiZuJiZfdChudWxsIT09VGUoMykubnVtYmVyT2ZSb3dzPzA6LTEpfWZ1bmN0aW9uIG80bihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigp'@; put 'O0ooMCwiZGl2IiwxMTEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoNSkuZWRpdFRhYmxlKCkpfSksSXQoMSwiY2xyLWljb24iLDExNyksSigyLCJzcGFuIiksU2UoMywiRWRpdCIpLHRlKCkoKX19ZnVuY3Rpb24gYTRuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXdu'@; put 'KCk7SigwLCJkaXYiLDExMSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZSh0KSxYZShUZSg1KS5nb1RvTGluZWFnZSgpKX0pLEl0KDEsImNsci1pY29uIiwxMTgpLEooMiwic3BhbiIpLFNlKDMsIkxpbmVhZ2UiKSx0ZSgpKCl9fWZ1bmN0aW9uIHM0bihuLGUpe2lmKDEmbil7Y29u'@; put 'c3QgdD13bigpO0ooMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDExMCkoMSwiZGl2IiwxMTEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoNCkubmV3Vmlld2JveCgpKX0pLEl0KDIsImNsci1pY29uIiwxMTIpLEooMywic3BhbiIpLFNlKDQsIlZpZXdib3hlcyIpLHRl'@; put 'KCkoKSx2dCg1LG80biw0LDAsImRpdiIsMTEzKSx2dCg2LGE0biw0LDAsImRpdiIsMTEzKSxKKDcsImRpdiIsMTExKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDQpLm9wZW5RYigpKX0pLEl0KDgsImNsci1pY29uIiwxMTQpLEooOSwic3BhbiIpLFNlKDEwLCJG'@; put 'aWx0ZXIiKSx0ZSgpKCksSigxMSwiZGl2IiwxMTEpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoNCkub3BlbkRvd25sb2FkPSEwKX0pLEl0KDEyLCJjbHItaWNvbiIsMTE1KSxKKDEzLCJzcGFuIiksU2UoMTQsIkRvd25sb2FkIiksdGUoKSgpLEooMTUsImRpdiIs'@; put 'MTExKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDQpLnNob3dXZWJRdWVyeSgpKX0pLEl0KDE2LCJjbHItaWNvbiIsMTE2KSxKKDE3LCJzcGFuIiksU2UoMTgsIldlYiBRdWVyeSBVUkwiKSx0ZSgpKCkoKX1pZigyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoNSksX3Qo'@; put 'dC50YWJsZUVkaXRFeGlzdHMoKT81Oi0xKSxpZSgpLF90KHQudGFibGV1cmk/NjotMSl9fWZ1bmN0aW9uIGw0bihuLGUpezEmbiYmKEooMCwiY2xyLWRyb3Bkb3duIiwxMDIpKDEsImJ1dHRvbiIsMTA3KSxJdCgyLCJjbHItaWNvbiIsMTA4KSxTZSgzLCIgb3B0aW9ucyAiKSx0ZSgpLFluKDQs'@; put 'czRuLDE5LDIsImNsci1kcm9wZG93bi1tZW51IiwxMDkpLHRlKCkpLDImbiYmcnQoImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIiwhMCl9ZnVuY3Rpb24gYzRuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJidXR0b24iLDEyMiksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZ'@; put 'ZSh0KSxYZShUZSg0KS50b2dnbGVGaWx0ZXJQYW5lbCgpKX0pLEl0KDEsImNsci1pY29uIiwxMjMpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDQpO1JyKCJhcmlhLWV4cGFuZGVkIix0LmZpbHRlckV4cGFuZGVkKSgiYXJpYS1sYWJlbCIsdC5maWx0ZXJFeHBhbmRlZD8iQ29sbGFwc2UgdGhl'@; put 'IGZpbHRlciBjbGF1c2UiOiJFeHBhbmQgdGhlIGZpbHRlciBjbGF1c2UiKX19ZnVuY3Rpb24gdTRuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDExOSw1KSgyLCJzcGFuIiwxMjApLFNlKDMsIkZJTFRFUiA6ICIpLEooNCwiYiIpLFNlKDUpLHRlKCkoKSx2dCg2LGM0biwyLDIsImJ1dHRvbiIs'@; put 'MTIxKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoMyk7d3IoImV4cGFuZGVkIix0LmZpbHRlckV4cGFuZGVkKSxpZSg1KSxwcih0LnF1ZXJ5VGV4dCksaWUoKSxfdCh0LmZpbHRlck92ZXJmbG93cz82Oi0xKX19ZnVuY3Rpb24gZDRuKG4sZSl7aWYoMSZuKXtjb25zdCB0PXduKCk7SigwLCJkaXYi'@; put 'LDgyKSgxLCJzZWN0aW9uIiw4NykoMiwiZm9ybSIsODgpKDMsImRpdiIsODkpKDQsImlucHV0Iiw5MCw0KSx3dCgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKCl7WWUodCk7Y29uc3QgaT1vbyg1KTtyZXR1cm4gWGUoVGUoMikuc2VhcmNoVGFibGUoaSkpfSksdGUoKSx2dCg2LFhtbiwxLDAsImNs'@; put 'ci1pY29uIiw5MSksdnQoNyxRbW4sMiwwLCJzcGFuIiw5MiksdGUoKSxKKDgsImNsci1jaGVja2JveC1jb250YWluZXIiKSg5LCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDEwLCJpbnB1dCIsOTMpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihpKXtZZSh0KTtjb25zdCBvPVRlKDIpO3Jl'@; put 'dHVybiBmaShvLnNlYXJjaE51bWVyaWMsaSl8fChvLnNlYXJjaE51bWVyaWM9aSksWGUoaSl9KSx0ZSgpLEooMTEsImxhYmVsIiksU2UoMTIsIk51bWVyaWMiKSx0ZSgpKCkoKSgpKCksSigxMywiZGl2Iiw5NCkoMTQsInAiLDk1KSgxNSwiY2xyLXRvb2x0aXAiLDk2KSgxNiwiY2xyLWljb24i'@; put 'LDk3KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKHQpLFhlKFRlKDIpLmRhdGFzZXRJbmZvPSEwKX0pLHRlKCksdnQoMTcsSm1uLDEsMCwiY2xyLWljb24iLDk4KSx2dCgxOCxlNG4sMiwxLCJzcGFuIiw5OSksdnQoMTksbjRuLDEsMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMTAw'@; put 'KSx0ZSgpLHZ0KDIwLGk0biwyLDEpLHRlKCkoKSxKKDIxLCJkaXYiLDEwMSksdnQoMjIsbDRuLDUsMSwiY2xyLWRyb3Bkb3duIiwxMDIpLHRlKCksdnQoMjMsdTRuLDcsNCwiZGl2IiwxMDMpLHRlKCl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKDQpLHJ0KCJ0eXBlIix0LnNlYXJjaE51bWVy'@; put 'aWM/Im51bWJlciI6InRleHQiKSxpZSgyKSxfdCh0LnNlYXJjaExvYWRpbmc/LTE6NiksaWUoKSxfdCh0LnNlYXJjaExvYWRpbmc/NzotMSksaWUoMyksZGkoIm5nTW9kZWwiLHQuc2VhcmNoTnVtZXJpYyksaWUoNyksX3QobnVsbCE9dC50YWJsZVRpdGxlJiZ0LnRhYmxlVGl0bGUuaW5jbHVk'@; put 'ZXMoIi1GQyIpPzE3Oi0xKSxpZSgpLF90KHQudGFibGVUaXRsZSYmdC50YWJsZVRpdGxlLmxlbmd0aD4wPzE4Oi0xKSxpZSgpLF90KHQuZHNOb3RlJiZ0LmRzTm90ZS5sZW5ndGg+MD8xOTotMSksaWUoKSxfdCh0LnRhYmxlVGl0bGUmJnQudGFibGVUaXRsZS5sZW5ndGg+MD8yMDotMSksaWUo'@; put 'MiksX3QodC50YWJsZVRpdGxlJiYhdC5hYm9ydEFjdGl2ZT8yMjotMSksaWUoKSxfdCgiMT0xIj09PXQucXVlcnlUZXh0fHxtYygxMCxrbW4pLmluY2x1ZGVzKHQucXVlcnlUZXh0KXx8dC5hYm9ydEFjdGl2ZT8tMToyMyl9fWZ1bmN0aW9uIGg0bihuLGUpezEmbiYmKEooMCwiZGl2Iiw4Myks'@; put 'SXQoMSwiaW1nIiwxMjQpLEooMiwiaDMiLDEyNSksU2UoMywiIFBsZWFzZSBzZWxlY3QgYSBsaWJyYXJ5ICIpLHRlKCkoKSl9ZnVuY3Rpb24gZjRuKG4sZSl7MSZuJiZJdCgwLCJjbHItc3Bpbm5lciIsNTQpfWZ1bmN0aW9uIHA0bihuLGUpezEmbiYmKEooMCwiZGl2IiwxMzApLEl0KDEsImlt'@; put 'ZyIsMTMyKSxKKDIsInAiLDEyNSksU2UoMywiIFBsZWFzZSBzZWxlY3QgYSB0YWJsZSAiKSx0ZSgpKCkpfWZ1bmN0aW9uIGc0bihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwicCIsMTMzKSxTZSgxLCIgTm8gbGlicmFyeSBpbmZvIGZvdW5kLiBDbGljayAiKSxKKDIsImNsci1pY29u'@; put 'IiwxMzQpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoNCkucmVsb2FkTGliSW5mbygpKX0pLHRlKCksU2UoMywiIGJ1dHRvbiB0byByZWZyZXNoLiAiKSx0ZSgpfX1mdW5jdGlvbiBtNG4obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQiLDEzNSksU2UoMiwi'@; put 'RU5HSU5FOiIpLHRlKCksSigzLCJ0ZCIsMTM2KSxTZSg0KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtpZSg0KSxTcigiICIsdC5saWJpbmZvWzBdP3QubGliaW5mb1swXS5FTkdJTkU6IiIsIiAiKX19ZnVuY3Rpb24gdjRuKG4sZSl7aWYoMSZuJiYoSigwLCJ0ciIpKDEsInRkIiwxMzUp'@; put 'LFNlKDIsIkxJQklEOiIpLHRlKCksSigzLCJ0ZCIsMTM2KSxTZSg0KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtpZSg0KSxTcigiICIsdC5saWJpbmZvWzBdP3QubGliaW5mb1swXS5MSUJJRDoiIiwiICIpfX1mdW5jdGlvbiBfNG4obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQi'@; put 'LDEzNSksU2UoMiwiTElCTkFNRToiKSx0ZSgpLEooMywidGQiLDEzNiksU2UoNCksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoNSk7aWUoNCksU3IoIiAiLHQubGliaW5mb1swXT90LmxpYmluZm9bMF0uTElCTkFNRToiIiwiICIpfX1mdW5jdGlvbiB5NG4obixlKXtpZigxJm4mJihKKDAsInRy'@; put 'IikoMSwidGQiLDEzNSksU2UoMiwiTElCU0laRToiKSx0ZSgpLEooMywidGQiLDEzNiksU2UoNCksQWMoNSwiY29udmVydFNpemUiKSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtpZSg0KSxTcigiICIsdC5saWJpbmZvWzBdP1RkKDUsMSx0LmxpYmluZm9bMF0uTElCU0laRSk6IiIsIiAi'@; put 'KX19ZnVuY3Rpb24gYjRuKG4sZSl7aWYoMSZuJiYoSigwLCJ0ciIpKDEsInRkIiwxMzUpLFNlKDIsIk9XTkVSUzoiKSx0ZSgpLEooMywidGQiLDEzNiksU2UoNCksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoNSk7aWUoNCksU3IoIiAiLHQubGliaW5mb1swXT90LmxpYmluZm9bMF0uT1dORVJT'@; put 'OiIiLCIgIil9fWZ1bmN0aW9uIHc0bihuLGUpe2lmKDEmbiYmKEooMCwidHIiKSgxLCJ0ZCIsMTM1KSxTZSgyLCJQQVRIUzoiKSx0ZSgpLEooMywidGQiLDEzNiksU2UoNCksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoNSk7aWUoNCksU3IoIiAiLHQubGliaW5mb1swXT90LmxpYmluZm9bMF0u'@; put 'UEFUSFM6IiIsIiAiKX19ZnVuY3Rpb24gQzRuKG4sZSl7aWYoMSZuJiYoSigwLCJ0ciIpKDEsInRkIiwxMzUpLFNlKDIsIlBFUk1TOiIpLHRlKCksSigzLCJ0ZCIsMTM2KSxTZSg0KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtpZSg0KSxTcigiICIsdC5saWJpbmZvWzBdP3QubGliaW5m'@; put 'b1swXS5QRVJNUzoiIiwiICIpfX1mdW5jdGlvbiBTNG4obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQiLDEzNSksU2UoMiwiU0NIRU1BUzoiKSx0ZSgpLEooMywidGQiLDEzNiksU2UoNCksdGUoKSgpKSwyJm4pe2NvbnN0IHQ9VGUoNSk7aWUoNCksU3IoIiAiLHQubGliaW5mb1swXT90'@; put 'LmxpYmluZm9bMF0uU0NIRU1BUzoiIiwiICIpfX1mdW5jdGlvbiBFNG4obixlKXtpZigxJm4mJihKKDAsInRyIikoMSwidGQiLDEzNSksU2UoMiwiVEFCTEVfQ05UOiIpLHRlKCksSigzLCJ0ZCIsMTM2KSxTZSg0KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtpZSg0KSxTcigiICIsdC5s'@; put 'aWJpbmZvWzBdP3QubGliaW5mb1swXS5UQUJMRV9DTlQ6IiIsIiAiKX19ZnVuY3Rpb24gTTRuKG4sZSl7aWYoMSZuJiYoSigwLCJ0ciIpKDEsInRkIiwxMzUpLFNlKDIsIkNBVEFMT0dfQ05UOiIpLHRlKCksSigzLCJ0ZCIsMTM2KSxTZSg0KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSg1KTtp'@; put 'ZSg0KSxTcigiICIsdC5saWJpbmZvWzBdP3QubGliaW5mb1swXS5DQVRBTE9HX0NOVDoiIiwiICIpfX1mdW5jdGlvbiBUNG4obixlKXtpZigxJm4mJihKKDAsInRhYmxlIiksdnQoMSxtNG4sNSwxLCJ0ciIpLHZ0KDIsdjRuLDUsMSwidHIiKSx2dCgzLF80biw1LDEsInRyIiksdnQoNCx5NG4s'@; put 'NiwzLCJ0ciIpLHZ0KDUsYjRuLDUsMSwidHIiKSx2dCg2LHc0biw1LDEsInRyIiksdnQoNyxDNG4sNSwxLCJ0ciIpLHZ0KDgsUzRuLDUsMSwidHIiKSx2dCg5LEU0biw1LDEsInRyIiksdnQoMTAsTTRuLDUsMSwidHIiKSx0ZSgpKSwyJm4pe2NvbnN0IHQ9VGUoNCk7aWUoKSxfdCgiIiE9PXQu'@; put 'bGliaW5mb1swXS5FTkdJTkU/MTotMSksaWUoKSxfdCgiIiE9PXQubGliaW5mb1swXS5MSUJJRD8yOi0xKSxpZSgpLF90KCIiIT09dC5saWJpbmZvWzBdLkxJQk5BTUU/MzotMSksaWUoKSxfdChudWxsIT09dC5saWJpbmZvWzBdLkxJQlNJWkU/NDotMSksaWUoKSxfdCgiIiE9PXQubGliaW5m'@; put 'b1swXS5PV05FUlM/NTotMSksaWUoKSxfdCgiIiE9PXQubGliaW5mb1swXS5QQVRIUz82Oi0xKSxpZSgpLF90KCIiIT09dC5saWJpbmZvWzBdLlBFUk1TPzc6LTEpLGllKCksX3QoIiIhPT10LmxpYmluZm9bMF0uU0NIRU1BUz84Oi0xKSxpZSgpLF90KG51bGwhPT10LmxpYmluZm9bMF0uVEFC'@; put 'TEVfQ05UPzk6LTEpLGllKCksX3QobnVsbCE9PXQubGliaW5mb1swXS5DQVRBTE9HX0NOVD8xMDotMSl9fWZ1bmN0aW9uIHg0bihuLGUpe2lmKDEmbiYmKEooMCwiZGl2IiwxMzEpLHZ0KDEsZzRuLDQsMCwicCIsMTMzKSx2dCgyLFQ0biwxMSwxMCwidGFibGUiKSx0ZSgpKSwyJm4pe2NvbnN0'@; put 'IHQ9VGUoMyk7aWUoKSxfdCh0LmxpYmluZm8ubGVuZ3RoPDE/MTotMSksaWUoKSxfdCh0LmxpYmluZm8ubGVuZ3RoPjA/MjotMSl9fWZ1bmN0aW9uIEE0bihuLGUpe2lmKDEmbil7Y29uc3QgdD13bigpO0ooMCwiZGl2IiwxMjYpLEl0KDEsInNlY3Rpb24iLDg3KSxKKDIsImRpdiIsMTI3KSgz'@; put 'LCJwIiw4MSksU2UoNCksdGUoKSxKKDUsImNsci1pY29uIiwxMjgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUodCksWGUoVGUoMikucmVsb2FkTGliSW5mbygpKX0pLHRlKCkoKSxJdCg2LCJkaXYiLDEwMSksdGUoKSxKKDcsImRpdiIsMTI5KSx2dCg4LGY0biwxLDAsImNsci1z'@; put 'cGlubmVyIiw1NCksdGUoKSx2dCg5LHA0biw0LDAsImRpdiIsMTMwKSx2dCgxMCx4NG4sMywyLCJkaXYiLDEzMSl9aWYoMiZuKXtjb25zdCB0PVRlKDIpO2llKDQpLFNyKCIgIix0LmxpYiwiICIpLGllKDQpLF90KG51bGw9PT10LmxpYmluZm8/ODotMSksaWUoKSxfdChudWxsIT09dC5saWJp'@; put 'bmZvPzk6LTEpLGllKCksX3QobnVsbCE9PXQubGliaW5mbz8xMDotMSl9fWZ1bmN0aW9uIGs0bihuLGUpezEmbiYmKEooMCwiaDMiLDEzOCksU2UoMSwiIE5vIGRhdGEgZm91bmQgd2l0aCBnaXZlbiBjb25kaXRpb25zICIpLHRlKCkpfWZ1bmN0aW9uIFI0bihuLGUpezEmbiYmKEooMCwiaDMi'@; put 'LDEzOCksU2UoMSwiIE5vIGRhdGEgZm91bmQgZHVlIHRvIHNhcyByZXF1ZXN0IGVycm9yICIpLHRlKCkpfWZ1bmN0aW9uIEk0bihuLGUpe2lmKDEmbiYmKEooMCwiZGl2Iiw4NCksSXQoMSwiY2xyLWljb24iLDEzNyksdnQoMixrNG4sMiwwLCJoMyIsMTM4KSx2dCgzLFI0biwyLDAsImgzIiwx'@; put 'MzgpLHRlKCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgyKSxfdCh0Lm5vRGF0YT8yOi0xKSxpZSgpLF90KHQubm9EYXRhUmVxRXJyPzM6LTEpfX1mdW5jdGlvbiBENG4obixlKXtpZigxJm4mJihKKDAsImRpdiIsODUpKDEsImRpdiIsMTM5KSxJdCgyLCJob3QtdGFibGUiLDE0MCw2KSx0ZSgp'@; put 'KCkpLDImbil7Y29uc3QgdD1UZSgyKTtpZSgyKSxydCgiZGF0YSIsdC5ob3RUYWJsZS5kYXRhKSgic2V0dGluZ3MiLHQuaG90VGFibGVTZXR0aW5ncyl9fWZ1bmN0aW9uIEw0bihuLGUpe2lmKDEmbiYmKEooMCwicCIsODYpLFNlKDEpLEl0KDIsImNvbnRhY3QtbGluayIpLHRlKCkpLDImbil7'@; put 'Y29uc3QgdD1UZSgyKTtpZSgpLFNyKCIgVG8gZGlzcGxheSBtb3JlIHRoYW4gIix0LmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3ZXJfcm93c19hbGxvd2VkLCIgcm93cywgY29udGFjdCAiKX19ZnVuY3Rpb24gTzRuKG4sZSl7aWYoMSZuJiYoSigwLCJkaXYiLDUxKSx2dCgxLGQ0biwyNCwxMSwi'@; put 'ZGl2Iiw4MiksdnQoMixoNG4sNCwwLCJkaXYiLDgzKSx2dCgzLEE0biwxMSw0KSx2dCg0LEk0biw0LDIsImRpdiIsODQpLHZ0KDUsRDRuLDQsMiwiZGl2Iiw4NSksSig2LCJkaXYiKSx2dCg3LEw0biwzLDEsInAiLDg2KSx0ZSgpKCkpLDImbil7Y29uc3QgdD1UZSgpO2llKCksX3QodC50YWJs'@; put 'ZT8xOi0xKSxpZSgpLF90KHQubGlifHx0LnRhYmxlfHx0Lm5vRGF0YVJlcUVycnx8dC5ub0RhdGE/LTE6MiksaWUoKSxfdCh0Lm5vRGF0YXx8dC5ub0RhdGFSZXFFcnJ8fHQudGFibGV8fCF0LmxpYj8tMTozKSxpZSgpLF90KHQubm9EYXRhfHx0Lm5vRGF0YVJlcUVycj80Oi0xKSxpZSgpLF90'@; put 'KHQubm9EYXRhfHx0Lm5vRGF0YVJlcUVycnx8IXQudGFibGU/LTE6NSksaWUoMiksX3QodC5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jvd3NfYWxsb3dlZCE9PXQuSW5maW5pdHkmJnQuaG90VGFibGUuZGF0YSYmdC5ob3RUYWJsZS5kYXRhLmxlbmd0aD50LmxpY2VuY2VTdGF0ZS52YWx1'@; put 'ZS52aWV3ZXJfcm93c19hbGxvd2VkPzc6LTEpfX1sZXQgZVg9KCgpPT57dmFyIG47Y2xhc3MgZXt1cGRhdGVIb3RUYWJsZVNldHRpbmdzKCl7dGhpcy5ob3RUYWJsZVNldHRpbmdzPXttdWx0aUNvbHVtblNvcnRpbmc6ITAsdmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQ6MzAsY29sSGVhZGVy'@; put 'czp0aGlzLmhvdFRhYmxlLmNvbEhlYWRlcnMsY29sdW1uczp0aGlzLmhvdFRhYmxlLmNvbHVtbnMsY29weVBhc3RlOnRoaXMuaG90VGFibGUuY29weVBhc3RlLGNvbnRleHRNZW51OnRoaXMuaG90VGFibGUuY29udGV4dE1lbnUsZmlsdGVyczohMCxkcm9wZG93bk1lbnU6dGhpcy5ob3RUYWJs'@; put 'ZS5kcm9wZG93bk1lbnUsaGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LHN0cmV0Y2hIOiJhbGwiLG1vZGlmeUNvbFdpZHRoOnRoaXMubWF4V2lkdGhDaGVrZXIsY2VsbHM6dGhpcy5ob3RUYWJsZS5jZWxscyxoaWRkZW5Db2x1bW5zOntjb2x1bW5zOnRoaXMuaGlkZGVuVmlld0NvbHVtbnMs'@; put 'aW5kaWNhdG9yczohMX0sbWF4Um93czp0aGlzLmhvdFRhYmxlLm1heFJvd3MsbWFudWFsQ29sdW1uUmVzaXplOiEwLGFmdGVyR2V0Q29sSGVhZGVyOnRoaXMuaG90VGFibGUuYWZ0ZXJHZXRDb2xIZWFkZXIscm93SGVhZGVyczp0aGlzLmhvdFRhYmxlLnJvd0hlYWRlcnMscm93SGVhZGVyV2lk'@; put 'dGg6dGhpcy5ob3RUYWJsZS5yb3dIZWFkZXJXaWR0aCxyb3dIZWlnaHRzOnRoaXMuaG90VGFibGUucm93SGVpZ2h0cyxsaWNlbnNlS2V5OnRoaXMuaG90VGFibGUubGljZW5zZUtleSxjbGFzc05hbWU6Imh0RGFyayIsdGhlbWU6Imh0LXRoZW1lLWNsYXNzaWMifX1jb25zdHJ1Y3RvcihyLGks'@; put 'byxhLGwsdSxnLEUsTyxaKXt0aGlzLmxpY2VuY2VTZXJ2aWNlPXIsdGhpcy5zYXNTdG9yZVNlcnZpY2U9aSx0aGlzLnNhc1NlcnZpY2U9byx0aGlzLnJvdXRlcj1hLHRoaXMucm91dGU9bCx0aGlzLmV2ZW50U2VydmljZT11LHRoaXMubG9nZ2VyU2VydmljZT1nLHRoaXMuaGVscGVyU2Vydmlj'@; put 'ZT1FLHRoaXMubG9jYXRpb249Tyx0aGlzLmNkZj1aLHRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdD1uZXcgazgsdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEsdGhpcy5saWJyYXJpZXNTZWFyY2g9IiIsdGhpcy5saWJyYXJ5VGFibGVzUmVmPSIiLHRoaXMubGlicmFyaWVzVHJlZUV4cGFuZGVkPSEx'@; put 'LHRoaXMubGliaW5mbz1udWxsLHRoaXMudGFibGV1cmk9bnVsbCx0aGlzLmZpbHRlcj0hMSx0aGlzLmZpbHRlckNvbHM9W10sdGhpcy5jb2xOYW1lcz1bXSx0aGlzLnVzZUxhYmVscz0hMSx0aGlzLm51bGxWYXJpYWJsZXM9ITEsdGhpcy5hYm9ydEFjdGl2ZT0hMSx0aGlzLnVybEZpbHRlclBr'@; put 'PW51bGwsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy53ZWJRdWVyeVRleHQ9IiIsdGhpcy5maWx0ZXJFeHBhbmRlZD0hMSx0aGlzLmZpbHRlck92ZXJmbG93cz0hMSx0aGlzLmZpbHRlck1lYXN1cmVkS2V5PSIiLHRoaXMucXVlcnlFcnI9ITEsdGhpcy50YWJsZUZsYWc9ITAsdGhpcy5saWJyYXJp'@; put 'ZXNMb2FkaW5nPSExLHRoaXMubG9hZGluZ1RhYmxlVmlldz0hMSx0aGlzLnN3aXRjaEZsYWc9ITEsdGhpcy5ub0RhdGE9ITEsdGhpcy5ub0RhdGFSZXFFcnI9ITEsdGhpcy50YWJsZURpc2FibGU9ITEsdGhpcy5hY3Rpb25EaXNhYmxlPSExLHRoaXMub3BlbkRvd25sb2FkPSExLHRoaXMud2Vi'@; put 'UXVlcnk9ITEsdGhpcy53ZWJRdWVyeVRhYj0hMSx0aGlzLmRvd25sb2FkRm9ybWF0PSJDU1YiLHRoaXMuc2FzanNDb25maWc9bmV3IHhwLlNBU2pzQ29uZmlnLHRoaXMuc2VhcmNoTG9hZGluZz0hMSx0aGlzLnNlYXJjaE51bWVyaWM9ITEsdGhpcy5ob3RUYWJsZVNldHRpbmdzPXt9LHRoaXMu'@; put 'bnVtYmVyT2ZSb3dzPW51bGwsdGhpcy5oZWFkZXJQa3M9W10sdGhpcy4kZGF0YUZvcm1hdHM9bnVsbCx0aGlzLmhpZGRlblZpZXdDb2x1bW5zPVtdLHRoaXMuZGF0YXNldEluZm89ITEsdGhpcy5kc21ldGE9W10sdGhpcy52ZXJzaW9ucz1bXSx0aGlzLmRzTm90ZT0iIix0aGlzLmxpY2VuY2VT'@; put 'dGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLkluZmluaXR5PTEvMCx0aGlzLmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10sY29sdW1uczpbXSxoZWlnaHQ6ImNhbGMoMTAwdmggLSAxODJweCkiLG1heFJvd3M6dGhpcy5saWNlbmNlU3RhdGUudmFsdWUu'@; put 'dmlld2VyX3Jvd3NfYWxsb3dlZHx8MS8wLHNldHRpbmdzOnt9LGxpY2Vuc2VLZXk6dm9pZCAwLHJvd0hlYWRlcnM6ZWU9PiIgIixhZnRlckdldENvbEhlYWRlcjooZWUsdmUsTWUpPT57aWYodGhpcy5ob3RJbnN0YW5jZSYmIXRoaXMuaG90SW5zdGFuY2UuaXNEZXN0cm95ZWQpdHJ5e2NvbnN0'@; put 'IEhlPXRoaXMuaG90SW5zdGFuY2UuY29sVG9Qcm9wKGVlKTtIZSYmdGhpcy5oZWFkZXJQa3MuaW5kZXhPZihIZSk+LTEmJnZlLmNsYXNzTGlzdC5hZGQoInByaW1hcnlLZXlIZWFkZXJTdHlsZSIpLHZlLmNsYXNzTGlzdC5hZGQoVW4uaGFuZHNvbnRhYmxlLmRhcmtUYWJsZUhlYWRlckNsYXNz'@; put 'KX1jYXRjaHt2ZS5jbGFzc0xpc3QuYWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9ZWxzZSB2ZS5jbGFzc0xpc3QuYWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9LHJvd0hlYWRlcldpZHRoOjE1LHJvd0hlaWdodHM6MjAsY29udGV4dE1l'@; put 'bnU6e2l0ZW1zOntjb3B5X3dpdGhfY29sdW1uX2hlYWRlcnM6e30sY29weV9jb2x1bW5faGVhZGVyc19vbmx5Ont9LGV4cG9ydF9maWxlOnZnZSgoKT0+dGhpcy50YWJsZVRpdGxlfHwiZXhwb3J0IiksdG9nZ2xlX2xhYmVsczp7bmFtZTooKT0+dGhpcy51c2VMYWJlbHM/IlNob3cgbmFtZXMi'@; put 'OiJTaG93IGxhYmVscyIsY2FsbGJhY2s6KCk9Pnt0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSx7cmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5UGFyYW1zOntsYWJlbHM6IXRoaXMudXNlTGFiZWxzfHxudWxsfSxxdWVyeVBhcmFtc0hhbmRsaW5nOiJtZXJnZSJ9KX19fX0sY29weVBhc3RlOntj'@; put 'b3B5Q29sdW1uSGVhZGVyczohMCxjb3B5Q29sdW1uSGVhZGVyc09ubHk6ITB9LGRyb3Bkb3duTWVudTp7aXRlbXM6e21ha2VfcmVhZF9vbmx5OntuYW1lOiJtYWtlX3JlYWRfb25seSJ9LGFsaWdubWVudDp7bmFtZToiYWxpZ25tZW50In0sc3AxOntuYW1lOiItLS0tLS0tLS0ifSxpbmZvOntu'@; put 'YW1lOiJ0ZXN0IGluZm8iLHJlbmRlcmVyOihlZSx2ZSxNZSxIZSxXZSxhdCk9Pntjb25zdCBDdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bGV0IEt0LEF0PSIiLHF0PSJObyBpbmZvIGZvdW5kIjtpZih0aGlzLmhvdEluc3RhbmNlJiYhdGhpcy5ob3RJbnN0YW5jZS5pc0Rlc3Ry'@; put 'b3llZCYmIXRoaXMuaXNUYWJsZVN3aXRjaGluZyl7dHJ5e2NvbnN0IGduPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKXx8W107QXQ9dGhpcy5ob3RJbnN0YW5jZS5jb2xUb1Byb3AoZ24/Z25bMF1bMV06LTEpLEt0PXRoaXMuJGRhdGFGb3JtYXRzPy52YXJzW0F0XX1jYXRjaHtLdD12'@; put 'b2lkIDB9cXQ9U1plKEF0LEt0KX1yZXR1cm4gQ3QuaW5uZXJIVE1MPXF0LEN0fX19fX0sdGhpcy5ob3RJbnN0YW5jZT1udWxsLHRoaXMuaG90SW5zdGFuY2VDbGlja0xpc3RlbmVyPSExLHRoaXMuaXNUYWJsZVN3aXRjaGluZz0hMSx0aGlzLnN3aXRjaGluZ1RpbWVvdXQ9bnVsbCx0aGlzLmxh'@; put 'c3RTZXR1cFRpbWU9MCx0aGlzLnZpZXdib3hPcGVuPSExLHRoaXMuaG9va3NBdHRhY2hlZD0hMSx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpfW5nT25Jbml0KCl7IiIhPT1Vbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbiYmMD09PU9iamVjdC5rZXlz'@; put 'KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zKS5sZW5ndGgmJnRoaXMucm91dGVyLm5hdmlnYXRlKFtVbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbl0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSYm'@; put 'KFVuLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L2RhdGEiKSx0aGlzLmxpY2VuY2VTZXJ2aWNlLmhvdF9saWNlbnNlX2tleS5zdWJzY3JpYmUocj0+e3RoaXMuaG90VGFibGUubGljZW5zZUtleT1yLHRoaXMudXBkYXRlSG90VGFibGVTZXR0aW5ncygpfSksdGhpcy5fcXVlcnlQYXJh'@; put 'bXM9dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocj0+e3RoaXMudXNlTGFiZWxzPUNaZShuZXcgVVJMU2VhcmNoUGFyYW1zKHIpLnRvU3RyaW5nKCkpLHRoaXMuYXBwbHlEaXNwbGF5Q29sSGVhZGVycygpfSl9YXBwbHlEaXNwbGF5Q29sSGVhZGVycygpe3RoaXMuaG90VGFibGUu'@; put 'Y29sSGVhZGVycz1nQSh0aGlzLmNvbE5hbWVzLHRoaXMuZmlsdGVyQ29scyx0aGlzLnVzZUxhYmVscyksdGhpcy5ob3RJbnN0YW5jZSYmIXRoaXMuaG90SW5zdGFuY2UuaXNEZXN0cm95ZWQmJnRoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2NvbEhlYWRlcnM6dGhpcy5ob3RUYWJs'@; put 'ZS5jb2xIZWFkZXJzfSl9bmV3Vmlld2JveCgpe3RoaXMudmlld2JveE9wZW49ITB9cmVzZXRGaWx0ZXIoKXt0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3QuZmlyc3QmJnRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdC5yZXNldEZpbHRlcigpfXNlYXJjaFRhYmxlKHIpe3ZhciBpPXRoaXM7'@; put 'cmV0dXJuIENyKGZ1bmN0aW9uKigpe2kuc2VhcmNoTG9hZGluZz0hMDtsZXQgbz1yLnZhbHVlLGE9aS5saWIrIi4iK2kudGFibGUsbD1wYXJzZUludChpLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCl8fDA7eWllbGQgaS5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGFTZWFyY2gobyxp'@; put 'LnNlYXJjaE51bWVyaWMsYSxsKS50aGVuKHU9Pnt1LnNhc3BhcmFtc3x8dS52aWV3RGF0YT8oaS5ob3RUYWJsZS5kYXRhPXUudmlld2RhdGEsaS4kZGF0YUZvcm1hdHM9dS4kdmlld2RhdGEsaS5kc21ldGE9dS5kc21ldGEsaS52ZXJzaW9ucz11LnZlcnNpb25zfHxbXSxpLnNldERTTm90ZSgp'@; put 'LGkubnVtYmVyT2ZSb3dzPXUuc2FzcGFyYW1zWzBdLk5PQlMsaS5xdWVyeVRleHQ9dS5zYXNwYXJhbXNbMF0uRklMVEVSX1RFWFQsaS5oZWFkZXJQa3M9dS5zYXNwYXJhbXNbMF0uUEtfRklFTERTLnNwbGl0KCIgIiksMD09PWkuaG90VGFibGUuZGF0YS5sZW5ndGg/aS5ub0RhdGE9ITA6KGku'@; put 'bm9EYXRhPSExLGkudGFibGVGbGFnPSExLGkuc2V0dXBIb3QoKSkpOmkuc2VhcmNoTG9hZGluZz0hMX0pLmNhdGNoKHU9PntpLmxvZ2dlclNlcnZpY2UuZXJyb3IodSl9KSxpLnNlYXJjaExvYWRpbmc9ITF9KSgpfXJlbG9hZFRhYmxlRGF0YSgpe3RoaXMudmlld0RhdGEodGhpcy51cmxGaWx0'@; put 'ZXJQa3x8MCl9cmVsb2FkTGliSW5mbygpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3IubGliaW5mbz1udWxsLHIuc2FzU3RvcmVTZXJ2aWNlLnJlZnJlc2hMaWJJbmZvKHIubGliKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGk9Q3IoZnVuY3Rpb24qKG8pe3IubGliaW5mbz1vLmxp'@; put 'YmluZm8sVW4udmlld2VyLmxpYmluZm89ci5saWJpbmZvO2NvbnN0IGE9ci5saWJyYXJpZXMuZmluZChsPT5sLkxJQlJBUllSRUY9PT1yLmxpYik7YSYmKGEubGliaW5mbz1yLmxpYmluZm8pfSk7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCks'@; put 'aT0+e3IubG9nZ2VyU2VydmljZS5lcnJvcihpKSxudWxsPT09ci5saWJpbmZvJiYoci5saWJpbmZvPVtdKX0pfSkoKX1maWx0ZXJGbihyKXt0aGlzLmxpYnJhcmllcz10aGlzLmxpYnJhcmllcy5maWx0ZXIobz0+LTEhPT1vLkxJQlJBUllOQU1FLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihyLnRv'@; put 'TG9jYWxlTG93ZXJDYXNlKCkpKX1kb3dubG9hZERhdGEoKXtsZXQgcj10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCxpPXRoaXMuc2FzanNDb25maWcuYXBwTG9jO2NvbnN0IG89dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTtsZXQgZyxhPSImdHlwZT0iK3RoaXMuZG93bmxv'@; put 'YWRGb3JtYXQsbD0iJnRhYmxlPSIrdGhpcy50YWJsZVRpdGxlLHU9IlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlP2AmX2NvbnRleHRuYW1lPSR7dGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZX1gOiIiO2c9dHlwZW9mIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1z'@; put 'LmZpbHRlcklkPiJ1Ij8wOnBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKSx3aW5kb3cub3BlbihyK28rIi8/X3Byb2dyYW09IitpKyIvc2VydmljZXMvcHVibGljL2dldHJhd2RhdGEiK2ErbCt1KyImZmlsdGVyPSIrZyksdGhpcy5vcGVuRG93bmxvYWQ9ITF9'@; put 'ZG93bmxvYWREREwoKXtsZXQgcj10aGlzLmxpYixpPXRoaXMudGFibGUsbz10aGlzLmRvd25sb2FkRm9ybWF0LnJlcGxhY2UoIl9EREwiLCIiKSxhPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLGw9dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2M7Y29uc3QgdT10aGlzLnNhc1NlcnZpY2UuZ2V0'@; put 'RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVuKGErdSsiLz9fcHJvZ3JhbT0iK2wrIi9zZXJ2aWNlcy9wdWJsaWMvZ2V0ZGRsIitgJmRzPSR7aX0mbGlicmVmPSR7cn0mZmxhdm91cj0ke299JHsiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU/YCZfY29udGV4dG5hbWU9'@; put 'JHt0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lfWA6IiJ9YCksdGhpcy5vcGVuRG93bmxvYWQ9ITF9b25DbGlDb21tYW5kRm9jdXMocil7ci5wcmV2ZW50RGVmYXVsdCgpLHIudGFyZ2V0LnNlbGVjdCgpfWVkaXRUYWJsZSgpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3Iv'@; put 'Iit0aGlzLmxpYlRhYil9dGFibGVFZGl0RXhpc3RzKCl7bGV0IHI9e307cj1Vbi5lZGl0b3IubGlic0FuZFRhYmxlcztsZXQgaT10aGlzLmxpYlRhYi5zcGxpdCgiLiIpWzFdLG89dGhpcy5saWJUYWIuc3BsaXQoIi4iKVswXTtyZXR1cm4hIXJbb10mJnJbb10uaW5jbHVkZXMoaSl9Z29Ub0xp'@; put 'bmVhZ2UoKXtsZXQgaT1gL3ZpZXcvbGluZWFnZS8ke3RoaXMudGFibGV1cmkuc3BsaXQoIlxcIilbMV19L1JFVkVSU0VgO3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoaSl9c2hvd1dlYlF1ZXJ5KCl7bGV0IHI7dGhpcy53ZWJRdWVyeT0hMCxyPXR5cGVvZiB0aGlzLnJvdXRlLnNuYXBzaG90'@; put 'LnBhcmFtcy5maWx0ZXJJZD4idSI/MDpwYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCk7bGV0IGk9d2luZG93LmxvY2F0aW9uLnBvcnQubGVuZ3RoPjA/IjoiK3dpbmRvdy5sb2NhdGlvbi5wb3J0OiIiO2NvbnN0IG89dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1'@; put 'dGlvblBhdGgoKTtsZXQgbD1gJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0ke2l9LyR7b30vP19wcm9ncmFtPSR7dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2N9L3NlcnZpY2VzL3B1YmxpYy9nZXRyYXdkYXRhJnR5cGU9V0VCJHt0aGlzLndl'@; put 'YlF1ZXJ5VGFiPyJUQUIiOiJDU1YifSZ0YWJsZT0ke3RoaXMudGFibGVUaXRsZX0keyImZmlsdGVyPSIrcn1gO3RoaXMud2ViUXVlcnlUZXh0PWwucmVwbGFjZSgvIC9naW0sIiUyMCIpfWNvcHlUb0NsaXAoKXtuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLndlYlF1ZXJ5VGV4'@; put 'dCl9Z29Ub1ZpZXdlcigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1zaG93VGFibGVTZWxlY3QoKXt0aGlzLnRhYmxlRmxhZz0hdGhpcy50YWJsZUZsYWd9Y2hlY2tFeHBhbmQocil7fWNvbGxhcHNlTGlicmFyeUl0ZW1zKHIsaSl7ci5mb3JFYWNoKG89PntvLkxJ'@; put 'QlJBUllSRUYhPT1pLkxJQlJBUllSRUYmJihvLmV4cGFuZGVkPSExKX0pfWxvYWRNb3JlTGlicmFyaWVzKCl7dGhpcy5saWJyYXJpZXNQYWdpbmd8fCh0aGlzLmxpYnJhcmllc1BhZ2luZz0hMCx0aGlzLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcmllcywhMCks'@; put 'dGhpcy5saWJyYXJpZXNQYWdpbmc9ITEpfXRyZWVOb2RlQ2xpY2tlZChyLGkpeyJDb2xsYXBzZSI9PT1yLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyxpKX1saWJyYXJ5RXhwYW5kZWRDaGFuZ2UocixpKXtyJiZ0aGlzLmNvbGxhcHNlTGli'@; put 'cmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLGkpfWxpYnJhcnlPbkNsaWNrKHIsaSxvKXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtpZihpLnRhYmxlcz9pLmV4cGFuZGVkPSEhb3x8IWkuZXhwYW5kZWQ6eWllbGQgYS5zZWxlY3RUYWJsZShyLCExLGkpLGkuZXhwYW5kZWQpe2Eu'@; put 'Y2RmLmRldGVjdENoYW5nZXMoKTtsZXQgbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjc2VhcmNoXyR7aS5MSUJSQVJZUkVGfWApO2wmJmwuZm9jdXMoKSxpJiZpLmxpYmluZm8mJihhLmxpYmluZm89aS5saWJpbmZvKSxhLmxpYiYmYS50YWJsZSYmIW8/YS5yb3V0ZXIubmF2aWdhdGUoWyIv'@; put 'dmlldy9kYXRhIl0se3NraXBMb2NhdGlvbkNoYW5nZTohMCxxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KS50aGVuKCgpPT57YS5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRhLyIrYS5saWJdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KX0pOmEubGliJiYhYS50'@; put 'YWJsZSYmYS5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoIi92aWV3L2RhdGEvIithLmxpYil9YS5jb2xsYXBzZUxpYnJhcnlJdGVtcyhhLmxpYnJhcmllcyxpKX0pKCl9b25UYWJsZUNsaWNrKHIsaSl7dGhpcy5pc1RhYmxlU3dpdGNoaW5nfHwodGhpcy5zd2l0Y2hpbmdUaW1lb3V0JiZjbGVhclRp'@; put 'bWVvdXQodGhpcy5zd2l0Y2hpbmdUaW1lb3V0KSx0aGlzLnN3aXRjaGluZ1RpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMubGliPWkuTElCUkFSWVJFRix0aGlzLnRhYmxlPXIsdGhpcy5zZWxlY3RMaWJUYWJsZShyKSx0aGlzLnZpZXdEYXRhKDApfSw1MCkpfXNlbGVjdFRhYmxlKHIsaSxv'@; put 'KXt2YXIgYT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtvLmxvYWRpbmdUYWJsZXM9ITAsYS50YWJsZT0hMSxhLnRhYmxlRGlzYWJsZT0hMCwiUGxlYXNlIHNlbGVjdCBsaWJyYXJ5IiE9PXI/VW4udmlld2VyLnRhYmxlc1NldCYmaT8oYS5hYm9ydEFjdGl2ZT0hMSxhLnRhYmxlRGlzYWJs'@; put 'ZT0hMSxhLnRhYmxlcz1Vbi52aWV3ZXIudGFibGVzLGEubGliaW5mbz1Vbi52aWV3ZXIubGliaW5mbyk6KGEubGliaW5mbz1udWxsLHlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJsZXMocikudGhlbihsPT57YS5hYm9ydEFjdGl2ZT0hMSxhLnRhYmxlRGlzYWJsZT0hMTtsZXQgdT1s'@; put 'Lm1wdGFibGVzLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gZy5NRU1OQU1FfSk7YS5saWJpbmZvPWwubGliaW5mb3x8W10sYS50YWJsZXM9dSxvJiYoby50YWJsZXM9dSxvLmxpYmluZm89YS5saWJpbmZvKSxVbi52aWV3ZXIubGlicmFyaWVzPWEubGlicmFyaWVzLFVuLnZpZXdlci5saWJyYXJ5'@; put 'PWEubGliLFVuLnZpZXdlci50YWJsZXM9YS50YWJsZXMsVW4udmlld2VyLmxpYmluZm89YS5saWJpbmZvLFVuLnZpZXdlci50YWJsZXNTZXQ9ITB9KS5jYXRjaChsPT57YS5sb2dnZXJTZXJ2aWNlLmVycm9yKGwpLGEuYWJvcnRBY3RpdmU9ITAsYS5ub0RhdGE9ITAsYS50YWJsZVRpdGxlPSIi'@; put 'LGEudGFibGVEaXNhYmxlPSEwfSkpOmEudGFibGVEaXNhYmxlPSEwLFVuLnZpZXdlci5saWJyYXJ5PWEubGliLGl8fGEuY2xlYXJHbG9iYWxzRmlsdGVyKCksby5sb2FkaW5nVGFibGVzPSExLG8uZXhwYW5kZWQ9IW8uZXhwYW5kZWR9KSgpfXNlbGVjdExpYlRhYmxlKHIsaSl7IlBsZWFzZSBz'@; put 'ZWxlY3QgdGFibGUiIT09cj8odGhpcy5hY3Rpb25EaXNhYmxlPSExLHRoaXMubGliVGFiPXRoaXMubGliKyIuIit0aGlzLnRhYmxlKTp0aGlzLmFjdGlvbkRpc2FibGU9ITAsVW4udmlld2VyLnRhYmxlPXIsaXx8dGhpcy5jbGVhckdsb2JhbHNGaWx0ZXIoKSx0aGlzLmxvZ2dlclNlcnZpY2Uu'@; put 'bG9nKHRoaXMubGliVGFiKX1jbGVhckdsb2JhbHNGaWx0ZXIoKXtVbi52aWV3ZXIuZmlsdGVyLmxpYmRzPSIiLFVuLnZpZXdlci5maWx0ZXIud2hlcmVDbGF1c2U9IiIsVW4udmlld2VyLmZpbHRlci5ncm91cExvZ2ljPSIiLFVuLnZpZXdlci5maWx0ZXIuY2xhdXNlcz1bXSxVbi52aWV3ZXIu'@; put 'ZmlsdGVyLmNvbHM9W10sVW4udmlld2VyLmZpbHRlci52YWxzPVtdfWxpYlRhYkFjdGl2ZShyLGkpe3JldHVybiEhdGhpcy5saWJUYWImJnIrIi4iK2k9PT10aGlzLmxpYlRhYn10cmVlT25GaWx0ZXIocixpKXt0aGlzLmhlbHBlclNlcnZpY2UudHJlZU9uRmlsdGVyKHIsaSl9bGlicmFyeU9u'@; put 'RmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmxpYnJhcmllcyx0aGlzLmxpYnJhcmllc1NlYXJjaCwiTElCUkFSWU5BTUUiKSxVbi52aWV3ZXIubGlicmFyaWVzU2VhcmNoPXRoaXMubGlicmFyaWVzU2VhcmNofWxpYnJhcnlSZXNldEZpbHRlcigpe3Ro'@; put 'aXMuaGVscGVyU2VydmljZS5yZXNldEFycmF5RmlsdGVyKHRoaXMubGlicmFyaWVzKX12aWV3RGF0YShyKXt2YXIgaT10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtsZXQgbztpZihpLmlzVGFibGVTd2l0Y2hpbmc9ITAsaS5sb2FkaW5nVGFibGVWaWV3PSEwLHR5cGVvZiBpLmxpYkRhdGFz'@; put 'ZXQ+InUiKW89aS5saWIrIi4iK2kudGFibGU7ZWxzZSBpZih0eXBlb2YgaS5saWI+InUiJiZ0eXBlb2YgaS50YWJsZT4idSIpe2xldCB1PVtdO2lmKHU9aS5saWJEYXRhc2V0LnNwbGl0KCIuIikseWllbGQgaS5zYXNTdG9yZVNlcnZpY2Uudmlld0xpYnMoKS50aGVuKGc9PntpLmxpYnJhcmll'@; put 'cz1nLnNhc2xpYnN9KS5jYXRjaChnPT57aS5sb2dnZXJTZXJ2aWNlLmVycm9yKGcpfSksaS5saWI9dVswXSxVbi52aWV3ZXIuc3RhcnR1cFNldClpLnRhYmxlcz1Vbi52aWV3ZXIudGFibGVzO2Vsc2V7bGV0IGc9aS5saWJyYXJpZXMuZmluZChFPT5FLkxJQlJBUllSRUYudG9Mb3dlckNhc2Uo'@; put 'KT09PWkubGliLnRvTG93ZXJDYXNlKCkpO3lpZWxkIGkuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJsZXMoaS5saWIpLnRoZW4oRT0+e2kudGFibGVzPUUubXB0YWJsZXMubWFwKGZ1bmN0aW9uKE8pe3JldHVybiBPLk1FTU5BTUV9KSxnLnRhYmxlcz1pLnRhYmxlcyxVbi52aWV3ZXIubGlicmFy'@; put 'aWVzPWkubGlicmFyaWVzLFVuLnZpZXdlci50YWJsZXM9aS50YWJsZXMsVW4udmlld2VyLnN0YXJ0dXBTZXQ9ITB9KS5jYXRjaChFPT57aS5sb2dnZXJTZXJ2aWNlLmVycm9yKEUpfSl9aS50YWJsZT11WzFdLGkudGFibGVGbGFnPSExLG89aS5saWJEYXRhc2V0LGkubGliVGFiPW99ZWxzZSB5'@; put 'aWVsZCBpLnNhc1N0b3JlU2VydmljZS52aWV3TGlicygpLnRoZW4odT0+e2kubGlicmFyaWVzPXUuc2FzbGlic30pLmNhdGNoKHU9PntpLmxvZ2dlclNlcnZpY2UuZXJyb3IodSl9KSx0eXBlb2YgaS50YWJsZTwidSImJihVbi52aWV3ZXIuc3RhcnR1cFNldD9pLnRhYmxlcz1Vbi52aWV3ZXIu'@; put 'dGFibGVzOnlpZWxkIGkuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJsZXMoaS5saWIpLnRoZW4odT0+e2kudGFibGVzPXUubXB0YWJsZXMubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLk1FTU5BTUV9KX0pLmNhdGNoKHU9PntpLmxvZ2dlclNlcnZpY2UuZXJyb3IodSksaS5yb3V0ZXIubmF2aWdh'@; put 'dGUoWyIvdmlldy9kYXRhIl0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pfSksaS50YWJsZUZsYWc9ITEsbz1pLmxpYisiLiIraS50YWJsZSxpLnRhYmxlVGl0bGU9byxpLmxpYlRhYj1vKTtpLnJvdXRlci51cmwuc3BsaXQoIi8iKS5sZW5ndGg+MyYmbyYmKHlpZWxkIGkuc2Fz'@; put 'U3RvcmVTZXJ2aWNlLnZpZXdEYXRhKG8scikudGhlbih1PT57aWYodS5xdWVyeS5sZW5ndGg+MCYmInZpZXciPT09VW4ucm9vdFBhcmFtJiYwPT09VW4udmlld2VyLmZpbHRlci5jbGF1c2VzLmxlbmd0aCYmKFVuLnZpZXdlci5maWx0ZXIucXVlcnk9aS5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9u'@; put 'ZSh1LnF1ZXJ5KSxVbi52aWV3ZXIuZmlsdGVyLmxpYmRzPWkucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSxpLnNhc1N0b3JlU2VydmljZS5pbml0aWFsaXplR2xvYmFsRmlsdGVyQ2xhdXNlKCJ2aWV3ZXIiLHUuY29scykpLGkuYWJvcnRBY3RpdmU9ITEsaS5maWx0ZXJDb2xzPXUuY29s'@; put 'cyx5Z2UoaS5maWx0ZXJDb2xzLFtdLHUuJHZpZXdkYXRhKSxpLm51bWJlck9mUm93cz11LnNhc3BhcmFtc1swXS5OT0JTLGkuaGVhZGVyUGtzPXUuc2FzcGFyYW1zWzBdLlBLX0ZJRUxEUy5zcGxpdCgiICIpLCJTQVM5Ij09PWkuc2FzanNDb25maWcuc2VydmVyVHlwZSl7bGV0IEU9dS5zYXNw'@; put 'YXJhbXNbMF0uVEFCTEVVUkk7RSYmRS5sZW5ndGg+MCYmKGkudGFibGV1cmk9RSl9aWYoaS5ob3RUYWJsZS5kYXRhPXUudmlld2RhdGEsaS4kZGF0YUZvcm1hdHM9dS4kdmlld2RhdGEsaS5kc21ldGE9dS5kc21ldGEsaS52ZXJzaW9ucz11LnZlcnNpb25zfHxbXSxpLnNldERTTm90ZSgpLGku'@; put 'cXVlcnlUZXh0PXUuc2FzcGFyYW1zWzBdLkZJTFRFUl9URVhULHUudmlld2RhdGEmJnUudmlld2RhdGEubGVuZ3RoPjApe2xldCBFPVtdLE89W107Zm9yKGxldCBNZSBpbiB1LnZpZXdkYXRhWzBdKU1lJiZPLnB1c2goTWUpO2NvbnN0IFo9e30sZWU9bmV3IFNldDtpZihBcnJheS5pc0FycmF5'@; put 'KHUuZHFydWxlcykpZm9yKGNvbnN0IE1lIG9mIHUuZHFydWxlcykiTlVNQkVSX0ZPUk1BVCI9PT1NZS5SVUxFX1RZUEUmJihaW01lLkJBU0VfQ09MXT1NZS5SVUxFX1ZBTFVFKSwiSElEREVOIj09PU1lLlJVTEVfVFlQRSYmZWUuYWRkKE1lLkJBU0VfQ09MKTtjb25zdCB2ZT1bXTtmb3IobGV0'@; put 'IE1lPTA7TWU8Ty5sZW5ndGg7TWUrKyl7Y29uc3QgSGU9T1tNZV0sV2U9e2RhdGE6SGV9O1pbSGVdJiYoV2UucmVuZGVyZXI9X3plKFpbSGVdKSksZWUuaGFzKEhlKSYmdmUucHVzaChNZSksRS5wdXNoKFdlKX1pLmNvbE5hbWVzPU8saS5ob3RUYWJsZS5jb2xIZWFkZXJzPWdBKE8sdS5jb2xz'@; put 'LGkudXNlTGFiZWxzKSxpLmhvdFRhYmxlLmNvbHVtbnM9RSxpLmhpZGRlblZpZXdDb2x1bW5zPXZlfWVsc2UgaS5jb2xOYW1lcz1bXSxpLmhvdFRhYmxlLmNvbEhlYWRlcnM9W10saS5ob3RUYWJsZS5jb2x1bW5zPVtdLGkuaGlkZGVuVmlld0NvbHVtbnM9W107aS5ob3RUYWJsZS5jZWxscz0o'@; put 'KT0+KHtyZWFkT25seTohMH0pLGkudXBkYXRlSG90VGFibGVTZXR0aW5ncygpLGkudGFibGVGbGFnPSExO2xldCBnPVtdO2c9by5zcGxpdCgiLiIpLGkubGliPWdbMF0saS50YWJsZT1nWzFdLDA9PT1pLmhvdFRhYmxlLmRhdGEubGVuZ3RoPyhpLm5vRGF0YT0hMCxpLnRhYmxlRmxhZz0hMCk6'@; put 'KGkubm9EYXRhPSExLGkudGFibGVGbGFnPSExKSxpLm5vRGF0YVJlcUVycj0hMX0pLmNhdGNoKHU9PntpLmxvZ2dlclNlcnZpY2UuZXJyb3IodSksaS5hYm9ydEFjdGl2ZT0hMCxpLm5vRGF0YVJlcUVycj0hMH0pKSxpLnJvdXRlci51cmwuaW5jbHVkZXMoIi9kYXRhIikmJm8mJmkucm91dGVy'@; put 'Lm5hdmlnYXRlKDAhPT1yP1siL3ZpZXcvZGF0YS8iK28rIi8iK3JdOlsiL3ZpZXcvZGF0YS8iK29dLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KTtsZXQgYT1pLnRhYmxlLGw9aS5saWJyYXJpZXMuZmluZCh1PT51LkxJQlJBUllSRUYudG9Mb3dlckNhc2UoKT09PWkubGliLnRv'@; put 'TG93ZXJDYXNlKCkpO2w/KFVuLnZpZXdlci5saWJyYXJpZXMubGVuZ3RoPjAmJihpLmxpYnJhcmllcz1Vbi52aWV3ZXIubGlicmFyaWVzLGkubGlicmFyaWVzU2VhcmNoPVVuLnZpZXdlci5saWJyYXJpZXNTZWFyY2gpLGkubGlicmFyeU9uQ2xpY2soaS5saWIsbCwhMCkpOmkubGliaW5mbz1b'@; put 'XSxpLnRhYmxlPWF8fGkudGFibGUsaS5saWJyYXJpZXMmJmkuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKGkubGlicmFyaWVzKSxpLnJvdXRlci51cmwuaW5jbHVkZXMoIi9kYXRhIikmJmkuZXZlbnRTZXJ2aWNlLmNsb3NlU2lkZWJhcigpLGkubG9hZGluZ1RhYmxlVmlldz0hMSxz'@; put 'ZXRUaW1lb3V0KCgpPT57IWkubm9EYXRhJiYhaS5ub0RhdGFSZXFFcnImJm8mJmkuc2V0dXBIb3QoKX0sNTApLHNldFRpbWVvdXQoKCk9PntpLmlzVGFibGVTd2l0Y2hpbmc9ITF9LDMwMCksc2V0VGltZW91dCgoKT0+e2kuZml4QXJpYUFjY2Vzc2liaWxpdHkoKX0sNTAwKSxpLmhvdEluc3Rh'@; put 'bmNlQ2xpY2tMaXN0ZW5lcnx8c2V0VGltZW91dCgoKT0+e2xldCB1PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3RJbnN0YW5jZSIpO3UmJih1LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsZz0+e3NldFRpbWVvdXQoKCk9PntsZXQgRT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIu'@; put 'ZGVidWctc3dpdGNoLWl0ZW0iKXx8dm9pZCAwO0UmJkUuY2xpY2soKX0sMTAwKX0pLGkuaG90SW5zdGFuY2VDbGlja0xpc3RlbmVyPSEwKX0sMWUzKX0pKCl9bWF4V2lkdGhDaGVrZXIocixpKXtyZXR1cm4gcj4yMDA/MjAwOnJ9b3BlblFiKCl7dGhpcy5maWx0ZXI9ITAsdGhpcy5jZGYuZGV0'@; put 'ZWN0Q2hhbmdlcygpLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFF1ZXJ5VmFyaWFibGVzKHRoaXMubGliKyIuIit0aGlzLnRhYmxlLHRoaXMuZmlsdGVyQ29scyl9c2VuZENsYXVzZSgpe3ZhciByPXRoaXM7cmV0dXJuIENyKGZ1bmN0aW9uKigpe3Iuc3VibWl0TG9hZGluZz0hMDtsZXQgaT1b'@; put 'XSxvPVtdO2lmKHR5cGVvZiByLmNsYXVzZXM+InUiKXJldHVybiByLm51bGxWYXJpYWJsZXM9ITAsdm9pZChyLnN1Ym1pdExvYWRpbmc9ITEpO3tsZXQgYT1yLmNsYXVzZXMucXVlcnlPYmo7aWYoYVswXS5lbGVtZW50cy5sZW5ndGg8MSlyZXR1cm4idmlldyI9PT1Vbi5yb290UGFyYW0mJihV'@; put 'bi52aWV3ZXIuZmlsdGVyLmNsYXVzZXM9W10sVW4udmlld2VyLmZpbHRlci5xdWVyeT1bXSxVbi52aWV3ZXIuZmlsdGVyLmdyb3VwTG9naWM9IiIpLHZvaWQgci5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRhLyIrci5saWJkc10se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0p'@; put 'O2ZvcihsZXQgbD0wO2w8YS5sZW5ndGg7bCsrKXtjb25zdCB1PWFbbF0uZWxlbWVudHM7aT11LmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4gbnVsbD09PWcudmFyaWFibGV9KSxpLmxlbmd0aCYmby5wdXNoKHUpfX1pZihvLmxlbmd0aClyZXR1cm4gci5udWxsVmFyaWFibGVzPSEwLHZvaWQo'@; put 'ci5zdWJtaXRMb2FkaW5nPSExKTt7Y29uc3QgYT17Z3JvdXBMb2dpYzpyLmNsYXVzZXMuZ3JvdXBMb2dpYyxmaWx0ZXJHcm91cHM6W119O3IuY2xhdXNlcy5xdWVyeU9iai5mb3JFYWNoKHU9Pntjb25zdCBnPXtmaWx0ZXJDbGF1c2VzOltdfTt1LmVsZW1lbnRzLmZvckVhY2goRT0+e2cuZmls'@; put 'dGVyQ2xhdXNlcy5wdXNoKHIuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoRSkpfSksZy5jbGF1c2VMb2dpYz11LmNsYXVzZUxvZ2ljLGEuZmlsdGVyR3JvdXBzLnB1c2goci5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShnKSl9KTtjb25zdCBsPXIuc2FzU3RvcmVTZXJ2aWNlLmNyZWF0ZUZpbHRl'@; put 'clF1ZXJ5VGFibGUoYSk7eWllbGQgci5zYXNTdG9yZVNlcnZpY2Uuc2F2ZVF1ZXJ5KHIubGliZHMsbCkudGhlbih1PT57ci5xdWVyeVRleHQ9dS5yZXN1bHRbMF0uRklMVEVSX1RFWFQ7bGV0IGc9dS5yZXN1bHRbMF0uRklMVEVSX1JLO3Iucm91dGVyLm5hdmlnYXRlKFsiL3ZpZXcvZGF0YS8i'@; put 'K3IubGliZHMrIi8iK2ddLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KSxyLnZpZXdEYXRhKGcpLHIuZmlsdGVyPSExfSkuY2F0Y2godT0+e3IubG9nZ2VyU2VydmljZS5lcnJvcih1KX0pLHIuc3VibWl0TG9hZGluZz0hMX19KSgpfXJlbW92ZVF1ZXJ5KCl7dGhpcy5zYXNTdG9y'@; put 'ZVNlcnZpY2UucmVtb3ZlQ2xhdXNlKCl9ZGF0YXNldEluZm9Nb2RhbFJvd0NsaWNrZWQocil7dm9pZCAwIT09ci5MT0FEX1JFRiYmdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Avc3RhZ2UvJHtyLkxPQURfUkVGfWBdKX1zZXREU05vdGUoKXtjb25zdCByPXRoaXMuZHNtZXRhLmZpbmQoYT0+Ik5P'@; put 'VEVTIj09PWEuTkFNRSksaT10aGlzLmRzbWV0YS5maW5kKGE9PiJERF9MT05HREVTQyI9PT1hLk5BTUUpLG89dGhpcy5kc21ldGEuZmluZChhPT4iRERfU0hPUlRERVNDIj09PWEuTkFNRSk7dGhpcy5kc05vdGU9ciYmci5WQUxVRT9yLlZBTFVFOmkmJmkuVkFMVUU/aS5WQUxVRTpvJiZvLlZB'@; put 'TFVFP28uVkFMVUU6IiJ9Y2xlYW51cEhvdEluc3RhbmNlKCl7aWYodGhpcy5ob3RJbnN0YW5jZSYmIXRoaXMuaG90SW5zdGFuY2UuaXNEZXN0cm95ZWQpdHJ5e3RoaXMuaG90SW5zdGFuY2UuZGVzdHJveSgpfWNhdGNoKHIpe2NvbnNvbGUud2FybigiRXJyb3IgZGVzdHJveWluZyBIYW5kc29u'@; put 'dGFibGUgaW5zdGFuY2U6IixyKX10aGlzLmhvdEluc3RhbmNlPW51bGwsdGhpcy5ob29rc0F0dGFjaGVkPSExfXNldHVwSG90KCl7Y29uc3Qgcj1EYXRlLm5vdygpO2lmKCEoci10aGlzLmxhc3RTZXR1cFRpbWU8NTAwKSYmKHRoaXMubGFzdFNldHVwVGltZT1yLCF0aGlzLmxvYWRpbmdUYWJs'@; put 'ZVZpZXcmJnRoaXMubGliRGF0YXNldCkpe2lmKCghdGhpcy5ob3RJbnN0YW5jZXx8dGhpcy5ob3RJbnN0YW5jZS5pc0Rlc3Ryb3llZCkmJih0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90VGFibGVDb21wb25lbnQ/LmhvdEluc3RhbmNlKSx0aGlzLmhvdEluc3RhbmNlJiYhdGhpcy5ob3RJbnN0'@; put 'YW5jZS5pc0Rlc3Ryb3llZClyZXR1cm4gdm9pZCB0aGlzLmNvbmZpZ3VyZUhvdEluc3RhbmNlKCk7c2V0VGltZW91dCgoKT0+e3RoaXMuaXNUYWJsZVN3aXRjaGluZ3x8dGhpcy5sb2FkaW5nVGFibGVWaWV3fHwhdGhpcy5saWJEYXRhc2V0fHwodGhpcy5ob3RJbnN0YW5jZT10aGlzLmhvdFRh'@; put 'YmxlQ29tcG9uZW50Py5ob3RJbnN0YW5jZSx0aGlzLmNvbmZpZ3VyZUhvdEluc3RhbmNlKCkpfSwyNTApfX1jb25maWd1cmVIb3RJbnN0YW5jZSgpeyF0aGlzLmhvdEluc3RhbmNlfHx0aGlzLmhvdEluc3RhbmNlLmlzRGVzdHJveWVkfHwodGhpcy5ob3RJbnN0YW5jZS51cGRhdGVTZXR0aW5n'@; put 'cyh7aGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LG1vZGlmeUNvbFdpZHRoOihyLGkpPT5yPjUwMD81MDA6cixhZnRlckdldENvbEhlYWRlcjoocixpKT0+e2lmKHRoaXMuaG90SW5zdGFuY2UmJiF0aGlzLmhvdEluc3RhbmNlLmlzRGVzdHJveWVkKXRyeXtjb25zdCBvPXRoaXMuaG90SW5z'@; put 'dGFuY2UuY29sVG9Qcm9wKHIpO28mJnRoaXMuaGVhZGVyUGtzLmluZGV4T2Yobyk+LTEmJmkuY2xhc3NMaXN0LmFkZCgicHJpbWFyeUtleUhlYWRlclN0eWxlIiksaS5jbGFzc0xpc3QuYWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9Y2F0Y2h7aS5jbGFzc0xpc3Qu'@; put 'YWRkKFVuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9ZWxzZSBpLmNsYXNzTGlzdC5hZGQoVW4uaGFuZHNvbnRhYmxlLmRhcmtUYWJsZUhlYWRlckNsYXNzKX19KSx0aGlzLmhvb2tzQXR0YWNoZWR8fCh0aGlzLmhvdEluc3RhbmNlLmFkZEhvb2soImFmdGVyUmVuZGVyIiwo'@; put 'KT0+e3RoaXMuZml4QXJpYUFjY2Vzc2liaWxpdHkoKX0pLHRoaXMuaG90SW5zdGFuY2UuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLCgpPT57c2V0VGltZW91dCgoKT0+e3RoaXMuZml4QXJpYUFjY2Vzc2liaWxpdHkoKX0sNTApfSksdGhpcy5ob29rc0F0dGFjaGVkPSEwKSx0aGlzLmhvdEluc3Rh'@; put 'bmNlLnJlbmRlcigpKX1sb2FkV2l0aFBhcmFtZXRlcnMoKXt2YXIgcj10aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLnN3aXRjaEZsYWc9ITAsci50YWJsZVRpdGxlPXIucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbXx8MCxyLnVybEZpbHRlclBrPXBhcnNlSW50KHIucm91dGUuc25h'@; put 'cHNob3QucGFyYW1zLmZpbHRlcklkfHwiMCIpO2xldCBvPXIucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbTtyLmxpYkRhdGFzZXQ9byxvLmluY2x1ZGVzKCIuIil8fChyLmxpYj1vKSx5aWVsZCByLnZpZXdEYXRhKHIudXJsRmlsdGVyUGspLHIubm9EYXRhP3NldFRpbWVvdXQoKCk9Pnty'@; put 'LnRhYmxlRmxhZz0hMH0sMTIwMCk6c2V0VGltZW91dCgoKT0+e3IudGFibGVGbGFnPSExfSwxMjAwKX0pKCl9bG9hZFdpdGhvdXRQYXJhbWV0ZXJzKCl7dmFyIHI9dGhpcztyZXR1cm4gQ3IoZnVuY3Rpb24qKCl7ci5zd2l0Y2hGbGFnPSExLHIubGlicmFyaWVzTG9hZGluZz0hMCxVbi52aWV3'@; put 'ZXIuc3RhcnR1cFNldD9zZXRUaW1lb3V0KCgpPT57ci5saWJyYXJpZXM9VW4udmlld2VyLmxpYnJhcmllcyxyLmxpYnJhcmllc1NlYXJjaD1Vbi52aWV3ZXIubGlicmFyaWVzU2VhcmNoLHIubGliPVVuLnZpZXdlci5saWJyYXJ5LHIubGlicmFyaWVzVHJlZUV4cGFuZGVkPSEwLHIubGlicmFy'@; put 'aWVzTG9hZGluZz0hMSxyLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyhyLmxpYnJhcmllcyl9LDEwMCk6KHIubm9EYXRhUmVxRXJyPSExLHlpZWxkIHIuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihpPT57ci5saWJyYXJpZXM9aS5zYXNsaWJzLFVuLnZpZXdlci5saWJy'@; put 'YXJpZXM9ci5saWJyYXJpZXMsVW4udmlld2VyLnN0YXJ0dXBTZXQ9ITAsci5saWJyYXJpZXNMb2FkaW5nPSExLHIuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKHIubGlicmFyaWVzKX0pLmNhdGNoKGk9PntyLmxvZ2dlclNlcnZpY2UuZXJyb3IoaSksci5saWJyYXJpZXNMb2FkaW5n'@; put 'PSExLHIubm9EYXRhUmVxRXJyPSEwfSkpfSkoKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnNjaGVkdWxlRmlsdGVyT3ZlcmZsb3dDaGVjaygpfXNjaGVkdWxlRmlsdGVyT3ZlcmZsb3dDaGVjaygpe2NvbnN0IHI9dGhpcy5pbmZvQmFyPy5uYXRpdmVFbGVtZW50O2lmKCFyKXJldHVybjtj'@; put 'b25zdCBpPXIucXVlcnlTZWxlY3RvcigiLmluZm9CYXItdGV4dCIpO2lmKCFpKXJldHVybjtjb25zdCBvPWAke3RoaXMucXVlcnlUZXh0fXwke2kuY2xpZW50V2lkdGh9fCR7dGhpcy5maWx0ZXJFeHBhbmRlZH1gO28hPT10aGlzLmZpbHRlck1lYXN1cmVkS2V5JiYodGhpcy5maWx0ZXJNZWFz'@; put 'dXJlZEtleT1vLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbHRlckV4cGFuZGVkfHwodGhpcy5maWx0ZXJPdmVyZmxvd3M9aS5zY3JvbGxXaWR0aD5pLmNsaWVudFdpZHRoKX0pKX10b2dnbGVGaWx0ZXJQYW5lbCgpe3RoaXMuZmlsdGVyRXhwYW5kZWQ9IXRoaXMuZmlsdGVyRXhwYW5kZWR9bmdB'@; put 'ZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuZml4QXJpYUFjY2Vzc2liaWxpdHkoKX0sMWUzKX1uZ09uRGVzdHJveSgpe3RoaXMuX3F1ZXJ5UGFyYW1zPy51bnN1YnNjcmliZSgpLHRoaXMuaXNUYWJsZVN3aXRjaGluZz0hMCx0aGlzLnN3aXRjaGluZ1RpbWVvdXQmJihjbGVh'@; put 'clRpbWVvdXQodGhpcy5zd2l0Y2hpbmdUaW1lb3V0KSx0aGlzLnN3aXRjaGluZ1RpbWVvdXQ9bnVsbCksdGhpcy5jbGVhbnVwSG90SW5zdGFuY2UoKSx0aGlzLmFyaWFPYnNlcnZlciYmKHRoaXMuYXJpYU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLmFyaWFPYnNlcnZlcj12b2lkIDApLHRo'@; put 'aXMuYXJpYUNoZWNrSW50ZXJ2YWwmJihjbGVhckludGVydmFsKHRoaXMuYXJpYUNoZWNrSW50ZXJ2YWwpLHRoaXMuYXJpYUNoZWNrSW50ZXJ2YWw9dm9pZCAwKX1maXhBcmlhQWNjZXNzaWJpbGl0eSgpe2NvbnN0IHI9KCk9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaHQtd3JhcHBl'@; put 'ciwgLnd0SG9sZGVyLCBbaWRePSJodF8iXScpLmZvckVhY2goRT0+e0UucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksRS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtcm93Y291bnQiKSxFLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1jb2xjb3VudCIpLEUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRp'@; put 'c2VsZWN0YWJsZSIpfSk7Y29uc3Qgbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT0idHJlZWdyaWQiXScpLGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9InByZXNlbnRhdGlvbiJdJyk7by5mb3JFYWNoKEU9PntFLnJlbW92ZUF0dHJpYnV0ZSgicm9sZSIpLEUu'@; put 'cmVtb3ZlQXR0cmlidXRlKCJhcmlhLXJvd2NvdW50IiksRS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY29sY291bnQiKSxFLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiKX0pLGEuZm9yRWFjaChFPT57RS5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24sIGlucHV0LCBzZWxl'@; put 'Y3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdLCBbb25jbGlja10sIFtjb250ZW50ZWRpdGFibGVdIikubGVuZ3RoPjAmJkUucmVtb3ZlQXR0cmlidXRlKCJyb2xlIil9KSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbYXJpYS1yb3djb3VudD0iLTEiXScpLmZvckVhY2goRT0+e0UucmVtb3Zl'@; put 'QXR0cmlidXRlKCJhcmlhLXJvd2NvdW50Iil9KSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0YWJsZSIpLmZvckVhY2goRT0+e0UuZ2V0QXR0cmlidXRlKCJyb2xlIil8fEUuc2V0QXR0cmlidXRlKCJyb2xlIiwidGFibGUiKSxFLnF1ZXJ5U2VsZWN0b3JBbGwoInRoIikuZm9yRWFjaCha'@; put 'PT57Wi5nZXRBdHRyaWJ1dGUoInNjb3BlIil8fFouc2V0QXR0cmlidXRlKCJzY29wZSIsImNvbCIpfSl9KSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbY29udGVudGVkaXRhYmxlXSIpLmZvckVhY2goRT0+e2lmKCFFLmdldEF0'@; put 'dHJpYnV0ZSgiYXJpYS1sYWJlbCIpJiYhRS5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpKXtjb25zdCBPPUUudGV4dENvbnRlbnQ/LnRyaW0oKTtPJiZFLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsTyl9fSl9O3IoKSxzZXRUaW1lb3V0KHIsMTAwKSxzZXRUaW1lb3V0KHIsNTAw'@; put 'KSxzZXRUaW1lb3V0KHIsMWUzKSxzZXRUaW1lb3V0KHIsMmUzKSx0aGlzLmFyaWFDaGVja0ludGVydmFsfHwodGhpcy5hcmlhQ2hlY2tJbnRlcnZhbD1zZXRJbnRlcnZhbChyLDNlMykpLHRoaXMuYXJpYU9ic2VydmVyfHwodGhpcy5hcmlhT2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIo'@; put 'aT0+e2xldCBvPSExO2kuZm9yRWFjaChhPT57ImF0dHJpYnV0ZXMiPT09YS50eXBlJiYoInJvbGUiPT09YS5hdHRyaWJ1dGVOYW1lfHwiYXJpYS1yb3djb3VudCI9PT1hLmF0dHJpYnV0ZU5hbWUpJiYobz0hMCksImNoaWxkTGlzdCI9PT1hLnR5cGUmJmEuYWRkZWROb2Rlcy5mb3JFYWNoKGw9'@; put 'PntpZihsLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe2NvbnN0IHU9bDsodS5oYXNBdHRyaWJ1dGUoInJvbGUiKXx8dS5oYXNBdHRyaWJ1dGUoImFyaWEtcm93Y291bnQiKSkmJihvPSEwKX19KX0pLG8mJnNldFRpbWVvdXQociw1MCl9KSx0aGlzLmFyaWFPYnNlcnZlci5vYnNlcnZl'@; put 'KGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwLGF0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsicm9sZSIsImFyaWEtcm93Y291bnQiLCJhcmlhLWNvbGNvdW50IiwiYXJpYS1tdWx0aXNlbGVjdGFibGUiXX0pKX1uZ0FmdGVyQ29udGVudEluaXQoKXt2YXIgcj10'@; put 'aGlzO3JldHVybiBDcihmdW5jdGlvbiooKXtyLmhvdFRhYmxlLmRhdGEubGVuZ3RoPjAmJihyLnRhYmxlRmxhZz0hMCksci5fcXVlcnk9ci5zYXNTdG9yZVNlcnZpY2UucXVlcnkuc3Vic2NyaWJlKGk9PntyLndoZXJlU3RyaW5nPWkuc3RyaW5nLHIuY2xhdXNlcz1pLm9iaixyLmxpYmRzPWku'@; put 'bGliZHN9KSx0eXBlb2Ygci5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtPCJ1Ij9yLmxvYWRXaXRoUGFyYW1ldGVycygpOnIubG9hZFdpdGhvdXRQYXJhbWV0ZXJzKCl9KSgpfXN0YXRpYyNlPW49KCk9Pih0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihpKXtyZXR1cm4gbmV3KGl8fGUpKHpl'@; put 'KEYyKSx6ZShCcCksemUoaWMpLHplKHZjKSx6ZShwMSksemUodWQpLHplKHgzKSx6ZShmaCksemUoVjApLHplKFVsKSl9LHRoaXMuXHUwMjc1Y21wPVByKHt0eXBlOmUsc2VsZWN0b3JzOltbImFwcC12aWV3ZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGksbyl7aWYoMSZpJiYoV28oVG1uLDUp'@; put 'LFdvKHhtbiw1KSxXbyhMNyw1KSxXbyhBbW4sNSkpLDImaSl7bGV0IGE7Y2koYT11aSgpKSYmKG8uaG90SW5zdGFuY2VWaWV3Q2hpbGQ9YS5maXJzdCksY2koYT11aSgpKSYmKG8uaW5mb0Jhcj1hLmZpcnN0KSxjaShhPXVpKCkpJiYoby5ob3RUYWJsZUNvbXBvbmVudD1hLmZpcnN0KSxjaShh'@; put 'PXVpKCkpJiYoby5xdWVyeUZpbHRlckNvbXBMaXN0PWEpfX0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLHN0YW5kYWxvbmU6ITEsZGVjbHM6OTYsdmFyczoyOSxjb25zdHM6W1siY2xpQ29tbWFuZElucHV0IiwiIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNlYXJj'@; put 'aFRyZWVJbnB1dCIsIiJdLFsicXVlcnlGaWx0ZXIiLCIiXSxbInNlYXJjaEVsIiwiIl0sWyJpbmZvQmFyIiwiIl0sWyJob3RJbnN0YW5jZSIsIiJdLFszLCJzY3JvbGxlZFRvQm90dG9tIl0sWzEsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ3'@; put 'LTEwMCIsInRleHQtY2VudGVyIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJtb2RhbCIsInotaW5kZXgtaGlnaGVzdCJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1iYWNrZHJvcCJdLFszLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUi'@; put 'XSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiY2xyLWNvbC1tZC02Il0sWzEsImRvd25sb2FkLXNlbGVjdCJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJd'@; put 'LFsidmFsdWUiLCJDU1YiXSxbInZhbHVlIiwiU0FTIl0sWyJ2YWx1ZSIsIlBHU1FMX0RETCJdLFsidmFsdWUiLCJTQVNfRERMIl0sWyJ2YWx1ZSIsIlRTUUxfRERMIl0sWyJ2YWx1ZSIsIkVYQ0VMIl0sWyJ2YWx1ZSIsIk1BUktET1dOIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1'@; put 'dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbGljayIsImlkIl0sWzEsIm1vZGFsLWJvZHkiLCJ3ZWItcXVlcnkiXSxbMSwicm93Il0sWzEsImNs'@; put 'ci1jb2wtbGctMTIiLCJjbHItY29sLW1kLTEyIiwiY2xyLWNvbC1zbS0xMiIsImNsci1jb2wteHMtMTIiXSxbMSwiY2FyZCIsIm5vLWJvcmRlcnMiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiJdLFsxLCJidG4tZ3JvdXAiXSxbMSwicmFkaW8i'@; put 'LCJidG4iLDMsImNsaWNrIl0sWyJ0eXBlIiwicmFkaW8iLCJuYW1lIiwiYnRuLWdyb3VwLWRlbW8tcmFkaW9zIiwzLCJjaGVja2VkIl0sWzEsImNhcmQtYmxvY2siLCJ3ZWItcXVlcnktd3JhcHBlciIsIndvcmQtYnJlYWstYWxsIl0sWyJjbHJUZXh0YXJlYSIsIiIsInJvd3MiLCI0IiwiY29s'@; put 'cyIsIjUwIiwidHlwZSIsInRleHQiLCJyZWFkb25seSIsIiIsMSwid2ViLXF1ZXJ5LXRleHQiLDMsImZvY3VzIiwidmFsdWUiXSxbMSwiY2FyZC1mb290ZXIiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMsImNsaWNrIiwibmd4Q2xpcGJvYXJkIl0sWyJhcmlhLW1vZGFsIiwidHJ1'@; put 'ZSIsMSwiZmlsdGVyLW1vZGFsIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24i'@; put 'LDEsImJ0biIsImJ0bi1vdXRsaW5lIiwiYnRuLXNtIiwzLCJjbGljayJdLFsidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiJdLFsx'@; put 'LCJtb2RhbC10aXRsZSJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbMSwibG9hZGluZ1NwaW5uZXIiXSxbMSwiY2FyZCIsIm5vLWJvcmRlcnMiLCJoLTEw'@; put 'MCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFszLCJvcGVuQ2hhbmdlIiwicm93Q2xpY2tlZCIsIm9wZW4iLCJkc21ldGEiLCJ2ZXJzaW9ucyJdLFszLCJ2aWV3Ym94TW9kYWxDaGFuZ2UiLCJ2aWV3Ym94TW9kYWwiXSxbImNsck1lZGl1bSIsIiJdLFsxLCJ0cmVlLXNlYXJjaC13cmFw'@; put 'cGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkxpYnJhcmllcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hh'@; put 'cGUiLCJzZWFyY2giXSxbImFyaWEtbGFiZWwiLCJDbGVhciBzZWFyY2giLCJzaGFwZSIsInRpbWVzIl0sWyJhcmlhLWxhYmVsIiwiQ2xlYXIgc2VhcmNoIiwic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIl0sWzMs'@; put 'ImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsInJhY2stc2VydmVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5w'@; put 'dXQiLCIiLCJwbGFjZWhvbGRlciIsIlRhYmxlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwiaWQiLCJuZ01vZGVsIl0sWzQsIm5nVmFyIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsMSwiY2xyLXRyZWVub2RlLWxpbmsi'@; put 'LDMsImRjLWxvY2tlZC1jb250cm9sIiwiYWN0aXZlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUi'@; put 'LCJib2x0Il0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsInRhYmxlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl0sWyJyb2xlIiwiZGlhbG9nIiwiYXJpYS1oaWRkZW4i'@; put 'LCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciXSxbMSwibW9kYWwtY29udGVudCJdLFsxLCJtb2RhbC1oZWFkZXIiXSxbImFyaWEtbGFiZWwiLCJDbG9zZSIsInR5cGUiLCJidXR0b24iLDEsImNsb3NlIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsImNsb3NlIl0sWyJ0eXBlIiwiYnV0'@; put 'dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbMSwic3Bpbm5lciJdLFsxLCJtdC0xMCJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIl0sWzEsImhlYWRlci1yb3ciLCJjbHItcm93IiwianVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItanVzdGlmeS1jb250'@; put 'ZW50LWNlbnRlciIsInctMTAwIiwibS0wIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWzEsImNhcmQtYmxvY2siLCJub0RhdGEiXSxbMSwiY2xyLWZsZXgtMSJdLFsxLCJtdC0yLWkiLCJ3LTEwMCIsInRleHQtY2VudGVyIl0sWzEsImZvcm0tYmxvY2siLCJ0YWJsZS1zZWFyY2gtd3JhcHBl'@; put 'ciIsInN3IiwiY2xyLWNvbC1tZCJdLFsiY2xyRm9ybSIsIiIsMSwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsImlucHV0LXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJTZWFyY2giLCJuYW1lIiwic2VhcmNoLWlucHV0IiwzLCJrZXl1cC5lbnRlciIs'@; put 'InR5cGUiXSxbImFyaWEtbGFiZWwiLCJTZWFyY2giLCJzaGFwZSIsInNlYXJjaCJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwibmFtZSIsIm51bWVyaWNfY2hlY2siLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVs'@; put 'Il0sWzEsInRpdGxlLWNvbCIsImNsci1jb2wtYXV0byIsImNsci1mbGV4LWNvbHVtbiIsImNsci1mbGV4LXNtLXJvdyJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIiwxLCJjbHItZmxleC1jb2x1bW4iLCJkLWZsZXgiLCJjbHItZmxleC1zbS1yb3ciLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwi'@; put 'Y2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJhcmlhLWxhYmVsIiwiVmlldyBkYXRhc2V0IG1ldGEgaW5mbyIsInNoYXBlIiwiaW5mby1jaXJjbGUiLCJzaXplIiwiMjQiLDEs'@; put 'ImlzLWhpZ2hsaWdodCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJib2x0IiwxLCJjb2xvci15ZWxsb3ciLCJtci01Il0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNp'@; put 'emUiLCJsZyJdLFsxLCJvcHRpb25zLWNvbCIsImNsci1jb2wtbWQiXSxbMSwib3B0aW9ucy1kcm9wZG93biIsMywiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siXSxbMSwiY2xyLWNvbC1tZC0xMiIsImluZm9CYXIiLDMsImV4cGFuZGVkIl0sWyJhcmlhLWxhYmVsIiwiU2VhcmNoIiwic2hhcGUi'@; put 'LCJzZWFyY2giLDMsImNsaWNrIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0IiwiY2xyU2l6ZSIsImxnIiw0LCJjbHJJZk9wZW4iXSxbImFyaWEtbGFiZWwiLCJSZWxvYWQgZGF0YSIsInNoYXBlIiwicmVmcmVzaCIsMSwicmVmcmVzaC10YWJsZSIsMywiY2xpY2siXSxbInR5cGUiLCJi'@; put 'dXR0b24iLCJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwiZmlsdGVyU2lkZSJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjb2ciLCJzaXplIiwiMTUiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0Iiw0LCJjbHJJZk9w'@; put 'ZW4iXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0Il0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsInZpZXctY2FyZHMiXSxbImNsckRyb3Bkb3duSXRlbSIsIiJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUi'@; put 'LCJmaWx0ZXIiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiZG93bmxvYWQiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiZG93bmxvYWQtY2xvdWQiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwicGVuY2lsIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJz'@; put 'aGFwZSIsInN3aXRjaCJdLFsxLCJjbHItY29sLW1kLTEyIiwiaW5mb0JhciJdLFsxLCJpbmZvQmFyLXRleHQiXSxbInR5cGUiLCJidXR0b24iLDEsImluZm9CYXItdG9nZ2xlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJpbmZvQmFyLXRvZ2dsZSIsMywiY2xpY2siXSxbImFyaWEtaGlkZGVuIiwi'@; put 'dHJ1ZSIsInNoYXBlIiwiY2FyZXQgZG93biJdLFsic3JjIiwiL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9pbWFnZXMvc2VsZWN0LWxpYnJhcnkucG5nIiwiYWx0Iiwic2VsZWN0IGEgbGlicmFyeSBpY29uIiwxLCJzZWxlY3Qt'@; put 'dGFibGUtaWNvbiJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIiwxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiLCJtdC0xMCJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImJvcmRlci1ib3R0b20tZGl2aWRlciIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwidy0xMDAiLCJtLTAiXSxb'@; put 'MSwidGl0bGUtY29sIiwiY2xyLWNvbC1hdXRvIiwibXQtMTUiLCJtYi0xNSJdLFsiYXJpYS1sYWJlbCIsIlJlbG9hZCBsaWJyYXJ5IGluZm8iLCJzaGFwZSIsInJlZnJlc2giLDEsInJlZnJlc2gtdGFibGUiLDMsImNsaWNrIl0sWzEsInRleHQtY2VudGVyIiwibXQtMTAiXSxbMSwibm8tdGFi'@; put 'bGUtc2VsZWN0ZWQtaW5mbyIsInBvaW50ZXItZXZlbnRzLW5vbmUiXSxbMSwibGliaW5mbyIsIm0tMCIsImNsci1yb3ciXSxbInNyYyIsIi9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvaW1hZ2VzL3NlbGVjdC10YWJsZS5wbmci'@; put 'LCJhbHQiLCJzZWxlY3QgdGFibGUgaWNvbiIsMSwic2VsZWN0LXRhYmxlLWljb24iXSxbMSwidGV4dC1jZW50ZXIiLCJtLTAiLCJ3LTEwMCJdLFsiYXJpYS1sYWJlbCIsIlJlbG9hZCBsaWJyYXJ5IGluZm8iLCJzaGFwZSIsInJlZnJlc2giLDEsInJlZnJlc2gtdGFibGUiLCJtLTAiLDMsImNs'@; put 'aWNrIl0sWzEsIm0tMCJdLFsxLCJtLTAiLCJmb250LWJvbGQiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwid2FybmluZy1zdGFuZGFyZCIsInNpemUiLCI2MCIsMSwiaXMtaW5mbyJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXSxbMSwiaG90LXdyYXBwZXIiLCJjbHIt'@; put 'ZmxleC0xIl0sWyJpZCIsImhvdFRhYmxlIiwxLCJ2aWV3LWhvdCIsMywiZGF0YSIsInNldHRpbmdzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGksbyl7aWYoMSZpKXtjb25zdCBhPXduKCk7SigwLCJhcHAtc2lkZWJhciIsNyksd3QoInNjcm9sbGVkVG9Cb3R0b20iLGZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IFllKGEpLFhlKG8ubG9hZE1vcmVMaWJyYXJpZXMoKSl9KSx2dCgxLFJtbiwyLDAsImRpdiIsOCksSigyLCJjbHItdHJlZSIpLHZ0KDMsTG1uLDYsMywiY2xyLXRyZWUtbm9kZSIsOSksX28oNCxZbW4sMSwxLG51bGwsbnVsbCxDbyksdGUoKSx2dCg2LFptbiwzLDAsImRpdiIsMTApLHRlKCks'@; put 'Sig3LCJkaXYiLDExKSx2dCg4LEdtbiwxNCwwLCJkaXYiLDEyKSx2dCg5LCRtbiwxLDAsImRpdiIsMTMpLEooMTAsImNsci1tb2RhbCIsMTQpLGhpKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxmaShvLm9wZW5Eb3dubG9hZCx1KXx8KG8ub3BlbkRvd25s'@; put 'b2FkPXUpLFhlKHUpfSksSigxMSwiaDMiLDE1KSxTZSgxMiwiRG93bmxvYWQiKSx0ZSgpLEooMTMsImRpdiIsMTYpKDE0LCJkaXYiLDE3KSgxNSwiY2xyLXNlbGVjdC1jb250YWluZXIiLDE4KSgxNiwibGFiZWwiKSxTZSgxNywiUGxlYXNlIGNob29zZSBkb3dubG9hZCBmb3JtYXQiKSx0ZSgp'@; put 'LEooMTgsInNlbGVjdCIsMTkpLGhpKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5kb3dubG9hZEZvcm1hdCx1KXx8KG8uZG93bmxvYWRGb3JtYXQ9dSksWGUodSl9KSxKKDE5LCJvcHRpb24iLDIwKSxTZSgyMCwiQ1NWIiksdGUoKSxKKDIxLCJvcHRpb24i'@; put 'LDIxKSxTZSgyMiwiRGF0YWxpbmVzIChjYXJkcyBmaWxlKSIpLHRlKCksSigyMywib3B0aW9uIiwyMiksU2UoMjQsIkRETCAoUEdTUUwgRmxhdm91cikiKSx0ZSgpLEooMjUsIm9wdGlvbiIsMjMpLFNlKDI2LCJEREwgKFNBUyBGbGF2b3VyKSIpLHRlKCksSigyNywib3B0aW9uIiwyNCksU2Uo'@; put 'MjgsIkRETCAoVFNRTCBGbGF2b3VyKSIpLHRlKCksSigyOSwib3B0aW9uIiwyNSksU2UoMzAsIkV4Y2VsICgueGxzeCkiKSx0ZSgpLEooMzEsIm9wdGlvbiIsMjYpLFNlKDMyLCJNYXJrZG93biAoLm1kKSIpLHRlKCkoKSgpKCkoKSxKKDMzLCJkaXYiLDI3KSgzNCwiYnV0dG9uIiwyOCksd3Qo'@; put 'ImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLm9wZW5Eb3dubG9hZD0hMSl9KSxTZSgzNSwiIENhbmNlbCAiKSx0ZSgpLEooMzYsImJ1dHRvbiIsMjkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5kb3dubG9hZEZvcm1hdC5pbmNsdWRlcygiRERM'@; put 'Iik/by5kb3dubG9hZERETCgpOm8uZG93bmxvYWREYXRhKCkpfSksU2UoMzcsIiBPayAiKSx0ZSgpKCkoKSxKKDM4LCJjbHItbW9kYWwiLDE0KSxoaSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby53ZWJRdWVyeSx1KXx8KG8ud2ViUXVlcnk9dSks'@; put 'WGUodSl9KSxKKDM5LCJoMyIsMTUpLFNlKDQwLCIgV2ViIFF1ZXJ5IFVSTCAiKSx0ZSgpLEooNDEsImRpdiIsMzApKDQyLCJkaXYiLDMxKSg0MywiZGl2IiwzMikoNDQsImRpdiIsMzMpKDQ1LCJkaXYiLDM0KSg0Niwic3BhbiIpLFNlKDQ3LCJDb3B5IHRoZSBiZWxvdyBpbnRvIHlvdXIgcHJl'@; put 'ZmVycmVkIGNsaWVudCB0b29sOiIpLHRlKCksSig0OCwiZGl2IiwzNSkoNDksImRpdiIsMzYpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby53ZWJRdWVyeVRhYj0hMCxYZShvLnNob3dXZWJRdWVyeSgpKX0pLEl0KDUwLCJpbnB1dCIsMzcpLEooNTEsImxhYmVsIiksU2Uo'@; put 'NTIsIlRBQiIpLHRlKCkoKSxKKDUzLCJkaXYiLDM2KSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEpLG8ud2ViUXVlcnlUYWI9ITEsWGUoby5zaG93V2ViUXVlcnkoKSl9KSxJdCg1NCwiaW5wdXQiLDM3KSxKKDU1LCJsYWJlbCIpLFNlKDU2LCJDU1YiKSx0ZSgpKCkoKSgpLEoo'@; put 'NTcsImRpdiIsMzgpKDU4LCJ0ZXh0YXJlYSIsMzksMCksd3QoImZvY3VzIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksWGUoby5vbkNsaUNvbW1hbmRGb2N1cyh1KSl9KSxTZSg2MCwiICAgICAgICAgICAgICAiKSx0ZSgpKCksSig2MSwiZGl2Iiw0MCkoNjIsImJ1dHRvbiIsNDEpLHd0KCJj'@; put 'bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5jb3B5VG9DbGlwKCkpfSksU2UoNjMsIiBjb3B5IHRvIGNsaXBib2FyZCAiKSx0ZSgpKCkoKSgpKCkoKSxKKDY0LCJkaXYiLDI3KSg2NSwiYnV0dG9uIiwyOCksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShv'@; put 'LndlYlF1ZXJ5PSExKX0pLFNlKDY2LCIgY2xvc2UgIiksdGUoKSgpKCksSig2NywiY2xyLW1vZGFsIiw0MiksaGkoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8uZmlsdGVyLHUpfHwoby5maWx0ZXI9dSksWGUodSl9KSxKKDY4LCJoMyIsMTUpLFNl'@; put 'KDY5LCIgRmlsdGVyIGZvciB0YWJsZToiKSxKKDcwLCJzcGFuIiksU2UoNzEpLHRlKCkoKSxKKDcyLCJkaXYiLDE2KSx2dCg3MyxxbW4sMiwwLCJhcHAtcXVlcnkiKSx0ZSgpLEooNzQsImRpdiIsMjcpKDc1LCJidXR0b24iLDQzKSx3dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEp'@; put 'LFhlKG8ucmVzZXRGaWx0ZXIoKSl9KSxTZSg3NiwiIHJlc2V0IGZpbHRlciAiKSx0ZSgpLEooNzcsImJ1dHRvbiIsNDQpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksby5maWx0ZXI9ITEsWGUoby5yZW1vdmVRdWVyeSgpKX0pLFNlKDc4LCIgQ2FuY2VsICIpLHRlKCksSig3'@; put 'OSwiYnV0dG9uIiw0NSksd3QoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBZZShhKSxYZShvLnNlbmRDbGF1c2UoKSl9KSxTZSg4MCwiIE9rICIpLHRlKCkoKSgpLEooODEsImNsci1tb2RhbCIsNDYpLGhpKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHUpe3JldHVybiBZZShhKSxm'@; put 'aShvLnF1ZXJ5RXJyLHUpfHwoby5xdWVyeUVycj11KSxYZSh1KX0pLEooODIsImgzIiw0NyksU2UoODMsIkVycm9yIiksdGUoKSxKKDg0LCJkaXYiLDE2KSg4NSwicCIpLFNlKDg2KSx0ZSgpKCksSig4NywiZGl2IiwyNykoODgsImJ1dHRvbiIsNDgpLHd0KCJjbGljayIsZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gWWUoYSksWGUoby5xdWVyeUVycj0hMSl9KSxTZSg4OSwiIENhbmNlbCAiKSx0ZSgpLEooOTAsImJ1dHRvbiIsNDkpLHd0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gWWUoYSksWGUoby5xdWVyeUVycj0hMSl9KSxTZSg5MSwiIE9rICIpLHRlKCkoKSgpLHZ0KDkyLEttbiw2LDAs'@; put 'ImRpdiIsNTApLHZ0KDkzLE80biw4LDYsImRpdiIsNTEpLHRlKCksSig5NCwiYXBwLWRhdGFzZXQtaW5mbyIsNTIpLGhpKCJvcGVuQ2hhbmdlIixmdW5jdGlvbih1KXtyZXR1cm4gWWUoYSksZmkoby5kYXRhc2V0SW5mbyx1KXx8KG8uZGF0YXNldEluZm89dSksWGUodSl9KSx3dCgicm93Q2xp'@; put 'Y2tlZCIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLFhlKG8uZGF0YXNldEluZm9Nb2RhbFJvd0NsaWNrZWQodSkpfSksdGUoKSxKKDk1LCJhcHAtdmlld2JveGVzIiw1MyksaGkoInZpZXdib3hNb2RhbENoYW5nZSIsZnVuY3Rpb24odSl7cmV0dXJuIFllKGEpLGZpKG8udmlld2JveE9wZW4s'@; put 'dSl8fChvLnZpZXdib3hPcGVuPXUpLFhlKHUpfSksdGUoKX1pZigyJmkpe2NvbnN0IGE9b28oNTkpO2llKCksX3Qoby5saWJyYXJpZXNMb2FkaW5nPzE6LTEpLGllKDIpLF90KG8ubGlicmFyaWVzPzM6LTEpLGllKCkseW8oby5saWJyYXJpZXMpLGllKDIpLF90KG8ubGlicmFyaWVzUGFnaW5n'@; put 'PzY6LTEpLGllKDIpLF90KG8ubnVsbFZhcmlhYmxlcz84Oi0xKSxpZSgpLF90KG8ubnVsbFZhcmlhYmxlcz85Oi0xKSxpZSgpLGRpKCJjbHJNb2RhbE9wZW4iLG8ub3BlbkRvd25sb2FkKSxydCgiY2xyTW9kYWxTaXplIiwibWQiKSxpZSg4KSxkaSgibmdNb2RlbCIsby5kb3dubG9hZEZvcm1h'@; put 'dCksaWUoMTgpLHJ0KCJpZCIsby50YWJsZVRpdGxlKSxpZSgyKSxkaSgiY2xyTW9kYWxPcGVuIixvLndlYlF1ZXJ5KSxydCgiY2xyTW9kYWxTaXplIiwibGciKSxpZSgxMikscnQoImNoZWNrZWQiLG8ud2ViUXVlcnlUYWIpLGllKDQpLHJ0KCJjaGVja2VkIiwhby53ZWJRdWVyeVRhYiksaWUo'@; put 'NCkscnQoInZhbHVlIixvLndlYlF1ZXJ5VGV4dCksaWUoNCkscnQoIm5neENsaXBib2FyZCIsYSksaWUoNSksZGkoImNsck1vZGFsT3BlbiIsby5maWx0ZXIpLHJ0KCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksaWUoNCksU3IoIiAiLG8ubGliVGFiLCIgIiks'@; put 'aWUoMiksX3Qoby5maWx0ZXI/NzM6LTEpLGllKDYpLHJ0KCJjbHJMb2FkaW5nIixvLnN1Ym1pdExvYWRpbmcpLGllKDIpLGRpKCJjbHJNb2RhbE9wZW4iLG8ucXVlcnlFcnIpLGllKDUpLHByKG8ucXVlcnlFcnJNZXNzYWdlKSxpZSg2KSxfdChvLmxvYWRpbmdUYWJsZVZpZXc/OTI6LTEpLGll'@; put 'KCksX3Qoby5sb2FkaW5nVGFibGVWaWV3Py0xOjkzKSxpZSgpLGRpKCJvcGVuIixvLmRhdGFzZXRJbmZvKSxydCgiZHNtZXRhIixvLmRzbWV0YSkoInZlcnNpb25zIixvLnZlcnNpb25zKSxpZSgpLGRpKCJ2aWV3Ym94TW9kYWwiLG8udmlld2JveE9wZW4pfX0sZGVwZW5kZW5jaWVzOltJWmUs'@; put 'Q21uLExiLFhnLFFnLGx1LEgyLEtnLG9jLEliLFhsLGQ0LFBwLE8zLGQ3LGN1LHhkLG1oLCQwLExwLGltLGVsLG5NZSxVMixFdixGZixQZixxYixDTSxyVyxvNyxqYixVYixwTSx3dixTdixDdix6MixMNywkNixPWmUsX1csem1lLG1BLEc2LEZaZSxNbW5dLGVuY2Fwc3VsYXRpb246Mn0pKX1y'@; put 'ZXR1cm4gbigpLGV9KSgpO2NvbnN0IE40bj1be3BhdGg6IiIsY29tcG9uZW50OmZnbixjaGlsZHJlbjpbe3BhdGg6IiIscGF0aE1hdGNoOiJmdWxsIixyZWRpcmVjdFRvOiJkYXRhIn0se3BhdGg6ImRhdGEiLGNvbXBvbmVudDplWH0se3BhdGg6ImRhdGEiLGNvbXBvbmVudDplWH0se3BhdGg6'@; put 'ImRhdGEvOmxpYk1lbS86ZmlsdGVySWQiLGNvbXBvbmVudDplWH0se3BhdGg6ImRhdGEvOmxpYk1lbSIsY29tcG9uZW50OmVYfSx7cGF0aDoibGluZWFnZSIsY29tcG9uZW50OkpLfSx7cGF0aDoibGluZWFnZS86dGFibGVpZC86ZGlyZWN0aW9uIixjb21wb25lbnQ6Skt9LHtwYXRoOiJsaW5l'@; put 'YWdlL2NvbHVtbi86Y29sdXJpLzpkaXJlY3Rpb24iLGNvbXBvbmVudDpKS30se3BhdGg6ImxpbmVhZ2UvY29sdW1uLzpjb2x1cmkvOmRpcmVjdGlvbi86cmVsb2FkIixjb21wb25lbnQ6Skt9LHtwYXRoOiJ2aXlhLWFwaS1leHBsb3JlciIsY29tcG9uZW50Onltbn0se3BhdGg6Im1ldGFkYXRh'@; put 'Iixjb21wb25lbnQ6VjRlfSx7cGF0aDoibWV0YWRhdGEvb2JqZWN0LzpvYmplY3RJRCIsY29tcG9uZW50OlY0ZX0se3BhdGg6Im1ldGFkYXRhL29iamVjdC86b2JqZWN0SUQvOm9iamVjdE5hbWUiLGNvbXBvbmVudDpWNGV9LHtwYXRoOiJ1c2VybmF2Iixjb21wb25lbnQ6aGduLGNoaWxkcmVu'@; put 'Olt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86Imdyb3VwcyJ9LHtwYXRoOiJ1c2VycyIsY29tcG9uZW50OkEkZX0se3BhdGg6InVzZXJzLzp1cmkiLGNvbXBvbmVudDpBJGV9LHtwYXRoOiJncm91cHMiLGNvbXBvbmVudDppR2V9LHtwYXRoOiJncm91cHMvOnVyaSIsY29t'@; put 'cG9uZW50OmlHZX0se3BhdGg6InJvbGVzIixjb21wb25lbnQ6eCRlfSx7cGF0aDoicm9sZXMvOnVyaSIsY29tcG9uZW50OngkZX1dfV19XTtsZXQgRjRuPSgoKT0+e3ZhciBuO2NsYXNzIGV7c3RhdGljI2U9bj0oKT0+KHRoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcoaXx8'@; put 'ZSl9LHRoaXMuXHUwMjc1bW9kPUdpKHt0eXBlOmV9KSx0aGlzLlx1MDI3NWluaj1taSh7aW1wb3J0czpbV2QuZm9yQ2hpbGQoTjRuKSxXZF19KSl9cmV0dXJuIG4oKSxlfSkoKSxQNG49KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMjZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24o'@; put 'aSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZX0pLHRoaXMuXHUwMjc1aW5qPW1pKHtpbXBvcnRzOltIWmUscW8sRjRuLFNtbixoZCxxMCxMdyxMQywkeCxRRixZbWUsRW1dfSkpfXJldHVybiBuKCksZX0pKCk7Y29uc3QgVjRuPVdkLmZvclJvb3QoW3twYXRo'@; put 'OiIiLHJlZGlyZWN0VG86ImhvbWUiLHBhdGhNYXRjaDoiZnVsbCJ9LHtwYXRoOiJ2aWV3Iixsb2FkQ2hpbGRyZW46KCk9PlA0bn0se3BhdGg6InJldmlldyIsY29tcG9uZW50OmtkbixjaGlsZHJlbjpbe3BhdGg6IiIscGF0aE1hdGNoOiJmdWxsIixyZWRpcmVjdFRvOiJ0b2FwcHJvdmUifSx7'@; put 'cGF0aDoiIixsb2FkQ2hpbGRyZW46KCk9PkFkbn1dfSx7cGF0aDoibGljZW5zaW5nIixsb2FkQ2hpbGRyZW46KCk9Pk5jbn0se3BhdGg6ImhvbWUiLGxvYWRDaGlsZHJlbjooKT0+UGxufSx7cGF0aDoiZWRpdG9yIixsb2FkQ2hpbGRyZW46KCk9Pnhhbn0se3BhdGg6InN0YWdlIixsb2FkQ2hp'@; put 'bGRyZW46KCk9PlZkbn0se3BhdGg6InN5c3RlbSIsbG9hZENoaWxkcmVuOigpPT5KZG59LHtwYXRoOiJkZXBsb3kiLGxvYWRDaGlsZHJlbjooKT0+SkV0fSx7cGF0aDoiKioiLGNvbXBvbmVudDp4U3R9XSx7dXNlSGFzaDohMH0pO2xldCBCNG49KCgpPT57dmFyIG47Y2xhc3MgZXtzdGF0aWMj'@; put 'ZT1uPSgpPT4odGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyhpfHxlKX0sdGhpcy5cdTAyNzVtb2Q9R2koe3R5cGU6ZSxib290c3RyYXA6W0R3dF19KSx0aGlzLlx1MDI3NWluaj1taSh7cHJvdmlkZXJzOlt1eixCcCwkbWUsSlUsa2h0KFRiKHB2LkxlZ2FjeUludGVyY2Vw'@; put 'dG9ycyxbe3Byb3ZpZGU6SHdlLHVzZUZhY3Rvcnk6dmh0fSx7cHJvdmlkZTpxSSx1c2VFeGlzdGluZzpId2UsbXVsdGk6ITB9XSkpXSxpbXBvcnRzOltUU3QsTV9lLGhkLHhndCxWNG4sJHgscTAsTEMsUUYsRW0sWGduXX0pKX1yZXR1cm4gbigpLGV9KSgpO09hdCgpLmJvb3RzdHJhcE1vZHVs'@; put 'ZShCNG4pfSwzNzM0KG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyl7dmFyIF9hc3luY1RvR2VuZXJhdG9yPV9fd2VicGFja19yZXF1aXJlX18oMjkyOTMpLmRlZmF1bHQsX3dyYXBBc3luY0dlbmVyYXRvcj1fX3dlYnBhY2tfcmVxdWlyZV9fKDQy'@; put 'OTU4KS5kZWZhdWx0LF9hd2FpdEFzeW5jR2VuZXJhdG9yPV9fd2VicGFja19yZXF1aXJlX18oNTMzNDQpLmRlZmF1bHQsX2FzeW5jR2VuZXJhdG9yRGVsZWdhdGU9X193ZWJwYWNrX3JlcXVpcmVfXyg5MzUxMykuZGVmYXVsdCxfYXN5bmNJdGVyYXRvcj1fX3dlYnBhY2tfcmVxdWlyZV9fKDgy'@; put 'ODgxKS5kZWZhdWx0LGg7c2VsZixoPSgpPT4oKCk9Pnt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz17NDk3OTIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0ODI4NykuQnVmZmVyO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLkNzdkZvcm1h'@; put 'dHRlclN0cmVhbT12b2lkIDA7Y29uc3QgYz1oKDg4MzEwKSxzPWgoMTc2OTMpO2ouQ3N2Rm9ybWF0dGVyU3RyZWFtPWNsYXNzIEEgZXh0ZW5kcyBjLlRyYW5zZm9ybXtjb25zdHJ1Y3RvcihDKXtzdXBlcih7d3JpdGFibGVPYmplY3RNb2RlOkMub2JqZWN0TW9kZX0pLHRoaXMuaGFzV3JpdHRl'@; put 'bkJPTT0hMSx0aGlzLmZvcm1hdHRlck9wdGlvbnM9Qyx0aGlzLnJvd0Zvcm1hdHRlcj1uZXcgcy5Sb3dGb3JtYXR0ZXIoQyksdGhpcy5oYXNXcml0dGVuQk9NPSFDLndyaXRlQk9NfXRyYW5zZm9ybShDKXtyZXR1cm4gdGhpcy5yb3dGb3JtYXR0ZXIucm93VHJhbnNmb3JtPUMsdGhpc31fdHJh'@; put 'bnNmb3JtKEMsdyxTKXtsZXQgTD0hMTt0cnl7dGhpcy5oYXNXcml0dGVuQk9NfHwodGhpcy5wdXNoKHRoaXMuZm9ybWF0dGVyT3B0aW9ucy5CT00pLHRoaXMuaGFzV3JpdHRlbkJPTT0hMCksdGhpcy5yb3dGb3JtYXR0ZXIuZm9ybWF0KEMsKFIseCk9PlI/KEw9ITAsUyhSKSk6KHgmJnguZm9y'@; put 'RWFjaChVPT57dGhpcy5wdXNoKHkuZnJvbShVLCJ1dGY4IikpfSksTD0hMCxTKCkpKX1jYXRjaChSKXtpZihMKXRocm93IFI7UyhSKX19X2ZsdXNoKEMpe3RoaXMucm93Rm9ybWF0dGVyLmZpbmlzaCgodyxTKT0+dz9DKHcpOihTJiZTLmZvckVhY2goTD0+e3RoaXMucHVzaCh5LmZyb20oTCwi'@; put 'dXRmOCIpKX0pLEMoKSkpfX19LDY4NTAyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5Gb3JtYXR0ZXJPcHRpb25zPXZvaWQgMCxqLkZvcm1hdHRlck9wdGlvbnM9Y2xhc3MgaHtjb25zdHJ1Y3RvcihjPXt9KXt2'@; put 'YXIgczt0aGlzLm9iamVjdE1vZGU9ITAsdGhpcy5kZWxpbWl0ZXI9IiwiLHRoaXMucm93RGVsaW1pdGVyPSJcbiIsdGhpcy5xdW90ZT0nIicsdGhpcy5lc2NhcGU9dGhpcy5xdW90ZSx0aGlzLnF1b3RlQ29sdW1ucz0hMSx0aGlzLnF1b3RlSGVhZGVycz10aGlzLnF1b3RlQ29sdW1ucyx0aGlz'@; put 'LmhlYWRlcnM9bnVsbCx0aGlzLmluY2x1ZGVFbmRSb3dEZWxpbWl0ZXI9ITEsdGhpcy53cml0ZUJPTT0hMSx0aGlzLkJPTT0iXHVmZWZmIix0aGlzLmFsd2F5c1dyaXRlSGVhZGVycz0hMSxPYmplY3QuYXNzaWduKHRoaXMsY3x8e30pLHR5cGVvZiBjPy5xdW90ZUhlYWRlcnM+InUiJiYodGhp'@; put 'cy5xdW90ZUhlYWRlcnM9dGhpcy5xdW90ZUNvbHVtbnMpLCEwPT09Yz8ucXVvdGU/dGhpcy5xdW90ZT0nIic6ITE9PT1jPy5xdW90ZSYmKHRoaXMucXVvdGU9IiIpLCJzdHJpbmciIT10eXBlb2YgYz8uZXNjYXBlJiYodGhpcy5lc2NhcGU9dGhpcy5xdW90ZSksdGhpcy5zaG91bGRXcml0ZUhl'@; put 'YWRlcnM9ISF0aGlzLmhlYWRlcnMmJihudWxsPT09KHM9Yy53cml0ZUhlYWRlcnMpfHx2b2lkIDA9PT1zfHxzKSx0aGlzLmhlYWRlcnM9QXJyYXkuaXNBcnJheSh0aGlzLmhlYWRlcnMpP3RoaXMuaGVhZGVyczpudWxsLHRoaXMuZXNjYXBlZFF1b3RlPWAke3RoaXMuZXNjYXBlfSR7dGhpcy5x'@; put 'dW90ZX1gfX19LDY4MDkxKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihDKXtyZXR1cm4gQyYmQy5fX2VzTW9kdWxlP0M6e2RlZmF1bHQ6Q319O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6'@; put 'ITB9KSxqLkZpZWxkRm9ybWF0dGVyPXZvaWQgMDtjb25zdCBjPXkoaCg4NzkxNCkpLHM9eShoKDc0NzMzKSksQT15KGgoMTA5MTIpKTtqLkZpZWxkRm9ybWF0dGVyPWNsYXNzIHZ7Y29uc3RydWN0b3Iodyl7dGhpcy5faGVhZGVycz1udWxsLHRoaXMuZm9ybWF0dGVyT3B0aW9ucz13LG51bGwh'@; put 'PT13LmhlYWRlcnMmJih0aGlzLmhlYWRlcnM9dy5oZWFkZXJzKSx0aGlzLlJFUExBQ0VfUkVHRVhQPW5ldyBSZWdFeHAody5xdW90ZSwiZyIpO2NvbnN0IFM9YFske3cuZGVsaW1pdGVyfSR7QS5kZWZhdWx0KHcucm93RGVsaW1pdGVyKX18XHJ8XG5dYDt0aGlzLkVTQ0FQRV9SRUdFWFA9bmV3'@; put 'IFJlZ0V4cChTKX1zZXQgaGVhZGVycyh3KXt0aGlzLl9oZWFkZXJzPXd9c2hvdWxkUXVvdGUodyxTKXtjb25zdCBMPVM/dGhpcy5mb3JtYXR0ZXJPcHRpb25zLnF1b3RlSGVhZGVyczp0aGlzLmZvcm1hdHRlck9wdGlvbnMucXVvdGVDb2x1bW5zO3JldHVybiBjLmRlZmF1bHQoTCk/TDpBcnJh'@; put 'eS5pc0FycmF5KEwpP0xbd106bnVsbCE9PXRoaXMuX2hlYWRlcnMmJkxbdGhpcy5faGVhZGVyc1t3XV19Zm9ybWF0KHcsUyxMKXtjb25zdCBSPWAke3MuZGVmYXVsdCh3KT8iIjp3fWAucmVwbGFjZSgvXDAvZywiIikse2Zvcm1hdHRlck9wdGlvbnM6eH09dGhpcztyZXR1cm4iIiE9PXgucXVv'@; put 'dGUmJi0xIT09Ui5pbmRleE9mKHgucXVvdGUpP3RoaXMucXVvdGVGaWVsZChSLnJlcGxhY2UodGhpcy5SRVBMQUNFX1JFR0VYUCx4LmVzY2FwZWRRdW90ZSkpOi0xIT09Ui5zZWFyY2godGhpcy5FU0NBUEVfUkVHRVhQKXx8dGhpcy5zaG91bGRRdW90ZShTLEwpP3RoaXMucXVvdGVGaWVsZChS'@; put 'KTpSfXF1b3RlRmllbGQodyl7Y29uc3R7cXVvdGU6U309dGhpcy5mb3JtYXR0ZXJPcHRpb25zO3JldHVybmAke1N9JHt3fSR7U31gfX19LDUwODAzKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbih3KXtyZXR1cm4gdyYmdy5f'@; put 'X2VzTW9kdWxlP3c6e2RlZmF1bHQ6d319O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLlJvd0Zvcm1hdHRlcj12b2lkIDA7Y29uc3QgYz15KGgoODU3MTApKSxzPXkoaCg4MTQyKSksQT1oKDY4MDkxKSx2PWgoOTA1NjUpO2NsYXNzIEN7Y29uc3Ry'@; put 'dWN0b3IoUyl7dGhpcy5yb3dDb3VudD0wLHRoaXMuZm9ybWF0dGVyT3B0aW9ucz1TLHRoaXMuZmllbGRGb3JtYXR0ZXI9bmV3IEEuRmllbGRGb3JtYXR0ZXIoUyksdGhpcy5oZWFkZXJzPVMuaGVhZGVycyx0aGlzLnNob3VsZFdyaXRlSGVhZGVycz1TLnNob3VsZFdyaXRlSGVhZGVycyx0aGlz'@; put 'Lmhhc1dyaXR0ZW5IZWFkZXJzPSExLG51bGwhPT10aGlzLmhlYWRlcnMmJih0aGlzLmZpZWxkRm9ybWF0dGVyLmhlYWRlcnM9dGhpcy5oZWFkZXJzKSxTLnRyYW5zZm9ybSYmKHRoaXMucm93VHJhbnNmb3JtPVMudHJhbnNmb3JtKX1zdGF0aWMgaXNSb3dIYXNoQXJyYXkoUyl7cmV0dXJuISFB'@; put 'cnJheS5pc0FycmF5KFMpJiZBcnJheS5pc0FycmF5KFNbMF0pJiYyPT09U1swXS5sZW5ndGh9c3RhdGljIGlzUm93QXJyYXkoUyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoUykmJiF0aGlzLmlzUm93SGFzaEFycmF5KFMpfXN0YXRpYyBnYXRoZXJIZWFkZXJzKFMpe3JldHVybiBDLmlzUm93SGFz'@; put 'aEFycmF5KFMpP1MubWFwKEw9PkxbMF0pOkFycmF5LmlzQXJyYXkoUyk/UzpPYmplY3Qua2V5cyhTKX1zdGF0aWMgY3JlYXRlVHJhbnNmb3JtKFMpe3JldHVybiB2LmlzU3luY1RyYW5zZm9ybShTKT8oTCxSKT0+e2xldCB4PW51bGw7dHJ5e3g9UyhMKX1jYXRjaChVKXtyZXR1cm4gUihVKX1y'@; put 'ZXR1cm4gUihudWxsLHgpfTooTCxSKT0+e1MoTCxSKX19c2V0IHJvd1RyYW5zZm9ybShTKXtpZighYy5kZWZhdWx0KFMpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSB0cmFuc2Zvcm0gc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTt0aGlzLl9yb3dUcmFuc2Zvcm09Qy5jcmVhdGVUcmFuc2Zvcm0o'@; put 'Uyl9Zm9ybWF0KFMsTCl7dGhpcy5jYWxsVHJhbnNmb3JtZXIoUywoUix4KT0+e2lmKFIpcmV0dXJuIEwoUik7aWYoIVMpcmV0dXJuIEwobnVsbCk7Y29uc3QgVT1bXTtpZih4KXtjb25zdHtzaG91bGRGb3JtYXRDb2x1bW5zOkgsaGVhZGVyczpWfT10aGlzLmNoZWNrSGVhZGVycyh4KTtpZih0'@; put 'aGlzLnNob3VsZFdyaXRlSGVhZGVycyYmViYmIXRoaXMuaGFzV3JpdHRlbkhlYWRlcnMmJihVLnB1c2godGhpcy5mb3JtYXRDb2x1bW5zKFYsITApKSx0aGlzLmhhc1dyaXR0ZW5IZWFkZXJzPSEwKSxIKXtjb25zdCBOPXRoaXMuZ2F0aGVyQ29sdW1ucyh4KTtVLnB1c2godGhpcy5mb3JtYXRD'@; put 'b2x1bW5zKE4sITEpKX19cmV0dXJuIEwobnVsbCxVKX0pfWZpbmlzaChTKXtjb25zdCBMPVtdO2lmKHRoaXMuZm9ybWF0dGVyT3B0aW9ucy5hbHdheXNXcml0ZUhlYWRlcnMmJjA9PT10aGlzLnJvd0NvdW50KXtpZighdGhpcy5oZWFkZXJzKXJldHVybiBTKG5ldyBFcnJvcigiYGFsd2F5c1dy'@; put 'aXRlSGVhZGVyc2Agb3B0aW9uIGlzIHNldCB0byB0cnVlIGJ1dCBgaGVhZGVyc2Agb3B0aW9uIG5vdCBwcm92aWRlZC4iKSk7TC5wdXNoKHRoaXMuZm9ybWF0Q29sdW1ucyh0aGlzLmhlYWRlcnMsITApKX1yZXR1cm4gdGhpcy5mb3JtYXR0ZXJPcHRpb25zLmluY2x1ZGVFbmRSb3dEZWxpbWl0'@; put 'ZXImJkwucHVzaCh0aGlzLmZvcm1hdHRlck9wdGlvbnMucm93RGVsaW1pdGVyKSxTKG51bGwsTCl9Y2hlY2tIZWFkZXJzKFMpe2lmKHRoaXMuaGVhZGVycylyZXR1cm57c2hvdWxkRm9ybWF0Q29sdW1uczohMCxoZWFkZXJzOnRoaXMuaGVhZGVyc307Y29uc3QgTD1DLmdhdGhlckhlYWRlcnMo'@; put 'Uyk7cmV0dXJuIHRoaXMuaGVhZGVycz1MLHRoaXMuZmllbGRGb3JtYXR0ZXIuaGVhZGVycz1MLHRoaXMuc2hvdWxkV3JpdGVIZWFkZXJzP3tzaG91bGRGb3JtYXRDb2x1bW5zOiFzLmRlZmF1bHQoTCxTKSxoZWFkZXJzOkx9OntzaG91bGRGb3JtYXRDb2x1bW5zOiEwLGhlYWRlcnM6bnVsbH19'@; put 'Z2F0aGVyQ29sdW1ucyhTKXtpZihudWxsPT09dGhpcy5oZWFkZXJzKXRocm93IG5ldyBFcnJvcigiSGVhZGVycyBpcyBjdXJyZW50bHkgbnVsbCIpO3JldHVybiBBcnJheS5pc0FycmF5KFMpP0MuaXNSb3dIYXNoQXJyYXkoUyk/dGhpcy5oZWFkZXJzLm1hcCgoTCxSKT0+e2NvbnN0IHg9U1tS'@; put 'XTtyZXR1cm4geD94WzFdOiIifSk6Qy5pc1Jvd0FycmF5KFMpJiYhdGhpcy5zaG91bGRXcml0ZUhlYWRlcnM/Uzp0aGlzLmhlYWRlcnMubWFwKChMLFIpPT5TW1JdKTp0aGlzLmhlYWRlcnMubWFwKEw9PlNbTF0pfWNhbGxUcmFuc2Zvcm1lcihTLEwpe3JldHVybiB0aGlzLl9yb3dUcmFuc2Zv'@; put 'cm0/dGhpcy5fcm93VHJhbnNmb3JtKFMsTCk6TChudWxsLFMpfWZvcm1hdENvbHVtbnMoUyxMKXtjb25zdCBSPVMubWFwKChVLEgpPT50aGlzLmZpZWxkRm9ybWF0dGVyLmZvcm1hdChVLEgsTCkpLmpvaW4odGhpcy5mb3JtYXR0ZXJPcHRpb25zLmRlbGltaXRlcikse3Jvd0NvdW50Onh9PXRo'@; put 'aXM7cmV0dXJuIHRoaXMucm93Q291bnQrPTEseD9bdGhpcy5mb3JtYXR0ZXJPcHRpb25zLnJvd0RlbGltaXRlcixSXS5qb2luKCIiKTpSfX1qLlJvd0Zvcm1hdHRlcj1DfSwxNzY5MyhmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtqLlJvd0Zvcm1hdHRlcj12b2lkIDA7dmFyIGM9aCg1MDgwMyk7T2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGosIlJvd0Zvcm1hdHRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuUm93Rm9ybWF0dGVyfX0pLGgoNjgwOTEpfSwxNjk2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDgyODcpLkJ1ZmZlcixjPXRoaXMmJnRoaXMuX19j'@; put 'cmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihILFYsTix6KXt2b2lkIDA9PT16JiYoej1OKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSCx6LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBWW05dfX0pfTpmdW5jdGlvbihILFYsTix6KXt2b2lkIDA9PT16'@; put 'JiYoej1OKSxIW3pdPVZbTl19KSxzPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihILFYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShILCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTpWfSl9OmZ1bmN0aW9uKEgsVil7SC5kZWZhdWx0'@; put 'PVZ9KSxBPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihIKXtpZihIJiZILl9fZXNNb2R1bGUpcmV0dXJuIEg7dmFyIFY9e307aWYobnVsbCE9SClmb3IodmFyIE4gaW4gSCkiZGVmYXVsdCIhPT1OJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSCxOKSYm'@; put 'YyhWLEgsTik7cmV0dXJuIHMoVixIKSxWfSx2PXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihILFYpe2Zvcih2YXIgTiBpbiBIKSJkZWZhdWx0IiE9PU4mJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVixOKSYmYyhWLEgsTil9O09iamVjdC5kZWZpbmVQ'@; put 'cm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLndyaXRlVG9QYXRoPWoud3JpdGVUb1N0cmluZz1qLndyaXRlVG9CdWZmZXI9ai53cml0ZVRvU3RyZWFtPWoud3JpdGU9ai5mb3JtYXQ9ai5Gb3JtYXR0ZXJPcHRpb25zPWouQ3N2Rm9ybWF0dGVyU3RyZWFtPXZvaWQgMDtjb25z'@; put 'dCBDPWgoNDA1MzcpLHc9aCg4ODMxMCksUz1BKGgoMjMyNykpLEw9aCg2ODUwMiksUj1oKDQ5NzkyKTt2KGgoOTA1NjUpLGopO3ZhciB4PWgoNDk3OTIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJDc3ZGb3JtYXR0ZXJTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3Jl'@; put 'dHVybiB4LkNzdkZvcm1hdHRlclN0cmVhbX19KTt2YXIgVT1oKDY4NTAyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiRm9ybWF0dGVyT3B0aW9ucyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFUuRm9ybWF0dGVyT3B0aW9uc319KSxqLmZvcm1hdD1IPT5uZXcgUi5D'@; put 'c3ZGb3JtYXR0ZXJTdHJlYW0obmV3IEwuRm9ybWF0dGVyT3B0aW9ucyhIKSksai53cml0ZT0oSCxWKT0+e2NvbnN0IE49ai5mb3JtYXQoViksej1DLnByb21pc2lmeSgoWSxGKT0+e04ud3JpdGUoWSx2b2lkIDAsRil9KTtyZXR1cm4gSC5yZWR1Y2UoKFksRik9PlkudGhlbigoKT0+eihGKSks'@; put 'UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCk9Pk4uZW5kKCkpLmNhdGNoKFk9PntOLmVtaXQoImVycm9yIixZKX0pLE59LGoud3JpdGVUb1N0cmVhbT0oSCxWLE4pPT5qLndyaXRlKFYsTikucGlwZShIKSxqLndyaXRlVG9CdWZmZXI9KEgsVj17fSk9Pntjb25zdCBOPVtdLHo9bmV3IHcuV3Jp'@; put 'dGFibGUoe3dyaXRlKFksRixXKXtOLnB1c2goWSksVygpfX0pO3JldHVybiBuZXcgUHJvbWlzZSgoWSxGKT0+e3oub24oImVycm9yIixGKS5vbigiZmluaXNoIiwoKT0+WSh5LmNvbmNhdChOKSkpLGoud3JpdGUoSCxWKS5waXBlKHopfSl9LGoud3JpdGVUb1N0cmluZz0oSCxWKT0+ai53cml0'@; put 'ZVRvQnVmZmVyKEgsVikudGhlbihOPT5OLnRvU3RyaW5nKCkpLGoud3JpdGVUb1BhdGg9KEgsVixOKT0+e2NvbnN0IHo9Uy5jcmVhdGVXcml0ZVN0cmVhbShILHtlbmNvZGluZzoidXRmOCJ9KTtyZXR1cm4gai53cml0ZShWLE4pLnBpcGUoeil9fSw5MDU2NShmZSxqKXsidXNlIHN0cmljdCI7'@; put 'T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouaXNTeW5jVHJhbnNmb3JtPXZvaWQgMCxqLmlzU3luY1RyYW5zZm9ybT1oPT4xPT09aC5sZW5ndGh9LDQ5MjIwKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5k'@; put 'aW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihSLHgsVSxIKXt2b2lkIDA9PT1IJiYoSD1VKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUixILHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB4W1VdfX0pfTpmdW5jdGlvbihSLHgsVSxIKXt2b2lkIDA9PT1IJiYoSD1VKSxS'@; put 'W0hdPXhbVV19KSxjPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihSLHgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTp4fSl9OmZ1bmN0aW9uKFIseCl7Ui5kZWZhdWx0PXh9KSxzPXRo'@; put 'aXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihSKXtpZihSJiZSLl9fZXNNb2R1bGUpcmV0dXJuIFI7dmFyIHg9e307aWYobnVsbCE9Uilmb3IodmFyIFUgaW4gUikiZGVmYXVsdCIhPT1VJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUixVKSYmeSh4LFIsVSk7'@; put 'cmV0dXJuIGMoeCxSKSx4fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5kZWNvZGVUb2tlbj1qLmhhc1Rva2VuRXhwaXJlZD1qLmlzUmVmcmVzaFRva2VuRXhwaXJpbmc9ai5pc0FjY2Vzc1Rva2VuRXhwaXJpbmc9dm9pZCAwO2NvbnN0IEE9cyho'@; put 'KDY3NjUpKTtmdW5jdGlvbiBTKFIseCl7bGV0IFU7dHJ5e1U9KDAsQS5kZWZhdWx0KShSKX1jYXRjaChWKXtpZighKFYgaW5zdGFuY2VvZiBBLkludmFsaWRUb2tlbkVycm9yKSl0aHJvdyBWO3JldHVybiBjb25zb2xlLmRlYnVnKCJpc1Rva2VuRXhwaXJpbmc6IHRva2VuIGlzIG5vdCBhIGRl'@; put 'Y29kYWJsZSBKV1QsIHRyZWF0aW5nIGl0IGFzIG5vdCBleHBpcmluZy4iKSwhMX1yZXR1cm4gbnVsbCE9VS5leHAmJlUuZXhwLShuZXcgRGF0ZSkudmFsdWVPZigpLzFlMzw9eH1qLmlzQWNjZXNzVG9rZW5FeHBpcmluZz1mdW5jdGlvbiB2KFIseD0zNjAwKXtyZXR1cm4hUnx8UyhSLHgpfSxq'@; put 'LmlzUmVmcmVzaFRva2VuRXhwaXJpbmc9ZnVuY3Rpb24gQyhSLHg9MzApe3JldHVybiFSfHxTKFIseCl9LGouaGFzVG9rZW5FeHBpcmVkPWZ1bmN0aW9uIHcoUil7cmV0dXJuIVJ8fFMoUiwwKX0sai5kZWNvZGVUb2tlbj1mdW5jdGlvbiBMKFIpe2xldCB4O3RyeXt4PSgwLEEuZGVmYXVsdCko'@; put 'Uil9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRva2VuIHN1cHBsaWVkLiIpfXJldHVybiB4fX0sMTYwNzIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09'@; put 'PUMmJihDPXYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLEMse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEFbdl19fSl9OmZ1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09PUMmJihDPXYpLHNbQ109QVt2XX0pLGM9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9u'@; put 'KHMsQSl7Zm9yKHZhciB2IGluIHMpImRlZmF1bHQiIT09diYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChBLHYpJiZ5KEEscyx2KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGMoaCg0OTIyMCksail9LDM4MzkoZmUsail7'@; put 'InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnByZWZpeE1lc3NhZ2U9dm9pZCAwLGoucHJlZml4TWVzc2FnZT0oeSxjKT0+e2lmKCJvYmplY3QiPT10eXBlb2YgeSlpZih5Lmhhc093blByb3BlcnR5KCJtZXNzYWdlIikpeS5t'@; put 'ZXNzYWdlPWMreS5tZXNzYWdlO2Vsc2V7aWYoIXkuaGFzT3duUHJvcGVydHkoImJvZHkiKSlyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHkpLHttZXNzYWdlOmN9KTtpZigib2JqZWN0Ij09dHlwZW9mIHkuYm9keSYmKHkubWVzc2FnZT15LmJvZHkubWVzc2FnZT9jK3ku'@; put 'Ym9keS5tZXNzYWdlOmMpLCJzdHJpbmciPT10eXBlb2YgeS5ib2R5KXtsZXQgczt0cnl7cz1KU09OLnBhcnNlKHkuYm9keSl9Y2F0Y2h7cmV0dXJuIHkubWVzc2FnZT1jLHl9cmV0dXJuIHMubWVzc2FnZT1zLm1lc3NhZ2U/YytzLm1lc3NhZ2U6Yyx5LmJvZHk9cyx5fX1yZXR1cm4ic3RyaW5n'@; put 'Ij09dHlwZW9mIHkmJih5PWMreSkseX19LDYzNDAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09PUMmJihDPXYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLEMse2Vu'@; put 'dW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEFbdl19fSl9OmZ1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09PUMmJihDPXYpLHNbQ109QVt2XX0pLGM9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKHMsQSl7Zm9yKHZhciB2IGluIHMpImRlZmF1bHQiIT09diYmIU9i'@; put 'amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChBLHYpJiZ5KEEscyx2KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGMoaCgzODM5KSxqKSxjKGgoNzM4MjMpLGopfSw3MzgyMyhmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5TZXJ2ZXJUeXBlRXJyb3I9dm9pZCAwO2NvbnN0IHk9aCgzNjMxKTtjbGFzcyBjIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoQT1bXSl7bGV0IHY9KEE9Wy4uLm5ldyBTZXQoQSldKS5sZW5ndGg/QS5qb2luKCIsICIp'@; put 'LnRyaW0oKTpbeS5TZXJ2ZXJUeXBlLlNhc1ZpeWEseS5TZXJ2ZXJUeXBlLlNhczkseS5TZXJ2ZXJUeXBlLlNhc2pzXS5qb2luKCIsICIpLnRyaW0oKTt2PXYucmVwbGFjZSgvLFxzKFteLF0qKSQvLCIgYW5kICQxIiksc3VwZXIoYEludmFsaWQgc2VydmVyIHR5cGU6IHZhbGlkIG9wdGlvbiR7'@; put 'MSE9PUEubGVuZ3RoPyJzIjoiIn0gJHsxIT09QS5sZW5ndGg/ImFyZSI6ImlzIn0gJHt2fWApLHRoaXMubmFtZT0iU2VydmVyVHlwZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxjLnByb3RvdHlwZSl9fWouU2VydmVyVHlwZUVycm9yPWN9LDU3ODM4KGZlLGosaCl7InVzZSBz'@; put 'dHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihTLEwsUix4KXtyZXR1cm4gbmV3KFJ8fChSPVByb21pc2UpKShmdW5jdGlvbihILFYpe2Z1bmN0aW9uIE4oRil7dHJ5e1koeC5uZXh0KEYpKX1jYXRjaChXKXtWKFcpfX1mdW5jdGlvbiB6KEYpe3RyeXtZKHgudGhy'@; put 'b3coRikpfWNhdGNoKFcpe1YoVyl9fWZ1bmN0aW9uIFkoRil7Ri5kb25lP0goRi52YWx1ZSk6ZnVuY3Rpb24gVShIKXtyZXR1cm4gSCBpbnN0YW5jZW9mIFI/SDpuZXcgUihmdW5jdGlvbihWKXtWKEgpfSl9KEYudmFsdWUpLnRoZW4oTix6KX1ZKCh4PXguYXBwbHkoUyxMfHxbXSkpLm5leHQo'@; put 'KSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGoudXBkYXRlQ3N2PWouY3JlYXRlQ3N2PWoucmVhZENzdj12b2lkIDA7Y29uc3QgYz1oKDUxMjc2KSxzPWgoMTY5Nik7ai5yZWFkQ3N2PVM9Pnkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rp'@; put 'b24qKCl7cmV0dXJuKHlpZWxkKDAsYy5yZWFkRmlsZSkoUykpLnNwbGl0KCJcbiIpLmZpbHRlcihSPT5SLmxlbmd0aCkubWFwKFI9PlIuc3BsaXQoIiwiKSl9KSxqLmNyZWF0ZUNzdj0oUyxMLFIpPT55KHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHg9eWllbGQoMCxz'@; put 'LndyaXRlVG9TdHJpbmcpKEwse2hlYWRlcnM6Un0pO3lpZWxkKDAsYy5jcmVhdGVGaWxlKShTLHgpfSksai51cGRhdGVDc3Y9KFMsTCxSLHgpPT55KHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IFU9eWllbGQgdyhTLEwsUix4KTtpZih4KXtjb25zdCBIPTA9PT1VLmxl'@; put 'bmd0aD8xOlUubGVuZ3RoLFY9Ui5maW5kSW5kZXgoTj0+Tj09PXgpO1Y+LTE/TC5zcGxpY2UoViwwLEgpOihSLnNwbGljZSgwLDAseCksTC5zcGxpY2UoMCwwLEgpKX1VLnB1c2goTCkseWllbGQoMCxqLmNyZWF0ZUNzdikoUyxVLFIpfSk7Y29uc3Qgdz0oUyxMLFIseCk9Pnkodm9pZCAwLHZv'@; put 'aWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoTC5sZW5ndGghPT1SLmxlbmd0aCl7aWYoTC5sZW5ndGg+Ui5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhIHJlY29yZCBjYW4gbm90IGhhdmUgbW9yZSBmaWVsZHMgdGhhbiBwcm92aWRlZCBjb2x1bW5zIik7aWYoIXh8fEwubGVuZ3RoKzEhPT1S'@; put 'Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImEgcmVjb3JkIGNhbiBub3QgaGF2ZSBsZXNzIGZpZWxkcyB0aGFuIHByb3ZpZGVkIGNvbHVtbnMiKX1lbHNlIGlmKHgmJlIuaW5jbHVkZXMoeCkpdGhyb3cgbmV3IEVycm9yKCJhIHJlY29yZCBjYW4gbm90IGhhdmUgbW9yZSBmaWVsZHMgdGhhbiBw'@; put 'cm92aWRlZCBjb2x1bW5zIik7Y29uc3QgVT15aWVsZCgwLGoucmVhZENzdikoUykuY2F0Y2goVj0+W10pLEg9VVswXTtpZihIKXtpZihSLmxlbmd0aD5ILmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm51bWJlciBvZiBwcm92aWRlZCBjb2x1bW5zIGFyZSBncmVhdGVyIHRoYW4gbnVtYmVyIG9m'@; put 'IGV4aXN0aW5nIGNvbHVtbnMiKTtpZihSLmxlbmd0aDxILmxlbmd0aCl7aWYoIXh8fFIubGVuZ3RoKzEhPT1ILmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm51bWJlciBvZiBwcm92aWRlZCBjb2x1bW5zIGFyZSBsZXNzIHRoYW4gbnVtYmVyIG9mIGV4aXN0aW5nIGNvbHVtbnMiKTtjb25zdCBW'@; put 'PUguZmluZEluZGV4KHo9Pno9PT14KSxOPVsuLi5SXTtpZighKFY+LTEpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7aWYoTi5zcGxpY2UoViwwLHgpLEpTT04uc3RyaW5naWZ5KFIpIT09SlNPTi5zdHJpbmdpZnko'@; put 'TikpdGhyb3cgbmV3IEVycm9yKCJwcm92aWRlZCBjb2x1bW5zIGRvZXMgbm90IG1hdGNoIGV4aXN0aW5nIGNvbHVtbnMiKX1lbHNle2lmKEpTT04uc3RyaW5naWZ5KFIpIT09SlNPTi5zdHJpbmdpZnkoSCkpdGhyb3cgbmV3IEVycm9yKCJwcm92aWRlZCBjb2x1bW5zIGRvZXMgbm90IG1hdGNo'@; put 'IGV4aXN0aW5nIGNvbHVtbnMiKTtpZih4JiYhUi5pbmNsdWRlcyh4KSl0aHJvdyBuZXcgRXJyb3IoImNhbiBub3QgYWRkIG5ldyBpZCB0byBleGlzdGluZyBkYXRhIil9fXJldHVybiBVfSl9LDUxMjc2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5k'@; put 'aW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihwLEksdWUsbmUpe3ZvaWQgMD09PW5lJiYobmU9dWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwLG5lLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJW3VlXX19KX06ZnVuY3Rpb24ocCxJLHVlLG5lKXt2b2lkIDA9PT1u'@; put 'ZSYmKG5lPXVlKSxwW25lXT1JW3VlXX0pLGM9dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHAsSSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOkl9KX06ZnVuY3Rpb24ocCxJKXtwLmRl'@; put 'ZmF1bHQ9SX0pLHM9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHApe2lmKHAmJnAuX19lc01vZHVsZSlyZXR1cm4gcDt2YXIgST17fTtpZihudWxsIT1wKWZvcih2YXIgdWUgaW4gcCkiZGVmYXVsdCIhPT11ZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs'@; put 'KHAsdWUpJiZ5KEkscCx1ZSk7cmV0dXJuIGMoSSxwKSxJfSxBPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihwLEksdWUsbmUpe3JldHVybiBuZXcodWV8fCh1ZT1Qcm9taXNlKSkoZnVuY3Rpb24oUGUsb3Qpe2Z1bmN0aW9uIGx0KGFlKXt0cnl7UmUobmUubmV4dChhZSkpfWNhdGNo'@; put 'KHhlKXtvdCh4ZSl9fWZ1bmN0aW9uIGR0KGFlKXt0cnl7UmUobmUudGhyb3coYWUpKX1jYXRjaCh4ZSl7b3QoeGUpfX1mdW5jdGlvbiBSZShhZSl7YWUuZG9uZT9QZShhZS52YWx1ZSk6ZnVuY3Rpb24gX2UoUGUpe3JldHVybiBQZSBpbnN0YW5jZW9mIHVlP1BlOm5ldyB1ZShmdW5jdGlvbihv'@; put 'dCl7b3QoUGUpfSl9KGFlLnZhbHVlKS50aGVuKGx0LGR0KX1SZSgobmU9bmUuYXBwbHkocCxJfHxbXSkpLm5leHQoKSl9KX0sdj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24ocCl7cmV0dXJuIHAmJnAuX19lc01vZHVsZT9wOntkZWZhdWx0OnB9fTtPYmplY3QuZGVmaW5l'@; put 'UHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5nZXRMaW5lRW5kaW5nPWouaXNUZXN0RmlsZT1qLnRlc3RGaWxlUmVnRXhwPWouY3JlYXRlUmVhZFN0cmVhbT1qLmNyZWF0ZVdyaXRlU3RyZWFtPWouZ2V0UmVhbFBhdGg9ai5iYXNlNjRFbmNvZGVGaWxlPWouYmFzZTY0RW5j'@; put 'b2RlSW1hZ2VGaWxlPWoucGF0aFNlcEVzY2FwZWQ9ai5jb3B5PWoubW92ZUZpbGU9ai5nZXRSZWxhdGl2ZVBhdGg9ai51bmlmeUZpbGVQYXRoPWouZGVsZXRlRm9sZGVyPWouZGVsZXRlRmlsZT1qLmNyZWF0ZUZpbGU9ai5jcmVhdGVGb2xkZXI9ai5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5G'@; put 'b2xkZXI9ai5saXN0U3ViRm9sZGVyc0luRm9sZGVyPWoubGlzdFNhc0ZpbGVzSW5Gb2xkZXI9ai5saXN0SW5pRmlsZXNJbkZvbGRlcj1qLmxpc3RGaWxlc0luRm9sZGVyPWoucmVhZEZpbGVCaW5hcnk9ai5yZWFkRmlsZT1qLmlzRm9sZGVyPWouZm9sZGVyRXhpc3RzPWouZmlsZUV4aXN0cz12'@; put 'b2lkIDA7Y29uc3QgQz12KGgoMjE2MDUpKSx3PXYoaCg0MzYyNykpLFM9aCg1Mjc2MyksTD1zKGgoMjU5MDgpKSxSPWgoMzYzMSk7ZnVuY3Rpb24gVShwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5wcm9taXNlcy5hY2Nlc3MocCxD'@; put 'LmRlZmF1bHQuY29uc3RhbnRzLkZfT0spLnRoZW4oKCk9PiEwKS5jYXRjaCgoKT0+ITEpfSl9ZnVuY3Rpb24gTihwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5wcm9taXNlcy5yZWFkRmlsZShwKX0pfWZ1bmN0aW9uIHoocCl7cmV0'@; put 'dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBDLmRlZmF1bHQucHJvbWlzZXMucmVhZGRpcihwLHt3aXRoRmlsZVR5cGVzOiEwfSkudGhlbihJPT5JLmZpbHRlcih1ZT0+IXVlLmlzRGlyZWN0b3J5KCkpLm1hcCh1ZT0+dWUubmFtZSkpfSl9ZnVuY3Rpb24gcShw'@; put 'LEk9ITAsdWU9W10pe3JldHVybiBBKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gQy5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIocCx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4obmU9PkEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKEkmJm5lLmZpbHRl'@; put 'cihQZT0+UGUuaXNEaXJlY3RvcnkoKSkubGVuZ3RoKXtsZXQgUGU9W107cmV0dXJuIHlpZWxkKDAsUy5hc3luY0ZvckVhY2gpKG5lLmZpbHRlcihvdD0+b3QuaXNEaXJlY3RvcnkoKSksb3Q9PkEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGx0PW90Lm5hbWU7aWYoIXVl'@; put 'LmluY2x1ZGVzKGx0KSl7Y29uc3QgZHQ9dy5kZWZhdWx0LmpvaW4ocCxsdCk7UGU9Wy4uLlBlLC4uLih5aWVsZCBxKGR0LEksdWUpKS5tYXAoUmU9PncuZGVmYXVsdC5qb2luKGx0LFJlKSldfX0pKSxbLi4ubmUuZmlsdGVyKG90PT4hb3QuaXNEaXJlY3RvcnkoKSkubWFwKG90PT5vdC5uYW1l'@; put 'KSwuLi5QZV19cmV0dXJuIG5lLm1hcChfZT0+X2UubmFtZSl9KSl9KX1mdW5jdGlvbiByZShwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5wcm9taXNlcy5ta2RpcihwLHtyZWN1cnNpdmU6ITB9KX0pfWZ1bmN0aW9uIGtlKHAsST13'@; put 'LmRlZmF1bHQuc2VwLHVlPSIvIil7Y29uc3QgbmU9e3VuaXg6Ii8iLHdpbjoiXFwifTtsZXQgX2U9T2JqZWN0LmtleXMobmUpLmZpbmQoUGU9Pm5lW1BlXT09PUkpO2lmKF9lKXtjb25zdCBQZT1uZVtPYmplY3Qua2V5cyhuZSkuZmluZChvdD0+b3QhPT1fZSldO3JldHVybiBfZT1uZVtfZV0s'@; put 'cC5zcGxpdChQZSkuam9pbihfZSl9cmV0dXJuIHAuc3BsaXQodWUpLmpvaW4oSSl9ai5maWxlRXhpc3RzPWZ1bmN0aW9uIHgocCl7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBDLmRlZmF1bHQucHJvbWlzZXMuYWNjZXNzKHAsQy5kZWZhdWx0LmNvbnN0'@; put 'YW50cy5GX09LKS50aGVuKCgpPT4hMCkuY2F0Y2goKCk9PiExKX0pfSxqLmZvbGRlckV4aXN0cz1VLGouaXNGb2xkZXI9ZnVuY3Rpb24gSChwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5wcm9taXNlcy5sc3RhdChwKS50aGVuKEk9'@; put 'PkkuaXNEaXJlY3RvcnkoKSkuY2F0Y2goKCk9PiExKX0pfSxqLnJlYWRGaWxlPWZ1bmN0aW9uIFYocCxJPSJ1dGY4Iil7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBDLmRlZmF1bHQucHJvbWlzZXMucmVhZEZpbGUocCxJKX0pfSxqLnJlYWRGaWxlQmlu'@; put 'YXJ5PU4sai5saXN0RmlsZXNJbkZvbGRlcj16LGoubGlzdEluaUZpbGVzSW5Gb2xkZXI9ZnVuY3Rpb24gWShwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuKHlpZWxkIHoocCkpLmZpbHRlcihJPT5JLmVuZHNXaXRoKCIuaW5pIikpfSl9LGoubGlzdFNh'@; put 'c0ZpbGVzSW5Gb2xkZXI9ZnVuY3Rpb24gRihwLEk9ITEsdWU9W10pe3JldHVybiBBKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oeWllbGQgcShwLEksdWUpKS5maWx0ZXIoUGU9PlBlLmVuZHNXaXRoKCIuc2FzIikpfSl9LGoubGlzdFN1YkZvbGRlcnNJbkZvbGRlcj1m'@; put 'dW5jdGlvbiBXKHApe3JldHVybiBBKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gQy5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIocCx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oST0+SS5maWx0ZXIodWU9PnVlLmlzRGlyZWN0b3J5KCkpLm1hcCh1ZT0+dWUubmFtZSkp'@; put 'fSl9LGoubGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyPXEsai5jcmVhdGVGb2xkZXI9cmUsai5jcmVhdGVGaWxlPWZ1bmN0aW9uIG1lKHAsSSx1ZSl7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKChwPWtlKHApKS5zcGxpdCh3LmRlZmF1bHQuc2VwKS5s'@; put 'ZW5ndGg+MSl7bGV0IG5lPXAuc3BsaXQody5kZWZhdWx0LnNlcCk7bmUucG9wKCk7Y29uc3QgX2U9bmUuam9pbih3LmRlZmF1bHQuc2VwKTsoeWllbGQgVShfZSkpfHwoeWllbGQgcmUoX2UpKX1yZXR1cm4gQy5kZWZhdWx0LnByb21pc2VzLndyaXRlRmlsZShwLEksdWUpfSl9LGouZGVsZXRl'@; put 'RmlsZT1mdW5jdGlvbiBDZShwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5yZW1vdmUocCl9KX0sai5kZWxldGVGb2xkZXI9ZnVuY3Rpb24gSWUocCl7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVy'@; put 'biBDLmRlZmF1bHQucm0ocCx7cmVjdXJzaXZlOiEwLGZvcmNlOiEwfSl9KX0sai51bmlmeUZpbGVQYXRoPWtlLGouZ2V0UmVsYXRpdmVQYXRoPWZ1bmN0aW9uIHFlKHAsSSl7Y29uc3QgdWU9cC5zcGxpdCh3LmRlZmF1bHQuc2VwKSxuZT1JLnNwbGl0KHcuZGVmYXVsdC5zZXApO2xldCBfZT1b'@; put 'XSxQZT1bXTt1ZS5mb3JFYWNoKChhZSx4ZSk9Pnt2b2lkIDAhPT1uZVt4ZV0mJnVlW3hlXT09PW5lW3hlXT9fZS5wdXNoKGFlKTphZSYmUGUucHVzaChhZSl9KTtjb25zdCBvdD1fZS5qb2luKHcuZGVmYXVsdC5zZXApLGx0PW5ldyBSZWdFeHAoYF4ke3cuZGVmYXVsdC5zZXAucmVwbGFjZSgv'@; put 'XFwvZywiXFxcXCIpfWApLGR0PW5ldyBSZWdFeHAoYCR7dy5kZWZhdWx0LnNlcC5yZXBsYWNlKC9cXC9nLCJcXFxcIil9JGApO3JldHVybihQZS5sZW5ndGg/YC4uJHt3LmRlZmF1bHQuc2VwfWAucmVwZWF0KFBlLmxlbmd0aCk6YC4ke3cuZGVmYXVsdC5zZXB9YCkrSS5yZXBsYWNlKG90LCIi'@; put 'KS5yZXBsYWNlKGx0LCIiKS5yZXBsYWNlKGR0LCIiKX0sai5tb3ZlRmlsZT1mdW5jdGlvbiBYKHAsSSl7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBDLmRlZmF1bHQucHJvbWlzZXMucmVuYW1lKHAsSSl9KX0sai5jb3B5PWZ1bmN0aW9uIGYocCxJKXty'@; put 'ZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5jb3B5KHAsSSl9KX0sai5wYXRoU2VwRXNjYXBlZD13LmRlZmF1bHQuc2VwLnJlcGxhY2UoL1xcL2csIlxcXFwiKSxqLmJhc2U2NEVuY29kZUltYWdlRmlsZT1mdW5jdGlvbiBiKHApe3JldHVy'@; put 'biBBKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gTihwKS50aGVuKEk9PntsZXQgdWU9dy5kZWZhdWx0LmV4dG5hbWUocCkuc3Vic3RyKDEpfHwicG5nIjtyZXR1cm4ic3ZnIj09PXVlJiYodWU9InN2Zyt4bWwiKSwiZGF0YTppbWFnZS8iK3VlKyI7YmFzZTY0LCIrSS50'@; put 'b1N0cmluZygiYmFzZTY0Iil9KX0pfSxqLmJhc2U2NEVuY29kZUZpbGU9ZnVuY3Rpb24gayhwKXtyZXR1cm4gQSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIEMuZGVmYXVsdC5wcm9taXNlcy5yZWFkRmlsZShwLHtlbmNvZGluZzoiYmFzZTY0In0pfSl9LGouZ2V0UmVh'@; put 'bFBhdGg9ZnVuY3Rpb24gTShwKXtyZXR1cm4gQy5kZWZhdWx0LnJlYWxwYXRoU3luYyhwKX0sai5jcmVhdGVXcml0ZVN0cmVhbT1mdW5jdGlvbiBCKHApe3JldHVybiBBKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oeWllbGQgTC5maWxlRXhpc3RzKHApKXx8KHlpZWxk'@; put 'IEwuY3JlYXRlRmlsZShwLCIiKSksQy5kZWZhdWx0LmNyZWF0ZVdyaXRlU3RyZWFtKHAse2ZsYWdzOiJhIn0pfSl9LGouY3JlYXRlUmVhZFN0cmVhbT1wPT5BKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBDLmRlZmF1bHQuY3JlYXRlUmVhZFN0cmVhbShwKX0pLGou'@; put 'dGVzdEZpbGVSZWdFeHA9L1wudGVzdFwuKFxkK1wuKT9zYXMkL2ksai5pc1Rlc3RGaWxlPXA9PmoudGVzdEZpbGVSZWdFeHAudGVzdChwKSxqLmdldExpbmVFbmRpbmc9cD0+bmV3IFJlZ0V4cChSLkxpbmVFbmRpbmdzLkNSTEYpLnRlc3QocCk/Ui5MaW5lRW5kaW5ncy5DUkxGOlIuTGluZUVu'@; put 'ZGluZ3MuTEZ9LDkxOTEwKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbih2KXtyZXR1cm4gdiYmdi5fX2VzTW9kdWxlP3Y6e2RlZmF1bHQ6dn19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6'@; put 'ITB9KSxqLmdldEFic29sdXRlUGF0aD12b2lkIDA7Y29uc3QgYz15KGgoNDM2MjcpKSxzPXkoaCg1MTA3MikpO2ouZ2V0QWJzb2x1dGVQYXRoPSh2LEMpPT5jLmRlZmF1bHQuaXNBYnNvbHV0ZSh2KXx8L15+Ly5leGVjKHYpP2MuZGVmYXVsdC5ub3JtYWxpemUodi5yZXBsYWNlKC9efi8scy5k'@; put 'ZWZhdWx0LmhvbWVkaXIoKSkpOmMuZGVmYXVsdC5qb2luKEMsdil9LDI1OTA4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbih2LEMsdyxTKXt2b2lkIDA9PT1TJiYoUz13KSxPYmplY3QuZGVmaW5l'@; put 'UHJvcGVydHkodixTLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBDW3ddfX0pfTpmdW5jdGlvbih2LEMsdyxTKXt2b2lkIDA9PT1TJiYoUz13KSx2W1NdPUNbd119KSxjPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbih2LEMpe2Zvcih2YXIgdyBpbiB2KSJk'@; put 'ZWZhdWx0IiE9PXcmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQyx3KSYmeShDLHYsdyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnJlYWRDc3Y9ai5jcmVhdGVDc3Y9ai51cGRhdGVDc3Y9ai5nZXRMaW5lRW5kaW5n'@; put 'PWoudGVzdEZpbGVSZWdFeHA9ai5pc1Rlc3RGaWxlPWouZ2V0UmVhbFBhdGg9ai5iYXNlNjRFbmNvZGVGaWxlPWouYmFzZTY0RW5jb2RlSW1hZ2VGaWxlPWouY29weT1qLnBhdGhTZXBFc2NhcGVkPWoubW92ZUZpbGU9ai51bmlmeUZpbGVQYXRoPWouZ2V0UmVsYXRpdmVQYXRoPWouZGVsZXRl'@; put 'Rm9sZGVyPWouZGVsZXRlRmlsZT1qLmNyZWF0ZVdyaXRlU3RyZWFtPWouY3JlYXRlUmVhZFN0cmVhbT1qLmNyZWF0ZUZvbGRlcj1qLmNyZWF0ZUZpbGU9ai5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9ai5saXN0U3ViRm9sZGVyc0luRm9sZGVyPWoubGlzdFNhc0ZpbGVzSW5Gb2xk'@; put 'ZXI9ai5saXN0SW5pRmlsZXNJbkZvbGRlcj1qLmxpc3RGaWxlc0luRm9sZGVyPWoucmVhZEZpbGVCaW5hcnk9ai5yZWFkRmlsZT1qLmlzRm9sZGVyPWouZm9sZGVyRXhpc3RzPWouZmlsZUV4aXN0cz12b2lkIDA7dmFyIHM9aCg1MTI3Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosImZpbGVF'@; put 'eGlzdHMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmZpbGVFeGlzdHN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImZvbGRlckV4aXN0cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuZm9sZGVyRXhpc3RzfX0pLE9iamVjdC5kZWZp'@; put 'bmVQcm9wZXJ0eShqLCJpc0ZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuaXNGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosInJlYWRGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5yZWFkRmlsZX19KSxPYmpl'@; put 'Y3QuZGVmaW5lUHJvcGVydHkoaiwicmVhZEZpbGVCaW5hcnkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLnJlYWRGaWxlQmluYXJ5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJsaXN0RmlsZXNJbkZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHMubGlzdEZpbGVzSW5Gb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImxpc3RJbmlGaWxlc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5saXN0SW5pRmlsZXNJbkZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'aiwibGlzdFNhc0ZpbGVzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmxpc3RTYXNGaWxlc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJsaXN0U3ViRm9sZGVyc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gcy5saXN0U3ViRm9sZGVyc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJsaXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmxpc3RGaWxlc0FuZFN1YkZvbGRlcnNJbkZvbGRlcn19'@; put 'KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiY3JlYXRlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY3JlYXRlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiY3JlYXRlRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1'@; put 'cm4gcy5jcmVhdGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImNyZWF0ZVJlYWRTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmNyZWF0ZVJlYWRTdHJlYW19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImNyZWF0ZVdyaXRlU3RyZWFt'@; put 'Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5jcmVhdGVXcml0ZVN0cmVhbX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiZGVsZXRlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuZGVsZXRlRmlsZX19KSxPYmplY3QuZGVmaW5l'@; put 'UHJvcGVydHkoaiwiZGVsZXRlRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWxldGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImdldFJlbGF0aXZlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuZ2V0'@; put 'UmVsYXRpdmVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJ1bmlmeUZpbGVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy51bmlmeUZpbGVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJtb3ZlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0'@; put 'OmZ1bmN0aW9uKCl7cmV0dXJuIHMubW92ZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosInBhdGhTZXBFc2NhcGVkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5wYXRoU2VwRXNjYXBlZH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiY29weSIse2Vu'@; put 'dW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY29weX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiYmFzZTY0RW5jb2RlSW1hZ2VGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5iYXNlNjRFbmNvZGVJbWFnZUZpbGV9fSksT2JqZWN0LmRl'@; put 'ZmluZVByb3BlcnR5KGosImJhc2U2NEVuY29kZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJhc2U2NEVuY29kZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImdldFJlYWxQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1'@; put 'cm4gcy5nZXRSZWFsUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiaXNUZXN0RmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuaXNUZXN0RmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwidGVzdEZpbGVSZWdFeHAiLHtlbnVtZXJhYmxlOiEw'@; put 'LGdldDpmdW5jdGlvbigpe3JldHVybiBzLnRlc3RGaWxlUmVnRXhwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJnZXRMaW5lRW5kaW5nIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXRMaW5lRW5kaW5nfX0pO3ZhciBBPWgoNTc4MzgpO09iamVjdC5kZWZp'@; put 'bmVQcm9wZXJ0eShqLCJ1cGRhdGVDc3YiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBBLnVwZGF0ZUNzdn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiY3JlYXRlQ3N2Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQS5jcmVhdGVDc3Z9fSks'@; put 'T2JqZWN0LmRlZmluZVByb3BlcnR5KGosInJlYWRDc3YiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBBLnJlYWRDc3Z9fSksYyhoKDkxOTEwKSxqKX0sNTU3NDgoZmUsaixoKXsidXNlIHN0cmljdCI7ai5wYWRXaXRoTnVtYmVyPXZvaWQgMDt2YXIgYz1oKDUwMTEpO09i'@; put 'amVjdC5kZWZpbmVQcm9wZXJ0eShqLCJwYWRXaXRoTnVtYmVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5wYWRXaXRoTnVtYmVyfX0pLGgoNjY2NyksaCgzOTkzMSl9LDUwMTEoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2Vz'@; put 'TW9kdWxlIix7dmFsdWU6ITB9KSxqLnBhZFdpdGhOdW1iZXI9dm9pZCAwLGoucGFkV2l0aE51bWJlcj0oeSxjPTApPT55Pjk/eTpgJHtjfSR7eX1gfSwzOTkzMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIs'@; put 'e3ZhbHVlOiEwfSksai5uZXdMaW5lPXZvaWQgMCxqLm5ld0xpbmU9KCk9PiJ3aW4zMiI9PT15LnBsYXRmb3JtPyJcXHJcXG4iOiJcXG4ifSw2NjY3KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5jYXBpdGFsaXpl'@; put 'Rmlyc3RDaGFyPWouc2FuaXRpemVTcGVjaWFsQ2hhcnM9dm9pZCAwLGouc2FuaXRpemVTcGVjaWFsQ2hhcnM9Yz0+Yy5yZXBsYWNlKC9bXHUwMDFiXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCIiKSxqLmNhcGl0'@; put 'YWxpemVGaXJzdENoYXI9Yz0+Yy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStjLnNsaWNlKDEpfSw0MzM3MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24odyl7cmV0dXJuIHcmJncuX19lc01vZHVsZT93OntkZWZhdWx0Ond9'@; put 'fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5pc1NwZWNpYWxNaXNzaW5nPWouY2hvaWNlVmFsaWRhdG9yPWouY29uZmlybWF0aW9uVmFsaWRhdG9yPWoudXJsVmFsaWRhdG9yPXZvaWQgMDtjb25zdCBjPXkoaCgxNzg1MykpO2oudXJsVmFsaWRh'@; put 'dG9yPSh3LFMpPT4hIWMuZGVmYXVsdC5pc0h0dHBVcmkodyl8fCEhYy5kZWZhdWx0LmlzSHR0cHNVcmkodyl8fCIiPT09d3x8UyxqLmNvbmZpcm1hdGlvblZhbGlkYXRvcj13PT4hMD09PXd8fCExPT09dyxqLmNob2ljZVZhbGlkYXRvcj0odyxTLEwpPT53PjAmJnc8PVN8fEwsai5pc1NwZWNp'@; put 'YWxNaXNzaW5nPXc9Pigic3RyaW5nIiE9dHlwZW9mIHd8fCF3LmluY2x1ZGVzKCIuLiIpKSYmbmV3IFJlZ0V4cCgiXihcXC4pP1thLXpfLl17MX0kIiwiaSIpLnRlc3Qodyl9LDg3MjQ3KGZlLGosaCl7InVzZSBzdHJpY3QiO2ouZ2VuZXJhdGVUaW1lc3RhbXA9ai50aW1lc3RhbXBUb1lZWVlN'@; put 'TURESEhNTVNTPXZvaWQgMDt2YXIgYz1oKDU1OTQ3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwidGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMudGltZXN0YW1wVG9ZWVlZTU1EREhITU1TU319KSxPYmplY3QuZGVmaW5l'@; put 'UHJvcGVydHkoaiwiZ2VuZXJhdGVUaW1lc3RhbXAiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBjLmdlbmVyYXRlVGltZXN0YW1wfX0pfSw1NTk0NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEw'@; put 'fSksai5jb252ZXJ0U2Vjb25kc1RvSG1zPWouZ2VuZXJhdGVUaW1lc3RhbXA9ai50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTPXZvaWQgMDtjb25zdCB5PWgoNTU3NDgpO2oudGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUz0odj1EYXRlLm5vdygpKT0+e2NvbnN0IEM9bmV3IERhdGUodik7cmV0'@; put 'dXJuW0MuZ2V0RnVsbFllYXIoKSwoMCx5LnBhZFdpdGhOdW1iZXIpKEMuZ2V0TW9udGgoKSsxKSwoMCx5LnBhZFdpdGhOdW1iZXIpKEMuZ2V0RGF0ZSgpKV0uam9pbigiLyIpKyIgIitbKDAseS5wYWRXaXRoTnVtYmVyKShDLmdldEhvdXJzKCkpLCgwLHkucGFkV2l0aE51bWJlcikoQy5nZXRN'@; put 'aW51dGVzKCkpLCgwLHkucGFkV2l0aE51bWJlcikoQy5nZXRTZWNvbmRzKCkpXS5qb2luKCI6Iil9LGouZ2VuZXJhdGVUaW1lc3RhbXA9KHY9IiIsQyk9Pntjb25zdCB3PW5ldyBEYXRlO2xldCBTPVt3LmdldFVUQ0Z1bGxZZWFyKCksdy5nZXRVVENNb250aCgpKzEsdy5nZXRVVENEYXRlKCks'@; put 'dy5nZXRVVENIb3VycygpLHcuZ2V0VVRDTWludXRlcygpLHcuZ2V0VVRDU2Vjb25kcygpXTtyZXR1cm4gUz1TLm1hcChMPT4oMCx5LnBhZFdpdGhOdW1iZXIpKEwpKSxDJiZ2JiZDPFMubGVuZ3RoJiZDPj0wJiZTLnNwbGljZShDLDAsdiksUz1TLmpvaW4oQz8iIjp2KSxTfSxqLmNvbnZlcnRT'@; put 'ZWNvbmRzVG9IbXM9dj0+e2lmKCF2KXJldHVybiIwIHNlY29uZCI7Y29uc3QgQz1NYXRoLmZsb29yKHYvNjApLHc9TWF0aC5mbG9vcihDLzYwKSxTPUMlNjAsTD12JTYwO2xldCBSPSIiO3JldHVybiB3PjAmJihSPXcrIiBob3VyIisodz4xPyJzIjoiIikpLFM+MCYmKFIrPWAke1I/IiwgIjoi'@; put 'In0ke1N9IG1pbnV0ZSR7Uz4xPyJzIjoiIn1gKSxMPjAmJihSKz1gJHtSPyIsICI6IiJ9JHtMfSBzZWNvbmQke0w+MT8icyI6IiJ9YCksUn19LDIyOTE3KGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5D'@; put 'b25maWdUeXBlcz12b2lkIDAsKHk9ai5Db25maWdUeXBlc3x8KGouQ29uZmlnVHlwZXM9e30pKS5CdWlsZD0iYnVpbGRDb25maWciLHkuU2VydmljZT0ic2VydmljZUNvbmZpZyIseS5Kb2I9ImpvYkNvbmZpZyIseS5UZXN0PSJ0ZXN0Q29uZmlnIix5LkRvYz0iZG9jQ29uZmlnIix5LkRlcGxv'@; put 'eT0iZGVwbG95Q29uZmlnIix5LlN0cmVhbT0ic3RyZWFtQ29uZmlnIix5LkF1dGg9ImF1dGhDb25maWcifSwxNTA1KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDU3MzEyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmpl'@; put 'Y3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDk1MTE1KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDcyNTU3KGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtPYmplY3QuZGVmaW5l'@; put 'UHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5MaW5lRW5kaW5ncz12b2lkIDAsKHk9ai5MaW5lRW5kaW5nc3x8KGouTGluZUVuZGluZ3M9e30pKS5DUkxGPSJcclxuIix5LkxGPSJcbiJ9LDM1OTQ1KGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtPYmplY3QuZGVmaW5lUHJv'@; put 'cGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5NZW1iZXJUeXBlPXZvaWQgMCwoeT1qLk1lbWJlclR5cGV8fChqLk1lbWJlclR5cGU9e30pKS5zZXJ2aWNlPSJzZXJ2aWNlIix5LmZpbGU9ImZpbGUiLHkuZm9sZGVyPSJmb2xkZXIifSwzNTcyMyhmZSxqKXsidXNlIHN0cmljdCI7'@; put 'T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwxMzAyMyhmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzNjMxKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRo'@; put 'aXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihzLEEsdixDKXt2b2lkIDA9PT1DJiYoQz12KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocyxDLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBBW3ZdfX0pfTpmdW5jdGlvbihzLEEsdixDKXt2b2lk'@; put 'IDA9PT1DJiYoQz12KSxzW0NdPUFbdl19KSxjPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihzLEEpe2Zvcih2YXIgdiBpbiBzKSJkZWZhdWx0IiE9PXYmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQSx2KSYmeShBLHMsdil9O09iamVjdC5kZWZpbmVQ'@; put 'cm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxjKGgoMjI5MTcpLGopLGMoaCgxNTA1KSxqKSxjKGgoNTczMTIpLGopLGMoaCg5NTExNSksaiksYyhoKDM1OTQ1KSxqKSxjKGgoMzU3MjMpLGopLGMoaCgxMzAyMyksaiksYyhoKDI3NTkxKSxqKSxjKGgoNjc3NDcpLGopLGMoaCg1'@; put 'NDQ4MyksaiksYyhoKDE1MDI4KSxqKSxjKGgoMjA3NTYpLGopLGMoaCgyNzcxNyksaiksYyhoKDMxODIpLGopLGMoaCg3MjU1Nyksail9LDI3NTkxKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5pc01hY3JvVmFy'@; put 'cz12b2lkIDAsai5pc01hY3JvVmFycz15PT55JiYib2JqZWN0Ij09dHlwZW9mIHkubWFjcm9WYXJzJiYhQXJyYXkuaXNBcnJheSh5Lm1hY3JvVmFycyl9LDY3NzQ3KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDU0'@; put 'NDgzKGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5TQVNKc0ZpbGVUeXBlPXZvaWQgMCwoeT1qLlNBU0pzRmlsZVR5cGV8fChqLlNBU0pzRmlsZVR5cGU9e30pKS5zZXJ2aWNlPSJTZXJ2aWNlIix5Lmpv'@; put 'Yj0iSm9iIix5LnRlc3Q9IlRlc3QiLHkuZmlsZT0iRmlsZSJ9LDE1MDI4KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDIwNzU2KGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'aiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5TZXJ2ZXJUeXBlPXZvaWQgMCwoeT1qLlNlcnZlclR5cGV8fChqLlNlcnZlclR5cGU9e30pKS5TYXNWaXlhPSJTQVNWSVlBIix5LlNhczk9IlNBUzkiLHkuU2FzanM9IlNBU0pTIn0sMjc3MTcoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMzE4MihmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5UYXJnZXQ9dm9pZCAwO2NvbnN0IHk9aCgyMjkxNyksYz1oKDIwNzU2KSxzPWgo'@; put 'MTc0NzMpO2ouVGFyZ2V0PWNsYXNzIEF7Y29uc3RydWN0b3IoQyx3PXt9KXt0aGlzLl9zZXJ2ZXJUeXBlPWMuU2VydmVyVHlwZS5TYXNWaXlhLHRoaXMuZ2V0Q29uZmlnPShTLEwpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29uZmlnW1NdfHx7fSksTFtTXSk7dHJ5'@; put 'e2lmKCFDKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQ6IElucHV0IEpTT04gaXMgbnVsbCBvciB1bmRlZmluZWQuIik7dGhpcy5fY29uZmlnPXcsdGhpcy5fbmFtZT0oMCxzLnZhbGlkYXRlVGFyZ2V0TmFtZSkoQy5uYW1lKSx0aGlzLl9zZXJ2ZXJVcmw9KDAscy52YWxpZGF0ZVNl'@; put 'cnZlclVybCkoQy5zZXJ2ZXJVcmwpLHRoaXMuX3NlcnZlclR5cGU9KDAscy52YWxpZGF0ZVNlcnZlclR5cGUpKEMuc2VydmVyVHlwZSksdGhpcy5faHR0cHNBZ2VudE9wdGlvbnM9KDAscy52YWxpZGF0ZUh0dHBzQWdlbnRPcHRpb25zKShDLmh0dHBzQWdlbnRPcHRpb25zKSx0aGlzLl9hcHBM'@; put 'b2M9KDAscy52YWxpZGF0ZUFwcExvYykoQy5hcHBMb2MpLHRoaXMuX2NvbnRleHROYW1lPSgwLHMudmFsaWRhdGVDb250ZXh0TmFtZSkoQy5jb250ZXh0TmFtZSx0aGlzLl9zZXJ2ZXJUeXBlKSx0aGlzLl9zZXJ2ZXJOYW1lPSgwLHMudmFsaWRhdGVTZXJ2ZXJOYW1lKShDLnNlcnZlck5hbWUs'@; put 'dGhpcy5fc2VydmVyVHlwZSksdGhpcy5fc3luY0ZvbGRlcj0oMCxzLnZhbGlkYXRlU3luY0ZvbGRlcikoQy5zeW5jRm9sZGVyKSx0aGlzLl9yZXBvc2l0b3J5TmFtZT0oMCxzLnZhbGlkYXRlUmVwb3NpdG9yeU5hbWUpKEMucmVwb3NpdG9yeU5hbWUsdGhpcy5fc2VydmVyVHlwZSksQy5kb2ND'@; put 'b25maWcmJih0aGlzLl9kb2NDb25maWc9KDAscy52YWxpZGF0ZURvY0NvbmZpZykodGhpcy5nZXRDb25maWcoeS5Db25maWdUeXBlcy5Eb2MsQykpKSxDLmF1dGhDb25maWcmJih0aGlzLl9hdXRoQ29uZmlnPSgwLHMudmFsaWRhdGVBdXRoQ29uZmlnKSh0aGlzLmdldENvbmZpZyh5LkNvbmZp'@; put 'Z1R5cGVzLkF1dGgsQykpKSxDLmF1dGhDb25maWdTYXM5JiYodGhpcy5fYXV0aENvbmZpZ1Nhczk9KDAscy52YWxpZGF0ZUF1dGhDb25maWdTYXM5KShDLmF1dGhDb25maWdTYXM5KSksQy5idWlsZENvbmZpZyYmKHRoaXMuX2J1aWxkQ29uZmlnPSgwLHMudmFsaWRhdGVCdWlsZENvbmZpZyko'@; put 'dGhpcy5nZXRDb25maWcoeS5Db25maWdUeXBlcy5CdWlsZCxDKSx0aGlzLl9uYW1lKSksdGhpcy5fZGVwbG95Q29uZmlnPSgwLHMudmFsaWRhdGVEZXBsb3lDb25maWcpKEMuZGVwbG95Q29uZmlnP3RoaXMuZ2V0Q29uZmlnKHkuQ29uZmlnVHlwZXMuRGVwbG95LEMpOntkZXBsb3lTZXJ2aWNl'@; put 'UGFjazohMCxkZXBsb3lTY3JpcHRzOltdfSksQy5zZXJ2aWNlQ29uZmlnJiYodGhpcy5fc2VydmljZUNvbmZpZz0oMCxzLnZhbGlkYXRlU2VydmljZUNvbmZpZykodGhpcy5nZXRDb25maWcoeS5Db25maWdUeXBlcy5TZXJ2aWNlLEMpKSksQy5qb2JDb25maWcmJih0aGlzLl9qb2JDb25maWc9'@; put 'KDAscy52YWxpZGF0ZUpvYkNvbmZpZykodGhpcy5nZXRDb25maWcoeS5Db25maWdUeXBlcy5Kb2IsQykpKSxDLnN0cmVhbUNvbmZpZyYmKHRoaXMuX3N0cmVhbUNvbmZpZz0oMCxzLnZhbGlkYXRlU3RyZWFtQ29uZmlnKSh0aGlzLmdldENvbmZpZyh5LkNvbmZpZ1R5cGVzLlN0cmVhbSxDKSkp'@; put 'LEMudGVzdENvbmZpZyYmKHRoaXMuX3Rlc3RDb25maWc9KDAscy52YWxpZGF0ZVRlc3RDb25maWcpKHRoaXMuZ2V0Q29uZmlnKHkuQ29uZmlnVHlwZXMuVGVzdCxDKSkpLEMubWFjcm9Gb2xkZXJzJiZDLm1hY3JvRm9sZGVycy5sZW5ndGgmJih0aGlzLl9tYWNyb0ZvbGRlcnM9Qy5tYWNyb0Zv'@; put 'bGRlcnMpLEMucHJvZ3JhbUZvbGRlcnMmJkMucHJvZ3JhbUZvbGRlcnMubGVuZ3RoJiYodGhpcy5fcHJvZ3JhbUZvbGRlcnM9Qy5wcm9ncmFtRm9sZGVycyksQy5iaW5hcnlGb2xkZXJzJiZDLmJpbmFyeUZvbGRlcnMubGVuZ3RoJiYodGhpcy5fYmluYXJ5Rm9sZGVycz1DLmJpbmFyeUZvbGRl'@; put 'cnMpLEMuc3luY0RpcmVjdG9yaWVzJiZDLnN5bmNEaXJlY3Rvcmllcy5sZW5ndGgmJih0aGlzLl9zeW5jRGlyZWN0b3JpZXM9KDAscy52YWxpZGF0ZVN5bmNEaXJlY3RvcmllcykoQy5zeW5jRGlyZWN0b3JpZXMpKSxDLnNhc2pzQnVpbGRGb2xkZXImJih0aGlzLl9zYXNqc0J1aWxkRm9sZGVy'@; put 'PSgwLHMudmFsaWRhdGVTYXNqc0J1aWxkRm9sZGVyKShDLnNhc2pzQnVpbGRGb2xkZXIpKSxDLnNhc2pzUmVzdWx0c0ZvbGRlciYmKHRoaXMuX3Nhc2pzUmVzdWx0c0ZvbGRlcj0oMCxzLnZhbGlkYXRlU2FzanNSZXN1bHRzRm9sZGVyKShDLnNhc2pzUmVzdWx0c0ZvbGRlcikpfWNhdGNoKFMp'@; put 'e3Rocm93IG5ldyBFcnJvcihgRXJyb3IgcGFyc2luZyB0YXJnZXQ6ICR7Uy5tZXNzYWdlfWApfX1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfWdldCBzZXJ2ZXJVcmwoKXtyZXR1cm4gdGhpcy5fc2VydmVyVXJsfWdldCBzZXJ2ZXJUeXBlKCl7cmV0dXJuIHRoaXMuX3NlcnZlclR5cGV9'@; put 'Z2V0IGh0dHBzQWdlbnRPcHRpb25zKCl7cmV0dXJuIHRoaXMuX2h0dHBzQWdlbnRPcHRpb25zfWdldCBhcHBMb2MoKXtyZXR1cm4gdGhpcy5fYXBwTG9jfWdldCBkb2NDb25maWcoKXtyZXR1cm4gdGhpcy5fZG9jQ29uZmlnfWdldCBhdXRoQ29uZmlnKCl7cmV0dXJuIHRoaXMuX2F1dGhDb25m'@; put 'aWd9Z2V0IGF1dGhDb25maWdTYXM5KCl7cmV0dXJuIHRoaXMuX2F1dGhDb25maWdTYXM5fWdldCBidWlsZENvbmZpZygpe3JldHVybiB0aGlzLl9idWlsZENvbmZpZ31nZXQgZGVwbG95Q29uZmlnKCl7cmV0dXJuIHRoaXMuX2RlcGxveUNvbmZpZ31nZXQgc2VydmljZUNvbmZpZygpe3JldHVy'@; put 'biB0aGlzLl9zZXJ2aWNlQ29uZmlnfWdldCBqb2JDb25maWcoKXtyZXR1cm4gdGhpcy5fam9iQ29uZmlnfWdldCBzdHJlYW1Db25maWcoKXtyZXR1cm4gdGhpcy5fc3RyZWFtQ29uZmlnfWdldCBtYWNyb0ZvbGRlcnMoKXtyZXR1cm4gdGhpcy5fbWFjcm9Gb2xkZXJzfWdldCBwcm9ncmFtRm9s'@; put 'ZGVycygpe3JldHVybiB0aGlzLl9wcm9ncmFtRm9sZGVyc31nZXQgYmluYXJ5Rm9sZGVycygpe3JldHVybiB0aGlzLl9iaW5hcnlGb2xkZXJzfWdldCBjb250ZXh0TmFtZSgpe3JldHVybiB0aGlzLl9jb250ZXh0TmFtZX1nZXQgc2VydmVyTmFtZSgpe3JldHVybiB0aGlzLl9zZXJ2ZXJOYW1l'@; put 'fWdldCByZXBvc2l0b3J5TmFtZSgpe3JldHVybiB0aGlzLl9yZXBvc2l0b3J5TmFtZX1nZXQgdGVzdENvbmZpZygpe3JldHVybiB0aGlzLl90ZXN0Q29uZmlnfWdldCBzeW5jRm9sZGVyKCl7cmV0dXJuIHRoaXMuX3N5bmNGb2xkZXJ9Z2V0IHN5bmNEaXJlY3Rvcmllcygpe3JldHVybiB0aGlz'@; put 'Ll9zeW5jRGlyZWN0b3JpZXN9Z2V0IHNhc2pzQnVpbGRGb2xkZXIoKXtyZXR1cm4gdGhpcy5fc2FzanNCdWlsZEZvbGRlcn1nZXQgc2FzanNSZXN1bHRzRm9sZGVyKCl7cmV0dXJuIHRoaXMuX3Nhc2pzUmVzdWx0c0ZvbGRlcn10b0pzb24oQz0hMCl7dmFyIHcsUyxMO2NvbnN0IFI9e25hbWU6'@; put 'dGhpcy5uYW1lLHNlcnZlclVybDp0aGlzLnNlcnZlclVybCxzZXJ2ZXJUeXBlOnRoaXMuc2VydmVyVHlwZSxodHRwc0FnZW50T3B0aW9uczp0aGlzLmh0dHBzQWdlbnRPcHRpb25zLGFwcExvYzp0aGlzLmFwcExvYyxkb2NDb25maWc6dGhpcy5kb2NDb25maWcsZGVwbG95Q29uZmlnOnRoaXMu'@; put 'ZGVwbG95Q29uZmlnfTtyZXR1cm4hKG51bGw9PT0odz10aGlzLm1hY3JvRm9sZGVycyl8fHZvaWQgMD09PXcpJiZ3Lmxlbmd0aCYmKFIubWFjcm9Gb2xkZXJzPXRoaXMubWFjcm9Gb2xkZXJzKSwhKG51bGw9PT0oUz10aGlzLnByb2dyYW1Gb2xkZXJzKXx8dm9pZCAwPT09UykmJlMubGVuZ3Ro'@; put 'JiYoUi5wcm9ncmFtRm9sZGVycz10aGlzLnByb2dyYW1Gb2xkZXJzKSwhKG51bGw9PT0oTD10aGlzLmJpbmFyeUZvbGRlcnMpfHx2b2lkIDA9PT1MKSYmTC5sZW5ndGgmJihSLmJpbmFyeUZvbGRlcnM9dGhpcy5iaW5hcnlGb2xkZXJzKSx0aGlzLmF1dGhDb25maWcmJihSLmF1dGhDb25maWc9'@; put 'dGhpcy5hdXRoQ29uZmlnKSx0aGlzLmF1dGhDb25maWdTYXM5JiYoUi5hdXRoQ29uZmlnU2FzOT10aGlzLmF1dGhDb25maWdTYXM5KSx0aGlzLnNhc2pzQnVpbGRGb2xkZXI/Ui5zYXNqc0J1aWxkRm9sZGVyPXRoaXMuc2FzanNCdWlsZEZvbGRlcjpDJiYoUi5zYXNqc0J1aWxkRm9sZGVyPXMu'@; put 'REVGQVVMVF9TQVNKU19CVUlMRF9GT0xERVIpLHRoaXMuc2FzanNSZXN1bHRzRm9sZGVyP1Iuc2FzanNSZXN1bHRzRm9sZGVyPXRoaXMuc2FzanNSZXN1bHRzRm9sZGVyOkMmJihSLnNhc2pzUmVzdWx0c0ZvbGRlcj1zLkRFRkFVTFRfU0FTSlNfUkVTVUxUU19GT0xERVIpLHRoaXMuc3luY0Rp'@; put 'cmVjdG9yaWVzP1Iuc3luY0RpcmVjdG9yaWVzPXRoaXMuc3luY0RpcmVjdG9yaWVzOkMmJihSLnN5bmNEaXJlY3Rvcmllcz1bXSksdGhpcy5idWlsZENvbmZpZz9SLmJ1aWxkQ29uZmlnPXRoaXMuYnVpbGRDb25maWc6QyYmKFIuYnVpbGRDb25maWc9e2luaXRQcm9ncmFtOiIiLHRlcm1Qcm9n'@; put 'cmFtOiIiLGJ1aWxkT3V0cHV0RmlsZU5hbWU6YCR7dGhpcy5uYW1lfS5zYXNgLG1hY3JvVmFyczp7fX0pLHRoaXMuam9iQ29uZmlnP1Iuam9iQ29uZmlnPXRoaXMuam9iQ29uZmlnOkMmJihSLmpvYkNvbmZpZz17am9iRm9sZGVyczpbXSxpbml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixt'@; put 'YWNyb1ZhcnM6e319KSx0aGlzLnNlcnZpY2VDb25maWc/Ui5zZXJ2aWNlQ29uZmlnPXRoaXMuc2VydmljZUNvbmZpZzpDJiYoUi5zZXJ2aWNlQ29uZmlnPXtzZXJ2aWNlRm9sZGVyczpbXSxpbml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixtYWNyb1ZhcnM6e319KSx0aGlzLnN0cmVhbUNv'@; put 'bmZpZz9SLnN0cmVhbUNvbmZpZz10aGlzLnN0cmVhbUNvbmZpZzpDJiYoUi5zdHJlYW1Db25maWc9e3N0cmVhbVdlYkZvbGRlcjoiIixzdHJlYW1XZWI6ITEsd2ViU291cmNlUGF0aDoiIixzdHJlYW1TZXJ2aWNlTmFtZToiIixhc3NldFBhdGhzOltdfSksdGhpcy50ZXN0Q29uZmlnP1IudGVz'@; put 'dENvbmZpZz10aGlzLnRlc3RDb25maWc6QyYmKFIudGVzdENvbmZpZz17aW5pdFByb2dyYW06IiIsdGVybVByb2dyYW06IiIsbWFjcm9WYXJzOnt9LHRlc3RTZXRVcDoiIix0ZXN0VGVhckRvd246IiJ9KSx0aGlzLnNlcnZlclR5cGU9PT1jLlNlcnZlclR5cGUuU2FzVml5YT9SLmNvbnRleHRO'@; put 'YW1lPXRoaXMuY29udGV4dE5hbWU6dGhpcy5zZXJ2ZXJUeXBlPT09Yy5TZXJ2ZXJUeXBlLlNhczkmJihSLnNlcnZlck5hbWU9dGhpcy5zZXJ2ZXJOYW1lLFIucmVwb3NpdG9yeU5hbWU9dGhpcy5yZXBvc2l0b3J5TmFtZSksUn19fSwxNzQ3MyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10'@; put 'aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZil7cmV0dXJuIGYmJmYuX19lc01vZHVsZT9mOntkZWZhdWx0OmZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai52YWxpZGF0ZVNhc2pzUmVzdWx0c0ZvbGRlcj1qLnZhbGlkYXRl'@; put 'U2FzanNCdWlsZEZvbGRlcj1qLnZhbGlkYXRlU3luY0RpcmVjdG9yaWVzPWoudmFsaWRhdGVSZXBvc2l0b3J5TmFtZT1qLnZhbGlkYXRlU3luY0ZvbGRlcj1qLnZhbGlkYXRlU2VydmVyTmFtZT1qLnZhbGlkYXRlQ29udGV4dE5hbWU9ai52YWxpZGF0ZVN0cmVhbUNvbmZpZz1qLnZhbGlkYXRl'@; put 'RGVwbG95Q29uZmlnPWoudmFsaWRhdGVKb2JDb25maWc9ai52YWxpZGF0ZVRlc3RDb25maWc9ai52YWxpZGF0ZVNlcnZpY2VDb25maWc9ai52YWxpZGF0ZUJ1aWxkQ29uZmlnPWoudmFsaWRhdGVBdXRoQ29uZmlnU2FzOT1qLnZhbGlkYXRlQXV0aENvbmZpZz1qLnZhbGlkYXRlRG9jQ29uZmln'@; put 'PWoudmFsaWRhdGVBcHBMb2M9ai52YWxpZGF0ZUh0dHBzQWdlbnRPcHRpb25zPWoudmFsaWRhdGVTZXJ2ZXJVcmw9ai52YWxpZGF0ZVRhcmdldE5hbWU9ai52YWxpZGF0ZVNlcnZlclR5cGU9ai5ERUZBVUxUX1NBU0pTX1JFU1VMVFNfRk9MREVSPWouREVGQVVMVF9TQVNKU19CVUlMRF9GT0xE'@; put 'RVI9dm9pZCAwO2NvbnN0IGM9eShoKDE3ODUzKSkscz1oKDM2MzEpO2ouREVGQVVMVF9TQVNKU19CVUlMRF9GT0xERVI9InNhc2pzYnVpbGQiLGouREVGQVVMVF9TQVNKU19SRVNVTFRTX0ZPTERFUj0ic2FzanNyZXN1bHRzIixqLnZhbGlkYXRlU2VydmVyVHlwZT1mPT57aWYoIWYpdGhyb3cg'@; put 'bmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciB0eXBlOiBgc2VydmVyVHlwZWAgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKGYhPT1zLlNlcnZlclR5cGUuU2FzOSYmZiE9PXMuU2VydmVyVHlwZS5TYXNWaXlhJiZmIT09cy5TZXJ2ZXJUeXBlLlNhc2pzKXRocm93IG5ldyBFcnJv'@; put 'cihgSW52YWxpZCBzZXJ2ZXIgdHlwZTogU3VwcG9ydGVkIHZhbHVlcyBmb3IgIFxgc2VydmVyVHlwZVxgIGFyZSAke3MuU2VydmVyVHlwZS5TYXNWaXlhfSwgJHtzLlNlcnZlclR5cGUuU2FzOX0gYW5kICR7cy5TZXJ2ZXJUeXBlLlNhc2pzfS5gKTtyZXR1cm4gZn0sai52YWxpZGF0ZVRhcmdl'@; put 'dE5hbWU9Zj0+e2lmKCFmKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQgbmFtZTogYG5hbWVgIGNhbm5vdCBiZSBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoZi50cmltKCkuaW5jbHVkZXMoIiAiKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGFyZ2V0IG5hbWU6IGBu'@; put 'YW1lYCBjYW5ub3QgaW5jbHVkZSBzcGFjZXMuIik7aWYoIS9eW2EtekEtWjAtOVwtXSskL2kudGVzdChmKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGFyZ2V0IG5hbWU6IGBuYW1lYCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMuIik7cmV0'@; put 'dXJuIGZ9LGoudmFsaWRhdGVTZXJ2ZXJVcmw9Zj0+e2lmKG51bGw9PWYmJihmPSIiKSwiIiE9PWYmJiFjLmRlZmF1bHQuaXNIdHRwVXJpKGYpJiYhYy5kZWZhdWx0LmlzSHR0cHNVcmkoZikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciBVUkw6IGBzZXJ2ZXJVcmxgIHNob3VsZCBl'@; put 'aXRoZXIgYmUgYW4gZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgVVJMIG9mIHRoZSBmb3JtIGh0dHAocyk6Ly95b3VyLXNlcnZlci5jb20oOnBvcnQpLiIpO3JldHVybiBmfSxqLnZhbGlkYXRlSHR0cHNBZ2VudE9wdGlvbnM9Zj0+e2lmKGYpe2lmKCJvYmplY3QiIT10eXBlb2YgZil0aHJvdyBu'@; put 'ZXcgRXJyb3IoIkludmFsaWQgdmFsdWU6IGBodHRwc0FnZW50T3B0aW9uc2Agc2hvdWxkIGVpdGhlciBiZSBhbiBlbXB0eSBvciBhbiBvYmplY3Qgb2YgYEh0dHBzQWdlbnRPcHRpb25zYCIpO2lmKG51bGw9PWYuYWxsb3dJbnNlY3VyZVJlcXVlc3RzKWYuYWxsb3dJbnNlY3VyZVJlcXVlc3Rz'@; put 'PSExO2Vsc2UgaWYoImJvb2xlYW4iIT10eXBlb2YgZi5hbGxvd0luc2VjdXJlUmVxdWVzdHMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlOiBgaHR0cHNBZ2VudE9wdGlvbnMuYWxsb3dJbnNlY3VyZVJlcXVlc3RzYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IG9yIGEgYm9vbGVh'@; put 'biIpO3JldHVybiJzdHJpbmciIT10eXBlb2YgZi5jYVBhdGgmJihmLmNhUGF0aD12b2lkIDApLCJzdHJpbmciIT10eXBlb2YgZi5rZXlQYXRoJiYoZi5rZXlQYXRoPXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBmLmNlcnRQYXRoJiYoZi5jZXJ0UGF0aD12b2lkIDApLGZ9fSxqLnZhbGlkYXRl'@; put 'QXBwTG9jPWY9PntpZighZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXBwIGxvY2F0aW9uOiBgYXBwTG9jYCBjYW5ub3QgYmUgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKCFmLnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXBwIGxvY2F0aW9uOiBg'@; put 'YXBwTG9jYCBtdXN0IHN0YXJ0IHdpdGggYSBgL2AuIik7cmV0dXJuIGZ9LGoudmFsaWRhdGVEb2NDb25maWc9Zj0+e2lmKGZ8fChmPXt9KSwiYm9vbGVhbiIhPXR5cGVvZiBmLmRpc3BsYXlNYWNyb0NvcmUmJihmLmRpc3BsYXlNYWNyb0NvcmU9dm9pZCAwKSwiYm9vbGVhbiIhPXR5cGVvZiBm'@; put 'LmVuYWJsZUxpbmVhZ2UmJihmLmVuYWJsZUxpbmVhZ2U9dm9pZCAwKSwic3RyaW5nIiE9dHlwZW9mIGYub3V0RGlyZWN0b3J5JiYoZi5vdXREaXJlY3Rvcnk9dm9pZCAwKSwic3RyaW5nIj09dHlwZW9mIGYuZGF0YUNvbnRyb2xsZXJVcmwpe2lmKCIiIT09Zi5kYXRhQ29udHJvbGxlclVybCYm'@; put 'IWMuZGVmYXVsdC5pc0h0dHBVcmkoZi5kYXRhQ29udHJvbGxlclVybCkmJiFjLmRlZmF1bHQuaXNIdHRwc1VyaShmLmRhdGFDb250cm9sbGVyVXJsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGF0YSBDb250cm9sbGVyIFVybDogYGRhdGFDb250cm9sbGVyVXJsYCBzaG91bGQgZWl0aGVy'@; put 'IGJlIGFuIGVtcHR5IHN0cmluZyBvciBhIHZhbGlkIFVSTCBvZiB0aGUgZm9ybSBodHRwKHMpOi8veW91ci1zZXJ2ZXIuY29tKDpwb3J0KS4iKX1lbHNlIGYuZGF0YUNvbnRyb2xsZXJVcmw9dm9pZCAwO3JldHVybiBmfSxqLnZhbGlkYXRlQXV0aENvbmZpZz1mPT57aWYoIWYpdGhyb3cgbmV3'@; put 'IEVycm9yKCJJbnZhbGlkIGF1dGggY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gZn0sai52YWxpZGF0ZUF1dGhDb25maWdTYXM5PWY9PntpZighZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXV0aCBjb25maWcgZm9yIHNhczk6IEpTT04gY2Fu'@; put 'bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKCFmLnVzZXJOYW1lfHwhZi5wYXNzd29yZCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXV0aCBjb25maWcgZm9yIHNhczk6IHVzZXJOYW1lIGFuZCBwYXNzd29yZCBjYW4gbm90IGJlIGVtcHR5Iik7cmV0dXJuIGZ9LGoudmFsaWRhdGVC'@; put 'dWlsZENvbmZpZz0oZixiKT0+e2lmKCFmKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBidWlsZCBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBmLmJ1aWxkT3V0cHV0RmlsZU5hbWV8fChmLmJ1aWxkT3V0cHV0RmlsZU5hbWU9YCR7Yn0uc2FzYCks'@; put 'Zi5pbml0UHJvZ3JhbXx8KGYuaW5pdFByb2dyYW09IiIpLGYudGVybVByb2dyYW18fChmLnRlcm1Qcm9ncmFtPSIiKSxmLm1hY3JvVmFyc3x8KGYubWFjcm9WYXJzPXt9KSxmfSxqLnZhbGlkYXRlU2VydmljZUNvbmZpZz1mPT57aWYoIWYpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZp'@; put 'Y2UgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gZi5pbml0UHJvZ3JhbXx8KGYuaW5pdFByb2dyYW09IiIpLGYudGVybVByb2dyYW18fChmLnRlcm1Qcm9ncmFtPSIiKSxmLnNlcnZpY2VGb2xkZXJzfHwoZi5zZXJ2aWNlRm9sZGVycz1bXSksZi5t'@; put 'YWNyb1ZhcnN8fChmLm1hY3JvVmFycz17fSksZn0sai52YWxpZGF0ZVRlc3RDb25maWc9Zj0+e2lmKCFmKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0ZXN0IGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIGYuaW5pdFByb2dyYW18fChmLmluaXRQ'@; put 'cm9ncmFtPSIiKSxmLnRlcm1Qcm9ncmFtfHwoZi50ZXJtUHJvZ3JhbT0iIiksZi5tYWNyb1ZhcnN8fChmLm1hY3JvVmFycz17fSksZi50ZXN0U2V0VXB8fChmLnRlc3RTZXRVcD0iIiksZi50ZXN0VGVhckRvd258fChmLnRlc3RUZWFyRG93bj0iIiksZn0sai52YWxpZGF0ZUpvYkNvbmZpZz1m'@; put 'PT57aWYoIWYpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGpvYiBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBmLmluaXRQcm9ncmFtfHwoZi5pbml0UHJvZ3JhbT0iIiksZi50ZXJtUHJvZ3JhbXx8KGYudGVybVByb2dyYW09IiIpLGYuam9iRm9s'@; put 'ZGVyc3x8KGYuam9iRm9sZGVycz1bXSksZi5tYWNyb1ZhcnN8fChmLm1hY3JvVmFycz17fSksZn0sai52YWxpZGF0ZURlcGxveUNvbmZpZz1mPT57aWYoIWYpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRlcGxveSBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIp'@; put 'O3JldHVybiBmLmRlcGxveVNlcnZpY2VQYWNrPSEhZi5kZXBsb3lTZXJ2aWNlUGFjayxmLmRlcGxveVNjcmlwdHN8fChmLmRlcGxveVNjcmlwdHM9W10pLGZ9LGoudmFsaWRhdGVTdHJlYW1Db25maWc9Zj0+e2lmKCFmKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0gY29uZmlnOiBK'@; put 'U09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZighMCE9PWYuc3RyZWFtV2ViJiYhMSE9PWYuc3RyZWFtV2ViKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0gY29uZmlnOiBgc3RyZWFtV2ViYCBjYW5ub3QgYmUgYSBub24tYm9vbGVhbiB2YWx1ZS4iKTtpZihmLnN0'@; put 'cmVhbVdlYiYmIWYuc3RyZWFtV2ViRm9sZGVyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0gY29uZmlnOiBgc3RyZWFtV2ViRm9sZGVyYCBjYW5ub3QgYmUgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gYHN0cmVhbVdlYmAgaXMgdHJ1ZS4iKTtpZihmLnN0cmVhbVdlYiYm'@; put 'IWYud2ViU291cmNlUGF0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogYHdlYlNvdXJjZVBhdGhgIHNob3VsZCBjb250YWluIHRoZSBwYXRoIHRvIHlvdXIgZnJvbnRlbmQgYXBwbGljYXRpb24gZWcgYnVpbGQsIGRpc3QsIG9yIHNyYy4iKTtyZXR1cm4gZi5zdHJl'@; put 'YW1Mb2dvJiYic3RyaW5nIiE9dHlwZW9mIGYuc3RyZWFtTG9nbyYmKGYuc3RyZWFtTG9nbz12b2lkIDApLGYuYXNzZXRQYXRoc3x8KGYuYXNzZXRQYXRocz1bXSksZi5zdHJlYW1TZXJ2aWNlTmFtZXx8KGYuc3RyZWFtU2VydmljZU5hbWU9ImNsaWNrbWUiKSxmfSxqLnZhbGlkYXRlQ29udGV4'@; put 'dE5hbWU9KGYsYik9PmIhPT1zLlNlcnZlclR5cGUuU2FzVml5YXx8Zj9mOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiLGoudmFsaWRhdGVTZXJ2ZXJOYW1lPShmLGIpPT5iIT09cy5TZXJ2ZXJUeXBlLlNhczl8fGY/ZjoiU0FTQXBwIixqLnZhbGlkYXRlU3luY0ZvbGRlcj1m'@; put 'PT57aWYoInN0cmluZyI9PXR5cGVvZiBmJiZmKXJldHVybiBmfSxqLnZhbGlkYXRlUmVwb3NpdG9yeU5hbWU9KGYsYik9PmIhPT1zLlNlcnZlclR5cGUuU2FzOXx8Zj9mOiJGb3VuZGF0aW9uIixqLnZhbGlkYXRlU3luY0RpcmVjdG9yaWVzPWY9PntpZighZil0aHJvdyBuZXcgRXJyb3IoIklu'@; put 'dmFsaWQgc3luY0RpcmVjdG9yaWVzIGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIGYuZm9yRWFjaChiPT57aWYoIWIubG9jYWx8fCFiLnJlbW90ZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3luY0RpcmVjdG9yeSBjb25maWc6IHZhbHVlcyBv'@; put 'ZiBwcm9wZXJ0eSAnbG9jYWwnIGFuZCAncmVtb3RlIGNhbiBub3QgYmUgZW1wdHkgb3IgdW5kZWZpbmVkIil9KSxmfSxqLnZhbGlkYXRlU2FzanNCdWlsZEZvbGRlcj1mPT57aWYoInN0cmluZyIhPXR5cGVvZiBmKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eXBlIG9mIHZhbHVlICgke3R5'@; put 'cGVvZiBmfSkgaXMgcHJvdmlkZWQgZm9yIHByb3BlcnR5ICdzYXNqc0J1aWxkRm9sZGVyJyBpbiBjb25maWcuIFJlcXVpcmVkIGlzIHN0cmluZy5gKTtyZXR1cm4gZnx8ai5ERUZBVUxUX1NBU0pTX0JVSUxEX0ZPTERFUn0sai52YWxpZGF0ZVNhc2pzUmVzdWx0c0ZvbGRlcj1mPT57aWYoInN0'@; put 'cmluZyIhPXR5cGVvZiBmKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eXBlIG9mIHZhbHVlICgke3R5cGVvZiBmfSkgaXMgcHJvdmlkZWQgZm9yIHByb3BlcnR5ICdzYXNqc1Jlc3VsdHNGb2xkZXInIGluIGNvbmZpZy4gUmVxdWlyZWQgaXMgc3RyaW5nLmApO3JldHVybiBmfHxqLkRFRkFV'@; put 'TFRfU0FTSlNfUkVTVUxUU19GT0xERVJ9fSw2OTg5MihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQ4Mjg3KS5CdWZmZXIsYz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24odyl7cmV0dXJuIHcmJncuX19lc01vZHVsZT93OntkZWZhdWx0Ond9fTtPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5kZWNvZGVGcm9tQmFzZTY0PWouZW5jb2RlVG9CYXNlNjQ9dm9pZCAwO2NvbnN0IHM9YyhoKDkxNTY1KSksQT0ie3Nhc2pzX2VuY29kZWR9IjtqLmVuY29kZVRvQmFzZTY0PXc9Pntjb25zdCBTPXMuZGVmYXVsdC5yYW5k'@; put 'b21CeXRlcygxMDApLnRvU3RyaW5nKCJoZXgiKSxMPXkuZnJvbShTK3cpLnRvU3RyaW5nKCJiYXNlNjQiKTtyZXR1cm4gQStMfSxqLmRlY29kZUZyb21CYXNlNjQ9dz0+dy5zdGFydHNXaXRoKEEpPyh3PXcucmVwbGFjZSgvXntzYXNqc19lbmNvZGVkfS8sIiIpLHkuZnJvbSh3LCJiYXNlNjQi'@; put 'KS50b1N0cmluZygpLnN1YnN0cmluZygyMDApKTp3fSw5OTc0MChmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouYnl0ZXNUb1NpemU9dm9pZCAwLGouYnl0ZXNUb1NpemU9KHksYz0xLHM9MTA5OTUxMTYyNzc3Nik9'@; put 'PntpZigwPT09eSlyZXR1cm4iMCBCIjt5PXk+cz9zOnk7Y29uc3QgQz1jPDA/MDpjLHc9TWF0aC5mbG9vcihNYXRoLmxvZyh5KS9NYXRoLmxvZygxMDI0KSk7cmV0dXJuKHkvTWF0aC5wb3coMTAyNCx3KSkudG9GaXhlZChDKSsiICIrWyJCIiwiS0IiLCJNQiIsIkdCIiwiVEIiXVt3XX19LDc4'@; put 'Mjg2KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5jaHVuaz12b2lkIDAsai5jaHVuaz1mdW5jdGlvbiBoKHksYz0yMjApe3JldHVybiB5Lmxlbmd0aDw9Yz9beV06KHkubWF0Y2gobmV3IFJlZ0V4cCgiLnsxLCIr'@; put 'YysifSIsImciKSl8fFtdKS5maWx0ZXIocz0+ISFzKX19LDYyODIwKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5kaWZmPXZvaWQgMCxqLmRpZmY9ZnVuY3Rpb24gaCh5LGMpe3JldHVyblsuLi55LmZpbHRlcih2'@; put 'PT4ib2JqZWN0Ij09dHlwZW9mIHY/IUpTT04uc3RyaW5naWZ5KGMpLmluY2x1ZGVzKEpTT04uc3RyaW5naWZ5KHYpKTohYy5pbmNsdWRlcyh2KSksLi4uYy5maWx0ZXIodj0+Im9iamVjdCI9PXR5cGVvZiB2PyFKU09OLnN0cmluZ2lmeSh5KS5pbmNsdWRlcyhKU09OLnN0cmluZ2lmeSh2KSk6'@; put 'IXkuaW5jbHVkZXModikpXX19LDUxNjYyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5nZXRFeGVjdXRvclBhdGg9dm9pZCAwO2NvbnN0IGg9e1NBU1ZJWUE6Ii9TQVNKb2JFeGVjdXRpb24iLFNBUzk6Ii9TQVNT'@; put 'dG9yZWRQcm9jZXNzL2RvIn07ai5nZXRFeGVjdXRvclBhdGg9Yz0+Yz8oYz1jLnRvVXBwZXJDYXNlKCksaFtjXXx8IiIpOiIifSwxMTQyOShmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5nZXRUcmVlRXhhbXBs'@; put 'ZT1qLmlzRmlsZVRyZWU9dm9pZCAwO2NvbnN0IHk9aCgzNjMxKTtqLmlzRmlsZVRyZWU9dz0+dyYmdy5tZW1iZXJzJiZBcnJheS5pc0FycmF5KHcubWVtYmVycykmJjA9PT13Lm1lbWJlcnMuZmlsdGVyKFM9PiFzKFMpJiYhQShTKSYmIXYoUykpLmxlbmd0aDtjb25zdCBzPXc9PncmJiJzdHJp'@; put 'bmciPT10eXBlb2Ygdy5uYW1lJiZ3LnR5cGU9PT15Lk1lbWJlclR5cGUuc2VydmljZSYmInN0cmluZyI9PXR5cGVvZiB3LmNvZGUsQT13PT53JiYic3RyaW5nIj09dHlwZW9mIHcubmFtZSYmdy50eXBlPT09eS5NZW1iZXJUeXBlLmZpbGUmJiJzdHJpbmciPT10eXBlb2Ygdy5jb2RlLHY9dz0+'@; put 'dyYmInN0cmluZyI9PXR5cGVvZiB3Lm5hbWUmJncudHlwZT09PXkuTWVtYmVyVHlwZS5mb2xkZXImJncubWVtYmVycyYmQXJyYXkuaXNBcnJheSh3Lm1lbWJlcnMpJiYwPT09dy5tZW1iZXJzLmZpbHRlcihTPT4hcyhTKSYmIUEoUykmJiF2KFMpKS5sZW5ndGg7ai5nZXRUcmVlRXhhbXBsZT0o'@; put 'KT0+KHttZW1iZXJzOlt7bmFtZToiam9icyIsdHlwZTp5Lk1lbWJlclR5cGUuZm9sZGVyLG1lbWJlcnM6W3tuYW1lOiJleHRyYWN0Iix0eXBlOnkuTWVtYmVyVHlwZS5mb2xkZXIsbWVtYmVyczpbe25hbWU6Im1ha2VkYXRhMSIsdHlwZTp5Lk1lbWJlclR5cGUuc2VydmljZSxjb2RlOiIlcHV0'@; put 'IEhlbGxvIFdvcmxkITsifV19XX1dfSl9LDUyNzYzKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihSLHgsVSxIKXt2b2lkIDA9PT1IJiYoSD1VKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUixILHtl'@; put 'bnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB4W1VdfX0pfTpmdW5jdGlvbihSLHgsVSxIKXt2b2lkIDA9PT1IJiYoSD1VKSxSW0hdPXhbVV19KSxjPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihSLHgpe2Zvcih2YXIgVSBpbiBSKSJkZWZhdWx0IiE9PVUmJiFP'@; put 'YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCxVKSYmeSh4LFIsVSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmNodW5rPWouZGlmZj1qLmJ5dGVzVG9TaXplPWouZ2V0RXhlY3V0b3JQYXRoPWouZGVjb2RlRnJvbUJhc2U2'@; put 'ND1qLmVuY29kZVRvQmFzZTY0PWoudXJsT3JpZ2luPWouZ2VuZXJhdGVQYXRoRm9yU2FzPWouZ2V0TWFjcm9zUGF0aD1qLmVzY2FwZVdpblNsYXNoZXM9ai5pc0xpbnV4PWouaXNXaW5kb3dzPWoudW5pcUFycmF5PWouYXN5bmNGb3JFYWNoPWoudXVpZHY0PXZvaWQgMDt2YXIgcz1oKDI2MDg2'@; put 'KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwidXVpZHY0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy51dWlkdjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImFzeW5jRm9yRWFjaCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuYXN5'@; put 'bmNGb3JFYWNofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJ1bmlxQXJyYXkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLnVuaXFBcnJheX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiaXNXaW5kb3dzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gcy5pc1dpbmRvd3N9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImlzTGludXgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmlzTGludXh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImVzY2FwZVdpblNsYXNoZXMiLHtlbnVtZXJhYmxlOiEw'@; put 'LGdldDpmdW5jdGlvbigpe3JldHVybiBzLmVzY2FwZVdpblNsYXNoZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGosImdldE1hY3Jvc1BhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmdldE1hY3Jvc1BhdGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGos'@; put 'ImdlbmVyYXRlUGF0aEZvclNhcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuZ2VuZXJhdGVQYXRoRm9yU2FzfX0pLGMoaCgxMTQyOSksaik7dmFyIEE9aCg5MjA0Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosInVybE9yaWdpbiIse2VudW1lcmFibGU6ITAsZ2V0'@; put 'OmZ1bmN0aW9uKCl7cmV0dXJuIEEudXJsT3JpZ2lufX0pO3ZhciB2PWgoNjk4OTIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJlbmNvZGVUb0Jhc2U2NCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuZW5jb2RlVG9CYXNlNjR9fSksT2JqZWN0LmRlZmluZVByb3Bl'@; put 'cnR5KGosImRlY29kZUZyb21CYXNlNjQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2LmRlY29kZUZyb21CYXNlNjR9fSk7dmFyIEM9aCg1MTY2Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosImdldEV4ZWN1dG9yUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0'@; put 'aW9uKCl7cmV0dXJuIEMuZ2V0RXhlY3V0b3JQYXRofX0pO3ZhciB3PWgoOTk3NDApO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJieXRlc1RvU2l6ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuYnl0ZXNUb1NpemV9fSk7dmFyIFM9aCg2MjgyMCk7T2JqZWN0LmRl'@; put 'ZmluZVByb3BlcnR5KGosImRpZmYiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBTLmRpZmZ9fSk7dmFyIEw9aCg3ODI4Nik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosImNodW5rIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTC5jaHVua319KX0s'@; put 'OTIwNDIoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnVybE9yaWdpbj12b2lkIDAsai51cmxPcmlnaW49eT0+e2lmKCIiPT09eSlyZXR1cm4geTtsZXQgYzt0cnl7Yz1uZXcgVVJMKHkpLm9yaWdpbn1jYXRjaHt0'@; put 'aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVVJMLiIpfXJldHVybiBjfX0sMjYwODYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIGM9aCg2NTYwNikscz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVixOLHosWSl7cmV0dXJuIG5ldyh6fHwoej1Qcm9taXNlKSkoZnVuY3Rpb24oVyxx'@; put 'KXtmdW5jdGlvbiByZShJZSl7dHJ5e0NlKFkubmV4dChJZSkpfWNhdGNoKGtlKXtxKGtlKX19ZnVuY3Rpb24gbWUoSWUpe3RyeXtDZShZLnRocm93KEllKSl9Y2F0Y2goa2Upe3Eoa2UpfX1mdW5jdGlvbiBDZShJZSl7SWUuZG9uZT9XKEllLnZhbHVlKTpmdW5jdGlvbiBGKFcpe3JldHVybiBX'@; put 'IGluc3RhbmNlb2Ygej9XOm5ldyB6KGZ1bmN0aW9uKHEpe3EoVyl9KX0oSWUudmFsdWUpLnRoZW4ocmUsbWUpfUNlKChZPVkuYXBwbHkoVixOfHxbXSkpLm5leHQoKSl9KX0sQT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oVil7cmV0dXJuIFYmJlYuX19lc01vZHVsZT9W'@; put 'OntkZWZhdWx0OlZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5nZW5lcmF0ZVBhdGhGb3JTYXM9ai5nZXRNYWNyb3NQYXRoPWouZXNjYXBlV2luU2xhc2hlcz1qLmlzTGludXg9ai5pc1dpbmRvd3M9ai51bmlxQXJyYXk9ai51dWlkdjQ9ai5h'@; put 'c3luY0ZvckVhY2g9dm9pZCAwO2NvbnN0IHY9QShoKDQzNjI3KSk7ai5hc3luY0ZvckVhY2g9ZnVuY3Rpb24gQyhWLE4pe3JldHVybiBzKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtmb3IobGV0IHo9MDt6PFYubGVuZ3RoO3orKyl5aWVsZCBOKFZbel0seixWKX0pfSxqLnV1aWR2'@; put 'ND0oKT0+Inh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIucmVwbGFjZSgvW3h5XS9nLFY9Pntjb25zdCBOPTE2Kk1hdGgucmFuZG9tKCl8MDtyZXR1cm4oIngiPT1WP046MyZOfDgpLnRvU3RyaW5nKDE2KX0pLGoudW5pcUFycmF5PVY9PkFycmF5LmZyb20obmV3IFNldChW'@; put 'KSksai5pc1dpbmRvd3M9KCk9PiJ3aW4zMiI9PT1jLnBsYXRmb3JtLGouaXNMaW51eD0oKT0+ImxpbnV4Ij09PWMucGxhdGZvcm0sai5lc2NhcGVXaW5TbGFzaGVzPVY9PigwLGouaXNXaW5kb3dzKSgpP1YucmVwbGFjZSgvXFwvZywiXFxcXCIpOlYsai5nZXRNYWNyb3NQYXRoPSgpPT52LmRl'@; put 'ZmF1bHQuam9pbigiLyIsIi4uIiwibWFjcm9zIiksai5nZW5lcmF0ZVBhdGhGb3JTYXM9Vj0+Vi5yZXBsYWNlKC9cXC9nLCIvIil9LDg3NTY4KGZlLGosaCl7dmFyIHk9ajt5LmJpZ251bT1oKDcyMzQ0KSx5LmRlZmluZT1oKDQ3MzYzKS5kZWZpbmUseS5iYXNlPWgoOTY3MykseS5jb25zdGFu'@; put 'dHM9aCgyMjE1MykseS5kZWNvZGVycz1oKDIyODUzKSx5LmVuY29kZXJzPWgoMjQ2NjkpfSw0NzM2MyhmZSxqLGgpe3ZhciB5PWgoODc1NjgpLGM9aCg1NjY5OCk7ZnVuY3Rpb24gQSh2LEMpe3RoaXMubmFtZT12LHRoaXMuYm9keT1DLHRoaXMuZGVjb2RlcnM9e30sdGhpcy5lbmNvZGVycz17'@; put 'fX1qLmRlZmluZT1mdW5jdGlvbihDLHcpe3JldHVybiBuZXcgQShDLHcpfSxBLnByb3RvdHlwZS5fY3JlYXRlTmFtZWQ9ZnVuY3Rpb24oQyl7dmFyIHc7dHJ5e3c9aCg2ODk2MSkucnVuSW5UaGlzQ29udGV4dCgiKGZ1bmN0aW9uICIrdGhpcy5uYW1lKyIoZW50aXR5KSB7XG4gIHRoaXMuX2lu'@; put 'aXROYW1lZChlbnRpdHkpO1xufSkiKX1jYXRjaHt3PWZ1bmN0aW9uKEwpe3RoaXMuX2luaXROYW1lZChMKX19cmV0dXJuIGModyxDKSx3LnByb3RvdHlwZS5faW5pdE5hbWVkPWZ1bmN0aW9uKEwpe0MuY2FsbCh0aGlzLEwpfSxuZXcgdyh0aGlzKX0sQS5wcm90b3R5cGUuX2dldERlY29kZXI9'@; put 'ZnVuY3Rpb24oQyl7cmV0dXJuIHRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoQz1DfHwiZGVyIil8fCh0aGlzLmRlY29kZXJzW0NdPXRoaXMuX2NyZWF0ZU5hbWVkKHkuZGVjb2RlcnNbQ10pKSx0aGlzLmRlY29kZXJzW0NdfSxBLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oQyx3LFMp'@; put 'e3JldHVybiB0aGlzLl9nZXREZWNvZGVyKHcpLmRlY29kZShDLFMpfSxBLnByb3RvdHlwZS5fZ2V0RW5jb2Rlcj1mdW5jdGlvbihDKXtyZXR1cm4gdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShDPUN8fCJkZXIiKXx8KHRoaXMuZW5jb2RlcnNbQ109dGhpcy5fY3JlYXRlTmFtZWQoeS5l'@; put 'bmNvZGVyc1tDXSkpLHRoaXMuZW5jb2RlcnNbQ119LEEucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihDLHcsUyl7cmV0dXJuIHRoaXMuX2dldEVuY29kZXIodykuZW5jb2RlKEMsUyl9fSw0NzIyNyhmZSxqLGgpe3ZhciB5PWgoNTY2OTgpLGM9aCg5NjczKS5SZXBvcnRlcixzPWgoNDgyODcp'@; put 'LkJ1ZmZlcjtmdW5jdGlvbiBBKEMsdyl7Yy5jYWxsKHRoaXMsdykscy5pc0J1ZmZlcihDKT8odGhpcy5iYXNlPUMsdGhpcy5vZmZzZXQ9MCx0aGlzLmxlbmd0aD1DLmxlbmd0aCk6dGhpcy5lcnJvcigiSW5wdXQgbm90IEJ1ZmZlciIpfWZ1bmN0aW9uIHYoQyx3KXtpZihBcnJheS5pc0FycmF5'@; put 'KEMpKXRoaXMubGVuZ3RoPTAsdGhpcy52YWx1ZT1DLm1hcChmdW5jdGlvbihTKXtyZXR1cm4gUyBpbnN0YW5jZW9mIHZ8fChTPW5ldyB2KFMsdykpLHRoaXMubGVuZ3RoKz1TLmxlbmd0aCxTfSx0aGlzKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgQyl7aWYoISgwPD1DJiZDPD0yNTUpKXJl'@; put 'dHVybiB3LmVycm9yKCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlIik7dGhpcy52YWx1ZT1DLHRoaXMubGVuZ3RoPTF9ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIEMpdGhpcy52YWx1ZT1DLHRoaXMubGVuZ3RoPXMuYnl0ZUxlbmd0aChDKTtlbHNle2lmKCFzLmlzQnVmZmVyKEMpKXJl'@; put 'dHVybiB3LmVycm9yKCJVbnN1cHBvcnRlZCB0eXBlOiAiK3R5cGVvZiBDKTt0aGlzLnZhbHVlPUMsdGhpcy5sZW5ndGg9Qy5sZW5ndGh9fXkoQSxjKSxqLnQ9QSxBLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7cmV0dXJue29mZnNldDp0aGlzLm9mZnNldCxyZXBvcnRlcjpjLnByb3RvdHlw'@; put 'ZS5zYXZlLmNhbGwodGhpcyl9fSxBLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKHcpe3ZhciBTPW5ldyBBKHRoaXMuYmFzZSk7cmV0dXJuIFMub2Zmc2V0PXcub2Zmc2V0LFMubGVuZ3RoPXRoaXMub2Zmc2V0LHRoaXMub2Zmc2V0PXcub2Zmc2V0LGMucHJvdG90eXBlLnJlc3RvcmUuY2Fs'@; put 'bCh0aGlzLHcucmVwb3J0ZXIpLFN9LEEucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQ9PT10aGlzLmxlbmd0aH0sQS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHcpe3JldHVybiB0aGlzLm9mZnNldCsxPD10aGlzLmxlbmd0aD90aGlzLmJhc2Uu'@; put 'cmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssITApOnRoaXMuZXJyb3Iod3x8IkRlY29kZXJCdWZmZXIgb3ZlcnJ1biIpfSxBLnByb3RvdHlwZS5za2lwPWZ1bmN0aW9uKHcsUyl7aWYoISh0aGlzLm9mZnNldCt3PD10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXMuZXJyb3IoU3x8IkRlY29kZXJCdWZm'@; put 'ZXIgb3ZlcnJ1biIpO3ZhciBMPW5ldyBBKHRoaXMuYmFzZSk7cmV0dXJuIEwuX3JlcG9ydGVyU3RhdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxMLm9mZnNldD10aGlzLm9mZnNldCxMLmxlbmd0aD10aGlzLm9mZnNldCt3LHRoaXMub2Zmc2V0Kz13LEx9LEEucHJvdG90eXBlLnJhdz1mdW5jdGlv'@; put 'bih3KXtyZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHc/dy5vZmZzZXQ6dGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfSxqLmQ9dix2LnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHcsUyl7cmV0dXJuIHd8fCh3PW5ldyBzKHRoaXMubGVuZ3RoKSksU3x8KFM9MCksMD09PXRoaXMubGVuZ3RofHwoQXJy'@; put 'YXkuaXNBcnJheSh0aGlzLnZhbHVlKT90aGlzLnZhbHVlLmZvckVhY2goZnVuY3Rpb24oTCl7TC5qb2luKHcsUyksUys9TC5sZW5ndGh9KTooIm51bWJlciI9PXR5cGVvZiB0aGlzLnZhbHVlP3dbU109dGhpcy52YWx1ZToic3RyaW5nIj09dHlwZW9mIHRoaXMudmFsdWU/dy53cml0ZSh0aGlz'@; put 'LnZhbHVlLFMpOnMuaXNCdWZmZXIodGhpcy52YWx1ZSkmJnRoaXMudmFsdWUuY29weSh3LFMpLFMrPXRoaXMubGVuZ3RoKSksd319LDk2NzMoZmUsaixoKXt2YXIgeT1qO3kuUmVwb3J0ZXI9aCg4OTIyMCkuYSx5LkRlY29kZXJCdWZmZXI9aCg0NzIyNykudCx5LkVuY29kZXJCdWZmZXI9aCg0'@; put 'NzIyNykuZCx5Lk5vZGU9aCg5MDk5Myl9LDkwOTkzKGZlLGosaCl7dmFyIHk9aCg5NjczKS5SZXBvcnRlcixjPWgoOTY3MykuRW5jb2RlckJ1ZmZlcixzPWgoOTY3MykuRGVjb2RlckJ1ZmZlcixBPWgoNDMzNDkpLHY9WyJzZXEiLCJzZXFvZiIsInNldCIsInNldG9mIiwib2JqaWQiLCJib29s'@; put 'IiwiZ2VudGltZSIsInV0Y3RpbWUiLCJudWxsXyIsImVudW0iLCJpbnQiLCJvYmpEZXNjIiwiYml0c3RyIiwiYm1wc3RyIiwiY2hhcnN0ciIsImdlbnN0ciIsImdyYXBoc3RyIiwiaWE1c3RyIiwiaXNvNjQ2c3RyIiwibnVtc3RyIiwib2N0c3RyIiwicHJpbnRzdHIiLCJ0NjFzdHIiLCJ1bmlz'@; put 'dHIiLCJ1dGY4c3RyIiwidmlkZW9zdHIiXSxDPVsia2V5Iiwib2JqIiwidXNlIiwib3B0aW9uYWwiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiZGVmIiwiY2hvaWNlIiwiYW55IiwiY29udGFpbnMiXS5jb25jYXQodik7ZnVuY3Rpb24gUyhSLHgpe3ZhciBVPXt9O3RoaXMuX2Jhc2VTdGF0ZT1V'@; put 'LFUuZW5jPVIsVS5wYXJlbnQ9eHx8bnVsbCxVLmNoaWxkcmVuPW51bGwsVS50YWc9bnVsbCxVLmFyZ3M9bnVsbCxVLnJldmVyc2VBcmdzPW51bGwsVS5jaG9pY2U9bnVsbCxVLm9wdGlvbmFsPSExLFUuYW55PSExLFUub2JqPSExLFUudXNlPW51bGwsVS51c2VEZWNvZGVyPW51bGwsVS5rZXk9'@; put 'bnVsbCxVLmRlZmF1bHQ9bnVsbCxVLmV4cGxpY2l0PW51bGwsVS5pbXBsaWNpdD1udWxsLFUuY29udGFpbnM9bnVsbCxVLnBhcmVudHx8KFUuY2hpbGRyZW49W10sdGhpcy5fd3JhcCgpKX1mZS5leHBvcnRzPVM7dmFyIEw9WyJlbmMiLCJwYXJlbnQiLCJjaGlsZHJlbiIsInRhZyIsImFyZ3Mi'@; put 'LCJyZXZlcnNlQXJncyIsImNob2ljZSIsIm9wdGlvbmFsIiwiYW55Iiwib2JqIiwidXNlIiwiYWx0ZXJlZFVzZSIsImtleSIsImRlZmF1bHQiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiY29udGFpbnMiXTtTLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB4PXRoaXMuX2Jhc2VTdGF0'@; put 'ZSxVPXt9O0wuZm9yRWFjaChmdW5jdGlvbihWKXtVW1ZdPXhbVl19KTt2YXIgSD1uZXcgdGhpcy5jb25zdHJ1Y3RvcihVLnBhcmVudCk7cmV0dXJuIEguX2Jhc2VTdGF0ZT1VLEh9LFMucHJvdG90eXBlLl93cmFwPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5fYmFzZVN0YXRlO0MuZm9yRWFjaChm'@; put 'dW5jdGlvbihVKXt0aGlzW1VdPWZ1bmN0aW9uKCl7dmFyIFY9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIHguY2hpbGRyZW4ucHVzaChWKSxWW1VdLmFwcGx5KFYsYXJndW1lbnRzKX19LHRoaXMpfSxTLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih4KXt2YXIgVT10aGlzLl9i'@; put 'YXNlU3RhdGU7QShudWxsPT09VS5wYXJlbnQpLHguY2FsbCh0aGlzKSxVLmNoaWxkcmVuPVUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKEgpe3JldHVybiBILl9iYXNlU3RhdGUucGFyZW50PT09dGhpc30sdGhpcyksQS5lcXVhbChVLmNoaWxkcmVuLmxlbmd0aCwxLCJSb290IG5vZGUgY2Fu'@; put 'IGhhdmUgb25seSBvbmUgY2hpbGQiKX0sUy5wcm90b3R5cGUuX3VzZUFyZ3M9ZnVuY3Rpb24oeCl7dmFyIFU9dGhpcy5fYmFzZVN0YXRlLEg9eC5maWx0ZXIoZnVuY3Rpb24oVil7cmV0dXJuIFYgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSx0aGlzKTt4PXguZmlsdGVyKGZ1bmN0aW9u'@; put 'KFYpe3JldHVybiEoViBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpfSx0aGlzKSwwIT09SC5sZW5ndGgmJihBKG51bGw9PT1VLmNoaWxkcmVuKSxVLmNoaWxkcmVuPUgsSC5mb3JFYWNoKGZ1bmN0aW9uKFYpe1YuX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30sdGhpcykpLDAhPT14Lmxlbmd0'@; put 'aCYmKEEobnVsbD09PVUuYXJncyksVS5hcmdzPXgsVS5yZXZlcnNlQXJncz14Lm1hcChmdW5jdGlvbihWKXtpZigib2JqZWN0IiE9dHlwZW9mIFZ8fFYuY29uc3RydWN0b3IhPT1PYmplY3QpcmV0dXJuIFY7dmFyIE49e307cmV0dXJuIE9iamVjdC5rZXlzKFYpLmZvckVhY2goZnVuY3Rpb24o'@; put 'eil7ej09KDB8eikmJih6fD0wKSxOW1Zbel1dPXp9KSxOfSkpfSxbIl9wZWVrVGFnIiwiX2RlY29kZVRhZyIsIl91c2UiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJfZGVjb2RlTnVsbCIsIl9kZWNvZGVJbnQiLCJfZGVjb2RlQm9vbCIsIl9kZWNvZGVMaXN0'@; put 'IiwiX2VuY29kZUNvbXBvc2l0ZSIsIl9lbmNvZGVTdHIiLCJfZW5jb2RlT2JqaWQiLCJfZW5jb2RlVGltZSIsIl9lbmNvZGVOdWxsIiwiX2VuY29kZUludCIsIl9lbmNvZGVCb29sIl0uZm9yRWFjaChmdW5jdGlvbihSKXtTLnByb3RvdHlwZVtSXT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJv'@; put 'cihSKyIgbm90IGltcGxlbWVudGVkIGZvciBlbmNvZGluZzogIit0aGlzLl9iYXNlU3RhdGUuZW5jKX19KSx2LmZvckVhY2goZnVuY3Rpb24oUil7Uy5wcm90b3R5cGVbUl09ZnVuY3Rpb24oKXt2YXIgVT10aGlzLl9iYXNlU3RhdGUsSD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1'@; put 'bWVudHMpO3JldHVybiBBKG51bGw9PT1VLnRhZyksVS50YWc9Uix0aGlzLl91c2VBcmdzKEgpLHRoaXN9fSksUy5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKHgpe0EoeCk7dmFyIFU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBBKG51bGw9PT1VLnVzZSksVS51c2U9eCx0aGlzfSxTLnByb3RvdHlw'@; put 'ZS5vcHRpb25hbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlU3RhdGUub3B0aW9uYWw9ITAsdGhpc30sUy5wcm90b3R5cGUuZGVmPWZ1bmN0aW9uKHgpe3ZhciBVPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gQShudWxsPT09VS5kZWZhdWx0KSxVLmRlZmF1bHQ9eCxVLm9wdGlvbmFsPSEw'@; put 'LHRoaXN9LFMucHJvdG90eXBlLmV4cGxpY2l0PWZ1bmN0aW9uKHgpe3ZhciBVPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gQShudWxsPT09VS5leHBsaWNpdCYmbnVsbD09PVUuaW1wbGljaXQpLFUuZXhwbGljaXQ9eCx0aGlzfSxTLnByb3RvdHlwZS5pbXBsaWNpdD1mdW5jdGlvbih4KXt2YXIg'@; put 'VT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIEEobnVsbD09PVUuZXhwbGljaXQmJm51bGw9PT1VLmltcGxpY2l0KSxVLmltcGxpY2l0PXgsdGhpc30sUy5wcm90b3R5cGUub2JqPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5fYmFzZVN0YXRlLFU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn'@; put 'dW1lbnRzKTtyZXR1cm4geC5vYmo9ITAsMCE9PVUubGVuZ3RoJiZ0aGlzLl91c2VBcmdzKFUpLHRoaXN9LFMucHJvdG90eXBlLmtleT1mdW5jdGlvbih4KXt2YXIgVT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIEEobnVsbD09PVUua2V5KSxVLmtleT14LHRoaXN9LFMucHJvdG90eXBlLmFueT1m'@; put 'dW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlU3RhdGUuYW55PSEwLHRoaXN9LFMucHJvdG90eXBlLmNob2ljZT1mdW5jdGlvbih4KXt2YXIgVT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIEEobnVsbD09PVUuY2hvaWNlKSxVLmNob2ljZT14LHRoaXMuX3VzZUFyZ3MoT2JqZWN0LmtleXMoeCku'@; put 'bWFwKGZ1bmN0aW9uKEgpe3JldHVybiB4W0hdfSkpLHRoaXN9LFMucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHgpe3ZhciBVPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gQShudWxsPT09VS51c2UpLFUuY29udGFpbnM9eCx0aGlzfSxTLnByb3RvdHlwZS5fZGVjb2RlPWZ1bmN0aW9uKHgs'@; put 'VSl7dmFyIEg9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1ILnBhcmVudClyZXR1cm4geC53cmFwUmVzdWx0KEguY2hpbGRyZW5bMF0uX2RlY29kZSh4LFUpKTt2YXIgVyxWPUguZGVmYXVsdCxOPSEwLHo9bnVsbDtpZihudWxsIT09SC5rZXkmJih6PXguZW50ZXJLZXkoSC5rZXkpKSxILm9w'@; put 'dGlvbmFsKXt2YXIgWT1udWxsO2lmKG51bGwhPT1ILmV4cGxpY2l0P1k9SC5leHBsaWNpdDpudWxsIT09SC5pbXBsaWNpdD9ZPUguaW1wbGljaXQ6bnVsbCE9PUgudGFnJiYoWT1ILnRhZyksbnVsbCE9PVl8fEguYW55KXtpZihOPXRoaXMuX3BlZWtUYWcoeCxZLEguYW55KSx4LmlzRXJyb3Io'@; put 'TikpcmV0dXJuIE59ZWxzZXt2YXIgRj14LnNhdmUoKTt0cnl7bnVsbD09PUguY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoSC50YWcseCxVKTp0aGlzLl9kZWNvZGVDaG9pY2UoeCxVKSxOPSEwfWNhdGNoe049ITF9eC5yZXN0b3JlKEYpfX1pZihILm9iaiYmTiYmKFc9eC5lbnRlck9iamVj'@; put 'dCgpKSxOKXtpZihudWxsIT09SC5leHBsaWNpdCl7dmFyIHE9dGhpcy5fZGVjb2RlVGFnKHgsSC5leHBsaWNpdCk7aWYoeC5pc0Vycm9yKHEpKXJldHVybiBxO3g9cX12YXIgcmU9eC5vZmZzZXQ7aWYobnVsbD09PUgudXNlJiZudWxsPT09SC5jaG9pY2Upe0guYW55JiYoRj14LnNhdmUoKSk7'@; put 'dmFyIG1lPXRoaXMuX2RlY29kZVRhZyh4LG51bGwhPT1ILmltcGxpY2l0P0guaW1wbGljaXQ6SC50YWcsSC5hbnkpO2lmKHguaXNFcnJvcihtZSkpcmV0dXJuIG1lO0guYW55P1Y9eC5yYXcoRik6eD1tZX1pZihVJiZVLnRyYWNrJiZudWxsIT09SC50YWcmJlUudHJhY2soeC5wYXRoKCkscmUs'@; put 'eC5sZW5ndGgsInRhZ2dlZCIpLFUmJlUudHJhY2smJm51bGwhPT1ILnRhZyYmVS50cmFjayh4LnBhdGgoKSx4Lm9mZnNldCx4Lmxlbmd0aCwiY29udGVudCIpLEguYW55fHwoVj1udWxsPT09SC5jaG9pY2U/dGhpcy5fZGVjb2RlR2VuZXJpYyhILnRhZyx4LFUpOnRoaXMuX2RlY29kZUNob2lj'@; put 'ZSh4LFUpKSx4LmlzRXJyb3IoVikpcmV0dXJuIFY7aWYoIUguYW55JiZudWxsPT09SC5jaG9pY2UmJm51bGwhPT1ILmNoaWxkcmVuJiZILmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oa2Upe2tlLl9kZWNvZGUoeCxVKX0pLEguY29udGFpbnMmJigib2N0c3RyIj09PUgudGFnfHwiYml0c3Ry'@; put 'Ij09PUgudGFnKSl7dmFyIENlPW5ldyBzKFYpO1Y9dGhpcy5fZ2V0VXNlKEguY29udGFpbnMseC5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoQ2UsVSl9fXJldHVybiBILm9iaiYmTiYmKFY9eC5sZWF2ZU9iamVjdChXKSksbnVsbD09PUgua2V5fHxudWxsPT09ViYmITAhPT1OP251bGwh'@; put 'PT16JiZ4LmV4aXRLZXkoeik6eC5sZWF2ZUtleSh6LEgua2V5LFYpLFZ9LFMucHJvdG90eXBlLl9kZWNvZGVHZW5lcmljPWZ1bmN0aW9uKHgsVSxIKXt2YXIgVj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuInNlcSI9PT14fHwic2V0Ij09PXg/bnVsbDoic2Vxb2YiPT09eHx8InNldG9mIj09PXg/'@; put 'dGhpcy5fZGVjb2RlTGlzdChVLHgsVi5hcmdzWzBdLEgpOi9zdHIkLy50ZXN0KHgpP3RoaXMuX2RlY29kZVN0cihVLHgsSCk6Im9iamlkIj09PXgmJlYuYXJncz90aGlzLl9kZWNvZGVPYmppZChVLFYuYXJnc1swXSxWLmFyZ3NbMV0sSCk6Im9iamlkIj09PXg/dGhpcy5fZGVjb2RlT2JqaWQo'@; put 'VSxudWxsLG51bGwsSCk6ImdlbnRpbWUiPT09eHx8InV0Y3RpbWUiPT09eD90aGlzLl9kZWNvZGVUaW1lKFUseCxIKToibnVsbF8iPT09eD90aGlzLl9kZWNvZGVOdWxsKFUsSCk6ImJvb2wiPT09eD90aGlzLl9kZWNvZGVCb29sKFUsSCk6Im9iakRlc2MiPT09eD90aGlzLl9kZWNvZGVTdHIo'@; put 'VSx4LEgpOiJpbnQiPT09eHx8ImVudW0iPT09eD90aGlzLl9kZWNvZGVJbnQoVSxWLmFyZ3MmJlYuYXJnc1swXSxIKTpudWxsIT09Vi51c2U/dGhpcy5fZ2V0VXNlKFYudXNlLFUuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKFUsSCk6VS5lcnJvcigidW5rbm93biB0YWc6ICIreCl9LFMu'@; put 'cHJvdG90eXBlLl9nZXRVc2U9ZnVuY3Rpb24oeCxVKXt2YXIgSD10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIEgudXNlRGVjb2Rlcj10aGlzLl91c2UoeCxVKSxBKG51bGw9PT1ILnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQpLEgudXNlRGVjb2Rlcj1ILnVzZURlY29kZXIuX2Jhc2VTdGF0'@; put 'ZS5jaGlsZHJlblswXSxILmltcGxpY2l0IT09SC51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQmJihILnVzZURlY29kZXI9SC51c2VEZWNvZGVyLmNsb25lKCksSC51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQ9SC5pbXBsaWNpdCksSC51c2VEZWNvZGVyfSxTLnByb3RvdHlw'@; put 'ZS5fZGVjb2RlQ2hvaWNlPWZ1bmN0aW9uKHgsVSl7dmFyIEg9dGhpcy5fYmFzZVN0YXRlLFY9bnVsbCxOPSExO3JldHVybiBPYmplY3Qua2V5cyhILmNob2ljZSkuc29tZShmdW5jdGlvbih6KXt2YXIgWT14LnNhdmUoKSxGPUguY2hvaWNlW3pdO3RyeXt2YXIgVz1GLl9kZWNvZGUoeCxVKTtp'@; put 'Zih4LmlzRXJyb3IoVykpcmV0dXJuITE7Vj17dHlwZTp6LHZhbHVlOld9LE49ITB9Y2F0Y2h7cmV0dXJuIHgucmVzdG9yZShZKSwhMX1yZXR1cm4hMH0sdGhpcyksTj9WOnguZXJyb3IoIkNob2ljZSBub3QgbWF0Y2hlZCIpfSxTLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlcj1mdW5j'@; put 'dGlvbih4KXtyZXR1cm4gbmV3IGMoeCx0aGlzLnJlcG9ydGVyKX0sUy5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbih4LFUsSCl7dmFyIFY9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1WLmRlZmF1bHR8fFYuZGVmYXVsdCE9PXgpe3ZhciBOPXRoaXMuX2VuY29kZVZhbHVlKHgsVSxIKTtp'@; put 'Zih2b2lkIDAhPT1OJiYhdGhpcy5fc2tpcERlZmF1bHQoTixVLEgpKXJldHVybiBOfX0sUy5wcm90b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKHgsVSxIKXt2YXIgVj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PVYucGFyZW50KXJldHVybiBWLmNoaWxkcmVuWzBdLl9lbmNvZGUoeCxV'@; put 'fHxuZXcgeSk7dmFyIEY9bnVsbDtpZih0aGlzLnJlcG9ydGVyPVUsVi5vcHRpb25hbCYmdm9pZCAwPT09eCl7aWYobnVsbD09PVYuZGVmYXVsdClyZXR1cm47eD1WLmRlZmF1bHR9dmFyIE49bnVsbCx6PSExO2lmKFYuYW55KUY9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih4KTtlbHNlIGlm'@; put 'KFYuY2hvaWNlKUY9dGhpcy5fZW5jb2RlQ2hvaWNlKHgsVSk7ZWxzZSBpZihWLmNvbnRhaW5zKU49dGhpcy5fZ2V0VXNlKFYuY29udGFpbnMsSCkuX2VuY29kZSh4LFUpLHo9ITA7ZWxzZSBpZihWLmNoaWxkcmVuKU49Vi5jaGlsZHJlbi5tYXAoZnVuY3Rpb24ocmUpe2lmKCJudWxsXyI9PT1y'@; put 'ZS5fYmFzZVN0YXRlLnRhZylyZXR1cm4gcmUuX2VuY29kZShudWxsLFUseCk7aWYobnVsbD09PXJlLl9iYXNlU3RhdGUua2V5KXJldHVybiBVLmVycm9yKCJDaGlsZCBzaG91bGQgaGF2ZSBhIGtleSIpO3ZhciBtZT1VLmVudGVyS2V5KHJlLl9iYXNlU3RhdGUua2V5KTtpZigib2JqZWN0IiE9'@; put 'dHlwZW9mIHgpcmV0dXJuIFUuZXJyb3IoIkNoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCIpO3ZhciBDZT1yZS5fZW5jb2RlKHhbcmUuX2Jhc2VTdGF0ZS5rZXldLFUseCk7cmV0dXJuIFUubGVhdmVLZXkobWUpLENlfSx0aGlzKS5maWx0ZXIoZnVuY3Rpb24ocmUpe3Jl'@; put 'dHVybiByZX0pLE49dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihOKTtlbHNlIGlmKCJzZXFvZiI9PT1WLnRhZ3x8InNldG9mIj09PVYudGFnKXtpZighVi5hcmdzfHwxIT09Vi5hcmdzLmxlbmd0aClyZXR1cm4gVS5lcnJvcigiVG9vIG1hbnkgYXJncyBmb3IgOiAiK1YudGFnKTtpZighQXJy'@; put 'YXkuaXNBcnJheSh4KSlyZXR1cm4gVS5lcnJvcigic2Vxb2Yvc2V0b2YsIGJ1dCBkYXRhIGlzIG5vdCBBcnJheSIpO3ZhciBZPXRoaXMuY2xvbmUoKTtZLl9iYXNlU3RhdGUuaW1wbGljaXQ9bnVsbCxOPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoeC5tYXAoZnVuY3Rpb24ocmUpe3JldHVy'@; put 'biB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3NbMF0seCkuX2VuY29kZShyZSxVKX0sWSkpfWVsc2UgbnVsbCE9PVYudXNlP0Y9dGhpcy5fZ2V0VXNlKFYudXNlLEgpLl9lbmNvZGUoeCxVKTooTj10aGlzLl9lbmNvZGVQcmltaXRpdmUoVi50YWcseCksej0hMCk7aWYoIVYuYW55'@; put 'JiZudWxsPT09Vi5jaG9pY2Upe3ZhciBXPW51bGwhPT1WLmltcGxpY2l0P1YuaW1wbGljaXQ6Vi50YWcscT1udWxsPT09Vi5pbXBsaWNpdD8idW5pdmVyc2FsIjoiY29udGV4dCI7bnVsbD09PVc/bnVsbD09PVYudXNlJiZVLmVycm9yKCJUYWcgY291bGQgYmUgb21pdHRlZCBvbmx5IGZvciAu'@; put 'dXNlKCkiKTpudWxsPT09Vi51c2UmJihGPXRoaXMuX2VuY29kZUNvbXBvc2l0ZShXLHoscSxOKSl9cmV0dXJuIG51bGwhPT1WLmV4cGxpY2l0JiYoRj10aGlzLl9lbmNvZGVDb21wb3NpdGUoVi5leHBsaWNpdCwhMSwiY29udGV4dCIsRikpLEZ9LFMucHJvdG90eXBlLl9lbmNvZGVDaG9pY2U9'@; put 'ZnVuY3Rpb24oeCxVKXt2YXIgSD10aGlzLl9iYXNlU3RhdGUsVj1ILmNob2ljZVt4LnR5cGVdO3JldHVybiBWfHxBKCExLHgudHlwZSsiIG5vdCBmb3VuZCBpbiAiK0pTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKEguY2hvaWNlKSkpLFYuX2VuY29kZSh4LnZhbHVlLFUpfSxTLnByb3RvdHlw'@; put 'ZS5fZW5jb2RlUHJpbWl0aXZlPWZ1bmN0aW9uKHgsVSl7dmFyIEg9dGhpcy5fYmFzZVN0YXRlO2lmKC9zdHIkLy50ZXN0KHgpKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoVSx4KTtpZigib2JqaWQiPT09eCYmSC5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChVLEgucmV2ZXJzZUFyZ3Nb'@; put 'MF0sSC5hcmdzWzFdKTtpZigib2JqaWQiPT09eClyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoVSxudWxsLG51bGwpO2lmKCJnZW50aW1lIj09PXh8fCJ1dGN0aW1lIj09PXgpcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoVSx4KTtpZigibnVsbF8iPT09eClyZXR1cm4gdGhpcy5fZW5jb2RlTnVs'@; put 'bCgpO2lmKCJpbnQiPT09eHx8ImVudW0iPT09eClyZXR1cm4gdGhpcy5fZW5jb2RlSW50KFUsSC5hcmdzJiZILnJldmVyc2VBcmdzWzBdKTtpZigiYm9vbCI9PT14KXJldHVybiB0aGlzLl9lbmNvZGVCb29sKFUpO2lmKCJvYmpEZXNjIj09PXgpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihVLHgp'@; put 'O3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdGFnOiAiK3gpfSxTLnByb3RvdHlwZS5faXNOdW1zdHI9ZnVuY3Rpb24oeCl7cmV0dXJuL15bMC05IF0qJC8udGVzdCh4KX0sUy5wcm90b3R5cGUuX2lzUHJpbnRzdHI9ZnVuY3Rpb24oeCl7cmV0dXJuL15bQS1aYS16MC05ICdcKFwpXCss'@; put 'XC1cLlwvOj1cP10qJC8udGVzdCh4KX19LDg5MjIwKGZlLGosaCl7dmFyIHk9aCg1NjY5OCk7ZnVuY3Rpb24gYyhBKXt0aGlzLl9yZXBvcnRlclN0YXRlPXtvYmo6bnVsbCxwYXRoOltdLG9wdGlvbnM6QXx8e30sZXJyb3JzOltdfX1mdW5jdGlvbiBzKEEsdil7dGhpcy5wYXRoPUEsdGhpcy5y'@; put 'ZXRocm93KHYpfWouYT1jLGMucHJvdG90eXBlLmlzRXJyb3I9ZnVuY3Rpb24odil7cmV0dXJuIHYgaW5zdGFuY2VvZiBzfSxjLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7dmFyIHY9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtyZXR1cm57b2JqOnYub2JqLHBhdGhMZW46di5wYXRoLmxlbmd0aH19'@; put 'LGMucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24odil7dmFyIEM9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtDLm9iaj12Lm9iaixDLnBhdGg9Qy5wYXRoLnNsaWNlKDAsdi5wYXRoTGVuKX0sYy5wcm90b3R5cGUuZW50ZXJLZXk9ZnVuY3Rpb24odil7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUu'@; put 'cGF0aC5wdXNoKHYpfSxjLnByb3RvdHlwZS5leGl0S2V5PWZ1bmN0aW9uKHYpe3ZhciBDPXRoaXMuX3JlcG9ydGVyU3RhdGU7Qy5wYXRoPUMucGF0aC5zbGljZSgwLHYtMSl9LGMucHJvdG90eXBlLmxlYXZlS2V5PWZ1bmN0aW9uKHYsQyx3KXt2YXIgUz10aGlzLl9yZXBvcnRlclN0YXRlO3Ro'@; put 'aXMuZXhpdEtleSh2KSxudWxsIT09Uy5vYmomJihTLm9ialtDXT13KX0sYy5wcm90b3R5cGUucGF0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbigiLyIpfSxjLnByb3RvdHlwZS5lbnRlck9iamVjdD1mdW5jdGlvbigpe3ZhciB2PXRoaXMuX3JlcG9y'@; put 'dGVyU3RhdGUsQz12Lm9iajtyZXR1cm4gdi5vYmo9e30sQ30sYy5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24odil7dmFyIEM9dGhpcy5fcmVwb3J0ZXJTdGF0ZSx3PUMub2JqO3JldHVybiBDLm9iaj12LHd9LGMucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHYpe3ZhciBDLHc9dGhp'@; put 'cy5fcmVwb3J0ZXJTdGF0ZSxTPXYgaW5zdGFuY2VvZiBzO2lmKEM9Uz92Om5ldyBzKHcucGF0aC5tYXAoZnVuY3Rpb24oTCl7cmV0dXJuIlsiK0pTT04uc3RyaW5naWZ5KEwpKyJdIn0pLmpvaW4oIiIpLHYubWVzc2FnZXx8dix2LnN0YWNrKSwhdy5vcHRpb25zLnBhcnRpYWwpdGhyb3cgQzty'@; put 'ZXR1cm4gU3x8dy5lcnJvcnMucHVzaChDKSxDfSxjLnByb3RvdHlwZS53cmFwUmVzdWx0PWZ1bmN0aW9uKHYpe3ZhciBDPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJuIEMub3B0aW9ucy5wYXJ0aWFsP3tyZXN1bHQ6dGhpcy5pc0Vycm9yKHYpP251bGw6dixlcnJvcnM6Qy5lcnJvcnN9OnZ9'@; put 'LHkocyxFcnJvcikscy5wcm90b3R5cGUucmV0aHJvdz1mdW5jdGlvbih2KXtpZih0aGlzLm1lc3NhZ2U9disiIGF0OiAiKyh0aGlzLnBhdGh8fCIoc2hhbGxvdykiKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxzKSwhdGhpcy5zdGFjayl0'@; put 'cnl7dGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSl9Y2F0Y2goQyl7dGhpcy5zdGFjaz1DLnN0YWNrfXJldHVybiB0aGlzfX0sNzQ1OTgoZmUsaixoKXt2YXIgeT1oKDIyMTUzKTtqLnRhZ0NsYXNzPXswOiJ1bml2ZXJzYWwiLDE6ImFwcGxpY2F0aW9uIiwyOiJjb250ZXh0IiwzOiJwcml2'@; put 'YXRlIn0sai50YWdDbGFzc0J5TmFtZT15Ll9yZXZlcnNlKGoudGFnQ2xhc3MpLGoudGFnPXswOiJlbmQiLDE6ImJvb2wiLDI6ImludCIsMzoiYml0c3RyIiw0OiJvY3RzdHIiLDU6Im51bGxfIiw2OiJvYmppZCIsNzoib2JqRGVzYyIsODoiZXh0ZXJuYWwiLDk6InJlYWwiLDEwOiJlbnVtIiwx'@; put 'MToiZW1iZWQiLDEyOiJ1dGY4c3RyIiwxMzoicmVsYXRpdmVPaWQiLDE2OiJzZXEiLDE3OiJzZXQiLDE4OiJudW1zdHIiLDE5OiJwcmludHN0ciIsMjA6InQ2MXN0ciIsMjE6InZpZGVvc3RyIiwyMjoiaWE1c3RyIiwyMzoidXRjdGltZSIsMjQ6ImdlbnRpbWUiLDI1OiJncmFwaHN0ciIsMjY6'@; put 'ImlzbzY0NnN0ciIsMjc6ImdlbnN0ciIsMjg6InVuaXN0ciIsMjk6ImNoYXJzdHIiLDMwOiJibXBzdHIifSxqLnRhZ0J5TmFtZT15Ll9yZXZlcnNlKGoudGFnKX0sMjIxNTMoZmUsaixoKXt2YXIgeT1qO3kuX3JldmVyc2U9ZnVuY3Rpb24ocyl7dmFyIEE9e307cmV0dXJuIE9iamVjdC5rZXlz'@; put 'KHMpLmZvckVhY2goZnVuY3Rpb24odil7KDB8dik9PXYmJih2fD0wKSxBW3Nbdl1dPXZ9KSxBfSx5LmRlcj1oKDc0NTk4KX0sNjIwMTAoZmUsaixoKXt2YXIgeT1oKDU2Njk4KSxjPWgoODc1NjgpLHM9Yy5iYXNlLEE9Yy5iaWdudW0sdj1jLmNvbnN0YW50cy5kZXI7ZnVuY3Rpb24gQyhSKXt0'@; put 'aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9Ui5uYW1lLHRoaXMuZW50aXR5PVIsdGhpcy50cmVlPW5ldyB3LHRoaXMudHJlZS5faW5pdChSLmJvZHkpfWZ1bmN0aW9uIHcoUil7cy5Ob2RlLmNhbGwodGhpcywiZGVyIixSKX1mdW5jdGlvbiBTKFIseCl7dmFyIFU9Ui5yZWFkVUludDgoeCk7aWYo'@; put 'Ui5pc0Vycm9yKFUpKXJldHVybiBVO3ZhciBIPXYudGFnQ2xhc3NbVT4+Nl0sVj0hKDMyJlUpO2lmKDMxJn5VKVUmPTMxO2Vsc2V7dmFyIE49VTtmb3IoVT0wOyEoMTI4Jn5OKTspe2lmKE49Ui5yZWFkVUludDgoeCksUi5pc0Vycm9yKE4pKXJldHVybiBOO1U8PD03LFV8PTEyNyZOfX1yZXR1'@; put 'cm57Y2xzOkgscHJpbWl0aXZlOlYsdGFnOlUsdGFnU3RyOnYudGFnW1VdfX1mdW5jdGlvbiBMKFIseCxVKXt2YXIgSD1SLnJlYWRVSW50OChVKTtpZihSLmlzRXJyb3IoSCkpcmV0dXJuIEg7aWYoIXgmJjEyOD09PUgpcmV0dXJuIG51bGw7aWYoISgxMjgmSCkpcmV0dXJuIEg7dmFyIFY9MTI3'@; put 'Jkg7aWYoVj40KXJldHVybiBSLmVycm9yKCJsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nIik7SD0wO2Zvcih2YXIgTj0wO048VjtOKyspe0g8PD04O3ZhciB6PVIucmVhZFVJbnQ4KFUpO2lmKFIuaXNFcnJvcih6KSlyZXR1cm4gejtIfD16fXJldHVybiBIfWZlLmV4cG9ydHM9QyxDLnByb3Rv'@; put 'dHlwZS5kZWNvZGU9ZnVuY3Rpb24oeCxVKXtyZXR1cm4geCBpbnN0YW5jZW9mIHMuRGVjb2RlckJ1ZmZlcnx8KHg9bmV3IHMuRGVjb2RlckJ1ZmZlcih4LFUpKSx0aGlzLnRyZWUuX2RlY29kZSh4LFUpfSx5KHcscy5Ob2RlKSx3LnByb3RvdHlwZS5fcGVla1RhZz1mdW5jdGlvbih4LFUsSCl7'@; put 'aWYoeC5pc0VtcHR5KCkpcmV0dXJuITE7dmFyIFY9eC5zYXZlKCksTj1TKHgsJ0ZhaWxlZCB0byBwZWVrIHRhZzogIicrVSsnIicpO3JldHVybiB4LmlzRXJyb3IoTik/TjooeC5yZXN0b3JlKFYpLE4udGFnPT09VXx8Ti50YWdTdHI9PT1VfHxOLnRhZ1N0cisib2YiPT09VXx8SCl9LHcucHJv'@; put 'dG90eXBlLl9kZWNvZGVUYWc9ZnVuY3Rpb24oeCxVLEgpe3ZhciBWPVMoeCwnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgIicrVSsnIicpO2lmKHguaXNFcnJvcihWKSlyZXR1cm4gVjt2YXIgTj1MKHgsVi5wcmltaXRpdmUsJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mICInK1UrJyInKTtpZih4'@; put 'LmlzRXJyb3IoTikpcmV0dXJuIE47aWYoIUgmJlYudGFnIT09VSYmVi50YWdTdHIhPT1VJiZWLnRhZ1N0cisib2YiIT09VSlyZXR1cm4geC5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogIicrVSsnIicpO2lmKFYucHJpbWl0aXZlfHxudWxsIT09TilyZXR1cm4geC5za2lwKE4sJ0ZhaWxl'@; put 'ZCB0byBtYXRjaCBib2R5IG9mOiAiJytVKyciJyk7dmFyIHo9eC5zYXZlKCksWT10aGlzLl9za2lwVW50aWxFbmQoeCwnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogIicrdGhpcy50YWcrJyInKTtyZXR1cm4geC5pc0Vycm9yKFkpP1k6KE49eC5vZmZzZXQtei5vZmZz'@; put 'ZXQseC5yZXN0b3JlKHopLHguc2tpcChOLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrVSsnIicpKX0sdy5wcm90b3R5cGUuX3NraXBVbnRpbEVuZD1mdW5jdGlvbih4LFUpe2Zvcig7Oyl7dmFyIEg9Uyh4LFUpO2lmKHguaXNFcnJvcihIKSlyZXR1cm4gSDt2YXIgTixWPUwoeCxILnBy'@; put 'aW1pdGl2ZSxVKTtpZih4LmlzRXJyb3IoVikpcmV0dXJuIFY7aWYoTj1ILnByaW1pdGl2ZXx8bnVsbCE9PVY/eC5za2lwKFYpOnRoaXMuX3NraXBVbnRpbEVuZCh4LFUpLHguaXNFcnJvcihOKSlyZXR1cm4gTjtpZigiZW5kIj09PUgudGFnU3RyKWJyZWFrfX0sdy5wcm90b3R5cGUuX2RlY29k'@; put 'ZUxpc3Q9ZnVuY3Rpb24oeCxVLEgsVil7Zm9yKHZhciBOPVtdOyF4LmlzRW1wdHkoKTspe3ZhciB6PXRoaXMuX3BlZWtUYWcoeCwiZW5kIik7aWYoeC5pc0Vycm9yKHopKXJldHVybiB6O3ZhciBZPUguZGVjb2RlKHgsImRlciIsVik7aWYoeC5pc0Vycm9yKFkpJiZ6KWJyZWFrO04ucHVzaChZ'@; put 'KX1yZXR1cm4gTn0sdy5wcm90b3R5cGUuX2RlY29kZVN0cj1mdW5jdGlvbih4LFUpe2lmKCJiaXRzdHIiPT09VSl7dmFyIEg9eC5yZWFkVUludDgoKTtyZXR1cm4geC5pc0Vycm9yKEgpP0g6e3VudXNlZDpILGRhdGE6eC5yYXcoKX19aWYoImJtcHN0ciI9PT1VKXt2YXIgVj14LnJhdygpO2lm'@; put 'KFYubGVuZ3RoJTI9PTEpcmV0dXJuIHguZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBibXBzdHIgbGVuZ3RoIG1pc21hdGNoIik7Zm9yKHZhciBOPSIiLHo9MDt6PFYubGVuZ3RoLzI7eisrKU4rPVN0cmluZy5mcm9tQ2hhckNvZGUoVi5yZWFkVUludDE2QkUoMip6KSk7cmV0dXJu'@; put 'IE59aWYoIm51bXN0ciI9PT1VKXt2YXIgWT14LnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc051bXN0cihZKT9ZOnguZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfWlmKCJvY3RzdHIiPT09VSlyZXR1'@; put 'cm4geC5yYXcoKTtpZigib2JqRGVzYyI9PT1VKXJldHVybiB4LnJhdygpO2lmKCJwcmludHN0ciI9PT1VKXt2YXIgRj14LnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc1ByaW50c3RyKEYpP0Y6eC5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3Ry'@; put 'IHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMiKX1yZXR1cm4vc3RyJC8udGVzdChVKT94LnJhdygpLnRvU3RyaW5nKCk6eC5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrVSsiIHVuc3VwcG9ydGVkIil9LHcucHJvdG90eXBlLl9kZWNvZGVPYmppZD1mdW5jdGlvbih4LFUsSCl7Zm9y'@; put 'KHZhciBWLE49W10sej0wOyF4LmlzRW1wdHkoKTspe3ZhciBZPXgucmVhZFVJbnQ4KCk7ejw8PTcsenw9MTI3JlksISgxMjgmWSkmJihOLnB1c2goeiksej0wKX1pZigxMjgmWSYmTi5wdXNoKHopLFY9SD9OOltOWzBdLzQwfDAsTlswXSU0MF0uY29uY2F0KE4uc2xpY2UoMSkpLFUpe3ZhciBx'@; put 'PVVbVi5qb2luKCIgIildO3ZvaWQgMD09PXEmJihxPVVbVi5qb2luKCIuIildKSx2b2lkIDAhPT1xJiYoVj1xKX1yZXR1cm4gVn0sdy5wcm90b3R5cGUuX2RlY29kZVRpbWU9ZnVuY3Rpb24oeCxVKXt2YXIgSD14LnJhdygpLnRvU3RyaW5nKCk7aWYoImdlbnRpbWUiPT09VSl2YXIgVj0wfEgu'@; put 'c2xpY2UoMCw0KSxOPTB8SC5zbGljZSg0LDYpLHo9MHxILnNsaWNlKDYsOCksWT0wfEguc2xpY2UoOCwxMCksRj0wfEguc2xpY2UoMTAsMTIpLFc9MHxILnNsaWNlKDEyLDE0KTtlbHNle2lmKCJ1dGN0aW1lIiE9PVUpcmV0dXJuIHguZXJyb3IoIkRlY29kaW5nICIrVSsiIHRpbWUgaXMgbm90'@; put 'IHN1cHBvcnRlZCB5ZXQiKTtWPTB8SC5zbGljZSgwLDIpLE49MHxILnNsaWNlKDIsNCksej0wfEguc2xpY2UoNCw2KSxZPTB8SC5zbGljZSg2LDgpLEY9MHxILnNsaWNlKDgsMTApLFc9MHxILnNsaWNlKDEwLDEyKSxWPVY8NzA/MmUzK1Y6MTkwMCtWfXJldHVybiBEYXRlLlVUQyhWLE4tMSx6'@; put 'LFksRixXLDApfSx3LnByb3RvdHlwZS5fZGVjb2RlTnVsbD1mdW5jdGlvbih4KXtyZXR1cm4gbnVsbH0sdy5wcm90b3R5cGUuX2RlY29kZUJvb2w9ZnVuY3Rpb24oeCl7dmFyIFU9eC5yZWFkVUludDgoKTtyZXR1cm4geC5pc0Vycm9yKFUpP1U6MCE9PVV9LHcucHJvdG90eXBlLl9kZWNvZGVJ'@; put 'bnQ9ZnVuY3Rpb24oeCxVKXt2YXIgSD14LnJhdygpLFY9bmV3IEEoSCk7cmV0dXJuIFUmJihWPVVbVi50b1N0cmluZygxMCldfHxWKSxWfSx3LnByb3RvdHlwZS5fdXNlPWZ1bmN0aW9uKHgsVSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHgmJih4PXgoVSkpLHguX2dldERlY29kZXIoImRl'@; put 'ciIpLnRyZWV9fSwyMjg1MyhmZSxqLGgpe3ZhciB5PWo7eS5kZXI9aCg2MjAxMCkseS5wZW09aCg1ODkwMyl9LDU4OTAzKGZlLGosaCl7dmFyIHk9aCg1NjY5OCksYz1oKDQ4Mjg3KS5CdWZmZXIscz1oKDYyMDEwKTtmdW5jdGlvbiBBKHYpe3MuY2FsbCh0aGlzLHYpLHRoaXMuZW5jPSJwZW0i'@; put 'fXkoQSxzKSxmZS5leHBvcnRzPUEsQS5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKEMsdyl7Zm9yKHZhciBTPUMudG9TdHJpbmcoKS5zcGxpdCgvW1xyXG5dKy9nKSxMPXcubGFiZWwudG9VcHBlckNhc2UoKSxSPS9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLyx4PS0xLFU9LTEs'@; put 'SD0wO0g8Uy5sZW5ndGg7SCsrKXt2YXIgVj1TW0hdLm1hdGNoKFIpO2lmKG51bGwhPT1WJiZWWzJdPT09TCl7aWYoLTEhPT14KXtpZigiRU5EIiE9PVZbMV0pYnJlYWs7VT1IO2JyZWFrfWlmKCJCRUdJTiIhPT1WWzFdKWJyZWFrO3g9SH19aWYoLTE9PT14fHwtMT09PVUpdGhyb3cgbmV3IEVy'@; put 'cm9yKCJQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAiK0wpO3ZhciBOPVMuc2xpY2UoeCsxLFUpLmpvaW4oIiIpO04ucmVwbGFjZSgvW15hLXowLTlcK1wvPV0rL2dpLCIiKTt2YXIgej1uZXcgYyhOLCJiYXNlNjQiKTtyZXR1cm4gcy5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcyx6LHcp'@; put 'fX0sNzAwODIoZmUsaixoKXt2YXIgeT1oKDU2Njk4KSxjPWgoNDgyODcpLkJ1ZmZlcixzPWgoODc1NjgpLEE9cy5iYXNlLHY9cy5jb25zdGFudHMuZGVyO2Z1bmN0aW9uIEMoUil7dGhpcy5lbmM9ImRlciIsdGhpcy5uYW1lPVIubmFtZSx0aGlzLmVudGl0eT1SLHRoaXMudHJlZT1uZXcgdyx0'@; put 'aGlzLnRyZWUuX2luaXQoUi5ib2R5KX1mdW5jdGlvbiB3KFIpe0EuTm9kZS5jYWxsKHRoaXMsImRlciIsUil9ZnVuY3Rpb24gUyhSKXtyZXR1cm4gUjwxMD8iMCIrUjpSfWZlLmV4cG9ydHM9QyxDLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oeCxVKXtyZXR1cm4gdGhpcy50cmVlLl9lbmNv'@; put 'ZGUoeCxVKS5qb2luKCl9LHkodyxBLk5vZGUpLHcucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGU9ZnVuY3Rpb24oeCxVLEgsVil7dmFyIEYsTj1mdW5jdGlvbiBMKFIseCxVLEgpe3ZhciBWO2lmKCJzZXFvZiI9PT1SP1I9InNlcSI6InNldG9mIj09PVImJihSPSJzZXQiKSx2LnRhZ0J5TmFt'@; put 'ZS5oYXNPd25Qcm9wZXJ0eShSKSlWPXYudGFnQnlOYW1lW1JdO2Vsc2V7aWYoIm51bWJlciIhPXR5cGVvZiBSfHwoMHxSKSE9PVIpcmV0dXJuIEguZXJyb3IoIlVua25vd24gdGFnOiAiK1IpO1Y9Un1yZXR1cm4gVj49MzE/SC5lcnJvcigiTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3Vw'@; put 'cG9ydGVkIik6KHh8fChWfD0zMiksVnw9di50YWdDbGFzc0J5TmFtZVtVfHwidW5pdmVyc2FsIl08PDYpfSh4LFUsSCx0aGlzLnJlcG9ydGVyKTtpZihWLmxlbmd0aDwxMjgpcmV0dXJuKEY9bmV3IGMoMikpWzBdPU4sRlsxXT1WLmxlbmd0aCx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFtG'@; put 'LFZdKTtmb3IodmFyIHo9MSxZPVYubGVuZ3RoO1k+PTI1NjtZPj49OCl6Kys7KEY9bmV3IGMoMit6KSlbMF09TixGWzFdPTEyOHx6LFk9MSt6O2Zvcih2YXIgVz1WLmxlbmd0aDtXPjA7WS0tLFc+Pj04KUZbWV09MjU1Jlc7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW0YsVl0p'@; put 'fSx3LnByb3RvdHlwZS5fZW5jb2RlU3RyPWZ1bmN0aW9uKHgsVSl7aWYoImJpdHN0ciI9PT1VKXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswfHgudW51c2VkLHguZGF0YV0pO2lmKCJibXBzdHIiPT09VSl7Zm9yKHZhciBIPW5ldyBjKDIqeC5sZW5ndGgpLFY9MDtWPHgubGVu'@; put 'Z3RoO1YrKylILndyaXRlVUludDE2QkUoeC5jaGFyQ29kZUF0KFYpLDIqVik7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoSCl9cmV0dXJuIm51bXN0ciI9PT1VP3RoaXMuX2lzTnVtc3RyKHgpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoeCk6dGhpcy5yZXBvcnRlci5lcnJv'@; put 'cigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciBzdXBwb3J0cyBvbmx5IGRpZ2l0cyBhbmQgc3BhY2UiKToicHJpbnRzdHIiPT09VT90aGlzLl9pc1ByaW50c3RyKHgpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoeCk6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Yg'@; put 'c3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzIG9ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggcGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgZG90LCBzbGFzaCwg'@; put 'Y29sb24sIGVxdWFsIHNpZ24sIHF1ZXN0aW9uIG1hcmsiKTovc3RyJC8udGVzdChVKXx8Im9iakRlc2MiPT09VT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHgpOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAiK1UrIiB1bnN1cHBvcnRlZCIpfSx3LnBy'@; put 'b3RvdHlwZS5fZW5jb2RlT2JqaWQ9ZnVuY3Rpb24oeCxVLEgpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7aWYoIVUpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoInN0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQiKTtpZighVS5oYXNPd25Qcm9wZXJ0eSh4KSly'@; put 'ZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXAiKTt4PVVbeF0uc3BsaXQoL1tcc1wuXSsvZyk7Zm9yKHZhciBWPTA7Vjx4Lmxlbmd0aDtWKyspeFtWXXw9MH1lbHNlIGlmKEFycmF5LmlzQXJyYXkoeCkpZm9yKHg9eC5zbGljZSgpLFY9MDtW'@; put 'PHgubGVuZ3RoO1YrKyl4W1ZdfD0wO2lmKCFBcnJheS5pc0FycmF5KHgpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCBnb3Q6ICIrSlNPTi5zdHJpbmdpZnkoeCkpO2lmKCFIKXtpZih4WzFdPj00MClyZXR1cm4g'@; put 'dGhpcy5yZXBvcnRlci5lcnJvcigiU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CIik7eC5zcGxpY2UoMCwyLDQwKnhbMF0reFsxXSl9dmFyIE49MDtmb3IoVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgej14W1ZdO2ZvcihOKys7ej49MTI4O3o+Pj03KU4rK312YXIgWT1uZXcgYyhOKSxGPVku'@; put 'bGVuZ3RoLTE7Zm9yKFY9eC5sZW5ndGgtMTtWPj0wO1YtLSlmb3IoWVtGLS1dPTEyNyYoej14W1ZdKTsoej4+PTcpPjA7KVlbRi0tXT0xMjh8MTI3Jno7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWSl9LHcucHJvdG90eXBlLl9lbmNvZGVUaW1lPWZ1bmN0aW9uKHgsVSl7dmFy'@; put 'IEgsVj1uZXcgRGF0ZSh4KTtyZXR1cm4iZ2VudGltZSI9PT1VP0g9W1MoVi5nZXRGdWxsWWVhcigpKSxTKFYuZ2V0VVRDTW9udGgoKSsxKSxTKFYuZ2V0VVRDRGF0ZSgpKSxTKFYuZ2V0VVRDSG91cnMoKSksUyhWLmdldFVUQ01pbnV0ZXMoKSksUyhWLmdldFVUQ1NlY29uZHMoKSksIloiXS5q'@; put 'b2luKCIiKToidXRjdGltZSI9PT1VP0g9W1MoVi5nZXRGdWxsWWVhcigpJTEwMCksUyhWLmdldFVUQ01vbnRoKCkrMSksUyhWLmdldFVUQ0RhdGUoKSksUyhWLmdldFVUQ0hvdXJzKCkpLFMoVi5nZXRVVENNaW51dGVzKCkpLFMoVi5nZXRVVENTZWNvbmRzKCkpLCJaIl0uam9pbigiIik6dGhp'@; put 'cy5yZXBvcnRlci5lcnJvcigiRW5jb2RpbmcgIitVKyIgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCIpLHRoaXMuX2VuY29kZVN0cihILCJvY3RzdHIiKX0sdy5wcm90b3R5cGUuX2VuY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcigiIil9LHcu'@; put 'cHJvdG90eXBlLl9lbmNvZGVJbnQ9ZnVuY3Rpb24oeCxVKXtpZigic3RyaW5nIj09dHlwZW9mIHgpe2lmKCFVKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIik7aWYoIVUuaGFzT3duUHJvcGVydHkoeCkpcmV0'@; put 'dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlZhbHVlcyBtYXAgZG9lc24ndCBjb250YWluOiAiK0pTT04uc3RyaW5naWZ5KHgpKTt4PVVbeF19aWYoIm51bWJlciIhPXR5cGVvZiB4JiYhYy5pc0J1ZmZlcih4KSl7dmFyIEg9eC50b0FycmF5KCk7IXguc2lnbiYmMTI4JkhbMF0mJkgudW5zaGlm'@; put 'dCgwKSx4PW5ldyBjKEgpfWlmKGMuaXNCdWZmZXIoeCkpe3ZhciBWPXgubGVuZ3RoOzA9PT14Lmxlbmd0aCYmVisrO3ZhciB6PW5ldyBjKFYpO3JldHVybiB4LmNvcHkoeiksMD09PXgubGVuZ3RoJiYoelswXT0wKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHopfWlmKHg8MTI4KXJldHVy'@; put 'biB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHgpO2lmKHg8MjU2KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLHhdKTtWPTE7Zm9yKHZhciBOPXg7Tj49MjU2O04+Pj04KVYrKztmb3IoTj0oej1uZXcgQXJyYXkoVikpLmxlbmd0aC0xO04+PTA7Ti0tKXpbTl09MjU1Jngs'@; put 'eD4+PTg7cmV0dXJuIDEyOCZ6WzBdJiZ6LnVuc2hpZnQoMCksdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihuZXcgYyh6KSl9LHcucHJvdG90eXBlLl9lbmNvZGVCb29sPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHg/MjU1OjApfSx3LnByb3RvdHlwZS5f'@; put 'dXNlPWZ1bmN0aW9uKHgsVSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHgmJih4PXgoVSkpLHguX2dldEVuY29kZXIoImRlciIpLnRyZWV9LHcucHJvdG90eXBlLl9za2lwRGVmYXVsdD1mdW5jdGlvbih4LFUsSCl7dmFyIE4sVj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PVYuZGVmYXVs'@; put 'dClyZXR1cm4hMTt2YXIgej14LmpvaW4oKTtpZih2b2lkIDA9PT1WLmRlZmF1bHRCdWZmZXImJihWLmRlZmF1bHRCdWZmZXI9dGhpcy5fZW5jb2RlVmFsdWUoVi5kZWZhdWx0LFUsSCkuam9pbigpKSx6Lmxlbmd0aCE9PVYuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpcmV0dXJuITE7Zm9yKE49MDtO'@; put 'PHoubGVuZ3RoO04rKylpZih6W05dIT09Vi5kZWZhdWx0QnVmZmVyW05dKXJldHVybiExO3JldHVybiEwfX0sMjQ2NjkoZmUsaixoKXt2YXIgeT1qO3kuZGVyPWgoNzAwODIpLHkucGVtPWgoOTA3MzUpfSw5MDczNShmZSxqLGgpe3ZhciB5PWgoNTY2OTgpLGM9aCg3MDA4Mik7ZnVuY3Rpb24g'@; put 'cyhBKXtjLmNhbGwodGhpcyxBKSx0aGlzLmVuYz0icGVtIn15KHMsYyksZmUuZXhwb3J0cz1zLHMucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih2LEMpe2Zvcih2YXIgUz1jLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLHYpLnRvU3RyaW5nKCJiYXNlNjQiKSxMPVsiLS0tLS1CRUdJTiAi'@; put 'K0MubGFiZWwrIi0tLS0tIl0sUj0wO1I8Uy5sZW5ndGg7Uis9NjQpTC5wdXNoKFMuc2xpY2UoUixSKzY0KSk7cmV0dXJuIEwucHVzaCgiLS0tLS1FTkQgIitDLmxhYmVsKyItLS0tLSIpLEwuam9pbigiXG4iKX19LDcyMzQ0KGZlLGosaCl7IWZ1bmN0aW9uKHksYyl7InVzZSBzdHJpY3QiO2Z1'@; put 'bmN0aW9uIHMoWCxmKXtpZighWCl0aHJvdyBuZXcgRXJyb3IoZnx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBBKFgsZil7WC5zdXBlcl89Zjt2YXIgYj1mdW5jdGlvbigpe307Yi5wcm90b3R5cGU9Zi5wcm90b3R5cGUsWC5wcm90b3R5cGU9bmV3IGIsWC5wcm90b3R5cGUuY29uc3Ry'@; put 'dWN0b3I9WH1mdW5jdGlvbiB2KFgsZixiKXtpZih2LmlzQk4oWCkpcmV0dXJuIFg7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PVgmJigoImxlIj09PWZ8fCJiZSI9PT1mKSYmKGI9ZixmPTEwKSx0aGlzLl9pbml0KFh8'@; put 'fDAsZnx8MTAsYnx8ImJlIikpfXZhciBDOyJvYmplY3QiPT10eXBlb2YgeT95LmV4cG9ydHM9djpjLkJOPXYsdi5CTj12LHYud29yZFNpemU9MjY7dHJ5e0M9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cuQnVmZmVyOmgoNzg5ODIpLkJ1ZmZlcn1j'@; put 'YXRjaHt9ZnVuY3Rpb24gdyhYLGYpe3ZhciBiPVguY2hhckNvZGVBdChmKTtyZXR1cm4gYj49NjUmJmI8PTcwP2ItNTU6Yj49OTcmJmI8PTEwMj9iLTg3OmItNDgmMTV9ZnVuY3Rpb24gUyhYLGYsYil7dmFyIGs9dyhYLGIpO3JldHVybiBiLTE+PWYmJihrfD13KFgsYi0xKTw8NCksa31mdW5j'@; put 'dGlvbiBMKFgsZixiLGspe2Zvcih2YXIgTT0wLEI9TWF0aC5taW4oWC5sZW5ndGgsYiksSz1mO0s8QjtLKyspe3ZhciBHPVguY2hhckNvZGVBdChLKS00ODtNKj1rLE0rPUc+PTQ5P0ctNDkrMTA6Rz49MTc/Ry0xNysxMDpHfXJldHVybiBNfXYuaXNCTj1mdW5jdGlvbihmKXtyZXR1cm4gZiBp'@; put 'bnN0YW5jZW9mIHZ8fG51bGwhPT1mJiYib2JqZWN0Ij09dHlwZW9mIGYmJmYuY29uc3RydWN0b3Iud29yZFNpemU9PT12LndvcmRTaXplJiZBcnJheS5pc0FycmF5KGYud29yZHMpfSx2Lm1heD1mdW5jdGlvbihmLGIpe3JldHVybiBmLmNtcChiKT4wP2Y6Yn0sdi5taW49ZnVuY3Rpb24oZixi'@; put 'KXtyZXR1cm4gZi5jbXAoYik8MD9mOmJ9LHYucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGYsYixrKXtpZigibnVtYmVyIj09dHlwZW9mIGYpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZixiLGspO2lmKCJvYmplY3QiPT10eXBlb2YgZilyZXR1cm4gdGhpcy5faW5pdEFycmF5KGYsYixrKTsi'@; put 'aGV4Ij09PWImJihiPTE2KSxzKGI9PT0oMHxiKSYmYj49MiYmYjw9MzYpO3ZhciBNPTA7Ii0iPT09KGY9Zi50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihNKyssdGhpcy5uZWdhdGl2ZT0xKSxNPGYubGVuZ3RoJiYoMTY9PT1iP3RoaXMuX3BhcnNlSGV4KGYsTSxrKToodGhp'@; put 'cy5fcGFyc2VCYXNlKGYsYixNKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGIsaykpKX0sdi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZixiLGspe2Y8MCYmKHRoaXMubmVnYXRpdmU9MSxmPS1mKSxmPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEw'@; put 'ODg2MyZmXSx0aGlzLmxlbmd0aD0xKTpmPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmYsZi82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KHMoZjw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZmLGYvNjcxMDg4NjQmNjcxMDg4'@; put 'NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PWsmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxiLGspfSx2LnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGYsYixrKXtpZihzKCJudW1iZXIiPT10eXBlb2YgZi5sZW5ndGgpLGYubGVuZ3RoPD0wKXJldHVybiB0aGlzLndv'@; put 'cmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGYubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIE09MDtNPHRoaXMubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPTA7dmFyIEIsSyxHPTA7aWYoImJlIj09PWsp'@; put 'Zm9yKE09Zi5sZW5ndGgtMSxCPTA7TT49MDtNLT0zKXRoaXMud29yZHNbQl18PShLPWZbTV18ZltNLTFdPDw4fGZbTS0yXTw8MTYpPDxHJjY3MTA4ODYzLHRoaXMud29yZHNbQisxXT1LPj4+MjYtRyY2NzEwODg2MywoRys9MjQpPj0yNiYmKEctPTI2LEIrKyk7ZWxzZSBpZigibGUiPT09aylm'@; put 'b3IoTT0wLEI9MDtNPGYubGVuZ3RoO00rPTMpdGhpcy53b3Jkc1tCXXw9KEs9ZltNXXxmW00rMV08PDh8ZltNKzJdPDwxNik8PEcmNjcxMDg4NjMsdGhpcy53b3Jkc1tCKzFdPUs+Pj4yNi1HJjY3MTA4ODYzLChHKz0yNCk+PTI2JiYoRy09MjYsQisrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2'@; put 'LnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZixiLGspe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZi5sZW5ndGgtYikvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgTT0wO008dGhpcy5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgRyxCPTAs'@; put 'Sz0wO2lmKCJiZSI9PT1rKWZvcihNPWYubGVuZ3RoLTE7TT49YjtNLT0yKUc9UyhmLGIsTSk8PEIsdGhpcy53b3Jkc1tLXXw9NjcxMDg4NjMmRyxCPj0xOD8oQi09MTgsdGhpcy53b3Jkc1tLKz0xXXw9Rz4+PjI2KTpCKz04O2Vsc2UgZm9yKE09KGYubGVuZ3RoLWIpJTI9PTA/YisxOmI7TTxm'@; put 'Lmxlbmd0aDtNKz0yKUc9UyhmLGIsTSk8PEIsdGhpcy53b3Jkc1tLXXw9NjcxMDg4NjMmRyxCPj0xOD8oQi09MTgsdGhpcy53b3Jkc1tLKz0xXXw9Rz4+PjI2KTpCKz04O3RoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihmLGIsayl7dGhpcy53b3Jkcz1bMF0s'@; put 'dGhpcy5sZW5ndGg9MTtmb3IodmFyIE09MCxCPTE7Qjw9NjcxMDg4NjM7Qio9YilNKys7TS0tLEI9Qi9ifDA7Zm9yKHZhciBLPWYubGVuZ3RoLWssRz1LJU0sRD1NYXRoLm1pbihLLEstRykrayxwPTAsST1rO0k8RDtJKz1NKXA9TChmLEksSStNLGIpLHRoaXMuaW11bG4oQiksdGhpcy53b3Jk'@; put 'c1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCk7aWYoMCE9PUcpe3ZhciB1ZT0xO2ZvcihwPUwoZixJLGYubGVuZ3RoLGIpLEk9MDtJPEc7SSsrKXVlKj1iO3RoaXMuaW11bG4odWUpLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1w'@; put 'OnRoaXMuX2lhZGRuKHApfXRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuY29weT1mdW5jdGlvbihmKXtmLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBiPTA7Yjx0aGlzLmxlbmd0aDtiKyspZi53b3Jkc1tiXT10aGlzLndvcmRzW2JdO2YubGVuZ3RoPXRoaXMubGVuZ3Ro'@; put 'LGYubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxmLnJlZD10aGlzLnJlZH0sdi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZj1uZXcgdihudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGYpLGZ9LHYucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oZil7Zm9yKDt0aGlzLmxlbmd0aDxmOyl0'@; put 'aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LHYucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sdi5wcm90'@; put 'b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LHYucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMu'@; put 'dG9TdHJpbmcoMTYpKyI+In07dmFyIFI9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAw'@; put 'MDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw'@; put 'MDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0seD1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUs'@; put 'NSw1LDUsNSw1LDUsNSw1XSxVPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQw'@; put 'MTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9u'@; put 'IFYoWCxmLGIpe2IubmVnYXRpdmU9Zi5uZWdhdGl2ZV5YLm5lZ2F0aXZlO3ZhciBrPVgubGVuZ3RoK2YubGVuZ3RofDA7Yi5sZW5ndGg9ayxrPWstMXwwO3ZhciBNPTB8WC53b3Jkc1swXSxCPTB8Zi53b3Jkc1swXSxLPU0qQixEPUsvNjcxMDg4NjR8MDtiLndvcmRzWzBdPTY3MTA4ODYzJks7'@; put 'Zm9yKHZhciBwPTE7cDxrO3ArKyl7Zm9yKHZhciBJPUQ+Pj4yNix1ZT02NzEwODg2MyZELG5lPU1hdGgubWluKHAsZi5sZW5ndGgtMSksX2U9TWF0aC5tYXgoMCxwLVgubGVuZ3RoKzEpO19lPD1uZTtfZSsrKUkrPShLPShNPTB8WC53b3Jkc1twLV9lfDBdKSooQj0wfGYud29yZHNbX2VdKSt1'@; put 'ZSkvNjcxMDg4NjR8MCx1ZT02NzEwODg2MyZLO2Iud29yZHNbcF09MHx1ZSxEPTB8SX1yZXR1cm4gMCE9PUQ/Yi53b3Jkc1twXT0wfEQ6Yi5sZW5ndGgtLSxiLnN0cmlwKCl9di5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZixiKXt2YXIgaztpZihiPTB8Ynx8MSwxNj09PShmPWZ8fDEw'@; put 'KXx8ImhleCI9PT1mKXtrPSIiO2Zvcih2YXIgTT0wLEI9MCxLPTA7Szx0aGlzLmxlbmd0aDtLKyspe3ZhciBHPXRoaXMud29yZHNbS10sRD0oMTY3NzcyMTUmKEc8PE18QikpLnRvU3RyaW5nKDE2KTtCPUc+Pj4yNC1NJjE2Nzc3MjE1LChNKz0yKT49MjYmJihNLT0yNixLLS0pLGs9MCE9PUJ8'@; put 'fEshPT10aGlzLmxlbmd0aC0xP1JbNi1ELmxlbmd0aF0rRCtrOkQra31mb3IoMCE9PUImJihrPUIudG9TdHJpbmcoMTYpK2spO2subGVuZ3RoJWIhPT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9aWYoZj09PSgwfGYpJiZmPj0yJiZmPD0zNil7dmFy'@; put 'IHA9eFtmXSxJPVVbZl07az0iIjt2YXIgdWU9dGhpcy5jbG9uZSgpO2Zvcih1ZS5uZWdhdGl2ZT0wOyF1ZS5pc1plcm8oKTspe3ZhciBuZT11ZS5tb2RuKEkpLnRvU3RyaW5nKGYpO2s9KHVlPXVlLmlkaXZuKEkpKS5pc1plcm8oKT9uZStrOlJbcC1uZS5sZW5ndGhdK25lK2t9Zm9yKHRoaXMu'@; put 'aXNaZXJvKCkmJihrPSIwIitrKTtrLmxlbmd0aCViIT09MDspaz0iMCIraztyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihrPSItIitrKSxrfXMoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sdi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgZj10aGlz'@; put 'LndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Zis9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP2YrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZzKCExLCJOdW1iZXIg'@; put 'Y2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tZjpmfSx2LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LHYucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHModHlw'@; put 'ZW9mIEM8InUiKSx0aGlzLnRvQXJyYXlMaWtlKEMsZixiKX0sdi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGYsYil9LHYucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGYsYixrKXt2YXIgTT10aGlzLmJ5dGVMZW5n'@; put 'dGgoKSxCPWt8fE1hdGgubWF4KDEsTSk7cyhNPD1CLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIikscyhCPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgRCxwLEs9ImxlIj09PWIsRz1uZXcgZihCKSxJPXRoaXMuY2xvbmUo'@; put 'KTtpZihLKXtmb3IocD0wOyFJLmlzWmVybygpO3ArKylEPUkuYW5kbG4oMjU1KSxJLml1c2hybig4KSxHW3BdPUQ7Zm9yKDtwPEI7cCsrKUdbcF09MH1lbHNle2ZvcihwPTA7cDxCLU07cCsrKUdbcF09MDtmb3IocD0wOyFJLmlzWmVybygpO3ArKylEPUkuYW5kbG4oMjU1KSxJLml1c2hybig4'@; put 'KSxHW0ItcC0xXT1EfXJldHVybiBHfSx2LnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oZil7cmV0dXJuIDMyLU1hdGguY2x6MzIoZil9OmZ1bmN0aW9uKGYpe3ZhciBiPWYsaz0wO3JldHVybiBiPj00MDk2JiYoays9MTMsYj4+Pj0xMyksYj49NjQmJihrKz03LGI+'@; put 'Pj49NyksYj49OCYmKGsrPTQsYj4+Pj00KSxiPj0yJiYoays9MixiPj4+PTIpLGsrYn0sdi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGYpe2lmKDA9PT1mKXJldHVybiAyNjt2YXIgYj1mLGs9MDtyZXR1cm4hKDgxOTEmYikmJihrKz0xMyxiPj4+PTEzKSwhKDEyNyZiKSYmKGsrPTcs'@; put 'Yj4+Pj03KSwhKDE1JmIpJiYoays9NCxiPj4+PTQpLCEoMyZiKSYmKGsrPTIsYj4+Pj0yKSwhKDEmYikmJmsrKyxrfSx2LnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlz'@; put 'Lmxlbmd0aC0xKStifSx2LnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBmPTAsYj0wO2I8dGhpcy5sZW5ndGg7YisrKXt2YXIgaz10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2JdKTtpZihmKz1rLDI2IT09aylicmVha31y'@; put 'ZXR1cm4gZn0sdi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sdi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGYpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGYpLmlhZGRuKDEp'@; put 'OnRoaXMuY2xvbmUoKX0sdi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMudGVzdG4oZi0xKT90aGlzLm5vdG4oZikuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sdi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRp'@; put 'dmV9LHYucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSx2LnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSx2LnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGYpe2Zv'@; put 'cig7dGhpcy5sZW5ndGg8Zi5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIGI9MDtiPGYubGVuZ3RoO2IrKyl0aGlzLndvcmRzW2JdPXRoaXMud29yZHNbYl18Zi53b3Jkc1tiXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24o'@; put 'Zil7cmV0dXJuIHMoMD09PSh0aGlzLm5lZ2F0aXZlfGYubmVnYXRpdmUpKSx0aGlzLml1b3IoZil9LHYucHJvdG90eXBlLm9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGYpOmYuY2xvbmUoKS5pb3IodGhpcyl9LHYucHJvdG90eXBl'@; put 'LnVvcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoZik6Zi5jbG9uZSgpLml1b3IodGhpcyl9LHYucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKGYpe3ZhciBiO2I9dGhpcy5sZW5ndGg+Zi5sZW5ndGg/Zjp0aGlzO2Zvcih2YXIgaz0w'@; put 'O2s8Yi5sZW5ndGg7aysrKXRoaXMud29yZHNba109dGhpcy53b3Jkc1trXSZmLndvcmRzW2tdO3JldHVybiB0aGlzLmxlbmd0aD1iLmxlbmd0aCx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoMD09PSh0aGlzLm5lZ2F0aXZlfGYubmVnYXRpdmUp'@; put 'KSx0aGlzLml1YW5kKGYpfSx2LnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGYpOmYuY2xvbmUoKS5pYW5kKHRoaXMpfSx2LnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5m'@; put 'Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoZik6Zi5jbG9uZSgpLml1YW5kKHRoaXMpfSx2LnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihmKXt2YXIgYixrO3RoaXMubGVuZ3RoPmYubGVuZ3RoPyhiPXRoaXMsaz1mKTooYj1mLGs9dGhpcyk7Zm9yKHZhciBNPTA7TTxrLmxlbmd0aDtNKysp'@; put 'dGhpcy53b3Jkc1tNXT1iLndvcmRzW01dXmsud29yZHNbTV07aWYodGhpcyE9PWIpZm9yKDtNPGIubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPWIud29yZHNbTV07cmV0dXJuIHRoaXMubGVuZ3RoPWIubGVuZ3RoLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihmKXty'@; put 'ZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZil9LHYucHJvdG90eXBlLnhvcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZik6Zi5jbG9uZSgpLml4b3IodGhpcyl9LHYucHJvdG90eXBl'@; put 'LnV4b3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihmKTpmLmNsb25lKCkuaXV4b3IodGhpcyl9LHYucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj0wfE1hdGguY2Vp'@; put 'bChmLzI2KSxrPWYlMjY7dGhpcy5fZXhwYW5kKGIpLGs+MCYmYi0tO2Zvcih2YXIgTT0wO008YjtNKyspdGhpcy53b3Jkc1tNXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tNXTtmb3Ioaz4wJiYodGhpcy53b3Jkc1tNXT1+dGhpcy53b3Jkc1tNXSY2NzEwODg2Mz4+MjYtayxNKyspO008dGhpcy5s'@; put 'ZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZil9LHYucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZixiKXtzKCJudW1iZXIiPT10eXBlb2YgZiYmZj49MCk7'@; put 'dmFyIGs9Zi8yNnwwLE09ZiUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGsrMSksdGhpcy53b3Jkc1trXT1iP3RoaXMud29yZHNba118MTw8TTp0aGlzLndvcmRzW2tdJn4oMTw8TSksdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGYpe3ZhciBiLGssTTtpZigwIT09dGhp'@; put 'cy5uZWdhdGl2ZSYmMD09PWYubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxiPXRoaXMuaXN1YihmKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1mLm5lZ2F0aXZlKXJldHVybiBmLm5lZ2F0aXZlPTAsYj10aGlzLmlz'@; put 'dWIoZiksZi5uZWdhdGl2ZT0xLGIuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zi5sZW5ndGg/KGs9dGhpcyxNPWYpOihrPWYsTT10aGlzKTtmb3IodmFyIEI9MCxLPTA7SzxNLmxlbmd0aDtLKyspdGhpcy53b3Jkc1tLXT02NzEwODg2MyYoYj0oMHxrLndvcmRzW0tdKSsoMHxNLndvcmRzW0td'@; put 'KStCKSxCPWI+Pj4yNjtmb3IoOzAhPT1CJiZLPGsubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPTY3MTA4ODYzJihiPSgwfGsud29yZHNbS10pK0IpLEI9Yj4+PjI2O2lmKHRoaXMubGVuZ3RoPWsubGVuZ3RoLDAhPT1CKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPUIsdGhpcy5sZW5ndGgrKztl'@; put 'bHNlIGlmKGshPT10aGlzKWZvcig7SzxrLmxlbmd0aDtLKyspdGhpcy53b3Jkc1tLXT1rLndvcmRzW0tdO3JldHVybiB0aGlzfSx2LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZil7dmFyIGI7cmV0dXJuIDAhPT1mLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oZi5uZWdhdGl2ZT0wLGI9'@; put 'dGhpcy5zdWIoZiksZi5uZWdhdGl2ZV49MSxiKTowPT09Zi5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxiPWYuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxiKTp0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChmKTpmLmNsb25lKCku'@; put 'aWFkZCh0aGlzKX0sdi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihmKXtpZigwIT09Zi5uZWdhdGl2ZSl7Zi5uZWdhdGl2ZT0wO3ZhciBiPXRoaXMuaWFkZChmKTtyZXR1cm4gZi5uZWdhdGl2ZT0xLGIuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRp'@; put 'dmU9MCx0aGlzLmlhZGQoZiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIE0sQixrPXRoaXMuY21wKGYpO2lmKDA9PT1rKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztrPjA/KE09dGhpcyxCPWYpOihNPWYsQj10'@; put 'aGlzKTtmb3IodmFyIEs9MCxHPTA7RzxCLmxlbmd0aDtHKyspSz0oYj0oMHxNLndvcmRzW0ddKS0oMHxCLndvcmRzW0ddKStLKT4+MjYsdGhpcy53b3Jkc1tHXT02NzEwODg2MyZiO2Zvcig7MCE9PUsmJkc8TS5sZW5ndGg7RysrKUs9KGI9KDB8TS53b3Jkc1tHXSkrSyk+PjI2LHRoaXMud29y'@; put 'ZHNbR109NjcxMDg4NjMmYjtpZigwPT09SyYmRzxNLmxlbmd0aCYmTSE9PXRoaXMpZm9yKDtHPE0ubGVuZ3RoO0crKyl0aGlzLndvcmRzW0ddPU0ud29yZHNbR107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEcpLE0hPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0'@; put 'aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZil9O3ZhciBOPWZ1bmN0aW9uKGYsYixrKXt2YXIgRCxwLEksTT1mLndvcmRzLEI9Yi53b3JkcyxLPWsud29yZHMsRz0wLHVlPTB8TVswXSxuZT04MTkxJnVlLF9lPXVlPj4+'@; put 'MTMsUGU9MHxNWzFdLG90PTgxOTEmUGUsbHQ9UGU+Pj4xMyxkdD0wfE1bMl0sUmU9ODE5MSZkdCxhZT1kdD4+PjEzLHhlPTB8TVszXSxqZT04MTkxJnhlLEFlPXhlPj4+MTMsRGU9MHxNWzRdLEZlPTgxOTEmRGUsZ2U9RGU+Pj4xMyxjZT0wfE1bNV0saGU9ODE5MSZjZSx3ZT1jZT4+PjEzLEpl'@; put 'PTB8TVs2XSx0dD04MTkxJkplLEtlPUplPj4+MTMsJHQ9MHxNWzddLFJ0PTgxOTEmJHQsTHQ9JHQ+Pj4xMyxHdD0wfE1bOF0sZ3Q9ODE5MSZHdCxYdD1HdD4+PjEzLExyPTB8TVs5XSxsbj04MTkxJkxyLE9uPUxyPj4+MTMsUXI9MHxCWzBdLHRyPTgxOTEmUXIsSG49UXI+Pj4xMyxPbz0wfEJb'@; put 'MV0sdXI9ODE5MSZPbyxabj1Pbz4+PjEzLFNuPTB8QlsyXSx4cj04MTkxJlNuLFR0PVNuPj4+MTMsQXI9MHxCWzNdLF9uPTgxOTEmQXIsWnQ9QXI+Pj4xMyxObj0wfEJbNF0scHQ9ODE5MSZObixwbj1Obj4+PjEzLE1pPTB8Qls1XSxHZT04MTkxJk1pLFV0PU1pPj4+MTMsdnI9MHxCWzZdLHh0'@; put 'PTgxOTEmdnIsQnQ9dnI+Pj4xMyx6bj0wfEJbN10sR249ODE5MSZ6bix5bj16bj4+PjEzLHZpPTB8Qls4XSxycj04MTkxJnZpLGhyPXZpPj4+MTMscG89MHxCWzldLHZuPTgxOTEmcG8sQm49cG8+Pj4xMztrLm5lZ2F0aXZlPWYubmVnYXRpdmVeYi5uZWdhdGl2ZSxrLmxlbmd0aD0xOTt2YXIg'@; put 'amE9KEcrKEQ9TWF0aC5pbXVsKG5lLHRyKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChuZSxIbikpK01hdGguaW11bChfZSx0cil8MCkpPDwxMyl8MDtHPSgoST1NYXRoLmltdWwoX2UsSG4pKSsocD4+PjEzKXwwKSsoamE+Pj4yNil8MCxqYSY9NjcxMDg4NjMsRD1NYXRoLmltdWwob3Qs'@; put 'dHIpLHA9KHA9TWF0aC5pbXVsKG90LEhuKSkrTWF0aC5pbXVsKGx0LHRyKXwwLEk9TWF0aC5pbXVsKGx0LEhuKTt2YXIgam89KEcrKEQ9RCtNYXRoLmltdWwobmUsdXIpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSxabil8MCkrTWF0aC5pbXVsKF9lLHVyKXwwKSk8PDEzKXww'@; put 'O0c9KChJPUkrTWF0aC5pbXVsKF9lLFpuKXwwKSsocD4+PjEzKXwwKSsoam8+Pj4yNil8MCxqbyY9NjcxMDg4NjMsRD1NYXRoLmltdWwoUmUsdHIpLHA9KHA9TWF0aC5pbXVsKFJlLEhuKSkrTWF0aC5pbXVsKGFlLHRyKXwwLEk9TWF0aC5pbXVsKGFlLEhuKSxEPUQrTWF0aC5pbXVsKG90LHVy'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsWm4pfDApK01hdGguaW11bChsdCx1cil8MCxJPUkrTWF0aC5pbXVsKGx0LFpuKXwwO3ZhciBYcj0oRysoRD1EK01hdGguaW11bChuZSx4cil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFR0KXwwKStNYXRoLmltdWwoX2UseHIpfDAp'@; put 'KTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsVHQpfDApKyhwPj4+MTMpfDApKyhYcj4+PjI2KXwwLFhyJj02NzEwODg2MyxEPU1hdGguaW11bChqZSx0cikscD0ocD1NYXRoLmltdWwoamUsSG4pKStNYXRoLmltdWwoQWUsdHIpfDAsST1NYXRoLmltdWwoQWUsSG4pLEQ9RCtNYXRoLmlt'@; put 'dWwoUmUsdXIpfDAscD0ocD1wK01hdGguaW11bChSZSxabil8MCkrTWF0aC5pbXVsKGFlLHVyKXwwLEk9SStNYXRoLmltdWwoYWUsWm4pfDAsRD1EK01hdGguaW11bChvdCx4cil8MCxwPShwPXArTWF0aC5pbXVsKG90LFR0KXwwKStNYXRoLmltdWwobHQseHIpfDAsST1JK01hdGguaW11bChs'@; put 'dCxUdCl8MDt2YXIgZWE9KEcrKEQ9RCtNYXRoLmltdWwobmUsX24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSxadCl8MCkrTWF0aC5pbXVsKF9lLF9uKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLFp0KXwwKSsocD4+PjEzKXwwKSsoZWE+Pj4yNil8MCxlYSY9'@; put 'NjcxMDg4NjMsRD1NYXRoLmltdWwoRmUsdHIpLHA9KHA9TWF0aC5pbXVsKEZlLEhuKSkrTWF0aC5pbXVsKGdlLHRyKXwwLEk9TWF0aC5pbXVsKGdlLEhuKSxEPUQrTWF0aC5pbXVsKGplLHVyKXwwLHA9KHA9cCtNYXRoLmltdWwoamUsWm4pfDApK01hdGguaW11bChBZSx1cil8MCxJPUkrTWF0'@; put 'aC5pbXVsKEFlLFpuKXwwLEQ9RCtNYXRoLmltdWwoUmUseHIpfDAscD0ocD1wK01hdGguaW11bChSZSxUdCl8MCkrTWF0aC5pbXVsKGFlLHhyKXwwLEk9SStNYXRoLmltdWwoYWUsVHQpfDAsRD1EK01hdGguaW11bChvdCxfbil8MCxwPShwPXArTWF0aC5pbXVsKG90LFp0KXwwKStNYXRoLmlt'@; put 'dWwobHQsX24pfDAsST1JK01hdGguaW11bChsdCxadCl8MDt2YXIgcmE9KEcrKEQ9RCtNYXRoLmltdWwobmUscHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSxwbil8MCkrTWF0aC5pbXVsKF9lLHB0KXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLHBuKXwwKSso'@; put 'cD4+PjEzKXwwKSsocmE+Pj4yNil8MCxyYSY9NjcxMDg4NjMsRD1NYXRoLmltdWwoaGUsdHIpLHA9KHA9TWF0aC5pbXVsKGhlLEhuKSkrTWF0aC5pbXVsKHdlLHRyKXwwLEk9TWF0aC5pbXVsKHdlLEhuKSxEPUQrTWF0aC5pbXVsKEZlLHVyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsWm4pfDAp'@; put 'K01hdGguaW11bChnZSx1cil8MCxJPUkrTWF0aC5pbXVsKGdlLFpuKXwwLEQ9RCtNYXRoLmltdWwoamUseHIpfDAscD0ocD1wK01hdGguaW11bChqZSxUdCl8MCkrTWF0aC5pbXVsKEFlLHhyKXwwLEk9SStNYXRoLmltdWwoQWUsVHQpfDAsRD1EK01hdGguaW11bChSZSxfbil8MCxwPShwPXAr'@; put 'TWF0aC5pbXVsKFJlLFp0KXwwKStNYXRoLmltdWwoYWUsX24pfDAsST1JK01hdGguaW11bChhZSxadCl8MCxEPUQrTWF0aC5pbXVsKG90LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwob3QscG4pfDApK01hdGguaW11bChsdCxwdCl8MCxJPUkrTWF0aC5pbXVsKGx0LHBuKXwwO3ZhciBjYT0oRyso'@; put 'RD1EK01hdGguaW11bChuZSxHZSl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFV0KXwwKStNYXRoLmltdWwoX2UsR2UpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsVXQpfDApKyhwPj4+MTMpfDApKyhjYT4+PjI2KXwwLGNhJj02NzEwODg2MyxEPU1hdGguaW11'@; put 'bCh0dCx0cikscD0ocD1NYXRoLmltdWwodHQsSG4pKStNYXRoLmltdWwoS2UsdHIpfDAsST1NYXRoLmltdWwoS2UsSG4pLEQ9RCtNYXRoLmltdWwoaGUsdXIpfDAscD0ocD1wK01hdGguaW11bChoZSxabil8MCkrTWF0aC5pbXVsKHdlLHVyKXwwLEk9SStNYXRoLmltdWwod2UsWm4pfDAsRD1E'@; put 'K01hdGguaW11bChGZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKEZlLFR0KXwwKStNYXRoLmltdWwoZ2UseHIpfDAsST1JK01hdGguaW11bChnZSxUdCl8MCxEPUQrTWF0aC5pbXVsKGplLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoamUsWnQpfDApK01hdGguaW11bChBZSxfbil8MCxJPUkrTWF0'@; put 'aC5pbXVsKEFlLFp0KXwwLEQ9RCtNYXRoLmltdWwoUmUscHQpfDAscD0ocD1wK01hdGguaW11bChSZSxwbil8MCkrTWF0aC5pbXVsKGFlLHB0KXwwLEk9SStNYXRoLmltdWwoYWUscG4pfDAsRD1EK01hdGguaW11bChvdCxHZSl8MCxwPShwPXArTWF0aC5pbXVsKG90LFV0KXwwKStNYXRoLmlt'@; put 'dWwobHQsR2UpfDAsST1JK01hdGguaW11bChsdCxVdCl8MDt2YXIgQ2k9KEcrKEQ9RCtNYXRoLmltdWwobmUseHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSxCdCl8MCkrTWF0aC5pbXVsKF9lLHh0KXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLEJ0KXwwKSso'@; put 'cD4+PjEzKXwwKSsoQ2k+Pj4yNil8MCxDaSY9NjcxMDg4NjMsRD1NYXRoLmltdWwoUnQsdHIpLHA9KHA9TWF0aC5pbXVsKFJ0LEhuKSkrTWF0aC5pbXVsKEx0LHRyKXwwLEk9TWF0aC5pbXVsKEx0LEhuKSxEPUQrTWF0aC5pbXVsKHR0LHVyKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsWm4pfDAp'@; put 'K01hdGguaW11bChLZSx1cil8MCxJPUkrTWF0aC5pbXVsKEtlLFpuKXwwLEQ9RCtNYXRoLmltdWwoaGUseHIpfDAscD0ocD1wK01hdGguaW11bChoZSxUdCl8MCkrTWF0aC5pbXVsKHdlLHhyKXwwLEk9SStNYXRoLmltdWwod2UsVHQpfDAsRD1EK01hdGguaW11bChGZSxfbil8MCxwPShwPXAr'@; put 'TWF0aC5pbXVsKEZlLFp0KXwwKStNYXRoLmltdWwoZ2UsX24pfDAsST1JK01hdGguaW11bChnZSxadCl8MCxEPUQrTWF0aC5pbXVsKGplLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoamUscG4pfDApK01hdGguaW11bChBZSxwdCl8MCxJPUkrTWF0aC5pbXVsKEFlLHBuKXwwLEQ9RCtNYXRoLmlt'@; put 'dWwoUmUsR2UpfDAscD0ocD1wK01hdGguaW11bChSZSxVdCl8MCkrTWF0aC5pbXVsKGFlLEdlKXwwLEk9SStNYXRoLmltdWwoYWUsVXQpfDAsRD1EK01hdGguaW11bChvdCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKG90LEJ0KXwwKStNYXRoLmltdWwobHQseHQpfDAsST1JK01hdGguaW11bChs'@; put 'dCxCdCl8MDt2YXIgaG89KEcrKEQ9RCtNYXRoLmltdWwobmUsR24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSx5bil8MCkrTWF0aC5pbXVsKF9lLEduKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLHluKXwwKSsocD4+PjEzKXwwKSsoaG8+Pj4yNil8MCxobyY9'@; put 'NjcxMDg4NjMsRD1NYXRoLmltdWwoZ3QsdHIpLHA9KHA9TWF0aC5pbXVsKGd0LEhuKSkrTWF0aC5pbXVsKFh0LHRyKXwwLEk9TWF0aC5pbXVsKFh0LEhuKSxEPUQrTWF0aC5pbXVsKFJ0LHVyKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsWm4pfDApK01hdGguaW11bChMdCx1cil8MCxJPUkrTWF0'@; put 'aC5pbXVsKEx0LFpuKXwwLEQ9RCtNYXRoLmltdWwodHQseHIpfDAscD0ocD1wK01hdGguaW11bCh0dCxUdCl8MCkrTWF0aC5pbXVsKEtlLHhyKXwwLEk9SStNYXRoLmltdWwoS2UsVHQpfDAsRD1EK01hdGguaW11bChoZSxfbil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFp0KXwwKStNYXRoLmlt'@; put 'dWwod2UsX24pfDAsST1JK01hdGguaW11bCh3ZSxadCl8MCxEPUQrTWF0aC5pbXVsKEZlLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUscG4pfDApK01hdGguaW11bChnZSxwdCl8MCxJPUkrTWF0aC5pbXVsKGdlLHBuKXwwLEQ9RCtNYXRoLmltdWwoamUsR2UpfDAscD0ocD1wK01hdGguaW11'@; put 'bChqZSxVdCl8MCkrTWF0aC5pbXVsKEFlLEdlKXwwLEk9SStNYXRoLmltdWwoQWUsVXQpfDAsRD1EK01hdGguaW11bChSZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKFJlLEJ0KXwwKStNYXRoLmltdWwoYWUseHQpfDAsST1JK01hdGguaW11bChhZSxCdCl8MCxEPUQrTWF0aC5pbXVsKG90LEdu'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwob3QseW4pfDApK01hdGguaW11bChsdCxHbil8MCxJPUkrTWF0aC5pbXVsKGx0LHluKXwwO3ZhciBNYT0oRysoRD1EK01hdGguaW11bChuZSxycil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLGhyKXwwKStNYXRoLmltdWwoX2UscnIpfDAp'@; put 'KTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsaHIpfDApKyhwPj4+MTMpfDApKyhNYT4+PjI2KXwwLE1hJj02NzEwODg2MyxEPU1hdGguaW11bChsbix0cikscD0ocD1NYXRoLmltdWwobG4sSG4pKStNYXRoLmltdWwoT24sdHIpfDAsST1NYXRoLmltdWwoT24sSG4pLEQ9RCtNYXRoLmlt'@; put 'dWwoZ3QsdXIpfDAscD0ocD1wK01hdGguaW11bChndCxabil8MCkrTWF0aC5pbXVsKFh0LHVyKXwwLEk9SStNYXRoLmltdWwoWHQsWm4pfDAsRD1EK01hdGguaW11bChSdCx4cil8MCxwPShwPXArTWF0aC5pbXVsKFJ0LFR0KXwwKStNYXRoLmltdWwoTHQseHIpfDAsST1JK01hdGguaW11bChM'@; put 'dCxUdCl8MCxEPUQrTWF0aC5pbXVsKHR0LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsWnQpfDApK01hdGguaW11bChLZSxfbil8MCxJPUkrTWF0aC5pbXVsKEtlLFp0KXwwLEQ9RCtNYXRoLmltdWwoaGUscHQpfDAscD0ocD1wK01hdGguaW11bChoZSxwbil8MCkrTWF0aC5pbXVsKHdlLHB0'@; put 'KXwwLEk9SStNYXRoLmltdWwod2UscG4pfDAsRD1EK01hdGguaW11bChGZSxHZSl8MCxwPShwPXArTWF0aC5pbXVsKEZlLFV0KXwwKStNYXRoLmltdWwoZ2UsR2UpfDAsST1JK01hdGguaW11bChnZSxVdCl8MCxEPUQrTWF0aC5pbXVsKGplLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoamUsQnQp'@; put 'fDApK01hdGguaW11bChBZSx4dCl8MCxJPUkrTWF0aC5pbXVsKEFlLEJ0KXwwLEQ9RCtNYXRoLmltdWwoUmUsR24pfDAscD0ocD1wK01hdGguaW11bChSZSx5bil8MCkrTWF0aC5pbXVsKGFlLEduKXwwLEk9SStNYXRoLmltdWwoYWUseW4pfDAsRD1EK01hdGguaW11bChvdCxycil8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKG90LGhyKXwwKStNYXRoLmltdWwobHQscnIpfDAsST1JK01hdGguaW11bChsdCxocil8MDt2YXIga3M9KEcrKEQ9RCtNYXRoLmltdWwobmUsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSxCbil8MCkrTWF0aC5pbXVsKF9lLHZuKXwwKSk8PDEzKXww'@; put 'O0c9KChJPUkrTWF0aC5pbXVsKF9lLEJuKXwwKSsocD4+PjEzKXwwKSsoa3M+Pj4yNil8MCxrcyY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4sdXIpLHA9KHA9TWF0aC5pbXVsKGxuLFpuKSkrTWF0aC5pbXVsKE9uLHVyKXwwLEk9TWF0aC5pbXVsKE9uLFpuKSxEPUQrTWF0aC5pbXVsKGd0LHhy'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QsVHQpfDApK01hdGguaW11bChYdCx4cil8MCxJPUkrTWF0aC5pbXVsKFh0LFR0KXwwLEQ9RCtNYXRoLmltdWwoUnQsX24pfDAscD0ocD1wK01hdGguaW11bChSdCxadCl8MCkrTWF0aC5pbXVsKEx0LF9uKXwwLEk9SStNYXRoLmltdWwoTHQsWnQpfDAs'@; put 'RD1EK01hdGguaW11bCh0dCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LHBuKXwwKStNYXRoLmltdWwoS2UscHQpfDAsST1JK01hdGguaW11bChLZSxwbil8MCxEPUQrTWF0aC5pbXVsKGhlLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsVXQpfDApK01hdGguaW11bCh3ZSxHZSl8MCxJPUkr'@; put 'TWF0aC5pbXVsKHdlLFV0KXwwLEQ9RCtNYXRoLmltdWwoRmUseHQpfDAscD0ocD1wK01hdGguaW11bChGZSxCdCl8MCkrTWF0aC5pbXVsKGdlLHh0KXwwLEk9SStNYXRoLmltdWwoZ2UsQnQpfDAsRD1EK01hdGguaW11bChqZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKGplLHluKXwwKStNYXRo'@; put 'LmltdWwoQWUsR24pfDAsST1JK01hdGguaW11bChBZSx5bil8MCxEPUQrTWF0aC5pbXVsKFJlLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsaHIpfDApK01hdGguaW11bChhZSxycil8MCxJPUkrTWF0aC5pbXVsKGFlLGhyKXwwO3ZhciBCaT0oRysoRD1EK01hdGguaW11bChvdCx2bil8MCl8'@; put 'MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG90LEJuKXwwKStNYXRoLmltdWwobHQsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwobHQsQm4pfDApKyhwPj4+MTMpfDApKyhCaT4+PjI2KXwwLEJpJj02NzEwODg2MyxEPU1hdGguaW11bChsbix4cikscD0ocD1NYXRoLmltdWwo'@; put 'bG4sVHQpKStNYXRoLmltdWwoT24seHIpfDAsST1NYXRoLmltdWwoT24sVHQpLEQ9RCtNYXRoLmltdWwoZ3QsX24pfDAscD0ocD1wK01hdGguaW11bChndCxadCl8MCkrTWF0aC5pbXVsKFh0LF9uKXwwLEk9SStNYXRoLmltdWwoWHQsWnQpfDAsRD1EK01hdGguaW11bChSdCxwdCl8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKFJ0LHBuKXwwKStNYXRoLmltdWwoTHQscHQpfDAsST1JK01hdGguaW11bChMdCxwbil8MCxEPUQrTWF0aC5pbXVsKHR0LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsVXQpfDApK01hdGguaW11bChLZSxHZSl8MCxJPUkrTWF0aC5pbXVsKEtlLFV0KXwwLEQ9RCtNYXRo'@; put 'LmltdWwoaGUseHQpfDAscD0ocD1wK01hdGguaW11bChoZSxCdCl8MCkrTWF0aC5pbXVsKHdlLHh0KXwwLEk9SStNYXRoLmltdWwod2UsQnQpfDAsRD1EK01hdGguaW11bChGZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHluKXwwKStNYXRoLmltdWwoZ2UsR24pfDAsST1JK01hdGguaW11'@; put 'bChnZSx5bil8MCxEPUQrTWF0aC5pbXVsKGplLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoamUsaHIpfDApK01hdGguaW11bChBZSxycil8MCxJPUkrTWF0aC5pbXVsKEFlLGhyKXwwO3ZhciB0YT0oRysoRD1EK01hdGguaW11bChSZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs'@; put 'KFJlLEJuKXwwKStNYXRoLmltdWwoYWUsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoYWUsQm4pfDApKyhwPj4+MTMpfDApKyh0YT4+PjI2KXwwLHRhJj02NzEwODg2MyxEPU1hdGguaW11bChsbixfbikscD0ocD1NYXRoLmltdWwobG4sWnQpKStNYXRoLmltdWwoT24sX24pfDAs'@; put 'ST1NYXRoLmltdWwoT24sWnQpLEQ9RCtNYXRoLmltdWwoZ3QscHQpfDAscD0ocD1wK01hdGguaW11bChndCxwbil8MCkrTWF0aC5pbXVsKFh0LHB0KXwwLEk9SStNYXRoLmltdWwoWHQscG4pfDAsRD1EK01hdGguaW11bChSdCxHZSl8MCxwPShwPXArTWF0aC5pbXVsKFJ0LFV0KXwwKStNYXRo'@; put 'LmltdWwoTHQsR2UpfDAsST1JK01hdGguaW11bChMdCxVdCl8MCxEPUQrTWF0aC5pbXVsKHR0LHh0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQsQnQpfDApK01hdGguaW11bChLZSx4dCl8MCxJPUkrTWF0aC5pbXVsKEtlLEJ0KXwwLEQ9RCtNYXRoLmltdWwoaGUsR24pfDAscD0ocD1wK01hdGgu'@; put 'aW11bChoZSx5bil8MCkrTWF0aC5pbXVsKHdlLEduKXwwLEk9SStNYXRoLmltdWwod2UseW4pfDAsRD1EK01hdGguaW11bChGZSxycil8MCxwPShwPXArTWF0aC5pbXVsKEZlLGhyKXwwKStNYXRoLmltdWwoZ2UscnIpfDAsST1JK01hdGguaW11bChnZSxocil8MDt2YXIgTXI9KEcrKEQ9RCtN'@; put 'YXRoLmltdWwoamUsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChqZSxCbil8MCkrTWF0aC5pbXVsKEFlLHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKEFlLEJuKXwwKSsocD4+PjEzKXwwKSsoTXI+Pj4yNil8MCxNciY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4s'@; put 'cHQpLHA9KHA9TWF0aC5pbXVsKGxuLHBuKSkrTWF0aC5pbXVsKE9uLHB0KXwwLEk9TWF0aC5pbXVsKE9uLHBuKSxEPUQrTWF0aC5pbXVsKGd0LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QsVXQpfDApK01hdGguaW11bChYdCxHZSl8MCxJPUkrTWF0aC5pbXVsKFh0LFV0KXwwLEQ9RCtNYXRo'@; put 'LmltdWwoUnQseHQpfDAscD0ocD1wK01hdGguaW11bChSdCxCdCl8MCkrTWF0aC5pbXVsKEx0LHh0KXwwLEk9SStNYXRoLmltdWwoTHQsQnQpfDAsRD1EK01hdGguaW11bCh0dCxHbil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHluKXwwKStNYXRoLmltdWwoS2UsR24pfDAsST1JK01hdGguaW11'@; put 'bChLZSx5bil8MCxEPUQrTWF0aC5pbXVsKGhlLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsaHIpfDApK01hdGguaW11bCh3ZSxycil8MCxJPUkrTWF0aC5pbXVsKHdlLGhyKXwwO3ZhciBGcz0oRysoRD1EK01hdGguaW11bChGZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs'@; put 'KEZlLEJuKXwwKStNYXRoLmltdWwoZ2Usdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoZ2UsQm4pfDApKyhwPj4+MTMpfDApKyhGcz4+PjI2KXwwLEZzJj02NzEwODg2MyxEPU1hdGguaW11bChsbixHZSkscD0ocD1NYXRoLmltdWwobG4sVXQpKStNYXRoLmltdWwoT24sR2UpfDAs'@; put 'ST1NYXRoLmltdWwoT24sVXQpLEQ9RCtNYXRoLmltdWwoZ3QseHQpfDAscD0ocD1wK01hdGguaW11bChndCxCdCl8MCkrTWF0aC5pbXVsKFh0LHh0KXwwLEk9SStNYXRoLmltdWwoWHQsQnQpfDAsRD1EK01hdGguaW11bChSdCxHbil8MCxwPShwPXArTWF0aC5pbXVsKFJ0LHluKXwwKStNYXRo'@; put 'LmltdWwoTHQsR24pfDAsST1JK01hdGguaW11bChMdCx5bil8MCxEPUQrTWF0aC5pbXVsKHR0LHJyKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsaHIpfDApK01hdGguaW11bChLZSxycil8MCxJPUkrTWF0aC5pbXVsKEtlLGhyKXwwO3ZhciAkaT0oRysoRD1EK01hdGguaW11bChoZSx2bil8MCl8'@; put 'MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGhlLEJuKXwwKStNYXRoLmltdWwod2Usdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwod2UsQm4pfDApKyhwPj4+MTMpfDApKygkaT4+PjI2KXwwLCRpJj02NzEwODg2MyxEPU1hdGguaW11bChsbix4dCkscD0ocD1NYXRoLmltdWwo'@; put 'bG4sQnQpKStNYXRoLmltdWwoT24seHQpfDAsST1NYXRoLmltdWwoT24sQnQpLEQ9RCtNYXRoLmltdWwoZ3QsR24pfDAscD0ocD1wK01hdGguaW11bChndCx5bil8MCkrTWF0aC5pbXVsKFh0LEduKXwwLEk9SStNYXRoLmltdWwoWHQseW4pfDAsRD1EK01hdGguaW11bChSdCxycil8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKFJ0LGhyKXwwKStNYXRoLmltdWwoTHQscnIpfDAsST1JK01hdGguaW11bChMdCxocil8MDt2YXIgX3M9KEcrKEQ9RCtNYXRoLmltdWwodHQsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0dCxCbil8MCkrTWF0aC5pbXVsKEtlLHZuKXwwKSk8PDEzKXww'@; put 'O0c9KChJPUkrTWF0aC5pbXVsKEtlLEJuKXwwKSsocD4+PjEzKXwwKSsoX3M+Pj4yNil8MCxfcyY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4sR24pLHA9KHA9TWF0aC5pbXVsKGxuLHluKSkrTWF0aC5pbXVsKE9uLEduKXwwLEk9TWF0aC5pbXVsKE9uLHluKSxEPUQrTWF0aC5pbXVsKGd0LHJy'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QsaHIpfDApK01hdGguaW11bChYdCxycil8MCxJPUkrTWF0aC5pbXVsKFh0LGhyKXwwO3ZhciBqcz0oRysoRD1EK01hdGguaW11bChSdCx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFJ0LEJuKXwwKStNYXRoLmltdWwoTHQsdm4pfDAp'@; put 'KTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoTHQsQm4pfDApKyhwPj4+MTMpfDApKyhqcz4+PjI2KXwwLGpzJj02NzEwODg2MyxEPU1hdGguaW11bChsbixycikscD0ocD1NYXRoLmltdWwobG4saHIpKStNYXRoLmltdWwoT24scnIpfDAsST1NYXRoLmltdWwoT24saHIpO3ZhciBDbD0oRyso'@; put 'RD1EK01hdGguaW11bChndCx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGd0LEJuKXwwKStNYXRoLmltdWwoWHQsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoWHQsQm4pfDApKyhwPj4+MTMpfDApKyhDbD4+PjI2KXwwLENsJj02NzEwODg2Mzt2YXIgVGk9KEcr'@; put 'KEQ9TWF0aC5pbXVsKGxuLHZuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChsbixCbikpK01hdGguaW11bChPbix2bil8MCkpPDwxMyl8MDtyZXR1cm4gRz0oKEk9TWF0aC5pbXVsKE9uLEJuKSkrKHA+Pj4xMyl8MCkrKFRpPj4+MjYpfDAsVGkmPTY3MTA4ODYzLEtbMF09amEsS1sxXT1q'@; put 'byxLWzJdPVhyLEtbM109ZWEsS1s0XT1yYSxLWzVdPWNhLEtbNl09Q2ksS1s3XT1obyxLWzhdPU1hLEtbOV09a3MsS1sxMF09QmksS1sxMV09dGEsS1sxMl09TXIsS1sxM109RnMsS1sxNF09JGksS1sxNV09X3MsS1sxNl09anMsS1sxN109Q2wsS1sxOF09VGksMCE9PUcmJihLWzE5XT1HLGsu'@; put 'bGVuZ3RoKyspLGt9O2Z1bmN0aW9uIFkoWCxmLGIpe3JldHVybihuZXcgRikubXVscChYLGYsYil9ZnVuY3Rpb24gRihYLGYpe3RoaXMueD1YLHRoaXMueT1mfU1hdGguaW11bHx8KE49Viksdi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oZixiKXt2YXIgayxNPXRoaXMubGVuZ3RoK2YubGVu'@; put 'Z3RoO3JldHVybiBrPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Zi5sZW5ndGg/Tih0aGlzLGYsYik6TTw2Mz9WKHRoaXMsZixiKTpNPDEwMjQ/ZnVuY3Rpb24geihYLGYsYil7Yi5uZWdhdGl2ZT1mLm5lZ2F0aXZlXlgubmVnYXRpdmUsYi5sZW5ndGg9WC5sZW5ndGgrZi5sZW5ndGg7Zm9yKHZh'@; put 'ciBrPTAsTT0wLEI9MDtCPGIubGVuZ3RoLTE7QisrKXt2YXIgSz1NO009MDtmb3IodmFyIEc9NjcxMDg4NjMmayxEPU1hdGgubWluKEIsZi5sZW5ndGgtMSkscD1NYXRoLm1heCgwLEItWC5sZW5ndGgrMSk7cDw9RDtwKyspe3ZhciBfZT0oMHxYLndvcmRzW0ItcF0pKigwfGYud29yZHNbcF0p'@; put 'LFBlPTY3MTA4ODYzJl9lO0c9NjcxMDg4NjMmKFBlPVBlK0d8MCksTSs9KEs9KEs9SysoX2UvNjcxMDg4NjR8MCl8MCkrKFBlPj4+MjYpfDApPj4+MjYsSyY9NjcxMDg4NjN9Yi53b3Jkc1tCXT1HLGs9SyxLPU19cmV0dXJuIDAhPT1rP2Iud29yZHNbQl09azpiLmxlbmd0aC0tLGIuc3RyaXAo'@; put 'KX0odGhpcyxmLGIpOlkodGhpcyxmLGIpLGt9LEYucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZil7Zm9yKHZhciBiPW5ldyBBcnJheShmKSxrPXYucHJvdG90eXBlLl9jb3VudEJpdHMoZiktMSxNPTA7TTxmO00rKyliW01dPXRoaXMucmV2QmluKE0sayxmKTtyZXR1cm4gYn0sRi5wcm90'@; put 'b3R5cGUucmV2QmluPWZ1bmN0aW9uKGYsYixrKXtpZigwPT09Znx8Zj09PWstMSlyZXR1cm4gZjtmb3IodmFyIE09MCxCPTA7QjxiO0IrKylNfD0oMSZmKTw8Yi1CLTEsZj4+PTE7cmV0dXJuIE19LEYucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oZixiLGssTSxCLEspe2Zvcih2YXIgRz0w'@; put 'O0c8SztHKyspTVtHXT1iW2ZbR11dLEJbR109a1tmW0ddXX0sRi5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGYsYixrLE0sQixLKXt0aGlzLnBlcm11dGUoSyxmLGIsayxNLEIpO2Zvcih2YXIgRz0xO0c8QjtHPDw9MSlmb3IodmFyIEQ9Rzw8MSxwPU1hdGguY29zKDIqTWF0aC5QSS9E'@; put 'KSxJPU1hdGguc2luKDIqTWF0aC5QSS9EKSx1ZT0wO3VlPEI7dWUrPUQpZm9yKHZhciBuZT1wLF9lPUksUGU9MDtQZTxHO1BlKyspe3ZhciBvdD1rW3VlK1BlXSxsdD1NW3VlK1BlXSxkdD1rW3VlK1BlK0ddLFJlPU1bdWUrUGUrR10sYWU9bmUqZHQtX2UqUmU7UmU9bmUqUmUrX2UqZHQsa1t1'@; put 'ZStQZV09b3QrKGR0PWFlKSxNW3VlK1BlXT1sdCtSZSxrW3VlK1BlK0ddPW90LWR0LE1bdWUrUGUrR109bHQtUmUsUGUhPT1EJiYoYWU9cCpuZS1JKl9lLF9lPXAqX2UrSSpuZSxuZT1hZSl9fSxGLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihmLGIpe3ZhciBrPTF8TWF0aC5tYXgo'@; put 'YixmKSxNPTEmayxCPTA7Zm9yKGs9ay8yfDA7aztrPj4+PTEpQisrO3JldHVybiAxPDxCKzErTX0sRi5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGYsYixrKXtpZighKGs8PTEpKWZvcih2YXIgTT0wO008ay8yO00rKyl7dmFyIEI9ZltNXTtmW01dPWZbay1NLTFdLGZbay1NLTFdPUIs'@; put 'Qj1iW01dLGJbTV09LWJbay1NLTFdLGJbay1NLTFdPS1CfX0sRi5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGYsYil7Zm9yKHZhciBrPTAsTT0wO008Yi8yO00rKyl7dmFyIEI9ODE5MipNYXRoLnJvdW5kKGZbMipNKzFdL2IpK01hdGgucm91bmQoZlsyKk1dL2IpK2s7ZltNXT02'@; put 'NzEwODg2MyZCLGs9Qjw2NzEwODg2ND8wOkIvNjcxMDg4NjR8MH1yZXR1cm4gZn0sRi5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihmLGIsayxNKXtmb3IodmFyIEI9MCxLPTA7SzxiO0srKylrWzIqS109ODE5MSYoQis9MHxmW0tdKSxrWzIqSysxXT04MTkxJihCPj4+PTEzKSxCPj4+'@; put 'PTEzO2ZvcihLPTIqYjtLPE07KytLKWtbS109MDtzKDA9PT1CKSxzKCEoLTgxOTImQikpfSxGLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKGYpe2Zvcih2YXIgYj1uZXcgQXJyYXkoZiksaz0wO2s8ZjtrKyspYltrXT0wO3JldHVybiBifSxGLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGYsYixr'@; put 'KXt2YXIgTT0yKnRoaXMuZ3Vlc3NMZW4xM2IoZi5sZW5ndGgsYi5sZW5ndGgpLEI9dGhpcy5tYWtlUkJUKE0pLEs9dGhpcy5zdHViKE0pLEc9bmV3IEFycmF5KE0pLEQ9bmV3IEFycmF5KE0pLHA9bmV3IEFycmF5KE0pLEk9bmV3IEFycmF5KE0pLHVlPW5ldyBBcnJheShNKSxuZT1uZXcgQXJy'@; put 'YXkoTSksX2U9ay53b3JkcztfZS5sZW5ndGg9TSx0aGlzLmNvbnZlcnQxM2IoZi53b3JkcyxmLmxlbmd0aCxHLE0pLHRoaXMuY29udmVydDEzYihiLndvcmRzLGIubGVuZ3RoLEksTSksdGhpcy50cmFuc2Zvcm0oRyxLLEQscCxNLEIpLHRoaXMudHJhbnNmb3JtKEksSyx1ZSxuZSxNLEIpO2Zv'@; put 'cih2YXIgUGU9MDtQZTxNO1BlKyspe3ZhciBvdD1EW1BlXSp1ZVtQZV0tcFtQZV0qbmVbUGVdO3BbUGVdPURbUGVdKm5lW1BlXStwW1BlXSp1ZVtQZV0sRFtQZV09b3R9cmV0dXJuIHRoaXMuY29uanVnYXRlKEQscCxNKSx0aGlzLnRyYW5zZm9ybShELHAsX2UsSyxNLEIpLHRoaXMuY29uanVn'@; put 'YXRlKF9lLEssTSksdGhpcy5ub3JtYWxpemUxM2IoX2UsTSksay5uZWdhdGl2ZT1mLm5lZ2F0aXZlXmIubmVnYXRpdmUsay5sZW5ndGg9Zi5sZW5ndGgrYi5sZW5ndGgsay5zdHJpcCgpfSx2LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZil7dmFyIGI9bmV3IHYobnVsbCk7cmV0dXJuIGIud29y'@; put 'ZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2YubGVuZ3RoKSx0aGlzLm11bFRvKGYsYil9LHYucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oZil7dmFyIGI9bmV3IHYobnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2YubGVuZ3RoKSxZKHRoaXMsZixiKX0sdi5wcm90'@; put 'b3R5cGUuaW11bD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGYsdGhpcyl9LHYucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpO2Zvcih2YXIgYj0wLGs9MDtrPHRoaXMubGVuZ3RoO2srKyl7dmFyIE09'@; put 'KDB8dGhpcy53b3Jkc1trXSkqZixCPSg2NzEwODg2MyZNKSsoNjcxMDg4NjMmYik7Yj4+PTI2LGIrPU0vNjcxMDg4NjR8MCxiKz1CPj4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZCfXJldHVybiAwIT09YiYmKHRoaXMud29yZHNba109Yix0aGlzLmxlbmd0aCsrKSwwPT09ZiYmKHRoaXMu'@; put 'bGVuZ3RoPTEsdGhpcy5fbm9ybVNpZ24oKSksdGhpc30sdi5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGYpfSx2LnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LHYucHJvdG90eXBlLmlzcXI9ZnVuY3Rp'@; put 'b24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LHYucHJvdG90eXBlLnBvdz1mdW5jdGlvbihmKXt2YXIgYj1mdW5jdGlvbiBIKFgpe2Zvcih2YXIgZj1uZXcgQXJyYXkoWC5iaXRMZW5ndGgoKSksYj0wO2I8Zi5sZW5ndGg7YisrKXt2YXIgTT1iJTI2O2ZbYl09KFgud29yZHNb'@; put 'Yi8yNnwwXSYxPDxNKT4+Pk19cmV0dXJuIGZ9KGYpO2lmKDA9PT1iLmxlbmd0aClyZXR1cm4gbmV3IHYoMSk7Zm9yKHZhciBrPXRoaXMsTT0wO008Yi5sZW5ndGgmJjA9PT1iW01dO00rKyxrPWsuc3FyKCkpO2lmKCsrTTxiLmxlbmd0aClmb3IodmFyIEI9ay5zcXIoKTtNPGIubGVuZ3RoO00r'@; put 'KyxCPUIuc3FyKCkpMCE9PWJbTV0mJihrPWsubXVsKEIpKTtyZXR1cm4ga30sdi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgQixiPWYlMjYsaz0oZi1iKS8yNixNPTY3MTA4ODYzPj4+MjYtYjw8MjYtYjtpZigwIT09Yil7dmFy'@; put 'IEs9MDtmb3IoQj0wO0I8dGhpcy5sZW5ndGg7QisrKXt2YXIgRz10aGlzLndvcmRzW0JdJk07dGhpcy53b3Jkc1tCXT0oMHx0aGlzLndvcmRzW0JdKS1HPDxifEssSz1HPj4+MjYtYn1LJiYodGhpcy53b3Jkc1tCXT1LLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1rKXtmb3IoQj10aGlzLmxlbmd0'@; put 'aC0xO0I+PTA7Qi0tKXRoaXMud29yZHNbQitrXT10aGlzLndvcmRzW0JdO2ZvcihCPTA7QjxrO0IrKyl0aGlzLndvcmRzW0JdPTA7dGhpcy5sZW5ndGgrPWt9cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHMoMD09PXRoaXMubmVnYXRp'@; put 'dmUpLHRoaXMuaXVzaGxuKGYpfSx2LnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZixiLGspe3ZhciBNO3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKSxNPWI/KGItYiUyNikvMjY6MDt2YXIgQj1mJTI2LEs9TWF0aC5taW4oKGYtQikvMjYsdGhpcy5sZW5ndGgpLEc9NjcxMDg4NjNeNjcx'@; put 'MDg4NjM+Pj5CPDxCLEQ9aztpZihNLT1LLE09TWF0aC5tYXgoMCxNKSxEKXtmb3IodmFyIHA9MDtwPEs7cCsrKUQud29yZHNbcF09dGhpcy53b3Jkc1twXTtELmxlbmd0aD1LfWlmKDAhPT1LKWlmKHRoaXMubGVuZ3RoPkspZm9yKHRoaXMubGVuZ3RoLT1LLHA9MDtwPHRoaXMubGVuZ3RoO3Ar'@; put 'Kyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtLXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBJPTA7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PUl8fHA+PU0pO3AtLSl7dmFyIHVlPTB8dGhpcy53b3Jkc1twXTt0aGlzLndvcmRzW3BdPUk8PDI2LUJ8'@; put 'dWU+Pj5CLEk9dWUmR31yZXR1cm4gRCYmMCE9PUkmJihELndvcmRzW0QubGVuZ3RoKytdPUkpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGYsYixrKXtyZXR1cm4gcygwPT09'@; put 'dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oZixiLGspfSx2LnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oZil9LHYucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGYpfSx2LnByb3RvdHlw'@; put 'ZS5zaHJuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oZil9LHYucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGYpfSx2LnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihmKXtzKCJudW1iZXIiPT10eXBlb2YgZiYmZj49'@; put 'MCk7dmFyIGI9ZiUyNixrPShmLWIpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWt8fCEodGhpcy53b3Jkc1trXSYxPDxiKSl9LHYucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihmKXtzKCJudW1iZXIiPT10eXBlb2YgZiYmZj49MCk7dmFyIGI9ZiUyNixrPShmLWIpLzI2O3JldHVybiBzKDA9'@; put 'PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9az90aGlzOigwIT09YiYmaysrLHRoaXMubGVuZ3RoPU1hdGgubWluKGssdGhpcy5sZW5ndGgpLDAhPT1iJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9Njcx'@; put 'MDg4NjNeNjcxMDg4NjM+Pj5iPDxiKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpKX0sdi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oZil9LHYucHJvdG90eXBlLmlhZGRu'@; put 'PWZ1bmN0aW9uKGYpe3JldHVybiBzKCJudW1iZXIiPT10eXBlb2YgZikscyhmPDY3MTA4ODY0KSxmPDA/dGhpcy5pc3VibigtZik6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxmPyh0aGlzLndvcmRzWzBdPWYtKDB8dGhpcy53b3Jkc1swXSks'@; put 'dGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihmKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oZil9LHYucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihmKXt0aGlzLndvcmRzWzBdKz1mO2Zvcih2YXIgYj0wO2I8dGhpcy5sZW5ndGgm'@; put 'JnRoaXMud29yZHNbYl0+PTY3MTA4ODY0O2IrKyl0aGlzLndvcmRzW2JdLT02NzEwODg2NCxiPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW2IrMV09MTp0aGlzLndvcmRzW2IrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsYisxKSx0aGlzfSx2LnByb3Rv'@; put 'dHlwZS5pc3Vibj1mdW5jdGlvbihmKXtpZihzKCJudW1iZXIiPT10eXBlb2YgZikscyhmPDY3MTA4ODY0KSxmPDApcmV0dXJuIHRoaXMuaWFkZG4oLWYpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihmKSx0aGlzLm5lZ2F0aXZlPTEsdGhp'@; put 'cztpZih0aGlzLndvcmRzWzBdLT1mLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBiPTA7Yjx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tiXTwwO2IrKyl0aGlzLndvcmRzW2Jd'@; put 'Kz02NzEwODg2NCx0aGlzLndvcmRzW2IrMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGYpfSx2LnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4o'@; put 'Zil9LHYucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LHYucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSx2LnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oZixiLGspe3ZhciBCO3Ro'@; put 'aXMuX2V4cGFuZChmLmxlbmd0aCtrKTt2YXIgSyxHPTA7Zm9yKEI9MDtCPGYubGVuZ3RoO0IrKyl7Sz0oMHx0aGlzLndvcmRzW0Ira10pK0c7dmFyIEQ9KDB8Zi53b3Jkc1tCXSkqYjtHPSgoSy09NjcxMDg4NjMmRCk+PjI2KS0oRC82NzEwODg2NHwwKSx0aGlzLndvcmRzW0Ira109NjcxMDg4'@; put 'NjMmS31mb3IoO0I8dGhpcy5sZW5ndGgtaztCKyspRz0oSz0oMHx0aGlzLndvcmRzW0Ira10pK0cpPj4yNix0aGlzLndvcmRzW0Ira109NjcxMDg4NjMmSztpZigwPT09RylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihzKC0xPT09RyksRz0wLEI9MDtCPHRoaXMubGVuZ3RoO0IrKylHPShLPS0o'@; put 'MHx0aGlzLndvcmRzW0JdKStHKT4+MjYsdGhpcy53b3Jkc1tCXT02NzEwODg2MyZLO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihmLGIpe3ZhciBrLE09dGhpcy5jbG9uZSgpLEI9ZixLPTB8Qi53b3Jkc1tCLmxlbmd0'@; put 'aC0xXTswIT0oaz0yNi10aGlzLl9jb3VudEJpdHMoSykpJiYoQj1CLnVzaGxuKGspLE0uaXVzaGxuKGspLEs9MHxCLndvcmRzW0IubGVuZ3RoLTFdKTt2YXIgcCxEPU0ubGVuZ3RoLUIubGVuZ3RoO2lmKCJtb2QiIT09Yil7KHA9bmV3IHYobnVsbCkpLmxlbmd0aD1EKzEscC53b3Jkcz1uZXcg'@; put 'QXJyYXkocC5sZW5ndGgpO2Zvcih2YXIgST0wO0k8cC5sZW5ndGg7SSsrKXAud29yZHNbSV09MH12YXIgdWU9TS5jbG9uZSgpLl9pc2hsbnN1Ym11bChCLDEsRCk7MD09PXVlLm5lZ2F0aXZlJiYoTT11ZSxwJiYocC53b3Jkc1tEXT0xKSk7Zm9yKHZhciBuZT1ELTE7bmU+PTA7bmUtLSl7dmFy'@; put 'IF9lPTY3MTA4ODY0KigwfE0ud29yZHNbQi5sZW5ndGgrbmVdKSsoMHxNLndvcmRzW0IubGVuZ3RoK25lLTFdKTtmb3IoX2U9TWF0aC5taW4oX2UvS3wwLDY3MTA4ODYzKSxNLl9pc2hsbnN1Ym11bChCLF9lLG5lKTswIT09TS5uZWdhdGl2ZTspX2UtLSxNLm5lZ2F0aXZlPTAsTS5faXNobG5z'@; put 'dWJtdWwoQiwxLG5lKSxNLmlzWmVybygpfHwoTS5uZWdhdGl2ZV49MSk7cCYmKHAud29yZHNbbmVdPV9lKX1yZXR1cm4gcCYmcC5zdHJpcCgpLE0uc3RyaXAoKSwiZGl2IiE9PWImJjAhPT1rJiZNLml1c2hybihrKSx7ZGl2OnB8fG51bGwsbW9kOk19fSx2LnByb3RvdHlwZS5kaXZtb2Q9ZnVu'@; put 'Y3Rpb24oZixiLGspe3JldHVybiBzKCFmLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IHYoMCksbW9kOm5ldyB2KDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PWYubmVnYXRpdmU/KEs9dGhpcy5uZWcoKS5kaXZtb2QoZixiKSwibW9kIiE9PWImJihNPUsuZGl2Lm5lZygpKSwi'@; put 'ZGl2IiE9PWImJihCPUsubW9kLm5lZygpLGsmJjAhPT1CLm5lZ2F0aXZlJiZCLmlhZGQoZikpLHtkaXY6TSxtb2Q6Qn0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zi5uZWdhdGl2ZT8oSz10aGlzLmRpdm1vZChmLm5lZygpLGIpLCJtb2QiIT09YiYmKE09Sy5kaXYubmVnKCkpLHtkaXY6TSxt'@; put 'b2Q6Sy5tb2R9KTowIT09KHRoaXMubmVnYXRpdmUmZi5uZWdhdGl2ZSk/KEs9dGhpcy5uZWcoKS5kaXZtb2QoZi5uZWcoKSxiKSwiZGl2IiE9PWImJihCPUsubW9kLm5lZygpLGsmJjAhPT1CLm5lZ2F0aXZlJiZCLmlzdWIoZikpLHtkaXY6Sy5kaXYsbW9kOkJ9KTpmLmxlbmd0aD50aGlzLmxl'@; put 'bmd0aHx8dGhpcy5jbXAoZik8MD97ZGl2Om5ldyB2KDApLG1vZDp0aGlzfToxPT09Zi5sZW5ndGg/ImRpdiI9PT1iP3tkaXY6dGhpcy5kaXZuKGYud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PWI/e2RpdjpudWxsLG1vZDpuZXcgdih0aGlzLm1vZG4oZi53b3Jkc1swXSkpfTp7ZGl2OnRo'@; put 'aXMuZGl2bihmLndvcmRzWzBdKSxtb2Q6bmV3IHYodGhpcy5tb2RuKGYud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihmLGIpO3ZhciBNLEIsS30sdi5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmRpdm1vZChmLCJkaXYiLCExKS5kaXZ9LHYucHJvdG90eXBlLm1vZD1m'@; put 'dW5jdGlvbihmKXtyZXR1cm4gdGhpcy5kaXZtb2QoZiwibW9kIiwhMSkubW9kfSx2LnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmRpdm1vZChmLCJtb2QiLCEwKS5tb2R9LHYucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMuZGl2bW9kKGYp'@; put 'O2lmKGIubW9kLmlzWmVybygpKXJldHVybiBiLmRpdjt2YXIgaz1iLm1vZC5hYnMoKSxNPWYuYWJzKCkuaXVzaHJuKDEpLEI9MSZmLndvcmRzWzBdLEs9ay5jbXAoTSk7aWYoSzwwfHwxPT09QiYmMD09PUspcmV0dXJuIGIuZGl2O3ZhciBHPW5ldyB2KDEpO3JldHVybiBHLm5lZ2F0aXZlPXRo'@; put 'aXMubmVnYXRpdmVeZi5uZWdhdGl2ZSxiLmRpdi5pYWRkKEcpfSx2LnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGYpe3MoZjw9NjcxMDg4NjMpO2Zvcih2YXIgYj0oMTw8MjYpJWYsaz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSlrPShiKmsrKDB8dGhpcy53b3Jkc1tNXSkpJWY7cmV0dXJu'@; put 'IGt9LHYucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGYpe3MoZjw9NjcxMDg4NjMpO2Zvcih2YXIgYj0wLGs9dGhpcy5sZW5ndGgtMTtrPj0wO2stLSl7dmFyIE09KDB8dGhpcy53b3Jkc1trXSkrNjcxMDg4NjQqYjt0aGlzLndvcmRzW2tdPU0vZnwwLGI9TSVmfXJldHVybiB0aGlzLnN0cmlw'@; put 'KCl9LHYucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihmKX0sdi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihmKXtzKDA9PT1mLm5lZ2F0aXZlKSxzKCFmLmlzWmVybygpKTt2YXIgYj10aGlzLGs9Zi5jbG9uZSgpO2I9MCE9PWIubmVnYXRpdmU/'@; put 'Yi51bW9kKGYpOmIuY2xvbmUoKTtmb3IodmFyIE09bmV3IHYoMSksQj1uZXcgdigwKSxLPW5ldyB2KDApLEc9bmV3IHYoMSksRD0wO2IuaXNFdmVuKCkmJmsuaXNFdmVuKCk7KWIuaXVzaHJuKDEpLGsuaXVzaHJuKDEpLCsrRDtmb3IodmFyIHA9ay5jbG9uZSgpLEk9Yi5jbG9uZSgpOyFiLmlz'@; put 'WmVybygpOyl7Zm9yKHZhciB1ZT0wLG5lPTE7MD09PShiLndvcmRzWzBdJm5lKSYmdWU8MjY7Kyt1ZSxuZTw8PTEpO2lmKHVlPjApZm9yKGIuaXVzaHJuKHVlKTt1ZS0tID4wOykoTS5pc09kZCgpfHxCLmlzT2RkKCkpJiYoTS5pYWRkKHApLEIuaXN1YihJKSksTS5pdXNocm4oMSksQi5pdXNo'@; put 'cm4oMSk7Zm9yKHZhciBfZT0wLFBlPTE7MD09PShrLndvcmRzWzBdJlBlKSYmX2U8MjY7KytfZSxQZTw8PTEpO2lmKF9lPjApZm9yKGsuaXVzaHJuKF9lKTtfZS0tID4wOykoSy5pc09kZCgpfHxHLmlzT2RkKCkpJiYoSy5pYWRkKHApLEcuaXN1YihJKSksSy5pdXNocm4oMSksRy5pdXNocm4o'@; put 'MSk7Yi5jbXAoayk+PTA/KGIuaXN1YihrKSxNLmlzdWIoSyksQi5pc3ViKEcpKTooay5pc3ViKGIpLEsuaXN1YihNKSxHLmlzdWIoQikpfXJldHVybnthOkssYjpHLGdjZDprLml1c2hsbihEKX19LHYucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihmKXtzKDA9PT1mLm5lZ2F0aXZlKSxzKCFm'@; put 'LmlzWmVybygpKTt2YXIgdWUsYj10aGlzLGs9Zi5jbG9uZSgpO2I9MCE9PWIubmVnYXRpdmU/Yi51bW9kKGYpOmIuY2xvbmUoKTtmb3IodmFyIE09bmV3IHYoMSksQj1uZXcgdigwKSxLPWsuY2xvbmUoKTtiLmNtcG4oMSk+MCYmay5jbXBuKDEpPjA7KXtmb3IodmFyIEc9MCxEPTE7MD09PShi'@; put 'LndvcmRzWzBdJkQpJiZHPDI2OysrRyxEPDw9MSk7aWYoRz4wKWZvcihiLml1c2hybihHKTtHLS0gPjA7KU0uaXNPZGQoKSYmTS5pYWRkKEspLE0uaXVzaHJuKDEpO2Zvcih2YXIgcD0wLEk9MTswPT09KGsud29yZHNbMF0mSSkmJnA8MjY7KytwLEk8PD0xKTtpZihwPjApZm9yKGsuaXVzaHJu'@; put 'KHApO3AtLSA+MDspQi5pc09kZCgpJiZCLmlhZGQoSyksQi5pdXNocm4oMSk7Yi5jbXAoayk+PTA/KGIuaXN1YihrKSxNLmlzdWIoQikpOihrLmlzdWIoYiksQi5pc3ViKE0pKX1yZXR1cm4odWU9MD09PWIuY21wbigxKT9NOkIpLmNtcG4oMCk8MCYmdWUuaWFkZChmKSx1ZX0sdi5wcm90b3R5'@; put 'cGUuZ2NkPWZ1bmN0aW9uKGYpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIGYuYWJzKCk7aWYoZi5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgYj10aGlzLmNsb25lKCksaz1mLmNsb25lKCk7Yi5uZWdhdGl2ZT0wLGsubmVnYXRpdmU9MDtmb3IodmFyIE09MDtiLmlzRXZlbigpJiZr'@; put 'LmlzRXZlbigpO00rKyliLml1c2hybigxKSxrLml1c2hybigxKTtmb3IoOzspe2Zvcig7Yi5pc0V2ZW4oKTspYi5pdXNocm4oMSk7Zm9yKDtrLmlzRXZlbigpOylrLml1c2hybigxKTt2YXIgQj1iLmNtcChrKTtpZihCPDApe3ZhciBLPWI7Yj1rLGs9S31lbHNlIGlmKDA9PT1CfHwwPT09ay5j'@; put 'bXBuKDEpKWJyZWFrO2IuaXN1YihrKX1yZXR1cm4gay5pdXNobG4oTSl9LHYucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZWdjZChmKS5hLnVtb2QoZil9LHYucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiEoMSZ0aGlzLndvcmRzWzBdKX0sdi5wcm90'@; put 'b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4hKDEmfnRoaXMud29yZHNbMF0pfSx2LnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZmfSx2LnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihmKXtzKCJudW1iZXIiPT10eXBlb2YgZik7dmFyIGI9ZiUy'@; put 'NixrPShmLWIpLzI2LE09MTw8YjtpZih0aGlzLmxlbmd0aDw9aylyZXR1cm4gdGhpcy5fZXhwYW5kKGsrMSksdGhpcy53b3Jkc1trXXw9TSx0aGlzO2Zvcih2YXIgQj1NLEs9azswIT09QiYmSzx0aGlzLmxlbmd0aDtLKyspe3ZhciBHPTB8dGhpcy53b3Jkc1tLXTtCPShHKz1CKT4+PjI2LHRo'@; put 'aXMud29yZHNbS109RyY9NjcxMDg4NjN9cmV0dXJuIDAhPT1CJiYodGhpcy53b3Jkc1tLXT1CLHRoaXMubGVuZ3RoKyspLHRoaXN9LHYucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSx2LnByb3RvdHlwZS5jbXBu'@; put 'PWZ1bmN0aW9uKGYpe3ZhciBrLGI9ZjwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhYilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmYilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlrPTE7ZWxzZXtiJiYoZj0tZikscyhmPD02NzEwODg2MywiTnVtYmVyIGlz'@; put 'IHRvbyBiaWciKTt2YXIgTT0wfHRoaXMud29yZHNbMF07az1NPT09Zj8wOk08Zj8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1rOmt9LHYucHJvdG90eXBlLmNtcD1mdW5jdGlvbihmKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWYubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09'@; put 'PXRoaXMubmVnYXRpdmUmJjAhPT1mLm5lZ2F0aXZlKXJldHVybiAxO3ZhciBiPXRoaXMudWNtcChmKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtYjpifSx2LnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKGYpe2lmKHRoaXMubGVuZ3RoPmYubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVu'@; put 'Z3RoPGYubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgYj0wLGs9dGhpcy5sZW5ndGgtMTtrPj0wO2stLSl7dmFyIE09MHx0aGlzLndvcmRzW2tdLEI9MHxmLndvcmRzW2tdO2lmKE0hPT1CKXtNPEI/Yj0tMTpNPkImJihiPTEpO2JyZWFrfX1yZXR1cm4gYn0sdi5wcm90b3R5cGUuZ3RuPWZ1bmN0'@; put 'aW9uKGYpe3JldHVybiAxPT09dGhpcy5jbXBuKGYpfSx2LnByb3RvdHlwZS5ndD1mdW5jdGlvbihmKXtyZXR1cm4gMT09PXRoaXMuY21wKGYpfSx2LnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNtcG4oZik+PTB9LHYucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihmKXty'@; put 'ZXR1cm4gdGhpcy5jbXAoZik+PTB9LHYucHJvdG90eXBlLmx0bj1mdW5jdGlvbihmKXtyZXR1cm4tMT09PXRoaXMuY21wbihmKX0sdi5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oZil7cmV0dXJuLTE9PT10aGlzLmNtcChmKX0sdi5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhp'@; put 'cy5jbXBuKGYpPD0wfSx2LnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY21wKGYpPD0wfSx2LnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oZil7cmV0dXJuIDA9PT10aGlzLmNtcG4oZil9LHYucHJvdG90eXBlLmVxPWZ1bmN0aW9uKGYpe3JldHVybiAwPT09dGhpcy5jbXAo'@; put 'Zil9LHYucmVkPWZ1bmN0aW9uKGYpe3JldHVybiBuZXcga2UoZil9LHYucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGYpe3JldHVybiBzKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHMoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5'@; put 'IHdpdGggcG9zaXRpdmVzIiksZi5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGYpfSx2LnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5j'@; put 'b252ZXJ0RnJvbSh0aGlzKX0sdi5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLnJlZD1mLHRoaXN9LHYucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGYpe3JldHVybiBzKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4'@; put 'dCIpLHRoaXMuX2ZvcmNlUmVkKGYpfSx2LnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihmKXty'@; put 'ZXR1cm4gcyh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIp'@; put 'LHRoaXMucmVkLnN1Yih0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGYp'@; put 'e3JldHVybiBzKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIp'@; put 'LHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZiksdGhpcy5yZWQubXVsKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGYpLHRo'@; put 'aXMucmVkLmltdWwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LHYucHJvdG90eXBlLnJl'@; put 'ZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSx2LnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5y'@; put 'ZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sdi5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQg'@; put 'bnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LHYucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyks'@; put 'dGhpcy5yZWQubmVnKHRoaXMpfSx2LnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQmJiFmLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxmKX07dmFyIFc9e2syNTY6bnVsbCxwMjI0'@; put 'Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBxKFgsZil7dGhpcy5uYW1lPVgsdGhpcy5wPW5ldyB2KGYsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyB2KDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAo'@; put 'KX1mdW5jdGlvbiByZSgpe3EuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBtZSgpe3EuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZm'@; put 'ZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBDZSgpe3EuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBJZSgpe3EuY2FsbCh0aGlzLCIyNTUx'@; put 'OSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBrZShYKXtpZigic3RyaW5nIj09dHlwZW9mIFgpe3ZhciBmPXYuX3ByaW1lKFgpO3RoaXMubT1mLnAsdGhpcy5wcmltZT1mfWVsc2UgcyhYLmd0'@; put 'bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPVgsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIHFlKFgpe2tlLmNhbGwodGhpcyxYKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5z'@; put 'aGlmdCUyNiksdGhpcy5yPW5ldyB2KDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlz'@; put 'Lm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXEucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgZj1uZXcgdihudWxsKTtyZXR1cm4gZi53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGZ9LHEucHJvdG90'@; put 'eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZil7dmFyIGssYj1mO2Rve3RoaXMuc3BsaXQoYix0aGlzLnRtcCksaz0oYj0oYj10aGlzLmltdWxLKGIpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoaz50aGlzLm4pO3ZhciBNPWs8dGhpcy5uPy0xOmIudWNtcCh0aGlzLnApO3JldHVy'@; put 'biAwPT09TT8oYi53b3Jkc1swXT0wLGIubGVuZ3RoPTEpOk0+MD9iLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1iLnN0cmlwP2Iuc3RyaXAoKTpiLl9zdHJpcCgpLGJ9LHEucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGYsYil7Zi5pdXNocm4odGhpcy5uLDAsYil9LHEucHJvdG90eXBlLmltdWxL'@; put 'PWZ1bmN0aW9uKGYpe3JldHVybiBmLmltdWwodGhpcy5rKX0sQShyZSxxKSxyZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZixiKXtmb3IodmFyIGs9NDE5NDMwMyxNPU1hdGgubWluKGYubGVuZ3RoLDkpLEI9MDtCPE07QisrKWIud29yZHNbQl09Zi53b3Jkc1tCXTtpZihiLmxlbmd0aD1N'@; put 'LGYubGVuZ3RoPD05KXJldHVybiBmLndvcmRzWzBdPTAsdm9pZChmLmxlbmd0aD0xKTt2YXIgSz1mLndvcmRzWzldO2ZvcihiLndvcmRzW2IubGVuZ3RoKytdPUsmayxCPTEwO0I8Zi5sZW5ndGg7QisrKXt2YXIgRz0wfGYud29yZHNbQl07Zi53b3Jkc1tCLTEwXT0oRyZrKTw8NHxLPj4+MjIs'@; put 'Sz1HfWYud29yZHNbQi0xMF09Sz4+Pj0yMixmLmxlbmd0aC09MD09PUsmJmYubGVuZ3RoPjEwPzEwOjl9LHJlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihmKXtmLndvcmRzW2YubGVuZ3RoXT0wLGYud29yZHNbZi5sZW5ndGgrMV09MCxmLmxlbmd0aCs9Mjtmb3IodmFyIGI9MCxrPTA7azxm'@; put 'Lmxlbmd0aDtrKyspe3ZhciBNPTB8Zi53b3Jkc1trXTtmLndvcmRzW2tdPTY3MTA4ODYzJihiKz05NzcqTSksYj02NCpNKyhiLzY3MTA4ODY0fDApfXJldHVybiAwPT09Zi53b3Jkc1tmLmxlbmd0aC0xXSYmKGYubGVuZ3RoLS0sMD09PWYud29yZHNbZi5sZW5ndGgtMV0mJmYubGVuZ3RoLS0p'@; put 'LGZ9LEEobWUscSksQShDZSxxKSxBKEllLHEpLEllLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihmKXtmb3IodmFyIGI9MCxrPTA7azxmLmxlbmd0aDtrKyspe3ZhciBNPTE5KigwfGYud29yZHNba10pK2IsQj02NzEwODg2MyZNO00+Pj49MjYsZi53b3Jkc1trXT1CLGI9TX1yZXR1cm4gMCE9'@; put 'PWImJihmLndvcmRzW2YubGVuZ3RoKytdPWIpLGZ9LHYuX3ByaW1lPWZ1bmN0aW9uKGYpe2lmKFdbZl0pcmV0dXJuIFdbZl07dmFyIGI7aWYoImsyNTYiPT09ZiliPW5ldyByZTtlbHNlIGlmKCJwMjI0Ij09PWYpYj1uZXcgbWU7ZWxzZSBpZigicDE5MiI9PT1mKWI9bmV3IENlO2Vsc2V7aWYo'@; put 'InAyNTUxOSIhPT1mKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2YpO2I9bmV3IEllfXJldHVybiBXW2ZdPWIsYn0sa2UucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIikscyhmLnJl'@; put 'ZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxrZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZixiKXtzKDA9PT0oZi5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxzKGYucmVkJiZmLnJlZD09PWIucmVkLCJyZWQg'@; put 'd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGtlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShmKS5fZm9yY2VSZWQodGhpcyk6Zi51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUubmVn'@; put 'PWZ1bmN0aW9uKGYpe3JldHVybiBmLmlzWmVybygpP2YuY2xvbmUoKTp0aGlzLm0uc3ViKGYpLl9mb3JjZVJlZCh0aGlzKX0sa2UucHJvdG90eXBlLmFkZD1mdW5jdGlvbihmLGIpe3RoaXMuX3ZlcmlmeTIoZixiKTt2YXIgaz1mLmFkZChiKTtyZXR1cm4gay5jbXAodGhpcy5tKT49MCYmay5p'@; put 'c3ViKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuaWFkZChiKTtyZXR1cm4gay5jbXAodGhpcy5tKT49MCYmay5pc3ViKHRoaXMubSksa30sa2UucHJvdG90eXBlLnN1Yj1mdW5jdGlv'@; put 'bihmLGIpe3RoaXMuX3ZlcmlmeTIoZixiKTt2YXIgaz1mLnN1YihiKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGsuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihmLGIpe3RoaXMuX3ZlcmlmeTIoZixiKTt2YXIgaz1mLmlzdWIoYik7cmV0'@; put 'dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrfSxrZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZiksdGhpcy5pbW9kKGYudXNobG4oYikpfSxrZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLl92ZXJpZnky'@; put 'KGYsYiksdGhpcy5pbW9kKGYuaW11bChiKSl9LGtlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihmLGIpLHRoaXMuaW1vZChmLm11bChiKSl9LGtlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmltdWwoZixmLmNsb25lKCkp'@; put 'fSxrZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLm11bChmLGYpfSxrZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihmKXtpZihmLmlzWmVybygpKXJldHVybiBmLmNsb25lKCk7dmFyIGI9dGhpcy5tLmFuZGxuKDMpO2lmKHMoYiUyPT0xKSwzPT09Yil7dmFyIGs9dGhp'@; put 'cy5tLmFkZChuZXcgdigxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhmLGspfWZvcih2YXIgTT10aGlzLm0uc3VibigxKSxCPTA7IU0uaXNaZXJvKCkmJjA9PT1NLmFuZGxuKDEpOylCKyssTS5pdXNocm4oMSk7cyghTS5pc1plcm8oKSk7dmFyIEs9bmV3IHYoMSkudG9SZWQodGhpcyks'@; put 'Rz1LLnJlZE5lZygpLEQ9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLHA9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihwPW5ldyB2KDIqcCpwKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3cocCxEKS5jbXAoRyk7KXAucmVkSUFkZChHKTtmb3IodmFyIEk9dGhpcy5wb3cocCxNKSx1ZT10aGlzLnBv'@; put 'dyhmLE0uYWRkbigxKS5pdXNocm4oMSkpLG5lPXRoaXMucG93KGYsTSksX2U9QjswIT09bmUuY21wKEspOyl7Zm9yKHZhciBQZT1uZSxvdD0wOzAhPT1QZS5jbXAoSyk7b3QrKylQZT1QZS5yZWRTcXIoKTtzKG90PF9lKTt2YXIgbHQ9dGhpcy5wb3coSSxuZXcgdigxKS5pdXNobG4oX2Utb3Qt'@; put 'MSkpO3VlPXVlLnJlZE11bChsdCksST1sdC5yZWRTcXIoKSxuZT1uZS5yZWRNdWwoSSksX2U9b3R9cmV0dXJuIHVlfSxrZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihmKXt2YXIgYj1mLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09Yi5uZWdhdGl2ZT8oYi5uZWdhdGl2ZT0wLHRoaXMuaW1v'@; put 'ZChiKS5yZWROZWcoKSk6dGhpcy5pbW9kKGIpfSxrZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGYsYil7aWYoYi5pc1plcm8oKSlyZXR1cm4gbmV3IHYoMSkudG9SZWQodGhpcyk7aWYoMD09PWIuY21wbigxKSlyZXR1cm4gZi5jbG9uZSgpO3ZhciBNPW5ldyBBcnJheSgxNik7TVswXT1uZXcg'@; put 'digxKS50b1JlZCh0aGlzKSxNWzFdPWY7Zm9yKHZhciBCPTI7QjxNLmxlbmd0aDtCKyspTVtCXT10aGlzLm11bChNW0ItMV0sZik7dmFyIEs9TVswXSxHPTAsRD0wLHA9Yi5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXAmJihwPTI2KSxCPWIubGVuZ3RoLTE7Qj49MDtCLS0pe2Zvcih2YXIgST1i'@; put 'LndvcmRzW0JdLHVlPXAtMTt1ZT49MDt1ZS0tKXt2YXIgbmU9ST4+dWUmMTtLIT09TVswXSYmKEs9dGhpcy5zcXIoSykpLDAhPT1uZXx8MCE9PUc/KEc8PD0xLEd8PW5lLCg0PT09KytEfHwwPT09QiYmMD09PXVlKSYmKEs9dGhpcy5tdWwoSyxNW0ddKSxEPTAsRz0wKSk6RD0wfXA9MjZ9cmV0'@; put 'dXJuIEt9LGtlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZil7dmFyIGI9Zi51bW9kKHRoaXMubSk7cmV0dXJuIGI9PT1mP2IuY2xvbmUoKTpifSxrZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZil7dmFyIGI9Zi5jbG9uZSgpO3JldHVybiBiLnJlZD1udWxsLGJ9LHYu'@; put 'bW9udD1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IHFlKGYpfSxBKHFlLGtlKSxxZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmltb2QoZi51c2hsbih0aGlzLnNoaWZ0KSl9LHFlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihmKXt2YXIgYj10aGlz'@; put 'Lmltb2QoZi5tdWwodGhpcy5yaW52KSk7cmV0dXJuIGIucmVkPW51bGwsYn0scWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZixiKXtpZihmLmlzWmVybygpfHxiLmlzWmVybygpKXJldHVybiBmLndvcmRzWzBdPTAsZi5sZW5ndGg9MSxmO3ZhciBrPWYuaW11bChiKSxNPWsubWFza24odGhp'@; put 'cy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLEI9ay5pc3ViKE0pLml1c2hybih0aGlzLnNoaWZ0KSxLPUI7cmV0dXJuIEIuY21wKHRoaXMubSk+PTA/Sz1CLmlzdWIodGhpcy5tKTpCLmNtcG4oMCk8MCYmKEs9Qi5pYWRkKHRoaXMubSkpLEsu'@; put 'X2ZvcmNlUmVkKHRoaXMpfSxxZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGYsYil7aWYoZi5pc1plcm8oKXx8Yi5pc1plcm8oKSlyZXR1cm4gbmV3IHYoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBrPWYubXVsKGIpLE09ay5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24o'@; put 'dGhpcy5zaGlmdCkubXVsKHRoaXMubSksQj1rLmlzdWIoTSkuaXVzaHJuKHRoaXMuc2hpZnQpLEs9QjtyZXR1cm4gQi5jbXAodGhpcy5tKT49MD9LPUIuaXN1Yih0aGlzLm0pOkIuY21wbigwKTwwJiYoSz1CLmlhZGQodGhpcy5tKSksSy5fZm9yY2VSZWQodGhpcyl9LHFlLnByb3RvdHlwZS5p'@; put 'bnZtPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmltb2QoZi5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KGZlPWgubm1kKGZlKSx0aGlzKX0sOTQxNDgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNik7ZnVuY3Rpb24gYyhnZSl7cmV0dXJu'@; put 'KGM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oY2Upe3JldHVybiB0eXBlb2YgY2V9OmZ1bmN0aW9uKGNlKXtyZXR1cm4gY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmNlLmNvbnN0cnVjdG9yPT09U3lt'@; put 'Ym9sJiZjZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGNlfSkoZ2UpfWZ1bmN0aW9uIHMoZ2UsY2Upe2Zvcih2YXIgaGU9MDtoZTxjZS5sZW5ndGg7aGUrKyl7dmFyIHdlPWNlW2hlXTt3ZS5lbnVtZXJhYmxlPXdlLmVudW1lcmFibGV8fCExLHdlLmNvbmZpZ3VyYWJsZT0h'@; put 'MCwidmFsdWUiaW4gd2UmJih3ZS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGdlLHYod2Uua2V5KSx3ZSl9fWZ1bmN0aW9uIEEoZ2UsY2UsaGUpe3JldHVybiBjZSYmcyhnZS5wcm90b3R5cGUsY2UpLGhlJiZzKGdlLGhlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2UsInBy'@; put 'b3RvdHlwZSIse3dyaXRhYmxlOiExfSksZ2V9ZnVuY3Rpb24gdihnZSl7dmFyIGNlPWZ1bmN0aW9uIEMoZ2UsY2Upe2lmKCJvYmplY3QiIT09YyhnZSl8fG51bGw9PT1nZSlyZXR1cm4gZ2U7dmFyIGhlPWdlW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aGUpe3ZhciB3ZT1oZS5j'@; put 'YWxsKGdlLGNlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09Yyh3ZSkpcmV0dXJuIHdlO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Y2U/U3RyaW5nOk51bWJlcikoZ2UpfShnZSwi'@; put 'c3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1jKGNlKT9jZTpTdHJpbmcoY2UpfXZhciBrZSxxZSxMPWgoNjk1OTcpLmNvZGVzLFI9TC5FUlJfQU1CSUdVT1VTX0FSR1VNRU5ULHg9TC5FUlJfSU5WQUxJRF9BUkdfVFlQRSxVPUwuRVJSX0lOVkFMSURfQVJHX1ZBTFVFLEg9TC5FUlJfSU5WQUxJ'@; put 'RF9SRVRVUk5fVkFMVUUsVj1MLkVSUl9NSVNTSU5HX0FSR1MsTj1oKDM5MTgpLFk9aCg0MDUzNykuaW5zcGVjdCxGPWgoNDA1MzcpLnR5cGVzLFc9Ri5pc1Byb21pc2UscT1GLmlzUmVnRXhwLHJlPWgoMTE1MTQpKCksbWU9aCg5Mzk0KSgpLENlPWgoMzgwNzUpKCJSZWdFeHAucHJvdG90eXBl'@; put 'LnRlc3QiKTtmdW5jdGlvbiBrKCl7dmFyIGdlPWgoODIyOTkpO2tlPWdlLmlzRGVlcEVxdWFsLHFlPWdlLmlzRGVlcFN0cmljdEVxdWFsfXZhciBHPSExLEQ9ZmUuZXhwb3J0cz1fZSxwPXt9O2Z1bmN0aW9uIEkoZ2Upe3Rocm93IGdlLm1lc3NhZ2UgaW5zdGFuY2VvZiBFcnJvcj9nZS5tZXNz'@; put 'YWdlOm5ldyBOKGdlKX1mdW5jdGlvbiBuZShnZSxjZSxoZSx3ZSl7aWYoIWhlKXt2YXIgSmU9ITE7aWYoMD09PWNlKUplPSEwLHdlPSJObyB2YWx1ZSBhcmd1bWVudCBwYXNzZWQgdG8gYGFzc2VydC5vaygpYCI7ZWxzZSBpZih3ZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IHdlO3ZhciB0dD1u'@; put 'ZXcgTih7YWN0dWFsOmhlLGV4cGVjdGVkOiEwLG1lc3NhZ2U6d2Usb3BlcmF0b3I6Ij09IixzdGFja1N0YXJ0Rm46Z2V9KTt0aHJvdyB0dC5nZW5lcmF0ZWRNZXNzYWdlPUplLHR0fX1mdW5jdGlvbiBfZSgpe2Zvcih2YXIgZ2U9YXJndW1lbnRzLmxlbmd0aCxjZT1uZXcgQXJyYXkoZ2UpLGhl'@; put 'PTA7aGU8Z2U7aGUrKyljZVtoZV09YXJndW1lbnRzW2hlXTtuZS5hcHBseSh2b2lkIDAsW19lLGNlLmxlbmd0aF0uY29uY2F0KGNlKSl9RC5mYWlsPWZ1bmN0aW9uIHVlKGdlLGNlLGhlLHdlLEplKXt2YXIgS2UsdHQ9YXJndW1lbnRzLmxlbmd0aDtpZigwPT09dHQ/S2U9IkZhaWxlZCI6MT09'@; put 'PXR0PyhoZT1nZSxnZT12b2lkIDApOighMT09PUcmJihHPSEwLCh5LmVtaXRXYXJuaW5nP3kuZW1pdFdhcm5pbmc6Y29uc29sZS53YXJuLmJpbmQoY29uc29sZSkpKCJhc3NlcnQuZmFpbCgpIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGFz'@; put 'c2VydC5zdHJpY3RFcXVhbCgpIGluc3RlYWQgb3Igb25seSBwYXNzIGEgbWVzc2FnZS4iLCJEZXByZWNhdGlvbldhcm5pbmciLCJERVAwMDk0IikpLDI9PT10dCYmKHdlPSIhPSIpKSxoZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IGhlO3ZhciBSdD17YWN0dWFsOmdlLGV4cGVjdGVkOmNlLG9w'@; put 'ZXJhdG9yOnZvaWQgMD09PXdlPyJmYWlsIjp3ZSxzdGFja1N0YXJ0Rm46SmV8fHVlfTt2b2lkIDAhPT1oZSYmKFJ0Lm1lc3NhZ2U9aGUpO3ZhciBMdD1uZXcgTihSdCk7dGhyb3cgS2UmJihMdC5tZXNzYWdlPUtlLEx0LmdlbmVyYXRlZE1lc3NhZ2U9ITApLEx0fSxELkFzc2VydGlvbkVycm9y'@; put 'PU4sRC5vaz1fZSxELmVxdWFsPWZ1bmN0aW9uIGdlKGNlLGhlLHdlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFYoImFjdHVhbCIsImV4cGVjdGVkIik7Y2UhPWhlJiZJKHthY3R1YWw6Y2UsZXhwZWN0ZWQ6aGUsbWVzc2FnZTp3ZSxvcGVyYXRvcjoiPT0iLHN0YWNrU3RhcnRG'@; put 'bjpnZX0pfSxELm5vdEVxdWFsPWZ1bmN0aW9uIGdlKGNlLGhlLHdlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFYoImFjdHVhbCIsImV4cGVjdGVkIik7Y2U9PWhlJiZJKHthY3R1YWw6Y2UsZXhwZWN0ZWQ6aGUsbWVzc2FnZTp3ZSxvcGVyYXRvcjoiIT0iLHN0YWNrU3RhcnRG'@; put 'bjpnZX0pfSxELmRlZXBFcXVhbD1mdW5jdGlvbiBnZShjZSxoZSx3ZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBWKCJhY3R1YWwiLCJleHBlY3RlZCIpO3ZvaWQgMD09PWtlJiZrKCksa2UoY2UsaGUpfHxJKHthY3R1YWw6Y2UsZXhwZWN0ZWQ6aGUsbWVzc2FnZTp3ZSxvcGVy'@; put 'YXRvcjoiZGVlcEVxdWFsIixzdGFja1N0YXJ0Rm46Z2V9KX0sRC5ub3REZWVwRXF1YWw9ZnVuY3Rpb24gZ2UoY2UsaGUsd2Upe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVigiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lkIDA9PT1rZSYmaygpLGtlKGNlLGhlKSYmSSh7YWN0dWFs'@; put 'OmNlLGV4cGVjdGVkOmhlLG1lc3NhZ2U6d2Usb3BlcmF0b3I6Im5vdERlZXBFcXVhbCIsc3RhY2tTdGFydEZuOmdlfSl9LEQuZGVlcFN0cmljdEVxdWFsPWZ1bmN0aW9uIGdlKGNlLGhlLHdlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFYoImFjdHVhbCIsImV4cGVjdGVkIik7'@; put 'dm9pZCAwPT09a2UmJmsoKSxxZShjZSxoZSl8fEkoe2FjdHVhbDpjZSxleHBlY3RlZDpoZSxtZXNzYWdlOndlLG9wZXJhdG9yOiJkZWVwU3RyaWN0RXF1YWwiLHN0YWNrU3RhcnRGbjpnZX0pfSxELm5vdERlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbiBQZShnZSxjZSxoZSl7aWYoYXJndW1lbnRz'@; put 'Lmxlbmd0aDwyKXRocm93IG5ldyBWKCJhY3R1YWwiLCJleHBlY3RlZCIpO3ZvaWQgMD09PWtlJiZrKCkscWUoZ2UsY2UpJiZJKHthY3R1YWw6Z2UsZXhwZWN0ZWQ6Y2UsbWVzc2FnZTpoZSxvcGVyYXRvcjoibm90RGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46UGV9KX0sRC5zdHJpY3RF'@; put 'cXVhbD1mdW5jdGlvbiBnZShjZSxoZSx3ZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBWKCJhY3R1YWwiLCJleHBlY3RlZCIpO21lKGNlLGhlKXx8SSh7YWN0dWFsOmNlLGV4cGVjdGVkOmhlLG1lc3NhZ2U6d2Usb3BlcmF0b3I6InN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46'@; put 'Z2V9KX0sRC5ub3RTdHJpY3RFcXVhbD1mdW5jdGlvbiBnZShjZSxoZSx3ZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBWKCJhY3R1YWwiLCJleHBlY3RlZCIpO21lKGNlLGhlKSYmSSh7YWN0dWFsOmNlLGV4cGVjdGVkOmhlLG1lc3NhZ2U6d2Usb3BlcmF0b3I6Im5vdFN0cmlj'@; put 'dEVxdWFsIixzdGFja1N0YXJ0Rm46Z2V9KX07dmFyIG90PUEoZnVuY3Rpb24gZ2UoY2UsaGUsd2Upe3ZhciBKZT10aGlzOyhmdW5jdGlvbiB3KGdlLGNlKXtpZighKGdlIGluc3RhbmNlb2YgY2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv'@; put 'biIpfSkodGhpcyxnZSksaGUuZm9yRWFjaChmdW5jdGlvbih0dCl7dHQgaW4gY2UmJihKZVt0dF09dm9pZCAwIT09d2UmJiJzdHJpbmciPT10eXBlb2Ygd2VbdHRdJiZxKGNlW3R0XSkmJkNlKGNlW3R0XSx3ZVt0dF0pP3dlW3R0XTpjZVt0dF0pfSl9KTtmdW5jdGlvbiBkdChnZSxjZSxoZSx3'@; put 'ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGNlKXtpZihxKGNlKSlyZXR1cm4gQ2UoY2UsZ2UpO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyB4KCJleHBlY3RlZCIsWyJGdW5jdGlvbiIsIlJlZ0V4cCJdLGNlKTtpZigib2JqZWN0IiE9PWMoZ2UpfHxudWxsPT09Z2Upe3ZhciBK'@; put 'ZT1uZXcgTih7YWN0dWFsOmdlLGV4cGVjdGVkOmNlLG1lc3NhZ2U6aGUsb3BlcmF0b3I6ImRlZXBTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOndlfSk7dGhyb3cgSmUub3BlcmF0b3I9d2UubmFtZSxKZX12YXIgdHQ9T2JqZWN0LmtleXMoY2UpO2lmKGNlIGluc3RhbmNlb2YgRXJyb3IpdHQu'@; put 'cHVzaCgibmFtZSIsIm1lc3NhZ2UiKTtlbHNlIGlmKDA9PT10dC5sZW5ndGgpdGhyb3cgbmV3IFUoImVycm9yIixjZSwibWF5IG5vdCBiZSBhbiBlbXB0eSBvYmplY3QiKTtyZXR1cm4gdm9pZCAwPT09a2UmJmsoKSx0dC5mb3JFYWNoKGZ1bmN0aW9uKEtlKXsic3RyaW5nIj09dHlwZW9mIGdl'@; put 'W0tlXSYmcShjZVtLZV0pJiZDZShjZVtLZV0sZ2VbS2VdKXx8ZnVuY3Rpb24gbHQoZ2UsY2UsaGUsd2UsSmUsdHQpe2lmKCEoaGUgaW4gZ2UpfHwhcWUoZ2VbaGVdLGNlW2hlXSkpe2lmKCF3ZSl7dmFyIEtlPW5ldyBvdChnZSxKZSksJHQ9bmV3IG90KGNlLEplLGdlKSxSdD1uZXcgTih7YWN0'@; put 'dWFsOktlLGV4cGVjdGVkOiR0LG9wZXJhdG9yOiJkZWVwU3RyaWN0RXF1YWwiLHN0YWNrU3RhcnRGbjp0dH0pO3Rocm93IFJ0LmFjdHVhbD1nZSxSdC5leHBlY3RlZD1jZSxSdC5vcGVyYXRvcj10dC5uYW1lLFJ0fUkoe2FjdHVhbDpnZSxleHBlY3RlZDpjZSxtZXNzYWdlOndlLG9wZXJhdG9y'@; put 'OnR0Lm5hbWUsc3RhY2tTdGFydEZuOnR0fSl9fShnZSxjZSxLZSxoZSx0dCx3ZSl9KSwhMH1yZXR1cm4gdm9pZCAwIT09Y2UucHJvdG90eXBlJiZnZSBpbnN0YW5jZW9mIGNlfHwhRXJyb3IuaXNQcm90b3R5cGVPZihjZSkmJiEwPT09Y2UuY2FsbCh7fSxnZSl9ZnVuY3Rpb24gUmUoZ2Upe2lm'@; put 'KCJmdW5jdGlvbiIhPXR5cGVvZiBnZSl0aHJvdyBuZXcgeCgiZm4iLCJGdW5jdGlvbiIsZ2UpO3RyeXtnZSgpfWNhdGNoKGNlKXtyZXR1cm4gY2V9cmV0dXJuIHB9ZnVuY3Rpb24gYWUoZ2Upe3JldHVybiBXKGdlKXx8bnVsbCE9PWdlJiYib2JqZWN0Ij09PWMoZ2UpJiYiZnVuY3Rpb24iPT10'@; put 'eXBlb2YgZ2UudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIGdlLmNhdGNofWZ1bmN0aW9uIHhlKGdlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3ZhciBjZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZ2Upe2lmKCFhZShjZT1nZSgpKSl0aHJvdyBuZXcgSCgiaW5z'@; put 'dGFuY2Ugb2YgUHJvbWlzZSIsInByb21pc2VGbiIsY2UpfWVsc2V7aWYoIWFlKGdlKSl0aHJvdyBuZXcgeCgicHJvbWlzZUZuIixbIkZ1bmN0aW9uIiwiUHJvbWlzZSJdLGdlKTtjZT1nZX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBjZX0pLnRoZW4o'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gcH0pLmNhdGNoKGZ1bmN0aW9uKGhlKXtyZXR1cm4gaGV9KX0pfWZ1bmN0aW9uIGplKGdlLGNlLGhlLHdlKXtpZigic3RyaW5nIj09dHlwZW9mIGhlKXtpZig0PT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgeCgiZXJyb3IiLFsiT2JqZWN0IiwiRXJyb3Ii'@; put 'LCJGdW5jdGlvbiIsIlJlZ0V4cCJdLGhlKTtpZigib2JqZWN0Ij09PWMoY2UpJiZudWxsIT09Y2Upe2lmKGNlLm1lc3NhZ2U9PT1oZSl0aHJvdyBuZXcgUigiZXJyb3IvbWVzc2FnZSIsJ1RoZSBlcnJvciBtZXNzYWdlICInLmNvbmNhdChjZS5tZXNzYWdlLCciIGlzIGlkZW50aWNhbCB0byB0'@; put 'aGUgbWVzc2FnZS4nKSl9ZWxzZSBpZihjZT09PWhlKXRocm93IG5ldyBSKCJlcnJvci9tZXNzYWdlIiwnVGhlIGVycm9yICInLmNvbmNhdChjZSwnIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuJykpO3dlPWhlLGhlPXZvaWQgMH1lbHNlIGlmKG51bGwhPWhlJiYib2JqZWN0IiE9PWMo'@; put 'aGUpJiYiZnVuY3Rpb24iIT10eXBlb2YgaGUpdGhyb3cgbmV3IHgoImVycm9yIixbIk9iamVjdCIsIkVycm9yIiwiRnVuY3Rpb24iLCJSZWdFeHAiXSxoZSk7aWYoY2U9PT1wKXt2YXIgSmU9IiI7aGUmJmhlLm5hbWUmJihKZSs9IiAoIi5jb25jYXQoaGUubmFtZSwiKSIpKSxKZSs9d2U/Ijog'@; put 'Ii5jb25jYXQod2UpOiIuIixJKHthY3R1YWw6dm9pZCAwLGV4cGVjdGVkOmhlLG9wZXJhdG9yOmdlLm5hbWUsbWVzc2FnZToiTWlzc2luZyBleHBlY3RlZCAiLmNvbmNhdCgicmVqZWN0cyI9PT1nZS5uYW1lPyJyZWplY3Rpb24iOiJleGNlcHRpb24iKS5jb25jYXQoSmUpLHN0YWNrU3RhcnRG'@; put 'bjpnZX0pfWlmKGhlJiYhZHQoY2UsaGUsd2UsZ2UpKXRocm93IGNlfWZ1bmN0aW9uIEFlKGdlLGNlLGhlLHdlKXtpZihjZSE9PXApe2lmKCJzdHJpbmciPT10eXBlb2YgaGUmJih3ZT1oZSxoZT12b2lkIDApLCFoZXx8ZHQoY2UsaGUpKXt2YXIgSmU9d2U/IjogIi5jb25jYXQod2UpOiIuIjtJ'@; put 'KHthY3R1YWw6Y2UsZXhwZWN0ZWQ6aGUsb3BlcmF0b3I6Z2UubmFtZSxtZXNzYWdlOiJHb3QgdW53YW50ZWQgIi5jb25jYXQoImRvZXNOb3RSZWplY3QiPT09Z2UubmFtZT8icmVqZWN0aW9uIjoiZXhjZXB0aW9uIikuY29uY2F0KEplLCJcbiIpKydBY3R1YWwgbWVzc2FnZTogIicuY29uY2F0'@; put 'KGNlJiZjZS5tZXNzYWdlLCciJyksc3RhY2tTdGFydEZuOmdlfSl9dGhyb3cgY2V9fWZ1bmN0aW9uIERlKGdlLGNlLGhlLHdlLEplKXtpZighcShjZSkpdGhyb3cgbmV3IHgoInJlZ2V4cCIsIlJlZ0V4cCIsY2UpO3ZhciB0dD0ibWF0Y2giPT09SmU7aWYoInN0cmluZyIhPXR5cGVvZiBnZXx8'@; put 'Q2UoY2UsZ2UpIT09dHQpe2lmKGhlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgaGU7dmFyIEtlPSFoZTtoZT1oZXx8KCJzdHJpbmciIT10eXBlb2YgZ2U/J1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlICcrIiIuY29uY2F0KGMoZ2Up'@; put 'LCIgKCIpLmNvbmNhdChZKGdlKSwiKSIpOih0dD8iVGhlIGlucHV0IGRpZCBub3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiOiJUaGUgaW5wdXQgd2FzIGV4cGVjdGVkIHRvIG5vdCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICIpKyIiLmNvbmNhdChZKGNlKSwiLiBJbnB1'@; put 'dDpcblxuIikuY29uY2F0KFkoZ2UpLCJcbiIpKTt2YXIgJHQ9bmV3IE4oe2FjdHVhbDpnZSxleHBlY3RlZDpjZSxtZXNzYWdlOmhlLG9wZXJhdG9yOkplLHN0YWNrU3RhcnRGbjp3ZX0pO3Rocm93ICR0LmdlbmVyYXRlZE1lc3NhZ2U9S2UsJHR9fWZ1bmN0aW9uIEZlKCl7Zm9yKHZhciBnZT1h'@; put 'cmd1bWVudHMubGVuZ3RoLGNlPW5ldyBBcnJheShnZSksaGU9MDtoZTxnZTtoZSsrKWNlW2hlXT1hcmd1bWVudHNbaGVdO25lLmFwcGx5KHZvaWQgMCxbRmUsY2UubGVuZ3RoXS5jb25jYXQoY2UpKX1ELnRocm93cz1mdW5jdGlvbiBnZShjZSl7Zm9yKHZhciBoZT1hcmd1bWVudHMubGVuZ3Ro'@; put 'LHdlPW5ldyBBcnJheShoZT4xP2hlLTE6MCksSmU9MTtKZTxoZTtKZSsrKXdlW0plLTFdPWFyZ3VtZW50c1tKZV07amUuYXBwbHkodm9pZCAwLFtnZSxSZShjZSldLmNvbmNhdCh3ZSkpfSxELnJlamVjdHM9ZnVuY3Rpb24gZ2UoY2Upe2Zvcih2YXIgaGU9YXJndW1lbnRzLmxlbmd0aCx3ZT1u'@; put 'ZXcgQXJyYXkoaGU+MT9oZS0xOjApLEplPTE7SmU8aGU7SmUrKyl3ZVtKZS0xXT1hcmd1bWVudHNbSmVdO3JldHVybiB4ZShjZSkudGhlbihmdW5jdGlvbih0dCl7cmV0dXJuIGplLmFwcGx5KHZvaWQgMCxbZ2UsdHRdLmNvbmNhdCh3ZSkpfSl9LEQuZG9lc05vdFRocm93PWZ1bmN0aW9uIGdl'@; put 'KGNlKXtmb3IodmFyIGhlPWFyZ3VtZW50cy5sZW5ndGgsd2U9bmV3IEFycmF5KGhlPjE/aGUtMTowKSxKZT0xO0plPGhlO0plKyspd2VbSmUtMV09YXJndW1lbnRzW0plXTtBZS5hcHBseSh2b2lkIDAsW2dlLFJlKGNlKV0uY29uY2F0KHdlKSl9LEQuZG9lc05vdFJlamVjdD1mdW5jdGlvbiBn'@; put 'ZShjZSl7Zm9yKHZhciBoZT1hcmd1bWVudHMubGVuZ3RoLHdlPW5ldyBBcnJheShoZT4xP2hlLTE6MCksSmU9MTtKZTxoZTtKZSsrKXdlW0plLTFdPWFyZ3VtZW50c1tKZV07cmV0dXJuIHhlKGNlKS50aGVuKGZ1bmN0aW9uKHR0KXtyZXR1cm4gQWUuYXBwbHkodm9pZCAwLFtnZSx0dF0uY29u'@; put 'Y2F0KHdlKSl9KX0sRC5pZkVycm9yPWZ1bmN0aW9uIGdlKGNlKXtpZihudWxsIT1jZSl7dmFyIGhlPSJpZkVycm9yIGdvdCB1bndhbnRlZCBleGNlcHRpb246ICI7Im9iamVjdCI9PT1jKGNlKSYmInN0cmluZyI9PXR5cGVvZiBjZS5tZXNzYWdlP2hlKz0wPT09Y2UubWVzc2FnZS5sZW5ndGgm'@; put 'JmNlLmNvbnN0cnVjdG9yP2NlLmNvbnN0cnVjdG9yLm5hbWU6Y2UubWVzc2FnZTpoZSs9WShjZSk7dmFyIHdlPW5ldyBOKHthY3R1YWw6Y2UsZXhwZWN0ZWQ6bnVsbCxvcGVyYXRvcjoiaWZFcnJvciIsbWVzc2FnZTpoZSxzdGFja1N0YXJ0Rm46Z2V9KSxKZT1jZS5zdGFjaztpZigic3RyaW5n'@; put 'Ij09dHlwZW9mIEplKXt2YXIgdHQ9SmUuc3BsaXQoIlxuIik7dHQuc2hpZnQoKTtmb3IodmFyIEtlPXdlLnN0YWNrLnNwbGl0KCJcbiIpLCR0PTA7JHQ8dHQubGVuZ3RoOyR0Kyspe3ZhciBSdD1LZS5pbmRleE9mKHR0WyR0XSk7aWYoLTEhPT1SdCl7S2U9S2Uuc2xpY2UoMCxSdCk7YnJlYWt9'@; put 'fXdlLnN0YWNrPSIiLmNvbmNhdChLZS5qb2luKCJcbiIpLCJcbiIpLmNvbmNhdCh0dC5qb2luKCJcbiIpKX10aHJvdyB3ZX19LEQubWF0Y2g9ZnVuY3Rpb24gZ2UoY2UsaGUsd2Upe0RlKGNlLGhlLHdlLGdlLCJtYXRjaCIpfSxELmRvZXNOb3RNYXRjaD1mdW5jdGlvbiBnZShjZSxoZSx3ZSl7'@; put 'RGUoY2UsaGUsd2UsZ2UsImRvZXNOb3RNYXRjaCIpfSxELnN0cmljdD1yZShGZSxELHtlcXVhbDpELnN0cmljdEVxdWFsLGRlZXBFcXVhbDpELmRlZXBTdHJpY3RFcXVhbCxub3RFcXVhbDpELm5vdFN0cmljdEVxdWFsLG5vdERlZXBFcXVhbDpELm5vdERlZXBTdHJpY3RFcXVhbH0pLEQuc3Ry'@; put 'aWN0LnN0cmljdD1ELnN0cmljdH0sMzkxOChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KTtmdW5jdGlvbiBjKEksdWUpe3ZhciBuZT1PYmplY3Qua2V5cyhJKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgX2U9T2JqZWN0LmdldE93blByb3BlcnR5U3lt'@; put 'Ym9scyhJKTt1ZSYmKF9lPV9lLmZpbHRlcihmdW5jdGlvbihQZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSSxQZSkuZW51bWVyYWJsZX0pKSxuZS5wdXNoLmFwcGx5KG5lLF9lKX1yZXR1cm4gbmV9ZnVuY3Rpb24gcyhJKXtmb3IodmFyIHVlPTE7dWU8YXJndW1l'@; put 'bnRzLmxlbmd0aDt1ZSsrKXt2YXIgbmU9bnVsbCE9YXJndW1lbnRzW3VlXT9hcmd1bWVudHNbdWVdOnt9O3VlJTI/YyhPYmplY3QobmUpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKF9lKXtBKEksX2UsbmVbX2VdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZp'@; put 'bmVQcm9wZXJ0aWVzKEksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobmUpKTpjKE9iamVjdChuZSkpLmZvckVhY2goZnVuY3Rpb24oX2Upe09iamVjdC5kZWZpbmVQcm9wZXJ0eShJLF9lLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmUsX2UpKX0pfXJldHVybiBJ'@; put 'fWZ1bmN0aW9uIEEoSSx1ZSxuZSl7cmV0dXJuKHVlPVModWUpKWluIEk/T2JqZWN0LmRlZmluZVByb3BlcnR5KEksdWUse3ZhbHVlOm5lLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6SVt1ZV09bmUsSX1mdW5jdGlvbiBDKEksdWUpe2Zvcih2YXIgbmU9MDtu'@; put 'ZTx1ZS5sZW5ndGg7bmUrKyl7dmFyIF9lPXVlW25lXTtfZS5lbnVtZXJhYmxlPV9lLmVudW1lcmFibGV8fCExLF9lLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gX2UmJihfZS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KEksUyhfZS5rZXkpLF9lKX19ZnVuY3Rpb24gUyhJ'@; put 'KXt2YXIgdWU9ZnVuY3Rpb24gTChJLHVlKXtpZigib2JqZWN0IiE9PXEoSSl8fG51bGw9PT1JKXJldHVybiBJO3ZhciBuZT1JW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bmUpe3ZhciBfZT1uZS5jYWxsKEksdWV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1xKF9lKSlyZXR1'@; put 'cm4gX2U7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT11ZT9TdHJpbmc6TnVtYmVyKShJKX0oSSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1xKHVlKT91ZTpTdHJpbmcodWUpfWZ1'@; put 'bmN0aW9uIFUoSSx1ZSl7aWYodWUmJigib2JqZWN0Ij09PXEodWUpfHwiZnVuY3Rpb24iPT10eXBlb2YgdWUpKXJldHVybiB1ZTtpZih2b2lkIDAhPT11ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5l'@; put 'ZCIpO3JldHVybiBIKEkpfWZ1bmN0aW9uIEgoSSl7aWYodm9pZCAwPT09SSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBJfWZ1bmN0aW9uIFYoSSl7dmFyIHVlPSJmdW5j'@; put 'dGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIFY9ZnVuY3Rpb24oX2Upe2lmKG51bGw9PT1fZXx8IWZ1bmN0aW9uIFkoSSl7cmV0dXJuLTEhPT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKEkpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKX0oX2UpKXJldHVybiBfZTtpZigi'@; put 'ZnVuY3Rpb24iIT10eXBlb2YgX2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih0eXBlb2YgdWU8InUiKXtpZih1ZS5oYXMoX2UpKXJldHVybiB1ZS5nZXQoX2UpO3VlLnNldChfZSxQZSl9ZnVuY3Rp'@; put 'b24gUGUoKXtyZXR1cm4gTihfZSxhcmd1bWVudHMsVyh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIFBlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF9lLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlBlLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0p'@; put 'LEYoUGUsX2UpfSxWKEkpfWZ1bmN0aW9uIE4oSSx1ZSxuZSl7cmV0dXJuKE49eigpP1JlZmxlY3QuY29uc3RydWN0LmJpbmQoKTpmdW5jdGlvbihQZSxvdCxsdCl7dmFyIGR0PVtudWxsXTtkdC5wdXNoLmFwcGx5KGR0LG90KTt2YXIgYWU9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGUsZHQp'@; put 'KTtyZXR1cm4gbHQmJkYoYWUsbHQucHJvdG90eXBlKSxhZX0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB6KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlw'@; put 'ZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEYoSSx1ZSl7cmV0dXJuKEY9T2JqZWN0LnNldFByb3Rv'@; put 'dHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oX2UsUGUpe3JldHVybiBfZS5fX3Byb3RvX189UGUsX2V9KShJLHVlKX1mdW5jdGlvbiBXKEkpe3JldHVybihXPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0'@; put 'aW9uKG5lKXtyZXR1cm4gbmUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmUpfSkoSSl9ZnVuY3Rpb24gcShJKXtyZXR1cm4ocT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih1ZSl7cmV0dXJuIHR5'@; put 'cGVvZiB1ZX06ZnVuY3Rpb24odWUpe3JldHVybiB1ZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdWUuY29uc3RydWN0b3I9PT1TeW1ib2wmJnVlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdWV9KShJKX12YXIgbWU9aCg0MDUzNykuaW5zcGVjdCxJZT1oKDY5NTk3'@; put 'KS5jb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRTtmdW5jdGlvbiBrZShJLHVlLG5lKXtyZXR1cm4odm9pZCAwPT09bmV8fG5lPkkubGVuZ3RoKSYmKG5lPUkubGVuZ3RoKSxJLnN1YnN0cmluZyhuZS11ZS5sZW5ndGgsbmUpPT09dWV9dmFyIFg9IiIsZj0iIixiPSIiLGs9IiIsTT17ZGVlcFN0'@; put 'cmljdEVxdWFsOiJFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbDoiLHN0cmljdEVxdWFsOiJFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgc3RyaWN0bHkgZXF1YWw6IixzdHJpY3RFcXVhbE9iamVjdDonRXhwZWN0ZWQgImFjdHVhbCIgdG8gYmUgcmVmZXJlbmNlLWVxdWFs'@; put 'IHRvICJleHBlY3RlZCI6JyxkZWVwRXF1YWw6IkV4cGVjdGVkIHZhbHVlcyB0byBiZSBsb29zZWx5IGRlZXAtZXF1YWw6IixlcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIGxvb3NlbHkgZXF1YWw6Iixub3REZWVwU3RyaWN0RXF1YWw6J0V4cGVjdGVkICJhY3R1YWwiIG5vdCB0byBiZSBz'@; put 'dHJpY3RseSBkZWVwLWVxdWFsIHRvOicsbm90U3RyaWN0RXF1YWw6J0V4cGVjdGVkICJhY3R1YWwiIHRvIGJlIHN0cmljdGx5IHVuZXF1YWwgdG86Jyxub3RTdHJpY3RFcXVhbE9iamVjdDonRXhwZWN0ZWQgImFjdHVhbCIgbm90IHRvIGJlIHJlZmVyZW5jZS1lcXVhbCB0byAiZXhwZWN0ZWQi'@; put 'Oicsbm90RGVlcEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiBub3QgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsIHRvOicsbm90RXF1YWw6J0V4cGVjdGVkICJhY3R1YWwiIHRvIGJlIGxvb3NlbHkgdW5lcXVhbCB0bzonLG5vdElkZW50aWNhbDoiVmFsdWVzIGlkZW50aWNhbCBidXQgbm90IHJl'@; put 'ZmVyZW5jZS1lcXVhbDoifTtmdW5jdGlvbiBLKEkpe3ZhciB1ZT1PYmplY3Qua2V5cyhJKSxuZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihJKSk7cmV0dXJuIHVlLmZvckVhY2goZnVuY3Rpb24oX2Upe25lW19lXT1JW19lXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShu'@; put 'ZSwibWVzc2FnZSIse3ZhbHVlOkkubWVzc2FnZX0pLG5lfWZ1bmN0aW9uIEcoSSl7cmV0dXJuIG1lKEkse2NvbXBhY3Q6ITEsY3VzdG9tSW5zcGVjdDohMSxkZXB0aDoxZTMsbWF4QXJyYXlMZW5ndGg6MS8wLHNob3dIaWRkZW46ITEsYnJlYWtMZW5ndGg6MS8wLHNob3dQcm94eTohMSxzb3J0'@; put 'ZWQ6ITAsZ2V0dGVyczohMH0pfXZhciBwPWZ1bmN0aW9uKEksdWUpeyFmdW5jdGlvbiBSKEksdWUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB1ZSYmbnVsbCE9PXVlKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u'@; put 'Iik7SS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh1ZSYmdWUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6SSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEksInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdWUmJkYoSSx1ZSl9KF9l'@; put 'LEkpO3ZhciBuZT1mdW5jdGlvbiB4KEkpe3ZhciB1ZT16KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFBlLF9lPVcoSSk7aWYodWUpe3ZhciBvdD1XKHRoaXMpLmNvbnN0cnVjdG9yO1BlPVJlZmxlY3QuY29uc3RydWN0KF9lLGFyZ3VtZW50cyxvdCl9ZWxzZSBQZT1fZS5hcHBseSh0aGlzLGFy'@; put 'Z3VtZW50cyk7cmV0dXJuIFUodGhpcyxQZSl9fShfZSk7ZnVuY3Rpb24gX2UoUGUpe3ZhciBvdDtpZihmdW5jdGlvbiB2KEksdWUpe2lmKCEoSSBpbnN0YW5jZW9mIHVlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxfZSks'@; put 'Im9iamVjdCIhPT1xKFBlKXx8bnVsbD09PVBlKXRocm93IG5ldyBJZSgib3B0aW9ucyIsIk9iamVjdCIsUGUpO3ZhciBsdD1QZS5tZXNzYWdlLGR0PVBlLm9wZXJhdG9yLFJlPVBlLnN0YWNrU3RhcnRGbixhZT1QZS5hY3R1YWwseGU9UGUuZXhwZWN0ZWQsamU9RXJyb3Iuc3RhY2tUcmFjZUxp'@; put 'bWl0O2lmKEVycm9yLnN0YWNrVHJhY2VMaW1pdD0wLG51bGwhPWx0KW90PW5lLmNhbGwodGhpcyxTdHJpbmcobHQpKTtlbHNlIGlmKHkuc3RkZXJyJiZ5LnN0ZGVyci5pc1RUWSYmKHkuc3RkZXJyJiZ5LnN0ZGVyci5nZXRDb2xvckRlcHRoJiYxIT09eS5zdGRlcnIuZ2V0Q29sb3JEZXB0aCgp'@; put 'PyhYPSJceDFiWzM0bSIsZj0iXHgxYlszMm0iLGs9Ilx4MWJbMzltIixiPSJceDFiWzMxbSIpOihYPSIiLGY9IiIsaz0iIixiPSIiKSksIm9iamVjdCI9PT1xKGFlKSYmbnVsbCE9PWFlJiYib2JqZWN0Ij09PXEoeGUpJiZudWxsIT09eGUmJiJzdGFjayJpbiBhZSYmYWUgaW5zdGFuY2VvZiBF'@; put 'cnJvciYmInN0YWNrImluIHhlJiZ4ZSBpbnN0YW5jZW9mIEVycm9yJiYoYWU9SyhhZSkseGU9Syh4ZSkpLCJkZWVwU3RyaWN0RXF1YWwiPT09ZHR8fCJzdHJpY3RFcXVhbCI9PT1kdClvdD1uZS5jYWxsKHRoaXMsZnVuY3Rpb24gRChJLHVlLG5lKXt2YXIgX2U9IiIsUGU9IiIsb3Q9MCxsdD0i'@; put 'IixkdD0hMSxSZT1HKEkpLGFlPVJlLnNwbGl0KCJcbiIpLHhlPUcodWUpLnNwbGl0KCJcbiIpLGplPTAsQWU9IiI7aWYoInN0cmljdEVxdWFsIj09PW5lJiYib2JqZWN0Ij09PXEoSSkmJiJvYmplY3QiPT09cSh1ZSkmJm51bGwhPT1JJiZudWxsIT09dWUmJihuZT0ic3RyaWN0RXF1YWxPYmpl'@; put 'Y3QiKSwxPT09YWUubGVuZ3RoJiYxPT09eGUubGVuZ3RoJiZhZVswXSE9PXhlWzBdKXt2YXIgRGU9YWVbMF0ubGVuZ3RoK3hlWzBdLmxlbmd0aDtpZihEZTw9MTApe2lmKCEoIm9iamVjdCI9PT1xKEkpJiZudWxsIT09SXx8Im9iamVjdCI9PT1xKHVlKSYmbnVsbCE9PXVlfHwwPT09SSYmMD09'@; put 'PXVlKSlyZXR1cm4iIi5jb25jYXQoTVtuZV0sIlxuXG4iKSsiIi5jb25jYXQoYWVbMF0sIiAhPT0gIikuY29uY2F0KHhlWzBdLCJcbiIpfWVsc2UgaWYoInN0cmljdEVxdWFsT2JqZWN0IiE9PW5lJiZEZTwoeS5zdGRlcnImJnkuc3RkZXJyLmlzVFRZP3kuc3RkZXJyLmNvbHVtbnM6ODApKXtm'@; put 'b3IoO2FlWzBdW2plXT09PXhlWzBdW2plXTspamUrKztqZT4yJiYoQWU9IlxuICAiLmNvbmNhdChmdW5jdGlvbiBxZShJLHVlKXtpZih1ZT1NYXRoLmZsb29yKHVlKSwwPT1JLmxlbmd0aHx8MD09dWUpcmV0dXJuIiI7dmFyIG5lPUkubGVuZ3RoKnVlO2Zvcih1ZT1NYXRoLmZsb29yKE1hdGgu'@; put 'bG9nKHVlKS9NYXRoLmxvZygyKSk7dWU7KUkrPUksdWUtLTtyZXR1cm4gSStJLnN1YnN0cmluZygwLG5lLUkubGVuZ3RoKX0oIiAiLGplKSwiXiIpLGplPTApfX1mb3IodmFyIGdlPWFlW2FlLmxlbmd0aC0xXSxjZT14ZVt4ZS5sZW5ndGgtMV07Z2U9PT1jZSYmKGplKys8Mj9sdD0iXG4gICIu'@; put 'Y29uY2F0KGdlKS5jb25jYXQobHQpOl9lPWdlLGFlLnBvcCgpLHhlLnBvcCgpLDAhPT1hZS5sZW5ndGgmJjAhPT14ZS5sZW5ndGgpOylnZT1hZVthZS5sZW5ndGgtMV0sY2U9eGVbeGUubGVuZ3RoLTFdO3ZhciBoZT1NYXRoLm1heChhZS5sZW5ndGgseGUubGVuZ3RoKTtpZigwPT09aGUpe3Zh'@; put 'ciB3ZT1SZS5zcGxpdCgiXG4iKTtpZih3ZS5sZW5ndGg+MzApZm9yKHdlWzI2XT0iIi5jb25jYXQoWCwiLi4uIikuY29uY2F0KGspO3dlLmxlbmd0aD4yNzspd2UucG9wKCk7cmV0dXJuIiIuY29uY2F0KE0ubm90SWRlbnRpY2FsLCJcblxuIikuY29uY2F0KHdlLmpvaW4oIlxuIiksIlxuIil9'@; put 'amU+MyYmKGx0PSJcbiIuY29uY2F0KFgsIi4uLiIpLmNvbmNhdChrKS5jb25jYXQobHQpLGR0PSEwKSwiIiE9PV9lJiYobHQ9IlxuICAiLmNvbmNhdChfZSkuY29uY2F0KGx0KSxfZT0iIik7dmFyIEplPTAsdHQ9TVtuZV0rIlxuIi5jb25jYXQoZiwiKyBhY3R1YWwiKS5jb25jYXQoaywiICIp'@; put 'LmNvbmNhdChiLCItIGV4cGVjdGVkIikuY29uY2F0KGspLEtlPSIgIi5jb25jYXQoWCwiLi4uIikuY29uY2F0KGssIiBMaW5lcyBza2lwcGVkIik7Zm9yKGplPTA7amU8aGU7amUrKyl7dmFyICR0PWplLW90O2lmKGFlLmxlbmd0aDxqZSsxKSR0PjEmJmplPjImJigkdD40PyhQZSs9IlxuIi5j'@; put 'b25jYXQoWCwiLi4uIikuY29uY2F0KGspLGR0PSEwKTokdD4zJiYoUGUrPSJcbiAgIi5jb25jYXQoeGVbamUtMl0pLEplKyspLFBlKz0iXG4gICIuY29uY2F0KHhlW2plLTFdKSxKZSsrKSxvdD1qZSxfZSs9IlxuIi5jb25jYXQoYiwiLSIpLmNvbmNhdChrLCIgIikuY29uY2F0KHhlW2plXSks'@; put 'SmUrKztlbHNlIGlmKHhlLmxlbmd0aDxqZSsxKSR0PjEmJmplPjImJigkdD40PyhQZSs9IlxuIi5jb25jYXQoWCwiLi4uIikuY29uY2F0KGspLGR0PSEwKTokdD4zJiYoUGUrPSJcbiAgIi5jb25jYXQoYWVbamUtMl0pLEplKyspLFBlKz0iXG4gICIuY29uY2F0KGFlW2plLTFdKSxKZSsrKSxv'@; put 'dD1qZSxQZSs9IlxuIi5jb25jYXQoZiwiKyIpLmNvbmNhdChrLCIgIikuY29uY2F0KGFlW2plXSksSmUrKztlbHNle3ZhciBSdD14ZVtqZV0sTHQ9YWVbamVdLEd0PUx0IT09UnQmJigha2UoTHQsIiwiKXx8THQuc2xpY2UoMCwtMSkhPT1SdCk7R3QmJmtlKFJ0LCIsIikmJlJ0LnNsaWNlKDAs'@; put 'LTEpPT09THQmJihHdD0hMSxMdCs9IiwiKSxHdD8oJHQ+MSYmamU+MiYmKCR0PjQ/KFBlKz0iXG4iLmNvbmNhdChYLCIuLi4iKS5jb25jYXQoayksZHQ9ITApOiR0PjMmJihQZSs9IlxuICAiLmNvbmNhdChhZVtqZS0yXSksSmUrKyksUGUrPSJcbiAgIi5jb25jYXQoYWVbamUtMV0pLEplKysp'@; put 'LG90PWplLFBlKz0iXG4iLmNvbmNhdChmLCIrIikuY29uY2F0KGssIiAiKS5jb25jYXQoTHQpLF9lKz0iXG4iLmNvbmNhdChiLCItIikuY29uY2F0KGssIiAiKS5jb25jYXQoUnQpLEplKz0yKTooUGUrPV9lLF9lPSIiLCgxPT09JHR8fDA9PT1qZSkmJihQZSs9IlxuICAiLmNvbmNhdChMdCks'@; put 'SmUrKykpfWlmKEplPjIwJiZqZTxoZS0yKXJldHVybiIiLmNvbmNhdCh0dCkuY29uY2F0KEtlLCJcbiIpLmNvbmNhdChQZSwiXG4iKS5jb25jYXQoWCwiLi4uIikuY29uY2F0KGspLmNvbmNhdChfZSwiXG4iKSsiIi5jb25jYXQoWCwiLi4uIikuY29uY2F0KGspfXJldHVybiIiLmNvbmNhdCh0'@; put 'dCkuY29uY2F0KGR0P0tlOiIiLCJcbiIpLmNvbmNhdChQZSkuY29uY2F0KF9lKS5jb25jYXQobHQpLmNvbmNhdChBZSl9KGFlLHhlLGR0KSk7ZWxzZSBpZigibm90RGVlcFN0cmljdEVxdWFsIj09PWR0fHwibm90U3RyaWN0RXF1YWwiPT09ZHQpe3ZhciBBZT1NW2R0XSxEZT1HKGFlKS5zcGxp'@; put 'dCgiXG4iKTtpZigibm90U3RyaWN0RXF1YWwiPT09ZHQmJiJvYmplY3QiPT09cShhZSkmJm51bGwhPT1hZSYmKEFlPU0ubm90U3RyaWN0RXF1YWxPYmplY3QpLERlLmxlbmd0aD4zMClmb3IoRGVbMjZdPSIiLmNvbmNhdChYLCIuLi4iKS5jb25jYXQoayk7RGUubGVuZ3RoPjI3OylEZS5wb3Ao'@; put 'KTtvdD1uZS5jYWxsKHRoaXMsMT09PURlLmxlbmd0aD8iIi5jb25jYXQoQWUsIiAiKS5jb25jYXQoRGVbMF0pOiIiLmNvbmNhdChBZSwiXG5cbiIpLmNvbmNhdChEZS5qb2luKCJcbiIpLCJcbiIpKX1lbHNle3ZhciBGZT1HKGFlKSxnZT0iIixjZT1NW2R0XTsibm90RGVlcEVxdWFsIj09PWR0'@; put 'fHwibm90RXF1YWwiPT09ZHQ/KEZlPSIiLmNvbmNhdChNW2R0XSwiXG5cbiIpLmNvbmNhdChGZSkpLmxlbmd0aD4xMDI0JiYoRmU9IiIuY29uY2F0KEZlLnNsaWNlKDAsMTAyMSksIi4uLiIpKTooZ2U9IiIuY29uY2F0KEcoeGUpKSxGZS5sZW5ndGg+NTEyJiYoRmU9IiIuY29uY2F0KEZlLnNs'@; put 'aWNlKDAsNTA5KSwiLi4uIikpLGdlLmxlbmd0aD41MTImJihnZT0iIi5jb25jYXQoZ2Uuc2xpY2UoMCw1MDkpLCIuLi4iKSksImRlZXBFcXVhbCI9PT1kdHx8ImVxdWFsIj09PWR0P0ZlPSIiLmNvbmNhdChjZSwiXG5cbiIpLmNvbmNhdChGZSwiXG5cbnNob3VsZCBlcXVhbFxuXG4iKTpnZT0i'@; put 'ICIuY29uY2F0KGR0LCIgIikuY29uY2F0KGdlKSksb3Q9bmUuY2FsbCh0aGlzLCIiLmNvbmNhdChGZSkuY29uY2F0KGdlKSl9cmV0dXJuIEVycm9yLnN0YWNrVHJhY2VMaW1pdD1qZSxvdC5nZW5lcmF0ZWRNZXNzYWdlPSFsdCxPYmplY3QuZGVmaW5lUHJvcGVydHkoSChvdCksIm5hbWUiLHt2'@; put 'YWx1ZToiQXNzZXJ0aW9uRXJyb3IgW0VSUl9BU1NFUlRJT05dIixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLG90LmNvZGU9IkVSUl9BU1NFUlRJT04iLG90LmFjdHVhbD1hZSxvdC5leHBlY3RlZD14ZSxvdC5vcGVyYXRvcj1kdCxFcnJvci5jYXB0dXJlU3Rh'@; put 'Y2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoSChvdCksUmUpLG90Lm5hbWU9IkFzc2VydGlvbkVycm9yIixVKG90KX1yZXR1cm4gZnVuY3Rpb24gdyhJLHVlLG5lKXt1ZSYmQyhJLnByb3RvdHlwZSx1ZSksbmUmJkMoSSxuZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEksInByb3Rv'@; put 'dHlwZSIse3dyaXRhYmxlOiExfSl9KF9lLFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIi5jb25jYXQodGhpcy5uYW1lLCIgWyIpLmNvbmNhdCh0aGlzLmNvZGUsIl06ICIpLmNvbmNhdCh0aGlzLm1lc3NhZ2UpfX0se2tleTp1ZSx2YWx1ZTpmdW5jdGlvbihvdCxs'@; put 'dCl7cmV0dXJuIG1lKHRoaXMscyhzKHt9LGx0KSx7fSx7Y3VzdG9tSW5zcGVjdDohMSxkZXB0aDowfSkpfX1dKSxfZX0oVihFcnJvciksbWUuY3VzdG9tKTtmZS5leHBvcnRzPXB9LDY5NTk3KGZlLGosaCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHkobWUpe3JldHVybih5PSJmdW5jdGlvbiI9'@; put 'PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKENlKXtyZXR1cm4gdHlwZW9mIENlfTpmdW5jdGlvbihDZSl7cmV0dXJuIENlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZDZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmQ2UhPT1TeW1i'@; put 'b2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBDZX0pKG1lKX1mdW5jdGlvbiBjKG1lLENlKXtmb3IodmFyIEllPTA7SWU8Q2UubGVuZ3RoO0llKyspe3ZhciBrZT1DZVtJZV07a2UuZW51bWVyYWJsZT1rZS5lbnVtZXJhYmxlfHwhMSxrZS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGtl'@; put 'JiYoa2Uud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtZSxBKGtlLmtleSksa2UpfX1mdW5jdGlvbiBBKG1lKXt2YXIgQ2U9ZnVuY3Rpb24gdihtZSxDZSl7aWYoIm9iamVjdCIhPT15KG1lKXx8bnVsbD09PW1lKXJldHVybiBtZTt2YXIgSWU9bWVbU3ltYm9sLnRvUHJpbWl0'@; put 'aXZlXTtpZih2b2lkIDAhPT1JZSl7dmFyIGtlPUllLmNhbGwobWUsQ2V8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT15KGtlKSlyZXR1cm4ga2U7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmlu'@; put 'ZyI9PT1DZT9TdHJpbmc6TnVtYmVyKShtZSl9KG1lLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXkoQ2UpP0NlOlN0cmluZyhDZSl9ZnVuY3Rpb24gUyhtZSxDZSl7cmV0dXJuKFM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24o'@; put 'a2UscWUpe3JldHVybiBrZS5fX3Byb3RvX189cWUsa2V9KShtZSxDZSl9ZnVuY3Rpb24gSChtZSl7cmV0dXJuKEg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oSWUpe3JldHVybiBJZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90'@; put 'b3R5cGVPZihJZSl9KShtZSl9dmFyIE4seixWPXt9O2Z1bmN0aW9uIFkobWUsQ2UsSWUpe0llfHwoSWU9RXJyb3IpO3ZhciBxZT1mdW5jdGlvbihYKXshZnVuY3Rpb24gdyhtZSxDZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIENlJiZudWxsIT09Q2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3Vw'@; put 'ZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTttZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDZSYmQ2UucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bWUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9w'@; put 'ZXJ0eShtZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxDZSYmUyhtZSxDZSl9KGIsWCk7dmFyIGY9ZnVuY3Rpb24gTChtZSl7dmFyIENlPWZ1bmN0aW9uIFUoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1'@; put 'cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9u'@; put 'KCl7dmFyIHFlLGtlPUgobWUpO2lmKENlKXt2YXIgWD1IKHRoaXMpLmNvbnN0cnVjdG9yO3FlPVJlZmxlY3QuY29uc3RydWN0KGtlLGFyZ3VtZW50cyxYKX1lbHNlIHFlPWtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gUihtZSxDZSl7aWYoQ2UmJigib2JqZWN0Ij09'@; put 'PXkoQ2UpfHwiZnVuY3Rpb24iPT10eXBlb2YgQ2UpKXJldHVybiBDZTtpZih2b2lkIDAhPT1DZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiB4KG1lKXtpZih2b2lk'@; put 'IDA9PT1tZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBtZX0obWUpfSh0aGlzLHFlKX19KGIpO2Z1bmN0aW9uIGIoayxNLEIpe3ZhciBLO3JldHVybiBmdW5jdGlvbiBD'@; put 'KG1lLENlKXtpZighKG1lIGluc3RhbmNlb2YgQ2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGIpLEs9Zi5jYWxsKHRoaXMsZnVuY3Rpb24ga2UoWCxmLGIpe3JldHVybiJzdHJpbmciPT10eXBlb2YgQ2U/Q2U6Q2UoWCxm'@; put 'LGIpfShrLE0sQikpLEsuY29kZT1tZSxLfXJldHVybiBmdW5jdGlvbiBzKG1lLENlLEllKXtyZXR1cm4gQ2UmJmMobWUucHJvdG90eXBlLENlKSxJZSYmYyhtZSxJZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG1lLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLG1lfShiKX0oSWUpO1ZbbWVd'@; put 'PXFlfWZ1bmN0aW9uIEYobWUsQ2Upe2lmKEFycmF5LmlzQXJyYXkobWUpKXt2YXIgSWU9bWUubGVuZ3RoO3JldHVybiBtZT1tZS5tYXAoZnVuY3Rpb24oa2Upe3JldHVybiBTdHJpbmcoa2UpfSksSWU+Mj8ib25lIG9mICIuY29uY2F0KENlLCIgIikuY29uY2F0KG1lLnNsaWNlKDAsSWUtMSku'@; put 'am9pbigiLCAiKSwiLCBvciAiKSttZVtJZS0xXToyPT09SWU/Im9uZSBvZiAiLmNvbmNhdChDZSwiICIpLmNvbmNhdChtZVswXSwiIG9yICIpLmNvbmNhdChtZVsxXSk6Im9mICIuY29uY2F0KENlLCIgIikuY29uY2F0KG1lWzBdKX1yZXR1cm4ib2YgIi5jb25jYXQoQ2UsIiAiKS5jb25jYXQo'@; put 'U3RyaW5nKG1lKSl9WSgiRVJSX0FNQklHVU9VU19BUkdVTUVOVCIsJ1RoZSAiJXMiIGFyZ3VtZW50IGlzIGFtYmlndW91cy4gJXMnLFR5cGVFcnJvciksWSgiRVJSX0lOVkFMSURfQVJHX1RZUEUiLGZ1bmN0aW9uKG1lLENlLEllKXt2YXIga2UscWU7aWYodm9pZCAwPT09TiYmKE49aCg5NDE0'@; put 'OCkpLE4oInN0cmluZyI9PXR5cGVvZiBtZSwiJ25hbWUnIG11c3QgYmUgYSBzdHJpbmciKSwic3RyaW5nIj09dHlwZW9mIENlJiZmdW5jdGlvbiBXKG1lLENlLEllKXtyZXR1cm4gbWUuc3Vic3RyKCFJZXx8SWU8MD8wOitJZSxDZS5sZW5ndGgpPT09Q2V9KENlLCJub3QgIik/KGtlPSJtdXN0'@; put 'IG5vdCBiZSIsQ2U9Q2UucmVwbGFjZSgvXm5vdCAvLCIiKSk6a2U9Im11c3QgYmUiLGZ1bmN0aW9uIHEobWUsQ2UsSWUpe3JldHVybih2b2lkIDA9PT1JZXx8SWU+bWUubGVuZ3RoKSYmKEllPW1lLmxlbmd0aCksbWUuc3Vic3RyaW5nKEllLUNlLmxlbmd0aCxJZSk9PT1DZX0obWUsIiBhcmd1'@; put 'bWVudCIpKXFlPSJUaGUgIi5jb25jYXQobWUsIiAiKS5jb25jYXQoa2UsIiAiKS5jb25jYXQoRihDZSwidHlwZSIpKTtlbHNle3ZhciBYPWZ1bmN0aW9uIHJlKG1lLENlLEllKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIEllJiYoSWU9MCksIShJZStDZS5sZW5ndGg+bWUubGVuZ3RoKSYmLTEh'@; put 'PT1tZS5pbmRleE9mKENlLEllKX0obWUsIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7cWU9J1RoZSAiJy5jb25jYXQobWUsJyIgJykuY29uY2F0KFgsIiAiKS5jb25jYXQoa2UsIiAiKS5jb25jYXQoRihDZSwidHlwZSIpKX1yZXR1cm4gcWUrIi4gUmVjZWl2ZWQgdHlwZSAiLmNvbmNhdCh5'@; put 'KEllKSl9LFR5cGVFcnJvciksWSgiRVJSX0lOVkFMSURfQVJHX1ZBTFVFIixmdW5jdGlvbihtZSxDZSl7dmFyIEllPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiaXMgaW52YWxpZCI7dm9pZCAwPT09eiYmKHo9aCg0MDUzNykpO3ZhciBr'@; put 'ZT16Lmluc3BlY3QoQ2UpO3JldHVybiBrZS5sZW5ndGg+MTI4JiYoa2U9IiIuY29uY2F0KGtlLnNsaWNlKDAsMTI4KSwiLi4uIikpLCJUaGUgYXJndW1lbnQgJyIuY29uY2F0KG1lLCInICIpLmNvbmNhdChJZSwiLiBSZWNlaXZlZCAiKS5jb25jYXQoa2UpfSxUeXBlRXJyb3IsUmFuZ2VFcnJv'@; put 'ciksWSgiRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFIixmdW5jdGlvbihtZSxDZSxJZSl7dmFyIGtlO3JldHVybiBrZT1JZSYmSWUuY29uc3RydWN0b3ImJkllLmNvbnN0cnVjdG9yLm5hbWU/Imluc3RhbmNlIG9mICIuY29uY2F0KEllLmNvbnN0cnVjdG9yLm5hbWUpOiJ0eXBlICIuY29uY2F0'@; put 'KHkoSWUpKSwiRXhwZWN0ZWQgIi5jb25jYXQobWUsJyB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSAiJykuY29uY2F0KENlLCciJykrIiBmdW5jdGlvbiBidXQgZ290ICIuY29uY2F0KGtlLCIuIil9LFR5cGVFcnJvciksWSgiRVJSX01JU1NJTkdfQVJHUyIsZnVuY3Rpb24oKXtmb3IodmFyIG1l'@; put 'PWFyZ3VtZW50cy5sZW5ndGgsQ2U9bmV3IEFycmF5KG1lKSxJZT0wO0llPG1lO0llKyspQ2VbSWVdPWFyZ3VtZW50c1tJZV07dm9pZCAwPT09TiYmKE49aCg5NDE0OCkpLE4oQ2UubGVuZ3RoPjAsIkF0IGxlYXN0IG9uZSBhcmcgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIik7dmFyIGtlPSJUaGUg'@; put 'IixxZT1DZS5sZW5ndGg7c3dpdGNoKENlPUNlLm1hcChmdW5jdGlvbihYKXtyZXR1cm4nIicuY29uY2F0KFgsJyInKX0pLHFlKXtjYXNlIDE6a2UrPSIiLmNvbmNhdChDZVswXSwiIGFyZ3VtZW50Iik7YnJlYWs7Y2FzZSAyOmtlKz0iIi5jb25jYXQoQ2VbMF0sIiBhbmQgIikuY29uY2F0KENl'@; put 'WzFdLCIgYXJndW1lbnRzIik7YnJlYWs7ZGVmYXVsdDprZSs9Q2Uuc2xpY2UoMCxxZS0xKS5qb2luKCIsICIpLGtlKz0iLCBhbmQgIi5jb25jYXQoQ2VbcWUtMV0sIiBhcmd1bWVudHMiKX1yZXR1cm4iIi5jb25jYXQoa2UsIiBtdXN0IGJlIHNwZWNpZmllZCIpfSxUeXBlRXJyb3IpLGZlLmV4'@; put 'cG9ydHMuY29kZXM9Vn0sODIyOTkoZmUsaixoKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24geShHdCxndCl7cmV0dXJuIGZ1bmN0aW9uIEMoR3Qpe2lmKEFycmF5LmlzQXJyYXkoR3QpKXJldHVybiBHdH0oR3QpfHxmdW5jdGlvbiB2KEd0LGd0KXt2YXIgWHQ9bnVsbD09R3Q/bnVsbDp0eXBlb2Yg'@; put 'U3ltYm9sPCJ1IiYmR3RbU3ltYm9sLml0ZXJhdG9yXXx8R3RbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1YdCl7dmFyIExyLGxuLE9uLFFyLHRyPVtdLEhuPSEwLE9vPSExO3RyeXtpZihPbj0oWHQ9WHQuY2FsbChHdCkpLm5leHQsMD09PWd0KXtpZihPYmplY3QoWHQpIT09WHQpcmV0dXJuO0hu'@; put 'PSExfWVsc2UgZm9yKDshKEhuPShMcj1Pbi5jYWxsKFh0KSkuZG9uZSkmJih0ci5wdXNoKExyLnZhbHVlKSx0ci5sZW5ndGghPT1ndCk7SG49ITApO31jYXRjaCh1cil7T289ITAsbG49dXJ9ZmluYWxseXt0cnl7aWYoIUhuJiZudWxsIT1YdC5yZXR1cm4mJihRcj1YdC5yZXR1cm4oKSxPYmpl'@; put 'Y3QoUXIpIT09UXIpKXJldHVybn1maW5hbGx5e2lmKE9vKXRocm93IGxufX1yZXR1cm4gdHJ9fShHdCxndCl8fGZ1bmN0aW9uIHMoR3QsZ3Qpe2lmKEd0KXtpZigic3RyaW5nIj09dHlwZW9mIEd0KXJldHVybiBBKEd0LGd0KTt2YXIgWHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs'@; put 'KEd0KS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PVh0JiZHdC5jb25zdHJ1Y3RvciYmKFh0PUd0LmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09WHR8fCJTZXQiPT09WHQpcmV0dXJuIEFycmF5LmZyb20oR3QpO2lmKCJBcmd1bWVudHMiPT09WHR8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIp'@; put 'KD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KFh0KSlyZXR1cm4gQShHdCxndCl9fShHdCxndCl8fGZ1bmN0aW9uIGMoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFi'@; put 'bGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEEoR3QsZ3QpeyhudWxsPT1ndHx8Z3Q+R3QubGVuZ3RoKSYmKGd0PUd0Lmxlbmd0aCk7Zm9yKHZhciBYdD0wLExyPW5ldyBBcnJheShndCk7WHQ8Z3Q7WHQr'@; put 'KylMcltYdF09R3RbWHRdO3JldHVybiBMcn1mdW5jdGlvbiB3KEd0KXtyZXR1cm4odz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihndCl7cmV0dXJuIHR5cGVvZiBndH06ZnVuY3Rpb24oZ3Qpe3JldHVybiBndCYm'@; put 'ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZ3QuY29uc3RydWN0b3I9PT1TeW1ib2wmJmd0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ3R9KShHdCl9dmFyIFM9dm9pZCAwIT09L2EvZy5mbGFncyxMPWZ1bmN0aW9uKGd0KXt2YXIgWHQ9W107cmV0dXJuIGd0LmZvckVh'@; put 'Y2goZnVuY3Rpb24oTHIpe3JldHVybiBYdC5wdXNoKExyKX0pLFh0fSxSPWZ1bmN0aW9uKGd0KXt2YXIgWHQ9W107cmV0dXJuIGd0LmZvckVhY2goZnVuY3Rpb24oTHIsbG4pe3JldHVybiBYdC5wdXNoKFtsbixMcl0pfSksWHR9LHg9T2JqZWN0LmlzP09iamVjdC5pczpoKDM3NjUzKSxVPU9i'@; put 'amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbigpe3JldHVybltdfSxIPU51bWJlci5pc05hTj9OdW1iZXIuaXNOYU46aCgyNDEzMyk7ZnVuY3Rpb24gVihHdCl7cmV0dXJuIEd0LmNhbGwuYmluZChHdCl9dmFyIE49VihPYmpl'@; put 'Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSx6PVYoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSksWT1WKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpLEY9aCg0MDUzNykudHlwZXMsVz1GLmlzQW55QXJyYXlCdWZmZXIscT1GLmlzQXJyYXlCdWZmZXJWaWV3LHJl'@; put 'PUYuaXNEYXRlLG1lPUYuaXNNYXAsQ2U9Ri5pc1JlZ0V4cCxJZT1GLmlzU2V0LGtlPUYuaXNOYXRpdmVFcnJvcixxZT1GLmlzQm94ZWRQcmltaXRpdmUsWD1GLmlzTnVtYmVyT2JqZWN0LGY9Ri5pc1N0cmluZ09iamVjdCxiPUYuaXNCb29sZWFuT2JqZWN0LGs9Ri5pc0JpZ0ludE9iamVjdCxN'@; put 'PUYuaXNTeW1ib2xPYmplY3QsQj1GLmlzRmxvYXQzMkFycmF5LEs9Ri5pc0Zsb2F0NjRBcnJheTtmdW5jdGlvbiBHKEd0KXtpZigwPT09R3QubGVuZ3RofHxHdC5sZW5ndGg+MTApcmV0dXJuITA7Zm9yKHZhciBndD0wO2d0PEd0Lmxlbmd0aDtndCsrKXt2YXIgWHQ9R3QuY2hhckNvZGVBdChn'@; put 'dCk7aWYoWHQ8NDh8fFh0PjU3KXJldHVybiEwfXJldHVybiAxMD09PUd0Lmxlbmd0aCYmR3Q+PU1hdGgucG93KDIsMzIpfWZ1bmN0aW9uIEQoR3Qpe3JldHVybiBPYmplY3Qua2V5cyhHdCkuZmlsdGVyKEcpLmNvbmNhdChVKEd0KS5maWx0ZXIoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlz'@; put 'RW51bWVyYWJsZS5iaW5kKEd0KSkpfWZ1bmN0aW9uIHAoR3QsZ3Qpe2lmKEd0PT09Z3QpcmV0dXJuIDA7Zm9yKHZhciBYdD1HdC5sZW5ndGgsTHI9Z3QubGVuZ3RoLGxuPTAsT249TWF0aC5taW4oWHQsTHIpO2xuPE9uOysrbG4paWYoR3RbbG5dIT09Z3RbbG5dKXtYdD1HdFtsbl0sTHI9Z3Rb'@; put 'bG5dO2JyZWFrfXJldHVybiBYdDxMcj8tMTpMcjxYdD8xOjB9ZnVuY3Rpb24gQWUoR3QsZ3QsWHQsTHIpe2lmKEd0PT09Z3QpcmV0dXJuIDAhPT1HdHx8IVh0fHx4KEd0LGd0KTtpZihYdCl7aWYoIm9iamVjdCIhPT13KEd0KSlyZXR1cm4ibnVtYmVyIj09dHlwZW9mIEd0JiZIKEd0KSYmSChn'@; put 'dCk7aWYoIm9iamVjdCIhPT13KGd0KXx8bnVsbD09PUd0fHxudWxsPT09Z3R8fE9iamVjdC5nZXRQcm90b3R5cGVPZihHdCkhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZ3QpKXJldHVybiExfWVsc2V7aWYobnVsbD09PUd0fHwib2JqZWN0IiE9PXcoR3QpKXJldHVybihudWxsPT09Z3R8fCJv'@; put 'YmplY3QiIT09dyhndCkpJiZHdD09Z3Q7aWYobnVsbD09PWd0fHwib2JqZWN0IiE9PXcoZ3QpKXJldHVybiExfXZhciBsbj1ZKEd0KTtpZihsbiE9PVkoZ3QpKXJldHVybiExO2lmKEFycmF5LmlzQXJyYXkoR3QpKXtpZihHdC5sZW5ndGghPT1ndC5sZW5ndGgpcmV0dXJuITE7dmFyIFFyPUQo'@; put 'R3QpLHRyPUQoZ3QpO3JldHVybiBRci5sZW5ndGg9PT10ci5sZW5ndGgmJkZlKEd0LGd0LFh0LExyLDEsUXIpfWlmKCJbb2JqZWN0IE9iamVjdF0iPT09bG4mJighbWUoR3QpJiZtZShndCl8fCFJZShHdCkmJkllKGd0KSkpcmV0dXJuITE7aWYocmUoR3QpKXtpZighcmUoZ3QpfHxEYXRlLnBy'@; put 'b3RvdHlwZS5nZXRUaW1lLmNhbGwoR3QpIT09RGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKGd0KSlyZXR1cm4hMX1lbHNlIGlmKENlKEd0KSl7aWYoIUNlKGd0KXx8IWZ1bmN0aW9uIGR0KEd0LGd0KXtyZXR1cm4gUz9HdC5zb3VyY2U9PT1ndC5zb3VyY2UmJkd0LmZsYWdzPT09Z3QuZmxh'@; put 'Z3M6UmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEd0KT09PVJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChndCl9KEd0LGd0KSlyZXR1cm4hMX1lbHNlIGlmKGtlKEd0KXx8R3QgaW5zdGFuY2VvZiBFcnJvcil7aWYoR3QubWVzc2FnZSE9PWd0Lm1lc3NhZ2V8fEd0Lm5hbWUh'@; put 'PT1ndC5uYW1lKXJldHVybiExfWVsc2V7aWYocShHdCkpe2lmKFh0fHwhQihHdCkmJiFLKEd0KSl7aWYoIWZ1bmN0aW9uIGFlKEd0LGd0KXtyZXR1cm4gR3QuYnl0ZUxlbmd0aD09PWd0LmJ5dGVMZW5ndGgmJjA9PT1wKG5ldyBVaW50OEFycmF5KEd0LmJ1ZmZlcixHdC5ieXRlT2Zmc2V0LEd0'@; put 'LmJ5dGVMZW5ndGgpLG5ldyBVaW50OEFycmF5KGd0LmJ1ZmZlcixndC5ieXRlT2Zmc2V0LGd0LmJ5dGVMZW5ndGgpKX0oR3QsZ3QpKXJldHVybiExfWVsc2UgaWYoIWZ1bmN0aW9uIFJlKEd0LGd0KXtpZihHdC5ieXRlTGVuZ3RoIT09Z3QuYnl0ZUxlbmd0aClyZXR1cm4hMTtmb3IodmFyIFh0'@; put 'PTA7WHQ8R3QuYnl0ZUxlbmd0aDtYdCsrKWlmKEd0W1h0XSE9PWd0W1h0XSlyZXR1cm4hMTtyZXR1cm4hMH0oR3QsZ3QpKXJldHVybiExO3ZhciBIbj1EKEd0KSxPbz1EKGd0KTtyZXR1cm4gSG4ubGVuZ3RoPT09T28ubGVuZ3RoJiZGZShHdCxndCxYdCxMciwwLEhuKX1pZihJZShHdCkpcmV0'@; put 'dXJuISghSWUoZ3QpfHxHdC5zaXplIT09Z3Quc2l6ZSkmJkZlKEd0LGd0LFh0LExyLDIpO2lmKG1lKEd0KSlyZXR1cm4hKCFtZShndCl8fEd0LnNpemUhPT1ndC5zaXplKSYmRmUoR3QsZ3QsWHQsTHIsMyk7aWYoVyhHdCkpe2lmKCFmdW5jdGlvbiB4ZShHdCxndCl7cmV0dXJuIEd0LmJ5dGVM'@; put 'ZW5ndGg9PT1ndC5ieXRlTGVuZ3RoJiYwPT09cChuZXcgVWludDhBcnJheShHdCksbmV3IFVpbnQ4QXJyYXkoZ3QpKX0oR3QsZ3QpKXJldHVybiExfWVsc2UgaWYocWUoR3QpJiYhZnVuY3Rpb24gamUoR3QsZ3Qpe3JldHVybiBYKEd0KT9YKGd0KSYmeChOdW1iZXIucHJvdG90eXBlLnZhbHVl'@; put 'T2YuY2FsbChHdCksTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoZ3QpKTpmKEd0KT9mKGd0KSYmU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoR3QpPT09U3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoZ3QpOmIoR3QpP2IoZ3QpJiZCb29sZWFuLnByb3RvdHlwZS52YWx1'@; put 'ZU9mLmNhbGwoR3QpPT09Qm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKGd0KTprKEd0KT9rKGd0KSYmQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoR3QpPT09QmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoZ3QpOk0oZ3QpJiZTeW1ib2wucHJvdG90eXBlLnZhbHVlT2Yu'@; put 'Y2FsbChHdCk9PT1TeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbChndCl9KEd0LGd0KSlyZXR1cm4hMX1yZXR1cm4gRmUoR3QsZ3QsWHQsTHIsMCl9ZnVuY3Rpb24gRGUoR3QsZ3Qpe3JldHVybiBndC5maWx0ZXIoZnVuY3Rpb24oWHQpe3JldHVybiB6KEd0LFh0KX0pfWZ1bmN0aW9uIEZl'@; put 'KEd0LGd0LFh0LExyLGxuLE9uKXtpZig1PT09YXJndW1lbnRzLmxlbmd0aCl7T249T2JqZWN0LmtleXMoR3QpO3ZhciBRcj1PYmplY3Qua2V5cyhndCk7aWYoT24ubGVuZ3RoIT09UXIubGVuZ3RoKXJldHVybiExfWZvcih2YXIgdHI9MDt0cjxPbi5sZW5ndGg7dHIrKylpZighTihndCxPblt0'@; put 'cl0pKXJldHVybiExO2lmKFh0JiY1PT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIEhuPVUoR3QpO2lmKDAhPT1Ibi5sZW5ndGgpe3ZhciBPbz0wO2Zvcih0cj0wO3RyPEhuLmxlbmd0aDt0cisrKXt2YXIgdXI9SG5bdHJdO2lmKHooR3QsdXIpKXtpZigheihndCx1cikpcmV0dXJuITE7T24ucHVz'@; put 'aCh1ciksT28rK31lbHNlIGlmKHooZ3QsdXIpKXJldHVybiExfXZhciBabj1VKGd0KTtpZihIbi5sZW5ndGghPT1abi5sZW5ndGgmJkRlKGd0LFpuKS5sZW5ndGghPT1PbylyZXR1cm4hMX1lbHNle3ZhciBTbj1VKGd0KTtpZigwIT09U24ubGVuZ3RoJiYwIT09RGUoZ3QsU24pLmxlbmd0aCly'@; put 'ZXR1cm4hMX19aWYoMD09PU9uLmxlbmd0aCYmKDA9PT1sbnx8MT09PWxuJiYwPT09R3QubGVuZ3RofHwwPT09R3Quc2l6ZSkpcmV0dXJuITA7aWYodm9pZCAwPT09THIpTHI9e3ZhbDE6bmV3IE1hcCx2YWwyOm5ldyBNYXAscG9zaXRpb246MH07ZWxzZXt2YXIgeHI9THIudmFsMS5nZXQoR3Qp'@; put 'O2lmKHZvaWQgMCE9PXhyKXt2YXIgVHQ9THIudmFsMi5nZXQoZ3QpO2lmKHZvaWQgMCE9PVR0KXJldHVybiB4cj09PVR0fUxyLnBvc2l0aW9uKyt9THIudmFsMS5zZXQoR3QsTHIucG9zaXRpb24pLExyLnZhbDIuc2V0KGd0LExyLnBvc2l0aW9uKTt2YXIgQXI9ZnVuY3Rpb24gJHQoR3QsZ3Qs'@; put 'WHQsTHIsbG4sT24pe3ZhciBRcj0wO2lmKDI9PT1Pbil7aWYoIWZ1bmN0aW9uIEplKEd0LGd0LFh0LExyKXtmb3IodmFyIGxuPW51bGwsT249TChHdCksUXI9MDtRcjxPbi5sZW5ndGg7UXIrKyl7dmFyIHRyPU9uW1FyXTtpZigib2JqZWN0Ij09PXcodHIpJiZudWxsIT09dHIpbnVsbD09PWxu'@; put 'JiYobG49bmV3IFNldCksbG4uYWRkKHRyKTtlbHNlIGlmKCFndC5oYXModHIpKXtpZihYdHx8IWhlKEd0LGd0LHRyKSlyZXR1cm4hMTtudWxsPT09bG4mJihsbj1uZXcgU2V0KSxsbi5hZGQodHIpfX1pZihudWxsIT09bG4pe2Zvcih2YXIgSG49TChndCksT289MDtPbzxIbi5sZW5ndGg7T28r'@; put 'Kyl7dmFyIHVyPUhuW09vXTtpZigib2JqZWN0Ij09PXcodXIpJiZudWxsIT09dXIpe2lmKCFnZShsbix1cixYdCxMcikpcmV0dXJuITF9ZWxzZSBpZighWHQmJiFHdC5oYXModXIpJiYhZ2UobG4sdXIsWHQsTHIpKXJldHVybiExfXJldHVybiAwPT09bG4uc2l6ZX1yZXR1cm4hMH0oR3QsZ3Qs'@; put 'WHQsbG4pKXJldHVybiExfWVsc2UgaWYoMz09PU9uKXtpZighZnVuY3Rpb24gS2UoR3QsZ3QsWHQsTHIpe2Zvcih2YXIgbG49bnVsbCxPbj1SKEd0KSxRcj0wO1FyPE9uLmxlbmd0aDtRcisrKXt2YXIgdHI9eShPbltRcl0sMiksSG49dHJbMF0sT289dHJbMV07aWYoIm9iamVjdCI9PT13KEhu'@; put 'KSYmbnVsbCE9PUhuKW51bGw9PT1sbiYmKGxuPW5ldyBTZXQpLGxuLmFkZChIbik7ZWxzZXt2YXIgdXI9Z3QuZ2V0KEhuKTtpZih2b2lkIDA9PT11ciYmIWd0LmhhcyhIbil8fCFBZShPbyx1cixYdCxMcikpe2lmKFh0fHwhd2UoR3QsZ3QsSG4sT28sTHIpKXJldHVybiExO251bGw9PT1sbiYm'@; put 'KGxuPW5ldyBTZXQpLGxuLmFkZChIbil9fX1pZihudWxsIT09bG4pe2Zvcih2YXIgWm49UihndCksU249MDtTbjxabi5sZW5ndGg7U24rKyl7dmFyIHhyPXkoWm5bU25dLDIpLFR0PXhyWzBdLEFyPXhyWzFdO2lmKCJvYmplY3QiPT09dyhUdCkmJm51bGwhPT1UdCl7aWYoIXR0KGxuLEd0LFR0'@; put 'LEFyLFh0LExyKSlyZXR1cm4hMX1lbHNlIGlmKCEoWHR8fEd0LmhhcyhUdCkmJkFlKEd0LmdldChUdCksQXIsITEsTHIpfHx0dChsbixHdCxUdCxBciwhMSxMcikpKXJldHVybiExfXJldHVybiAwPT09bG4uc2l6ZX1yZXR1cm4hMH0oR3QsZ3QsWHQsbG4pKXJldHVybiExfWVsc2UgaWYoMT09'@; put 'PU9uKWZvcig7UXI8R3QubGVuZ3RoO1FyKyspe2lmKCFOKEd0LFFyKSl7aWYoTihndCxRcikpcmV0dXJuITE7Zm9yKHZhciB0cj1PYmplY3Qua2V5cyhHdCk7UXI8dHIubGVuZ3RoO1FyKyspe3ZhciBIbj10cltRcl07aWYoIU4oZ3QsSG4pfHwhQWUoR3RbSG5dLGd0W0huXSxYdCxsbikpcmV0'@; put 'dXJuITF9cmV0dXJuIHRyLmxlbmd0aD09PU9iamVjdC5rZXlzKGd0KS5sZW5ndGh9aWYoIU4oZ3QsUXIpfHwhQWUoR3RbUXJdLGd0W1FyXSxYdCxsbikpcmV0dXJuITF9Zm9yKFFyPTA7UXI8THIubGVuZ3RoO1FyKyspe3ZhciBPbz1McltRcl07aWYoIUFlKEd0W09vXSxndFtPb10sWHQsbG4p'@; put 'KXJldHVybiExfXJldHVybiEwfShHdCxndCxYdCxPbixMcixsbik7cmV0dXJuIExyLnZhbDEuZGVsZXRlKEd0KSxMci52YWwyLmRlbGV0ZShndCksQXJ9ZnVuY3Rpb24gZ2UoR3QsZ3QsWHQsTHIpe2Zvcih2YXIgbG49TChHdCksT249MDtPbjxsbi5sZW5ndGg7T24rKyl7dmFyIFFyPWxuW09u'@; put 'XTtpZihBZShndCxRcixYdCxMcikpcmV0dXJuIEd0LmRlbGV0ZShRciksITB9cmV0dXJuITF9ZnVuY3Rpb24gY2UoR3Qpe3N3aXRjaCh3KEd0KSl7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBudWxsO2Nhc2Uib2JqZWN0IjpyZXR1cm47Y2FzZSJzeW1ib2wiOnJldHVybiExO2Nhc2Uic3RyaW5n'@; put 'IjpHdD0rR3Q7Y2FzZSJudW1iZXIiOmlmKEgoR3QpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGhlKEd0LGd0LFh0KXt2YXIgTHI9Y2UoWHQpO3JldHVybiBMcj8/KGd0LmhhcyhMcikmJiFHdC5oYXMoTHIpKX1mdW5jdGlvbiB3ZShHdCxndCxYdCxMcixsbil7dmFyIE9uPWNlKFh0KTtp'@; put 'ZihudWxsIT1PbilyZXR1cm4gT247dmFyIFFyPWd0LmdldChPbik7cmV0dXJuISh2b2lkIDA9PT1RciYmIWd0LmhhcyhPbil8fCFBZShMcixRciwhMSxsbikpJiYhR3QuaGFzKE9uKSYmQWUoTHIsUXIsITEsbG4pfWZ1bmN0aW9uIHR0KEd0LGd0LFh0LExyLGxuLE9uKXtmb3IodmFyIFFyPUwo'@; put 'R3QpLHRyPTA7dHI8UXIubGVuZ3RoO3RyKyspe3ZhciBIbj1Rclt0cl07aWYoQWUoWHQsSG4sbG4sT24pJiZBZShMcixndC5nZXQoSG4pLGxuLE9uKSlyZXR1cm4gR3QuZGVsZXRlKEhuKSwhMH1yZXR1cm4hMX1mZS5leHBvcnRzPXtpc0RlZXBFcXVhbDpmdW5jdGlvbiBSdChHdCxndCl7cmV0'@; put 'dXJuIEFlKEd0LGd0LCExKX0saXNEZWVwU3RyaWN0RXF1YWw6ZnVuY3Rpb24gTHQoR3QsZ3Qpe3JldHVybiBBZShHdCxndCwhMCl9fX0sNjI4NDEoZmUsail7InVzZSBzdHJpY3QiO2oud3JhcHBlcj1mdW5jdGlvbiB5KGMpe3JldHVybiBjfX0sNjc1MjYoZmUsail7InVzZSBzdHJpY3QiO2ou'@; put 'Ynl0ZUxlbmd0aD1mdW5jdGlvbiB3KEgpe3ZhciBWPUMoSCksej1WWzFdO3JldHVybiAzKihWWzBdK3opLzQten0sai50b0J5dGVBcnJheT1mdW5jdGlvbiBMKEgpe3ZhciBWLHJlLE49QyhIKSx6PU5bMF0sWT1OWzFdLEY9bmV3IGMoZnVuY3Rpb24gUyhILFYsTil7cmV0dXJuIDMqKFYrTikv'@; put 'NC1OfSgwLHosWSkpLFc9MCxxPVk+MD96LTQ6ejtmb3IocmU9MDtyZTxxO3JlKz00KVY9eVtILmNoYXJDb2RlQXQocmUpXTw8MTh8eVtILmNoYXJDb2RlQXQocmUrMSldPDwxMnx5W0guY2hhckNvZGVBdChyZSsyKV08PDZ8eVtILmNoYXJDb2RlQXQocmUrMyldLEZbVysrXT1WPj4xNiYyNTUs'@; put 'RltXKytdPVY+PjgmMjU1LEZbVysrXT0yNTUmVjtyZXR1cm4gMj09PVkmJihWPXlbSC5jaGFyQ29kZUF0KHJlKV08PDJ8eVtILmNoYXJDb2RlQXQocmUrMSldPj40LEZbVysrXT0yNTUmViksMT09PVkmJihWPXlbSC5jaGFyQ29kZUF0KHJlKV08PDEwfHlbSC5jaGFyQ29kZUF0KHJlKzEpXTw8'@; put 'NHx5W0guY2hhckNvZGVBdChyZSsyKV0+PjIsRltXKytdPVY+PjgmMjU1LEZbVysrXT0yNTUmViksRn0sai5mcm9tQnl0ZUFycmF5PWZ1bmN0aW9uIFUoSCl7Zm9yKHZhciBWLE49SC5sZW5ndGgsej1OJTMsWT1bXSxGPTE2MzgzLFc9MCxxPU4tejtXPHE7Vys9RilZLnB1c2goeChILFcsVytG'@; put 'PnE/cTpXK0YpKTtyZXR1cm4gMT09PXo/WS5wdXNoKGhbKFY9SFtOLTFdKT4+Ml0raFtWPDw0JjYzXSsiPT0iKToyPT09eiYmWS5wdXNoKGhbKFY9KEhbTi0yXTw8OCkrSFtOLTFdKT4+MTBdK2hbVj4+NCY2M10raFtWPDwyJjYzXSsiPSIpLFkuam9pbigiIil9O2Zvcih2YXIgaD1bXSx5PVtd'@; put 'LGM9dHlwZW9mIFVpbnQ4QXJyYXk8InUiP1VpbnQ4QXJyYXk6QXJyYXkscz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsQT0wO0E8NjQ7KytBKWhbQV09c1tBXSx5W3MuY2hhckNvZGVBdChBKV09QTtmdW5jdGlvbiBD'@; put 'KEgpe3ZhciBWPUgubGVuZ3RoO2lmKFYlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO3ZhciBOPUguaW5kZXhPZigiPSIpO3JldHVybi0xPT09TiYmKE49ViksW04sTj09PVY/MDo0LU4lNF19ZnVuY3Rpb24gUihI'@; put 'KXtyZXR1cm4gaFtIPj4xOCY2M10raFtIPj4xMiY2M10raFtIPj42JjYzXStoWzYzJkhdfWZ1bmN0aW9uIHgoSCxWLE4pe2Zvcih2YXIgWT1bXSxGPVY7RjxOO0YrPTMpWS5wdXNoKFIoKEhbRl08PDE2JjE2NzExNjgwKSsoSFtGKzFdPDw4JjY1MjgwKSsoMjU1JkhbRisyXSkpKTtyZXR1cm4g'@; put 'WS5qb2luKCIiKX15WzQ1XT02Mix5Wzk1XT02M30sMzk0MDQoZmUsaixoKXshZnVuY3Rpb24oeSxjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyhrLE0pe2lmKCFrKXRocm93IG5ldyBFcnJvcihNfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIEEoayxNKXtrLnN1cGVyXz1NO3ZhciBC'@; put 'PWZ1bmN0aW9uKCl7fTtCLnByb3RvdHlwZT1NLnByb3RvdHlwZSxrLnByb3RvdHlwZT1uZXcgQixrLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rfWZ1bmN0aW9uIHYoayxNLEIpe2lmKHYuaXNCTihrKSlyZXR1cm4gazt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3Ro'@; put 'PTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09ayYmKCgibGUiPT09TXx8ImJlIj09PU0pJiYoQj1NLE09MTApLHRoaXMuX2luaXQoa3x8MCxNfHwxMCxCfHwiYmUiKSl9dmFyIEM7Im9iamVjdCI9PXR5cGVvZiB5P3kuZXhwb3J0cz12OmMuQk49dix2LkJOPXYsdi53b3JkU2l6ZT0yNjt0cnl7Qz10'@; put 'eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6aCg0Nzc5MCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiB3KGssTSl7dmFyIEI9ay5jaGFyQ29kZUF0KE0pO3JldHVybiBCPj00OCYmQjw9NTc/Qi00ODpCPj02NSYmQjw9NzA/Qi01NTpCPj05'@; put 'NyYmQjw9MTAyP0ItODc6dm9pZCBzKCExLCJJbnZhbGlkIGNoYXJhY3RlciBpbiAiK2spfWZ1bmN0aW9uIFMoayxNLEIpe3ZhciBLPXcoayxCKTtyZXR1cm4gQi0xPj1NJiYoS3w9dyhrLEItMSk8PDQpLEt9ZnVuY3Rpb24gTChrLE0sQixLKXtmb3IodmFyIEc9MCxEPTAscD1NYXRoLm1pbihr'@; put 'Lmxlbmd0aCxCKSxJPU07STxwO0krKyl7dmFyIHVlPWsuY2hhckNvZGVBdChJKS00ODtHKj1LLEQ9dWU+PTQ5P3VlLTQ5KzEwOnVlPj0xNz91ZS0xNysxMDp1ZSxzKHVlPj0wJiZEPEssIkludmFsaWQgY2hhcmFjdGVyIiksRys9RH1yZXR1cm4gR31mdW5jdGlvbiBSKGssTSl7ay53b3Jkcz1N'@; put 'LndvcmRzLGsubGVuZ3RoPU0ubGVuZ3RoLGsubmVnYXRpdmU9TS5uZWdhdGl2ZSxrLnJlZD1NLnJlZH1pZih2LmlzQk49ZnVuY3Rpb24oTSl7cmV0dXJuIE0gaW5zdGFuY2VvZiB2fHxudWxsIT09TSYmIm9iamVjdCI9PXR5cGVvZiBNJiZNLmNvbnN0cnVjdG9yLndvcmRTaXplPT09di53b3Jk'@; put 'U2l6ZSYmQXJyYXkuaXNBcnJheShNLndvcmRzKX0sdi5tYXg9ZnVuY3Rpb24oTSxCKXtyZXR1cm4gTS5jbXAoQik+MD9NOkJ9LHYubWluPWZ1bmN0aW9uKE0sQil7cmV0dXJuIE0uY21wKEIpPDA/TTpCfSx2LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihNLEIsSyl7aWYoIm51bWJlciI9PXR5'@; put 'cGVvZiBNKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKE0sQixLKTtpZigib2JqZWN0Ij09dHlwZW9mIE0pcmV0dXJuIHRoaXMuX2luaXRBcnJheShNLEIsSyk7ImhleCI9PT1CJiYoQj0xNikscyhCPT09KDB8QikmJkI+PTImJkI8PTM2KTt2YXIgRz0wOyItIj09PShNPU0udG9TdHJpbmcoKS5y'@; put 'ZXBsYWNlKC9ccysvZywiIikpWzBdJiYoRysrLHRoaXMubmVnYXRpdmU9MSksRzxNLmxlbmd0aCYmKDE2PT09Qj90aGlzLl9wYXJzZUhleChNLEcsSyk6KHRoaXMuX3BhcnNlQmFzZShNLEIsRyksImxlIj09PUsmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxCLEspKSl9LHYucHJv'@; put 'dG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKE0sQixLKXtNPDAmJih0aGlzLm5lZ2F0aXZlPTEsTT0tTSksTTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmTV0sdGhpcy5sZW5ndGg9MSk6TTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZNLE0vNjcxMDg4'@; put 'NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihzKE08OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmTSxNLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1LJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQixLKX0sdi5wcm90'@; put 'b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihNLEIsSyl7aWYocygibnVtYmVyIj09dHlwZW9mIE0ubGVuZ3RoKSxNLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChNLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5l'@; put 'dyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBHPTA7Rzx0aGlzLmxlbmd0aDtHKyspdGhpcy53b3Jkc1tHXT0wO3ZhciBELHAsST0wO2lmKCJiZSI9PT1LKWZvcihHPU0ubGVuZ3RoLTEsRD0wO0c+PTA7Ry09Myl0aGlzLndvcmRzW0RdfD0ocD1NW0ddfE1bRy0xXTw8OHxNW0ctMl08PDE2'@; put 'KTw8SSY2NzEwODg2Myx0aGlzLndvcmRzW0QrMV09cD4+PjI2LUkmNjcxMDg4NjMsKEkrPTI0KT49MjYmJihJLT0yNixEKyspO2Vsc2UgaWYoImxlIj09PUspZm9yKEc9MCxEPTA7RzxNLmxlbmd0aDtHKz0zKXRoaXMud29yZHNbRF18PShwPU1bR118TVtHKzFdPDw4fE1bRysyXTw8MTYpPDxJ'@; put 'JjY3MTA4ODYzLHRoaXMud29yZHNbRCsxXT1wPj4+MjYtSSY2NzEwODg2MywoSSs9MjQpPj0yNiYmKEktPTI2LEQrKyk7cmV0dXJuIHRoaXMuX3N0cmlwKCl9LHYucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihNLEIsSyl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChNLmxlbmd0aC1CKS82'@; put 'KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBHPTA7Rzx0aGlzLmxlbmd0aDtHKyspdGhpcy53b3Jkc1tHXT0wO3ZhciBJLEQ9MCxwPTA7aWYoImJlIj09PUspZm9yKEc9TS5sZW5ndGgtMTtHPj1CO0ctPTIpST1TKE0sQixHKTw8RCx0aGlzLndvcmRzW3BdfD02'@; put 'NzEwODg2MyZJLEQ+PTE4PyhELT0xOCx0aGlzLndvcmRzW3ArPTFdfD1JPj4+MjYpOkQrPTg7ZWxzZSBmb3IoRz0oTS5sZW5ndGgtQiklMj09MD9CKzE6QjtHPE0ubGVuZ3RoO0crPTIpST1TKE0sQixHKTw8RCx0aGlzLndvcmRzW3BdfD02NzEwODg2MyZJLEQ+PTE4PyhELT0xOCx0aGlzLndv'@; put 'cmRzW3ArPTFdfD1JPj4+MjYpOkQrPTg7dGhpcy5fc3RyaXAoKX0sdi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihNLEIsSyl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIEc9MCxEPTE7RDw9NjcxMDg4NjM7RCo9QilHKys7Ry0tLEQ9RC9CfDA7Zm9yKHZhciBw'@; put 'PU0ubGVuZ3RoLUssST1wJUcsdWU9TWF0aC5taW4ocCxwLUkpK0ssbmU9MCxfZT1LO19lPHVlO19lKz1HKW5lPUwoTSxfZSxfZStHLEIpLHRoaXMuaW11bG4oRCksdGhpcy53b3Jkc1swXStuZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1uZTp0aGlzLl9pYWRkbihuZSk7aWYoMCE9PUkpe3Zh'@; put 'ciBQZT0xO2ZvcihuZT1MKE0sX2UsTS5sZW5ndGgsQiksX2U9MDtfZTxJO19lKyspUGUqPUI7dGhpcy5pbXVsbihQZSksdGhpcy53b3Jkc1swXStuZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1uZTp0aGlzLl9pYWRkbihuZSl9dGhpcy5fc3RyaXAoKX0sdi5wcm90b3R5cGUuY29weT1mdW5j'@; put 'dGlvbihNKXtNLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBCPTA7Qjx0aGlzLmxlbmd0aDtCKyspTS53b3Jkc1tCXT10aGlzLndvcmRzW0JdO00ubGVuZ3RoPXRoaXMubGVuZ3RoLE0ubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxNLnJlZD10aGlzLnJlZH0sdi5wcm90b3R5'@; put 'cGUuX21vdmU9ZnVuY3Rpb24oTSl7UihNLHRoaXMpfSx2LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBNPW5ldyB2KG51bGwpO3JldHVybiB0aGlzLmNvcHkoTSksTX0sdi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihNKXtmb3IoO3RoaXMubGVuZ3RoPE07KXRoaXMud29yZHNb'@; put 'dGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuX3N0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sdi5wcm90b3R5cGUuX25v'@; put 'cm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LHR5cGVvZiBTeW1ib2w8InUiJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcil0cnl7di5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9k'@; put 'ZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09eH1jYXRjaHt2LnByb3RvdHlwZS5pbnNwZWN0PXh9ZWxzZSB2LnByb3RvdHlwZS5pbnNwZWN0PXg7ZnVuY3Rpb24geCgpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifXZhciBVPVsiIiwi'@; put 'MCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwi'@; put 'MDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAw'@; put 'MDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLEg9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sVj1bMCwwLDMzNTU0'@; put 'NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1'@; put 'MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBZKGssTSxCKXtCLm5lZ2F0aXZlPU0ubmVnYXRp'@; put 'dmVeay5uZWdhdGl2ZTt2YXIgSz1rLmxlbmd0aCtNLmxlbmd0aHwwO0IubGVuZ3RoPUssSz1LLTF8MDt2YXIgRz0wfGsud29yZHNbMF0sRD0wfE0ud29yZHNbMF0scD1HKkQsdWU9cC82NzEwODg2NHwwO0Iud29yZHNbMF09NjcxMDg4NjMmcDtmb3IodmFyIG5lPTE7bmU8SztuZSsrKXtmb3Io'@; put 'dmFyIF9lPXVlPj4+MjYsUGU9NjcxMDg4NjMmdWUsb3Q9TWF0aC5taW4obmUsTS5sZW5ndGgtMSksbHQ9TWF0aC5tYXgoMCxuZS1rLmxlbmd0aCsxKTtsdDw9b3Q7bHQrKylfZSs9KHA9KEc9MHxrLndvcmRzW25lLWx0fDBdKSooRD0wfE0ud29yZHNbbHRdKStQZSkvNjcxMDg4NjR8MCxQZT02'@; put 'NzEwODg2MyZwO0Iud29yZHNbbmVdPTB8UGUsdWU9MHxfZX1yZXR1cm4gMCE9PXVlP0Iud29yZHNbbmVdPTB8dWU6Qi5sZW5ndGgtLSxCLl9zdHJpcCgpfXYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKE0sQil7dmFyIEs7aWYoQj0wfEJ8fDEsMTY9PT0oTT1NfHwxMCl8fCJoZXgiPT09'@; put 'TSl7Sz0iIjtmb3IodmFyIEc9MCxEPTAscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXt2YXIgST10aGlzLndvcmRzW3BdLHVlPSgxNjc3NzIxNSYoSTw8R3xEKSkudG9TdHJpbmcoMTYpO0Q9ST4+PjI0LUcmMTY3NzcyMTUsKEcrPTIpPj0yNiYmKEctPTI2LHAtLSksSz0wIT09RHx8cCE9PXRoaXMu'@; put 'bGVuZ3RoLTE/VVs2LXVlLmxlbmd0aF0rdWUrSzp1ZStLfWZvcigwIT09RCYmKEs9RC50b1N0cmluZygxNikrSyk7Sy5sZW5ndGglQiE9PTA7KUs9IjAiK0s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoSz0iLSIrSyksS31pZihNPT09KDB8TSkmJk0+PTImJk08PTM2KXt2YXIgbmU9SFtN'@; put 'XSxfZT1WW01dO0s9IiI7dmFyIFBlPXRoaXMuY2xvbmUoKTtmb3IoUGUubmVnYXRpdmU9MDshUGUuaXNaZXJvKCk7KXt2YXIgb3Q9UGUubW9kcm4oX2UpLnRvU3RyaW5nKE0pO0s9KFBlPVBlLmlkaXZuKF9lKSkuaXNaZXJvKCk/b3QrSzpVW25lLW90Lmxlbmd0aF0rb3QrS31mb3IodGhpcy5p'@; put 'c1plcm8oKSYmKEs9IjAiK0spO0subGVuZ3RoJUIhPT0wOylLPSIwIitLO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEs9Ii0iK0spLEt9cyghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSx2LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBNPXRoaXMu'@; put 'd29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9NKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/TSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJnMoITEsIk51bWJlciBj'@; put 'YW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1NOk19LHYucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2LDIpfSxDJiYodi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oTSxCKXtyZXR1cm4g'@; put 'dGhpcy50b0FycmF5TGlrZShDLE0sQil9KSx2LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKE0sQil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksTSxCKX0sdi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oTSxCLEspe3RoaXMuX3N0cmlwKCk7dmFyIEc9dGhpcy5ieXRl'@; put 'TGVuZ3RoKCksRD1LfHxNYXRoLm1heCgxLEcpO3MoRzw9RCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLHMoRD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgcD1mdW5jdGlvbihNLEIpe3JldHVybiBNLmFsbG9jVW5zYWZlP00uYWxsb2NVbnNh'@; put 'ZmUoQik6bmV3IE0oQil9KE0sRCk7cmV0dXJuIHRoaXNbIl90b0FycmF5TGlrZSIrKCJsZSI9PT1CPyJMRSI6IkJFIildKHAsRykscH0sdi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlTEU9ZnVuY3Rpb24oTSxCKXtmb3IodmFyIEs9MCxHPTAsRD0wLHA9MDtEPHRoaXMubGVuZ3RoO0QrKyl7dmFy'@; put 'IEk9dGhpcy53b3Jkc1tEXTw8cHxHO01bSysrXT0yNTUmSSxLPE0ubGVuZ3RoJiYoTVtLKytdPUk+PjgmMjU1KSxLPE0ubGVuZ3RoJiYoTVtLKytdPUk+PjE2JjI1NSksNj09PXA/KEs8TS5sZW5ndGgmJihNW0srK109ST4+MjQmMjU1KSxHPTAscD0wKTooRz1JPj4+MjQscCs9Mil9aWYoSzxN'@; put 'Lmxlbmd0aClmb3IoTVtLKytdPUc7SzxNLmxlbmd0aDspTVtLKytdPTB9LHYucHJvdG90eXBlLl90b0FycmF5TGlrZUJFPWZ1bmN0aW9uKE0sQil7Zm9yKHZhciBLPU0ubGVuZ3RoLTEsRz0wLEQ9MCxwPTA7RDx0aGlzLmxlbmd0aDtEKyspe3ZhciBJPXRoaXMud29yZHNbRF08PHB8RztNW0st'@; put 'LV09MjU1JkksSz49MCYmKE1bSy0tXT1JPj44JjI1NSksSz49MCYmKE1bSy0tXT1JPj4xNiYyNTUpLDY9PT1wPyhLPj0wJiYoTVtLLS1dPUk+PjI0JjI1NSksRz0wLHA9MCk6KEc9ST4+PjI0LHArPTIpfWlmKEs+PTApZm9yKE1bSy0tXT1HO0s+PTA7KU1bSy0tXT0wfSx2LnByb3RvdHlwZS5f'@; put 'Y291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oTSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoTSl9OmZ1bmN0aW9uKE0pe3ZhciBCPU0sSz0wO3JldHVybiBCPj00MDk2JiYoSys9MTMsQj4+Pj0xMyksQj49NjQmJihLKz03LEI+Pj49NyksQj49OCYmKEsrPTQsQj4+Pj00KSxCPj0yJiYoSys9'@; put 'MixCPj4+PTIpLEsrQn0sdi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKE0pe2lmKDA9PT1NKXJldHVybiAyNjt2YXIgQj1NLEs9MDtyZXR1cm4hKDgxOTEmQikmJihLKz0xMyxCPj4+PTEzKSwhKDEyNyZCKSYmKEsrPTcsQj4+Pj03KSwhKDE1JkIpJiYoSys9NCxCPj4+PTQpLCEoMyZC'@; put 'KSYmKEsrPTIsQj4+Pj0yKSwhKDEmQikmJksrKyxLfSx2LnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQj10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStCfSx2LnByb3RvdHlwZS56ZXJvQml0cz1m'@; put 'dW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBNPTAsQj0wO0I8dGhpcy5sZW5ndGg7QisrKXt2YXIgSz10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0JdKTtpZihNKz1LLDI2IT09SylicmVha31yZXR1cm4gTX0sdi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5j'@; put 'dGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sdi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKE0pe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKE0pLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sdi5wcm90b3R5cGUuZnJvbVR3b3M9'@; put 'ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMudGVzdG4oTS0xKT90aGlzLm5vdG4oTSkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sdi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LHYucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVy'@; put 'biB0aGlzLmNsb25lKCkuaW5lZygpfSx2LnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSx2LnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKE0pe2Zvcig7dGhpcy5sZW5ndGg8TS5sZW5ndGg7KXRoaXMud29yZHNb'@; put 'dGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEI9MDtCPE0ubGVuZ3RoO0IrKyl0aGlzLndvcmRzW0JdPXRoaXMud29yZHNbQl18TS53b3Jkc1tCXTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sdi5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKE0pe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxNLm5l'@; put 'Z2F0aXZlKSksdGhpcy5pdW9yKE0pfSx2LnByb3RvdHlwZS5vcj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5sZW5ndGg+TS5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihNKTpNLmNsb25lKCkuaW9yKHRoaXMpfSx2LnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMubGVuZ3Ro'@; put 'Pk0ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKE0pOk0uY2xvbmUoKS5pdW9yKHRoaXMpfSx2LnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihNKXt2YXIgQjtCPXRoaXMubGVuZ3RoPk0ubGVuZ3RoP006dGhpcztmb3IodmFyIEs9MDtLPEIubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPXRoaXMu'@; put 'd29yZHNbS10mTS53b3Jkc1tLXTtyZXR1cm4gdGhpcy5sZW5ndGg9Qi5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sdi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihNKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8TS5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoTSl9LHYucHJvdG90eXBlLmFuZD1m'@; put 'dW5jdGlvbihNKXtyZXR1cm4gdGhpcy5sZW5ndGg+TS5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoTSk6TS5jbG9uZSgpLmlhbmQodGhpcyl9LHYucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMubGVuZ3RoPk0ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChNKTpNLmNs'@; put 'b25lKCkuaXVhbmQodGhpcyl9LHYucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKE0pe3ZhciBCLEs7dGhpcy5sZW5ndGg+TS5sZW5ndGg/KEI9dGhpcyxLPU0pOihCPU0sSz10aGlzKTtmb3IodmFyIEc9MDtHPEsubGVuZ3RoO0crKyl0aGlzLndvcmRzW0ddPUIud29yZHNbR11eSy53b3Jkc1tH'@; put 'XTtpZih0aGlzIT09Qilmb3IoO0c8Qi5sZW5ndGg7RysrKXRoaXMud29yZHNbR109Qi53b3Jkc1tHXTtyZXR1cm4gdGhpcy5sZW5ndGg9Qi5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sdi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihNKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8TS5uZWdh'@; put 'dGl2ZSkpLHRoaXMuaXV4b3IoTSl9LHYucHJvdG90eXBlLnhvcj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5sZW5ndGg+TS5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoTSk6TS5jbG9uZSgpLml4b3IodGhpcyl9LHYucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMubGVu'@; put 'Z3RoPk0ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihNKTpNLmNsb25lKCkuaXV4b3IodGhpcyl9LHYucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKE0pe3MoIm51bWJlciI9PXR5cGVvZiBNJiZNPj0wKTt2YXIgQj0wfE1hdGguY2VpbChNLzI2KSxLPU0lMjY7dGhpcy5fZXhwYW5kKEIpLEs+'@; put 'MCYmQi0tO2Zvcih2YXIgRz0wO0c8QjtHKyspdGhpcy53b3Jkc1tHXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tHXTtmb3IoSz4wJiYodGhpcy53b3Jkc1tHXT1+dGhpcy53b3Jkc1tHXSY2NzEwODg2Mz4+MjYtSyxHKyspO0c8dGhpcy5sZW5ndGg7RysrKXRoaXMud29yZHNbR109MDtyZXR1cm4g'@; put 'dGhpcy5fc3RyaXAoKX0sdi5wcm90b3R5cGUubm90bj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKE0pfSx2LnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKE0sQil7cygibnVtYmVyIj09dHlwZW9mIE0mJk0+PTApO3ZhciBLPU0vMjZ8MCxHPU0lMjY7cmV0dXJuIHRoaXMu'@; put 'X2V4cGFuZChLKzEpLHRoaXMud29yZHNbS109Qj90aGlzLndvcmRzW0tdfDE8PEc6dGhpcy53b3Jkc1tLXSZ+KDE8PEcpLHRoaXMuX3N0cmlwKCl9LHYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oTSl7dmFyIEIsSyxHO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09TS5uZWdhdGl2ZSlyZXR1'@; put 'cm4gdGhpcy5uZWdhdGl2ZT0wLEI9dGhpcy5pc3ViKE0pLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU0ubmVnYXRpdmUpcmV0dXJuIE0ubmVnYXRpdmU9MCxCPXRoaXMuaXN1YihNKSxNLm5lZ2F0aXZlPTEsQi5fbm9ybVNpZ24o'@; put 'KTt0aGlzLmxlbmd0aD5NLmxlbmd0aD8oSz10aGlzLEc9TSk6KEs9TSxHPXRoaXMpO2Zvcih2YXIgRD0wLHA9MDtwPEcubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPTY3MTA4ODYzJihCPSgwfEsud29yZHNbcF0pKygwfEcud29yZHNbcF0pK0QpLEQ9Qj4+PjI2O2Zvcig7MCE9PUQmJnA8Sy5s'@; put 'ZW5ndGg7cCsrKXRoaXMud29yZHNbcF09NjcxMDg4NjMmKEI9KDB8Sy53b3Jkc1twXSkrRCksRD1CPj4+MjY7aWYodGhpcy5sZW5ndGg9Sy5sZW5ndGgsMCE9PUQpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09RCx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoSyE9PXRoaXMpZm9yKDtwPEsubGVuZ3Ro'@; put 'O3ArKyl0aGlzLndvcmRzW3BdPUsud29yZHNbcF07cmV0dXJuIHRoaXN9LHYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihNKXt2YXIgQjtyZXR1cm4gMCE9PU0ubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhNLm5lZ2F0aXZlPTAsQj10aGlzLnN1YihNKSxNLm5lZ2F0aXZlXj0xLEIpOjA9'@; put 'PT1NLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLEI9TS5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLEIpOnRoaXMubGVuZ3RoPk0ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKE0pOk0uY2xvbmUoKS5pYWRkKHRoaXMpfSx2LnByb3RvdHlwZS5pc3ViPWZ1'@; put 'bmN0aW9uKE0pe2lmKDAhPT1NLm5lZ2F0aXZlKXtNLm5lZ2F0aXZlPTA7dmFyIEI9dGhpcy5pYWRkKE0pO3JldHVybiBNLm5lZ2F0aXZlPTEsQi5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChNKSx0aGlzLm5lZ2F0aXZl'@; put 'PTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgRyxELEs9dGhpcy5jbXAoTSk7aWYoMD09PUspcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO0s+MD8oRz10aGlzLEQ9TSk6KEc9TSxEPXRoaXMpO2Zvcih2YXIgcD0wLEk9MDtJPEQubGVuZ3Ro'@; put 'O0krKylwPShCPSgwfEcud29yZHNbSV0pLSgwfEQud29yZHNbSV0pK3ApPj4yNix0aGlzLndvcmRzW0ldPTY3MTA4ODYzJkI7Zm9yKDswIT09cCYmSTxHLmxlbmd0aDtJKyspcD0oQj0oMHxHLndvcmRzW0ldKStwKT4+MjYsdGhpcy53b3Jkc1tJXT02NzEwODg2MyZCO2lmKDA9PT1wJiZJPEcu'@; put 'bGVuZ3RoJiZHIT09dGhpcylmb3IoO0k8Ry5sZW5ndGg7SSsrKXRoaXMud29yZHNbSV09Ry53b3Jkc1tJXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsSSksRyE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuX3N0cmlwKCl9LHYucHJvdG90eXBlLnN1Yj1m'@; put 'dW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoTSl9O3ZhciBGPWZ1bmN0aW9uKE0sQixLKXt2YXIgdWUsbmUsX2UsRz1NLndvcmRzLEQ9Qi53b3JkcyxwPUsud29yZHMsST0wLFBlPTB8R1swXSxvdD04MTkxJlBlLGx0PVBlPj4+MTMsZHQ9MHxHWzFdLFJlPTgxOTEmZHQsYWU9'@; put 'ZHQ+Pj4xMyx4ZT0wfEdbMl0samU9ODE5MSZ4ZSxBZT14ZT4+PjEzLERlPTB8R1szXSxGZT04MTkxJkRlLGdlPURlPj4+MTMsY2U9MHxHWzRdLGhlPTgxOTEmY2Usd2U9Y2U+Pj4xMyxKZT0wfEdbNV0sdHQ9ODE5MSZKZSxLZT1KZT4+PjEzLCR0PTB8R1s2XSxSdD04MTkxJiR0LEx0PSR0Pj4+'@; put 'MTMsR3Q9MHxHWzddLGd0PTgxOTEmR3QsWHQ9R3Q+Pj4xMyxMcj0wfEdbOF0sbG49ODE5MSZMcixPbj1Mcj4+PjEzLFFyPTB8R1s5XSx0cj04MTkxJlFyLEhuPVFyPj4+MTMsT289MHxEWzBdLHVyPTgxOTEmT28sWm49T28+Pj4xMyxTbj0wfERbMV0seHI9ODE5MSZTbixUdD1Tbj4+PjEzLEFy'@; put 'PTB8RFsyXSxfbj04MTkxJkFyLFp0PUFyPj4+MTMsTm49MHxEWzNdLHB0PTgxOTEmTm4scG49Tm4+Pj4xMyxNaT0wfERbNF0sR2U9ODE5MSZNaSxVdD1NaT4+PjEzLHZyPTB8RFs1XSx4dD04MTkxJnZyLEJ0PXZyPj4+MTMsem49MHxEWzZdLEduPTgxOTEmem4seW49em4+Pj4xMyx2aT0wfERb'@; put 'N10scnI9ODE5MSZ2aSxocj12aT4+PjEzLHBvPTB8RFs4XSx2bj04MTkxJnBvLEJuPXBvPj4+MTMsamE9MHxEWzldLGpvPTgxOTEmamEsWHI9amE+Pj4xMztLLm5lZ2F0aXZlPU0ubmVnYXRpdmVeQi5uZWdhdGl2ZSxLLmxlbmd0aD0xOTt2YXIgZWE9KEkrKHVlPU1hdGguaW11bChvdCx1cikp'@; put 'fDApKygoODE5MSYobmU9KG5lPU1hdGguaW11bChvdCxabikpK01hdGguaW11bChsdCx1cil8MCkpPDwxMyl8MDtJPSgoX2U9TWF0aC5pbXVsKGx0LFpuKSkrKG5lPj4+MTMpfDApKyhlYT4+PjI2KXwwLGVhJj02NzEwODg2Myx1ZT1NYXRoLmltdWwoUmUsdXIpLG5lPShuZT1NYXRoLmltdWwo'@; put 'UmUsWm4pKStNYXRoLmltdWwoYWUsdXIpfDAsX2U9TWF0aC5pbXVsKGFlLFpuKTt2YXIgcmE9KEkrKHVlPXVlK01hdGguaW11bChvdCx4cil8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LFR0KXwwKStNYXRoLmltdWwobHQseHIpfDApKTw8MTMpfDA7ST0oKF9lPV9lK01h'@; put 'dGguaW11bChsdCxUdCl8MCkrKG5lPj4+MTMpfDApKyhyYT4+PjI2KXwwLHJhJj02NzEwODg2Myx1ZT1NYXRoLmltdWwoamUsdXIpLG5lPShuZT1NYXRoLmltdWwoamUsWm4pKStNYXRoLmltdWwoQWUsdXIpfDAsX2U9TWF0aC5pbXVsKEFlLFpuKSx1ZT11ZStNYXRoLmltdWwoUmUseHIpfDAs'@; put 'bmU9KG5lPW5lK01hdGguaW11bChSZSxUdCl8MCkrTWF0aC5pbXVsKGFlLHhyKXwwLF9lPV9lK01hdGguaW11bChhZSxUdCl8MDt2YXIgY2E9KEkrKHVlPXVlK01hdGguaW11bChvdCxfbil8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LFp0KXwwKStNYXRoLmltdWwobHQs'@; put 'X24pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCxadCl8MCkrKG5lPj4+MTMpfDApKyhjYT4+PjI2KXwwLGNhJj02NzEwODg2Myx1ZT1NYXRoLmltdWwoRmUsdXIpLG5lPShuZT1NYXRoLmltdWwoRmUsWm4pKStNYXRoLmltdWwoZ2UsdXIpfDAsX2U9TWF0aC5pbXVsKGdlLFpu'@; put 'KSx1ZT11ZStNYXRoLmltdWwoamUseHIpfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxUdCl8MCkrTWF0aC5pbXVsKEFlLHhyKXwwLF9lPV9lK01hdGguaW11bChBZSxUdCl8MCx1ZT11ZStNYXRoLmltdWwoUmUsX24pfDAsbmU9KG5lPW5lK01hdGguaW11bChSZSxadCl8MCkrTWF0aC5pbXVs'@; put 'KGFlLF9uKXwwLF9lPV9lK01hdGguaW11bChhZSxadCl8MDt2YXIgQ2k9KEkrKHVlPXVlK01hdGguaW11bChvdCxwdCl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LHBuKXwwKStNYXRoLmltdWwobHQscHQpfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCxw'@; put 'bil8MCkrKG5lPj4+MTMpfDApKyhDaT4+PjI2KXwwLENpJj02NzEwODg2Myx1ZT1NYXRoLmltdWwoaGUsdXIpLG5lPShuZT1NYXRoLmltdWwoaGUsWm4pKStNYXRoLmltdWwod2UsdXIpfDAsX2U9TWF0aC5pbXVsKHdlLFpuKSx1ZT11ZStNYXRoLmltdWwoRmUseHIpfDAsbmU9KG5lPW5lK01h'@; put 'dGguaW11bChGZSxUdCl8MCkrTWF0aC5pbXVsKGdlLHhyKXwwLF9lPV9lK01hdGguaW11bChnZSxUdCl8MCx1ZT11ZStNYXRoLmltdWwoamUsX24pfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxadCl8MCkrTWF0aC5pbXVsKEFlLF9uKXwwLF9lPV9lK01hdGguaW11bChBZSxadCl8MCx1ZT11'@; put 'ZStNYXRoLmltdWwoUmUscHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChSZSxwbil8MCkrTWF0aC5pbXVsKGFlLHB0KXwwLF9lPV9lK01hdGguaW11bChhZSxwbil8MDt2YXIgaG89KEkrKHVlPXVlK01hdGguaW11bChvdCxHZSl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90'@; put 'LFV0KXwwKStNYXRoLmltdWwobHQsR2UpfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCxVdCl8MCkrKG5lPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHQsdXIpLG5lPShuZT1NYXRoLmltdWwodHQsWm4pKStNYXRoLmltdWwoS2UsdXIp'@; put 'fDAsX2U9TWF0aC5pbXVsKEtlLFpuKSx1ZT11ZStNYXRoLmltdWwoaGUseHIpfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxUdCl8MCkrTWF0aC5pbXVsKHdlLHhyKXwwLF9lPV9lK01hdGguaW11bCh3ZSxUdCl8MCx1ZT11ZStNYXRoLmltdWwoRmUsX24pfDAsbmU9KG5lPW5lK01hdGguaW11'@; put 'bChGZSxadCl8MCkrTWF0aC5pbXVsKGdlLF9uKXwwLF9lPV9lK01hdGguaW11bChnZSxadCl8MCx1ZT11ZStNYXRoLmltdWwoamUscHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxwbil8MCkrTWF0aC5pbXVsKEFlLHB0KXwwLF9lPV9lK01hdGguaW11bChBZSxwbil8MCx1ZT11ZStNYXRo'@; put 'LmltdWwoUmUsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChSZSxVdCl8MCkrTWF0aC5pbXVsKGFlLEdlKXwwLF9lPV9lK01hdGguaW11bChhZSxVdCl8MDt2YXIgTWE9KEkrKHVlPXVlK01hdGguaW11bChvdCx4dCl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LEJ0KXww'@; put 'KStNYXRoLmltdWwobHQseHQpfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCxCdCl8MCkrKG5lPj4+MTMpfDApKyhNYT4+PjI2KXwwLE1hJj02NzEwODg2Myx1ZT1NYXRoLmltdWwoUnQsdXIpLG5lPShuZT1NYXRoLmltdWwoUnQsWm4pKStNYXRoLmltdWwoTHQsdXIpfDAsX2U9'@; put 'TWF0aC5pbXVsKEx0LFpuKSx1ZT11ZStNYXRoLmltdWwodHQseHIpfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCxUdCl8MCkrTWF0aC5pbXVsKEtlLHhyKXwwLF9lPV9lK01hdGguaW11bChLZSxUdCl8MCx1ZT11ZStNYXRoLmltdWwoaGUsX24pfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxa'@; put 'dCl8MCkrTWF0aC5pbXVsKHdlLF9uKXwwLF9lPV9lK01hdGguaW11bCh3ZSxadCl8MCx1ZT11ZStNYXRoLmltdWwoRmUscHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKGdlLHB0KXwwLF9lPV9lK01hdGguaW11bChnZSxwbil8MCx1ZT11ZStNYXRoLmltdWwo'@; put 'amUsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxVdCl8MCkrTWF0aC5pbXVsKEFlLEdlKXwwLF9lPV9lK01hdGguaW11bChBZSxVdCl8MCx1ZT11ZStNYXRoLmltdWwoUmUseHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChSZSxCdCl8MCkrTWF0aC5pbXVsKGFlLHh0KXwwLF9lPV9lK01h'@; put 'dGguaW11bChhZSxCdCl8MDt2YXIga3M9KEkrKHVlPXVlK01hdGguaW11bChvdCxHbil8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LHluKXwwKStNYXRoLmltdWwobHQsR24pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCx5bil8MCkrKG5lPj4+MTMpfDAp'@; put 'Kyhrcz4+PjI2KXwwLGtzJj02NzEwODg2Myx1ZT1NYXRoLmltdWwoZ3QsdXIpLG5lPShuZT1NYXRoLmltdWwoZ3QsWm4pKStNYXRoLmltdWwoWHQsdXIpfDAsX2U9TWF0aC5pbXVsKFh0LFpuKSx1ZT11ZStNYXRoLmltdWwoUnQseHIpfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCxUdCl8MCkr'@; put 'TWF0aC5pbXVsKEx0LHhyKXwwLF9lPV9lK01hdGguaW11bChMdCxUdCl8MCx1ZT11ZStNYXRoLmltdWwodHQsX24pfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCxadCl8MCkrTWF0aC5pbXVsKEtlLF9uKXwwLF9lPV9lK01hdGguaW11bChLZSxadCl8MCx1ZT11ZStNYXRoLmltdWwoaGUscHQp'@; put 'fDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxwbil8MCkrTWF0aC5pbXVsKHdlLHB0KXwwLF9lPV9lK01hdGguaW11bCh3ZSxwbil8MCx1ZT11ZStNYXRoLmltdWwoRmUsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChGZSxVdCl8MCkrTWF0aC5pbXVsKGdlLEdlKXwwLF9lPV9lK01hdGguaW11'@; put 'bChnZSxVdCl8MCx1ZT11ZStNYXRoLmltdWwoamUseHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxCdCl8MCkrTWF0aC5pbXVsKEFlLHh0KXwwLF9lPV9lK01hdGguaW11bChBZSxCdCl8MCx1ZT11ZStNYXRoLmltdWwoUmUsR24pfDAsbmU9KG5lPW5lK01hdGguaW11bChSZSx5bil8MCkr'@; put 'TWF0aC5pbXVsKGFlLEduKXwwLF9lPV9lK01hdGguaW11bChhZSx5bil8MDt2YXIgQmk9KEkrKHVlPXVlK01hdGguaW11bChvdCxycil8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LGhyKXwwKStNYXRoLmltdWwobHQscnIpfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGgu'@; put 'aW11bChsdCxocil8MCkrKG5lPj4+MTMpfDApKyhCaT4+PjI2KXwwLEJpJj02NzEwODg2Myx1ZT1NYXRoLmltdWwobG4sdXIpLG5lPShuZT1NYXRoLmltdWwobG4sWm4pKStNYXRoLmltdWwoT24sdXIpfDAsX2U9TWF0aC5pbXVsKE9uLFpuKSx1ZT11ZStNYXRoLmltdWwoZ3QseHIpfDAsbmU9'@; put 'KG5lPW5lK01hdGguaW11bChndCxUdCl8MCkrTWF0aC5pbXVsKFh0LHhyKXwwLF9lPV9lK01hdGguaW11bChYdCxUdCl8MCx1ZT11ZStNYXRoLmltdWwoUnQsX24pfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCxadCl8MCkrTWF0aC5pbXVsKEx0LF9uKXwwLF9lPV9lK01hdGguaW11bChMdCxa'@; put 'dCl8MCx1ZT11ZStNYXRoLmltdWwodHQscHQpfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCxwbil8MCkrTWF0aC5pbXVsKEtlLHB0KXwwLF9lPV9lK01hdGguaW11bChLZSxwbil8MCx1ZT11ZStNYXRoLmltdWwoaGUsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxVdCl8MCkrTWF0aC5p'@; put 'bXVsKHdlLEdlKXwwLF9lPV9lK01hdGguaW11bCh3ZSxVdCl8MCx1ZT11ZStNYXRoLmltdWwoRmUseHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChGZSxCdCl8MCkrTWF0aC5pbXVsKGdlLHh0KXwwLF9lPV9lK01hdGguaW11bChnZSxCdCl8MCx1ZT11ZStNYXRoLmltdWwoamUsR24pfDAsbmU9'@; put 'KG5lPW5lK01hdGguaW11bChqZSx5bil8MCkrTWF0aC5pbXVsKEFlLEduKXwwLF9lPV9lK01hdGguaW11bChBZSx5bil8MCx1ZT11ZStNYXRoLmltdWwoUmUscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bChSZSxocil8MCkrTWF0aC5pbXVsKGFlLHJyKXwwLF9lPV9lK01hdGguaW11bChhZSxo'@; put 'cil8MDt2YXIgdGE9KEkrKHVlPXVlK01hdGguaW11bChvdCx2bil8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LEJuKXwwKStNYXRoLmltdWwobHQsdm4pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCxCbil8MCkrKG5lPj4+MTMpfDApKyh0YT4+PjI2KXww'@; put 'LHRhJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIsdXIpLG5lPShuZT1NYXRoLmltdWwodHIsWm4pKStNYXRoLmltdWwoSG4sdXIpfDAsX2U9TWF0aC5pbXVsKEhuLFpuKSx1ZT11ZStNYXRoLmltdWwobG4seHIpfDAsbmU9KG5lPW5lK01hdGguaW11bChsbixUdCl8MCkrTWF0aC5pbXVsKE9u'@; put 'LHhyKXwwLF9lPV9lK01hdGguaW11bChPbixUdCl8MCx1ZT11ZStNYXRoLmltdWwoZ3QsX24pfDAsbmU9KG5lPW5lK01hdGguaW11bChndCxadCl8MCkrTWF0aC5pbXVsKFh0LF9uKXwwLF9lPV9lK01hdGguaW11bChYdCxadCl8MCx1ZT11ZStNYXRoLmltdWwoUnQscHQpfDAsbmU9KG5lPW5l'@; put 'K01hdGguaW11bChSdCxwbil8MCkrTWF0aC5pbXVsKEx0LHB0KXwwLF9lPV9lK01hdGguaW11bChMdCxwbil8MCx1ZT11ZStNYXRoLmltdWwodHQsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCxVdCl8MCkrTWF0aC5pbXVsKEtlLEdlKXwwLF9lPV9lK01hdGguaW11bChLZSxVdCl8MCx1'@; put 'ZT11ZStNYXRoLmltdWwoaGUseHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxCdCl8MCkrTWF0aC5pbXVsKHdlLHh0KXwwLF9lPV9lK01hdGguaW11bCh3ZSxCdCl8MCx1ZT11ZStNYXRoLmltdWwoRmUsR24pfDAsbmU9KG5lPW5lK01hdGguaW11bChGZSx5bil8MCkrTWF0aC5pbXVsKGdl'@; put 'LEduKXwwLF9lPV9lK01hdGguaW11bChnZSx5bil8MCx1ZT11ZStNYXRoLmltdWwoamUscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxocil8MCkrTWF0aC5pbXVsKEFlLHJyKXwwLF9lPV9lK01hdGguaW11bChBZSxocil8MCx1ZT11ZStNYXRoLmltdWwoUmUsdm4pfDAsbmU9KG5lPW5l'@; put 'K01hdGguaW11bChSZSxCbil8MCkrTWF0aC5pbXVsKGFlLHZuKXwwLF9lPV9lK01hdGguaW11bChhZSxCbil8MDt2YXIgTXI9KEkrKHVlPXVlK01hdGguaW11bChvdCxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKG90LFhyKXwwKStNYXRoLmltdWwobHQsam8pfDApKTw8'@; put 'MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChsdCxYcil8MCkrKG5lPj4+MTMpfDApKyhNcj4+PjI2KXwwLE1yJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIseHIpLG5lPShuZT1NYXRoLmltdWwodHIsVHQpKStNYXRoLmltdWwoSG4seHIpfDAsX2U9TWF0aC5pbXVsKEhuLFR0KSx1ZT11ZStN'@; put 'YXRoLmltdWwobG4sX24pfDAsbmU9KG5lPW5lK01hdGguaW11bChsbixadCl8MCkrTWF0aC5pbXVsKE9uLF9uKXwwLF9lPV9lK01hdGguaW11bChPbixadCl8MCx1ZT11ZStNYXRoLmltdWwoZ3QscHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChndCxwbil8MCkrTWF0aC5pbXVsKFh0LHB0KXww'@; put 'LF9lPV9lK01hdGguaW11bChYdCxwbil8MCx1ZT11ZStNYXRoLmltdWwoUnQsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCxVdCl8MCkrTWF0aC5pbXVsKEx0LEdlKXwwLF9lPV9lK01hdGguaW11bChMdCxVdCl8MCx1ZT11ZStNYXRoLmltdWwodHQseHQpfDAsbmU9KG5lPW5lK01hdGgu'@; put 'aW11bCh0dCxCdCl8MCkrTWF0aC5pbXVsKEtlLHh0KXwwLF9lPV9lK01hdGguaW11bChLZSxCdCl8MCx1ZT11ZStNYXRoLmltdWwoaGUsR24pfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSx5bil8MCkrTWF0aC5pbXVsKHdlLEduKXwwLF9lPV9lK01hdGguaW11bCh3ZSx5bil8MCx1ZT11ZStN'@; put 'YXRoLmltdWwoRmUscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bChGZSxocil8MCkrTWF0aC5pbXVsKGdlLHJyKXwwLF9lPV9lK01hdGguaW11bChnZSxocil8MCx1ZT11ZStNYXRoLmltdWwoamUsdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bChqZSxCbil8MCkrTWF0aC5pbXVsKEFlLHZuKXww'@; put 'LF9lPV9lK01hdGguaW11bChBZSxCbil8MDt2YXIgRnM9KEkrKHVlPXVlK01hdGguaW11bChSZSxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKFJlLFhyKXwwKStNYXRoLmltdWwoYWUsam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChhZSxYcil8MCkrKG5l'@; put 'Pj4+MTMpfDApKyhGcz4+PjI2KXwwLEZzJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIsX24pLG5lPShuZT1NYXRoLmltdWwodHIsWnQpKStNYXRoLmltdWwoSG4sX24pfDAsX2U9TWF0aC5pbXVsKEhuLFp0KSx1ZT11ZStNYXRoLmltdWwobG4scHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChs'@; put 'bixwbil8MCkrTWF0aC5pbXVsKE9uLHB0KXwwLF9lPV9lK01hdGguaW11bChPbixwbil8MCx1ZT11ZStNYXRoLmltdWwoZ3QsR2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChndCxVdCl8MCkrTWF0aC5pbXVsKFh0LEdlKXwwLF9lPV9lK01hdGguaW11bChYdCxVdCl8MCx1ZT11ZStNYXRoLmlt'@; put 'dWwoUnQseHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCxCdCl8MCkrTWF0aC5pbXVsKEx0LHh0KXwwLF9lPV9lK01hdGguaW11bChMdCxCdCl8MCx1ZT11ZStNYXRoLmltdWwodHQsR24pfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCx5bil8MCkrTWF0aC5pbXVsKEtlLEduKXwwLF9lPV9l'@; put 'K01hdGguaW11bChLZSx5bil8MCx1ZT11ZStNYXRoLmltdWwoaGUscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxocil8MCkrTWF0aC5pbXVsKHdlLHJyKXwwLF9lPV9lK01hdGguaW11bCh3ZSxocil8MCx1ZT11ZStNYXRoLmltdWwoRmUsdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bChG'@; put 'ZSxCbil8MCkrTWF0aC5pbXVsKGdlLHZuKXwwLF9lPV9lK01hdGguaW11bChnZSxCbil8MDt2YXIgJGk9KEkrKHVlPXVlK01hdGguaW11bChqZSxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKGplLFhyKXwwKStNYXRoLmltdWwoQWUsam8pfDApKTw8MTMpfDA7ST0oKF9l'@; put 'PV9lK01hdGguaW11bChBZSxYcil8MCkrKG5lPj4+MTMpfDApKygkaT4+PjI2KXwwLCRpJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIscHQpLG5lPShuZT1NYXRoLmltdWwodHIscG4pKStNYXRoLmltdWwoSG4scHQpfDAsX2U9TWF0aC5pbXVsKEhuLHBuKSx1ZT11ZStNYXRoLmltdWwobG4s'@; put 'R2UpfDAsbmU9KG5lPW5lK01hdGguaW11bChsbixVdCl8MCkrTWF0aC5pbXVsKE9uLEdlKXwwLF9lPV9lK01hdGguaW11bChPbixVdCl8MCx1ZT11ZStNYXRoLmltdWwoZ3QseHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChndCxCdCl8MCkrTWF0aC5pbXVsKFh0LHh0KXwwLF9lPV9lK01hdGgu'@; put 'aW11bChYdCxCdCl8MCx1ZT11ZStNYXRoLmltdWwoUnQsR24pfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCx5bil8MCkrTWF0aC5pbXVsKEx0LEduKXwwLF9lPV9lK01hdGguaW11bChMdCx5bil8MCx1ZT11ZStNYXRoLmltdWwodHQscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCxocil8'@; put 'MCkrTWF0aC5pbXVsKEtlLHJyKXwwLF9lPV9lK01hdGguaW11bChLZSxocil8MCx1ZT11ZStNYXRoLmltdWwoaGUsdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bChoZSxCbil8MCkrTWF0aC5pbXVsKHdlLHZuKXwwLF9lPV9lK01hdGguaW11bCh3ZSxCbil8MDt2YXIgX3M9KEkrKHVlPXVlK01h'@; put 'dGguaW11bChGZSxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKEZlLFhyKXwwKStNYXRoLmltdWwoZ2Usam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChnZSxYcil8MCkrKG5lPj4+MTMpfDApKyhfcz4+PjI2KXwwLF9zJj02NzEwODg2Myx1ZT1NYXRoLmlt'@; put 'dWwodHIsR2UpLG5lPShuZT1NYXRoLmltdWwodHIsVXQpKStNYXRoLmltdWwoSG4sR2UpfDAsX2U9TWF0aC5pbXVsKEhuLFV0KSx1ZT11ZStNYXRoLmltdWwobG4seHQpfDAsbmU9KG5lPW5lK01hdGguaW11bChsbixCdCl8MCkrTWF0aC5pbXVsKE9uLHh0KXwwLF9lPV9lK01hdGguaW11bChP'@; put 'bixCdCl8MCx1ZT11ZStNYXRoLmltdWwoZ3QsR24pfDAsbmU9KG5lPW5lK01hdGguaW11bChndCx5bil8MCkrTWF0aC5pbXVsKFh0LEduKXwwLF9lPV9lK01hdGguaW11bChYdCx5bil8MCx1ZT11ZStNYXRoLmltdWwoUnQscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCxocil8MCkrTWF0'@; put 'aC5pbXVsKEx0LHJyKXwwLF9lPV9lK01hdGguaW11bChMdCxocil8MCx1ZT11ZStNYXRoLmltdWwodHQsdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bCh0dCxCbil8MCkrTWF0aC5pbXVsKEtlLHZuKXwwLF9lPV9lK01hdGguaW11bChLZSxCbil8MDt2YXIganM9KEkrKHVlPXVlK01hdGguaW11'@; put 'bChoZSxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKGhlLFhyKXwwKStNYXRoLmltdWwod2Usam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bCh3ZSxYcil8MCkrKG5lPj4+MTMpfDApKyhqcz4+PjI2KXwwLGpzJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIs'@; put 'eHQpLG5lPShuZT1NYXRoLmltdWwodHIsQnQpKStNYXRoLmltdWwoSG4seHQpfDAsX2U9TWF0aC5pbXVsKEhuLEJ0KSx1ZT11ZStNYXRoLmltdWwobG4sR24pfDAsbmU9KG5lPW5lK01hdGguaW11bChsbix5bil8MCkrTWF0aC5pbXVsKE9uLEduKXwwLF9lPV9lK01hdGguaW11bChPbix5bil8'@; put 'MCx1ZT11ZStNYXRoLmltdWwoZ3QscnIpfDAsbmU9KG5lPW5lK01hdGguaW11bChndCxocil8MCkrTWF0aC5pbXVsKFh0LHJyKXwwLF9lPV9lK01hdGguaW11bChYdCxocil8MCx1ZT11ZStNYXRoLmltdWwoUnQsdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bChSdCxCbil8MCkrTWF0aC5pbXVs'@; put 'KEx0LHZuKXwwLF9lPV9lK01hdGguaW11bChMdCxCbil8MDt2YXIgQ2w9KEkrKHVlPXVlK01hdGguaW11bCh0dCxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKHR0LFhyKXwwKStNYXRoLmltdWwoS2Usam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChLZSxY'@; put 'cil8MCkrKG5lPj4+MTMpfDApKyhDbD4+PjI2KXwwLENsJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIsR24pLG5lPShuZT1NYXRoLmltdWwodHIseW4pKStNYXRoLmltdWwoSG4sR24pfDAsX2U9TWF0aC5pbXVsKEhuLHluKSx1ZT11ZStNYXRoLmltdWwobG4scnIpfDAsbmU9KG5lPW5lK01h'@; put 'dGguaW11bChsbixocil8MCkrTWF0aC5pbXVsKE9uLHJyKXwwLF9lPV9lK01hdGguaW11bChPbixocil8MCx1ZT11ZStNYXRoLmltdWwoZ3Qsdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bChndCxCbil8MCkrTWF0aC5pbXVsKFh0LHZuKXwwLF9lPV9lK01hdGguaW11bChYdCxCbil8MDt2YXIg'@; put 'VGk9KEkrKHVlPXVlK01hdGguaW11bChSdCxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKFJ0LFhyKXwwKStNYXRoLmltdWwoTHQsam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChMdCxYcil8MCkrKG5lPj4+MTMpfDApKyhUaT4+PjI2KXwwLFRpJj02NzEw'@; put 'ODg2Myx1ZT1NYXRoLmltdWwodHIscnIpLG5lPShuZT1NYXRoLmltdWwodHIsaHIpKStNYXRoLmltdWwoSG4scnIpfDAsX2U9TWF0aC5pbXVsKEhuLGhyKSx1ZT11ZStNYXRoLmltdWwobG4sdm4pfDAsbmU9KG5lPW5lK01hdGguaW11bChsbixCbil8MCkrTWF0aC5pbXVsKE9uLHZuKXwwLF9l'@; put 'PV9lK01hdGguaW11bChPbixCbil8MDt2YXIgV249KEkrKHVlPXVlK01hdGguaW11bChndCxqbyl8MCl8MCkrKCg4MTkxJihuZT0obmU9bmUrTWF0aC5pbXVsKGd0LFhyKXwwKStNYXRoLmltdWwoWHQsam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChYdCxYcil8MCkrKG5lPj4+'@; put 'MTMpfDApKyhXbj4+PjI2KXwwLFduJj02NzEwODg2Myx1ZT1NYXRoLmltdWwodHIsdm4pLG5lPShuZT1NYXRoLmltdWwodHIsQm4pKStNYXRoLmltdWwoSG4sdm4pfDAsX2U9TWF0aC5pbXVsKEhuLEJuKTt2YXIgUWg9KEkrKHVlPXVlK01hdGguaW11bChsbixqbyl8MCl8MCkrKCg4MTkxJihu'@; put 'ZT0obmU9bmUrTWF0aC5pbXVsKGxuLFhyKXwwKStNYXRoLmltdWwoT24sam8pfDApKTw8MTMpfDA7ST0oKF9lPV9lK01hdGguaW11bChPbixYcil8MCkrKG5lPj4+MTMpfDApKyhRaD4+PjI2KXwwLFFoJj02NzEwODg2Mzt2YXIgZGM9KEkrKHVlPU1hdGguaW11bCh0cixqbykpfDApKygoODE5'@; put 'MSYobmU9KG5lPU1hdGguaW11bCh0cixYcikpK01hdGguaW11bChIbixqbyl8MCkpPDwxMyl8MDtyZXR1cm4gST0oKF9lPU1hdGguaW11bChIbixYcikpKyhuZT4+PjEzKXwwKSsoZGM+Pj4yNil8MCxkYyY9NjcxMDg4NjMscFswXT1lYSxwWzFdPXJhLHBbMl09Y2EscFszXT1DaSxwWzRdPWhv'@; put 'LHBbNV09TWEscFs2XT1rcyxwWzddPUJpLHBbOF09dGEscFs5XT1NcixwWzEwXT1GcyxwWzExXT0kaSxwWzEyXT1fcyxwWzEzXT1qcyxwWzE0XT1DbCxwWzE1XT1UaSxwWzE2XT1XbixwWzE3XT1RaCxwWzE4XT1kYywwIT09SSYmKHBbMTldPUksSy5sZW5ndGgrKyksS307ZnVuY3Rpb24gVyhr'@; put 'LE0sQil7Qi5uZWdhdGl2ZT1NLm5lZ2F0aXZlXmsubmVnYXRpdmUsQi5sZW5ndGg9ay5sZW5ndGgrTS5sZW5ndGg7Zm9yKHZhciBLPTAsRz0wLEQ9MDtEPEIubGVuZ3RoLTE7RCsrKXt2YXIgcD1HO0c9MDtmb3IodmFyIEk9NjcxMDg4NjMmSyx1ZT1NYXRoLm1pbihELE0ubGVuZ3RoLTEpLG5l'@; put 'PU1hdGgubWF4KDAsRC1rLmxlbmd0aCsxKTtuZTw9dWU7bmUrKyl7dmFyIGx0PSgwfGsud29yZHNbRC1uZV0pKigwfE0ud29yZHNbbmVdKSxkdD02NzEwODg2MyZsdDtJPTY3MTA4ODYzJihkdD1kdCtJfDApLEcrPShwPShwPXArKGx0LzY3MTA4ODY0fDApfDApKyhkdD4+PjI2KXwwKT4+PjI2'@; put 'LHAmPTY3MTA4ODYzfUIud29yZHNbRF09SSxLPXAscD1HfXJldHVybiAwIT09Sz9CLndvcmRzW0RdPUs6Qi5sZW5ndGgtLSxCLl9zdHJpcCgpfWZ1bmN0aW9uIHEoayxNLEIpe3JldHVybiBXKGssTSxCKX1mdW5jdGlvbiByZShrLE0pe3RoaXMueD1rLHRoaXMueT1NfU1hdGguaW11bHx8KEY9'@; put 'WSksdi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oTSxCKXt2YXIgRz10aGlzLmxlbmd0aCtNLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1NLmxlbmd0aD9GKHRoaXMsTSxCKTpHPDYzP1kodGhpcyxNLEIpOkc8MTAyND9XKHRoaXMsTSxCKTpxKHRoaXMsTSxCKX0scmUu'@; put 'cHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oTSl7Zm9yKHZhciBCPW5ldyBBcnJheShNKSxLPXYucHJvdG90eXBlLl9jb3VudEJpdHMoTSktMSxHPTA7RzxNO0crKylCW0ddPXRoaXMucmV2QmluKEcsSyxNKTtyZXR1cm4gQn0scmUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihNLEIsSyl7'@; put 'aWYoMD09PU18fE09PT1LLTEpcmV0dXJuIE07Zm9yKHZhciBHPTAsRD0wO0Q8QjtEKyspR3w9KDEmTSk8PEItRC0xLE0+Pj0xO3JldHVybiBHfSxyZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihNLEIsSyxHLEQscCl7Zm9yKHZhciBJPTA7STxwO0krKylHW0ldPUJbTVtJXV0sRFtJXT1L'@; put 'W01bSV1dfSxyZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKE0sQixLLEcsRCxwKXt0aGlzLnBlcm11dGUocCxNLEIsSyxHLEQpO2Zvcih2YXIgST0xO0k8RDtJPDw9MSlmb3IodmFyIHVlPUk8PDEsbmU9TWF0aC5jb3MoMipNYXRoLlBJL3VlKSxfZT1NYXRoLnNpbigyKk1hdGguUEkv'@; put 'dWUpLFBlPTA7UGU8RDtQZSs9dWUpZm9yKHZhciBvdD1uZSxsdD1fZSxkdD0wO2R0PEk7ZHQrKyl7dmFyIFJlPUtbUGUrZHRdLGFlPUdbUGUrZHRdLHhlPUtbUGUrZHQrSV0samU9R1tQZStkdCtJXSxBZT1vdCp4ZS1sdCpqZTtqZT1vdCpqZStsdCp4ZSxLW1BlK2R0XT1SZSsoeGU9QWUpLEdb'@; put 'UGUrZHRdPWFlK2plLEtbUGUrZHQrSV09UmUteGUsR1tQZStkdCtJXT1hZS1qZSxkdCE9PXVlJiYoQWU9bmUqb3QtX2UqbHQsbHQ9bmUqbHQrX2Uqb3Qsb3Q9QWUpfX0scmUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKE0sQil7dmFyIEs9MXxNYXRoLm1heChCLE0pLEc9MSZLLEQ9'@; put 'MDtmb3IoSz1LLzJ8MDtLO0s+Pj49MSlEKys7cmV0dXJuIDE8PEQrMStHfSxyZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKE0sQixLKXtpZighKEs8PTEpKWZvcih2YXIgRz0wO0c8Sy8yO0crKyl7dmFyIEQ9TVtHXTtNW0ddPU1bSy1HLTFdLE1bSy1HLTFdPUQsRD1CW0ddLEJbR109'@; put 'LUJbSy1HLTFdLEJbSy1HLTFdPS1EfX0scmUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihNLEIpe2Zvcih2YXIgSz0wLEc9MDtHPEIvMjtHKyspe3ZhciBEPTgxOTIqTWF0aC5yb3VuZChNWzIqRysxXS9CKStNYXRoLnJvdW5kKE1bMipHXS9CKStLO01bR109NjcxMDg4NjMmRCxL'@; put 'PUQ8NjcxMDg4NjQ/MDpELzY3MTA4ODY0fDB9cmV0dXJuIE19LHJlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKE0sQixLLEcpe2Zvcih2YXIgRD0wLHA9MDtwPEI7cCsrKUtbMipwXT04MTkxJihEKz0wfE1bcF0pLEtbMipwKzFdPTgxOTEmKEQ+Pj49MTMpLEQ+Pj49MTM7Zm9yKHA9'@; put 'MipCO3A8RzsrK3ApS1twXT0wO3MoMD09PUQpLHMoISgtODE5MiZEKSl9LHJlLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKE0pe2Zvcih2YXIgQj1uZXcgQXJyYXkoTSksSz0wO0s8TTtLKyspQltLXT0wO3JldHVybiBCfSxyZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihNLEIsSyl7dmFyIEc9'@; put 'Mip0aGlzLmd1ZXNzTGVuMTNiKE0ubGVuZ3RoLEIubGVuZ3RoKSxEPXRoaXMubWFrZVJCVChHKSxwPXRoaXMuc3R1YihHKSxJPW5ldyBBcnJheShHKSx1ZT1uZXcgQXJyYXkoRyksbmU9bmV3IEFycmF5KEcpLF9lPW5ldyBBcnJheShHKSxQZT1uZXcgQXJyYXkoRyksb3Q9bmV3IEFycmF5KEcp'@; put 'LGx0PUsud29yZHM7bHQubGVuZ3RoPUcsdGhpcy5jb252ZXJ0MTNiKE0ud29yZHMsTS5sZW5ndGgsSSxHKSx0aGlzLmNvbnZlcnQxM2IoQi53b3JkcyxCLmxlbmd0aCxfZSxHKSx0aGlzLnRyYW5zZm9ybShJLHAsdWUsbmUsRyxEKSx0aGlzLnRyYW5zZm9ybShfZSxwLFBlLG90LEcsRCk7Zm9y'@; put 'KHZhciBkdD0wO2R0PEc7ZHQrKyl7dmFyIFJlPXVlW2R0XSpQZVtkdF0tbmVbZHRdKm90W2R0XTtuZVtkdF09dWVbZHRdKm90W2R0XStuZVtkdF0qUGVbZHRdLHVlW2R0XT1SZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUodWUsbmUsRyksdGhpcy50cmFuc2Zvcm0odWUsbmUsbHQscCxHLEQpLHRo'@; put 'aXMuY29uanVnYXRlKGx0LHAsRyksdGhpcy5ub3JtYWxpemUxM2IobHQsRyksSy5uZWdhdGl2ZT1NLm5lZ2F0aXZlXkIubmVnYXRpdmUsSy5sZW5ndGg9TS5sZW5ndGgrQi5sZW5ndGgsSy5fc3RyaXAoKX0sdi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE0pe3ZhciBCPW5ldyB2KG51bGwpO3Jl'@; put 'dHVybiBCLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtNLmxlbmd0aCksdGhpcy5tdWxUbyhNLEIpfSx2LnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKE0pe3ZhciBCPW5ldyB2KG51bGwpO3JldHVybiBCLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtNLmxlbmd0aCkscSh0aGlzLE0s'@; put 'Qil9LHYucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhNLHRoaXMpfSx2LnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihNKXt2YXIgQj1NPDA7QiYmKE09LU0pLHMoIm51bWJlciI9PXR5cGVvZiBNKSxzKE08NjcxMDg4NjQpO2Zvcih2YXIgSz0w'@; put 'LEc9MDtHPHRoaXMubGVuZ3RoO0crKyl7dmFyIEQ9KDB8dGhpcy53b3Jkc1tHXSkqTSxwPSg2NzEwODg2MyZEKSsoNjcxMDg4NjMmSyk7Sz4+PTI2LEsrPUQvNjcxMDg4NjR8MCxLKz1wPj4+MjYsdGhpcy53b3Jkc1tHXT02NzEwODg2MyZwfXJldHVybiAwIT09SyYmKHRoaXMud29yZHNbR109'@; put 'Syx0aGlzLmxlbmd0aCsrKSwwPT09TSYmKHRoaXMubGVuZ3RoPTEsdGhpcy5fbm9ybVNpZ24oKSksQj90aGlzLmluZWcoKTp0aGlzfSx2LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oTSl9LHYucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3Jl'@; put 'dHVybiB0aGlzLm11bCh0aGlzKX0sdi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sdi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE0pe3ZhciBCPWZ1bmN0aW9uIHooayl7Zm9yKHZhciBNPW5ldyBBcnJheShrLmJpdExlbmd0aCgpKSxC'@; put 'PTA7QjxNLmxlbmd0aDtCKyspTVtCXT1rLndvcmRzW0IvMjZ8MF0+Pj5CJTI2JjE7cmV0dXJuIE19KE0pO2lmKDA9PT1CLmxlbmd0aClyZXR1cm4gbmV3IHYoMSk7Zm9yKHZhciBLPXRoaXMsRz0wO0c8Qi5sZW5ndGgmJjA9PT1CW0ddO0crKyxLPUsuc3FyKCkpO2lmKCsrRzxCLmxlbmd0aClm'@; put 'b3IodmFyIEQ9Sy5zcXIoKTtHPEIubGVuZ3RoO0crKyxEPUQuc3FyKCkpMCE9PUJbR10mJihLPUsubXVsKEQpKTtyZXR1cm4gS30sdi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKE0pe3MoIm51bWJlciI9PXR5cGVvZiBNJiZNPj0wKTt2YXIgRCxCPU0lMjYsSz0oTS1CKS8yNixHPTY3MTA4'@; put 'ODYzPj4+MjYtQjw8MjYtQjtpZigwIT09Qil7dmFyIHA9MDtmb3IoRD0wO0Q8dGhpcy5sZW5ndGg7RCsrKXt2YXIgST10aGlzLndvcmRzW0RdJkc7dGhpcy53b3Jkc1tEXT0oMHx0aGlzLndvcmRzW0RdKS1JPDxCfHAscD1JPj4+MjYtQn1wJiYodGhpcy53b3Jkc1tEXT1wLHRoaXMubGVuZ3Ro'@; put 'KyspfWlmKDAhPT1LKXtmb3IoRD10aGlzLmxlbmd0aC0xO0Q+PTA7RC0tKXRoaXMud29yZHNbRCtLXT10aGlzLndvcmRzW0RdO2ZvcihEPTA7RDxLO0QrKyl0aGlzLndvcmRzW0RdPTA7dGhpcy5sZW5ndGgrPUt9cmV0dXJuIHRoaXMuX3N0cmlwKCl9LHYucHJvdG90eXBlLmlzaGxuPWZ1bmN0'@; put 'aW9uKE0pe3JldHVybiBzKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihNKX0sdi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKE0sQixLKXt2YXIgRztzKCJudW1iZXIiPT10eXBlb2YgTSYmTT49MCksRz1CPyhCLUIlMjYpLzI2OjA7dmFyIEQ9TSUyNixwPU1hdGgubWluKChNLUQp'@; put 'LzI2LHRoaXMubGVuZ3RoKSxJPTY3MTA4ODYzXjY3MTA4ODYzPj4+RDw8RCx1ZT1LO2lmKEctPXAsRz1NYXRoLm1heCgwLEcpLHVlKXtmb3IodmFyIG5lPTA7bmU8cDtuZSsrKXVlLndvcmRzW25lXT10aGlzLndvcmRzW25lXTt1ZS5sZW5ndGg9cH1pZigwIT09cClpZih0aGlzLmxlbmd0aD5w'@; put 'KWZvcih0aGlzLmxlbmd0aC09cCxuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09dGhpcy53b3Jkc1tuZStwXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBfZT0wO2ZvcihuZT10aGlzLmxlbmd0aC0xO25lPj0wJiYoMCE9PV9lfHxuZT49Ryk7'@; put 'bmUtLSl7dmFyIFBlPTB8dGhpcy53b3Jkc1tuZV07dGhpcy53b3Jkc1tuZV09X2U8PDI2LUR8UGU+Pj5ELF9lPVBlJkl9cmV0dXJuIHVlJiYwIT09X2UmJih1ZS53b3Jkc1t1ZS5sZW5ndGgrK109X2UpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0'@; put 'aGlzLl9zdHJpcCgpfSx2LnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihNLEIsSyl7cmV0dXJuIHMoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKE0sQixLKX0sdi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKE0pfSx2LnByb3RvdHlw'@; put 'ZS51c2hsbj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihNKX0sdi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKE0pfSx2LnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hy'@; put 'bihNKX0sdi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oTSl7cygibnVtYmVyIj09dHlwZW9mIE0mJk0+PTApO3ZhciBCPU0lMjYsSz0oTS1CKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1LfHwhKHRoaXMud29yZHNbS10mMTw8QikpfSx2LnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oTSl7'@; put 'cygibnVtYmVyIj09dHlwZW9mIE0mJk0+PTApO3ZhciBCPU0lMjYsSz0oTS1CKS8yNjtyZXR1cm4gcygwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PUs/dGhpczooMCE9PUImJksrKyx0aGlzLmxlbmd0aD1N'@; put 'YXRoLm1pbihLLHRoaXMubGVuZ3RoKSwwIT09QiYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+Qjw8QiksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuX3N0cmlwKCkpfSx2LnByb3RvdHlwZS5tYXNr'@; put 'bj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihNKX0sdi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oTSl7cmV0dXJuIHMoIm51bWJlciI9PXR5cGVvZiBNKSxzKE08NjcxMDg4NjQpLE08MD90aGlzLmlzdWJuKC1NKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5s'@; put 'ZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPD1NPyh0aGlzLndvcmRzWzBdPU0tKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihNKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oTSl9LHYucHJvdG90eXBl'@; put 'Ll9pYWRkbj1mdW5jdGlvbihNKXt0aGlzLndvcmRzWzBdKz1NO2Zvcih2YXIgQj0wO0I8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQl0+PTY3MTA4ODY0O0IrKyl0aGlzLndvcmRzW0JdLT02NzEwODg2NCxCPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW0IrMV09MTp0aGlzLndvcmRzW0Ir'@; put 'MV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsQisxKSx0aGlzfSx2LnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihNKXtpZihzKCJudW1iZXIiPT10eXBlb2YgTSkscyhNPDY3MTA4ODY0KSxNPDApcmV0dXJuIHRoaXMuaWFkZG4oLU0pO2lmKDAhPT10aGlzLm5l'@; put 'Z2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihNKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1NLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vs'@; put 'c2UgZm9yKHZhciBCPTA7Qjx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tCXTwwO0IrKyl0aGlzLndvcmRzW0JdKz02NzEwODg2NCx0aGlzLndvcmRzW0IrMV0tPTE7cmV0dXJuIHRoaXMuX3N0cmlwKCl9LHYucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5p'@; put 'YWRkbihNKX0sdi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKE0pfSx2LnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSx2LnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5j'@; put 'bG9uZSgpLmlhYnMoKX0sdi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKE0sQixLKXt2YXIgRDt0aGlzLl9leHBhbmQoTS5sZW5ndGgrSyk7dmFyIHAsST0wO2ZvcihEPTA7RDxNLmxlbmd0aDtEKyspe3A9KDB8dGhpcy53b3Jkc1tEK0tdKStJO3ZhciB1ZT0oMHxNLndvcmRzW0Rd'@; put 'KSpCO0k9KChwLT02NzEwODg2MyZ1ZSk+PjI2KS0odWUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tEK0tdPTY3MTA4ODYzJnB9Zm9yKDtEPHRoaXMubGVuZ3RoLUs7RCsrKUk9KHA9KDB8dGhpcy53b3Jkc1tEK0tdKStJKT4+MjYsdGhpcy53b3Jkc1tEK0tdPTY3MTA4ODYzJnA7aWYoMD09PUkp'@; put 'cmV0dXJuIHRoaXMuX3N0cmlwKCk7Zm9yKHMoLTE9PT1JKSxJPTAsRD0wO0Q8dGhpcy5sZW5ndGg7RCsrKUk9KHA9LSgwfHRoaXMud29yZHNbRF0pK0kpPj4yNix0aGlzLndvcmRzW0RdPTY3MTA4ODYzJnA7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLl9zdHJpcCgpfSx2LnByb3RvdHlw'@; put 'ZS5fd29yZERpdj1mdW5jdGlvbihNLEIpe3ZhciBLLEc9dGhpcy5jbG9uZSgpLEQ9TSxwPTB8RC53b3Jkc1tELmxlbmd0aC0xXTswIT0oSz0yNi10aGlzLl9jb3VudEJpdHMocCkpJiYoRD1ELnVzaGxuKEspLEcuaXVzaGxuKEspLHA9MHxELndvcmRzW0QubGVuZ3RoLTFdKTt2YXIgbmUsdWU9'@; put 'Ry5sZW5ndGgtRC5sZW5ndGg7aWYoIm1vZCIhPT1CKXsobmU9bmV3IHYobnVsbCkpLmxlbmd0aD11ZSsxLG5lLndvcmRzPW5ldyBBcnJheShuZS5sZW5ndGgpO2Zvcih2YXIgX2U9MDtfZTxuZS5sZW5ndGg7X2UrKyluZS53b3Jkc1tfZV09MH12YXIgUGU9Ry5jbG9uZSgpLl9pc2hsbnN1Ym11'@; put 'bChELDEsdWUpOzA9PT1QZS5uZWdhdGl2ZSYmKEc9UGUsbmUmJihuZS53b3Jkc1t1ZV09MSkpO2Zvcih2YXIgb3Q9dWUtMTtvdD49MDtvdC0tKXt2YXIgbHQ9NjcxMDg4NjQqKDB8Ry53b3Jkc1tELmxlbmd0aCtvdF0pKygwfEcud29yZHNbRC5sZW5ndGgrb3QtMV0pO2ZvcihsdD1NYXRoLm1p'@; put 'bihsdC9wfDAsNjcxMDg4NjMpLEcuX2lzaGxuc3VibXVsKEQsbHQsb3QpOzAhPT1HLm5lZ2F0aXZlOylsdC0tLEcubmVnYXRpdmU9MCxHLl9pc2hsbnN1Ym11bChELDEsb3QpLEcuaXNaZXJvKCl8fChHLm5lZ2F0aXZlXj0xKTtuZSYmKG5lLndvcmRzW290XT1sdCl9cmV0dXJuIG5lJiZuZS5f'@; put 'c3RyaXAoKSxHLl9zdHJpcCgpLCJkaXYiIT09QiYmMCE9PUsmJkcuaXVzaHJuKEspLHtkaXY6bmV8fG51bGwsbW9kOkd9fSx2LnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oTSxCLEspe3JldHVybiBzKCFNLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IHYoMCksbW9kOm5ldyB2'@; put 'KDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PU0ubmVnYXRpdmU/KHA9dGhpcy5uZWcoKS5kaXZtb2QoTSxCKSwibW9kIiE9PUImJihHPXAuZGl2Lm5lZygpKSwiZGl2IiE9PUImJihEPXAubW9kLm5lZygpLEsmJjAhPT1ELm5lZ2F0aXZlJiZELmlhZGQoTSkpLHtkaXY6Ryxtb2Q6RH0pOjA9'@; put 'PT10aGlzLm5lZ2F0aXZlJiYwIT09TS5uZWdhdGl2ZT8ocD10aGlzLmRpdm1vZChNLm5lZygpLEIpLCJtb2QiIT09QiYmKEc9cC5kaXYubmVnKCkpLHtkaXY6Ryxtb2Q6cC5tb2R9KTowIT09KHRoaXMubmVnYXRpdmUmTS5uZWdhdGl2ZSk/KHA9dGhpcy5uZWcoKS5kaXZtb2QoTS5uZWcoKSxC'@; put 'KSwiZGl2IiE9PUImJihEPXAubW9kLm5lZygpLEsmJjAhPT1ELm5lZ2F0aXZlJiZELmlzdWIoTSkpLHtkaXY6cC5kaXYsbW9kOkR9KTpNLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoTSk8MD97ZGl2Om5ldyB2KDApLG1vZDp0aGlzfToxPT09TS5sZW5ndGg/ImRpdiI9PT1CP3tkaXY6'@; put 'dGhpcy5kaXZuKE0ud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PUI/e2RpdjpudWxsLG1vZDpuZXcgdih0aGlzLm1vZHJuKE0ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oTS53b3Jkc1swXSksbW9kOm5ldyB2KHRoaXMubW9kcm4oTS53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KE0s'@; put 'Qik7dmFyIEcsRCxwfSx2LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMuZGl2bW9kKE0sImRpdiIsITEpLmRpdn0sdi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlzLmRpdm1vZChNLCJtb2QiLCExKS5tb2R9LHYucHJvdG90eXBlLnVtb2Q9ZnVuY3Rp'@; put 'b24oTSl7cmV0dXJuIHRoaXMuZGl2bW9kKE0sIm1vZCIsITApLm1vZH0sdi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oTSl7dmFyIEI9dGhpcy5kaXZtb2QoTSk7aWYoQi5tb2QuaXNaZXJvKCkpcmV0dXJuIEIuZGl2O3ZhciBLPUIubW9kLmFicygpLEc9TS5hYnMoKS5pdXNocm4oMSks'@; put 'RD0xJk0ud29yZHNbMF0scD1LLmNtcChHKTtpZihwPDB8fDE9PT1EJiYwPT09cClyZXR1cm4gQi5kaXY7dmFyIEk9bmV3IHYoMSk7cmV0dXJuIEkubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZV5NLm5lZ2F0aXZlLEIuZGl2LmlhZGQoSSl9LHYucHJvdG90eXBlLm1vZHJuPWZ1bmN0aW9uKE0pe3Zh'@; put 'ciBCPU08MDtCJiYoTT0tTSkscyhNPD02NzEwODg2Myk7Zm9yKHZhciBLPSgxPDwyNiklTSxHPTAsRD10aGlzLmxlbmd0aC0xO0Q+PTA7RC0tKUc9KEsqRysoMHx0aGlzLndvcmRzW0RdKSklTTtyZXR1cm4gQj8tRzpHfSx2LnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlz'@; put 'Lm1vZHJuKE0pfSx2LnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihNKXt2YXIgQj1NPDA7QiYmKE09LU0pLHMoTTw9NjcxMDg4NjMpO2Zvcih2YXIgSz0wLEc9dGhpcy5sZW5ndGgtMTtHPj0wO0ctLSl7dmFyIEQ9KDB8dGhpcy53b3Jkc1tHXSkrNjcxMDg4NjQqSzt0aGlzLndvcmRzW0ddPUQv'@; put 'TXwwLEs9RCVNfXJldHVybiB0aGlzLl9zdHJpcCgpLEI/dGhpcy5pbmVnKCk6dGhpc30sdi5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKE0pfSx2LnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKE0pe3MoMD09PU0ubmVnYXRpdmUpLHMoIU0uaXNa'@; put 'ZXJvKCkpO3ZhciBCPXRoaXMsSz1NLmNsb25lKCk7Qj0wIT09Qi5uZWdhdGl2ZT9CLnVtb2QoTSk6Qi5jbG9uZSgpO2Zvcih2YXIgRz1uZXcgdigxKSxEPW5ldyB2KDApLHA9bmV3IHYoMCksST1uZXcgdigxKSx1ZT0wO0IuaXNFdmVuKCkmJksuaXNFdmVuKCk7KUIuaXVzaHJuKDEpLEsuaXVz'@; put 'aHJuKDEpLCsrdWU7Zm9yKHZhciBuZT1LLmNsb25lKCksX2U9Qi5jbG9uZSgpOyFCLmlzWmVybygpOyl7Zm9yKHZhciBQZT0wLG90PTE7MD09PShCLndvcmRzWzBdJm90KSYmUGU8MjY7KytQZSxvdDw8PTEpO2lmKFBlPjApZm9yKEIuaXVzaHJuKFBlKTtQZS0tID4wOykoRy5pc09kZCgpfHxE'@; put 'LmlzT2RkKCkpJiYoRy5pYWRkKG5lKSxELmlzdWIoX2UpKSxHLml1c2hybigxKSxELml1c2hybigxKTtmb3IodmFyIGx0PTAsZHQ9MTswPT09KEsud29yZHNbMF0mZHQpJiZsdDwyNjsrK2x0LGR0PDw9MSk7aWYobHQ+MClmb3IoSy5pdXNocm4obHQpO2x0LS0gPjA7KShwLmlzT2RkKCl8fEku'@; put 'aXNPZGQoKSkmJihwLmlhZGQobmUpLEkuaXN1YihfZSkpLHAuaXVzaHJuKDEpLEkuaXVzaHJuKDEpO0IuY21wKEspPj0wPyhCLmlzdWIoSyksRy5pc3ViKHApLEQuaXN1YihJKSk6KEsuaXN1YihCKSxwLmlzdWIoRyksSS5pc3ViKEQpKX1yZXR1cm57YTpwLGI6SSxnY2Q6Sy5pdXNobG4odWUp'@; put 'fX0sdi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKE0pe3MoMD09PU0ubmVnYXRpdmUpLHMoIU0uaXNaZXJvKCkpO3ZhciBQZSxCPXRoaXMsSz1NLmNsb25lKCk7Qj0wIT09Qi5uZWdhdGl2ZT9CLnVtb2QoTSk6Qi5jbG9uZSgpO2Zvcih2YXIgRz1uZXcgdigxKSxEPW5ldyB2KDApLHA9Sy5j'@; put 'bG9uZSgpO0IuY21wbigxKT4wJiZLLmNtcG4oMSk+MDspe2Zvcih2YXIgST0wLHVlPTE7MD09PShCLndvcmRzWzBdJnVlKSYmSTwyNjsrK0ksdWU8PD0xKTtpZihJPjApZm9yKEIuaXVzaHJuKEkpO0ktLSA+MDspRy5pc09kZCgpJiZHLmlhZGQocCksRy5pdXNocm4oMSk7Zm9yKHZhciBuZT0w'@; put 'LF9lPTE7MD09PShLLndvcmRzWzBdJl9lKSYmbmU8MjY7KytuZSxfZTw8PTEpO2lmKG5lPjApZm9yKEsuaXVzaHJuKG5lKTtuZS0tID4wOylELmlzT2RkKCkmJkQuaWFkZChwKSxELml1c2hybigxKTtCLmNtcChLKT49MD8oQi5pc3ViKEspLEcuaXN1YihEKSk6KEsuaXN1YihCKSxELmlzdWIo'@; put 'RykpfXJldHVybihQZT0wPT09Qi5jbXBuKDEpP0c6RCkuY21wbigwKTwwJiZQZS5pYWRkKE0pLFBlfSx2LnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oTSl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gTS5hYnMoKTtpZihNLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBCPXRoaXMuY2xv'@; put 'bmUoKSxLPU0uY2xvbmUoKTtCLm5lZ2F0aXZlPTAsSy5uZWdhdGl2ZT0wO2Zvcih2YXIgRz0wO0IuaXNFdmVuKCkmJksuaXNFdmVuKCk7RysrKUIuaXVzaHJuKDEpLEsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtCLmlzRXZlbigpOylCLml1c2hybigxKTtmb3IoO0suaXNFdmVuKCk7KUsuaXVz'@; put 'aHJuKDEpO3ZhciBEPUIuY21wKEspO2lmKEQ8MCl7dmFyIHA9QjtCPUssSz1wfWVsc2UgaWYoMD09PUR8fDA9PT1LLmNtcG4oMSkpYnJlYWs7Qi5pc3ViKEspfXJldHVybiBLLml1c2hsbihHKX0sdi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5lZ2NkKE0pLmEudW1v'@; put 'ZChNKX0sdi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSx2LnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LHYucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlzLndvcmRz'@; put 'WzBdJk19LHYucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKE0pe3MoIm51bWJlciI9PXR5cGVvZiBNKTt2YXIgQj1NJTI2LEs9KE0tQikvMjYsRz0xPDxCO2lmKHRoaXMubGVuZ3RoPD1LKXJldHVybiB0aGlzLl9leHBhbmQoSysxKSx0aGlzLndvcmRzW0tdfD1HLHRoaXM7Zm9yKHZhciBEPUcs'@; put 'cD1LOzAhPT1EJiZwPHRoaXMubGVuZ3RoO3ArKyl7dmFyIEk9MHx0aGlzLndvcmRzW3BdO0Q9KEkrPUQpPj4+MjYsdGhpcy53b3Jkc1twXT1JJj02NzEwODg2M31yZXR1cm4gMCE9PUQmJih0aGlzLndvcmRzW3BdPUQsdGhpcy5sZW5ndGgrKyksdGhpc30sdi5wcm90b3R5cGUuaXNaZXJvPWZ1'@; put 'bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LHYucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oTSl7dmFyIEssQj1NPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFCKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZCKXJldHVybiAxO2lmKHRo'@; put 'aXMuX3N0cmlwKCksdGhpcy5sZW5ndGg+MSlLPTE7ZWxzZXtCJiYoTT0tTSkscyhNPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgRz0wfHRoaXMud29yZHNbMF07Sz1HPT09TT8wOkc8TT8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1LOkt9LHYucHJvdG90eXBl'@; put 'LmNtcD1mdW5jdGlvbihNKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU0ubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1NLm5lZ2F0aXZlKXJldHVybiAxO3ZhciBCPXRoaXMudWNtcChNKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQjpCfSx2LnBy'@; put 'b3RvdHlwZS51Y21wPWZ1bmN0aW9uKE0pe2lmKHRoaXMubGVuZ3RoPk0ubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPE0ubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgQj0wLEs9dGhpcy5sZW5ndGgtMTtLPj0wO0stLSl7dmFyIEc9MHx0aGlzLndvcmRzW0tdLEQ9MHxNLndvcmRzW0td'@; put 'O2lmKEchPT1EKXtHPEQ/Qj0tMTpHPkQmJihCPTEpO2JyZWFrfX1yZXR1cm4gQn0sdi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKE0pe3JldHVybiAxPT09dGhpcy5jbXBuKE0pfSx2LnByb3RvdHlwZS5ndD1mdW5jdGlvbihNKXtyZXR1cm4gMT09PXRoaXMuY21wKE0pfSx2LnByb3RvdHlwZS5n'@; put 'dGVuPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlzLmNtcG4oTSk+PTB9LHYucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbXAoTSk+PTB9LHYucHJvdG90eXBlLmx0bj1mdW5jdGlvbihNKXtyZXR1cm4tMT09PXRoaXMuY21wbihNKX0sdi5wcm90b3R5cGUubHQ9ZnVuY3Rp'@; put 'b24oTSl7cmV0dXJuLTE9PT10aGlzLmNtcChNKX0sdi5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5jbXBuKE0pPD0wfSx2LnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMuY21wKE0pPD0wfSx2LnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oTSl7cmV0'@; put 'dXJuIDA9PT10aGlzLmNtcG4oTSl9LHYucHJvdG90eXBlLmVxPWZ1bmN0aW9uKE0pe3JldHVybiAwPT09dGhpcy5jbXAoTSl9LHYucmVkPWZ1bmN0aW9uKE0pe3JldHVybiBuZXcgZihNKX0sdi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oTSl7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5'@; put 'IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IikscygwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxNLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoTSl9LHYucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJl'@; put 'ZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSx2LnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMucmVkPU0sdGhpc30sdi5wcm90b3R5cGUuZm9yY2VSZWQ9'@; put 'ZnVuY3Rpb24oTSl7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoTSl9LHYucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihNKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCBy'@; put 'ZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLE0pfSx2LnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKE0pe3JldHVybiBzKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxNKX0sdi5wcm90b3R5cGUucmVkU3Vi'@; put 'PWZ1bmN0aW9uKE0pe3JldHVybiBzKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsTSl9LHYucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oTSl7cmV0dXJuIHModGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRo'@; put 'IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLE0pfSx2LnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oTSl7cmV0dXJuIHModGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxNKX0sdi5wcm90b3R5cGUucmVkTXVs'@; put 'PWZ1bmN0aW9uKE0pe3JldHVybiBzKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxNKSx0aGlzLnJlZC5tdWwodGhpcyxNKX0sdi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihNKXtyZXR1cm4gcyh0aGlzLnJl'@; put 'ZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTSksdGhpcy5yZWQuaW11bCh0aGlzLE0pfSx2LnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQg'@; put 'bnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sdi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMp'@; put 'LHRoaXMucmVkLmlzcXIodGhpcyl9LHYucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSx2LnByb3RvdHlw'@; put 'ZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sdi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhp'@; put 'cy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LHYucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihNKXtyZXR1cm4gcyh0aGlzLnJlZCYmIU0ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIp'@; put 'LHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLE0pfTt2YXIgbWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBDZShrLE0pe3RoaXMubmFtZT1rLHRoaXMucD1uZXcgdihNLDE2KSx0aGlzLm49dGhpcy5wLmJpdExl'@; put 'bmd0aCgpLHRoaXMuaz1uZXcgdigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gSWUoKXtDZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZm'@; put 'ZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGtlKCl7Q2UuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBxZSgpe0NlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZm'@; put 'ZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gWCgpe0NlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gZihrKXtpZigi'@; put 'c3RyaW5nIj09dHlwZW9mIGspe3ZhciBNPXYuX3ByaW1lKGspO3RoaXMubT1NLnAsdGhpcy5wcmltZT1NfWVsc2UgcyhrLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWssdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGIoayl7Zi5jYWxsKHRoaXMsayks'@; put 'dGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgdigxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9p'@; put 'bnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1DZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBN'@; put 'PW5ldyB2KG51bGwpO3JldHVybiBNLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksTX0sQ2UucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oTSl7dmFyIEssQj1NO2Rve3RoaXMuc3BsaXQoQix0aGlzLnRtcCksSz0oQj0oQj10aGlzLmltdWxLKEIpKS5pYWRkKHRoaXMu'@; put 'dG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoSz50aGlzLm4pO3ZhciBHPUs8dGhpcy5uPy0xOkIudWNtcCh0aGlzLnApO3JldHVybiAwPT09Rz8oQi53b3Jkc1swXT0wLEIubGVuZ3RoPTEpOkc+MD9CLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1CLnN0cmlwP0Iuc3RyaXAoKTpCLl9zdHJpcCgpLEJ9'@; put 'LENlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihNLEIpe00uaXVzaHJuKHRoaXMubiwwLEIpfSxDZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTSl7cmV0dXJuIE0uaW11bCh0aGlzLmspfSxBKEllLENlKSxJZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTSxCKXtmb3IodmFyIEs9NDE5'@; put 'NDMwMyxHPU1hdGgubWluKE0ubGVuZ3RoLDkpLEQ9MDtEPEc7RCsrKUIud29yZHNbRF09TS53b3Jkc1tEXTtpZihCLmxlbmd0aD1HLE0ubGVuZ3RoPD05KXJldHVybiBNLndvcmRzWzBdPTAsdm9pZChNLmxlbmd0aD0xKTt2YXIgcD1NLndvcmRzWzldO2ZvcihCLndvcmRzW0IubGVuZ3RoKytd'@; put 'PXAmSyxEPTEwO0Q8TS5sZW5ndGg7RCsrKXt2YXIgST0wfE0ud29yZHNbRF07TS53b3Jkc1tELTEwXT0oSSZLKTw8NHxwPj4+MjIscD1JfU0ud29yZHNbRC0xMF09cD4+Pj0yMixNLmxlbmd0aC09MD09PXAmJk0ubGVuZ3RoPjEwPzEwOjl9LEllLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihN'@; put 'KXtNLndvcmRzW00ubGVuZ3RoXT0wLE0ud29yZHNbTS5sZW5ndGgrMV09MCxNLmxlbmd0aCs9Mjtmb3IodmFyIEI9MCxLPTA7SzxNLmxlbmd0aDtLKyspe3ZhciBHPTB8TS53b3Jkc1tLXTtNLndvcmRzW0tdPTY3MTA4ODYzJihCKz05NzcqRyksQj02NCpHKyhCLzY3MTA4ODY0fDApfXJldHVy'@; put 'biAwPT09TS53b3Jkc1tNLmxlbmd0aC0xXSYmKE0ubGVuZ3RoLS0sMD09PU0ud29yZHNbTS5sZW5ndGgtMV0mJk0ubGVuZ3RoLS0pLE19LEEoa2UsQ2UpLEEocWUsQ2UpLEEoWCxDZSksWC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTSl7Zm9yKHZhciBCPTAsSz0wO0s8TS5sZW5ndGg7Sysr'@; put 'KXt2YXIgRz0xOSooMHxNLndvcmRzW0tdKStCLEQ9NjcxMDg4NjMmRztHPj4+PTI2LE0ud29yZHNbS109RCxCPUd9cmV0dXJuIDAhPT1CJiYoTS53b3Jkc1tNLmxlbmd0aCsrXT1CKSxNfSx2Ll9wcmltZT1mdW5jdGlvbihNKXtpZihtZVtNXSlyZXR1cm4gbWVbTV07dmFyIEI7aWYoImsyNTYi'@; put 'PT09TSlCPW5ldyBJZTtlbHNlIGlmKCJwMjI0Ij09PU0pQj1uZXcga2U7ZWxzZSBpZigicDE5MiI9PT1NKUI9bmV3IHFlO2Vsc2V7aWYoInAyNTUxOSIhPT1NKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK00pO0I9bmV3IFh9cmV0dXJuIG1lW01dPUIsQn0sZi5wcm90b3R5cGUu'@; put 'X3ZlcmlmeTE9ZnVuY3Rpb24oTSl7cygwPT09TS5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxzKE0ucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGYucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKE0sQil7cygwPT09KE0ubmVnYXRp'@; put 'dmV8Qi5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIikscyhNLnJlZCYmTS5yZWQ9PT1CLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxmLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUu'@; put 'aXJlZHVjZShNKS5fZm9yY2VSZWQodGhpcyk6KFIoTSxNLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcykpLE0pfSxmLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oTSl7cmV0dXJuIE0uaXNaZXJvKCk/TS5jbG9uZSgpOnRoaXMubS5zdWIoTSkuX2ZvcmNlUmVkKHRoaXMpfSxmLnByb3RvdHlw'@; put 'ZS5hZGQ9ZnVuY3Rpb24oTSxCKXt0aGlzLl92ZXJpZnkyKE0sQik7dmFyIEs9TS5hZGQoQik7cmV0dXJuIEsuY21wKHRoaXMubSk+PTAmJksuaXN1Yih0aGlzLm0pLEsuX2ZvcmNlUmVkKHRoaXMpfSxmLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE0sQil7dGhpcy5fdmVyaWZ5MihNLEIpO3Zh'@; put 'ciBLPU0uaWFkZChCKTtyZXR1cm4gSy5jbXAodGhpcy5tKT49MCYmSy5pc3ViKHRoaXMubSksS30sZi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE0sQil7dGhpcy5fdmVyaWZ5MihNLEIpO3ZhciBLPU0uc3ViKEIpO3JldHVybiBLLmNtcG4oMCk8MCYmSy5pYWRkKHRoaXMubSksSy5fZm9yY2VS'@; put 'ZWQodGhpcyl9LGYucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTSxCKXt0aGlzLl92ZXJpZnkyKE0sQik7dmFyIEs9TS5pc3ViKEIpO3JldHVybiBLLmNtcG4oMCk8MCYmSy5pYWRkKHRoaXMubSksS30sZi5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKE0sQil7cmV0dXJuIHRoaXMuX3ZlcmlmeTEo'@; put 'TSksdGhpcy5pbW9kKE0udXNobG4oQikpfSxmLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE0sQil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTSxCKSx0aGlzLmltb2QoTS5pbXVsKEIpKX0sZi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE0sQil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTSxCKSx0aGlz'@; put 'Lmltb2QoTS5tdWwoQikpfSxmLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKE0pe3JldHVybiB0aGlzLmltdWwoTSxNLmNsb25lKCkpfSxmLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMubXVsKE0sTSl9LGYucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oTSl7aWYoTS5pc1pl'@; put 'cm8oKSlyZXR1cm4gTS5jbG9uZSgpO3ZhciBCPXRoaXMubS5hbmRsbigzKTtpZihzKEIlMj09MSksMz09PUIpe3ZhciBLPXRoaXMubS5hZGQobmV3IHYoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coTSxLKX1mb3IodmFyIEc9dGhpcy5tLnN1Ym4oMSksRD0wOyFHLmlzWmVybygpJiYw'@; put 'PT09Ry5hbmRsbigxKTspRCsrLEcuaXVzaHJuKDEpO3MoIUcuaXNaZXJvKCkpO3ZhciBwPW5ldyB2KDEpLnRvUmVkKHRoaXMpLEk9cC5yZWROZWcoKSx1ZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksbmU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihuZT1uZXcgdigyKm5lKm5lKS50b1JlZCh0'@; put 'aGlzKTswIT09dGhpcy5wb3cobmUsdWUpLmNtcChJKTspbmUucmVkSUFkZChJKTtmb3IodmFyIF9lPXRoaXMucG93KG5lLEcpLFBlPXRoaXMucG93KE0sRy5hZGRuKDEpLml1c2hybigxKSksb3Q9dGhpcy5wb3coTSxHKSxsdD1EOzAhPT1vdC5jbXAocCk7KXtmb3IodmFyIGR0PW90LFJlPTA7'@; put 'MCE9PWR0LmNtcChwKTtSZSsrKWR0PWR0LnJlZFNxcigpO3MoUmU8bHQpO3ZhciBhZT10aGlzLnBvdyhfZSxuZXcgdigxKS5pdXNobG4obHQtUmUtMSkpO1BlPVBlLnJlZE11bChhZSksX2U9YWUucmVkU3FyKCksb3Q9b3QucmVkTXVsKF9lKSxsdD1SZX1yZXR1cm4gUGV9LGYucHJvdG90eXBl'@; put 'Lmludm09ZnVuY3Rpb24oTSl7dmFyIEI9TS5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUIubmVnYXRpdmU/KEIubmVnYXRpdmU9MCx0aGlzLmltb2QoQikucmVkTmVnKCkpOnRoaXMuaW1vZChCKX0sZi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE0sQil7aWYoQi5pc1plcm8oKSlyZXR1cm4g'@; put 'bmV3IHYoMSkudG9SZWQodGhpcyk7aWYoMD09PUIuY21wbigxKSlyZXR1cm4gTS5jbG9uZSgpO3ZhciBHPW5ldyBBcnJheSgxNik7R1swXT1uZXcgdigxKS50b1JlZCh0aGlzKSxHWzFdPU07Zm9yKHZhciBEPTI7RDxHLmxlbmd0aDtEKyspR1tEXT10aGlzLm11bChHW0QtMV0sTSk7dmFyIHA9'@; put 'R1swXSxJPTAsdWU9MCxuZT1CLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09bmUmJihuZT0yNiksRD1CLmxlbmd0aC0xO0Q+PTA7RC0tKXtmb3IodmFyIF9lPUIud29yZHNbRF0sUGU9bmUtMTtQZT49MDtQZS0tKXt2YXIgb3Q9X2U+PlBlJjE7cCE9PUdbMF0mJihwPXRoaXMuc3FyKHApKSwwIT09'@; put 'b3R8fDAhPT1JPyhJPDw9MSxJfD1vdCwoND09PSsrdWV8fDA9PT1EJiYwPT09UGUpJiYocD10aGlzLm11bChwLEdbSV0pLHVlPTAsST0wKSk6dWU9MH1uZT0yNn1yZXR1cm4gcH0sZi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE0pe3ZhciBCPU0udW1vZCh0aGlzLm0pO3JldHVybiBC'@; put 'PT09TT9CLmNsb25lKCk6Qn0sZi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTSl7dmFyIEI9TS5jbG9uZSgpO3JldHVybiBCLnJlZD1udWxsLEJ9LHYubW9udD1mdW5jdGlvbihNKXtyZXR1cm4gbmV3IGIoTSl9LEEoYixmKSxiLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24o'@; put 'TSl7cmV0dXJuIHRoaXMuaW1vZChNLnVzaGxuKHRoaXMuc2hpZnQpKX0sYi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oTSl7dmFyIEI9dGhpcy5pbW9kKE0ubXVsKHRoaXMucmludikpO3JldHVybiBCLnJlZD1udWxsLEJ9LGIucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTSxCKXtp'@; put 'ZihNLmlzWmVybygpfHxCLmlzWmVybygpKXJldHVybiBNLndvcmRzWzBdPTAsTS5sZW5ndGg9MSxNO3ZhciBLPU0uaW11bChCKSxHPUsubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLEQ9Sy5pc3ViKEcpLml1c2hybih0aGlz'@; put 'LnNoaWZ0KSxwPUQ7cmV0dXJuIEQuY21wKHRoaXMubSk+PTA/cD1ELmlzdWIodGhpcy5tKTpELmNtcG4oMCk8MCYmKHA9RC5pYWRkKHRoaXMubSkpLHAuX2ZvcmNlUmVkKHRoaXMpfSxiLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTSxCKXtpZihNLmlzWmVybygpfHxCLmlzWmVybygpKXJldHVy'@; put 'biBuZXcgdigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIEs9TS5tdWwoQiksRz1LLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxEPUsuaXN1YihHKS5pdXNocm4odGhpcy5zaGlmdCkscD1EO3JldHVybiBELmNtcCh0aGlzLm0p'@; put 'Pj0wP3A9RC5pc3ViKHRoaXMubSk6RC5jbXBuKDApPDAmJihwPUQuaWFkZCh0aGlzLm0pKSxwLl9mb3JjZVJlZCh0aGlzKX0sYi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5pbW9kKE0uX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9'@; put 'fShmZT1oLm5tZChmZSksdGhpcyl9LDE1MDM3KGZlLGosaCl7dmFyIHk7ZnVuY3Rpb24gYyhBKXt0aGlzLnJhbmQ9QX1pZihmZS5leHBvcnRzPWZ1bmN0aW9uKHYpe3JldHVybiB5fHwoeT1uZXcgYyhudWxsKSkseS5nZW5lcmF0ZSh2KX0sZmUuZXhwb3J0cy5SYW5kPWMsYy5wcm90b3R5cGUu'@; put 'Z2VuZXJhdGU9ZnVuY3Rpb24odil7cmV0dXJuIHRoaXMuX3JhbmQodil9LGMucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHYpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKHYpO2Zvcih2YXIgQz1uZXcgVWludDhBcnJheSh2KSx3PTA7dzxDLmxlbmd0'@; put 'aDt3KyspQ1t3XT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiBDfSwib2JqZWN0Ij09dHlwZW9mIHNlbGYpc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9jLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih2KXt2YXIgQz1uZXcgVWludDhBcnJheSh2KTtyZXR1cm4g'@; put 'c2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKEMpLEN9OnNlbGYubXNDcnlwdG8mJnNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP2MucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHYpe3ZhciBDPW5ldyBVaW50OEFycmF5KHYpO3JldHVybiBzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZh'@; put 'bHVlcyhDKSxDfToib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKGMucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQgeWV0Iil9KTtlbHNlIHRyeXt2YXIgcz1oKDczNzc2KTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcy5yYW5kb21CeXRl'@; put 'cyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQiKTtjLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih2KXtyZXR1cm4gcy5yYW5kb21CeXRlcyh2KX19Y2F0Y2h7fX0sNTA0NjIoZmUsaixoKXt2YXIgeT1oKDkyODYxKS5CdWZmZXI7ZnVuY3Rpb24gYyhTKXt5LmlzQnVmZmVyKFMpfHwo'@; put 'Uz15LmZyb20oUykpO2Zvcih2YXIgTD1TLmxlbmd0aC80fDAsUj1uZXcgQXJyYXkoTCkseD0wO3g8TDt4KyspUlt4XT1TLnJlYWRVSW50MzJCRSg0KngpO3JldHVybiBSfWZ1bmN0aW9uIHMoUyl7Zm9yKDswPFMubGVuZ3RoO1MrKylTWzBdPTB9ZnVuY3Rpb24gQShTLEwsUix4LFUpe2Zvcih2'@; put 'YXIgcmUsbWUsQ2UsSWUsSD1SWzBdLFY9UlsxXSxOPVJbMl0sej1SWzNdLFk9U1swXV5MWzBdLEY9U1sxXV5MWzFdLFc9U1syXV5MWzJdLHE9U1szXV5MWzNdLGtlPTQscWU9MTtxZTxVO3FlKyspcmU9SFtZPj4+MjRdXlZbRj4+PjE2JjI1NV1eTltXPj4+OCYyNTVdXnpbMjU1JnFdXkxba2Ur'@; put 'K10sbWU9SFtGPj4+MjRdXlZbVz4+PjE2JjI1NV1eTltxPj4+OCYyNTVdXnpbMjU1JlldXkxba2UrK10sQ2U9SFtXPj4+MjRdXlZbcT4+PjE2JjI1NV1eTltZPj4+OCYyNTVdXnpbMjU1JkZdXkxba2UrK10sSWU9SFtxPj4+MjRdXlZbWT4+PjE2JjI1NV1eTltGPj4+OCYyNTVdXnpbMjU1Jldd'@; put 'Xkxba2UrK10sWT1yZSxGPW1lLFc9Q2UscT1JZTtyZXR1cm4gcmU9KHhbWT4+PjI0XTw8MjR8eFtGPj4+MTYmMjU1XTw8MTZ8eFtXPj4+OCYyNTVdPDw4fHhbMjU1JnFdKV5MW2tlKytdLG1lPSh4W0Y+Pj4yNF08PDI0fHhbVz4+PjE2JjI1NV08PDE2fHhbcT4+PjgmMjU1XTw8OHx4WzI1NSZZ'@; put 'XSleTFtrZSsrXSxDZT0oeFtXPj4+MjRdPDwyNHx4W3E+Pj4xNiYyNTVdPDwxNnx4W1k+Pj44JjI1NV08PDh8eFsyNTUmRl0pXkxba2UrK10sSWU9KHhbcT4+PjI0XTw8MjR8eFtZPj4+MTYmMjU1XTw8MTZ8eFtGPj4+OCYyNTVdPDw4fHhbMjU1JlddKV5MW2tlKytdLFtyZT4+Pj0wLG1lPj4+'@; put 'PTAsQ2U+Pj49MCxJZT4+Pj0wXX12YXIgdj1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sQz1mdW5jdGlvbigpe2Zvcih2YXIgUz1uZXcgQXJyYXkoMjU2KSxMPTA7TDwyNTY7TCsrKVNbTF09TDwxMjg/TDw8MTpMPDwxXjI4Mztmb3IodmFyIFI9W10seD1bXSxVPVtbXSxbXSxbXSxb'@; put 'XV0sSD1bW10sW10sW10sW11dLFY9MCxOPTAsej0wO3o8MjU2Oysreil7dmFyIFk9Tl5OPDwxXk48PDJeTjw8M15OPDw0O1JbVl09WT1ZPj4+OF4yNTUmWV45OSx4W1ldPVY7dmFyIEY9U1tWXSxXPVNbRl0scT1TW1ddLHJlPTI1NypTW1ldXjE2ODQzMDA4Klk7VVswXVtWXT1yZTw8MjR8cmU+'@; put 'Pj44LFVbMV1bVl09cmU8PDE2fHJlPj4+MTYsVVsyXVtWXT1yZTw8OHxyZT4+PjI0LFVbM11bVl09cmUsSFswXVtZXT0ocmU9MTY4NDMwMDkqcV42NTUzNypXXjI1NypGXjE2ODQzMDA4KlYpPDwyNHxyZT4+PjgsSFsxXVtZXT1yZTw8MTZ8cmU+Pj4xNixIWzJdW1ldPXJlPDw4fHJlPj4+MjQs'@; put 'SFszXVtZXT1yZSwwPT09Vj9WPU49MTooVj1GXlNbU1tTW3FeRl1dXSxOXj1TW1NbTl1dKX1yZXR1cm57U0JPWDpSLElOVl9TQk9YOngsU1VCX01JWDpVLElOVl9TVUJfTUlYOkh9fSgpO2Z1bmN0aW9uIHcoUyl7dGhpcy5fa2V5PWMoUyksdGhpcy5fcmVzZXQoKX13LmJsb2NrU2l6ZT0xNix3'@; put 'LmtleVNpemU9MzIsdy5wcm90b3R5cGUuYmxvY2tTaXplPXcuYmxvY2tTaXplLHcucHJvdG90eXBlLmtleVNpemU9dy5rZXlTaXplLHcucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgUz10aGlzLl9rZXksTD1TLmxlbmd0aCxSPUwrNix4PTQqKFIrMSksVT1bXSxIPTA7SDxM'@; put 'O0grKylVW0hdPVNbSF07Zm9yKEg9TDtIPHg7SCsrKXt2YXIgVj1VW0gtMV07SCVMPT09MD8oVj1DLlNCT1hbKFY9Vjw8OHxWPj4+MjQpPj4+MjRdPDwyNHxDLlNCT1hbVj4+PjE2JjI1NV08PDE2fEMuU0JPWFtWPj4+OCYyNTVdPDw4fEMuU0JPWFsyNTUmVl0sVl49dltIL0x8MF08PDI0KTpM'@; put 'PjYmJkglTD09PTQmJihWPUMuU0JPWFtWPj4+MjRdPDwyNHxDLlNCT1hbVj4+PjE2JjI1NV08PDE2fEMuU0JPWFtWPj4+OCYyNTVdPDw4fEMuU0JPWFsyNTUmVl0pLFVbSF09VVtILUxdXlZ9Zm9yKHZhciBOPVtdLHo9MDt6PHg7eisrKXt2YXIgWT14LXosRj1VW1ktKHolND8wOjQpXTtOW3pd'@; put 'PXo8NHx8WTw9ND9GOkMuSU5WX1NVQl9NSVhbMF1bQy5TQk9YW0Y+Pj4yNF1dXkMuSU5WX1NVQl9NSVhbMV1bQy5TQk9YW0Y+Pj4xNiYyNTVdXV5DLklOVl9TVUJfTUlYWzJdW0MuU0JPWFtGPj4+OCYyNTVdXV5DLklOVl9TVUJfTUlYWzNdW0MuU0JPWFsyNTUmRl1dfXRoaXMuX25Sb3VuZHM9'@; put 'Uix0aGlzLl9rZXlTY2hlZHVsZT1VLHRoaXMuX2ludktleVNjaGVkdWxlPU59LHcucHJvdG90eXBlLmVuY3J5cHRCbG9ja1Jhdz1mdW5jdGlvbihTKXtyZXR1cm4gQShTPWMoUyksdGhpcy5fa2V5U2NoZWR1bGUsQy5TVUJfTUlYLEMuU0JPWCx0aGlzLl9uUm91bmRzKX0sdy5wcm90b3R5cGUu'@; put 'ZW5jcnlwdEJsb2NrPWZ1bmN0aW9uKFMpe3ZhciBMPXRoaXMuZW5jcnlwdEJsb2NrUmF3KFMpLFI9eS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIFIud3JpdGVVSW50MzJCRShMWzBdLDApLFIud3JpdGVVSW50MzJCRShMWzFdLDQpLFIud3JpdGVVSW50MzJCRShMWzJdLDgpLFIud3JpdGVVSW50'@; put 'MzJCRShMWzNdLDEyKSxSfSx3LnByb3RvdHlwZS5kZWNyeXB0QmxvY2s9ZnVuY3Rpb24oUyl7dmFyIEw9KFM9YyhTKSlbMV07U1sxXT1TWzNdLFNbM109TDt2YXIgUj1BKFMsdGhpcy5faW52S2V5U2NoZWR1bGUsQy5JTlZfU1VCX01JWCxDLklOVl9TQk9YLHRoaXMuX25Sb3VuZHMpLHg9eS5h'@; put 'bGxvY1Vuc2FmZSgxNik7cmV0dXJuIHgud3JpdGVVSW50MzJCRShSWzBdLDApLHgud3JpdGVVSW50MzJCRShSWzNdLDQpLHgud3JpdGVVSW50MzJCRShSWzJdLDgpLHgud3JpdGVVSW50MzJCRShSWzFdLDEyKSx4fSx3LnByb3RvdHlwZS5zY3J1Yj1mdW5jdGlvbigpe3ModGhpcy5fa2V5U2No'@; put 'ZWR1bGUpLHModGhpcy5faW52S2V5U2NoZWR1bGUpLHModGhpcy5fa2V5KX0sZmUuZXhwb3J0cy5BRVM9d30sOTIzNTYoZmUsaixoKXt2YXIgeT1oKDUwNDYyKSxjPWgoOTI4NjEpLkJ1ZmZlcixzPWgoNTYxNjgpLEE9aCg1NjY5OCksdj1oKDI1ODkyKSxDPWgoMzAyOTUpLHc9aCg0NTEyMik7'@; put 'ZnVuY3Rpb24gUih4LFUsSCxWKXtzLmNhbGwodGhpcyk7dmFyIE49Yy5hbGxvYyg0LDApO3RoaXMuX2NpcGhlcj1uZXcgeS5BRVMoVSk7dmFyIHo9dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayhOKTt0aGlzLl9naGFzaD1uZXcgdih6KSxIPWZ1bmN0aW9uIEwoeCxVLEgpe2lmKDEyPT09VS5s'@; put 'ZW5ndGgpcmV0dXJuIHguX2ZpbklEPWMuY29uY2F0KFtVLGMuZnJvbShbMCwwLDAsMV0pXSksYy5jb25jYXQoW1UsYy5mcm9tKFswLDAsMCwyXSldKTt2YXIgVj1uZXcgdihIKSxOPVUubGVuZ3RoLHo9TiUxNjtWLnVwZGF0ZShVKSx6JiZWLnVwZGF0ZShjLmFsbG9jKHo9MTYteiwwKSksVi51'@; put 'cGRhdGUoYy5hbGxvYyg4LDApKTt2YXIgWT04Kk4sRj1jLmFsbG9jKDgpO0Yud3JpdGVVSW50QkUoWSwwLDgpLFYudXBkYXRlKEYpLHguX2ZpbklEPVYuc3RhdGU7dmFyIFc9Yy5mcm9tKHguX2ZpbklEKTtyZXR1cm4gdyhXKSxXfSh0aGlzLEgseiksdGhpcy5fcHJldj1jLmZyb20oSCksdGhp'@; put 'cy5fY2FjaGU9Yy5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9zZWNDYWNoZT1jLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9Vix0aGlzLl9hbGVuPTAsdGhpcy5fbGVuPTAsdGhpcy5fbW9kZT14LHRoaXMuX2F1dGhUYWc9bnVsbCx0aGlzLl9jYWxsZWQ9ITF9QShSLHMpLFIucHJvdG90eXBl'@; put 'Ll91cGRhdGU9ZnVuY3Rpb24oeCl7aWYoIXRoaXMuX2NhbGxlZCYmdGhpcy5fYWxlbil7dmFyIFU9MTYtdGhpcy5fYWxlbiUxNjtVPDE2JiYoVT1jLmFsbG9jKFUsMCksdGhpcy5fZ2hhc2gudXBkYXRlKFUpKX10aGlzLl9jYWxsZWQ9ITA7dmFyIEg9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMs'@; put 'eCk7cmV0dXJuIHRoaXMuX2doYXNoLnVwZGF0ZSh0aGlzLl9kZWNyeXB0P3g6SCksdGhpcy5fbGVuKz14Lmxlbmd0aCxIfSxSLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0JiYhdGhpcy5fYXV0aFRhZyl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0'@; put 'YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3ZhciB4PUModGhpcy5fZ2hhc2guZmluYWwoOCp0aGlzLl9hbGVuLDgqdGhpcy5fbGVuKSx0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSk7aWYodGhpcy5fZGVjcnlwdCYmZnVuY3Rpb24gUyh4LFUpe3Zh'@; put 'ciBIPTA7eC5sZW5ndGghPT1VLmxlbmd0aCYmSCsrO2Zvcih2YXIgVj1NYXRoLm1pbih4Lmxlbmd0aCxVLmxlbmd0aCksTj0wO048VjsrK04pSCs9eFtOXV5VW05dO3JldHVybiBIfSh4LHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxl'@; put 'IHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dGhpcy5fYXV0aFRhZz14LHRoaXMuX2NpcGhlci5zY3J1YigpfSxSLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdHx8IWMuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0'@; put 'aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3JldHVybiB0aGlzLl9hdXRoVGFnfSxSLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKFUpe2lmKCF0aGlzLl9kZWNyeXB0KXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBzZXQgYXV0aCB0YWcgaW4g'@; put 'dW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9hdXRoVGFnPVV9LFIucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbihVKXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBBQUQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9naGFzaC51cGRhdGUo'@; put 'VSksdGhpcy5fYWxlbis9VS5sZW5ndGh9LGZlLmV4cG9ydHM9Un0sMTI0MShmZSxqLGgpe3ZhciB5PWgoMjU3OTkpLGM9aCgzNjE3MSkscz1oKDMyMTkpO2ouY3JlYXRlQ2lwaGVyPWouQ2lwaGVyPXkuY3JlYXRlQ2lwaGVyLGouY3JlYXRlQ2lwaGVyaXY9ai5DaXBoZXJpdj15LmNyZWF0ZUNp'@; put 'cGhlcml2LGouY3JlYXRlRGVjaXBoZXI9ai5EZWNpcGhlcj1jLmNyZWF0ZURlY2lwaGVyLGouY3JlYXRlRGVjaXBoZXJpdj1qLkRlY2lwaGVyaXY9Yy5jcmVhdGVEZWNpcGhlcml2LGoubGlzdENpcGhlcnM9ai5nZXRDaXBoZXJzPWZ1bmN0aW9uIEEoKXtyZXR1cm4gT2JqZWN0LmtleXMocyl9'@; put 'fSwzNjE3MShmZSxqLGgpe3ZhciB5PWgoOTIzNTYpLGM9aCg5Mjg2MSkuQnVmZmVyLHM9aCg1MzApLEE9aCg1MDY1MCksdj1oKDU2MTY4KSxDPWgoNTA0NjIpLHc9aCg2ODA3OCk7ZnVuY3Rpb24gTChWLE4seil7di5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBSLHRoaXMuX2xhc3Q9dm9p'@; put 'ZCAwLHRoaXMuX2NpcGhlcj1uZXcgQy5BRVMoTiksdGhpcy5fcHJldj1jLmZyb20oeiksdGhpcy5fbW9kZT1WLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWZ1bmN0aW9uIFIoKXt0aGlzLmNhY2hlPWMuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gVShWLE4seil7dmFyIFk9c1tWLnRvTG93ZXJDYXNl'@; put 'KCldO2lmKCFZKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgeiYmKHo9Yy5mcm9tKHopKSwiR0NNIiE9PVkubW9kZSYmei5sZW5ndGghPT1ZLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrei5s'@; put 'ZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgTiYmKE49Yy5mcm9tKE4pKSxOLmxlbmd0aCE9PVkua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrTi5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09WS50eXBlP25ldyBBKFkubW9kdWxlLE4seiwhMCk6ImF1'@; put 'dGgiPT09WS50eXBlP25ldyB5KFkubW9kdWxlLE4seiwhMCk6bmV3IEwoWS5tb2R1bGUsTix6KX1oKDU2Njk4KShMLHYpLEwucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oVil7dGhpcy5fY2FjaGUuYWRkKFYpO2Zvcih2YXIgTix6LFk9W107Tj10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0'@; put 'b3BhZGRpbmcpOyl6PXRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLE4pLFkucHVzaCh6KTtyZXR1cm4gYy5jb25jYXQoWSl9LEwucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBWPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIGZ1bmN0aW9uIHgo'@; put 'Vil7dmFyIE49VlsxNV07aWYoTjwxfHxOPjE2KXRocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2Zvcih2YXIgej0tMTsrK3o8TjspaWYoVlt6KygxNi1OKV0hPT1OKXRocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2lmKDE2IT09TilyZXR1'@; put 'cm4gVi5zbGljZSgwLDE2LU4pfSh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxWKSk7aWYoVil0aHJvdyBuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxMLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihWKXtyZXR1cm4gdGhpcy5fYXV0b3Bh'@; put 'ZGRpbmc9ISFWLHRoaXN9LFIucHJvdG90eXBlLmFkZD1mdW5jdGlvbihWKXt0aGlzLmNhY2hlPWMuY29uY2F0KFt0aGlzLmNhY2hlLFZdKX0sUi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKFYpe3ZhciBOO2lmKFYpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXJldHVybiBOPXRoaXMuY2FjaGUu'@; put 'c2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxOfWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVybiBOPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxOO3JldHVybiBudWxsfSxSLnByb3RvdHlw'@; put 'ZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfSxqLmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uIEgoVixOKXt2YXIgej1zW1YudG9Mb3dlckNhc2UoKV07aWYoIXopdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7'@; put 'dmFyIFk9dyhOLCExLHoua2V5LHouaXYpO3JldHVybiBVKFYsWS5rZXksWS5pdil9LGouY3JlYXRlRGVjaXBoZXJpdj1VfSwyNTc5OShmZSxqLGgpe3ZhciB5PWgoNTMwKSxjPWgoOTIzNTYpLHM9aCg5Mjg2MSkuQnVmZmVyLEE9aCg1MDY1MCksdj1oKDU2MTY4KSxDPWgoNTA0NjIpLHc9aCg2'@; put 'ODA3OCk7ZnVuY3Rpb24gTChWLE4seil7di5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyB4LHRoaXMuX2NpcGhlcj1uZXcgQy5BRVMoTiksdGhpcy5fcHJldj1zLmZyb20oeiksdGhpcy5fbW9kZT1WLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWgoNTY2OTgpKEwsdiksTC5wcm90b3R5cGUuX3Vw'@; put 'ZGF0ZT1mdW5jdGlvbihWKXt0aGlzLl9jYWNoZS5hZGQoVik7Zm9yKHZhciBOLHosWT1bXTtOPXRoaXMuX2NhY2hlLmdldCgpOyl6PXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLE4pLFkucHVzaCh6KTtyZXR1cm4gcy5jb25jYXQoWSl9O3ZhciBSPXMuYWxsb2MoMTYsMTYpO2Z1bmN0aW9uIHgo'@; put 'KXt0aGlzLmNhY2hlPXMuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gVShWLE4seil7dmFyIFk9eVtWLnRvTG93ZXJDYXNlKCldO2lmKCFZKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgTiYmKE49cy5mcm9tKE4pKSxOLmxlbmd0'@; put 'aCE9PVkua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrTi5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgeiYmKHo9cy5mcm9tKHopKSwiR0NNIiE9PVkubW9kZSYmei5sZW5ndGghPT1ZLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYg'@; put 'bGVuZ3RoICIrei5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09WS50eXBlP25ldyBBKFkubW9kdWxlLE4seik6ImF1dGgiPT09WS50eXBlP25ldyBjKFkubW9kdWxlLE4seik6bmV3IEwoWS5tb2R1bGUsTix6KX1MLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgVj10aGlzLl9jYWNo'@; put 'ZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBWPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLFYpLHRoaXMuX2NpcGhlci5zY3J1YigpLFY7aWYoIVYuZXF1YWxzKFIpKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2Yg'@; put 'YmxvY2sgbGVuZ3RoIil9LEwucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKFYpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIVYsdGhpc30seC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFYpe3RoaXMuY2FjaGU9cy5jb25jYXQoW3RoaXMuY2FjaGUsVl0pfSx4LnByb3RvdHlw'@; put 'ZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIFY9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTtyZXR1cm4gdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxWfXJldHVybiBudWxsfSx4LnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgVj0x'@; put 'Ni10aGlzLmNhY2hlLmxlbmd0aCxOPXMuYWxsb2NVbnNhZmUoViksej0tMTsrK3o8VjspTi53cml0ZVVJbnQ4KFYseik7cmV0dXJuIHMuY29uY2F0KFt0aGlzLmNhY2hlLE5dKX0sai5jcmVhdGVDaXBoZXJpdj1VLGouY3JlYXRlQ2lwaGVyPWZ1bmN0aW9uIEgoVixOKXt2YXIgej15W1YudG9M'@; put 'b3dlckNhc2UoKV07aWYoIXopdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIFk9dyhOLCExLHoua2V5LHouaXYpO3JldHVybiBVKFYsWS5rZXksWS5pdil9fSwyNTg5MihmZSxqLGgpe3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPXkuYWxsb2MoMTYsMCk7ZnVu'@; put 'Y3Rpb24gQShDKXt2YXIgdz15LmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gdy53cml0ZVVJbnQzMkJFKENbMF0+Pj4wLDApLHcud3JpdGVVSW50MzJCRShDWzFdPj4+MCw0KSx3LndyaXRlVUludDMyQkUoQ1syXT4+PjAsOCksdy53cml0ZVVJbnQzMkJFKENbM10+Pj4wLDEyKSx3fWZ1bmN0aW9u'@; put 'IHYoQyl7dGhpcy5oPUMsdGhpcy5zdGF0ZT15LmFsbG9jKDE2LDApLHRoaXMuY2FjaGU9eS5hbGxvY1Vuc2FmZSgwKX12LnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihDKXtmb3IodmFyIHc9LTE7Kyt3PEMubGVuZ3RoOyl0aGlzLnN0YXRlW3ddXj1DW3ddO3RoaXMuX211bHRpcGx5KCl9LHYu'@; put 'cHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgUyxSLEM9ZnVuY3Rpb24gcyhDKXtyZXR1cm5bQy5yZWFkVUludDMyQkUoMCksQy5yZWFkVUludDMyQkUoNCksQy5yZWFkVUludDMyQkUoOCksQy5yZWFkVUludDMyQkUoMTIpXX0odGhpcy5oKSx3PVswLDAsMCwwXSx4PS0x'@; put 'OysreDwxMjg7KXtmb3IoISEodGhpcy5zdGF0ZVt+fih4LzgpXSYxPDw3LXglOCkmJih3WzBdXj1DWzBdLHdbMV1ePUNbMV0sd1syXV49Q1syXSx3WzNdXj1DWzNdKSxSPSEhKDEmQ1szXSksUz0zO1M+MDtTLS0pQ1tTXT1DW1NdPj4+MXwoMSZDW1MtMV0pPDwzMTtDWzBdPUNbMF0+Pj4xLFIm'@; put 'JihDWzBdPS01MjAwOTM2OTZeQ1swXSl9dGhpcy5zdGF0ZT1BKHcpfSx2LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oQyl7dGhpcy5jYWNoZT15LmNvbmNhdChbdGhpcy5jYWNoZSxDXSk7Zm9yKHZhciB3O3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspdz10aGlzLmNhY2hlLnNsaWNlKDAsMTYp'@; put 'LHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksdGhpcy5naGFzaCh3KX0sdi5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oQyx3KXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2goeS5jb25jYXQoW3RoaXMuY2FjaGUsY10sMTYpKSx0aGlzLmdoYXNoKEEoWzAsQyww'@; put 'LHddKSksdGhpcy5zdGF0ZX0sZmUuZXhwb3J0cz12fSw0NTEyMihmZSl7ZmUuZXhwb3J0cz1mdW5jdGlvbiBqKGgpe2Zvcih2YXIgYyx5PWgubGVuZ3RoO3ktLTspe2lmKDI1NSE9PShjPWgucmVhZFVJbnQ4KHkpKSl7YysrLGgud3JpdGVVSW50OChjLHkpO2JyZWFrfWgud3JpdGVVSW50OCgw'@; put 'LHkpfX19LDkyODg0KGZlLGosaCl7dmFyIHk9aCgzMDI5NSk7ai5lbmNyeXB0PWZ1bmN0aW9uKGMscyl7dmFyIEE9eShzLGMuX3ByZXYpO3JldHVybiBjLl9wcmV2PWMuX2NpcGhlci5lbmNyeXB0QmxvY2soQSksYy5fcHJldn0sai5kZWNyeXB0PWZ1bmN0aW9uKGMscyl7dmFyIEE9Yy5fcHJl'@; put 'djtjLl9wcmV2PXM7dmFyIHY9Yy5fY2lwaGVyLmRlY3J5cHRCbG9jayhzKTtyZXR1cm4geSh2LEEpfX0sNDYzODMoZmUsaixoKXt2YXIgeT1oKDkyODYxKS5CdWZmZXIsYz1oKDMwMjk1KTtmdW5jdGlvbiBzKEEsdixDKXt2YXIgdz12Lmxlbmd0aCxTPWModixBLl9jYWNoZSk7cmV0dXJuIEEu'@; put 'X2NhY2hlPUEuX2NhY2hlLnNsaWNlKHcpLEEuX3ByZXY9eS5jb25jYXQoW0EuX3ByZXYsQz92OlNdKSxTfWouZW5jcnlwdD1mdW5jdGlvbihBLHYsQyl7Zm9yKHZhciBTLHc9eS5hbGxvY1Vuc2FmZSgwKTt2Lmxlbmd0aDspe2lmKDA9PT1BLl9jYWNoZS5sZW5ndGgmJihBLl9jYWNoZT1BLl9j'@; put 'aXBoZXIuZW5jcnlwdEJsb2NrKEEuX3ByZXYpLEEuX3ByZXY9eS5hbGxvY1Vuc2FmZSgwKSksIShBLl9jYWNoZS5sZW5ndGg8PXYubGVuZ3RoKSl7dz15LmNvbmNhdChbdyxzKEEsdixDKV0pO2JyZWFrfXc9eS5jb25jYXQoW3cscyhBLHYuc2xpY2UoMCxTPUEuX2NhY2hlLmxlbmd0aCksQyld'@; put 'KSx2PXYuc2xpY2UoUyl9cmV0dXJuIHd9fSw1NTI2NChmZSxqLGgpe3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcjtmdW5jdGlvbiBjKEEsdixDKXtmb3IodmFyIHgsVSxTPS0xLFI9MDsrK1M8ODspUis9KDEyOCYoVT1BLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEEuX3ByZXYpWzBdXih4PXYmMTw8Ny1T'@; put 'PzEyODowKSkpPj5TJTgsQS5fcHJldj1zKEEuX3ByZXYsQz94OlUpO3JldHVybiBSfWZ1bmN0aW9uIHMoQSx2KXt2YXIgQz1BLmxlbmd0aCx3PS0xLFM9eS5hbGxvY1Vuc2FmZShBLmxlbmd0aCk7Zm9yKEE9eS5jb25jYXQoW0EseS5mcm9tKFt2XSldKTsrK3c8QzspU1t3XT1BW3ddPDwxfEFb'@; put 'dysxXT4+NztyZXR1cm4gU31qLmVuY3J5cHQ9ZnVuY3Rpb24oQSx2LEMpe2Zvcih2YXIgdz12Lmxlbmd0aCxTPXkuYWxsb2NVbnNhZmUodyksTD0tMTsrK0w8dzspU1tMXT1jKEEsdltMXSxDKTtyZXR1cm4gU319LDg2OTc1KGZlLGosaCl7dmFyIHk9aCg5Mjg2MSkuQnVmZmVyO2Z1bmN0aW9u'@; put 'IGMocyxBLHYpe3ZhciB3PXMuX2NpcGhlci5lbmNyeXB0QmxvY2socy5fcHJldilbMF1eQTtyZXR1cm4gcy5fcHJldj15LmNvbmNhdChbcy5fcHJldi5zbGljZSgxKSx5LmZyb20oW3Y/QTp3XSldKSx3fWouZW5jcnlwdD1mdW5jdGlvbihzLEEsdil7Zm9yKHZhciBDPUEubGVuZ3RoLHc9eS5h'@; put 'bGxvY1Vuc2FmZShDKSxTPS0xOysrUzxDOyl3W1NdPWMocyxBW1NdLHYpO3JldHVybiB3fX0sNjMwNTMoZmUsaixoKXt2YXIgeT1oKDMwMjk1KSxjPWgoOTI4NjEpLkJ1ZmZlcixzPWgoNDUxMjIpO2Z1bmN0aW9uIEEoQyl7dmFyIHc9Qy5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhDLl9wcmV2'@; put 'KTtyZXR1cm4gcyhDLl9wcmV2KSx3fWouZW5jcnlwdD1mdW5jdGlvbihDLHcpe3ZhciBTPU1hdGguY2VpbCh3Lmxlbmd0aC8xNiksTD1DLl9jYWNoZS5sZW5ndGg7Qy5fY2FjaGU9Yy5jb25jYXQoW0MuX2NhY2hlLGMuYWxsb2NVbnNhZmUoMTYqUyldKTtmb3IodmFyIFI9MDtSPFM7UisrKXt2'@; put 'YXIgeD1BKEMpLFU9TCsxNipSO0MuX2NhY2hlLndyaXRlVUludDMyQkUoeFswXSxVKzApLEMuX2NhY2hlLndyaXRlVUludDMyQkUoeFsxXSxVKzQpLEMuX2NhY2hlLndyaXRlVUludDMyQkUoeFsyXSxVKzgpLEMuX2NhY2hlLndyaXRlVUludDMyQkUoeFszXSxVKzEyKX12YXIgSD1DLl9jYWNo'@; put 'ZS5zbGljZSgwLHcubGVuZ3RoKTtyZXR1cm4gQy5fY2FjaGU9Qy5fY2FjaGUuc2xpY2Uody5sZW5ndGgpLHkodyxIKX19LDUyNjMyKGZlLGope2ouZW5jcnlwdD1mdW5jdGlvbihoLHkpe3JldHVybiBoLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHkpfSxqLmRlY3J5cHQ9ZnVuY3Rpb24oaCx5KXty'@; put 'ZXR1cm4gaC5fY2lwaGVyLmRlY3J5cHRCbG9jayh5KX19LDUzMChmZSxqLGgpe3ZhciB5PXtFQ0I6aCg1MjYzMiksQ0JDOmgoOTI4ODQpLENGQjpoKDQ2MzgzKSxDRkI4OmgoODY5NzUpLENGQjE6aCg1NTI2NCksT0ZCOmgoNDY4NDMpLENUUjpoKDYzMDUzKSxHQ006aCg2MzA1Myl9LGM9aCgz'@; put 'MjE5KTtmb3IodmFyIHMgaW4gYyljW3NdLm1vZHVsZT15W2Nbc10ubW9kZV07ZmUuZXhwb3J0cz1jfSw0Njg0MyhmZSxqLGgpe3ZhciB5PWgoNDgyODcpLkJ1ZmZlcixjPWgoMzAyOTUpO2Z1bmN0aW9uIHMoQSl7cmV0dXJuIEEuX3ByZXY9QS5fY2lwaGVyLmVuY3J5cHRCbG9jayhBLl9wcmV2'@; put 'KSxBLl9wcmV2fWouZW5jcnlwdD1mdW5jdGlvbihBLHYpe2Zvcig7QS5fY2FjaGUubGVuZ3RoPHYubGVuZ3RoOylBLl9jYWNoZT15LmNvbmNhdChbQS5fY2FjaGUscyhBKV0pO3ZhciBDPUEuX2NhY2hlLnNsaWNlKDAsdi5sZW5ndGgpO3JldHVybiBBLl9jYWNoZT1BLl9jYWNoZS5zbGljZSh2'@; put 'Lmxlbmd0aCksYyh2LEMpfX0sNTA2NTAoZmUsaixoKXt2YXIgeT1oKDUwNDYyKSxjPWgoOTI4NjEpLkJ1ZmZlcixzPWgoNTYxNjgpO2Z1bmN0aW9uIHYoQyx3LFMsTCl7cy5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgeS5BRVModyksdGhpcy5fcHJldj1jLmZyb20oUyksdGhpcy5fY2Fj'@; put 'aGU9Yy5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9zZWNDYWNoZT1jLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9TCx0aGlzLl9tb2RlPUN9aCg1NjY5OCkodixzKSx2LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEMpe3JldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxDLHRoaXMu'@; put 'X2RlY3J5cHQpfSx2LnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt0aGlzLl9jaXBoZXIuc2NydWIoKX0sZmUuZXhwb3J0cz12fSwzMDEyNShmZSxqLGgpe3ZhciB5PWgoODQwNTApLGM9aCgxMjQxKSxzPWgoNTMwKSxBPWgoMzI0MzgpLHY9aCg2ODA3OCk7ZnVuY3Rpb24gUyh4LFUsSCl7'@; put 'aWYoeD14LnRvTG93ZXJDYXNlKCksc1t4XSlyZXR1cm4gYy5jcmVhdGVDaXBoZXJpdih4LFUsSCk7aWYoQVt4XSlyZXR1cm4gbmV3IHkoe2tleTpVLGl2OkgsbW9kZTp4fSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9ZnVuY3Rpb24gTCh4LFUsSCl7aWYoeD14'@; put 'LnRvTG93ZXJDYXNlKCksc1t4XSlyZXR1cm4gYy5jcmVhdGVEZWNpcGhlcml2KHgsVSxIKTtpZihBW3hdKXJldHVybiBuZXcgeSh7a2V5OlUsaXY6SCxtb2RlOngsZGVjcnlwdDohMH0pO3Rocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpfWouY3JlYXRlQ2lwaGVyPWou'@; put 'Q2lwaGVyPWZ1bmN0aW9uIEMoeCxVKXt2YXIgSCxWO2lmKHg9eC50b0xvd2VyQ2FzZSgpLHNbeF0pSD1zW3hdLmtleSxWPXNbeF0uaXY7ZWxzZXtpZighQVt4XSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtIPTgqQVt4XS5rZXksVj1BW3hdLml2fXZhciBOPXYo'@; put 'VSwhMSxILFYpO3JldHVybiBTKHgsTi5rZXksTi5pdil9LGouY3JlYXRlQ2lwaGVyaXY9ai5DaXBoZXJpdj1TLGouY3JlYXRlRGVjaXBoZXI9ai5EZWNpcGhlcj1mdW5jdGlvbiB3KHgsVSl7dmFyIEgsVjtpZih4PXgudG9Mb3dlckNhc2UoKSxzW3hdKUg9c1t4XS5rZXksVj1zW3hdLml2O2Vs'@; put 'c2V7aWYoIUFbeF0pdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7SD04KkFbeF0ua2V5LFY9QVt4XS5pdn12YXIgTj12KFUsITEsSCxWKTtyZXR1cm4gTCh4LE4ua2V5LE4uaXYpfSxqLmNyZWF0ZURlY2lwaGVyaXY9ai5EZWNpcGhlcml2PUwsai5saXN0Q2lwaGVy'@; put 'cz1qLmdldENpcGhlcnM9ZnVuY3Rpb24gUigpe3JldHVybiBPYmplY3Qua2V5cyhBKS5jb25jYXQoYy5nZXRDaXBoZXJzKCkpfX0sODQwNTAoZmUsaixoKXt2YXIgeT1oKDU2MTY4KSxjPWgoMjk1NjApLHM9aCg1NjY5OCksQT1oKDkyODYxKS5CdWZmZXIsdj17ImRlcy1lZGUzLWNiYyI6Yy5D'@; put 'QkMuaW5zdGFudGlhdGUoYy5FREUpLCJkZXMtZWRlMyI6Yy5FREUsImRlcy1lZGUtY2JjIjpjLkNCQy5pbnN0YW50aWF0ZShjLkVERSksImRlcy1lZGUiOmMuRURFLCJkZXMtY2JjIjpjLkNCQy5pbnN0YW50aWF0ZShjLkRFUyksImRlcy1lY2IiOmMuREVTfTtmdW5jdGlvbiBDKHcpe3kuY2Fs'@; put 'bCh0aGlzKTt2YXIgUixTPXcubW9kZS50b0xvd2VyQ2FzZSgpLEw9dltTXTtSPXcuZGVjcnlwdD8iZGVjcnlwdCI6ImVuY3J5cHQiO3ZhciB4PXcua2V5O0EuaXNCdWZmZXIoeCl8fCh4PUEuZnJvbSh4KSksKCJkZXMtZWRlIj09PVN8fCJkZXMtZWRlLWNiYyI9PT1TKSYmKHg9QS5jb25jYXQo'@; put 'W3gseC5zbGljZSgwLDgpXSkpO3ZhciBVPXcuaXY7QS5pc0J1ZmZlcihVKXx8KFU9QS5mcm9tKFUpKSx0aGlzLl9kZXM9TC5jcmVhdGUoe2tleTp4LGl2OlUsdHlwZTpSfSl9di5kZXM9dlsiZGVzLWNiYyJdLHYuZGVzMz12WyJkZXMtZWRlMy1jYmMiXSxmZS5leHBvcnRzPUMscyhDLHkpLEMu'@; put 'cHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odyl7cmV0dXJuIEEuZnJvbSh0aGlzLl9kZXMudXBkYXRlKHcpKX0sQy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIEEuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSl9fSwzMjQzOChmZSxqKXtqWyJkZXMtZWNiIl09e2tleTo4LGl2'@; put 'OjB9LGpbImRlcy1jYmMiXT1qLmRlcz17a2V5OjgsaXY6OH0salsiZGVzLWVkZTMtY2JjIl09ai5kZXMzPXtrZXk6MjQsaXY6OH0salsiZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LGpbImRlcy1lZGUtY2JjIl09e2tleToxNixpdjo4fSxqWyJkZXMtZWRlIl09e2tleToxNixpdjowfX0sNjcz'@; put 'MzIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgzOTQwNCksYz1oKDUzMjA5KSxzPWgoOTI4NjEpLkJ1ZmZlcjtmdW5jdGlvbiBBKHcpe3ZhciBMLFM9dy5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtkb3tMPW5ldyB5KGMoUykpfXdoaWxlKEwuY21wKHcubW9kdWx1cyk+PTB8fCFMLnVtb2Qo'@; put 'dy5wcmltZTEpfHwhTC51bW9kKHcucHJpbWUyKSk7cmV0dXJuIEx9ZnVuY3Rpb24gQyh3LFMpe3ZhciBMPWZ1bmN0aW9uIHYodyl7dmFyIFM9QSh3KTtyZXR1cm57YmxpbmRlcjpTLnRvUmVkKHkubW9udCh3Lm1vZHVsdXMpKS5yZWRQb3cobmV3IHkody5wdWJsaWNFeHBvbmVudCkpLmZyb21S'@; put 'ZWQoKSx1bmJsaW5kZXI6Uy5pbnZtKHcubW9kdWx1cyl9fShTKSxSPVMubW9kdWx1cy5ieXRlTGVuZ3RoKCkseD1uZXcgeSh3KS5tdWwoTC5ibGluZGVyKS51bW9kKFMubW9kdWx1cyksVT14LnRvUmVkKHkubW9udChTLnByaW1lMSkpLEg9eC50b1JlZCh5Lm1vbnQoUy5wcmltZTIpKSxWPVMu'@; put 'Y29lZmZpY2llbnQsTj1TLnByaW1lMSx6PVMucHJpbWUyLFk9VS5yZWRQb3coUy5leHBvbmVudDEpLmZyb21SZWQoKSxGPUgucmVkUG93KFMuZXhwb25lbnQyKS5mcm9tUmVkKCksVz1ZLmlzdWIoRikuaW11bChWKS51bW9kKE4pLmltdWwoeik7cmV0dXJuIEYuaWFkZChXKS5pbXVsKEwudW5i'@; put 'bGluZGVyKS51bW9kKFMubW9kdWx1cykudG9BcnJheUxpa2UocywiYmUiLFIpfUMuZ2V0cj1BLGZlLmV4cG9ydHM9Q30sNTU3MTUoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1oKDYyOTUxKX0sMjAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg5Mjg2MSkuQnVmZmVyLGM9'@; put 'aCg0NzEwOCkscz1oKDQ2NzM3KSxBPWgoNTY2OTgpLHY9aCgzNTM1OSksQz1oKDc0ODQ3KSx3PWgoNjI5NTEpO2Z1bmN0aW9uIFMoVSl7cy5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciBIPXdbVV07aWYoIUgpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5f'@; put 'aGFzaFR5cGU9SC5oYXNoLHRoaXMuX2hhc2g9YyhILmhhc2gpLHRoaXMuX3RhZz1ILmlkLHRoaXMuX3NpZ25UeXBlPUguc2lnbn1mdW5jdGlvbiBMKFUpe3MuV3JpdGFibGUuY2FsbCh0aGlzKTt2YXIgSD13W1VdO2lmKCFIKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2Vz'@; put 'dCIpO3RoaXMuX2hhc2g9YyhILmhhc2gpLHRoaXMuX3RhZz1ILmlkLHRoaXMuX3NpZ25UeXBlPUguc2lnbn1mdW5jdGlvbiBSKFUpe3JldHVybiBuZXcgUyhVKX1mdW5jdGlvbiB4KFUpe3JldHVybiBuZXcgTChVKX1PYmplY3Qua2V5cyh3KS5mb3JFYWNoKGZ1bmN0aW9uKFUpe3dbVV0uaWQ9'@; put 'eS5mcm9tKHdbVV0uaWQsImhleCIpLHdbVS50b0xvd2VyQ2FzZSgpXT13W1VdfSksQShTLHMuV3JpdGFibGUpLFMucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihILFYsTil7dGhpcy5faGFzaC51cGRhdGUoSCksTigpfSxTLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oSCxWKXtyZXR1cm4g'@; put 'dGhpcy5faGFzaC51cGRhdGUoInN0cmluZyI9PXR5cGVvZiBIP3kuZnJvbShILFYpOkgpLHRoaXN9LFMucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oSCxWKXt0aGlzLmVuZCgpO3ZhciBOPXRoaXMuX2hhc2guZGlnZXN0KCksej12KE4sSCx0aGlzLl9oYXNoVHlwZSx0aGlzLl9zaWduVHlwZSx0'@; put 'aGlzLl90YWcpO3JldHVybiBWP3oudG9TdHJpbmcoVik6en0sQShMLHMuV3JpdGFibGUpLEwucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihILFYsTil7dGhpcy5faGFzaC51cGRhdGUoSCksTigpfSxMLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oSCxWKXtyZXR1cm4gdGhpcy5faGFzaC51'@; put 'cGRhdGUoInN0cmluZyI9PXR5cGVvZiBIP3kuZnJvbShILFYpOkgpLHRoaXN9LEwucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihILFYsTil7dmFyIHo9InN0cmluZyI9PXR5cGVvZiBWP3kuZnJvbShWLE4pOlY7dGhpcy5lbmQoKTt2YXIgWT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybiBD'@; put 'KHosWSxILHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyl9LGZlLmV4cG9ydHM9e1NpZ246UixWZXJpZnk6eCxjcmVhdGVTaWduOlIsY3JlYXRlVmVyaWZ5Onh9fSwzNTM1OShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkyODYxKS5CdWZmZXIsYz1oKDgzNTA3KSxzPWgoNjczMzIpLEE9'@; put 'aCg4NjcyOSkuZWMsdj1oKDM5NDA0KSxDPWgoNzgxNzApLHc9aCg2NDU4OSk7ZnVuY3Rpb24gSChGLFcscSxyZSl7aWYoKEY9eS5mcm9tKEYudG9BcnJheSgpKSkubGVuZ3RoPFcuYnl0ZUxlbmd0aCgpKXt2YXIgbWU9eS5hbGxvYyhXLmJ5dGVMZW5ndGgoKS1GLmxlbmd0aCk7Rj15LmNvbmNh'@; put 'dChbbWUsRl0pfXZhciBDZT1xLmxlbmd0aCxJZT1mdW5jdGlvbiBOKEYsVyl7Rj0oRj1WKEYsVykpLm1vZChXKTt2YXIgcT15LmZyb20oRi50b0FycmF5KCkpO2lmKHEubGVuZ3RoPFcuYnl0ZUxlbmd0aCgpKXt2YXIgcmU9eS5hbGxvYyhXLmJ5dGVMZW5ndGgoKS1xLmxlbmd0aCk7cT15LmNv'@; put 'bmNhdChbcmUscV0pfXJldHVybiBxfShxLFcpLGtlPXkuYWxsb2MoQ2UpO2tlLmZpbGwoMSk7dmFyIHFlPXkuYWxsb2MoQ2UpO3JldHVybiBxZT1jKHJlLHFlKS51cGRhdGUoa2UpLnVwZGF0ZSh5LmZyb20oWzBdKSkudXBkYXRlKEYpLnVwZGF0ZShJZSkuZGlnZXN0KCksa2U9YyhyZSxxZSku'@; put 'dXBkYXRlKGtlKS5kaWdlc3QoKSx7azpxZT1jKHJlLHFlKS51cGRhdGUoa2UpLnVwZGF0ZSh5LmZyb20oWzFdKSkudXBkYXRlKEYpLnVwZGF0ZShJZSkuZGlnZXN0KCksdjprZT1jKHJlLHFlKS51cGRhdGUoa2UpLmRpZ2VzdCgpfX1mdW5jdGlvbiBWKEYsVyl7dmFyIHE9bmV3IHYoRikscmU9'@; put 'KEYubGVuZ3RoPDwzKS1XLmJpdExlbmd0aCgpO3JldHVybiByZT4wJiZxLmlzaHJuKHJlKSxxfWZ1bmN0aW9uIHooRixXLHEpe3ZhciByZSxtZTtkb3tmb3IocmU9eS5hbGxvYygwKTs4KnJlLmxlbmd0aDxGLmJpdExlbmd0aCgpOylXLnY9YyhxLFcuaykudXBkYXRlKFcudikuZGlnZXN0KCks'@; put 'cmU9eS5jb25jYXQoW3JlLFcudl0pO21lPVYocmUsRiksVy5rPWMocSxXLmspLnVwZGF0ZShXLnYpLnVwZGF0ZSh5LmZyb20oWzBdKSkuZGlnZXN0KCksVy52PWMocSxXLmspLnVwZGF0ZShXLnYpLmRpZ2VzdCgpfXdoaWxlKC0xIT09bWUuY21wKEYpKTtyZXR1cm4gbWV9ZnVuY3Rpb24gWShG'@; put 'LFcscSxyZSl7cmV0dXJuIEYudG9SZWQodi5tb250KHEpKS5yZWRQb3coVykuZnJvbVJlZCgpLm1vZChyZSl9ZmUuZXhwb3J0cz1mdW5jdGlvbiBMKEYsVyxxLHJlLG1lKXt2YXIgQ2U9QyhXKTtpZihDZS5jdXJ2ZSl7aWYoImVjZHNhIiE9PXJlJiYiZWNkc2EvcnNhIiE9PXJlKXRocm93IG5l'@; put 'dyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBSKEYsVyl7dmFyIHE9d1tXLmN1cnZlLmpvaW4oIi4iKV07aWYoIXEpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGN1cnZlICIrVy5jdXJ2ZS5qb2luKCIuIikpO3ZhciBDZT1uZXcgQShxKS5rZXlGcm9t'@; put 'UHJpdmF0ZShXLnByaXZhdGVLZXkpLnNpZ24oRik7cmV0dXJuIHkuZnJvbShDZS50b0RFUigpKX0oRixDZSl9aWYoImRzYSI9PT1DZS50eXBlKXtpZigiZHNhIiE9PXJlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiB4KEYsVyxxKXtm'@; put 'b3IodmFyIHFlLHJlPVcucGFyYW1zLnByaXZfa2V5LG1lPVcucGFyYW1zLnAsQ2U9Vy5wYXJhbXMucSxJZT1XLnBhcmFtcy5nLGtlPW5ldyB2KDApLFg9VihGLENlKS5tb2QoQ2UpLGY9ITEsYj1IKHJlLENlLEYscSk7ITE9PT1mOylrZT1ZKEllLHFlPXooQ2UsYixxKSxtZSxDZSksMD09PShm'@; put 'PXFlLmludm0oQ2UpLmltdWwoWC5hZGQocmUubXVsKGtlKSkpLm1vZChDZSkpLmNtcG4oMCkmJihmPSExLGtlPW5ldyB2KDApKTtyZXR1cm4gZnVuY3Rpb24gVShGLFcpe0Y9Ri50b0FycmF5KCksVz1XLnRvQXJyYXkoKSwxMjgmRlswXSYmKEY9WzBdLmNvbmNhdChGKSksMTI4JldbMF0mJihX'@; put 'PVswXS5jb25jYXQoVykpO3ZhciByZT1bNDgsRi5sZW5ndGgrVy5sZW5ndGgrNCwyLEYubGVuZ3RoXTtyZXR1cm4gcmU9cmUuY29uY2F0KEYsWzIsVy5sZW5ndGhdLFcpLHkuZnJvbShyZSl9KGtlLGYpfShGLENlLHEpfWlmKCJyc2EiIT09cmUmJiJlY2RzYS9yc2EiIT09cmUpdGhyb3cgbmV3'@; put 'IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlIik7aWYodm9pZCAwIT09Vy5wYWRkaW5nJiYxIT09Vy5wYWRkaW5nKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBvciB1bnN1cHBvcnRlZCBwYWRkaW5nIG1vZGUiKTtGPXkuY29uY2F0KFttZSxGXSk7Zm9yKHZhciBJZT1DZS5tb2R1bHVz'@; put 'LmJ5dGVMZW5ndGgoKSxrZT1bMCwxXTtGLmxlbmd0aCtrZS5sZW5ndGgrMTxJZTspa2UucHVzaCgyNTUpO2tlLnB1c2goMCk7Zm9yKHZhciBxZT0tMTsrK3FlPEYubGVuZ3RoOylrZS5wdXNoKEZbcWVdKTtyZXR1cm4gcyhrZSxDZSl9LGZlLmV4cG9ydHMuZ2V0S2V5PUgsZmUuZXhwb3J0cy5t'@; put 'YWtlS2V5PXp9LDc0ODQ3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPWgoMzk0MDQpLHM9aCg4NjcyOSkuZWMsQT1oKDc4MTcwKSx2PWgoNjQ1ODkpO2Z1bmN0aW9uIEwoUix4KXtpZihSLmNtcG4oMCk8PTApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNp'@; put 'ZyIpO2lmKFIuY21wKHgpPj0wKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKX1mZS5leHBvcnRzPWZ1bmN0aW9uIEMoUix4LFUsSCxWKXt2YXIgTj1BKFUpO2lmKCJlYyI9PT1OLnR5cGUpe2lmKCJlY2RzYSIhPT1IJiYiZWNkc2EvcnNhIiE9PUgpdGhyb3cgbmV3IEVycm9yKCJ3cm9u'@; put 'ZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gdyhSLHgsVSl7dmFyIEg9dltVLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKV07aWYoIUgpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGN1cnZlICIrVS5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIikpO3JldHVy'@; put 'biBuZXcgcyhIKS52ZXJpZnkoeCxSLFUuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhKX0oUix4LE4pfWlmKCJkc2EiPT09Ti50eXBlKXtpZigiZHNhIiE9PUgpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gUyhSLHgsVSl7dmFyIEg9'@; put 'VS5kYXRhLnAsVj1VLmRhdGEucSxOPVUuZGF0YS5nLHo9VS5kYXRhLnB1Yl9rZXksWT1BLnNpZ25hdHVyZS5kZWNvZGUoUiwiZGVyIiksRj1ZLnMsVz1ZLnI7TChGLFYpLEwoVyxWKTt2YXIgcT1jLm1vbnQoSCkscmU9Ri5pbnZtKFYpO3JldHVybiAwPT09Ti50b1JlZChxKS5yZWRQb3cobmV3'@; put 'IGMoeCkubXVsKHJlKS5tb2QoVikpLmZyb21SZWQoKS5tdWwoei50b1JlZChxKS5yZWRQb3coVy5tdWwocmUpLm1vZChWKSkuZnJvbVJlZCgpKS5tb2QoSCkubW9kKFYpLmNtcChXKX0oUix4LE4pfWlmKCJyc2EiIT09SCYmImVjZHNhL3JzYSIhPT1IKXRocm93IG5ldyBFcnJvcigid3Jvbmcg'@; put 'cHVibGljIGtleSB0eXBlIik7eD15LmNvbmNhdChbVix4XSk7Zm9yKHZhciB6PU4ubW9kdWx1cy5ieXRlTGVuZ3RoKCksWT1bMV0sRj0wO3gubGVuZ3RoK1kubGVuZ3RoKzI8ejspWS5wdXNoKDI1NSksRis9MTtZLnB1c2goMCk7Zm9yKHZhciBXPS0xOysrVzx4Lmxlbmd0aDspWS5wdXNoKHhb'@; put 'V10pO1k9eS5mcm9tKFkpO3ZhciBxPWMubW9udChOLm1vZHVsdXMpO1I9KFI9bmV3IGMoUikudG9SZWQocSkpLnJlZFBvdyhuZXcgYyhOLnB1YmxpY0V4cG9uZW50KSksUj15LmZyb20oUi5mcm9tUmVkKCkudG9BcnJheSgpKTt2YXIgcmU9Rjw4PzE6MDtmb3Ioej1NYXRoLm1pbihSLmxlbmd0'@; put 'aCxZLmxlbmd0aCksUi5sZW5ndGghPT1ZLmxlbmd0aCYmKHJlPTEpLFc9LTE7KytXPHo7KXJlfD1SW1ddXllbV107cmV0dXJuIDA9PT1yZX19LDMyMjQwKGZlKXt2YXIgaj17fS50b1N0cmluZztmZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGgpe3JldHVybiJbb2JqZWN0IEFy'@; put 'cmF5XSI9PWouY2FsbChoKX19LDI2MjQ4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMzMyMjUpLGM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKFUpe3ZhciBIPVtdO2Zvcih2YXIgViBpbiBVKUgucHVzaChWKTtyZXR1cm4gSH07ZmUuZXhwb3J0cz1MO3ZhciBzPU9iamVjdC5jcmVhdGUo'@; put 'aCgxNTYyMikpO3MuaW5oZXJpdHM9aCg1NjY5OCk7dmFyIEE9aCgzMDIwNiksdj1oKDczMTQpO3MuaW5oZXJpdHMoTCxBKTtmb3IodmFyIEM9Yyh2LnByb3RvdHlwZSksdz0wO3c8Qy5sZW5ndGg7dysrKXt2YXIgUz1DW3ddO0wucHJvdG90eXBlW1NdfHwoTC5wcm90b3R5cGVbU109di5wcm90'@; put 'b3R5cGVbU10pfWZ1bmN0aW9uIEwoVSl7aWYoISh0aGlzIGluc3RhbmNlb2YgTCkpcmV0dXJuIG5ldyBMKFUpO0EuY2FsbCh0aGlzLFUpLHYuY2FsbCh0aGlzLFUpLFUmJiExPT09VS5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLFUmJiExPT09VS53cml0YWJsZSYmKHRoaXMud3JpdGFi'@; put 'bGU9ITEpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCxVJiYhMT09PVUuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSksdGhpcy5vbmNlKCJlbmQiLFIpfWZ1bmN0aW9uIFIoKXt0aGlzLmFsbG93SGFsZk9wZW58fHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fHkubmV4dFRp'@; put 'Y2soeCx0aGlzKX1mdW5jdGlvbiB4KFUpe1UuZW5kKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSks'@; put 'T2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMu'@; put 'X3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oVSl7dm9pZCAwPT09dGhpcy5fcmVhZGFibGVTdGF0ZXx8dm9pZCAwPT09dGhpcy5fd3JpdGFibGVTdGF0ZXx8KHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPVUsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9'@; put 'VSl9fSksTC5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oVSxIKXt0aGlzLnB1c2gobnVsbCksdGhpcy5lbmQoKSx5Lm5leHRUaWNrKEgsVSl9fSw3NTI0MihmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPXM7dmFyIHk9aCg4MTgxNiksYz1PYmplY3QuY3JlYXRlKGgoMTU2MjIp'@; put 'KTtmdW5jdGlvbiBzKEEpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHMpKXJldHVybiBuZXcgcyhBKTt5LmNhbGwodGhpcyxBKX1jLmluaGVyaXRzPWgoNTY2OTgpLGMuaW5oZXJpdHMocyx5KSxzLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKEEsdixDKXtDKG51bGwsQSl9fSwzMDIwNihm'@; put 'ZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPWgoMzMyMjUpO2ZlLmV4cG9ydHM9cmU7dmFyIEEscz1oKDMyMjQwKTtyZS5SZWFkYWJsZVN0YXRlPXEsaCgzNzAwNyk7dmFyIEM9ZnVuY3Rpb24oYWUseGUpe3JldHVybiBhZS5saXN0ZW5lcnMoeGUpLmxlbmd0aH0sdz1oKDU1'@; put 'NjcpLFM9aCgyNDExNikuQnVmZmVyLEw9KHR5cGVvZiBoLmc8InUiP2guZzp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30pLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxVPU9iamVjdC5jcmVhdGUoaCgxNTYyMikpO1UuaW5oZXJpdHM9aCg1NjY5OCk7'@; put 'dmFyIEg9aCg5MjY2OCksVj12b2lkIDA7Vj1IJiZILmRlYnVnbG9nP0guZGVidWdsb2coInN0cmVhbSIpOmZ1bmN0aW9uKCl7fTt2YXIgWSxOPWgoMjA2NzIpLHo9aCgzNjI3OCk7VS5pbmhlcml0cyhyZSx3KTt2YXIgRj1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1'@; put 'bWUiXTtmdW5jdGlvbiBxKGFlLHhlKXt2YXIgamU9eGUgaW5zdGFuY2VvZihBPUF8fGgoMjYyNDgpKTt0aGlzLm9iamVjdE1vZGU9ISEoYWU9YWV8fHt9KS5vYmplY3RNb2RlLGplJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFhZS5yZWFkYWJsZU9iamVjdE1vZGUpO3Zh'@; put 'ciBBZT1hZS5oaWdoV2F0ZXJNYXJrLERlPWFlLnJlYWRhYmxlSGlnaFdhdGVyTWFyazt0aGlzLmhpZ2hXYXRlck1hcms9QWV8fDA9PT1BZT9BZTpqZSYmKERlfHwwPT09RGUpP0RlOnRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NCx0aGlzLmhpZ2hXYXRlck1hcms9TWF0aC5mbG9vcih0aGlzLmhp'@; put 'Z2hXYXRlck1hcmspLHRoaXMuYnVmZmVyPW5ldyBOLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5u'@; put 'ZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1hZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmF3YWl0'@; put 'RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCxhZS5lbmNvZGluZyYmKFl8fChZPWgoNjQyNykuSSksdGhpcy5kZWNvZGVyPW5ldyBZKGFlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPWFlLmVuY29kaW5nKX1mdW5jdGlvbiBy'@; put 'ZShhZSl7aWYoQT1BfHxoKDI2MjQ4KSwhKHRoaXMgaW5zdGFuY2VvZiByZSkpcmV0dXJuIG5ldyByZShhZSk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgcShhZSx0aGlzKSx0aGlzLnJlYWRhYmxlPSEwLGFlJiYoImZ1bmN0aW9uIj09dHlwZW9mIGFlLnJlYWQmJih0aGlzLl9yZWFkPWFlLnJl'@; put 'YWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBhZS5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1hZS5kZXN0cm95KSksdy5jYWxsKHRoaXMpfWZ1bmN0aW9uIG1lKGFlLHhlLGplLEFlLERlKXt2YXIgZ2UsRmU9YWUuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIG51bGw9PT14ZT8oRmUucmVhZGluZz0hMSxm'@; put 'dW5jdGlvbiBiKGFlLHhlKXtpZigheGUuZW5kZWQpe2lmKHhlLmRlY29kZXIpe3ZhciBqZT14ZS5kZWNvZGVyLmVuZCgpO2plJiZqZS5sZW5ndGgmJih4ZS5idWZmZXIucHVzaChqZSkseGUubGVuZ3RoKz14ZS5vYmplY3RNb2RlPzE6amUubGVuZ3RoKX14ZS5lbmRlZD0hMCxrKGFlKX19KGFl'@; put 'LEZlKSk6KERlfHwoZ2U9ZnVuY3Rpb24gSWUoYWUseGUpe3ZhciBqZTtyZXR1cm4hZnVuY3Rpb24geChhZSl7cmV0dXJuIFMuaXNCdWZmZXIoYWUpfHxhZSBpbnN0YW5jZW9mIEx9KHhlKSYmInN0cmluZyIhPXR5cGVvZiB4ZSYmdm9pZCAwIT09eGUmJiFhZS5vYmplY3RNb2RlJiYoamU9bmV3'@; put 'IFR5cGVFcnJvcigiSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuayIpKSxqZX0oRmUseGUpKSxnZT9hZS5lbWl0KCJlcnJvciIsZ2UpOkZlLm9iamVjdE1vZGV8fHhlJiZ4ZS5sZW5ndGg+MD8oInN0cmluZyIhPXR5cGVvZiB4ZSYmIUZlLm9iamVjdE1vZGUmJk9iamVjdC5nZXRQcm90'@; put 'b3R5cGVPZih4ZSkhPT1TLnByb3RvdHlwZSYmKHhlPWZ1bmN0aW9uIFIoYWUpe3JldHVybiBTLmZyb20oYWUpfSh4ZSkpLEFlP0ZlLmVuZEVtaXR0ZWQ/YWUuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQiKSk6Q2UoYWUsRmUseGUsITAp'@; put 'OkZlLmVuZGVkP2FlLmVtaXQoImVycm9yIixuZXcgRXJyb3IoInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIikpOihGZS5yZWFkaW5nPSExLEZlLmRlY29kZXImJiFqZT8oeGU9RmUuZGVjb2Rlci53cml0ZSh4ZSksRmUub2JqZWN0TW9kZXx8MCE9PXhlLmxlbmd0aD9DZShhZSxGZSx4ZSwhMSk6'@; put 'QihhZSxGZSkpOkNlKGFlLEZlLHhlLCExKSkpOkFlfHwoRmUucmVhZGluZz0hMSkpLGZ1bmN0aW9uIGtlKGFlKXtyZXR1cm4hYWUuZW5kZWQmJihhZS5uZWVkUmVhZGFibGV8fGFlLmxlbmd0aDxhZS5oaWdoV2F0ZXJNYXJrfHwwPT09YWUubGVuZ3RoKX0oRmUpfWZ1bmN0aW9uIENlKGFlLHhl'@; put 'LGplLEFlKXt4ZS5mbG93aW5nJiYwPT09eGUubGVuZ3RoJiYheGUuc3luYz8oYWUuZW1pdCgiZGF0YSIsamUpLGFlLnJlYWQoMCkpOih4ZS5sZW5ndGgrPXhlLm9iamVjdE1vZGU/MTpqZS5sZW5ndGgsQWU/eGUuYnVmZmVyLnVuc2hpZnQoamUpOnhlLmJ1ZmZlci5wdXNoKGplKSx4ZS5uZWVk'@; put 'UmVhZGFibGUmJmsoYWUpKSxCKGFlLHhlKX1mdW5jdGlvbiBmKGFlLHhlKXtyZXR1cm4gYWU8PTB8fDA9PT14ZS5sZW5ndGgmJnhlLmVuZGVkPzA6eGUub2JqZWN0TW9kZT8xOmFlIT1hZT94ZS5mbG93aW5nJiZ4ZS5sZW5ndGg/eGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6eGUubGVuZ3Ro'@; put 'OihhZT54ZS5oaWdoV2F0ZXJNYXJrJiYoeGUuaGlnaFdhdGVyTWFyaz1mdW5jdGlvbiBYKGFlKXtyZXR1cm4gYWU+PTgzODg2MDg/YWU9ODM4ODYwODooYWUtLSxhZXw9YWU+Pj4xLGFlfD1hZT4+PjIsYWV8PWFlPj4+NCxhZXw9YWU+Pj44LGFlfD1hZT4+PjE2LGFlKyspLGFlfShhZSkpLGFl'@; put 'PD14ZS5sZW5ndGg/YWU6eGUuZW5kZWQ/eGUubGVuZ3RoOih4ZS5uZWVkUmVhZGFibGU9ITAsMCkpfWZ1bmN0aW9uIGsoYWUpe3ZhciB4ZT1hZS5fcmVhZGFibGVTdGF0ZTt4ZS5uZWVkUmVhZGFibGU9ITEseGUuZW1pdHRlZFJlYWRhYmxlfHwoVigiZW1pdFJlYWRhYmxlIix4ZS5mbG93aW5n'@; put 'KSx4ZS5lbWl0dGVkUmVhZGFibGU9ITAseGUuc3luYz9jLm5leHRUaWNrKE0sYWUpOk0oYWUpKX1mdW5jdGlvbiBNKGFlKXtWKCJlbWl0IHJlYWRhYmxlIiksYWUuZW1pdCgicmVhZGFibGUiKSx1ZShhZSl9ZnVuY3Rpb24gQihhZSx4ZSl7eGUucmVhZGluZ01vcmV8fCh4ZS5yZWFkaW5nTW9y'@; put 'ZT0hMCxjLm5leHRUaWNrKEssYWUseGUpKX1mdW5jdGlvbiBLKGFlLHhlKXtmb3IodmFyIGplPXhlLmxlbmd0aDsheGUucmVhZGluZyYmIXhlLmZsb3dpbmcmJiF4ZS5lbmRlZCYmeGUubGVuZ3RoPHhlLmhpZ2hXYXRlck1hcmsmJihWKCJtYXliZVJlYWRNb3JlIHJlYWQgMCIpLGFlLnJlYWQo'@; put 'MCksamUhPT14ZS5sZW5ndGgpOylqZT14ZS5sZW5ndGg7eGUucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gRChhZSl7VigicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIiksYWUucmVhZCgwKX1mdW5jdGlvbiBJKGFlLHhlKXt4ZS5yZWFkaW5nfHwoVigicmVzdW1lIHJlYWQgMCIpLGFlLnJlYWQo'@; put 'MCkpLHhlLnJlc3VtZVNjaGVkdWxlZD0hMSx4ZS5hd2FpdERyYWluPTAsYWUuZW1pdCgicmVzdW1lIiksdWUoYWUpLHhlLmZsb3dpbmcmJiF4ZS5yZWFkaW5nJiZhZS5yZWFkKDApfWZ1bmN0aW9uIHVlKGFlKXt2YXIgeGU9YWUuX3JlYWRhYmxlU3RhdGU7Zm9yKFYoImZsb3ciLHhlLmZsb3dp'@; put 'bmcpO3hlLmZsb3dpbmcmJm51bGwhPT1hZS5yZWFkKCk7KTt9ZnVuY3Rpb24gbmUoYWUseGUpe3JldHVybiAwPT09eGUubGVuZ3RoP251bGw6KHhlLm9iamVjdE1vZGU/amU9eGUuYnVmZmVyLnNoaWZ0KCk6IWFlfHxhZT49eGUubGVuZ3RoPyhqZT14ZS5kZWNvZGVyP3hlLmJ1ZmZlci5qb2lu'@; put 'KCIiKToxPT09eGUuYnVmZmVyLmxlbmd0aD94ZS5idWZmZXIuaGVhZC5kYXRhOnhlLmJ1ZmZlci5jb25jYXQoeGUubGVuZ3RoKSx4ZS5idWZmZXIuY2xlYXIoKSk6amU9ZnVuY3Rpb24gX2UoYWUseGUsamUpe3ZhciBBZTtyZXR1cm4gYWU8eGUuaGVhZC5kYXRhLmxlbmd0aD8oQWU9eGUuaGVh'@; put 'ZC5kYXRhLnNsaWNlKDAsYWUpLHhlLmhlYWQuZGF0YT14ZS5oZWFkLmRhdGEuc2xpY2UoYWUpKTpBZT1hZT09PXhlLmhlYWQuZGF0YS5sZW5ndGg/eGUuc2hpZnQoKTpqZT9mdW5jdGlvbiBQZShhZSx4ZSl7dmFyIGplPXhlLmhlYWQsQWU9MSxEZT1qZS5kYXRhO2ZvcihhZS09RGUubGVuZ3Ro'@; put 'O2plPWplLm5leHQ7KXt2YXIgRmU9amUuZGF0YSxnZT1hZT5GZS5sZW5ndGg/RmUubGVuZ3RoOmFlO2lmKERlKz1nZT09PUZlLmxlbmd0aD9GZTpGZS5zbGljZSgwLGFlKSwwPT09KGFlLT1nZSkpe2dlPT09RmUubGVuZ3RoPygrK0FlLHhlLmhlYWQ9amUubmV4dD9qZS5uZXh0OnhlLnRhaWw9'@; put 'bnVsbCk6KHhlLmhlYWQ9amUsamUuZGF0YT1GZS5zbGljZShnZSkpO2JyZWFrfSsrQWV9cmV0dXJuIHhlLmxlbmd0aC09QWUsRGV9KGFlLHhlKTpmdW5jdGlvbiBvdChhZSx4ZSl7dmFyIGplPVMuYWxsb2NVbnNhZmUoYWUpLEFlPXhlLmhlYWQsRGU9MTtmb3IoQWUuZGF0YS5jb3B5KGplKSxh'@; put 'ZS09QWUuZGF0YS5sZW5ndGg7QWU9QWUubmV4dDspe3ZhciBGZT1BZS5kYXRhLGdlPWFlPkZlLmxlbmd0aD9GZS5sZW5ndGg6YWU7aWYoRmUuY29weShqZSxqZS5sZW5ndGgtYWUsMCxnZSksMD09PShhZS09Z2UpKXtnZT09PUZlLmxlbmd0aD8oKytEZSx4ZS5oZWFkPUFlLm5leHQ/QWUubmV4'@; put 'dDp4ZS50YWlsPW51bGwpOih4ZS5oZWFkPUFlLEFlLmRhdGE9RmUuc2xpY2UoZ2UpKTticmVha30rK0RlfXJldHVybiB4ZS5sZW5ndGgtPURlLGplfShhZSx4ZSksQWV9KGFlLHhlLmJ1ZmZlcix4ZS5kZWNvZGVyKSxqZSk7dmFyIGplfWZ1bmN0aW9uIGx0KGFlKXt2YXIgeGU9YWUuX3JlYWRh'@; put 'YmxlU3RhdGU7aWYoeGUubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCciZW5kUmVhZGFibGUoKSIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTt4ZS5lbmRFbWl0dGVkfHwoeGUuZW5kZWQ9ITAsYy5uZXh0VGljayhkdCx4ZSxhZSkpfWZ1bmN0aW9uIGR0KGFlLHhlKXshYWUuZW5kRW1p'@; put 'dHRlZCYmMD09PWFlLmxlbmd0aCYmKGFlLmVuZEVtaXR0ZWQ9ITAseGUucmVhZGFibGU9ITEseGUuZW1pdCgiZW5kIikpfWZ1bmN0aW9uIFJlKGFlLHhlKXtmb3IodmFyIGplPTAsQWU9YWUubGVuZ3RoO2plPEFlO2plKyspaWYoYWVbamVdPT09eGUpcmV0dXJuIGplO3JldHVybi0xfU9iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShyZS5wcm90b3R5cGUsImRlc3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKGFlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYo'@; put 'dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9YWUpfX0pLHJlLnByb3RvdHlwZS5kZXN0cm95PXouZGVzdHJveSxyZS5wcm90b3R5cGUuX3VuZGVzdHJveT16LnVuZGVzdHJveSxyZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oYWUseGUpe3RoaXMucHVzaChudWxsKSx4ZShhZSl9'@; put 'LHJlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGFlLHhlKXt2YXIgQWUsamU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gamUub2JqZWN0TW9kZT9BZT0hMDoic3RyaW5nIj09dHlwZW9mIGFlJiYoKHhlPXhlfHxqZS5kZWZhdWx0RW5jb2RpbmcpIT09amUuZW5jb2RpbmcmJihhZT1TLmZy'@; put 'b20oYWUseGUpLHhlPSIiKSxBZT0hMCksbWUodGhpcyxhZSx4ZSwhMSxBZSl9LHJlLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGFlKXtyZXR1cm4gbWUodGhpcyxhZSxudWxsLCEwLCExKX0scmUucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFk'@; put 'YWJsZVN0YXRlLmZsb3dpbmd9LHJlLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihhZSl7cmV0dXJuIFl8fChZPWgoNjQyNykuSSksdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPW5ldyBZKGFlKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPWFlLHRoaXN9LHJlLnByb3Rv'@; put 'dHlwZS5yZWFkPWZ1bmN0aW9uKGFlKXtWKCJyZWFkIixhZSksYWU9cGFyc2VJbnQoYWUsMTApO3ZhciB4ZT10aGlzLl9yZWFkYWJsZVN0YXRlLGplPWFlO2lmKDAhPT1hZSYmKHhlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PWFlJiZ4ZS5uZWVkUmVhZGFibGUmJih4ZS5sZW5ndGg+PXhlLmhp'@; put 'Z2hXYXRlck1hcmt8fHhlLmVuZGVkKSlyZXR1cm4gVigicmVhZDogZW1pdFJlYWRhYmxlIix4ZS5sZW5ndGgseGUuZW5kZWQpLDA9PT14ZS5sZW5ndGgmJnhlLmVuZGVkP2x0KHRoaXMpOmsodGhpcyksbnVsbDtpZigwPT09KGFlPWYoYWUseGUpKSYmeGUuZW5kZWQpcmV0dXJuIDA9PT14ZS5s'@; put 'ZW5ndGgmJmx0KHRoaXMpLG51bGw7dmFyIERlLEFlPXhlLm5lZWRSZWFkYWJsZTtyZXR1cm4gVigibmVlZCByZWFkYWJsZSIsQWUpLCgwPT09eGUubGVuZ3RofHx4ZS5sZW5ndGgtYWU8eGUuaGlnaFdhdGVyTWFyaykmJlYoImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrIixBZT0hMCkseGUu'@; put 'ZW5kZWR8fHhlLnJlYWRpbmc/VigicmVhZGluZyBvciBlbmRlZCIsQWU9ITEpOkFlJiYoVigiZG8gcmVhZCIpLHhlLnJlYWRpbmc9ITAseGUuc3luYz0hMCwwPT09eGUubGVuZ3RoJiYoeGUubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKHhlLmhpZ2hXYXRlck1hcmspLHhlLnN5bmM9ITEs'@; put 'eGUucmVhZGluZ3x8KGFlPWYoamUseGUpKSksbnVsbD09PShEZT1hZT4wP25lKGFlLHhlKTpudWxsKT8oeGUubmVlZFJlYWRhYmxlPSEwLGFlPTApOnhlLmxlbmd0aC09YWUsMD09PXhlLmxlbmd0aCYmKHhlLmVuZGVkfHwoeGUubmVlZFJlYWRhYmxlPSEwKSxqZSE9PWFlJiZ4ZS5lbmRlZCYm'@; put 'bHQodGhpcykpLG51bGwhPT1EZSYmdGhpcy5lbWl0KCJkYXRhIixEZSksRGV9LHJlLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihhZSl7dGhpcy5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCIpKX0scmUucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24o'@; put 'YWUseGUpe3ZhciBqZT10aGlzLEFlPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKEFlLnBpcGVzQ291bnQpe2Nhc2UgMDpBZS5waXBlcz1hZTticmVhaztjYXNlIDE6QWUucGlwZXM9W0FlLnBpcGVzLGFlXTticmVhaztkZWZhdWx0OkFlLnBpcGVzLnB1c2goYWUpfUFlLnBpcGVzQ291bnQr'@; put 'PTEsVigicGlwZSBjb3VudD0lZCBvcHRzPSVqIixBZS5waXBlc0NvdW50LHhlKTt2YXIgRmU9eGUmJiExPT09eGUuZW5kfHxhZT09PXkuc3Rkb3V0fHxhZT09PXkuc3RkZXJyP0d0OmNlO2Z1bmN0aW9uIGNlKCl7Vigib25lbmQiKSxhZS5lbmQoKX1BZS5lbmRFbWl0dGVkP2MubmV4dFRpY2so'@; put 'RmUpOmplLm9uY2UoImVuZCIsRmUpLGFlLm9uKCJ1bnBpcGUiLGZ1bmN0aW9uIGdlKGd0LFh0KXtWKCJvbnVucGlwZSIpLGd0PT09amUmJlh0JiYhMT09PVh0Lmhhc1VucGlwZWQmJihYdC5oYXNVbnBpcGVkPSEwLGZ1bmN0aW9uIEplKCl7VigiY2xlYW51cCIpLGFlLnJlbW92ZUxpc3RlbmVy'@; put 'KCJjbG9zZSIsUnQpLGFlLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLEx0KSxhZS5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLGhlKSxhZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLCR0KSxhZS5yZW1vdmVMaXN0ZW5lcigidW5waXBlIixnZSksamUucmVtb3ZlTGlzdGVuZXIoImVuZCIsY2UpLGpl'@; put 'LnJlbW92ZUxpc3RlbmVyKCJlbmQiLEd0KSxqZS5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsS2UpLHdlPSEwLEFlLmF3YWl0RHJhaW4mJighYWUuX3dyaXRhYmxlU3RhdGV8fGFlLl93cml0YWJsZVN0YXRlLm5lZWREcmFpbikmJmhlKCl9KCkpfSk7dmFyIGhlPWZ1bmN0aW9uIEcoYWUpe3JldHVy'@; put 'biBmdW5jdGlvbigpe3ZhciB4ZT1hZS5fcmVhZGFibGVTdGF0ZTtWKCJwaXBlT25EcmFpbiIseGUuYXdhaXREcmFpbikseGUuYXdhaXREcmFpbiYmeGUuYXdhaXREcmFpbi0tLDA9PT14ZS5hd2FpdERyYWluJiZDKGFlLCJkYXRhIikmJih4ZS5mbG93aW5nPSEwLHVlKGFlKSl9fShqZSk7YWUu'@; put 'b24oImRyYWluIixoZSk7dmFyIHdlPSExLHR0PSExO2Z1bmN0aW9uIEtlKGd0KXtWKCJvbmRhdGEiKSx0dD0hMSwhMT09PWFlLndyaXRlKGd0KSYmIXR0JiYoKDE9PT1BZS5waXBlc0NvdW50JiZBZS5waXBlcz09PWFlfHxBZS5waXBlc0NvdW50PjEmJi0xIT09UmUoQWUucGlwZXMsYWUpKSYm'@; put 'IXdlJiYoVigiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixBZS5hd2FpdERyYWluKSxBZS5hd2FpdERyYWluKyssdHQ9ITApLGplLnBhdXNlKCkpfWZ1bmN0aW9uICR0KGd0KXtWKCJvbmVycm9yIixndCksR3QoKSxhZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLCR0KSwwPT09QyhhZSwi'@; put 'ZXJyb3IiKSYmYWUuZW1pdCgiZXJyb3IiLGd0KX1mdW5jdGlvbiBSdCgpe2FlLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLEx0KSxHdCgpfWZ1bmN0aW9uIEx0KCl7Vigib25maW5pc2giKSxhZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFJ0KSxHdCgpfWZ1bmN0aW9uIEd0KCl7VigidW5waXBl'@; put 'IiksamUudW5waXBlKGFlKX1yZXR1cm4gamUub24oImRhdGEiLEtlKSxmdW5jdGlvbiBXKGFlLHhlLGplKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYWUucHJlcGVuZExpc3RlbmVyKXJldHVybiBhZS5wcmVwZW5kTGlzdGVuZXIoeGUsamUpO2FlLl9ldmVudHMmJmFlLl9ldmVudHNbeGVdP3Mo'@; put 'YWUuX2V2ZW50c1t4ZV0pP2FlLl9ldmVudHNbeGVdLnVuc2hpZnQoamUpOmFlLl9ldmVudHNbeGVdPVtqZSxhZS5fZXZlbnRzW3hlXV06YWUub24oeGUsamUpfShhZSwiZXJyb3IiLCR0KSxhZS5vbmNlKCJjbG9zZSIsUnQpLGFlLm9uY2UoImZpbmlzaCIsTHQpLGFlLmVtaXQoInBpcGUiLGpl'@; put 'KSxBZS5mbG93aW5nfHwoVigicGlwZSByZXN1bWUiKSxqZS5yZXN1bWUoKSksYWV9LHJlLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oYWUpe3ZhciB4ZT10aGlzLl9yZWFkYWJsZVN0YXRlLGplPXtoYXNVbnBpcGVkOiExfTtpZigwPT09eGUucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigx'@; put 'PT09eGUucGlwZXNDb3VudClyZXR1cm4gYWUmJmFlIT09eGUucGlwZXN8fChhZXx8KGFlPXhlLnBpcGVzKSx4ZS5waXBlcz1udWxsLHhlLnBpcGVzQ291bnQ9MCx4ZS5mbG93aW5nPSExLGFlJiZhZS5lbWl0KCJ1bnBpcGUiLHRoaXMsamUpKSx0aGlzO2lmKCFhZSl7dmFyIEFlPXhlLnBpcGVz'@; put 'LERlPXhlLnBpcGVzQ291bnQ7eGUucGlwZXM9bnVsbCx4ZS5waXBlc0NvdW50PTAseGUuZmxvd2luZz0hMTtmb3IodmFyIEZlPTA7RmU8RGU7RmUrKylBZVtGZV0uZW1pdCgidW5waXBlIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7cmV0dXJuIHRoaXN9dmFyIGdlPVJlKHhlLnBpcGVzLGFlKTty'@; put 'ZXR1cm4tMT09PWdlfHwoeGUucGlwZXMuc3BsaWNlKGdlLDEpLHhlLnBpcGVzQ291bnQtPTEsMT09PXhlLnBpcGVzQ291bnQmJih4ZS5waXBlcz14ZS5waXBlc1swXSksYWUuZW1pdCgidW5waXBlIix0aGlzLGplKSksdGhpc30scmUucHJvdG90eXBlLmFkZExpc3RlbmVyPXJlLnByb3RvdHlw'@; put 'ZS5vbj1mdW5jdGlvbihhZSx4ZSl7dmFyIGplPXcucHJvdG90eXBlLm9uLmNhbGwodGhpcyxhZSx4ZSk7aWYoImRhdGEiPT09YWUpITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJnRoaXMucmVzdW1lKCk7ZWxzZSBpZigicmVhZGFibGUiPT09YWUpe3ZhciBBZT10aGlzLl9yZWFk'@; put 'YWJsZVN0YXRlOyFBZS5lbmRFbWl0dGVkJiYhQWUucmVhZGFibGVMaXN0ZW5pbmcmJihBZS5yZWFkYWJsZUxpc3RlbmluZz1BZS5uZWVkUmVhZGFibGU9ITAsQWUuZW1pdHRlZFJlYWRhYmxlPSExLEFlLnJlYWRpbmc/QWUubGVuZ3RoJiZrKHRoaXMpOmMubmV4dFRpY2soRCx0aGlzKSl9cmV0'@; put 'dXJuIGplfSxyZS5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIGFlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIGFlLmZsb3dpbmd8fChWKCJyZXN1bWUiKSxhZS5mbG93aW5nPSEwLGZ1bmN0aW9uIHAoYWUseGUpe3hlLnJlc3VtZVNjaGVkdWxlZHx8KHhlLnJlc3VtZVNjaGVk'@; put 'dWxlZD0hMCxjLm5leHRUaWNrKEksYWUseGUpKX0odGhpcyxhZSkpLHRoaXN9LHJlLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBWKCJjYWxsIHBhdXNlIGZsb3dpbmc9JWoiLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyksITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZs'@; put 'b3dpbmcmJihWKCJwYXVzZSIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoInBhdXNlIikpLHRoaXN9LHJlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKGFlKXt2YXIgeGU9dGhpcyxqZT10aGlzLl9yZWFkYWJsZVN0YXRlLEFlPSExO2Zvcih2YXIgRGUgaW4gYWUu'@; put 'b24oImVuZCIsZnVuY3Rpb24oKXtpZihWKCJ3cmFwcGVkIGVuZCIpLGplLmRlY29kZXImJiFqZS5lbmRlZCl7dmFyIGdlPWplLmRlY29kZXIuZW5kKCk7Z2UmJmdlLmxlbmd0aCYmeGUucHVzaChnZSl9eGUucHVzaChudWxsKX0pLGFlLm9uKCJkYXRhIixmdW5jdGlvbihnZSl7Vigid3JhcHBl'@; put 'ZCBkYXRhIiksamUuZGVjb2RlciYmKGdlPWplLmRlY29kZXIud3JpdGUoZ2UpKSxqZS5vYmplY3RNb2RlJiZudWxsPT1nZXx8IShqZS5vYmplY3RNb2RlfHxnZSYmZ2UubGVuZ3RoKXx8eGUucHVzaChnZSl8fChBZT0hMCxhZS5wYXVzZSgpKX0pLGFlKXZvaWQgMD09PXRoaXNbRGVdJiYiZnVu'@; put 'Y3Rpb24iPT10eXBlb2YgYWVbRGVdJiYodGhpc1tEZV09ZnVuY3Rpb24oZ2Upe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhZVtnZV0uYXBwbHkoYWUsYXJndW1lbnRzKX19KERlKSk7Zm9yKHZhciBGZT0wO0ZlPEYubGVuZ3RoO0ZlKyspYWUub24oRltGZV0sdGhpcy5lbWl0LmJpbmQodGhp'@; put 'cyxGW0ZlXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKGdlKXtWKCJ3cmFwcGVkIF9yZWFkIixnZSksQWUmJihBZT0hMSxhZS5yZXN1bWUoKSl9LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZS5wcm90b3R5cGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6'@; put 'ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxyZS5fZnJvbUxpc3Q9bmV9LDgxODE2KGZlLGosaCl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9QTt2YXIgeT1oKDI2MjQ4KSxjPU9iamVjdC5jcmVhdGUoaCgxNTYyMikpO2Z1bmN0'@; put 'aW9uIHModyxTKXt2YXIgTD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtMLnRyYW5zZm9ybWluZz0hMTt2YXIgUj1MLndyaXRlY2I7aWYoIVIpcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigid3JpdGUgY2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzIikpO0wud3JpdGVjaHVu'@; put 'az1udWxsLEwud3JpdGVjYj1udWxsLG51bGwhPVMmJnRoaXMucHVzaChTKSxSKHcpO3ZhciB4PXRoaXMuX3JlYWRhYmxlU3RhdGU7eC5yZWFkaW5nPSExLCh4Lm5lZWRSZWFkYWJsZXx8eC5sZW5ndGg8eC5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZCh4LmhpZ2hXYXRlck1hcmspfWZ1bmN0'@; put 'aW9uIEEodyl7aWYoISh0aGlzIGluc3RhbmNlb2YgQSkpcmV0dXJuIG5ldyBBKHcpO3kuY2FsbCh0aGlzLHcpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpzLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRl'@; put 'Y2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSx3JiYoImZ1bmN0aW9uIj09dHlwZW9mIHcudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPXcudHJhbnNmb3JtKSwiZnVu'@; put 'Y3Rpb24iPT10eXBlb2Ygdy5mbHVzaCYmKHRoaXMuX2ZsdXNoPXcuZmx1c2gpKSx0aGlzLm9uKCJwcmVmaW5pc2giLHYpfWZ1bmN0aW9uIHYoKXt2YXIgdz10aGlzOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9mbHVzaD90aGlzLl9mbHVzaChmdW5jdGlvbihTLEwpe0ModyxTLEwpfSk6Qyh0'@; put 'aGlzLG51bGwsbnVsbCl9ZnVuY3Rpb24gQyh3LFMsTCl7aWYoUylyZXR1cm4gdy5lbWl0KCJlcnJvciIsUyk7aWYobnVsbCE9TCYmdy5wdXNoKEwpLHcuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAh'@; put 'PSAwIik7aWYody5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZyIpO3JldHVybiB3LnB1c2gobnVsbCl9Yy5pbmhlcml0cz1oKDU2Njk4KSxjLmluaGVyaXRzKEEseSksQS5w'@; put 'cm90b3R5cGUucHVzaD1mdW5jdGlvbih3LFMpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLHkucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLHcsUyl9LEEucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odyxTLEwpe3Rocm93IG5ldyBFcnJvcigiX3Ry'@; put 'YW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCIpfSxBLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odyxTLEwpe3ZhciBSPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKFIud3JpdGVjYj1MLFIud3JpdGVjaHVuaz13LFIud3JpdGVlbmNvZGluZz1TLCFSLnRyYW5zZm9ybWluZyl7dmFyIHg9'@; put 'dGhpcy5fcmVhZGFibGVTdGF0ZTsoUi5uZWVkVHJhbnNmb3JtfHx4Lm5lZWRSZWFkYWJsZXx8eC5sZW5ndGg8eC5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZCh4LmhpZ2hXYXRlck1hcmspfX0sQS5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24odyl7dmFyIFM9dGhpcy5fdHJhbnNmb3JtU3Rh'@; put 'dGU7bnVsbCE9PVMud3JpdGVjaHVuayYmUy53cml0ZWNiJiYhUy50cmFuc2Zvcm1pbmc/KFMudHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybShTLndyaXRlY2h1bmssUy53cml0ZWVuY29kaW5nLFMuYWZ0ZXJUcmFuc2Zvcm0pKTpTLm5lZWRUcmFuc2Zvcm09ITB9LEEucHJvdG90eXBl'@; put 'Ll9kZXN0cm95PWZ1bmN0aW9uKHcsUyl7dmFyIEw9dGhpczt5LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsdyxmdW5jdGlvbihSKXtTKFIpLEwuZW1pdCgiY2xvc2UiKX0pfX0sNzMxNChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPWgoMzMyMjUpO2Z1bmN0aW9u'@; put 'IEEocCl7dmFyIEk9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24gRChwLEksdWUpe3ZhciBuZT1wLmVudHJ5O2ZvcihwLmVudHJ5PW51bGw7bmU7KXt2YXIgX2U9bmUuY2FsbGJhY2s7SS5wZW5kaW5nY2ItLSxfZSh1'@; put 'ZSksbmU9bmUubmV4dH1JLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PXB9KEkscCl9fWZlLmV4cG9ydHM9Rjt2YXIgQyx2PSF5LmJyb3dzZXImJlsidjAuMTAiLCJ2MC45LiJdLmluZGV4T2YoeS52ZXJzaW9uLnNsaWNlKDAsNSkpPi0xP3NldEltbWVkaWF0ZTpjLm5leHRUaWNrO0YuV3JpdGFi'@; put 'bGVTdGF0ZT16O3ZhciB3PU9iamVjdC5jcmVhdGUoaCgxNTYyMikpO3cuaW5oZXJpdHM9aCg1NjY5OCk7dmFyIFksUz17ZGVwcmVjYXRlOmgoOTQ2NDMpfSxMPWgoNTU2NyksUj1oKDI0MTE2KS5CdWZmZXIseD0odHlwZW9mIGguZzwidSI/aC5nOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0'@; put 'eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LFY9aCgzNjI3OCk7ZnVuY3Rpb24gTigpe31mdW5jdGlvbiB6KHAsSSl7Qz1DfHxoKDI2MjQ4KTt2YXIgdWU9SSBpbnN0YW5jZW9mIEM7dGhpcy5vYmplY3RNb2RlPSEhKHA9cHx8e30pLm9iamVjdE1vZGUs'@; put 'dWUmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIXAud3JpdGFibGVPYmplY3RNb2RlKTt2YXIgbmU9cC5oaWdoV2F0ZXJNYXJrLF9lPXAud3JpdGFibGVIaWdoV2F0ZXJNYXJrO3RoaXMuaGlnaFdhdGVyTWFyaz1uZXx8MD09PW5lP25lOnVlJiYoX2V8fDA9PT1fZSk/X2U6'@; put 'dGhpcy5vYmplY3RNb2RlPzE2OjE2Mzg0LHRoaXMuaGlnaFdhdGVyTWFyaz1NYXRoLmZsb29yKHRoaXMuaGlnaFdhdGVyTWFyayksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5k'@; put 'ZXN0cm95ZWQ9ITEsdGhpcy5kZWNvZGVTdHJpbmdzPSEoITE9PT1wLmRlY29kZVN0cmluZ3MpLHRoaXMuZGVmYXVsdEVuY29kaW5nPXAuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5i'@; put 'dWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253cml0ZT1mdW5jdGlvbihsdCl7IWZ1bmN0aW9uIHFlKHAsSSl7dmFyIHVlPXAuX3dyaXRhYmxlU3RhdGUsbmU9dWUuc3luYyxfZT11ZS53cml0ZWNiO2lmKGZ1bmN0aW9uIGtlKHApe3Aud3JpdGluZz0hMSxwLndyaXRlY2I9bnVsbCxwLmxlbmd0'@; put 'aC09cC53cml0ZWxlbixwLndyaXRlbGVuPTB9KHVlKSxJKSFmdW5jdGlvbiBJZShwLEksdWUsbmUsX2Upey0tSS5wZW5kaW5nY2IsdWU/KGMubmV4dFRpY2soX2UsbmUpLGMubmV4dFRpY2soSyxwLEkpLHAuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHAuZW1pdCgiZXJyb3IiLG5l'@; put 'KSk6KF9lKG5lKSxwLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxwLmVtaXQoImVycm9yIixuZSksSyhwLEkpKX0ocCx1ZSxuZSxJLF9lKTtlbHNle3ZhciBQZT1rKHVlKTshUGUmJiF1ZS5jb3JrZWQmJiF1ZS5idWZmZXJQcm9jZXNzaW5nJiZ1ZS5idWZmZXJlZFJlcXVlc3QmJmIo'@; put 'cCx1ZSksbmU/dihYLHAsdWUsUGUsX2UpOlgocCx1ZSxQZSxfZSl9fShJLGx0KX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZp'@; put 'bmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgQSh0aGlzKX1mdW5jdGlvbiBGKHApe2lmKEM9Q3x8aCgyNjI0OCksIShZLmNhbGwoRix0aGlzKXx8dGhpcyBpbnN0YW5jZW9mIEMpKXJl'@; put 'dHVybiBuZXcgRihwKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyB6KHAsdGhpcyksdGhpcy53cml0YWJsZT0hMCxwJiYoImZ1bmN0aW9uIj09dHlwZW9mIHAud3JpdGUmJih0aGlzLl93cml0ZT1wLndyaXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgcC53cml0ZXYmJih0aGlzLl93cml0ZXY9cC53'@; put 'cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiBwLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PXAuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIHAuZmluYWwmJih0aGlzLl9maW5hbD1wLmZpbmFsKSksTC5jYWxsKHRoaXMpfWZ1bmN0aW9uIENlKHAsSSx1ZSxuZSxfZSxQZSxvdCl7SS53cml0'@; put 'ZWxlbj1uZSxJLndyaXRlY2I9b3QsSS53cml0aW5nPSEwLEkuc3luYz0hMCx1ZT9wLl93cml0ZXYoX2UsSS5vbndyaXRlKTpwLl93cml0ZShfZSxQZSxJLm9ud3JpdGUpLEkuc3luYz0hMX1mdW5jdGlvbiBYKHAsSSx1ZSxuZSl7dWV8fGZ1bmN0aW9uIGYocCxJKXswPT09SS5sZW5ndGgmJkku'@; put 'bmVlZERyYWluJiYoSS5uZWVkRHJhaW49ITEscC5lbWl0KCJkcmFpbiIpKX0ocCxJKSxJLnBlbmRpbmdjYi0tLG5lKCksSyhwLEkpfWZ1bmN0aW9uIGIocCxJKXtJLmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIHVlPUkuYnVmZmVyZWRSZXF1ZXN0O2lmKHAuX3dyaXRldiYmdWUmJnVlLm5leHQp'@; put 'e3ZhciBfZT1uZXcgQXJyYXkoSS5idWZmZXJlZFJlcXVlc3RDb3VudCksUGU9SS5jb3JrZWRSZXF1ZXN0c0ZyZWU7UGUuZW50cnk9dWU7Zm9yKHZhciBvdD0wLGx0PSEwO3VlOylfZVtvdF09dWUsdWUuaXNCdWZ8fChsdD0hMSksdWU9dWUubmV4dCxvdCs9MTtfZS5hbGxCdWZmZXJzPWx0LENl'@; put 'KHAsSSwhMCxJLmxlbmd0aCxfZSwiIixQZS5maW5pc2gpLEkucGVuZGluZ2NiKyssSS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsUGUubmV4dD8oSS5jb3JrZWRSZXF1ZXN0c0ZyZWU9UGUubmV4dCxQZS5uZXh0PW51bGwpOkkuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBBKEkpLEkuYnVmZmVy'@; put 'ZWRSZXF1ZXN0Q291bnQ9MH1lbHNle2Zvcig7dWU7KXt2YXIgZHQ9dWUuY2h1bms7aWYoQ2UocCxJLCExLEkub2JqZWN0TW9kZT8xOmR0Lmxlbmd0aCxkdCx1ZS5lbmNvZGluZyx1ZS5jYWxsYmFjayksdWU9dWUubmV4dCxJLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0sSS53cml0aW5nKWJyZWFr'@; put 'fW51bGw9PT11ZSYmKEkubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX1JLmJ1ZmZlcmVkUmVxdWVzdD11ZSxJLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gayhwKXtyZXR1cm4gcC5lbmRpbmcmJjA9PT1wLmxlbmd0aCYmbnVsbD09PXAuYnVmZmVyZWRSZXF1ZXN0JiYhcC5maW5pc2hl'@; put 'ZCYmIXAud3JpdGluZ31mdW5jdGlvbiBNKHAsSSl7cC5fZmluYWwoZnVuY3Rpb24odWUpe0kucGVuZGluZ2NiLS0sdWUmJnAuZW1pdCgiZXJyb3IiLHVlKSxJLnByZWZpbmlzaGVkPSEwLHAuZW1pdCgicHJlZmluaXNoIiksSyhwLEkpfSl9ZnVuY3Rpb24gSyhwLEkpe3ZhciB1ZT1rKEkpO3Jl'@; put 'dHVybiB1ZSYmKGZ1bmN0aW9uIEIocCxJKXshSS5wcmVmaW5pc2hlZCYmIUkuZmluYWxDYWxsZWQmJigiZnVuY3Rpb24iPT10eXBlb2YgcC5fZmluYWw/KEkucGVuZGluZ2NiKyssSS5maW5hbENhbGxlZD0hMCxjLm5leHRUaWNrKE0scCxJKSk6KEkucHJlZmluaXNoZWQ9ITAscC5lbWl0KCJw'@; put 'cmVmaW5pc2giKSkpfShwLEkpLDA9PT1JLnBlbmRpbmdjYiYmKEkuZmluaXNoZWQ9ITAscC5lbWl0KCJmaW5pc2giKSkpLHVlfXcuaW5oZXJpdHMoRixMKSx6LnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIEk9dGhpcy5idWZmZXJlZFJlcXVlc3QsdWU9W107STspdWUu'@; put 'cHVzaChJKSxJPUkubmV4dDtyZXR1cm4gdWV9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiYnVmZmVyIix7Z2V0OlMuZGVwcmVjYXRlKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCl9LCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMg'@; put 'ZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBpbnN0ZWFkLiIsIkRFUDAwMDMiKX0pfWNhdGNoe319KCksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmhhc0luc3RhbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJv'@; put 'bC5oYXNJbnN0YW5jZV0/KFk9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEYsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbihwKXtyZXR1cm4hIVkuY2FsbCh0aGlzLHApfHx0aGlzPT09RiYmcCYmcC5fd3JpdGFi'@; put 'bGVTdGF0ZSBpbnN0YW5jZW9mIHp9fSkpOlk9ZnVuY3Rpb24ocCl7cmV0dXJuIHAgaW5zdGFuY2VvZiB0aGlzfSxGLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7dGhpcy5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIikpfSxGLnByb3RvdHlwZS53'@; put 'cml0ZT1mdW5jdGlvbihwLEksdWUpe3ZhciBuZT10aGlzLl93cml0YWJsZVN0YXRlLF9lPSExLFBlPSFuZS5vYmplY3RNb2RlJiZmdW5jdGlvbiBIKHApe3JldHVybiBSLmlzQnVmZmVyKHApfHxwIGluc3RhbmNlb2YgeH0ocCk7cmV0dXJuIFBlJiYhUi5pc0J1ZmZlcihwKSYmKHA9ZnVuY3Rp'@; put 'b24gVShwKXtyZXR1cm4gUi5mcm9tKHApfShwKSksImZ1bmN0aW9uIj09dHlwZW9mIEkmJih1ZT1JLEk9bnVsbCksUGU/ST0iYnVmZmVyIjpJfHwoST1uZS5kZWZhdWx0RW5jb2RpbmcpLCJmdW5jdGlvbiIhPXR5cGVvZiB1ZSYmKHVlPU4pLG5lLmVuZGVkP2Z1bmN0aW9uIFcocCxJKXt2YXIg'@; put 'dWU9bmV3IEVycm9yKCJ3cml0ZSBhZnRlciBlbmQiKTtwLmVtaXQoImVycm9yIix1ZSksYy5uZXh0VGljayhJLHVlKX0odGhpcyx1ZSk6KFBlfHxmdW5jdGlvbiBxKHAsSSx1ZSxuZSl7dmFyIF9lPSEwLFBlPSExO3JldHVybiBudWxsPT09dWU/UGU9bmV3IFR5cGVFcnJvcigiTWF5IG5vdCB3'@; put 'cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iKToic3RyaW5nIiE9dHlwZW9mIHVlJiZ2b2lkIDAhPT11ZSYmIUkub2JqZWN0TW9kZSYmKFBlPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSksUGUmJihwLmVtaXQoImVycm9yIixQZSksYy5uZXh0VGlj'@; put 'ayhuZSxQZSksX2U9ITEpLF9lfSh0aGlzLG5lLHAsdWUpKSYmKG5lLnBlbmRpbmdjYisrLF9lPWZ1bmN0aW9uIG1lKHAsSSx1ZSxuZSxfZSxQZSl7aWYoIXVlKXt2YXIgb3Q9ZnVuY3Rpb24gcmUocCxJLHVlKXtyZXR1cm4hcC5vYmplY3RNb2RlJiYhMSE9PXAuZGVjb2RlU3RyaW5ncyYmInN0'@; put 'cmluZyI9PXR5cGVvZiBJJiYoST1SLmZyb20oSSx1ZSkpLEl9KEksbmUsX2UpO25lIT09b3QmJih1ZT0hMCxfZT0iYnVmZmVyIixuZT1vdCl9dmFyIGx0PUkub2JqZWN0TW9kZT8xOm5lLmxlbmd0aDtJLmxlbmd0aCs9bHQ7dmFyIGR0PUkubGVuZ3RoPEkuaGlnaFdhdGVyTWFyaztpZihkdHx8'@; put 'KEkubmVlZERyYWluPSEwKSxJLndyaXRpbmd8fEkuY29ya2VkKXt2YXIgUmU9SS5sYXN0QnVmZmVyZWRSZXF1ZXN0O0kubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6bmUsZW5jb2Rpbmc6X2UsaXNCdWY6dWUsY2FsbGJhY2s6UGUsbmV4dDpudWxsfSxSZT9SZS5uZXh0PUkubGFzdEJ1ZmZl'@; put 'cmVkUmVxdWVzdDpJLmJ1ZmZlcmVkUmVxdWVzdD1JLmxhc3RCdWZmZXJlZFJlcXVlc3QsSS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIENlKHAsSSwhMSxsdCxuZSxfZSxQZSk7cmV0dXJuIGR0fSh0aGlzLG5lLFBlLHAsSSx1ZSkpLF9lfSxGLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9u'@; put 'KCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sRi5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5fd3JpdGFibGVTdGF0ZTtwLmNvcmtlZCYmKHAuY29ya2VkLS0sIXAud3JpdGluZyYmIXAuY29ya2VkJiYhcC5idWZmZXJQcm9jZXNzaW5nJiZwLmJ1ZmZlcmVk'@; put 'UmVxdWVzdCYmYih0aGlzLHApKX0sRi5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKEkpe2lmKCJzdHJpbmciPT10eXBlb2YgSSYmKEk9SS50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwi'@; put 'dWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5pbmRleE9mKChJKyIiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitJKTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9SSx0aGlzfSxP'@; put 'YmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxGLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24ocCxJLHVl'@; put 'KXt1ZShuZXcgRXJyb3IoIl93cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCIpKX0sRi5wcm90b3R5cGUuX3dyaXRldj1udWxsLEYucHJvdG90eXBlLmVuZD1mdW5jdGlvbihwLEksdWUpe3ZhciBuZT10aGlzLl93cml0YWJsZVN0YXRlOyJmdW5jdGlvbiI9PXR5cGVvZiBwPyh1ZT1wLHA9bnVs'@; put 'bCxJPW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiBJJiYodWU9SSxJPW51bGwpLG51bGwhPXAmJnRoaXMud3JpdGUocCxJKSxuZS5jb3JrZWQmJihuZS5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxuZS5lbmRpbmd8fGZ1bmN0aW9uIEcocCxJLHVlKXtJLmVuZGluZz0hMCxLKHAsSSksdWUmJihJ'@; put 'LmZpbmlzaGVkP2MubmV4dFRpY2sodWUpOnAub25jZSgiZmluaXNoIix1ZSkpLEkuZW5kZWQ9ITAscC53cml0YWJsZT0hMX0odGhpcyxuZSx1ZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRo'@; put 'aXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24ocCl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPXApfX0pLEYucHJvdG90eXBlLmRlc3Ryb3k9Vi5kZXN0cm95LEYucHJvdG90eXBl'@; put 'Ll91bmRlc3Ryb3k9Vi51bmRlc3Ryb3ksRi5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24ocCxJKXt0aGlzLmVuZCgpLEkocCl9fSwyMDY3MihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1oKDI0MTE2KS5CdWZmZXIscz1oKDIxNjM4KTtmdW5jdGlvbiBBKHYsQyx3KXt2LmNvcHkoQyx3'@; put 'KX1mZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdigpeyhmdW5jdGlvbiB5KHYsQyl7aWYoISh2IGluc3RhbmNlb2YgQykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLHYpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFp'@; put 'bD1udWxsLHRoaXMubGVuZ3RoPTB9cmV0dXJuIHYucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odyl7dmFyIFM9e2RhdGE6dyxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9Uzp0aGlzLmhlYWQ9Uyx0aGlzLnRhaWw9UywrK3RoaXMubGVuZ3RofSx2LnByb3RvdHlwZS51'@; put 'bnNoaWZ0PWZ1bmN0aW9uKHcpe3ZhciBTPXtkYXRhOncsbmV4dDp0aGlzLmhlYWR9OzA9PT10aGlzLmxlbmd0aCYmKHRoaXMudGFpbD1TKSx0aGlzLmhlYWQ9UywrK3RoaXMubGVuZ3RofSx2LnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7dmFyIHc9dGhp'@; put 'cy5oZWFkLmRhdGE7cmV0dXJuIHRoaXMuaGVhZD0xPT09dGhpcy5sZW5ndGg/dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCx3fX0sdi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH0sdi5w'@; put 'cm90b3R5cGUuam9pbj1mdW5jdGlvbih3KXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBTPXRoaXMuaGVhZCxMPSIiK1MuZGF0YTtTPVMubmV4dDspTCs9dytTLmRhdGE7cmV0dXJuIEx9LHYucHJvdG90eXBlLmNvbmNhdD1mdW5jdGlvbih3KXtpZigwPT09dGhpcy5sZW5n'@; put 'dGgpcmV0dXJuIGMuYWxsb2MoMCk7Zm9yKHZhciBTPWMuYWxsb2NVbnNhZmUodz4+PjApLEw9dGhpcy5oZWFkLFI9MDtMOylBKEwuZGF0YSxTLFIpLFIrPUwuZGF0YS5sZW5ndGgsTD1MLm5leHQ7cmV0dXJuIFN9LHZ9KCkscyYmcy5pbnNwZWN0JiZzLmluc3BlY3QuY3VzdG9tJiYoZmUuZXhw'@; put 'b3J0cy5wcm90b3R5cGVbcy5pbnNwZWN0LmN1c3RvbV09ZnVuY3Rpb24oKXt2YXIgdj1zLmluc3BlY3Qoe2xlbmd0aDp0aGlzLmxlbmd0aH0pO3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUrIiAiK3Z9KX0sMzYyNzgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgzMzIyNSk7ZnVu'@; put 'Y3Rpb24gQSh2LEMpe3YuZW1pdCgiZXJyb3IiLEMpfWZlLmV4cG9ydHM9e2Rlc3Ryb3k6ZnVuY3Rpb24gYyh2LEMpe3ZhciB3PXRoaXM7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfHx0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93'@; put 'cml0YWJsZVN0YXRlLmRlc3Ryb3llZD8oQz9DKHYpOnYmJih0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAseS5uZXh0VGljayhBLHRoaXMsdikpOnkubmV4dFRpY2soQSx0aGlz'@; put 'LHYpKSx0aGlzKToodGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3kodnx8bnVsbCxmdW5jdGlvbihSKXshQyYmUj93'@; put 'Ll93cml0YWJsZVN0YXRlP3cuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwody5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAseS5uZXh0VGljayhBLHcsUikpOnkubmV4dFRpY2soQSx3LFIpOkMmJkMoUil9KSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0aW9uIHMoKXt0aGlzLl9y'@; put 'ZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSExKSx0aGlzLl93cml0YWJsZVN0YXRlJiYo'@; put 'dGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ITEsdGhp'@; put 'cy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMSl9fX0sNTU2NyhmZSxqLGgpe2ZlLmV4cG9ydHM9aCgzNzAwNykuRXZlbnRFbWl0dGVyfSwyNDExNihmZSxqLGgpe3ZhciB5PWgoNDgyODcpLGM9eS5CdWZmZXI7ZnVuY3Rpb24g'@; put 'cyh2LEMpe2Zvcih2YXIgdyBpbiB2KUNbd109dlt3XX1mdW5jdGlvbiBBKHYsQyx3KXtyZXR1cm4gYyh2LEMsdyl9Yy5mcm9tJiZjLmFsbG9jJiZjLmFsbG9jVW5zYWZlJiZjLmFsbG9jVW5zYWZlU2xvdz9mZS5leHBvcnRzPXk6KHMoeSxqKSxqLkJ1ZmZlcj1BKSxzKGMsQSksQS5mcm9tPWZ1'@; put 'bmN0aW9uKHYsQyx3KXtpZigibnVtYmVyIj09dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYyh2LEMsdyl9LEEuYWxsb2M9ZnVuY3Rpb24odixDLHcpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlw'@; put 'ZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIFM9Yyh2KTtyZXR1cm4gdm9pZCAwIT09Qz8ic3RyaW5nIj09dHlwZW9mIHc/Uy5maWxsKEMsdyk6Uy5maWxsKEMpOlMuZmlsbCgwKSxTfSxBLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Yg'@; put 'dil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGModil9LEEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7'@; put 'cmV0dXJuIHkuU2xvd0J1ZmZlcih2KX19LDQ2NzM3KGZlLGosaCl7KGo9ZmUuZXhwb3J0cz1oKDMwMjA2KSkuU3RyZWFtPWosai5SZWFkYWJsZT1qLGouV3JpdGFibGU9aCg3MzE0KSxqLkR1cGxleD1oKDI2MjQ4KSxqLlRyYW5zZm9ybT1oKDgxODE2KSxqLlBhc3NUaHJvdWdoPWgoNzUyNDIp'@; put 'fSw2NDI3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoODgzOTMpLkJ1ZmZlcixjPXkuaXNFbmNvZGluZ3x8ZnVuY3Rpb24oRil7c3dpdGNoKChGPSIiK0YpJiZGLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UiYmlu'@; put 'YXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOmNhc2UicmF3IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX07ZnVuY3Rpb24gdihGKXt2YXIgVztzd2l0Y2godGhpcy5lbmNvZGluZz1mdW5jdGlvbiBBKEYpe3Zh'@; put 'ciBXPWZ1bmN0aW9uIHMoRil7aWYoIUYpcmV0dXJuInV0ZjgiO2Zvcih2YXIgVzs7KXN3aXRjaChGKXtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiJ1dGY4IjtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuInV0ZjE2bGUiO2Nh'@; put 'c2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuImxhdGluMSI7Y2FzZSJiYXNlNjQiOmNhc2UiYXNjaWkiOmNhc2UiaGV4IjpyZXR1cm4gRjtkZWZhdWx0OmlmKFcpcmV0dXJuO0Y9KCIiK0YpLnRvTG93ZXJDYXNlKCksVz0hMH19KEYpO2lmKCJzdHJpbmciIT10eXBlb2YgVyYmKHkuaXNF'@; put 'bmNvZGluZz09PWN8fCFjKEYpKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrRik7cmV0dXJuIFd8fEZ9KEYpLHRoaXMuZW5jb2Rpbmcpe2Nhc2UidXRmMTZsZSI6dGhpcy50ZXh0PVUsdGhpcy5lbmQ9SCxXPTQ7YnJlYWs7Y2FzZSJ1dGY4Ijp0aGlzLmZpbGxMYXN0PUws'@; put 'Vz00O2JyZWFrO2Nhc2UiYmFzZTY0Ijp0aGlzLnRleHQ9Vix0aGlzLmVuZD1OLFc9MzticmVhaztkZWZhdWx0OnJldHVybiB0aGlzLndyaXRlPXosdm9pZCh0aGlzLmVuZD1ZKX10aGlzLmxhc3ROZWVkPTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPXkuYWxsb2NVbnNhZmUoVyl9'@; put 'ZnVuY3Rpb24gQyhGKXtyZXR1cm4gRjw9MTI3PzA6Rj4+NT09Nj8yOkY+PjQ9PTE0PzM6Rj4+Mz09MzA/NDpGPj42PT0yPy0xOi0yfWZ1bmN0aW9uIEwoRil7dmFyIFc9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxxPWZ1bmN0aW9uIFMoRixXKXtpZigxMjghPSgxOTImV1swXSkpcmV0'@; put 'dXJuIEYubGFzdE5lZWQ9MCwiXHVmZmZkIjtpZihGLmxhc3ROZWVkPjEmJlcubGVuZ3RoPjEpe2lmKDEyOCE9KDE5MiZXWzFdKSlyZXR1cm4gRi5sYXN0TmVlZD0xLCJcdWZmZmQiO2lmKEYubGFzdE5lZWQ+MiYmVy5sZW5ndGg+MiYmMTI4IT0oMTkyJldbMl0pKXJldHVybiBGLmxhc3ROZWVk'@; put 'PTIsIlx1ZmZmZCJ9fSh0aGlzLEYpO3JldHVybiB2b2lkIDAhPT1xP3E6dGhpcy5sYXN0TmVlZDw9Ri5sZW5ndGg/KEYuY29weSh0aGlzLmxhc3RDaGFyLFcsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOihG'@; put 'LmNvcHkodGhpcy5sYXN0Q2hhcixXLDAsRi5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09Ri5sZW5ndGgpKX1mdW5jdGlvbiBVKEYsVyl7aWYoKEYubGVuZ3RoLVcpJTI9PTApe3ZhciBxPUYudG9TdHJpbmcoInV0ZjE2bGUiLFcpO2lmKHEpe3ZhciByZT1xLmNoYXJDb2RlQXQocS5sZW5n'@; put 'dGgtMSk7aWYocmU+PTU1Mjk2JiZyZTw9NTYzMTkpcmV0dXJuIHRoaXMubGFzdE5lZWQ9Mix0aGlzLmxhc3RUb3RhbD00LHRoaXMubGFzdENoYXJbMF09RltGLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPUZbRi5sZW5ndGgtMV0scS5zbGljZSgwLC0xKX1yZXR1cm4gcX1yZXR1cm4gdGhp'@; put 'cy5sYXN0TmVlZD0xLHRoaXMubGFzdFRvdGFsPTIsdGhpcy5sYXN0Q2hhclswXT1GW0YubGVuZ3RoLTFdLEYudG9TdHJpbmcoInV0ZjE2bGUiLFcsRi5sZW5ndGgtMSl9ZnVuY3Rpb24gSChGKXt2YXIgVz1GJiZGLmxlbmd0aD90aGlzLndyaXRlKEYpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVk'@; put 'P1crdGhpcy5sYXN0Q2hhci50b1N0cmluZygidXRmMTZsZSIsMCx0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkKTpXfWZ1bmN0aW9uIFYoRixXKXt2YXIgcT0oRi5sZW5ndGgtVyklMztyZXR1cm4gMD09PXE/Ri50b1N0cmluZygiYmFzZTY0IixXKToodGhpcy5sYXN0TmVlZD0zLXEsdGhp'@; put 'cy5sYXN0VG90YWw9MywxPT09cT90aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMV06KHRoaXMubGFzdENoYXJbMF09RltGLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPUZbRi5sZW5ndGgtMV0pLEYudG9TdHJpbmcoImJhc2U2NCIsVyxGLmxlbmd0aC1xKSl9ZnVuY3Rpb24gTihGKXt2'@; put 'YXIgVz1GJiZGLmxlbmd0aD90aGlzLndyaXRlKEYpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP1crdGhpcy5sYXN0Q2hhci50b1N0cmluZygiYmFzZTY0IiwwLDMtdGhpcy5sYXN0TmVlZCk6V31mdW5jdGlvbiB6KEYpe3JldHVybiBGLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpfWZ1bmN0aW9u'@; put 'IFkoRil7cmV0dXJuIEYmJkYubGVuZ3RoP3RoaXMud3JpdGUoRik6IiJ9ai5JPXYsdi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRil7aWYoMD09PUYubGVuZ3RoKXJldHVybiIiO3ZhciBXLHE7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KFc9dGhpcy5maWxsTGFzdChGKSkpcmV0'@; put 'dXJuIiI7cT10aGlzLmxhc3ROZWVkLHRoaXMubGFzdE5lZWQ9MH1lbHNlIHE9MDtyZXR1cm4gcTxGLmxlbmd0aD9XP1crdGhpcy50ZXh0KEYscSk6dGhpcy50ZXh0KEYscSk6V3x8IiJ9LHYucHJvdG90eXBlLmVuZD1mdW5jdGlvbiB4KEYpe3ZhciBXPUYmJkYubGVuZ3RoP3RoaXMud3JpdGUo'@; put 'Rik6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/VysiXHVmZmZkIjpXfSx2LnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uIFIoRixXKXt2YXIgcT1mdW5jdGlvbiB3KEYsVyxxKXt2YXIgcmU9Vy5sZW5ndGgtMTtpZihyZTxxKXJldHVybiAwO3ZhciBtZT1DKFdbcmVdKTtyZXR1cm4gbWU+PTA/KG1l'@; put 'PjAmJihGLmxhc3ROZWVkPW1lLTEpLG1lKTotLXJlPHF8fC0yPT09bWU/MDoobWU9QyhXW3JlXSkpPj0wPyhtZT4wJiYoRi5sYXN0TmVlZD1tZS0yKSxtZSk6LS1yZTxxfHwtMj09PW1lPzA6KG1lPUMoV1tyZV0pKT49MD8obWU+MCYmKDI9PT1tZT9tZT0wOkYubGFzdE5lZWQ9bWUtMyksbWUp'@; put 'OjB9KHRoaXMsRixXKTtpZighdGhpcy5sYXN0TmVlZClyZXR1cm4gRi50b1N0cmluZygidXRmOCIsVyk7dGhpcy5sYXN0VG90YWw9cTt2YXIgcmU9Ri5sZW5ndGgtKHEtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIEYuY29weSh0aGlzLmxhc3RDaGFyLDAscmUpLEYudG9TdHJpbmcoInV0ZjgiLFcs'@; put 'cmUpfSx2LnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihGKXtpZih0aGlzLmxhc3ROZWVkPD1GLmxlbmd0aClyZXR1cm4gRi5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhp'@; put 'cy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtGLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsRi5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPUYubGVuZ3RofX0sODgzOTMoZmUsaixoKXt2YXIgeT1oKDQ4Mjg3KSxjPXkuQnVmZmVyO2Z1bmN0aW9u'@; put 'IHModixDKXtmb3IodmFyIHcgaW4gdilDW3ddPXZbd119ZnVuY3Rpb24gQSh2LEMsdyl7cmV0dXJuIGModixDLHcpfWMuZnJvbSYmYy5hbGxvYyYmYy5hbGxvY1Vuc2FmZSYmYy5hbGxvY1Vuc2FmZVNsb3c/ZmUuZXhwb3J0cz15OihzKHksaiksai5CdWZmZXI9QSkscyhjLEEpLEEuZnJvbT1m'@; put 'dW5jdGlvbih2LEMsdyl7aWYoIm51bWJlciI9PXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIGModixDLHcpfSxBLmFsbG9jPWZ1bmN0aW9uKHYsQyx3KXtpZigibnVtYmVyIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5'@; put 'cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBTPWModik7cmV0dXJuIHZvaWQgMCE9PUM/InN0cmluZyI9PXR5cGVvZiB3P1MuZmlsbChDLHcpOlMuZmlsbChDKTpTLmZpbGwoMCksU30sQS5hbGxvY1Vuc2FmZT1mdW5jdGlvbih2KXtpZigibnVtYmVyIiE9dHlwZW9m'@; put 'IHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBjKHYpfSxBLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih2KXtpZigibnVtYmVyIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIp'@; put 'O3JldHVybiB5LlNsb3dCdWZmZXIodil9fSwzMDI5NShmZSxqLGgpe3ZhciB5PWgoNDgyODcpLkJ1ZmZlcjtmZS5leHBvcnRzPWZ1bmN0aW9uKHMsQSl7Zm9yKHZhciB2PU1hdGgubWluKHMubGVuZ3RoLEEubGVuZ3RoKSxDPW5ldyB5KHYpLHc9MDt3PHY7Kyt3KUNbd109c1t3XV5BW3ddO3Jl'@; put 'dHVybiBDfX0sNDgyODcoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NzUyNiksYz1oKDI1MSkscz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj9TeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpOm51bGw7'@; put 'ai5CdWZmZXI9dyxqLlNsb3dCdWZmZXI9ZnVuY3Rpb24gRihnZSl7cmV0dXJuK2dlIT1nZSYmKGdlPTApLHcuYWxsb2MoK2dlKX0sai5JTlNQRUNUX01BWF9CWVRFUz01MDt2YXIgQT0yMTQ3NDgzNjQ3O2Z1bmN0aW9uIEMoZ2Upe2lmKGdlPkEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2'@; put 'YWx1ZSAiJytnZSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIGNlPW5ldyBVaW50OEFycmF5KGdlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKGNlLHcucHJvdG90eXBlKSxjZX1mdW5jdGlvbiB3KGdlLGNlLGhlKXtpZigibnVtYmVyIj09dHlwZW9mIGdlKXtp'@; put 'Zigic3RyaW5nIj09dHlwZW9mIGNlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3JldHVybiB4KGdlKX1yZXR1cm4gUyhnZSxjZSxoZSl9ZnVuY3Rpb24gUyhnZSxjZSxoZSl7'@; put 'aWYoInN0cmluZyI9PXR5cGVvZiBnZSlyZXR1cm4gZnVuY3Rpb24gVShnZSxjZSl7aWYoKCJzdHJpbmciIT10eXBlb2YgY2V8fCIiPT09Y2UpJiYoY2U9InV0ZjgiKSwhdy5pc0VuY29kaW5nKGNlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2NlKTt2YXIgaGU9'@; put 'MHxXKGdlLGNlKSx3ZT1DKGhlKSxKZT13ZS53cml0ZShnZSxjZSk7cmV0dXJuIEplIT09aGUmJih3ZT13ZS5zbGljZSgwLEplKSksd2V9KGdlLGNlKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZ2UpKXJldHVybiBmdW5jdGlvbiBWKGdlKXtpZihBZShnZSxVaW50OEFycmF5KSl7dmFyIGNlPW5l'@; put 'dyBVaW50OEFycmF5KGdlKTtyZXR1cm4gTihjZS5idWZmZXIsY2UuYnl0ZU9mZnNldCxjZS5ieXRlTGVuZ3RoKX1yZXR1cm4gSChnZSl9KGdlKTtpZihudWxsPT1nZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1'@; put 'ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBnZSk7aWYoQWUoZ2UsQXJyYXlCdWZmZXIpfHxnZSYmQWUoZ2UuYnVmZmVyLEFycmF5QnVmZmVyKXx8dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPCJ1IiYmKEFlKGdl'@; put 'LFNoYXJlZEFycmF5QnVmZmVyKXx8Z2UmJkFlKGdlLmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXJldHVybiBOKGdlLGNlLGhlKTtpZigibnVtYmVyIj09dHlwZW9mIGdlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVt'@; put 'YmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3ZhciB3ZT1nZS52YWx1ZU9mJiZnZS52YWx1ZU9mKCk7aWYobnVsbCE9d2UmJndlIT09Z2UpcmV0dXJuIHcuZnJvbSh3ZSxjZSxoZSk7dmFyIEplPWZ1bmN0aW9uIHooZ2Upe2lmKHcuaXNCdWZmZXIoZ2UpKXt2YXIgY2U9MHxZKGdlLmxlbmd0'@; put 'aCksaGU9QyhjZSk7cmV0dXJuIDA9PT1oZS5sZW5ndGh8fGdlLmNvcHkoaGUsMCwwLGNlKSxoZX1yZXR1cm4gdm9pZCAwIT09Z2UubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgZ2UubGVuZ3RofHxEZShnZS5sZW5ndGgpP0MoMCk6SChnZSk6IkJ1ZmZlciI9PT1nZS50eXBlJiZBcnJheS5pc0Fy'@; put 'cmF5KGdlLmRhdGEpP0goZ2UuZGF0YSk6dm9pZCAwfShnZSk7aWYoSmUpcmV0dXJuIEplO2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBnZVtTeW1ib2wudG9QcmltaXRpdmVdKXJldHVybiB3LmZyb20oZ2VbU3ltYm9s'@; put 'LnRvUHJpbWl0aXZlXSgic3RyaW5nIiksY2UsaGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIr'@; put 'dHlwZW9mIGdlKX1mdW5jdGlvbiBMKGdlKXtpZigibnVtYmVyIiE9dHlwZW9mIGdlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYoZ2U8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK2dlKyciIGlzIGlu'@; put 'dmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiB4KGdlKXtyZXR1cm4gTChnZSksQyhnZTwwPzA6MHxZKGdlKSl9ZnVuY3Rpb24gSChnZSl7Zm9yKHZhciBjZT1nZS5sZW5ndGg8MD8wOjB8WShnZS5sZW5ndGgpLGhlPUMoY2UpLHdlPTA7d2U8Y2U7d2UrPTEpaGVbd2VdPTI1NSZn'@; put 'ZVt3ZV07cmV0dXJuIGhlfWZ1bmN0aW9uIE4oZ2UsY2UsaGUpe2lmKGNlPDB8fGdlLmJ5dGVMZW5ndGg8Y2UpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJvZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKGdlLmJ5dGVMZW5ndGg8Y2UrKGhlfHwwKSl0aHJvdyBuZXcgUmFu'@; put 'Z2VFcnJvcignImxlbmd0aCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7dmFyIHdlO3JldHVybiB3ZT12b2lkIDA9PT1jZSYmdm9pZCAwPT09aGU/bmV3IFVpbnQ4QXJyYXkoZ2UpOnZvaWQgMD09PWhlP25ldyBVaW50OEFycmF5KGdlLGNlKTpuZXcgVWludDhBcnJheShnZSxjZSxo'@; put 'ZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHdlLHcucHJvdG90eXBlKSx3ZX1mdW5jdGlvbiBZKGdlKXtpZihnZT49QSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrQS50b1N0cmluZygxNikrIiBi'@; put 'eXRlcyIpO3JldHVybiAwfGdlfWZ1bmN0aW9uIFcoZ2UsY2Upe2lmKHcuaXNCdWZmZXIoZ2UpKXJldHVybiBnZS5sZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGdlKXx8QWUoZ2UsQXJyYXlCdWZmZXIpKXJldHVybiBnZS5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgZ2UpdGhy'@; put 'b3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGdlKTt2YXIgaGU9Z2UubGVuZ3RoLHdlPWFyZ3VtZW50cy5sZW5ndGg+MiYmITA9PT1h'@; put 'cmd1bWVudHNbMl07aWYoIXdlJiYwPT09aGUpcmV0dXJuIDA7Zm9yKHZhciBKZT0hMTs7KXN3aXRjaChjZSl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gaGU7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gZHQoZ2UpLmxlbmd0aDtjYXNlInVjczIi'@; put 'OmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqaGU7Y2FzZSJoZXgiOnJldHVybiBoZT4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiB4ZShnZSkubGVuZ3RoO2RlZmF1bHQ6aWYoSmUpcmV0dXJuIHdlPy0xOmR0KGdlKS5sZW5ndGg7Y2U9KCIiK2NlKS50'@; put 'b0xvd2VyQ2FzZSgpLEplPSEwfX1mdW5jdGlvbiBxKGdlLGNlLGhlKXt2YXIgd2U9ITE7aWYoKHZvaWQgMD09PWNlfHxjZTwwKSYmKGNlPTApLGNlPnRoaXMubGVuZ3RofHwoKHZvaWQgMD09PWhlfHxoZT50aGlzLmxlbmd0aCkmJihoZT10aGlzLmxlbmd0aCksaGU8PTApfHwoaGU+Pj49MCk8'@; put 'PShjZT4+Pj0wKSlyZXR1cm4iIjtmb3IoZ2V8fChnZT0idXRmOCIpOzspc3dpdGNoKGdlKXtjYXNlImhleCI6cmV0dXJuIEQodGhpcyxjZSxoZSk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gayh0aGlzLGNlLGhlKTtjYXNlImFzY2lpIjpyZXR1cm4gSyh0aGlzLGNlLGhlKTtjYXNl'@; put 'ImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBHKHRoaXMsY2UsaGUpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gYih0aGlzLGNlLGhlKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIHAodGhpcyxjZSxoZSk7ZGVmYXVsdDppZih3ZSl0'@; put 'aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2dlKTtnZT0oZ2UrIiIpLnRvTG93ZXJDYXNlKCksd2U9ITB9fWZ1bmN0aW9uIHJlKGdlLGNlLGhlKXt2YXIgd2U9Z2VbY2VdO2dlW2NlXT1nZVtoZV0sZ2VbaGVdPXdlfWZ1bmN0aW9uIG1lKGdlLGNlLGhlLHdlLEplKXtp'@; put 'ZigwPT09Z2UubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgaGU/KHdlPWhlLGhlPTApOmhlPjIxNDc0ODM2NDc/aGU9MjE0NzQ4MzY0NzpoZTwtMjE0NzQ4MzY0OCYmKGhlPS0yMTQ3NDgzNjQ4KSxEZShoZT0raGUpJiYoaGU9SmU/MDpnZS5sZW5ndGgtMSksaGU8MCYmKGhl'@; put 'PWdlLmxlbmd0aCtoZSksaGU+PWdlLmxlbmd0aCl7aWYoSmUpcmV0dXJuLTE7aGU9Z2UubGVuZ3RoLTF9ZWxzZSBpZihoZTwwKXtpZighSmUpcmV0dXJuLTE7aGU9MH1pZigic3RyaW5nIj09dHlwZW9mIGNlJiYoY2U9dy5mcm9tKGNlLHdlKSksdy5pc0J1ZmZlcihjZSkpcmV0dXJuIDA9PT1j'@; put 'ZS5sZW5ndGg/LTE6Q2UoZ2UsY2UsaGUsd2UsSmUpO2lmKCJudW1iZXIiPT10eXBlb2YgY2UpcmV0dXJuIGNlJj0yNTUsImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/SmU/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGdlLGNlLGhlKTpV'@; put 'aW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGdlLGNlLGhlKTpDZShnZSxbY2VdLGhlLHdlLEplKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBDZShnZSxjZSxoZSx3ZSxKZSl7dmFyIEx0LHR0'@; put 'PTEsS2U9Z2UubGVuZ3RoLCR0PWNlLmxlbmd0aDtpZih2b2lkIDAhPT13ZSYmKCJ1Y3MyIj09PSh3ZT1TdHJpbmcod2UpLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09d2V8fCJ1dGYxNmxlIj09PXdlfHwidXRmLTE2bGUiPT09d2UpKXtpZihnZS5sZW5ndGg8Mnx8Y2UubGVuZ3RoPDIpcmV0'@; put 'dXJuLTE7dHQ9MixLZS89MiwkdC89MixoZS89Mn1mdW5jdGlvbiBSdChMcixsbil7cmV0dXJuIDE9PT10dD9Mcltsbl06THIucmVhZFVJbnQxNkJFKGxuKnR0KX1pZihKZSl7dmFyIEd0PS0xO2ZvcihMdD1oZTtMdDxLZTtMdCsrKWlmKFJ0KGdlLEx0KT09PVJ0KGNlLC0xPT09R3Q/MDpMdC1H'@; put 'dCkpe2lmKC0xPT09R3QmJihHdD1MdCksTHQtR3QrMT09PSR0KXJldHVybiBHdCp0dH1lbHNlLTEhPT1HdCYmKEx0LT1MdC1HdCksR3Q9LTF9ZWxzZSBmb3IoaGUrJHQ+S2UmJihoZT1LZS0kdCksTHQ9aGU7THQ+PTA7THQtLSl7Zm9yKHZhciBndD0hMCxYdD0wO1h0PCR0O1h0KyspaWYoUnQo'@; put 'Z2UsTHQrWHQpIT09UnQoY2UsWHQpKXtndD0hMTticmVha31pZihndClyZXR1cm4gTHR9cmV0dXJuLTF9ZnVuY3Rpb24gSWUoZ2UsY2UsaGUsd2Upe2hlPU51bWJlcihoZSl8fDA7dmFyIEplPWdlLmxlbmd0aC1oZTt3ZT8od2U9TnVtYmVyKHdlKSk+SmUmJih3ZT1KZSk6d2U9SmU7dmFyIHR0'@; put 'PWNlLmxlbmd0aDt3ZT50dC8yJiYod2U9dHQvMik7Zm9yKHZhciBLZT0wO0tlPHdlOysrS2Upe3ZhciAkdD1wYXJzZUludChjZS5zdWJzdHIoMipLZSwyKSwxNik7aWYoRGUoJHQpKXJldHVybiBLZTtnZVtoZStLZV09JHR9cmV0dXJuIEtlfWZ1bmN0aW9uIGtlKGdlLGNlLGhlLHdlKXtyZXR1'@; put 'cm4gamUoZHQoY2UsZ2UubGVuZ3RoLWhlKSxnZSxoZSx3ZSl9ZnVuY3Rpb24gcWUoZ2UsY2UsaGUsd2Upe3JldHVybiBqZShmdW5jdGlvbiBSZShnZSl7Zm9yKHZhciBjZT1bXSxoZT0wO2hlPGdlLmxlbmd0aDsrK2hlKWNlLnB1c2goMjU1JmdlLmNoYXJDb2RlQXQoaGUpKTtyZXR1cm4gY2V9'@; put 'KGNlKSxnZSxoZSx3ZSl9ZnVuY3Rpb24gWChnZSxjZSxoZSx3ZSl7cmV0dXJuIGplKHhlKGNlKSxnZSxoZSx3ZSl9ZnVuY3Rpb24gZihnZSxjZSxoZSx3ZSl7cmV0dXJuIGplKGZ1bmN0aW9uIGFlKGdlLGNlKXtmb3IodmFyIGhlLHdlLHR0PVtdLEtlPTA7S2U8Z2UubGVuZ3RoJiYhKChjZS09'@; put 'Mik8MCk7KytLZSl3ZT0oaGU9Z2UuY2hhckNvZGVBdChLZSkpPj44LHR0LnB1c2goaGUlMjU2KSx0dC5wdXNoKHdlKTtyZXR1cm4gdHR9KGNlLGdlLmxlbmd0aC1oZSksZ2UsaGUsd2UpfWZ1bmN0aW9uIGIoZ2UsY2UsaGUpe3JldHVybiB5LmZyb21CeXRlQXJyYXkoMD09PWNlJiZoZT09PWdl'@; put 'Lmxlbmd0aD9nZTpnZS5zbGljZShjZSxoZSkpfWZ1bmN0aW9uIGsoZ2UsY2UsaGUpe2hlPU1hdGgubWluKGdlLmxlbmd0aCxoZSk7Zm9yKHZhciB3ZT1bXSxKZT1jZTtKZTxoZTspe3ZhciBSdCxMdCxHdCxndCx0dD1nZVtKZV0sS2U9bnVsbCwkdD10dD4yMzk/NDp0dD4yMjM/Mzp0dD4xOTE/'@; put 'MjoxO2lmKEplKyR0PD1oZSlzd2l0Y2goJHQpe2Nhc2UgMTp0dDwxMjgmJihLZT10dCk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoUnQ9Z2VbSmUrMV0pKSYmKGd0PSgzMSZ0dCk8PDZ8NjMmUnQpPjEyNyYmKEtlPWd0KTticmVhaztjYXNlIDM6THQ9Z2VbSmUrMl0sMTI4PT0oMTkyJihSdD1n'@; put 'ZVtKZSsxXSkpJiYxMjg9PSgxOTImTHQpJiYoZ3Q9KDE1JnR0KTw8MTJ8KDYzJlJ0KTw8Nnw2MyZMdCk+MjA0NyYmKGd0PDU1Mjk2fHxndD41NzM0MykmJihLZT1ndCk7YnJlYWs7Y2FzZSA0Okx0PWdlW0plKzJdLEd0PWdlW0plKzNdLDEyOD09KDE5MiYoUnQ9Z2VbSmUrMV0pKSYmMTI4PT0o'@; put 'MTkyJkx0KSYmMTI4PT0oMTkyJkd0KSYmKGd0PSgxNSZ0dCk8PDE4fCg2MyZSdCk8PDEyfCg2MyZMdCk8PDZ8NjMmR3QpPjY1NTM1JiZndDwxMTE0MTEyJiYoS2U9Z3QpfW51bGw9PT1LZT8oS2U9NjU1MzMsJHQ9MSk6S2U+NjU1MzUmJih3ZS5wdXNoKChLZS09NjU1MzYpPj4+MTAmMTAyM3w1'@; put 'NTI5NiksS2U9NTYzMjB8MTAyMyZLZSksd2UucHVzaChLZSksSmUrPSR0fXJldHVybiBmdW5jdGlvbiBCKGdlKXt2YXIgY2U9Z2UubGVuZ3RoO2lmKGNlPD1NKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxnZSk7Zm9yKHZhciBoZT0iIix3ZT0wO3dlPGNlOyloZSs9'@; put 'U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZ2Uuc2xpY2Uod2Usd2UrPU0pKTtyZXR1cm4gaGV9KHdlKX1qLmtNYXhMZW5ndGg9QSwhKHcuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbiB2KCl7dHJ5e3ZhciBnZT1uZXcgVWludDhBcnJheSgxKSxjZT17Zm9vOmZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihjZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlLGNlKSw0Mj09PWdlLmZvbygpfWNhdGNoe3JldHVybiExfX0oKSkmJnR5cGVvZiBjb25zb2xlPCJ1IiYmImZ1bmN0aW9uIj09'@; put 'dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJv'@; put 'd3NlciBzdXBwb3J0LiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LnByb3RvdHlwZSwicGFyZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZih3LmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5wcm90b3R5cGUs'@; put 'Im9mZnNldCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYody5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLHcucG9vbFNpemU9ODE5Mix3LmZyb209ZnVuY3Rpb24oZ2UsY2UsaGUpe3JldHVybiBTKGdlLGNlLGhlKX0sT2JqZWN0LnNldFByb3RvdHlw'@; put 'ZU9mKHcucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodyxVaW50OEFycmF5KSx3LmFsbG9jPWZ1bmN0aW9uKGdlLGNlLGhlKXtyZXR1cm4gZnVuY3Rpb24gUihnZSxjZSxoZSl7cmV0dXJuIEwoZ2UpLGdlPD0wP0MoZ2UpOnZvaWQgMCE9PWNl'@; put 'PyJzdHJpbmciPT10eXBlb2YgaGU/QyhnZSkuZmlsbChjZSxoZSk6QyhnZSkuZmlsbChjZSk6QyhnZSl9KGdlLGNlLGhlKX0sdy5hbGxvY1Vuc2FmZT1mdW5jdGlvbihnZSl7cmV0dXJuIHgoZ2UpfSx3LmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihnZSl7cmV0dXJuIHgoZ2UpfSx3LmlzQnVm'@; put 'ZmVyPWZ1bmN0aW9uKGNlKXtyZXR1cm4gbnVsbCE9Y2UmJiEwPT09Y2UuX2lzQnVmZmVyJiZjZSE9PXcucHJvdG90eXBlfSx3LmNvbXBhcmU9ZnVuY3Rpb24oY2UsaGUpe2lmKEFlKGNlLFVpbnQ4QXJyYXkpJiYoY2U9dy5mcm9tKGNlLGNlLm9mZnNldCxjZS5ieXRlTGVuZ3RoKSksQWUoaGUs'@; put 'VWludDhBcnJheSkmJihoZT13LmZyb20oaGUsaGUub2Zmc2V0LGhlLmJ5dGVMZW5ndGgpKSwhdy5pc0J1ZmZlcihjZSl8fCF3LmlzQnVmZmVyKGhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9y'@; put 'IFVpbnQ4QXJyYXknKTtpZihjZT09PWhlKXJldHVybiAwO2Zvcih2YXIgd2U9Y2UubGVuZ3RoLEplPWhlLmxlbmd0aCx0dD0wLEtlPU1hdGgubWluKHdlLEplKTt0dDxLZTsrK3R0KWlmKGNlW3R0XSE9PWhlW3R0XSl7d2U9Y2VbdHRdLEplPWhlW3R0XTticmVha31yZXR1cm4gd2U8SmU/LTE6'@; put 'SmU8d2U/MTowfSx3LmlzRW5jb2Rpbmc9ZnVuY3Rpb24oY2Upe3N3aXRjaChTdHJpbmcoY2UpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6'@; put 'Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sdy5jb25jYXQ9ZnVuY3Rpb24oY2UsaGUpe2lmKCFBcnJheS5pc0FycmF5KGNlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBB'@; put 'cnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWNlLmxlbmd0aClyZXR1cm4gdy5hbGxvYygwKTt2YXIgd2U7aWYodm9pZCAwPT09aGUpZm9yKGhlPTAsd2U9MDt3ZTxjZS5sZW5ndGg7Kyt3ZSloZSs9Y2Vbd2VdLmxlbmd0aDt2YXIgSmU9dy5hbGxvY1Vuc2FmZShoZSksdHQ9MDtmb3Iod2U9MDt3'@; put 'ZTxjZS5sZW5ndGg7Kyt3ZSl7dmFyIEtlPWNlW3dlXTtpZihBZShLZSxVaW50OEFycmF5KSl0dCtLZS5sZW5ndGg+SmUubGVuZ3RoP3cuZnJvbShLZSkuY29weShKZSx0dCk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoSmUsS2UsdHQpO2Vsc2V7aWYoIXcuaXNCdWZmZXIoS2UpKXRo'@; put 'cm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtLZS5jb3B5KEplLHR0KX10dCs9S2UubGVuZ3RofXJldHVybiBKZX0sdy5ieXRlTGVuZ3RoPVcsdy5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLHcucHJvdG90eXBlLnN3YXAxNj1m'@; put 'dW5jdGlvbigpe3ZhciBjZT10aGlzLmxlbmd0aDtpZihjZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgaGU9MDtoZTxjZTtoZSs9MilyZSh0aGlzLGhlLGhlKzEpO3JldHVybiB0aGlzfSx3LnBy'@; put 'b3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgY2U9dGhpcy5sZW5ndGg7aWYoY2UlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIGhlPTA7aGU8Y2U7aGUrPTQpcmUodGhpcyxoZSxoZSszKSxy'@; put 'ZSh0aGlzLGhlKzEsaGUrMik7cmV0dXJuIHRoaXN9LHcucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBjZT10aGlzLmxlbmd0aDtpZihjZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIg'@; put 'aGU9MDtoZTxjZTtoZSs9OClyZSh0aGlzLGhlLGhlKzcpLHJlKHRoaXMsaGUrMSxoZSs2KSxyZSh0aGlzLGhlKzIsaGUrNSkscmUodGhpcyxoZSszLGhlKzQpO3JldHVybiB0aGlzfSx3LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBjZT10aGlzLmxlbmd0aDtyZXR1cm4gMD09'@; put 'PWNlPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP2sodGhpcywwLGNlKTpxLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdy5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9dy5wcm90b3R5cGUudG9TdHJpbmcsdy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGNlKXtpZighdy5pc0J1ZmZlcihjZSkp'@; put 'dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09Y2V8fDA9PT13LmNvbXBhcmUodGhpcyxjZSl9LHcucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgY2U9IiIsaGU9ai5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gY2U9'@; put 'dGhpcy50b1N0cmluZygiaGV4IiwwLGhlKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPmhlJiYoY2UrPSIgLi4uICIpLCI8QnVmZmVyICIrY2UrIj4ifSxzJiYody5wcm90b3R5cGVbc109dy5wcm90b3R5cGUuaW5zcGVjdCksdy5wcm90b3R5cGUuY29tcGFy'@; put 'ZT1mdW5jdGlvbihjZSxoZSx3ZSxKZSx0dCl7aWYoQWUoY2UsVWludDhBcnJheSkmJihjZT13LmZyb20oY2UsY2Uub2Zmc2V0LGNlLmJ5dGVMZW5ndGgpKSwhdy5pc0J1ZmZlcihjZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ0YXJnZXQiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5'@; put 'cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgY2UpO2lmKHZvaWQgMD09PWhlJiYoaGU9MCksdm9pZCAwPT09d2UmJih3ZT1jZT9jZS5sZW5ndGg6MCksdm9pZCAwPT09SmUmJihKZT0wKSx2b2lkIDA9PT10dCYmKHR0PXRoaXMubGVuZ3RoKSxoZTwwfHx3'@; put 'ZT5jZS5sZW5ndGh8fEplPDB8fHR0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihKZT49dHQmJmhlPj13ZSlyZXR1cm4gMDtpZihKZT49dHQpcmV0dXJuLTE7aWYoaGU+PXdlKXJldHVybiAxO2lmKHRoaXM9PT1jZSlyZXR1cm4gMDtm'@; put 'b3IodmFyIEtlPSh0dD4+Pj0wKS0oSmU+Pj49MCksJHQ9KHdlPj4+PTApLShoZT4+Pj0wKSxSdD1NYXRoLm1pbihLZSwkdCksTHQ9dGhpcy5zbGljZShKZSx0dCksR3Q9Y2Uuc2xpY2UoaGUsd2UpLGd0PTA7Z3Q8UnQ7KytndClpZihMdFtndF0hPT1HdFtndF0pe0tlPUx0W2d0XSwkdD1HdFtn'@; put 'dF07YnJlYWt9cmV0dXJuIEtlPCR0Py0xOiR0PEtlPzE6MH0sdy5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGNlLGhlLHdlKX0sdy5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIG1lKHRoaXMs'@; put 'Y2UsaGUsd2UsITApfSx3LnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIG1lKHRoaXMsY2UsaGUsd2UsITEpfSx3LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihjZSxoZSx3ZSxKZSl7aWYodm9pZCAwPT09aGUpSmU9InV0ZjgiLHdlPXRoaXMubGVuZ3Ro'@; put 'LGhlPTA7ZWxzZSBpZih2b2lkIDA9PT13ZSYmInN0cmluZyI9PXR5cGVvZiBoZSlKZT1oZSx3ZT10aGlzLmxlbmd0aCxoZT0wO2Vsc2V7aWYoIWlzRmluaXRlKGhlKSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBu'@; put 'byBsb25nZXIgc3VwcG9ydGVkIik7aGU+Pj49MCxpc0Zpbml0ZSh3ZSk/KHdlPj4+PTAsdm9pZCAwPT09SmUmJihKZT0idXRmOCIpKTooSmU9d2Usd2U9dm9pZCAwKX12YXIgdHQ9dGhpcy5sZW5ndGgtaGU7aWYoKHZvaWQgMD09PXdlfHx3ZT50dCkmJih3ZT10dCksY2UubGVuZ3RoPjAmJih3'@; put 'ZTwwfHxoZTwwKXx8aGU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7SmV8fChKZT0idXRmOCIpO2Zvcih2YXIgS2U9ITE7Oylzd2l0Y2goSmUpe2Nhc2UiaGV4IjpyZXR1cm4gSWUodGhpcyxjZSxoZSx3'@; put 'ZSk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4ga2UodGhpcyxjZSxoZSx3ZSk7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcWUodGhpcyxjZSxoZSx3ZSk7Y2FzZSJiYXNlNjQiOnJldHVybiBYKHRoaXMsY2UsaGUsd2UpO2Nhc2UidWNzMiI6Y2Fz'@; put 'ZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gZih0aGlzLGNlLGhlLHdlKTtkZWZhdWx0OmlmKEtlKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrSmUpO0plPSgiIitKZSkudG9Mb3dlckNhc2UoKSxLZT0hMH19LHcucHJvdG90eXBl'@; put 'LnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIE09NDA5NjtmdW5jdGlvbiBLKGdlLGNlLGhlKXt2YXIgd2U9IiI7aGU9TWF0aC5taW4oZ2UubGVuZ3RoLGhlKTtmb3Io'@; put 'dmFyIEplPWNlO0plPGhlOysrSmUpd2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JmdlW0plXSk7cmV0dXJuIHdlfWZ1bmN0aW9uIEcoZ2UsY2UsaGUpe3ZhciB3ZT0iIjtoZT1NYXRoLm1pbihnZS5sZW5ndGgsaGUpO2Zvcih2YXIgSmU9Y2U7SmU8aGU7KytKZSl3ZSs9U3RyaW5nLmZyb21D'@; put 'aGFyQ29kZShnZVtKZV0pO3JldHVybiB3ZX1mdW5jdGlvbiBEKGdlLGNlLGhlKXt2YXIgd2U9Z2UubGVuZ3RoOyghY2V8fGNlPDApJiYoY2U9MCksKCFoZXx8aGU8MHx8aGU+d2UpJiYoaGU9d2UpO2Zvcih2YXIgSmU9IiIsdHQ9Y2U7dHQ8aGU7Kyt0dClKZSs9RmVbZ2VbdHRdXTtyZXR1cm4g'@; put 'SmV9ZnVuY3Rpb24gcChnZSxjZSxoZSl7Zm9yKHZhciB3ZT1nZS5zbGljZShjZSxoZSksSmU9IiIsdHQ9MDt0dDx3ZS5sZW5ndGgtMTt0dCs9MilKZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh3ZVt0dF0rMjU2KndlW3R0KzFdKTtyZXR1cm4gSmV9ZnVuY3Rpb24gSShnZSxjZSxoZSl7aWYoZ2Ul'@; put 'MSE9MHx8Z2U8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZ2UrY2U+aGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiB1ZShnZSxjZSxoZSx3ZSxKZSx0dCl7aWYoIXcu'@; put 'aXNCdWZmZXIoZ2UpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihjZT5KZXx8Y2U8dHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKGhlK3dlPmdl'@; put 'Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gbmUoZ2UsY2UsaGUsd2UsSmUsdHQpe2lmKGhlK3dlPmdlLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoaGU8MCl0aHJvdyBuZXcgUmFu'@; put 'Z2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gX2UoZ2UsY2UsaGUsd2UsSmUpe3JldHVybiBjZT0rY2UsaGU+Pj49MCxKZXx8bmUoZ2UsMCxoZSw0KSxjLndyaXRlKGdlLGNlLGhlLHdlLDIzLDQpLGhlKzR9ZnVuY3Rpb24gUGUoZ2UsY2UsaGUsd2UsSmUpe3JldHVybiBj'@; put 'ZT0rY2UsaGU+Pj49MCxKZXx8bmUoZ2UsMCxoZSw4KSxjLndyaXRlKGdlLGNlLGhlLHdlLDUyLDgpLGhlKzh9dy5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oY2UsaGUpe3ZhciB3ZT10aGlzLmxlbmd0aDsoY2U9fn5jZSk8MD8oY2UrPXdlKTwwJiYoY2U9MCk6Y2U+d2UmJihjZT13ZSksKGhl'@; put 'PXZvaWQgMD09PWhlP3dlOn5+aGUpPDA/KGhlKz13ZSk8MCYmKGhlPTApOmhlPndlJiYoaGU9d2UpLGhlPGNlJiYoaGU9Y2UpO3ZhciBKZT10aGlzLnN1YmFycmF5KGNlLGhlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKEplLHcucHJvdG90eXBlKSxKZX0sdy5wcm90b3R5cGUucmVh'@; put 'ZFVpbnRMRT13LnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGNlLGhlLHdlKXtjZT4+Pj0wLGhlPj4+PTAsd2V8fEkoY2UsaGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgSmU9dGhpc1tjZV0sdHQ9MSxLZT0wOysrS2U8aGUmJih0dCo9MjU2KTspSmUrPXRoaXNbY2UrS2VdKnR0O3JldHVy'@; put 'biBKZX0sdy5wcm90b3R5cGUucmVhZFVpbnRCRT13LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGNlLGhlLHdlKXtjZT4+Pj0wLGhlPj4+PTAsd2V8fEkoY2UsaGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgSmU9dGhpc1tjZSstLWhlXSx0dD0xO2hlPjAmJih0dCo9MjU2KTspSmUrPXRo'@; put 'aXNbY2UrLS1oZV0qdHQ7cmV0dXJuIEplfSx3LnByb3RvdHlwZS5yZWFkVWludDg9dy5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2NlXX0sdy5wcm90b3R5cGUucmVhZFVpbnQxNkxFPXcucHJv'@; put 'dG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihjZSxoZSl7cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsMix0aGlzLmxlbmd0aCksdGhpc1tjZV18dGhpc1tjZSsxXTw8OH0sdy5wcm90b3R5cGUucmVhZFVpbnQxNkJFPXcucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihjZSxoZSl7'@; put 'cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsMix0aGlzLmxlbmd0aCksdGhpc1tjZV08PDh8dGhpc1tjZSsxXX0sdy5wcm90b3R5cGUucmVhZFVpbnQzMkxFPXcucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihjZSxoZSl7cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsNCx0aGlzLmxlbmd0'@; put 'aCksKHRoaXNbY2VdfHRoaXNbY2UrMV08PDh8dGhpc1tjZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbY2UrM119LHcucHJvdG90eXBlLnJlYWRVaW50MzJCRT13LnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDQsdGhpcy5sZW5n'@; put 'dGgpLDE2Nzc3MjE2KnRoaXNbY2VdKyh0aGlzW2NlKzFdPDwxNnx0aGlzW2NlKzJdPDw4fHRoaXNbY2UrM10pfSx3LnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oY2UsaGUsd2Upe2NlPj4+PTAsaGU+Pj49MCx3ZXx8SShjZSxoZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBKZT10aGlzW2Nl'@; put 'XSx0dD0xLEtlPTA7KytLZTxoZSYmKHR0Kj0yNTYpOylKZSs9dGhpc1tjZStLZV0qdHQ7cmV0dXJuIEplPj0odHQqPTEyOCkmJihKZS09TWF0aC5wb3coMiw4KmhlKSksSmV9LHcucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihjZSxoZSx3ZSl7Y2U+Pj49MCxoZT4+Pj0wLHdlfHxJKGNl'@; put 'LGhlLHRoaXMubGVuZ3RoKTtmb3IodmFyIEplPWhlLHR0PTEsS2U9dGhpc1tjZSstLUplXTtKZT4wJiYodHQqPTI1Nik7KUtlKz10aGlzW2NlKy0tSmVdKnR0O3JldHVybiBLZT49KHR0Kj0xMjgpJiYoS2UtPU1hdGgucG93KDIsOCpoZSkpLEtlfSx3LnByb3RvdHlwZS5yZWFkSW50OD1mdW5j'@; put 'dGlvbihjZSxoZSl7cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbY2VdPy0xKigyNTUtdGhpc1tjZV0rMSk6dGhpc1tjZV19LHcucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGNlLGhlKXtjZT4+Pj0wLGhlfHxJKGNlLDIsdGhpcy5sZW5ndGgp'@; put 'O3ZhciB3ZT10aGlzW2NlXXx0aGlzW2NlKzFdPDw4O3JldHVybiAzMjc2OCZ3ZT80Mjk0OTAxNzYwfHdlOndlfSx3LnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihjZSxoZSl7Y2U+Pj49MCxoZXx8SShjZSwyLHRoaXMubGVuZ3RoKTt2YXIgd2U9dGhpc1tjZSsxXXx0aGlzW2NlXTw8'@; put 'ODtyZXR1cm4gMzI3Njgmd2U/NDI5NDkwMTc2MHx3ZTp3ZX0sdy5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDQsdGhpcy5sZW5ndGgpLHRoaXNbY2VdfHRoaXNbY2UrMV08PDh8dGhpc1tjZSsyXTw8MTZ8dGhpc1tjZSszXTw8'@; put 'MjR9LHcucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2NlXTw8MjR8dGhpc1tjZSsxXTw8MTZ8dGhpc1tjZSsyXTw8OHx0aGlzW2NlKzNdfSx3LnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5j'@; put 'dGlvbihjZSxoZSl7cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsNCx0aGlzLmxlbmd0aCksYy5yZWFkKHRoaXMsY2UsITAsMjMsNCl9LHcucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSw0LHRoaXMubGVuZ3RoKSxjLnJlYWQodGhp'@; put 'cyxjZSwhMSwyMyw0KX0sdy5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSw4LHRoaXMubGVuZ3RoKSxjLnJlYWQodGhpcyxjZSwhMCw1Miw4KX0sdy5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1'@; put 'cm4gY2U+Pj49MCxoZXx8SShjZSw4LHRoaXMubGVuZ3RoKSxjLnJlYWQodGhpcyxjZSwhMSw1Miw4KX0sdy5wcm90b3R5cGUud3JpdGVVaW50TEU9dy5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oY2UsaGUsd2UsSmUpe2NlPStjZSxoZT4+Pj0wLHdlPj4+PTAsSmV8fHVlKHRoaXMs'@; put 'Y2UsaGUsd2UsTWF0aC5wb3coMiw4KndlKS0xLDApO3ZhciBLZT0xLCR0PTA7Zm9yKHRoaXNbaGVdPTI1NSZjZTsrKyR0PHdlJiYoS2UqPTI1Nik7KXRoaXNbaGUrJHRdPWNlL0tlJjI1NTtyZXR1cm4gaGUrd2V9LHcucHJvdG90eXBlLndyaXRlVWludEJFPXcucHJvdG90eXBlLndyaXRlVUlu'@; put 'dEJFPWZ1bmN0aW9uKGNlLGhlLHdlLEplKXtjZT0rY2UsaGU+Pj49MCx3ZT4+Pj0wLEplfHx1ZSh0aGlzLGNlLGhlLHdlLE1hdGgucG93KDIsOCp3ZSktMSwwKTt2YXIgS2U9d2UtMSwkdD0xO2Zvcih0aGlzW2hlK0tlXT0yNTUmY2U7LS1LZT49MCYmKCR0Kj0yNTYpOyl0aGlzW2hlK0tlXT1j'@; put 'ZS8kdCYyNTU7cmV0dXJuIGhlK3dlfSx3LnByb3RvdHlwZS53cml0ZVVpbnQ4PXcucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSwxLDI1NSwwKSx0aGlzW2hlXT0yNTUmY2UsaGUrMX0sdy5wcm90'@; put 'b3R5cGUud3JpdGVVaW50MTZMRT13LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsMiw2NTUzNSwwKSx0aGlzW2hlXT0yNTUmY2UsdGhpc1toZSsxXT1jZT4+PjgsaGUrMn0sdy5wcm90b3R5'@; put 'cGUud3JpdGVVaW50MTZCRT13LnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsMiw2NTUzNSwwKSx0aGlzW2hlXT1jZT4+PjgsdGhpc1toZSsxXT0yNTUmY2UsaGUrMn0sdy5wcm90b3R5cGUu'@; put 'd3JpdGVVaW50MzJMRT13LnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbaGUrM109Y2U+Pj4yNCx0aGlzW2hlKzJdPWNlPj4+MTYsdGhpc1toZSsxXT1j'@; put 'ZT4+PjgsdGhpc1toZV09MjU1JmNlLGhlKzR9LHcucHJvdG90eXBlLndyaXRlVWludDMyQkU9dy5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIGNlPStjZSxoZT4+Pj0wLHdlfHx1ZSh0aGlzLGNlLGhlLDQsNDI5NDk2NzI5NSwwKSx0aGlzW2hlXT1j'@; put 'ZT4+PjI0LHRoaXNbaGUrMV09Y2U+Pj4xNix0aGlzW2hlKzJdPWNlPj4+OCx0aGlzW2hlKzNdPTI1NSZjZSxoZSs0fSx3LnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGNlLGhlLHdlLEplKXtpZihjZT0rY2UsaGU+Pj49MCwhSmUpe3ZhciB0dD1NYXRoLnBvdygyLDgqd2UtMSk7dWUo'@; put 'dGhpcyxjZSxoZSx3ZSx0dC0xLC10dCl9dmFyIEtlPTAsJHQ9MSxSdD0wO2Zvcih0aGlzW2hlXT0yNTUmY2U7KytLZTx3ZSYmKCR0Kj0yNTYpOyljZTwwJiYwPT09UnQmJjAhPT10aGlzW2hlK0tlLTFdJiYoUnQ9MSksdGhpc1toZStLZV09KGNlLyR0fDApLVJ0JjI1NTtyZXR1cm4gaGUrd2V9'@; put 'LHcucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oY2UsaGUsd2UsSmUpe2lmKGNlPStjZSxoZT4+Pj0wLCFKZSl7dmFyIHR0PU1hdGgucG93KDIsOCp3ZS0xKTt1ZSh0aGlzLGNlLGhlLHdlLHR0LTEsLXR0KX12YXIgS2U9d2UtMSwkdD0xLFJ0PTA7Zm9yKHRoaXNbaGUrS2VdPTI1NSZj'@; put 'ZTstLUtlPj0wJiYoJHQqPTI1Nik7KWNlPDAmJjA9PT1SdCYmMCE9PXRoaXNbaGUrS2UrMV0mJihSdD0xKSx0aGlzW2hlK0tlXT0oY2UvJHR8MCktUnQmMjU1O3JldHVybiBoZSt3ZX0sdy5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+'@; put 'PTAsd2V8fHVlKHRoaXMsY2UsaGUsMSwxMjcsLTEyOCksY2U8MCYmKGNlPTI1NStjZSsxKSx0aGlzW2hlXT0yNTUmY2UsaGUrMX0sdy5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsMiwzMjc2'@; put 'NywtMzI3NjgpLHRoaXNbaGVdPTI1NSZjZSx0aGlzW2hlKzFdPWNlPj4+OCxoZSsyfSx3LnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSwyLDMyNzY3LC0zMjc2OCksdGhpc1toZV09Y2U+Pj44'@; put 'LHRoaXNbaGUrMV09MjU1JmNlLGhlKzJ9LHcucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIGNlPStjZSxoZT4+Pj0wLHdlfHx1ZSh0aGlzLGNlLGhlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdGhpc1toZV09MjU1JmNlLHRoaXNbaGUrMV09Y2U+'@; put 'Pj44LHRoaXNbaGUrMl09Y2U+Pj4xNix0aGlzW2hlKzNdPWNlPj4+MjQsaGUrNH0sdy5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxjZTwwJiYo'@; put 'Y2U9NDI5NDk2NzI5NStjZSsxKSx0aGlzW2hlXT1jZT4+PjI0LHRoaXNbaGUrMV09Y2U+Pj4xNix0aGlzW2hlKzJdPWNlPj4+OCx0aGlzW2hlKzNdPTI1NSZjZSxoZSs0fSx3LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBfZSh0aGlzLGNlLGhlLCEw'@; put 'LHdlKX0sdy5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gX2UodGhpcyxjZSxoZSwhMSx3ZSl9LHcucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBQZSh0aGlzLGNlLGhlLCEwLHdlKX0sdy5wcm90b3R5cGUu'@; put 'd3JpdGVEb3VibGVCRT1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIFBlKHRoaXMsY2UsaGUsITEsd2UpfSx3LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGNlLGhlLHdlLEplKXtpZighdy5pc0J1ZmZlcihjZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVm'@; put 'ZmVyIik7aWYod2V8fCh3ZT0wKSwhSmUmJjAhPT1KZSYmKEplPXRoaXMubGVuZ3RoKSxoZT49Y2UubGVuZ3RoJiYoaGU9Y2UubGVuZ3RoKSxoZXx8KGhlPTApLEplPjAmJkplPHdlJiYoSmU9d2UpLEplPT09d2V8fDA9PT1jZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZiho'@; put 'ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYod2U8MHx8d2U+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihKZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0'@; put 'IG9mIGJvdW5kcyIpO0plPnRoaXMubGVuZ3RoJiYoSmU9dGhpcy5sZW5ndGgpLGNlLmxlbmd0aC1oZTxKZS13ZSYmKEplPWNlLmxlbmd0aC1oZSt3ZSk7dmFyIHR0PUplLXdlO3JldHVybiB0aGlzPT09Y2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0'@; put 'aGluP3RoaXMuY29weVdpdGhpbihoZSx3ZSxKZSk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoY2UsdGhpcy5zdWJhcnJheSh3ZSxKZSksaGUpLHR0fSx3LnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGNlLGhlLHdlLEplKXtpZigic3RyaW5nIj09dHlwZW9mIGNlKXtpZigic3RyaW5n'@; put 'Ij09dHlwZW9mIGhlPyhKZT1oZSxoZT0wLHdlPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHdlJiYoSmU9d2Usd2U9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PUplJiYic3RyaW5nIiE9dHlwZW9mIEplKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmci'@; put 'KTtpZigic3RyaW5nIj09dHlwZW9mIEplJiYhdy5pc0VuY29kaW5nKEplKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0plKTtpZigxPT09Y2UubGVuZ3RoKXt2YXIgdHQ9Y2UuY2hhckNvZGVBdCgwKTsoInV0ZjgiPT09SmUmJnR0PDEyOHx8ImxhdGluMSI9PT1K'@; put 'ZSkmJihjZT10dCl9fWVsc2UibnVtYmVyIj09dHlwZW9mIGNlP2NlJj0yNTU6ImJvb2xlYW4iPT10eXBlb2YgY2UmJihjZT1OdW1iZXIoY2UpKTtpZihoZTwwfHx0aGlzLmxlbmd0aDxoZXx8dGhpcy5sZW5ndGg8d2UpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIp'@; put 'O2lmKHdlPD1oZSlyZXR1cm4gdGhpczt2YXIgS2U7aWYoaGU+Pj49MCx3ZT12b2lkIDA9PT13ZT90aGlzLmxlbmd0aDp3ZT4+PjAsY2V8fChjZT0wKSwibnVtYmVyIj09dHlwZW9mIGNlKWZvcihLZT1oZTtLZTx3ZTsrK0tlKXRoaXNbS2VdPWNlO2Vsc2V7dmFyICR0PXcuaXNCdWZmZXIoY2Up'@; put 'P2NlOncuZnJvbShjZSxKZSksUnQ9JHQubGVuZ3RoO2lmKDA9PT1SdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgIicrY2UrJyIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgInZhbHVlIicpO2ZvcihLZT0wO0tlPHdlLWhlOysrS2UpdGhpc1tLZStoZV09JHRbS2UlUnRdfXJldHVy'@; put 'biB0aGlzfTt2YXIgb3Q9L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiBkdChnZSxjZSl7Y2U9Y2V8fDEvMDtmb3IodmFyIGhlLHdlPWdlLmxlbmd0aCxKZT1udWxsLHR0PVtdLEtlPTA7S2U8d2U7KytLZSl7aWYoKGhlPWdlLmNoYXJDb2RlQXQoS2UpKT41NTI5NSYmaGU8NTczNDQpe2lm'@; put 'KCFKZSl7aWYoaGU+NTYzMTkpeyhjZS09Myk+LTEmJnR0LnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKEtlKzE9PT13ZSl7KGNlLT0zKT4tMSYmdHQucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9SmU9aGU7Y29udGludWV9aWYoaGU8NTYzMjApeyhjZS09Myk+LTEmJnR0LnB1c2go'@; put 'MjM5LDE5MSwxODkpLEplPWhlO2NvbnRpbnVlfWhlPTY1NTM2KyhKZS01NTI5Njw8MTB8aGUtNTYzMjApfWVsc2UgSmUmJihjZS09Myk+LTEmJnR0LnB1c2goMjM5LDE5MSwxODkpO2lmKEplPW51bGwsaGU8MTI4KXtpZigoY2UtPTEpPDApYnJlYWs7dHQucHVzaChoZSl9ZWxzZSBpZihoZTwy'@; put 'MDQ4KXtpZigoY2UtPTIpPDApYnJlYWs7dHQucHVzaChoZT4+NnwxOTIsNjMmaGV8MTI4KX1lbHNlIGlmKGhlPDY1NTM2KXtpZigoY2UtPTMpPDApYnJlYWs7dHQucHVzaChoZT4+MTJ8MjI0LGhlPj42JjYzfDEyOCw2MyZoZXwxMjgpfWVsc2V7aWYoIShoZTwxMTE0MTEyKSl0aHJvdyBuZXcg'@; put 'RXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKChjZS09NCk8MClicmVhazt0dC5wdXNoKGhlPj4xOHwyNDAsaGU+PjEyJjYzfDEyOCxoZT4+NiY2M3wxMjgsNjMmaGV8MTI4KX19cmV0dXJuIHR0fWZ1bmN0aW9uIHhlKGdlKXtyZXR1cm4geS50b0J5dGVBcnJheShmdW5jdGlvbiBsdChn'@; put 'ZSl7aWYoKGdlPShnZT1nZS5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZShvdCwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7Z2UubGVuZ3RoJTQhPTA7KWdlKz0iPSI7cmV0dXJuIGdlfShnZSkpfWZ1bmN0aW9uIGplKGdlLGNlLGhlLHdlKXtmb3IodmFyIEplPTA7SmU8d2UmJiEo'@; put 'SmUraGU+PWNlLmxlbmd0aHx8SmU+PWdlLmxlbmd0aCk7KytKZSljZVtKZStoZV09Z2VbSmVdO3JldHVybiBKZX1mdW5jdGlvbiBBZShnZSxjZSl7cmV0dXJuIGdlIGluc3RhbmNlb2YgY2V8fG51bGwhPWdlJiZudWxsIT1nZS5jb25zdHJ1Y3RvciYmbnVsbCE9Z2UuY29uc3RydWN0b3IubmFt'@; put 'ZSYmZ2UuY29uc3RydWN0b3IubmFtZT09PWNlLm5hbWV9ZnVuY3Rpb24gRGUoZ2Upe3JldHVybiBnZSE9Z2V9dmFyIEZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBnZT0iMDEyMzQ1Njc4OWFiY2RlZiIsY2U9bmV3IEFycmF5KDI1NiksaGU9MDtoZTwxNjsrK2hlKWZvcih2YXIgd2U9MTYqaGUsSmU9'@; put 'MDtKZTwxNjsrK0plKWNlW3dlK0plXT1nZVtoZV0rZ2VbSmVdO3JldHVybiBjZX0oKX0sMTMxNDQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2Njc0MyksYz1oKDExMDAyKSxzPWgoMTAwNzYpLEE9aCg0NzExOSk7ZmUuZXhwb3J0cz1BfHx5LmNhbGwocyxjKX0sMTIyMDUoZmUsaixo'@; put 'KXsidXNlIHN0cmljdCI7dmFyIHk9aCg2Njc0MyksYz1oKDExMDAyKSxzPWgoMTMxNDQpO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gcyh5LGMsYXJndW1lbnRzKX19LDExMDAyKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1GdW5jdGlvbi5wcm90b3R5cGUuYXBwbHl9LDEwMDc2'@; put 'KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbH0sNzMxMjYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2Njc0MyksYz1oKDY5Njc1KSxzPWgoMTAwNzYpLEE9aCgxMzE0NCk7ZmUuZXhwb3J0cz1mdW5jdGlvbihDKXtpZihDLmxlbmd0aDwx'@; put 'fHwiZnVuY3Rpb24iIT10eXBlb2YgQ1swXSl0aHJvdyBuZXcgYygiYSBmdW5jdGlvbiBpcyByZXF1aXJlZCIpO3JldHVybiBBKHkscyxDKX19LDQ3MTE5KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QmJlJlZmxlY3QuYXBwbHl9LDM4MDc1'@; put 'KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNzA0NTMpLGM9aCgxMDQ4Nykscz1jKHkoIlN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiIpKTtmZS5leHBvcnRzPWZ1bmN0aW9uKHYsQyl7dmFyIHc9eSh2LCEhQyk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHcmJnModiwiLnByb3RvdHlw'@; put 'ZS4iKT4tMT9jKHcpOnd9fSwxMDQ4NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDk2ODk3KSxjPWgoMzA2NTUpLHM9aCg3MzEyNiksQT1oKDEyMjA1KTtmZS5leHBvcnRzPWZ1bmN0aW9uKEMpe3ZhciB3PXMoYXJndW1lbnRzKSxTPTErQy5sZW5ndGgtKGFyZ3VtZW50cy5sZW5ndGgt'@; put 'MSk7cmV0dXJuIHkodyxTPjA/UzowLCEwKX0sYz9jKGZlLmV4cG9ydHMsImFwcGx5Iix7dmFsdWU6QX0pOmZlLmV4cG9ydHMuYXBwbHk9QX0sMzY1NTYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg3MDQ1MyksYz1oKDczMTI2KSxzPWMoW3koIiVTdHJpbmcucHJvdG90eXBlLmluZGV4'@; put 'T2YlIildKTtmZS5leHBvcnRzPWZ1bmN0aW9uKHYsQyl7dmFyIHc9eSh2LCEhQyk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHcmJnModiwiLnByb3RvdHlwZS4iKT4tMT9jKFt3XSk6d319LDU2MTY4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPWgoODgz'@; put 'MTApLlRyYW5zZm9ybSxzPWgoODMxNDEpLkksQT1oKDU2Njk4KSx2PWgoMTUzNzcpO2Z1bmN0aW9uIEModyl7Yy5jYWxsKHRoaXMpLHRoaXMuaGFzaE1vZGU9InN0cmluZyI9PXR5cGVvZiB3LHRoaXMuaGFzaE1vZGU/dGhpc1t3XT10aGlzLl9maW5hbE9yRGlnZXN0OnRoaXMuZmluYWw9dGhp'@; put 'cy5fZmluYWxPckRpZ2VzdCx0aGlzLl9maW5hbCYmKHRoaXMuX19maW5hbD10aGlzLl9maW5hbCx0aGlzLl9maW5hbD1udWxsKSx0aGlzLl9kZWNvZGVyPW51bGwsdGhpcy5fZW5jb2Rpbmc9bnVsbH1BKEMsYyksQy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHcsUyxMKXt2YXIgUj12KHcs'@; put 'UykseD10aGlzLl91cGRhdGUoUik7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczooTCYmKHg9dGhpcy5fdG9TdHJpbmcoeCxMKSkseCl9LEMucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKCl7fSxDLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVy'@; put 'cm9yKCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LEMucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sQy5wcm90b3R5cGUuc2V0'@; put 'QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxDLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHcsUyxMKXt2YXIgUjt0cnl7dGhpcy5oYXNoTW9kZT90aGlzLl91cGRhdGUodyk6dGhpcy5wdXNoKHRo'@; put 'aXMuX3VwZGF0ZSh3KSl9Y2F0Y2goeCl7Uj14fWZpbmFsbHl7TChSKX19LEMucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbih3KXt2YXIgUzt0cnl7dGhpcy5wdXNoKHRoaXMuX19maW5hbCgpKX1jYXRjaChMKXtTPUx9dyhTKX0sQy5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3Q9ZnVuY3Rpb24o'@; put 'dyl7dmFyIFM9dGhpcy5fX2ZpbmFsKCl8fHkuYWxsb2MoMCk7cmV0dXJuIHcmJihTPXRoaXMuX3RvU3RyaW5nKFMsdywhMCkpLFN9LEMucHJvdG90eXBlLl90b1N0cmluZz1mdW5jdGlvbih3LFMsTCl7aWYodGhpcy5fZGVjb2Rlcnx8KHRoaXMuX2RlY29kZXI9bmV3IHMoUyksdGhpcy5fZW5j'@; put 'b2Rpbmc9UyksdGhpcy5fZW5jb2RpbmchPT1TKXRocm93IG5ldyBFcnJvcigiY2FuXHUyMDE5dCBzd2l0Y2ggZW5jb2RpbmdzIik7dmFyIFI9dGhpcy5fZGVjb2Rlci53cml0ZSh3KTtyZXR1cm4gTCYmKFIrPXRoaXMuX2RlY29kZXIuZW5kKCkpLFJ9LGZlLmV4cG9ydHM9Q30sMTU2MjIoZmUs'@; put 'aixoKXt2YXIgeT1oKDQ4Mjg3KS5CdWZmZXI7ZnVuY3Rpb24geihZKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFkpfWouaXNBcnJheT1mdW5jdGlvbiBjKFkpe3JldHVybiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkoWSk6IltvYmplY3QgQXJyYXldIj09PXoo'@; put 'WSl9LGouaXNCb29sZWFuPWZ1bmN0aW9uIHMoWSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgWX0sai5pc051bGw9ZnVuY3Rpb24gQShZKXtyZXR1cm4gbnVsbD09PVl9LGouaXNOdWxsT3JVbmRlZmluZWQ9ZnVuY3Rpb24gdihZKXtyZXR1cm4gbnVsbD09WX0sai5pc051bWJlcj1mdW5jdGlv'@; put 'biBDKFkpe3JldHVybiJudW1iZXIiPT10eXBlb2YgWX0sai5pc1N0cmluZz1mdW5jdGlvbiB3KFkpe3JldHVybiJzdHJpbmciPT10eXBlb2YgWX0sai5pc1N5bWJvbD1mdW5jdGlvbiBTKFkpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgWX0sai5pc1VuZGVmaW5lZD1mdW5jdGlvbiBMKFkpe3Jl'@; put 'dHVybiB2b2lkIDA9PT1ZfSxqLmlzUmVnRXhwPWZ1bmN0aW9uIFIoWSl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT16KFkpfSxqLmlzT2JqZWN0PWZ1bmN0aW9uIHgoWSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBZJiZudWxsIT09WX0sai5pc0RhdGU9ZnVuY3Rpb24gVShZKXtyZXR1cm4i'@; put 'W29iamVjdCBEYXRlXSI9PT16KFkpfSxqLmlzRXJyb3I9ZnVuY3Rpb24gSChZKXtyZXR1cm4iW29iamVjdCBFcnJvcl0iPT09eihZKXx8WSBpbnN0YW5jZW9mIEVycm9yfSxqLmlzRnVuY3Rpb249ZnVuY3Rpb24gVihZKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgWX0sai5pc1ByaW1pdGl2'@; put 'ZT1mdW5jdGlvbiBOKFkpe3JldHVybiBudWxsPT09WXx8ImJvb2xlYW4iPT10eXBlb2YgWXx8Im51bWJlciI9PXR5cGVvZiBZfHwic3RyaW5nIj09dHlwZW9mIFl8fCJzeW1ib2wiPT10eXBlb2YgWXx8dHlwZW9mIFk+InUifSxqLmlzQnVmZmVyPXkuaXNCdWZmZXJ9LDYxMzI0KGZlLGosaCl7'@; put 'dmFyIHk9aCg0ODI4NykuQnVmZmVyLGM9aCg4NjcyOSkscz1oKDkyODAxKTtmZS5leHBvcnRzPWZ1bmN0aW9uKFMpe3JldHVybiBuZXcgdihTKX07dmFyIEE9e3NlY3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQiLGJ5dGVMZW5n'@; put 'dGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0aDo0OH0sc2Vj'@; put 'cDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gdih3KXt0aGlzLmN1cnZlVHlwZT1BW3ddLHRoaXMuY3VydmVUeXBlfHwodGhpcy5jdXJ2ZVR5cGU9e25hbWU6d30pLHRoaXMuY3VydmU9bmV3IGMuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSksdGhpcy5rZXlzPXZv'@; put 'aWQgMH1mdW5jdGlvbiBDKHcsUyxMKXtBcnJheS5pc0FycmF5KHcpfHwodz13LnRvQXJyYXkoKSk7dmFyIFI9bmV3IHkodyk7aWYoTCYmUi5sZW5ndGg8TCl7dmFyIHg9bmV3IHkoTC1SLmxlbmd0aCk7eC5maWxsKDApLFI9eS5jb25jYXQoW3gsUl0pfXJldHVybiBTP1IudG9TdHJpbmcoUyk6'@; put 'Un1BLnAyMjQ9QS5zZWNwMjI0cjEsQS5wMjU2PUEuc2VjcDI1NnIxPUEucHJpbWUyNTZ2MSxBLnAxOTI9QS5zZWNwMTkycjE9QS5wcmltZTE5MnYxLEEucDM4ND1BLnNlY3AzODRyMSxBLnA1MjE9QS5zZWNwNTIxcjEsdi5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKHcsUyl7cmV0'@; put 'dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleSh3LFMpfSx2LnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKHcsUyxMKXtyZXR1cm4gUz1TfHwidXRmOCIseS5pc0J1ZmZlcih3KXx8KHc9bmV3IHkodyxTKSksQyh0aGlzLmN1cnZl'@; put 'LmtleUZyb21QdWJsaWModykuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxMLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSx2LnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24odyxTKXt2YXIgTD10aGlzLmtleXMuZ2V0UHVibGljKCJjb21w'@; put 'cmVzc2VkIj09PVMsITApO3JldHVybiJoeWJyaWQiPT09UyYmKExbMF09TFtMLmxlbmd0aC0xXSUyPzc6NiksQyhMLHcpfSx2LnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKHcpe3JldHVybiBDKHRoaXMua2V5cy5nZXRQcml2YXRlKCksdyl9LHYucHJvdG90eXBlLnNldFB1Ymxp'@; put 'Y0tleT1mdW5jdGlvbih3LFMpe3JldHVybiBTPVN8fCJ1dGY4Iix5LmlzQnVmZmVyKHcpfHwodz1uZXcgeSh3LFMpKSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyh3KSx0aGlzfSx2LnByb3RvdHlwZS5zZXRQcml2YXRlS2V5PWZ1bmN0aW9uKHcsUyl7Uz1TfHwidXRmOCIseS5pc0J1ZmZlcih3'@; put 'KXx8KHc9bmV3IHkodyxTKSk7dmFyIEw9bmV3IHModyk7cmV0dXJuIEw9TC50b1N0cmluZygxNiksdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShMKSx0aGlzfX0sOTI4MDEoZmUsaixoKXshZnVuY3Rpb24oeSxjKXsidXNlIHN0cmlj'@; put 'dCI7ZnVuY3Rpb24gcyhYLGYpe2lmKCFYKXRocm93IG5ldyBFcnJvcihmfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIEEoWCxmKXtYLnN1cGVyXz1mO3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1mLnByb3RvdHlwZSxYLnByb3RvdHlwZT1uZXcgYixYLnByb3RvdHlwZS5j'@; put 'b25zdHJ1Y3Rvcj1YfWZ1bmN0aW9uIHYoWCxmLGIpe2lmKHYuaXNCTihYKSlyZXR1cm4gWDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09WCYmKCgibGUiPT09Znx8ImJlIj09PWYpJiYoYj1mLGY9MTApLHRoaXMuX2lu'@; put 'aXQoWHx8MCxmfHwxMCxifHwiYmUiKSl9dmFyIEM7Im9iamVjdCI9PXR5cGVvZiB5P3kuZXhwb3J0cz12OmMuQk49dix2LkJOPXYsdi53b3JkU2l6ZT0yNjt0cnl7Qz10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6aCg3Nzk2NSkuQnVm'@; put 'ZmVyfWNhdGNoe31mdW5jdGlvbiB3KFgsZil7dmFyIGI9WC5jaGFyQ29kZUF0KGYpO3JldHVybiBiPj02NSYmYjw9NzA/Yi01NTpiPj05NyYmYjw9MTAyP2ItODc6Yi00OCYxNX1mdW5jdGlvbiBTKFgsZixiKXt2YXIgaz13KFgsYik7cmV0dXJuIGItMT49ZiYmKGt8PXcoWCxiLTEpPDw0KSxr'@; put 'fWZ1bmN0aW9uIEwoWCxmLGIsayl7Zm9yKHZhciBNPTAsQj1NYXRoLm1pbihYLmxlbmd0aCxiKSxLPWY7SzxCO0srKyl7dmFyIEc9WC5jaGFyQ29kZUF0KEspLTQ4O00qPWssTSs9Rz49NDk/Ry00OSsxMDpHPj0xNz9HLTE3KzEwOkd9cmV0dXJuIE19di5pc0JOPWZ1bmN0aW9uKGYpe3JldHVy'@; put 'biBmIGluc3RhbmNlb2Ygdnx8bnVsbCE9PWYmJiJvYmplY3QiPT10eXBlb2YgZiYmZi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PXYud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZi53b3Jkcyl9LHYubWF4PWZ1bmN0aW9uKGYsYil7cmV0dXJuIGYuY21wKGIpPjA/ZjpifSx2Lm1pbj1mdW5jdGlv'@; put 'bihmLGIpe3JldHVybiBmLmNtcChiKTwwP2Y6Yn0sdi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZixiLGspe2lmKCJudW1iZXIiPT10eXBlb2YgZilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihmLGIsayk7aWYoIm9iamVjdCI9PXR5cGVvZiBmKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZixi'@; put 'LGspOyJoZXgiPT09YiYmKGI9MTYpLHMoYj09PSgwfGIpJiZiPj0yJiZiPD0zNik7dmFyIE09MDsiLSI9PT0oZj1mLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKE0rKyx0aGlzLm5lZ2F0aXZlPTEpLE08Zi5sZW5ndGgmJigxNj09PWI/dGhpcy5fcGFyc2VIZXgoZixNLGsp'@; put 'Oih0aGlzLl9wYXJzZUJhc2UoZixiLE0pLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYixrKSkpfSx2LnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihmLGIsayl7ZjwwJiYodGhpcy5uZWdhdGl2ZT0xLGY9LWYpLGY8NjcxMDg4NjQ/KHRoaXMud29yZHM9'@; put 'WzY3MTA4ODYzJmZdLHRoaXMubGVuZ3RoPTEpOmY8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZixmLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToocyhmPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmYsZi82NzEwODg2NCY2'@; put 'NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGIsayl9LHYucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZixiLGspe2lmKHMoIm51bWJlciI9PXR5cGVvZiBmLmxlbmd0aCksZi5sZW5ndGg8PTApcmV0dXJuIHRo'@; put 'aXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgTT0wO008dGhpcy5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgQixLLEc9MDtpZigiYmUi'@; put 'PT09aylmb3IoTT1mLmxlbmd0aC0xLEI9MDtNPj0wO00tPTMpdGhpcy53b3Jkc1tCXXw9KEs9ZltNXXxmW00tMV08PDh8ZltNLTJdPDwxNik8PEcmNjcxMDg4NjMsdGhpcy53b3Jkc1tCKzFdPUs+Pj4yNi1HJjY3MTA4ODYzLChHKz0yNCk+PTI2JiYoRy09MjYsQisrKTtlbHNlIGlmKCJsZSI9'@; put 'PT1rKWZvcihNPTAsQj0wO008Zi5sZW5ndGg7TSs9Myl0aGlzLndvcmRzW0JdfD0oSz1mW01dfGZbTSsxXTw8OHxmW00rMl08PDE2KTw8RyY2NzEwODg2Myx0aGlzLndvcmRzW0IrMV09Sz4+PjI2LUcmNjcxMDg4NjMsKEcrPTI0KT49MjYmJihHLT0yNixCKyspO3JldHVybiB0aGlzLnN0cmlw'@; put 'KCl9LHYucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihmLGIsayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChmLmxlbmd0aC1iKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBNPTA7TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3ZhciBH'@; put 'LEI9MCxLPTA7aWYoImJlIj09PWspZm9yKE09Zi5sZW5ndGgtMTtNPj1iO00tPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7ZWxzZSBmb3IoTT0oZi5sZW5ndGgtYiklMj09MD9iKzE6'@; put 'YjtNPGYubGVuZ3RoO00rPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7dGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGYsYixrKXt0aGlzLndvcmRz'@; put 'PVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgTT0wLEI9MTtCPD02NzEwODg2MztCKj1iKU0rKztNLS0sQj1CL2J8MDtmb3IodmFyIEs9Zi5sZW5ndGgtayxHPUslTSxEPU1hdGgubWluKEssSy1HKStrLHA9MCxJPWs7STxEO0krPU0pcD1MKGYsSSxJK00sYiksdGhpcy5pbXVsbihCKSx0aGlz'@; put 'LndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09Ryl7dmFyIHVlPTE7Zm9yKHA9TChmLEksZi5sZW5ndGgsYiksST0wO0k8RztJKyspdWUqPWI7dGhpcy5pbXVsbih1ZSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNb'@; put 'MF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGYpe2Yud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoO2IrKylmLndvcmRzW2JdPXRoaXMud29yZHNbYl07Zi5sZW5ndGg9dGhpcy5s'@; put 'ZW5ndGgsZi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGYucmVkPXRoaXMucmVkfSx2LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiB0aGlzLmNvcHkoZiksZn0sdi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihmKXtmb3IoO3RoaXMubGVuZ3Ro'@; put 'PGY7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSx2'@; put 'LnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sdi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikr'@; put 'dGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgUj1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIw'@; put 'MDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAw'@; put 'MDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx4PVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1'@; put 'LDUsNSw1LDUsNSw1LDUsNSw1LDVdLFU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2'@; put 'OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVu'@; put 'Y3Rpb24gVihYLGYsYil7Yi5uZWdhdGl2ZT1mLm5lZ2F0aXZlXlgubmVnYXRpdmU7dmFyIGs9WC5sZW5ndGgrZi5sZW5ndGh8MDtiLmxlbmd0aD1rLGs9ay0xfDA7dmFyIE09MHxYLndvcmRzWzBdLEI9MHxmLndvcmRzWzBdLEs9TSpCLEQ9Sy82NzEwODg2NHwwO2Iud29yZHNbMF09NjcxMDg4'@; put 'NjMmSztmb3IodmFyIHA9MTtwPGs7cCsrKXtmb3IodmFyIEk9RD4+PjI2LHVlPTY3MTA4ODYzJkQsbmU9TWF0aC5taW4ocCxmLmxlbmd0aC0xKSxfZT1NYXRoLm1heCgwLHAtWC5sZW5ndGgrMSk7X2U8PW5lO19lKyspSSs9KEs9KE09MHxYLndvcmRzW3AtX2V8MF0pKihCPTB8Zi53b3Jkc1tf'@; put 'ZV0pK3VlKS82NzEwODg2NHwwLHVlPTY3MTA4ODYzJks7Yi53b3Jkc1twXT0wfHVlLEQ9MHxJfXJldHVybiAwIT09RD9iLndvcmRzW3BdPTB8RDpiLmxlbmd0aC0tLGIuc3RyaXAoKX12LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihmLGIpe3ZhciBrO2lmKGI9MHxifHwxLDE2PT09KGY9'@; put 'Znx8MTApfHwiaGV4Ij09PWYpe2s9IiI7Zm9yKHZhciBNPTAsQj0wLEs9MDtLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9dGhpcy53b3Jkc1tLXSxEPSgxNjc3NzIxNSYoRzw8TXxCKSkudG9TdHJpbmcoMTYpO0I9Rz4+PjI0LU0mMTY3NzcyMTUsKE0rPTIpPj0yNiYmKE0tPTI2LEstLSksaz0w'@; put 'IT09Qnx8SyE9PXRoaXMubGVuZ3RoLTE/Uls2LUQubGVuZ3RoXStEK2s6RCtrfWZvcigwIT09QiYmKGs9Qi50b1N0cmluZygxNikrayk7ay5sZW5ndGglYiE9PTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31pZihmPT09KDB8ZikmJmY+PTImJmY8PTM2'@; put 'KXt2YXIgcD14W2ZdLEk9VVtmXTtrPSIiO3ZhciB1ZT10aGlzLmNsb25lKCk7Zm9yKHVlLm5lZ2F0aXZlPTA7IXVlLmlzWmVybygpOyl7dmFyIG5lPXVlLm1vZG4oSSkudG9TdHJpbmcoZik7az0odWU9dWUuaWRpdm4oSSkpLmlzWmVybygpP25lK2s6UltwLW5lLmxlbmd0aF0rbmUra31mb3Io'@; put 'dGhpcy5pc1plcm8oKSYmKGs9IjAiK2spO2subGVuZ3RoJWIhPT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9cyghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSx2LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBm'@; put 'PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9mKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zis9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJnMoITEsIk51'@; put 'bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1mOmZ9LHYucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sdi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZixiKXtyZXR1cm4g'@; put 'cyh0eXBlb2YgQzwidSIpLHRoaXMudG9BcnJheUxpa2UoQyxmLGIpfSx2LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZixiKX0sdi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZixiLGspe3ZhciBNPXRoaXMuYnl0'@; put 'ZUxlbmd0aCgpLEI9a3x8TWF0aC5tYXgoMSxNKTtzKE08PUIsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxzKEI+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBELHAsSz0ibGUiPT09YixHPW5ldyBmKEIpLEk9dGhpcy5j'@; put 'bG9uZSgpO2lmKEspe2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVzaHJuKDgpLEdbcF09RDtmb3IoO3A8QjtwKyspR1twXT0wfWVsc2V7Zm9yKHA9MDtwPEItTTtwKyspR1twXT0wO2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVz'@; put 'aHJuKDgpLEdbQi1wLTFdPUR9cmV0dXJuIEd9LHYucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihmKXtyZXR1cm4gMzItTWF0aC5jbHozMihmKX06ZnVuY3Rpb24oZil7dmFyIGI9ZixrPTA7cmV0dXJuIGI+PTQwOTYmJihrKz0xMyxiPj4+PTEzKSxiPj02NCYmKGsr'@; put 'PTcsYj4+Pj03KSxiPj04JiYoays9NCxiPj4+PTQpLGI+PTImJihrKz0yLGI+Pj49MiksaytifSx2LnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZil7aWYoMD09PWYpcmV0dXJuIDI2O3ZhciBiPWYsaz0wO3JldHVybiEoODE5MSZiKSYmKGsrPTEzLGI+Pj49MTMpLCEoMTI3JmIpJiYo'@; put 'ays9NyxiPj4+PTcpLCEoMTUmYikmJihrKz00LGI+Pj49NCksISgzJmIpJiYoays9MixiPj4+PTIpLCEoMSZiKSYmaysrLGt9LHYucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYq'@; put 'KHRoaXMubGVuZ3RoLTEpK2J9LHYucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGY9MCxiPTA7Yjx0aGlzLmxlbmd0aDtiKyspe3ZhciBrPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbYl0pO2lmKGYrPWssMjYhPT1rKWJy'@; put 'ZWFrfXJldHVybiBmfSx2LnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSx2LnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oZil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oZikuaWFk'@; put 'ZG4oMSk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy50ZXN0bihmLTEpP3RoaXMubm90bihmKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5u'@; put 'ZWdhdGl2ZX0sdi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LHYucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LHYucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24o'@; put 'Zil7Zm9yKDt0aGlzLmxlbmd0aDxmLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgYj0wO2I8Zi5sZW5ndGg7YisrKXRoaXMud29yZHNbYl09dGhpcy53b3Jkc1tiXXxmLndvcmRzW2JdO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlvcj1mdW5j'@; put 'dGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXVvcihmKX0sdi5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZik6Zi5jbG9uZSgpLmlvcih0aGlzKX0sdi5wcm90'@; put 'b3R5cGUudW9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihmKTpmLmNsb25lKCkuaXVvcih0aGlzKX0sdi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZil7dmFyIGI7Yj10aGlzLmxlbmd0aD5mLmxlbmd0aD9mOnRoaXM7Zm9yKHZh'@; put 'ciBrPTA7azxiLmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT10aGlzLndvcmRzW2tdJmYud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPWIubGVuZ3RoLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdh'@; put 'dGl2ZSkpLHRoaXMuaXVhbmQoZil9LHYucHJvdG90eXBlLmFuZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoZik6Zi5jbG9uZSgpLmlhbmQodGhpcyl9LHYucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVu'@; put 'Z3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChmKTpmLmNsb25lKCkuaXVhbmQodGhpcyl9LHYucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGYpe3ZhciBiLGs7dGhpcy5sZW5ndGg+Zi5sZW5ndGg/KGI9dGhpcyxrPWYpOihiPWYsaz10aGlzKTtmb3IodmFyIE09MDtNPGsubGVuZ3Ro'@; put 'O00rKyl0aGlzLndvcmRzW01dPWIud29yZHNbTV1eay53b3Jkc1tNXTtpZih0aGlzIT09Yilmb3IoO008Yi5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Yi53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9Yi5sZW5ndGgsdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5peG9yPWZ1bmN0aW9u'@; put 'KGYpe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxmLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihmKX0sdi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihmKTpmLmNsb25lKCkuaXhvcih0aGlzKX0sdi5wcm90'@; put 'b3R5cGUudXhvcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGYpOmYuY2xvbmUoKS5pdXhvcih0aGlzKX0sdi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBiPTB8TWF0'@; put 'aC5jZWlsKGYvMjYpLGs9ZiUyNjt0aGlzLl9leHBhbmQoYiksaz4wJiZiLS07Zm9yKHZhciBNPTA7TTxiO00rKyl0aGlzLndvcmRzW01dPTY3MTA4ODYzJn50aGlzLndvcmRzW01dO2ZvcihrPjAmJih0aGlzLndvcmRzW01dPX50aGlzLndvcmRzW01dJjY3MTA4ODYzPj4yNi1rLE0rKyk7TTx0'@; put 'aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihmKX0sdi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihmLGIpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZm'@; put 'Pj0wKTt2YXIgaz1mLzI2fDAsTT1mJTI2O3JldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdPWI/dGhpcy53b3Jkc1trXXwxPDxNOnRoaXMud29yZHNba10mfigxPDxNKSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZil7dmFyIGIsayxNO2lmKDAh'@; put 'PT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLGI9dGhpcy5pc3ViKGYpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIGYubmVnYXRpdmU9MCxiPXRo'@; put 'aXMuaXN1YihmKSxmLm5lZ2F0aXZlPTEsYi5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5mLmxlbmd0aD8oaz10aGlzLE09Zik6KGs9ZixNPXRoaXMpO2Zvcih2YXIgQj0wLEs9MDtLPE0ubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPTY3MTA4ODYzJihiPSgwfGsud29yZHNbS10pKygwfE0ud29y'@; put 'ZHNbS10pK0IpLEI9Yj4+PjI2O2Zvcig7MCE9PUImJks8ay5sZW5ndGg7SysrKXRoaXMud29yZHNbS109NjcxMDg4NjMmKGI9KDB8ay53b3Jkc1tLXSkrQiksQj1iPj4+MjY7aWYodGhpcy5sZW5ndGg9ay5sZW5ndGgsMCE9PUIpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Qix0aGlzLmxlbmd0'@; put 'aCsrO2Vsc2UgaWYoayE9PXRoaXMpZm9yKDtLPGsubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPWsud29yZHNbS107cmV0dXJuIHRoaXN9LHYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihmKXt2YXIgYjtyZXR1cm4gMCE9PWYubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhmLm5lZ2F0aXZl'@; put 'PTAsYj10aGlzLnN1YihmKSxmLm5lZ2F0aXZlXj0xLGIpOjA9PT1mLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLGI9Zi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLGIpOnRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGYpOmYuY2xv'@; put 'bmUoKS5pYWRkKHRoaXMpfSx2LnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGYpe2lmKDAhPT1mLm5lZ2F0aXZlKXtmLm5lZ2F0aXZlPTA7dmFyIGI9dGhpcy5pYWRkKGYpO3JldHVybiBmLm5lZ2F0aXZlPTEsYi5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5u'@; put 'ZWdhdGl2ZT0wLHRoaXMuaWFkZChmKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgTSxCLGs9dGhpcy5jbXAoZik7aWYoMD09PWspcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO2s+MD8oTT10aGlzLEI9Zik6KE09'@; put 'ZixCPXRoaXMpO2Zvcih2YXIgSz0wLEc9MDtHPEIubGVuZ3RoO0crKylLPShiPSgwfE0ud29yZHNbR10pLSgwfEIud29yZHNbR10pK0spPj4yNix0aGlzLndvcmRzW0ddPTY3MTA4ODYzJmI7Zm9yKDswIT09SyYmRzxNLmxlbmd0aDtHKyspSz0oYj0oMHxNLndvcmRzW0ddKStLKT4+MjYsdGhp'@; put 'cy53b3Jkc1tHXT02NzEwODg2MyZiO2lmKDA9PT1LJiZHPE0ubGVuZ3RoJiZNIT09dGhpcylmb3IoO0c8TS5sZW5ndGg7RysrKXRoaXMud29yZHNbR109TS53b3Jkc1tHXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsRyksTSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZl'@; put 'PTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihmKX07dmFyIE49ZnVuY3Rpb24oZixiLGspe3ZhciBELHAsSSxNPWYud29yZHMsQj1iLndvcmRzLEs9ay53b3JkcyxHPTAsdWU9MHxNWzBdLG5lPTgxOTEmdWUsX2U9'@; put 'dWU+Pj4xMyxQZT0wfE1bMV0sb3Q9ODE5MSZQZSxsdD1QZT4+PjEzLGR0PTB8TVsyXSxSZT04MTkxJmR0LGFlPWR0Pj4+MTMseGU9MHxNWzNdLGplPTgxOTEmeGUsQWU9eGU+Pj4xMyxEZT0wfE1bNF0sRmU9ODE5MSZEZSxnZT1EZT4+PjEzLGNlPTB8TVs1XSxoZT04MTkxJmNlLHdlPWNlPj4+'@; put 'MTMsSmU9MHxNWzZdLHR0PTgxOTEmSmUsS2U9SmU+Pj4xMywkdD0wfE1bN10sUnQ9ODE5MSYkdCxMdD0kdD4+PjEzLEd0PTB8TVs4XSxndD04MTkxJkd0LFh0PUd0Pj4+MTMsTHI9MHxNWzldLGxuPTgxOTEmTHIsT249THI+Pj4xMyxRcj0wfEJbMF0sdHI9ODE5MSZRcixIbj1Rcj4+PjEzLE9v'@; put 'PTB8QlsxXSx1cj04MTkxJk9vLFpuPU9vPj4+MTMsU249MHxCWzJdLHhyPTgxOTEmU24sVHQ9U24+Pj4xMyxBcj0wfEJbM10sX249ODE5MSZBcixadD1Bcj4+PjEzLE5uPTB8Qls0XSxwdD04MTkxJk5uLHBuPU5uPj4+MTMsTWk9MHxCWzVdLEdlPTgxOTEmTWksVXQ9TWk+Pj4xMyx2cj0wfEJb'@; put 'Nl0seHQ9ODE5MSZ2cixCdD12cj4+PjEzLHpuPTB8Qls3XSxHbj04MTkxJnpuLHluPXpuPj4+MTMsdmk9MHxCWzhdLHJyPTgxOTEmdmksaHI9dmk+Pj4xMyxwbz0wfEJbOV0sdm49ODE5MSZwbyxCbj1wbz4+PjEzO2submVnYXRpdmU9Zi5uZWdhdGl2ZV5iLm5lZ2F0aXZlLGsubGVuZ3RoPTE5'@; put 'O3ZhciBqYT0oRysoRD1NYXRoLmltdWwobmUsdHIpKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKG5lLEhuKSkrTWF0aC5pbXVsKF9lLHRyKXwwKSk8PDEzKXwwO0c9KChJPU1hdGguaW11bChfZSxIbikpKyhwPj4+MTMpfDApKyhqYT4+PjI2KXwwLGphJj02NzEwODg2MyxEPU1hdGguaW11'@; put 'bChvdCx0cikscD0ocD1NYXRoLmltdWwob3QsSG4pKStNYXRoLmltdWwobHQsdHIpfDAsST1NYXRoLmltdWwobHQsSG4pO3ZhciBqbz0oRysoRD1EK01hdGguaW11bChuZSx1cil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFpuKXwwKStNYXRoLmltdWwoX2UsdXIpfDApKTw8'@; put 'MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWm4pfDApKyhwPj4+MTMpfDApKyhqbz4+PjI2KXwwLGpvJj02NzEwODg2MyxEPU1hdGguaW11bChSZSx0cikscD0ocD1NYXRoLmltdWwoUmUsSG4pKStNYXRoLmltdWwoYWUsdHIpfDAsST1NYXRoLmltdWwoYWUsSG4pLEQ9RCtNYXRoLmltdWwo'@; put 'b3QsdXIpfDAscD0ocD1wK01hdGguaW11bChvdCxabil8MCkrTWF0aC5pbXVsKGx0LHVyKXwwLEk9SStNYXRoLmltdWwobHQsWm4pfDA7dmFyIFhyPShHKyhEPUQrTWF0aC5pbXVsKG5lLHhyKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVHQpfDApK01hdGguaW11bChfZSx4'@; put 'cil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxUdCl8MCkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGplLHRyKSxwPShwPU1hdGguaW11bChqZSxIbikpK01hdGguaW11bChBZSx0cil8MCxJPU1hdGguaW11bChBZSxIbiksRD1EK01h'@; put 'dGguaW11bChSZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFpuKXwwKStNYXRoLmltdWwoYWUsdXIpfDAsST1JK01hdGguaW11bChhZSxabil8MCxEPUQrTWF0aC5pbXVsKG90LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVHQpfDApK01hdGguaW11bChsdCx4cil8MCxJPUkrTWF0aC5p'@; put 'bXVsKGx0LFR0KXwwO3ZhciBlYT0oRysoRD1EK01hdGguaW11bChuZSxfbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFp0KXwwKStNYXRoLmltdWwoX2UsX24pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWnQpfDApKyhwPj4+MTMpfDApKyhlYT4+PjI2KXww'@; put 'LGVhJj02NzEwODg2MyxEPU1hdGguaW11bChGZSx0cikscD0ocD1NYXRoLmltdWwoRmUsSG4pKStNYXRoLmltdWwoZ2UsdHIpfDAsST1NYXRoLmltdWwoZ2UsSG4pLEQ9RCtNYXRoLmltdWwoamUsdXIpfDAscD0ocD1wK01hdGguaW11bChqZSxabil8MCkrTWF0aC5pbXVsKEFlLHVyKXwwLEk9'@; put 'SStNYXRoLmltdWwoQWUsWm4pfDAsRD1EK01hdGguaW11bChSZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFR0KXwwKStNYXRoLmltdWwoYWUseHIpfDAsST1JK01hdGguaW11bChhZSxUdCl8MCxEPUQrTWF0aC5pbXVsKG90LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsWnQpfDApK01h'@; put 'dGguaW11bChsdCxfbil8MCxJPUkrTWF0aC5pbXVsKGx0LFp0KXwwO3ZhciByYT0oRysoRD1EK01hdGguaW11bChuZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHBuKXwwKStNYXRoLmltdWwoX2UscHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UscG4p'@; put 'fDApKyhwPj4+MTMpfDApKyhyYT4+PjI2KXwwLHJhJj02NzEwODg2MyxEPU1hdGguaW11bChoZSx0cikscD0ocD1NYXRoLmltdWwoaGUsSG4pKStNYXRoLmltdWwod2UsdHIpfDAsST1NYXRoLmltdWwod2UsSG4pLEQ9RCtNYXRoLmltdWwoRmUsdXIpfDAscD0ocD1wK01hdGguaW11bChGZSxa'@; put 'bil8MCkrTWF0aC5pbXVsKGdlLHVyKXwwLEk9SStNYXRoLmltdWwoZ2UsWm4pfDAsRD1EK01hdGguaW11bChqZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGplLFR0KXwwKStNYXRoLmltdWwoQWUseHIpfDAsST1JK01hdGguaW11bChBZSxUdCl8MCxEPUQrTWF0aC5pbXVsKFJlLF9uKXwwLHA9'@; put 'KHA9cCtNYXRoLmltdWwoUmUsWnQpfDApK01hdGguaW11bChhZSxfbil8MCxJPUkrTWF0aC5pbXVsKGFlLFp0KXwwLEQ9RCtNYXRoLmltdWwob3QscHQpfDAscD0ocD1wK01hdGguaW11bChvdCxwbil8MCkrTWF0aC5pbXVsKGx0LHB0KXwwLEk9SStNYXRoLmltdWwobHQscG4pfDA7dmFyIGNh'@; put 'PShHKyhEPUQrTWF0aC5pbXVsKG5lLEdlKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVXQpfDApK01hdGguaW11bChfZSxHZSl8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxVdCl8MCkrKHA+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLEQ9TWF0'@; put 'aC5pbXVsKHR0LHRyKSxwPShwPU1hdGguaW11bCh0dCxIbikpK01hdGguaW11bChLZSx0cil8MCxJPU1hdGguaW11bChLZSxIbiksRD1EK01hdGguaW11bChoZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFpuKXwwKStNYXRoLmltdWwod2UsdXIpfDAsST1JK01hdGguaW11bCh3ZSxabil8'@; put 'MCxEPUQrTWF0aC5pbXVsKEZlLHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVHQpfDApK01hdGguaW11bChnZSx4cil8MCxJPUkrTWF0aC5pbXVsKGdlLFR0KXwwLEQ9RCtNYXRoLmltdWwoamUsX24pfDAscD0ocD1wK01hdGguaW11bChqZSxadCl8MCkrTWF0aC5pbXVsKEFlLF9uKXwwLEk9'@; put 'SStNYXRoLmltdWwoQWUsWnQpfDAsRD1EK01hdGguaW11bChSZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKFJlLHBuKXwwKStNYXRoLmltdWwoYWUscHQpfDAsST1JK01hdGguaW11bChhZSxwbil8MCxEPUQrTWF0aC5pbXVsKG90LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVXQpfDApK01h'@; put 'dGguaW11bChsdCxHZSl8MCxJPUkrTWF0aC5pbXVsKGx0LFV0KXwwO3ZhciBDaT0oRysoRD1EK01hdGguaW11bChuZSx4dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJ0KXwwKStNYXRoLmltdWwoX2UseHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQnQp'@; put 'fDApKyhwPj4+MTMpfDApKyhDaT4+PjI2KXwwLENpJj02NzEwODg2MyxEPU1hdGguaW11bChSdCx0cikscD0ocD1NYXRoLmltdWwoUnQsSG4pKStNYXRoLmltdWwoTHQsdHIpfDAsST1NYXRoLmltdWwoTHQsSG4pLEQ9RCtNYXRoLmltdWwodHQsdXIpfDAscD0ocD1wK01hdGguaW11bCh0dCxa'@; put 'bil8MCkrTWF0aC5pbXVsKEtlLHVyKXwwLEk9SStNYXRoLmltdWwoS2UsWm4pfDAsRD1EK01hdGguaW11bChoZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFR0KXwwKStNYXRoLmltdWwod2UseHIpfDAsST1JK01hdGguaW11bCh3ZSxUdCl8MCxEPUQrTWF0aC5pbXVsKEZlLF9uKXwwLHA9'@; put 'KHA9cCtNYXRoLmltdWwoRmUsWnQpfDApK01hdGguaW11bChnZSxfbil8MCxJPUkrTWF0aC5pbXVsKGdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoamUscHQpfDAscD0ocD1wK01hdGguaW11bChqZSxwbil8MCkrTWF0aC5pbXVsKEFlLHB0KXwwLEk9SStNYXRoLmltdWwoQWUscG4pfDAsRD1EK01h'@; put 'dGguaW11bChSZSxHZSl8MCxwPShwPXArTWF0aC5pbXVsKFJlLFV0KXwwKStNYXRoLmltdWwoYWUsR2UpfDAsST1JK01hdGguaW11bChhZSxVdCl8MCxEPUQrTWF0aC5pbXVsKG90LHh0KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsQnQpfDApK01hdGguaW11bChsdCx4dCl8MCxJPUkrTWF0aC5p'@; put 'bXVsKGx0LEJ0KXwwO3ZhciBobz0oRysoRD1EK01hdGguaW11bChuZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHluKXwwKStNYXRoLmltdWwoX2UsR24pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UseW4pfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXww'@; put 'LGhvJj02NzEwODg2MyxEPU1hdGguaW11bChndCx0cikscD0ocD1NYXRoLmltdWwoZ3QsSG4pKStNYXRoLmltdWwoWHQsdHIpfDAsST1NYXRoLmltdWwoWHQsSG4pLEQ9RCtNYXRoLmltdWwoUnQsdXIpfDAscD0ocD1wK01hdGguaW11bChSdCxabil8MCkrTWF0aC5pbXVsKEx0LHVyKXwwLEk9'@; put 'SStNYXRoLmltdWwoTHQsWm4pfDAsRD1EK01hdGguaW11bCh0dCx4cil8MCxwPShwPXArTWF0aC5pbXVsKHR0LFR0KXwwKStNYXRoLmltdWwoS2UseHIpfDAsST1JK01hdGguaW11bChLZSxUdCl8MCxEPUQrTWF0aC5pbXVsKGhlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsWnQpfDApK01h'@; put 'dGguaW11bCh3ZSxfbil8MCxJPUkrTWF0aC5pbXVsKHdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoRmUscHQpfDAscD0ocD1wK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKGdlLHB0KXwwLEk9SStNYXRoLmltdWwoZ2UscG4pfDAsRD1EK01hdGguaW11bChqZSxHZSl8MCxwPShwPXArTWF0'@; put 'aC5pbXVsKGplLFV0KXwwKStNYXRoLmltdWwoQWUsR2UpfDAsST1JK01hdGguaW11bChBZSxVdCl8MCxEPUQrTWF0aC5pbXVsKFJlLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsQnQpfDApK01hdGguaW11bChhZSx4dCl8MCxJPUkrTWF0aC5pbXVsKGFlLEJ0KXwwLEQ9RCtNYXRoLmltdWwo'@; put 'b3QsR24pfDAscD0ocD1wK01hdGguaW11bChvdCx5bil8MCkrTWF0aC5pbXVsKGx0LEduKXwwLEk9SStNYXRoLmltdWwobHQseW4pfDA7dmFyIE1hPShHKyhEPUQrTWF0aC5pbXVsKG5lLHJyKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsaHIpfDApK01hdGguaW11bChfZSxy'@; put 'cil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxocil8MCkrKHA+Pj4xMyl8MCkrKE1hPj4+MjYpfDAsTWEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHRyKSxwPShwPU1hdGguaW11bChsbixIbikpK01hdGguaW11bChPbix0cil8MCxJPU1hdGguaW11bChPbixIbiksRD1EK01h'@; put 'dGguaW11bChndCx1cil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFpuKXwwKStNYXRoLmltdWwoWHQsdXIpfDAsST1JK01hdGguaW11bChYdCxabil8MCxEPUQrTWF0aC5pbXVsKFJ0LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVHQpfDApK01hdGguaW11bChMdCx4cil8MCxJPUkrTWF0aC5p'@; put 'bXVsKEx0LFR0KXwwLEQ9RCtNYXRoLmltdWwodHQsX24pfDAscD0ocD1wK01hdGguaW11bCh0dCxadCl8MCkrTWF0aC5pbXVsKEtlLF9uKXwwLEk9SStNYXRoLmltdWwoS2UsWnQpfDAsRD1EK01hdGguaW11bChoZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLHBuKXwwKStNYXRoLmltdWwo'@; put 'd2UscHQpfDAsST1JK01hdGguaW11bCh3ZSxwbil8MCxEPUQrTWF0aC5pbXVsKEZlLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVXQpfDApK01hdGguaW11bChnZSxHZSl8MCxJPUkrTWF0aC5pbXVsKGdlLFV0KXwwLEQ9RCtNYXRoLmltdWwoamUseHQpfDAscD0ocD1wK01hdGguaW11bChq'@; put 'ZSxCdCl8MCkrTWF0aC5pbXVsKEFlLHh0KXwwLEk9SStNYXRoLmltdWwoQWUsQnQpfDAsRD1EK01hdGguaW11bChSZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKFJlLHluKXwwKStNYXRoLmltdWwoYWUsR24pfDAsST1JK01hdGguaW11bChhZSx5bil8MCxEPUQrTWF0aC5pbXVsKG90LHJyKXww'@; put 'LHA9KHA9cCtNYXRoLmltdWwob3QsaHIpfDApK01hdGguaW11bChsdCxycil8MCxJPUkrTWF0aC5pbXVsKGx0LGhyKXwwO3ZhciBrcz0oRysoRD1EK01hdGguaW11bChuZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJuKXwwKStNYXRoLmltdWwoX2Usdm4pfDApKTw8'@; put 'MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQm4pfDApKyhwPj4+MTMpfDApKyhrcz4+PjI2KXwwLGtzJj02NzEwODg2MyxEPU1hdGguaW11bChsbix1cikscD0ocD1NYXRoLmltdWwobG4sWm4pKStNYXRoLmltdWwoT24sdXIpfDAsST1NYXRoLmltdWwoT24sWm4pLEQ9RCtNYXRoLmltdWwo'@; put 'Z3QseHIpfDAscD0ocD1wK01hdGguaW11bChndCxUdCl8MCkrTWF0aC5pbXVsKFh0LHhyKXwwLEk9SStNYXRoLmltdWwoWHQsVHQpfDAsRD1EK01hdGguaW11bChSdCxfbil8MCxwPShwPXArTWF0aC5pbXVsKFJ0LFp0KXwwKStNYXRoLmltdWwoTHQsX24pfDAsST1JK01hdGguaW11bChMdCxa'@; put 'dCl8MCxEPUQrTWF0aC5pbXVsKHR0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQscG4pfDApK01hdGguaW11bChLZSxwdCl8MCxJPUkrTWF0aC5pbXVsKEtlLHBuKXwwLEQ9RCtNYXRoLmltdWwoaGUsR2UpfDAscD0ocD1wK01hdGguaW11bChoZSxVdCl8MCkrTWF0aC5pbXVsKHdlLEdlKXww'@; put 'LEk9SStNYXRoLmltdWwod2UsVXQpfDAsRD1EK01hdGguaW11bChGZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEJ0KXwwKStNYXRoLmltdWwoZ2UseHQpfDAsST1JK01hdGguaW11bChnZSxCdCl8MCxEPUQrTWF0aC5pbXVsKGplLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoamUseW4pfDAp'@; put 'K01hdGguaW11bChBZSxHbil8MCxJPUkrTWF0aC5pbXVsKEFlLHluKXwwLEQ9RCtNYXRoLmltdWwoUmUscnIpfDAscD0ocD1wK01hdGguaW11bChSZSxocil8MCkrTWF0aC5pbXVsKGFlLHJyKXwwLEk9SStNYXRoLmltdWwoYWUsaHIpfDA7dmFyIEJpPShHKyhEPUQrTWF0aC5pbXVsKG90LHZu'@; put 'KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwob3QsQm4pfDApK01hdGguaW11bChsdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChsdCxCbil8MCkrKHA+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHhyKSxwPShwPU1hdGgu'@; put 'aW11bChsbixUdCkpK01hdGguaW11bChPbix4cil8MCxJPU1hdGguaW11bChPbixUdCksRD1EK01hdGguaW11bChndCxfbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFp0KXwwKStNYXRoLmltdWwoWHQsX24pfDAsST1JK01hdGguaW11bChYdCxadCl8MCxEPUQrTWF0aC5pbXVsKFJ0LHB0KXww'@; put 'LHA9KHA9cCtNYXRoLmltdWwoUnQscG4pfDApK01hdGguaW11bChMdCxwdCl8MCxJPUkrTWF0aC5pbXVsKEx0LHBuKXwwLEQ9RCtNYXRoLmltdWwodHQsR2UpfDAscD0ocD1wK01hdGguaW11bCh0dCxVdCl8MCkrTWF0aC5pbXVsKEtlLEdlKXwwLEk9SStNYXRoLmltdWwoS2UsVXQpfDAsRD1E'@; put 'K01hdGguaW11bChoZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLEJ0KXwwKStNYXRoLmltdWwod2UseHQpfDAsST1JK01hdGguaW11bCh3ZSxCdCl8MCxEPUQrTWF0aC5pbXVsKEZlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUseW4pfDApK01hdGguaW11bChnZSxHbil8MCxJPUkrTWF0'@; put 'aC5pbXVsKGdlLHluKXwwLEQ9RCtNYXRoLmltdWwoamUscnIpfDAscD0ocD1wK01hdGguaW11bChqZSxocil8MCkrTWF0aC5pbXVsKEFlLHJyKXwwLEk9SStNYXRoLmltdWwoQWUsaHIpfDA7dmFyIHRhPShHKyhEPUQrTWF0aC5pbXVsKFJlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRo'@; put 'LmltdWwoUmUsQm4pfDApK01hdGguaW11bChhZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChhZSxCbil8MCkrKHA+Pj4xMyl8MCkrKHRhPj4+MjYpfDAsdGEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLF9uKSxwPShwPU1hdGguaW11bChsbixadCkpK01hdGguaW11bChPbixf'@; put 'bil8MCxJPU1hdGguaW11bChPbixadCksRD1EK01hdGguaW11bChndCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LHBuKXwwKStNYXRoLmltdWwoWHQscHQpfDAsST1JK01hdGguaW11bChYdCxwbil8MCxEPUQrTWF0aC5pbXVsKFJ0LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVXQpfDAp'@; put 'K01hdGguaW11bChMdCxHZSl8MCxJPUkrTWF0aC5pbXVsKEx0LFV0KXwwLEQ9RCtNYXRoLmltdWwodHQseHQpfDAscD0ocD1wK01hdGguaW11bCh0dCxCdCl8MCkrTWF0aC5pbXVsKEtlLHh0KXwwLEk9SStNYXRoLmltdWwoS2UsQnQpfDAsRD1EK01hdGguaW11bChoZSxHbil8MCxwPShwPXAr'@; put 'TWF0aC5pbXVsKGhlLHluKXwwKStNYXRoLmltdWwod2UsR24pfDAsST1JK01hdGguaW11bCh3ZSx5bil8MCxEPUQrTWF0aC5pbXVsKEZlLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsaHIpfDApK01hdGguaW11bChnZSxycil8MCxJPUkrTWF0aC5pbXVsKGdlLGhyKXwwO3ZhciBNcj0oRyso'@; put 'RD1EK01hdGguaW11bChqZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGplLEJuKXwwKStNYXRoLmltdWwoQWUsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoQWUsQm4pfDApKyhwPj4+MTMpfDApKyhNcj4+PjI2KXwwLE1yJj02NzEwODg2MyxEPU1hdGguaW11'@; put 'bChsbixwdCkscD0ocD1NYXRoLmltdWwobG4scG4pKStNYXRoLmltdWwoT24scHQpfDAsST1NYXRoLmltdWwoT24scG4pLEQ9RCtNYXRoLmltdWwoZ3QsR2UpfDAscD0ocD1wK01hdGguaW11bChndCxVdCl8MCkrTWF0aC5pbXVsKFh0LEdlKXwwLEk9SStNYXRoLmltdWwoWHQsVXQpfDAsRD1E'@; put 'K01hdGguaW11bChSdCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKFJ0LEJ0KXwwKStNYXRoLmltdWwoTHQseHQpfDAsST1JK01hdGguaW11bChMdCxCdCl8MCxEPUQrTWF0aC5pbXVsKHR0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwodHQseW4pfDApK01hdGguaW11bChLZSxHbil8MCxJPUkrTWF0'@; put 'aC5pbXVsKEtlLHluKXwwLEQ9RCtNYXRoLmltdWwoaGUscnIpfDAscD0ocD1wK01hdGguaW11bChoZSxocil8MCkrTWF0aC5pbXVsKHdlLHJyKXwwLEk9SStNYXRoLmltdWwod2UsaHIpfDA7dmFyIEZzPShHKyhEPUQrTWF0aC5pbXVsKEZlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRo'@; put 'LmltdWwoRmUsQm4pfDApK01hdGguaW11bChnZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChnZSxCbil8MCkrKHA+Pj4xMyl8MCkrKEZzPj4+MjYpfDAsRnMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLEdlKSxwPShwPU1hdGguaW11bChsbixVdCkpK01hdGguaW11bChPbixH'@; put 'ZSl8MCxJPU1hdGguaW11bChPbixVdCksRD1EK01hdGguaW11bChndCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LEJ0KXwwKStNYXRoLmltdWwoWHQseHQpfDAsST1JK01hdGguaW11bChYdCxCdCl8MCxEPUQrTWF0aC5pbXVsKFJ0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQseW4pfDAp'@; put 'K01hdGguaW11bChMdCxHbil8MCxJPUkrTWF0aC5pbXVsKEx0LHluKXwwLEQ9RCtNYXRoLmltdWwodHQscnIpfDAscD0ocD1wK01hdGguaW11bCh0dCxocil8MCkrTWF0aC5pbXVsKEtlLHJyKXwwLEk9SStNYXRoLmltdWwoS2UsaHIpfDA7dmFyICRpPShHKyhEPUQrTWF0aC5pbXVsKGhlLHZu'@; put 'KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoaGUsQm4pfDApK01hdGguaW11bCh3ZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bCh3ZSxCbil8MCkrKHA+Pj4xMyl8MCkrKCRpPj4+MjYpfDAsJGkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHh0KSxwPShwPU1hdGgu'@; put 'aW11bChsbixCdCkpK01hdGguaW11bChPbix4dCl8MCxJPU1hdGguaW11bChPbixCdCksRD1EK01hdGguaW11bChndCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LHluKXwwKStNYXRoLmltdWwoWHQsR24pfDAsST1JK01hdGguaW11bChYdCx5bil8MCxEPUQrTWF0aC5pbXVsKFJ0LHJyKXww'@; put 'LHA9KHA9cCtNYXRoLmltdWwoUnQsaHIpfDApK01hdGguaW11bChMdCxycil8MCxJPUkrTWF0aC5pbXVsKEx0LGhyKXwwO3ZhciBfcz0oRysoRD1EK01hdGguaW11bCh0dCx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHR0LEJuKXwwKStNYXRoLmltdWwoS2Usdm4pfDApKTw8'@; put 'MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoS2UsQm4pfDApKyhwPj4+MTMpfDApKyhfcz4+PjI2KXwwLF9zJj02NzEwODg2MyxEPU1hdGguaW11bChsbixHbikscD0ocD1NYXRoLmltdWwobG4seW4pKStNYXRoLmltdWwoT24sR24pfDAsST1NYXRoLmltdWwoT24seW4pLEQ9RCtNYXRoLmltdWwo'@; put 'Z3QscnIpfDAscD0ocD1wK01hdGguaW11bChndCxocil8MCkrTWF0aC5pbXVsKFh0LHJyKXwwLEk9SStNYXRoLmltdWwoWHQsaHIpfDA7dmFyIGpzPShHKyhEPUQrTWF0aC5pbXVsKFJ0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoUnQsQm4pfDApK01hdGguaW11bChMdCx2'@; put 'bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChMdCxCbil8MCkrKHA+Pj4xMyl8MCkrKGpzPj4+MjYpfDAsanMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHJyKSxwPShwPU1hdGguaW11bChsbixocikpK01hdGguaW11bChPbixycil8MCxJPU1hdGguaW11bChPbixocik7dmFyIENs'@; put 'PShHKyhEPUQrTWF0aC5pbXVsKGd0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoZ3QsQm4pfDApK01hdGguaW11bChYdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChYdCxCbil8MCkrKHA+Pj4xMyl8MCkrKENsPj4+MjYpfDAsQ2wmPTY3MTA4ODYzO3ZhciBU'@; put 'aT0oRysoRD1NYXRoLmltdWwobG4sdm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKGxuLEJuKSkrTWF0aC5pbXVsKE9uLHZuKXwwKSk8PDEzKXwwO3JldHVybiBHPSgoST1NYXRoLmltdWwoT24sQm4pKSsocD4+PjEzKXwwKSsoVGk+Pj4yNil8MCxUaSY9NjcxMDg4NjMsS1swXT1qYSxL'@; put 'WzFdPWpvLEtbMl09WHIsS1szXT1lYSxLWzRdPXJhLEtbNV09Y2EsS1s2XT1DaSxLWzddPWhvLEtbOF09TWEsS1s5XT1rcyxLWzEwXT1CaSxLWzExXT10YSxLWzEyXT1NcixLWzEzXT1GcyxLWzE0XT0kaSxLWzE1XT1fcyxLWzE2XT1qcyxLWzE3XT1DbCxLWzE4XT1UaSwwIT09RyYmKEtbMTld'@; put 'PUcsay5sZW5ndGgrKyksa307ZnVuY3Rpb24gWShYLGYsYil7cmV0dXJuKG5ldyBGKS5tdWxwKFgsZixiKX1mdW5jdGlvbiBGKFgsZil7dGhpcy54PVgsdGhpcy55PWZ9TWF0aC5pbXVsfHwoTj1WKSx2LnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihmLGIpe3ZhciBrLE09dGhpcy5sZW5ndGgr'@; put 'Zi5sZW5ndGg7cmV0dXJuIGs9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1mLmxlbmd0aD9OKHRoaXMsZixiKTpNPDYzP1YodGhpcyxmLGIpOk08MTAyND9mdW5jdGlvbiB6KFgsZixiKXtiLm5lZ2F0aXZlPWYubmVnYXRpdmVeWC5uZWdhdGl2ZSxiLmxlbmd0aD1YLmxlbmd0aCtmLmxlbmd0aDtm'@; put 'b3IodmFyIGs9MCxNPTAsQj0wO0I8Yi5sZW5ndGgtMTtCKyspe3ZhciBLPU07TT0wO2Zvcih2YXIgRz02NzEwODg2MyZrLEQ9TWF0aC5taW4oQixmLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsQi1YLmxlbmd0aCsxKTtwPD1EO3ArKyl7dmFyIF9lPSgwfFgud29yZHNbQi1wXSkqKDB8Zi53b3Jk'@; put 'c1twXSksUGU9NjcxMDg4NjMmX2U7Rz02NzEwODg2MyYoUGU9UGUrR3wwKSxNKz0oSz0oSz1LKyhfZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixLJj02NzEwODg2M31iLndvcmRzW0JdPUcsaz1LLEs9TX1yZXR1cm4gMCE9PWs/Yi53b3Jkc1tCXT1rOmIubGVuZ3RoLS0sYi5z'@; put 'dHJpcCgpfSh0aGlzLGYsYik6WSh0aGlzLGYsYiksa30sRi5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihmKXtmb3IodmFyIGI9bmV3IEFycmF5KGYpLGs9di5wcm90b3R5cGUuX2NvdW50Qml0cyhmKS0xLE09MDtNPGY7TSsrKWJbTV09dGhpcy5yZXZCaW4oTSxrLGYpO3JldHVybiBifSxG'@; put 'LnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oZixiLGspe2lmKDA9PT1mfHxmPT09ay0xKXJldHVybiBmO2Zvcih2YXIgTT0wLEI9MDtCPGI7QisrKU18PSgxJmYpPDxiLUItMSxmPj49MTtyZXR1cm4gTX0sRi5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihmLGIsayxNLEIsSyl7Zm9yKHZh'@; put 'ciBHPTA7RzxLO0crKylNW0ddPWJbZltHXV0sQltHXT1rW2ZbR11dfSxGLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZixiLGssTSxCLEspe3RoaXMucGVybXV0ZShLLGYsYixrLE0sQik7Zm9yKHZhciBHPTE7RzxCO0c8PD0xKWZvcih2YXIgRD1HPDwxLHA9TWF0aC5jb3MoMipNYXRo'@; put 'LlBJL0QpLEk9TWF0aC5zaW4oMipNYXRoLlBJL0QpLHVlPTA7dWU8Qjt1ZSs9RClmb3IodmFyIG5lPXAsX2U9SSxQZT0wO1BlPEc7UGUrKyl7dmFyIG90PWtbdWUrUGVdLGx0PU1bdWUrUGVdLGR0PWtbdWUrUGUrR10sUmU9TVt1ZStQZStHXSxhZT1uZSpkdC1fZSpSZTtSZT1uZSpSZStfZSpk'@; put 'dCxrW3VlK1BlXT1vdCsoZHQ9YWUpLE1bdWUrUGVdPWx0K1JlLGtbdWUrUGUrR109b3QtZHQsTVt1ZStQZStHXT1sdC1SZSxQZSE9PUQmJihhZT1wKm5lLUkqX2UsX2U9cCpfZStJKm5lLG5lPWFlKX19LEYucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGYsYil7dmFyIGs9MXxNYXRo'@; put 'Lm1heChiLGYpLE09MSZrLEI9MDtmb3Ioaz1rLzJ8MDtrO2s+Pj49MSlCKys7cmV0dXJuIDE8PEIrMStNfSxGLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oZixiLGspe2lmKCEoazw9MSkpZm9yKHZhciBNPTA7TTxrLzI7TSsrKXt2YXIgQj1mW01dO2ZbTV09ZltrLU0tMV0sZltrLU0t'@; put 'MV09QixCPWJbTV0sYltNXT0tYltrLU0tMV0sYltrLU0tMV09LUJ9fSxGLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oZixiKXtmb3IodmFyIGs9MCxNPTA7TTxiLzI7TSsrKXt2YXIgQj04MTkyKk1hdGgucm91bmQoZlsyKk0rMV0vYikrTWF0aC5yb3VuZChmWzIqTV0vYikraztm'@; put 'W01dPTY3MTA4ODYzJkIsaz1CPDY3MTA4ODY0PzA6Qi82NzEwODg2NHwwfXJldHVybiBmfSxGLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGYsYixrLE0pe2Zvcih2YXIgQj0wLEs9MDtLPGI7SysrKWtbMipLXT04MTkxJihCKz0wfGZbS10pLGtbMipLKzFdPTgxOTEmKEI+Pj49MTMp'@; put 'LEI+Pj49MTM7Zm9yKEs9MipiO0s8TTsrK0spa1tLXT0wO3MoMD09PUIpLHMoISgtODE5MiZCKSl9LEYucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZil7Zm9yKHZhciBiPW5ldyBBcnJheShmKSxrPTA7azxmO2srKyliW2tdPTA7cmV0dXJuIGJ9LEYucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24o'@; put 'ZixiLGspe3ZhciBNPTIqdGhpcy5ndWVzc0xlbjEzYihmLmxlbmd0aCxiLmxlbmd0aCksQj10aGlzLm1ha2VSQlQoTSksSz10aGlzLnN0dWIoTSksRz1uZXcgQXJyYXkoTSksRD1uZXcgQXJyYXkoTSkscD1uZXcgQXJyYXkoTSksST1uZXcgQXJyYXkoTSksdWU9bmV3IEFycmF5KE0pLG5lPW5l'@; put 'dyBBcnJheShNKSxfZT1rLndvcmRzO19lLmxlbmd0aD1NLHRoaXMuY29udmVydDEzYihmLndvcmRzLGYubGVuZ3RoLEcsTSksdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsSSxNKSx0aGlzLnRyYW5zZm9ybShHLEssRCxwLE0sQiksdGhpcy50cmFuc2Zvcm0oSSxLLHVlLG5lLE0s'@; put 'Qik7Zm9yKHZhciBQZT0wO1BlPE07UGUrKyl7dmFyIG90PURbUGVdKnVlW1BlXS1wW1BlXSpuZVtQZV07cFtQZV09RFtQZV0qbmVbUGVdK3BbUGVdKnVlW1BlXSxEW1BlXT1vdH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoRCxwLE0pLHRoaXMudHJhbnNmb3JtKEQscCxfZSxLLE0sQiksdGhpcy5j'@; put 'b25qdWdhdGUoX2UsSyxNKSx0aGlzLm5vcm1hbGl6ZTEzYihfZSxNKSxrLm5lZ2F0aXZlPWYubmVnYXRpdmVeYi5uZWdhdGl2ZSxrLmxlbmd0aD1mLmxlbmd0aCtiLmxlbmd0aCxrLnN0cmlwKCl9LHYucHJvdG90eXBlLm11bD1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4g'@; put 'Yi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLHRoaXMubXVsVG8oZixiKX0sdi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4gYi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLFkodGhpcyxmLGIpfSx2'@; put 'LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZix0aGlzKX0sdi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYpLHMoZjw2NzEwODg2NCk7Zm9yKHZhciBiPTAsaz0wO2s8dGhpcy5sZW5ndGg7aysrKXt2'@; put 'YXIgTT0oMHx0aGlzLndvcmRzW2tdKSpmLEI9KDY3MTA4ODYzJk0pKyg2NzEwODg2MyZiKTtiPj49MjYsYis9TS82NzEwODg2NHwwLGIrPUI+Pj4yNix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJkJ9cmV0dXJuIDAhPT1iJiYodGhpcy53b3Jkc1trXT1iLHRoaXMubGVuZ3RoKyspLDA9PT1mJiYo'@; put 'dGhpcy5sZW5ndGg9MSx0aGlzLl9ub3JtU2lnbigpKSx0aGlzfSx2LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZil9LHYucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sdi5wcm90b3R5cGUuaXNxcj1m'@; put 'dW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sdi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGYpe3ZhciBiPWZ1bmN0aW9uIEgoWCl7Zm9yKHZhciBmPW5ldyBBcnJheShYLmJpdExlbmd0aCgpKSxiPTA7YjxmLmxlbmd0aDtiKyspe3ZhciBNPWIlMjY7ZltiXT0oWC53'@; put 'b3Jkc1tiLzI2fDBdJjE8PE0pPj4+TX1yZXR1cm4gZn0oZik7aWYoMD09PWIubGVuZ3RoKXJldHVybiBuZXcgdigxKTtmb3IodmFyIGs9dGhpcyxNPTA7TTxiLmxlbmd0aCYmMD09PWJbTV07TSsrLGs9ay5zcXIoKSk7aWYoKytNPGIubGVuZ3RoKWZvcih2YXIgQj1rLnNxcigpO008Yi5sZW5n'@; put 'dGg7TSsrLEI9Qi5zcXIoKSkwIT09YltNXSYmKGs9ay5tdWwoQikpO3JldHVybiBrfSx2LnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBCLGI9ZiUyNixrPShmLWIpLzI2LE09NjcxMDg4NjM+Pj4yNi1iPDwyNi1iO2lmKDAhPT1i'@; put 'KXt2YXIgSz0wO2ZvcihCPTA7Qjx0aGlzLmxlbmd0aDtCKyspe3ZhciBHPXRoaXMud29yZHNbQl0mTTt0aGlzLndvcmRzW0JdPSgwfHRoaXMud29yZHNbQl0pLUc8PGJ8SyxLPUc+Pj4yNi1ifUsmJih0aGlzLndvcmRzW0JdPUssdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWspe2ZvcihCPXRoaXMu'@; put 'bGVuZ3RoLTE7Qj49MDtCLS0pdGhpcy53b3Jkc1tCK2tdPXRoaXMud29yZHNbQl07Zm9yKEI9MDtCPGs7QisrKXRoaXMud29yZHNbQl09MDt0aGlzLmxlbmd0aCs9a31yZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09dGhpcy5u'@; put 'ZWdhdGl2ZSksdGhpcy5pdXNobG4oZil9LHYucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihmLGIsayl7dmFyIE07cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApLE09Yj8oYi1iJTI2KS8yNjowO3ZhciBCPWYlMjYsSz1NYXRoLm1pbigoZi1CKS8yNix0aGlzLmxlbmd0aCksRz02NzEwODg2'@; put 'M142NzEwODg2Mz4+PkI8PEIsRD1rO2lmKE0tPUssTT1NYXRoLm1heCgwLE0pLEQpe2Zvcih2YXIgcD0wO3A8SztwKyspRC53b3Jkc1twXT10aGlzLndvcmRzW3BdO0QubGVuZ3RoPUt9aWYoMCE9PUspaWYodGhpcy5sZW5ndGg+Sylmb3IodGhpcy5sZW5ndGgtPUsscD0wO3A8dGhpcy5sZW5n'@; put 'dGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1twK0tdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEk9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09SXx8cD49TSk7cC0tKXt2YXIgdWU9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09STw8'@; put 'MjYtQnx1ZT4+PkIsST11ZSZHfXJldHVybiBEJiYwIT09SSYmKEQud29yZHNbRC5sZW5ndGgrK109SSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZixiLGspe3JldHVybiBz'@; put 'KDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihmLGIsayl9LHYucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihmKX0sdi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZil9LHYucHJv'@; put 'dG90eXBlLnNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihmKX0sdi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZil9LHYucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBm'@; put 'JiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9a3x8ISh0aGlzLndvcmRzW2tdJjE8PGIpKX0sdi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0dXJu'@; put 'IHMoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAhPT1iJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0aGlzLmxlbmd0aCksMCE9PWImJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFd'@; put 'Jj02NzEwODg2M142NzEwODg2Mz4+PmI8PGIpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCkpfSx2LnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihmKX0sdi5wcm90b3R5cGUu'@; put 'aWFkZG49ZnVuY3Rpb24oZil7cmV0dXJuIHMoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MD90aGlzLmlzdWJuKC1mKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGY/KHRoaXMud29yZHNbMF09Zi0oMHx0aGlzLndvcmRz'@; put 'WzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihmKX0sdi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGYpe3RoaXMud29yZHNbMF0rPWY7Zm9yKHZhciBiPTA7Yjx0aGlzLmxl'@; put 'bmd0aCYmdGhpcy53b3Jkc1tiXT49NjcxMDg4NjQ7YisrKXRoaXMud29yZHNbYl0tPTY3MTA4ODY0LGI9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbYisxXT0xOnRoaXMud29yZHNbYisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxiKzEpLHRoaXN9LHYu'@; put 'cHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGYpe2lmKHMoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MClyZXR1cm4gdGhpcy5pYWRkbigtZik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGYpLHRoaXMubmVnYXRpdmU9'@; put 'MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWYsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2JdPDA7YisrKXRoaXMud29y'@; put 'ZHNbYl0rPTY3MTA4ODY0LHRoaXMud29yZHNbYisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oZil9LHYucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5p'@; put 'c3VibihmKX0sdi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sdi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LHYucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihmLGIsayl7dmFy'@; put 'IEI7dGhpcy5fZXhwYW5kKGYubGVuZ3RoK2spO3ZhciBLLEc9MDtmb3IoQj0wO0I8Zi5sZW5ndGg7QisrKXtLPSgwfHRoaXMud29yZHNbQitrXSkrRzt2YXIgRD0oMHxmLndvcmRzW0JdKSpiO0c9KChLLT02NzEwODg2MyZEKT4+MjYpLShELzY3MTA4ODY0fDApLHRoaXMud29yZHNbQitrXT02'@; put 'NzEwODg2MyZLfWZvcig7Qjx0aGlzLmxlbmd0aC1rO0IrKylHPShLPSgwfHRoaXMud29yZHNbQitrXSkrRyk+PjI2LHRoaXMud29yZHNbQitrXT02NzEwODg2MyZLO2lmKDA9PT1HKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKHMoLTE9PT1HKSxHPTAsQj0wO0I8dGhpcy5sZW5ndGg7QisrKUc9'@; put 'KEs9LSgwfHRoaXMud29yZHNbQl0pK0cpPj4yNix0aGlzLndvcmRzW0JdPTY3MTA4ODYzJks7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGYsYil7dmFyIGssTT10aGlzLmNsb25lKCksQj1mLEs9MHxCLndvcmRzW0Iu'@; put 'bGVuZ3RoLTFdOzAhPShrPTI2LXRoaXMuX2NvdW50Qml0cyhLKSkmJihCPUIudXNobG4oayksTS5pdXNobG4oayksSz0wfEIud29yZHNbQi5sZW5ndGgtMV0pO3ZhciBwLEQ9TS5sZW5ndGgtQi5sZW5ndGg7aWYoIm1vZCIhPT1iKXsocD1uZXcgdihudWxsKSkubGVuZ3RoPUQrMSxwLndvcmRz'@; put 'PW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBJPTA7STxwLmxlbmd0aDtJKyspcC53b3Jkc1tJXT0wfXZhciB1ZT1NLmNsb25lKCkuX2lzaGxuc3VibXVsKEIsMSxEKTswPT09dWUubmVnYXRpdmUmJihNPXVlLHAmJihwLndvcmRzW0RdPTEpKTtmb3IodmFyIG5lPUQtMTtuZT49MDtuZS0t'@; put 'KXt2YXIgX2U9NjcxMDg4NjQqKDB8TS53b3Jkc1tCLmxlbmd0aCtuZV0pKygwfE0ud29yZHNbQi5sZW5ndGgrbmUtMV0pO2ZvcihfZT1NYXRoLm1pbihfZS9LfDAsNjcxMDg4NjMpLE0uX2lzaGxuc3VibXVsKEIsX2UsbmUpOzAhPT1NLm5lZ2F0aXZlOylfZS0tLE0ubmVnYXRpdmU9MCxNLl9p'@; put 'c2hsbnN1Ym11bChCLDEsbmUpLE0uaXNaZXJvKCl8fChNLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tuZV09X2UpfXJldHVybiBwJiZwLnN0cmlwKCksTS5zdHJpcCgpLCJkaXYiIT09YiYmMCE9PWsmJk0uaXVzaHJuKGspLHtkaXY6cHx8bnVsbCxtb2Q6TX19LHYucHJvdG90eXBlLmRpdm1v'@; put 'ZD1mdW5jdGlvbihmLGIsayl7cmV0dXJuIHMoIWYuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgdigwKSxtb2Q6bmV3IHYoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZT8oSz10aGlzLm5lZygpLmRpdm1vZChmLGIpLCJtb2QiIT09YiYmKE09Sy5kaXYubmVn'@; put 'KCkpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRpdmUmJkIuaWFkZChmKSkse2RpdjpNLG1vZDpCfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1mLm5lZ2F0aXZlPyhLPXRoaXMuZGl2bW9kKGYubmVnKCksYiksIm1vZCIhPT1iJiYoTT1LLmRpdi5uZWcoKSkse2Rp'@; put 'djpNLG1vZDpLLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZmLm5lZ2F0aXZlKT8oSz10aGlzLm5lZygpLmRpdm1vZChmLm5lZygpLGIpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRpdmUmJkIuaXN1YihmKSkse2RpdjpLLmRpdixtb2Q6Qn0pOmYubGVuZ3RoPnRo'@; put 'aXMubGVuZ3RofHx0aGlzLmNtcChmKTwwP3tkaXY6bmV3IHYoMCksbW9kOnRoaXN9OjE9PT1mLmxlbmd0aD8iZGl2Ij09PWI/e2Rpdjp0aGlzLmRpdm4oZi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09Yj97ZGl2Om51bGwsbW9kOm5ldyB2KHRoaXMubW9kbihmLndvcmRzWzBdKSl9Ontk'@; put 'aXY6dGhpcy5kaXZuKGYud29yZHNbMF0pLG1vZDpuZXcgdih0aGlzLm1vZG4oZi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGYsYik7dmFyIE0sQixLfSx2LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsImRpdiIsITEpLmRpdn0sdi5wcm90b3R5cGUu'@; put 'bW9kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmRpdm1vZChmLCJtb2QiLCExKS5tb2R9LHYucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsIm1vZCIsITApLm1vZH0sdi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oZil7dmFyIGI9dGhpcy5kaXZt'@; put 'b2QoZik7aWYoYi5tb2QuaXNaZXJvKCkpcmV0dXJuIGIuZGl2O3ZhciBrPWIubW9kLmFicygpLE09Zi5hYnMoKS5pdXNocm4oMSksQj0xJmYud29yZHNbMF0sSz1rLmNtcChNKTtpZihLPDB8fDE9PT1CJiYwPT09SylyZXR1cm4gYi5kaXY7dmFyIEc9bmV3IHYoMSk7cmV0dXJuIEcubmVnYXRp'@; put 'dmU9dGhpcy5uZWdhdGl2ZV5mLm5lZ2F0aXZlLGIuZGl2LmlhZGQoRyl9LHYucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPSgxPDwyNiklZixrPTAsTT10aGlzLmxlbmd0aC0xO00+PTA7TS0tKWs9KGIqaysoMHx0aGlzLndvcmRzW01dKSklZjty'@; put 'ZXR1cm4ga30sdi5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSs2NzEwODg2NCpiO3RoaXMud29yZHNba109TS9mfDAsYj1NJWZ9cmV0dXJuIHRoaXMu'@; put 'c3RyaXAoKX0sdi5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGYpfSx2LnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUpLHMoIWYuaXNaZXJvKCkpO3ZhciBiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5uZWdh'@; put 'dGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9bmV3IHYoMCksRz1uZXcgdigxKSxEPTA7Yi5pc0V2ZW4oKSYmay5pc0V2ZW4oKTspYi5pdXNocm4oMSksay5pdXNocm4oMSksKytEO2Zvcih2YXIgcD1rLmNsb25lKCksST1iLmNsb25lKCk7'@; put 'IWIuaXNaZXJvKCk7KXtmb3IodmFyIHVlPTAsbmU9MTswPT09KGIud29yZHNbMF0mbmUpJiZ1ZTwyNjsrK3VlLG5lPDw9MSk7aWYodWU+MClmb3IoYi5pdXNocm4odWUpO3VlLS0gPjA7KShNLmlzT2RkKCl8fEIuaXNPZGQoKSkmJihNLmlhZGQocCksQi5pc3ViKEkpKSxNLml1c2hybigxKSxC'@; put 'Lml1c2hybigxKTtmb3IodmFyIF9lPTAsUGU9MTswPT09KGsud29yZHNbMF0mUGUpJiZfZTwyNjsrK19lLFBlPDw9MSk7aWYoX2U+MClmb3Ioay5pdXNocm4oX2UpO19lLS0gPjA7KShLLmlzT2RkKCl8fEcuaXNPZGQoKSkmJihLLmlhZGQocCksRy5pc3ViKEkpKSxLLml1c2hybigxKSxHLml1'@; put 'c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihLKSxCLmlzdWIoRykpOihrLmlzdWIoYiksSy5pc3ViKE0pLEcuaXN1YihCKSl9cmV0dXJue2E6SyxiOkcsZ2NkOmsuaXVzaGxuKEQpfX0sdi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUp'@; put 'LHMoIWYuaXNaZXJvKCkpO3ZhciB1ZSxiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5uZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9ay5jbG9uZSgpO2IuY21wbigxKT4wJiZrLmNtcG4oMSk+MDspe2Zvcih2YXIgRz0wLEQ9MTsw'@; put 'PT09KGIud29yZHNbMF0mRCkmJkc8MjY7KytHLEQ8PD0xKTtpZihHPjApZm9yKGIuaXVzaHJuKEcpO0ctLSA+MDspTS5pc09kZCgpJiZNLmlhZGQoSyksTS5pdXNocm4oMSk7Zm9yKHZhciBwPTAsST0xOzA9PT0oay53b3Jkc1swXSZJKSYmcDwyNjsrK3AsSTw8PTEpO2lmKHA+MClmb3Ioay5p'@; put 'dXNocm4ocCk7cC0tID4wOylCLmlzT2RkKCkmJkIuaWFkZChLKSxCLml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihCKSk6KGsuaXN1YihiKSxCLmlzdWIoTSkpfXJldHVybih1ZT0wPT09Yi5jbXBuKDEpP006QikuY21wbigwKTwwJiZ1ZS5pYWRkKGYpLHVlfSx2LnBy'@; put 'b3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZi5hYnMoKTtpZihmLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBiPXRoaXMuY2xvbmUoKSxrPWYuY2xvbmUoKTtiLm5lZ2F0aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgTT0wO2IuaXNFdmVu'@; put 'KCkmJmsuaXNFdmVuKCk7TSsrKWIuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtiLmlzRXZlbigpOyliLml1c2hybigxKTtmb3IoO2suaXNFdmVuKCk7KWsuaXVzaHJuKDEpO3ZhciBCPWIuY21wKGspO2lmKEI8MCl7dmFyIEs9YjtiPWssaz1LfWVsc2UgaWYoMD09PUJ8fDA9'@; put 'PT1rLmNtcG4oMSkpYnJlYWs7Yi5pc3ViKGspfXJldHVybiBrLml1c2hsbihNKX0sdi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5lZ2NkKGYpLmEudW1vZChmKX0sdi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSx2'@; put 'LnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LHYucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLndvcmRzWzBdJmZ9LHYucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmKTt2YXIg'@; put 'Yj1mJTI2LGs9KGYtYikvMjYsTT0xPDxiO2lmKHRoaXMubGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1NLHRoaXM7Zm9yKHZhciBCPU0sSz1rOzAhPT1CJiZLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9MHx0aGlzLndvcmRzW0tdO0I9KEcrPUIpPj4+'@; put 'MjYsdGhpcy53b3Jkc1tLXT1HJj02NzEwODg2M31yZXR1cm4gMCE9PUImJih0aGlzLndvcmRzW0tdPUIsdGhpcy5sZW5ndGgrKyksdGhpc30sdi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LHYucHJvdG90eXBl'@; put 'LmNtcG49ZnVuY3Rpb24oZil7dmFyIGssYj1mPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFiKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZiKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKWs9MTtlbHNle2ImJihmPS1mKSxzKGY8PTY3MTA4ODYzLCJOdW1i'@; put 'ZXIgaXMgdG9vIGJpZyIpO3ZhciBNPTB8dGhpcy53b3Jkc1swXTtrPU09PT1mPzA6TTxmPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LWs6a30sdi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGYpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4tMTtp'@; put 'ZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGI9dGhpcy51Y21wKGYpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1iOmJ9LHYucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZil7aWYodGhpcy5sZW5ndGg+Zi5sZW5ndGgpcmV0dXJuIDE7aWYodGhp'@; put 'cy5sZW5ndGg8Zi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0wfHRoaXMud29yZHNba10sQj0wfGYud29yZHNba107aWYoTSE9PUIpe008Qj9iPS0xOk0+QiYmKGI9MSk7YnJlYWt9fXJldHVybiBifSx2LnByb3RvdHlwZS5ndG49'@; put 'ZnVuY3Rpb24oZil7cmV0dXJuIDE9PT10aGlzLmNtcG4oZil9LHYucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGYpe3JldHVybiAxPT09dGhpcy5jbXAoZil9LHYucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY21wbihmKT49MH0sdi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9u'@; put 'KGYpe3JldHVybiB0aGlzLmNtcChmKT49MH0sdi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGYpe3JldHVybi0xPT09dGhpcy5jbXBuKGYpfSx2LnByb3RvdHlwZS5sdD1mdW5jdGlvbihmKXtyZXR1cm4tMT09PXRoaXMuY21wKGYpfSx2LnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGYpe3JldHVy'@; put 'biB0aGlzLmNtcG4oZik8PTB9LHYucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbXAoZik8PTB9LHYucHJvdG90eXBlLmVxbj1mdW5jdGlvbihmKXtyZXR1cm4gMD09PXRoaXMuY21wbihmKX0sdi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZil7cmV0dXJuIDA9PT10aGlz'@; put 'LmNtcChmKX0sdi5yZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBrZShmKX0sdi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IikscygwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtz'@; put 'IG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxmLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMu'@; put 'cmVkLmNvbnZlcnRGcm9tKHRoaXMpfSx2LnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucmVkPWYsdGhpc30sdi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBj'@; put 'b250ZXh0IiksdGhpcy5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9u'@; put 'KGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1i'@; put 'ZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rp'@; put 'b24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1i'@; put 'ZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxmKSx0aGlzLnJlZC5tdWwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMs'@; put 'ZiksdGhpcy5yZWQuaW11bCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sdi5wcm90b3R5'@; put 'cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LHYucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0'@; put 'aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSx2LnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRo'@; put 'IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sdi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0'@; put 'aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LHYucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCYmIWYucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGYpfTt2YXIgVz17azI1NjpudWxs'@; put 'LHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHEoWCxmKXt0aGlzLm5hbWU9WCx0aGlzLnA9bmV3IHYoZiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IHYoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMu'@; put 'X3RtcCgpfWZ1bmN0aW9uIHJlKCl7cS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIG1lKCl7cS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZm'@; put 'ZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIENlKCl7cS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7cS5jYWxsKHRoaXMs'@; put 'IjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGtlKFgpe2lmKCJzdHJpbmciPT10eXBlb2YgWCl7dmFyIGY9di5fcHJpbWUoWCk7dGhpcy5tPWYucCx0aGlzLnByaW1lPWZ9ZWxzZSBz'@; put 'KFguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09WCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gcWUoWCl7a2UuY2FsbCh0aGlzLFgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10'@; put 'aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IHYoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0p'@; put 'LHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9cS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiBmLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZn0scS5w'@; put 'cm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihmKXt2YXIgayxiPWY7ZG97dGhpcy5zcGxpdChiLHRoaXMudG1wKSxrPShiPShiPXRoaXMuaW11bEsoYikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShrPnRoaXMubik7dmFyIE09azx0aGlzLm4/LTE6Yi51Y21wKHRoaXMucCk7'@; put 'cmV0dXJuIDA9PT1NPyhiLndvcmRzWzBdPTAsYi5sZW5ndGg9MSk6TT4wP2IuaXN1Yih0aGlzLnApOnZvaWQgMCE9PWIuc3RyaXA/Yi5zdHJpcCgpOmIuX3N0cmlwKCksYn0scS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZixiKXtmLml1c2hybih0aGlzLm4sMCxiKX0scS5wcm90b3R5cGUu'@; put 'aW11bEs9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaW11bCh0aGlzLmspfSxBKHJlLHEpLHJlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihmLGIpe2Zvcih2YXIgaz00MTk0MzAzLE09TWF0aC5taW4oZi5sZW5ndGgsOSksQj0wO0I8TTtCKyspYi53b3Jkc1tCXT1mLndvcmRzW0JdO2lmKGIubGVu'@; put 'Z3RoPU0sZi5sZW5ndGg8PTkpcmV0dXJuIGYud29yZHNbMF09MCx2b2lkKGYubGVuZ3RoPTEpO3ZhciBLPWYud29yZHNbOV07Zm9yKGIud29yZHNbYi5sZW5ndGgrK109SyZrLEI9MTA7QjxmLmxlbmd0aDtCKyspe3ZhciBHPTB8Zi53b3Jkc1tCXTtmLndvcmRzW0ItMTBdPShHJmspPDw0fEs+'@; put 'Pj4yMixLPUd9Zi53b3Jkc1tCLTEwXT1LPj4+PTIyLGYubGVuZ3RoLT0wPT09SyYmZi5sZW5ndGg+MTA/MTA6OX0scmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Yud29yZHNbZi5sZW5ndGhdPTAsZi53b3Jkc1tmLmxlbmd0aCsxXT0wLGYubGVuZ3RoKz0yO2Zvcih2YXIgYj0wLGs9'@; put 'MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MHxmLndvcmRzW2tdO2Yud29yZHNba109NjcxMDg4NjMmKGIrPTk3NypNKSxiPTY0Kk0rKGIvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1mLndvcmRzW2YubGVuZ3RoLTFdJiYoZi5sZW5ndGgtLSwwPT09Zi53b3Jkc1tmLmxlbmd0aC0xXSYmZi5sZW5n'@; put 'dGgtLSksZn0sQShtZSxxKSxBKENlLHEpLEEoSWUscSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Zvcih2YXIgYj0wLGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MTkqKDB8Zi53b3Jkc1trXSkrYixCPTY3MTA4ODYzJk07TT4+Pj0yNixmLndvcmRzW2tdPUIsYj1NfXJldHVy'@; put 'biAwIT09YiYmKGYud29yZHNbZi5sZW5ndGgrK109YiksZn0sdi5fcHJpbWU9ZnVuY3Rpb24oZil7aWYoV1tmXSlyZXR1cm4gV1tmXTt2YXIgYjtpZigiazI1NiI9PT1mKWI9bmV3IHJlO2Vsc2UgaWYoInAyMjQiPT09ZiliPW5ldyBtZTtlbHNlIGlmKCJwMTkyIj09PWYpYj1uZXcgQ2U7ZWxz'@; put 'ZXtpZigicDI1NTE5IiE9PWYpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrZik7Yj1uZXcgSWV9cmV0dXJuIFdbZl09YixifSxrZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZil7cygwPT09Zi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxz'@; put 'KGYucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGtlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihmLGIpe3MoMD09PShmLm5lZ2F0aXZlfGIubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHMoZi5yZWQmJmYucmVkPT09Yi5yZWQs'@; put 'InJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sa2UucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGYpLl9mb3JjZVJlZCh0aGlzKTpmLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlw'@; put 'ZS5uZWc9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaXNaZXJvKCk/Zi5jbG9uZSgpOnRoaXMubS5zdWIoZikuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0w'@; put 'JiZrLmlzdWIodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sa2UucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZixiKXt0aGlzLl92ZXJpZnkyKGYsYik7dmFyIGs9Zi5pYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrfSxrZS5wcm90b3R5cGUuc3ViPWZ1'@; put 'bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuc3ViKGIpO3JldHVybiBrLmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuaXN1Yihi'@; put 'KTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGt9LGtlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShmKSx0aGlzLmltb2QoZi51c2hsbihiKSl9LGtlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMuX3Zl'@; put 'cmlmeTIoZixiKSx0aGlzLmltb2QoZi5pbXVsKGIpKX0sa2UucHJvdG90eXBlLm11bD1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLl92ZXJpZnkyKGYsYiksdGhpcy5pbW9kKGYubXVsKGIpKX0sa2UucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW11bChmLGYuY2xv'@; put 'bmUoKSl9LGtlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubXVsKGYsZil9LGtlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGYpe2lmKGYuaXNaZXJvKCkpcmV0dXJuIGYuY2xvbmUoKTt2YXIgYj10aGlzLm0uYW5kbG4oMyk7aWYocyhiJTI9PTEpLDM9PT1iKXt2YXIg'@; put 'az10aGlzLm0uYWRkKG5ldyB2KDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGYsayl9Zm9yKHZhciBNPXRoaXMubS5zdWJuKDEpLEI9MDshTS5pc1plcm8oKSYmMD09PU0uYW5kbG4oMSk7KUIrKyxNLml1c2hybigxKTtzKCFNLmlzWmVybygpKTt2YXIgSz1uZXcgdigxKS50b1JlZCh0'@; put 'aGlzKSxHPUsucmVkTmVnKCksRD10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IHYoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLEQpLmNtcChHKTspcC5yZWRJQWRkKEcpO2Zvcih2YXIgST10aGlzLnBvdyhwLE0pLHVlPXRo'@; put 'aXMucG93KGYsTS5hZGRuKDEpLml1c2hybigxKSksbmU9dGhpcy5wb3coZixNKSxfZT1COzAhPT1uZS5jbXAoSyk7KXtmb3IodmFyIFBlPW5lLG90PTA7MCE9PVBlLmNtcChLKTtvdCsrKVBlPVBlLnJlZFNxcigpO3Mob3Q8X2UpO3ZhciBsdD10aGlzLnBvdyhJLG5ldyB2KDEpLml1c2hsbihf'@; put 'ZS1vdC0xKSk7dWU9dWUucmVkTXVsKGx0KSxJPWx0LnJlZFNxcigpLG5lPW5lLnJlZE11bChJKSxfZT1vdH1yZXR1cm4gdWV9LGtlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGYpe3ZhciBiPWYuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1iLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAsdGhp'@; put 'cy5pbW9kKGIpLnJlZE5lZygpKTp0aGlzLmltb2QoYil9LGtlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZixiKXtpZihiLmlzWmVybygpKXJldHVybiBuZXcgdigxKS50b1JlZCh0aGlzKTtpZigwPT09Yi5jbXBuKDEpKXJldHVybiBmLmNsb25lKCk7dmFyIE09bmV3IEFycmF5KDE2KTtNWzBd'@; put 'PW5ldyB2KDEpLnRvUmVkKHRoaXMpLE1bMV09Zjtmb3IodmFyIEI9MjtCPE0ubGVuZ3RoO0IrKylNW0JdPXRoaXMubXVsKE1bQi0xXSxmKTt2YXIgSz1NWzBdLEc9MCxEPTAscD1iLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09cCYmKHA9MjYpLEI9Yi5sZW5ndGgtMTtCPj0wO0ItLSl7Zm9yKHZh'@; put 'ciBJPWIud29yZHNbQl0sdWU9cC0xO3VlPj0wO3VlLS0pe3ZhciBuZT1JPj51ZSYxO0shPT1NWzBdJiYoSz10aGlzLnNxcihLKSksMCE9PW5lfHwwIT09Rz8oRzw8PTEsR3w9bmUsKDQ9PT0rK0R8fDA9PT1CJiYwPT09dWUpJiYoSz10aGlzLm11bChLLE1bR10pLEQ9MCxHPTApKTpEPTB9cD0y'@; put 'Nn1yZXR1cm4gS30sa2UucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihmKXt2YXIgYj1mLnVtb2QodGhpcy5tKTtyZXR1cm4gYj09PWY/Yi5jbG9uZSgpOmJ9LGtlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihmKXt2YXIgYj1mLmNsb25lKCk7cmV0dXJuIGIucmVkPW51bGws'@; put 'Yn0sdi5tb250PWZ1bmN0aW9uKGYpe3JldHVybiBuZXcgcWUoZil9LEEocWUsa2UpLHFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLnVzaGxuKHRoaXMuc2hpZnQpKX0scWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGYpe3ZhciBi'@; put 'PXRoaXMuaW1vZChmLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gYi5yZWQ9bnVsbCxifSxxZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihmLGIpe2lmKGYuaXNaZXJvKCl8fGIuaXNaZXJvKCkpcmV0dXJuIGYud29yZHNbMF09MCxmLmxlbmd0aD0xLGY7dmFyIGs9Zi5pbXVsKGIpLE09ay5tYXNr'@; put 'bih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksQj1rLmlzdWIoTSkuaXVzaHJuKHRoaXMuc2hpZnQpLEs9QjtyZXR1cm4gQi5jbXAodGhpcy5tKT49MD9LPUIuaXN1Yih0aGlzLm0pOkIuY21wbigwKTwwJiYoSz1CLmlhZGQodGhpcy5t'@; put 'KSksSy5fZm9yY2VSZWQodGhpcyl9LHFlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZixiKXtpZihmLmlzWmVybygpfHxiLmlzWmVybygpKXJldHVybiBuZXcgdigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGs9Zi5tdWwoYiksTT1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmlt'@; put 'YXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxCPWsuaXN1YihNKS5pdXNocm4odGhpcy5zaGlmdCksSz1CO3JldHVybiBCLmNtcCh0aGlzLm0pPj0wP0s9Qi5pc3ViKHRoaXMubSk6Qi5jbXBuKDApPDAmJihLPUIuaWFkZCh0aGlzLm0pKSxLLl9mb3JjZVJlZCh0aGlzKX0scWUucHJvdG90'@; put 'eXBlLmludm09ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oZmU9aC5ubWQoZmUpLHRoaXMpfSw0NzEwOChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDU2Njk4KSxjPWgoODgyNzYpLHM9aCg2'@; put 'NjAxMSksQT1oKDYyODAyKSx2PWgoNTYxNjgpO2Z1bmN0aW9uIEModyl7di5jYWxsKHRoaXMsImRpZ2VzdCIpLHRoaXMuX2hhc2g9d315KEMsdiksQy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih3KXt0aGlzLl9oYXNoLnVwZGF0ZSh3KX0sQy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9LGZlLmV4cG9ydHM9ZnVuY3Rpb24oUyl7cmV0dXJuIm1kNSI9PT0oUz1TLnRvTG93ZXJDYXNlKCkpP25ldyBjOiJybWQxNjAiPT09U3x8InJpcGVtZDE2MCI9PT1TP25ldyBzOm5ldyBDKEEoUykpfX0sMjAzMjAoZmUsaixoKXt2YXIgeT1o'@; put 'KDg4Mjc2KTtmZS5leHBvcnRzPWZ1bmN0aW9uKGMpe3JldHVybihuZXcgeSkudXBkYXRlKGMpLmRpZ2VzdCgpfX0sODM1MDcoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg1NjY5OCksYz1oKDQxODAwKSxzPWgoNTYxNjgpLEE9aCg5Mjg2MSkuQnVmZmVyLHY9aCgyMDMyMCksQz1oKDY2'@; put 'MDExKSx3PWgoNjI4MDIpLFM9QS5hbGxvYygxMjgpO2Z1bmN0aW9uIEwoUix4KXtzLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiB4JiYoeD1BLmZyb20oeCkpO3ZhciBVPSJzaGE1MTIiPT09Unx8InNoYTM4NCI9PT1SPzEyODo2NDt0aGlzLl9hbGc9Uix0aGlzLl9rZXk9'@; put 'eCx4Lmxlbmd0aD5VP3g9KCJybWQxNjAiPT09Uj9uZXcgQzp3KFIpKS51cGRhdGUoeCkuZGlnZXN0KCk6eC5sZW5ndGg8VSYmKHg9QS5jb25jYXQoW3gsU10sVSkpO2Zvcih2YXIgVj10aGlzLl9pcGFkPUEuYWxsb2NVbnNhZmUoVSksTj10aGlzLl9vcGFkPUEuYWxsb2NVbnNhZmUoVSksej0w'@; put 'O3o8VTt6KyspVlt6XT01NF54W3pdLE5bel09OTJeeFt6XTt0aGlzLl9oYXNoPSJybWQxNjAiPT09Uj9uZXcgQzp3KFIpLHRoaXMuX2hhc2gudXBkYXRlKFYpfXkoTCxzKSxMLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFIpe3RoaXMuX2hhc2gudXBkYXRlKFIpfSxMLnByb3RvdHlwZS5f'@; put 'ZmluYWw9ZnVuY3Rpb24oKXt2YXIgUj10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybigicm1kMTYwIj09PXRoaXMuX2FsZz9uZXcgQzp3KHRoaXMuX2FsZykpLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoUikuZGlnZXN0KCl9LGZlLmV4cG9ydHM9ZnVuY3Rpb24oeCxVKXtyZXR1cm4icm1k'@; put 'MTYwIj09PSh4PXgudG9Mb3dlckNhc2UoKSl8fCJyaXBlbWQxNjAiPT09eD9uZXcgTCgicm1kMTYwIixVKToibWQ1Ij09PXg/bmV3IGModixVKTpuZXcgTCh4LFUpfX0sNDE4MDAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg1NjY5OCksYz1oKDkyODYxKS5CdWZmZXIscz1oKDU2MTY4'@; put 'KSxBPWMuYWxsb2MoMTI4KSx2PTY0O2Z1bmN0aW9uIEModyxTKXtzLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBTJiYoUz1jLmZyb20oUykpLHRoaXMuX2FsZz13LHRoaXMuX2tleT1TLFMubGVuZ3RoPnY/Uz13KFMpOlMubGVuZ3RoPHYmJihTPWMuY29uY2F0KFtTLEFd'@; put 'LHYpKTtmb3IodmFyIEw9dGhpcy5faXBhZD1jLmFsbG9jVW5zYWZlKHYpLFI9dGhpcy5fb3BhZD1jLmFsbG9jVW5zYWZlKHYpLHg9MDt4PHY7eCsrKUxbeF09NTReU1t4XSxSW3hdPTkyXlNbeF07dGhpcy5faGFzaD1bTF19eShDLHMpLEMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odyl7'@; put 'dGhpcy5faGFzaC5wdXNoKHcpfSxDLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgdz10aGlzLl9hbGcoYy5jb25jYXQodGhpcy5faGFzaCkpO3JldHVybiB0aGlzLl9hbGcoYy5jb25jYXQoW3RoaXMuX29wYWQsd10pKX0sZmUuZXhwb3J0cz1DfSw5MTU2NShmZSxqLGgpeyJ1c2Ug'@; put 'c3RyaWN0IjtqLnJhbmRvbUJ5dGVzPWoucm5nPWoucHNldWRvUmFuZG9tQnl0ZXM9ai5wcm5nPWgoNTMyMDkpLGouY3JlYXRlSGFzaD1qLkhhc2g9aCg0NzEwOCksai5jcmVhdGVIbWFjPWouSG1hYz1oKDgzNTA3KTt2YXIgeT1oKDU1NzE1KSxjPU9iamVjdC5rZXlzKHkpLHM9WyJzaGExIiwi'@; put 'c2hhMjI0Iiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEyIiwibWQ1Iiwicm1kMTYwIl0uY29uY2F0KGMpO2ouZ2V0SGFzaGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHN9O3ZhciBBPWgoNzgzOTYpO2oucGJrZGYyPUEucGJrZGYyLGoucGJrZGYyU3luYz1BLnBia2RmMlN5bmM7dmFyIHY9aCgzMDEy'@; put 'NSk7ai5DaXBoZXI9di5DaXBoZXIsai5jcmVhdGVDaXBoZXI9di5jcmVhdGVDaXBoZXIsai5DaXBoZXJpdj12LkNpcGhlcml2LGouY3JlYXRlQ2lwaGVyaXY9di5jcmVhdGVDaXBoZXJpdixqLkRlY2lwaGVyPXYuRGVjaXBoZXIsai5jcmVhdGVEZWNpcGhlcj12LmNyZWF0ZURlY2lwaGVyLGou'@; put 'RGVjaXBoZXJpdj12LkRlY2lwaGVyaXYsai5jcmVhdGVEZWNpcGhlcml2PXYuY3JlYXRlRGVjaXBoZXJpdixqLmdldENpcGhlcnM9di5nZXRDaXBoZXJzLGoubGlzdENpcGhlcnM9di5saXN0Q2lwaGVyczt2YXIgQz1oKDE1MzgwKTtqLkRpZmZpZUhlbGxtYW5Hcm91cD1DLkRpZmZpZUhlbGxt'@; put 'YW5Hcm91cCxqLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD1DLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCxqLmdldERpZmZpZUhlbGxtYW49Qy5nZXREaWZmaWVIZWxsbWFuLGouY3JlYXRlRGlmZmllSGVsbG1hbj1DLmNyZWF0ZURpZmZpZUhlbGxtYW4sai5EaWZmaWVIZWxsbWFuPUMuRGlm'@; put 'ZmllSGVsbG1hbjt2YXIgdz1oKDIwKTtqLmNyZWF0ZVNpZ249dy5jcmVhdGVTaWduLGouU2lnbj13LlNpZ24sai5jcmVhdGVWZXJpZnk9dy5jcmVhdGVWZXJpZnksai5WZXJpZnk9dy5WZXJpZnksai5jcmVhdGVFQ0RIPWgoNjEzMjQpO3ZhciBTPWgoOTcxNjgpO2oucHVibGljRW5jcnlwdD1T'@; put 'LnB1YmxpY0VuY3J5cHQsai5wcml2YXRlRW5jcnlwdD1TLnByaXZhdGVFbmNyeXB0LGoucHVibGljRGVjcnlwdD1TLnB1YmxpY0RlY3J5cHQsai5wcml2YXRlRGVjcnlwdD1TLnByaXZhdGVEZWNyeXB0O3ZhciBMPWgoNzY5ODMpO2oucmFuZG9tRmlsbD1MLnJhbmRvbUZpbGwsai5yYW5kb21G'@; put 'aWxsU3luYz1MLnJhbmRvbUZpbGxTeW5jLGouY3JlYXRlQ3JlZGVudGlhbHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInNvcnJ5LCBjcmVhdGVDcmVkZW50aWFscyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0XG53ZSBhY2NlcHQgcHVsbCByZXF1ZXN0c1xuaHR0cHM6Ly9naXRodWIuY29t'@; put 'L2Jyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnkiKX0sai5jb25zdGFudHM9e0RIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUU6MixESF9DSEVDS19QX05PVF9QUklNRToxLERIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1I6NCxESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SOjgsTlBOX0VOQUJM'@; put 'RUQ6MSxBTFBOX0VOQUJMRUQ6MSxSU0FfUEtDUzFfUEFERElORzoxLFJTQV9TU0xWMjNfUEFERElORzoyLFJTQV9OT19QQURESU5HOjMsUlNBX1BLQ1MxX09BRVBfUEFERElORzo0LFJTQV9YOTMxX1BBRERJTkc6NSxSU0FfUEtDUzFfUFNTX1BBRERJTkc6NixQT0lOVF9DT05WRVJTSU9OX0NP'@; put 'TVBSRVNTRUQ6MixQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRDo0LFBPSU5UX0NPTlZFUlNJT05fSFlCUklEOjZ9fSwzMDA0MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDMwNjU1KSxjPWgoNTgwNjgpLHM9aCg2OTY3NSksQT1oKDc1Nzk1KTtmZS5leHBvcnRzPWZ1bmN0aW9u'@; put 'KEMsdyxTKXtpZighQ3x8Im9iamVjdCIhPXR5cGVvZiBDJiYiZnVuY3Rpb24iIT10eXBlb2YgQyl0aHJvdyBuZXcgcygiYG9iamAgbXVzdCBiZSBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbmAiKTtpZigic3RyaW5nIiE9dHlwZW9mIHcmJiJzeW1ib2wiIT10eXBlb2Ygdyl0aHJvdyBuZXcgcygi'@; put 'YHByb3BlcnR5YCBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgc3ltYm9sYCIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MyYmImJvb2xlYW4iIT10eXBlb2YgYXJndW1lbnRzWzNdJiZudWxsIT09YXJndW1lbnRzWzNdKXRocm93IG5ldyBzKCJgbm9uRW51bWVyYWJsZWAsIGlmIHByb3ZpZGVkLCBtdXN0'@; put 'IGJlIGEgYm9vbGVhbiBvciBudWxsIik7aWYoYXJndW1lbnRzLmxlbmd0aD40JiYiYm9vbGVhbiIhPXR5cGVvZiBhcmd1bWVudHNbNF0mJm51bGwhPT1hcmd1bWVudHNbNF0pdGhyb3cgbmV3IHMoImBub25Xcml0YWJsZWAsIGlmIHByb3ZpZGVkLCBtdXN0IGJlIGEgYm9vbGVhbiBvciBudWxs'@; put 'Iik7aWYoYXJndW1lbnRzLmxlbmd0aD41JiYiYm9vbGVhbiIhPXR5cGVvZiBhcmd1bWVudHNbNV0mJm51bGwhPT1hcmd1bWVudHNbNV0pdGhyb3cgbmV3IHMoImBub25Db25maWd1cmFibGVgLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIGJvb2xlYW4gb3IgbnVsbCIpO2lmKGFyZ3VtZW50cy5s'@; put 'ZW5ndGg+NiYmImJvb2xlYW4iIT10eXBlb2YgYXJndW1lbnRzWzZdKXRocm93IG5ldyBzKCJgbG9vc2VgLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIGJvb2xlYW4iKTt2YXIgTD1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOm51bGwsUj1hcmd1bWVudHMubGVuZ3RoPjQ/YXJndW1l'@; put 'bnRzWzRdOm51bGwseD1hcmd1bWVudHMubGVuZ3RoPjU/YXJndW1lbnRzWzVdOm51bGwsVT1hcmd1bWVudHMubGVuZ3RoPjYmJmFyZ3VtZW50c1s2XSxIPSEhQSYmQShDLHcpO2lmKHkpeShDLHcse2NvbmZpZ3VyYWJsZTpudWxsPT09eCYmSD9ILmNvbmZpZ3VyYWJsZToheCxlbnVtZXJhYmxl'@; put 'Om51bGw9PT1MJiZIP0guZW51bWVyYWJsZTohTCx2YWx1ZTpTLHdyaXRhYmxlOm51bGw9PT1SJiZIP0gud3JpdGFibGU6IVJ9KTtlbHNle2lmKCFVJiYoTHx8Unx8eCkpdGhyb3cgbmV3IGMoIlRoaXMgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBkZWZpbmluZyBhIHByb3BlcnR5IGFz'@; put 'IG5vbi1jb25maWd1cmFibGUsIG5vbi13cml0YWJsZSwgb3Igbm9uLWVudW1lcmFibGUuIik7Q1t3XT1TfX19LDM4NDUyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMTE4OSksYz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbCgiZm9vIiks'@; put 'cz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEE9QXJyYXkucHJvdG90eXBlLmNvbmNhdCx2PWgoMzAwNDEpLHc9aCgzMDU5MikoKSxTPWZ1bmN0aW9uKFIseCxVLEgpe2lmKHggaW4gUilpZighMD09PUgpe2lmKFJbeF09PT1VKXJldHVybn1lbHNlIGlmKCFmdW5jdGlvbihSKXtyZXR1cm4i'@; put 'ZnVuY3Rpb24iPT10eXBlb2YgUiYmIltvYmplY3QgRnVuY3Rpb25dIj09PXMuY2FsbChSKX0oSCl8fCFIKCkpcmV0dXJuO3c/dihSLHgsVSwhMCk6dihSLHgsVSl9LEw9ZnVuY3Rpb24oUix4KXt2YXIgVT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnt9LEg9eSh4KTtjJiYoSD1B'@; put 'LmNhbGwoSCxPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHgpKSk7Zm9yKHZhciBWPTA7VjxILmxlbmd0aDtWKz0xKVMoUixIW1ZdLHhbSFtWXV0sVVtIW1ZdXSl9O0wuc3VwcG9ydHNEZXNjcmlwdG9ycz0hIXcsZmUuZXhwb3J0cz1MfSwyOTU2MChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtq'@; put 'LnV0aWxzPWgoODc2MjYpLGouQ2lwaGVyPWgoODI4MDgpLGouREVTPWgoODIyMTEpLGouQ0JDPWgoMzM4OSksai5FREU9aCg2NTI3OSl9LDMzODkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0MzM0OSksYz1oKDU2Njk4KSxzPXt9O2Z1bmN0aW9uIEEoQyl7eS5lcXVhbChDLmxlbmd0'@; put 'aCw4LCJJbnZhbGlkIElWIGxlbmd0aCIpLHRoaXMuaXY9bmV3IEFycmF5KDgpO2Zvcih2YXIgdz0wO3c8dGhpcy5pdi5sZW5ndGg7dysrKXRoaXMuaXZbd109Q1t3XX1qLmluc3RhbnRpYXRlPWZ1bmN0aW9uIHYoQyl7ZnVuY3Rpb24gdyh4KXtDLmNhbGwodGhpcyx4KSx0aGlzLl9jYmNJbml0'@; put 'KCl9Yyh3LEMpO2Zvcih2YXIgUz1PYmplY3Qua2V5cyhzKSxMPTA7TDxTLmxlbmd0aDtMKyspe3ZhciBSPVNbTF07dy5wcm90b3R5cGVbUl09c1tSXX1yZXR1cm4gdy5jcmVhdGU9ZnVuY3Rpb24oVSl7cmV0dXJuIG5ldyB3KFUpfSx3fSxzLl9jYmNJbml0PWZ1bmN0aW9uKCl7dmFyIHc9bmV3'@; put 'IEEodGhpcy5vcHRpb25zLml2KTt0aGlzLl9jYmNTdGF0ZT13fSxzLl91cGRhdGU9ZnVuY3Rpb24odyxTLEwsUil7dmFyIFU9dGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlLEg9dGhpcy5fY2JjU3RhdGUuaXY7aWYoImVuY3J5cHQiPT09dGhpcy50eXBlKXtmb3IodmFyIFY9MDtW'@; put 'PHRoaXMuYmxvY2tTaXplO1YrKylIW1ZdXj13W1MrVl07Zm9yKFUuX3VwZGF0ZS5jYWxsKHRoaXMsSCwwLEwsUiksVj0wO1Y8dGhpcy5ibG9ja1NpemU7VisrKUhbVl09TFtSK1ZdfWVsc2V7Zm9yKFUuX3VwZGF0ZS5jYWxsKHRoaXMsdyxTLEwsUiksVj0wO1Y8dGhpcy5ibG9ja1NpemU7Visr'@; put 'KUxbUitWXV49SFtWXTtmb3IoVj0wO1Y8dGhpcy5ibG9ja1NpemU7VisrKUhbVl09d1tTK1ZdfX19LDgyODA4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDMzNDkpO2Z1bmN0aW9uIGMocyl7dGhpcy5vcHRpb25zPXMsdGhpcy50eXBlPXRoaXMub3B0aW9ucy50eXBlLHRoaXMuYmxv'@; put 'Y2tTaXplPTgsdGhpcy5faW5pdCgpLHRoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSksdGhpcy5idWZmZXJPZmY9MCx0aGlzLnBhZGRpbmc9ITEhPT1zLnBhZGRpbmd9ZmUuZXhwb3J0cz1jLGMucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7fSxjLnByb3RvdHlwZS51cGRh'@; put 'dGU9ZnVuY3Rpb24oQSl7cmV0dXJuIDA9PT1BLmxlbmd0aD9bXToiZGVjcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fdXBkYXRlRGVjcnlwdChBKTp0aGlzLl91cGRhdGVFbmNyeXB0KEEpfSxjLnByb3RvdHlwZS5fYnVmZmVyPWZ1bmN0aW9uKEEsdil7Zm9yKHZhciBDPU1hdGgubWluKHRoaXMu'@; put 'YnVmZmVyLmxlbmd0aC10aGlzLmJ1ZmZlck9mZixBLmxlbmd0aC12KSx3PTA7dzxDO3crKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZit3XT1BW3Yrd107cmV0dXJuIHRoaXMuYnVmZmVyT2ZmKz1DLEN9LGMucHJvdG90eXBlLl9mbHVzaEJ1ZmZlcj1mdW5jdGlvbihBLHYpe3JldHVybiB0'@; put 'aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxBLHYpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5ibG9ja1NpemV9LGMucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0PWZ1bmN0aW9uKEEpe3ZhciB2PTAsQz0wLFM9bmV3IEFycmF5KCgodGhpcy5idWZmZXJPZmYrQS5sZW5ndGgpL3RoaXMuYmxvY2tT'@; put 'aXplfDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJih2Kz10aGlzLl9idWZmZXIoQSx2KSx0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKEMrPXRoaXMuX2ZsdXNoQnVmZmVyKFMsQykpKTtmb3IodmFyIEw9QS5sZW5ndGgtKEEubGVuZ3RoLXYpJXRo'@; put 'aXMuYmxvY2tTaXplO3Y8TDt2Kz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoQSx2LFMsQyksQys9dGhpcy5ibG9ja1NpemU7Zm9yKDt2PEEubGVuZ3RoO3YrKyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1BW3ZdO3JldHVybiBTfSxjLnByb3RvdHlw'@; put 'ZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihBKXtmb3IodmFyIHY9MCxDPTAsdz1NYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmK0EubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxTPW5ldyBBcnJheSh3KnRoaXMuYmxvY2tTaXplKTt3PjA7dy0tKXYrPXRoaXMuX2J1ZmZlcihBLHYpLEMrPXRo'@; put 'aXMuX2ZsdXNoQnVmZmVyKFMsQyk7cmV0dXJuIHYrPXRoaXMuX2J1ZmZlcihBLHYpLFN9LGMucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKEEpe3ZhciB2LEM7cmV0dXJuIEEmJih2PXRoaXMudXBkYXRlKEEpKSxDPSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0'@; put 'aGlzLl9maW5hbERlY3J5cHQoKSx2P3YuY29uY2F0KEMpOkN9LGMucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oQSx2KXtpZigwPT09dilyZXR1cm4hMTtmb3IoO3Y8QS5sZW5ndGg7KUFbdisrXT0wO3JldHVybiEwfSxjLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRo'@; put 'aXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIEE9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsQSwwKSxBfSxjLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oQSl7cmV0dXJuIEF9LGMucHJv'@; put 'dG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXt5LmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLCJOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBBPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKEEsMCksdGhp'@; put 'cy5fdW5wYWQoQSl9fSw4MjIxMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQzMzQ5KSxjPWgoNTY2OTgpLHM9aCg4NzYyNiksQT1oKDgyODA4KTtmdW5jdGlvbiB2KCl7dGhpcy50bXA9bmV3IEFycmF5KDIpLHRoaXMua2V5cz1udWxsfWZ1bmN0aW9uIEMoUyl7QS5jYWxsKHRoaXMs'@; put 'Uyk7dmFyIEw9bmV3IHY7dGhpcy5fZGVzU3RhdGU9TCx0aGlzLmRlcml2ZUtleXMoTCxTLmtleSl9YyhDLEEpLGZlLmV4cG9ydHM9QyxDLmNyZWF0ZT1mdW5jdGlvbihMKXtyZXR1cm4gbmV3IEMoTCl9O3ZhciB3PVsxLDEsMiwyLDIsMiwyLDIsMSwyLDIsMiwyLDIsMiwxXTtDLnByb3RvdHlw'@; put 'ZS5kZXJpdmVLZXlzPWZ1bmN0aW9uKEwsUil7TC5rZXlzPW5ldyBBcnJheSgzMikseS5lcXVhbChSLmxlbmd0aCx0aGlzLmJsb2NrU2l6ZSwiSW52YWxpZCBrZXkgbGVuZ3RoIik7dmFyIHg9cy5yZWFkVUludDMyQkUoUiwwKSxVPXMucmVhZFVJbnQzMkJFKFIsNCk7cy5wYzEoeCxVLEwudG1w'@; put 'LDApLHg9TC50bXBbMF0sVT1MLnRtcFsxXTtmb3IodmFyIEg9MDtIPEwua2V5cy5sZW5ndGg7SCs9Mil7dmFyIFY9d1tIPj4+MV07eD1zLnIyOHNobCh4LFYpLFU9cy5yMjhzaGwoVSxWKSxzLnBjMih4LFUsTC5rZXlzLEgpfX0sQy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihMLFIseCxV'@; put 'KXt2YXIgSD10aGlzLl9kZXNTdGF0ZSxWPXMucmVhZFVJbnQzMkJFKEwsUiksTj1zLnJlYWRVSW50MzJCRShMLFIrNCk7cy5pcChWLE4sSC50bXAsMCksVj1ILnRtcFswXSxOPUgudG1wWzFdLCJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9lbmNyeXB0KEgsVixOLEgudG1wLDApOnRoaXMu'@; put 'X2RlY3J5cHQoSCxWLE4sSC50bXAsMCksTj1ILnRtcFsxXSxzLndyaXRlVUludDMyQkUoeCxWPUgudG1wWzBdLFUpLHMud3JpdGVVSW50MzJCRSh4LE4sVSs0KX0sQy5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbihMLFIpe2lmKCExPT09dGhpcy5wYWRkaW5nKXJldHVybiExO2Zvcih2YXIgeD1M'@; put 'Lmxlbmd0aC1SLFU9UjtVPEwubGVuZ3RoO1UrKylMW1VdPXg7cmV0dXJuITB9LEMucHJvdG90eXBlLl91bnBhZD1mdW5jdGlvbihMKXtpZighMT09PXRoaXMucGFkZGluZylyZXR1cm4gTDtmb3IodmFyIFI9TFtMLmxlbmd0aC0xXSx4PUwubGVuZ3RoLVI7eDxMLmxlbmd0aDt4KyspeS5lcXVh'@; put 'bChMW3hdLFIpO3JldHVybiBMLnNsaWNlKDAsTC5sZW5ndGgtUil9LEMucHJvdG90eXBlLl9lbmNyeXB0PWZ1bmN0aW9uKEwsUix4LFUsSCl7Zm9yKHZhciBWPVIsTj14LHo9MDt6PEwua2V5cy5sZW5ndGg7eis9Mil7dmFyIFk9TC5rZXlzW3pdLEY9TC5rZXlzW3orMV07cy5leHBhbmQoTixM'@; put 'LnRtcCwwKTt2YXIgVz1zLnN1YnN0aXR1dGUoWV49TC50bXBbMF0sRl49TC50bXBbMV0pLHJlPU47Tj0oVl5zLnBlcm11dGUoVykpPj4+MCxWPXJlfXMucmlwKE4sVixVLEgpfSxDLnByb3RvdHlwZS5fZGVjcnlwdD1mdW5jdGlvbihMLFIseCxVLEgpe2Zvcih2YXIgVj14LE49Uix6PUwua2V5'@; put 'cy5sZW5ndGgtMjt6Pj0wO3otPTIpe3ZhciBZPUwua2V5c1t6XSxGPUwua2V5c1t6KzFdO3MuZXhwYW5kKFYsTC50bXAsMCk7dmFyIFc9cy5zdWJzdGl0dXRlKFlePUwudG1wWzBdLEZePUwudG1wWzFdKSxyZT1WO1Y9KE5ecy5wZXJtdXRlKFcpKT4+PjAsTj1yZX1zLnJpcChWLE4sVSxIKX19'@; put 'LDY1Mjc5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDMzNDkpLGM9aCg1NjY5OCkscz1oKDgyODA4KSxBPWgoODIyMTEpO2Z1bmN0aW9uIHYodyxTKXt5LmVxdWFsKFMubGVuZ3RoLDI0LCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgTD1TLnNsaWNlKDAsOCksUj1TLnNsaWNlKDgs'@; put 'MTYpLHg9Uy5zbGljZSgxNiwyNCk7dGhpcy5jaXBoZXJzPSJlbmNyeXB0Ij09PXc/W0EuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6TH0pLEEuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6Un0pLEEuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6eH0pXTpbQS5jcmVhdGUoe3R5cGU6'@; put 'ImRlY3J5cHQiLGtleTp4fSksQS5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpSfSksQS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpMfSldfWZ1bmN0aW9uIEModyl7cy5jYWxsKHRoaXMsdyk7dmFyIFM9bmV3IHYodGhpcy50eXBlLHRoaXMub3B0aW9ucy5rZXkpO3RoaXMuX2VkZVN0'@; put 'YXRlPVN9YyhDLHMpLGZlLmV4cG9ydHM9QyxDLmNyZWF0ZT1mdW5jdGlvbihTKXtyZXR1cm4gbmV3IEMoUyl9LEMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oUyxMLFIseCl7dmFyIFU9dGhpcy5fZWRlU3RhdGU7VS5jaXBoZXJzWzBdLl91cGRhdGUoUyxMLFIseCksVS5jaXBoZXJzWzFd'@; put 'Ll91cGRhdGUoUix4LFIseCksVS5jaXBoZXJzWzJdLl91cGRhdGUoUix4LFIseCl9LEMucHJvdG90eXBlLl9wYWQ9QS5wcm90b3R5cGUuX3BhZCxDLnByb3RvdHlwZS5fdW5wYWQ9QS5wcm90b3R5cGUuX3VucGFkfSw4NzYyNihmZSxqKXsidXNlIHN0cmljdCI7ai5yZWFkVUludDMyQkU9ZnVu'@; put 'Y3Rpb24oQSx2KXtyZXR1cm4oQVswK3ZdPDwyNHxBWzErdl08PDE2fEFbMit2XTw8OHxBWzMrdl0pPj4+MH0sai53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKEEsdixDKXtBWzArQ109dj4+PjI0LEFbMStDXT12Pj4+MTYmMjU1LEFbMitDXT12Pj4+OCYyNTUsQVszK0NdPTI1NSZ2fSxqLmlwPWZ1'@; put 'bmN0aW9uKEEsdixDLHcpe2Zvcih2YXIgUz0wLEw9MCxSPTY7Uj49MDtSLT0yKXtmb3IodmFyIHg9MDt4PD0yNDt4Kz04KVM8PD0xLFN8PXY+Pj54K1ImMTtmb3IoeD0wO3g8PTI0O3grPTgpUzw8PTEsU3w9QT4+PngrUiYxfWZvcihSPTY7Uj49MDtSLT0yKXtmb3IoeD0xO3g8PTI1O3grPTgp'@; put 'TDw8PTEsTHw9dj4+PngrUiYxO2Zvcih4PTE7eDw9MjU7eCs9OClMPDw9MSxMfD1BPj4+eCtSJjF9Q1t3KzBdPVM+Pj4wLENbdysxXT1MPj4+MH0sai5yaXA9ZnVuY3Rpb24oQSx2LEMsdyl7Zm9yKHZhciBTPTAsTD0wLFI9MDtSPDQ7UisrKWZvcih2YXIgeD0yNDt4Pj0wO3gtPTgpUzw8PTEs'@; put 'U3w9dj4+PngrUiYxLFM8PD0xLFN8PUE+Pj54K1ImMTtmb3IoUj00O1I8ODtSKyspZm9yKHg9MjQ7eD49MDt4LT04KUw8PD0xLEx8PXY+Pj54K1ImMSxMPDw9MSxMfD1BPj4+eCtSJjE7Q1t3KzBdPVM+Pj4wLENbdysxXT1MPj4+MH0sai5wYzE9ZnVuY3Rpb24oQSx2LEMsdyl7Zm9yKHZhciBT'@; put 'PTAsTD0wLFI9NztSPj01O1ItLSl7Zm9yKHZhciB4PTA7eDw9MjQ7eCs9OClTPDw9MSxTfD12Pj54K1ImMTtmb3IoeD0wO3g8PTI0O3grPTgpUzw8PTEsU3w9QT4+eCtSJjF9Zm9yKHg9MDt4PD0yNDt4Kz04KVM8PD0xLFN8PXY+PngrUiYxO2ZvcihSPTE7Ujw9MztSKyspe2Zvcih4PTA7eDw9'@; put 'MjQ7eCs9OClMPDw9MSxMfD12Pj54K1ImMTtmb3IoeD0wO3g8PTI0O3grPTgpTDw8PTEsTHw9QT4+eCtSJjF9Zm9yKHg9MDt4PD0yNDt4Kz04KUw8PD0xLEx8PUE+PngrUiYxO0NbdyswXT1TPj4+MCxDW3crMV09TD4+PjB9LGoucjI4c2hsPWZ1bmN0aW9uKEEsdil7cmV0dXJuIEE8PHYmMjY4'@; put 'NDM1NDU1fEE+Pj4yOC12fTt2YXIgaD1bMTQsMTEsMTcsNCwyNywyMywyNSwwLDEzLDIyLDcsMTgsNSw5LDE2LDI0LDIsMjAsMTIsMjEsMSw4LDE1LDI2LDE1LDQsMjUsMTksOSwxLDI2LDE2LDUsMTEsMjMsOCwxMiw3LDE3LDAsMjIsMywxMCwxNCw2LDIwLDI3LDI0XTtqLnBjMj1mdW5jdGlv'@; put 'bihBLHYsQyx3KXtmb3IodmFyIFM9MCxMPTAsUj1oLmxlbmd0aD4+PjEseD0wO3g8Ujt4KyspUzw8PTEsU3w9QT4+PmhbeF0mMTtmb3IoeD1SO3g8aC5sZW5ndGg7eCsrKUw8PD0xLEx8PXY+Pj5oW3hdJjE7Q1t3KzBdPVM+Pj4wLENbdysxXT1MPj4+MH0sai5leHBhbmQ9ZnVuY3Rpb24oQSx2'@; put 'LEMpe3ZhciB3PTAsUz0wO3c9KDEmQSk8PDV8QT4+PjI3O2Zvcih2YXIgTD0yMztMPj0xNTtMLT00KXc8PD02LHd8PUE+Pj5MJjYzO2ZvcihMPTExO0w+PTM7TC09NClTfD1BPj4+TCY2MyxTPDw9NjtTfD0oMzEmQSk8PDF8QT4+PjMxLHZbQyswXT13Pj4+MCx2W0MrMV09Uz4+PjB9O3ZhciB5'@; put 'PVsxNCwwLDQsMTUsMTMsNywxLDQsMiwxNCwxNSwyLDExLDEzLDgsMSwzLDEwLDEwLDYsNiwxMiwxMiwxMSw1LDksOSw1LDAsMyw3LDgsNCwxNSwxLDEyLDE0LDgsOCwyLDEzLDQsNiw5LDIsMSwxMSw3LDE1LDUsMTIsMTEsOSwzLDcsMTQsMywxMCwxMCwwLDUsNiwwLDEzLDE1LDMsMSwxMyw4'@; put 'LDQsMTQsNyw2LDE1LDExLDIsMyw4LDQsMTQsOSwxMiw3LDAsMiwxLDEzLDEwLDEyLDYsMCw5LDUsMTEsMTAsNSwwLDEzLDE0LDgsNywxMCwxMSwxLDEwLDMsNCwxNSwxMyw0LDEsMiw1LDExLDgsNiwxMiw3LDYsMTIsOSwwLDMsNSwyLDE0LDE1LDksMTAsMTMsMCw3LDksMCwxNCw5LDYsMywz'@; put 'LDQsMTUsNiw1LDEwLDEsMiwxMyw4LDEyLDUsNywxNCwxMSwxMiw0LDExLDIsMTUsOCwxLDEzLDEsNiwxMCw0LDEzLDksMCw4LDYsMTUsOSwzLDgsMCw3LDExLDQsMSwxNSwyLDE0LDEyLDMsNSwxMSwxMCw1LDE0LDIsNywxMiw3LDEzLDEzLDgsMTQsMTEsMyw1LDAsNiw2LDE1LDksMCwxMCwz'@; put 'LDEsNCwyLDcsOCwyLDUsMTIsMTEsMSwxMiwxMCw0LDE0LDE1LDksMTAsMyw2LDE1LDksMCwwLDYsMTIsMTAsMTEsMSw3LDEzLDEzLDgsMTUsOSwxLDQsMyw1LDE0LDExLDUsMTIsMiw3LDgsMiw0LDE0LDIsMTQsMTIsMTEsNCwyLDEsMTIsNyw0LDEwLDcsMTEsMTMsNiwxLDgsNSw1LDAsMywx'@; put 'NSwxNSwxMCwxMywzLDAsOSwxNCw4LDksNiw0LDExLDIsOCwxLDEyLDExLDcsMTAsMSwxMywxNCw3LDIsOCwxMywxNSw2LDksMTUsMTIsMCw1LDksNiwxMCwzLDQsMCw1LDE0LDMsMTIsMTAsMSwxNSwxMCw0LDE1LDIsOSw3LDIsMTIsNiw5LDgsNSwwLDYsMTMsMSwzLDEzLDQsMTQsMTQsMCw3'@; put 'LDExLDUsMywxMSw4LDksNCwxNCwzLDE1LDIsNSwxMiwyLDksOCw1LDEyLDE1LDMsMTAsNywxMSwwLDE0LDQsMSwxMCw3LDEsNiwxMywwLDExLDgsNiwxMyw0LDEzLDExLDAsMiwxMSwxNCw3LDE1LDQsMCw5LDgsMSwxMywxMCwzLDE0LDEyLDMsOSw1LDcsMTIsNSwyLDEwLDE1LDYsOCwxLDYs'@; put 'MSw2LDQsMTEsMTEsMTMsMTMsOCwxMiwxLDMsNCw3LDEwLDE0LDcsMTAsOSwxNSw1LDYsMCw4LDE1LDAsMTQsNSwyLDksMywyLDEyLDEzLDEsMiwxNSw4LDEzLDQsOCw2LDEwLDE1LDMsMTEsNywxLDQsMTAsMTIsOSw1LDMsNiwxNCwxMSw1LDAsMCwxNCwxMiw5LDcsMiw3LDIsMTEsMSw0LDE0'@; put 'LDEsNyw5LDQsMTIsMTAsMTQsOCwyLDEzLDAsMTUsNiwxMiwxMCw5LDEzLDAsMTUsMywzLDUsNSw2LDgsMTFdO2ouc3Vic3RpdHV0ZT1mdW5jdGlvbihBLHYpe2Zvcih2YXIgQz0wLHc9MDt3PDQ7dysrKUM8PD00LEN8PXlbNjQqdysoQT4+PjE4LTYqdyY2MyldO2Zvcih3PTA7dzw0O3crKylD'@; put 'PDw9NCxDfD15WzI1Nis2NCp3Kyh2Pj4+MTgtNip3JjYzKV07cmV0dXJuIEM+Pj4wfTt2YXIgYz1bMTYsMjUsMTIsMTEsMywyMCw0LDE1LDMxLDE3LDksNiwyNywxNCwxLDIyLDMwLDI0LDgsMTgsMCw1LDI5LDIzLDEzLDE5LDIsMjYsMTAsMjEsMjgsN107ai5wZXJtdXRlPWZ1bmN0aW9uKEEp'@; put 'e2Zvcih2YXIgdj0wLEM9MDtDPGMubGVuZ3RoO0MrKyl2PDw9MSx2fD1BPj4+Y1tDXSYxO3JldHVybiB2Pj4+MH0sai5wYWRTcGxpdD1mdW5jdGlvbihBLHYsQyl7Zm9yKHZhciB3PUEudG9TdHJpbmcoMik7dy5sZW5ndGg8djspdz0iMCIrdztmb3IodmFyIFM9W10sTD0wO0w8djtMKz1DKVMu'@; put 'cHVzaCh3LnNsaWNlKEwsTCtDKSk7cmV0dXJuIFMuam9pbigiICIpfX0sMTUzODAoZmUsaixoKXt2YXIgeT1oKDQ4Mjg3KS5CdWZmZXIsYz1oKDQ5MzQpLHM9aCgyMzI0MSksQT1oKDE0OTEwKSxDPXtiaW5hcnk6ITAsaGV4OiEwLGJhc2U2NDohMH07ai5EaWZmaWVIZWxsbWFuR3JvdXA9ai5j'@; put 'cmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9ai5nZXREaWZmaWVIZWxsbWFuPWZ1bmN0aW9uIHYoUyl7dmFyIEw9bmV3IHkoc1tTXS5wcmltZSwiaGV4IiksUj1uZXcgeShzW1NdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyBBKEwsUil9LGouY3JlYXRlRGlmZmllSGVsbG1hbj1qLkRpZmZpZUhlbGxt'@; put 'YW49ZnVuY3Rpb24gdyhTLEwsUix4KXtyZXR1cm4geS5pc0J1ZmZlcihMKXx8dm9pZCAwPT09Q1tMXT93KFMsImJpbmFyeSIsTCxSKTooTD1MfHwiYmluYXJ5Iix4PXh8fCJiaW5hcnkiLFI9Unx8bmV3IHkoWzJdKSx5LmlzQnVmZmVyKFIpfHwoUj1uZXcgeShSLHgpKSwibnVtYmVyIj09dHlw'@; put 'ZW9mIFM/bmV3IEEoYyhTLFIpLFIsITApOih5LmlzQnVmZmVyKFMpfHwoUz1uZXcgeShTLEwpKSxuZXcgQShTLFIsITApKSl9fSwxNDkxMChmZSxqLGgpe3ZhciB5PWgoNDgyODcpLkJ1ZmZlcixjPWgoNjY0NzMpLEE9bmV3KGgoNTIyNDQpKSx2PW5ldyBjKDI0KSxDPW5ldyBjKDExKSx3PW5l'@; put 'dyBjKDEwKSxTPW5ldyBjKDMpLEw9bmV3IGMoNyksUj1oKDQ5MzQpLHg9aCg1MzIwOSk7ZnVuY3Rpb24gVShGLFcpe3JldHVybiBXPVd8fCJ1dGY4Iix5LmlzQnVmZmVyKEYpfHwoRj1uZXcgeShGLFcpKSx0aGlzLl9wdWI9bmV3IGMoRiksdGhpc31mdW5jdGlvbiBIKEYsVyl7cmV0dXJuIFc9'@; put 'V3x8InV0ZjgiLHkuaXNCdWZmZXIoRil8fChGPW5ldyB5KEYsVykpLHRoaXMuX3ByaXY9bmV3IGMoRiksdGhpc31mZS5leHBvcnRzPXo7dmFyIFY9e307ZnVuY3Rpb24geihGLFcscSl7dGhpcy5zZXRHZW5lcmF0b3IoVyksdGhpcy5fX3ByaW1lPW5ldyBjKEYpLHRoaXMuX3ByaW1lPWMubW9u'@; put 'dCh0aGlzLl9fcHJpbWUpLHRoaXMuX3ByaW1lTGVuPUYubGVuZ3RoLHRoaXMuX3B1Yj12b2lkIDAsdGhpcy5fcHJpdj12b2lkIDAsdGhpcy5fcHJpbWVDb2RlPXZvaWQgMCxxPyh0aGlzLnNldFB1YmxpY0tleT1VLHRoaXMuc2V0UHJpdmF0ZUtleT1IKTp0aGlzLl9wcmltZUNvZGU9OH1mdW5j'@; put 'dGlvbiBZKEYsVyl7dmFyIHE9bmV3IHkoRi50b0FycmF5KCkpO3JldHVybiBXP3EudG9TdHJpbmcoVyk6cX1PYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInZlcmlmeUVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHRo'@; put 'aXMuX3ByaW1lQ29kZSYmKHRoaXMuX3ByaW1lQ29kZT1mdW5jdGlvbiBOKEYsVyl7dmFyIHE9Vy50b1N0cmluZygiaGV4IikscmU9W3EsRi50b1N0cmluZygxNildLmpvaW4oIl8iKTtpZihyZSBpbiBWKXJldHVybiBWW3JlXTt2YXIgQ2UsbWU9MDtpZihGLmlzRXZlbigpfHwhUi5zaW1wbGVT'@; put 'aWV2ZXx8IVIuZmVybWF0VGVzdChGKXx8IUEudGVzdChGKSlyZXR1cm4gbWUrPTEsVltyZV09bWUrPSIwMiI9PT1xfHwiMDUiPT09cT84OjQsbWU7c3dpdGNoKEEudGVzdChGLnNocm4oMSkpfHwobWUrPTIpLHEpe2Nhc2UiMDIiOkYubW9kKHYpLmNtcChDKSYmKG1lKz04KTticmVhaztjYXNl'@; put 'IjA1IjooQ2U9Ri5tb2QodykpLmNtcChTKSYmQ2UuY21wKEwpJiYobWUrPTgpO2JyZWFrO2RlZmF1bHQ6bWUrPTR9cmV0dXJuIFZbcmVdPW1lLG1lfSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRoaXMuX3ByaW1lQ29kZX19KSx6LnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gdGhpcy5fcHJpdnx8KHRoaXMuX3ByaXY9bmV3IGMoeCh0aGlzLl9wcmltZUxlbikpKSx0aGlzLl9wdWI9dGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpLHRoaXMuZ2V0UHVibGljS2V5KCl9LHoucHJvdG90eXBlLmNvbXB1'@; put 'dGVTZWNyZXQ9ZnVuY3Rpb24oRil7dmFyIFc9KEY9KEY9bmV3IGMoRikpLnRvUmVkKHRoaXMuX3ByaW1lKSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSxxPW5ldyB5KFcudG9BcnJheSgpKSxyZT10aGlzLmdldFByaW1lKCk7aWYocS5sZW5ndGg8cmUubGVuZ3RoKXt2YXIgbWU9bmV3'@; put 'IHkocmUubGVuZ3RoLXEubGVuZ3RoKTttZS5maWxsKDApLHE9eS5jb25jYXQoW21lLHFdKX1yZXR1cm4gcX0sei5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKFcpe3JldHVybiBZKHRoaXMuX3B1YixXKX0sei5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihXKXtyZXR1'@; put 'cm4gWSh0aGlzLl9wcml2LFcpfSx6LnByb3RvdHlwZS5nZXRQcmltZT1mdW5jdGlvbihGKXtyZXR1cm4gWSh0aGlzLl9fcHJpbWUsRil9LHoucHJvdG90eXBlLmdldEdlbmVyYXRvcj1mdW5jdGlvbihGKXtyZXR1cm4gWSh0aGlzLl9nZW4sRil9LHoucHJvdG90eXBlLnNldEdlbmVyYXRvcj1m'@; put 'dW5jdGlvbihGLFcpe3JldHVybiBXPVd8fCJ1dGY4Iix5LmlzQnVmZmVyKEYpfHwoRj1uZXcgeShGLFcpKSx0aGlzLl9fZ2VuPUYsdGhpcy5fZ2VuPW5ldyBjKEYpLHRoaXN9fSw0OTM0KGZlLGosaCl7dmFyIHk9aCg1MzIwOSk7ZmUuZXhwb3J0cz1yZSxyZS5zaW1wbGVTaWV2ZT1XLHJlLmZl'@; put 'cm1hdFRlc3Q9cTt2YXIgYz1oKDY2NDczKSxzPW5ldyBjKDI0KSx2PW5ldyhoKDUyMjQ0KSksQz1uZXcgYygxKSx3PW5ldyBjKDIpLFM9bmV3IGMoNSkseD0obmV3IGMoMTYpLG5ldyBjKDgpLG5ldyBjKDEwKSksVT1uZXcgYygzKSxWPShuZXcgYyg3KSxuZXcgYygxMSkpLE49bmV3IGMoNCks'@; put 'WT0obmV3IGMoMTIpLG51bGwpO2Z1bmN0aW9uIFcobWUpe2Zvcih2YXIgQ2U9ZnVuY3Rpb24gRigpe2lmKG51bGwhPT1ZKXJldHVybiBZO3ZhciBDZT1bXTtDZVswXT0yO2Zvcih2YXIgSWU9MSxrZT0zO2tlPDEwNDg1NzY7a2UrPTIpe2Zvcih2YXIgcWU9TWF0aC5jZWlsKE1hdGguc3FydChr'@; put 'ZSkpLFg9MDtYPEllJiZDZVtYXTw9cWUmJmtlJUNlW1hdIT09MDtYKyspO0llIT09WCYmQ2VbWF08PXFlfHwoQ2VbSWUrK109a2UpfXJldHVybiBZPUNlLENlfSgpLEllPTA7SWU8Q2UubGVuZ3RoO0llKyspaWYoMD09PW1lLm1vZG4oQ2VbSWVdKSlyZXR1cm4gMD09PW1lLmNtcG4oQ2VbSWVd'@; put 'KTtyZXR1cm4hMH1mdW5jdGlvbiBxKG1lKXt2YXIgQ2U9Yy5tb250KG1lKTtyZXR1cm4gMD09PXcudG9SZWQoQ2UpLnJlZFBvdyhtZS5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKX1mdW5jdGlvbiByZShtZSxDZSl7aWYobWU8MTYpcmV0dXJuIG5ldyBjKDI9PT1DZXx8NT09PUNlP1sxNDAs'@; put 'MTIzXTpbMTQwLDM5XSk7Q2U9bmV3IGMoQ2UpO2Zvcih2YXIgSWUsa2U7Oyl7Zm9yKEllPW5ldyBjKHkoTWF0aC5jZWlsKG1lLzgpKSk7SWUuYml0TGVuZ3RoKCk+bWU7KUllLmlzaHJuKDEpO2lmKEllLmlzRXZlbigpJiZJZS5pYWRkKEMpLEllLnRlc3RuKDEpfHxJZS5pYWRkKHcpLENlLmNt'@; put 'cCh3KSl7aWYoIUNlLmNtcChTKSlmb3IoO0llLm1vZCh4KS5jbXAoVSk7KUllLmlhZGQoTil9ZWxzZSBmb3IoO0llLm1vZChzKS5jbXAoVik7KUllLmlhZGQoTik7aWYoVyhrZT1JZS5zaHJuKDEpKSYmVyhJZSkmJnEoa2UpJiZxKEllKSYmdi50ZXN0KGtlKSYmdi50ZXN0KEllKSlyZXR1cm4g'@; put 'SWV9fX0sNjY0NzMoZmUsaixoKXshZnVuY3Rpb24oeSxjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyhYLGYpe2lmKCFYKXRocm93IG5ldyBFcnJvcihmfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIEEoWCxmKXtYLnN1cGVyXz1mO3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlw'@; put 'ZT1mLnByb3RvdHlwZSxYLnByb3RvdHlwZT1uZXcgYixYLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1YfWZ1bmN0aW9uIHYoWCxmLGIpe2lmKHYuaXNCTihYKSlyZXR1cm4gWDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09'@; put 'WCYmKCgibGUiPT09Znx8ImJlIj09PWYpJiYoYj1mLGY9MTApLHRoaXMuX2luaXQoWHx8MCxmfHwxMCxifHwiYmUiKSl9dmFyIEM7Im9iamVjdCI9PXR5cGVvZiB5P3kuZXhwb3J0cz12OmMuQk49dix2LkJOPXYsdi53b3JkU2l6ZT0yNjt0cnl7Qz10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9m'@; put 'IHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6aCg2NjA4OSkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiB3KFgsZil7dmFyIGI9WC5jaGFyQ29kZUF0KGYpO3JldHVybiBiPj02NSYmYjw9NzA/Yi01NTpiPj05NyYmYjw9MTAyP2ItODc6Yi00OCYxNX1mdW5jdGlvbiBTKFgsZixiKXt2'@; put 'YXIgaz13KFgsYik7cmV0dXJuIGItMT49ZiYmKGt8PXcoWCxiLTEpPDw0KSxrfWZ1bmN0aW9uIEwoWCxmLGIsayl7Zm9yKHZhciBNPTAsQj1NYXRoLm1pbihYLmxlbmd0aCxiKSxLPWY7SzxCO0srKyl7dmFyIEc9WC5jaGFyQ29kZUF0KEspLTQ4O00qPWssTSs9Rz49NDk/Ry00OSsxMDpHPj0x'@; put 'Nz9HLTE3KzEwOkd9cmV0dXJuIE19di5pc0JOPWZ1bmN0aW9uKGYpe3JldHVybiBmIGluc3RhbmNlb2Ygdnx8bnVsbCE9PWYmJiJvYmplY3QiPT10eXBlb2YgZiYmZi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PXYud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZi53b3Jkcyl9LHYubWF4PWZ1bmN0'@; put 'aW9uKGYsYil7cmV0dXJuIGYuY21wKGIpPjA/ZjpifSx2Lm1pbj1mdW5jdGlvbihmLGIpe3JldHVybiBmLmNtcChiKTwwP2Y6Yn0sdi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZixiLGspe2lmKCJudW1iZXIiPT10eXBlb2YgZilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihmLGIsayk7aWYo'@; put 'Im9iamVjdCI9PXR5cGVvZiBmKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZixiLGspOyJoZXgiPT09YiYmKGI9MTYpLHMoYj09PSgwfGIpJiZiPj0yJiZiPD0zNik7dmFyIE09MDsiLSI9PT0oZj1mLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKE0rKyx0aGlzLm5lZ2F0aXZl'@; put 'PTEpLE08Zi5sZW5ndGgmJigxNj09PWI/dGhpcy5fcGFyc2VIZXgoZixNLGspOih0aGlzLl9wYXJzZUJhc2UoZixiLE0pLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYixrKSkpfSx2LnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihmLGIsayl7ZjwwJiYo'@; put 'dGhpcy5uZWdhdGl2ZT0xLGY9LWYpLGY8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmZdLHRoaXMubGVuZ3RoPTEpOmY8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZixmLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToocyhmPDkwMDcxOTky'@; put 'NTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmYsZi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGIsayl9LHYucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZixiLGspe2lmKHMoIm51'@; put 'bWJlciI9PXR5cGVvZiBmLmxlbmd0aCksZi5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgTT0wO008dGhpcy5s'@; put 'ZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgQixLLEc9MDtpZigiYmUiPT09aylmb3IoTT1mLmxlbmd0aC0xLEI9MDtNPj0wO00tPTMpdGhpcy53b3Jkc1tCXXw9KEs9ZltNXXxmW00tMV08PDh8ZltNLTJdPDwxNik8PEcmNjcxMDg4NjMsdGhpcy53b3Jkc1tCKzFdPUs+Pj4yNi1HJjY3'@; put 'MTA4ODYzLChHKz0yNCk+PTI2JiYoRy09MjYsQisrKTtlbHNlIGlmKCJsZSI9PT1rKWZvcihNPTAsQj0wO008Zi5sZW5ndGg7TSs9Myl0aGlzLndvcmRzW0JdfD0oSz1mW01dfGZbTSsxXTw8OHxmW00rMl08PDE2KTw8RyY2NzEwODg2Myx0aGlzLndvcmRzW0IrMV09Sz4+PjI2LUcmNjcxMDg4'@; put 'NjMsKEcrPTI0KT49MjYmJihHLT0yNixCKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihmLGIsayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChmLmxlbmd0aC1iKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZh'@; put 'ciBNPTA7TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3ZhciBHLEI9MCxLPTA7aWYoImJlIj09PWspZm9yKE09Zi5sZW5ndGgtMTtNPj1iO00tPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1H'@; put 'Pj4+MjYpOkIrPTg7ZWxzZSBmb3IoTT0oZi5sZW5ndGgtYiklMj09MD9iKzE6YjtNPGYubGVuZ3RoO00rPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7dGhpcy5zdHJpcCgpfSx2LnBy'@; put 'b3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGYsYixrKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgTT0wLEI9MTtCPD02NzEwODg2MztCKj1iKU0rKztNLS0sQj1CL2J8MDtmb3IodmFyIEs9Zi5sZW5ndGgtayxHPUslTSxEPU1hdGgubWluKEssSy1HKStrLHA9MCxJ'@; put 'PWs7STxEO0krPU0pcD1MKGYsSSxJK00sYiksdGhpcy5pbXVsbihCKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09Ryl7dmFyIHVlPTE7Zm9yKHA9TChmLEksZi5sZW5ndGgsYiksST0wO0k8RztJKyspdWUqPWI7dGhpcy5p'@; put 'bXVsbih1ZSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGYpe2Yud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3Ro'@; put 'O2IrKylmLndvcmRzW2JdPXRoaXMud29yZHNbYl07Zi5sZW5ndGg9dGhpcy5sZW5ndGgsZi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGYucmVkPXRoaXMucmVkfSx2LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiB0aGlzLmNvcHkoZiksZn0sdi5w'@; put 'cm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihmKXtmb3IoO3RoaXMubGVuZ3RoPGY7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3Ro'@; put 'LTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSx2LnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sdi5wcm90b3R5cGUuaW5zcGVjdD1m'@; put 'dW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgUj1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIw'@; put 'MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAw'@; put 'MDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx4PVswLDAsMjUsMTYsMTIs'@; put 'MTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLFU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4'@; put 'MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1'@; put 'NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gVihYLGYsYil7Yi5uZWdhdGl2ZT1mLm5lZ2F0aXZlXlgubmVnYXRpdmU7dmFyIGs9WC5sZW5ndGgrZi5sZW5ndGh8MDtiLmxlbmd0aD1rLGs9ay0xfDA7dmFyIE09MHxYLndvcmRzWzBdLEI9MHxmLndv'@; put 'cmRzWzBdLEs9TSpCLEQ9Sy82NzEwODg2NHwwO2Iud29yZHNbMF09NjcxMDg4NjMmSztmb3IodmFyIHA9MTtwPGs7cCsrKXtmb3IodmFyIEk9RD4+PjI2LHVlPTY3MTA4ODYzJkQsbmU9TWF0aC5taW4ocCxmLmxlbmd0aC0xKSxfZT1NYXRoLm1heCgwLHAtWC5sZW5ndGgrMSk7X2U8PW5lO19l'@; put 'KyspSSs9KEs9KE09MHxYLndvcmRzW3AtX2V8MF0pKihCPTB8Zi53b3Jkc1tfZV0pK3VlKS82NzEwODg2NHwwLHVlPTY3MTA4ODYzJks7Yi53b3Jkc1twXT0wfHVlLEQ9MHxJfXJldHVybiAwIT09RD9iLndvcmRzW3BdPTB8RDpiLmxlbmd0aC0tLGIuc3RyaXAoKX12LnByb3RvdHlwZS50b1N0'@; put 'cmluZz1mdW5jdGlvbihmLGIpe3ZhciBrO2lmKGI9MHxifHwxLDE2PT09KGY9Znx8MTApfHwiaGV4Ij09PWYpe2s9IiI7Zm9yKHZhciBNPTAsQj0wLEs9MDtLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9dGhpcy53b3Jkc1tLXSxEPSgxNjc3NzIxNSYoRzw8TXxCKSkudG9TdHJpbmcoMTYpO0I9'@; put 'Rz4+PjI0LU0mMTY3NzcyMTUsKE0rPTIpPj0yNiYmKE0tPTI2LEstLSksaz0wIT09Qnx8SyE9PXRoaXMubGVuZ3RoLTE/Uls2LUQubGVuZ3RoXStEK2s6RCtrfWZvcigwIT09QiYmKGs9Qi50b1N0cmluZygxNikrayk7ay5sZW5ndGglYiE9PTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5l'@; put 'Z2F0aXZlJiYoaz0iLSIrayksa31pZihmPT09KDB8ZikmJmY+PTImJmY8PTM2KXt2YXIgcD14W2ZdLEk9VVtmXTtrPSIiO3ZhciB1ZT10aGlzLmNsb25lKCk7Zm9yKHVlLm5lZ2F0aXZlPTA7IXVlLmlzWmVybygpOyl7dmFyIG5lPXVlLm1vZG4oSSkudG9TdHJpbmcoZik7az0odWU9dWUuaWRp'@; put 'dm4oSSkpLmlzWmVybygpP25lK2s6UltwLW5lLmxlbmd0aF0rbmUra31mb3IodGhpcy5pc1plcm8oKSYmKGs9IjAiK2spO2subGVuZ3RoJWIhPT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9cyghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFu'@; put 'ZCAzNiIpfSx2LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBmPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9mKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zis9NDUwMzU5OTYyNzM3MDQ5Nis2'@; put 'NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJnMoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1mOmZ9LHYucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2'@; put 'KX0sdi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZixiKXtyZXR1cm4gcyh0eXBlb2YgQzwidSIpLHRoaXMudG9BcnJheUxpa2UoQyxmLGIpfSx2LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZixiKX0sdi5wcm90b3R5'@; put 'cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZixiLGspe3ZhciBNPXRoaXMuYnl0ZUxlbmd0aCgpLEI9a3x8TWF0aC5tYXgoMSxNKTtzKE08PUIsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxzKEI+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5z'@; put 'dHJpcCgpO3ZhciBELHAsSz0ibGUiPT09YixHPW5ldyBmKEIpLEk9dGhpcy5jbG9uZSgpO2lmKEspe2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVzaHJuKDgpLEdbcF09RDtmb3IoO3A8QjtwKyspR1twXT0wfWVsc2V7Zm9yKHA9MDtwPEItTTtwKyspR1twXT0w'@; put 'O2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVzaHJuKDgpLEdbQi1wLTFdPUR9cmV0dXJuIEd9LHYucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihmKXtyZXR1cm4gMzItTWF0aC5jbHozMihmKX06ZnVuY3Rpb24oZil7dmFyIGI9Zixr'@; put 'PTA7cmV0dXJuIGI+PTQwOTYmJihrKz0xMyxiPj4+PTEzKSxiPj02NCYmKGsrPTcsYj4+Pj03KSxiPj04JiYoays9NCxiPj4+PTQpLGI+PTImJihrKz0yLGI+Pj49MiksaytifSx2LnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZil7aWYoMD09PWYpcmV0dXJuIDI2O3ZhciBiPWYsaz0w'@; put 'O3JldHVybiEoODE5MSZiKSYmKGsrPTEzLGI+Pj49MTMpLCEoMTI3JmIpJiYoays9NyxiPj4+PTcpLCEoMTUmYikmJihrKz00LGI+Pj49NCksISgzJmIpJiYoays9MixiPj4+PTIpLCEoMSZiKSYmaysrLGt9LHYucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuX2Nv'@; put 'dW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK2J9LHYucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGY9MCxiPTA7Yjx0aGlzLmxlbmd0aDtiKyspe3ZhciBrPXRo'@; put 'aXMuX3plcm9CaXRzKHRoaXMud29yZHNbYl0pO2lmKGYrPWssMjYhPT1rKWJyZWFrfXJldHVybiBmfSx2LnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSx2LnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oZil7cmV0'@; put 'dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oZikuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy50ZXN0bihmLTEpP3RoaXMubm90bihmKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSx2'@; put 'LnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sdi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LHYucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMu'@; put 'bmVnYXRpdmVePTEpLHRoaXN9LHYucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oZil7Zm9yKDt0aGlzLmxlbmd0aDxmLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgYj0wO2I8Zi5sZW5ndGg7YisrKXRoaXMud29yZHNbYl09dGhpcy53b3Jkc1tiXXxmLndvcmRz'@; put 'W2JdO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlvcj1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXVvcihmKX0sdi5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3Ro'@; put 'aXMuY2xvbmUoKS5pb3IoZik6Zi5jbG9uZSgpLmlvcih0aGlzKX0sdi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihmKTpmLmNsb25lKCkuaXVvcih0aGlzKX0sdi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24o'@; put 'Zil7dmFyIGI7Yj10aGlzLmxlbmd0aD5mLmxlbmd0aD9mOnRoaXM7Zm9yKHZhciBrPTA7azxiLmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT10aGlzLndvcmRzW2tdJmYud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPWIubGVuZ3RoLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaWFuZD1m'@; put 'dW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoZil9LHYucHJvdG90eXBlLmFuZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoZik6Zi5jbG9uZSgpLmlhbmQodGhpcyl9'@; put 'LHYucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChmKTpmLmNsb25lKCkuaXVhbmQodGhpcyl9LHYucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGYpe3ZhciBiLGs7dGhpcy5sZW5ndGg+Zi5sZW5ndGg/KGI9'@; put 'dGhpcyxrPWYpOihiPWYsaz10aGlzKTtmb3IodmFyIE09MDtNPGsubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPWIud29yZHNbTV1eay53b3Jkc1tNXTtpZih0aGlzIT09Yilmb3IoO008Yi5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Yi53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9Yi5s'@; put 'ZW5ndGgsdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKGYpe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxmLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihmKX0sdi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlz'@; put 'LmNsb25lKCkuaXhvcihmKTpmLmNsb25lKCkuaXhvcih0aGlzKX0sdi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGYpOmYuY2xvbmUoKS5pdXhvcih0aGlzKX0sdi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rp'@; put 'b24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBiPTB8TWF0aC5jZWlsKGYvMjYpLGs9ZiUyNjt0aGlzLl9leHBhbmQoYiksaz4wJiZiLS07Zm9yKHZhciBNPTA7TTxiO00rKyl0aGlzLndvcmRzW01dPTY3MTA4ODYzJn50aGlzLndvcmRzW01dO2ZvcihrPjAmJih0aGlzLndv'@; put 'cmRzW01dPX50aGlzLndvcmRzW01dJjY3MTA4ODYzPj4yNi1rLE0rKyk7TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihmKX0sdi5wcm90b3R5'@; put 'cGUuc2V0bj1mdW5jdGlvbihmLGIpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgaz1mLzI2fDAsTT1mJTI2O3JldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdPWI/dGhpcy53b3Jkc1trXXwxPDxNOnRoaXMud29yZHNba10mfigxPDxNKSx0aGlzLnN0cmlwKCl9'@; put 'LHYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZil7dmFyIGIsayxNO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLGI9dGhpcy5pc3ViKGYpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdh'@; put 'dGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIGYubmVnYXRpdmU9MCxiPXRoaXMuaXN1YihmKSxmLm5lZ2F0aXZlPTEsYi5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5mLmxlbmd0aD8oaz10aGlzLE09Zik6KGs9ZixNPXRoaXMpO2Zvcih2YXIgQj0wLEs9MDtLPE0ubGVuZ3RoO0srKyl0aGlz'@; put 'LndvcmRzW0tdPTY3MTA4ODYzJihiPSgwfGsud29yZHNbS10pKygwfE0ud29yZHNbS10pK0IpLEI9Yj4+PjI2O2Zvcig7MCE9PUImJks8ay5sZW5ndGg7SysrKXRoaXMud29yZHNbS109NjcxMDg4NjMmKGI9KDB8ay53b3Jkc1tLXSkrQiksQj1iPj4+MjY7aWYodGhpcy5sZW5ndGg9ay5sZW5n'@; put 'dGgsMCE9PUIpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Qix0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoayE9PXRoaXMpZm9yKDtLPGsubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPWsud29yZHNbS107cmV0dXJuIHRoaXN9LHYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihmKXt2YXIgYjtyZXR1cm4g'@; put 'MCE9PWYubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhmLm5lZ2F0aXZlPTAsYj10aGlzLnN1YihmKSxmLm5lZ2F0aXZlXj0xLGIpOjA9PT1mLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLGI9Zi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLGIpOnRo'@; put 'aXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGYpOmYuY2xvbmUoKS5pYWRkKHRoaXMpfSx2LnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGYpe2lmKDAhPT1mLm5lZ2F0aXZlKXtmLm5lZ2F0aXZlPTA7dmFyIGI9dGhpcy5pYWRkKGYpO3JldHVybiBmLm5lZ2F0aXZlPTEsYi5f'@; put 'bm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChmKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgTSxCLGs9dGhpcy5jbXAoZik7aWYoMD09PWspcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0'@; put 'aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO2s+MD8oTT10aGlzLEI9Zik6KE09ZixCPXRoaXMpO2Zvcih2YXIgSz0wLEc9MDtHPEIubGVuZ3RoO0crKylLPShiPSgwfE0ud29yZHNbR10pLSgwfEIud29yZHNbR10pK0spPj4yNix0aGlzLndvcmRzW0ddPTY3MTA4ODYzJmI7Zm9yKDswIT09SyYm'@; put 'RzxNLmxlbmd0aDtHKyspSz0oYj0oMHxNLndvcmRzW0ddKStLKT4+MjYsdGhpcy53b3Jkc1tHXT02NzEwODg2MyZiO2lmKDA9PT1LJiZHPE0ubGVuZ3RoJiZNIT09dGhpcylmb3IoO0c8TS5sZW5ndGg7RysrKXRoaXMud29yZHNbR109TS53b3Jkc1tHXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0'@; put 'aC5tYXgodGhpcy5sZW5ndGgsRyksTSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihmKX07dmFyIE49ZnVuY3Rpb24oZixiLGspe3ZhciBELHAsSSxNPWYud29yZHMsQj1i'@; put 'LndvcmRzLEs9ay53b3JkcyxHPTAsdWU9MHxNWzBdLG5lPTgxOTEmdWUsX2U9dWU+Pj4xMyxQZT0wfE1bMV0sb3Q9ODE5MSZQZSxsdD1QZT4+PjEzLGR0PTB8TVsyXSxSZT04MTkxJmR0LGFlPWR0Pj4+MTMseGU9MHxNWzNdLGplPTgxOTEmeGUsQWU9eGU+Pj4xMyxEZT0wfE1bNF0sRmU9ODE5'@; put 'MSZEZSxnZT1EZT4+PjEzLGNlPTB8TVs1XSxoZT04MTkxJmNlLHdlPWNlPj4+MTMsSmU9MHxNWzZdLHR0PTgxOTEmSmUsS2U9SmU+Pj4xMywkdD0wfE1bN10sUnQ9ODE5MSYkdCxMdD0kdD4+PjEzLEd0PTB8TVs4XSxndD04MTkxJkd0LFh0PUd0Pj4+MTMsTHI9MHxNWzldLGxuPTgxOTEmTHIs'@; put 'T249THI+Pj4xMyxRcj0wfEJbMF0sdHI9ODE5MSZRcixIbj1Rcj4+PjEzLE9vPTB8QlsxXSx1cj04MTkxJk9vLFpuPU9vPj4+MTMsU249MHxCWzJdLHhyPTgxOTEmU24sVHQ9U24+Pj4xMyxBcj0wfEJbM10sX249ODE5MSZBcixadD1Bcj4+PjEzLE5uPTB8Qls0XSxwdD04MTkxJk5uLHBuPU5u'@; put 'Pj4+MTMsTWk9MHxCWzVdLEdlPTgxOTEmTWksVXQ9TWk+Pj4xMyx2cj0wfEJbNl0seHQ9ODE5MSZ2cixCdD12cj4+PjEzLHpuPTB8Qls3XSxHbj04MTkxJnpuLHluPXpuPj4+MTMsdmk9MHxCWzhdLHJyPTgxOTEmdmksaHI9dmk+Pj4xMyxwbz0wfEJbOV0sdm49ODE5MSZwbyxCbj1wbz4+PjEz'@; put 'O2submVnYXRpdmU9Zi5uZWdhdGl2ZV5iLm5lZ2F0aXZlLGsubGVuZ3RoPTE5O3ZhciBqYT0oRysoRD1NYXRoLmltdWwobmUsdHIpKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKG5lLEhuKSkrTWF0aC5pbXVsKF9lLHRyKXwwKSk8PDEzKXwwO0c9KChJPU1hdGguaW11bChfZSxIbikpKyhw'@; put 'Pj4+MTMpfDApKyhqYT4+PjI2KXwwLGphJj02NzEwODg2MyxEPU1hdGguaW11bChvdCx0cikscD0ocD1NYXRoLmltdWwob3QsSG4pKStNYXRoLmltdWwobHQsdHIpfDAsST1NYXRoLmltdWwobHQsSG4pO3ZhciBqbz0oRysoRD1EK01hdGguaW11bChuZSx1cil8MCl8MCkrKCg4MTkxJihwPShw'@; put 'PXArTWF0aC5pbXVsKG5lLFpuKXwwKStNYXRoLmltdWwoX2UsdXIpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWm4pfDApKyhwPj4+MTMpfDApKyhqbz4+PjI2KXwwLGpvJj02NzEwODg2MyxEPU1hdGguaW11bChSZSx0cikscD0ocD1NYXRoLmltdWwoUmUsSG4pKStNYXRoLmlt'@; put 'dWwoYWUsdHIpfDAsST1NYXRoLmltdWwoYWUsSG4pLEQ9RCtNYXRoLmltdWwob3QsdXIpfDAscD0ocD1wK01hdGguaW11bChvdCxabil8MCkrTWF0aC5pbXVsKGx0LHVyKXwwLEk9SStNYXRoLmltdWwobHQsWm4pfDA7dmFyIFhyPShHKyhEPUQrTWF0aC5pbXVsKG5lLHhyKXwwKXwwKSsoKDgx'@; put 'OTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVHQpfDApK01hdGguaW11bChfZSx4cil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxUdCl8MCkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGplLHRyKSxwPShwPU1hdGguaW11bChqZSxIbikp'@; put 'K01hdGguaW11bChBZSx0cil8MCxJPU1hdGguaW11bChBZSxIbiksRD1EK01hdGguaW11bChSZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFpuKXwwKStNYXRoLmltdWwoYWUsdXIpfDAsST1JK01hdGguaW11bChhZSxabil8MCxEPUQrTWF0aC5pbXVsKG90LHhyKXwwLHA9KHA9cCtNYXRo'@; put 'LmltdWwob3QsVHQpfDApK01hdGguaW11bChsdCx4cil8MCxJPUkrTWF0aC5pbXVsKGx0LFR0KXwwO3ZhciBlYT0oRysoRD1EK01hdGguaW11bChuZSxfbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFp0KXwwKStNYXRoLmltdWwoX2UsX24pfDApKTw8MTMpfDA7Rz0oKEk9'@; put 'SStNYXRoLmltdWwoX2UsWnQpfDApKyhwPj4+MTMpfDApKyhlYT4+PjI2KXwwLGVhJj02NzEwODg2MyxEPU1hdGguaW11bChGZSx0cikscD0ocD1NYXRoLmltdWwoRmUsSG4pKStNYXRoLmltdWwoZ2UsdHIpfDAsST1NYXRoLmltdWwoZ2UsSG4pLEQ9RCtNYXRoLmltdWwoamUsdXIpfDAscD0o'@; put 'cD1wK01hdGguaW11bChqZSxabil8MCkrTWF0aC5pbXVsKEFlLHVyKXwwLEk9SStNYXRoLmltdWwoQWUsWm4pfDAsRD1EK01hdGguaW11bChSZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFR0KXwwKStNYXRoLmltdWwoYWUseHIpfDAsST1JK01hdGguaW11bChhZSxUdCl8MCxEPUQrTWF0'@; put 'aC5pbXVsKG90LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsWnQpfDApK01hdGguaW11bChsdCxfbil8MCxJPUkrTWF0aC5pbXVsKGx0LFp0KXwwO3ZhciByYT0oRysoRD1EK01hdGguaW11bChuZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHBuKXwwKStNYXRoLmlt'@; put 'dWwoX2UscHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UscG4pfDApKyhwPj4+MTMpfDApKyhyYT4+PjI2KXwwLHJhJj02NzEwODg2MyxEPU1hdGguaW11bChoZSx0cikscD0ocD1NYXRoLmltdWwoaGUsSG4pKStNYXRoLmltdWwod2UsdHIpfDAsST1NYXRoLmltdWwod2UsSG4p'@; put 'LEQ9RCtNYXRoLmltdWwoRmUsdXIpfDAscD0ocD1wK01hdGguaW11bChGZSxabil8MCkrTWF0aC5pbXVsKGdlLHVyKXwwLEk9SStNYXRoLmltdWwoZ2UsWm4pfDAsRD1EK01hdGguaW11bChqZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGplLFR0KXwwKStNYXRoLmltdWwoQWUseHIpfDAsST1J'@; put 'K01hdGguaW11bChBZSxUdCl8MCxEPUQrTWF0aC5pbXVsKFJlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsWnQpfDApK01hdGguaW11bChhZSxfbil8MCxJPUkrTWF0aC5pbXVsKGFlLFp0KXwwLEQ9RCtNYXRoLmltdWwob3QscHQpfDAscD0ocD1wK01hdGguaW11bChvdCxwbil8MCkrTWF0'@; put 'aC5pbXVsKGx0LHB0KXwwLEk9SStNYXRoLmltdWwobHQscG4pfDA7dmFyIGNhPShHKyhEPUQrTWF0aC5pbXVsKG5lLEdlKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVXQpfDApK01hdGguaW11bChfZSxHZSl8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxVdCl8'@; put 'MCkrKHA+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKHR0LHRyKSxwPShwPU1hdGguaW11bCh0dCxIbikpK01hdGguaW11bChLZSx0cil8MCxJPU1hdGguaW11bChLZSxIbiksRD1EK01hdGguaW11bChoZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFpu'@; put 'KXwwKStNYXRoLmltdWwod2UsdXIpfDAsST1JK01hdGguaW11bCh3ZSxabil8MCxEPUQrTWF0aC5pbXVsKEZlLHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVHQpfDApK01hdGguaW11bChnZSx4cil8MCxJPUkrTWF0aC5pbXVsKGdlLFR0KXwwLEQ9RCtNYXRoLmltdWwoamUsX24pfDAscD0o'@; put 'cD1wK01hdGguaW11bChqZSxadCl8MCkrTWF0aC5pbXVsKEFlLF9uKXwwLEk9SStNYXRoLmltdWwoQWUsWnQpfDAsRD1EK01hdGguaW11bChSZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKFJlLHBuKXwwKStNYXRoLmltdWwoYWUscHQpfDAsST1JK01hdGguaW11bChhZSxwbil8MCxEPUQrTWF0'@; put 'aC5pbXVsKG90LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVXQpfDApK01hdGguaW11bChsdCxHZSl8MCxJPUkrTWF0aC5pbXVsKGx0LFV0KXwwO3ZhciBDaT0oRysoRD1EK01hdGguaW11bChuZSx4dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJ0KXwwKStNYXRoLmlt'@; put 'dWwoX2UseHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQnQpfDApKyhwPj4+MTMpfDApKyhDaT4+PjI2KXwwLENpJj02NzEwODg2MyxEPU1hdGguaW11bChSdCx0cikscD0ocD1NYXRoLmltdWwoUnQsSG4pKStNYXRoLmltdWwoTHQsdHIpfDAsST1NYXRoLmltdWwoTHQsSG4p'@; put 'LEQ9RCtNYXRoLmltdWwodHQsdXIpfDAscD0ocD1wK01hdGguaW11bCh0dCxabil8MCkrTWF0aC5pbXVsKEtlLHVyKXwwLEk9SStNYXRoLmltdWwoS2UsWm4pfDAsRD1EK01hdGguaW11bChoZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFR0KXwwKStNYXRoLmltdWwod2UseHIpfDAsST1J'@; put 'K01hdGguaW11bCh3ZSxUdCl8MCxEPUQrTWF0aC5pbXVsKEZlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsWnQpfDApK01hdGguaW11bChnZSxfbil8MCxJPUkrTWF0aC5pbXVsKGdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoamUscHQpfDAscD0ocD1wK01hdGguaW11bChqZSxwbil8MCkrTWF0'@; put 'aC5pbXVsKEFlLHB0KXwwLEk9SStNYXRoLmltdWwoQWUscG4pfDAsRD1EK01hdGguaW11bChSZSxHZSl8MCxwPShwPXArTWF0aC5pbXVsKFJlLFV0KXwwKStNYXRoLmltdWwoYWUsR2UpfDAsST1JK01hdGguaW11bChhZSxVdCl8MCxEPUQrTWF0aC5pbXVsKG90LHh0KXwwLHA9KHA9cCtNYXRo'@; put 'LmltdWwob3QsQnQpfDApK01hdGguaW11bChsdCx4dCl8MCxJPUkrTWF0aC5pbXVsKGx0LEJ0KXwwO3ZhciBobz0oRysoRD1EK01hdGguaW11bChuZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHluKXwwKStNYXRoLmltdWwoX2UsR24pfDApKTw8MTMpfDA7Rz0oKEk9'@; put 'SStNYXRoLmltdWwoX2UseW4pfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2MyxEPU1hdGguaW11bChndCx0cikscD0ocD1NYXRoLmltdWwoZ3QsSG4pKStNYXRoLmltdWwoWHQsdHIpfDAsST1NYXRoLmltdWwoWHQsSG4pLEQ9RCtNYXRoLmltdWwoUnQsdXIpfDAscD0o'@; put 'cD1wK01hdGguaW11bChSdCxabil8MCkrTWF0aC5pbXVsKEx0LHVyKXwwLEk9SStNYXRoLmltdWwoTHQsWm4pfDAsRD1EK01hdGguaW11bCh0dCx4cil8MCxwPShwPXArTWF0aC5pbXVsKHR0LFR0KXwwKStNYXRoLmltdWwoS2UseHIpfDAsST1JK01hdGguaW11bChLZSxUdCl8MCxEPUQrTWF0'@; put 'aC5pbXVsKGhlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsWnQpfDApK01hdGguaW11bCh3ZSxfbil8MCxJPUkrTWF0aC5pbXVsKHdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoRmUscHQpfDAscD0ocD1wK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKGdlLHB0KXwwLEk9SStNYXRoLmlt'@; put 'dWwoZ2UscG4pfDAsRD1EK01hdGguaW11bChqZSxHZSl8MCxwPShwPXArTWF0aC5pbXVsKGplLFV0KXwwKStNYXRoLmltdWwoQWUsR2UpfDAsST1JK01hdGguaW11bChBZSxVdCl8MCxEPUQrTWF0aC5pbXVsKFJlLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsQnQpfDApK01hdGguaW11bChh'@; put 'ZSx4dCl8MCxJPUkrTWF0aC5pbXVsKGFlLEJ0KXwwLEQ9RCtNYXRoLmltdWwob3QsR24pfDAscD0ocD1wK01hdGguaW11bChvdCx5bil8MCkrTWF0aC5pbXVsKGx0LEduKXwwLEk9SStNYXRoLmltdWwobHQseW4pfDA7dmFyIE1hPShHKyhEPUQrTWF0aC5pbXVsKG5lLHJyKXwwKXwwKSsoKDgx'@; put 'OTEmKHA9KHA9cCtNYXRoLmltdWwobmUsaHIpfDApK01hdGguaW11bChfZSxycil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxocil8MCkrKHA+Pj4xMyl8MCkrKE1hPj4+MjYpfDAsTWEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHRyKSxwPShwPU1hdGguaW11bChsbixIbikp'@; put 'K01hdGguaW11bChPbix0cil8MCxJPU1hdGguaW11bChPbixIbiksRD1EK01hdGguaW11bChndCx1cil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFpuKXwwKStNYXRoLmltdWwoWHQsdXIpfDAsST1JK01hdGguaW11bChYdCxabil8MCxEPUQrTWF0aC5pbXVsKFJ0LHhyKXwwLHA9KHA9cCtNYXRo'@; put 'LmltdWwoUnQsVHQpfDApK01hdGguaW11bChMdCx4cil8MCxJPUkrTWF0aC5pbXVsKEx0LFR0KXwwLEQ9RCtNYXRoLmltdWwodHQsX24pfDAscD0ocD1wK01hdGguaW11bCh0dCxadCl8MCkrTWF0aC5pbXVsKEtlLF9uKXwwLEk9SStNYXRoLmltdWwoS2UsWnQpfDAsRD1EK01hdGguaW11bCho'@; put 'ZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsST1JK01hdGguaW11bCh3ZSxwbil8MCxEPUQrTWF0aC5pbXVsKEZlLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVXQpfDApK01hdGguaW11bChnZSxHZSl8MCxJPUkrTWF0aC5pbXVsKGdlLFV0'@; put 'KXwwLEQ9RCtNYXRoLmltdWwoamUseHQpfDAscD0ocD1wK01hdGguaW11bChqZSxCdCl8MCkrTWF0aC5pbXVsKEFlLHh0KXwwLEk9SStNYXRoLmltdWwoQWUsQnQpfDAsRD1EK01hdGguaW11bChSZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKFJlLHluKXwwKStNYXRoLmltdWwoYWUsR24pfDAs'@; put 'ST1JK01hdGguaW11bChhZSx5bil8MCxEPUQrTWF0aC5pbXVsKG90LHJyKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsaHIpfDApK01hdGguaW11bChsdCxycil8MCxJPUkrTWF0aC5pbXVsKGx0LGhyKXwwO3ZhciBrcz0oRysoRD1EK01hdGguaW11bChuZSx2bil8MCl8MCkrKCg4MTkxJihwPShw'@; put 'PXArTWF0aC5pbXVsKG5lLEJuKXwwKStNYXRoLmltdWwoX2Usdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQm4pfDApKyhwPj4+MTMpfDApKyhrcz4+PjI2KXwwLGtzJj02NzEwODg2MyxEPU1hdGguaW11bChsbix1cikscD0ocD1NYXRoLmltdWwobG4sWm4pKStNYXRoLmlt'@; put 'dWwoT24sdXIpfDAsST1NYXRoLmltdWwoT24sWm4pLEQ9RCtNYXRoLmltdWwoZ3QseHIpfDAscD0ocD1wK01hdGguaW11bChndCxUdCl8MCkrTWF0aC5pbXVsKFh0LHhyKXwwLEk9SStNYXRoLmltdWwoWHQsVHQpfDAsRD1EK01hdGguaW11bChSdCxfbil8MCxwPShwPXArTWF0aC5pbXVsKFJ0'@; put 'LFp0KXwwKStNYXRoLmltdWwoTHQsX24pfDAsST1JK01hdGguaW11bChMdCxadCl8MCxEPUQrTWF0aC5pbXVsKHR0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQscG4pfDApK01hdGguaW11bChLZSxwdCl8MCxJPUkrTWF0aC5pbXVsKEtlLHBuKXwwLEQ9RCtNYXRoLmltdWwoaGUsR2UpfDAs'@; put 'cD0ocD1wK01hdGguaW11bChoZSxVdCl8MCkrTWF0aC5pbXVsKHdlLEdlKXwwLEk9SStNYXRoLmltdWwod2UsVXQpfDAsRD1EK01hdGguaW11bChGZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEJ0KXwwKStNYXRoLmltdWwoZ2UseHQpfDAsST1JK01hdGguaW11bChnZSxCdCl8MCxEPUQr'@; put 'TWF0aC5pbXVsKGplLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoamUseW4pfDApK01hdGguaW11bChBZSxHbil8MCxJPUkrTWF0aC5pbXVsKEFlLHluKXwwLEQ9RCtNYXRoLmltdWwoUmUscnIpfDAscD0ocD1wK01hdGguaW11bChSZSxocil8MCkrTWF0aC5pbXVsKGFlLHJyKXwwLEk9SStNYXRo'@; put 'LmltdWwoYWUsaHIpfDA7dmFyIEJpPShHKyhEPUQrTWF0aC5pbXVsKG90LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwob3QsQm4pfDApK01hdGguaW11bChsdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChsdCxCbil8MCkrKHA+Pj4xMyl8MCkrKEJpPj4+MjYp'@; put 'fDAsQmkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHhyKSxwPShwPU1hdGguaW11bChsbixUdCkpK01hdGguaW11bChPbix4cil8MCxJPU1hdGguaW11bChPbixUdCksRD1EK01hdGguaW11bChndCxfbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFp0KXwwKStNYXRoLmltdWwoWHQsX24pfDAs'@; put 'ST1JK01hdGguaW11bChYdCxadCl8MCxEPUQrTWF0aC5pbXVsKFJ0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoUnQscG4pfDApK01hdGguaW11bChMdCxwdCl8MCxJPUkrTWF0aC5pbXVsKEx0LHBuKXwwLEQ9RCtNYXRoLmltdWwodHQsR2UpfDAscD0ocD1wK01hdGguaW11bCh0dCxVdCl8MCkr'@; put 'TWF0aC5pbXVsKEtlLEdlKXwwLEk9SStNYXRoLmltdWwoS2UsVXQpfDAsRD1EK01hdGguaW11bChoZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLEJ0KXwwKStNYXRoLmltdWwod2UseHQpfDAsST1JK01hdGguaW11bCh3ZSxCdCl8MCxEPUQrTWF0aC5pbXVsKEZlLEduKXwwLHA9KHA9cCtN'@; put 'YXRoLmltdWwoRmUseW4pfDApK01hdGguaW11bChnZSxHbil8MCxJPUkrTWF0aC5pbXVsKGdlLHluKXwwLEQ9RCtNYXRoLmltdWwoamUscnIpfDAscD0ocD1wK01hdGguaW11bChqZSxocil8MCkrTWF0aC5pbXVsKEFlLHJyKXwwLEk9SStNYXRoLmltdWwoQWUsaHIpfDA7dmFyIHRhPShHKyhE'@; put 'PUQrTWF0aC5pbXVsKFJlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoUmUsQm4pfDApK01hdGguaW11bChhZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChhZSxCbil8MCkrKHA+Pj4xMyl8MCkrKHRhPj4+MjYpfDAsdGEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVs'@; put 'KGxuLF9uKSxwPShwPU1hdGguaW11bChsbixadCkpK01hdGguaW11bChPbixfbil8MCxJPU1hdGguaW11bChPbixadCksRD1EK01hdGguaW11bChndCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LHBuKXwwKStNYXRoLmltdWwoWHQscHQpfDAsST1JK01hdGguaW11bChYdCxwbil8MCxEPUQr'@; put 'TWF0aC5pbXVsKFJ0LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVXQpfDApK01hdGguaW11bChMdCxHZSl8MCxJPUkrTWF0aC5pbXVsKEx0LFV0KXwwLEQ9RCtNYXRoLmltdWwodHQseHQpfDAscD0ocD1wK01hdGguaW11bCh0dCxCdCl8MCkrTWF0aC5pbXVsKEtlLHh0KXwwLEk9SStNYXRo'@; put 'LmltdWwoS2UsQnQpfDAsRD1EK01hdGguaW11bChoZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKGhlLHluKXwwKStNYXRoLmltdWwod2UsR24pfDAsST1JK01hdGguaW11bCh3ZSx5bil8MCxEPUQrTWF0aC5pbXVsKEZlLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsaHIpfDApK01hdGguaW11'@; put 'bChnZSxycil8MCxJPUkrTWF0aC5pbXVsKGdlLGhyKXwwO3ZhciBNcj0oRysoRD1EK01hdGguaW11bChqZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGplLEJuKXwwKStNYXRoLmltdWwoQWUsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoQWUsQm4pfDApKyhw'@; put 'Pj4+MTMpfDApKyhNcj4+PjI2KXwwLE1yJj02NzEwODg2MyxEPU1hdGguaW11bChsbixwdCkscD0ocD1NYXRoLmltdWwobG4scG4pKStNYXRoLmltdWwoT24scHQpfDAsST1NYXRoLmltdWwoT24scG4pLEQ9RCtNYXRoLmltdWwoZ3QsR2UpfDAscD0ocD1wK01hdGguaW11bChndCxVdCl8MCkr'@; put 'TWF0aC5pbXVsKFh0LEdlKXwwLEk9SStNYXRoLmltdWwoWHQsVXQpfDAsRD1EK01hdGguaW11bChSdCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKFJ0LEJ0KXwwKStNYXRoLmltdWwoTHQseHQpfDAsST1JK01hdGguaW11bChMdCxCdCl8MCxEPUQrTWF0aC5pbXVsKHR0LEduKXwwLHA9KHA9cCtN'@; put 'YXRoLmltdWwodHQseW4pfDApK01hdGguaW11bChLZSxHbil8MCxJPUkrTWF0aC5pbXVsKEtlLHluKXwwLEQ9RCtNYXRoLmltdWwoaGUscnIpfDAscD0ocD1wK01hdGguaW11bChoZSxocil8MCkrTWF0aC5pbXVsKHdlLHJyKXwwLEk9SStNYXRoLmltdWwod2UsaHIpfDA7dmFyIEZzPShHKyhE'@; put 'PUQrTWF0aC5pbXVsKEZlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUsQm4pfDApK01hdGguaW11bChnZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChnZSxCbil8MCkrKHA+Pj4xMyl8MCkrKEZzPj4+MjYpfDAsRnMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVs'@; put 'KGxuLEdlKSxwPShwPU1hdGguaW11bChsbixVdCkpK01hdGguaW11bChPbixHZSl8MCxJPU1hdGguaW11bChPbixVdCksRD1EK01hdGguaW11bChndCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LEJ0KXwwKStNYXRoLmltdWwoWHQseHQpfDAsST1JK01hdGguaW11bChYdCxCdCl8MCxEPUQr'@; put 'TWF0aC5pbXVsKFJ0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQseW4pfDApK01hdGguaW11bChMdCxHbil8MCxJPUkrTWF0aC5pbXVsKEx0LHluKXwwLEQ9RCtNYXRoLmltdWwodHQscnIpfDAscD0ocD1wK01hdGguaW11bCh0dCxocil8MCkrTWF0aC5pbXVsKEtlLHJyKXwwLEk9SStNYXRo'@; put 'LmltdWwoS2UsaHIpfDA7dmFyICRpPShHKyhEPUQrTWF0aC5pbXVsKGhlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoaGUsQm4pfDApK01hdGguaW11bCh3ZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bCh3ZSxCbil8MCkrKHA+Pj4xMyl8MCkrKCRpPj4+MjYp'@; put 'fDAsJGkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHh0KSxwPShwPU1hdGguaW11bChsbixCdCkpK01hdGguaW11bChPbix4dCl8MCxJPU1hdGguaW11bChPbixCdCksRD1EK01hdGguaW11bChndCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LHluKXwwKStNYXRoLmltdWwoWHQsR24pfDAs'@; put 'ST1JK01hdGguaW11bChYdCx5bil8MCxEPUQrTWF0aC5pbXVsKFJ0LHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsaHIpfDApK01hdGguaW11bChMdCxycil8MCxJPUkrTWF0aC5pbXVsKEx0LGhyKXwwO3ZhciBfcz0oRysoRD1EK01hdGguaW11bCh0dCx2bil8MCl8MCkrKCg4MTkxJihwPShw'@; put 'PXArTWF0aC5pbXVsKHR0LEJuKXwwKStNYXRoLmltdWwoS2Usdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoS2UsQm4pfDApKyhwPj4+MTMpfDApKyhfcz4+PjI2KXwwLF9zJj02NzEwODg2MyxEPU1hdGguaW11bChsbixHbikscD0ocD1NYXRoLmltdWwobG4seW4pKStNYXRoLmlt'@; put 'dWwoT24sR24pfDAsST1NYXRoLmltdWwoT24seW4pLEQ9RCtNYXRoLmltdWwoZ3QscnIpfDAscD0ocD1wK01hdGguaW11bChndCxocil8MCkrTWF0aC5pbXVsKFh0LHJyKXwwLEk9SStNYXRoLmltdWwoWHQsaHIpfDA7dmFyIGpzPShHKyhEPUQrTWF0aC5pbXVsKFJ0LHZuKXwwKXwwKSsoKDgx'@; put 'OTEmKHA9KHA9cCtNYXRoLmltdWwoUnQsQm4pfDApK01hdGguaW11bChMdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChMdCxCbil8MCkrKHA+Pj4xMyl8MCkrKGpzPj4+MjYpfDAsanMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHJyKSxwPShwPU1hdGguaW11bChsbixocikp'@; put 'K01hdGguaW11bChPbixycil8MCxJPU1hdGguaW11bChPbixocik7dmFyIENsPShHKyhEPUQrTWF0aC5pbXVsKGd0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoZ3QsQm4pfDApK01hdGguaW11bChYdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChYdCxCbil8'@; put 'MCkrKHA+Pj4xMyl8MCkrKENsPj4+MjYpfDAsQ2wmPTY3MTA4ODYzO3ZhciBUaT0oRysoRD1NYXRoLmltdWwobG4sdm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKGxuLEJuKSkrTWF0aC5pbXVsKE9uLHZuKXwwKSk8PDEzKXwwO3JldHVybiBHPSgoST1NYXRoLmltdWwoT24sQm4pKSso'@; put 'cD4+PjEzKXwwKSsoVGk+Pj4yNil8MCxUaSY9NjcxMDg4NjMsS1swXT1qYSxLWzFdPWpvLEtbMl09WHIsS1szXT1lYSxLWzRdPXJhLEtbNV09Y2EsS1s2XT1DaSxLWzddPWhvLEtbOF09TWEsS1s5XT1rcyxLWzEwXT1CaSxLWzExXT10YSxLWzEyXT1NcixLWzEzXT1GcyxLWzE0XT0kaSxLWzE1'@; put 'XT1fcyxLWzE2XT1qcyxLWzE3XT1DbCxLWzE4XT1UaSwwIT09RyYmKEtbMTldPUcsay5sZW5ndGgrKyksa307ZnVuY3Rpb24gWShYLGYsYil7cmV0dXJuKG5ldyBGKS5tdWxwKFgsZixiKX1mdW5jdGlvbiBGKFgsZil7dGhpcy54PVgsdGhpcy55PWZ9TWF0aC5pbXVsfHwoTj1WKSx2LnByb3Rv'@; put 'dHlwZS5tdWxUbz1mdW5jdGlvbihmLGIpe3ZhciBrLE09dGhpcy5sZW5ndGgrZi5sZW5ndGg7cmV0dXJuIGs9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1mLmxlbmd0aD9OKHRoaXMsZixiKTpNPDYzP1YodGhpcyxmLGIpOk08MTAyND9mdW5jdGlvbiB6KFgsZixiKXtiLm5lZ2F0aXZlPWYubmVn'@; put 'YXRpdmVeWC5uZWdhdGl2ZSxiLmxlbmd0aD1YLmxlbmd0aCtmLmxlbmd0aDtmb3IodmFyIGs9MCxNPTAsQj0wO0I8Yi5sZW5ndGgtMTtCKyspe3ZhciBLPU07TT0wO2Zvcih2YXIgRz02NzEwODg2MyZrLEQ9TWF0aC5taW4oQixmLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsQi1YLmxlbmd0aCsx'@; put 'KTtwPD1EO3ArKyl7dmFyIF9lPSgwfFgud29yZHNbQi1wXSkqKDB8Zi53b3Jkc1twXSksUGU9NjcxMDg4NjMmX2U7Rz02NzEwODg2MyYoUGU9UGUrR3wwKSxNKz0oSz0oSz1LKyhfZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixLJj02NzEwODg2M31iLndvcmRzW0JdPUcsaz1L'@; put 'LEs9TX1yZXR1cm4gMCE9PWs/Yi53b3Jkc1tCXT1rOmIubGVuZ3RoLS0sYi5zdHJpcCgpfSh0aGlzLGYsYik6WSh0aGlzLGYsYiksa30sRi5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihmKXtmb3IodmFyIGI9bmV3IEFycmF5KGYpLGs9di5wcm90b3R5cGUuX2NvdW50Qml0cyhmKS0xLE09'@; put 'MDtNPGY7TSsrKWJbTV09dGhpcy5yZXZCaW4oTSxrLGYpO3JldHVybiBifSxGLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oZixiLGspe2lmKDA9PT1mfHxmPT09ay0xKXJldHVybiBmO2Zvcih2YXIgTT0wLEI9MDtCPGI7QisrKU18PSgxJmYpPDxiLUItMSxmPj49MTtyZXR1cm4gTX0sRi5w'@; put 'cm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihmLGIsayxNLEIsSyl7Zm9yKHZhciBHPTA7RzxLO0crKylNW0ddPWJbZltHXV0sQltHXT1rW2ZbR11dfSxGLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZixiLGssTSxCLEspe3RoaXMucGVybXV0ZShLLGYsYixrLE0sQik7Zm9yKHZhciBH'@; put 'PTE7RzxCO0c8PD0xKWZvcih2YXIgRD1HPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJL0QpLEk9TWF0aC5zaW4oMipNYXRoLlBJL0QpLHVlPTA7dWU8Qjt1ZSs9RClmb3IodmFyIG5lPXAsX2U9SSxQZT0wO1BlPEc7UGUrKyl7dmFyIG90PWtbdWUrUGVdLGx0PU1bdWUrUGVdLGR0PWtbdWUrUGUr'@; put 'R10sUmU9TVt1ZStQZStHXSxhZT1uZSpkdC1fZSpSZTtSZT1uZSpSZStfZSpkdCxrW3VlK1BlXT1vdCsoZHQ9YWUpLE1bdWUrUGVdPWx0K1JlLGtbdWUrUGUrR109b3QtZHQsTVt1ZStQZStHXT1sdC1SZSxQZSE9PUQmJihhZT1wKm5lLUkqX2UsX2U9cCpfZStJKm5lLG5lPWFlKX19LEYucHJv'@; put 'dG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGYsYil7dmFyIGs9MXxNYXRoLm1heChiLGYpLE09MSZrLEI9MDtmb3Ioaz1rLzJ8MDtrO2s+Pj49MSlCKys7cmV0dXJuIDE8PEIrMStNfSxGLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oZixiLGspe2lmKCEoazw9MSkpZm9yKHZhciBN'@; put 'PTA7TTxrLzI7TSsrKXt2YXIgQj1mW01dO2ZbTV09ZltrLU0tMV0sZltrLU0tMV09QixCPWJbTV0sYltNXT0tYltrLU0tMV0sYltrLU0tMV09LUJ9fSxGLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oZixiKXtmb3IodmFyIGs9MCxNPTA7TTxiLzI7TSsrKXt2YXIgQj04MTkyKk1h'@; put 'dGgucm91bmQoZlsyKk0rMV0vYikrTWF0aC5yb3VuZChmWzIqTV0vYikraztmW01dPTY3MTA4ODYzJkIsaz1CPDY3MTA4ODY0PzA6Qi82NzEwODg2NHwwfXJldHVybiBmfSxGLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGYsYixrLE0pe2Zvcih2YXIgQj0wLEs9MDtLPGI7SysrKWtb'@; put 'MipLXT04MTkxJihCKz0wfGZbS10pLGtbMipLKzFdPTgxOTEmKEI+Pj49MTMpLEI+Pj49MTM7Zm9yKEs9MipiO0s8TTsrK0spa1tLXT0wO3MoMD09PUIpLHMoISgtODE5MiZCKSl9LEYucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZil7Zm9yKHZhciBiPW5ldyBBcnJheShmKSxrPTA7azxmO2sr'@; put 'KyliW2tdPTA7cmV0dXJuIGJ9LEYucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oZixiLGspe3ZhciBNPTIqdGhpcy5ndWVzc0xlbjEzYihmLmxlbmd0aCxiLmxlbmd0aCksQj10aGlzLm1ha2VSQlQoTSksSz10aGlzLnN0dWIoTSksRz1uZXcgQXJyYXkoTSksRD1uZXcgQXJyYXkoTSkscD1uZXcg'@; put 'QXJyYXkoTSksST1uZXcgQXJyYXkoTSksdWU9bmV3IEFycmF5KE0pLG5lPW5ldyBBcnJheShNKSxfZT1rLndvcmRzO19lLmxlbmd0aD1NLHRoaXMuY29udmVydDEzYihmLndvcmRzLGYubGVuZ3RoLEcsTSksdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsSSxNKSx0aGlzLnRyYW5z'@; put 'Zm9ybShHLEssRCxwLE0sQiksdGhpcy50cmFuc2Zvcm0oSSxLLHVlLG5lLE0sQik7Zm9yKHZhciBQZT0wO1BlPE07UGUrKyl7dmFyIG90PURbUGVdKnVlW1BlXS1wW1BlXSpuZVtQZV07cFtQZV09RFtQZV0qbmVbUGVdK3BbUGVdKnVlW1BlXSxEW1BlXT1vdH1yZXR1cm4gdGhpcy5jb25qdWdh'@; put 'dGUoRCxwLE0pLHRoaXMudHJhbnNmb3JtKEQscCxfZSxLLE0sQiksdGhpcy5jb25qdWdhdGUoX2UsSyxNKSx0aGlzLm5vcm1hbGl6ZTEzYihfZSxNKSxrLm5lZ2F0aXZlPWYubmVnYXRpdmVeYi5uZWdhdGl2ZSxrLmxlbmd0aD1mLmxlbmd0aCtiLmxlbmd0aCxrLnN0cmlwKCl9LHYucHJvdG90'@; put 'eXBlLm11bD1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4gYi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLHRoaXMubXVsVG8oZixiKX0sdi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4gYi53b3Jkcz1u'@; put 'ZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLFkodGhpcyxmLGIpfSx2LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZix0aGlzKX0sdi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYpLHMoZjw2'@; put 'NzEwODg2NCk7Zm9yKHZhciBiPTAsaz0wO2s8dGhpcy5sZW5ndGg7aysrKXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSpmLEI9KDY3MTA4ODYzJk0pKyg2NzEwODg2MyZiKTtiPj49MjYsYis9TS82NzEwODg2NHwwLGIrPUI+Pj4yNix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJkJ9cmV0dXJuIDAh'@; put 'PT1iJiYodGhpcy53b3Jkc1trXT1iLHRoaXMubGVuZ3RoKyspLDA9PT1mJiYodGhpcy5sZW5ndGg9MSx0aGlzLl9ub3JtU2lnbigpKSx0aGlzfSx2LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZil9LHYucHJvdG90eXBlLnNxcj1mdW5jdGlv'@; put 'bigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sdi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sdi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGYpe3ZhciBiPWZ1bmN0aW9uIEgoWCl7Zm9yKHZhciBmPW5ldyBBcnJheShYLmJpdExlbmd0'@; put 'aCgpKSxiPTA7YjxmLmxlbmd0aDtiKyspe3ZhciBNPWIlMjY7ZltiXT0oWC53b3Jkc1tiLzI2fDBdJjE8PE0pPj4+TX1yZXR1cm4gZn0oZik7aWYoMD09PWIubGVuZ3RoKXJldHVybiBuZXcgdigxKTtmb3IodmFyIGs9dGhpcyxNPTA7TTxiLmxlbmd0aCYmMD09PWJbTV07TSsrLGs9ay5zcXIo'@; put 'KSk7aWYoKytNPGIubGVuZ3RoKWZvcih2YXIgQj1rLnNxcigpO008Yi5sZW5ndGg7TSsrLEI9Qi5zcXIoKSkwIT09YltNXSYmKGs9ay5tdWwoQikpO3JldHVybiBrfSx2LnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBCLGI9ZiUy'@; put 'NixrPShmLWIpLzI2LE09NjcxMDg4NjM+Pj4yNi1iPDwyNi1iO2lmKDAhPT1iKXt2YXIgSz0wO2ZvcihCPTA7Qjx0aGlzLmxlbmd0aDtCKyspe3ZhciBHPXRoaXMud29yZHNbQl0mTTt0aGlzLndvcmRzW0JdPSgwfHRoaXMud29yZHNbQl0pLUc8PGJ8SyxLPUc+Pj4yNi1ifUsmJih0aGlzLndv'@; put 'cmRzW0JdPUssdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWspe2ZvcihCPXRoaXMubGVuZ3RoLTE7Qj49MDtCLS0pdGhpcy53b3Jkc1tCK2tdPXRoaXMud29yZHNbQl07Zm9yKEI9MDtCPGs7QisrKXRoaXMud29yZHNbQl09MDt0aGlzLmxlbmd0aCs9a31yZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnBy'@; put 'b3RvdHlwZS5pc2hsbj1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oZil9LHYucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihmLGIsayl7dmFyIE07cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApLE09Yj8oYi1iJTI2KS8yNjowO3ZhciBCPWYl'@; put 'MjYsSz1NYXRoLm1pbigoZi1CKS8yNix0aGlzLmxlbmd0aCksRz02NzEwODg2M142NzEwODg2Mz4+PkI8PEIsRD1rO2lmKE0tPUssTT1NYXRoLm1heCgwLE0pLEQpe2Zvcih2YXIgcD0wO3A8SztwKyspRC53b3Jkc1twXT10aGlzLndvcmRzW3BdO0QubGVuZ3RoPUt9aWYoMCE9PUspaWYodGhp'@; put 'cy5sZW5ndGg+Sylmb3IodGhpcy5sZW5ndGgtPUsscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1twK0tdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEk9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09SXx8cD49TSk7'@; put 'cC0tKXt2YXIgdWU9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09STw8MjYtQnx1ZT4+PkIsST11ZSZHfXJldHVybiBEJiYwIT09SSYmKEQud29yZHNbRC5sZW5ndGgrK109SSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAo'@; put 'KX0sdi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZixiLGspe3JldHVybiBzKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihmLGIsayl9LHYucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihmKX0sdi5wcm90b3R5cGUudXNobG49ZnVu'@; put 'Y3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZil9LHYucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihmKX0sdi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZil9LHYucHJv'@; put 'dG90eXBlLnRlc3RuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9a3x8ISh0aGlzLndvcmRzW2tdJjE8PGIpKX0sdi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9'@; put 'PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0dXJuIHMoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAhPT1iJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0'@; put 'aGlzLmxlbmd0aCksMCE9PWImJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PmI8PGIpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCkpfSx2LnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihm'@; put 'KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihmKX0sdi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oZil7cmV0dXJuIHMoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MD90aGlzLmlzdWJuKC1mKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRo'@; put 'aXMud29yZHNbMF0pPGY/KHRoaXMud29yZHNbMF09Zi0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihmKX0sdi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0'@; put 'aW9uKGYpe3RoaXMud29yZHNbMF0rPWY7Zm9yKHZhciBiPTA7Yjx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tiXT49NjcxMDg4NjQ7YisrKXRoaXMud29yZHNbYl0tPTY3MTA4ODY0LGI9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbYisxXT0xOnRoaXMud29yZHNbYisxXSsrO3JldHVybiB0'@; put 'aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxiKzEpLHRoaXN9LHYucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGYpe2lmKHMoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MClyZXR1cm4gdGhpcy5pYWRkbigtZik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJu'@; put 'IHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWYsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGI9'@; put 'MDtiPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2JdPDA7YisrKXRoaXMud29yZHNbYl0rPTY3MTA4ODY0LHRoaXMud29yZHNbYisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oZil9LHYucHJv'@; put 'dG90eXBlLnN1Ym49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihmKX0sdi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sdi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9'@; put 'LHYucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihmLGIsayl7dmFyIEI7dGhpcy5fZXhwYW5kKGYubGVuZ3RoK2spO3ZhciBLLEc9MDtmb3IoQj0wO0I8Zi5sZW5ndGg7QisrKXtLPSgwfHRoaXMud29yZHNbQitrXSkrRzt2YXIgRD0oMHxmLndvcmRzW0JdKSpiO0c9KChLLT02NzEw'@; put 'ODg2MyZEKT4+MjYpLShELzY3MTA4ODY0fDApLHRoaXMud29yZHNbQitrXT02NzEwODg2MyZLfWZvcig7Qjx0aGlzLmxlbmd0aC1rO0IrKylHPShLPSgwfHRoaXMud29yZHNbQitrXSkrRyk+PjI2LHRoaXMud29yZHNbQitrXT02NzEwODg2MyZLO2lmKDA9PT1HKXJldHVybiB0aGlzLnN0cmlw'@; put 'KCk7Zm9yKHMoLTE9PT1HKSxHPTAsQj0wO0I8dGhpcy5sZW5ndGg7QisrKUc9KEs9LSgwfHRoaXMud29yZHNbQl0pK0cpPj4yNix0aGlzLndvcmRzW0JdPTY3MTA4ODYzJks7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9u'@; put 'KGYsYil7dmFyIGssTT10aGlzLmNsb25lKCksQj1mLEs9MHxCLndvcmRzW0IubGVuZ3RoLTFdOzAhPShrPTI2LXRoaXMuX2NvdW50Qml0cyhLKSkmJihCPUIudXNobG4oayksTS5pdXNobG4oayksSz0wfEIud29yZHNbQi5sZW5ndGgtMV0pO3ZhciBwLEQ9TS5sZW5ndGgtQi5sZW5ndGg7aWYo'@; put 'Im1vZCIhPT1iKXsocD1uZXcgdihudWxsKSkubGVuZ3RoPUQrMSxwLndvcmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBJPTA7STxwLmxlbmd0aDtJKyspcC53b3Jkc1tJXT0wfXZhciB1ZT1NLmNsb25lKCkuX2lzaGxuc3VibXVsKEIsMSxEKTswPT09dWUubmVnYXRpdmUmJihNPXVl'@; put 'LHAmJihwLndvcmRzW0RdPTEpKTtmb3IodmFyIG5lPUQtMTtuZT49MDtuZS0tKXt2YXIgX2U9NjcxMDg4NjQqKDB8TS53b3Jkc1tCLmxlbmd0aCtuZV0pKygwfE0ud29yZHNbQi5sZW5ndGgrbmUtMV0pO2ZvcihfZT1NYXRoLm1pbihfZS9LfDAsNjcxMDg4NjMpLE0uX2lzaGxuc3VibXVsKEIs'@; put 'X2UsbmUpOzAhPT1NLm5lZ2F0aXZlOylfZS0tLE0ubmVnYXRpdmU9MCxNLl9pc2hsbnN1Ym11bChCLDEsbmUpLE0uaXNaZXJvKCl8fChNLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tuZV09X2UpfXJldHVybiBwJiZwLnN0cmlwKCksTS5zdHJpcCgpLCJkaXYiIT09YiYmMCE9PWsmJk0uaXVz'@; put 'aHJuKGspLHtkaXY6cHx8bnVsbCxtb2Q6TX19LHYucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihmLGIsayl7cmV0dXJuIHMoIWYuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgdigwKSxtb2Q6bmV3IHYoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZT8oSz10'@; put 'aGlzLm5lZygpLmRpdm1vZChmLGIpLCJtb2QiIT09YiYmKE09Sy5kaXYubmVnKCkpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRpdmUmJkIuaWFkZChmKSkse2RpdjpNLG1vZDpCfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1mLm5lZ2F0aXZlPyhLPXRoaXMuZGl2'@; put 'bW9kKGYubmVnKCksYiksIm1vZCIhPT1iJiYoTT1LLmRpdi5uZWcoKSkse2RpdjpNLG1vZDpLLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZmLm5lZ2F0aXZlKT8oSz10aGlzLm5lZygpLmRpdm1vZChmLm5lZygpLGIpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRp'@; put 'dmUmJkIuaXN1YihmKSkse2RpdjpLLmRpdixtb2Q6Qn0pOmYubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChmKTwwP3tkaXY6bmV3IHYoMCksbW9kOnRoaXN9OjE9PT1mLmxlbmd0aD8iZGl2Ij09PWI/e2Rpdjp0aGlzLmRpdm4oZi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09Yj97'@; put 'ZGl2Om51bGwsbW9kOm5ldyB2KHRoaXMubW9kbihmLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGYud29yZHNbMF0pLG1vZDpuZXcgdih0aGlzLm1vZG4oZi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGYsYik7dmFyIE0sQixLfSx2LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oZil7cmV0'@; put 'dXJuIHRoaXMuZGl2bW9kKGYsImRpdiIsITEpLmRpdn0sdi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmRpdm1vZChmLCJtb2QiLCExKS5tb2R9LHYucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsIm1vZCIsITApLm1vZH0sdi5w'@; put 'cm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oZil7dmFyIGI9dGhpcy5kaXZtb2QoZik7aWYoYi5tb2QuaXNaZXJvKCkpcmV0dXJuIGIuZGl2O3ZhciBrPWIubW9kLmFicygpLE09Zi5hYnMoKS5pdXNocm4oMSksQj0xJmYud29yZHNbMF0sSz1rLmNtcChNKTtpZihLPDB8fDE9PT1CJiYwPT09'@; put 'SylyZXR1cm4gYi5kaXY7dmFyIEc9bmV3IHYoMSk7cmV0dXJuIEcubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZV5mLm5lZ2F0aXZlLGIuZGl2LmlhZGQoRyl9LHYucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPSgxPDwyNiklZixrPTAsTT10aGlzLmxl'@; put 'bmd0aC0xO00+PTA7TS0tKWs9KGIqaysoMHx0aGlzLndvcmRzW01dKSklZjtyZXR1cm4ga30sdi5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSs2NzEw'@; put 'ODg2NCpiO3RoaXMud29yZHNba109TS9mfDAsYj1NJWZ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGYpfSx2LnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUpLHMoIWYu'@; put 'aXNaZXJvKCkpO3ZhciBiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5uZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9bmV3IHYoMCksRz1uZXcgdigxKSxEPTA7Yi5pc0V2ZW4oKSYmay5pc0V2ZW4oKTspYi5pdXNocm4oMSksay5p'@; put 'dXNocm4oMSksKytEO2Zvcih2YXIgcD1rLmNsb25lKCksST1iLmNsb25lKCk7IWIuaXNaZXJvKCk7KXtmb3IodmFyIHVlPTAsbmU9MTswPT09KGIud29yZHNbMF0mbmUpJiZ1ZTwyNjsrK3VlLG5lPDw9MSk7aWYodWU+MClmb3IoYi5pdXNocm4odWUpO3VlLS0gPjA7KShNLmlzT2RkKCl8fEIu'@; put 'aXNPZGQoKSkmJihNLmlhZGQocCksQi5pc3ViKEkpKSxNLml1c2hybigxKSxCLml1c2hybigxKTtmb3IodmFyIF9lPTAsUGU9MTswPT09KGsud29yZHNbMF0mUGUpJiZfZTwyNjsrK19lLFBlPDw9MSk7aWYoX2U+MClmb3Ioay5pdXNocm4oX2UpO19lLS0gPjA7KShLLmlzT2RkKCl8fEcuaXNP'@; put 'ZGQoKSkmJihLLmlhZGQocCksRy5pc3ViKEkpKSxLLml1c2hybigxKSxHLml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihLKSxCLmlzdWIoRykpOihrLmlzdWIoYiksSy5pc3ViKE0pLEcuaXN1YihCKSl9cmV0dXJue2E6SyxiOkcsZ2NkOmsuaXVzaGxuKEQpfX0sdi5w'@; put 'cm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUpLHMoIWYuaXNaZXJvKCkpO3ZhciB1ZSxiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5uZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9ay5jbG9uZSgp'@; put 'O2IuY21wbigxKT4wJiZrLmNtcG4oMSk+MDspe2Zvcih2YXIgRz0wLEQ9MTswPT09KGIud29yZHNbMF0mRCkmJkc8MjY7KytHLEQ8PD0xKTtpZihHPjApZm9yKGIuaXVzaHJuKEcpO0ctLSA+MDspTS5pc09kZCgpJiZNLmlhZGQoSyksTS5pdXNocm4oMSk7Zm9yKHZhciBwPTAsST0xOzA9PT0o'@; put 'ay53b3Jkc1swXSZJKSYmcDwyNjsrK3AsSTw8PTEpO2lmKHA+MClmb3Ioay5pdXNocm4ocCk7cC0tID4wOylCLmlzT2RkKCkmJkIuaWFkZChLKSxCLml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihCKSk6KGsuaXN1YihiKSxCLmlzdWIoTSkpfXJldHVybih1ZT0wPT09'@; put 'Yi5jbXBuKDEpP006QikuY21wbigwKTwwJiZ1ZS5pYWRkKGYpLHVlfSx2LnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZi5hYnMoKTtpZihmLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBiPXRoaXMuY2xvbmUoKSxrPWYuY2xvbmUoKTti'@; put 'Lm5lZ2F0aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgTT0wO2IuaXNFdmVuKCkmJmsuaXNFdmVuKCk7TSsrKWIuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtiLmlzRXZlbigpOyliLml1c2hybigxKTtmb3IoO2suaXNFdmVuKCk7KWsuaXVzaHJuKDEpO3ZhciBCPWIuY21w'@; put 'KGspO2lmKEI8MCl7dmFyIEs9YjtiPWssaz1LfWVsc2UgaWYoMD09PUJ8fDA9PT1rLmNtcG4oMSkpYnJlYWs7Yi5pc3ViKGspfXJldHVybiBrLml1c2hsbihNKX0sdi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5lZ2NkKGYpLmEudW1vZChmKX0sdi5wcm90b3R5cGUu'@; put 'aXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSx2LnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LHYucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLndvcmRzWzBdJmZ9LHYucHJvdG90eXBl'@; put 'LmJpbmNuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmKTt2YXIgYj1mJTI2LGs9KGYtYikvMjYsTT0xPDxiO2lmKHRoaXMubGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1NLHRoaXM7Zm9yKHZhciBCPU0sSz1rOzAhPT1CJiZLPHRoaXMu'@; put 'bGVuZ3RoO0srKyl7dmFyIEc9MHx0aGlzLndvcmRzW0tdO0I9KEcrPUIpPj4+MjYsdGhpcy53b3Jkc1tLXT1HJj02NzEwODg2M31yZXR1cm4gMCE9PUImJih0aGlzLndvcmRzW0tdPUIsdGhpcy5sZW5ndGgrKyksdGhpc30sdi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9'@; put 'PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LHYucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oZil7dmFyIGssYj1mPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFiKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZiKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxl'@; put 'bmd0aD4xKWs9MTtlbHNle2ImJihmPS1mKSxzKGY8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBNPTB8dGhpcy53b3Jkc1swXTtrPU09PT1mPzA6TTxmPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LWs6a30sdi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGYpe2lm'@; put 'KDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGI9dGhpcy51Y21wKGYpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1iOmJ9LHYucHJvdG90eXBlLnVjbXA9ZnVuY3Rp'@; put 'b24oZil7aWYodGhpcy5sZW5ndGg+Zi5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Zi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0wfHRoaXMud29yZHNba10sQj0wfGYud29yZHNba107aWYoTSE9PUIpe008Qj9iPS0x'@; put 'Ok0+QiYmKGI9MSk7YnJlYWt9fXJldHVybiBifSx2LnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oZil7cmV0dXJuIDE9PT10aGlzLmNtcG4oZil9LHYucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGYpe3JldHVybiAxPT09dGhpcy5jbXAoZil9LHYucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZil7cmV0'@; put 'dXJuIHRoaXMuY21wbihmKT49MH0sdi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNtcChmKT49MH0sdi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGYpe3JldHVybi0xPT09dGhpcy5jbXBuKGYpfSx2LnByb3RvdHlwZS5sdD1mdW5jdGlvbihmKXtyZXR1cm4tMT09PXRo'@; put 'aXMuY21wKGYpfSx2LnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNtcG4oZik8PTB9LHYucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbXAoZik8PTB9LHYucHJvdG90eXBlLmVxbj1mdW5jdGlvbihmKXtyZXR1cm4gMD09PXRoaXMuY21wbihm'@; put 'KX0sdi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZil7cmV0dXJuIDA9PT10aGlzLmNtcChmKX0sdi5yZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBrZShmKX0sdi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVj'@; put 'dGlvbiBjb250ZXh0IikscygwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxmLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBv'@; put 'bmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSx2LnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucmVkPWYsdGhpc30sdi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJu'@; put 'IHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMu'@; put 'cmVkLmFkZCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGYpe3JldHVy'@; put 'biBzKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhp'@; put 'cy5yZWQuaXN1Yih0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGYpe3JldHVy'@; put 'biBzKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxmKSx0aGlzLnJlZC5tdWwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9u'@; put 'bHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZiksdGhpcy5yZWQuaW11bCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk'@; put 'Ll92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sdi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhp'@; put 'cyl9LHYucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSx2LnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHModGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sdi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZE5lZyB3b3Jr'@; put 'cyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LHYucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCYmIWYucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkx'@; put 'KHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGYpfTt2YXIgVz17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHEoWCxmKXt0aGlzLm5hbWU9WCx0aGlzLnA9bmV3IHYoZiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IHYo'@; put 'MSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIHJlKCl7cS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0'@; put 'aW9uIG1lKCl7cS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIENlKCl7cS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBm'@; put 'ZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7cS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGtlKFgpe2lmKCJzdHJpbmciPT10eXBlb2YgWCl7dmFy'@; put 'IGY9di5fcHJpbWUoWCk7dGhpcy5tPWYucCx0aGlzLnByaW1lPWZ9ZWxzZSBzKFguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09WCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gcWUoWCl7a2UuY2FsbCh0aGlzLFgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJp'@; put 'dExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IHYoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1p'@; put 'bnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9cS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiBm'@; put 'LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZn0scS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihmKXt2YXIgayxiPWY7ZG97dGhpcy5zcGxpdChiLHRoaXMudG1wKSxrPShiPShiPXRoaXMuaW11bEsoYikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGls'@; put 'ZShrPnRoaXMubik7dmFyIE09azx0aGlzLm4/LTE6Yi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1NPyhiLndvcmRzWzBdPTAsYi5sZW5ndGg9MSk6TT4wP2IuaXN1Yih0aGlzLnApOnZvaWQgMCE9PWIuc3RyaXA/Yi5zdHJpcCgpOmIuX3N0cmlwKCksYn0scS5wcm90b3R5cGUuc3BsaXQ9ZnVu'@; put 'Y3Rpb24oZixiKXtmLml1c2hybih0aGlzLm4sMCxiKX0scS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaW11bCh0aGlzLmspfSxBKHJlLHEpLHJlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihmLGIpe2Zvcih2YXIgaz00MTk0MzAzLE09TWF0aC5taW4oZi5sZW5ndGgs'@; put 'OSksQj0wO0I8TTtCKyspYi53b3Jkc1tCXT1mLndvcmRzW0JdO2lmKGIubGVuZ3RoPU0sZi5sZW5ndGg8PTkpcmV0dXJuIGYud29yZHNbMF09MCx2b2lkKGYubGVuZ3RoPTEpO3ZhciBLPWYud29yZHNbOV07Zm9yKGIud29yZHNbYi5sZW5ndGgrK109SyZrLEI9MTA7QjxmLmxlbmd0aDtCKysp'@; put 'e3ZhciBHPTB8Zi53b3Jkc1tCXTtmLndvcmRzW0ItMTBdPShHJmspPDw0fEs+Pj4yMixLPUd9Zi53b3Jkc1tCLTEwXT1LPj4+PTIyLGYubGVuZ3RoLT0wPT09SyYmZi5sZW5ndGg+MTA/MTA6OX0scmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Yud29yZHNbZi5sZW5ndGhdPTAsZi53'@; put 'b3Jkc1tmLmxlbmd0aCsxXT0wLGYubGVuZ3RoKz0yO2Zvcih2YXIgYj0wLGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MHxmLndvcmRzW2tdO2Yud29yZHNba109NjcxMDg4NjMmKGIrPTk3NypNKSxiPTY0Kk0rKGIvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1mLndvcmRzW2YubGVuZ3RoLTFd'@; put 'JiYoZi5sZW5ndGgtLSwwPT09Zi53b3Jkc1tmLmxlbmd0aC0xXSYmZi5sZW5ndGgtLSksZn0sQShtZSxxKSxBKENlLHEpLEEoSWUscSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Zvcih2YXIgYj0wLGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MTkqKDB8Zi53b3Jkc1trXSkr'@; put 'YixCPTY3MTA4ODYzJk07TT4+Pj0yNixmLndvcmRzW2tdPUIsYj1NfXJldHVybiAwIT09YiYmKGYud29yZHNbZi5sZW5ndGgrK109YiksZn0sdi5fcHJpbWU9ZnVuY3Rpb24oZil7aWYoV1tmXSlyZXR1cm4gV1tmXTt2YXIgYjtpZigiazI1NiI9PT1mKWI9bmV3IHJlO2Vsc2UgaWYoInAyMjQi'@; put 'PT09ZiliPW5ldyBtZTtlbHNlIGlmKCJwMTkyIj09PWYpYj1uZXcgQ2U7ZWxzZXtpZigicDI1NTE5IiE9PWYpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrZik7Yj1uZXcgSWV9cmV0dXJuIFdbZl09YixifSxrZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZil7cygwPT09'@; put 'Zi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxzKGYucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGtlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihmLGIpe3MoMD09PShmLm5lZ2F0aXZlfGIubmVnYXRpdmUpLCJyZWQgd29ya3Mg'@; put 'b25seSB3aXRoIHBvc2l0aXZlcyIpLHMoZi5yZWQmJmYucmVkPT09Yi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sa2UucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGYpLl9mb3JjZVJlZCh0aGlz'@; put 'KTpmLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaXNaZXJvKCk/Zi5jbG9uZSgpOnRoaXMubS5zdWIoZikuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5'@; put 'MihmLGIpO3ZhciBrPWYuYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sa2UucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZixiKXt0aGlzLl92ZXJpZnkyKGYsYik7dmFyIGs9Zi5pYWRkKGIpO3JldHVybiBrLmNtcCh0aGlz'@; put 'Lm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrfSxrZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuc3ViKGIpO3JldHVybiBrLmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5pc3ViPWZ1'@; put 'bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuaXN1YihiKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGt9LGtlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShmKSx0aGlzLmltb2QoZi51c2hsbihiKSl9LGtl'@; put 'LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZixiKSx0aGlzLmltb2QoZi5pbXVsKGIpKX0sa2UucHJvdG90eXBlLm11bD1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLl92ZXJpZnkyKGYsYiksdGhpcy5pbW9kKGYubXVsKGIpKX0sa2UucHJvdG90'@; put 'eXBlLmlzcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW11bChmLGYuY2xvbmUoKSl9LGtlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubXVsKGYsZil9LGtlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGYpe2lmKGYuaXNaZXJvKCkpcmV0dXJuIGYuY2xvbmUoKTt2'@; put 'YXIgYj10aGlzLm0uYW5kbG4oMyk7aWYocyhiJTI9PTEpLDM9PT1iKXt2YXIgaz10aGlzLm0uYWRkKG5ldyB2KDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGYsayl9Zm9yKHZhciBNPXRoaXMubS5zdWJuKDEpLEI9MDshTS5pc1plcm8oKSYmMD09PU0uYW5kbG4oMSk7KUIrKyxNLml1'@; put 'c2hybigxKTtzKCFNLmlzWmVybygpKTt2YXIgSz1uZXcgdigxKS50b1JlZCh0aGlzKSxHPUsucmVkTmVnKCksRD10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IHYoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLEQpLmNtcChH'@; put 'KTspcC5yZWRJQWRkKEcpO2Zvcih2YXIgST10aGlzLnBvdyhwLE0pLHVlPXRoaXMucG93KGYsTS5hZGRuKDEpLml1c2hybigxKSksbmU9dGhpcy5wb3coZixNKSxfZT1COzAhPT1uZS5jbXAoSyk7KXtmb3IodmFyIFBlPW5lLG90PTA7MCE9PVBlLmNtcChLKTtvdCsrKVBlPVBlLnJlZFNxcigp'@; put 'O3Mob3Q8X2UpO3ZhciBsdD10aGlzLnBvdyhJLG5ldyB2KDEpLml1c2hsbihfZS1vdC0xKSk7dWU9dWUucmVkTXVsKGx0KSxJPWx0LnJlZFNxcigpLG5lPW5lLnJlZE11bChJKSxfZT1vdH1yZXR1cm4gdWV9LGtlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGYpe3ZhciBiPWYuX2ludm1wKHRo'@; put 'aXMubSk7cmV0dXJuIDAhPT1iLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKGIpLnJlZE5lZygpKTp0aGlzLmltb2QoYil9LGtlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZixiKXtpZihiLmlzWmVybygpKXJldHVybiBuZXcgdigxKS50b1JlZCh0aGlzKTtpZigwPT09Yi5jbXBu'@; put 'KDEpKXJldHVybiBmLmNsb25lKCk7dmFyIE09bmV3IEFycmF5KDE2KTtNWzBdPW5ldyB2KDEpLnRvUmVkKHRoaXMpLE1bMV09Zjtmb3IodmFyIEI9MjtCPE0ubGVuZ3RoO0IrKylNW0JdPXRoaXMubXVsKE1bQi0xXSxmKTt2YXIgSz1NWzBdLEc9MCxEPTAscD1iLmJpdExlbmd0aCgpJTI2O2Zv'@; put 'cigwPT09cCYmKHA9MjYpLEI9Yi5sZW5ndGgtMTtCPj0wO0ItLSl7Zm9yKHZhciBJPWIud29yZHNbQl0sdWU9cC0xO3VlPj0wO3VlLS0pe3ZhciBuZT1JPj51ZSYxO0shPT1NWzBdJiYoSz10aGlzLnNxcihLKSksMCE9PW5lfHwwIT09Rz8oRzw8PTEsR3w9bmUsKDQ9PT0rK0R8fDA9PT1CJiYw'@; put 'PT09dWUpJiYoSz10aGlzLm11bChLLE1bR10pLEQ9MCxHPTApKTpEPTB9cD0yNn1yZXR1cm4gS30sa2UucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihmKXt2YXIgYj1mLnVtb2QodGhpcy5tKTtyZXR1cm4gYj09PWY/Yi5jbG9uZSgpOmJ9LGtlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1m'@; put 'dW5jdGlvbihmKXt2YXIgYj1mLmNsb25lKCk7cmV0dXJuIGIucmVkPW51bGwsYn0sdi5tb250PWZ1bmN0aW9uKGYpe3JldHVybiBuZXcgcWUoZil9LEEocWUsa2UpLHFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLnVzaGxuKHRoaXMuc2hpZnQp'@; put 'KX0scWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMuaW1vZChmLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gYi5yZWQ9bnVsbCxifSxxZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihmLGIpe2lmKGYuaXNaZXJvKCl8fGIuaXNaZXJvKCkpcmV0dXJuIGYud29y'@; put 'ZHNbMF09MCxmLmxlbmd0aD0xLGY7dmFyIGs9Zi5pbXVsKGIpLE09ay5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksQj1rLmlzdWIoTSkuaXVzaHJuKHRoaXMuc2hpZnQpLEs9QjtyZXR1cm4gQi5jbXAodGhpcy5tKT49MD9L'@; put 'PUIuaXN1Yih0aGlzLm0pOkIuY21wbigwKTwwJiYoSz1CLmlhZGQodGhpcy5tKSksSy5fZm9yY2VSZWQodGhpcyl9LHFlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZixiKXtpZihmLmlzWmVybygpfHxiLmlzWmVybygpKXJldHVybiBuZXcgdigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGs9Zi5t'@; put 'dWwoYiksTT1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxCPWsuaXN1YihNKS5pdXNocm4odGhpcy5zaGlmdCksSz1CO3JldHVybiBCLmNtcCh0aGlzLm0pPj0wP0s9Qi5pc3ViKHRoaXMubSk6Qi5jbXBuKDApPDAmJihL'@; put 'PUIuaWFkZCh0aGlzLm0pKSxLLl9mb3JjZVJlZCh0aGlzKX0scWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oZmU9aC5ubWQoZmUpLHRoaXMpfSw3MTc2KGZlLGosaCl7'@; put 'InVzZSBzdHJpY3QiO3ZhciBzLHk9aCg3MzEyNiksYz1oKDc1Nzk1KTt0cnl7cz1bXS5fX3Byb3RvX189PT1BcnJheS5wcm90b3R5cGV9Y2F0Y2godyl7aWYoIXd8fCJvYmplY3QiIT10eXBlb2Ygd3x8ISgiY29kZSJpbiB3KXx8IkVSUl9QUk9UT19BQ0NFU1MiIT09dy5jb2RlKXRocm93IHd9'@; put 'dmFyIEE9ISFzJiZjJiZjKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLHY9T2JqZWN0LEM9di5nZXRQcm90b3R5cGVPZjtmZS5leHBvcnRzPUEmJiJmdW5jdGlvbiI9PXR5cGVvZiBBLmdldD95KFtBLmdldF0pOiJmdW5jdGlvbiI9PXR5cGVvZiBDJiZmdW5jdGlvbihTKXtyZXR1cm4g'@; put 'QyhudWxsPT1TP1M6dihTKSl9fSw4NjcyOShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1qO3kudmVyc2lvbj1oKDE2MzYpLnJFLHkudXRpbHM9aCg0NzAxMSkseS5yYW5kPWgoMTUwMzcpLHkuY3VydmU9aCg4OTQpLHkuY3VydmVzPWgoNjA0ODApLHkuZWM9aCg1NzQ0NykseS5lZGRzYT1o'@; put 'KDg2NTApfSwzNjY3NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDI4NDkwKSxjPWgoNDcwMTEpLHM9Yy5nZXROQUYsQT1jLmdldEpTRix2PWMuYXNzZXJ0O2Z1bmN0aW9uIEMoUyxMKXt0aGlzLnR5cGU9Uyx0aGlzLnA9bmV3IHkoTC5wLDE2KSx0aGlzLnJlZD1MLnByaW1lP3kucmVk'@; put 'KEwucHJpbWUpOnkubW9udCh0aGlzLnApLHRoaXMuemVybz1uZXcgeSgwKS50b1JlZCh0aGlzLnJlZCksdGhpcy5vbmU9bmV3IHkoMSkudG9SZWQodGhpcy5yZWQpLHRoaXMudHdvPW5ldyB5KDIpLnRvUmVkKHRoaXMucmVkKSx0aGlzLm49TC5uJiZuZXcgeShMLm4sMTYpLHRoaXMuZz1MLmcm'@; put 'JnRoaXMucG9pbnRGcm9tSlNPTihMLmcsTC5nUmVkKSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpLHRoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5u'@; put 'LmJpdExlbmd0aCgpOjA7dmFyIFI9dGhpcy5uJiZ0aGlzLnAuZGl2KHRoaXMubik7IVJ8fFIuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21heHdlbGxUcmljaz0hMCx0aGlzLnJlZE49dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gdyhTLEwpe3RoaXMuY3VydmU9'@; put 'Uyx0aGlzLnR5cGU9TCx0aGlzLnByZWNvbXB1dGVkPW51bGx9ZmUuZXhwb3J0cz1DLEMucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sQy5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5v'@; put 'dCBpbXBsZW1lbnRlZCIpfSxDLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24oTCxSKXt2KEwucHJlY29tcHV0ZWQpO3ZhciB4PUwuX2dldERvdWJsZXMoKSxVPXMoUiwxLHRoaXMuX2JpdExlbmd0aCksSD0oMTw8eC5zdGVwKzEpLSh4LnN0ZXAlMj09MD8yOjEpO0gvPTM7dmFyIE4s'@; put 'eixWPVtdO2ZvcihOPTA7TjxVLmxlbmd0aDtOKz14LnN0ZXApe3o9MDtmb3IodmFyIFk9Tit4LnN0ZXAtMTtZPj1OO1ktLSl6PSh6PDwxKStVW1ldO1YucHVzaCh6KX1mb3IodmFyIEY9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLFc9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHE9'@; put 'SDtxPjA7cS0tKXtmb3IoTj0wO048Vi5sZW5ndGg7TisrKSh6PVZbTl0pPT09cT9XPVcubWl4ZWRBZGQoeC5wb2ludHNbTl0pOno9PT0tcSYmKFc9Vy5taXhlZEFkZCh4LnBvaW50c1tOXS5uZWcoKSkpO0Y9Ri5hZGQoVyl9cmV0dXJuIEYudG9QKCl9LEMucHJvdG90eXBlLl93bmFmTXVsPWZ1'@; put 'bmN0aW9uKEwsUil7Zm9yKHZhciB4PTQsVT1MLl9nZXROQUZQb2ludHMoeCksSD1VLnBvaW50cyxWPXMoUix4PVUud25kLHRoaXMuX2JpdExlbmd0aCksTj10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksej1WLmxlbmd0aC0xO3o+PTA7ei0tKXtmb3IodmFyIFk9MDt6Pj0wJiYwPT09Vlt6'@; put 'XTt6LS0pWSsrO2lmKHo+PTAmJlkrKyxOPU4uZGJscChZKSx6PDApYnJlYWs7dmFyIEY9Vlt6XTt2KDAhPT1GKSxOPSJhZmZpbmUiPT09TC50eXBlP04ubWl4ZWRBZGQoRj4wP0hbRi0xPj4xXTpIWy1GLTE+PjFdLm5lZygpKTpOLmFkZChGPjA/SFtGLTE+PjFdOkhbLUYtMT4+MV0ubmVnKCkp'@; put 'fXJldHVybiJhZmZpbmUiPT09TC50eXBlP04udG9QKCk6Tn0sQy5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24oTCxSLHgsVSxIKXt2YXIgRixXLHEsVj10aGlzLl93bmFmVDEsTj10aGlzLl93bmFmVDIsej10aGlzLl93bmFmVDMsWT0wO2ZvcihGPTA7RjxVO0YrKyl7dmFyIHJlPShx'@; put 'PVJbRl0pLl9nZXROQUZQb2ludHMoTCk7VltGXT1yZS53bmQsTltGXT1yZS5wb2ludHN9Zm9yKEY9VS0xO0Y+PTE7Ri09Mil7dmFyIG1lPUYtMSxDZT1GO2lmKDE9PT1WW21lXSYmMT09PVZbQ2VdKXt2YXIgSWU9W1JbbWVdLG51bGwsbnVsbCxSW0NlXV07MD09PVJbbWVdLnkuY21wKFJbQ2Vd'@; put 'LnkpPyhJZVsxXT1SW21lXS5hZGQoUltDZV0pLEllWzJdPVJbbWVdLnRvSigpLm1peGVkQWRkKFJbQ2VdLm5lZygpKSk6MD09PVJbbWVdLnkuY21wKFJbQ2VdLnkucmVkTmVnKCkpPyhJZVsxXT1SW21lXS50b0ooKS5taXhlZEFkZChSW0NlXSksSWVbMl09UlttZV0uYWRkKFJbQ2VdLm5lZygp'@; put 'KSk6KEllWzFdPVJbbWVdLnRvSigpLm1peGVkQWRkKFJbQ2VdKSxJZVsyXT1SW21lXS50b0ooKS5taXhlZEFkZChSW0NlXS5uZWcoKSkpO3ZhciBrZT1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXSxxZT1BKHhbbWVdLHhbQ2VdKTtmb3IoWT1NYXRoLm1heChxZVswXS5sZW5ndGgsWSkselttZV09'@; put 'bmV3IEFycmF5KFkpLHpbQ2VdPW5ldyBBcnJheShZKSxXPTA7VzxZO1crKyl6W21lXVtXXT1rZVszKigxKygwfHFlWzBdW1ddKSkrKDErKDB8cWVbMV1bV10pKV0seltDZV1bV109MCxOW21lXT1JZX1lbHNlIHpbbWVdPXMoeFttZV0sVlttZV0sdGhpcy5fYml0TGVuZ3RoKSx6W0NlXT1zKHhb'@; put 'Q2VdLFZbQ2VdLHRoaXMuX2JpdExlbmd0aCksWT1NYXRoLm1heCh6W21lXS5sZW5ndGgsWSksWT1NYXRoLm1heCh6W0NlXS5sZW5ndGgsWSl9dmFyIGI9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLGs9dGhpcy5fd25hZlQ0O2ZvcihGPVk7Rj49MDtGLS0pe2Zvcih2YXIgTT0wO0Y+PTA7'@; put 'KXt2YXIgQj0hMDtmb3IoVz0wO1c8VTtXKyspa1tXXT0wfHpbV11bRl0sMCE9PWtbV10mJihCPSExKTtpZighQilicmVhaztNKyssRi0tfWlmKEY+PTAmJk0rKyxiPWIuZGJscChNKSxGPDApYnJlYWs7Zm9yKFc9MDtXPFU7VysrKXt2YXIgSz1rW1ddOzAhPT1LJiYoSz4wP3E9TltXXVtLLTE+'@; put 'PjFdOks8MCYmKHE9TltXXVstSy0xPj4xXS5uZWcoKSksYj0iYWZmaW5lIj09PXEudHlwZT9iLm1peGVkQWRkKHEpOmIuYWRkKHEpKX19Zm9yKEY9MDtGPFU7RisrKU5bRl09bnVsbDtyZXR1cm4gSD9iOmIudG9QKCl9LEMuQmFzZVBvaW50PXcsdy5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oKXt0'@; put 'aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSx3LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpfSxDLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihMLFIpe0w9Yy50b0FycmF5KEwsUik7dmFyIHg9dGhp'@; put 'cy5wLmJ5dGVMZW5ndGgoKTtpZigoND09PUxbMF18fDY9PT1MWzBdfHw3PT09TFswXSkmJkwubGVuZ3RoLTE9PTIqeClyZXR1cm4gNj09PUxbMF0/dihMW0wubGVuZ3RoLTFdJTI9PTApOjc9PT1MWzBdJiZ2KExbTC5sZW5ndGgtMV0lMj09MSksdGhpcy5wb2ludChMLnNsaWNlKDEsMSt4KSxM'@; put 'LnNsaWNlKDEreCwxKzIqeCkpO2lmKCgyPT09TFswXXx8Mz09PUxbMF0pJiZMLmxlbmd0aC0xPT09eClyZXR1cm4gdGhpcy5wb2ludEZyb21YKEwuc2xpY2UoMSwxK3gpLDM9PT1MWzBdKTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcG9pbnQgZm9ybWF0Iil9LHcucHJvdG90eXBlLmVuY29k'@; put 'ZUNvbXByZXNzZWQ9ZnVuY3Rpb24oTCl7cmV0dXJuIHRoaXMuZW5jb2RlKEwsITApfSx3LnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKEwpe3ZhciBSPXRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCkseD10aGlzLmdldFgoKS50b0FycmF5KCJiZSIsUik7cmV0dXJuIEw/W3RoaXMuZ2V0WSgp'@; put 'LmlzRXZlbigpPzI6M10uY29uY2F0KHgpOls0XS5jb25jYXQoeCx0aGlzLmdldFkoKS50b0FycmF5KCJiZSIsUikpfSx3LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oTCxSKXtyZXR1cm4gYy5lbmNvZGUodGhpcy5fZW5jb2RlKFIpLEwpfSx3LnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0'@; put 'aW9uKEwpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIFI9e2RvdWJsZXM6bnVsbCxuYWY6bnVsbCxiZXRhOm51bGx9O3JldHVybiBSLm5hZj10aGlzLl9nZXROQUZQb2ludHMoOCksUi5kb3VibGVzPXRoaXMuX2dldERvdWJsZXMoNCxMKSxSLmJldGE9dGhpcy5fZ2V0QmV0'@; put 'YSgpLHRoaXMucHJlY29tcHV0ZWQ9Uix0aGlzfSx3LnByb3RvdHlwZS5faGFzRG91Ymxlcz1mdW5jdGlvbihMKXtpZighdGhpcy5wcmVjb21wdXRlZClyZXR1cm4hMTt2YXIgUj10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7cmV0dXJuISFSJiZSLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgo'@; put 'TC5iaXRMZW5ndGgoKSsxKS9SLnN0ZXApfSx3LnByb3RvdHlwZS5fZ2V0RG91Ymxlcz1mdW5jdGlvbihMLFIpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO2Zvcih2YXIgeD1bdGhpc10sVT10aGlz'@; put 'LEg9MDtIPFI7SCs9TCl7Zm9yKHZhciBWPTA7VjxMO1YrKylVPVUuZGJsKCk7eC5wdXNoKFUpfXJldHVybntzdGVwOkwscG9pbnRzOnh9fSx3LnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzPWZ1bmN0aW9uKEwpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQubmFmKXJldHVy'@; put 'biB0aGlzLnByZWNvbXB1dGVkLm5hZjtmb3IodmFyIFI9W3RoaXNdLHg9KDE8PEwpLTEsVT0xPT09eD9udWxsOnRoaXMuZGJsKCksSD0xO0g8eDtIKyspUltIXT1SW0gtMV0uYWRkKFUpO3JldHVybnt3bmQ6TCxwb2ludHM6Un19LHcucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIG51bGx9LHcucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oTCl7Zm9yKHZhciBSPXRoaXMseD0wO3g8TDt4KyspUj1SLmRibCgpO3JldHVybiBSfX0sMzEyOTgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0NzAxMSksYz1oKDI4NDkwKSxzPWgoNTY2OTgpLEE9aCgzNjY3Nyksdj15'@; put 'LmFzc2VydDtmdW5jdGlvbiBDKFMpe3RoaXMudHdpc3RlZD0xIT0oMHxTLmEpLHRoaXMubU9uZUE9dGhpcy50d2lzdGVkJiYtMT09KDB8Uy5hKSx0aGlzLmV4dGVuZGVkPXRoaXMubU9uZUEsQS5jYWxsKHRoaXMsImVkd2FyZHMiLFMpLHRoaXMuYT1uZXcgYyhTLmEsMTYpLnVtb2QodGhpcy5y'@; put 'ZWQubSksdGhpcy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBjKFMuYywxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgYyhTLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSx2'@; put 'KCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT0oMHxTLmMpfWZ1bmN0aW9uIHcoUyxMLFIseCxVKXtBLkJhc2VQb2ludC5jYWxsKHRoaXMsUywicHJvamVjdGl2ZSIpLG51bGw9PT1MJiZudWxsPT09UiYmbnVsbD09PXg/KHRoaXMueD10'@; put 'aGlzLmN1cnZlLnplcm8sdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnQ9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMuek9uZT0hMCk6KHRoaXMueD1uZXcgYyhMLDE2KSx0aGlzLnk9bmV3IGMoUiwxNiksdGhpcy56PXg/bmV3IGMoeCwxNik6dGhpcy5jdXJ2'@; put 'ZS5vbmUsdGhpcy50PVUmJm5ldyBjKFUsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlz'@; put 'LmN1cnZlLnJlZCkpLHRoaXMudCYmIXRoaXMudC5yZWQmJih0aGlzLnQ9dGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUub25lLHRoaXMuY3VydmUuZXh0ZW5kZWQmJiF0aGlzLnQmJih0aGlzLnQ9dGhpcy54LnJlZE11bCh0aGlzLnkp'@; put 'LHRoaXMuek9uZXx8KHRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpKSkpfXMoQyxBKSxmZS5leHBvcnRzPUMsQy5wcm90b3R5cGUuX211bEE9ZnVuY3Rpb24oTCl7cmV0dXJuIHRoaXMubU9uZUE/TC5yZWROZWcoKTp0aGlzLmEucmVkTXVsKEwpfSxDLnByb3RvdHlwZS5f'@; put 'bXVsQz1mdW5jdGlvbihMKXtyZXR1cm4gdGhpcy5vbmVDP0w6dGhpcy5jLnJlZE11bChMKX0sQy5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uKEwsUix4LFUpe3JldHVybiB0aGlzLnBvaW50KEwsUix4LFUpfSxDLnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKEwsUil7KEw9bmV3IGMo'@; put 'TCwxNikpLnJlZHx8KEw9TC50b1JlZCh0aGlzLnJlZCkpO3ZhciB4PUwucmVkU3FyKCksVT10aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHgpKSxIPXRoaXMub25lLnJlZFN1Yih0aGlzLmMyLnJlZE11bCh0aGlzLmQpLnJlZE11bCh4KSksVj1VLnJlZE11bChILnJlZEludm0oKSksTj1W'@; put 'LnJlZFNxcnQoKTtpZigwIT09Ti5yZWRTcXIoKS5yZWRTdWIoVikuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIHo9Ti5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oUiYmIXp8fCFSJiZ6KSYmKE49Ti5yZWROZWcoKSksdGhpcy5wb2ludChMLE4p'@; put 'fSxDLnByb3RvdHlwZS5wb2ludEZyb21ZPWZ1bmN0aW9uKEwsUil7KEw9bmV3IGMoTCwxNikpLnJlZHx8KEw9TC50b1JlZCh0aGlzLnJlZCkpO3ZhciB4PUwucmVkU3FyKCksVT14LnJlZFN1Yih0aGlzLmMyKSxIPXgucmVkTXVsKHRoaXMuZCkucmVkTXVsKHRoaXMuYzIpLnJlZFN1Yih0aGlz'@; put 'LmEpLFY9VS5yZWRNdWwoSC5yZWRJbnZtKCkpO2lmKDA9PT1WLmNtcCh0aGlzLnplcm8pKXtpZihSKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiB0aGlzLnBvaW50KHRoaXMuemVybyxMKX12YXIgTj1WLnJlZFNxcnQoKTtpZigwIT09Ti5yZWRTcXIoKS5yZWRTdWIo'@; put 'VikuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIE4uZnJvbVJlZCgpLmlzT2RkKCkhPT1SJiYoTj1OLnJlZE5lZygpKSx0aGlzLnBvaW50KE4sTCl9LEMucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKEwpe2lmKEwuaXNJbmZpbml0eSgp'@; put 'KXJldHVybiEwO0wubm9ybWFsaXplKCk7dmFyIFI9TC54LnJlZFNxcigpLHg9TC55LnJlZFNxcigpLFU9Ui5yZWRNdWwodGhpcy5hKS5yZWRBZGQoeCksSD10aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bChSKS5yZWRNdWwoeCkpKTtyZXR1cm4gMD09PVUuY21w'@; put 'KEgpfSxzKHcsQS5CYXNlUG9pbnQpLEMucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oTCl7cmV0dXJuIHcuZnJvbUpTT04odGhpcyxMKX0sQy5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oTCxSLHgsVSl7cmV0dXJuIG5ldyB3KHRoaXMsTCxSLHgsVSl9LHcuZnJvbUpTT049ZnVu'@; put 'Y3Rpb24oTCxSKXtyZXR1cm4gbmV3IHcoTCxSWzBdLFJbMV0sUlsyXSl9LHcucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2'@; put 'LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sdy5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy54LmNtcG4oMCkmJigwPT09dGhpcy55LmNtcCh0'@; put 'aGlzLnopfHx0aGlzLnpPbmUmJjA9PT10aGlzLnkuY21wKHRoaXMuY3VydmUuYykpfSx3LnByb3RvdHlwZS5fZXh0RGJsPWZ1bmN0aW9uKCl7dmFyIEw9dGhpcy54LnJlZFNxcigpLFI9dGhpcy55LnJlZFNxcigpLHg9dGhpcy56LnJlZFNxcigpO3g9eC5yZWRJQWRkKHgpO3ZhciBVPXRoaXMu'@; put 'Y3VydmUuX211bEEoTCksSD10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihMKS5yZWRJU3ViKFIpLFY9VS5yZWRBZGQoUiksTj1WLnJlZFN1Yih4KSx6PVUucmVkU3ViKFIpLFk9SC5yZWRNdWwoTiksRj1WLnJlZE11bCh6KSxXPUgucmVkTXVsKHopLHE9Ti5yZWRNdWwo'@; put 'Vik7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoWSxGLHEsVyl9LHcucHJvdG90eXBlLl9wcm9qRGJsPWZ1bmN0aW9uKCl7dmFyIFUsSCxWLE4seixZLEw9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLFI9dGhpcy54LnJlZFNxcigpLHg9dGhpcy55LnJlZFNxcigpO2lmKHRoaXMuY3Vy'@; put 'dmUudHdpc3RlZCl7dmFyIEY9KE49dGhpcy5jdXJ2ZS5fbXVsQShSKSkucmVkQWRkKHgpO3RoaXMuek9uZT8oVT1MLnJlZFN1YihSKS5yZWRTdWIoeCkucmVkTXVsKEYucmVkU3ViKHRoaXMuY3VydmUudHdvKSksSD1GLnJlZE11bChOLnJlZFN1Yih4KSksVj1GLnJlZFNxcigpLnJlZFN1YihG'@; put 'KS5yZWRTdWIoRikpOih6PXRoaXMuei5yZWRTcXIoKSxZPUYucmVkU3ViKHopLnJlZElTdWIoeiksVT1MLnJlZFN1YihSKS5yZWRJU3ViKHgpLnJlZE11bChZKSxIPUYucmVkTXVsKE4ucmVkU3ViKHgpKSxWPUYucmVkTXVsKFkpKX1lbHNlIE49Ui5yZWRBZGQoeCksej10aGlzLmN1cnZlLl9t'@; put 'dWxDKHRoaXMueikucmVkU3FyKCksWT1OLnJlZFN1Yih6KS5yZWRTdWIoeiksVT10aGlzLmN1cnZlLl9tdWxDKEwucmVkSVN1YihOKSkucmVkTXVsKFkpLEg9dGhpcy5jdXJ2ZS5fbXVsQyhOKS5yZWRNdWwoUi5yZWRJU3ViKHgpKSxWPU4ucmVkTXVsKFkpO3JldHVybiB0aGlzLmN1cnZlLnBv'@; put 'aW50KFUsSCxWKX0sdy5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHREYmwoKTp0aGlzLl9wcm9qRGJsKCl9LHcucHJvdG90eXBlLl9leHRBZGQ9ZnVuY3Rpb24oTCl7dmFyIFI9dGhpcy55'@; put 'LnJlZFN1Yih0aGlzLngpLnJlZE11bChMLnkucmVkU3ViKEwueCkpLHg9dGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChMLnkucmVkQWRkKEwueCkpLFU9dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoTC50KSxIPXRoaXMuei5yZWRNdWwoTC56LnJlZEFkZChMLnopKSxW'@; put 'PXgucmVkU3ViKFIpLE49SC5yZWRTdWIoVSksej1ILnJlZEFkZChVKSxZPXgucmVkQWRkKFIpLEY9Vi5yZWRNdWwoTiksVz16LnJlZE11bChZKSxxPVYucmVkTXVsKFkpLHJlPU4ucmVkTXVsKHopO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KEYsVyxyZSxxKX0sdy5wcm90b3R5cGUuX3Byb2pB'@; put 'ZGQ9ZnVuY3Rpb24oTCl7dmFyIFcscSxSPXRoaXMuei5yZWRNdWwoTC56KSx4PVIucmVkU3FyKCksVT10aGlzLngucmVkTXVsKEwueCksSD10aGlzLnkucmVkTXVsKEwueSksVj10aGlzLmN1cnZlLmQucmVkTXVsKFUpLnJlZE11bChIKSxOPXgucmVkU3ViKFYpLHo9eC5yZWRBZGQoViksWT10'@; put 'aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKEwueC5yZWRBZGQoTC55KSkucmVkSVN1YihVKS5yZWRJU3ViKEgpLEY9Ui5yZWRNdWwoTikucmVkTXVsKFkpO3JldHVybiB0aGlzLmN1cnZlLnR3aXN0ZWQ/KFc9Ui5yZWRNdWwoeikucmVkTXVsKEgucmVkU3ViKHRoaXMuY3VydmUuX211bEEo'@; put 'VSkpKSxxPU4ucmVkTXVsKHopKTooVz1SLnJlZE11bCh6KS5yZWRNdWwoSC5yZWRTdWIoVSkpLHE9dGhpcy5jdXJ2ZS5fbXVsQyhOKS5yZWRNdWwoeikpLHRoaXMuY3VydmUucG9pbnQoRixXLHEpfSx3LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgp'@; put 'P0w6TC5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLmV4dGVuZGVkP3RoaXMuX2V4dEFkZChMKTp0aGlzLl9wcm9qQWRkKEwpfSx3LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTCl7cmV0dXJuIHRoaXMuX2hhc0RvdWJsZXMoTCk/dGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxMKTp0'@; put 'aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsTCl9LHcucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihMLFIseCl7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxSXSxbTCx4XSwyLCExKX0sdy5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbihMLFIseCl7cmV0dXJuIHRoaXMu'@; put 'Y3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxSXSxbTCx4XSwyLCEwKX0sdy5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7aWYodGhpcy56T25lKXJldHVybiB0aGlzO3ZhciBMPXRoaXMuei5yZWRJbnZtKCk7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKEwpLHRoaXMueT10aGlz'@; put 'LnkucmVkTXVsKEwpLHRoaXMudCYmKHRoaXMudD10aGlzLnQucmVkTXVsKEwpKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56T25lPSEwLHRoaXN9LHcucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSx0aGlzLnksdGhp'@; put 'cy56LHRoaXMudCYmdGhpcy50LnJlZE5lZygpKX0sdy5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9LHcucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnkuZnJvbVJl'@; put 'ZCgpfSx3LnByb3RvdHlwZS5lcT1mdW5jdGlvbihMKXtyZXR1cm4gdGhpcz09PUx8fDA9PT10aGlzLmdldFgoKS5jbXAoTC5nZXRYKCkpJiYwPT09dGhpcy5nZXRZKCkuY21wKEwuZ2V0WSgpKX0sdy5wcm90b3R5cGUuZXFYVG9QPWZ1bmN0aW9uKEwpe3ZhciBSPUwudG9SZWQodGhpcy5jdXJ2'@; put 'ZS5yZWQpLnJlZE11bCh0aGlzLnopO2lmKDA9PT10aGlzLnguY21wKFIpKXJldHVybiEwO2Zvcih2YXIgeD1MLmNsb25lKCksVT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7Oyl7aWYoeC5pYWRkKHRoaXMuY3VydmUubikseC5jbXAodGhpcy5jdXJ2ZS5wKT49MClyZXR1cm4hMTtp'@; put 'ZihSLnJlZElBZGQoVSksMD09PXRoaXMueC5jbXAoUikpcmV0dXJuITB9fSx3LnByb3RvdHlwZS50b1A9dy5wcm90b3R5cGUubm9ybWFsaXplLHcucHJvdG90eXBlLm1peGVkQWRkPXcucHJvdG90eXBlLmFkZH0sODk0KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWo7eS5iYXNlPWgoMzY2'@; put 'NzcpLHkuc2hvcnQ9aCgzOTE4OCkseS5tb250PWgoMzAzNzApLHkuZWR3YXJkcz1oKDMxMjk4KX0sMzAzNzAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgyODQ5MCksYz1oKDU2Njk4KSxzPWgoMzY2NzcpLEE9aCg0NzAxMSk7ZnVuY3Rpb24gdih3KXtzLmNhbGwodGhpcywibW9udCIs'@; put 'dyksdGhpcy5hPW5ldyB5KHcuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgeSh3LmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyB5KDQpLnRvUmVkKHRoaXMucmVkKS5yZWRJbnZtKCksdGhpcy50d289bmV3IHkoMikudG9SZWQodGhpcy5yZWQpLHRoaXMuYTI0PXRo'@; put 'aXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKX1mdW5jdGlvbiBDKHcsUyxMKXtzLkJhc2VQb2ludC5jYWxsKHRoaXMsdywicHJvamVjdGl2ZSIpLG51bGw9PT1TJiZudWxsPT09TD8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLnplcm8pOih0aGlz'@; put 'Lng9bmV3IHkoUywxNiksdGhpcy56PW5ldyB5KEwsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSl9Yyh2LHMpLGZlLmV4cG9ydHM9dix2LnByb3RvdHlw'@; put 'ZS52YWxpZGF0ZT1mdW5jdGlvbihTKXt2YXIgTD1TLm5vcm1hbGl6ZSgpLngsUj1MLnJlZFNxcigpLHg9Ui5yZWRNdWwoTCkucmVkQWRkKFIucmVkTXVsKHRoaXMuYSkpLnJlZEFkZChMKTtyZXR1cm4gMD09PXgucmVkU3FydCgpLnJlZFNxcigpLmNtcCh4KX0sYyhDLHMuQmFzZVBvaW50KSx2'@; put 'LnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihTLEwpe3JldHVybiB0aGlzLnBvaW50KEEudG9BcnJheShTLEwpLDEpfSx2LnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihTLEwpe3JldHVybiBuZXcgQyh0aGlzLFMsTCl9LHYucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24o'@; put 'Uyl7cmV0dXJuIEMuZnJvbUpTT04odGhpcyxTKX0sQy5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30sQy5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KCJiZSIsdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSl9LEMuZnJvbUpT'@; put 'T049ZnVuY3Rpb24oUyxMKXtyZXR1cm4gbmV3IEMoUyxMWzBdLExbMV18fFMub25lKX0sQy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9T'@; put 'dHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxDLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX0sQy5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7dmFyIEw9dGhpcy54LnJlZEFkZCh0'@; put 'aGlzLnopLnJlZFNxcigpLHg9dGhpcy54LnJlZFN1Yih0aGlzLnopLnJlZFNxcigpLFU9TC5yZWRTdWIoeCksSD1MLnJlZE11bCh4KSxWPVUucmVkTXVsKHgucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChVKSkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KEgsVil9LEMucHJvdG90eXBl'@; put 'LmFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LEMucHJvdG90eXBlLmRpZmZBZGQ9ZnVuY3Rpb24oUyxMKXt2YXIgUj10aGlzLngucmVkQWRkKHRoaXMueikseD10aGlzLngucmVkU3ViKHRoaXMueiksVT1TLngucmVk'@; put 'QWRkKFMueiksVj1TLngucmVkU3ViKFMueikucmVkTXVsKFIpLE49VS5yZWRNdWwoeCksej1MLnoucmVkTXVsKFYucmVkQWRkKE4pLnJlZFNxcigpKSxZPUwueC5yZWRNdWwoVi5yZWRJU3ViKE4pLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh6LFkpfSxDLnByb3RvdHlwZS5t'@; put 'dWw9ZnVuY3Rpb24oUyl7Zm9yKHZhciBMPVMuY2xvbmUoKSxSPXRoaXMseD10aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCksSD1bXTswIT09TC5jbXBuKDApO0wuaXVzaHJuKDEpKUgucHVzaChMLmFuZGxuKDEpKTtmb3IodmFyIFY9SC5sZW5ndGgtMTtWPj0wO1YtLSkwPT09SFtWXT8oUj1S'@; put 'LmRpZmZBZGQoeCx0aGlzKSx4PXguZGJsKCkpOih4PVIuZGlmZkFkZCh4LHRoaXMpLFI9Ui5kYmwoKSk7cmV0dXJuIHh9LEMucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LEMucHJvdG90eXBl'@; put 'Lmp1bWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxDLnByb3RvdHlwZS5lcT1mdW5jdGlvbihTKXtyZXR1cm4gMD09PXRoaXMuZ2V0WCgpLmNtcChTLmdldFgoKSl9LEMucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5j'@; put 'dGlvbigpe3JldHVybiB0aGlzLng9dGhpcy54LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpc30sQy5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9fSwzOTE4OChmZSxqLGgp'@; put 'eyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQ3MDExKSxjPWgoMjg0OTApLHM9aCg1NjY5OCksQT1oKDM2Njc3KSx2PXkuYXNzZXJ0O2Z1bmN0aW9uIEMoTCl7QS5jYWxsKHRoaXMsInNob3J0IixMKSx0aGlzLmE9bmV3IGMoTC5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBjKEwuYiwx'@; put 'NikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRv'@; put 'bW9ycGhpc20oTCksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gdyhMLFIseCxVKXtBLkJhc2VQb2ludC5jYWxsKHRoaXMsTCwiYWZmaW5lIiksbnVsbD09PVImJm51bGw9PT14Pyh0aGlzLng9bnVsbCx0aGlzLnk9'@; put 'bnVsbCx0aGlzLmluZj0hMCk6KHRoaXMueD1uZXcgYyhSLDE2KSx0aGlzLnk9bmV3IGMoeCwxNiksVSYmKHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCksdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5j'@; put 'dXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuaW5mPSExKX1mdW5jdGlvbiBTKEwsUix4LFUpe0EuQmFzZVBvaW50LmNhbGwodGhpcyxMLCJqYWNvYmlhbiIpLG51bGw9PT1SJiZudWxsPT09eCYmbnVsbD09PVU/KHRoaXMu'@; put 'eD10aGlzLmN1cnZlLm9uZSx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PW5ldyBjKDApKToodGhpcy54PW5ldyBjKFIsMTYpLHRoaXMueT1uZXcgYyh4LDE2KSx0aGlzLno9bmV3IGMoVSwxNikpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSks'@; put 'dGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZX1zKEMsQSksZmUuZXhwb3J0cz1DLEMucHJvdG90eXBl'@; put 'Ll9nZXRFbmRvbW9ycGhpc209ZnVuY3Rpb24oUil7aWYodGhpcy56ZXJvQSYmdGhpcy5nJiZ0aGlzLm4mJjE9PT10aGlzLnAubW9kbigzKSl7dmFyIHgsVTtpZihSLmJldGEpeD1uZXcgYyhSLmJldGEsMTYpLnRvUmVkKHRoaXMucmVkKTtlbHNle3ZhciBIPXRoaXMuX2dldEVuZG9Sb290cyh0'@; put 'aGlzLnApO3g9KHg9SFswXS5jbXAoSFsxXSk8MD9IWzBdOkhbMV0pLnRvUmVkKHRoaXMucmVkKX1pZihSLmxhbWJkYSlVPW5ldyBjKFIubGFtYmRhLDE2KTtlbHNle3ZhciBWPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pOzA9PT10aGlzLmcubXVsKFZbMF0pLnguY21wKHRoaXMuZy54LnJl'@; put 'ZE11bCh4KSk/VT1WWzBdOnYoMD09PXRoaXMuZy5tdWwoVT1WWzFdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoeCkpKX1yZXR1cm57YmV0YTp4LGxhbWJkYTpVLGJhc2lzOlIuYmFzaXM/Ui5iYXNpcy5tYXAoZnVuY3Rpb24oeil7cmV0dXJue2E6bmV3IGMoei5hLDE2KSxiOm5ldyBjKHouYiwx'@; put 'Nil9fSk6dGhpcy5fZ2V0RW5kb0Jhc2lzKFUpfX19LEMucHJvdG90eXBlLl9nZXRFbmRvUm9vdHM9ZnVuY3Rpb24oUil7dmFyIHg9Uj09PXRoaXMucD90aGlzLnJlZDpjLm1vbnQoUiksVT1uZXcgYygyKS50b1JlZCh4KS5yZWRJbnZtKCksSD1VLnJlZE5lZygpLFY9bmV3IGMoMykudG9SZWQo'@; put 'eCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bChVKTtyZXR1cm5bSC5yZWRBZGQoVikuZnJvbVJlZCgpLEgucmVkU3ViKFYpLmZyb21SZWQoKV19LEMucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9ZnVuY3Rpb24oUil7Zm9yKHZhciBGLFcscSxyZSxtZSxDZSxJZSxxZSxYLHg9dGhpcy5uLnVz'@; put 'aHJuKE1hdGguZmxvb3IodGhpcy5uLmJpdExlbmd0aCgpLzIpKSxVPVIsSD10aGlzLm4uY2xvbmUoKSxWPW5ldyBjKDEpLE49bmV3IGMoMCksej1uZXcgYygwKSxZPW5ldyBjKDEpLGtlPTA7MCE9PVUuY21wbigwKTspe3ZhciBmPUguZGl2KFUpO3FlPUguc3ViKGYubXVsKFUpKSxYPXouc3Vi'@; put 'KGYubXVsKFYpKTt2YXIgYj1ZLnN1YihmLm11bChOKSk7aWYoIXEmJnFlLmNtcCh4KTwwKUY9SWUubmVnKCksVz1WLHE9cWUubmVnKCkscmU9WDtlbHNlIGlmKHEmJjI9PT0rK2tlKWJyZWFrO0llPXFlLEg9VSxVPXFlLHo9VixWPVgsWT1OLE49Yn1tZT1xZS5uZWcoKSxDZT1YO3ZhciBrPXEu'@; put 'c3FyKCkuYWRkKHJlLnNxcigpKTtyZXR1cm4gbWUuc3FyKCkuYWRkKENlLnNxcigpKS5jbXAoayk+PTAmJihtZT1GLENlPVcpLHEubmVnYXRpdmUmJihxPXEubmVnKCkscmU9cmUubmVnKCkpLG1lLm5lZ2F0aXZlJiYobWU9bWUubmVnKCksQ2U9Q2UubmVnKCkpLFt7YTpxLGI6cmV9LHthOm1l'@; put 'LGI6Q2V9XX0sQy5wcm90b3R5cGUuX2VuZG9TcGxpdD1mdW5jdGlvbihSKXt2YXIgeD10aGlzLmVuZG8uYmFzaXMsVT14WzBdLEg9eFsxXSxWPUguYi5tdWwoUikuZGl2Um91bmQodGhpcy5uKSxOPVUuYi5uZWcoKS5tdWwoUikuZGl2Um91bmQodGhpcy5uKSx6PVYubXVsKFUuYSksWT1OLm11'@; put 'bChILmEpLEY9Vi5tdWwoVS5iKSxXPU4ubXVsKEguYik7cmV0dXJue2sxOlIuc3ViKHopLnN1YihZKSxrMjpGLmFkZChXKS5uZWcoKX19LEMucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oUix4KXsoUj1uZXcgYyhSLDE2KSkucmVkfHwoUj1SLnRvUmVkKHRoaXMucmVkKSk7dmFyIFU9'@; put 'Ui5yZWRTcXIoKS5yZWRNdWwoUikucmVkSUFkZChSLnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYiksSD1VLnJlZFNxcnQoKTtpZigwIT09SC5yZWRTcXIoKS5yZWRTdWIoVSkuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIFY9SC5mcm9t'@; put 'UmVkKCkuaXNPZGQoKTtyZXR1cm4oeCYmIVZ8fCF4JiZWKSYmKEg9SC5yZWROZWcoKSksdGhpcy5wb2ludChSLEgpfSxDLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihSKXtpZihSLmluZilyZXR1cm4hMDt2YXIgeD1SLngsVT1SLnksSD10aGlzLmEucmVkTXVsKHgpLFY9eC5yZWRTcXIo'@; put 'KS5yZWRNdWwoeCkucmVkSUFkZChIKS5yZWRJQWRkKHRoaXMuYik7cmV0dXJuIDA9PT1VLnJlZFNxcigpLnJlZElTdWIoVikuY21wbigwKX0sQy5wcm90b3R5cGUuX2VuZG9XbmFmTXVsQWRkPWZ1bmN0aW9uKFIseCxVKXtmb3IodmFyIEg9dGhpcy5fZW5kb1duYWZUMSxWPXRoaXMuX2VuZG9X'@; put 'bmFmVDIsTj0wO048Ui5sZW5ndGg7TisrKXt2YXIgej10aGlzLl9lbmRvU3BsaXQoeFtOXSksWT1SW05dLEY9WS5fZ2V0QmV0YSgpO3ouazEubmVnYXRpdmUmJih6LmsxLmluZWcoKSxZPVkubmVnKCEwKSksei5rMi5uZWdhdGl2ZSYmKHouazIuaW5lZygpLEY9Ri5uZWcoITApKSxIWzIqTl09'@; put 'WSxIWzIqTisxXT1GLFZbMipOXT16LmsxLFZbMipOKzFdPXouazJ9Zm9yKHZhciBXPXRoaXMuX3duYWZNdWxBZGQoMSxILFYsMipOLFUpLHE9MDtxPDIqTjtxKyspSFtxXT1udWxsLFZbcV09bnVsbDtyZXR1cm4gV30scyh3LEEuQmFzZVBvaW50KSxDLnByb3RvdHlwZS5wb2ludD1mdW5jdGlv'@; put 'bihSLHgsVSl7cmV0dXJuIG5ldyB3KHRoaXMsUix4LFUpfSxDLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKFIseCl7cmV0dXJuIHcuZnJvbUpTT04odGhpcyxSLHgpfSx3LnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe2lmKHRoaXMuY3VydmUuZW5kbyl7dmFyIFI9dGhp'@; put 'cy5wcmVjb21wdXRlZDtpZihSJiZSLmJldGEpcmV0dXJuIFIuYmV0YTt2YXIgeD10aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLHRoaXMueSk7aWYoUil7dmFyIFU9dGhpcy5jdXJ2ZSxIPWZ1bmN0aW9uKFYpe3JldHVybiBVLnBvaW50KFYueC5y'@; put 'ZWRNdWwoVS5lbmRvLmJldGEpLFYueSl9O1IuYmV0YT14LHgucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxuYWY6Ui5uYWYmJnt3bmQ6Ui5uYWYud25kLHBvaW50czpSLm5hZi5wb2ludHMubWFwKEgpfSxkb3VibGVzOlIuZG91YmxlcyYme3N0ZXA6Ui5kb3VibGVzLnN0ZXAscG9pbnRzOlIuZG91'@; put 'Ymxlcy5wb2ludHMubWFwKEgpfX19cmV0dXJuIHh9fSx3LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmVjb21wdXRlZD9bdGhpcy54LHRoaXMueSx0aGlzLnByZWNvbXB1dGVkJiZ7ZG91Ymxlczp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMmJntzdGVwOnRoaXMu'@; put 'cHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpfSxuYWY6dGhpcy5wcmVjb21wdXRlZC5uYWYmJnt3bmQ6dGhpcy5wcmVjb21wdXRlZC5uYWYud25kLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMu'@; put 'c2xpY2UoMSl9fV06W3RoaXMueCx0aGlzLnldfSx3LmZyb21KU09OPWZ1bmN0aW9uKFIseCxVKXsic3RyaW5nIj09dHlwZW9mIHgmJih4PUpTT04ucGFyc2UoeCkpO3ZhciBIPVIucG9pbnQoeFswXSx4WzFdLFUpO2lmKCF4WzJdKXJldHVybiBIO2Z1bmN0aW9uIFYoeil7cmV0dXJuIFIucG9p'@; put 'bnQoelswXSx6WzFdLFUpfXZhciBOPXhbMl07cmV0dXJuIEgucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxkb3VibGVzOk4uZG91YmxlcyYme3N0ZXA6Ti5kb3VibGVzLnN0ZXAscG9pbnRzOltIXS5jb25jYXQoTi5kb3VibGVzLnBvaW50cy5tYXAoVikpfSxuYWY6Ti5uYWYmJnt3bmQ6Ti5uYWYu'@; put 'd25kLHBvaW50czpbSF0uY29uY2F0KE4ubmFmLnBvaW50cy5tYXAoVikpfX0sSH0sdy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJp'@; put 'bmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSx3LnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mfSx3LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oUil7aWYodGhpcy5pbmYpcmV0dXJuIFI7aWYoUi5pbmYpcmV0'@; put 'dXJuIHRoaXM7aWYodGhpcy5lcShSKSlyZXR1cm4gdGhpcy5kYmwoKTtpZih0aGlzLm5lZygpLmVxKFIpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAoUi54KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciB4PXRoaXMu'@; put 'eS5yZWRTdWIoUi55KTswIT09eC5jbXBuKDApJiYoeD14LnJlZE11bCh0aGlzLngucmVkU3ViKFIueCkucmVkSW52bSgpKSk7dmFyIFU9eC5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihSLngpLEg9eC5yZWRNdWwodGhpcy54LnJlZFN1YihVKSkucmVkSVN1Yih0aGlzLnkpO3Jl'@; put 'dHVybiB0aGlzLmN1cnZlLnBvaW50KFUsSCl9LHcucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBSPXRoaXMueS5yZWRBZGQodGhpcy55KTtpZigwPT09Ui5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIHg9'@; put 'dGhpcy5jdXJ2ZS5hLFU9dGhpcy54LnJlZFNxcigpLEg9Ui5yZWRJbnZtKCksVj1VLnJlZEFkZChVKS5yZWRJQWRkKFUpLnJlZElBZGQoeCkucmVkTXVsKEgpLE49Vi5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueC5yZWRBZGQodGhpcy54KSksej1WLnJlZE11bCh0aGlzLngucmVkU3ViKE4pKS5y'@; put 'ZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoTix6KX0sdy5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnguZnJvbVJlZCgpfSx3LnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueS5mcm9tUmVkKCl9LHcucHJvdG90eXBlLm11'@; put 'bD1mdW5jdGlvbihSKXtyZXR1cm4gUj1uZXcgYyhSLDE2KSx0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuX2hhc0RvdWJsZXMoUik/dGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxSKTp0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoW3RoaXNdLFtSXSk6'@; put 'dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLFIpfSx3LnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oUix4LFUpe3ZhciBIPVt0aGlzLHhdLFY9W1IsVV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChILFYpOnRoaXMuY3VydmUuX3duYWZNdWxBZGQo'@; put 'MSxILFYsMil9LHcucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24oUix4LFUpe3ZhciBIPVt0aGlzLHhdLFY9W1IsVV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChILFYsITApOnRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxILFYsMiwhMCl9LHcu'@; put 'cHJvdG90eXBlLmVxPWZ1bmN0aW9uKFIpe3JldHVybiB0aGlzPT09Unx8dGhpcy5pbmY9PT1SLmluZiYmKHRoaXMuaW5mfHwwPT09dGhpcy54LmNtcChSLngpJiYwPT09dGhpcy55LmNtcChSLnkpKX0sdy5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKFIpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlz'@; put 'O3ZhciB4PXRoaXMuY3VydmUucG9pbnQodGhpcy54LHRoaXMueS5yZWROZWcoKSk7aWYoUiYmdGhpcy5wcmVjb21wdXRlZCl7dmFyIFU9dGhpcy5wcmVjb21wdXRlZCxIPWZ1bmN0aW9uKFYpe3JldHVybiBWLm5lZygpfTt4LnByZWNvbXB1dGVkPXtuYWY6VS5uYWYmJnt3bmQ6VS5uYWYud25k'@; put 'LHBvaW50czpVLm5hZi5wb2ludHMubWFwKEgpfSxkb3VibGVzOlUuZG91YmxlcyYme3N0ZXA6VS5kb3VibGVzLnN0ZXAscG9pbnRzOlUuZG91Ymxlcy5wb2ludHMubWFwKEgpfX19cmV0dXJuIHh9LHcucHJvdG90eXBlLnRvSj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZj90aGlzLmN1cnZl'@; put 'Lmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LHRoaXMueSx0aGlzLmN1cnZlLm9uZSl9LHMoUyxBLkJhc2VQb2ludCksQy5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uKFIseCxVKXtyZXR1cm4gbmV3IFModGhpcyxSLHgsVSl9LFMucHJvdG90eXBlLnRv'@; put 'UD1mdW5jdGlvbigpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIFI9dGhpcy56LnJlZEludm0oKSx4PVIucmVkU3FyKCksVT10aGlzLngucmVkTXVsKHgpLEg9dGhpcy55LnJlZE11bCh4KS5yZWRNdWwoUik7cmV0dXJuIHRoaXMu'@; put 'Y3VydmUucG9pbnQoVSxIKX0sUy5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCksdGhpcy56KX0sUy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFIpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBSO2lmKFIu'@; put 'aXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciB4PVIuei5yZWRTcXIoKSxVPXRoaXMuei5yZWRTcXIoKSxIPXRoaXMueC5yZWRNdWwoeCksVj1SLngucmVkTXVsKFUpLE49dGhpcy55LnJlZE11bCh4LnJlZE11bChSLnopKSx6PVIueS5yZWRNdWwoVS5yZWRNdWwodGhpcy56KSksWT1ILnJl'@; put 'ZFN1YihWKSxGPU4ucmVkU3ViKHopO2lmKDA9PT1ZLmNtcG4oMCkpcmV0dXJuIDAhPT1GLmNtcG4oMCk/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpOnRoaXMuZGJsKCk7dmFyIFc9WS5yZWRTcXIoKSxxPVcucmVkTXVsKFkpLHJlPUgucmVkTXVsKFcpLG1lPUYucmVkU3FyKCku'@; put 'cmVkSUFkZChxKS5yZWRJU3ViKHJlKS5yZWRJU3ViKHJlKSxDZT1GLnJlZE11bChyZS5yZWRJU3ViKG1lKSkucmVkSVN1YihOLnJlZE11bChxKSksSWU9dGhpcy56LnJlZE11bChSLnopLnJlZE11bChZKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobWUsQ2UsSWUpfSxTLnByb3RvdHlwZS5t'@; put 'aXhlZEFkZD1mdW5jdGlvbihSKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gUi50b0ooKTtpZihSLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgeD10aGlzLnoucmVkU3FyKCksVT10aGlzLngsSD1SLngucmVkTXVsKHgpLFY9dGhpcy55LE49Ui55LnJlZE11bCh4KS5yZWRNdWwo'@; put 'dGhpcy56KSx6PVUucmVkU3ViKEgpLFk9Vi5yZWRTdWIoTik7aWYoMD09PXouY21wbigwKSlyZXR1cm4gMCE9PVkuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgRj16LnJlZFNxcigpLFc9Ri5yZWRNdWwoeikscT1VLnJlZE11bChGKSxy'@; put 'ZT1ZLnJlZFNxcigpLnJlZElBZGQoVykucmVkSVN1YihxKS5yZWRJU3ViKHEpLG1lPVkucmVkTXVsKHEucmVkSVN1YihyZSkpLnJlZElTdWIoVi5yZWRNdWwoVykpLENlPXRoaXMuei5yZWRNdWwoeik7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHJlLG1lLENlKX0sUy5wcm90b3R5cGUuZGJs'@; put 'cD1mdW5jdGlvbihSKXtpZigwPT09UilyZXR1cm4gdGhpcztpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZighUilyZXR1cm4gdGhpcy5kYmwoKTt2YXIgeDtpZih0aGlzLmN1cnZlLnplcm9BfHx0aGlzLmN1cnZlLnRocmVlQSl7dmFyIFU9dGhpcztmb3IoeD0wO3g8Ujt4Kysp'@; put 'VT1VLmRibCgpO3JldHVybiBVfXZhciBIPXRoaXMuY3VydmUuYSxWPXRoaXMuY3VydmUudGludixOPXRoaXMueCx6PXRoaXMueSxZPXRoaXMueixGPVkucmVkU3FyKCkucmVkU3FyKCksVz16LnJlZEFkZCh6KTtmb3IoeD0wO3g8Ujt4Kyspe3ZhciBxPU4ucmVkU3FyKCkscmU9Vy5yZWRTcXIo'@; put 'KSxtZT1yZS5yZWRTcXIoKSxDZT1xLnJlZEFkZChxKS5yZWRJQWRkKHEpLnJlZElBZGQoSC5yZWRNdWwoRikpLEllPU4ucmVkTXVsKHJlKSxrZT1DZS5yZWRTcXIoKS5yZWRJU3ViKEllLnJlZEFkZChJZSkpLHFlPUllLnJlZElTdWIoa2UpLFg9Q2UucmVkTXVsKHFlKTtYPVgucmVkSUFkZChY'@; put 'KS5yZWRJU3ViKG1lKTt2YXIgZj1XLnJlZE11bChZKTt4KzE8UiYmKEY9Ri5yZWRNdWwobWUpKSxOPWtlLFk9ZixXPVh9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KE4sVy5yZWRNdWwoViksWSl9LFMucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90'@; put 'aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRoaXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LFMucHJvdG90eXBlLl96ZXJvRGJsPWZ1bmN0aW9uKCl7dmFyIFIseCxVO2lmKHRoaXMuek9uZSl7dmFyIEg9dGhpcy54LnJlZFNxcigpLFY9'@; put 'dGhpcy55LnJlZFNxcigpLE49Vi5yZWRTcXIoKSx6PXRoaXMueC5yZWRBZGQoVikucmVkU3FyKCkucmVkSVN1YihIKS5yZWRJU3ViKE4pO3o9ei5yZWRJQWRkKHopO3ZhciBZPUgucmVkQWRkKEgpLnJlZElBZGQoSCksRj1ZLnJlZFNxcigpLnJlZElTdWIoeikucmVkSVN1Yih6KSxXPU4ucmVk'@; put 'SUFkZChOKTtXPShXPVcucmVkSUFkZChXKSkucmVkSUFkZChXKSxSPUYseD1ZLnJlZE11bCh6LnJlZElTdWIoRikpLnJlZElTdWIoVyksVT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgcT10aGlzLngucmVkU3FyKCkscmU9dGhpcy55LnJlZFNxcigpLG1lPXJlLnJlZFNxcigpLENl'@; put 'PXRoaXMueC5yZWRBZGQocmUpLnJlZFNxcigpLnJlZElTdWIocSkucmVkSVN1YihtZSk7Q2U9Q2UucmVkSUFkZChDZSk7dmFyIEllPXEucmVkQWRkKHEpLnJlZElBZGQocSksa2U9SWUucmVkU3FyKCkscWU9bWUucmVkSUFkZChtZSk7cWU9KHFlPXFlLnJlZElBZGQocWUpKS5yZWRJQWRkKHFl'@; put 'KSxSPWtlLnJlZElTdWIoQ2UpLnJlZElTdWIoQ2UpLHg9SWUucmVkTXVsKENlLnJlZElTdWIoUikpLnJlZElTdWIocWUpLFU9KFU9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKFUpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChSLHgsVSl9LFMucHJvdG90eXBlLl90aHJlZURibD1m'@; put 'dW5jdGlvbigpe3ZhciBSLHgsVTtpZih0aGlzLnpPbmUpe3ZhciBIPXRoaXMueC5yZWRTcXIoKSxWPXRoaXMueS5yZWRTcXIoKSxOPVYucmVkU3FyKCksej10aGlzLngucmVkQWRkKFYpLnJlZFNxcigpLnJlZElTdWIoSCkucmVkSVN1YihOKTt6PXoucmVkSUFkZCh6KTt2YXIgWT1ILnJlZEFk'@; put 'ZChIKS5yZWRJQWRkKEgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKSxGPVkucmVkU3FyKCkucmVkSVN1Yih6KS5yZWRJU3ViKHopO1I9Rjt2YXIgVz1OLnJlZElBZGQoTik7Vz0oVz1XLnJlZElBZGQoVykpLnJlZElBZGQoVykseD1ZLnJlZE11bCh6LnJlZElTdWIoRikpLnJlZElTdWIoVyksVT10'@; put 'aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgcT10aGlzLnoucmVkU3FyKCkscmU9dGhpcy55LnJlZFNxcigpLG1lPXRoaXMueC5yZWRNdWwocmUpLENlPXRoaXMueC5yZWRTdWIocSkucmVkTXVsKHRoaXMueC5yZWRBZGQocSkpO0NlPUNlLnJlZEFkZChDZSkucmVkSUFkZChDZSk7dmFy'@; put 'IEllPW1lLnJlZElBZGQobWUpLGtlPShJZT1JZS5yZWRJQWRkKEllKSkucmVkQWRkKEllKTtSPUNlLnJlZFNxcigpLnJlZElTdWIoa2UpLFU9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIocmUpLnJlZElTdWIocSk7dmFyIHFlPXJlLnJlZFNxcigpO3FlPShxZT0ocWU9'@; put 'cWUucmVkSUFkZChxZSkpLnJlZElBZGQocWUpKS5yZWRJQWRkKHFlKSx4PUNlLnJlZE11bChJZS5yZWRJU3ViKFIpKS5yZWRJU3ViKHFlKX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoUix4LFUpfSxTLnByb3RvdHlwZS5fZGJsPWZ1bmN0aW9uKCl7dmFyIFI9dGhpcy5jdXJ2ZS5hLHg9dGhp'@; put 'cy54LFU9dGhpcy55LEg9dGhpcy56LFY9SC5yZWRTcXIoKS5yZWRTcXIoKSxOPXgucmVkU3FyKCksej1VLnJlZFNxcigpLFk9Ti5yZWRBZGQoTikucmVkSUFkZChOKS5yZWRJQWRkKFIucmVkTXVsKFYpKSxGPXgucmVkQWRkKHgpLFc9KEY9Ri5yZWRJQWRkKEYpKS5yZWRNdWwoeikscT1ZLnJl'@; put 'ZFNxcigpLnJlZElTdWIoVy5yZWRBZGQoVykpLHJlPVcucmVkSVN1YihxKSxtZT16LnJlZFNxcigpO21lPShtZT0obWU9bWUucmVkSUFkZChtZSkpLnJlZElBZGQobWUpKS5yZWRJQWRkKG1lKTt2YXIgQ2U9WS5yZWRNdWwocmUpLnJlZElTdWIobWUpLEllPVUucmVkQWRkKFUpLnJlZE11bChI'@; put 'KTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQocSxDZSxJZSl9LFMucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIFI9dGhpcy54LnJlZFNxcigpLHg9dGhpcy55LnJlZFNxcigpLFU9dGhpcy56LnJl'@; put 'ZFNxcigpLEg9eC5yZWRTcXIoKSxWPVIucmVkQWRkKFIpLnJlZElBZGQoUiksTj1WLnJlZFNxcigpLHo9dGhpcy54LnJlZEFkZCh4KS5yZWRTcXIoKS5yZWRJU3ViKFIpLnJlZElTdWIoSCksWT0oej0oej0oej16LnJlZElBZGQoeikpLnJlZEFkZCh6KS5yZWRJQWRkKHopKS5yZWRJU3ViKE4p'@; put 'KS5yZWRTcXIoKSxGPUgucmVkSUFkZChIKTtGPShGPShGPUYucmVkSUFkZChGKSkucmVkSUFkZChGKSkucmVkSUFkZChGKTt2YXIgVz1WLnJlZElBZGQoeikucmVkU3FyKCkucmVkSVN1YihOKS5yZWRJU3ViKFkpLnJlZElTdWIoRikscT14LnJlZE11bChXKTtxPShxPXEucmVkSUFkZChxKSku'@; put 'cmVkSUFkZChxKTt2YXIgcmU9dGhpcy54LnJlZE11bChZKS5yZWRJU3ViKHEpO3JlPShyZT1yZS5yZWRJQWRkKHJlKSkucmVkSUFkZChyZSk7dmFyIG1lPXRoaXMueS5yZWRNdWwoVy5yZWRNdWwoRi5yZWRJU3ViKFcpKS5yZWRJU3ViKHoucmVkTXVsKFkpKSk7bWU9KG1lPShtZT1tZS5yZWRJ'@; put 'QWRkKG1lKSkucmVkSUFkZChtZSkpLnJlZElBZGQobWUpO3ZhciBDZT10aGlzLnoucmVkQWRkKHopLnJlZFNxcigpLnJlZElTdWIoVSkucmVkSVN1YihZKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQocmUsbWUsQ2UpfSxTLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oUix4KXtyZXR1cm4gUj1u'@; put 'ZXcgYyhSLHgpLHRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxSKX0sUy5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oUil7aWYoImFmZmluZSI9PT1SLnR5cGUpcmV0dXJuIHRoaXMuZXEoUi50b0ooKSk7aWYodGhpcz09PVIpcmV0dXJuITA7dmFyIHg9dGhpcy56LnJlZFNxcigpLFU9Ui56LnJlZFNx'@; put 'cigpO2lmKDAhPT10aGlzLngucmVkTXVsKFUpLnJlZElTdWIoUi54LnJlZE11bCh4KSkuY21wbigwKSlyZXR1cm4hMTt2YXIgSD14LnJlZE11bCh0aGlzLnopLFY9VS5yZWRNdWwoUi56KTtyZXR1cm4gMD09PXRoaXMueS5yZWRNdWwoVikucmVkSVN1YihSLnkucmVkTXVsKEgpKS5jbXBuKDAp'@; put 'fSxTLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24oUil7dmFyIHg9dGhpcy56LnJlZFNxcigpLFU9Ui50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHgpO2lmKDA9PT10aGlzLnguY21wKFUpKXJldHVybiEwO2Zvcih2YXIgSD1SLmNsb25lKCksVj10aGlzLmN1cnZlLnJlZE4ucmVkTXVs'@; put 'KHgpOzspe2lmKEguaWFkZCh0aGlzLmN1cnZlLm4pLEguY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoVS5yZWRJQWRkKFYpLDA9PT10aGlzLnguY21wKFUpKXJldHVybiEwfX0sUy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8i'@; put 'PEVDIEpQb2ludCBJbmZpbml0eT4iOiI8RUMgSlBvaW50IHg6ICIrdGhpcy54LnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei50b1N0cmluZygxNiwyKSsiPiJ9LFMucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4g'@; put 'MD09PXRoaXMuei5jbXBuKDApfX0sNjA0ODAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIFMseT1qLGM9aCg3Nzk1Mikscz1oKDg5NCksdj1oKDQ3MDExKS5hc3NlcnQ7ZnVuY3Rpb24gQyhMKXt0aGlzLmN1cnZlPSJzaG9ydCI9PT1MLnR5cGU/bmV3IHMuc2hvcnQoTCk6ImVkd2FyZHMiPT09'@; put 'TC50eXBlP25ldyBzLmVkd2FyZHMoTCk6bmV3IHMubW9udChMKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPUwuaGFzaCx2KHRoaXMuZy52YWxpZGF0ZSgpLCJJbnZhbGlkIGN1cnZlIiksdih0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgp'@; put 'LCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTyIpfWZ1bmN0aW9uIHcoTCxSKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoeSxMLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgeD1uZXcgQyhSKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHksTCx7'@; put 'Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6eH0pLHh9fSl9eS5QcmVzZXRDdXJ2ZT1DLHcoInAxOTIiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAxOTIiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZm'@; put 'ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxIixo'@; put 'YXNoOmMuc2hhMjU2LGdSZWQ6ITEsZzpbIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyIiwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTEiXX0pLHcoInAyMjQiLHt0eXBlOiJzaG9ydCIscHJp'@; put 'bWU6InAyMjQiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSIsYjoiYjQwNTBhODUgMGMwNGIzYWIg'@; put 'ZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkIixoYXNoOmMuc2hhMjU2LGdSZWQ6ITEsZzpbImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5'@; put 'IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxIiwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQiXX0pLHcoInAyNTYiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAw'@; put 'MDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJj'@; put 'IDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiIixuOiJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MSIsaGFzaDpjLnNoYTI1NixnUmVkOiExLGc6WyI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZl'@; put 'NSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NiIsIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1Il19KSx3KCJwMzg0Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZm'@; put 'ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm'@; put 'ZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjIixiOiJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiA1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZiIs'@; put 'bjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMiLGhhc2g6Yy5zaGEzODQsZ1JlZDohMSxnOlsiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUg'@; put 'ZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjciLCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAwYTYwYjFjZSAx'@; put 'ZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZiJdfSksdygicDUyMSIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm'@; put 'IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm'@; put 'ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgM2JiMWJm'@; put 'MDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAiLG46IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4IGY3MDlhNWQwIDNiYjVj'@; put 'OWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5IixoYXNoOmMuc2hhNTEyLGdSZWQ6ITEsZzpbIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5IDA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3'@; put 'IGEyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2IiwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgM2ZhZDA3NjEg'@; put 'MzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAiXX0pLHcoImN1cnZlMjU1MTkiLHt0eXBlOiJtb250IixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiI3NmQwNiIs'@; put 'YjoiMSIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpjLnNoYTI1NixnUmVkOiExLGc6WyI5Il19KSx3KCJlZDI1NTE5Iix7dHlwZToiZWR3YXJkcyIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZm'@; put 'ZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiLTEiLGM6IjEiLGQ6IjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMiLG46IjEwMDAwMDAwMDAwMDAwMDAg'@; put 'MDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6Yy5zaGEyNTYsZ1JlZDohMSxnOlsiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYSIsIjY2NjY2NjY2NjY2NjY2NjY2NjY2'@; put 'NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgiXX0pO3RyeXtTPWgoNzQwMTEpfWNhdGNoe1M9dm9pZCAwfXcoInNlY3AyNTZrMSIse3R5cGU6InNob3J0IixwcmltZToiazI1NiIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm'@; put 'ZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiLGE6IjAiLGI6IjciLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxIixoOiIxIixoYXNoOmMuc2hhMjU2LGJldGE6IjdhZTk2YTJiNjU3YzA3MTA2ZTY0'@; put 'NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiLGxhbWJkYToiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MiIsYmFzaXM6W3thOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSIs'@; put 'YjoiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIn0se2E6IjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIsYjoiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUifV0sZ1JlZDohMSxnOlsiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjli'@; put 'ZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgiLFNdfSl9LDU3NDQ3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjg0OTApLGM9aCgzMjcyMykscz1oKDQ3MDEx'@; put 'KSxBPWgoNjA0ODApLHY9aCgxNTAzNyksQz1zLmFzc2VydCx3PWgoNjEyMDApLFM9aCgyODU0NSk7ZnVuY3Rpb24gTChSKXtpZighKHRoaXMgaW5zdGFuY2VvZiBMKSlyZXR1cm4gbmV3IEwoUik7InN0cmluZyI9PXR5cGVvZiBSJiYoQyhPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5'@; put 'LmNhbGwoQSxSKSwiVW5rbm93biBjdXJ2ZSAiK1IpLFI9QVtSXSksUiBpbnN0YW5jZW9mIEEuUHJlc2V0Q3VydmUmJihSPXtjdXJ2ZTpSfSksdGhpcy5jdXJ2ZT1SLmN1cnZlLmN1cnZlLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5uaD10aGlzLm4udXNocm4oMSksdGhpcy5nPXRoaXMuY3Vy'@; put 'dmUuZyx0aGlzLmc9Ui5jdXJ2ZS5nLHRoaXMuZy5wcmVjb21wdXRlKFIuY3VydmUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLmhhc2g9Ui5oYXNofHxSLmN1cnZlLmhhc2h9ZmUuZXhwb3J0cz1MLEwucHJvdG90eXBlLmtleVBhaXI9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyB3KHRoaXMseCl9LEwu'@; put 'cHJvdG90eXBlLmtleUZyb21Qcml2YXRlPWZ1bmN0aW9uKHgsVSl7cmV0dXJuIHcuZnJvbVByaXZhdGUodGhpcyx4LFUpfSxMLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKHgsVSl7cmV0dXJuIHcuZnJvbVB1YmxpYyh0aGlzLHgsVSl9LEwucHJvdG90eXBlLmdlbktleVBhaXI9'@; put 'ZnVuY3Rpb24oeCl7eHx8KHg9e30pO2Zvcih2YXIgVT1uZXcgYyh7aGFzaDp0aGlzLmhhc2gscGVyczp4LnBlcnMscGVyc0VuYzp4LnBlcnNFbmN8fCJ1dGY4IixlbnRyb3B5OnguZW50cm9weXx8dih0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxlbnRyb3B5RW5jOnguZW50cm9weSYmeC5lbnRy'@; put 'b3B5RW5jfHwidXRmOCIsbm9uY2U6dGhpcy5uLnRvQXJyYXkoKX0pLEg9dGhpcy5uLmJ5dGVMZW5ndGgoKSxWPXRoaXMubi5zdWIobmV3IHkoMikpOzspe3ZhciBOPW5ldyB5KFUuZ2VuZXJhdGUoSCkpO2lmKCEoTi5jbXAoVik+MCkpcmV0dXJuIE4uaWFkZG4oMSksdGhpcy5rZXlGcm9tUHJp'@; put 'dmF0ZShOKX19LEwucHJvdG90eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbih4LFUsSCl7dmFyIFY7aWYoeS5pc0JOKHgpfHwibnVtYmVyIj09dHlwZW9mIHgpVj0oeD1uZXcgeSh4LDE2KSkuYnl0ZUxlbmd0aCgpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB4KVY9eC5sZW5ndGgseD1uZXcg'@; put 'eSh4LDE2KTtlbHNle3ZhciBOPXgudG9TdHJpbmcoKTtWPU4ubGVuZ3RoKzE+Pj4xLHg9bmV3IHkoTiwxNil9Im51bWJlciIhPXR5cGVvZiBIJiYoSD04KlYpO3ZhciB6PUgtdGhpcy5uLmJpdExlbmd0aCgpO3JldHVybiB6PjAmJih4PXgudXNocm4oeikpLCFVJiZ4LmNtcCh0aGlzLm4pPj0w'@; put 'P3guc3ViKHRoaXMubik6eH0sTC5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbih4LFUsSCxWKXtpZigib2JqZWN0Ij09dHlwZW9mIEgmJihWPUgsSD1udWxsKSxWfHwoVj17fSksInN0cmluZyIhPXR5cGVvZiB4JiYibnVtYmVyIiE9dHlwZW9mIHgmJiF5LmlzQk4oeCkpe0MoIm9iamVjdCI9PXR5'@; put 'cGVvZiB4JiZ4JiYibnVtYmVyIj09dHlwZW9mIHgubGVuZ3RoLCJFeHBlY3RlZCBtZXNzYWdlIHRvIGJlIGFuIGFycmF5LWxpa2UsIGEgaGV4IHN0cmluZywgb3IgYSBCTiBpbnN0YW5jZSIpLEMoeC5sZW5ndGg+Pj4wPT09eC5sZW5ndGgpO2Zvcih2YXIgTj0wO048eC5sZW5ndGg7TisrKUMo'@; put 'KDI1NSZ4W05dKT09PXhbTl0pfVU9dGhpcy5rZXlGcm9tUHJpdmF0ZShVLEgpLHg9dGhpcy5fdHJ1bmNhdGVUb04oeCwhMSxWLm1zZ0JpdExlbmd0aCksQygheC5pc05lZygpLCJDYW4gbm90IHNpZ24gYSBuZWdhdGl2ZSBtZXNzYWdlIik7dmFyIHo9dGhpcy5uLmJ5dGVMZW5ndGgoKSxZPVUu'@; put 'Z2V0UHJpdmF0ZSgpLnRvQXJyYXkoImJlIix6KSxGPXgudG9BcnJheSgiYmUiLHopO0MobmV3IHkoRikuZXEoeCksIkNhbiBub3Qgc2lnbiBtZXNzYWdlIik7Zm9yKHZhciBXPW5ldyBjKHtoYXNoOnRoaXMuaGFzaCxlbnRyb3B5Olksbm9uY2U6RixwZXJzOlYucGVycyxwZXJzRW5jOlYucGVy'@; put 'c0VuY3x8InV0ZjgifSkscT10aGlzLm4uc3ViKG5ldyB5KDEpKSxyZT0wOztyZSsrKXt2YXIgbWU9Vi5rP1YuayhyZSk6bmV3IHkoVy5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7aWYoISgobWU9dGhpcy5fdHJ1bmNhdGVUb04obWUsITApKS5jbXBuKDEpPD0wfHxtZS5jbXAocSk+'@; put 'PTApKXt2YXIgQ2U9dGhpcy5nLm11bChtZSk7aWYoIUNlLmlzSW5maW5pdHkoKSl7dmFyIEllPUNlLmdldFgoKSxrZT1JZS51bW9kKHRoaXMubik7aWYoMCE9PWtlLmNtcG4oMCkpe3ZhciBxZT1tZS5pbnZtKHRoaXMubikubXVsKGtlLm11bChVLmdldFByaXZhdGUoKSkuaWFkZCh4KSk7aWYo'@; put 'MCE9PShxZT1xZS51bW9kKHRoaXMubikpLmNtcG4oMCkpe3ZhciBYPShDZS5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09SWUuY21wKGtlKT8yOjApO3JldHVybiBWLmNhbm9uaWNhbCYmcWUuY21wKHRoaXMubmgpPjAmJihxZT10aGlzLm4uc3ViKHFlKSxYXj0xKSxuZXcgUyh7cjprZSxzOnFl'@; put 'LHJlY292ZXJ5UGFyYW06WH0pfX19fX19LEwucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbih4LFUsSCxWLE4pe058fChOPXt9KSx4PXRoaXMuX3RydW5jYXRlVG9OKHgsITEsTi5tc2dCaXRMZW5ndGgpLEg9dGhpcy5rZXlGcm9tUHVibGljKEgsVik7dmFyIHo9KFU9bmV3IFMoVSwiaGV4Iikp'@; put 'LnIsWT1VLnM7aWYoei5jbXBuKDEpPDB8fHouY21wKHRoaXMubik+PTB8fFkuY21wbigxKTwwfHxZLmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3ZhciByZSxGPVkuaW52bSh0aGlzLm4pLFc9Ri5tdWwoeCkudW1vZCh0aGlzLm4pLHE9Ri5tdWwoeikudW1vZCh0aGlzLm4pO3JldHVybiB0aGlz'@; put 'LmN1cnZlLl9tYXh3ZWxsVHJpY2s/IShyZT10aGlzLmcuam11bEFkZChXLEguZ2V0UHVibGljKCkscSkpLmlzSW5maW5pdHkoKSYmcmUuZXFYVG9QKHopOiEocmU9dGhpcy5nLm11bEFkZChXLEguZ2V0UHVibGljKCkscSkpLmlzSW5maW5pdHkoKSYmMD09PXJlLmdldFgoKS51bW9kKHRoaXMu'@; put 'bikuY21wKHopfSxMLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5PWZ1bmN0aW9uKFIseCxVLEgpe0MoKDMmVSk9PT1VLCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIikseD1uZXcgUyh4LEgpO3ZhciBWPXRoaXMubixOPW5ldyB5KFIpLHo9eC5yLFk9eC5zLEY9MSZV'@; put 'LFc9VT4+MTtpZih6LmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKT49MCYmVyl0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZSIpO3o9dGhpcy5jdXJ2ZS5wb2ludEZyb21YKFc/ei5hZGQodGhpcy5jdXJ2ZS5uKTp6LEYpO3Zh'@; put 'ciBxPXguci5pbnZtKFYpLHJlPVYuc3ViKE4pLm11bChxKS51bW9kKFYpLG1lPVkubXVsKHEpLnVtb2QoVik7cmV0dXJuIHRoaXMuZy5tdWxBZGQocmUseixtZSl9LEwucHJvdG90eXBlLmdldEtleVJlY292ZXJ5UGFyYW09ZnVuY3Rpb24oUix4LFUsSCl7aWYobnVsbCE9PSh4PW5ldyBTKHgs'@; put 'SCkpLnJlY292ZXJ5UGFyYW0pcmV0dXJuIHgucmVjb3ZlcnlQYXJhbTtmb3IodmFyIFY9MDtWPDQ7VisrKXt2YXIgTjt0cnl7Tj10aGlzLnJlY292ZXJQdWJLZXkoUix4LFYpfWNhdGNoe2NvbnRpbnVlfWlmKE4uZXEoVSkpcmV0dXJuIFZ9dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmlu'@; put 'ZCB2YWxpZCByZWNvdmVyeSBmYWN0b3IiKX19LDYxMjAwKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjg0OTApLHM9aCg0NzAxMSkuYXNzZXJ0O2Z1bmN0aW9uIEEodixDKXt0aGlzLmVjPXYsdGhpcy5wcml2PW51bGwsdGhpcy5wdWI9bnVsbCxDLnByaXYmJnRoaXMuX2ltcG9ydFBy'@; put 'aXZhdGUoQy5wcml2LEMucHJpdkVuYyksQy5wdWImJnRoaXMuX2ltcG9ydFB1YmxpYyhDLnB1YixDLnB1YkVuYyl9ZmUuZXhwb3J0cz1BLEEuZnJvbVB1YmxpYz1mdW5jdGlvbihDLHcsUyl7cmV0dXJuIHcgaW5zdGFuY2VvZiBBP3c6bmV3IEEoQyx7cHViOncscHViRW5jOlN9KX0sQS5mcm9t'@; put 'UHJpdmF0ZT1mdW5jdGlvbihDLHcsUyl7cmV0dXJuIHcgaW5zdGFuY2VvZiBBP3c6bmV3IEEoQyx7cHJpdjp3LHByaXZFbmM6U30pfSxBLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBDPXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIEMuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEs'@; put 'cmVhc29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTpDLnZhbGlkYXRlKCk/Qy5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDohMSxyZWFzb246IlB1YmxpYyBrZXkgKiBOICE9IE8ifTp7cmVzdWx0OiExLHJlYXNvbjoiUHVi'@; put 'bGljIGtleSBpcyBub3QgYSBwb2ludCJ9fSxBLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oQyx3KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEMmJih3PUMsQz1udWxsKSx0aGlzLnB1Ynx8KHRoaXMucHViPXRoaXMuZWMuZy5tdWwodGhpcy5wcml2KSksdz90aGlzLnB1Yi5lbmNvZGUo'@; put 'dyxDKTp0aGlzLnB1Yn0sQS5wcm90b3R5cGUuZ2V0UHJpdmF0ZT1mdW5jdGlvbihDKXtyZXR1cm4iaGV4Ij09PUM/dGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpOnRoaXMucHJpdn0sQS5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24oQyx3KXt0aGlzLnByaXY9bmV3IHkoQyx3fHwx'@; put 'NiksdGhpcy5wcml2PXRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubil9LEEucHJvdG90eXBlLl9pbXBvcnRQdWJsaWM9ZnVuY3Rpb24oQyx3KXtpZihDLnh8fEMueSlyZXR1cm4ibW9udCI9PT10aGlzLmVjLmN1cnZlLnR5cGU/cyhDLngsIk5lZWQgeCBjb29yZGluYXRlIik6KCJzaG9y'@; put 'dCI9PT10aGlzLmVjLmN1cnZlLnR5cGV8fCJlZHdhcmRzIj09PXRoaXMuZWMuY3VydmUudHlwZSkmJnMoQy54JiZDLnksIk5lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUiKSx2b2lkKHRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQoQy54LEMueSkpO3RoaXMucHViPXRoaXMuZWMuY3Vy'@; put 'dmUuZGVjb2RlUG9pbnQoQyx3KX0sQS5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKEMpe3JldHVybiBDLnZhbGlkYXRlKCl8fHMoQy52YWxpZGF0ZSgpLCJwdWJsaWMgcG9pbnQgbm90IHZhbGlkYXRlZCIpLEMubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxBLnByb3RvdHlwZS5zaWduPWZ1bmN0'@; put 'aW9uKEMsdyxTKXtyZXR1cm4gdGhpcy5lYy5zaWduKEMsdGhpcyx3LFMpfSxBLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oQyx3LFMpe3JldHVybiB0aGlzLmVjLnZlcmlmeShDLHcsdGhpcyx2b2lkIDAsUyl9LEEucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4iPEtleSBw'@; put 'cml2OiAiKyh0aGlzLnByaXYmJnRoaXMucHJpdi50b1N0cmluZygxNiwyKSkrIiBwdWI6ICIrKHRoaXMucHViJiZ0aGlzLnB1Yi5pbnNwZWN0KCkpKyIgPiJ9fSwyODU0NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDI4NDkwKSxjPWgoNDcwMTEpLHM9Yy5hc3NlcnQ7ZnVuY3Rpb24g'@; put 'QShMLFIpe2lmKEwgaW5zdGFuY2VvZiBBKXJldHVybiBMO3RoaXMuX2ltcG9ydERFUihMLFIpfHwocyhMLnImJkwucywiU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzIiksdGhpcy5yPW5ldyB5KEwuciwxNiksdGhpcy5zPW5ldyB5KEwucywxNiksdGhpcy5yZWNvdmVyeVBhcmFtPXZvaWQgMD09'@; put 'PUwucmVjb3ZlcnlQYXJhbT9udWxsOkwucmVjb3ZlcnlQYXJhbSl9ZnVuY3Rpb24gdigpe3RoaXMucGxhY2U9MH1mdW5jdGlvbiBDKEwsUil7dmFyIHg9TFtSLnBsYWNlKytdO2lmKCEoMTI4JngpKXJldHVybiB4O3ZhciBVPTE1Jng7aWYoMD09PVV8fFU+NHx8MD09PUxbUi5wbGFjZV0pcmV0'@; put 'dXJuITE7Zm9yKHZhciBIPTAsVj0wLE49Ui5wbGFjZTtWPFU7VisrLE4rKylIPDw9OCxIfD1MW05dLEg+Pj49MDtyZXR1cm4hKEg8PTEyNykmJihSLnBsYWNlPU4sSCl9ZnVuY3Rpb24gdyhMKXtmb3IodmFyIFI9MCx4PUwubGVuZ3RoLTE7IUxbUl0mJiEoMTI4JkxbUisxXSkmJlI8eDspUisr'@; put 'O3JldHVybiAwPT09Uj9MOkwuc2xpY2UoUil9ZnVuY3Rpb24gUyhMLFIpe2lmKFI8MTI4KUwucHVzaChSKTtlbHNle3ZhciB4PTErKE1hdGgubG9nKFIpL01hdGguTE4yPj4+Myk7Zm9yKEwucHVzaCgxMjh8eCk7LS14OylMLnB1c2goUj4+Pih4PDwzKSYyNTUpO0wucHVzaChSKX19ZmUuZXhw'@; put 'b3J0cz1BLEEucHJvdG90eXBlLl9pbXBvcnRERVI9ZnVuY3Rpb24oUix4KXtSPWMudG9BcnJheShSLHgpO3ZhciBVPW5ldyB2O2lmKDQ4IT09UltVLnBsYWNlKytdKXJldHVybiExO3ZhciBIPUMoUixVKTtpZighMT09PUh8fEgrVS5wbGFjZSE9PVIubGVuZ3RofHwyIT09UltVLnBsYWNlKytd'@; put 'KXJldHVybiExO3ZhciBWPUMoUixVKTtpZighMT09PVZ8fDEyOCZSW1UucGxhY2VdKXJldHVybiExO3ZhciBOPVIuc2xpY2UoVS5wbGFjZSxWK1UucGxhY2UpO2lmKFUucGxhY2UrPVYsMiE9PVJbVS5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgej1DKFIsVSk7aWYoITE9PT16fHxSLmxlbmd0aCE9'@; put 'PXorVS5wbGFjZXx8MTI4JlJbVS5wbGFjZV0pcmV0dXJuITE7dmFyIFk9Ui5zbGljZShVLnBsYWNlLHorVS5wbGFjZSk7aWYoMD09PU5bMF0pe2lmKCEoMTI4Jk5bMV0pKXJldHVybiExO049Ti5zbGljZSgxKX1pZigwPT09WVswXSl7aWYoISgxMjgmWVsxXSkpcmV0dXJuITE7WT1ZLnNsaWNl'@; put 'KDEpfXJldHVybiB0aGlzLnI9bmV3IHkoTiksdGhpcy5zPW5ldyB5KFkpLHRoaXMucmVjb3ZlcnlQYXJhbT1udWxsLCEwfSxBLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbihSKXt2YXIgeD10aGlzLnIudG9BcnJheSgpLFU9dGhpcy5zLnRvQXJyYXkoKTtmb3IoMTI4JnhbMF0mJih4PVswXS5j'@; put 'b25jYXQoeCkpLDEyOCZVWzBdJiYoVT1bMF0uY29uY2F0KFUpKSx4PXcoeCksVT13KFUpOyEoVVswXXx8MTI4JlVbMV0pOylVPVUuc2xpY2UoMSk7dmFyIEg9WzJdO1MoSCx4Lmxlbmd0aCksKEg9SC5jb25jYXQoeCkpLnB1c2goMiksUyhILFUubGVuZ3RoKTt2YXIgVj1ILmNvbmNhdChVKSxO'@; put 'PVs0OF07cmV0dXJuIFMoTixWLmxlbmd0aCksTj1OLmNvbmNhdChWKSxjLmVuY29kZShOLFIpfX0sODY1MChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDc3OTUyKSxjPWgoNjA0ODApLHM9aCg0NzAxMSksQT1zLmFzc2VydCx2PXMucGFyc2VCeXRlcyxDPWgoNDY2NjEpLHc9aCg5MDIy'@; put 'MCk7ZnVuY3Rpb24gUyhMKXtpZihBKCJlZDI1NTE5Ij09PUwsIm9ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXIiKSwhKHRoaXMgaW5zdGFuY2VvZiBTKSlyZXR1cm4gbmV3IFMoTCk7dGhpcy5jdXJ2ZT1MPWNbTF0uY3VydmUsdGhpcy5nPUwuZyx0aGlzLmcucHJlY29tcHV0ZShMLm4u'@; put 'Yml0TGVuZ3RoKCkrMSksdGhpcy5wb2ludENsYXNzPUwucG9pbnQoKS5jb25zdHJ1Y3Rvcix0aGlzLmVuY29kaW5nTGVuZ3RoPU1hdGguY2VpbChMLm4uYml0TGVuZ3RoKCkvOCksdGhpcy5oYXNoPXkuc2hhNTEyfWZlLmV4cG9ydHM9UyxTLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFIseCl7'@; put 'Uj12KFIpO3ZhciBVPXRoaXMua2V5RnJvbVNlY3JldCh4KSxIPXRoaXMuaGFzaEludChVLm1lc3NhZ2VQcmVmaXgoKSxSKSxWPXRoaXMuZy5tdWwoSCksTj10aGlzLmVuY29kZVBvaW50KFYpLHo9dGhpcy5oYXNoSW50KE4sVS5wdWJCeXRlcygpLFIpLm11bChVLnByaXYoKSksWT1ILmFkZCh6'@; put 'KS51bW9kKHRoaXMuY3VydmUubik7cmV0dXJuIHRoaXMubWFrZVNpZ25hdHVyZSh7UjpWLFM6WSxSZW5jb2RlZDpOfSl9LFMucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihSLHgsVSl7aWYoUj12KFIpLCh4PXRoaXMubWFrZVNpZ25hdHVyZSh4KSkuUygpLmd0ZSh4LmVkZHNhLmN1cnZlLm4p'@; put 'fHx4LlMoKS5pc05lZygpKXJldHVybiExO3ZhciBIPXRoaXMua2V5RnJvbVB1YmxpYyhVKSxWPXRoaXMuaGFzaEludCh4LlJlbmNvZGVkKCksSC5wdWJCeXRlcygpLFIpLE49dGhpcy5nLm11bCh4LlMoKSk7cmV0dXJuIHguUigpLmFkZChILnB1YigpLm11bChWKSkuZXEoTil9LFMucHJvdG90'@; put 'eXBlLmhhc2hJbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIFI9dGhpcy5oYXNoKCkseD0wO3g8YXJndW1lbnRzLmxlbmd0aDt4KyspUi51cGRhdGUoYXJndW1lbnRzW3hdKTtyZXR1cm4gcy5pbnRGcm9tTEUoUi5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pfSxTLnByb3RvdHlwZS5rZXlGcm9t'@; put 'UHVibGljPWZ1bmN0aW9uKFIpe3JldHVybiBDLmZyb21QdWJsaWModGhpcyxSKX0sUy5wcm90b3R5cGUua2V5RnJvbVNlY3JldD1mdW5jdGlvbihSKXtyZXR1cm4gQy5mcm9tU2VjcmV0KHRoaXMsUil9LFMucHJvdG90eXBlLm1ha2VTaWduYXR1cmU9ZnVuY3Rpb24oUil7cmV0dXJuIFIgaW5z'@; put 'dGFuY2VvZiB3P1I6bmV3IHcodGhpcyxSKX0sUy5wcm90b3R5cGUuZW5jb2RlUG9pbnQ9ZnVuY3Rpb24oUil7dmFyIHg9Ui5nZXRZKCkudG9BcnJheSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpO3JldHVybiB4W3RoaXMuZW5jb2RpbmdMZW5ndGgtMV18PVIuZ2V0WCgpLmlzT2RkKCk/MTI4'@; put 'OjAseH0sUy5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oUil7dmFyIHg9KFI9cy5wYXJzZUJ5dGVzKFIpKS5sZW5ndGgtMSxVPVIuc2xpY2UoMCx4KS5jb25jYXQoLTEyOSZSW3hdKSxIPSEhKDEyOCZSW3hdKSxWPXMuaW50RnJvbUxFKFUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50'@; put 'RnJvbVkoVixIKX0sUy5wcm90b3R5cGUuZW5jb2RlSW50PWZ1bmN0aW9uKFIpe3JldHVybiBSLnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0sUy5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKFIpe3JldHVybiBzLmludEZyb21MRShSKX0sUy5wcm90b3R5cGUuaXNQb2lu'@; put 'dD1mdW5jdGlvbihSKXtyZXR1cm4gUiBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc319LDQ2NjYxKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDcwMTEpLGM9eS5hc3NlcnQscz15LnBhcnNlQnl0ZXMsQT15LmNhY2hlZFByb3BlcnR5O2Z1bmN0aW9uIHYoQyx3KXt0aGlzLmVkZHNh'@; put 'PUMsdGhpcy5fc2VjcmV0PXMody5zZWNyZXQpLEMuaXNQb2ludCh3LnB1Yik/dGhpcy5fcHViPXcucHViOnRoaXMuX3B1YkJ5dGVzPXMody5wdWIpfXYuZnJvbVB1YmxpYz1mdW5jdGlvbih3LFMpe3JldHVybiBTIGluc3RhbmNlb2Ygdj9TOm5ldyB2KHcse3B1YjpTfSl9LHYuZnJvbVNlY3Jl'@; put 'dD1mdW5jdGlvbih3LFMpe3JldHVybiBTIGluc3RhbmNlb2Ygdj9TOm5ldyB2KHcse3NlY3JldDpTfSl9LHYucHJvdG90eXBlLnNlY3JldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZWNyZXR9LEEodiwicHViQnl0ZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9p'@; put 'bnQodGhpcy5wdWIoKSl9KSxBKHYsInB1YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHViQnl0ZXM/dGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk6dGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSl9KSxBKHYsInByaXZCeXRlcyIsZnVuY3Rpb24oKXt2YXIgdz10'@; put 'aGlzLmVkZHNhLFM9dGhpcy5oYXNoKCksTD13LmVuY29kaW5nTGVuZ3RoLTEsUj1TLnNsaWNlKDAsdy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIFJbMF0mPTI0OCxSW0xdJj0xMjcsUltMXXw9NjQsUn0pLEEodiwicHJpdiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQo'@; put 'dGhpcy5wcml2Qnl0ZXMoKSl9KSxBKHYsImhhc2giLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKX0pLEEodiwibWVzc2FnZVByZWZpeCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhpcy5lZGRz'@; put 'YS5lbmNvZGluZ0xlbmd0aCl9KSx2LnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKHcpe3JldHVybiBjKHRoaXMuX3NlY3JldCwiS2V5UGFpciBjYW4gb25seSB2ZXJpZnkiKSx0aGlzLmVkZHNhLnNpZ24odyx0aGlzKX0sdi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHcsUyl7cmV0dXJuIHRo'@; put 'aXMuZWRkc2EudmVyaWZ5KHcsUyx0aGlzKX0sdi5wcm90b3R5cGUuZ2V0U2VjcmV0PWZ1bmN0aW9uKHcpe3JldHVybiBjKHRoaXMuX3NlY3JldCwiS2V5UGFpciBpcyBwdWJsaWMgb25seSIpLHkuZW5jb2RlKHRoaXMuc2VjcmV0KCksdyl9LHYucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlv'@; put 'bih3KXtyZXR1cm4geS5lbmNvZGUodGhpcy5wdWJCeXRlcygpLHcpfSxmZS5leHBvcnRzPXZ9LDkwMjIwKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjg0OTApLGM9aCg0NzAxMSkscz1jLmFzc2VydCxBPWMuY2FjaGVkUHJvcGVydHksdj1jLnBhcnNlQnl0ZXM7ZnVuY3Rpb24gQyh3'@; put 'LFMpe3RoaXMuZWRkc2E9dywib2JqZWN0IiE9dHlwZW9mIFMmJihTPXYoUykpLEFycmF5LmlzQXJyYXkoUykmJihzKFMubGVuZ3RoPT09Mip3LmVuY29kaW5nTGVuZ3RoLCJTaWduYXR1cmUgaGFzIGludmFsaWQgc2l6ZSIpLFM9e1I6Uy5zbGljZSgwLHcuZW5jb2RpbmdMZW5ndGgpLFM6Uy5z'@; put 'bGljZSh3LmVuY29kaW5nTGVuZ3RoKX0pLHMoUy5SJiZTLlMsIlNpZ25hdHVyZSB3aXRob3V0IFIgb3IgUyIpLHcuaXNQb2ludChTLlIpJiYodGhpcy5fUj1TLlIpLFMuUyBpbnN0YW5jZW9mIHkmJih0aGlzLl9TPVMuUyksdGhpcy5fUmVuY29kZWQ9QXJyYXkuaXNBcnJheShTLlIpP1MuUjpT'@; put 'LlJlbmNvZGVkLHRoaXMuX1NlbmNvZGVkPUFycmF5LmlzQXJyYXkoUy5TKT9TLlM6Uy5TZW5jb2RlZH1BKEMsIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSl9KSxBKEMsIlIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVj'@; put 'b2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLEEoQywiUmVuY29kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpfSksQShDLCJTZW5jb2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpfSksQy5w'@; put 'cm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSl9LEMucHJvdG90eXBlLnRvSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIGMuZW5jb2RlKHRoaXMudG9CeXRlcygpLCJoZXgiKS50b1VwcGVyQ2FzZSgpfSxmZS5leHBv'@; put 'cnRzPUN9LDc0MDExKGZlKXtmZS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbImU2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRk'@; put 'MjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1'@; put 'ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUw'@; put 'NTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4'@; put 'MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0'@; put 'ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0'@; put 'ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdl'@; put 'ZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsiZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0'@; put 'MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFj'@; put 'YWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkIl0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMx'@; put 'Mzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3'@; put 'MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNh'@; put 'NDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3'@; put 'ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2Iy'@; put 'ZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxbIjk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdj'@; put 'ZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAz'@; put 'N2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkIiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRl'@; put 'N2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3'@; put 'NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlm'@; put 'NmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQz'@; put 'ZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJh'@; put 'YmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwiODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsiZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNh'@; put 'OTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0'@; put 'ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcy'@; put 'ZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdl'@; put 'YTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFh'@; put 'ZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2'@; put 'ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIx'@; put 'YTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxbImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIw'@; put 'ZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhh'@; put 'ODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5'@; put 'NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRj'@; put 'OTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYy'@; put 'NjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5'@; put 'MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNl'@; put 'MzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3'@; put 'ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4'@; put 'NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyIl0sWyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlIiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3'@; put 'ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMi'@; put 'XSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRl'@; put 'Y2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNi'@; put 'OWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhh'@; put 'ZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2Ey'@; put 'MTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4'@; put 'MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMiLCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjIl0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVk'@; put 'NTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1Yjdi'@; put 'YSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThi'@; put 'Mjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTll'@; put 'NWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAy'@; put 'YWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJm'@; put 'Mjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0'@; put 'NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MiJdLFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwIiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3'@; put 'ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMi'@; put 'XSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMw'@; put 'OGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhl'@; put 'ODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5'@; put 'YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcx'@; put 'NzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3'@; put 'NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2Vh'@; put 'OTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzli'@; put 'OTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5'@; put 'YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EiXSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRh'@; put 'MWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3'@; put 'Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJm'@; put 'YjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNi'@; put 'NWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3'@; put 'MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsiMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5'@; put 'OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0'@; put 'ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QiLCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmIl0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJj'@; put 'NTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhm'@; put 'YiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgx'@; put 'ZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJh'@; put 'MTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5'@; put 'ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFl'@; put 'M2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5'@; put 'YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2Il0sWyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxIiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRm'@; put 'YTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAi'@; put 'XSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2Rl'@; put 'ZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2'@; put 'OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJl'@; put 'MTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRh'@; put 'MjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThj'@; put 'MmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhIiwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSJdLFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5'@; put 'NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEi'@; put 'LCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4'@; put 'MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTli'@; put 'ZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4'@; put 'YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJm'@; put 'YTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJi'@; put 'MjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExIl0sWyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmIiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJh'@; put 'ZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUi'@; put 'XSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNi'@; put 'YmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1'@; put 'OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4'@; put 'OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2'@; put 'ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1'@; put 'ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzIiwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSJdLFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNh'@; put 'NTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYi'@; put 'LCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFh'@; put 'NDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5'@; put 'ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYw'@; put 'Mzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0'@; put 'MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2'@; put 'OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMiXSxbImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUiLCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2'@; put 'M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0s'@; put 'WyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODli'@; put 'ZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNh'@; put 'MGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1'@; put 'MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1'@; put 'OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2Iz'@; put 'Y2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxIiwiM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJdLFsiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEz'@; put 'Yjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFl'@; put 'NDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5'@; put 'NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4'@; put 'ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMy'@; put 'ODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJm'@; put 'MGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMw'@; put 'YmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxbIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIy'@; put 'NTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4'@; put 'NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5'@; put 'N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1'@; put 'OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUy'@; put 'YzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZm'@; put 'MWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJj'@; put 'YjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0'@; put 'OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJk'@; put 'MTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjciXSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAx'@; put 'NDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgy'@; put 'YSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVl'@; put 'YjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdh'@; put 'MTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5'@; put 'ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxbImU3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4'@; put 'YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNl'@; put 'ODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMx'@; put 'MjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYz'@; put 'ZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBj'@; put 'MzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUy'@; put 'ZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUx'@; put 'ZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsiN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNi'@; put 'N2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMx'@; put 'MTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAiXSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzcz'@; put 'YmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRh'@; put 'NCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2'@; put 'ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNi'@; put 'YTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNi'@; put 'M2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsiZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1'@; put 'OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIw'@; put 'NjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFj'@; put 'YjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjEx'@; put 'MmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2Nj'@; put 'MWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBk'@; put 'YzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2Mw'@; put 'NTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3IiwiNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsiNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4'@; put 'M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNl'@; put 'MDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlm'@; put 'ZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFj'@; put 'MyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0'@; put 'YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2'@; put 'MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSw0NzAxMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1qLGM9aCgyODQ5MCkscz1oKDQzMzQ5KSxBPWgoNjQzNjcpO3kuYXNzZXJ0PXMs'@; put 'eS50b0FycmF5PUEudG9BcnJheSx5Lnplcm8yPUEuemVybzIseS50b0hleD1BLnRvSGV4LHkuZW5jb2RlPUEuZW5jb2RlLHkuZ2V0TkFGPWZ1bmN0aW9uIHYoUix4LFUpe3ZhciBWLEg9bmV3IEFycmF5KE1hdGgubWF4KFIuYml0TGVuZ3RoKCksVSkrMSk7Zm9yKFY9MDtWPEgubGVuZ3RoO1Yr'@; put 'PTEpSFtWXT0wO3ZhciBOPTE8PHgrMSx6PVIuY2xvbmUoKTtmb3IoVj0wO1Y8SC5sZW5ndGg7VisrKXt2YXIgWSxGPXouYW5kbG4oTi0xKTt6LmlzT2RkKCk/ei5pc3VibihZPUY+KE4+PjEpLTE/KE4+PjEpLUY6Rik6WT0wLEhbVl09WSx6Lml1c2hybigxKX1yZXR1cm4gSH0seS5nZXRKU0Y9'@; put 'ZnVuY3Rpb24gQyhSLHgpe3ZhciBVPVtbXSxbXV07Uj1SLmNsb25lKCkseD14LmNsb25lKCk7Zm9yKHZhciBOLEg9MCxWPTA7Ui5jbXBuKC1IKT4wfHx4LmNtcG4oLVYpPjA7KXt2YXIgRixXLHo9Ui5hbmRsbigzKStIJjMsWT14LmFuZGxuKDMpK1YmMzszPT09eiYmKHo9LTEpLDM9PT1ZJiYo'@; put 'WT0tMSksRj0xJno/MyE9KE49Ui5hbmRsbig3KStIJjcpJiY1IT09Tnx8MiE9PVk/ejotejowLFVbMF0ucHVzaChGKSxXPTEmWT8zIT0oTj14LmFuZGxuKDcpK1YmNykmJjUhPT1OfHwyIT09ej9ZOi1ZOjAsVVsxXS5wdXNoKFcpLDIqSD09PUYrMSYmKEg9MS1IKSwyKlY9PT1XKzEmJihWPTEt'@; put 'ViksUi5pdXNocm4oMSkseC5pdXNocm4oMSl9cmV0dXJuIFV9LHkuY2FjaGVkUHJvcGVydHk9ZnVuY3Rpb24gdyhSLHgsVSl7dmFyIEg9Il8iK3g7Ui5wcm90b3R5cGVbeF09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpc1tIXT90aGlzW0hdOnRoaXNbSF09VS5jYWxsKHRoaXMpfX0s'@; put 'eS5wYXJzZUJ5dGVzPWZ1bmN0aW9uIFMoUil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBSP3kudG9BcnJheShSLCJoZXgiKTpSfSx5LmludEZyb21MRT1mdW5jdGlvbiBMKFIpe3JldHVybiBuZXcgYyhSLCJoZXgiLCJsZSIpfX0sMjg0OTAoZmUsaixoKXshZnVuY3Rpb24oeSxjKXsidXNlIHN0'@; put 'cmljdCI7ZnVuY3Rpb24gcyhYLGYpe2lmKCFYKXRocm93IG5ldyBFcnJvcihmfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIEEoWCxmKXtYLnN1cGVyXz1mO3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1mLnByb3RvdHlwZSxYLnByb3RvdHlwZT1uZXcgYixYLnByb3RvdHlw'@; put 'ZS5jb25zdHJ1Y3Rvcj1YfWZ1bmN0aW9uIHYoWCxmLGIpe2lmKHYuaXNCTihYKSlyZXR1cm4gWDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09WCYmKCgibGUiPT09Znx8ImJlIj09PWYpJiYoYj1mLGY9MTApLHRoaXMu'@; put 'X2luaXQoWHx8MCxmfHwxMCxifHwiYmUiKSl9dmFyIEM7Im9iamVjdCI9PXR5cGVvZiB5P3kuZXhwb3J0cz12OmMuQk49dix2LkJOPXYsdi53b3JkU2l6ZT0yNjt0cnl7Qz10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6aCg3OTM2OCku'@; put 'QnVmZmVyfWNhdGNoe31mdW5jdGlvbiB3KFgsZil7dmFyIGI9WC5jaGFyQ29kZUF0KGYpO3JldHVybiBiPj02NSYmYjw9NzA/Yi01NTpiPj05NyYmYjw9MTAyP2ItODc6Yi00OCYxNX1mdW5jdGlvbiBTKFgsZixiKXt2YXIgaz13KFgsYik7cmV0dXJuIGItMT49ZiYmKGt8PXcoWCxiLTEpPDw0'@; put 'KSxrfWZ1bmN0aW9uIEwoWCxmLGIsayl7Zm9yKHZhciBNPTAsQj1NYXRoLm1pbihYLmxlbmd0aCxiKSxLPWY7SzxCO0srKyl7dmFyIEc9WC5jaGFyQ29kZUF0KEspLTQ4O00qPWssTSs9Rz49NDk/Ry00OSsxMDpHPj0xNz9HLTE3KzEwOkd9cmV0dXJuIE19di5pc0JOPWZ1bmN0aW9uKGYpe3Jl'@; put 'dHVybiBmIGluc3RhbmNlb2Ygdnx8bnVsbCE9PWYmJiJvYmplY3QiPT10eXBlb2YgZiYmZi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PXYud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZi53b3Jkcyl9LHYubWF4PWZ1bmN0aW9uKGYsYil7cmV0dXJuIGYuY21wKGIpPjA/ZjpifSx2Lm1pbj1mdW5j'@; put 'dGlvbihmLGIpe3JldHVybiBmLmNtcChiKTwwP2Y6Yn0sdi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZixiLGspe2lmKCJudW1iZXIiPT10eXBlb2YgZilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihmLGIsayk7aWYoIm9iamVjdCI9PXR5cGVvZiBmKXJldHVybiB0aGlzLl9pbml0QXJyYXko'@; put 'ZixiLGspOyJoZXgiPT09YiYmKGI9MTYpLHMoYj09PSgwfGIpJiZiPj0yJiZiPD0zNik7dmFyIE09MDsiLSI9PT0oZj1mLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKE0rKyx0aGlzLm5lZ2F0aXZlPTEpLE08Zi5sZW5ndGgmJigxNj09PWI/dGhpcy5fcGFyc2VIZXgoZixN'@; put 'LGspOih0aGlzLl9wYXJzZUJhc2UoZixiLE0pLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYixrKSkpfSx2LnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihmLGIsayl7ZjwwJiYodGhpcy5uZWdhdGl2ZT0xLGY9LWYpLGY8NjcxMDg4NjQ/KHRoaXMud29y'@; put 'ZHM9WzY3MTA4ODYzJmZdLHRoaXMubGVuZ3RoPTEpOmY8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZixmLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToocyhmPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmYsZi82NzEwODg2'@; put 'NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGIsayl9LHYucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZixiLGspe2lmKHMoIm51bWJlciI9PXR5cGVvZiBmLmxlbmd0aCksZi5sZW5ndGg8PTApcmV0dXJu'@; put 'IHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgTT0wO008dGhpcy5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgQixLLEc9MDtpZigi'@; put 'YmUiPT09aylmb3IoTT1mLmxlbmd0aC0xLEI9MDtNPj0wO00tPTMpdGhpcy53b3Jkc1tCXXw9KEs9ZltNXXxmW00tMV08PDh8ZltNLTJdPDwxNik8PEcmNjcxMDg4NjMsdGhpcy53b3Jkc1tCKzFdPUs+Pj4yNi1HJjY3MTA4ODYzLChHKz0yNCk+PTI2JiYoRy09MjYsQisrKTtlbHNlIGlmKCJs'@; put 'ZSI9PT1rKWZvcihNPTAsQj0wO008Zi5sZW5ndGg7TSs9Myl0aGlzLndvcmRzW0JdfD0oSz1mW01dfGZbTSsxXTw8OHxmW00rMl08PDE2KTw8RyY2NzEwODg2Myx0aGlzLndvcmRzW0IrMV09Sz4+PjI2LUcmNjcxMDg4NjMsKEcrPTI0KT49MjYmJihHLT0yNixCKyspO3JldHVybiB0aGlzLnN0'@; put 'cmlwKCl9LHYucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihmLGIsayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChmLmxlbmd0aC1iKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBNPTA7TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3Zh'@; put 'ciBHLEI9MCxLPTA7aWYoImJlIj09PWspZm9yKE09Zi5sZW5ndGgtMTtNPj1iO00tPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7ZWxzZSBmb3IoTT0oZi5sZW5ndGgtYiklMj09MD9i'@; put 'KzE6YjtNPGYubGVuZ3RoO00rPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7dGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGYsYixrKXt0aGlzLndv'@; put 'cmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgTT0wLEI9MTtCPD02NzEwODg2MztCKj1iKU0rKztNLS0sQj1CL2J8MDtmb3IodmFyIEs9Zi5sZW5ndGgtayxHPUslTSxEPU1hdGgubWluKEssSy1HKStrLHA9MCxJPWs7STxEO0krPU0pcD1MKGYsSSxJK00sYiksdGhpcy5pbXVsbihCKSx0'@; put 'aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09Ryl7dmFyIHVlPTE7Zm9yKHA9TChmLEksZi5sZW5ndGgsYiksST0wO0k8RztJKyspdWUqPWI7dGhpcy5pbXVsbih1ZSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29y'@; put 'ZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGYpe2Yud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoO2IrKylmLndvcmRzW2JdPXRoaXMud29yZHNbYl07Zi5sZW5ndGg9dGhp'@; put 'cy5sZW5ndGgsZi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGYucmVkPXRoaXMucmVkfSx2LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiB0aGlzLmNvcHkoZiksZn0sdi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihmKXtmb3IoO3RoaXMubGVu'@; put 'Z3RoPGY7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigp'@; put 'fSx2LnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sdi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjog'@; put 'IikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgUj1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAi'@; put 'LCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIs'@; put 'IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx4PVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUs'@; put 'NSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLFU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEz'@; put 'NzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07'@; put 'ZnVuY3Rpb24gVihYLGYsYil7Yi5uZWdhdGl2ZT1mLm5lZ2F0aXZlXlgubmVnYXRpdmU7dmFyIGs9WC5sZW5ndGgrZi5sZW5ndGh8MDtiLmxlbmd0aD1rLGs9ay0xfDA7dmFyIE09MHxYLndvcmRzWzBdLEI9MHxmLndvcmRzWzBdLEs9TSpCLEQ9Sy82NzEwODg2NHwwO2Iud29yZHNbMF09Njcx'@; put 'MDg4NjMmSztmb3IodmFyIHA9MTtwPGs7cCsrKXtmb3IodmFyIEk9RD4+PjI2LHVlPTY3MTA4ODYzJkQsbmU9TWF0aC5taW4ocCxmLmxlbmd0aC0xKSxfZT1NYXRoLm1heCgwLHAtWC5sZW5ndGgrMSk7X2U8PW5lO19lKyspSSs9KEs9KE09MHxYLndvcmRzW3AtX2V8MF0pKihCPTB8Zi53b3Jk'@; put 'c1tfZV0pK3VlKS82NzEwODg2NHwwLHVlPTY3MTA4ODYzJks7Yi53b3Jkc1twXT0wfHVlLEQ9MHxJfXJldHVybiAwIT09RD9iLndvcmRzW3BdPTB8RDpiLmxlbmd0aC0tLGIuc3RyaXAoKX12LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihmLGIpe3ZhciBrO2lmKGI9MHxifHwxLDE2PT09'@; put 'KGY9Znx8MTApfHwiaGV4Ij09PWYpe2s9IiI7Zm9yKHZhciBNPTAsQj0wLEs9MDtLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9dGhpcy53b3Jkc1tLXSxEPSgxNjc3NzIxNSYoRzw8TXxCKSkudG9TdHJpbmcoMTYpO0I9Rz4+PjI0LU0mMTY3NzcyMTUsKE0rPTIpPj0yNiYmKE0tPTI2LEstLSks'@; put 'az0wIT09Qnx8SyE9PXRoaXMubGVuZ3RoLTE/Uls2LUQubGVuZ3RoXStEK2s6RCtrfWZvcigwIT09QiYmKGs9Qi50b1N0cmluZygxNikrayk7ay5sZW5ndGglYiE9PTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31pZihmPT09KDB8ZikmJmY+PTImJmY8'@; put 'PTM2KXt2YXIgcD14W2ZdLEk9VVtmXTtrPSIiO3ZhciB1ZT10aGlzLmNsb25lKCk7Zm9yKHVlLm5lZ2F0aXZlPTA7IXVlLmlzWmVybygpOyl7dmFyIG5lPXVlLm1vZG4oSSkudG9TdHJpbmcoZik7az0odWU9dWUuaWRpdm4oSSkpLmlzWmVybygpP25lK2s6UltwLW5lLmxlbmd0aF0rbmUra31m'@; put 'b3IodGhpcy5pc1plcm8oKSYmKGs9IjAiK2spO2subGVuZ3RoJWIhPT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9cyghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSx2LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3Zh'@; put 'ciBmPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9mKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zis9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJnMoITEs'@; put 'Ik51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1mOmZ9LHYucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sdi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZixiKXtyZXR1'@; put 'cm4gcyh0eXBlb2YgQzwidSIpLHRoaXMudG9BcnJheUxpa2UoQyxmLGIpfSx2LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZixiKX0sdi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZixiLGspe3ZhciBNPXRoaXMu'@; put 'Ynl0ZUxlbmd0aCgpLEI9a3x8TWF0aC5tYXgoMSxNKTtzKE08PUIsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxzKEI+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBELHAsSz0ibGUiPT09YixHPW5ldyBmKEIpLEk9dGhp'@; put 'cy5jbG9uZSgpO2lmKEspe2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVzaHJuKDgpLEdbcF09RDtmb3IoO3A8QjtwKyspR1twXT0wfWVsc2V7Zm9yKHA9MDtwPEItTTtwKyspR1twXT0wO2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEku'@; put 'aXVzaHJuKDgpLEdbQi1wLTFdPUR9cmV0dXJuIEd9LHYucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihmKXtyZXR1cm4gMzItTWF0aC5jbHozMihmKX06ZnVuY3Rpb24oZil7dmFyIGI9ZixrPTA7cmV0dXJuIGI+PTQwOTYmJihrKz0xMyxiPj4+PTEzKSxiPj02NCYm'@; put 'KGsrPTcsYj4+Pj03KSxiPj04JiYoays9NCxiPj4+PTQpLGI+PTImJihrKz0yLGI+Pj49MiksaytifSx2LnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZil7aWYoMD09PWYpcmV0dXJuIDI2O3ZhciBiPWYsaz0wO3JldHVybiEoODE5MSZiKSYmKGsrPTEzLGI+Pj49MTMpLCEoMTI3JmIp'@; put 'JiYoays9NyxiPj4+PTcpLCEoMTUmYikmJihrKz00LGI+Pj49NCksISgzJmIpJiYoays9MixiPj4+PTIpLCEoMSZiKSYmaysrLGt9LHYucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4g'@; put 'MjYqKHRoaXMubGVuZ3RoLTEpK2J9LHYucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGY9MCxiPTA7Yjx0aGlzLmxlbmd0aDtiKyspe3ZhciBrPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbYl0pO2lmKGYrPWssMjYhPT1r'@; put 'KWJyZWFrfXJldHVybiBmfSx2LnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSx2LnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oZil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oZiku'@; put 'aWFkZG4oMSk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy50ZXN0bihmLTEpP3RoaXMubm90bihmKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhp'@; put 'cy5uZWdhdGl2ZX0sdi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LHYucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LHYucHJvdG90eXBlLml1b3I9ZnVuY3Rp'@; put 'b24oZil7Zm9yKDt0aGlzLmxlbmd0aDxmLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgYj0wO2I8Zi5sZW5ndGg7YisrKXRoaXMud29yZHNbYl09dGhpcy53b3Jkc1tiXXxmLndvcmRzW2JdO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlvcj1m'@; put 'dW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXVvcihmKX0sdi5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZik6Zi5jbG9uZSgpLmlvcih0aGlzKX0sdi5w'@; put 'cm90b3R5cGUudW9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihmKTpmLmNsb25lKCkuaXVvcih0aGlzKX0sdi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZil7dmFyIGI7Yj10aGlzLmxlbmd0aD5mLmxlbmd0aD9mOnRoaXM7Zm9y'@; put 'KHZhciBrPTA7azxiLmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT10aGlzLndvcmRzW2tdJmYud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPWIubGVuZ3RoLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5u'@; put 'ZWdhdGl2ZSkpLHRoaXMuaXVhbmQoZil9LHYucHJvdG90eXBlLmFuZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoZik6Zi5jbG9uZSgpLmlhbmQodGhpcyl9LHYucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMu'@; put 'bGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChmKTpmLmNsb25lKCkuaXVhbmQodGhpcyl9LHYucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGYpe3ZhciBiLGs7dGhpcy5sZW5ndGg+Zi5sZW5ndGg/KGI9dGhpcyxrPWYpOihiPWYsaz10aGlzKTtmb3IodmFyIE09MDtNPGsubGVu'@; put 'Z3RoO00rKyl0aGlzLndvcmRzW01dPWIud29yZHNbTV1eay53b3Jkc1tNXTtpZih0aGlzIT09Yilmb3IoO008Yi5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Yi53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9Yi5sZW5ndGgsdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5peG9yPWZ1bmN0'@; put 'aW9uKGYpe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxmLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihmKX0sdi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihmKTpmLmNsb25lKCkuaXhvcih0aGlzKX0sdi5w'@; put 'cm90b3R5cGUudXhvcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGYpOmYuY2xvbmUoKS5pdXhvcih0aGlzKX0sdi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBiPTB8'@; put 'TWF0aC5jZWlsKGYvMjYpLGs9ZiUyNjt0aGlzLl9leHBhbmQoYiksaz4wJiZiLS07Zm9yKHZhciBNPTA7TTxiO00rKyl0aGlzLndvcmRzW01dPTY3MTA4ODYzJn50aGlzLndvcmRzW01dO2ZvcihrPjAmJih0aGlzLndvcmRzW01dPX50aGlzLndvcmRzW01dJjY3MTA4ODYzPj4yNi1rLE0rKyk7'@; put 'TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihmKX0sdi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihmLGIpe3MoIm51bWJlciI9PXR5cGVvZiBm'@; put 'JiZmPj0wKTt2YXIgaz1mLzI2fDAsTT1mJTI2O3JldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdPWI/dGhpcy53b3Jkc1trXXwxPDxNOnRoaXMud29yZHNba10mfigxPDxNKSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZil7dmFyIGIsayxNO2lm'@; put 'KDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLGI9dGhpcy5pc3ViKGYpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIGYubmVnYXRpdmU9MCxi'@; put 'PXRoaXMuaXN1YihmKSxmLm5lZ2F0aXZlPTEsYi5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5mLmxlbmd0aD8oaz10aGlzLE09Zik6KGs9ZixNPXRoaXMpO2Zvcih2YXIgQj0wLEs9MDtLPE0ubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPTY3MTA4ODYzJihiPSgwfGsud29yZHNbS10pKygwfE0u'@; put 'd29yZHNbS10pK0IpLEI9Yj4+PjI2O2Zvcig7MCE9PUImJks8ay5sZW5ndGg7SysrKXRoaXMud29yZHNbS109NjcxMDg4NjMmKGI9KDB8ay53b3Jkc1tLXSkrQiksQj1iPj4+MjY7aWYodGhpcy5sZW5ndGg9ay5sZW5ndGgsMCE9PUIpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Qix0aGlzLmxl'@; put 'bmd0aCsrO2Vsc2UgaWYoayE9PXRoaXMpZm9yKDtLPGsubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPWsud29yZHNbS107cmV0dXJuIHRoaXN9LHYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihmKXt2YXIgYjtyZXR1cm4gMCE9PWYubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhmLm5lZ2F0'@; put 'aXZlPTAsYj10aGlzLnN1YihmKSxmLm5lZ2F0aXZlXj0xLGIpOjA9PT1mLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLGI9Zi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLGIpOnRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGYpOmYu'@; put 'Y2xvbmUoKS5pYWRkKHRoaXMpfSx2LnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGYpe2lmKDAhPT1mLm5lZ2F0aXZlKXtmLm5lZ2F0aXZlPTA7dmFyIGI9dGhpcy5pYWRkKGYpO3JldHVybiBmLm5lZ2F0aXZlPTEsYi5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhp'@; put 'cy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChmKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgTSxCLGs9dGhpcy5jbXAoZik7aWYoMD09PWspcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO2s+MD8oTT10aGlzLEI9Zik6'@; put 'KE09ZixCPXRoaXMpO2Zvcih2YXIgSz0wLEc9MDtHPEIubGVuZ3RoO0crKylLPShiPSgwfE0ud29yZHNbR10pLSgwfEIud29yZHNbR10pK0spPj4yNix0aGlzLndvcmRzW0ddPTY3MTA4ODYzJmI7Zm9yKDswIT09SyYmRzxNLmxlbmd0aDtHKyspSz0oYj0oMHxNLndvcmRzW0ddKStLKT4+MjYs'@; put 'dGhpcy53b3Jkc1tHXT02NzEwODg2MyZiO2lmKDA9PT1LJiZHPE0ubGVuZ3RoJiZNIT09dGhpcylmb3IoO0c8TS5sZW5ndGg7RysrKXRoaXMud29yZHNbR109TS53b3Jkc1tHXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsRyksTSE9PXRoaXMmJih0aGlzLm5lZ2F0'@; put 'aXZlPTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihmKX07dmFyIE49ZnVuY3Rpb24oZixiLGspe3ZhciBELHAsSSxNPWYud29yZHMsQj1iLndvcmRzLEs9ay53b3JkcyxHPTAsdWU9MHxNWzBdLG5lPTgxOTEmdWUs'@; put 'X2U9dWU+Pj4xMyxQZT0wfE1bMV0sb3Q9ODE5MSZQZSxsdD1QZT4+PjEzLGR0PTB8TVsyXSxSZT04MTkxJmR0LGFlPWR0Pj4+MTMseGU9MHxNWzNdLGplPTgxOTEmeGUsQWU9eGU+Pj4xMyxEZT0wfE1bNF0sRmU9ODE5MSZEZSxnZT1EZT4+PjEzLGNlPTB8TVs1XSxoZT04MTkxJmNlLHdlPWNl'@; put 'Pj4+MTMsSmU9MHxNWzZdLHR0PTgxOTEmSmUsS2U9SmU+Pj4xMywkdD0wfE1bN10sUnQ9ODE5MSYkdCxMdD0kdD4+PjEzLEd0PTB8TVs4XSxndD04MTkxJkd0LFh0PUd0Pj4+MTMsTHI9MHxNWzldLGxuPTgxOTEmTHIsT249THI+Pj4xMyxRcj0wfEJbMF0sdHI9ODE5MSZRcixIbj1Rcj4+PjEz'@; put 'LE9vPTB8QlsxXSx1cj04MTkxJk9vLFpuPU9vPj4+MTMsU249MHxCWzJdLHhyPTgxOTEmU24sVHQ9U24+Pj4xMyxBcj0wfEJbM10sX249ODE5MSZBcixadD1Bcj4+PjEzLE5uPTB8Qls0XSxwdD04MTkxJk5uLHBuPU5uPj4+MTMsTWk9MHxCWzVdLEdlPTgxOTEmTWksVXQ9TWk+Pj4xMyx2cj0w'@; put 'fEJbNl0seHQ9ODE5MSZ2cixCdD12cj4+PjEzLHpuPTB8Qls3XSxHbj04MTkxJnpuLHluPXpuPj4+MTMsdmk9MHxCWzhdLHJyPTgxOTEmdmksaHI9dmk+Pj4xMyxwbz0wfEJbOV0sdm49ODE5MSZwbyxCbj1wbz4+PjEzO2submVnYXRpdmU9Zi5uZWdhdGl2ZV5iLm5lZ2F0aXZlLGsubGVuZ3Ro'@; put 'PTE5O3ZhciBqYT0oRysoRD1NYXRoLmltdWwobmUsdHIpKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKG5lLEhuKSkrTWF0aC5pbXVsKF9lLHRyKXwwKSk8PDEzKXwwO0c9KChJPU1hdGguaW11bChfZSxIbikpKyhwPj4+MTMpfDApKyhqYT4+PjI2KXwwLGphJj02NzEwODg2MyxEPU1hdGgu'@; put 'aW11bChvdCx0cikscD0ocD1NYXRoLmltdWwob3QsSG4pKStNYXRoLmltdWwobHQsdHIpfDAsST1NYXRoLmltdWwobHQsSG4pO3ZhciBqbz0oRysoRD1EK01hdGguaW11bChuZSx1cil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFpuKXwwKStNYXRoLmltdWwoX2UsdXIpfDAp'@; put 'KTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWm4pfDApKyhwPj4+MTMpfDApKyhqbz4+PjI2KXwwLGpvJj02NzEwODg2MyxEPU1hdGguaW11bChSZSx0cikscD0ocD1NYXRoLmltdWwoUmUsSG4pKStNYXRoLmltdWwoYWUsdHIpfDAsST1NYXRoLmltdWwoYWUsSG4pLEQ9RCtNYXRoLmlt'@; put 'dWwob3QsdXIpfDAscD0ocD1wK01hdGguaW11bChvdCxabil8MCkrTWF0aC5pbXVsKGx0LHVyKXwwLEk9SStNYXRoLmltdWwobHQsWm4pfDA7dmFyIFhyPShHKyhEPUQrTWF0aC5pbXVsKG5lLHhyKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVHQpfDApK01hdGguaW11bChf'@; put 'ZSx4cil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxUdCl8MCkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGplLHRyKSxwPShwPU1hdGguaW11bChqZSxIbikpK01hdGguaW11bChBZSx0cil8MCxJPU1hdGguaW11bChBZSxIbiksRD1E'@; put 'K01hdGguaW11bChSZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFpuKXwwKStNYXRoLmltdWwoYWUsdXIpfDAsST1JK01hdGguaW11bChhZSxabil8MCxEPUQrTWF0aC5pbXVsKG90LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVHQpfDApK01hdGguaW11bChsdCx4cil8MCxJPUkrTWF0'@; put 'aC5pbXVsKGx0LFR0KXwwO3ZhciBlYT0oRysoRD1EK01hdGguaW11bChuZSxfbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFp0KXwwKStNYXRoLmltdWwoX2UsX24pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWnQpfDApKyhwPj4+MTMpfDApKyhlYT4+PjI2'@; put 'KXwwLGVhJj02NzEwODg2MyxEPU1hdGguaW11bChGZSx0cikscD0ocD1NYXRoLmltdWwoRmUsSG4pKStNYXRoLmltdWwoZ2UsdHIpfDAsST1NYXRoLmltdWwoZ2UsSG4pLEQ9RCtNYXRoLmltdWwoamUsdXIpfDAscD0ocD1wK01hdGguaW11bChqZSxabil8MCkrTWF0aC5pbXVsKEFlLHVyKXww'@; put 'LEk9SStNYXRoLmltdWwoQWUsWm4pfDAsRD1EK01hdGguaW11bChSZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFR0KXwwKStNYXRoLmltdWwoYWUseHIpfDAsST1JK01hdGguaW11bChhZSxUdCl8MCxEPUQrTWF0aC5pbXVsKG90LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsWnQpfDAp'@; put 'K01hdGguaW11bChsdCxfbil8MCxJPUkrTWF0aC5pbXVsKGx0LFp0KXwwO3ZhciByYT0oRysoRD1EK01hdGguaW11bChuZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHBuKXwwKStNYXRoLmltdWwoX2UscHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2Us'@; put 'cG4pfDApKyhwPj4+MTMpfDApKyhyYT4+PjI2KXwwLHJhJj02NzEwODg2MyxEPU1hdGguaW11bChoZSx0cikscD0ocD1NYXRoLmltdWwoaGUsSG4pKStNYXRoLmltdWwod2UsdHIpfDAsST1NYXRoLmltdWwod2UsSG4pLEQ9RCtNYXRoLmltdWwoRmUsdXIpfDAscD0ocD1wK01hdGguaW11bChG'@; put 'ZSxabil8MCkrTWF0aC5pbXVsKGdlLHVyKXwwLEk9SStNYXRoLmltdWwoZ2UsWm4pfDAsRD1EK01hdGguaW11bChqZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGplLFR0KXwwKStNYXRoLmltdWwoQWUseHIpfDAsST1JK01hdGguaW11bChBZSxUdCl8MCxEPUQrTWF0aC5pbXVsKFJlLF9uKXww'@; put 'LHA9KHA9cCtNYXRoLmltdWwoUmUsWnQpfDApK01hdGguaW11bChhZSxfbil8MCxJPUkrTWF0aC5pbXVsKGFlLFp0KXwwLEQ9RCtNYXRoLmltdWwob3QscHQpfDAscD0ocD1wK01hdGguaW11bChvdCxwbil8MCkrTWF0aC5pbXVsKGx0LHB0KXwwLEk9SStNYXRoLmltdWwobHQscG4pfDA7dmFy'@; put 'IGNhPShHKyhEPUQrTWF0aC5pbXVsKG5lLEdlKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVXQpfDApK01hdGguaW11bChfZSxHZSl8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxVdCl8MCkrKHA+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLEQ9'@; put 'TWF0aC5pbXVsKHR0LHRyKSxwPShwPU1hdGguaW11bCh0dCxIbikpK01hdGguaW11bChLZSx0cil8MCxJPU1hdGguaW11bChLZSxIbiksRD1EK01hdGguaW11bChoZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFpuKXwwKStNYXRoLmltdWwod2UsdXIpfDAsST1JK01hdGguaW11bCh3ZSxa'@; put 'bil8MCxEPUQrTWF0aC5pbXVsKEZlLHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVHQpfDApK01hdGguaW11bChnZSx4cil8MCxJPUkrTWF0aC5pbXVsKGdlLFR0KXwwLEQ9RCtNYXRoLmltdWwoamUsX24pfDAscD0ocD1wK01hdGguaW11bChqZSxadCl8MCkrTWF0aC5pbXVsKEFlLF9uKXww'@; put 'LEk9SStNYXRoLmltdWwoQWUsWnQpfDAsRD1EK01hdGguaW11bChSZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKFJlLHBuKXwwKStNYXRoLmltdWwoYWUscHQpfDAsST1JK01hdGguaW11bChhZSxwbil8MCxEPUQrTWF0aC5pbXVsKG90LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVXQpfDAp'@; put 'K01hdGguaW11bChsdCxHZSl8MCxJPUkrTWF0aC5pbXVsKGx0LFV0KXwwO3ZhciBDaT0oRysoRD1EK01hdGguaW11bChuZSx4dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJ0KXwwKStNYXRoLmltdWwoX2UseHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2Us'@; put 'QnQpfDApKyhwPj4+MTMpfDApKyhDaT4+PjI2KXwwLENpJj02NzEwODg2MyxEPU1hdGguaW11bChSdCx0cikscD0ocD1NYXRoLmltdWwoUnQsSG4pKStNYXRoLmltdWwoTHQsdHIpfDAsST1NYXRoLmltdWwoTHQsSG4pLEQ9RCtNYXRoLmltdWwodHQsdXIpfDAscD0ocD1wK01hdGguaW11bCh0'@; put 'dCxabil8MCkrTWF0aC5pbXVsKEtlLHVyKXwwLEk9SStNYXRoLmltdWwoS2UsWm4pfDAsRD1EK01hdGguaW11bChoZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFR0KXwwKStNYXRoLmltdWwod2UseHIpfDAsST1JK01hdGguaW11bCh3ZSxUdCl8MCxEPUQrTWF0aC5pbXVsKEZlLF9uKXww'@; put 'LHA9KHA9cCtNYXRoLmltdWwoRmUsWnQpfDApK01hdGguaW11bChnZSxfbil8MCxJPUkrTWF0aC5pbXVsKGdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoamUscHQpfDAscD0ocD1wK01hdGguaW11bChqZSxwbil8MCkrTWF0aC5pbXVsKEFlLHB0KXwwLEk9SStNYXRoLmltdWwoQWUscG4pfDAsRD1E'@; put 'K01hdGguaW11bChSZSxHZSl8MCxwPShwPXArTWF0aC5pbXVsKFJlLFV0KXwwKStNYXRoLmltdWwoYWUsR2UpfDAsST1JK01hdGguaW11bChhZSxVdCl8MCxEPUQrTWF0aC5pbXVsKG90LHh0KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsQnQpfDApK01hdGguaW11bChsdCx4dCl8MCxJPUkrTWF0'@; put 'aC5pbXVsKGx0LEJ0KXwwO3ZhciBobz0oRysoRD1EK01hdGguaW11bChuZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHluKXwwKStNYXRoLmltdWwoX2UsR24pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UseW4pfDApKyhwPj4+MTMpfDApKyhobz4+PjI2'@; put 'KXwwLGhvJj02NzEwODg2MyxEPU1hdGguaW11bChndCx0cikscD0ocD1NYXRoLmltdWwoZ3QsSG4pKStNYXRoLmltdWwoWHQsdHIpfDAsST1NYXRoLmltdWwoWHQsSG4pLEQ9RCtNYXRoLmltdWwoUnQsdXIpfDAscD0ocD1wK01hdGguaW11bChSdCxabil8MCkrTWF0aC5pbXVsKEx0LHVyKXww'@; put 'LEk9SStNYXRoLmltdWwoTHQsWm4pfDAsRD1EK01hdGguaW11bCh0dCx4cil8MCxwPShwPXArTWF0aC5pbXVsKHR0LFR0KXwwKStNYXRoLmltdWwoS2UseHIpfDAsST1JK01hdGguaW11bChLZSxUdCl8MCxEPUQrTWF0aC5pbXVsKGhlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsWnQpfDAp'@; put 'K01hdGguaW11bCh3ZSxfbil8MCxJPUkrTWF0aC5pbXVsKHdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoRmUscHQpfDAscD0ocD1wK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKGdlLHB0KXwwLEk9SStNYXRoLmltdWwoZ2UscG4pfDAsRD1EK01hdGguaW11bChqZSxHZSl8MCxwPShwPXAr'@; put 'TWF0aC5pbXVsKGplLFV0KXwwKStNYXRoLmltdWwoQWUsR2UpfDAsST1JK01hdGguaW11bChBZSxVdCl8MCxEPUQrTWF0aC5pbXVsKFJlLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsQnQpfDApK01hdGguaW11bChhZSx4dCl8MCxJPUkrTWF0aC5pbXVsKGFlLEJ0KXwwLEQ9RCtNYXRoLmlt'@; put 'dWwob3QsR24pfDAscD0ocD1wK01hdGguaW11bChvdCx5bil8MCkrTWF0aC5pbXVsKGx0LEduKXwwLEk9SStNYXRoLmltdWwobHQseW4pfDA7dmFyIE1hPShHKyhEPUQrTWF0aC5pbXVsKG5lLHJyKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsaHIpfDApK01hdGguaW11bChf'@; put 'ZSxycil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxocil8MCkrKHA+Pj4xMyl8MCkrKE1hPj4+MjYpfDAsTWEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHRyKSxwPShwPU1hdGguaW11bChsbixIbikpK01hdGguaW11bChPbix0cil8MCxJPU1hdGguaW11bChPbixIbiksRD1E'@; put 'K01hdGguaW11bChndCx1cil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFpuKXwwKStNYXRoLmltdWwoWHQsdXIpfDAsST1JK01hdGguaW11bChYdCxabil8MCxEPUQrTWF0aC5pbXVsKFJ0LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVHQpfDApK01hdGguaW11bChMdCx4cil8MCxJPUkrTWF0'@; put 'aC5pbXVsKEx0LFR0KXwwLEQ9RCtNYXRoLmltdWwodHQsX24pfDAscD0ocD1wK01hdGguaW11bCh0dCxadCl8MCkrTWF0aC5pbXVsKEtlLF9uKXwwLEk9SStNYXRoLmltdWwoS2UsWnQpfDAsRD1EK01hdGguaW11bChoZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLHBuKXwwKStNYXRoLmlt'@; put 'dWwod2UscHQpfDAsST1JK01hdGguaW11bCh3ZSxwbil8MCxEPUQrTWF0aC5pbXVsKEZlLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVXQpfDApK01hdGguaW11bChnZSxHZSl8MCxJPUkrTWF0aC5pbXVsKGdlLFV0KXwwLEQ9RCtNYXRoLmltdWwoamUseHQpfDAscD0ocD1wK01hdGguaW11'@; put 'bChqZSxCdCl8MCkrTWF0aC5pbXVsKEFlLHh0KXwwLEk9SStNYXRoLmltdWwoQWUsQnQpfDAsRD1EK01hdGguaW11bChSZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKFJlLHluKXwwKStNYXRoLmltdWwoYWUsR24pfDAsST1JK01hdGguaW11bChhZSx5bil8MCxEPUQrTWF0aC5pbXVsKG90LHJy'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsaHIpfDApK01hdGguaW11bChsdCxycil8MCxJPUkrTWF0aC5pbXVsKGx0LGhyKXwwO3ZhciBrcz0oRysoRD1EK01hdGguaW11bChuZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJuKXwwKStNYXRoLmltdWwoX2Usdm4pfDAp'@; put 'KTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQm4pfDApKyhwPj4+MTMpfDApKyhrcz4+PjI2KXwwLGtzJj02NzEwODg2MyxEPU1hdGguaW11bChsbix1cikscD0ocD1NYXRoLmltdWwobG4sWm4pKStNYXRoLmltdWwoT24sdXIpfDAsST1NYXRoLmltdWwoT24sWm4pLEQ9RCtNYXRoLmlt'@; put 'dWwoZ3QseHIpfDAscD0ocD1wK01hdGguaW11bChndCxUdCl8MCkrTWF0aC5pbXVsKFh0LHhyKXwwLEk9SStNYXRoLmltdWwoWHQsVHQpfDAsRD1EK01hdGguaW11bChSdCxfbil8MCxwPShwPXArTWF0aC5pbXVsKFJ0LFp0KXwwKStNYXRoLmltdWwoTHQsX24pfDAsST1JK01hdGguaW11bChM'@; put 'dCxadCl8MCxEPUQrTWF0aC5pbXVsKHR0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQscG4pfDApK01hdGguaW11bChLZSxwdCl8MCxJPUkrTWF0aC5pbXVsKEtlLHBuKXwwLEQ9RCtNYXRoLmltdWwoaGUsR2UpfDAscD0ocD1wK01hdGguaW11bChoZSxVdCl8MCkrTWF0aC5pbXVsKHdlLEdl'@; put 'KXwwLEk9SStNYXRoLmltdWwod2UsVXQpfDAsRD1EK01hdGguaW11bChGZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEJ0KXwwKStNYXRoLmltdWwoZ2UseHQpfDAsST1JK01hdGguaW11bChnZSxCdCl8MCxEPUQrTWF0aC5pbXVsKGplLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoamUseW4p'@; put 'fDApK01hdGguaW11bChBZSxHbil8MCxJPUkrTWF0aC5pbXVsKEFlLHluKXwwLEQ9RCtNYXRoLmltdWwoUmUscnIpfDAscD0ocD1wK01hdGguaW11bChSZSxocil8MCkrTWF0aC5pbXVsKGFlLHJyKXwwLEk9SStNYXRoLmltdWwoYWUsaHIpfDA7dmFyIEJpPShHKyhEPUQrTWF0aC5pbXVsKG90'@; put 'LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwob3QsQm4pfDApK01hdGguaW11bChsdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChsdCxCbil8MCkrKHA+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHhyKSxwPShwPU1h'@; put 'dGguaW11bChsbixUdCkpK01hdGguaW11bChPbix4cil8MCxJPU1hdGguaW11bChPbixUdCksRD1EK01hdGguaW11bChndCxfbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFp0KXwwKStNYXRoLmltdWwoWHQsX24pfDAsST1JK01hdGguaW11bChYdCxadCl8MCxEPUQrTWF0aC5pbXVsKFJ0LHB0'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwoUnQscG4pfDApK01hdGguaW11bChMdCxwdCl8MCxJPUkrTWF0aC5pbXVsKEx0LHBuKXwwLEQ9RCtNYXRoLmltdWwodHQsR2UpfDAscD0ocD1wK01hdGguaW11bCh0dCxVdCl8MCkrTWF0aC5pbXVsKEtlLEdlKXwwLEk9SStNYXRoLmltdWwoS2UsVXQpfDAs'@; put 'RD1EK01hdGguaW11bChoZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLEJ0KXwwKStNYXRoLmltdWwod2UseHQpfDAsST1JK01hdGguaW11bCh3ZSxCdCl8MCxEPUQrTWF0aC5pbXVsKEZlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUseW4pfDApK01hdGguaW11bChnZSxHbil8MCxJPUkr'@; put 'TWF0aC5pbXVsKGdlLHluKXwwLEQ9RCtNYXRoLmltdWwoamUscnIpfDAscD0ocD1wK01hdGguaW11bChqZSxocil8MCkrTWF0aC5pbXVsKEFlLHJyKXwwLEk9SStNYXRoLmltdWwoQWUsaHIpfDA7dmFyIHRhPShHKyhEPUQrTWF0aC5pbXVsKFJlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtN'@; put 'YXRoLmltdWwoUmUsQm4pfDApK01hdGguaW11bChhZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChhZSxCbil8MCkrKHA+Pj4xMyl8MCkrKHRhPj4+MjYpfDAsdGEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLF9uKSxwPShwPU1hdGguaW11bChsbixadCkpK01hdGguaW11bChP'@; put 'bixfbil8MCxJPU1hdGguaW11bChPbixadCksRD1EK01hdGguaW11bChndCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LHBuKXwwKStNYXRoLmltdWwoWHQscHQpfDAsST1JK01hdGguaW11bChYdCxwbil8MCxEPUQrTWF0aC5pbXVsKFJ0LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVXQp'@; put 'fDApK01hdGguaW11bChMdCxHZSl8MCxJPUkrTWF0aC5pbXVsKEx0LFV0KXwwLEQ9RCtNYXRoLmltdWwodHQseHQpfDAscD0ocD1wK01hdGguaW11bCh0dCxCdCl8MCkrTWF0aC5pbXVsKEtlLHh0KXwwLEk9SStNYXRoLmltdWwoS2UsQnQpfDAsRD1EK01hdGguaW11bChoZSxHbil8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKGhlLHluKXwwKStNYXRoLmltdWwod2UsR24pfDAsST1JK01hdGguaW11bCh3ZSx5bil8MCxEPUQrTWF0aC5pbXVsKEZlLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsaHIpfDApK01hdGguaW11bChnZSxycil8MCxJPUkrTWF0aC5pbXVsKGdlLGhyKXwwO3ZhciBNcj0o'@; put 'RysoRD1EK01hdGguaW11bChqZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGplLEJuKXwwKStNYXRoLmltdWwoQWUsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoQWUsQm4pfDApKyhwPj4+MTMpfDApKyhNcj4+PjI2KXwwLE1yJj02NzEwODg2MyxEPU1hdGgu'@; put 'aW11bChsbixwdCkscD0ocD1NYXRoLmltdWwobG4scG4pKStNYXRoLmltdWwoT24scHQpfDAsST1NYXRoLmltdWwoT24scG4pLEQ9RCtNYXRoLmltdWwoZ3QsR2UpfDAscD0ocD1wK01hdGguaW11bChndCxVdCl8MCkrTWF0aC5pbXVsKFh0LEdlKXwwLEk9SStNYXRoLmltdWwoWHQsVXQpfDAs'@; put 'RD1EK01hdGguaW11bChSdCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKFJ0LEJ0KXwwKStNYXRoLmltdWwoTHQseHQpfDAsST1JK01hdGguaW11bChMdCxCdCl8MCxEPUQrTWF0aC5pbXVsKHR0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwodHQseW4pfDApK01hdGguaW11bChLZSxHbil8MCxJPUkr'@; put 'TWF0aC5pbXVsKEtlLHluKXwwLEQ9RCtNYXRoLmltdWwoaGUscnIpfDAscD0ocD1wK01hdGguaW11bChoZSxocil8MCkrTWF0aC5pbXVsKHdlLHJyKXwwLEk9SStNYXRoLmltdWwod2UsaHIpfDA7dmFyIEZzPShHKyhEPUQrTWF0aC5pbXVsKEZlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtN'@; put 'YXRoLmltdWwoRmUsQm4pfDApK01hdGguaW11bChnZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChnZSxCbil8MCkrKHA+Pj4xMyl8MCkrKEZzPj4+MjYpfDAsRnMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLEdlKSxwPShwPU1hdGguaW11bChsbixVdCkpK01hdGguaW11bChP'@; put 'bixHZSl8MCxJPU1hdGguaW11bChPbixVdCksRD1EK01hdGguaW11bChndCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LEJ0KXwwKStNYXRoLmltdWwoWHQseHQpfDAsST1JK01hdGguaW11bChYdCxCdCl8MCxEPUQrTWF0aC5pbXVsKFJ0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQseW4p'@; put 'fDApK01hdGguaW11bChMdCxHbil8MCxJPUkrTWF0aC5pbXVsKEx0LHluKXwwLEQ9RCtNYXRoLmltdWwodHQscnIpfDAscD0ocD1wK01hdGguaW11bCh0dCxocil8MCkrTWF0aC5pbXVsKEtlLHJyKXwwLEk9SStNYXRoLmltdWwoS2UsaHIpfDA7dmFyICRpPShHKyhEPUQrTWF0aC5pbXVsKGhl'@; put 'LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoaGUsQm4pfDApK01hdGguaW11bCh3ZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bCh3ZSxCbil8MCkrKHA+Pj4xMyl8MCkrKCRpPj4+MjYpfDAsJGkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHh0KSxwPShwPU1h'@; put 'dGguaW11bChsbixCdCkpK01hdGguaW11bChPbix4dCl8MCxJPU1hdGguaW11bChPbixCdCksRD1EK01hdGguaW11bChndCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LHluKXwwKStNYXRoLmltdWwoWHQsR24pfDAsST1JK01hdGguaW11bChYdCx5bil8MCxEPUQrTWF0aC5pbXVsKFJ0LHJy'@; put 'KXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsaHIpfDApK01hdGguaW11bChMdCxycil8MCxJPUkrTWF0aC5pbXVsKEx0LGhyKXwwO3ZhciBfcz0oRysoRD1EK01hdGguaW11bCh0dCx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHR0LEJuKXwwKStNYXRoLmltdWwoS2Usdm4pfDAp'@; put 'KTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoS2UsQm4pfDApKyhwPj4+MTMpfDApKyhfcz4+PjI2KXwwLF9zJj02NzEwODg2MyxEPU1hdGguaW11bChsbixHbikscD0ocD1NYXRoLmltdWwobG4seW4pKStNYXRoLmltdWwoT24sR24pfDAsST1NYXRoLmltdWwoT24seW4pLEQ9RCtNYXRoLmlt'@; put 'dWwoZ3QscnIpfDAscD0ocD1wK01hdGguaW11bChndCxocil8MCkrTWF0aC5pbXVsKFh0LHJyKXwwLEk9SStNYXRoLmltdWwoWHQsaHIpfDA7dmFyIGpzPShHKyhEPUQrTWF0aC5pbXVsKFJ0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoUnQsQm4pfDApK01hdGguaW11bChM'@; put 'dCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChMdCxCbil8MCkrKHA+Pj4xMyl8MCkrKGpzPj4+MjYpfDAsanMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHJyKSxwPShwPU1hdGguaW11bChsbixocikpK01hdGguaW11bChPbixycil8MCxJPU1hdGguaW11bChPbixocik7dmFy'@; put 'IENsPShHKyhEPUQrTWF0aC5pbXVsKGd0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoZ3QsQm4pfDApK01hdGguaW11bChYdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChYdCxCbil8MCkrKHA+Pj4xMyl8MCkrKENsPj4+MjYpfDAsQ2wmPTY3MTA4ODYzO3Zh'@; put 'ciBUaT0oRysoRD1NYXRoLmltdWwobG4sdm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKGxuLEJuKSkrTWF0aC5pbXVsKE9uLHZuKXwwKSk8PDEzKXwwO3JldHVybiBHPSgoST1NYXRoLmltdWwoT24sQm4pKSsocD4+PjEzKXwwKSsoVGk+Pj4yNil8MCxUaSY9NjcxMDg4NjMsS1swXT1q'@; put 'YSxLWzFdPWpvLEtbMl09WHIsS1szXT1lYSxLWzRdPXJhLEtbNV09Y2EsS1s2XT1DaSxLWzddPWhvLEtbOF09TWEsS1s5XT1rcyxLWzEwXT1CaSxLWzExXT10YSxLWzEyXT1NcixLWzEzXT1GcyxLWzE0XT0kaSxLWzE1XT1fcyxLWzE2XT1qcyxLWzE3XT1DbCxLWzE4XT1UaSwwIT09RyYmKEtb'@; put 'MTldPUcsay5sZW5ndGgrKyksa307ZnVuY3Rpb24gWShYLGYsYil7cmV0dXJuKG5ldyBGKS5tdWxwKFgsZixiKX1mdW5jdGlvbiBGKFgsZil7dGhpcy54PVgsdGhpcy55PWZ9TWF0aC5pbXVsfHwoTj1WKSx2LnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihmLGIpe3ZhciBrLE09dGhpcy5sZW5n'@; put 'dGgrZi5sZW5ndGg7cmV0dXJuIGs9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1mLmxlbmd0aD9OKHRoaXMsZixiKTpNPDYzP1YodGhpcyxmLGIpOk08MTAyND9mdW5jdGlvbiB6KFgsZixiKXtiLm5lZ2F0aXZlPWYubmVnYXRpdmVeWC5uZWdhdGl2ZSxiLmxlbmd0aD1YLmxlbmd0aCtmLmxlbmd0'@; put 'aDtmb3IodmFyIGs9MCxNPTAsQj0wO0I8Yi5sZW5ndGgtMTtCKyspe3ZhciBLPU07TT0wO2Zvcih2YXIgRz02NzEwODg2MyZrLEQ9TWF0aC5taW4oQixmLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsQi1YLmxlbmd0aCsxKTtwPD1EO3ArKyl7dmFyIF9lPSgwfFgud29yZHNbQi1wXSkqKDB8Zi53'@; put 'b3Jkc1twXSksUGU9NjcxMDg4NjMmX2U7Rz02NzEwODg2MyYoUGU9UGUrR3wwKSxNKz0oSz0oSz1LKyhfZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixLJj02NzEwODg2M31iLndvcmRzW0JdPUcsaz1LLEs9TX1yZXR1cm4gMCE9PWs/Yi53b3Jkc1tCXT1rOmIubGVuZ3RoLS0s'@; put 'Yi5zdHJpcCgpfSh0aGlzLGYsYik6WSh0aGlzLGYsYiksa30sRi5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihmKXtmb3IodmFyIGI9bmV3IEFycmF5KGYpLGs9di5wcm90b3R5cGUuX2NvdW50Qml0cyhmKS0xLE09MDtNPGY7TSsrKWJbTV09dGhpcy5yZXZCaW4oTSxrLGYpO3JldHVybiBi'@; put 'fSxGLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oZixiLGspe2lmKDA9PT1mfHxmPT09ay0xKXJldHVybiBmO2Zvcih2YXIgTT0wLEI9MDtCPGI7QisrKU18PSgxJmYpPDxiLUItMSxmPj49MTtyZXR1cm4gTX0sRi5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihmLGIsayxNLEIsSyl7Zm9y'@; put 'KHZhciBHPTA7RzxLO0crKylNW0ddPWJbZltHXV0sQltHXT1rW2ZbR11dfSxGLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZixiLGssTSxCLEspe3RoaXMucGVybXV0ZShLLGYsYixrLE0sQik7Zm9yKHZhciBHPTE7RzxCO0c8PD0xKWZvcih2YXIgRD1HPDwxLHA9TWF0aC5jb3MoMipN'@; put 'YXRoLlBJL0QpLEk9TWF0aC5zaW4oMipNYXRoLlBJL0QpLHVlPTA7dWU8Qjt1ZSs9RClmb3IodmFyIG5lPXAsX2U9SSxQZT0wO1BlPEc7UGUrKyl7dmFyIG90PWtbdWUrUGVdLGx0PU1bdWUrUGVdLGR0PWtbdWUrUGUrR10sUmU9TVt1ZStQZStHXSxhZT1uZSpkdC1fZSpSZTtSZT1uZSpSZStf'@; put 'ZSpkdCxrW3VlK1BlXT1vdCsoZHQ9YWUpLE1bdWUrUGVdPWx0K1JlLGtbdWUrUGUrR109b3QtZHQsTVt1ZStQZStHXT1sdC1SZSxQZSE9PUQmJihhZT1wKm5lLUkqX2UsX2U9cCpfZStJKm5lLG5lPWFlKX19LEYucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGYsYil7dmFyIGs9MXxN'@; put 'YXRoLm1heChiLGYpLE09MSZrLEI9MDtmb3Ioaz1rLzJ8MDtrO2s+Pj49MSlCKys7cmV0dXJuIDE8PEIrMStNfSxGLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oZixiLGspe2lmKCEoazw9MSkpZm9yKHZhciBNPTA7TTxrLzI7TSsrKXt2YXIgQj1mW01dO2ZbTV09ZltrLU0tMV0sZltr'@; put 'LU0tMV09QixCPWJbTV0sYltNXT0tYltrLU0tMV0sYltrLU0tMV09LUJ9fSxGLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oZixiKXtmb3IodmFyIGs9MCxNPTA7TTxiLzI7TSsrKXt2YXIgQj04MTkyKk1hdGgucm91bmQoZlsyKk0rMV0vYikrTWF0aC5yb3VuZChmWzIqTV0vYikr'@; put 'aztmW01dPTY3MTA4ODYzJkIsaz1CPDY3MTA4ODY0PzA6Qi82NzEwODg2NHwwfXJldHVybiBmfSxGLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGYsYixrLE0pe2Zvcih2YXIgQj0wLEs9MDtLPGI7SysrKWtbMipLXT04MTkxJihCKz0wfGZbS10pLGtbMipLKzFdPTgxOTEmKEI+Pj49'@; put 'MTMpLEI+Pj49MTM7Zm9yKEs9MipiO0s8TTsrK0spa1tLXT0wO3MoMD09PUIpLHMoISgtODE5MiZCKSl9LEYucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZil7Zm9yKHZhciBiPW5ldyBBcnJheShmKSxrPTA7azxmO2srKyliW2tdPTA7cmV0dXJuIGJ9LEYucHJvdG90eXBlLm11bHA9ZnVuY3Rp'@; put 'b24oZixiLGspe3ZhciBNPTIqdGhpcy5ndWVzc0xlbjEzYihmLmxlbmd0aCxiLmxlbmd0aCksQj10aGlzLm1ha2VSQlQoTSksSz10aGlzLnN0dWIoTSksRz1uZXcgQXJyYXkoTSksRD1uZXcgQXJyYXkoTSkscD1uZXcgQXJyYXkoTSksST1uZXcgQXJyYXkoTSksdWU9bmV3IEFycmF5KE0pLG5l'@; put 'PW5ldyBBcnJheShNKSxfZT1rLndvcmRzO19lLmxlbmd0aD1NLHRoaXMuY29udmVydDEzYihmLndvcmRzLGYubGVuZ3RoLEcsTSksdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsSSxNKSx0aGlzLnRyYW5zZm9ybShHLEssRCxwLE0sQiksdGhpcy50cmFuc2Zvcm0oSSxLLHVlLG5l'@; put 'LE0sQik7Zm9yKHZhciBQZT0wO1BlPE07UGUrKyl7dmFyIG90PURbUGVdKnVlW1BlXS1wW1BlXSpuZVtQZV07cFtQZV09RFtQZV0qbmVbUGVdK3BbUGVdKnVlW1BlXSxEW1BlXT1vdH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoRCxwLE0pLHRoaXMudHJhbnNmb3JtKEQscCxfZSxLLE0sQiksdGhp'@; put 'cy5jb25qdWdhdGUoX2UsSyxNKSx0aGlzLm5vcm1hbGl6ZTEzYihfZSxNKSxrLm5lZ2F0aXZlPWYubmVnYXRpdmVeYi5uZWdhdGl2ZSxrLmxlbmd0aD1mLmxlbmd0aCtiLmxlbmd0aCxrLnN0cmlwKCl9LHYucHJvdG90eXBlLm11bD1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1'@; put 'cm4gYi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLHRoaXMubXVsVG8oZixiKX0sdi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4gYi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLFkodGhpcyxmLGIp'@; put 'fSx2LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZix0aGlzKX0sdi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYpLHMoZjw2NzEwODg2NCk7Zm9yKHZhciBiPTAsaz0wO2s8dGhpcy5sZW5ndGg7aysr'@; put 'KXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSpmLEI9KDY3MTA4ODYzJk0pKyg2NzEwODg2MyZiKTtiPj49MjYsYis9TS82NzEwODg2NHwwLGIrPUI+Pj4yNix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJkJ9cmV0dXJuIDAhPT1iJiYodGhpcy53b3Jkc1trXT1iLHRoaXMubGVuZ3RoKyspLDA9PT1m'@; put 'JiYodGhpcy5sZW5ndGg9MSx0aGlzLl9ub3JtU2lnbigpKSx0aGlzfSx2LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZil9LHYucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sdi5wcm90b3R5cGUuaXNx'@; put 'cj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sdi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGYpe3ZhciBiPWZ1bmN0aW9uIEgoWCl7Zm9yKHZhciBmPW5ldyBBcnJheShYLmJpdExlbmd0aCgpKSxiPTA7YjxmLmxlbmd0aDtiKyspe3ZhciBNPWIlMjY7ZltiXT0o'@; put 'WC53b3Jkc1tiLzI2fDBdJjE8PE0pPj4+TX1yZXR1cm4gZn0oZik7aWYoMD09PWIubGVuZ3RoKXJldHVybiBuZXcgdigxKTtmb3IodmFyIGs9dGhpcyxNPTA7TTxiLmxlbmd0aCYmMD09PWJbTV07TSsrLGs9ay5zcXIoKSk7aWYoKytNPGIubGVuZ3RoKWZvcih2YXIgQj1rLnNxcigpO008Yi5s'@; put 'ZW5ndGg7TSsrLEI9Qi5zcXIoKSkwIT09YltNXSYmKGs9ay5tdWwoQikpO3JldHVybiBrfSx2LnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBCLGI9ZiUyNixrPShmLWIpLzI2LE09NjcxMDg4NjM+Pj4yNi1iPDwyNi1iO2lmKDAh'@; put 'PT1iKXt2YXIgSz0wO2ZvcihCPTA7Qjx0aGlzLmxlbmd0aDtCKyspe3ZhciBHPXRoaXMud29yZHNbQl0mTTt0aGlzLndvcmRzW0JdPSgwfHRoaXMud29yZHNbQl0pLUc8PGJ8SyxLPUc+Pj4yNi1ifUsmJih0aGlzLndvcmRzW0JdPUssdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWspe2ZvcihCPXRo'@; put 'aXMubGVuZ3RoLTE7Qj49MDtCLS0pdGhpcy53b3Jkc1tCK2tdPXRoaXMud29yZHNbQl07Zm9yKEI9MDtCPGs7QisrKXRoaXMud29yZHNbQl09MDt0aGlzLmxlbmd0aCs9a31yZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09dGhp'@; put 'cy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oZil9LHYucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihmLGIsayl7dmFyIE07cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApLE09Yj8oYi1iJTI2KS8yNjowO3ZhciBCPWYlMjYsSz1NYXRoLm1pbigoZi1CKS8yNix0aGlzLmxlbmd0aCksRz02NzEw'@; put 'ODg2M142NzEwODg2Mz4+PkI8PEIsRD1rO2lmKE0tPUssTT1NYXRoLm1heCgwLE0pLEQpe2Zvcih2YXIgcD0wO3A8SztwKyspRC53b3Jkc1twXT10aGlzLndvcmRzW3BdO0QubGVuZ3RoPUt9aWYoMCE9PUspaWYodGhpcy5sZW5ndGg+Sylmb3IodGhpcy5sZW5ndGgtPUsscD0wO3A8dGhpcy5s'@; put 'ZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1twK0tdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEk9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09SXx8cD49TSk7cC0tKXt2YXIgdWU9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09'@; put 'STw8MjYtQnx1ZT4+PkIsST11ZSZHfXJldHVybiBEJiYwIT09SSYmKEQud29yZHNbRC5sZW5ndGgrK109SSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZixiLGspe3JldHVy'@; put 'biBzKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihmLGIsayl9LHYucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihmKX0sdi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZil9LHYu'@; put 'cHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihmKX0sdi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZil9LHYucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVv'@; put 'ZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9a3x8ISh0aGlzLndvcmRzW2tdJjE8PGIpKX0sdi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0'@; put 'dXJuIHMoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAhPT1iJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0aGlzLmxlbmd0aCksMCE9PWImJih0aGlzLndvcmRzW3RoaXMubGVuZ3Ro'@; put 'LTFdJj02NzEwODg2M142NzEwODg2Mz4+PmI8PGIpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCkpfSx2LnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihmKX0sdi5wcm90b3R5'@; put 'cGUuaWFkZG49ZnVuY3Rpb24oZil7cmV0dXJuIHMoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MD90aGlzLmlzdWJuKC1mKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGY/KHRoaXMud29yZHNbMF09Zi0oMHx0aGlzLndv'@; put 'cmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihmKX0sdi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGYpe3RoaXMud29yZHNbMF0rPWY7Zm9yKHZhciBiPTA7Yjx0aGlz'@; put 'Lmxlbmd0aCYmdGhpcy53b3Jkc1tiXT49NjcxMDg4NjQ7YisrKXRoaXMud29yZHNbYl0tPTY3MTA4ODY0LGI9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbYisxXT0xOnRoaXMud29yZHNbYisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxiKzEpLHRoaXN9'@; put 'LHYucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGYpe2lmKHMoIm51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MClyZXR1cm4gdGhpcy5pYWRkbigtZik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGYpLHRoaXMubmVnYXRp'@; put 'dmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWYsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2JdPDA7YisrKXRoaXMu'@; put 'd29yZHNbYl0rPTY3MTA4ODY0LHRoaXMud29yZHNbYisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oZil9LHYucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUo'@; put 'KS5pc3VibihmKX0sdi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sdi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LHYucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihmLGIsayl7'@; put 'dmFyIEI7dGhpcy5fZXhwYW5kKGYubGVuZ3RoK2spO3ZhciBLLEc9MDtmb3IoQj0wO0I8Zi5sZW5ndGg7QisrKXtLPSgwfHRoaXMud29yZHNbQitrXSkrRzt2YXIgRD0oMHxmLndvcmRzW0JdKSpiO0c9KChLLT02NzEwODg2MyZEKT4+MjYpLShELzY3MTA4ODY0fDApLHRoaXMud29yZHNbQitr'@; put 'XT02NzEwODg2MyZLfWZvcig7Qjx0aGlzLmxlbmd0aC1rO0IrKylHPShLPSgwfHRoaXMud29yZHNbQitrXSkrRyk+PjI2LHRoaXMud29yZHNbQitrXT02NzEwODg2MyZLO2lmKDA9PT1HKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKHMoLTE9PT1HKSxHPTAsQj0wO0I8dGhpcy5sZW5ndGg7Qisr'@; put 'KUc9KEs9LSgwfHRoaXMud29yZHNbQl0pK0cpPj4yNix0aGlzLndvcmRzW0JdPTY3MTA4ODYzJks7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGYsYil7dmFyIGssTT10aGlzLmNsb25lKCksQj1mLEs9MHxCLndvcmRz'@; put 'W0IubGVuZ3RoLTFdOzAhPShrPTI2LXRoaXMuX2NvdW50Qml0cyhLKSkmJihCPUIudXNobG4oayksTS5pdXNobG4oayksSz0wfEIud29yZHNbQi5sZW5ndGgtMV0pO3ZhciBwLEQ9TS5sZW5ndGgtQi5sZW5ndGg7aWYoIm1vZCIhPT1iKXsocD1uZXcgdihudWxsKSkubGVuZ3RoPUQrMSxwLndv'@; put 'cmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBJPTA7STxwLmxlbmd0aDtJKyspcC53b3Jkc1tJXT0wfXZhciB1ZT1NLmNsb25lKCkuX2lzaGxuc3VibXVsKEIsMSxEKTswPT09dWUubmVnYXRpdmUmJihNPXVlLHAmJihwLndvcmRzW0RdPTEpKTtmb3IodmFyIG5lPUQtMTtuZT49MDtu'@; put 'ZS0tKXt2YXIgX2U9NjcxMDg4NjQqKDB8TS53b3Jkc1tCLmxlbmd0aCtuZV0pKygwfE0ud29yZHNbQi5sZW5ndGgrbmUtMV0pO2ZvcihfZT1NYXRoLm1pbihfZS9LfDAsNjcxMDg4NjMpLE0uX2lzaGxuc3VibXVsKEIsX2UsbmUpOzAhPT1NLm5lZ2F0aXZlOylfZS0tLE0ubmVnYXRpdmU9MCxN'@; put 'Ll9pc2hsbnN1Ym11bChCLDEsbmUpLE0uaXNaZXJvKCl8fChNLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tuZV09X2UpfXJldHVybiBwJiZwLnN0cmlwKCksTS5zdHJpcCgpLCJkaXYiIT09YiYmMCE9PWsmJk0uaXVzaHJuKGspLHtkaXY6cHx8bnVsbCxtb2Q6TX19LHYucHJvdG90eXBlLmRp'@; put 'dm1vZD1mdW5jdGlvbihmLGIsayl7cmV0dXJuIHMoIWYuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgdigwKSxtb2Q6bmV3IHYoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZT8oSz10aGlzLm5lZygpLmRpdm1vZChmLGIpLCJtb2QiIT09YiYmKE09Sy5kaXYu'@; put 'bmVnKCkpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRpdmUmJkIuaWFkZChmKSkse2RpdjpNLG1vZDpCfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1mLm5lZ2F0aXZlPyhLPXRoaXMuZGl2bW9kKGYubmVnKCksYiksIm1vZCIhPT1iJiYoTT1LLmRpdi5uZWcoKSks'@; put 'e2RpdjpNLG1vZDpLLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZmLm5lZ2F0aXZlKT8oSz10aGlzLm5lZygpLmRpdm1vZChmLm5lZygpLGIpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRpdmUmJkIuaXN1YihmKSkse2RpdjpLLmRpdixtb2Q6Qn0pOmYubGVuZ3Ro'@; put 'PnRoaXMubGVuZ3RofHx0aGlzLmNtcChmKTwwP3tkaXY6bmV3IHYoMCksbW9kOnRoaXN9OjE9PT1mLmxlbmd0aD8iZGl2Ij09PWI/e2Rpdjp0aGlzLmRpdm4oZi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09Yj97ZGl2Om51bGwsbW9kOm5ldyB2KHRoaXMubW9kbihmLndvcmRzWzBdKSl9'@; put 'OntkaXY6dGhpcy5kaXZuKGYud29yZHNbMF0pLG1vZDpuZXcgdih0aGlzLm1vZG4oZi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGYsYik7dmFyIE0sQixLfSx2LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsImRpdiIsITEpLmRpdn0sdi5wcm90b3R5'@; put 'cGUubW9kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmRpdm1vZChmLCJtb2QiLCExKS5tb2R9LHYucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsIm1vZCIsITApLm1vZH0sdi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oZil7dmFyIGI9dGhpcy5k'@; put 'aXZtb2QoZik7aWYoYi5tb2QuaXNaZXJvKCkpcmV0dXJuIGIuZGl2O3ZhciBrPWIubW9kLmFicygpLE09Zi5hYnMoKS5pdXNocm4oMSksQj0xJmYud29yZHNbMF0sSz1rLmNtcChNKTtpZihLPDB8fDE9PT1CJiYwPT09SylyZXR1cm4gYi5kaXY7dmFyIEc9bmV3IHYoMSk7cmV0dXJuIEcubmVn'@; put 'YXRpdmU9dGhpcy5uZWdhdGl2ZV5mLm5lZ2F0aXZlLGIuZGl2LmlhZGQoRyl9LHYucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPSgxPDwyNiklZixrPTAsTT10aGlzLmxlbmd0aC0xO00+PTA7TS0tKWs9KGIqaysoMHx0aGlzLndvcmRzW01dKSkl'@; put 'ZjtyZXR1cm4ga30sdi5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSs2NzEwODg2NCpiO3RoaXMud29yZHNba109TS9mfDAsYj1NJWZ9cmV0dXJuIHRo'@; put 'aXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGYpfSx2LnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUpLHMoIWYuaXNaZXJvKCkpO3ZhciBiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5u'@; put 'ZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9bmV3IHYoMCksRz1uZXcgdigxKSxEPTA7Yi5pc0V2ZW4oKSYmay5pc0V2ZW4oKTspYi5pdXNocm4oMSksay5pdXNocm4oMSksKytEO2Zvcih2YXIgcD1rLmNsb25lKCksST1iLmNsb25l'@; put 'KCk7IWIuaXNaZXJvKCk7KXtmb3IodmFyIHVlPTAsbmU9MTswPT09KGIud29yZHNbMF0mbmUpJiZ1ZTwyNjsrK3VlLG5lPDw9MSk7aWYodWU+MClmb3IoYi5pdXNocm4odWUpO3VlLS0gPjA7KShNLmlzT2RkKCl8fEIuaXNPZGQoKSkmJihNLmlhZGQocCksQi5pc3ViKEkpKSxNLml1c2hybigx'@; put 'KSxCLml1c2hybigxKTtmb3IodmFyIF9lPTAsUGU9MTswPT09KGsud29yZHNbMF0mUGUpJiZfZTwyNjsrK19lLFBlPDw9MSk7aWYoX2U+MClmb3Ioay5pdXNocm4oX2UpO19lLS0gPjA7KShLLmlzT2RkKCl8fEcuaXNPZGQoKSkmJihLLmlhZGQocCksRy5pc3ViKEkpKSxLLml1c2hybigxKSxH'@; put 'Lml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihLKSxCLmlzdWIoRykpOihrLmlzdWIoYiksSy5pc3ViKE0pLEcuaXN1YihCKSl9cmV0dXJue2E6SyxiOkcsZ2NkOmsuaXVzaGxuKEQpfX0sdi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRp'@; put 'dmUpLHMoIWYuaXNaZXJvKCkpO3ZhciB1ZSxiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5uZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9ay5jbG9uZSgpO2IuY21wbigxKT4wJiZrLmNtcG4oMSk+MDspe2Zvcih2YXIgRz0wLEQ9'@; put 'MTswPT09KGIud29yZHNbMF0mRCkmJkc8MjY7KytHLEQ8PD0xKTtpZihHPjApZm9yKGIuaXVzaHJuKEcpO0ctLSA+MDspTS5pc09kZCgpJiZNLmlhZGQoSyksTS5pdXNocm4oMSk7Zm9yKHZhciBwPTAsST0xOzA9PT0oay53b3Jkc1swXSZJKSYmcDwyNjsrK3AsSTw8PTEpO2lmKHA+MClmb3Io'@; put 'ay5pdXNocm4ocCk7cC0tID4wOylCLmlzT2RkKCkmJkIuaWFkZChLKSxCLml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihCKSk6KGsuaXN1YihiKSxCLmlzdWIoTSkpfXJldHVybih1ZT0wPT09Yi5jbXBuKDEpP006QikuY21wbigwKTwwJiZ1ZS5pYWRkKGYpLHVlfSx2'@; put 'LnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZi5hYnMoKTtpZihmLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBiPXRoaXMuY2xvbmUoKSxrPWYuY2xvbmUoKTtiLm5lZ2F0aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgTT0wO2IuaXNF'@; put 'dmVuKCkmJmsuaXNFdmVuKCk7TSsrKWIuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtiLmlzRXZlbigpOyliLml1c2hybigxKTtmb3IoO2suaXNFdmVuKCk7KWsuaXVzaHJuKDEpO3ZhciBCPWIuY21wKGspO2lmKEI8MCl7dmFyIEs9YjtiPWssaz1LfWVsc2UgaWYoMD09PUJ8'@; put 'fDA9PT1rLmNtcG4oMSkpYnJlYWs7Yi5pc3ViKGspfXJldHVybiBrLml1c2hsbihNKX0sdi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5lZ2NkKGYpLmEudW1vZChmKX0sdi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0p'@; put 'fSx2LnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LHYucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLndvcmRzWzBdJmZ9LHYucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmKTt2'@; put 'YXIgYj1mJTI2LGs9KGYtYikvMjYsTT0xPDxiO2lmKHRoaXMubGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1NLHRoaXM7Zm9yKHZhciBCPU0sSz1rOzAhPT1CJiZLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9MHx0aGlzLndvcmRzW0tdO0I9KEcrPUIp'@; put 'Pj4+MjYsdGhpcy53b3Jkc1tLXT1HJj02NzEwODg2M31yZXR1cm4gMCE9PUImJih0aGlzLndvcmRzW0tdPUIsdGhpcy5sZW5ndGgrKyksdGhpc30sdi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LHYucHJvdG90'@; put 'eXBlLmNtcG49ZnVuY3Rpb24oZil7dmFyIGssYj1mPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFiKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZiKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKWs9MTtlbHNle2ImJihmPS1mKSxzKGY8PTY3MTA4ODYzLCJO'@; put 'dW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBNPTB8dGhpcy53b3Jkc1swXTtrPU09PT1mPzA6TTxmPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LWs6a30sdi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGYpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4t'@; put 'MTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGI9dGhpcy51Y21wKGYpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1iOmJ9LHYucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZil7aWYodGhpcy5sZW5ndGg+Zi5sZW5ndGgpcmV0dXJuIDE7aWYo'@; put 'dGhpcy5sZW5ndGg8Zi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0wfHRoaXMud29yZHNba10sQj0wfGYud29yZHNba107aWYoTSE9PUIpe008Qj9iPS0xOk0+QiYmKGI9MSk7YnJlYWt9fXJldHVybiBifSx2LnByb3RvdHlwZS5n'@; put 'dG49ZnVuY3Rpb24oZil7cmV0dXJuIDE9PT10aGlzLmNtcG4oZil9LHYucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGYpe3JldHVybiAxPT09dGhpcy5jbXAoZil9LHYucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY21wbihmKT49MH0sdi5wcm90b3R5cGUuZ3RlPWZ1bmN0'@; put 'aW9uKGYpe3JldHVybiB0aGlzLmNtcChmKT49MH0sdi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGYpe3JldHVybi0xPT09dGhpcy5jbXBuKGYpfSx2LnByb3RvdHlwZS5sdD1mdW5jdGlvbihmKXtyZXR1cm4tMT09PXRoaXMuY21wKGYpfSx2LnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGYpe3Jl'@; put 'dHVybiB0aGlzLmNtcG4oZik8PTB9LHYucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbXAoZik8PTB9LHYucHJvdG90eXBlLmVxbj1mdW5jdGlvbihmKXtyZXR1cm4gMD09PXRoaXMuY21wbihmKX0sdi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZil7cmV0dXJuIDA9PT10'@; put 'aGlzLmNtcChmKX0sdi5yZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBrZShmKX0sdi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IikscygwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdv'@; put 'cmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxmLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRo'@; put 'aXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSx2LnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucmVkPWYsdGhpc30sdi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlv'@; put 'biBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0'@; put 'aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBu'@; put 'dW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTaGw9ZnVu'@; put 'Y3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBu'@; put 'dW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxmKSx0aGlzLnJlZC5tdWwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRo'@; put 'aXMsZiksdGhpcy5yZWQuaW11bCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sdi5wcm90'@; put 'b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LHYucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4g'@; put 'cyh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSx2LnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3'@; put 'aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sdi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5'@; put 'MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LHYucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCYmIWYucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGYpfTt2YXIgVz17azI1Njpu'@; put 'dWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHEoWCxmKXt0aGlzLm5hbWU9WCx0aGlzLnA9bmV3IHYoZiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IHYoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRo'@; put 'aXMuX3RtcCgpfWZ1bmN0aW9uIHJlKCl7cS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIG1lKCl7cS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZm'@; put 'ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIENlKCl7cS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7cS5jYWxsKHRo'@; put 'aXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGtlKFgpe2lmKCJzdHJpbmciPT10eXBlb2YgWCl7dmFyIGY9di5fcHJpbWUoWCk7dGhpcy5tPWYucCx0aGlzLnByaW1lPWZ9ZWxz'@; put 'ZSBzKFguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09WCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gcWUoWCl7a2UuY2FsbCh0aGlzLFgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0y'@; put 'Ni10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IHYoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlz'@; put 'Lm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9cS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiBmLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZn0s'@; put 'cS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihmKXt2YXIgayxiPWY7ZG97dGhpcy5zcGxpdChiLHRoaXMudG1wKSxrPShiPShiPXRoaXMuaW11bEsoYikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShrPnRoaXMubik7dmFyIE09azx0aGlzLm4/LTE6Yi51Y21wKHRoaXMu'@; put 'cCk7cmV0dXJuIDA9PT1NPyhiLndvcmRzWzBdPTAsYi5sZW5ndGg9MSk6TT4wP2IuaXN1Yih0aGlzLnApOnZvaWQgMCE9PWIuc3RyaXA/Yi5zdHJpcCgpOmIuX3N0cmlwKCksYn0scS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZixiKXtmLml1c2hybih0aGlzLm4sMCxiKX0scS5wcm90b3R5'@; put 'cGUuaW11bEs9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaW11bCh0aGlzLmspfSxBKHJlLHEpLHJlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihmLGIpe2Zvcih2YXIgaz00MTk0MzAzLE09TWF0aC5taW4oZi5sZW5ndGgsOSksQj0wO0I8TTtCKyspYi53b3Jkc1tCXT1mLndvcmRzW0JdO2lmKGIu'@; put 'bGVuZ3RoPU0sZi5sZW5ndGg8PTkpcmV0dXJuIGYud29yZHNbMF09MCx2b2lkKGYubGVuZ3RoPTEpO3ZhciBLPWYud29yZHNbOV07Zm9yKGIud29yZHNbYi5sZW5ndGgrK109SyZrLEI9MTA7QjxmLmxlbmd0aDtCKyspe3ZhciBHPTB8Zi53b3Jkc1tCXTtmLndvcmRzW0ItMTBdPShHJmspPDw0'@; put 'fEs+Pj4yMixLPUd9Zi53b3Jkc1tCLTEwXT1LPj4+PTIyLGYubGVuZ3RoLT0wPT09SyYmZi5sZW5ndGg+MTA/MTA6OX0scmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Yud29yZHNbZi5sZW5ndGhdPTAsZi53b3Jkc1tmLmxlbmd0aCsxXT0wLGYubGVuZ3RoKz0yO2Zvcih2YXIgYj0w'@; put 'LGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MHxmLndvcmRzW2tdO2Yud29yZHNba109NjcxMDg4NjMmKGIrPTk3NypNKSxiPTY0Kk0rKGIvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1mLndvcmRzW2YubGVuZ3RoLTFdJiYoZi5sZW5ndGgtLSwwPT09Zi53b3Jkc1tmLmxlbmd0aC0xXSYmZi5s'@; put 'ZW5ndGgtLSksZn0sQShtZSxxKSxBKENlLHEpLEEoSWUscSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Zvcih2YXIgYj0wLGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MTkqKDB8Zi53b3Jkc1trXSkrYixCPTY3MTA4ODYzJk07TT4+Pj0yNixmLndvcmRzW2tdPUIsYj1NfXJl'@; put 'dHVybiAwIT09YiYmKGYud29yZHNbZi5sZW5ndGgrK109YiksZn0sdi5fcHJpbWU9ZnVuY3Rpb24oZil7aWYoV1tmXSlyZXR1cm4gV1tmXTt2YXIgYjtpZigiazI1NiI9PT1mKWI9bmV3IHJlO2Vsc2UgaWYoInAyMjQiPT09ZiliPW5ldyBtZTtlbHNlIGlmKCJwMTkyIj09PWYpYj1uZXcgQ2U7'@; put 'ZWxzZXtpZigicDI1NTE5IiE9PWYpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrZik7Yj1uZXcgSWV9cmV0dXJuIFdbZl09YixifSxrZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZil7cygwPT09Zi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMi'@; put 'KSxzKGYucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGtlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihmLGIpe3MoMD09PShmLm5lZ2F0aXZlfGIubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHMoZi5yZWQmJmYucmVkPT09Yi5y'@; put 'ZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sa2UucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGYpLl9mb3JjZVJlZCh0aGlzKTpmLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3Rv'@; put 'dHlwZS5uZWc9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaXNaZXJvKCk/Zi5jbG9uZSgpOnRoaXMubS5zdWIoZikuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0p'@; put 'Pj0wJiZrLmlzdWIodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sa2UucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZixiKXt0aGlzLl92ZXJpZnkyKGYsYik7dmFyIGs9Zi5pYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrfSxrZS5wcm90b3R5cGUuc3Vi'@; put 'PWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuc3ViKGIpO3JldHVybiBrLmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuaXN1'@; put 'YihiKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGt9LGtlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShmKSx0aGlzLmltb2QoZi51c2hsbihiKSl9LGtlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMu'@; put 'X3ZlcmlmeTIoZixiKSx0aGlzLmltb2QoZi5pbXVsKGIpKX0sa2UucHJvdG90eXBlLm11bD1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLl92ZXJpZnkyKGYsYiksdGhpcy5pbW9kKGYubXVsKGIpKX0sa2UucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW11bChmLGYu'@; put 'Y2xvbmUoKSl9LGtlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubXVsKGYsZil9LGtlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGYpe2lmKGYuaXNaZXJvKCkpcmV0dXJuIGYuY2xvbmUoKTt2YXIgYj10aGlzLm0uYW5kbG4oMyk7aWYocyhiJTI9PTEpLDM9PT1iKXt2'@; put 'YXIgaz10aGlzLm0uYWRkKG5ldyB2KDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGYsayl9Zm9yKHZhciBNPXRoaXMubS5zdWJuKDEpLEI9MDshTS5pc1plcm8oKSYmMD09PU0uYW5kbG4oMSk7KUIrKyxNLml1c2hybigxKTtzKCFNLmlzWmVybygpKTt2YXIgSz1uZXcgdigxKS50b1Jl'@; put 'ZCh0aGlzKSxHPUsucmVkTmVnKCksRD10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IHYoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLEQpLmNtcChHKTspcC5yZWRJQWRkKEcpO2Zvcih2YXIgST10aGlzLnBvdyhwLE0pLHVl'@; put 'PXRoaXMucG93KGYsTS5hZGRuKDEpLml1c2hybigxKSksbmU9dGhpcy5wb3coZixNKSxfZT1COzAhPT1uZS5jbXAoSyk7KXtmb3IodmFyIFBlPW5lLG90PTA7MCE9PVBlLmNtcChLKTtvdCsrKVBlPVBlLnJlZFNxcigpO3Mob3Q8X2UpO3ZhciBsdD10aGlzLnBvdyhJLG5ldyB2KDEpLml1c2hs'@; put 'bihfZS1vdC0xKSk7dWU9dWUucmVkTXVsKGx0KSxJPWx0LnJlZFNxcigpLG5lPW5lLnJlZE11bChJKSxfZT1vdH1yZXR1cm4gdWV9LGtlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGYpe3ZhciBiPWYuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1iLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAs'@; put 'dGhpcy5pbW9kKGIpLnJlZE5lZygpKTp0aGlzLmltb2QoYil9LGtlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZixiKXtpZihiLmlzWmVybygpKXJldHVybiBuZXcgdigxKS50b1JlZCh0aGlzKTtpZigwPT09Yi5jbXBuKDEpKXJldHVybiBmLmNsb25lKCk7dmFyIE09bmV3IEFycmF5KDE2KTtN'@; put 'WzBdPW5ldyB2KDEpLnRvUmVkKHRoaXMpLE1bMV09Zjtmb3IodmFyIEI9MjtCPE0ubGVuZ3RoO0IrKylNW0JdPXRoaXMubXVsKE1bQi0xXSxmKTt2YXIgSz1NWzBdLEc9MCxEPTAscD1iLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09cCYmKHA9MjYpLEI9Yi5sZW5ndGgtMTtCPj0wO0ItLSl7Zm9y'@; put 'KHZhciBJPWIud29yZHNbQl0sdWU9cC0xO3VlPj0wO3VlLS0pe3ZhciBuZT1JPj51ZSYxO0shPT1NWzBdJiYoSz10aGlzLnNxcihLKSksMCE9PW5lfHwwIT09Rz8oRzw8PTEsR3w9bmUsKDQ9PT0rK0R8fDA9PT1CJiYwPT09dWUpJiYoSz10aGlzLm11bChLLE1bR10pLEQ9MCxHPTApKTpEPTB9'@; put 'cD0yNn1yZXR1cm4gS30sa2UucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihmKXt2YXIgYj1mLnVtb2QodGhpcy5tKTtyZXR1cm4gYj09PWY/Yi5jbG9uZSgpOmJ9LGtlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihmKXt2YXIgYj1mLmNsb25lKCk7cmV0dXJuIGIucmVkPW51'@; put 'bGwsYn0sdi5tb250PWZ1bmN0aW9uKGYpe3JldHVybiBuZXcgcWUoZil9LEEocWUsa2UpLHFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLnVzaGxuKHRoaXMuc2hpZnQpKX0scWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGYpe3Zh'@; put 'ciBiPXRoaXMuaW1vZChmLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gYi5yZWQ9bnVsbCxifSxxZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihmLGIpe2lmKGYuaXNaZXJvKCl8fGIuaXNaZXJvKCkpcmV0dXJuIGYud29yZHNbMF09MCxmLmxlbmd0aD0xLGY7dmFyIGs9Zi5pbXVsKGIpLE09ay5t'@; put 'YXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksQj1rLmlzdWIoTSkuaXVzaHJuKHRoaXMuc2hpZnQpLEs9QjtyZXR1cm4gQi5jbXAodGhpcy5tKT49MD9LPUIuaXN1Yih0aGlzLm0pOkIuY21wbigwKTwwJiYoSz1CLmlhZGQodGhp'@; put 'cy5tKSksSy5fZm9yY2VSZWQodGhpcyl9LHFlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZixiKXtpZihmLmlzWmVybygpfHxiLmlzWmVybygpKXJldHVybiBuZXcgdigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGs9Zi5tdWwoYiksTT1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYp'@; put 'LmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxCPWsuaXN1YihNKS5pdXNocm4odGhpcy5zaGlmdCksSz1CO3JldHVybiBCLmNtcCh0aGlzLm0pPj0wP0s9Qi5pc3ViKHRoaXMubSk6Qi5jbXBuKDApPDAmJihLPUIuaWFkZCh0aGlzLm0pKSxLLl9mb3JjZVJlZCh0aGlzKX0scWUucHJv'@; put 'dG90eXBlLmludm09ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oZmU9aC5ubWQoZmUpLHRoaXMpfSwzMDY1NShmZSl7InVzZSBzdHJpY3QiO3ZhciBqPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ITE7'@; put 'aWYoail0cnl7aih7fSwiYSIse3ZhbHVlOjF9KX1jYXRjaHtqPSExfWZlLmV4cG9ydHM9an0sNDEyMzcoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUV2YWxFcnJvcn0sNjkzODMoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUVycm9yfSw3OTI5MChmZSl7InVzZSBzdHJpY3QiO2Zl'@; put 'LmV4cG9ydHM9UmFuZ2VFcnJvcn0sNzk1MzgoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPVJlZmVyZW5jZUVycm9yfSw1ODA2OChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9U3ludGF4RXJyb3J9LDY5Njc1KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1UeXBlRXJyb3J9LDM1'@; put 'MzQ1KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1VUklFcnJvcn0sNzk2MTIoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPU9iamVjdH0sMzcwMDcoZmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgeSxqPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsaD1qJiYiZnVuY3Rp'@; put 'b24iPT10eXBlb2Ygai5hcHBseT9qLmFwcGx5OmZ1bmN0aW9uKHEscmUsbWUpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChxLHJlLG1lKX07eT1qJiYiZnVuY3Rpb24iPT10eXBlb2Ygai5vd25LZXlzP2oub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz'@; put 'P2Z1bmN0aW9uKHEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhxKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhxKSl9OmZ1bmN0aW9uKHEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhxKX07dmFyIHM9TnVtYmVyLmlzTmFOfHxmdW5j'@; put 'dGlvbihxKXtyZXR1cm4gcSE9cX07ZnVuY3Rpb24gQSgpe0EuaW5pdC5jYWxsKHRoaXMpfWZlLmV4cG9ydHM9QSxmZS5leHBvcnRzLm9uY2U9ZnVuY3Rpb24geihXLHEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZSxtZSl7ZnVuY3Rpb24gQ2Uoa2Upe1cucmVtb3ZlTGlzdGVuZXIo'@; put 'cSxJZSksbWUoa2UpfWZ1bmN0aW9uIEllKCl7ImZ1bmN0aW9uIj09dHlwZW9mIFcucmVtb3ZlTGlzdGVuZXImJlcucmVtb3ZlTGlzdGVuZXIoImVycm9yIixDZSkscmUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX1GKFcscSxJZSx7b25jZTohMH0pLCJlcnJvciIhPT1xJiZmdW5jdGlvbiBZ'@; put 'KFcscSxyZSl7ImZ1bmN0aW9uIj09dHlwZW9mIFcub24mJkYoVywiZXJyb3IiLHEscmUpfShXLENlLHtvbmNlOiEwfSl9KX0sQS5FdmVudEVtaXR0ZXI9QSxBLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxBLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxBLnByb3RvdHlwZS5fbWF4TGlzdGVu'@; put 'ZXJzPXZvaWQgMDt2YXIgdj0xMDtmdW5jdGlvbiBDKFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBXKX1mdW5jdGlvbiB3'@; put 'KFcpe3JldHVybiB2b2lkIDA9PT1XLl9tYXhMaXN0ZW5lcnM/QS5kZWZhdWx0TWF4TGlzdGVuZXJzOlcuX21heExpc3RlbmVyc31mdW5jdGlvbiBTKFcscSxyZSxtZSl7dmFyIENlLEllLGtlO2lmKEMocmUpLHZvaWQgMD09PShJZT1XLl9ldmVudHMpPyhJZT1XLl9ldmVudHM9T2JqZWN0LmNy'@; put 'ZWF0ZShudWxsKSxXLl9ldmVudHNDb3VudD0wKToodm9pZCAwIT09SWUubmV3TGlzdGVuZXImJihXLmVtaXQoIm5ld0xpc3RlbmVyIixxLHJlLmxpc3RlbmVyP3JlLmxpc3RlbmVyOnJlKSxJZT1XLl9ldmVudHMpLGtlPUllW3FdKSx2b2lkIDA9PT1rZSlrZT1JZVtxXT1yZSwrK1cuX2V2ZW50'@; put 'c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGtlP2tlPUllW3FdPW1lP1tyZSxrZV06W2tlLHJlXTptZT9rZS51bnNoaWZ0KHJlKTprZS5wdXNoKHJlKSwoQ2U9dyhXKSk+MCYma2UubGVuZ3RoPkNlJiYha2Uud2FybmVkKXtrZS53YXJuZWQ9ITA7dmFyIHFlPW5ldyBFcnJvcigi'@; put 'UG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK2tlLmxlbmd0aCsiICIrU3RyaW5nKHEpKyIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdCIpO3FlLm5hbWU9Ik1heExpc3RlbmVyc0V4Y2Vl'@; put 'ZGVkV2FybmluZyIscWUuZW1pdHRlcj1XLHFlLnR5cGU9cSxxZS5jb3VudD1rZS5sZW5ndGgsZnVuY3Rpb24gYyhXKXtjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihXKX0ocWUpfXJldHVybiBXfWZ1bmN0aW9uIEwoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJn'@; put 'ZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIFIoVyxx'@; put 'LHJlKXt2YXIgbWU9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OlcsdHlwZTpxLGxpc3RlbmVyOnJlfSxDZT1MLmJpbmQobWUpO3JldHVybiBDZS5saXN0ZW5lcj1yZSxtZS53cmFwRm49Q2UsQ2V9ZnVuY3Rpb24geChXLHEscmUpe3ZhciBtZT1XLl9ldmVudHM7aWYodm9pZCAwPT09'@; put 'bWUpcmV0dXJuW107dmFyIENlPW1lW3FdO3JldHVybiB2b2lkIDA9PT1DZT9bXToiZnVuY3Rpb24iPT10eXBlb2YgQ2U/cmU/W0NlLmxpc3RlbmVyfHxDZV06W0NlXTpyZT9mdW5jdGlvbiBOKFcpe2Zvcih2YXIgcT1uZXcgQXJyYXkoVy5sZW5ndGgpLHJlPTA7cmU8cS5sZW5ndGg7KytyZSlx'@; put 'W3JlXT1XW3JlXS5saXN0ZW5lcnx8V1tyZV07cmV0dXJuIHF9KENlKTpIKENlLENlLmxlbmd0aCl9ZnVuY3Rpb24gVShXKXt2YXIgcT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09cSl7dmFyIHJlPXFbV107aWYoImZ1bmN0aW9uIj09dHlwZW9mIHJlKXJldHVybiAxO2lmKHZvaWQgMCE9PXJl'@; put 'KXJldHVybiByZS5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gSChXLHEpe2Zvcih2YXIgcmU9bmV3IEFycmF5KHEpLG1lPTA7bWU8cTsrK21lKXJlW21lXT1XW21lXTtyZXR1cm4gcmV9ZnVuY3Rpb24gRihXLHEscmUsbWUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBXLm9uKW1lLm9uY2U/Vy5v'@; put 'bmNlKHEscmUpOlcub24ocSxyZSk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVy5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZW1pdHRlciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBX'@; put 'KTtXLmFkZEV2ZW50TGlzdGVuZXIocSxmdW5jdGlvbiBDZShJZSl7bWUub25jZSYmVy5yZW1vdmVFdmVudExpc3RlbmVyKHEsQ2UpLHJlKEllKX0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIHZ9LHNldDpmdW5jdGlvbihXKXtpZigibnVtYmVyIiE9dHlwZW9mIFd8fFc8MHx8cyhXKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mICJkZWZhdWx0TWF4TGlzdGVuZXJzIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBS'@; put 'ZWNlaXZlZCAnK1crIi4iKTt2PVd9fSksQS5pbml0PWZ1bmN0aW9uKCl7KHZvaWQgMD09PXRoaXMuX2V2ZW50c3x8dGhpcy5fZXZlbnRzPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpJiYodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRz'@; put 'Q291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxBLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24ocSl7aWYoIm51bWJlciIhPXR5cGVvZiBxfHxxPDB8fHMocSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAi'@; put 'biIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytxKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1xLHRoaXN9LEEucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiB3KHRoaXMpfSxBLnBy'@; put 'b3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHEpe2Zvcih2YXIgcmU9W10sbWU9MTttZTxhcmd1bWVudHMubGVuZ3RoO21lKyspcmUucHVzaChhcmd1bWVudHNbbWVdKTt2YXIgQ2U9ImVycm9yIj09PXEsSWU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PUllKUNlPUNlJiZ2b2lkIDA9PT1JZS5lcnJv'@; put 'cjtlbHNlIGlmKCFDZSlyZXR1cm4hMTtpZihDZSl7dmFyIGtlO2lmKHJlLmxlbmd0aD4wJiYoa2U9cmVbMF0pLGtlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cga2U7dmFyIHFlPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKGtlPyIgKCIra2UubWVzc2FnZSsiKSI6IiIpKTt0aHJvdyBx'@; put 'ZS5jb250ZXh0PWtlLHFlfXZhciBYPUllW3FdO2lmKHZvaWQgMD09PVgpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFgpaChYLHRoaXMscmUpO2Vsc2V7dmFyIGY9WC5sZW5ndGgsYj1IKFgsZik7Zm9yKG1lPTA7bWU8ZjsrK21lKWgoYlttZV0sdGhpcyxyZSl9cmV0dXJuITB9LEEu'@; put 'cHJvdG90eXBlLm9uPUEucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKHEscmUpe3JldHVybiBTKHRoaXMscSxyZSwhMSl9LEEucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbihxLHJlKXtyZXR1cm4gUyh0aGlzLHEscmUsITApfSxBLnByb3RvdHlwZS5vbmNlPWZ1bmN0'@; put 'aW9uKHEscmUpe3JldHVybiBDKHJlKSx0aGlzLm9uKHEsUih0aGlzLHEscmUpKSx0aGlzfSxBLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHEscmUpe3JldHVybiBDKHJlKSx0aGlzLnByZXBlbmRMaXN0ZW5lcihxLFIodGhpcyxxLHJlKSksdGhpc30sQS5wcm90b3R5'@; put 'cGUub2ZmPUEucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHEscmUpe3ZhciBtZSxDZSxJZSxrZSxxZTtpZihDKHJlKSx2b2lkIDA9PT0oQ2U9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0obWU9Q2VbcV0pKXJldHVybiB0aGlzO2lmKG1lPT09cmV8fG1l'@; put 'Lmxpc3RlbmVyPT09cmUpMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBDZVtxXSxDZS5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIscSxtZS5saXN0ZW5lcnx8cmUpKTtlbHNlIGlmKCJmdW5j'@; put 'dGlvbiIhPXR5cGVvZiBtZSl7Zm9yKEllPS0xLGtlPW1lLmxlbmd0aC0xO2tlPj0wO2tlLS0paWYobWVba2VdPT09cmV8fG1lW2tlXS5saXN0ZW5lcj09PXJlKXtxZT1tZVtrZV0ubGlzdGVuZXIsSWU9a2U7YnJlYWt9aWYoSWU8MClyZXR1cm4gdGhpczswPT09SWU/bWUuc2hpZnQoKTpmdW5j'@; put 'dGlvbiBWKFcscSl7Zm9yKDtxKzE8Vy5sZW5ndGg7cSsrKVdbcV09V1txKzFdO1cucG9wKCl9KG1lLEllKSwxPT09bWUubGVuZ3RoJiYoQ2VbcV09bWVbMF0pLHZvaWQgMCE9PUNlLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixxLHFlfHxyZSl9cmV0dXJuIHRo'@; put 'aXN9LEEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihxKXt2YXIgcmUsbWUsQ2U7aWYodm9pZCAwPT09KG1lPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09bWUucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlz'@; put 'Ll9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1tZVtxXSYmKDA9PT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBtZVtxXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0'@; put 'aCl7dmFyIGtlLEllPU9iamVjdC5rZXlzKG1lKTtmb3IoQ2U9MDtDZTxJZS5sZW5ndGg7KytDZSkicmVtb3ZlTGlzdGVuZXIiIT09KGtlPUllW0NlXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtlKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiks'@; put 'dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZihyZT1tZVtxXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihxLHJlKTtlbHNlIGlmKHZvaWQgMCE9PXJlKWZvcihDZT1yZS5sZW5ndGgtMTtDZT49MDtDZS0t'@; put 'KXRoaXMucmVtb3ZlTGlzdGVuZXIocSxyZVtDZV0pO3JldHVybiB0aGlzfSxBLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24ocSl7cmV0dXJuIHgodGhpcyxxLCEwKX0sQS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKHEpe3JldHVybiB4KHRoaXMscSwhMSl9LEEubGlzdGVu'@; put 'ZXJDb3VudD1mdW5jdGlvbihXLHEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXLmxpc3RlbmVyQ291bnQ/Vy5saXN0ZW5lckNvdW50KHEpOlUuY2FsbChXLHEpfSxBLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PVUsQS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0'@; put 'aGlzLl9ldmVudHNDb3VudD4wP3kodGhpcy5fZXZlbnRzKTpbXX19LDY4MDc4KGZlLGosaCl7dmFyIHk9aCg5Mjg2MSkuQnVmZmVyLGM9aCg4ODI3Nik7ZmUuZXhwb3J0cz1mdW5jdGlvbiBzKEEsdixDLHcpe2lmKHkuaXNCdWZmZXIoQSl8fChBPXkuZnJvbShBLCJiaW5hcnkiKSksdiYmKHku'@; put 'aXNCdWZmZXIodil8fCh2PXkuZnJvbSh2LCJiaW5hcnkiKSksOCE9PXYubGVuZ3RoKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGggOCBieXRlIGxlbmd0aCIpO2Zvcih2YXIgUz1DLzgsTD15LmFsbG9jKFMpLFI9eS5hbGxvYyh3fHwwKSx4PXkuYWxs'@; put 'b2MoMCk7Uz4wfHx3PjA7KXt2YXIgVT1uZXcgYztVLnVwZGF0ZSh4KSxVLnVwZGF0ZShBKSx2JiZVLnVwZGF0ZSh2KSx4PVUuZGlnZXN0KCk7dmFyIEg9MDtpZihTPjApe3ZhciBWPUwubGVuZ3RoLVM7SD1NYXRoLm1pbihTLHgubGVuZ3RoKSx4LmNvcHkoTCxWLDAsSCksUy09SH1pZihIPHgu'@; put 'bGVuZ3RoJiZ3PjApe3ZhciBOPVIubGVuZ3RoLXcsej1NYXRoLm1pbih3LHgubGVuZ3RoLUgpO3guY29weShSLE4sSCxIK3opLHctPXp9fXJldHVybiB4LmZpbGwoMCkse2tleTpMLGl2OlJ9fX0sODI2ODIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2OTYwMCksYz1PYmplY3QucHJv'@; put 'dG90eXBlLnRvU3RyaW5nLHM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmZS5leHBvcnRzPWZ1bmN0aW9uKEwsUix4KXtpZigheShSKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgVTthcmd1bWVudHMubGVuZ3RoPj0zJiYo'@; put 'VT14KSxmdW5jdGlvbiB3KFMpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1jLmNhbGwoUyl9KEwpP2Z1bmN0aW9uKEwsUix4KXtmb3IodmFyIFU9MCxIPUwubGVuZ3RoO1U8SDtVKyspcy5jYWxsKEwsVSkmJihudWxsPT14P1IoTFtVXSxVLEwpOlIuY2FsbCh4LExbVV0sVSxMKSl9KEwsUixV'@; put 'KToic3RyaW5nIj09dHlwZW9mIEw/ZnVuY3Rpb24oTCxSLHgpe2Zvcih2YXIgVT0wLEg9TC5sZW5ndGg7VTxIO1UrKyludWxsPT14P1IoTC5jaGFyQXQoVSksVSxMKTpSLmNhbGwoeCxMLmNoYXJBdChVKSxVLEwpfShMLFIsVSk6ZnVuY3Rpb24oTCxSLHgpe2Zvcih2YXIgVSBpbiBMKXMuY2Fs'@; put 'bChMLFUpJiYobnVsbD09eD9SKExbVV0sVSxMKTpSLmNhbGwoeCxMW1VdLFUsTCkpfShMLFIsVSl9fSw1MTg5NChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGYuRm9ybURhdGE6d2luZG93LkZvcm1EYXRhfSwyMzg3NihmZSxqLGgpeyJ1c2Ug'@; put 'c3RyaWN0Ijt2YXIgeT1oKDY1NjA2KTtjb25zdCBjPWgoNjM3MzUpLHM9aCg0MzYyNyksQT1oKDYzNzk4KS5ta2RpcnNTeW5jLHY9aCg0NzIxMSkudXRpbWVzTWlsbGlzU3luYyxDPWgoNjY0NjIpO2Z1bmN0aW9uIFMoQ2UsSWUsa2UscWUpe2NvbnN0IGY9KHFlLmRlcmVmZXJlbmNlP2Muc3Rh'@; put 'dFN5bmM6Yy5sc3RhdFN5bmMpKEllKTtpZihmLmlzRGlyZWN0b3J5KCkpcmV0dXJuIGZ1bmN0aW9uIFkoQ2UsSWUsa2UscWUsWCl7cmV0dXJuIEllP1coa2UscWUsWCk6ZnVuY3Rpb24gRihDZSxJZSxrZSxxZSl7cmV0dXJuIGMubWtkaXJTeW5jKGtlKSxXKEllLGtlLHFlKSxOKGtlLENlKX0o'@; put 'Q2UubW9kZSxrZSxxZSxYKX0oZixDZSxJZSxrZSxxZSk7aWYoZi5pc0ZpbGUoKXx8Zi5pc0NoYXJhY3RlckRldmljZSgpfHxmLmlzQmxvY2tEZXZpY2UoKSlyZXR1cm4gZnVuY3Rpb24gTChDZSxJZSxrZSxxZSxYKXtyZXR1cm4gSWU/ZnVuY3Rpb24gUihDZSxJZSxrZSxxZSl7aWYocWUub3Zl'@; put 'cndyaXRlKXJldHVybiBjLnVubGlua1N5bmMoa2UpLHgoQ2UsSWUsa2UscWUpO2lmKHFlLmVycm9yT25FeGlzdCl0aHJvdyBuZXcgRXJyb3IoYCcke2tlfScgYWxyZWFkeSBleGlzdHNgKX0oQ2Usa2UscWUsWCk6eChDZSxrZSxxZSxYKX0oZixDZSxJZSxrZSxxZSk7aWYoZi5pc1N5bWJvbGlj'@; put 'TGluaygpKXJldHVybiBmdW5jdGlvbiByZShDZSxJZSxrZSxxZSl7bGV0IFg9Yy5yZWFkbGlua1N5bmMoSWUpO2lmKHFlLmRlcmVmZXJlbmNlJiYoWD1zLnJlc29sdmUoeS5jd2QoKSxYKSksQ2Upe2xldCBmO3RyeXtmPWMucmVhZGxpbmtTeW5jKGtlKX1jYXRjaChiKXtpZigiRUlOVkFMIj09'@; put 'PWIuY29kZXx8IlVOS05PV04iPT09Yi5jb2RlKXJldHVybiBjLnN5bWxpbmtTeW5jKFgsa2UpO3Rocm93IGJ9aWYocWUuZGVyZWZlcmVuY2UmJihmPXMucmVzb2x2ZSh5LmN3ZCgpLGYpKSxDLmlzU3JjU3ViZGlyKFgsZikpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29weSAnJHtYfScgdG8g'@; put 'YSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtmfScuYCk7aWYoQy5pc1NyY1N1YmRpcihmLFgpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSAnJHtmfScgd2l0aCAnJHtYfScuYCk7cmV0dXJuIGZ1bmN0aW9uIG1lKENlLEllKXtyZXR1cm4gYy51bmxpbmtTeW5jKEllKSxj'@; put 'LnN5bWxpbmtTeW5jKENlLEllKX0oWCxrZSl9cmV0dXJuIGMuc3ltbGlua1N5bmMoWCxrZSl9KENlLEllLGtlLHFlKTt0aHJvdyBmLmlzU29ja2V0KCk/bmV3IEVycm9yKGBDYW5ub3QgY29weSBhIHNvY2tldCBmaWxlOiAke0llfWApOmYuaXNGSUZPKCk/bmV3IEVycm9yKGBDYW5ub3QgY29w'@; put 'eSBhIEZJRk8gcGlwZTogJHtJZX1gKTpuZXcgRXJyb3IoYFVua25vd24gZmlsZTogJHtJZX1gKX1mdW5jdGlvbiB4KENlLEllLGtlLHFlKXtyZXR1cm4gYy5jb3B5RmlsZVN5bmMoSWUsa2UpLHFlLnByZXNlcnZlVGltZXN0YW1wcyYmZnVuY3Rpb24gVShDZSxJZSxrZSl7KGZ1bmN0aW9uIEgo'@; put 'Q2Upe3JldHVybiEoMTI4JkNlKX0pKENlKSYmZnVuY3Rpb24gVihDZSxJZSl7TihDZSwxMjh8SWUpfShrZSxDZSksZnVuY3Rpb24geihDZSxJZSl7Y29uc3Qga2U9Yy5zdGF0U3luYyhDZSk7dihJZSxrZS5hdGltZSxrZS5tdGltZSl9KEllLGtlKX0oQ2UubW9kZSxJZSxrZSksTihrZSxDZS5t'@; put 'b2RlKX1mdW5jdGlvbiBOKENlLEllKXtyZXR1cm4gYy5jaG1vZFN5bmMoQ2UsSWUpfWZ1bmN0aW9uIFcoQ2UsSWUsa2Upe2NvbnN0IHFlPWMub3BlbmRpclN5bmMoQ2UpO3RyeXtsZXQgWDtmb3IoO251bGwhPT0oWD1xZS5yZWFkU3luYygpKTspcShYLm5hbWUsQ2UsSWUsa2UpfWZpbmFsbHl7'@; put 'cWUuY2xvc2VTeW5jKCl9fWZ1bmN0aW9uIHEoQ2UsSWUsa2UscWUpe2NvbnN0IFg9cy5qb2luKEllLENlKSxmPXMuam9pbihrZSxDZSk7aWYocWUuZmlsdGVyJiYhcWUuZmlsdGVyKFgsZikpcmV0dXJuO2NvbnN0e2Rlc3RTdGF0OmJ9PUMuY2hlY2tQYXRoc1N5bmMoWCxmLCJjb3B5IixxZSk7'@; put 'cmV0dXJuIFMoYixYLGYscWUpfWZlLmV4cG9ydHM9ZnVuY3Rpb24gdyhDZSxJZSxrZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGtlJiYoa2U9e2ZpbHRlcjprZX0pLChrZT1rZXx8e30pLmNsb2JiZXI9ISgiY2xvYmJlciJpbiBrZSl8fCEha2UuY2xvYmJlcixrZS5vdmVyd3JpdGU9Im92ZXJ3cml0'@; put 'ZSJpbiBrZT8hIWtlLm92ZXJ3cml0ZTprZS5jbG9iYmVyLGtlLnByZXNlcnZlVGltZXN0YW1wcyYmImlhMzIiPT09eS5hcmNoJiZ5LmVtaXRXYXJuaW5nKCJVc2luZyB0aGUgcHJlc2VydmVUaW1lc3RhbXBzIG9wdGlvbiBpbiAzMi1iaXQgbm9kZSBpcyBub3QgcmVjb21tZW5kZWQ7XG5cblx0'@; put 'c2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHJpY2hhcmRzb24vbm9kZS1mcy1leHRyYS9pc3N1ZXMvMjY5IiwiV2FybmluZyIsImZzLWV4dHJhLVdBUk4wMDAyIik7Y29uc3R7c3JjU3RhdDpxZSxkZXN0U3RhdDpYfT1DLmNoZWNrUGF0aHNTeW5jKENlLEllLCJjb3B5IixrZSk7aWYoQy5jaGVj'@; put 'a1BhcmVudFBhdGhzU3luYyhDZSxxZSxJZSwiY29weSIpLGtlLmZpbHRlciYmIWtlLmZpbHRlcihDZSxJZSkpcmV0dXJuO2NvbnN0IGY9cy5kaXJuYW1lKEllKTtyZXR1cm4gYy5leGlzdHNTeW5jKGYpfHxBKGYpLFMoWCxDZSxJZSxrZSl9fSw0OTk0KGZlLGosaCl7InVzZSBzdHJpY3QiO3Zh'@; put 'ciB5PWgoNjU2MDYpO2NvbnN0IGM9aCg5ODczNykscz1oKDQzNjI3KSx7bWtkaXJzOkF9PWgoNjM3OTgpLHtwYXRoRXhpc3RzOnZ9PWgoMjkyODgpLHt1dGltZXNNaWxsaXM6Q309aCg0NzIxMSksdz1oKDY2NDYyKTtmdW5jdGlvbiBMKCl7cmV0dXJuKEw9X2FzeW5jVG9HZW5lcmF0b3IoZnVu'@; put 'Y3Rpb24qKEllLGtlLHFlPXt9KXsiZnVuY3Rpb24iPT10eXBlb2YgcWUmJihxZT17ZmlsdGVyOnFlfSkscWUuY2xvYmJlcj0hKCJjbG9iYmVyImluIHFlKXx8ISFxZS5jbG9iYmVyLHFlLm92ZXJ3cml0ZT0ib3ZlcndyaXRlImluIHFlPyEhcWUub3ZlcndyaXRlOnFlLmNsb2JiZXIscWUucHJl'@; put 'c2VydmVUaW1lc3RhbXBzJiYiaWEzMiI9PT15LmFyY2gmJnkuZW1pdFdhcm5pbmcoIlVzaW5nIHRoZSBwcmVzZXJ2ZVRpbWVzdGFtcHMgb3B0aW9uIGluIDMyLWJpdCBub2RlIGlzIG5vdCByZWNvbW1lbmRlZDtcblxuXHRzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pwcmljaGFyZHNvbi9ub2Rl'@; put 'LWZzLWV4dHJhL2lzc3Vlcy8yNjkiLCJXYXJuaW5nIiwiZnMtZXh0cmEtV0FSTjAwMDEiKTtjb25zdHtzcmNTdGF0OlgsZGVzdFN0YXQ6Zn09eWllbGQgdy5jaGVja1BhdGhzKEllLGtlLCJjb3B5IixxZSk7aWYoeWllbGQgdy5jaGVja1BhcmVudFBhdGhzKEllLFgsa2UsImNvcHkiKSwhKHlp'@; put 'ZWxkIFIoSWUsa2UscWUpKSlyZXR1cm47Y29uc3Qgaz1zLmRpcm5hbWUoa2UpOyh5aWVsZCB2KGspKXx8KHlpZWxkIEEoaykpLHlpZWxkIFUoZixJZSxrZSxxZSl9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFIoSWUsa2UscWUpe3JldHVybiB4LmFwcGx5KHRoaXMsYXJndW1l'@; put 'bnRzKX1mdW5jdGlvbiB4KCl7cmV0dXJuKHg9X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKEllLGtlLHFlKXtyZXR1cm4hcWUuZmlsdGVyfHxxZS5maWx0ZXIoSWUsa2UpfSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBVKEllLGtlLHFlLFgpe3JldHVybiBILmFwcGx5KHRo'@; put 'aXMsYXJndW1lbnRzKX1mdW5jdGlvbiBIKCl7cmV0dXJuIEg9X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKEllLGtlLHFlLFgpe2NvbnN0IGI9eWllbGQoWC5kZXJlZmVyZW5jZT9jLnN0YXQ6Yy5sc3RhdCkoa2UpO2lmKGIuaXNEaXJlY3RvcnkoKSlyZXR1cm4gZnVuY3Rpb24gcShJZSxr'@; put 'ZSxxZSxYLGYpe3JldHVybiByZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGIsSWUsa2UscWUsWCk7aWYoYi5pc0ZpbGUoKXx8Yi5pc0NoYXJhY3RlckRldmljZSgpfHxiLmlzQmxvY2tEZXZpY2UoKSlyZXR1cm4gZnVuY3Rpb24gVihJZSxrZSxxZSxYLGYpe3JldHVybiBOLmFwcGx5KHRoaXMs'@; put 'YXJndW1lbnRzKX0oYixJZSxrZSxxZSxYKTtpZihiLmlzU3ltYm9saWNMaW5rKCkpcmV0dXJuIGZ1bmN0aW9uIG1lKEllLGtlLHFlLFgpe3JldHVybiBDZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KEllLGtlLHFlLFgpO3Rocm93IGIuaXNTb2NrZXQoKT9uZXcgRXJyb3IoYENhbm5vdCBjb3B5'@; put 'IGEgc29ja2V0IGZpbGU6ICR7a2V9YCk6Yi5pc0ZJRk8oKT9uZXcgRXJyb3IoYENhbm5vdCBjb3B5IGEgRklGTyBwaXBlOiAke2tlfWApOm5ldyBFcnJvcihgVW5rbm93biBmaWxlOiAke2tlfWApfSksSC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTigpe3JldHVybihOPV9hc3lu'@; put 'Y1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihJZSxrZSxxZSxYLGYpe2lmKCFrZSlyZXR1cm4geihJZSxxZSxYLGYpO2lmKGYub3ZlcndyaXRlKXJldHVybiB5aWVsZCBjLnVubGluayhYKSx6KEllLHFlLFgsZik7aWYoZi5lcnJvck9uRXhpc3QpdGhyb3cgbmV3IEVycm9yKGAnJHtYfScgYWxyZWFk'@; put 'eSBleGlzdHNgKX0pKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geihJZSxrZSxxZSxYKXtyZXR1cm4gWS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWSgpe3JldHVybihZPV9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihJZSxrZSxxZSxYKXtpZih5aWVsZCBjLmNv'@; put 'cHlGaWxlKGtlLHFlKSxYLnByZXNlcnZlVGltZXN0YW1wcyl7KGZ1bmN0aW9uIEYoSWUpe3JldHVybiEoMTI4JkllKX0pKEllLm1vZGUpJiYoeWllbGQgZnVuY3Rpb24gVyhJZSxrZSl7cmV0dXJuIGMuY2htb2QoSWUsMTI4fGtlKX0ocWUsSWUubW9kZSkpO2NvbnN0IGY9eWllbGQgYy5zdGF0'@; put 'KGtlKTt5aWVsZCBDKHFlLGYuYXRpbWUsZi5tdGltZSl9cmV0dXJuIGMuY2htb2QocWUsSWUubW9kZSl9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJlKCl7cmV0dXJuKHJlPV9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihJZSxrZSxxZSxYLGYpe2tlfHwoeWllbGQgYy5t'@; put 'a2RpcihYKSk7Y29uc3QgYj1bXTt2YXIgQixrPSExLE09ITE7dHJ5e2Zvcih2YXIgRyxLPV9hc3luY0l0ZXJhdG9yKHlpZWxkIGMub3BlbmRpcihxZSkpO2s9IShHPXlpZWxkIEsubmV4dCgpKS5kb25lO2s9ITEpe2NvbnN0IEQ9Ry52YWx1ZTt7Y29uc3QgcD1zLmpvaW4ocWUsRC5uYW1lKSxJ'@; put 'PXMuam9pbihYLEQubmFtZSk7Yi5wdXNoKFIocCxJLGYpLnRoZW4odWU9PntpZih1ZSlyZXR1cm4gdy5jaGVja1BhdGhzKHAsSSwiY29weSIsZikudGhlbigoe2Rlc3RTdGF0Om5lfSk9PlUobmUscCxJLGYpKX0pKX19fWNhdGNoKEQpe009ITAsQj1EfWZpbmFsbHl7dHJ5e2smJm51bGwhPUsu'@; put 'cmV0dXJuJiYoeWllbGQgSy5yZXR1cm4oKSl9ZmluYWxseXtpZihNKXRocm93IEJ9fXlpZWxkIFByb21pc2UuYWxsKGIpLGtlfHwoeWllbGQgYy5jaG1vZChYLEllLm1vZGUpKX0pKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQ2UoKXtyZXR1cm4oQ2U9X2FzeW5jVG9HZW5lcmF0'@; put 'b3IoZnVuY3Rpb24qKEllLGtlLHFlLFgpe2xldCBmPXlpZWxkIGMucmVhZGxpbmsoa2UpO2lmKFguZGVyZWZlcmVuY2UmJihmPXMucmVzb2x2ZSh5LmN3ZCgpLGYpKSwhSWUpcmV0dXJuIGMuc3ltbGluayhmLHFlKTtsZXQgYj1udWxsO3RyeXtiPXlpZWxkIGMucmVhZGxpbmsocWUpfWNhdGNo'@; put 'KGspe2lmKCJFSU5WQUwiPT09ay5jb2RlfHwiVU5LTk9XTiI9PT1rLmNvZGUpcmV0dXJuIGMuc3ltbGluayhmLHFlKTt0aHJvdyBrfWlmKFguZGVyZWZlcmVuY2UmJihiPXMucmVzb2x2ZSh5LmN3ZCgpLGIpKSx3LmlzU3JjU3ViZGlyKGYsYikpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29w'@; put 'eSAnJHtmfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtifScuYCk7aWYody5pc1NyY1N1YmRpcihiLGYpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSAnJHtifScgd2l0aCAnJHtmfScuYCk7cmV0dXJuIHlpZWxkIGMudW5saW5rKHFlKSxjLnN5bWxpbmsoZixx'@; put 'ZSl9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZlLmV4cG9ydHM9ZnVuY3Rpb24gUyhJZSxrZSl7cmV0dXJuIEwuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sNDQyMyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoNDEyMzYpLmZyb21Qcm9taXNlO2ZlLmV4cG9ydHM9e2NvcHk6eSho'@; put 'KDQ5OTQpKSxjb3B5U3luYzpoKDIzODc2KX19LDUyNTkxKGZlLGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg0MTIzNikuZnJvbVByb21pc2UsYz1oKDk4NzM3KSxzPWgoNDM2MjcpLEE9aCg2Mzc5OCksdj1oKDM1NDIyKSxDPXkoZnVuY3Rpb24oKXt2YXIgUz1fYXN5bmNUb0dlbmVyYXRv'@; put 'cihmdW5jdGlvbiooUil7bGV0IHg7dHJ5e3g9eWllbGQgYy5yZWFkZGlyKFIpfWNhdGNoe3JldHVybiBBLm1rZGlycyhSKX1yZXR1cm4gUHJvbWlzZS5hbGwoeC5tYXAoVT0+di5yZW1vdmUocy5qb2luKFIsVSkpKSl9KTtyZXR1cm4gZnVuY3Rpb24gTChSKXtyZXR1cm4gUy5hcHBseSh0aGlz'@; put 'LGFyZ3VtZW50cyl9fSgpKTtmdW5jdGlvbiB3KFMpe2xldCBMO3RyeXtMPWMucmVhZGRpclN5bmMoUyl9Y2F0Y2h7cmV0dXJuIEEubWtkaXJzU3luYyhTKX1MLmZvckVhY2goUj0+e1I9cy5qb2luKFMsUiksdi5yZW1vdmVTeW5jKFIpfSl9ZmUuZXhwb3J0cz17ZW1wdHlEaXJTeW5jOncsZW1w'@; put 'dHlkaXJTeW5jOncsZW1wdHlEaXI6QyxlbXB0eWRpcjpDfX0sODk2MTYoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3QgeT1oKDQxMjM2KS5mcm9tUHJvbWlzZSxjPWgoNDM2MjcpLHM9aCg5ODczNyksQT1oKDYzNzk4KTtmdW5jdGlvbiBDKCl7cmV0dXJuKEM9X2FzeW5jVG9HZW5lcmF0b3Io'@; put 'ZnVuY3Rpb24qKFMpe2xldCBMO3RyeXtMPXlpZWxkIHMuc3RhdChTKX1jYXRjaHt9aWYoTCYmTC5pc0ZpbGUoKSlyZXR1cm47Y29uc3QgUj1jLmRpcm5hbWUoUyk7bGV0IHg9bnVsbDt0cnl7eD15aWVsZCBzLnN0YXQoUil9Y2F0Y2goVSl7aWYoIkVOT0VOVCI9PT1VLmNvZGUpcmV0dXJuIHlp'@; put 'ZWxkIEEubWtkaXJzKFIpLHZvaWQoeWllbGQgcy53cml0ZUZpbGUoUywiIikpO3Rocm93IFV9eC5pc0RpcmVjdG9yeSgpP3lpZWxkIHMud3JpdGVGaWxlKFMsIiIpOnlpZWxkIHMucmVhZGRpcihSKX0pKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmUuZXhwb3J0cz17Y3JlYXRlRmlsZTp5KGZ1'@; put 'bmN0aW9uIHYoUyl7cmV0dXJuIEMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksY3JlYXRlRmlsZVN5bmM6ZnVuY3Rpb24gdyhTKXtsZXQgTDt0cnl7TD1zLnN0YXRTeW5jKFMpfWNhdGNoe31pZihMJiZMLmlzRmlsZSgpKXJldHVybjtjb25zdCBSPWMuZGlybmFtZShTKTt0cnl7cy5zdGF0U3lu'@; put 'YyhSKS5pc0RpcmVjdG9yeSgpfHxzLnJlYWRkaXJTeW5jKFIpfWNhdGNoKHgpe2lmKCF4fHwiRU5PRU5UIiE9PXguY29kZSl0aHJvdyB4O0EubWtkaXJzU3luYyhSKX1zLndyaXRlRmlsZVN5bmMoUywiIil9fX0sNzYyODgoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3R7Y3JlYXRlRmlsZTp5'@; put 'LGNyZWF0ZUZpbGVTeW5jOmN9PWgoODk2MTYpLHtjcmVhdGVMaW5rOnMsY3JlYXRlTGlua1N5bmM6QX09aCg5MTUyMikse2NyZWF0ZVN5bWxpbms6dixjcmVhdGVTeW1saW5rU3luYzpDfT1oKDU1MjkxKTtmZS5leHBvcnRzPXtjcmVhdGVGaWxlOnksY3JlYXRlRmlsZVN5bmM6YyxlbnN1cmVG'@; put 'aWxlOnksZW5zdXJlRmlsZVN5bmM6YyxjcmVhdGVMaW5rOnMsY3JlYXRlTGlua1N5bmM6QSxlbnN1cmVMaW5rOnMsZW5zdXJlTGlua1N5bmM6QSxjcmVhdGVTeW1saW5rOnYsY3JlYXRlU3ltbGlua1N5bmM6QyxlbnN1cmVTeW1saW5rOnYsZW5zdXJlU3ltbGlua1N5bmM6Q319LDkxNTIyKGZl'@; put 'LGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg0MTIzNikuZnJvbVByb21pc2UsYz1oKDQzNjI3KSxzPWgoOTg3MzcpLEE9aCg2Mzc5OCkse3BhdGhFeGlzdHM6dn09aCgyOTI4OCkse2FyZUlkZW50aWNhbDpDfT1oKDY2NDYyKTtmdW5jdGlvbiBTKCl7cmV0dXJuKFM9X2FzeW5jVG9HZW5l'@; put 'cmF0b3IoZnVuY3Rpb24qKFIseCl7bGV0IFUsSDt0cnl7VT15aWVsZCBzLmxzdGF0KHgpfWNhdGNoe310cnl7SD15aWVsZCBzLmxzdGF0KFIpfWNhdGNoKHope3Rocm93IHoubWVzc2FnZT16Lm1lc3NhZ2UucmVwbGFjZSgibHN0YXQiLCJlbnN1cmVMaW5rIiksen1pZihVJiZDKEgsVSkpcmV0'@; put 'dXJuO2NvbnN0IFY9Yy5kaXJuYW1lKHgpOyh5aWVsZCB2KFYpKXx8KHlpZWxkIEEubWtkaXJzKFYpKSx5aWVsZCBzLmxpbmsoUix4KX0pKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmUuZXhwb3J0cz17Y3JlYXRlTGluazp5KGZ1bmN0aW9uIHcoUix4KXtyZXR1cm4gUy5hcHBseSh0aGlzLGFy'@; put 'Z3VtZW50cyl9KSxjcmVhdGVMaW5rU3luYzpmdW5jdGlvbiBMKFIseCl7bGV0IFU7dHJ5e1U9cy5sc3RhdFN5bmMoeCl9Y2F0Y2h7fXRyeXtjb25zdCBOPXMubHN0YXRTeW5jKFIpO2lmKFUmJkMoTixVKSlyZXR1cm59Y2F0Y2goTil7dGhyb3cgTi5tZXNzYWdlPU4ubWVzc2FnZS5yZXBsYWNl'@; put 'KCJsc3RhdCIsImVuc3VyZUxpbmsiKSxOfWNvbnN0IEg9Yy5kaXJuYW1lKHgpO3JldHVybiBzLmV4aXN0c1N5bmMoSCl8fEEubWtkaXJzU3luYyhIKSxzLmxpbmtTeW5jKFIseCl9fX0sNzM4MzgoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3QgeT1oKDQzNjI3KSxjPWgoOTg3MzcpLHtwYXRo'@; put 'RXhpc3RzOnN9PWgoMjkyODgpLEE9aCg0MTIzNikuZnJvbVByb21pc2U7ZnVuY3Rpb24gQygpe3JldHVybihDPV9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihTLEwpe2lmKHkuaXNBYnNvbHV0ZShTKSl7dHJ5e3lpZWxkIGMubHN0YXQoUyl9Y2F0Y2goSCl7dGhyb3cgSC5tZXNzYWdlPUgu'@; put 'bWVzc2FnZS5yZXBsYWNlKCJsc3RhdCIsImVuc3VyZVN5bWxpbmsiKSxIfXJldHVybnt0b0N3ZDpTLHRvRHN0OlN9fWNvbnN0IFI9eS5kaXJuYW1lKEwpLHg9eS5qb2luKFIsUyk7aWYoeWllbGQgcyh4KSlyZXR1cm57dG9Dd2Q6eCx0b0RzdDpTfTt0cnl7eWllbGQgYy5sc3RhdChTKX1jYXRj'@; put 'aChIKXt0aHJvdyBILm1lc3NhZ2U9SC5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlU3ltbGluayIpLEh9cmV0dXJue3RvQ3dkOlMsdG9Ec3Q6eS5yZWxhdGl2ZShSLFMpfX0pKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmUuZXhwb3J0cz17c3ltbGlua1BhdGhzOkEoZnVuY3Rpb24g'@; put 'dihTLEwpe3JldHVybiBDLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHN5bWxpbmtQYXRoc1N5bmM6ZnVuY3Rpb24gdyhTLEwpe2lmKHkuaXNBYnNvbHV0ZShTKSl7aWYoIWMuZXhpc3RzU3luYyhTKSl0aHJvdyBuZXcgRXJyb3IoImFic29sdXRlIHNyY3BhdGggZG9lcyBub3QgZXhpc3QiKTty'@; put 'ZXR1cm57dG9Dd2Q6Uyx0b0RzdDpTfX1jb25zdCBSPXkuZGlybmFtZShMKSx4PXkuam9pbihSLFMpO2lmKGMuZXhpc3RzU3luYyh4KSlyZXR1cm57dG9Dd2Q6eCx0b0RzdDpTfTtpZighYy5leGlzdHNTeW5jKFMpKXRocm93IG5ldyBFcnJvcigicmVsYXRpdmUgc3JjcGF0aCBkb2VzIG5vdCBl'@; put 'eGlzdCIpO3JldHVybnt0b0N3ZDpTLHRvRHN0OnkucmVsYXRpdmUoUixTKX19fX0sNDcwNjQoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3QgeT1oKDk4NzM3KSxjPWgoNDEyMzYpLmZyb21Qcm9taXNlO2Z1bmN0aW9uIEEoKXtyZXR1cm4oQT1fYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbioo'@; put 'Qyx3KXtpZih3KXJldHVybiB3O2xldCBTO3RyeXtTPXlpZWxkIHkubHN0YXQoQyl9Y2F0Y2h7cmV0dXJuImZpbGUifXJldHVybiBTJiZTLmlzRGlyZWN0b3J5KCk/ImRpciI6ImZpbGUifSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mZS5leHBvcnRzPXtzeW1saW5rVHlwZTpjKGZ1bmN0aW9u'@; put 'IHMoQyx3KXtyZXR1cm4gQS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxzeW1saW5rVHlwZVN5bmM6ZnVuY3Rpb24gdihDLHcpe2lmKHcpcmV0dXJuIHc7bGV0IFM7dHJ5e1M9eS5sc3RhdFN5bmMoQyl9Y2F0Y2h7cmV0dXJuImZpbGUifXJldHVybiBTJiZTLmlzRGlyZWN0b3J5KCk/ImRpciI6'@; put 'ImZpbGUifX19LDU1MjkxKGZlLGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg0MTIzNikuZnJvbVByb21pc2UsYz1oKDQzNjI3KSxzPWgoOTg3MzcpLHtta2RpcnM6QSxta2RpcnNTeW5jOnZ9PWgoNjM3OTgpLHtzeW1saW5rUGF0aHM6QyxzeW1saW5rUGF0aHNTeW5jOnd9PWgoNzM4Mzgp'@; put 'LHtzeW1saW5rVHlwZTpTLHN5bWxpbmtUeXBlU3luYzpMfT1oKDQ3MDY0KSx7cGF0aEV4aXN0czpSfT1oKDI5Mjg4KSx7YXJlSWRlbnRpY2FsOnh9PWgoNjY0NjIpO2Z1bmN0aW9uIEgoKXtyZXR1cm4oSD1fYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooTix6LFkpe2xldCBGO3RyeXtGPXlp'@; put 'ZWxkIHMubHN0YXQoeil9Y2F0Y2h7fWlmKEYmJkYuaXNTeW1ib2xpY0xpbmsoKSl7Y29uc3RbbWUsQ2VdPXlpZWxkIFByb21pc2UuYWxsKFtzLnN0YXQoTikscy5zdGF0KHopXSk7aWYoeChtZSxDZSkpcmV0dXJufWNvbnN0IFc9eWllbGQgQyhOLHopO049Vy50b0RzdDtjb25zdCBxPXlpZWxk'@; put 'IFMoVy50b0N3ZCxZKSxyZT1jLmRpcm5hbWUoeik7cmV0dXJuKHlpZWxkIFIocmUpKXx8KHlpZWxkIEEocmUpKSxzLnN5bWxpbmsoTix6LHEpfSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mZS5leHBvcnRzPXtjcmVhdGVTeW1saW5rOnkoZnVuY3Rpb24gVShOLHosWSl7cmV0dXJuIEguYXBw'@; put 'bHkodGhpcyxhcmd1bWVudHMpfSksY3JlYXRlU3ltbGlua1N5bmM6ZnVuY3Rpb24gVihOLHosWSl7bGV0IEY7dHJ5e0Y9cy5sc3RhdFN5bmMoeil9Y2F0Y2h7fWlmKEYmJkYuaXNTeW1ib2xpY0xpbmsoKSl7Y29uc3QgbWU9cy5zdGF0U3luYyhOKSxDZT1zLnN0YXRTeW5jKHopO2lmKHgobWUs'@; put 'Q2UpKXJldHVybn1jb25zdCBXPXcoTix6KTtOPVcudG9Ec3QsWT1MKFcudG9Dd2QsWSk7Y29uc3QgcT1jLmRpcm5hbWUoeik7cmV0dXJuIHMuZXhpc3RzU3luYyhxKXx8dihxKSxzLnN5bWxpbmtTeW5jKE4seixZKX19fSw5ODczNyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2'@; put 'KTtjb25zdCBjPWgoNDEyMzYpLmZyb21DYWxsYmFjayxzPWgoNjM3MzUpLEE9WyJhY2Nlc3MiLCJhcHBlbmRGaWxlIiwiY2htb2QiLCJjaG93biIsImNsb3NlIiwiY29weUZpbGUiLCJjcCIsImZjaG1vZCIsImZjaG93biIsImZkYXRhc3luYyIsImZzdGF0IiwiZnN5bmMiLCJmdHJ1bmNhdGUi'@; put 'LCJmdXRpbWVzIiwiZ2xvYiIsImxjaG1vZCIsImxjaG93biIsImx1dGltZXMiLCJsaW5rIiwibHN0YXQiLCJta2RpciIsIm1rZHRlbXAiLCJvcGVuIiwib3BlbmRpciIsInJlYWRkaXIiLCJyZWFkRmlsZSIsInJlYWRsaW5rIiwicmVhbHBhdGgiLCJyZW5hbWUiLCJybSIsInJtZGlyIiwic3Rh'@; put 'dCIsInN0YXRmcyIsInN5bWxpbmsiLCJ0cnVuY2F0ZSIsInVubGluayIsInV0aW1lcyIsIndyaXRlRmlsZSJdLmZpbHRlcih2PT4iZnVuY3Rpb24iPT10eXBlb2Ygc1t2XSk7T2JqZWN0LmFzc2lnbihqLHMpLEEuZm9yRWFjaCh2PT57alt2XT1jKHNbdl0pfSksai5leGlzdHM9ZnVuY3Rpb24o'@; put 'dixDKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgQz9zLmV4aXN0cyh2LEMpOm5ldyBQcm9taXNlKHc9PnMuZXhpc3RzKHYsdykpfSxqLnJlYWQ9ZnVuY3Rpb24odixDLHcsUyxMLFIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBSP3MucmVhZCh2LEMsdyxTLEwsUik6bmV3IFByb21pc2Uo'@; put 'KHgsVSk9PntzLnJlYWQodixDLHcsUyxMLChILFYsTik9PntpZihIKXJldHVybiBVKEgpO3goe2J5dGVzUmVhZDpWLGJ1ZmZlcjpOfSl9KX0pfSxqLndyaXRlPWZ1bmN0aW9uKHYsQywuLi53KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygd1t3Lmxlbmd0aC0xXT9zLndyaXRlKHYsQywuLi53'@; put 'KTpuZXcgUHJvbWlzZSgoUyxMKT0+e3Mud3JpdGUodixDLC4uLncsKFIseCxVKT0+e2lmKFIpcmV0dXJuIEwoUik7Uyh7Ynl0ZXNXcml0dGVuOngsYnVmZmVyOlV9KX0pfSl9LGoucmVhZHY9ZnVuY3Rpb24odixDLC4uLncpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB3W3cubGVuZ3RoLTFd'@; put 'P3MucmVhZHYodixDLC4uLncpOm5ldyBQcm9taXNlKChTLEwpPT57cy5yZWFkdih2LEMsLi4udywoUix4LFUpPT57aWYoUilyZXR1cm4gTChSKTtTKHtieXRlc1JlYWQ6eCxidWZmZXJzOlV9KX0pfSl9LGoud3JpdGV2PWZ1bmN0aW9uKHYsQywuLi53KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl'@; put 'b2Ygd1t3Lmxlbmd0aC0xXT9zLndyaXRldih2LEMsLi4udyk6bmV3IFByb21pc2UoKFMsTCk9PntzLndyaXRldih2LEMsLi4udywoUix4LFUpPT57aWYoUilyZXR1cm4gTChSKTtTKHtieXRlc1dyaXR0ZW46eCxidWZmZXJzOlV9KX0pfSl9LCJmdW5jdGlvbiI9PXR5cGVvZiBzLnJlYWxwYXRo'@; put 'Lm5hdGl2ZT9qLnJlYWxwYXRoLm5hdGl2ZT1jKHMucmVhbHBhdGgubmF0aXZlKTp5LmVtaXRXYXJuaW5nKCJmcy5yZWFscGF0aC5uYXRpdmUgaXMgbm90IGEgZnVuY3Rpb24uIElzIGZzIGJlaW5nIG1vbmtleS1wYXRjaGVkPyIsIldhcm5pbmciLCJmcy1leHRyYS1XQVJOMDAwMyIpfSwyMTYw'@; put 'NShmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPXsuLi5oKDk4NzM3KSwuLi5oKDQ0MjMpLC4uLmgoNTI1OTEpLC4uLmgoNzYyODgpLC4uLmgoMjMzNzYpLC4uLmgoNjM3OTgpLC4uLmgoNDI0NTUpLC4uLmgoNzcwMjQpLC4uLmgoMjkyODgpLC4uLmgoMzU0MjIpfX0sMjMzNzYoZmUs'@; put 'aixoKXsidXNlIHN0cmljdCI7Y29uc3QgeT1oKDQxMjM2KS5mcm9tUHJvbWlzZSxjPWgoMTI5MzQpO2Mub3V0cHV0SnNvbj15KGgoNjQyNikpLGMub3V0cHV0SnNvblN5bmM9aCgzMjE4OCksYy5vdXRwdXRKU09OPWMub3V0cHV0SnNvbixjLm91dHB1dEpTT05TeW5jPWMub3V0cHV0SnNvblN5'@; put 'bmMsYy53cml0ZUpTT049Yy53cml0ZUpzb24sYy53cml0ZUpTT05TeW5jPWMud3JpdGVKc29uU3luYyxjLnJlYWRKU09OPWMucmVhZEpzb24sYy5yZWFkSlNPTlN5bmM9Yy5yZWFkSnNvblN5bmMsZmUuZXhwb3J0cz1jfSwxMjkzNChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoMjkw'@; put 'OSk7ZmUuZXhwb3J0cz17cmVhZEpzb246eS5yZWFkRmlsZSxyZWFkSnNvblN5bmM6eS5yZWFkRmlsZVN5bmMsd3JpdGVKc29uOnkud3JpdGVGaWxlLHdyaXRlSnNvblN5bmM6eS53cml0ZUZpbGVTeW5jfX0sMzIxODgoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3R7c3RyaW5naWZ5Onl9PWgo'@; put 'MTExNDQpLHtvdXRwdXRGaWxlU3luYzpjfT1oKDc3MDI0KTtmZS5leHBvcnRzPWZ1bmN0aW9uIHMoQSx2LEMpe2NvbnN0IHc9eSh2LEMpO2MoQSx3LEMpfX0sNjQyNihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdHtzdHJpbmdpZnk6eX09aCgxMTE0NCkse291dHB1dEZpbGU6Y309aCg3NzAy'@; put 'NCk7ZnVuY3Rpb24gQSgpe3JldHVybihBPV9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKih2LEMsdz17fSl7Y29uc3QgUz15KEMsdyk7eWllbGQgYyh2LFMsdyl9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZlLmV4cG9ydHM9ZnVuY3Rpb24gcyh2LEMpe3JldHVybiBBLmFwcGx5KHRoaXMs'@; put 'YXJndW1lbnRzKX19LDYzNzk4KGZlLGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg0MTIzNikuZnJvbVByb21pc2Use21ha2VEaXI6YyxtYWtlRGlyU3luYzpzfT1oKDk4OTE2KSxBPXkoYyk7ZmUuZXhwb3J0cz17bWtkaXJzOkEsbWtkaXJzU3luYzpzLG1rZGlycDpBLG1rZGlycFN5bmM6'@; put 'cyxlbnN1cmVEaXI6QSxlbnN1cmVEaXJTeW5jOnN9fSw5ODkxNihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoOTg3MzcpLHtjaGVja1BhdGg6Y309aCgxNzExMSkscz1BPT4ibnVtYmVyIj09dHlwZW9mIEE/QTp7bW9kZTo1MTEsLi4uQX0ubW9kZTtmZS5leHBvcnRzLm1ha2VEaXI9'@; put 'ZnVuY3Rpb24oKXt2YXIgQT1fYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbioodixDKXtyZXR1cm4gYyh2KSx5Lm1rZGlyKHYse21vZGU6cyhDKSxyZWN1cnNpdmU6ITB9KX0pO3JldHVybiBmdW5jdGlvbih2LEMpe3JldHVybiBBLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksZmUuZXhwb3J0'@; put 'cy5tYWtlRGlyU3luYz0oQSx2KT0+KGMoQSkseS5ta2RpclN5bmMoQSx7bW9kZTpzKHYpLHJlY3Vyc2l2ZTohMH0pKX0sMTcxMTEoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNik7Y29uc3QgYz1oKDQzNjI3KTtmZS5leHBvcnRzLmNoZWNrUGF0aD1mdW5jdGlvbihBKXtpZigi'@; put 'd2luMzIiPT09eS5wbGF0Zm9ybSYmL1s8PjoifD8qXS8udGVzdChBLnJlcGxhY2UoYy5wYXJzZShBKS5yb290LCIiKSkpe2NvbnN0IEM9bmV3IEVycm9yKGBQYXRoIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogJHtBfWApO3Rocm93IEMuY29kZT0iRUlOVkFMIixDfX19LDQyNDU1KGZl'@; put 'LGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg0MTIzNikuZnJvbVByb21pc2U7ZmUuZXhwb3J0cz17bW92ZTp5KGgoMTMzMTQpKSxtb3ZlU3luYzpoKDg2MjQ0KX19LDg2MjQ0KGZlLGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg2MzczNSksYz1oKDQzNjI3KSxzPWgoNDQyMykuY29w'@; put 'eVN5bmMsQT1oKDM1NDIyKS5yZW1vdmVTeW5jLHY9aCg2Mzc5OCkubWtkaXJwU3luYyxDPWgoNjY0NjIpO2Z1bmN0aW9uIFIoVSxILFYpe3RyeXt5LnJlbmFtZVN5bmMoVSxIKX1jYXRjaChOKXtpZigiRVhERVYiIT09Ti5jb2RlKXRocm93IE47cmV0dXJuIGZ1bmN0aW9uIHgoVSxILFYpe3Jl'@; put 'dHVybiBzKFUsSCx7b3ZlcndyaXRlOlYsZXJyb3JPbkV4aXN0OiEwLHByZXNlcnZlVGltZXN0YW1wczohMH0pLEEoVSl9KFUsSCxWKX19ZmUuZXhwb3J0cz1mdW5jdGlvbiB3KFUsSCxWKXtjb25zdCBOPShWPVZ8fHt9KS5vdmVyd3JpdGV8fFYuY2xvYmJlcnx8ITEse3NyY1N0YXQ6eixpc0No'@; put 'YW5naW5nQ2FzZTpZPSExfT1DLmNoZWNrUGF0aHNTeW5jKFUsSCwibW92ZSIsVik7cmV0dXJuIEMuY2hlY2tQYXJlbnRQYXRoc1N5bmMoVSx6LEgsIm1vdmUiKSxmdW5jdGlvbiBTKFUpe2NvbnN0IEg9Yy5kaXJuYW1lKFUpO3JldHVybiBjLnBhcnNlKEgpLnJvb3Q9PT1IfShIKXx8dihjLmRp'@; put 'cm5hbWUoSCkpLGZ1bmN0aW9uIEwoVSxILFYsTil7aWYoTilyZXR1cm4gUihVLEgsVik7aWYoVilyZXR1cm4gQShIKSxSKFUsSCxWKTtpZih5LmV4aXN0c1N5bmMoSCkpdGhyb3cgbmV3IEVycm9yKCJkZXN0IGFscmVhZHkgZXhpc3RzLiIpO3JldHVybiBSKFUsSCxWKX0oVSxILE4sWSl9fSwx'@; put 'MzMxNChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoOTg3MzcpLGM9aCg0MzYyNykse2NvcHk6c309aCg0NDIzKSx7cmVtb3ZlOkF9PWgoMzU0MjIpLHtta2RpcnA6dn09aCg2Mzc5OCkse3BhdGhFeGlzdHM6Q309aCgyOTI4OCksdz1oKDY2NDYyKTtmdW5jdGlvbiBMKCl7cmV0dXJu'@; put 'IEw9X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKFYsTix6PXt9KXtjb25zdCBZPXoub3ZlcndyaXRlfHx6LmNsb2JiZXJ8fCExLHtzcmNTdGF0OkYsaXNDaGFuZ2luZ0Nhc2U6Vz0hMX09eWllbGQgdy5jaGVja1BhdGhzKFYsTiwibW92ZSIseik7eWllbGQgdy5jaGVja1BhcmVudFBhdGhz'@; put 'KFYsRixOLCJtb3ZlIik7Y29uc3QgcT1jLmRpcm5hbWUoTik7cmV0dXJuIGMucGFyc2UocSkucm9vdCE9PXEmJih5aWVsZCB2KHEpKSxmdW5jdGlvbiBSKFYsTix6LFkpe3JldHVybiB4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oVixOLFksVyl9KSxMLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1m'@; put 'dW5jdGlvbiB4KCl7cmV0dXJuIHg9X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKFYsTix6LFkpe2lmKCFZKWlmKHopeWllbGQgQShOKTtlbHNlIGlmKHlpZWxkIEMoTikpdGhyb3cgbmV3IEVycm9yKCJkZXN0IGFscmVhZHkgZXhpc3RzLiIpO3RyeXt5aWVsZCB5LnJlbmFtZShWLE4pfWNh'@; put 'dGNoKEYpe2lmKCJFWERFViIhPT1GLmNvZGUpdGhyb3cgRjt5aWVsZCBmdW5jdGlvbiBVKFYsTix6KXtyZXR1cm4gSC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KFYsTix6KX19KSx4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBIKCl7cmV0dXJuKEg9X2FzeW5jVG9HZW5lcmF0b3Io'@; put 'ZnVuY3Rpb24qKFYsTix6KXtyZXR1cm4geWllbGQgcyhWLE4se292ZXJ3cml0ZTp6LGVycm9yT25FeGlzdDohMCxwcmVzZXJ2ZVRpbWVzdGFtcHM6ITB9KSxBKFYpfSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mZS5leHBvcnRzPWZ1bmN0aW9uIFMoVixOKXtyZXR1cm4gTC5hcHBseSh0aGlz'@; put 'LGFyZ3VtZW50cyl9fSw3NzAyNChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoNDEyMzYpLmZyb21Qcm9taXNlLGM9aCg5ODczNykscz1oKDQzNjI3KSxBPWgoNjM3OTgpLHY9aCgyOTI4OCkucGF0aEV4aXN0cztmdW5jdGlvbiB3KCl7cmV0dXJuKHc9X2FzeW5jVG9HZW5lcmF0b3Io'@; put 'ZnVuY3Rpb24qKEwsUix4PSJ1dGYtOCIpe2NvbnN0IFU9cy5kaXJuYW1lKEwpO3JldHVybih5aWVsZCB2KFUpKXx8KHlpZWxkIEEubWtkaXJzKFUpKSxjLndyaXRlRmlsZShMLFIseCl9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZlLmV4cG9ydHM9e291dHB1dEZpbGU6eShmdW5jdGlvbiBD'@; put 'KEwsUil7cmV0dXJuIHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksb3V0cHV0RmlsZVN5bmM6ZnVuY3Rpb24gUyhMLC4uLlIpe2NvbnN0IHg9cy5kaXJuYW1lKEwpO2MuZXhpc3RzU3luYyh4KXx8QS5ta2RpcnNTeW5jKHgpLGMud3JpdGVGaWxlU3luYyhMLC4uLlIpfX19LDI5Mjg4KGZlLGos'@; put 'aCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg0MTIzNikuZnJvbVByb21pc2UsYz1oKDk4NzM3KTtmZS5leHBvcnRzPXtwYXRoRXhpc3RzOnkoZnVuY3Rpb24gcyhBKXtyZXR1cm4gYy5hY2Nlc3MoQSkudGhlbigoKT0+ITApLmNhdGNoKCgpPT4hMSl9KSxwYXRoRXhpc3RzU3luYzpjLmV4aXN0'@; put 'c1N5bmN9fSwzNTQyMihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoNjM3MzUpLGM9aCg0MTIzNikuZnJvbUNhbGxiYWNrO2ZlLmV4cG9ydHM9e3JlbW92ZTpjKGZ1bmN0aW9uIHModixDKXt5LnJtKHYse3JlY3Vyc2l2ZTohMCxmb3JjZTohMH0sQyl9KSxyZW1vdmVTeW5jOmZ1bmN0'@; put 'aW9uIEEodil7eS5ybVN5bmModix7cmVjdXJzaXZlOiEwLGZvcmNlOiEwfSl9fX0sNjY0NjIoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3QgeT1oKDk4NzM3KSxjPWgoNDM2MjcpLHM9aCg0MTIzNikuZnJvbVByb21pc2U7ZnVuY3Rpb24gdygpe3JldHVybih3PV9hc3luY1RvR2VuZXJhdG9y'@; put 'KGZ1bmN0aW9uKihOLHosWSxGKXtjb25zdHtzcmNTdGF0OlcsZGVzdFN0YXQ6cX09eWllbGQgZnVuY3Rpb24gQShOLHosWSl7Y29uc3QgRj1ZLmRlcmVmZXJlbmNlP1c9Pnkuc3RhdChXLHtiaWdpbnQ6ITB9KTpXPT55LmxzdGF0KFcse2JpZ2ludDohMH0pO3JldHVybiBQcm9taXNlLmFsbChb'@; put 'RihOKSxGKHopLmNhdGNoKFc9PntpZigiRU5PRU5UIj09PVcuY29kZSlyZXR1cm4gbnVsbDt0aHJvdyBXfSldKS50aGVuKChbVyxxXSk9Pih7c3JjU3RhdDpXLGRlc3RTdGF0OnF9KSl9KE4seixGKTtpZihxKXtpZihVKFcscSkpe2NvbnN0IHJlPWMuYmFzZW5hbWUoTiksbWU9Yy5iYXNlbmFt'@; put 'ZSh6KTtpZigibW92ZSI9PT1ZJiZyZSE9PW1lJiZyZS50b0xvd2VyQ2FzZSgpPT09bWUudG9Mb3dlckNhc2UoKSlyZXR1cm57c3JjU3RhdDpXLGRlc3RTdGF0OnEsaXNDaGFuZ2luZ0Nhc2U6ITB9O3Rocm93IG5ldyBFcnJvcigiU291cmNlIGFuZCBkZXN0aW5hdGlvbiBtdXN0IG5vdCBiZSB0'@; put 'aGUgc2FtZS4iKX1pZihXLmlzRGlyZWN0b3J5KCkmJiFxLmlzRGlyZWN0b3J5KCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7en0nIHdpdGggZGlyZWN0b3J5ICcke059Jy5gKTtpZighVy5pc0RpcmVjdG9yeSgpJiZxLmlzRGlyZWN0b3J5KCkp'@; put 'dGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3ZlcndyaXRlIGRpcmVjdG9yeSAnJHt6fScgd2l0aCBub24tZGlyZWN0b3J5ICcke059Jy5gKX1pZihXLmlzRGlyZWN0b3J5KCkmJkgoTix6KSl0aHJvdyBuZXcgRXJyb3IoVihOLHosWSkpO3JldHVybntzcmNTdGF0OlcsZGVzdFN0YXQ6cX19KSku'@; put 'YXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEwoTix6LFksRil7cmV0dXJuIFIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFIoKXtyZXR1cm4oUj1fYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooTix6LFksRil7Y29uc3QgVz1jLnJlc29sdmUoYy5kaXJuYW1lKE4pKSxx'@; put 'PWMucmVzb2x2ZShjLmRpcm5hbWUoWSkpO2lmKHE9PT1XfHxxPT09Yy5wYXJzZShxKS5yb290KXJldHVybjtsZXQgcmU7dHJ5e3JlPXlpZWxkIHkuc3RhdChxLHtiaWdpbnQ6ITB9KX1jYXRjaChtZSl7aWYoIkVOT0VOVCI9PT1tZS5jb2RlKXJldHVybjt0aHJvdyBtZX1pZihVKHoscmUpKXRo'@; put 'cm93IG5ldyBFcnJvcihWKE4sWSxGKSk7cmV0dXJuIEwoTix6LHEsRil9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFUoTix6KXtyZXR1cm4gei5pbm8mJnouZGV2JiZ6Lmlubz09PU4uaW5vJiZ6LmRldj09PU4uZGV2fWZ1bmN0aW9uIEgoTix6KXtjb25zdCBZPWMucmVzb2x2'@; put 'ZShOKS5zcGxpdChjLnNlcCkuZmlsdGVyKFc9PlcpLEY9Yy5yZXNvbHZlKHopLnNwbGl0KGMuc2VwKS5maWx0ZXIoVz0+Vyk7cmV0dXJuIFkuZXZlcnkoKFcscSk9PkZbcV09PT1XKX1mdW5jdGlvbiBWKE4seixZKXtyZXR1cm5gQ2Fubm90ICR7WX0gJyR7Tn0nIHRvIGEgc3ViZGlyZWN0b3J5'@; put 'IG9mIGl0c2VsZiwgJyR7en0nLmB9ZmUuZXhwb3J0cz17Y2hlY2tQYXRoczpzKGZ1bmN0aW9uIEMoTix6LFksRil7cmV0dXJuIHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksY2hlY2tQYXRoc1N5bmM6ZnVuY3Rpb24gUyhOLHosWSxGKXtjb25zdHtzcmNTdGF0OlcsZGVzdFN0YXQ6cX09ZnVu'@; put 'Y3Rpb24gdihOLHosWSl7bGV0IEY7Y29uc3QgVz1ZLmRlcmVmZXJlbmNlP3JlPT55LnN0YXRTeW5jKHJlLHtiaWdpbnQ6ITB9KTpyZT0+eS5sc3RhdFN5bmMocmUse2JpZ2ludDohMH0pLHE9VyhOKTt0cnl7Rj1XKHopfWNhdGNoKHJlKXtpZigiRU5PRU5UIj09PXJlLmNvZGUpcmV0dXJue3Ny'@; put 'Y1N0YXQ6cSxkZXN0U3RhdDpudWxsfTt0aHJvdyByZX1yZXR1cm57c3JjU3RhdDpxLGRlc3RTdGF0OkZ9fShOLHosRik7aWYocSl7aWYoVShXLHEpKXtjb25zdCByZT1jLmJhc2VuYW1lKE4pLG1lPWMuYmFzZW5hbWUoeik7aWYoIm1vdmUiPT09WSYmcmUhPT1tZSYmcmUudG9Mb3dlckNhc2Uo'@; put 'KT09PW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJue3NyY1N0YXQ6VyxkZXN0U3RhdDpxLGlzQ2hhbmdpbmdDYXNlOiEwfTt0aHJvdyBuZXcgRXJyb3IoIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gbXVzdCBub3QgYmUgdGhlIHNhbWUuIil9aWYoVy5pc0RpcmVjdG9yeSgpJiYhcS5pc0RpcmVjdG9y'@; put 'eSgpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSBub24tZGlyZWN0b3J5ICcke3p9JyB3aXRoIGRpcmVjdG9yeSAnJHtOfScuYCk7aWYoIVcuaXNEaXJlY3RvcnkoKSYmcS5pc0RpcmVjdG9yeSgpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSBkaXJlY3Rvcnkg'@; put 'JyR7en0nIHdpdGggbm9uLWRpcmVjdG9yeSAnJHtOfScuYCl9aWYoVy5pc0RpcmVjdG9yeSgpJiZIKE4seikpdGhyb3cgbmV3IEVycm9yKFYoTix6LFkpKTtyZXR1cm57c3JjU3RhdDpXLGRlc3RTdGF0OnF9fSxjaGVja1BhcmVudFBhdGhzOnMoTCksY2hlY2tQYXJlbnRQYXRoc1N5bmM6ZnVu'@; put 'Y3Rpb24geChOLHosWSxGKXtjb25zdCBXPWMucmVzb2x2ZShjLmRpcm5hbWUoTikpLHE9Yy5yZXNvbHZlKGMuZGlybmFtZShZKSk7aWYocT09PVd8fHE9PT1jLnBhcnNlKHEpLnJvb3QpcmV0dXJuO2xldCByZTt0cnl7cmU9eS5zdGF0U3luYyhxLHtiaWdpbnQ6ITB9KX1jYXRjaChtZSl7aWYo'@; put 'IkVOT0VOVCI9PT1tZS5jb2RlKXJldHVybjt0aHJvdyBtZX1pZihVKHoscmUpKXRocm93IG5ldyBFcnJvcihWKE4sWSxGKSk7cmV0dXJuIHgoTix6LHEsRil9LGlzU3JjU3ViZGlyOkgsYXJlSWRlbnRpY2FsOlV9fSw0NzIxMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdCB5PWgoOTg3Mzcp'@; put 'LGM9aCg0MTIzNikuZnJvbVByb21pc2U7ZnVuY3Rpb24gQSgpe3JldHVybihBPV9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihDLHcsUyl7Y29uc3QgTD15aWVsZCB5Lm9wZW4oQywicisiKTtsZXQgUj1udWxsO3RyeXt5aWVsZCB5LmZ1dGltZXMoTCx3LFMpfWZpbmFsbHl7dHJ5e3lpZWxk'@; put 'IHkuY2xvc2UoTCl9Y2F0Y2goeCl7Uj14fX1pZihSKXRocm93IFJ9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZlLmV4cG9ydHM9e3V0aW1lc01pbGxpczpjKGZ1bmN0aW9uIHMoQyx3LFMpe3JldHVybiBBLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHV0aW1lc01pbGxpc1N5bmM6ZnVuY3Rp'@; put 'b24gdihDLHcsUyl7Y29uc3QgTD15Lm9wZW5TeW5jKEMsInIrIik7cmV0dXJuIHkuZnV0aW1lc1N5bmMoTCx3LFMpLHkuY2xvc2VTeW5jKEwpfX19LDg5MzUzKGZlKXsidXNlIHN0cmljdCI7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyx5PU1hdGgubWF4LHM9ZnVuY3Rpb24odyxT'@; put 'KXtmb3IodmFyIEw9W10sUj0wO1I8dy5sZW5ndGg7Uis9MSlMW1JdPXdbUl07Zm9yKHZhciB4PTA7eDxTLmxlbmd0aDt4Kz0xKUxbeCt3Lmxlbmd0aF09U1t4XTtyZXR1cm4gTH07ZmUuZXhwb3J0cz1mdW5jdGlvbih3KXt2YXIgUz10aGlzO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTfHwiW29i'@; put 'amVjdCBGdW5jdGlvbl0iIT09aC5hcHBseShTKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIrUyk7Zm9yKHZhciBSLEw9ZnVuY3Rpb24odyl7Zm9yKHZhciBMPVtdLFI9MSx4PTA7Ujx3Lmxlbmd0aDtSKz0xLHgr'@; put 'PTEpTFt4XT13W1JdO3JldHVybiBMfShhcmd1bWVudHMpLFU9eSgwLFMubGVuZ3RoLUwubGVuZ3RoKSxIPVtdLFY9MDtWPFU7VisrKUhbVl09IiQiK1Y7aWYoUj1GdW5jdGlvbigiYmluZGVyIiwicmV0dXJuIGZ1bmN0aW9uICgiK2Z1bmN0aW9uKEMpe2Zvcih2YXIgUz0iIixMPTA7TDxDLmxl'@; put 'bmd0aDtMKz0xKVMrPUNbTF0sTCsxPEMubGVuZ3RoJiYoUys9IiwiKTtyZXR1cm4gU30oSCkrIil7IHJldHVybiBiaW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOyB9IikoZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgUil7dmFyIHo9Uy5hcHBseSh0aGlzLHMoTCxhcmd1bWVudHMp'@; put 'KTtyZXR1cm4gT2JqZWN0KHopPT09ej96OnRoaXN9cmV0dXJuIFMuYXBwbHkodyxzKEwsYXJndW1lbnRzKSl9KSxTLnByb3RvdHlwZSl7dmFyIE49ZnVuY3Rpb24oKXt9O04ucHJvdG90eXBlPVMucHJvdG90eXBlLFIucHJvdG90eXBlPW5ldyBOLE4ucHJvdG90eXBlPW51bGx9cmV0dXJuIFJ9'@; put 'fSw2Njc0MyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDg5MzUzKTtmZS5leHBvcnRzPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHx5fSw0MjMzKGZlKXsidXNlIHN0cmljdCI7Y29uc3Qgaj1mdW5jdGlvbiooKXt9LmNvbnN0cnVjdG9yO2ZlLmV4cG9ydHM9KCk9Pmp9LDcwNDUzKGZl'@; put 'LGosaCl7InVzZSBzdHJpY3QiO3ZhciB5LGM9aCg3OTYxMikscz1oKDY5MzgzKSxBPWgoNDEyMzcpLHY9aCg3OTI5MCksQz1oKDc5NTM4KSx3PWgoNTgwNjgpLFM9aCg2OTY3NSksTD1oKDM1MzQ1KSxSPWgoNzE1MTQpLHg9aCg1ODk2OCksVT1oKDYxODgpLEg9aCg2ODAwMiksVj1oKDc1ODgw'@; put 'KSxOPWgoNzA0MTQpLHo9aCg3MzA5MyksWT1GdW5jdGlvbixGPWZ1bmN0aW9uKGFlKXt0cnl7cmV0dXJuIFkoJyJ1c2Ugc3RyaWN0IjsgcmV0dXJuICgnK2FlKyIpLmNvbnN0cnVjdG9yOyIpKCl9Y2F0Y2h7fX0sVz1oKDc1Nzk1KSxxPWgoMzA2NTUpLHJlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3'@; put 'IFN9LG1lPVc/ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlfWNhdGNoe3RyeXtyZXR1cm4gVyhhcmd1bWVudHMsImNhbGxlZSIpLmdldH1jYXRjaHtyZXR1cm4gcmV9fX0oKTpyZSxDZT1oKDY0MDM5KSgpLEllPWgoOTM2MjgpLGtlPWgoNzEwNjQpLHFlPWgoNDg2NDgpLFg9aCgxMTAwMiksZj1o'@; put 'KDEwMDc2KSxiPXt9LGs9dHlwZW9mIFVpbnQ4QXJyYXk+InUifHwhSWU/eTpJZShVaW50OEFycmF5KSxNPXtfX3Byb3RvX186bnVsbCwiJUFnZ3JlZ2F0ZUVycm9yJSI6dHlwZW9mIEFnZ3JlZ2F0ZUVycm9yPiJ1Ij95OkFnZ3JlZ2F0ZUVycm9yLCIlQXJyYXklIjpBcnJheSwiJUFycmF5QnVm'@; put 'ZmVyJSI6dHlwZW9mIEFycmF5QnVmZmVyPiJ1Ij95OkFycmF5QnVmZmVyLCIlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUiOkNlJiZJZT9JZShbXVtTeW1ib2wuaXRlcmF0b3JdKCkpOnksIiVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlIjp5LCIlQXN5bmNGdW5jdGlvbiUiOmIsIiVB'@; put 'c3luY0dlbmVyYXRvciUiOmIsIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSI6YiwiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlIjpiLCIlQXRvbWljcyUiOnR5cGVvZiBBdG9taWNzPiJ1Ij95OkF0b21pY3MsIiVCaWdJbnQlIjp0eXBlb2YgQmlnSW50PiJ1Ij95OkJpZ0ludCwiJUJpZ0ludDY0'@; put 'QXJyYXklIjp0eXBlb2YgQmlnSW50NjRBcnJheT4idSI/eTpCaWdJbnQ2NEFycmF5LCIlQmlnVWludDY0QXJyYXklIjp0eXBlb2YgQmlnVWludDY0QXJyYXk+InUiP3k6QmlnVWludDY0QXJyYXksIiVCb29sZWFuJSI6Qm9vbGVhbiwiJURhdGFWaWV3JSI6dHlwZW9mIERhdGFWaWV3PiJ1Ij95'@; put 'OkRhdGFWaWV3LCIlRGF0ZSUiOkRhdGUsIiVkZWNvZGVVUkklIjpkZWNvZGVVUkksIiVkZWNvZGVVUklDb21wb25lbnQlIjpkZWNvZGVVUklDb21wb25lbnQsIiVlbmNvZGVVUkklIjplbmNvZGVVUkksIiVlbmNvZGVVUklDb21wb25lbnQlIjplbmNvZGVVUklDb21wb25lbnQsIiVFcnJvciUi'@; put 'OnMsIiVldmFsJSI6ZXZhbCwiJUV2YWxFcnJvciUiOkEsIiVGbG9hdDE2QXJyYXklIjp0eXBlb2YgRmxvYXQxNkFycmF5PiJ1Ij95OkZsb2F0MTZBcnJheSwiJUZsb2F0MzJBcnJheSUiOnR5cGVvZiBGbG9hdDMyQXJyYXk+InUiP3k6RmxvYXQzMkFycmF5LCIlRmxvYXQ2NEFycmF5JSI6dHlw'@; put 'ZW9mIEZsb2F0NjRBcnJheT4idSI/eTpGbG9hdDY0QXJyYXksIiVGaW5hbGl6YXRpb25SZWdpc3RyeSUiOnR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeT4idSI/eTpGaW5hbGl6YXRpb25SZWdpc3RyeSwiJUZ1bmN0aW9uJSI6WSwiJUdlbmVyYXRvckZ1bmN0aW9uJSI6YiwiJUludDhBcnJh'@; put 'eSUiOnR5cGVvZiBJbnQ4QXJyYXk+InUiP3k6SW50OEFycmF5LCIlSW50MTZBcnJheSUiOnR5cGVvZiBJbnQxNkFycmF5PiJ1Ij95OkludDE2QXJyYXksIiVJbnQzMkFycmF5JSI6dHlwZW9mIEludDMyQXJyYXk+InUiP3k6SW50MzJBcnJheSwiJWlzRmluaXRlJSI6aXNGaW5pdGUsIiVpc05h'@; put 'TiUiOmlzTmFOLCIlSXRlcmF0b3JQcm90b3R5cGUlIjpDZSYmSWU/SWUoSWUoW11bU3ltYm9sLml0ZXJhdG9yXSgpKSk6eSwiJUpTT04lIjoib2JqZWN0Ij09dHlwZW9mIEpTT04/SlNPTjp5LCIlTWFwJSI6dHlwZW9mIE1hcD4idSI/eTpNYXAsIiVNYXBJdGVyYXRvclByb3RvdHlwZSUiOnR5'@; put 'cGVvZiBNYXA+InUifHwhQ2V8fCFJZT95OkllKChuZXcgTWFwKVtTeW1ib2wuaXRlcmF0b3JdKCkpLCIlTWF0aCUiOk1hdGgsIiVOdW1iZXIlIjpOdW1iZXIsIiVPYmplY3QlIjpjLCIlT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciUiOlcsIiVwYXJzZUZsb2F0JSI6cGFyc2VGbG9h'@; put 'dCwiJXBhcnNlSW50JSI6cGFyc2VJbnQsIiVQcm9taXNlJSI6dHlwZW9mIFByb21pc2U+InUiP3k6UHJvbWlzZSwiJVByb3h5JSI6dHlwZW9mIFByb3h5PiJ1Ij95OlByb3h5LCIlUmFuZ2VFcnJvciUiOnYsIiVSZWZlcmVuY2VFcnJvciUiOkMsIiVSZWZsZWN0JSI6dHlwZW9mIFJlZmxlY3Q+'@; put 'InUiP3k6UmVmbGVjdCwiJVJlZ0V4cCUiOlJlZ0V4cCwiJVNldCUiOnR5cGVvZiBTZXQ+InUiP3k6U2V0LCIlU2V0SXRlcmF0b3JQcm90b3R5cGUlIjp0eXBlb2YgU2V0PiJ1Inx8IUNlfHwhSWU/eTpJZSgobmV3IFNldClbU3ltYm9sLml0ZXJhdG9yXSgpKSwiJVNoYXJlZEFycmF5QnVmZmVy'@; put 'JSI6dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPiJ1Ij95OlNoYXJlZEFycmF5QnVmZmVyLCIlU3RyaW5nJSI6U3RyaW5nLCIlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjpDZSYmSWU/SWUoIiJbU3ltYm9sLml0ZXJhdG9yXSgpKTp5LCIlU3ltYm9sJSI6Q2U/U3ltYm9sOnksIiVTeW50YXhF'@; put 'cnJvciUiOncsIiVUaHJvd1R5cGVFcnJvciUiOm1lLCIlVHlwZWRBcnJheSUiOmssIiVUeXBlRXJyb3IlIjpTLCIlVWludDhBcnJheSUiOnR5cGVvZiBVaW50OEFycmF5PiJ1Ij95OlVpbnQ4QXJyYXksIiVVaW50OENsYW1wZWRBcnJheSUiOnR5cGVvZiBVaW50OENsYW1wZWRBcnJheT4idSI/'@; put 'eTpVaW50OENsYW1wZWRBcnJheSwiJVVpbnQxNkFycmF5JSI6dHlwZW9mIFVpbnQxNkFycmF5PiJ1Ij95OlVpbnQxNkFycmF5LCIlVWludDMyQXJyYXklIjp0eXBlb2YgVWludDMyQXJyYXk+InUiP3k6VWludDMyQXJyYXksIiVVUklFcnJvciUiOkwsIiVXZWFrTWFwJSI6dHlwZW9mIFdlYWtN'@; put 'YXA+InUiP3k6V2Vha01hcCwiJVdlYWtSZWYlIjp0eXBlb2YgV2Vha1JlZj4idSI/eTpXZWFrUmVmLCIlV2Vha1NldCUiOnR5cGVvZiBXZWFrU2V0PiJ1Ij95OldlYWtTZXQsIiVGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCUiOmYsIiVGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHklIjpYLCIlT2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5JSI6cSwiJU9iamVjdC5nZXRQcm90b3R5cGVPZiUiOmtlLCIlTWF0aC5hYnMlIjpSLCIlTWF0aC5mbG9vciUiOngsIiVNYXRoLm1heCUiOlUsIiVNYXRoLm1pbiUiOkgsIiVNYXRoLnBvdyUiOlYsIiVNYXRoLnJvdW5kJSI6TiwiJU1hdGguc2lnbiUiOnosIiVS'@; put 'ZWZsZWN0LmdldFByb3RvdHlwZU9mJSI6cWV9O2lmKEllKXRyeXtudWxsLmVycm9yfWNhdGNoKGFlKXt2YXIgQj1JZShJZShhZSkpO01bIiVFcnJvci5wcm90b3R5cGUlIl09Qn12YXIgSz1mdW5jdGlvbiBhZSh4ZSl7dmFyIGplO2lmKCIlQXN5bmNGdW5jdGlvbiUiPT09eGUpamU9RigiYXN5'@; put 'bmMgZnVuY3Rpb24gKCkge30iKTtlbHNlIGlmKCIlR2VuZXJhdG9yRnVuY3Rpb24lIj09PXhlKWplPUYoImZ1bmN0aW9uKiAoKSB7fSIpO2Vsc2UgaWYoIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSI9PT14ZSlqZT1GKCJhc3luYyBmdW5jdGlvbiogKCkge30iKTtlbHNlIGlmKCIlQXN5bmNH'@; put 'ZW5lcmF0b3IlIj09PXhlKXt2YXIgQWU9YWUoIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSIpO0FlJiYoamU9QWUucHJvdG90eXBlKX1lbHNlIGlmKCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiPT09eGUpe3ZhciBEZT1hZSgiJUFzeW5jR2VuZXJhdG9yJSIpO0RlJiZJZSYmKGplPUllKERl'@; put 'LnByb3RvdHlwZSkpfXJldHVybiBNW3hlXT1qZSxqZX0sRz17X19wcm90b19fOm51bGwsIiVBcnJheUJ1ZmZlclByb3RvdHlwZSUiOlsiQXJyYXlCdWZmZXIiLCJwcm90b3R5cGUiXSwiJUFycmF5UHJvdG90eXBlJSI6WyJBcnJheSIsInByb3RvdHlwZSJdLCIlQXJyYXlQcm90b19lbnRyaWVz'@; put 'JSI6WyJBcnJheSIsInByb3RvdHlwZSIsImVudHJpZXMiXSwiJUFycmF5UHJvdG9fZm9yRWFjaCUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJmb3JFYWNoIl0sIiVBcnJheVByb3RvX2tleXMlIjpbIkFycmF5IiwicHJvdG90eXBlIiwia2V5cyJdLCIlQXJyYXlQcm90b192YWx1ZXMlIjpbIkFy'@; put 'cmF5IiwicHJvdG90eXBlIiwidmFsdWVzIl0sIiVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJSI6WyJBc3luY0Z1bmN0aW9uIiwicHJvdG90eXBlIl0sIiVBc3luY0dlbmVyYXRvciUiOlsiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlQXN5bmNHZW5lcmF0b3JQcm90b3R5'@; put 'cGUlIjpbIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iLCJwcm90b3R5cGUiLCJwcm90b3R5cGUiXSwiJUJvb2xlYW5Qcm90b3R5cGUlIjpbIkJvb2xlYW4iLCJwcm90b3R5cGUiXSwiJURhdGFWaWV3UHJvdG90eXBlJSI6WyJEYXRhVmlldyIsInByb3RvdHlwZSJdLCIlRGF0ZVByb3RvdHlwZSUi'@; put 'OlsiRGF0ZSIsInByb3RvdHlwZSJdLCIlRXJyb3JQcm90b3R5cGUlIjpbIkVycm9yIiwicHJvdG90eXBlIl0sIiVFdmFsRXJyb3JQcm90b3R5cGUlIjpbIkV2YWxFcnJvciIsInByb3RvdHlwZSJdLCIlRmxvYXQzMkFycmF5UHJvdG90eXBlJSI6WyJGbG9hdDMyQXJyYXkiLCJwcm90b3R5cGUi'@; put 'XSwiJUZsb2F0NjRBcnJheVByb3RvdHlwZSUiOlsiRmxvYXQ2NEFycmF5IiwicHJvdG90eXBlIl0sIiVGdW5jdGlvblByb3RvdHlwZSUiOlsiRnVuY3Rpb24iLCJwcm90b3R5cGUiXSwiJUdlbmVyYXRvciUiOlsiR2VuZXJhdG9yRnVuY3Rpb24iLCJwcm90b3R5cGUiXSwiJUdlbmVyYXRvclBy'@; put 'b3RvdHlwZSUiOlsiR2VuZXJhdG9yRnVuY3Rpb24iLCJwcm90b3R5cGUiLCJwcm90b3R5cGUiXSwiJUludDhBcnJheVByb3RvdHlwZSUiOlsiSW50OEFycmF5IiwicHJvdG90eXBlIl0sIiVJbnQxNkFycmF5UHJvdG90eXBlJSI6WyJJbnQxNkFycmF5IiwicHJvdG90eXBlIl0sIiVJbnQzMkFy'@; put 'cmF5UHJvdG90eXBlJSI6WyJJbnQzMkFycmF5IiwicHJvdG90eXBlIl0sIiVKU09OUGFyc2UlIjpbIkpTT04iLCJwYXJzZSJdLCIlSlNPTlN0cmluZ2lmeSUiOlsiSlNPTiIsInN0cmluZ2lmeSJdLCIlTWFwUHJvdG90eXBlJSI6WyJNYXAiLCJwcm90b3R5cGUiXSwiJU51bWJlclByb3RvdHlw'@; put 'ZSUiOlsiTnVtYmVyIiwicHJvdG90eXBlIl0sIiVPYmplY3RQcm90b3R5cGUlIjpbIk9iamVjdCIsInByb3RvdHlwZSJdLCIlT2JqUHJvdG9fdG9TdHJpbmclIjpbIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIl0sIiVPYmpQcm90b192YWx1ZU9mJSI6WyJPYmplY3QiLCJwcm90b3R5'@; put 'cGUiLCJ2YWx1ZU9mIl0sIiVQcm9taXNlUHJvdG90eXBlJSI6WyJQcm9taXNlIiwicHJvdG90eXBlIl0sIiVQcm9taXNlUHJvdG9fdGhlbiUiOlsiUHJvbWlzZSIsInByb3RvdHlwZSIsInRoZW4iXSwiJVByb21pc2VfYWxsJSI6WyJQcm9taXNlIiwiYWxsIl0sIiVQcm9taXNlX3JlamVjdCUi'@; put 'OlsiUHJvbWlzZSIsInJlamVjdCJdLCIlUHJvbWlzZV9yZXNvbHZlJSI6WyJQcm9taXNlIiwicmVzb2x2ZSJdLCIlUmFuZ2VFcnJvclByb3RvdHlwZSUiOlsiUmFuZ2VFcnJvciIsInByb3RvdHlwZSJdLCIlUmVmZXJlbmNlRXJyb3JQcm90b3R5cGUlIjpbIlJlZmVyZW5jZUVycm9yIiwicHJv'@; put 'dG90eXBlIl0sIiVSZWdFeHBQcm90b3R5cGUlIjpbIlJlZ0V4cCIsInByb3RvdHlwZSJdLCIlU2V0UHJvdG90eXBlJSI6WyJTZXQiLCJwcm90b3R5cGUiXSwiJVNoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlJSI6WyJTaGFyZWRBcnJheUJ1ZmZlciIsInByb3RvdHlwZSJdLCIlU3RyaW5nUHJv'@; put 'dG90eXBlJSI6WyJTdHJpbmciLCJwcm90b3R5cGUiXSwiJVN5bWJvbFByb3RvdHlwZSUiOlsiU3ltYm9sIiwicHJvdG90eXBlIl0sIiVTeW50YXhFcnJvclByb3RvdHlwZSUiOlsiU3ludGF4RXJyb3IiLCJwcm90b3R5cGUiXSwiJVR5cGVkQXJyYXlQcm90b3R5cGUlIjpbIlR5cGVkQXJyYXki'@; put 'LCJwcm90b3R5cGUiXSwiJVR5cGVFcnJvclByb3RvdHlwZSUiOlsiVHlwZUVycm9yIiwicHJvdG90eXBlIl0sIiVVaW50OEFycmF5UHJvdG90eXBlJSI6WyJVaW50OEFycmF5IiwicHJvdG90eXBlIl0sIiVVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSUiOlsiVWludDhDbGFtcGVkQXJyYXki'@; put 'LCJwcm90b3R5cGUiXSwiJVVpbnQxNkFycmF5UHJvdG90eXBlJSI6WyJVaW50MTZBcnJheSIsInByb3RvdHlwZSJdLCIlVWludDMyQXJyYXlQcm90b3R5cGUlIjpbIlVpbnQzMkFycmF5IiwicHJvdG90eXBlIl0sIiVVUklFcnJvclByb3RvdHlwZSUiOlsiVVJJRXJyb3IiLCJwcm90b3R5cGUi'@; put 'XSwiJVdlYWtNYXBQcm90b3R5cGUlIjpbIldlYWtNYXAiLCJwcm90b3R5cGUiXSwiJVdlYWtTZXRQcm90b3R5cGUlIjpbIldlYWtTZXQiLCJwcm90b3R5cGUiXX0sRD1oKDY2NzQzKSxwPWgoOTk1NyksST1ELmNhbGwoZixBcnJheS5wcm90b3R5cGUuY29uY2F0KSx1ZT1ELmNhbGwoWCxBcnJh'@; put 'eS5wcm90b3R5cGUuc3BsaWNlKSxuZT1ELmNhbGwoZixTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLF9lPUQuY2FsbChmLFN0cmluZy5wcm90b3R5cGUuc2xpY2UpLFBlPUQuY2FsbChmLFJlZ0V4cC5wcm90b3R5cGUuZXhlYyksb3Q9L1teJS5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8p'@; put 'fChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCUkKSkvZyxsdD0vXFwoXFwpPy9nLFJlPWZ1bmN0aW9uKHhlLGplKXt2YXIgRGUsQWU9eGU7aWYocChHLEFlKSYmKEFlPSIlIisoRGU9R1tBZV0pWzBdKyIlIikscChNLEFlKSl7dmFy'@; put 'IEZlPU1bQWVdO2lmKEZlPT09YiYmKEZlPUsoQWUpKSx0eXBlb2YgRmU+InUiJiYhamUpdGhyb3cgbmV3IFMoImludHJpbnNpYyAiK3hlKyIgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhIik7cmV0dXJue2FsaWFzOkRlLG5hbWU6QWUsdmFsdWU6'@; put 'RmV9fXRocm93IG5ldyB3KCJpbnRyaW5zaWMgIit4ZSsiIGRvZXMgbm90IGV4aXN0ISIpfTtmZS5leHBvcnRzPWZ1bmN0aW9uKHhlLGplKXtpZigic3RyaW5nIiE9dHlwZW9mIHhlfHwwPT09eGUubGVuZ3RoKXRocm93IG5ldyBTKCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5'@; put 'IHN0cmluZyIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmImJvb2xlYW4iIT10eXBlb2YgamUpdGhyb3cgbmV3IFMoJyJhbGxvd01pc3NpbmciIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7aWYobnVsbD09PVBlKC9eJT9bXiVdKiU/JC8seGUpKXRocm93IG5ldyB3KCJgJWAgbWF5IG5v'@; put 'dCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lIik7dmFyIEFlPWZ1bmN0aW9uKHhlKXt2YXIgamU9X2UoeGUsMCwxKSxBZT1fZSh4ZSwtMSk7aWYoIiUiPT09amUmJiIlIiE9PUFlKXRocm93IG5ldyB3KCJpbnZh'@; put 'bGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIGNsb3NpbmcgYCVgIik7aWYoIiUiPT09QWUmJiIlIiE9PWplKXRocm93IG5ldyB3KCJpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIG9wZW5pbmcgYCVgIik7dmFyIERlPVtdO3JldHVybiBuZSh4ZSxvdCxmdW5jdGlvbihG'@; put 'ZSxnZSxjZSxoZSl7RGVbRGUubGVuZ3RoXT1jZT9uZShoZSxsdCwiJDEiKTpnZXx8RmV9KSxEZX0oeGUpLERlPUFlLmxlbmd0aD4wP0FlWzBdOiIiLEZlPVJlKCIlIitEZSsiJSIsamUpLGdlPUZlLm5hbWUsY2U9RmUudmFsdWUsaGU9ITEsd2U9RmUuYWxpYXM7d2UmJihEZT13ZVswXSx1ZShB'@; put 'ZSxJKFswLDFdLHdlKSkpO2Zvcih2YXIgSmU9MSx0dD0hMDtKZTxBZS5sZW5ndGg7SmUrPTEpe3ZhciBLZT1BZVtKZV0sJHQ9X2UoS2UsMCwxKSxSdD1fZShLZSwtMSk7aWYoKCciJz09PSR0fHwiJyI9PT0kdHx8ImAiPT09JHR8fCciJz09PVJ0fHwiJyI9PT1SdHx8ImAiPT09UnQpJiYkdCE9'@; put 'PVJ0KXRocm93IG5ldyB3KCJwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzIik7aWYoKCJjb25zdHJ1Y3RvciI9PT1LZXx8IXR0KSYmKGhlPSEwKSxwKE0sZ2U9IiUiKyhEZSs9Ii4iK0tlKSsiJSIpKWNlPU1bZ2VdO2Vsc2UgaWYobnVsbCE9Y2Up'@; put 'e2lmKCEoS2UgaW4gY2UpKXtpZighamUpdGhyb3cgbmV3IFMoImJhc2UgaW50cmluc2ljIGZvciAiK3hlKyIgZXhpc3RzLCBidXQgdGhlIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUuIik7cmV0dXJufWlmKFcmJkplKzE+PUFlLmxlbmd0aCl7dmFyIEx0PVcoY2UsS2UpO2NlPSh0dD0hIUx0'@; put 'KSYmImdldCJpbiBMdCYmISgib3JpZ2luYWxWYWx1ZSJpbiBMdC5nZXQpP0x0LmdldDpjZVtLZV19ZWxzZSB0dD1wKGNlLEtlKSxjZT1jZVtLZV07dHQmJiFoZSYmKE1bZ2VdPWNlKX19cmV0dXJuIGNlfX0sNzEwNjQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg3OTYxMik7ZmUuZXhw'@; put 'b3J0cz15LmdldFByb3RvdHlwZU9mfHxudWxsfSw0ODY0OChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldFByb3RvdHlwZU9mfHxudWxsfSw5MzYyOChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQ4NjQ4KSxjPWgoNzEwNjQp'@; put 'LHM9aCg3MTc2KTtmZS5leHBvcnRzPXk/ZnVuY3Rpb24odil7cmV0dXJuIHkodil9OmM/ZnVuY3Rpb24odil7aWYoIXZ8fCJvYmplY3QiIT10eXBlb2YgdiYmImZ1bmN0aW9uIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiZ2V0UHJvdG86IG5vdCBhbiBvYmplY3QiKTtyZXR1cm4g'@; put 'Yyh2KX06cz9mdW5jdGlvbih2KXtyZXR1cm4gcyh2KX06bnVsbH0sNjU0OShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcn0sNzU3OTUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTQ5KTtpZih5KXRyeXt5KFtdLCJsZW5n'@; put 'dGgiKX1jYXRjaHt5PW51bGx9ZmUuZXhwb3J0cz15fSwxMjgzKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1mdW5jdGlvbiBoKHkpe2lmKG51bGw9PT15fHwib2JqZWN0IiE9dHlwZW9mIHkpcmV0dXJuIHk7aWYoeSBpbnN0YW5jZW9mIE9iamVjdCl2YXIgYz17X19wcm90b19fOmooeSl9'@; put 'O2Vsc2UgYz1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh5KS5mb3JFYWNoKGZ1bmN0aW9uKHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLHMsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LHMpKX0pLGN9O3ZhciBqPU9iamVj'@; put 'dC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oeSl7cmV0dXJuIHkuX19wcm90b19ffX0sNjM3MzUoZmUsaixoKXt2YXIgdyxTLHk9aCg2NTYwNiksYz1oKDQ5OTkzKSxzPWgoNjkxMDYpLEE9aCgxMTk5NSksdj1oKDEyODMpLEM9aCg0MDUzNyk7ZnVuY3Rpb24gUihGLFcpe09iamVjdC5kZWZp'@; put 'bmVQcm9wZXJ0eShGLHcse2dldDpmdW5jdGlvbigpe3JldHVybiBXfX0pfSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yPyh3PVN5bWJvbC5mb3IoImdyYWNlZnVsLWZzLnF1ZXVlIiksUz1TeW1ib2wuZm9yKCJncmFjZWZ1bC1mcy5wcmV2'@; put 'aW91cyIpKToodz0iX19fZ3JhY2VmdWwtZnMucXVldWUiLFM9Il9fX2dyYWNlZnVsLWZzLnByZXZpb3VzIik7dmFyIE4seD1mdW5jdGlvbiBMKCl7fTtmdW5jdGlvbiBIKEYpe3MoRiksRi5ncmFjZWZ1bGlmeT1ILEYuY3JlYXRlUmVhZFN0cmVhbT1mdW5jdGlvbiBuZShsdCxkdCl7cmV0dXJu'@; put 'IG5ldyBGLlJlYWRTdHJlYW0obHQsZHQpfSxGLmNyZWF0ZVdyaXRlU3RyZWFtPWZ1bmN0aW9uIF9lKGx0LGR0KXtyZXR1cm4gbmV3IEYuV3JpdGVTdHJlYW0obHQsZHQpfTt2YXIgVz1GLnJlYWRGaWxlO0YucmVhZEZpbGU9ZnVuY3Rpb24gcShsdCxkdCxSZSl7cmV0dXJuImZ1bmN0aW9uIj09'@; put 'dHlwZW9mIGR0JiYoUmU9ZHQsZHQ9bnVsbCksZnVuY3Rpb24gYWUoeGUsamUsQWUsRGUpe3JldHVybiBXKHhlLGplLGZ1bmN0aW9uKEZlKXshRmV8fCJFTUZJTEUiIT09RmUuY29kZSYmIkVORklMRSIhPT1GZS5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBBZSYmQWUuYXBwbHkodGhpcyxhcmd1'@; put 'bWVudHMpOlYoW2FlLFt4ZSxqZSxBZV0sRmUsRGV8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KGx0LGR0LFJlKX07dmFyIHJlPUYud3JpdGVGaWxlO0Yud3JpdGVGaWxlPWZ1bmN0aW9uIG1lKGx0LGR0LFJlLGFlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUmUmJihhZT1SZSxSZT1u'@; put 'dWxsKSxmdW5jdGlvbiB4ZShqZSxBZSxEZSxGZSxnZSl7cmV0dXJuIHJlKGplLEFlLERlLGZ1bmN0aW9uKGNlKXshY2V8fCJFTUZJTEUiIT09Y2UuY29kZSYmIkVORklMRSIhPT1jZS5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBGZSYmRmUuYXBwbHkodGhpcyxhcmd1bWVudHMpOlYoW3hlLFtq'@; put 'ZSxBZSxEZSxGZV0sY2UsZ2V8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KGx0LGR0LFJlLGFlKX07dmFyIENlPUYuYXBwZW5kRmlsZTtDZSYmKEYuYXBwZW5kRmlsZT1mdW5jdGlvbiBJZShsdCxkdCxSZSxhZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFJlJiYoYWU9UmUsUmU9bnVs'@; put 'bCksZnVuY3Rpb24geGUoamUsQWUsRGUsRmUsZ2Upe3JldHVybiBDZShqZSxBZSxEZSxmdW5jdGlvbihjZSl7IWNlfHwiRU1GSUxFIiE9PWNlLmNvZGUmJiJFTkZJTEUiIT09Y2UuY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgRmUmJkZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpWKFt4ZSxbamUs'@; put 'QWUsRGUsRmVdLGNlLGdlfHxEYXRlLm5vdygpLERhdGUubm93KCldKX0pfShsdCxkdCxSZSxhZSl9KTt2YXIga2U9Ri5jb3B5RmlsZTtrZSYmKEYuY29weUZpbGU9ZnVuY3Rpb24gcWUobHQsZHQsUmUsYWUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBSZSYmKGFlPVJlLFJlPTApLGZ1bmN0'@; put 'aW9uIHhlKGplLEFlLERlLEZlLGdlKXtyZXR1cm4ga2UoamUsQWUsRGUsZnVuY3Rpb24oY2UpeyFjZXx8IkVNRklMRSIhPT1jZS5jb2RlJiYiRU5GSUxFIiE9PWNlLmNvZGU/ImZ1bmN0aW9uIj09dHlwZW9mIEZlJiZGZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6VihbeGUsW2plLEFlLERlLEZl'@; put 'XSxjZSxnZXx8RGF0ZS5ub3coKSxEYXRlLm5vdygpXSl9KX0obHQsZHQsUmUsYWUpfSk7dmFyIFg9Ri5yZWFkZGlyO0YucmVhZGRpcj1mdW5jdGlvbiBiKGx0LGR0LFJlKXsiZnVuY3Rpb24iPT10eXBlb2YgZHQmJihSZT1kdCxkdD1udWxsKTt2YXIgYWU9Zi50ZXN0KHkudmVyc2lvbik/ZnVu'@; put 'Y3Rpb24oQWUsRGUsRmUsZ2Upe3JldHVybiBYKEFlLHhlKEFlLERlLEZlLGdlKSl9OmZ1bmN0aW9uKEFlLERlLEZlLGdlKXtyZXR1cm4gWChBZSxEZSx4ZShBZSxEZSxGZSxnZSkpfTtyZXR1cm4gYWUobHQsZHQsUmUpO2Z1bmN0aW9uIHhlKGplLEFlLERlLEZlKXtyZXR1cm4gZnVuY3Rpb24o'@; put 'Z2UsY2UpeyFnZXx8IkVNRklMRSIhPT1nZS5jb2RlJiYiRU5GSUxFIiE9PWdlLmNvZGU/KGNlJiZjZS5zb3J0JiZjZS5zb3J0KCksImZ1bmN0aW9uIj09dHlwZW9mIERlJiZEZS5jYWxsKHRoaXMsZ2UsY2UpKTpWKFthZSxbamUsQWUsRGVdLGdlLEZlfHxEYXRlLm5vdygpLERhdGUubm93KCld'@; put 'KX19fTt2YXIgZj0vXnZbMC01XVwuLztpZigidjAuOCI9PT15LnZlcnNpb24uc3Vic3RyKDAsNCkpe3ZhciBrPUEoRik7RD1rLlJlYWRTdHJlYW0sST1rLldyaXRlU3RyZWFtfXZhciBNPUYuUmVhZFN0cmVhbTtNJiYoRC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSksRC5w'@; put 'cm90b3R5cGUub3Blbj1mdW5jdGlvbiBwKCl7dmFyIGx0PXRoaXM7b3QobHQucGF0aCxsdC5mbGFncyxsdC5tb2RlLGZ1bmN0aW9uKGR0LFJlKXtkdD8obHQuYXV0b0Nsb3NlJiZsdC5kZXN0cm95KCksbHQuZW1pdCgiZXJyb3IiLGR0KSk6KGx0LmZkPVJlLGx0LmVtaXQoIm9wZW4iLFJlKSxs'@; put 'dC5yZWFkKCkpfSl9KTt2YXIgQj1GLldyaXRlU3RyZWFtO0ImJihJLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEIucHJvdG90eXBlKSxJLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uIHVlKCl7dmFyIGx0PXRoaXM7b3QobHQucGF0aCxsdC5mbGFncyxsdC5tb2RlLGZ1bmN0aW9uKGR0LFJlKXtk'@; put 'dD8obHQuZGVzdHJveSgpLGx0LmVtaXQoImVycm9yIixkdCkpOihsdC5mZD1SZSxsdC5lbWl0KCJvcGVuIixSZSkpfSl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRiwiUmVhZFN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBEfSxzZXQ6ZnVuY3Rpb24obHQpe0Q9bHR9LGVudW1lcmFi'@; put 'bGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEYsIldyaXRlU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEl9LHNldDpmdW5jdGlvbihsdCl7ST1sdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgSz1EO09iamVjdC5kZWZpbmVQ'@; put 'cm9wZXJ0eShGLCJGaWxlUmVhZFN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBLfSxzZXQ6ZnVuY3Rpb24obHQpe0s9bHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7dmFyIEc9STtmdW5jdGlvbiBEKGx0LGR0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEQ/KE0uYXBw'@; put 'bHkodGhpcyxhcmd1bWVudHMpLHRoaXMpOkQuYXBwbHkoT2JqZWN0LmNyZWF0ZShELnByb3RvdHlwZSksYXJndW1lbnRzKX1mdW5jdGlvbiBJKGx0LGR0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEk/KEIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMpOkkuYXBwbHkoT2JqZWN0LmNyZWF0'@; put 'ZShJLnByb3RvdHlwZSksYXJndW1lbnRzKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRiwiRmlsZVdyaXRlU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEd9LHNldDpmdW5jdGlvbihsdCl7Rz1sdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgUGU9Ri5vcGVuO2Z1'@; put 'bmN0aW9uIG90KGx0LGR0LFJlLGFlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUmUmJihhZT1SZSxSZT1udWxsKSxmdW5jdGlvbiB4ZShqZSxBZSxEZSxGZSxnZSl7cmV0dXJuIFBlKGplLEFlLERlLGZ1bmN0aW9uKGNlLGhlKXshY2V8fCJFTUZJTEUiIT09Y2UuY29kZSYmIkVORklMRSIh'@; put 'PT1jZS5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBGZSYmRmUuYXBwbHkodGhpcyxhcmd1bWVudHMpOlYoW3hlLFtqZSxBZSxEZSxGZV0sY2UsZ2V8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KGx0LGR0LFJlLGFlKX1yZXR1cm4gRi5vcGVuPW90LEZ9ZnVuY3Rpb24gVihGKXt4KCJFTlFV'@; put 'RVVFIixGWzBdLm5hbWUsRlsxXSksY1t3XS5wdXNoKEYpLFkoKX1mdW5jdGlvbiB6KCl7Zm9yKHZhciBGPURhdGUubm93KCksVz0wO1c8Y1t3XS5sZW5ndGg7KytXKWNbd11bV10ubGVuZ3RoPjImJihjW3ddW1ddWzNdPUYsY1t3XVtXXVs0XT1GKTtZKCl9ZnVuY3Rpb24gWSgpe2lmKGNsZWFy'@; put 'VGltZW91dChOKSxOPXZvaWQgMCwwIT09Y1t3XS5sZW5ndGgpe3ZhciBGPWNbd10uc2hpZnQoKSxXPUZbMF0scT1GWzFdLHJlPUZbMl0sbWU9RlszXSxDZT1GWzRdO2lmKHZvaWQgMD09PW1lKXgoIlJFVFJZIixXLm5hbWUscSksVy5hcHBseShudWxsLHEpO2Vsc2UgaWYoRGF0ZS5ub3coKS1t'@; put 'ZT49NmU0KXt4KCJUSU1FT1VUIixXLm5hbWUscSk7dmFyIEllPXEucG9wKCk7ImZ1bmN0aW9uIj09dHlwZW9mIEllJiZJZS5jYWxsKG51bGwscmUpfWVsc2V7dmFyIGtlPURhdGUubm93KCktQ2UscWU9TWF0aC5tYXgoQ2UtbWUsMSk7a2U+PU1hdGgubWluKDEuMipxZSwxMDApPyh4KCJSRVRS'@; put 'WSIsVy5uYW1lLHEpLFcuYXBwbHkobnVsbCxxLmNvbmNhdChbbWVdKSkpOmNbd10ucHVzaChGKX12b2lkIDA9PT1OJiYoTj1zZXRUaW1lb3V0KFksMCkpfX1DLmRlYnVnbG9nP3g9Qy5kZWJ1Z2xvZygiZ2ZzNCIpOi9cYmdmczRcYi9pLnRlc3QoeS5lbnYuTk9ERV9ERUJVR3x8IiIpJiYoeD1m'@; put 'dW5jdGlvbigpe3ZhciBGPUMuZm9ybWF0LmFwcGx5KEMsYXJndW1lbnRzKTtGPSJHRlM0OiAiK0Yuc3BsaXQoL1xuLykuam9pbigiXG5HRlM0OiAiKSxjb25zb2xlLmVycm9yKEYpfSksY1t3XXx8KFIoYyxoLmdbd118fFtdKSxjLmNsb3NlPWZ1bmN0aW9uKEYpe2Z1bmN0aW9uIFcocSxyZSl7'@; put 'cmV0dXJuIEYuY2FsbChjLHEsZnVuY3Rpb24obWUpe21lfHx6KCksImZ1bmN0aW9uIj09dHlwZW9mIHJlJiZyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFcsUyx7dmFsdWU6Rn0pLFd9KGMuY2xvc2UpLGMuY2xvc2VTeW5jPWZ1bmN0aW9u'@; put 'KEYpe2Z1bmN0aW9uIFcocSl7Ri5hcHBseShjLGFyZ3VtZW50cykseigpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoVyxTLHt2YWx1ZTpGfSksV30oYy5jbG9zZVN5bmMpLC9cYmdmczRcYi9pLnRlc3QoeS5lbnYuTk9ERV9ERUJVR3x8IiIpJiZ5Lm9uKCJleGl0IixmdW5jdGlvbigp'@; put 'e3goY1t3XSksaCg5NDE0OCkuZXF1YWwoY1t3XS5sZW5ndGgsMCl9KSksaC5nW3ddfHxSKGguZyxjW3ddKSxmZS5leHBvcnRzPUgodihjKSkseS5lbnYuVEVTVF9HUkFDRUZVTF9GU19HTE9CQUxfUEFUQ0gmJiFjLl9fcGF0Y2hlZCYmKGZlLmV4cG9ydHM9SChjKSxjLl9fcGF0Y2hlZD0hMCl9'@; put 'LDExOTk1KGZlLGosaCl7dmFyIHk9aCg2NTYwNiksYz1oKDg4MzEwKS5TdHJlYW07ZmUuZXhwb3J0cz1mdW5jdGlvbiBzKEEpe3JldHVybntSZWFkU3RyZWFtOmZ1bmN0aW9uIHYodyxTKXtpZighKHRoaXMgaW5zdGFuY2VvZiB2KSlyZXR1cm4gbmV3IHYodyxTKTtjLmNhbGwodGhpcyk7dmFy'@; put 'IEw9dGhpczt0aGlzLnBhdGg9dyx0aGlzLmZkPW51bGwsdGhpcy5yZWFkYWJsZT0hMCx0aGlzLnBhdXNlZD0hMSx0aGlzLmZsYWdzPSJyIix0aGlzLm1vZGU9NDM4LHRoaXMuYnVmZmVyU2l6ZT02NTUzNixTPVN8fHt9O2Zvcih2YXIgUj1PYmplY3Qua2V5cyhTKSx4PTAsVT1SLmxlbmd0aDt4'@; put 'PFU7eCsrKXt2YXIgSD1SW3hdO3RoaXNbSF09U1tIXX1pZih0aGlzLmVuY29kaW5nJiZ0aGlzLnNldEVuY29kaW5nKHRoaXMuZW5jb2RpbmcpLHZvaWQgMCE9PXRoaXMuc3RhcnQpe2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5zdGFydCl0aHJvdyBUeXBlRXJyb3IoInN0YXJ0IG11c3QgYmUg'@; put 'YSBOdW1iZXIiKTtpZih2b2lkIDA9PT10aGlzLmVuZCl0aGlzLmVuZD0xLzA7ZWxzZSBpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMuZW5kKXRocm93IFR5cGVFcnJvcigiZW5kIG11c3QgYmUgYSBOdW1iZXIiKTtpZih0aGlzLnN0YXJ0PnRoaXMuZW5kKXRocm93IG5ldyBFcnJvcigic3RhcnQg'@; put 'bXVzdCBiZSA8PSBlbmQiKTt0aGlzLnBvcz10aGlzLnN0YXJ0fW51bGw9PT10aGlzLmZkP0Eub3Blbih0aGlzLnBhdGgsdGhpcy5mbGFncyx0aGlzLm1vZGUsZnVuY3Rpb24oVixOKXtpZihWKXJldHVybiBMLmVtaXQoImVycm9yIixWKSx2b2lkKEwucmVhZGFibGU9ITEpO0wuZmQ9TixMLmVt'@; put 'aXQoIm9wZW4iLE4pLEwuX3JlYWQoKX0pOnkubmV4dFRpY2soZnVuY3Rpb24oKXtMLl9yZWFkKCl9KX0sV3JpdGVTdHJlYW06ZnVuY3Rpb24gQyh3LFMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEMpKXJldHVybiBuZXcgQyh3LFMpO2MuY2FsbCh0aGlzKSx0aGlzLnBhdGg9dyx0aGlzLmZkPW51'@; put 'bGwsdGhpcy53cml0YWJsZT0hMCx0aGlzLmZsYWdzPSJ3Iix0aGlzLmVuY29kaW5nPSJiaW5hcnkiLHRoaXMubW9kZT00MzgsdGhpcy5ieXRlc1dyaXR0ZW49MCxTPVN8fHt9O2Zvcih2YXIgTD1PYmplY3Qua2V5cyhTKSxSPTAseD1MLmxlbmd0aDtSPHg7UisrKXt2YXIgVT1MW1JdO3RoaXNb'@; put 'VV09U1tVXX1pZih2b2lkIDAhPT10aGlzLnN0YXJ0KXtpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMuc3RhcnQpdGhyb3cgVHlwZUVycm9yKCJzdGFydCBtdXN0IGJlIGEgTnVtYmVyIik7aWYodGhpcy5zdGFydDwwKXRocm93IG5ldyBFcnJvcigic3RhcnQgbXVzdCBiZSA+PSB6ZXJvIik7dGhp'@; put 'cy5wb3M9dGhpcy5zdGFydH10aGlzLmJ1c3k9ITEsdGhpcy5fcXVldWU9W10sbnVsbD09PXRoaXMuZmQmJih0aGlzLl9vcGVuPUEub3Blbix0aGlzLl9xdWV1ZS5wdXNoKFt0aGlzLl9vcGVuLHRoaXMucGF0aCx0aGlzLmZsYWdzLHRoaXMubW9kZSx2b2lkIDBdKSx0aGlzLmZsdXNoKCkpfX19'@; put 'fSw2OTEwNihmZSxqLGgpe3ZhciB5PWgoNjU2MDYpLGM9aCgxNzQ0OSkscz15LmN3ZCxBPW51bGwsdj15LmVudi5HUkFDRUZVTF9GU19QTEFURk9STXx8eS5wbGF0Zm9ybTt5LmN3ZD1mdW5jdGlvbigpe3JldHVybiBBfHwoQT1zLmNhbGwoeSkpLEF9O3RyeXt5LmN3ZCgpfWNhdGNoe31pZigi'@; put 'ZnVuY3Rpb24iPT10eXBlb2YgeS5jaGRpcil7dmFyIEM9eS5jaGRpcjt5LmNoZGlyPWZ1bmN0aW9uKFMpe0E9bnVsbCxDLmNhbGwoeSxTKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YoeS5jaGRpcixDKX1mZS5leHBvcnRzPWZ1bmN0aW9uIHcoUyl7ZnVu'@; put 'Y3Rpb24geChGKXtyZXR1cm4gRiYmZnVuY3Rpb24oVyxxLHJlKXtyZXR1cm4gRi5jYWxsKFMsVyxxLGZ1bmN0aW9uKG1lKXtZKG1lKSYmKG1lPW51bGwpLHJlJiZyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX19ZnVuY3Rpb24gVShGKXtyZXR1cm4gRiYmZnVuY3Rpb24oVyxxKXt0cnl7cmV0'@; put 'dXJuIEYuY2FsbChTLFcscSl9Y2F0Y2gocmUpe2lmKCFZKHJlKSl0aHJvdyByZX19fWZ1bmN0aW9uIEgoRil7cmV0dXJuIEYmJmZ1bmN0aW9uKFcscSxyZSxtZSl7cmV0dXJuIEYuY2FsbChTLFcscSxyZSxmdW5jdGlvbihDZSl7WShDZSkmJihDZT1udWxsKSxtZSYmbWUuYXBwbHkodGhpcyxh'@; put 'cmd1bWVudHMpfSl9fWZ1bmN0aW9uIFYoRil7cmV0dXJuIEYmJmZ1bmN0aW9uKFcscSxyZSl7dHJ5e3JldHVybiBGLmNhbGwoUyxXLHEscmUpfWNhdGNoKG1lKXtpZighWShtZSkpdGhyb3cgbWV9fX1mdW5jdGlvbiBOKEYpe3JldHVybiBGJiZmdW5jdGlvbihXLHEscmUpe2Z1bmN0aW9uIG1l'@; put 'KENlLEllKXtJZSYmKEllLnVpZDwwJiYoSWUudWlkKz00Mjk0OTY3Mjk2KSxJZS5naWQ8MCYmKEllLmdpZCs9NDI5NDk2NzI5NikpLHJlJiZyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHEmJihyZT1xLHE9bnVsbCkscT9GLmNhbGwoUyxXLHEsbWUp'@; put 'OkYuY2FsbChTLFcsbWUpfX1mdW5jdGlvbiB6KEYpe3JldHVybiBGJiZmdW5jdGlvbihXLHEpe3ZhciByZT1xP0YuY2FsbChTLFcscSk6Ri5jYWxsKFMsVyk7cmV0dXJuIHJlJiYocmUudWlkPDAmJihyZS51aWQrPTQyOTQ5NjcyOTYpLHJlLmdpZDwwJiYocmUuZ2lkKz00Mjk0OTY3Mjk2KSks'@; put 'cmV9fWZ1bmN0aW9uIFkoRil7cmV0dXJuIUZ8fCJFTk9TWVMiPT09Ri5jb2RlfHwhKHkuZ2V0dWlkJiYwPT09eS5nZXR1aWQoKXx8IkVJTlZBTCIhPT1GLmNvZGUmJiJFUEVSTSIhPT1GLmNvZGUpfWMuaGFzT3duUHJvcGVydHkoIk9fU1lNTElOSyIpJiZ5LnZlcnNpb24ubWF0Y2goL152MFwu'@; put 'NlwuWzAtMl18XnYwXC41XC4vKSYmZnVuY3Rpb24gTChGKXtGLmxjaG1vZD1mdW5jdGlvbihXLHEscmUpe0Yub3BlbihXLGMuT19XUk9OTFl8Yy5PX1NZTUxJTksscSxmdW5jdGlvbihtZSxDZSl7bWU/cmUmJnJlKG1lKTpGLmZjaG1vZChDZSxxLGZ1bmN0aW9uKEllKXtGLmNsb3NlKENlLGZ1'@; put 'bmN0aW9uKGtlKXtyZSYmcmUoSWV8fGtlKX0pfSl9KX0sRi5sY2htb2RTeW5jPWZ1bmN0aW9uKFcscSl7dmFyIENlLHJlPUYub3BlblN5bmMoVyxjLk9fV1JPTkxZfGMuT19TWU1MSU5LLHEpLG1lPSEwO3RyeXtDZT1GLmZjaG1vZFN5bmMocmUscSksbWU9ITF9ZmluYWxseXtpZihtZSl0cnl7'@; put 'Ri5jbG9zZVN5bmMocmUpfWNhdGNoe31lbHNlIEYuY2xvc2VTeW5jKHJlKX1yZXR1cm4gQ2V9fShTKSxTLmx1dGltZXN8fGZ1bmN0aW9uIFIoRil7Yy5oYXNPd25Qcm9wZXJ0eSgiT19TWU1MSU5LIikmJkYuZnV0aW1lcz8oRi5sdXRpbWVzPWZ1bmN0aW9uKFcscSxyZSxtZSl7Ri5vcGVuKFcs'@; put 'Yy5PX1NZTUxJTkssZnVuY3Rpb24oQ2UsSWUpe0NlP21lJiZtZShDZSk6Ri5mdXRpbWVzKEllLHEscmUsZnVuY3Rpb24oa2Upe0YuY2xvc2UoSWUsZnVuY3Rpb24ocWUpe21lJiZtZShrZXx8cWUpfSl9KX0pfSxGLmx1dGltZXNTeW5jPWZ1bmN0aW9uKFcscSxyZSl7dmFyIENlLG1lPUYub3Bl'@; put 'blN5bmMoVyxjLk9fU1lNTElOSyksSWU9ITA7dHJ5e0NlPUYuZnV0aW1lc1N5bmMobWUscSxyZSksSWU9ITF9ZmluYWxseXtpZihJZSl0cnl7Ri5jbG9zZVN5bmMobWUpfWNhdGNoe31lbHNlIEYuY2xvc2VTeW5jKG1lKX1yZXR1cm4gQ2V9KTpGLmZ1dGltZXMmJihGLmx1dGltZXM9ZnVuY3Rp'@; put 'b24oVyxxLHJlLG1lKXttZSYmeS5uZXh0VGljayhtZSl9LEYubHV0aW1lc1N5bmM9ZnVuY3Rpb24oKXt9KX0oUyksUy5jaG93bj1IKFMuY2hvd24pLFMuZmNob3duPUgoUy5mY2hvd24pLFMubGNob3duPUgoUy5sY2hvd24pLFMuY2htb2Q9eChTLmNobW9kKSxTLmZjaG1vZD14KFMuZmNobW9k'@; put 'KSxTLmxjaG1vZD14KFMubGNobW9kKSxTLmNob3duU3luYz1WKFMuY2hvd25TeW5jKSxTLmZjaG93blN5bmM9VihTLmZjaG93blN5bmMpLFMubGNob3duU3luYz1WKFMubGNob3duU3luYyksUy5jaG1vZFN5bmM9VShTLmNobW9kU3luYyksUy5mY2htb2RTeW5jPVUoUy5mY2htb2RTeW5jKSxT'@; put 'LmxjaG1vZFN5bmM9VShTLmxjaG1vZFN5bmMpLFMuc3RhdD1OKFMuc3RhdCksUy5mc3RhdD1OKFMuZnN0YXQpLFMubHN0YXQ9TihTLmxzdGF0KSxTLnN0YXRTeW5jPXooUy5zdGF0U3luYyksUy5mc3RhdFN5bmM9eihTLmZzdGF0U3luYyksUy5sc3RhdFN5bmM9eihTLmxzdGF0U3luYyksUy5j'@; put 'aG1vZCYmIVMubGNobW9kJiYoUy5sY2htb2Q9ZnVuY3Rpb24oRixXLHEpe3EmJnkubmV4dFRpY2socSl9LFMubGNobW9kU3luYz1mdW5jdGlvbigpe30pLFMuY2hvd24mJiFTLmxjaG93biYmKFMubGNob3duPWZ1bmN0aW9uKEYsVyxxLHJlKXtyZSYmeS5uZXh0VGljayhyZSl9LFMubGNob3du'@; put 'U3luYz1mdW5jdGlvbigpe30pLCJ3aW4zMiI9PT12JiYoUy5yZW5hbWU9ImZ1bmN0aW9uIiE9dHlwZW9mIFMucmVuYW1lP1MucmVuYW1lOmZ1bmN0aW9uKEYpe2Z1bmN0aW9uIFcocSxyZSxtZSl7dmFyIENlPURhdGUubm93KCksSWU9MDtGKHEscmUsZnVuY3Rpb24ga2UocWUpe2lmKHFlJiYo'@; put 'IkVBQ0NFUyI9PT1xZS5jb2RlfHwiRVBFUk0iPT09cWUuY29kZXx8IkVCVVNZIj09PXFlLmNvZGUpJiZEYXRlLm5vdygpLUNlPDZlNClyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1Muc3RhdChyZSxmdW5jdGlvbihYLGYpe1gmJiJFTk9FTlQiPT09WC5jb2RlP0YocSxyZSxrZSk6bWUo'@; put 'cWUpfSl9LEllKSx2b2lkKEllPDEwMCYmKEllKz0xMCkpO21lJiZtZShxZSl9KX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YoVyxGKSxXfShTLnJlbmFtZSkpLFMucmVhZD0iZnVuY3Rpb24iIT10eXBlb2YgUy5yZWFkP1MucmVhZDpmdW5jdGlv'@; put 'bihGKXtmdW5jdGlvbiBXKHEscmUsbWUsQ2UsSWUsa2Upe3ZhciBxZTtpZihrZSYmImZ1bmN0aW9uIj09dHlwZW9mIGtlKXt2YXIgWD0wO3FlPWZ1bmN0aW9uKGYsYixrKXtpZihmJiYiRUFHQUlOIj09PWYuY29kZSYmWDwxMClyZXR1cm4gWCsrLEYuY2FsbChTLHEscmUsbWUsQ2UsSWUscWUp'@; put 'O2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19cmV0dXJuIEYuY2FsbChTLHEscmUsbWUsQ2UsSWUscWUpfXJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YmJk9iamVjdC5zZXRQcm90b3R5cGVPZihXLEYpLFd9KFMucmVhZCksUy5yZWFkU3luYz0iZnVuY3Rpb24iIT10eXBlb2YgUy5yZWFk'@; put 'U3luYz9TLnJlYWRTeW5jOmZ1bmN0aW9uKEYpe3JldHVybiBmdW5jdGlvbihXLHEscmUsbWUsQ2Upe2Zvcih2YXIgSWU9MDs7KXRyeXtyZXR1cm4gRi5jYWxsKFMsVyxxLHJlLG1lLENlKX1jYXRjaChrZSl7aWYoIkVBR0FJTiI9PT1rZS5jb2RlJiZJZTwxMCl7SWUrKztjb250aW51ZX10aHJv'@; put 'dyBrZX19fShTLnJlYWRTeW5jKX19LDMwNTkyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMzA2NTUpLGM9ZnVuY3Rpb24oKXtyZXR1cm4hIXl9O2MuaGFzQXJyYXlMZW5ndGhEZWZpbmVCdWc9ZnVuY3Rpb24oKXtpZigheSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIDEhPT15KFtdLCJs'@; put 'ZW5ndGgiLHt2YWx1ZToxfSkubGVuZ3RofWNhdGNoe3JldHVybiEwfX0sZmUuZXhwb3J0cz1jfSw2NDAzOShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLGM9aCg0MTMzMyk7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9'@; put 'PXR5cGVvZiB5JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIHkoImZvbyIpJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbCgiYmFyIikmJmMoKX19LDQxMzMzKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5'@; put 'cGVvZiBTeW1ib2x8fCJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKCJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yKXJldHVybiEwO3ZhciBoPXt9LHk9U3ltYm9sKCJ0ZXN0IiksYz1PYmplY3QoeSk7aWYoInN0cmluZyI9'@; put 'PXR5cGVvZiB5fHwiW29iamVjdCBTeW1ib2xdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5KXx8IltvYmplY3QgU3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYykpcmV0dXJuITE7Zm9yKHZhciBBIGluIGhbeV09NDIsaClyZXR1cm4hMTtpZigi'@; put 'ZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXMmJjAhPT1PYmplY3Qua2V5cyhoKS5sZW5ndGh8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyYmMCE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGgpLmxlbmd0aClyZXR1cm4hMTt2YXIgdj1PYmpl'@; put 'Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGgpO2lmKDEhPT12Lmxlbmd0aHx8dlswXSE9PXl8fCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoaCx5KSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv'@; put 'cil7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHkpO2lmKDQyIT09Qy52YWx1ZXx8ITAhPT1DLmVudW1lcmFibGUpcmV0dXJuITF9cmV0dXJuITB9fSw0OTA5MihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQxMzMzKTtmZS5leHBvcnRzPWZ1bmN0aW9uKCl7'@; put 'cmV0dXJuIHkoKSYmISFTeW1ib2wudG9TdHJpbmdUYWd9fSw0NzI5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPWgoODgzMTApLlRyYW5zZm9ybTtmdW5jdGlvbiBBKFMpe2MuY2FsbCh0aGlzKSx0aGlzLl9ibG9jaz15LmFsbG9jVW5zYWZlKFMpLHRoaXMu'@; put 'X2Jsb2NrU2l6ZT1TLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9aCg1NjY5OCkoQSxjKSxBLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKFMsTCxSKXt2YXIgeD1udWxsO3RyeXt0aGlzLnVwZGF0ZShTLEwpfWNhdGNo'@; put 'KFUpe3g9VX1SKHgpfSxBLnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oUyl7dmFyIEw9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKFIpe0w9Un1TKEwpfTt2YXIgdj10eXBlb2YgVWludDhBcnJheTwidSIsQz10eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZ0eXBlb2Yg'@; put 'VWludDhBcnJheTwidSImJkFycmF5QnVmZmVyLmlzVmlldyYmKHkucHJvdG90eXBlIGluc3RhbmNlb2YgVWludDhBcnJheXx8eS5UWVBFRF9BUlJBWV9TVVBQT1JUKTtBLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oUyxMKXtpZih0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJE'@; put 'aWdlc3QgYWxyZWFkeSBjYWxsZWQiKTtTPWZ1bmN0aW9uIHcoUyxMKXtpZihTIGluc3RhbmNlb2YgeSlyZXR1cm4gUztpZigic3RyaW5nIj09dHlwZW9mIFMpcmV0dXJuIHkuZnJvbShTLEwpO2lmKEMmJkFycmF5QnVmZmVyLmlzVmlldyhTKSl7aWYoMD09PVMuYnl0ZUxlbmd0aClyZXR1cm4g'@; put 'eS5hbGxvYygwKTt2YXIgUj15LmZyb20oUy5idWZmZXIsUy5ieXRlT2Zmc2V0LFMuYnl0ZUxlbmd0aCk7aWYoUi5ieXRlTGVuZ3RoPT09Uy5ieXRlTGVuZ3RoKXJldHVybiBSfWlmKHYmJlMgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx5LmlzQnVmZmVyKFMpJiZTLmNvbnN0cnVjdG9yJiYiZnVu'@; put 'Y3Rpb24iPT10eXBlb2YgUy5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmUy5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihTKSlyZXR1cm4geS5mcm9tKFMpO3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZGF0YSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBhbiBpbnN0YW5jZSBvZiBC'@; put 'dWZmZXIsIFR5cGVkQXJyYXksIG9yIERhdGFWaWV3LicpfShTLEwpO2Zvcih2YXIgUj10aGlzLl9ibG9jayx4PTA7dGhpcy5fYmxvY2tPZmZzZXQrUy5sZW5ndGgteD49dGhpcy5fYmxvY2tTaXplOyl7Zm9yKHZhciBVPXRoaXMuX2Jsb2NrT2Zmc2V0O1U8dGhpcy5fYmxvY2tTaXplOylSW1Ur'@; put 'K109U1t4KytdO3RoaXMuX3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTB9Zm9yKDt4PFMubGVuZ3RoOylSW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPVNbeCsrXTtmb3IodmFyIEg9MCxWPTgqUy5sZW5ndGg7Vj4wOysrSCl0aGlzLl9sZW5ndGhbSF0rPVYsKFY9dGhpcy5fbGVuZ3RoW0hdLzQy'@; put 'OTQ5NjcyOTZ8MCk+MCYmKHRoaXMuX2xlbmd0aFtIXS09NDI5NDk2NzI5NipWKTtyZXR1cm4gdGhpc30sQS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sQS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9u'@; put 'KFMpe2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3RoaXMuX2ZpbmFsaXplZD0hMDt2YXIgTD10aGlzLl9kaWdlc3QoKTt2b2lkIDAhPT1TJiYoTD1MLnRvU3RyaW5nKFMpKSx0aGlzLl9ibG9jay5maWxsKDApLHRoaXMuX2Jsb2Nr'@; put 'T2Zmc2V0PTA7Zm9yKHZhciBSPTA7Ujw0OysrUil0aGlzLl9sZW5ndGhbUl09MDtyZXR1cm4gTH0sQS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50ZWQiKX0sZmUuZXhwb3J0cz1BfSw3Nzk1MihmZSxqLGgpe3Zh'@; put 'ciB5PWo7eS51dGlscz1oKDY3NDI2KSx5LmNvbW1vbj1oKDY2MTY2KSx5LnNoYT1oKDQ2MjI5KSx5LnJpcGVtZD1oKDQ2Nzg0KSx5LmhtYWM9aCgyODk0OCkseS5zaGExPXkuc2hhLnNoYTEseS5zaGEyNTY9eS5zaGEuc2hhMjU2LHkuc2hhMjI0PXkuc2hhLnNoYTIyNCx5LnNoYTM4ND15LnNo'@; put 'YS5zaGEzODQseS5zaGE1MTI9eS5zaGEuc2hhNTEyLHkucmlwZW1kMTYwPXkucmlwZW1kLnJpcGVtZDE2MH0sNjYxNjYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NzQyNiksYz1oKDQzMzQ5KTtmdW5jdGlvbiBzKCl7dGhpcy5wZW5kaW5nPW51bGwsdGhpcy5wZW5kaW5nVG90YWw9'@; put 'MCx0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZSx0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplLHRoaXMuaG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoLHRoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFk'@; put 'TGVuZ3RoLzgsdGhpcy5lbmRpYW49ImJpZyIsdGhpcy5fZGVsdGE4PXRoaXMuYmxvY2tTaXplLzgsdGhpcy5fZGVsdGEzMj10aGlzLmJsb2NrU2l6ZS8zMn1qLkJsb2NrSGFzaD1zLHMucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih2LEMpe2lmKHY9eS50b0FycmF5KHYsQyksdGhpcy5wZW5k'@; put 'aW5nPXRoaXMucGVuZGluZz90aGlzLnBlbmRpbmcuY29uY2F0KHYpOnYsdGhpcy5wZW5kaW5nVG90YWwrPXYubGVuZ3RoLHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7dmFyIHc9KHY9dGhpcy5wZW5kaW5nKS5sZW5ndGgldGhpcy5fZGVsdGE4O3RoaXMucGVuZGluZz12LnNs'@; put 'aWNlKHYubGVuZ3RoLXcsdi5sZW5ndGgpLDA9PT10aGlzLnBlbmRpbmcubGVuZ3RoJiYodGhpcy5wZW5kaW5nPW51bGwpLHY9eS5qb2luMzIodiwwLHYubGVuZ3RoLXcsdGhpcy5lbmRpYW4pO2Zvcih2YXIgUz0wO1M8di5sZW5ndGg7Uys9dGhpcy5fZGVsdGEzMil0aGlzLl91cGRhdGUodixT'@; put 'LFMrdGhpcy5fZGVsdGEzMil9cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpLGMobnVsbD09PXRoaXMucGVuZGluZyksdGhpcy5fZGlnZXN0KHYpfSxzLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKCl7dmFy'@; put 'IHY9dGhpcy5wZW5kaW5nVG90YWwsQz10aGlzLl9kZWx0YTgsdz1DLSh2K3RoaXMucGFkTGVuZ3RoKSVDLFM9bmV3IEFycmF5KHcrdGhpcy5wYWRMZW5ndGgpO1NbMF09MTI4O2Zvcih2YXIgTD0xO0w8dztMKyspU1tMXT0wO2lmKHY8PD0zLCJiaWciPT09dGhpcy5lbmRpYW4pe2Zvcih2YXIg'@; put 'Uj04O1I8dGhpcy5wYWRMZW5ndGg7UisrKVNbTCsrXT0wO1NbTCsrXT0wLFNbTCsrXT0wLFNbTCsrXT0wLFNbTCsrXT0wLFNbTCsrXT12Pj4+MjQmMjU1LFNbTCsrXT12Pj4+MTYmMjU1LFNbTCsrXT12Pj4+OCYyNTUsU1tMKytdPTI1NSZ2fWVsc2UgZm9yKFNbTCsrXT0yNTUmdixTW0wrK109'@; put 'dj4+PjgmMjU1LFNbTCsrXT12Pj4+MTYmMjU1LFNbTCsrXT12Pj4+MjQmMjU1LFNbTCsrXT0wLFNbTCsrXT0wLFNbTCsrXT0wLFNbTCsrXT0wLFI9ODtSPHRoaXMucGFkTGVuZ3RoO1IrKylTW0wrK109MDtyZXR1cm4gU319LDI4OTQ4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjc0'@; put 'MjYpLGM9aCg0MzM0OSk7ZnVuY3Rpb24gcyhBLHYsQyl7aWYoISh0aGlzIGluc3RhbmNlb2YgcykpcmV0dXJuIG5ldyBzKEEsdixDKTt0aGlzLkhhc2g9QSx0aGlzLmJsb2NrU2l6ZT1BLmJsb2NrU2l6ZS84LHRoaXMub3V0U2l6ZT1BLm91dFNpemUvOCx0aGlzLmlubmVyPW51bGwsdGhpcy5v'@; put 'dXRlcj1udWxsLHRoaXMuX2luaXQoeS50b0FycmF5KHYsQykpfWZlLmV4cG9ydHM9cyxzLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih2KXt2Lmxlbmd0aD50aGlzLmJsb2NrU2l6ZSYmKHY9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZSh2KS5kaWdlc3QoKSksYyh2Lmxlbmd0aDw9dGhpcy5ibG9j'@; put 'a1NpemUpO2Zvcih2YXIgQz12Lmxlbmd0aDtDPHRoaXMuYmxvY2tTaXplO0MrKyl2LnB1c2goMCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0MrKyl2W0NdXj01NDtmb3IodGhpcy5pbm5lcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKHYpLEM9MDtDPHYubGVuZ3RoO0MrKyl2W0NdXj0xMDY7dGhpcy5v'@; put 'dXRlcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKHYpfSxzLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odixDKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUodixDKSx0aGlzfSxzLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24odil7cmV0dXJuIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5u'@; put 'ZXIuZGlnZXN0KCkpLHRoaXMub3V0ZXIuZGlnZXN0KHYpfX0sNDY3ODQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NzQyNiksYz1oKDY2MTY2KSxzPXkucm90bDMyLEE9eS5zdW0zMix2PXkuc3VtMzJfMyxDPXkuc3VtMzJfNCx3PWMuQmxvY2tIYXNoO2Z1bmN0aW9uIFMoKXtpZigh'@; put 'KHRoaXMgaW5zdGFuY2VvZiBTKSlyZXR1cm4gbmV3IFM7dy5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuZW5kaWFuPSJsaXR0bGUifWZ1bmN0aW9uIEwoeixZLEYsVyl7cmV0dXJuIHo8PTE1P1le'@; put 'Rl5XOno8PTMxP1kmRnx+WSZXOno8PTQ3PyhZfH5GKV5XOno8PTYzP1kmV3xGJn5XOlleKEZ8flcpfWZ1bmN0aW9uIFIoeil7cmV0dXJuIHo8PTE1PzA6ejw9MzE/MTUxODUwMDI0OTp6PD00Nz8xODU5Nzc1MzkzOno8PTYzPzI0MDA5NTk3MDg6Mjg0MDg1MzgzOH1mdW5jdGlvbiB4KHope3Jl'@; put 'dHVybiB6PD0xNT8xMzUyODI5OTI2Ono8PTMxPzE1NDg2MDM2ODQ6ejw9NDc/MTgzNjA3MjY5MTp6PD02Mz8yMDUzOTk0MjE3OjB9eS5pbmhlcml0cyhTLHcpLGoucmlwZW1kMTYwPVMsUy5ibG9ja1NpemU9NTEyLFMub3V0U2l6ZT0xNjAsUy5obWFjU3RyZW5ndGg9MTkyLFMucGFkTGVuZ3Ro'@; put 'PTY0LFMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oWSxGKXtmb3IodmFyIFc9dGhpcy5oWzBdLHE9dGhpcy5oWzFdLHJlPXRoaXMuaFsyXSxtZT10aGlzLmhbM10sQ2U9dGhpcy5oWzRdLEllPVcsa2U9cSxxZT1yZSxYPW1lLGY9Q2UsYj0wO2I8ODA7YisrKXt2YXIgaz1BKHMoQyhXLEwo'@; put 'YixxLHJlLG1lKSxZW1VbYl0rRl0sUihiKSksVltiXSksQ2UpO1c9Q2UsQ2U9bWUsbWU9cyhyZSwxMCkscmU9cSxxPWssaz1BKHMoQyhJZSxMKDc5LWIsa2UscWUsWCksWVtIW2JdK0ZdLHgoYikpLE5bYl0pLGYpLEllPWYsZj1YLFg9cyhxZSwxMCkscWU9a2Usa2U9a31rPXYodGhpcy5oWzFd'@; put 'LHJlLFgpLHRoaXMuaFsxXT12KHRoaXMuaFsyXSxtZSxmKSx0aGlzLmhbMl09dih0aGlzLmhbM10sQ2UsSWUpLHRoaXMuaFszXT12KHRoaXMuaFs0XSxXLGtlKSx0aGlzLmhbNF09dih0aGlzLmhbMF0scSxxZSksdGhpcy5oWzBdPWt9LFMucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oWSl7'@; put 'cmV0dXJuImhleCI9PT1ZP3kudG9IZXgzMih0aGlzLmgsImxpdHRsZSIpOnkuc3BsaXQzMih0aGlzLmgsImxpdHRsZSIpfTt2YXIgVT1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5'@; put 'LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxIPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwx'@; put 'NCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLFY9WzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQs'@; put 'MTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEs'@; put 'OCw1LDZdLE49WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUs'@; put 'MTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdfSw0NjIyOShmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtqLnNoYTE9aCg0MzkxNyksai5zaGEyMjQ9aCg0NzcxNCksai5zaGEyNTY9aCgyMjg3KSxqLnNoYTM4ND1oKDIxOTExKSxqLnNoYTUxMj1oKDU3NzY2KX0sNDM5'@; put 'MTcoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NzQyNiksYz1oKDY2MTY2KSxzPWgoNjYyMjUpLEE9eS5yb3RsMzIsdj15LnN1bTMyLEM9eS5zdW0zMl81LHc9cy5mdF8xLFM9Yy5CbG9ja0hhc2gsTD1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml07'@; put 'ZnVuY3Rpb24gUigpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFIpKXJldHVybiBuZXcgUjtTLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdGhpcy5XPW5ldyBBcnJheSg4MCl9eS5pbmhlcml0cyhSLFMpLGZl'@; put 'LmV4cG9ydHM9UixSLmJsb2NrU2l6ZT01MTIsUi5vdXRTaXplPTE2MCxSLmhtYWNTdHJlbmd0aD04MCxSLnBhZExlbmd0aD02NCxSLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFUsSCl7Zm9yKHZhciBWPXRoaXMuVyxOPTA7TjwxNjtOKyspVltOXT1VW0grTl07Zm9yKDtOPFYubGVuZ3Ro'@; put 'O04rKylWW05dPUEoVltOLTNdXlZbTi04XV5WW04tMTRdXlZbTi0xNl0sMSk7dmFyIHo9dGhpcy5oWzBdLFk9dGhpcy5oWzFdLEY9dGhpcy5oWzJdLFc9dGhpcy5oWzNdLHE9dGhpcy5oWzRdO2ZvcihOPTA7TjxWLmxlbmd0aDtOKyspe3ZhciByZT1+fihOLzIwKSxtZT1DKEEoeiw1KSx3KHJl'@; put 'LFksRixXKSxxLFZbTl0sTFtyZV0pO3E9VyxXPUYsRj1BKFksMzApLFk9eix6PW1lfXRoaXMuaFswXT12KHRoaXMuaFswXSx6KSx0aGlzLmhbMV09dih0aGlzLmhbMV0sWSksdGhpcy5oWzJdPXYodGhpcy5oWzJdLEYpLHRoaXMuaFszXT12KHRoaXMuaFszXSxXKSx0aGlzLmhbNF09dih0aGlz'@; put 'LmhbNF0scSl9LFIucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVSl7cmV0dXJuImhleCI9PT1VP3kudG9IZXgzMih0aGlzLmgsImJpZyIpOnkuc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sNDc3MTQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NzQyNiksYz1oKDIyODcpO2Z1bmN0'@; put 'aW9uIHMoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBzKSlyZXR1cm4gbmV3IHM7Yy5jYWxsKHRoaXMpLHRoaXMuaD1bMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF19eS5pbmhlcml0cyhz'@; put 'LGMpLGZlLmV4cG9ydHM9cyxzLmJsb2NrU2l6ZT01MTIscy5vdXRTaXplPTIyNCxzLmhtYWNTdHJlbmd0aD0xOTIscy5wYWRMZW5ndGg9NjQscy5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbih2KXtyZXR1cm4iaGV4Ij09PXY/eS50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKTp5'@; put 'LnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpfX0sMjI4NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY3NDI2KSxjPWgoNjYxNjYpLHM9aCg2NjIyNSksQT1oKDQzMzQ5KSx2PXkuc3VtMzIsQz15LnN1bTMyXzQsdz15LnN1bTMyXzUsUz1zLmNoMzIsTD1zLm1hajMyLFI9'@; put 'cy5zMF8yNTYseD1zLnMxXzI1NixVPXMuZzBfMjU2LEg9cy5nMV8yNTYsVj1jLkJsb2NrSGFzaCxOPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQw'@; put 'MSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4'@; put 'MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4'@; put 'NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwx'@; put 'OTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO2Z1bmN0aW9uIHooKXtpZighKHRoaXMgaW5zdGFuY2VvZiB6KSlyZXR1cm4gbmV3IHo7Vi5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAz'@; put 'MzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLHRoaXMuaz1OLHRoaXMuVz1uZXcgQXJyYXkoNjQpfXkuaW5oZXJpdHMoeixWKSxmZS5leHBvcnRzPXosei5ibG9ja1NpemU9NTEyLHoub3V0U2l6'@; put 'ZT0yNTYsei5obWFjU3RyZW5ndGg9MTkyLHoucGFkTGVuZ3RoPTY0LHoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oRixXKXtmb3IodmFyIHE9dGhpcy5XLHJlPTA7cmU8MTY7cmUrKylxW3JlXT1GW1crcmVdO2Zvcig7cmU8cS5sZW5ndGg7cmUrKylxW3JlXT1DKEgocVtyZS0yXSkscVty'@; put 'ZS03XSxVKHFbcmUtMTVdKSxxW3JlLTE2XSk7dmFyIG1lPXRoaXMuaFswXSxDZT10aGlzLmhbMV0sSWU9dGhpcy5oWzJdLGtlPXRoaXMuaFszXSxxZT10aGlzLmhbNF0sWD10aGlzLmhbNV0sZj10aGlzLmhbNl0sYj10aGlzLmhbN107Zm9yKEEodGhpcy5rLmxlbmd0aD09PXEubGVuZ3RoKSxy'@; put 'ZT0wO3JlPHEubGVuZ3RoO3JlKyspe3ZhciBrPXcoYix4KHFlKSxTKHFlLFgsZiksdGhpcy5rW3JlXSxxW3JlXSksTT12KFIobWUpLEwobWUsQ2UsSWUpKTtiPWYsZj1YLFg9cWUscWU9dihrZSxrKSxrZT1JZSxJZT1DZSxDZT1tZSxtZT12KGssTSl9dGhpcy5oWzBdPXYodGhpcy5oWzBdLG1l'@; put 'KSx0aGlzLmhbMV09dih0aGlzLmhbMV0sQ2UpLHRoaXMuaFsyXT12KHRoaXMuaFsyXSxJZSksdGhpcy5oWzNdPXYodGhpcy5oWzNdLGtlKSx0aGlzLmhbNF09dih0aGlzLmhbNF0scWUpLHRoaXMuaFs1XT12KHRoaXMuaFs1XSxYKSx0aGlzLmhbNl09dih0aGlzLmhbNl0sZiksdGhpcy5oWzdd'@; put 'PXYodGhpcy5oWzddLGIpfSx6LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKEYpe3JldHVybiJoZXgiPT09Rj95LnRvSGV4MzIodGhpcy5oLCJiaWciKTp5LnNwbGl0MzIodGhpcy5oLCJiaWciKX19LDIxOTExKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjc0MjYpLGM9aCg1Nzc2'@; put 'Nik7ZnVuY3Rpb24gcygpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHMpKXJldHVybiBuZXcgcztjLmNhbGwodGhpcyksdGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQw'@; put 'NTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XX15LmluaGVyaXRzKHMsYyksZmUuZXhwb3J0cz1zLHMuYmxvY2tTaXplPTEwMjQscy5vdXRTaXplPTM4NCxzLmhtYWNTdHJlbmd0aD0xOTIscy5w'@; put 'YWRMZW5ndGg9MTI4LHMucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24odil7cmV0dXJuImhleCI9PT12P3kudG9IZXgzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpOnkuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpfX0sNTc3NjYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFy'@; put 'IHk9aCg2NzQyNiksYz1oKDY2MTY2KSxzPWgoNDMzNDkpLEE9eS5yb3RyNjRfaGksdj15LnJvdHI2NF9sbyxDPXkuc2hyNjRfaGksdz15LnNocjY0X2xvLFM9eS5zdW02NCxMPXkuc3VtNjRfaGksUj15LnN1bTY0X2xvLHg9eS5zdW02NF80X2hpLFU9eS5zdW02NF80X2xvLEg9eS5zdW02NF81'@; put 'X2hpLFY9eS5zdW02NF81X2xvLE49Yy5CbG9ja0hhc2gsej1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1'@; put 'LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5'@; put 'OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUw'@; put 'MTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcw'@; put 'MjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIz'@; put 'NDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2'@; put 'MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgw'@; put 'LDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQs'@; put 'NDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDEx'@; put 'ODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwx'@; put 'MTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdO2Z1bmN0aW9uIFkoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFk7Ti5jYWxs'@; put 'KHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMxNDQxMzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0'@; put 'NywxNTQxNDU5MjI1LDMyNzAzMzIwOV0sdGhpcy5rPXosdGhpcy5XPW5ldyBBcnJheSgxNjApfWZ1bmN0aW9uIEYoayxNLEIsSyxHKXt2YXIgRD1rJkJefmsmRztyZXR1cm4gRDwwJiYoRCs9NDI5NDk2NzI5NiksRH1mdW5jdGlvbiBXKGssTSxCLEssRyxEKXt2YXIgcD1NJktefk0mRDtyZXR1'@; put 'cm4gcDwwJiYocCs9NDI5NDk2NzI5NikscH1mdW5jdGlvbiBxKGssTSxCLEssRyl7dmFyIEQ9ayZCXmsmR15CJkc7cmV0dXJuIEQ8MCYmKEQrPTQyOTQ5NjcyOTYpLER9ZnVuY3Rpb24gcmUoayxNLEIsSyxHLEQpe3ZhciBwPU0mS15NJkReSyZEO3JldHVybiBwPDAmJihwKz00Mjk0OTY3Mjk2'@; put 'KSxwfWZ1bmN0aW9uIG1lKGssTSl7dmFyIEQ9QShrLE0sMjgpXkEoTSxrLDIpXkEoTSxrLDcpO3JldHVybiBEPDAmJihEKz00Mjk0OTY3Mjk2KSxEfWZ1bmN0aW9uIENlKGssTSl7dmFyIEQ9dihrLE0sMjgpXnYoTSxrLDIpXnYoTSxrLDcpO3JldHVybiBEPDAmJihEKz00Mjk0OTY3Mjk2KSxE'@; put 'fWZ1bmN0aW9uIEllKGssTSl7dmFyIEQ9QShrLE0sMTQpXkEoayxNLDE4KV5BKE0sayw5KTtyZXR1cm4gRDwwJiYoRCs9NDI5NDk2NzI5NiksRH1mdW5jdGlvbiBrZShrLE0pe3ZhciBEPXYoayxNLDE0KV52KGssTSwxOCledihNLGssOSk7cmV0dXJuIEQ8MCYmKEQrPTQyOTQ5NjcyOTYpLER9'@; put 'ZnVuY3Rpb24gcWUoayxNKXt2YXIgRD1BKGssTSwxKV5BKGssTSw4KV5DKGssTSw3KTtyZXR1cm4gRDwwJiYoRCs9NDI5NDk2NzI5NiksRH1mdW5jdGlvbiBYKGssTSl7dmFyIEQ9dihrLE0sMSledihrLE0sOCledyhrLE0sNyk7cmV0dXJuIEQ8MCYmKEQrPTQyOTQ5NjcyOTYpLER9ZnVuY3Rp'@; put 'b24gZihrLE0pe3ZhciBEPUEoayxNLDE5KV5BKE0saywyOSleQyhrLE0sNik7cmV0dXJuIEQ8MCYmKEQrPTQyOTQ5NjcyOTYpLER9ZnVuY3Rpb24gYihrLE0pe3ZhciBEPXYoayxNLDE5KV52KE0saywyOSledyhrLE0sNik7cmV0dXJuIEQ8MCYmKEQrPTQyOTQ5NjcyOTYpLER9eS5pbmhlcml0'@; put 'cyhZLE4pLGZlLmV4cG9ydHM9WSxZLmJsb2NrU2l6ZT0xMDI0LFkub3V0U2l6ZT01MTIsWS5obWFjU3RyZW5ndGg9MTkyLFkucGFkTGVuZ3RoPTEyOCxZLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrPWZ1bmN0aW9uKE0sQil7Zm9yKHZhciBLPXRoaXMuVyxHPTA7RzwzMjtHKyspS1tHXT1NW0Ir'@; put 'R107Zm9yKDtHPEsubGVuZ3RoO0crPTIpe3ZhciBEPWYoS1tHLTRdLEtbRy0zXSkscD1iKEtbRy00XSxLW0ctM10pLEk9S1tHLTE0XSx1ZT1LW0ctMTNdLG5lPXFlKEtbRy0zMF0sS1tHLTI5XSksX2U9WChLW0ctMzBdLEtbRy0yOV0pLFBlPUtbRy0zMl0sb3Q9S1tHLTMxXTtLW0ddPXgoRCxw'@; put 'LEksdWUsbmUsX2UsUGUsb3QpLEtbRysxXT1VKEQscCxJLHVlLG5lLF9lLFBlLG90KX19LFkucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTSxCKXt0aGlzLl9wcmVwYXJlQmxvY2soTSxCKTt2YXIgSz10aGlzLlcsRz10aGlzLmhbMF0sRD10aGlzLmhbMV0scD10aGlzLmhbMl0sST10aGlz'@; put 'LmhbM10sdWU9dGhpcy5oWzRdLG5lPXRoaXMuaFs1XSxfZT10aGlzLmhbNl0sUGU9dGhpcy5oWzddLG90PXRoaXMuaFs4XSxsdD10aGlzLmhbOV0sZHQ9dGhpcy5oWzEwXSxSZT10aGlzLmhbMTFdLGFlPXRoaXMuaFsxMl0seGU9dGhpcy5oWzEzXSxqZT10aGlzLmhbMTRdLEFlPXRoaXMuaFsx'@; put 'NV07cyh0aGlzLmsubGVuZ3RoPT09Sy5sZW5ndGgpO2Zvcih2YXIgRGU9MDtEZTxLLmxlbmd0aDtEZSs9Mil7dmFyIEZlPWplLGdlPUFlLGNlPUllKG90LGx0KSxoZT1rZShvdCxsdCksd2U9RihvdCwwLGR0LDAsYWUpLEplPVcoMCxsdCwwLFJlLDAseGUpLHR0PXRoaXMua1tEZV0sS2U9dGhp'@; put 'cy5rW0RlKzFdLCR0PUtbRGVdLFJ0PUtbRGUrMV0sTHQ9SChGZSxnZSxjZSxoZSx3ZSxKZSx0dCxLZSwkdCxSdCksR3Q9VihGZSxnZSxjZSxoZSx3ZSxKZSx0dCxLZSwkdCxSdCk7RmU9bWUoRyxEKSxnZT1DZShHLEQpLGNlPXEoRywwLHAsMCx1ZSksaGU9cmUoMCxELDAsSSwwLG5lKTt2YXIg'@; put 'Z3Q9TChGZSxnZSxjZSxoZSksWHQ9UihGZSxnZSxjZSxoZSk7amU9YWUsQWU9eGUsYWU9ZHQseGU9UmUsZHQ9b3QsUmU9bHQsb3Q9TChfZSxQZSxMdCxHdCksbHQ9UihQZSxQZSxMdCxHdCksX2U9dWUsUGU9bmUsdWU9cCxuZT1JLHA9RyxJPUQsRz1MKEx0LEd0LGd0LFh0KSxEPVIoTHQsR3Qs'@; put 'Z3QsWHQpfVModGhpcy5oLDAsRyxEKSxTKHRoaXMuaCwyLHAsSSksUyh0aGlzLmgsNCx1ZSxuZSksUyh0aGlzLmgsNixfZSxQZSksUyh0aGlzLmgsOCxvdCxsdCksUyh0aGlzLmgsMTAsZHQsUmUpLFModGhpcy5oLDEyLGFlLHhlKSxTKHRoaXMuaCwxNCxqZSxBZSl9LFkucHJvdG90eXBlLl9k'@; put 'aWdlc3Q9ZnVuY3Rpb24oTSl7cmV0dXJuImhleCI9PT1NP3kudG9IZXgzMih0aGlzLmgsImJpZyIpOnkuc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sNjYyMjUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIGM9aCg2NzQyNikucm90cjMyO2Z1bmN0aW9uIEEoeCxVLEgpe3JldHVybiB4JlVefngm'@; put 'SH1mdW5jdGlvbiB2KHgsVSxIKXtyZXR1cm4geCZVXngmSF5VJkh9ZnVuY3Rpb24gQyh4LFUsSCl7cmV0dXJuIHheVV5IfWouZnRfMT1mdW5jdGlvbiBzKHgsVSxILFYpe3JldHVybiAwPT09eD9BKFUsSCxWKToxPT09eHx8Mz09PXg/QyhVLEgsVik6Mj09PXg/dihVLEgsVik6dm9pZCAwfSxq'@; put 'LmNoMzI9QSxqLm1hajMyPXYsai5wMzI9QyxqLnMwXzI1Nj1mdW5jdGlvbiB3KHgpe3JldHVybiBjKHgsMileYyh4LDEzKV5jKHgsMjIpfSxqLnMxXzI1Nj1mdW5jdGlvbiBTKHgpe3JldHVybiBjKHgsNileYyh4LDExKV5jKHgsMjUpfSxqLmcwXzI1Nj1mdW5jdGlvbiBMKHgpe3JldHVybiBj'@; put 'KHgsNyleYyh4LDE4KV54Pj4+M30sai5nMV8yNTY9ZnVuY3Rpb24gUih4KXtyZXR1cm4gYyh4LDE3KV5jKHgsMTkpXng+Pj4xMH19LDY3NDI2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDMzNDkpLGM9aCg1NjY5OCk7ZnVuY3Rpb24gcyhiLGspe3JldHVybiEoNTUyOTYhPSg2NDUx'@; put 'MiZiLmNoYXJDb2RlQXQoaykpfHxrPDB8fGsrMT49Yi5sZW5ndGgpJiY1NjMyMD09KDY0NTEyJmIuY2hhckNvZGVBdChrKzEpKX1mdW5jdGlvbiBDKGIpe3JldHVybihiPj4+MjR8Yj4+PjgmNjUyODB8Yjw8OCYxNjcxMTY4MHwoMjU1JmIpPDwyNCk+Pj4wfWZ1bmN0aW9uIFMoYil7cmV0dXJu'@; put 'IDE9PT1iLmxlbmd0aD8iMCIrYjpifWZ1bmN0aW9uIEwoYil7cmV0dXJuIDc9PT1iLmxlbmd0aD8iMCIrYjo2PT09Yi5sZW5ndGg/IjAwIitiOjU9PT1iLmxlbmd0aD8iMDAwIitiOjQ9PT1iLmxlbmd0aD8iMDAwMCIrYjozPT09Yi5sZW5ndGg/IjAwMDAwIitiOjI9PT1iLmxlbmd0aD8iMDAw'@; put 'MDAwIitiOjE9PT1iLmxlbmd0aD8iMDAwMDAwMCIrYjpifWouaW5oZXJpdHM9YyxqLnRvQXJyYXk9ZnVuY3Rpb24gQShiLGspe2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGIuc2xpY2UoKTtpZighYilyZXR1cm5bXTt2YXIgTT1bXTtpZigic3RyaW5nIj09dHlwZW9mIGIpaWYoayl7aWYo'@; put 'ImhleCI9PT1rKWZvcigoYj1iLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpKS5sZW5ndGglMiE9MCYmKGI9IjAiK2IpLEs9MDtLPGIubGVuZ3RoO0srPTIpTS5wdXNoKHBhcnNlSW50KGJbS10rYltLKzFdLDE2KSl9ZWxzZSBmb3IodmFyIEI9MCxLPTA7SzxiLmxlbmd0aDtLKyspe3ZhciBH'@; put 'PWIuY2hhckNvZGVBdChLKTtHPDEyOD9NW0IrK109RzpHPDIwNDg/KE1bQisrXT1HPj42fDE5MixNW0IrK109NjMmR3wxMjgpOnMoYixLKT8oRz02NTUzNisoKDEwMjMmRyk8PDEwKSsoMTAyMyZiLmNoYXJDb2RlQXQoKytLKSksTVtCKytdPUc+PjE4fDI0MCxNW0IrK109Rz4+MTImNjN8MTI4'@; put 'LE1bQisrXT1HPj42JjYzfDEyOCxNW0IrK109NjMmR3wxMjgpOihNW0IrK109Rz4+MTJ8MjI0LE1bQisrXT1HPj42JjYzfDEyOCxNW0IrK109NjMmR3wxMjgpfWVsc2UgZm9yKEs9MDtLPGIubGVuZ3RoO0srKylNW0tdPTB8YltLXTtyZXR1cm4gTX0sai50b0hleD1mdW5jdGlvbiB2KGIpe2Zv'@; put 'cih2YXIgaz0iIixNPTA7TTxiLmxlbmd0aDtNKyspays9UyhiW01dLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGt9LGouaHRvbmw9QyxqLnRvSGV4MzI9ZnVuY3Rpb24gdyhiLGspe2Zvcih2YXIgTT0iIixCPTA7QjxiLmxlbmd0aDtCKyspe3ZhciBLPWJbQl07ImxpdHRsZSI9PT1rJiYoSz1DKEsp'@; put 'KSxNKz1MKEsudG9TdHJpbmcoMTYpKX1yZXR1cm4gTX0sai56ZXJvMj1TLGouemVybzg9TCxqLmpvaW4zMj1mdW5jdGlvbiBSKGIsayxNLEIpe3ZhciBLPU0tazt5KEslND09MCk7Zm9yKHZhciBHPW5ldyBBcnJheShLLzQpLEQ9MCxwPWs7RDxHLmxlbmd0aDtEKysscCs9NClHW0RdPSgiYmln'@; put 'Ij09PUI/YltwXTw8MjR8YltwKzFdPDwxNnxiW3ArMl08PDh8YltwKzNdOmJbcCszXTw8MjR8YltwKzJdPDwxNnxiW3ArMV08PDh8YltwXSk+Pj4wO3JldHVybiBHfSxqLnNwbGl0MzI9ZnVuY3Rpb24geChiLGspe2Zvcih2YXIgTT1uZXcgQXJyYXkoNCpiLmxlbmd0aCksQj0wLEs9MDtCPGIu'@; put 'bGVuZ3RoO0IrKyxLKz00KXt2YXIgRz1iW0JdOyJiaWciPT09az8oTVtLXT1HPj4+MjQsTVtLKzFdPUc+Pj4xNiYyNTUsTVtLKzJdPUc+Pj44JjI1NSxNW0srM109MjU1JkcpOihNW0srM109Rz4+PjI0LE1bSysyXT1HPj4+MTYmMjU1LE1bSysxXT1HPj4+OCYyNTUsTVtLXT0yNTUmRyl9cmV0'@; put 'dXJuIE19LGoucm90cjMyPWZ1bmN0aW9uIFUoYixrKXtyZXR1cm4gYj4+Pmt8Yjw8MzIta30sai5yb3RsMzI9ZnVuY3Rpb24gSChiLGspe3JldHVybiBiPDxrfGI+Pj4zMi1rfSxqLnN1bTMyPWZ1bmN0aW9uIFYoYixrKXtyZXR1cm4gYitrPj4+MH0sai5zdW0zMl8zPWZ1bmN0aW9uIE4oYixr'@; put 'LE0pe3JldHVybiBiK2srTT4+PjB9LGouc3VtMzJfND1mdW5jdGlvbiB6KGIsayxNLEIpe3JldHVybiBiK2srTStCPj4+MH0sai5zdW0zMl81PWZ1bmN0aW9uIFkoYixrLE0sQixLKXtyZXR1cm4gYitrK00rQitLPj4+MH0sai5zdW02ND1mdW5jdGlvbiBGKGIsayxNLEIpe3ZhciBEPUIrYltr'@; put 'KzFdPj4+MDtiW2tdPShEPEI/MTowKStNK2Jba10+Pj4wLGJbaysxXT1EfSxqLnN1bTY0X2hpPWZ1bmN0aW9uIFcoYixrLE0sQil7cmV0dXJuKGsrQj4+PjA8az8xOjApK2IrTT4+PjB9LGouc3VtNjRfbG89ZnVuY3Rpb24gcShiLGssTSxCKXtyZXR1cm4gaytCPj4+MH0sai5zdW02NF80X2hp'@; put 'PWZ1bmN0aW9uIHJlKGIsayxNLEIsSyxHLEQscCl7dmFyIEk9MCx1ZT1rO3JldHVybiBJKz0odWU9dWUrQj4+PjApPGs/MTowLEkrPSh1ZT11ZStHPj4+MCk8Rz8xOjAsYitNK0srRCsoSSs9KHVlPXVlK3A+Pj4wKTxwPzE6MCk+Pj4wfSxqLnN1bTY0XzRfbG89ZnVuY3Rpb24gbWUoYixrLE0s'@; put 'QixLLEcsRCxwKXtyZXR1cm4gaytCK0crcD4+PjB9LGouc3VtNjRfNV9oaT1mdW5jdGlvbiBDZShiLGssTSxCLEssRyxELHAsSSx1ZSl7dmFyIG5lPTAsX2U9aztyZXR1cm4gbmUrPShfZT1fZStCPj4+MCk8az8xOjAsbmUrPShfZT1fZStHPj4+MCk8Rz8xOjAsbmUrPShfZT1fZStwPj4+MCk8'@; put 'cD8xOjAsYitNK0srRCtJKyhuZSs9KF9lPV9lK3VlPj4+MCk8dWU/MTowKT4+PjB9LGouc3VtNjRfNV9sbz1mdW5jdGlvbiBJZShiLGssTSxCLEssRyxELHAsSSx1ZSl7cmV0dXJuIGsrQitHK3ArdWU+Pj4wfSxqLnJvdHI2NF9oaT1mdW5jdGlvbiBrZShiLGssTSl7cmV0dXJuKGs8PDMyLU18'@; put 'Yj4+Pk0pPj4+MH0sai5yb3RyNjRfbG89ZnVuY3Rpb24gcWUoYixrLE0pe3JldHVybihiPDwzMi1NfGs+Pj5NKT4+PjB9LGouc2hyNjRfaGk9ZnVuY3Rpb24gWChiLGssTSl7cmV0dXJuIGI+Pj5NfSxqLnNocjY0X2xvPWZ1bmN0aW9uIGYoYixrLE0pe3JldHVybihiPDwzMi1NfGs+Pj5NKT4+'@; put 'PjB9fSw5OTU3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLGM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxzPWgoNjY3NDMpO2ZlLmV4cG9ydHM9cy5jYWxsKHksYyl9LDMyNzIzKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgo'@; put 'Nzc5NTIpLGM9aCg2NDM2Nykscz1oKDQzMzQ5KTtmdW5jdGlvbiBBKHYpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEEpKXJldHVybiBuZXcgQSh2KTt0aGlzLmhhc2g9di5oYXNoLHRoaXMucHJlZFJlc2lzdD0hIXYucHJlZFJlc2lzdCx0aGlzLm91dExlbj10aGlzLmhhc2gub3V0U2l6ZSx0aGlz'@; put 'Lm1pbkVudHJvcHk9di5taW5FbnRyb3B5fHx0aGlzLmhhc2guaG1hY1N0cmVuZ3RoLHRoaXMuX3Jlc2VlZD1udWxsLHRoaXMucmVzZWVkSW50ZXJ2YWw9bnVsbCx0aGlzLks9bnVsbCx0aGlzLlY9bnVsbDt2YXIgQz1jLnRvQXJyYXkodi5lbnRyb3B5LHYuZW50cm9weUVuY3x8ImhleCIpLHc9'@; put 'Yy50b0FycmF5KHYubm9uY2Usdi5ub25jZUVuY3x8ImhleCIpLFM9Yy50b0FycmF5KHYucGVycyx2LnBlcnNFbmN8fCJoZXgiKTtzKEMubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMubWluRW50cm9weSsiIGJpdHMiKSx0'@; put 'aGlzLl9pbml0KEMsdyxTKX1mZS5leHBvcnRzPUEsQS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oQyx3LFMpe3ZhciBMPUMuY29uY2F0KHcpLmNvbmNhdChTKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBS'@; put 'PTA7Ujx0aGlzLlYubGVuZ3RoO1IrKyl0aGlzLktbUl09MCx0aGlzLlZbUl09MTt0aGlzLl91cGRhdGUoTCksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LEEucHJvdG90eXBlLl9obWFjPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB5LmhtYWModGhp'@; put 'cy5oYXNoLHRoaXMuSyl9LEEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oQyl7dmFyIHc9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO0MmJih3PXcudXBkYXRlKEMpKSx0aGlzLks9dy5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYp'@; put 'LmRpZ2VzdCgpLEMmJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShDKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0sQS5wcm90b3R5cGUucmVzZWVkPWZ1bmN0aW9uKEMsdyxTLEwpeyJz'@; put 'dHJpbmciIT10eXBlb2YgdyYmKEw9UyxTPXcsdz1udWxsKSxDPWMudG9BcnJheShDLHcpLFM9Yy50b0FycmF5KFMsTCkscyhDLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5f'@; put 'dXBkYXRlKEMuY29uY2F0KFN8fFtdKSksdGhpcy5fcmVzZWVkPTF9LEEucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKEMsdyxTLEwpe2lmKHRoaXMuX3Jlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcigiUmVzZWVkIGlzIHJlcXVpcmVkIik7InN0cmluZyIhPXR5'@; put 'cGVvZiB3JiYoTD1TLFM9dyx3PW51bGwpLFMmJihTPWMudG9BcnJheShTLEx8fCJoZXgiKSx0aGlzLl91cGRhdGUoUykpO2Zvcih2YXIgUj1bXTtSLmxlbmd0aDxDOyl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLFI9Ui5jb25jYXQodGhpcy5WKTt2YXIgeD1S'@; put 'LnNsaWNlKDAsQyk7cmV0dXJuIHRoaXMuX3VwZGF0ZShTKSx0aGlzLl9yZXNlZWQrKyxjLmVuY29kZSh4LHcpfX0sMjUxKGZlLGope2oucmVhZD1mdW5jdGlvbihoLHksYyxzLEEpe3ZhciB2LEMsdz04KkEtcy0xLFM9KDE8PHcpLTEsTD1TPj4xLFI9LTcseD1jP0EtMTowLFU9Yz8tMToxLEg9'@; put 'aFt5K3hdO2Zvcih4Kz1VLHY9SCYoMTw8LVIpLTEsSD4+PS1SLFIrPXc7Uj4wO3Y9MjU2KnYraFt5K3hdLHgrPVUsUi09OCk7Zm9yKEM9diYoMTw8LVIpLTEsdj4+PS1SLFIrPXM7Uj4wO0M9MjU2KkMraFt5K3hdLHgrPVUsUi09OCk7aWYoMD09PXYpdj0xLUw7ZWxzZXtpZih2PT09UylyZXR1'@; put 'cm4gQz9OYU46MS8wKihIPy0xOjEpO0MrPU1hdGgucG93KDIscyksdi09TH1yZXR1cm4oSD8tMToxKSpDKk1hdGgucG93KDIsdi1zKX0sai53cml0ZT1mdW5jdGlvbihoLHksYyxzLEEsdil7dmFyIEMsdyxTLEw9OCp2LUEtMSxSPSgxPDxMKS0xLHg9Uj4+MSxVPTIzPT09QT9NYXRoLnBvdygy'@; put 'LC0yNCktTWF0aC5wb3coMiwtNzcpOjAsSD1zPzA6di0xLFY9cz8xOi0xLE49eTwwfHwwPT09eSYmMS95PDA/MTowO2Zvcih5PU1hdGguYWJzKHkpLGlzTmFOKHkpfHx5PT09MS8wPyh3PWlzTmFOKHkpPzE6MCxDPVIpOihDPU1hdGguZmxvb3IoTWF0aC5sb2coeSkvTWF0aC5MTjIpLHkqKFM9'@; put 'TWF0aC5wb3coMiwtQykpPDEmJihDLS0sUyo9MiksKHkrPUMreD49MT9VL1M6VSpNYXRoLnBvdygyLDEteCkpKlM+PTImJihDKyssUy89MiksQyt4Pj1SPyh3PTAsQz1SKTpDK3g+PTE/KHc9KHkqUy0xKSpNYXRoLnBvdygyLEEpLEMrPXgpOih3PXkqTWF0aC5wb3coMix4LTEpKk1hdGgucG93'@; put 'KDIsQSksQz0wKSk7QT49ODtoW2MrSF09MjU1JncsSCs9Vix3Lz0yNTYsQS09OCk7Zm9yKEM9Qzw8QXx3LEwrPUE7TD4wO2hbYytIXT0yNTUmQyxIKz1WLEMvPTI1NixMLT04KTtoW2MrSC1WXXw9MTI4Kk59fSw1NjY5OChmZSl7ZmUuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0'@; put 'LmNyZWF0ZT9mdW5jdGlvbihoLHkpe3kmJihoLnN1cGVyXz15LGgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpoLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pKX06ZnVuY3Rpb24oaCx5KXtpZih5KXto'@; put 'LnN1cGVyXz15O3ZhciBjPWZ1bmN0aW9uKCl7fTtjLnByb3RvdHlwZT15LnByb3RvdHlwZSxoLnByb3RvdHlwZT1uZXcgYyxoLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ofX19LDQ3MjQ0KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDkwOTIpKCkscz1oKDM2NTU2KSgiT2JqZWN0LnBy'@; put 'b3RvdHlwZS50b1N0cmluZyIpLEE9ZnVuY3Rpb24oUyl7cmV0dXJuISh5JiZTJiYib2JqZWN0Ij09dHlwZW9mIFMmJlN5bWJvbC50b1N0cmluZ1RhZyBpbiBTKSYmIltvYmplY3QgQXJndW1lbnRzXSI9PT1zKFMpfSx2PWZ1bmN0aW9uKFMpe3JldHVybiEhQShTKXx8bnVsbCE9PVMmJiJvYmpl'@; put 'Y3QiPT10eXBlb2YgUyYmImxlbmd0aCJpbiBTJiYibnVtYmVyIj09dHlwZW9mIFMubGVuZ3RoJiZTLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIiE9PXMoUykmJiJjYWxsZWUiaW4gUyYmIltvYmplY3QgRnVuY3Rpb25dIj09PXMoUy5jYWxsZWUpfSxDPWZ1bmN0aW9uKCl7cmV0dXJuIEEo'@; put 'YXJndW1lbnRzKX0oKTtBLmlzTGVnYWN5QXJndW1lbnRzPXYsZmUuZXhwb3J0cz1DP0E6dn0sNjk2MDAoZmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgeSxjLGo9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLGg9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZudWxsIT09UmVmbGVjdCYmUmVmbGVj'@; put 'dC5hcHBseTtpZigiZnVuY3Rpb24iPT10eXBlb2YgaCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7eT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3Rocm93IGN9fSksYz17fSxoKGZ1bmN0aW9uKCl7dGhyb3cg'@; put 'NDJ9LG51bGwseSl9Y2F0Y2goWSl7WSE9PWMmJihoPW51bGwpfWVsc2UgaD1udWxsO3ZhciBzPS9eXHMqY2xhc3NcYi8sQT1mdW5jdGlvbihGKXt0cnl7dmFyIFc9ai5jYWxsKEYpO3JldHVybiBzLnRlc3QoVyl9Y2F0Y2h7cmV0dXJuITF9fSx2PWZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4hQShG'@; put 'KSYmKGouY2FsbChGKSwhMCl9Y2F0Y2h7cmV0dXJuITF9fSxDPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsSD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYhIVN5bWJvbC50b1N0cmluZ1RhZyxWPSEoMCBpblssXSksTj1mdW5jdGlvbigpe3JldHVybiExfTtpZigib2JqZWN0Ij09dHlw'@; put 'ZW9mIGRvY3VtZW50KXt2YXIgej1kb2N1bWVudC5hbGw7Qy5jYWxsKHopPT09Qy5jYWxsKGRvY3VtZW50LmFsbCkmJihOPWZ1bmN0aW9uKEYpe2lmKChWfHwhRikmJih0eXBlb2YgRj4idSJ8fCJvYmplY3QiPT10eXBlb2YgRikpdHJ5e3ZhciBXPUMuY2FsbChGKTtyZXR1cm4oIltvYmplY3Qg'@; put 'SFRNTEFsbENvbGxlY3Rpb25dIj09PVd8fCJbb2JqZWN0IEhUTUwgZG9jdW1lbnQuYWxsIGNsYXNzXSI9PT1XfHwiW29iamVjdCBIVE1MQ29sbGVjdGlvbl0iPT09V3x8IltvYmplY3QgT2JqZWN0XSI9PT1XKSYmbnVsbD09RigiIil9Y2F0Y2h7fXJldHVybiExfSl9ZmUuZXhwb3J0cz1oP2Z1'@; put 'bmN0aW9uKEYpe2lmKE4oRikpcmV0dXJuITA7aWYoIUZ8fCJmdW5jdGlvbiIhPXR5cGVvZiBGJiYib2JqZWN0IiE9dHlwZW9mIEYpcmV0dXJuITE7dHJ5e2goRixudWxsLHkpfWNhdGNoKFcpe2lmKFchPT1jKXJldHVybiExfXJldHVybiFBKEYpJiZ2KEYpfTpmdW5jdGlvbihGKXtpZihOKEYp'@; put 'KXJldHVybiEwO2lmKCFGfHwiZnVuY3Rpb24iIT10eXBlb2YgRiYmIm9iamVjdCIhPXR5cGVvZiBGKXJldHVybiExO2lmKEgpcmV0dXJuIHYoRik7aWYoQShGKSlyZXR1cm4hMTt2YXIgVz1DLmNhbGwoRik7cmV0dXJuISgiW29iamVjdCBGdW5jdGlvbl0iIT09VyYmIltvYmplY3QgR2VuZXJh'@; put 'dG9yRnVuY3Rpb25dIiE9PVcmJiEvXlxbb2JqZWN0IEhUTUwvLnRlc3QoVykpJiZ2KEYpfX0sNDgxODQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgzNjU1Nikscz1oKDk5NzIxKSgvXlxzKig/OmZ1bmN0aW9uKT9cKi8pLEE9aCg0OTA5MikoKSx2PWgoOTM2MjgpLEM9eSgiT2JqZWN0'@; put 'LnByb3RvdHlwZS50b1N0cmluZyIpLHc9eSgiRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nIiksUz1oKDY5Mjk0KS5jO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oUil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFIpcmV0dXJuITE7aWYocyh3KFIpKSlyZXR1cm4hMDtpZighQSlyZXR1cm4iW29iamVj'@; put 'dCBHZW5lcmF0b3JGdW5jdGlvbl0iPT09QyhSKTtpZighdilyZXR1cm4hMTt2YXIgVT1TKCk7cmV0dXJuIFUmJnYoUik9PT1VLnByb3RvdHlwZX19LDEzMDAzKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm4gaCE9aH19LDI0MTMzKGZlLGosaCl7InVzZSBz'@; put 'dHJpY3QiO3ZhciB5PWgoMTA0ODcpLGM9aCgzODQ1Mikscz1oKDEzMDAzKSxBPWgoNzY2NDIpLHY9aCg5MjQ2NCksQz15KEEoKSxOdW1iZXIpO2MoQyx7Z2V0UG9seWZpbGw6QSxpbXBsZW1lbnRhdGlvbjpzLHNoaW06dn0pLGZlLmV4cG9ydHM9Q30sNzY2NDIoZmUsaixoKXsidXNlIHN0cmlj'@; put 'dCI7dmFyIHk9aCgxMzAwMyk7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBOdW1iZXIuaXNOYU4mJk51bWJlci5pc05hTihOYU4pJiYhTnVtYmVyLmlzTmFOKCJhIik/TnVtYmVyLmlzTmFOOnl9fSw5MjQ2NChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDM4NDUyKSxjPWgoNzY2'@; put 'NDIpO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgQT1jKCk7cmV0dXJuIHkoTnVtYmVyLHtpc05hTjpBfSx7aXNOYU46ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLmlzTmFOIT09QX19KSxBfX0sMTQwMzUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHYseT1oKDM2NTU2KSxjPWgoNDkwOTIp'@; put 'KCkscz1oKDk5NTcpLEE9aCg3NTc5NSk7aWYoYyl7dmFyIEM9eSgiUmVnRXhwLnByb3RvdHlwZS5leGVjIiksdz17fSxTPWZ1bmN0aW9uKCl7dGhyb3cgd30sTD17dG9TdHJpbmc6Uyx2YWx1ZU9mOlN9OyJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlJiYoTFtTeW1ib2wudG9Q'@; put 'cmltaXRpdmVdPVMpLHY9ZnVuY3Rpb24oSCl7aWYoIUh8fCJvYmplY3QiIT10eXBlb2YgSClyZXR1cm4hMTt2YXIgVj1BKEgsImxhc3RJbmRleCIpO2lmKCFWfHwhcyhWLCJ2YWx1ZSIpKXJldHVybiExO3RyeXtDKEgsTCl9Y2F0Y2goeil7cmV0dXJuIHo9PT13fX19ZWxzZXt2YXIgUj15KCJP'@; put 'YmplY3QucHJvdG90eXBlLnRvU3RyaW5nIik7dj1mdW5jdGlvbihIKXtyZXR1cm4hKCFIfHwib2JqZWN0IiE9dHlwZW9mIEgmJiJmdW5jdGlvbiIhPXR5cGVvZiBIKSYmIltvYmplY3QgUmVnRXhwXSI9PT1SKEgpfX1mZS5leHBvcnRzPXZ9LDM1NjgwKGZlLGosaCl7InVzZSBzdHJpY3QiO3Zh'@; put 'ciB5PWgoMjU3NjcpO2ZlLmV4cG9ydHM9ZnVuY3Rpb24ocyl7cmV0dXJuISF5KHMpfX0sNjQ2MzQoZmUpe3ZhciBqPXt9LnRvU3RyaW5nO2ZlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oaCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09ai5jYWxsKGgpfX0sMjkwOShmZSxqLGgp'@; put 'e2xldCB5O3RyeXt5PWgoNjM3MzUpfWNhdGNoe3k9aCg4MTAwNil9Y29uc3QgYz1oKDQxMjM2KSx7c3RyaW5naWZ5OnMsc3RyaXBCb206QX09aCgxMTE0NCk7ZnVuY3Rpb24gQygpe3JldHVybihDPV9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKihILFY9e30peyJzdHJpbmciPT10eXBlb2Yg'@; put 'ViYmKFY9e2VuY29kaW5nOlZ9KTtjb25zdCBOPVYuZnN8fHksej0hKCJ0aHJvd3MiaW4gVil8fFYudGhyb3dzO2xldCBGLFk9eWllbGQgYy5mcm9tQ2FsbGJhY2soTi5yZWFkRmlsZSkoSCxWKTtZPUEoWSk7dHJ5e0Y9SlNPTi5wYXJzZShZLFY/Vi5yZXZpdmVyOm51bGwpfWNhdGNoKFcpe2lm'@; put 'KHopdGhyb3cgVy5tZXNzYWdlPWAke0h9OiAke1cubWVzc2FnZX1gLFc7cmV0dXJuIG51bGx9cmV0dXJuIEZ9KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNvbnN0IHc9Yy5mcm9tUHJvbWlzZShmdW5jdGlvbiB2KEgpe3JldHVybiBDLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO2Z1bmN0aW9u'@; put 'IFIoKXtyZXR1cm4oUj1fYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooSCxWLE49e30pe2NvbnN0IHo9Ti5mc3x8eSxZPXMoVixOKTt5aWVsZCBjLmZyb21DYWxsYmFjayh6LndyaXRlRmlsZSkoSCxZLE4pfSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jb25zdCB4PWMuZnJvbVByb21pc2Uo'@; put 'ZnVuY3Rpb24gTChILFYpe3JldHVybiBSLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO2ZlLmV4cG9ydHM9e3JlYWRGaWxlOncscmVhZEZpbGVTeW5jOmZ1bmN0aW9uIFMoSCxWPXt9KXsic3RyaW5nIj09dHlwZW9mIFYmJihWPXtlbmNvZGluZzpWfSk7Y29uc3QgTj1WLmZzfHx5LHo9ISgidGhy'@; put 'b3dzImluIFYpfHxWLnRocm93czt0cnl7bGV0IFk9Ti5yZWFkRmlsZVN5bmMoSCxWKTtyZXR1cm4gWT1BKFkpLEpTT04ucGFyc2UoWSxWLnJldml2ZXIpfWNhdGNoKFkpe2lmKHopdGhyb3cgWS5tZXNzYWdlPWAke0h9OiAke1kubWVzc2FnZX1gLFk7cmV0dXJuIG51bGx9fSx3cml0ZUZpbGU6'@; put 'eCx3cml0ZUZpbGVTeW5jOmZ1bmN0aW9uIFUoSCxWLE49e30pe2NvbnN0IHo9Ti5mc3x8eSxZPXMoVixOKTtyZXR1cm4gei53cml0ZUZpbGVTeW5jKEgsWSxOKX19fSwxMTE0NChmZSxqLGgpe3ZhciB5PWgoNDgyODcpLkJ1ZmZlcjtmZS5leHBvcnRzPXtzdHJpbmdpZnk6ZnVuY3Rpb24gYyhB'@; put 'LHtFT0w6dj0iXG4iLGZpbmFsRU9MOkM9ITAscmVwbGFjZXI6dz1udWxsLHNwYWNlczpTfT17fSl7Y29uc3QgTD1DP3Y6IiIsUj1KU09OLnN0cmluZ2lmeShBLHcsUyk7aWYodm9pZCAwPT09Uil0aHJvdyBuZXcgVHlwZUVycm9yKGBDb252ZXJ0aW5nICR7dHlwZW9mIEF9IHZhbHVlIHRvIEpT'@; put 'T04gaXMgbm90IHN1cHBvcnRlZGApO3JldHVybiBSLnJlcGxhY2UoL1xuL2csdikrTH0sc3RyaXBCb206ZnVuY3Rpb24gcyhBKXtyZXR1cm4geS5pc0J1ZmZlcihBKSYmKEE9QS50b1N0cmluZygidXRmOCIpKSxBLnJlcGxhY2UoL15cdUZFRkYvLCIiKX19fSw2NzY1KGZlLGosaCl7InVzZSBz'@; put 'dHJpY3QiO2Z1bmN0aW9uIHkodyl7dGhpcy5tZXNzYWdlPXd9aC5yKGopLGguZChqLHtJbnZhbGlkVG9rZW5FcnJvcjooKT0+QX0pLCh5LnByb3RvdHlwZT1uZXcgRXJyb3IpLm5hbWU9IkludmFsaWRDaGFyYWN0ZXJFcnJvciI7dmFyIGM9dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5hdG9i'@; put 'JiZ3aW5kb3cuYXRvYi5iaW5kKHdpbmRvdyl8fGZ1bmN0aW9uKHcpe3ZhciBTPVN0cmluZyh3KS5yZXBsYWNlKC89KyQvLCIiKTtpZihTLmxlbmd0aCU0PT0xKXRocm93IG5ldyB5KCInYXRvYicgZmFpbGVkOiBUaGUgc3RyaW5nIHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNv'@; put 'ZGVkLiIpO2Zvcih2YXIgTCxSLHg9MCxVPTAsSD0iIjtSPVMuY2hhckF0KFUrKyk7flImJihMPXglND82NCpMK1I6Uix4KyslNCk/SCs9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmTD4+KC0yKngmNikpOjApUj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJz'@; put 'dHV2d3h5ejAxMjM0NTY3ODkrLz0iLmluZGV4T2YoUik7cmV0dXJuIEh9O2Z1bmN0aW9uIEEodyl7dGhpcy5tZXNzYWdlPXd9KEEucHJvdG90eXBlPW5ldyBFcnJvcikubmFtZT0iSW52YWxpZFRva2VuRXJyb3IiLGguZChqLFsiZGVmYXVsdCIsMCxmdW5jdGlvbiB2KHcsUyl7aWYoInN0cmlu'@; put 'ZyIhPXR5cGVvZiB3KXRocm93IG5ldyBBKCJJbnZhbGlkIHRva2VuIHNwZWNpZmllZCIpO3ZhciBMPSEwPT09KFM9U3x8e30pLmhlYWRlcj8wOjE7dHJ5e3JldHVybiBKU09OLnBhcnNlKGZ1bmN0aW9uIHModyl7dmFyIFM9dy5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKTtz'@; put 'd2l0Y2goUy5sZW5ndGglNCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjpTKz0iPT0iO2JyZWFrO2Nhc2UgMzpTKz0iPSI7YnJlYWs7ZGVmYXVsdDp0aHJvdyJJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchIn10cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjKFMpLnJlcGxhY2UoLyguKS9nLGZ1'@; put 'bmN0aW9uKFIseCl7dmFyIFU9eC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBVLmxlbmd0aDwyJiYoVT0iMCIrVSksIiUiK1V9KSl9Y2F0Y2h7cmV0dXJuIGMoUyl9fSh3LnNwbGl0KCIuIilbTF0pKX1jYXRjaChSKXt0aHJvdyBuZXcgQSgiSW52YWxp'@; put 'ZCB0b2tlbiBzcGVjaWZpZWQ6ICIrUi5tZXNzYWdlKX19XSl9LDEwOTEyKGZlLGosaCl7dmFyIHk9MS8wLHM9L1tcXF4kLiorPygpW1xde318XS9nLEE9UmVnRXhwKHMuc291cmNlKSxDPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsdz0i'@; put 'b2JqZWN0Ij09dHlwZW9mIGguZyYmaC5nJiZoLmcuT2JqZWN0PT09T2JqZWN0JiZoLmd8fEN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksTD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFI9dy5TeW1ib2wseD1SP1IucHJvdG90eXBlOnZvaWQgMCxVPXg/eC50b1N0cmluZzp2b2lkIDA7'@; put 'ZmUuZXhwb3J0cz1mdW5jdGlvbiBZKEYpe3JldHVybihGPWZ1bmN0aW9uIHooRil7cmV0dXJuIG51bGw9PUY/IiI6ZnVuY3Rpb24gSChGKXtpZigic3RyaW5nIj09dHlwZW9mIEYpcmV0dXJuIEY7aWYoZnVuY3Rpb24gTihGKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIEZ8fGZ1bmN0aW9uIFYo'@; put 'Ril7cmV0dXJuISFGJiYib2JqZWN0Ij09dHlwZW9mIEZ9KEYpJiYiW29iamVjdCBTeW1ib2xdIj09TC5jYWxsKEYpfShGKSlyZXR1cm4gVT9VLmNhbGwoRik6IiI7dmFyIFc9RisiIjtyZXR1cm4iMCI9PVcmJjEvRj09LXk/Ii0wIjpXfShGKX0oRikpJiZBLnRlc3QoRik/Ri5yZXBsYWNlKHMs'@; put 'IlxcJCYiKTpGfX0sODc5MTQoZmUpe3ZhciB5PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZmUuZXhwb3J0cz1mdW5jdGlvbiBjKEEpe3JldHVybiEwPT09QXx8ITE9PT1BfHxmdW5jdGlvbiBzKEEpe3JldHVybiEhQSYmIm9iamVjdCI9PXR5cGVvZiBBfShBKSYmIltvYmplY3QgQm9vbGVh'@; put 'bl0iPT15LmNhbGwoQSl9fSw4MTQyKGZlLGosaCl7ZmU9aC5ubWQoZmUpO3ZhciBjPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIix2PTkwMDcxOTkyNTQ3NDA5OTEsQz0iW29iamVjdCBBcmd1bWVudHNdIix3PSJbb2JqZWN0IEFycmF5XSIsTD0iW29iamVjdCBCb29sZWFuXSIsUj0iW29i'@; put 'amVjdCBEYXRlXSIseD0iW29iamVjdCBFcnJvcl0iLFU9IltvYmplY3QgRnVuY3Rpb25dIixWPSJbb2JqZWN0IE1hcF0iLE49IltvYmplY3QgTnVtYmVyXSIsWT0iW29iamVjdCBPYmplY3RdIixGPSJbb2JqZWN0IFByb21pc2VdIixxPSJbb2JqZWN0IFJlZ0V4cF0iLHJlPSJbb2JqZWN0IFNl'@; put 'dF0iLG1lPSJbb2JqZWN0IFN0cmluZ10iLGtlPSJbb2JqZWN0IFdlYWtNYXBdIixxZT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLFg9IltvYmplY3QgRGF0YVZpZXddIix1ZT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxuZT0vXig/OjB8WzEtOV1cZCopJC8sX2U9e307X2VbIltvYmpl'@; put 'Y3QgRmxvYXQzMkFycmF5XSJdPV9lWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1fZVsiW29iamVjdCBJbnQ4QXJyYXldIl09X2VbIltvYmplY3QgSW50MTZBcnJheV0iXT1fZVsiW29iamVjdCBJbnQzMkFycmF5XSJdPV9lWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09X2VbIltvYmplY3QgVWlu'@; put 'dDhDbGFtcGVkQXJyYXldIl09X2VbIltvYmplY3QgVWludDE2QXJyYXldIl09X2VbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsX2VbQ109X2Vbd109X2VbcWVdPV9lW0xdPV9lW1hdPV9lW1JdPV9lW3hdPV9lW1VdPV9lW1ZdPV9lW05dPV9lW1ldPV9lW3FdPV9lW3JlXT1fZVttZV09X2Vb'@; put 'a2VdPSExO3ZhciBQZT0ib2JqZWN0Ij09dHlwZW9mIGguZyYmaC5nJiZoLmcuT2JqZWN0PT09T2JqZWN0JiZoLmcsb3Q9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixsdD1QZXx8b3R8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksZHQ9'@; put 'aiYmIWoubm9kZVR5cGUmJmosUmU9ZHQmJmZlJiYhZmUubm9kZVR5cGUmJmZlLGFlPVJlJiZSZS5leHBvcnRzPT09ZHQseGU9YWUmJlBlLnByb2Nlc3MsamU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHhlJiZ4ZS5iaW5kaW5nJiZ4ZS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2h7fX0oKSxBZT1qZSYm'@; put 'amUuaXNUeXBlZEFycmF5O2Z1bmN0aW9uIGdlKGNuLGlyKXtmb3IodmFyIGdpPS0xLHdvPW51bGw9PWNuPzA6Y24ubGVuZ3RoOysrZ2k8d287KWlmKGlyKGNuW2dpXSxnaSxjbikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gd2UoY24saXIpe3JldHVybiBjbi5oYXMoaXIpfWZ1bmN0aW9u'@; put 'IHR0KGNuKXt2YXIgaXI9LTEsZ2k9QXJyYXkoY24uc2l6ZSk7cmV0dXJuIGNuLmZvckVhY2goZnVuY3Rpb24od28sbHMpe2dpWysraXJdPVtscyx3b119KSxnaX1mdW5jdGlvbiAkdChjbil7dmFyIGlyPS0xLGdpPUFycmF5KGNuLnNpemUpO3JldHVybiBjbi5mb3JFYWNoKGZ1bmN0aW9uKHdv'@; put 'KXtnaVsrK2lyXT13b30pLGdpfXZhciBjbixSdD1BcnJheS5wcm90b3R5cGUsR3Q9T2JqZWN0LnByb3RvdHlwZSxndD1sdFsiX19jb3JlLWpzX3NoYXJlZF9fIl0sWHQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLExyPUd0Lmhhc093blByb3BlcnR5LGxuPShjbj0vW14uXSskLy5leGVj'@; put 'KGd0JiZndC5rZXlzJiZndC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrY246IiIsT249R3QudG9TdHJpbmcsUXI9UmVnRXhwKCJeIitYdC5jYWxsKExyKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChm'@; put 'dW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKSx0cj1hZT9sdC5CdWZmZXI6dm9pZCAwLEhuPWx0LlN5bWJvbCxPbz1sdC5VaW50OEFycmF5LHVyPUd0LnByb3BlcnR5SXNFbnVtZXJhYmxlLFpuPVJ0LnNwbGljZSxTbj1Ibj9Ibi50b1N0cmluZ1Rh'@; put 'Zzp2b2lkIDAseHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxUdD10cj90ci5pc0J1ZmZlcjp2b2lkIDAsQXI9ZnVuY3Rpb24gS2UoY24saXIpe3JldHVybiBmdW5jdGlvbihnaSl7cmV0dXJuIGNuKGlyKGdpKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLF9uPW0yKGx0LCJEYXRhVmll'@; put 'dyIpLFp0PW0yKGx0LCJNYXAiKSxObj1tMihsdCwiUHJvbWlzZSIpLHB0PW0yKGx0LCJTZXQiKSxwbj1tMihsdCwiV2Vha01hcCIpLE1pPW0yKE9iamVjdCwiY3JlYXRlIiksR2U9SmMoX24pLFV0PUpjKFp0KSx2cj1KYyhObikseHQ9SmMocHQpLEJ0PUpjKHBuKSx6bj1Ibj9Ibi5wcm90b3R5'@; put 'cGU6dm9pZCAwLEduPXpuP3puLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIHluKGNuKXt2YXIgaXI9LTEsZ2k9bnVsbD09Y24/MDpjbi5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2lyPGdpOyl7dmFyIHdvPWNuW2lyXTt0aGlzLnNldCh3b1swXSx3b1sxXSl9fWZ1bmN0aW9uIEJuKGNuKXt2'@; put 'YXIgaXI9LTEsZ2k9bnVsbD09Y24/MDpjbi5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2lyPGdpOyl7dmFyIHdvPWNuW2lyXTt0aGlzLnNldCh3b1swXSx3b1sxXSl9fWZ1bmN0aW9uIGNhKGNuKXt2YXIgaXI9LTEsZ2k9bnVsbD09Y24/MDpjbi5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsr'@; put 'K2lyPGdpOyl7dmFyIHdvPWNuW2lyXTt0aGlzLnNldCh3b1swXSx3b1sxXSl9fWZ1bmN0aW9uIHRhKGNuKXt2YXIgaXI9LTEsZ2k9bnVsbD09Y24/MDpjbi5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IGNhOysraXI8Z2k7KXRoaXMuYWRkKGNuW2lyXSl9ZnVuY3Rpb24gJGkoY24pe3Zh'@; put 'ciBpcj10aGlzLl9fZGF0YV9fPW5ldyBCbihjbik7dGhpcy5zaXplPWlyLnNpemV9ZnVuY3Rpb24gZGMoY24saXIpe2Zvcih2YXIgZ2k9Y24ubGVuZ3RoO2dpLS07KWlmKGdmKGNuW2dpXVswXSxpcikpcmV0dXJuIGdpO3JldHVybi0xfWZ1bmN0aW9uIGcyKGNuKXtyZXR1cm4gbnVsbD09Y24/'@; put 'dm9pZCAwPT09Y24/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOlNuJiZTbiBpbiBPYmplY3QoY24pP2Z1bmN0aW9uIGEwKGNuKXt2YXIgaXI9THIuY2FsbChjbixTbiksZ2k9Y25bU25dO3RyeXtjbltTbl09dm9pZCAwO3ZhciB3bz0hMH1jYXRjaHt9dmFyIGxzPU9uLmNh'@; put 'bGwoY24pO3JldHVybiB3byYmKGlyP2NuW1NuXT1naTpkZWxldGUgY25bU25dKSxsc30oY24pOmZ1bmN0aW9uIHdnKGNuKXtyZXR1cm4gT24uY2FsbChjbil9KGNuKX1mdW5jdGlvbiBMYyhjbil7cmV0dXJuIEpuKGNuKSYmZzIoY24pPT1DfWZ1bmN0aW9uIFVzKGNuLGlyLGdpLHdvLGxzKXty'@; put 'ZXR1cm4gY249PT1pcnx8KG51bGw9PWNufHxudWxsPT1pcnx8IUpuKGNuKSYmIUpuKGlyKT9jbiE9Y24mJmlyIT1pcjpmdW5jdGlvbiBzcChjbixpcixnaSx3byxscyxFcil7dmFyIHRjPURsKGNuKSxRYT1EbChpciksdWw9dGM/dzpVYShjbikscHM9UWE/dzpVYShpciksdHU9KHVsPXVsPT1D'@; put 'P1k6dWwpPT1ZLGdzPShwcz1wcz09Qz9ZOnBzKT09WSxPYz11bD09cHM7aWYoT2MmJkJ1KGNuKSl7aWYoIUJ1KGlyKSlyZXR1cm4hMTt0Yz0hMCx0dT0hMX1pZihPYyYmIXR1KXJldHVybiBFcnx8KEVyPW5ldyAkaSksdGN8fGNsKGNuKT95ZChjbixpcixnaSx3byxscyxFcik6ZnVuY3Rpb24g'@; put 'VW8oY24saXIsZ2ksd28sbHMsRXIsdGMpe3N3aXRjaChnaSl7Y2FzZSBYOmlmKGNuLmJ5dGVMZW5ndGghPWlyLmJ5dGVMZW5ndGh8fGNuLmJ5dGVPZmZzZXQhPWlyLmJ5dGVPZmZzZXQpcmV0dXJuITE7Y249Y24uYnVmZmVyLGlyPWlyLmJ1ZmZlcjtjYXNlIHFlOnJldHVybiEoY24uYnl0ZUxl'@; put 'bmd0aCE9aXIuYnl0ZUxlbmd0aHx8IUVyKG5ldyBPbyhjbiksbmV3IE9vKGlyKSkpO2Nhc2UgTDpjYXNlIFI6Y2FzZSBOOnJldHVybiBnZigrY24sK2lyKTtjYXNlIHg6cmV0dXJuIGNuLm5hbWU9PWlyLm5hbWUmJmNuLm1lc3NhZ2U9PWlyLm1lc3NhZ2U7Y2FzZSBxOmNhc2UgbWU6cmV0dXJu'@; put 'IGNuPT1pcisiIjtjYXNlIFY6dmFyIFFhPXR0O2Nhc2UgcmU6aWYoUWF8fChRYT0kdCksY24uc2l6ZSE9aXIuc2l6ZSYmISgxJndvKSlyZXR1cm4hMTt2YXIgcHM9dGMuZ2V0KGNuKTtpZihwcylyZXR1cm4gcHM9PWlyO3dvfD0yLHRjLnNldChjbixpcik7dmFyIHR1PXlkKFFhKGNuKSxRYShp'@; put 'ciksd28sbHMsRXIsdGMpO3JldHVybiB0Yy5kZWxldGUoY24pLHR1O2Nhc2UiW29iamVjdCBTeW1ib2xdIjppZihHbilyZXR1cm4gR24uY2FsbChjbik9PUduLmNhbGwoaXIpfXJldHVybiExfShjbixpcix1bCxnaSx3byxscyxFcik7aWYoISgxJmdpKSl7dmFyIExsPXR1JiZMci5jYWxsKGNu'@; put 'LCJfX3dyYXBwZWRfXyIpLEFoPWdzJiZMci5jYWxsKGlyLCJfX3dyYXBwZWRfXyIpO2lmKExsfHxBaCl7dmFyIEpoPUxsP2NuLnZhbHVlKCk6Y24sT2w9QWg/aXIudmFsdWUoKTppcjtyZXR1cm4gRXJ8fChFcj1uZXcgJGkpLGxzKEpoLE9sLGdpLHdvLEVyKX19cmV0dXJuISFPYyYmKEVyfHwo'@; put 'RXI9bmV3ICRpKSxmdW5jdGlvbiBmYShjbixpcixnaSx3byxscyxFcil7dmFyIHRjPTEmZ2ksUWE9VnIoY24pLHVsPVFhLmxlbmd0aDtpZih1bCE9VnIoaXIpLmxlbmd0aCYmIXRjKXJldHVybiExO2Zvcih2YXIgZ3M9dWw7Z3MtLTspe3ZhciBPYz1RYVtnc107aWYoISh0Yz9PYyBpbiBpcjpM'@; put 'ci5jYWxsKGlyLE9jKSkpcmV0dXJuITF9dmFyIExsPUVyLmdldChjbik7aWYoTGwmJkVyLmdldChpcikpcmV0dXJuIExsPT1pcjt2YXIgQWg9ITA7RXIuc2V0KGNuLGlyKSxFci5zZXQoaXIsY24pO2Zvcih2YXIgSmg9dGM7Kytnczx1bDspe3ZhciBPbD1jbltPYz1RYVtnc11dLEVjPWlyW09j'@; put 'XTtpZih3byl2YXIgRnI9dGM/d28oRWMsT2wsT2MsaXIsY24sRXIpOndvKE9sLEVjLE9jLGNuLGlyLEVyKTtpZighKHZvaWQgMD09PUZyP09sPT09RWN8fGxzKE9sLEVjLGdpLHdvLEVyKTpGcikpe0FoPSExO2JyZWFrfUpofHwoSmg9ImNvbnN0cnVjdG9yIj09T2MpfWlmKEFoJiYhSmgpe3Zh'@; put 'ciBJdT1jbi5jb25zdHJ1Y3RvcixNYz1pci5jb25zdHJ1Y3RvcjtJdSE9TWMmJiJjb25zdHJ1Y3RvciJpbiBjbiYmImNvbnN0cnVjdG9yImluIGlyJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBJdSYmSXUgaW5zdGFuY2VvZiBJdSYmImZ1bmN0aW9uIj09dHlwZW9mIE1jJiZNYyBpbnN0YW5jZW9m'@; put 'IE1jKSYmKEFoPSExKX1yZXR1cm4gRXIuZGVsZXRlKGNuKSxFci5kZWxldGUoaXIpLEFofShjbixpcixnaSx3byxscyxFcikpfShjbixpcixnaSx3byxVcyxscykpfWZ1bmN0aW9uIHlkKGNuLGlyLGdpLHdvLGxzLEVyKXt2YXIgdGM9MSZnaSxRYT1jbi5sZW5ndGgsdWw9aXIubGVuZ3RoO2lm'@; put 'KFFhIT11bCYmISh0YyYmdWw+UWEpKXJldHVybiExO3ZhciBwcz1Fci5nZXQoY24pO2lmKHBzJiZFci5nZXQoaXIpKXJldHVybiBwcz09aXI7dmFyIHR1PS0xLGdzPSEwLE9jPTImZ2k/bmV3IHRhOnZvaWQgMDtmb3IoRXIuc2V0KGNuLGlyKSxFci5zZXQoaXIsY24pOysrdHU8UWE7KXt2YXIg'@; put 'TGw9Y25bdHVdLEFoPWlyW3R1XTtpZih3byl2YXIgSmg9dGM/d28oQWgsTGwsdHUsaXIsY24sRXIpOndvKExsLEFoLHR1LGNuLGlyLEVyKTtpZih2b2lkIDAhPT1KaCl7aWYoSmgpY29udGludWU7Z3M9ITE7YnJlYWt9aWYoT2Mpe2lmKCFnZShpcixmdW5jdGlvbihPbCxFYyl7aWYoIXdlKE9j'@; put 'LEVjKSYmKExsPT09T2x8fGxzKExsLE9sLGdpLHdvLEVyKSkpcmV0dXJuIE9jLnB1c2goRWMpfSkpe2dzPSExO2JyZWFrfX1lbHNlIGlmKExsIT09QWgmJiFscyhMbCxBaCxnaSx3byxFcikpe2dzPSExO2JyZWFrfX1yZXR1cm4gRXIuZGVsZXRlKGNuKSxFci5kZWxldGUoaXIpLGdzfWZ1bmN0'@; put 'aW9uIFZyKGNuKXtyZXR1cm4gZnVuY3Rpb24gSWwoY24saXIsZ2kpe3ZhciB3bz1pcihjbik7cmV0dXJuIERsKGNuKT93bzpmdW5jdGlvbiBGZShjbixpcil7Zm9yKHZhciBnaT0tMSx3bz1pci5sZW5ndGgsbHM9Y24ubGVuZ3RoOysrZ2k8d287KWNuW2xzK2dpXT1pcltnaV07cmV0dXJuIGNu'@; put 'fSh3byxnaShjbikpfShjbixtaSxiZyl9ZnVuY3Rpb24gUWMoY24saXIpe3ZhciBnaT1jbi5fX2RhdGFfXztyZXR1cm4gZnVuY3Rpb24gTG0oY24pe3ZhciBpcj10eXBlb2YgY247cmV0dXJuInN0cmluZyI9PWlyfHwibnVtYmVyIj09aXJ8fCJzeW1ib2wiPT1pcnx8ImJvb2xlYW4iPT1pcj8i'@; put 'X19wcm90b19fIiE9PWNuOm51bGw9PT1jbn0oaXIpP2dpWyJzdHJpbmciPT10eXBlb2YgaXI/InN0cmluZyI6Imhhc2giXTpnaS5tYXB9ZnVuY3Rpb24gbTIoY24saXIpe3ZhciBnaT1mdW5jdGlvbiBKZShjbixpcil7cmV0dXJuIGNuPy5baXJdfShjbixpcik7cmV0dXJuIGZ1bmN0aW9uIFJz'@; put 'KGNuKXtyZXR1cm4hKCFlZChjbil8fGZ1bmN0aW9uIHUzKGNuKXtyZXR1cm4hIWxuJiZsbiBpbiBjbn0oY24pKSYmKFJ1KGNuKT9Rcjp1ZSkudGVzdChKYyhjbikpfShnaSk/Z2k6dm9pZCAwfXluLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiB2aSgpe3RoaXMuX19kYXRhX189TWk/TWkobnVs'@; put 'bCk6e30sdGhpcy5zaXplPTB9LHluLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gcnIoY24pe3ZhciBpcj10aGlzLmhhcyhjbikmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW2NuXTtyZXR1cm4gdGhpcy5zaXplLT1pcj8xOjAsaXJ9LHluLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gaHIoY24pe3Zh'@; put 'ciBpcj10aGlzLl9fZGF0YV9fO2lmKE1pKXt2YXIgZ2k9aXJbY25dO3JldHVybiBnaT09PWM/dm9pZCAwOmdpfXJldHVybiBMci5jYWxsKGlyLGNuKT9pcltjbl06dm9pZCAwfSx5bi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIHBvKGNuKXt2YXIgaXI9dGhpcy5fX2RhdGFfXztyZXR1cm4gTWk/'@; put 'dm9pZCAwIT09aXJbY25dOkxyLmNhbGwoaXIsY24pfSx5bi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIHZuKGNuLGlyKXt2YXIgZ2k9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhjbik/MDoxLGdpW2NuXT1NaSYmdm9pZCAwPT09aXI/Yzppcix0aGlzfSxCbi5wcm90'@; put 'b3R5cGUuY2xlYXI9ZnVuY3Rpb24gamEoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxCbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGpvKGNuKXt2YXIgaXI9dGhpcy5fX2RhdGFfXyxnaT1kYyhpcixjbik7cmV0dXJuIShnaTwwfHwoZ2k9PWlyLmxlbmd0aC0xP2lyLnBvcCgp'@; put 'OlpuLmNhbGwoaXIsZ2ksMSksLS10aGlzLnNpemUsMCkpfSxCbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIFhyKGNuKXt2YXIgaXI9dGhpcy5fX2RhdGFfXyxnaT1kYyhpcixjbik7cmV0dXJuIGdpPDA/dm9pZCAwOmlyW2dpXVsxXX0sQm4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBlYShjbil7'@; put 'cmV0dXJuIGRjKHRoaXMuX19kYXRhX18sY24pPi0xfSxCbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIHJhKGNuLGlyKXt2YXIgZ2k9dGhpcy5fX2RhdGFfXyx3bz1kYyhnaSxjbik7cmV0dXJuIHdvPDA/KCsrdGhpcy5zaXplLGdpLnB1c2goW2NuLGlyXSkpOmdpW3dvXVsxXT1pcix0aGlzfSxj'@; put 'YS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gQ2koKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyB5bixtYXA6bmV3KFp0fHxCbiksc3RyaW5nOm5ldyB5bn19LGNhLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gaG8oY24pe3ZhciBpcj1RYyh0aGlzLGNuKS5kZWxldGUo'@; put 'Y24pO3JldHVybiB0aGlzLnNpemUtPWlyPzE6MCxpcn0sY2EucHJvdG90eXBlLmdldD1mdW5jdGlvbiBNYShjbil7cmV0dXJuIFFjKHRoaXMsY24pLmdldChjbil9LGNhLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24ga3MoY24pe3JldHVybiBRYyh0aGlzLGNuKS5oYXMoY24pfSxjYS5wcm90b3R5'@; put 'cGUuc2V0PWZ1bmN0aW9uIEJpKGNuLGlyKXt2YXIgZ2k9UWModGhpcyxjbiksd289Z2kuc2l6ZTtyZXR1cm4gZ2kuc2V0KGNuLGlyKSx0aGlzLnNpemUrPWdpLnNpemU9PXdvPzA6MSx0aGlzfSx0YS5wcm90b3R5cGUuYWRkPXRhLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uIE1yKGNuKXtyZXR1'@; put 'cm4gdGhpcy5fX2RhdGFfXy5zZXQoY24sYyksdGhpc30sdGEucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBGcyhjbil7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGNuKX0sJGkucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIF9zKCl7dGhpcy5fX2RhdGFfXz1uZXcgQm4sdGhpcy5zaXplPTB9LCRp'@; put 'LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24ganMoY24pe3ZhciBpcj10aGlzLl9fZGF0YV9fLGdpPWlyLmRlbGV0ZShjbik7cmV0dXJuIHRoaXMuc2l6ZT1pci5zaXplLGdpfSwkaS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIENsKGNuKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoY24pfSwk'@; put 'aS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFRpKGNuKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoY24pfSwkaS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIFduKGNuLGlyKXt2YXIgZ2k9dGhpcy5fX2RhdGFfXztpZihnaSBpbnN0YW5jZW9mIEJuKXt2YXIgd289Z2kuX19kYXRhX187aWYoIVp0'@; put 'fHx3by5sZW5ndGg8MTk5KXJldHVybiB3by5wdXNoKFtjbixpcl0pLHRoaXMuc2l6ZT0rK2dpLnNpemUsdGhpcztnaT10aGlzLl9fZGF0YV9fPW5ldyBjYSh3byl9cmV0dXJuIGdpLnNldChjbixpciksdGhpcy5zaXplPWdpLnNpemUsdGhpc307dmFyIGJnPXhyP2Z1bmN0aW9uKGNuKXtyZXR1'@; put 'cm4gbnVsbD09Y24/W106KGNuPU9iamVjdChjbiksZnVuY3Rpb24gRGUoY24saXIpe2Zvcih2YXIgZ2k9LTEsd289bnVsbD09Y24/MDpjbi5sZW5ndGgsbHM9MCxFcj1bXTsrK2dpPHdvOyl7dmFyIHRjPWNuW2dpXTtpcih0YyxnaSxjbikmJihFcltscysrXT10Yyl9cmV0dXJuIEVyfSh4cihj'@; put 'biksZnVuY3Rpb24oaXIpe3JldHVybiB1ci5jYWxsKGNuLGlyKX0pKX06ZnVuY3Rpb24gZXUoKXtyZXR1cm5bXX0sVWE9ZzI7ZnVuY3Rpb24gVnUoY24saXIpe3JldHVybiEhKGlyPWlyPz92KSYmKCJudW1iZXIiPT10eXBlb2YgY258fG5lLnRlc3QoY24pKSYmY24+LTEmJmNuJTE9PTAmJmNu'@; put 'PGlyfWZ1bmN0aW9uIEpjKGNuKXtpZihudWxsIT1jbil7dHJ5e3JldHVybiBYdC5jYWxsKGNuKX1jYXRjaHt9dHJ5e3JldHVybiBjbisiIn1jYXRjaHt9fXJldHVybiIifWZ1bmN0aW9uIGdmKGNuLGlyKXtyZXR1cm4gY249PT1pcnx8Y24hPWNuJiZpciE9aXJ9KF9uJiZVYShuZXcgX24obmV3'@; put 'IEFycmF5QnVmZmVyKDEpKSkhPVh8fFp0JiZVYShuZXcgWnQpIT1WfHxObiYmVWEoTm4ucmVzb2x2ZSgpKSE9Rnx8cHQmJlVhKG5ldyBwdCkhPXJlfHxwbiYmVWEobmV3IHBuKSE9a2UpJiYoVWE9ZnVuY3Rpb24oY24pe3ZhciBpcj1nMihjbiksZ2k9aXI9PVk/Y24uY29uc3RydWN0b3I6dm9p'@; put 'ZCAwLHdvPWdpP0pjKGdpKToiIjtpZih3bylzd2l0Y2god28pe2Nhc2UgR2U6cmV0dXJuIFg7Y2FzZSBVdDpyZXR1cm4gVjtjYXNlIHZyOnJldHVybiBGO2Nhc2UgeHQ6cmV0dXJuIHJlO2Nhc2UgQnQ6cmV0dXJuIGtlfXJldHVybiBpcn0pO3ZhciBscD1MYyhmdW5jdGlvbigpe3JldHVybiBh'@; put 'cmd1bWVudHN9KCkpP0xjOmZ1bmN0aW9uKGNuKXtyZXR1cm4gSm4oY24pJiZMci5jYWxsKGNuLCJjYWxsZWUiKSYmIXVyLmNhbGwoY24sImNhbGxlZSIpfSxEbD1BcnJheS5pc0FycmF5LEJ1PVR0fHxmdW5jdGlvbiBTbCgpe3JldHVybiExfTtmdW5jdGlvbiBSdShjbil7aWYoIWVkKGNuKSly'@; put 'ZXR1cm4hMTt2YXIgaXI9ZzIoY24pO3JldHVybiBpcj09VXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09aXJ8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09aXJ8fCJbb2JqZWN0IFByb3h5XSI9PWlyfWZ1bmN0aW9uIGhjKGNuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGNuJiZj'@; put 'bj4tMSYmY24lMT09MCYmY248PXZ9ZnVuY3Rpb24gZWQoY24pe3ZhciBpcj10eXBlb2YgY247cmV0dXJuIG51bGwhPWNuJiYoIm9iamVjdCI9PWlyfHwiZnVuY3Rpb24iPT1pcil9ZnVuY3Rpb24gSm4oY24pe3JldHVybiBudWxsIT1jbiYmIm9iamVjdCI9PXR5cGVvZiBjbn12YXIgY2w9QWU/'@; put 'ZnVuY3Rpb24gaGUoY24pe3JldHVybiBmdW5jdGlvbihpcil7cmV0dXJuIGNuKGlyKX19KEFlKTpmdW5jdGlvbiBMMChjbil7cmV0dXJuIEpuKGNuKSYmaGMoY24ubGVuZ3RoKSYmISFfZVtnMihjbildfTtmdW5jdGlvbiBtaShjbil7cmV0dXJuIGZ1bmN0aW9uIEVvKGNuKXtyZXR1cm4gbnVs'@; put 'bCE9Y24mJmhjKGNuLmxlbmd0aCkmJiFSdShjbil9KGNuKT9mdW5jdGlvbiBRaChjbixpcil7dmFyIGdpPURsKGNuKSx3bz0hZ2kmJmxwKGNuKSxscz0hZ2kmJiF3byYmQnUoY24pLEVyPSFnaSYmIXdvJiYhbHMmJmNsKGNuKSx0Yz1naXx8d298fGxzfHxFcixRYT10Yz9mdW5jdGlvbiBjZShj'@; put 'bixpcil7Zm9yKHZhciBnaT0tMSx3bz1BcnJheShjbik7KytnaTxjbjspd29bZ2ldPWlyKGdpKTtyZXR1cm4gd299KGNuLmxlbmd0aCxTdHJpbmcpOltdLHVsPVFhLmxlbmd0aDtmb3IodmFyIHBzIGluIGNuKShpcnx8THIuY2FsbChjbixwcykpJiYoIXRjfHwhKCJsZW5ndGgiPT1wc3x8bHMm'@; put 'Jigib2Zmc2V0Ij09cHN8fCJwYXJlbnQiPT1wcyl8fEVyJiYoImJ1ZmZlciI9PXBzfHwiYnl0ZUxlbmd0aCI9PXBzfHwiYnl0ZU9mZnNldCI9PXBzKXx8VnUocHMsdWwpKSkmJlFhLnB1c2gocHMpO3JldHVybiBRYX0oY24pOmZ1bmN0aW9uIEp1KGNuKXtpZighZnVuY3Rpb24gbmgoY24pe3Zh'@; put 'ciBpcj1jbiYmY24uY29uc3RydWN0b3I7cmV0dXJuIGNuPT09KCJmdW5jdGlvbiI9PXR5cGVvZiBpciYmaXIucHJvdG90eXBlfHxHdCl9KGNuKSlyZXR1cm4gQXIoY24pO3ZhciBpcj1bXTtmb3IodmFyIGdpIGluIE9iamVjdChjbikpTHIuY2FsbChjbixnaSkmJiJjb25zdHJ1Y3RvciIhPWdp'@; put 'JiZpci5wdXNoKGdpKTtyZXR1cm4gaXJ9KGNuKX1mZS5leHBvcnRzPWZ1bmN0aW9uIE4xKGNuLGlyKXtyZXR1cm4gVXMoY24saXIpfX0sODU3MTAoZmUsaixoKXt2YXIgUz0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLEw9Im9iamVjdCI9'@; put 'PXR5cGVvZiBoLmcmJmguZyYmaC5nLk9iamVjdD09PU9iamVjdCYmaC5nfHxTfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLFI9T2JqZWN0LnByb3RvdHlwZSx4PVIuaGFzT3duUHJvcGVydHksVT1SLnRvU3RyaW5nLEg9TC5TeW1ib2wsVj1IP0gudG9TdHJpbmdUYWc6dm9pZCAwO2ZlLmV4'@; put 'cG9ydHM9ZnVuY3Rpb24gRihxKXtpZighZnVuY3Rpb24gVyhxKXt2YXIgcmU9dHlwZW9mIHE7cmV0dXJuIG51bGwhPXEmJigib2JqZWN0Ij09cmV8fCJmdW5jdGlvbiI9PXJlKX0ocSkpcmV0dXJuITE7dmFyIHJlPWZ1bmN0aW9uIE4ocSl7cmV0dXJuIG51bGw9PXE/dm9pZCAwPT09cT8iW29i'@; put 'amVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6ViYmViBpbiBPYmplY3QocSk/ZnVuY3Rpb24geihxKXt2YXIgcmU9eC5jYWxsKHEsViksbWU9cVtWXTt0cnl7cVtWXT12b2lkIDA7dmFyIENlPSEwfWNhdGNoe312YXIgSWU9VS5jYWxsKHEpO3JldHVybiBDZSYmKHJlP3FbVl09bWU6'@; put 'ZGVsZXRlIHFbVl0pLEllfShxKTpmdW5jdGlvbiBZKHEpe3JldHVybiBVLmNhbGwocSl9KHEpfShxKTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1yZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09cmV8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09cmV8fCJbb2JqZWN0IFBy'@; put 'b3h5XSI9PXJlfX0sNzQ3MzMoZmUpe2ZlLmV4cG9ydHM9ZnVuY3Rpb24gaihoKXtyZXR1cm4gbnVsbD09aH19LDcxNTE0KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1NYXRoLmFic30sNTg5NjgoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPU1hdGguZmxvb3J9LDk0NDU5KGZlKXsi'@; put 'dXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGgpe3JldHVybiBoIT1ofX0sNjE4OChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9TWF0aC5tYXh9LDY4MDAyKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1NYXRoLm1pbn0sNzU4ODAoZmUpeyJ1c2Ug'@; put 'c3RyaWN0IjtmZS5leHBvcnRzPU1hdGgucG93fSw3MDQxNChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9TWF0aC5yb3VuZH0sNzMwOTMoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg5NDQ1OSk7ZmUuZXhwb3J0cz1mdW5jdGlvbihzKXtyZXR1cm4geShzKXx8MD09PXM/czpzPDA/'@; put 'LTE6MX19LDg4Mjc2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNTY2OTgpLGM9aCg0NzI5KSxzPWgoOTI4NjEpLkJ1ZmZlcixBPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gdigpe2MuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMu'@; put 'X2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OH1mdW5jdGlvbiBDKHgsVSl7cmV0dXJuIHg8PFV8eD4+PjMyLVV9ZnVuY3Rpb24gdyh4LFUsSCxWLE4seixZKXtyZXR1cm4gQyh4KyhVJkh8flUmVikrTit6fDAsWSkrVXwwfWZ1bmN0aW9uIFMoeCxVLEgsVixOLHosWSl7cmV0dXJuIEMo'@; put 'eCsoVSZWfEgmflYpK04renwwLFkpK1V8MH1mdW5jdGlvbiBMKHgsVSxILFYsTix6LFkpe3JldHVybiBDKHgrKFVeSF5WKStOK3p8MCxZKStVfDB9ZnVuY3Rpb24gUih4LFUsSCxWLE4seixZKXtyZXR1cm4gQyh4KyhIXihVfH5WKSkrTit6fDAsWSkrVXwwfXkodixjKSx2LnByb3RvdHlwZS5f'@; put 'dXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB4PUEsVT0wO1U8MTY7KytVKXhbVV09dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCpVKTt2YXIgSD10aGlzLl9hLFY9dGhpcy5fYixOPXRoaXMuX2Msej10aGlzLl9kO0g9dyhILFYsTix6LHhbMF0sMzYxNDA5MDM2MCw3KSx6PXcoeixILFYsTix4'@; put 'WzFdLDM5MDU0MDI3MTAsMTIpLE49dyhOLHosSCxWLHhbMl0sNjA2MTA1ODE5LDE3KSxWPXcoVixOLHosSCx4WzNdLDMyNTA0NDE5NjYsMjIpLEg9dyhILFYsTix6LHhbNF0sNDExODU0ODM5OSw3KSx6PXcoeixILFYsTix4WzVdLDEyMDAwODA0MjYsMTIpLE49dyhOLHosSCxWLHhbNl0sMjgy'@; put 'MTczNTk1NSwxNyksVj13KFYsTix6LEgseFs3XSw0MjQ5MjYxMzEzLDIyKSxIPXcoSCxWLE4seix4WzhdLDE3NzAwMzU0MTYsNyksej13KHosSCxWLE4seFs5XSwyMzM2NTUyODc5LDEyKSxOPXcoTix6LEgsVix4WzEwXSw0Mjk0OTI1MjMzLDE3KSxWPXcoVixOLHosSCx4WzExXSwyMzA0NTYz'@; put 'MTM0LDIyKSxIPXcoSCxWLE4seix4WzEyXSwxODA0NjAzNjgyLDcpLHo9dyh6LEgsVixOLHhbMTNdLDQyNTQ2MjYxOTUsMTIpLE49dyhOLHosSCxWLHhbMTRdLDI3OTI5NjUwMDYsMTcpLEg9UyhILFY9dyhWLE4seixILHhbMTVdLDEyMzY1MzUzMjksMjIpLE4seix4WzFdLDQxMjkxNzA3ODYs'@; put 'NSksej1TKHosSCxWLE4seFs2XSwzMjI1NDY1NjY0LDkpLE49UyhOLHosSCxWLHhbMTFdLDY0MzcxNzcxMywxNCksVj1TKFYsTix6LEgseFswXSwzOTIxMDY5OTk0LDIwKSxIPVMoSCxWLE4seix4WzVdLDM1OTM0MDg2MDUsNSksej1TKHosSCxWLE4seFsxMF0sMzgwMTYwODMsOSksTj1TKE4s'@; put 'eixILFYseFsxNV0sMzYzNDQ4ODk2MSwxNCksVj1TKFYsTix6LEgseFs0XSwzODg5NDI5NDQ4LDIwKSxIPVMoSCxWLE4seix4WzldLDU2ODQ0NjQzOCw1KSx6PVMoeixILFYsTix4WzE0XSwzMjc1MTYzNjA2LDkpLE49UyhOLHosSCxWLHhbM10sNDEwNzYwMzMzNSwxNCksVj1TKFYsTix6LEgs'@; put 'eFs4XSwxMTYzNTMxNTAxLDIwKSxIPVMoSCxWLE4seix4WzEzXSwyODUwMjg1ODI5LDUpLHo9Uyh6LEgsVixOLHhbMl0sNDI0MzU2MzUxMiw5KSxOPVMoTix6LEgsVix4WzddLDE3MzUzMjg0NzMsMTQpLEg9TChILFY9UyhWLE4seixILHhbMTJdLDIzNjgzNTk1NjIsMjApLE4seix4WzVdLDQy'@; put 'OTQ1ODg3MzgsNCksej1MKHosSCxWLE4seFs4XSwyMjcyMzkyODMzLDExKSxOPUwoTix6LEgsVix4WzExXSwxODM5MDMwNTYyLDE2KSxWPUwoVixOLHosSCx4WzE0XSw0MjU5NjU3NzQwLDIzKSxIPUwoSCxWLE4seix4WzFdLDI3NjM5NzUyMzYsNCksej1MKHosSCxWLE4seFs0XSwxMjcyODkz'@; put 'MzUzLDExKSxOPUwoTix6LEgsVix4WzddLDQxMzk0Njk2NjQsMTYpLFY9TChWLE4seixILHhbMTBdLDMyMDAyMzY2NTYsMjMpLEg9TChILFYsTix6LHhbMTNdLDY4MTI3OTE3NCw0KSx6PUwoeixILFYsTix4WzBdLDM5MzY0MzAwNzQsMTEpLE49TChOLHosSCxWLHhbM10sMzU3MjQ0NTMxNywx'@; put 'NiksVj1MKFYsTix6LEgseFs2XSw3NjAyOTE4OSwyMyksSD1MKEgsVixOLHoseFs5XSwzNjU0NjAyODA5LDQpLHo9TCh6LEgsVixOLHhbMTJdLDM4NzMxNTE0NjEsMTEpLE49TChOLHosSCxWLHhbMTVdLDUzMDc0MjUyMCwxNiksSD1SKEgsVj1MKFYsTix6LEgseFsyXSwzMjk5NjI4NjQ1LDIz'@; put 'KSxOLHoseFswXSw0MDk2MzM2NDUyLDYpLHo9Uih6LEgsVixOLHhbN10sMTEyNjg5MTQxNSwxMCksTj1SKE4seixILFYseFsxNF0sMjg3ODYxMjM5MSwxNSksVj1SKFYsTix6LEgseFs1XSw0MjM3NTMzMjQxLDIxKSxIPVIoSCxWLE4seix4WzEyXSwxNzAwNDg1NTcxLDYpLHo9Uih6LEgsVixO'@; put 'LHhbM10sMjM5OTk4MDY5MCwxMCksTj1SKE4seixILFYseFsxMF0sNDI5MzkxNTc3MywxNSksVj1SKFYsTix6LEgseFsxXSwyMjQwMDQ0NDk3LDIxKSxIPVIoSCxWLE4seix4WzhdLDE4NzMzMTMzNTksNiksej1SKHosSCxWLE4seFsxNV0sNDI2NDM1NTU1MiwxMCksTj1SKE4seixILFYseFs2'@; put 'XSwyNzM0NzY4OTE2LDE1KSxWPVIoVixOLHosSCx4WzEzXSwxMzA5MTUxNjQ5LDIxKSxIPVIoSCxWLE4seix4WzRdLDQxNDk0NDQyMjYsNiksej1SKHosSCxWLE4seFsxMV0sMzE3NDc1NjkxNywxMCksTj1SKE4seixILFYseFsyXSw3MTg3ODcyNTksMTUpLFY9UihWLE4seixILHhbOV0sMzk1'@; put 'MTQ4MTc0NSwyMSksdGhpcy5fYT10aGlzLl9hK0h8MCx0aGlzLl9iPXRoaXMuX2IrVnwwLHRoaXMuX2M9dGhpcy5fYytOfDAsdGhpcy5fZD10aGlzLl9kK3p8MH0sdi5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlz'@; put 'Ll9ibG9ja09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRo'@; put 'aXMuX2xlbmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciB4PXMuYWxsb2NVbnNhZmUoMTYpO3JldHVybiB4LndyaXRlSW50MzJMRSh0aGlzLl9hLDApLHgud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCkseC53'@; put 'cml0ZUludDMyTEUodGhpcy5fYyw4KSx4LndyaXRlSW50MzJMRSh0aGlzLl9kLDEyKSx4fSxmZS5leHBvcnRzPXZ9LDUyMjQ0KGZlLGosaCl7dmFyIHk9aCg2MTE1OCksYz1oKDE1MDM3KTtmdW5jdGlvbiBzKEEpe3RoaXMucmFuZD1BfHxuZXcgYy5SYW5kfWZlLmV4cG9ydHM9cyxzLmNyZWF0'@; put 'ZT1mdW5jdGlvbih2KXtyZXR1cm4gbmV3IHModil9LHMucHJvdG90eXBlLl9yYW5kYmVsb3c9ZnVuY3Rpb24odil7dmFyIEM9di5iaXRMZW5ndGgoKSx3PU1hdGguY2VpbChDLzgpO2Rve3ZhciBTPW5ldyB5KHRoaXMucmFuZC5nZW5lcmF0ZSh3KSl9d2hpbGUoUy5jbXAodik+PTApO3JldHVy'@; put 'biBTfSxzLnByb3RvdHlwZS5fcmFuZHJhbmdlPWZ1bmN0aW9uKHYsQyl7dmFyIHc9Qy5zdWIodik7cmV0dXJuIHYuYWRkKHRoaXMuX3JhbmRiZWxvdyh3KSl9LHMucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24odixDLHcpe3ZhciBTPXYuYml0TGVuZ3RoKCksTD15Lm1vbnQodiksUj1uZXcgeSgx'@; put 'KS50b1JlZChMKTtDfHwoQz1NYXRoLm1heCgxLFMvNDh8MCkpO2Zvcih2YXIgeD12LnN1Ym4oMSksVT0wOyF4LnRlc3RuKFUpO1UrKyk7Zm9yKHZhciBIPXYuc2hybihVKSxWPXgudG9SZWQoTCk7Qz4wO0MtLSl7dmFyIHo9dGhpcy5fcmFuZHJhbmdlKG5ldyB5KDIpLHgpO3cmJncoeik7dmFy'@; put 'IFk9ei50b1JlZChMKS5yZWRQb3coSCk7aWYoMCE9PVkuY21wKFIpJiYwIT09WS5jbXAoVikpe2Zvcih2YXIgRj0xO0Y8VTtGKyspe2lmKDA9PT0oWT1ZLnJlZFNxcigpKS5jbXAoUikpcmV0dXJuITE7aWYoMD09PVkuY21wKFYpKWJyZWFrfWlmKEY9PT1VKXJldHVybiExfX1yZXR1cm4hMH0s'@; put 'cy5wcm90b3R5cGUuZ2V0RGl2aXNvcj1mdW5jdGlvbih2LEMpe3ZhciB3PXYuYml0TGVuZ3RoKCksUz15Lm1vbnQodiksTD1uZXcgeSgxKS50b1JlZChTKTtDfHwoQz1NYXRoLm1heCgxLHcvNDh8MCkpO2Zvcih2YXIgUj12LnN1Ym4oMSkseD0wOyFSLnRlc3RuKHgpO3grKyk7Zm9yKHZhciBV'@; put 'PXYuc2hybih4KSxIPVIudG9SZWQoUyk7Qz4wO0MtLSl7dmFyIFY9dGhpcy5fcmFuZHJhbmdlKG5ldyB5KDIpLFIpLE49di5nY2QoVik7aWYoMCE9PU4uY21wbigxKSlyZXR1cm4gTjt2YXIgej1WLnRvUmVkKFMpLnJlZFBvdyhVKTtpZigwIT09ei5jbXAoTCkmJjAhPT16LmNtcChIKSl7Zm9y'@; put 'KHZhciBZPTE7WTx4O1krKyl7aWYoMD09PSh6PXoucmVkU3FyKCkpLmNtcChMKSlyZXR1cm4gei5mcm9tUmVkKCkuc3VibigxKS5nY2Qodik7aWYoMD09PXouY21wKEgpKWJyZWFrfWlmKFk9PT14KXJldHVybih6PXoucmVkU3FyKCkpLmZyb21SZWQoKS5zdWJuKDEpLmdjZCh2KX19cmV0dXJu'@; put 'ITF9fSw2MTE1OChmZSxqLGgpeyFmdW5jdGlvbih5LGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKFgsZil7aWYoIVgpdGhyb3cgbmV3IEVycm9yKGZ8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gQShYLGYpe1guc3VwZXJfPWY7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBl'@; put 'PWYucHJvdG90eXBlLFgucHJvdG90eXBlPW5ldyBiLFgucHJvdG90eXBlLmNvbnN0cnVjdG9yPVh9ZnVuY3Rpb24gdihYLGYsYil7aWYodi5pc0JOKFgpKXJldHVybiBYO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1Y'@; put 'JiYoKCJsZSI9PT1mfHwiYmUiPT09ZikmJihiPWYsZj0xMCksdGhpcy5faW5pdChYfHwwLGZ8fDEwLGJ8fCJiZSIpKX12YXIgQzsib2JqZWN0Ij09dHlwZW9mIHk/eS5leHBvcnRzPXY6Yy5CTj12LHYuQk49dix2LndvcmRTaXplPTI2O3RyeXtDPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Yg'@; put 'd2luZG93LkJ1ZmZlcjwidSI/d2luZG93LkJ1ZmZlcjpoKDY0Njg4KS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIHcoWCxmKXt2YXIgYj1YLmNoYXJDb2RlQXQoZik7cmV0dXJuIGI+PTY1JiZiPD03MD9iLTU1OmI+PTk3JiZiPD0xMDI/Yi04NzpiLTQ4JjE1fWZ1bmN0aW9uIFMoWCxmLGIpe3Zh'@; put 'ciBrPXcoWCxiKTtyZXR1cm4gYi0xPj1mJiYoa3w9dyhYLGItMSk8PDQpLGt9ZnVuY3Rpb24gTChYLGYsYixrKXtmb3IodmFyIE09MCxCPU1hdGgubWluKFgubGVuZ3RoLGIpLEs9ZjtLPEI7SysrKXt2YXIgRz1YLmNoYXJDb2RlQXQoSyktNDg7TSo9ayxNKz1HPj00OT9HLTQ5KzEwOkc+PTE3'@; put 'P0ctMTcrMTA6R31yZXR1cm4gTX12LmlzQk49ZnVuY3Rpb24oZil7cmV0dXJuIGYgaW5zdGFuY2VvZiB2fHxudWxsIT09ZiYmIm9iamVjdCI9PXR5cGVvZiBmJiZmLmNvbnN0cnVjdG9yLndvcmRTaXplPT09di53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShmLndvcmRzKX0sdi5tYXg9ZnVuY3Rp'@; put 'b24oZixiKXtyZXR1cm4gZi5jbXAoYik+MD9mOmJ9LHYubWluPWZ1bmN0aW9uKGYsYil7cmV0dXJuIGYuY21wKGIpPDA/ZjpifSx2LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihmLGIsayl7aWYoIm51bWJlciI9PXR5cGVvZiBmKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKGYsYixrKTtpZigi'@; put 'b2JqZWN0Ij09dHlwZW9mIGYpcmV0dXJuIHRoaXMuX2luaXRBcnJheShmLGIsayk7ImhleCI9PT1iJiYoYj0xNikscyhiPT09KDB8YikmJmI+PTImJmI8PTM2KTt2YXIgTT0wOyItIj09PShmPWYudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoTSsrLHRoaXMubmVnYXRpdmU9'@; put 'MSksTTxmLmxlbmd0aCYmKDE2PT09Yj90aGlzLl9wYXJzZUhleChmLE0sayk6KHRoaXMuX3BhcnNlQmFzZShmLGIsTSksImxlIj09PWsmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxiLGspKSl9LHYucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGYsYixrKXtmPDAmJih0'@; put 'aGlzLm5lZ2F0aXZlPTEsZj0tZiksZjw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZl0sdGhpcy5sZW5ndGg9MSk6Zjw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZmLGYvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihzKGY8OTAwNzE5OTI1'@; put 'NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmZixmLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYixrKX0sdi5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihmLGIsayl7aWYocygibnVt'@; put 'YmVyIj09dHlwZW9mIGYubGVuZ3RoKSxmLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChmLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBNPTA7TTx0aGlzLmxl'@; put 'bmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3ZhciBCLEssRz0wO2lmKCJiZSI9PT1rKWZvcihNPWYubGVuZ3RoLTEsQj0wO00+PTA7TS09Myl0aGlzLndvcmRzW0JdfD0oSz1mW01dfGZbTS0xXTw8OHxmW00tMl08PDE2KTw8RyY2NzEwODg2Myx0aGlzLndvcmRzW0IrMV09Sz4+PjI2LUcmNjcx'@; put 'MDg4NjMsKEcrPTI0KT49MjYmJihHLT0yNixCKyspO2Vsc2UgaWYoImxlIj09PWspZm9yKE09MCxCPTA7TTxmLmxlbmd0aDtNKz0zKXRoaXMud29yZHNbQl18PShLPWZbTV18ZltNKzFdPDw4fGZbTSsyXTw8MTYpPDxHJjY3MTA4ODYzLHRoaXMud29yZHNbQisxXT1LPj4+MjYtRyY2NzEwODg2'@; put 'MywoRys9MjQpPj0yNiYmKEctPTI2LEIrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKGYsYixrKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGYubGVuZ3RoLWIpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFy'@; put 'IE09MDtNPHRoaXMubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPTA7dmFyIEcsQj0wLEs9MDtpZigiYmUiPT09aylmb3IoTT1mLmxlbmd0aC0xO00+PWI7TS09MilHPVMoZixiLE0pPDxCLHRoaXMud29yZHNbS118PTY3MTA4ODYzJkcsQj49MTg/KEItPTE4LHRoaXMud29yZHNbSys9MV18PUc+'@; put 'Pj4yNik6Qis9ODtlbHNlIGZvcihNPShmLmxlbmd0aC1iKSUyPT0wP2IrMTpiO008Zi5sZW5ndGg7TSs9MilHPVMoZixiLE0pPDxCLHRoaXMud29yZHNbS118PTY3MTA4ODYzJkcsQj49MTg/KEItPTE4LHRoaXMud29yZHNbSys9MV18PUc+Pj4yNik6Qis9ODt0aGlzLnN0cmlwKCl9LHYucHJv'@; put 'dG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oZixiLGspe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBNPTAsQj0xO0I8PTY3MTA4ODYzO0IqPWIpTSsrO00tLSxCPUIvYnwwO2Zvcih2YXIgSz1mLmxlbmd0aC1rLEc9SyVNLEQ9TWF0aC5taW4oSyxLLUcpK2sscD0wLEk9'@; put 'aztJPEQ7SSs9TSlwPUwoZixJLEkrTSxiKSx0aGlzLmltdWxuKEIpLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApO2lmKDAhPT1HKXt2YXIgdWU9MTtmb3IocD1MKGYsSSxmLmxlbmd0aCxiKSxJPTA7STxHO0krKyl1ZSo9Yjt0aGlzLmlt'@; put 'dWxuKHVlKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKX10aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZil7Zi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgYj0wO2I8dGhpcy5sZW5ndGg7'@; put 'YisrKWYud29yZHNbYl09dGhpcy53b3Jkc1tiXTtmLmxlbmd0aD10aGlzLmxlbmd0aCxmLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZi5yZWQ9dGhpcy5yZWR9LHYucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGY9bmV3IHYobnVsbCk7cmV0dXJuIHRoaXMuY29weShmKSxmfSx2LnBy'@; put 'b3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGYpe2Zvcig7dGhpcy5sZW5ndGg8ZjspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSx2LnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgt'@; put 'MV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LHYucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSx2LnByb3RvdHlwZS5pbnNwZWN0PWZ1'@; put 'bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBSPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAw'@; put 'MDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAw'@; put 'MDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLHg9WzAsMCwyNSwxNiwxMiwx'@; put 'MSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sVT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgw'@; put 'OCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0'@; put 'NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBWKFgsZixiKXtiLm5lZ2F0aXZlPWYubmVnYXRpdmVeWC5uZWdhdGl2ZTt2YXIgaz1YLmxlbmd0aCtmLmxlbmd0aHwwO2IubGVuZ3RoPWssaz1rLTF8MDt2YXIgTT0wfFgud29yZHNbMF0sQj0wfGYud29y'@; put 'ZHNbMF0sSz1NKkIsRD1LLzY3MTA4ODY0fDA7Yi53b3Jkc1swXT02NzEwODg2MyZLO2Zvcih2YXIgcD0xO3A8aztwKyspe2Zvcih2YXIgST1EPj4+MjYsdWU9NjcxMDg4NjMmRCxuZT1NYXRoLm1pbihwLGYubGVuZ3RoLTEpLF9lPU1hdGgubWF4KDAscC1YLmxlbmd0aCsxKTtfZTw9bmU7X2Ur'@; put 'KylJKz0oSz0oTT0wfFgud29yZHNbcC1fZXwwXSkqKEI9MHxmLndvcmRzW19lXSkrdWUpLzY3MTA4ODY0fDAsdWU9NjcxMDg4NjMmSztiLndvcmRzW3BdPTB8dWUsRD0wfEl9cmV0dXJuIDAhPT1EP2Iud29yZHNbcF09MHxEOmIubGVuZ3RoLS0sYi5zdHJpcCgpfXYucHJvdG90eXBlLnRvU3Ry'@; put 'aW5nPWZ1bmN0aW9uKGYsYil7dmFyIGs7aWYoYj0wfGJ8fDEsMTY9PT0oZj1mfHwxMCl8fCJoZXgiPT09Zil7az0iIjtmb3IodmFyIE09MCxCPTAsSz0wO0s8dGhpcy5sZW5ndGg7SysrKXt2YXIgRz10aGlzLndvcmRzW0tdLEQ9KDE2Nzc3MjE1JihHPDxNfEIpKS50b1N0cmluZygxNik7Qj1H'@; put 'Pj4+MjQtTSYxNjc3NzIxNSwoTSs9Mik+PTI2JiYoTS09MjYsSy0tKSxrPTAhPT1CfHxLIT09dGhpcy5sZW5ndGgtMT9SWzYtRC5sZW5ndGhdK0QrazpEK2t9Zm9yKDAhPT1CJiYoaz1CLnRvU3RyaW5nKDE2KStrKTtrLmxlbmd0aCViIT09MDspaz0iMCIraztyZXR1cm4gMCE9PXRoaXMubmVn'@; put 'YXRpdmUmJihrPSItIitrKSxrfWlmKGY9PT0oMHxmKSYmZj49MiYmZjw9MzYpe3ZhciBwPXhbZl0sST1VW2ZdO2s9IiI7dmFyIHVlPXRoaXMuY2xvbmUoKTtmb3IodWUubmVnYXRpdmU9MDshdWUuaXNaZXJvKCk7KXt2YXIgbmU9dWUubW9kbihJKS50b1N0cmluZyhmKTtrPSh1ZT11ZS5pZGl2'@; put 'bihJKSkuaXNaZXJvKCk/bmUrazpSW3AtbmUubGVuZ3RoXStuZStrfWZvcih0aGlzLmlzWmVybygpJiYoaz0iMCIrayk7ay5sZW5ndGglYiE9PTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31zKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5k'@; put 'IDM2Iil9LHYucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2YrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9mKz00NTAzNTk5NjI3MzcwNDk2KzY3'@; put 'MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmcyghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWY6Zn0sdi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYp'@; put 'fSx2LnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihmLGIpe3JldHVybiBzKHR5cGVvZiBDPCJ1IiksdGhpcy50b0FycmF5TGlrZShDLGYsYil9LHYucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxmLGIpfSx2LnByb3RvdHlw'@; put 'ZS50b0FycmF5TGlrZT1mdW5jdGlvbihmLGIsayl7dmFyIE09dGhpcy5ieXRlTGVuZ3RoKCksQj1rfHxNYXRoLm1heCgxLE0pO3MoTTw9QiwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLHMoQj4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0'@; put 'cmlwKCk7dmFyIEQscCxLPSJsZSI9PT1iLEc9bmV3IGYoQiksST10aGlzLmNsb25lKCk7aWYoSyl7Zm9yKHA9MDshSS5pc1plcm8oKTtwKyspRD1JLmFuZGxuKDI1NSksSS5pdXNocm4oOCksR1twXT1EO2Zvcig7cDxCO3ArKylHW3BdPTB9ZWxzZXtmb3IocD0wO3A8Qi1NO3ArKylHW3BdPTA7'@; put 'Zm9yKHA9MDshSS5pc1plcm8oKTtwKyspRD1JLmFuZGxuKDI1NSksSS5pdXNocm4oOCksR1tCLXAtMV09RH1yZXR1cm4gR30sdi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGYpe3JldHVybiAzMi1NYXRoLmNsejMyKGYpfTpmdW5jdGlvbihmKXt2YXIgYj1mLGs9'@; put 'MDtyZXR1cm4gYj49NDA5NiYmKGsrPTEzLGI+Pj49MTMpLGI+PTY0JiYoays9NyxiPj4+PTcpLGI+PTgmJihrKz00LGI+Pj49NCksYj49MiYmKGsrPTIsYj4+Pj0yKSxrK2J9LHYucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihmKXtpZigwPT09ZilyZXR1cm4gMjY7dmFyIGI9ZixrPTA7'@; put 'cmV0dXJuISg4MTkxJmIpJiYoays9MTMsYj4+Pj0xMyksISgxMjcmYikmJihrKz03LGI+Pj49NyksISgxNSZiKSYmKGsrPTQsYj4+Pj00KSwhKDMmYikmJihrKz0yLGI+Pj49MiksISgxJmIpJiZrKyssa30sdi5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5fY291'@; put 'bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrYn0sdi5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZj0wLGI9MDtiPHRoaXMubGVuZ3RoO2IrKyl7dmFyIGs9dGhp'@; put 'cy5femVyb0JpdHModGhpcy53b3Jkc1tiXSk7aWYoZis9aywyNiE9PWspYnJlYWt9cmV0dXJuIGZ9LHYucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LHYucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihmKXtyZXR1'@; put 'cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihmKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LHYucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLnRlc3RuKGYtMSk/dGhpcy5ub3RuKGYpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LHYu'@; put 'cHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSx2LnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sdi5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5u'@; put 'ZWdhdGl2ZV49MSksdGhpc30sdi5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihmKXtmb3IoO3RoaXMubGVuZ3RoPGYubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBiPTA7YjxmLmxlbmd0aDtiKyspdGhpcy53b3Jkc1tiXT10aGlzLndvcmRzW2JdfGYud29yZHNb'@; put 'Yl07cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGYpe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxmLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGYpfSx2LnByb3RvdHlwZS5vcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhp'@; put 'cy5jbG9uZSgpLmlvcihmKTpmLmNsb25lKCkuaW9yKHRoaXMpfSx2LnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGYpOmYuY2xvbmUoKS5pdW9yKHRoaXMpfSx2LnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihm'@; put 'KXt2YXIgYjtiPXRoaXMubGVuZ3RoPmYubGVuZ3RoP2Y6dGhpcztmb3IodmFyIGs9MDtrPGIubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPXRoaXMud29yZHNba10mZi53b3Jkc1trXTtyZXR1cm4gdGhpcy5sZW5ndGg9Yi5sZW5ndGgsdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5pYW5kPWZ1'@; put 'bmN0aW9uKGYpe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxmLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChmKX0sdi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChmKTpmLmNsb25lKCkuaWFuZCh0aGlzKX0s'@; put 'di5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGYpOmYuY2xvbmUoKS5pdWFuZCh0aGlzKX0sdi5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZil7dmFyIGIsazt0aGlzLmxlbmd0aD5mLmxlbmd0aD8oYj10'@; put 'aGlzLGs9Zik6KGI9ZixrPXRoaXMpO2Zvcih2YXIgTT0wO008ay5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Yi53b3Jkc1tNXV5rLndvcmRzW01dO2lmKHRoaXMhPT1iKWZvcig7TTxiLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT1iLndvcmRzW01dO3JldHVybiB0aGlzLmxlbmd0aD1iLmxl'@; put 'bmd0aCx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZil7cmV0dXJuIHMoMD09PSh0aGlzLm5lZ2F0aXZlfGYubmVnYXRpdmUpKSx0aGlzLml1eG9yKGYpfSx2LnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMu'@; put 'Y2xvbmUoKS5peG9yKGYpOmYuY2xvbmUoKS5peG9yKHRoaXMpfSx2LnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoZik6Zi5jbG9uZSgpLml1eG9yKHRoaXMpfSx2LnByb3RvdHlwZS5pbm90bj1mdW5jdGlv'@; put 'bihmKXtzKCJudW1iZXIiPT10eXBlb2YgZiYmZj49MCk7dmFyIGI9MHxNYXRoLmNlaWwoZi8yNiksaz1mJTI2O3RoaXMuX2V4cGFuZChiKSxrPjAmJmItLTtmb3IodmFyIE09MDtNPGI7TSsrKXRoaXMud29yZHNbTV09NjcxMDg4NjMmfnRoaXMud29yZHNbTV07Zm9yKGs+MCYmKHRoaXMud29y'@; put 'ZHNbTV09fnRoaXMud29yZHNbTV0mNjcxMDg4NjM+PjI2LWssTSsrKTtNPHRoaXMubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPTA7cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUubm90bj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGYpfSx2LnByb3RvdHlw'@; put 'ZS5zZXRuPWZ1bmN0aW9uKGYsYil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBrPWYvMjZ8MCxNPWYlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba109Yj90aGlzLndvcmRzW2tdfDE8PE06dGhpcy53b3Jkc1trXSZ+KDE8PE0pLHRoaXMuc3RyaXAoKX0s'@; put 'di5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihmKXt2YXIgYixrLE07aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1mLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsYj10aGlzLmlzdWIoZiksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0'@; put 'aXZlJiYwIT09Zi5uZWdhdGl2ZSlyZXR1cm4gZi5uZWdhdGl2ZT0wLGI9dGhpcy5pc3ViKGYpLGYubmVnYXRpdmU9MSxiLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmYubGVuZ3RoPyhrPXRoaXMsTT1mKTooaz1mLE09dGhpcyk7Zm9yKHZhciBCPTAsSz0wO0s8TS5sZW5ndGg7SysrKXRoaXMu'@; put 'd29yZHNbS109NjcxMDg4NjMmKGI9KDB8ay53b3Jkc1tLXSkrKDB8TS53b3Jkc1tLXSkrQiksQj1iPj4+MjY7Zm9yKDswIT09QiYmSzxrLmxlbmd0aDtLKyspdGhpcy53b3Jkc1tLXT02NzEwODg2MyYoYj0oMHxrLndvcmRzW0tdKStCKSxCPWI+Pj4yNjtpZih0aGlzLmxlbmd0aD1rLmxlbmd0'@; put 'aCwwIT09Qil0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1CLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihrIT09dGhpcylmb3IoO0s8ay5sZW5ndGg7SysrKXRoaXMud29yZHNbS109ay53b3Jkc1tLXTtyZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGYpe3ZhciBiO3JldHVybiAw'@; put 'IT09Zi5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGYubmVnYXRpdmU9MCxiPXRoaXMuc3ViKGYpLGYubmVnYXRpdmVePTEsYik6MD09PWYubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsYj1mLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsYik6dGhp'@; put 'cy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoZik6Zi5jbG9uZSgpLmlhZGQodGhpcyl9LHYucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZil7aWYoMCE9PWYubmVnYXRpdmUpe2YubmVnYXRpdmU9MDt2YXIgYj10aGlzLmlhZGQoZik7cmV0dXJuIGYubmVnYXRpdmU9MSxiLl9u'@; put 'b3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBNLEIsaz10aGlzLmNtcChmKTtpZigwPT09aylyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3Ro'@; put 'PTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7az4wPyhNPXRoaXMsQj1mKTooTT1mLEI9dGhpcyk7Zm9yKHZhciBLPTAsRz0wO0c8Qi5sZW5ndGg7RysrKUs9KGI9KDB8TS53b3Jkc1tHXSktKDB8Qi53b3Jkc1tHXSkrSyk+PjI2LHRoaXMud29yZHNbR109NjcxMDg4NjMmYjtmb3IoOzAhPT1LJiZH'@; put 'PE0ubGVuZ3RoO0crKylLPShiPSgwfE0ud29yZHNbR10pK0spPj4yNix0aGlzLndvcmRzW0ddPTY3MTA4ODYzJmI7aWYoMD09PUsmJkc8TS5sZW5ndGgmJk0hPT10aGlzKWZvcig7RzxNLmxlbmd0aDtHKyspdGhpcy53b3Jkc1tHXT1NLndvcmRzW0ddO3JldHVybiB0aGlzLmxlbmd0aD1NYXRo'@; put 'Lm1heCh0aGlzLmxlbmd0aCxHKSxNIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGYpfTt2YXIgTj1mdW5jdGlvbihmLGIsayl7dmFyIEQscCxJLE09Zi53b3JkcyxCPWIu'@; put 'd29yZHMsSz1rLndvcmRzLEc9MCx1ZT0wfE1bMF0sbmU9ODE5MSZ1ZSxfZT11ZT4+PjEzLFBlPTB8TVsxXSxvdD04MTkxJlBlLGx0PVBlPj4+MTMsZHQ9MHxNWzJdLFJlPTgxOTEmZHQsYWU9ZHQ+Pj4xMyx4ZT0wfE1bM10samU9ODE5MSZ4ZSxBZT14ZT4+PjEzLERlPTB8TVs0XSxGZT04MTkx'@; put 'JkRlLGdlPURlPj4+MTMsY2U9MHxNWzVdLGhlPTgxOTEmY2Usd2U9Y2U+Pj4xMyxKZT0wfE1bNl0sdHQ9ODE5MSZKZSxLZT1KZT4+PjEzLCR0PTB8TVs3XSxSdD04MTkxJiR0LEx0PSR0Pj4+MTMsR3Q9MHxNWzhdLGd0PTgxOTEmR3QsWHQ9R3Q+Pj4xMyxMcj0wfE1bOV0sbG49ODE5MSZMcixP'@; put 'bj1Mcj4+PjEzLFFyPTB8QlswXSx0cj04MTkxJlFyLEhuPVFyPj4+MTMsT289MHxCWzFdLHVyPTgxOTEmT28sWm49T28+Pj4xMyxTbj0wfEJbMl0seHI9ODE5MSZTbixUdD1Tbj4+PjEzLEFyPTB8QlszXSxfbj04MTkxJkFyLFp0PUFyPj4+MTMsTm49MHxCWzRdLHB0PTgxOTEmTm4scG49Tm4+'@; put 'Pj4xMyxNaT0wfEJbNV0sR2U9ODE5MSZNaSxVdD1NaT4+PjEzLHZyPTB8Qls2XSx4dD04MTkxJnZyLEJ0PXZyPj4+MTMsem49MHxCWzddLEduPTgxOTEmem4seW49em4+Pj4xMyx2aT0wfEJbOF0scnI9ODE5MSZ2aSxocj12aT4+PjEzLHBvPTB8Qls5XSx2bj04MTkxJnBvLEJuPXBvPj4+MTM7'@; put 'ay5uZWdhdGl2ZT1mLm5lZ2F0aXZlXmIubmVnYXRpdmUsay5sZW5ndGg9MTk7dmFyIGphPShHKyhEPU1hdGguaW11bChuZSx0cikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwobmUsSG4pKStNYXRoLmltdWwoX2UsdHIpfDApKTw8MTMpfDA7Rz0oKEk9TWF0aC5pbXVsKF9lLEhuKSkrKHA+'@; put 'Pj4xMyl8MCkrKGphPj4+MjYpfDAsamEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKG90LHRyKSxwPShwPU1hdGguaW11bChvdCxIbikpK01hdGguaW11bChsdCx0cil8MCxJPU1hdGguaW11bChsdCxIbik7dmFyIGpvPShHKyhEPUQrTWF0aC5pbXVsKG5lLHVyKXwwKXwwKSsoKDgxOTEmKHA9KHA9'@; put 'cCtNYXRoLmltdWwobmUsWm4pfDApK01hdGguaW11bChfZSx1cil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxabil8MCkrKHA+Pj4xMyl8MCkrKGpvPj4+MjYpfDAsam8mPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKFJlLHRyKSxwPShwPU1hdGguaW11bChSZSxIbikpK01hdGguaW11'@; put 'bChhZSx0cil8MCxJPU1hdGguaW11bChhZSxIbiksRD1EK01hdGguaW11bChvdCx1cil8MCxwPShwPXArTWF0aC5pbXVsKG90LFpuKXwwKStNYXRoLmltdWwobHQsdXIpfDAsST1JK01hdGguaW11bChsdCxabil8MDt2YXIgWHI9KEcrKEQ9RCtNYXRoLmltdWwobmUseHIpfDApfDApKygoODE5'@; put 'MSYocD0ocD1wK01hdGguaW11bChuZSxUdCl8MCkrTWF0aC5pbXVsKF9lLHhyKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLFR0KXwwKSsocD4+PjEzKXwwKSsoWHI+Pj4yNil8MCxYciY9NjcxMDg4NjMsRD1NYXRoLmltdWwoamUsdHIpLHA9KHA9TWF0aC5pbXVsKGplLEhuKSkr'@; put 'TWF0aC5pbXVsKEFlLHRyKXwwLEk9TWF0aC5pbXVsKEFlLEhuKSxEPUQrTWF0aC5pbXVsKFJlLHVyKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsWm4pfDApK01hdGguaW11bChhZSx1cil8MCxJPUkrTWF0aC5pbXVsKGFlLFpuKXwwLEQ9RCtNYXRoLmltdWwob3QseHIpfDAscD0ocD1wK01hdGgu'@; put 'aW11bChvdCxUdCl8MCkrTWF0aC5pbXVsKGx0LHhyKXwwLEk9SStNYXRoLmltdWwobHQsVHQpfDA7dmFyIGVhPShHKyhEPUQrTWF0aC5pbXVsKG5lLF9uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsWnQpfDApK01hdGguaW11bChfZSxfbil8MCkpPDwxMyl8MDtHPSgoST1J'@; put 'K01hdGguaW11bChfZSxadCl8MCkrKHA+Pj4xMyl8MCkrKGVhPj4+MjYpfDAsZWEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKEZlLHRyKSxwPShwPU1hdGguaW11bChGZSxIbikpK01hdGguaW11bChnZSx0cil8MCxJPU1hdGguaW11bChnZSxIbiksRD1EK01hdGguaW11bChqZSx1cil8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKGplLFpuKXwwKStNYXRoLmltdWwoQWUsdXIpfDAsST1JK01hdGguaW11bChBZSxabil8MCxEPUQrTWF0aC5pbXVsKFJlLHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsVHQpfDApK01hdGguaW11bChhZSx4cil8MCxJPUkrTWF0aC5pbXVsKGFlLFR0KXwwLEQ9RCtNYXRo'@; put 'LmltdWwob3QsX24pfDAscD0ocD1wK01hdGguaW11bChvdCxadCl8MCkrTWF0aC5pbXVsKGx0LF9uKXwwLEk9SStNYXRoLmltdWwobHQsWnQpfDA7dmFyIHJhPShHKyhEPUQrTWF0aC5pbXVsKG5lLHB0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUscG4pfDApK01hdGguaW11'@; put 'bChfZSxwdCl8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxwbil8MCkrKHA+Pj4xMyl8MCkrKHJhPj4+MjYpfDAscmEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGhlLHRyKSxwPShwPU1hdGguaW11bChoZSxIbikpK01hdGguaW11bCh3ZSx0cil8MCxJPU1hdGguaW11bCh3ZSxIbiks'@; put 'RD1EK01hdGguaW11bChGZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKEZlLFpuKXwwKStNYXRoLmltdWwoZ2UsdXIpfDAsST1JK01hdGguaW11bChnZSxabil8MCxEPUQrTWF0aC5pbXVsKGplLHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoamUsVHQpfDApK01hdGguaW11bChBZSx4cil8MCxJPUkr'@; put 'TWF0aC5pbXVsKEFlLFR0KXwwLEQ9RCtNYXRoLmltdWwoUmUsX24pfDAscD0ocD1wK01hdGguaW11bChSZSxadCl8MCkrTWF0aC5pbXVsKGFlLF9uKXwwLEk9SStNYXRoLmltdWwoYWUsWnQpfDAsRD1EK01hdGguaW11bChvdCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKG90LHBuKXwwKStNYXRo'@; put 'LmltdWwobHQscHQpfDAsST1JK01hdGguaW11bChsdCxwbil8MDt2YXIgY2E9KEcrKEQ9RCtNYXRoLmltdWwobmUsR2UpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChuZSxVdCl8MCkrTWF0aC5pbXVsKF9lLEdlKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLFV0KXww'@; put 'KSsocD4+PjEzKXwwKSsoY2E+Pj4yNil8MCxjYSY9NjcxMDg4NjMsRD1NYXRoLmltdWwodHQsdHIpLHA9KHA9TWF0aC5pbXVsKHR0LEhuKSkrTWF0aC5pbXVsKEtlLHRyKXwwLEk9TWF0aC5pbXVsKEtlLEhuKSxEPUQrTWF0aC5pbXVsKGhlLHVyKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsWm4p'@; put 'fDApK01hdGguaW11bCh3ZSx1cil8MCxJPUkrTWF0aC5pbXVsKHdlLFpuKXwwLEQ9RCtNYXRoLmltdWwoRmUseHIpfDAscD0ocD1wK01hdGguaW11bChGZSxUdCl8MCkrTWF0aC5pbXVsKGdlLHhyKXwwLEk9SStNYXRoLmltdWwoZ2UsVHQpfDAsRD1EK01hdGguaW11bChqZSxfbil8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKGplLFp0KXwwKStNYXRoLmltdWwoQWUsX24pfDAsST1JK01hdGguaW11bChBZSxadCl8MCxEPUQrTWF0aC5pbXVsKFJlLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoUmUscG4pfDApK01hdGguaW11bChhZSxwdCl8MCxJPUkrTWF0aC5pbXVsKGFlLHBuKXwwLEQ9RCtNYXRo'@; put 'LmltdWwob3QsR2UpfDAscD0ocD1wK01hdGguaW11bChvdCxVdCl8MCkrTWF0aC5pbXVsKGx0LEdlKXwwLEk9SStNYXRoLmltdWwobHQsVXQpfDA7dmFyIENpPShHKyhEPUQrTWF0aC5pbXVsKG5lLHh0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsQnQpfDApK01hdGguaW11'@; put 'bChfZSx4dCl8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxCdCl8MCkrKHA+Pj4xMyl8MCkrKENpPj4+MjYpfDAsQ2kmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKFJ0LHRyKSxwPShwPU1hdGguaW11bChSdCxIbikpK01hdGguaW11bChMdCx0cil8MCxJPU1hdGguaW11bChMdCxIbiks'@; put 'RD1EK01hdGguaW11bCh0dCx1cil8MCxwPShwPXArTWF0aC5pbXVsKHR0LFpuKXwwKStNYXRoLmltdWwoS2UsdXIpfDAsST1JK01hdGguaW11bChLZSxabil8MCxEPUQrTWF0aC5pbXVsKGhlLHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsVHQpfDApK01hdGguaW11bCh3ZSx4cil8MCxJPUkr'@; put 'TWF0aC5pbXVsKHdlLFR0KXwwLEQ9RCtNYXRoLmltdWwoRmUsX24pfDAscD0ocD1wK01hdGguaW11bChGZSxadCl8MCkrTWF0aC5pbXVsKGdlLF9uKXwwLEk9SStNYXRoLmltdWwoZ2UsWnQpfDAsRD1EK01hdGguaW11bChqZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGplLHBuKXwwKStNYXRo'@; put 'LmltdWwoQWUscHQpfDAsST1JK01hdGguaW11bChBZSxwbil8MCxEPUQrTWF0aC5pbXVsKFJlLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsVXQpfDApK01hdGguaW11bChhZSxHZSl8MCxJPUkrTWF0aC5pbXVsKGFlLFV0KXwwLEQ9RCtNYXRoLmltdWwob3QseHQpfDAscD0ocD1wK01hdGgu'@; put 'aW11bChvdCxCdCl8MCkrTWF0aC5pbXVsKGx0LHh0KXwwLEk9SStNYXRoLmltdWwobHQsQnQpfDA7dmFyIGhvPShHKyhEPUQrTWF0aC5pbXVsKG5lLEduKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUseW4pfDApK01hdGguaW11bChfZSxHbil8MCkpPDwxMyl8MDtHPSgoST1J'@; put 'K01hdGguaW11bChfZSx5bil8MCkrKHA+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGd0LHRyKSxwPShwPU1hdGguaW11bChndCxIbikpK01hdGguaW11bChYdCx0cil8MCxJPU1hdGguaW11bChYdCxIbiksRD1EK01hdGguaW11bChSdCx1cil8MCxwPShw'@; put 'PXArTWF0aC5pbXVsKFJ0LFpuKXwwKStNYXRoLmltdWwoTHQsdXIpfDAsST1JK01hdGguaW11bChMdCxabil8MCxEPUQrTWF0aC5pbXVsKHR0LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsVHQpfDApK01hdGguaW11bChLZSx4cil8MCxJPUkrTWF0aC5pbXVsKEtlLFR0KXwwLEQ9RCtNYXRo'@; put 'LmltdWwoaGUsX24pfDAscD0ocD1wK01hdGguaW11bChoZSxadCl8MCkrTWF0aC5pbXVsKHdlLF9uKXwwLEk9SStNYXRoLmltdWwod2UsWnQpfDAsRD1EK01hdGguaW11bChGZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLHBuKXwwKStNYXRoLmltdWwoZ2UscHQpfDAsST1JK01hdGguaW11'@; put 'bChnZSxwbil8MCxEPUQrTWF0aC5pbXVsKGplLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoamUsVXQpfDApK01hdGguaW11bChBZSxHZSl8MCxJPUkrTWF0aC5pbXVsKEFlLFV0KXwwLEQ9RCtNYXRoLmltdWwoUmUseHQpfDAscD0ocD1wK01hdGguaW11bChSZSxCdCl8MCkrTWF0aC5pbXVsKGFl'@; put 'LHh0KXwwLEk9SStNYXRoLmltdWwoYWUsQnQpfDAsRD1EK01hdGguaW11bChvdCxHbil8MCxwPShwPXArTWF0aC5pbXVsKG90LHluKXwwKStNYXRoLmltdWwobHQsR24pfDAsST1JK01hdGguaW11bChsdCx5bil8MDt2YXIgTWE9KEcrKEQ9RCtNYXRoLmltdWwobmUscnIpfDApfDApKygoODE5'@; put 'MSYocD0ocD1wK01hdGguaW11bChuZSxocil8MCkrTWF0aC5pbXVsKF9lLHJyKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKF9lLGhyKXwwKSsocD4+PjEzKXwwKSsoTWE+Pj4yNil8MCxNYSY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4sdHIpLHA9KHA9TWF0aC5pbXVsKGxuLEhuKSkr'@; put 'TWF0aC5pbXVsKE9uLHRyKXwwLEk9TWF0aC5pbXVsKE9uLEhuKSxEPUQrTWF0aC5pbXVsKGd0LHVyKXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QsWm4pfDApK01hdGguaW11bChYdCx1cil8MCxJPUkrTWF0aC5pbXVsKFh0LFpuKXwwLEQ9RCtNYXRoLmltdWwoUnQseHIpfDAscD0ocD1wK01hdGgu'@; put 'aW11bChSdCxUdCl8MCkrTWF0aC5pbXVsKEx0LHhyKXwwLEk9SStNYXRoLmltdWwoTHQsVHQpfDAsRD1EK01hdGguaW11bCh0dCxfbil8MCxwPShwPXArTWF0aC5pbXVsKHR0LFp0KXwwKStNYXRoLmltdWwoS2UsX24pfDAsST1JK01hdGguaW11bChLZSxadCl8MCxEPUQrTWF0aC5pbXVsKGhl'@; put 'LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoaGUscG4pfDApK01hdGguaW11bCh3ZSxwdCl8MCxJPUkrTWF0aC5pbXVsKHdlLHBuKXwwLEQ9RCtNYXRoLmltdWwoRmUsR2UpfDAscD0ocD1wK01hdGguaW11bChGZSxVdCl8MCkrTWF0aC5pbXVsKGdlLEdlKXwwLEk9SStNYXRoLmltdWwoZ2UsVXQp'@; put 'fDAsRD1EK01hdGguaW11bChqZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGplLEJ0KXwwKStNYXRoLmltdWwoQWUseHQpfDAsST1JK01hdGguaW11bChBZSxCdCl8MCxEPUQrTWF0aC5pbXVsKFJlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUseW4pfDApK01hdGguaW11bChhZSxHbil8MCxJ'@; put 'PUkrTWF0aC5pbXVsKGFlLHluKXwwLEQ9RCtNYXRoLmltdWwob3QscnIpfDAscD0ocD1wK01hdGguaW11bChvdCxocil8MCkrTWF0aC5pbXVsKGx0LHJyKXwwLEk9SStNYXRoLmltdWwobHQsaHIpfDA7dmFyIGtzPShHKyhEPUQrTWF0aC5pbXVsKG5lLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9'@; put 'cCtNYXRoLmltdWwobmUsQm4pfDApK01hdGguaW11bChfZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxCbil8MCkrKHA+Pj4xMyl8MCkrKGtzPj4+MjYpfDAsa3MmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHVyKSxwPShwPU1hdGguaW11bChsbixabikpK01hdGguaW11'@; put 'bChPbix1cil8MCxJPU1hdGguaW11bChPbixabiksRD1EK01hdGguaW11bChndCx4cil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFR0KXwwKStNYXRoLmltdWwoWHQseHIpfDAsST1JK01hdGguaW11bChYdCxUdCl8MCxEPUQrTWF0aC5pbXVsKFJ0LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQs'@; put 'WnQpfDApK01hdGguaW11bChMdCxfbil8MCxJPUkrTWF0aC5pbXVsKEx0LFp0KXwwLEQ9RCtNYXRoLmltdWwodHQscHQpfDAscD0ocD1wK01hdGguaW11bCh0dCxwbil8MCkrTWF0aC5pbXVsKEtlLHB0KXwwLEk9SStNYXRoLmltdWwoS2UscG4pfDAsRD1EK01hdGguaW11bChoZSxHZSl8MCxw'@; put 'PShwPXArTWF0aC5pbXVsKGhlLFV0KXwwKStNYXRoLmltdWwod2UsR2UpfDAsST1JK01hdGguaW11bCh3ZSxVdCl8MCxEPUQrTWF0aC5pbXVsKEZlLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsQnQpfDApK01hdGguaW11bChnZSx4dCl8MCxJPUkrTWF0aC5pbXVsKGdlLEJ0KXwwLEQ9RCtN'@; put 'YXRoLmltdWwoamUsR24pfDAscD0ocD1wK01hdGguaW11bChqZSx5bil8MCkrTWF0aC5pbXVsKEFlLEduKXwwLEk9SStNYXRoLmltdWwoQWUseW4pfDAsRD1EK01hdGguaW11bChSZSxycil8MCxwPShwPXArTWF0aC5pbXVsKFJlLGhyKXwwKStNYXRoLmltdWwoYWUscnIpfDAsST1JK01hdGgu'@; put 'aW11bChhZSxocil8MDt2YXIgQmk9KEcrKEQ9RCtNYXRoLmltdWwob3Qsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChvdCxCbil8MCkrTWF0aC5pbXVsKGx0LHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKGx0LEJuKXwwKSsocD4+PjEzKXwwKSsoQmk+Pj4yNil8'@; put 'MCxCaSY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4seHIpLHA9KHA9TWF0aC5pbXVsKGxuLFR0KSkrTWF0aC5pbXVsKE9uLHhyKXwwLEk9TWF0aC5pbXVsKE9uLFR0KSxEPUQrTWF0aC5pbXVsKGd0LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QsWnQpfDApK01hdGguaW11bChYdCxfbil8MCxJ'@; put 'PUkrTWF0aC5pbXVsKFh0LFp0KXwwLEQ9RCtNYXRoLmltdWwoUnQscHQpfDAscD0ocD1wK01hdGguaW11bChSdCxwbil8MCkrTWF0aC5pbXVsKEx0LHB0KXwwLEk9SStNYXRoLmltdWwoTHQscG4pfDAsRD1EK01hdGguaW11bCh0dCxHZSl8MCxwPShwPXArTWF0aC5pbXVsKHR0LFV0KXwwKStN'@; put 'YXRoLmltdWwoS2UsR2UpfDAsST1JK01hdGguaW11bChLZSxVdCl8MCxEPUQrTWF0aC5pbXVsKGhlLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsQnQpfDApK01hdGguaW11bCh3ZSx4dCl8MCxJPUkrTWF0aC5pbXVsKHdlLEJ0KXwwLEQ9RCtNYXRoLmltdWwoRmUsR24pfDAscD0ocD1wK01h'@; put 'dGguaW11bChGZSx5bil8MCkrTWF0aC5pbXVsKGdlLEduKXwwLEk9SStNYXRoLmltdWwoZ2UseW4pfDAsRD1EK01hdGguaW11bChqZSxycil8MCxwPShwPXArTWF0aC5pbXVsKGplLGhyKXwwKStNYXRoLmltdWwoQWUscnIpfDAsST1JK01hdGguaW11bChBZSxocil8MDt2YXIgdGE9KEcrKEQ9'@; put 'RCtNYXRoLmltdWwoUmUsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChSZSxCbil8MCkrTWF0aC5pbXVsKGFlLHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKGFlLEJuKXwwKSsocD4+PjEzKXwwKSsodGE+Pj4yNil8MCx0YSY9NjcxMDg4NjMsRD1NYXRoLmltdWwo'@; put 'bG4sX24pLHA9KHA9TWF0aC5pbXVsKGxuLFp0KSkrTWF0aC5pbXVsKE9uLF9uKXwwLEk9TWF0aC5pbXVsKE9uLFp0KSxEPUQrTWF0aC5pbXVsKGd0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QscG4pfDApK01hdGguaW11bChYdCxwdCl8MCxJPUkrTWF0aC5pbXVsKFh0LHBuKXwwLEQ9RCtN'@; put 'YXRoLmltdWwoUnQsR2UpfDAscD0ocD1wK01hdGguaW11bChSdCxVdCl8MCkrTWF0aC5pbXVsKEx0LEdlKXwwLEk9SStNYXRoLmltdWwoTHQsVXQpfDAsRD1EK01hdGguaW11bCh0dCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LEJ0KXwwKStNYXRoLmltdWwoS2UseHQpfDAsST1JK01hdGgu'@; put 'aW11bChLZSxCdCl8MCxEPUQrTWF0aC5pbXVsKGhlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUseW4pfDApK01hdGguaW11bCh3ZSxHbil8MCxJPUkrTWF0aC5pbXVsKHdlLHluKXwwLEQ9RCtNYXRoLmltdWwoRmUscnIpfDAscD0ocD1wK01hdGguaW11bChGZSxocil8MCkrTWF0aC5pbXVs'@; put 'KGdlLHJyKXwwLEk9SStNYXRoLmltdWwoZ2UsaHIpfDA7dmFyIE1yPShHKyhEPUQrTWF0aC5pbXVsKGplLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoamUsQm4pfDApK01hdGguaW11bChBZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChBZSxCbil8MCkrKHA+'@; put 'Pj4xMyl8MCkrKE1yPj4+MjYpfDAsTXImPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHB0KSxwPShwPU1hdGguaW11bChsbixwbikpK01hdGguaW11bChPbixwdCl8MCxJPU1hdGguaW11bChPbixwbiksRD1EK01hdGguaW11bChndCxHZSl8MCxwPShwPXArTWF0aC5pbXVsKGd0LFV0KXwwKStN'@; put 'YXRoLmltdWwoWHQsR2UpfDAsST1JK01hdGguaW11bChYdCxVdCl8MCxEPUQrTWF0aC5pbXVsKFJ0LHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsQnQpfDApK01hdGguaW11bChMdCx4dCl8MCxJPUkrTWF0aC5pbXVsKEx0LEJ0KXwwLEQ9RCtNYXRoLmltdWwodHQsR24pfDAscD0ocD1wK01h'@; put 'dGguaW11bCh0dCx5bil8MCkrTWF0aC5pbXVsKEtlLEduKXwwLEk9SStNYXRoLmltdWwoS2UseW4pfDAsRD1EK01hdGguaW11bChoZSxycil8MCxwPShwPXArTWF0aC5pbXVsKGhlLGhyKXwwKStNYXRoLmltdWwod2UscnIpfDAsST1JK01hdGguaW11bCh3ZSxocil8MDt2YXIgRnM9KEcrKEQ9'@; put 'RCtNYXRoLmltdWwoRmUsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChGZSxCbil8MCkrTWF0aC5pbXVsKGdlLHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKGdlLEJuKXwwKSsocD4+PjEzKXwwKSsoRnM+Pj4yNil8MCxGcyY9NjcxMDg4NjMsRD1NYXRoLmltdWwo'@; put 'bG4sR2UpLHA9KHA9TWF0aC5pbXVsKGxuLFV0KSkrTWF0aC5pbXVsKE9uLEdlKXwwLEk9TWF0aC5pbXVsKE9uLFV0KSxEPUQrTWF0aC5pbXVsKGd0LHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QsQnQpfDApK01hdGguaW11bChYdCx4dCl8MCxJPUkrTWF0aC5pbXVsKFh0LEJ0KXwwLEQ9RCtN'@; put 'YXRoLmltdWwoUnQsR24pfDAscD0ocD1wK01hdGguaW11bChSdCx5bil8MCkrTWF0aC5pbXVsKEx0LEduKXwwLEk9SStNYXRoLmltdWwoTHQseW4pfDAsRD1EK01hdGguaW11bCh0dCxycil8MCxwPShwPXArTWF0aC5pbXVsKHR0LGhyKXwwKStNYXRoLmltdWwoS2UscnIpfDAsST1JK01hdGgu'@; put 'aW11bChLZSxocil8MDt2YXIgJGk9KEcrKEQ9RCtNYXRoLmltdWwoaGUsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChoZSxCbil8MCkrTWF0aC5pbXVsKHdlLHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKHdlLEJuKXwwKSsocD4+PjEzKXwwKSsoJGk+Pj4yNil8'@; put 'MCwkaSY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4seHQpLHA9KHA9TWF0aC5pbXVsKGxuLEJ0KSkrTWF0aC5pbXVsKE9uLHh0KXwwLEk9TWF0aC5pbXVsKE9uLEJ0KSxEPUQrTWF0aC5pbXVsKGd0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwoZ3QseW4pfDApK01hdGguaW11bChYdCxHbil8MCxJ'@; put 'PUkrTWF0aC5pbXVsKFh0LHluKXwwLEQ9RCtNYXRoLmltdWwoUnQscnIpfDAscD0ocD1wK01hdGguaW11bChSdCxocil8MCkrTWF0aC5pbXVsKEx0LHJyKXwwLEk9SStNYXRoLmltdWwoTHQsaHIpfDA7dmFyIF9zPShHKyhEPUQrTWF0aC5pbXVsKHR0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9'@; put 'cCtNYXRoLmltdWwodHQsQm4pfDApK01hdGguaW11bChLZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChLZSxCbil8MCkrKHA+Pj4xMyl8MCkrKF9zPj4+MjYpfDAsX3MmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLEduKSxwPShwPU1hdGguaW11bChsbix5bikpK01hdGguaW11'@; put 'bChPbixHbil8MCxJPU1hdGguaW11bChPbix5biksRD1EK01hdGguaW11bChndCxycil8MCxwPShwPXArTWF0aC5pbXVsKGd0LGhyKXwwKStNYXRoLmltdWwoWHQscnIpfDAsST1JK01hdGguaW11bChYdCxocil8MDt2YXIganM9KEcrKEQ9RCtNYXRoLmltdWwoUnQsdm4pfDApfDApKygoODE5'@; put 'MSYocD0ocD1wK01hdGguaW11bChSdCxCbil8MCkrTWF0aC5pbXVsKEx0LHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKEx0LEJuKXwwKSsocD4+PjEzKXwwKSsoanM+Pj4yNil8MCxqcyY9NjcxMDg4NjMsRD1NYXRoLmltdWwobG4scnIpLHA9KHA9TWF0aC5pbXVsKGxuLGhyKSkr'@; put 'TWF0aC5pbXVsKE9uLHJyKXwwLEk9TWF0aC5pbXVsKE9uLGhyKTt2YXIgQ2w9KEcrKEQ9RCtNYXRoLmltdWwoZ3Qsdm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChndCxCbil8MCkrTWF0aC5pbXVsKFh0LHZuKXwwKSk8PDEzKXwwO0c9KChJPUkrTWF0aC5pbXVsKFh0LEJuKXww'@; put 'KSsocD4+PjEzKXwwKSsoQ2w+Pj4yNil8MCxDbCY9NjcxMDg4NjM7dmFyIFRpPShHKyhEPU1hdGguaW11bChsbix2bikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwobG4sQm4pKStNYXRoLmltdWwoT24sdm4pfDApKTw8MTMpfDA7cmV0dXJuIEc9KChJPU1hdGguaW11bChPbixCbikpKyhw'@; put 'Pj4+MTMpfDApKyhUaT4+PjI2KXwwLFRpJj02NzEwODg2MyxLWzBdPWphLEtbMV09am8sS1syXT1YcixLWzNdPWVhLEtbNF09cmEsS1s1XT1jYSxLWzZdPUNpLEtbN109aG8sS1s4XT1NYSxLWzldPWtzLEtbMTBdPUJpLEtbMTFdPXRhLEtbMTJdPU1yLEtbMTNdPUZzLEtbMTRdPSRpLEtbMTVd'@; put 'PV9zLEtbMTZdPWpzLEtbMTddPUNsLEtbMThdPVRpLDAhPT1HJiYoS1sxOV09RyxrLmxlbmd0aCsrKSxrfTtmdW5jdGlvbiBZKFgsZixiKXtyZXR1cm4obmV3IEYpLm11bHAoWCxmLGIpfWZ1bmN0aW9uIEYoWCxmKXt0aGlzLng9WCx0aGlzLnk9Zn1NYXRoLmltdWx8fChOPVYpLHYucHJvdG90'@; put 'eXBlLm11bFRvPWZ1bmN0aW9uKGYsYil7dmFyIGssTT10aGlzLmxlbmd0aCtmLmxlbmd0aDtyZXR1cm4gaz0xMD09PXRoaXMubGVuZ3RoJiYxMD09PWYubGVuZ3RoP04odGhpcyxmLGIpOk08NjM/Vih0aGlzLGYsYik6TTwxMDI0P2Z1bmN0aW9uIHooWCxmLGIpe2IubmVnYXRpdmU9Zi5uZWdh'@; put 'dGl2ZV5YLm5lZ2F0aXZlLGIubGVuZ3RoPVgubGVuZ3RoK2YubGVuZ3RoO2Zvcih2YXIgaz0wLE09MCxCPTA7QjxiLmxlbmd0aC0xO0IrKyl7dmFyIEs9TTtNPTA7Zm9yKHZhciBHPTY3MTA4ODYzJmssRD1NYXRoLm1pbihCLGYubGVuZ3RoLTEpLHA9TWF0aC5tYXgoMCxCLVgubGVuZ3RoKzEp'@; put 'O3A8PUQ7cCsrKXt2YXIgX2U9KDB8WC53b3Jkc1tCLXBdKSooMHxmLndvcmRzW3BdKSxQZT02NzEwODg2MyZfZTtHPTY3MTA4ODYzJihQZT1QZStHfDApLE0rPShLPShLPUsrKF9lLzY3MTA4ODY0fDApfDApKyhQZT4+PjI2KXwwKT4+PjI2LEsmPTY3MTA4ODYzfWIud29yZHNbQl09RyxrPUss'@; put 'Sz1NfXJldHVybiAwIT09az9iLndvcmRzW0JdPWs6Yi5sZW5ndGgtLSxiLnN0cmlwKCl9KHRoaXMsZixiKTpZKHRoaXMsZixiKSxrfSxGLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGYpe2Zvcih2YXIgYj1uZXcgQXJyYXkoZiksaz12LnByb3RvdHlwZS5fY291bnRCaXRzKGYpLTEsTT0w'@; put 'O008ZjtNKyspYltNXT10aGlzLnJldkJpbihNLGssZik7cmV0dXJuIGJ9LEYucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihmLGIsayl7aWYoMD09PWZ8fGY9PT1rLTEpcmV0dXJuIGY7Zm9yKHZhciBNPTAsQj0wO0I8YjtCKyspTXw9KDEmZik8PGItQi0xLGY+Pj0xO3JldHVybiBNfSxGLnBy'@; put 'b3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGYsYixrLE0sQixLKXtmb3IodmFyIEc9MDtHPEs7RysrKU1bR109YltmW0ddXSxCW0ddPWtbZltHXV19LEYucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihmLGIsayxNLEIsSyl7dGhpcy5wZXJtdXRlKEssZixiLGssTSxCKTtmb3IodmFyIEc9'@; put 'MTtHPEI7Rzw8PTEpZm9yKHZhciBEPUc8PDEscD1NYXRoLmNvcygyKk1hdGguUEkvRCksST1NYXRoLnNpbigyKk1hdGguUEkvRCksdWU9MDt1ZTxCO3VlKz1EKWZvcih2YXIgbmU9cCxfZT1JLFBlPTA7UGU8RztQZSsrKXt2YXIgb3Q9a1t1ZStQZV0sbHQ9TVt1ZStQZV0sZHQ9a1t1ZStQZStH'@; put 'XSxSZT1NW3VlK1BlK0ddLGFlPW5lKmR0LV9lKlJlO1JlPW5lKlJlK19lKmR0LGtbdWUrUGVdPW90KyhkdD1hZSksTVt1ZStQZV09bHQrUmUsa1t1ZStQZStHXT1vdC1kdCxNW3VlK1BlK0ddPWx0LVJlLFBlIT09RCYmKGFlPXAqbmUtSSpfZSxfZT1wKl9lK0kqbmUsbmU9YWUpfX0sRi5wcm90'@; put 'b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oZixiKXt2YXIgaz0xfE1hdGgubWF4KGIsZiksTT0xJmssQj0wO2ZvcihrPWsvMnwwO2s7az4+Pj0xKUIrKztyZXR1cm4gMTw8QisxK019LEYucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihmLGIsayl7aWYoIShrPD0xKSlmb3IodmFyIE09'@; put 'MDtNPGsvMjtNKyspe3ZhciBCPWZbTV07ZltNXT1mW2stTS0xXSxmW2stTS0xXT1CLEI9YltNXSxiW01dPS1iW2stTS0xXSxiW2stTS0xXT0tQn19LEYucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihmLGIpe2Zvcih2YXIgaz0wLE09MDtNPGIvMjtNKyspe3ZhciBCPTgxOTIqTWF0'@; put 'aC5yb3VuZChmWzIqTSsxXS9iKStNYXRoLnJvdW5kKGZbMipNXS9iKStrO2ZbTV09NjcxMDg4NjMmQixrPUI8NjcxMDg4NjQ/MDpCLzY3MTA4ODY0fDB9cmV0dXJuIGZ9LEYucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oZixiLGssTSl7Zm9yKHZhciBCPTAsSz0wO0s8YjtLKyspa1sy'@; put 'KktdPTgxOTEmKEIrPTB8ZltLXSksa1syKksrMV09ODE5MSYoQj4+Pj0xMyksQj4+Pj0xMztmb3IoSz0yKmI7SzxNOysrSylrW0tdPTA7cygwPT09QikscyghKC04MTkyJkIpKX0sRi5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihmKXtmb3IodmFyIGI9bmV3IEFycmF5KGYpLGs9MDtrPGY7aysr'@; put 'KWJba109MDtyZXR1cm4gYn0sRi5wcm90b3R5cGUubXVscD1mdW5jdGlvbihmLGIsayl7dmFyIE09Mip0aGlzLmd1ZXNzTGVuMTNiKGYubGVuZ3RoLGIubGVuZ3RoKSxCPXRoaXMubWFrZVJCVChNKSxLPXRoaXMuc3R1YihNKSxHPW5ldyBBcnJheShNKSxEPW5ldyBBcnJheShNKSxwPW5ldyBB'@; put 'cnJheShNKSxJPW5ldyBBcnJheShNKSx1ZT1uZXcgQXJyYXkoTSksbmU9bmV3IEFycmF5KE0pLF9lPWsud29yZHM7X2UubGVuZ3RoPU0sdGhpcy5jb252ZXJ0MTNiKGYud29yZHMsZi5sZW5ndGgsRyxNKSx0aGlzLmNvbnZlcnQxM2IoYi53b3JkcyxiLmxlbmd0aCxJLE0pLHRoaXMudHJhbnNm'@; put 'b3JtKEcsSyxELHAsTSxCKSx0aGlzLnRyYW5zZm9ybShJLEssdWUsbmUsTSxCKTtmb3IodmFyIFBlPTA7UGU8TTtQZSsrKXt2YXIgb3Q9RFtQZV0qdWVbUGVdLXBbUGVdKm5lW1BlXTtwW1BlXT1EW1BlXSpuZVtQZV0rcFtQZV0qdWVbUGVdLERbUGVdPW90fXJldHVybiB0aGlzLmNvbmp1Z2F0'@; put 'ZShELHAsTSksdGhpcy50cmFuc2Zvcm0oRCxwLF9lLEssTSxCKSx0aGlzLmNvbmp1Z2F0ZShfZSxLLE0pLHRoaXMubm9ybWFsaXplMTNiKF9lLE0pLGsubmVnYXRpdmU9Zi5uZWdhdGl2ZV5iLm5lZ2F0aXZlLGsubGVuZ3RoPWYubGVuZ3RoK2IubGVuZ3RoLGsuc3RyaXAoKX0sdi5wcm90b3R5'@; put 'cGUubXVsPWZ1bmN0aW9uKGYpe3ZhciBiPW5ldyB2KG51bGwpO3JldHVybiBiLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtmLmxlbmd0aCksdGhpcy5tdWxUbyhmLGIpfSx2LnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGYpe3ZhciBiPW5ldyB2KG51bGwpO3JldHVybiBiLndvcmRzPW5l'@; put 'dyBBcnJheSh0aGlzLmxlbmd0aCtmLmxlbmd0aCksWSh0aGlzLGYsYil9LHYucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhmLHRoaXMpfSx2LnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihmKXtzKCJudW1iZXIiPT10eXBlb2YgZikscyhmPDY3'@; put 'MTA4ODY0KTtmb3IodmFyIGI9MCxrPTA7azx0aGlzLmxlbmd0aDtrKyspe3ZhciBNPSgwfHRoaXMud29yZHNba10pKmYsQj0oNjcxMDg4NjMmTSkrKDY3MTA4ODYzJmIpO2I+Pj0yNixiKz1NLzY3MTA4ODY0fDAsYis9Qj4+PjI2LHRoaXMud29yZHNba109NjcxMDg4NjMmQn1yZXR1cm4gMCE9'@; put 'PWImJih0aGlzLndvcmRzW2tdPWIsdGhpcy5sZW5ndGgrKyksMD09PWYmJih0aGlzLmxlbmd0aD0xLHRoaXMuX25vcm1TaWduKCkpLHRoaXN9LHYucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihmKX0sdi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSx2LnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSx2LnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZil7dmFyIGI9ZnVuY3Rpb24gSChYKXtmb3IodmFyIGY9bmV3IEFycmF5KFguYml0TGVuZ3Ro'@; put 'KCkpLGI9MDtiPGYubGVuZ3RoO2IrKyl7dmFyIE09YiUyNjtmW2JdPShYLndvcmRzW2IvMjZ8MF0mMTw8TSk+Pj5NfXJldHVybiBmfShmKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIG5ldyB2KDEpO2Zvcih2YXIgaz10aGlzLE09MDtNPGIubGVuZ3RoJiYwPT09YltNXTtNKyssaz1rLnNxcigp'@; put 'KTtpZigrK008Yi5sZW5ndGgpZm9yKHZhciBCPWsuc3FyKCk7TTxiLmxlbmd0aDtNKyssQj1CLnNxcigpKTAhPT1iW01dJiYoaz1rLm11bChCKSk7cmV0dXJuIGt9LHYucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihmKXtzKCJudW1iZXIiPT10eXBlb2YgZiYmZj49MCk7dmFyIEIsYj1mJTI2'@; put 'LGs9KGYtYikvMjYsTT02NzEwODg2Mz4+PjI2LWI8PDI2LWI7aWYoMCE9PWIpe3ZhciBLPTA7Zm9yKEI9MDtCPHRoaXMubGVuZ3RoO0IrKyl7dmFyIEc9dGhpcy53b3Jkc1tCXSZNO3RoaXMud29yZHNbQl09KDB8dGhpcy53b3Jkc1tCXSktRzw8YnxLLEs9Rz4+PjI2LWJ9SyYmKHRoaXMud29y'@; put 'ZHNbQl09Syx0aGlzLmxlbmd0aCsrKX1pZigwIT09ayl7Zm9yKEI9dGhpcy5sZW5ndGgtMTtCPj0wO0ItLSl0aGlzLndvcmRzW0Ira109dGhpcy53b3Jkc1tCXTtmb3IoQj0wO0I8aztCKyspdGhpcy53b3Jkc1tCXT0wO3RoaXMubGVuZ3RoKz1rfXJldHVybiB0aGlzLnN0cmlwKCl9LHYucHJv'@; put 'dG90eXBlLmlzaGxuPWZ1bmN0aW9uKGYpe3JldHVybiBzKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihmKX0sdi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKGYsYixrKXt2YXIgTTtzKCJudW1iZXIiPT10eXBlb2YgZiYmZj49MCksTT1iPyhiLWIlMjYpLzI2OjA7dmFyIEI9ZiUy'@; put 'NixLPU1hdGgubWluKChmLUIpLzI2LHRoaXMubGVuZ3RoKSxHPTY3MTA4ODYzXjY3MTA4ODYzPj4+Qjw8QixEPWs7aWYoTS09SyxNPU1hdGgubWF4KDAsTSksRCl7Zm9yKHZhciBwPTA7cDxLO3ArKylELndvcmRzW3BdPXRoaXMud29yZHNbcF07RC5sZW5ndGg9S31pZigwIT09SylpZih0aGlz'@; put 'Lmxlbmd0aD5LKWZvcih0aGlzLmxlbmd0aC09SyxwPTA7cDx0aGlzLmxlbmd0aDtwKyspdGhpcy53b3Jkc1twXT10aGlzLndvcmRzW3ArS107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgST0wO2ZvcihwPXRoaXMubGVuZ3RoLTE7cD49MCYmKDAhPT1JfHxwPj1NKTtw'@; put 'LS0pe3ZhciB1ZT0wfHRoaXMud29yZHNbcF07dGhpcy53b3Jkc1twXT1JPDwyNi1CfHVlPj4+QixJPXVlJkd9cmV0dXJuIEQmJjAhPT1JJiYoRC53b3Jkc1tELmxlbmd0aCsrXT1JKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgp'@; put 'fSx2LnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihmLGIsayl7cmV0dXJuIHMoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGYsYixrKX0sdi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGYpfSx2LnByb3RvdHlwZS51c2hsbj1mdW5j'@; put 'dGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihmKX0sdi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGYpfSx2LnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihmKX0sdi5wcm90'@; put 'b3R5cGUudGVzdG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBiPWYlMjYsaz0oZi1iKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1rfHwhKHRoaXMud29yZHNba10mMTw8YikpfSx2LnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oZil7cygibnVtYmVyIj09'@; put 'dHlwZW9mIGYmJmY+PTApO3ZhciBiPWYlMjYsaz0oZi1iKS8yNjtyZXR1cm4gcygwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PWs/dGhpczooMCE9PWImJmsrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihrLHRo'@; put 'aXMubGVuZ3RoKSwwIT09YiYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+Yjw8YiksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKSl9LHYucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGYp'@; put 'e3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGYpfSx2LnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihmKXtyZXR1cm4gcygibnVtYmVyIj09dHlwZW9mIGYpLHMoZjw2NzEwODg2NCksZjwwP3RoaXMuaXN1Ym4oLWYpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhp'@; put 'cy53b3Jkc1swXSk8Zj8odGhpcy53b3Jkc1swXT1mLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGYpfSx2LnByb3RvdHlwZS5faWFkZG49ZnVuY3Rp'@; put 'b24oZil7dGhpcy53b3Jkc1swXSs9Zjtmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2JdPj02NzEwODg2NDtiKyspdGhpcy53b3Jkc1tiXS09NjcxMDg4NjQsYj09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tiKzFdPTE6dGhpcy53b3Jkc1tiKzFdKys7cmV0dXJuIHRo'@; put 'aXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGIrMSksdGhpc30sdi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZil7aWYocygibnVtYmVyIj09dHlwZW9mIGYpLHMoZjw2NzEwODg2NCksZjwwKXJldHVybiB0aGlzLmlhZGRuKC1mKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4g'@; put 'dGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZiksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZiwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgYj0w'@; put 'O2I8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbYl08MDtiKyspdGhpcy53b3Jkc1tiXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tiKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihmKX0sdi5wcm90'@; put 'b3R5cGUuc3Vibj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGYpfSx2LnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSx2LnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0s'@; put 'di5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGYsYixrKXt2YXIgQjt0aGlzLl9leHBhbmQoZi5sZW5ndGgrayk7dmFyIEssRz0wO2ZvcihCPTA7QjxmLmxlbmd0aDtCKyspe0s9KDB8dGhpcy53b3Jkc1tCK2tdKStHO3ZhciBEPSgwfGYud29yZHNbQl0pKmI7Rz0oKEstPTY3MTA4'@; put 'ODYzJkQpPj4yNiktKEQvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tCK2tdPTY3MTA4ODYzJkt9Zm9yKDtCPHRoaXMubGVuZ3RoLWs7QisrKUc9KEs9KDB8dGhpcy53b3Jkc1tCK2tdKStHKT4+MjYsdGhpcy53b3Jkc1tCK2tdPTY3MTA4ODYzJks7aWYoMD09PUcpcmV0dXJuIHRoaXMuc3RyaXAo'@; put 'KTtmb3IocygtMT09PUcpLEc9MCxCPTA7Qjx0aGlzLmxlbmd0aDtCKyspRz0oSz0tKDB8dGhpcy53b3Jkc1tCXSkrRyk+PjI2LHRoaXMud29yZHNbQl09NjcxMDg4NjMmSztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24o'@; put 'ZixiKXt2YXIgayxNPXRoaXMuY2xvbmUoKSxCPWYsSz0wfEIud29yZHNbQi5sZW5ndGgtMV07MCE9KGs9MjYtdGhpcy5fY291bnRCaXRzKEspKSYmKEI9Qi51c2hsbihrKSxNLml1c2hsbihrKSxLPTB8Qi53b3Jkc1tCLmxlbmd0aC0xXSk7dmFyIHAsRD1NLmxlbmd0aC1CLmxlbmd0aDtpZigi'@; put 'bW9kIiE9PWIpeyhwPW5ldyB2KG51bGwpKS5sZW5ndGg9RCsxLHAud29yZHM9bmV3IEFycmF5KHAubGVuZ3RoKTtmb3IodmFyIEk9MDtJPHAubGVuZ3RoO0krKylwLndvcmRzW0ldPTB9dmFyIHVlPU0uY2xvbmUoKS5faXNobG5zdWJtdWwoQiwxLEQpOzA9PT11ZS5uZWdhdGl2ZSYmKE09dWUs'@; put 'cCYmKHAud29yZHNbRF09MSkpO2Zvcih2YXIgbmU9RC0xO25lPj0wO25lLS0pe3ZhciBfZT02NzEwODg2NCooMHxNLndvcmRzW0IubGVuZ3RoK25lXSkrKDB8TS53b3Jkc1tCLmxlbmd0aCtuZS0xXSk7Zm9yKF9lPU1hdGgubWluKF9lL0t8MCw2NzEwODg2MyksTS5faXNobG5zdWJtdWwoQixf'@; put 'ZSxuZSk7MCE9PU0ubmVnYXRpdmU7KV9lLS0sTS5uZWdhdGl2ZT0wLE0uX2lzaGxuc3VibXVsKEIsMSxuZSksTS5pc1plcm8oKXx8KE0ubmVnYXRpdmVePTEpO3AmJihwLndvcmRzW25lXT1fZSl9cmV0dXJuIHAmJnAuc3RyaXAoKSxNLnN0cmlwKCksImRpdiIhPT1iJiYwIT09ayYmTS5pdXNo'@; put 'cm4oaykse2RpdjpwfHxudWxsLG1vZDpNfX0sdi5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGYsYixrKXtyZXR1cm4gcyghZi5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyB2KDApLG1vZDpuZXcgdigwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1mLm5lZ2F0aXZlPyhLPXRo'@; put 'aXMubmVnKCkuZGl2bW9kKGYsYiksIm1vZCIhPT1iJiYoTT1LLmRpdi5uZWcoKSksImRpdiIhPT1iJiYoQj1LLm1vZC5uZWcoKSxrJiYwIT09Qi5uZWdhdGl2ZSYmQi5pYWRkKGYpKSx7ZGl2Ok0sbW9kOkJ9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmU/KEs9dGhpcy5kaXZt'@; put 'b2QoZi5uZWcoKSxiKSwibW9kIiE9PWImJihNPUsuZGl2Lm5lZygpKSx7ZGl2Ok0sbW9kOksubW9kfSk6MCE9PSh0aGlzLm5lZ2F0aXZlJmYubmVnYXRpdmUpPyhLPXRoaXMubmVnKCkuZGl2bW9kKGYubmVnKCksYiksImRpdiIhPT1iJiYoQj1LLm1vZC5uZWcoKSxrJiYwIT09Qi5uZWdhdGl2'@; put 'ZSYmQi5pc3ViKGYpKSx7ZGl2OksuZGl2LG1vZDpCfSk6Zi5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGYpPDA/e2RpdjpuZXcgdigwKSxtb2Q6dGhpc306MT09PWYubGVuZ3RoPyJkaXYiPT09Yj97ZGl2OnRoaXMuZGl2bihmLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1iP3tk'@; put 'aXY6bnVsbCxtb2Q6bmV3IHYodGhpcy5tb2RuKGYud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZi53b3Jkc1swXSksbW9kOm5ldyB2KHRoaXMubW9kbihmLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZixiKTt2YXIgTSxCLEt9LHYucHJvdG90eXBlLmRpdj1mdW5jdGlvbihmKXtyZXR1'@; put 'cm4gdGhpcy5kaXZtb2QoZiwiZGl2IiwhMSkuZGl2fSx2LnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsIm1vZCIsITEpLm1vZH0sdi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5kaXZtb2QoZiwibW9kIiwhMCkubW9kfSx2LnBy'@; put 'b3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihmKXt2YXIgYj10aGlzLmRpdm1vZChmKTtpZihiLm1vZC5pc1plcm8oKSlyZXR1cm4gYi5kaXY7dmFyIGs9Yi5tb2QuYWJzKCksTT1mLmFicygpLml1c2hybigxKSxCPTEmZi53b3Jkc1swXSxLPWsuY21wKE0pO2lmKEs8MHx8MT09PUImJjA9PT1L'@; put 'KXJldHVybiBiLmRpdjt2YXIgRz1uZXcgdigxKTtyZXR1cm4gRy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlXmYubmVnYXRpdmUsYi5kaXYuaWFkZChHKX0sdi5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihmKXtzKGY8PTY3MTA4ODYzKTtmb3IodmFyIGI9KDE8PDI2KSVmLGs9MCxNPXRoaXMubGVu'@; put 'Z3RoLTE7TT49MDtNLS0paz0oYiprKygwfHRoaXMud29yZHNbTV0pKSVmO3JldHVybiBrfSx2LnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihmKXtzKGY8PTY3MTA4ODYzKTtmb3IodmFyIGI9MCxrPXRoaXMubGVuZ3RoLTE7az49MDtrLS0pe3ZhciBNPSgwfHRoaXMud29yZHNba10pKzY3MTA4'@; put 'ODY0KmI7dGhpcy53b3Jkc1trXT1NL2Z8MCxiPU0lZn1yZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oZil9LHYucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oZil7cygwPT09Zi5uZWdhdGl2ZSkscyghZi5p'@; put 'c1plcm8oKSk7dmFyIGI9dGhpcyxrPWYuY2xvbmUoKTtiPTAhPT1iLm5lZ2F0aXZlP2IudW1vZChmKTpiLmNsb25lKCk7Zm9yKHZhciBNPW5ldyB2KDEpLEI9bmV3IHYoMCksSz1uZXcgdigwKSxHPW5ldyB2KDEpLEQ9MDtiLmlzRXZlbigpJiZrLmlzRXZlbigpOyliLml1c2hybigxKSxrLml1'@; put 'c2hybigxKSwrK0Q7Zm9yKHZhciBwPWsuY2xvbmUoKSxJPWIuY2xvbmUoKTshYi5pc1plcm8oKTspe2Zvcih2YXIgdWU9MCxuZT0xOzA9PT0oYi53b3Jkc1swXSZuZSkmJnVlPDI2OysrdWUsbmU8PD0xKTtpZih1ZT4wKWZvcihiLml1c2hybih1ZSk7dWUtLSA+MDspKE0uaXNPZGQoKXx8Qi5p'@; put 'c09kZCgpKSYmKE0uaWFkZChwKSxCLmlzdWIoSSkpLE0uaXVzaHJuKDEpLEIuaXVzaHJuKDEpO2Zvcih2YXIgX2U9MCxQZT0xOzA9PT0oay53b3Jkc1swXSZQZSkmJl9lPDI2OysrX2UsUGU8PD0xKTtpZihfZT4wKWZvcihrLml1c2hybihfZSk7X2UtLSA+MDspKEsuaXNPZGQoKXx8Ry5pc09k'@; put 'ZCgpKSYmKEsuaWFkZChwKSxHLmlzdWIoSSkpLEsuaXVzaHJuKDEpLEcuaXVzaHJuKDEpO2IuY21wKGspPj0wPyhiLmlzdWIoayksTS5pc3ViKEspLEIuaXN1YihHKSk6KGsuaXN1YihiKSxLLmlzdWIoTSksRy5pc3ViKEIpKX1yZXR1cm57YTpLLGI6RyxnY2Q6ay5pdXNobG4oRCl9fSx2LnBy'@; put 'b3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oZil7cygwPT09Zi5uZWdhdGl2ZSkscyghZi5pc1plcm8oKSk7dmFyIHVlLGI9dGhpcyxrPWYuY2xvbmUoKTtiPTAhPT1iLm5lZ2F0aXZlP2IudW1vZChmKTpiLmNsb25lKCk7Zm9yKHZhciBNPW5ldyB2KDEpLEI9bmV3IHYoMCksSz1rLmNsb25lKCk7'@; put 'Yi5jbXBuKDEpPjAmJmsuY21wbigxKT4wOyl7Zm9yKHZhciBHPTAsRD0xOzA9PT0oYi53b3Jkc1swXSZEKSYmRzwyNjsrK0csRDw8PTEpO2lmKEc+MClmb3IoYi5pdXNocm4oRyk7Ry0tID4wOylNLmlzT2RkKCkmJk0uaWFkZChLKSxNLml1c2hybigxKTtmb3IodmFyIHA9MCxJPTE7MD09PShr'@; put 'LndvcmRzWzBdJkkpJiZwPDI2OysrcCxJPDw9MSk7aWYocD4wKWZvcihrLml1c2hybihwKTtwLS0gPjA7KUIuaXNPZGQoKSYmQi5pYWRkKEspLEIuaXVzaHJuKDEpO2IuY21wKGspPj0wPyhiLmlzdWIoayksTS5pc3ViKEIpKTooay5pc3ViKGIpLEIuaXN1YihNKSl9cmV0dXJuKHVlPTA9PT1i'@; put 'LmNtcG4oMSk/TTpCKS5jbXBuKDApPDAmJnVlLmlhZGQoZiksdWV9LHYucHJvdG90eXBlLmdjZD1mdW5jdGlvbihmKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBmLmFicygpO2lmKGYuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIGI9dGhpcy5jbG9uZSgpLGs9Zi5jbG9uZSgpO2Iu'@; put 'bmVnYXRpdmU9MCxrLm5lZ2F0aXZlPTA7Zm9yKHZhciBNPTA7Yi5pc0V2ZW4oKSYmay5pc0V2ZW4oKTtNKyspYi5pdXNocm4oMSksay5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO2IuaXNFdmVuKCk7KWIuaXVzaHJuKDEpO2Zvcig7ay5pc0V2ZW4oKTspay5pdXNocm4oMSk7dmFyIEI9Yi5jbXAo'@; put 'ayk7aWYoQjwwKXt2YXIgSz1iO2I9ayxrPUt9ZWxzZSBpZigwPT09Qnx8MD09PWsuY21wbigxKSlicmVhaztiLmlzdWIoayl9cmV0dXJuIGsuaXVzaGxuKE0pfSx2LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmVnY2QoZikuYS51bW9kKGYpfSx2LnByb3RvdHlwZS5p'@; put 'c0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LHYucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sdi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMud29yZHNbMF0mZn0sdi5wcm90b3R5cGUu'@; put 'YmluY249ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYpO3ZhciBiPWYlMjYsaz0oZi1iKS8yNixNPTE8PGI7aWYodGhpcy5sZW5ndGg8PWspcmV0dXJuIHRoaXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba118PU0sdGhpcztmb3IodmFyIEI9TSxLPWs7MCE9PUImJks8dGhpcy5s'@; put 'ZW5ndGg7SysrKXt2YXIgRz0wfHRoaXMud29yZHNbS107Qj0oRys9Qik+Pj4yNix0aGlzLndvcmRzW0tdPUcmPTY3MTA4ODYzfXJldHVybiAwIT09QiYmKHRoaXMud29yZHNbS109Qix0aGlzLmxlbmd0aCsrKSx0aGlzfSx2LnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09'@; put 'PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sdi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihmKXt2YXIgayxiPWY8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIWIpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmIpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVu'@; put 'Z3RoPjEpaz0xO2Vsc2V7YiYmKGY9LWYpLHMoZjw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIE09MHx0aGlzLndvcmRzWzBdO2s9TT09PWY/MDpNPGY/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtazprfSx2LnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZil7aWYo'@; put 'MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1mLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zi5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgYj10aGlzLnVjbXAoZik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LWI6Yn0sdi5wcm90b3R5cGUudWNtcD1mdW5jdGlv'@; put 'bihmKXtpZih0aGlzLmxlbmd0aD5mLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxmLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIGI9MCxrPXRoaXMubGVuZ3RoLTE7az49MDtrLS0pe3ZhciBNPTB8dGhpcy53b3Jkc1trXSxCPTB8Zi53b3Jkc1trXTtpZihNIT09Qil7TTxCP2I9LTE6'@; put 'TT5CJiYoYj0xKTticmVha319cmV0dXJuIGJ9LHYucHJvdG90eXBlLmd0bj1mdW5jdGlvbihmKXtyZXR1cm4gMT09PXRoaXMuY21wbihmKX0sdi5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZil7cmV0dXJuIDE9PT10aGlzLmNtcChmKX0sdi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihmKXtyZXR1'@; put 'cm4gdGhpcy5jbXBuKGYpPj0wfSx2LnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY21wKGYpPj0wfSx2LnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZil7cmV0dXJuLTE9PT10aGlzLmNtcG4oZil9LHYucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGYpe3JldHVybi0xPT09dGhp'@; put 'cy5jbXAoZil9LHYucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY21wbihmKTw9MH0sdi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNtcChmKTw9MH0sdi5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGYpe3JldHVybiAwPT09dGhpcy5jbXBuKGYp'@; put 'fSx2LnByb3RvdHlwZS5lcT1mdW5jdGlvbihmKXtyZXR1cm4gMD09PXRoaXMuY21wKGYpfSx2LnJlZD1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGtlKGYpfSx2LnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihmKXtyZXR1cm4gcyghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0'@; put 'aW9uIGNvbnRleHQiKSxzKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGYuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChmKX0sdi5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9u'@; put 'bHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LHYucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5yZWQ9Zix0aGlzfSx2LnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihmKXtyZXR1cm4g'@; put 'cyghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChmKX0sdi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5y'@; put 'ZWQuYWRkKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oZil7cmV0dXJu'@; put 'IHModGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz'@; put 'LnJlZC5pc3ViKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oZil7cmV0dXJu'@; put 'IHModGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGYpLHRoaXMucmVkLm11bCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25s'@; put 'eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxmKSx0aGlzLnJlZC5pbXVsKHRoaXMsZil9LHYucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQu'@; put 'X3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSx2LnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlz'@; put 'KX0sdi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBzKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LHYucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSx2LnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkTmVnIHdvcmtz'@; put 'IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sdi5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkJiYhZi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEo'@; put 'dGhpcyksdGhpcy5yZWQucG93KHRoaXMsZil9O3ZhciBXPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gcShYLGYpe3RoaXMubmFtZT1YLHRoaXMucD1uZXcgdihmLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgdigx'@; put 'KS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gcmUoKXtxLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rp'@; put 'b24gbWUoKXtxLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gQ2UoKXtxLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZm'@; put 'ZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gSWUoKXtxLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24ga2UoWCl7aWYoInN0cmluZyI9PXR5cGVvZiBYKXt2YXIg'@; put 'Zj12Ll9wcmltZShYKTt0aGlzLm09Zi5wLHRoaXMucHJpbWU9Zn1lbHNlIHMoWC5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1YLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBxZShYKXtrZS5jYWxsKHRoaXMsWCksdGhpcy5zaGlmdD10aGlzLm0uYml0'@; put 'TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgdigxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWlu'@; put 'dj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1xLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGY9bmV3IHYobnVsbCk7cmV0dXJuIGYu'@; put 'd29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxmfSxxLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGYpe3ZhciBrLGI9Zjtkb3t0aGlzLnNwbGl0KGIsdGhpcy50bXApLGs9KGI9KGI9dGhpcy5pbXVsSyhiKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxl'@; put 'KGs+dGhpcy5uKTt2YXIgTT1rPHRoaXMubj8tMTpiLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PU0/KGIud29yZHNbMF09MCxiLmxlbmd0aD0xKTpNPjA/Yi5pc3ViKHRoaXMucCk6dm9pZCAwIT09Yi5zdHJpcD9iLnN0cmlwKCk6Yi5fc3RyaXAoKSxifSxxLnByb3RvdHlwZS5zcGxpdD1mdW5j'@; put 'dGlvbihmLGIpe2YuaXVzaHJuKHRoaXMubiwwLGIpfSxxLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihmKXtyZXR1cm4gZi5pbXVsKHRoaXMuayl9LEEocmUscSkscmUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGYsYil7Zm9yKHZhciBrPTQxOTQzMDMsTT1NYXRoLm1pbihmLmxlbmd0aCw5'@; put 'KSxCPTA7QjxNO0IrKyliLndvcmRzW0JdPWYud29yZHNbQl07aWYoYi5sZW5ndGg9TSxmLmxlbmd0aDw9OSlyZXR1cm4gZi53b3Jkc1swXT0wLHZvaWQoZi5sZW5ndGg9MSk7dmFyIEs9Zi53b3Jkc1s5XTtmb3IoYi53b3Jkc1tiLmxlbmd0aCsrXT1LJmssQj0xMDtCPGYubGVuZ3RoO0IrKyl7'@; put 'dmFyIEc9MHxmLndvcmRzW0JdO2Yud29yZHNbQi0xMF09KEcmayk8PDR8Sz4+PjIyLEs9R31mLndvcmRzW0ItMTBdPUs+Pj49MjIsZi5sZW5ndGgtPTA9PT1LJiZmLmxlbmd0aD4xMD8xMDo5fSxyZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZil7Zi53b3Jkc1tmLmxlbmd0aF09MCxmLndv'@; put 'cmRzW2YubGVuZ3RoKzFdPTAsZi5sZW5ndGgrPTI7Zm9yKHZhciBiPTAsaz0wO2s8Zi5sZW5ndGg7aysrKXt2YXIgTT0wfGYud29yZHNba107Zi53b3Jkc1trXT02NzEwODg2MyYoYis9OTc3Kk0pLGI9NjQqTSsoYi82NzEwODg2NHwwKX1yZXR1cm4gMD09PWYud29yZHNbZi5sZW5ndGgtMV0m'@; put 'JihmLmxlbmd0aC0tLDA9PT1mLndvcmRzW2YubGVuZ3RoLTFdJiZmLmxlbmd0aC0tKSxmfSxBKG1lLHEpLEEoQ2UscSksQShJZSxxKSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZil7Zm9yKHZhciBiPTAsaz0wO2s8Zi5sZW5ndGg7aysrKXt2YXIgTT0xOSooMHxmLndvcmRzW2tdKSti'@; put 'LEI9NjcxMDg4NjMmTTtNPj4+PTI2LGYud29yZHNba109QixiPU19cmV0dXJuIDAhPT1iJiYoZi53b3Jkc1tmLmxlbmd0aCsrXT1iKSxmfSx2Ll9wcmltZT1mdW5jdGlvbihmKXtpZihXW2ZdKXJldHVybiBXW2ZdO3ZhciBiO2lmKCJrMjU2Ij09PWYpYj1uZXcgcmU7ZWxzZSBpZigicDIyNCI9'@; put 'PT1mKWI9bmV3IG1lO2Vsc2UgaWYoInAxOTIiPT09ZiliPW5ldyBDZTtlbHNle2lmKCJwMjU1MTkiIT09Zil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitmKTtiPW5ldyBJZX1yZXR1cm4gV1tmXT1iLGJ9LGtlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihmKXtzKDA9PT1m'@; put 'Lm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHMoZi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sa2UucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKGYsYil7cygwPT09KGYubmVnYXRpdmV8Yi5uZWdhdGl2ZSksInJlZCB3b3JrcyBv'@; put 'bmx5IHdpdGggcG9zaXRpdmVzIikscyhmLnJlZCYmZi5yZWQ9PT1iLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxrZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoZikuX2ZvcmNlUmVkKHRoaXMp'@; put 'OmYudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sa2UucHJvdG90eXBlLm5lZz1mdW5jdGlvbihmKXtyZXR1cm4gZi5pc1plcm8oKT9mLmNsb25lKCk6dGhpcy5tLnN1YihmKS5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZixiKXt0aGlzLl92ZXJpZnky'@; put 'KGYsYik7dmFyIGs9Zi5hZGQoYik7cmV0dXJuIGsuY21wKHRoaXMubSk+PTAmJmsuaXN1Yih0aGlzLm0pLGsuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihmLGIpe3RoaXMuX3ZlcmlmeTIoZixiKTt2YXIgaz1mLmlhZGQoYik7cmV0dXJuIGsuY21wKHRoaXMu'@; put 'bSk+PTAmJmsuaXN1Yih0aGlzLm0pLGt9LGtlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZixiKXt0aGlzLl92ZXJpZnkyKGYsYik7dmFyIGs9Zi5zdWIoYik7cmV0dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sa2UucHJvdG90eXBlLmlzdWI9ZnVu'@; put 'Y3Rpb24oZixiKXt0aGlzLl92ZXJpZnkyKGYsYik7dmFyIGs9Zi5pc3ViKGIpO3JldHVybiBrLmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksa30sa2UucHJvdG90eXBlLnNobD1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLl92ZXJpZnkxKGYpLHRoaXMuaW1vZChmLnVzaGxuKGIpKX0sa2Uu'@; put 'cHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihmLGIpLHRoaXMuaW1vZChmLmltdWwoYikpfSxrZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZixiKSx0aGlzLmltb2QoZi5tdWwoYikpfSxrZS5wcm90b3R5'@; put 'cGUuaXNxcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5pbXVsKGYsZi5jbG9uZSgpKX0sa2UucHJvdG90eXBlLnNxcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5tdWwoZixmKX0sa2UucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZil7aWYoZi5pc1plcm8oKSlyZXR1cm4gZi5jbG9uZSgpO3Zh'@; put 'ciBiPXRoaXMubS5hbmRsbigzKTtpZihzKGIlMj09MSksMz09PWIpe3ZhciBrPXRoaXMubS5hZGQobmV3IHYoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZixrKX1mb3IodmFyIE09dGhpcy5tLnN1Ym4oMSksQj0wOyFNLmlzWmVybygpJiYwPT09TS5hbmRsbigxKTspQisrLE0uaXVz'@; put 'aHJuKDEpO3MoIU0uaXNaZXJvKCkpO3ZhciBLPW5ldyB2KDEpLnRvUmVkKHRoaXMpLEc9Sy5yZWROZWcoKSxEPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxwPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IocD1uZXcgdigyKnAqcCkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KHAsRCkuY21wKEcp'@; put 'OylwLnJlZElBZGQoRyk7Zm9yKHZhciBJPXRoaXMucG93KHAsTSksdWU9dGhpcy5wb3coZixNLmFkZG4oMSkuaXVzaHJuKDEpKSxuZT10aGlzLnBvdyhmLE0pLF9lPUI7MCE9PW5lLmNtcChLKTspe2Zvcih2YXIgUGU9bmUsb3Q9MDswIT09UGUuY21wKEspO290KyspUGU9UGUucmVkU3FyKCk7'@; put 'cyhvdDxfZSk7dmFyIGx0PXRoaXMucG93KEksbmV3IHYoMSkuaXVzaGxuKF9lLW90LTEpKTt1ZT11ZS5yZWRNdWwobHQpLEk9bHQucmVkU3FyKCksbmU9bmUucmVkTXVsKEkpLF9lPW90fXJldHVybiB1ZX0sa2UucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZil7dmFyIGI9Zi5faW52bXAodGhp'@; put 'cy5tKTtyZXR1cm4gMCE9PWIubmVnYXRpdmU/KGIubmVnYXRpdmU9MCx0aGlzLmltb2QoYikucmVkTmVnKCkpOnRoaXMuaW1vZChiKX0sa2UucHJvdG90eXBlLnBvdz1mdW5jdGlvbihmLGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIG5ldyB2KDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1iLmNtcG4o'@; put 'MSkpcmV0dXJuIGYuY2xvbmUoKTt2YXIgTT1uZXcgQXJyYXkoMTYpO01bMF09bmV3IHYoMSkudG9SZWQodGhpcyksTVsxXT1mO2Zvcih2YXIgQj0yO0I8TS5sZW5ndGg7QisrKU1bQl09dGhpcy5tdWwoTVtCLTFdLGYpO3ZhciBLPU1bMF0sRz0wLEQ9MCxwPWIuYml0TGVuZ3RoKCklMjY7Zm9y'@; put 'KDA9PT1wJiYocD0yNiksQj1iLmxlbmd0aC0xO0I+PTA7Qi0tKXtmb3IodmFyIEk9Yi53b3Jkc1tCXSx1ZT1wLTE7dWU+PTA7dWUtLSl7dmFyIG5lPUk+PnVlJjE7SyE9PU1bMF0mJihLPXRoaXMuc3FyKEspKSwwIT09bmV8fDAhPT1HPyhHPDw9MSxHfD1uZSwoND09PSsrRHx8MD09PUImJjA9'@; put 'PT11ZSkmJihLPXRoaXMubXVsKEssTVtHXSksRD0wLEc9MCkpOkQ9MH1wPTI2fXJldHVybiBLfSxrZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGYpe3ZhciBiPWYudW1vZCh0aGlzLm0pO3JldHVybiBiPT09Zj9iLmNsb25lKCk6Yn0sa2UucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1'@; put 'bmN0aW9uKGYpe3ZhciBiPWYuY2xvbmUoKTtyZXR1cm4gYi5yZWQ9bnVsbCxifSx2Lm1vbnQ9ZnVuY3Rpb24oZil7cmV0dXJuIG5ldyBxZShmKX0sQShxZSxrZSkscWUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5pbW9kKGYudXNobG4odGhpcy5zaGlmdCkp'@; put 'fSxxZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZil7dmFyIGI9dGhpcy5pbW9kKGYubXVsKHRoaXMucmludikpO3JldHVybiBiLnJlZD1udWxsLGJ9LHFlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYsYil7aWYoZi5pc1plcm8oKXx8Yi5pc1plcm8oKSlyZXR1cm4gZi53b3Jk'@; put 'c1swXT0wLGYubGVuZ3RoPTEsZjt2YXIgaz1mLmltdWwoYiksTT1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxCPWsuaXN1YihNKS5pdXNocm4odGhpcy5zaGlmdCksSz1CO3JldHVybiBCLmNtcCh0aGlzLm0pPj0wP0s9'@; put 'Qi5pc3ViKHRoaXMubSk6Qi5jbXBuKDApPDAmJihLPUIuaWFkZCh0aGlzLm0pKSxLLl9mb3JjZVJlZCh0aGlzKX0scWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihmLGIpe2lmKGYuaXNaZXJvKCl8fGIuaXNaZXJvKCkpcmV0dXJuIG5ldyB2KDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgaz1mLm11'@; put 'bChiKSxNPWsubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLEI9ay5pc3ViKE0pLml1c2hybih0aGlzLnNoaWZ0KSxLPUI7cmV0dXJuIEIuY21wKHRoaXMubSk+PTA/Sz1CLmlzdWIodGhpcy5tKTpCLmNtcG4oMCk8MCYmKEs9'@; put 'Qi5pYWRkKHRoaXMubSkpLEsuX2ZvcmNlUmVkKHRoaXMpfSxxZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5pbW9kKGYuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShmZT1oLm5tZChmZSksdGhpcyl9LDQzMzQ5KGZlKXtmdW5j'@; put 'dGlvbiBqKGgseSl7aWYoIWgpdGhyb3cgbmV3IEVycm9yKHl8fCJBc3NlcnRpb24gZmFpbGVkIil9ZmUuZXhwb3J0cz1qLGouZXF1YWw9ZnVuY3Rpb24oeSxjLHMpe2lmKHkhPWMpdGhyb3cgbmV3IEVycm9yKHN8fCJBc3NlcnRpb24gZmFpbGVkOiAiK3krIiAhPSAiK2MpfX0sNjQzNjcoZmUs'@; put 'ail7InVzZSBzdHJpY3QiO3ZhciBoPWo7ZnVuY3Rpb24gYyhBKXtyZXR1cm4gMT09PUEubGVuZ3RoPyIwIitBOkF9ZnVuY3Rpb24gcyhBKXtmb3IodmFyIHY9IiIsQz0wO0M8QS5sZW5ndGg7QysrKXYrPWMoQVtDXS50b1N0cmluZygxNikpO3JldHVybiB2fWgudG9BcnJheT1mdW5jdGlvbiB5'@; put 'KEEsdil7aWYoQXJyYXkuaXNBcnJheShBKSlyZXR1cm4gQS5zbGljZSgpO2lmKCFBKXJldHVybltdO3ZhciBDPVtdO2lmKCJzdHJpbmciIT10eXBlb2YgQSl7Zm9yKHZhciB3PTA7dzxBLmxlbmd0aDt3KyspQ1t3XT0wfEFbd107cmV0dXJuIEN9aWYoImhleCI9PT12KWZvcigoQT1BLnJlcGxh'@; put 'Y2UoL1teYS16MC05XSsvZ2ksIiIpKS5sZW5ndGglMiE9MCYmKEE9IjAiK0EpLHc9MDt3PEEubGVuZ3RoO3crPTIpQy5wdXNoKHBhcnNlSW50KEFbd10rQVt3KzFdLDE2KSk7ZWxzZSBmb3Iodz0wO3c8QS5sZW5ndGg7dysrKXt2YXIgUz1BLmNoYXJDb2RlQXQodyksTD1TPj44LFI9MjU1JlM7'@; put 'TD9DLnB1c2goTCxSKTpDLnB1c2goUil9cmV0dXJuIEN9LGguemVybzI9YyxoLnRvSGV4PXMsaC5lbmNvZGU9ZnVuY3Rpb24odixDKXtyZXR1cm4iaGV4Ij09PUM/cyh2KTp2fX0sODkyMTEoZmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1mdW5jdGlvbihoKXtyZXR1cm4gaCE9aH07ZmUuZXhwb3J0'@; put 'cz1mdW5jdGlvbih5LGMpe3JldHVybiAwPT09eSYmMD09PWM/MS95PT0xL2M6ISEoeT09PWN8fGooeSkmJmooYykpfX0sMzc2NTMoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgzODQ1MiksYz1oKDEwNDg3KSxzPWgoODkyMTEpLEE9aCg5Mzk0KSx2PWgoMzY1NzYpLEM9YyhBKCksT2Jq'@; put 'ZWN0KTt5KEMse2dldFBvbHlmaWxsOkEsaW1wbGVtZW50YXRpb246cyxzaGltOnZ9KSxmZS5leHBvcnRzPUN9LDkzOTQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg4OTIxMSk7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXM/T2Jq'@; put 'ZWN0LmlzOnl9fSwzNjU3NihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkzOTQpLGM9aCgzODQ1Mik7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBBPXkoKTtyZXR1cm4gYyhPYmplY3Qse2lzOkF9LHtpczpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuaXMhPT1BfX0pLEF9fSwyODg3'@; put 'NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtpZighT2JqZWN0LmtleXMpe3ZhciBjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEE9aCgxMDkzKSx2PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsQz0h'@; put 'di5jYWxsKHt0b1N0cmluZzpudWxsfSwidG9TdHJpbmciKSx3PXYuY2FsbChmdW5jdGlvbigpe30sInByb3RvdHlwZSIpLFM9WyJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxl'@; put 'IiwiY29uc3RydWN0b3IiXSxMPWZ1bmN0aW9uKEgpe3ZhciBWPUguY29uc3RydWN0b3I7cmV0dXJuIFYmJlYucHJvdG90eXBlPT09SH0sUj17JGFwcGxpY2F0aW9uQ2FjaGU6ITAsJGNvbnNvbGU6ITAsJGV4dGVybmFsOiEwLCRmcmFtZTohMCwkZnJhbWVFbGVtZW50OiEwLCRmcmFtZXM6ITAs'@; put 'JGlubmVySGVpZ2h0OiEwLCRpbm5lcldpZHRoOiEwLCRvbm1vemZ1bGxzY3JlZW5jaGFuZ2U6ITAsJG9ubW96ZnVsbHNjcmVlbmVycm9yOiEwLCRvdXRlckhlaWdodDohMCwkb3V0ZXJXaWR0aDohMCwkcGFnZVhPZmZzZXQ6ITAsJHBhZ2VZT2Zmc2V0OiEwLCRwYXJlbnQ6ITAsJHNjcm9sbExl'@; put 'ZnQ6ITAsJHNjcm9sbFRvcDohMCwkc2Nyb2xsWDohMCwkc2Nyb2xsWTohMCwkc2VsZjohMCwkd2Via2l0SW5kZXhlZERCOiEwLCR3ZWJraXRTdG9yYWdlSW5mbzohMCwkd2luZG93OiEwfSx4PWZ1bmN0aW9uKCl7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuITE7Zm9yKHZhciBIIGluIHdp'@; put 'bmRvdyl0cnl7aWYoIVJbIiQiK0hdJiZjLmNhbGwod2luZG93LEgpJiZudWxsIT09d2luZG93W0hdJiYib2JqZWN0Ij09dHlwZW9mIHdpbmRvd1tIXSl0cnl7TCh3aW5kb3dbSF0pfWNhdGNoe3JldHVybiEwfX1jYXRjaHtyZXR1cm4hMH1yZXR1cm4hMX0oKTt5PWZ1bmN0aW9uKFYpe3ZhciBO'@; put 'PW51bGwhPT1WJiYib2JqZWN0Ij09dHlwZW9mIFYsej0iW29iamVjdCBGdW5jdGlvbl0iPT09cy5jYWxsKFYpLFk9QShWKSxGPU4mJiJbb2JqZWN0IFN0cmluZ10iPT09cy5jYWxsKFYpLFc9W107aWYoIU4mJiF6JiYhWSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQg'@; put 'b24gYSBub24tb2JqZWN0Iik7dmFyIHE9dyYmejtpZihGJiZWLmxlbmd0aD4wJiYhYy5jYWxsKFYsMCkpZm9yKHZhciByZT0wO3JlPFYubGVuZ3RoOysrcmUpVy5wdXNoKFN0cmluZyhyZSkpO2lmKFkmJlYubGVuZ3RoPjApZm9yKHZhciBtZT0wO21lPFYubGVuZ3RoOysrbWUpVy5wdXNoKFN0'@; put 'cmluZyhtZSkpO2Vsc2UgZm9yKHZhciBDZSBpbiBWKSghcXx8InByb3RvdHlwZSIhPT1DZSkmJmMuY2FsbChWLENlKSYmVy5wdXNoKFN0cmluZyhDZSkpO2lmKEMpZm9yKHZhciBJZT1mdW5jdGlvbihIKXtpZih0eXBlb2Ygd2luZG93PiJ1Inx8IXgpcmV0dXJuIEwoSCk7dHJ5e3JldHVybiBM'@; put 'KEgpfWNhdGNoe3JldHVybiExfX0oViksa2U9MDtrZTxTLmxlbmd0aDsrK2tlKSghSWV8fCJjb25zdHJ1Y3RvciIhPT1TW2tlXSkmJmMuY2FsbChWLFNba2VdKSYmVy5wdXNoKFNba2VdKTtyZXR1cm4gV319ZmUuZXhwb3J0cz15fSwxMTg5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PUFy'@; put 'cmF5LnByb3RvdHlwZS5zbGljZSxjPWgoMTA5Mykscz1PYmplY3Qua2V5cyxBPXM/ZnVuY3Rpb24odyl7cmV0dXJuIHModyl9OmgoMjg4NzUpLHY9T2JqZWN0LmtleXM7QS5zaGltPWZ1bmN0aW9uKCl7aWYoT2JqZWN0LmtleXMpe3ZhciB3PWZ1bmN0aW9uKCl7dmFyIFM9T2JqZWN0LmtleXMo'@; put 'YXJndW1lbnRzKTtyZXR1cm4gUyYmUy5sZW5ndGg9PT1hcmd1bWVudHMubGVuZ3RofSgxLDIpO3d8fChPYmplY3Qua2V5cz1mdW5jdGlvbihMKXtyZXR1cm4gYyhMKT92KHkuY2FsbChMKSk6dihMKX0pfWVsc2UgT2JqZWN0LmtleXM9QTtyZXR1cm4gT2JqZWN0LmtleXN8fEF9LGZlLmV4cG9y'@; put 'dHM9QX0sMTA5MyhmZSl7InVzZSBzdHJpY3QiO3ZhciBqPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZmUuZXhwb3J0cz1mdW5jdGlvbih5KXt2YXIgYz1qLmNhbGwoeSkscz0iW29iamVjdCBBcmd1bWVudHNdIj09PWM7cmV0dXJuIHN8fChzPSJbb2JqZWN0IEFycmF5XSIhPT1jJiZudWxs'@; put 'IT09eSYmIm9iamVjdCI9PXR5cGVvZiB5JiYibnVtYmVyIj09dHlwZW9mIHkubGVuZ3RoJiZ5Lmxlbmd0aD49MCYmIltvYmplY3QgRnVuY3Rpb25dIj09PWouY2FsbCh5LmNhbGxlZSkpLHN9fSwzODQwMyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDExODkpLGM9aCg0MTMzMykoKSxz'@; put 'PWgoMzY1NTYpLEE9aCg3OTYxMiksdj1zKCJBcnJheS5wcm90b3R5cGUucHVzaCIpLEM9cygiT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSIpLHc9Yz9BLmdldE93blByb3BlcnR5U3ltYm9sczpudWxsO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oTCxSKXtpZihudWxsPT1MKXRo'@; put 'cm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO3ZhciB4PUEoTCk7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHg7Zm9yKHZhciBVPTE7VTxhcmd1bWVudHMubGVuZ3RoOysrVSl7dmFyIEg9QShhcmd1bWVudHNbVV0pLFY9eShIKSxOPWMmJihBLmdl'@; put 'dE93blByb3BlcnR5U3ltYm9sc3x8dyk7aWYoTilmb3IodmFyIHo9TihIKSxZPTA7WTx6Lmxlbmd0aDsrK1kpe3ZhciBGPXpbWV07QyhILEYpJiZ2KFYsRil9Zm9yKHZhciBXPTA7VzxWLmxlbmd0aDsrK1cpe3ZhciBxPVZbV107QyhILHEpJiYoeFtxXT1IW3FdKX19cmV0dXJuIHh9fSwxMTUx'@; put 'NChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDM4NDAzKTtmZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKCl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7Zm9yKHZhciBBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCIsdj1BLnNwbGl0KCIi'@; put 'KSxDPXt9LHc9MDt3PHYubGVuZ3RoOysrdylDW3Zbd11dPXZbd107dmFyIFM9T2JqZWN0LmFzc2lnbih7fSxDKSxMPSIiO2Zvcih2YXIgUiBpbiBTKUwrPVI7cmV0dXJuIEEhPT1MfSgpfHxmdW5jdGlvbigpe2lmKCFPYmplY3QuYXNzaWdufHwhT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKXJl'@; put 'dHVybiExO3ZhciBBPU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7MToyfSk7dHJ5e09iamVjdC5hc3NpZ24oQSwieHkiKX1jYXRjaHtyZXR1cm4ieSI9PT1BWzFdfXJldHVybiExfSgpP3k6T2JqZWN0LmFzc2lnbn19LDUxMDcyKGZlLGope2ouZW5kaWFubmVzcz1mdW5jdGlvbigpe3JldHVy'@; put 'biJMRSJ9LGouaG9zdG5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIGxvY2F0aW9uPCJ1Ij9sb2NhdGlvbi5ob3N0bmFtZToiIn0sai5sb2FkYXZnPWZ1bmN0aW9uKCl7cmV0dXJuW119LGoudXB0aW1lPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LGouZnJlZW1lbT1mdW5jdGlvbigpe3JldHVy'@; put 'biBOdW1iZXIuTUFYX1ZBTFVFfSxqLnRvdGFsbWVtPWZ1bmN0aW9uKCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9LGouY3B1cz1mdW5jdGlvbigpe3JldHVybltdfSxqLnR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4iQnJvd3NlciJ9LGoucmVsZWFzZT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2Yg'@; put 'bmF2aWdhdG9yPCJ1Ij9uYXZpZ2F0b3IuYXBwVmVyc2lvbjoiIn0sai5uZXR3b3JrSW50ZXJmYWNlcz1qLmdldE5ldHdvcmtJbnRlcmZhY2VzPWZ1bmN0aW9uKCl7cmV0dXJue319LGouYXJjaD1mdW5jdGlvbigpe3JldHVybiJqYXZhc2NyaXB0In0sai5wbGF0Zm9ybT1mdW5jdGlvbigpe3Jl'@; put 'dHVybiJicm93c2VyIn0sai50bXBkaXI9ai50bXBEaXI9ZnVuY3Rpb24oKXtyZXR1cm4iL3RtcCJ9LGouRU9MPSJcbiIsai5ob21lZGlyPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifX0sMjExMzcoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg4NzU2OCk7ai5jZXJ0aWZpY2F0ZT1oKDM2NDEz'@; put 'KTt2YXIgYz15LmRlZmluZSgiUlNBUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaXZhdGVFeHBv'@; put 'bmVudCIpLmludCgpLHRoaXMua2V5KCJwcmltZTEiKS5pbnQoKSx0aGlzLmtleSgicHJpbWUyIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MSIpLmludCgpLHRoaXMua2V5KCJleHBvbmVudDIiKS5pbnQoKSx0aGlzLmtleSgiY29lZmZpY2llbnQiKS5pbnQoKSl9KTtqLlJTQVByaXZhdGVL'@; put 'ZXk9Yzt2YXIgcz15LmRlZmluZSgiUlNBUHVibGljS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCkpfSk7ai5SU0FQdWJsaWNLZXk9czt2YXIgQT15LmRlZmluZSgiQWxnb3JpdGht'@; put 'SWRlbnRpZmllciIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikub2JqaWQoKSx0aGlzLmtleSgibm9uZSIpLm51bGxfKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoInBhcmFtcyIpLnNlcSgp'@; put 'Lm9iaih0aGlzLmtleSgicCIpLmludCgpLHRoaXMua2V5KCJxIikuaW50KCksdGhpcy5rZXkoImciKS5pbnQoKSkub3B0aW9uYWwoKSl9KSx2PXkuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNl'@; put 'KEEpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSk7ai5QdWJsaWNLZXk9djt2YXIgQz15LmRlZmluZSgiUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgiYWxnb3JpdGhtIiku'@; put 'dXNlKEEpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO2ouUHJpdmF0ZUtleT1DO3ZhciB3PXkuZGVmaW5lKCJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikuc2VxKCkub2JqKHRo'@; put 'aXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImRlY3J5cHQiKS5zZXEoKS5vYmoodGhpcy5rZXkoImtkZSIpLnNlcSgpLm9iaih0aGlzLmtleSgiaWQiKS5vYmppZCgpLHRoaXMua2V5KCJrZGVwYXJhbXMiKS5zZXEoKS5vYmoodGhpcy5rZXkoInNhbHQiKS5vY3RzdHIoKSx0aGlzLmtl'@; put 'eSgiaXRlcnMiKS5pbnQoKSkpLHRoaXMua2V5KCJjaXBoZXIiKS5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ28iKS5vYmppZCgpLHRoaXMua2V5KCJpdiIpLm9jdHN0cigpKSkpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO2ouRW5jcnlwdGVkUHJpdmF0ZUtleT13'@; put 'O3ZhciBTPXkuZGVmaW5lKCJEU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCksdGhpcy5rZXkoInB1Yl9rZXkiKS5p'@; put 'bnQoKSx0aGlzLmtleSgicHJpdl9rZXkiKS5pbnQoKSl9KTtqLkRTQVByaXZhdGVLZXk9UyxqLkRTQXBhcmFtPXkuZGVmaW5lKCJEU0FwYXJhbSIsZnVuY3Rpb24oKXt0aGlzLmludCgpfSk7dmFyIEw9eS5kZWZpbmUoIkVDUGFyYW1ldGVycyIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7bmFt'@; put 'ZWRDdXJ2ZTp0aGlzLm9iamlkKCl9KX0pLFI9eS5kZWZpbmUoIkVDUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwcml2YXRlS2V5Iikub2N0c3RyKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25h'@; put 'bCgpLmV4cGxpY2l0KDApLnVzZShMKSx0aGlzLmtleSgicHVibGljS2V5Iikub3B0aW9uYWwoKS5leHBsaWNpdCgxKS5iaXRzdHIoKSl9KTtqLkVDUHJpdmF0ZUtleT1SLGouc2lnbmF0dXJlPXkuZGVmaW5lKCJzaWduYXR1cmUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXko'@; put 'InIiKS5pbnQoKSx0aGlzLmtleSgicyIpLmludCgpKX0pfSwzNjQxMyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDg3NTY4KSxjPXkuZGVmaW5lKCJUaW1lIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHt1dGNUaW1lOnRoaXMudXRjdGltZSgpLGdlbmVyYWxUaW1lOnRoaXMuZ2VudGlt'@; put 'ZSgpfSl9KSxzPXkuZGVmaW5lKCJBdHRyaWJ1dGVUeXBlVmFsdWUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInR5cGUiKS5vYmppZCgpLHRoaXMua2V5KCJ2YWx1ZSIpLmFueSgpKX0pLEE9eS5kZWZpbmUoIkFsZ29yaXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhp'@; put 'cy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwoKSl9KSx2PXkuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlz'@; put 'LnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKEEpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSksQz15LmRlZmluZSgiUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSIsZnVuY3Rpb24oKXt0aGlzLnNldG9mKHMpfSksdz15LmRlZmluZSgiUkROU2Vx'@; put 'dWVuY2UiLGZ1bmN0aW9uKCl7dGhpcy5zZXFvZihDKX0pLFM9eS5kZWZpbmUoIk5hbWUiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe3JkblNlcXVlbmNlOnRoaXMudXNlKHcpfSl9KSxMPXkuZGVmaW5lKCJWYWxpZGl0eSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibm90'@; put 'QmVmb3JlIikudXNlKGMpLHRoaXMua2V5KCJub3RBZnRlciIpLnVzZShjKSl9KSxSPXkuZGVmaW5lKCJFeHRlbnNpb24iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImV4dG5JRCIpLm9iamlkKCksdGhpcy5rZXkoImNyaXRpY2FsIikuYm9vbCgpLmRlZighMSksdGhpcy5r'@; put 'ZXkoImV4dG5WYWx1ZSIpLm9jdHN0cigpKX0pLHg9eS5kZWZpbmUoIlRCU0NlcnRpZmljYXRlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuZXhwbGljaXQoMCkuaW50KCkub3B0aW9uYWwoKSx0aGlzLmtleSgic2VyaWFsTnVtYmVyIikuaW50KCksdGhp'@; put 'cy5rZXkoInNpZ25hdHVyZSIpLnVzZShBKSx0aGlzLmtleSgiaXNzdWVyIikudXNlKFMpLHRoaXMua2V5KCJ2YWxpZGl0eSIpLnVzZShMKSx0aGlzLmtleSgic3ViamVjdCIpLnVzZShTKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleUluZm8iKS51c2UodiksdGhpcy5rZXkoImlzc3VlclVu'@; put 'aXF1ZUlEIikuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgic3ViamVjdFVuaXF1ZUlEIikuaW1wbGljaXQoMikuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiZXh0ZW5zaW9ucyIpLmV4cGxpY2l0KDMpLnNlcW9mKFIpLm9wdGlvbmFsKCkpfSksVT15LmRl'@; put 'ZmluZSgiWDUwOUNlcnRpZmljYXRlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0YnNDZXJ0aWZpY2F0ZSIpLnVzZSh4KSx0aGlzLmtleSgic2lnbmF0dXJlQWxnb3JpdGhtIikudXNlKEEpLHRoaXMua2V5KCJzaWduYXR1cmVWYWx1ZSIpLmJpdHN0cigpKX0pO2ZlLmV4'@; put 'cG9ydHM9VX0sMjQxMDEoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9L1Byb2MtVHlwZTogNCxFTkNSWVBURURbXG5ccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcblxyXSsoWzAtOUEtelxuXHIrLz1dKylbXG5ccl0rL20sYz0v'@; put 'Xi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL20scz0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcblxyKy89XSspLS0tLS1FTkQgXDEtLS0tLSQvbSxBPWgoNjgwNzgpLHY9aCgxMjQxKSxDPWgoOTI4NjEpLkJ1ZmZl'@; put 'cjtmZS5leHBvcnRzPWZ1bmN0aW9uKHcsUyl7dmFyIHgsTD13LnRvU3RyaW5nKCksUj1MLm1hdGNoKHkpO2lmKFIpe3ZhciBIPSJhZXMiK1JbMV0sVj1DLmZyb20oUlsyXSwiaGV4IiksTj1DLmZyb20oUlszXS5yZXBsYWNlKC9bXHJcbl0vZywiIiksImJhc2U2NCIpLHo9QShTLFYuc2xpY2Uo'@; put 'MCw4KSxwYXJzZUludChSWzFdLDEwKSkua2V5LFk9W10sRj12LmNyZWF0ZURlY2lwaGVyaXYoSCx6LFYpO1kucHVzaChGLnVwZGF0ZShOKSksWS5wdXNoKEYuZmluYWwoKSkseD1DLmNvbmNhdChZKX1lbHNle3ZhciBVPUwubWF0Y2gocyk7eD1DLmZyb20oVVsyXS5yZXBsYWNlKC9bXHJcbl0v'@; put 'ZywiIiksImJhc2U2NCIpfXJldHVybnt0YWc6TC5tYXRjaChjKVsxXSxkYXRhOnh9fX0sNzgxNzAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgyMTEzNyksYz1oKDE1NTc5KSxzPWgoMjQxMDEpLEE9aCgxMjQxKSx2PWgoNzgzOTYpLnBia2RmMlN5bmMsQz1oKDkyODYxKS5CdWZmZXI7'@; put 'ZnVuY3Rpb24gUyhMKXt2YXIgUjsib2JqZWN0Ij09dHlwZW9mIEwmJiFDLmlzQnVmZmVyKEwpJiYoUj1MLnBhc3NwaHJhc2UsTD1MLmtleSksInN0cmluZyI9PXR5cGVvZiBMJiYoTD1DLmZyb20oTCkpO3ZhciBWLE4seD1zKEwsUiksVT14LnRhZyxIPXguZGF0YTtzd2l0Y2goVSl7Y2FzZSJD'@; put 'RVJUSUZJQ0FURSI6Tj15LmNlcnRpZmljYXRlLmRlY29kZShILCJkZXIiKS50YnNDZXJ0aWZpY2F0ZS5zdWJqZWN0UHVibGljS2V5SW5mbztjYXNlIlBVQkxJQyBLRVkiOnN3aXRjaChOfHwoTj15LlB1YmxpY0tleS5kZWNvZGUoSCwiZGVyIikpLFY9Ti5hbGdvcml0aG0uYWxnb3JpdGhtLmpv'@; put 'aW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4xLjEuMSI6cmV0dXJuIHkuUlNBUHVibGljS2V5LmRlY29kZShOLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJuIE4uc3ViamVjdFByaXZhdGVLZXk9Ti5zdWJqZWN0UHVibGljS2V5'@; put 'LHt0eXBlOiJlYyIsZGF0YTpOfTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gTi5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXk9eS5EU0FwYXJhbS5kZWNvZGUoTi5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpLHt0eXBlOiJkc2EiLGRhdGE6Ti5hbGdvcml0aG0ucGFyYW1zfTtk'@; put 'ZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitWKX1jYXNlIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSI6SD1mdW5jdGlvbiB3KEwsUil7dmFyIHg9TC5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHQsVT1wYXJzZUludChMLmFsZ29yaXRobS5kZWNyeXB0'@; put 'LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwxMCksSD1jW0wuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbigiLiIpXSxWPUwuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2LE49TC5zdWJqZWN0UHJpdmF0ZUtleSx6PXBhcnNlSW50KEguc3BsaXQoIi0iKVsxXSwx'@; put 'MCkvOCxZPXYoUix4LFUseiwic2hhMSIpLEY9QS5jcmVhdGVEZWNpcGhlcml2KEgsWSxWKSxXPVtdO3JldHVybiBXLnB1c2goRi51cGRhdGUoTikpLFcucHVzaChGLmZpbmFsKCkpLEMuY29uY2F0KFcpfShIPXkuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoSCwiZGVyIiksUik7Y2FzZSJQ'@; put 'UklWQVRFIEtFWSI6c3dpdGNoKFY9KE49eS5Qcml2YXRlS2V5LmRlY29kZShILCJkZXIiKSkuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCIuIikpe2Nhc2UiMS4yLjg0MC4xMTM1NDkuMS4xLjEiOnJldHVybiB5LlJTQVByaXZhdGVLZXkuZGVjb2RlKE4uc3ViamVjdFByaXZhdGVLZXksImRl'@; put 'ciIpO2Nhc2UiMS4yLjg0MC4xMDA0NS4yLjEiOnJldHVybntjdXJ2ZTpOLmFsZ29yaXRobS5jdXJ2ZSxwcml2YXRlS2V5OnkuRUNQcml2YXRlS2V5LmRlY29kZShOLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKS5wcml2YXRlS2V5fTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gTi5h'@; put 'bGdvcml0aG0ucGFyYW1zLnByaXZfa2V5PXkuRFNBcGFyYW0uZGVjb2RlKE4uc3ViamVjdFByaXZhdGVLZXksImRlciIpLHt0eXBlOiJkc2EiLHBhcmFtczpOLmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGtleSBpZCAiK1YpfWNhc2UiUlNBIFBV'@; put 'QkxJQyBLRVkiOnJldHVybiB5LlJTQVB1YmxpY0tleS5kZWNvZGUoSCwiZGVyIik7Y2FzZSJSU0EgUFJJVkFURSBLRVkiOnJldHVybiB5LlJTQVByaXZhdGVLZXkuZGVjb2RlKEgsImRlciIpO2Nhc2UiRFNBIFBSSVZBVEUgS0VZIjpyZXR1cm57dHlwZToiZHNhIixwYXJhbXM6eS5EU0FQcml2'@; put 'YXRlS2V5LmRlY29kZShILCJkZXIiKX07Y2FzZSJFQyBQUklWQVRFIEtFWSI6cmV0dXJue2N1cnZlOihIPXkuRUNQcml2YXRlS2V5LmRlY29kZShILCJkZXIiKSkucGFyYW1ldGVycy52YWx1ZSxwcml2YXRlS2V5OkgucHJpdmF0ZUtleX07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25v'@; put 'd24ga2V5IHR5cGUgIitVKX19Uy5zaWduYXR1cmU9eS5zaWduYXR1cmUsZmUuZXhwb3J0cz1TfSw3NTk5KGZlKXtmZS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGgseSl7aC5zdXBlcl89eSxoLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHkucHJv'@; put 'dG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6aCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZnVuY3Rpb24oaCx5KXtoLnN1cGVyXz15O3ZhciBjPWZ1bmN0aW9uKCl7fTtjLnByb3RvdHlwZT15LnByb3RvdHlwZSxoLnByb3RvdHlwZT1uZXcgYyxoLnBy'@; put 'b3RvdHlwZS5jb25zdHJ1Y3Rvcj1ofX0sNzMwMTYoZmUpe2ZlLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIGgmJiJvYmplY3QiPT10eXBlb2YgaCYmImZ1bmN0aW9uIj09dHlwZW9mIGguY29weSYmImZ1bmN0aW9uIj09dHlwZW9mIGguZmlsbCYmImZ1bmN0aW9uIj09dHlwZW9mIGgucmVh'@; put 'ZFVJbnQ4fX0sNjY5MjAoZmUsaixoKXt2YXIgeT1oKDY1NjA2KSxjPS8lW3NkaiVdL2c7ai5mb3JtYXQ9ZnVuY3Rpb24oRyl7aWYoIXEoRykpe2Zvcih2YXIgRD1bXSxwPTA7cDxhcmd1bWVudHMubGVuZ3RoO3ArKylELnB1c2godihhcmd1bWVudHNbcF0pKTtyZXR1cm4gRC5qb2luKCIgIil9'@; put 'cD0xO2Zvcih2YXIgST1hcmd1bWVudHMsdWU9SS5sZW5ndGgsbmU9U3RyaW5nKEcpLnJlcGxhY2UoYyxmdW5jdGlvbihQZSl7aWYoIiUlIj09PVBlKXJldHVybiIlIjtpZihwPj11ZSlyZXR1cm4gUGU7c3dpdGNoKFBlKXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKElbcCsrXSk7Y2FzZSIlZCI6'@; put 'cmV0dXJuIE51bWJlcihJW3ArK10pO2Nhc2UiJWoiOnRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoSVtwKytdKX1jYXRjaHtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4gUGV9fSksX2U9SVtwXTtwPHVlO19lPUlbKytwXSlZKF9lKXx8IUllKF9lKT9uZSs9IiAiK19lOm5lKz0i'@; put 'ICIrdihfZSk7cmV0dXJuIG5lfSxqLmRlcHJlY2F0ZT1mdW5jdGlvbihHLEQpe2lmKG1lKGguZy5wcm9jZXNzKSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gai5kZXByZWNhdGUoRyxEKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2lmKCEwPT09eS5ub0RlcHJlY2F0aW9uKXJldHVybiBHO3Zh'@; put 'ciBwPSExO3JldHVybiBmdW5jdGlvbiBJKCl7aWYoIXApe2lmKHkudGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZXcgRXJyb3IoRCk7eS50cmFjZURlcHJlY2F0aW9uP2NvbnNvbGUudHJhY2UoRCk6Y29uc29sZS5lcnJvcihEKSxwPSEwfXJldHVybiBHLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19'@; put 'O3ZhciBBLHM9e307ZnVuY3Rpb24gdihHLEQpe3ZhciBwPXtzZWVuOltdLHN0eWxpemU6d307cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTMmJihwLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD49NCYmKHAuY29sb3JzPWFyZ3VtZW50c1szXSkseihEKT9wLnNob3dIaWRk'@; put 'ZW49RDpEJiZqLl9leHRlbmQocCxEKSxtZShwLnNob3dIaWRkZW4pJiYocC5zaG93SGlkZGVuPSExKSxtZShwLmRlcHRoKSYmKHAuZGVwdGg9MiksbWUocC5jb2xvcnMpJiYocC5jb2xvcnM9ITEpLG1lKHAuY3VzdG9tSW5zcGVjdCkmJihwLmN1c3RvbUluc3BlY3Q9ITApLHAuY29sb3JzJiYo'@; put 'cC5zdHlsaXplPUMpLEwocCxHLHAuZGVwdGgpfWZ1bmN0aW9uIEMoRyxEKXt2YXIgcD12LnN0eWxlc1tEXTtyZXR1cm4gcD8iXHgxYlsiK3YuY29sb3JzW3BdWzBdKyJtIitHKyJceDFiWyIrdi5jb2xvcnNbcF1bMV0rIm0iOkd9ZnVuY3Rpb24gdyhHLEQpe3JldHVybiBHfWZ1bmN0aW9uIEwo'@; put 'RyxELHApe2lmKEcuY3VzdG9tSW5zcGVjdCYmRCYmWChELmluc3BlY3QpJiZELmluc3BlY3QhPT1qLmluc3BlY3QmJighRC5jb25zdHJ1Y3Rvcnx8RC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1EKSl7dmFyIEk9RC5pbnNwZWN0KHAsRyk7cmV0dXJuIHEoSSl8fChJPUwoRyxJLHApKSxJfXZh'@; put 'ciB1ZT1mdW5jdGlvbiBSKEcsRCl7aWYobWUoRCkpcmV0dXJuIEcuc3R5bGl6ZSgidW5kZWZpbmVkIiwidW5kZWZpbmVkIik7aWYocShEKSl7dmFyIHA9IiciK0pTT04uc3RyaW5naWZ5KEQpLnJlcGxhY2UoL14ifCIkL2csIiIpLnJlcGxhY2UoLycvZywiXFwnIikucmVwbGFjZSgvXFwiL2cs'@; put 'JyInKSsiJyI7cmV0dXJuIEcuc3R5bGl6ZShwLCJzdHJpbmciKX1yZXR1cm4gVyhEKT9HLnN0eWxpemUoIiIrRCwibnVtYmVyIik6eihEKT9HLnN0eWxpemUoIiIrRCwiYm9vbGVhbiIpOlkoRCk/Ry5zdHlsaXplKCJudWxsIiwibnVsbCIpOnZvaWQgMH0oRyxEKTtpZih1ZSlyZXR1cm4gdWU7'@; put 'dmFyIG5lPU9iamVjdC5rZXlzKEQpLF9lPWZ1bmN0aW9uIFMoRyl7dmFyIEQ9e307cmV0dXJuIEcuZm9yRWFjaChmdW5jdGlvbihwLEkpe0RbcF09ITB9KSxEfShuZSk7aWYoRy5zaG93SGlkZGVuJiYobmU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoRCkpLHFlKEQpJiYobmUuaW5kZXhP'@; put 'ZigibWVzc2FnZSIpPj0wfHxuZS5pbmRleE9mKCJkZXNjcmlwdGlvbiIpPj0wKSlyZXR1cm4geChEKTtpZigwPT09bmUubGVuZ3RoKXtpZihYKEQpKXJldHVybiBHLnN0eWxpemUoIltGdW5jdGlvbiIrKEQubmFtZT8iOiAiK0QubmFtZToiIikrIl0iLCJzcGVjaWFsIik7aWYoQ2UoRCkpcmV0'@; put 'dXJuIEcuc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoRCksInJlZ2V4cCIpO2lmKGtlKEQpKXJldHVybiBHLnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChEKSwiZGF0ZSIpO2lmKHFlKEQpKXJldHVybiB4KEQpfXZhciBhZSxvdD0iIixsdD0hMSxk'@; put 'dD1bInsiLCJ9Il07cmV0dXJuIE4oRCkmJihsdD0hMCxkdD1bIlsiLCJdIl0pLFgoRCkmJihvdD0iIFtGdW5jdGlvbiIrKEQubmFtZT8iOiAiK0QubmFtZToiIikrIl0iKSxDZShEKSYmKG90PSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoRCkpLGtlKEQpJiYob3Q9IiAiK0Rh'@; put 'dGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwoRCkpLHFlKEQpJiYob3Q9IiAiK3goRCkpLDAhPT1uZS5sZW5ndGh8fGx0JiYwIT1ELmxlbmd0aD9wPDA/Q2UoRCk/Ry5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChEKSwicmVnZXhwIik6Ry5zdHlsaXplKCJbT2Jq'@; put 'ZWN0XSIsInNwZWNpYWwiKTooRy5zZWVuLnB1c2goRCksYWU9bHQ/ZnVuY3Rpb24gVShHLEQscCxJLHVlKXtmb3IodmFyIG5lPVtdLF9lPTAsUGU9RC5sZW5ndGg7X2U8UGU7KytfZSlLKEQsU3RyaW5nKF9lKSk/bmUucHVzaChIKEcsRCxwLEksU3RyaW5nKF9lKSwhMCkpOm5lLnB1c2goIiIp'@; put 'O3JldHVybiB1ZS5mb3JFYWNoKGZ1bmN0aW9uKG90KXtvdC5tYXRjaCgvXlxkKyQvKXx8bmUucHVzaChIKEcsRCxwLEksb3QsITApKX0pLG5lfShHLEQscCxfZSxuZSk6bmUubWFwKGZ1bmN0aW9uKHhlKXtyZXR1cm4gSChHLEQscCxfZSx4ZSxsdCl9KSxHLnNlZW4ucG9wKCksZnVuY3Rpb24g'@; put 'VihHLEQscCl7dmFyIHVlPUcucmVkdWNlKGZ1bmN0aW9uKG5lLF9lKXtyZXR1cm4gX2UuaW5kZXhPZigiXG4iKSxuZStfZS5yZXBsYWNlKC9cdTAwMWJcW1xkXGQ/bS9nLCIiKS5sZW5ndGgrMX0sMCk7cmV0dXJuIHVlPjYwP3BbMF0rKCIiPT09RD8iIjpEKyJcbiAiKSsiICIrRy5qb2luKCIs'@; put 'XG4gICIpKyIgIitwWzFdOnBbMF0rRCsiICIrRy5qb2luKCIsICIpKyIgIitwWzFdfShhZSxvdCxkdCkpOmR0WzBdK290K2R0WzFdfWZ1bmN0aW9uIHgoRyl7cmV0dXJuIlsiK0Vycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEcpKyJdIn1mdW5jdGlvbiBIKEcsRCxwLEksdWUsbmUpe3Zh'@; put 'ciBfZSxQZSxvdDtpZigob3Q9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihELHVlKXx8e3ZhbHVlOkRbdWVdfSkuZ2V0P1BlPUcuc3R5bGl6ZShvdC5zZXQ/IltHZXR0ZXIvU2V0dGVyXSI6IltHZXR0ZXJdIiwic3BlY2lhbCIpOm90LnNldCYmKFBlPUcuc3R5bGl6ZSgiW1NldHRl'@; put 'cl0iLCJzcGVjaWFsIikpLEsoSSx1ZSl8fChfZT0iWyIrdWUrIl0iKSxQZXx8KEcuc2Vlbi5pbmRleE9mKG90LnZhbHVlKTwwPyhQZT1ZKHApP0woRyxvdC52YWx1ZSxudWxsKTpMKEcsb3QudmFsdWUscC0xKSkuaW5kZXhPZigiXG4iKT4tMSYmKFBlPW5lP1BlLnNwbGl0KCJcbiIpLm1hcChm'@; put 'dW5jdGlvbihsdCl7cmV0dXJuIiAgIitsdH0pLmpvaW4oIlxuIikuc3Vic3RyKDIpOiJcbiIrUGUuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKGx0KXtyZXR1cm4iICAgIitsdH0pLmpvaW4oIlxuIikpOlBlPUcuc3R5bGl6ZSgiW0NpcmN1bGFyXSIsInNwZWNpYWwiKSksbWUoX2UpKXtpZihu'@; put 'ZSYmdWUubWF0Y2goL15cZCskLykpcmV0dXJuIFBlOyhfZT1KU09OLnN0cmluZ2lmeSgiIit1ZSkpLm1hdGNoKC9eIihbYS16QS1aX11bYS16QS1aXzAtOV0qKSIkLyk/KF9lPV9lLnN1YnN0cigxLF9lLmxlbmd0aC0yKSxfZT1HLnN0eWxpemUoX2UsIm5hbWUiKSk6KF9lPV9lLnJlcGxhY2Uo'@; put 'LycvZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKS5yZXBsYWNlKC8oXiJ8IiQpL2csIiciKSxfZT1HLnN0eWxpemUoX2UsInN0cmluZyIpKX1yZXR1cm4gX2UrIjogIitQZX1mdW5jdGlvbiBOKEcpe3JldHVybiBBcnJheS5pc0FycmF5KEcpfWZ1bmN0aW9uIHooRyl7cmV0dXJuImJvb2xl'@; put 'YW4iPT10eXBlb2YgR31mdW5jdGlvbiBZKEcpe3JldHVybiBudWxsPT09R31mdW5jdGlvbiBXKEcpe3JldHVybiJudW1iZXIiPT10eXBlb2YgR31mdW5jdGlvbiBxKEcpe3JldHVybiJzdHJpbmciPT10eXBlb2YgR31mdW5jdGlvbiBtZShHKXtyZXR1cm4gdm9pZCAwPT09R31mdW5jdGlvbiBD'@; put 'ZShHKXtyZXR1cm4gSWUoRykmJiJbb2JqZWN0IFJlZ0V4cF0iPT09YihHKX1mdW5jdGlvbiBJZShHKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIEcmJm51bGwhPT1HfWZ1bmN0aW9uIGtlKEcpe3JldHVybiBJZShHKSYmIltvYmplY3QgRGF0ZV0iPT09YihHKX1mdW5jdGlvbiBxZShHKXtyZXR1'@; put 'cm4gSWUoRykmJigiW29iamVjdCBFcnJvcl0iPT09YihHKXx8RyBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiBYKEcpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBHfWZ1bmN0aW9uIGIoRyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChHKX1mdW5jdGlvbiBrKEcp'@; put 'e3JldHVybiBHPDEwPyIwIitHLnRvU3RyaW5nKDEwKTpHLnRvU3RyaW5nKDEwKX1qLmRlYnVnbG9nPWZ1bmN0aW9uKEcpe2lmKG1lKEEpJiYoQT15LmVudi5OT0RFX0RFQlVHfHwiIiksRz1HLnRvVXBwZXJDYXNlKCksIXNbR10paWYobmV3IFJlZ0V4cCgiXFxiIitHKyJcXGIiLCJpIikudGVz'@; put 'dChBKSl7dmFyIEQ9eS5waWQ7c1tHXT1mdW5jdGlvbigpe3ZhciBwPWouZm9ybWF0LmFwcGx5KGosYXJndW1lbnRzKTtjb25zb2xlLmVycm9yKCIlcyAlZDogJXMiLEcsRCxwKX19ZWxzZSBzW0ddPWZ1bmN0aW9uKCl7fTtyZXR1cm4gc1tHXX0sai5pbnNwZWN0PXYsdi5jb2xvcnM9e2JvbGQ6'@; put 'WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0seWVs'@; put 'bG93OlszMywzOV19LHYuc3R5bGVzPXtzcGVjaWFsOiJjeWFuIixudW1iZXI6InllbGxvdyIsYm9vbGVhbjoieWVsbG93Iix1bmRlZmluZWQ6ImdyZXkiLG51bGw6ImJvbGQiLHN0cmluZzoiZ3JlZW4iLGRhdGU6Im1hZ2VudGEiLHJlZ2V4cDoicmVkIn0sai5pc0FycmF5PU4sai5pc0Jvb2xl'@; put 'YW49eixqLmlzTnVsbD1ZLGouaXNOdWxsT3JVbmRlZmluZWQ9ZnVuY3Rpb24gRihHKXtyZXR1cm4gbnVsbD09R30sai5pc051bWJlcj1XLGouaXNTdHJpbmc9cSxqLmlzU3ltYm9sPWZ1bmN0aW9uIHJlKEcpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgR30sai5pc1VuZGVmaW5lZD1tZSxqLmlz'@; put 'UmVnRXhwPUNlLGouaXNPYmplY3Q9SWUsai5pc0RhdGU9a2Usai5pc0Vycm9yPXFlLGouaXNGdW5jdGlvbj1YLGouaXNQcmltaXRpdmU9ZnVuY3Rpb24gZihHKXtyZXR1cm4gbnVsbD09PUd8fCJib29sZWFuIj09dHlwZW9mIEd8fCJudW1iZXIiPT10eXBlb2YgR3x8InN0cmluZyI9PXR5cGVv'@; put 'ZiBHfHwic3ltYm9sIj09dHlwZW9mIEd8fHR5cGVvZiBHPiJ1In0sai5pc0J1ZmZlcj1oKDczMDE2KTt2YXIgTT1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO2Z1bmN0aW9uIEsoRyxEKXtyZXR1cm4gT2Jq'@; put 'ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEcsRCl9ai5sb2c9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiJXMgLSAlcyIsZnVuY3Rpb24gQigpe3ZhciBHPW5ldyBEYXRlLEQ9W2soRy5nZXRIb3VycygpKSxrKEcuZ2V0TWludXRlcygpKSxrKEcuZ2V0U2Vjb25kcygpKV0uam9p'@; put 'bigiOiIpO3JldHVybltHLmdldERhdGUoKSxNW0cuZ2V0TW9udGgoKV0sRF0uam9pbigiICIpfSgpLGouZm9ybWF0LmFwcGx5KGosYXJndW1lbnRzKSl9LGouaW5oZXJpdHM9aCg3NTk5KSxqLl9leHRlbmQ9ZnVuY3Rpb24oRyxEKXtpZighRHx8IUllKEQpKXJldHVybiBHO2Zvcih2YXIgcD1P'@; put 'YmplY3Qua2V5cyhEKSxJPXAubGVuZ3RoO0ktLTspR1twW0ldXT1EW3BbSV1dO3JldHVybiBHfX0sNDM2MjcoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNiksYz0id2luMzIiPT09eS5wbGF0Zm9ybSxzPWgoNjY5MjApO2Z1bmN0aW9uIEEoTix6KXtmb3IodmFyIFk9W10sRj0w'@; put 'O0Y8Ti5sZW5ndGg7RisrKXt2YXIgVz1OW0ZdOyFXfHwiLiI9PT1XfHwoIi4uIj09PVc/WS5sZW5ndGgmJiIuLiIhPT1ZW1kubGVuZ3RoLTFdP1kucG9wKCk6eiYmWS5wdXNoKCIuLiIpOlkucHVzaChXKSl9cmV0dXJuIFl9ZnVuY3Rpb24gdihOKXtmb3IodmFyIHo9Ti5sZW5ndGgtMSxZPTA7'@; put 'WTw9eiYmIU5bWV07WSsrKTtmb3IodmFyIEY9ejtGPj0wJiYhTltGXTtGLS0pO3JldHVybiAwPT09WSYmRj09PXo/TjpZPkY/W106Ti5zbGljZShZLEYrMSl9dmFyIEM9L14oW2EtekEtWl06fFtcXFwvXXsyfVteXFxcL10rW1xcXC9dK1teXFxcL10rKT8oW1xcXC9dKT8oW1xzXFNdKj8pJC8s'@; put 'dz0vXihbXHNcU10qPykoKD86XC57MSwyfXxbXlxcXC9dKz98KShcLlteLlwvXFxdKnwpKSg/OltcXFwvXSopJC8sUz17fTtmdW5jdGlvbiBMKE4pe3ZhciB6PUMuZXhlYyhOKSxZPSh6WzFdfHwiIikrKHpbMl18fCIiKSxXPXcuZXhlYyh6WzNdfHwiIik7cmV0dXJuW1ksV1sxXSxXWzJdLFdb'@; put 'M11dfWZ1bmN0aW9uIFIoTil7dmFyIHo9Qy5leGVjKE4pLFk9elsxXXx8IiIsRj0hIVkmJiI6IiE9PVlbMV07cmV0dXJue2RldmljZTpZLGlzVW5jOkYsaXNBYnNvbHV0ZTpGfHwhIXpbMl0sdGFpbDp6WzNdfX1mdW5jdGlvbiB4KE4pe3JldHVybiJcXFxcIitOLnJlcGxhY2UoL15bXFxcL10r'@; put 'LywiIikucmVwbGFjZSgvW1xcXC9dKy9nLCJcXCIpfVMucmVzb2x2ZT1mdW5jdGlvbigpe2Zvcih2YXIgTj0iIix6PSIiLFk9ITEsRj1hcmd1bWVudHMubGVuZ3RoLTE7Rj49LTE7Ri0tKXt2YXIgVztpZihGPj0wP1c9YXJndW1lbnRzW0ZdOk4/KCEoVz15LmVudlsiPSIrTl0pfHxXLnN1YnN0'@; put 'cigwLDMpLnRvTG93ZXJDYXNlKCkhPT1OLnRvTG93ZXJDYXNlKCkrIlxcIikmJihXPU4rIlxcIik6Vz15LmN3ZCgpLCFzLmlzU3RyaW5nKFcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7aWYoVyl7dmFyIHE9UihXKSxy'@; put 'ZT1xLmRldmljZSxtZT1xLmlzVW5jLENlPXEuaXNBYnNvbHV0ZSxJZT1xLnRhaWw7aWYoKCFyZXx8IU58fHJlLnRvTG93ZXJDYXNlKCk9PT1OLnRvTG93ZXJDYXNlKCkpJiYoTnx8KE49cmUpLFl8fCh6PUllKyJcXCIreixZPUNlKSxOJiZZKSlicmVha319cmV0dXJuIG1lJiYoTj14KE4pKSxO'@; put 'KyhZPyJcXCI6IiIpKyh6PUEoei5zcGxpdCgvW1xcXC9dKy8pLCFZKS5qb2luKCJcXCIpKXx8Ii4ifSxTLm5vcm1hbGl6ZT1mdW5jdGlvbihOKXt2YXIgej1SKE4pLFk9ei5kZXZpY2UsRj16LmlzVW5jLFc9ei5pc0Fic29sdXRlLHE9ei50YWlsLHJlPS9bXFxcL10kLy50ZXN0KHEpO3JldHVy'@; put 'biEocT1BKHEuc3BsaXQoL1tcXFwvXSsvKSwhVykuam9pbigiXFwiKSkmJiFXJiYocT0iLiIpLHEmJnJlJiYocSs9IlxcIiksRiYmKFk9eChZKSksWSsoVz8iXFwiOiIiKStxfSxTLmlzQWJzb2x1dGU9ZnVuY3Rpb24oTil7cmV0dXJuIFIoTikuaXNBYnNvbHV0ZX0sUy5qb2luPWZ1bmN0aW9u'@; put 'KCl7Zm9yKHZhciBOPVtdLHo9MDt6PGFyZ3VtZW50cy5sZW5ndGg7eisrKXt2YXIgWT1hcmd1bWVudHNbel07aWYoIXMuaXNTdHJpbmcoWSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MiKTtZJiZOLnB1c2goWSl9dmFyIEY9Ti5q'@; put 'b2luKCJcXCIpO3JldHVybi9eW1xcXC9dezJ9W15cXFwvXS8udGVzdChOWzBdKXx8KEY9Ri5yZXBsYWNlKC9eW1xcXC9dezIsfS8sIlxcIikpLFMubm9ybWFsaXplKEYpfSxTLnJlbGF0aXZlPWZ1bmN0aW9uKE4seil7Tj1TLnJlc29sdmUoTiksej1TLnJlc29sdmUoeik7Zm9yKHZhciBZPU4u'@; put 'dG9Mb3dlckNhc2UoKSxGPXoudG9Mb3dlckNhc2UoKSxXPXYoei5zcGxpdCgiXFwiKSkscT12KFkuc3BsaXQoIlxcIikpLHJlPXYoRi5zcGxpdCgiXFwiKSksbWU9TWF0aC5taW4ocS5sZW5ndGgscmUubGVuZ3RoKSxDZT1tZSxJZT0wO0llPG1lO0llKyspaWYocVtJZV0hPT1yZVtJZV0pe0Nl'@; put 'PUllO2JyZWFrfWlmKDA9PUNlKXJldHVybiB6O3ZhciBrZT1bXTtmb3IoSWU9Q2U7SWU8cS5sZW5ndGg7SWUrKylrZS5wdXNoKCIuLiIpO3JldHVybihrZT1rZS5jb25jYXQoVy5zbGljZShDZSkpKS5qb2luKCJcXCIpfSxTLl9tYWtlTG9uZz1mdW5jdGlvbihOKXtpZighcy5pc1N0cmluZyhO'@; put 'KSlyZXR1cm4gTjtpZighTilyZXR1cm4iIjt2YXIgej1TLnJlc29sdmUoTik7cmV0dXJuL15bYS16QS1aXVw6XFwvLnRlc3Qoeik/IlxcXFw/XFwiK3o6L15cXFxcW14/Ll0vLnRlc3Qoeik/IlxcXFw/XFxVTkNcXCIrei5zdWJzdHJpbmcoMik6Tn0sUy5kaXJuYW1lPWZ1bmN0aW9uKE4pe3Zh'@; put 'ciB6PUwoTiksWT16WzBdLEY9elsxXTtyZXR1cm4gWXx8Rj8oRiYmKEY9Ri5zdWJzdHIoMCxGLmxlbmd0aC0xKSksWStGKToiLiJ9LFMuYmFzZW5hbWU9ZnVuY3Rpb24oTix6KXt2YXIgWT1MKE4pWzJdO3JldHVybiB6JiZZLnN1YnN0cigtMSp6Lmxlbmd0aCk9PT16JiYoWT1ZLnN1YnN0cigw'@; put 'LFkubGVuZ3RoLXoubGVuZ3RoKSksWX0sUy5leHRuYW1lPWZ1bmN0aW9uKE4pe3JldHVybiBMKE4pWzNdfSxTLmZvcm1hdD1mdW5jdGlvbihOKXtpZighcy5pc09iamVjdChOKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXJhbWV0ZXIgJ3BhdGhPYmplY3QnIG11c3QgYmUgYW4gb2JqZWN0LCBu'@; put 'b3QgIit0eXBlb2YgTik7aWYoIXMuaXNTdHJpbmcoTi5yb290fHwiIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiJ3BhdGhPYmplY3Qucm9vdCcgbXVzdCBiZSBhIHN0cmluZyBvciB1bmRlZmluZWQsIG5vdCAiK3R5cGVvZiBOLnJvb3QpO3ZhciBZPU4uZGlyLEY9Ti5iYXNlfHwiIjtyZXR1cm4g'@; put 'WT9ZW1kubGVuZ3RoLTFdPT09Uy5zZXA/WStGOlkrUy5zZXArRjpGfSxTLnBhcnNlPWZ1bmN0aW9uKE4pe2lmKCFzLmlzU3RyaW5nKE4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aFN0cmluZycgbXVzdCBiZSBhIHN0cmluZywgbm90ICIrdHlwZW9mIE4pO3ZhciB6PUwo'@; put 'Tik7aWYoIXp8fDQhPT16Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHBhdGggJyIrTisiJyIpO3JldHVybntyb290OnpbMF0sZGlyOnpbMF0relsxXS5zbGljZSgwLC0xKSxiYXNlOnpbMl0sZXh0OnpbM10sbmFtZTp6WzJdLnNsaWNlKDAselsyXS5sZW5ndGgtelszXS5s'@; put 'ZW5ndGgpfX0sUy5zZXA9IlxcIixTLmRlbGltaXRlcj0iOyI7dmFyIFU9L14oXC8/fCkoW1xzXFNdKj8pKCg/OlwuezEsMn18W15cL10rP3wpKFwuW14uXC9dKnwpKSg/OltcL10qKSQvLEg9e307ZnVuY3Rpb24gVihOKXtyZXR1cm4gVS5leGVjKE4pLnNsaWNlKDEpfUgucmVzb2x2ZT1mdW5j'@; put 'dGlvbigpe2Zvcih2YXIgTj0iIix6PSExLFk9YXJndW1lbnRzLmxlbmd0aC0xO1k+PS0xJiYhejtZLS0pe3ZhciBGPVk+PTA/YXJndW1lbnRzW1ldOnkuY3dkKCk7aWYoIXMuaXNTdHJpbmcoRikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJl'@; put 'IHN0cmluZ3MiKTtGJiYoTj1GKyIvIitOLHo9Ii8iPT09RlswXSl9cmV0dXJuKHo/Ii8iOiIiKSsoTj1BKE4uc3BsaXQoIi8iKSwheikuam9pbigiLyIpKXx8Ii4ifSxILm5vcm1hbGl6ZT1mdW5jdGlvbihOKXt2YXIgej1ILmlzQWJzb2x1dGUoTiksWT1OJiYiLyI9PT1OW04ubGVuZ3RoLTFd'@; put 'O3JldHVybiEoTj1BKE4uc3BsaXQoIi8iKSwheikuam9pbigiLyIpKSYmIXomJihOPSIuIiksTiYmWSYmKE4rPSIvIiksKHo/Ii8iOiIiKStOfSxILmlzQWJzb2x1dGU9ZnVuY3Rpb24oTil7cmV0dXJuIi8iPT09Ti5jaGFyQXQoMCl9LEguam9pbj1mdW5jdGlvbigpe2Zvcih2YXIgTj0iIix6'@; put 'PTA7ejxhcmd1bWVudHMubGVuZ3RoO3orKyl7dmFyIFk9YXJndW1lbnRzW3pdO2lmKCFzLmlzU3RyaW5nKFkpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzIik7WSYmKE4rPU4/Ii8iK1k6WSl9cmV0dXJuIEgubm9ybWFsaXplKE4p'@; put 'fSxILnJlbGF0aXZlPWZ1bmN0aW9uKE4seil7Tj1ILnJlc29sdmUoTikuc3Vic3RyKDEpLHo9SC5yZXNvbHZlKHopLnN1YnN0cigxKTtmb3IodmFyIFk9dihOLnNwbGl0KCIvIikpLEY9dih6LnNwbGl0KCIvIikpLFc9TWF0aC5taW4oWS5sZW5ndGgsRi5sZW5ndGgpLHE9VyxyZT0wO3JlPFc7'@; put 'cmUrKylpZihZW3JlXSE9PUZbcmVdKXtxPXJlO2JyZWFrfXZhciBtZT1bXTtmb3IocmU9cTtyZTxZLmxlbmd0aDtyZSsrKW1lLnB1c2goIi4uIik7cmV0dXJuKG1lPW1lLmNvbmNhdChGLnNsaWNlKHEpKSkuam9pbigiLyIpfSxILl9tYWtlTG9uZz1mdW5jdGlvbihOKXtyZXR1cm4gTn0sSC5k'@; put 'aXJuYW1lPWZ1bmN0aW9uKE4pe3ZhciB6PVYoTiksWT16WzBdLEY9elsxXTtyZXR1cm4gWXx8Rj8oRiYmKEY9Ri5zdWJzdHIoMCxGLmxlbmd0aC0xKSksWStGKToiLiJ9LEguYmFzZW5hbWU9ZnVuY3Rpb24oTix6KXt2YXIgWT1WKE4pWzJdO3JldHVybiB6JiZZLnN1YnN0cigtMSp6Lmxlbmd0'@; put 'aCk9PT16JiYoWT1ZLnN1YnN0cigwLFkubGVuZ3RoLXoubGVuZ3RoKSksWX0sSC5leHRuYW1lPWZ1bmN0aW9uKE4pe3JldHVybiBWKE4pWzNdfSxILmZvcm1hdD1mdW5jdGlvbihOKXtpZighcy5pc09iamVjdChOKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXJhbWV0ZXIgJ3BhdGhPYmplY3Qn'@; put 'IG11c3QgYmUgYW4gb2JqZWN0LCBub3QgIit0eXBlb2YgTik7aWYoIXMuaXNTdHJpbmcoTi5yb290fHwiIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiJ3BhdGhPYmplY3Qucm9vdCcgbXVzdCBiZSBhIHN0cmluZyBvciB1bmRlZmluZWQsIG5vdCAiK3R5cGVvZiBOLnJvb3QpO3JldHVybihOLmRp'@; put 'cj9OLmRpcitILnNlcDoiIikrKE4uYmFzZXx8IiIpfSxILnBhcnNlPWZ1bmN0aW9uKE4pe2lmKCFzLmlzU3RyaW5nKE4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aFN0cmluZycgbXVzdCBiZSBhIHN0cmluZywgbm90ICIrdHlwZW9mIE4pO3ZhciB6PVYoTik7aWYoIXp8'@; put 'fDQhPT16Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHBhdGggJyIrTisiJyIpO3JldHVybiB6WzFdPXpbMV18fCIiLHpbMl09elsyXXx8IiIselszXT16WzNdfHwiIix7cm9vdDp6WzBdLGRpcjp6WzBdK3pbMV0uc2xpY2UoMCwtMSksYmFzZTp6WzJdLGV4dDp6WzNdLG5h'@; put 'bWU6elsyXS5zbGljZSgwLHpbMl0ubGVuZ3RoLXpbM10ubGVuZ3RoKX19LEguc2VwPSIvIixILmRlbGltaXRlcj0iOiIsZmUuZXhwb3J0cz1jP1M6SCxmZS5leHBvcnRzLnBvc2l4PUgsZmUuZXhwb3J0cy53aW4zMj1TfSw3ODM5NihmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtqLnBia2RmMj1oKDQz'@; put 'ODMyKSxqLnBia2RmMlN5bmM9aCgyMTM1Mil9LDQzODMyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciBDLFIseT1oKDkyODYxKS5CdWZmZXIsYz1oKDY0MTk2KSxzPWgoMjQ1NSksQT1oKDIxMzUyKSx2PWgoOTMzODIpLHc9aC5nLmNyeXB0byYmaC5nLmNyeXB0by5zdWJ0bGUsUz17c2hhOiJT'@; put 'SEEtMSIsInNoYS0xIjoiU0hBLTEiLHNoYTE6IlNIQS0xIixzaGEyNTY6IlNIQS0yNTYiLCJzaGEtMjU2IjoiU0hBLTI1NiIsc2hhMzg0OiJTSEEtMzg0Iiwic2hhLTM4NCI6IlNIQS0zODQiLCJzaGEtNTEyIjoiU0hBLTUxMiIsc2hhNTEyOiJTSEEtNTEyIn0sTD1bXTtmdW5jdGlvbiB4KCl7'@; put 'cmV0dXJuIFJ8fChSPWguZy5wcm9jZXNzJiZoLmcucHJvY2Vzcy5uZXh0VGljaz9oLmcucHJvY2Vzcy5uZXh0VGljazpoLmcucXVldWVNaWNyb3Rhc2s/aC5nLnF1ZXVlTWljcm90YXNrOmguZy5zZXRJbW1lZGlhdGU/aC5nLnNldEltbWVkaWF0ZTpoLmcuc2V0VGltZW91dCl9ZnVuY3Rpb24g'@; put 'VShOLHosWSxGLFcpe3JldHVybiB3LmltcG9ydEtleSgicmF3IixOLHtuYW1lOiJQQktERjIifSwhMSxbImRlcml2ZUJpdHMiXSkudGhlbihmdW5jdGlvbihxKXtyZXR1cm4gdy5kZXJpdmVCaXRzKHtuYW1lOiJQQktERjIiLHNhbHQ6eixpdGVyYXRpb25zOlksaGFzaDp7bmFtZTpXfX0scSxG'@; put 'PDwzKX0pLnRoZW4oZnVuY3Rpb24ocSl7cmV0dXJuIHkuZnJvbShxKX0pfWZlLmV4cG9ydHM9ZnVuY3Rpb24oTix6LFksRixXLHEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBXJiYocT1XLFc9dm9pZCAwKSxGPWMoWSxGKSxOPXYoTixzLCJQYXNzd29yZCIpLHo9dih6LHMsIlNhbHQiKSwiZnVu'@; put 'Y3Rpb24iIT10eXBlb2YgcSl0aHJvdyBuZXcgRXJyb3IoIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMiIpO3ZhciByZT1TWyhXPVd8fCJzaGExIikudG9Mb3dlckNhc2UoKV07cmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBoLmcuUHJvbWlzZT9mdW5jdGlvbiBWKE4seil7Ti50aGVuKGZ1'@; put 'bmN0aW9uKFkpe3goKShmdW5jdGlvbigpe3oobnVsbCxZKX0pfSxmdW5jdGlvbihZKXt4KCkoZnVuY3Rpb24oKXt6KFkpfSl9KX0oZnVuY3Rpb24gSChOKXtpZihoLmcucHJvY2VzcyYmIWguZy5wcm9jZXNzLmJyb3dzZXJ8fCF3fHwhdy5pbXBvcnRLZXl8fCF3LmRlcml2ZUJpdHMpcmV0dXJu'@; put 'IFByb21pc2UucmVzb2x2ZSghMSk7aWYodm9pZCAwIT09TFtOXSlyZXR1cm4gTFtOXTt2YXIgej1VKEM9Q3x8eS5hbGxvYyg4KSxDLDEwLDEyOCxOKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuITB9LGZ1bmN0aW9uKCl7cmV0dXJuITF9KTtyZXR1cm4gTFtOXT16LHp9KHJlKS50aGVuKGZ1bmN0'@; put 'aW9uKG1lKXtyZXR1cm4gbWU/VShOLHosWSxGLHJlKTpBKE4seixZLEYsVyl9KSxxKTp4KCkoZnVuY3Rpb24oKXt2YXIgbWU7dHJ5e21lPUEoTix6LFksRixXKX1jYXRjaChDZSl7cmV0dXJuIHZvaWQgcShDZSl9cShudWxsLG1lKX0pfX0sMjQ1NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'Yyx5PWgoNjU2MDYpO2M9aC5nLnByb2Nlc3MmJmguZy5wcm9jZXNzLmJyb3dzZXI/InV0Zi04IjpoLmcucHJvY2VzcyYmaC5nLnByb2Nlc3MudmVyc2lvbj9wYXJzZUludCh5LnZlcnNpb24uc3BsaXQoIi4iKVswXS5zbGljZSgxKSwxMCk+PTY/InV0Zi04IjoiYmluYXJ5IjoidXRmLTgiLGZl'@; put 'LmV4cG9ydHM9Y30sNjQxOTYoZmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1pc0Zpbml0ZSxoPU1hdGgucG93KDIsMzApLTE7ZmUuZXhwb3J0cz1mdW5jdGlvbih5LGMpe2lmKCJudW1iZXIiIT10eXBlb2YgeSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRpb25zIG5vdCBhIG51bWJlciIpO2lm'@; put 'KHk8MHx8IWooeSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmFkIGl0ZXJhdGlvbnMiKTtpZigibnVtYmVyIiE9dHlwZW9mIGMpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5IGxlbmd0aCBub3QgYSBudW1iZXIiKTtpZihjPDB8fGM+aHx8YyE9Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJCYWQga2V5'@; put 'IGxlbmd0aCIpO3JldHVybiBjKzB9fSwyMTM1MihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDIwMzIwKSxjPWgoNjYwMTEpLHM9aCg2MjgwMiksQT1oKDkyODYxKS5CdWZmZXIsdj1oKDY0MTk2KSxDPWgoMjQ1NSksdz1oKDkzMzgyKSxTPUEuYWxsb2MoMTI4KSxMPXtfX3Byb3RvX186'@; put 'bnVsbCxtZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQsInNoYTUxMi0yNTYiOjMyLHJpcGVtZDE2MDoyMCxybWQxNjA6MjB9LFI9e19fcHJvdG9fXzpudWxsLCJzaGEtMSI6InNoYTEiLCJzaGEtMjI0Ijoic2hhMjI0Iiwic2hhLTI1NiI6InNo'@; put 'YTI1NiIsInNoYS0zODQiOiJzaGEzODQiLCJzaGEtNTEyIjoic2hhNTEyIiwicmlwZW1kLTE2MCI6InJpcGVtZDE2MCJ9O2Z1bmN0aW9uIHgoTil7cmV0dXJuKG5ldyBjKS51cGRhdGUoTikuZGlnZXN0KCl9ZnVuY3Rpb24gSChOLHosWSl7dmFyIEY9ZnVuY3Rpb24gVShOKXtyZXR1cm4icm1k'@; put 'MTYwIj09PU58fCJyaXBlbWQxNjAiPT09Tj94OiJtZDUiPT09Tj95OmZ1bmN0aW9uIHooWSl7cmV0dXJuIHMoTikudXBkYXRlKFkpLmRpZ2VzdCgpfX0oTiksVz0ic2hhNTEyIj09PU58fCJzaGEzODQiPT09Tj8xMjg6NjQ7ei5sZW5ndGg+Vz96PUYoeik6ei5sZW5ndGg8VyYmKHo9QS5jb25j'@; put 'YXQoW3osU10sVykpO2Zvcih2YXIgcT1BLmFsbG9jVW5zYWZlKFcrTFtOXSkscmU9QS5hbGxvY1Vuc2FmZShXK0xbTl0pLG1lPTA7bWU8VzttZSsrKXFbbWVdPTU0XnpbbWVdLHJlW21lXT05Ml56W21lXTt2YXIgQ2U9QS5hbGxvY1Vuc2FmZShXK1krNCk7cS5jb3B5KENlLDAsMCxXKSx0aGlz'@; put 'LmlwYWQxPUNlLHRoaXMuaXBhZDI9cSx0aGlzLm9wYWQ9cmUsdGhpcy5hbGc9Tix0aGlzLmJsb2Nrc2l6ZT1XLHRoaXMuaGFzaD1GLHRoaXMuc2l6ZT1MW05dfUgucHJvdG90eXBlLnJ1bj1mdW5jdGlvbihOLHope3JldHVybiBOLmNvcHkoeix0aGlzLmJsb2Nrc2l6ZSksdGhpcy5oYXNoKHop'@; put 'LmNvcHkodGhpcy5vcGFkLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2godGhpcy5vcGFkKX0sZmUuZXhwb3J0cz1mdW5jdGlvbiBWKE4seixZLEYsVyl7Rj12KFksRiksTj13KE4sQywiUGFzc3dvcmQiKSx6PXcoeixDLCJTYWx0Iik7dmFyIHE9KFd8fCJzaGExIikudG9Mb3dlckNhc2UoKSxy'@; put 'ZT1SW3FdfHxxLG1lPUxbcmVdO2lmKCJudW1iZXIiIT10eXBlb2YgbWV8fCFtZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEaWdlc3QgYWxnb3JpdGhtIG5vdCBzdXBwb3J0ZWQ6ICIrVyk7dmFyIENlPW5ldyBIKHJlLE4sei5sZW5ndGgpLEllPUEuYWxsb2NVbnNhZmUoRiksa2U9QS5hbGxvY1Vu'@; put 'c2FmZSh6Lmxlbmd0aCs0KTt6LmNvcHkoa2UsMCwwLHoubGVuZ3RoKTtmb3IodmFyIHFlPTAsWD1tZSxmPU1hdGguY2VpbChGL1gpLGI9MTtiPD1mO2IrKyl7a2Uud3JpdGVVSW50MzJCRShiLHoubGVuZ3RoKTtmb3IodmFyIGs9Q2UucnVuKGtlLENlLmlwYWQxKSxNPWssQj0xO0I8WTtCKysp'@; put 'e009Q2UucnVuKE0sQ2UuaXBhZDIpO2Zvcih2YXIgSz0wO0s8WDtLKyspa1tLXV49TVtLXX1rLmNvcHkoSWUscWUpLHFlKz1YfXJldHVybiBJZX19LDkzMzgyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPWgoMTUzNzcpLHM9dHlwZW9mIFVpbnQ4QXJyYXk8'@; put 'InUiLHY9cyYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmQXJyYXlCdWZmZXIuaXNWaWV3O2ZlLmV4cG9ydHM9ZnVuY3Rpb24oQyx3LFMpe2lmKCJzdHJpbmciPT10eXBlb2YgQ3x8eS5pc0J1ZmZlcihDKXx8cyYmQyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fHYmJnYoQykpcmV0dXJuIGMoQyx3'@; put 'KTt0aHJvdyBuZXcgVHlwZUVycm9yKFMrIiBtdXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSBVaW50OEFycmF5LCBvciBhIERhdGFWaWV3Iil9fSw3NjU3OChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9WyJGbG9hdDE2QXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXki'@; put 'LCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiQmlnVWludDY0QXJyYXkiXX0sMzMyMjUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFy'@; put 'IHk9aCg2NTYwNik7ZmUuZXhwb3J0cz10eXBlb2YgeT4idSJ8fCF5LnZlcnNpb258fDA9PT15LnZlcnNpb24uaW5kZXhPZigidjAuIil8fDA9PT15LnZlcnNpb24uaW5kZXhPZigidjEuIikmJjAhPT15LnZlcnNpb24uaW5kZXhPZigidjEuOC4iKT97bmV4dFRpY2s6ZnVuY3Rpb24gYyhzLEEs'@; put 'dixDKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgVHlwZUVycm9yKCciY2FsbGJhY2siIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3ZhciBTLEwsdz1hcmd1bWVudHMubGVuZ3RoO3N3aXRjaCh3KXtjYXNlIDA6Y2FzZSAxOnJldHVybiB5Lm5leHRUaWNrKHMpO2Nh'@; put 'c2UgMjpyZXR1cm4geS5uZXh0VGljayhmdW5jdGlvbigpe3MuY2FsbChudWxsLEEpfSk7Y2FzZSAzOnJldHVybiB5Lm5leHRUaWNrKGZ1bmN0aW9uKCl7cy5jYWxsKG51bGwsQSx2KX0pO2Nhc2UgNDpyZXR1cm4geS5uZXh0VGljayhmdW5jdGlvbigpe3MuY2FsbChudWxsLEEsdixDKX0pO2Rl'@; put 'ZmF1bHQ6Zm9yKFM9bmV3IEFycmF5KHctMSksTD0wO0w8Uy5sZW5ndGg7KVNbTCsrXT1hcmd1bWVudHNbTF07cmV0dXJuIHkubmV4dFRpY2soZnVuY3Rpb24oKXtzLmFwcGx5KG51bGwsUyl9KX19fTp5fSw2NTYwNihmZSl7dmFyIGgseSxqPWZlLmV4cG9ydHM9e307ZnVuY3Rpb24gYygpe3Ro'@; put 'cm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHMoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIEEoVil7aWYoaD09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQo'@; put 'ViwwKTtpZigoaD09PWN8fCFoKSYmc2V0VGltZW91dClyZXR1cm4gaD1zZXRUaW1lb3V0LHNldFRpbWVvdXQoViwwKTt0cnl7cmV0dXJuIGgoViwwKX1jYXRjaHt0cnl7cmV0dXJuIGguY2FsbChudWxsLFYsMCl9Y2F0Y2h7cmV0dXJuIGguY2FsbCh0aGlzLFYsMCl9fX0hZnVuY3Rpb24oKXt0'@; put 'cnl7aD0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OmN9Y2F0Y2h7aD1jfXRyeXt5PSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnN9Y2F0Y2h7eT1zfX0oKTt2YXIgUyxDPVtdLHc9ITEsTD0tMTtmdW5jdGlvbiBSKCl7IXd8fCFT'@; put 'fHwodz0hMSxTLmxlbmd0aD9DPVMuY29uY2F0KEMpOkw9LTEsQy5sZW5ndGgmJngoKSl9ZnVuY3Rpb24geCgpe2lmKCF3KXt2YXIgVj1BKFIpO3c9ITA7Zm9yKHZhciBOPUMubGVuZ3RoO047KXtmb3IoUz1DLEM9W107KytMPE47KVMmJlNbTF0ucnVuKCk7TD0tMSxOPUMubGVuZ3RofVM9bnVs'@; put 'bCx3PSExLGZ1bmN0aW9uIHYoVil7aWYoeT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KFYpO2lmKCh5PT09c3x8IXkpJiZjbGVhclRpbWVvdXQpcmV0dXJuIHk9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChWKTt0cnl7cmV0dXJuIHkoVil9Y2F0Y2h7dHJ5e3JldHVybiB5'@; put 'LmNhbGwobnVsbCxWKX1jYXRjaHtyZXR1cm4geS5jYWxsKHRoaXMsVil9fX0oVil9fWZ1bmN0aW9uIFUoVixOKXt0aGlzLmZ1bj1WLHRoaXMuYXJyYXk9Tn1mdW5jdGlvbiBIKCl7fWoubmV4dFRpY2s9ZnVuY3Rpb24oVil7dmFyIE49bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYo'@; put 'YXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgej0xO3o8YXJndW1lbnRzLmxlbmd0aDt6KyspTlt6LTFdPWFyZ3VtZW50c1t6XTtDLnB1c2gobmV3IFUoVixOKSksMT09PUMubGVuZ3RoJiYhdyYmQSh4KX0sVS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0'@; put 'aGlzLmFycmF5KX0sai50aXRsZT0iYnJvd3NlciIsai5icm93c2VyPSEwLGouZW52PXt9LGouYXJndj1bXSxqLnZlcnNpb249IiIsai52ZXJzaW9ucz17fSxqLm9uPUgsai5hZGRMaXN0ZW5lcj1ILGoub25jZT1ILGoub2ZmPUgsai5yZW1vdmVMaXN0ZW5lcj1ILGoucmVtb3ZlQWxsTGlzdGVu'@; put 'ZXJzPUgsai5lbWl0PUgsai5wcmVwZW5kTGlzdGVuZXI9SCxqLnByZXBlbmRPbmNlTGlzdGVuZXI9SCxqLmxpc3RlbmVycz1mdW5jdGlvbihWKXtyZXR1cm5bXX0sai5iaW5kaW5nPWZ1bmN0aW9uKFYpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQi'@; put 'KX0sai5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGouY2hkaXI9ZnVuY3Rpb24oVil7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sai51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sOTcxNjgoZmUsaixoKXtqLnB1YmxpY0VuY3J5cHQ9aCgy'@; put 'ODkwMiksai5wcml2YXRlRGVjcnlwdD1oKDc3MzYyKSxqLnByaXZhdGVFbmNyeXB0PWZ1bmN0aW9uKGMscyl7cmV0dXJuIGoucHVibGljRW5jcnlwdChjLHMsITApfSxqLnB1YmxpY0RlY3J5cHQ9ZnVuY3Rpb24oYyxzKXtyZXR1cm4gai5wcml2YXRlRGVjcnlwdChjLHMsITApfX0sNDgyMDYo'@; put 'ZmUsaixoKXt2YXIgeT1oKDQ3MTA4KSxjPWgoOTI4NjEpLkJ1ZmZlcjtmdW5jdGlvbiBzKEEpe3ZhciB2PWMuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIHYud3JpdGVVSW50MzJCRShBLDApLHZ9ZmUuZXhwb3J0cz1mdW5jdGlvbihBLHYpe2Zvcih2YXIgUyxDPWMuYWxsb2MoMCksdz0wO0MubGVu'@; put 'Z3RoPHY7KVM9cyh3KyspLEM9Yy5jb25jYXQoW0MseSgic2hhMSIpLnVwZGF0ZShBKS51cGRhdGUoUykuZGlnZXN0KCldKTtyZXR1cm4gQy5zbGljZSgwLHYpfX0sODI1MDkoZmUsaixoKXshZnVuY3Rpb24oeSxjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyhYLGYpe2lmKCFYKXRocm93IG5l'@; put 'dyBFcnJvcihmfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIEEoWCxmKXtYLnN1cGVyXz1mO3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1mLnByb3RvdHlwZSxYLnByb3RvdHlwZT1uZXcgYixYLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1YfWZ1bmN0aW9uIHYoWCxmLGIpe2lm'@; put 'KHYuaXNCTihYKSlyZXR1cm4gWDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09WCYmKCgibGUiPT09Znx8ImJlIj09PWYpJiYoYj1mLGY9MTApLHRoaXMuX2luaXQoWHx8MCxmfHwxMCxifHwiYmUiKSl9dmFyIEM7Im9i'@; put 'amVjdCI9PXR5cGVvZiB5P3kuZXhwb3J0cz12OmMuQk49dix2LkJOPXYsdi53b3JkU2l6ZT0yNjt0cnl7Qz10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6aCg1MTA2OSkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiB3KFgsZil7dmFyIGI9'@; put 'WC5jaGFyQ29kZUF0KGYpO3JldHVybiBiPj02NSYmYjw9NzA/Yi01NTpiPj05NyYmYjw9MTAyP2ItODc6Yi00OCYxNX1mdW5jdGlvbiBTKFgsZixiKXt2YXIgaz13KFgsYik7cmV0dXJuIGItMT49ZiYmKGt8PXcoWCxiLTEpPDw0KSxrfWZ1bmN0aW9uIEwoWCxmLGIsayl7Zm9yKHZhciBNPTAs'@; put 'Qj1NYXRoLm1pbihYLmxlbmd0aCxiKSxLPWY7SzxCO0srKyl7dmFyIEc9WC5jaGFyQ29kZUF0KEspLTQ4O00qPWssTSs9Rz49NDk/Ry00OSsxMDpHPj0xNz9HLTE3KzEwOkd9cmV0dXJuIE19di5pc0JOPWZ1bmN0aW9uKGYpe3JldHVybiBmIGluc3RhbmNlb2Ygdnx8bnVsbCE9PWYmJiJvYmpl'@; put 'Y3QiPT10eXBlb2YgZiYmZi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PXYud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZi53b3Jkcyl9LHYubWF4PWZ1bmN0aW9uKGYsYil7cmV0dXJuIGYuY21wKGIpPjA/ZjpifSx2Lm1pbj1mdW5jdGlvbihmLGIpe3JldHVybiBmLmNtcChiKTwwP2Y6Yn0sdi5w'@; put 'cm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZixiLGspe2lmKCJudW1iZXIiPT10eXBlb2YgZilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihmLGIsayk7aWYoIm9iamVjdCI9PXR5cGVvZiBmKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZixiLGspOyJoZXgiPT09YiYmKGI9MTYpLHMoYj09PSgwfGIp'@; put 'JiZiPj0yJiZiPD0zNik7dmFyIE09MDsiLSI9PT0oZj1mLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKE0rKyx0aGlzLm5lZ2F0aXZlPTEpLE08Zi5sZW5ndGgmJigxNj09PWI/dGhpcy5fcGFyc2VIZXgoZixNLGspOih0aGlzLl9wYXJzZUJhc2UoZixiLE0pLCJsZSI9PT1r'@; put 'JiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYixrKSkpfSx2LnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihmLGIsayl7ZjwwJiYodGhpcy5uZWdhdGl2ZT0xLGY9LWYpLGY8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmZdLHRoaXMubGVuZ3RoPTEpOmY8NDUw'@; put 'MzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZixmLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToocyhmPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmYsZi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09'@; put 'ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGIsayl9LHYucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZixiLGspe2lmKHMoIm51bWJlciI9PXR5cGVvZiBmLmxlbmd0aCksZi5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0'@; put 'aGlzLmxlbmd0aD1NYXRoLmNlaWwoZi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgTT0wO008dGhpcy5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgQixLLEc9MDtpZigiYmUiPT09aylmb3IoTT1mLmxlbmd0aC0xLEI9MDtNPj0wO00t'@; put 'PTMpdGhpcy53b3Jkc1tCXXw9KEs9ZltNXXxmW00tMV08PDh8ZltNLTJdPDwxNik8PEcmNjcxMDg4NjMsdGhpcy53b3Jkc1tCKzFdPUs+Pj4yNi1HJjY3MTA4ODYzLChHKz0yNCk+PTI2JiYoRy09MjYsQisrKTtlbHNlIGlmKCJsZSI9PT1rKWZvcihNPTAsQj0wO008Zi5sZW5ndGg7TSs9Myl0'@; put 'aGlzLndvcmRzW0JdfD0oSz1mW01dfGZbTSsxXTw8OHxmW00rMl08PDE2KTw8RyY2NzEwODg2Myx0aGlzLndvcmRzW0IrMV09Sz4+PjI2LUcmNjcxMDg4NjMsKEcrPTI0KT49MjYmJihHLT0yNixCKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlv'@; put 'bihmLGIsayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChmLmxlbmd0aC1iKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBNPTA7TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3ZhciBHLEI9MCxLPTA7aWYoImJlIj09PWspZm9yKE09Zi5sZW5n'@; put 'dGgtMTtNPj1iO00tPTIpRz1TKGYsYixNKTw8Qix0aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7ZWxzZSBmb3IoTT0oZi5sZW5ndGgtYiklMj09MD9iKzE6YjtNPGYubGVuZ3RoO00rPTIpRz1TKGYsYixNKTw8Qix0'@; put 'aGlzLndvcmRzW0tdfD02NzEwODg2MyZHLEI+PTE4PyhCLT0xOCx0aGlzLndvcmRzW0srPTFdfD1HPj4+MjYpOkIrPTg7dGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGYsYixrKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgTT0wLEI9'@; put 'MTtCPD02NzEwODg2MztCKj1iKU0rKztNLS0sQj1CL2J8MDtmb3IodmFyIEs9Zi5sZW5ndGgtayxHPUslTSxEPU1hdGgubWluKEssSy1HKStrLHA9MCxJPWs7STxEO0krPU0pcD1MKGYsSSxJK00sYiksdGhpcy5pbXVsbihCKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1sw'@; put 'XSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09Ryl7dmFyIHVlPTE7Zm9yKHA9TChmLEksZi5sZW5ndGgsYiksST0wO0k8RztJKyspdWUqPWI7dGhpcy5pbXVsbih1ZSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgp'@; put 'fSx2LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGYpe2Yud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoO2IrKylmLndvcmRzW2JdPXRoaXMud29yZHNbYl07Zi5sZW5ndGg9dGhpcy5sZW5ndGgsZi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGYu'@; put 'cmVkPXRoaXMucmVkfSx2LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiB0aGlzLmNvcHkoZiksZn0sdi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihmKXtmb3IoO3RoaXMubGVuZ3RoPGY7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDty'@; put 'ZXR1cm4gdGhpc30sdi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSx2LnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sdi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgUj1bIiIs'@; put 'IjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIs'@; put 'IjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw'@; put 'MDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx4PVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLFU9WzAsMCwzMzU1'@; put 'NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEs'@; put 'NTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gVihYLGYsYil7Yi5uZWdhdGl2ZT1mLm5lZ2F0'@; put 'aXZlXlgubmVnYXRpdmU7dmFyIGs9WC5sZW5ndGgrZi5sZW5ndGh8MDtiLmxlbmd0aD1rLGs9ay0xfDA7dmFyIE09MHxYLndvcmRzWzBdLEI9MHxmLndvcmRzWzBdLEs9TSpCLEQ9Sy82NzEwODg2NHwwO2Iud29yZHNbMF09NjcxMDg4NjMmSztmb3IodmFyIHA9MTtwPGs7cCsrKXtmb3IodmFy'@; put 'IEk9RD4+PjI2LHVlPTY3MTA4ODYzJkQsbmU9TWF0aC5taW4ocCxmLmxlbmd0aC0xKSxfZT1NYXRoLm1heCgwLHAtWC5sZW5ndGgrMSk7X2U8PW5lO19lKyspSSs9KEs9KE09MHxYLndvcmRzW3AtX2V8MF0pKihCPTB8Zi53b3Jkc1tfZV0pK3VlKS82NzEwODg2NHwwLHVlPTY3MTA4ODYzJks7'@; put 'Yi53b3Jkc1twXT0wfHVlLEQ9MHxJfXJldHVybiAwIT09RD9iLndvcmRzW3BdPTB8RDpiLmxlbmd0aC0tLGIuc3RyaXAoKX12LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihmLGIpe3ZhciBrO2lmKGI9MHxifHwxLDE2PT09KGY9Znx8MTApfHwiaGV4Ij09PWYpe2s9IiI7Zm9yKHZhciBN'@; put 'PTAsQj0wLEs9MDtLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9dGhpcy53b3Jkc1tLXSxEPSgxNjc3NzIxNSYoRzw8TXxCKSkudG9TdHJpbmcoMTYpO0I9Rz4+PjI0LU0mMTY3NzcyMTUsKE0rPTIpPj0yNiYmKE0tPTI2LEstLSksaz0wIT09Qnx8SyE9PXRoaXMubGVuZ3RoLTE/Uls2LUQubGVu'@; put 'Z3RoXStEK2s6RCtrfWZvcigwIT09QiYmKGs9Qi50b1N0cmluZygxNikrayk7ay5sZW5ndGglYiE9PTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31pZihmPT09KDB8ZikmJmY+PTImJmY8PTM2KXt2YXIgcD14W2ZdLEk9VVtmXTtrPSIiO3ZhciB1ZT10'@; put 'aGlzLmNsb25lKCk7Zm9yKHVlLm5lZ2F0aXZlPTA7IXVlLmlzWmVybygpOyl7dmFyIG5lPXVlLm1vZG4oSSkudG9TdHJpbmcoZik7az0odWU9dWUuaWRpdm4oSSkpLmlzWmVybygpP25lK2s6UltwLW5lLmxlbmd0aF0rbmUra31mb3IodGhpcy5pc1plcm8oKSYmKGs9IjAiK2spO2subGVuZ3Ro'@; put 'JWIhPT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9cyghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSx2LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBmPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxl'@; put 'bmd0aD9mKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zis9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJnMoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8g'@; put 'NTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1mOmZ9LHYucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sdi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZixiKXtyZXR1cm4gcyh0eXBlb2YgQzwidSIpLHRoaXMudG9BcnJheUxpa2Uo'@; put 'QyxmLGIpfSx2LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZixiKX0sdi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZixiLGspe3ZhciBNPXRoaXMuYnl0ZUxlbmd0aCgpLEI9a3x8TWF0aC5tYXgoMSxNKTtzKE08'@; put 'PUIsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxzKEI+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBELHAsSz0ibGUiPT09YixHPW5ldyBmKEIpLEk9dGhpcy5jbG9uZSgpO2lmKEspe2ZvcihwPTA7IUkuaXNaZXJvKCk7'@; put 'cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVzaHJuKDgpLEdbcF09RDtmb3IoO3A8QjtwKyspR1twXT0wfWVsc2V7Zm9yKHA9MDtwPEItTTtwKyspR1twXT0wO2ZvcihwPTA7IUkuaXNaZXJvKCk7cCsrKUQ9SS5hbmRsbigyNTUpLEkuaXVzaHJuKDgpLEdbQi1wLTFdPUR9cmV0dXJuIEd9LHYucHJv'@; put 'dG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihmKXtyZXR1cm4gMzItTWF0aC5jbHozMihmKX06ZnVuY3Rpb24oZil7dmFyIGI9ZixrPTA7cmV0dXJuIGI+PTQwOTYmJihrKz0xMyxiPj4+PTEzKSxiPj02NCYmKGsrPTcsYj4+Pj03KSxiPj04JiYoays9NCxiPj4+PTQpLGI+'@; put 'PTImJihrKz0yLGI+Pj49MiksaytifSx2LnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZil7aWYoMD09PWYpcmV0dXJuIDI2O3ZhciBiPWYsaz0wO3JldHVybiEoODE5MSZiKSYmKGsrPTEzLGI+Pj49MTMpLCEoMTI3JmIpJiYoays9NyxiPj4+PTcpLCEoMTUmYikmJihrKz00LGI+Pj49'@; put 'NCksISgzJmIpJiYoays9MixiPj4+PTIpLCEoMSZiKSYmaysrLGt9LHYucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK2J9LHYucHJvdG90eXBlLnpl'@; put 'cm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGY9MCxiPTA7Yjx0aGlzLmxlbmd0aDtiKyspe3ZhciBrPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbYl0pO2lmKGYrPWssMjYhPT1rKWJyZWFrfXJldHVybiBmfSx2LnByb3RvdHlwZS5ieXRlTGVu'@; put 'Z3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSx2LnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oZil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oZikuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5m'@; put 'cm9tVHdvcz1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy50ZXN0bihmLTEpP3RoaXMubm90bihmKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSx2LnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sdi5wcm90b3R5cGUubmVnPWZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LHYucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LHYucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oZil7Zm9yKDt0aGlzLmxlbmd0aDxmLmxlbmd0aDspdGhp'@; put 'cy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgYj0wO2I8Zi5sZW5ndGg7YisrKXRoaXMud29yZHNbYl09dGhpcy53b3Jkc1tiXXxmLndvcmRzW2JdO3JldHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlvcj1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRp'@; put 'dmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXVvcihmKX0sdi5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZik6Zi5jbG9uZSgpLmlvcih0aGlzKX0sdi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlz'@; put 'Lmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihmKTpmLmNsb25lKCkuaXVvcih0aGlzKX0sdi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZil7dmFyIGI7Yj10aGlzLmxlbmd0aD5mLmxlbmd0aD9mOnRoaXM7Zm9yKHZhciBrPTA7azxiLmxlbmd0aDtrKyspdGhpcy53b3Jkc1tr'@; put 'XT10aGlzLndvcmRzW2tdJmYud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPWIubGVuZ3RoLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09KHRoaXMubmVnYXRpdmV8Zi5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoZil9LHYucHJvdG90eXBl'@; put 'LmFuZD1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoZik6Zi5jbG9uZSgpLmlhbmQodGhpcyl9LHYucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChm'@; put 'KTpmLmNsb25lKCkuaXVhbmQodGhpcyl9LHYucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGYpe3ZhciBiLGs7dGhpcy5sZW5ndGg+Zi5sZW5ndGg/KGI9dGhpcyxrPWYpOihiPWYsaz10aGlzKTtmb3IodmFyIE09MDtNPGsubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPWIud29yZHNbTV1eay53'@; put 'b3Jkc1tNXTtpZih0aGlzIT09Yilmb3IoO008Yi5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Yi53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9Yi5sZW5ndGgsdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKGYpe3JldHVybiBzKDA9PT0odGhpcy5uZWdhdGl2ZXxm'@; put 'Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcihmKX0sdi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmxlbmd0aD5mLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihmKTpmLmNsb25lKCkuaXhvcih0aGlzKX0sdi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihmKXtyZXR1cm4gdGhp'@; put 'cy5sZW5ndGg+Zi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGYpOmYuY2xvbmUoKS5pdXhvcih0aGlzKX0sdi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBiPTB8TWF0aC5jZWlsKGYvMjYpLGs9ZiUyNjt0aGlzLl9leHBhbmQo'@; put 'Yiksaz4wJiZiLS07Zm9yKHZhciBNPTA7TTxiO00rKyl0aGlzLndvcmRzW01dPTY3MTA4ODYzJn50aGlzLndvcmRzW01dO2ZvcihrPjAmJih0aGlzLndvcmRzW01dPX50aGlzLndvcmRzW01dJjY3MTA4ODYzPj4yNi1rLE0rKyk7TTx0aGlzLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT0wO3Jl'@; put 'dHVybiB0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihmKX0sdi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihmLGIpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgaz1mLzI2fDAsTT1mJTI2O3JldHVybiB0'@; put 'aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdPWI/dGhpcy53b3Jkc1trXXwxPDxNOnRoaXMud29yZHNba10mfigxPDxNKSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZil7dmFyIGIsayxNO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSly'@; put 'ZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLGI9dGhpcy5pc3ViKGYpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRpdmUpcmV0dXJuIGYubmVnYXRpdmU9MCxiPXRoaXMuaXN1YihmKSxmLm5lZ2F0aXZlPTEsYi5fbm9ybVNp'@; put 'Z24oKTt0aGlzLmxlbmd0aD5mLmxlbmd0aD8oaz10aGlzLE09Zik6KGs9ZixNPXRoaXMpO2Zvcih2YXIgQj0wLEs9MDtLPE0ubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPTY3MTA4ODYzJihiPSgwfGsud29yZHNbS10pKygwfE0ud29yZHNbS10pK0IpLEI9Yj4+PjI2O2Zvcig7MCE9PUImJks8'@; put 'ay5sZW5ndGg7SysrKXRoaXMud29yZHNbS109NjcxMDg4NjMmKGI9KDB8ay53b3Jkc1tLXSkrQiksQj1iPj4+MjY7aWYodGhpcy5sZW5ndGg9ay5sZW5ndGgsMCE9PUIpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Qix0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoayE9PXRoaXMpZm9yKDtLPGsubGVu'@; put 'Z3RoO0srKyl0aGlzLndvcmRzW0tdPWsud29yZHNbS107cmV0dXJuIHRoaXN9LHYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihmKXt2YXIgYjtyZXR1cm4gMCE9PWYubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhmLm5lZ2F0aXZlPTAsYj10aGlzLnN1YihmKSxmLm5lZ2F0aXZlXj0xLGIp'@; put 'OjA9PT1mLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLGI9Zi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLGIpOnRoaXMubGVuZ3RoPmYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGYpOmYuY2xvbmUoKS5pYWRkKHRoaXMpfSx2LnByb3RvdHlwZS5pc3Vi'@; put 'PWZ1bmN0aW9uKGYpe2lmKDAhPT1mLm5lZ2F0aXZlKXtmLm5lZ2F0aXZlPTA7dmFyIGI9dGhpcy5pYWRkKGYpO3JldHVybiBmLm5lZ2F0aXZlPTEsYi5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChmKSx0aGlzLm5lZ2F0'@; put 'aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgTSxCLGs9dGhpcy5jbXAoZik7aWYoMD09PWspcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO2s+MD8oTT10aGlzLEI9Zik6KE09ZixCPXRoaXMpO2Zvcih2YXIgSz0wLEc9MDtHPEIubGVu'@; put 'Z3RoO0crKylLPShiPSgwfE0ud29yZHNbR10pLSgwfEIud29yZHNbR10pK0spPj4yNix0aGlzLndvcmRzW0ddPTY3MTA4ODYzJmI7Zm9yKDswIT09SyYmRzxNLmxlbmd0aDtHKyspSz0oYj0oMHxNLndvcmRzW0ddKStLKT4+MjYsdGhpcy53b3Jkc1tHXT02NzEwODg2MyZiO2lmKDA9PT1LJiZH'@; put 'PE0ubGVuZ3RoJiZNIT09dGhpcylmb3IoO0c8TS5sZW5ndGg7RysrKXRoaXMud29yZHNbR109TS53b3Jkc1tHXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsRyksTSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuc3Vi'@; put 'PWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihmKX07dmFyIE49ZnVuY3Rpb24oZixiLGspe3ZhciBELHAsSSxNPWYud29yZHMsQj1iLndvcmRzLEs9ay53b3JkcyxHPTAsdWU9MHxNWzBdLG5lPTgxOTEmdWUsX2U9dWU+Pj4xMyxQZT0wfE1bMV0sb3Q9ODE5MSZQZSxsdD1Q'@; put 'ZT4+PjEzLGR0PTB8TVsyXSxSZT04MTkxJmR0LGFlPWR0Pj4+MTMseGU9MHxNWzNdLGplPTgxOTEmeGUsQWU9eGU+Pj4xMyxEZT0wfE1bNF0sRmU9ODE5MSZEZSxnZT1EZT4+PjEzLGNlPTB8TVs1XSxoZT04MTkxJmNlLHdlPWNlPj4+MTMsSmU9MHxNWzZdLHR0PTgxOTEmSmUsS2U9SmU+Pj4x'@; put 'MywkdD0wfE1bN10sUnQ9ODE5MSYkdCxMdD0kdD4+PjEzLEd0PTB8TVs4XSxndD04MTkxJkd0LFh0PUd0Pj4+MTMsTHI9MHxNWzldLGxuPTgxOTEmTHIsT249THI+Pj4xMyxRcj0wfEJbMF0sdHI9ODE5MSZRcixIbj1Rcj4+PjEzLE9vPTB8QlsxXSx1cj04MTkxJk9vLFpuPU9vPj4+MTMsU249'@; put 'MHxCWzJdLHhyPTgxOTEmU24sVHQ9U24+Pj4xMyxBcj0wfEJbM10sX249ODE5MSZBcixadD1Bcj4+PjEzLE5uPTB8Qls0XSxwdD04MTkxJk5uLHBuPU5uPj4+MTMsTWk9MHxCWzVdLEdlPTgxOTEmTWksVXQ9TWk+Pj4xMyx2cj0wfEJbNl0seHQ9ODE5MSZ2cixCdD12cj4+PjEzLHpuPTB8Qls3'@; put 'XSxHbj04MTkxJnpuLHluPXpuPj4+MTMsdmk9MHxCWzhdLHJyPTgxOTEmdmksaHI9dmk+Pj4xMyxwbz0wfEJbOV0sdm49ODE5MSZwbyxCbj1wbz4+PjEzO2submVnYXRpdmU9Zi5uZWdhdGl2ZV5iLm5lZ2F0aXZlLGsubGVuZ3RoPTE5O3ZhciBqYT0oRysoRD1NYXRoLmltdWwobmUsdHIpKXww'@; put 'KSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKG5lLEhuKSkrTWF0aC5pbXVsKF9lLHRyKXwwKSk8PDEzKXwwO0c9KChJPU1hdGguaW11bChfZSxIbikpKyhwPj4+MTMpfDApKyhqYT4+PjI2KXwwLGphJj02NzEwODg2MyxEPU1hdGguaW11bChvdCx0cikscD0ocD1NYXRoLmltdWwob3QsSG4pKStN'@; put 'YXRoLmltdWwobHQsdHIpfDAsST1NYXRoLmltdWwobHQsSG4pO3ZhciBqbz0oRysoRD1EK01hdGguaW11bChuZSx1cil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFpuKXwwKStNYXRoLmltdWwoX2UsdXIpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWm4pfDAp'@; put 'KyhwPj4+MTMpfDApKyhqbz4+PjI2KXwwLGpvJj02NzEwODg2MyxEPU1hdGguaW11bChSZSx0cikscD0ocD1NYXRoLmltdWwoUmUsSG4pKStNYXRoLmltdWwoYWUsdHIpfDAsST1NYXRoLmltdWwoYWUsSG4pLEQ9RCtNYXRoLmltdWwob3QsdXIpfDAscD0ocD1wK01hdGguaW11bChvdCxabil8'@; put 'MCkrTWF0aC5pbXVsKGx0LHVyKXwwLEk9SStNYXRoLmltdWwobHQsWm4pfDA7dmFyIFhyPShHKyhEPUQrTWF0aC5pbXVsKG5lLHhyKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVHQpfDApK01hdGguaW11bChfZSx4cil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChf'@; put 'ZSxUdCl8MCkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGplLHRyKSxwPShwPU1hdGguaW11bChqZSxIbikpK01hdGguaW11bChBZSx0cil8MCxJPU1hdGguaW11bChBZSxIbiksRD1EK01hdGguaW11bChSZSx1cil8MCxwPShwPXArTWF0aC5pbXVs'@; put 'KFJlLFpuKXwwKStNYXRoLmltdWwoYWUsdXIpfDAsST1JK01hdGguaW11bChhZSxabil8MCxEPUQrTWF0aC5pbXVsKG90LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVHQpfDApK01hdGguaW11bChsdCx4cil8MCxJPUkrTWF0aC5pbXVsKGx0LFR0KXwwO3ZhciBlYT0oRysoRD1EK01hdGgu'@; put 'aW11bChuZSxfbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLFp0KXwwKStNYXRoLmltdWwoX2UsX24pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsWnQpfDApKyhwPj4+MTMpfDApKyhlYT4+PjI2KXwwLGVhJj02NzEwODg2MyxEPU1hdGguaW11bChGZSx0ciks'@; put 'cD0ocD1NYXRoLmltdWwoRmUsSG4pKStNYXRoLmltdWwoZ2UsdHIpfDAsST1NYXRoLmltdWwoZ2UsSG4pLEQ9RCtNYXRoLmltdWwoamUsdXIpfDAscD0ocD1wK01hdGguaW11bChqZSxabil8MCkrTWF0aC5pbXVsKEFlLHVyKXwwLEk9SStNYXRoLmltdWwoQWUsWm4pfDAsRD1EK01hdGguaW11'@; put 'bChSZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKFJlLFR0KXwwKStNYXRoLmltdWwoYWUseHIpfDAsST1JK01hdGguaW11bChhZSxUdCl8MCxEPUQrTWF0aC5pbXVsKG90LF9uKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsWnQpfDApK01hdGguaW11bChsdCxfbil8MCxJPUkrTWF0aC5pbXVsKGx0'@; put 'LFp0KXwwO3ZhciByYT0oRysoRD1EK01hdGguaW11bChuZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHBuKXwwKStNYXRoLmltdWwoX2UscHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UscG4pfDApKyhwPj4+MTMpfDApKyhyYT4+PjI2KXwwLHJhJj02'@; put 'NzEwODg2MyxEPU1hdGguaW11bChoZSx0cikscD0ocD1NYXRoLmltdWwoaGUsSG4pKStNYXRoLmltdWwod2UsdHIpfDAsST1NYXRoLmltdWwod2UsSG4pLEQ9RCtNYXRoLmltdWwoRmUsdXIpfDAscD0ocD1wK01hdGguaW11bChGZSxabil8MCkrTWF0aC5pbXVsKGdlLHVyKXwwLEk9SStNYXRo'@; put 'LmltdWwoZ2UsWm4pfDAsRD1EK01hdGguaW11bChqZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGplLFR0KXwwKStNYXRoLmltdWwoQWUseHIpfDAsST1JK01hdGguaW11bChBZSxUdCl8MCxEPUQrTWF0aC5pbXVsKFJlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsWnQpfDApK01hdGguaW11'@; put 'bChhZSxfbil8MCxJPUkrTWF0aC5pbXVsKGFlLFp0KXwwLEQ9RCtNYXRoLmltdWwob3QscHQpfDAscD0ocD1wK01hdGguaW11bChvdCxwbil8MCkrTWF0aC5pbXVsKGx0LHB0KXwwLEk9SStNYXRoLmltdWwobHQscG4pfDA7dmFyIGNhPShHKyhEPUQrTWF0aC5pbXVsKG5lLEdlKXwwKXwwKSso'@; put 'KDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsVXQpfDApK01hdGguaW11bChfZSxHZSl8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChfZSxVdCl8MCkrKHA+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKHR0LHRyKSxwPShwPU1hdGguaW11bCh0dCxI'@; put 'bikpK01hdGguaW11bChLZSx0cil8MCxJPU1hdGguaW11bChLZSxIbiksRD1EK01hdGguaW11bChoZSx1cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFpuKXwwKStNYXRoLmltdWwod2UsdXIpfDAsST1JK01hdGguaW11bCh3ZSxabil8MCxEPUQrTWF0aC5pbXVsKEZlLHhyKXwwLHA9KHA9cCtN'@; put 'YXRoLmltdWwoRmUsVHQpfDApK01hdGguaW11bChnZSx4cil8MCxJPUkrTWF0aC5pbXVsKGdlLFR0KXwwLEQ9RCtNYXRoLmltdWwoamUsX24pfDAscD0ocD1wK01hdGguaW11bChqZSxadCl8MCkrTWF0aC5pbXVsKEFlLF9uKXwwLEk9SStNYXRoLmltdWwoQWUsWnQpfDAsRD1EK01hdGguaW11'@; put 'bChSZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKFJlLHBuKXwwKStNYXRoLmltdWwoYWUscHQpfDAsST1JK01hdGguaW11bChhZSxwbil8MCxEPUQrTWF0aC5pbXVsKG90LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsVXQpfDApK01hdGguaW11bChsdCxHZSl8MCxJPUkrTWF0aC5pbXVsKGx0'@; put 'LFV0KXwwO3ZhciBDaT0oRysoRD1EK01hdGguaW11bChuZSx4dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJ0KXwwKStNYXRoLmltdWwoX2UseHQpfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQnQpfDApKyhwPj4+MTMpfDApKyhDaT4+PjI2KXwwLENpJj02'@; put 'NzEwODg2MyxEPU1hdGguaW11bChSdCx0cikscD0ocD1NYXRoLmltdWwoUnQsSG4pKStNYXRoLmltdWwoTHQsdHIpfDAsST1NYXRoLmltdWwoTHQsSG4pLEQ9RCtNYXRoLmltdWwodHQsdXIpfDAscD0ocD1wK01hdGguaW11bCh0dCxabil8MCkrTWF0aC5pbXVsKEtlLHVyKXwwLEk9SStNYXRo'@; put 'LmltdWwoS2UsWm4pfDAsRD1EK01hdGguaW11bChoZSx4cil8MCxwPShwPXArTWF0aC5pbXVsKGhlLFR0KXwwKStNYXRoLmltdWwod2UseHIpfDAsST1JK01hdGguaW11bCh3ZSxUdCl8MCxEPUQrTWF0aC5pbXVsKEZlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsWnQpfDApK01hdGguaW11'@; put 'bChnZSxfbil8MCxJPUkrTWF0aC5pbXVsKGdlLFp0KXwwLEQ9RCtNYXRoLmltdWwoamUscHQpfDAscD0ocD1wK01hdGguaW11bChqZSxwbil8MCkrTWF0aC5pbXVsKEFlLHB0KXwwLEk9SStNYXRoLmltdWwoQWUscG4pfDAsRD1EK01hdGguaW11bChSZSxHZSl8MCxwPShwPXArTWF0aC5pbXVs'@; put 'KFJlLFV0KXwwKStNYXRoLmltdWwoYWUsR2UpfDAsST1JK01hdGguaW11bChhZSxVdCl8MCxEPUQrTWF0aC5pbXVsKG90LHh0KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsQnQpfDApK01hdGguaW11bChsdCx4dCl8MCxJPUkrTWF0aC5pbXVsKGx0LEJ0KXwwO3ZhciBobz0oRysoRD1EK01hdGgu'@; put 'aW11bChuZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLHluKXwwKStNYXRoLmltdWwoX2UsR24pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UseW4pfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2MyxEPU1hdGguaW11bChndCx0ciks'@; put 'cD0ocD1NYXRoLmltdWwoZ3QsSG4pKStNYXRoLmltdWwoWHQsdHIpfDAsST1NYXRoLmltdWwoWHQsSG4pLEQ9RCtNYXRoLmltdWwoUnQsdXIpfDAscD0ocD1wK01hdGguaW11bChSdCxabil8MCkrTWF0aC5pbXVsKEx0LHVyKXwwLEk9SStNYXRoLmltdWwoTHQsWm4pfDAsRD1EK01hdGguaW11'@; put 'bCh0dCx4cil8MCxwPShwPXArTWF0aC5pbXVsKHR0LFR0KXwwKStNYXRoLmltdWwoS2UseHIpfDAsST1JK01hdGguaW11bChLZSxUdCl8MCxEPUQrTWF0aC5pbXVsKGhlLF9uKXwwLHA9KHA9cCtNYXRoLmltdWwoaGUsWnQpfDApK01hdGguaW11bCh3ZSxfbil8MCxJPUkrTWF0aC5pbXVsKHdl'@; put 'LFp0KXwwLEQ9RCtNYXRoLmltdWwoRmUscHQpfDAscD0ocD1wK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKGdlLHB0KXwwLEk9SStNYXRoLmltdWwoZ2UscG4pfDAsRD1EK01hdGguaW11bChqZSxHZSl8MCxwPShwPXArTWF0aC5pbXVsKGplLFV0KXwwKStNYXRoLmltdWwoQWUsR2Up'@; put 'fDAsST1JK01hdGguaW11bChBZSxVdCl8MCxEPUQrTWF0aC5pbXVsKFJlLHh0KXwwLHA9KHA9cCtNYXRoLmltdWwoUmUsQnQpfDApK01hdGguaW11bChhZSx4dCl8MCxJPUkrTWF0aC5pbXVsKGFlLEJ0KXwwLEQ9RCtNYXRoLmltdWwob3QsR24pfDAscD0ocD1wK01hdGguaW11bChvdCx5bil8'@; put 'MCkrTWF0aC5pbXVsKGx0LEduKXwwLEk9SStNYXRoLmltdWwobHQseW4pfDA7dmFyIE1hPShHKyhEPUQrTWF0aC5pbXVsKG5lLHJyKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobmUsaHIpfDApK01hdGguaW11bChfZSxycil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChf'@; put 'ZSxocil8MCkrKHA+Pj4xMyl8MCkrKE1hPj4+MjYpfDAsTWEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHRyKSxwPShwPU1hdGguaW11bChsbixIbikpK01hdGguaW11bChPbix0cil8MCxJPU1hdGguaW11bChPbixIbiksRD1EK01hdGguaW11bChndCx1cil8MCxwPShwPXArTWF0aC5pbXVs'@; put 'KGd0LFpuKXwwKStNYXRoLmltdWwoWHQsdXIpfDAsST1JK01hdGguaW11bChYdCxabil8MCxEPUQrTWF0aC5pbXVsKFJ0LHhyKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVHQpfDApK01hdGguaW11bChMdCx4cil8MCxJPUkrTWF0aC5pbXVsKEx0LFR0KXwwLEQ9RCtNYXRoLmltdWwodHQsX24p'@; put 'fDAscD0ocD1wK01hdGguaW11bCh0dCxadCl8MCkrTWF0aC5pbXVsKEtlLF9uKXwwLEk9SStNYXRoLmltdWwoS2UsWnQpfDAsRD1EK01hdGguaW11bChoZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGhlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsST1JK01hdGguaW11bCh3ZSxwbil8MCxE'@; put 'PUQrTWF0aC5pbXVsKEZlLEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVXQpfDApK01hdGguaW11bChnZSxHZSl8MCxJPUkrTWF0aC5pbXVsKGdlLFV0KXwwLEQ9RCtNYXRoLmltdWwoamUseHQpfDAscD0ocD1wK01hdGguaW11bChqZSxCdCl8MCkrTWF0aC5pbXVsKEFlLHh0KXwwLEk9SStN'@; put 'YXRoLmltdWwoQWUsQnQpfDAsRD1EK01hdGguaW11bChSZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKFJlLHluKXwwKStNYXRoLmltdWwoYWUsR24pfDAsST1JK01hdGguaW11bChhZSx5bil8MCxEPUQrTWF0aC5pbXVsKG90LHJyKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsaHIpfDApK01hdGgu'@; put 'aW11bChsdCxycil8MCxJPUkrTWF0aC5pbXVsKGx0LGhyKXwwO3ZhciBrcz0oRysoRD1EK01hdGguaW11bChuZSx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG5lLEJuKXwwKStNYXRoLmltdWwoX2Usdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoX2UsQm4pfDAp'@; put 'KyhwPj4+MTMpfDApKyhrcz4+PjI2KXwwLGtzJj02NzEwODg2MyxEPU1hdGguaW11bChsbix1cikscD0ocD1NYXRoLmltdWwobG4sWm4pKStNYXRoLmltdWwoT24sdXIpfDAsST1NYXRoLmltdWwoT24sWm4pLEQ9RCtNYXRoLmltdWwoZ3QseHIpfDAscD0ocD1wK01hdGguaW11bChndCxUdCl8'@; put 'MCkrTWF0aC5pbXVsKFh0LHhyKXwwLEk9SStNYXRoLmltdWwoWHQsVHQpfDAsRD1EK01hdGguaW11bChSdCxfbil8MCxwPShwPXArTWF0aC5pbXVsKFJ0LFp0KXwwKStNYXRoLmltdWwoTHQsX24pfDAsST1JK01hdGguaW11bChMdCxadCl8MCxEPUQrTWF0aC5pbXVsKHR0LHB0KXwwLHA9KHA9'@; put 'cCtNYXRoLmltdWwodHQscG4pfDApK01hdGguaW11bChLZSxwdCl8MCxJPUkrTWF0aC5pbXVsKEtlLHBuKXwwLEQ9RCtNYXRoLmltdWwoaGUsR2UpfDAscD0ocD1wK01hdGguaW11bChoZSxVdCl8MCkrTWF0aC5pbXVsKHdlLEdlKXwwLEk9SStNYXRoLmltdWwod2UsVXQpfDAsRD1EK01hdGgu'@; put 'aW11bChGZSx4dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEJ0KXwwKStNYXRoLmltdWwoZ2UseHQpfDAsST1JK01hdGguaW11bChnZSxCdCl8MCxEPUQrTWF0aC5pbXVsKGplLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoamUseW4pfDApK01hdGguaW11bChBZSxHbil8MCxJPUkrTWF0aC5pbXVs'@; put 'KEFlLHluKXwwLEQ9RCtNYXRoLmltdWwoUmUscnIpfDAscD0ocD1wK01hdGguaW11bChSZSxocil8MCkrTWF0aC5pbXVsKGFlLHJyKXwwLEk9SStNYXRoLmltdWwoYWUsaHIpfDA7dmFyIEJpPShHKyhEPUQrTWF0aC5pbXVsKG90LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwo'@; put 'b3QsQm4pfDApK01hdGguaW11bChsdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChsdCxCbil8MCkrKHA+Pj4xMyl8MCkrKEJpPj4+MjYpfDAsQmkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHhyKSxwPShwPU1hdGguaW11bChsbixUdCkpK01hdGguaW11bChPbix4cil8MCxJ'@; put 'PU1hdGguaW11bChPbixUdCksRD1EK01hdGguaW11bChndCxfbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LFp0KXwwKStNYXRoLmltdWwoWHQsX24pfDAsST1JK01hdGguaW11bChYdCxadCl8MCxEPUQrTWF0aC5pbXVsKFJ0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoUnQscG4pfDApK01hdGgu'@; put 'aW11bChMdCxwdCl8MCxJPUkrTWF0aC5pbXVsKEx0LHBuKXwwLEQ9RCtNYXRoLmltdWwodHQsR2UpfDAscD0ocD1wK01hdGguaW11bCh0dCxVdCl8MCkrTWF0aC5pbXVsKEtlLEdlKXwwLEk9SStNYXRoLmltdWwoS2UsVXQpfDAsRD1EK01hdGguaW11bChoZSx4dCl8MCxwPShwPXArTWF0aC5p'@; put 'bXVsKGhlLEJ0KXwwKStNYXRoLmltdWwod2UseHQpfDAsST1JK01hdGguaW11bCh3ZSxCdCl8MCxEPUQrTWF0aC5pbXVsKEZlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUseW4pfDApK01hdGguaW11bChnZSxHbil8MCxJPUkrTWF0aC5pbXVsKGdlLHluKXwwLEQ9RCtNYXRoLmltdWwoamUs'@; put 'cnIpfDAscD0ocD1wK01hdGguaW11bChqZSxocil8MCkrTWF0aC5pbXVsKEFlLHJyKXwwLEk9SStNYXRoLmltdWwoQWUsaHIpfDA7dmFyIHRhPShHKyhEPUQrTWF0aC5pbXVsKFJlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoUmUsQm4pfDApK01hdGguaW11bChhZSx2bil8'@; put 'MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChhZSxCbil8MCkrKHA+Pj4xMyl8MCkrKHRhPj4+MjYpfDAsdGEmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLF9uKSxwPShwPU1hdGguaW11bChsbixadCkpK01hdGguaW11bChPbixfbil8MCxJPU1hdGguaW11bChPbixadCksRD1EK01hdGgu'@; put 'aW11bChndCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LHBuKXwwKStNYXRoLmltdWwoWHQscHQpfDAsST1JK01hdGguaW11bChYdCxwbil8MCxEPUQrTWF0aC5pbXVsKFJ0LEdlKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsVXQpfDApK01hdGguaW11bChMdCxHZSl8MCxJPUkrTWF0aC5pbXVs'@; put 'KEx0LFV0KXwwLEQ9RCtNYXRoLmltdWwodHQseHQpfDAscD0ocD1wK01hdGguaW11bCh0dCxCdCl8MCkrTWF0aC5pbXVsKEtlLHh0KXwwLEk9SStNYXRoLmltdWwoS2UsQnQpfDAsRD1EK01hdGguaW11bChoZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKGhlLHluKXwwKStNYXRoLmltdWwod2Us'@; put 'R24pfDAsST1JK01hdGguaW11bCh3ZSx5bil8MCxEPUQrTWF0aC5pbXVsKEZlLHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsaHIpfDApK01hdGguaW11bChnZSxycil8MCxJPUkrTWF0aC5pbXVsKGdlLGhyKXwwO3ZhciBNcj0oRysoRD1EK01hdGguaW11bChqZSx2bil8MCl8MCkrKCg4MTkx'@; put 'JihwPShwPXArTWF0aC5pbXVsKGplLEJuKXwwKStNYXRoLmltdWwoQWUsdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoQWUsQm4pfDApKyhwPj4+MTMpfDApKyhNcj4+PjI2KXwwLE1yJj02NzEwODg2MyxEPU1hdGguaW11bChsbixwdCkscD0ocD1NYXRoLmltdWwobG4scG4pKStN'@; put 'YXRoLmltdWwoT24scHQpfDAsST1NYXRoLmltdWwoT24scG4pLEQ9RCtNYXRoLmltdWwoZ3QsR2UpfDAscD0ocD1wK01hdGguaW11bChndCxVdCl8MCkrTWF0aC5pbXVsKFh0LEdlKXwwLEk9SStNYXRoLmltdWwoWHQsVXQpfDAsRD1EK01hdGguaW11bChSdCx4dCl8MCxwPShwPXArTWF0aC5p'@; put 'bXVsKFJ0LEJ0KXwwKStNYXRoLmltdWwoTHQseHQpfDAsST1JK01hdGguaW11bChMdCxCdCl8MCxEPUQrTWF0aC5pbXVsKHR0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwodHQseW4pfDApK01hdGguaW11bChLZSxHbil8MCxJPUkrTWF0aC5pbXVsKEtlLHluKXwwLEQ9RCtNYXRoLmltdWwoaGUs'@; put 'cnIpfDAscD0ocD1wK01hdGguaW11bChoZSxocil8MCkrTWF0aC5pbXVsKHdlLHJyKXwwLEk9SStNYXRoLmltdWwod2UsaHIpfDA7dmFyIEZzPShHKyhEPUQrTWF0aC5pbXVsKEZlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUsQm4pfDApK01hdGguaW11bChnZSx2bil8'@; put 'MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChnZSxCbil8MCkrKHA+Pj4xMyl8MCkrKEZzPj4+MjYpfDAsRnMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLEdlKSxwPShwPU1hdGguaW11bChsbixVdCkpK01hdGguaW11bChPbixHZSl8MCxJPU1hdGguaW11bChPbixVdCksRD1EK01hdGgu'@; put 'aW11bChndCx4dCl8MCxwPShwPXArTWF0aC5pbXVsKGd0LEJ0KXwwKStNYXRoLmltdWwoWHQseHQpfDAsST1JK01hdGguaW11bChYdCxCdCl8MCxEPUQrTWF0aC5pbXVsKFJ0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQseW4pfDApK01hdGguaW11bChMdCxHbil8MCxJPUkrTWF0aC5pbXVs'@; put 'KEx0LHluKXwwLEQ9RCtNYXRoLmltdWwodHQscnIpfDAscD0ocD1wK01hdGguaW11bCh0dCxocil8MCkrTWF0aC5pbXVsKEtlLHJyKXwwLEk9SStNYXRoLmltdWwoS2UsaHIpfDA7dmFyICRpPShHKyhEPUQrTWF0aC5pbXVsKGhlLHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwo'@; put 'aGUsQm4pfDApK01hdGguaW11bCh3ZSx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bCh3ZSxCbil8MCkrKHA+Pj4xMyl8MCkrKCRpPj4+MjYpfDAsJGkmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHh0KSxwPShwPU1hdGguaW11bChsbixCdCkpK01hdGguaW11bChPbix4dCl8MCxJ'@; put 'PU1hdGguaW11bChPbixCdCksRD1EK01hdGguaW11bChndCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGd0LHluKXwwKStNYXRoLmltdWwoWHQsR24pfDAsST1JK01hdGguaW11bChYdCx5bil8MCxEPUQrTWF0aC5pbXVsKFJ0LHJyKXwwLHA9KHA9cCtNYXRoLmltdWwoUnQsaHIpfDApK01hdGgu'@; put 'aW11bChMdCxycil8MCxJPUkrTWF0aC5pbXVsKEx0LGhyKXwwO3ZhciBfcz0oRysoRD1EK01hdGguaW11bCh0dCx2bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHR0LEJuKXwwKStNYXRoLmltdWwoS2Usdm4pfDApKTw8MTMpfDA7Rz0oKEk9SStNYXRoLmltdWwoS2UsQm4pfDAp'@; put 'KyhwPj4+MTMpfDApKyhfcz4+PjI2KXwwLF9zJj02NzEwODg2MyxEPU1hdGguaW11bChsbixHbikscD0ocD1NYXRoLmltdWwobG4seW4pKStNYXRoLmltdWwoT24sR24pfDAsST1NYXRoLmltdWwoT24seW4pLEQ9RCtNYXRoLmltdWwoZ3QscnIpfDAscD0ocD1wK01hdGguaW11bChndCxocil8'@; put 'MCkrTWF0aC5pbXVsKFh0LHJyKXwwLEk9SStNYXRoLmltdWwoWHQsaHIpfDA7dmFyIGpzPShHKyhEPUQrTWF0aC5pbXVsKFJ0LHZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoUnQsQm4pfDApK01hdGguaW11bChMdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChM'@; put 'dCxCbil8MCkrKHA+Pj4xMyl8MCkrKGpzPj4+MjYpfDAsanMmPTY3MTA4ODYzLEQ9TWF0aC5pbXVsKGxuLHJyKSxwPShwPU1hdGguaW11bChsbixocikpK01hdGguaW11bChPbixycil8MCxJPU1hdGguaW11bChPbixocik7dmFyIENsPShHKyhEPUQrTWF0aC5pbXVsKGd0LHZuKXwwKXwwKSso'@; put 'KDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoZ3QsQm4pfDApK01hdGguaW11bChYdCx2bil8MCkpPDwxMyl8MDtHPSgoST1JK01hdGguaW11bChYdCxCbil8MCkrKHA+Pj4xMyl8MCkrKENsPj4+MjYpfDAsQ2wmPTY3MTA4ODYzO3ZhciBUaT0oRysoRD1NYXRoLmltdWwobG4sdm4pKXwwKSsoKDgx'@; put 'OTEmKHA9KHA9TWF0aC5pbXVsKGxuLEJuKSkrTWF0aC5pbXVsKE9uLHZuKXwwKSk8PDEzKXwwO3JldHVybiBHPSgoST1NYXRoLmltdWwoT24sQm4pKSsocD4+PjEzKXwwKSsoVGk+Pj4yNil8MCxUaSY9NjcxMDg4NjMsS1swXT1qYSxLWzFdPWpvLEtbMl09WHIsS1szXT1lYSxLWzRdPXJhLEtb'@; put 'NV09Y2EsS1s2XT1DaSxLWzddPWhvLEtbOF09TWEsS1s5XT1rcyxLWzEwXT1CaSxLWzExXT10YSxLWzEyXT1NcixLWzEzXT1GcyxLWzE0XT0kaSxLWzE1XT1fcyxLWzE2XT1qcyxLWzE3XT1DbCxLWzE4XT1UaSwwIT09RyYmKEtbMTldPUcsay5sZW5ndGgrKyksa307ZnVuY3Rpb24gWShYLGYs'@; put 'Yil7cmV0dXJuKG5ldyBGKS5tdWxwKFgsZixiKX1mdW5jdGlvbiBGKFgsZil7dGhpcy54PVgsdGhpcy55PWZ9TWF0aC5pbXVsfHwoTj1WKSx2LnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihmLGIpe3ZhciBrLE09dGhpcy5sZW5ndGgrZi5sZW5ndGg7cmV0dXJuIGs9MTA9PT10aGlzLmxlbmd0'@; put 'aCYmMTA9PT1mLmxlbmd0aD9OKHRoaXMsZixiKTpNPDYzP1YodGhpcyxmLGIpOk08MTAyND9mdW5jdGlvbiB6KFgsZixiKXtiLm5lZ2F0aXZlPWYubmVnYXRpdmVeWC5uZWdhdGl2ZSxiLmxlbmd0aD1YLmxlbmd0aCtmLmxlbmd0aDtmb3IodmFyIGs9MCxNPTAsQj0wO0I8Yi5sZW5ndGgtMTtC'@; put 'Kyspe3ZhciBLPU07TT0wO2Zvcih2YXIgRz02NzEwODg2MyZrLEQ9TWF0aC5taW4oQixmLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsQi1YLmxlbmd0aCsxKTtwPD1EO3ArKyl7dmFyIF9lPSgwfFgud29yZHNbQi1wXSkqKDB8Zi53b3Jkc1twXSksUGU9NjcxMDg4NjMmX2U7Rz02NzEwODg2MyYo'@; put 'UGU9UGUrR3wwKSxNKz0oSz0oSz1LKyhfZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixLJj02NzEwODg2M31iLndvcmRzW0JdPUcsaz1LLEs9TX1yZXR1cm4gMCE9PWs/Yi53b3Jkc1tCXT1rOmIubGVuZ3RoLS0sYi5zdHJpcCgpfSh0aGlzLGYsYik6WSh0aGlzLGYsYiksa30s'@; put 'Ri5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihmKXtmb3IodmFyIGI9bmV3IEFycmF5KGYpLGs9di5wcm90b3R5cGUuX2NvdW50Qml0cyhmKS0xLE09MDtNPGY7TSsrKWJbTV09dGhpcy5yZXZCaW4oTSxrLGYpO3JldHVybiBifSxGLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oZixiLGsp'@; put 'e2lmKDA9PT1mfHxmPT09ay0xKXJldHVybiBmO2Zvcih2YXIgTT0wLEI9MDtCPGI7QisrKU18PSgxJmYpPDxiLUItMSxmPj49MTtyZXR1cm4gTX0sRi5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihmLGIsayxNLEIsSyl7Zm9yKHZhciBHPTA7RzxLO0crKylNW0ddPWJbZltHXV0sQltHXT1r'@; put 'W2ZbR11dfSxGLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZixiLGssTSxCLEspe3RoaXMucGVybXV0ZShLLGYsYixrLE0sQik7Zm9yKHZhciBHPTE7RzxCO0c8PD0xKWZvcih2YXIgRD1HPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJL0QpLEk9TWF0aC5zaW4oMipNYXRoLlBJL0QpLHVl'@; put 'PTA7dWU8Qjt1ZSs9RClmb3IodmFyIG5lPXAsX2U9SSxQZT0wO1BlPEc7UGUrKyl7dmFyIG90PWtbdWUrUGVdLGx0PU1bdWUrUGVdLGR0PWtbdWUrUGUrR10sUmU9TVt1ZStQZStHXSxhZT1uZSpkdC1fZSpSZTtSZT1uZSpSZStfZSpkdCxrW3VlK1BlXT1vdCsoZHQ9YWUpLE1bdWUrUGVdPWx0'@; put 'K1JlLGtbdWUrUGUrR109b3QtZHQsTVt1ZStQZStHXT1sdC1SZSxQZSE9PUQmJihhZT1wKm5lLUkqX2UsX2U9cCpfZStJKm5lLG5lPWFlKX19LEYucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGYsYil7dmFyIGs9MXxNYXRoLm1heChiLGYpLE09MSZrLEI9MDtmb3Ioaz1rLzJ8MDtr'@; put 'O2s+Pj49MSlCKys7cmV0dXJuIDE8PEIrMStNfSxGLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oZixiLGspe2lmKCEoazw9MSkpZm9yKHZhciBNPTA7TTxrLzI7TSsrKXt2YXIgQj1mW01dO2ZbTV09ZltrLU0tMV0sZltrLU0tMV09QixCPWJbTV0sYltNXT0tYltrLU0tMV0sYltrLU0t'@; put 'MV09LUJ9fSxGLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oZixiKXtmb3IodmFyIGs9MCxNPTA7TTxiLzI7TSsrKXt2YXIgQj04MTkyKk1hdGgucm91bmQoZlsyKk0rMV0vYikrTWF0aC5yb3VuZChmWzIqTV0vYikraztmW01dPTY3MTA4ODYzJkIsaz1CPDY3MTA4ODY0PzA6Qi82'@; put 'NzEwODg2NHwwfXJldHVybiBmfSxGLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGYsYixrLE0pe2Zvcih2YXIgQj0wLEs9MDtLPGI7SysrKWtbMipLXT04MTkxJihCKz0wfGZbS10pLGtbMipLKzFdPTgxOTEmKEI+Pj49MTMpLEI+Pj49MTM7Zm9yKEs9MipiO0s8TTsrK0spa1tLXT0w'@; put 'O3MoMD09PUIpLHMoISgtODE5MiZCKSl9LEYucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZil7Zm9yKHZhciBiPW5ldyBBcnJheShmKSxrPTA7azxmO2srKyliW2tdPTA7cmV0dXJuIGJ9LEYucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oZixiLGspe3ZhciBNPTIqdGhpcy5ndWVzc0xlbjEzYihm'@; put 'Lmxlbmd0aCxiLmxlbmd0aCksQj10aGlzLm1ha2VSQlQoTSksSz10aGlzLnN0dWIoTSksRz1uZXcgQXJyYXkoTSksRD1uZXcgQXJyYXkoTSkscD1uZXcgQXJyYXkoTSksST1uZXcgQXJyYXkoTSksdWU9bmV3IEFycmF5KE0pLG5lPW5ldyBBcnJheShNKSxfZT1rLndvcmRzO19lLmxlbmd0aD1N'@; put 'LHRoaXMuY29udmVydDEzYihmLndvcmRzLGYubGVuZ3RoLEcsTSksdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsSSxNKSx0aGlzLnRyYW5zZm9ybShHLEssRCxwLE0sQiksdGhpcy50cmFuc2Zvcm0oSSxLLHVlLG5lLE0sQik7Zm9yKHZhciBQZT0wO1BlPE07UGUrKyl7dmFyIG90'@; put 'PURbUGVdKnVlW1BlXS1wW1BlXSpuZVtQZV07cFtQZV09RFtQZV0qbmVbUGVdK3BbUGVdKnVlW1BlXSxEW1BlXT1vdH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoRCxwLE0pLHRoaXMudHJhbnNmb3JtKEQscCxfZSxLLE0sQiksdGhpcy5jb25qdWdhdGUoX2UsSyxNKSx0aGlzLm5vcm1hbGl6ZTEz'@; put 'YihfZSxNKSxrLm5lZ2F0aXZlPWYubmVnYXRpdmVeYi5uZWdhdGl2ZSxrLmxlbmd0aD1mLmxlbmd0aCtiLmxlbmd0aCxrLnN0cmlwKCl9LHYucHJvdG90eXBlLm11bD1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4gYi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5s'@; put 'ZW5ndGgpLHRoaXMubXVsVG8oZixiKX0sdi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihmKXt2YXIgYj1uZXcgdihudWxsKTtyZXR1cm4gYi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZi5sZW5ndGgpLFkodGhpcyxmLGIpfSx2LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYpe3JldHVy'@; put 'biB0aGlzLmNsb25lKCkubXVsVG8oZix0aGlzKX0sdi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYpLHMoZjw2NzEwODg2NCk7Zm9yKHZhciBiPTAsaz0wO2s8dGhpcy5sZW5ndGg7aysrKXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSpmLEI9KDY3MTA4'@; put 'ODYzJk0pKyg2NzEwODg2MyZiKTtiPj49MjYsYis9TS82NzEwODg2NHwwLGIrPUI+Pj4yNix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJkJ9cmV0dXJuIDAhPT1iJiYodGhpcy53b3Jkc1trXT1iLHRoaXMubGVuZ3RoKyspLDA9PT1mJiYodGhpcy5sZW5ndGg9MSx0aGlzLl9ub3JtU2lnbigpKSx0'@; put 'aGlzfSx2LnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZil9LHYucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sdi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5j'@; put 'bG9uZSgpKX0sdi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGYpe3ZhciBiPWZ1bmN0aW9uIEgoWCl7Zm9yKHZhciBmPW5ldyBBcnJheShYLmJpdExlbmd0aCgpKSxiPTA7YjxmLmxlbmd0aDtiKyspe3ZhciBNPWIlMjY7ZltiXT0oWC53b3Jkc1tiLzI2fDBdJjE8PE0pPj4+TX1yZXR1cm4gZn0o'@; put 'Zik7aWYoMD09PWIubGVuZ3RoKXJldHVybiBuZXcgdigxKTtmb3IodmFyIGs9dGhpcyxNPTA7TTxiLmxlbmd0aCYmMD09PWJbTV07TSsrLGs9ay5zcXIoKSk7aWYoKytNPGIubGVuZ3RoKWZvcih2YXIgQj1rLnNxcigpO008Yi5sZW5ndGg7TSsrLEI9Qi5zcXIoKSkwIT09YltNXSYmKGs9ay5t'@; put 'dWwoQikpO3JldHVybiBrfSx2LnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZil7cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApO3ZhciBCLGI9ZiUyNixrPShmLWIpLzI2LE09NjcxMDg4NjM+Pj4yNi1iPDwyNi1iO2lmKDAhPT1iKXt2YXIgSz0wO2ZvcihCPTA7Qjx0aGlzLmxlbmd0aDtC'@; put 'Kyspe3ZhciBHPXRoaXMud29yZHNbQl0mTTt0aGlzLndvcmRzW0JdPSgwfHRoaXMud29yZHNbQl0pLUc8PGJ8SyxLPUc+Pj4yNi1ifUsmJih0aGlzLndvcmRzW0JdPUssdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWspe2ZvcihCPXRoaXMubGVuZ3RoLTE7Qj49MDtCLS0pdGhpcy53b3Jkc1tCK2td'@; put 'PXRoaXMud29yZHNbQl07Zm9yKEI9MDtCPGs7QisrKXRoaXMud29yZHNbQl09MDt0aGlzLmxlbmd0aCs9a31yZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihmKXtyZXR1cm4gcygwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oZil9LHYucHJvdG90'@; put 'eXBlLml1c2hybj1mdW5jdGlvbihmLGIsayl7dmFyIE07cygibnVtYmVyIj09dHlwZW9mIGYmJmY+PTApLE09Yj8oYi1iJTI2KS8yNjowO3ZhciBCPWYlMjYsSz1NYXRoLm1pbigoZi1CKS8yNix0aGlzLmxlbmd0aCksRz02NzEwODg2M142NzEwODg2Mz4+PkI8PEIsRD1rO2lmKE0tPUssTT1N'@; put 'YXRoLm1heCgwLE0pLEQpe2Zvcih2YXIgcD0wO3A8SztwKyspRC53b3Jkc1twXT10aGlzLndvcmRzW3BdO0QubGVuZ3RoPUt9aWYoMCE9PUspaWYodGhpcy5sZW5ndGg+Sylmb3IodGhpcy5sZW5ndGgtPUsscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1tw'@; put 'K0tdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEk9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09SXx8cD49TSk7cC0tKXt2YXIgdWU9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09STw8MjYtQnx1ZT4+PkIsST11ZSZHfXJldHVybiBEJiYwIT09'@; put 'SSYmKEQud29yZHNbRC5sZW5ndGgrK109SSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZixiLGspe3JldHVybiBzKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihm'@; put 'LGIsayl9LHYucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihmKX0sdi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZil9LHYucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRo'@; put 'aXMuY2xvbmUoKS5pc2hybihmKX0sdi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZil9LHYucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0'@; put 'dXJuISh0aGlzLmxlbmd0aDw9a3x8ISh0aGlzLndvcmRzW2tdJjE8PGIpKX0sdi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmJiZmPj0wKTt2YXIgYj1mJTI2LGs9KGYtYikvMjY7cmV0dXJuIHMoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3Jr'@; put 'cyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAhPT1iJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0aGlzLmxlbmd0aCksMCE9PWImJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PmI8PGIpLDA9PT10'@; put 'aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCkpfSx2LnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihmKX0sdi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oZil7cmV0dXJuIHMoIm51bWJl'@; put 'ciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MD90aGlzLmlzdWJuKC1mKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGY/KHRoaXMud29yZHNbMF09Zi0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMu'@; put 'bmVnYXRpdmU9MCx0aGlzLmlzdWJuKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihmKX0sdi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGYpe3RoaXMud29yZHNbMF0rPWY7Zm9yKHZhciBiPTA7Yjx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tiXT49NjcxMDg4NjQ7Yisr'@; put 'KXRoaXMud29yZHNbYl0tPTY3MTA4ODY0LGI9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbYisxXT0xOnRoaXMud29yZHNbYisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxiKzEpLHRoaXN9LHYucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGYpe2lmKHMo'@; put 'Im51bWJlciI9PXR5cGVvZiBmKSxzKGY8NjcxMDg4NjQpLGY8MClyZXR1cm4gdGhpcy5pYWRkbigtZik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGYpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWYsMT09PXRo'@; put 'aXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2JdPDA7YisrKXRoaXMud29yZHNbYl0rPTY3MTA4ODY0LHRoaXMud29yZHNbYisxXS09'@; put 'MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSx2LnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oZil9LHYucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihmKX0sdi5wcm90b3R5cGUuaWFicz1mdW5jdGlv'@; put 'bigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sdi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LHYucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihmLGIsayl7dmFyIEI7dGhpcy5fZXhwYW5kKGYubGVuZ3RoK2spO3ZhciBL'@; put 'LEc9MDtmb3IoQj0wO0I8Zi5sZW5ndGg7QisrKXtLPSgwfHRoaXMud29yZHNbQitrXSkrRzt2YXIgRD0oMHxmLndvcmRzW0JdKSpiO0c9KChLLT02NzEwODg2MyZEKT4+MjYpLShELzY3MTA4ODY0fDApLHRoaXMud29yZHNbQitrXT02NzEwODg2MyZLfWZvcig7Qjx0aGlzLmxlbmd0aC1rO0Ir'@; put 'KylHPShLPSgwfHRoaXMud29yZHNbQitrXSkrRyk+PjI2LHRoaXMud29yZHNbQitrXT02NzEwODg2MyZLO2lmKDA9PT1HKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKHMoLTE9PT1HKSxHPTAsQj0wO0I8dGhpcy5sZW5ndGg7QisrKUc9KEs9LSgwfHRoaXMud29yZHNbQl0pK0cpPj4yNix0aGlz'@; put 'LndvcmRzW0JdPTY3MTA4ODYzJks7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LHYucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGYsYil7dmFyIGssTT10aGlzLmNsb25lKCksQj1mLEs9MHxCLndvcmRzW0IubGVuZ3RoLTFdOzAhPShrPTI2LXRoaXMuX2NvdW50Qml0'@; put 'cyhLKSkmJihCPUIudXNobG4oayksTS5pdXNobG4oayksSz0wfEIud29yZHNbQi5sZW5ndGgtMV0pO3ZhciBwLEQ9TS5sZW5ndGgtQi5sZW5ndGg7aWYoIm1vZCIhPT1iKXsocD1uZXcgdihudWxsKSkubGVuZ3RoPUQrMSxwLndvcmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBJPTA7'@; put 'STxwLmxlbmd0aDtJKyspcC53b3Jkc1tJXT0wfXZhciB1ZT1NLmNsb25lKCkuX2lzaGxuc3VibXVsKEIsMSxEKTswPT09dWUubmVnYXRpdmUmJihNPXVlLHAmJihwLndvcmRzW0RdPTEpKTtmb3IodmFyIG5lPUQtMTtuZT49MDtuZS0tKXt2YXIgX2U9NjcxMDg4NjQqKDB8TS53b3Jkc1tCLmxl'@; put 'bmd0aCtuZV0pKygwfE0ud29yZHNbQi5sZW5ndGgrbmUtMV0pO2ZvcihfZT1NYXRoLm1pbihfZS9LfDAsNjcxMDg4NjMpLE0uX2lzaGxuc3VibXVsKEIsX2UsbmUpOzAhPT1NLm5lZ2F0aXZlOylfZS0tLE0ubmVnYXRpdmU9MCxNLl9pc2hsbnN1Ym11bChCLDEsbmUpLE0uaXNaZXJvKCl8fChN'@; put 'Lm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tuZV09X2UpfXJldHVybiBwJiZwLnN0cmlwKCksTS5zdHJpcCgpLCJkaXYiIT09YiYmMCE9PWsmJk0uaXVzaHJuKGspLHtkaXY6cHx8bnVsbCxtb2Q6TX19LHYucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihmLGIsayl7cmV0dXJuIHMoIWYuaXNa'@; put 'ZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgdigwKSxtb2Q6bmV3IHYoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZT8oSz10aGlzLm5lZygpLmRpdm1vZChmLGIpLCJtb2QiIT09YiYmKE09Sy5kaXYubmVnKCkpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYm'@; put 'MCE9PUIubmVnYXRpdmUmJkIuaWFkZChmKSkse2RpdjpNLG1vZDpCfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1mLm5lZ2F0aXZlPyhLPXRoaXMuZGl2bW9kKGYubmVnKCksYiksIm1vZCIhPT1iJiYoTT1LLmRpdi5uZWcoKSkse2RpdjpNLG1vZDpLLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2'@; put 'ZSZmLm5lZ2F0aXZlKT8oSz10aGlzLm5lZygpLmRpdm1vZChmLm5lZygpLGIpLCJkaXYiIT09YiYmKEI9Sy5tb2QubmVnKCksayYmMCE9PUIubmVnYXRpdmUmJkIuaXN1YihmKSkse2RpdjpLLmRpdixtb2Q6Qn0pOmYubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChmKTwwP3tkaXY6bmV3'@; put 'IHYoMCksbW9kOnRoaXN9OjE9PT1mLmxlbmd0aD8iZGl2Ij09PWI/e2Rpdjp0aGlzLmRpdm4oZi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09Yj97ZGl2Om51bGwsbW9kOm5ldyB2KHRoaXMubW9kbihmLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGYud29yZHNbMF0pLG1vZDpuZXcg'@; put 'dih0aGlzLm1vZG4oZi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGYsYik7dmFyIE0sQixLfSx2LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsImRpdiIsITEpLmRpdn0sdi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmRpdm1v'@; put 'ZChmLCJtb2QiLCExKS5tb2R9LHYucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuZGl2bW9kKGYsIm1vZCIsITApLm1vZH0sdi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oZil7dmFyIGI9dGhpcy5kaXZtb2QoZik7aWYoYi5tb2QuaXNaZXJvKCkpcmV0dXJuIGIu'@; put 'ZGl2O3ZhciBrPWIubW9kLmFicygpLE09Zi5hYnMoKS5pdXNocm4oMSksQj0xJmYud29yZHNbMF0sSz1rLmNtcChNKTtpZihLPDB8fDE9PT1CJiYwPT09SylyZXR1cm4gYi5kaXY7dmFyIEc9bmV3IHYoMSk7cmV0dXJuIEcubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZV5mLm5lZ2F0aXZlLGIuZGl2'@; put 'LmlhZGQoRyl9LHYucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPSgxPDwyNiklZixrPTAsTT10aGlzLmxlbmd0aC0xO00+PTA7TS0tKWs9KGIqaysoMHx0aGlzLndvcmRzW01dKSklZjtyZXR1cm4ga30sdi5wcm90b3R5cGUuaWRpdm49ZnVuY3Rp'@; put 'b24oZil7cyhmPD02NzEwODg2Myk7Zm9yKHZhciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0oMHx0aGlzLndvcmRzW2tdKSs2NzEwODg2NCpiO3RoaXMud29yZHNba109TS9mfDAsYj1NJWZ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sdi5wcm90b3R5cGUuZGl2bj1mdW5jdGlv'@; put 'bihmKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGYpfSx2LnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUpLHMoIWYuaXNaZXJvKCkpO3ZhciBiPXRoaXMsaz1mLmNsb25lKCk7Yj0wIT09Yi5uZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIg'@; put 'TT1uZXcgdigxKSxCPW5ldyB2KDApLEs9bmV3IHYoMCksRz1uZXcgdigxKSxEPTA7Yi5pc0V2ZW4oKSYmay5pc0V2ZW4oKTspYi5pdXNocm4oMSksay5pdXNocm4oMSksKytEO2Zvcih2YXIgcD1rLmNsb25lKCksST1iLmNsb25lKCk7IWIuaXNaZXJvKCk7KXtmb3IodmFyIHVlPTAsbmU9MTsw'@; put 'PT09KGIud29yZHNbMF0mbmUpJiZ1ZTwyNjsrK3VlLG5lPDw9MSk7aWYodWU+MClmb3IoYi5pdXNocm4odWUpO3VlLS0gPjA7KShNLmlzT2RkKCl8fEIuaXNPZGQoKSkmJihNLmlhZGQocCksQi5pc3ViKEkpKSxNLml1c2hybigxKSxCLml1c2hybigxKTtmb3IodmFyIF9lPTAsUGU9MTswPT09'@; put 'KGsud29yZHNbMF0mUGUpJiZfZTwyNjsrK19lLFBlPDw9MSk7aWYoX2U+MClmb3Ioay5pdXNocm4oX2UpO19lLS0gPjA7KShLLmlzT2RkKCl8fEcuaXNPZGQoKSkmJihLLmlhZGQocCksRy5pc3ViKEkpKSxLLml1c2hybigxKSxHLml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0u'@; put 'aXN1YihLKSxCLmlzdWIoRykpOihrLmlzdWIoYiksSy5pc3ViKE0pLEcuaXN1YihCKSl9cmV0dXJue2E6SyxiOkcsZ2NkOmsuaXVzaGxuKEQpfX0sdi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGYpe3MoMD09PWYubmVnYXRpdmUpLHMoIWYuaXNaZXJvKCkpO3ZhciB1ZSxiPXRoaXMsaz1m'@; put 'LmNsb25lKCk7Yj0wIT09Yi5uZWdhdGl2ZT9iLnVtb2QoZik6Yi5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgdigxKSxCPW5ldyB2KDApLEs9ay5jbG9uZSgpO2IuY21wbigxKT4wJiZrLmNtcG4oMSk+MDspe2Zvcih2YXIgRz0wLEQ9MTswPT09KGIud29yZHNbMF0mRCkmJkc8MjY7KytHLEQ8PD0x'@; put 'KTtpZihHPjApZm9yKGIuaXVzaHJuKEcpO0ctLSA+MDspTS5pc09kZCgpJiZNLmlhZGQoSyksTS5pdXNocm4oMSk7Zm9yKHZhciBwPTAsST0xOzA9PT0oay53b3Jkc1swXSZJKSYmcDwyNjsrK3AsSTw8PTEpO2lmKHA+MClmb3Ioay5pdXNocm4ocCk7cC0tID4wOylCLmlzT2RkKCkmJkIuaWFk'@; put 'ZChLKSxCLml1c2hybigxKTtiLmNtcChrKT49MD8oYi5pc3ViKGspLE0uaXN1YihCKSk6KGsuaXN1YihiKSxCLmlzdWIoTSkpfXJldHVybih1ZT0wPT09Yi5jbXBuKDEpP006QikuY21wbigwKTwwJiZ1ZS5pYWRkKGYpLHVlfSx2LnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZil7aWYodGhpcy5p'@; put 'c1plcm8oKSlyZXR1cm4gZi5hYnMoKTtpZihmLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBiPXRoaXMuY2xvbmUoKSxrPWYuY2xvbmUoKTtiLm5lZ2F0aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgTT0wO2IuaXNFdmVuKCkmJmsuaXNFdmVuKCk7TSsrKWIuaXVzaHJuKDEpLGsu'@; put 'aXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtiLmlzRXZlbigpOyliLml1c2hybigxKTtmb3IoO2suaXNFdmVuKCk7KWsuaXVzaHJuKDEpO3ZhciBCPWIuY21wKGspO2lmKEI8MCl7dmFyIEs9YjtiPWssaz1LfWVsc2UgaWYoMD09PUJ8fDA9PT1rLmNtcG4oMSkpYnJlYWs7Yi5pc3ViKGspfXJldHVy'@; put 'biBrLml1c2hsbihNKX0sdi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5lZ2NkKGYpLmEudW1vZChmKX0sdi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSx2LnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVy'@; put 'biEoMSZ+dGhpcy53b3Jkc1swXSl9LHYucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLndvcmRzWzBdJmZ9LHYucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGYpe3MoIm51bWJlciI9PXR5cGVvZiBmKTt2YXIgYj1mJTI2LGs9KGYtYikvMjYsTT0xPDxiO2lmKHRoaXMu'@; put 'bGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1NLHRoaXM7Zm9yKHZhciBCPU0sSz1rOzAhPT1CJiZLPHRoaXMubGVuZ3RoO0srKyl7dmFyIEc9MHx0aGlzLndvcmRzW0tdO0I9KEcrPUIpPj4+MjYsdGhpcy53b3Jkc1tLXT1HJj02NzEwODg2M31yZXR1'@; put 'cm4gMCE9PUImJih0aGlzLndvcmRzW0tdPUIsdGhpcy5sZW5ndGgrKyksdGhpc30sdi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LHYucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oZil7dmFyIGssYj1mPDA7aWYo'@; put 'MCE9PXRoaXMubmVnYXRpdmUmJiFiKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZiKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKWs9MTtlbHNle2ImJihmPS1mKSxzKGY8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBNPTB8dGhpcy53b3Jk'@; put 'c1swXTtrPU09PT1mPzA6TTxmPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LWs6a30sdi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGYpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zi5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWYubmVnYXRp'@; put 'dmUpcmV0dXJuIDE7dmFyIGI9dGhpcy51Y21wKGYpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1iOmJ9LHYucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZil7aWYodGhpcy5sZW5ndGg+Zi5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Zi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZh'@; put 'ciBiPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgTT0wfHRoaXMud29yZHNba10sQj0wfGYud29yZHNba107aWYoTSE9PUIpe008Qj9iPS0xOk0+QiYmKGI9MSk7YnJlYWt9fXJldHVybiBifSx2LnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oZil7cmV0dXJuIDE9PT10aGlzLmNtcG4o'@; put 'Zil9LHYucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGYpe3JldHVybiAxPT09dGhpcy5jbXAoZil9LHYucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuY21wbihmKT49MH0sdi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNtcChmKT49MH0sdi5wcm90'@; put 'b3R5cGUubHRuPWZ1bmN0aW9uKGYpe3JldHVybi0xPT09dGhpcy5jbXBuKGYpfSx2LnByb3RvdHlwZS5sdD1mdW5jdGlvbihmKXtyZXR1cm4tMT09PXRoaXMuY21wKGYpfSx2LnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmNtcG4oZik8PTB9LHYucHJvdG90eXBlLmx0'@; put 'ZT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5jbXAoZik8PTB9LHYucHJvdG90eXBlLmVxbj1mdW5jdGlvbihmKXtyZXR1cm4gMD09PXRoaXMuY21wbihmKX0sdi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZil7cmV0dXJuIDA9PT10aGlzLmNtcChmKX0sdi5yZWQ9ZnVuY3Rpb24oZil7cmV0dXJu'@; put 'IG5ldyBrZShmKX0sdi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IikscygwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxmLmNvbnZlcnRU'@; put 'byh0aGlzKS5fZm9yY2VSZWQoZil9LHYucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSx2LnByb3RvdHlw'@; put 'ZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucmVkPWYsdGhpc30sdi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoZil9LHYucHJv'@; put 'dG90eXBlLnJlZEFkZD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRJQWRkIHdv'@; put 'cmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsZil9LHYucHJv'@; put 'dG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGYpfSx2LnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oZil7cmV0dXJuIHModGhpcy5yZWQsInJlZFNobCB3'@; put 'b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGYpe3JldHVybiBzKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxmKSx0'@; put 'aGlzLnJlZC5tdWwodGhpcyxmKX0sdi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZiksdGhpcy5yZWQuaW11bCh0aGlzLGYpfSx2LnByb3Rv'@; put 'dHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sdi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBzKHRo'@; put 'aXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LHYucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcyh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGgg'@; put 'cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSx2LnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEo'@; put 'dGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sdi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LHYucHJvdG90'@; put 'eXBlLnJlZFBvdz1mdW5jdGlvbihmKXtyZXR1cm4gcyh0aGlzLnJlZCYmIWYucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGYpfTt2YXIgVz17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9'@; put 'O2Z1bmN0aW9uIHEoWCxmKXt0aGlzLm5hbWU9WCx0aGlzLnA9bmV3IHYoZiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IHYoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIHJlKCl7cS5jYWxsKHRoaXMs'@; put 'ImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIG1lKCl7cS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAw'@; put 'MDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIENlKCl7cS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEllKCl7cS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZm'@; put 'ZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGtlKFgpe2lmKCJzdHJpbmciPT10eXBlb2YgWCl7dmFyIGY9di5fcHJpbWUoWCk7dGhpcy5tPWYucCx0aGlzLnByaW1lPWZ9ZWxzZSBzKFguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRl'@; put 'ciB0aGFuIDEiKSx0aGlzLm09WCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gcWUoWCl7a2UuY2FsbCh0aGlzLFgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IHYoMSkuaXVz'@; put 'aGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIp'@; put 'LHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9cS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBmPW5ldyB2KG51bGwpO3JldHVybiBmLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZn0scS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihmKXt2YXIg'@; put 'ayxiPWY7ZG97dGhpcy5zcGxpdChiLHRoaXMudG1wKSxrPShiPShiPXRoaXMuaW11bEsoYikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShrPnRoaXMubik7dmFyIE09azx0aGlzLm4/LTE6Yi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1NPyhiLndvcmRzWzBdPTAsYi5sZW5n'@; put 'dGg9MSk6TT4wP2IuaXN1Yih0aGlzLnApOnZvaWQgMCE9PWIuc3RyaXA/Yi5zdHJpcCgpOmIuX3N0cmlwKCksYn0scS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZixiKXtmLml1c2hybih0aGlzLm4sMCxiKX0scS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaW11bCh0'@; put 'aGlzLmspfSxBKHJlLHEpLHJlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihmLGIpe2Zvcih2YXIgaz00MTk0MzAzLE09TWF0aC5taW4oZi5sZW5ndGgsOSksQj0wO0I8TTtCKyspYi53b3Jkc1tCXT1mLndvcmRzW0JdO2lmKGIubGVuZ3RoPU0sZi5sZW5ndGg8PTkpcmV0dXJuIGYud29yZHNb'@; put 'MF09MCx2b2lkKGYubGVuZ3RoPTEpO3ZhciBLPWYud29yZHNbOV07Zm9yKGIud29yZHNbYi5sZW5ndGgrK109SyZrLEI9MTA7QjxmLmxlbmd0aDtCKyspe3ZhciBHPTB8Zi53b3Jkc1tCXTtmLndvcmRzW0ItMTBdPShHJmspPDw0fEs+Pj4yMixLPUd9Zi53b3Jkc1tCLTEwXT1LPj4+PTIyLGYu'@; put 'bGVuZ3RoLT0wPT09SyYmZi5sZW5ndGg+MTA/MTA6OX0scmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Yud29yZHNbZi5sZW5ndGhdPTAsZi53b3Jkc1tmLmxlbmd0aCsxXT0wLGYubGVuZ3RoKz0yO2Zvcih2YXIgYj0wLGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MHxmLndvcmRz'@; put 'W2tdO2Yud29yZHNba109NjcxMDg4NjMmKGIrPTk3NypNKSxiPTY0Kk0rKGIvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1mLndvcmRzW2YubGVuZ3RoLTFdJiYoZi5sZW5ndGgtLSwwPT09Zi53b3Jkc1tmLmxlbmd0aC0xXSYmZi5sZW5ndGgtLSksZn0sQShtZSxxKSxBKENlLHEpLEEoSWUscSks'@; put 'SWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGYpe2Zvcih2YXIgYj0wLGs9MDtrPGYubGVuZ3RoO2srKyl7dmFyIE09MTkqKDB8Zi53b3Jkc1trXSkrYixCPTY3MTA4ODYzJk07TT4+Pj0yNixmLndvcmRzW2tdPUIsYj1NfXJldHVybiAwIT09YiYmKGYud29yZHNbZi5sZW5ndGgrK109Yiks'@; put 'Zn0sdi5fcHJpbWU9ZnVuY3Rpb24oZil7aWYoV1tmXSlyZXR1cm4gV1tmXTt2YXIgYjtpZigiazI1NiI9PT1mKWI9bmV3IHJlO2Vsc2UgaWYoInAyMjQiPT09ZiliPW5ldyBtZTtlbHNlIGlmKCJwMTkyIj09PWYpYj1uZXcgQ2U7ZWxzZXtpZigicDI1NTE5IiE9PWYpdGhyb3cgbmV3IEVycm9y'@; put 'KCJVbmtub3duIHByaW1lICIrZik7Yj1uZXcgSWV9cmV0dXJuIFdbZl09YixifSxrZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZil7cygwPT09Zi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxzKGYucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBu'@; put 'dW1iZXJzIil9LGtlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihmLGIpe3MoMD09PShmLm5lZ2F0aXZlfGIubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHMoZi5yZWQmJmYucmVkPT09Yi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi'@; put 'KX0sa2UucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGYpLl9mb3JjZVJlZCh0aGlzKTpmLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZil7cmV0dXJuIGYuaXNaZXJv'@; put 'KCk/Zi5jbG9uZSgpOnRoaXMubS5zdWIoZikuX2ZvcmNlUmVkKHRoaXMpfSxrZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlz'@; put 'KX0sa2UucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZixiKXt0aGlzLl92ZXJpZnkyKGYsYik7dmFyIGs9Zi5pYWRkKGIpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrfSxrZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3Zh'@; put 'ciBrPWYuc3ViKGIpO3JldHVybiBrLmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LGtlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGYsYil7dGhpcy5fdmVyaWZ5MihmLGIpO3ZhciBrPWYuaXN1YihiKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlz'@; put 'Lm0pLGt9LGtlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZixiKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShmKSx0aGlzLmltb2QoZi51c2hsbihiKSl9LGtlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGYsYil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZixiKSx0aGlzLmltb2QoZi5pbXVsKGIpKX0s'@; put 'a2UucHJvdG90eXBlLm11bD1mdW5jdGlvbihmLGIpe3JldHVybiB0aGlzLl92ZXJpZnkyKGYsYiksdGhpcy5pbW9kKGYubXVsKGIpKX0sa2UucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW11bChmLGYuY2xvbmUoKSl9LGtlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24o'@; put 'Zil7cmV0dXJuIHRoaXMubXVsKGYsZil9LGtlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGYpe2lmKGYuaXNaZXJvKCkpcmV0dXJuIGYuY2xvbmUoKTt2YXIgYj10aGlzLm0uYW5kbG4oMyk7aWYocyhiJTI9PTEpLDM9PT1iKXt2YXIgaz10aGlzLm0uYWRkKG5ldyB2KDEpKS5pdXNocm4oMik7'@; put 'cmV0dXJuIHRoaXMucG93KGYsayl9Zm9yKHZhciBNPXRoaXMubS5zdWJuKDEpLEI9MDshTS5pc1plcm8oKSYmMD09PU0uYW5kbG4oMSk7KUIrKyxNLml1c2hybigxKTtzKCFNLmlzWmVybygpKTt2YXIgSz1uZXcgdigxKS50b1JlZCh0aGlzKSxHPUsucmVkTmVnKCksRD10aGlzLm0uc3Vibigx'@; put 'KS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IHYoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLEQpLmNtcChHKTspcC5yZWRJQWRkKEcpO2Zvcih2YXIgST10aGlzLnBvdyhwLE0pLHVlPXRoaXMucG93KGYsTS5hZGRuKDEpLml1c2hybigxKSksbmU9'@; put 'dGhpcy5wb3coZixNKSxfZT1COzAhPT1uZS5jbXAoSyk7KXtmb3IodmFyIFBlPW5lLG90PTA7MCE9PVBlLmNtcChLKTtvdCsrKVBlPVBlLnJlZFNxcigpO3Mob3Q8X2UpO3ZhciBsdD10aGlzLnBvdyhJLG5ldyB2KDEpLml1c2hsbihfZS1vdC0xKSk7dWU9dWUucmVkTXVsKGx0KSxJPWx0LnJl'@; put 'ZFNxcigpLG5lPW5lLnJlZE11bChJKSxfZT1vdH1yZXR1cm4gdWV9LGtlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGYpe3ZhciBiPWYuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1iLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKGIpLnJlZE5lZygpKTp0aGlzLmltb2QoYil9'@; put 'LGtlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZixiKXtpZihiLmlzWmVybygpKXJldHVybiBuZXcgdigxKS50b1JlZCh0aGlzKTtpZigwPT09Yi5jbXBuKDEpKXJldHVybiBmLmNsb25lKCk7dmFyIE09bmV3IEFycmF5KDE2KTtNWzBdPW5ldyB2KDEpLnRvUmVkKHRoaXMpLE1bMV09Zjtmb3Io'@; put 'dmFyIEI9MjtCPE0ubGVuZ3RoO0IrKylNW0JdPXRoaXMubXVsKE1bQi0xXSxmKTt2YXIgSz1NWzBdLEc9MCxEPTAscD1iLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09cCYmKHA9MjYpLEI9Yi5sZW5ndGgtMTtCPj0wO0ItLSl7Zm9yKHZhciBJPWIud29yZHNbQl0sdWU9cC0xO3VlPj0wO3VlLS0p'@; put 'e3ZhciBuZT1JPj51ZSYxO0shPT1NWzBdJiYoSz10aGlzLnNxcihLKSksMCE9PW5lfHwwIT09Rz8oRzw8PTEsR3w9bmUsKDQ9PT0rK0R8fDA9PT1CJiYwPT09dWUpJiYoSz10aGlzLm11bChLLE1bR10pLEQ9MCxHPTApKTpEPTB9cD0yNn1yZXR1cm4gS30sa2UucHJvdG90eXBlLmNvbnZlcnRU'@; put 'bz1mdW5jdGlvbihmKXt2YXIgYj1mLnVtb2QodGhpcy5tKTtyZXR1cm4gYj09PWY/Yi5jbG9uZSgpOmJ9LGtlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihmKXt2YXIgYj1mLmNsb25lKCk7cmV0dXJuIGIucmVkPW51bGwsYn0sdi5tb250PWZ1bmN0aW9uKGYpe3JldHVybiBuZXcg'@; put 'cWUoZil9LEEocWUsa2UpLHFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaW1vZChmLnVzaGxuKHRoaXMuc2hpZnQpKX0scWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMuaW1vZChmLm11bCh0aGlzLnJpbnYpKTtyZXR1'@; put 'cm4gYi5yZWQ9bnVsbCxifSxxZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihmLGIpe2lmKGYuaXNaZXJvKCl8fGIuaXNaZXJvKCkpcmV0dXJuIGYud29yZHNbMF09MCxmLmxlbmd0aD0xLGY7dmFyIGs9Zi5pbXVsKGIpLE09ay5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFz'@; put 'a24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksQj1rLmlzdWIoTSkuaXVzaHJuKHRoaXMuc2hpZnQpLEs9QjtyZXR1cm4gQi5jbXAodGhpcy5tKT49MD9LPUIuaXN1Yih0aGlzLm0pOkIuY21wbigwKTwwJiYoSz1CLmlhZGQodGhpcy5tKSksSy5fZm9yY2VSZWQodGhpcyl9LHFlLnByb3RvdHlw'@; put 'ZS5tdWw9ZnVuY3Rpb24oZixiKXtpZihmLmlzWmVybygpfHxiLmlzWmVybygpKXJldHVybiBuZXcgdigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGs9Zi5tdWwoYiksTT1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxCPWsu'@; put 'aXN1YihNKS5pdXNocm4odGhpcy5zaGlmdCksSz1CO3JldHVybiBCLmNtcCh0aGlzLm0pPj0wP0s9Qi5pc3ViKHRoaXMubSk6Qi5jbXBuKDApPDAmJihLPUIuaWFkZCh0aGlzLm0pKSxLLl9mb3JjZVJlZCh0aGlzKX0scWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMu'@; put 'aW1vZChmLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oZmU9aC5ubWQoZmUpLHRoaXMpfSw3NzM2MihmZSxqLGgpe3ZhciB5PWgoNzgxNzApLGM9aCg0ODIwNikscz1oKDUyMDYxKSxBPWgoODI1MDkpLHY9aCg2NzMzMiksQz1oKDQ3MTA4KSx3PWgoOTky'@; put 'NDcpLFM9aCg5Mjg2MSkuQnVmZmVyO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oSCxWLE4pe3ZhciB6O3o9SC5wYWRkaW5nP0gucGFkZGluZzpOPzE6NDt2YXIgVyxZPXkoSCksRj1ZLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKFYubGVuZ3RoPkZ8fG5ldyBBKFYpLmNtcChZLm1vZHVsdXMpPj0wKXRo'@; put 'cm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO1c9Tj93KG5ldyBBKFYpLFkpOnYoVixZKTt2YXIgcT1TLmFsbG9jKEYtVy5sZW5ndGgpO2lmKFc9Uy5jb25jYXQoW3EsV10sRiksND09PXopcmV0dXJuIGZ1bmN0aW9uIEwoVSxIKXt2YXIgVj1VLm1vZHVsdXMuYnl0ZUxlbmd0aCgp'@; put 'LE49Qygic2hhMSIpLnVwZGF0ZShTLmFsbG9jKDApKS5kaWdlc3QoKSx6PU4ubGVuZ3RoO2lmKDAhPT1IWzBdKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3ZhciBZPUguc2xpY2UoMSx6KzEpLEY9SC5zbGljZSh6KzEpLFc9cyhZLGMoRix6KSkscT1zKEYsYyhXLFYtei0x'@; put 'KSk7aWYoZnVuY3Rpb24geChVLEgpe1U9Uy5mcm9tKFUpLEg9Uy5mcm9tKEgpO3ZhciBWPTAsTj1VLmxlbmd0aDtVLmxlbmd0aCE9PUgubGVuZ3RoJiYoVisrLE49TWF0aC5taW4oVS5sZW5ndGgsSC5sZW5ndGgpKTtmb3IodmFyIHo9LTE7Kyt6PE47KVYrPVVbel1eSFt6XTtyZXR1cm4gVn0o'@; put 'TixxLnNsaWNlKDAseikpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgcmU9ejswPT09cVtyZV07KXJlKys7aWYoMSE9PXFbcmUrK10pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7cmV0dXJuIHEuc2xpY2UocmUpfShZLFcpO2lmKDE9PT16'@; put 'KXJldHVybiBmdW5jdGlvbiBSKFUsSCxWKXtmb3IodmFyIE49SC5zbGljZSgwLDIpLHo9MixZPTA7MCE9PUhbeisrXTspaWYoej49SC5sZW5ndGgpe1krKzticmVha312YXIgRj1ILnNsaWNlKDIsei0xKTtpZigoIjAwMDIiIT09Ti50b1N0cmluZygiaGV4IikmJiFWfHwiMDAwMSIhPT1OLnRv'@; put 'U3RyaW5nKCJoZXgiKSYmVikmJlkrKyxGLmxlbmd0aDw4JiZZKyssWSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4gSC5zbGljZSh6KX0oMCxXLE4pO2lmKDM9PT16KXJldHVybiBXO3Rocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5nIil9fSwyODkwMihm'@; put 'ZSxqLGgpe3ZhciB5PWgoNzgxNzApLGM9aCg1MzIwOSkscz1oKDQ3MTA4KSxBPWgoNDgyMDYpLHY9aCg1MjA2MSksQz1oKDgyNTA5KSx3PWgoOTkyNDcpLFM9aCg2NzMzMiksTD1oKDkyODYxKS5CdWZmZXI7ZmUuZXhwb3J0cz1mdW5jdGlvbihWLE4seil7dmFyIFk7WT1WLnBhZGRpbmc/Vi5w'@; put 'YWRkaW5nOno/MTo0O3ZhciBXLEY9eShWKTtpZig0PT09WSlXPWZ1bmN0aW9uIFIoSCxWKXt2YXIgTj1ILm1vZHVsdXMuYnl0ZUxlbmd0aCgpLHo9Vi5sZW5ndGgsWT1zKCJzaGExIikudXBkYXRlKEwuYWxsb2MoMCkpLmRpZ2VzdCgpLEY9WS5sZW5ndGgsVz0yKkY7aWYoej5OLVctMil0aHJv'@; put 'dyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTt2YXIgcT1MLmFsbG9jKE4tei1XLTIpLHJlPU4tRi0xLG1lPWMoRiksQ2U9dihMLmNvbmNhdChbWSxxLEwuYWxsb2MoMSwxKSxWXSxyZSksQShtZSxyZSkpLEllPXYobWUsQShDZSxGKSk7cmV0dXJuIG5ldyBDKEwuY29uY2F0KFtMLmFs'@; put 'bG9jKDEpLEllLENlXSxOKSl9KEYsTik7ZWxzZSBpZigxPT09WSlXPWZ1bmN0aW9uIHgoSCxWLE4pe3ZhciBGLHo9Vi5sZW5ndGgsWT1ILm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKHo+WS0xMSl0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTtyZXR1cm4gRj1OP0wuYWxsb2Mo'@; put 'WS16LTMsMjU1KTpmdW5jdGlvbiBVKEgpe2Zvcih2YXIgRixWPUwuYWxsb2NVbnNhZmUoSCksTj0wLHo9YygyKkgpLFk9MDtOPEg7KVk9PT16Lmxlbmd0aCYmKHo9YygyKkgpLFk9MCksKEY9eltZKytdKSYmKFZbTisrXT1GKTtyZXR1cm4gVn0oWS16LTMpLG5ldyBDKEwuY29uY2F0KFtMLmZy'@; put 'b20oWzAsTj8xOjJdKSxGLEwuYWxsb2MoMSksVl0sWSkpfShGLE4seik7ZWxzZXtpZigzIT09WSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpO2lmKChXPW5ldyBDKE4pKS5jbXAoRi5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRhdGEgdG9vIGxvbmcgZm9yIG1vZHVs'@; put 'dXMiKX1yZXR1cm4gej9TKFcsRik6dyhXLEYpfX0sOTkyNDcoZmUsaixoKXt2YXIgeT1oKDgyNTA5KSxjPWgoOTI4NjEpLkJ1ZmZlcjtmZS5leHBvcnRzPWZ1bmN0aW9uIHMoQSx2KXtyZXR1cm4gYy5mcm9tKEEudG9SZWQoeS5tb250KHYubW9kdWx1cykpLnJlZFBvdyhuZXcgeSh2LnB1Ymxp'@; put 'Y0V4cG9uZW50KSkuZnJvbVJlZCgpLnRvQXJyYXkoKSl9fSw1MjA2MShmZSl7ZmUuZXhwb3J0cz1mdW5jdGlvbihoLHkpe2Zvcih2YXIgYz1oLmxlbmd0aCxzPS0xOysrczxjOyloW3NdXj15W3NdO3JldHVybiBofX0sNzM5OTIoZmUsail7InVzZSBzdHJpY3QiO3ZhciBoPU9iamVjdC5wcm90'@; put 'b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYyhDKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChDLnJlcGxhY2UoL1wrL2csIiAiKSl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHMoQyl7dHJ5e3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQyl9Y2F0Y2h7cmV0dXJu'@; put 'IG51bGx9fWouc3RyaW5naWZ5PWZ1bmN0aW9uIHYoQyx3KXt3PXd8fCIiO3ZhciBMLFIsUz1bXTtmb3IoUiBpbiJzdHJpbmciIT10eXBlb2YgdyYmKHc9Ij8iKSxDKWlmKGguY2FsbChDLFIpKXtpZighKEw9Q1tSXSkmJihudWxsPT1MfHxpc05hTihMKSkmJihMPSIiKSxSPXMoUiksTD1zKEwp'@; put 'LG51bGw9PT1SfHxudWxsPT09TCljb250aW51ZTtTLnB1c2goUisiPSIrTCl9cmV0dXJuIFMubGVuZ3RoP3crUy5qb2luKCImIik6IiJ9LGoucGFyc2U9ZnVuY3Rpb24gQShDKXtmb3IodmFyIEwsdz0vKFtePT8jJl0rKT0/KFteJl0qKS9nLFM9e307TD13LmV4ZWMoQyk7KXt2YXIgUj1jKExb'@; put 'MV0pLHg9YyhMWzJdKTtudWxsPT09Unx8bnVsbD09PXh8fFIgaW4gU3x8KFNbUl09eCl9cmV0dXJuIFN9fSw1MzIwOShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPTY1NTM2LHY9aCg5Mjg2MSkuQnVmZmVyLEM9aC5nLmNyeXB0b3x8aC5nLm1zQ3J5cHRvO2ZlLmV4cG9y'@; put 'dHM9QyYmQy5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24gdyhTLEwpe2lmKFM+NDI5NDk2NzI5NSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBSPXYuYWxsb2NVbnNhZmUoUyk7aWYoUz4wKWlmKFM+Yylmb3IodmFyIHg9MDt4PFM7'@; put 'eCs9YylDLmdldFJhbmRvbVZhbHVlcyhSLnNsaWNlKHgseCtjKSk7ZWxzZSBDLmdldFJhbmRvbVZhbHVlcyhSKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgTD95Lm5leHRUaWNrKGZ1bmN0aW9uKCl7TChudWxsLFIpfSk6Un06ZnVuY3Rpb24gQSgpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJl'@; put 'IHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19LDc2OTgzKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYpO2Z1bmN0aW9uIGMoKXt0'@; put 'aHJvdyBuZXcgRXJyb3IoInNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcbnVzZSBjaHJvbWUsIEZpcmVGb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX12YXIgcz1oKDkyODYxKSxBPWgoNTMyMDkpLHY9cy5CdWZmZXIsQz1z'@; put 'LmtNYXhMZW5ndGgsdz1oLmcuY3J5cHRvfHxoLmcubXNDcnlwdG8sUz1NYXRoLnBvdygyLDMyKS0xO2Z1bmN0aW9uIEwoVixOKXtpZigibnVtYmVyIiE9dHlwZW9mIFZ8fFYhPVYpdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSBudW1iZXIiKTtpZihWPlN8fFY8MCl0aHJv'@; put 'dyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKFY+Q3x8Vj5OKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUihWLE4seil7aWYoIm51bWJlciIhPXR5cGVvZiBWfHxWIT1WKXRocm93IG5ldyBUeXBlRXJyb3Io'@; put 'InNpemUgbXVzdCBiZSBhIG51bWJlciIpO2lmKFY+U3x8VjwwKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKFYrTj56fHxWPkMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImJ1ZmZlciB0b28gc21hbGwiKX1mdW5jdGlvbiBVKFYsTix6LFkpe2lmKHkuYnJv'@; put 'd3Nlcil7dmFyIFc9bmV3IFVpbnQ4QXJyYXkoVi5idWZmZXIsTix6KTtyZXR1cm4gdy5nZXRSYW5kb21WYWx1ZXMoVyksWT92b2lkIHkubmV4dFRpY2soZnVuY3Rpb24oKXtZKG51bGwsVil9KTpWfWlmKCFZKXJldHVybiBBKHopLmNvcHkoVixOKSxWO0EoeixmdW5jdGlvbihyZSxtZSl7aWYo'@; put 'cmUpcmV0dXJuIFkocmUpO21lLmNvcHkoVixOKSxZKG51bGwsVil9KX13JiZ3LmdldFJhbmRvbVZhbHVlc3x8IXkuYnJvd3Nlcj8oai5yYW5kb21GaWxsPWZ1bmN0aW9uIHgoVixOLHosWSl7aWYoISh2LmlzQnVmZmVyKFYpfHxWIGluc3RhbmNlb2YgaC5nLlVpbnQ4QXJyYXkpKXRocm93IG5l'@; put 'dyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBOKVk9TixOPTAsej1WLmxlbmd0aDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiB6KVk9eix6PVYubGVuZ3RoLU47ZWxzZSBpZigiZnVuY3Rp'@; put 'b24iIT10eXBlb2YgWSl0aHJvdyBuZXcgVHlwZUVycm9yKCciY2IiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3JldHVybiBMKE4sVi5sZW5ndGgpLFIoeixOLFYubGVuZ3RoKSxVKFYsTix6LFkpfSxqLnJhbmRvbUZpbGxTeW5jPWZ1bmN0aW9uIEgoVixOLHope2lmKHR5cGVvZiBO'@; put 'PiJ1IiYmKE49MCksISh2LmlzQnVmZmVyKFYpfHxWIGluc3RhbmNlb2YgaC5nLlVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpO3JldHVybiBMKE4sVi5sZW5ndGgpLHZvaWQgMD09PXomJih6PVYu'@; put 'bGVuZ3RoLU4pLFIoeixOLFYubGVuZ3RoKSxVKFYsTix6KX0pOihqLnJhbmRvbUZpbGw9YyxqLnJhbmRvbUZpbGxTeW5jPWMpfSw4NjA0OChmZSl7InVzZSBzdHJpY3QiO3ZhciBoPXt9O2Z1bmN0aW9uIHkoQyx3LFMpe1N8fChTPUVycm9yKTt2YXIgUj1mdW5jdGlvbih4KXtmdW5jdGlvbiBV'@; put 'KEgsVixOKXtyZXR1cm4geC5jYWxsKHRoaXMsZnVuY3Rpb24gTCh4LFUsSCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB3P3c6dyh4LFUsSCl9KEgsVixOKSl8fHRoaXN9cmV0dXJuIGZ1bmN0aW9uIGooQyx3KXtDLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcucHJvdG90eXBlKSxDLnByb3Rv'@; put 'dHlwZS5jb25zdHJ1Y3Rvcj1DLEMuX19wcm90b19fPXd9KFUseCksVX0oUyk7Ui5wcm90b3R5cGUubmFtZT1TLm5hbWUsUi5wcm90b3R5cGUuY29kZT1DLGhbQ109Un1mdW5jdGlvbiBjKEMsdyl7aWYoQXJyYXkuaXNBcnJheShDKSl7dmFyIFM9Qy5sZW5ndGg7cmV0dXJuIEM9Qy5tYXAoZnVu'@; put 'Y3Rpb24oTCl7cmV0dXJuIFN0cmluZyhMKX0pLFM+Mj8ib25lIG9mICIuY29uY2F0KHcsIiAiKS5jb25jYXQoQy5zbGljZSgwLFMtMSkuam9pbigiLCAiKSwiLCBvciAiKStDW1MtMV06Mj09PVM/Im9uZSBvZiAiLmNvbmNhdCh3LCIgIikuY29uY2F0KENbMF0sIiBvciAiKS5jb25jYXQoQ1sx'@; put 'XSk6Im9mICIuY29uY2F0KHcsIiAiKS5jb25jYXQoQ1swXSl9cmV0dXJuIm9mICIuY29uY2F0KHcsIiAiKS5jb25jYXQoU3RyaW5nKEMpKX15KCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLGZ1bmN0aW9uKEMsdyl7cmV0dXJuJ1RoZSB2YWx1ZSAiJyt3KyciIGlzIGludmFsaWQgZm9yIG9wdGlv'@; put 'biAiJytDKyciJ30sVHlwZUVycm9yKSx5KCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oQyx3LFMpe3ZhciBMLFI7aWYoInN0cmluZyI9PXR5cGVvZiB3JiZmdW5jdGlvbiBzKEMsdyxTKXtyZXR1cm4gQy5zdWJzdHIoIVN8fFM8MD8wOitTLHcubGVuZ3RoKT09PXd9KHcsIm5vdCAi'@; put 'KT8oTD0ibXVzdCBub3QgYmUiLHc9dy5yZXBsYWNlKC9ebm90IC8sIiIpKTpMPSJtdXN0IGJlIixmdW5jdGlvbiBBKEMsdyxTKXtyZXR1cm4odm9pZCAwPT09U3x8Uz5DLmxlbmd0aCkmJihTPUMubGVuZ3RoKSxDLnN1YnN0cmluZyhTLXcubGVuZ3RoLFMpPT09d30oQywiIGFyZ3VtZW50Iikp'@; put 'Uj0iVGhlICIuY29uY2F0KEMsIiAiKS5jb25jYXQoTCwiICIpLmNvbmNhdChjKHcsInR5cGUiKSk7ZWxzZXt2YXIgeD1mdW5jdGlvbiB2KEMsdyxTKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIFMmJihTPTApLCEoUyt3Lmxlbmd0aD5DLmxlbmd0aCkmJi0xIT09Qy5pbmRleE9mKHcsUyl9KEMs'@; put 'Ii4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7Uj0nVGhlICInLmNvbmNhdChDLCciICcpLmNvbmNhdCh4LCIgIikuY29uY2F0KEwsIiAiKS5jb25jYXQoYyh3LCJ0eXBlIikpfXJldHVybiBSKyIuIFJlY2VpdmVkIHR5cGUgIi5jb25jYXQodHlwZW9mIFMpfSxUeXBlRXJyb3IpLHkoIkVSUl9T'@; put 'VFJFQU1fUFVTSF9BRlRFUl9FT0YiLCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRiIpLHkoIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIixmdW5jdGlvbihDKXtyZXR1cm4iVGhlICIrQysiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQifSkseSgiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xP'@; put 'U0UiLCJQcmVtYXR1cmUgY2xvc2UiKSx5KCJFUlJfU1RSRUFNX0RFU1RST1lFRCIsZnVuY3Rpb24oQyl7cmV0dXJuIkNhbm5vdCBjYWxsICIrQysiIGFmdGVyIGEgc3RyZWFtIHdhcyBkZXN0cm95ZWQifSkseSgiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiQ2FsbGJhY2sgY2FsbGVkIG11bHRp'@; put 'cGxlIHRpbWVzIikseSgiRVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSx5KCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCIsIndyaXRlIGFmdGVyIGVuZCIpLHkoIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJNYXkgbm90IHdyaXRlIG51bGwg'@; put 'dmFsdWVzIHRvIHN0cmVhbSIsVHlwZUVycm9yKSx5KCJFUlJfVU5LTk9XTl9FTkNPRElORyIsZnVuY3Rpb24oQyl7cmV0dXJuIlVua25vd24gZW5jb2Rpbmc6ICIrQ30sVHlwZUVycm9yKSx5KCJFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UIiwic3RyZWFtLnVuc2hpZnQoKSBh'@; put 'ZnRlciBlbmQgZXZlbnQiKSxmZS5leHBvcnRzLkY9aH0sMjUzODIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNiksYz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oeCl7dmFyIFU9W107Zm9yKHZhciBIIGluIHgpVS5wdXNoKEgpO3JldHVybiBVfTtmZS5leHBvcnRzPVM7dmFyIHM9'@; put 'aCg0NTQxMiksQT1oKDE2NzA4KTtoKDU2Njk4KShTLHMpO2Zvcih2YXIgdj1jKEEucHJvdG90eXBlKSxDPTA7Qzx2Lmxlbmd0aDtDKyspe3ZhciB3PXZbQ107Uy5wcm90b3R5cGVbd118fChTLnByb3RvdHlwZVt3XT1BLnByb3RvdHlwZVt3XSl9ZnVuY3Rpb24gUyh4KXtpZighKHRoaXMgaW5z'@; put 'dGFuY2VvZiBTKSlyZXR1cm4gbmV3IFMoeCk7cy5jYWxsKHRoaXMseCksQS5jYWxsKHRoaXMseCksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLHgmJighMT09PXgucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKSwhMT09PXgud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PXguYWxs'@; put 'b3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoImVuZCIsTCkpKX1mdW5jdGlvbiBMKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8eS5uZXh0VGljayhSLHRoaXMpfWZ1bmN0aW9uIFIoeCl7eC5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoUy5wcm90'@; put 'b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJs'@; put 'ZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFMucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93'@; put 'cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihVKXt2b2lkIDA9PT10aGlzLl9yZWFkYWJsZVN0YXRlfHx2b2lkIDA9PT10aGlzLl93cml0YWJsZVN0YXRlfHwodGhpcy5fcmVhZGFi'@; put 'bGVTdGF0ZS5kZXN0cm95ZWQ9VSx0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1VKX19KX0sNjM2MDAoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1jO3ZhciB5PWgoNzQ2MTApO2Z1bmN0aW9uIGMocyl7aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKHMp'@; put 'O3kuY2FsbCh0aGlzLHMpfWgoNTY2OTgpKGMseSksYy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihzLEEsdil7dihudWxsLHMpfX0sNDU0MTIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIGMseT1oKDY1NjA2KTtmZS5leHBvcnRzPWYsZi5SZWFkYWJsZVN0YXRlPVgsaCgzNzAwNyk7'@; put 'dmFyIHgsQT1mdW5jdGlvbihGZSxnZSl7cmV0dXJuIEZlLmxpc3RlbmVycyhnZSkubGVuZ3RofSx2PWgoNDAzNDUpLEM9aCg0ODI4NykuQnVmZmVyLHc9KHR5cGVvZiBoLmc8InUiP2guZzp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30pLlVpbnQ4QXJy'@; put 'YXl8fGZ1bmN0aW9uKCl7fSxSPWgoNzk4MzgpO3g9UiYmUi5kZWJ1Z2xvZz9SLmRlYnVnbG9nKCJzdHJlYW0iKTpmdW5jdGlvbigpe307dmFyIHJlLG1lLENlLFU9aCg4MDM0NSksSD1oKDc1ODk2KSxOPWgoNjUyOTEpLmdldEhpZ2hXYXRlck1hcmssej1oKDg2MDQ4KS5GLFk9ei5FUlJfSU5W'@; put 'QUxJRF9BUkdfVFlQRSxGPXouRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixXPXouRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQscT16LkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7aCg1NjY5OCkoZix2KTt2YXIgSWU9SC5lcnJvck9yRGVzdHJveSxrZT1bImVycm9yIiwi'@; put 'Y2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiBYKERlLEZlLGdlKXtjPWN8fGgoMjUzODIpLCJib29sZWFuIiE9dHlwZW9mIGdlJiYoZ2U9RmUgaW5zdGFuY2VvZiBjKSx0aGlzLm9iamVjdE1vZGU9ISEoRGU9RGV8fHt9KS5vYmplY3RNb2RlLGdlJiYodGhpcy5v'@; put 'YmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFEZS5yZWFkYWJsZU9iamVjdE1vZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz1OKHRoaXMsRGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIsZ2UpLHRoaXMuYnVmZmVyPW5ldyBVLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlw'@; put 'ZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlz'@; put 'LnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXRDbG9zZT0hMSE9PURlLmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhRGUuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9RGUuZGVmYXVsdEVuY29kaW5nfHwidXRm'@; put 'OCIsdGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0aGlzLmVuY29kaW5nPW51bGwsRGUuZW5jb2RpbmcmJihyZXx8KHJlPWgoODMxNDEpLkkpLHRoaXMuZGVjb2Rlcj1uZXcgcmUoRGUuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9RGUuZW5j'@; put 'b2RpbmcpfWZ1bmN0aW9uIGYoRGUpe2lmKGM9Y3x8aCgyNTM4MiksISh0aGlzIGluc3RhbmNlb2YgZikpcmV0dXJuIG5ldyBmKERlKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBYKERlLHRoaXMsdGhpcyBpbnN0YW5jZW9mIGMpLHRoaXMucmVhZGFibGU9ITAsRGUmJigiZnVuY3Rpb24iPT10'@; put 'eXBlb2YgRGUucmVhZCYmKHRoaXMuX3JlYWQ9RGUucmVhZCksImZ1bmN0aW9uIj09dHlwZW9mIERlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PURlLmRlc3Ryb3kpKSx2LmNhbGwodGhpcyl9ZnVuY3Rpb24gYihEZSxGZSxnZSxjZSxoZSl7eCgicmVhZGFibGVBZGRDaHVuayIsRmUpO3ZhciBK'@; put 'ZSx3ZT1EZS5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09RmUpd2UucmVhZGluZz0hMSxmdW5jdGlvbiBEKERlLEZlKXtpZih4KCJvbkVvZkNodW5rIiksIUZlLmVuZGVkKXtpZihGZS5kZWNvZGVyKXt2YXIgZ2U9RmUuZGVjb2Rlci5lbmQoKTtnZSYmZ2UubGVuZ3RoJiYoRmUuYnVmZmVyLnB1'@; put 'c2goZ2UpLEZlLmxlbmd0aCs9RmUub2JqZWN0TW9kZT8xOmdlLmxlbmd0aCl9RmUuZW5kZWQ9ITAsRmUuc3luYz9wKERlKTooRmUubmVlZFJlYWRhYmxlPSExLEZlLmVtaXR0ZWRSZWFkYWJsZXx8KEZlLmVtaXR0ZWRSZWFkYWJsZT0hMCxJKERlKSkpfX0oRGUsd2UpO2Vsc2UgaWYoaGV8fChK'@; put 'ZT1mdW5jdGlvbiBNKERlLEZlKXt2YXIgZ2U7cmV0dXJuIWZ1bmN0aW9uIEwoRGUpe3JldHVybiBDLmlzQnVmZmVyKERlKXx8RGUgaW5zdGFuY2VvZiB3fShGZSkmJiJzdHJpbmciIT10eXBlb2YgRmUmJnZvaWQgMCE9PUZlJiYhRGUub2JqZWN0TW9kZSYmKGdlPW5ldyBZKCJjaHVuayIsWyJz'@; put 'dHJpbmciLCJCdWZmZXIiLCJVaW50OEFycmF5Il0sRmUpKSxnZX0od2UsRmUpKSxKZSlJZShEZSxKZSk7ZWxzZSBpZih3ZS5vYmplY3RNb2RlfHxGZSYmRmUubGVuZ3RoPjApaWYoInN0cmluZyIhPXR5cGVvZiBGZSYmIXdlLm9iamVjdE1vZGUmJk9iamVjdC5nZXRQcm90b3R5cGVPZihGZSkh'@; put 'PT1DLnByb3RvdHlwZSYmKEZlPWZ1bmN0aW9uIFMoRGUpe3JldHVybiBDLmZyb20oRGUpfShGZSkpLGNlKXdlLmVuZEVtaXR0ZWQ/SWUoRGUsbmV3IHEpOmsoRGUsd2UsRmUsITApO2Vsc2UgaWYod2UuZW5kZWQpSWUoRGUsbmV3IEYpO2Vsc2V7aWYod2UuZGVzdHJveWVkKXJldHVybiExO3dl'@; put 'LnJlYWRpbmc9ITEsd2UuZGVjb2RlciYmIWdlPyhGZT13ZS5kZWNvZGVyLndyaXRlKEZlKSx3ZS5vYmplY3RNb2RlfHwwIT09RmUubGVuZ3RoP2soRGUsd2UsRmUsITEpOnVlKERlLHdlKSk6ayhEZSx3ZSxGZSwhMSl9ZWxzZSBjZXx8KHdlLnJlYWRpbmc9ITEsdWUoRGUsd2UpKTtyZXR1cm4h'@; put 'd2UuZW5kZWQmJih3ZS5sZW5ndGg8d2UuaGlnaFdhdGVyTWFya3x8MD09PXdlLmxlbmd0aCl9ZnVuY3Rpb24gayhEZSxGZSxnZSxjZSl7RmUuZmxvd2luZyYmMD09PUZlLmxlbmd0aCYmIUZlLnN5bmM/KEZlLmF3YWl0RHJhaW49MCxEZS5lbWl0KCJkYXRhIixnZSkpOihGZS5sZW5ndGgrPUZl'@; put 'Lm9iamVjdE1vZGU/MTpnZS5sZW5ndGgsY2U/RmUuYnVmZmVyLnVuc2hpZnQoZ2UpOkZlLmJ1ZmZlci5wdXNoKGdlKSxGZS5uZWVkUmVhZGFibGUmJnAoRGUpKSx1ZShEZSxGZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGYucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdl'@; put 'dDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKEZlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9RmUpfX0pLGYucHJvdG90'@; put 'eXBlLmRlc3Ryb3k9SC5kZXN0cm95LGYucHJvdG90eXBlLl91bmRlc3Ryb3k9SC51bmRlc3Ryb3ksZi5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oRGUsRmUpe0ZlKERlKX0sZi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihEZSxGZSl7dmFyIGNlLGdlPXRoaXMuX3JlYWRhYmxlU3RhdGU7'@; put 'cmV0dXJuIGdlLm9iamVjdE1vZGU/Y2U9ITA6InN0cmluZyI9PXR5cGVvZiBEZSYmKChGZT1GZXx8Z2UuZGVmYXVsdEVuY29kaW5nKSE9PWdlLmVuY29kaW5nJiYoRGU9Qy5mcm9tKERlLEZlKSxGZT0iIiksY2U9ITApLGIodGhpcyxEZSxGZSwhMSxjZSl9LGYucHJvdG90eXBlLnVuc2hpZnQ9'@; put 'ZnVuY3Rpb24oRGUpe3JldHVybiBiKHRoaXMsRGUsbnVsbCwhMCwhMSl9LGYucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LGYucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKERlKXtyZXx8KHJlPWgoODMx'@; put 'NDEpLkkpO3ZhciBGZT1uZXcgcmUoRGUpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj1GZSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIGdlPXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQs'@; put 'Y2U9IiI7bnVsbCE9PWdlOyljZSs9RmUud3JpdGUoZ2UuZGF0YSksZ2U9Z2UubmV4dDtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuY2xlYXIoKSwiIiE9PWNlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKGNlKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aD1j'@; put 'ZS5sZW5ndGgsdGhpc307dmFyIEI9MTA3Mzc0MTgyNDtmdW5jdGlvbiBHKERlLEZlKXtyZXR1cm4gRGU8PTB8fDA9PT1GZS5sZW5ndGgmJkZlLmVuZGVkPzA6RmUub2JqZWN0TW9kZT8xOkRlIT1EZT9GZS5mbG93aW5nJiZGZS5sZW5ndGg/RmUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6RmUu'@; put 'bGVuZ3RoOihEZT5GZS5oaWdoV2F0ZXJNYXJrJiYoRmUuaGlnaFdhdGVyTWFyaz1mdW5jdGlvbiBLKERlKXtyZXR1cm4gRGU+PUI/RGU9QjooRGUtLSxEZXw9RGU+Pj4xLERlfD1EZT4+PjIsRGV8PURlPj4+NCxEZXw9RGU+Pj44LERlfD1EZT4+PjE2LERlKyspLERlfShEZSkpLERlPD1GZS5s'@; put 'ZW5ndGg/RGU6RmUuZW5kZWQ/RmUubGVuZ3RoOihGZS5uZWVkUmVhZGFibGU9ITAsMCkpfWZ1bmN0aW9uIHAoRGUpe3ZhciBGZT1EZS5fcmVhZGFibGVTdGF0ZTt4KCJlbWl0UmVhZGFibGUiLEZlLm5lZWRSZWFkYWJsZSxGZS5lbWl0dGVkUmVhZGFibGUpLEZlLm5lZWRSZWFkYWJsZT0hMSxG'@; put 'ZS5lbWl0dGVkUmVhZGFibGV8fCh4KCJlbWl0UmVhZGFibGUiLEZlLmZsb3dpbmcpLEZlLmVtaXR0ZWRSZWFkYWJsZT0hMCx5Lm5leHRUaWNrKEksRGUpKX1mdW5jdGlvbiBJKERlKXt2YXIgRmU9RGUuX3JlYWRhYmxlU3RhdGU7eCgiZW1pdFJlYWRhYmxlXyIsRmUuZGVzdHJveWVkLEZlLmxl'@; put 'bmd0aCxGZS5lbmRlZCksIUZlLmRlc3Ryb3llZCYmKEZlLmxlbmd0aHx8RmUuZW5kZWQpJiYoRGUuZW1pdCgicmVhZGFibGUiKSxGZS5lbWl0dGVkUmVhZGFibGU9ITEpLEZlLm5lZWRSZWFkYWJsZT0hRmUuZmxvd2luZyYmIUZlLmVuZGVkJiZGZS5sZW5ndGg8PUZlLmhpZ2hXYXRlck1hcmss'@; put 'UmUoRGUpfWZ1bmN0aW9uIHVlKERlLEZlKXtGZS5yZWFkaW5nTW9yZXx8KEZlLnJlYWRpbmdNb3JlPSEwLHkubmV4dFRpY2sobmUsRGUsRmUpKX1mdW5jdGlvbiBuZShEZSxGZSl7Zm9yKDshRmUucmVhZGluZyYmIUZlLmVuZGVkJiYoRmUubGVuZ3RoPEZlLmhpZ2hXYXRlck1hcmt8fEZlLmZs'@; put 'b3dpbmcmJjA9PT1GZS5sZW5ndGgpOyl7dmFyIGdlPUZlLmxlbmd0aDtpZih4KCJtYXliZVJlYWRNb3JlIHJlYWQgMCIpLERlLnJlYWQoMCksZ2U9PT1GZS5sZW5ndGgpYnJlYWt9RmUucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gUGUoRGUpe3ZhciBGZT1EZS5fcmVhZGFibGVTdGF0ZTtGZS5y'@; put 'ZWFkYWJsZUxpc3RlbmluZz1EZS5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsRmUucmVzdW1lU2NoZWR1bGVkJiYhRmUucGF1c2VkP0ZlLmZsb3dpbmc9ITA6RGUubGlzdGVuZXJDb3VudCgiZGF0YSIpPjAmJkRlLnJlc3VtZSgpfWZ1bmN0aW9uIG90KERlKXt4KCJyZWFkYWJsZSBuZXh0'@; put 'dGljayByZWFkIDAiKSxEZS5yZWFkKDApfWZ1bmN0aW9uIGR0KERlLEZlKXt4KCJyZXN1bWUiLEZlLnJlYWRpbmcpLEZlLnJlYWRpbmd8fERlLnJlYWQoMCksRmUucmVzdW1lU2NoZWR1bGVkPSExLERlLmVtaXQoInJlc3VtZSIpLFJlKERlKSxGZS5mbG93aW5nJiYhRmUucmVhZGluZyYmRGUu'@; put 'cmVhZCgwKX1mdW5jdGlvbiBSZShEZSl7dmFyIEZlPURlLl9yZWFkYWJsZVN0YXRlO2Zvcih4KCJmbG93IixGZS5mbG93aW5nKTtGZS5mbG93aW5nJiZudWxsIT09RGUucmVhZCgpOyk7fWZ1bmN0aW9uIGFlKERlLEZlKXtyZXR1cm4gMD09PUZlLmxlbmd0aD9udWxsOihGZS5vYmplY3RNb2Rl'@; put 'P2dlPUZlLmJ1ZmZlci5zaGlmdCgpOiFEZXx8RGU+PUZlLmxlbmd0aD8oZ2U9RmUuZGVjb2Rlcj9GZS5idWZmZXIuam9pbigiIik6MT09PUZlLmJ1ZmZlci5sZW5ndGg/RmUuYnVmZmVyLmZpcnN0KCk6RmUuYnVmZmVyLmNvbmNhdChGZS5sZW5ndGgpLEZlLmJ1ZmZlci5jbGVhcigpKTpnZT1G'@; put 'ZS5idWZmZXIuY29uc3VtZShEZSxGZS5kZWNvZGVyKSxnZSk7dmFyIGdlfWZ1bmN0aW9uIHhlKERlKXt2YXIgRmU9RGUuX3JlYWRhYmxlU3RhdGU7eCgiZW5kUmVhZGFibGUiLEZlLmVuZEVtaXR0ZWQpLEZlLmVuZEVtaXR0ZWR8fChGZS5lbmRlZD0hMCx5Lm5leHRUaWNrKGplLEZlLERlKSl9'@; put 'ZnVuY3Rpb24gamUoRGUsRmUpe2lmKHgoImVuZFJlYWRhYmxlTlQiLERlLmVuZEVtaXR0ZWQsRGUubGVuZ3RoKSwhRGUuZW5kRW1pdHRlZCYmMD09PURlLmxlbmd0aCYmKERlLmVuZEVtaXR0ZWQ9ITAsRmUucmVhZGFibGU9ITEsRmUuZW1pdCgiZW5kIiksRGUuYXV0b0Rlc3Ryb3kpKXt2YXIg'@; put 'Z2U9RmUuX3dyaXRhYmxlU3RhdGU7KCFnZXx8Z2UuYXV0b0Rlc3Ryb3kmJmdlLmZpbmlzaGVkKSYmRmUuZGVzdHJveSgpfX1mdW5jdGlvbiBBZShEZSxGZSl7Zm9yKHZhciBnZT0wLGNlPURlLmxlbmd0aDtnZTxjZTtnZSsrKWlmKERlW2dlXT09PUZlKXJldHVybiBnZTtyZXR1cm4tMX1mLnBy'@; put 'b3RvdHlwZS5yZWFkPWZ1bmN0aW9uKERlKXt4KCJyZWFkIixEZSksRGU9cGFyc2VJbnQoRGUsMTApO3ZhciBGZT10aGlzLl9yZWFkYWJsZVN0YXRlLGdlPURlO2lmKDAhPT1EZSYmKEZlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PURlJiZGZS5uZWVkUmVhZGFibGUmJigoMCE9PUZlLmhpZ2hX'@; put 'YXRlck1hcms/RmUubGVuZ3RoPj1GZS5oaWdoV2F0ZXJNYXJrOkZlLmxlbmd0aD4wKXx8RmUuZW5kZWQpKXJldHVybiB4KCJyZWFkOiBlbWl0UmVhZGFibGUiLEZlLmxlbmd0aCxGZS5lbmRlZCksMD09PUZlLmxlbmd0aCYmRmUuZW5kZWQ/eGUodGhpcyk6cCh0aGlzKSxudWxsO2lmKDA9PT0o'@; put 'RGU9RyhEZSxGZSkpJiZGZS5lbmRlZClyZXR1cm4gMD09PUZlLmxlbmd0aCYmeGUodGhpcyksbnVsbDt2YXIgaGUsY2U9RmUubmVlZFJlYWRhYmxlO3JldHVybiB4KCJuZWVkIHJlYWRhYmxlIixjZSksKDA9PT1GZS5sZW5ndGh8fEZlLmxlbmd0aC1EZTxGZS5oaWdoV2F0ZXJNYXJrKSYmeCgi'@; put 'bGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLGNlPSEwKSxGZS5lbmRlZHx8RmUucmVhZGluZz94KCJyZWFkaW5nIG9yIGVuZGVkIixjZT0hMSk6Y2UmJih4KCJkbyByZWFkIiksRmUucmVhZGluZz0hMCxGZS5zeW5jPSEwLDA9PT1GZS5sZW5ndGgmJihGZS5uZWVkUmVhZGFibGU9ITApLHRo'@; put 'aXMuX3JlYWQoRmUuaGlnaFdhdGVyTWFyayksRmUuc3luYz0hMSxGZS5yZWFkaW5nfHwoRGU9RyhnZSxGZSkpKSxudWxsPT09KGhlPURlPjA/YWUoRGUsRmUpOm51bGwpPyhGZS5uZWVkUmVhZGFibGU9RmUubGVuZ3RoPD1GZS5oaWdoV2F0ZXJNYXJrLERlPTApOihGZS5sZW5ndGgtPURlLEZl'@; put 'LmF3YWl0RHJhaW49MCksMD09PUZlLmxlbmd0aCYmKEZlLmVuZGVkfHwoRmUubmVlZFJlYWRhYmxlPSEwKSxnZSE9PURlJiZGZS5lbmRlZCYmeGUodGhpcykpLG51bGwhPT1oZSYmdGhpcy5lbWl0KCJkYXRhIixoZSksaGV9LGYucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKERlKXtJZSh0aGlz'@; put 'LG5ldyBXKCJfcmVhZCgpIikpfSxmLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKERlLEZlKXt2YXIgZ2U9dGhpcyxjZT10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChjZS5waXBlc0NvdW50KXtjYXNlIDA6Y2UucGlwZXM9RGU7YnJlYWs7Y2FzZSAxOmNlLnBpcGVzPVtjZS5waXBlcyxEZV07'@; put 'YnJlYWs7ZGVmYXVsdDpjZS5waXBlcy5wdXNoKERlKX1jZS5waXBlc0NvdW50Kz0xLHgoInBpcGUgY291bnQ9JWQgb3B0cz0laiIsY2UucGlwZXNDb3VudCxGZSk7dmFyIHdlPUZlJiYhMT09PUZlLmVuZHx8RGU9PT15LnN0ZG91dHx8RGU9PT15LnN0ZGVycj9Mcjp0dDtmdW5jdGlvbiB0dCgp'@; put 'e3goIm9uZW5kIiksRGUuZW5kKCl9Y2UuZW5kRW1pdHRlZD95Lm5leHRUaWNrKHdlKTpnZS5vbmNlKCJlbmQiLHdlKSxEZS5vbigidW5waXBlIixmdW5jdGlvbiBKZShsbixPbil7eCgib251bnBpcGUiKSxsbj09PWdlJiZPbiYmITE9PT1Pbi5oYXNVbnBpcGVkJiYoT24uaGFzVW5waXBlZD0h'@; put 'MCxmdW5jdGlvbiBSdCgpe3goImNsZWFudXAiKSxEZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGd0KSxEZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixYdCksRGUucmVtb3ZlTGlzdGVuZXIoImRyYWluIixLZSksRGUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixHdCksRGUucmVtb3ZlTGlzdGVu'@; put 'ZXIoInVucGlwZSIsSmUpLGdlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHR0KSxnZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixMciksZ2UucmVtb3ZlTGlzdGVuZXIoImRhdGEiLEx0KSwkdD0hMCxjZS5hd2FpdERyYWluJiYoIURlLl93cml0YWJsZVN0YXRlfHxEZS5fd3JpdGFibGVTdGF0ZS5uZWVk'@; put 'RHJhaW4pJiZLZSgpfSgpKX0pO3ZhciBLZT1mdW5jdGlvbiBfZShEZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGdlPURlLl9yZWFkYWJsZVN0YXRlO3goInBpcGVPbkRyYWluIixnZS5hd2FpdERyYWluKSxnZS5hd2FpdERyYWluJiZnZS5hd2FpdERyYWluLS0sMD09PWdlLmF3YWl0RHJhaW4m'@; put 'JkEoRGUsImRhdGEiKSYmKGdlLmZsb3dpbmc9ITAsUmUoRGUpKX19KGdlKTtEZS5vbigiZHJhaW4iLEtlKTt2YXIgJHQ9ITE7ZnVuY3Rpb24gTHQobG4pe3goIm9uZGF0YSIpO3ZhciBPbj1EZS53cml0ZShsbik7eCgiZGVzdC53cml0ZSIsT24pLCExPT09T24mJigoMT09PWNlLnBpcGVzQ291'@; put 'bnQmJmNlLnBpcGVzPT09RGV8fGNlLnBpcGVzQ291bnQ+MSYmLTEhPT1BZShjZS5waXBlcyxEZSkpJiYhJHQmJih4KCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLGNlLmF3YWl0RHJhaW4pLGNlLmF3YWl0RHJhaW4rKyksZ2UucGF1c2UoKSl9ZnVuY3Rpb24gR3QobG4pe3goIm9uZXJy'@; put 'b3IiLGxuKSxMcigpLERlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsR3QpLDA9PT1BKERlLCJlcnJvciIpJiZJZShEZSxsbil9ZnVuY3Rpb24gZ3QoKXtEZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixYdCksTHIoKX1mdW5jdGlvbiBYdCgpe3goIm9uZmluaXNoIiksRGUucmVtb3ZlTGlzdGVu'@; put 'ZXIoImNsb3NlIixndCksTHIoKX1mdW5jdGlvbiBMcigpe3goInVucGlwZSIpLGdlLnVucGlwZShEZSl9cmV0dXJuIGdlLm9uKCJkYXRhIixMdCksZnVuY3Rpb24gcWUoRGUsRmUsZ2Upe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBEZS5wcmVwZW5kTGlzdGVuZXIpcmV0dXJuIERlLnByZXBlbmRM'@; put 'aXN0ZW5lcihGZSxnZSk7RGUuX2V2ZW50cyYmRGUuX2V2ZW50c1tGZV0/QXJyYXkuaXNBcnJheShEZS5fZXZlbnRzW0ZlXSk/RGUuX2V2ZW50c1tGZV0udW5zaGlmdChnZSk6RGUuX2V2ZW50c1tGZV09W2dlLERlLl9ldmVudHNbRmVdXTpEZS5vbihGZSxnZSl9KERlLCJlcnJvciIsR3QpLERl'@; put 'Lm9uY2UoImNsb3NlIixndCksRGUub25jZSgiZmluaXNoIixYdCksRGUuZW1pdCgicGlwZSIsZ2UpLGNlLmZsb3dpbmd8fCh4KCJwaXBlIHJlc3VtZSIpLGdlLnJlc3VtZSgpKSxEZX0sZi5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKERlKXt2YXIgRmU9dGhpcy5fcmVhZGFibGVTdGF0ZSxn'@; put 'ZT17aGFzVW5waXBlZDohMX07aWYoMD09PUZlLnBpcGVzQ291bnQpcmV0dXJuIHRoaXM7aWYoMT09PUZlLnBpcGVzQ291bnQpcmV0dXJuIERlJiZEZSE9PUZlLnBpcGVzfHwoRGV8fChEZT1GZS5waXBlcyksRmUucGlwZXM9bnVsbCxGZS5waXBlc0NvdW50PTAsRmUuZmxvd2luZz0hMSxEZSYm'@; put 'RGUuZW1pdCgidW5waXBlIix0aGlzLGdlKSksdGhpcztpZighRGUpe3ZhciBjZT1GZS5waXBlcyxoZT1GZS5waXBlc0NvdW50O0ZlLnBpcGVzPW51bGwsRmUucGlwZXNDb3VudD0wLEZlLmZsb3dpbmc9ITE7Zm9yKHZhciB3ZT0wO3dlPGhlO3dlKyspY2Vbd2VdLmVtaXQoInVucGlwZSIsdGhp'@; put 'cyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfXZhciBKZT1BZShGZS5waXBlcyxEZSk7cmV0dXJuLTE9PT1KZXx8KEZlLnBpcGVzLnNwbGljZShKZSwxKSxGZS5waXBlc0NvdW50LT0xLDE9PT1GZS5waXBlc0NvdW50JiYoRmUucGlwZXM9RmUucGlwZXNbMF0pLERlLmVtaXQoInVucGlw'@; put 'ZSIsdGhpcyxnZSkpLHRoaXN9LGYucHJvdG90eXBlLmFkZExpc3RlbmVyPWYucHJvdG90eXBlLm9uPWZ1bmN0aW9uKERlLEZlKXt2YXIgZ2U9di5wcm90b3R5cGUub24uY2FsbCh0aGlzLERlLEZlKSxjZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiJkYXRhIj09PURlPyhjZS5yZWFkYWJs'@; put 'ZUxpc3RlbmluZz10aGlzLmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCwhMSE9PWNlLmZsb3dpbmcmJnRoaXMucmVzdW1lKCkpOiJyZWFkYWJsZSI9PT1EZSYmIWNlLmVuZEVtaXR0ZWQmJiFjZS5yZWFkYWJsZUxpc3RlbmluZyYmKGNlLnJlYWRhYmxlTGlzdGVuaW5nPWNlLm5lZWRSZWFk'@; put 'YWJsZT0hMCxjZS5mbG93aW5nPSExLGNlLmVtaXR0ZWRSZWFkYWJsZT0hMSx4KCJvbiByZWFkYWJsZSIsY2UubGVuZ3RoLGNlLnJlYWRpbmcpLGNlLmxlbmd0aD9wKHRoaXMpOmNlLnJlYWRpbmd8fHkubmV4dFRpY2sob3QsdGhpcykpLGdlfSxmLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1m'@; put 'dW5jdGlvbihEZSxGZSl7dmFyIGdlPXYucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxEZSxGZSk7cmV0dXJuInJlYWRhYmxlIj09PURlJiZ5Lm5leHRUaWNrKFBlLHRoaXMpLGdlfSxmLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oRGUpe3ZhciBGZT12'@; put 'LnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybigicmVhZGFibGUiPT09RGV8fHZvaWQgMD09PURlKSYmeS5uZXh0VGljayhQZSx0aGlzKSxGZX0sZi5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIERlPXRoaXMuX3JlYWRhYmxl'@; put 'U3RhdGU7cmV0dXJuIERlLmZsb3dpbmd8fCh4KCJyZXN1bWUiKSxEZS5mbG93aW5nPSFEZS5yZWFkYWJsZUxpc3RlbmluZyxmdW5jdGlvbiBsdChEZSxGZSl7RmUucmVzdW1lU2NoZWR1bGVkfHwoRmUucmVzdW1lU2NoZWR1bGVkPSEwLHkubmV4dFRpY2soZHQsRGUsRmUpKX0odGhpcyxEZSkp'@; put 'LERlLnBhdXNlZD0hMSx0aGlzfSxmLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiB4KCJjYWxsIHBhdXNlIGZsb3dpbmc9JWoiLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyksITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJih4KCJwYXVzZSIpLHRoaXMuX3Jl'@; put 'YWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoInBhdXNlIikpLHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkPSEwLHRoaXN9LGYucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oRGUpe3ZhciBGZT10aGlzLGdlPXRoaXMuX3JlYWRhYmxlU3RhdGUsY2U9ITE7Zm9yKHZhciBoZSBpbiBE'@; put 'ZS5vbigiZW5kIixmdW5jdGlvbigpe2lmKHgoIndyYXBwZWQgZW5kIiksZ2UuZGVjb2RlciYmIWdlLmVuZGVkKXt2YXIgSmU9Z2UuZGVjb2Rlci5lbmQoKTtKZSYmSmUubGVuZ3RoJiZGZS5wdXNoKEplKX1GZS5wdXNoKG51bGwpfSksRGUub24oImRhdGEiLGZ1bmN0aW9uKEplKXt4KCJ3cmFw'@; put 'cGVkIGRhdGEiKSxnZS5kZWNvZGVyJiYoSmU9Z2UuZGVjb2Rlci53cml0ZShKZSkpLGdlLm9iamVjdE1vZGUmJm51bGw9PUplfHwhKGdlLm9iamVjdE1vZGV8fEplJiZKZS5sZW5ndGgpfHxGZS5wdXNoKEplKXx8KGNlPSEwLERlLnBhdXNlKCkpfSksRGUpdm9pZCAwPT09dGhpc1toZV0mJiJm'@; put 'dW5jdGlvbiI9PXR5cGVvZiBEZVtoZV0mJih0aGlzW2hlXT1mdW5jdGlvbih0dCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIERlW3R0XS5hcHBseShEZSxhcmd1bWVudHMpfX0oaGUpKTtmb3IodmFyIHdlPTA7d2U8a2UubGVuZ3RoO3dlKyspRGUub24oa2Vbd2VdLHRoaXMuZW1pdC5iaW5k'@; put 'KHRoaXMsa2Vbd2VdKSk7cmV0dXJuIHRoaXMuX3JlYWQ9ZnVuY3Rpb24oSmUpe3goIndyYXBwZWQgX3JlYWQiLEplKSxjZSYmKGNlPSExLERlLnJlc3VtZSgpKX0sdGhpc30sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGYucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5j'@; put 'dGlvbigpe3JldHVybiB2b2lkIDA9PT1tZSYmKG1lPWgoMjk1NSkpLG1lKHRoaXMpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGYucHJvdG90eXBlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRl'@; put 'LmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGYucHJvdG90eXBlLCJyZWFkYWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pLE9iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eShmLnByb3RvdHlwZSwicmVhZGFibGVGbG93aW5nIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxzZXQ6ZnVuY3Rpb24oRmUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0'@; put 'YXRlLmZsb3dpbmc9RmUpfX0pLGYuX2Zyb21MaXN0PWFlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLnByb3RvdHlwZSwicmVhZGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aH19KSwiZnVuY3Rpb24iPT10'@; put 'eXBlb2YgU3ltYm9sJiYoZi5mcm9tPWZ1bmN0aW9uKERlLEZlKXtyZXR1cm4gdm9pZCAwPT09Q2UmJihDZT1oKDU1MTU3KSksQ2UoZixEZSxGZSl9KX0sNzQ2MTAoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1TO3ZhciB5PWgoODYwNDgpLkYsYz15LkVSUl9NRVRIT0RfTk9UX0lN'@; put 'UExFTUVOVEVELHM9eS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssQT15LkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsdj15LkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCxDPWgoMjUzODIpO2Z1bmN0aW9uIHcoeCxVKXt2YXIgSD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtILnRy'@; put 'YW5zZm9ybWluZz0hMTt2YXIgVj1ILndyaXRlY2I7aWYobnVsbD09PVYpcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLG5ldyBzKTtILndyaXRlY2h1bms9bnVsbCxILndyaXRlY2I9bnVsbCxudWxsIT1VJiZ0aGlzLnB1c2goVSksVih4KTt2YXIgTj10aGlzLl9yZWFkYWJsZVN0YXRlO04ucmVh'@; put 'ZGluZz0hMSwoTi5uZWVkUmVhZGFibGV8fE4ubGVuZ3RoPE4uaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoTi5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBTKHgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFMpKXJldHVybiBuZXcgUyh4KTtDLmNhbGwodGhpcyx4KSx0aGlzLl90cmFuc2Zvcm1T'@; put 'dGF0ZT17YWZ0ZXJUcmFuc2Zvcm06dy5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJs'@; put 'ZVN0YXRlLnN5bmM9ITEseCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB4LnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT14LnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIHguZmx1c2gmJih0aGlzLl9mbHVzaD14LmZsdXNoKSksdGhpcy5vbigicHJlZmluaXNoIixMKX1mdW5jdGlvbiBM'@; put 'KCl7dmFyIHg9dGhpczsiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZmx1c2h8fHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkP1IodGhpcyxudWxsLG51bGwpOnRoaXMuX2ZsdXNoKGZ1bmN0aW9uKFUsSCl7Uih4LFUsSCl9KX1mdW5jdGlvbiBSKHgsVSxIKXtpZihVKXJldHVybiB4LmVt'@; put 'aXQoImVycm9yIixVKTtpZihudWxsIT1IJiZ4LnB1c2goSCkseC5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpdGhyb3cgbmV3IHY7aWYoeC5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBBO3JldHVybiB4LnB1c2gobnVsbCl9aCg1NjY5OCkoUyxDKSxTLnByb3RvdHlwZS5w'@; put 'dXNoPWZ1bmN0aW9uKHgsVSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsQy5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMseCxVKX0sUy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih4LFUsSCl7SChuZXcgYygiX3RyYW5zZm9ybSgpIikpfSxTLnBy'@; put 'b3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oeCxVLEgpe3ZhciBWPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKFYud3JpdGVjYj1ILFYud3JpdGVjaHVuaz14LFYud3JpdGVlbmNvZGluZz1VLCFWLnRyYW5zZm9ybWluZyl7dmFyIE49dGhpcy5fcmVhZGFibGVTdGF0ZTsoVi5uZWVkVHJhbnNmb3Jt'@; put 'fHxOLm5lZWRSZWFkYWJsZXx8Ti5sZW5ndGg8Ti5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChOLmhpZ2hXYXRlck1hcmspfX0sUy5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oeCl7dmFyIFU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PVUud3JpdGVjaHVua3x8VS50cmFuc2Zvcm1p'@; put 'bmc/VS5uZWVkVHJhbnNmb3JtPSEwOihVLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oVS53cml0ZWNodW5rLFUud3JpdGVlbmNvZGluZyxVLmFmdGVyVHJhbnNmb3JtKSl9LFMucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHgsVSl7Qy5wcm90b3R5cGUuX2Rlc3Ryb3kuY2Fs'@; put 'bCh0aGlzLHgsZnVuY3Rpb24oSCl7VShIKX0pfX0sMTY3MDgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIEEseT1oKDY1NjA2KTtmdW5jdGlvbiBzKFJlKXt2YXIgYWU9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24g'@; put 'ZHQoUmUsYWUseGUpe3ZhciBqZT1SZS5lbnRyeTtmb3IoUmUuZW50cnk9bnVsbDtqZTspe3ZhciBBZT1qZS5jYWxsYmFjazthZS5wZW5kaW5nY2ItLSxBZSh4ZSksamU9amUubmV4dH1hZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD1SZX0oYWUsUmUpfX1mZS5leHBvcnRzPVgsWC5Xcml0YWJs'@; put 'ZVN0YXRlPWtlO3ZhciBxZSx2PXtkZXByZWNhdGU6aCg5NDY0Myl9LEM9aCg0MDM0NSksdz1oKDQ4Mjg3KS5CdWZmZXIsUz0odHlwZW9mIGguZzwidSI/aC5nOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9'@; put 'LHg9aCg3NTg5NiksSD1oKDY1MjkxKS5nZXRIaWdoV2F0ZXJNYXJrLFY9aCg4NjA0OCkuRixOPVYuRVJSX0lOVkFMSURfQVJHX1RZUEUsej1WLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELFk9Vi5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssRj1WLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsVz1W'@; put 'LkVSUl9TVFJFQU1fREVTVFJPWUVELHE9Vi5FUlJfU1RSRUFNX05VTExfVkFMVUVTLHJlPVYuRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsbWU9Vi5FUlJfVU5LTk9XTl9FTkNPRElORyxDZT14LmVycm9yT3JEZXN0cm95O2Z1bmN0aW9uIEllKCl7fWZ1bmN0aW9uIGtlKFJlLGFlLHhlKXtB'@; put 'PUF8fGgoMjUzODIpLCJib29sZWFuIiE9dHlwZW9mIHhlJiYoeGU9YWUgaW5zdGFuY2VvZiBBKSx0aGlzLm9iamVjdE1vZGU9ISEoUmU9UmV8fHt9KS5vYmplY3RNb2RlLHhlJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFSZS53cml0YWJsZU9iamVjdE1vZGUpLHRoaXMu'@; put 'aGlnaFdhdGVyTWFyaz1IKHRoaXMsUmUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIseGUpLHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVjb2Rl'@; put 'U3RyaW5ncz0hKCExPT09UmUuZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZhdWx0RW5jb2Rpbmc9UmUuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRo'@; put 'aXMub253cml0ZT1mdW5jdGlvbihBZSl7IWZ1bmN0aW9uIEQoUmUsYWUpe3ZhciB4ZT1SZS5fd3JpdGFibGVTdGF0ZSxqZT14ZS5zeW5jLEFlPXhlLndyaXRlY2I7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEFlKXRocm93IG5ldyBZO2lmKGZ1bmN0aW9uIEcoUmUpe1JlLndyaXRpbmc9ITEsUmUu'@; put 'd3JpdGVjYj1udWxsLFJlLmxlbmd0aC09UmUud3JpdGVsZW4sUmUud3JpdGVsZW49MH0oeGUpLGFlKSFmdW5jdGlvbiBLKFJlLGFlLHhlLGplLEFlKXstLWFlLnBlbmRpbmdjYix4ZT8oeS5uZXh0VGljayhBZSxqZSkseS5uZXh0VGljayhvdCxSZSxhZSksUmUuX3dyaXRhYmxlU3RhdGUuZXJy'@; put 'b3JFbWl0dGVkPSEwLENlKFJlLGplKSk6KEFlKGplKSxSZS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsQ2UoUmUsamUpLG90KFJlLGFlKSl9KFJlLHhlLGplLGFlLEFlKTtlbHNle3ZhciBEZT1uZSh4ZSl8fFJlLmRlc3Ryb3llZDshRGUmJiF4ZS5jb3JrZWQmJiF4ZS5idWZmZXJQ'@; put 'cm9jZXNzaW5nJiZ4ZS5idWZmZXJlZFJlcXVlc3QmJnVlKFJlLHhlKSxqZT95Lm5leHRUaWNrKHAsUmUseGUsRGUsQWUpOnAoUmUseGUsRGUsQWUpfX0oYWUsQWUpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RC'@; put 'dWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9ITEhPT1SZS5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIVJlLmF1dG9EZXN0cm95LHRoaXMuYnVmZmVyZWRSZXF1ZXN0'@; put 'Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgcyh0aGlzKX1mdW5jdGlvbiBYKFJlKXt2YXIgYWU9dGhpcyBpbnN0YW5jZW9mKEE9QXx8aCgyNTM4MikpO2lmKCFhZSYmIXFlLmNhbGwoWCx0aGlzKSlyZXR1cm4gbmV3IFgoUmUpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IGtl'@; put 'KFJlLHRoaXMsYWUpLHRoaXMud3JpdGFibGU9ITAsUmUmJigiZnVuY3Rpb24iPT10eXBlb2YgUmUud3JpdGUmJih0aGlzLl93cml0ZT1SZS53cml0ZSksImZ1bmN0aW9uIj09dHlwZW9mIFJlLndyaXRldiYmKHRoaXMuX3dyaXRldj1SZS53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiBSZS5k'@; put 'ZXN0cm95JiYodGhpcy5fZGVzdHJveT1SZS5kZXN0cm95KSwiZnVuY3Rpb24iPT10eXBlb2YgUmUuZmluYWwmJih0aGlzLl9maW5hbD1SZS5maW5hbCkpLEMuY2FsbCh0aGlzKX1mdW5jdGlvbiBCKFJlLGFlLHhlLGplLEFlLERlLEZlKXthZS53cml0ZWxlbj1qZSxhZS53cml0ZWNiPUZlLGFl'@; put 'LndyaXRpbmc9ITAsYWUuc3luYz0hMCxhZS5kZXN0cm95ZWQ/YWUub253cml0ZShuZXcgVygid3JpdGUiKSk6eGU/UmUuX3dyaXRldihBZSxhZS5vbndyaXRlKTpSZS5fd3JpdGUoQWUsRGUsYWUub253cml0ZSksYWUuc3luYz0hMX1mdW5jdGlvbiBwKFJlLGFlLHhlLGplKXt4ZXx8ZnVuY3Rp'@; put 'b24gSShSZSxhZSl7MD09PWFlLmxlbmd0aCYmYWUubmVlZERyYWluJiYoYWUubmVlZERyYWluPSExLFJlLmVtaXQoImRyYWluIikpfShSZSxhZSksYWUucGVuZGluZ2NiLS0samUoKSxvdChSZSxhZSl9ZnVuY3Rpb24gdWUoUmUsYWUpe2FlLmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIHhlPWFl'@; put 'LmJ1ZmZlcmVkUmVxdWVzdDtpZihSZS5fd3JpdGV2JiZ4ZSYmeGUubmV4dCl7dmFyIEFlPW5ldyBBcnJheShhZS5idWZmZXJlZFJlcXVlc3RDb3VudCksRGU9YWUuY29ya2VkUmVxdWVzdHNGcmVlO0RlLmVudHJ5PXhlO2Zvcih2YXIgRmU9MCxnZT0hMDt4ZTspQWVbRmVdPXhlLHhlLmlzQnVm'@; put 'fHwoZ2U9ITEpLHhlPXhlLm5leHQsRmUrPTE7QWUuYWxsQnVmZmVycz1nZSxCKFJlLGFlLCEwLGFlLmxlbmd0aCxBZSwiIixEZS5maW5pc2gpLGFlLnBlbmRpbmdjYisrLGFlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxEZS5uZXh0PyhhZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9RGUubmV4dCxE'@; put 'ZS5uZXh0PW51bGwpOmFlLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgcyhhZSksYWUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MH1lbHNle2Zvcig7eGU7KXt2YXIgY2U9eGUuY2h1bms7aWYoQihSZSxhZSwhMSxhZS5vYmplY3RNb2RlPzE6Y2UubGVuZ3RoLGNlLHhlLmVuY29kaW5nLHhlLmNhbGxi'@; put 'YWNrKSx4ZT14ZS5uZXh0LGFlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0sYWUud3JpdGluZylicmVha31udWxsPT09eGUmJihhZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfWFlLmJ1ZmZlcmVkUmVxdWVzdD14ZSxhZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIG5lKFJlKXtyZXR1'@; put 'cm4gUmUuZW5kaW5nJiYwPT09UmUubGVuZ3RoJiZudWxsPT09UmUuYnVmZmVyZWRSZXF1ZXN0JiYhUmUuZmluaXNoZWQmJiFSZS53cml0aW5nfWZ1bmN0aW9uIF9lKFJlLGFlKXtSZS5fZmluYWwoZnVuY3Rpb24oeGUpe2FlLnBlbmRpbmdjYi0tLHhlJiZDZShSZSx4ZSksYWUucHJlZmluaXNo'@; put 'ZWQ9ITAsUmUuZW1pdCgicHJlZmluaXNoIiksb3QoUmUsYWUpfSl9ZnVuY3Rpb24gb3QoUmUsYWUpe3ZhciB4ZT1uZShhZSk7aWYoeGUmJihmdW5jdGlvbiBQZShSZSxhZSl7IWFlLnByZWZpbmlzaGVkJiYhYWUuZmluYWxDYWxsZWQmJigiZnVuY3Rpb24iIT10eXBlb2YgUmUuX2ZpbmFsfHxh'@; put 'ZS5kZXN0cm95ZWQ/KGFlLnByZWZpbmlzaGVkPSEwLFJlLmVtaXQoInByZWZpbmlzaCIpKTooYWUucGVuZGluZ2NiKyssYWUuZmluYWxDYWxsZWQ9ITAseS5uZXh0VGljayhfZSxSZSxhZSkpKX0oUmUsYWUpLDA9PT1hZS5wZW5kaW5nY2ImJihhZS5maW5pc2hlZD0hMCxSZS5lbWl0KCJmaW5p'@; put 'c2giKSxhZS5hdXRvRGVzdHJveSkpKXt2YXIgamU9UmUuX3JlYWRhYmxlU3RhdGU7KCFqZXx8amUuYXV0b0Rlc3Ryb3kmJmplLmVuZEVtaXR0ZWQpJiZSZS5kZXN0cm95KCl9cmV0dXJuIHhlfWgoNTY2OTgpKFgsQyksa2UucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIg'@; put 'YWU9dGhpcy5idWZmZXJlZFJlcXVlc3QseGU9W107YWU7KXhlLnB1c2goYWUpLGFlPWFlLm5leHQ7cmV0dXJuIHhlfSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoa2UucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6di5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhp'@; put 'cy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJm'@; put 'dW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8ocWU9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFgsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbihhZSl7cmV0'@; put 'dXJuISFxZS5jYWxsKHRoaXMsYWUpfHx0aGlzPT09WCYmYWUmJmFlLl93cml0YWJsZVN0YXRlIGluc3RhbmNlb2Yga2V9fSkpOnFlPWZ1bmN0aW9uKGFlKXtyZXR1cm4gYWUgaW5zdGFuY2VvZiB0aGlzfSxYLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7Q2UodGhpcyxuZXcgRil9LFgucHJv'@; put 'dG90eXBlLndyaXRlPWZ1bmN0aW9uKFJlLGFlLHhlKXt2YXIgamU9dGhpcy5fd3JpdGFibGVTdGF0ZSxBZT0hMSxEZT0hamUub2JqZWN0TW9kZSYmZnVuY3Rpb24gUihSZSl7cmV0dXJuIHcuaXNCdWZmZXIoUmUpfHxSZSBpbnN0YW5jZW9mIFN9KFJlKTtyZXR1cm4gRGUmJiF3LmlzQnVmZmVy'@; put 'KFJlKSYmKFJlPWZ1bmN0aW9uIEwoUmUpe3JldHVybiB3LmZyb20oUmUpfShSZSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBhZSYmKHhlPWFlLGFlPW51bGwpLERlP2FlPSJidWZmZXIiOmFlfHwoYWU9amUuZGVmYXVsdEVuY29kaW5nKSwiZnVuY3Rpb24iIT10eXBlb2YgeGUmJih4ZT1JZSksamUu'@; put 'ZW5kaW5nP2Z1bmN0aW9uIGYoUmUsYWUpe3ZhciB4ZT1uZXcgcmU7Q2UoUmUseGUpLHkubmV4dFRpY2soYWUseGUpfSh0aGlzLHhlKTooRGV8fGZ1bmN0aW9uIGIoUmUsYWUseGUsamUpe3ZhciBBZTtyZXR1cm4gbnVsbD09PXhlP0FlPW5ldyBxOiJzdHJpbmciIT10eXBlb2YgeGUmJiFhZS5v'@; put 'YmplY3RNb2RlJiYoQWU9bmV3IE4oImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciJdLHhlKSksIUFlfHwoQ2UoUmUsQWUpLHkubmV4dFRpY2soamUsQWUpLCExKX0odGhpcyxqZSxSZSx4ZSkpJiYoamUucGVuZGluZ2NiKyssQWU9ZnVuY3Rpb24gTShSZSxhZSx4ZSxqZSxBZSxEZSl7aWYoIXhl'@; put 'KXt2YXIgRmU9ZnVuY3Rpb24gayhSZSxhZSx4ZSl7cmV0dXJuIVJlLm9iamVjdE1vZGUmJiExIT09UmUuZGVjb2RlU3RyaW5ncyYmInN0cmluZyI9PXR5cGVvZiBhZSYmKGFlPXcuZnJvbShhZSx4ZSkpLGFlfShhZSxqZSxBZSk7amUhPT1GZSYmKHhlPSEwLEFlPSJidWZmZXIiLGplPUZlKX12'@; put 'YXIgZ2U9YWUub2JqZWN0TW9kZT8xOmplLmxlbmd0aDthZS5sZW5ndGgrPWdlO3ZhciBjZT1hZS5sZW5ndGg8YWUuaGlnaFdhdGVyTWFyaztpZihjZXx8KGFlLm5lZWREcmFpbj0hMCksYWUud3JpdGluZ3x8YWUuY29ya2VkKXt2YXIgaGU9YWUubGFzdEJ1ZmZlcmVkUmVxdWVzdDthZS5sYXN0'@; put 'QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazpqZSxlbmNvZGluZzpBZSxpc0J1Zjp4ZSxjYWxsYmFjazpEZSxuZXh0Om51bGx9LGhlP2hlLm5leHQ9YWUubGFzdEJ1ZmZlcmVkUmVxdWVzdDphZS5idWZmZXJlZFJlcXVlc3Q9YWUubGFzdEJ1ZmZlcmVkUmVxdWVzdCxhZS5idWZmZXJlZFJlcXVlc3RD'@; put 'b3VudCs9MX1lbHNlIEIoUmUsYWUsITEsZ2UsamUsQWUsRGUpO3JldHVybiBjZX0odGhpcyxqZSxEZSxSZSxhZSx4ZSkpLEFlfSxYLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sWC5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFy'@; put 'IFJlPXRoaXMuX3dyaXRhYmxlU3RhdGU7UmUuY29ya2VkJiYoUmUuY29ya2VkLS0sIVJlLndyaXRpbmcmJiFSZS5jb3JrZWQmJiFSZS5idWZmZXJQcm9jZXNzaW5nJiZSZS5idWZmZXJlZFJlcXVlc3QmJnVlKHRoaXMsUmUpKX0sWC5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0'@; put 'aW9uKGFlKXtpZigic3RyaW5nIj09dHlwZW9mIGFlJiYoYWU9YWUudG9Mb3dlckNhc2UoKSksIShbImhleCIsInV0ZjgiLCJ1dGYtOCIsImFzY2lpIiwiYmluYXJ5IiwiYmFzZTY0IiwidWNzMiIsInVjcy0yIiwidXRmMTZsZSIsInV0Zi0xNmxlIiwicmF3Il0uaW5kZXhPZigoYWUrIiIpLnRv'@; put 'TG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgbWUoYWUpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1hZSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu'@; put 'X3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxYLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oUmUsYWUseGUpe3hlKG5ldyB6KCJfd3JpdGUoKSIpKX0sWC5wcm90b3R5cGUuX3dyaXRldj1udWxsLFgucHJvdG90eXBlLmVuZD1mdW5jdGlvbihSZSxhZSx4ZSl7dmFyIGplPXRoaXMu'@; put 'X3dyaXRhYmxlU3RhdGU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFJlPyh4ZT1SZSxSZT1udWxsLGFlPW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiBhZSYmKHhlPWFlLGFlPW51bGwpLG51bGwhPVJlJiZ0aGlzLndyaXRlKFJlLGFlKSxqZS5jb3JrZWQmJihqZS5jb3JrZWQ9MSx0aGlzLnVu'@; put 'Y29yaygpKSxqZS5lbmRpbmd8fGZ1bmN0aW9uIGx0KFJlLGFlLHhlKXthZS5lbmRpbmc9ITAsb3QoUmUsYWUpLHhlJiYoYWUuZmluaXNoZWQ/eS5uZXh0VGljayh4ZSk6UmUub25jZSgiZmluaXNoIix4ZSkpLGFlLmVuZGVkPSEwLFJlLndyaXRhYmxlPSExfSh0aGlzLGplLHhlKSx0aGlzfSxP'@; put 'YmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtl'@; put 'bnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKGFlKXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9'@; put 'YWUpfX0pLFgucHJvdG90eXBlLmRlc3Ryb3k9eC5kZXN0cm95LFgucHJvdG90eXBlLl91bmRlc3Ryb3k9eC51bmRlc3Ryb3ksWC5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oUmUsYWUpe2FlKFJlKX19LDI5NTUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIGMseT1oKDY1NjA2KTtmdW5j'@; put 'dGlvbiBzKHJlLG1lLENlKXtyZXR1cm4gbWU9ZnVuY3Rpb24gQShyZSl7dmFyIG1lPWZ1bmN0aW9uIHYocmUsbWUpe2lmKCJvYmplY3QiIT10eXBlb2YgcmV8fG51bGw9PT1yZSlyZXR1cm4gcmU7dmFyIENlPXJlW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09Q2Upe3ZhciBJZT1D'@; put 'ZS5jYWxsKHJlLG1lfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgSWUpcmV0dXJuIEllO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09bWU/U3RyaW5nOk51bWJlcikocmUp'@; put 'fShyZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBtZT9tZTpTdHJpbmcobWUpfShtZSksbWUgaW4gcmU/T2JqZWN0LmRlZmluZVByb3BlcnR5KHJlLG1lLHt2YWx1ZTpDZSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJlW21lXT1DZSxyZX12'@; put 'YXIgQz1oKDg2MjM4KSx3PVN5bWJvbCgibGFzdFJlc29sdmUiKSxTPVN5bWJvbCgibGFzdFJlamVjdCIpLEw9U3ltYm9sKCJlcnJvciIpLFI9U3ltYm9sKCJlbmRlZCIpLHg9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLFU9U3ltYm9sKCJoYW5kbGVQcm9taXNlIiksSD1TeW1ib2woInN0cmVhbSIp'@; put 'O2Z1bmN0aW9uIFYocmUsbWUpe3JldHVybnt2YWx1ZTpyZSxkb25lOm1lfX1mdW5jdGlvbiBOKHJlKXt2YXIgbWU9cmVbd107aWYobnVsbCE9PW1lKXt2YXIgQ2U9cmVbSF0ucmVhZCgpO251bGwhPT1DZSYmKHJlW3hdPW51bGwscmVbd109bnVsbCxyZVtTXT1udWxsLG1lKFYoQ2UsITEpKSl9'@; put 'fWZ1bmN0aW9uIHoocmUpe3kubmV4dFRpY2soTixyZSl9dmFyIEY9T2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmN0aW9uKCl7fSksVz1PYmplY3Quc2V0UHJvdG90eXBlT2YoKHMoYz17Z2V0IHN0cmVhbSgpe3JldHVybiB0aGlzW0hdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIG1lPXRoaXMsQ2U9'@; put 'dGhpc1tMXTtpZihudWxsIT09Q2UpcmV0dXJuIFByb21pc2UucmVqZWN0KENlKTtpZih0aGlzW1JdKXJldHVybiBQcm9taXNlLnJlc29sdmUoVih2b2lkIDAsITApKTtpZih0aGlzW0hdLmRlc3Ryb3llZClyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oWCxmKXt5Lm5leHRUaWNrKGZ1bmN0'@; put 'aW9uKCl7bWVbTF0/ZihtZVtMXSk6WChWKHZvaWQgMCwhMCkpfSl9KTt2YXIga2UsSWU9dGhpc1t4XTtpZihJZSlrZT1uZXcgUHJvbWlzZShmdW5jdGlvbiBZKHJlLG1lKXtyZXR1cm4gZnVuY3Rpb24oQ2UsSWUpe3JlLnRoZW4oZnVuY3Rpb24oKXttZVtSXT9DZShWKHZvaWQgMCwhMCkpOm1l'@; put 'W1VdKENlLEllKX0sSWUpfX0oSWUsdGhpcykpO2Vsc2V7dmFyIHFlPXRoaXNbSF0ucmVhZCgpO2lmKG51bGwhPT1xZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFYocWUsITEpKTtrZT1uZXcgUHJvbWlzZSh0aGlzW1VdKX1yZXR1cm4gdGhpc1t4XT1rZSxrZX19LFN5bWJvbC5hc3luY0l0ZXJh'@; put 'dG9yLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxzKGMsInJldHVybiIsZnVuY3Rpb24oKXt2YXIgbWU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oQ2UsSWUpe21lW0hdLmRlc3Ryb3kobnVsbCxmdW5jdGlvbihrZSl7a2U/SWUoa2UpOkNlKFYodm9pZCAwLCEwKSl9KX0pfSks'@; put 'YyksRik7ZmUuZXhwb3J0cz1mdW5jdGlvbihtZSl7dmFyIENlLEllPU9iamVjdC5jcmVhdGUoVywocyhDZT17fSxILHt2YWx1ZTptZSx3cml0YWJsZTohMH0pLHMoQ2Usdyx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLHMoQ2UsUyx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLHMoQ2UsTCx7'@; put 'dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLHMoQ2UsUix7dmFsdWU6bWUuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx3cml0YWJsZTohMH0pLHMoQ2UsVSx7dmFsdWU6ZnVuY3Rpb24ocWUsWCl7dmFyIGY9SWVbSF0ucmVhZCgpO2Y/KEllW3hdPW51bGwsSWVbd109bnVsbCxJZVtTXT1udWxs'@; put 'LHFlKFYoZiwhMSkpKTooSWVbd109cWUsSWVbU109WCl9LHdyaXRhYmxlOiEwfSksQ2UpKTtyZXR1cm4gSWVbeF09bnVsbCxDKG1lLGZ1bmN0aW9uKGtlKXtpZihrZSYmIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiE9PWtlLmNvZGUpe3ZhciBxZT1JZVtTXTtyZXR1cm4gbnVsbCE9PXFl'@; put 'JiYoSWVbeF09bnVsbCxJZVt3XT1udWxsLEllW1NdPW51bGwscWUoa2UpKSx2b2lkKEllW0xdPWtlKX12YXIgWD1JZVt3XTtudWxsIT09WCYmKEllW3hdPW51bGwsSWVbd109bnVsbCxJZVtTXT1udWxsLFgoVih2b2lkIDAsITApKSksSWVbUl09ITB9KSxtZS5vbigicmVhZGFibGUiLHouYmlu'@; put 'ZChudWxsLEllKSksSWV9fSw4MDM0NShmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB5KE4seil7dmFyIFk9T2JqZWN0LmtleXMoTik7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhOKTt6JiYoRj1GLmZpbHRl'@; put 'cihmdW5jdGlvbihXKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOLFcpLmVudW1lcmFibGV9KSksWS5wdXNoLmFwcGx5KFksRil9cmV0dXJuIFl9ZnVuY3Rpb24gYyhOKXtmb3IodmFyIHo9MTt6PGFyZ3VtZW50cy5sZW5ndGg7eisrKXt2YXIgWT1udWxsIT1hcmd1'@; put 'bWVudHNbel0/YXJndW1lbnRzW3pdOnt9O3olMj95KE9iamVjdChZKSwhMCkuZm9yRWFjaChmdW5jdGlvbihGKXtzKE4sRixZW0ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp'@; put 'cHRvcnMoWSkpOnkoT2JqZWN0KFkpKS5mb3JFYWNoKGZ1bmN0aW9uKEYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShOLEYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihZLEYpKX0pfXJldHVybiBOfWZ1bmN0aW9uIHMoTix6LFkpe3JldHVybih6PXcoeikpaW4gTj9PYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoTix6LHt2YWx1ZTpZLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6Tlt6XT1ZLE59ZnVuY3Rpb24gdihOLHope2Zvcih2YXIgWT0wO1k8ei5sZW5ndGg7WSsrKXt2YXIgRj16W1ldO0YuZW51bWVyYWJsZT1GLmVudW1lcmFibGV8fCExLEYu'@; put 'Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBGJiYoRi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4sdyhGLmtleSksRil9fWZ1bmN0aW9uIHcoTil7dmFyIHo9ZnVuY3Rpb24gUyhOLHope2lmKCJvYmplY3QiIT10eXBlb2YgTnx8bnVsbD09PU4pcmV0dXJuIE47dmFyIFk9'@; put 'TltTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PVkpe3ZhciBGPVkuY2FsbChOLHp8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBGKXJldHVybiBGO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9'@; put 'cmV0dXJuKCJzdHJpbmciPT09ej9TdHJpbmc6TnVtYmVyKShOKX0oTiwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB6P3o6U3RyaW5nKHopfXZhciBSPWgoNDgyODcpLkJ1ZmZlcixVPWgoMTUzNDApLmluc3BlY3QsSD1VJiZVLmN1c3RvbXx8Imluc3BlY3QiO2Z1bmN0aW9uIFYo'@; put 'Tix6LFkpe1IucHJvdG90eXBlLmNvcHkuY2FsbChOLHosWSl9ZmUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIE4oKXsoZnVuY3Rpb24gQShOLHope2lmKCEoTiBpbnN0YW5jZW9mIHopKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIp'@; put 'fSkodGhpcyxOKSx0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiBmdW5jdGlvbiBDKE4seixZKXt6JiZ2KE4ucHJvdG90eXBlLHopLFkmJnYoTixZKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTiwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oTixb'@; put 'e2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIEY9e2RhdGE6WSxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9Rjp0aGlzLmhlYWQ9Rix0aGlzLnRhaWw9RiwrK3RoaXMubGVuZ3RofX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIEY9'@; put 'e2RhdGE6WSxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPUYpLHRoaXMuaGVhZD1GLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciBZPXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlz'@; put 'LmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsWX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH19LHtrZXk6ImpvaW4iLHZhbHVlOmZ1bmN0'@; put 'aW9uKFkpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIEY9dGhpcy5oZWFkLFc9IiIrRi5kYXRhO0Y9Ri5uZXh0OylXKz1ZK0YuZGF0YTtyZXR1cm4gV319LHtrZXk6ImNvbmNhdCIsdmFsdWU6ZnVuY3Rpb24oWSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBSLmFsbG9j'@; put 'KDApO2Zvcih2YXIgRj1SLmFsbG9jVW5zYWZlKFk+Pj4wKSxXPXRoaXMuaGVhZCxxPTA7VzspVihXLmRhdGEsRixxKSxxKz1XLmRhdGEubGVuZ3RoLFc9Vy5uZXh0O3JldHVybiBGfX0se2tleToiY29uc3VtZSIsdmFsdWU6ZnVuY3Rpb24oWSxGKXt2YXIgVztyZXR1cm4gWTx0aGlzLmhlYWQu'@; put 'ZGF0YS5sZW5ndGg/KFc9dGhpcy5oZWFkLmRhdGEuc2xpY2UoMCxZKSx0aGlzLmhlYWQuZGF0YT10aGlzLmhlYWQuZGF0YS5zbGljZShZKSk6Vz1ZPT09dGhpcy5oZWFkLmRhdGEubGVuZ3RoP3RoaXMuc2hpZnQoKTpGP3RoaXMuX2dldFN0cmluZyhZKTp0aGlzLl9nZXRCdWZmZXIoWSksV319'@; put 'LHtrZXk6ImZpcnN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6Il9nZXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKFkpe3ZhciBGPXRoaXMuaGVhZCxXPTEscT1GLmRhdGE7Zm9yKFktPXEubGVuZ3RoO0Y9Ri5uZXh0Oyl7dmFyIHJlPUYuZGF0YSxtZT1Z'@; put 'PnJlLmxlbmd0aD9yZS5sZW5ndGg6WTtpZihxKz1tZT09PXJlLmxlbmd0aD9yZTpyZS5zbGljZSgwLFkpLDA9PT0oWS09bWUpKXttZT09PXJlLmxlbmd0aD8oKytXLHRoaXMuaGVhZD1GLm5leHQ/Ri5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPUYsRi5kYXRhPXJlLnNsaWNlKG1l'@; put 'KSk7YnJlYWt9KytXfXJldHVybiB0aGlzLmxlbmd0aC09VyxxfX0se2tleToiX2dldEJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIEY9Ui5hbGxvY1Vuc2FmZShZKSxXPXRoaXMuaGVhZCxxPTE7Zm9yKFcuZGF0YS5jb3B5KEYpLFktPVcuZGF0YS5sZW5ndGg7Vz1XLm5leHQ7KXt2YXIg'@; put 'cmU9Vy5kYXRhLG1lPVk+cmUubGVuZ3RoP3JlLmxlbmd0aDpZO2lmKHJlLmNvcHkoRixGLmxlbmd0aC1ZLDAsbWUpLDA9PT0oWS09bWUpKXttZT09PXJlLmxlbmd0aD8oKytxLHRoaXMuaGVhZD1XLm5leHQ/Vy5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPVcsVy5kYXRhPXJlLnNs'@; put 'aWNlKG1lKSk7YnJlYWt9KytxfXJldHVybiB0aGlzLmxlbmd0aC09cSxGfX0se2tleTpILHZhbHVlOmZ1bmN0aW9uKFksRil7cmV0dXJuIFUodGhpcyxjKGMoe30sRikse30se2RlcHRoOjAsY3VzdG9tSW5zcGVjdDohMX0pKX19XSksTn0oKX0sNzU4OTYoZmUsaixoKXsidXNlIHN0cmljdCI7'@; put 'dmFyIHk9aCg2NTYwNik7ZnVuY3Rpb24gcyhTLEwpe0MoUyxMKSxBKFMpfWZ1bmN0aW9uIEEoUyl7Uy5fd3JpdGFibGVTdGF0ZSYmIVMuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHxTLl9yZWFkYWJsZVN0YXRlJiYhUy5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fFMuZW1pdCgiY2xvc2Ui'@; put 'KX1mdW5jdGlvbiBDKFMsTCl7Uy5lbWl0KCJlcnJvciIsTCl9ZmUuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbiBjKFMsTCl7dmFyIFI9dGhpcztyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRo'@; put 'aXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPyhMP0woUyk6UyYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx5Lm5leHRUaWNrKEMsdGhpcyxTKSk6eS5uZXh0VGljayhD'@; put 'LHRoaXMsUykpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveShTfHxudWxsLGZ1bmN0aW9uKEgpeyFM'@; put 'JiZIP1IuX3dyaXRhYmxlU3RhdGU/Ui5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ/eS5uZXh0VGljayhBLFIpOihSLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx5Lm5leHRUaWNrKHMsUixIKSk6eS5uZXh0VGljayhzLFIsSCk6TD8oeS5uZXh0VGljayhBLFIpLEwoSCkpOnku'@; put 'bmV4dFRpY2soQSxSKX0pLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24gdigpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlz'@; put 'Ll9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUu'@; put 'ZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX0sZXJyb3JPckRlc3Ryb3k6ZnVuY3Rpb24gdyhTLEwpe3ZhciBSPVMuX3JlYWRh'@; put 'YmxlU3RhdGUseD1TLl93cml0YWJsZVN0YXRlO1ImJlIuYXV0b0Rlc3Ryb3l8fHgmJnguYXV0b0Rlc3Ryb3k/Uy5kZXN0cm95KEwpOlMuZW1pdCgiZXJyb3IiLEwpfX19LDg2MjM4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoODYwNDgpLkYuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xP'@; put 'U0U7ZnVuY3Rpb24gcygpe31mZS5leHBvcnRzPWZ1bmN0aW9uIHYoQyx3LFMpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB3KXJldHVybiB2KEMsbnVsbCx3KTt3fHwodz17fSksUz1mdW5jdGlvbiBjKEMpe3ZhciB3PSExO3JldHVybiBmdW5jdGlvbigpe2lmKCF3KXt3PSEwO2Zvcih2YXIgUz1h'@; put 'cmd1bWVudHMubGVuZ3RoLEw9bmV3IEFycmF5KFMpLFI9MDtSPFM7UisrKUxbUl09YXJndW1lbnRzW1JdO0MuYXBwbHkodGhpcyxMKX19fShTfHxzKTt2YXIgTD13LnJlYWRhYmxlfHwhMSE9PXcucmVhZGFibGUmJkMucmVhZGFibGUsUj13LndyaXRhYmxlfHwhMSE9PXcud3JpdGFibGUmJkMu'@; put 'd3JpdGFibGUseD1mdW5jdGlvbigpe0Mud3JpdGFibGV8fEgoKX0sVT1DLl93cml0YWJsZVN0YXRlJiZDLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkLEg9ZnVuY3Rpb24oKXtSPSExLFU9ITAsTHx8Uy5jYWxsKEMpfSxWPUMuX3JlYWRhYmxlU3RhdGUmJkMuX3JlYWRhYmxlU3RhdGUuZW5kRW1p'@; put 'dHRlZCxOPWZ1bmN0aW9uKCl7TD0hMSxWPSEwLFJ8fFMuY2FsbChDKX0sej1mdW5jdGlvbihxKXtTLmNhbGwoQyxxKX0sWT1mdW5jdGlvbigpe3ZhciBxO3JldHVybiBMJiYhVj8oKCFDLl9yZWFkYWJsZVN0YXRlfHwhQy5fcmVhZGFibGVTdGF0ZS5lbmRlZCkmJihxPW5ldyB5KSxTLmNhbGwo'@; put 'QyxxKSk6UiYmIVU/KCghQy5fd3JpdGFibGVTdGF0ZXx8IUMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpJiYocT1uZXcgeSksUy5jYWxsKEMscSkpOnZvaWQgMH0sRj1mdW5jdGlvbigpe0MucmVxLm9uKCJmaW5pc2giLEgpfTtyZXR1cm4gZnVuY3Rpb24gQShDKXtyZXR1cm4gQy5zZXRIZWFkZXIm'@; put 'JiJmdW5jdGlvbiI9PXR5cGVvZiBDLmFib3J0fShDKT8oQy5vbigiY29tcGxldGUiLEgpLEMub24oImFib3J0IixZKSxDLnJlcT9GKCk6Qy5vbigicmVxdWVzdCIsRikpOlImJiFDLl93cml0YWJsZVN0YXRlJiYoQy5vbigiZW5kIix4KSxDLm9uKCJjbG9zZSIseCkpLEMub24oImVuZCIsTiks'@; put 'Qy5vbigiZmluaXNoIixIKSwhMSE9PXcuZXJyb3ImJkMub24oImVycm9yIix6KSxDLm9uKCJjbG9zZSIsWSksZnVuY3Rpb24oKXtDLnJlbW92ZUxpc3RlbmVyKCJjb21wbGV0ZSIsSCksQy5yZW1vdmVMaXN0ZW5lcigiYWJvcnQiLFkpLEMucmVtb3ZlTGlzdGVuZXIoInJlcXVlc3QiLEYpLEMu'@; put 'cmVxJiZDLnJlcS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixIKSxDLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHgpLEMucmVtb3ZlTGlzdGVuZXIoImNsb3NlIix4KSxDLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLEgpLEMucmVtb3ZlTGlzdGVuZXIoImVuZCIsTiksQy5yZW1vdmVMaXN0ZW5lcigi'@; put 'ZXJyb3IiLHopLEMucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixZKX19fSw1NTE1NyhmZSl7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyIil9fSw1Nzc1OChmZSxqLGgpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgeSxzPWgoODYwNDgpLkYsQT1zLkVSUl9NSVNTSU5HX0FSR1Msdj1zLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIEMoSCl7aWYoSCl0aHJvdyBIfWZ1bmN0aW9uIEwoSCl7SCgpfWZ1bmN0aW9uIFIoSCxWKXtyZXR1cm4gSC5waXBlKFYpfWZlLmV4cG9ydHM9ZnVuY3Rpb24g'@; put 'VSgpe2Zvcih2YXIgSD1hcmd1bWVudHMubGVuZ3RoLFY9bmV3IEFycmF5KEgpLE49MDtOPEg7TisrKVZbTl09YXJndW1lbnRzW05dO3ZhciB6PWZ1bmN0aW9uIHgoSCl7cmV0dXJuIEgubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgSFtILmxlbmd0aC0xXT9ILnBvcCgpOkN9KFYpO2lmKEFy'@; put 'cmF5LmlzQXJyYXkoVlswXSkmJihWPVZbMF0pLFYubGVuZ3RoPDIpdGhyb3cgbmV3IEEoInN0cmVhbXMiKTt2YXIgWSxGPVYubWFwKGZ1bmN0aW9uKFcscSl7dmFyIHJlPXE8Vi5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24gUyhILFYsTix6KXt6PWZ1bmN0aW9uIGMoSCl7dmFyIFY9ITE7cmV0'@; put 'dXJuIGZ1bmN0aW9uKCl7Vnx8KFY9ITAsSC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fSh6KTt2YXIgWT0hMTtILm9uKCJjbG9zZSIsZnVuY3Rpb24oKXtZPSEwfSksdm9pZCAwPT09eSYmKHk9aCg4NjIzOCkpLHkoSCx7cmVhZGFibGU6Vix3cml0YWJsZTpOfSxmdW5jdGlvbihXKXtpZihX'@; put 'KXJldHVybiB6KFcpO1k9ITAseigpfSk7dmFyIEY9ITE7cmV0dXJuIGZ1bmN0aW9uKFcpe2lmKCFZJiYhRil7aWYoRj0hMCxmdW5jdGlvbiB3KEgpe3JldHVybiBILnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIEguYWJvcnR9KEgpKXJldHVybiBILmFib3J0KCk7aWYoImZ1bmN0aW9u'@; put 'Ij09dHlwZW9mIEguZGVzdHJveSlyZXR1cm4gSC5kZXN0cm95KCk7eihXfHxuZXcgdigicGlwZSIpKX19fShXLHJlLHE+MCxmdW5jdGlvbihDZSl7WXx8KFk9Q2UpLENlJiZGLmZvckVhY2goTCksIXJlJiYoRi5mb3JFYWNoKEwpLHooWSkpfSl9KTtyZXR1cm4gVi5yZWR1Y2UoUil9fSw2NTI5'@; put 'MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDg2MDQ4KS5GLkVSUl9JTlZBTElEX09QVF9WQUxVRTtmZS5leHBvcnRzPXtnZXRIaWdoV2F0ZXJNYXJrOmZ1bmN0aW9uIHMoQSx2LEMsdyl7dmFyIFM9ZnVuY3Rpb24gYyhBLHYsQyl7cmV0dXJuIG51bGwhPUEuaGlnaFdhdGVyTWFyaz9B'@; put 'LmhpZ2hXYXRlck1hcms6dj9BW0NdOm51bGx9KHYsdyxDKTtpZihudWxsIT1TKXtpZighaXNGaW5pdGUoUyl8fE1hdGguZmxvb3IoUykhPT1TfHxTPDApdGhyb3cgbmV3IHkodz9DOiJoaWdoV2F0ZXJNYXJrIixTKTtyZXR1cm4gTWF0aC5mbG9vcihTKX1yZXR1cm4gQS5vYmplY3RNb2RlPzE2'@; put 'OjE2Mzg0fX19LDQwMzQ1KGZlLGosaCl7ZmUuZXhwb3J0cz1oKDM3MDA3KS5FdmVudEVtaXR0ZXJ9LDkyMDYzKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1mdW5jdGlvbihoLHkpe2lmKHk9eS5zcGxpdCgiOiIpWzBdLCEoaD0raCkpcmV0dXJuITE7c3dpdGNoKHkpe2Nhc2UiaHR0cCI6'@; put 'Y2FzZSJ3cyI6cmV0dXJuIDgwIT09aDtjYXNlImh0dHBzIjpjYXNlIndzcyI6cmV0dXJuIDQ0MyE9PWg7Y2FzZSJmdHAiOnJldHVybiAyMSE9PWg7Y2FzZSJnb3BoZXIiOnJldHVybiA3MCE9PWg7Y2FzZSJmaWxlIjpyZXR1cm4hMX1yZXR1cm4gMCE9PWh9fSw2NjAxMShmZSxqLGgpeyJ1c2Ug'@; put 'c3RyaWN0Ijt2YXIgeT1oKDQ4Mjg3KS5CdWZmZXIsYz1oKDU2Njk4KSxzPWgoNTExNDcpLEE9bmV3IEFycmF5KDE2KSx2PVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwx'@; put 'LDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdLEM9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgs'@; put 'MTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0sdz1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2LDcs'@; put 'OSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUsNl0s'@; put 'Uz1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgs'@; put 'NSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0sTD1bMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSxSPVsxMzUyODI5OTI2LDE1NDg2MDM2ODQsMTgzNjA3MjY5MSwyMDUzOTk0MjE3LDBdO2Z1bmN0aW9uIHgoRixXKXtyZXR1cm4gRjw8'@; put 'V3xGPj4+MzItV31mdW5jdGlvbiBVKEYsVyxxLHJlLG1lLENlLEllLGtlKXtyZXR1cm4geChGKyhXXnFecmUpK0NlK0llfDAsa2UpK21lfDB9ZnVuY3Rpb24gSChGLFcscSxyZSxtZSxDZSxJZSxrZSl7cmV0dXJuIHgoRisoVyZxfH5XJnJlKStDZStJZXwwLGtlKSttZXwwfWZ1bmN0aW9uIFYo'@; put 'RixXLHEscmUsbWUsQ2UsSWUsa2Upe3JldHVybiB4KEYrKChXfH5xKV5yZSkrQ2UrSWV8MCxrZSkrbWV8MH1mdW5jdGlvbiBOKEYsVyxxLHJlLG1lLENlLEllLGtlKXtyZXR1cm4geChGKyhXJnJlfHEmfnJlKStDZStJZXwwLGtlKSttZXwwfWZ1bmN0aW9uIHooRixXLHEscmUsbWUsQ2UsSWUs'@; put 'a2Upe3JldHVybiB4KEYrKFdeKHF8fnJlKSkrQ2UrSWV8MCxrZSkrbWV8MH1mdW5jdGlvbiBZKCl7cy5jYWxsKHRoaXMsNjQpLHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUy'@; put 'MH1jKFkscyksWS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgRj1BLFc9MDtXPDE2OysrVylGW1ddPXRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKDQqVyk7Zm9yKHZhciBxPTB8dGhpcy5fYSxyZT0wfHRoaXMuX2IsbWU9MHx0aGlzLl9jLENlPTB8dGhpcy5fZCxJZT0wfHRo'@; put 'aXMuX2Usa2U9MHx0aGlzLl9hLHFlPTB8dGhpcy5fYixYPTB8dGhpcy5fYyxmPTB8dGhpcy5fZCxiPTB8dGhpcy5fZSxrPTA7azw4MDtrKz0xKXt2YXIgTSxCO2s8MTY/KE09VShxLHJlLG1lLENlLEllLEZbdltrXV0sTFswXSx3W2tdKSxCPXooa2UscWUsWCxmLGIsRltDW2tdXSxSWzBdLFNb'@; put 'a10pKTprPDMyPyhNPUgocSxyZSxtZSxDZSxJZSxGW3Zba11dLExbMV0sd1trXSksQj1OKGtlLHFlLFgsZixiLEZbQ1trXV0sUlsxXSxTW2tdKSk6azw0OD8oTT1WKHEscmUsbWUsQ2UsSWUsRlt2W2tdXSxMWzJdLHdba10pLEI9VihrZSxxZSxYLGYsYixGW0Nba11dLFJbMl0sU1trXSkpOms8'@; put 'NjQ/KE09TihxLHJlLG1lLENlLEllLEZbdltrXV0sTFszXSx3W2tdKSxCPUgoa2UscWUsWCxmLGIsRltDW2tdXSxSWzNdLFNba10pKTooTT16KHEscmUsbWUsQ2UsSWUsRlt2W2tdXSxMWzRdLHdba10pLEI9VShrZSxxZSxYLGYsYixGW0Nba11dLFJbNF0sU1trXSkpLHE9SWUsSWU9Q2UsQ2U9'@; put 'eChtZSwxMCksbWU9cmUscmU9TSxrZT1iLGI9ZixmPXgoWCwxMCksWD1xZSxxZT1CfXZhciBLPXRoaXMuX2IrbWUrZnwwO3RoaXMuX2I9dGhpcy5fYytDZStifDAsdGhpcy5fYz10aGlzLl9kK0llK2tlfDAsdGhpcy5fZD10aGlzLl9lK3ErcWV8MCx0aGlzLl9lPXRoaXMuX2ErcmUrWHwwLHRo'@; put 'aXMuX2E9S30sWS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0XT0xMjgsdGhpcy5fYmxvY2tPZmZzZXQrPTEsdGhpcy5fYmxvY2tPZmZzZXQ+NTYmJih0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNjQpLHRoaXMu'@; put 'X3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTApLHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLDYwKSx0'@; put 'aGlzLl91cGRhdGUoKTt2YXIgRj15LmFsbG9jP3kuYWxsb2MoMjApOm5ldyB5KDIwKTtyZXR1cm4gRi53cml0ZUludDMyTEUodGhpcy5fYSwwKSxGLndyaXRlSW50MzJMRSh0aGlzLl9iLDQpLEYud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksRi53cml0ZUludDMyTEUodGhpcy5fZCwxMiksRi53'@; put 'cml0ZUludDMyTEUodGhpcy5fZSwxNiksRn0sZmUuZXhwb3J0cz1ZfSw1MTE0NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkyODYxKS5CdWZmZXIsYz1oKDQ4NTM3KSxzPWgoMTEwNzcpLlRyYW5zZm9ybTtmdW5jdGlvbiB2KEMpe3MuY2FsbCh0aGlzKSx0aGlzLl9ibG9jaz15LmFs'@; put 'bG9jVW5zYWZlKEMpLHRoaXMuX2Jsb2NrU2l6ZT1DLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9aCg1NjY5OCkodixzKSx2LnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKEMsdyxTKXt2YXIgTD1udWxsO3RyeXt0aGlz'@; put 'LnVwZGF0ZShDLHcpfWNhdGNoKFIpe0w9Un1TKEwpfSx2LnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oQyl7dmFyIHc9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKFMpe3c9U31DKHcpfSx2LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oQyx3KXtpZih0aGlzLl9m'@; put 'aW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTtmb3IodmFyIFM9YyhDLHcpLEw9dGhpcy5fYmxvY2ssUj0wO3RoaXMuX2Jsb2NrT2Zmc2V0K1MubGVuZ3RoLVI+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgeD10aGlzLl9ibG9ja09mZnNldDt4PHRo'@; put 'aXMuX2Jsb2NrU2l6ZTspTFt4XT1TW1JdLHgrPTEsUis9MTt0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wfWZvcig7UjxTLmxlbmd0aDspTFt0aGlzLl9ibG9ja09mZnNldF09U1tSXSx0aGlzLl9ibG9ja09mZnNldCs9MSxSKz0xO2Zvcih2YXIgVT0wLEg9OCpTLmxlbmd0aDtI'@; put 'PjA7KytVKXRoaXMuX2xlbmd0aFtVXSs9SCwoSD10aGlzLl9sZW5ndGhbVV0vNDI5NDk2NzI5NnwwKT4wJiYodGhpcy5fbGVuZ3RoW1VdLT00Mjk0OTY3Mjk2KkgpO3JldHVybiB0aGlzfSx2LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIGlz'@; put 'IG5vdCBpbXBsZW1lbnRlZCIpfSx2LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oQyl7aWYodGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcigiRGlnZXN0IGFscmVhZHkgY2FsbGVkIik7dGhpcy5fZmluYWxpemVkPSEwO3ZhciB3PXRoaXMuX2RpZ2VzdCgpO3ZvaWQgMCE9PUMmJih3'@; put 'PXcudG9TdHJpbmcoQykpLHRoaXMuX2Jsb2NrLmZpbGwoMCksdGhpcy5fYmxvY2tPZmZzZXQ9MDtmb3IodmFyIFM9MDtTPDQ7KytTKXRoaXMuX2xlbmd0aFtTXT0wO3JldHVybiB3fSx2LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfZGlnZXN0IGlzIG5v'@; put 'dCBpbXBsZW1lbnRlZCIpfSxmZS5leHBvcnRzPXZ9LDQ4NTM3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPWgoMTUzNzcpLHM9dHlwZW9mIFVpbnQ4QXJyYXk8InUiLHY9cyYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmQXJyYXlCdWZmZXIuaXNWaWV3O2Zl'@; put 'LmV4cG9ydHM9ZnVuY3Rpb24oQyx3KXtpZigic3RyaW5nIj09dHlwZW9mIEN8fHkuaXNCdWZmZXIoQyl8fHMmJkMgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx2JiZ2KEMpKXJldHVybiBjKEMsdyk7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJkYXRhIiBhcmd1bWVudCBtdXN0IGJlIGEgc3Ry'@; put 'aW5nLCBhIEJ1ZmZlciwgYSBVaW50OEFycmF5LCBvciBhIERhdGFWaWV3Jyl9fSw1OTg2MChmZSl7dmFyIGo9e30udG9TdHJpbmc7ZmUuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihoKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1qLmNhbGwoaCl9fSw1MDMwOChmZSxqLGgpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgeT1oKDMzMjI1KSxjPU9iamVjdC5rZXlzfHxmdW5jdGlvbihVKXt2YXIgSD1bXTtmb3IodmFyIFYgaW4gVSlILnB1c2goVik7cmV0dXJuIEh9O2ZlLmV4cG9ydHM9TDt2YXIgcz1PYmplY3QuY3JlYXRlKGgoMTU2MjIpKTtzLmluaGVyaXRzPWgoNTY2OTgpO3ZhciBB'@; put 'PWgoMzE3MDYpLHY9aCgyMzk4KTtzLmluaGVyaXRzKEwsQSk7Zm9yKHZhciBDPWModi5wcm90b3R5cGUpLHc9MDt3PEMubGVuZ3RoO3crKyl7dmFyIFM9Q1t3XTtMLnByb3RvdHlwZVtTXXx8KEwucHJvdG90eXBlW1NdPXYucHJvdG90eXBlW1NdKX1mdW5jdGlvbiBMKFUpe2lmKCEodGhpcyBp'@; put 'bnN0YW5jZW9mIEwpKXJldHVybiBuZXcgTChVKTtBLmNhbGwodGhpcyxVKSx2LmNhbGwodGhpcyxVKSxVJiYhMT09PVUucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKSxVJiYhMT09PVUud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSx0aGlzLmFsbG93SGFsZk9wZW49ITAsVSYmITE9'@; put 'PT1VLmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93SGFsZk9wZW49ITEpLHRoaXMub25jZSgiZW5kIixSKX1mdW5jdGlvbiBSKCl7dGhpcy5hbGxvd0hhbGZPcGVufHx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHx5Lm5leHRUaWNrKHgsdGhpcyl9ZnVuY3Rpb24geChVKXtVLmVuZCgpfU9i'@; put 'amVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwi'@; put 'ZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0'@; put 'aW9uKFUpe3ZvaWQgMD09PXRoaXMuX3JlYWRhYmxlU3RhdGV8fHZvaWQgMD09PXRoaXMuX3dyaXRhYmxlU3RhdGV8fCh0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1VLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPVUpfX0pLEwucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9u'@; put 'KFUsSCl7dGhpcy5wdXNoKG51bGwpLHRoaXMuZW5kKCkseS5uZXh0VGljayhILFUpfX0sMTgxNTgoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1zO3ZhciB5PWgoMTU5NzIpLGM9T2JqZWN0LmNyZWF0ZShoKDE1NjIyKSk7ZnVuY3Rpb24gcyhBKXtpZighKHRoaXMgaW5zdGFuY2Vv'@; put 'ZiBzKSlyZXR1cm4gbmV3IHMoQSk7eS5jYWxsKHRoaXMsQSl9Yy5pbmhlcml0cz1oKDU2Njk4KSxjLmluaGVyaXRzKHMseSkscy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihBLHYsQyl7QyhudWxsLEEpfX0sMzE3MDYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNiks'@; put 'Yz1oKDMzMjI1KTtmZS5leHBvcnRzPXJlO3ZhciBBLHM9aCg1OTg2MCk7cmUuUmVhZGFibGVTdGF0ZT1xLGgoMzcwMDcpO3ZhciBDPWZ1bmN0aW9uKGFlLHhlKXtyZXR1cm4gYWUubGlzdGVuZXJzKHhlKS5sZW5ndGh9LHc9aCg2MTY2NyksUz1oKDIzMzkyKS5CdWZmZXIsTD0odHlwZW9mIGgu'@; put 'ZzwidSI/aC5nOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LFU9T2JqZWN0LmNyZWF0ZShoKDE1NjIyKSk7VS5pbmhlcml0cz1oKDU2Njk4KTt2YXIgSD1oKDg1MjQ4KSxWPXZvaWQgMDtWPUgmJkguZGVi'@; put 'dWdsb2c/SC5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBZLE49aCgyNjk3Miksej1oKDEwMzMwKTtVLmluaGVyaXRzKHJlLHcpO3ZhciBGPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2Z1bmN0aW9uIHEoYWUseGUpe3ZhciBqZT14ZSBp'@; put 'bnN0YW5jZW9mKEE9QXx8aCg1MDMwOCkpO3RoaXMub2JqZWN0TW9kZT0hIShhZT1hZXx8e30pLm9iamVjdE1vZGUsamUmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWFlLnJlYWRhYmxlT2JqZWN0TW9kZSk7dmFyIEFlPWFlLmhpZ2hXYXRlck1hcmssRGU9YWUucmVhZGFi'@; put 'bGVIaWdoV2F0ZXJNYXJrO3RoaXMuaGlnaFdhdGVyTWFyaz1BZXx8MD09PUFlP0FlOmplJiYoRGV8fDA9PT1EZSk/RGU6dGhpcy5vYmplY3RNb2RlPzE2OjE2Mzg0LHRoaXMuaGlnaFdhdGVyTWFyaz1NYXRoLmZsb29yKHRoaXMuaGlnaFdhdGVyTWFyayksdGhpcy5idWZmZXI9bmV3IE4sdGhp'@; put 'cy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJs'@; put 'ZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVmYXVsdEVuY29kaW5nPWFlLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5k'@; put 'ZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLGFlLmVuY29kaW5nJiYoWXx8KFk9aCg0NzQ3OSkuSSksdGhpcy5kZWNvZGVyPW5ldyBZKGFlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPWFlLmVuY29kaW5nKX1mdW5jdGlvbiByZShhZSl7aWYoQT1BfHxoKDUwMzA4KSwhKHRoaXMgaW5z'@; put 'dGFuY2VvZiByZSkpcmV0dXJuIG5ldyByZShhZSk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgcShhZSx0aGlzKSx0aGlzLnJlYWRhYmxlPSEwLGFlJiYoImZ1bmN0aW9uIj09dHlwZW9mIGFlLnJlYWQmJih0aGlzLl9yZWFkPWFlLnJlYWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBhZS5kZXN0cm95'@; put 'JiYodGhpcy5fZGVzdHJveT1hZS5kZXN0cm95KSksdy5jYWxsKHRoaXMpfWZ1bmN0aW9uIG1lKGFlLHhlLGplLEFlLERlKXt2YXIgZ2UsRmU9YWUuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIG51bGw9PT14ZT8oRmUucmVhZGluZz0hMSxmdW5jdGlvbiBiKGFlLHhlKXtpZigheGUuZW5kZWQpe2lm'@; put 'KHhlLmRlY29kZXIpe3ZhciBqZT14ZS5kZWNvZGVyLmVuZCgpO2plJiZqZS5sZW5ndGgmJih4ZS5idWZmZXIucHVzaChqZSkseGUubGVuZ3RoKz14ZS5vYmplY3RNb2RlPzE6amUubGVuZ3RoKX14ZS5lbmRlZD0hMCxrKGFlKX19KGFlLEZlKSk6KERlfHwoZ2U9ZnVuY3Rpb24gSWUoYWUseGUp'@; put 'e3ZhciBqZTtyZXR1cm4hZnVuY3Rpb24geChhZSl7cmV0dXJuIFMuaXNCdWZmZXIoYWUpfHxhZSBpbnN0YW5jZW9mIEx9KHhlKSYmInN0cmluZyIhPXR5cGVvZiB4ZSYmdm9pZCAwIT09eGUmJiFhZS5vYmplY3RNb2RlJiYoamU9bmV3IFR5cGVFcnJvcigiSW52YWxpZCBub24tc3RyaW5nL2J1'@; put 'ZmZlciBjaHVuayIpKSxqZX0oRmUseGUpKSxnZT9hZS5lbWl0KCJlcnJvciIsZ2UpOkZlLm9iamVjdE1vZGV8fHhlJiZ4ZS5sZW5ndGg+MD8oInN0cmluZyIhPXR5cGVvZiB4ZSYmIUZlLm9iamVjdE1vZGUmJk9iamVjdC5nZXRQcm90b3R5cGVPZih4ZSkhPT1TLnByb3RvdHlwZSYmKHhlPWZ1'@; put 'bmN0aW9uIFIoYWUpe3JldHVybiBTLmZyb20oYWUpfSh4ZSkpLEFlP0ZlLmVuZEVtaXR0ZWQ/YWUuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQiKSk6Q2UoYWUsRmUseGUsITApOkZlLmVuZGVkP2FlLmVtaXQoImVycm9yIixuZXcgRXJy'@; put 'b3IoInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIikpOihGZS5yZWFkaW5nPSExLEZlLmRlY29kZXImJiFqZT8oeGU9RmUuZGVjb2Rlci53cml0ZSh4ZSksRmUub2JqZWN0TW9kZXx8MCE9PXhlLmxlbmd0aD9DZShhZSxGZSx4ZSwhMSk6QihhZSxGZSkpOkNlKGFlLEZlLHhlLCExKSkpOkFlfHwo'@; put 'RmUucmVhZGluZz0hMSkpLGZ1bmN0aW9uIGtlKGFlKXtyZXR1cm4hYWUuZW5kZWQmJihhZS5uZWVkUmVhZGFibGV8fGFlLmxlbmd0aDxhZS5oaWdoV2F0ZXJNYXJrfHwwPT09YWUubGVuZ3RoKX0oRmUpfWZ1bmN0aW9uIENlKGFlLHhlLGplLEFlKXt4ZS5mbG93aW5nJiYwPT09eGUubGVuZ3Ro'@; put 'JiYheGUuc3luYz8oYWUuZW1pdCgiZGF0YSIsamUpLGFlLnJlYWQoMCkpOih4ZS5sZW5ndGgrPXhlLm9iamVjdE1vZGU/MTpqZS5sZW5ndGgsQWU/eGUuYnVmZmVyLnVuc2hpZnQoamUpOnhlLmJ1ZmZlci5wdXNoKGplKSx4ZS5uZWVkUmVhZGFibGUmJmsoYWUpKSxCKGFlLHhlKX1mdW5jdGlv'@; put 'biBmKGFlLHhlKXtyZXR1cm4gYWU8PTB8fDA9PT14ZS5sZW5ndGgmJnhlLmVuZGVkPzA6eGUub2JqZWN0TW9kZT8xOmFlIT1hZT94ZS5mbG93aW5nJiZ4ZS5sZW5ndGg/eGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6eGUubGVuZ3RoOihhZT54ZS5oaWdoV2F0ZXJNYXJrJiYoeGUuaGlnaFdh'@; put 'dGVyTWFyaz1mdW5jdGlvbiBYKGFlKXtyZXR1cm4gYWU+PTgzODg2MDg/YWU9ODM4ODYwODooYWUtLSxhZXw9YWU+Pj4xLGFlfD1hZT4+PjIsYWV8PWFlPj4+NCxhZXw9YWU+Pj44LGFlfD1hZT4+PjE2LGFlKyspLGFlfShhZSkpLGFlPD14ZS5sZW5ndGg/YWU6eGUuZW5kZWQ/eGUubGVuZ3Ro'@; put 'Oih4ZS5uZWVkUmVhZGFibGU9ITAsMCkpfWZ1bmN0aW9uIGsoYWUpe3ZhciB4ZT1hZS5fcmVhZGFibGVTdGF0ZTt4ZS5uZWVkUmVhZGFibGU9ITEseGUuZW1pdHRlZFJlYWRhYmxlfHwoVigiZW1pdFJlYWRhYmxlIix4ZS5mbG93aW5nKSx4ZS5lbWl0dGVkUmVhZGFibGU9ITAseGUuc3luYz9j'@; put 'Lm5leHRUaWNrKE0sYWUpOk0oYWUpKX1mdW5jdGlvbiBNKGFlKXtWKCJlbWl0IHJlYWRhYmxlIiksYWUuZW1pdCgicmVhZGFibGUiKSx1ZShhZSl9ZnVuY3Rpb24gQihhZSx4ZSl7eGUucmVhZGluZ01vcmV8fCh4ZS5yZWFkaW5nTW9yZT0hMCxjLm5leHRUaWNrKEssYWUseGUpKX1mdW5jdGlv'@; put 'biBLKGFlLHhlKXtmb3IodmFyIGplPXhlLmxlbmd0aDsheGUucmVhZGluZyYmIXhlLmZsb3dpbmcmJiF4ZS5lbmRlZCYmeGUubGVuZ3RoPHhlLmhpZ2hXYXRlck1hcmsmJihWKCJtYXliZVJlYWRNb3JlIHJlYWQgMCIpLGFlLnJlYWQoMCksamUhPT14ZS5sZW5ndGgpOylqZT14ZS5sZW5ndGg7'@; put 'eGUucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gRChhZSl7VigicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIiksYWUucmVhZCgwKX1mdW5jdGlvbiBJKGFlLHhlKXt4ZS5yZWFkaW5nfHwoVigicmVzdW1lIHJlYWQgMCIpLGFlLnJlYWQoMCkpLHhlLnJlc3VtZVNjaGVkdWxlZD0hMSx4ZS5hd2Fp'@; put 'dERyYWluPTAsYWUuZW1pdCgicmVzdW1lIiksdWUoYWUpLHhlLmZsb3dpbmcmJiF4ZS5yZWFkaW5nJiZhZS5yZWFkKDApfWZ1bmN0aW9uIHVlKGFlKXt2YXIgeGU9YWUuX3JlYWRhYmxlU3RhdGU7Zm9yKFYoImZsb3ciLHhlLmZsb3dpbmcpO3hlLmZsb3dpbmcmJm51bGwhPT1hZS5yZWFkKCk7'@; put 'KTt9ZnVuY3Rpb24gbmUoYWUseGUpe3JldHVybiAwPT09eGUubGVuZ3RoP251bGw6KHhlLm9iamVjdE1vZGU/amU9eGUuYnVmZmVyLnNoaWZ0KCk6IWFlfHxhZT49eGUubGVuZ3RoPyhqZT14ZS5kZWNvZGVyP3hlLmJ1ZmZlci5qb2luKCIiKToxPT09eGUuYnVmZmVyLmxlbmd0aD94ZS5idWZm'@; put 'ZXIuaGVhZC5kYXRhOnhlLmJ1ZmZlci5jb25jYXQoeGUubGVuZ3RoKSx4ZS5idWZmZXIuY2xlYXIoKSk6amU9ZnVuY3Rpb24gX2UoYWUseGUsamUpe3ZhciBBZTtyZXR1cm4gYWU8eGUuaGVhZC5kYXRhLmxlbmd0aD8oQWU9eGUuaGVhZC5kYXRhLnNsaWNlKDAsYWUpLHhlLmhlYWQuZGF0YT14'@; put 'ZS5oZWFkLmRhdGEuc2xpY2UoYWUpKTpBZT1hZT09PXhlLmhlYWQuZGF0YS5sZW5ndGg/eGUuc2hpZnQoKTpqZT9mdW5jdGlvbiBQZShhZSx4ZSl7dmFyIGplPXhlLmhlYWQsQWU9MSxEZT1qZS5kYXRhO2ZvcihhZS09RGUubGVuZ3RoO2plPWplLm5leHQ7KXt2YXIgRmU9amUuZGF0YSxnZT1h'@; put 'ZT5GZS5sZW5ndGg/RmUubGVuZ3RoOmFlO2lmKERlKz1nZT09PUZlLmxlbmd0aD9GZTpGZS5zbGljZSgwLGFlKSwwPT09KGFlLT1nZSkpe2dlPT09RmUubGVuZ3RoPygrK0FlLHhlLmhlYWQ9amUubmV4dD9qZS5uZXh0OnhlLnRhaWw9bnVsbCk6KHhlLmhlYWQ9amUsamUuZGF0YT1GZS5zbGlj'@; put 'ZShnZSkpO2JyZWFrfSsrQWV9cmV0dXJuIHhlLmxlbmd0aC09QWUsRGV9KGFlLHhlKTpmdW5jdGlvbiBvdChhZSx4ZSl7dmFyIGplPVMuYWxsb2NVbnNhZmUoYWUpLEFlPXhlLmhlYWQsRGU9MTtmb3IoQWUuZGF0YS5jb3B5KGplKSxhZS09QWUuZGF0YS5sZW5ndGg7QWU9QWUubmV4dDspe3Zh'@; put 'ciBGZT1BZS5kYXRhLGdlPWFlPkZlLmxlbmd0aD9GZS5sZW5ndGg6YWU7aWYoRmUuY29weShqZSxqZS5sZW5ndGgtYWUsMCxnZSksMD09PShhZS09Z2UpKXtnZT09PUZlLmxlbmd0aD8oKytEZSx4ZS5oZWFkPUFlLm5leHQ/QWUubmV4dDp4ZS50YWlsPW51bGwpOih4ZS5oZWFkPUFlLEFlLmRh'@; put 'dGE9RmUuc2xpY2UoZ2UpKTticmVha30rK0RlfXJldHVybiB4ZS5sZW5ndGgtPURlLGplfShhZSx4ZSksQWV9KGFlLHhlLmJ1ZmZlcix4ZS5kZWNvZGVyKSxqZSk7dmFyIGplfWZ1bmN0aW9uIGx0KGFlKXt2YXIgeGU9YWUuX3JlYWRhYmxlU3RhdGU7aWYoeGUubGVuZ3RoPjApdGhyb3cgbmV3'@; put 'IEVycm9yKCciZW5kUmVhZGFibGUoKSIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTt4ZS5lbmRFbWl0dGVkfHwoeGUuZW5kZWQ9ITAsYy5uZXh0VGljayhkdCx4ZSxhZSkpfWZ1bmN0aW9uIGR0KGFlLHhlKXshYWUuZW5kRW1pdHRlZCYmMD09PWFlLmxlbmd0aCYmKGFlLmVuZEVtaXR0'@; put 'ZWQ9ITAseGUucmVhZGFibGU9ITEseGUuZW1pdCgiZW5kIikpfWZ1bmN0aW9uIFJlKGFlLHhlKXtmb3IodmFyIGplPTAsQWU9YWUubGVuZ3RoO2plPEFlO2plKyspaWYoYWVbamVdPT09eGUpcmV0dXJuIGplO3JldHVybi0xfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZS5wcm90b3R5cGUsImRl'@; put 'c3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKGFlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9YWUp'@; put 'fX0pLHJlLnByb3RvdHlwZS5kZXN0cm95PXouZGVzdHJveSxyZS5wcm90b3R5cGUuX3VuZGVzdHJveT16LnVuZGVzdHJveSxyZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oYWUseGUpe3RoaXMucHVzaChudWxsKSx4ZShhZSl9LHJlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGFlLHhl'@; put 'KXt2YXIgQWUsamU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gamUub2JqZWN0TW9kZT9BZT0hMDoic3RyaW5nIj09dHlwZW9mIGFlJiYoKHhlPXhlfHxqZS5kZWZhdWx0RW5jb2RpbmcpIT09amUuZW5jb2RpbmcmJihhZT1TLmZyb20oYWUseGUpLHhlPSIiKSxBZT0hMCksbWUodGhpcyxh'@; put 'ZSx4ZSwhMSxBZSl9LHJlLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGFlKXtyZXR1cm4gbWUodGhpcyxhZSxudWxsLCEwLCExKX0scmUucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHJlLnByb3RvdHlwZS5z'@; put 'ZXRFbmNvZGluZz1mdW5jdGlvbihhZSl7cmV0dXJuIFl8fChZPWgoNDc0NzkpLkkpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj1uZXcgWShhZSksdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz1hZSx0aGlzfSxyZS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihhZSl7VigicmVhZCIs'@; put 'YWUpLGFlPXBhcnNlSW50KGFlLDEwKTt2YXIgeGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxqZT1hZTtpZigwIT09YWUmJih4ZS5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT1hZSYmeGUubmVlZFJlYWRhYmxlJiYoeGUubGVuZ3RoPj14ZS5oaWdoV2F0ZXJNYXJrfHx4ZS5lbmRlZCkpcmV0dXJuIFYo'@; put 'InJlYWQ6IGVtaXRSZWFkYWJsZSIseGUubGVuZ3RoLHhlLmVuZGVkKSwwPT09eGUubGVuZ3RoJiZ4ZS5lbmRlZD9sdCh0aGlzKTprKHRoaXMpLG51bGw7aWYoMD09PShhZT1mKGFlLHhlKSkmJnhlLmVuZGVkKXJldHVybiAwPT09eGUubGVuZ3RoJiZsdCh0aGlzKSxudWxsO3ZhciBEZSxBZT14'@; put 'ZS5uZWVkUmVhZGFibGU7cmV0dXJuIFYoIm5lZWQgcmVhZGFibGUiLEFlKSwoMD09PXhlLmxlbmd0aHx8eGUubGVuZ3RoLWFlPHhlLmhpZ2hXYXRlck1hcmspJiZWKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIsQWU9ITApLHhlLmVuZGVkfHx4ZS5yZWFkaW5nP1YoInJlYWRpbmcgb3Ig'@; put 'ZW5kZWQiLEFlPSExKTpBZSYmKFYoImRvIHJlYWQiKSx4ZS5yZWFkaW5nPSEwLHhlLnN5bmM9ITAsMD09PXhlLmxlbmd0aCYmKHhlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZCh4ZS5oaWdoV2F0ZXJNYXJrKSx4ZS5zeW5jPSExLHhlLnJlYWRpbmd8fChhZT1mKGplLHhlKSkpLG51bGw9'@; put 'PT0oRGU9YWU+MD9uZShhZSx4ZSk6bnVsbCk/KHhlLm5lZWRSZWFkYWJsZT0hMCxhZT0wKTp4ZS5sZW5ndGgtPWFlLDA9PT14ZS5sZW5ndGgmJih4ZS5lbmRlZHx8KHhlLm5lZWRSZWFkYWJsZT0hMCksamUhPT1hZSYmeGUuZW5kZWQmJmx0KHRoaXMpKSxudWxsIT09RGUmJnRoaXMuZW1pdCgi'@; put 'ZGF0YSIsRGUpLERlfSxyZS5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oYWUpe3RoaXMuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigiX3JlYWQoKSBpcyBub3QgaW1wbGVtZW50ZWQiKSl9LHJlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGFlLHhlKXt2YXIgamU9dGhpcyxBZT10aGlzLl9yZWFk'@; put 'YWJsZVN0YXRlO3N3aXRjaChBZS5waXBlc0NvdW50KXtjYXNlIDA6QWUucGlwZXM9YWU7YnJlYWs7Y2FzZSAxOkFlLnBpcGVzPVtBZS5waXBlcyxhZV07YnJlYWs7ZGVmYXVsdDpBZS5waXBlcy5wdXNoKGFlKX1BZS5waXBlc0NvdW50Kz0xLFYoInBpcGUgY291bnQ9JWQgb3B0cz0laiIsQWUu'@; put 'cGlwZXNDb3VudCx4ZSk7dmFyIEZlPXhlJiYhMT09PXhlLmVuZHx8YWU9PT15LnN0ZG91dHx8YWU9PT15LnN0ZGVycj9HdDpjZTtmdW5jdGlvbiBjZSgpe1YoIm9uZW5kIiksYWUuZW5kKCl9QWUuZW5kRW1pdHRlZD9jLm5leHRUaWNrKEZlKTpqZS5vbmNlKCJlbmQiLEZlKSxhZS5vbigidW5w'@; put 'aXBlIixmdW5jdGlvbiBnZShndCxYdCl7Vigib251bnBpcGUiKSxndD09PWplJiZYdCYmITE9PT1YdC5oYXNVbnBpcGVkJiYoWHQuaGFzVW5waXBlZD0hMCxmdW5jdGlvbiBKZSgpe1YoImNsZWFudXAiKSxhZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFJ0KSxhZS5yZW1vdmVMaXN0ZW5lcigi'@; put 'ZmluaXNoIixMdCksYWUucmVtb3ZlTGlzdGVuZXIoImRyYWluIixoZSksYWUucmVtb3ZlTGlzdGVuZXIoImVycm9yIiwkdCksYWUucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsZ2UpLGplLnJlbW92ZUxpc3RlbmVyKCJlbmQiLGNlKSxqZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixHdCksamUucmVt'@; put 'b3ZlTGlzdGVuZXIoImRhdGEiLEtlKSx3ZT0hMCxBZS5hd2FpdERyYWluJiYoIWFlLl93cml0YWJsZVN0YXRlfHxhZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pJiZoZSgpfSgpKX0pO3ZhciBoZT1mdW5jdGlvbiBHKGFlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeGU9YWUuX3JlYWRhYmxl'@; put 'U3RhdGU7VigicGlwZU9uRHJhaW4iLHhlLmF3YWl0RHJhaW4pLHhlLmF3YWl0RHJhaW4mJnhlLmF3YWl0RHJhaW4tLSwwPT09eGUuYXdhaXREcmFpbiYmQyhhZSwiZGF0YSIpJiYoeGUuZmxvd2luZz0hMCx1ZShhZSkpfX0oamUpO2FlLm9uKCJkcmFpbiIsaGUpO3ZhciB3ZT0hMSx0dD0hMTtm'@; put 'dW5jdGlvbiBLZShndCl7Vigib25kYXRhIiksdHQ9ITEsITE9PT1hZS53cml0ZShndCkmJiF0dCYmKCgxPT09QWUucGlwZXNDb3VudCYmQWUucGlwZXM9PT1hZXx8QWUucGlwZXNDb3VudD4xJiYtMSE9PVJlKEFlLnBpcGVzLGFlKSkmJiF3ZSYmKFYoImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBw'@; put 'YXVzZSIsQWUuYXdhaXREcmFpbiksQWUuYXdhaXREcmFpbisrLHR0PSEwKSxqZS5wYXVzZSgpKX1mdW5jdGlvbiAkdChndCl7Vigib25lcnJvciIsZ3QpLEd0KCksYWUucmVtb3ZlTGlzdGVuZXIoImVycm9yIiwkdCksMD09PUMoYWUsImVycm9yIikmJmFlLmVtaXQoImVycm9yIixndCl9ZnVu'@; put 'Y3Rpb24gUnQoKXthZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixMdCksR3QoKX1mdW5jdGlvbiBMdCgpe1YoIm9uZmluaXNoIiksYWUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixSdCksR3QoKX1mdW5jdGlvbiBHdCgpe1YoInVucGlwZSIpLGplLnVucGlwZShhZSl9cmV0dXJuIGplLm9uKCJk'@; put 'YXRhIixLZSksZnVuY3Rpb24gVyhhZSx4ZSxqZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGFlLnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gYWUucHJlcGVuZExpc3RlbmVyKHhlLGplKTthZS5fZXZlbnRzJiZhZS5fZXZlbnRzW3hlXT9zKGFlLl9ldmVudHNbeGVdKT9hZS5fZXZlbnRzW3hlXS51'@; put 'bnNoaWZ0KGplKTphZS5fZXZlbnRzW3hlXT1bamUsYWUuX2V2ZW50c1t4ZV1dOmFlLm9uKHhlLGplKX0oYWUsImVycm9yIiwkdCksYWUub25jZSgiY2xvc2UiLFJ0KSxhZS5vbmNlKCJmaW5pc2giLEx0KSxhZS5lbWl0KCJwaXBlIixqZSksQWUuZmxvd2luZ3x8KFYoInBpcGUgcmVzdW1lIiks'@; put 'amUucmVzdW1lKCkpLGFlfSxyZS5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKGFlKXt2YXIgeGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxqZT17aGFzVW5waXBlZDohMX07aWYoMD09PXhlLnBpcGVzQ291bnQpcmV0dXJuIHRoaXM7aWYoMT09PXhlLnBpcGVzQ291bnQpcmV0dXJuIGFlJiZhZSE9'@; put 'PXhlLnBpcGVzfHwoYWV8fChhZT14ZS5waXBlcykseGUucGlwZXM9bnVsbCx4ZS5waXBlc0NvdW50PTAseGUuZmxvd2luZz0hMSxhZSYmYWUuZW1pdCgidW5waXBlIix0aGlzLGplKSksdGhpcztpZighYWUpe3ZhciBBZT14ZS5waXBlcyxEZT14ZS5waXBlc0NvdW50O3hlLnBpcGVzPW51bGws'@; put 'eGUucGlwZXNDb3VudD0wLHhlLmZsb3dpbmc9ITE7Zm9yKHZhciBGZT0wO0ZlPERlO0ZlKyspQWVbRmVdLmVtaXQoInVucGlwZSIsdGhpcyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfXZhciBnZT1SZSh4ZS5waXBlcyxhZSk7cmV0dXJuLTE9PT1nZXx8KHhlLnBpcGVzLnNwbGljZShn'@; put 'ZSwxKSx4ZS5waXBlc0NvdW50LT0xLDE9PT14ZS5waXBlc0NvdW50JiYoeGUucGlwZXM9eGUucGlwZXNbMF0pLGFlLmVtaXQoInVucGlwZSIsdGhpcyxqZSkpLHRoaXN9LHJlLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1yZS5wcm90b3R5cGUub249ZnVuY3Rpb24oYWUseGUpe3ZhciBqZT13LnBy'@; put 'b3RvdHlwZS5vbi5jYWxsKHRoaXMsYWUseGUpO2lmKCJkYXRhIj09PWFlKSExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpO2Vsc2UgaWYoInJlYWRhYmxlIj09PWFlKXt2YXIgQWU9dGhpcy5fcmVhZGFibGVTdGF0ZTshQWUuZW5kRW1pdHRlZCYmIUFlLnJl'@; put 'YWRhYmxlTGlzdGVuaW5nJiYoQWUucmVhZGFibGVMaXN0ZW5pbmc9QWUubmVlZFJlYWRhYmxlPSEwLEFlLmVtaXR0ZWRSZWFkYWJsZT0hMSxBZS5yZWFkaW5nP0FlLmxlbmd0aCYmayh0aGlzKTpjLm5leHRUaWNrKEQsdGhpcykpfXJldHVybiBqZX0scmUucHJvdG90eXBlLnJlc3VtZT1mdW5j'@; put 'dGlvbigpe3ZhciBhZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBhZS5mbG93aW5nfHwoVigicmVzdW1lIiksYWUuZmxvd2luZz0hMCxmdW5jdGlvbiBwKGFlLHhlKXt4ZS5yZXN1bWVTY2hlZHVsZWR8fCh4ZS5yZXN1bWVTY2hlZHVsZWQ9ITAsYy5uZXh0VGljayhJLGFlLHhlKSl9KHRo'@; put 'aXMsYWUpKSx0aGlzfSxyZS5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gVigiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoVigicGF1c2UiKSx0aGlzLl9yZWFkYWJs'@; put 'ZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzfSxyZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihhZSl7dmFyIHhlPXRoaXMsamU9dGhpcy5fcmVhZGFibGVTdGF0ZSxBZT0hMTtmb3IodmFyIERlIGluIGFlLm9uKCJlbmQiLGZ1bmN0aW9uKCl7aWYoVigid3JhcHBl'@; put 'ZCBlbmQiKSxqZS5kZWNvZGVyJiYhamUuZW5kZWQpe3ZhciBnZT1qZS5kZWNvZGVyLmVuZCgpO2dlJiZnZS5sZW5ndGgmJnhlLnB1c2goZ2UpfXhlLnB1c2gobnVsbCl9KSxhZS5vbigiZGF0YSIsZnVuY3Rpb24oZ2Upe1YoIndyYXBwZWQgZGF0YSIpLGplLmRlY29kZXImJihnZT1qZS5kZWNv'@; put 'ZGVyLndyaXRlKGdlKSksamUub2JqZWN0TW9kZSYmbnVsbD09Z2V8fCEoamUub2JqZWN0TW9kZXx8Z2UmJmdlLmxlbmd0aCl8fHhlLnB1c2goZ2UpfHwoQWU9ITAsYWUucGF1c2UoKSl9KSxhZSl2b2lkIDA9PT10aGlzW0RlXSYmImZ1bmN0aW9uIj09dHlwZW9mIGFlW0RlXSYmKHRoaXNbRGVd'@; put 'PWZ1bmN0aW9uKGdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYWVbZ2VdLmFwcGx5KGFlLGFyZ3VtZW50cyl9fShEZSkpO2Zvcih2YXIgRmU9MDtGZTxGLmxlbmd0aDtGZSsrKWFlLm9uKEZbRmVdLHRoaXMuZW1pdC5iaW5kKHRoaXMsRltGZV0pKTtyZXR1cm4gdGhpcy5fcmVhZD1mdW5j'@; put 'dGlvbihnZSl7Vigid3JhcHBlZCBfcmVhZCIsZ2UpLEFlJiYoQWU9ITEsYWUucmVzdW1lKCkpfSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkocmUucHJvdG90eXBlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9y'@; put 'ZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSkscmUuX2Zyb21MaXN0PW5lfSwxNTk3MihmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUE7dmFyIHk9aCg1MDMwOCksYz1PYmplY3QuY3JlYXRlKGgoMTU2MjIpKTtmdW5jdGlvbiBzKHcsUyl7dmFyIEw9dGhpcy5fdHJhbnNmb3Jt'@; put 'U3RhdGU7TC50cmFuc2Zvcm1pbmc9ITE7dmFyIFI9TC53cml0ZWNiO2lmKCFSKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIndyaXRlIGNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyIpKTtMLndyaXRlY2h1bms9bnVsbCxMLndyaXRlY2I9bnVsbCxudWxsIT1TJiZ0'@; put 'aGlzLnB1c2goUyksUih3KTt2YXIgeD10aGlzLl9yZWFkYWJsZVN0YXRlO3gucmVhZGluZz0hMSwoeC5uZWVkUmVhZGFibGV8fHgubGVuZ3RoPHguaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoeC5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBBKHcpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEEp'@; put 'KXJldHVybiBuZXcgQSh3KTt5LmNhbGwodGhpcyx3KSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06cy5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0'@; put 'aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsdyYmKCJmdW5jdGlvbiI9PXR5cGVvZiB3LnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT13LnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIHcuZmx1c2gmJih0aGlzLl9m'@; put 'bHVzaD13LmZsdXNoKSksdGhpcy5vbigicHJlZmluaXNoIix2KX1mdW5jdGlvbiB2KCl7dmFyIHc9dGhpczsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fZmx1c2g/dGhpcy5fZmx1c2goZnVuY3Rpb24oUyxMKXtDKHcsUyxMKX0pOkModGhpcyxudWxsLG51bGwpfWZ1bmN0aW9uIEModyxTLEwp'@; put 'e2lmKFMpcmV0dXJuIHcuZW1pdCgiZXJyb3IiLFMpO2lmKG51bGwhPUwmJncucHVzaChMKSx3Ll93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCIpO2lmKHcuX3RyYW5zZm9ybVN0YXRlLnRyYW5z'@; put 'Zm9ybWluZyl0aHJvdyBuZXcgRXJyb3IoIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmciKTtyZXR1cm4gdy5wdXNoKG51bGwpfWMuaW5oZXJpdHM9aCg1NjY5OCksYy5pbmhlcml0cyhBLHkpLEEucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odyxTKXtyZXR1'@; put 'cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT0hMSx5LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyx3LFMpfSxBLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHcsUyxMKXt0aHJvdyBuZXcgRXJyb3IoIl90cmFuc2Zvcm0oKSBpcyBub3QgaW1wbGVtZW50ZWQiKX0s'@; put 'QS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHcsUyxMKXt2YXIgUj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZihSLndyaXRlY2I9TCxSLndyaXRlY2h1bms9dyxSLndyaXRlZW5jb2Rpbmc9UywhUi50cmFuc2Zvcm1pbmcpe3ZhciB4PXRoaXMuX3JlYWRhYmxlU3RhdGU7KFIubmVlZFRyYW5z'@; put 'Zm9ybXx8eC5uZWVkUmVhZGFibGV8fHgubGVuZ3RoPHguaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoeC5oaWdoV2F0ZXJNYXJrKX19LEEucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHcpe3ZhciBTPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGwhPT1TLndyaXRlY2h1bmsmJlMud3JpdGVj'@; put 'YiYmIVMudHJhbnNmb3JtaW5nPyhTLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oUy53cml0ZWNodW5rLFMud3JpdGVlbmNvZGluZyxTLmFmdGVyVHJhbnNmb3JtKSk6Uy5uZWVkVHJhbnNmb3JtPSEwfSxBLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbih3LFMpe3ZhciBMPXRo'@; put 'aXM7eS5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLHcsZnVuY3Rpb24oUil7UyhSKSxMLmVtaXQoImNsb3NlIil9KX19LDIzOTgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNiksYz1oKDMzMjI1KTtmdW5jdGlvbiBBKHApe3ZhciBJPXRoaXM7dGhpcy5uZXh0PW51bGws'@; put 'dGhpcy5lbnRyeT1udWxsLHRoaXMuZmluaXNoPWZ1bmN0aW9uKCl7IWZ1bmN0aW9uIEQocCxJLHVlKXt2YXIgbmU9cC5lbnRyeTtmb3IocC5lbnRyeT1udWxsO25lOyl7dmFyIF9lPW5lLmNhbGxiYWNrO0kucGVuZGluZ2NiLS0sX2UodWUpLG5lPW5lLm5leHR9SS5jb3JrZWRSZXF1ZXN0c0Zy'@; put 'ZWUubmV4dD1wfShJLHApfX1mZS5leHBvcnRzPUY7dmFyIEMsdj0heS5icm93c2VyJiZbInYwLjEwIiwidjAuOS4iXS5pbmRleE9mKHkudmVyc2lvbi5zbGljZSgwLDUpKT4tMT9zZXRJbW1lZGlhdGU6Yy5uZXh0VGljaztGLldyaXRhYmxlU3RhdGU9ejt2YXIgdz1PYmplY3QuY3JlYXRlKGgo'@; put 'MTU2MjIpKTt3LmluaGVyaXRzPWgoNTY2OTgpO3ZhciBZLFM9e2RlcHJlY2F0ZTpoKDk0NjQzKX0sTD1oKDYxNjY3KSxSPWgoMjMzOTIpLkJ1ZmZlcix4PSh0eXBlb2YgaC5nPCJ1Ij9oLmc6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnt9KS5VaW50OEFy'@; put 'cmF5fHxmdW5jdGlvbigpe30sVj1oKDEwMzMwKTtmdW5jdGlvbiBOKCl7fWZ1bmN0aW9uIHoocCxJKXtDPUN8fGgoNTAzMDgpO3ZhciB1ZT1JIGluc3RhbmNlb2YgQzt0aGlzLm9iamVjdE1vZGU9ISEocD1wfHx7fSkub2JqZWN0TW9kZSx1ZSYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVj'@; put 'dE1vZGV8fCEhcC53cml0YWJsZU9iamVjdE1vZGUpO3ZhciBuZT1wLmhpZ2hXYXRlck1hcmssX2U9cC53cml0YWJsZUhpZ2hXYXRlck1hcms7dGhpcy5oaWdoV2F0ZXJNYXJrPW5lfHwwPT09bmU/bmU6dWUmJihfZXx8MD09PV9lKT9fZTp0aGlzLm9iamVjdE1vZGU/MTY6MTYzODQsdGhpcy5o'@; put 'aWdoV2F0ZXJNYXJrPU1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29kZVN0cmluZ3M9'@; put 'ISghMT09PXAuZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZhdWx0RW5jb2Rpbmc9cC5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRl'@; put 'PWZ1bmN0aW9uKGx0KXshZnVuY3Rpb24gcWUocCxJKXt2YXIgdWU9cC5fd3JpdGFibGVTdGF0ZSxuZT11ZS5zeW5jLF9lPXVlLndyaXRlY2I7aWYoZnVuY3Rpb24ga2UocCl7cC53cml0aW5nPSExLHAud3JpdGVjYj1udWxsLHAubGVuZ3RoLT1wLndyaXRlbGVuLHAud3JpdGVsZW49MH0odWUp'@; put 'LEkpIWZ1bmN0aW9uIEllKHAsSSx1ZSxuZSxfZSl7LS1JLnBlbmRpbmdjYix1ZT8oYy5uZXh0VGljayhfZSxuZSksYy5uZXh0VGljayhLLHAsSSkscC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAscC5lbWl0KCJlcnJvciIsbmUpKTooX2UobmUpLHAuX3dyaXRhYmxlU3RhdGUuZXJy'@; put 'b3JFbWl0dGVkPSEwLHAuZW1pdCgiZXJyb3IiLG5lKSxLKHAsSSkpfShwLHVlLG5lLEksX2UpO2Vsc2V7dmFyIFBlPWsodWUpOyFQZSYmIXVlLmNvcmtlZCYmIXVlLmJ1ZmZlclByb2Nlc3NpbmcmJnVlLmJ1ZmZlcmVkUmVxdWVzdCYmYihwLHVlKSxuZT92KFgscCx1ZSxQZSxfZSk6WChwLHVl'@; put 'LFBlLF9lKX19KEksbHQpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEs'@; put 'dGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBBKHRoaXMpfWZ1bmN0aW9uIEYocCl7aWYoQz1DfHxoKDUwMzA4KSwhKFkuY2FsbChGLHRoaXMpfHx0aGlzIGluc3RhbmNlb2YgQykpcmV0dXJuIG5ldyBGKHApO3RoaXMuX3dyaXRhYmxlU3Rh'@; put 'dGU9bmV3IHoocCx0aGlzKSx0aGlzLndyaXRhYmxlPSEwLHAmJigiZnVuY3Rpb24iPT10eXBlb2YgcC53cml0ZSYmKHRoaXMuX3dyaXRlPXAud3JpdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBwLndyaXRldiYmKHRoaXMuX3dyaXRldj1wLndyaXRldiksImZ1bmN0aW9uIj09dHlwZW9mIHAuZGVz'@; put 'dHJveSYmKHRoaXMuX2Rlc3Ryb3k9cC5kZXN0cm95KSwiZnVuY3Rpb24iPT10eXBlb2YgcC5maW5hbCYmKHRoaXMuX2ZpbmFsPXAuZmluYWwpKSxMLmNhbGwodGhpcyl9ZnVuY3Rpb24gQ2UocCxJLHVlLG5lLF9lLFBlLG90KXtJLndyaXRlbGVuPW5lLEkud3JpdGVjYj1vdCxJLndyaXRpbmc9'@; put 'ITAsSS5zeW5jPSEwLHVlP3AuX3dyaXRldihfZSxJLm9ud3JpdGUpOnAuX3dyaXRlKF9lLFBlLEkub253cml0ZSksSS5zeW5jPSExfWZ1bmN0aW9uIFgocCxJLHVlLG5lKXt1ZXx8ZnVuY3Rpb24gZihwLEkpezA9PT1JLmxlbmd0aCYmSS5uZWVkRHJhaW4mJihJLm5lZWREcmFpbj0hMSxwLmVt'@; put 'aXQoImRyYWluIikpfShwLEkpLEkucGVuZGluZ2NiLS0sbmUoKSxLKHAsSSl9ZnVuY3Rpb24gYihwLEkpe0kuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgdWU9SS5idWZmZXJlZFJlcXVlc3Q7aWYocC5fd3JpdGV2JiZ1ZSYmdWUubmV4dCl7dmFyIF9lPW5ldyBBcnJheShJLmJ1ZmZlcmVkUmVx'@; put 'dWVzdENvdW50KSxQZT1JLmNvcmtlZFJlcXVlc3RzRnJlZTtQZS5lbnRyeT11ZTtmb3IodmFyIG90PTAsbHQ9ITA7dWU7KV9lW290XT11ZSx1ZS5pc0J1Znx8KGx0PSExKSx1ZT11ZS5uZXh0LG90Kz0xO19lLmFsbEJ1ZmZlcnM9bHQsQ2UocCxJLCEwLEkubGVuZ3RoLF9lLCIiLFBlLmZpbmlz'@; put 'aCksSS5wZW5kaW5nY2IrKyxJLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxQZS5uZXh0PyhJLmNvcmtlZFJlcXVlc3RzRnJlZT1QZS5uZXh0LFBlLm5leHQ9bnVsbCk6SS5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IEEoSSksSS5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDt1ZTsp'@; put 'e3ZhciBkdD11ZS5jaHVuaztpZihDZShwLEksITEsSS5vYmplY3RNb2RlPzE6ZHQubGVuZ3RoLGR0LHVlLmVuY29kaW5nLHVlLmNhbGxiYWNrKSx1ZT11ZS5uZXh0LEkuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxJLndyaXRpbmcpYnJlYWt9bnVsbD09PXVlJiYoSS5sYXN0QnVmZmVyZWRSZXF1'@; put 'ZXN0PW51bGwpfUkuYnVmZmVyZWRSZXF1ZXN0PXVlLEkuYnVmZmVyUHJvY2Vzc2luZz0hMX1mdW5jdGlvbiBrKHApe3JldHVybiBwLmVuZGluZyYmMD09PXAubGVuZ3RoJiZudWxsPT09cC5idWZmZXJlZFJlcXVlc3QmJiFwLmZpbmlzaGVkJiYhcC53cml0aW5nfWZ1bmN0aW9uIE0ocCxJKXtw'@; put 'Ll9maW5hbChmdW5jdGlvbih1ZSl7SS5wZW5kaW5nY2ItLSx1ZSYmcC5lbWl0KCJlcnJvciIsdWUpLEkucHJlZmluaXNoZWQ9ITAscC5lbWl0KCJwcmVmaW5pc2giKSxLKHAsSSl9KX1mdW5jdGlvbiBLKHAsSSl7dmFyIHVlPWsoSSk7cmV0dXJuIHVlJiYoZnVuY3Rpb24gQihwLEkpeyFJLnBy'@; put 'ZWZpbmlzaGVkJiYhSS5maW5hbENhbGxlZCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBwLl9maW5hbD8oSS5wZW5kaW5nY2IrKyxJLmZpbmFsQ2FsbGVkPSEwLGMubmV4dFRpY2soTSxwLEkpKTooSS5wcmVmaW5pc2hlZD0hMCxwLmVtaXQoInByZWZpbmlzaCIpKSl9KHAsSSksMD09PUkucGVuZGlu'@; put 'Z2NiJiYoSS5maW5pc2hlZD0hMCxwLmVtaXQoImZpbmlzaCIpKSksdWV9dy5pbmhlcml0cyhGLEwpLHoucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgST10aGlzLmJ1ZmZlcmVkUmVxdWVzdCx1ZT1bXTtJOyl1ZS5wdXNoKEkpLEk9SS5uZXh0O3JldHVybiB1ZX0sZnVu'@; put 'Y3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6Uy5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUu'@; put 'Z2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8oWT1GdW5jdGlvbi5wcm90'@; put 'b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRixTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKHApe3JldHVybiEhWS5jYWxsKHRoaXMscCl8fHRoaXM9PT1GJiZwJiZwLl93cml0YWJsZVN0YXRlIGluc3RhbmNlb2Ygen19KSk6WT1mdW5j'@; put 'dGlvbihwKXtyZXR1cm4gcCBpbnN0YW5jZW9mIHRoaXN9LEYucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSl9LEYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHAsSSx1ZSl7dmFyIG5lPXRo'@; put 'aXMuX3dyaXRhYmxlU3RhdGUsX2U9ITEsUGU9IW5lLm9iamVjdE1vZGUmJmZ1bmN0aW9uIEgocCl7cmV0dXJuIFIuaXNCdWZmZXIocCl8fHAgaW5zdGFuY2VvZiB4fShwKTtyZXR1cm4gUGUmJiFSLmlzQnVmZmVyKHApJiYocD1mdW5jdGlvbiBVKHApe3JldHVybiBSLmZyb20ocCl9KHApKSwi'@; put 'ZnVuY3Rpb24iPT10eXBlb2YgSSYmKHVlPUksST1udWxsKSxQZT9JPSJidWZmZXIiOkl8fChJPW5lLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIHVlJiYodWU9TiksbmUuZW5kZWQ/ZnVuY3Rpb24gVyhwLEkpe3ZhciB1ZT1uZXcgRXJyb3IoIndyaXRlIGFmdGVyIGVuZCIp'@; put 'O3AuZW1pdCgiZXJyb3IiLHVlKSxjLm5leHRUaWNrKEksdWUpfSh0aGlzLHVlKTooUGV8fGZ1bmN0aW9uIHEocCxJLHVlLG5lKXt2YXIgX2U9ITAsUGU9ITE7cmV0dXJuIG51bGw9PT11ZT9QZT1uZXcgVHlwZUVycm9yKCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbSIpOiJz'@; put 'dHJpbmciIT10eXBlb2YgdWUmJnZvaWQgMCE9PXVlJiYhSS5vYmplY3RNb2RlJiYoUGU9bmV3IFR5cGVFcnJvcigiSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuayIpKSxQZSYmKHAuZW1pdCgiZXJyb3IiLFBlKSxjLm5leHRUaWNrKG5lLFBlKSxfZT0hMSksX2V9KHRoaXMsbmUscCx1'@; put 'ZSkpJiYobmUucGVuZGluZ2NiKyssX2U9ZnVuY3Rpb24gbWUocCxJLHVlLG5lLF9lLFBlKXtpZighdWUpe3ZhciBvdD1mdW5jdGlvbiByZShwLEksdWUpe3JldHVybiFwLm9iamVjdE1vZGUmJiExIT09cC5kZWNvZGVTdHJpbmdzJiYic3RyaW5nIj09dHlwZW9mIEkmJihJPVIuZnJvbShJLHVl'@; put 'KSksSX0oSSxuZSxfZSk7bmUhPT1vdCYmKHVlPSEwLF9lPSJidWZmZXIiLG5lPW90KX12YXIgbHQ9SS5vYmplY3RNb2RlPzE6bmUubGVuZ3RoO0kubGVuZ3RoKz1sdDt2YXIgZHQ9SS5sZW5ndGg8SS5oaWdoV2F0ZXJNYXJrO2lmKGR0fHwoSS5uZWVkRHJhaW49ITApLEkud3JpdGluZ3x8SS5j'@; put 'b3JrZWQpe3ZhciBSZT1JLmxhc3RCdWZmZXJlZFJlcXVlc3Q7SS5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazpuZSxlbmNvZGluZzpfZSxpc0J1Zjp1ZSxjYWxsYmFjazpQZSxuZXh0Om51bGx9LFJlP1JlLm5leHQ9SS5sYXN0QnVmZmVyZWRSZXF1ZXN0OkkuYnVmZmVyZWRSZXF1ZXN0PUku'@; put 'bGFzdEJ1ZmZlcmVkUmVxdWVzdCxJLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgQ2UocCxJLCExLGx0LG5lLF9lLFBlKTtyZXR1cm4gZHR9KHRoaXMsbmUsUGUscCxJLHVlKSksX2V9LEYucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsr'@; put 'fSxGLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgcD10aGlzLl93cml0YWJsZVN0YXRlO3AuY29ya2VkJiYocC5jb3JrZWQtLSwhcC53cml0aW5nJiYhcC5jb3JrZWQmJiFwLmJ1ZmZlclByb2Nlc3NpbmcmJnAuYnVmZmVyZWRSZXF1ZXN0JiZiKHRoaXMscCkpfSxGLnByb3RvdHlw'@; put 'ZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oSSl7aWYoInN0cmluZyI9PXR5cGVvZiBJJiYoST1JLnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJh'@; put 'dyJdLmluZGV4T2YoKEkrIiIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0kpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1JLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlw'@; put 'ZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLEYucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihwLEksdWUpe3VlKG5ldyBFcnJvcigiX3dyaXRlKCkgaXMgbm90'@; put 'IGltcGxlbWVudGVkIikpfSxGLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsRi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHAsSSx1ZSl7dmFyIG5lPXRoaXMuX3dyaXRhYmxlU3RhdGU7ImZ1bmN0aW9uIj09dHlwZW9mIHA/KHVlPXAscD1udWxsLEk9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIEkm'@; put 'Jih1ZT1JLEk9bnVsbCksbnVsbCE9cCYmdGhpcy53cml0ZShwLEkpLG5lLmNvcmtlZCYmKG5lLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLG5lLmVuZGluZ3x8ZnVuY3Rpb24gRyhwLEksdWUpe0kuZW5kaW5nPSEwLEsocCxJKSx1ZSYmKEkuZmluaXNoZWQ/Yy5uZXh0VGljayh1ZSk6cC5vbmNl'@; put 'KCJmaW5pc2giLHVlKSksSS5lbmRlZD0hMCxwLndyaXRhYmxlPSExfSh0aGlzLG5lLHVlKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFi'@; put 'bGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihwKXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9cCl9fSksRi5wcm90b3R5cGUuZGVzdHJveT1WLmRlc3Ryb3ksRi5wcm90b3R5cGUuX3VuZGVzdHJveT1WLnVuZGVzdHJveSxGLnByb3Rv'@; put 'dHlwZS5fZGVzdHJveT1mdW5jdGlvbihwLEkpe3RoaXMuZW5kKCksSShwKX19LDI2OTcyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciBjPWgoMjMzOTIpLkJ1ZmZlcixzPWgoMzUzOTQpO2Z1bmN0aW9uIEEodixDLHcpe3YuY29weShDLHcpfWZlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlv'@; put 'biB2KCl7KGZ1bmN0aW9uIHkodixDKXtpZighKHYgaW5zdGFuY2VvZiBDKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsdiksdGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH1yZXR1cm4gdi5w'@; put 'cm90b3R5cGUucHVzaD1mdW5jdGlvbih3KXt2YXIgUz17ZGF0YTp3LG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1TOnRoaXMuaGVhZD1TLHRoaXMudGFpbD1TLCsrdGhpcy5sZW5ndGh9LHYucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24odyl7dmFyIFM9e2RhdGE6'@; put 'dyxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPVMpLHRoaXMuaGVhZD1TLCsrdGhpcy5sZW5ndGh9LHYucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdz10aGlzLmhlYWQuZGF0YTtyZXR1cm4gdGhpcy5oZWFkPTE9'@; put 'PT10aGlzLmxlbmd0aD90aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQubmV4dCwtLXRoaXMubGVuZ3RoLHd9fSx2LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfSx2LnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHcpe2lmKDA9'@; put 'PT10aGlzLmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIFM9dGhpcy5oZWFkLEw9IiIrUy5kYXRhO1M9Uy5uZXh0OylMKz13K1MuZGF0YTtyZXR1cm4gTH0sdi5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKHcpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4gYy5hbGxvYygwKTtmb3IodmFyIFM9'@; put 'Yy5hbGxvY1Vuc2FmZSh3Pj4+MCksTD10aGlzLmhlYWQsUj0wO0w7KUEoTC5kYXRhLFMsUiksUis9TC5kYXRhLmxlbmd0aCxMPUwubmV4dDtyZXR1cm4gU30sdn0oKSxzJiZzLmluc3BlY3QmJnMuaW5zcGVjdC5jdXN0b20mJihmZS5leHBvcnRzLnByb3RvdHlwZVtzLmluc3BlY3QuY3VzdG9t'@; put 'XT1mdW5jdGlvbigpe3ZhciB2PXMuaW5zcGVjdCh7bGVuZ3RoOnRoaXMubGVuZ3RofSk7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSsiICIrdn0pfSwxMDMzMChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDMzMjI1KTtmdW5jdGlvbiBBKHYsQyl7di5lbWl0KCJlcnJvciIsQyl9'@; put 'ZmUuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbiBjKHYsQyl7dmFyIHc9dGhpcztyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPyhDP0Modik6'@; put 'diYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx5Lm5leHRUaWNrKEEsdGhpcyx2KSk6eS5uZXh0VGljayhBLHRoaXMsdikpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRl'@; put 'JiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveSh2fHxudWxsLGZ1bmN0aW9uKFIpeyFDJiZSP3cuX3dyaXRhYmxlU3RhdGU/dy5fd3JpdGFibGVTdGF0'@; put 'ZS5lcnJvckVtaXR0ZWR8fCh3Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx5Lm5leHRUaWNrKEEsdyxSKSk6eS5uZXh0VGljayhBLHcsUik6QyYmQyhSKX0pLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24gcygpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0'@; put 'YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0h'@; put 'MSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRo'@; put 'aXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX19fSw2MTY2NyhmZSxqLGgpe2ZlLmV4cG9ydHM9aCgzNzAwNykuRXZlbnRFbWl0dGVyfSwyMzM5MihmZSxqLGgpe3ZhciB5PWgoNDgyODcpLGM9eS5CdWZmZXI7ZnVuY3Rpb24gcyh2LEMpe2Zvcih2YXIgdyBpbiB2KUNbd109dlt3'@; put 'XX1mdW5jdGlvbiBBKHYsQyx3KXtyZXR1cm4gYyh2LEMsdyl9Yy5mcm9tJiZjLmFsbG9jJiZjLmFsbG9jVW5zYWZlJiZjLmFsbG9jVW5zYWZlU2xvdz9mZS5leHBvcnRzPXk6KHMoeSxqKSxqLkJ1ZmZlcj1BKSxzKGMsQSksQS5mcm9tPWZ1bmN0aW9uKHYsQyx3KXtpZigibnVtYmVyIj09dHlw'@; put 'ZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYyh2LEMsdyl9LEEuYWxsb2M9ZnVuY3Rpb24odixDLHcpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVt'@; put 'YmVyIik7dmFyIFM9Yyh2KTtyZXR1cm4gdm9pZCAwIT09Qz8ic3RyaW5nIj09dHlwZW9mIHc/Uy5maWxsKEMsdyk6Uy5maWxsKEMpOlMuZmlsbCgwKSxTfSxBLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVu'@; put 'dCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGModil9LEEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHkuU2xvd0J1ZmZlcih2KX19LDExMDc3'@; put 'KGZlLGosaCl7KGo9ZmUuZXhwb3J0cz1oKDMxNzA2KSkuU3RyZWFtPWosai5SZWFkYWJsZT1qLGouV3JpdGFibGU9aCgyMzk4KSxqLkR1cGxleD1oKDUwMzA4KSxqLlRyYW5zZm9ybT1oKDE1OTcyKSxqLlBhc3NUaHJvdWdoPWgoMTgxNTgpfSw0NzQ3OShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2'@; put 'YXIgeT1oKDM2MjI5KS5CdWZmZXIsYz15LmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKEYpe3N3aXRjaCgoRj0iIitGKSYmRi50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6'@; put 'Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIHYoRil7dmFyIFc7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24gQShGKXt2YXIgVz1mdW5jdGlvbiBzKEYpe2lmKCFGKXJldHVy'@; put 'biJ1dGY4Ijtmb3IodmFyIFc7Oylzd2l0Y2goRil7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4idXRmOCI7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiJ1dGYxNmxlIjtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVy'@; put 'biJsYXRpbjEiO2Nhc2UiYmFzZTY0IjpjYXNlImFzY2lpIjpjYXNlImhleCI6cmV0dXJuIEY7ZGVmYXVsdDppZihXKXJldHVybjtGPSgiIitGKS50b0xvd2VyQ2FzZSgpLFc9ITB9fShGKTtpZigic3RyaW5nIiE9dHlwZW9mIFcmJih5LmlzRW5jb2Rpbmc9PT1jfHwhYyhGKSkpdGhyb3cgbmV3'@; put 'IEVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0YpO3JldHVybiBXfHxGfShGKSx0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjE2bGUiOnRoaXMudGV4dD1VLHRoaXMuZW5kPUgsVz00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD1MLFc9NDticmVhaztjYXNlImJhc2U2NCI6dGhpcy50'@; put 'ZXh0PVYsdGhpcy5lbmQ9TixXPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT16LHZvaWQodGhpcy5lbmQ9WSl9dGhpcy5sYXN0TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj15LmFsbG9jVW5zYWZlKFcpfWZ1bmN0aW9uIEMoRil7cmV0dXJuIEY8PTEyNz8w'@; put 'OkY+PjU9PTY/MjpGPj40PT0xND8zOkY+PjM9PTMwPzQ6Rj4+Nj09Mj8tMTotMn1mdW5jdGlvbiBMKEYpe3ZhciBXPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQscT1mdW5jdGlvbiBTKEYsVyl7aWYoMTI4IT0oMTkyJldbMF0pKXJldHVybiBGLmxhc3ROZWVkPTAsIlx1ZmZmZCI7aWYo'@; put 'Ri5sYXN0TmVlZD4xJiZXLmxlbmd0aD4xKXtpZigxMjghPSgxOTImV1sxXSkpcmV0dXJuIEYubGFzdE5lZWQ9MSwiXHVmZmZkIjtpZihGLmxhc3ROZWVkPjImJlcubGVuZ3RoPjImJjEyOCE9KDE5MiZXWzJdKSlyZXR1cm4gRi5sYXN0TmVlZD0yLCJcdWZmZmQifX0odGhpcyxGKTtyZXR1cm4g'@; put 'dm9pZCAwIT09cT9xOnRoaXMubGFzdE5lZWQ8PUYubGVuZ3RoPyhGLmNvcHkodGhpcy5sYXN0Q2hhcixXLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpKTooRi5jb3B5KHRoaXMubGFzdENoYXIsVywwLEYubGVu'@; put 'Z3RoKSx2b2lkKHRoaXMubGFzdE5lZWQtPUYubGVuZ3RoKSl9ZnVuY3Rpb24gVShGLFcpe2lmKChGLmxlbmd0aC1XKSUyPT0wKXt2YXIgcT1GLnRvU3RyaW5nKCJ1dGYxNmxlIixXKTtpZihxKXt2YXIgcmU9cS5jaGFyQ29kZUF0KHEubGVuZ3RoLTEpO2lmKHJlPj01NTI5NiYmcmU8PTU2MzE5'@; put 'KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1GW0YubGVuZ3RoLTFdLHEuc2xpY2UoMCwtMSl9cmV0dXJuIHF9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0y'@; put 'LHRoaXMubGFzdENoYXJbMF09RltGLmxlbmd0aC0xXSxGLnRvU3RyaW5nKCJ1dGYxNmxlIixXLEYubGVuZ3RoLTEpfWZ1bmN0aW9uIEgoRil7dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9XK3RoaXMubGFzdENoYXIudG9TdHJpbmcoInV0'@; put 'ZjE2bGUiLDAsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCk6V31mdW5jdGlvbiBWKEYsVyl7dmFyIHE9KEYubGVuZ3RoLVcpJTM7cmV0dXJuIDA9PT1xP0YudG9TdHJpbmcoImJhc2U2NCIsVyk6KHRoaXMubGFzdE5lZWQ9My1xLHRoaXMubGFzdFRvdGFsPTMsMT09PXE/dGhpcy5sYXN0'@; put 'Q2hhclswXT1GW0YubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1GW0YubGVuZ3RoLTFdKSxGLnRvU3RyaW5nKCJiYXNlNjQiLFcsRi5sZW5ndGgtcSkpfWZ1bmN0aW9uIE4oRil7dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShG'@; put 'KToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9XK3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQpOld9ZnVuY3Rpb24geihGKXtyZXR1cm4gRi50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBZKEYpe3JldHVybiBGJiZGLmxlbmd0aD90aGlz'@; put 'LndyaXRlKEYpOiIifWouST12LHYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEYpe2lmKDA9PT1GLmxlbmd0aClyZXR1cm4iIjt2YXIgVyxxO2lmKHRoaXMubGFzdE5lZWQpe2lmKHZvaWQgMD09PShXPXRoaXMuZmlsbExhc3QoRikpKXJldHVybiIiO3E9dGhpcy5sYXN0TmVlZCx0aGlzLmxh'@; put 'c3ROZWVkPTB9ZWxzZSBxPTA7cmV0dXJuIHE8Ri5sZW5ndGg/Vz9XK3RoaXMudGV4dChGLHEpOnRoaXMudGV4dChGLHEpOld8fCIifSx2LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24geChGKXt2YXIgVz1GJiZGLmxlbmd0aD90aGlzLndyaXRlKEYpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP1cr'@; put 'Ilx1ZmZmZCI6V30sdi5wcm90b3R5cGUudGV4dD1mdW5jdGlvbiBSKEYsVyl7dmFyIHE9ZnVuY3Rpb24gdyhGLFcscSl7dmFyIHJlPVcubGVuZ3RoLTE7aWYocmU8cSlyZXR1cm4gMDt2YXIgbWU9QyhXW3JlXSk7cmV0dXJuIG1lPj0wPyhtZT4wJiYoRi5sYXN0TmVlZD1tZS0xKSxtZSk6LS1y'@; put 'ZTxxfHwtMj09PW1lPzA6KG1lPUMoV1tyZV0pKT49MD8obWU+MCYmKEYubGFzdE5lZWQ9bWUtMiksbWUpOi0tcmU8cXx8LTI9PT1tZT8wOihtZT1DKFdbcmVdKSk+PTA/KG1lPjAmJigyPT09bWU/bWU9MDpGLmxhc3ROZWVkPW1lLTMpLG1lKTowfSh0aGlzLEYsVyk7aWYoIXRoaXMubGFzdE5l'@; put 'ZWQpcmV0dXJuIEYudG9TdHJpbmcoInV0ZjgiLFcpO3RoaXMubGFzdFRvdGFsPXE7dmFyIHJlPUYubGVuZ3RoLShxLXRoaXMubGFzdE5lZWQpO3JldHVybiBGLmNvcHkodGhpcy5sYXN0Q2hhciwwLHJlKSxGLnRvU3RyaW5nKCJ1dGY4IixXLHJlKX0sdi5wcm90b3R5cGUuZmlsbExhc3Q9ZnVu'@; put 'Y3Rpb24oRil7aWYodGhpcy5sYXN0TmVlZDw9Ri5sZW5ndGgpcmV0dXJuIEYuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7'@; put 'Ri5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLEYubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT1GLmxlbmd0aH19LDM2MjI5KGZlLGosaCl7dmFyIHk9aCg0ODI4NyksYz15LkJ1ZmZlcjtmdW5jdGlvbiBzKHYsQyl7Zm9yKHZhciB3IGluIHYpQ1t3XT12'@; put 'W3ddfWZ1bmN0aW9uIEEodixDLHcpe3JldHVybiBjKHYsQyx3KX1jLmZyb20mJmMuYWxsb2MmJmMuYWxsb2NVbnNhZmUmJmMuYWxsb2NVbnNhZmVTbG93P2ZlLmV4cG9ydHM9eToocyh5LGopLGouQnVmZmVyPUEpLHMoYyxBKSxBLmZyb209ZnVuY3Rpb24odixDLHcpe2lmKCJudW1iZXIiPT10'@; put 'eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBjKHYsQyx3KX0sQS5hbGxvYz1mdW5jdGlvbih2LEMsdyl7aWYoIm51bWJlciIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBu'@; put 'dW1iZXIiKTt2YXIgUz1jKHYpO3JldHVybiB2b2lkIDAhPT1DPyJzdHJpbmciPT10eXBlb2Ygdz9TLmZpbGwoQyx3KTpTLmZpbGwoQyk6Uy5maWxsKDApLFN9LEEuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odil7aWYoIm51bWJlciIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3Vt'@; put 'ZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYyh2KX0sQS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odil7aWYoIm51bWJlciIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4geS5TbG93QnVmZmVyKHYpfX0sOTI4'@; put 'NjEoZmUsaixoKXt2YXIgeT1oKDQ4Mjg3KSxjPXkuQnVmZmVyO2Z1bmN0aW9uIHModixDKXtmb3IodmFyIHcgaW4gdilDW3ddPXZbd119ZnVuY3Rpb24gQSh2LEMsdyl7cmV0dXJuIGModixDLHcpfWMuZnJvbSYmYy5hbGxvYyYmYy5hbGxvY1Vuc2FmZSYmYy5hbGxvY1Vuc2FmZVNsb3c/ZmUu'@; put 'ZXhwb3J0cz15OihzKHksaiksai5CdWZmZXI9QSksQS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjLnByb3RvdHlwZSkscyhjLEEpLEEuZnJvbT1mdW5jdGlvbih2LEMsdyl7aWYoIm51bWJlciI9PXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEg'@; put 'bnVtYmVyIik7cmV0dXJuIGModixDLHcpfSxBLmFsbG9jPWZ1bmN0aW9uKHYsQyx3KXtpZigibnVtYmVyIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBTPWModik7cmV0dXJuIHZvaWQgMCE9PUM/InN0cmluZyI9PXR5cGVv'@; put 'ZiB3P1MuZmlsbChDLHcpOlMuZmlsbChDKTpTLmZpbGwoMCksU30sQS5hbGxvY1Vuc2FmZT1mdW5jdGlvbih2KXtpZigibnVtYmVyIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBjKHYpfSxBLmFsbG9jVW5zYWZlU2xv'@; put 'dz1mdW5jdGlvbih2KXtpZigibnVtYmVyIiE9dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiB5LlNsb3dCdWZmZXIodil9fSw5OTcyMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDM2NTU2KSxjPWgoMTQwMzUpLHM9'@; put 'eSgiUmVnRXhwLnByb3RvdHlwZS5leGVjIiksQT1oKDY5Njc1KTtmZS5leHBvcnRzPWZ1bmN0aW9uKEMpe2lmKCFjKEMpKXRocm93IG5ldyBBKCJgcmVnZXhgIG11c3QgYmUgYSBSZWdFeHAiKTtyZXR1cm4gZnVuY3Rpb24oUyl7cmV0dXJuIG51bGwhPT1zKEMsUyl9fX0sOTY4OTcoZmUsaixo'@; put 'KXsidXNlIHN0cmljdCI7dmFyIHk9aCg3MDQ1MyksYz1oKDMwMDQxKSxzPWgoMzA1OTIpKCksQT1oKDc1Nzk1KSx2PWgoNjk2NzUpLEM9eSgiJU1hdGguZmxvb3IlIik7ZmUuZXhwb3J0cz1mdW5jdGlvbihTLEwpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTKXRocm93IG5ldyB2KCJgZm5gIGlz'@; put 'IG5vdCBhIGZ1bmN0aW9uIik7aWYoIm51bWJlciIhPXR5cGVvZiBMfHxMPDB8fEw+NDI5NDk2NzI5NXx8QyhMKSE9PUwpdGhyb3cgbmV3IHYoImBsZW5ndGhgIG11c3QgYmUgYSBwb3NpdGl2ZSAzMi1iaXQgaW50ZWdlciIpO3ZhciBSPWFyZ3VtZW50cy5sZW5ndGg+MiYmISFhcmd1bWVudHNb'@; put 'Ml0seD0hMCxVPSEwO2lmKCJsZW5ndGgiaW4gUyYmQSl7dmFyIEg9QShTLCJsZW5ndGgiKTtIJiYhSC5jb25maWd1cmFibGUmJih4PSExKSxIJiYhSC53cml0YWJsZSYmKFU9ITEpfXJldHVybih4fHxVfHwhUikmJihzP2MoUywibGVuZ3RoIixMLCEwLCEwKTpjKFMsImxlbmd0aCIsTCkpLFN9'@; put 'fSw5MDM5MihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkyODYxKS5CdWZmZXIsYz1oKDE1Mzc3KTtmdW5jdGlvbiBzKEEsdil7dGhpcy5fYmxvY2s9eS5hbGxvYyhBKSx0aGlzLl9maW5hbFNpemU9dix0aGlzLl9ibG9ja1NpemU9QSx0aGlzLl9sZW49MH1zLnByb3RvdHlwZS51cGRh'@; put 'dGU9ZnVuY3Rpb24oQSx2KXtBPWMoQSx2fHwidXRmOCIpO2Zvcih2YXIgQz10aGlzLl9ibG9jayx3PXRoaXMuX2Jsb2NrU2l6ZSxTPUEubGVuZ3RoLEw9dGhpcy5fbGVuLFI9MDtSPFM7KXtmb3IodmFyIHg9TCV3LFU9TWF0aC5taW4oUy1SLHcteCksSD0wO0g8VTtIKyspQ1t4K0hdPUFbUitI'@; put 'XTtSKz1VLChMKz1VKSV3PT09MCYmdGhpcy5fdXBkYXRlKEMpfXJldHVybiB0aGlzLl9sZW4rPVMsdGhpc30scy5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKEEpe3ZhciB2PXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbdl09MTI4LHRoaXMuX2Jsb2NrLmZpbGwoMCx2'@; put 'KzEpLHY+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIEM9OCp0aGlzLl9sZW47aWYoQzw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKEMsdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIHc9'@; put 'KDQyOTQ5NjcyOTUmQyk+Pj4wO3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoKEMtdykvNDI5NDk2NzI5Nix0aGlzLl9ibG9ja1NpemUtOCksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRSh3LHRoaXMuX2Jsb2NrU2l6ZS00KX10aGlzLl91cGRhdGUodGhpcy5fYmxvY2spO3ZhciBMPXRoaXMu'@; put 'X2hhc2goKTtyZXR1cm4gQT9MLnRvU3RyaW5nKEEpOkx9LHMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl91cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcyIpfSxmZS5leHBvcnRzPXN9LDYyODAyKGZlLGosaCl7InVzZSBzdHJpY3Qi'@; put 'O2ZlLmV4cG9ydHM9ZnVuY3Rpb24oYyl7dmFyIHM9Yy50b0xvd2VyQ2FzZSgpLEE9ZmUuZXhwb3J0c1tzXTtpZighQSl0aHJvdyBuZXcgRXJyb3IocysiIGlzIG5vdCBzdXBwb3J0ZWQgKHdlIGFjY2VwdCBwdWxsIHJlcXVlc3RzKSIpO3JldHVybiBuZXcgQX0sZmUuZXhwb3J0cy5zaGE9aCgy'@; put 'NzgxNiksZmUuZXhwb3J0cy5zaGExPWgoNjM3MzcpLGZlLmV4cG9ydHMuc2hhMjI0PWgoMjY3MTApLGZlLmV4cG9ydHMuc2hhMjU2PWgoMjQxMDcpLGZlLmV4cG9ydHMuc2hhMzg0PWgoMzI4MjcpLGZlLmV4cG9ydHMuc2hhNTEyPWgoODI4OTApfSwyNzgxNihmZSxqLGgpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgeT1oKDU2Njk4KSxjPWgoOTAzOTIpLHM9aCg5Mjg2MSkuQnVmZmVyLEE9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSx2PW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24gQygpe3RoaXMuaW5pdCgpLHRoaXMuX3c9dixjLmNhbGwodGhpcyw2NCw1Nil9'@; put 'ZnVuY3Rpb24gdyhSKXtyZXR1cm4gUjw8NXxSPj4+Mjd9ZnVuY3Rpb24gUyhSKXtyZXR1cm4gUjw8MzB8Uj4+PjJ9ZnVuY3Rpb24gTChSLHgsVSxIKXtyZXR1cm4gMD09PVI/eCZVfH54Jkg6Mj09PVI/eCZVfHgmSHxVJkg6eF5VXkh9eShDLGMpLEMucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24o'@; put 'KXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LEMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oUil7Zm9yKHZhciB4PXRoaXMuX3csVT0wfHRo'@; put 'aXMuX2EsSD0wfHRoaXMuX2IsVj0wfHRoaXMuX2MsTj0wfHRoaXMuX2Qsej0wfHRoaXMuX2UsWT0wO1k8MTY7KytZKXhbWV09Ui5yZWFkSW50MzJCRSg0KlkpO2Zvcig7WTw4MDsrK1kpeFtZXT14W1ktM11eeFtZLThdXnhbWS0xNF1eeFtZLTE2XTtmb3IodmFyIEY9MDtGPDgwOysrRil7dmFy'@; put 'IFc9fn4oRi8yMCkscT13KFUpK0woVyxILFYsTikreit4W0ZdK0FbV118MDt6PU4sTj1WLFY9UyhIKSxIPVUsVT1xfXRoaXMuX2E9VSt0aGlzLl9hfDAsdGhpcy5fYj1IK3RoaXMuX2J8MCx0aGlzLl9jPVYrdGhpcy5fY3wwLHRoaXMuX2Q9Tit0aGlzLl9kfDAsdGhpcy5fZT16K3RoaXMuX2V8'@; put 'MH0sQy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgUj1zLmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gUi53cml0ZUludDMyQkUoMHx0aGlzLl9hLDApLFIud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxSLndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksUi53cml0ZUludDMyQkUoMHx0'@; put 'aGlzLl9kLDEyKSxSLndyaXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLFJ9LGZlLmV4cG9ydHM9Q30sNjM3MzcoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg1NjY5OCksYz1oKDkwMzkyKSxzPWgoOTI4NjEpLkJ1ZmZlcixBPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgs'@; put 'LTg5OTQ5NzUxNF0sdj1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIEMoKXt0aGlzLmluaXQoKSx0aGlzLl93PXYsYy5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIHcoeCl7cmV0dXJuIHg8PDF8eD4+PjMxfWZ1bmN0aW9uIFMoeCl7cmV0dXJuIHg8PDV8eD4+PjI3fWZ1bmN0aW9uIEwoeCl7cmV0'@; put 'dXJuIHg8PDMwfHg+Pj4yfWZ1bmN0aW9uIFIoeCxVLEgsVil7cmV0dXJuIDA9PT14P1UmSHx+VSZWOjI9PT14P1UmSHxVJlZ8SCZWOlVeSF5WfXkoQyxjKSxDLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhp'@; put 'cy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMCx0aGlzfSxDLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHgpe2Zvcih2YXIgVT10aGlzLl93LEg9MHx0aGlzLl9hLFY9MHx0aGlzLl9iLE49MHx0aGlzLl9jLHo9MHx0aGlzLl9kLFk9MHx0aGlz'@; put 'Ll9lLEY9MDtGPDE2OysrRilVW0ZdPXgucmVhZEludDMyQkUoNCpGKTtmb3IoO0Y8ODA7KytGKVVbRl09dyhVW0YtM11eVVtGLThdXlVbRi0xNF1eVVtGLTE2XSk7Zm9yKHZhciBXPTA7Vzw4MDsrK1cpe3ZhciBxPX5+KFcvMjApLHJlPVMoSCkrUihxLFYsTix6KStZK1VbV10rQVtxXXwwO1k9'@; put 'eix6PU4sTj1MKFYpLFY9SCxIPXJlfXRoaXMuX2E9SCt0aGlzLl9hfDAsdGhpcy5fYj1WK3RoaXMuX2J8MCx0aGlzLl9jPU4rdGhpcy5fY3wwLHRoaXMuX2Q9eit0aGlzLl9kfDAsdGhpcy5fZT1ZK3RoaXMuX2V8MH0sQy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgeD1zLmFsbG9j'@; put 'VW5zYWZlKDIwKTtyZXR1cm4geC53cml0ZUludDMyQkUoMHx0aGlzLl9hLDApLHgud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSx4LndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCkseC53cml0ZUludDMyQkUoMHx0aGlzLl9kLDEyKSx4LndyaXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLHh9LGZl'@; put 'LmV4cG9ydHM9Q30sMjY3MTAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg1NjY5OCksYz1oKDI0MTA3KSxzPWgoOTAzOTIpLEE9aCg5Mjg2MSkuQnVmZmVyLHY9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBDKCl7dGhpcy5pbml0KCksdGhpcy5fdz12LHMuY2FsbCh0aGlzLDY0LDU2KX15'@; put 'KEMsYyksQy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTMyMzgzNzEwMzIsdGhpcy5fYj05MTQxNTA2NjMsdGhpcy5fYz04MTI3MDI5OTksdGhpcy5fZD00MTQ0OTEyNjk3LHRoaXMuX2U9NDI5MDc3NTg1Nyx0aGlzLl9mPTE3NTA2MDMwMjUsdGhpcy5fZz0xNjk0'@; put 'MDc2ODM5LHRoaXMuX2g9MzIwNDA3NTQyOCx0aGlzfSxDLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciB3PUEuYWxsb2NVbnNhZmUoMjgpO3JldHVybiB3LndyaXRlSW50MzJCRSh0aGlzLl9hLDApLHcud3JpdGVJbnQzMkJFKHRoaXMuX2IsNCksdy53cml0ZUludDMyQkUodGhpcy5f'@; put 'Yyw4KSx3LndyaXRlSW50MzJCRSh0aGlzLl9kLDEyKSx3LndyaXRlSW50MzJCRSh0aGlzLl9lLDE2KSx3LndyaXRlSW50MzJCRSh0aGlzLl9mLDIwKSx3LndyaXRlSW50MzJCRSh0aGlzLl9nLDI0KSx3fSxmZS5leHBvcnRzPUN9LDI0MTA3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgo'@; put 'NTY2OTgpLGM9aCg5MDM5Mikscz1oKDkyODYxKS5CdWZmZXIsQT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5'@; put 'ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgs'@; put 'MzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5'@; put 'NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1'@; put 'LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSx2PW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24gQygpe3RoaXMuaW5pdCgpLHRoaXMuX3c9dixjLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gdyhILFYsTil7cmV0dXJuIE5e'@; put 'SCYoVl5OKX1mdW5jdGlvbiBTKEgsVixOKXtyZXR1cm4gSCZWfE4mKEh8Vil9ZnVuY3Rpb24gTChIKXtyZXR1cm4oSD4+PjJ8SDw8MzApXihIPj4+MTN8SDw8MTkpXihIPj4+MjJ8SDw8MTApfWZ1bmN0aW9uIFIoSCl7cmV0dXJuKEg+Pj42fEg8PDI2KV4oSD4+PjExfEg8PDIxKV4oSD4+PjI1'@; put 'fEg8PDcpfWZ1bmN0aW9uIHgoSCl7cmV0dXJuKEg+Pj43fEg8PDI1KV4oSD4+PjE4fEg8PDE0KV5IPj4+M31mdW5jdGlvbiBVKEgpe3JldHVybihIPj4+MTd8SDw8MTUpXihIPj4+MTl8SDw8MTMpXkg+Pj4xMH15KEMsYyksQy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlz'@; put 'Ll9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAxMzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkzMTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sQy5wcm90b3R5cGUu'@; put 'X3VwZGF0ZT1mdW5jdGlvbihIKXtmb3IodmFyIFY9dGhpcy5fdyxOPTB8dGhpcy5fYSx6PTB8dGhpcy5fYixZPTB8dGhpcy5fYyxGPTB8dGhpcy5fZCxXPTB8dGhpcy5fZSxxPTB8dGhpcy5fZixyZT0wfHRoaXMuX2csbWU9MHx0aGlzLl9oLENlPTA7Q2U8MTY7KytDZSlWW0NlXT1ILnJlYWRJ'@; put 'bnQzMkJFKDQqQ2UpO2Zvcig7Q2U8NjQ7KytDZSlWW0NlXT1VKFZbQ2UtMl0pK1ZbQ2UtN10reChWW0NlLTE1XSkrVltDZS0xNl18MDtmb3IodmFyIEllPTA7SWU8NjQ7KytJZSl7dmFyIGtlPW1lK1IoVykrdyhXLHEscmUpK0FbSWVdK1ZbSWVdfDAscWU9TChOKStTKE4seixZKXwwO21lPXJl'@; put 'LHJlPXEscT1XLFc9RitrZXwwLEY9WSxZPXosej1OLE49a2UrcWV8MH10aGlzLl9hPU4rdGhpcy5fYXwwLHRoaXMuX2I9eit0aGlzLl9ifDAsdGhpcy5fYz1ZK3RoaXMuX2N8MCx0aGlzLl9kPUYrdGhpcy5fZHwwLHRoaXMuX2U9Vyt0aGlzLl9lfDAsdGhpcy5fZj1xK3RoaXMuX2Z8MCx0aGlz'@; put 'Ll9nPXJlK3RoaXMuX2d8MCx0aGlzLl9oPW1lK3RoaXMuX2h8MH0sQy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgSD1zLmFsbG9jVW5zYWZlKDMyKTtyZXR1cm4gSC53cml0ZUludDMyQkUodGhpcy5fYSwwKSxILndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLEgud3JpdGVJbnQzMkJF'@; put 'KHRoaXMuX2MsOCksSC53cml0ZUludDMyQkUodGhpcy5fZCwxMiksSC53cml0ZUludDMyQkUodGhpcy5fZSwxNiksSC53cml0ZUludDMyQkUodGhpcy5fZiwyMCksSC53cml0ZUludDMyQkUodGhpcy5fZywyNCksSC53cml0ZUludDMyQkUodGhpcy5faCwyOCksSH0sZmUuZXhwb3J0cz1DfSwz'@; put 'MjgyNyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDU2Njk4KSxjPWgoODI4OTApLHM9aCg5MDM5MiksQT1oKDkyODYxKS5CdWZmZXIsdj1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiBDKCl7dGhpcy5pbml0KCksdGhpcy5fdz12LHMuY2FsbCh0aGlzLDEyOCwxMTIpfXkoQyxjKSxDLnBy'@; put 'b3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTM0MTgwNzAzNjUsdGhpcy5fYmg9MTY1NDI3MDI1MCx0aGlzLl9jaD0yNDM4NTI5MzcwLHRoaXMuX2RoPTM1NTQ2MjM2MCx0aGlzLl9laD0xNzMxNDA1NDE1LHRoaXMuX2ZoPTIzOTQxODAyMzEsdGhpcy5fZ2g9MzY3NTAw'@; put 'ODUyNSx0aGlzLl9oaD0xMjAzMDYyODEzLHRoaXMuX2FsPTMyMzgzNzEwMzIsdGhpcy5fYmw9OTE0MTUwNjYzLHRoaXMuX2NsPTgxMjcwMjk5OSx0aGlzLl9kbD00MTQ0OTEyNjk3LHRoaXMuX2VsPTQyOTA3NzU4NTcsdGhpcy5fZmw9MTc1MDYwMzAyNSx0aGlzLl9nbD0xNjk0MDc2ODM5LHRo'@; put 'aXMuX2hsPTMyMDQwNzU0MjgsdGhpc30sQy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgdz1BLmFsbG9jVW5zYWZlKDQ4KTtmdW5jdGlvbiBTKEwsUix4KXt3LndyaXRlSW50MzJCRShMLHgpLHcud3JpdGVJbnQzMkJFKFIseCs0KX1yZXR1cm4gUyh0aGlzLl9haCx0aGlzLl9hbCww'@; put 'KSxTKHRoaXMuX2JoLHRoaXMuX2JsLDgpLFModGhpcy5fY2gsdGhpcy5fY2wsMTYpLFModGhpcy5fZGgsdGhpcy5fZGwsMjQpLFModGhpcy5fZWgsdGhpcy5fZWwsMzIpLFModGhpcy5fZmgsdGhpcy5fZmwsNDApLHd9LGZlLmV4cG9ydHM9Q30sODI4OTAoZmUsaixoKXsidXNlIHN0cmljdCI7'@; put 'dmFyIHk9aCg1NjY5OCksYz1oKDkwMzkyKSxzPWgoOTI4NjEpLkJ1ZmZlcixBPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkz'@; put 'LDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4Mywy'@; put 'MTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkw'@; put 'OTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4'@; put 'OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2'@; put 'OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2'@; put 'MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3'@; put 'LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYs'@; put 'MjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1'@; put 'NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgs'@; put 'MzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV0sdj1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiBDKCl7dGhpcy5pbml0KCksdGhp'@; put 'cy5fdz12LGMuY2FsbCh0aGlzLDEyOCwxMTIpfWZ1bmN0aW9uIHcoeixZLEYpe3JldHVybiBGXnomKFleRil9ZnVuY3Rpb24gUyh6LFksRil7cmV0dXJuIHomWXxGJih6fFkpfWZ1bmN0aW9uIEwoeixZKXtyZXR1cm4oej4+PjI4fFk8PDQpXihZPj4+Mnx6PDwzMCleKFk+Pj43fHo8PDI1KX1m'@; put 'dW5jdGlvbiBSKHosWSl7cmV0dXJuKHo+Pj4xNHxZPDwxOCleKHo+Pj4xOHxZPDwxNCleKFk+Pj45fHo8PDIzKX1mdW5jdGlvbiB4KHosWSl7cmV0dXJuKHo+Pj4xfFk8PDMxKV4oej4+Pjh8WTw8MjQpXno+Pj43fWZ1bmN0aW9uIFUoeixZKXtyZXR1cm4oej4+PjF8WTw8MzEpXih6Pj4+OHxZ'@; put 'PDwyNCleKHo+Pj43fFk8PDI1KX1mdW5jdGlvbiBIKHosWSl7cmV0dXJuKHo+Pj4xOXxZPDwxMyleKFk+Pj4yOXx6PDwzKV56Pj4+Nn1mdW5jdGlvbiBWKHosWSl7cmV0dXJuKHo+Pj4xOXxZPDwxMyleKFk+Pj4yOXx6PDwzKV4oej4+PjZ8WTw8MjYpfWZ1bmN0aW9uIE4oeixZKXtyZXR1cm4g'@; put 'ej4+PjA8WT4+PjA/MTowfXkoQyxjKSxDLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9m'@; put 'aD0yNjAwODIyOTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0xNTQxNDU5MjI1LHRoaXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1'@; put 'MTExOTksdGhpcy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMyMDksdGhpc30sQy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih6KXtmb3IodmFyIFk9dGhpcy5fdyxGPTB8dGhpcy5fYWgsVz0wfHRoaXMuX2JoLHE9MHx0aGlzLl9jaCxyZT0wfHRoaXMuX2RoLG1lPTB8dGhpcy5f'@; put 'ZWgsQ2U9MHx0aGlzLl9maCxJZT0wfHRoaXMuX2doLGtlPTB8dGhpcy5faGgscWU9MHx0aGlzLl9hbCxYPTB8dGhpcy5fYmwsZj0wfHRoaXMuX2NsLGI9MHx0aGlzLl9kbCxrPTB8dGhpcy5fZWwsTT0wfHRoaXMuX2ZsLEI9MHx0aGlzLl9nbCxLPTB8dGhpcy5faGwsRz0wO0c8MzI7Rys9MilZ'@; put 'W0ddPXoucmVhZEludDMyQkUoNCpHKSxZW0crMV09ei5yZWFkSW50MzJCRSg0KkcrNCk7Zm9yKDtHPDE2MDtHKz0yKXt2YXIgRD1ZW0ctMzBdLHA9WVtHLTMwKzFdLEk9eChELHApLHVlPVUocCxEKSxuZT1IKEQ9WVtHLTRdLHA9WVtHLTQrMV0pLF9lPVYocCxEKSxsdD1ZW0ctMzJdLGR0PVlb'@; put 'Ry0zMisxXSxSZT11ZStZW0ctMTQrMV18MCxhZT1JK1lbRy0xNF0rTihSZSx1ZSl8MDthZT0oYWU9YWUrbmUrTihSZT1SZStfZXwwLF9lKXwwKStsdCtOKFJlPVJlK2R0fDAsZHQpfDAsWVtHXT1hZSxZW0crMV09UmV9Zm9yKHZhciB4ZT0wO3hlPDE2MDt4ZSs9Mil7YWU9WVt4ZV0sUmU9WVt4'@; put 'ZSsxXTt2YXIgamU9UyhGLFcscSksQWU9UyhxZSxYLGYpLERlPUwoRixxZSksRmU9TChxZSxGKSxnZT1SKG1lLGspLGNlPVIoayxtZSksaGU9QVt4ZV0sd2U9QVt4ZSsxXSxKZT13KG1lLENlLEllKSx0dD13KGssTSxCKSxLZT1LK2NlfDAsJHQ9a2UrZ2UrTihLZSxLKXwwOyR0PSgkdD0oJHQ9'@; put 'JHQrSmUrTihLZT1LZSt0dHwwLHR0KXwwKStoZStOKEtlPUtlK3dlfDAsd2UpfDApK2FlK04oS2U9S2UrUmV8MCxSZSl8MDt2YXIgUnQ9RmUrQWV8MCxMdD1EZStqZStOKFJ0LEZlKXwwO2tlPUllLEs9QixJZT1DZSxCPU0sQ2U9bWUsTT1rLG1lPXJlKyR0K04oaz1iK0tlfDAsYil8MCxyZT1x'@; put 'LGI9ZixxPVcsZj1YLFc9RixYPXFlLEY9JHQrTHQrTihxZT1LZStSdHwwLEtlKXwwfXRoaXMuX2FsPXRoaXMuX2FsK3FlfDAsdGhpcy5fYmw9dGhpcy5fYmwrWHwwLHRoaXMuX2NsPXRoaXMuX2NsK2Z8MCx0aGlzLl9kbD10aGlzLl9kbCtifDAsdGhpcy5fZWw9dGhpcy5fZWwra3wwLHRoaXMu'@; put 'X2ZsPXRoaXMuX2ZsK018MCx0aGlzLl9nbD10aGlzLl9nbCtCfDAsdGhpcy5faGw9dGhpcy5faGwrS3wwLHRoaXMuX2FoPXRoaXMuX2FoK0YrTih0aGlzLl9hbCxxZSl8MCx0aGlzLl9iaD10aGlzLl9iaCtXK04odGhpcy5fYmwsWCl8MCx0aGlzLl9jaD10aGlzLl9jaCtxK04odGhpcy5fY2ws'@; put 'Zil8MCx0aGlzLl9kaD10aGlzLl9kaCtyZStOKHRoaXMuX2RsLGIpfDAsdGhpcy5fZWg9dGhpcy5fZWgrbWUrTih0aGlzLl9lbCxrKXwwLHRoaXMuX2ZoPXRoaXMuX2ZoK0NlK04odGhpcy5fZmwsTSl8MCx0aGlzLl9naD10aGlzLl9naCtJZStOKHRoaXMuX2dsLEIpfDAsdGhpcy5faGg9dGhp'@; put 'cy5faGgra2UrTih0aGlzLl9obCxLKXwwfSxDLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciB6PXMuYWxsb2NVbnNhZmUoNjQpO2Z1bmN0aW9uIFkoRixXLHEpe3oud3JpdGVJbnQzMkJFKEYscSksei53cml0ZUludDMyQkUoVyxxKzQpfXJldHVybiBZKHRoaXMuX2FoLHRoaXMuX2Fs'@; put 'LDApLFkodGhpcy5fYmgsdGhpcy5fYmwsOCksWSh0aGlzLl9jaCx0aGlzLl9jbCwxNiksWSh0aGlzLl9kaCx0aGlzLl9kbCwyNCksWSh0aGlzLl9laCx0aGlzLl9lbCwzMiksWSh0aGlzLl9maCx0aGlzLl9mbCw0MCksWSh0aGlzLl9naCx0aGlzLl9nbCw0OCksWSh0aGlzLl9oaCx0aGlzLl9o'@; put 'bCw1Niksen0sZmUuZXhwb3J0cz1DfSw4ODMxMChmZSxqLGgpe2ZlLmV4cG9ydHM9czt2YXIgeT1oKDM3MDA3KS5FdmVudEVtaXR0ZXI7ZnVuY3Rpb24gcygpe3kuY2FsbCh0aGlzKX1oKDU2Njk4KShzLHkpLHMuUmVhZGFibGU9aCg0NTQxMikscy5Xcml0YWJsZT1oKDE2NzA4KSxzLkR1cGxl'@; put 'eD1oKDI1MzgyKSxzLlRyYW5zZm9ybT1oKDc0NjEwKSxzLlBhc3NUaHJvdWdoPWgoNjM2MDApLHMuZmluaXNoZWQ9aCg4NjIzOCkscy5waXBlbGluZT1oKDU3NzU4KSxzLlN0cmVhbT1zLHMucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oQSx2KXt2YXIgQz10aGlzO2Z1bmN0aW9uIHcoVil7QS53'@; put 'cml0YWJsZSYmITE9PT1BLndyaXRlKFYpJiZDLnBhdXNlJiZDLnBhdXNlKCl9ZnVuY3Rpb24gUygpe0MucmVhZGFibGUmJkMucmVzdW1lJiZDLnJlc3VtZSgpfUMub24oImRhdGEiLHcpLEEub24oImRyYWluIixTKSwhQS5faXNTdGRpbyYmKCF2fHwhMSE9PXYuZW5kKSYmKEMub24oImVuZCIs'@; put 'UiksQy5vbigiY2xvc2UiLHgpKTt2YXIgTD0hMTtmdW5jdGlvbiBSKCl7THx8KEw9ITAsQS5lbmQoKSl9ZnVuY3Rpb24geCgpe0x8fChMPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiBBLmRlc3Ryb3kmJkEuZGVzdHJveSgpKX1mdW5jdGlvbiBVKFYpe2lmKEgoKSwwPT09eS5saXN0ZW5lckNvdW50'@; put 'KHRoaXMsImVycm9yIikpdGhyb3cgVn1mdW5jdGlvbiBIKCl7Qy5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsdyksQS5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLFMpLEMucmVtb3ZlTGlzdGVuZXIoImVuZCIsUiksQy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHgpLEMucmVtb3ZlTGlzdGVuZXIoImVy'@; put 'cm9yIixVKSxBLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsVSksQy5yZW1vdmVMaXN0ZW5lcigiZW5kIixIKSxDLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsSCksQS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLEgpfXJldHVybiBDLm9uKCJlcnJvciIsVSksQS5vbigiZXJyb3IiLFUpLEMub24oImVu'@; put 'ZCIsSCksQy5vbigiY2xvc2UiLEgpLEEub24oImNsb3NlIixIKSxBLmVtaXQoInBpcGUiLEMpLEF9fSw4MzE0MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkyODYxKS5CdWZmZXIsYz15LmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKEYpe3N3aXRjaCgoRj0iIitGKSYmRi50b0xvd2VyQ2Fz'@; put 'ZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19'@; put 'O2Z1bmN0aW9uIHYoRil7dmFyIFc7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24gQShGKXt2YXIgVz1mdW5jdGlvbiBzKEYpe2lmKCFGKXJldHVybiJ1dGY4Ijtmb3IodmFyIFc7Oylzd2l0Y2goRil7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4idXRmOCI7Y2FzZSJ1Y3MyIjpj'@; put 'YXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiJ1dGYxNmxlIjtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiJsYXRpbjEiO2Nhc2UiYmFzZTY0IjpjYXNlImFzY2lpIjpjYXNlImhleCI6cmV0dXJuIEY7ZGVmYXVsdDppZihXKXJldHVybjtGPSgi'@; put 'IitGKS50b0xvd2VyQ2FzZSgpLFc9ITB9fShGKTtpZigic3RyaW5nIiE9dHlwZW9mIFcmJih5LmlzRW5jb2Rpbmc9PT1jfHwhYyhGKSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0YpO3JldHVybiBXfHxGfShGKSx0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjE2bGUiOnRo'@; put 'aXMudGV4dD1VLHRoaXMuZW5kPUgsVz00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD1MLFc9NDticmVhaztjYXNlImJhc2U2NCI6dGhpcy50ZXh0PVYsdGhpcy5lbmQ9TixXPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT16LHZvaWQodGhpcy5lbmQ9WSl9dGhpcy5s'@; put 'YXN0TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj15LmFsbG9jVW5zYWZlKFcpfWZ1bmN0aW9uIEMoRil7cmV0dXJuIEY8PTEyNz8wOkY+PjU9PTY/MjpGPj40PT0xND8zOkY+PjM9PTMwPzQ6Rj4+Nj09Mj8tMTotMn1mdW5jdGlvbiBMKEYpe3ZhciBXPXRoaXMubGFzdFRv'@; put 'dGFsLXRoaXMubGFzdE5lZWQscT1mdW5jdGlvbiBTKEYsVyl7aWYoMTI4IT0oMTkyJldbMF0pKXJldHVybiBGLmxhc3ROZWVkPTAsIlx1ZmZmZCI7aWYoRi5sYXN0TmVlZD4xJiZXLmxlbmd0aD4xKXtpZigxMjghPSgxOTImV1sxXSkpcmV0dXJuIEYubGFzdE5lZWQ9MSwiXHVmZmZkIjtpZihG'@; put 'Lmxhc3ROZWVkPjImJlcubGVuZ3RoPjImJjEyOCE9KDE5MiZXWzJdKSlyZXR1cm4gRi5sYXN0TmVlZD0yLCJcdWZmZmQifX0odGhpcyxGKTtyZXR1cm4gdm9pZCAwIT09cT9xOnRoaXMubGFzdE5lZWQ8PUYubGVuZ3RoPyhGLmNvcHkodGhpcy5sYXN0Q2hhcixXLDAsdGhpcy5sYXN0TmVlZCks'@; put 'dGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpKTooRi5jb3B5KHRoaXMubGFzdENoYXIsVywwLEYubGVuZ3RoKSx2b2lkKHRoaXMubGFzdE5lZWQtPUYubGVuZ3RoKSl9ZnVuY3Rpb24gVShGLFcpe2lmKChGLmxlbmd0aC1XKSUyPT0wKXt2YXIg'@; put 'cT1GLnRvU3RyaW5nKCJ1dGYxNmxlIixXKTtpZihxKXt2YXIgcmU9cS5jaGFyQ29kZUF0KHEubGVuZ3RoLTEpO2lmKHJlPj01NTI5NiYmcmU8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMl0sdGhpcy5s'@; put 'YXN0Q2hhclsxXT1GW0YubGVuZ3RoLTFdLHEuc2xpY2UoMCwtMSl9cmV0dXJuIHF9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09RltGLmxlbmd0aC0xXSxGLnRvU3RyaW5nKCJ1dGYxNmxlIixXLEYubGVuZ3RoLTEpfWZ1bmN0aW9uIEgo'@; put 'Ril7dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9XK3RoaXMubGFzdENoYXIudG9TdHJpbmcoInV0ZjE2bGUiLDAsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCk6V31mdW5jdGlvbiBWKEYsVyl7dmFyIHE9KEYubGVuZ3RoLVcpJTM7'@; put 'cmV0dXJuIDA9PT1xP0YudG9TdHJpbmcoImJhc2U2NCIsVyk6KHRoaXMubGFzdE5lZWQ9My1xLHRoaXMubGFzdFRvdGFsPTMsMT09PXE/dGhpcy5sYXN0Q2hhclswXT1GW0YubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1GW0YubGVu'@; put 'Z3RoLTFdKSxGLnRvU3RyaW5nKCJiYXNlNjQiLFcsRi5sZW5ndGgtcSkpfWZ1bmN0aW9uIE4oRil7dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9XK3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQp'@; put 'Old9ZnVuY3Rpb24geihGKXtyZXR1cm4gRi50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBZKEYpe3JldHVybiBGJiZGLmxlbmd0aD90aGlzLndyaXRlKEYpOiIifWouST12LHYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEYpe2lmKDA9PT1GLmxlbmd0aClyZXR1cm4iIjt2YXIg'@; put 'VyxxO2lmKHRoaXMubGFzdE5lZWQpe2lmKHZvaWQgMD09PShXPXRoaXMuZmlsbExhc3QoRikpKXJldHVybiIiO3E9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSBxPTA7cmV0dXJuIHE8Ri5sZW5ndGg/Vz9XK3RoaXMudGV4dChGLHEpOnRoaXMudGV4dChGLHEpOld8fCIifSx2'@; put 'LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24geChGKXt2YXIgVz1GJiZGLmxlbmd0aD90aGlzLndyaXRlKEYpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP1crIlx1ZmZmZCI6V30sdi5wcm90b3R5cGUudGV4dD1mdW5jdGlvbiBSKEYsVyl7dmFyIHE9ZnVuY3Rpb24gdyhGLFcscSl7dmFyIHJlPVcu'@; put 'bGVuZ3RoLTE7aWYocmU8cSlyZXR1cm4gMDt2YXIgbWU9QyhXW3JlXSk7cmV0dXJuIG1lPj0wPyhtZT4wJiYoRi5sYXN0TmVlZD1tZS0xKSxtZSk6LS1yZTxxfHwtMj09PW1lPzA6KG1lPUMoV1tyZV0pKT49MD8obWU+MCYmKEYubGFzdE5lZWQ9bWUtMiksbWUpOi0tcmU8cXx8LTI9PT1tZT8w'@; put 'OihtZT1DKFdbcmVdKSk+PTA/KG1lPjAmJigyPT09bWU/bWU9MDpGLmxhc3ROZWVkPW1lLTMpLG1lKTowfSh0aGlzLEYsVyk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIEYudG9TdHJpbmcoInV0ZjgiLFcpO3RoaXMubGFzdFRvdGFsPXE7dmFyIHJlPUYubGVuZ3RoLShxLXRoaXMubGFzdE5l'@; put 'ZWQpO3JldHVybiBGLmNvcHkodGhpcy5sYXN0Q2hhciwwLHJlKSxGLnRvU3RyaW5nKCJ1dGY4IixXLHJlKX0sdi5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24oRil7aWYodGhpcy5sYXN0TmVlZDw9Ri5sZW5ndGgpcmV0dXJuIEYuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFs'@; put 'LXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7Ri5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLEYubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT1G'@; put 'Lmxlbmd0aH19LDE1Mzc3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTI4NjEpLkJ1ZmZlcixjPWgoNjQ2MzQpLHM9aCg3NDM3MiksQT1BcnJheUJ1ZmZlci5pc1ZpZXd8fGZ1bmN0aW9uKEwpe3RyeXtyZXR1cm4gcyhMKSwhMH1jYXRjaHtyZXR1cm4hMX19LHY9dHlwZW9mIFVpbnQ4'@; put 'QXJyYXk8InUiLEM9dHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiLHc9QyYmKHkucHJvdG90eXBlIGluc3RhbmNlb2YgVWludDhBcnJheXx8eS5UWVBFRF9BUlJBWV9TVVBQT1JUKTtmZS5leHBvcnRzPWZ1bmN0aW9uKEwsUil7aWYoeS5pc0J1ZmZlcihMKSly'@; put 'ZXR1cm4gTC5jb25zdHJ1Y3RvciYmISgiaXNCdWZmZXIiaW4gTCk/eS5mcm9tKEwpOkw7aWYoInN0cmluZyI9PXR5cGVvZiBMKXJldHVybiB5LmZyb20oTCxSKTtpZihDJiZBKEwpKXtpZigwPT09TC5ieXRlTGVuZ3RoKXJldHVybiB5LmFsbG9jKDApO2lmKHcpe3ZhciB4PXkuZnJvbShMLmJ1'@; put 'ZmZlcixMLmJ5dGVPZmZzZXQsTC5ieXRlTGVuZ3RoKTtpZih4LmJ5dGVMZW5ndGg9PT1MLmJ5dGVMZW5ndGgpcmV0dXJuIHh9dmFyIFU9TCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/TDpuZXcgVWludDhBcnJheShMLmJ1ZmZlcixMLmJ5dGVPZmZzZXQsTC5ieXRlTGVuZ3RoKSxIPXkuZnJvbShV'@; put 'KTtpZihILmxlbmd0aD09PUwuYnl0ZUxlbmd0aClyZXR1cm4gSH1pZih2JiZMIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4geS5mcm9tKEwpO3ZhciBWPWMoTCk7aWYoVilmb3IodmFyIE49MDtOPEwubGVuZ3RoO04rPTEpe3ZhciB6PUxbTl07aWYoIm51bWJlciIhPXR5cGVvZiB6fHx6'@; put 'PDB8fHo+MjU1fHx+fnohPT16KXRocm93IG5ldyBSYW5nZUVycm9yKCJBcnJheSBpdGVtcyBtdXN0IGJlIG51bWJlcnMgaW4gdGhlIHJhbmdlIDAtMjU1LiIpfWlmKFZ8fHkuaXNCdWZmZXIoTCkmJkwuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBMLmNvbnN0cnVjdG9yLmlzQnVm'@; put 'ZmVyJiZMLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEwpKXJldHVybiB5LmZyb20oTCk7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJkYXRhIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBhbiBBcnJheSwgYSBCdWZmZXIsIGEgVWludDhBcnJheSwgb3IgYSBEYXRhVmlldy4nKX19LDcyOTIz'@; put 'KGZlLGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCgxODg3NSksYz1oKDYxMTYwKSxzPWgoNjExNzcpLEE9aCg5NDgzNikuaSx2PWgoODI2OTEpLm4sQz1oKDc1MzIxKS56LHc9aCg4Mjk4MiksUz1oKDYzMDkzKSx7ZnJvbUNhbGxiYWNrOkx9PWgoMTg5NjQpLHtnZXRDdXN0b21JbnNwZWN0'@; put 'U3ltYm9sOlJ9PWgoMjk5MjEpLHg9L15bXHgyMVx4MjMtXHgyQlx4MkQtXHgzQVx4M0MtXHg1Qlx4NUQtXHg3RV0rJC8sVT0vW1x4MDAtXHgxRl0vLEg9WyJcbiIsIlxyIiwiXDAiXSxWPS9bXHgyMC1ceDNBXHgzQy1ceDdFXSsvLE49L1tceDA5XHgyMC1ceDJGXHgzQi1ceDQwXHg1Qi1ceDYw'@; put 'XHg3Qi1ceDdFXS8sej17amFuOjAsZmViOjEsbWFyOjIsYXByOjMsbWF5OjQsanVuOjUsanVsOjYsYXVnOjcsc2VwOjgsb2N0Ojksbm92OjEwLGRlYzoxMX0sWT0yMTQ3NDgzNjQ3ZTMsVz0nSW52YWxpZCBzYW1lU2l0ZUNvbnRleHQgb3B0aW9uIGZvciBnZXRDb29raWVzKCk7IGV4cGVjdGVk'@; put 'IG9uZSBvZiAic3RyaWN0IiwgImxheCIsIG9yICJub25lIic7ZnVuY3Rpb24gcShqZSl7dy52YWxpZGF0ZSh3LmlzTm9uRW1wdHlTdHJpbmcoamUpLGplKTtjb25zdCBBZT1TdHJpbmcoamUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIm5vbmUiPT09QWV8fCJsYXgiPT09QWV8fCJzdHJpY3QiPT09'@; put 'QWU/QWU6bnVsbH1jb25zdCByZT1PYmplY3QuZnJlZXplKHtTSUxFTlQ6InNpbGVudCIsU1RSSUNUOiJzdHJpY3QiLERJU0FCTEVEOiJ1bnNhZmUtZGlzYWJsZWQifSksbWU9Lyg/Ol4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxk'@; put 'fDFcZFxkfFsxLTldXGR8XGQpKXszfSQpfCg/Ol4oPzooPzpbYS1mXGRdezEsNH06KXs3fSg/OlthLWZcZF17MSw0fXw6KXwoPzpbYS1mXGRdezEsNH06KXs2fSg/Oig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEt'@; put 'OV1cZHxcZCkpezN9fDpbYS1mXGRdezEsNH18Oil8KD86W2EtZlxkXXsxLDR9Oil7NX0oPzo6KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSwyfXw6KXwo'@; put 'PzpbYS1mXGRdezEsNH06KXs0fSg/Oig/OjpbYS1mXGRdezEsNH0pezAsMX06KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSwzfXw6KXwoPzpbYS1mXGRd'@; put 'ezEsNH06KXszfSg/Oig/OjpbYS1mXGRdezEsNH0pezAsMn06KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSw0fXw6KXwoPzpbYS1mXGRdezEsNH06KXsy'@; put 'fSg/Oig/OjpbYS1mXGRdezEsNH0pezAsM306KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSw1fXw6KXwoPzpbYS1mXGRdezEsNH06KXsxfSg/Oig/Ojpb'@; put 'YS1mXGRdezEsNH0pezAsNH06KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318KD86OlthLWZcZF17MSw0fSl7MSw2fXw6KXwoPzo6KD86KD86OlthLWZcZF17MSw0fSl7MCw1fTooPzoyNVsw'@; put 'LTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDd9fDopKSkkKS8sQ2U9IlxuXFxbPyg/OlxuKD86W2EtZkEtRlxcZF17MSw0fTopezd9KD86W2EtZkEtRlxcZF17MSw0'@; put 'fXw6KXxcbig/OlthLWZBLUZcXGRdezEsNH06KXs2fSg/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSl7M318OlthLWZBLUZcXGRdezEsNH18Oil8XG4oPzpbYS1mQS1GXFxk'@; put 'XXsxLDR9Oil7NX0oPzo6KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKXszfXwoPzo6W2EtZkEtRlxcZF17MSw0fSl7MSwyfXw6KXxcbig/OlthLWZBLUZcXGRdezEsNH06KXs0'@; put 'fSg/Oig/OjpbYS1mQS1GXFxkXXsxLDR9KXswLDF9Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSl7M318KD86OlthLWZBLUZcXGRdezEsNH0pezEsM318Oil8XG4oPzpbYS1m'@; put 'QS1GXFxkXXsxLDR9Oil7M30oPzooPzo6W2EtZkEtRlxcZF17MSw0fSl7MCwyfTooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkpezN9fCg/OjpbYS1mQS1GXFxkXXsxLDR9KXsx'@; put 'LDR9fDopfFxuKD86W2EtZkEtRlxcZF17MSw0fTopezJ9KD86KD86OlthLWZBLUZcXGRdezEsNH0pezAsM306KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKXszfXwoPzo6W2Et'@; put 'ZkEtRlxcZF17MSw0fSl7MSw1fXw6KXxcbig/OlthLWZBLUZcXGRdezEsNH06KXsxfSg/Oig/OjpbYS1mQS1GXFxkXXsxLDR9KXswLDR9Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8'@; put 'XFxkKSl7M318KD86OlthLWZBLUZcXGRdezEsNH0pezEsNn18Oil8XG4oPzo6KD86KD86OlthLWZBLUZcXGRdezEsNH0pezAsNX06KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQp'@; put 'KXszfXwoPzo6W2EtZkEtRlxcZF17MSw0fSl7MSw3fXw6KSlcbikoPzolWzAtOWEtekEtWl17MSx9KT9cXF0/XG4iLnJlcGxhY2UoL1xzKlwvXC8uKiQvZ20sIiIpLnJlcGxhY2UoL1xuL2csIiIpLnRyaW0oKSxJZT1uZXcgUmVnRXhwKGBeJHtDZX0kYCk7ZnVuY3Rpb24ga2UoamUsQWUsRGUs'@; put 'RmUpe2xldCBnZT0wO2Zvcig7Z2U8amUubGVuZ3RoOyl7Y29uc3QgY2U9amUuY2hhckNvZGVBdChnZSk7aWYoY2U8PTQ3fHxjZT49NTgpYnJlYWs7Z2UrK31yZXR1cm4gZ2U8QWV8fGdlPkRlfHwhRmUmJmdlIT1qZS5sZW5ndGg/bnVsbDpwYXJzZUludChqZS5zdWJzdHIoMCxnZSksMTApfWZ1'@; put 'bmN0aW9uIHFlKGplKXtjb25zdCBBZT1qZS5zcGxpdCgiOiIpLERlPVswLDAsMF07aWYoMyE9PUFlLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IEZlPTA7RmU8MztGZSsrKXtjb25zdCBjZT1rZShBZVtGZV0sMSwyLDI9PUZlKTtpZihudWxsPT09Y2UpcmV0dXJuIG51bGw7RGVbRmVdPWNl'@; put 'fXJldHVybiBEZX1mdW5jdGlvbiBYKGplKXtqZT1TdHJpbmcoamUpLnN1YnN0cigwLDMpLnRvTG93ZXJDYXNlKCk7Y29uc3QgQWU9eltqZV07cmV0dXJuIEFlPj0wP0FlOm51bGx9ZnVuY3Rpb24gZihqZSl7aWYoIWplKXJldHVybjtjb25zdCBBZT1qZS5zcGxpdChOKTtpZighQWUpcmV0dXJu'@; put 'O2xldCBEZT1udWxsLEZlPW51bGwsZ2U9bnVsbCxjZT1udWxsLGhlPW51bGwsd2U9bnVsbDtmb3IobGV0IEplPTA7SmU8QWUubGVuZ3RoO0plKyspe2NvbnN0IHR0PUFlW0plXS50cmltKCk7aWYoIXR0Lmxlbmd0aCljb250aW51ZTtsZXQgS2U7bnVsbD09PWdlJiYoS2U9cWUodHQpLEtlKT8o'@; put 'RGU9S2VbMF0sRmU9S2VbMV0sZ2U9S2VbMl0pOm51bGwhPT1jZXx8KEtlPWtlKHR0LDEsMiwhMCksbnVsbD09PUtlKT9udWxsIT09aGV8fChLZT1YKHR0KSxudWxsPT09S2UpP251bGw9PT13ZSYmKEtlPWtlKHR0LDIsNCwhMCksbnVsbCE9PUtlJiYod2U9S2Usd2U+PTcwJiZ3ZTw9OTk/d2Ur'@; put 'PTE5MDA6d2U+PTAmJndlPD02OSYmKHdlKz0yZTMpKSk6aGU9S2U6Y2U9S2V9cmV0dXJuIG51bGw9PT1jZXx8bnVsbD09PWhlfHxudWxsPT09d2V8fG51bGw9PT1nZXx8Y2U8MXx8Y2U+MzF8fHdlPDE2MDF8fERlPjIzfHxGZT41OXx8Z2U+NTk/dm9pZCAwOm5ldyBEYXRlKERhdGUuVVRDKHdl'@; put 'LGhlLGNlLERlLEZlLGdlKSl9ZnVuY3Rpb24gYihqZSl7cmV0dXJuIHcudmFsaWRhdGUody5pc0RhdGUoamUpLGplKSxqZS50b1VUQ1N0cmluZygpfWZ1bmN0aW9uIGsoamUpe3JldHVybiBudWxsPT1qZT9udWxsOihqZT1qZS50cmltKCkucmVwbGFjZSgvXlwuLywiIiksSWUudGVzdChqZSkm'@; put 'JihqZT1qZS5yZXBsYWNlKCJbIiwiIikucmVwbGFjZSgiXSIsIiIpKSx5JiYvW15cdTAwMDEtXHUwMDdmXS8udGVzdChqZSkmJihqZT15LnRvQVNDSUkoamUpKSxqZS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBNKGplLEFlLERlKXtpZihudWxsPT1qZXx8bnVsbD09QWUpcmV0dXJuIG51bGw7'@; put 'aWYoITEhPT1EZSYmKGplPWsoamUpLEFlPWsoQWUpKSxqZT09QWUpcmV0dXJuITA7Y29uc3QgRmU9amUubGFzdEluZGV4T2YoQWUpO3JldHVybiEoRmU8PTB8fGplLmxlbmd0aCE9PUFlLmxlbmd0aCtGZXx8Ii4iIT09amUuc3Vic3RyKEZlLTEsMSl8fG1lLnRlc3QoamUpKX1mdW5jdGlvbiBC'@; put 'KGplKXtpZighamV8fCIvIiE9PWplLnN1YnN0cigwLDEpKXJldHVybiIvIjtpZigiLyI9PT1qZSlyZXR1cm4gamU7Y29uc3QgQWU9amUubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gMD09PUFlPyIvIjpqZS5zbGljZSgwLEFlKX1mdW5jdGlvbiBEKGplLEFlKXtpZigoIUFlfHwib2JqZWN0IiE9'@; put 'dHlwZW9mIEFlKSYmKEFlPXt9KSx3LmlzRW1wdHlTdHJpbmcoamUpfHwhdy5pc1N0cmluZyhqZSkpcmV0dXJuIG51bGw7Y29uc3QgRGU9KGplPWplLnRyaW0oKSkuaW5kZXhPZigiOyIpLGdlPWZ1bmN0aW9uIEcoamUsQWUpe2plPWZ1bmN0aW9uIEsoamUpe2lmKHcuaXNFbXB0eVN0cmluZyhq'@; put 'ZSkpcmV0dXJuIGplO2ZvcihsZXQgQWU9MDtBZTxILmxlbmd0aDtBZSsrKXtjb25zdCBEZT1qZS5pbmRleE9mKEhbQWVdKTstMSE9PURlJiYoamU9amUuc3Vic3RyKDAsRGUpKX1yZXR1cm4gamV9KGplKSx3LnZhbGlkYXRlKHcuaXNTdHJpbmcoamUpLGplKTtsZXQgRmUsZ2UsRGU9amUuaW5k'@; put 'ZXhPZigiPSIpO2lmKEFlKTA9PT1EZSYmKERlPShqZT1qZS5zdWJzdHIoMSkpLmluZGV4T2YoIj0iKSk7ZWxzZSBpZihEZTw9MClyZXR1cm47aWYoRGU8PTA/KEZlPSIiLGdlPWplLnRyaW0oKSk6KEZlPWplLnN1YnN0cigwLERlKS50cmltKCksZ2U9amUuc3Vic3RyKERlKzEpLnRyaW0oKSks'@; put 'VS50ZXN0KEZlKXx8VS50ZXN0KGdlKSlyZXR1cm47Y29uc3QgY2U9bmV3IGR0O3JldHVybiBjZS5rZXk9RmUsY2UudmFsdWU9Z2UsY2V9KC0xPT09RGU/amU6amUuc3Vic3RyKDAsRGUpLCEhQWUubG9vc2UpO2lmKCFnZSlyZXR1cm47aWYoLTE9PT1EZSlyZXR1cm4gZ2U7Y29uc3QgY2U9amUu'@; put 'c2xpY2UoRGUrMSkudHJpbSgpO2lmKDA9PT1jZS5sZW5ndGgpcmV0dXJuIGdlO2NvbnN0IGhlPWNlLnNwbGl0KCI7Iik7Zm9yKDtoZS5sZW5ndGg7KXtjb25zdCB3ZT1oZS5zaGlmdCgpLnRyaW0oKTtpZigwPT09d2UubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IEplPXdlLmluZGV4T2YoIj0iKTts'@; put 'ZXQgdHQsS2U7c3dpdGNoKC0xPT09SmU/KHR0PXdlLEtlPW51bGwpOih0dD13ZS5zdWJzdHIoMCxKZSksS2U9d2Uuc3Vic3RyKEplKzEpKSx0dD10dC50cmltKCkudG9Mb3dlckNhc2UoKSxLZSYmKEtlPUtlLnRyaW0oKSksdHQpe2Nhc2UiZXhwaXJlcyI6aWYoS2Upe2NvbnN0IFJ0PWYoS2Up'@; put 'O1J0JiYoZ2UuZXhwaXJlcz1SdCl9YnJlYWs7Y2FzZSJtYXgtYWdlIjppZihLZSYmL14tP1swLTldKyQvLnRlc3QoS2UpKXtjb25zdCBSdD1wYXJzZUludChLZSwxMCk7Z2Uuc2V0TWF4QWdlKFJ0KX1icmVhaztjYXNlImRvbWFpbiI6aWYoS2Upe2NvbnN0IFJ0PUtlLnRyaW0oKS5yZXBsYWNl'@; put 'KC9eXC4vLCIiKTtSdCYmKGdlLmRvbWFpbj1SdC50b0xvd2VyQ2FzZSgpKX1icmVhaztjYXNlInBhdGgiOmdlLnBhdGg9S2UmJiIvIj09PUtlWzBdP0tlOm51bGw7YnJlYWs7Y2FzZSJzZWN1cmUiOmdlLnNlY3VyZT0hMDticmVhaztjYXNlImh0dHBvbmx5IjpnZS5odHRwT25seT0hMDticmVh'@; put 'aztjYXNlInNhbWVzaXRlIjpzd2l0Y2goS2U/S2UudG9Mb3dlckNhc2UoKToiIil7Y2FzZSJzdHJpY3QiOmdlLnNhbWVTaXRlPSJzdHJpY3QiO2JyZWFrO2Nhc2UibGF4IjpnZS5zYW1lU2l0ZT0ibGF4IjticmVhaztjYXNlIm5vbmUiOmdlLnNhbWVTaXRlPSJub25lIjticmVhaztkZWZhdWx0'@; put 'OmdlLnNhbWVTaXRlPXZvaWQgMH1icmVhaztkZWZhdWx0OmdlLmV4dGVuc2lvbnM9Z2UuZXh0ZW5zaW9uc3x8W10sZ2UuZXh0ZW5zaW9ucy5wdXNoKHdlKX19cmV0dXJuIGdlfWZ1bmN0aW9uIHVlKGplKXtsZXQgQWU7dHJ5e0FlPUpTT04ucGFyc2UoamUpfWNhdGNoKERlKXtyZXR1cm4gRGV9'@; put 'cmV0dXJuIEFlfWZ1bmN0aW9uIG5lKGplKXtpZighamV8fHcuaXNFbXB0eVN0cmluZyhqZSkpcmV0dXJuIG51bGw7bGV0IEFlO2lmKCJzdHJpbmciPT10eXBlb2YgamUpe2lmKEFlPXVlKGplKSxBZSBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBudWxsfWVsc2UgQWU9amU7Y29uc3QgRGU9bmV3'@; put 'IGR0O2ZvcihsZXQgRmU9MDtGZTxkdC5zZXJpYWxpemFibGVQcm9wZXJ0aWVzLmxlbmd0aDtGZSsrKXtjb25zdCBnZT1kdC5zZXJpYWxpemFibGVQcm9wZXJ0aWVzW0ZlXTt2b2lkIDA9PT1BZVtnZV18fEFlW2dlXT09PWx0W2dlXXx8KERlW2dlXT0iZXhwaXJlcyI9PT1nZXx8ImNyZWF0aW9u'@; put 'Ij09PWdlfHwibGFzdEFjY2Vzc2VkIj09PWdlP251bGw9PT1BZVtnZV0/bnVsbDoiSW5maW5pdHkiPT1BZVtnZV0/IkluZmluaXR5IjpuZXcgRGF0ZShBZVtnZV0pOkFlW2dlXSl9cmV0dXJuIERlfWZ1bmN0aW9uIF9lKGplLEFlKXt3LnZhbGlkYXRlKHcuaXNPYmplY3QoamUpLGplKSx3LnZh'@; put 'bGlkYXRlKHcuaXNPYmplY3QoQWUpLEFlKTtsZXQgRGU9MDtyZXR1cm4gRGU9KEFlLnBhdGg/QWUucGF0aC5sZW5ndGg6MCktKGplLnBhdGg/amUucGF0aC5sZW5ndGg6MCksMCE9PURlfHwoRGU9KGplLmNyZWF0aW9uP2plLmNyZWF0aW9uLmdldFRpbWUoKTpZKS0oQWUuY3JlYXRpb24/QWUu'@; put 'Y3JlYXRpb24uZ2V0VGltZSgpOlkpLDAhPT1EZXx8KERlPWplLmNyZWF0aW9uSW5kZXgtQWUuY3JlYXRpb25JbmRleCkpLERlfWZ1bmN0aW9uIG90KGplKXtpZihqZSBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gamU7dHJ5e2plPWRlY29kZVVSSShqZSl9Y2F0Y2h7fXJldHVybiBjKGplKX1j'@; put 'b25zdCBsdD17a2V5OiIiLHZhbHVlOiIiLGV4cGlyZXM6IkluZmluaXR5IixtYXhBZ2U6bnVsbCxkb21haW46bnVsbCxwYXRoOm51bGwsc2VjdXJlOiExLGh0dHBPbmx5OiExLGV4dGVuc2lvbnM6bnVsbCxob3N0T25seTpudWxsLHBhdGhJc0RlZmF1bHQ6bnVsbCxjcmVhdGlvbjpudWxsLGxh'@; put 'c3RBY2Nlc3NlZDpudWxsLHNhbWVTaXRlOnZvaWQgMH07Y2xhc3MgZHR7Y29uc3RydWN0b3IoQWU9e30pe2NvbnN0IERlPVIoKTtEZSYmKHRoaXNbRGVdPXRoaXMuaW5zcGVjdCksT2JqZWN0LmFzc2lnbih0aGlzLGx0LEFlKSx0aGlzLmNyZWF0aW9uPXRoaXMuY3JlYXRpb258fG5ldyBEYXRl'@; put 'LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjcmVhdGlvbkluZGV4Iix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6KytkdC5jb29raWVzQ3JlYXRlZH0pfWluc3BlY3QoKXtjb25zdCBBZT1EYXRlLm5vdygpLERlPW51bGwhPXRoaXMuaG9zdE9u'@; put 'bHk/dGhpcy5ob3N0T25seToiPyIsRmU9dGhpcy5jcmVhdGlvbj9BZS10aGlzLmNyZWF0aW9uLmdldFRpbWUoKSsibXMiOiI/IixnZT10aGlzLmxhc3RBY2Nlc3NlZD9BZS10aGlzLmxhc3RBY2Nlc3NlZC5nZXRUaW1lKCkrIm1zIjoiPyI7cmV0dXJuYENvb2tpZT0iJHt0aGlzLnRvU3RyaW5n'@; put 'KCl9OyBob3N0T25seT0ke0RlfTsgYUFnZT0ke2dlfTsgY0FnZT0ke0ZlfSJgfXRvSlNPTigpe2NvbnN0IEFlPXt9O2Zvcihjb25zdCBEZSBvZiBkdC5zZXJpYWxpemFibGVQcm9wZXJ0aWVzKXRoaXNbRGVdIT09bHRbRGVdJiYoImV4cGlyZXMiPT09RGV8fCJjcmVhdGlvbiI9PT1EZXx8Imxh'@; put 'c3RBY2Nlc3NlZCI9PT1EZT9BZVtEZV09bnVsbD09PXRoaXNbRGVdP251bGw6IkluZmluaXR5Ij09dGhpc1tEZV0/IkluZmluaXR5Ijp0aGlzW0RlXS50b0lTT1N0cmluZygpOiJtYXhBZ2UiPT09RGU/bnVsbCE9PXRoaXNbRGVdJiYoQWVbRGVdPXRoaXNbRGVdPT0xLzB8fHRoaXNbRGVdPT0t'@; put 'MS8wP3RoaXNbRGVdLnRvU3RyaW5nKCk6dGhpc1tEZV0pOnRoaXNbRGVdIT09bHRbRGVdJiYoQWVbRGVdPXRoaXNbRGVdKSk7cmV0dXJuIEFlfWNsb25lKCl7cmV0dXJuIG5lKHRoaXMudG9KU09OKCkpfXZhbGlkYXRlKCl7aWYoIXgudGVzdCh0aGlzLnZhbHVlKXx8dGhpcy5leHBpcmVzIT0x'@; put 'LzAmJiEodGhpcy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZSkmJiFmKHRoaXMuZXhwaXJlcyl8fG51bGwhPXRoaXMubWF4QWdlJiZ0aGlzLm1heEFnZTw9MHx8bnVsbCE9dGhpcy5wYXRoJiYhVi50ZXN0KHRoaXMucGF0aCkpcmV0dXJuITE7Y29uc3QgQWU9dGhpcy5jZG9tYWluKCk7cmV0dXJu'@; put 'IShBZSYmKEFlLm1hdGNoKC9cLiQvKXx8bnVsbD09cy5nZXRQdWJsaWNTdWZmaXgoQWUpKSl9c2V0RXhwaXJlcyhBZSl7dGhpcy5leHBpcmVzPUFlIGluc3RhbmNlb2YgRGF0ZT9BZTpmKEFlKXx8IkluZmluaXR5In1zZXRNYXhBZ2UoQWUpe3RoaXMubWF4QWdlPUFlPT09MS8wfHxBZT09PS0x'@; put 'LzA/QWUudG9TdHJpbmcoKTpBZX1jb29raWVTdHJpbmcoKXtsZXQgQWU9dGhpcy52YWx1ZTtyZXR1cm4gbnVsbD09QWUmJihBZT0iIiksIiI9PT10aGlzLmtleT9BZTpgJHt0aGlzLmtleX09JHtBZX1gfXRvU3RyaW5nKCl7bGV0IEFlPXRoaXMuY29va2llU3RyaW5nKCk7aWYodGhpcy5leHBp'@; put 'cmVzIT0xLzAmJih0aGlzLmV4cGlyZXMgaW5zdGFuY2VvZiBEYXRlP0FlKz1gOyBFeHBpcmVzPSR7Yih0aGlzLmV4cGlyZXMpfWA6QWUrPWA7IEV4cGlyZXM9JHt0aGlzLmV4cGlyZXN9YCksbnVsbCE9dGhpcy5tYXhBZ2UmJnRoaXMubWF4QWdlIT0xLzAmJihBZSs9YDsgTWF4LUFnZT0ke3Ro'@; put 'aXMubWF4QWdlfWApLHRoaXMuZG9tYWluJiYhdGhpcy5ob3N0T25seSYmKEFlKz1gOyBEb21haW49JHt0aGlzLmRvbWFpbn1gKSx0aGlzLnBhdGgmJihBZSs9YDsgUGF0aD0ke3RoaXMucGF0aH1gKSx0aGlzLnNlY3VyZSYmKEFlKz0iOyBTZWN1cmUiKSx0aGlzLmh0dHBPbmx5JiYoQWUrPSI7'@; put 'IEh0dHBPbmx5IiksdGhpcy5zYW1lU2l0ZSYmIm5vbmUiIT09dGhpcy5zYW1lU2l0ZSl7Y29uc3QgRGU9ZHQuc2FtZVNpdGVDYW5vbmljYWxbdGhpcy5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpXTtBZSs9YDsgU2FtZVNpdGU9JHtEZXx8dGhpcy5zYW1lU2l0ZX1gfXJldHVybiB0aGlzLmV4dGVu'@; put 'c2lvbnMmJnRoaXMuZXh0ZW5zaW9ucy5mb3JFYWNoKERlPT57QWUrPWA7ICR7RGV9YH0pLEFlfVRUTChBZSl7aWYobnVsbCE9dGhpcy5tYXhBZ2UpcmV0dXJuIHRoaXMubWF4QWdlPD0wPzA6MWUzKnRoaXMubWF4QWdlO2xldCBEZT10aGlzLmV4cGlyZXM7cmV0dXJuIERlIT0xLzA/KERlIGlu'@; put 'c3RhbmNlb2YgRGF0ZXx8KERlPWYoRGUpfHwxLzApLERlPT0xLzA/MS8wOkRlLmdldFRpbWUoKS0oQWV8fERhdGUubm93KCkpKToxLzB9ZXhwaXJ5VGltZShBZSl7aWYobnVsbCE9dGhpcy5tYXhBZ2Upe2NvbnN0IEZlPXRoaXMubWF4QWdlPD0wPy0xLzA6MWUzKnRoaXMubWF4QWdlO3JldHVy'@; put 'bihBZXx8dGhpcy5jcmVhdGlvbnx8bmV3IERhdGUpLmdldFRpbWUoKStGZX1yZXR1cm4gdGhpcy5leHBpcmVzPT0xLzA/MS8wOnRoaXMuZXhwaXJlcy5nZXRUaW1lKCl9ZXhwaXJ5RGF0ZShBZSl7Y29uc3QgRGU9dGhpcy5leHBpcnlUaW1lKEFlKTtyZXR1cm4gRGU9PTEvMD9uZXcgRGF0ZShZ'@; put 'KTpEZT09LTEvMD9uZXcgRGF0ZSgwKTpuZXcgRGF0ZShEZSl9aXNQZXJzaXN0ZW50KCl7cmV0dXJuIG51bGwhPXRoaXMubWF4QWdlfHx0aGlzLmV4cGlyZXMhPTEvMH1jYW5vbmljYWxpemVkRG9tYWluKCl7cmV0dXJuIG51bGw9PXRoaXMuZG9tYWluP251bGw6ayh0aGlzLmRvbWFpbil9Y2Rv'@; put 'bWFpbigpe3JldHVybiB0aGlzLmNhbm9uaWNhbGl6ZWREb21haW4oKX19ZnVuY3Rpb24gUmUoamUpe2lmKG51bGwhPWplKXtjb25zdCBBZT1qZS50b0xvd2VyQ2FzZSgpO3N3aXRjaChBZSl7Y2FzZSByZS5TVFJJQ1Q6Y2FzZSByZS5TSUxFTlQ6Y2FzZSByZS5ESVNBQkxFRDpyZXR1cm4gQWV9'@; put 'fXJldHVybiByZS5TSUxFTlR9ZHQuY29va2llc0NyZWF0ZWQ9MCxkdC5wYXJzZT1ELGR0LmZyb21KU09OPW5lLGR0LnNlcmlhbGl6YWJsZVByb3BlcnRpZXM9T2JqZWN0LmtleXMobHQpLGR0LnNhbWVTaXRlTGV2ZWw9e3N0cmljdDozLGxheDoyLG5vbmU6MX0sZHQuc2FtZVNpdGVDYW5vbmlj'@; put 'YWw9e3N0cmljdDoiU3RyaWN0IixsYXg6IkxheCJ9O2NsYXNzIGFle2NvbnN0cnVjdG9yKEFlLERlPXtyZWplY3RQdWJsaWNTdWZmaXhlczohMH0peyJib29sZWFuIj09dHlwZW9mIERlJiYoRGU9e3JlamVjdFB1YmxpY1N1ZmZpeGVzOkRlfSksdy52YWxpZGF0ZSh3LmlzT2JqZWN0KERlKSxE'@; put 'ZSksdGhpcy5yZWplY3RQdWJsaWNTdWZmaXhlcz1EZS5yZWplY3RQdWJsaWNTdWZmaXhlcyx0aGlzLmVuYWJsZUxvb3NlTW9kZT0hIURlLmxvb3NlTW9kZSx0aGlzLmFsbG93U3BlY2lhbFVzZURvbWFpbj0iYm9vbGVhbiIhPXR5cGVvZiBEZS5hbGxvd1NwZWNpYWxVc2VEb21haW58fERlLmFs'@; put 'bG93U3BlY2lhbFVzZURvbWFpbix0aGlzLnN0b3JlPUFlfHxuZXcgdix0aGlzLnByZWZpeFNlY3VyaXR5PVJlKERlLnByZWZpeFNlY3VyaXR5KSx0aGlzLl9jbG9uZVN5bmM9eGUoImNsb25lIiksdGhpcy5faW1wb3J0Q29va2llc1N5bmM9eGUoIl9pbXBvcnRDb29raWVzIiksdGhpcy5nZXRD'@; put 'b29raWVzU3luYz14ZSgiZ2V0Q29va2llcyIpLHRoaXMuZ2V0Q29va2llU3RyaW5nU3luYz14ZSgiZ2V0Q29va2llU3RyaW5nIiksdGhpcy5nZXRTZXRDb29raWVTdHJpbmdzU3luYz14ZSgiZ2V0U2V0Q29va2llU3RyaW5ncyIpLHRoaXMucmVtb3ZlQWxsQ29va2llc1N5bmM9eGUoInJlbW92'@; put 'ZUFsbENvb2tpZXMiKSx0aGlzLnNldENvb2tpZVN5bmM9eGUoInNldENvb2tpZSIpLHRoaXMuc2VyaWFsaXplU3luYz14ZSgic2VyaWFsaXplIil9c2V0Q29va2llKEFlLERlLEZlLGdlKXtsZXQgY2U7aWYody52YWxpZGF0ZSh3LmlzTm9uRW1wdHlTdHJpbmcoRGUpLGdlLEZlKSx3LmlzRnVu'@; put 'Y3Rpb24oRGUpKXJldHVybihnZT1EZSkobmV3IEVycm9yKCJObyBVUkwgd2FzIHNwZWNpZmllZCIpKTtjb25zdCBoZT1vdChEZSk7aWYody5pc0Z1bmN0aW9uKEZlKSYmKGdlPUZlLEZlPXt9KSx3LnZhbGlkYXRlKHcuaXNGdW5jdGlvbihnZSksZ2UpLCF3LmlzTm9uRW1wdHlTdHJpbmcoQWUp'@; put 'JiYhdy5pc09iamVjdChBZSkmJkFlIGluc3RhbmNlb2YgU3RyaW5nJiYwPT1BZS5sZW5ndGgpcmV0dXJuIGdlKG51bGwpO2NvbnN0IHdlPWsoaGUuaG9zdG5hbWUpLEplPUZlLmxvb3NlfHx0aGlzLmVuYWJsZUxvb3NlTW9kZTtsZXQgdHQ9bnVsbDtpZihGZS5zYW1lU2l0ZUNvbnRleHQmJih0'@; put 'dD1xKEZlLnNhbWVTaXRlQ29udGV4dCksIXR0KSlyZXR1cm4gZ2UobmV3IEVycm9yKFcpKTtpZigic3RyaW5nIj09dHlwZW9mIEFlfHxBZSBpbnN0YW5jZW9mIFN0cmluZyl7aWYoIShBZT1kdC5wYXJzZShBZSx7bG9vc2U6SmV9KSkpcmV0dXJuIGNlPW5ldyBFcnJvcigiQ29va2llIGZhaWxl'@; put 'ZCB0byBwYXJzZSIpLGdlKEZlLmlnbm9yZUVycm9yP251bGw6Y2UpfWVsc2UgaWYoIShBZSBpbnN0YW5jZW9mIGR0KSlyZXR1cm4gY2U9bmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBzZXRDb29raWUgbXVzdCBiZSBhIENvb2tpZSBvYmplY3Qgb3Igc3RyaW5nIiksZ2UoRmUuaWdub3Jl'@; put 'RXJyb3I/bnVsbDpjZSk7Y29uc3QgS2U9RmUubm93fHxuZXcgRGF0ZTtpZih0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzJiZBZS5kb21haW4mJm51bGw9PXMuZ2V0UHVibGljU3VmZml4KEFlLmNkb21haW4oKSx7YWxsb3dTcGVjaWFsVXNlRG9tYWluOnRoaXMuYWxsb3dTcGVjaWFsVXNlRG9t'@; put 'YWluLGlnbm9yZUVycm9yOkZlLmlnbm9yZUVycm9yfSkmJiFJZS50ZXN0KEFlLmRvbWFpbikpcmV0dXJuIGNlPW5ldyBFcnJvcigiQ29va2llIGhhcyBkb21haW4gc2V0IHRvIGEgcHVibGljIHN1ZmZpeCIpLGdlKEZlLmlnbm9yZUVycm9yP251bGw6Y2UpO2lmKEFlLmRvbWFpbil7aWYoIU0o'@; put 'd2UsQWUuY2RvbWFpbigpLCExKSlyZXR1cm4gY2U9bmV3IEVycm9yKGBDb29raWUgbm90IGluIHRoaXMgaG9zdCdzIGRvbWFpbi4gQ29va2llOiR7QWUuY2RvbWFpbigpfSBSZXF1ZXN0OiR7d2V9YCksZ2UoRmUuaWdub3JlRXJyb3I/bnVsbDpjZSk7bnVsbD09QWUuaG9zdE9ubHkmJihBZS5o'@; put 'b3N0T25seT0hMSl9ZWxzZSBBZS5ob3N0T25seT0hMCxBZS5kb21haW49d2U7aWYoKCFBZS5wYXRofHwiLyIhPT1BZS5wYXRoWzBdKSYmKEFlLnBhdGg9QihoZS5wYXRobmFtZSksQWUucGF0aElzRGVmYXVsdD0hMCksITE9PT1GZS5odHRwJiZBZS5odHRwT25seSlyZXR1cm4gY2U9bmV3IEVy'@; put 'cm9yKCJDb29raWUgaXMgSHR0cE9ubHkgYW5kIHRoaXMgaXNuJ3QgYW4gSFRUUCBBUEkiKSxnZShGZS5pZ25vcmVFcnJvcj9udWxsOmNlKTtpZigibm9uZSIhPT1BZS5zYW1lU2l0ZSYmdm9pZCAwIT09QWUuc2FtZVNpdGUmJnR0JiYibm9uZSI9PT10dClyZXR1cm4gY2U9bmV3IEVycm9yKCJD'@; put 'b29raWUgaXMgU2FtZVNpdGUgYnV0IHRoaXMgaXMgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCIpLGdlKEZlLmlnbm9yZUVycm9yP251bGw6Y2UpO2NvbnN0ICR0PXRoaXMucHJlZml4U2VjdXJpdHk9PT1yZS5TSUxFTlQ7aWYodGhpcy5wcmVmaXhTZWN1cml0eSE9PXJlLkRJU0FCTEVEKXtsZXQg'@; put 'WHQsZ3Q9ITE7aWYoZnVuY3Rpb24gcChqZSl7cmV0dXJuIHcudmFsaWRhdGUody5pc09iamVjdChqZSksamUpLCFqZS5rZXkuc3RhcnRzV2l0aCgiX19TZWN1cmUtIil8fGplLnNlY3VyZX0oQWUpP2Z1bmN0aW9uIEkoamUpe3JldHVybiB3LnZhbGlkYXRlKHcuaXNPYmplY3QoamUpKSwhamUu'@; put 'a2V5LnN0YXJ0c1dpdGgoIl9fSG9zdC0iKXx8amUuc2VjdXJlJiZqZS5ob3N0T25seSYmbnVsbCE9amUucGF0aCYmIi8iPT09amUucGF0aH0oQWUpfHwoZ3Q9ITAsWHQ9IkNvb2tpZSBoYXMgX19Ib3N0IHByZWZpeCBidXQgZWl0aGVyIFNlY3VyZSBvciBIb3N0T25seSBhdHRyaWJ1dGUgaXMg'@; put 'bm90IHNldCBvciBQYXRoIGlzIG5vdCAnLyciKTooZ3Q9ITAsWHQ9IkNvb2tpZSBoYXMgX19TZWN1cmUgcHJlZml4IGJ1dCBTZWN1cmUgYXR0cmlidXRlIGlzIG5vdCBzZXQiKSxndClyZXR1cm4gZ2UoRmUuaWdub3JlRXJyb3J8fCR0P251bGw6bmV3IEVycm9yKFh0KSl9Y29uc3QgTHQ9dGhp'@; put 'cy5zdG9yZTtMdC51cGRhdGVDb29raWV8fChMdC51cGRhdGVDb29raWU9ZnVuY3Rpb24oZ3QsWHQsTHIpe3RoaXMucHV0Q29va2llKFh0LExyKX0pLEx0LmZpbmRDb29raWUoQWUuZG9tYWluLEFlLnBhdGgsQWUua2V5LGZ1bmN0aW9uIEd0KGd0LFh0KXtpZihndClyZXR1cm4gZ2UoZ3QpO2Nv'@; put 'bnN0IExyPWZ1bmN0aW9uKGxuKXtpZihsbilyZXR1cm4gZ2UobG4pO2dlKG51bGwsQWUpfTtpZihYdCl7aWYoITE9PT1GZS5odHRwJiZYdC5odHRwT25seSlyZXR1cm4gZ3Q9bmV3IEVycm9yKCJvbGQgQ29va2llIGlzIEh0dHBPbmx5IGFuZCB0aGlzIGlzbid0IGFuIEhUVFAgQVBJIiksZ2Uo'@; put 'RmUuaWdub3JlRXJyb3I/bnVsbDpndCk7QWUuY3JlYXRpb249WHQuY3JlYXRpb24sQWUuY3JlYXRpb25JbmRleD1YdC5jcmVhdGlvbkluZGV4LEFlLmxhc3RBY2Nlc3NlZD1LZSxMdC51cGRhdGVDb29raWUoWHQsQWUsTHIpfWVsc2UgQWUuY3JlYXRpb249QWUubGFzdEFjY2Vzc2VkPUtlLEx0'@; put 'LnB1dENvb2tpZShBZSxMcil9KX1nZXRDb29raWVzKEFlLERlLEZlKXt3LnZhbGlkYXRlKHcuaXNOb25FbXB0eVN0cmluZyhBZSksRmUsQWUpO2NvbnN0IGdlPW90KEFlKTt3LmlzRnVuY3Rpb24oRGUpJiYoRmU9RGUsRGU9e30pLHcudmFsaWRhdGUody5pc09iamVjdChEZSksRmUsRGUpLHcu'@; put 'dmFsaWRhdGUody5pc0Z1bmN0aW9uKEZlKSxGZSk7Y29uc3QgY2U9ayhnZS5ob3N0bmFtZSksaGU9Z2UucGF0aG5hbWV8fCIvIjtsZXQgd2U9RGUuc2VjdXJlO251bGw9PXdlJiZnZS5wcm90b2NvbCYmKCJodHRwczoiPT1nZS5wcm90b2NvbHx8IndzczoiPT1nZS5wcm90b2NvbCkmJih3ZT0h'@; put 'MCk7bGV0IEplPTA7aWYoRGUuc2FtZVNpdGVDb250ZXh0KXtjb25zdCBndD1xKERlLnNhbWVTaXRlQ29udGV4dCk7aWYoSmU9ZHQuc2FtZVNpdGVMZXZlbFtndF0sIUplKXJldHVybiBGZShuZXcgRXJyb3IoVykpfWxldCB0dD1EZS5odHRwO251bGw9PXR0JiYodHQ9ITApO2NvbnN0IEtlPURl'@; put 'Lm5vd3x8RGF0ZS5ub3coKSwkdD0hMSE9PURlLmV4cGlyZSxSdD0hIURlLmFsbFBhdGhzLEx0PXRoaXMuc3RvcmU7ZnVuY3Rpb24gR3QoZ3Qpe2lmKGd0Lmhvc3RPbmx5KXtpZihndC5kb21haW4hPWNlKXJldHVybiExfWVsc2UgaWYoIU0oY2UsZ3QuZG9tYWluLCExKSlyZXR1cm4hMTtyZXR1'@; put 'cm4hKCFSdCYmIUMoaGUsZ3QucGF0aCl8fGd0LnNlY3VyZSYmIXdlfHxndC5odHRwT25seSYmIXR0fHxKZSYmZHQuc2FtZVNpdGVMZXZlbFtndC5zYW1lU2l0ZXx8Im5vbmUiXT5KZXx8JHQmJmd0LmV4cGlyeVRpbWUoKTw9S2UmJihMdC5yZW1vdmVDb29raWUoZ3QuZG9tYWluLGd0LnBhdGgs'@; put 'Z3Qua2V5LCgpPT57fSksMSkpfUx0LmZpbmRDb29raWVzKGNlLFJ0P251bGw6aGUsdGhpcy5hbGxvd1NwZWNpYWxVc2VEb21haW4sKGd0LFh0KT0+e2lmKGd0KXJldHVybiBGZShndCk7WHQ9WHQuZmlsdGVyKEd0KSwhMSE9PURlLnNvcnQmJihYdD1YdC5zb3J0KF9lKSk7Y29uc3QgTHI9bmV3'@; put 'IERhdGU7Zm9yKGNvbnN0IGxuIG9mIFh0KWxuLmxhc3RBY2Nlc3NlZD1McjtGZShudWxsLFh0KX0pfWdldENvb2tpZVN0cmluZyguLi5BZSl7Y29uc3QgRGU9QWUucG9wKCk7dy52YWxpZGF0ZSh3LmlzRnVuY3Rpb24oRGUpLERlKSxBZS5wdXNoKGZ1bmN0aW9uKGdlLGNlKXtnZT9EZShnZSk6'@; put 'RGUobnVsbCxjZS5zb3J0KF9lKS5tYXAoaGU9PmhlLmNvb2tpZVN0cmluZygpKS5qb2luKCI7ICIpKX0pLHRoaXMuZ2V0Q29va2llcy5hcHBseSh0aGlzLEFlKX1nZXRTZXRDb29raWVTdHJpbmdzKC4uLkFlKXtjb25zdCBEZT1BZS5wb3AoKTt3LnZhbGlkYXRlKHcuaXNGdW5jdGlvbihEZSks'@; put 'RGUpLEFlLnB1c2goZnVuY3Rpb24oZ2UsY2Upe2dlP0RlKGdlKTpEZShudWxsLGNlLm1hcChoZT0+aGUudG9TdHJpbmcoKSkpfSksdGhpcy5nZXRDb29raWVzLmFwcGx5KHRoaXMsQWUpfXNlcmlhbGl6ZShBZSl7dy52YWxpZGF0ZSh3LmlzRnVuY3Rpb24oQWUpLEFlKTtsZXQgRGU9dGhpcy5z'@; put 'dG9yZS5jb25zdHJ1Y3Rvci5uYW1lO3cuaXNPYmplY3QoRGUpJiYoRGU9bnVsbCk7Y29uc3QgRmU9e3ZlcnNpb246YHRvdWdoLWNvb2tpZUAke1N9YCxzdG9yZVR5cGU6RGUscmVqZWN0UHVibGljU3VmZml4ZXM6ISF0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzLGVuYWJsZUxvb3NlTW9kZToh'@; put 'IXRoaXMuZW5hYmxlTG9vc2VNb2RlLGFsbG93U3BlY2lhbFVzZURvbWFpbjohIXRoaXMuYWxsb3dTcGVjaWFsVXNlRG9tYWluLHByZWZpeFNlY3VyaXR5OlJlKHRoaXMucHJlZml4U2VjdXJpdHkpLGNvb2tpZXM6W119O2lmKCF0aGlzLnN0b3JlLmdldEFsbENvb2tpZXN8fCJmdW5jdGlvbiIh'@; put 'PXR5cGVvZiB0aGlzLnN0b3JlLmdldEFsbENvb2tpZXMpcmV0dXJuIEFlKG5ldyBFcnJvcigic3RvcmUgZG9lcyBub3Qgc3VwcG9ydCBnZXRBbGxDb29raWVzIGFuZCBjYW5ub3QgYmUgc2VyaWFsaXplZCIpKTt0aGlzLnN0b3JlLmdldEFsbENvb2tpZXMoKGdlLGNlKT0+Z2U/QWUoZ2UpOihG'@; put 'ZS5jb29raWVzPWNlLm1hcChoZT0+KGRlbGV0ZShoZT1oZSBpbnN0YW5jZW9mIGR0P2hlLnRvSlNPTigpOmhlKS5jcmVhdGlvbkluZGV4LGhlKSksQWUobnVsbCxGZSkpKX10b0pTT04oKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVTeW5jKCl9X2ltcG9ydENvb2tpZXMoQWUsRGUpe2xldCBGZT1B'@; put 'ZS5jb29raWVzO2lmKCFGZXx8IUFycmF5LmlzQXJyYXkoRmUpKXJldHVybiBEZShuZXcgRXJyb3IoInNlcmlhbGl6ZWQgamFyIGhhcyBubyBjb29raWVzIGFycmF5IikpO0ZlPUZlLnNsaWNlKCk7Y29uc3QgZ2U9Y2U9PntpZihjZSlyZXR1cm4gRGUoY2UpO2lmKCFGZS5sZW5ndGgpcmV0dXJu'@; put 'IERlKGNlLHRoaXMpO2xldCBoZTt0cnl7aGU9bmUoRmUuc2hpZnQoKSl9Y2F0Y2god2Upe3JldHVybiBEZSh3ZSl9aWYobnVsbD09PWhlKXJldHVybiBnZShudWxsKTt0aGlzLnN0b3JlLnB1dENvb2tpZShoZSxnZSl9O2dlKCl9Y2xvbmUoQWUsRGUpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYo'@; put 'RGU9QWUsQWU9bnVsbCksdGhpcy5zZXJpYWxpemUoKEZlLGdlKT0+e2lmKEZlKXJldHVybiBEZShGZSk7YWUuZGVzZXJpYWxpemUoZ2UsQWUsRGUpfSl9Y2xvbmVTeW5jKEFlKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2xvbmVTeW5jKCk7aWYoIUFlLnN5bmNocm9u'@; put 'b3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIGNsb25lIGRlc3RpbmF0aW9uIHN0b3JlIGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLl9jbG9uZVN5bmMoQWUpfXJlbW92ZUFsbENvb2tpZXMoQWUpe3cudmFsaWRhdGUody5pc0Z1'@; put 'bmN0aW9uKEFlKSxBZSk7Y29uc3QgRGU9dGhpcy5zdG9yZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgRGUucmVtb3ZlQWxsQ29va2llcyYmRGUucmVtb3ZlQWxsQ29va2llcyE9PUEucHJvdG90eXBlLnJlbW92ZUFsbENvb2tpZXMpcmV0dXJuIERlLnJlbW92ZUFsbENvb2tpZXMoQWUpO0RlLmdl'@; put 'dEFsbENvb2tpZXMoKEZlLGdlKT0+e2lmKEZlKXJldHVybiBBZShGZSk7aWYoMD09PWdlLmxlbmd0aClyZXR1cm4gQWUobnVsbCk7bGV0IGNlPTA7Y29uc3QgaGU9W107ZnVuY3Rpb24gd2UoSmUpe2lmKEplJiZoZS5wdXNoKEplKSxjZSsrLGNlPT09Z2UubGVuZ3RoKXJldHVybiBBZShoZS5s'@; put 'ZW5ndGg/aGVbMF06bnVsbCl9Z2UuZm9yRWFjaChKZT0+e0RlLnJlbW92ZUNvb2tpZShKZS5kb21haW4sSmUucGF0aCxKZS5rZXksd2UpfSl9KX1zdGF0aWMgZGVzZXJpYWxpemUoQWUsRGUsRmUpe2xldCBnZTtpZigzIT09YXJndW1lbnRzLmxlbmd0aCYmKEZlPURlLERlPW51bGwpLHcudmFs'@; put 'aWRhdGUody5pc0Z1bmN0aW9uKEZlKSxGZSksInN0cmluZyI9PXR5cGVvZiBBZSl7aWYoZ2U9dWUoQWUpLGdlIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIEZlKGdlKX1lbHNlIGdlPUFlO2NvbnN0IGNlPW5ldyBhZShEZSx7cmVqZWN0UHVibGljU3VmZml4ZXM6Z2UucmVqZWN0UHVibGljU3Vm'@; put 'Zml4ZXMsbG9vc2VNb2RlOmdlLmVuYWJsZUxvb3NlTW9kZSxhbGxvd1NwZWNpYWxVc2VEb21haW46Z2UuYWxsb3dTcGVjaWFsVXNlRG9tYWluLHByZWZpeFNlY3VyaXR5OmdlLnByZWZpeFNlY3VyaXR5fSk7Y2UuX2ltcG9ydENvb2tpZXMoZ2UsaGU9PntpZihoZSlyZXR1cm4gRmUoaGUpO0Zl'@; put 'KG51bGwsY2UpfSl9c3RhdGljIGRlc2VyaWFsaXplU3luYyhBZSxEZSl7Y29uc3QgRmU9InN0cmluZyI9PXR5cGVvZiBBZT9KU09OLnBhcnNlKEFlKTpBZSxnZT1uZXcgYWUoRGUse3JlamVjdFB1YmxpY1N1ZmZpeGVzOkZlLnJlamVjdFB1YmxpY1N1ZmZpeGVzLGxvb3NlTW9kZTpGZS5lbmFi'@; put 'bGVMb29zZU1vZGV9KTtpZighZ2Uuc3RvcmUuc3luY2hyb25vdXMpdGhyb3cgbmV3IEVycm9yKCJDb29raWVKYXIgc3RvcmUgaXMgbm90IHN5bmNocm9ub3VzOyB1c2UgYXN5bmMgQVBJIGluc3RlYWQuIik7cmV0dXJuIGdlLl9pbXBvcnRDb29raWVzU3luYyhGZSksZ2V9fWZ1bmN0aW9uIHhl'@; put 'KGplKXtyZXR1cm4gZnVuY3Rpb24oLi4uQWUpe2lmKCF0aGlzLnN0b3JlLnN5bmNocm9ub3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIHN0b3JlIGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO2xldCBEZSxGZTtpZih0aGlzW2plXSguLi5BZSwoZ2Us'@; put 'Y2UpPT57RGU9Z2UsRmU9Y2V9KSxEZSl0aHJvdyBEZTtyZXR1cm4gRmV9fWFlLmZyb21KU09OPWFlLmRlc2VyaWFsaXplU3luYyxbIl9pbXBvcnRDb29raWVzIiwiY2xvbmUiLCJnZXRDb29raWVzIiwiZ2V0Q29va2llU3RyaW5nIiwiZ2V0U2V0Q29va2llU3RyaW5ncyIsInJlbW92ZUFsbENv'@; put 'b2tpZXMiLCJzZXJpYWxpemUiLCJzZXRDb29raWUiXS5mb3JFYWNoKGplPT57YWUucHJvdG90eXBlW2plXT1MKGFlLnByb3RvdHlwZVtqZV0pfSksYWUuZGVzZXJpYWxpemU9TChhZS5kZXNlcmlhbGl6ZSksai52ZXJzaW9uPVMsai5Db29raWVKYXI9YWUsai5Db29raWU9ZHQsai5TdG9yZT1B'@; put 'LGouTWVtb3J5Q29va2llU3RvcmU9dixqLnBhcnNlRGF0ZT1mLGouZm9ybWF0RGF0ZT1iLGoucGFyc2U9RCxqLmZyb21KU09OPW5lLGouZG9tYWluTWF0Y2g9TSxqLmRlZmF1bHRQYXRoPUIsai5wYXRoTWF0Y2g9QyxqLmdldFB1YmxpY1N1ZmZpeD1zLmdldFB1YmxpY1N1ZmZpeCxqLmNvb2tp'@; put 'ZUNvbXBhcmU9X2Usai5wZXJtdXRlRG9tYWluPWgoMzc3OTEpLnBlcm11dGVEb21haW4sai5wZXJtdXRlUGF0aD1mdW5jdGlvbiBQZShqZSl7aWYody52YWxpZGF0ZSh3LmlzU3RyaW5nKGplKSksIi8iPT09amUpcmV0dXJuWyIvIl07Y29uc3QgQWU9W2plXTtmb3IoO2plLmxlbmd0aD4xOyl7'@; put 'Y29uc3QgRGU9amUubGFzdEluZGV4T2YoIi8iKTtpZigwPT09RGUpYnJlYWs7amU9amUuc3Vic3RyKDAsRGUpLEFlLnB1c2goamUpfXJldHVybiBBZS5wdXNoKCIvIiksQWV9LGouY2Fub25pY2FsRG9tYWluPWssai5QcmVmaXhTZWN1cml0eUVudW09cmUsai5QYXJhbWV0ZXJFcnJvcj13LlBh'@; put 'cmFtZXRlckVycm9yfSw4MjY5MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijtjb25zdHtmcm9tQ2FsbGJhY2s6Y309aCgxODk2NCkscz1oKDk0ODM2KS5pLEE9aCgzNzc5MSkucGVybXV0ZURvbWFpbix2PWgoNzUzMjEpLnose2dldEN1c3RvbUluc3BlY3RTeW1ib2w6QyxnZXRVdGlsSW5zcGVjdDp3'@; put 'fT1oKDI5OTIxKTtjbGFzcyBTIGV4dGVuZHMgc3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5zeW5jaHJvbm91cz0hMCx0aGlzLmlkeD1PYmplY3QuY3JlYXRlKG51bGwpO2NvbnN0IEg9QygpO0gmJih0aGlzW0hdPXRoaXMuaW5zcGVjdCl9aW5zcGVjdCgpe3JldHVybmB7IGlkeDogJHt3'@; put 'KEwpKHRoaXMuaWR4LCExLDIpfSB9YH1maW5kQ29va2llKEgsVixOLHope3JldHVybiB6KG51bGwsdGhpcy5pZHhbSF0mJnRoaXMuaWR4W0hdW1ZdP3RoaXMuaWR4W0hdW1ZdW05dfHxudWxsOnZvaWQgMCl9ZmluZENvb2tpZXMoSCxWLE4seil7Y29uc3QgWT1bXTtpZigiZnVuY3Rpb24iPT10'@; put 'eXBlb2YgTiYmKHo9TixOPSEwKSwhSClyZXR1cm4geihudWxsLFtdKTtsZXQgRjtGPVY/ZnVuY3Rpb24obWUpe09iamVjdC5rZXlzKG1lKS5mb3JFYWNoKENlPT57aWYodihWLENlKSl7Y29uc3QgSWU9bWVbQ2VdO2Zvcihjb25zdCBrZSBpbiBJZSlZLnB1c2goSWVba2VdKX19KX06ZnVuY3Rp'@; put 'b24obWUpe2Zvcihjb25zdCBDZSBpbiBtZSl7Y29uc3QgSWU9bWVbQ2VdO2Zvcihjb25zdCBrZSBpbiBJZSlZLnB1c2goSWVba2VdKX19O2NvbnN0IFc9QShILE4pfHxbSF0scT10aGlzLmlkeDtXLmZvckVhY2gocmU9Pntjb25zdCBtZT1xW3JlXTttZSYmRihtZSl9KSx6KG51bGwsWSl9cHV0'@; put 'Q29va2llKEgsVil7dGhpcy5pZHhbSC5kb21haW5dfHwodGhpcy5pZHhbSC5kb21haW5dPU9iamVjdC5jcmVhdGUobnVsbCkpLHRoaXMuaWR4W0guZG9tYWluXVtILnBhdGhdfHwodGhpcy5pZHhbSC5kb21haW5dW0gucGF0aF09T2JqZWN0LmNyZWF0ZShudWxsKSksdGhpcy5pZHhbSC5kb21h'@; put 'aW5dW0gucGF0aF1bSC5rZXldPUgsVihudWxsKX11cGRhdGVDb29raWUoSCxWLE4pe3RoaXMucHV0Q29va2llKFYsTil9cmVtb3ZlQ29va2llKEgsVixOLHope3RoaXMuaWR4W0hdJiZ0aGlzLmlkeFtIXVtWXSYmdGhpcy5pZHhbSF1bVl1bTl0mJmRlbGV0ZSB0aGlzLmlkeFtIXVtWXVtOXSx6'@; put 'KG51bGwpfXJlbW92ZUNvb2tpZXMoSCxWLE4pe3JldHVybiB0aGlzLmlkeFtIXSYmKFY/ZGVsZXRlIHRoaXMuaWR4W0hdW1ZdOmRlbGV0ZSB0aGlzLmlkeFtIXSksTihudWxsKX1yZW1vdmVBbGxDb29raWVzKEgpe3JldHVybiB0aGlzLmlkeD1PYmplY3QuY3JlYXRlKG51bGwpLEgobnVsbCl9'@; put 'Z2V0QWxsQ29va2llcyhIKXtjb25zdCBWPVtdLE49dGhpcy5pZHg7T2JqZWN0LmtleXMoTikuZm9yRWFjaChZPT57T2JqZWN0LmtleXMoTltZXSkuZm9yRWFjaChXPT57T2JqZWN0LmtleXMoTltZXVtXXSkuZm9yRWFjaChyZT0+e251bGwhPT1yZSYmVi5wdXNoKE5bWV1bV11bcmVdKX0pfSl9'@; put 'KSxWLnNvcnQoKFksRik9PihZLmNyZWF0aW9uSW5kZXh8fDApLShGLmNyZWF0aW9uSW5kZXh8fDApKSxIKG51bGwsVil9fWZ1bmN0aW9uIEwoVSl7Y29uc3QgSD1PYmplY3Qua2V5cyhVKTtpZigwPT09SC5sZW5ndGgpcmV0dXJuIltPYmplY3Q6IG51bGwgcHJvdG90eXBlXSB7fSI7bGV0IFY9'@; put 'IltPYmplY3Q6IG51bGwgcHJvdG90eXBlXSB7XG4iO3JldHVybiBPYmplY3Qua2V5cyhVKS5mb3JFYWNoKChOLHopPT57Vis9ZnVuY3Rpb24gUihVLEgpe2xldCBOPWAgICcke1V9JzogW09iamVjdDogbnVsbCBwcm90b3R5cGVdIHtcbmA7cmV0dXJuIE9iamVjdC5rZXlzKEgpLmZvckVhY2go'@; put 'KHosWSxGKT0+e04rPWZ1bmN0aW9uIHgoVSxIKXtjb25zdCBWPSIgICAgIjtsZXQgTj1gJHtWfScke1V9JzogW09iamVjdDogbnVsbCBwcm90b3R5cGVdIHtcbmA7cmV0dXJuIE9iamVjdC5rZXlzKEgpLmZvckVhY2goKHosWSxGKT0+e04rPWAgICAgICAke3p9OiAke0hbel0uaW5zcGVjdCgp'@; put 'fWAsWTxGLmxlbmd0aC0xJiYoTis9IiwiKSxOKz0iXG4ifSksTis9YCR7Vn19YCxOfSh6LEhbel0pLFk8Ri5sZW5ndGgtMSYmKE4rPSIsIiksTis9IlxuIn0pLE4rPSIgIH0iLE59KE4sVVtOXSksejxILmxlbmd0aC0xJiYoVis9IiwiKSxWKz0iXG4ifSksVis9In0iLFZ9WyJmaW5kQ29va2ll'@; put 'IiwiZmluZENvb2tpZXMiLCJwdXRDb29raWUiLCJ1cGRhdGVDb29raWUiLCJyZW1vdmVDb29raWUiLCJyZW1vdmVDb29raWVzIiwicmVtb3ZlQWxsQ29va2llcyIsImdldEFsbENvb2tpZXMiXS5mb3JFYWNoKFU9PntTLnByb3RvdHlwZVtVXT1jKFMucHJvdG90eXBlW1VdKX0pLGoubj1TfSw3'@; put 'NTMyMShmZSxqKXsidXNlIHN0cmljdCI7ai56PWZ1bmN0aW9uIGgoeSxjKXtyZXR1cm4gYz09PXl8fDA9PT15LmluZGV4T2YoYykmJigiLyI9PT1jLnN1YnN0cigtMSl8fCIvIj09PXkuc3Vic3RyKGMubGVuZ3RoLDEpKX19LDM3NzkxKGZlLGosaCl7InVzZSBzdHJpY3QiO2NvbnN0IHk9aCg2'@; put 'MTE3Nyk7ai5wZXJtdXRlRG9tYWluPWZ1bmN0aW9uIGMocyxBKXtjb25zdCB2PXkuZ2V0UHVibGljU3VmZml4KHMse2FsbG93U3BlY2lhbFVzZURvbWFpbjpBfSk7aWYoIXYpcmV0dXJuIG51bGw7aWYodj09cylyZXR1cm5bc107Ii4iPT1zLnNsaWNlKC0xKSYmKHM9cy5zbGljZSgwLC0xKSk7'@; put 'Y29uc3Qgdz1zLnNsaWNlKDAsLSh2Lmxlbmd0aCsxKSkuc3BsaXQoIi4iKS5yZXZlcnNlKCk7bGV0IFM9djtjb25zdCBMPVtTXTtmb3IoO3cubGVuZ3RoOylTPWAke3cuc2hpZnQoKX0uJHtTfWAsTC5wdXNoKFMpO3JldHVybiBMfX0sNjExNzcoZmUsaixoKXsidXNlIHN0cmljdCI7Y29uc3Qg'@; put 'eT1oKDU3MDM0KSxjPVsibG9jYWwiLCJleGFtcGxlIiwiaW52YWxpZCIsImxvY2FsaG9zdCIsInRlc3QiXSxzPVsibG9jYWxob3N0IiwiaW52YWxpZCJdO2ouZ2V0UHVibGljU3VmZml4PWZ1bmN0aW9uIEEodixDPXt9KXtjb25zdCB3PXYuc3BsaXQoIi4iKSxTPXdbdy5sZW5ndGgtMV0sUj0h'@; put 'IUMuaWdub3JlRXJyb3I7aWYoQy5hbGxvd1NwZWNpYWxVc2VEb21haW4mJmMuaW5jbHVkZXMoUykpe2lmKHcubGVuZ3RoPjEpcmV0dXJuYCR7d1t3Lmxlbmd0aC0yXX0uJHtTfWA7aWYocy5pbmNsdWRlcyhTKSlyZXR1cm5gJHtTfWB9aWYoIVImJmMuaW5jbHVkZXMoUykpdGhyb3cgbmV3IEVy'@; put 'cm9yKGBDb29raWUgaGFzIGRvbWFpbiBzZXQgdG8gdGhlIHB1YmxpYyBzdWZmaXggIiR7U30iIHdoaWNoIGlzIGEgc3BlY2lhbCB1c2UgZG9tYWluLiBUbyBhbGxvdyB0aGlzLCBjb25maWd1cmUgeW91ciBDb29raWVKYXIgd2l0aCB7YWxsb3dTcGVjaWFsVXNlRG9tYWluOnRydWUsIHJlamVj'@; put 'dFB1YmxpY1N1ZmZpeGVzOiBmYWxzZX0uYCk7cmV0dXJuIHkuZ2V0KHYpfX0sOTQ4MzYoZmUsail7InVzZSBzdHJpY3QiO2ouaT1jbGFzcyBoe2NvbnN0cnVjdG9yKCl7dGhpcy5zeW5jaHJvbm91cz0hMX1maW5kQ29va2llKGMscyxBLHYpe3Rocm93IG5ldyBFcnJvcigiZmluZENvb2tpZSBp'@; put 'cyBub3QgaW1wbGVtZW50ZWQiKX1maW5kQ29va2llcyhjLHMsQSx2KXt0aHJvdyBuZXcgRXJyb3IoImZpbmRDb29raWVzIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXB1dENvb2tpZShjLHMpe3Rocm93IG5ldyBFcnJvcigicHV0Q29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXVwZGF0ZUNvb2tp'@; put 'ZShjLHMsQSl7dGhyb3cgbmV3IEVycm9yKCJ1cGRhdGVDb29raWUgaXMgbm90IGltcGxlbWVudGVkIil9cmVtb3ZlQ29va2llKGMscyxBLHYpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQ29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXJlbW92ZUNvb2tpZXMoYyxzLEEpe3Rocm93IG5ldyBF'@; put 'cnJvcigicmVtb3ZlQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1yZW1vdmVBbGxDb29raWVzKGMpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1nZXRBbGxDb29raWVzKGMpe3Rocm93IG5ldyBFcnJvcigiZ2V0QWxsQ29va2llcyBp'@; put 'cyBub3QgaW1wbGVtZW50ZWQgKHRoZXJlZm9yZSBqYXIgY2Fubm90IGJlIHNlcmlhbGl6ZWQpIil9fX0sMjk5MjEoZmUsaixoKXtmdW5jdGlvbiB5KCl7dHJ5e3JldHVybiBoKDQwNTM3KX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gYygpe3JldHVybiBTeW1ib2wuZm9yKCJub2RlanMu'@; put 'dXRpbC5pbnNwZWN0LmN1c3RvbSIpfWouZ2V0VXRpbEluc3BlY3Q9ZnVuY3Rpb24odixDPXt9KXtjb25zdCBTPShDLnJlcXVpcmVVdGlsfHx5KSgpO3JldHVybiBmdW5jdGlvbihSLHgsVSl7cmV0dXJuIFM/Uy5pbnNwZWN0KFIseCxVKTp2KFIpfX0sai5nZXRDdXN0b21JbnNwZWN0U3ltYm9s'@; put 'PWZ1bmN0aW9uKHY9e30pe3JldHVybih2Lmxvb2t1cEN1c3RvbUluc3BlY3RTeW1ib2x8fGMpKCl8fGZ1bmN0aW9uIHMoQSl7Y29uc3QgQz0oQS5yZXF1aXJlVXRpbHx8eSkoKTtyZXR1cm4gQz9DLmluc3BlY3QuY3VzdG9tOm51bGx9KHYpfX0sODI5ODIoZmUsail7InVzZSBzdHJpY3QiO2Z1'@; put 'bmN0aW9uIGgoUil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFJ9ZnVuY3Rpb24gQShSKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFJ8fFIgaW5zdGFuY2VvZiBTdHJpbmd9ZnVuY3Rpb24gdihSKXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PXRvU3RyaW5nLmNhbGwoUil9Y2xhc3MgTCBl'@; put 'eHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKC4uLngpe3N1cGVyKC4uLngpfX1qLlBhcmFtZXRlckVycm9yPUwsai5pc0Z1bmN0aW9uPWgsai5pc05vbkVtcHR5U3RyaW5nPWZ1bmN0aW9uIHkoUil7cmV0dXJuIEEoUikmJiIiIT09Un0sai5pc0RhdGU9ZnVuY3Rpb24gYyhSKXtyZXR1cm4gZnVu'@; put 'Y3Rpb24gQyhSLHgpe3RyeXtyZXR1cm4gUiBpbnN0YW5jZW9mIHh9Y2F0Y2h7cmV0dXJuITF9fShSLERhdGUpJiZmdW5jdGlvbiB3KFIpe3JldHVybiJudW1iZXIiPT10eXBlb2YgUiYmUiUxPT0wfShSLmdldFRpbWUoKSl9LGouaXNFbXB0eVN0cmluZz1mdW5jdGlvbiBzKFIpe3JldHVybiIi'@; put 'PT09Unx8UiBpbnN0YW5jZW9mIFN0cmluZyYmIiI9PT1SLnRvU3RyaW5nKCl9LGouaXNTdHJpbmc9QSxqLmlzT2JqZWN0PXYsai52YWxpZGF0ZT1mdW5jdGlvbiBTKFIseCxVKXtpZihoKHgpfHwoVT14LHg9bnVsbCksdihVKXx8KFU9e0Vycm9yOiJGYWlsZWQgQ2hlY2sifSksIVIpe2lmKCF4'@; put 'KXRocm93IG5ldyBMKFUpO3gobmV3IEwoVSkpfX19LDYzMDkzKGZlKXtmZS5leHBvcnRzPSI0LjEuMyJ9LDE4ODc1KGZlLGosaCl7InVzZSBzdHJpY3QiO2gucihqKSxoLmQoaix7dWNzMmRlY29kZTooKT0+cX0pO2NvbnN0IHk9MjE0NzQ4MzY0NyxjPTM2LFI9L154bi0tLyx4PS9bXlwwLVx4'@; put 'N0ZdLyxVPS9bXHgyRVx1MzAwMlx1RkYwRVx1RkY2MV0vZyxIPXtvdmVyZmxvdzoiT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MiLCJub3QtYmFzaWMiOiJJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpIiwiaW52YWxp'@; put 'ZC1pbnB1dCI6IkludmFsaWQgaW5wdXQifSxOPU1hdGguZmxvb3Isej1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIFkoTSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoSFtNXSl9ZnVuY3Rpb24gVyhNLEIpe2NvbnN0IEs9TS5zcGxpdCgiQCIpO2xldCBHPSIiO0subGVuZ3RoPjEmJihHPUtb'@; put 'MF0rIkAiLE09S1sxXSk7Y29uc3QgcD1mdW5jdGlvbiBGKE0sQil7Y29uc3QgSz1bXTtsZXQgRz1NLmxlbmd0aDtmb3IoO0ctLTspS1tHXT1CKE1bR10pO3JldHVybiBLfSgoTT1NLnJlcGxhY2UoVSwiLiIpKS5zcGxpdCgiLiIpLEIpLmpvaW4oIi4iKTtyZXR1cm4gRytwfWZ1bmN0aW9uIHEo'@; put 'TSl7Y29uc3QgQj1bXTtsZXQgSz0wO2NvbnN0IEc9TS5sZW5ndGg7Zm9yKDtLPEc7KXtjb25zdCBEPU0uY2hhckNvZGVBdChLKyspO2lmKEQ+PTU1Mjk2JiZEPD01NjMxOSYmSzxHKXtjb25zdCBwPU0uY2hhckNvZGVBdChLKyspOzU2MzIwPT0oNjQ1MTImcCk/Qi5wdXNoKCgoMTAyMyZEKTw8'@; put 'MTApKygxMDIzJnApKzY1NTM2KTooQi5wdXNoKEQpLEstLSl9ZWxzZSBCLnB1c2goRCl9cmV0dXJuIEJ9Y29uc3QgcmU9TT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uTSksbWU9ZnVuY3Rpb24oTSl7cmV0dXJuIE0+PTQ4JiZNPDU4P00tNDgrMjY6TT49NjUmJk08OTE/TS02NTpNPj05NyYm'@; put 'TTwxMjM/TS05NzpjfSxDZT1mdW5jdGlvbihNLEIpe3JldHVybiBNKzIyKzc1KihNPDI2KS0oKDAhPUIpPDw1KX0sSWU9ZnVuY3Rpb24oTSxCLEspe2xldCBHPTA7Zm9yKE09Sz9OKE0vNzAwKTpNPj4xLE0rPU4oTS9CKTtNPjQ1NTtHKz1jKU09TihNLzM1KTtyZXR1cm4gTihHKzM2Kk0vKE0r'@; put 'MzgpKX0sa2U9ZnVuY3Rpb24oTSl7Y29uc3QgQj1bXSxLPU0ubGVuZ3RoO2xldCBHPTAsRD0xMjgscD03MixJPU0ubGFzdEluZGV4T2YoIi0iKTtJPDAmJihJPTApO2ZvcihsZXQgdWU9MDt1ZTxJOysrdWUpTS5jaGFyQ29kZUF0KHVlKT49MTI4JiZZKCJub3QtYmFzaWMiKSxCLnB1c2goTS5j'@; put 'aGFyQ29kZUF0KHVlKSk7Zm9yKGxldCB1ZT1JPjA/SSsxOjA7dWU8Szspe2NvbnN0IG5lPUc7Zm9yKGxldCBQZT0xLG90PWM7O290Kz1jKXt1ZT49SyYmWSgiaW52YWxpZC1pbnB1dCIpO2NvbnN0IGx0PW1lKE0uY2hhckNvZGVBdCh1ZSsrKSk7bHQ+PWMmJlkoImludmFsaWQtaW5wdXQiKSxs'@; put 'dD5OKCh5LUcpL1BlKSYmWSgib3ZlcmZsb3ciKSxHKz1sdCpQZTtjb25zdCBkdD1vdDw9cD8xOm90Pj1wKzI2PzI2Om90LXA7aWYobHQ8ZHQpYnJlYWs7Y29uc3QgUmU9Yy1kdDtQZT5OKHkvUmUpJiZZKCJvdmVyZmxvdyIpLFBlKj1SZX1jb25zdCBfZT1CLmxlbmd0aCsxO3A9SWUoRy1uZSxf'@; put 'ZSwwPT1uZSksTihHL19lKT55LUQmJlkoIm92ZXJmbG93IiksRCs9TihHL19lKSxHJT1fZSxCLnNwbGljZShHKyssMCxEKX1yZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uQil9LHFlPWZ1bmN0aW9uKE0pe2NvbnN0IEI9W10sSz0oTT1xKE0pKS5sZW5ndGg7bGV0IEc9MTI4LEQ9MCxw'@; put 'PTcyO2Zvcihjb25zdCBuZSBvZiBNKW5lPDEyOCYmQi5wdXNoKHoobmUpKTtjb25zdCBJPUIubGVuZ3RoO2xldCB1ZT1JO2ZvcihJJiZCLnB1c2goIi0iKTt1ZTxLOyl7bGV0IG5lPXk7Zm9yKGNvbnN0IFBlIG9mIE0pUGU+PUcmJlBlPG5lJiYobmU9UGUpO2NvbnN0IF9lPXVlKzE7bmUtRz5O'@; put 'KCh5LUQpL19lKSYmWSgib3ZlcmZsb3ciKSxEKz0obmUtRykqX2UsRz1uZTtmb3IoY29uc3QgUGUgb2YgTSlpZihQZTxHJiYrK0Q+eSYmWSgib3ZlcmZsb3ciKSxQZT09PUcpe2xldCBvdD1EO2ZvcihsZXQgbHQ9Yzs7bHQrPWMpe2NvbnN0IGR0PWx0PD1wPzE6bHQ+PXArMjY/MjY6bHQtcDtp'@; put 'ZihvdDxkdClicmVhaztjb25zdCBSZT1vdC1kdCxhZT1jLWR0O0IucHVzaCh6KENlKGR0K1JlJWFlLDApKSksb3Q9TihSZS9hZSl9Qi5wdXNoKHooQ2Uob3QsMCkpKSxwPUllKEQsX2UsdWU9PT1JKSxEPTAsKyt1ZX0rK0QsKytHfXJldHVybiBCLmpvaW4oIiIpfSxYPWZ1bmN0aW9uKE0pe3Jl'@; put 'dHVybiBXKE0sZnVuY3Rpb24oQil7cmV0dXJuIFIudGVzdChCKT9rZShCLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpOkJ9KX0sZj1mdW5jdGlvbihNKXtyZXR1cm4gVyhNLGZ1bmN0aW9uKEIpe3JldHVybiB4LnRlc3QoQik/InhuLS0iK3FlKEIpOkJ9KX07aC5kKGosWyJkZWNvZGUiLDAsa2Us'@; put 'ImRlZmF1bHQiLDAse3ZlcnNpb246IjIuMy4xIix1Y3MyOntkZWNvZGU6cSxlbmNvZGU6cmV9LGRlY29kZTprZSxlbmNvZGU6cWUsdG9BU0NJSTpmLHRvVW5pY29kZTpYfSwiZW5jb2RlIiwwLHFlLCJ0b0FTQ0lJIiwwLGYsInRvVW5pY29kZSIsMCxYLCJ1Y3MyZW5jb2RlIiwwLHJlXSl9LDE4'@; put 'OTY0KGZlLGopeyJ1c2Ugc3RyaWN0IjtqLmZyb21DYWxsYmFjaz1mdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdKXJldHVybiBuZXcgUHJvbWlzZSgoYyxz'@; put 'KT0+e2FyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoXT0oQSx2KT0+e2lmKEEpcmV0dXJuIHMoQSk7Yyh2KX0sYXJndW1lbnRzLmxlbmd0aCsrLHkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk7eS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJuYW1lIix7dmFsdWU6eS5uYW1lfSl9fSw0NTM3Mihm'@; put 'ZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odixDLHcsUyl7cmV0dXJuIG5ldyh3fHwodz1Qcm9taXNlKSkoZnVuY3Rpb24oUix4KXtmdW5jdGlvbiBVKE4pe3RyeXtWKFMubmV4dChOKSl9Y2F0Y2goeil7eCh6KX19ZnVuY3Rpb24gSChO'@; put 'KXt0cnl7VihTLnRocm93KE4pKX1jYXRjaCh6KXt4KHopfX1mdW5jdGlvbiBWKE4pe04uZG9uZT9SKE4udmFsdWUpOmZ1bmN0aW9uIEwoUil7cmV0dXJuIFIgaW5zdGFuY2VvZiB3P1I6bmV3IHcoZnVuY3Rpb24oeCl7eChSKX0pfShOLnZhbHVlKS50aGVuKFUsSCl9VigoUz1TLmFwcGx5KHYs'@; put 'Q3x8W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLkNvbnRleHRNYW5hZ2VyPXZvaWQgMDtjb25zdCBjPWgoMjkyNjYpLHM9aCg2MzQwKTtqLkNvbnRleHRNYW5hZ2VyPWNsYXNzIEF7Z2V0IGdldERlZmF1bHRDb21wdXRl'@; put 'Q29udGV4dHMoKXtyZXR1cm4gdGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzfWdldCBnZXREZWZhdWx0TGF1bmNoZXJDb250ZXh0cygpe3JldHVybiB0aGlzLmRlZmF1bHRMYXVuY2hlckNvbnRleHRzfWNvbnN0cnVjdG9yKEMsdyl7dGhpcy5zZXJ2ZXJVcmw9Qyx0aGlzLnJlcXVlc3RDbGll'@; put 'bnQ9dyx0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGNvbXB1dGUgY29udGV4dCIsIkRhdGEgTWluaW5nIGNvbXB1dGUgY29udGV4dCIsIkltcG9ydCA5IHNlcnZpY2UgY29tcHV0ZSBjb250ZXh0IiwiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBj'@; put 'b250ZXh0IiwiU0FTIE1vZGVsIE1hbmFnZXIgY29tcHV0ZSBjb250ZXh0IiwiU0FTIFN0dWRpbyBjb21wdXRlIGNvbnRleHQiLCJTQVMgVmlzdWFsIEZvcmVjYXN0aW5nIGNvbXB1dGUgY29udGV4dCJdLHRoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNl'@; put 'IGxhdW5jaGVyIGNvbnRleHQiLCJEYXRhIE1pbmluZyBsYXVuY2hlciBjb250ZXh0IiwiSW1wb3J0IDkgc2VydmljZSBsYXVuY2hlciBjb250ZXh0IiwiSm9iIEZsb3cgRXhlY3V0aW9uIGxhdW5jaGVyIGNvbnRleHQiLCJTQVMgSm9iIEV4ZWN1dGlvbiBsYXVuY2hlciBjb250ZXh0IiwiU0FT'@; put 'IE1vZGVsIE1hbmFnZXIgbGF1bmNoZXIgY29udGV4dCIsIlNBUyBTdHVkaW8gbGF1bmNoZXIgY29udGV4dCIsIlNBUyBWaXN1YWwgRm9yZWNhc3RpbmcgbGF1bmNoZXIgY29udGV4dCJdLEMmJigwLGMuaXNVcmwpKEMpfWdldENvbXB1dGVDb250ZXh0cyhDKXtyZXR1cm4geSh0aGlzLHZvaWQg'@; put 'MCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3R7cmVzdWx0Ond9PXlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9L2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDBgLEMpLmNhdGNoKEw9Pnt0aHJvdygwLHMucHJlZml4TWVzc2FnZSkoTCwiRXJyb3Igd2hp'@; put 'bGUgZ2V0dGluZyBjb21wdXRlIGNvbnRleHRzLiAiKX0pO3JldHVybih3JiZ3Lml0ZW1zP3cuaXRlbXM6W10pLm1hcChMPT4oe2NyZWF0ZWRCeTpMLmNyZWF0ZWRCeSxpZDpMLmlkLG5hbWU6TC5uYW1lLHZlcnNpb246TC52ZXJzaW9uLGF0dHJpYnV0ZXM6e319KSl9KX1nZXRMYXVuY2hlckNv'@; put 'bnRleHRzKEMpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdHtyZXN1bHQ6d309eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0vbGF1bmNoZXIvY29udGV4dHM/bGltaXQ9MTAwMDBgLEMpLmNhdGNoKEw9Pnt0aHJvdygw'@; put 'LHMucHJlZml4TWVzc2FnZSkoTCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBsYXVuY2hlciBjb250ZXh0cy4gIil9KTtyZXR1cm4odyYmdy5pdGVtcz93Lml0ZW1zOltdKS5tYXAoTD0+KHtjcmVhdGVkQnk6TC5jcmVhdGVkQnksaWQ6TC5pZCxuYW1lOkwubmFtZSx2ZXJzaW9uOkwudmVyc2lvbixh'@; put 'dHRyaWJ1dGVzOnt9fSkpfSl9Y3JlYXRlQ29tcHV0ZUNvbnRleHQoQyx3LFMsTCxSLHgpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0aGlzLnZhbGlkYXRlQ29udGV4dE5hbWUoQyksdGhpcy5pc0RlZmF1bHRDb250ZXh0KEMsdGhpcy5kZWZhdWx0Q29tcHV0'@; put 'ZUNvbnRleHRzLGBDb21wdXRlIGNvbnRleHQgJyR7Q30nIGFscmVhZHkgZXhpc3RzLmApLCh5aWVsZCB0aGlzLmdldENvbXB1dGVDb250ZXh0cyhSKSkuZmluZChZPT5ZLm5hbWU9PT1DKSl0aHJvdyBuZXcgRXJyb3IoYENvbXB1dGUgY29udGV4dCAnJHtDfScgYWxyZWFkeSBleGlzdHMuYCk7'@; put 'aWYodyYmIXRoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHMuaW5jbHVkZXModykmJiEoeWllbGQgdGhpcy5nZXRMYXVuY2hlckNvbnRleHRzKFIpKS5maW5kKEY9PkYubmFtZT09PXcpKXtjb25zdCBGPWBUaGUgbGF1bmNoZXIgY29udGV4dCBmb3IgJHt3fWAscT15aWVsZCB0aGlzLmNyZWF0'@; put 'ZUxhdW5jaGVyQ29udGV4dCh3LEYsImRpcmVjdCIsUikuY2F0Y2gocmU9Pnt0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGNyZWF0aW5nIGxhdW5jaGVyIGNvbnRleHQuICR7cmV9YCl9KTtpZighcXx8IXEubmFtZSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHdoaWxlIGNyZWF0aW5nIGxh'@; put 'dW5jaGVyIGNvbnRleHQuIik7dz1xLm5hbWV9bGV0IFY9e3JldXNlU2VydmVyUHJvY2Vzc2VzOiEwfTtTJiYoVj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sVikse3J1blNlcnZlckFzOlN9KSk7Y29uc3QgTj17bmFtZTpDLGxhdW5jaENvbnRleHQ6e2NvbnRleHROYW1lOnd8fCIi'@; put 'fSxhdHRyaWJ1dGVzOlZ9O3gmJngubGVuZ3RoP04uYXV0aG9yaXplZFVzZXJzPXg6Ti5hdXRob3JpemVBbGxBdXRoZW50aWNhdGVkVXNlcnM9ITAsTCYmKE4uZW52aXJvbm1lbnQ9e2F1dG9FeGVjTGluZXM6TH0pO2NvbnN0e3Jlc3VsdDp6fT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucG9z'@; put 'dChgJHt0aGlzLnNlcnZlclVybH0vY29tcHV0ZS9jb250ZXh0c2AsTixSKS5jYXRjaChZPT57dGhyb3coMCxzLnByZWZpeE1lc3NhZ2UpKFksIkVycm9yIHdoaWxlIGNyZWF0aW5nIGNvbXB1dGUgY29udGV4dC4gIil9KTtyZXR1cm4gen0pfWNyZWF0ZUxhdW5jaGVyQ29udGV4dChDLHcsUz0i'@; put 'ZGlyZWN0IixMKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoIUMpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IG5hbWUgaXMgcmVxdWlyZWQuIik7aWYodGhpcy5pc0RlZmF1bHRDb250ZXh0KEMsdGhpcy5kZWZhdWx0TGF1bmNoZXJDb250ZXh0cyxgTGF1bmNo'@; put 'ZXIgY29udGV4dCAnJHtDfScgYWxyZWFkeSBleGlzdHMuYCksKHlpZWxkIHRoaXMuZ2V0TGF1bmNoZXJDb250ZXh0cyhMKSkuZmluZChWPT5WLm5hbWU9PT1DKSl0aHJvdyBuZXcgRXJyb3IoYExhdW5jaGVyIGNvbnRleHQgJyR7Q30nIGFscmVhZHkgZXhpc3RzLmApO2NvbnN0IFU9e25hbWU6'@; put 'QyxkZXNjcmlwdGlvbjp3LGxhdW5jaFR5cGU6U30se3Jlc3VsdDpIfT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucG9zdChgJHt0aGlzLnNlcnZlclVybH0vbGF1bmNoZXIvY29udGV4dHNgLFUsTCkuY2F0Y2goVj0+e3Rocm93KDAscy5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSBj'@; put 'cmVhdGluZyBsYXVuY2hlciBjb250ZXh0LiAiKX0pO3JldHVybiBIfSl9ZWRpdENvbXB1dGVDb250ZXh0KEMsdyxTKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEw7dGhpcy52YWxpZGF0ZUNvbnRleHROYW1lKEMpLHRoaXMuaXNEZWZhdWx0Q29udGV4dChD'@; put 'LHRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cywiRWRpdGluZyBkZWZhdWx0IFNBUyBjb21wdXRlIGNvbnRleHRzIGlzIG5vdCBhbGxvd2VkLiIsITApLEw9eWllbGQgdGhpcy5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZShDLFMpLEx8fChMPXlpZWxkIHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRC'@; put 'eUlkKHcuaWQsUykpO2NvbnN0e3Jlc3VsdDpSLGV0YWc6eH09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0vY29tcHV0ZS9jb250ZXh0cy8ke0wuaWR9YCxTKS5jYXRjaChVPT57dGhyb3cgVSYmNDA0PT09VS5zdGF0dXM/bmV3IEVycm9yKGBUaGUgY29u'@; put 'dGV4dCAnJHtDfScgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci5gKTpVfSk7cmV0dXJuIHlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5wdXQoYC9jb21wdXRlL2NvbnRleHRzLyR7Ui5pZH1gLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LFIpLHcpLHth'@; put 'dHRyaWJ1dGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxSLmF0dHJpYnV0ZXMpLHcuYXR0cmlidXRlcyl9KSxTLHsiSWYtTWF0Y2giOnh9KX0pfWdldENvbXB1dGVDb250ZXh0QnlOYW1lKEMsdyl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0'@; put 'e3Jlc3VsdDpTfT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KGAke3RoaXMuc2VydmVyVXJsfS9jb21wdXRlL2NvbnRleHRzP2ZpbHRlcj1lcShuYW1lLCAiJHtDfSIpYCx3KS5jYXRjaChMPT57dGhyb3coMCxzLnByZWZpeE1lc3NhZ2UpKEwsIkVycm9yIHdoaWxlIGdldHRpbmcgY29t'@; put 'cHV0ZSBjb250ZXh0IGJ5IG5hbWUuICIpfSk7aWYoIVN8fCFTLml0ZW1zfHwhUy5pdGVtcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBUaGUgY29udGV4dCAnJHtDfScgd2FzIG5vdCBmb3VuZCBhdCAnJHt0aGlzLnNlcnZlclVybH0nLmApO3JldHVybiBTLml0ZW1zWzBdfSl9Z2V0Q29tcHV0'@; put 'ZUNvbnRleHRCeUlkKEMsdyl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0e3Jlc3VsdDpTfT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KGAke3RoaXMuc2VydmVyVXJsfS9jb21wdXRlL2NvbnRleHRzLyR7Q31gLHcpLmNhdGNoKEw9Pnt0aHJvdygw'@; put 'LHMucHJlZml4TWVzc2FnZSkoTCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBjb21wdXRlIGNvbnRleHQgYnkgaWQuICIpfSk7cmV0dXJuIFN9KX1nZXRFeGVjdXRhYmxlQ29udGV4dHMoQyx3KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3R7cmVzdWx0OlN9PXlp'@; put 'ZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9L2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDBgLHc/LmFjY2Vzc190b2tlbikuY2F0Y2goSD0+e3Rocm93KDAscy5wcmVmaXhNZXNzYWdlKShILCJFcnJvciB3aGlsZSBmZXRjaGluZyBjb21wdXRlIGNvbnRl'@; put 'eHRzLiIpfSksTD1TLml0ZW1zfHxbXSxSPVtdLHg9TC5tYXAoSD0+e2NvbnN0IFY9WyIlcHV0ICY9c3lzdXNlcmlkOyJdO3JldHVybigpPT5DKGB0ZXN0LSR7SC5uYW1lfWAsVixILm5hbWUsdyxudWxsLCExLCEwLCEwKS5jYXRjaChOPT5OKX0pO2xldCBVPVtdO2Zvcihjb25zdCBIIG9mIHgp'@; put 'VS5wdXNoKHlpZWxkIEgoKSk7cmV0dXJuIFUuZm9yRWFjaCgoSCxWKT0+e2lmKEgmJkgubG9nKXRyeXtsZXQgej0iIjtjb25zdCBZPUgubG9nLnNwbGl0KCJcbiIpLmZpbmQoRj0+Ri5zdGFydHNXaXRoKCJTWVNVU0VSSUQ9IikpO1kmJih6PVkucmVwbGFjZSgiU1lTVVNFUklEPSIsIiIpLFIu'@; put 'cHVzaCh7Y3JlYXRlZEJ5OkxbVl0uY3JlYXRlZEJ5LGlkOkxbVl0uaWQsbmFtZTpMW1ZdLm5hbWUsdmVyc2lvbjpMW1ZdLnZlcnNpb24sYXR0cmlidXRlczp7c3lzVXNlcklkOnp9fSkpfWNhdGNoKE4pe3Rocm93IE59fSksUn0pfWRlbGV0ZUNvbXB1dGVDb250ZXh0KEMsdyl7cmV0dXJuIHko'@; put 'dGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMudmFsaWRhdGVDb250ZXh0TmFtZShDKSx0aGlzLmlzRGVmYXVsdENvbnRleHQoQyx0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHMsIkRlbGV0aW5nIGRlZmF1bHQgU0FTIGNvbXB1dGUgY29udGV4dHMgaXMgbm90IGFsbG93ZWQu'@; put 'IiwhMCk7Y29uc3QgTD15aWVsZCB0aGlzLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKEMsdyk7cmV0dXJuIHlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5kZWxldGUoYCR7dGhpcy5zZXJ2ZXJVcmx9L2NvbXB1dGUvY29udGV4dHMvJHtMLmlkfWAsdyl9KX12YWxpZGF0ZUNvbnRleHROYW1lKEMp'@; put 'e2lmKCFDKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHJlcXVpcmVkLiIpfWlzRGVmYXVsdENvbnRleHQoQyx3PXRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cyxTPSIiLEw9ITEpe2lmKHcuaW5jbHVkZXMoQykpdGhyb3cgbmV3IEVycm9yKGAke1N9JHtMPyJcbkRlZmF1bHQg'@; put 'Y29udGV4dHM6Iit3Lm1hcCgoUix4KT0+YFxuJHt4KzF9LiAke1J9YCk6IiJ9YCl9fX0sNzI4MzEoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEwsUix4LFUpe3JldHVybiBuZXcoeHx8KHg9UHJvbWlzZSkpKGZ1bmN0aW9uKFYsTil7'@; put 'ZnVuY3Rpb24geihXKXt0cnl7RihVLm5leHQoVykpfWNhdGNoKHEpe04ocSl9fWZ1bmN0aW9uIFkoVyl7dHJ5e0YoVS50aHJvdyhXKSl9Y2F0Y2gocSl7TihxKX19ZnVuY3Rpb24gRihXKXtXLmRvbmU/VihXLnZhbHVlKTpmdW5jdGlvbiBIKFYpe3JldHVybiBWIGluc3RhbmNlb2YgeD9WOm5l'@; put 'dyB4KGZ1bmN0aW9uKE4pe04oVil9KX0oVy52YWx1ZSkudGhlbih6LFkpfUYoKFU9VS5hcHBseShMLFJ8fFtdKSkubmV4dCgpKX0pfSxjPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihMKXtyZXR1cm4gTCYmTC5fX2VzTW9kdWxlP0w6e2RlZmF1bHQ6TH19O09iamVjdC5k'@; put 'ZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLlNBUzlBcGlDbGllbnQ9dm9pZCAwO2NvbnN0IHM9aCg4NzI0NyksQT1jKGgoNTE4OTQpKSx2PWgoNjA1NzYpLEM9aCgyOTI2Nik7ai5TQVM5QXBpQ2xpZW50PWNsYXNzIHd7Y29uc3RydWN0b3IoUix4LFUpe3RoaXMu'@; put 'c2VydmVyVXJsPVIsdGhpcy5qb2JzUGF0aD14LFImJigwLEMuaXNVcmwpKFIpLHRoaXMucmVxdWVzdENsaWVudD1uZXcgdi5TYXM5UmVxdWVzdENsaWVudChSLFUpfWdldENvbmZpZygpe3JldHVybntzZXJ2ZXJVcmw6dGhpcy5zZXJ2ZXJVcmx9fXNldENvbmZpZyhSKXtSJiYodGhpcy5zZXJ2'@; put 'ZXJVcmw9Uil9ZXhlY3V0ZVNjcmlwdChSLHgsVSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIHRoaXMucmVxdWVzdENsaWVudC5sb2dpbih4LFUsdGhpcy5qb2JzUGF0aCk7Y29uc3QgVj1TKFsuLi5SLCJkYXRhIF9udWxsXzsiLCJmaWxlIF93ZWJvdXQ7'@; put 'IiwicHV0ICdFeGVjdXRlZCBzYXNqcyBydW4nOyIsInJ1bjsiXS5qb2luKCJcbiIpKSxOPWAvVXNlciBGb2xkZXJzLyR7eH0vTXkgRm9sZGVyL3Nhc2pzL3J1bm5lcmAsej0ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IitWLmdldEJvdW5kYXJ5KCksRj17ImNhY2hlLWNvbnRyb2wi'@; put 'OiJuby1jYWNoZSIsQWNjZXB0OiIqLyoiLCJDb250ZW50LVR5cGUiOnosIkNvbnRlbnQtTGVuZ3RoIjpWLmdldExlbmd0aFN5bmMoKSxDb25uZWN0aW9uOiJrZWVwLWFsaXZlIn0sVz1gJHt0aGlzLmpvYnNQYXRofS8/JHsiX3Byb2dyYW09IitOKyImX2RlYnVnPWxvZyJ9YDtyZXR1cm4oeWll'@; put 'bGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoVyxWLHZvaWQgMCx6LEYpKS5yZXN1bHR9KX19O2NvbnN0IFM9TD0+e2NvbnN0IFI9bmV3IEEuZGVmYXVsdCx4PWBzYXNqcy1leGVjdXRlLXNhczktJHsoMCxzLmdlbmVyYXRlVGltZXN0YW1wKSgiIil9LnNhc2A7cmV0dXJuIFIuYXBwZW5kKHgs'@; put 'TCx7ZmlsZW5hbWU6eCxjb250ZW50VHlwZToidGV4dC9wbGFpbiJ9KSxSfX0sODIwMTUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNiksYz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVyxxLHJlLG1lKXtyZXR1cm4gbmV3KHJlfHwocmU9UHJvbWlzZSkpKGZ1bmN0'@; put 'aW9uKEllLGtlKXtmdW5jdGlvbiBxZShiKXt0cnl7ZihtZS5uZXh0KGIpKX1jYXRjaChrKXtrZShrKX19ZnVuY3Rpb24gWChiKXt0cnl7ZihtZS50aHJvdyhiKSl9Y2F0Y2goayl7a2Uoayl9fWZ1bmN0aW9uIGYoYil7Yi5kb25lP0llKGIudmFsdWUpOmZ1bmN0aW9uIENlKEllKXtyZXR1cm4g'@; put 'SWUgaW5zdGFuY2VvZiByZT9JZTpuZXcgcmUoZnVuY3Rpb24oa2Upe2tlKEllKX0pfShiLnZhbHVlKS50aGVuKHFlLFgpfWYoKG1lPW1lLmFwcGx5KFcscXx8W10pKS5uZXh0KCkpfSl9LHM9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFcpe3JldHVybiBXJiZXLl9fZXNN'@; put 'b2R1bGU/Vzp7ZGVmYXVsdDpXfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouU0FTVml5YUFwaUNsaWVudD12b2lkIDA7Y29uc3QgQT1oKDI5MjY2KSx2PXMoaCg1MTg5NCkpLEM9aCgxNzM4OCksdz1oKDQ4Njk3KSxTPWgoNDUzNzIpLEw9aCgz'@; put 'NjMxKSxSPWgoODc2MDcpLHg9aCg2MzQwKSxVPWgoOTE1MTQpLEg9aCgyOTYwOSksVj1oKDU4NTYzKSxOPWgoODM3MjIpLHo9aCg4MTY3NCksWT1oKDg4MTI4KTtqLlNBU1ZpeWFBcGlDbGllbnQ9Y2xhc3MgRntjb25zdHJ1Y3RvcihxLHJlLG1lLENlKXt0aGlzLnNlcnZlclVybD1xLHRoaXMu'@; put 'cm9vdEZvbGRlck5hbWU9cmUsdGhpcy5jb250ZXh0TmFtZT1tZSx0aGlzLnJlcXVlc3RDbGllbnQ9Q2UsdGhpcy5fZGVidWc9ITEsdGhpcy5zZXNzaW9uTWFuYWdlcj1uZXcgdy5TZXNzaW9uTWFuYWdlcih0aGlzLnNlcnZlclVybCx0aGlzLmNvbnRleHROYW1lLHRoaXMucmVxdWVzdENsaWVu'@; put 'dCksdGhpcy5jb250ZXh0TWFuYWdlcj1uZXcgUy5Db250ZXh0TWFuYWdlcih0aGlzLnNlcnZlclVybCx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuZm9sZGVyTWFwPW5ldyBNYXAsdGhpcy5maWxlRXh0ZW5zaW9uTWFwPW5ldyBNYXAsdGhpcy5ib29sRXh0ZW5zaW9uTWFwPSExLHEmJigwLEEu'@; put 'aXNVcmwpKHEpfWFwcGVuZFJlcXVlc3QocSxyZSxtZSl7dGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QocSxyZSxtZSl9Z2V0IGRlYnVnKCl7cmV0dXJuIHRoaXMuX2RlYnVnfXNldCBkZWJ1ZyhxKXt0aGlzLl9kZWJ1Zz1xLHRoaXMuc2Vzc2lvbk1hbmFnZXImJih0aGlzLnNlc3Np'@; put 'b25NYW5hZ2VyLmRlYnVnPXEpfWdldEpvYnNJbkZvbGRlcihxKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgcmU9KDAsQS5pc1JlbGF0aXZlUGF0aCkocSk/YCR7dGhpcy5yb290Rm9sZGVyTmFtZX0vJHtxfWA6cTtyZXR1cm4gdGhpcy5mb2xkZXJNYXAu'@; put 'Z2V0KHJlKXx8KHlpZWxkIHRoaXMucG9wdWxhdGVGb2xkZXJNYXAocmUpKSx0aGlzLmZvbGRlck1hcC5nZXQocmUpfSl9Z2V0Q29uZmlnKCl7cmV0dXJue3NlcnZlclVybDp0aGlzLnNlcnZlclVybCxyb290Rm9sZGVyTmFtZTp0aGlzLnJvb3RGb2xkZXJOYW1lfX1zZXRDb25maWcocSxyZSl7'@; put 'cSYmKHRoaXMuc2VydmVyVXJsPXEpLHJlJiYodGhpcy5yb290Rm9sZGVyTmFtZT1yZSl9Z2V0Q29tcHV0ZUNvbnRleHRzKHEpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5jb250ZXh0TWFuYWdlci5nZXRDb21wdXRlQ29udGV4dHMo'@; put 'cSl9KX1nZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0c31nZXRMYXVuY2hlckNvbnRleHRzKHEpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhp'@; put 'cy5jb250ZXh0TWFuYWdlci5nZXRMYXVuY2hlckNvbnRleHRzKHEpfSl9Z2V0RXhlY3V0YWJsZUNvbnRleHRzKHEpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCByZT10aGlzLmV4ZWN1dGVTY3JpcHQuYmluZCh0aGlzKTtyZXR1cm4geWllbGQgdGhpcy5j'@; put 'b250ZXh0TWFuYWdlci5nZXRFeGVjdXRhYmxlQ29udGV4dHMocmUscSl9KX1jcmVhdGVTZXNzaW9uKHEscmUpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdHtyZXN1bHQ6Q2V9PXlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoIi9jb21wdXRlL2NvbnRl'@; put 'eHRzP2xpbWl0PTEwMDAwIixyZSksSWU9Q2UuaXRlbXMmJkNlLml0ZW1zLmxlbmd0aD9DZS5pdGVtcy5maW5kKHFlPT5xZS5uYW1lPT09cSk6bnVsbDtpZighSWUpdGhyb3cgbmV3IEVycm9yKGBFeGVjdXRpb24gY29udGV4dCAke3F9IG5vdCBmb3VuZC5gKTtjb25zdHtyZXN1bHQ6a2V9PXlp'@; put 'ZWxkIHRoaXMucmVxdWVzdENsaWVudC5wb3N0KGAvY29tcHV0ZS9jb250ZXh0cy8ke0llLmlkfS9zZXNzaW9uc2Ase30scmUpO3JldHVybiBrZX0pfWNyZWF0ZUNvbXB1dGVDb250ZXh0KHEscmUsbWUsQ2UsSWUsa2Upe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXty'@; put 'ZXR1cm4geWllbGQgdGhpcy5jb250ZXh0TWFuYWdlci5jcmVhdGVDb21wdXRlQ29udGV4dChxLHJlLG1lLENlLEllLGtlKX0pfWNyZWF0ZUxhdW5jaGVyQ29udGV4dChxLHJlLG1lPSJkaXJlY3QiLENlKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHlp'@; put 'ZWxkIHRoaXMuY29udGV4dE1hbmFnZXIuY3JlYXRlTGF1bmNoZXJDb250ZXh0KHEscmUsbWUsQ2UpfSl9ZWRpdENvbXB1dGVDb250ZXh0KHEscmUsbWUpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5jb250ZXh0TWFuYWdlci5lZGl0'@; put 'Q29tcHV0ZUNvbnRleHQocSxyZSxtZSl9KX1kZWxldGVDb21wdXRlQ29udGV4dChxLHJlKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMuY29udGV4dE1hbmFnZXIuZGVsZXRlQ29tcHV0ZUNvbnRleHQocSxyZSl9KX1leGVjdXRlU2Ny'@; put 'aXB0KHEscmUsbWUsQ2UsSWU9bnVsbCxrZT0hMSxxZT0hMSxYPSEwLGYsYj0hMSxrLE0pe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oMCxOLmV4ZWN1dGVPbkNvbXB1dGVBcGkpKHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNlc3Npb25NYW5hZ2VyLHRo'@; put 'aXMucm9vdEZvbGRlck5hbWUscSxyZSxtZSxDZSxJZSxrZSxxZSxYLGYsYixrLE0pfSl9Z2V0RmlsZUNvbnRlbnQocSxyZSxtZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IENlPXlpZWxkIHRoaXMuZ2V0RmlsZVVyaShxLHJlLG1lKS5jYXRjaChJZT0+'@; put 'e3Rocm93KDAseC5wcmVmaXhNZXNzYWdlKShJZSxgRXJyb3Igd2hpbGUgZ2V0dGluZyBmaWxlIFVSSSBmb3I6ICR7cmV9IGluIGZvbGRlcjogJHtxfS4gYCl9KTtyZXR1cm4geWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0ke0NlfS9jb250ZW50YCxtZSku'@; put 'dGhlbihJZT0+SWUucmVzdWx0KX0pfXVwZGF0ZUZpbGVDb250ZW50KHEscmUsbWUsQ2Upe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBJZT15aWVsZCB0aGlzLmdldEZpbGVVcmkocSxyZSxDZSkuY2F0Y2goWD0+e3Rocm93KDAseC5wcmVmaXhNZXNzYWdl'@; put 'KShYLGBFcnJvciB3aGlsZSBnZXR0aW5nIGZpbGUgVVJJIGZvcjogJHtyZX0gaW4gZm9sZGVyOiAke3F9LiBgKX0pLHtyZXN1bHQ6a2UsZXRhZzpxZX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0ke0llfWAsQ2UpO2lmKCFrZXx8IXFlKXRocm93IG5l'@; put 'dyBFcnJvcihgRmlsZSAke3JlfSBkb2VzIG5vdCBoYXZlIGFuIEVUYWcsIG9yIHJlcXVlc3QgZmFpbGVkLmApO3JldHVybiB5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucHV0KGAke3RoaXMuc2VydmVyVXJsfSR7SWV9L2NvbnRlbnRgLG1lLENlLHsiSWYtTWF0Y2giOnFlLCJDb250ZW50LVR5'@; put 'cGUiOmtlLmNvbnRlbnRUeXBlfSkudGhlbihYPT5YLnJlc3VsdCl9KX1nZXRGb2xkZXIocSxyZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KGAvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9JHtx'@; put 'fWAscmUpLnRoZW4obWU9Pm1lLnJlc3VsdCl9KX1jcmVhdGVGaWxlKHEscmUsbWUsQ2UsSWUpe3ZhciBrZTtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoIW1lJiYhQ2UpdGhyb3cgbmV3IEVycm9yKCJQYXRoIG9yIFVSSSBvZiB0aGUgcGFyZW50IGZvbGRlciBp'@; put 'cyByZXF1aXJlZC4iKTshQ2UmJm1lJiYoQ2U9eWllbGQgdGhpcy5nZXRGb2xkZXJVcmkobWUsSWUpKTtjb25zdCBxZT17QWNjZXB0OiJhcHBsaWNhdGlvbi92bmQuc2FzLmZpbGUranNvbiIsIkNvbnRlbnQtRGlzcG9zaXRpb24iOmBmaWxlbmFtZT0iJHtxfSI7YH0sWD1uZXcgdi5kZWZhdWx0'@; put 'O2xldCBmLGI7WC5hcHBlbmQoImZpbGUiLHJlLHEpO2NvbnN0IGs9bnVsbD09PShrZT1xLnNwbGl0KCIuIikucG9wKCkpfHx2b2lkIDA9PT1rZT92b2lkIDA6a2UudG9Mb3dlckNhc2UoKTtpZihrKXt0aGlzLmJvb2xFeHRlbnNpb25NYXB8fCgoeWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50Lmdl'@; put 'dCgiL3R5cGVzL3R5cGVzP2xpbWl0PTk5OTk5OSIsSWUpKS5yZXN1bHQuaXRlbXMuZmlsdGVyKEQ9PkQuZXh0ZW5zaW9ucykuZm9yRWFjaChEPT57dmFyIHA7bnVsbD09PShwPUQuZXh0ZW5zaW9ucyl8fHZvaWQgMD09PXB8fHAuZm9yRWFjaChJPT57dGhpcy5maWxlRXh0ZW5zaW9uTWFwLnNl'@; put 'dChJLHt0eXBlRGVmTmFtZTpELm5hbWUmJkQubmFtZS50cmltKCkubGVuZ3RoP0QubmFtZS50cmltKCk6dm9pZCAwLHByb3BlcnRpZXM6RC5wcm9wZXJ0aWVzfSl9KX0pLHRoaXMuYm9vbEV4dGVuc2lvbk1hcD0hMCk7Y29uc3QgQj10aGlzLmZpbGVFeHRlbnNpb25NYXAuZ2V0KGspO0ImJihm'@; put 'PUIudHlwZURlZk5hbWUsQi5wcm9wZXJ0aWVzJiYoYj17bmFtZTpxLHByb3BlcnRpZXM6Qi5wcm9wZXJ0aWVzfSkpfWNvbnN0IE09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoYC9maWxlcy9maWxlcz9wYXJlbnRGb2xkZXJVcmk9JHtDZX0mdHlwZURlZk5hbWU9JHtmPz8iZmlsZSJ9'@; put 'I3Jhd1VwbG9hZGAsWCxJZSwibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IitYLl9ib3VuZGFyeSxxZSk7aWYoYil0cnl7Y29uc3QgQj17QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiSWYtTWF0Y2giOiIqIn0sSz1NLnJlc3VsdC5saW5rcy5maWx0ZXIoRz0+IlBBVENIIj09Ry5t'@; put 'ZXRob2QmJiJwYXRjaCI9PUcucmVsKVswXS51cmk7cmV0dXJuKHlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5wYXRjaChgJHtLfWAsYixJZSxCKSkucmVzdWx0fWNhdGNoKEIpe3Rocm93IG5ldyBFcnJvcihgRXJyb3IgcGF0Y2hpbmcgZmlsZSAke3F9LlxuJHtCLm1lc3NhZ2V9YCl9cmV0dXJu'@; put 'IE0ucmVzdWx0fSl9Y3JlYXRlRm9sZGVyKHEscmUsbWUsQ2UsSWUpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBrZT15LmxvZ2dlcnx8Y29uc29sZTtpZighcmUmJiFtZSl0aHJvdyBuZXcgRXJyb3IoIlBhdGggb3IgVVJJIG9mIHRoZSBwYXJlbnQgZm9s'@; put 'ZGVyIGlzIHJlcXVpcmVkLiIpO2lmKCFtZSYmcmUpaWYobWU9eWllbGQgdGhpcy5nZXRGb2xkZXJVcmkocmUsQ2UpKXtpZihJZSl7Y29uc3QgWD1yZSsiLyIrcTsoeWllbGQgdGhpcy5nZXRGb2xkZXJVcmkoWCxDZSkpJiYoeWllbGQgdGhpcy5kZWxldGVGb2xkZXIocmUrIi8iK3EsQ2UpKX19'@; put 'ZWxzZXtrZS5pbmZvKGBQYXJlbnQgZm9sZGVyIGF0IHBhdGggJyR7cmV9JyBpcyBub3QgcHJlc2VudC5gKTtjb25zdCBYPXJlLnN1YnN0cmluZygwLHJlLmxhc3RJbmRleE9mKCIvIikpLGY9YCR7cmUuc3BsaXQoIi8iKS5wb3AoKX1gO2lmKCIiPT09WCl0aHJvdyBuZXcgQy5Sb290Rm9sZGVy'@; put 'Tm90Rm91bmRFcnJvcihyZSx0aGlzLnNlcnZlclVybCxDZSk7a2UuaW5mbyhgQ3JlYXRpbmcgcGFyZW50IGZvbGRlcjpcbicke2Z9JyBpbiAnJHtYfSdgKTtjb25zdCBiPXlpZWxkIHRoaXMuY3JlYXRlRm9sZGVyKGYsWCx2b2lkIDAsQ2UpO2tlLmluZm8oYFBhcmVudCBmb2xkZXIgJyR7Zn0n'@; put 'IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLmApLG1lPWAvZm9sZGVycy9mb2xkZXJzLyR7Yi5pZH1gfWNvbnN0e3Jlc3VsdDpxZX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoYC9mb2xkZXJzL2ZvbGRlcnM/cGFyZW50Rm9sZGVyVXJpPSR7bWV9YCx7bmFtZTpxLHR5cGU6'@; put 'ImZvbGRlciJ9LENlKS5jYXRjaChYPT57Y29uc3R7bWVzc2FnZTpmLHJlc3BvbnNlOmJ9PVg7aWYoZiYmYiYmYi5kYXRhJiZiLmRhdGEubWVzc2FnZSl7Y29uc3R7c3RhdHVzOmt9PWIse21lc3NhZ2U6TX09Yi5kYXRhLEI9W2YsTV0ubWFwKEc9Pi9cLiQvLnRlc3QoRyk/RzpgJHtHfS5gKTt0'@; put 'aHJvdyFJZSYmNDA5PT09ayYmQi5wdXNoKCdUbyBvdmVycmlkZSwgcGxlYXNlIHNldCAiaXNGb3JjZWQiIHRvICJ0cnVlIi4nKSxCLmpvaW4oIiAiKX10aHJvdyBYfSk7cmV0dXJuIHlpZWxkIHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoYCR7cmV9LyR7cX1gLENlKSxxZX0pfWNyZWF0ZUpvYkRl'@; put 'ZmluaXRpb24ocSxyZSxtZSxDZSxJZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKCFtZSYmIUNlKXRocm93IG5ldyBFcnJvcigiUGF0aCB0byBvciBVUkkgb2YgdGhlIHBhcmVudCBmb2xkZXIgaXMgcmVxdWlyZWQuIik7cmV0dXJuIUNlJiZtZSYmKENlPXlp'@; put 'ZWxkIHRoaXMuZ2V0Rm9sZGVyVXJpKG1lLEllKSkseWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoYCR7dGhpcy5zZXJ2ZXJVcmx9L2pvYkRlZmluaXRpb25zL2RlZmluaXRpb25zP3BhcmVudEZvbGRlclVyaT0ke0NlfWAse25hbWU6cSxwYXJhbWV0ZXJzOlt7bmFtZToiX2FkZGplc2Jl'@; put 'Z2luZW5kbWFjcm9zIix0eXBlOiJDSEFSQUNURVIiLGRlZmF1bHRWYWx1ZToiZmFsc2UifV0sdHlwZToiQ29tcHV0ZSIsY29kZTpyZX0sSWUpfSl9Z2V0QXV0aENvZGUocSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHJlPWAke3RoaXMuc2VydmVyVXJs'@; put 'fS9TQVNMb2dvbi9vYXV0aC9hdXRob3JpemU/Y2xpZW50X2lkPSR7cX0mcmVzcG9uc2VfdHlwZT1jb2RlYDtyZXR1cm4geWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChyZSx2b2lkIDAsInRleHQvcGxhaW4iKS50aGVuKENlPT5DZS5yZXN1bHQpLnRoZW4oQ2U9PmModGhpcyx2b2lkIDAs'@; put 'dm9pZCAwLGZ1bmN0aW9uKigpe2xldCBJZT0iIjtpZigoMCxSLmlzQXV0aG9yaXplRm9ybVJlcXVpcmVkKShDZSkpe2NvbnN0IHFlPSh5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuYXV0aG9yaXplKENlKSkuc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0KCI8L2JvZHk+IilbMF0sWD1kb2N1bWVu'@; put 'dC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gWC5pbm5lckhUTUw9cWUsSWU9WC5xdWVyeVNlbGVjdG9yKCIuaW5mb2JveCBoNCIpLmlubmVyVGV4dCxJZX17Y29uc3Qga2U9Q2Uuc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0KCI8L2JvZHk+IilbMF0scWU9ZG9jdW1lbnQuY3JlYXRlRWxl'@; put 'bWVudCgiZGl2Iik7cmV0dXJuIHFlLmlubmVySFRNTD1rZSxxZSYmKEllPXFlLnF1ZXJ5U2VsZWN0b3IoIi5pbmZvYm94IGg0IikuaW5uZXJUZXh0KSxJZX19KSkuY2F0Y2goKCk9Pm51bGwpfSl9Z2V0QWNjZXNzVG9rZW4ocSxyZSxtZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1'@; put 'bmN0aW9uKigpe3JldHVybigwLHouZ2V0QWNjZXNzVG9rZW5Gb3JWaXlhKSh0aGlzLnJlcXVlc3RDbGllbnQscSxyZSxtZSl9KX1yZWZyZXNoVG9rZW5zKHEscmUsbWUpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oMCxZLnJlZnJlc2hUb2tlbnNGb3JW'@; put 'aXlhKSh0aGlzLnJlcXVlc3RDbGllbnQscSxyZSxtZSl9KX1kZWxldGVDbGllbnQocSxyZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IG1lPXRoaXMuc2VydmVyVXJsK2Avb2F1dGgvY2xpZW50cy8ke3F9YDtyZXR1cm4oeWllbGQgdGhpcy5yZXF1ZXN0'@; put 'Q2xpZW50LmRlbGV0ZShtZSxyZSkpLnJlc3VsdH0pfWV4ZWN1dGVDb21wdXRlSm9iKHEscmUsbWUsQ2UsSWUsa2U9ITAscWU9ITEsWCxmPSExLGIsayl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBNPShJZXx8e30pLmFjY2Vzc190b2tlbjtpZihJZSYmKHth'@; put 'Y2Nlc3NfdG9rZW46TX09eWllbGQoMCxILmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LEllLEwuU2VydmVyVHlwZS5TYXNWaXlhLGspKSwoMCxBLmlzUmVsYXRpdmVQYXRoKShxKSYmIXRoaXMucm9vdEZvbGRlck5hbWUpdGhyb3cgbmV3IEVycm9yKCJSZWxhdGl2ZSBwYXRocyBjYW5u'@; put 'b3QgYmUgdXNlZCB3aXRob3V0IHNwZWNpZnlpbmcgYSByb290IGZvbGRlciBuYW1lIik7Y29uc3QgQj1xLnNwbGl0KCIvIiksSz1CLnBvcCgpLEc9Qi5qb2luKCIvIiksRD0oMCxBLmlzUmVsYXRpdmVQYXRoKShxKT9gJHt0aGlzLnJvb3RGb2xkZXJOYW1lfS8ke0d9YDpHO3lpZWxkIHRoaXMu'@; put 'cG9wdWxhdGVGb2xkZXJNYXAoRCxNKS5jYXRjaChfZT0+e3Rocm93KDAseC5wcmVmaXhNZXNzYWdlKShfZSwiRXJyb3Igd2hpbGUgcG9wdWxhdGluZyBmb2xkZXIgbWFwLiAiKX0pO2NvbnN0IHA9dGhpcy5mb2xkZXJNYXAuZ2V0KEQpO2lmKCFwKXRocm93IG5ldyBFcnJvcihgVGhlIGZvbGRl'@; put 'ciAnJHtEfScgd2FzIG5vdCBmb3VuZCBvbiAnJHt0aGlzLnNlcnZlclVybH0nYCk7Y29uc3QgST1wPy5maW5kKF9lPT5fZS5uYW1lPT09Syk7aWYoIUkpdGhyb3cgbmV3IEVycm9yKCJKb2Igd2FzIG5vdCBmb3VuZC4iKTtsZXQgdWU9ST8uY29kZTtpZighdWUpe2NvbnN0IF9lPUk/Lmxpbmtz'@; put 'LmZpbmQob3Q9PiJnZXRSZXNvdXJjZSI9PT1vdC5yZWwpO2lmKCFfZSl0aHJvdyBuZXcgRXJyb3IoIlVSSSBvZiBqb2IgZGVmaW5pdGlvbiB3YXMgbm90IGZvdW5kLiIpO2NvbnN0e3Jlc3VsdDpQZX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0ke19l'@; put 'LmhyZWZ9YCxNKS5jYXRjaChvdD0+e3Rocm93KDAseC5wcmVmaXhNZXNzYWdlKShvdCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBqb2IgZGVmaW5pdGlvbi4gIil9KTt1ZT1QZS5jb2RlLEkuY29kZT11ZX11ZXx8KHVlPSIiKTtjb25zdCBuZT11ZS5yZXBsYWNlKC9cclxuL2csIlxuIikuc3BsaXQo'@; put 'IlxuIik7cmV0dXJuIHlpZWxkIHRoaXMuZXhlY3V0ZVNjcmlwdChxLG5lLHJlLEllLENlLG1lLHFlLGtlLFgsZixiLGspfSl9ZXhlY3V0ZUpvYihxLHJlLG1lLENlLEllLGtlKXt2YXIgcWUsWCxmO3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgYj0oSWV8fHt9'@; put 'KS5hY2Nlc3NfdG9rZW47aWYoSWUmJih7YWNjZXNzX3Rva2VuOmJ9PXlpZWxkKDAsSC5nZXRUb2tlbnMpKHRoaXMucmVxdWVzdENsaWVudCxJZSxMLlNlcnZlclR5cGUuU2FzVml5YSxrZSkpLCgwLEEuaXNSZWxhdGl2ZVBhdGgpKHEpJiYhdGhpcy5yb290Rm9sZGVyTmFtZSl0aHJvdyBuZXcg'@; put 'RXJyb3IoIlJlbGF0aXZlIHBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJvb3QgZm9sZGVyIG5hbWUuIik7Y29uc3Qgaz1xLnNwbGl0KCIvIiksTT1rLnBvcCgpLEI9ay5qb2luKCIvIiksSz0oMCxBLmlzUmVsYXRpdmVQYXRoKShxKT9gJHt0aGlzLnJvb3RGb2xk'@; put 'ZXJOYW1lfS8ke0J9YDpCO3lpZWxkIHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoSyxiKTtjb25zdCBHPXRoaXMuZm9sZGVyTWFwLmdldChLKTtpZighRyl0aHJvdyBuZXcgRXJyb3IoYFRoZSBmb2xkZXIgJyR7S30nIHdhcyBub3QgZm91bmQgb24gJyR7dGhpcy5zZXJ2ZXJVcmx9Jy5gKTtjb25z'@; put 'dCBEPUc/LmZpbmQoRmU9PkZlLm5hbWU9PT1NKTtsZXQgcD1bXTtpZihDZSYmT2JqZWN0LmtleXMoQ2UpLmxlbmd0aCYmKHA9eWllbGQgdGhpcy51cGxvYWRUYWJsZXMoQ2UsYikpLCFEKXRocm93IG5ldyBFcnJvcigiSm9iIHdhcyBub3QgZm91bmQuIik7Y29uc3QgST1udWxsPT09KHFlPUQ/'@; put 'LmxpbmtzLmZpbmQoRmU9PiJnZXRSZXNvdXJjZSI9PT1GZS5yZWwpKXx8dm9pZCAwPT09cWU/dm9pZCAwOnFlLmhyZWYse3Jlc3VsdDp1ZX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0ke0l9YCxiKSxuZT17X2NvbnRleHROYW1lOnJlLF9wcm9ncmFt'@; put 'OmAke0t9LyR7TX1gLF93ZWJpbl9maWxlX2NvdW50OnAubGVuZ3RoLF9PTUlUSlNPTkxJU1RJTkc6ITAsX09NSVRKU09OTE9HOiEwLF9vbWl0U2Vzc2lvblJlc3VsdHM6ITEsX09NSVRURVhUTElTVElORzohMCxfT01JVFRFWFRMT0c6ITB9O21lJiYobmUuX09NSVRURVhUTE9HPSJmYWxzZSIs'@; put 'bmUuX29taXRTZXNzaW9uUmVzdWx0cz0iZmFsc2UiLG5lLl9ERUJVRz0xMzEpLHAuZm9yRWFjaCgoRmUsZ2UpPT57bmVbYF93ZWJpbl9maWxldXJpJHtnZSsxfWBdPWAvZmlsZXMvZmlsZXMvJHtGZS5maWxlLmlkfWAsbmVbYF93ZWJpbl9uYW1lJHtnZSsxfWBdPUZlLnRhYmxlTmFtZX0pO2Nv'@; put 'bnN0IF9lPXt9O2Zvcihjb25zdCBGZSBvZiBPYmplY3Qua2V5cyhuZSkpX2VbRmVdPVN0cmluZyhuZVtGZV0pO2NvbnN0IFBlPXtuYW1lOmBleGVjLSR7TX1gLGRlc2NyaXB0aW9uOiJQb3dlcmVkIGJ5IFNBU2pzIixqb2JEZWZpbml0aW9uOnVlLGFyZ3VtZW50czpfZX0se3Jlc3VsdDpvdH09'@; put 'eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoYCR7dGhpcy5zZXJ2ZXJVcmx9L2pvYkV4ZWN1dGlvbi9qb2JzP19hY3Rpb249d2FpdGAsUGUsYiksbHQ9eWllbGQgdGhpcy5wb2xsSm9iU3RhdGUob3QsSWUsdm9pZCAwLGtlKS5jYXRjaChGZT0+e3Rocm93KDAseC5wcmVmaXhNZXNzYWdl'@; put 'KShGZSwiRXJyb3Igd2hpbGUgcG9sbGluZyBqb2Igc3RhdHVzLiAiKX0pLHtyZXN1bHQ6ZHR9PXlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9L2pvYkV4ZWN1dGlvbi9qb2JzLyR7b3QuaWR9YCxiKTtsZXQgUmUsYWU7Y29uc3QgeGU9ZHQucmVzdWx0c1si'@; put 'X3dlYm91dC5qc29uIl0samU9ZHQubGlua3MuZmluZChGZT0+ImxvZyI9PT1GZS5yZWwpO2lmKHhlJiYoUmU9eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgJHt0aGlzLnNlcnZlclVybH0ke3hlfS9jb250ZW50YCxiLCJ0ZXh0L3BsYWluIikpLG1lJiZqZSYmKGFlPXlpZWxkIHRoaXMu'@; put 'cmVxdWVzdENsaWVudC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9JHtqZS5ocmVmfS9jb250ZW50YCxiKS50aGVuKEZlPT5GZS5yZXN1bHQuaXRlbXMubWFwKGdlPT5nZS5saW5lKS5qb2luKCJcbiIpKSksImZhaWxlZCI9PT1sdCl0aHJvdyBuZXcgQy5Kb2JFeGVjdXRpb25FcnJvcihudWxsPT09'@; put 'KFg9ZHQuZXJyb3IpfHx2b2lkIDA9PT1YP3ZvaWQgMDpYLmVycm9yQ29kZSxudWxsPT09KGY9ZHQuZXJyb3IpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLm1lc3NhZ2UsYWUpO2NvbnN0IEFlPXtyZXN1bHQ6UmU/LnJlc3VsdCxsb2c6YWV9LHtlcnJvcjpEZX09ZHQ7cmV0dXJuIERlJiYoQWUuZXJy'@; put 'b3I9RGUpLEFlfSl9cG9wdWxhdGVGb2xkZXJNYXAocSxyZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IG1lPSgwLEEuaXNSZWxhdGl2ZVBhdGgpKHEpP2Ake3RoaXMucm9vdEZvbGRlck5hbWV9LyR7cX1gOnE7aWYodGhpcy5mb2xkZXJNYXAuZ2V0KG1l'@; put 'KSlyZXR1cm47Y29uc3QgQ2U9Ii9mb2xkZXJzL2ZvbGRlcnMvQGl0ZW0/cGF0aD0iK21lLHtyZXN1bHQ6SWV9PXlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoYCR7Q2V9YCxyZSkuY2F0Y2goWD0+e3Rocm93KDAseC5wcmVmaXhNZXNzYWdlKShYLCJFcnJvciB3aGlsZSBnZXR0aW5nIGZv'@; put 'bGRlci4gIil9KTtpZighSWUpdGhyb3cgbmV3IEVycm9yKGBUaGUgcGF0aCAke21lfSBkb2VzIG5vdCBleGlzdCBvbiAke3RoaXMuc2VydmVyVXJsfWApO2NvbnN0e3Jlc3VsdDprZX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgL2ZvbGRlcnMvZm9sZGVycy8ke0llLmlkfS9tZW1i'@; put 'ZXJzP2xpbWl0PSR7SWUubWVtYmVyQ291bnQ8NTAwPzUwMDpJZS5tZW1iZXJDb3VudH1gLHJlKS5jYXRjaChYPT57dGhyb3coMCx4LnByZWZpeE1lc3NhZ2UpKFgsIkVycm9yIHdoaWxlIGdldHRpbmcgbWVtYmVycy4gIil9KTt0aGlzLmZvbGRlck1hcC5zZXQobWUsa2UuaXRlbXMpfSl9cG9s'@; put 'bEpvYlN0YXRlKHEscmUsbWUsQ2Upe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oMCxVLnBvbGxKb2JTdGF0ZSkodGhpcy5yZXF1ZXN0Q2xpZW50LHEsdGhpcy5kZWJ1ZyxyZSxtZSx2b2lkIDAsQ2UpfSl9dXBsb2FkVGFibGVzKHEscmUpe3JldHVybiBj'@; put 'KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oMCxWLnVwbG9hZFRhYmxlcykodGhpcy5yZXF1ZXN0Q2xpZW50LHEscmUpfSl9Z2V0Rm9sZGVyRGV0YWlscyhxLHJlKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgbWU9KDAsQS5pc1Vy'@; put 'aSkocSk/cTpgL2ZvbGRlcnMvZm9sZGVycy9AaXRlbT9wYXRoPSR7cX1gLHtyZXN1bHQ6Q2V9PXlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9JHttZX1gLHJlKS5jYXRjaChJZT0+e2lmKEllIGluc3RhbmNlb2YgQy5DZXJ0aWZpY2F0ZUVycm9yKXRocm93'@; put 'IEllO3JldHVybntyZXN1bHQ6bnVsbH19KTtpZihDZSlyZXR1cm4gQ2V9KX1nZXRGb2xkZXJVcmkocSxyZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IG1lPXlpZWxkIHRoaXMuZ2V0Rm9sZGVyRGV0YWlscyhxLHJlKTtpZihtZSlyZXR1cm5gL2ZvbGRl'@; put 'cnMvZm9sZGVycy8ke21lLmlkfWB9KX1nZXRGaWxlVXJpKHEscmUsbWUpe3ZhciBDZTtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgSWU9eWllbGQgdGhpcy5saXN0Rm9sZGVyKHEsbWUsMWUzLHtyZXR1cm5EZXRhaWxzOiEwfSkuY2F0Y2gocWU9Pnt0aHJv'@; put 'dygwLHgucHJlZml4TWVzc2FnZSkocWUsYEVycm9yIHdoaWxlIGxpc3RpbmcgZm9sZGVyOiAke3F9LiBgKX0pO2lmKCFJZXx8IUllLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYE5vIG1lbWJlcnMgZm91bmQgaW4gZm9sZGVyOiAke3F9YCk7Y29uc3Qga2U9bnVsbD09PShDZT1JZS5maW5kKHFl'@; put 'PT5xZS5uYW1lPT09cmUpKXx8dm9pZCAwPT09Q2U/dm9pZCAwOkNlLnVyaTtpZigha2UpdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7cmV9IG5vdCBmb3VuZCBpbiBmb2xkZXI6ICR7cX1gKTtyZXR1cm4ga2V9KX1nZXRSZWN5Y2xlQmluVXJpKHEpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQg'@; put 'MCxmdW5jdGlvbiooKXtjb25zdHtyZXN1bHQ6bWV9PXlpZWxkIHRoaXMucmVxdWVzdENsaWVudC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9L2ZvbGRlcnMvZm9sZGVycy9AbXlSZWN5Y2xlQmluYCxxKS5jYXRjaChDZT0+e2lmKENlIGluc3RhbmNlb2YgQy5DZXJ0aWZpY2F0ZUVycm9yKXRocm93'@; put 'IENlO3JldHVybntyZXN1bHQ6bnVsbH19KTtpZihtZSlyZXR1cm5gL2ZvbGRlcnMvZm9sZGVycy8ke21lLmlkfWB9KX1nZXRDb21wdXRlQ29udGV4dEJ5TmFtZShxLHJlKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMuY29udGV4dE1h'@; put 'bmFnZXIuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUocSxyZSl9KX1nZXRDb21wdXRlQ29udGV4dEJ5SWQocSxyZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLmNvbnRleHRNYW5hZ2VyLmdldENvbXB1dGVDb250ZXh0QnlJZChxLHJl'@; put 'KX0pfWxpc3RGb2xkZXIocSxyZSxtZT0yMCxDZSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IEllPSgwLEEuaXNVcmkpKHEpP3E6eWllbGQgdGhpcy5nZXRGb2xkZXJVcmkocSxyZSkse3Jlc3VsdDprZX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50Lmdl'@; put 'dChgJHt0aGlzLnNlcnZlclVybH0ke0llfS9tZW1iZXJzP2xpbWl0PSR7bWV9YCxyZSk7bGV0IHFlPVtdO3JldHVybiBrZSYma2UuaXRlbXMmJihxZT1DZT8ucmV0dXJuRGV0YWlscz9rZS5pdGVtczprZS5pdGVtcy5tYXAoWD0+WC5uYW1lKSkscWV9KX1tb3ZlRm9sZGVyKHEscmUsbWUsQ2Up'@; put 'e3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBJZT1xLnNwbGl0KCIvIikucG9wKCk7aWYoeWllbGQgdGhpcy5nZXRGb2xkZXJEZXRhaWxzKHJlLENlKSltZT1JZTtlbHNle2xldCBrPXJlLnNwbGl0KCIvIik7ay5zcGxpY2Uoay5sZW5ndGgtMSwxKSxyZT1r'@; put 'LmpvaW4oIi8iKX1jb25zdCBxZT15aWVsZCB0aGlzLmdldEZvbGRlclVyaShxLENlKSxYPXlpZWxkIHRoaXMuZ2V0Rm9sZGVyVXJpKHJlLENlKTtpZighcWUpcmV0dXJuO2NvbnN0IGY9cWU/LnNwbGl0KCIvIikucG9wKCkse3Jlc3VsdDpifT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucGF0'@; put 'Y2goYCR7dGhpcy5zZXJ2ZXJVcmx9JHtxZX1gLHtpZDpmLG5hbWU6bWUscGFyZW50Rm9sZGVyVXJpOlh9LENlKS5jYXRjaChrPT57dGhyb3cgay5jb2RlJiYiRU5PVEZPVU5EIj09PWsuY29kZT97Ym9keTp7bWVzc2FnZTpgRm9sZGVyICcke3Euc3BsaXQoIi8iKS5wb3AoKX0nIHdhcyBub3Qg'@; put 'Zm91bmQuYH19Omt9KTtyZXR1cm4gYnx8dm9pZCAwfSl9ZGVsZXRlRm9sZGVyKHEscmUpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBtZT15aWVsZCB0aGlzLmdldFJlY3ljbGVCaW5VcmkocmUpLENlPXEuc3BsaXQoIi8iKS5wb3AoKXx8IiIsSWU9bmV3'@; put 'IERhdGUscWU9Q2UrIiAiK0llLnRvTG9jYWxlRGF0ZVN0cmluZygpKyIgIitJZS50b0xvY2FsZVRpbWVTdHJpbmcoKTtyZXR1cm4geWllbGQgdGhpcy5tb3ZlRm9sZGVyKHEsbWUscWUscmUpfSl9fX0sNjk4MTAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0'@; put 'ZXJ8fGZ1bmN0aW9uKFYsTix6LFkpe3JldHVybiBuZXcoenx8KHo9UHJvbWlzZSkpKGZ1bmN0aW9uKFcscSl7ZnVuY3Rpb24gcmUoSWUpe3RyeXtDZShZLm5leHQoSWUpKX1jYXRjaChrZSl7cShrZSl9fWZ1bmN0aW9uIG1lKEllKXt0cnl7Q2UoWS50aHJvdyhJZSkpfWNhdGNoKGtlKXtxKGtl'@; put 'KX19ZnVuY3Rpb24gQ2UoSWUpe0llLmRvbmU/VyhJZS52YWx1ZSk6ZnVuY3Rpb24gRihXKXtyZXR1cm4gVyBpbnN0YW5jZW9mIHo/VzpuZXcgeihmdW5jdGlvbihxKXtxKFcpfSl9KEllLnZhbHVlKS50aGVuKHJlLG1lKX1DZSgoWT1ZLmFwcGx5KFYsTnx8W10pKS5uZXh0KCkpfSl9O09iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBjPWgoMjkyNjYpLHM9aCg1MzU3NCksQT1oKDgyMDE1KSx2PWgoNzI4MzEpLEM9aCg0NTgwMyksdz1oKDQ4NzkpLFM9aCgzNjMxKSxMPWgoMjg4MTYpLFI9aCg3NzU2MCkseD1oKDYxMzkxKSxVPXtzZXJ2'@; put 'ZXJVcmw6IiIscGF0aFNBU0pTOiIvU0FTanNBcGkvc3RwL2V4ZWN1dGUiLHBhdGhTQVM5OiIvU0FTU3RvcmVkUHJvY2Vzcy9kbyIscGF0aFNBU1ZpeWE6Ii9TQVNKb2JFeGVjdXRpb24iLGFwcExvYzoiL1B1YmxpYy9zZWVkYXBwIixzZXJ2ZXJUeXBlOlMuU2VydmVyVHlwZS5TYXNWaXlhLGRl'@; put 'YnVnOiExLGNvbnRleHROYW1lOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiLHVzZUNvbXB1dGVBcGk6bnVsbCxsb2dpbk1lY2hhbmlzbTpzLkxvZ2luTWVjaGFuaXNtLkRlZmF1bHR9O2ouZGVmYXVsdD1jbGFzcyBIe2NvbnN0cnVjdG9yKE4pe3RoaXMuc2FzanNDb25maWc9'@; put 'bmV3IHMuU0FTanNDb25maWcsdGhpcy5qb2JzUGF0aD0iIix0aGlzLnNhc1ZpeWFBcGlDbGllbnQ9bnVsbCx0aGlzLnNhczlBcGlDbGllbnQ9bnVsbCx0aGlzLnNhc0pTQXBpQ2xpZW50PW51bGwsdGhpcy5maWxlVXBsb2FkZXI9bnVsbCx0aGlzLmF1dGhNYW5hZ2VyPW51bGwsdGhpcy5yZXF1'@; put 'ZXN0Q2xpZW50PW51bGwsdGhpcy53ZWJKb2JFeGVjdXRvcj1udWxsLHRoaXMuc2FzanNKb2JFeGVjdXRvcj1udWxsLHRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yPW51bGwsdGhpcy5qZXNKb2JFeGVjdXRvcj1udWxsLHRoaXMuc2FzOUpvYkV4ZWN1dG9yPW51bGwsdGhpcy5yZXNlbmRXYWl0aW5n'@; put 'UmVxdWVzdHM9KCk9PnkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciB6LFksRixXLHE7eWllbGQgbnVsbD09PSh6PXRoaXMud2ViSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT16P3ZvaWQgMDp6LnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpLHlpZWxkIG51bGw9PT0oWT10aGlzLmNv'@; put 'bXB1dGVKb2JFeGVjdXRvcil8fHZvaWQgMD09PVk/dm9pZCAwOlkucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCkseWllbGQgbnVsbD09PShGPXRoaXMuamVzSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT1GP3ZvaWQgMDpGLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpLHlpZWxkIG51bGw9PT0oVz10aGlz'@; put 'LmZpbGVVcGxvYWRlcil8fHZvaWQgMD09PVc/dm9pZCAwOlcucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCkseWllbGQgbnVsbD09PShxPXRoaXMuc2FzanNKb2JFeGVjdXRvcil8fHZvaWQgMD09PXE/dm9pZCAwOnEucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCl9KSx0aGlzLnNldFZlcmJvc2VNb2Rl'@; put 'PXo9Pnt2YXIgWTtudWxsPT09KFk9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09WXx8WS5zZXRWZXJib3NlTW9kZSh6KX0sdGhpcy5zYXNqc0NvbmZpZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sVSksTiksdGhpcy5zZXR1cENvbmZpZ3VyYXRpb24oKX1nZXRDc3JmVG9r'@; put 'ZW4oTj0iZ2VuZXJhbCIpe3ZhciB6O3JldHVybiBudWxsPT09KHo9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09ej92b2lkIDA6ei5nZXRDc3JmVG9rZW4oTil9ZXhlY3V0ZVNjcmlwdCh7bGluZXNPZkNvZGU6TixmaWxlTmFtZTp6LGNvbnRleHROYW1lOlkscnVuVGltZTpGLGF1dGhD'@; put 'b25maWc6VyxhdXRoQ29uZmlnU2FzOTpxLGRlYnVnOnJlLG9uVG9rZW5zUmVmcmVzaGVkOm1lfSl7dmFyIENlLEllO3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJleGVjdXRlU2NyaXB0IixbUy5TZXJ2ZXJUeXBlLlNh'@; put 'czksUy5TZXJ2ZXJUeXBlLlNhc2pzLFMuU2VydmVyVHlwZS5TYXNWaXlhXSksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09Uy5TZXJ2ZXJUeXBlLlNhczkpe2lmKCFxKXRocm93IG5ldyBFcnJvcigiQXV0aCBjb25maWcgZm9yIHNhczkgaXMgbm90IHByb3ZpZGVkIik7cmV0dXJuIHlp'@; put 'ZWxkIG51bGw9PT0oQ2U9dGhpcy5zYXM5QXBpQ2xpZW50KXx8dm9pZCAwPT09Q2U/dm9pZCAwOkNlLmV4ZWN1dGVTY3JpcHQoTixxLnVzZXJOYW1lLHEucGFzc3dvcmQpfWlmKHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXNqcylyZXR1cm4geWllbGQgbnVs'@; put 'bD09PShJZT10aGlzLnNhc0pTQXBpQ2xpZW50KXx8dm9pZCAwPT09SWU/dm9pZCAwOkllLmV4ZWN1dGVTY3JpcHQoTi5qb2luKCJcbiIpLEYsVyk7aWYodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09Uy5TZXJ2ZXJUeXBlLlNhc1ZpeWEpe2lmKCEoWT1ZfHx0aGlzLnNhc2pzQ29uZmln'@; put 'LmNvbnRleHROYW1lKSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyB1bmRlZmluZWQuIFBsZWFzZSBzZXQgYSBgY29udGV4dE5hbWVgIGluIHlvdXIgU0FTanMgb3Igb3ZlcnJpZGUgY29uZmlnLiIpO2lmKCF6KXRocm93IG5ldyBFcnJvcigiRmlsZSBuYW1lIGlzIHJlcXVpcmVk'@; put 'IGluIGNhc2Ugb2YgU0FTIFZJWUEuIFBsZWFzZSBwcm92aWRlIGEgYGZpbGVOYW1lYC4iKTtyZXR1cm4geWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmV4ZWN1dGVTY3JpcHQoeixOLFksVyxudWxsLHJlfHx0aGlzLnNhc2pzQ29uZmlnLmRlYnVnLCExLCEwLHZvaWQgMCwhMSx2b2lkIDAs'@; put 'bWUpfX0pfWV4ZWN1dGVKb2IoTix6LFkpe3ZhciBGO3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZXhlY3V0ZVNjcmlwdCIsW1MuU2VydmVyVHlwZS5TYXNqc10pLHlpZWxkIG51bGw9PT0oRj10aGlzLnNhc0pT'@; put 'QXBpQ2xpZW50KXx8dm9pZCAwPT09Rj92b2lkIDA6Ri5leGVjdXRlSm9iKE4seixZKX0pfWdldENvbXB1dGVDb250ZXh0cyhOKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0cyIs'@; put 'W1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0cyhOKX0pfWdldExhdW5jaGVyQ29udGV4dHMoTil7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9y'@; put 'dGVkKCJnZXRMYXVuY2hlckNvbnRleHRzIixbUy5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx5aWVsZCB0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0TGF1bmNoZXJDb250ZXh0cyhOKX0pfWdldERlZmF1bHRDb21wdXRlQ29udGV4dHMoKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0'@; put 'RGVmYXVsdENvbXB1dGVDb250ZXh0cyIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSksdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldERlZmF1bHRDb21wdXRlQ29udGV4dHMoKX1nZXRFeGVjdXRhYmxlQ29udGV4dHMoTil7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3Jl'@; put 'dHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRFeGVjdXRhYmxlQ29udGV4dHMiLFtTLlNlcnZlclR5cGUuU2FzVml5YV0pLHlpZWxkIHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRFeGVjdXRhYmxlQ29udGV4dHMoTil9KX1jcmVhdGVDb21wdXRlQ29udGV4dChOLHosWSxGLFcscSl7'@; put 'cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJjcmVhdGVDb21wdXRlQ29udGV4dCIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmNyZWF0ZUNvbXB1dGVDb250ZXh0'@; put 'KE4seixZLEYsVyxxKX0pfWNyZWF0ZUxhdW5jaGVyQ29udGV4dChOLHosWSxGKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImNyZWF0ZUxhdW5jaGVyQ29udGV4dCIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSks'@; put 'eWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmNyZWF0ZUxhdW5jaGVyQ29udGV4dChOLHosWSxGKX0pfWVkaXRDb21wdXRlQ29udGV4dChOLHosWSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJlZGl0Q29t'@; put 'cHV0ZUNvbnRleHQiLFtTLlNlcnZlclR5cGUuU2FzVml5YV0pLHlpZWxkIHRoaXMuc2FzVml5YUFwaUNsaWVudC5lZGl0Q29tcHV0ZUNvbnRleHQoTix6LFkpfSl9ZGVsZXRlQ29tcHV0ZUNvbnRleHQoTix6KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJu'@; put 'IHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImRlbGV0ZUNvbXB1dGVDb250ZXh0IixbUy5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx5aWVsZCB0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVsZXRlQ29tcHV0ZUNvbnRleHQoTix6KX0pfWdldENvbXB1dGVDb250ZXh0QnlOYW1lKE4seil7cmV0dXJuIHko'@; put 'dGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRDb21wdXRlQ29udGV4dEJ5TmFtZSIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0QnlOYW1lKE4s'@; put 'eil9KX1nZXRDb21wdXRlQ29udGV4dEJ5SWQoTix6KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0QnlJZCIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgdGhpcy5zYXNW'@; put 'aXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0QnlJZChOLHopfSl9Y3JlYXRlU2Vzc2lvbihOLHope3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlU2Vzc2lvbiIsW1MuU2VydmVyVHlwZS5TYXNW'@; put 'aXlhXSkseWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmNyZWF0ZVNlc3Npb24oTix6KX0pfWNyZWF0ZUZvbGRlcihOLHosWSxGLFcscSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBXP3lpZWxkIFcuY3JlYXRlRm9sZGVyKE4seixZLEYscSk6eWll'@; put 'bGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmNyZWF0ZUZvbGRlcihOLHosWSxGLHEpfSl9Y3JlYXRlRmlsZShOLHosWSxGLFcscSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBxP3lpZWxkIHEuY3JlYXRlRmlsZShOLHosWSxGLFcpOnlpZWxkIHRoaXMu'@; put 'c2FzVml5YUFwaUNsaWVudC5jcmVhdGVGaWxlKE4seixZLEYsVyl9KX1nZXRGaWxlQ29udGVudChOLHosWSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRGaWxlQ29udGVudCIsW1MuU2VydmVyVHlwZS5T'@; put 'YXNWaXlhXSkseWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldEZpbGVDb250ZW50KE4seixZKX0pfXVwZGF0ZUZpbGVDb250ZW50KE4seixZLEYpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgidXBkYXRl'@; put 'RmlsZUNvbnRlbnQiLFtTLlNlcnZlclR5cGUuU2FzVml5YV0pLHlpZWxkIHRoaXMuc2FzVml5YUFwaUNsaWVudC51cGRhdGVGaWxlQ29udGVudChOLHosWSxGKX0pfWdldEZvbGRlcihOLHope3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01l'@; put 'dGhvZFN1cHBvcnRlZCgiZ2V0Rm9sZGVyIixbUy5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx5aWVsZCB0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Rm9sZGVyKE4seil9KX1kZWxldGVGb2xkZXIoTix6KXt2YXIgWTtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJu'@; put 'IHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImRlbGV0ZUZvbGRlciIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgbnVsbD09PShZPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PVk/dm9pZCAwOlkuZGVsZXRlRm9sZGVyKE4seil9KX1saXN0Rm9sZGVyKE4seixZLEY9ITEp'@; put 'e3ZhciBXO3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgibGlzdEZvbGRlciIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgbnVsbD09PShXPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PVc/'@; put 'dm9pZCAwOlcubGlzdEZvbGRlcihOLHosWSx7cmV0dXJuRGV0YWlsczpGfSl9KX1tb3ZlRm9sZGVyKE4seixZLEYpe3ZhciBXO3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgibW92ZUZvbGRlciIsW1MuU2VydmVy'@; put 'VHlwZS5TYXNWaXlhXSkseWllbGQgbnVsbD09PShXPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PVc/dm9pZCAwOlcubW92ZUZvbGRlcihOLHosWSxGKX0pfWNyZWF0ZUpvYkRlZmluaXRpb24oTix6LFksRixXLHEpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlv'@; put 'biooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlSm9iRGVmaW5pdGlvbiIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkscT95aWVsZCBxLmNyZWF0ZUpvYkRlZmluaXRpb24oTix6LFksRixXKTp5aWVsZCB0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlSm9iRGVmaW5p'@; put 'dGlvbihOLHosWSxGLFcpfSl9Z2V0QXV0aENvZGUoTil7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRBdXRoQ29kZSIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSkseWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xp'@; put 'ZW50LmdldEF1dGhDb2RlKE4pfSl9Z2V0QWNjZXNzVG9rZW4oTix6LFkpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0QWNjZXNzVG9rZW4iLFtTLlNlcnZlclR5cGUuU2FzVml5YSxTLlNlcnZlclR5cGUu'@; put 'U2FzanNdKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1TLlNlcnZlclR5cGUuU2FzanM/eWllbGQgdGhpcy5zYXNKU0FwaUNsaWVudC5nZXRBY2Nlc3NUb2tlbihOLFkpOnlpZWxkIHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRBY2Nlc3NUb2tlbihOLHosWSl9KX1yZWZyZXNoVG9r'@; put 'ZW5zKE4seixZKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoInJlZnJlc2hUb2tlbnMiLFtTLlNlcnZlclR5cGUuU2FzVml5YSxTLlNlcnZlclR5cGUuU2FzanNdKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5'@; put 'cGU9PT1TLlNlcnZlclR5cGUuU2FzanM/eWllbGQgdGhpcy5zYXNKU0FwaUNsaWVudC5yZWZyZXNoVG9rZW5zKFkpOnlpZWxkIHRoaXMuc2FzVml5YUFwaUNsaWVudC5yZWZyZXNoVG9rZW5zKE4seixZKX0pfWRlbGV0ZUNsaWVudChOLHope3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxm'@; put 'dW5jdGlvbiooKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVsZXRlQ2xpZW50IixbUy5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx5aWVsZCB0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVsZXRlQ2xpZW50KE4seil9KX1nZXRTYXNqc0NvbmZpZygpe3JldHVybiB0aGlzLnNhc2pzQ29u'@; put 'ZmlnfWdldFVzZXJOYW1lKCl7cmV0dXJuIHRoaXMuYXV0aE1hbmFnZXIudXNlck5hbWV9c2V0U0FTanNDb25maWcoTil7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc2FzanNDb25maWc9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuc2Fz'@; put 'anNDb25maWcpLE4pLHRoaXMuc2V0dXBDb25maWd1cmF0aW9uKCl9KX1zZXREZWJ1Z1N0YXRlKE4pe3RoaXMuc2FzanNDb25maWcuZGVidWc9Tix0aGlzLnNhc1ZpeWFBcGlDbGllbnQmJih0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVidWc9Til9Y2hlY2tTZXNzaW9uKCl7cmV0dXJuIHkodGhp'@; put 'cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLmF1dGhNYW5hZ2VyLmNoZWNrU2Vzc2lvbigpfSl9bG9nSW4oTix6LFksRj17fSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKHRoaXMuc2FzanNDb25maWcubG9naW5NZWNoYW5pc209PT1z'@; put 'LkxvZ2luTWVjaGFuaXNtLkRlZmF1bHQpe2lmKCFOfHwheil0aHJvdyBuZXcgRXJyb3IoIkEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSByZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IGxvZ2luIG1lY2hhbmlzbS4iKTtyZXR1cm4gdGhpcy5hdXRoTWFuYWdlci5sb2dJbihOLHop'@; put 'fWlmKHR5cGVvZiB3aW5kb3c+InUiKXRocm93IG5ldyBFcnJvcigiVGhlIHJlZGlyZWN0ZWQgbG9naW4gbWVjaGFuaXNtIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB1c2UgaW4gdGhlIGJyb3dzZXIuIik7cmV0dXJuIHRoaXMuYXV0aE1hbmFnZXIucmVkaXJlY3RlZExvZ0luKEYpfSl9bG9nT3V0'@; put 'KCl7cmV0dXJuIHRoaXMuYXV0aE1hbmFnZXIubG9nT3V0KCl9dXBsb2FkRmlsZShOLHosWSxGPXt9LFcpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtGPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnNhc2pzQ29uZmlnKSxGKTtjb25zdCBxPXtm'@; put 'aWxlczp6LHBhcmFtczpZfTtyZXR1cm4geWllbGQgdGhpcy5maWxlVXBsb2FkZXIuZXhlY3V0ZShOLHEsRixXKX0pfXJlcXVlc3QoTix6LFk9e30sRixXLHE9W10pe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtZPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7'@; put 'fSx0aGlzLnNhc2pzQ29uZmlnKSxZKTtjb25zdCByZT0oMCxjLnZhbGlkYXRlSW5wdXQpKHopO3JldHVybiByZS5zdGF0dXM/WS5zZXJ2ZXJUeXBlPT09Uy5TZXJ2ZXJUeXBlLlNhc2pzP3lpZWxkIHRoaXMuc2FzanNKb2JFeGVjdXRvci5leGVjdXRlKE4seixZLEYsVyxxKTpZLnNlcnZlclR5'@; put 'cGU9PT1TLlNlcnZlclR5cGUuU2FzVml5YSYmbnVsbCE9WS51c2VDb21wdXRlQXBpP1kudXNlQ29tcHV0ZUFwaT95aWVsZCB0aGlzLmNvbXB1dGVKb2JFeGVjdXRvci5leGVjdXRlKE4seixZLEYsVyk6KFkuY29udGV4dE5hbWV8fChZPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxZ'@; put 'KSx7Y29udGV4dE5hbWU6IlNBUyBKb2IgRXhlY3V0aW9uIGNvbXB1dGUgY29udGV4dCJ9KSkseWllbGQgdGhpcy5qZXNKb2JFeGVjdXRvci5leGVjdXRlKE4seixZLEYsVyxxKSk6WS5zZXJ2ZXJUeXBlPT09Uy5TZXJ2ZXJUeXBlLlNhczkmJlkudXNlcm5hbWUmJlkucGFzc3dvcmQ/eWllbGQg'@; put 'dGhpcy5zYXM5Sm9iRXhlY3V0b3IuZXhlY3V0ZShOLHosWSk6eWllbGQgdGhpcy53ZWJKb2JFeGVjdXRvci5leGVjdXRlKE4seixZLEYsVyxxKTpQcm9taXNlLnJlamVjdChuZXcgcy5FcnJvclJlc3BvbnNlKHJlLm1zZykpfSl9ZGVwbG95U2VydmljZVBhY2soTix6LFksRixXPSExKXtyZXR1'@; put 'cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVwbG95U2VydmljZVBhY2siLFtTLlNlcnZlclR5cGUuU2FzVml5YV0pO2xldCBxPW51bGw7aWYoWXx8eilZfHwoWT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCksenx8KHo9dGhp'@; put 'cy5zYXNqc0NvbmZpZy5hcHBMb2MpLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXNWaXlhPyhxPW5ldyBBLlNBU1ZpeWFBcGlDbGllbnQoWSx6LHRoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUsdGhpcy5yZXF1ZXN0Q2xpZW50KSxxLmRlYnVnPXRoaXMu'@; put 'c2FzanNDb25maWcuZGVidWcpOnRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXM5JiYocT1uZXcgdi5TQVM5QXBpQ2xpZW50KFksdGhpcy5qb2JzUGF0aCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zKSk7ZWxzZXtsZXQgbWU9bnVsbDt0aGlz'@; put 'LnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1TLlNlcnZlclR5cGUuU2FzVml5YT9tZT10aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Q29uZmlnKCk6dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09Uy5TZXJ2ZXJUeXBlLlNhczkmJihtZT10aGlzLnNhczlBcGlDbGllbnQuZ2V0Q29uZmln'@; put 'KCkpLFk9bWUuc2VydmVyVXJsLHo9bWUucm9vdEZvbGRlck5hbWV9Ti5tZW1iZXJzWzBdLm1lbWJlcnMmJk4ubWVtYmVyc1swXS5tZW1iZXJzLnNvcnQobWU9PiJmb2xkZXIiPT09bWUudHlwZT8tMToxKTtjb25zdCByZT1OLm1lbWJlcnM7eWllbGQgdGhpcy5jcmVhdGVGb2xkZXJzQW5kU2Vy'@; put 'dmljZXMoeixyZSxGLHEsVyl9KX1zdGFydENvbXB1dGVKb2IoTix6LFk9e30sRixXLHEscmU9ITEsbWUsQ2UsSWUpe3ZhciBrZSxxZSxYLGY7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKFk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuc2Fz'@; put 'anNDb25maWcpLFkpLHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoInN0YXJ0Q29tcHV0ZUpvYiIsW1MuU2VydmVyVHlwZS5TYXNWaXlhXSksIVkuY29udGV4dE5hbWUpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IG5hbWUgaXMgdW5kZWZpbmVkLiBQbGVhc2Ugc2V0IGEgYGNvbnRleHROYW1lYCBp'@; put 'biB5b3VyIFNBU2pzIG9yIG92ZXJyaWRlIGNvbmZpZy4iKTtyZXR1cm4gQ2U/KG51bGw9PT0oa2U9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09a2V8fGtlLnNldFZlcmJvc2VNb2RlKENlKSxudWxsPT09KHFlPXRoaXMucmVxdWVzdENsaWVudCl8fHZvaWQgMD09PXFlfHxxZS5lbmFi'@; put 'bGVWZXJib3NlTW9kZSgpKTohMT09PUNlJiYobnVsbD09PShYPXRoaXMucmVxdWVzdENsaWVudCl8fHZvaWQgMD09PVh8fFguZGlzYWJsZVZlcmJvc2VNb2RlKCkpLG51bGw9PT0oZj10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLmV4ZWN1dGVDb21wdXRlSm9i'@; put 'KE4sWS5jb250ZXh0TmFtZSxZLmRlYnVnLHosRiwhIVcsITEscSxyZSxtZSxJZSl9KX1mZXRjaExvZ0ZpbGVDb250ZW50KE4seil7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KE4seikudGhlbihZPT57'@; put 'aWYoIVkpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBzLkVycm9yUmVzcG9uc2UoIkVycm9yIHdoaWxlIGZldGNoaW5nIGxvZy4gUmVzcG9uc2Ugd2FzIG5vdCBwcm92aWRlZC4iKSk7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShZLnJlc3VsdCl9Y2F0Y2goRil7cmV0dXJuIFByb21pc2Uu'@; put 'cmVqZWN0KG5ldyBzLkVycm9yUmVzcG9uc2UoIkVycm9yIHdoaWxlIGZldGNoaW5nIGxvZy4gVGhlIHJlc3VsdCBpcyBub3QgdmFsaWQuIixGKSl9fSl9KX1nZXRTYXNSZXF1ZXN0cygpe3JldHVyblsuLi50aGlzLnJlcXVlc3RDbGllbnQuZ2V0UmVxdWVzdHMoKV0uc29ydChjLmNvbXBhcmVU'@; put 'aW1lc3RhbXBzKX1jbGVhclNhc1JlcXVlc3RzKCl7dGhpcy5yZXF1ZXN0Q2xpZW50LmNsZWFyUmVxdWVzdHMoKX1zZXR1cENvbmZpZ3VyYXRpb24oKXtpZih2b2lkIDA9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybHx8IiI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybClpZih0eXBl'@; put 'b2YgbG9jYXRpb248InUiKXtsZXQgTj1gJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdG5hbWV9YDtsb2NhdGlvbi5wb3J0JiYoTj1gJHtOfToke2xvY2F0aW9uLnBvcnR9YCksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmw9Tn1lbHNlIHRoaXMuc2FzanNDb25maWcuc2Vy'@; put 'dmVyVXJsPSIiOyIvIj09PXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLnNsaWNlKC0xKSYmKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLnNsaWNlKDAsLTEpKSx0aGlzLnJlcXVlc3RDbGllbnQ/dGhpcy5yZXF1ZXN0Q2xpZW50LnNldENv'@; put 'bmZpZyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zKTp0aGlzLnJlcXVlc3RDbGllbnQ9bmV3KHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXNqcz9SLlNhc2pzUmVxdWVzdENsaWVudDpMLlJl'@; put 'cXVlc3RDbGllbnQpKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMsdGhpcy5zYXNqc0NvbmZpZy5yZXF1ZXN0SGlzdG9yeUxpbWl0LHRoaXMuc2FzanNDb25maWcudmVyYm9zZSksdGhpcy5qb2JzUGF0aD10aGlzLnNhc2pzQ29u'@; put 'ZmlnLnNlcnZlclR5cGU9PT1TLlNlcnZlclR5cGUuU2FzVml5YT90aGlzLnNhc2pzQ29uZmlnLnBhdGhTQVNWaXlhOnRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXM5P3RoaXMuc2FzanNDb25maWcucGF0aFNBUzk6dGhpcy5zYXNqc0NvbmZpZy5wYXRoU0FT'@; put 'SlMsdGhpcy5hdXRoTWFuYWdlcj1uZXcgdy5BdXRoTWFuYWdlcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMucmVzZW5kV2FpdGluZ1JlcXVlc3RzKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5'@; put 'cGU9PT1TLlNlcnZlclR5cGUuU2FzVml5YSYmKHRoaXMuc2FzVml5YUFwaUNsaWVudD90aGlzLnNhc1ZpeWFBcGlDbGllbnQuc2V0Q29uZmlnKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuYXBwTG9jKTp0aGlzLnNhc1ZpeWFBcGlDbGllbnQ9bmV3IEEuU0FT'@; put 'Vml5YUFwaUNsaWVudCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLmFwcExvYyx0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lLHRoaXMucmVxdWVzdENsaWVudCksdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlYnVnPXRoaXMuc2FzanNDb25maWcuZGVidWcp'@; put 'LHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXM5JiYodGhpcy5zYXM5QXBpQ2xpZW50P3RoaXMuc2FzOUFwaUNsaWVudC5zZXRDb25maWcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwpOnRoaXMuc2FzOUFwaUNsaWVudD1uZXcgdi5TQVM5QXBpQ2xpZW50'@; put 'KHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuam9ic1BhdGgsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucykpLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVMuU2VydmVyVHlwZS5TYXNqcyYmKHRoaXMuc2FzSlNBcGlDbGllbnR8fCh0aGlzLnNhc0pTQXBp'@; put 'Q2xpZW50PW5ldyBDLlNBU2pzQXBpQ2xpZW50KHRoaXMucmVxdWVzdENsaWVudCkpKSx0aGlzLmZpbGVVcGxvYWRlcj1uZXcgeC5GaWxlVXBsb2FkZXIodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMuam9ic1BhdGgsdGhpcy5yZXF1'@; put 'ZXN0Q2xpZW50KSx0aGlzLndlYkpvYkV4ZWN1dG9yPW5ldyB4LldlYkpvYkV4ZWN1dG9yKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSx0aGlzLmpvYnNQYXRoLHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQpLHRo'@; put 'aXMuc2FzanNKb2JFeGVjdXRvcj1uZXcgeC5TYXNqc0pvYkV4ZWN1dG9yKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuam9ic1BhdGgsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLnNhczlKb2JFeGVjdXRvcj1uZXcgeC5TYXM5Sm9iRXhlY3V0b3IodGhpcy5zYXNqc0NvbmZpZy5z'@; put 'ZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMuam9ic1BhdGgsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMpLHRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yPW5ldyB4LkNvbXB1dGVKb2JFeGVjdXRvcih0aGlzLnNhc2pz'@; put 'Q29uZmlnLnNlcnZlclVybCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQpLHRoaXMuamVzSm9iRXhlY3V0b3I9bmV3IHguSmVzSm9iRXhlY3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNWaXlhQXBpQ2xpZW50KX1jcmVhdGVGb2xkZXJzQW5kU2VydmljZXMoTix6LFksRixX'@; put 'KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7eWllbGQoMCxjLmFzeW5jRm9yRWFjaCkoeixxPT55KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtzd2l0Y2gocS50eXBlKXtjYXNlImZvbGRlciI6eWllbGQgdGhpcy5jcmVhdGVGb2xkZXIocS5uYW1lLE4s'@; put 'dm9pZCAwLFksRixXKTticmVhaztjYXNlImZpbGUiOnlpZWxkIHRoaXMuY3JlYXRlRmlsZShxLm5hbWUscS5jb2RlLE4sdm9pZCAwLFksRik7YnJlYWs7Y2FzZSJzZXJ2aWNlIjp5aWVsZCB0aGlzLmNyZWF0ZUpvYkRlZmluaXRpb24ocS5uYW1lLHEuY29kZSxOLHZvaWQgMCxZLEYpO2JyZWFr'@; put 'O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmlkZW50aWZpZWQgbWVtYmVyICcke3EubmFtZX0nIHByb3ZpZGVkLmApfSJmb2xkZXIiPT09cS50eXBlJiZxLm1lbWJlcnMmJnEubWVtYmVycy5sZW5ndGgmJih5aWVsZCB0aGlzLmNyZWF0ZUZvbGRlcnNBbmRTZXJ2aWNlcyhgJHtOfS8ke3Eu'@; put 'bmFtZX1gLHEubWVtYmVycyxZLEYsVykpfSkpfSl9aXNNZXRob2RTdXBwb3J0ZWQoTix6KXtpZighdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlfHwhei5pbmNsdWRlcyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUpKXRocm93IG5ldyBFcnJvcihgTWV0aG9kICcke059JyBpcyBvbmx5'@; put 'IHN1cHBvcnRlZCBvbiAke3ouam9pbigiLCAiKX0gc2VydmVycy5gKX1lbmFibGVWZXJib3NlTW9kZShOLHope3ZhciBZO251bGw9PT0oWT10aGlzLnJlcXVlc3RDbGllbnQpfHx2b2lkIDA9PT1ZfHxZLmVuYWJsZVZlcmJvc2VNb2RlKE4seil9ZGlzYWJsZVZlcmJvc2VNb2RlKCl7dmFyIE47'@; put 'bnVsbD09PShOPXRoaXMucmVxdWVzdENsaWVudCl8fHZvaWQgMD09PU58fE4uZGlzYWJsZVZlcmJvc2VNb2RlKCl9VGFibGVzKE4seil7cmV0dXJuIG5ldyBzLlRhYmxlcyhOLHopfX19LDQ1ODAzKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5j'@; put 'dGlvbihSLHgsVSxIKXtyZXR1cm4gbmV3KFV8fChVPVByb21pc2UpKShmdW5jdGlvbihOLHope2Z1bmN0aW9uIFkocSl7dHJ5e1coSC5uZXh0KHEpKX1jYXRjaChyZSl7eihyZSl9fWZ1bmN0aW9uIEYocSl7dHJ5e1coSC50aHJvdyhxKSl9Y2F0Y2gocmUpe3oocmUpfX1mdW5jdGlvbiBXKHEp'@; put 'e3EuZG9uZT9OKHEudmFsdWUpOmZ1bmN0aW9uIFYoTil7cmV0dXJuIE4gaW5zdGFuY2VvZiBVP046bmV3IFUoZnVuY3Rpb24oeil7eihOKX0pfShxLnZhbHVlKS50aGVuKFksRil9VygoSD1ILmFwcGx5KFIseHx8W10pKS5uZXh0KCkpfSl9LGM9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8'@; put 'fGZ1bmN0aW9uKFIpe3JldHVybiBSJiZSLl9fZXNNb2R1bGU/Ujp7ZGVmYXVsdDpSfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouU0FTanNBcGlDbGllbnQ9dm9pZCAwO2NvbnN0IHM9YyhoKDUxODk0KSksQT1oKDM2MzEpLHY9aCg2MzQwKSxD'@; put 'PWgoOTkyMzkpLHc9aCg5NjcyNSksUz1oKDI5NjA5KTtqLlNBU2pzQXBpQ2xpZW50PWNsYXNzIEx7Y29uc3RydWN0b3IoeCl7dGhpcy5yZXF1ZXN0Q2xpZW50PXh9Z2V0QWNjZXNzVG9rZW5Gb3JSZXF1ZXN0KHgpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih4'@; put 'KXtjb25zdHthY2Nlc3NfdG9rZW46VX09eWllbGQoMCxTLmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LHgsQS5TZXJ2ZXJUeXBlLlNhc2pzKTtyZXR1cm4gVX19KX1kZXBsb3koeCxVLEgpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBWPXlpZWxk'@; put 'IHRoaXMuZ2V0QWNjZXNzVG9rZW5Gb3JSZXF1ZXN0KEgpO3guYXBwTG9jPXguYXBwTG9jfHxVO2NvbnN0e3Jlc3VsdDpOfT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiU0FTanNBcGkvZHJpdmUvZGVwbG95Iix4LFYsdm9pZCAwLHt9LHttYXhDb250ZW50TGVuZ3RoOjEvMCxtYXhC'@; put 'b2R5TGVuZ3RoOjEvMH0pO3JldHVybiBQcm9taXNlLnJlc29sdmUoTil9KX1kZXBsb3laaXBGaWxlKHgsVSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0e2NyZWF0ZVJlYWRTdHJlYW06SH09aCgyNTkwOCksVj15aWVsZCB0aGlzLmdldEFjY2Vzc1Rva2Vu'@; put 'Rm9yUmVxdWVzdChVKSxOPXlpZWxkIEgoeCksej1uZXcgcy5kZWZhdWx0O3ouYXBwZW5kKCJmaWxlIixOKTtjb25zdCBZPWBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke3ouZ2V0Qm91bmRhcnkoKX1gLHtyZXN1bHQ6Rn09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIlNB'@; put 'U2pzQXBpL2RyaXZlL2RlcGxveS91cGxvYWQiLHosVixZLHt9LHttYXhDb250ZW50TGVuZ3RoOjEvMCxtYXhCb2R5TGVuZ3RoOjEvMH0pO3JldHVybiBQcm9taXNlLnJlc29sdmUoRil9KX1leGVjdXRlSm9iKHgsVSxIKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7'@; put 'Y29uc3QgVj1IP0guYWNjZXNzX3Rva2VuOnZvaWQgMDtsZXQgTjtOPXguX3Byb2dyYW0uc3RhcnRzV2l0aCgiLyIpP3guX3Byb2dyYW06YCR7VX0vJHt4Ll9wcm9ncmFtfWA7Y29uc3Qgej15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiU0FTanNBcGkvc3RwL2V4ZWN1dGUiLE9iamVj'@; put 'dC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7X2RlYnVnOjEzMX0seCkse19wcm9ncmFtOk59KSxWKTtyZXR1cm57cmVzdWx0OnoucmVzdWx0LGxvZzp6LmxvZ319KX1leGVjdXRlU2NyaXB0KHgsVT0ic2FzIixIKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3Qg'@; put 'Vj15aWVsZCB0aGlzLmdldEFjY2Vzc1Rva2VuRm9yUmVxdWVzdChIKSxOPXtsb2c6IiJ9O3JldHVybiB5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiU0FTanNBcGkvY29kZS9leGVjdXRlIix7Y29kZTp4LHJ1blRpbWU6VX0sVikudGhlbih6PT57Y29uc3R7bG9nOlkscHJpbnRPdXRw'@; put 'dXQ6RixyZXN1bHQ6V309ejtOLmxvZz1ZLEYmJihOLnByaW50T3V0cHV0PUYpLFcmJihOLndlYm91dD1XKX0pLmNhdGNoKHo9Pnt0aHJvdygwLHYucHJlZml4TWVzc2FnZSkoeiwiRXJyb3Igd2hpbGUgc2VuZGluZyBQT1NUIHJlcXVlc3QgdG8gZXhlY3V0ZSBjb2RlLiAiKX0pLE59KX1nZXRB'@; put 'Y2Nlc3NUb2tlbih4LFUpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4oMCxDLmdldEFjY2Vzc1Rva2VuRm9yU2FzanMpKHRoaXMucmVxdWVzdENsaWVudCx4LFUpfSl9cmVmcmVzaFRva2Vucyh4KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVu'@; put 'Y3Rpb24qKCl7cmV0dXJuKDAsdy5yZWZyZXNoVG9rZW5zRm9yU2FzanMpKHRoaXMucmVxdWVzdENsaWVudCx4KX0pfX19LDQ4Njk3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYpLGM9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEwsUix4LFUpe3JldHVybiBuZXco'@; put 'eHx8KHg9UHJvbWlzZSkpKGZ1bmN0aW9uKFYsTil7ZnVuY3Rpb24geihXKXt0cnl7RihVLm5leHQoVykpfWNhdGNoKHEpe04ocSl9fWZ1bmN0aW9uIFkoVyl7dHJ5e0YoVS50aHJvdyhXKSl9Y2F0Y2gocSl7TihxKX19ZnVuY3Rpb24gRihXKXtXLmRvbmU/VihXLnZhbHVlKTpmdW5jdGlvbiBI'@; put 'KFYpe3JldHVybiBWIGluc3RhbmNlb2YgeD9WOm5ldyB4KGZ1bmN0aW9uKE4pe04oVil9KX0oVy52YWx1ZSkudGhlbih6LFkpfUYoKFU9VS5hcHBseShMLFJ8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5TZXNzaW9u'@; put 'TWFuYWdlcj12b2lkIDA7Y29uc3Qgcz1oKDUzNTc0KSxBPWgoMTczODgpLHY9aCgyOTI2NiksQz1oKDYzNDApO2ouU2Vzc2lvbk1hbmFnZXI9Y2xhc3MgU3tjb25zdHJ1Y3RvcihSLHgsVSl7dGhpcy5zZXJ2ZXJVcmw9Uix0aGlzLmNvbnRleHROYW1lPXgsdGhpcy5yZXF1ZXN0Q2xpZW50PVUs'@; put 'dGhpcy5sb2dnZWRFcnJvcnM9W10sdGhpcy5zZXNzaW9uU3RhdGVMaW5rRXJyb3I9IkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbiBzdGF0ZSBsaW5rLiAiLHRoaXMuc2Vzc2lvbnM9W10sdGhpcy5jdXJyZW50Q29udGV4dD1udWxsLHRoaXMuc2V0dGluZ0NvbnRleHQ9ITEsdGhpcy5fZGVi'@; put 'dWc9ITEsdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlPXtwcmludGVkOiExLHN0YXRlOnMuU2Vzc2lvblN0YXRlLk5vU3RhdGV9LFImJigwLHYuaXNVcmwpKFIpfWdldCBkZWJ1Zygpe3JldHVybiB0aGlzLl9kZWJ1Z31zZXQgZGVidWcoUil7dGhpcy5fZGVidWc9Un1pc1Nlc3Npb25WYWxpZChS'@; put 'KXtpZighUilyZXR1cm4hMTtjb25zdCB4PSgobmV3IERhdGUpLmdldFRpbWUoKS1uZXcgRGF0ZShSLmNyZWF0aW9uVGltZVN0YW1wKS5nZXRUaW1lKCkpLzFlMztyZXR1cm4hKCFSLmF0dHJpYnV0ZXN8fHg+PVIuYXR0cmlidXRlcy5zZXNzaW9uSW5hY3RpdmVUaW1lb3V0KX1yZW1vdmVTZXNz'@; put 'aW9uRnJvbVBvb2woUil7dGhpcy5zZXNzaW9ucz10aGlzLnNlc3Npb25zLmZpbHRlcih4PT54LmlkIT09Ui5pZCl9cmVtb3ZlRXhwaXJlZFNlc3Npb25zKCl7dGhpcy5zZXNzaW9ucz10aGlzLnNlc3Npb25zLmZpbHRlcihSPT50aGlzLmlzU2Vzc2lvblZhbGlkKFIpKX10aHJvd0Vycm9ycyhS'@; put 'LHgpe3Rocm93IHg/KDAsQy5wcmVmaXhNZXNzYWdlKShuZXcgRXJyb3IoUi5qb2luKCIuICIpKSx4KTpuZXcgRXJyb3IoUi5tYXAoVT0+VS5tZXNzYWdlP1UubWVzc2FnZTpVKS5qb2luKCIuICIpKX1nZXRTZXNzaW9uKFIpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbioo'@; put 'KXtjb25zdCB4PVtdO2xldCBVPSExO2NvbnN0IEg9KCk9Pnt4Lmxlbmd0aCYmIVUmJihVPSEwLHRoaXMudGhyb3dFcnJvcnMoeCkpfTtpZih0aGlzLnJlbW92ZUV4cGlyZWRTZXNzaW9ucygpLHRoaXMuc2Vzc2lvbnMubGVuZ3RoKXtjb25zdCBWPXRoaXMuc2Vzc2lvbnNbMF07cmV0dXJuIHRo'@; put 'aXMucmVtb3ZlU2Vzc2lvbkZyb21Qb29sKFYpLHRoaXMuY3JlYXRlU2Vzc2lvbnMoUikuY2F0Y2goTj0+e3gucHVzaChOKX0pLHRoaXMuY3JlYXRlQW5kV2FpdEZvclNlc3Npb24oUikuY2F0Y2goTj0+e3gucHVzaChOKX0pLEgoKSxWfXt0aGlzLmNyZWF0ZVNlc3Npb25zKFIpLmNhdGNoKE49'@; put 'Pnt4LnB1c2goTil9KSx5aWVsZCB0aGlzLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKFIpLmNhdGNoKE49Pnt4LnB1c2goTil9KSx0aGlzLnJlbW92ZUV4cGlyZWRTZXNzaW9ucygpO2NvbnN0IFY9dGhpcy5zZXNzaW9ucy5wb3AoKTtyZXR1cm4gdGhpcy5yZW1vdmVTZXNzaW9uRnJvbVBvb2wo'@; put 'ViksSCgpLFZ9fSl9Z2V0RXJyb3JNZXNzYWdlKFIseCxVKXtyZXR1cm5gJHtVfSByZXF1ZXN0IHRvICR7eH0gZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtSLnJlc3BvbnNlLnN0YXR1c3x8InVua25vd24ifS4gYCtSLnJlc3BvbnNlLmRhdGEubWVzc2FnZXx8IiJ9Y2xlYXJTZXNzaW9uKFIs'@; put 'eCl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IFU9YC9jb21wdXRlL3Nlc3Npb25zLyR7Un1gO3JldHVybiB5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZGVsZXRlKFUseCkudGhlbigoKT0+e3RoaXMuc2Vzc2lvbnM9dGhpcy5zZXNzaW9ucy5maWx0ZXIo'@; put 'SD0+SC5pZCE9PVIpfSkuY2F0Y2goSD0+e3Rocm93KDAsQy5wcmVmaXhNZXNzYWdlKSh0aGlzLmdldEVycm9yTWVzc2FnZShILFUsIkRFTEVURSIpLCJFcnJvciB3aGlsZSBkZWxldGluZyBzZXNzaW9uLiAiKX0pfSl9Y3JlYXRlU2Vzc2lvbnMoUil7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9p'@; put 'ZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHg9W107dGhpcy5zZXNzaW9ucy5sZW5ndGh8fCh5aWVsZCgwLHYuYXN5bmNGb3JFYWNoKShuZXcgQXJyYXkoMSksKCk9PmModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIHRoaXMuY3JlYXRlQW5kV2FpdEZvclNlc3Npb24oUikuY2F0'@; put 'Y2goVT0+e3gucHVzaChVKX0pfSkpKSx4Lmxlbmd0aCYmdGhpcy50aHJvd0Vycm9ycyh4LCJFcnJvciB3aGlsZSBjcmVhdGluZyBzZXNzaW9uLiAiKX0pfXdhaXRGb3JDdXJyZW50Q29udGV4dCgpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFBy'@; put 'b21pc2UoUj0+e2NvbnN0IHg9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLmN1cnJlbnRDb250ZXh0JiYodGhpcy5zZXR0aW5nQ29udGV4dD0hMSxjbGVhckludGVydmFsKHgpLFIoKSl9LDEwMCl9KX0pfWNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKFIpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQg'@; put 'MCxmdW5jdGlvbiooKXt0aGlzLmN1cnJlbnRDb250ZXh0fHwodGhpcy5zZXR0aW5nQ29udGV4dD95aWVsZCB0aGlzLndhaXRGb3JDdXJyZW50Q29udGV4dCgpOnlpZWxkIHRoaXMuc2V0Q3VycmVudENvbnRleHQoUikpO2NvbnN0IHg9YCR7dGhpcy5zZXJ2ZXJVcmx9L2NvbXB1dGUvY29udGV4'@; put 'dHMvJHt0aGlzLmN1cnJlbnRDb250ZXh0LmlkfS9zZXNzaW9uc2Ase3Jlc3VsdDpVLGV0YWc6SH09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoeCx7fSxSKS5jYXRjaChOPT57dGhyb3coMCxDLnByZWZpeE1lc3NhZ2UpKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKE4seCwiUE9TVCIpLCJF'@; put 'cnJvciB3aGlsZSBjcmVhdGluZyBzZXNzaW9uLiAiKX0pO1UuZXRhZz1IO2NvbnN0IFY9VS5saW5rcy5maW5kKE49PiJzdGF0ZSI9PT1OLnJlbCk7aWYoIVYpdGhyb3cgdGhpcy5zZXNzaW9uU3RhdGVMaW5rRXJyb3I7cmV0dXJuIFUuc3RhdGVVcmw9Vi5ocmVmLHlpZWxkIHRoaXMud2FpdEZv'@; put 'clNlc3Npb24oVSxILFIpLHRoaXMuc2Vzc2lvbnMucHVzaChVKSxVfSl9c2V0Q3VycmVudENvbnRleHQoUil7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKCF0aGlzLmN1cnJlbnRDb250ZXh0KXtjb25zdCB4PWAke3RoaXMuc2VydmVyVXJsfS9jb21wdXRlL2Nv'@; put 'bnRleHRzP2xpbWl0PTEwMDAwYDt0aGlzLnNldHRpbmdDb250ZXh0PSEwO2NvbnN0e3Jlc3VsdDpVfT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KHgsUikuY2F0Y2goTj0+e3Rocm93KDAsQy5wcmVmaXhNZXNzYWdlKSh0aGlzLmdldEVycm9yTWVzc2FnZShOLHgsIkdFVCIpLCJFcnJv'@; put 'ciB3aGlsZSBnZXR0aW5nIGxpc3Qgb2YgY29udGV4dHMuICIpfSksVj0oVSYmVS5pdGVtcyYmVS5pdGVtcy5sZW5ndGg/VS5pdGVtczpbXSkuZmluZChOPT5OLm5hbWU9PT10aGlzLmNvbnRleHROYW1lKTtpZighVil0aHJvdyBuZXcgRXJyb3IoYFRoZSBjb250ZXh0ICcke3RoaXMuY29udGV4'@; put 'dE5hbWV9JyB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIgJHt0aGlzLnNlcnZlclVybH0uYCk7dGhpcy5jdXJyZW50Q29udGV4dD1WLFByb21pc2UucmVzb2x2ZSgpfX0pfXdhaXRGb3JTZXNzaW9uKFIseCxVKXt2YXIgSDtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24q'@; put 'KCl7bGV0e3N0YXRlOlZ9PVI7Y29uc3R7c3RhdGVVcmw6Tn09Uix6PXkubG9nZ2VyfHxjb25zb2xlO2lmKFY9PT1zLlNlc3Npb25TdGF0ZS5QZW5kaW5nfHxWPT09cy5TZXNzaW9uU3RhdGUuUnVubmluZ3x8Vj09PXMuU2Vzc2lvblN0YXRlLk5vU3RhdGUpe2lmKE4pe3RoaXMuZGVidWcmJiF0'@; put 'aGlzLnByaW50ZWRTZXNzaW9uU3RhdGUucHJpbnRlZCYmKHouaW5mbyhgUG9sbGluZzogJHt0aGlzLnNlcnZlclVybCtOfWApLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkPSEwKTtjb25zdCBZPWAke3RoaXMuc2VydmVyVXJsfSR7Tn0/d2FpdD0zMGAse3Jlc3VsdDpGLHJlc3Bv'@; put 'bnNlU3RhdHVzOld9PXlpZWxkIHRoaXMuZ2V0U2Vzc2lvblN0YXRlKFkseCxVKS5jYXRjaChxPT57dGhyb3coMCxDLnByZWZpeE1lc3NhZ2UpKHEsIkVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIHNlc3Npb24uICIpfSk7aWYoVj1GLnRyaW0oKSx0aGlzLmRlYnVnJiZ0aGlzLnByaW50ZWRTZXNz'@; put 'aW9uU3RhdGUuc3RhdGUhPT1WJiYoei5pbmZvKGBDdXJyZW50IHNlc3Npb24gc3RhdGUgaXMgJyR7Vn0nYCksdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnN0YXRlPVYsdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnByaW50ZWQ9ITEpLCFWKXtjb25zdCBxPW5ldyBBLk5vU2Vzc2lvblN0YXRl'@; put 'RXJyb3IoVyx0aGlzLnNlcnZlclVybCtOLG51bGw9PT0oSD1SLmxpbmtzLmZpbmQocmU9PiJsb2ciPT09cmUucmVsKSl8fHZvaWQgMD09PUg/dm9pZCAwOkguaHJlZik7cmV0dXJuIHRoaXMubG9nZ2VkRXJyb3JzLmZpbmQocmU9PnJlLnNlcnZlclJlc3BvbnNlU3RhdHVzPT09cS5zZXJ2ZXJS'@; put 'ZXNwb25zZVN0YXR1cyl8fCh0aGlzLmxvZ2dlZEVycm9ycy5wdXNoKHEpLHouaW5mbyhxLm1lc3NhZ2UpKSx5aWVsZCB0aGlzLndhaXRGb3JTZXNzaW9uKFIseCxVKX1yZXR1cm4gdGhpcy5sb2dnZWRFcnJvcnM9W10sVn10aHJvdyB0aGlzLnNlc3Npb25TdGF0ZUxpbmtFcnJvcn1yZXR1cm4g'@; put 'dGhpcy5sb2dnZWRFcnJvcnM9W10sVn0pfWdldFNlc3Npb25TdGF0ZShSLHgsVSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KFIsVSwidGV4dC9wbGFpbiIseyJJZi1Ob25lLU1hdGNoIjp4fSkudGhl'@; put 'bihIPT4oe3Jlc3VsdDpILnJlc3VsdCxyZXNwb25zZVN0YXR1czpILnN0YXR1c30pKS5jYXRjaChIPT57dGhyb3coMCxDLnByZWZpeE1lc3NhZ2UpKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKEgsUiwiR0VUIiksIkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbiBzdGF0ZS4gIil9KX0pfWdldFZh'@; put 'cmlhYmxlKFIseCxVKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgSD1gJHt0aGlzLnNlcnZlclVybH0vY29tcHV0ZS9zZXNzaW9ucy8ke1J9L3ZhcmlhYmxlcy8ke3h9YDtyZXR1cm4geWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChILFUpLmNhdGNo'@; put 'KFY9Pnt0aHJvdygwLEMucHJlZml4TWVzc2FnZSkodGhpcy5nZXRFcnJvck1lc3NhZ2UoVixILCJHRVQiKSxgRXJyb3Igd2hpbGUgZmV0Y2hpbmcgc2Vzc2lvbiB2YXJpYWJsZSAnJHt4fScuIGApfSl9KX19fSw4MzcyMihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPXRo'@; put 'aXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihILFYsTix6KXtyZXR1cm4gbmV3KE58fChOPVByb21pc2UpKShmdW5jdGlvbihGLFcpe2Z1bmN0aW9uIHEoQ2Upe3RyeXttZSh6Lm5leHQoQ2UpKX1jYXRjaChJZSl7VyhJZSl9fWZ1bmN0aW9uIHJlKENlKXt0cnl7bWUoei50aHJvdyhDZSkp'@; put 'fWNhdGNoKEllKXtXKEllKX19ZnVuY3Rpb24gbWUoQ2Upe0NlLmRvbmU/RihDZS52YWx1ZSk6ZnVuY3Rpb24gWShGKXtyZXR1cm4gRiBpbnN0YW5jZW9mIE4/RjpuZXcgTihmdW5jdGlvbihXKXtXKEYpfSl9KENlLnZhbHVlKS50aGVuKHEscmUpfW1lKCh6PXouYXBwbHkoSCxWfHxbXSkpLm5l'@; put 'eHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouZXhlY3V0ZU9uQ29tcHV0ZUFwaT12b2lkIDA7Y29uc3Qgcz1oKDg3MjQ3KSxBPWgoMzYzMSksdj1oKDYzNDApLEM9aCgyODE1Niksdz1oKDI5NjA5KSxTPWgoMjkyNjYpLEw9aCg4MzQw'@; put 'NyksUj1oKDkxNTE0KSx4PWgoNTg1NjMpO2ouZXhlY3V0ZU9uQ29tcHV0ZUFwaT1mdW5jdGlvbiBVKEgsVixOLHosWSxGLFcscT1udWxsLHJlPSExLG1lPSExLENlPSEwLEllLGtlPSExLHFlLFgpe3ZhciBmLGI7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBr'@; put 'PShXfHx7fSkuYWNjZXNzX3Rva2VuO1cmJih7YWNjZXNzX3Rva2VuOmt9PXlpZWxkKDAsdy5nZXRUb2tlbnMpKEgsVyxBLlNlcnZlclR5cGUuU2FzVml5YSxYKSk7Y29uc3QgTT15LmxvZ2dlcnx8Y29uc29sZTt0cnl7bGV0IEI7Y29uc3QgSz15aWVsZCBWLmdldFNlc3Npb24oaykuY2F0Y2go'@; put 'YWU9Pnt0aHJvdygwLHYucHJlZml4TWVzc2FnZSkoYWUsIkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbi4gIil9KTtpZihCPUsuaWQsa2Upe2NvbnN0e3Jlc3VsdDphZX09eWllbGQgVi5nZXRWYXJpYWJsZShCLCJTWVNKT0JJRCIsaykuY2F0Y2goeGU9Pnt0aHJvdygwLHYucHJlZml4TWVz'@; put 'c2FnZSkoeGUsIkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbiB2YXJpYWJsZS4gIil9KTtpZihhZSYmYWUudmFsdWUpe2NvbnN0IHhlPU4/ei5zcGxpdChOKS5qb2luKCIiKS5yZXBsYWNlKC9eXC8vLCIiKTp6Oyh5LmxvZ2dlcnx8Y29uc29sZSkuaW5mbyhgVHJpZ2dlcmluZyAnJHt4ZX0n'@; put 'IHdpdGggUElEICR7YWUudmFsdWV9IGF0ICR7KDAscy50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTKSgpfWApfX1sZXQgRztHPSgwLFMuaXNSZWxhdGl2ZVBhdGgpKHopP2BleGVjLSR7ei5pbmNsdWRlcygiLyIpP3ouc3BsaXQoIi8iKVsxXTp6fWA6ei5zcGxpdCgiLyIpLnBvcCgpO2xldCBE'@; put 'PXtTWVNfSkVTX0pPQl9VUkk6IiIsX3Byb2dyYW06KDAsUy5pc1JlbGF0aXZlUGF0aCkoeik/TisiLyIrejp6fTtxZSYmKEQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEQpLHFlKSkscmUmJihEPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxEKSx7X0RFQlVHOjEzMX0p'@; put 'KTtsZXQgcD1bXTtxJiYoSlNPTi5zdHJpbmdpZnkocSkuaW5jbHVkZXMoIjsiKT8ocD15aWVsZCgwLHgudXBsb2FkVGFibGVzKShILHEsaykuY2F0Y2goYWU9Pnt0aHJvdygwLHYucHJlZml4TWVzc2FnZSkoYWUsIkVycm9yIHdoaWxlIHVwbG9hZGluZyB0YWJsZXMuICIpfSksRC5fd2ViaW5f'@; put 'ZmlsZV9jb3VudD1wLmxlbmd0aCxwLmZvckVhY2goKGFlLHhlKT0+e0RbYF93ZWJpbl9maWxldXJpJHt4ZSsxfWBdPWAvZmlsZXMvZmlsZXMvJHthZS5maWxlLmlkfWAsRFtgX3dlYmluX25hbWUke3hlKzF9YF09YWUudGFibGVOYW1lfSkpOkQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWdu'@; put 'KHt9LEQpLCgwLEwuZm9ybWF0RGF0YUZvclJlcXVlc3QpKHEpKSk7Y29uc3QgST17bmFtZTpHfHwiRGVmYXVsdCBKb2IgTmFtZSIsZGVzY3JpcHRpb246IlBvd2VyZWQgYnkgU0FTanMiLGNvZGU6WSx2YXJpYWJsZXM6RCx2ZXJzaW9uOjJ9LHtyZXN1bHQ6dWV9PXlpZWxkIEgucG9zdChgL2Nv'@; put 'bXB1dGUvc2Vzc2lvbnMvJHtCfS9qb2JzYCxJLGspLmNhdGNoKGFlPT57dGhyb3coMCx2LnByZWZpeE1lc3NhZ2UpKGFlLCJFcnJvciB3aGlsZSBwb3N0aW5nIGpvYi4gIil9KTtpZighQ2UpcmV0dXJuIEs7cmUmJihNLmluZm8oYEpvYiBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yICcke0d9Jy5g'@; put 'KSxNLmluZm8oYFlvdSBjYW4gbW9uaXRvciB0aGUgam9iIHByb2dyZXNzIGF0ICcke0guZ2V0QmFzZVVybCgpfSR7dWUubGlua3MuZmluZChhZT0+InN0YXRlIj09PWFlLnJlbCkuaHJlZn0nLmApKTtjb25zdCBfZT15aWVsZCgwLFIucG9sbEpvYlN0YXRlKShILHVlLHJlLFcsSWUse3Nlc3Np'@; put 'b246SyxzZXNzaW9uTWFuYWdlcjpWfSxYKS5jYXRjaChhZT0+Yyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHhlLGplO2NvbnN0IEFlPW51bGw9PT0oeGU9YWU/LnJlc3BvbnNlKXx8dm9pZCAwPT09eGU/dm9pZCAwOnhlLmRhdGEsRGU9L2Vycj1bMC05XSosLy5leGVjKEFl'@; put 'KTtpZigiNTExMyI9PT0obnVsbD09PShqZT1EZT8uWzBdKXx8dm9pZCAwPT09amU/dm9pZCAwOmplLnNsaWNlKDQsLTEpKSl7Y29uc3QgY2U9dWUubGlua3MuZmluZChoZT0+InVwIj09PWhlLnJlbCkuaHJlZisiL2xvZyI7YWUubG9nPXlpZWxkKDAsUy5mZXRjaExvZ0J5Q2h1bmtzKShILGss'@; put 'Y2UsMWU2KX10aHJvdygwLHYucHJlZml4TWVzc2FnZSkoYWUsIkVycm9yIHdoaWxlIHBvbGxpbmcgam9iIHN0YXR1cy4gIil9KSk7VyYmKHthY2Nlc3NfdG9rZW46a309eWllbGQoMCx3LmdldFRva2VucykoSCxXLEEuU2VydmVyVHlwZS5TYXNWaXlhLFgpKTtjb25zdHtyZXN1bHQ6UGV9PXlp'@; put 'ZWxkIEguZ2V0KGAvY29tcHV0ZS9zZXNzaW9ucy8ke0J9L2pvYnMvJHt1ZS5pZH1gLGspLmNhdGNoKGFlPT57dGhyb3coMCx2LnByZWZpeE1lc3NhZ2UpKGFlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGpvYi4gIil9KTtsZXQgb3QsbHQ9IiI7Y29uc3QgZHQ9UGUubGlua3MuZmluZChhZT0+Imxv'@; put 'ZyI9PT1hZS5yZWwpO2lmKHJlJiZkdCl7Y29uc3QgYWU9YCR7ZHQuaHJlZn0vY29udGVudGAseGU9bnVsbCE9PShiPW51bGw9PT0oZj1QZS5sb2dTdGF0aXN0aWNzKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5saW5lQ291bnQpJiZ2b2lkIDAhPT1iP2I6MWU2O2x0PXlpZWxkKDAsUy5mZXRjaExv'@; put 'Z0J5Q2h1bmtzKShILGssYWUseGUpfWlmKF9lPT09Ui5Kb2JTdGF0ZS5GYWlsZWR8fF9lPT09Ui5Kb2JTdGF0ZS5FcnJvcil0aHJvdyBuZXcgQy5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3IoUGUsbHQpO2lmKCFtZSlyZXR1cm57am9iOlBlLGxvZzpsdH07Y29uc3QgUmU9YC9jb21wdXRlL3Nl'@; put 'c3Npb25zLyR7Qn0vZmlsZXJlZnMvX3dlYm91dC9jb250ZW50YDtyZXR1cm4gb3Q9eWllbGQgSC5nZXQoUmUsaywidGV4dC9wbGFpbiIpLmNhdGNoKGFlPT5jKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgeGUsamU7aWYoYWUgaW5zdGFuY2VvZiBDLk5vdEZvdW5kRXJyb3Im'@; put 'JmR0KXtjb25zdCBBZT1gJHtkdC5ocmVmfS9jb250ZW50YCxEZT1udWxsIT09KGplPW51bGw9PT0oeGU9UGUubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PXhlP3ZvaWQgMDp4ZS5saW5lQ291bnQpJiZ2b2lkIDAhPT1qZT9qZToxZTY7cmV0dXJuIGx0PXlpZWxkKDAsUy5mZXRjaExvZ0J5Q2h1'@; put 'bmtzKShILGssQWUsRGUpLFByb21pc2UucmVqZWN0KHtzdGF0dXM6NTAwLGxvZzpsdH0pfXJldHVybntyZXN1bHQ6SlNPTi5zdHJpbmdpZnkoYWUpfX0pKSx5aWVsZCBWLmNsZWFyU2Vzc2lvbihCLGspLmNhdGNoKGFlPT57dGhyb3coMCx2LnByZWZpeE1lc3NhZ2UpKGFlLCJFcnJvciB3aGls'@; put 'ZSBjbGVhcmluZyBzZXNzaW9uLiAiKX0pLHtyZXN1bHQ6b3Q/LnJlc3VsdCxsb2c6bHR9fWNhdGNoKEIpe2lmKDQwND09PUIuc3RhdHVzKXJldHVybiBVKEgsVixOLHosWSxGLFcscSxyZSwhMSwhMCk7dGhyb3coMCx2LnByZWZpeE1lc3NhZ2UpKEIsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBz'@; put 'Y3JpcHQuICIpfX0pfX0sNDI1NzMoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTYwNiksYz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oQyx3LFMsTCl7cmV0dXJuIG5ldyhTfHwoUz1Qcm9taXNlKSkoZnVuY3Rpb24oeCxVKXtmdW5jdGlvbiBIKHope3RyeXtOKEwubmV4'@; put 'dCh6KSl9Y2F0Y2goWSl7VShZKX19ZnVuY3Rpb24gVih6KXt0cnl7TihMLnRocm93KHopKX1jYXRjaChZKXtVKFkpfX1mdW5jdGlvbiBOKHope3ouZG9uZT94KHoudmFsdWUpOmZ1bmN0aW9uIFIoeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBTP3g6bmV3IFMoZnVuY3Rpb24oVSl7VSh4KX0pfSh6'@; put 'LnZhbHVlKS50aGVuKEgsVil9TigoTD1MLmFwcGx5KEMsd3x8W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmdldEZpbGVTdHJlYW09dm9pZCAwO2NvbnN0IHM9aCgyNTkwOCksQT1oKDg3MjQ3KTtqLmdldEZpbGVTdHJl'@; put 'YW09KEMsdyk9PmModm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3R7Y3JlYXRlV3JpdGVTdHJlYW06U309aCgyNTkwOCksTD13fHx5LmN3ZCgpO2lmKHlpZWxkKDAscy5pc0ZvbGRlcikoTCkpe2NvbnN0IHg9YCR7Qy5uYW1lfHwiam9iIn0tJHsoMCxBLmdlbmVyYXRlVGlt'@; put 'ZXN0YW1wKSgpfS5sb2dgLEg9aCg0MzYyNykuam9pbih3fHx5LmN3ZCgpLHgpO3JldHVybiB5aWVsZCBTKEgpfXJldHVybiB5aWVsZCBTKEwpfSl9LDkxNTE0KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYpLGM9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFYsTix6'@; put 'LFkpe3JldHVybiBuZXcoenx8KHo9UHJvbWlzZSkpKGZ1bmN0aW9uKFcscSl7ZnVuY3Rpb24gcmUoSWUpe3RyeXtDZShZLm5leHQoSWUpKX1jYXRjaChrZSl7cShrZSl9fWZ1bmN0aW9uIG1lKEllKXt0cnl7Q2UoWS50aHJvdyhJZSkpfWNhdGNoKGtlKXtxKGtlKX19ZnVuY3Rpb24gQ2UoSWUp'@; put 'e0llLmRvbmU/VyhJZS52YWx1ZSk6ZnVuY3Rpb24gRihXKXtyZXR1cm4gVyBpbnN0YW5jZW9mIHo/VzpuZXcgeihmdW5jdGlvbihxKXtxKFcpfSl9KEllLnZhbHVlKS50aGVuKHJlLG1lKX1DZSgoWT1ZLmFwcGx5KFYsTnx8W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShq'@; put 'LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmRvUG9sbD1qLnBvbGxKb2JTdGF0ZT1qLkpvYlN0YXRlPXZvaWQgMDtjb25zdCBzPWgoMzYzMSksQT1oKDI5NjA5KSx2PWgoMTczODgpLEM9aCg1MzU3NCksdz1oKDI5MjY2KTt2YXIgUyxWOyhWPVM9ai5Kb2JTdGF0ZXx8KGouSm9iU3RhdGU9'@; put 'e30pKS5Db21wbGV0ZWQ9ImNvbXBsZXRlZCIsVi5SdW5uaW5nPSJydW5uaW5nIixWLlBlbmRpbmc9InBlbmRpbmciLFYuVW5hdmFpbGFibGU9InVuYXZhaWxhYmxlIixWLk5vU3RhdGU9IiIsVi5GYWlsZWQ9ImZhaWxlZCIsVi5FcnJvcj0iZXJyb3IiLGoucG9sbEpvYlN0YXRlPWZ1bmN0aW9u'@; put 'IEwoVixOLHosWSxGLFcscSl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHJlPXkubG9nZ2VyfHxjb25zb2xlLG1lPUY/LnN0cmVhbUxvZ3x8ITEsQ2U9W3ttYXhQb2xsQ291bnQ6MjAwLHBvbGxJbnRlcnZhbDozMDB9LHttYXhQb2xsQ291bnQ6MzAwLHBv'@; put 'bGxJbnRlcnZhbDozZTN9LHttYXhQb2xsQ291bnQ6NTAwLHBvbGxJbnRlcnZhbDozZTR9LHttYXhQb2xsQ291bnQ6MzQwMCxwb2xsSW50ZXJ2YWw6NmU0fV07bGV0IEllO2lmKHZvaWQgMCE9PUYpe0llPVtGXTtsZXR7cG9sbFN0cmF0ZWd5Ok19PUY7dm9pZCAwIT09TT8oSChNKSxNPU0uc29y'@; put 'dCgoQixLKT0+Qi5tYXhQb2xsQ291bnQtSy5tYXhQb2xsQ291bnQpLEllPVsuLi5JZSwuLi5NXSk6SWU9Wy4uLkllLC4uLkNlXX1lbHNlIEllPUNlO2xldCBrZT1JZS5zcGxpY2UoMCwxKVswXTtGPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxrZSksRnx8e30pO2NvbnN0IHFlPU4u'@; put 'bGlua3MuZmluZChNPT4ic3RhdGUiPT09TS5yZWwpO2lmKCFxZSl0aHJvdyBuZXcgRXJyb3IoIkpvYiBzdGF0ZSBsaW5rIHdhcyBub3QgZm91bmQuIik7bGV0IGIsWD15aWVsZCBSKFYsTixTLk5vU3RhdGUseixZKS5jYXRjaChNPT4ocmUuZXJyb3IoYEVycm9yIGZldGNoaW5nIGpvYiBzdGF0'@; put 'ZSBmcm9tICR7cWUuaHJlZn0uIFN0YXJ0aW5nIHBvbGwsIGFzc3VtaW5nIGpvYiB0byBiZSBydW5uaW5nLmAsTSksUy5VbmF2YWlsYWJsZSkpLGY9MDtpZihYPT09Uy5Db21wbGV0ZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZShYKTtpZihtZSYmKDAsdy5pc05vZGUpKCkpe2NvbnN0e2dldEZp'@; put 'bGVTdHJlYW06TX09aCg0MjU3Myk7Yj15aWVsZCBNKE4sRi5sb2dGb2xkZXJQYXRoKX1sZXQgaz15aWVsZCgwLGouZG9Qb2xsKShWLE4sWCx6LGYsRixZLG1lLGIsVyxxKTtpZihYPWsuc3RhdGUsZj1rLnBvbGxDb3VudCwheChYKXx8Zj49Ri5tYXhQb2xsQ291bnQmJiFJZS5sZW5ndGgpcmV0'@; put 'dXJuIFg7Zm9yKDtJZS5sZW5ndGgmJngoWCk7KWtlPUllLnNwbGljZSgwLDEpWzBdLEYmJihrZS5sb2dGb2xkZXJQYXRoPUYubG9nRm9sZGVyUGF0aCksaz15aWVsZCgwLGouZG9Qb2xsKShWLE4sWCx6LGYsa2UsWSxtZSxiLFcscSksWD1rLnN0YXRlLGY9ay5wb2xsQ291bnQ7cmV0dXJuIGIm'@; put 'JmIuZW5kKCksWH0pfTtjb25zdCBSPShWLE4seixZLEYsVyk9PmModm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgcT1OLmxpbmtzLmZpbmQocmU9PiJzdGF0ZSI9PT1yZS5yZWwpO2lmKHgoeikpe2xldCByZTtGJiYocmU9eWllbGQoMCxBLmdldFRva2VucykoVixGLHMu'@; put 'U2VydmVyVHlwZS5TYXNWaXlhLFcpKTtjb25zdHtyZXN1bHQ6bWV9PXlpZWxkIFYuZ2V0KGAke3EuaHJlZn0/X2FjdGlvbj13YWl0JndhaXQ9MzAwYCxyZT8uYWNjZXNzX3Rva2VuLCJ0ZXh0L3BsYWluIix7fSxZKS5jYXRjaChDZT0+e3Rocm93IG5ldyB2LkpvYlN0YXRlUG9sbEVycm9yKE4u'@; put 'aWQsQ2UpfSk7cmV0dXJuIG1lLnRyaW0oKX1yZXR1cm4gen0pLHg9Vj0+Vj09PVMuUnVubmluZ3x8Vj09PVMuTm9TdGF0ZXx8Vj09PVMuUGVuZGluZ3x8Vj09PVMuVW5hdmFpbGFibGU7ai5kb1BvbGw9KFYsTix6LFksRixXLHEscmUsbWUsQ2UsSWUpPT5jKHZvaWQgMCx2b2lkIDAsdm9pZCAw'@; put 'LGZ1bmN0aW9uKigpe3ZhciBrZSxxZTtjb25zdHttYXhQb2xsQ291bnQ6WCxwb2xsSW50ZXJ2YWw6Zn09VyxiPXkubG9nZ2VyfHxjb25zb2xlLGs9Ti5saW5rcy5maW5kKHA9PiJzdGF0ZSI9PT1wLnJlbCk7bGV0IEI9MCxLPXosRz1TLk5vU3RhdGUsRD0wO2Zvcig7eChLKSYmRjw9WDspe2lm'@; put 'KENlJiZGJiZGJTEwPT0wJiZxKXtjb25zdHtzZXNzaW9uOkksc2Vzc2lvbk1hbmFnZXI6dWV9PUNlLHtzdGF0ZVVybDpuZSxldGFnOl9lLGlkOlBlfT1JLHthY2Nlc3NfdG9rZW46b3R9PXEse2lkOmx0fT1OLHtyZXN1bHQ6ZHQscmVzcG9uc2VTdGF0dXM6UmV9PXlpZWxkIHVlLmdldFNlc3Np'@; put 'b25TdGF0ZShuZSxfZSxvdCkuY2F0Y2goeGU9Pnt0aHJvdyBuZXcgdi5Kb2JTdGF0ZVBvbGxFcnJvcihsdCx4ZSl9KSxhZT14ZT0+W0MuU2Vzc2lvblN0YXRlLlJ1bm5pbmcsQy5TZXNzaW9uU3RhdGUuSWRsZV0uaW5jbHVkZXMoeGUpO2lmKCFhZShkdCl8fDIwMCE9PVJlKXt1ZS5jbGVhclNl'@; put 'c3Npb24oUGUsb3QpO2NvbnN0IHhlPWFlKGR0KT9gU2Vzc2lvbiByZXNwb25zZSBzdGF0dXMgaXMgbm90IDIwMC4gU2Vzc2lvbiByZXNwb25zZSBzdGF0dXMgaXMgJHtSZX0uYDpgU2Vzc2lvbiBzdGF0ZSBvZiB0aGUgam9iIGlzIG5vdCAncnVubmluZycgb3IgJ2lkbGUnLiBTZXNzaW9uIHN0'@; put 'YXRlIGlzICcke2R0fSdgO3Rocm93IG5ldyB2LkpvYlN0YXRlUG9sbEVycm9yKGx0LG5ldyBFcnJvcih4ZSkpfX1LPXlpZWxkIFIoVixOLEssWSxxLEllKS5jYXRjaChJPT57aWYoQisrLEY+PVh8fEI+PTUpdGhyb3cgSTtyZXR1cm4gYi5lcnJvcihgRXJyb3IgZmV0Y2hpbmcgam9iIHN0YXRl'@; put 'IGZyb20gJHtrLmhyZWZ9LiBSZXN1bWluZyBwb2xsLCBhc3N1bWluZyBqb2IgdG8gYmUgcnVubmluZy5gLEkpLFMuVW5hdmFpbGFibGV9KSxGKys7Y29uc3QgcD1OLmxpbmtzLmZpbmQoST0+InNlbGYiPT09SS5yZWwpLmhyZWY7aWYocmUpe2NvbnN0e3Jlc3VsdDpJfT15aWVsZCBWLmdldChw'@; put 'LHE/LmFjY2Vzc190b2tlbiksdWU9bnVsbCE9PShxZT1udWxsPT09KGtlPUkubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PWtlP3ZvaWQgMDprZS5saW5lQ291bnQpJiZ2b2lkIDAhPT1xZT9xZToxZTYse3NhdmVMb2c6bmV9PSgwLHcuaXNOb2RlKSgpP2goNTA5OCk6e3NhdmVMb2c6bnVsbH07'@; put 'bmUmJih5aWVsZCBuZShOLFYsRCx1ZSxtZSxxPy5hY2Nlc3NfdG9rZW4pKSxEKz11ZX1ZJiZHIT09SyYmKGIuaW5mbyhgUG9sbGluZzogJHtWLmdldEJhc2VVcmwoKStwfS9zdGF0ZWApLGIuaW5mbyhgQ3VycmVudCBqb2Igc3RhdGU6ICR7S31gKSxHPUspLEshPT1TLlVuYXZhaWxhYmxlJiZC'@; put 'PjAmJihCPTApLEshPT1TLkNvbXBsZXRlZCYmKHlpZWxkKDAsdy5kZWxheSkoZikpfXJldHVybntzdGF0ZTpLLHBvbGxDb3VudDpGfX0pO2NvbnN0IEg9Vj0+e2NvbnN0IE49KHosWSk9Pnt0aHJvdyBuZXcgRXJyb3IoYFBvbGwgc3RyYXRlZ2llcyBhcmUgbm90IHZhbGlkLiR7ej9gICR7en1g'@; put 'OiIifSR7WT9gIEludmFsaWQgcG9sbCBzdHJhdGVneTogXG4ke0pTT04uc3RyaW5naWZ5KFksbnVsbCwyKX1gOiIifWApfTtWLmZvckVhY2goKHosWSk9Pntjb25zdHttYXhQb2xsQ291bnQ6Rixwb2xsSW50ZXJ2YWw6V309ejtGPDE/TigiJ21heFBvbGxDb3VudCcgaGFzIHRvIGJlIGdyZWF0'@; put 'ZXIgdGhhbiAwLiIseik6MCE9PVk/Rjw9VltZLTFdLm1heFBvbGxDb3VudCYmTigiJ21heFBvbGxDb3VudCcgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiAnbWF4UG9sbENvdW50JyBpbiBwcmV2aW91cyBwb2xsIHN0cmF0ZWd5LiIseik6VzwxJiZOKCIncG9sbEludGVydmFsJyBoYXMgdG8gYmUg'@; put 'Z3JlYXRlciB0aGFuIDAuIix6KX0pfX0sNTA5OChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihDLHcsUyxMKXtyZXR1cm4gbmV3KFN8fChTPVByb21pc2UpKShmdW5jdGlvbih4LFUpe2Z1bmN0aW9uIEgoeil7dHJ5'@; put 'e04oTC5uZXh0KHopKX1jYXRjaChZKXtVKFkpfX1mdW5jdGlvbiBWKHope3RyeXtOKEwudGhyb3coeikpfWNhdGNoKFkpe1UoWSl9fWZ1bmN0aW9uIE4oeil7ei5kb25lP3goei52YWx1ZSk6ZnVuY3Rpb24gUih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIFM/eDpuZXcgUyhmdW5jdGlvbihVKXtV'@; put 'KHgpfSl9KHoudmFsdWUpLnRoZW4oSCxWKX1OKChMPUwuYXBwbHkoQyx3fHxbXSkpLm5leHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouc2F2ZUxvZz12b2lkIDA7Y29uc3Qgcz1oKDI5MjY2KSxBPWgoMzEyNDgpO2ouc2F2ZUxvZz1m'@; put 'dW5jdGlvbiB2KEMsdyxTLEwsUix4KXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKGBMb2dzIGZvciBqb2IgJHtDLmlkfSBjYW5ub3QgYmUgZmV0Y2hlZCB3aXRob3V0IGEgdmFsaWQgYWNjZXNzIHRva2VuLmApO2lmKCFSKXRo'@; put 'cm93IG5ldyBFcnJvcihgTG9ncyBmb3Igam9iICR7Qy5pZH0gY2Fubm90IGJlIHdyaXR0ZW4gd2l0aG91dCBhIHZhbGlkIHdyaXRlIHN0cmVhbS5gKTtjb25zdCBVPXkubG9nZ2VyfHxjb25zb2xlLEg9Qy5saW5rcy5maW5kKE49PiJsb2ciPT09Ti5yZWwpO2lmKCFIKXRocm93IG5ldyBFcnJv'@; put 'cihgTG9nIFVSTCBmb3Igam9iICR7Qy5pZH0gd2FzIG5vdCBmb3VuZC5gKTtjb25zdCBWPXlpZWxkKDAscy5mZXRjaExvZykodyx4LGAke0guaHJlZn0vY29udGVudGAsUyxMKTtVLmluZm8oYFdyaXRpbmcgbG9ncyB0byAke1IucGF0aH1gKSx5aWVsZCgwLEEud3JpdGVTdHJlYW0pKFIsVnx8'@; put 'IiIpfSl9fSw1ODU2MyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odixDLHcsUyl7cmV0dXJuIG5ldyh3fHwodz1Qcm9taXNlKSkoZnVuY3Rpb24oUix4KXtmdW5jdGlvbiBVKE4pe3RyeXtWKFMubmV4dChOKSl9Y2F0Y2goeil7eCh6'@; put 'KX19ZnVuY3Rpb24gSChOKXt0cnl7VihTLnRocm93KE4pKX1jYXRjaCh6KXt4KHopfX1mdW5jdGlvbiBWKE4pe04uZG9uZT9SKE4udmFsdWUpOmZ1bmN0aW9uIEwoUil7cmV0dXJuIFIgaW5zdGFuY2VvZiB3P1I6bmV3IHcoZnVuY3Rpb24oeCl7eChSKX0pfShOLnZhbHVlKS50aGVuKFUsSCl9'@; put 'VigoUz1TLmFwcGx5KHYsQ3x8W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnVwbG9hZFRhYmxlcz12b2lkIDA7Y29uc3QgYz1oKDYzNDApLHM9aCg0Nzg2KTtqLnVwbG9hZFRhYmxlcz1mdW5jdGlvbiBBKHYsQyx3KXty'@; put 'ZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgUz1bXTtmb3IoY29uc3QgTCBpbiBDKXtpZigoMCxzLmlzRm9ybWF0c1RhYmxlKShMKSljb250aW51ZTtjb25zdCBSPSgwLHMuY29udmVydFRvQ1NWKShDLEwpO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdU'@; put 'SCI9PT1SKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtjb25zdCB4PXlpZWxkIHYudXBsb2FkRmlsZSgiL2ZpbGVzL2ZpbGVzI3Jhd1VwbG9hZCIsUix3KS5jYXRjaChVPT57dGhyb3coMCxj'@; put 'LnByZWZpeE1lc3NhZ2UpKFUsIkVycm9yIHdoaWxlIHVwbG9hZGluZyBmaWxlLiAiKX0pO1MucHVzaCh7dGFibGVOYW1lOkwsZmlsZTp4LnJlc3VsdH0pfXJldHVybiBTfSl9fSwzMTI0OChmZSxqKXsidXNlIHN0cmljdCI7dmFyIGg9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGMs'@; put 'cyxBLHYpe3JldHVybiBuZXcoQXx8KEE9UHJvbWlzZSkpKGZ1bmN0aW9uKHcsUyl7ZnVuY3Rpb24gTChVKXt0cnl7eCh2Lm5leHQoVSkpfWNhdGNoKEgpe1MoSCl9fWZ1bmN0aW9uIFIoVSl7dHJ5e3godi50aHJvdyhVKSl9Y2F0Y2goSCl7UyhIKX19ZnVuY3Rpb24geChVKXtVLmRvbmU/dyhV'@; put 'LnZhbHVlKTpmdW5jdGlvbiBDKHcpe3JldHVybiB3IGluc3RhbmNlb2YgQT93Om5ldyBBKGZ1bmN0aW9uKFMpe1Modyl9KX0oVS52YWx1ZSkudGhlbihMLFIpfXgoKHY9di5hcHBseShjLHN8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3Zh'@; put 'bHVlOiEwfSksai53cml0ZVN0cmVhbT12b2lkIDAsai53cml0ZVN0cmVhbT0oYyxzKT0+aCh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKEEsdik9PntjLndyaXRlKHMrIlxuIixDPT57Qz92KEMpOkEoITApfSl9KX0pfSwxNzcxMChmZSxqLGgp'@; put 'eyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihILFYsTix6KXtyZXR1cm4gbmV3KE58fChOPVByb21pc2UpKShmdW5jdGlvbihGLFcpe2Z1bmN0aW9uIHEoQ2Upe3RyeXttZSh6Lm5leHQoQ2UpKX1jYXRjaChJZSl7VyhJZSl9fWZ1'@; put 'bmN0aW9uIHJlKENlKXt0cnl7bWUoei50aHJvdyhDZSkpfWNhdGNoKEllKXtXKEllKX19ZnVuY3Rpb24gbWUoQ2Upe0NlLmRvbmU/RihDZS52YWx1ZSk6ZnVuY3Rpb24gWShGKXtyZXR1cm4gRiBpbnN0YW5jZW9mIE4/RjpuZXcgTihmdW5jdGlvbihXKXtXKEYpfSl9KENlLnZhbHVlKS50aGVu'@; put 'KHEscmUpfW1lKCh6PXouYXBwbHkoSCxWfHxbXSkpLm5leHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouQXV0aE1hbmFnZXI9dm9pZCAwO2NvbnN0IHM9aCgzNjMxKSxBPWgoMTczODgpLHY9aCgyOTI2NiksQz1oKDM4NTQ4KSx3PWgo'@; put 'NTI4OTQpLFM9aCg0NDI1NyksTD1oKDc1MDA5KSxSPWgoNDg3OSk7ai5BdXRoTWFuYWdlcj1jbGFzcyB4e2NvbnN0cnVjdG9yKFYsTix6LFkpe3RoaXMuc2VydmVyVXJsPVYsdGhpcy5zZXJ2ZXJUeXBlPU4sdGhpcy5yZXF1ZXN0Q2xpZW50PXosdGhpcy5sb2dpbkNhbGxiYWNrPVksdGhpcy51'@; put 'c2VyTmFtZT0iIix0aGlzLnVzZXJMb25nTmFtZT0iIix0aGlzLnJlZGlyZWN0ZWRMb2dpblVybD0iL1NBU0xvZ29uIix0aGlzLmV4dHJhY3RVc2VyTmFtZT1GPT57c3dpdGNoKHRoaXMuc2VydmVyVHlwZSl7Y2FzZSBzLlNlcnZlclR5cGUuU2FzVml5YTpyZXR1cm4gRj8uaWQ7Y2FzZSBzLlNl'@; put 'cnZlclR5cGUuU2FzOTpyZXR1cm4iIjtjYXNlIHMuU2VydmVyVHlwZS5TYXNqczpyZXR1cm4gRj8udXNlcm5hbWU7ZGVmYXVsdDpyZXR1cm4gY29uc29sZS5lcnJvcigiU2VydmVyIFR5cGUgbm90IGZvdW5kIGluIGV4dHJhY3RVc2VyTmFtZSBmdW5jdGlvbiIpLCIifX0sdGhpcy5leHRyYWN0'@; put 'VXNlckxvbmdOYW1lPUY9Pntzd2l0Y2godGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIHMuU2VydmVyVHlwZS5TYXNWaXlhOnJldHVybiBGPy5uYW1lO2Nhc2Ugcy5TZXJ2ZXJUeXBlLlNhczk6cmV0dXJuKDAsQy5leHRyYWN0VXNlckxvbmdOYW1lU2FzOSkoRik7Y2FzZSBzLlNlcnZlclR5cGUuU2Fz'@; put 'anM6cmV0dXJuIEY/LmRpc3BsYXlOYW1lO2RlZmF1bHQ6cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlNlcnZlciBUeXBlIG5vdCBmb3VuZCBpbiBleHRyYWN0VXNlck5hbWUgZnVuY3Rpb24iKSwiIn19LHRoaXMuc2V0TG9naW5Vcmw9Rj0+e2xldCBXPUZbMV0ucmVwbGFjZSgvXD8uKi8sIiIpO2lm'@; put 'KCIvIj09PVdbMF0pe1c9Vy5zdWJzdHIoMSk7Y29uc3QgcT10aGlzLnNlcnZlclVybD9gJHt0aGlzLnNlcnZlclVybH0vJHtXfWA6YCR7V31gO3RoaXMubG9naW5Vcmw9dGhpcy5zZXJ2ZXJUeXBlPT09cy5TZXJ2ZXJUeXBlLlNhc1ZpeWE/cTpxLnJlcGxhY2UoIi9TQVNMb2dvbi9sb2dpbi5k'@; put 'byIsIi9TQVNMb2dvbi9sb2dpbiIpfX0sdGhpcy5sb2dpblVybD0iL1NBU0xvZ29uL2xvZ2luIix0aGlzLmxvZ291dFVybD10aGlzLnNlcnZlclR5cGU9PT1zLlNlcnZlclR5cGUuU2FzOT8iL1NBU0xvZ29uL2xvZ291dD8iOnRoaXMuc2VydmVyVHlwZT09PXMuU2VydmVyVHlwZS5TYXNWaXlh'@; put 'PyIvU0FTTG9nb24vbG9nb3V0LmRvPyI6Ii9TQVNMb2dvbi9sb2dvdXQiLHRoaXMucmVkaXJlY3RlZExvZ2luVXJsPXRoaXMuc2VydmVyVXJsK3RoaXMucmVkaXJlY3RlZExvZ2luVXJsfXJlZGlyZWN0ZWRMb2dJbih7b25Mb2dnZWRPdXQ6Vn0pe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQg'@; put 'MCxmdW5jdGlvbiooKXtjb25zdHtpc0xvZ2dlZEluOk4sdXNlck5hbWU6eix1c2VyTG9uZ05hbWU6WX09eWllbGQgdGhpcy5mZXRjaFVzZXJOYW1lKCk7aWYoTilyZXR1cm4oeS5sb2dnZXJ8fGNvbnNvbGUpLmxvZygibG9naW4gd2FzIG5vdCBhdHRlbXB0ZWQgYXMgYSB2YWxpZCBzZXNzaW9u'@; put 'IGFscmVhZHkgZXhpc3RzIikseWllbGQgdGhpcy5sb2dpbkNhbGxiYWNrKCkse2lzTG9nZ2VkSW46ITAsdXNlck5hbWU6eix1c2VyTG9uZ05hbWU6WX07Y29uc3QgRj15aWVsZCgwLHcub3BlbldlYlBhZ2UpKHRoaXMucmVkaXJlY3RlZExvZ2luVXJsLCJTQVNMb2dvbiIse3dpZHRoOjUwMCxo'@; put 'ZWlnaHQ6NjAwfSxWKTtpZighRilyZXR1cm57aXNMb2dnZWRJbjohMSx1c2VyTmFtZToiIix1c2VyTG9uZ05hbWU6IiJ9O2NvbnN0e2lzTG9nZ2VkSW46V309dGhpcy5zZXJ2ZXJUeXBlPT09cy5TZXJ2ZXJUeXBlLlNhc1ZpeWE/eWllbGQoMCxMLnZlcmlmeVNhc1ZpeWFMb2dpbikoRik6eWll'@; put 'bGQoMCxTLnZlcmlmeVNhczlMb2dpbikoRik7aWYoRi5jbG9zZSgpLFcpe3RoaXMuc2VydmVyVHlwZT09PXMuU2VydmVyVHlwZS5TYXM5JiYoeWllbGQgdGhpcy5wZXJmb3JtQ0FTU2VjdXJpdHlDaGVjaygpKTtjb25zdHt1c2VyTmFtZTpxLHVzZXJMb25nTmFtZTpyZX09eWllbGQgdGhpcy5m'@; put 'ZXRjaFVzZXJOYW1lKCk7cmV0dXJuIHlpZWxkIHRoaXMubG9naW5DYWxsYmFjaygpLHtpc0xvZ2dlZEluOiEwLHVzZXJOYW1lOnEsdXNlckxvbmdOYW1lOnJlfX1yZXR1cm57aXNMb2dnZWRJbjohMSx1c2VyTmFtZToiIix1c2VyTG9uZ05hbWU6IiJ9fSl9bG9nSW4oVixOKXtyZXR1cm4gYyh0'@; put 'aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3Qgej17X3NlcnZpY2U6ImRlZmF1bHQiLHVzZXJuYW1lOlYscGFzc3dvcmQ6Tn07dGhpcy51c2VyTmFtZT0iIix0aGlzLnVzZXJMb25nTmFtZT0iIjtsZXR7aXNMb2dnZWRJbjpZLGxvZ2luRm9ybTpGLHVzZXJMb25nTmFtZTpXfT15'@; put 'aWVsZCB0aGlzLmNoZWNrU2Vzc2lvbigpO2lmKFkpcmV0dXJuKHkubG9nZ2VyfHxjb25zb2xlKS5sb2coImxvZ2luIHdhcyBub3QgYXR0ZW1wdGVkIGFzIGEgdmFsaWQgc2Vzc2lvbiBhbHJlYWR5IGV4aXN0cyIpLHlpZWxkIHRoaXMubG9naW5DYWxsYmFjaygpLHRoaXMudXNlck5hbWU9ei51'@; put 'c2VybmFtZSx0aGlzLnVzZXJMb25nTmFtZT1XLHtpc0xvZ2dlZEluOiEwLHVzZXJOYW1lOnRoaXMudXNlck5hbWUsdXNlckxvbmdOYW1lOnRoaXMudXNlckxvbmdOYW1lfTtsZXQgcT15aWVsZCB0aGlzLnNlbmRMb2dpblJlcXVlc3QoRix6KSxyZT0oMCxSLmlzTG9nSW5TdWNjZXNzSGVhZGVy'@; put 'UHJlc2VudCkodGhpcy5zZXJ2ZXJUeXBlLHEpO2lmKCFyZSl7aWYoVShxKSl7Y29uc3QgQ2U9eWllbGQgdGhpcy5nZXRMb2dpbkZvcm0ocSk7cT15aWVsZCB0aGlzLnNlbmRMb2dpblJlcXVlc3QoQ2Useil9Y29uc3QgbWU9eWllbGQgdGhpcy5jaGVja1Nlc3Npb24oKTtyZT1tZS5pc0xvZ2dl'@; put 'ZEluLHRoaXMudXNlckxvbmdOYW1lPW1lLnVzZXJMb25nTmFtZX1yZXR1cm4gcmUmJih0aGlzLnNlcnZlclR5cGU9PT1zLlNlcnZlclR5cGUuU2FzOSYmKHlpZWxkIHRoaXMucGVyZm9ybUNBU1NlY3VyaXR5Q2hlY2soKSksdGhpcy5sb2dpbkNhbGxiYWNrKCksdGhpcy51c2VyTmFtZT16LnVz'@; put 'ZXJuYW1lKSx7aXNMb2dnZWRJbjpyZSx1c2VyTmFtZTp0aGlzLnVzZXJOYW1lLHVzZXJMb25nTmFtZTp0aGlzLnVzZXJMb25nTmFtZX19KX1wZXJmb3JtQ0FTU2VjdXJpdHlDaGVjaygpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBWPWAke3RoaXMuc2Vy'@; put 'dmVyVXJsfS9TQVNTdG9yZWRQcm9jZXNzL2pfc3ByaW5nX2Nhc19zZWN1cml0eV9jaGVja2A7eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChgL1NBU0xvZ29uL2xvZ2luP3NlcnZpY2U9JHtWfWAsdm9pZCAwKS5jYXRjaChOPT57aWYoIShOIGluc3RhbmNlb2YgQS5Ob3RGb3VuZEVycm9y'@; put 'KSl0aHJvdyBOfSl9KX1zZW5kTG9naW5SZXF1ZXN0KFYsTil7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKHRoaXMuc2VydmVyVHlwZT09PXMuU2VydmVyVHlwZS5TYXNqcyl7Y29uc3R7dXNlcm5hbWU6RixwYXNzd29yZDpXfT1OLHtyZXN1bHQ6cX09eWllbGQg'@; put 'dGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QodGhpcy5sb2dpblVybCx7dXNlcm5hbWU6RixwYXNzd29yZDpXfSx2b2lkIDApO3JldHVybiBxfWZvcihjb25zdCBGIGluIFYpTltGXT1WW0ZdO2NvbnN0IHo9KDAsdi5zZXJpYWxpemUpKE4pLHtyZXN1bHQ6WX09eWllbGQgdGhpcy5yZXF1ZXN0Q2xp'@; put 'ZW50LnBvc3QodGhpcy5sb2dpblVybCx6LHZvaWQgMCwidGV4dC9wbGFpbiIseyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLEFjY2VwdDoiKi8qIn0pO3JldHVybiBZfSl9Y2hlY2tTZXNzaW9uKCl7cmV0dXJuIGModGhpcyx2b2lkIDAsdm9pZCAw'@; put 'LGZ1bmN0aW9uKigpe2NvbnN0e2lzTG9nZ2VkSW46Vix1c2VyTmFtZTpOLHVzZXJMb25nTmFtZTp6fT15aWVsZCB0aGlzLmZldGNoVXNlck5hbWUoKTtsZXQgWT1udWxsO3JldHVybiBWfHwoeWllbGQgdGhpcy5sb2dPdXQoKSxZPXlpZWxkIHRoaXMuZ2V0TmV3TG9naW5Gb3JtKCkpLFByb21p'@; put 'c2UucmVzb2x2ZSh7aXNMb2dnZWRJbjpWLHVzZXJOYW1lOk4sdXNlckxvbmdOYW1lOnosbG9naW5Gb3JtOll9KX0pfWdldE5ld0xvZ2luRm9ybSgpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0aGlzLnNlcnZlclR5cGU9PT1zLlNlcnZlclR5cGUuU2FzanMp'@; put 'cmV0dXJuIHRoaXMucmVxdWVzdENsaWVudC5nZXQoIi8iLHZvaWQgMCkudGhlbigoe3Jlc3VsdDpOfSk9Pnt2YXIgejtjb25zdCBZPW51bGw9PT0oej0vPHNjcmlwdD5kb2N1bWVudC5jb29raWUgPSAnKFhTUkYtVE9LRU49Lio7IE1heC1BZ2U9ODY0MDA7IFNhbWVTaXRlPVN0cmljdDsgUGF0'@; put 'aD1cLzspJzxcL3NjcmlwdD4vLmV4ZWMoTikpfHx2b2lkIDA9PT16P3ZvaWQgMDp6WzFdO1kmJihkb2N1bWVudC5jb29raWU9WSl9KTtjb25zdHtyZXN1bHQ6Vn09eWllbGQgdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCh0aGlzLmxvZ2luVXJsLnJlcGxhY2UoIi9TQVNMb2dvbi9sb2dpbi5kbyIs'@; put 'Ii9TQVNMb2dvbi9sb2dpbiIpLHZvaWQgMCwidGV4dC9wbGFpbiIpO3JldHVybiB5aWVsZCB0aGlzLmdldExvZ2luRm9ybShWKX0pfWZldGNoVXNlck5hbWUoKXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgVj10aGlzLnNlcnZlclR5cGU9PT1zLlNlcnZl'@; put 'clR5cGUuU2FzVml5YT9gJHt0aGlzLnNlcnZlclVybH0vaWRlbnRpdGllcy91c2Vycy9AY3VycmVudFVzZXJgOnRoaXMuc2VydmVyVHlwZT09PXMuU2VydmVyVHlwZS5TYXM5P2Ake3RoaXMuc2VydmVyVXJsfS9TQVNTdG9yZWRQcm9jZXNzYDpgJHt0aGlzLnNlcnZlclVybH0vU0FTanNBcGkv'@; put 'c2Vzc2lvbmAse3Jlc3VsdDpOfT15aWVsZCB0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KFYsdm9pZCAwLCJ0ZXh0L3BsYWluIikuY2F0Y2goWT0+KHtyZXN1bHQ6ImF1dGhFcnIifSkpLHo9ImF1dGhFcnIiIT09TjtyZXR1cm4gej97aXNMb2dnZWRJbjp6LHVzZXJOYW1lOnRoaXMuZXh0cmFjdFVz'@; put 'ZXJOYW1lKE4pLHVzZXJMb25nTmFtZTp0aGlzLmV4dHJhY3RVc2VyTG9uZ05hbWUoTil9Oih5aWVsZCB0aGlzLmxvZ091dCgpLHtpc0xvZ2dlZEluOnosdXNlck5hbWU6IiIsdXNlckxvbmdOYW1lOiIifSl9KX1nZXRMb2dpbkZvcm0oVil7Y29uc3Qgej0vPGZvcm0uK2FjdGlvbj0iKC4qKExv'@; put 'Z29ufGxvZ2luKVteIl0qKS4qPi8uZXhlYyhWKSxZPXt9O2lmKHomJnoubGVuZ3RoKXt0aGlzLnNldExvZ2luVXJsKHopO2NvbnN0IEY9KFY9Vi5yZXBsYWNlKC88aW5wdXQvZywiXG48aW5wdXQiKSkubWF0Y2goLzxpbnB1dC4qImhpZGRlbiJbXj5dKj4vZyk7RiYmRi5mb3JFYWNoKFc9Pntj'@; put 'b25zdCBxPVcubWF0Y2goL25hbWU9IihbXiJdKikiXHN2YWx1ZT0iKFteIl0qKS8pO3EmJnEubGVuZ3RoJiYoWVtxWzFdXT1xWzJdKX0pfXJldHVybiBPYmplY3Qua2V5cyhZKS5sZW5ndGg/WTpudWxsfWxvZ091dCgpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXty'@; put 'ZXR1cm4gdGhpcy5yZXF1ZXN0Q2xpZW50LnJlc2V0SW5NZW1vcnlBdXRoU3RhdGUoKSx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KHRoaXMubG9nb3V0VXJsLHZvaWQgMCkudGhlbigoKT0+ITApfSl9fTtjb25zdCBVPUg9Pi9BbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0aGUgc3lzdGVtIHdhcyB2'@; put 'ZXJpZnlpbmcgeW91ciBjcmVkZW50aWFscy4gUGxlYXNlIGVudGVyIHlvdXIgY3JlZGVudGlhbHMgYWdhaW4uL2dtLnRlc3QoSCl9LDk5MjM5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihDLHcsUyxMKXtyZXR1cm4gbmV3KFN8fChT'@; put 'PVByb21pc2UpKShmdW5jdGlvbih4LFUpe2Z1bmN0aW9uIEgoeil7dHJ5e04oTC5uZXh0KHopKX1jYXRjaChZKXtVKFkpfX1mdW5jdGlvbiBWKHope3RyeXtOKEwudGhyb3coeikpfWNhdGNoKFkpe1UoWSl9fWZ1bmN0aW9uIE4oeil7ei5kb25lP3goei52YWx1ZSk6ZnVuY3Rpb24gUih4KXty'@; put 'ZXR1cm4geCBpbnN0YW5jZW9mIFM/eDpuZXcgUyhmdW5jdGlvbihVKXtVKHgpfSl9KHoudmFsdWUpLnRoZW4oSCxWKX1OKChMPUwuYXBwbHkoQyx3fHxbXSkpLm5leHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouZ2V0QWNjZXNzVG9r'@; put 'ZW5Gb3JTYXNqcz12b2lkIDA7Y29uc3QgYz1oKDYzNDApLHM9aCgxMTA4NyksQT1oKDM2MzEpO2ouZ2V0QWNjZXNzVG9rZW5Gb3JTYXNqcz1mdW5jdGlvbiB2KEMsdyxTKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgTD0iL1NBU2pzQXBpL2F1dGgvdG9r'@; put 'ZW4iLFI9e2NsaWVudElkOncsY29kZTpTfTtyZXR1cm4geWllbGQgQy5wb3N0KEwsUix2b2lkIDApLnRoZW4oeD0+e2NvbnN0IFU9eC5yZXN1bHQ7cmV0dXJue2FjY2Vzc190b2tlbjpVLmFjY2Vzc1Rva2VuLHJlZnJlc2hfdG9rZW46VS5yZWZyZXNoVG9rZW59fSkuY2F0Y2goeD0+e3Rocm93'@; put 'KDAsYy5wcmVmaXhNZXNzYWdlKSh4LCgwLHMuZ2V0VG9rZW5SZXF1ZXN0RXJyb3JQcmVmaXgpKCJmZXRjaGluZyBhY2Nlc3MgdG9rZW4iLCJnZXRBY2Nlc3NUb2tlbkZvclNhc2pzIixBLlNlcnZlclR5cGUuU2FzanMsTCxSLHcpKX0pfSl9fSw4MTY3NChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2'@; put 'YXIgeT1oKDQ4Mjg3KS5CdWZmZXIsYz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oUyxMLFIseCl7cmV0dXJuIG5ldyhSfHwoUj1Qcm9taXNlKSkoZnVuY3Rpb24oSCxWKXtmdW5jdGlvbiBOKEYpe3RyeXtZKHgubmV4dChGKSl9Y2F0Y2goVyl7VihXKX19ZnVuY3Rpb24geihGKXt0'@; put 'cnl7WSh4LnRocm93KEYpKX1jYXRjaChXKXtWKFcpfX1mdW5jdGlvbiBZKEYpe0YuZG9uZT9IKEYudmFsdWUpOmZ1bmN0aW9uIFUoSCl7cmV0dXJuIEggaW5zdGFuY2VvZiBSP0g6bmV3IFIoZnVuY3Rpb24oVil7VihIKX0pfShGLnZhbHVlKS50aGVuKE4seil9WSgoeD14LmFwcGx5KFMsTHx8'@; put 'W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmdldEFjY2Vzc1Rva2VuRm9yVml5YT12b2lkIDA7Y29uc3Qgcz1oKDM2MzEpLEE9aCg2MzQwKSx2PWgoMTczODgpLEM9aCgxMTA4Nyk7ai5nZXRBY2Nlc3NUb2tlbkZvclZp'@; put 'eWE9ZnVuY3Rpb24gdyhTLEwsUix4KXtyZXR1cm4gYyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IFU7VT10eXBlb2YgeT4idSI/YnRvYShMKyI6IitSKTp5LmZyb20oTCsiOiIrUikudG9TdHJpbmcoImJhc2U2NCIpO2NvbnN0IEg9Ii9TQVNMb2dvbi9vYXV0aC90b2tlbiIs'@; put 'Vj17QXV0aG9yaXphdGlvbjoiQmFzaWMgIitVLEFjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LE49bmV3IFVSTFNlYXJjaFBhcmFtcyh7Z3JhbnRfdHlwZToiYXV0aG9yaXphdGlvbl9jb2RlIixjb2RlOnh9KSx6PW5ldyBVUkxTZWFyY2hQYXJhbXMoTik7cmV0dXJuIHlpZWxkIFMucG9zdChI'@; put 'LHosdm9pZCAwLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLFYpLnRoZW4oRj0+Ri5yZXN1bHQpLmNhdGNoKEY9Pnt0aHJvdyBGIGluc3RhbmNlb2Ygdi5DZXJ0aWZpY2F0ZUVycm9yP0Y6KDAsQS5wcmVmaXhNZXNzYWdlKShGLCgwLEMuZ2V0VG9rZW5SZXF1ZXN0RXJyb3JQ'@; put 'cmVmaXgpKCJmZXRjaGluZyBhY2Nlc3MgdG9rZW4iLCJnZXRBY2Nlc3NUb2tlbkZvclZpeWEiLHMuU2VydmVyVHlwZS5TYXNWaXlhLEgsTixWLEwsUikpfSl9KX19LDExMDg3KGZlLGosaCl7InVzZSBzdHJpY3QiO2ouZ2V0VG9rZW5SZXF1ZXN0RXJyb3JQcmVmaXg9dm9pZCAwO2NvbnN0IGM9'@; put 'aCgzNjMxKTtqLmdldFRva2VuUmVxdWVzdEVycm9yUHJlZml4PSh3LFMsTCxSLHgsVSxILFYpPT57Y29uc3QgTj1ZPT5KU09OLnN0cmluZ2lmeShZLG51bGwsMiksej1bYEVycm9yIHdoaWxlICR7d30gZnJvbSAke1J9YCxgVGhyb3duIGJ5IHRoZSBAc2FzanMvYWRhcHRlciAke1N9IGZ1bmN0'@; put 'aW9uLmBdO3JldHVybiB4JiYoei5wdXNoKCJQYXlsb2FkOiIpLHoucHVzaChOKHgpKSksVSYmKHoucHVzaCgiSGVhZGVyczoiKSx6LnB1c2goTihVKSkpLEgmJnoucHVzaChgQ2xpZW50SWQ6ICR7SH1gKSxWJiZ6LnB1c2goYENsaWVudFNlY3JldDogJHtWfWApLHoucHVzaCgiIiksei5wdXNo'@; put 'KGAkeyh3PT5gUmVzcG9uc2UgZnJvbSAkeyh3PT53PT09Yy5TZXJ2ZXJUeXBlLlNhc1ZpeWE/IlZpeWEiOiJTYXNqcyIpKHcpfSBpcyBiZWxvdy5gKShMKX1gKSx6LnB1c2goIiIpLHouam9pbigiXG4iKX19LDI5NjA5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYpLGM9dGhp'@; put 'cyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFMsTCxSLHgpe3JldHVybiBuZXcoUnx8KFI9UHJvbWlzZSkpKGZ1bmN0aW9uKEgsVil7ZnVuY3Rpb24gTihGKXt0cnl7WSh4Lm5leHQoRikpfWNhdGNoKFcpe1YoVyl9fWZ1bmN0aW9uIHooRil7dHJ5e1koeC50aHJvdyhGKSl9Y2F0Y2goVyl7'@; put 'VihXKX19ZnVuY3Rpb24gWShGKXtGLmRvbmU/SChGLnZhbHVlKTpmdW5jdGlvbiBVKEgpe3JldHVybiBIIGluc3RhbmNlb2YgUj9IOm5ldyBSKGZ1bmN0aW9uKFYpe1YoSCl9KX0oRi52YWx1ZSkudGhlbihOLHopfVkoKHg9eC5hcHBseShTLEx8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5nZXRUb2tlbnM9dm9pZCAwO2NvbnN0IHM9aCgxNjA3MiksQT1oKDM2MzEpLHY9aCg4ODEyOCksQz1oKDk2NzI1KTtqLmdldFRva2Vucz1mdW5jdGlvbiB3KFMsTCxSPUEuU2VydmVyVHlwZS5TYXNWaXlhLHgpe3JldHVy'@; put 'biBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBVPXkubG9nZ2VyfHxjb25zb2xlO2xldHthY2Nlc3NfdG9rZW46SCxyZWZyZXNoX3Rva2VuOlZ9PUw7Y29uc3R7Y2xpZW50Ok4sc2VjcmV0Onp9PUw7bGV0IFk9ITE7dHJ5e1k9KDAscy5pc0FjY2Vzc1Rva2VuRXhwaXJp'@; put 'bmcpKEgsMzAwKX1jYXRjaChxKXtpZigiSW52YWxpZFRva2VuRXJyb3IiIT09cS5uYW1lKXRocm93IHF9bGV0IEY9ITE7dHJ5e0Y9KDAscy5oYXNUb2tlbkV4cGlyZWQpKFYpfWNhdGNoKHEpe2lmKCJJbnZhbGlkVG9rZW5FcnJvciIhPT1xLm5hbWUpdGhyb3cgcX1sZXQgVz0hMTt0cnl7Vz0o'@; put 'MCxzLmlzUmVmcmVzaFRva2VuRXhwaXJpbmcpKFYpfWNhdGNoKHEpe2lmKCJJbnZhbGlkVG9rZW5FcnJvciIhPT1xLm5hbWUpdGhyb3cgcX1pZihZfHxXKXtpZihGKXtjb25zdCByZT0iVW5hYmxlIHRvIG9idGFpbiBuZXcgYWNjZXNzIHRva2VuLiBZb3VyIHJlZnJlc2ggdG9rZW4gaGFzIGV4'@; put 'cGlyZWQuIjt0aHJvdyBVLmVycm9yKHJlKSxuZXcgRXJyb3IocmUpfVUuaW5mbygiUmVmcmVzaGluZyBhY2Nlc3MgYW5kIHJlZnJlc2ggdG9rZW5zLiIpLCh7YWNjZXNzX3Rva2VuOkgscmVmcmVzaF90b2tlbjpWfT1SPT09QS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/eWllbGQoMCx2LnJlZnJlc2hU'@; put 'b2tlbnNGb3JWaXlhKShTLE58fCJzYXMuY2xpIix6fHwiIixWKTp5aWVsZCgwLEMucmVmcmVzaFRva2Vuc0ZvclNhc2pzKShTLFYpKSxMLmFjY2Vzc190b2tlbj1ILEwucmVmcmVzaF90b2tlbj1WO3RyeXt5aWVsZCB4Py4oe2FjY2Vzc190b2tlbjpILHJlZnJlc2hfdG9rZW46Vn0pfWNhdGNo'@; put 'KHJlKXtVLmVycm9yKCJvblRva2Vuc1JlZnJlc2hlZCBoYW5kbGVyIGZhaWxlZDoiLHJlKX19cmV0dXJue2FjY2Vzc190b2tlbjpILHJlZnJlc2hfdG9rZW46VixjbGllbnQ6TixzZWNyZXQ6en19KX19LDQ4NzkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2NyZWF0'@; put 'ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09PUMmJihDPXYpO3ZhciB3PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQSx2KTsoIXd8fCgiZ2V0ImluIHc/IUEuX19lc01vZHVsZTp3LndyaXRhYmxlfHx3LmNvbmZpZ3VyYWJsZSkpJiYo'@; put 'dz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQVt2XX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocyxDLHcpfTpmdW5jdGlvbihzLEEsdixDKXt2b2lkIDA9PT1DJiYoQz12KSxzW0NdPUFbdl19KSxjPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihzLEEp'@; put 'e2Zvcih2YXIgdiBpbiBzKSJkZWZhdWx0IiE9PXYmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQSx2KSYmeShBLHMsdil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxjKGgoMTc3MTApLGopLGMoaCg4NzYwNyksaiksYyho'@; put 'KDUyMzU5KSxqKSxjKGgoNTc4NDcpLGopfSw4NzYwNyhmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouaXNBdXRob3JpemVGb3JtUmVxdWlyZWQ9dm9pZCAwLGouaXNBdXRob3JpemVGb3JtUmVxdWlyZWQ9eT0+Lzxm'@; put 'b3JtLithY3Rpb249IiguKkxvZ29uXC9vYXV0aFwvYXV0aG9yaXplW14iXSopLio+L2dtLnRlc3QoeSl9LDUyMzU5KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5pc0xvZ0luUmVxdWlyZWQ9dm9pZCAwLGouaXNM'@; put 'b2dJblJlcXVpcmVkPXk9Pi88Zm9ybS4rYWN0aW9uPSIoLiooTG9nb24pfChsb2dpbilbXiJdKikuKj4vZ20udGVzdCh5KX0sNTc4NDcoZmUsaixoKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouaXNMb2dJblN1Y2Nlc3NI'@; put 'ZWFkZXJQcmVzZW50PWouZ2V0RXhwZWN0ZWRMb2dJblN1Y2Nlc3NIZWFkZXI9ai5sb2dpblN1Y2Nlc3NIZWFkZXJzPWouZGVmYXVsdFN1Y2Nlc3NIZWFkZXJLZXk9dm9pZCAwO2NvbnN0IHk9aCgzNjMxKSxjPWgoMjkyNjYpLHM9IllvdSBoYXZlIHNpZ25lZCBpbi4iO2ouZGVmYXVsdFN1Y2Nl'@; put 'c3NIZWFkZXJLZXk9ImRlZmF1bHQiLGoubG9naW5TdWNjZXNzSGVhZGVycz17ZXM6IllhIHNlIGhhIGluaWNpYWRvIGxhIHNlc2lceGYzbi4iLHRoOiJcdTBlMDRcdTBlMzhcdTBlMTNcdTBlMjVcdTBlMDdcdTBlMGFcdTBlMzdcdTBlNDhcdTBlMmRcdTBlNDBcdTBlMDJcdTBlNDlcdTBlMzJc'@; put 'dTBlNDNcdTBlMGFcdTBlNDlcdTBlNDFcdTBlMjVcdTBlNDlcdTBlMjciLGphOiJcdTMwYjVcdTMwYTRcdTMwZjNcdTMwYTRcdTMwZjNcdTMwNTdcdTMwN2VcdTMwNTdcdTMwNWZcdTMwMDIiLG5iOiJEdSBoYXIgbG9nZ2V0IGRlZyBwXHhlNS4iLHNsOiJQcmlqYXZpbGkgc3RlIHNlLiIsYXI6'@; put 'Ilx1MDY0NFx1MDY0Mlx1MDYyZiBcdTA2NDJcdTA2NDVcdTA2MmEgIixzazoiUHJpaGxceGUxc2lsaSBzdGUgc2EuIix6aF9ISzoiXHU2MGE4XHU1ZGYyXHU3NjdiXHU1MTY1XHUzMDAyIix6aF9DTjoiXHU2MGE4XHU1ZGYyXHU3NjdiXHU1ZjU1XHUzMDAyIixpdDoiTCd1dGVudGUgc2kgXHhl'@; put 'OCBjb25uZXNzby4iLHN2OiJEdSBoYXIgbG9nZ2F0IGluLiIsaGU6Ilx1MDVlMFx1MDVkYlx1MDVlMFx1MDVlMVx1MDVlYSAiLG5sOiJVIGhlYnQgemljaCBhYW5nZW1lbGQuIixwbDoiWm9zdGFcdTAxNDJlXHUwMTViIHphbG9nb3dhbnkuIixrbzoiXHViODVjXHVhZGY4XHVjNzc4XHVkNTg4'@; put 'XHVjMmI1XHViMmM4XHViMmU0LiIsemhfVFc6Ilx1NjBhOFx1NWRmMlx1NzY3Ylx1NTE2NVx1MzAwMiIsdHI6Ik90dXJ1bSBhXHhlN3RcdTAxMzFuXHUwMTMxei4iLGl3OiJcdTA1ZTBcdTA1ZGJcdTA1ZTBcdTA1ZTFcdTA1ZWEgIixmcjoiVm91cyBceGVhdGVzIGNvbm5lY3RceGU5LiIsdWs6'@; put 'Ilx1MDQxMlx1MDQzOCBcdTA0MzJcdTA0MzJcdTA0NTZcdTA0MzlcdTA0NDhcdTA0M2JcdTA0MzggXHUwNDMyIFx1MDQzZVx1MDQzMVx1MDQzYlx1MDQ1Nlx1MDQzYVx1MDQzZVx1MDQzMlx1MDQzOFx1MDQzOSBcdTA0MzdcdTA0MzBcdTA0M2ZcdTA0MzhcdTA0NDEuIixwdF9CUjoiVm9jXHhl'@; put 'YSBzZSBjb25lY3RvdS4iLG5vOiJEdSBoYXIgbG9nZ2V0IGRlZyBwXHhlNS4iLGNzOiJKc3RlIHBcdTAxNTlpaGxceGUxXHUwMTYxZW5pLiIsZmk6Ik9sZXQga2lyamF1dHVudXQgc2lzXHhlNFx4ZTRuLiIscnU6Ilx1MDQxMlx1MDQ0YiBcdTA0MzJcdTA0NGJcdTA0M2ZcdTA0M2VcdTA0M2Jc'@; put 'dTA0M2RcdTA0MzhcdTA0M2JcdTA0MzggXHUwNDMyXHUwNDQ1XHUwNDNlXHUwNDM0IFx1MDQzMiBcdTA0NDFcdTA0MzhcdTA0NDFcdTA0NDJcdTA0MzVcdTA0M2NcdTA0NDMuIixlbDoiXHUwMzg4XHUwM2M3XHUwM2I1XHUwM2M0XHUwM2I1IFx1MDNjM1x1MDNjNVx1MDNiZFx1MDNiNFx1MDNi'@; put 'NVx1MDNiOFx1MDNiNVx1MDNhZi4iLGhyOiJQcmlqYXZpbGkgc3RlIHNlLiIsZGE6IkR1IGVyIGxvZ2dldCBwXHhlNS4iLGRlOiJTaWUgc2luZCBqZXR6dCBhbmdlbWVsZGV0LiIsc2g6IlByaWphdmxqZW5pIHN0ZS4iLHB0OiJJbmljaW91IHNlc3NceGUzby4iLGh1OiJCZWplbGVudGtlemV0'@; put 'dC4iLHNyOiJQcmlqYXZsamVuaSBzdGUuIixlbjpzLFtqLmRlZmF1bHRTdWNjZXNzSGVhZGVyS2V5XTpzfSxqLmdldEV4cGVjdGVkTG9nSW5TdWNjZXNzSGVhZGVyPSgpPT57bGV0IEM9ai5sb2dpblN1Y2Nlc3NIZWFkZXJzW2ouZGVmYXVsdFN1Y2Nlc3NIZWFkZXJLZXldO2NvbnN0IHc9KDAs'@; put 'Yy5nZXRVc2VyTGFuZ3VhZ2UpKCk7aWYodyl7bGV0IFM9ai5sb2dpblN1Y2Nlc3NIZWFkZXJzW3ddO2lmKFMpQz1TO2Vsc2V7Y29uc3QgUj1PYmplY3Qua2V5cyhqLmxvZ2luU3VjY2Vzc0hlYWRlcnMpLmZpbmQoeD0+bmV3IFJlZ0V4cCh4LCJpIikudGVzdCh3KSk7UiYmKEM9ai5sb2dpblN1'@; put 'Y2Nlc3NIZWFkZXJzW1JdKX19cmV0dXJuIEN9LGouaXNMb2dJblN1Y2Nlc3NIZWFkZXJQcmVzZW50PShDLHcpPT5DPT09eS5TZXJ2ZXJUeXBlLlNhc2pzP3c/LmxvZ2dlZEluOm5ldyBSZWdFeHAoKDAsai5nZXRFeHBlY3RlZExvZ0luU3VjY2Vzc0hlYWRlcikoKSwiZ20iKS50ZXN0KHcpfSw1'@; put 'Mjg5NChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odixDLHcsUyl7cmV0dXJuIG5ldyh3fHwodz1Qcm9taXNlKSkoZnVuY3Rpb24oUix4KXtmdW5jdGlvbiBVKE4pe3RyeXtWKFMubmV4dChOKSl9Y2F0Y2goeil7eCh6KX19ZnVuY3Rp'@; put 'b24gSChOKXt0cnl7VihTLnRocm93KE4pKX1jYXRjaCh6KXt4KHopfX1mdW5jdGlvbiBWKE4pe04uZG9uZT9SKE4udmFsdWUpOmZ1bmN0aW9uIEwoUil7cmV0dXJuIFIgaW5zdGFuY2VvZiB3P1I6bmV3IHcoZnVuY3Rpb24oeCl7eChSKX0pfShOLnZhbHVlKS50aGVuKFUsSCl9VigoUz1TLmFw'@; put 'cGx5KHYsQ3x8W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLm9wZW5XZWJQYWdlPXZvaWQgMDtjb25zdCBjPWgoOTI5ODYpLHM9e3dpZHRoOjUwMCxoZWlnaHQ6NjAwfTtqLm9wZW5XZWJQYWdlPWZ1bmN0aW9uIEEodixD'@; put 'PSIiLHc9cyxTKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3R7d2lkdGg6TCxoZWlnaHQ6Un09dyx4PXNjcmVlbi53aWR0aC8yLUwvMixVPXNjcmVlbi5oZWlnaHQvMi1SLzI7cmV0dXJuIHdpbmRvdy5vcGVuKHYsQyxgdG9vbGJhcj0wLGxvY2F0aW9uPTAs'@; put 'bWVudWJhcj0wLHdpZHRoPSR7TH0saGVpZ2h0PSR7Un0sbGVmdD0ke3h9LHRvcD0ke1V9YCl8fCgoeWllbGQoUz8/Yy5vcGVuTG9naW5Qcm9tcHQpKCkpP3dpbmRvdy5vcGVuKHYsQyxgdG9vbGJhcj0wLGxvY2F0aW9uPTAsbWVudWJhcj0wLHdpZHRoPSR7TH0saGVpZ2h0PSR7Un0sbGVmdD0k'@; put 'e3h9LHRvcD0ke1V9YCk6bnVsbCl9KX19LDk2NzI1KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihDLHcsUyxMKXtyZXR1cm4gbmV3KFN8fChTPVByb21pc2UpKShmdW5jdGlvbih4LFUpe2Z1bmN0aW9uIEgoeil7dHJ5e04oTC5uZXh0'@; put 'KHopKX1jYXRjaChZKXtVKFkpfX1mdW5jdGlvbiBWKHope3RyeXtOKEwudGhyb3coeikpfWNhdGNoKFkpe1UoWSl9fWZ1bmN0aW9uIE4oeil7ei5kb25lP3goei52YWx1ZSk6ZnVuY3Rpb24gUih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIFM/eDpuZXcgUyhmdW5jdGlvbihVKXtVKHgpfSl9KHou'@; put 'dmFsdWUpLnRoZW4oSCxWKX1OKChMPUwuYXBwbHkoQyx3fHxbXSkpLm5leHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGoucmVmcmVzaFRva2Vuc0ZvclNhc2pzPXZvaWQgMDtjb25zdCBjPWgoNjM0MCkscz1oKDExMDg3KSxBPWgoMzYz'@; put 'MSk7ai5yZWZyZXNoVG9rZW5zRm9yU2FzanM9ZnVuY3Rpb24gdihDLHcpe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBTPSIvU0FTanNBcGkvYXV0aC9yZWZyZXNoIixMPXtBdXRob3JpemF0aW9uOiJCZWFyZXIgIit3fTtyZXR1cm4geWllbGQgQy5wb3N0'@; put 'KFMsdm9pZCAwLHZvaWQgMCx2b2lkIDAsTCkudGhlbih4PT57Y29uc3QgVT14LnJlc3VsdDtyZXR1cm57YWNjZXNzX3Rva2VuOlUuYWNjZXNzVG9rZW4scmVmcmVzaF90b2tlbjpVLnJlZnJlc2hUb2tlbn19KS5jYXRjaCh4PT57dGhyb3coMCxjLnByZWZpeE1lc3NhZ2UpKHgsKDAscy5nZXRU'@; put 'b2tlblJlcXVlc3RFcnJvclByZWZpeCkoInJlZnJlc2hpbmcgdG9rZW5zIiwicmVmcmVzaFRva2Vuc0ZvclNhc2pzIixBLlNlcnZlclR5cGUuU2FzanMsUykpfSl9KX19LDg4MTI4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDgyODcpLkJ1ZmZlcixjPXRoaXMmJnRoaXMuX19hd2Fp'@; put 'dGVyfHxmdW5jdGlvbihSLHgsVSxIKXtyZXR1cm4gbmV3KFV8fChVPVByb21pc2UpKShmdW5jdGlvbihOLHope2Z1bmN0aW9uIFkocSl7dHJ5e1coSC5uZXh0KHEpKX1jYXRjaChyZSl7eihyZSl9fWZ1bmN0aW9uIEYocSl7dHJ5e1coSC50aHJvdyhxKSl9Y2F0Y2gocmUpe3oocmUpfX1mdW5j'@; put 'dGlvbiBXKHEpe3EuZG9uZT9OKHEudmFsdWUpOmZ1bmN0aW9uIFYoTil7cmV0dXJuIE4gaW5zdGFuY2VvZiBVP046bmV3IFUoZnVuY3Rpb24oeil7eihOKX0pfShxLnZhbHVlKS50aGVuKFksRil9VygoSD1ILmFwcGx5KFIseHx8W10pKS5uZXh0KCkpfSl9LHM9dGhpcyYmdGhpcy5fX2ltcG9y'@; put 'dERlZmF1bHR8fGZ1bmN0aW9uKFIpe3JldHVybiBSJiZSLl9fZXNNb2R1bGU/Ujp7ZGVmYXVsdDpSfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGoucmVmcmVzaFRva2Vuc0ZvclZpeWE9dm9pZCAwO2NvbnN0IEE9aCgzNjMxKSx2PWgoNjM0MCks'@; put 'Qz1zKGgoNTE4OTQpKSx3PWgoMjkyNjYpLFM9aCgxMTA4Nyk7ai5yZWZyZXNoVG9rZW5zRm9yVml5YT1mdW5jdGlvbiBMKFIseCxVLEgpe3JldHVybiBjKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZighKDAsdy5pc05vZGUpKCkpdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgJ3Jl'@; put 'ZnJlc2hUb2tlbnNGb3JWaXlhJyBjYW4gb25seSBiZSB1c2VkIGJ5IE5vZGUuIik7Y29uc3QgVj0iL1NBU0xvZ29uL29hdXRoL3Rva2VuIix6PXtBdXRob3JpemF0aW9uOiJCYXNpYyAiKyh0eXBlb2YgeT4idSI/YnRvYSh4KyI6IitVKTp5LmZyb20oeCsiOiIrVSkudG9TdHJpbmcoImJhc2U2'@; put 'NCIpKX0sWT1uZXcgQy5kZWZhdWx0O3JldHVybiBZLmFwcGVuZCgiZ3JhbnRfdHlwZSIsInJlZnJlc2hfdG9rZW4iKSxZLmFwcGVuZCgicmVmcmVzaF90b2tlbiIsSCkseWllbGQgUi5wb3N0KFYsWSx2b2lkIDAsIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIrWS5fYm91bmRhcnks'@; put 'eikudGhlbihXPT5XLnJlc3VsdCkuY2F0Y2goVz0+e3Rocm93KDAsdi5wcmVmaXhNZXNzYWdlKShXLCgwLFMuZ2V0VG9rZW5SZXF1ZXN0RXJyb3JQcmVmaXgpKCJyZWZyZXNoaW5nIHRva2VucyIsInJlZnJlc2hUb2tlbnNGb3JWaXlhIixBLlNlcnZlclR5cGUuU2FzVml5YSxWLFkseix4LFUp'@; put 'KX0pfSl9fSw0NDI1NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odixDLHcsUyl7cmV0dXJuIG5ldyh3fHwodz1Qcm9taXNlKSkoZnVuY3Rpb24oUix4KXtmdW5jdGlvbiBVKE4pe3RyeXtWKFMubmV4dChOKSl9Y2F0Y2goeil7eCh6'@; put 'KX19ZnVuY3Rpb24gSChOKXt0cnl7VihTLnRocm93KE4pKX1jYXRjaCh6KXt4KHopfX1mdW5jdGlvbiBWKE4pe04uZG9uZT9SKE4udmFsdWUpOmZ1bmN0aW9uIEwoUil7cmV0dXJuIFIgaW5zdGFuY2VvZiB3P1I6bmV3IHcoZnVuY3Rpb24oeCl7eChSKX0pfShOLnZhbHVlKS50aGVuKFUsSCl9'@; put 'VigoUz1TLmFwcGx5KHYsQ3x8W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnZlcmlmeVNhczlMb2dpbj12b2lkIDA7Y29uc3QgYz1oKDI5MjY2KSxzPWgoNDg3OSk7ai52ZXJpZnlTYXM5TG9naW49ZnVuY3Rpb24gQSh2'@; put 'KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEM9ITEsdz1uZXcgRGF0ZSxTPTA7ZG97aWYoeWllbGQoMCxjLmRlbGF5KSgxZTMpLHYuY2xvc2VkKWJyZWFrO0M9di53aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygiU0FTTG9nb24iKSYmdi53aW5kb3cu'@; put 'ZG9jdW1lbnQuYm9keS5pbm5lclRleHQuaW5jbHVkZXMoKDAscy5nZXRFeHBlY3RlZExvZ0luU3VjY2Vzc0hlYWRlcikoKSksUz0oKG5ldyBEYXRlKS52YWx1ZU9mKCktdy52YWx1ZU9mKCkpLzFlM313aGlsZSghQyYmUzwzMDApO3JldHVybntpc0xvZ2dlZEluOkN9fSl9fSw3NTAwOShmZSxq'@; put 'LGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oQyx3LFMsTCl7cmV0dXJuIG5ldyhTfHwoUz1Qcm9taXNlKSkoZnVuY3Rpb24oeCxVKXtmdW5jdGlvbiBIKHope3RyeXtOKEwubmV4dCh6KSl9Y2F0Y2goWSl7VShZKX19ZnVuY3Rpb24gVih6KXt0'@; put 'cnl7TihMLnRocm93KHopKX1jYXRjaChZKXtVKFkpfX1mdW5jdGlvbiBOKHope3ouZG9uZT94KHoudmFsdWUpOmZ1bmN0aW9uIFIoeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBTP3g6bmV3IFMoZnVuY3Rpb24oVSl7VSh4KX0pfSh6LnZhbHVlKS50aGVuKEgsVil9TigoTD1MLmFwcGx5KEMsd3x8'@; put 'W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmlzTG9nZ2VkSW5TQVNWSVlBPWoudmVyaWZ5U2FzVml5YUxvZ2luPXZvaWQgMDtjb25zdCBjPWgoMjkyNjYpLHM9aCg0ODc5KTtqLnZlcmlmeVNhc1ZpeWFMb2dpbj1mdW5j'@; put 'dGlvbiBBKEMpe3ZhciB3LFM7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBMPSExLFI9bmV3IERhdGUseD0wO2Rve2lmKHlpZWxkKDAsYy5kZWxheSkoMWUzKSxDLmNsb3NlZClicmVhaztMPSgwLGouaXNMb2dnZWRJblNBU1ZJWUEpKCkseD0oKG5ldyBEYXRl'@; put 'KS52YWx1ZU9mKCktUi52YWx1ZU9mKCkpLzFlM313aGlsZSghTCYmeDwzMDApO2xldCBVPSExO1I9bmV3IERhdGU7ZG97aWYoeWllbGQoMCxjLmRlbGF5KSgxZTMpLEMuY2xvc2VkKWJyZWFrO1U9Qy53aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygiU0FTTG9nb24iKXx8KG51bGw9PT0o'@; put 'Uz1udWxsPT09KHc9Qy53aW5kb3cuZG9jdW1lbnQuYm9keSl8fHZvaWQgMD09PXc/dm9pZCAwOncuaW5uZXJUZXh0KXx8dm9pZCAwPT09Uz92b2lkIDA6Uy5pbmNsdWRlcygoMCxzLmdldEV4cGVjdGVkTG9nSW5TdWNjZXNzSGVhZGVyKSgpKSkseD0oKG5ldyBEYXRlKS52YWx1ZU9mKCktUi52'@; put 'YWx1ZU9mKCkpLzFlM313aGlsZSghVSYmeDwzMDApO3JldHVybntpc0xvZ2dlZEluOkwmJlV9fSl9LGouaXNMb2dnZWRJblNBU1ZJWUE9KCk9PmRvY3VtZW50LmNvb2tpZS5pbmNsdWRlcygiQ3VycmVudC1Vc2VyIikmJmRvY3VtZW50LmNvb2tpZS5pbmNsdWRlcygidXNlcklkIil9LDQ3Njcz'@; put 'KGZlLGosaCl7InVzZSBzdHJpY3QiO2ouZ2VuZXJhdGVGaWxlVXBsb2FkRm9ybT12b2lkIDA7Y29uc3QgYz1oKDQ3ODYpLHM9aCgyOTI2Nik7ai5nZW5lcmF0ZUZpbGVVcGxvYWRGb3JtPSh2LEMpPT57Zm9yKGNvbnN0IHcgaW4gQyl7aWYoIUFycmF5LmlzQXJyYXkoQ1t3XSkpY29udGludWU7'@; put 'Y29uc3QgUz13LEw9KDAsYy5jb252ZXJ0VG9DU1YpKEMsdyk7aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PUwpdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO2lmKCgwLHMuaXNO'@; put 'b2RlKSgpKXYuYXBwZW5kKFMsTCx7ZmlsZW5hbWU6YCR7U30uY3N2YCxjb250ZW50VHlwZToiYXBwbGljYXRpb24vY3N2In0pO2Vsc2V7Y29uc3QgUj1uZXcgQmxvYihbTF0se3R5cGU6ImFwcGxpY2F0aW9uL2NzdiJ9KTt2LmFwcGVuZChTLFIsYCR7U30uY3N2YCl9fXJldHVybiB2fX0sMTAw'@; put 'OTMoZmUsaixoKXsidXNlIHN0cmljdCI7ai5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9ybT12b2lkIDA7Y29uc3QgYz1oKDQ3ODYpLHM9aCgxODcyMCk7ai5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9ybT0odixDKT0+e2NvbnN0IHc9W10sUz17fTtsZXQgTD0wO2Zvcihjb25zdCBSIGluIEMpe2lmKCgw'@; put 'LGMuaXNGb3JtYXRzVGFibGUpKFIpJiZPYmplY3Qua2V5cyhDKS5pbmNsdWRlcyhSLnJlcGxhY2UoL15cJC8sIiIpKSljb250aW51ZTtMKyssKDAsYy5pc0Zvcm1hdHNUYWJsZSkoUil8fHcucHVzaChSKTtjb25zdCB4PSgwLGMuY29udmVydFRvQ1NWKShDLFIpO2lmKCJFUlJPUjogTEFSR0Ug'@; put 'U1RSSU5HIExFTkdUSCI9PT14KXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTt4Lmxlbmd0aD4xNmUzPygwLHMuc3BsaXRDaHVua3MpKHgpLm1hcChIPT57di5hcHBlbmQoYHNhc2pzJHtMfWRh'@; put 'dGFgLEgpfSk6U1tgc2FzanMke0x9ZGF0YWBdPXh9cmV0dXJuIFMuc2FzanNfdGFibGVzPXcuam9pbigiICIpLHtmb3JtRGF0YTp2LHJlcXVlc3RQYXJhbXM6U319fSwyODE1NihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5j'@; put 'cmVhdGU/ZnVuY3Rpb24odixDLHcsUyl7dm9pZCAwPT09UyYmKFM9dyk7dmFyIEw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihDLHcpOyghTHx8KCJnZXQiaW4gTD8hQy5fX2VzTW9kdWxlOkwud3JpdGFibGV8fEwuY29uZmlndXJhYmxlKSkmJihMPXtlbnVtZXJhYmxlOiEwLGdl'@; put 'dDpmdW5jdGlvbigpe3JldHVybiBDW3ddfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2LFMsTCl9OmZ1bmN0aW9uKHYsQyx3LFMpe3ZvaWQgMD09PVMmJihTPXcpLHZbU109Q1t3XX0pLGM9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKHYsQyl7Zm9yKHZhciB3IGluIHYpImRl'@; put 'ZmF1bHQiIT09dyYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChDLHcpJiZ5KEMsdix3KX0scz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24odil7cmV0dXJuIHYmJnYuX19lc01vZHVsZT92OntkZWZhdWx0OnZ9fTtPYmplY3QuZGVmaW5lUHJvcGVy'@; put 'dHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgQT1zKGgoNjk4MTApKTtjKGgoNTM1NzQpLGopLGMoaCgxNzM4OCksaiksYyhoKDgyMDE1KSxqKSxjKGgoNzI4MzEpLGopLGMoaCg0NTgwMyksaiksYyhoKDc3NTYwKSxqKSxqLmRlZmF1bHQ9QS5kZWZhdWx0fSwxNDEyNihmZSxq'@; put 'LGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oQyx3LFMsTCl7cmV0dXJuIG5ldyhTfHwoUz1Qcm9taXNlKSkoZnVuY3Rpb24oeCxVKXtmdW5jdGlvbiBIKHope3RyeXtOKEwubmV4dCh6KSl9Y2F0Y2goWSl7VShZKX19ZnVuY3Rpb24gVih6KXt0'@; put 'cnl7TihMLnRocm93KHopKX1jYXRjaChZKXtVKFkpfX1mdW5jdGlvbiBOKHope3ouZG9uZT94KHoudmFsdWUpOmZ1bmN0aW9uIFIoeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBTP3g6bmV3IFMoZnVuY3Rpb24oVSl7VSh4KX0pfSh6LnZhbHVlKS50aGVuKEgsVil9TigoTD1MLmFwcGx5KEMsd3x8'@; put 'W10pKS5uZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLkNvbXB1dGVKb2JFeGVjdXRvcj12b2lkIDA7Y29uc3QgYz1oKDM2MzEpLHM9aCgxNzM4OCksQT1oKDkxMTAxKTtqLkNvbXB1dGVKb2JFeGVjdXRvcj1jbGFzcyB2IGV4dGVu'@; put 'ZHMgQS5CYXNlSm9iRXhlY3V0b3J7Y29uc3RydWN0b3IodyxTKXtzdXBlcih3LGMuU2VydmVyVHlwZS5TYXNWaXlhKSx0aGlzLnNhc1ZpeWFBcGlDbGllbnQ9U31leGVjdXRlKHcsUyxMLFIseCl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IFU9Unx8KCgp'@; put 'PT5Qcm9taXNlLnJlc29sdmUoKSk7cmV0dXJuIG5ldyBQcm9taXNlKCh6LFkpPT57dmFyIEY7bnVsbD09PShGPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PUZ8fEYuZXhlY3V0ZUNvbXB1dGVKb2IodyxMLmNvbnRleHROYW1lLEwuZGVidWcsUyx4LCEwLCEwKS50aGVuKFc9Pnt0'@; put 'aGlzLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdChXLHcsTC5kZWJ1ZykseihXLnJlc3VsdCl9KS5jYXRjaChXPT55KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtXIGluc3RhbmNlb2Ygcy5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnNhc1ZpeWFBcGlDbGll'@; put 'bnQuYXBwZW5kUmVxdWVzdChXLHcsTC5kZWJ1ZyksWShuZXcgcy5FcnJvclJlc3BvbnNlKFc/Lm1lc3NhZ2UsVykpKSxXIGluc3RhbmNlb2Ygcy5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoKCk9PnRoaXMuZXhlY3V0ZSh3LFMsTCxSKS50aGVuKHE9Pnt6'@; put 'KHEpfSxxPT57WShxKX0pKSx5aWVsZCBVKCkpOlkobmV3IHMuRXJyb3JSZXNwb25zZShXPy5tZXNzYWdlLFcpKX0pKX0pfSl9fX0sMTM4NzEoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHcsUyxMLFIpe3JldHVybiBuZXcoTHx8KEw9'@; put 'UHJvbWlzZSkpKGZ1bmN0aW9uKFUsSCl7ZnVuY3Rpb24gVihZKXt0cnl7eihSLm5leHQoWSkpfWNhdGNoKEYpe0goRil9fWZ1bmN0aW9uIE4oWSl7dHJ5e3ooUi50aHJvdyhZKSl9Y2F0Y2goRil7SChGKX19ZnVuY3Rpb24geihZKXtZLmRvbmU/VShZLnZhbHVlKTpmdW5jdGlvbiB4KFUpe3Jl'@; put 'dHVybiBVIGluc3RhbmNlb2YgTD9VOm5ldyBMKGZ1bmN0aW9uKEgpe0goVSl9KX0oWS52YWx1ZSkudGhlbihWLE4pfXooKFI9Ui5hcHBseSh3LFN8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5GaWxlVXBsb2FkZXI9'@; put 'dm9pZCAwO2NvbnN0IGM9aCgyOTI2Nikscz1oKDE3Mzg4KSxBPWgoMzYzMSksdj1oKDkxMTAxKTtqLkZpbGVVcGxvYWRlcj1jbGFzcyBDIGV4dGVuZHMgdi5CYXNlSm9iRXhlY3V0b3J7Y29uc3RydWN0b3IoUyxMLFIseCl7c3VwZXIoUyxMKSx0aGlzLmpvYnNQYXRoPVIsdGhpcy5yZXF1ZXN0'@; put 'Q2xpZW50PXh9ZXhlY3V0ZShTLEwsUix4KXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3R7ZmlsZXM6VSxwYXJhbXM6SH09TCxWPXh8fCgoKT0+UHJvbWlzZS5yZXNvbHZlKCkpO2lmKCFVPy5sZW5ndGgpdGhyb3cgbmV3IHMuRXJyb3JSZXNwb25zZSgiQXQg'@; put 'bGVhc3Qgb25lIGZpbGUgbXVzdCBiZSBwcm92aWRlZC4iKTtpZighU3x8IiI9PT1TKXRocm93IG5ldyBzLkVycm9yUmVzcG9uc2UoInNhc0pvYiBtdXN0IGJlIHByb3ZpZGVkLiIpO2xldCBOPSIiO2ZvcihsZXQgbWUgaW4gSClILmhhc093blByb3BlcnR5KG1lKSYmKE4rPWAmJHttZX09JHtI'@; put 'W21lXX1gKTtjb25zdCB6PVIuYXBwTG9jP1IuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrUy5yZXBsYWNlKC9eXC8vLCIiKTpTLFk9YCR7dGhpcy5qb2JzUGF0aH0vPyR7Il9wcm9ncmFtPSIren0ke059YCxGPW5ldyBGb3JtRGF0YTtmb3IobGV0IG1lIG9mIFUpRi5hcHBlbmQoImZpbGUi'@; put 'LG1lLmZpbGUsbWUuZmlsZU5hbWUpO2NvbnN0IFc9dGhpcy5yZXF1ZXN0Q2xpZW50LmdldENzcmZUb2tlbigiZmlsZSIpO1cmJkYuYXBwZW5kKCJfY3NyZiIsVy52YWx1ZSksUi5kZWJ1ZyYmRi5hcHBlbmQoIl9kZWJ1ZyIsIjEzMSIpLFIuc2VydmVyVHlwZT09PUEuU2VydmVyVHlwZS5TYXNW'@; put 'aXlhJiZSLmNvbnRleHROYW1lJiZGLmFwcGVuZCgiX2NvbnRleHRuYW1lIixSLmNvbnRleHROYW1lKTtjb25zdCBxPXsiY2FjaGUtY29udHJvbCI6Im5vLWNhY2hlIixBY2NlcHQ6IiovKiIsIkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifTtyZXR1cm4gbmV3IFByb21pc2UoKG1lLENlKT0+'@; put 'e3RoaXMucmVxdWVzdENsaWVudC5wb3N0KFksRix2b2lkIDAsImFwcGxpY2F0aW9uL2pzb24iLHEpLnRoZW4oSWU9PnkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KEllLFMsUi5kZWJ1Zyk7bGV0IGtlPUllLnJlc3VsdDtp'@; put 'ZihSLmRlYnVnKXN3aXRjaCh0aGlzLnNlcnZlclR5cGUpe2Nhc2UgQS5TZXJ2ZXJUeXBlLlNhc1ZpeWE6a2U9eWllbGQoMCxjLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2UpKEllLnJlc3VsdCx0aGlzLnJlcXVlc3RDbGllbnQsUi5zZXJ2ZXJVcmwpO2JyZWFrO2Nhc2UgQS5TZXJ2ZXJUeXBl'@; put 'LlNhczk6a2U9InN0cmluZyI9PXR5cGVvZiBJZS5yZXN1bHQ/KDAsYy5wYXJzZVdlYm91dFJlc3BvbnNlKShJZS5yZXN1bHQsWSk6SWUucmVzdWx0O2JyZWFrO2Nhc2UgQS5TZXJ2ZXJUeXBlLlNhc2pzOmtlPSJzdHJpbmciPT10eXBlb2YgSWUucmVzdWx0PygwLGMuZ2V0VmFsaWRKc29uKShJ'@; put 'ZS5yZXN1bHQpOkllLnJlc3VsdH1lbHNlIGtlPSJzdHJpbmciPT10eXBlb2YgSWUucmVzdWx0PygwLGMuZ2V0VmFsaWRKc29uKShJZS5yZXN1bHQpOkllLnJlc3VsdDttZShrZSl9KSkuY2F0Y2goSWU9PnkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe0llIGluc3RhbmNlb2Ygcy5K'@; put 'b2JFeGVjdXRpb25FcnJvciYmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KEllLFMsUi5kZWJ1ZyksQ2UobmV3IHMuRXJyb3JSZXNwb25zZShJZT8ubWVzc2FnZSxJZSkpKSxJZSBpbnN0YW5jZW9mIHMuTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1'@; put 'ZXN0KCgpPT50aGlzLmV4ZWN1dGUoUyxMLFIseCkudGhlbihrZT0+e21lKGtlKX0sa2U9PntDZShrZSl9KSkseWllbGQgVigpKTpDZShuZXcgcy5FcnJvclJlc3BvbnNlKCJGaWxlIHVwbG9hZCByZXF1ZXN0IGZhaWxlZC4iLEllKSl9KSl9KX0pfX19LDkxMTMxKGZlLGosaCl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciB5PXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbih3LFMsTCxSKXtyZXR1cm4gbmV3KEx8fChMPVByb21pc2UpKShmdW5jdGlvbihVLEgpe2Z1bmN0aW9uIFYoWSl7dHJ5e3ooUi5uZXh0KFkpKX1jYXRjaChGKXtIKEYpfX1mdW5jdGlvbiBOKFkpe3RyeXt6KFIudGhyb3co'@; put 'WSkpfWNhdGNoKEYpe0goRil9fWZ1bmN0aW9uIHooWSl7WS5kb25lP1UoWS52YWx1ZSk6ZnVuY3Rpb24geChVKXtyZXR1cm4gVSBpbnN0YW5jZW9mIEw/VTpuZXcgTChmdW5jdGlvbihIKXtIKFUpfSl9KFkudmFsdWUpLnRoZW4oVixOKX16KChSPVIuYXBwbHkodyxTfHxbXSkpLm5leHQoKSl9'@; put 'KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouSmVzSm9iRXhlY3V0b3I9dm9pZCAwO2NvbnN0IGM9aCgzNjMxKSxzPWgoMTczODgpLEE9aCg5MTEwMSksdj1oKDI5MjY2KTtqLkplc0pvYkV4ZWN1dG9yPWNsYXNzIEMgZXh0ZW5kcyBBLkJhc2VK'@; put 'b2JFeGVjdXRvcntjb25zdHJ1Y3RvcihTLEwpe3N1cGVyKFMsYy5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLHRoaXMuc2FzVml5YUFwaUNsaWVudD1MfWV4ZWN1dGUoUyxMLFIseCxVLEg9W10pe3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBWPXh8fCgoKT0+UHJv'@; put 'bWlzZS5yZXNvbHZlKCkpO3JldHVybiBuZXcgUHJvbWlzZSgoeixZKT0+e3ZhciBGO251bGw9PT0oRj10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1GfHxGLmV4ZWN1dGVKb2IoUyxSLmNvbnRleHROYW1lLFIuZGVidWcsTCxVKS50aGVuKFc9Pnt0aGlzLnNhc1ZpeWFBcGlDbGll'@; put 'bnQuYXBwZW5kUmVxdWVzdChXLFMsUi5kZWJ1Zyk7Y29uc3QgcT0oMCx2LmFwcGVuZEV4dHJhUmVzcG9uc2VBdHRyaWJ1dGVzKShXLEgpO3oocSl9KS5jYXRjaChXPT55KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtXIGluc3RhbmNlb2Ygcy5Kb2JFeGVjdXRpb25FcnJvciYmKHRo'@; put 'aXMuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KFcsUyxSLmRlYnVnKSxZKG5ldyBzLkVycm9yUmVzcG9uc2UoVz8ubWVzc2FnZSxXKSkpLFcgaW5zdGFuY2VvZiBzLkxvZ2luUmVxdWlyZWRFcnJvcj8odGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdCgoKT0+dGhpcy5leGVjdXRlKFMs'@; put 'TCxSLHgsVSxIKS50aGVuKHE9Pnt6KHEpfSxxPT57WShxKX0pKSx5aWVsZCBWKCkpOlkobmV3IHMuRXJyb3JSZXNwb25zZShXPy5tZXNzYWdlLFcpKX0pKX0pfSl9fX0sOTExMDEoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEEsdixD'@; put 'LHcpe3JldHVybiBuZXcoQ3x8KEM9UHJvbWlzZSkpKGZ1bmN0aW9uKEwsUil7ZnVuY3Rpb24geChWKXt0cnl7SCh3Lm5leHQoVikpfWNhdGNoKE4pe1IoTil9fWZ1bmN0aW9uIFUoVil7dHJ5e0gody50aHJvdyhWKSl9Y2F0Y2goTil7UihOKX19ZnVuY3Rpb24gSChWKXtWLmRvbmU/TChWLnZh'@; put 'bHVlKTpmdW5jdGlvbiBTKEwpe3JldHVybiBMIGluc3RhbmNlb2YgQz9MOm5ldyBDKGZ1bmN0aW9uKFIpe1IoTCl9KX0oVi52YWx1ZSkudGhlbih4LFUpfUgoKHc9dy5hcHBseShBLHZ8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVl'@; put 'OiEwfSksai5CYXNlSm9iRXhlY3V0b3I9dm9pZCAwO2NvbnN0IGM9aCgyOTI2Nik7ai5CYXNlSm9iRXhlY3V0b3I9Y2xhc3Mgc3tjb25zdHJ1Y3Rvcih2LEMpe3RoaXMuc2VydmVyVXJsPXYsdGhpcy5zZXJ2ZXJUeXBlPUMsdGhpcy53YWl0aW5nUmVxdWVzdHM9W10sdGhpcy5yZXNlbmRXYWl0'@; put 'aW5nUmVxdWVzdHM9KCk9PnkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkKDAsYy5hc3luY0ZvckVhY2gpKHRoaXMud2FpdGluZ1JlcXVlc3RzLHc9PnkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIHcoKX0pKSx0aGlzLndhaXRpbmdSZXF1ZXN0cz1b'@; put 'XX0pfWFwcGVuZFdhaXRpbmdSZXF1ZXN0KHYpe3RoaXMud2FpdGluZ1JlcXVlc3RzLnB1c2godil9Z2V0UmVxdWVzdFBhcmFtcyh2KXtjb25zdCBDPXt9O3JldHVybiB2LmRlYnVnJiYoQy5fb21pdHRleHRsb2c9ImZhbHNlIixDLl9vbWl0U2Vzc2lvblJlc3VsdHM9ImZhbHNlIixDLl9kZWJ1'@; put 'Zz0xMzEpLEN9fX0sNTQ5NDEoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFIseCxVLEgpe3JldHVybiBuZXcoVXx8KFU9UHJvbWlzZSkpKGZ1bmN0aW9uKE4seil7ZnVuY3Rpb24gWShxKXt0cnl7VyhILm5leHQocSkpfWNhdGNoKHJl'@; put 'KXt6KHJlKX19ZnVuY3Rpb24gRihxKXt0cnl7VyhILnRocm93KHEpKX1jYXRjaChyZSl7eihyZSl9fWZ1bmN0aW9uIFcocSl7cS5kb25lP04ocS52YWx1ZSk6ZnVuY3Rpb24gVihOKXtyZXR1cm4gTiBpbnN0YW5jZW9mIFU/TjpuZXcgVShmdW5jdGlvbih6KXt6KE4pfSl9KHEudmFsdWUpLnRo'@; put 'ZW4oWSxGKX1XKChIPUguYXBwbHkoUix4fHxbXSkpLm5leHQoKSl9KX0sYz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oUil7cmV0dXJuIFImJlIuX19lc01vZHVsZT9SOntkZWZhdWx0OlJ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVl'@; put 'OiEwfSksai5TYXM5Sm9iRXhlY3V0b3I9dm9pZCAwO2NvbnN0IHM9YyhoKDUxODk0KSksQT1oKDE3Mzg4KSx2PWgoMjkyNjYpLEM9aCg5MTEwMSksdz1oKDYwNTc2KTtqLlNhczlKb2JFeGVjdXRvcj1jbGFzcyBTIGV4dGVuZHMgQy5CYXNlSm9iRXhlY3V0b3J7Y29uc3RydWN0b3IoeCxVLEgs'@; put 'VixOKXtzdXBlcih4LFUpLHRoaXMuam9ic1BhdGg9SCx0aGlzLnJlcXVlc3RDbGllbnQ9Vix0aGlzLnNhczlSZXF1ZXN0Q2xpZW50PW5ldyB3LlNhczlSZXF1ZXN0Q2xpZW50KHgsTil9ZXhlY3V0ZSh4LFUsSCl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0'@; put 'IFY9KDAsdi5pc1JlbGF0aXZlUGF0aCkoeCkmJkguYXBwTG9jP0guYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikreC5yZXBsYWNlKC9eXC8vLCIiKTp4O2xldCBOPWAke0guc2VydmVyVXJsfSR7dGhpcy5qb2JzUGF0aH0/JHsiX3Byb2dyYW09IitWfWA7Tj1gJHtOfSR7SC51c2VybmFtZSYm'@; put 'SC5wYXNzd29yZD8iJl91c2VybmFtZT0iK0gudXNlcm5hbWUrIiZfcGFzc3dvcmQ9IitILnBhc3N3b3JkOiIifWAsTj1gJHtOfSR7SC5kZWJ1Zz8iJl9kZWJ1Zz0xMzEiOiIifWA7bGV0IHo9T2JqZWN0LmFzc2lnbih7fSx0aGlzLmdldFJlcXVlc3RQYXJhbXMoSCkpLFk9bmV3IHMuZGVmYXVs'@; put 'dDtpZihVKXRyeXtZPUwoWSxVKX1jYXRjaChxKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEEuRXJyb3JSZXNwb25zZShxPy5tZXNzYWdlLHEpKX1lbHNlIFU9IiI7Zm9yKGNvbnN0IHEgaW4geil6Lmhhc093blByb3BlcnR5KHEpJiZZLmFwcGVuZChxLHpbcV0pO3lpZWxkIHRoaXMuc2Fz'@; put 'OVJlcXVlc3RDbGllbnQubG9naW4oSC51c2VybmFtZSxILnBhc3N3b3JkLHRoaXMuam9ic1BhdGgpO2NvbnN0IEY9VSYmT2JqZWN0LmtleXMoVSkubGVuZ3RoPyJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK1kuX2JvdW5kYXJ5OiJ0ZXh0L3BsYWluIjtyZXR1cm4gbmV3IFByb21p'@; put 'c2UoKHEscmUpPT50aGlzLnNhczlSZXF1ZXN0Q2xpZW50LnBvc3QoTixZLHZvaWQgMCxGLHtBY2NlcHQ6IiovKiIsQ29ubmVjdGlvbjoiS2VlcC1BbGl2ZSJ9KS50aGVuKG1lPT57dGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QobWUseCxILmRlYnVnKSxxKG1lKX0pLmNhdGNoKG1l'@; put 'PT57bGV0IENlPW1lO21lLnJlc3VsdCYmIiIhPT1tZS5yZXN1bHQ/Q2U9bWUucmVzdWx0Om1lLm1lc3NhZ2UmJihDZT1tZS5tZXNzYWdlKSx0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChDZSx4LEguZGVidWcpLHJlKG5ldyBBLkVycm9yUmVzcG9uc2UobWU/Lm1lc3NhZ2UsbWUp'@; put 'KX0pKX0pfWdldFJlcXVlc3RQYXJhbXMoeCl7Y29uc3QgVT17fTtyZXR1cm4geC5kZWJ1ZyYmKFUuX2RlYnVnPTEzMSksVX19O2NvbnN0IEw9KFIseCk9Pntmb3IoY29uc3QgVSBpbiB4KXtjb25zdCBIPVUsVj0oMCx2LmNvbnZlcnRUb0NTVikoeCxVKTtpZigiRVJST1I6IExBUkdFIFNUUklO'@; put 'RyBMRU5HVEgiPT09Vil0aHJvdyBuZXcgRXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7Ui5hcHBlbmQoSCxWLHtmaWxlbmFtZTpgJHtIfS5jc3ZgLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9jc3YifSl9cmV0'@; put 'dXJuIFJ9fSwyODk5NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oeCxVLEgsVil7cmV0dXJuIG5ldyhIfHwoSD1Qcm9taXNlKSkoZnVuY3Rpb24oeixZKXtmdW5jdGlvbiBGKHJlKXt0cnl7cShWLm5leHQocmUpKX1jYXRjaChtZSl7'@; put 'WShtZSl9fWZ1bmN0aW9uIFcocmUpe3RyeXtxKFYudGhyb3cocmUpKX1jYXRjaChtZSl7WShtZSl9fWZ1bmN0aW9uIHEocmUpe3JlLmRvbmU/eihyZS52YWx1ZSk6ZnVuY3Rpb24gTih6KXtyZXR1cm4geiBpbnN0YW5jZW9mIEg/ejpuZXcgSChmdW5jdGlvbihZKXtZKHopfSl9KHJlLnZhbHVl'@; put 'KS50aGVuKEYsVyl9cSgoVj1WLmFwcGx5KHgsVXx8W10pKS5uZXh0KCkpfSl9LGM9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHgpe3JldHVybiB4JiZ4Ll9fZXNNb2R1bGU/eDp7ZGVmYXVsdDp4fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2'@; put 'YWx1ZTohMH0pLGouU2FzanNKb2JFeGVjdXRvcj12b2lkIDA7Y29uc3Qgcz1jKGgoNTE4OTQpKSxBPWgoMzYzMSksdj1oKDE3Mzg4KSxDPWgoNDc2NzMpLHc9aCgyOTI2NiksUz1oKDI5MjY2KSxMPWgoOTExMDEpO2ouU2FzanNKb2JFeGVjdXRvcj1jbGFzcyBSIGV4dGVuZHMgTC5CYXNlSm9i'@; put 'RXhlY3V0b3J7Y29uc3RydWN0b3IoVSxILFYpe3N1cGVyKFUsQS5TZXJ2ZXJUeXBlLlNhc2pzKSx0aGlzLmpvYnNQYXRoPUgsdGhpcy5yZXF1ZXN0Q2xpZW50PVZ9ZXhlY3V0ZShVLEgsVixOLHosWT1bXSl7cmV0dXJuIHkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IEY9'@; put 'TixXPSgwLFMuaXNSZWxhdGl2ZVBhdGgpKFUpJiZWLmFwcExvYz9WLmFwcExvYy5yZXBsYWNlKC9cLz8kLywiLyIpK1UucmVwbGFjZSgvXlwvLywiIik6VTtsZXQgcT1gJHtWLnNlcnZlclVybH0ke3RoaXMuam9ic1BhdGh9Lz8keyJfcHJvZ3JhbT0iK1d9YCxyZT1PYmplY3QuYXNzaWduKHt9'@; put 'LHRoaXMuZ2V0UmVxdWVzdFBhcmFtcyhWKSksbWU9KDAsdy5nZXRGb3JtRGF0YSkoKTtpZihIKXRyeXttZT0oMCxDLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm0pKG1lLEgpfWNhdGNoKGtlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHYuRXJyb3JSZXNwb25zZShrZT8ubWVzc2FnZSxrZSkp'@; put 'fWZvcihjb25zdCBrZSBpbiByZSlyZS5oYXNPd25Qcm9wZXJ0eShrZSkmJm1lLmFwcGVuZChrZSxyZVtrZV0pO2NvbnN0IENlPW1lIGluc3RhbmNlb2Ygcy5kZWZhdWx0JiZ0eXBlb2YgRm9ybURhdGE+InUiP2BtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke21lLmdldEhlYWRlcnMo'@; put 'KVsiY29udGVudC10eXBlIl19YDoibXVsdGlwYXJ0L2Zvcm0tZGF0YSI7cmV0dXJuIG5ldyBQcm9taXNlKChrZSxxZSk9Pnt0aGlzLnJlcXVlc3RDbGllbnQucG9zdChxLG1lLHo/LmFjY2Vzc190b2tlbixDZSkudGhlbihYPT55KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZihP'@; put 'YmplY3QuZW50cmllcyhYLnJlc3VsdCkubGVuZ3RoPDEpdGhyb3cgbmV3IHYuSm9iRXhlY3V0aW9uRXJyb3IoMCxgTm8gd2Vib3V0IHdhcyByZXR1cm5lZCBieSBqb2IgJHtXfS4gIFBsZWFzZSBjaGVjayB0aGUgU0FTIGxvZyBmb3IgbW9yZSBpbmZvLmAsWC5sb2cpO2NvbnN0e3Jlc3VsdDpm'@; put 'fT1YO2YmJiJzdHJpbmciPT10eXBlb2YgZiYmZi50cmltKCkmJihYLnJlc3VsdD0oMCxTLmdldFZhbGlkSnNvbikoZikpLHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KFgsVSxWLmRlYnVnKTtjb25zdCBiPSgwLFMuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKFgsWSk7'@; put 'a2UoYil9KSkuY2F0Y2goWD0+eSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7WCBpbnN0YW5jZW9mIHYuSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChYLFUsVi5kZWJ1ZykscWUobmV3IHYuRXJyb3JSZXNwb25zZShYPy5tZXNzYWdl'@; put 'LFgpKSksWCBpbnN0YW5jZW9mIHYuTG9naW5SZXF1aXJlZEVycm9yPyhOfHxxZShuZXcgdi5FcnJvclJlc3BvbnNlKCJSZXF1ZXN0IGlzIG5vdCBhdXRoZW50aWNhdGVkLiBNYWtlIHN1cmUgLmVudiBmaWxlIGV4aXN0cyB3aXRoIHZhbGlkIGNyZWRlbnRpYWxzLiIsWCkpLHRoaXMuYXBwZW5k'@; put 'V2FpdGluZ1JlcXVlc3QoKCk9PnRoaXMuZXhlY3V0ZShVLEgsVixOLHosWSkudGhlbihmPT57a2UoZil9LGY9PntxZShmKX0pKSxGJiYoeWllbGQgRigpKSk6cWUobmV3IHYuRXJyb3JSZXNwb25zZShYPy5tZXNzYWdlLFgpKX0pKX0pfSl9fX0sOTgwNjcoZmUsaixoKXsidXNlIHN0cmljdCI7'@; put 'dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFUsSCxWLE4pe3JldHVybiBuZXcoVnx8KFY9UHJvbWlzZSkpKGZ1bmN0aW9uKFksRil7ZnVuY3Rpb24gVyhtZSl7dHJ5e3JlKE4ubmV4dChtZSkpfWNhdGNoKENlKXtGKENlKX19ZnVuY3Rpb24gcShtZSl7dHJ5e3JlKE4udGhy'@; put 'b3cobWUpKX1jYXRjaChDZSl7RihDZSl9fWZ1bmN0aW9uIHJlKG1lKXttZS5kb25lP1kobWUudmFsdWUpOmZ1bmN0aW9uIHooWSl7cmV0dXJuIFkgaW5zdGFuY2VvZiBWP1k6bmV3IFYoZnVuY3Rpb24oRil7RihZKX0pfShtZS52YWx1ZSkudGhlbihXLHEpfXJlKChOPU4uYXBwbHkoVSxIfHxb'@; put 'XSkpLm5leHQoKSl9KX0sYz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oVSl7cmV0dXJuIFUmJlUuX19lc01vZHVsZT9VOntkZWZhdWx0OlV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5XZWJKb2JFeGVjdXRvcj12b2lk'@; put 'IDA7Y29uc3Qgcz1jKGgoNTE4OTQpKSxBPWgoMzYzMSksdj1oKDE3Mzg4KSxDPWgoNDc2NzMpLHc9aCgxMDA5MyksUz1oKDI5MjY2KSxMPWgoOTExMDEpO2Z1bmN0aW9uIHgoVSl7KDAsUy5pc05vZGUpKCk/VS5hcHBlbmQoIl9zYXNqc19ub29wIiwiIix7ZmlsZW5hbWU6Il9zYXNqc19ub29w'@; put 'LnR4dCIsY29udGVudFR5cGU6InRleHQvcGxhaW4ifSk6VS5hcHBlbmQoIl9zYXNqc19ub29wIixuZXcgQmxvYihbIiJdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pLCJfc2FzanNfbm9vcC50eHQiKX1qLldlYkpvYkV4ZWN1dG9yPWNsYXNzIFIgZXh0ZW5kcyBMLkJhc2VKb2JFeGVjdXRvcntjb25z'@; put 'dHJ1Y3RvcihILFYsTix6LFkpe3N1cGVyKEgsViksdGhpcy5qb2JzUGF0aD1OLHRoaXMucmVxdWVzdENsaWVudD16LHRoaXMuc2FzVml5YUFwaUNsaWVudD1ZfWV4ZWN1dGUoSCxWLE4seixZLEY9W10pe3ZhciBXO3JldHVybiB5KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25z'@; put 'dCBxPXoscmU9KDAsUy5pc1JlbGF0aXZlUGF0aCkoSCkmJk4uYXBwTG9jP04uYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrSC5yZXBsYWNlKC9eXC8vLCIiKTpIO2xldCBtZT1gJHtOLnNlcnZlclVybH0ke3RoaXMuam9ic1BhdGh9Lz8keyJfcHJvZ3JhbT0iK3JlfWA7aWYoTi5zZXJ2ZXJU'@; put 'eXBlPT09QS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpe2xldCBmO3RyeXtmPXlpZWxkIHRoaXMuZ2V0Sm9iVXJpKEgpfWNhdGNoKGIpe3JldHVybiBuZXcgUHJvbWlzZSgoayxNKT0+eSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7YiBpbnN0YW5jZW9mIHYuTG9naW5SZXF1aXJlZEVycm9y'@; put 'Pyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0KCgpPT50aGlzLmV4ZWN1dGUoSCxWLE4seixZLEYpLnRoZW4oQj0+e2soQil9LEI9PntNKEIpfSkpLHEmJih5aWVsZCBxKCkpKTpNKG5ldyB2LkVycm9yUmVzcG9uc2UoYj8ubWVzc2FnZSxiKSl9KSl9bWUrPWYubGVuZ3RoPjA/IiZfam9iPSIr'@; put 'ZjoiIixmLmxlbmd0aD4wJiYobWUrPSImX2pvYj0iK2YsbWU9bWUucmVwbGFjZSgiX3Byb2dyYW09IiwiX19wcm9ncmFtPSIpKSxtZSs9bnVsbCE9PShXPU4uY29udGV4dE5hbWUpJiZ2b2lkIDAhPT1XJiZXLnRyaW0oKT9gJl9jb250ZXh0bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChOLmNv'@; put 'bnRleHROYW1lKX1gOiIiLCEwPT09Ti5ydW5Bc1Rhc2smJihtZSs9IiZfZXhlY3V0aW9uVGFza3M9dHJ1ZSIpfWxldCBDZT1PYmplY3QuYXNzaWduKHt9LHRoaXMuZ2V0UmVxdWVzdFBhcmFtcyhOKSksSWU9KDAsUy5nZXRGb3JtRGF0YSkoKTtjb25zdCBrZT0hMD09PU4ucnVuQXNUYXNrO2lm'@; put 'KGtlJiZOLmRlYnVnJiZOLnNlcnZlclR5cGU9PT1BLlNlcnZlclR5cGUuU2FzVml5YSYmWyJfZGVidWciLCJfb21pdFNlc3Npb25SZXN1bHRzIl0uZm9yRWFjaChiPT57dm9pZCAwIT09Q2VbYl0mJihtZSs9YCYke2J9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KENlW2JdKX1gLGRlbGV0ZSBDZVti'@; put 'XSl9KSxWKXtjb25zdCBmPUpTT04uc3RyaW5naWZ5KFYpO2lmKE4uc2VydmVyVHlwZT09PUEuU2VydmVyVHlwZS5TYXM5fHxmLmxlbmd0aD41ZTV8fGYuaW5jbHVkZXMoIjsiKSl0cnl7SWU9KDAsQy5nZW5lcmF0ZUZpbGVVcGxvYWRGb3JtKShJZSxWKX1jYXRjaChiKXtyZXR1cm4gUHJvbWlz'@; put 'ZS5yZWplY3QobmV3IHYuRXJyb3JSZXNwb25zZShiPy5tZXNzYWdlLGIpKX1lbHNlIHRyeXtjb25zdHtmb3JtRGF0YTpiLHJlcXVlc3RQYXJhbXM6a309KDAsdy5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9ybSkoSWUsVik7SWU9YixDZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sQ2Up'@; put 'LGspLE4uc2VydmVyVHlwZT09PUEuU2VydmVyVHlwZS5TYXNWaXlhJiZrZSYmeChJZSl9Y2F0Y2goYil7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyB2LkVycm9yUmVzcG9uc2UoYj8ubWVzc2FnZSxiKSl9fWVsc2UgTi5zZXJ2ZXJUeXBlPT09QS5TZXJ2ZXJUeXBlLlNhc1ZpeWEmJmtlJiZ4'@; put 'KEllKTtmb3IoY29uc3QgZiBpbiBDZSlDZS5oYXNPd25Qcm9wZXJ0eShmKSYmSWUuYXBwZW5kKGYsQ2VbZl0pO2NvbnN0IHFlPUllIGluc3RhbmNlb2Ygcy5kZWZhdWx0JiZ0eXBlb2YgRm9ybURhdGE+InUiP2BtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke0llLmdldEhlYWRlcnMo'@; put 'KVsiY29udGVudC10eXBlIl19YDoibXVsdGlwYXJ0L2Zvcm0tZGF0YSI7cmV0dXJuIG5ldyBQcm9taXNlKChmLGIpPT57dGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QobWUsSWUsWT8uYWNjZXNzX3Rva2VuLHFlKS50aGVuKGs9PnkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMu'@; put 'cmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KGssSCxOLmRlYnVnKTtsZXQgTT1rLnJlc3VsdDtpZihOLmRlYnVnKXN3aXRjaCh0aGlzLnNlcnZlclR5cGUpe2Nhc2UgQS5TZXJ2ZXJUeXBlLlNhc1ZpeWE6TT1udWxsPT09Ti51c2VDb21wdXRlQXBpJiYhMD09PU4ucnVuQXNUYXNrP3lpZWxk'@; put 'KDAsUy5wYXJzZVNhc1ZpeWFMb2dEZWJ1Z1Jlc3BvbnNlKShrLnJlc3VsdCk6eWllbGQoMCxTLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2UpKGsucmVzdWx0LHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNlcnZlclVybCk7YnJlYWs7Y2FzZSBBLlNlcnZlclR5cGUuU2FzOTpNPSJzdHJpbmci'@; put 'PT10eXBlb2Ygay5yZXN1bHQ/KDAsUy5wYXJzZVdlYm91dFJlc3BvbnNlKShrLnJlc3VsdCxtZSk6ay5yZXN1bHR9Y29uc3QgQj0oMCxTLmFwcGVuZEV4dHJhUmVzcG9uc2VBdHRyaWJ1dGVzKSh7cmVzdWx0Ok0sbG9nOmsubG9nfSxGKTtmKEIpfSkpLmNhdGNoKGs9PnkodGhpcyx2b2lkIDAs'@; put 'dm9pZCAwLGZ1bmN0aW9uKigpe2sgaW5zdGFuY2VvZiB2LkpvYkV4ZWN1dGlvbkVycm9yJiYodGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoayxILE4uZGVidWcpLGIobmV3IHYuRXJyb3JSZXNwb25zZShrPy5tZXNzYWdlLGspKSksayBpbnN0YW5jZW9mIHYuTG9naW5SZXF1aXJl'@; put 'ZEVycm9yPyh6fHxiKG5ldyB2LkVycm9yUmVzcG9uc2UoIlJlcXVlc3QgaXMgbm90IGF1dGhlbnRpY2F0ZWQuIE1ha2Ugc3VyZSAuZW52IGZpbGUgZXhpc3RzIHdpdGggdmFsaWQgY3JlZGVudGlhbHMuIixrKSksdGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdCgoKT0+dGhpcy5leGVjdXRlKEgs'@; put 'VixOLHosWSxGKS50aGVuKE09PntmKE0pfSxNPT57YihNKX0pKSxxJiYoeWllbGQgcSgpKSk6YihuZXcgdi5FcnJvclJlc3BvbnNlKGs/Lm1lc3NhZ2UsaykpfSkpfSl9KX1nZXRSZXF1ZXN0UGFyYW1zKEgpe2NvbnN0IFY9c3VwZXIuZ2V0UmVxdWVzdFBhcmFtcyhIKTtyZXR1cm4gSC5kZWJ1'@; put 'ZyYmSC5zZXJ2ZXJUeXBlPT09QS5TZXJ2ZXJUeXBlLlNhc1ZpeWEmJiEwPT09SC5ydW5Bc1Rhc2smJihWLl9kZWJ1Zz0xMjgsZGVsZXRlIFYuX29taXR0ZXh0bG9nKSxWfWdldEpvYlVyaShIKXtyZXR1cm4geSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoIXRoaXMuc2FzVml5'@; put 'YUFwaUNsaWVudClyZXR1cm4iIjtsZXQgTix6LFY9IiI7aWYoKDAsUy5pc1JlbGF0aXZlUGF0aCkoSCkpe2NvbnN0IEY9SC5zcGxpdCgiLyIpO049Ri5sZW5ndGg+MT9GWzBdOiIiLHo9Ri5sZW5ndGg+MT9GWzFdOiIifWVsc2V7Y29uc3QgRj1ILnNwbGl0KCIvIik7ej1GLnBvcCgpfHwiIixO'@; put 'PUYuam9pbigiLyIpfWlmKCF6KXRocm93IG5ldyBFcnJvcigiSm9iIG5hbWUgaXMgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO2NvbnN0IFk9eWllbGQgdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldEpvYnNJbkZvbGRlcihOKTtpZihZKXtjb25zdCBGPVkuZmluZChXPT5XLm5hbWU9PT16'@; put 'JiYiam9iRGVmaW5pdGlvbiI9PT1XLmNvbnRlbnRUeXBlKTtGJiYoVj1GLnVyaSl9cmV0dXJuIFZ9KX19fSw2MTM5MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24ocyxBLHYsQyl7dm9pZCAwPT09'@; put 'QyYmKEM9dik7dmFyIHc9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBLHYpOyghd3x8KCJnZXQiaW4gdz8hQS5fX2VzTW9kdWxlOncud3JpdGFibGV8fHcuY29uZmlndXJhYmxlKSkmJih3PXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBBW3ZdfX0pLE9iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShzLEMsdyl9OmZ1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09PUMmJihDPXYpLHNbQ109QVt2XX0pLGM9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKHMsQSl7Zm9yKHZhciB2IGluIHMpImRlZmF1bHQiIT09diYmIU9iamVjdC5wcm90b3R5cGUuaGFz'@; put 'T3duUHJvcGVydHkuY2FsbChBLHYpJiZ5KEEscyx2KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGMoaCgxNDEyNiksaiksYyhoKDEzODcxKSxqKSxjKGgoOTExMzEpLGopLGMoaCg5MTEwMSksaiksYyhoKDU0OTQxKSxqKSxjKGgoOTgwNjcpLGop'@; put 'LGMoaCgyODk5NSksail9LDI4ODE2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYpLGM9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFcscSxyZSxtZSl7dm9pZCAwPT09bWUmJihtZT1yZSk7dmFyIENlPU9iamVjdC5nZXRPd25Q'@; put 'cm9wZXJ0eURlc2NyaXB0b3IocSxyZSk7KCFDZXx8KCJnZXQiaW4gQ2U/IXEuX19lc01vZHVsZTpDZS53cml0YWJsZXx8Q2UuY29uZmlndXJhYmxlKSkmJihDZT17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcVtyZV19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcsbWUs'@; put 'Q2UpfTpmdW5jdGlvbihXLHEscmUsbWUpe3ZvaWQgMD09PW1lJiYobWU9cmUpLFdbbWVdPXFbcmVdfSkscz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oVyxxKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoVywiZGVmYXVsdCIse2VudW1lcmFi'@; put 'bGU6ITAsdmFsdWU6cX0pfTpmdW5jdGlvbihXLHEpe1cuZGVmYXVsdD1xfSksQT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oVyl7aWYoVyYmVy5fX2VzTW9kdWxlKXJldHVybiBXO3ZhciBxPXt9O2lmKG51bGwhPVcpZm9yKHZhciByZSBpbiBXKSJkZWZhdWx0IiE9PXJlJiZP'@; put 'YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxyZSkmJmMocSxXLHJlKTtyZXR1cm4gcyhxLFcpLHF9LHY9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFcscSxyZSxtZSl7cmV0dXJuIG5ldyhyZXx8KHJlPVByb21pc2UpKShmdW5jdGlvbihJZSxrZSl7ZnVuY3Rp'@; put 'b24gcWUoYil7dHJ5e2YobWUubmV4dChiKSl9Y2F0Y2goayl7a2Uoayl9fWZ1bmN0aW9uIFgoYil7dHJ5e2YobWUudGhyb3coYikpfWNhdGNoKGspe2tlKGspfX1mdW5jdGlvbiBmKGIpe2IuZG9uZT9JZShiLnZhbHVlKTpmdW5jdGlvbiBDZShJZSl7cmV0dXJuIEllIGluc3RhbmNlb2YgcmU/'@; put 'SWU6bmV3IHJlKGZ1bmN0aW9uKGtlKXtrZShJZSl9KX0oYi52YWx1ZSkudGhlbihxZSxYKX1mKChtZT1tZS5hcHBseShXLHF8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai50aHJvd0lmRXJyb3I9ai5SZXF1ZXN0Q2xp'@; put 'ZW50PXZvaWQgMDtjb25zdCBDPUEoaCg4OTI1MSkpLHc9aCg0ODc5KSxTPWgoMTczODgpLEw9aCg2NzY0MCksUj1oKDYzNDApLHg9aCg5NDQ2MCksVT1oKDI5MjY2KSxIPWgoMjQwMDEpLFY9aCg0MDUzNyk7ai5SZXF1ZXN0Q2xpZW50PWNsYXNzIHp7Y29uc3RydWN0b3IocSxyZSxtZSxDZSl7'@; put 'dGhpcy5iYXNlVXJsPXEsdGhpcy5yZXF1ZXN0cz1bXSx0aGlzLnJlcXVlc3RzTGltaXQ9MTAsdGhpcy52ZXJib3NlTW9kZT0hMSx0aGlzLmNzcmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn0sdGhpcy5pc1JlY292ZXJpbmdGcm9tTmV0d29ya0Vycm9yPSExLHRoaXMuZ2V0UmVxdWVz'@; put 'dHM9KCk9PnRoaXMucmVxdWVzdHMsdGhpcy5jbGVhclJlcXVlc3RzPSgpPT57dGhpcy5yZXF1ZXN0cz1bXX0sdGhpcy5hdXRob3JpemU9SWU9PnYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBrZT1udWxsO2NvbnN0IHFlPXt9LFg9SWUuc3BsaXQoIjxib2R5PiIpWzFdLnNw'@; put 'bGl0KCI8L2JvZHk+IilbMF0sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmLmlubmVySFRNTD1YO2NvbnN0IGI9Zi5xdWVyeVNlbGVjdG9yKCIjYXBwbGljYXRpb25fYXV0aG9yaXphdGlvbiIpO2tlPWI/dGhpcy5iYXNlVXJsK2IuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTpudWxs'@; put 'O2NvbnN0IGs9Yj8ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKTtmb3IoY29uc3QgSyBvZiBrKSJ1c2VyX29hdXRoX2FwcHJvdmFsIj09PUsubmFtZSYmKEsudmFsdWU9InRydWUiKSxxZVtLLm5hbWVdPUsudmFsdWU7Y29uc3QgTT1PYmplY3Qua2V5cyhxZSkuZmluZChLPT5LPy50b0xvd2Vy'@; put 'Q2FzZSgpLmluY2x1ZGVzKCJjc3JmIikpO00mJih0aGlzLmNzcmZUb2tlbi52YWx1ZT1xZVtNXSx0aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lPXRoaXMuY3NyZlRva2VuLmhlYWRlck5hbWV8fCJ4LWNzcmYtdG9rZW4iKTtjb25zdCBCPW5ldyBGb3JtRGF0YTtmb3IoY29uc3QgSyBpbiBxZSlx'@; put 'ZS5oYXNPd25Qcm9wZXJ0eShLKSYmQi5hcHBlbmQoSyxxZVtLXSk7aWYoIWtlKXRocm93IG5ldyBFcnJvcigiQXV0aCBGb3JtIFVSTCBpcyBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4geWllbGQgdGhpcy5odHRwQ2xpZW50LnBvc3Qoa2UsQix7cmVzcG9uc2VUeXBlOiJ0ZXh0IixoZWFk'@; put 'ZXJzOntBY2NlcHQ6IiovKiIsIkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifX0pLnRoZW4oSz0+Sy5kYXRhKS5jYXRjaChLPT57KHR5cGVvZiB5PCJ1IiYmeS5sb2dnZXJ8fGNvbnNvbGUpLmVycm9yKEspfSl9KSx0aGlzLnByZXR0aWZ5U3RyaW5nPUllPT4oMCxWLmluc3BlY3QpKEllLHtj'@; put 'b2xvcnM6ImJsZWFjaGVkIiE9PXRoaXMudmVyYm9zZU1vZGV9KSx0aGlzLnBhcnNlSW50ZXJjZXB0ZWRCb2R5PUllPT57aWYoIUllKXJldHVybiIiO2xldCBrZTtpZigic3RyaW5nIj09dHlwZW9mIEllKXRyeXtrZT1KU09OLnBhcnNlKEllKX1jYXRjaHtrZT1JZX1lbHNlIGtlPUllO2NvbnN0'@; put 'IHFlPXRoaXMucHJldHRpZnlTdHJpbmcoa2UpLnNwbGl0KCJcbiIpO3JldHVybiBxZS5sZW5ndGg+NTEmJihxZS5zcGxpY2UoNTApLHFlLnB1c2goIi4uLiIpKSxxZS5qb2luKCJcbiIpfSx0aGlzLmhhbmRsZUF4aW9zUmVzcG9uc2U9SWU9Pnt2YXIga2UscWUsWCxmO2NvbnN0e3N0YXR1czpi'@; put 'LGNvbmZpZzprLHJlcXVlc3Q6TSxkYXRhOkJ9PUllLEs9bnVsbCE9PShrZT1NPy5faGVhZGVyKSYmdm9pZCAwIT09a2U/a2U6Ik5vdCBwcm92aWRlZFxuIixHPW51bGwhPT0oWD1udWxsPT09KHFlPU0/LnJlcyl8fHZvaWQgMD09PXFlP3ZvaWQgMDpxZS5yYXdIZWFkZXJzKSYmdm9pZCAwIT09'@; put 'WD9YOlsiTm90IHByb3ZpZGVkIl0sRD10aGlzLmZvcm1hdEhlYWRlcnMoRykscD10aGlzLnBhcnNlSW50ZXJjZXB0ZWRCb2R5KEIpO3JldHVybiBudWxsPT09KGY9eS5sb2dnZXIpfHx2b2lkIDA9PT1mfHxmLmluZm8oYEhUVFAgUmVxdWVzdCAoZmlyc3QgNTAgbGluZXMpOlxuJHtLfSR7dGhp'@; put 'cy5wYXJzZUludGVyY2VwdGVkQm9keShrLmRhdGEpfVxuXG5IVFRQIFJlc3BvbnNlIENvZGU6ICR7dGhpcy5wcmV0dGlmeVN0cmluZyhiKX1cblxuSFRUUCBSZXNwb25zZSAoZmlyc3QgNTAgbGluZXMpOlxuJHtEfSR7cD9gXG5cbiR7cH1gOiIifVxuYCksSWV9LHRoaXMuaGFuZGxlQXhpb3NF'@; put 'cnJvcj1JZT0+e3ZhciBrZSxxZSxYLGYsYixrO2NvbnN0IE09Ik5vdCBwcm92aWRlZCIse3Jlc3BvbnNlOkIscmVxdWVzdDpLLGNvbmZpZzpHfT1JZTtsZXQgRD17X2hlYWRlcjpgJHtNfVxuYCxyZXM6e3Jhd0hlYWRlcnM6W01dfX07SyYmKEQ9e19oZWFkZXI6bnVsbCE9PShYPW51bGwhPT0o'@; put 'a2U9Sy5faGVhZGVyKSYmdm9pZCAwIT09a2U/a2U6bnVsbD09PShxZT1LLl9jdXJyZW50UmVxdWVzdCl8fHZvaWQgMD09PXFlP3ZvaWQgMDpxZS5faGVhZGVyKSYmdm9pZCAwIT09WD9YOk0scmVzOntyYXdIZWFkZXJzOm51bGwhPT0oYj1udWxsPT09KGY9Sy5yZXMpfHx2b2lkIDA9PT1mP3Zv'@; put 'aWQgMDpmLnJhd0hlYWRlcnMpJiZ2b2lkIDAhPT1iP2I6W01dfX0pO2xldCBwPUJ8fHtzdGF0dXM6TSxyZXF1ZXN0OkQsY29uZmlnOkd8fHtkYXRhOk0saGVhZGVyczp7fX0sZGF0YTpNfTtjb25zdHtzdGF0dXM6SSxyZXF1ZXN0OnVlLGRhdGE6bmV9PXAse19oZWFkZXI6X2UscmVzOlBlfT11'@; put 'ZSxvdD10aGlzLmZvcm1hdEhlYWRlcnMoUGUucmF3SGVhZGVycyksbHQ9dGhpcy5wYXJzZUludGVyY2VwdGVkQm9keShuZSk7cmV0dXJuIG51bGw9PT0oaz15LmxvZ2dlcil8fHZvaWQgMD09PWt8fGsuaW5mbyhgSFRUUCBSZXF1ZXN0IChmaXJzdCA1MCBsaW5lcyk6XG4ke19lfSR7dGhpcy5w'@; put 'YXJzZUludGVyY2VwdGVkQm9keShHPy5kYXRhKX1cblxuSFRUUCBSZXNwb25zZSBDb2RlOiAke3RoaXMucHJldHRpZnlTdHJpbmcoSSl9XG5cbkhUVFAgUmVzcG9uc2UgKGZpcnN0IDUwIGxpbmVzKTpcbiR7b3R9JHtsdD9gXG5cbiR7bHR9YDoiIn1cbmApLEllfSx0aGlzLmZvcm1hdEhlYWRl'@; put 'cnM9SWU9PkllLnJlZHVjZSgoa2UscWUsWCk9PmtlKyhYJTI9PTA/YCR7MD09PVg/IiI6IlxuIn0ke3FlfWA6YDogJHtxZX1gKSwiIiksdGhpcy5zZXRWZXJib3NlTW9kZT1JZT0+e3RoaXMudmVyYm9zZU1vZGU9SWUsdGhpcy52ZXJib3NlTW9kZT90aGlzLmVuYWJsZVZlcmJvc2VNb2RlKCk6'@; put 'dGhpcy5kaXNhYmxlVmVyYm9zZU1vZGUoKX0sdGhpcy5lbmFibGVWZXJib3NlTW9kZT0oSWU9dGhpcy5oYW5kbGVBeGlvc1Jlc3BvbnNlLGtlPXRoaXMuaGFuZGxlQXhpb3NFcnJvcik9Pnt0aGlzLmh0dHBJbnRlcmNlcHRvcj10aGlzLmh0dHBDbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNl'@; put 'LnVzZShJZSxrZSl9LHRoaXMuZGlzYWJsZVZlcmJvc2VNb2RlPSgpPT57dGhpcy5odHRwSW50ZXJjZXB0b3ImJnRoaXMuaHR0cENsaWVudC5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZWplY3QodGhpcy5odHRwSW50ZXJjZXB0b3IpfSx0aGlzLmdldEhlYWRlcnM9KEllLGtlKT0+e2NvbnN0IHFl'@; put 'PXt9O3JldHVybiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiIT09a2UmJihxZVsiQ29udGVudC1UeXBlIl09a2UpLHFlLkFjY2VwdD0iYXBwbGljYXRpb24vanNvbiI9PT1rZT8iYXBwbGljYXRpb24vanNvbiI6IiovKiIsSWUmJihxZS5BdXRob3JpemF0aW9uPWBCZWFyZXIg'@; put 'JHtJZX1gKSx0aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lJiZ0aGlzLmNzcmZUb2tlbi52YWx1ZSYmKHFlW3RoaXMuY3NyZlRva2VuLmhlYWRlck5hbWVdPXRoaXMuY3NyZlRva2VuLnZhbHVlKSxxZX0sdGhpcy5wYXJzZUFuZFNldEZpbGVVcGxvYWRDc3JmVG9rZW49SWU9Pntjb25zdCBrZT10'@; put 'aGlzLnBhcnNlQ3NyZlRva2VuKEllKTtrZSYmKHRoaXMuZmlsZVVwbG9hZENzcmZUb2tlbj1rZSl9LHRoaXMucGFyc2VBbmRTZXRDc3JmVG9rZW49SWU9Pntjb25zdCBrZT10aGlzLnBhcnNlQ3NyZlRva2VuKEllKTtrZSYmKHRoaXMuY3NyZlRva2VuPWtlKX0sdGhpcy5wYXJzZUNzcmZUb2tl'@; put 'bj1JZT0+e3ZhciBrZTtjb25zdCBxZT1udWxsPT09KGtlPUllLmhlYWRlcnNbIngtY3NyZi1oZWFkZXIiXSl8fHZvaWQgMD09PWtlP3ZvaWQgMDprZS50b0xvd2VyQ2FzZSgpO2lmKHFlKXJldHVybntoZWFkZXJOYW1lOnFlLHZhbHVlOkllLmhlYWRlcnNbcWVdfHwiIn19LHRoaXMuaGFuZGxl'@; put 'RXJyb3I9KEllLGtlLHFlPSExKT0+dih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIFg7Y29uc3QgZj1JZS5yZXNwb25zZTtpZihJZSBpbnN0YW5jZW9mIFMuQXV0aG9yaXplRXJyb3Ipe2NvbnN0IGI9eWllbGQgdGhpcy5odHRwQ2xpZW50LmdldChJZS5jb25maXJtVXJsLHty'@; put 'ZXNwb25zZVR5cGU6InRleHQiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIixBY2NlcHQ6IiovKiJ9fSkuY2F0Y2goaz0+e3Rocm93KDAsUi5wcmVmaXhNZXNzYWdlKShrLCJFcnJvciB3aGlsZSBnZXR0aW5nIGVycm9yIGNvbmZpcm1VcmwuICIpfSk7cmV0dXJuKDAsdy5p'@; put 'c0F1dGhvcml6ZUZvcm1SZXF1aXJlZCkoYj8uZGF0YSkmJih5aWVsZCB0aGlzLmF1dGhvcml6ZShiLmRhdGEpLmNhdGNoKGs9Pnt0aHJvdygwLFIucHJlZml4TWVzc2FnZSkoaywiRXJyb3Igd2hpbGUgYXV0aG9yaXppbmcgcmVxdWVzdC4gIil9KSkseWllbGQga2UoKS5jYXRjaChrPT57dGhy'@; put 'b3coMCxSLnByZWZpeE1lc3NhZ2UpKGssIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBjYWxsYmFjayBpbiBoYW5kbGVFcnJvci4gIil9KX1pZihJZSBpbnN0YW5jZW9mIFMuTG9naW5SZXF1aXJlZEVycm9yKXRocm93IHRoaXMuY2xlYXJDc3JmVG9rZW5zKCksSWU7aWYoSWUgaW5zdGFuY2VvZiBI'@; put 'LkludmFsaWRTQVNqc0NzcmZFcnJvcilyZXR1cm4geWllbGQgdGhpcy5odHRwQ2xpZW50LmdldCgiLyIse3dpdGhYU1JGVG9rZW46ITB9KS50aGVuKGI9Pnt2YXIgaztjb25zdCBNPW51bGw9PT0oaz0vPHNjcmlwdD5kb2N1bWVudC5jb29raWUgPSAnKFhTUkYtVE9LRU49Lio7IE1heC1BZ2U9'@; put 'ODY0MDA7IFNhbWVTaXRlPVN0cmljdDsgUGF0aD1cLzspJzxcL3NjcmlwdD4vLmV4ZWMoYi5kYXRhKSl8fHZvaWQgMD09PWs/dm9pZCAwOmtbMV07TSYmKGRvY3VtZW50LmNvb2tpZT1NKX0pLmNhdGNoKGI9Pnt0aHJvdygwLFIucHJlZml4TWVzc2FnZSkoYiwiRXJyb3Igd2hpbGUgcmUtZmV0'@; put 'Y2hpbmcgQ1NSRiB0b2tlbi4iKX0pLHlpZWxkIGtlKCkuY2F0Y2goYj0+e3Rocm93KDAsUi5wcmVmaXhNZXNzYWdlKShiLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY2FsbGJhY2sgaW4gaGFuZGxlRXJyb3IuICIpfSk7aWYoNDAzPT09Zj8uc3RhdHVzfHw0NDk9PT1mPy5zdGF0dXMpe2lmKHRo'@; put 'aXMucGFyc2VBbmRTZXRDc3JmVG9rZW4oZiksdGhpcy5jc3JmVG9rZW4uaGVhZGVyTmFtZSYmdGhpcy5jc3JmVG9rZW4udmFsdWUpcmV0dXJuIHlpZWxkIGtlKCkuY2F0Y2goYj0+e3Rocm93KDAsUi5wcmVmaXhNZXNzYWdlKShiLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY2FsbGJhY2sgaW4g'@; put 'aGFuZGxlRXJyb3IuICIpfSk7dGhyb3cgSWV9aWYoNDA0PT09Zj8uc3RhdHVzKXRocm93IG5ldyBTLk5vdEZvdW5kRXJyb3IoZi5jb25maWcudXJsKTtpZig1MDIhPT1mPy5zdGF0dXMpe2lmKEllLmlzQXhpb3NFcnJvciYmIlVOQUJMRV9UT19WRVJJRllfTEVBRl9TSUdOQVRVUkUiPT09SWUu'@; put 'Y29kZSl0aHJvdyBuZXcgUy5DZXJ0aWZpY2F0ZUVycm9yKEllLm1lc3NhZ2UpO2lmKEllLmlzQXhpb3NFcnJvciYmIWYmJiJFUlJfTkVUV09SSyI9PT1JZS5jb2RlJiYhdGhpcy5pc1JlY292ZXJpbmdGcm9tTmV0d29ya0Vycm9yKXt0aGlzLnJlc2V0SW5NZW1vcnlBdXRoU3RhdGUoKSx0aGlz'@; put 'LmlzUmVjb3ZlcmluZ0Zyb21OZXR3b3JrRXJyb3I9ITA7dHJ5e2NvbnN0IGI9eWllbGQgdGhpcy5odHRwQ2xpZW50LmdldCgiLyIse3dpdGhYU1JGVG9rZW46ITB9KS5jYXRjaChrPT5rLnJlc3BvbnNlKTtpZihiPy5kYXRhKXtjb25zdCBrPW51bGw9PT0oWD0vPHNjcmlwdD5kb2N1bWVudC5j'@; put 'b29raWUgPSAnKFhTUkYtVE9LRU49Lio7IE1heC1BZ2U9ODY0MDA7IFNhbWVTaXRlPVN0cmljdDsgUGF0aD1cLzspJzxcL3NjcmlwdD4vLmV4ZWMoYi5kYXRhKSl8fHZvaWQgMD09PVg/dm9pZCAwOlhbMV07ayYmdHlwZW9mIGRvY3VtZW50PCJ1IiYmKGRvY3VtZW50LmNvb2tpZT1rKSx0aGlz'@; put 'LnBhcnNlQW5kU2V0Q3NyZlRva2VuKGIpfXJldHVybiB5aWVsZCBrZSgpfWNhdGNoe3Rocm93IG5ldyBTLkxvZ2luUmVxdWlyZWRFcnJvcn1maW5hbGx5e3RoaXMuaXNSZWNvdmVyaW5nRnJvbU5ldHdvcmtFcnJvcj0hMX19dGhyb3cgSWUubWVzc2FnZT9JZTooMCxSLnByZWZpeE1lc3NhZ2Up'@; put 'KEllLCJFcnJvciB3aGlsZSBoYW5kbGluZyBlcnJvci4gIil9aWYocWUpdGhyb3cgbmV3IFMuSW50ZXJuYWxTZXJ2ZXJFcnJvcn0pLHRoaXMuY3JlYXRlSHR0cENsaWVudChxLHJlKSxtZSYmKHRoaXMucmVxdWVzdHNMaW1pdD1tZSksQ2UmJih0aGlzLnNldFZlcmJvc2VNb2RlKENlKSx0aGlz'@; put 'LmVuYWJsZVZlcmJvc2VNb2RlKCkpfXNldENvbmZpZyhxLHJlKXt0aGlzLmNyZWF0ZUh0dHBDbGllbnQocSxyZSl9c2F2ZUxvY2FsU3RvcmFnZVRva2VuKHEscmUpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJhY2Nlc3NUb2tlbiIscSksbG9jYWxTdG9yYWdlLnNldEl0ZW0oInJlZnJlc2hUb2tl'@; put 'biIscmUpfWdldENzcmZUb2tlbihxPSJnZW5lcmFsIil7cmV0dXJuImZpbGUiPT09cT90aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW46dGhpcy5jc3JmVG9rZW59Y2xlYXJDc3JmVG9rZW5zKCl7dGhpcy5jc3JmVG9rZW49e2hlYWRlck5hbWU6IiIsdmFsdWU6IiJ9LHRoaXMuZmlsZVVwbG9hZENz'@; put 'cmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn19Y2xlYXJMb2NhbFN0b3JhZ2VUb2tlbnMoKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiYWNjZXNzVG9rZW4iLCIiKSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgicmVmcmVzaFRva2VuIiwiIil9cmVzZXRJbk1lbW9yeUF1dGhTdGF0ZSgpe3Ro'@; put 'aXMuY2xlYXJDc3JmVG9rZW5zKCksdHlwZW9mIGxvY2FsU3RvcmFnZTwidSImJnRoaXMuY2xlYXJMb2NhbFN0b3JhZ2VUb2tlbnMoKSx0eXBlb2YgZG9jdW1lbnQ8InUiJiZ0aGlzLmNsZWFyQWxsQ29va2llcygpfWNsZWFyQWxsQ29va2llcygpe2NvbnN0IHE9ZG9jdW1lbnQuY29va2llLnNw'@; put 'bGl0KCI7Iik7Zm9yKGNvbnN0IHJlIG9mIHEpe2NvbnN0IG1lPXJlLnNwbGl0KCI9IilbMF0udHJpbSgpO21lJiYoZG9jdW1lbnQuY29va2llPWAke21lfT07IE1heC1BZ2U9MDsgUGF0aD0vO2ApfX1nZXRCYXNlVXJsKCl7cmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5iYXNlVVJM'@; put 'fHwiIn1hcHBlbmRSZXF1ZXN0KHEscmUsbWUpe2xldCBDZT0iIixJZT0iIixrZT1udWxsO21lJiYocT8ubG9nPyhDZT0oMCxVLnBhcnNlU291cmNlQ29kZSkocS5sb2cpLEllPSgwLFUucGFyc2VHZW5lcmF0ZWRDb2RlKShxLmxvZyksa2U9cT8ucmVzdWx0P3EucmVzdWx0LldPUks6cS5sb2cp'@; put 'OnE/LnJlc3VsdCYmKCJzdHJpbmciPT10eXBlb2YgcS5yZXN1bHQmJihDZT0oMCxVLnBhcnNlU291cmNlQ29kZSkocS5yZXN1bHQpLEllPSgwLFUucGFyc2VHZW5lcmF0ZWRDb2RlKShxLnJlc3VsdCkpLGtlPXEucmVzdWx0LldPUkspKTtjb25zdCBxZT0ic3RyaW5nIj09dHlwZW9mIHE/LnJl'@; put 'c3VsdD9xPy5yZXN1bHQ6SlNPTi5zdHJpbmdpZnkocT8ucmVzdWx0LG51bGwsMik7dGhpcy5yZXF1ZXN0cy5wdXNoKHtsb2dGaWxlOnE/LmxvZ3x8cWV8fHEsc2VydmljZUxpbms6cmUsdGltZXN0YW1wOm5ldyBEYXRlLHNvdXJjZUNvZGU6Q2UsZ2VuZXJhdGVkQ29kZTpJZSxTQVNXT1JLOmtl'@; put 'fSksdGhpcy5yZXF1ZXN0cy5sZW5ndGg+dGhpcy5yZXF1ZXN0c0xpbWl0JiZ0aGlzLnJlcXVlc3RzLnNwbGljZSgwLDEpfWdldChxLHJlLG1lPSJhcHBsaWNhdGlvbi9qc29uIixDZT17fSxJZT0hMSl7cmV0dXJuIHYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHFlPXto'@; put 'ZWFkZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmdldEhlYWRlcnMocmUsbWUpKSxDZSkscmVzcG9uc2VUeXBlOiJ0ZXh0L3BsYWluIj09PW1lPyJ0ZXh0IjoianNvbiIsd2l0aFhTUkZUb2tlbjohMH07cmV0dXJuInRleHQvcGxhaW4iPT09bWUmJihxZS50cmFuc2Zv'@; put 'cm1SZXNwb25zZT12b2lkIDApLHRoaXMuaHR0cENsaWVudC5nZXQocSxxZSkudGhlbihYPT4oKDAsai50aHJvd0lmRXJyb3IpKFgpLHRoaXMucGFyc2VSZXNwb25zZShYKSkpLmNhdGNoKFg9PnYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLmhhbmRs'@; put 'ZUVycm9yKFgsKCk9PnRoaXMuZ2V0KHEscmUsbWUsQ2UpLmNhdGNoKGY9Pnt0aHJvdygwLFIucHJlZml4TWVzc2FnZSkoZiwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGhhbmRsZSBlcnJvciBjYWxsYmFjay4gIil9KSxJZSl9KSl9KX1wb3N0KHEscmUsbWUsQ2U9ImFwcGxpY2F0aW9uL2pzb24i'@; put 'LEllPXt9LGtlPXt9KXtyZXR1cm4gdih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgcWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuZ2V0SGVhZGVycyhtZSxDZSkpLEllKTtyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QocSxyZSxPYmplY3QuYXNz'@; put 'aWduKHtoZWFkZXJzOnFlLHdpdGhYU1JGVG9rZW46ITB9LGtlKSkudGhlbihYPT4oKDAsai50aHJvd0lmRXJyb3IpKFgpLHRoaXMucGFyc2VSZXNwb25zZShYKSkpLmNhdGNoKFg9PnYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLmhhbmRsZUVycm9y'@; put 'KFgsKCk9PnRoaXMucG9zdChxLHJlLG1lLENlLEllKSl9KSl9KX1wdXQocSxyZSxtZSxDZT17fSl7cmV0dXJuIHYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IEllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmdldEhlYWRlcnMobWUsImFwcGxpY2F0'@; put 'aW9uL2pzb24iKSksQ2UpO3JldHVybiB0aGlzLmh0dHBDbGllbnQucHV0KHEscmUse2hlYWRlcnM6SWUsd2l0aFhTUkZUb2tlbjohMH0pLnRoZW4oa2U9PigoMCxqLnRocm93SWZFcnJvcikoa2UpLHRoaXMucGFyc2VSZXNwb25zZShrZSkpKS5jYXRjaChrZT0+dih0aGlzLHZvaWQgMCx2b2lk'@; put 'IDAsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMuaGFuZGxlRXJyb3Ioa2UsKCk9PnRoaXMucHV0KHEscmUsbWUsQ2UpKX0pKX0pfWRlbGV0ZShxLHJlKXtyZXR1cm4gdih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgbWU9dGhpcy5nZXRIZWFkZXJzKHJlLCJhcHBs'@; put 'aWNhdGlvbi9qc29uIik7cmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUocSx7aGVhZGVyczptZSx3aXRoWFNSRlRva2VuOiEwfSkudGhlbihDZT0+KCgwLGoudGhyb3dJZkVycm9yKShDZSksdGhpcy5wYXJzZVJlc3BvbnNlKENlKSkpLmNhdGNoKENlPT52KHRoaXMsdm9pZCAwLHZvaWQg'@; put 'MCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5oYW5kbGVFcnJvcihDZSwoKT0+dGhpcy5kZWxldGUocSxyZSkpfSkpfSl9cGF0Y2gocSxyZT17fSxtZSxDZT17fSl7cmV0dXJuIHYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IEllPU9iamVjdC5hc3NpZ24oT2Jq'@; put 'ZWN0LmFzc2lnbih7fSx0aGlzLmdldEhlYWRlcnMobWUsImFwcGxpY2F0aW9uL2pzb24iKSksQ2UpO3JldHVybiB0aGlzLmh0dHBDbGllbnQucGF0Y2gocSxyZSx7aGVhZGVyczpJZSx3aXRoWFNSRlRva2VuOiEwfSkudGhlbihrZT0+KCgwLGoudGhyb3dJZkVycm9yKShrZSksdGhpcy5wYXJz'@; put 'ZVJlc3BvbnNlKGtlKSkpLmNhdGNoKGtlPT52KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQgdGhpcy5oYW5kbGVFcnJvcihrZSwoKT0+dGhpcy5wYXRjaChxLHJlLG1lKSl9KSl9KX11cGxvYWRGaWxlKHEscmUsbWUpe3ZhciBDZTtyZXR1cm4gdih0aGlzLHZv'@; put 'aWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgSWU9dGhpcy5nZXRIZWFkZXJzKG1lLCJhcHBsaWNhdGlvbi9qc29uIik7bnVsbCE9PShDZT10aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW4pJiZ2b2lkIDAhPT1DZSYmQ2UudmFsdWUmJihJZVt0aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW4uaGVh'@; put 'ZGVyTmFtZV09dGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuLnZhbHVlKTt0cnl7Y29uc3Qga2U9eWllbGQgdGhpcy5odHRwQ2xpZW50LnBvc3QocSxyZSx7aGVhZGVyczpJZSx0cmFuc2Zvcm1SZXF1ZXN0OnFlPT5xZX0pO3JldHVybntyZXN1bHQ6a2UuZGF0YSxldGFnOmtlLmhlYWRlcnMuZXRh'@; put 'Z319Y2F0Y2goa2Upe2NvbnN0IHFlPWtlLnJlc3BvbnNlO2lmKDQwMz09PXFlPy5zdGF0dXN8fDQ0OT09PXFlPy5zdGF0dXMpe2lmKHRoaXMucGFyc2VBbmRTZXRGaWxlVXBsb2FkQ3NyZlRva2VuKHFlKSx0aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW4pcmV0dXJuIHRoaXMudXBsb2FkRmlsZShx'@; put 'LHJlLG1lKTt0aHJvdyBrZX10aHJvdyBrZX19KX1wYXJzZVJlc3BvbnNlKHEpe2NvbnN0IHJlPXE/LmhlYWRlcnM/cS5oZWFkZXJzLmV0YWc6IiI7bGV0IG1lLENlPSExO3RyeXttZT0ic3RyaW5nIj09dHlwZW9mIHEuZGF0YT9KU09OLnBhcnNlKHEuZGF0YSk6cS5kYXRhfWNhdGNoe3RyeXtt'@; put 'ZT1KU09OLnBhcnNlKCgwLEwucGFyc2VXZWJvdXRSZXNwb25zZSkocS5kYXRhKSl9Y2F0Y2h7bWU9cS5kYXRhfUNlPSEwfWxldCBJZT17cmVzdWx0Om1lLGV0YWc6cmUsc3RhdHVzOnEuc3RhdHVzfTtyZXR1cm4gQ2UmJihJZS5sb2c9cS5kYXRhKSxJZX1jcmVhdGVIdHRwQ2xpZW50KHEscmUp'@; put 'e2NvbnN0IG1lPXJlP25ldyBDLkFnZW50KHJlKTp2b2lkIDA7dGhpcy5odHRwQ2xpZW50PSgwLFUuY3JlYXRlQXhpb3NJbnN0YW5jZSkocSxtZSksdGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLnZhbGlkYXRlU3RhdHVzPUNlPT5DZT49MjAwJiZDZTw9NDAxfX0sai50aHJvd0lmRXJyb3I9Vz0+'@; put 'e3ZhciBxLHJlLG1lLENlLEllLGtlLHFlO3N3aXRjaChXLnN0YXR1cyl7Y2FzZSA0MDA6aWYoIm9iamVjdCI9PXR5cGVvZiBXLmRhdGEmJiJpbnZhbGlkX2dyYW50Ij09PVcuZGF0YS5lcnJvcil0aHJvdyBuZXcgUy5Mb2dpblJlcXVpcmVkRXJyb3IoVy5kYXRhKTtpZigic3RyaW5nIj09dHlw'@; put 'ZW9mIFcuZGF0YSYmImludmFsaWQgY3NyZiB0b2tlbiEiPT09Vy5kYXRhLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IEguSW52YWxpZFNBU2pzQ3NyZkVycm9yO2JyZWFrO2Nhc2UgNDAxOnRocm93Im9iamVjdCI9PXR5cGVvZiBXLmRhdGE/bmV3IFMuTG9naW5SZXF1aXJlZEVycm9yKFcuZGF0'@; put 'YSk6bmV3IFMuTG9naW5SZXF1aXJlZEVycm9yfWlmKG51bGwhPT0ocmU9bnVsbD09PShxPVcuZGF0YSl8fHZvaWQgMD09PXE/dm9pZCAwOnEuZW50aXR5SUQpJiZ2b2lkIDAhPT1yZSYmcmUuaW5jbHVkZXMoImxvZ2luIikpdGhyb3cgbmV3IFMuTG9naW5SZXF1aXJlZEVycm9yO2lmKCJzdHJp'@; put 'bmciPT10eXBlb2YgVy5kYXRhJiYoMCx3LmlzQXV0aG9yaXplRm9ybVJlcXVpcmVkKShXLmRhdGEpKXRocm93IG5ldyBTLkF1dGhvcml6ZUVycm9yKCJBdXRob3JpemF0aW9uIHJlcXVpcmVkIixXLnJlcXVlc3QucmVzcG9uc2VVUkwpO2lmKCJzdHJpbmciPT10eXBlb2YgVy5kYXRhJiYoMCx3'@; put 'LmlzTG9nSW5SZXF1aXJlZCkoVy5kYXRhKSYmKG51bGw9PT0oQ2U9bnVsbD09PShtZT1XLmNvbmZpZyl8fHZvaWQgMD09PW1lP3ZvaWQgMDptZS51cmwpfHx2b2lkIDA9PT1DZXx8IUNlLmluY2x1ZGVzKCIvU0FTTG9nb24vbG9naW4iKSkpdGhyb3cgbmV3IFMuTG9naW5SZXF1aXJlZEVycm9y'@; put 'O2lmKG51bGwhPT0oSWU9Vy5kYXRhKSYmdm9pZCAwIT09SWUmJkllLmF1dGhfcmVxdWVzdCl0aHJvdyBuZXcgUy5BdXRob3JpemVFcnJvcihXLmRhdGEubWVzc2FnZSxXLnJlcXVlc3QucmVzcG9uc2VVUkwpO2lmKG51bGwhPT0ocWU9bnVsbD09PShrZT1XLmNvbmZpZyl8fHZvaWQgMD09PWtl'@; put 'P3ZvaWQgMDprZS51cmwpJiZ2b2lkIDAhPT1xZSYmcWUuaW5jbHVkZXMoInNhc0F1dGhFcnJvciIpKXRocm93IG5ldyB4LlNBUzlBdXRoRXJyb3I7Y29uc3QgWD1GKFcuZGF0YSk7aWYoWCl0aHJvdyBYfTtjb25zdCBGPVc9PntpZighVylyZXR1cm4gbnVsbDt0cnl7Y29uc3QgcT1KU09OLnBh'@; put 'cnNlKFc/LnJlcGxhY2UoL1tcblxyXS9nLCIgIikpO2lmKHEuZXJyb3JDb2RlJiZxLm1lc3NhZ2UpcmV0dXJuIG5ldyBTLkpvYkV4ZWN1dGlvbkVycm9yKHEuZXJyb3JDb2RlLHEubWVzc2FnZSxXPy5yZXBsYWNlKC9bXG5ccl0vZywiICIpKX1jYXRjaHt9dHJ5e2lmKFc/LmluY2x1ZGVzKCd7'@; put 'ImVycm9yQ29kZScpKXtjb25zdCByZT1XLnNwbGl0KCd7ImVycm9yQ29kZScpO2lmKHJlLmxlbmd0aD4xKXtjb25zdCBtZT0neyJlcnJvckNvZGUnK3JlWzFdLnNwbGl0KCcifScpWzBdKycifScsQ2U9SlNPTi5wYXJzZShtZS5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTtyZXR1cm4gbmV3IFMu'@; put 'Sm9iRXhlY3V0aW9uRXJyb3IoQ2UuZXJyb3JDb2RlLENlLm1lc3NhZ2UsVz8ucmVwbGFjZSgvW1xuXHJdL2csIlxuIikpfX19Y2F0Y2h7fXRyeXtpZihXPy5tYXRjaCgvc3RvcmVkIHByb2Nlc3Mgbm90IGZvdW5kOiAvaSkpe2NvbnN0IHJlPVcuc3BsaXQoL3N0b3JlZCBwcm9jZXNzIG5vdCBm'@; put 'b3VuZDogL2kpO2lmKHJlLmxlbmd0aD4xKXtjb25zdCBtZT1yZVsxXS5zcGxpdCgiPGk+IilbMV0uc3BsaXQoIjwvaT4iKVswXSxDZT1tZS5lbmRzV2l0aCgicnVubmVyIik/IlNBU0pTIHJ1bm5lciBub3QgZm91bmQuIEhlcmUncyB0aGUgbGluayAoaHR0cHM6Ly9jbGkuc2FzanMuaW8vYXV0'@; put 'aC8jc2FzanMtcnVubmVyKSB0byB0aGUgU0FTIGNvZGUgZm9yIHJlZ2lzdGVyaW5nIHRoZSBTQVNqcyBydW5uZXIiOmBTdG9yZWQgcHJvY2VzcyBub3QgZm91bmQ6ICR7bWV9YDtyZXR1cm4gbmV3IFMuSm9iRXhlY3V0aW9uRXJyb3IoNTAwLENlLCIiKX19fWNhdGNoe310cnl7aWYoIVc/Lm1h'@; put 'dGNoKC8+PndlYm91dEJFR0lOPDwvKSYmVz8ubWF0Y2goL1N0b3JlZCBQcm9jZXNzIEVycm9yL2kpJiZXPy5tYXRjaCgvVGhpcyByZXF1ZXN0IGNvbXBsZXRlZCB3aXRoIGVycm9ycy4vaSkpe2NvbnN0IHJlPVcuc3BsaXQoIjxoMj5TQVMgTG9nPC9oMj4iKTtpZihyZS5sZW5ndGg+MSl7Y29u'@; put 'c3QgbWU9cmVbMV0uc3BsaXQoIjxwcmU+IilbMV0uc3BsaXQoIjwvcHJlPiIpWzBdO3JldHVybiBuZXcgUy5Kb2JFeGVjdXRpb25FcnJvcig1MDAsIlRoaXMgcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCBlcnJvcnMuIixtZSl9fX1jYXRjaHt9cmV0dXJuIG51bGx9fSw2MDU3NihmZSxqLGgpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oeCxVLEgsVil7dm9pZCAwPT09ViYmKFY9SCk7dmFyIE49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVLEgpOyghTnx8KCJnZXQiaW4gTj8hVS5fX2VzTW9k'@; put 'dWxlOk4ud3JpdGFibGV8fE4uY29uZmlndXJhYmxlKSkmJihOPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBVW0hdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LFYsTil9OmZ1bmN0aW9uKHgsVSxILFYpe3ZvaWQgMD09PVYmJihWPUgpLHhbVl09VVtIXX0pLGM9dGhp'@; put 'cyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHgsVSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOlV9KX06ZnVuY3Rpb24oeCxVKXt4LmRlZmF1bHQ9VX0pLHM9dGhpcyYmdGhpcy5fX2ltcG9y'@; put 'dFN0YXJ8fGZ1bmN0aW9uKHgpe2lmKHgmJnguX19lc01vZHVsZSlyZXR1cm4geDt2YXIgVT17fTtpZihudWxsIT14KWZvcih2YXIgSCBpbiB4KSJkZWZhdWx0IiE9PUgmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh4LEgpJiZ5KFUseCxIKTtyZXR1cm4gYyhVLHgpLFV9'@; put 'LEE9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHgsVSxILFYpe3JldHVybiBuZXcoSHx8KEg9UHJvbWlzZSkpKGZ1bmN0aW9uKHosWSl7ZnVuY3Rpb24gRihyZSl7dHJ5e3EoVi5uZXh0KHJlKSl9Y2F0Y2gobWUpe1kobWUpfX1mdW5jdGlvbiBXKHJlKXt0cnl7cShWLnRocm93KHJl'@; put 'KSl9Y2F0Y2gobWUpe1kobWUpfX1mdW5jdGlvbiBxKHJlKXtyZS5kb25lP3oocmUudmFsdWUpOmZ1bmN0aW9uIE4oeil7cmV0dXJuIHogaW5zdGFuY2VvZiBIP3o6bmV3IEgoZnVuY3Rpb24oWSl7WSh6KX0pfShyZS52YWx1ZSkudGhlbihGLFcpfXEoKFY9Vi5hcHBseSh4LFV8fFtdKSkubmV4'@; put 'dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5TYXM5UmVxdWVzdENsaWVudD12b2lkIDA7Y29uc3Qgdj1oKDYyODQxKSxDPXMoaCg3MjkyMykpLHc9aCg2MzQwKSxTPWgoMjg4MTYpLEw9aCgxNzM4OCk7ai5TYXM5UmVxdWVzdENsaWVu'@; put 'dD1jbGFzcyBSIGV4dGVuZHMgUy5SZXF1ZXN0Q2xpZW50e2NvbnN0cnVjdG9yKFUsSCl7c3VwZXIoVSxIKSx0aGlzLmh0dHBDbGllbnQuZGVmYXVsdHMubWF4UmVkaXJlY3RzPTAsdGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLnZhbGlkYXRlU3RhdHVzPVY9PlY+PTIwMCYmVjwzMDMsdi53cmFw'@; put 'cGVyJiYoKDAsdi53cmFwcGVyKSh0aGlzLmh0dHBDbGllbnQpLHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5qYXI9bmV3IEMuQ29va2llSmFyKX1yZXNldEluTWVtb3J5QXV0aFN0YXRlKCl7c3VwZXIucmVzZXRJbk1lbW9yeUF1dGhTdGF0ZSgpLHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5q'@; put 'YXImJnRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5qYXIucmVtb3ZlQWxsQ29va2llc1N5bmMoKX1sb2dpbihVLEgsVil7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IE49YC9Vc2VyIEZvbGRlcnMvJHtVfS9NeSBGb2xkZXIvc2FzanMvcnVubmVyYDt0aGlz'@; put 'Lmh0dHBDbGllbnQuZGVmYXVsdHMuamFyJiYodGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphci5yZW1vdmVBbGxDb29raWVzKCkseWllbGQgdGhpcy5nZXQoYCR7Vn0/X3Byb2dyYW09JHtOfSZfdXNlcm5hbWU9JHtVfSZfcGFzc3dvcmQ9JHtIfWAsdm9pZCAwLCJ0ZXh0L3BsYWluIikpfSl9'@; put 'Z2V0KFUsSCxWPSJhcHBsaWNhdGlvbi9qc29uIixOPXt9LHo9ITEpe3JldHVybiBBKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBGPXtoZWFkZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmdldEhlYWRlcnMoSCxWKSksTikscmVzcG9uc2VUeXBl'@; put 'OiJ0ZXh0L3BsYWluIj09PVY/InRleHQiOiJqc29uIix3aXRoWFNSRlRva2VuOiEwfTtyZXR1cm4idGV4dC9wbGFpbiI9PT1WJiYoRi50cmFuc2Zvcm1SZXNwb25zZT12b2lkIDApLHRoaXMuaHR0cENsaWVudC5nZXQoVSxGKS50aGVuKFc9PjMwMj09PVcuc3RhdHVzP3RoaXMuZ2V0KFcuaGVh'@; put 'ZGVycy5sb2NhdGlvbixILFYpOigoMCxTLnRocm93SWZFcnJvcikoVyksdGhpcy5wYXJzZVJlc3BvbnNlKFcpKSkuY2F0Y2goVz0+QSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoVyBpbnN0YW5jZW9mIEwuSm9iRXhlY3V0aW9uRXJyb3IpdGhyb3cgVztyZXR1cm4geWllbGQg'@; put 'dGhpcy5oYW5kbGVFcnJvcihXLCgpPT50aGlzLmdldChVLEgsVixOKS5jYXRjaChxPT57dGhyb3coMCx3LnByZWZpeE1lc3NhZ2UpKHEsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBoYW5kbGUgZXJyb3IgY2FsbGJhY2suICIpfSkseikuY2F0Y2gocT0+e3Rocm93KDAsdy5wcmVmaXhNZXNzYWdl'@; put 'KShxLCJFcnJvciB3aGlsZSBoYW5kbGluZyBlcnJvci4gIil9KX0pKX0pfXBvc3QoVSxILFYsTj0iYXBwbGljYXRpb24vanNvbiIsej17fSl7cmV0dXJuIEEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IFk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMu'@; put 'Z2V0SGVhZGVycyhWLE4pKSx6KTtyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoVSxILHtoZWFkZXJzOlksd2l0aFhTUkZUb2tlbjohMH0pLnRoZW4oRj0+QSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIDMwMj09PUYuc3RhdHVzP3lpZWxkIHRoaXMuZ2V0KEYuaGVh'@; put 'ZGVycy5sb2NhdGlvbix2b2lkIDAsTix6KTooKDAsUy50aHJvd0lmRXJyb3IpKEYpLHRoaXMucGFyc2VSZXNwb25zZShGKSl9KSkuY2F0Y2goRj0+QSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIHRoaXMuaGFuZGxlRXJyb3IoRiwoKT0+dGhpcy5wb3N0KFUs'@; put 'SCxWLE4seikpfSkpfSl9fX0sNzc1NjAoZmUsaixoKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouU0FTSlNfTE9HU19TRVBBUkFUT1I9ai5TYXNqc1JlcXVlc3RDbGllbnQ9dm9pZCAwO2NvbnN0IHk9aCgyODgxNik7ai5T'@; put 'YXNqc1JlcXVlc3RDbGllbnQ9Y2xhc3MgYyBleHRlbmRzIHkuUmVxdWVzdENsaWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXRIZWFkZXJzPShBLHYpPT57dmFyIEM7Y29uc3Qgdz17fTtyZXR1cm4iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk'@; put 'IiE9PXYmJih3WyJDb250ZW50LVR5cGUiXT12KSx3LkFjY2VwdD0iYXBwbGljYXRpb24vanNvbiI9PT12P3Y6IiovKiIsIUEmJnR5cGVvZiB3aW5kb3c8InUiJiYoQT1udWxsIT09KEM9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImFjY2Vzc1Rva2VuIikpJiZ2b2lkIDAhPT1DP0M6dm9pZCAwKSxB'@; put 'JiYody5BdXRob3JpemF0aW9uPWBCZWFyZXIgJHtBfWApLHd9fXBhcnNlUmVzcG9uc2UoQSl7Y29uc3Qgdj1BPy5oZWFkZXJzP0EuaGVhZGVycy5ldGFnOiIiO2xldCB3LFMsTCxDPXt9O3RyeXtDPSJzdHJpbmciPT10eXBlb2YgQS5kYXRhP0pTT04ucGFyc2UoQS5kYXRhKTpBLmRhdGF9Y2F0'@; put 'Y2h7aWYoQS5kYXRhLmluY2x1ZGVzKGouU0FTSlNfTE9HU19TRVBBUkFUT1IpKXtjb25zdHtkYXRhOlV9PUEsSD1VLnNwbGl0KGouU0FTSlNfTE9HU19TRVBBUkFUT1IpO3c9SC5zcGxpY2UoMCwxKVswXSx2b2lkIDAhPT13JiYoQz13KTtjb25zdCBWPUguc3BsaWNlKDAsSC5sZW5ndGgtMSks'@; put 'Tj1uZXcgUmVnRXhwKGAke2ouU0FTSlNfTE9HU19TRVBBUkFUT1J9JGApLHo9SFswXTt6JiYoTi50ZXN0KFUpP1YubGVuZ3RoPjEmJlYucHVzaCh6KTpMPXopLFM9Vi5qb2luKGouU0FTSlNfTE9HU19TRVBBUkFUT1IpfWVsc2UgQz1BLmRhdGF9Y29uc3QgUj17cmVzdWx0OkMsbG9nOlN8fCIi'@; put 'LGV0YWc6dixzdGF0dXM6QS5zdGF0dXN9O3JldHVybiBMJiYoUi5wcmludE91dHB1dD1MKSxSfX0sai5TQVNKU19MT0dTX1NFUEFSQVRPUj0iU0FTSlNfTE9HU19TRVBBUkFUT1JfMTYzZWUxN2I2ZmYyNGYwMjg5Mjg5NzJkODBhMjY3ODQifSw4NTc3NyhmZSxqKXsidXNlIHN0cmljdCI7T2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwyMTM1MyhmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzNDM4KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVy'@; put 'dHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDM0MDA2KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDk4OTEyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVs'@; put 'ZSIse3ZhbHVlOiEwfSl9LDc1ODczKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDcyODcyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9'@; put 'LDYzNjMyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDk2NzcyKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDgxNzUxKGZlLGopeyJ1'@; put 'c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDI0NDgzKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDk1NTYoZmUsail7InVzZSBzdHJpY3QiO09iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMTQwNjYoZmUsail7InVzZSBzdHJpY3QiO3ZhciB5LGM7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouTG9naW5NZWNoYW5pc209ai5TQVNqc0NvbmZpZz12b2lkIDAs'@; put 'ai5TQVNqc0NvbmZpZz1jbGFzcyBoe2NvbnN0cnVjdG9yKCl7dGhpcy5zZXJ2ZXJVcmw9IiIsdGhpcy5wYXRoU0FTSlM9IiIsdGhpcy5wYXRoU0FTOT0iIix0aGlzLnBhdGhTQVNWaXlhPSIiLHRoaXMuYXBwTG9jPSIiLHRoaXMuc2VydmVyVHlwZT1udWxsLHRoaXMuZGVidWc9ITAsdGhpcy52'@; put 'ZXJib3NlPSEwLHRoaXMuY29udGV4dE5hbWU9IiIsdGhpcy51c2VDb21wdXRlQXBpPW51bGwsdGhpcy5sb2dpbk1lY2hhbmlzbT15LkRlZmF1bHQsdGhpcy5yZXF1ZXN0SGlzdG9yeUxpbWl0PTEwLHRoaXMucnVuQXNUYXNrPSExfX0sKGM9eT1qLkxvZ2luTWVjaGFuaXNtfHwoai5Mb2dpbk1l'@; put 'Y2hhbmlzbT17fSkpLkRlZmF1bHQ9IkRlZmF1bHQiLGMuUmVkaXJlY3RlZD0iUmVkaXJlY3RlZCJ9LDk1NjE4KGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5TZXNzaW9uU3RhdGU9dm9pZCAwLCh5PWou'@; put 'U2Vzc2lvblN0YXRlfHwoai5TZXNzaW9uU3RhdGU9e30pKS5Db21wbGV0ZWQ9ImNvbXBsZXRlZCIseS5SdW5uaW5nPSJydW5uaW5nIix5LlBlbmRpbmc9InBlbmRpbmciLHkuSWRsZT0iaWRsZSIseS5VbmF2YWlsYWJsZT0idW5hdmFpbGFibGUiLHkuTm9TdGF0ZT0iIix5LkZhaWxlZD0iZmFp'@; put 'bGVkIix5LkVycm9yPSJlcnJvciJ9LDMxNDczKGZlLGosaCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLlRhYmxlcz12b2lkIDA7Y29uc3QgeT1oKDE3Mzg4KTtqLlRhYmxlcz1jbGFzcyBje2NvbnN0cnVjdG9yKEEsdil7'@; put 'dGhpcy5fdGFibGVzPXt9LHRoaXMuYWRkKEEsdil9YWRkKEEsdil7aWYoIUF8fCF2KXRocm93IG5ldyB5LkFyZ3VtZW50RXJyb3IoIk1pc3NpbmcgYXJndW1lbnRzIik7aWYoIShBIGluc3RhbmNlb2YgQXJyYXkpKXRocm93IG5ldyB5LkFyZ3VtZW50RXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11'@; put 'c3QgYmUgYXJyYXkiKTtpZigic3RyaW5nIiE9dHlwZW9mIHYpdGhyb3cgbmV3IHkuQXJndW1lbnRFcnJvcigiU2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgc3RyaW5nIik7aWYoIWlzTmFOKE51bWJlcih2W3YubGVuZ3RoLTFdKSkpdGhyb3cgbmV3IHkuQXJndW1lbnRFcnJvcigiTWFjcm8gbmFt'@; put 'ZSBjYW5ub3QgaGF2ZSBudW1iZXIgYXQgdGhlIGVuZCIpO3RoaXMuX3RhYmxlc1t2XT1BfX19LDU4MTQzKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDI4MzA1KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDc4NzA3KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5Bcmd1bWVudEVycm9yPXZvaWQgMDtjbGFzcyBoIGV4dGVuZHMgRXJyb3J7Y29uc3Ry'@; put 'dWN0b3IoYyl7c3VwZXIoYyksdGhpcy5tZXNzYWdlPWMsdGhpcy5uYW1lPSJBcmd1bWVudEVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxoLnByb3RvdHlwZSl9fWouQXJndW1lbnRFcnJvcj1ofSw4NjYxKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'aiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5BdXRob3JpemVFcnJvcj12b2lkIDA7Y2xhc3MgaCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGMscyl7c3VwZXIoYyksdGhpcy5tZXNzYWdlPWMsdGhpcy5jb25maXJtVXJsPXMsdGhpcy5uYW1lPSJBdXRob3JpemVFcnJvciIsT2JqZWN0'@; put 'LnNldFByb3RvdHlwZU9mKHRoaXMsaC5wcm90b3R5cGUpfX1qLkF1dGhvcml6ZUVycm9yPWh9LDg5MjQxKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5DZXJ0aWZpY2F0ZUVycm9yPXZvaWQgMDtjbGFzcyB5IGV4'@; put 'dGVuZHMgRXJyb3J7Y29uc3RydWN0b3Iocyl7c3VwZXIoYCR7c31cblBsZWFzZSB2aXNpdCB0aGUgbGluayBiZWxvdyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGlzIGlzc3VlOlxuLSBodHRwczovL2dpdGh1Yi5jb20vc2FzanMvY2xpL2lzc3Vlcy8xMTgxI2lzc3VlY29tbWVudC0x'@; put 'MDkwNjM4NTg0XG5gKSx0aGlzLm5hbWU9IkNlcnRpZmljYXRlRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLHkucHJvdG90eXBlKX19ai5DZXJ0aWZpY2F0ZUVycm9yPXl9LDUwNjM0KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVs'@; put 'ZSIse3ZhbHVlOiEwfSksai5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3I9dm9pZCAwO2NsYXNzIGggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihjLHMpe3N1cGVyKCJFcnJvcjogSm9iIGV4ZWN1dGlvbiBmYWlsZWQiKSx0aGlzLmpvYj1jLHRoaXMubG9nPXMsdGhpcy5uYW1lPSJDb21wdXRl'@; put 'Sm9iRXhlY3V0aW9uRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3I9aH0sMzQ4NDUoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxq'@; put 'LkVycm9yUmVzcG9uc2U9dm9pZCAwLGouRXJyb3JSZXNwb25zZT1jbGFzcyBoe2NvbnN0cnVjdG9yKGMscyxBKXtsZXQgdj1zO2lmKCJvYmplY3QiIT10eXBlb2Ygcyl0cnl7dj1KU09OLnBhcnNlKHMpfWNhdGNoe0E9cyx2PSIifXRoaXMuZXJyb3I9e21lc3NhZ2U6YyxkZXRhaWxzOnYscmF3'@; put 'OkF9fX19LDE5MDY4KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5JbnRlcm5hbFNlcnZlckVycm9yPXZvaWQgMDtjbGFzcyBoIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRXJyb3I6IEludGVy'@; put 'bmFsIHNlcnZlciBlcnJvci4iKSx0aGlzLm5hbWU9IkludGVybmFsU2VydmVyRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5JbnRlcm5hbFNlcnZlckVycm9yPWh9LDEyMzgzKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'aiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5JbnZhbGlkSnNvbkVycm9yPXZvaWQgMDtjbGFzcyBoIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRXJyb3I6IGludmFsaWQgSnNvbiBzdHJpbmciKSx0aGlzLm5hbWU9IkludmFsaWRKc29uRXJyb3IiLE9iamVjdC5zZXRQ'@; put 'cm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5JbnZhbGlkSnNvbkVycm9yPWh9LDI0MDAxKGZlLGopeyJ1c2Ugc3RyaWN0IjtqLkludmFsaWRTQVNqc0NzcmZFcnJvcj12b2lkIDA7Y2xhc3MgeSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkF1dGggZXJyb3I6IElu'@; put 'dmFsaWQgQ1NSRiB0b2tlbiEiKSx0aGlzLm5hbWU9IkludmFsaWRTQVNqc0NzcmZFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMseS5wcm90b3R5cGUpfX1qLkludmFsaWRTQVNqc0NzcmZFcnJvcj15fSwxNzQxMShmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3Bl'@; put 'cnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouSm9iRXhlY3V0aW9uRXJyb3I9dm9pZCAwO2NsYXNzIGggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihjLHMsQSl7c3VwZXIoYEVycm9yIENvZGUgJHtjfTogJHtzfWApLHRoaXMuZXJyb3JDb2RlPWMsdGhpcy5lcnJvck1lc3NhZ2U9'@; put 'cyx0aGlzLnJlc3VsdD1BLHRoaXMubmFtZT0iSm9iRXhlY3V0aW9uRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5Kb2JFeGVjdXRpb25FcnJvcj1ofSwxMjkwOShmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNN'@; put 'b2R1bGUiLHt2YWx1ZTohMH0pLGouSm9iU3RhdGVQb2xsRXJyb3I9dm9pZCAwO2NsYXNzIGggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihjLHMpe3N1cGVyKGBFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0ZSBmb3Igam9iICR7Y306ICR7cy5tZXNzYWdlfHxzfWApLHRoaXMub3JpZ2lu'@; put 'YWxFcnJvcj1zLHRoaXMubmFtZT0iSm9iU3RhdGVQb2xsRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5Kb2JTdGF0ZVBvbGxFcnJvcj1ofSw3MjM2KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIs'@; put 'e3ZhbHVlOiEwfSksai5Kc29uUGFyc2VBcnJheUVycm9yPXZvaWQgMDtjbGFzcyBoIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2FuIG5vdCBwYXJzZSBhcnJheSBvYmplY3QgdG8ganNvbi4iKSx0aGlzLm5hbWU9Ikpzb25QYXJzZUFycmF5RXJyb3IiLE9iamVjdC5zZXRQ'@; put 'cm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5Kc29uUGFyc2VBcnJheUVycm9yPWh9LDkzMTA0KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5Mb2dpblJlcXVpcmVkRXJyb3I9dm9pZCAwO2NsYXNzIGgg'@; put 'ZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihjKXtzdXBlcihgQXV0aCBlcnJvcjogJHtjP0pTT04uc3RyaW5naWZ5KGMsbnVsbCwyKToiWW91IG11c3QgYmUgbG9nZ2VkIGluIHRvIGFjY2VzcyB0aGlzIHJlc291cmNlIn1gKSx0aGlzLm5hbWU9IkxvZ2luUmVxdWlyZWRFcnJvciIsT2JqZWN0'@; put 'LnNldFByb3RvdHlwZU9mKHRoaXMsaC5wcm90b3R5cGUpfX1qLkxvZ2luUmVxdWlyZWRFcnJvcj1ofSw2MTk3NihmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouTm9TZXNzaW9uU3RhdGVFcnJvcj12b2lkIDA7Y2xh'@; put 'c3MgaCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGMscyxBKXtzdXBlcihgQ291bGQgbm90IGdldCBzZXNzaW9uIHN0YXRlLiBTZXJ2ZXIgcmVzcG9uZGVkIHdpdGggJHtjfSB3aGlsc3QgY2hlY2tpbmcgc3RhdGU6ICR7c31gKSx0aGlzLnNlcnZlclJlc3BvbnNlU3RhdHVzPWMsdGhpcy5z'@; put 'ZXNzaW9uU3RhdGVVcmw9cyx0aGlzLmxvZ1VybD1BLHRoaXMubmFtZT0iTm9TZXNzaW9uU3RhdHVzIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxoLnByb3RvdHlwZSl9fWouTm9TZXNzaW9uU3RhdGVFcnJvcj1ofSw5NzQwMyhmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVBy'@; put 'b3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouTm90Rm91bmRFcnJvcj12b2lkIDA7Y2xhc3MgaCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGMpe3N1cGVyKGBFcnJvcjogUmVzb3VyY2UgYXQgJHtjfSB3YXMgbm90IGZvdW5kYCksdGhpcy51cmw9Yyx0aGlzLm5hbWU9Ik5v'@; put 'dEZvdW5kRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLGgucHJvdG90eXBlKX19ai5Ob3RGb3VuZEVycm9yPWh9LDI1Mzk1KGZlLGosaCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLlJvb3RGb2xkZXJOb3RG'@; put 'b3VuZEVycm9yPXZvaWQgMDtjb25zdCB5PWgoMTYwNzIpO2NsYXNzIGMgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihBLHYsQyl7bGV0IHc9YFJvb3QgZm9sZGVyICR7QX0gd2FzIG5vdCBmb3VuZC5cblBsZWFzZSBjaGVjayAke3Z9L1NBU0RyaXZlLlxuSWYgdGhlIGZvbGRlciBET0VTIGV4'@; put 'aXN0IHRoZW4gaXQgaXMgbGlrZWx5IGEgcGVybWlzc2lvbiBwcm9ibGVtLlxuYDtpZihDKXtsZXQgTD0oMCx5LmRlY29kZVRva2VuKShDKS5zY29wZTtMPUwubWFwKFI9PiIqICIrUiksdys9IllvdXIgYWNjZXNzIHRva2VuIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc2NvcGVzOlxuIitMLmpv'@; put 'aW4oIlxuIil9c3VwZXIodyksdGhpcy5uYW1lPSJSb290Rm9sZGVyTm90Rm91bmRFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsYy5wcm90b3R5cGUpfX1qLlJvb3RGb2xkZXJOb3RGb3VuZEVycm9yPWN9LDk0NDYwKGZlLGopeyJ1c2Ugc3RyaWN0IjtqLlNBUzlBdXRoRXJyb3I9'@; put 'dm9pZCAwO2NsYXNzIHkgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJUaGUgY3JlZGVudGlhbHMgeW91IHByb3ZpZGVkIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVkLiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIHNldCBvZiBjcmVkZW50aWFscy4iKSx0aGlzLm5hbWU9IkF1dGhv'@; put 'cml6ZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyx5LnByb3RvdHlwZSl9fWouU0FTOUF1dGhFcnJvcj15fSw3OTk5NyhmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouV2Vib3V0UmVzcG9uc2VFcnJv'@; put 'cj12b2lkIDA7Y2xhc3MgaCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGMpe3N1cGVyKGBFcnJvcjogZXJyb3Igd2hpbGUgcGFyc2luZyByZXNwb25zZSBmcm9tICR7Y31gKSx0aGlzLnVybD1jLHRoaXMubmFtZT0iV2Vib3V0UmVzcG9uc2VFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9m'@; put 'KHRoaXMsaC5wcm90b3R5cGUpfX1qLldlYm91dFJlc3BvbnNlRXJyb3I9aH0sMTczODgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKHMsQSx2LEMpe3ZvaWQgMD09PUMmJihDPXYpO3ZhciB3PU9i'@; put 'amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQSx2KTsoIXd8fCgiZ2V0ImluIHc/IUEuX19lc01vZHVsZTp3LndyaXRhYmxlfHx3LmNvbmZpZ3VyYWJsZSkpJiYodz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQVt2XX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'cyxDLHcpfTpmdW5jdGlvbihzLEEsdixDKXt2b2lkIDA9PT1DJiYoQz12KSxzW0NdPUFbdl19KSxjPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihzLEEpe2Zvcih2YXIgdiBpbiBzKSJkZWZhdWx0IiE9PXYmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo'@; put 'QSx2KSYmeShBLHMsdil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxjKGgoNzg3MDcpLGopLGMoaCg4NjYxKSxqKSxjKGgoODkyNDEpLGopLGMoaCg1MDYzNCksaiksYyhoKDM0ODQ1KSxqKSxjKGgoMTkwNjgpLGopLGMoaCgxMjM4MyksaiksYyho'@; put 'KDE3NDExKSxqKSxjKGgoMTI5MDkpLGopLGMoaCg3MjM2KSxqKSxjKGgoOTMxMDQpLGopLGMoaCg2MTk3NiksaiksYyhoKDk3NDAzKSxqKSxjKGgoMjUzOTUpLGopLGMoaCg3OTk5Nyksail9LDUzNTc0KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5k'@; put 'aW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihzLEEsdixDKXt2b2lkIDA9PT1DJiYoQz12KTt2YXIgdz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEEsdik7KCF3fHwoImdldCJpbiB3PyFBLl9fZXNNb2R1bGU6dy53cml0YWJsZXx8dy5jb25maWd1cmFibGUpKSYmKHc9e2Vu'@; put 'dW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEFbdl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsQyx3KX06ZnVuY3Rpb24ocyxBLHYsQyl7dm9pZCAwPT09QyYmKEM9diksc1tDXT1BW3ZdfSksYz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24ocyxBKXtmb3Io'@; put 'dmFyIHYgaW4gcykiZGVmYXVsdCIhPT12JiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsdikmJnkoQSxzLHYpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYyhoKDg1Nzc3KSxqKSxjKGgoMjEzNTMpLGopLGMoaCg5ODkx'@; put 'MiksaiksYyhoKDM0MDA2KSxqKSxjKGgoNzU4NzMpLGopLGMoaCg3Mjg3MiksaiksYyhoKDYzNjMyKSxqKSxjKGgoOTY3NzIpLGopLGMoaCg4MTc1MSksaiksYyhoKDE0MDY2KSxqKSxjKGgoOTU1NiksaiksYyhoKDk1NjE4KSxqKSxjKGgoNTgxNDMpLGopLGMoaCgyNDQ4MyksaiksYyhoKDI4'@; put 'MzA1KSxqKSxjKGgoMzQzOCksaiksYyhoKDE3Mzg4KSxqKSxjKGgoMzE0NzMpLGopfSw3MzI1OChmZSxqKXsidXNlIHN0cmljdCI7dmFyIGg9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGMscyxBLHYpe3JldHVybiBuZXcoQXx8KEE9UHJvbWlzZSkpKGZ1bmN0aW9uKHcsUyl7ZnVu'@; put 'Y3Rpb24gTChVKXt0cnl7eCh2Lm5leHQoVSkpfWNhdGNoKEgpe1MoSCl9fWZ1bmN0aW9uIFIoVSl7dHJ5e3godi50aHJvdyhVKSl9Y2F0Y2goSCl7UyhIKX19ZnVuY3Rpb24geChVKXtVLmRvbmU/dyhVLnZhbHVlKTpmdW5jdGlvbiBDKHcpe3JldHVybiB3IGluc3RhbmNlb2YgQT93Om5ldyBB'@; put 'KGZ1bmN0aW9uKFMpe1Modyl9KX0oVS52YWx1ZSkudGhlbihMLFIpfXgoKHY9di5hcHBseShjLHN8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5hcHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcz12b2lkIDAsai5h'@; put 'cHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcz1mdW5jdGlvbiB5KGMscyl7cmV0dXJuIGgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBBPXt9O2lmKHM/Lmxlbmd0aCl7Y29uc3Qgdj1zLnJlZHVjZSgoQyx3KT0+KENbd109Y1t3XSxDKSx7fSk7QT1PYmplY3QuYXNzaWdu'@; put 'KHtyZXN1bHQ6Yy5yZXN1bHR9LHYpfWVsc2UgQT1jLnJlc3VsdDtyZXR1cm4gQX0pfX0sMjI1NTgoZmUsail7InVzZSBzdHJpY3QiO3ZhciBoPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihjLHMsQSx2KXtyZXR1cm4gbmV3KEF8fChBPVByb21pc2UpKShmdW5jdGlvbih3LFMpe2Z1'@; put 'bmN0aW9uIEwoVSl7dHJ5e3godi5uZXh0KFUpKX1jYXRjaChIKXtTKEgpfX1mdW5jdGlvbiBSKFUpe3RyeXt4KHYudGhyb3coVSkpfWNhdGNoKEgpe1MoSCl9fWZ1bmN0aW9uIHgoVSl7VS5kb25lP3coVS52YWx1ZSk6ZnVuY3Rpb24gQyh3KXtyZXR1cm4gdyBpbnN0YW5jZW9mIEE/dzpuZXcg'@; put 'QShmdW5jdGlvbihTKXtTKHcpfSl9KFUudmFsdWUpLnRoZW4oTCxSKX14KCh2PXYuYXBwbHkoYyxzfHxbXSkpLm5leHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouYXN5bmNGb3JFYWNoPXZvaWQgMCxqLmFzeW5jRm9yRWFjaD1mdW5j'@; put 'dGlvbiB5KGMscyl7cmV0dXJuIGgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2ZvcihsZXQgQT0wO0E8Yy5sZW5ndGg7QSsrKXlpZWxkIHMoY1tBXSxBLGMpfSl9fSw4OTY0NChmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2'@; put 'YWx1ZTohMH0pLGouY29tcGFyZVRpbWVzdGFtcHM9dm9pZCAwLGouY29tcGFyZVRpbWVzdGFtcHM9KHksYyk9PmMudGltZXN0YW1wLmdldFRpbWUoKS15LnRpbWVzdGFtcC5nZXRUaW1lKCl9LDQ3ODYoZmUsaixoKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNN'@; put 'b2R1bGUiLHt2YWx1ZTohMH0pLGouaXNGb3JtYXRzVGFibGU9ai5jb252ZXJ0VG9DU1Y9dm9pZCAwO2NvbnN0IHk9aCg0MzM3MSksYz1oKDYzNDApO2ouY29udmVydFRvQ1NWPShDLHcpPT57dmFyIFM7aWYoIUNbd10pe2NvbnN0IHo9KDAsYy5wcmVmaXhNZXNzYWdlKSgiTm8gdGFibGUgcHJv'@; put 'dmlkZWQgdG8gYmUgY29udmVydGVkIHRvIENTVi4iLCJFcnJvciB3aGlsZSBjb252ZXJ0aW5nIHRvIENTVi4gIik7dGhyb3cic3RyaW5nIj09dHlwZW9mIHo/bmV3IEVycm9yKHopOnp9Y29uc3QgTD1DW3ddO2lmKCFBcnJheS5pc0FycmF5KEwpKXJldHVybiIiO2xldCBVLFI9bnVsbD09PShT'@; put 'PUNbYCQke3d9YF0pfHx2b2lkIDA9PT1TP3ZvaWQgMDpTLmZvcm1hdHMseD1bXSxIPSExO1ImJih4PU9iamVjdC5rZXlzKFIpLm1hcCh6PT5gJHt6fToke1Jbel19YCkpO2NvbnN0IFY9T2JqZWN0LmtleXMoTFswXSk7cmV0dXJuIFYuZm9yRWFjaCh6PT57aWYoIVJ8fCFPYmplY3Qua2V5cyhS'@; put 'KS5pbmNsdWRlcyh6KSl7bGV0IFk9ITEsRj0hMTtpZihMLmZvckVhY2goVz0+e251bGw9PT1XW3pdfHwibnVtYmVyIj09dHlwZW9mIFdbel0/WT0hMDoic3RyaW5nIj09dHlwZW9mIFdbel0mJigwLHkuaXNTcGVjaWFsTWlzc2luZykoV1t6XSkmJihGPSEwKX0pLFkmJkYpeC5wdXNoKGAke3p9'@; put 'OmJlc3QuYCksUnx8KFI9e30pLFJbel09ImJlc3QuIjtlbHNle2xldCBXPW51bGwscT0hMSxyZT0tMTtjb25zdCBtZT1MLm1hcCgoQ2UsSWUpPT57aWYoQ2Vbel18fCIiPT09Q2Vbel0pe2xldCBrZTtyZXR1cm4gVz9xfHwocT0oIiI9PT1DZVt6XXx8InN0cmluZyI9PXR5cGVvZiBDZVt6XT8i'@; put 'Y2hhcnMiOiJudW1iZXIiKSE9PVcscmU9cT9JZSsxOi0xKTpXPSIiPT09Q2Vbel18fCJzdHJpbmciPT10eXBlb2YgQ2Vbel0/ImNoYXJzIjoibnVtYmVyIiwic3RyaW5nIj09dHlwZW9mIENlW3pdJiYoa2U9dihDZVt6XSkpLGtlfX0pLnNvcnQoKENlLEllKT0+SWUtQ2UpWzBdO21lJiZtZT4z'@; put 'Mjc2NSYmKEg9ITApLHEmJmNvbnNvbGUuZXJyb3IoYFJvdyAoJHtyZX0pLCBDb2x1bW4gKCR7en0pIGhhcyBtaXhlZCB0eXBlczogRVJST1JgKSx4LnB1c2goYCR7en06JHsiY2hhcnMiPT09Vz8iJGNoYXIiOiIifSR7bWV8fCgiY2hhcnMiPT09Vz8iMSI6ImJlc3QiKX0uYCl9fX0pLFImJih4'@; put 'PXguc29ydCgoeixZKT0+Vi5pbmRleE9mKHoucmVwbGFjZSgvOi4qLywiIikpLVYuaW5kZXhPZihZLnJlcGxhY2UoLzouKi8sIiIpKSkpLEg/IkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIjooVT1MLm1hcCh6PT5PYmplY3Qua2V5cyh6KS5tYXAoKEYsVyk9PntsZXQgcTtjb25zdCByZT16'@; put 'W0ZdO2lmKCJudW1iZXIiPT10eXBlb2YgcmUpcmV0dXJuIHJlO2lmKHE9bnVsbD09PXJlPyIiOnJlLFImJiJiZXN0LiI9PT1SW0ZdKXtpZihxJiYhKDAseS5pc1NwZWNpYWxNaXNzaW5nKShxKSl0aHJvdyBuZXcgRXJyb3IoIkEgU3BlY2lhbCBtaXNzaW5nIHZhbHVlIGNhbiBvbmx5IGJlIGEg'@; put 'c2luZ2xlIGNoYXJhY3RlciBmcm9tICdBJyB0byAnWicsICdfJywgJy5bYS16XScsICcuXyciKTtyZXR1cm5gJHtxLmluY2x1ZGVzKCIuIik/IiI6Ii4ifSR7cS50b0xvd2VyQ2FzZSgpfWB9cmV0dXJuIHE9cS5yZXBsYWNlKC8iL2csJyIiJykscT1gIiR7cX0iYCxxLnN1YnN0cmluZygxLHEu'@; put 'bGVuZ3RoLTEpLnNlYXJjaCgvKFx0fFxufFxyfCx8XCd8XCIpL2dtKTwwJiYocT1xLnN1YnN0cmluZygxLHEubGVuZ3RoLTEpKSxxPXEucmVwbGFjZSgvXHJcbi9nbSwiXG4iKSwiIj09PXEmJnhbV10uaW5jbHVkZXMoImJlc3QiKSYmKHE9Ii4iKSxxfSkuam9pbigiLCIpKSx4LmpvaW4oIiwi'@; put 'KS5yZXBsYWNlKC8sL2csIiAiKSsiXHJcbiIrVS5qb2luKCJcclxuIikpfSxqLmlzRm9ybWF0c1RhYmxlPUM9Pi9eXCQuKi8udGVzdChDKTtjb25zdCB2PUM9PntsZXQgdz1DLmxlbmd0aDtmb3IobGV0IFM9Qy5sZW5ndGgtMTtTPj0wO1MtLSl7Y29uc3QgTD1DLmNoYXJDb2RlQXQoUyk7TD4x'@; put 'MjcmJkw8PTIwNDc/dysrOkw+MjA0NyYmTDw9NjU1MzUmJih3Kz0yKSxMPj01NjMyMCYmTDw9NTczNDMmJlMtLX1yZXR1cm4gd319LDM2NTM1KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihBKXtyZXR1cm4gQSYmQS5fX2Vz'@; put 'TW9kdWxlP0E6e2RlZmF1bHQ6QX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmNyZWF0ZUF4aW9zSW5zdGFuY2U9dm9pZCAwO2NvbnN0IGM9eShoKDg2NDI1KSk7ai5jcmVhdGVBeGlvc0luc3RhbmNlPShBLHYpPT5jLmRlZmF1bHQuY3JlYXRl'@; put 'KHtiYXNlVVJMOkEsaHR0cHNBZ2VudDp2fSl9LDc2ODg5KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5kZWxheT12b2lkIDAsai5kZWxheT15PT5uZXcgUHJvbWlzZShjPT5zZXRUaW1lb3V0KGMseSkpfSwzMzE5'@; put 'MyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1NjA2KSxjPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihDLHcsUyxMKXtyZXR1cm4gbmV3KFN8fChTPVByb21pc2UpKShmdW5jdGlvbih4LFUpe2Z1bmN0aW9uIEgoeil7dHJ5e04oTC5uZXh0KHopKX1jYXRjaChZKXtVKFkp'@; put 'fX1mdW5jdGlvbiBWKHope3RyeXtOKEwudGhyb3coeikpfWNhdGNoKFkpe1UoWSl9fWZ1bmN0aW9uIE4oeil7ei5kb25lP3goei52YWx1ZSk6ZnVuY3Rpb24gUih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIFM/eDpuZXcgUyhmdW5jdGlvbihVKXtVKHgpfSl9KHoudmFsdWUpLnRoZW4oSCxWKX1O'@; put 'KChMPUwuYXBwbHkoQyx3fHxbXSkpLm5leHQoKSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouZmV0Y2hMb2c9ai5mZXRjaExvZ0J5Q2h1bmtzPXZvaWQgMDtjb25zdCBzPWgoNjM0MCk7ai5mZXRjaExvZ0J5Q2h1bmtzPShDLHcsUyxMKT0+'@; put 'Yyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4geWllbGQoMCxqLmZldGNoTG9nKShDLHcsUywwLEwpfSksai5mZXRjaExvZz0oQyx3LFMsTCxSKT0+Yyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCB4PXkubG9nZ2VyfHxjb25zb2xlO2xldCBV'@; put 'PSIiO2NvbnN0IEg9UjwxZTQ/UjoxZTQ7ZG97eC5pbmZvKGBGZXRjaGluZyBsb2dzIGZyb20gbGluZSBubzogJHtMKzF9IHRvICR7TCtIfSBvZiAke1J9LmApO2NvbnN0IFY9eWllbGQgQy5nZXQoYCR7U30/c3RhcnQ9JHtMfSZsaW1pdD0ke0h9YCx3KS50aGVuKHo9PnoucmVzdWx0KS5jYXRj'@; put 'aCh6PT57dGhyb3coMCxzLnByZWZpeE1lc3NhZ2UpKHosIkVycm9yIHdoaWxlIGdldHRpbmcgbG9nLiAiKX0pO2lmKDA9PT1WLml0ZW1zLmxlbmd0aClicmVhaztVKz1WLml0ZW1zLm1hcCh6PT56LmxpbmUpLmpvaW4oIlxuIiksTCs9SH13aGlsZShMPFIpO3JldHVybiBVfSl9LDgzNDA3KGZl'@; put 'LGosaCl7InVzZSBzdHJpY3QiO2ouZm9ybWF0RGF0YUZvclJlcXVlc3Q9dm9pZCAwO2NvbnN0IGM9aCg0Nzg2KSxzPWgoMTg3MjApO2ouZm9ybWF0RGF0YUZvclJlcXVlc3Q9dj0+e2NvbnN0IEM9W107bGV0IHc9MDtjb25zdCBTPXt9O2Zvcihjb25zdCBMIGluIHYpe2lmKCgwLGMuaXNGb3Jt'@; put 'YXRzVGFibGUpKEwpJiZPYmplY3Qua2V5cyh2KS5pbmNsdWRlcyhMLnJlcGxhY2UoL15cJC8sIiIpKSljb250aW51ZTt3KyssKDAsYy5pc0Zvcm1hdHNUYWJsZSkoTCl8fEMucHVzaChMKTtjb25zdCBSPSgwLGMuY29udmVydFRvQ1NWKSh2LEwpO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExF'@; put 'TkdUSCI9PT1SKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtpZihSLmxlbmd0aD4xNmUzKXtjb25zdCB4PSgwLHMuc3BsaXRDaHVua3MpKFIpO1NbYHNhc2pzJHt3fWRhdGEwYF09eC5sZW5n'@; put 'dGgseC5mb3JFYWNoKChVLEgpPT57U1tgc2FzanMke3d9ZGF0YSR7SCsxfWBdPVV9KX1lbHNlIFNbYHNhc2pzJHt3fWRhdGFgXT1SfXJldHVybiBTLnNhc2pzX3RhYmxlcz1DLmpvaW4oIiAiKSxTfX0sNTgyOTIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2ltcG9y'@; put 'dERlZmF1bHR8fGZ1bmN0aW9uKHYpe3JldHVybiB2JiZ2Ll9fZXNNb2R1bGU/djp7ZGVmYXVsdDp2fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouZ2V0Rm9ybURhdGE9dm9pZCAwO2NvbnN0IGM9aCgyOTI2Nikscz15KGgoNTE4OTQpKTtqLmdl'@; put 'dEZvcm1EYXRhPSgpPT4oMCxjLmlzTm9kZSkoKT9uZXcgcy5kZWZhdWx0Om5ldyBGb3JtRGF0YX0sMTAzNDMoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmdldFVzZXJMYW5ndWFnZT12b2lkIDAsai5nZXRVc2Vy'@; put 'TGFuZ3VhZ2U9KCk9PndpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2V8fHdpbmRvdy5uYXZpZ2F0b3IudXNlckxhbmd1YWdlfSw0NTg4MChmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5nZXRWYWxpZEpzb249dm9p'@; put 'ZCAwO2NvbnN0IHk9aCgxNzM4OCk7ai5nZXRWYWxpZEpzb249cz0+e3RyeXtpZihudWxsPT1zKXRocm93IG5ldyB5LkludmFsaWRKc29uRXJyb3I7aWYoQXJyYXkuaXNBcnJheShzKSl0aHJvdyBuZXcgeS5Kc29uUGFyc2VBcnJheUVycm9yO3JldHVybiJvYmplY3QiPT10eXBlb2Ygcz9zOiIi'@; put 'PT09cz97fTpKU09OLnBhcnNlKHMpfWNhdGNoKEEpe3Rocm93IEEgaW5zdGFuY2VvZiB5Lkpzb25QYXJzZUFycmF5RXJyb3I/QTpuZXcgeS5JbnZhbGlkSnNvbkVycm9yfX19LDI5MjY2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2Jq'@; put 'ZWN0LmNyZWF0ZT9mdW5jdGlvbihzLEEsdixDKXt2b2lkIDA9PT1DJiYoQz12KTt2YXIgdz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEEsdik7KCF3fHwoImdldCJpbiB3PyFBLl9fZXNNb2R1bGU6dy53cml0YWJsZXx8dy5jb25maWd1cmFibGUpKSYmKHc9e2VudW1lcmFibGU6'@; put 'ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEFbdl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsQyx3KX06ZnVuY3Rpb24ocyxBLHYsQyl7dm9pZCAwPT09QyYmKEM9diksc1tDXT1BW3ZdfSksYz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24ocyxBKXtmb3IodmFyIHYgaW4g'@; put 'cykiZGVmYXVsdCIhPT12JiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsdikmJnkoQSxzLHYpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYyhoKDczMjU4KSxqKSxjKGgoMjI1NTgpLGopLGMoaCg4OTY0NCksaiksYyho'@; put 'KDQ3ODYpLGopLGMoaCgzNjUzNSksaiksYyhoKDc2ODg5KSxqKSxjKGgoMzMxOTMpLGopLGMoaCg0NTg4MCksaiksYyhoKDM2MzA4KSxqKSxjKGgoNDg2NzkpLGopLGMoaCg1NjU4MCksaiksYyhoKDg1NzM1KSxqKSxjKGgoOTk2ODkpLGopLGMoaCg3MzM4OSksaiksYyhoKDgzMjUpLGopLGMo'@; put 'aCgyMzYxNyksaiksYyhoKDc3Mjg4KSxqKSxjKGgoMzYwMjQpLGopLGMoaCg2NzY0MCksaiksYyhoKDE4NDI0KSxqKSxjKGgoMTg3MjApLGopLGMoaCg4MTI4KSxqKSxjKGgoNTgyOTIpLGopLGMoaCgxMDM0Myksail9LDM2MzA4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYp'@; put 'O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLmlzTm9kZT12b2lkIDAsai5pc05vZGU9KCk9PnR5cGVvZiB5PCJ1IiYmbnVsbCE9eS52ZXJzaW9ucyYmbnVsbCE9eS52ZXJzaW9ucy5ub2RlfSw0ODY3OShmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0'@; put 'LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouaXNSZWxhdGl2ZVBhdGg9dm9pZCAwLGouaXNSZWxhdGl2ZVBhdGg9eT0+ISF5JiYheS5zdGFydHNXaXRoKCIvIil9LDU2NTgwKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19l'@; put 'c01vZHVsZSIse3ZhbHVlOiEwfSksai5pc1VyaT12b2lkIDAsai5pc1VyaT15PT4vXlwvZm9sZGVyc1wvZm9sZGVyc1wvLy50ZXN0KHkpfSw4NTczNShmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouaXNVcmw9dm9p'@; put 'ZCAwLGouaXNVcmw9eT0+e2NvbnN0IGM9WyJodHRwOiIsImh0dHBzOiJdO3RyeXtjb25zdCBzPW5ldyBVUkwoeSk7aWYoIWMuaW5jbHVkZXMocy5wcm90b2NvbCkpcmV0dXJuITF9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9fSw5Mjk4NihmZSxqKXsidXNlIHN0cmljdCI7dmFyIGg9dGhpcyYm'@; put 'dGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHcsUyxMLFIpe3JldHVybiBuZXcoTHx8KEw9UHJvbWlzZSkpKGZ1bmN0aW9uKFUsSCl7ZnVuY3Rpb24gVihZKXt0cnl7eihSLm5leHQoWSkpfWNhdGNoKEYpe0goRil9fWZ1bmN0aW9uIE4oWSl7dHJ5e3ooUi50aHJvdyhZKSl9Y2F0Y2goRil7SChG'@; put 'KX19ZnVuY3Rpb24geihZKXtZLmRvbmU/VShZLnZhbHVlKTpmdW5jdGlvbiB4KFUpe3JldHVybiBVIGluc3RhbmNlb2YgTD9VOm5ldyBMKGZ1bmN0aW9uKEgpe0goVSl9KX0oWS52YWx1ZSkudGhlbihWLE4pfXooKFI9Ui5hcHBseSh3LFN8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5l'@; put 'UHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5vcGVuTG9naW5Qcm9tcHQ9dm9pZCAwO3ZhciB5PWZ1bmN0aW9uKHcpe3JldHVybiB3LnN0eWxlcz0ic2FzanNBZGFwdGVyU3R5bGVzIix3Lm92ZXJsYXk9InNhc2pzQWRhcHRlckxvZ2luUHJvbXB0QkciLHcuZGlhbG9nPSJz'@; put 'YXNqc0FkYXB0ZXJMb2dpblByb21wdCIsd30oeXx8e30pO2NvbnN0IGM9InNhc2pzLWFkYXB0ZXIiLHM9e3BvcFVwOmAke2N9cG9wVXBgLHBvcFVwQkc6YCR7Y31wb3BVcEJHYH07ai5vcGVuTG9naW5Qcm9tcHQ9KCk9Pm5ldyBQcm9taXNlKHc9Pmgodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVu'@; put 'Y3Rpb24qKCl7Y29uc3QgUz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO1MuaWQ9eS5zdHlsZXMsUy5pbm5lclRleHQ9Qztjb25zdCBMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0wuaWQ9eS5vdmVybGF5LEwuY2xhc3NMaXN0LmFkZChzLnBvcFVwQkcpO2NvbnN0IFI9'@; put 'ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ui5pZD15LmRpYWxvZyxSLmNsYXNzTGlzdC5hZGQocy5wb3BVcCk7Y29uc3QgeD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpO3guaW5uZXJUZXh0PSJTZXNzaW9uIEV4cGlyZWQhIixSLmFwcGVuZENoaWxkKHgpO2NvbnN0IFU9ZG9j'@; put 'dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7SC5pbm5lclRleHQ9IllvdSBuZWVkIHRvIHJlbG9naW4sIGNsaWNrIE9LIHRvIGxvZ2luLiIsVS5hcHBlbmRDaGlsZChIKSxSLmFwcGVuZENoaWxkKFUpO2NvbnN0IFY9ZG9jdW1lbnQu'@; put 'Y3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Vi5jbGFzc0xpc3QuYWRkKCJjYW5jZWwiKSxWLmlubmVyVGV4dD0iQ2FuY2VsIixWLm9uY2xpY2s9KCk9Pnt2KCksdyghMSl9LFIuYXBwZW5kQ2hpbGQoVik7Y29uc3QgTj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTtOLmNsYXNzTGlz'@; put 'dC5hZGQoImNvbmZpcm0iKSxOLmlubmVyVGV4dD0iT2siLE4ub25jbGljaz0oKT0+e3YoKSx3KCEwKX0sUi5hcHBlbmRDaGlsZChOKSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoUyksZG9jdW1lbnQuYm9keS5hcHBlbmRD'@; put 'aGlsZChMKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFIpfSkpO2NvbnN0IHY9KCk9PntPYmplY3QudmFsdWVzKHkpLmZvckVhY2godz0+e3ZhciBTO2NvbnN0IEw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodyk7bnVsbD09PShTPUw/LnBhcmVudE5vZGUpfHx2b2lkIDA9PT1TfHxTLnJl'@; put 'bW92ZUNoaWxkKEwpfSksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iYXV0byJ9LEM9YFxuLiR7cy5wb3BVcEJHfSAsXG4uJHtzLnBvcFVwfSB7XG4gIHotaW5kZXg6IDEwMDAwO1xufVxuLiR7cy5wb3BVcH0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJv'@; put 'eC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA0MCU7XG4gIGxlZnQ6IDUwJTtcbiAgcGFkZGluZzogMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LWZh'@; put 'bWlseTogJ1BUIFNhbnMnLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICB6LWluZGV4OiA5OTk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDog'@; put 'MTAwJTtcbiAgbWF4LXdpZHRoOiAzMDBweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4uJHtzLnBvcFVwfSA+IGgxIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1i'@; put 'b3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDVweDtcbiAgbWluLWhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29s'@; put 'b3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIGJvcmRlci13aWR0aDogNXB4O1xuICBib3JkZXItY29sb3I6IGJsYWNrO1xufVxuLiR7cy5wb3BVcH0gPiBkaXYge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBj'@; put 'YWxjKDEwMCUgLTEwOHB4KTtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDUlO1xuICB0'@; put 'ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNjY2M7XG4gIGJvcmRlci1zdHlsZTogbm9uZSBub25lIHNvbGlkIG5vbmU7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLiR7cy5wb3BVcH0gPiBkaXYgPiBzcGFuIHtcbiAgZGlzcGxheTog'@; put 'dGFibGUtY2VsbDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IDEw'@; put 'OHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4uJHtzLnBvcFVwfSAuY2FuY2VsIHtcbiAgZmxvYXQ6IGxlZnQ7XG59XG4uJHtzLnBvcFVwfSAuY29uZmlybSB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi4ke3MucG9wVXB9ID4gYnV0dG9u'@; put 'IHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMTBweDtcbiAgd2lkdGg6IDUwJTtcbiAgYm9yZGVyOiAxcHggbm9uZSAj'@; put 'Y2NjO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgaGVpZ2h0OiA1MHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEsIDEsIDEsIDAuMik7XG59XG4uJHtzLnBvcFVwfSA+IGJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQ6'@; put 'IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbi4ke3MucG9wVXBCR30ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtc'@; put 'biAgb3BhY2l0eTogMC45NTtcbiAgei1pbmRleDogNTA7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudCgjMDM3OGNkLCAjMDEyMDM2KTtcbn1cbmB9LDk5Njg5KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVl'@; put 'OiEwfSksai5uZWVkc1JldHJ5PXZvaWQgMCxqLm5lZWRzUmV0cnk9eT0+ISF5JiYoeS5pbmNsdWRlcygnImVycm9yQ29kZSI6NDAzJykmJnkuaW5jbHVkZXMoIl9jc3JmIikmJnkuaW5jbHVkZXMoIlgtQ1NSRi1UT0tFTiIpfHx5LmluY2x1ZGVzKCcic3RhdHVzIjo0MDMnKSYmeS5pbmNsdWRl'@; put 'cygnImVycm9yIjoiRm9yYmlkZGVuIicpfHx5LmluY2x1ZGVzKCcic3RhdHVzIjo0NDknKSYmeS5pbmNsdWRlcygiQXV0aGVudGljYXRpb24gc3VjY2VzcywgcmV0cnkgb3JpZ2luYWwgcmVxdWVzdCIpKX0sNzMzODkoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShq'@; put 'LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnBhcnNlR2VuZXJhdGVkQ29kZT12b2lkIDAsai5wYXJzZUdlbmVyYXRlZENvZGU9eT0+eS5zcGxpdCgiXG4iKS5maWx0ZXIodj0+di50cmltKCkuc3RhcnRzV2l0aCgiTVBSSU5UIikpLmpvaW4oIlxyXG4iKX0sODMyNShmZSxqKXsidXNlIHN0'@; put 'cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGoucGFyc2VTYXNWaXlhTG9nPXZvaWQgMCxqLnBhcnNlU2FzVml5YUxvZz15PT57bGV0IGM7dHJ5e2M9eS5pdGVtcz95Lml0ZW1zLm1hcChzPT5zLmxpbmUpLmpvaW4oIlxuIik6SlNPTi5zdHJp'@; put 'bmdpZnkoeSl9Y2F0Y2gocyl7Y29uc29sZS5lcnJvcigiQW4gZXJyb3IgaGFzIG9jY3VycmVkIHdoaWxlIHBhcnNpbmcgdGhlIGxvZyByZXNwb25zZSIscyksYz15fXJldHVybiBjfX0sMjM2MTcoZmUsail7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxl'@; put 'Iix7dmFsdWU6ITB9KSxqLnBhcnNlU291cmNlQ29kZT12b2lkIDAsai5wYXJzZVNvdXJjZUNvZGU9eT0+eS5zcGxpdCgiXG4iKS5maWx0ZXIoQT0+QS50cmltKCkuc3Vic3RyaW5nKDAsMTApLnRyaW1TdGFydCgpLm1hdGNoKC9eXGQvKSkuam9pbigiXHJcbiIpfSw3NzI4OChmZSxqLGgpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgeT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oQSx2LEMsdyl7cmV0dXJuIG5ldyhDfHwoQz1Qcm9taXNlKSkoZnVuY3Rpb24oTCxSKXtmdW5jdGlvbiB4KFYpe3RyeXtIKHcubmV4dChWKSl9Y2F0Y2goTil7UihOKX19ZnVuY3Rpb24gVShWKXt0cnl7SCh3'@; put 'LnRocm93KFYpKX1jYXRjaChOKXtSKE4pfX1mdW5jdGlvbiBIKFYpe1YuZG9uZT9MKFYudmFsdWUpOmZ1bmN0aW9uIFMoTCl7cmV0dXJuIEwgaW5zdGFuY2VvZiBDP0w6bmV3IEMoZnVuY3Rpb24oUil7UihMKX0pfShWLnZhbHVlKS50aGVuKHgsVSl9SCgodz13LmFwcGx5KEEsdnx8W10pKS5u'@; put 'ZXh0KCkpfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxqLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2U9dm9pZCAwO2NvbnN0IGM9aCgyOTI2Nik7ai5wYXJzZVNhc1ZpeWFEZWJ1Z1Jlc3BvbnNlPShBLHYsQyk9Pnkodm9pZCAwLHZvaWQgMCx2'@; put 'b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3Qgdz1BLnNwbGl0KC88aWZyYW1lIHN0eWxlPSJ3aWR0aDogOTklOyBoZWlnaHQ6IDUwMHB4IiBzcmM9Inw8aWZyYW1lIHN0eWxlPSJ3aWR0aDogOTklOyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOkNhbnZhczsiIHNyYz0vKVsxXSxTPXc/'@; put 'dy5zcGxpdCgvIj48XC9pZnJhbWU+fD48XC9pZnJhbWU+LylbMF06bnVsbDtpZighUyl0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHdlYm91dCBmaWxlIFVSTC4iKTtyZXR1cm4gdi5nZXQoQytTLHZvaWQgMCwidGV4dC9wbGFpbiIpLnRoZW4oTD0+KDAsYy5nZXRWYWxpZEpzb24p'@; put 'KEwucmVzdWx0KSl9KX0sMzYwMjQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHYsQyx3LFMpe3JldHVybiBuZXcod3x8KHc9UHJvbWlzZSkpKGZ1bmN0aW9uKFIseCl7ZnVuY3Rpb24gVShOKXt0cnl7VihTLm5leHQoTikpfWNhdGNo'@; put 'KHope3goeil9fWZ1bmN0aW9uIEgoTil7dHJ5e1YoUy50aHJvdyhOKSl9Y2F0Y2goeil7eCh6KX19ZnVuY3Rpb24gVihOKXtOLmRvbmU/UihOLnZhbHVlKTpmdW5jdGlvbiBMKFIpe3JldHVybiBSIGluc3RhbmNlb2Ygdz9SOm5ldyB3KGZ1bmN0aW9uKHgpe3goUil9KX0oTi52YWx1ZSkudGhl'@; put 'bihVLEgpfVYoKFM9Uy5hcHBseSh2LEN8fFtdKSkubmV4dCgpKX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5wYXJzZVNhc1ZpeWFMb2dEZWJ1Z1Jlc3BvbnNlPXZvaWQgMDtjb25zdCBjPWgoNDU4ODApLHM9aCg2NzY0MCk7ai5wYXJzZVNh'@; put 'c1ZpeWFMb2dEZWJ1Z1Jlc3BvbnNlPXY9Pnkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoInN0cmluZyIhPXR5cGVvZiB2KXJldHVybiB2O2NvbnN0IEM9di5tYXRjaCgvbmV3IEJsb2JcKFxbYChbXHNcU10qPylgXF0sXHMqXHt0eXBlOlxzKicoPzphcHBsaWNhdGlvblwv'@; put 'anNvbnx0ZXh0XC9wbGFpbiknXH1cKS8pO2lmKCFDKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgd2Vib3V0IGJsb2IgaW4gZGVidWcgbG9nIHJlc3BvbnNlLiIpO2NvbnN0IHc9Q1sxXSxTPXcuaW5jbHVkZXMoIj4+d2Vib3V0QkVHSU48PCIpPygwLHMucGFyc2VXZWJvdXRSZXNw'@; put 'b25zZSkodyk6dztyZXR1cm4oMCxjLmdldFZhbGlkSnNvbikoUyl9KX0sNjc2NDAoZmUsaixoKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGoucGFyc2VXZWJvdXRSZXNwb25zZT12b2lkIDA7Y29uc3QgeT1oKDE3Mzg4KTtq'@; put 'LnBhcnNlV2Vib3V0UmVzcG9uc2U9KHMsQSk9PntsZXQgdj0iIjtpZihzLmluY2x1ZGVzKCI+PndlYm91dEJFR0lOPDwiKSl0cnl7dj1zLnNwbGl0KCI+PndlYm91dEJFR0lOPDwiKVsxXS5zcGxpdCgiPj53ZWJvdXRFTkQ8PCIpWzBdfWNhdGNoKEMpe2lmKEEpdGhyb3cgbmV3IHkuV2Vib3V0'@; put 'UmVzcG9uc2VFcnJvcihBKTt2PSIiLGNvbnNvbGUuZXJyb3IoQyl9cmV0dXJuIHZ9fSwzODU0OChmZSxqKXsidXNlIHN0cmljdCI7ai5leHRyYWN0VXNlckxvbmdOYW1lU2FzOT12b2lkIDA7Y29uc3QgeT1bIkxvZyBPZmYiXTtqLmV4dHJhY3RVc2VyTG9uZ05hbWVTYXM5PXM9Pntjb25zdCB2'@; put 'PXM/Lm1hdGNoKC8idGl0bGUiOlxzPyIuKj8iLyk7bGV0IEM9dj8uWzBdLnNwbGl0KCI6IilbMV0udHJpbSgpLHc9Qz8uaW5kZXhPZigiICIpO3JldHVybiBDPyh5Lm1hcChTPT57Y29uc3QgTD1DPy5pbmRleE9mKFMpfHwtMTtMPi0xJiYodz1MK1MubGVuZ3RoKX0pLEMuc2xpY2UodywtMSku'@; put 'dHJpbSgpKToidW5rbm93biJ9fSwxODQyNChmZSxqKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouc2VyaWFsaXplPXZvaWQgMCxqLnNlcmlhbGl6ZT15PT57Y29uc3QgYz1bXTtmb3IoY29uc3QgcyBpbiB5KWlmKHkuaGFz'@; put 'T3duUHJvcGVydHkocykpaWYoeVtzXWluc3RhbmNlb2YgQXJyYXkpZm9yKGxldCBBPTAsdj15W3NdLmxlbmd0aDtBPHY7QSsrKWMucHVzaChlbmNvZGVVUklDb21wb25lbnQocykrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh5W3NdW0FdKSk7ZWxzZSBjLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50'@; put 'KHMpKyI9IitlbmNvZGVVUklDb21wb25lbnQoeVtzXSkpO3JldHVybiBjLmpvaW4oIiYiKX19LDE4NzIwKGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksai5zcGxpdENodW5rcz12b2lkIDAsai5zcGxpdENodW5rcz15'@; put 'PT57Y29uc3Qgcz1NYXRoLmNlaWwoeS5sZW5ndGgvMTZlMyksQT1uZXcgQXJyYXkocyk7Zm9yKGxldCB2PTAsQz0wO3Y8czsrK3YsQys9MTZlMylBW3ZdPXkuc3Vic3RyKEMsMTZlMyk7cmV0dXJuIEF9fSw4MTI4KGZlLGopeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoaiwi'@; put 'X19lc01vZHVsZSIse3ZhbHVlOiEwfSksai52YWxpZGF0ZUlucHV0PWouSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkU9ai5NT1JFX0lORk89dm9pZCAwLGouTU9SRV9JTkZPPSJGb3IgbW9yZSBpbmZvIHNlZSBodHRwczovL3Nhc2pzLmlvL3Nhc2pzLWFkYXB0ZXIvI3JlcXVlc3QtcmVzcG9uc2Ui'@; put 'LGouSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkU9YFBhcmFtZXRlciBkYXRhIGNvbnRhaW5zIGludmFsaWQgdGFibGUgc3RydWN0dXJlLiAke2ouTU9SRV9JTkZPfWAsai52YWxpZGF0ZUlucHV0PWM9PntpZihudWxsPT09YylyZXR1cm57c3RhdHVzOiEwLG1zZzoiIn07aWYoIm9iamVjdCIhPT15'@; put 'KGMpKXJldHVybntzdGF0dXM6ITEsbXNnOmouSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkV9O2NvbnN0IHM9QT0+QS5tYXRjaCgvXlwkLiovKSYmT2JqZWN0LmtleXMoYykuaW5jbHVkZXMoQS5yZXBsYWNlKC9eXCQvLCIiKSk7Zm9yKGNvbnN0IEEgaW4gYyl7aWYoIUEubWF0Y2goL15bYS16QS1a'@; put 'X10vKSYmIXMoQSkpcmV0dXJue3N0YXR1czohMSxtc2c6IkZpcnN0IGxldHRlciBvZiB0YWJsZSBzaG91bGQgYmUgYWxwaGFiZXQgb3IgdW5kZXJzY29yZS4ifTtpZighQS5tYXRjaCgvXlthLXpBLVpfXVthLXpBLVowLTlfXSokLykmJiFzKEEpKXJldHVybntzdGF0dXM6ITEsbXNnOiJUYWJs'@; put 'ZSBuYW1lIHNob3VsZCBiZSBhbHBoYW51bWVyaWMuIn07aWYoQS5sZW5ndGg+MzIpcmV0dXJue3N0YXR1czohMSxtc2c6Ik1heGltdW0gbGVuZ3RoIGZvciB0YWJsZSBuYW1lIGNvdWxkIGJlIDMyIGNoYXJhY3RlcnMuIn07aWYoIkFycmF5IiE9PXkoY1tBXSkmJiFzKEEpKXJldHVybntzdGF0'@; put 'dXM6ITEsbXNnOmouSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkV9O2lmKEFycmF5LmlzQXJyYXkoY1tBXSkpZm9yKGNvbnN0IHYgb2YgY1tBXSl7aWYoIm9iamVjdCIhPT15KHYpKXJldHVybntzdGF0dXM6ITEsbXNnOmBUYWJsZSAke0F9IGNvbnRhaW5zIGludmFsaWQgc3RydWN0dXJlLiAke2ou'@; put 'TU9SRV9JTkZPfWB9O3tjb25zdCBDPU9iamVjdC5rZXlzKHYpO2Zvcihjb25zdCB3IG9mIEMpaWYodm9pZCAwPT09dlt3XSlyZXR1cm57c3RhdHVzOiExLG1zZzpgQSByb3cgaW4gdGFibGUgJHtBfSBjb250YWlucyBpbnZhbGlkIHZhbHVlLiBDYW4ndCBhc3NpZ24gdW5kZWZpbmVkIHRvICR7'@; put 'd30uYH19fX1yZXR1cm57c3RhdHVzOiEwLG1zZzoiIn19O2NvbnN0IHk9Yz0+QXJyYXkuaXNBcnJheShjKT8iQXJyYXkiOnR5cGVvZiBjfSw3NDM3MihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY5Njc1KSxzPWgoMzY1NTYpKCJUeXBlZEFycmF5LnByb3RvdHlwZS5idWZmZXIiLCEw'@; put 'KSxBPWgoMzU2ODApO2ZlLmV4cG9ydHM9c3x8ZnVuY3Rpb24oQyl7aWYoIUEoQykpdGhyb3cgbmV3IHkoIk5vdCBhIFR5cGVkIEFycmF5Iik7cmV0dXJuIEMuYnVmZmVyfX0sNDEyMzYoZmUsail7InVzZSBzdHJpY3QiO2ouZnJvbUNhbGxiYWNrPWZ1bmN0aW9uKGgpe3JldHVybiBPYmplY3Qu'@; put 'ZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oLi4ueSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHlbeS5sZW5ndGgtMV0pcmV0dXJuIG5ldyBQcm9taXNlKChjLHMpPT57eS5wdXNoKChBLHYpPT5udWxsIT1BP3MoQSk6Yyh2KSksaC5hcHBseSh0aGlzLHkpfSk7aC5hcHBseSh0aGlzLHkpfSwibmFt'@; put 'ZSIse3ZhbHVlOmgubmFtZX0pfSxqLmZyb21Qcm9taXNlPWZ1bmN0aW9uKGgpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oLi4ueSl7Y29uc3QgYz15W3kubGVuZ3RoLTFdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjKXJldHVybiBoLmFwcGx5KHRoaXMseSk7eS5wb3Ao'@; put 'KSxoLmFwcGx5KHRoaXMseSkudGhlbihzPT5jKG51bGwscyksYyl9LCJuYW1lIix7dmFsdWU6aC5uYW1lfSl9fSw2MTE2MChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkyMDYzKSxjPWgoNzM5OTIpLHM9L15bXHgwMC1ceDIwXHUwMGEwXHUxNjgwXHUyMDAwLVx1MjAwYVx1MjAyOFx1'@; put 'MjAyOVx1MjAyZlx1MjA1Zlx1MzAwMFx1ZmVmZl0rLyxBPS9bXG5cclx0XS9nLHY9L15bQS1aYS16XVtBLVphLXowLTkrLS5dKjpcL1wvLyxDPS86XGQrJC8sdz0vXihbYS16XVthLXowLTkuKy1dKjopPyhcL1wvKT8oW1xcL10rKT8oW1xTXHNdKikvaSxTPS9eW2EtekEtWl06LztmdW5jdGlv'@; put 'biBMKFcpe3JldHVybihXfHwiIikudG9TdHJpbmcoKS5yZXBsYWNlKHMsIiIpfXZhciBSPVtbIiMiLCJoYXNoIl0sWyI/IiwicXVlcnkiXSxmdW5jdGlvbihxLHJlKXtyZXR1cm4gSChyZS5wcm90b2NvbCk/cS5yZXBsYWNlKC9cXC9nLCIvIik6cX0sWyIvIiwicGF0aG5hbWUiXSxbIkAiLCJh'@; put 'dXRoIiwxXSxbTmFOLCJob3N0Iix2b2lkIDAsMSwxXSxbLzooXGQqKSQvLCJwb3J0Iix2b2lkIDAsMV0sW05hTiwiaG9zdG5hbWUiLHZvaWQgMCwxLDFdXSx4PXtoYXNoOjEscXVlcnk6MX07ZnVuY3Rpb24gVShXKXt2YXIgcTtxPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgaC5n'@; put 'PCJ1Ij9oLmc6dHlwZW9mIHNlbGY8InUiP3NlbGY6e307dmFyIEllLG1lPXt9LENlPXR5cGVvZihXPVd8fHEubG9jYXRpb258fHt9KTtpZigiYmxvYjoiPT09Vy5wcm90b2NvbCltZT1uZXcgeih1bmVzY2FwZShXLnBhdGhuYW1lKSx7fSk7ZWxzZSBpZigic3RyaW5nIj09PUNlKWZvcihJZSBp'@; put 'biBtZT1uZXcgeihXLHt9KSx4KWRlbGV0ZSBtZVtJZV07ZWxzZSBpZigib2JqZWN0Ij09PUNlKXtmb3IoSWUgaW4gVylJZSBpbiB4fHwobWVbSWVdPVdbSWVdKTt2b2lkIDA9PT1tZS5zbGFzaGVzJiYobWUuc2xhc2hlcz12LnRlc3QoVy5ocmVmKSl9cmV0dXJuIG1lfWZ1bmN0aW9uIEgoVyl7'@; put 'cmV0dXJuImZpbGU6Ij09PVd8fCJmdHA6Ij09PVd8fCJodHRwOiI9PT1XfHwiaHR0cHM6Ij09PVd8fCJ3czoiPT09V3x8IndzczoiPT09V31mdW5jdGlvbiBWKFcscSl7Vz0oVz1MKFcpKS5yZXBsYWNlKEEsIiIpLHE9cXx8e307dmFyIHFlLHJlPXcuZXhlYyhXKSxtZT1yZVsxXT9yZVsxXS50'@; put 'b0xvd2VyQ2FzZSgpOiIiLENlPSEhcmVbMl0sSWU9ISFyZVszXSxrZT0wO3JldHVybiBDZT9JZT8ocWU9cmVbMl0rcmVbM10rcmVbNF0sa2U9cmVbMl0ubGVuZ3RoK3JlWzNdLmxlbmd0aCk6KHFlPXJlWzJdK3JlWzRdLGtlPXJlWzJdLmxlbmd0aCk6SWU/KHFlPXJlWzNdK3JlWzRdLGtlPXJl'@; put 'WzNdLmxlbmd0aCk6cWU9cmVbNF0sImZpbGU6Ij09PW1lP2tlPj0yJiYocWU9cWUuc2xpY2UoMikpOkgobWUpP3FlPXJlWzRdOm1lP0NlJiYocWU9cWUuc2xpY2UoMikpOmtlPj0yJiZIKHEucHJvdG9jb2wpJiYocWU9cmVbNF0pLHtwcm90b2NvbDptZSxzbGFzaGVzOkNlfHxIKG1lKSxzbGFz'@; put 'aGVzQ291bnQ6a2UscmVzdDpxZX19ZnVuY3Rpb24geihXLHEscmUpe2lmKFc9KFc9TChXKSkucmVwbGFjZShBLCIiKSwhKHRoaXMgaW5zdGFuY2VvZiB6KSlyZXR1cm4gbmV3IHooVyxxLHJlKTt2YXIgbWUsQ2UsSWUsa2UscWUsWCxmPVIuc2xpY2UoKSxiPXR5cGVvZiBxLGs9dGhpcyxNPTA7'@; put 'Zm9yKCJvYmplY3QiIT09YiYmInN0cmluZyIhPT1iJiYocmU9cSxxPW51bGwpLHJlJiYiZnVuY3Rpb24iIT10eXBlb2YgcmUmJihyZT1jLnBhcnNlKSxtZT0hKENlPVYoV3x8IiIscT1VKHEpKSkucHJvdG9jb2wmJiFDZS5zbGFzaGVzLGsuc2xhc2hlcz1DZS5zbGFzaGVzfHxtZSYmcS5zbGFz'@; put 'aGVzLGsucHJvdG9jb2w9Q2UucHJvdG9jb2x8fHEucHJvdG9jb2x8fCIiLFc9Q2UucmVzdCwoImZpbGU6Ij09PUNlLnByb3RvY29sJiYoMiE9PUNlLnNsYXNoZXNDb3VudHx8Uy50ZXN0KFcpKXx8IUNlLnNsYXNoZXMmJihDZS5wcm90b2NvbHx8Q2Uuc2xhc2hlc0NvdW50PDJ8fCFIKGsucHJv'@; put 'dG9jb2wpKSkmJihmWzNdPVsvKC4qKS8sInBhdGhuYW1lIl0pO008Zi5sZW5ndGg7TSsrKSJmdW5jdGlvbiIhPXR5cGVvZihrZT1mW01dKT8oWD1rZVsxXSwoSWU9a2VbMF0pIT1JZT9rW1hdPVc6InN0cmluZyI9PXR5cGVvZiBJZT9+KHFlPSJAIj09PUllP1cubGFzdEluZGV4T2YoSWUpOlcu'@; put 'aW5kZXhPZihJZSkpJiYoIm51bWJlciI9PXR5cGVvZiBrZVsyXT8oa1tYXT1XLnNsaWNlKDAscWUpLFc9Vy5zbGljZShxZStrZVsyXSkpOihrW1hdPVcuc2xpY2UocWUpLFc9Vy5zbGljZSgwLHFlKSkpOihxZT1JZS5leGVjKFcpKSYmKGtbWF09cWVbMV0sVz1XLnNsaWNlKDAscWUuaW5kZXgp'@; put 'KSxrW1hdPWtbWF18fG1lJiZrZVszXSYmcVtYXXx8IiIsa2VbNF0mJihrW1hdPWtbWF0udG9Mb3dlckNhc2UoKSkpOlc9a2UoVyxrKTtyZSYmKGsucXVlcnk9cmUoay5xdWVyeSkpLG1lJiZxLnNsYXNoZXMmJiIvIiE9PWsucGF0aG5hbWUuY2hhckF0KDApJiYoIiIhPT1rLnBhdGhuYW1lfHwi'@; put 'IiE9PXEucGF0aG5hbWUpJiYoay5wYXRobmFtZT1mdW5jdGlvbiBOKFcscSl7aWYoIiI9PT1XKXJldHVybiBxO2Zvcih2YXIgcmU9KHF8fCIvIikuc3BsaXQoIi8iKS5zbGljZSgwLC0xKS5jb25jYXQoVy5zcGxpdCgiLyIpKSxtZT1yZS5sZW5ndGgsQ2U9cmVbbWUtMV0sSWU9ITEsa2U9MDtt'@; put 'ZS0tOykiLiI9PT1yZVttZV0/cmUuc3BsaWNlKG1lLDEpOiIuLiI9PT1yZVttZV0/KHJlLnNwbGljZShtZSwxKSxrZSsrKTprZSYmKDA9PT1tZSYmKEllPSEwKSxyZS5zcGxpY2UobWUsMSksa2UtLSk7cmV0dXJuIEllJiZyZS51bnNoaWZ0KCIiKSwoIi4iPT09Q2V8fCIuLiI9PT1DZSkmJnJl'@; put 'LnB1c2goIiIpLHJlLmpvaW4oIi8iKX0oay5wYXRobmFtZSxxLnBhdGhuYW1lKSksIi8iIT09ay5wYXRobmFtZS5jaGFyQXQoMCkmJkgoay5wcm90b2NvbCkmJihrLnBhdGhuYW1lPSIvIitrLnBhdGhuYW1lKSx5KGsucG9ydCxrLnByb3RvY29sKXx8KGsuaG9zdD1rLmhvc3RuYW1lLGsucG9y'@; put 'dD0iIiksay51c2VybmFtZT1rLnBhc3N3b3JkPSIiLGsuYXV0aCYmKH4ocWU9ay5hdXRoLmluZGV4T2YoIjoiKSk/KGsudXNlcm5hbWU9ay5hdXRoLnNsaWNlKDAscWUpLGsudXNlcm5hbWU9ZW5jb2RlVVJJQ29tcG9uZW50KGRlY29kZVVSSUNvbXBvbmVudChrLnVzZXJuYW1lKSksay5wYXNz'@; put 'd29yZD1rLmF1dGguc2xpY2UocWUrMSksay5wYXNzd29yZD1lbmNvZGVVUklDb21wb25lbnQoZGVjb2RlVVJJQ29tcG9uZW50KGsucGFzc3dvcmQpKSk6ay51c2VybmFtZT1lbmNvZGVVUklDb21wb25lbnQoZGVjb2RlVVJJQ29tcG9uZW50KGsuYXV0aCkpLGsuYXV0aD1rLnBhc3N3b3JkP2su'@; put 'dXNlcm5hbWUrIjoiK2sucGFzc3dvcmQ6ay51c2VybmFtZSksay5vcmlnaW49ImZpbGU6IiE9PWsucHJvdG9jb2wmJkgoay5wcm90b2NvbCkmJmsuaG9zdD9rLnByb3RvY29sKyIvLyIray5ob3N0OiJudWxsIixrLmhyZWY9ay50b1N0cmluZygpfXoucHJvdG90eXBlPXtzZXQ6ZnVuY3Rpb24g'@; put 'WShXLHEscmUpe3ZhciBtZT10aGlzO3N3aXRjaChXKXtjYXNlInF1ZXJ5Ijoic3RyaW5nIj09dHlwZW9mIHEmJnEubGVuZ3RoJiYocT0ocmV8fGMucGFyc2UpKHEpKSxtZVtXXT1xO2JyZWFrO2Nhc2UicG9ydCI6bWVbV109cSx5KHEsbWUucHJvdG9jb2wpP3EmJihtZS5ob3N0PW1lLmhvc3Ru'@; put 'YW1lKyI6IitxKToobWUuaG9zdD1tZS5ob3N0bmFtZSxtZVtXXT0iIik7YnJlYWs7Y2FzZSJob3N0bmFtZSI6bWVbV109cSxtZS5wb3J0JiYocSs9IjoiK21lLnBvcnQpLG1lLmhvc3Q9cTticmVhaztjYXNlImhvc3QiOm1lW1ddPXEsQy50ZXN0KHEpPyhxPXEuc3BsaXQoIjoiKSxtZS5wb3J0'@; put 'PXEucG9wKCksbWUuaG9zdG5hbWU9cS5qb2luKCI6IikpOihtZS5ob3N0bmFtZT1xLG1lLnBvcnQ9IiIpO2JyZWFrO2Nhc2UicHJvdG9jb2wiOm1lLnByb3RvY29sPXEudG9Mb3dlckNhc2UoKSxtZS5zbGFzaGVzPSFyZTticmVhaztjYXNlInBhdGhuYW1lIjpjYXNlImhhc2giOmlmKHEpe3Zh'@; put 'ciBDZT0icGF0aG5hbWUiPT09Vz8iLyI6IiMiO21lW1ddPXEuY2hhckF0KDApIT09Q2U/Q2UrcTpxfWVsc2UgbWVbV109cTticmVhaztjYXNlInVzZXJuYW1lIjpjYXNlInBhc3N3b3JkIjptZVtXXT1lbmNvZGVVUklDb21wb25lbnQocSk7YnJlYWs7Y2FzZSJhdXRoIjp2YXIgSWU9cS5pbmRl'@; put 'eE9mKCI6Iik7fkllPyhtZS51c2VybmFtZT1xLnNsaWNlKDAsSWUpLG1lLnVzZXJuYW1lPWVuY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUklDb21wb25lbnQobWUudXNlcm5hbWUpKSxtZS5wYXNzd29yZD1xLnNsaWNlKEllKzEpLG1lLnBhc3N3b3JkPWVuY29kZVVSSUNvbXBvbmVudChkZWNv'@; put 'ZGVVUklDb21wb25lbnQobWUucGFzc3dvcmQpKSk6bWUudXNlcm5hbWU9ZW5jb2RlVVJJQ29tcG9uZW50KGRlY29kZVVSSUNvbXBvbmVudChxKSl9Zm9yKHZhciBrZT0wO2tlPFIubGVuZ3RoO2tlKyspe3ZhciBxZT1SW2tlXTtxZVs0XSYmKG1lW3FlWzFdXT1tZVtxZVsxXV0udG9Mb3dlckNh'@; put 'c2UoKSl9cmV0dXJuIG1lLmF1dGg9bWUucGFzc3dvcmQ/bWUudXNlcm5hbWUrIjoiK21lLnBhc3N3b3JkOm1lLnVzZXJuYW1lLG1lLm9yaWdpbj0iZmlsZToiIT09bWUucHJvdG9jb2wmJkgobWUucHJvdG9jb2wpJiZtZS5ob3N0P21lLnByb3RvY29sKyIvLyIrbWUuaG9zdDoibnVsbCIsbWUu'@; put 'aHJlZj1tZS50b1N0cmluZygpLG1lfSx0b1N0cmluZzpmdW5jdGlvbiBGKFcpeyghV3x8ImZ1bmN0aW9uIiE9dHlwZW9mIFcpJiYoVz1jLnN0cmluZ2lmeSk7dmFyIHEscmU9dGhpcyxtZT1yZS5ob3N0LENlPXJlLnByb3RvY29sO0NlJiYiOiIhPT1DZS5jaGFyQXQoQ2UubGVuZ3RoLTEpJiYo'@; put 'Q2UrPSI6Iik7dmFyIEllPUNlKyhyZS5wcm90b2NvbCYmcmUuc2xhc2hlc3x8SChyZS5wcm90b2NvbCk/Ii8vIjoiIik7cmV0dXJuIHJlLnVzZXJuYW1lPyhJZSs9cmUudXNlcm5hbWUscmUucGFzc3dvcmQmJihJZSs9IjoiK3JlLnBhc3N3b3JkKSxJZSs9IkAiKTpyZS5wYXNzd29yZD8oSWUr'@; put 'PSI6IityZS5wYXNzd29yZCxJZSs9IkAiKToiZmlsZToiIT09cmUucHJvdG9jb2wmJkgocmUucHJvdG9jb2wpJiYhbWUmJiIvIiE9PXJlLnBhdGhuYW1lJiYoSWUrPSJAIiksKCI6Ij09PW1lW21lLmxlbmd0aC0xXXx8Qy50ZXN0KHJlLmhvc3RuYW1lKSYmIXJlLnBvcnQpJiYobWUrPSI6Iiks'@; put 'SWUrPW1lK3JlLnBhdGhuYW1lLChxPSJvYmplY3QiPT10eXBlb2YgcmUucXVlcnk/VyhyZS5xdWVyeSk6cmUucXVlcnkpJiYoSWUrPSI/IiE9PXEuY2hhckF0KDApPyI/IitxOnEpLHJlLmhhc2gmJihJZSs9cmUuaGFzaCksSWV9fSx6LmV4dHJhY3RQcm90b2NvbD1WLHoubG9jYXRpb249VSx6'@; put 'LnRyaW1MZWZ0PUwsei5xcz1jLGZlLmV4cG9ydHM9en0sOTQ2NDMoZmUsaixoKXtmdW5jdGlvbiBjKHMpe3RyeXtpZighaC5nLmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaHtyZXR1cm4hMX12YXIgQT1oLmcubG9jYWxTdG9yYWdlW3NdO3JldHVybiBudWxsIT1BJiYidHJ1ZSI9PT1TdHJp'@; put 'bmcoQSkudG9Mb3dlckNhc2UoKX1mZS5leHBvcnRzPWZ1bmN0aW9uIHkocyxBKXtpZihjKCJub0RlcHJlY2F0aW9uIikpcmV0dXJuIHM7dmFyIHY9ITE7cmV0dXJuIGZ1bmN0aW9uIEMoKXtpZighdil7aWYoYygidGhyb3dEZXByZWNhdGlvbiIpKXRocm93IG5ldyBFcnJvcihBKTtjKCJ0cmFj'@; put 'ZURlcHJlY2F0aW9uIik/Y29uc29sZS50cmFjZShBKTpjb25zb2xlLndhcm4oQSksdj0hMH1yZXR1cm4gcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0sODExMzUoZmUpe2ZlLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIGgmJiJvYmplY3QiPT10eXBlb2YgaCYmImZ1bmN0aW9uIj09dHlw'@; put 'ZW9mIGguY29weSYmImZ1bmN0aW9uIj09dHlwZW9mIGguZmlsbCYmImZ1bmN0aW9uIj09dHlwZW9mIGgucmVhZFVJbnQ4fX0sNDkwMzIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0NzI0NCksYz1oKDQ4MTg0KSxzPWgoMjU3NjcpLEE9aCgzNTY4MCk7ZnVuY3Rpb24gdih3ZSl7cmV0'@; put 'dXJuIHdlLmNhbGwuYmluZCh3ZSl9dmFyIEM9dHlwZW9mIEJpZ0ludDwidSIsdz10eXBlb2YgU3ltYm9sPCJ1IixTPXYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyksTD12KE51bWJlci5wcm90b3R5cGUudmFsdWVPZiksUj12KFN0cmluZy5wcm90b3R5cGUudmFsdWVPZikseD12KEJvb2xl'@; put 'YW4ucHJvdG90eXBlLnZhbHVlT2YpO2lmKEMpdmFyIFU9dihCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YpO2lmKHcpdmFyIEg9dihTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO2Z1bmN0aW9uIFYod2UsSmUpe2lmKCJvYmplY3QiIT10eXBlb2Ygd2UpcmV0dXJuITE7dHJ5e3JldHVybiBKZSh3'@; put 'ZSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIGYod2Upe3JldHVybiJbb2JqZWN0IE1hcF0iPT09Uyh3ZSl9ZnVuY3Rpb24gayh3ZSl7cmV0dXJuIltvYmplY3QgU2V0XSI9PT1TKHdlKX1mdW5jdGlvbiBCKHdlKXtyZXR1cm4iW29iamVjdCBXZWFrTWFwXSI9PT1TKHdlKX1mdW5jdGlv'@; put 'biBHKHdlKXtyZXR1cm4iW29iamVjdCBXZWFrU2V0XSI9PT1TKHdlKX1mdW5jdGlvbiBwKHdlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09Uyh3ZSl9ZnVuY3Rpb24gSSh3ZSl7cmV0dXJuISh0eXBlb2YgQXJyYXlCdWZmZXI+InUiKSYmKHAud29ya2luZz9wKHdlKTp3ZSBpbnN0'@; put 'YW5jZW9mIEFycmF5QnVmZmVyKX1mdW5jdGlvbiB1ZSh3ZSl7cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIj09PVMod2UpfWZ1bmN0aW9uIG5lKHdlKXtyZXR1cm4hKHR5cGVvZiBEYXRhVmlldz4idSIpJiYodWUud29ya2luZz91ZSh3ZSk6d2UgaW5zdGFuY2VvZiBEYXRhVmlldyl9ai5pc0Fy'@; put 'Z3VtZW50c09iamVjdD15LGouaXNHZW5lcmF0b3JGdW5jdGlvbj1jLGouaXNUeXBlZEFycmF5PUEsai5pc1Byb21pc2U9ZnVuY3Rpb24gTih3ZSl7cmV0dXJuIHR5cGVvZiBQcm9taXNlPCJ1IiYmd2UgaW5zdGFuY2VvZiBQcm9taXNlfHxudWxsIT09d2UmJiJvYmplY3QiPT10eXBlb2Ygd2Um'@; put 'JiJmdW5jdGlvbiI9PXR5cGVvZiB3ZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2Ygd2UuY2F0Y2h9LGouaXNBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24geih3ZSl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcod2Up'@; put 'OkEod2UpfHxuZSh3ZSl9LGouaXNVaW50OEFycmF5PWZ1bmN0aW9uIFkod2Upe3JldHVybiJVaW50OEFycmF5Ij09PXMod2UpfSxqLmlzVWludDhDbGFtcGVkQXJyYXk9ZnVuY3Rpb24gRih3ZSl7cmV0dXJuIlVpbnQ4Q2xhbXBlZEFycmF5Ij09PXMod2UpfSxqLmlzVWludDE2QXJyYXk9ZnVu'@; put 'Y3Rpb24gVyh3ZSl7cmV0dXJuIlVpbnQxNkFycmF5Ij09PXMod2UpfSxqLmlzVWludDMyQXJyYXk9ZnVuY3Rpb24gcSh3ZSl7cmV0dXJuIlVpbnQzMkFycmF5Ij09PXMod2UpfSxqLmlzSW50OEFycmF5PWZ1bmN0aW9uIHJlKHdlKXtyZXR1cm4iSW50OEFycmF5Ij09PXMod2UpfSxqLmlzSW50'@; put 'MTZBcnJheT1mdW5jdGlvbiBtZSh3ZSl7cmV0dXJuIkludDE2QXJyYXkiPT09cyh3ZSl9LGouaXNJbnQzMkFycmF5PWZ1bmN0aW9uIENlKHdlKXtyZXR1cm4iSW50MzJBcnJheSI9PT1zKHdlKX0sai5pc0Zsb2F0MzJBcnJheT1mdW5jdGlvbiBJZSh3ZSl7cmV0dXJuIkZsb2F0MzJBcnJheSI9'@; put 'PT1zKHdlKX0sai5pc0Zsb2F0NjRBcnJheT1mdW5jdGlvbiBrZSh3ZSl7cmV0dXJuIkZsb2F0NjRBcnJheSI9PT1zKHdlKX0sai5pc0JpZ0ludDY0QXJyYXk9ZnVuY3Rpb24gcWUod2Upe3JldHVybiJCaWdJbnQ2NEFycmF5Ij09PXMod2UpfSxqLmlzQmlnVWludDY0QXJyYXk9ZnVuY3Rpb24g'@; put 'WCh3ZSl7cmV0dXJuIkJpZ1VpbnQ2NEFycmF5Ij09PXMod2UpfSxmLndvcmtpbmc9dHlwZW9mIE1hcDwidSImJmYobmV3IE1hcCksai5pc01hcD1mdW5jdGlvbiBiKHdlKXtyZXR1cm4hKHR5cGVvZiBNYXA+InUiKSYmKGYud29ya2luZz9mKHdlKTp3ZSBpbnN0YW5jZW9mIE1hcCl9LGsud29y'@; put 'a2luZz10eXBlb2YgU2V0PCJ1IiYmayhuZXcgU2V0KSxqLmlzU2V0PWZ1bmN0aW9uIE0od2Upe3JldHVybiEodHlwZW9mIFNldD4idSIpJiYoay53b3JraW5nP2sod2UpOndlIGluc3RhbmNlb2YgU2V0KX0sQi53b3JraW5nPXR5cGVvZiBXZWFrTWFwPCJ1IiYmQihuZXcgV2Vha01hcCksai5p'@; put 'c1dlYWtNYXA9ZnVuY3Rpb24gSyh3ZSl7cmV0dXJuISh0eXBlb2YgV2Vha01hcD4idSIpJiYoQi53b3JraW5nP0Iod2UpOndlIGluc3RhbmNlb2YgV2Vha01hcCl9LEcud29ya2luZz10eXBlb2YgV2Vha1NldDwidSImJkcobmV3IFdlYWtTZXQpLGouaXNXZWFrU2V0PWZ1bmN0aW9uIEQod2Up'@; put 'e3JldHVybiBHKHdlKX0scC53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJnAobmV3IEFycmF5QnVmZmVyKSxqLmlzQXJyYXlCdWZmZXI9SSx1ZS53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJnR5cGVvZiBEYXRhVmlldzwidSImJnVlKG5ldyBEYXRhVmlldyhuZXcgQXJy'@; put 'YXlCdWZmZXIoMSksMCwxKSksai5pc0RhdGFWaWV3PW5lO3ZhciBfZT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiP1NoYXJlZEFycmF5QnVmZmVyOnZvaWQgMDtmdW5jdGlvbiBQZSh3ZSl7cmV0dXJuIltvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJdIj09PVMod2UpfWZ1bmN0aW9uIG90'@; put 'KHdlKXtyZXR1cm4hKHR5cGVvZiBfZT4idSIpJiYodHlwZW9mIFBlLndvcmtpbmc+InUiJiYoUGUud29ya2luZz1QZShuZXcgX2UpKSxQZS53b3JraW5nP1BlKHdlKTp3ZSBpbnN0YW5jZW9mIF9lKX1mdW5jdGlvbiBqZSh3ZSl7cmV0dXJuIFYod2UsTCl9ZnVuY3Rpb24gQWUod2Upe3JldHVy'@; put 'biBWKHdlLFIpfWZ1bmN0aW9uIERlKHdlKXtyZXR1cm4gVih3ZSx4KX1mdW5jdGlvbiBGZSh3ZSl7cmV0dXJuIEMmJlYod2UsVSl9ZnVuY3Rpb24gZ2Uod2Upe3JldHVybiB3JiZWKHdlLEgpfWouaXNTaGFyZWRBcnJheUJ1ZmZlcj1vdCxqLmlzQXN5bmNGdW5jdGlvbj1mdW5jdGlvbiBsdCh3'@; put 'ZSl7cmV0dXJuIltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT09Uyh3ZSl9LGouaXNNYXBJdGVyYXRvcj1mdW5jdGlvbiBkdCh3ZSl7cmV0dXJuIltvYmplY3QgTWFwIEl0ZXJhdG9yXSI9PT1TKHdlKX0sai5pc1NldEl0ZXJhdG9yPWZ1bmN0aW9uIFJlKHdlKXtyZXR1cm4iW29iamVjdCBTZXQg'@; put 'SXRlcmF0b3JdIj09PVMod2UpfSxqLmlzR2VuZXJhdG9yT2JqZWN0PWZ1bmN0aW9uIGFlKHdlKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIj09PVMod2UpfSxqLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZT1mdW5jdGlvbiB4ZSh3ZSl7cmV0dXJuIltvYmplY3QgV2ViQXNzZW1ibHku'@; put 'TW9kdWxlXSI9PT1TKHdlKX0sai5pc051bWJlck9iamVjdD1qZSxqLmlzU3RyaW5nT2JqZWN0PUFlLGouaXNCb29sZWFuT2JqZWN0PURlLGouaXNCaWdJbnRPYmplY3Q9RmUsai5pc1N5bWJvbE9iamVjdD1nZSxqLmlzQm94ZWRQcmltaXRpdmU9ZnVuY3Rpb24gY2Uod2Upe3JldHVybiBqZSh3'@; put 'ZSl8fEFlKHdlKXx8RGUod2UpfHxGZSh3ZSl8fGdlKHdlKX0sai5pc0FueUFycmF5QnVmZmVyPWZ1bmN0aW9uIGhlKHdlKXtyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiYoSSh3ZSl8fG90KHdlKSl9LFsiaXNQcm94eSIsImlzRXh0ZXJuYWwiLCJpc01vZHVsZU5hbWVzcGFjZU9iamVj'@; put 'dCJdLmZvckVhY2goZnVuY3Rpb24od2Upe09iamVjdC5kZWZpbmVQcm9wZXJ0eShqLHdlLHtlbnVtZXJhYmxlOiExLHZhbHVlOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKHdlKyIgaXMgbm90IHN1cHBvcnRlZCBpbiB1c2VybGFuZCIpfX0pfSl9LDQwNTM3KGZlLGosaCl7dmFyIHk9aCg2'@; put 'NTYwNiksYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc3x8ZnVuY3Rpb24oX2Upe2Zvcih2YXIgUGU9T2JqZWN0LmtleXMoX2UpLG90PXt9LGx0PTA7bHQ8UGUubGVuZ3RoO2x0Kyspb3RbUGVbbHRdXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9lLFBlW2x0XSk7'@; put 'cmV0dXJuIG90fSxzPS8lW3NkaiVdL2c7ai5mb3JtYXQ9ZnVuY3Rpb24obmUpe2lmKCFtZShuZSkpe2Zvcih2YXIgX2U9W10sUGU9MDtQZTxhcmd1bWVudHMubGVuZ3RoO1BlKyspX2UucHVzaCh3KGFyZ3VtZW50c1tQZV0pKTtyZXR1cm4gX2Uuam9pbigiICIpfVBlPTE7Zm9yKHZhciBvdD1h'@; put 'cmd1bWVudHMsbHQ9b3QubGVuZ3RoLGR0PVN0cmluZyhuZSkucmVwbGFjZShzLGZ1bmN0aW9uKGFlKXtpZigiJSUiPT09YWUpcmV0dXJuIiUiO2lmKFBlPj1sdClyZXR1cm4gYWU7c3dpdGNoKGFlKXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKG90W1BlKytdKTtjYXNlIiVkIjpyZXR1cm4gTnVt'@; put 'YmVyKG90W1BlKytdKTtjYXNlIiVqIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG90W1BlKytdKX1jYXRjaHtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4gYWV9fSksUmU9b3RbUGVdO1BlPGx0O1JlPW90WysrUGVdKVcoUmUpfHwhcWUoUmUpP2R0Kz0iICIrUmU6ZHQrPSIg'@; put 'Iit3KFJlKTtyZXR1cm4gZHR9LGouZGVwcmVjYXRlPWZ1bmN0aW9uKG5lLF9lKXtpZih0eXBlb2YgeTwidSImJiEwPT09eS5ub0RlcHJlY2F0aW9uKXJldHVybiBuZTtpZih0eXBlb2YgeT4idSIpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGouZGVwcmVjYXRlKG5lLF9lKS5hcHBseSh0aGlz'@; put 'LGFyZ3VtZW50cyl9O3ZhciBQZT0hMTtyZXR1cm4gZnVuY3Rpb24gb3QoKXtpZighUGUpe2lmKHkudGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZXcgRXJyb3IoX2UpO3kudHJhY2VEZXByZWNhdGlvbj9jb25zb2xlLnRyYWNlKF9lKTpjb25zb2xlLmVycm9yKF9lKSxQZT0hMH1yZXR1cm4gbmUu'@; put 'YXBwbHkodGhpcyxhcmd1bWVudHMpfX07dmFyIEE9e30sdj0vXiQvO2lmKHkuZW52Lk5PREVfREVCVUcpe3ZhciBDPXkuZW52Lk5PREVfREVCVUc7Qz1DLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrPy5dL2csIlxcJCYiKS5yZXBsYWNlKC9cKi9nLCIuKiIpLnJlcGxhY2UoLywvZywiJHxeIiku'@; put 'dG9VcHBlckNhc2UoKSx2PW5ldyBSZWdFeHAoIl4iK0MrIiQiLCJpIil9ZnVuY3Rpb24gdyhuZSxfZSl7dmFyIFBlPXtzZWVuOltdLHN0eWxpemU6TH07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTMmJihQZS5kZXB0aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+PTQmJihQZS5j'@; put 'b2xvcnM9YXJndW1lbnRzWzNdKSxGKF9lKT9QZS5zaG93SGlkZGVuPV9lOl9lJiZqLl9leHRlbmQoUGUsX2UpLEllKFBlLnNob3dIaWRkZW4pJiYoUGUuc2hvd0hpZGRlbj0hMSksSWUoUGUuZGVwdGgpJiYoUGUuZGVwdGg9MiksSWUoUGUuY29sb3JzKSYmKFBlLmNvbG9ycz0hMSksSWUoUGUu'@; put 'Y3VzdG9tSW5zcGVjdCkmJihQZS5jdXN0b21JbnNwZWN0PSEwKSxQZS5jb2xvcnMmJihQZS5zdHlsaXplPVMpLHgoUGUsbmUsUGUuZGVwdGgpfWZ1bmN0aW9uIFMobmUsX2Upe3ZhciBQZT13LnN0eWxlc1tfZV07cmV0dXJuIFBlPyJceDFiWyIrdy5jb2xvcnNbUGVdWzBdKyJtIituZSsiXHgx'@; put 'YlsiK3cuY29sb3JzW1BlXVsxXSsibSI6bmV9ZnVuY3Rpb24gTChuZSxfZSl7cmV0dXJuIG5lfWZ1bmN0aW9uIHgobmUsX2UsUGUpe2lmKG5lLmN1c3RvbUluc3BlY3QmJl9lJiZiKF9lLmluc3BlY3QpJiZfZS5pbnNwZWN0IT09ai5pbnNwZWN0JiYoIV9lLmNvbnN0cnVjdG9yfHxfZS5jb25z'@; put 'dHJ1Y3Rvci5wcm90b3R5cGUhPT1fZSkpe3ZhciBvdD1fZS5pbnNwZWN0KFBlLG5lKTtyZXR1cm4gbWUob3QpfHwob3Q9eChuZSxvdCxQZSkpLG90fXZhciBsdD1mdW5jdGlvbiBVKG5lLF9lKXtpZihJZShfZSkpcmV0dXJuIG5lLnN0eWxpemUoInVuZGVmaW5lZCIsInVuZGVmaW5lZCIpO2lm'@; put 'KG1lKF9lKSl7dmFyIFBlPSInIitKU09OLnN0cmluZ2lmeShfZSkucmVwbGFjZSgvXiJ8IiQvZywiIikucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNlKC9cXCIvZywnIicpKyInIjtyZXR1cm4gbmUuc3R5bGl6ZShQZSwic3RyaW5nIil9cmV0dXJuIHJlKF9lKT9uZS5zdHlsaXplKCIiK19l'@; put 'LCJudW1iZXIiKTpGKF9lKT9uZS5zdHlsaXplKCIiK19lLCJib29sZWFuIik6VyhfZSk/bmUuc3R5bGl6ZSgibnVsbCIsIm51bGwiKTp2b2lkIDB9KG5lLF9lKTtpZihsdClyZXR1cm4gbHQ7dmFyIGR0PU9iamVjdC5rZXlzKF9lKSxSZT1mdW5jdGlvbiBSKG5lKXt2YXIgX2U9e307cmV0dXJu'@; put 'IG5lLmZvckVhY2goZnVuY3Rpb24oUGUsb3Qpe19lW1BlXT0hMH0pLF9lfShkdCk7aWYobmUuc2hvd0hpZGRlbiYmKGR0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKF9lKSksZihfZSkmJihkdC5pbmRleE9mKCJtZXNzYWdlIik+PTB8fGR0LmluZGV4T2YoImRlc2NyaXB0aW9uIik+PTAp'@; put 'KXJldHVybiBIKF9lKTtpZigwPT09ZHQubGVuZ3RoKXtpZihiKF9lKSlyZXR1cm4gbmUuc3R5bGl6ZSgiW0Z1bmN0aW9uIisoX2UubmFtZT8iOiAiK19lLm5hbWU6IiIpKyJdIiwic3BlY2lhbCIpO2lmKGtlKF9lKSlyZXR1cm4gbmUuc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5n'@; put 'LmNhbGwoX2UpLCJyZWdleHAiKTtpZihYKF9lKSlyZXR1cm4gbmUuc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF9lKSwiZGF0ZSIpO2lmKGYoX2UpKXJldHVybiBIKF9lKX12YXIgRmUseGU9IiIsamU9ITEsQWU9WyJ7IiwifSJdO3JldHVybiBZKF9lKSYmKGplPSEwLEFl'@; put 'PVsiWyIsIl0iXSksYihfZSkmJih4ZT0iIFtGdW5jdGlvbiIrKF9lLm5hbWU/IjogIitfZS5uYW1lOiIiKSsiXSIpLGtlKF9lKSYmKHhlPSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoX2UpKSxYKF9lKSYmKHhlPSIgIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxs'@; put 'KF9lKSksZihfZSkmJih4ZT0iICIrSChfZSkpLDAhPT1kdC5sZW5ndGh8fGplJiYwIT1fZS5sZW5ndGg/UGU8MD9rZShfZSk/bmUuc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoX2UpLCJyZWdleHAiKTpuZS5zdHlsaXplKCJbT2JqZWN0XSIsInNwZWNpYWwiKToobmUu'@; put 'c2Vlbi5wdXNoKF9lKSxGZT1qZT9mdW5jdGlvbiBWKG5lLF9lLFBlLG90LGx0KXtmb3IodmFyIGR0PVtdLFJlPTAsYWU9X2UubGVuZ3RoO1JlPGFlOysrUmUpRChfZSxTdHJpbmcoUmUpKT9kdC5wdXNoKE4obmUsX2UsUGUsb3QsU3RyaW5nKFJlKSwhMCkpOmR0LnB1c2goIiIpO3JldHVybiBs'@; put 'dC5mb3JFYWNoKGZ1bmN0aW9uKHhlKXt4ZS5tYXRjaCgvXlxkKyQvKXx8ZHQucHVzaChOKG5lLF9lLFBlLG90LHhlLCEwKSl9KSxkdH0obmUsX2UsUGUsUmUsZHQpOmR0Lm1hcChmdW5jdGlvbihnZSl7cmV0dXJuIE4obmUsX2UsUGUsUmUsZ2UsamUpfSksbmUuc2Vlbi5wb3AoKSxmdW5jdGlv'@; put 'biB6KG5lLF9lLFBlKXt2YXIgbHQ9bmUucmVkdWNlKGZ1bmN0aW9uKGR0LFJlKXtyZXR1cm4gUmUuaW5kZXhPZigiXG4iKSxkdCtSZS5yZXBsYWNlKC9cdTAwMWJcW1xkXGQ/bS9nLCIiKS5sZW5ndGgrMX0sMCk7cmV0dXJuIGx0PjYwP1BlWzBdKygiIj09PV9lPyIiOl9lKyJcbiAiKSsiICIr'@; put 'bmUuam9pbigiLFxuICAiKSsiICIrUGVbMV06UGVbMF0rX2UrIiAiK25lLmpvaW4oIiwgIikrIiAiK1BlWzFdfShGZSx4ZSxBZSkpOkFlWzBdK3hlK0FlWzFdfWZ1bmN0aW9uIEgobmUpe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZSkrIl0ifWZ1bmN0aW9uIE4o'@; put 'bmUsX2UsUGUsb3QsbHQsZHQpe3ZhciBSZSxhZSx4ZTtpZigoeGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfZSxsdCl8fHt2YWx1ZTpfZVtsdF19KS5nZXQ/YWU9bmUuc3R5bGl6ZSh4ZS5zZXQ/IltHZXR0ZXIvU2V0dGVyXSI6IltHZXR0ZXJdIiwic3BlY2lhbCIpOnhlLnNl'@; put 'dCYmKGFlPW5lLnN0eWxpemUoIltTZXR0ZXJdIiwic3BlY2lhbCIpKSxEKG90LGx0KXx8KFJlPSJbIitsdCsiXSIpLGFlfHwobmUuc2Vlbi5pbmRleE9mKHhlLnZhbHVlKTwwPyhhZT1XKFBlKT94KG5lLHhlLnZhbHVlLG51bGwpOngobmUseGUudmFsdWUsUGUtMSkpLmluZGV4T2YoIlxuIik+'@; put 'LTEmJihhZT1kdD9hZS5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24oamUpe3JldHVybiIgICIramV9KS5qb2luKCJcbiIpLnNsaWNlKDIpOiJcbiIrYWUuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKGplKXtyZXR1cm4iICAgIitqZX0pLmpvaW4oIlxuIikpOmFlPW5lLnN0eWxpemUoIltDaXJj'@; put 'dWxhcl0iLCJzcGVjaWFsIikpLEllKFJlKSl7aWYoZHQmJmx0Lm1hdGNoKC9eXGQrJC8pKXJldHVybiBhZTsoUmU9SlNPTi5zdHJpbmdpZnkoIiIrbHQpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyhSZT1SZS5zbGljZSgxLC0xKSxSZT1uZS5zdHlsaXplKFJlLCJu'@; put 'YW1lIikpOihSZT1SZS5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFjZSgvKF4ifCIkKS9nLCInIiksUmU9bmUuc3R5bGl6ZShSZSwic3RyaW5nIikpfXJldHVybiBSZSsiOiAiK2FlfWZ1bmN0aW9uIFkobmUpe3JldHVybiBBcnJheS5pc0FycmF5KG5lKX1m'@; put 'dW5jdGlvbiBGKG5lKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBuZX1mdW5jdGlvbiBXKG5lKXtyZXR1cm4gbnVsbD09PW5lfWZ1bmN0aW9uIHJlKG5lKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG5lfWZ1bmN0aW9uIG1lKG5lKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG5lfWZ1bmN0aW9u'@; put 'IEllKG5lKXtyZXR1cm4gdm9pZCAwPT09bmV9ZnVuY3Rpb24ga2UobmUpe3JldHVybiBxZShuZSkmJiJbb2JqZWN0IFJlZ0V4cF0iPT09TShuZSl9ZnVuY3Rpb24gcWUobmUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgbmUmJm51bGwhPT1uZX1mdW5jdGlvbiBYKG5lKXtyZXR1cm4gcWUobmUp'@; put 'JiYiW29iamVjdCBEYXRlXSI9PT1NKG5lKX1mdW5jdGlvbiBmKG5lKXtyZXR1cm4gcWUobmUpJiYoIltvYmplY3QgRXJyb3JdIj09PU0obmUpfHxuZSBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiBiKG5lKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbmV9ZnVuY3Rpb24gTShuZSl7cmV0'@; put 'dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZSl9ZnVuY3Rpb24gQihuZSl7cmV0dXJuIG5lPDEwPyIwIituZS50b1N0cmluZygxMCk6bmUudG9TdHJpbmcoMTApfWouZGVidWdsb2c9ZnVuY3Rpb24obmUpe2lmKG5lPW5lLnRvVXBwZXJDYXNlKCksIUFbbmVdKWlmKHYudGVz'@; put 'dChuZSkpe3ZhciBfZT15LnBpZDtBW25lXT1mdW5jdGlvbigpe3ZhciBQZT1qLmZvcm1hdC5hcHBseShqLGFyZ3VtZW50cyk7Y29uc29sZS5lcnJvcigiJXMgJWQ6ICVzIixuZSxfZSxQZSl9fWVsc2UgQVtuZV09ZnVuY3Rpb24oKXt9O3JldHVybiBBW25lXX0sai5pbnNwZWN0PXcsdy5jb2xv'@; put 'cnM9e2JvbGQ6WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlsz'@; put 'MSwzOV0seWVsbG93OlszMywzOV19LHcuc3R5bGVzPXtzcGVjaWFsOiJjeWFuIixudW1iZXI6InllbGxvdyIsYm9vbGVhbjoieWVsbG93Iix1bmRlZmluZWQ6ImdyZXkiLG51bGw6ImJvbGQiLHN0cmluZzoiZ3JlZW4iLGRhdGU6Im1hZ2VudGEiLHJlZ2V4cDoicmVkIn0sai50eXBlcz1oKDQ5'@; put 'MDMyKSxqLmlzQXJyYXk9WSxqLmlzQm9vbGVhbj1GLGouaXNOdWxsPVcsai5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbiBxKG5lKXtyZXR1cm4gbnVsbD09bmV9LGouaXNOdW1iZXI9cmUsai5pc1N0cmluZz1tZSxqLmlzU3ltYm9sPWZ1bmN0aW9uIENlKG5lKXtyZXR1cm4ic3ltYm9sIj09'@; put 'dHlwZW9mIG5lfSxqLmlzVW5kZWZpbmVkPUllLGouaXNSZWdFeHA9a2Usai50eXBlcy5pc1JlZ0V4cD1rZSxqLmlzT2JqZWN0PXFlLGouaXNEYXRlPVgsai50eXBlcy5pc0RhdGU9WCxqLmlzRXJyb3I9ZixqLnR5cGVzLmlzTmF0aXZlRXJyb3I9ZixqLmlzRnVuY3Rpb249YixqLmlzUHJpbWl0'@; put 'aXZlPWZ1bmN0aW9uIGsobmUpe3JldHVybiBudWxsPT09bmV8fCJib29sZWFuIj09dHlwZW9mIG5lfHwibnVtYmVyIj09dHlwZW9mIG5lfHwic3RyaW5nIj09dHlwZW9mIG5lfHwic3ltYm9sIj09dHlwZW9mIG5lfHx0eXBlb2YgbmU+InUifSxqLmlzQnVmZmVyPWgoODExMzUpO3ZhciBLPVsi'@; put 'SmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl07ZnVuY3Rpb24gRChuZSxfZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZSxfZSl9ai5sb2c9ZnVuY3Rpb24oKXtjb25zb2xl'@; put 'LmxvZygiJXMgLSAlcyIsZnVuY3Rpb24gRygpe3ZhciBuZT1uZXcgRGF0ZSxfZT1bQihuZS5nZXRIb3VycygpKSxCKG5lLmdldE1pbnV0ZXMoKSksQihuZS5nZXRTZWNvbmRzKCkpXS5qb2luKCI6Iik7cmV0dXJuW25lLmdldERhdGUoKSxLW25lLmdldE1vbnRoKCldLF9lXS5qb2luKCIgIil9'@; put 'KCksai5mb3JtYXQuYXBwbHkoaixhcmd1bWVudHMpKX0sai5pbmhlcml0cz1oKDU2Njk4KSxqLl9leHRlbmQ9ZnVuY3Rpb24obmUsX2Upe2lmKCFfZXx8IXFlKF9lKSlyZXR1cm4gbmU7Zm9yKHZhciBQZT1PYmplY3Qua2V5cyhfZSksb3Q9UGUubGVuZ3RoO290LS07KW5lW1BlW290XV09X2Vb'@; put 'UGVbb3RdXTtyZXR1cm4gbmV9O3ZhciBwPXR5cGVvZiBTeW1ib2w8InUiP1N5bWJvbCgidXRpbC5wcm9taXNpZnkuY3VzdG9tIik6dm9pZCAwO2Z1bmN0aW9uIEkobmUsX2Upe2lmKCFuZSl7dmFyIFBlPW5ldyBFcnJvcigiUHJvbWlzZSB3YXMgcmVqZWN0ZWQgd2l0aCBhIGZhbHN5IHZhbHVl'@; put 'Iik7UGUucmVhc29uPW5lLG5lPVBlfXJldHVybiBfZShuZSl9ai5wcm9taXNpZnk9ZnVuY3Rpb24oX2Upe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBfZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgIm9yaWdpbmFsIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtpZihwJiZf'@; put 'ZVtwXSl7dmFyIFBlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZihQZT1fZVtwXSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ1dGlsLnByb21pc2lmeS5jdXN0b20iIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoUGUscCx7'@; put 'dmFsdWU6UGUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxQZX1mdW5jdGlvbiBQZSgpe2Zvcih2YXIgb3QsbHQsZHQ9bmV3IFByb21pc2UoZnVuY3Rpb24oeGUsamUpe290PXhlLGx0PWplfSksUmU9W10sYWU9MDthZTxhcmd1bWVudHMubGVuZ3RoO2FlKysp'@; put 'UmUucHVzaChhcmd1bWVudHNbYWVdKTtSZS5wdXNoKGZ1bmN0aW9uKHhlLGplKXt4ZT9sdCh4ZSk6b3QoamUpfSk7dHJ5e19lLmFwcGx5KHRoaXMsUmUpfWNhdGNoKHhlKXtsdCh4ZSl9cmV0dXJuIGR0fXJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoUGUsT2JqZWN0LmdldFByb3RvdHlw'@; put 'ZU9mKF9lKSkscCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KFBlLHAse3ZhbHVlOlBlLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUGUsYyhfZSkpfSxqLnByb21pc2lmeS5jdXN0b209cCxqLmNhbGxiYWNraWZ5PWZ1'@; put 'bmN0aW9uIHVlKG5lKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbmUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJvcmlnaW5hbCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7ZnVuY3Rpb24gX2UoKXtmb3IodmFyIFBlPVtdLG90PTA7b3Q8YXJndW1lbnRzLmxlbmd0aDtv'@; put 'dCsrKVBlLnB1c2goYXJndW1lbnRzW290XSk7dmFyIGx0PVBlLnBvcCgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgbGFzdCBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24iKTt2YXIgZHQ9dGhpcyxSZT1mdW5jdGlvbigpe3JldHVy'@; put 'biBsdC5hcHBseShkdCxhcmd1bWVudHMpfTtuZS5hcHBseSh0aGlzLFBlKS50aGVuKGZ1bmN0aW9uKGFlKXt5Lm5leHRUaWNrKFJlLmJpbmQobnVsbCxudWxsLGFlKSl9LGZ1bmN0aW9uKGFlKXt5Lm5leHRUaWNrKEkuYmluZChudWxsLGFlLFJlKSl9KX1yZXR1cm4gT2JqZWN0LnNldFByb3Rv'@; put 'dHlwZU9mKF9lLE9iamVjdC5nZXRQcm90b3R5cGVPZihuZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKF9lLGMobmUpKSxfZX19LDE3ODUzKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmV4cG9ydHMuaXNfdXJpPXMseS5leHBvcnRzLmlzX2h0dHBfdXJpPUEseS5leHBv'@; put 'cnRzLmlzX2h0dHBzX3VyaT12LHkuZXhwb3J0cy5pc193ZWJfdXJpPUMseS5leHBvcnRzLmlzVXJpPXMseS5leHBvcnRzLmlzSHR0cFVyaT1BLHkuZXhwb3J0cy5pc0h0dHBzVXJpPXYseS5leHBvcnRzLmlzV2ViVXJpPUM7dmFyIGM9ZnVuY3Rpb24odyl7cmV0dXJuIHcubWF0Y2goLyg/Oihb'@; put 'XjpcLz8jXSspOik/KD86XC9cLyhbXlwvPyNdKikpPyhbXj8jXSopKD86XD8oW14jXSopKT8oPzojKC4qKSk/Lyl9O2Z1bmN0aW9uIHModyl7aWYodyYmIS9bXmEtejAtOVw6XC9cP1wjXFtcXVxAXCFcJFwmXCdcKFwpXCpcK1wsXDtcPVwuXC1cX1x+XCVdL2kudGVzdCh3KSYmIS8lW14wLTlh'@; put 'LWZdL2kudGVzdCh3KSYmIS8lWzAtOWEtZl0oOj9bXjAtOWEtZl18JCkvaS50ZXN0KHcpKXt2YXIgUyxSLHgsVSxILEw9IiIsVj0iIjtpZihSPShTPWModykpWzJdLHg9U1szXSxVPVNbNF0sSD1TWzVdLChMPVNbMV0pJiZMLmxlbmd0aCYmeC5sZW5ndGg+PTApe2lmKFImJlIubGVuZ3RoKXtp'@; put 'ZigwIT09eC5sZW5ndGgmJiEvXlwvLy50ZXN0KHgpKXJldHVybn1lbHNlIGlmKC9eXC9cLy8udGVzdCh4KSlyZXR1cm47aWYoL15bYS16XVthLXowLTlcK1wtXC5dKiQvLnRlc3QoTC50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gVis9TCsiOiIsUiYmUi5sZW5ndGgmJihWKz0iLy8iK1IpLFYrPXgs'@; put 'VSYmVS5sZW5ndGgmJihWKz0iPyIrVSksSCYmSC5sZW5ndGgmJihWKz0iIyIrSCksVn19fWZ1bmN0aW9uIEEodyxTKXtpZihzKHcpKXt2YXIgTCxVLFYsTixSPSIiLHg9IiIsSD0iIix6PSIiO2lmKHg9KEw9Yyh3KSlbMl0sVT1MWzNdLFY9TFs0XSxOPUxbNV0sUj1MWzFdKXtpZihTKXtpZigi'@; put 'aHR0cHMiIT1SLnRvTG93ZXJDYXNlKCkpcmV0dXJufWVsc2UgaWYoImh0dHAiIT1SLnRvTG93ZXJDYXNlKCkpcmV0dXJuO2lmKHgpcmV0dXJuLzooXGQrKSQvLnRlc3QoeCkmJihIPXgubWF0Y2goLzooXGQrKSQvKVswXSx4PXgucmVwbGFjZSgvOlxkKyQvLCIiKSkseis9UisiOiIseis9Ii8v'@; put 'Iit4LEgmJih6Kz1IKSx6Kz1VLFYmJlYubGVuZ3RoJiYoeis9Ij8iK1YpLE4mJk4ubGVuZ3RoJiYoeis9IiMiK04pLHp9fX1mdW5jdGlvbiB2KHcpe3JldHVybiBBKHcsITApfWZ1bmN0aW9uIEModyl7cmV0dXJuIEEodyl8fHYodyl9fShmZT1oLm5tZChmZSkpfSw2ODk2MShfX3VudXNlZF93'@; put 'ZWJwYWNrX21vZHVsZSxleHBvcnRzKXt2YXIgaW5kZXhPZj1mdW5jdGlvbihmZSxqKXtpZihmZS5pbmRleE9mKXJldHVybiBmZS5pbmRleE9mKGopO2Zvcih2YXIgaD0wO2g8ZmUubGVuZ3RoO2grKylpZihmZVtoXT09PWopcmV0dXJuIGg7cmV0dXJuLTF9LE9iamVjdF9rZXlzPWZ1bmN0aW9u'@; put 'KGZlKXtpZihPYmplY3Qua2V5cylyZXR1cm4gT2JqZWN0LmtleXMoZmUpO3ZhciBqPVtdO2Zvcih2YXIgaCBpbiBmZSlqLnB1c2goaCk7cmV0dXJuIGp9LGZvckVhY2g9ZnVuY3Rpb24oZmUsail7aWYoZmUuZm9yRWFjaClyZXR1cm4gZmUuZm9yRWFjaChqKTtmb3IodmFyIGg9MDtoPGZlLmxl'@; put 'bmd0aDtoKyspaihmZVtoXSxoLGZlKX0sZGVmaW5lUHJvcD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfIix7fSksZnVuY3Rpb24oZmUsaixoKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZmUsaix7d3JpdGFibGU6ITAsZW51bWVyYWJsZTohMSxjb25m'@; put 'aWd1cmFibGU6ITAsdmFsdWU6aH0pfX1jYXRjaHtyZXR1cm4gZnVuY3Rpb24oaixoLHkpe2pbaF09eX19fSgpLGdsb2JhbHM9WyJBcnJheSIsIkJvb2xlYW4iLCJEYXRlIiwiRXJyb3IiLCJFdmFsRXJyb3IiLCJGdW5jdGlvbiIsIkluZmluaXR5IiwiSlNPTiIsIk1hdGgiLCJOYU4iLCJOdW1i'@; put 'ZXIiLCJPYmplY3QiLCJSYW5nZUVycm9yIiwiUmVmZXJlbmNlRXJyb3IiLCJSZWdFeHAiLCJTdHJpbmciLCJTeW50YXhFcnJvciIsIlR5cGVFcnJvciIsIlVSSUVycm9yIiwiZGVjb2RlVVJJIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwi'@; put 'ZXNjYXBlIiwiZXZhbCIsImlzRmluaXRlIiwiaXNOYU4iLCJwYXJzZUZsb2F0IiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJ1bmVzY2FwZSJdO2Z1bmN0aW9uIENvbnRleHQoKXt9Q29udGV4dC5wcm90b3R5cGU9e307dmFyIFNjcmlwdD1leHBvcnRzLlNjcmlwdD1mdW5jdGlvbihqKXtpZigh'@; put 'KHRoaXMgaW5zdGFuY2VvZiBTY3JpcHQpKXJldHVybiBuZXcgU2NyaXB0KGopO3RoaXMuY29kZT1qfTtTY3JpcHQucHJvdG90eXBlLnJ1bkluQ29udGV4dD1mdW5jdGlvbihmZSl7aWYoIShmZSBpbnN0YW5jZW9mIENvbnRleHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIm5lZWRzIGEgJ2NvbnRl'@; put 'eHQnIGFyZ3VtZW50LiIpO3ZhciBqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2ouc3R5bGV8fChqLnN0eWxlPXt9KSxqLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaik7dmFyIGg9ai5jb250ZW50V2luZG93LHk9aC5ldmFsLGM9aC5l'@; put 'eGVjU2NyaXB0OyF5JiZjJiYoYy5jYWxsKGgsIm51bGwiKSx5PWguZXZhbCksZm9yRWFjaChPYmplY3Rfa2V5cyhmZSksZnVuY3Rpb24odil7aFt2XT1mZVt2XX0pLGZvckVhY2goZ2xvYmFscyxmdW5jdGlvbih2KXtmZVt2XSYmKGhbdl09ZmVbdl0pfSk7dmFyIHM9T2JqZWN0X2tleXMoaCks'@; put 'QT15LmNhbGwoaCx0aGlzLmNvZGUpO3JldHVybiBmb3JFYWNoKE9iamVjdF9rZXlzKGgpLGZ1bmN0aW9uKHYpeyh2IGluIGZlfHwtMT09PWluZGV4T2Yocyx2KSkmJihmZVt2XT1oW3ZdKX0pLGZvckVhY2goZ2xvYmFscyxmdW5jdGlvbih2KXt2IGluIGZlfHxkZWZpbmVQcm9wKGZlLHYsaFt2'@; put 'XSl9KSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGopLEF9LFNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBldmFsKHRoaXMuY29kZSl9LFNjcmlwdC5wcm90b3R5cGUucnVuSW5OZXdDb250ZXh0PWZ1bmN0aW9uKGZlKXt2YXIgaj1TY3JpcHQu'@; put 'Y3JlYXRlQ29udGV4dChmZSksaD10aGlzLnJ1bkluQ29udGV4dChqKTtyZXR1cm4gZmUmJmZvckVhY2goT2JqZWN0X2tleXMoaiksZnVuY3Rpb24oeSl7ZmVbeV09alt5XX0pLGh9LGZvckVhY2goT2JqZWN0X2tleXMoU2NyaXB0LnByb3RvdHlwZSksZnVuY3Rpb24oZmUpe2V4cG9ydHNbZmVd'@; put 'PVNjcmlwdFtmZV09ZnVuY3Rpb24oail7dmFyIGg9U2NyaXB0KGopO3JldHVybiBoW2ZlXS5hcHBseShoLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX19KSxleHBvcnRzLmlzQ29udGV4dD1mdW5jdGlvbihmZSl7cmV0dXJuIGZlIGluc3RhbmNlb2YgQ29udGV4dH0sZXhwb3J0cy5jcmVh'@; put 'dGVTY3JpcHQ9ZnVuY3Rpb24oZmUpe3JldHVybiBleHBvcnRzLlNjcmlwdChmZSl9LGV4cG9ydHMuY3JlYXRlQ29udGV4dD1TY3JpcHQuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihmZSl7dmFyIGo9bmV3IENvbnRleHQ7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBmZSYmZm9yRWFjaChPYmplY3Rf'@; put 'a2V5cyhmZSksZnVuY3Rpb24oaCl7altoXT1mZVtoXX0pLGp9fSwyNTc2NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDgyNjgyKSxjPWgoMzkyMDkpLHM9aCgxMDQ4NyksQT1oKDM2NTU2KSx2PWgoNzU3OTUpLEM9aCg5MzYyOCksdz1BKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n'@; put 'IiksUz1oKDQ5MDkyKSgpLEw9dHlwZW9mIGdsb2JhbFRoaXM+InUiP2guZzpnbG9iYWxUaGlzLFI9YygpLHg9QSgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLFU9QSgiQXJyYXkucHJvdG90eXBlLmluZGV4T2YiLCEwKXx8ZnVuY3Rpb24oRixXKXtmb3IodmFyIHE9MDtxPEYubGVuZ3RoO3Er'@; put 'PTEpaWYoRltxXT09PVcpcmV0dXJuIHE7cmV0dXJuLTF9LEg9e19fcHJvdG9fXzpudWxsfTt5KFIsUyYmdiYmQz9mdW5jdGlvbihZKXt2YXIgRj1uZXcgTFtZXTtpZihTeW1ib2wudG9TdHJpbmdUYWcgaW4gRiYmQyl7dmFyIFc9QyhGKSxxPXYoVyxTeW1ib2wudG9TdHJpbmdUYWcpO2lmKCFx'@; put 'JiZXKXt2YXIgcmU9QyhXKTtxPXYocmUsU3ltYm9sLnRvU3RyaW5nVGFnKX1pZihxJiZxLmdldCl7dmFyIG1lPXMocS5nZXQpO0hbIiQiK1ldPW1lfX19OmZ1bmN0aW9uKFkpe3ZhciBGPW5ldyBMW1ldLFc9Ri5zbGljZXx8Ri5zZXQ7aWYoVyl7dmFyIHE9cyhXKTtIWyIkIitZXT1xfX0pLGZl'@; put 'LmV4cG9ydHM9ZnVuY3Rpb24oRil7aWYoIUZ8fCJvYmplY3QiIT10eXBlb2YgRilyZXR1cm4hMTtpZighUyl7dmFyIFc9eCh3KEYpLDgsLTEpO3JldHVybiBmdW5jdGlvbiB6KFkpe3JldHVybiBVKFIsWSk+LTF9KFcpP1c6Ik9iamVjdCI9PT1XJiZmdW5jdGlvbiBOKFkpe3ZhciBGPSExO3Jl'@; put 'dHVybiB5KEgsZnVuY3Rpb24oVyxxKXtpZighRil0cnl7VyhZKSxGPXgocSwxKX1jYXRjaHt9fSksRn0oRil9cmV0dXJuIHY/ZnVuY3Rpb24gVihZKXt2YXIgRj0hMTtyZXR1cm4geShILGZ1bmN0aW9uKFcscSl7aWYoIUYpdHJ5eyIkIitXKFkpPT09cSYmKEY9eChxLDEpKX1jYXRjaHt9fSks'@; put 'Rn0oRik6bnVsbH19LDIzMjcoKXt9LDc4OTgyKCl7fSw0Nzc5MCgpe30sNzM3NzYoKXt9LDIxNjM4KCl7fSw5MjY2OCgpe30sNzc5NjUoKXt9LDY2MDg5KCl7fSw3OTM2OCgpe30sNDk5OTMoKXt9LDgxMDA2KCl7fSw2NDY4OCgpe30sNTEwNjkoKXt9LDE1MzQwKCl7fSw3OTgzOCgpe30sMzUz'@; put 'OTQoKXt9LDg1MjQ4KCl7fSw4OTI1MSgpe30sMzkyMDkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg3NjU3OCksYz10eXBlb2YgZ2xvYmFsVGhpcz4idSI/aC5nOmdsb2JhbFRoaXM7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgQT1bXSx2PTA7djx5Lmxlbmd0aDt2KyspImZ1'@; put 'bmN0aW9uIj09dHlwZW9mIGNbeVt2XV0mJihBW0EubGVuZ3RoXT15W3ZdKTtyZXR1cm4gQX19LDg2NDI1KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNjU2MDYpLGM9aCg0ODI4NykuQnVmZmVyO2Z1bmN0aW9uIHMoaHQseXQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBodC5hcHBs'@; put 'eSh5dCxhcmd1bWVudHMpfX1jb25zdHt0b1N0cmluZzpBfT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjp2fT1PYmplY3Qse2l0ZXJhdG9yOkMsdG9TdHJpbmdUYWc6d309U3ltYm9sLFM9KCh7aGFzT3duUHJvcGVydHk6aHR9KT0+KHl0LGp0KT0+aHQuY2FsbCh5dCxqdCkpKE9i'@; put 'amVjdC5wcm90b3R5cGUpLEw9KGh0LHl0KT0+e2xldCBqdD1odDtjb25zdCB6dD1bXTtmb3IoO251bGwhPWp0JiZqdCE9PU9iamVjdC5wcm90b3R5cGU7KXtpZigtMSE9PXp0LmluZGV4T2YoanQpKXJldHVybiExO2lmKHp0LnB1c2goanQpLFMoanQseXQpKXJldHVybiEwO2p0PXYoanQpfXJl'@; put 'dHVybiExfSx4PShodD0+eXQ9Pntjb25zdCBqdD1BLmNhbGwoeXQpO3JldHVybiBodFtqdF18fChodFtqdF09anQuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSxVPWh0PT4oaHQ9aHQudG9Mb3dlckNhc2UoKSx5dD0+eCh5dCk9PT1odCksSD1odD0+'@; put 'eXQ9PnR5cGVvZiB5dD09PWh0LHtpc0FycmF5OlZ9PUFycmF5LE49SCgidW5kZWZpbmVkIik7ZnVuY3Rpb24geihodCl7cmV0dXJuIG51bGwhPT1odCYmIU4oaHQpJiZudWxsIT09aHQuY29uc3RydWN0b3ImJiFOKGh0LmNvbnN0cnVjdG9yKSYmcShodC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikm'@; put 'Jmh0LmNvbnN0cnVjdG9yLmlzQnVmZmVyKGh0KX1jb25zdCBZPVUoIkFycmF5QnVmZmVyIiksVz1IKCJzdHJpbmciKSxxPUgoImZ1bmN0aW9uIikscmU9SCgibnVtYmVyIiksbWU9aHQ9Pm51bGwhPT1odCYmIm9iamVjdCI9PXR5cGVvZiBodCxJZT1odD0+e2lmKCFtZShodCkpcmV0dXJuITE7'@; put 'Y29uc3QgeXQ9dihodCk7cmV0dXJuIShudWxsIT09eXQmJnl0IT09T2JqZWN0LnByb3RvdHlwZSYmbnVsbCE9PXYoeXQpfHxMKGh0LHcpfHxMKGh0LEMpKX0scWU9VSgiRGF0ZSIpLFg9VSgiRmlsZSIpLGs9VSgiQmxvYiIpLE09VSgiRmlsZUxpc3QiKSxHPWZ1bmN0aW9uIEsoKXtyZXR1cm4g'@; put 'dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBoLmc8InUiP2guZzp7fX0oKSxEPXR5cGVvZiBHLkZvcm1EYXRhPCJ1Ij9HLkZvcm1EYXRhOnZvaWQgMCxJPVUoIlVSTFNlYXJjaFBhcmFt'@; put 'cyIpLFt1ZSxuZSxfZSxQZV09WyJSZWFkYWJsZVN0cmVhbSIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIkhlYWRlcnMiXS5tYXAoVSk7ZnVuY3Rpb24gbHQoaHQseXQse2FsbE93bktleXM6anQ9ITF9PXt9KXtpZihudWxsPT09aHR8fHR5cGVvZiBodD4idSIpcmV0dXJuO2xldCB6dCxtbjtpZigi'@; put 'b2JqZWN0IiE9dHlwZW9mIGh0JiYoaHQ9W2h0XSksVihodCkpZm9yKHp0PTAsbW49aHQubGVuZ3RoO3p0PG1uO3p0KyspeXQuY2FsbChudWxsLGh0W3p0XSx6dCxodCk7ZWxzZXtpZih6KGh0KSlyZXR1cm47Y29uc3QgRm49anQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaHQpOk9iamVj'@; put 'dC5rZXlzKGh0KSxRbj1Gbi5sZW5ndGg7bGV0IGxyO2Zvcih6dD0wO3p0PFFuO3p0KyspbHI9Rm5benRdLHl0LmNhbGwobnVsbCxodFtscl0sbHIsaHQpfX1mdW5jdGlvbiBkdChodCx5dCl7aWYoeihodCkpcmV0dXJuIG51bGw7eXQ9eXQudG9Mb3dlckNhc2UoKTtjb25zdCBqdD1PYmplY3Qu'@; put 'a2V5cyhodCk7bGV0IG1uLHp0PWp0Lmxlbmd0aDtmb3IoO3p0LS0gPjA7KWlmKG1uPWp0W3p0XSx5dD09PW1uLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG1uO3JldHVybiBudWxsfWNvbnN0IFJlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5'@; put 'cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpoLmcsYWU9aHQ9PiFOKGh0KSYmaHQhPT1SZSxoZT0oaHQ9Pnl0PT5odCYmeXQgaW5zdGFuY2VvZiBodCkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ2KFVpbnQ4QXJyYXkpKSx0dD1VKCJIVE1MRm9ybUVsZW1lbnQiKSx7cHJvcGVydHlJc0VudW1lcmFi'@; put 'bGU6JHR9PU9iamVjdC5wcm90b3R5cGUsUnQ9VSgiUmVnRXhwIiksTHQ9KGh0LHl0KT0+e2NvbnN0IGp0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGh0KSx6dD17fTtsdChqdCwobW4sRm4pPT57bGV0IFFuOyExIT09KFFuPXl0KG1uLEZuLGh0KSkmJih6dFtGbl09UW58fG1u'@; put 'KX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGh0LHp0KX0sUXI9VSgiQXN5bmNGdW5jdGlvbiIpLEhuPShodD0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0SW1tZWRpYXRlLHl0PXEoUmUucG9zdE1lc3NhZ2UpLGh0P3NldEltbWVkaWF0ZTp5dD8oanQ9YGF4aW9zQCR7TWF0aC5yYW5kb20oKX1g'@; put 'LHp0PVtdLFJlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh7c291cmNlOm1uLGRhdGE6Rm59KT0+e21uPT09UmUmJkZuPT09anQmJnp0Lmxlbmd0aCYmenQuc2hpZnQoKSgpfSwhMSksbW49Pnt6dC5wdXNoKG1uKSxSZS5wb3N0TWVzc2FnZShqdCwiKiIpfSk6anQ9PnNldFRpbWVvdXQo'@; put 'anQpKSxPbz10eXBlb2YgcXVldWVNaWNyb3Rhc2s8InUiP3F1ZXVlTWljcm90YXNrLmJpbmQoUmUpOnR5cGVvZiB5PCJ1IiYmeS5uZXh0VGlja3x8SG4sdXI9aHQ9Pm51bGwhPWh0JiZxKGh0W0NdKTt2YXIgaHQseXQsanQsenQsU249e2lzQXJyYXk6Vixpc0FycmF5QnVmZmVyOlksaXNCdWZm'@; put 'ZXI6eixpc0Zvcm1EYXRhOmh0PT57aWYoIWh0KXJldHVybiExO2lmKEQmJmh0IGluc3RhbmNlb2YgRClyZXR1cm4hMDtjb25zdCB5dD12KGh0KTtpZigheXR8fHl0PT09T2JqZWN0LnByb3RvdHlwZXx8IXEoaHQuYXBwZW5kKSlyZXR1cm4hMTtjb25zdCBqdD14KGh0KTtyZXR1cm4iZm9ybWRh'@; put 'dGEiPT09anR8fCJvYmplY3QiPT09anQmJnEoaHQudG9TdHJpbmcpJiYiW29iamVjdCBGb3JtRGF0YV0iPT09aHQudG9TdHJpbmcoKX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24gRihodCl7bGV0IHl0O3JldHVybiB5dD10eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5p'@; put 'c1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGh0KTpodCYmaHQuYnVmZmVyJiZZKGh0LmJ1ZmZlcikseXR9LGlzU3RyaW5nOlcsaXNOdW1iZXI6cmUsaXNCb29sZWFuOmh0PT4hMD09PWh0fHwhMT09PWh0LGlzT2JqZWN0Om1lLGlzUGxhaW5PYmplY3Q6SWUsaXNFbXB0eU9iamVjdDpodD0+e2lm'@; put 'KCFtZShodCl8fHooaHQpKXJldHVybiExO3RyeXtyZXR1cm4gMD09PU9iamVjdC5rZXlzKGh0KS5sZW5ndGgmJk9iamVjdC5nZXRQcm90b3R5cGVPZihodCk9PT1PYmplY3QucHJvdG90eXBlfWNhdGNoe3JldHVybiExfX0saXNSZWFkYWJsZVN0cmVhbTp1ZSxpc1JlcXVlc3Q6bmUsaXNSZXNw'@; put 'b25zZTpfZSxpc0hlYWRlcnM6UGUsaXNVbmRlZmluZWQ6Tixpc0RhdGU6cWUsaXNGaWxlOlgsaXNSZWFjdE5hdGl2ZUJsb2I6aHQ9PiEhKGh0JiZ0eXBlb2YgaHQudXJpPCJ1IiksaXNSZWFjdE5hdGl2ZTpodD0+aHQmJnR5cGVvZiBodC5nZXRQYXJ0czwidSIsaXNCbG9iOmssaXNSZWdFeHA6'@; put 'UnQsaXNGdW5jdGlvbjpxLGlzU3RyZWFtOmh0PT5tZShodCkmJnEoaHQucGlwZSksaXNVUkxTZWFyY2hQYXJhbXM6SSxpc1R5cGVkQXJyYXk6aGUsaXNGaWxlTGlzdDpNLGZvckVhY2g6bHQsbWVyZ2U6ZnVuY3Rpb24geGUoLi4uaHQpe2NvbnN0e2Nhc2VsZXNzOnl0LHNraXBVbmRlZmluZWQ6'@; put 'anR9PWFlKHRoaXMpJiZ0aGlzfHx7fSx6dD17fSxtbj0oRm4sUW4pPT57aWYoIl9fcHJvdG9fXyI9PT1Rbnx8ImNvbnN0cnVjdG9yIj09PVFufHwicHJvdG90eXBlIj09PVFuKXJldHVybjtjb25zdCBscj15dCYmInN0cmluZyI9PXR5cGVvZiBRbiYmZHQoenQsUW4pfHxRbixpaT1TKHp0LGxy'@; put 'KT96dFtscl06dm9pZCAwO0llKGlpKSYmSWUoRm4pP3p0W2xyXT14ZShpaSxGbik6SWUoRm4pP3p0W2xyXT14ZSh7fSxGbik6VihGbik/enRbbHJdPUZuLnNsaWNlKCk6KCFqdHx8IU4oRm4pKSYmKHp0W2xyXT1Gbil9O2ZvcihsZXQgRm49MCxRbj1odC5sZW5ndGg7Rm48UW47Rm4rKyl7Y29u'@; put 'c3QgbHI9aHRbRm5dO2lmKCFscnx8eihscil8fChsdChscixtbiksIm9iamVjdCIhPXR5cGVvZiBscnx8VihscikpKWNvbnRpbnVlO2NvbnN0IGlpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobHIpO2ZvcihsZXQga2k9MDtraTxpaS5sZW5ndGg7a2krKyl7Y29uc3QgV2k9aWlba2ld'@; put 'OyR0LmNhbGwobHIsV2kpJiZtbihscltXaV0sV2kpfX1yZXR1cm4genR9LGV4dGVuZDooaHQseXQsanQse2FsbE93bktleXM6enR9PXt9KT0+KGx0KHl0LChtbixGbik9PntqdCYmcShtbik/T2JqZWN0LmRlZmluZVByb3BlcnR5KGh0LEZuLHtfX3Byb3RvX186bnVsbCx2YWx1ZTpzKG1uLGp0'@; put 'KSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShodCxGbix7X19wcm90b19fOm51bGwsdmFsdWU6bW4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX0se2FsbE93bktleXM6enR9KSxodCks'@; put 'dHJpbTpodD0+aHQudHJpbT9odC50cmltKCk6aHQucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpLHN0cmlwQk9NOmh0PT4oNjUyNzk9PT1odC5jaGFyQ29kZUF0KDApJiYoaHQ9aHQuc2xpY2UoMSkpLGh0KSxpbmhlcml0czooaHQseXQsanQsenQpPT57'@; put 'aHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeXQucHJvdG90eXBlLHp0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaHQucHJvdG90eXBlLCJjb25zdHJ1Y3RvciIse19fcHJvdG9fXzpudWxsLHZhbHVlOmh0LHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGh0LCJzdXBlciIse19fcHJvdG9fXzpudWxsLHZhbHVlOnl0LnByb3RvdHlwZX0pLGp0JiZPYmplY3QuYXNzaWduKGh0LnByb3RvdHlwZSxqdCl9LHRvRmxhdE9iamVjdDooaHQseXQsanQsenQpPT57bGV0IG1uLEZuLFFuO2NvbnN0IGxyPXt9O2lmKHl0PXl0'@; put 'fHx7fSxudWxsPT1odClyZXR1cm4geXQ7ZG97Zm9yKG1uPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGh0KSxGbj1tbi5sZW5ndGg7Rm4tLSA+MDspUW49bW5bRm5dLCghenR8fHp0KFFuLGh0LHl0KSkmJiFscltRbl0mJih5dFtRbl09aHRbUW5dLGxyW1FuXT0hMCk7aHQ9ITEhPT1qdCYm'@; put 'dihodCl9d2hpbGUoaHQmJighanR8fGp0KGh0LHl0KSkmJmh0IT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIHl0fSxraW5kT2Y6eCxraW5kT2ZUZXN0OlUsZW5kc1dpdGg6KGh0LHl0LGp0KT0+e2h0PVN0cmluZyhodCksKHZvaWQgMD09PWp0fHxqdD5odC5sZW5ndGgpJiYoanQ9aHQubGVu'@; put 'Z3RoKTtjb25zdCB6dD1odC5pbmRleE9mKHl0LGp0LT15dC5sZW5ndGgpO3JldHVybi0xIT09enQmJnp0PT09anR9LHRvQXJyYXk6aHQ9PntpZighaHQpcmV0dXJuIG51bGw7aWYoVihodCkpcmV0dXJuIGh0O2xldCB5dD1odC5sZW5ndGg7aWYoIXJlKHl0KSlyZXR1cm4gbnVsbDtjb25zdCBq'@; put 'dD1uZXcgQXJyYXkoeXQpO2Zvcig7eXQtLSA+MDspanRbeXRdPWh0W3l0XTtyZXR1cm4ganR9LGZvckVhY2hFbnRyeTooaHQseXQpPT57Y29uc3QgenQ9KGh0JiZodFtDXSkuY2FsbChodCk7bGV0IG1uO2Zvcig7KG1uPXp0Lm5leHQoKSkmJiFtbi5kb25lOyl7Y29uc3QgRm49bW4udmFsdWU7'@; put 'eXQuY2FsbChodCxGblswXSxGblsxXSl9fSxtYXRjaEFsbDooaHQseXQpPT57bGV0IGp0O2NvbnN0IHp0PVtdO2Zvcig7bnVsbCE9PShqdD1odC5leGVjKHl0KSk7KXp0LnB1c2goanQpO3JldHVybiB6dH0saXNIVE1MRm9ybTp0dCxoYXNPd25Qcm9wZXJ0eTpTLGhhc093blByb3A6UyxoYXNP'@; put 'd25JblByb3RvdHlwZUNoYWluOkwsZ2V0U2FmZVByb3A6KGh0LHl0KT0+bnVsbCE9aHQmJkwoaHQseXQpP2h0W3l0XTp2b2lkIDAscmVkdWNlRGVzY3JpcHRvcnM6THQsZnJlZXplTWV0aG9kczpodD0+e0x0KGh0LCh5dCxqdCk9PntpZihxKGh0KSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJj'@; put 'YWxsZWUiXS5pbmNsdWRlcyhqdCkpcmV0dXJuITE7aWYocShodFtqdF0pKXtpZih5dC5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiB5dClyZXR1cm4gdm9pZCh5dC53cml0YWJsZT0hMSk7eXQuc2V0fHwoeXQuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9u'@; put 'bHkgbWV0aG9kICciK2p0KyInIil9KX19KX0sdG9PYmplY3RTZXQ6KGh0LHl0KT0+e2NvbnN0IGp0PXt9LHp0PW1uPT57bW4uZm9yRWFjaChGbj0+e2p0W0ZuXT0hMH0pfTtyZXR1cm4gVihodCk/enQoaHQpOnp0KFN0cmluZyhodCkuc3BsaXQoeXQpKSxqdH0sdG9DYW1lbENhc2U6aHQ9Pmh0'@; put 'LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbihqdCx6dCxtbil7cmV0dXJuIHp0LnRvVXBwZXJDYXNlKCkrbW59KSxub29wOigpPT57fSx0b0Zpbml0ZU51bWJlcjooaHQseXQpPT5udWxsIT1odCYmTnVtYmVyLmlzRmluaXRlKGh0PStodCk/'@; put 'aHQ6eXQsZmluZEtleTpkdCxnbG9iYWw6UmUsaXNDb250ZXh0RGVmaW5lZDphZSxpc1NwZWNDb21wbGlhbnRGb3JtOmZ1bmN0aW9uIGxuKGh0KXtyZXR1cm4hIShodCYmcShodC5hcHBlbmQpJiYiRm9ybURhdGEiPT09aHRbd10mJmh0W0NdKX0sdG9KU09OT2JqZWN0Omh0PT57Y29uc3QgeXQ9'@; put 'bmV3IFdlYWtTZXQsanQ9enQ9PntpZihtZSh6dCkpe2lmKHl0Lmhhcyh6dCkpcmV0dXJuO2lmKHooenQpKXJldHVybiB6dDtpZighKCJ0b0pTT04iaW4genQpKXt5dC5hZGQoenQpO2NvbnN0IG1uPVYoenQpP1tdOnt9O3JldHVybiBsdCh6dCwoRm4sUW4pPT57Y29uc3QgbHI9anQoRm4pOyFO'@; put 'KGxyKSYmKG1uW1FuXT1scil9KSx5dC5kZWxldGUoenQpLG1ufX1yZXR1cm4genR9O3JldHVybiBqdChodCl9LGlzQXN5bmNGbjpRcixpc1RoZW5hYmxlOmh0PT5odCYmKG1lKGh0KXx8cShodCkpJiZxKGh0LnRoZW4pJiZxKGh0LmNhdGNoKSxzZXRJbW1lZGlhdGU6SG4sYXNhcDpPbyxpc0l0'@; put 'ZXJhYmxlOnVyLGlzU2FmZUl0ZXJhYmxlOmh0PT5udWxsIT1odCYmTChodCxDKSYmdXIoaHQpfTtjb25zdCB4cj1Tbi50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3Qi'@; put 'LCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxfbj1uZXcgUmVnRXhwKCJbXFx1'@; put 'MDAwMC1cXHUwMDA4XFx1MDAwYS1cXHUwMDFmXFx1MDA3Zl0rIiwiZyIpLFp0PW5ldyBSZWdFeHAoIlteXFx1MDAwOVxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rIiwiZyIpO2Z1bmN0aW9uIE5uKGh0LHl0KXtyZXR1cm4gU24uaXNBcnJheShodCk/aHQubWFwKGp0PT5ObihqdCx5'@; put 'dCkpOmZ1bmN0aW9uIEFyKGh0KXtsZXQgeXQ9MCxqdD1odC5sZW5ndGg7Zm9yKDt5dDxqdDspe2NvbnN0IHp0PWh0LmNoYXJDb2RlQXQoeXQpO2lmKDkhPT16dCYmMzIhPT16dClicmVhazt5dCs9MX1mb3IoO2p0Pnl0Oyl7Y29uc3QgenQ9aHQuY2hhckNvZGVBdChqdC0xKTtpZig5IT09enQm'@; put 'JjMyIT09enQpYnJlYWs7anQtPTF9cmV0dXJuIDA9PT15dCYmanQ9PT1odC5sZW5ndGg/aHQ6aHQuc2xpY2UoeXQsanQpfShTdHJpbmcoaHQpLnJlcGxhY2UoeXQsIiIpKX1mdW5jdGlvbiBNaShodCl7Y29uc3QgeXQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gU24uZm9yRWFjaChodC50'@; put 'b0pTT04oKSwoanQsenQpPT57eXRbenRdPShodD0+Tm4oaHQsWnQpKShqdCl9KSx5dH1jb25zdCBHZT1TeW1ib2woImludGVybmFscyIpO2Z1bmN0aW9uIFV0KGh0KXtyZXR1cm4gaHQmJlN0cmluZyhodCkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gdnIoaHQpe3JldHVybiExPT09'@; put 'aHR8fG51bGw9PWh0P2h0OlNuLmlzQXJyYXkoaHQpP2h0Lm1hcCh2cik6KGh0PT5ObihodCxfbikpKFN0cmluZyhodCkpfWZ1bmN0aW9uIHpuKGh0LHl0LGp0LHp0LG1uKXtpZihTbi5pc0Z1bmN0aW9uKHp0KSlyZXR1cm4genQuY2FsbCh0aGlzLHl0LGp0KTtpZihtbiYmKHl0PWp0KSxTbi5p'@; put 'c1N0cmluZyh5dCkpe2lmKFNuLmlzU3RyaW5nKHp0KSlyZXR1cm4tMSE9PXl0LmluZGV4T2YoenQpO2lmKFNuLmlzUmVnRXhwKHp0KSlyZXR1cm4genQudGVzdCh5dCl9fWNsYXNzIHZpe2NvbnN0cnVjdG9yKHl0KXt5dCYmdGhpcy5zZXQoeXQpfXNldCh5dCxqdCx6dCl7Y29uc3QgbW49dGhp'@; put 'cztmdW5jdGlvbiBGbihscixpaSxraSl7Y29uc3QgV2k9VXQoaWkpO2lmKCFXaSlyZXR1cm47Y29uc3QgS2k9U24uZmluZEtleShtbixXaSk7KCFLaXx8dm9pZCAwPT09bW5bS2ldfHwhMD09PWtpfHx2b2lkIDA9PT1raSYmITEhPT1tbltLaV0pJiYobW5bS2l8fGlpXT12cihscikpfWNvbnN0'@; put 'IFFuPShscixpaSk9PlNuLmZvckVhY2gobHIsKGtpLFdpKT0+Rm4oa2ksV2ksaWkpKTtpZihTbi5pc1BsYWluT2JqZWN0KHl0KXx8eXQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKVFuKHl0LGp0KTtlbHNlIGlmKFNuLmlzU3RyaW5nKHl0KSYmKHl0PXl0LnRyaW0oKSkmJiEoaHQ9Pi9e'@; put 'Wy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoaHQudHJpbSgpKSkoeXQpKVFuKChodD0+e2NvbnN0IHl0PXt9O2xldCBqdCx6dCxtbjtyZXR1cm4gaHQmJmh0LnNwbGl0KCJcbiIpLmZvckVhY2goZnVuY3Rpb24oUW4pe21uPVFuLmluZGV4T2YoIjoiKSxqdD1Rbi5zdWJzdHJp'@; put 'bmcoMCxtbikudHJpbSgpLnRvTG93ZXJDYXNlKCksenQ9UW4uc3Vic3RyaW5nKG1uKzEpLnRyaW0oKSwhKCFqdHx8eXRbanRdJiZ4cltqdF0pJiYoInNldC1jb29raWUiPT09anQ/eXRbanRdP3l0W2p0XS5wdXNoKHp0KTp5dFtqdF09W3p0XTp5dFtqdF09eXRbanRdP3l0W2p0XSsiLCAiK3p0'@; put 'Onp0KX0pLHl0fSkoeXQpLGp0KTtlbHNlIGlmKFNuLmlzT2JqZWN0KHl0KSYmU24uaXNTYWZlSXRlcmFibGUoeXQpKXtsZXQgaWksa2ksbHI9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgV2kgb2YgeXQpe2lmKCFTbi5pc0FycmF5KFdpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmpl'@; put 'Y3QgaXRlcmF0b3IgbXVzdCByZXR1cm4gYSBrZXktdmFsdWUgcGFpciIpO2tpPVdpWzBdLFNuLmhhc093blByb3AobHIsa2kpPyhpaT1scltraV0sbHJba2ldPVNuLmlzQXJyYXkoaWkpP1suLi5paSxXaVsxXV06W2lpLFdpWzFdXSk6bHJba2ldPVdpWzFdfVFuKGxyLGp0KX1lbHNlIG51bGwh'@; put 'PXl0JiZGbihqdCx5dCx6dCk7cmV0dXJuIHRoaXN9Z2V0KHl0LGp0KXtpZih5dD1VdCh5dCkpe2NvbnN0IHp0PVNuLmZpbmRLZXkodGhpcyx5dCk7aWYoenQpe2NvbnN0IG1uPXRoaXNbenRdO2lmKCFqdClyZXR1cm4gbW47aWYoITA9PT1qdClyZXR1cm4gZnVuY3Rpb24geHQoaHQpe2NvbnN0'@; put 'IHl0PU9iamVjdC5jcmVhdGUobnVsbCksanQ9LyhbXlxzLDs9XSspXHMqKD86PVxzKihbXiw7XSspKT8vZztsZXQgenQ7Zm9yKDt6dD1qdC5leGVjKGh0KTspeXRbenRbMV1dPXp0WzJdO3JldHVybiB5dH0obW4pO2lmKFNuLmlzRnVuY3Rpb24oanQpKXJldHVybiBqdC5jYWxsKHRoaXMsbW4s'@; put 'enQpO2lmKFNuLmlzUmVnRXhwKGp0KSlyZXR1cm4ganQuZXhlYyhtbik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyh5dCxqdCl7aWYoeXQ9VXQoeXQpKXtjb25zdCB6dD1Tbi5maW5kS2V5KHRoaXMseXQpO3JldHVy'@; put 'biEoIXp0fHx2b2lkIDA9PT10aGlzW3p0XXx8anQmJiF6bigwLHRoaXNbenRdLHp0LGp0KSl9cmV0dXJuITF9ZGVsZXRlKHl0LGp0KXtjb25zdCB6dD10aGlzO2xldCBtbj0hMTtmdW5jdGlvbiBGbihRbil7aWYoUW49VXQoUW4pKXtjb25zdCBscj1Tbi5maW5kS2V5KHp0LFFuKTtsciYmKCFq'@; put 'dHx8em4oMCx6dFtscl0sbHIsanQpKSYmKGRlbGV0ZSB6dFtscl0sbW49ITApfX1yZXR1cm4gU24uaXNBcnJheSh5dCk/eXQuZm9yRWFjaChGbik6Rm4oeXQpLG1ufWNsZWFyKHl0KXtjb25zdCBqdD1PYmplY3Qua2V5cyh0aGlzKTtsZXQgenQ9anQubGVuZ3RoLG1uPSExO2Zvcig7enQtLTsp'@; put 'e2NvbnN0IEZuPWp0W3p0XTsoIXl0fHx6bigwLHRoaXNbRm5dLEZuLHl0LCEwKSkmJihkZWxldGUgdGhpc1tGbl0sbW49ITApfXJldHVybiBtbn1ub3JtYWxpemUoeXQpe2NvbnN0IGp0PXRoaXMsenQ9e307cmV0dXJuIFNuLmZvckVhY2godGhpcywobW4sRm4pPT57Y29uc3QgUW49U24uZmlu'@; put 'ZEtleSh6dCxGbik7aWYoUW4pcmV0dXJuIGp0W1FuXT12cihtbiksdm9pZCBkZWxldGUganRbRm5dO2NvbnN0IGxyPXl0P2Z1bmN0aW9uIEduKGh0KXtyZXR1cm4gaHQudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcZF0pKFx3KikvZywoeXQsanQsenQpPT5qdC50b1VwcGVy'@; put 'Q2FzZSgpK3p0KX0oRm4pOlN0cmluZyhGbikudHJpbSgpO2xyIT09Rm4mJmRlbGV0ZSBqdFtGbl0sanRbbHJdPXZyKG1uKSx6dFtscl09ITB9KSx0aGlzfWNvbmNhdCguLi55dCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4ueXQpfXRvSlNPTih5dCl7Y29uc3QganQ9'@; put 'T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gU24uZm9yRWFjaCh0aGlzLCh6dCxtbik9PntudWxsIT16dCYmITEhPT16dCYmKGp0W21uXT15dCYmU24uaXNBcnJheSh6dCk/enQuam9pbigiLCAiKTp6dCl9KSxqdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0'@; put 'aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbeXQsanRdKT0+eXQrIjogIitqdCkuam9pbigiXG4iKX1nZXRTZXRDb29raWUoKXtyZXR1cm4gdGhpcy5nZXQoInNldC1jb29raWUiKXx8'@; put 'W119Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbSh5dCl7cmV0dXJuIHl0IGluc3RhbmNlb2YgdGhpcz95dDpuZXcgdGhpcyh5dCl9c3RhdGljIGNvbmNhdCh5dCwuLi5qdCl7Y29uc3QgenQ9bmV3IHRoaXMoeXQpO3JldHVybiBqdC5m'@; put 'b3JFYWNoKG1uPT56dC5zZXQobW4pKSx6dH1zdGF0aWMgYWNjZXNzb3IoeXQpe2NvbnN0IHp0PSh0aGlzW0dlXT10aGlzW0dlXT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLG1uPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIEZuKFFuKXtjb25zdCBscj1VdChRbik7enRbbHJdfHwoZnVuY3Rp'@; put 'b24geW4oaHQseXQpe2NvbnN0IGp0PVNuLnRvQ2FtZWxDYXNlKCIgIit5dCk7WyJnZXQiLCJzZXQiLCJoYXMiXS5mb3JFYWNoKHp0PT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGh0LHp0K2p0LHtfX3Byb3RvX186bnVsbCx2YWx1ZTpmdW5jdGlvbihtbixGbixRbil7cmV0dXJuIHRoaXNbenRd'@; put 'LmNhbGwodGhpcyx5dCxtbixGbixRbil9LGNvbmZpZ3VyYWJsZTohMH0pfSl9KG1uLFFuKSx6dFtscl09ITApfXJldHVybiBTbi5pc0FycmF5KHl0KT95dC5mb3JFYWNoKEZuKTpGbih5dCksdGhpc319dmkuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2Vw'@; put 'dCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pLFNuLnJlZHVjZURlc2NyaXB0b3JzKHZpLnByb3RvdHlwZSwoe3ZhbHVlOmh0fSx5dCk9PntsZXQganQ9eXRbMF0udG9VcHBlckNhc2UoKSt5dC5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5odCxzZXQo'@; put 'enQpe3RoaXNbanRdPXp0fX19KSxTbi5mcmVlemVNZXRob2RzKHZpKTtsZXQgdm49KCgpPT57Y2xhc3MgaHQgZXh0ZW5kcyBFcnJvcntzdGF0aWMgZnJvbShqdCx6dCxtbixGbixRbixscil7Y29uc3QgaWk9bmV3IGh0KGp0Lm1lc3NhZ2UsenR8fGp0LmNvZGUsbW4sRm4sUW4pO3JldHVybiBP'@; put 'YmplY3QuZGVmaW5lUHJvcGVydHkoaWksImNhdXNlIix7X19wcm90b19fOm51bGwsdmFsdWU6anQsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxpaS5uYW1lPWp0Lm5hbWUsbnVsbCE9anQuc3RhdHVzJiZudWxsPT1paS5zdGF0dXMmJihpaS5zdGF0dXM9anQu'@; put 'c3RhdHVzKSxsciYmT2JqZWN0LmFzc2lnbihpaSxsciksaWl9Y29uc3RydWN0b3IoanQsenQsbW4sRm4sUW4pe3N1cGVyKGp0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWVzc2FnZSIse19fcHJvdG9fXzpudWxsLHZhbHVlOmp0LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29u'@; put 'ZmlndXJhYmxlOiEwfSksdGhpcy5uYW1lPSJBeGlvc0Vycm9yIix0aGlzLmlzQXhpb3NFcnJvcj0hMCx6dCYmKHRoaXMuY29kZT16dCksbW4mJih0aGlzLmNvbmZpZz1tbiksRm4mJih0aGlzLnJlcXVlc3Q9Rm4pLFFuJiYodGhpcy5yZXNwb25zZT1Rbix0aGlzLnN0YXR1cz1Rbi5zdGF0dXMp'@; put 'fXRvSlNPTigpe2NvbnN0IGp0PXRoaXMuY29uZmlnLHp0PWp0JiZTbi5oYXNPd25Qcm9wKGp0LCJyZWRhY3QiKT9qdC5yZWRhY3Q6dm9pZCAwLG1uPVNuLmlzQXJyYXkoenQpJiZ6dC5sZW5ndGg+MD9mdW5jdGlvbiBwbyhodCx5dCl7Y29uc3QganQ9bmV3IFNldCh5dC5tYXAoRm49PlN0cmlu'@; put 'ZyhGbikudG9Mb3dlckNhc2UoKSkpLHp0PVtdLG1uPUZuPT57aWYobnVsbD09PUZufHwib2JqZWN0IiE9dHlwZW9mIEZufHxTbi5pc0J1ZmZlcihGbikpcmV0dXJuIEZuO2lmKC0xIT09enQuaW5kZXhPZihGbikpcmV0dXJuO2xldCBRbjtpZihGbiBpbnN0YW5jZW9mIHZpJiYoRm49Rm4udG9K'@; put 'U09OKCkpLHp0LnB1c2goRm4pLFNuLmlzQXJyYXkoRm4pKVFuPVtdLEZuLmZvckVhY2goKGxyLGlpKT0+e2NvbnN0IGtpPW1uKGxyKTtTbi5pc1VuZGVmaW5lZChraSl8fChRbltpaV09a2kpfSk7ZWxzZXtpZighU24uaXNQbGFpbk9iamVjdChGbikmJmZ1bmN0aW9uIGhyKGh0KXtpZihTbi5o'@; put 'YXNPd25Qcm9wKGh0LCJ0b0pTT04iKSlyZXR1cm4hMDtsZXQgeXQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGh0KTtmb3IoO3l0JiZ5dCE9PU9iamVjdC5wcm90b3R5cGU7KXtpZihTbi5oYXNPd25Qcm9wKHl0LCJ0b0pTT04iKSlyZXR1cm4hMDt5dD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoeXQp'@; put 'fXJldHVybiExfShGbikpcmV0dXJuIHp0LnBvcCgpLEZuO1FuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2xyLGlpXW9mIE9iamVjdC5lbnRyaWVzKEZuKSl7Y29uc3Qga2k9anQuaGFzKGxyLnRvTG93ZXJDYXNlKCkpPyJbUkVEQUNURUQgKioqKl0iOm1uKGlpKTtTbi5pc1VuZGVm'@; put 'aW5lZChraSl8fChRbltscl09a2kpfX1yZXR1cm4genQucG9wKCksUW59O3JldHVybiBtbihodCl9KGp0LHp0KTpTbi50b0pTT05PYmplY3QoanQpO3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0'@; put 'aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzptbixjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5zdGF0dXN9fX1yZXR1cm4gaHQu'@; put 'RVJSX0JBRF9PUFRJT05fVkFMVUU9IkVSUl9CQURfT1BUSU9OX1ZBTFVFIixodC5FUlJfQkFEX09QVElPTj0iRVJSX0JBRF9PUFRJT04iLGh0LkVDT05OQUJPUlRFRD0iRUNPTk5BQk9SVEVEIixodC5FVElNRURPVVQ9IkVUSU1FRE9VVCIsaHQuRUNPTk5SRUZVU0VEPSJFQ09OTlJFRlVTRUQi'@; put 'LGh0LkVSUl9ORVRXT1JLPSJFUlJfTkVUV09SSyIsaHQuRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUz0iRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsaHQuRVJSX0RFUFJFQ0FURUQ9IkVSUl9ERVBSRUNBVEVEIixodC5FUlJfQkFEX1JFU1BPTlNFPSJFUlJfQkFEX1JFU1BPTlNFIixodC5F'@; put 'UlJfQkFEX1JFUVVFU1Q9IkVSUl9CQURfUkVRVUVTVCIsaHQuRVJSX0NBTkNFTEVEPSJFUlJfQ0FOQ0VMRUQiLGh0LkVSUl9OT1RfU1VQUE9SVD0iRVJSX05PVF9TVVBQT1JUIixodC5FUlJfSU5WQUxJRF9VUkw9IkVSUl9JTlZBTElEX1VSTCIsaHQuRVJSX0ZPUk1fREFUQV9ERVBUSF9FWENF'@; put 'RURFRD0iRVJSX0ZPUk1fREFUQV9ERVBUSF9FWENFRURFRCIsaHR9KSgpO2Z1bmN0aW9uIGpvKGh0KXtyZXR1cm4gU24uaXNQbGFpbk9iamVjdChodCl8fFNuLmlzQXJyYXkoaHQpfWZ1bmN0aW9uIFhyKGh0KXtyZXR1cm4gU24uZW5kc1dpdGgoaHQsIltdIik/aHQuc2xpY2UoMCwtMik6aHR9'@; put 'ZnVuY3Rpb24gZWEoaHQseXQsanQpe3JldHVybiBodD9odC5jb25jYXQoeXQpLm1hcChmdW5jdGlvbihtbixGbil7cmV0dXJuIG1uPVhyKG1uKSwhanQmJkZuPyJbIittbisiXSI6bW59KS5qb2luKGp0PyIuIjoiIik6eXR9Y29uc3QgY2E9U24udG9GbGF0T2JqZWN0KFNuLHt9LG51bGwsZnVu'@; put 'Y3Rpb24oeXQpe3JldHVybi9eaXNbQS1aXS8udGVzdCh5dCl9KTtmdW5jdGlvbiBDaShodCx5dCxqdCl7aWYoIVNuLmlzT2JqZWN0KGh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTt5dD15dHx8bmV3IEZvcm1EYXRhO2NvbnN0IHp0PShqdD1Tbi50'@; put 'b0ZsYXRPYmplY3QoanQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihpbyxEYSl7cmV0dXJuIVNuLmlzVW5kZWZpbmVkKERhW2lvXSl9KSkubWV0YVRva2Vucyxtbj1qdC52aXNpdG9yfHxkbCxGbj1qdC5kb3RzLFFuPWp0LmluZGV4ZXMsbHI9anQuQmxv'@; put 'Ynx8dHlwZW9mIEJsb2I8InUiJiZCbG9iLGlpPXZvaWQgMD09PWp0Lm1heERlcHRoPzEwMDpqdC5tYXhEZXB0aCxraT1sciYmU24uaXNTcGVjQ29tcGxpYW50Rm9ybSh5dCksV2k9W107aWYoIVNuLmlzRnVuY3Rpb24obW4pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBh'@; put 'IGZ1bmN0aW9uIik7ZnVuY3Rpb24gS2koc24pe2lmKG51bGw9PT1zbilyZXR1cm4iIjtpZihTbi5pc0RhdGUoc24pKXJldHVybiBzbi50b0lTT1N0cmluZygpO2lmKFNuLmlzQm9vbGVhbihzbikpcmV0dXJuIHNuLnRvU3RyaW5nKCk7aWYoIWtpJiZTbi5pc0Jsb2Ioc24pKXRocm93IG5ldyB2'@; put 'bigiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtpZihTbi5pc0FycmF5QnVmZmVyKHNuKXx8U24uaXNUeXBlZEFycmF5KHNuKSl7aWYoa2kmJiJmdW5jdGlvbiI9PXR5cGVvZiBscilyZXR1cm4gbmV3IGxyKFtzbl0pO2lmKHR5cGVvZiBjPCJ1IilyZXR1'@; put 'cm4gYy5mcm9tKHNuKTt0aHJvdyBuZXcgdm4oIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIix2bi5FUlJfTk9UX1NVUFBPUlQpfXJldHVybiBzbn1mdW5jdGlvbiBOYShzbil7aWYoc24+aWkpdGhyb3cgbmV3IHZuKCJPYmplY3QgaXMgdG9vIGRlZXBseSBu'@; put 'ZXN0ZWQgKCIrc24rIiBsZXZlbHMpLiBNYXggZGVwdGg6ICIraWksdm4uRVJSX0ZPUk1fREFUQV9ERVBUSF9FWENFRURFRCl9ZnVuY3Rpb24gZGwoc24saW8sRGEpe2xldCBucz1zbjtpZihTbi5pc1JlYWN0TmF0aXZlKHl0KSYmU24uaXNSZWFjdE5hdGl2ZUJsb2Ioc24pKXJldHVybiB5dC5h'@; put 'cHBlbmQoZWEoRGEsaW8sRm4pLEtpKHNuKSksITE7aWYoc24mJiFEYSYmIm9iamVjdCI9PXR5cGVvZiBzbilpZihTbi5lbmRzV2l0aChpbywie30iKSlpbz16dD9pbzppby5zbGljZSgwLC0yKSxzbj1mdW5jdGlvbiBSbyhzbixpbyl7aWYoaWk9PT0xLzApcmV0dXJuIEpTT04uc3RyaW5naWZ5'@; put 'KHNuKTtjb25zdCBEYT1bXTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoc24sZnVuY3Rpb24oRWwsV2Mpe2lmKCFTbi5pc09iamVjdChXYykpcmV0dXJuIFdjO2Zvcig7RGEubGVuZ3RoJiZEYVtEYS5sZW5ndGgtMV0hPT10aGlzOylEYS5wb3AoKTtyZXR1cm4gRGEucHVzaChXYyksTmEoaW8rRGEu'@; put 'bGVuZ3RoLTEpLFdjfSl9KHNuLDEpO2Vsc2UgaWYoU24uaXNBcnJheShzbikmJmZ1bmN0aW9uIHJhKGh0KXtyZXR1cm4gU24uaXNBcnJheShodCkmJiFodC5zb21lKGpvKX0oc24pfHwoU24uaXNGaWxlTGlzdChzbil8fFNuLmVuZHNXaXRoKGlvLCJbXSIpKSYmKG5zPVNuLnRvQXJyYXkoc24p'@; put 'KSlyZXR1cm4gaW89WHIoaW8pLG5zLmZvckVhY2goZnVuY3Rpb24oV2MsbmMpeyFTbi5pc1VuZGVmaW5lZChXYykmJm51bGwhPT1XYyYmeXQuYXBwZW5kKCEwPT09UW4/ZWEoW2lvXSxuYyxGbik6bnVsbD09PVFuP2lvOmlvKyJbXSIsS2koV2MpKX0pLCExO3JldHVybiEham8oc24pfHwoeXQu'@; put 'YXBwZW5kKGVhKERhLGlvLEZuKSxLaShzbikpLCExKX1jb25zdCBvcj1PYmplY3QuYXNzaWduKGNhLHtkZWZhdWx0VmlzaXRvcjpkbCxjb252ZXJ0VmFsdWU6S2ksaXNWaXNpdGFibGU6am99KTtpZighU24uaXNPYmplY3QoaHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBh'@; put 'biBvYmplY3QiKTtyZXR1cm4gZnVuY3Rpb24gY28oc24saW8sRGE9MCl7aWYoIVNuLmlzVW5kZWZpbmVkKHNuKSl7aWYoTmEoRGEpLC0xIT09V2kuaW5kZXhPZihzbikpdGhyb3cgbmV3IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitpby5qb2luKCIuIikpO1dpLnB1'@; put 'c2goc24pLFNuLmZvckVhY2goc24sZnVuY3Rpb24oRWwsV2MpeyEwPT09KCEoU24uaXNVbmRlZmluZWQoRWwpfHxudWxsPT09RWwpJiZtbi5jYWxsKHl0LEVsLFNuLmlzU3RyaW5nKFdjKT9XYy50cmltKCk6V2MsaW8sb3IpKSYmY28oRWwsaW8/aW8uY29uY2F0KFdjKTpbV2NdLERhKzEpfSks'@; put 'V2kucG9wKCl9fShodCkseXR9ZnVuY3Rpb24gaG8oaHQpe2NvbnN0IHl0PXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChodCkucmVwbGFjZSgvWyEnKCl+XXwlMjAvZyxmdW5jdGlv'@; put 'bih6dCl7cmV0dXJuIHl0W3p0XX0pfWZ1bmN0aW9uIE1hKGh0LHl0KXt0aGlzLl9wYWlycz1bXSxodCYmQ2koaHQsdGhpcyx5dCl9Y29uc3Qga3M9TWEucHJvdG90eXBlO2Z1bmN0aW9uIEJpKGh0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGh0KS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5y'@; put 'ZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIil9ZnVuY3Rpb24gdGEoaHQseXQsanQpe2lmKCF5dClyZXR1cm4gaHQ7aHQ9aHR8fCIiO2NvbnN0IHp0PVNuLmlzRnVuY3Rpb24oanQpP3tzZXJpYWxpemU6anR9Omp0LG1uPVNuLmdldFNh'@; put 'ZmVQcm9wKHp0LCJlbmNvZGUiKXx8QmksRm49U24uZ2V0U2FmZVByb3AoenQsInNlcmlhbGl6ZSIpO2xldCBRbjtpZihRbj1Gbj9Gbih5dCx6dCk6U24uaXNVUkxTZWFyY2hQYXJhbXMoeXQpP3l0LnRvU3RyaW5nKCk6bmV3IE1hKHl0LHp0KS50b1N0cmluZyhtbiksUW4pe2NvbnN0IGxyPWh0'@; put 'LmluZGV4T2YoIiMiKTstMSE9PWxyJiYoaHQ9aHQuc2xpY2UoMCxscikpLGh0Kz0oLTE9PT1odC5pbmRleE9mKCI/Iik/Ij8iOiImIikrUW59cmV0dXJuIGh0fWtzLmFwcGVuZD1mdW5jdGlvbih5dCxqdCl7dGhpcy5fcGFpcnMucHVzaChbeXQsanRdKX0sa3MudG9TdHJpbmc9ZnVuY3Rpb24o'@; put 'eXQpe2NvbnN0IGp0PXl0P3p0PT55dC5jYWxsKHRoaXMsenQsaG8pOmhvO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24obW4pe3JldHVybiBqdChtblswXSkrIj0iK2p0KG1uWzFdKX0sIiIpLmpvaW4oIiYiKX07Y2xhc3MgTXJ7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtd'@; put 'fXVzZSh5dCxqdCx6dCl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOnl0LHJlamVjdGVkOmp0LHN5bmNocm9ub3VzOiEhenQmJnp0LnN5bmNocm9ub3VzLHJ1bldoZW46enQ/enQucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdCh5dCl7dGhp'@; put 'cy5oYW5kbGVyc1t5dF0mJih0aGlzLmhhbmRsZXJzW3l0XT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKHl0KXtTbi5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oenQpe251bGwhPT16dCYmeXQoenQpfSl9fXZhciBGcz17c2ls'@; put 'ZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMSxsZWdhY3lJbnRlcmNlcHRvclJlcVJlc09yZGVyaW5nOiEwLGFkdmVydGlzZVpzdGRBY2NlcHRFbmNvZGluZzohMSx2YWxpZGF0ZVN0YXR1c1VuZGVmaW5lZFJlc29sdmVzOiEwfSxD'@; put 'bD17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczp0eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6TWEsRm9ybURhdGE6dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsLEJsb2I6dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbH0scHJv'@; put 'dG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O2NvbnN0IFRpPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLFduPSJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3J8fHZvaWQgMCxRaD1UaSYmKCFXbnx8WyJS'@; put 'ZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihXbi5wcm9kdWN0KTwwKSxkYz10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHMsSWw9'@; put 'VGkmJndpbmRvdy5sb2NhdGlvbi5ocmVmfHwiaHR0cDovL2xvY2FsaG9zdCI7dmFyIExjPXsuLi5PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxoYXNCcm93c2VyRW52OlRpLGhhc1N0YW5kYXJkQnJvd3NlckVudjpRaCxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6ZGMsbmF2'@; put 'aWdhdG9yOlduLG9yaWdpbjpJbH0pLC4uLkNsfTtmdW5jdGlvbiBScyhodCl7aWYoaHQ+MTAwKXRocm93IG5ldyB2bigiRm9ybURhdGEgZmllbGQgaXMgdG9vIGRlZXBseSBuZXN0ZWQgKCIraHQrIiBsZXZlbHMpLiBNYXggZGVwdGg6IDEwMCIsdm4uRVJSX0ZPUk1fREFUQV9ERVBUSF9FWENF'@; put 'RURFRCl9ZnVuY3Rpb24geWQoaHQpe2Z1bmN0aW9uIHl0KGp0LHp0LG1uLEZuKXtScyhGbik7bGV0IFFuPWp0W0ZuKytdO2lmKCJfX3Byb3RvX18iPT09UW4pcmV0dXJuITA7Y29uc3QgbHI9TnVtYmVyLmlzRmluaXRlKCtRbiksaWk9Rm4+PWp0Lmxlbmd0aDtyZXR1cm4gUW49IVFuJiZTbi5p'@; put 'c0FycmF5KG1uKT9tbi5sZW5ndGg6UW4saWk/KG1uW1FuXT1Tbi5oYXNPd25Qcm9wKG1uLFFuKT9Tbi5pc0FycmF5KG1uW1FuXSk/bW5bUW5dLmNvbmNhdCh6dCk6W21uW1FuXSx6dF06enQsIWxyKTooKCFTbi5oYXNPd25Qcm9wKG1uLFFuKXx8IVNuLmlzT2JqZWN0KG1uW1FuXSkpJiYobW5b'@; put 'UW5dPVtdKSx5dChqdCx6dCxtbltRbl0sRm4pJiZTbi5pc0FycmF5KG1uW1FuXSkmJihtbltRbl09ZnVuY3Rpb24gSnUoaHQpe2NvbnN0IHl0PXt9LGp0PU9iamVjdC5rZXlzKGh0KTtsZXQgenQ7Y29uc3QgbW49anQubGVuZ3RoO2xldCBGbjtmb3IoenQ9MDt6dDxtbjt6dCsrKUZuPWp0W3p0'@; put 'XSx5dFtGbl09aHRbRm5dO3JldHVybiB5dH0obW5bUW5dKSksIWxyKX1pZihTbi5pc0Zvcm1EYXRhKGh0KSYmU24uaXNGdW5jdGlvbihodC5lbnRyaWVzKSl7Y29uc3QganQ9e307cmV0dXJuIFNuLmZvckVhY2hFbnRyeShodCwoenQsbW4pPT57eXQoZnVuY3Rpb24gTDAoaHQpe2NvbnN0IHl0'@; put 'PVtdLGp0PS9cdyt8XFsoXHcqKV0vZztsZXQgenQ7Zm9yKDtudWxsIT09KHp0PWp0LmV4ZWMoaHQpKTspUnMoeXQubGVuZ3RoKSx5dC5wdXNoKCJbXSI9PT16dFswXT8iIjp6dFsxXXx8enRbMF0pO3JldHVybiB5dH0oenQpLG1uLGp0LDApfSksanR9cmV0dXJuIG51bGx9Y29uc3QgVW89KGh0'@; put 'LHl0KT0+bnVsbCE9aHQmJlNuLmhhc093blByb3AoaHQseXQpP2h0W3l0XTp2b2lkIDAsVnI9e3RyYW5zaXRpb25hbDpGcyxhZGFwdGVyOlsieGhyIiwiaHR0cCIsImZldGNoIl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oeXQsanQpe2NvbnN0IHp0PWp0LmdldENvbnRlbnRUeXBlKCl8'@; put 'fCIiLG1uPXp0LmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxGbj1Tbi5pc09iamVjdCh5dCk7aWYoRm4mJlNuLmlzSFRNTEZvcm0oeXQpJiYoeXQ9bmV3IEZvcm1EYXRhKHl0KSksU24uaXNGb3JtRGF0YSh5dCkpcmV0dXJuIG1uP0pTT04uc3RyaW5naWZ5KHlkKHl0KSk6eXQ7aWYo'@; put 'U24uaXNBcnJheUJ1ZmZlcih5dCl8fFNuLmlzQnVmZmVyKHl0KXx8U24uaXNTdHJlYW0oeXQpfHxTbi5pc0ZpbGUoeXQpfHxTbi5pc0Jsb2IoeXQpfHxTbi5pc1JlYWRhYmxlU3RyZWFtKHl0KSlyZXR1cm4geXQ7aWYoU24uaXNBcnJheUJ1ZmZlclZpZXcoeXQpKXJldHVybiB5dC5idWZmZXI7'@; put 'aWYoU24uaXNVUkxTZWFyY2hQYXJhbXMoeXQpKXJldHVybiBqdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSx5dC50b1N0cmluZygpO2xldCBscjtpZihGbil7Y29uc3QgaWk9VW8odGhpcywiZm9ybVNlcmlhbGl6'@; put 'ZXIiKTtpZih6dC5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gZnVuY3Rpb24gVXMoaHQseXQpe3JldHVybiBDaShodCxuZXcgTGMuY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMse3Zpc2l0b3I6ZnVuY3Rpb24oanQsenQsbW4sRm4pe3JldHVy'@; put 'biBMYy5pc05vZGUmJlNuLmlzQnVmZmVyKGp0KT8odGhpcy5hcHBlbmQoenQsanQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6Rm4uZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwuLi55dH0pfSh5dCxpaSkudG9TdHJpbmcoKTtpZigobHI9U24uaXNGaWxlTGlzdCh5dCkp'@; put 'fHx6dC5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2NvbnN0IGtpPVVvKHRoaXMsImVudiIpLFdpPWtpJiZraS5Gb3JtRGF0YTtyZXR1cm4gQ2kobHI/eyJmaWxlc1tdIjp5dH06eXQsV2kmJm5ldyBXaSxpaSl9fXJldHVybiBGbnx8bW4/KGp0LnNldENvbnRlbnRUeXBlKCJh'@; put 'cHBsaWNhdGlvbi9qc29uIiwhMSksZnVuY3Rpb24gZmEoaHQseXQsanQpe2lmKFNuLmlzU3RyaW5nKGh0KSl0cnl7cmV0dXJuKHl0fHxKU09OLnBhcnNlKShodCksU24udHJpbShodCl9Y2F0Y2goenQpe2lmKCJTeW50YXhFcnJvciIhPT16dC5uYW1lKXRocm93IHp0fXJldHVybihqdHx8SlNP'@; put 'Ti5zdHJpbmdpZnkpKGh0KX0oeXQpKTp5dH1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbih5dCl7Y29uc3QganQ9VW8odGhpcywidHJhbnNpdGlvbmFsIil8fFZyLnRyYW5zaXRpb25hbCx6dD1qdCYmanQuZm9yY2VkSlNPTlBhcnNpbmcsbW49VW8odGhpcywicmVzcG9uc2VUeXBlIiks'@; put 'Rm49Impzb24iPT09bW47aWYoU24uaXNSZXNwb25zZSh5dCl8fFNuLmlzUmVhZGFibGVTdHJlYW0oeXQpKXJldHVybiB5dDtpZih5dCYmU24uaXNTdHJpbmcoeXQpJiYoenQmJiFtbnx8Rm4pKXtjb25zdCBscj0hKGp0JiZqdC5zaWxlbnRKU09OUGFyc2luZykmJkZuO3RyeXtyZXR1cm4gSlNP'@; put 'Ti5wYXJzZSh5dCxVbyh0aGlzLCJwYXJzZVJldml2ZXIiKSl9Y2F0Y2goaWkpe2lmKGxyKXRocm93IlN5bnRheEVycm9yIj09PWlpLm5hbWU/dm4uZnJvbShpaSx2bi5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCxVbyh0aGlzLCJyZXNwb25zZSIpKTppaX19cmV0dXJuIHl0fV0sdGltZW91'@; put 'dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTpMYy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6TGMuY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0'@; put 'YXR1czpmdW5jdGlvbih5dCl7cmV0dXJuIHl0Pj0yMDAmJnl0PDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O2Z1bmN0aW9uIFFjKGh0LHl0KXtjb25zdCBqdD10aGlzfHxWcix6'@; put 'dD15dHx8anQsbW49dmkuZnJvbSh6dC5oZWFkZXJzKTtsZXQgRm49enQuZGF0YTtyZXR1cm4gU24uZm9yRWFjaChodCxmdW5jdGlvbihscil7Rm49bHIuY2FsbChqdCxGbixtbi5ub3JtYWxpemUoKSx5dD95dC5zdGF0dXM6dm9pZCAwKX0pLG1uLm5vcm1hbGl6ZSgpLEZufWZ1bmN0aW9uIG0y'@; put 'KGh0KXtyZXR1cm4hKCFodHx8IWh0Ll9fQ0FOQ0VMX18pfVNuLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwicXVlcnkiXSxodD0+e1ZyLmhlYWRlcnNbaHRdPXt9fSk7Y2xhc3MgYTAgZXh0ZW5kcyB2bntjb25zdHJ1Y3Rvcih5dCxqdCx6dCl7'@; put 'c3VwZXIoeXQ/PyJjYW5jZWxlZCIsdm4uRVJSX0NBTkNFTEVELGp0LHp0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IiLHRoaXMuX19DQU5DRUxfXz0hMH19ZnVuY3Rpb24gYmcoaHQseXQsanQpe2NvbnN0IHp0PWp0LmNvbmZpZy52YWxpZGF0ZVN0YXR1cztqdC5zdGF0dXMmJnp0JiYhenQo'@; put 'anQuc3RhdHVzKT95dChuZXcgdm4oIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitqdC5zdGF0dXMsanQuc3RhdHVzPj00MDAmJmp0LnN0YXR1czw1MDA/dm4uRVJSX0JBRF9SRVFVRVNUOnZuLkVSUl9CQURfUkVTUE9OU0UsanQuY29uZmlnLGp0LnJlcXVlc3QsanQpKTpodChq'@; put 'dCl9Y29uc3QgdTM9KGh0LHl0LGp0PTMpPT57bGV0IHp0PTA7Y29uc3QgbW49ZnVuY3Rpb24gVnUoaHQseXQpe2h0PWh0fHwxMDtjb25zdCBqdD1uZXcgQXJyYXkoaHQpLHp0PW5ldyBBcnJheShodCk7bGV0IFFuLG1uPTAsRm49MDtyZXR1cm4geXQ9dm9pZCAwIT09eXQ/eXQ6MWUzLGZ1bmN0'@; put 'aW9uKGlpKXtjb25zdCBraT1EYXRlLm5vdygpLFdpPXp0W0ZuXTtRbnx8KFFuPWtpKSxqdFttbl09aWksenRbbW5dPWtpO2xldCBLaT1GbixOYT0wO2Zvcig7S2khPT1tbjspTmErPWp0W0tpKytdLEtpJT1odDtpZihtbj0obW4rMSklaHQsbW49PT1GbiYmKEZuPShGbisxKSVodCksa2ktUW48'@; put 'eXQpcmV0dXJuO2NvbnN0IFJvPVdpJiZraS1XaTtyZXR1cm4gUm8/TWF0aC5yb3VuZCgxZTMqTmEvUm8pOnZvaWQgMH19KDUwLDI1MCk7cmV0dXJuIGZ1bmN0aW9uIExtKGh0LHl0KXtsZXQgbW4sRm4sanQ9MCx6dD0xZTMveXQ7Y29uc3QgUW49KGtpLFdpPURhdGUubm93KCkpPT57anQ9V2ks'@; put 'bW49bnVsbCxGbiYmKGNsZWFyVGltZW91dChGbiksRm49bnVsbCksaHQoLi4ua2kpfTtyZXR1cm5bKC4uLmtpKT0+e2NvbnN0IFdpPURhdGUubm93KCksS2k9V2ktanQ7S2k+PXp0P1FuKGtpLFdpKToobW49a2ksRm58fChGbj1zZXRUaW1lb3V0KCgpPT57Rm49bnVsbCxRbihtbil9LHp0LUtp'@; put 'KSkpfSwoKT0+bW4mJlFuKG1uKV19KEZuPT57aWYoIUZufHwibnVtYmVyIiE9dHlwZW9mIEZuLmxvYWRlZClyZXR1cm47Y29uc3QgUW49Rm4ubG9hZGVkLGxyPUZuLmxlbmd0aENvbXB1dGFibGU/Rm4udG90YWw6dm9pZCAwLGlpPW51bGwhPWxyP01hdGgubWluKFFuLGxyKTpRbixraT1NYXRo'@; put 'Lm1heCgwLGlpLXp0KSxXaT1tbihraSk7enQ9TWF0aC5tYXgoenQsaWkpLGh0KHtsb2FkZWQ6aWksdG90YWw6bHIscHJvZ3Jlc3M6bHI/aWkvbHI6dm9pZCAwLGJ5dGVzOmtpLHJhdGU6V2l8fHZvaWQgMCxlc3RpbWF0ZWQ6V2kmJmxyPyhsci1paSkvV2k6dm9pZCAwLGV2ZW50OkZuLGxlbmd0'@; put 'aENvbXB1dGFibGU6bnVsbCE9bHIsW3l0PyJkb3dubG9hZCI6InVwbG9hZCJdOiEwfSl9LGp0KX0sbmg9KGh0LHl0KT0+e2NvbnN0IGp0PW51bGwhPWh0O3JldHVyblt6dD0+eXRbMF0oe2xlbmd0aENvbXB1dGFibGU6anQsdG90YWw6aHQsbG9hZGVkOnp0fSkseXRbMV1dfSx3Zz1odD0+KC4u'@; put 'Lnl0KT0+U24uYXNhcCgoKT0+aHQoLi4ueXQpKTt2YXIgSmM9TGMuaGFzU3RhbmRhcmRCcm93c2VyRW52PygoaHQseXQpPT5qdD0+KGp0PW5ldyBVUkwoanQsTGMub3JpZ2luKSxodC5wcm90b2NvbD09PWp0LnByb3RvY29sJiZodC5ob3N0PT09anQuaG9zdCYmKHl0fHxodC5wb3J0PT09anQu'@; put 'cG9ydCkpKShuZXcgVVJMKExjLm9yaWdpbiksTGMubmF2aWdhdG9yJiYvKG1zaWV8dHJpZGVudCkvaS50ZXN0KExjLm5hdmlnYXRvci51c2VyQWdlbnQpKTooKT0+ITAsZ2Y9TGMuaGFzU3RhbmRhcmRCcm93c2VyRW52P3t3cml0ZShodCx5dCxqdCx6dCxtbixGbixRbil7aWYodHlwZW9mIGRv'@; put 'Y3VtZW50PiJ1IilyZXR1cm47Y29uc3QgbHI9W2Ake2h0fT0ke2VuY29kZVVSSUNvbXBvbmVudCh5dCl9YF07U24uaXNOdW1iZXIoanQpJiZsci5wdXNoKGBleHBpcmVzPSR7bmV3IERhdGUoanQpLnRvVVRDU3RyaW5nKCl9YCksU24uaXNTdHJpbmcoenQpJiZsci5wdXNoKGBwYXRoPSR7enR9'@; put 'YCksU24uaXNTdHJpbmcobW4pJiZsci5wdXNoKGBkb21haW49JHttbn1gKSwhMD09PUZuJiZsci5wdXNoKCJzZWN1cmUiKSxTbi5pc1N0cmluZyhRbikmJmxyLnB1c2goYFNhbWVTaXRlPSR7UW59YCksZG9jdW1lbnQuY29va2llPWxyLmpvaW4oIjsgIil9LHJlYWQoaHQpe2lmKHR5cGVvZiBk'@; put 'b2N1bWVudD4idSIpcmV0dXJuIG51bGw7Y29uc3QgeXQ9ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7Iik7Zm9yKGxldCBqdD0wO2p0PHl0Lmxlbmd0aDtqdCsrKXtjb25zdCB6dD15dFtqdF0ucmVwbGFjZSgvXlxzKy8sIiIpLG1uPXp0LmluZGV4T2YoIj0iKTtpZigtMSE9PW1uJiZ6dC5zbGlj'@; put 'ZSgwLG1uKT09PWh0KXRyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHp0LnNsaWNlKG1uKzEpKX1jYXRjaHtyZXR1cm4genQuc2xpY2UobW4rMSl9fXJldHVybiBudWxsfSxyZW1vdmUoaHQpe3RoaXMud3JpdGUoaHQsIiIsRGF0ZS5ub3coKS04NjRlNSwiLyIpfX06e3dyaXRlKCl7fSxy'@; put 'ZWFkOigpPT5udWxsLHJlbW92ZSgpe319O2NvbnN0IEVvPS9eaHR0cHM/Oig/IVwvXC8pL2ksQnU9L1tcdFxuXHJdL2c7ZnVuY3Rpb24gaGMoaHQseXQpe2lmKCJzdHJpbmciPT10eXBlb2YgaHQmJkVvLnRlc3QoZnVuY3Rpb24gUnUoaHQpe3JldHVybiBmdW5jdGlvbiBOMShodCl7bGV0IHl0'@; put 'PTA7Zm9yKDt5dDxodC5sZW5ndGgmJmh0LmNoYXJDb2RlQXQoeXQpPD0zMjspeXQrKztyZXR1cm4gaHQuc2xpY2UoeXQpfShodCkucmVwbGFjZShCdSwiIil9KGh0KSkpdGhyb3cgbmV3IHZuKCdJbnZhbGlkIFVSTDogbWlzc2luZyAiLy8iIGFmdGVyIHByb3RvY29sJyx2bi5FUlJfSU5WQUxJ'@; put 'RF9VUkwseXQpfWZ1bmN0aW9uIGVkKGh0LHl0LGp0LHp0KXtoYyh5dCx6dCk7bGV0IG1uPSFmdW5jdGlvbiBscChodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBodCYmL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChodCl9KHl0KTtyZXR1cm4gaHQmJihtbnx8ITE9PT1qdCk/'@; put 'KGhjKGh0LHp0KSxmdW5jdGlvbiBEbChodCx5dCl7cmV0dXJuIHl0P2h0LnJlcGxhY2UoL1wvP1wvJC8sIiIpKyIvIit5dC5yZXBsYWNlKC9eXC8rLywiIik6aHR9KGh0LHl0KSk6eXR9Y29uc3QgSm49aHQ9Pmh0IGluc3RhbmNlb2Ygdmk/ey4uLmh0fTpodDtmdW5jdGlvbiBjbChodCx5dCl7'@; put 'aHQ9aHR8fHt9LHl0PXl0fHx7fTtjb25zdCBqdD1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHp0KFdpLEtpLE5hLFJvKXtyZXR1cm4gU24uaXNQbGFpbk9iamVjdChXaSkmJlNuLmlzUGxhaW5PYmplY3QoS2kpP1NuLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOlJvfSxXaSxLaSk6U24uaXNQ'@; put 'bGFpbk9iamVjdChLaSk/U24ubWVyZ2Uoe30sS2kpOlNuLmlzQXJyYXkoS2kpP0tpLnNsaWNlKCk6S2l9ZnVuY3Rpb24gbW4oV2ksS2ksTmEsUm8pe3JldHVybiBTbi5pc1VuZGVmaW5lZChLaSk/U24uaXNVbmRlZmluZWQoV2kpP3ZvaWQgMDp6dCh2b2lkIDAsV2ksMCxSbyk6enQoV2ksS2ks'@; put 'MCxSbyl9ZnVuY3Rpb24gRm4oV2ksS2kpe2lmKCFTbi5pc1VuZGVmaW5lZChLaSkpcmV0dXJuIHp0KHZvaWQgMCxLaSl9ZnVuY3Rpb24gUW4oV2ksS2kpe3JldHVybiBTbi5pc1VuZGVmaW5lZChLaSk/U24uaXNVbmRlZmluZWQoV2kpP3ZvaWQgMDp6dCh2b2lkIDAsV2kpOnp0KHZvaWQgMCxL'@; put 'aSl9ZnVuY3Rpb24gaWkoV2ksS2ksTmEpe3JldHVybiBTbi5oYXNPd25Qcm9wKHl0LE5hKT96dChXaSxLaSk6U24uaGFzT3duUHJvcChodCxOYSk/enQodm9pZCAwLFdpKTp2b2lkIDB9T2JqZWN0LmRlZmluZVByb3BlcnR5KGp0LCJoYXNPd25Qcm9wZXJ0eSIse19fcHJvdG9fXzpudWxsLHZh'@; put 'bHVlOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBraT17dXJsOkZuLG1ldGhvZDpGbixkYXRhOkZuLGJhc2VVUkw6UW4sdHJhbnNmb3JtUmVxdWVzdDpRbix0cmFuc2Zvcm1SZXNwb25zZTpR'@; put 'bixwYXJhbXNTZXJpYWxpemVyOlFuLHRpbWVvdXQ6UW4sdGltZW91dE1lc3NhZ2U6UW4sd2l0aENyZWRlbnRpYWxzOlFuLHdpdGhYU1JGVG9rZW46UW4sYWRhcHRlcjpRbixyZXNwb25zZVR5cGU6UW4seHNyZkNvb2tpZU5hbWU6UW4seHNyZkhlYWRlck5hbWU6UW4sb25VcGxvYWRQcm9ncmVz'@; put 'czpRbixvbkRvd25sb2FkUHJvZ3Jlc3M6UW4sZGVjb21wcmVzczpRbixtYXhDb250ZW50TGVuZ3RoOlFuLG1heEJvZHlMZW5ndGg6UW4sYmVmb3JlUmVkaXJlY3Q6UW4sdHJhbnNwb3J0OlFuLGh0dHBBZ2VudDpRbixodHRwc0FnZW50OlFuLGNhbmNlbFRva2VuOlFuLHNvY2tldFBhdGg6UW4s'@; put 'YWxsb3dlZFNvY2tldFBhdGhzOlFuLHJlc3BvbnNlRW5jb2Rpbmc6UW4sdmFsaWRhdGVTdGF0dXM6aWksaGVhZGVyczooV2ksS2ksTmEpPT5tbihKbihXaSksSm4oS2kpLDAsITApfTtyZXR1cm4gU24uZm9yRWFjaChPYmplY3Qua2V5cyh7Li4uaHQsLi4ueXR9KSxmdW5jdGlvbihLaSl7aWYo'@; put 'Il9fcHJvdG9fXyI9PT1LaXx8ImNvbnN0cnVjdG9yIj09PUtpfHwicHJvdG90eXBlIj09PUtpKXJldHVybjtjb25zdCBOYT1Tbi5oYXNPd25Qcm9wKGtpLEtpKT9raVtLaV06bW4sb3I9TmEoU24uaGFzT3duUHJvcChodCxLaSk/aHRbS2ldOnZvaWQgMCxTbi5oYXNPd25Qcm9wKHl0LEtpKT95'@; put 'dFtLaV06dm9pZCAwLEtpKTtTbi5pc1VuZGVmaW5lZChvcikmJk5hIT09aWl8fChqdFtLaV09b3IpfSksU24uaGFzT3duUHJvcCh5dCwidmFsaWRhdGVTdGF0dXMiKSYmU24uaXNVbmRlZmluZWQoeXQudmFsaWRhdGVTdGF0dXMpJiYhMT09PWZ1bmN0aW9uIGxyKFdpKXtjb25zdCBLaT1Tbi5o'@; put 'YXNPd25Qcm9wKHl0LCJ0cmFuc2l0aW9uYWwiKT95dC50cmFuc2l0aW9uYWw6dm9pZCAwO2lmKCFTbi5pc1VuZGVmaW5lZChLaSkpe2lmKCFTbi5pc1BsYWluT2JqZWN0KEtpKSlyZXR1cm47aWYoU24uaGFzT3duUHJvcChLaSxXaSkpcmV0dXJuIEtpW1dpXX1jb25zdCBOYT1Tbi5oYXNPd25Q'@; put 'cm9wKGh0LCJ0cmFuc2l0aW9uYWwiKT9odC50cmFuc2l0aW9uYWw6dm9pZCAwO2lmKFNuLmlzUGxhaW5PYmplY3QoTmEpJiZTbi5oYXNPd25Qcm9wKE5hLFdpKSlyZXR1cm4gTmFbV2ldfSgidmFsaWRhdGVTdGF0dXNVbmRlZmluZWRSZXNvbHZlcyIpJiYoU24uaGFzT3duUHJvcChodCwidmFs'@; put 'aWRhdGVTdGF0dXMiKT9qdC52YWxpZGF0ZVN0YXR1cz16dCh2b2lkIDAsaHQudmFsaWRhdGVTdGF0dXMpOmRlbGV0ZSBqdC52YWxpZGF0ZVN0YXR1cyksanR9Y29uc3QgbWk9WyJjb250ZW50LXR5cGUiLCJjb250ZW50LWxlbmd0aCJdO2Z1bmN0aW9uIGNuKGh0KXtjb25zdCB5dD1jbCh7fSxo'@; put 'dCksanQ9TmE9PlNuLmhhc093blByb3AoeXQsTmEpP3l0W05hXTp2b2lkIDAsenQ9anQoImRhdGEiKTtsZXQgbW49anQoIndpdGhYU1JGVG9rZW4iKTtjb25zdCBGbj1qdCgieHNyZkhlYWRlck5hbWUiKSxRbj1qdCgieHNyZkNvb2tpZU5hbWUiKTtsZXQgbHI9anQoImhlYWRlcnMiKTtjb25z'@; put 'dCBpaT1qdCgiYXV0aCIpLGtpPWp0KCJiYXNlVVJMIiksV2k9anQoImFsbG93QWJzb2x1dGVVcmxzIiksS2k9anQoInVybCIpO2lmKHl0LmhlYWRlcnM9bHI9dmkuZnJvbShscikseXQudXJsPXRhKGVkKGtpLEtpLFdpLHl0KSxqdCgicGFyYW1zIiksanQoInBhcmFtc1NlcmlhbGl6ZXIiKSks'@; put 'aWkpe2NvbnN0IE5hPVNuLmdldFNhZmVQcm9wKGlpLCJ1c2VybmFtZSIpfHwiIixSbz1Tbi5nZXRTYWZlUHJvcChpaSwicGFzc3dvcmQiKXx8IiI7dHJ5e2xyLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShOYSsiOiIrKFJvPyhodD0+ZW5jb2RlVVJJQ29tcG9uZW50KGh0KS5y'@; put 'ZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9naSwoeXQsanQpPT5TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGp0LDE2KSkpKShSbyk6IiIpKSl9Y2F0Y2goZGwpe3Rocm93IHZuLmZyb20oZGwsdm4uRVJSX0JBRF9PUFRJT05fVkFMVUUsaHQpfX1pZihTbi5pc0Zvcm1EYXRhKHp0KSYmKExj'@; put 'Lmhhc1N0YW5kYXJkQnJvd3NlckVudnx8TGMuaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52fHxTbi5pc1JlYWN0TmF0aXZlKHp0KT9sci5zZXRDb250ZW50VHlwZSh2b2lkIDApOlNuLmlzRnVuY3Rpb24oenQuZ2V0SGVhZGVycykmJmZ1bmN0aW9uIGV1KGh0LHl0LGp0KXsiY29udGVu'@; put 'dC1vbmx5Ij09PWp0P09iamVjdC5lbnRyaWVzKHl0fHx7fSkuZm9yRWFjaCgoW3p0LG1uXSk9PnttaS5pbmNsdWRlcyh6dC50b0xvd2VyQ2FzZSgpKSYmaHQuc2V0KHp0LG1uKX0pOmh0LnNldCh5dCl9KGxyLHp0LmdldEhlYWRlcnMoKSxqdCgiZm9ybURhdGFIZWFkZXJQb2xpY3kiKSkpLExj'@; put 'Lmhhc1N0YW5kYXJkQnJvd3NlckVudiYmKFNuLmlzRnVuY3Rpb24obW4pJiYobW49bW4oeXQpKSwhMD09PW1ufHxudWxsPT1tbiYmSmMoeXQudXJsKSkpe2NvbnN0IFJvPUZuJiZRbiYmZ2YucmVhZChRbik7Um8mJmxyLnNldChGbixSbyl9cmV0dXJuIHl0fXZhciBnaT10eXBlb2YgWE1MSHR0'@; put 'cFJlcXVlc3Q8InUiJiZmdW5jdGlvbihodCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGp0LHp0KXtjb25zdCBtbj1jbihodCk7bGV0IEZuPW1uLmRhdGE7Y29uc3QgUW49dmkuZnJvbShtbi5oZWFkZXJzKS5ub3JtYWxpemUoKTtsZXQgV2ksS2ksTmEsUm8sZGwse3Jlc3BvbnNlVHlw'@; put 'ZTpscixvblVwbG9hZFByb2dyZXNzOmlpLG9uRG93bmxvYWRQcm9ncmVzczpraX09bW47ZnVuY3Rpb24gb3IoKXtSbyYmUm8oKSxkbCYmZGwoKSxtbi5jYW5jZWxUb2tlbiYmbW4uY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoV2kpLG1uLnNpZ25hbCYmbW4uc2lnbmFsLnJlbW92ZUV2ZW50TGlz'@; put 'dGVuZXIoImFib3J0IixXaSl9bGV0IGNvPW5ldyBYTUxIdHRwUmVxdWVzdDtmdW5jdGlvbiBzbigpe2lmKCFjbylyZXR1cm47Y29uc3QgRGE9dmkuZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGNvJiZjby5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7YmcoZnVuY3Rpb24obmMpe2p0'@; put 'KG5jKSxvcigpfSxmdW5jdGlvbihuYyl7enQobmMpLG9yKCl9LHtkYXRhOmxyJiYidGV4dCIhPT1sciYmImpzb24iIT09bHI/Y28ucmVzcG9uc2U6Y28ucmVzcG9uc2VUZXh0LHN0YXR1czpjby5zdGF0dXMsc3RhdHVzVGV4dDpjby5zdGF0dXNUZXh0LGhlYWRlcnM6RGEsY29uZmlnOmh0LHJl'@; put 'cXVlc3Q6Y299KSxjbz1udWxsfWNvLm9wZW4obW4ubWV0aG9kLnRvVXBwZXJDYXNlKCksbW4udXJsLCEwKSxjby50aW1lb3V0PW1uLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiBjbz9jby5vbmxvYWRlbmQ9c246Y28ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWNvfHw0IT09Y28ucmVh'@; put 'ZHlTdGF0ZXx8MD09PWNvLnN0YXR1cyYmKCFjby5yZXNwb25zZVVSTHx8IWNvLnJlc3BvbnNlVVJMLnN0YXJ0c1dpdGgoImZpbGU6IikpfHxzZXRUaW1lb3V0KHNuKX0sY28ub25hYm9ydD1mdW5jdGlvbigpe2NvJiYoenQobmV3IHZuKCJSZXF1ZXN0IGFib3J0ZWQiLHZuLkVDT05OQUJPUlRF'@; put 'RCxodCxjbykpLG9yKCksY289bnVsbCl9LGNvLm9uZXJyb3I9ZnVuY3Rpb24obnMpe2NvbnN0IFdjPW5ldyB2bihucyYmbnMubWVzc2FnZT9ucy5tZXNzYWdlOiJOZXR3b3JrIEVycm9yIix2bi5FUlJfTkVUV09SSyxodCxjbyk7V2MuZXZlbnQ9bnN8fG51bGwsenQoV2MpLG9yKCksY289bnVs'@; put 'bH0sY28ub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IG5zPW1uLnRpbWVvdXQ/InRpbWVvdXQgb2YgIittbi50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiO21uLnRpbWVvdXRFcnJvck1lc3NhZ2UmJihucz1tbi50aW1lb3V0RXJyb3JNZXNzYWdlKSx6dChuZXcgdm4o'@; put 'bnMsKG1uLnRyYW5zaXRpb25hbHx8RnMpLmNsYXJpZnlUaW1lb3V0RXJyb3I/dm4uRVRJTUVET1VUOnZuLkVDT05OQUJPUlRFRCxodCxjbykpLG9yKCksY289bnVsbH0sdm9pZCAwPT09Rm4mJlFuLnNldENvbnRlbnRUeXBlKG51bGwpLCJzZXRSZXF1ZXN0SGVhZGVyImluIGNvJiZTbi5mb3JF'@; put 'YWNoKE1pKFFuKSxmdW5jdGlvbihucyxFbCl7Y28uc2V0UmVxdWVzdEhlYWRlcihFbCxucyl9KSxTbi5pc1VuZGVmaW5lZChtbi53aXRoQ3JlZGVudGlhbHMpfHwoY28ud2l0aENyZWRlbnRpYWxzPSEhbW4ud2l0aENyZWRlbnRpYWxzKSxsciYmImpzb24iIT09bHImJihjby5yZXNwb25zZVR5'@; put 'cGU9bW4ucmVzcG9uc2VUeXBlKSxraSYmKFtOYSxkbF09dTMoa2ksITApLGNvLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixOYSkpLGlpJiZjby51cGxvYWQmJihbS2ksUm9dPXUzKGlpKSxjby51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLEtpKSxjby51cGxvYWQuYWRk'@; put 'RXZlbnRMaXN0ZW5lcigibG9hZGVuZCIsUm8pKSwobW4uY2FuY2VsVG9rZW58fG1uLnNpZ25hbCkmJihXaT1EYT0+e2NvJiYoenQoIURhfHxEYS50eXBlP25ldyBhMChudWxsLGh0LGNvKTpEYSksY28uYWJvcnQoKSxvcigpLGNvPW51bGwpfSxtbi5jYW5jZWxUb2tlbiYmbW4uY2FuY2VsVG9r'@; put 'ZW4uc3Vic2NyaWJlKFdpKSxtbi5zaWduYWwmJihtbi5zaWduYWwuYWJvcnRlZD9XaSgpOm1uLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsV2kpKSk7Y29uc3QgaW89ZnVuY3Rpb24gVWEoaHQpe2NvbnN0IHl0PS9eKFstK1x3XXsxLDI1fSk6KD86XC9cLyk/Ly5leGVjKGh0KTty'@; put 'ZXR1cm4geXQmJnl0WzFdfHwiIn0obW4udXJsKTtpZihpbyYmIUxjLnByb3RvY29scy5pbmNsdWRlcyhpbykpcmV0dXJuIHp0KG5ldyB2bigiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgIitpbysiOiIsdm4uRVJSX0JBRF9SRVFVRVNULGh0KSksdm9pZCBvcigpO2NvLnNlbmQoRm58fG51bGwpfSl9'@; put 'O2NvbnN0IHdvPShodCx5dCk9PntpZihodD1odD9odC5maWx0ZXIoQm9vbGVhbik6W10sIXl0JiYhaHQubGVuZ3RoKXJldHVybjtjb25zdCBqdD1uZXcgQWJvcnRDb250cm9sbGVyO2xldCB6dD0hMTtjb25zdCBtbj1mdW5jdGlvbihpaSl7aWYoIXp0KXt6dD0hMCxRbigpO2NvbnN0IGtpPWlp'@; put 'IGluc3RhbmNlb2YgRXJyb3I/aWk6dGhpcy5yZWFzb247anQuYWJvcnQoa2kgaW5zdGFuY2VvZiB2bj9raTpuZXcgYTAoa2kgaW5zdGFuY2VvZiBFcnJvcj9raS5tZXNzYWdlOmtpKSl9fTtsZXQgRm49eXQmJnNldFRpbWVvdXQoKCk9PntGbj1udWxsLG1uKG5ldyB2bihgdGltZW91dCBvZiAk'@; put 'e3l0fW1zIGV4Y2VlZGVkYCx2bi5FVElNRURPVVQpKX0seXQpO2NvbnN0IFFuPSgpPT57aHQmJihGbiYmY2xlYXJUaW1lb3V0KEZuKSxGbj1udWxsLGh0LmZvckVhY2goaWk9PntpaS51bnN1YnNjcmliZT9paS51bnN1YnNjcmliZShtbik6aWkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQi'@; put 'LG1uKX0pLGh0PW51bGwpfTtodC5mb3JFYWNoKGlpPT5paS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbW4se29uY2U6ITB9KSk7Y29uc3R7c2lnbmFsOmxyfT1qdDtyZXR1cm4gbHIudW5zdWJzY3JpYmU9KCk9PlNuLmFzYXAoUW4pLGxyfSxscz1mdW5jdGlvbiooaHQseXQpe2xldCBqdD1o'@; put 'dC5ieXRlTGVuZ3RoO2lmKGp0PHl0KXJldHVybiB2b2lkKHlpZWxkIGh0KTtsZXQgbW4senQ9MDtmb3IoO3p0PGp0Oyltbj16dCt5dCx5aWVsZCBodC5zbGljZSh6dCxtbiksenQ9bW59LEVyPWZ1bmN0aW9uKCl7dmFyIGh0PV93cmFwQXN5bmNHZW5lcmF0b3IoZnVuY3Rpb24qKHl0LGp0KXt2'@; put 'YXIgRm4senQ9ITEsbW49ITE7dHJ5e2Zvcih2YXIgbHIsUW49X2FzeW5jSXRlcmF0b3IodGMoeXQpKTt6dD0hKGxyPXlpZWxkIF9hd2FpdEFzeW5jR2VuZXJhdG9yKFFuLm5leHQoKSkpLmRvbmU7enQ9ITEpe2NvbnN0IGlpPWxyLnZhbHVlO3lpZWxkKl9hc3luY0dlbmVyYXRvckRlbGVnYXRl'@; put 'KF9hc3luY0l0ZXJhdG9yKGxzKGlpLGp0KSksX2F3YWl0QXN5bmNHZW5lcmF0b3IpfX1jYXRjaChpaSl7bW49ITAsRm49aWl9ZmluYWxseXt0cnl7enQmJm51bGwhPVFuLnJldHVybiYmKHlpZWxkIF9hd2FpdEFzeW5jR2VuZXJhdG9yKFFuLnJldHVybigpKSl9ZmluYWxseXtpZihtbil0aHJv'@; put 'dyBGbn19fSk7cmV0dXJuIGZ1bmN0aW9uKGp0LHp0KXtyZXR1cm4gaHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx0Yz1mdW5jdGlvbigpe3ZhciBodD1fd3JhcEFzeW5jR2VuZXJhdG9yKGZ1bmN0aW9uKih5dCl7aWYoeXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKXJldHVybiB2b2lkKHlp'@; put 'ZWxkKl9hc3luY0dlbmVyYXRvckRlbGVnYXRlKF9hc3luY0l0ZXJhdG9yKHl0KSxfYXdhaXRBc3luY0dlbmVyYXRvcikpO2NvbnN0IGp0PXl0LmdldFJlYWRlcigpO3RyeXtmb3IoOzspe2NvbnN0e2RvbmU6enQsdmFsdWU6bW59PXlpZWxkIF9hd2FpdEFzeW5jR2VuZXJhdG9yKGp0LnJlYWQo'@; put 'KSk7aWYoenQpYnJlYWs7eWllbGQgbW59fWZpbmFsbHl7eWllbGQgX2F3YWl0QXN5bmNHZW5lcmF0b3IoanQuY2FuY2VsKCkpfX0pO3JldHVybiBmdW5jdGlvbihqdCl7cmV0dXJuIGh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksUWE9KGh0LHl0LGp0LHp0KT0+e2NvbnN0IG1uPUVyKGh0'@; put 'LHl0KTtsZXQgUW4sRm49MCxscj1paT0+e1FufHwoUW49ITAsenQmJnp0KGlpKSl9O3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3B1bGw6aWk9Pl9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKigpe3RyeXtjb25zdHtkb25lOmtpLHZhbHVlOldpfT15aWVsZCBtbi5uZXh0KCk7aWYoa2kp'@; put 'cmV0dXJuIGxyKCksdm9pZCBpaS5jbG9zZSgpO2lmKGp0KXtsZXQgTmE9Rm4rPVdpLmJ5dGVMZW5ndGg7anQoTmEpfWlpLmVucXVldWUobmV3IFVpbnQ4QXJyYXkoV2kpKX1jYXRjaChraSl7dGhyb3cgbHIoa2kpLGtpfX0pKCksY2FuY2VsOmlpPT4obHIoaWkpLG1uLnJldHVybigpKX0se2hp'@; put 'Z2hXYXRlck1hcms6Mn0pfSx1bD1odD0+aHQ+PTQ4JiZodDw9NTd8fGh0Pj02NSYmaHQ8PTcwfHxodD49OTcmJmh0PD0xMDIscHM9KGh0LHl0LGp0KT0+eXQrMjxqdCYmdWwoaHQuY2hhckNvZGVBdCh5dCsxKSkmJnVsKGh0LmNoYXJDb2RlQXQoeXQrMikpLHtpc0Z1bmN0aW9uOkxsfT1TbixK'@; put 'aD1odD0+e2lmKCFTbi5pc1N0cmluZyhodCkpcmV0dXJuIGh0O3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGh0KX1jYXRjaHtyZXR1cm4gaHR9fSxPbD0oaHQsLi4ueXQpPT57dHJ5e3JldHVybiEhaHQoLi4ueXQpfWNhdGNoe3JldHVybiExfX0sRnI9aHQ9Pntjb25zdCB5dD1udWxs'@; put 'IT1Tbi5nbG9iYWw/U24uZ2xvYmFsOmdsb2JhbFRoaXMse1JlYWRhYmxlU3RyZWFtOmp0LFRleHRFbmNvZGVyOnp0fT15dDtodD1Tbi5tZXJnZS5jYWxsKHtza2lwVW5kZWZpbmVkOiEwfSx7UmVxdWVzdDp5dC5SZXF1ZXN0LFJlc3BvbnNlOnl0LlJlc3BvbnNlfSxodCk7Y29uc3R7ZmV0Y2g6'@; put 'bW4sUmVxdWVzdDpGbixSZXNwb25zZTpRbn09aHQsbHI9bW4/TGwobW4pOiJmdW5jdGlvbiI9PXR5cGVvZiBmZXRjaCxpaT1MbChGbiksa2k9TGwoUW4pO2lmKCFscilyZXR1cm4hMTtjb25zdCBXaT1sciYmTGwoanQpLEtpPWxyJiYoImZ1bmN0aW9uIj09dHlwZW9mIHp0Pyhzbj0+aW89PnNu'@; put 'LmVuY29kZShpbykpKG5ldyB6dCk6ZnVuY3Rpb24oKXt2YXIgc249X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKGlvKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeWllbGQgbmV3IEZuKGlvKS5hcnJheUJ1ZmZlcigpKX0pO3JldHVybiBmdW5jdGlvbihpbyl7cmV0dXJuIHNuLmFwcGx5KHRo'@; put 'aXMsYXJndW1lbnRzKX19KCkpLE5hPWlpJiZXaSYmT2woKCk9PntsZXQgc249ITE7Y29uc3QgaW89bmV3IEZuKExjLm9yaWdpbix7Ym9keTpuZXcganQsbWV0aG9kOiJQT1NUIixnZXQgZHVwbGV4KCl7cmV0dXJuIHNuPSEwLCJoYWxmIn19KSxEYT1pby5oZWFkZXJzLmhhcygiQ29udGVudC1U'@; put 'eXBlIik7cmV0dXJuIG51bGwhPWlvLmJvZHkmJmlvLmJvZHkuY2FuY2VsKCksc24mJiFEYX0pLFJvPWtpJiZXaSYmT2woKCk9PlNuLmlzUmVhZGFibGVTdHJlYW0obmV3IFFuKCIiKS5ib2R5KSksZGw9e3N0cmVhbTpSbyYmKHNuPT5zbi5ib2R5KX07bHImJlsidGV4dCIsImFycmF5QnVmZmVy'@; put 'IiwiYmxvYiIsImZvcm1EYXRhIiwic3RyZWFtIl0uZm9yRWFjaChzbj0+eyFkbFtzbl0mJihkbFtzbl09KGlvLERhKT0+e2xldCBucz1pbyYmaW9bc25dO2lmKG5zKXJldHVybiBucy5jYWxsKGlvKTt0aHJvdyBuZXcgdm4oYFJlc3BvbnNlIHR5cGUgJyR7c259JyBpcyBub3Qgc3VwcG9ydGVk'@; put 'YCx2bi5FUlJfTk9UX1NVUFBPUlQsRGEpfSl9KTtjb25zdCBvcj1mdW5jdGlvbigpe3ZhciBzbj1fYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooaW8pe3JldHVybiBudWxsPT1pbz8wOlNuLmlzQmxvYihpbyk/aW8uc2l6ZTpTbi5pc1NwZWNDb21wbGlhbnRGb3JtKGlvKT8oeWllbGQgbmV3'@; put 'IEZuKExjLm9yaWdpbix7bWV0aG9kOiJQT1NUIixib2R5OmlvfSkuYXJyYXlCdWZmZXIoKSkuYnl0ZUxlbmd0aDpTbi5pc0FycmF5QnVmZmVyVmlldyhpbyl8fFNuLmlzQXJyYXlCdWZmZXIoaW8pP2lvLmJ5dGVMZW5ndGg6KFNuLmlzVVJMU2VhcmNoUGFyYW1zKGlvKSYmKGlvKz0iIiksU24u'@; put 'aXNTdHJpbmcoaW8pPyh5aWVsZCBLaShpbykpLmJ5dGVMZW5ndGg6dm9pZCAwKX0pO3JldHVybiBmdW5jdGlvbihEYSl7cmV0dXJuIHNuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksY289ZnVuY3Rpb24oKXt2YXIgc249X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qKGlvLERhKXtyZXR1'@; put 'cm4gU24udG9GaW5pdGVOdW1iZXIoaW8uZ2V0Q29udGVudExlbmd0aCgpKT8/b3IoRGEpfSk7cmV0dXJuIGZ1bmN0aW9uKERhLG5zKXtyZXR1cm4gc24uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgc249X2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24q'@; put 'KGlvKXtsZXR7dXJsOkRhLG1ldGhvZDpucyxkYXRhOkVsLHNpZ25hbDpXYyxjYW5jZWxUb2tlbjpuYyx0aW1lb3V0OnkyLG9uRG93bmxvYWRQcm9ncmVzczpEdSxvblVwbG9hZFByb2dyZXNzOmUxLHJlc3BvbnNlVHlwZTp0MSxoZWFkZXJzOmJkLHdpdGhDcmVkZW50aWFsczpzMD0ic2FtZS1v'@; put 'cmlnaW4iLGZldGNoT3B0aW9uczpiMixtYXhDb250ZW50TGVuZ3RoOmtoLG1heEJvZHlMZW5ndGg6anV9PWNuKGlvKTtjb25zdCBCZD1Tbi5pc051bWJlcihraCkmJmtoPi0xLHcyPVNuLmlzTnVtYmVyKGp1KSYmanU+LTE7bGV0IHFzPW1ufHxmZXRjaDt0MT10MT8odDErIiIpLnRvTG93ZXJD'@; put 'YXNlKCk6InRleHQiO2xldCBKYT13byhbV2MsbmMmJm5jLnRvQWJvcnRTaWduYWwoKV0seTIpLE5sPW51bGw7Y29uc3QgbjE9SmEmJkphLnVuc3Vic2NyaWJlJiYoKCk9PntKYS51bnN1YnNjcmliZSgpfSk7bGV0IGpkLE4wPW51bGw7Y29uc3QgcjE9KCk9Pm5ldyB2bigiUmVxdWVzdCBib2R5'@; put 'IGxhcmdlciB0aGFuIG1heEJvZHlMZW5ndGggbGltaXQiLHZuLkVSUl9CQURfUkVRVUVTVCxpbyxObCk7dHJ5e2xldCBobDtjb25zdCBjcz1Tbi5oYXNPd25Qcm9wKGlvLCJhdXRoIik/aW8uYXV0aDp2b2lkIDA7aWYoY3Mpe2hsPXt1c2VybmFtZTpTbi5nZXRTYWZlUHJvcChjcywidXNlcm5h'@; put 'bWUiKXx8IiIscGFzc3dvcmQ6U24uZ2V0U2FmZVByb3AoY3MsInBhc3N3b3JkIil8fCIifX1pZigoaHQ9Pntjb25zdCB5dD1odC5pbmRleE9mKCI6Ly8iKTtsZXQganQ9aHQ7cmV0dXJuLTEhPT15dCYmKGp0PWp0LnNsaWNlKHl0KzMpKSxqdC5pbmNsdWRlcygiQCIpfHxqdC5pbmNsdWRlcygi'@; put 'OiIpfSkoRGEpKXtjb25zdCB1cz1uZXcgVVJMKERhLExjLm9yaWdpbik7aWYoIWhsJiYodXMudXNlcm5hbWV8fHVzLnBhc3N3b3JkKSl7aGw9e3VzZXJuYW1lOkpoKHVzLnVzZXJuYW1lKSxwYXNzd29yZDpKaCh1cy5wYXNzd29yZCl9fSh1cy51c2VybmFtZXx8dXMucGFzc3dvcmQpJiYodXMu'@; put 'dXNlcm5hbWU9IiIsdXMucGFzc3dvcmQ9IiIsRGE9dXMuaHJlZil9aWYoaGwmJihiZC5kZWxldGUoImF1dGhvcml6YXRpb24iKSxiZC5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoKGh0PT5lbmNvZGVVUklDb21wb25lbnQoaHQpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2dp'@; put 'LCh5dCxqdCk9PlN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoanQsMTYpKSkpKChobC51c2VybmFtZXx8IiIpKyI6IisoaGwucGFzc3dvcmR8fCIiKSkpKSksQmQmJiJzdHJpbmciPT10eXBlb2YgRGEmJkRhLnN0YXJ0c1dpdGgoImRhdGE6IikmJmZ1bmN0aW9uIHR1KGh0KXtpZighaHR8'@; put 'fCJzdHJpbmciIT10eXBlb2YgaHR8fCFodC5zdGFydHNXaXRoKCJkYXRhOiIpKXJldHVybiAwO2NvbnN0IHl0PWh0LmluZGV4T2YoIiwiKTtpZih5dDwwKXJldHVybiAwO2NvbnN0IGp0PWh0LnNsaWNlKDUseXQpLHp0PWh0LnNsaWNlKHl0KzEpO2lmKC87YmFzZTY0L2kudGVzdChqdCkpe2xl'@; put 'dCBRbj16dC5sZW5ndGg7Y29uc3QgbHI9enQubGVuZ3RoO2ZvcihsZXQgUm89MDtSbzxscjtSbysrKWlmKDM3PT09enQuY2hhckNvZGVBdChSbykmJlJvKzI8bHIpe2NvbnN0IGRsPXp0LmNoYXJDb2RlQXQoUm8rMSksb3I9enQuY2hhckNvZGVBdChSbysyKTt1bChkbCkmJnVsKG9yKSYmKFFu'@; put 'LT0yLFJvKz0yKX1sZXQgaWk9MCxraT1sci0xO2NvbnN0IFdpPVJvPT5Sbz49MiYmMzc9PT16dC5jaGFyQ29kZUF0KFJvLTIpJiY1MT09PXp0LmNoYXJDb2RlQXQoUm8tMSkmJig2OD09PXp0LmNoYXJDb2RlQXQoUm8pfHwxMDA9PT16dC5jaGFyQ29kZUF0KFJvKSk7a2k+PTAmJig2MT09PXp0'@; put 'LmNoYXJDb2RlQXQoa2kpPyhpaSsrLGtpLS0pOldpKGtpKSYmKGlpKyssa2ktPTMpKSwxPT09aWkmJmtpPj0wJiYoNjE9PT16dC5jaGFyQ29kZUF0KGtpKXx8V2koa2kpKSYmaWkrKztjb25zdCBOYT0zKk1hdGguZmxvb3IoUW4vNCktKGlpfHwwKTtyZXR1cm4gTmE+MD9OYTowfWxldCBGbj0w'@; put 'O2ZvcihsZXQgUW49MCxscj16dC5sZW5ndGg7UW48bHI7UW4rKyl7Y29uc3QgaWk9enQuY2hhckNvZGVBdChRbik7aWYoMzc9PT1paSYmcHMoenQsUW4sbHIpKUZuKz0xLFFuKz0yO2Vsc2UgaWYoaWk8MTI4KUZuKz0xO2Vsc2UgaWYoaWk8MjA0OClGbis9MjtlbHNlIGlmKGlpPj01NTI5NiYm'@; put 'aWk8PTU2MzE5JiZRbisxPGxyKXtjb25zdCBraT16dC5jaGFyQ29kZUF0KFFuKzEpO2tpPj01NjMyMCYma2k8PTU3MzQzPyhGbis9NCxRbisrKTpGbis9M31lbHNlIEZuKz0zfXJldHVybiBGbn0oRGEpPmtoKXRocm93IG5ldyB2bigibWF4Q29udGVudExlbmd0aCBzaXplIG9mICIra2grIiBl'@; put 'eGNlZWRlZCIsdm4uRVJSX0JBRF9SRVNQT05TRSxpbyxObCk7aWYodzImJiJnZXQiIT09bnMmJiJoZWFkIiE9PW5zKXtjb25zdCB1cz15aWVsZCBvcihFbCk7aWYoIm51bWJlciI9PXR5cGVvZiB1cyYmaXNGaW5pdGUodXMpJiYoamQ9dXMsdXM+anUpKXRocm93IHIxKCl9Y29uc3QgY3A9dzIm'@; put 'JihTbi5pc1JlYWRhYmxlU3RyZWFtKEVsKXx8U24uaXNTdHJlYW0oRWwpKSxDcz0odXMsVXUseGMpPT5RYSh1cyw2NTUzNixsMD0+e2lmKHcyJiZsMD5qdSl0aHJvdyBOMD1yMSgpO1V1JiZVdShsMCl9LHhjKTtpZihOYSYmImdldCIhPT1ucyYmImhlYWQiIT09bnMmJihlMXx8Y3ApKXtpZihq'@; put 'ZD1qZD8/KHlpZWxkIGNvKGJkLEVsKSksMCE9PWpkfHxjcCl7bGV0IFV1LHVzPW5ldyBGbihEYSx7bWV0aG9kOiJQT1NUIixib2R5OkVsLGR1cGxleDoiaGFsZiJ9KTtpZihTbi5pc0Zvcm1EYXRhKEVsKSYmKFV1PXVzLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSkmJmJkLnNldENvbnRl'@; put 'bnRUeXBlKFV1KSx1cy5ib2R5KXtjb25zdFt4YyxsMF09ZTEmJm5oKGpkLHUzKHdnKGUxKSkpfHxbXTtFbD1Dcyh1cy5ib2R5LHhjLGwwKX19fWVsc2UgaWYoY3AmJiFpaSYmV2kmJiJnZXQiIT09bnMmJiJoZWFkIiE9PW5zKUVsPUNzKEVsKTtlbHNlIGlmKGNwJiZpaSYmIU5hJiYiZ2V0IiE9'@; put 'PW5zJiYiaGVhZCIhPT1ucyl0aHJvdyBuZXcgdm4oIlN0cmVhbSByZXF1ZXN0IGJvZGllcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBmZXRjaCBpbXBsZW1lbnRhdGlvbiIsdm4uRVJSX05PVF9TVVBQT1JULGlvLE5sKTtTbi5pc1N0cmluZyhzMCl8fChzMD1zMD8iaW5jbHVk'@; put 'ZSI6Im9taXQiKTtjb25zdCBudT1paSYmImNyZWRlbnRpYWxzImluIEZuLnByb3RvdHlwZTtpZihTbi5pc0Zvcm1EYXRhKEVsKSl7Y29uc3QgdXM9YmQuZ2V0Q29udGVudFR5cGUoKTt1cyYmL15tdWx0aXBhcnRcL2Zvcm0tZGF0YS9pLnRlc3QodXMpJiYhL2JvdW5kYXJ5PS9pLnRlc3QodXMp'@; put 'JiZiZC5kZWxldGUoImNvbnRlbnQtdHlwZSIpfWJkLnNldCgiVXNlci1BZ2VudCIsImF4aW9zLzEuMTguMSIsITEpO2NvbnN0IFJoPXsuLi5iMixzaWduYWw6SmEsbWV0aG9kOm5zLnRvVXBwZXJDYXNlKCksaGVhZGVyczpNaShiZC5ub3JtYWxpemUoKSksYm9keTpFbCxkdXBsZXg6ImhhbGYi'@; put 'LGNyZWRlbnRpYWxzOm51P3MwOnZvaWQgMH07Tmw9aWkmJm5ldyBGbihEYSxSaCk7bGV0IG5kPXlpZWxkIGlpP3FzKE5sLGIyKTpxcyhEYSxSaCk7Y29uc3QgRm09dmkuZnJvbShuZC5oZWFkZXJzKTtpZihCZCl7Y29uc3QgdXM9U24udG9GaW5pdGVOdW1iZXIoRm0uZ2V0Q29udGVudExlbmd0'@; put 'aCgpKTtpZihudWxsIT11cyYmdXM+a2gpdGhyb3cgbmV3IHZuKCJtYXhDb250ZW50TGVuZ3RoIHNpemUgb2YgIitraCsiIGV4Y2VlZGVkIix2bi5FUlJfQkFEX1JFU1BPTlNFLGlvLE5sKX1jb25zdCBtZj1SbyYmKCJzdHJlYW0iPT09dDF8fCJyZXNwb25zZSI9PT10MSk7aWYoUm8mJm5kLmJv'@; put 'ZHkmJihEdXx8QmR8fG1mJiZuMSkpe2NvbnN0IHVzPXt9O1sic3RhdHVzIiwic3RhdHVzVGV4dCIsImhlYWRlcnMiXS5mb3JFYWNoKGMwPT57dXNbYzBdPW5kW2MwXX0pO2NvbnN0IFV1PVNuLnRvRmluaXRlTnVtYmVyKEZtLmdldENvbnRlbnRMZW5ndGgoKSksW3hjLGwwXT1EdSYmbmgoVXUs'@; put 'dTMod2coRHUpLCEwKSl8fFtdO2xldCByNT0wO25kPW5ldyBRbihRYShuZC5ib2R5LDY1NTM2LGMwPT57aWYoQmQmJihyNT1jMCxyNT5raCkpdGhyb3cgbmV3IHZuKCJtYXhDb250ZW50TGVuZ3RoIHNpemUgb2YgIitraCsiIGV4Y2VlZGVkIix2bi5FUlJfQkFEX1JFU1BPTlNFLGlvLE5sKTt4'@; put 'YyYmeGMoYzApfSwoKT0+e2wwJiZsMCgpLG4xJiZuMSgpfSksdXMpfXQxPXQxfHwidGV4dCI7bGV0IFAxPXlpZWxkIGRsW1NuLmZpbmRLZXkoZGwsdDEpfHwidGV4dCJdKG5kLGlvKTtpZihCZCYmIVJvJiYhbWYpe2xldCB1cztpZihudWxsIT1QMSYmKCJudW1iZXIiPT10eXBlb2YgUDEuYnl0'@; put 'ZUxlbmd0aD91cz1QMS5ieXRlTGVuZ3RoOiJudW1iZXIiPT10eXBlb2YgUDEuc2l6ZT91cz1QMS5zaXplOiJzdHJpbmciPT10eXBlb2YgUDEmJih1cz0iZnVuY3Rpb24iPT10eXBlb2YgenQ/KG5ldyB6dCkuZW5jb2RlKFAxKS5ieXRlTGVuZ3RoOlAxLmxlbmd0aCkpLCJudW1iZXIiPT10eXBl'@; put 'b2YgdXMmJnVzPmtoKXRocm93IG5ldyB2bigibWF4Q29udGVudExlbmd0aCBzaXplIG9mICIra2grIiBleGNlZWRlZCIsdm4uRVJSX0JBRF9SRVNQT05TRSxpbyxObCl9cmV0dXJuIW1mJiZuMSYmbjEoKSx5aWVsZCBuZXcgUHJvbWlzZSgodXMsVXUpPT57YmcodXMsVXUse2RhdGE6UDEsaGVh'@; put 'ZGVyczp2aS5mcm9tKG5kLmhlYWRlcnMpLHN0YXR1czpuZC5zdGF0dXMsc3RhdHVzVGV4dDpuZC5zdGF0dXNUZXh0LGNvbmZpZzppbyxyZXF1ZXN0Ok5sfSl9KX1jYXRjaChobCl7aWYobjEmJm4xKCksSmEmJkphLmFib3J0ZWQmJkphLnJlYXNvbiBpbnN0YW5jZW9mIHZuKXtjb25zdCBjcz1K'@; put 'YS5yZWFzb247dGhyb3cgY3MuY29uZmlnPWlvLE5sJiYoY3MucmVxdWVzdD1ObCksaGwhPT1jcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGNzLCJjYXVzZSIse19fcHJvdG9fXzpudWxsLHZhbHVlOmhsLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksY3N9aWYo'@; put 'TjApdGhyb3cgTmwmJiFOMC5yZXF1ZXN0JiYoTjAucmVxdWVzdD1ObCksTjA7aWYoaGwgaW5zdGFuY2VvZiB2bil0aHJvdyBObCYmIWhsLnJlcXVlc3QmJihobC5yZXF1ZXN0PU5sKSxobDtpZihobCYmIlR5cGVFcnJvciI9PT1obC5uYW1lJiYvTG9hZCBmYWlsZWR8ZmV0Y2gvaS50ZXN0KGhs'@; put 'Lm1lc3NhZ2UpKXtjb25zdCBjcz1uZXcgdm4oIk5ldHdvcmsgRXJyb3IiLHZuLkVSUl9ORVRXT1JLLGlvLE5sLGhsJiZobC5yZXNwb25zZSk7dGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNzLCJjYXVzZSIse19fcHJvdG9fXzpudWxsLHZhbHVlOmhsLmNhdXNlfHxobCx3cml0YWJsZToh'@; put 'MCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGNzfXRocm93IHZuLmZyb20oaGwsaGwmJmhsLmNvZGUsaW8sTmwsaGwmJmhsLnJlc3BvbnNlKX19KTtyZXR1cm4gZnVuY3Rpb24oaW8pe3JldHVybiBzbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSxJdT1uZXcgTWFwLE1jPWh0'@; put 'PT57bGV0IHl0PWh0JiZodC5lbnZ8fHt9O2NvbnN0e2ZldGNoOmp0LFJlcXVlc3Q6enQsUmVzcG9uc2U6bW59PXl0LEZuPVt6dCxtbixqdF07bGV0IGlpLGtpLGxyPUZuLmxlbmd0aCxXaT1JdTtmb3IoO2xyLS07KWlpPUZuW2xyXSxraT1XaS5nZXQoaWkpLHZvaWQgMD09PWtpJiZXaS5zZXQo'@; put 'aWksa2k9bHI/bmV3IE1hcDpGcih5dCkpLFdpPWtpO3JldHVybiBraX07TWMoKTtjb25zdCBJaT17aHR0cDpudWxsLHhocjpnaSxmZXRjaDp7Z2V0Ok1jfX07U24uZm9yRWFjaChJaSwoaHQseXQpPT57aWYoaHQpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaHQsIm5hbWUiLHtfX3Byb3Rv'@; put 'X186bnVsbCx2YWx1ZTp5dH0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoaHQsImFkYXB0ZXJOYW1lIix7X19wcm90b19fOm51bGwsdmFsdWU6eXR9KX19KTtjb25zdCByaD1odD0+YC0gJHtodH1gLG41PWh0PT5Tbi5pc0Z1bmN0aW9uKGh0KXx8bnVsbD09PWh0fHwhMT09PWh0O3Zh'@; put 'ciB0ZF9nZXRBZGFwdGVyPWZ1bmN0aW9uIHYyKGh0LHl0KXtodD1Tbi5pc0FycmF5KGh0KT9odDpbaHRdO2NvbnN0e2xlbmd0aDpqdH09aHQ7bGV0IHp0LG1uO2NvbnN0IEZuPXt9O2ZvcihsZXQgUW49MDtRbjxqdDtRbisrKXtsZXQgbHI7aWYoenQ9aHRbUW5dLG1uPXp0LCFuNSh6dCkmJiht'@; put 'bj1JaVsobHI9U3RyaW5nKHp0KSkudG9Mb3dlckNhc2UoKV0sdm9pZCAwPT09bW4pKXRocm93IG5ldyB2bihgVW5rbm93biBhZGFwdGVyICcke2xyfSdgKTtpZihtbiYmKFNuLmlzRnVuY3Rpb24obW4pfHwobW49bW4uZ2V0KHl0KSkpKWJyZWFrO0ZuW2xyfHwiIyIrUW5dPW1ufWlmKCFtbil7'@; put 'Y29uc3QgUW49T2JqZWN0LmVudHJpZXMoRm4pLm1hcCgoW2lpLGtpXSk9PmBhZGFwdGVyICR7aWl9IGArKCExPT09a2k/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSk7bGV0IGxyPWp0P1FuLmxlbmd0aD4xPyJz'@; put 'aW5jZSA6XG4iK1FuLm1hcChyaCkuam9pbigiXG4iKToiICIrcmgoUW5bMF0pOiJhcyBubyBhZGFwdGVyIHNwZWNpZmllZCI7dGhyb3cgbmV3IHZuKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbHIsdm4uRVJSX05PVF9TVVBQT1JUKX1y'@; put 'ZXR1cm4gbW59O2Z1bmN0aW9uIE8wKGh0KXtpZihodC5jYW5jZWxUb2tlbiYmaHQuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGh0LnNpZ25hbCYmaHQuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IGEwKG51bGwsaHQpfWZ1bmN0aW9uIE9tKGh0KXtyZXR1cm4gTzAoaHQpLGh0Lmhl'@; put 'YWRlcnM9dmkuZnJvbShodC5oZWFkZXJzKSxodC5kYXRhPVFjLmNhbGwoaHQsaHQudHJhbnNmb3JtUmVxdWVzdCksLTEhPT1bInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoaHQubWV0aG9kKSYmaHQuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11'@; put 'cmxlbmNvZGVkIiwhMSksdGRfZ2V0QWRhcHRlcihodC5hZGFwdGVyfHxWci5hZGFwdGVyLGh0KShodCkudGhlbihmdW5jdGlvbih6dCl7TzAoaHQpLGh0LnJlc3BvbnNlPXp0O3RyeXt6dC5kYXRhPVFjLmNhbGwoaHQsaHQudHJhbnNmb3JtUmVzcG9uc2UsenQpfWZpbmFsbHl7ZGVsZXRlIGh0'@; put 'LnJlc3BvbnNlfXJldHVybiB6dC5oZWFkZXJzPXZpLmZyb20oenQuaGVhZGVycyksenR9LGZ1bmN0aW9uKHp0KXtpZighbTIoenQpJiYoTzAoaHQpLHp0JiZ6dC5yZXNwb25zZSkpe2h0LnJlc3BvbnNlPXp0LnJlc3BvbnNlO3RyeXt6dC5yZXNwb25zZS5kYXRhPVFjLmNhbGwoaHQsaHQudHJh'@; put 'bnNmb3JtUmVzcG9uc2UsenQucmVzcG9uc2UpfWZpbmFsbHl7ZGVsZXRlIGh0LnJlc3BvbnNlfXp0LnJlc3BvbnNlLmhlYWRlcnM9dmkuZnJvbSh6dC5yZXNwb25zZS5oZWFkZXJzKX1yZXR1cm4gUHJvbWlzZS5yZWplY3QoenQpfSl9Y29uc3QgaWE9e307WyJvYmplY3QiLCJib29sZWFuIiwi'@; put 'bnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChodCx5dCk9PntpYVtodF09ZnVuY3Rpb24oenQpe3JldHVybiB0eXBlb2YgenQ9PT1odHx8ImEiKyh5dDwxPyJuICI6IiAiKStodH19KTtjb25zdCB6bz17fTtpYS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oeXQs'@; put 'anQsenQpe2Z1bmN0aW9uIG1uKEZuLFFuKXtyZXR1cm4iW0F4aW9zIHYxLjE4LjFdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrRm4rIiciK1FuKyh6dD8iLiAiK3p0OiIiKX1yZXR1cm4oRm4sUW4sbHIpPT57aWYoITE9PT15dCl0aHJvdyBuZXcgdm4obW4oUW4sIiBoYXMgYmVlbiByZW1vdmVk'@; put 'IisoanQ/IiBpbiAiK2p0OiIiKSksdm4uRVJSX0RFUFJFQ0FURUQpO3JldHVybiBqdCYmIXpvW1FuXSYmKHpvW1FuXT0hMCxjb25zb2xlLndhcm4obW4oUW4sIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK2p0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUi'@; put 'KSkpLCF5dHx8eXQoRm4sUW4sbHIpfX0saWEuc3BlbGxpbmc9ZnVuY3Rpb24oeXQpe3JldHVybihqdCx6dCk9Pihjb25zb2xlLndhcm4oYCR7enR9IGlzIGxpa2VseSBhIG1pc3NwZWxsaW5nIG9mICR7eXR9YCksITApfTt2YXIgXzI9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24gQ2coaHQseXQs'@; put 'anQpe2lmKCJvYmplY3QiIT10eXBlb2YgaHR8fG51bGw9PT1odCl0aHJvdyBuZXcgdm4oIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLHZuLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb25zdCB6dD1PYmplY3Qua2V5cyhodCk7bGV0IG1uPXp0Lmxlbmd0aDtmb3IoO21uLS0gPjA7KXtjb25z'@; put 'dCBGbj16dFttbl0sUW49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHl0LEZuKT95dFtGbl06dm9pZCAwO2lmKFFuKXtjb25zdCBscj1odFtGbl0saWk9dm9pZCAwPT09bHJ8fFFuKGxyLEZuLGh0KTtpZighMCE9PWlpKXRocm93IG5ldyB2bigib3B0aW9uICIrRm4rIiBt'@; put 'dXN0IGJlICIraWksdm4uRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKCEwIT09anQpdGhyb3cgbmV3IHZuKCJVbmtub3duIG9wdGlvbiAiK0ZuLHZuLkVSUl9CQURfT1BUSU9OKX19LHZhbGlkYXRvcnM6aWF9O2NvbnN0IFRjPV8yLnZhbGlkYXRvcnM7Y2xhc3MgbXN7Y29uc3Ry'@; put 'dWN0b3IoeXQpe3RoaXMuZGVmYXVsdHM9eXR8fHt9LHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBNcixyZXNwb25zZTpuZXcgTXJ9fXJlcXVlc3QoeXQsanQpe3ZhciB6dD10aGlzO3JldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiooKXt0cnl7cmV0dXJuIHlpZWxkIHp0'@; put 'Ll9yZXF1ZXN0KHl0LGp0KX1jYXRjaChtbil7aWYobW4gaW5zdGFuY2VvZiBFcnJvcil7bGV0IEZuPXt9O0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKEZuKTpGbj1uZXcgRXJyb3I7Y29uc3QgUW49KCgpPT57aWYoIUZuLnN0YWNrKXJldHVybiIiO2Nv'@; put 'bnN0IGxyPUZuLnN0YWNrLmluZGV4T2YoIlxuIik7cmV0dXJuLTE9PT1scj8iIjpGbi5zdGFjay5zbGljZShscisxKX0pKCk7dHJ5e2lmKG1uLnN0YWNrKXtpZihRbil7Y29uc3QgbHI9UW4uaW5kZXhPZigiXG4iKSxpaT0tMT09PWxyPy0xOlFuLmluZGV4T2YoIlxuIixscisxKSxraT0tMT09'@; put 'PWlpPyIiOlFuLnNsaWNlKGlpKzEpO1N0cmluZyhtbi5zdGFjaykuZW5kc1dpdGgoa2kpfHwobW4uc3RhY2srPSJcbiIrUW4pfX1lbHNlIG1uLnN0YWNrPVFufWNhdGNoe319dGhyb3cgbW59fSkoKX1fcmVxdWVzdCh5dCxqdCl7InN0cmluZyI9PXR5cGVvZiB5dD8oanQ9anR8fHt9KS51cmw9'@; put 'eXQ6anQ9eXR8fHt9LGp0PWNsKHRoaXMuZGVmYXVsdHMsanQpO2NvbnN0e3RyYW5zaXRpb25hbDp6dCxwYXJhbXNTZXJpYWxpemVyOm1uLGhlYWRlcnM6Rm59PWp0O3ZvaWQgMCE9PXp0JiZfMi5hc3NlcnRPcHRpb25zKHp0LHtzaWxlbnRKU09OUGFyc2luZzpUYy50cmFuc2l0aW9uYWwoVGMu'@; put 'Ym9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6VGMudHJhbnNpdGlvbmFsKFRjLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6VGMudHJhbnNpdGlvbmFsKFRjLmJvb2xlYW4pLGxlZ2FjeUludGVyY2VwdG9yUmVxUmVzT3JkZXJpbmc6VGMudHJhbnNpdGlvbmFsKFRjLmJvb2xlYW4pLGFk'@; put 'dmVydGlzZVpzdGRBY2NlcHRFbmNvZGluZzpUYy50cmFuc2l0aW9uYWwoVGMuYm9vbGVhbiksdmFsaWRhdGVTdGF0dXNVbmRlZmluZWRSZXNvbHZlczpUYy50cmFuc2l0aW9uYWwoVGMuYm9vbGVhbil9LCExKSxudWxsIT1tbiYmKFNuLmlzRnVuY3Rpb24obW4pP2p0LnBhcmFtc1NlcmlhbGl6'@; put 'ZXI9e3NlcmlhbGl6ZTptbn06XzIuYXNzZXJ0T3B0aW9ucyhtbix7ZW5jb2RlOlRjLmZ1bmN0aW9uLHNlcmlhbGl6ZTpUYy5mdW5jdGlvbn0sITApKSx2b2lkIDAhPT1qdC5hbGxvd0Fic29sdXRlVXJsc3x8KGp0LmFsbG93QWJzb2x1dGVVcmxzPXZvaWQgMD09PXRoaXMuZGVmYXVsdHMuYWxs'@; put 'b3dBYnNvbHV0ZVVybHN8fHRoaXMuZGVmYXVsdHMuYWxsb3dBYnNvbHV0ZVVybHMpLF8yLmFzc2VydE9wdGlvbnMoanQse2Jhc2VVcmw6VGMuc3BlbGxpbmcoImJhc2VVUkwiKSx3aXRoWHNyZlRva2VuOlRjLnNwZWxsaW5nKCJ3aXRoWFNSRlRva2VuIil9LCEwKSxqdC5tZXRob2Q9KGp0Lm1l'@; put 'dGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBRbj1GbiYmU24ubWVyZ2UoRm4uY29tbW9uLEZuW2p0Lm1ldGhvZF0pO0ZuJiZTbi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsInF1ZXJ5IiwiY29t'@; put 'bW9uIl0sZGw9PntkZWxldGUgRm5bZGxdfSksanQuaGVhZGVycz12aS5jb25jYXQoUW4sRm4pO2NvbnN0IGxyPVtdO2xldCBpaT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24ob3Ipe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvci5ydW5XaGVuJiYhMT09PW9y'@; put 'LnJ1bldoZW4oanQpKXJldHVybjtpaT1paSYmb3Iuc3luY2hyb25vdXM7Y29uc3QgY289anQudHJhbnNpdGlvbmFsfHxGcztjbyYmY28ubGVnYWN5SW50ZXJjZXB0b3JSZXFSZXNPcmRlcmluZz9sci51bnNoaWZ0KG9yLmZ1bGZpbGxlZCxvci5yZWplY3RlZCk6bHIucHVzaChvci5mdWxmaWxs'@; put 'ZWQsb3IucmVqZWN0ZWQpfSk7Y29uc3Qga2k9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihvcil7a2kucHVzaChvci5mdWxmaWxsZWQsb3IucmVqZWN0ZWQpfSk7bGV0IFdpLE5hLEtpPTA7aWYoIWlpKXtjb25zdCBkbD1bT20uYmluZCh0aGlzKSx2b2lk'@; put 'IDBdO2ZvcihkbC51bnNoaWZ0KC4uLmxyKSxkbC5wdXNoKC4uLmtpKSxOYT1kbC5sZW5ndGgsV2k9UHJvbWlzZS5yZXNvbHZlKGp0KTtLaTxOYTspV2k9V2kudGhlbihkbFtLaSsrXSxkbFtLaSsrXSk7cmV0dXJuIFdpfU5hPWxyLmxlbmd0aDtsZXQgUm89anQ7Zm9yKDtLaTxOYTspe2NvbnN0'@; put 'IGRsPWxyW0tpKytdLG9yPWxyW0tpKytdO3RyeXtSbz1kbChSbyl9Y2F0Y2goY28pe29yLmNhbGwodGhpcyxjbyk7YnJlYWt9fXRyeXtXaT1PbS5jYWxsKHRoaXMsUm8pfWNhdGNoKGRsKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZGwpfWZvcihLaT0wLE5hPWtpLmxlbmd0aDtLaTxOYTspV2k9'@; put 'V2kudGhlbihraVtLaSsrXSxraVtLaSsrXSk7cmV0dXJuIFdpfWdldFVyaSh5dCl7cmV0dXJuIHRhKGVkKCh5dD1jbCh0aGlzLmRlZmF1bHRzLHl0KSkuYmFzZVVSTCx5dC51cmwseXQuYWxsb3dBYnNvbHV0ZVVybHMseXQpLHl0LnBhcmFtcyx5dC5wYXJhbXNTZXJpYWxpemVyKX19U24uZm9y'@; put 'RWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24oeXQpe21zLnByb3RvdHlwZVt5dF09ZnVuY3Rpb24oanQsenQpe3JldHVybiB0aGlzLnJlcXVlc3QoY2woenR8fHt9LHttZXRob2Q6eXQsdXJsOmp0LGRhdGE6enQmJlNuLmhhc093blByb3AoenQsImRhdGEi'@; put 'KT96dC5kYXRhOnZvaWQgMH0pKX19KSxTbi5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIiwicXVlcnkiXSxmdW5jdGlvbih5dCl7ZnVuY3Rpb24ganQoenQpe3JldHVybiBmdW5jdGlvbihGbixRbixscil7cmV0dXJuIHRoaXMucmVxdWVzdChjbChscnx8e30se21ldGhvZDp5dCxoZWFk'@; put 'ZXJzOnp0P3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpGbixkYXRhOlFufSkpfX1tcy5wcm90b3R5cGVbeXRdPWp0KCksInF1ZXJ5IiE9PXl0JiYobXMucHJvdG90eXBlW3l0KyJGb3JtIl09anQoITApKX0pO2NsYXNzIEYxe2NvbnN0cnVjdG9yKHl0KXtp'@; put 'ZigiZnVuY3Rpb24iIT10eXBlb2YgeXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCBqdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oRm4pe2p0PUZufSk7Y29uc3QgenQ9dGhpczt0aGlzLnByb21pc2UudGhlbihtbj0+'@; put 'e2lmKCF6dC5fbGlzdGVuZXJzKXJldHVybjtsZXQgRm49enQuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtGbi0tID4wOyl6dC5fbGlzdGVuZXJzW0ZuXShtbik7enQuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49bW49PntsZXQgRm47Y29uc3QgUW49bmV3IFByb21pc2UobHI9'@; put 'Pnt6dC5zdWJzY3JpYmUobHIpLEZuPWxyfSkudGhlbihtbik7cmV0dXJuIFFuLmNhbmNlbD1mdW5jdGlvbigpe3p0LnVuc3Vic2NyaWJlKEZuKX0sUW59LHl0KGZ1bmN0aW9uKEZuLFFuLGxyKXt6dC5yZWFzb258fCh6dC5yZWFzb249bmV3IGEwKEZuLFFuLGxyKSxqdCh6dC5yZWFzb24pKX0p'@; put 'fXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoeXQpe3RoaXMucmVhc29uP3l0KHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goeXQpOnRoaXMuX2xpc3RlbmVycz1beXRdfXVuc3Vic2Ny'@; put 'aWJlKHl0KXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBqdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZih5dCk7LTEhPT1qdCYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZShqdCwxKX10b0Fib3J0U2lnbmFsKCl7Y29uc3QgeXQ9bmV3IEFib3J0Q29udHJvbGxlcixqdD16dD0+e3l0'@; put 'LmFib3J0KHp0KX07cmV0dXJuIHRoaXMuc3Vic2NyaWJlKGp0KSx5dC5zaWduYWwudW5zdWJzY3JpYmU9KCk9PnRoaXMudW5zdWJzY3JpYmUoanQpLHl0LnNpZ25hbH1zdGF0aWMgc291cmNlKCl7bGV0IHl0O3JldHVybnt0b2tlbjpuZXcgRjEoZnVuY3Rpb24obW4pe3l0PW1ufSksY2FuY2Vs'@; put 'Onl0fX19Y29uc3QgSXM9e0NvbnRpbnVlOjEwMCxTd2l0Y2hpbmdQcm90b2NvbHM6MTAxLFByb2Nlc3Npbmc6MTAyLEVhcmx5SGludHM6MTAzLE9rOjIwMCxDcmVhdGVkOjIwMSxBY2NlcHRlZDoyMDIsTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOjIwMyxOb0NvbnRlbnQ6MjA0LFJlc2V0'@; put 'Q29udGVudDoyMDUsUGFydGlhbENvbnRlbnQ6MjA2LE11bHRpU3RhdHVzOjIwNyxBbHJlYWR5UmVwb3J0ZWQ6MjA4LEltVXNlZDoyMjYsTXVsdGlwbGVDaG9pY2VzOjMwMCxNb3ZlZFBlcm1hbmVudGx5OjMwMSxGb3VuZDozMDIsU2VlT3RoZXI6MzAzLE5vdE1vZGlmaWVkOjMwNCxVc2VQcm94'@; put 'eTozMDUsVW51c2VkOjMwNixUZW1wb3JhcnlSZWRpcmVjdDozMDcsUGVybWFuZW50UmVkaXJlY3Q6MzA4LEJhZFJlcXVlc3Q6NDAwLFVuYXV0aG9yaXplZDo0MDEsUGF5bWVudFJlcXVpcmVkOjQwMixGb3JiaWRkZW46NDAzLE5vdEZvdW5kOjQwNCxNZXRob2ROb3RBbGxvd2VkOjQwNSxOb3RB'@; put 'Y2NlcHRhYmxlOjQwNixQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NDA3LFJlcXVlc3RUaW1lb3V0OjQwOCxDb25mbGljdDo0MDksR29uZTo0MTAsTGVuZ3RoUmVxdWlyZWQ6NDExLFByZWNvbmRpdGlvbkZhaWxlZDo0MTIsUGF5bG9hZFRvb0xhcmdlOjQxMyxVcmlUb29Mb25nOjQxNCxV'@; put 'bnN1cHBvcnRlZE1lZGlhVHlwZTo0MTUsUmFuZ2VOb3RTYXRpc2ZpYWJsZTo0MTYsRXhwZWN0YXRpb25GYWlsZWQ6NDE3LEltQVRlYXBvdDo0MTgsTWlzZGlyZWN0ZWRSZXF1ZXN0OjQyMSxVbnByb2Nlc3NhYmxlRW50aXR5OjQyMixMb2NrZWQ6NDIzLEZhaWxlZERlcGVuZGVuY3k6NDI0LFRv'@; put 'b0Vhcmx5OjQyNSxVcGdyYWRlUmVxdWlyZWQ6NDI2LFByZWNvbmRpdGlvblJlcXVpcmVkOjQyOCxUb29NYW55UmVxdWVzdHM6NDI5LFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTo0MzEsVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6NDUxLEludGVybmFsU2VydmVyRXJyb3I6NTAwLE5v'@; put 'dEltcGxlbWVudGVkOjUwMSxCYWRHYXRld2F5OjUwMixTZXJ2aWNlVW5hdmFpbGFibGU6NTAzLEdhdGV3YXlUaW1lb3V0OjUwNCxIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDo1MDUsVmFyaWFudEFsc29OZWdvdGlhdGVzOjUwNixJbnN1ZmZpY2llbnRTdG9yYWdlOjUwNyxMb29wRGV0ZWN0ZWQ6'@; put 'NTA4LE5vdEV4dGVuZGVkOjUxMCxOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDo1MTEsV2ViU2VydmVySXNEb3duOjUyMSxDb25uZWN0aW9uVGltZWRPdXQ6NTIyLE9yaWdpbklzVW5yZWFjaGFibGU6NTIzLFRpbWVvdXRPY2N1cnJlZDo1MjQsU3NsSGFuZHNoYWtlRmFpbGVkOjUyNSxJ'@; put 'bnZhbGlkU3NsQ2VydGlmaWNhdGU6NTI2fTtPYmplY3QuZW50cmllcyhJcykuZm9yRWFjaCgoW2h0LHl0XSk9PntJc1t5dF09aHR9KTtjb25zdCB6YT1mdW5jdGlvbiBxaShodCl7Y29uc3QgeXQ9bmV3IG1zKGh0KSxqdD1zKG1zLnByb3RvdHlwZS5yZXF1ZXN0LHl0KTtyZXR1cm4gU24uZXh0'@; put 'ZW5kKGp0LG1zLnByb3RvdHlwZSx5dCx7YWxsT3duS2V5czohMH0pLFNuLmV4dGVuZChqdCx5dCxudWxsLHthbGxPd25LZXlzOiEwfSksanQuY3JlYXRlPWZ1bmN0aW9uKG1uKXtyZXR1cm4gcWkoY2woaHQsbW4pKX0sanR9KFZyKTt6YS5BeGlvcz1tcyx6YS5DYW5jZWxlZEVycm9yPWEwLHph'@; put 'LkNhbmNlbFRva2VuPUYxLHphLmlzQ2FuY2VsPW0yLHphLlZFUlNJT049IjEuMTguMSIsemEudG9Gb3JtRGF0YT1DaSx6YS5BeGlvc0Vycm9yPXZuLHphLkNhbmNlbD16YS5DYW5jZWxlZEVycm9yLHphLmFsbD1mdW5jdGlvbih5dCl7cmV0dXJuIFByb21pc2UuYWxsKHl0KX0semEuc3ByZWFk'@; put 'PWZ1bmN0aW9uIE5tKGh0KXtyZXR1cm4gZnVuY3Rpb24oanQpe3JldHVybiBodC5hcHBseShudWxsLGp0KX19LHphLmlzQXhpb3NFcnJvcj1mdW5jdGlvbiBuOChodCl7cmV0dXJuIFNuLmlzT2JqZWN0KGh0KSYmITA9PT1odC5pc0F4aW9zRXJyb3J9LHphLm1lcmdlQ29uZmlnPWNsLHphLkF4'@; put 'aW9zSGVhZGVycz12aSx6YS5mb3JtVG9KU09OPWh0PT55ZChTbi5pc0hUTUxGb3JtKGh0KT9uZXcgRm9ybURhdGEoaHQpOmh0KSx6YS5nZXRBZGFwdGVyPXRkX2dldEFkYXB0ZXIsemEuSHR0cFN0YXR1c0NvZGU9SXMsemEuZGVmYXVsdD16YSxmZS5leHBvcnRzPXphfSw1NzAzNChmZSxqKXsi'@; put 'dXNlIHN0cmljdCI7dmFyIHksYztPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqLHtfX2VzTW9kdWxlOnt2YWx1ZTohMH0sW1N5bWJvbC50b1N0cmluZ1RhZ106e3ZhbHVlOiJNb2R1bGUifX0pO2NvbnN0IHY9ZnVuY3Rpb24gaChOKXtyZXR1cm4gTiYmTi5fX2VzTW9kdWxlJiZPYmplY3QucHJv'@; put 'dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoTiwiZGVmYXVsdCIpP04uZGVmYXVsdDpOfShmdW5jdGlvbiBzKCl7aWYoYylyZXR1cm4geTtjPTE7Y29uc3QgTj0yMTQ3NDgzNjQ3LHo9MzYsSWU9L154bi0tLyxrZT0vW15cMC1ceDdGXS8scWU9L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9n'@; put 'LFg9e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCkiLCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBpbnB1dCJ9LGI9TWF0aC5m'@; put 'bG9vcixrPVN0cmluZy5mcm9tQ2hhckNvZGU7ZnVuY3Rpb24gTShQZSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoWFtQZV0pfWZ1bmN0aW9uIEsoUGUsb3Qpe2NvbnN0IGx0PVBlLnNwbGl0KCJAIik7bGV0IGR0PSIiO2x0Lmxlbmd0aD4xJiYoZHQ9bHRbMF0rIkAiLFBlPWx0WzFdKTtjb25zdCBh'@; put 'ZT1mdW5jdGlvbiBCKFBlLG90KXtjb25zdCBsdD1bXTtsZXQgZHQ9UGUubGVuZ3RoO2Zvcig7ZHQtLTspbHRbZHRdPW90KFBlW2R0XSk7cmV0dXJuIGx0fSgoUGU9UGUucmVwbGFjZShxZSwiLiIpKS5zcGxpdCgiLiIpLG90KS5qb2luKCIuIik7cmV0dXJuIGR0K2FlfWZ1bmN0aW9uIEcoUGUp'@; put 'e2NvbnN0IG90PVtdO2xldCBsdD0wO2NvbnN0IGR0PVBlLmxlbmd0aDtmb3IoO2x0PGR0Oyl7Y29uc3QgUmU9UGUuY2hhckNvZGVBdChsdCsrKTtpZihSZT49NTUyOTYmJlJlPD01NjMxOSYmbHQ8ZHQpe2NvbnN0IGFlPVBlLmNoYXJDb2RlQXQobHQrKyk7NTYzMjA9PSg2NDUxMiZhZSk/b3Qu'@; put 'cHVzaCgoKDEwMjMmUmUpPDwxMCkrKDEwMjMmYWUpKzY1NTM2KToob3QucHVzaChSZSksbHQtLSl9ZWxzZSBvdC5wdXNoKFJlKX1yZXR1cm4gb3R9Y29uc3QgcD1mdW5jdGlvbihQZSl7cmV0dXJuIFBlPj00OCYmUGU8NTg/UGUtNDgrMjY6UGU+PTY1JiZQZTw5MT9QZS02NTpQZT49OTcmJlBl'@; put 'PDEyMz9QZS05Nzp6fSxJPWZ1bmN0aW9uKFBlLG90KXtyZXR1cm4gUGUrMjIrNzUqKFBlPDI2KS0oKDAhPW90KTw8NSl9LHVlPWZ1bmN0aW9uKFBlLG90LGx0KXtsZXQgZHQ9MDtmb3IoUGU9bHQ/YihQZS83MDApOlBlPj4xLFBlKz1iKFBlL290KTtQZT40NTU7ZHQrPXopUGU9YihQZS8zNSk7'@; put 'cmV0dXJuIGIoZHQrMzYqUGUvKFBlKzM4KSl9LG5lPWZ1bmN0aW9uKFBlKXtjb25zdCBvdD1bXSxsdD1QZS5sZW5ndGg7bGV0IGR0PTAsUmU9MTI4LGFlPTcyLHhlPVBlLmxhc3RJbmRleE9mKCItIik7eGU8MCYmKHhlPTApO2ZvcihsZXQgamU9MDtqZTx4ZTsrK2plKVBlLmNoYXJDb2RlQXQo'@; put 'amUpPj0xMjgmJk0oIm5vdC1iYXNpYyIpLG90LnB1c2goUGUuY2hhckNvZGVBdChqZSkpO2ZvcihsZXQgamU9eGU+MD94ZSsxOjA7amU8bHQ7KXtjb25zdCBBZT1kdDtmb3IobGV0IEZlPTEsZ2U9ejs7Z2UrPXope2plPj1sdCYmTSgiaW52YWxpZC1pbnB1dCIpO2NvbnN0IGNlPXAoUGUuY2hh'@; put 'ckNvZGVBdChqZSsrKSk7Y2U+PXomJk0oImludmFsaWQtaW5wdXQiKSxjZT5iKChOLWR0KS9GZSkmJk0oIm92ZXJmbG93IiksZHQrPWNlKkZlO2NvbnN0IGhlPWdlPD1hZT8xOmdlPj1hZSsyNj8yNjpnZS1hZTtpZihjZTxoZSlicmVhaztjb25zdCB3ZT16LWhlO0ZlPmIoTi93ZSkmJk0oIm92'@; put 'ZXJmbG93IiksRmUqPXdlfWNvbnN0IERlPW90Lmxlbmd0aCsxO2FlPXVlKGR0LUFlLERlLDA9PUFlKSxiKGR0L0RlKT5OLVJlJiZNKCJvdmVyZmxvdyIpLFJlKz1iKGR0L0RlKSxkdCU9RGUsb3Quc3BsaWNlKGR0KyssMCxSZSl9cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLm90KX0s'@; put 'X2U9ZnVuY3Rpb24oUGUpe2NvbnN0IG90PVtdLGx0PShQZT1HKFBlKSkubGVuZ3RoO2xldCBkdD0xMjgsUmU9MCxhZT03Mjtmb3IoY29uc3QgQWUgb2YgUGUpQWU8MTI4JiZvdC5wdXNoKGsoQWUpKTtjb25zdCB4ZT1vdC5sZW5ndGg7bGV0IGplPXhlO2Zvcih4ZSYmb3QucHVzaCgiLSIpO2pl'@; put 'PGx0Oyl7bGV0IEFlPU47Zm9yKGNvbnN0IEZlIG9mIFBlKUZlPj1kdCYmRmU8QWUmJihBZT1GZSk7Y29uc3QgRGU9amUrMTtBZS1kdD5iKChOLVJlKS9EZSkmJk0oIm92ZXJmbG93IiksUmUrPShBZS1kdCkqRGUsZHQ9QWU7Zm9yKGNvbnN0IEZlIG9mIFBlKWlmKEZlPGR0JiYrK1JlPk4mJk0o'@; put 'Im92ZXJmbG93IiksRmU9PT1kdCl7bGV0IGdlPVJlO2ZvcihsZXQgY2U9ejs7Y2UrPXope2NvbnN0IGhlPWNlPD1hZT8xOmNlPj1hZSsyNj8yNjpjZS1hZTtpZihnZTxoZSlicmVhaztjb25zdCB3ZT1nZS1oZSxKZT16LWhlO290LnB1c2goayhJKGhlK3dlJUplLDApKSksZ2U9Yih3ZS9KZSl9'@; put 'b3QucHVzaChrKEkoZ2UsMCkpKSxhZT11ZShSZSxEZSxqZT09PXhlKSxSZT0wLCsramV9KytSZSwrK2R0fXJldHVybiBvdC5qb2luKCIiKX07cmV0dXJuIHk9e3ZlcnNpb246IjIuMy4xIix1Y3MyOntkZWNvZGU6RyxlbmNvZGU6UGU9PlN0cmluZy5mcm9tQ29kZVBvaW50KC4uLlBlKX0sZGVj'@; put 'b2RlOm5lLGVuY29kZTpfZSx0b0FTQ0lJOmZ1bmN0aW9uKFBlKXtyZXR1cm4gSyhQZSxmdW5jdGlvbihvdCl7cmV0dXJuIGtlLnRlc3Qob3QpPyJ4bi0tIitfZShvdCk6b3R9KX0sdG9Vbmljb2RlOmZ1bmN0aW9uKFBlKXtyZXR1cm4gSyhQZSxmdW5jdGlvbihvdCl7cmV0dXJuIEllLnRlc3Qo'@; put 'b3QpP25lKG90LnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpOm90fSl9fX0oKSksdz1bImFjIiwiY29tLmFjIiwiZWR1LmFjIiwiZ292LmFjIiwibWlsLmFjIiwibmV0LmFjIiwib3JnLmFjIiwiYWQiLCJhZSIsImFjLmFlIiwiY28uYWUiLCJnb3YuYWUiLCJtaWwuYWUiLCJuZXQuYWUiLCJvcmcu'@; put 'YWUiLCJzY2guYWUiLCJhZXJvIiwiYWlybGluZS5hZXJvIiwiYWlycG9ydC5hZXJvIiwiYWNjaWRlbnQtaW52ZXN0aWdhdGlvbi5hZXJvIiwiYWNjaWRlbnQtcHJldmVudGlvbi5hZXJvIiwiYWVyb2JhdGljLmFlcm8iLCJhZXJvY2x1Yi5hZXJvIiwiYWVyb2Ryb21lLmFlcm8iLCJhZ2VudHMu'@; put 'YWVybyIsImFpci1zdXJ2ZWlsbGFuY2UuYWVybyIsImFpci10cmFmZmljLWNvbnRyb2wuYWVybyIsImFpcmNyYWZ0LmFlcm8iLCJhaXJ0cmFmZmljLmFlcm8iLCJhbWJ1bGFuY2UuYWVybyIsImFzc29jaWF0aW9uLmFlcm8iLCJhdXRob3IuYWVybyIsImJhbGxvb25pbmcuYWVybyIsImJyb2tl'@; put 'ci5hZXJvIiwiY2FhLmFlcm8iLCJjYXJnby5hZXJvIiwiY2F0ZXJpbmcuYWVybyIsImNlcnRpZmljYXRpb24uYWVybyIsImNoYW1waW9uc2hpcC5hZXJvIiwiY2hhcnRlci5hZXJvIiwiY2l2aWxhdmlhdGlvbi5hZXJvIiwiY2x1Yi5hZXJvIiwiY29uZmVyZW5jZS5hZXJvIiwiY29uc3VsdGFu'@; put 'dC5hZXJvIiwiY29uc3VsdGluZy5hZXJvIiwiY29udHJvbC5hZXJvIiwiY291bmNpbC5hZXJvIiwiY3Jldy5hZXJvIiwiZGVzaWduLmFlcm8iLCJkZ2NhLmFlcm8iLCJlZHVjYXRvci5hZXJvIiwiZW1lcmdlbmN5LmFlcm8iLCJlbmdpbmUuYWVybyIsImVuZ2luZWVyLmFlcm8iLCJlbnRlcnRh'@; put 'aW5tZW50LmFlcm8iLCJlcXVpcG1lbnQuYWVybyIsImV4Y2hhbmdlLmFlcm8iLCJleHByZXNzLmFlcm8iLCJmZWRlcmF0aW9uLmFlcm8iLCJmbGlnaHQuYWVybyIsImZyZWlnaHQuYWVybyIsImZ1ZWwuYWVybyIsImdsaWRpbmcuYWVybyIsImdvdmVybm1lbnQuYWVybyIsImdyb3VuZGhhbmRs'@; put 'aW5nLmFlcm8iLCJncm91cC5hZXJvIiwiaGFuZ2dsaWRpbmcuYWVybyIsImhvbWVidWlsdC5hZXJvIiwiaW5zdXJhbmNlLmFlcm8iLCJqb3VybmFsLmFlcm8iLCJqb3VybmFsaXN0LmFlcm8iLCJsZWFzaW5nLmFlcm8iLCJsb2dpc3RpY3MuYWVybyIsIm1hZ2F6aW5lLmFlcm8iLCJtYWludGVu'@; put 'YW5jZS5hZXJvIiwibWFya2V0cGxhY2UuYWVybyIsIm1lZGlhLmFlcm8iLCJtaWNyb2xpZ2h0LmFlcm8iLCJtb2RlbGxpbmcuYWVybyIsIm5hdmlnYXRpb24uYWVybyIsInBhcmFjaHV0aW5nLmFlcm8iLCJwYXJhZ2xpZGluZy5hZXJvIiwicGFzc2VuZ2VyLWFzc29jaWF0aW9uLmFlcm8iLCJw'@; put 'aWxvdC5hZXJvIiwicHJlc3MuYWVybyIsInByb2R1Y3Rpb24uYWVybyIsInJlY3JlYXRpb24uYWVybyIsInJlcGJvZHkuYWVybyIsInJlcy5hZXJvIiwicmVzZWFyY2guYWVybyIsInJvdG9yY3JhZnQuYWVybyIsInNhZmV0eS5hZXJvIiwic2NpZW50aXN0LmFlcm8iLCJzZXJ2aWNlcy5hZXJv'@; put 'Iiwic2hvdy5hZXJvIiwic2t5ZGl2aW5nLmFlcm8iLCJzb2Z0d2FyZS5hZXJvIiwic3R1ZGVudC5hZXJvIiwidGF4aS5hZXJvIiwidHJhZGVyLmFlcm8iLCJ0cmFkaW5nLmFlcm8iLCJ0cmFpbmVyLmFlcm8iLCJ1bmlvbi5hZXJvIiwid29ya2luZ2dyb3VwLmFlcm8iLCJ3b3Jrcy5hZXJvIiwi'@; put 'YWYiLCJjb20uYWYiLCJlZHUuYWYiLCJnb3YuYWYiLCJuZXQuYWYiLCJvcmcuYWYiLCJhZyIsImNvLmFnIiwiY29tLmFnIiwibmV0LmFnIiwibm9tLmFnIiwib3JnLmFnIiwiYWkiLCJjb20uYWkiLCJuZXQuYWkiLCJvZmYuYWkiLCJvcmcuYWkiLCJhbCIsImNvbS5hbCIsImVkdS5hbCIsImdv'@; put 'di5hbCIsIm1pbC5hbCIsIm5ldC5hbCIsIm9yZy5hbCIsImFtIiwiY28uYW0iLCJjb20uYW0iLCJjb21tdW5lLmFtIiwibmV0LmFtIiwib3JnLmFtIiwiYW8iLCJjby5hbyIsImVkLmFvIiwiZWR1LmFvIiwiZ292LmFvIiwiZ3YuYW8iLCJpdC5hbyIsIm9nLmFvIiwib3JnLmFvIiwicGIuYW8i'@; put 'LCJhcSIsImFyIiwiYmV0LmFyIiwiY29tLmFyIiwiY29vcC5hciIsImVkdS5hciIsImdvYi5hciIsImdvdi5hciIsImludC5hciIsIm1pbC5hciIsIm11c2ljYS5hciIsIm11dHVhbC5hciIsIm5ldC5hciIsIm9yZy5hciIsInNlbmFzYS5hciIsInR1ci5hciIsImFycGEiLCJlMTY0LmFycGEi'@; put 'LCJob21lLmFycGEiLCJpbi1hZGRyLmFycGEiLCJpcDYuYXJwYSIsImlyaXMuYXJwYSIsInVyaS5hcnBhIiwidXJuLmFycGEiLCJhcyIsImdvdi5hcyIsImFzaWEiLCJhdCIsImFjLmF0Iiwic3RoLmFjLmF0IiwiY28uYXQiLCJndi5hdCIsIm9yLmF0IiwiYXUiLCJhc24uYXUiLCJjb20uYXUi'@; put 'LCJlZHUuYXUiLCJnb3YuYXUiLCJpZC5hdSIsIm5ldC5hdSIsIm9yZy5hdSIsImNvbmYuYXUiLCJvei5hdSIsImFjdC5hdSIsIm5zdy5hdSIsIm50LmF1IiwicWxkLmF1Iiwic2EuYXUiLCJ0YXMuYXUiLCJ2aWMuYXUiLCJ3YS5hdSIsImFjdC5lZHUuYXUiLCJjYXRob2xpYy5lZHUuYXUiLCJu'@; put 'c3cuZWR1LmF1IiwibnQuZWR1LmF1IiwicWxkLmVkdS5hdSIsInNhLmVkdS5hdSIsInRhcy5lZHUuYXUiLCJ2aWMuZWR1LmF1Iiwid2EuZWR1LmF1IiwicWxkLmdvdi5hdSIsInNhLmdvdi5hdSIsInRhcy5nb3YuYXUiLCJ2aWMuZ292LmF1Iiwid2EuZ292LmF1Iiwic2Nob29scy5uc3cuZWR1'@; put 'LmF1IiwiYXciLCJjb20uYXciLCJheCIsImF6IiwiYml6LmF6IiwiY29tLmF6IiwiZWR1LmF6IiwiZ292LmF6IiwiaW5mby5heiIsImludC5heiIsIm1pbC5heiIsIm5hbWUuYXoiLCJuZXQuYXoiLCJvcmcuYXoiLCJwcC5heiIsInByby5heiIsImJhIiwiY29tLmJhIiwiZWR1LmJhIiwiZ292'@; put 'LmJhIiwibWlsLmJhIiwibmV0LmJhIiwib3JnLmJhIiwiYmIiLCJiaXouYmIiLCJjby5iYiIsImNvbS5iYiIsImVkdS5iYiIsImdvdi5iYiIsImluZm8uYmIiLCJuZXQuYmIiLCJvcmcuYmIiLCJzdG9yZS5iYiIsInR2LmJiIiwiKi5iZCIsImJlIiwiYWMuYmUiLCJiZiIsImdvdi5iZiIsImJn'@; put 'IiwiMC5iZyIsIjEuYmciLCIyLmJnIiwiMy5iZyIsIjQuYmciLCI1LmJnIiwiNi5iZyIsIjcuYmciLCI4LmJnIiwiOS5iZyIsImEuYmciLCJiLmJnIiwiYy5iZyIsImQuYmciLCJlLmJnIiwiZi5iZyIsImcuYmciLCJoLmJnIiwiaS5iZyIsImouYmciLCJrLmJnIiwibC5iZyIsIm0uYmciLCJu'@; put 'LmJnIiwiby5iZyIsInAuYmciLCJxLmJnIiwici5iZyIsInMuYmciLCJ0LmJnIiwidS5iZyIsInYuYmciLCJ3LmJnIiwieC5iZyIsInkuYmciLCJ6LmJnIiwiYmgiLCJjb20uYmgiLCJlZHUuYmgiLCJnb3YuYmgiLCJuZXQuYmgiLCJvcmcuYmgiLCJiaSIsImNvLmJpIiwiY29tLmJpIiwiZWR1'@; put 'LmJpIiwib3IuYmkiLCJvcmcuYmkiLCJiaXoiLCJiaiIsImFmcmljYS5iaiIsImFncm8uYmoiLCJhcmNoaXRlY3Rlcy5iaiIsImFzc3VyLmJqIiwiYXZvY2F0cy5iaiIsImNvLmJqIiwiY29tLmJqIiwiZWNvLmJqIiwiZWNvbm8uYmoiLCJlZHUuYmoiLCJpbmZvLmJqIiwibG9pc2lycy5iaiIs'@; put 'Im1vbmV5LmJqIiwibmV0LmJqIiwib3JnLmJqIiwib3RlLmJqIiwicmVzdGF1cmFudC5iaiIsInJlc3RvLmJqIiwidG91cmlzbS5iaiIsInVuaXYuYmoiLCJibSIsImNvbS5ibSIsImVkdS5ibSIsImdvdi5ibSIsIm5ldC5ibSIsIm9yZy5ibSIsImJuIiwiY29tLmJuIiwiZWR1LmJuIiwiZ292'@; put 'LmJuIiwibmV0LmJuIiwib3JnLmJuIiwiYm8iLCJjb20uYm8iLCJlZHUuYm8iLCJnb2IuYm8iLCJpbnQuYm8iLCJtaWwuYm8iLCJuZXQuYm8iLCJvcmcuYm8iLCJ0di5ibyIsIndlYi5ibyIsImFjYWRlbWlhLmJvIiwiYWdyby5ibyIsImFydGUuYm8iLCJibG9nLmJvIiwiYm9saXZpYS5ibyIs'@; put 'ImNpZW5jaWEuYm8iLCJjb29wZXJhdGl2YS5ibyIsImRlbW9jcmFjaWEuYm8iLCJkZXBvcnRlLmJvIiwiZWNvbG9naWEuYm8iLCJlY29ub21pYS5ibyIsImVtcHJlc2EuYm8iLCJpbmRpZ2VuYS5ibyIsImluZHVzdHJpYS5ibyIsImluZm8uYm8iLCJtZWRpY2luYS5ibyIsIm1vdmltaWVudG8u'@; put 'Ym8iLCJtdXNpY2EuYm8iLCJuYXR1cmFsLmJvIiwibm9tYnJlLmJvIiwibm90aWNpYXMuYm8iLCJwYXRyaWEuYm8iLCJwbHVyaW5hY2lvbmFsLmJvIiwicG9saXRpY2EuYm8iLCJwcm9mZXNpb25hbC5ibyIsInB1ZWJsby5ibyIsInJldmlzdGEuYm8iLCJzYWx1ZC5ibyIsInRlY25vbG9naWEu'@; put 'Ym8iLCJ0a3NhdC5ibyIsInRyYW5zcG9ydGUuYm8iLCJ3aWtpLmJvIiwiYnIiLCI5Z3VhY3UuYnIiLCJhYmMuYnIiLCJhZG0uYnIiLCJhZHYuYnIiLCJhZ3IuYnIiLCJhanUuYnIiLCJhbS5iciIsImFuYW5pLmJyIiwiYXBhcmVjaWRhLmJyIiwiYXBwLmJyIiwiYXJxLmJyIiwiYXJ0LmJyIiwi'@; put 'YXRvLmJyIiwiYi5iciIsImJhcnVlcmkuYnIiLCJiZWxlbS5iciIsImJldC5iciIsImJoei5iciIsImJpYi5iciIsImJpby5iciIsImJsb2cuYnIiLCJibWQuYnIiLCJib2F2aXN0YS5iciIsImJzYi5iciIsImNhbXBpbmFncmFuZGUuYnIiLCJjYW1waW5hcy5iciIsImNheGlhcy5iciIsImNp'@; put 'bS5iciIsImNuZy5iciIsImNudC5iciIsImNvbS5iciIsImNvbnRhZ2VtLmJyIiwiY29vcC5iciIsImNvei5iciIsImNyaS5iciIsImN1aWFiYS5iciIsImN1cml0aWJhLmJyIiwiZGVmLmJyIiwiZGVzLmJyIiwiZGV0LmJyIiwiZGV2LmJyIiwiZWNuLmJyIiwiZWNvLmJyIiwiZWR1LmJyIiwi'@; put 'ZW1wLmJyIiwiZW5mLmJyIiwiZW5nLmJyIiwiZXNwLmJyIiwiZXRjLmJyIiwiZXRpLmJyIiwiZmFyLmJyIiwiZmVpcmEuYnIiLCJmbG9nLmJyIiwiZmxvcmlwYS5iciIsImZtLmJyIiwiZm5kLmJyIiwiZm9ydGFsLmJyIiwiZm90LmJyIiwiZm96LmJyIiwiZnN0LmJyIiwiZzEyLmJyIiwiZ2Vv'@; put 'LmJyIiwiZ2dmLmJyIiwiZ29pYW5pYS5iciIsImdvdi5iciIsImFjLmdvdi5iciIsImFsLmdvdi5iciIsImFtLmdvdi5iciIsImFwLmdvdi5iciIsImJhLmdvdi5iciIsImNlLmdvdi5iciIsImRmLmdvdi5iciIsImVzLmdvdi5iciIsImdvLmdvdi5iciIsIm1hLmdvdi5iciIsIm1nLmdvdi5i'@; put 'ciIsIm1zLmdvdi5iciIsIm10Lmdvdi5iciIsInBhLmdvdi5iciIsInBiLmdvdi5iciIsInBlLmdvdi5iciIsInBpLmdvdi5iciIsInByLmdvdi5iciIsInJqLmdvdi5iciIsInJuLmdvdi5iciIsInJvLmdvdi5iciIsInJyLmdvdi5iciIsInJzLmdvdi5iciIsInNjLmdvdi5iciIsInNlLmdv'@; put 'di5iciIsInNwLmdvdi5iciIsInRvLmdvdi5iciIsImdydS5iciIsImltYi5iciIsImluZC5iciIsImluZi5iciIsImphYi5iciIsImphbXBhLmJyIiwiamRmLmJyIiwiam9pbnZpbGxlLmJyIiwiam9yLmJyIiwianVzLmJyIiwibGVnLmJyIiwibGVpbGFvLmJyIiwibGVsLmJyIiwibG9nLmJy'@; put 'IiwibG9uZHJpbmEuYnIiLCJtYWNhcGEuYnIiLCJtYWNlaW8uYnIiLCJtYW5hdXMuYnIiLCJtYXJpbmdhLmJyIiwibWF0LmJyIiwibWVkLmJyIiwibWlsLmJyIiwibW9yZW5hLmJyIiwibXAuYnIiLCJtdXMuYnIiLCJuYXRhbC5iciIsIm5ldC5iciIsIm5pdGVyb2kuYnIiLCIqLm5vbS5iciIs'@; put 'Im5vdC5iciIsIm50ci5iciIsIm9kby5iciIsIm9uZy5iciIsIm9yZy5iciIsIm9zYXNjby5iciIsInBhbG1hcy5iciIsInBvYS5iciIsInBwZy5iciIsInByby5iciIsInBzYy5iciIsInBzaS5iciIsInB2aC5iciIsInFzbC5iciIsInJhZGlvLmJyIiwicmVjLmJyIiwicmVjaWZlLmJyIiwi'@; put 'cmVwLmJyIiwicmliZWlyYW8uYnIiLCJyaW8uYnIiLCJyaW9icmFuY28uYnIiLCJyaW9wcmV0by5iciIsInNhbHZhZG9yLmJyIiwic2FtcGEuYnIiLCJzYW50YW1hcmlhLmJyIiwic2FudG9hbmRyZS5iciIsInNhb2Jlcm5hcmRvLmJyIiwic2FvZ29uY2EuYnIiLCJzZWcuYnIiLCJzamMuYnIi'@; put 'LCJzbGcuYnIiLCJzbHouYnIiLCJzb3JvY2FiYS5iciIsInNydi5iciIsInRheGkuYnIiLCJ0Yy5iciIsInRlYy5iciIsInRlby5iciIsInRoZS5iciIsInRtcC5iciIsInRyZC5iciIsInR1ci5iciIsInR2LmJyIiwidWRpLmJyIiwidmV0LmJyIiwidml4LmJyIiwidmxvZy5iciIsIndpa2ku'@; put 'YnIiLCJ6bGcuYnIiLCJicyIsImNvbS5icyIsImVkdS5icyIsImdvdi5icyIsIm5ldC5icyIsIm9yZy5icyIsImJ0IiwiY29tLmJ0IiwiZWR1LmJ0IiwiZ292LmJ0IiwibmV0LmJ0Iiwib3JnLmJ0IiwiYnYiLCJidyIsImNvLmJ3Iiwib3JnLmJ3IiwiYnkiLCJnb3YuYnkiLCJtaWwuYnkiLCJj'@; put 'b20uYnkiLCJvZi5ieSIsImJ6IiwiY28uYnoiLCJjb20uYnoiLCJlZHUuYnoiLCJnb3YuYnoiLCJuZXQuYnoiLCJvcmcuYnoiLCJjYSIsImFiLmNhIiwiYmMuY2EiLCJtYi5jYSIsIm5iLmNhIiwibmYuY2EiLCJubC5jYSIsIm5zLmNhIiwibnQuY2EiLCJudS5jYSIsIm9uLmNhIiwicGUuY2Ei'@; put 'LCJxYy5jYSIsInNrLmNhIiwieWsuY2EiLCJnYy5jYSIsImNhdCIsImNjIiwiY2QiLCJnb3YuY2QiLCJjZiIsImNnIiwiY2giLCJjaSIsImFjLmNpIiwiYVx4ZTlyb3BvcnQuY2kiLCJhc3NvLmNpIiwiY28uY2kiLCJjb20uY2kiLCJlZC5jaSIsImVkdS5jaSIsImdvLmNpIiwiZ291di5jaSIs'@; put 'ImludC5jaSIsIm5ldC5jaSIsIm9yLmNpIiwib3JnLmNpIiwiKi5jayIsIiF3d3cuY2siLCJjbCIsImNvLmNsIiwiZ29iLmNsIiwiZ292LmNsIiwibWlsLmNsIiwiY20iLCJjby5jbSIsImNvbS5jbSIsImdvdi5jbSIsIm5ldC5jbSIsImNuIiwiYWMuY24iLCJjb20uY24iLCJlZHUuY24iLCJn'@; put 'b3YuY24iLCJtaWwuY24iLCJuZXQuY24iLCJvcmcuY24iLCJcdTUxNmNcdTUzZjguY24iLCJcdTdkYjJcdTdkNjEuY24iLCJcdTdmNTFcdTdlZGMuY24iLCJhaC5jbiIsImJqLmNuIiwiY3EuY24iLCJmai5jbiIsImdkLmNuIiwiZ3MuY24iLCJneC5jbiIsImd6LmNuIiwiaGEuY24iLCJoYi5j'@; put 'biIsImhlLmNuIiwiaGkuY24iLCJoay5jbiIsImhsLmNuIiwiaG4uY24iLCJqbC5jbiIsImpzLmNuIiwianguY24iLCJsbi5jbiIsIm1vLmNuIiwibm0uY24iLCJueC5jbiIsInFoLmNuIiwic2MuY24iLCJzZC5jbiIsInNoLmNuIiwic24uY24iLCJzeC5jbiIsInRqLmNuIiwidHcuY24iLCJ4'@; put 'ai5jbiIsInh6LmNuIiwieW4uY24iLCJ6ai5jbiIsImNvIiwiY29tLmNvIiwiZWR1LmNvIiwiZ292LmNvIiwibWlsLmNvIiwibmV0LmNvIiwibm9tLmNvIiwib3JnLmNvIiwiY29tIiwiY29vcCIsImNyIiwiYWMuY3IiLCJjby5jciIsImVkLmNyIiwiZmkuY3IiLCJnby5jciIsIm9yLmNyIiwi'@; put 'c2EuY3IiLCJjdSIsImNvbS5jdSIsImVkdS5jdSIsImdvYi5jdSIsImluZi5jdSIsIm5hdC5jdSIsIm5ldC5jdSIsIm9yZy5jdSIsImN2IiwiY29tLmN2IiwiZWR1LmN2IiwiaWQuY3YiLCJpbnQuY3YiLCJuZXQuY3YiLCJub21lLmN2Iiwib3JnLmN2IiwicHVibC5jdiIsImN3IiwiY29tLmN3'@; put 'IiwiZWR1LmN3IiwibmV0LmN3Iiwib3JnLmN3IiwiY3giLCJnb3YuY3giLCJjeSIsImFjLmN5IiwiYml6LmN5IiwiY29tLmN5IiwiZWtsb2dlcy5jeSIsImdvdi5jeSIsImx0ZC5jeSIsIm1pbC5jeSIsIm5ldC5jeSIsIm9yZy5jeSIsInByZXNzLmN5IiwicHJvLmN5IiwidG0uY3kiLCJjeiIs'@; put 'ImRlIiwiZGoiLCJkayIsImRtIiwiY28uZG0iLCJjb20uZG0iLCJlZHUuZG0iLCJnb3YuZG0iLCJuZXQuZG0iLCJvcmcuZG0iLCJkbyIsImFydC5kbyIsImNvbS5kbyIsImVkdS5kbyIsImdvYi5kbyIsImdvdi5kbyIsIm1pbC5kbyIsIm5ldC5kbyIsIm9yZy5kbyIsInNsZC5kbyIsIndlYi5k'@; put 'byIsImR6IiwiYXJ0LmR6IiwiYXNzby5keiIsImNvbS5keiIsImVkdS5keiIsImdvdi5keiIsIm5ldC5keiIsIm9yZy5keiIsInBvbC5keiIsInNvYy5keiIsInRtLmR6IiwiZWMiLCJjb20uZWMiLCJlZHUuZWMiLCJmaW4uZWMiLCJnb2IuZWMiLCJnb3YuZWMiLCJpbmZvLmVjIiwiazEyLmVj'@; put 'IiwibWVkLmVjIiwibWlsLmVjIiwibmV0LmVjIiwib3JnLmVjIiwicHJvLmVjIiwiZWR1IiwiZWUiLCJhaXAuZWUiLCJjb20uZWUiLCJlZHUuZWUiLCJmaWUuZWUiLCJnb3YuZWUiLCJsaWIuZWUiLCJtZWQuZWUiLCJvcmcuZWUiLCJwcmkuZWUiLCJyaWlrLmVlIiwiZWciLCJhYy5lZyIsImNv'@; put 'bS5lZyIsImVkdS5lZyIsImV1bi5lZyIsImdvdi5lZyIsImluZm8uZWciLCJtZS5lZyIsIm1pbC5lZyIsIm5hbWUuZWciLCJuZXQuZWciLCJvcmcuZWciLCJzY2kuZWciLCJzcG9ydC5lZyIsInR2LmVnIiwiKi5lciIsImVzIiwiY29tLmVzIiwiZWR1LmVzIiwiZ29iLmVzIiwibm9tLmVzIiwi'@; put 'b3JnLmVzIiwiZXQiLCJiaXouZXQiLCJjb20uZXQiLCJlZHUuZXQiLCJnb3YuZXQiLCJpbmZvLmV0IiwibmFtZS5ldCIsIm5ldC5ldCIsIm9yZy5ldCIsImV1IiwiZmkiLCJhbGFuZC5maSIsImZqIiwiYWMuZmoiLCJiaXouZmoiLCJjb20uZmoiLCJnb3YuZmoiLCJpbmZvLmZqIiwibWlsLmZq'@; put 'IiwibmFtZS5maiIsIm5ldC5maiIsIm9yZy5maiIsInByby5maiIsIiouZmsiLCJmbSIsImNvbS5mbSIsImVkdS5mbSIsIm5ldC5mbSIsIm9yZy5mbSIsImZvIiwiZnIiLCJhc3NvLmZyIiwiY29tLmZyIiwiZ291di5mciIsIm5vbS5mciIsInByZC5mciIsInRtLmZyIiwiYXZvdWVzLmZyIiwi'@; put 'Y2NpLmZyIiwiZ3JldGEuZnIiLCJodWlzc2llci1qdXN0aWNlLmZyIiwiZ2EiLCJnYiIsImdkIiwiZWR1LmdkIiwiZ292LmdkIiwiZ2UiLCJjb20uZ2UiLCJlZHUuZ2UiLCJnb3YuZ2UiLCJuZXQuZ2UiLCJvcmcuZ2UiLCJwdnQuZ2UiLCJzY2hvb2wuZ2UiLCJnZiIsImdnIiwiY28uZ2ciLCJu'@; put 'ZXQuZ2ciLCJvcmcuZ2ciLCJnaCIsImNvbS5naCIsImVkdS5naCIsImdvdi5naCIsIm1pbC5naCIsIm9yZy5naCIsImdpIiwiY29tLmdpIiwiZWR1LmdpIiwiZ292LmdpIiwibHRkLmdpIiwibW9kLmdpIiwib3JnLmdpIiwiZ2wiLCJjby5nbCIsImNvbS5nbCIsImVkdS5nbCIsIm5ldC5nbCIs'@; put 'Im9yZy5nbCIsImdtIiwiZ24iLCJhYy5nbiIsImNvbS5nbiIsImVkdS5nbiIsImdvdi5nbiIsIm5ldC5nbiIsIm9yZy5nbiIsImdvdiIsImdwIiwiYXNzby5ncCIsImNvbS5ncCIsImVkdS5ncCIsIm1vYmkuZ3AiLCJuZXQuZ3AiLCJvcmcuZ3AiLCJncSIsImdyIiwiY29tLmdyIiwiZWR1Lmdy'@; put 'IiwiZ292LmdyIiwibmV0LmdyIiwib3JnLmdyIiwiZ3MiLCJndCIsImNvbS5ndCIsImVkdS5ndCIsImdvYi5ndCIsImluZC5ndCIsIm1pbC5ndCIsIm5ldC5ndCIsIm9yZy5ndCIsImd1IiwiY29tLmd1IiwiZWR1Lmd1IiwiZ292Lmd1IiwiZ3VhbS5ndSIsImluZm8uZ3UiLCJuZXQuZ3UiLCJv'@; put 'cmcuZ3UiLCJ3ZWIuZ3UiLCJndyIsImd5IiwiY28uZ3kiLCJjb20uZ3kiLCJlZHUuZ3kiLCJnb3YuZ3kiLCJuZXQuZ3kiLCJvcmcuZ3kiLCJoayIsImNvbS5oayIsImVkdS5oayIsImdvdi5oayIsImlkdi5oayIsIm5ldC5oayIsIm9yZy5oayIsIlx1NGUyYVx1NGViYS5oayIsIlx1NTAwYlx1'@; put 'NGViYS5oayIsIlx1NTE2Y1x1NTNmOC5oayIsIlx1NjUzZlx1NWU5Yy5oayIsIlx1NjU0ZVx1ODBiMi5oayIsIlx1NjU1OVx1ODBiMi5oayIsIlx1N2I4N1x1NGViYS5oayIsIlx1N2Q0NFx1N2U1NC5oayIsIlx1N2Q0NFx1N2VjNy5oayIsIlx1N2RiMlx1N2Q2MS5oayIsIlx1N2RiMlx1N2Vk'@; put 'Yy5oayIsIlx1N2VjNFx1N2U1NC5oayIsIlx1N2VjNFx1N2VjNy5oayIsIlx1N2Y1MVx1N2Q2MS5oayIsIlx1N2Y1MVx1N2VkYy5oayIsImhtIiwiaG4iLCJjb20uaG4iLCJlZHUuaG4iLCJnb2IuaG4iLCJtaWwuaG4iLCJuZXQuaG4iLCJvcmcuaG4iLCJociIsImNvbS5ociIsImZyb20uaHIi'@; put 'LCJpei5ociIsIm5hbWUuaHIiLCJodCIsImFkdWx0Lmh0IiwiYXJ0Lmh0IiwiYXNzby5odCIsImNvbS5odCIsImNvb3AuaHQiLCJlZHUuaHQiLCJmaXJtLmh0IiwiZ291di5odCIsImluZm8uaHQiLCJtZWQuaHQiLCJuZXQuaHQiLCJvcmcuaHQiLCJwZXJzby5odCIsInBvbC5odCIsInByby5o'@; put 'dCIsInJlbC5odCIsInNob3AuaHQiLCJodSIsIjIwMDAuaHUiLCJhZ3Jhci5odSIsImJvbHQuaHUiLCJjYXNpbm8uaHUiLCJjaXR5Lmh1IiwiY28uaHUiLCJlcm90aWNhLmh1IiwiZXJvdGlrYS5odSIsImZpbG0uaHUiLCJmb3J1bS5odSIsImdhbWVzLmh1IiwiaG90ZWwuaHUiLCJpbmZvLmh1'@; put 'IiwiaW5nYXRsYW4uaHUiLCJqb2dhc3ouaHUiLCJrb255dmVsby5odSIsImxha2FzLmh1IiwibWVkaWEuaHUiLCJuZXdzLmh1Iiwib3JnLmh1IiwicHJpdi5odSIsInJla2xhbS5odSIsInNleC5odSIsInNob3AuaHUiLCJzcG9ydC5odSIsInN1bGkuaHUiLCJzemV4Lmh1IiwidG0uaHUiLCJ0'@; put 'b3pzZGUuaHUiLCJ1dGF6YXMuaHUiLCJ2aWRlby5odSIsImlkIiwiYWMuaWQiLCJiaXouaWQiLCJjby5pZCIsImRlc2EuaWQiLCJnby5pZCIsIm1pbC5pZCIsIm15LmlkIiwibmV0LmlkIiwib3IuaWQiLCJwb25wZXMuaWQiLCJzY2guaWQiLCJ3ZWIuaWQiLCJpZSIsImdvdi5pZSIsImlsIiwi'@; put 'YWMuaWwiLCJjby5pbCIsImdvdi5pbCIsImlkZi5pbCIsImsxMi5pbCIsIm11bmkuaWwiLCJuZXQuaWwiLCJvcmcuaWwiLCJcdTA1ZDlcdTA1ZTlcdTA1ZThcdTA1ZDBcdTA1ZGMiLCJcdTA1ZDBcdTA1ZTdcdTA1ZDNcdTA1ZGVcdTA1ZDlcdTA1ZDQuXHUwNWQ5XHUwNWU5XHUwNWU4XHUwNWQw'@; put 'XHUwNWRjIiwiXHUwNWQ5XHUwNWU5XHUwNWQ1XHUwNWQxLlx1MDVkOVx1MDVlOVx1MDVlOFx1MDVkMFx1MDVkYyIsIlx1MDVlNlx1MDVkNFx1MDVkYy5cdTA1ZDlcdTA1ZTlcdTA1ZThcdTA1ZDBcdTA1ZGMiLCJcdTA1ZGVcdTA1ZGVcdTA1ZTlcdTA1ZGMuXHUwNWQ5XHUwNWU5XHUwNWU4XHUw'@; put 'NWQwXHUwNWRjIiwiaW0iLCJhYy5pbSIsImNvLmltIiwibHRkLmNvLmltIiwicGxjLmNvLmltIiwiY29tLmltIiwibmV0LmltIiwib3JnLmltIiwidHQuaW0iLCJ0di5pbSIsImluIiwiNWcuaW4iLCI2Zy5pbiIsImFjLmluIiwiYWkuaW4iLCJhbS5pbiIsImJpaGFyLmluIiwiYml6LmluIiwi'@; put 'YnVzaW5lc3MuaW4iLCJjYS5pbiIsImNuLmluIiwiY28uaW4iLCJjb20uaW4iLCJjb29wLmluIiwiY3MuaW4iLCJkZWxoaS5pbiIsImRyLmluIiwiZWR1LmluIiwiZXIuaW4iLCJmaXJtLmluIiwiZ2VuLmluIiwiZ292LmluIiwiZ3VqYXJhdC5pbiIsImluZC5pbiIsImluZm8uaW4iLCJpbnQu'@; put 'aW4iLCJpbnRlcm5ldC5pbiIsImlvLmluIiwibWUuaW4iLCJtaWwuaW4iLCJuZXQuaW4iLCJuaWMuaW4iLCJvcmcuaW4iLCJwZy5pbiIsInBvc3QuaW4iLCJwcm8uaW4iLCJyZXMuaW4iLCJ0cmF2ZWwuaW4iLCJ0di5pbiIsInVrLmluIiwidXAuaW4iLCJ1cy5pbiIsImluZm8iLCJpbnQiLCJl'@; put 'dS5pbnQiLCJpbyIsImNvLmlvIiwiY29tLmlvIiwiZWR1LmlvIiwiZ292LmlvIiwibWlsLmlvIiwibmV0LmlvIiwibm9tLmlvIiwib3JnLmlvIiwiaXEiLCJjb20uaXEiLCJlZHUuaXEiLCJnb3YuaXEiLCJtaWwuaXEiLCJuZXQuaXEiLCJvcmcuaXEiLCJpciIsImFjLmlyIiwiY28uaXIiLCJn'@; put 'b3YuaXIiLCJpZC5pciIsIm5ldC5pciIsIm9yZy5pciIsInNjaC5pciIsIlx1MDYyN1x1MDZjY1x1MDYzMVx1MDYyN1x1MDY0Ni5pciIsIlx1MDYyN1x1MDY0YVx1MDYzMVx1MDYyN1x1MDY0Ni5pciIsImlzIiwiaXQiLCJlZHUuaXQiLCJnb3YuaXQiLCJhYnIuaXQiLCJhYnJ1enpvLml0Iiwi'@; put 'YW9zdGEtdmFsbGV5Lml0IiwiYW9zdGF2YWxsZXkuaXQiLCJiYXMuaXQiLCJiYXNpbGljYXRhLml0IiwiY2FsLml0IiwiY2FsYWJyaWEuaXQiLCJjYW0uaXQiLCJjYW1wYW5pYS5pdCIsImVtaWxpYS1yb21hZ25hLml0IiwiZW1pbGlhcm9tYWduYS5pdCIsImVtci5pdCIsImZyaXVsaS12LWdp'@; put 'dWxpYS5pdCIsImZyaXVsaS12ZS1naXVsaWEuaXQiLCJmcml1bGktdmVnaXVsaWEuaXQiLCJmcml1bGktdmVuZXppYS1naXVsaWEuaXQiLCJmcml1bGktdmVuZXppYWdpdWxpYS5pdCIsImZyaXVsaS12Z2l1bGlhLml0IiwiZnJpdWxpdi1naXVsaWEuaXQiLCJmcml1bGl2ZS1naXVsaWEuaXQi'@; put 'LCJmcml1bGl2ZWdpdWxpYS5pdCIsImZyaXVsaXZlbmV6aWEtZ2l1bGlhLml0IiwiZnJpdWxpdmVuZXppYWdpdWxpYS5pdCIsImZyaXVsaXZnaXVsaWEuaXQiLCJmdmcuaXQiLCJsYXouaXQiLCJsYXppby5pdCIsImxpZy5pdCIsImxpZ3VyaWEuaXQiLCJsb20uaXQiLCJsb21iYXJkaWEuaXQi'@; put 'LCJsb21iYXJkeS5pdCIsImx1Y2FuaWEuaXQiLCJtYXIuaXQiLCJtYXJjaGUuaXQiLCJtb2wuaXQiLCJtb2xpc2UuaXQiLCJwaWVkbW9udC5pdCIsInBpZW1vbnRlLml0IiwicG1uLml0IiwicHVnLml0IiwicHVnbGlhLml0Iiwic2FyLml0Iiwic2FyZGVnbmEuaXQiLCJzYXJkaW5pYS5pdCIs'@; put 'InNpYy5pdCIsInNpY2lsaWEuaXQiLCJzaWNpbHkuaXQiLCJ0YWEuaXQiLCJ0b3MuaXQiLCJ0b3NjYW5hLml0IiwidHJlbnRpbi1zdWQtdGlyb2wuaXQiLCJ0cmVudGluLXNceGZjZC10aXJvbC5pdCIsInRyZW50aW4tc3VkdGlyb2wuaXQiLCJ0cmVudGluLXNceGZjZHRpcm9sLml0IiwidHJl'@; put 'bnRpbi1zdWVkLXRpcm9sLml0IiwidHJlbnRpbi1zdWVkdGlyb2wuaXQiLCJ0cmVudGluby5pdCIsInRyZW50aW5vLWEtYWRpZ2UuaXQiLCJ0cmVudGluby1hYWRpZ2UuaXQiLCJ0cmVudGluby1hbHRvLWFkaWdlLml0IiwidHJlbnRpbm8tYWx0b2FkaWdlLml0IiwidHJlbnRpbm8tcy10aXJv'@; put 'bC5pdCIsInRyZW50aW5vLXN0aXJvbC5pdCIsInRyZW50aW5vLXN1ZC10aXJvbC5pdCIsInRyZW50aW5vLXNceGZjZC10aXJvbC5pdCIsInRyZW50aW5vLXN1ZHRpcm9sLml0IiwidHJlbnRpbm8tc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluby1zdWVkLXRpcm9sLml0IiwidHJlbnRpbm8tc3Vl'@; put 'ZHRpcm9sLml0IiwidHJlbnRpbm9hLWFkaWdlLml0IiwidHJlbnRpbm9hYWRpZ2UuaXQiLCJ0cmVudGlub2FsdG8tYWRpZ2UuaXQiLCJ0cmVudGlub2FsdG9hZGlnZS5pdCIsInRyZW50aW5vcy10aXJvbC5pdCIsInRyZW50aW5vc3Rpcm9sLml0IiwidHJlbnRpbm9zdWQtdGlyb2wuaXQiLCJ0'@; put 'cmVudGlub3NceGZjZC10aXJvbC5pdCIsInRyZW50aW5vc3VkdGlyb2wuaXQiLCJ0cmVudGlub3NceGZjZHRpcm9sLml0IiwidHJlbnRpbm9zdWVkLXRpcm9sLml0IiwidHJlbnRpbm9zdWVkdGlyb2wuaXQiLCJ0cmVudGluc3VkLXRpcm9sLml0IiwidHJlbnRpbnNceGZjZC10aXJvbC5pdCIs'@; put 'InRyZW50aW5zdWR0aXJvbC5pdCIsInRyZW50aW5zXHhmY2R0aXJvbC5pdCIsInRyZW50aW5zdWVkLXRpcm9sLml0IiwidHJlbnRpbnN1ZWR0aXJvbC5pdCIsInR1c2NhbnkuaXQiLCJ1bWIuaXQiLCJ1bWJyaWEuaXQiLCJ2YWwtZC1hb3N0YS5pdCIsInZhbC1kYW9zdGEuaXQiLCJ2YWxkLWFv'@; put 'c3RhLml0IiwidmFsZGFvc3RhLml0IiwidmFsbGUtYW9zdGEuaXQiLCJ2YWxsZS1kLWFvc3RhLml0IiwidmFsbGUtZGFvc3RhLml0IiwidmFsbGVhb3N0YS5pdCIsInZhbGxlZC1hb3N0YS5pdCIsInZhbGxlZGFvc3RhLml0IiwidmFsbGVlLWFvc3RlLml0IiwidmFsbFx4ZTllLWFvc3RlLml0'@; put 'IiwidmFsbGVlLWQtYW9zdGUuaXQiLCJ2YWxsXHhlOWUtZC1hb3N0ZS5pdCIsInZhbGxlZWFvc3RlLml0IiwidmFsbFx4ZTllYW9zdGUuaXQiLCJ2YWxsZWVkYW9zdGUuaXQiLCJ2YWxsXHhlOWVkYW9zdGUuaXQiLCJ2YW8uaXQiLCJ2ZGEuaXQiLCJ2ZW4uaXQiLCJ2ZW5ldG8uaXQiLCJhZy5p'@; put 'dCIsImFncmlnZW50by5pdCIsImFsLml0IiwiYWxlc3NhbmRyaWEuaXQiLCJhbHRvLWFkaWdlLml0IiwiYWx0b2FkaWdlLml0IiwiYW4uaXQiLCJhbmNvbmEuaXQiLCJhbmRyaWEtYmFybGV0dGEtdHJhbmkuaXQiLCJhbmRyaWEtdHJhbmktYmFybGV0dGEuaXQiLCJhbmRyaWFiYXJsZXR0YXRy'@; put 'YW5pLml0IiwiYW5kcmlhdHJhbmliYXJsZXR0YS5pdCIsImFvLml0IiwiYW9zdGEuaXQiLCJhb3N0ZS5pdCIsImFwLml0IiwiYXEuaXQiLCJhcXVpbGEuaXQiLCJhci5pdCIsImFyZXp6by5pdCIsImFzY29saS1waWNlbm8uaXQiLCJhc2NvbGlwaWNlbm8uaXQiLCJhc3RpLml0IiwiYXQuaXQi'@; put 'LCJhdi5pdCIsImF2ZWxsaW5vLml0IiwiYmEuaXQiLCJiYWxzYW4uaXQiLCJiYWxzYW4tc3VkdGlyb2wuaXQiLCJiYWxzYW4tc1x4ZmNkdGlyb2wuaXQiLCJiYWxzYW4tc3VlZHRpcm9sLml0IiwiYmFyaS5pdCIsImJhcmxldHRhLXRyYW5pLWFuZHJpYS5pdCIsImJhcmxldHRhdHJhbmlhbmRy'@; put 'aWEuaXQiLCJiZWxsdW5vLml0IiwiYmVuZXZlbnRvLml0IiwiYmVyZ2Ftby5pdCIsImJnLml0IiwiYmkuaXQiLCJiaWVsbGEuaXQiLCJibC5pdCIsImJuLml0IiwiYm8uaXQiLCJib2xvZ25hLml0IiwiYm9semFuby5pdCIsImJvbHphbm8tYWx0b2FkaWdlLml0IiwiYm96ZW4uaXQiLCJib3pl'@; put 'bi1zdWR0aXJvbC5pdCIsImJvemVuLXNceGZjZHRpcm9sLml0IiwiYm96ZW4tc3VlZHRpcm9sLml0IiwiYnIuaXQiLCJicmVzY2lhLml0IiwiYnJpbmRpc2kuaXQiLCJicy5pdCIsImJ0Lml0IiwiYnVsc2FuLml0IiwiYnVsc2FuLXN1ZHRpcm9sLml0IiwiYnVsc2FuLXNceGZjZHRpcm9sLml0'@; put 'IiwiYnVsc2FuLXN1ZWR0aXJvbC5pdCIsImJ6Lml0IiwiY2EuaXQiLCJjYWdsaWFyaS5pdCIsImNhbHRhbmlzc2V0dGEuaXQiLCJjYW1waWRhbm8tbWVkaW8uaXQiLCJjYW1waWRhbm9tZWRpby5pdCIsImNhbXBvYmFzc28uaXQiLCJjYXJib25pYS1pZ2xlc2lhcy5pdCIsImNhcmJvbmlhaWds'@; put 'ZXNpYXMuaXQiLCJjYXJyYXJhLW1hc3NhLml0IiwiY2FycmFyYW1hc3NhLml0IiwiY2FzZXJ0YS5pdCIsImNhdGFuaWEuaXQiLCJjYXRhbnphcm8uaXQiLCJjYi5pdCIsImNlLml0IiwiY2VzZW5hLWZvcmxpLml0IiwiY2VzZW5hLWZvcmxceGVjLml0IiwiY2VzZW5hZm9ybGkuaXQiLCJjZXNl'@; put 'bmFmb3JsXHhlYy5pdCIsImNoLml0IiwiY2hpZXRpLml0IiwiY2kuaXQiLCJjbC5pdCIsImNuLml0IiwiY28uaXQiLCJjb21vLml0IiwiY29zZW56YS5pdCIsImNyLml0IiwiY3JlbW9uYS5pdCIsImNyb3RvbmUuaXQiLCJjcy5pdCIsImN0Lml0IiwiY3VuZW8uaXQiLCJjei5pdCIsImRlbGwt'@; put 'b2dsaWFzdHJhLml0IiwiZGVsbG9nbGlhc3RyYS5pdCIsImVuLml0IiwiZW5uYS5pdCIsImZjLml0IiwiZmUuaXQiLCJmZXJtby5pdCIsImZlcnJhcmEuaXQiLCJmZy5pdCIsImZpLml0IiwiZmlyZW56ZS5pdCIsImZsb3JlbmNlLml0IiwiZm0uaXQiLCJmb2dnaWEuaXQiLCJmb3JsaS1jZXNl'@; put 'bmEuaXQiLCJmb3JsXHhlYy1jZXNlbmEuaXQiLCJmb3JsaWNlc2VuYS5pdCIsImZvcmxceGVjY2VzZW5hLml0IiwiZnIuaXQiLCJmcm9zaW5vbmUuaXQiLCJnZS5pdCIsImdlbm9hLml0IiwiZ2Vub3ZhLml0IiwiZ28uaXQiLCJnb3JpemlhLml0IiwiZ3IuaXQiLCJncm9zc2V0by5pdCIsImln'@; put 'bGVzaWFzLWNhcmJvbmlhLml0IiwiaWdsZXNpYXNjYXJib25pYS5pdCIsImltLml0IiwiaW1wZXJpYS5pdCIsImlzLml0IiwiaXNlcm5pYS5pdCIsImtyLml0IiwibGEtc3BlemlhLml0IiwibGFxdWlsYS5pdCIsImxhc3BlemlhLml0IiwibGF0aW5hLml0IiwibGMuaXQiLCJsZS5pdCIsImxl'@; put 'Y2NlLml0IiwibGVjY28uaXQiLCJsaS5pdCIsImxpdm9ybm8uaXQiLCJsby5pdCIsImxvZGkuaXQiLCJsdC5pdCIsImx1Lml0IiwibHVjY2EuaXQiLCJtYWNlcmF0YS5pdCIsIm1hbnRvdmEuaXQiLCJtYXNzYS1jYXJyYXJhLml0IiwibWFzc2FjYXJyYXJhLml0IiwibWF0ZXJhLml0IiwibWIu'@; put 'aXQiLCJtYy5pdCIsIm1lLml0IiwibWVkaW8tY2FtcGlkYW5vLml0IiwibWVkaW9jYW1waWRhbm8uaXQiLCJtZXNzaW5hLml0IiwibWkuaXQiLCJtaWxhbi5pdCIsIm1pbGFuby5pdCIsIm1uLml0IiwibW8uaXQiLCJtb2RlbmEuaXQiLCJtb256YS5pdCIsIm1vbnphLWJyaWFuemEuaXQiLCJt'@; put 'b256YS1lLWRlbGxhLWJyaWFuemEuaXQiLCJtb256YWJyaWFuemEuaXQiLCJtb256YWVicmlhbnphLml0IiwibW9uemFlZGVsbGFicmlhbnphLml0IiwibXMuaXQiLCJtdC5pdCIsIm5hLml0IiwibmFwbGVzLml0IiwibmFwb2xpLml0Iiwibm8uaXQiLCJub3ZhcmEuaXQiLCJudS5pdCIsIm51'@; put 'b3JvLml0Iiwib2cuaXQiLCJvZ2xpYXN0cmEuaXQiLCJvbGJpYS10ZW1waW8uaXQiLCJvbGJpYXRlbXBpby5pdCIsIm9yLml0Iiwib3Jpc3Rhbm8uaXQiLCJvdC5pdCIsInBhLml0IiwicGFkb3ZhLml0IiwicGFkdWEuaXQiLCJwYWxlcm1vLml0IiwicGFybWEuaXQiLCJwYXZpYS5pdCIsInBj'@; put 'Lml0IiwicGQuaXQiLCJwZS5pdCIsInBlcnVnaWEuaXQiLCJwZXNhcm8tdXJiaW5vLml0IiwicGVzYXJvdXJiaW5vLml0IiwicGVzY2FyYS5pdCIsInBnLml0IiwicGkuaXQiLCJwaWFjZW56YS5pdCIsInBpc2EuaXQiLCJwaXN0b2lhLml0IiwicG4uaXQiLCJwby5pdCIsInBvcmRlbm9uZS5p'@; put 'dCIsInBvdGVuemEuaXQiLCJwci5pdCIsInByYXRvLml0IiwicHQuaXQiLCJwdS5pdCIsInB2Lml0IiwicHouaXQiLCJyYS5pdCIsInJhZ3VzYS5pdCIsInJhdmVubmEuaXQiLCJyYy5pdCIsInJlLml0IiwicmVnZ2lvLWNhbGFicmlhLml0IiwicmVnZ2lvLWVtaWxpYS5pdCIsInJlZ2dpb2Nh'@; put 'bGFicmlhLml0IiwicmVnZ2lvZW1pbGlhLml0IiwicmcuaXQiLCJyaS5pdCIsInJpZXRpLml0IiwicmltaW5pLml0Iiwicm0uaXQiLCJybi5pdCIsInJvLml0Iiwicm9tYS5pdCIsInJvbWUuaXQiLCJyb3ZpZ28uaXQiLCJzYS5pdCIsInNhbGVybm8uaXQiLCJzYXNzYXJpLml0Iiwic2F2b25h'@; put 'Lml0Iiwic2kuaXQiLCJzaWVuYS5pdCIsInNpcmFjdXNhLml0Iiwic28uaXQiLCJzb25kcmlvLml0Iiwic3AuaXQiLCJzci5pdCIsInNzLml0Iiwic1x4ZmNkdGlyb2wuaXQiLCJzdWVkdGlyb2wuaXQiLCJzdi5pdCIsInRhLml0IiwidGFyYW50by5pdCIsInRlLml0IiwidGVtcGlvLW9sYmlh'@; put 'Lml0IiwidGVtcGlvb2xiaWEuaXQiLCJ0ZXJhbW8uaXQiLCJ0ZXJuaS5pdCIsInRuLml0IiwidG8uaXQiLCJ0b3Jpbm8uaXQiLCJ0cC5pdCIsInRyLml0IiwidHJhbmktYW5kcmlhLWJhcmxldHRhLml0IiwidHJhbmktYmFybGV0dGEtYW5kcmlhLml0IiwidHJhbmlhbmRyaWFiYXJsZXR0YS5p'@; put 'dCIsInRyYW5pYmFybGV0dGFhbmRyaWEuaXQiLCJ0cmFwYW5pLml0IiwidHJlbnRvLml0IiwidHJldmlzby5pdCIsInRyaWVzdGUuaXQiLCJ0cy5pdCIsInR1cmluLml0IiwidHYuaXQiLCJ1ZC5pdCIsInVkaW5lLml0IiwidXJiaW5vLXBlc2Fyby5pdCIsInVyYmlub3Blc2Fyby5pdCIsInZh'@; put 'Lml0IiwidmFyZXNlLml0IiwidmIuaXQiLCJ2Yy5pdCIsInZlLml0IiwidmVuZXppYS5pdCIsInZlbmljZS5pdCIsInZlcmJhbmlhLml0IiwidmVyY2VsbGkuaXQiLCJ2ZXJvbmEuaXQiLCJ2aS5pdCIsInZpYm8tdmFsZW50aWEuaXQiLCJ2aWJvdmFsZW50aWEuaXQiLCJ2aWNlbnphLml0Iiwi'@; put 'dml0ZXJiby5pdCIsInZyLml0IiwidnMuaXQiLCJ2dC5pdCIsInZ2Lml0IiwiamUiLCJjby5qZSIsIm5ldC5qZSIsIm9yZy5qZSIsIiouam0iLCJqbyIsImFncmkuam8iLCJhaS5qbyIsImNvbS5qbyIsImVkdS5qbyIsImVuZy5qbyIsImZtLmpvIiwiZ292LmpvIiwibWlsLmpvIiwibmV0Lmpv'@; put 'Iiwib3JnLmpvIiwicGVyLmpvIiwicGhkLmpvIiwic2NoLmpvIiwidHYuam8iLCJqb2JzIiwianAiLCJhYy5qcCIsImFkLmpwIiwiY28uanAiLCJlZC5qcCIsImdvLmpwIiwiZ3IuanAiLCJsZy5qcCIsIm5lLmpwIiwib3IuanAiLCJhaWNoaS5qcCIsImFraXRhLmpwIiwiYW9tb3JpLmpwIiwi'@; put 'Y2hpYmEuanAiLCJlaGltZS5qcCIsImZ1a3VpLmpwIiwiZnVrdW9rYS5qcCIsImZ1a3VzaGltYS5qcCIsImdpZnUuanAiLCJndW5tYS5qcCIsImhpcm9zaGltYS5qcCIsImhva2thaWRvLmpwIiwiaHlvZ28uanAiLCJpYmFyYWtpLmpwIiwiaXNoaWthd2EuanAiLCJpd2F0ZS5qcCIsImthZ2F3'@; put 'YS5qcCIsImthZ29zaGltYS5qcCIsImthbmFnYXdhLmpwIiwia29jaGkuanAiLCJrdW1hbW90by5qcCIsImt5b3RvLmpwIiwibWllLmpwIiwibWl5YWdpLmpwIiwibWl5YXpha2kuanAiLCJuYWdhbm8uanAiLCJuYWdhc2FraS5qcCIsIm5hcmEuanAiLCJuaWlnYXRhLmpwIiwib2l0YS5qcCIs'@; put 'Im9rYXlhbWEuanAiLCJva2luYXdhLmpwIiwib3Nha2EuanAiLCJzYWdhLmpwIiwic2FpdGFtYS5qcCIsInNoaWdhLmpwIiwic2hpbWFuZS5qcCIsInNoaXp1b2thLmpwIiwidG9jaGlnaS5qcCIsInRva3VzaGltYS5qcCIsInRva3lvLmpwIiwidG90dG9yaS5qcCIsInRveWFtYS5qcCIsIndh'@; put 'a2F5YW1hLmpwIiwieWFtYWdhdGEuanAiLCJ5YW1hZ3VjaGkuanAiLCJ5YW1hbmFzaGkuanAiLCJcdTRlMDlcdTkxY2QuanAiLCJcdTRlYWNcdTkwZmQuanAiLCJcdTRmNTBcdThjYzAuanAiLCJcdTUxNzVcdTVlYWIuanAiLCJcdTUzMTdcdTZkNzdcdTkwNTMuanAiLCJcdTUzNDNcdTg0NDku'@; put 'anAiLCJcdTU0OGNcdTZiNGNcdTVjNzEuanAiLCJcdTU3ZmNcdTczODkuanAiLCJcdTU5MjdcdTUyMDYuanAiLCJcdTU5MjdcdTk2MmEuanAiLCJcdTU5NDhcdTgyNmYuanAiLCJcdTViYWVcdTU3Y2UuanAiLCJcdTViYWVcdTVkMGUuanAiLCJcdTViY2NcdTVjNzEuanAiLCJcdTVjNzFcdTUz'@; put 'ZTMuanAiLCJcdTVjNzFcdTVmNjIuanAiLCJcdTVjNzFcdTY4YTguanAiLCJcdTVjOTBcdTk2MWMuanAiLCJcdTVjYTFcdTVjNzEuanAiLCJcdTVjYTlcdTYyNGIuanAiLCJcdTVjZjZcdTY4MzkuanAiLCJcdTVlODNcdTVjZjYuanAiLCJcdTVmYjNcdTVjZjYuanAiLCJcdTYxMWJcdTVhOWIu'@; put 'anAiLCJcdTYxMWJcdTc3ZTUuanAiLCJcdTY1YjBcdTZmNWYuanAiLCJcdTY3NzFcdTRlYWMuanAiLCJcdTY4MDNcdTY3MjguanAiLCJcdTZjOTZcdTdlMDQuanAiLCJcdTZlY2JcdThjYzAuanAiLCJcdTcxOGFcdTY3MmMuanAiLCJcdTc3ZjNcdTVkZGQuanAiLCJcdTc5NWVcdTU5NDhcdTVk'@; put 'ZGQuanAiLCJcdTc5OGZcdTRlOTUuanAiLCJcdTc5OGZcdTVjYTEuanAiLCJcdTc5OGZcdTVjZjYuanAiLCJcdTc5Y2JcdTc1MzAuanAiLCJcdTdmYTRcdTk5YWMuanAiLCJcdTgzMjhcdTU3Y2UuanAiLCJcdTk1NzdcdTVkMGUuanAiLCJcdTk1NzdcdTkxY2UuanAiLCJcdTk3NTJcdTY4ZWUu'@; put 'anAiLCJcdTk3NTlcdTVjYTEuanAiLCJcdTk5OTlcdTVkZGQuanAiLCJcdTlhZDhcdTc3ZTUuanAiLCJcdTljZTVcdTUzZDYuanAiLCJcdTllN2ZcdTUxNTBcdTVjZjYuanAiLCIqLmthd2FzYWtpLmpwIiwiIWNpdHkua2F3YXNha2kuanAiLCIqLmtpdGFreXVzaHUuanAiLCIhY2l0eS5raXRh'@; put 'a3l1c2h1LmpwIiwiKi5rb2JlLmpwIiwiIWNpdHkua29iZS5qcCIsIioubmFnb3lhLmpwIiwiIWNpdHkubmFnb3lhLmpwIiwiKi5zYXBwb3JvLmpwIiwiIWNpdHkuc2FwcG9yby5qcCIsIiouc2VuZGFpLmpwIiwiIWNpdHkuc2VuZGFpLmpwIiwiKi55b2tvaGFtYS5qcCIsIiFjaXR5Lnlva29o'@; put 'YW1hLmpwIiwiYWlzYWkuYWljaGkuanAiLCJhbWEuYWljaGkuanAiLCJhbmpvLmFpY2hpLmpwIiwiYXN1a2UuYWljaGkuanAiLCJjaGlyeXUuYWljaGkuanAiLCJjaGl0YS5haWNoaS5qcCIsImZ1c28uYWljaGkuanAiLCJnYW1hZ29yaS5haWNoaS5qcCIsImhhbmRhLmFpY2hpLmpwIiwiaGF6'@; put 'dS5haWNoaS5qcCIsImhla2luYW4uYWljaGkuanAiLCJoaWdhc2hpdXJhLmFpY2hpLmpwIiwiaWNoaW5vbWl5YS5haWNoaS5qcCIsImluYXphd2EuYWljaGkuanAiLCJpbnV5YW1hLmFpY2hpLmpwIiwiaXNzaGlraS5haWNoaS5qcCIsIml3YWt1cmEuYWljaGkuanAiLCJrYW5pZS5haWNoaS5q'@; put 'cCIsImthcml5YS5haWNoaS5qcCIsImthc3VnYWkuYWljaGkuanAiLCJraXJhLmFpY2hpLmpwIiwia2l5b3N1LmFpY2hpLmpwIiwia29tYWtpLmFpY2hpLmpwIiwia29uYW4uYWljaGkuanAiLCJrb3RhLmFpY2hpLmpwIiwibWloYW1hLmFpY2hpLmpwIiwibWl5b3NoaS5haWNoaS5qcCIsIm5p'@; put 'c2hpby5haWNoaS5qcCIsIm5pc3NoaW4uYWljaGkuanAiLCJvYnUuYWljaGkuanAiLCJvZ3VjaGkuYWljaGkuanAiLCJvaGFydS5haWNoaS5qcCIsIm9rYXpha2kuYWljaGkuanAiLCJvd2FyaWFzYWhpLmFpY2hpLmpwIiwic2V0by5haWNoaS5qcCIsInNoaWthdHN1LmFpY2hpLmpwIiwic2hp'@; put 'bnNoaXJvLmFpY2hpLmpwIiwic2hpdGFyYS5haWNoaS5qcCIsInRhaGFyYS5haWNoaS5qcCIsInRha2FoYW1hLmFpY2hpLmpwIiwidG9iaXNoaW1hLmFpY2hpLmpwIiwidG9laS5haWNoaS5qcCIsInRvZ28uYWljaGkuanAiLCJ0b2thaS5haWNoaS5qcCIsInRva29uYW1lLmFpY2hpLmpwIiwi'@; put 'dG95b2FrZS5haWNoaS5qcCIsInRveW9oYXNoaS5haWNoaS5qcCIsInRveW9rYXdhLmFpY2hpLmpwIiwidG95b25lLmFpY2hpLmpwIiwidG95b3RhLmFpY2hpLmpwIiwidHN1c2hpbWEuYWljaGkuanAiLCJ5YXRvbWkuYWljaGkuanAiLCJha2l0YS5ha2l0YS5qcCIsImRhaXNlbi5ha2l0YS5q'@; put 'cCIsImZ1amlzYXRvLmFraXRhLmpwIiwiZ29qb21lLmFraXRhLmpwIiwiaGFjaGlyb2dhdGEuYWtpdGEuanAiLCJoYXBwb3UuYWtpdGEuanAiLCJoaWdhc2hpbmFydXNlLmFraXRhLmpwIiwiaG9uam8uYWtpdGEuanAiLCJob25qeW8uYWtpdGEuanAiLCJpa2F3YS5ha2l0YS5qcCIsImthbWlr'@; put 'b2FuaS5ha2l0YS5qcCIsImthbWlva2EuYWtpdGEuanAiLCJrYXRhZ2FtaS5ha2l0YS5qcCIsImthenVuby5ha2l0YS5qcCIsImtpdGFha2l0YS5ha2l0YS5qcCIsImtvc2FrYS5ha2l0YS5qcCIsImt5b3dhLmFraXRhLmpwIiwibWlzYXRvLmFraXRhLmpwIiwibWl0YW5lLmFraXRhLmpwIiwi'@; put 'bW9yaXlvc2hpLmFraXRhLmpwIiwibmlrYWhvLmFraXRhLmpwIiwibm9zaGlyby5ha2l0YS5qcCIsIm9kYXRlLmFraXRhLmpwIiwib2dhLmFraXRhLmpwIiwib2dhdGEuYWtpdGEuanAiLCJzZW1ib2t1LmFraXRhLmpwIiwieW9rb3RlLmFraXRhLmpwIiwieXVyaWhvbmpvLmFraXRhLmpwIiwi'@; put 'YW9tb3JpLmFvbW9yaS5qcCIsImdvbm9oZS5hb21vcmkuanAiLCJoYWNoaW5vaGUuYW9tb3JpLmpwIiwiaGFzaGlrYW1pLmFvbW9yaS5qcCIsImhpcmFuYWkuYW9tb3JpLmpwIiwiaGlyb3Nha2kuYW9tb3JpLmpwIiwiaXRheWFuYWdpLmFvbW9yaS5qcCIsImt1cm9pc2hpLmFvbW9yaS5qcCIs'@; put 'Im1pc2F3YS5hb21vcmkuanAiLCJtdXRzdS5hb21vcmkuanAiLCJuYWthZG9tYXJpLmFvbW9yaS5qcCIsIm5vaGVqaS5hb21vcmkuanAiLCJvaXJhc2UuYW9tb3JpLmpwIiwib3dhbmkuYW9tb3JpLmpwIiwicm9rdW5vaGUuYW9tb3JpLmpwIiwic2Fubm9oZS5hb21vcmkuanAiLCJzaGljaGlu'@; put 'b2hlLmFvbW9yaS5qcCIsInNoaW5nby5hb21vcmkuanAiLCJ0YWtrby5hb21vcmkuanAiLCJ0b3dhZGEuYW9tb3JpLmpwIiwidHN1Z2FydS5hb21vcmkuanAiLCJ0c3VydXRhLmFvbW9yaS5qcCIsImFiaWtvLmNoaWJhLmpwIiwiYXNhaGkuY2hpYmEuanAiLCJjaG9uYW4uY2hpYmEuanAiLCJj'@; put 'aG9zZWkuY2hpYmEuanAiLCJjaG9zaGkuY2hpYmEuanAiLCJjaHVvLmNoaWJhLmpwIiwiZnVuYWJhc2hpLmNoaWJhLmpwIiwiZnV0dHN1LmNoaWJhLmpwIiwiaGFuYW1pZ2F3YS5jaGliYS5qcCIsImljaGloYXJhLmNoaWJhLmpwIiwiaWNoaWthd2EuY2hpYmEuanAiLCJpY2hpbm9taXlhLmNo'@; put 'aWJhLmpwIiwiaW56YWkuY2hpYmEuanAiLCJpc3VtaS5jaGliYS5qcCIsImthbWFnYXlhLmNoaWJhLmpwIiwia2Ftb2dhd2EuY2hpYmEuanAiLCJrYXNoaXdhLmNoaWJhLmpwIiwia2F0b3JpLmNoaWJhLmpwIiwia2F0c3V1cmEuY2hpYmEuanAiLCJraW1pdHN1LmNoaWJhLmpwIiwia2lzYXJh'@; put 'enUuY2hpYmEuanAiLCJrb3pha2kuY2hpYmEuanAiLCJrdWp1a3VyaS5jaGliYS5qcCIsImt5b25hbi5jaGliYS5qcCIsIm1hdHN1ZG8uY2hpYmEuanAiLCJtaWRvcmkuY2hpYmEuanAiLCJtaWhhbWEuY2hpYmEuanAiLCJtaW5hbWlib3NvLmNoaWJhLmpwIiwibW9iYXJhLmNoaWJhLmpwIiwi'@; put 'bXV0c3V6YXdhLmNoaWJhLmpwIiwibmFnYXJhLmNoaWJhLmpwIiwibmFnYXJleWFtYS5jaGliYS5qcCIsIm5hcmFzaGluby5jaGliYS5qcCIsIm5hcml0YS5jaGliYS5qcCIsIm5vZGEuY2hpYmEuanAiLCJvYW1pc2hpcmFzYXRvLmNoaWJhLmpwIiwib21pZ2F3YS5jaGliYS5qcCIsIm9uanVr'@; put 'dS5jaGliYS5qcCIsIm90YWtpLmNoaWJhLmpwIiwic2FrYWUuY2hpYmEuanAiLCJzYWt1cmEuY2hpYmEuanAiLCJzaGltb2Z1c2EuY2hpYmEuanAiLCJzaGlyYWtvLmNoaWJhLmpwIiwic2hpcm9pLmNoaWJhLmpwIiwic2hpc3VpLmNoaWJhLmpwIiwic29kZWdhdXJhLmNoaWJhLmpwIiwic29z'@; put 'YS5jaGliYS5qcCIsInRha28uY2hpYmEuanAiLCJ0YXRleWFtYS5jaGliYS5qcCIsInRvZ2FuZS5jaGliYS5qcCIsInRvaG5vc2hvLmNoaWJhLmpwIiwidG9taXNhdG8uY2hpYmEuanAiLCJ1cmF5YXN1LmNoaWJhLmpwIiwieWFjaGltYXRhLmNoaWJhLmpwIiwieWFjaGl5by5jaGliYS5qcCIs'@; put 'Inlva2FpY2hpYmEuY2hpYmEuanAiLCJ5b2tvc2hpYmFoaWthcmkuY2hpYmEuanAiLCJ5b3RzdWthaWRvLmNoaWJhLmpwIiwiYWluYW4uZWhpbWUuanAiLCJob25haS5laGltZS5qcCIsImlrYXRhLmVoaW1lLmpwIiwiaW1hYmFyaS5laGltZS5qcCIsIml5by5laGltZS5qcCIsImthbWlqaW1h'@; put 'LmVoaW1lLmpwIiwia2lob2t1LmVoaW1lLmpwIiwia3VtYWtvZ2VuLmVoaW1lLmpwIiwibWFzYWtpLmVoaW1lLmpwIiwibWF0c3Vuby5laGltZS5qcCIsIm1hdHN1eWFtYS5laGltZS5qcCIsIm5hbWlrYXRhLmVoaW1lLmpwIiwibmlpaGFtYS5laGltZS5qcCIsIm96dS5laGltZS5qcCIsInNh'@; put 'aWpvLmVoaW1lLmpwIiwic2VpeW8uZWhpbWUuanAiLCJzaGlrb2t1Y2h1by5laGltZS5qcCIsInRvYmUuZWhpbWUuanAiLCJ0b29uLmVoaW1lLmpwIiwidWNoaWtvLmVoaW1lLmpwIiwidXdhamltYS5laGltZS5qcCIsInlhd2F0YWhhbWEuZWhpbWUuanAiLCJlY2hpemVuLmZ1a3VpLmpwIiwi'@; put 'ZWloZWlqaS5mdWt1aS5qcCIsImZ1a3VpLmZ1a3VpLmpwIiwiaWtlZGEuZnVrdWkuanAiLCJrYXRzdXlhbWEuZnVrdWkuanAiLCJtaWhhbWEuZnVrdWkuanAiLCJtaW5hbWllY2hpemVuLmZ1a3VpLmpwIiwib2JhbWEuZnVrdWkuanAiLCJvaGkuZnVrdWkuanAiLCJvbm8uZnVrdWkuanAiLCJz'@; put 'YWJhZS5mdWt1aS5qcCIsInNha2FpLmZ1a3VpLmpwIiwidGFrYWhhbWEuZnVrdWkuanAiLCJ0c3VydWdhLmZ1a3VpLmpwIiwid2FrYXNhLmZ1a3VpLmpwIiwiYXNoaXlhLmZ1a3Vva2EuanAiLCJidXplbi5mdWt1b2thLmpwIiwiY2hpa3Vnby5mdWt1b2thLmpwIiwiY2hpa3Voby5mdWt1b2th'@; put 'LmpwIiwiY2hpa3Vqby5mdWt1b2thLmpwIiwiY2hpa3VzaGluby5mdWt1b2thLmpwIiwiY2hpa3V6ZW4uZnVrdW9rYS5qcCIsImNodW8uZnVrdW9rYS5qcCIsImRhemFpZnUuZnVrdW9rYS5qcCIsImZ1a3VjaGkuZnVrdW9rYS5qcCIsImhha2F0YS5mdWt1b2thLmpwIiwiaGlnYXNoaS5mdWt1'@; put 'b2thLmpwIiwiaGlyb2thd2EuZnVrdW9rYS5qcCIsImhpc2F5YW1hLmZ1a3Vva2EuanAiLCJpaXp1a2EuZnVrdW9rYS5qcCIsImluYXRzdWtpLmZ1a3Vva2EuanAiLCJrYWhvLmZ1a3Vva2EuanAiLCJrYXN1Z2EuZnVrdW9rYS5qcCIsImthc3V5YS5mdWt1b2thLmpwIiwia2F3YXJhLmZ1a3Vv'@; put 'a2EuanAiLCJrZWlzZW4uZnVrdW9rYS5qcCIsImtvZ2EuZnVrdW9rYS5qcCIsImt1cmF0ZS5mdWt1b2thLmpwIiwia3Vyb2dpLmZ1a3Vva2EuanAiLCJrdXJ1bWUuZnVrdW9rYS5qcCIsIm1pbmFtaS5mdWt1b2thLmpwIiwibWl5YWtvLmZ1a3Vva2EuanAiLCJtaXlhbWEuZnVrdW9rYS5qcCIs'@; put 'Im1peWF3YWthLmZ1a3Vva2EuanAiLCJtaXp1bWFraS5mdWt1b2thLmpwIiwibXVuYWthdGEuZnVrdW9rYS5qcCIsIm5ha2FnYXdhLmZ1a3Vva2EuanAiLCJuYWthbWEuZnVrdW9rYS5qcCIsIm5pc2hpLmZ1a3Vva2EuanAiLCJub2dhdGEuZnVrdW9rYS5qcCIsIm9nb3JpLmZ1a3Vva2EuanAi'@; put 'LCJva2FnYWtpLmZ1a3Vva2EuanAiLCJva2F3YS5mdWt1b2thLmpwIiwib2tpLmZ1a3Vva2EuanAiLCJvbXV0YS5mdWt1b2thLmpwIiwib25nYS5mdWt1b2thLmpwIiwib25vam8uZnVrdW9rYS5qcCIsIm90by5mdWt1b2thLmpwIiwic2FpZ2F3YS5mdWt1b2thLmpwIiwic2FzYWd1cmkuZnVr'@; put 'dW9rYS5qcCIsInNoaW5ndS5mdWt1b2thLmpwIiwic2hpbnlvc2hpdG9taS5mdWt1b2thLmpwIiwic2hvbmFpLmZ1a3Vva2EuanAiLCJzb2VkYS5mdWt1b2thLmpwIiwic3VlLmZ1a3Vva2EuanAiLCJ0YWNoaWFyYWkuZnVrdW9rYS5qcCIsInRhZ2F3YS5mdWt1b2thLmpwIiwidGFrYXRhLmZ1'@; put 'a3Vva2EuanAiLCJ0b2hvLmZ1a3Vva2EuanAiLCJ0b3lvdHN1LmZ1a3Vva2EuanAiLCJ0c3Vpa2kuZnVrdW9rYS5qcCIsInVraWhhLmZ1a3Vva2EuanAiLCJ1bWkuZnVrdW9rYS5qcCIsInVzdWkuZnVrdW9rYS5qcCIsInlhbWFkYS5mdWt1b2thLmpwIiwieWFtZS5mdWt1b2thLmpwIiwieWFu'@; put 'YWdhd2EuZnVrdW9rYS5qcCIsInl1a3VoYXNoaS5mdWt1b2thLmpwIiwiYWl6dWJhbmdlLmZ1a3VzaGltYS5qcCIsImFpenVtaXNhdG8uZnVrdXNoaW1hLmpwIiwiYWl6dXdha2FtYXRzdS5mdWt1c2hpbWEuanAiLCJhc2FrYXdhLmZ1a3VzaGltYS5qcCIsImJhbmRhaS5mdWt1c2hpbWEuanAi'@; put 'LCJkYXRlLmZ1a3VzaGltYS5qcCIsImZ1a3VzaGltYS5mdWt1c2hpbWEuanAiLCJmdXJ1ZG9uby5mdWt1c2hpbWEuanAiLCJmdXRhYmEuZnVrdXNoaW1hLmpwIiwiaGFuYXdhLmZ1a3VzaGltYS5qcCIsImhpZ2FzaGkuZnVrdXNoaW1hLmpwIiwiaGlyYXRhLmZ1a3VzaGltYS5qcCIsImhpcm9u'@; put 'by5mdWt1c2hpbWEuanAiLCJpaXRhdGUuZnVrdXNoaW1hLmpwIiwiaW5hd2FzaGlyby5mdWt1c2hpbWEuanAiLCJpc2hpa2F3YS5mdWt1c2hpbWEuanAiLCJpd2FraS5mdWt1c2hpbWEuanAiLCJpenVtaXpha2kuZnVrdXNoaW1hLmpwIiwia2FnYW1paXNoaS5mdWt1c2hpbWEuanAiLCJrYW5l'@; put 'eWFtYS5mdWt1c2hpbWEuanAiLCJrYXdhbWF0YS5mdWt1c2hpbWEuanAiLCJraXRha2F0YS5mdWt1c2hpbWEuanAiLCJraXRhc2hpb2JhcmEuZnVrdXNoaW1hLmpwIiwia29vcmkuZnVrdXNoaW1hLmpwIiwia29yaXlhbWEuZnVrdXNoaW1hLmpwIiwia3VuaW1pLmZ1a3VzaGltYS5qcCIsIm1p'@; put 'aGFydS5mdWt1c2hpbWEuanAiLCJtaXNoaW1hLmZ1a3VzaGltYS5qcCIsIm5hbWllLmZ1a3VzaGltYS5qcCIsIm5hbmdvLmZ1a3VzaGltYS5qcCIsIm5pc2hpYWl6dS5mdWt1c2hpbWEuanAiLCJuaXNoaWdvLmZ1a3VzaGltYS5qcCIsIm9rdW1hLmZ1a3VzaGltYS5qcCIsIm9tb3RlZ28uZnVr'@; put 'dXNoaW1hLmpwIiwib25vLmZ1a3VzaGltYS5qcCIsIm90YW1hLmZ1a3VzaGltYS5qcCIsInNhbWVnYXdhLmZ1a3VzaGltYS5qcCIsInNoaW1vZ28uZnVrdXNoaW1hLmpwIiwic2hpcmFrYXdhLmZ1a3VzaGltYS5qcCIsInNob3dhLmZ1a3VzaGltYS5qcCIsInNvbWEuZnVrdXNoaW1hLmpwIiwi'@; put 'c3VrYWdhd2EuZnVrdXNoaW1hLmpwIiwidGFpc2hpbi5mdWt1c2hpbWEuanAiLCJ0YW1ha2F3YS5mdWt1c2hpbWEuanAiLCJ0YW5hZ3VyYS5mdWt1c2hpbWEuanAiLCJ0ZW5laS5mdWt1c2hpbWEuanAiLCJ5YWJ1a2kuZnVrdXNoaW1hLmpwIiwieWFtYXRvLmZ1a3VzaGltYS5qcCIsInlhbWF0'@; put 'c3VyaS5mdWt1c2hpbWEuanAiLCJ5YW5haXp1LmZ1a3VzaGltYS5qcCIsInl1Z2F3YS5mdWt1c2hpbWEuanAiLCJhbnBhY2hpLmdpZnUuanAiLCJlbmEuZ2lmdS5qcCIsImdpZnUuZ2lmdS5qcCIsImdpbmFuLmdpZnUuanAiLCJnb2RvLmdpZnUuanAiLCJndWpvLmdpZnUuanAiLCJoYXNoaW1h'@; put 'LmdpZnUuanAiLCJoaWNoaXNvLmdpZnUuanAiLCJoaWRhLmdpZnUuanAiLCJoaWdhc2hpc2hpcmFrYXdhLmdpZnUuanAiLCJpYmlnYXdhLmdpZnUuanAiLCJpa2VkYS5naWZ1LmpwIiwia2FrYW1pZ2FoYXJhLmdpZnUuanAiLCJrYW5pLmdpZnUuanAiLCJrYXNhaGFyYS5naWZ1LmpwIiwia2Fz'@; put 'YW1hdHN1LmdpZnUuanAiLCJrYXdhdWUuZ2lmdS5qcCIsImtpdGFnYXRhLmdpZnUuanAiLCJtaW5vLmdpZnUuanAiLCJtaW5va2Ftby5naWZ1LmpwIiwibWl0YWtlLmdpZnUuanAiLCJtaXp1bmFtaS5naWZ1LmpwIiwibW90b3N1LmdpZnUuanAiLCJuYWthdHN1Z2F3YS5naWZ1LmpwIiwib2dh'@; put 'a2kuZ2lmdS5qcCIsInNha2Fob2dpLmdpZnUuanAiLCJzZWtpLmdpZnUuanAiLCJzZWtpZ2FoYXJhLmdpZnUuanAiLCJzaGlyYWthd2EuZ2lmdS5qcCIsInRhamltaS5naWZ1LmpwIiwidGFrYXlhbWEuZ2lmdS5qcCIsInRhcnVpLmdpZnUuanAiLCJ0b2tpLmdpZnUuanAiLCJ0b21pa2EuZ2lm'@; put 'dS5qcCIsIndhbm91Y2hpLmdpZnUuanAiLCJ5YW1hZ2F0YS5naWZ1LmpwIiwieWFvdHN1LmdpZnUuanAiLCJ5b3JvLmdpZnUuanAiLCJhbm5ha2EuZ3VubWEuanAiLCJjaGl5b2RhLmd1bm1hLmpwIiwiZnVqaW9rYS5ndW5tYS5qcCIsImhpZ2FzaGlhZ2F0c3VtYS5ndW5tYS5qcCIsImlzZXNh'@; put 'a2kuZ3VubWEuanAiLCJpdGFrdXJhLmd1bm1hLmpwIiwia2FubmEuZ3VubWEuanAiLCJrYW5yYS5ndW5tYS5qcCIsImthdGFzaGluYS5ndW5tYS5qcCIsImthd2FiYS5ndW5tYS5qcCIsImtpcnl1Lmd1bm1hLmpwIiwia3VzYXRzdS5ndW5tYS5qcCIsIm1hZWJhc2hpLmd1bm1hLmpwIiwibWVp'@; put 'd2EuZ3VubWEuanAiLCJtaWRvcmkuZ3VubWEuanAiLCJtaW5ha2FtaS5ndW5tYS5qcCIsIm5hZ2Fub2hhcmEuZ3VubWEuanAiLCJuYWthbm9qby5ndW5tYS5qcCIsIm5hbm1va3UuZ3VubWEuanAiLCJudW1hdGEuZ3VubWEuanAiLCJvaXp1bWkuZ3VubWEuanAiLCJvcmEuZ3VubWEuanAiLCJv'@; put 'dGEuZ3VubWEuanAiLCJzaGlidWthd2EuZ3VubWEuanAiLCJzaGltb25pdGEuZ3VubWEuanAiLCJzaGludG8uZ3VubWEuanAiLCJzaG93YS5ndW5tYS5qcCIsInRha2FzYWtpLmd1bm1hLmpwIiwidGFrYXlhbWEuZ3VubWEuanAiLCJ0YW1hbXVyYS5ndW5tYS5qcCIsInRhdGViYXlhc2hpLmd1'@; put 'bm1hLmpwIiwidG9taW9rYS5ndW5tYS5qcCIsInRzdWtpeW9uby5ndW5tYS5qcCIsInRzdW1hZ29pLmd1bm1hLmpwIiwidWVuby5ndW5tYS5qcCIsInlvc2hpb2thLmd1bm1hLmpwIiwiYXNhbWluYW1pLmhpcm9zaGltYS5qcCIsImRhaXdhLmhpcm9zaGltYS5qcCIsImV0YWppbWEuaGlyb3No'@; put 'aW1hLmpwIiwiZnVjaHUuaGlyb3NoaW1hLmpwIiwiZnVrdXlhbWEuaGlyb3NoaW1hLmpwIiwiaGF0c3VrYWljaGkuaGlyb3NoaW1hLmpwIiwiaGlnYXNoaWhpcm9zaGltYS5oaXJvc2hpbWEuanAiLCJob25nby5oaXJvc2hpbWEuanAiLCJqaW5zZWtpa29nZW4uaGlyb3NoaW1hLmpwIiwia2Fp'@; put 'dGEuaGlyb3NoaW1hLmpwIiwia3VpLmhpcm9zaGltYS5qcCIsImt1bWFuby5oaXJvc2hpbWEuanAiLCJrdXJlLmhpcm9zaGltYS5qcCIsIm1paGFyYS5oaXJvc2hpbWEuanAiLCJtaXlvc2hpLmhpcm9zaGltYS5qcCIsIm5ha2EuaGlyb3NoaW1hLmpwIiwib25vbWljaGkuaGlyb3NoaW1hLmpw'@; put 'Iiwib3Nha2lrYW1pamltYS5oaXJvc2hpbWEuanAiLCJvdGFrZS5oaXJvc2hpbWEuanAiLCJzYWthLmhpcm9zaGltYS5qcCIsInNlcmEuaGlyb3NoaW1hLmpwIiwic2VyYW5pc2hpLmhpcm9zaGltYS5qcCIsInNoaW5pY2hpLmhpcm9zaGltYS5qcCIsInNob2JhcmEuaGlyb3NoaW1hLmpwIiwi'@; put 'dGFrZWhhcmEuaGlyb3NoaW1hLmpwIiwiYWJhc2hpcmkuaG9ra2FpZG8uanAiLCJhYmlyYS5ob2trYWlkby5qcCIsImFpYmV0c3UuaG9ra2FpZG8uanAiLCJha2FiaXJhLmhva2thaWRvLmpwIiwiYWtrZXNoaS5ob2trYWlkby5qcCIsImFzYWhpa2F3YS5ob2trYWlkby5qcCIsImFzaGliZXRz'@; put 'dS5ob2trYWlkby5qcCIsImFzaG9yby5ob2trYWlkby5qcCIsImFzc2FidS5ob2trYWlkby5qcCIsImF0c3VtYS5ob2trYWlkby5qcCIsImJpYmFpLmhva2thaWRvLmpwIiwiYmllaS5ob2trYWlkby5qcCIsImJpZnVrYS5ob2trYWlkby5qcCIsImJpaG9yby5ob2trYWlkby5qcCIsImJpcmF0'@; put 'b3JpLmhva2thaWRvLmpwIiwiY2hpcHB1YmV0c3UuaG9ra2FpZG8uanAiLCJjaGl0b3NlLmhva2thaWRvLmpwIiwiZGF0ZS5ob2trYWlkby5qcCIsImViZXRzdS5ob2trYWlkby5qcCIsImVtYmV0c3UuaG9ra2FpZG8uanAiLCJlbml3YS5ob2trYWlkby5qcCIsImVyaW1vLmhva2thaWRvLmpw'@; put 'IiwiZXNhbi5ob2trYWlkby5qcCIsImVzYXNoaS5ob2trYWlkby5qcCIsImZ1a2FnYXdhLmhva2thaWRvLmpwIiwiZnVrdXNoaW1hLmhva2thaWRvLmpwIiwiZnVyYW5vLmhva2thaWRvLmpwIiwiZnVydWJpcmEuaG9ra2FpZG8uanAiLCJoYWJvcm8uaG9ra2FpZG8uanAiLCJoYWtvZGF0ZS5o'@; put 'b2trYWlkby5qcCIsImhhbWF0b25iZXRzdS5ob2trYWlkby5qcCIsImhpZGFrYS5ob2trYWlkby5qcCIsImhpZ2FzaGlrYWd1cmEuaG9ra2FpZG8uanAiLCJoaWdhc2hpa2F3YS5ob2trYWlkby5qcCIsImhpcm9vLmhva2thaWRvLmpwIiwiaG9rdXJ5dS5ob2trYWlkby5qcCIsImhva3V0by5o'@; put 'b2trYWlkby5qcCIsImhvbmJldHN1Lmhva2thaWRvLmpwIiwiaG9yb2thbmFpLmhva2thaWRvLmpwIiwiaG9yb25vYmUuaG9ra2FpZG8uanAiLCJpa2VkYS5ob2trYWlkby5qcCIsImltYWthbmUuaG9ra2FpZG8uanAiLCJpc2hpa2FyaS5ob2trYWlkby5qcCIsIml3YW1pemF3YS5ob2trYWlk'@; put 'by5qcCIsIml3YW5haS5ob2trYWlkby5qcCIsImthbWlmdXJhbm8uaG9ra2FpZG8uanAiLCJrYW1pa2F3YS5ob2trYWlkby5qcCIsImthbWlzaGlob3JvLmhva2thaWRvLmpwIiwia2FtaXN1bmFnYXdhLmhva2thaWRvLmpwIiwia2Ftb2VuYWkuaG9ra2FpZG8uanAiLCJrYXlhYmUuaG9ra2Fp'@; put 'ZG8uanAiLCJrZW1idWNoaS5ob2trYWlkby5qcCIsImtpa29uYWkuaG9ra2FpZG8uanAiLCJraW1vYmV0c3UuaG9ra2FpZG8uanAiLCJraXRhaGlyb3NoaW1hLmhva2thaWRvLmpwIiwia2l0YW1pLmhva2thaWRvLmpwIiwia2l5b3NhdG8uaG9ra2FpZG8uanAiLCJrb3NoaW1penUuaG9ra2Fp'@; put 'ZG8uanAiLCJrdW5uZXBwdS5ob2trYWlkby5qcCIsImt1cml5YW1hLmhva2thaWRvLmpwIiwia3Vyb21hdHN1bmFpLmhva2thaWRvLmpwIiwia3VzaGlyby5ob2trYWlkby5qcCIsImt1dGNoYW4uaG9ra2FpZG8uanAiLCJreW93YS5ob2trYWlkby5qcCIsIm1hc2hpa2UuaG9ra2FpZG8uanAi'@; put 'LCJtYXRzdW1hZS5ob2trYWlkby5qcCIsIm1pa2FzYS5ob2trYWlkby5qcCIsIm1pbmFtaWZ1cmFuby5ob2trYWlkby5qcCIsIm1vbWJldHN1Lmhva2thaWRvLmpwIiwibW9zZXVzaGkuaG9ra2FpZG8uanAiLCJtdWthd2EuaG9ra2FpZG8uanAiLCJtdXJvcmFuLmhva2thaWRvLmpwIiwibmFp'@; put 'ZS5ob2trYWlkby5qcCIsIm5ha2FnYXdhLmhva2thaWRvLmpwIiwibmFrYXNhdHN1bmFpLmhva2thaWRvLmpwIiwibmFrYXRvbWJldHN1Lmhva2thaWRvLmpwIiwibmFuYWUuaG9ra2FpZG8uanAiLCJuYW5wb3JvLmhva2thaWRvLmpwIiwibmF5b3JvLmhva2thaWRvLmpwIiwibmVtdXJvLmhv'@; put 'a2thaWRvLmpwIiwibmlpa2FwcHUuaG9ra2FpZG8uanAiLCJuaWtpLmhva2thaWRvLmpwIiwibmlzaGlva29wcGUuaG9ra2FpZG8uanAiLCJub2JvcmliZXRzdS5ob2trYWlkby5qcCIsIm51bWF0YS5ob2trYWlkby5qcCIsIm9iaWhpcm8uaG9ra2FpZG8uanAiLCJvYmlyYS5ob2trYWlkby5q'@; put 'cCIsIm9rZXRvLmhva2thaWRvLmpwIiwib2tvcHBlLmhva2thaWRvLmpwIiwib3RhcnUuaG9ra2FpZG8uanAiLCJvdG9iZS5ob2trYWlkby5qcCIsIm90b2Z1a2UuaG9ra2FpZG8uanAiLCJvdG9pbmVwcHUuaG9ra2FpZG8uanAiLCJvdW11Lmhva2thaWRvLmpwIiwib3pvcmEuaG9ra2FpZG8u'@; put 'anAiLCJwaXBwdS5ob2trYWlkby5qcCIsInJhbmtvc2hpLmhva2thaWRvLmpwIiwicmVidW4uaG9ra2FpZG8uanAiLCJyaWt1YmV0c3UuaG9ra2FpZG8uanAiLCJyaXNoaXJpLmhva2thaWRvLmpwIiwicmlzaGlyaWZ1amkuaG9ra2FpZG8uanAiLCJzYXJvbWEuaG9ra2FpZG8uanAiLCJzYXJ1'@; put 'ZnV0c3UuaG9ra2FpZG8uanAiLCJzaGFrb3Rhbi5ob2trYWlkby5qcCIsInNoYXJpLmhva2thaWRvLmpwIiwic2hpYmVjaGEuaG9ra2FpZG8uanAiLCJzaGliZXRzdS5ob2trYWlkby5qcCIsInNoaWthYmUuaG9ra2FpZG8uanAiLCJzaGlrYW9pLmhva2thaWRvLmpwIiwic2hpbWFtYWtpLmhv'@; put 'a2thaWRvLmpwIiwic2hpbWl6dS5ob2trYWlkby5qcCIsInNoaW1va2F3YS5ob2trYWlkby5qcCIsInNoaW5zaGlub3RzdS5ob2trYWlkby5qcCIsInNoaW50b2t1Lmhva2thaWRvLmpwIiwic2hpcmFudWthLmhva2thaWRvLmpwIiwic2hpcmFvaS5ob2trYWlkby5qcCIsInNoaXJpdWNoaS5o'@; put 'b2trYWlkby5qcCIsInNvYmV0c3UuaG9ra2FpZG8uanAiLCJzdW5hZ2F3YS5ob2trYWlkby5qcCIsInRhaWtpLmhva2thaWRvLmpwIiwidGFrYXN1Lmhva2thaWRvLmpwIiwidGFraWthd2EuaG9ra2FpZG8uanAiLCJ0YWtpbm91ZS5ob2trYWlkby5qcCIsInRlc2hpa2FnYS5ob2trYWlkby5q'@; put 'cCIsInRvYmV0c3UuaG9ra2FpZG8uanAiLCJ0b2htYS5ob2trYWlkby5qcCIsInRvbWFrb21haS5ob2trYWlkby5qcCIsInRvbWFyaS5ob2trYWlkby5qcCIsInRveWEuaG9ra2FpZG8uanAiLCJ0b3lha28uaG9ra2FpZG8uanAiLCJ0b3lvdG9taS5ob2trYWlkby5qcCIsInRveW91cmEuaG9r'@; put 'a2FpZG8uanAiLCJ0c3ViZXRzdS5ob2trYWlkby5qcCIsInRzdWtpZ2F0YS5ob2trYWlkby5qcCIsInVyYWthd2EuaG9ra2FpZG8uanAiLCJ1cmF1c3UuaG9ra2FpZG8uanAiLCJ1cnl1Lmhva2thaWRvLmpwIiwidXRhc2hpbmFpLmhva2thaWRvLmpwIiwid2Fra2FuYWkuaG9ra2FpZG8uanAi'@; put 'LCJ3YXNzYW11Lmhva2thaWRvLmpwIiwieWFrdW1vLmhva2thaWRvLmpwIiwieW9pY2hpLmhva2thaWRvLmpwIiwiYWlvaS5oeW9nby5qcCIsImFrYXNoaS5oeW9nby5qcCIsImFrby5oeW9nby5qcCIsImFtYWdhc2FraS5oeW9nby5qcCIsImFvZ2FraS5oeW9nby5qcCIsImFzYWdvLmh5b2dv'@; put 'LmpwIiwiYXNoaXlhLmh5b2dvLmpwIiwiYXdhamkuaHlvZ28uanAiLCJmdWt1c2FraS5oeW9nby5qcCIsImdvc2hpa2kuaHlvZ28uanAiLCJoYXJpbWEuaHlvZ28uanAiLCJoaW1lamkuaHlvZ28uanAiLCJpY2hpa2F3YS5oeW9nby5qcCIsImluYWdhd2EuaHlvZ28uanAiLCJpdGFtaS5oeW9n'@; put 'by5qcCIsImtha29nYXdhLmh5b2dvLmpwIiwia2FtaWdvcmkuaHlvZ28uanAiLCJrYW1pa2F3YS5oeW9nby5qcCIsImthc2FpLmh5b2dvLmpwIiwia2FzdWdhLmh5b2dvLmpwIiwia2F3YW5pc2hpLmh5b2dvLmpwIiwibWlraS5oeW9nby5qcCIsIm1pbmFtaWF3YWppLmh5b2dvLmpwIiwibmlz'@; put 'aGlub21peWEuaHlvZ28uanAiLCJuaXNoaXdha2kuaHlvZ28uanAiLCJvbm8uaHlvZ28uanAiLCJzYW5kYS5oeW9nby5qcCIsInNhbm5hbi5oeW9nby5qcCIsInNhc2F5YW1hLmh5b2dvLmpwIiwic2F5by5oeW9nby5qcCIsInNoaW5ndS5oeW9nby5qcCIsInNoaW5vbnNlbi5oeW9nby5qcCIs'@; put 'InNoaXNvLmh5b2dvLmpwIiwic3Vtb3RvLmh5b2dvLmpwIiwidGFpc2hpLmh5b2dvLmpwIiwidGFrYS5oeW9nby5qcCIsInRha2FyYXp1a2EuaHlvZ28uanAiLCJ0YWthc2Fnby5oeW9nby5qcCIsInRha2luby5oeW9nby5qcCIsInRhbWJhLmh5b2dvLmpwIiwidGF0c3Vuby5oeW9nby5qcCIs'@; put 'InRveW9va2EuaHlvZ28uanAiLCJ5YWJ1Lmh5b2dvLmpwIiwieWFzaGlyby5oeW9nby5qcCIsInlva2EuaHlvZ28uanAiLCJ5b2thd2EuaHlvZ28uanAiLCJhbWkuaWJhcmFraS5qcCIsImFzYWhpLmliYXJha2kuanAiLCJiYW5kby5pYmFyYWtpLmpwIiwiY2hpa3VzZWkuaWJhcmFraS5qcCIs'@; put 'ImRhaWdvLmliYXJha2kuanAiLCJmdWppc2hpcm8uaWJhcmFraS5qcCIsImhpdGFjaGkuaWJhcmFraS5qcCIsImhpdGFjaGluYWthLmliYXJha2kuanAiLCJoaXRhY2hpb21peWEuaWJhcmFraS5qcCIsImhpdGFjaGlvdGEuaWJhcmFraS5qcCIsImliYXJha2kuaWJhcmFraS5qcCIsImluYS5p'@; put 'YmFyYWtpLmpwIiwiaW5hc2hpa2kuaWJhcmFraS5qcCIsIml0YWtvLmliYXJha2kuanAiLCJpd2FtYS5pYmFyYWtpLmpwIiwiam9zby5pYmFyYWtpLmpwIiwia2FtaXN1LmliYXJha2kuanAiLCJrYXNhbWEuaWJhcmFraS5qcCIsImthc2hpbWEuaWJhcmFraS5qcCIsImthc3VtaWdhdXJhLmli'@; put 'YXJha2kuanAiLCJrb2dhLmliYXJha2kuanAiLCJtaWhvLmliYXJha2kuanAiLCJtaXRvLmliYXJha2kuanAiLCJtb3JpeWEuaWJhcmFraS5qcCIsIm5ha2EuaWJhcmFraS5qcCIsIm5hbWVnYXRhLmliYXJha2kuanAiLCJvYXJhaS5pYmFyYWtpLmpwIiwib2dhd2EuaWJhcmFraS5qcCIsIm9t'@; put 'aXRhbWEuaWJhcmFraS5qcCIsInJ5dWdhc2FraS5pYmFyYWtpLmpwIiwic2FrYWkuaWJhcmFraS5qcCIsInNha3VyYWdhd2EuaWJhcmFraS5qcCIsInNoaW1vZGF0ZS5pYmFyYWtpLmpwIiwic2hpbW90c3VtYS5pYmFyYWtpLmpwIiwic2hpcm9zYXRvLmliYXJha2kuanAiLCJzb3dhLmliYXJh'@; put 'a2kuanAiLCJzdWlmdS5pYmFyYWtpLmpwIiwidGFrYWhhZ2kuaWJhcmFraS5qcCIsInRhbWF0c3VrdXJpLmliYXJha2kuanAiLCJ0b2thaS5pYmFyYWtpLmpwIiwidG9tb2JlLmliYXJha2kuanAiLCJ0b25lLmliYXJha2kuanAiLCJ0b3JpZGUuaWJhcmFraS5qcCIsInRzdWNoaXVyYS5pYmFy'@; put 'YWtpLmpwIiwidHN1a3ViYS5pYmFyYWtpLmpwIiwidWNoaWhhcmEuaWJhcmFraS5qcCIsInVzaGlrdS5pYmFyYWtpLmpwIiwieWFjaGl5by5pYmFyYWtpLmpwIiwieWFtYWdhdGEuaWJhcmFraS5qcCIsInlhd2FyYS5pYmFyYWtpLmpwIiwieXVraS5pYmFyYWtpLmpwIiwiYW5hbWl6dS5pc2hp'@; put 'a2F3YS5qcCIsImhha3VpLmlzaGlrYXdhLmpwIiwiaGFrdXNhbi5pc2hpa2F3YS5qcCIsImthZ2EuaXNoaWthd2EuanAiLCJrYWhva3UuaXNoaWthd2EuanAiLCJrYW5hemF3YS5pc2hpa2F3YS5qcCIsImthd2FraXRhLmlzaGlrYXdhLmpwIiwia29tYXRzdS5pc2hpa2F3YS5qcCIsIm5ha2Fu'@; put 'b3RvLmlzaGlrYXdhLmpwIiwibmFuYW8uaXNoaWthd2EuanAiLCJub21pLmlzaGlrYXdhLmpwIiwibm9ub2ljaGkuaXNoaWthd2EuanAiLCJub3RvLmlzaGlrYXdhLmpwIiwic2hpa2EuaXNoaWthd2EuanAiLCJzdXp1LmlzaGlrYXdhLmpwIiwidHN1YmF0YS5pc2hpa2F3YS5qcCIsInRzdXJ1'@; put 'Z2kuaXNoaWthd2EuanAiLCJ1Y2hpbmFkYS5pc2hpa2F3YS5qcCIsIndhamltYS5pc2hpa2F3YS5qcCIsImZ1ZGFpLml3YXRlLmpwIiwiZnVqaXNhd2EuaXdhdGUuanAiLCJoYW5hbWFraS5pd2F0ZS5qcCIsImhpcmFpenVtaS5pd2F0ZS5qcCIsImhpcm9uby5pd2F0ZS5qcCIsImljaGlub2hl'@; put 'Lml3YXRlLmpwIiwiaWNoaW5vc2VraS5pd2F0ZS5qcCIsIml3YWl6dW1pLml3YXRlLmpwIiwiaXdhdGUuaXdhdGUuanAiLCJqb2JvamkuaXdhdGUuanAiLCJrYW1haXNoaS5pd2F0ZS5qcCIsImthbmVnYXNha2kuaXdhdGUuanAiLCJrYXJ1bWFpLml3YXRlLmpwIiwia2F3YWkuaXdhdGUuanAi'@; put 'LCJraXRha2FtaS5pd2F0ZS5qcCIsImt1amkuaXdhdGUuanAiLCJrdW5vaGUuaXdhdGUuanAiLCJrdXp1bWFraS5pd2F0ZS5qcCIsIm1peWFrby5pd2F0ZS5qcCIsIm1penVzYXdhLml3YXRlLmpwIiwibW9yaW9rYS5pd2F0ZS5qcCIsIm5pbm9oZS5pd2F0ZS5qcCIsIm5vZGEuaXdhdGUuanAi'@; put 'LCJvZnVuYXRvLml3YXRlLmpwIiwib3NodS5pd2F0ZS5qcCIsIm90c3VjaGkuaXdhdGUuanAiLCJyaWt1emVudGFrYXRhLml3YXRlLmpwIiwic2hpd2EuaXdhdGUuanAiLCJzaGl6dWt1aXNoaS5pd2F0ZS5qcCIsInN1bWl0YS5pd2F0ZS5qcCIsInRhbm9oYXRhLml3YXRlLmpwIiwidG9uby5p'@; put 'd2F0ZS5qcCIsInlhaGFiYS5pd2F0ZS5qcCIsInlhbWFkYS5pd2F0ZS5qcCIsImF5YWdhd2Eua2FnYXdhLmpwIiwiaGlnYXNoaWthZ2F3YS5rYWdhd2EuanAiLCJrYW5vbmppLmthZ2F3YS5qcCIsImtvdG9oaXJhLmthZ2F3YS5qcCIsIm1hbm5vLmthZ2F3YS5qcCIsIm1hcnVnYW1lLmthZ2F3'@; put 'YS5qcCIsIm1pdG95by5rYWdhd2EuanAiLCJuYW9zaGltYS5rYWdhd2EuanAiLCJzYW51a2kua2FnYXdhLmpwIiwidGFkb3RzdS5rYWdhd2EuanAiLCJ0YWthbWF0c3Uua2FnYXdhLmpwIiwidG9ub3Noby5rYWdhd2EuanAiLCJ1Y2hpbm9taS5rYWdhd2EuanAiLCJ1dGF6dS5rYWdhd2EuanAi'@; put 'LCJ6ZW50c3VqaS5rYWdhd2EuanAiLCJha3VuZS5rYWdvc2hpbWEuanAiLCJhbWFtaS5rYWdvc2hpbWEuanAiLCJoaW9raS5rYWdvc2hpbWEuanAiLCJpc2Eua2Fnb3NoaW1hLmpwIiwiaXNlbi5rYWdvc2hpbWEuanAiLCJpenVtaS5rYWdvc2hpbWEuanAiLCJrYWdvc2hpbWEua2Fnb3NoaW1h'@; put 'LmpwIiwia2Fub3lhLmthZ29zaGltYS5qcCIsImthd2FuYWJlLmthZ29zaGltYS5qcCIsImtpbmtvLmthZ29zaGltYS5qcCIsImtvdXlhbWEua2Fnb3NoaW1hLmpwIiwibWFrdXJhemFraS5rYWdvc2hpbWEuanAiLCJtYXRzdW1vdG8ua2Fnb3NoaW1hLmpwIiwibWluYW1pdGFuZS5rYWdvc2hp'@; put 'bWEuanAiLCJuYWthdGFuZS5rYWdvc2hpbWEuanAiLCJuaXNoaW5vb21vdGUua2Fnb3NoaW1hLmpwIiwic2F0c3VtYXNlbmRhaS5rYWdvc2hpbWEuanAiLCJzb28ua2Fnb3NoaW1hLmpwIiwidGFydW1penUua2Fnb3NoaW1hLmpwIiwieXVzdWkua2Fnb3NoaW1hLmpwIiwiYWlrYXdhLmthbmFn'@; put 'YXdhLmpwIiwiYXRzdWdpLmthbmFnYXdhLmpwIiwiYXlhc2Uua2FuYWdhd2EuanAiLCJjaGlnYXNha2kua2FuYWdhd2EuanAiLCJlYmluYS5rYW5hZ2F3YS5qcCIsImZ1amlzYXdhLmthbmFnYXdhLmpwIiwiaGFkYW5vLmthbmFnYXdhLmpwIiwiaGFrb25lLmthbmFnYXdhLmpwIiwiaGlyYXRz'@; put 'dWthLmthbmFnYXdhLmpwIiwiaXNlaGFyYS5rYW5hZ2F3YS5qcCIsImthaXNlaS5rYW5hZ2F3YS5qcCIsImthbWFrdXJhLmthbmFnYXdhLmpwIiwia2l5b2thd2Eua2FuYWdhd2EuanAiLCJtYXRzdWRhLmthbmFnYXdhLmpwIiwibWluYW1pYXNoaWdhcmEua2FuYWdhd2EuanAiLCJtaXVyYS5r'@; put 'YW5hZ2F3YS5qcCIsIm5ha2FpLmthbmFnYXdhLmpwIiwibmlub21peWEua2FuYWdhd2EuanAiLCJvZGF3YXJhLmthbmFnYXdhLmpwIiwib2kua2FuYWdhd2EuanAiLCJvaXNvLmthbmFnYXdhLmpwIiwic2FnYW1paGFyYS5rYW5hZ2F3YS5qcCIsInNhbXVrYXdhLmthbmFnYXdhLmpwIiwidHN1'@; put 'a3VpLmthbmFnYXdhLmpwIiwieWFtYWtpdGEua2FuYWdhd2EuanAiLCJ5YW1hdG8ua2FuYWdhd2EuanAiLCJ5b2tvc3VrYS5rYW5hZ2F3YS5qcCIsInl1Z2F3YXJhLmthbmFnYXdhLmpwIiwiemFtYS5rYW5hZ2F3YS5qcCIsInp1c2hpLmthbmFnYXdhLmpwIiwiYWtpLmtvY2hpLmpwIiwiZ2Vp'@; put 'c2VpLmtvY2hpLmpwIiwiaGlkYWthLmtvY2hpLmpwIiwiaGlnYXNoaXRzdW5vLmtvY2hpLmpwIiwiaW5vLmtvY2hpLmpwIiwia2FnYW1pLmtvY2hpLmpwIiwia2FtaS5rb2NoaS5qcCIsImtpdGFnYXdhLmtvY2hpLmpwIiwia29jaGkua29jaGkuanAiLCJtaWhhcmEua29jaGkuanAiLCJtb3Rv'@; put 'eWFtYS5rb2NoaS5qcCIsIm11cm90by5rb2NoaS5qcCIsIm5haGFyaS5rb2NoaS5qcCIsIm5ha2FtdXJhLmtvY2hpLmpwIiwibmFua29rdS5rb2NoaS5qcCIsIm5pc2hpdG9zYS5rb2NoaS5qcCIsIm5peW9kb2dhd2Eua29jaGkuanAiLCJvY2hpLmtvY2hpLmpwIiwib2thd2Eua29jaGkuanAi'@; put 'LCJvdG95by5rb2NoaS5qcCIsIm90c3VraS5rb2NoaS5qcCIsInNha2F3YS5rb2NoaS5qcCIsInN1a3Vtby5rb2NoaS5qcCIsInN1c2FraS5rb2NoaS5qcCIsInRvc2Eua29jaGkuanAiLCJ0b3Nhc2hpbWl6dS5rb2NoaS5qcCIsInRveW8ua29jaGkuanAiLCJ0c3Vuby5rb2NoaS5qcCIsInVt'@; put 'YWppLmtvY2hpLmpwIiwieWFzdWRhLmtvY2hpLmpwIiwieXVzdWhhcmEua29jaGkuanAiLCJhbWFrdXNhLmt1bWFtb3RvLmpwIiwiYXJhby5rdW1hbW90by5qcCIsImFzby5rdW1hbW90by5qcCIsImNob3lvLmt1bWFtb3RvLmpwIiwiZ3lva3V0by5rdW1hbW90by5qcCIsImthbWlhbWFrdXNh'@; put 'Lmt1bWFtb3RvLmpwIiwia2lrdWNoaS5rdW1hbW90by5qcCIsImt1bWFtb3RvLmt1bWFtb3RvLmpwIiwibWFzaGlraS5rdW1hbW90by5qcCIsIm1pZnVuZS5rdW1hbW90by5qcCIsIm1pbmFtYXRhLmt1bWFtb3RvLmpwIiwibWluYW1pb2d1bmkua3VtYW1vdG8uanAiLCJuYWdhc3Uua3VtYW1v'@; put 'dG8uanAiLCJuaXNoaWhhcmEua3VtYW1vdG8uanAiLCJvZ3VuaS5rdW1hbW90by5qcCIsIm96dS5rdW1hbW90by5qcCIsInN1bW90by5rdW1hbW90by5qcCIsInRha2Ftb3JpLmt1bWFtb3RvLmpwIiwidWtpLmt1bWFtb3RvLmpwIiwidXRvLmt1bWFtb3RvLmpwIiwieWFtYWdhLmt1bWFtb3Rv'@; put 'LmpwIiwieWFtYXRvLmt1bWFtb3RvLmpwIiwieWF0c3VzaGlyby5rdW1hbW90by5qcCIsImF5YWJlLmt5b3RvLmpwIiwiZnVrdWNoaXlhbWEua3lvdG8uanAiLCJoaWdhc2hpeWFtYS5reW90by5qcCIsImlkZS5reW90by5qcCIsImluZS5reW90by5qcCIsImpveW8ua3lvdG8uanAiLCJrYW1l'@; put 'b2thLmt5b3RvLmpwIiwia2Ftby5reW90by5qcCIsImtpdGEua3lvdG8uanAiLCJraXp1Lmt5b3RvLmpwIiwia3VtaXlhbWEua3lvdG8uanAiLCJreW90YW1iYS5reW90by5qcCIsImt5b3RhbmFiZS5reW90by5qcCIsImt5b3RhbmdvLmt5b3RvLmpwIiwibWFpenVydS5reW90by5qcCIsIm1p'@; put 'bmFtaS5reW90by5qcCIsIm1pbmFtaXlhbWFzaGlyby5reW90by5qcCIsIm1peWF6dS5reW90by5qcCIsIm11a28ua3lvdG8uanAiLCJuYWdhb2tha3lvLmt5b3RvLmpwIiwibmFrYWd5by5reW90by5qcCIsIm5hbnRhbi5reW90by5qcCIsIm95YW1hemFraS5reW90by5qcCIsInNha3lvLmt5'@; put 'b3RvLmpwIiwic2Vpa2Eua3lvdG8uanAiLCJ0YW5hYmUua3lvdG8uanAiLCJ1amkua3lvdG8uanAiLCJ1aml0YXdhcmEua3lvdG8uanAiLCJ3YXp1a2Eua3lvdG8uanAiLCJ5YW1hc2hpbmEua3lvdG8uanAiLCJ5YXdhdGEua3lvdG8uanAiLCJhc2FoaS5taWUuanAiLCJpbmFiZS5taWUuanAi'@; put 'LCJpc2UubWllLmpwIiwia2FtZXlhbWEubWllLmpwIiwia2F3YWdvZS5taWUuanAiLCJraWhvLm1pZS5qcCIsImtpc29zYWtpLm1pZS5qcCIsImtpd2EubWllLmpwIiwia29tb25vLm1pZS5qcCIsImt1bWFuby5taWUuanAiLCJrdXdhbmEubWllLmpwIiwibWF0c3VzYWthLm1pZS5qcCIsIm1l'@; put 'aXdhLm1pZS5qcCIsIm1paGFtYS5taWUuanAiLCJtaW5hbWlpc2UubWllLmpwIiwibWlzdWdpLm1pZS5qcCIsIm1peWFtYS5taWUuanAiLCJuYWJhcmkubWllLmpwIiwic2hpbWEubWllLmpwIiwic3V6dWthLm1pZS5qcCIsInRhZG8ubWllLmpwIiwidGFpa2kubWllLmpwIiwidGFraS5taWUu'@; put 'anAiLCJ0YW1ha2kubWllLmpwIiwidG9iYS5taWUuanAiLCJ0c3UubWllLmpwIiwidWRvbm8ubWllLmpwIiwidXJlc2hpbm8ubWllLmpwIiwid2F0YXJhaS5taWUuanAiLCJ5b2trYWljaGkubWllLmpwIiwiZnVydWthd2EubWl5YWdpLmpwIiwiaGlnYXNoaW1hdHN1c2hpbWEubWl5YWdpLmpw'@; put 'IiwiaXNoaW5vbWFraS5taXlhZ2kuanAiLCJpd2FudW1hLm1peWFnaS5qcCIsImtha3VkYS5taXlhZ2kuanAiLCJrYW1pLm1peWFnaS5qcCIsImthd2FzYWtpLm1peWFnaS5qcCIsIm1hcnVtb3JpLm1peWFnaS5qcCIsIm1hdHN1c2hpbWEubWl5YWdpLmpwIiwibWluYW1pc2FucmlrdS5taXlh'@; put 'Z2kuanAiLCJtaXNhdG8ubWl5YWdpLmpwIiwibXVyYXRhLm1peWFnaS5qcCIsIm5hdG9yaS5taXlhZ2kuanAiLCJvZ2F3YXJhLm1peWFnaS5qcCIsIm9oaXJhLm1peWFnaS5qcCIsIm9uYWdhd2EubWl5YWdpLmpwIiwib3Nha2kubWl5YWdpLmpwIiwicmlmdS5taXlhZ2kuanAiLCJzZW1pbmUu'@; put 'bWl5YWdpLmpwIiwic2hpYmF0YS5taXlhZ2kuanAiLCJzaGljaGlrYXNodWt1Lm1peWFnaS5qcCIsInNoaWthbWEubWl5YWdpLmpwIiwic2hpb2dhbWEubWl5YWdpLmpwIiwic2hpcm9pc2hpLm1peWFnaS5qcCIsInRhZ2Fqby5taXlhZ2kuanAiLCJ0YWl3YS5taXlhZ2kuanAiLCJ0b21lLm1p'@; put 'eWFnaS5qcCIsInRvbWl5YS5taXlhZ2kuanAiLCJ3YWt1eWEubWl5YWdpLmpwIiwid2F0YXJpLm1peWFnaS5qcCIsInlhbWFtb3RvLm1peWFnaS5qcCIsInphby5taXlhZ2kuanAiLCJheWEubWl5YXpha2kuanAiLCJlYmluby5taXlhemFraS5qcCIsImdva2FzZS5taXlhemFraS5qcCIsImh5'@; put 'dWdhLm1peWF6YWtpLmpwIiwia2Fkb2dhd2EubWl5YXpha2kuanAiLCJrYXdhbWluYW1pLm1peWF6YWtpLmpwIiwia2lqby5taXlhemFraS5qcCIsImtpdGFnYXdhLm1peWF6YWtpLmpwIiwia2l0YWthdGEubWl5YXpha2kuanAiLCJraXRhdXJhLm1peWF6YWtpLmpwIiwia29iYXlhc2hpLm1p'@; put 'eWF6YWtpLmpwIiwia3VuaXRvbWkubWl5YXpha2kuanAiLCJrdXNoaW1hLm1peWF6YWtpLmpwIiwibWltYXRhLm1peWF6YWtpLmpwIiwibWl5YWtvbm9qby5taXlhemFraS5qcCIsIm1peWF6YWtpLm1peWF6YWtpLmpwIiwibW9yb3RzdWthLm1peWF6YWtpLmpwIiwibmljaGluYW4ubWl5YXph'@; put 'a2kuanAiLCJuaXNoaW1lcmEubWl5YXpha2kuanAiLCJub2Jlb2thLm1peWF6YWtpLmpwIiwic2FpdG8ubWl5YXpha2kuanAiLCJzaGlpYmEubWl5YXpha2kuanAiLCJzaGludG9taS5taXlhemFraS5qcCIsInRha2FoYXJ1Lm1peWF6YWtpLmpwIiwidGFrYW5hYmUubWl5YXpha2kuanAiLCJ0'@; put 'YWthemFraS5taXlhemFraS5qcCIsInRzdW5vLm1peWF6YWtpLmpwIiwiYWNoaS5uYWdhbm8uanAiLCJhZ2VtYXRzdS5uYWdhbm8uanAiLCJhbmFuLm5hZ2Fuby5qcCIsImFva2kubmFnYW5vLmpwIiwiYXNhaGkubmFnYW5vLmpwIiwiYXp1bWluby5uYWdhbm8uanAiLCJjaGlrdWhva3UubmFn'@; put 'YW5vLmpwIiwiY2hpa3VtYS5uYWdhbm8uanAiLCJjaGluby5uYWdhbm8uanAiLCJmdWppbWkubmFnYW5vLmpwIiwiaGFrdWJhLm5hZ2Fuby5qcCIsImhhcmEubmFnYW5vLmpwIiwiaGlyYXlhLm5hZ2Fuby5qcCIsImlpZGEubmFnYW5vLmpwIiwiaWlqaW1hLm5hZ2Fuby5qcCIsImlpeWFtYS5u'@; put 'YWdhbm8uanAiLCJpaXp1bmEubmFnYW5vLmpwIiwiaWtlZGEubmFnYW5vLmpwIiwiaWt1c2FrYS5uYWdhbm8uanAiLCJpbmEubmFnYW5vLmpwIiwia2FydWl6YXdhLm5hZ2Fuby5qcCIsImthd2FrYW1pLm5hZ2Fuby5qcCIsImtpc28ubmFnYW5vLmpwIiwia2lzb2Z1a3VzaGltYS5uYWdhbm8u'@; put 'anAiLCJraXRhYWlraS5uYWdhbm8uanAiLCJrb21hZ2FuZS5uYWdhbm8uanAiLCJrb21vcm8ubmFnYW5vLmpwIiwibWF0c3VrYXdhLm5hZ2Fuby5qcCIsIm1hdHN1bW90by5uYWdhbm8uanAiLCJtaWFzYS5uYWdhbm8uanAiLCJtaW5hbWlhaWtpLm5hZ2Fuby5qcCIsIm1pbmFtaW1ha2kubmFn'@; put 'YW5vLmpwIiwibWluYW1pbWlub3dhLm5hZ2Fuby5qcCIsIm1pbm93YS5uYWdhbm8uanAiLCJtaXlhZGEubmFnYW5vLmpwIiwibWl5b3RhLm5hZ2Fuby5qcCIsIm1vY2hpenVraS5uYWdhbm8uanAiLCJuYWdhbm8ubmFnYW5vLmpwIiwibmFnYXdhLm5hZ2Fuby5qcCIsIm5hZ2lzby5uYWdhbm8u'@; put 'anAiLCJuYWthZ2F3YS5uYWdhbm8uanAiLCJuYWthbm8ubmFnYW5vLmpwIiwibm96YXdhb25zZW4ubmFnYW5vLmpwIiwib2J1c2UubmFnYW5vLmpwIiwib2dhd2EubmFnYW5vLmpwIiwib2theWEubmFnYW5vLmpwIiwib21hY2hpLm5hZ2Fuby5qcCIsIm9taS5uYWdhbm8uanAiLCJvb2t1d2Eu'@; put 'bmFnYW5vLmpwIiwib29zaGlrYS5uYWdhbm8uanAiLCJvdGFraS5uYWdhbm8uanAiLCJvdGFyaS5uYWdhbm8uanAiLCJzYWthZS5uYWdhbm8uanAiLCJzYWtha2kubmFnYW5vLmpwIiwic2FrdS5uYWdhbm8uanAiLCJzYWt1aG8ubmFnYW5vLmpwIiwic2hpbW9zdXdhLm5hZ2Fuby5qcCIsInNo'@; put 'aW5hbm9tYWNoaS5uYWdhbm8uanAiLCJzaGlvamlyaS5uYWdhbm8uanAiLCJzdXdhLm5hZ2Fuby5qcCIsInN1emFrYS5uYWdhbm8uanAiLCJ0YWthZ2kubmFnYW5vLmpwIiwidGFrYW1vcmkubmFnYW5vLmpwIiwidGFrYXlhbWEubmFnYW5vLmpwIiwidGF0ZXNoaW5hLm5hZ2Fuby5qcCIsInRh'@; put 'dHN1bm8ubmFnYW5vLmpwIiwidG9nYWt1c2hpLm5hZ2Fuby5qcCIsInRvZ3VyYS5uYWdhbm8uanAiLCJ0b21pLm5hZ2Fuby5qcCIsInVlZGEubmFnYW5vLmpwIiwid2FkYS5uYWdhbm8uanAiLCJ5YW1hZ2F0YS5uYWdhbm8uanAiLCJ5YW1hbm91Y2hpLm5hZ2Fuby5qcCIsInlhc2FrYS5uYWdh'@; put 'bm8uanAiLCJ5YXN1b2thLm5hZ2Fuby5qcCIsImNoaWppd2EubmFnYXNha2kuanAiLCJmdXRzdS5uYWdhc2FraS5qcCIsImdvdG8ubmFnYXNha2kuanAiLCJoYXNhbWkubmFnYXNha2kuanAiLCJoaXJhZG8ubmFnYXNha2kuanAiLCJpa2kubmFnYXNha2kuanAiLCJpc2FoYXlhLm5hZ2FzYWtp'@; put 'LmpwIiwia2F3YXRhbmEubmFnYXNha2kuanAiLCJrdWNoaW5vdHN1Lm5hZ2FzYWtpLmpwIiwibWF0c3V1cmEubmFnYXNha2kuanAiLCJuYWdhc2FraS5uYWdhc2FraS5qcCIsIm9iYW1hLm5hZ2FzYWtpLmpwIiwib211cmEubmFnYXNha2kuanAiLCJvc2V0by5uYWdhc2FraS5qcCIsInNhaWth'@; put 'aS5uYWdhc2FraS5qcCIsInNhc2Viby5uYWdhc2FraS5qcCIsInNlaWhpLm5hZ2FzYWtpLmpwIiwic2hpbWFiYXJhLm5hZ2FzYWtpLmpwIiwic2hpbmthbWlnb3RvLm5hZ2FzYWtpLmpwIiwidG9naXRzdS5uYWdhc2FraS5qcCIsInRzdXNoaW1hLm5hZ2FzYWtpLmpwIiwidW56ZW4ubmFnYXNh'@; put 'a2kuanAiLCJhbmRvLm5hcmEuanAiLCJnb3NlLm5hcmEuanAiLCJoZWd1cmkubmFyYS5qcCIsImhpZ2FzaGl5b3NoaW5vLm5hcmEuanAiLCJpa2FydWdhLm5hcmEuanAiLCJpa29tYS5uYXJhLmpwIiwia2FtaWtpdGF5YW1hLm5hcmEuanAiLCJrYW5tYWtpLm5hcmEuanAiLCJrYXNoaWJhLm5h'@; put 'cmEuanAiLCJrYXNoaWhhcmEubmFyYS5qcCIsImthdHN1cmFnaS5uYXJhLmpwIiwia2F3YWkubmFyYS5qcCIsImthd2FrYW1pLm5hcmEuanAiLCJrYXdhbmlzaGkubmFyYS5qcCIsImtvcnlvLm5hcmEuanAiLCJrdXJvdGFraS5uYXJhLmpwIiwibWl0c3VlLm5hcmEuanAiLCJtaXlha2UubmFy'@; put 'YS5qcCIsIm5hcmEubmFyYS5qcCIsIm5vc2VnYXdhLm5hcmEuanAiLCJvamkubmFyYS5qcCIsIm91ZGEubmFyYS5qcCIsIm95b2RvLm5hcmEuanAiLCJzYWt1cmFpLm5hcmEuanAiLCJzYW5nby5uYXJhLmpwIiwic2hpbW9pY2hpLm5hcmEuanAiLCJzaGltb2tpdGF5YW1hLm5hcmEuanAiLCJz'@; put 'aGluam8ubmFyYS5qcCIsInNvbmkubmFyYS5qcCIsInRha2F0b3JpLm5hcmEuanAiLCJ0YXdhcmFtb3RvLm5hcmEuanAiLCJ0ZW5rYXdhLm5hcmEuanAiLCJ0ZW5yaS5uYXJhLmpwIiwidWRhLm5hcmEuanAiLCJ5YW1hdG9rb3JpeWFtYS5uYXJhLmpwIiwieWFtYXRvdGFrYWRhLm5hcmEuanAi'@; put 'LCJ5YW1hem9lLm5hcmEuanAiLCJ5b3NoaW5vLm5hcmEuanAiLCJhZ2EubmlpZ2F0YS5qcCIsImFnYW5vLm5paWdhdGEuanAiLCJnb3Nlbi5uaWlnYXRhLmpwIiwiaXRvaWdhd2EubmlpZ2F0YS5qcCIsIml6dW1vemFraS5uaWlnYXRhLmpwIiwiam9ldHN1Lm5paWdhdGEuanAiLCJrYW1vLm5p'@; put 'aWdhdGEuanAiLCJrYXJpd2EubmlpZ2F0YS5qcCIsImthc2hpd2F6YWtpLm5paWdhdGEuanAiLCJtaW5hbWl1b251bWEubmlpZ2F0YS5qcCIsIm1pdHN1a2UubmlpZ2F0YS5qcCIsIm11aWthLm5paWdhdGEuanAiLCJtdXJha2FtaS5uaWlnYXRhLmpwIiwibXlva28ubmlpZ2F0YS5qcCIsIm5h'@; put 'Z2Fva2EubmlpZ2F0YS5qcCIsIm5paWdhdGEubmlpZ2F0YS5qcCIsIm9qaXlhLm5paWdhdGEuanAiLCJvbWkubmlpZ2F0YS5qcCIsInNhZG8ubmlpZ2F0YS5qcCIsInNhbmpvLm5paWdhdGEuanAiLCJzZWlyby5uaWlnYXRhLmpwIiwic2Vpcm91Lm5paWdhdGEuanAiLCJzZWtpa2F3YS5uaWln'@; put 'YXRhLmpwIiwic2hpYmF0YS5uaWlnYXRhLmpwIiwidGFnYW1pLm5paWdhdGEuanAiLCJ0YWluYWkubmlpZ2F0YS5qcCIsInRvY2hpby5uaWlnYXRhLmpwIiwidG9rYW1hY2hpLm5paWdhdGEuanAiLCJ0c3ViYW1lLm5paWdhdGEuanAiLCJ0c3VuYW4ubmlpZ2F0YS5qcCIsInVvbnVtYS5uaWln'@; put 'YXRhLmpwIiwieWFoaWtvLm5paWdhdGEuanAiLCJ5b2l0YS5uaWlnYXRhLmpwIiwieXV6YXdhLm5paWdhdGEuanAiLCJiZXBwdS5vaXRhLmpwIiwiYnVuZ29vbm8ub2l0YS5qcCIsImJ1bmdvdGFrYWRhLm9pdGEuanAiLCJoYXNhbWEub2l0YS5qcCIsImhpamkub2l0YS5qcCIsImhpbWVzaGlt'@; put 'YS5vaXRhLmpwIiwiaGl0YS5vaXRhLmpwIiwia2FtaXRzdWUub2l0YS5qcCIsImtva29ub2Uub2l0YS5qcCIsImt1anUub2l0YS5qcCIsImt1bmlzYWtpLm9pdGEuanAiLCJrdXN1Lm9pdGEuanAiLCJvaXRhLm9pdGEuanAiLCJzYWlraS5vaXRhLmpwIiwidGFrZXRhLm9pdGEuanAiLCJ0c3Vr'@; put 'dW1pLm9pdGEuanAiLCJ1c2Eub2l0YS5qcCIsInVzdWtpLm9pdGEuanAiLCJ5dWZ1Lm9pdGEuanAiLCJha2Fpd2Eub2theWFtYS5qcCIsImFzYWt1Y2hpLm9rYXlhbWEuanAiLCJiaXplbi5va2F5YW1hLmpwIiwiaGF5YXNoaW1hLm9rYXlhbWEuanAiLCJpYmFyYS5va2F5YW1hLmpwIiwia2Fn'@; put 'YW1pbm8ub2theWFtYS5qcCIsImthc2Fva2Eub2theWFtYS5qcCIsImtpYmljaHVvLm9rYXlhbWEuanAiLCJrdW1lbmFuLm9rYXlhbWEuanAiLCJrdXJhc2hpa2kub2theWFtYS5qcCIsIm1hbml3YS5va2F5YW1hLmpwIiwibWlzYWtpLm9rYXlhbWEuanAiLCJuYWdpLm9rYXlhbWEuanAiLCJu'@; put 'aWltaS5va2F5YW1hLmpwIiwibmlzaGlhd2FrdXJhLm9rYXlhbWEuanAiLCJva2F5YW1hLm9rYXlhbWEuanAiLCJzYXRvc2hvLm9rYXlhbWEuanAiLCJzZXRvdWNoaS5va2F5YW1hLmpwIiwic2hpbmpvLm9rYXlhbWEuanAiLCJzaG9vLm9rYXlhbWEuanAiLCJzb2phLm9rYXlhbWEuanAiLCJ0'@; put 'YWthaGFzaGkub2theWFtYS5qcCIsInRhbWFuby5va2F5YW1hLmpwIiwidHN1eWFtYS5va2F5YW1hLmpwIiwid2FrZS5va2F5YW1hLmpwIiwieWFrYWdlLm9rYXlhbWEuanAiLCJhZ3VuaS5va2luYXdhLmpwIiwiZ2lub3dhbi5va2luYXdhLmpwIiwiZ2lub3phLm9raW5hd2EuanAiLCJndXNo'@; put 'aWthbWkub2tpbmF3YS5qcCIsImhhZWJhcnUub2tpbmF3YS5qcCIsImhpZ2FzaGkub2tpbmF3YS5qcCIsImhpcmFyYS5va2luYXdhLmpwIiwiaWhleWEub2tpbmF3YS5qcCIsImlzaGlnYWtpLm9raW5hd2EuanAiLCJpc2hpa2F3YS5va2luYXdhLmpwIiwiaXRvbWFuLm9raW5hd2EuanAiLCJp'@; put 'emVuYS5va2luYXdhLmpwIiwia2FkZW5hLm9raW5hd2EuanAiLCJraW4ub2tpbmF3YS5qcCIsImtpdGFkYWl0by5va2luYXdhLmpwIiwia2l0YW5ha2FndXN1a3Uub2tpbmF3YS5qcCIsImt1bWVqaW1hLm9raW5hd2EuanAiLCJrdW5pZ2FtaS5va2luYXdhLmpwIiwibWluYW1pZGFpdG8ub2tp'@; put 'bmF3YS5qcCIsIm1vdG9idS5va2luYXdhLmpwIiwibmFnby5va2luYXdhLmpwIiwibmFoYS5va2luYXdhLmpwIiwibmFrYWd1c3VrdS5va2luYXdhLmpwIiwibmFraWppbi5va2luYXdhLmpwIiwibmFuam8ub2tpbmF3YS5qcCIsIm5pc2hpaGFyYS5va2luYXdhLmpwIiwib2dpbWkub2tpbmF3'@; put 'YS5qcCIsIm9raW5hd2Eub2tpbmF3YS5qcCIsIm9ubmEub2tpbmF3YS5qcCIsInNoaW1vamkub2tpbmF3YS5qcCIsInRha2V0b21pLm9raW5hd2EuanAiLCJ0YXJhbWEub2tpbmF3YS5qcCIsInRva2FzaGlraS5va2luYXdhLmpwIiwidG9taWd1c3VrdS5va2luYXdhLmpwIiwidG9uYWtpLm9r'@; put 'aW5hd2EuanAiLCJ1cmFzb2Uub2tpbmF3YS5qcCIsInVydW1hLm9raW5hd2EuanAiLCJ5YWVzZS5va2luYXdhLmpwIiwieW9taXRhbi5va2luYXdhLmpwIiwieW9uYWJhcnUub2tpbmF3YS5qcCIsInlvbmFndW5pLm9raW5hd2EuanAiLCJ6YW1hbWkub2tpbmF3YS5qcCIsImFiZW5vLm9zYWth'@; put 'LmpwIiwiY2hpaGF5YWFrYXNha2Eub3Nha2EuanAiLCJjaHVvLm9zYWthLmpwIiwiZGFpdG8ub3Nha2EuanAiLCJmdWppaWRlcmEub3Nha2EuanAiLCJoYWJpa2luby5vc2FrYS5qcCIsImhhbm5hbi5vc2FrYS5qcCIsImhpZ2FzaGlvc2FrYS5vc2FrYS5qcCIsImhpZ2FzaGlzdW1peW9zaGku'@; put 'b3Nha2EuanAiLCJoaWdhc2hpeW9kb2dhd2Eub3Nha2EuanAiLCJoaXJha2F0YS5vc2FrYS5qcCIsImliYXJha2kub3Nha2EuanAiLCJpa2VkYS5vc2FrYS5qcCIsIml6dW1pLm9zYWthLmpwIiwiaXp1bWlvdHN1Lm9zYWthLmpwIiwiaXp1bWlzYW5vLm9zYWthLmpwIiwia2Fkb21hLm9zYWth'@; put 'LmpwIiwia2FpenVrYS5vc2FrYS5qcCIsImthbmFuLm9zYWthLmpwIiwia2FzaGl3YXJhLm9zYWthLmpwIiwia2F0YW5vLm9zYWthLmpwIiwia2F3YWNoaW5hZ2Fuby5vc2FrYS5qcCIsImtpc2hpd2FkYS5vc2FrYS5qcCIsImtpdGEub3Nha2EuanAiLCJrdW1hdG9yaS5vc2FrYS5qcCIsIm1h'@; put 'dHN1YmFyYS5vc2FrYS5qcCIsIm1pbmF0by5vc2FrYS5qcCIsIm1pbm9oLm9zYWthLmpwIiwibWlzYWtpLm9zYWthLmpwIiwibW9yaWd1Y2hpLm9zYWthLmpwIiwibmV5YWdhd2Eub3Nha2EuanAiLCJuaXNoaS5vc2FrYS5qcCIsIm5vc2Uub3Nha2EuanAiLCJvc2FrYXNheWFtYS5vc2FrYS5q'@; put 'cCIsInNha2FpLm9zYWthLmpwIiwic2F5YW1hLm9zYWthLmpwIiwic2VubmFuLm9zYWthLmpwIiwic2V0dHN1Lm9zYWthLmpwIiwic2hpam9uYXdhdGUub3Nha2EuanAiLCJzaGltYW1vdG8ub3Nha2EuanAiLCJzdWl0YS5vc2FrYS5qcCIsInRhZGFva2Eub3Nha2EuanAiLCJ0YWlzaGkub3Nh'@; put 'a2EuanAiLCJ0YWppcmkub3Nha2EuanAiLCJ0YWthaXNoaS5vc2FrYS5qcCIsInRha2F0c3VraS5vc2FrYS5qcCIsInRvbmRhYmF5YXNoaS5vc2FrYS5qcCIsInRveW9uYWthLm9zYWthLmpwIiwidG95b25vLm9zYWthLmpwIiwieWFvLm9zYWthLmpwIiwiYXJpYWtlLnNhZ2EuanAiLCJhcml0'@; put 'YS5zYWdhLmpwIiwiZnVrdWRvbWkuc2FnYS5qcCIsImdlbmthaS5zYWdhLmpwIiwiaGFtYXRhbWEuc2FnYS5qcCIsImhpemVuLnNhZ2EuanAiLCJpbWFyaS5zYWdhLmpwIiwia2FtaW1pbmUuc2FnYS5qcCIsImthbnpha2kuc2FnYS5qcCIsImthcmF0c3Uuc2FnYS5qcCIsImthc2hpbWEuc2Fn'@; put 'YS5qcCIsImtpdGFnYXRhLnNhZ2EuanAiLCJraXRhaGF0YS5zYWdhLmpwIiwia2l5YW1hLnNhZ2EuanAiLCJrb3Vob2t1LnNhZ2EuanAiLCJreXVyYWdpLnNhZ2EuanAiLCJuaXNoaWFyaXRhLnNhZ2EuanAiLCJvZ2kuc2FnYS5qcCIsIm9tYWNoaS5zYWdhLmpwIiwib3VjaGkuc2FnYS5qcCIs'@; put 'InNhZ2Euc2FnYS5qcCIsInNoaXJvaXNoaS5zYWdhLmpwIiwidGFrdS5zYWdhLmpwIiwidGFyYS5zYWdhLmpwIiwidG9zdS5zYWdhLmpwIiwieW9zaGlub2dhcmkuc2FnYS5qcCIsImFyYWthd2Euc2FpdGFtYS5qcCIsImFzYWthLnNhaXRhbWEuanAiLCJjaGljaGlidS5zYWl0YW1hLmpwIiwi'@; put 'ZnVqaW1pLnNhaXRhbWEuanAiLCJmdWppbWluby5zYWl0YW1hLmpwIiwiZnVrYXlhLnNhaXRhbWEuanAiLCJoYW5uby5zYWl0YW1hLmpwIiwiaGFueXUuc2FpdGFtYS5qcCIsImhhc3VkYS5zYWl0YW1hLmpwIiwiaGF0b2dheWEuc2FpdGFtYS5qcCIsImhhdG95YW1hLnNhaXRhbWEuanAiLCJo'@; put 'aWRha2Euc2FpdGFtYS5qcCIsImhpZ2FzaGljaGljaGlidS5zYWl0YW1hLmpwIiwiaGlnYXNoaW1hdHN1eWFtYS5zYWl0YW1hLmpwIiwiaG9uam8uc2FpdGFtYS5qcCIsImluYS5zYWl0YW1hLmpwIiwiaXJ1bWEuc2FpdGFtYS5qcCIsIml3YXRzdWtpLnNhaXRhbWEuanAiLCJrYW1paXp1bWku'@; put 'c2FpdGFtYS5qcCIsImthbWlrYXdhLnNhaXRhbWEuanAiLCJrYW1pc2F0by5zYWl0YW1hLmpwIiwia2FzdWthYmUuc2FpdGFtYS5qcCIsImthd2Fnb2Uuc2FpdGFtYS5qcCIsImthd2FndWNoaS5zYWl0YW1hLmpwIiwia2F3YWppbWEuc2FpdGFtYS5qcCIsImthem8uc2FpdGFtYS5qcCIsImtp'@; put 'dGFtb3RvLnNhaXRhbWEuanAiLCJrb3NoaWdheWEuc2FpdGFtYS5qcCIsImtvdW5vc3Uuc2FpdGFtYS5qcCIsImt1a2kuc2FpdGFtYS5qcCIsImt1bWFnYXlhLnNhaXRhbWEuanAiLCJtYXRzdWJ1c2hpLnNhaXRhbWEuanAiLCJtaW5hbm8uc2FpdGFtYS5qcCIsIm1pc2F0by5zYWl0YW1hLmpw'@; put 'IiwibWl5YXNoaXJvLnNhaXRhbWEuanAiLCJtaXlvc2hpLnNhaXRhbWEuanAiLCJtb3JveWFtYS5zYWl0YW1hLmpwIiwibmFnYXRvcm8uc2FpdGFtYS5qcCIsIm5hbWVnYXdhLnNhaXRhbWEuanAiLCJuaWl6YS5zYWl0YW1hLmpwIiwib2dhbm8uc2FpdGFtYS5qcCIsIm9nYXdhLnNhaXRhbWEu'@; put 'anAiLCJvZ29zZS5zYWl0YW1hLmpwIiwib2tlZ2F3YS5zYWl0YW1hLmpwIiwib21peWEuc2FpdGFtYS5qcCIsIm90YWtpLnNhaXRhbWEuanAiLCJyYW56YW4uc2FpdGFtYS5qcCIsInJ5b2thbWkuc2FpdGFtYS5qcCIsInNhaXRhbWEuc2FpdGFtYS5qcCIsInNha2Fkby5zYWl0YW1hLmpwIiwi'@; put 'c2F0dGUuc2FpdGFtYS5qcCIsInNheWFtYS5zYWl0YW1hLmpwIiwic2hpa2kuc2FpdGFtYS5qcCIsInNoaXJhb2thLnNhaXRhbWEuanAiLCJzb2thLnNhaXRhbWEuanAiLCJzdWdpdG8uc2FpdGFtYS5qcCIsInRvZGEuc2FpdGFtYS5qcCIsInRva2lnYXdhLnNhaXRhbWEuanAiLCJ0b2tvcm96'@; put 'YXdhLnNhaXRhbWEuanAiLCJ0c3VydWdhc2hpbWEuc2FpdGFtYS5qcCIsInVyYXdhLnNhaXRhbWEuanAiLCJ3YXJhYmkuc2FpdGFtYS5qcCIsInlhc2hpby5zYWl0YW1hLmpwIiwieW9rb3plLnNhaXRhbWEuanAiLCJ5b25vLnNhaXRhbWEuanAiLCJ5b3JpaS5zYWl0YW1hLmpwIiwieW9zaGlk'@; put 'YS5zYWl0YW1hLmpwIiwieW9zaGlrYXdhLnNhaXRhbWEuanAiLCJ5b3NoaW1pLnNhaXRhbWEuanAiLCJhaXNoby5zaGlnYS5qcCIsImdhbW8uc2hpZ2EuanAiLCJoaWdhc2hpb21pLnNoaWdhLmpwIiwiaGlrb25lLnNoaWdhLmpwIiwia29rYS5zaGlnYS5qcCIsImtvbmFuLnNoaWdhLmpwIiwi'@; put 'a29zZWkuc2hpZ2EuanAiLCJrb3RvLnNoaWdhLmpwIiwia3VzYXRzdS5zaGlnYS5qcCIsIm1haWJhcmEuc2hpZ2EuanAiLCJtb3JpeWFtYS5zaGlnYS5qcCIsIm5hZ2FoYW1hLnNoaWdhLmpwIiwibmlzaGlhemFpLnNoaWdhLmpwIiwibm90b2dhd2Euc2hpZ2EuanAiLCJvbWloYWNoaW1hbi5z'@; put 'aGlnYS5qcCIsIm90c3Uuc2hpZ2EuanAiLCJyaXR0by5zaGlnYS5qcCIsInJ5dW9oLnNoaWdhLmpwIiwidGFrYXNoaW1hLnNoaWdhLmpwIiwidGFrYXRzdWtpLnNoaWdhLmpwIiwidG9yYWhpbWUuc2hpZ2EuanAiLCJ0b3lvc2F0by5zaGlnYS5qcCIsInlhc3Uuc2hpZ2EuanAiLCJha2FnaS5z'@; put 'aGltYW5lLmpwIiwiYW1hLnNoaW1hbmUuanAiLCJnb3RzdS5zaGltYW5lLmpwIiwiaGFtYWRhLnNoaW1hbmUuanAiLCJoaWdhc2hpaXp1bW8uc2hpbWFuZS5qcCIsImhpa2F3YS5zaGltYW5lLmpwIiwiaGlraW1pLnNoaW1hbmUuanAiLCJpenVtby5zaGltYW5lLmpwIiwia2FraW5va2kuc2hp'@; put 'bWFuZS5qcCIsIm1hc3VkYS5zaGltYW5lLmpwIiwibWF0c3VlLnNoaW1hbmUuanAiLCJtaXNhdG8uc2hpbWFuZS5qcCIsIm5pc2hpbm9zaGltYS5zaGltYW5lLmpwIiwib2hkYS5zaGltYW5lLmpwIiwib2tpbm9zaGltYS5zaGltYW5lLmpwIiwib2t1aXp1bW8uc2hpbWFuZS5qcCIsInNoaW1h'@; put 'bmUuc2hpbWFuZS5qcCIsInRhbWF5dS5zaGltYW5lLmpwIiwidHN1d2Fuby5zaGltYW5lLmpwIiwidW5uYW4uc2hpbWFuZS5qcCIsInlha3Vtby5zaGltYW5lLmpwIiwieWFzdWdpLnNoaW1hbmUuanAiLCJ5YXRzdWthLnNoaW1hbmUuanAiLCJhcmFpLnNoaXp1b2thLmpwIiwiYXRhbWkuc2hp'@; put 'enVva2EuanAiLCJmdWppLnNoaXp1b2thLmpwIiwiZnVqaWVkYS5zaGl6dW9rYS5qcCIsImZ1amlrYXdhLnNoaXp1b2thLmpwIiwiZnVqaW5vbWl5YS5zaGl6dW9rYS5qcCIsImZ1a3Vyb2kuc2hpenVva2EuanAiLCJnb3RlbWJhLnNoaXp1b2thLmpwIiwiaGFpYmFyYS5zaGl6dW9rYS5qcCIs'@; put 'ImhhbWFtYXRzdS5zaGl6dW9rYS5qcCIsImhpZ2FzaGlpenUuc2hpenVva2EuanAiLCJpdG8uc2hpenVva2EuanAiLCJpd2F0YS5zaGl6dW9rYS5qcCIsIml6dS5zaGl6dW9rYS5qcCIsIml6dW5va3VuaS5zaGl6dW9rYS5qcCIsImtha2VnYXdhLnNoaXp1b2thLmpwIiwia2FubmFtaS5zaGl6'@; put 'dW9rYS5qcCIsImthd2FuZWhvbi5zaGl6dW9rYS5qcCIsImthd2F6dS5zaGl6dW9rYS5qcCIsImtpa3VnYXdhLnNoaXp1b2thLmpwIiwia29zYWkuc2hpenVva2EuanAiLCJtYWtpbm9oYXJhLnNoaXp1b2thLmpwIiwibWF0c3V6YWtpLnNoaXp1b2thLmpwIiwibWluYW1paXp1LnNoaXp1b2th'@; put 'LmpwIiwibWlzaGltYS5zaGl6dW9rYS5qcCIsIm1vcmltYWNoaS5zaGl6dW9rYS5qcCIsIm5pc2hpaXp1LnNoaXp1b2thLmpwIiwibnVtYXp1LnNoaXp1b2thLmpwIiwib21hZXpha2kuc2hpenVva2EuanAiLCJzaGltYWRhLnNoaXp1b2thLmpwIiwic2hpbWl6dS5zaGl6dW9rYS5qcCIsInNo'@; put 'aW1vZGEuc2hpenVva2EuanAiLCJzaGl6dW9rYS5zaGl6dW9rYS5qcCIsInN1c29uby5zaGl6dW9rYS5qcCIsInlhaXp1LnNoaXp1b2thLmpwIiwieW9zaGlkYS5zaGl6dW9rYS5qcCIsImFzaGlrYWdhLnRvY2hpZ2kuanAiLCJiYXRvLnRvY2hpZ2kuanAiLCJoYWdhLnRvY2hpZ2kuanAiLCJp'@; put 'Y2hpa2FpLnRvY2hpZ2kuanAiLCJpd2FmdW5lLnRvY2hpZ2kuanAiLCJrYW1pbm9rYXdhLnRvY2hpZ2kuanAiLCJrYW51bWEudG9jaGlnaS5qcCIsImthcmFzdXlhbWEudG9jaGlnaS5qcCIsImt1cm9pc28udG9jaGlnaS5qcCIsIm1hc2hpa28udG9jaGlnaS5qcCIsIm1pYnUudG9jaGlnaS5q'@; put 'cCIsIm1va2EudG9jaGlnaS5qcCIsIm1vdGVnaS50b2NoaWdpLmpwIiwibmFzdS50b2NoaWdpLmpwIiwibmFzdXNoaW9iYXJhLnRvY2hpZ2kuanAiLCJuaWtrby50b2NoaWdpLmpwIiwibmlzaGlrYXRhLnRvY2hpZ2kuanAiLCJub2dpLnRvY2hpZ2kuanAiLCJvaGlyYS50b2NoaWdpLmpwIiwi'@; put 'b2h0YXdhcmEudG9jaGlnaS5qcCIsIm95YW1hLnRvY2hpZ2kuanAiLCJzYWt1cmEudG9jaGlnaS5qcCIsInNhbm8udG9jaGlnaS5qcCIsInNoaW1vdHN1a2UudG9jaGlnaS5qcCIsInNoaW95YS50b2NoaWdpLmpwIiwidGFrYW5lemF3YS50b2NoaWdpLmpwIiwidG9jaGlnaS50b2NoaWdpLmpw'@; put 'IiwidHN1Z2EudG9jaGlnaS5qcCIsInVqaWllLnRvY2hpZ2kuanAiLCJ1dHN1bm9taXlhLnRvY2hpZ2kuanAiLCJ5YWl0YS50b2NoaWdpLmpwIiwiYWl6dW1pLnRva3VzaGltYS5qcCIsImFuYW4udG9rdXNoaW1hLmpwIiwiaWNoaWJhLnRva3VzaGltYS5qcCIsIml0YW5vLnRva3VzaGltYS5q'@; put 'cCIsImthaW5hbi50b2t1c2hpbWEuanAiLCJrb21hdHN1c2hpbWEudG9rdXNoaW1hLmpwIiwibWF0c3VzaGlnZS50b2t1c2hpbWEuanAiLCJtaW1hLnRva3VzaGltYS5qcCIsIm1pbmFtaS50b2t1c2hpbWEuanAiLCJtaXlvc2hpLnRva3VzaGltYS5qcCIsIm11Z2kudG9rdXNoaW1hLmpwIiwi'@; put 'bmFrYWdhd2EudG9rdXNoaW1hLmpwIiwibmFydXRvLnRva3VzaGltYS5qcCIsInNhbmFnb2NoaS50b2t1c2hpbWEuanAiLCJzaGlzaGlrdWkudG9rdXNoaW1hLmpwIiwidG9rdXNoaW1hLnRva3VzaGltYS5qcCIsIndhamlraS50b2t1c2hpbWEuanAiLCJhZGFjaGkudG9reW8uanAiLCJha2ly'@; put 'dW5vLnRva3lvLmpwIiwiYWtpc2hpbWEudG9reW8uanAiLCJhb2dhc2hpbWEudG9reW8uanAiLCJhcmFrYXdhLnRva3lvLmpwIiwiYnVua3lvLnRva3lvLmpwIiwiY2hpeW9kYS50b2t5by5qcCIsImNob2Z1LnRva3lvLmpwIiwiY2h1by50b2t5by5qcCIsImVkb2dhd2EudG9reW8uanAiLCJm'@; put 'dWNodS50b2t5by5qcCIsImZ1c3NhLnRva3lvLmpwIiwiaGFjaGlqby50b2t5by5qcCIsImhhY2hpb2ppLnRva3lvLmpwIiwiaGFtdXJhLnRva3lvLmpwIiwiaGlnYXNoaWt1cnVtZS50b2t5by5qcCIsImhpZ2FzaGltdXJheWFtYS50b2t5by5qcCIsImhpZ2FzaGl5YW1hdG8udG9reW8uanAi'@; put 'LCJoaW5vLnRva3lvLmpwIiwiaGlub2RlLnRva3lvLmpwIiwiaGlub2hhcmEudG9reW8uanAiLCJpbmFnaS50b2t5by5qcCIsIml0YWJhc2hpLnRva3lvLmpwIiwia2F0c3VzaGlrYS50b2t5by5qcCIsImtpdGEudG9reW8uanAiLCJraXlvc2UudG9reW8uanAiLCJrb2RhaXJhLnRva3lvLmpw'@; put 'Iiwia29nYW5laS50b2t5by5qcCIsImtva3VidW5qaS50b2t5by5qcCIsImtvbWFlLnRva3lvLmpwIiwia290by50b2t5by5qcCIsImtvdXp1c2hpbWEudG9reW8uanAiLCJrdW5pdGFjaGkudG9reW8uanAiLCJtYWNoaWRhLnRva3lvLmpwIiwibWVndXJvLnRva3lvLmpwIiwibWluYXRvLnRv'@; put 'a3lvLmpwIiwibWl0YWthLnRva3lvLmpwIiwibWl6dWhvLnRva3lvLmpwIiwibXVzYXNoaW11cmF5YW1hLnRva3lvLmpwIiwibXVzYXNoaW5vLnRva3lvLmpwIiwibmFrYW5vLnRva3lvLmpwIiwibmVyaW1hLnRva3lvLmpwIiwib2dhc2F3YXJhLnRva3lvLmpwIiwib2t1dGFtYS50b2t5by5q'@; put 'cCIsIm9tZS50b2t5by5qcCIsIm9zaGltYS50b2t5by5qcCIsIm90YS50b2t5by5qcCIsInNldGFnYXlhLnRva3lvLmpwIiwic2hpYnV5YS50b2t5by5qcCIsInNoaW5hZ2F3YS50b2t5by5qcCIsInNoaW5qdWt1LnRva3lvLmpwIiwic3VnaW5hbWkudG9reW8uanAiLCJzdW1pZGEudG9reW8u'@; put 'anAiLCJ0YWNoaWthd2EudG9reW8uanAiLCJ0YWl0by50b2t5by5qcCIsInRhbWEudG9reW8uanAiLCJ0b3NoaW1hLnRva3lvLmpwIiwiY2hpenUudG90dG9yaS5qcCIsImhpbm8udG90dG9yaS5qcCIsImthd2FoYXJhLnRvdHRvcmkuanAiLCJrb2dlLnRvdHRvcmkuanAiLCJrb3RvdXJhLnRv'@; put 'dHRvcmkuanAiLCJtaXNhc2EudG90dG9yaS5qcCIsIm5hbmJ1LnRvdHRvcmkuanAiLCJuaWNoaW5hbi50b3R0b3JpLmpwIiwic2FrYWltaW5hdG8udG90dG9yaS5qcCIsInRvdHRvcmkudG90dG9yaS5qcCIsIndha2FzYS50b3R0b3JpLmpwIiwieWF6dS50b3R0b3JpLmpwIiwieW9uYWdvLnRv'@; put 'dHRvcmkuanAiLCJhc2FoaS50b3lhbWEuanAiLCJmdWNodS50b3lhbWEuanAiLCJmdWt1bWl0c3UudG95YW1hLmpwIiwiZnVuYWhhc2hpLnRveWFtYS5qcCIsImhpbWkudG95YW1hLmpwIiwiaW1penUudG95YW1hLmpwIiwiaW5hbWkudG95YW1hLmpwIiwiam9oYW5hLnRveWFtYS5qcCIsImth'@; put 'bWlpY2hpLnRveWFtYS5qcCIsImt1cm9iZS50b3lhbWEuanAiLCJuYWthbmlpa2F3YS50b3lhbWEuanAiLCJuYW1lcmlrYXdhLnRveWFtYS5qcCIsIm5hbnRvLnRveWFtYS5qcCIsIm55dXplbi50b3lhbWEuanAiLCJveWFiZS50b3lhbWEuanAiLCJ0YWlyYS50b3lhbWEuanAiLCJ0YWthb2th'@; put 'LnRveWFtYS5qcCIsInRhdGV5YW1hLnRveWFtYS5qcCIsInRvZ2EudG95YW1hLmpwIiwidG9uYW1pLnRveWFtYS5qcCIsInRveWFtYS50b3lhbWEuanAiLCJ1bmF6dWtpLnRveWFtYS5qcCIsInVvenUudG95YW1hLmpwIiwieWFtYWRhLnRveWFtYS5qcCIsImFyaWRhLndha2F5YW1hLmpwIiwi'@; put 'YXJpZGFnYXdhLndha2F5YW1hLmpwIiwiZ29iby53YWtheWFtYS5qcCIsImhhc2hpbW90by53YWtheWFtYS5qcCIsImhpZGFrYS53YWtheWFtYS5qcCIsImhpcm9nYXdhLndha2F5YW1hLmpwIiwiaW5hbWkud2FrYXlhbWEuanAiLCJpd2FkZS53YWtheWFtYS5qcCIsImthaW5hbi53YWtheWFt'@; put 'YS5qcCIsImthbWl0b25kYS53YWtheWFtYS5qcCIsImthdHN1cmFnaS53YWtheWFtYS5qcCIsImtpbWluby53YWtheWFtYS5qcCIsImtpbm9rYXdhLndha2F5YW1hLmpwIiwia2l0YXlhbWEud2FrYXlhbWEuanAiLCJrb3lhLndha2F5YW1hLmpwIiwia296YS53YWtheWFtYS5qcCIsImtvemFn'@; put 'YXdhLndha2F5YW1hLmpwIiwia3Vkb3lhbWEud2FrYXlhbWEuanAiLCJrdXNoaW1vdG8ud2FrYXlhbWEuanAiLCJtaWhhbWEud2FrYXlhbWEuanAiLCJtaXNhdG8ud2FrYXlhbWEuanAiLCJuYWNoaWthdHN1dXJhLndha2F5YW1hLmpwIiwic2hpbmd1Lndha2F5YW1hLmpwIiwic2hpcmFoYW1h'@; put 'Lndha2F5YW1hLmpwIiwidGFpamkud2FrYXlhbWEuanAiLCJ0YW5hYmUud2FrYXlhbWEuanAiLCJ3YWtheWFtYS53YWtheWFtYS5qcCIsInl1YXNhLndha2F5YW1hLmpwIiwieXVyYS53YWtheWFtYS5qcCIsImFzYWhpLnlhbWFnYXRhLmpwIiwiZnVuYWdhdGEueWFtYWdhdGEuanAiLCJoaWdh'@; put 'c2hpbmUueWFtYWdhdGEuanAiLCJpaWRlLnlhbWFnYXRhLmpwIiwia2Fob2t1LnlhbWFnYXRhLmpwIiwia2FtaW5veWFtYS55YW1hZ2F0YS5qcCIsImthbmV5YW1hLnlhbWFnYXRhLmpwIiwia2F3YW5pc2hpLnlhbWFnYXRhLmpwIiwibWFtdXJvZ2F3YS55YW1hZ2F0YS5qcCIsIm1pa2F3YS55'@; put 'YW1hZ2F0YS5qcCIsIm11cmF5YW1hLnlhbWFnYXRhLmpwIiwibmFnYWkueWFtYWdhdGEuanAiLCJuYWtheWFtYS55YW1hZ2F0YS5qcCIsIm5hbnlvLnlhbWFnYXRhLmpwIiwibmlzaGlrYXdhLnlhbWFnYXRhLmpwIiwib2JhbmF6YXdhLnlhbWFnYXRhLmpwIiwib2UueWFtYWdhdGEuanAiLCJv'@; put 'Z3VuaS55YW1hZ2F0YS5qcCIsIm9oa3VyYS55YW1hZ2F0YS5qcCIsIm9pc2hpZGEueWFtYWdhdGEuanAiLCJzYWdhZS55YW1hZ2F0YS5qcCIsInNha2F0YS55YW1hZ2F0YS5qcCIsInNha2VnYXdhLnlhbWFnYXRhLmpwIiwic2hpbmpvLnlhbWFnYXRhLmpwIiwic2hpcmF0YWthLnlhbWFnYXRh'@; put 'LmpwIiwic2hvbmFpLnlhbWFnYXRhLmpwIiwidGFrYWhhdGEueWFtYWdhdGEuanAiLCJ0ZW5kby55YW1hZ2F0YS5qcCIsInRvemF3YS55YW1hZ2F0YS5qcCIsInRzdXJ1b2thLnlhbWFnYXRhLmpwIiwieWFtYWdhdGEueWFtYWdhdGEuanAiLCJ5YW1hbm9iZS55YW1hZ2F0YS5qcCIsInlvbmV6'@; put 'YXdhLnlhbWFnYXRhLmpwIiwieXV6YS55YW1hZ2F0YS5qcCIsImFidS55YW1hZ3VjaGkuanAiLCJoYWdpLnlhbWFndWNoaS5qcCIsImhpa2FyaS55YW1hZ3VjaGkuanAiLCJob2Z1LnlhbWFndWNoaS5qcCIsIml3YWt1bmkueWFtYWd1Y2hpLmpwIiwia3VkYW1hdHN1LnlhbWFndWNoaS5qcCIs'@; put 'Im1pdG91LnlhbWFndWNoaS5qcCIsIm5hZ2F0by55YW1hZ3VjaGkuanAiLCJvc2hpbWEueWFtYWd1Y2hpLmpwIiwic2hpbW9ub3Nla2kueWFtYWd1Y2hpLmpwIiwic2h1bmFuLnlhbWFndWNoaS5qcCIsInRhYnVzZS55YW1hZ3VjaGkuanAiLCJ0b2t1eWFtYS55YW1hZ3VjaGkuanAiLCJ0b3lv'@; put 'dGEueWFtYWd1Y2hpLmpwIiwidWJlLnlhbWFndWNoaS5qcCIsInl1dS55YW1hZ3VjaGkuanAiLCJjaHVvLnlhbWFuYXNoaS5qcCIsImRvc2hpLnlhbWFuYXNoaS5qcCIsImZ1ZWZ1a2kueWFtYW5hc2hpLmpwIiwiZnVqaWthd2EueWFtYW5hc2hpLmpwIiwiZnVqaWthd2FndWNoaWtvLnlhbWFu'@; put 'YXNoaS5qcCIsImZ1aml5b3NoaWRhLnlhbWFuYXNoaS5qcCIsImhheWFrYXdhLnlhbWFuYXNoaS5qcCIsImhva3V0by55YW1hbmFzaGkuanAiLCJpY2hpa2F3YW1pc2F0by55YW1hbmFzaGkuanAiLCJrYWkueWFtYW5hc2hpLmpwIiwia29mdS55YW1hbmFzaGkuanAiLCJrb3NodS55YW1hbmFz'@; put 'aGkuanAiLCJrb3N1Z2UueWFtYW5hc2hpLmpwIiwibWluYW1pLWFscHMueWFtYW5hc2hpLmpwIiwibWlub2J1LnlhbWFuYXNoaS5qcCIsIm5ha2FtaWNoaS55YW1hbmFzaGkuanAiLCJuYW5idS55YW1hbmFzaGkuanAiLCJuYXJ1c2F3YS55YW1hbmFzaGkuanAiLCJuaXJhc2FraS55YW1hbmFz'@; put 'aGkuanAiLCJuaXNoaWthdHN1cmEueWFtYW5hc2hpLmpwIiwib3NoaW5vLnlhbWFuYXNoaS5qcCIsIm90c3VraS55YW1hbmFzaGkuanAiLCJzaG93YS55YW1hbmFzaGkuanAiLCJ0YWJheWFtYS55YW1hbmFzaGkuanAiLCJ0c3VydS55YW1hbmFzaGkuanAiLCJ1ZW5vaGFyYS55YW1hbmFzaGku'@; put 'anAiLCJ5YW1hbmFrYWtvLnlhbWFuYXNoaS5qcCIsInlhbWFuYXNoaS55YW1hbmFzaGkuanAiLCJrZSIsImFjLmtlIiwiY28ua2UiLCJnby5rZSIsImluZm8ua2UiLCJtZS5rZSIsIm1vYmkua2UiLCJuZS5rZSIsIm9yLmtlIiwic2Mua2UiLCJrZyIsImNvbS5rZyIsImVkdS5rZyIsImdvdi5r'@; put 'ZyIsIm1pbC5rZyIsIm5ldC5rZyIsIm9yZy5rZyIsIioua2giLCJraSIsImJpei5raSIsImNvbS5raSIsImVkdS5raSIsImdvdi5raSIsImluZm8ua2kiLCJuZXQua2kiLCJvcmcua2kiLCJrbSIsImFzcy5rbSIsImNvbS5rbSIsImVkdS5rbSIsImdvdi5rbSIsIm1pbC5rbSIsIm5vbS5rbSIs'@; put 'Im9yZy5rbSIsInByZC5rbSIsInRtLmttIiwiYXNzby5rbSIsImNvb3Aua20iLCJnb3V2LmttIiwibWVkZWNpbi5rbSIsIm5vdGFpcmVzLmttIiwicGhhcm1hY2llbnMua20iLCJwcmVzc2Uua20iLCJ2ZXRlcmluYWlyZS5rbSIsImtuIiwiZWR1LmtuIiwiZ292LmtuIiwibmV0LmtuIiwib3Jn'@; put 'LmtuIiwia3AiLCJjb20ua3AiLCJlZHUua3AiLCJnb3Yua3AiLCJvcmcua3AiLCJyZXAua3AiLCJ0cmEua3AiLCJrciIsImFjLmtyIiwiY28ua3IiLCJlcy5rciIsImdvLmtyIiwiaHMua3IiLCJrZy5rciIsIm1pbC5rciIsIm1zLmtyIiwibmUua3IiLCJvci5rciIsInBlLmtyIiwicmUua3Ii'@; put 'LCJzYy5rciIsImJ1c2FuLmtyIiwiY2h1bmdidWsua3IiLCJjaHVuZ25hbS5rciIsImRhZWd1LmtyIiwiZGFlamVvbi5rciIsImdhbmd3b24ua3IiLCJnd2FuZ2p1LmtyIiwiZ3llb25nYnVrLmtyIiwiZ3llb25nZ2kua3IiLCJneWVvbmduYW0ua3IiLCJpbmNoZW9uLmtyIiwiamVqdS5rciIs'@; put 'Implb25idWsua3IiLCJqZW9ubmFtLmtyIiwic2VvdWwua3IiLCJ1bHNhbi5rciIsImt3IiwiY29tLmt3IiwiZWR1Lmt3IiwiZW1iLmt3IiwiZ292Lmt3IiwiaW5kLmt3IiwibmV0Lmt3Iiwib3JnLmt3Iiwia3kiLCJjb20ua3kiLCJlZHUua3kiLCJuZXQua3kiLCJvcmcua3kiLCJreiIsImNv'@; put 'bS5reiIsImVkdS5reiIsImdvdi5reiIsIm1pbC5reiIsIm5ldC5reiIsIm9yZy5reiIsImxhIiwiY29tLmxhIiwiZWR1LmxhIiwiZ292LmxhIiwiaW5mby5sYSIsImludC5sYSIsIm5ldC5sYSIsIm9yZy5sYSIsInBlci5sYSIsImxiIiwiY29tLmxiIiwiZWR1LmxiIiwiZ292LmxiIiwibmV0'@; put 'LmxiIiwib3JnLmxiIiwibGMiLCJjby5sYyIsImNvbS5sYyIsImVkdS5sYyIsImdvdi5sYyIsIm5ldC5sYyIsIm9yZy5sYyIsImxpIiwibGsiLCJhYy5sayIsImFzc24ubGsiLCJjb20ubGsiLCJlZHUubGsiLCJnb3YubGsiLCJncnAubGsiLCJob3RlbC5sayIsImludC5sayIsImx0ZC5sayIs'@; put 'Im5ldC5sayIsIm5nby5sayIsIm9yZy5sayIsInNjaC5sayIsInNvYy5sayIsIndlYi5sayIsImxyIiwiY29tLmxyIiwiZWR1LmxyIiwiZ292LmxyIiwibmV0LmxyIiwib3JnLmxyIiwibHMiLCJhYy5scyIsImJpei5scyIsImNvLmxzIiwiZWR1LmxzIiwiZ292LmxzIiwiaW5mby5scyIsIm5l'@; put 'dC5scyIsIm9yZy5scyIsInNjLmxzIiwibHQiLCJnb3YubHQiLCJsdSIsImx2IiwiYXNuLmx2IiwiY29tLmx2IiwiY29uZi5sdiIsImVkdS5sdiIsImdvdi5sdiIsImlkLmx2IiwibWlsLmx2IiwibmV0Lmx2Iiwib3JnLmx2IiwibHkiLCJjb20ubHkiLCJlZHUubHkiLCJnb3YubHkiLCJpZC5s'@; put 'eSIsIm1lZC5seSIsIm5ldC5seSIsIm9yZy5seSIsInBsYy5seSIsInNjaC5seSIsIm1hIiwiYWMubWEiLCJjby5tYSIsImdvdi5tYSIsIm5ldC5tYSIsIm9yZy5tYSIsInByZXNzLm1hIiwibWMiLCJhc3NvLm1jIiwidG0ubWMiLCJtZCIsIm1lIiwiYWMubWUiLCJjby5tZSIsImVkdS5tZSIs'@; put 'Imdvdi5tZSIsIml0cy5tZSIsIm5ldC5tZSIsIm9yZy5tZSIsInByaXYubWUiLCJtZyIsImNvLm1nIiwiY29tLm1nIiwiZWR1Lm1nIiwiZ292Lm1nIiwibWlsLm1nIiwibm9tLm1nIiwib3JnLm1nIiwicHJkLm1nIiwibWgiLCJtaWwiLCJtayIsImNvbS5tayIsImVkdS5tayIsImdvdi5tayIs'@; put 'ImluZi5tayIsIm5hbWUubWsiLCJuZXQubWsiLCJvcmcubWsiLCJtbCIsImNvbS5tbCIsImVkdS5tbCIsImdvdXYubWwiLCJnb3YubWwiLCJuZXQubWwiLCJvcmcubWwiLCJwcmVzc2UubWwiLCIqLm1tIiwibW4iLCJlZHUubW4iLCJnb3YubW4iLCJvcmcubW4iLCJtbyIsImNvbS5tbyIsImVk'@; put 'dS5tbyIsImdvdi5tbyIsIm5ldC5tbyIsIm9yZy5tbyIsIm1vYmkiLCJtcCIsIm1xIiwibXIiLCJnb3YubXIiLCJtcyIsImNvbS5tcyIsImVkdS5tcyIsImdvdi5tcyIsIm5ldC5tcyIsIm9yZy5tcyIsIm10IiwiY29tLm10IiwiZWR1Lm10IiwibmV0Lm10Iiwib3JnLm10IiwibXUiLCJhYy5t'@; put 'dSIsImNvLm11IiwiY29tLm11IiwiZ292Lm11IiwibmV0Lm11Iiwib3IubXUiLCJvcmcubXUiLCJtdXNldW0iLCJtdiIsImFlcm8ubXYiLCJiaXoubXYiLCJjb20ubXYiLCJjb29wLm12IiwiZWR1Lm12IiwiZ292Lm12IiwiaW5mby5tdiIsImludC5tdiIsIm1pbC5tdiIsIm11c2V1bS5tdiIs'@; put 'Im5hbWUubXYiLCJuZXQubXYiLCJvcmcubXYiLCJwcm8ubXYiLCJtdyIsImFjLm13IiwiYml6Lm13IiwiY28ubXciLCJjb20ubXciLCJjb29wLm13IiwiZWR1Lm13IiwiZ292Lm13IiwiaW50Lm13IiwibmV0Lm13Iiwib3JnLm13IiwibXgiLCJjb20ubXgiLCJlZHUubXgiLCJnb2IubXgiLCJu'@; put 'ZXQubXgiLCJvcmcubXgiLCJteSIsImJpei5teSIsImNvbS5teSIsImVkdS5teSIsImdvdi5teSIsIm1pbC5teSIsIm5hbWUubXkiLCJuZXQubXkiLCJvcmcubXkiLCJteiIsImFjLm16IiwiYWR2Lm16IiwiY28ubXoiLCJlZHUubXoiLCJnb3YubXoiLCJtaWwubXoiLCJuZXQubXoiLCJvcmcu'@; put 'bXoiLCJuYSIsImFsdC5uYSIsImNvLm5hIiwiY29tLm5hIiwiZ292Lm5hIiwibmV0Lm5hIiwib3JnLm5hIiwibmFtZSIsIm5jIiwiYXNzby5uYyIsIm5vbS5uYyIsIm5lIiwibmV0IiwibmYiLCJhcnRzLm5mIiwiY29tLm5mIiwiZmlybS5uZiIsImluZm8ubmYiLCJuZXQubmYiLCJvdGhlci5u'@; put 'ZiIsInBlci5uZiIsInJlYy5uZiIsInN0b3JlLm5mIiwid2ViLm5mIiwibmciLCJjb20ubmciLCJlZHUubmciLCJnb3YubmciLCJpLm5nIiwibWlsLm5nIiwibW9iaS5uZyIsIm5hbWUubmciLCJuZXQubmciLCJvcmcubmciLCJzY2gubmciLCJuaSIsImFjLm5pIiwiYml6Lm5pIiwiY28ubmki'@; put 'LCJjb20ubmkiLCJlZHUubmkiLCJnb2IubmkiLCJpbi5uaSIsImluZm8ubmkiLCJpbnQubmkiLCJtaWwubmkiLCJuZXQubmkiLCJub20ubmkiLCJvcmcubmkiLCJ3ZWIubmkiLCJubCIsIm5vIiwiZmhzLm5vIiwiZm9sa2ViaWJsLm5vIiwiZnlsa2VzYmlibC5ubyIsImlkcmV0dC5ubyIsIm11'@; put 'c2V1bS5ubyIsInByaXYubm8iLCJ2Z3Mubm8iLCJkZXAubm8iLCJoZXJhZC5ubyIsImtvbW11bmUubm8iLCJtaWwubm8iLCJzdGF0Lm5vIiwiYWEubm8iLCJhaC5ubyIsImJ1Lm5vIiwiZm0ubm8iLCJobC5ubyIsImhtLm5vIiwiamFuLW1heWVuLm5vIiwibXIubm8iLCJubC5ubyIsIm50Lm5v'@; put 'Iiwib2Yubm8iLCJvbC5ubyIsIm9zbG8ubm8iLCJybC5ubyIsInNmLm5vIiwic3Qubm8iLCJzdmFsYmFyZC5ubyIsInRtLm5vIiwidHIubm8iLCJ2YS5ubyIsInZmLm5vIiwiZ3MuYWEubm8iLCJncy5haC5ubyIsImdzLmJ1Lm5vIiwiZ3MuZm0ubm8iLCJncy5obC5ubyIsImdzLmhtLm5vIiwi'@; put 'Z3MuamFuLW1heWVuLm5vIiwiZ3MubXIubm8iLCJncy5ubC5ubyIsImdzLm50Lm5vIiwiZ3Mub2Yubm8iLCJncy5vbC5ubyIsImdzLm9zbG8ubm8iLCJncy5ybC5ubyIsImdzLnNmLm5vIiwiZ3Muc3Qubm8iLCJncy5zdmFsYmFyZC5ubyIsImdzLnRtLm5vIiwiZ3MudHIubm8iLCJncy52YS5u'@; put 'byIsImdzLnZmLm5vIiwiYWtyZWhhbW4ubm8iLCJceGU1a3JlaGFtbi5ubyIsImFsZ2FyZC5ubyIsIlx4ZTVsZ1x4ZTVyZC5ubyIsImFybmEubm8iLCJicm9ubm95c3VuZC5ubyIsImJyXHhmOG5uXHhmOHlzdW5kLm5vIiwiYnJ1bXVuZGRhbC5ubyIsImJyeW5lLm5vIiwiZHJvYmFrLm5vIiwi'@; put 'ZHJceGY4YmFrLm5vIiwiZWdlcnN1bmQubm8iLCJmZXRzdW5kLm5vIiwiZmxvcm8ubm8iLCJmbG9yXHhmOC5ubyIsImZyZWRyaWtzdGFkLm5vIiwiaG9ra3N1bmQubm8iLCJob25lZm9zcy5ubyIsImhceGY4bmVmb3NzLm5vIiwiamVzc2hlaW0ubm8iLCJqb3JwZWxhbmQubm8iLCJqXHhmOHJw'@; put 'ZWxhbmQubm8iLCJraXJrZW5lcy5ubyIsImtvcGVydmlrLm5vIiwia3Jva3N0YWRlbHZhLm5vIiwibGFuZ2V2YWcubm8iLCJsYW5nZXZceGU1Zy5ubyIsImxlaXJ2aWsubm8iLCJtam9uZGFsZW4ubm8iLCJtalx4ZjhuZGFsZW4ubm8iLCJtby1pLXJhbmEubm8iLCJtb3Nqb2VuLm5vIiwibW9z'@; put 'alx4Zjhlbi5ubyIsIm5lc29kZHRhbmdlbi5ubyIsIm9ya2FuZ2VyLm5vIiwib3NveXJvLm5vIiwib3NceGY4eXJvLm5vIiwicmFob2x0Lm5vIiwiclx4ZTVob2x0Lm5vIiwic2FuZG5lc3Nqb2VuLm5vIiwic2FuZG5lc3NqXHhmOGVuLm5vIiwic2tlZHNtb2tvcnNldC5ubyIsInNsYXR0dW0u'@; put 'bm8iLCJzcGplbGthdmlrLm5vIiwic3RhdGhlbGxlLm5vIiwic3RhdmVybi5ubyIsInN0am9yZGFsc2hhbHNlbi5ubyIsInN0alx4ZjhyZGFsc2hhbHNlbi5ubyIsInRhbmFuZ2VyLm5vIiwidHJhbmJ5Lm5vIiwidm9zc2V2YW5nZW4ubm8iLCJhYXJib3J0ZS5ubyIsImFlanJpZS5ubyIsImFm'@; put 'am9yZC5ubyIsIlx4ZTVmam9yZC5ubyIsImFnZGVuZXMubm8iLCJuZXMuYWtlcnNodXMubm8iLCJha25vbHVva3RhLm5vIiwiXHhlMWtcdTAxNGJvbHVva3RhLm5vIiwiYWwubm8iLCJceGU1bC5ubyIsImFsYWhlYWRqdS5ubyIsIlx4ZTFsYWhlYWRqdS5ubyIsImFsZXN1bmQubm8iLCJceGU1'@; put 'bGVzdW5kLm5vIiwiYWxzdGFoYXVnLm5vIiwiYWx0YS5ubyIsIlx4ZTFsdFx4ZTEubm8iLCJhbHZkYWwubm8iLCJhbWxpLm5vIiwiXHhlNW1saS5ubyIsImFtb3Qubm8iLCJceGU1bW90Lm5vIiwiYW5kYXN1b2xvLm5vIiwiYW5kZWJ1Lm5vIiwiYW5kb3kubm8iLCJhbmRceGY4eS5ubyIsImFy'@; put 'ZGFsLm5vIiwiXHhlNXJkYWwubm8iLCJhcmVtYXJrLm5vIiwiYXJlbmRhbC5ubyIsIlx4ZTVzLm5vIiwiYXNlcmFsLm5vIiwiXHhlNXNlcmFsLm5vIiwiYXNrZXIubm8iLCJhc2tpbS5ubyIsImFza295Lm5vIiwiYXNrXHhmOHkubm8iLCJhc2t2b2xsLm5vIiwiYXNuZXMubm8iLCJceGU1c25l'@; put 'cy5ubyIsImF1ZG5lZGFsbi5ubyIsImF1a3JhLm5vIiwiYXVyZS5ubyIsImF1cmxhbmQubm8iLCJhdXJza29nLWhvbGFuZC5ubyIsImF1cnNrb2ctaFx4ZjhsYW5kLm5vIiwiYXVzdGV2b2xsLm5vIiwiYXVzdHJoZWltLm5vIiwiYXZlcm95Lm5vIiwiYXZlclx4Zjh5Lm5vIiwiYmFkYWRkamEu'@; put 'bm8iLCJiXHhlNWRceGU1ZGRqXHhlNS5ubyIsImJceGU2cnVtLm5vIiwiYmFoY2F2dW90bmEubm8iLCJiXHhlMWhjYXZ1b3RuYS5ubyIsImJhaGNjYXZ1b3RuYS5ubyIsImJceGUxaGNjYXZ1b3RuYS5ubyIsImJhaWRhci5ubyIsImJceGUxaWRceGUxci5ubyIsImJhamRkYXIubm8iLCJiXHhl'@; put 'MWpkZGFyLm5vIiwiYmFsYXQubm8iLCJiXHhlMWxceGUxdC5ubyIsImJhbGVzdHJhbmQubm8iLCJiYWxsYW5nZW4ubm8iLCJiYWxzZmpvcmQubm8iLCJiYW1ibGUubm8iLCJiYXJkdS5ubyIsImJhcnVtLm5vIiwiYmF0c2Zqb3JkLm5vIiwiYlx4ZTV0c2Zqb3JkLm5vIiwiYmVhcmFsdmFoa2ku'@; put 'bm8iLCJiZWFyYWx2XHhlMWhraS5ubyIsImJlYXJkdS5ubyIsImJlaWFybi5ubyIsImJlcmcubm8iLCJiZXJnZW4ubm8iLCJiZXJsZXZhZy5ubyIsImJlcmxldlx4ZTVnLm5vIiwiYmlldmF0Lm5vIiwiYmlldlx4ZTF0Lm5vIiwiYmluZGFsLm5vIiwiYmlya2VuZXMubm8iLCJiamFya295Lm5v'@; put 'IiwiYmphcmtceGY4eS5ubyIsImJqZXJrcmVpbS5ubyIsImJqdWduLm5vIiwiYm9kby5ubyIsImJvZFx4Zjgubm8iLCJib2tuLm5vIiwiYm9tbG8ubm8iLCJiXHhmOG1sby5ubyIsImJyZW1hbmdlci5ubyIsImJyb25ub3kubm8iLCJiclx4Zjhublx4Zjh5Lm5vIiwiYnVkZWpqdS5ubyIsIm5l'@; put 'cy5idXNrZXJ1ZC5ubyIsImJ5Z2xhbmQubm8iLCJieWtsZS5ubyIsImNhaGNlc3VvbG8ubm8iLCJcdTAxMGRceGUxaGNlc3VvbG8ubm8iLCJkYXZ2ZW5qYXJnYS5ubyIsImRhdnZlbmpceGUxcmdhLm5vIiwiZGF2dmVzaWlkYS5ubyIsImRlYXRudS5ubyIsImRpZWxkZGFudW9ycmkubm8iLCJk'@; put 'aXZ0YXN2dW9kbmEubm8iLCJkaXZ0dGFzdnVvdG5hLm5vIiwiZG9ubmEubm8iLCJkXHhmOG5uYS5ubyIsImRvdnJlLm5vIiwiZHJhbW1lbi5ubyIsImRyYW5nZWRhbC5ubyIsImR5cm95Lm5vIiwiZHlyXHhmOHkubm8iLCJlaWQubm8iLCJlaWRmam9yZC5ubyIsImVpZHNiZXJnLm5vIiwiZWlk'@; put 'c2tvZy5ubyIsImVpZHN2b2xsLm5vIiwiZWlnZXJzdW5kLm5vIiwiZWx2ZXJ1bS5ubyIsImVuZWJha2subm8iLCJlbmdlcmRhbC5ubyIsImV0bmUubm8iLCJldG5lZGFsLm5vIiwiZXZlbmFzc2kubm8iLCJldmVuXHhlMVx1MDE2MVx1MDE2MWkubm8iLCJldmVuZXMubm8iLCJldmplLW9nLWhv'@; put 'cm5uZXMubm8iLCJmYXJzdW5kLm5vIiwiZmF1c2tlLm5vIiwiZmVkamUubm8iLCJmZXQubm8iLCJmaW5ub3kubm8iLCJmaW5uXHhmOHkubm8iLCJmaXRqYXIubm8iLCJmamFsZXIubm8iLCJmamVsbC5ubyIsImZsYS5ubyIsImZsXHhlNS5ubyIsImZsYWtzdGFkLm5vIiwiZmxhdGFuZ2VyLm5v'@; put 'IiwiZmxla2tlZmpvcmQubm8iLCJmbGVzYmVyZy5ubyIsImZsb3JhLm5vIiwiZm9sbGRhbC5ubyIsImZvcmRlLm5vIiwiZlx4ZjhyZGUubm8iLCJmb3JzYW5kLm5vIiwiZm9zbmVzLm5vIiwiZnJceGU2bmEubm8iLCJmcmFuYS5ubyIsImZyZWkubm8iLCJmcm9nbi5ubyIsImZyb2xhbmQubm8i'@; put 'LCJmcm9zdGEubm8iLCJmcm95YS5ubyIsImZyXHhmOHlhLm5vIiwiZnVvaXNrdS5ubyIsImZ1b3Nza28ubm8iLCJmdXNhLm5vIiwiZnlyZXNkYWwubm8iLCJnYWl2dW90bmEubm8iLCJnXHhlMWl2dW90bmEubm8iLCJnYWxzYS5ubyIsImdceGUxbHNceGUxLm5vIiwiZ2FtdmlrLm5vIiwiZ2Fu'@; put 'Z2F2aWlrYS5ubyIsImdceGUxXHUwMTRiZ2F2aWlrYS5ubyIsImdhdWxhci5ubyIsImdhdXNkYWwubm8iLCJnaWVodGF2dW9hdG5hLm5vIiwiZ2lsZGVza2FsLm5vIiwiZ2lsZGVza1x4ZTVsLm5vIiwiZ2lza2Uubm8iLCJnamVtbmVzLm5vIiwiZ2plcmRydW0ubm8iLCJnamVyc3RhZC5ubyIs'@; put 'ImdqZXNkYWwubm8iLCJnam92aWsubm8iLCJnalx4Zjh2aWsubm8iLCJnbG9wcGVuLm5vIiwiZ29sLm5vIiwiZ3Jhbi5ubyIsImdyYW5lLm5vIiwiZ3JhbnZpbi5ubyIsImdyYXRhbmdlbi5ubyIsImdyaW1zdGFkLm5vIiwiZ3Jvbmcubm8iLCJncnVlLm5vIiwiZ3VsZW4ubm8iLCJndW92ZGFn'@; put 'ZWFpZG51Lm5vIiwiaGEubm8iLCJoXHhlNS5ubyIsImhhYm1lci5ubyIsImhceGUxYm1lci5ubyIsImhhZHNlbC5ubyIsImhceGU2Z2Vib3N0YWQubm8iLCJoYWdlYm9zdGFkLm5vIiwiaGFsZGVuLm5vIiwiaGFsc2Eubm8iLCJoYW1hci5ubyIsImhhbWFyb3kubm8iLCJoYW1tYXJmZWFzdGEu'@; put 'bm8iLCJoXHhlMW1tXHhlMXJmZWFzdGEubm8iLCJoYW1tZXJmZXN0Lm5vIiwiaGFwbWlyLm5vIiwiaFx4ZTFwbWlyLm5vIiwiaGFyYW0ubm8iLCJoYXJlaWQubm8iLCJoYXJzdGFkLm5vIiwiaGFzdmlrLm5vIiwiaGF0dGZqZWxsZGFsLm5vIiwiaGF1Z2VzdW5kLm5vIiwib3MuaGVkbWFyay5u'@; put 'byIsInZhbGVyLmhlZG1hcmsubm8iLCJ2XHhlNWxlci5oZWRtYXJrLm5vIiwiaGVtbmUubm8iLCJoZW1uZXMubm8iLCJoZW1zZWRhbC5ubyIsImhpdHJhLm5vIiwiaGphcnRkYWwubm8iLCJoamVsbWVsYW5kLm5vIiwiaG9ib2wubm8iLCJob2JceGY4bC5ubyIsImhvZi5ubyIsImhvbC5ubyIs'@; put 'ImhvbGUubm8iLCJob2xtZXN0cmFuZC5ubyIsImhvbHRhbGVuLm5vIiwiaG9sdFx4ZTVsZW4ubm8iLCJvcy5ob3JkYWxhbmQubm8iLCJob3JuaW5kYWwubm8iLCJob3J0ZW4ubm8iLCJob3lhbmdlci5ubyIsImhceGY4eWFuZ2VyLm5vIiwiaG95bGFuZGV0Lm5vIiwiaFx4Zjh5bGFuZGV0Lm5v'@; put 'IiwiaHVyZGFsLm5vIiwiaHVydW0ubm8iLCJodmFsZXIubm8iLCJoeWxsZXN0YWQubm8iLCJpYmVzdGFkLm5vIiwiaW5kZXJveS5ubyIsImluZGVyXHhmOHkubm8iLCJpdmVsYW5kLm5vIiwiaXZndS5ubyIsImpldm5ha2VyLm5vIiwiam9sc3Rlci5ubyIsImpceGY4bHN0ZXIubm8iLCJqb25k'@; put 'YWwubm8iLCJrYWZqb3JkLm5vIiwia1x4ZTVmam9yZC5ubyIsImthcmFzam9oa2Eubm8iLCJrXHhlMXJceGUxXHUwMTYxam9oa2Eubm8iLCJrYXJhc2pvay5ubyIsImthcmxzb3kubm8iLCJrYXJtb3kubm8iLCJrYXJtXHhmOHkubm8iLCJrYXV0b2tlaW5vLm5vIiwia2xhYnUubm8iLCJrbFx4'@; put 'ZTZidS5ubyIsImtsZXBwLm5vIiwia29uZ3NiZXJnLm5vIiwia29uZ3N2aW5nZXIubm8iLCJrcmFhbmdoa2Uubm8iLCJrclx4ZTVhbmdoa2Uubm8iLCJrcmFnZXJvLm5vIiwia3JhZ2VyXHhmOC5ubyIsImtyaXN0aWFuc2FuZC5ubyIsImtyaXN0aWFuc3VuZC5ubyIsImtyb2RzaGVyYWQubm8i'@; put 'LCJrclx4Zjhkc2hlcmFkLm5vIiwia3ZceGU2ZmpvcmQubm8iLCJrdlx4ZTZuYW5nZW4ubm8iLCJrdmFmam9yZC5ubyIsImt2YWxzdW5kLm5vIiwia3ZhbS5ubyIsImt2YW5hbmdlbi5ubyIsImt2aW5lc2RhbC5ubyIsImt2aW5uaGVyYWQubm8iLCJrdml0ZXNlaWQubm8iLCJrdml0c295Lm5v'@; put 'Iiwia3ZpdHNceGY4eS5ubyIsImxhYWtlc3Z1ZW1pZS5ubyIsImxceGU2cmRhbC5ubyIsImxhaHBwaS5ubyIsImxceGUxaHBwaS5ubyIsImxhcmRhbC5ubyIsImxhcnZpay5ubyIsImxhdmFnaXMubm8iLCJsYXZhbmdlbi5ubyIsImxlYW5nYXZpaWthLm5vIiwibGVhXHUwMTRiZ2F2aWlrYS5u'@; put 'byIsImxlYmVzYnkubm8iLCJsZWlrYW5nZXIubm8iLCJsZWlyZmpvcmQubm8iLCJsZWthLm5vIiwibGVrc3Zpay5ubyIsImxlbnZpay5ubyIsImxlcmRhbC5ubyIsImxlc2phLm5vIiwibGV2YW5nZXIubm8iLCJsaWVyLm5vIiwibGllcm5lLm5vIiwibGlsbGVoYW1tZXIubm8iLCJsaWxsZXNh'@; put 'bmQubm8iLCJsaW5kYXMubm8iLCJsaW5kXHhlNXMubm8iLCJsaW5kZXNuZXMubm8iLCJsb2FiYXQubm8iLCJsb2FiXHhlMXQubm8iLCJsb2Rpbmdlbi5ubyIsImxceGY4ZGluZ2VuLm5vIiwibG9tLm5vIiwibG9wcGEubm8iLCJsb3JlbnNrb2cubm8iLCJsXHhmOHJlbnNrb2cubm8iLCJsb3Rl'@; put 'bi5ubyIsImxceGY4dGVuLm5vIiwibHVuZC5ubyIsImx1bm5lci5ubyIsImx1cm95Lm5vIiwibHVyXHhmOHkubm8iLCJsdXN0ZXIubm8iLCJseW5nZGFsLm5vIiwibHluZ2VuLm5vIiwibWFsYXR2dW9wbWkubm8iLCJtXHhlMWxhdHZ1b3BtaS5ubyIsIm1hbHNlbHYubm8iLCJtXHhlNWxzZWx2'@; put 'Lm5vIiwibWFsdmlrLm5vIiwibWFuZGFsLm5vIiwibWFya2VyLm5vIiwibWFybmFyZGFsLm5vIiwibWFzZmpvcmRlbi5ubyIsIm1hc295Lm5vIiwibVx4ZTVzXHhmOHkubm8iLCJtYXR0YS12YXJqamF0Lm5vIiwibVx4ZTF0dGEtdlx4ZTFyamphdC5ubyIsIm1lbGFuZC5ubyIsIm1lbGRhbC5u'@; put 'byIsIm1lbGh1cy5ubyIsIm1lbG95Lm5vIiwibWVsXHhmOHkubm8iLCJtZXJha2VyLm5vIiwibWVyXHhlNWtlci5ubyIsIm1pZHN1bmQubm8iLCJtaWR0cmUtZ2F1bGRhbC5ubyIsIm1vYXJla2Uubm8iLCJtb1x4ZTVyZWtlLm5vIiwibW9kYWxlbi5ubyIsIm1vZHVtLm5vIiwibW9sZGUubm8i'@; put 'LCJoZXJveS5tb3JlLW9nLXJvbXNkYWwubm8iLCJzYW5kZS5tb3JlLW9nLXJvbXNkYWwubm8iLCJoZXJceGY4eS5tXHhmOHJlLW9nLXJvbXNkYWwubm8iLCJzYW5kZS5tXHhmOHJlLW9nLXJvbXNkYWwubm8iLCJtb3NrZW5lcy5ubyIsIm1vc3Mubm8iLCJtb3N2aWsubm8iLCJtdW9zYXQubm8i'@; put 'LCJtdW9zXHhlMXQubm8iLCJuYWFtZXNqZXZ1ZW1pZS5ubyIsIm5ceGU1XHhlNW1lc2pldnVlbWllLm5vIiwiblx4ZTZyXHhmOHkubm8iLCJuYW1kYWxzZWlkLm5vIiwibmFtc29zLm5vIiwibmFtc3Nrb2dhbi5ubyIsIm5hbm5lc3RhZC5ubyIsIm5hcm95Lm5vIiwibmFydmlpa2Eubm8iLCJu'@; put 'YXJ2aWsubm8iLCJuYXVzdGRhbC5ubyIsIm5hdnVvdG5hLm5vIiwiblx4ZTF2dW90bmEubm8iLCJuZWRyZS1laWtlci5ubyIsIm5lc25hLm5vIiwibmVzb2RkZW4ubm8iLCJuZXNzZWJ5Lm5vIiwibmVzc2V0Lm5vIiwibmlzc2VkYWwubm8iLCJuaXR0ZWRhbC5ubyIsIm5vcmQtYXVyZGFsLm5v'@; put 'Iiwibm9yZC1mcm9uLm5vIiwibm9yZC1vZGFsLm5vIiwibm9yZGRhbC5ubyIsIm5vcmRrYXBwLm5vIiwiYm8ubm9yZGxhbmQubm8iLCJiXHhmOC5ub3JkbGFuZC5ubyIsImhlcm95Lm5vcmRsYW5kLm5vIiwiaGVyXHhmOHkubm9yZGxhbmQubm8iLCJub3JkcmUtbGFuZC5ubyIsIm5vcmRyZWlz'@; put 'YS5ubyIsIm5vcmUtb2ctdXZkYWwubm8iLCJub3RvZGRlbi5ubyIsIm5vdHRlcm95Lm5vIiwiblx4Zjh0dGVyXHhmOHkubm8iLCJvZGRhLm5vIiwib2tzbmVzLm5vIiwiXHhmOGtzbmVzLm5vIiwib21hc3Z1b3RuYS5ubyIsIm9wcGRhbC5ubyIsIm9wcGVnYXJkLm5vIiwib3BwZWdceGU1cmQu'@; put 'bm8iLCJvcmtkYWwubm8iLCJvcmxhbmQubm8iLCJceGY4cmxhbmQubm8iLCJvcnNrb2cubm8iLCJceGY4cnNrb2cubm8iLCJvcnN0YS5ubyIsIlx4Zjhyc3RhLm5vIiwib3Nlbi5ubyIsIm9zdGVyb3kubm8iLCJvc3Rlclx4Zjh5Lm5vIiwidmFsZXIub3N0Zm9sZC5ubyIsInZceGU1bGVyLlx4'@; put 'ZjhzdGZvbGQubm8iLCJvc3RyZS10b3Rlbi5ubyIsIlx4ZjhzdHJlLXRvdGVuLm5vIiwib3ZlcmhhbGxhLm5vIiwib3ZyZS1laWtlci5ubyIsIlx4Zjh2cmUtZWlrZXIubm8iLCJveWVyLm5vIiwiXHhmOHllci5ubyIsIm95Z2FyZGVuLm5vIiwiXHhmOHlnYXJkZW4ubm8iLCJveXN0cmUtc2xp'@; put 'ZHJlLm5vIiwiXHhmOHlzdHJlLXNsaWRyZS5ubyIsInBvcnNhbmdlci5ubyIsInBvcnNhbmd1Lm5vIiwicG9yc1x4ZTFcdTAxNGJndS5ubyIsInBvcnNncnVubi5ubyIsInJhZGUubm8iLCJyXHhlNWRlLm5vIiwicmFkb3kubm8iLCJyYWRceGY4eS5ubyIsInJceGU2bGluZ2VuLm5vIiwicmFo'@; put 'a2tlcmF2anUubm8iLCJyXHhlMWhra2VyXHhlMXZqdS5ubyIsInJhaXNhLm5vIiwiclx4ZTFpc2Eubm8iLCJyYWtrZXN0YWQubm8iLCJyYWxpbmdlbi5ubyIsInJhbmEubm8iLCJyYW5kYWJlcmcubm8iLCJyYXVtYS5ubyIsInJlbmRhbGVuLm5vIiwicmVubmVidS5ubyIsInJlbm5lc295Lm5v'@; put 'IiwicmVubmVzXHhmOHkubm8iLCJyaW5kYWwubm8iLCJyaW5nZWJ1Lm5vIiwicmluZ2VyaWtlLm5vIiwicmluZ3Nha2VyLm5vIiwicmlzb3Iubm8iLCJyaXNceGY4ci5ubyIsInJpc3NhLm5vIiwicm9hbi5ubyIsInJvZG95Lm5vIiwiclx4ZjhkXHhmOHkubm8iLCJyb2xsYWcubm8iLCJyb21z'@; put 'YS5ubyIsInJvbXNrb2cubm8iLCJyXHhmOG1za29nLm5vIiwicm9yb3Mubm8iLCJyXHhmOHJvcy5ubyIsInJvc3Qubm8iLCJyXHhmOHN0Lm5vIiwicm95a2VuLm5vIiwiclx4Zjh5a2VuLm5vIiwicm95cnZpay5ubyIsInJceGY4eXJ2aWsubm8iLCJydW92YXQubm8iLCJyeWdnZS5ubyIsInNh'@; put 'bGFuZ2VuLm5vIiwic2FsYXQubm8iLCJzXHhlMWxhdC5ubyIsInNceGUxbFx4ZTF0Lm5vIiwic2FsdGRhbC5ubyIsInNhbW5hbmdlci5ubyIsInNhbmRlZmpvcmQubm8iLCJzYW5kbmVzLm5vIiwic2FuZG95Lm5vIiwic2FuZFx4Zjh5Lm5vIiwic2FycHNib3JnLm5vIiwic2F1ZGEubm8iLCJz'@; put 'YXVoZXJhZC5ubyIsInNlbC5ubyIsInNlbGJ1Lm5vIiwic2VsamUubm8iLCJzZWxqb3JkLm5vIiwic2llbGxhay5ubyIsInNpZ2RhbC5ubyIsInNpbGphbi5ubyIsInNpcmRhbC5ubyIsInNrYW5pdC5ubyIsInNrXHhlMW5pdC5ubyIsInNrYW5sYW5kLm5vIiwic2tceGU1bmxhbmQubm8iLCJz'@; put 'a2F1bi5ubyIsInNrZWRzbW8ubm8iLCJza2kubm8iLCJza2llbi5ubyIsInNraWVydmEubm8iLCJza2llcnZceGUxLm5vIiwic2tpcHR2ZXQubm8iLCJza2phay5ubyIsInNralx4ZTVrLm5vIiwic2tqZXJ2b3kubm8iLCJza2plcnZceGY4eS5ubyIsInNrb2RqZS5ubyIsInNtb2xhLm5vIiwi'@; put 'c21ceGY4bGEubm8iLCJzbmFhc2Uubm8iLCJzblx4ZTVhc2Uubm8iLCJzbmFzYS5ubyIsInNuXHhlNXNhLm5vIiwic25pbGxmam9yZC5ubyIsInNub2FzYS5ubyIsInNvZ25kYWwubm8iLCJzb2duZS5ubyIsInNceGY4Z25lLm5vIiwic29rbmRhbC5ubyIsInNvbGEubm8iLCJzb2x1bmQubm8i'@; put 'LCJzb21uYS5ubyIsInNceGY4bW5hLm5vIiwic29uZHJlLWxhbmQubm8iLCJzXHhmOG5kcmUtbGFuZC5ubyIsInNvbmdkYWxlbi5ubyIsInNvci1hdXJkYWwubm8iLCJzXHhmOHItYXVyZGFsLm5vIiwic29yLWZyb24ubm8iLCJzXHhmOHItZnJvbi5ubyIsInNvci1vZGFsLm5vIiwic1x4Zjhy'@; put 'LW9kYWwubm8iLCJzb3ItdmFyYW5nZXIubm8iLCJzXHhmOHItdmFyYW5nZXIubm8iLCJzb3Jmb2xkLm5vIiwic1x4ZjhyZm9sZC5ubyIsInNvcnJlaXNhLm5vIiwic1x4ZjhycmVpc2Eubm8iLCJzb3J0bGFuZC5ubyIsInNvcnVtLm5vIiwic1x4ZjhydW0ubm8iLCJzcHlkZWJlcmcubm8iLCJz'@; put 'dGFuZ2Uubm8iLCJzdGF2YW5nZXIubm8iLCJzdGVpZ2VuLm5vIiwic3RlaW5ramVyLm5vIiwic3Rqb3JkYWwubm8iLCJzdGpceGY4cmRhbC5ubyIsInN0b2trZS5ubyIsInN0b3ItZWx2ZGFsLm5vIiwic3RvcmQubm8iLCJzdG9yZGFsLm5vIiwic3RvcmZqb3JkLm5vIiwic3RyYW5kLm5vIiwi'@; put 'c3RyYW5kYS5ubyIsInN0cnluLm5vIiwic3VsYS5ubyIsInN1bGRhbC5ubyIsInN1bmQubm8iLCJzdW5uZGFsLm5vIiwic3VybmFkYWwubm8iLCJzdmVpby5ubyIsInN2ZWx2aWsubm8iLCJzeWtreWx2ZW4ubm8iLCJ0YW5hLm5vIiwiYm8udGVsZW1hcmsubm8iLCJiXHhmOC50ZWxlbWFyay5u'@; put 'byIsInRpbWUubm8iLCJ0aW5ndm9sbC5ubyIsInRpbm4ubm8iLCJ0amVsZHN1bmQubm8iLCJ0am9tZS5ubyIsInRqXHhmOG1lLm5vIiwidG9ra2Uubm8iLCJ0b2xnYS5ubyIsInRvbnNiZXJnLm5vIiwidFx4Zjhuc2Jlcmcubm8iLCJ0b3Jza2VuLm5vIiwidHJceGU2bmEubm8iLCJ0cmFuYS5u'@; put 'byIsInRyYW5veS5ubyIsInRyYW5ceGY4eS5ubyIsInRyb2FuZGluLm5vIiwidHJvZ3N0YWQubm8iLCJ0clx4Zjhnc3RhZC5ubyIsInRyb21zYS5ubyIsInRyb21zby5ubyIsInRyb21zXHhmOC5ubyIsInRyb25kaGVpbS5ubyIsInRyeXNpbC5ubyIsInR2ZWRlc3RyYW5kLm5vIiwidHlkYWwu'@; put 'bm8iLCJ0eW5zZXQubm8iLCJ0eXNmam9yZC5ubyIsInR5c25lcy5ubyIsInR5c3ZceGU2ci5ubyIsInR5c3Zhci5ubyIsInVsbGVuc2FrZXIubm8iLCJ1bGxlbnN2YW5nLm5vIiwidWx2aWsubm8iLCJ1bmphcmdhLm5vIiwidW5qXHhlMXJnYS5ubyIsInV0c2lyYS5ubyIsInZhYXBzdGUubm8i'@; put 'LCJ2YWRzby5ubyIsInZhZHNceGY4Lm5vIiwidlx4ZTZyXHhmOHkubm8iLCJ2YWdhLm5vIiwidlx4ZTVnXHhlNS5ubyIsInZhZ2FuLm5vIiwidlx4ZTVnYW4ubm8iLCJ2YWdzb3kubm8iLCJ2XHhlNWdzXHhmOHkubm8iLCJ2YWtzZGFsLm5vIiwidmFsbGUubm8iLCJ2YW5nLm5vIiwidmFueWx2'@; put 'ZW4ubm8iLCJ2YXJkby5ubyIsInZhcmRceGY4Lm5vIiwidmFyZ2dhdC5ubyIsInZceGUxcmdnXHhlMXQubm8iLCJ2YXJveS5ubyIsInZlZnNuLm5vIiwidmVnYS5ubyIsInZlZ2Fyc2hlaS5ubyIsInZlZ1x4ZTVyc2hlaS5ubyIsInZlbm5lc2xhLm5vIiwidmVyZGFsLm5vIiwidmVycmFuLm5v'@; put 'IiwidmVzdGJ5Lm5vIiwic2FuZGUudmVzdGZvbGQubm8iLCJ2ZXN0bmVzLm5vIiwidmVzdHJlLXNsaWRyZS5ubyIsInZlc3RyZS10b3Rlbi5ubyIsInZlc3R2YWdveS5ubyIsInZlc3R2XHhlNWdceGY4eS5ubyIsInZldmVsc3RhZC5ubyIsInZpay5ubyIsInZpa25hLm5vIiwidmluZGFmam9y'@; put 'ZC5ubyIsInZvYWdhdC5ubyIsInZvbGRhLm5vIiwidm9zcy5ubyIsIioubnAiLCJuciIsImJpei5uciIsImNvbS5uciIsImVkdS5uciIsImdvdi5uciIsImluZm8ubnIiLCJuZXQubnIiLCJvcmcubnIiLCJudSIsIm56IiwiYWMubnoiLCJjby5ueiIsImNyaS5ueiIsImdlZWsubnoiLCJnZW4u'@; put 'bnoiLCJnb3Z0Lm56IiwiaGVhbHRoLm56IiwiaXdpLm56Iiwia2l3aS5ueiIsIm1hb3JpLm56IiwibVx1MDEwMW9yaS5ueiIsIm1pbC5ueiIsIm5ldC5ueiIsIm9yZy5ueiIsInBhcmxpYW1lbnQubnoiLCJzY2hvb2wubnoiLCJvbSIsImNvLm9tIiwiY29tLm9tIiwiZWR1Lm9tIiwiZ292Lm9t'@; put 'IiwibWVkLm9tIiwibXVzZXVtLm9tIiwibmV0Lm9tIiwib3JnLm9tIiwicHJvLm9tIiwib25pb24iLCJvcmciLCJwYSIsImFiby5wYSIsImFjLnBhIiwiY29tLnBhIiwiZWR1LnBhIiwiZ29iLnBhIiwiaW5nLnBhIiwibWVkLnBhIiwibmV0LnBhIiwibm9tLnBhIiwib3JnLnBhIiwic2xkLnBh'@; put 'IiwicGUiLCJjb20ucGUiLCJlZHUucGUiLCJnb2IucGUiLCJtaWwucGUiLCJuZXQucGUiLCJub20ucGUiLCJvcmcucGUiLCJwZiIsImNvbS5wZiIsImVkdS5wZiIsIm9yZy5wZiIsIioucGciLCJwaCIsImNvbS5waCIsImVkdS5waCIsImdvdi5waCIsImkucGgiLCJtaWwucGgiLCJuZXQucGgi'@; put 'LCJuZ28ucGgiLCJvcmcucGgiLCJwayIsImFjLnBrIiwiYml6LnBrIiwiY29tLnBrIiwiZWR1LnBrIiwiZmFtLnBrIiwiZ2twLnBrIiwiZ29iLnBrIiwiZ29nLnBrIiwiZ29rLnBrIiwiZ29uLnBrIiwiZ29wLnBrIiwiZ29zLnBrIiwiZ292LnBrIiwibmV0LnBrIiwib3JnLnBrIiwid2ViLnBr'@; put 'IiwicGwiLCJjb20ucGwiLCJuZXQucGwiLCJvcmcucGwiLCJhZ3JvLnBsIiwiYWlkLnBsIiwiYXRtLnBsIiwiYXV0by5wbCIsImJpei5wbCIsImVkdS5wbCIsImdtaW5hLnBsIiwiZ3NtLnBsIiwiaW5mby5wbCIsIm1haWwucGwiLCJtZWRpYS5wbCIsIm1pYXN0YS5wbCIsIm1pbC5wbCIsIm5p'@; put 'ZXJ1Y2hvbW9zY2kucGwiLCJub20ucGwiLCJwYy5wbCIsInBvd2lhdC5wbCIsInByaXYucGwiLCJyZWFsZXN0YXRlLnBsIiwicmVsLnBsIiwic2V4LnBsIiwic2hvcC5wbCIsInNrbGVwLnBsIiwic29zLnBsIiwic3prb2xhLnBsIiwidGFyZ2kucGwiLCJ0bS5wbCIsInRvdXJpc20ucGwiLCJ0'@; put 'cmF2ZWwucGwiLCJ0dXJ5c3R5a2EucGwiLCJnb3YucGwiLCJhcC5nb3YucGwiLCJncml3Lmdvdi5wbCIsImljLmdvdi5wbCIsImlzLmdvdi5wbCIsImttcHNwLmdvdi5wbCIsImtvbnN1bGF0Lmdvdi5wbCIsImtwcHNwLmdvdi5wbCIsImt3cC5nb3YucGwiLCJrd3BzcC5nb3YucGwiLCJtdXAu'@; put 'Z292LnBsIiwibXcuZ292LnBsIiwib2lhLmdvdi5wbCIsIm9pcm0uZ292LnBsIiwib2tlLmdvdi5wbCIsIm9vdy5nb3YucGwiLCJvc2Noci5nb3YucGwiLCJvdW0uZ292LnBsIiwicGEuZ292LnBsIiwicGluYi5nb3YucGwiLCJwaXcuZ292LnBsIiwicG8uZ292LnBsIiwicHIuZ292LnBsIiwi'@; put 'cHNwLmdvdi5wbCIsInBzc2UuZ292LnBsIiwicHVwLmdvdi5wbCIsInJ6Z3cuZ292LnBsIiwic2EuZ292LnBsIiwic2RuLmdvdi5wbCIsInNrby5nb3YucGwiLCJzby5nb3YucGwiLCJzci5nb3YucGwiLCJzdGFyb3N0d28uZ292LnBsIiwidWcuZ292LnBsIiwidWdpbS5nb3YucGwiLCJ1bS5n'@; put 'b3YucGwiLCJ1bWlnLmdvdi5wbCIsInVwb3cuZ292LnBsIiwidXBwby5nb3YucGwiLCJ1cy5nb3YucGwiLCJ1dy5nb3YucGwiLCJ1enMuZ292LnBsIiwid2lmLmdvdi5wbCIsIndpaWguZ292LnBsIiwid2luYi5nb3YucGwiLCJ3aW9zLmdvdi5wbCIsIndpdGQuZ292LnBsIiwid2l3Lmdvdi5w'@; put 'bCIsIndrei5nb3YucGwiLCJ3c2EuZ292LnBsIiwid3Nrci5nb3YucGwiLCJ3c3NlLmdvdi5wbCIsInd1b3ouZ292LnBsIiwid3ptaXV3Lmdvdi5wbCIsInpwLmdvdi5wbCIsInpwaXNkbi5nb3YucGwiLCJhdWd1c3Rvdy5wbCIsImJhYmlhLWdvcmEucGwiLCJiZWR6aW4ucGwiLCJiZXNraWR5'@; put 'LnBsIiwiYmlhbG93aWV6YS5wbCIsImJpYWx5c3Rvay5wbCIsImJpZWxhd2EucGwiLCJiaWVzemN6YWR5LnBsIiwiYm9sZXNsYXdpZWMucGwiLCJieWRnb3N6Y3oucGwiLCJieXRvbS5wbCIsImNpZXN6eW4ucGwiLCJjemVsYWR6LnBsIiwiY3plc3QucGwiLCJkbHVnb2xla2EucGwiLCJlbGJs'@; put 'YWcucGwiLCJlbGsucGwiLCJnbG9nb3cucGwiLCJnbmllem5vLnBsIiwiZ29ybGljZS5wbCIsImdyYWpld28ucGwiLCJpbGF3YS5wbCIsImphd29yem5vLnBsIiwiamVsZW5pYS1nb3JhLnBsIiwiamdvcmEucGwiLCJrYWxpc3oucGwiLCJrYXJwYWN6LnBsIiwia2FydHV6eS5wbCIsImthc3p1'@; put 'YnkucGwiLCJrYXRvd2ljZS5wbCIsImthemltaWVyei1kb2xueS5wbCIsImtlcG5vLnBsIiwia2V0cnp5bi5wbCIsImtsb2R6a28ucGwiLCJrb2JpZXJ6eWNlLnBsIiwia29sb2JyemVnLnBsIiwia29uaW4ucGwiLCJrb25za293b2xhLnBsIiwia3V0bm8ucGwiLCJsYXB5LnBsIiwibGVib3Jr'@; put 'LnBsIiwibGVnbmljYS5wbCIsImxlemFqc2sucGwiLCJsaW1hbm93YS5wbCIsImxvbXphLnBsIiwibG93aWN6LnBsIiwibHViaW4ucGwiLCJsdWtvdy5wbCIsIm1hbGJvcmsucGwiLCJtYWxvcG9sc2thLnBsIiwibWF6b3dzemUucGwiLCJtYXp1cnkucGwiLCJtaWVsZWMucGwiLCJtaWVsbm8u'@; put 'cGwiLCJtcmFnb3dvLnBsIiwibmFrbG8ucGwiLCJub3dhcnVkYS5wbCIsIm55c2EucGwiLCJvbGF3YS5wbCIsIm9sZWNrby5wbCIsIm9sa3Vzei5wbCIsIm9sc3p0eW4ucGwiLCJvcG9jem5vLnBsIiwib3BvbGUucGwiLCJvc3Ryb2RhLnBsIiwib3N0cm9sZWthLnBsIiwib3N0cm93aWVjLnBs'@; put 'Iiwib3N0cm93d2xrcC5wbCIsInBpbGEucGwiLCJwaXN6LnBsIiwicG9kaGFsZS5wbCIsInBvZGxhc2llLnBsIiwicG9sa293aWNlLnBsIiwicG9tb3Jza2llLnBsIiwicG9tb3J6ZS5wbCIsInByb2Nob3dpY2UucGwiLCJwcnVzemtvdy5wbCIsInByemV3b3Jzay5wbCIsInB1bGF3eS5wbCIs'@; put 'InJhZG9tLnBsIiwicmF3YS1tYXoucGwiLCJyeWJuaWsucGwiLCJyemVzem93LnBsIiwic2Fub2sucGwiLCJzZWpueS5wbCIsInNrb2N6b3cucGwiLCJzbGFzay5wbCIsInNsdXBzay5wbCIsInNvc25vd2llYy5wbCIsInN0YWxvd2Etd29sYS5wbCIsInN0YXJhY2hvd2ljZS5wbCIsInN0YXJn'@; put 'YXJkLnBsIiwic3V3YWxraS5wbCIsInN3aWRuaWNhLnBsIiwic3dpZWJvZHppbi5wbCIsInN3aW5vdWpzY2llLnBsIiwic3pjemVjaW4ucGwiLCJzemN6eXRuby5wbCIsInRhcm5vYnJ6ZWcucGwiLCJ0Z29yeS5wbCIsInR1cmVrLnBsIiwidHljaHkucGwiLCJ1c3RrYS5wbCIsIndhbGJyenlj'@; put 'aC5wbCIsIndhcm1pYS5wbCIsIndhcnN6YXdhLnBsIiwid2F3LnBsIiwid2Vncm93LnBsIiwid2llbHVuLnBsIiwid2xvY2wucGwiLCJ3bG9jbGF3ZWsucGwiLCJ3b2R6aXNsYXcucGwiLCJ3b2xvbWluLnBsIiwid3JvY2xhdy5wbCIsInphY2hwb21vci5wbCIsInphZ2FuLnBsIiwiemFyb3cu'@; put 'cGwiLCJ6Z29yYS5wbCIsInpnb3J6ZWxlYy5wbCIsInBtIiwicG4iLCJjby5wbiIsImVkdS5wbiIsImdvdi5wbiIsIm5ldC5wbiIsIm9yZy5wbiIsInBvc3QiLCJwciIsImJpei5wciIsImNvbS5wciIsImVkdS5wciIsImdvdi5wciIsImluZm8ucHIiLCJpc2xhLnByIiwibmFtZS5wciIsIm5l'@; put 'dC5wciIsIm9yZy5wciIsInByby5wciIsImFjLnByIiwiZXN0LnByIiwicHJvZi5wciIsInBybyIsImFhYS5wcm8iLCJhY2EucHJvIiwiYWNjdC5wcm8iLCJhdm9jYXQucHJvIiwiYmFyLnBybyIsImNwYS5wcm8iLCJlbmcucHJvIiwianVyLnBybyIsImxhdy5wcm8iLCJtZWQucHJvIiwicmVj'@; put 'aHQucHJvIiwicHMiLCJjb20ucHMiLCJlZHUucHMiLCJnb3YucHMiLCJuZXQucHMiLCJvcmcucHMiLCJwbG8ucHMiLCJzZWMucHMiLCJwdCIsImNvbS5wdCIsImVkdS5wdCIsImdvdi5wdCIsImludC5wdCIsIm5ldC5wdCIsIm5vbWUucHQiLCJvcmcucHQiLCJwdWJsLnB0IiwicHciLCJiZWxh'@; put 'dS5wdyIsImNvLnB3IiwiZWQucHciLCJnby5wdyIsIm9yLnB3IiwicHkiLCJjb20ucHkiLCJjb29wLnB5IiwiZWR1LnB5IiwiZ292LnB5IiwibWlsLnB5IiwibmV0LnB5Iiwib3JnLnB5IiwicWEiLCJjb20ucWEiLCJlZHUucWEiLCJnb3YucWEiLCJtaWwucWEiLCJuYW1lLnFhIiwibmV0LnFh'@; put 'Iiwib3JnLnFhIiwic2NoLnFhIiwicmUiLCJhc3NvLnJlIiwiY29tLnJlIiwicm8iLCJhcnRzLnJvIiwiY29tLnJvIiwiZmlybS5ybyIsImluZm8ucm8iLCJub20ucm8iLCJudC5ybyIsIm9yZy5ybyIsInJlYy5ybyIsInN0b3JlLnJvIiwidG0ucm8iLCJ3d3cucm8iLCJycyIsImFjLnJzIiwi'@; put 'Y28ucnMiLCJlZHUucnMiLCJnb3YucnMiLCJpbi5ycyIsIm9yZy5ycyIsInJ1IiwicnciLCJhYy5ydyIsImNvLnJ3IiwiY29vcC5ydyIsImdvdi5ydyIsIm1pbC5ydyIsIm5ldC5ydyIsIm9yZy5ydyIsInNhIiwiY29tLnNhIiwiZWR1LnNhIiwiZ292LnNhIiwibWVkLnNhIiwibmV0LnNhIiwi'@; put 'b3JnLnNhIiwicHViLnNhIiwic2NoLnNhIiwic2IiLCJjb20uc2IiLCJlZHUuc2IiLCJnb3Yuc2IiLCJuZXQuc2IiLCJvcmcuc2IiLCJzYyIsImNvbS5zYyIsImVkdS5zYyIsImdvdi5zYyIsIm5ldC5zYyIsIm9yZy5zYyIsInNkIiwiY29tLnNkIiwiZWR1LnNkIiwiZ292LnNkIiwiaW5mby5z'@; put 'ZCIsIm1lZC5zZCIsIm5ldC5zZCIsIm9yZy5zZCIsInR2LnNkIiwic2UiLCJhLnNlIiwiYWMuc2UiLCJiLnNlIiwiYmQuc2UiLCJicmFuZC5zZSIsImMuc2UiLCJkLnNlIiwiZS5zZSIsImYuc2UiLCJmaC5zZSIsImZoc2suc2UiLCJmaHYuc2UiLCJnLnNlIiwiaC5zZSIsImkuc2UiLCJrLnNl'@; put 'Iiwia29tZm9yYi5zZSIsImtvbW11bmFsZm9yYnVuZC5zZSIsImtvbXZ1eC5zZSIsImwuc2UiLCJsYW5iaWIuc2UiLCJtLnNlIiwibi5zZSIsIm5hdHVyYnJ1a3NneW1uLnNlIiwiby5zZSIsIm9yZy5zZSIsInAuc2UiLCJwYXJ0aS5zZSIsInBwLnNlIiwicHJlc3Muc2UiLCJyLnNlIiwicy5z'@; put 'ZSIsInQuc2UiLCJ0bS5zZSIsInUuc2UiLCJ3LnNlIiwieC5zZSIsInkuc2UiLCJ6LnNlIiwic2ciLCJjb20uc2ciLCJlZHUuc2ciLCJnb3Yuc2ciLCJuZXQuc2ciLCJvcmcuc2ciLCJzaCIsImNvbS5zaCIsImdvdi5zaCIsIm1pbC5zaCIsIm5ldC5zaCIsIm9yZy5zaCIsInNpIiwic2oiLCJz'@; put 'ayIsInNsIiwiY29tLnNsIiwiZWR1LnNsIiwiZ292LnNsIiwibmV0LnNsIiwib3JnLnNsIiwic20iLCJzbiIsImFydC5zbiIsImNvbS5zbiIsImVkdS5zbiIsImdvdXYuc24iLCJvcmcuc24iLCJwZXJzby5zbiIsInVuaXYuc24iLCJzbyIsImNvbS5zbyIsImVkdS5zbyIsImdvdi5zbyIsIm1l'@; put 'LnNvIiwibmV0LnNvIiwib3JnLnNvIiwic3IiLCJzcyIsImJpei5zcyIsImNvLnNzIiwiY29tLnNzIiwiZWR1LnNzIiwiZ292LnNzIiwibWUuc3MiLCJuZXQuc3MiLCJvcmcuc3MiLCJzY2guc3MiLCJzdCIsImNvLnN0IiwiY29tLnN0IiwiY29uc3VsYWRvLnN0IiwiZWR1LnN0IiwiZW1iYWl4'@; put 'YWRhLnN0IiwibWlsLnN0IiwibmV0LnN0Iiwib3JnLnN0IiwicHJpbmNpcGUuc3QiLCJzYW90b21lLnN0Iiwic3RvcmUuc3QiLCJzdSIsInN2IiwiY29tLnN2IiwiZWR1LnN2IiwiZ29iLnN2Iiwib3JnLnN2IiwicmVkLnN2Iiwic3giLCJnb3Yuc3giLCJzeSIsImNvbS5zeSIsImVkdS5zeSIs'@; put 'Imdvdi5zeSIsIm1pbC5zeSIsIm5ldC5zeSIsIm9yZy5zeSIsInN6IiwiYWMuc3oiLCJjby5zeiIsIm9yZy5zeiIsInRjIiwidGQiLCJ0ZWwiLCJ0ZiIsInRnIiwidGgiLCJhYy50aCIsImNvLnRoIiwiZ28udGgiLCJpbi50aCIsIm1pLnRoIiwibmV0LnRoIiwib3IudGgiLCJ0aiIsImFjLnRq'@; put 'IiwiYml6LnRqIiwiY28udGoiLCJjb20udGoiLCJlZHUudGoiLCJnby50aiIsImdvdi50aiIsImludC50aiIsIm1pbC50aiIsIm5hbWUudGoiLCJuZXQudGoiLCJuaWMudGoiLCJvcmcudGoiLCJ0ZXN0LnRqIiwid2ViLnRqIiwidGsiLCJ0bCIsImdvdi50bCIsInRtIiwiY28udG0iLCJjb20u'@; put 'dG0iLCJlZHUudG0iLCJnb3YudG0iLCJtaWwudG0iLCJuZXQudG0iLCJub20udG0iLCJvcmcudG0iLCJ0biIsImNvbS50biIsImVucy50biIsImZpbi50biIsImdvdi50biIsImluZC50biIsImluZm8udG4iLCJpbnRsLnRuIiwibWluY29tLnRuIiwibmF0LnRuIiwibmV0LnRuIiwib3JnLnRu'@; put 'IiwicGVyc28udG4iLCJ0b3VyaXNtLnRuIiwidG8iLCJjb20udG8iLCJlZHUudG8iLCJnb3YudG8iLCJtaWwudG8iLCJuZXQudG8iLCJvcmcudG8iLCJ0ciIsImF2LnRyIiwiYmJzLnRyIiwiYmVsLnRyIiwiYml6LnRyIiwiY29tLnRyIiwiZHIudHIiLCJlZHUudHIiLCJnZW4udHIiLCJnb3Yu'@; put 'dHIiLCJpbmZvLnRyIiwiazEyLnRyIiwia2VwLnRyIiwibWlsLnRyIiwibmFtZS50ciIsIm5ldC50ciIsIm9yZy50ciIsInBvbC50ciIsInRlbC50ciIsInRzay50ciIsInR2LnRyIiwid2ViLnRyIiwibmMudHIiLCJnb3YubmMudHIiLCJ0dCIsImJpei50dCIsImNvLnR0IiwiY29tLnR0Iiwi'@; put 'ZWR1LnR0IiwiZ292LnR0IiwiaW5mby50dCIsIm1pbC50dCIsIm5hbWUudHQiLCJuZXQudHQiLCJvcmcudHQiLCJwcm8udHQiLCJ0diIsInR3IiwiY2x1Yi50dyIsImNvbS50dyIsImViaXoudHciLCJlZHUudHciLCJnYW1lLnR3IiwiZ292LnR3IiwiaWR2LnR3IiwibWlsLnR3IiwibmV0LnR3'@; put 'Iiwib3JnLnR3IiwidHoiLCJhYy50eiIsImNvLnR6IiwiZ28udHoiLCJob3RlbC50eiIsImluZm8udHoiLCJtZS50eiIsIm1pbC50eiIsIm1vYmkudHoiLCJuZS50eiIsIm9yLnR6Iiwic2MudHoiLCJ0di50eiIsInVhIiwiY29tLnVhIiwiZWR1LnVhIiwiZ292LnVhIiwiaW4udWEiLCJuZXQu'@; put 'dWEiLCJvcmcudWEiLCJjaGVya2Fzc3kudWEiLCJjaGVya2FzeS51YSIsImNoZXJuaWdvdi51YSIsImNoZXJuaWhpdi51YSIsImNoZXJuaXZ0c2kudWEiLCJjaGVybm92dHN5LnVhIiwiY2sudWEiLCJjbi51YSIsImNyLnVhIiwiY3JpbWVhLnVhIiwiY3YudWEiLCJkbi51YSIsImRuZXByb3Bl'@; put 'dHJvdnNrLnVhIiwiZG5pcHJvcGV0cm92c2sudWEiLCJkb25ldHNrLnVhIiwiZHAudWEiLCJpZi51YSIsIml2YW5vLWZyYW5raXZzay51YSIsImtoLnVhIiwia2hhcmtpdi51YSIsImtoYXJrb3YudWEiLCJraGVyc29uLnVhIiwia2htZWxuaXRza2l5LnVhIiwia2htZWxueXRza3lpLnVhIiwi'@; put 'a2lldi51YSIsImtpcm92b2dyYWQudWEiLCJrbS51YSIsImtyLnVhIiwia3JvcHl2bnl0c2t5aS51YSIsImtyeW0udWEiLCJrcy51YSIsImt2LnVhIiwia3lpdi51YSIsImxnLnVhIiwibHQudWEiLCJsdWdhbnNrLnVhIiwibHVoYW5zay51YSIsImx1dHNrLnVhIiwibHYudWEiLCJsdml2LnVh'@; put 'IiwibWsudWEiLCJteWtvbGFpdi51YSIsIm5pa29sYWV2LnVhIiwib2QudWEiLCJvZGVzYS51YSIsIm9kZXNzYS51YSIsInBsLnVhIiwicG9sdGF2YS51YSIsInJpdm5lLnVhIiwicm92bm8udWEiLCJydi51YSIsInNiLnVhIiwic2ViYXN0b3BvbC51YSIsInNldmFzdG9wb2wudWEiLCJzbS51'@; put 'YSIsInN1bXkudWEiLCJ0ZS51YSIsInRlcm5vcGlsLnVhIiwidXoudWEiLCJ1emhnb3JvZC51YSIsInV6aGhvcm9kLnVhIiwidmlubmljYS51YSIsInZpbm55dHNpYS51YSIsInZuLnVhIiwidm9seW4udWEiLCJ5YWx0YS51YSIsInpha2FycGF0dGlhLnVhIiwiemFwb3Jpemh6aGUudWEiLCJ6'@; put 'YXBvcml6aHpoaWEudWEiLCJ6aGl0b21pci51YSIsInpoeXRvbXlyLnVhIiwienAudWEiLCJ6dC51YSIsInVnIiwiYWMudWciLCJjby51ZyIsImNvbS51ZyIsImdvLnVnIiwibmUudWciLCJvci51ZyIsIm9yZy51ZyIsInNjLnVnIiwidWsiLCJhYy51ayIsImNvLnVrIiwiZ292LnVrIiwibHRk'@; put 'LnVrIiwibWUudWsiLCJuZXQudWsiLCJuaHMudWsiLCJvcmcudWsiLCJwbGMudWsiLCJwb2xpY2UudWsiLCIqLnNjaC51ayIsInVzIiwiZG5pLnVzIiwiZmVkLnVzIiwiaXNhLnVzIiwia2lkcy51cyIsIm5zbi51cyIsImFrLnVzIiwiYWwudXMiLCJhci51cyIsImFzLnVzIiwiYXoudXMiLCJj'@; put 'YS51cyIsImNvLnVzIiwiY3QudXMiLCJkYy51cyIsImRlLnVzIiwiZmwudXMiLCJnYS51cyIsImd1LnVzIiwiaGkudXMiLCJpYS51cyIsImlkLnVzIiwiaWwudXMiLCJpbi51cyIsImtzLnVzIiwia3kudXMiLCJsYS51cyIsIm1hLnVzIiwibWQudXMiLCJtZS51cyIsIm1pLnVzIiwibW4udXMi'@; put 'LCJtby51cyIsIm1zLnVzIiwibXQudXMiLCJuYy51cyIsIm5kLnVzIiwibmUudXMiLCJuaC51cyIsIm5qLnVzIiwibm0udXMiLCJudi51cyIsIm55LnVzIiwib2gudXMiLCJvay51cyIsIm9yLnVzIiwicGEudXMiLCJwci51cyIsInJpLnVzIiwic2MudXMiLCJzZC51cyIsInRuLnVzIiwidHgu'@; put 'dXMiLCJ1dC51cyIsInZhLnVzIiwidmkudXMiLCJ2dC51cyIsIndhLnVzIiwid2kudXMiLCJ3di51cyIsInd5LnVzIiwiazEyLmFrLnVzIiwiazEyLmFsLnVzIiwiazEyLmFyLnVzIiwiazEyLmFzLnVzIiwiazEyLmF6LnVzIiwiazEyLmNhLnVzIiwiazEyLmNvLnVzIiwiazEyLmN0LnVzIiwi'@; put 'azEyLmRjLnVzIiwiazEyLmZsLnVzIiwiazEyLmdhLnVzIiwiazEyLmd1LnVzIiwiazEyLmlhLnVzIiwiazEyLmlkLnVzIiwiazEyLmlsLnVzIiwiazEyLmluLnVzIiwiazEyLmtzLnVzIiwiazEyLmt5LnVzIiwiazEyLmxhLnVzIiwiazEyLm1hLnVzIiwiazEyLm1kLnVzIiwiazEyLm1lLnVz'@; put 'IiwiazEyLm1pLnVzIiwiazEyLm1uLnVzIiwiazEyLm1vLnVzIiwiazEyLm1zLnVzIiwiazEyLm10LnVzIiwiazEyLm5jLnVzIiwiazEyLm5lLnVzIiwiazEyLm5oLnVzIiwiazEyLm5qLnVzIiwiazEyLm5tLnVzIiwiazEyLm52LnVzIiwiazEyLm55LnVzIiwiazEyLm9oLnVzIiwiazEyLm9r'@; put 'LnVzIiwiazEyLm9yLnVzIiwiazEyLnBhLnVzIiwiazEyLnByLnVzIiwiazEyLnNjLnVzIiwiazEyLnRuLnVzIiwiazEyLnR4LnVzIiwiazEyLnV0LnVzIiwiazEyLnZhLnVzIiwiazEyLnZpLnVzIiwiazEyLnZ0LnVzIiwiazEyLndhLnVzIiwiazEyLndpLnVzIiwiY2MuYWsudXMiLCJsaWIu'@; put 'YWsudXMiLCJjYy5hbC51cyIsImxpYi5hbC51cyIsImNjLmFyLnVzIiwibGliLmFyLnVzIiwiY2MuYXMudXMiLCJsaWIuYXMudXMiLCJjYy5hei51cyIsImxpYi5hei51cyIsImNjLmNhLnVzIiwibGliLmNhLnVzIiwiY2MuY28udXMiLCJsaWIuY28udXMiLCJjYy5jdC51cyIsImxpYi5jdC51'@; put 'cyIsImNjLmRjLnVzIiwibGliLmRjLnVzIiwiY2MuZGUudXMiLCJjYy5mbC51cyIsImNjLmdhLnVzIiwiY2MuZ3UudXMiLCJjYy5oaS51cyIsImNjLmlhLnVzIiwiY2MuaWQudXMiLCJjYy5pbC51cyIsImNjLmluLnVzIiwiY2Mua3MudXMiLCJjYy5reS51cyIsImNjLmxhLnVzIiwiY2MubWEu'@; put 'dXMiLCJjYy5tZC51cyIsImNjLm1lLnVzIiwiY2MubWkudXMiLCJjYy5tbi51cyIsImNjLm1vLnVzIiwiY2MubXMudXMiLCJjYy5tdC51cyIsImNjLm5jLnVzIiwiY2MubmQudXMiLCJjYy5uZS51cyIsImNjLm5oLnVzIiwiY2MubmoudXMiLCJjYy5ubS51cyIsImNjLm52LnVzIiwiY2Mubnku'@; put 'dXMiLCJjYy5vaC51cyIsImNjLm9rLnVzIiwiY2Mub3IudXMiLCJjYy5wYS51cyIsImNjLnByLnVzIiwiY2MucmkudXMiLCJjYy5zYy51cyIsImNjLnNkLnVzIiwiY2MudG4udXMiLCJjYy50eC51cyIsImNjLnV0LnVzIiwiY2MudmEudXMiLCJjYy52aS51cyIsImNjLnZ0LnVzIiwiY2Mud2Eu'@; put 'dXMiLCJjYy53aS51cyIsImNjLnd2LnVzIiwiY2Mud3kudXMiLCJrMTIud3kudXMiLCJsaWIuZmwudXMiLCJsaWIuZ2EudXMiLCJsaWIuZ3UudXMiLCJsaWIuaGkudXMiLCJsaWIuaWEudXMiLCJsaWIuaWQudXMiLCJsaWIuaWwudXMiLCJsaWIuaW4udXMiLCJsaWIua3MudXMiLCJsaWIua3ku'@; put 'dXMiLCJsaWIubGEudXMiLCJsaWIubWEudXMiLCJsaWIubWQudXMiLCJsaWIubWUudXMiLCJsaWIubWkudXMiLCJsaWIubW4udXMiLCJsaWIubW8udXMiLCJsaWIubXMudXMiLCJsaWIubXQudXMiLCJsaWIubmMudXMiLCJsaWIubmQudXMiLCJsaWIubmUudXMiLCJsaWIubmgudXMiLCJsaWIu'@; put 'bmoudXMiLCJsaWIubm0udXMiLCJsaWIubnYudXMiLCJsaWIubnkudXMiLCJsaWIub2gudXMiLCJsaWIub2sudXMiLCJsaWIub3IudXMiLCJsaWIucGEudXMiLCJsaWIucHIudXMiLCJsaWIucmkudXMiLCJsaWIuc2MudXMiLCJsaWIuc2QudXMiLCJsaWIudG4udXMiLCJsaWIudHgudXMiLCJs'@; put 'aWIudXQudXMiLCJsaWIudmEudXMiLCJsaWIudmkudXMiLCJsaWIudnQudXMiLCJsaWIud2EudXMiLCJsaWIud2kudXMiLCJsaWIud3kudXMiLCJjaHRyLmsxMi5tYS51cyIsInBhcm9jaC5rMTIubWEudXMiLCJwdnQuazEyLm1hLnVzIiwiYW5uLWFyYm9yLm1pLnVzIiwiY29nLm1pLnVzIiwi'@; put 'ZHN0Lm1pLnVzIiwiZWF0b24ubWkudXMiLCJnZW4ubWkudXMiLCJtdXMubWkudXMiLCJ0ZWMubWkudXMiLCJ3YXNodGVuYXcubWkudXMiLCJ1eSIsImNvbS51eSIsImVkdS51eSIsImd1Yi51eSIsIm1pbC51eSIsIm5ldC51eSIsIm9yZy51eSIsInV6IiwiY28udXoiLCJjb20udXoiLCJuZXQu'@; put 'dXoiLCJvcmcudXoiLCJ2YSIsInZjIiwiY29tLnZjIiwiZWR1LnZjIiwiZ292LnZjIiwibWlsLnZjIiwibmV0LnZjIiwib3JnLnZjIiwidmUiLCJhcnRzLnZlIiwiYmliLnZlIiwiY28udmUiLCJjb20udmUiLCJlMTIudmUiLCJlZHUudmUiLCJmaXJtLnZlIiwiZ29iLnZlIiwiZ292LnZlIiwi'@; put 'aW5mby52ZSIsImludC52ZSIsIm1pbC52ZSIsIm5ldC52ZSIsIm5vbS52ZSIsIm9yZy52ZSIsInJhci52ZSIsInJlYy52ZSIsInN0b3JlLnZlIiwidGVjLnZlIiwid2ViLnZlIiwidmciLCJ2aSIsImNvLnZpIiwiY29tLnZpIiwiazEyLnZpIiwibmV0LnZpIiwib3JnLnZpIiwidm4iLCJhYy52'@; put 'biIsImFpLnZuIiwiYml6LnZuIiwiY29tLnZuIiwiZWR1LnZuIiwiZ292LnZuIiwiaGVhbHRoLnZuIiwiaWQudm4iLCJpbmZvLnZuIiwiaW50LnZuIiwiaW8udm4iLCJuYW1lLnZuIiwibmV0LnZuIiwib3JnLnZuIiwicHJvLnZuIiwiYW5naWFuZy52biIsImJhY2dpYW5nLnZuIiwiYmFja2Fu'@; put 'LnZuIiwiYmFjbGlldS52biIsImJhY25pbmgudm4iLCJiYXJpYS12dW5ndGF1LnZuIiwiYmVudHJlLnZuIiwiYmluaGRpbmgudm4iLCJiaW5oZHVvbmcudm4iLCJiaW5ocGh1b2Mudm4iLCJiaW5odGh1YW4udm4iLCJjYW1hdS52biIsImNhbnRoby52biIsImNhb2Jhbmcudm4iLCJkYWtsYWsu'@; put 'dm4iLCJkYWtub25nLnZuIiwiZGFuYW5nLnZuIiwiZGllbmJpZW4udm4iLCJkb25nbmFpLnZuIiwiZG9uZ3RoYXAudm4iLCJnaWFsYWkudm4iLCJoYWdpYW5nLnZuIiwiaGFpZHVvbmcudm4iLCJoYWlwaG9uZy52biIsImhhbmFtLnZuIiwiaGFub2kudm4iLCJoYXRpbmgudm4iLCJoYXVnaWFu'@; put 'Zy52biIsImhvYWJpbmgudm4iLCJodW5neWVuLnZuIiwia2hhbmhob2Eudm4iLCJraWVuZ2lhbmcudm4iLCJrb250dW0udm4iLCJsYWljaGF1LnZuIiwibGFtZG9uZy52biIsImxhbmdzb24udm4iLCJsYW9jYWkudm4iLCJsb25nYW4udm4iLCJuYW1kaW5oLnZuIiwibmdoZWFuLnZuIiwibmlu'@; put 'aGJpbmgudm4iLCJuaW5odGh1YW4udm4iLCJwaHV0aG8udm4iLCJwaHV5ZW4udm4iLCJxdWFuZ2Jpbmgudm4iLCJxdWFuZ25hbS52biIsInF1YW5nbmdhaS52biIsInF1YW5nbmluaC52biIsInF1YW5ndHJpLnZuIiwic29jdHJhbmcudm4iLCJzb25sYS52biIsInRheW5pbmgudm4iLCJ0aGFp'@; put 'YmluaC52biIsInRoYWluZ3V5ZW4udm4iLCJ0aGFuaGhvYS52biIsInRoYW5ocGhvaG9jaGltaW5oLnZuIiwidGh1YXRoaWVuaHVlLnZuIiwidGllbmdpYW5nLnZuIiwidHJhdmluaC52biIsInR1eWVucXVhbmcudm4iLCJ2aW5obG9uZy52biIsInZpbmhwaHVjLnZuIiwieWVuYmFpLnZuIiwi'@; put 'dnUiLCJjb20udnUiLCJlZHUudnUiLCJuZXQudnUiLCJvcmcudnUiLCJ3ZiIsIndzIiwiY29tLndzIiwiZWR1LndzIiwiZ292LndzIiwibmV0LndzIiwib3JnLndzIiwieXQiLCJcdTA2MjdcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MjdcdTA2MmEiLCJcdTA1NzBcdTA1NjFcdTA1NzUiLCJcdTA5'@; put 'YWNcdTA5YmVcdTA5ODJcdTA5YjJcdTA5YmUiLCJcdTA0MzFcdTA0MzMiLCJcdTA2MjdcdTA2NDRcdTA2MjhcdTA2MmRcdTA2MzFcdTA2NGFcdTA2NDYiLCJcdTA0MzFcdTA0MzVcdTA0M2IiLCJcdTRlMmRcdTU2ZmQiLCJcdTRlMmRcdTU3MGIiLCJcdTA2MjdcdTA2NDRcdTA2MmNcdTA2MzJc'@; put 'dTA2MjdcdTA2MjZcdTA2MzEiLCJcdTA2NDVcdTA2MzVcdTA2MzEiLCJcdTA0MzVcdTA0NGUiLCJcdTAzYjVcdTAzYzUiLCJcdTA2NDVcdTA2NDhcdTA2MzFcdTA2NGFcdTA2MmFcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjciLCJcdTEwZDJcdTEwZDQiLCJcdTAzYjVcdTAzYmIiLCJcdTk5OTlc'@; put 'dTZlMmYiLCJcdTUwMGJcdTRlYmEuXHU5OTk5XHU2ZTJmIiwiXHU1MTZjXHU1M2Y4Llx1OTk5OVx1NmUyZiIsIlx1NjUzZlx1NWU5Yy5cdTk5OTlcdTZlMmYiLCJcdTY1NTlcdTgwYjIuXHU5OTk5XHU2ZTJmIiwiXHU3ZDQ0XHU3ZTU0Llx1OTk5OVx1NmUyZiIsIlx1N2RiMlx1N2Q2MS5cdTk5'@; put 'OTlcdTZlMmYiLCJcdTBjYWRcdTBjYmVcdTBjYjBcdTBjYTQiLCJcdTBiMmRcdTBiM2VcdTBiMzBcdTBiMjQiLCJcdTA5YWRcdTA5YmVcdTA5ZjBcdTA5YTQiLCJcdTA5MmRcdTA5M2VcdTA5MzBcdTA5MjRcdTA5MmVcdTA5NGQiLCJcdTA5MmRcdTA5M2VcdTA5MzBcdTA5NGJcdTA5MjQiLCJc'@; put 'dTA2ODBcdTA2MjdcdTA2MzFcdTA2MmEiLCJcdTBkMmRcdTBkM2VcdTBkMzBcdTBkMjRcdTBkMDIiLCJcdTA5MmRcdTA5M2VcdTA5MzBcdTA5MjQiLCJcdTA2MjhcdTA2MjdcdTA2MzFcdTA2MmEiLCJcdTA2MjhcdTA2YmVcdTA2MjdcdTA2MzFcdTA2MmEiLCJcdTBjMmRcdTBjM2VcdTBjMzBc'@; put 'dTBjMjRcdTBjNGQiLCJcdTBhYWRcdTBhYmVcdTBhYjBcdTBhYTQiLCJcdTBhMmRcdTBhM2VcdTBhMzBcdTBhMjQiLCJcdTA5YWRcdTA5YmVcdTA5YjBcdTA5YTQiLCJcdTBiODdcdTBiYThcdTBiY2RcdTBiYTRcdTBiYmZcdTBiYWZcdTBiYmUiLCJcdTA2MjdcdTA2Y2NcdTA2MzFcdTA2Mjdc'@; put 'dTA2NDYiLCJcdTA2MjdcdTA2NGFcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MzFcdTA2MjdcdTA2NDIiLCJcdTA2MjdcdTA2NDRcdTA2MjdcdTA2MzFcdTA2MmZcdTA2NDYiLCJcdWQ1NWNcdWFkNmQiLCJcdTA0OWJcdTA0MzBcdTA0MzciLCJcdTBlYTVcdTBlYjJcdTBlYTciLCJc'@; put 'dTBkYmRcdTBkODJcdTBkOWFcdTBkY2YiLCJcdTBiODdcdTBiYjJcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYzgiLCJcdTA2MjdcdTA2NDRcdTA2NDVcdTA2M2FcdTA2MzFcdTA2MjgiLCJcdTA0M2NcdTA0M2FcdTA0MzQiLCJcdTA0M2NcdTA0M2VcdTA0M2QiLCJcdTZmYjNcdTk1ODAiLCJcdTZm'@; put 'YjNcdTk1ZTgiLCJcdTA2NDVcdTA2NDRcdTA2NGFcdTA2MzNcdTA2NGFcdTA2MjciLCJcdTA2MzlcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2N2VcdTA2MjdcdTA2YTlcdTA2MzNcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2N2VcdTA2MjdcdTA2NDNcdTA2MzNcdTA2MmFcdTA2MjdcdTA2NDYi'@; put 'LCJcdTA2NDFcdTA2NDRcdTA2MzNcdTA2MzdcdTA2NGFcdTA2NDYiLCJcdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0MzBcdTA0M2EuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNlXHUwNDMxXHUwNDQwLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzZVx1MDQzNC5cdTA0NDFcdTA0NDBcdTA0'@; put 'MzEiLCJcdTA0M2VcdTA0NDBcdTA0MzMuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNmXHUwNDQwLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQ0M1x1MDQzZlx1MDQ0MC5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0NDBcdTA0NDQiLCJcdTA2NDJcdTA2MzdcdTA2MzEiLCJcdTA2MjdcdTA2'@; put 'NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2NGFcdTA2MjkiLCJcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2Y2NcdTA2MjkiLCJcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2Y2NcdTA2YzMiLCJcdTA2MjdcdTA2NDRcdTA2MzNcdTA2'@; put 'MzlcdTA2NDhcdTA2MmZcdTA2NGFcdTA2NDciLCJcdTA2MzNcdTA2NDhcdTA2MmZcdTA2MjdcdTA2NDYiLCJcdTY1YjBcdTUyYTBcdTU3NjEiLCJcdTBiOWFcdTBiYmZcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYWFcdTBiY2RcdTBiYWFcdTBiYzJcdTBiYjBcdTBiY2QiLCJcdTA2MzNcdTA2NDhc'@; put 'dTA2MzFcdTA2NGFcdTA2MjkiLCJcdTA2MzNcdTA2NDhcdTA2MzFcdTA2NGFcdTA2MjciLCJcdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMTdcdTBlMmJcdTBlMzJcdTBlMjMuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTE4XHUwZTM4XHUwZTIzXHUwZTAxXHUwZTM0XHUwZTA4Llx1MGU0NFx1'@; put 'MGUxN1x1MGUyMiIsIlx1MGU0MFx1MGUxOVx1MGU0N1x1MGUxNS5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMjNcdTBlMzFcdTBlMTBcdTBlMWFcdTBlMzJcdTBlMjUuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTI4XHUwZTM2XHUwZTAxXHUwZTI5XHUwZTMyLlx1MGU0NFx1MGUxN1x1MGUy'@; put 'MiIsIlx1MGUyZFx1MGUwN1x1MGUwNFx1MGU0Y1x1MGUwMVx1MGUyMy5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTA2MmFcdTA2NDhcdTA2NDZcdTA2MzMiLCJcdTUzZjBcdTcwNjMiLCJcdTUzZjBcdTZlN2UiLCJcdTgxZmFcdTcwNjMiLCJcdTA0NDNcdTA0M2FcdTA0NDAiLCJcdTA2MjdcdTA2'@; put 'NDRcdTA2NGFcdTA2NDVcdTA2NDYiLCJ4eHgiLCJ5ZSIsImNvbS55ZSIsImVkdS55ZSIsImdvdi55ZSIsIm1pbC55ZSIsIm5ldC55ZSIsIm9yZy55ZSIsImFjLnphIiwiYWdyaWMuemEiLCJhbHQuemEiLCJjby56YSIsImVkdS56YSIsImdvdi56YSIsImdyb25kYXIuemEiLCJsYXcuemEiLCJt'@; put 'aWwuemEiLCJuZXQuemEiLCJuZ28uemEiLCJuaWMuemEiLCJuaXMuemEiLCJub20uemEiLCJvcmcuemEiLCJzY2hvb2wuemEiLCJ0bS56YSIsIndlYi56YSIsInptIiwiYWMuem0iLCJiaXouem0iLCJjby56bSIsImNvbS56bSIsImVkdS56bSIsImdvdi56bSIsImluZm8uem0iLCJtaWwuem0i'@; put 'LCJuZXQuem0iLCJvcmcuem0iLCJzY2guem0iLCJ6dyIsImFjLnp3IiwiY28uenciLCJnb3YuenciLCJtaWwuenciLCJvcmcuenciLCJhYWEiLCJhYXJwIiwiYWJiIiwiYWJib3R0IiwiYWJidmllIiwiYWJjIiwiYWJsZSIsImFib2dhZG8iLCJhYnVkaGFiaSIsImFjYWRlbXkiLCJhY2NlbnR1'@; put 'cmUiLCJhY2NvdW50YW50IiwiYWNjb3VudGFudHMiLCJhY28iLCJhY3RvciIsImFkcyIsImFkdWx0IiwiYWVnIiwiYWV0bmEiLCJhZmwiLCJhZnJpY2EiLCJhZ2FraGFuIiwiYWdlbmN5IiwiYWlnIiwiYWlyYnVzIiwiYWlyZm9yY2UiLCJhaXJ0ZWwiLCJha2RuIiwiYWxpYmFiYSIsImFsaXBh'@; put 'eSIsImFsbGZpbmFueiIsImFsbHN0YXRlIiwiYWxseSIsImFsc2FjZSIsImFsc3RvbSIsImFtYXpvbiIsImFtZXJpY2FuZXhwcmVzcyIsImFtZXJpY2FuZmFtaWx5IiwiYW1leCIsImFtZmFtIiwiYW1pY2EiLCJhbXN0ZXJkYW0iLCJhbmFseXRpY3MiLCJhbmRyb2lkIiwiYW5xdWFuIiwiYW56'@; put 'IiwiYW9sIiwiYXBhcnRtZW50cyIsImFwcCIsImFwcGxlIiwiYXF1YXJlbGxlIiwiYXJhYiIsImFyYW1jbyIsImFyY2hpIiwiYXJteSIsImFydCIsImFydGUiLCJhc2RhIiwiYXNzb2NpYXRlcyIsImF0aGxldGEiLCJhdHRvcm5leSIsImF1Y3Rpb24iLCJhdWRpIiwiYXVkaWJsZSIsImF1ZGlv'@; put 'IiwiYXVzcG9zdCIsImF1dGhvciIsImF1dG8iLCJhdXRvcyIsImF3cyIsImF4YSIsImF6dXJlIiwiYmFieSIsImJhaWR1IiwiYmFuYW1leCIsImJhbmQiLCJiYW5rIiwiYmFyIiwiYmFyY2Vsb25hIiwiYmFyY2xheWNhcmQiLCJiYXJjbGF5cyIsImJhcmVmb290IiwiYmFyZ2FpbnMiLCJiYXNl'@; put 'YmFsbCIsImJhc2tldGJhbGwiLCJiYXVoYXVzIiwiYmF5ZXJuIiwiYmJjIiwiYmJ0IiwiYmJ2YSIsImJjZyIsImJjbiIsImJlYXRzIiwiYmVhdXR5IiwiYmVlciIsImJlbnRsZXkiLCJiZXJsaW4iLCJiZXN0IiwiYmVzdGJ1eSIsImJldCIsImJoYXJ0aSIsImJpYmxlIiwiYmlkIiwiYmlrZSIs'@; put 'ImJpbmciLCJiaW5nbyIsImJpbyIsImJsYWNrIiwiYmxhY2tmcmlkYXkiLCJibG9ja2J1c3RlciIsImJsb2ciLCJibG9vbWJlcmciLCJibHVlIiwiYm1zIiwiYm13IiwiYm5wcGFyaWJhcyIsImJvYXRzIiwiYm9laHJpbmdlciIsImJvZmEiLCJib20iLCJib25kIiwiYm9vIiwiYm9vayIsImJv'@; put 'b2tpbmciLCJib3NjaCIsImJvc3RpayIsImJvc3RvbiIsImJvdCIsImJvdXRpcXVlIiwiYm94IiwiYnJhZGVzY28iLCJicmlkZ2VzdG9uZSIsImJyb2Fkd2F5IiwiYnJva2VyIiwiYnJvdGhlciIsImJydXNzZWxzIiwiYnVpbGQiLCJidWlsZGVycyIsImJ1c2luZXNzIiwiYnV5IiwiYnV6eiIs'@; put 'ImJ6aCIsImNhYiIsImNhZmUiLCJjYWwiLCJjYWxsIiwiY2Fsdmlua2xlaW4iLCJjYW0iLCJjYW1lcmEiLCJjYW1wIiwiY2Fub24iLCJjYXBldG93biIsImNhcGl0YWwiLCJjYXBpdGFsb25lIiwiY2FyIiwiY2FyYXZhbiIsImNhcmRzIiwiY2FyZSIsImNhcmVlciIsImNhcmVlcnMiLCJjYXJz'@; put 'IiwiY2FzYSIsImNhc2UiLCJjYXNoIiwiY2FzaW5vIiwiY2F0ZXJpbmciLCJjYXRob2xpYyIsImNiYSIsImNibiIsImNicmUiLCJjZW50ZXIiLCJjZW8iLCJjZXJuIiwiY2ZhIiwiY2ZkIiwiY2hhbmVsIiwiY2hhbm5lbCIsImNoYXJpdHkiLCJjaGFzZSIsImNoYXQiLCJjaGVhcCIsImNoaW50'@; put 'YWkiLCJjaHJpc3RtYXMiLCJjaHJvbWUiLCJjaHVyY2giLCJjaXByaWFuaSIsImNpcmNsZSIsImNpc2NvIiwiY2l0YWRlbCIsImNpdGkiLCJjaXRpYyIsImNpdHkiLCJjbGFpbXMiLCJjbGVhbmluZyIsImNsaWNrIiwiY2xpbmljIiwiY2xpbmlxdWUiLCJjbG90aGluZyIsImNsb3VkIiwiY2x1'@; put 'YiIsImNsdWJtZWQiLCJjb2FjaCIsImNvZGVzIiwiY29mZmVlIiwiY29sbGVnZSIsImNvbG9nbmUiLCJjb21tYmFuayIsImNvbW11bml0eSIsImNvbXBhbnkiLCJjb21wYXJlIiwiY29tcHV0ZXIiLCJjb21zZWMiLCJjb25kb3MiLCJjb25zdHJ1Y3Rpb24iLCJjb25zdWx0aW5nIiwiY29udGFj'@; put 'dCIsImNvbnRyYWN0b3JzIiwiY29va2luZyIsImNvb2wiLCJjb3JzaWNhIiwiY291bnRyeSIsImNvdXBvbiIsImNvdXBvbnMiLCJjb3Vyc2VzIiwiY3BhIiwiY3JlZGl0IiwiY3JlZGl0Y2FyZCIsImNyZWRpdHVuaW9uIiwiY3JpY2tldCIsImNyb3duIiwiY3JzIiwiY3J1aXNlIiwiY3J1aXNl'@; put 'cyIsImN1aXNpbmVsbGEiLCJjeW1ydSIsImN5b3UiLCJkYWQiLCJkYW5jZSIsImRhdGEiLCJkYXRlIiwiZGF0aW5nIiwiZGF0c3VuIiwiZGF5IiwiZGNsayIsImRkcyIsImRlYWwiLCJkZWFsZXIiLCJkZWFscyIsImRlZ3JlZSIsImRlbGl2ZXJ5IiwiZGVsbCIsImRlbG9pdHRlIiwiZGVsdGEi'@; put 'LCJkZW1vY3JhdCIsImRlbnRhbCIsImRlbnRpc3QiLCJkZXNpIiwiZGVzaWduIiwiZGV2IiwiZGhsIiwiZGlhbW9uZHMiLCJkaWV0IiwiZGlnaXRhbCIsImRpcmVjdCIsImRpcmVjdG9yeSIsImRpc2NvdW50IiwiZGlzY292ZXIiLCJkaXNoIiwiZGl5IiwiZG5wIiwiZG9jcyIsImRvY3RvciIs'@; put 'ImRvZyIsImRvbWFpbnMiLCJkb3QiLCJkb3dubG9hZCIsImRyaXZlIiwiZHR2IiwiZHViYWkiLCJkdW5sb3AiLCJkdXBvbnQiLCJkdXJiYW4iLCJkdmFnIiwiZHZyIiwiZWFydGgiLCJlYXQiLCJlY28iLCJlZGVrYSIsImVkdWNhdGlvbiIsImVtYWlsIiwiZW1lcmNrIiwiZW5lcmd5IiwiZW5n'@; put 'aW5lZXIiLCJlbmdpbmVlcmluZyIsImVudGVycHJpc2VzIiwiZXBzb24iLCJlcXVpcG1lbnQiLCJlcmljc3NvbiIsImVybmkiLCJlc3EiLCJlc3RhdGUiLCJldXJvdmlzaW9uIiwiZXVzIiwiZXZlbnRzIiwiZXhjaGFuZ2UiLCJleHBlcnQiLCJleHBvc2VkIiwiZXhwcmVzcyIsImV4dHJhc3Bh'@; put 'Y2UiLCJmYWdlIiwiZmFpbCIsImZhaXJ3aW5kcyIsImZhaXRoIiwiZmFtaWx5IiwiZmFuIiwiZmFucyIsImZhcm0iLCJmYXJtZXJzIiwiZmFzaGlvbiIsImZhc3QiLCJmZWRleCIsImZlZWRiYWNrIiwiZmVycmFyaSIsImZlcnJlcm8iLCJmaWRlbGl0eSIsImZpZG8iLCJmaWxtIiwiZmluYWwi'@; put 'LCJmaW5hbmNlIiwiZmluYW5jaWFsIiwiZmlyZSIsImZpcmVzdG9uZSIsImZpcm1kYWxlIiwiZmlzaCIsImZpc2hpbmciLCJmaXQiLCJmaXRuZXNzIiwiZmxpY2tyIiwiZmxpZ2h0cyIsImZsaXIiLCJmbG9yaXN0IiwiZmxvd2VycyIsImZseSIsImZvbyIsImZvb2QiLCJmb290YmFsbCIsImZv'@; put 'cmQiLCJmb3JleCIsImZvcnNhbGUiLCJmb3J1bSIsImZvdW5kYXRpb24iLCJmb3giLCJmcmVlIiwiZnJlc2VuaXVzIiwiZnJsIiwiZnJvZ2FucyIsImZyb250aWVyIiwiZnRyIiwiZnVqaXRzdSIsImZ1biIsImZ1bmQiLCJmdXJuaXR1cmUiLCJmdXRib2wiLCJmeWkiLCJnYWwiLCJnYWxsZXJ5'@; put 'IiwiZ2FsbG8iLCJnYWxsdXAiLCJnYW1lIiwiZ2FtZXMiLCJnYXAiLCJnYXJkZW4iLCJnYXkiLCJnYml6IiwiZ2RuIiwiZ2VhIiwiZ2VudCIsImdlbnRpbmciLCJnZW9yZ2UiLCJnZ2VlIiwiZ2lmdCIsImdpZnRzIiwiZ2l2ZXMiLCJnaXZpbmciLCJnbGFzcyIsImdsZSIsImdsb2JhbCIsImds'@; put 'b2JvIiwiZ21haWwiLCJnbWJoIiwiZ21vIiwiZ214IiwiZ29kYWRkeSIsImdvbGQiLCJnb2xkcG9pbnQiLCJnb2xmIiwiZ29vIiwiZ29vZHllYXIiLCJnb29nIiwiZ29vZ2xlIiwiZ29wIiwiZ290IiwiZ3JhaW5nZXIiLCJncmFwaGljcyIsImdyYXRpcyIsImdyZWVuIiwiZ3JpcGUiLCJncm9j'@; put 'ZXJ5IiwiZ3JvdXAiLCJndWNjaSIsImd1Z2UiLCJndWlkZSIsImd1aXRhcnMiLCJndXJ1IiwiaGFpciIsImhhbWJ1cmciLCJoYW5nb3V0IiwiaGF1cyIsImhibyIsImhkZmMiLCJoZGZjYmFuayIsImhlYWx0aCIsImhlYWx0aGNhcmUiLCJoZWxwIiwiaGVsc2lua2kiLCJoZXJlIiwiaGVybWVz'@; put 'IiwiaGlwaG9wIiwiaGlzYW1pdHN1IiwiaGl0YWNoaSIsImhpdiIsImhrdCIsImhvY2tleSIsImhvbGRpbmdzIiwiaG9saWRheSIsImhvbWVkZXBvdCIsImhvbWVnb29kcyIsImhvbWVzIiwiaG9tZXNlbnNlIiwiaG9uZGEiLCJob3JzZSIsImhvc3BpdGFsIiwiaG9zdCIsImhvc3RpbmciLCJo'@; put 'b3QiLCJob3RlbHMiLCJob3RtYWlsIiwiaG91c2UiLCJob3ciLCJoc2JjIiwiaHVnaGVzIiwiaHlhdHQiLCJoeXVuZGFpIiwiaWJtIiwiaWNiYyIsImljZSIsImljdSIsImllZWUiLCJpZm0iLCJpa2FubyIsImltYW1hdCIsImltZGIiLCJpbW1vIiwiaW1tb2JpbGllbiIsImluYyIsImluZHVz'@; put 'dHJpZXMiLCJpbmZpbml0aSIsImluZyIsImluayIsImluc3RpdHV0ZSIsImluc3VyYW5jZSIsImluc3VyZSIsImludGVybmF0aW9uYWwiLCJpbnR1aXQiLCJpbnZlc3RtZW50cyIsImlwaXJhbmdhIiwiaXJpc2giLCJpc21haWxpIiwiaXN0IiwiaXN0YW5idWwiLCJpdGF1IiwiaXR2IiwiamFn'@; put 'dWFyIiwiamF2YSIsImpjYiIsImplZXAiLCJqZXR6dCIsImpld2VscnkiLCJqaW8iLCJqbGwiLCJqbXAiLCJqbmoiLCJqb2J1cmciLCJqb3QiLCJqb3kiLCJqcG1vcmdhbiIsImpwcnMiLCJqdWVnb3MiLCJqdW5pcGVyIiwia2F1ZmVuIiwia2RkaSIsImtlcnJ5aG90ZWxzIiwia2Vycnlsb2dp'@; put 'c3RpY3MiLCJrZXJyeXByb3BlcnRpZXMiLCJrZmgiLCJraWEiLCJraWRzIiwia2ltIiwia2luZGxlIiwia2l0Y2hlbiIsImtpd2kiLCJrb2VsbiIsImtvbWF0c3UiLCJrb3NoZXIiLCJrcG1nIiwia3BuIiwia3JkIiwia3JlZCIsImt1b2tncm91cCIsImt5b3RvIiwibGFjYWl4YSIsImxhbWJv'@; put 'cmdoaW5pIiwibGFtZXIiLCJsYW5jYXN0ZXIiLCJsYW5kIiwibGFuZHJvdmVyIiwibGFueGVzcyIsImxhc2FsbGUiLCJsYXQiLCJsYXRpbm8iLCJsYXRyb2JlIiwibGF3IiwibGF3eWVyIiwibGRzIiwibGVhc2UiLCJsZWNsZXJjIiwibGVmcmFrIiwibGVnYWwiLCJsZWdvIiwibGV4dXMiLCJs'@; put 'Z2J0IiwibGlkbCIsImxpZmUiLCJsaWZlaW5zdXJhbmNlIiwibGlmZXN0eWxlIiwibGlnaHRpbmciLCJsaWtlIiwibGlsbHkiLCJsaW1pdGVkIiwibGltbyIsImxpbmNvbG4iLCJsaW5rIiwibGlwc3kiLCJsaXZlIiwibGl2aW5nIiwibGxjIiwibGxwIiwibG9hbiIsImxvYW5zIiwibG9ja2Vy'@; put 'IiwibG9jdXMiLCJsb2wiLCJsb25kb24iLCJsb3R0ZSIsImxvdHRvIiwibG92ZSIsImxwbCIsImxwbGZpbmFuY2lhbCIsImx0ZCIsImx0ZGEiLCJsdW5kYmVjayIsImx1eGUiLCJsdXh1cnkiLCJtYWRyaWQiLCJtYWlmIiwibWFpc29uIiwibWFrZXVwIiwibWFuIiwibWFuYWdlbWVudCIsIm1h'@; put 'bmdvIiwibWFwIiwibWFya2V0IiwibWFya2V0aW5nIiwibWFya2V0cyIsIm1hcnJpb3R0IiwibWFyc2hhbGxzIiwibWF0dGVsIiwibWJhIiwibWNraW5zZXkiLCJtZWQiLCJtZWRpYSIsIm1lZXQiLCJtZWxib3VybmUiLCJtZW1lIiwibWVtb3JpYWwiLCJtZW4iLCJtZW51IiwibWVyY2siLCJt'@; put 'ZXJja21zZCIsIm1pYW1pIiwibWljcm9zb2Z0IiwibWluaSIsIm1pbnQiLCJtaXQiLCJtaXRzdWJpc2hpIiwibWxiIiwibWxzIiwibW1hIiwibW9iaWxlIiwibW9kYSIsIm1vZSIsIm1vaSIsIm1vbSIsIm1vbmFzaCIsIm1vbmV5IiwibW9uc3RlciIsIm1vcm1vbiIsIm1vcnRnYWdlIiwibW9z'@; put 'Y293IiwibW90byIsIm1vdG9yY3ljbGVzIiwibW92IiwibW92aWUiLCJtc2QiLCJtdG4iLCJtdHIiLCJtdXNpYyIsIm5hYiIsIm5hZ295YSIsIm5hdnkiLCJuYmEiLCJuZWMiLCJuZXRiYW5rIiwibmV0ZmxpeCIsIm5ldHdvcmsiLCJuZXVzdGFyIiwibmV3IiwibmV3cyIsIm5leHQiLCJuZXh0'@; put 'ZGlyZWN0IiwibmV4dXMiLCJuZmwiLCJuZ28iLCJuaGsiLCJuaWNvIiwibmlrZSIsIm5pa29uIiwibmluamEiLCJuaXNzYW4iLCJuaXNzYXkiLCJub2tpYSIsIm5vcnRvbiIsIm5vdyIsIm5vd3J1eiIsIm5vd3R2IiwibnJhIiwibnJ3IiwibnR0IiwibnljIiwib2JpIiwib2JzZXJ2ZXIiLCJv'@; put 'ZmZpY2UiLCJva2luYXdhIiwib2xheWFuIiwib2xheWFuZ3JvdXAiLCJvbGxvIiwib21lZ2EiLCJvbmUiLCJvbmciLCJvbmwiLCJvbmxpbmUiLCJvb28iLCJvcGVuIiwib3JhY2xlIiwib3JhbmdlIiwib3JnYW5pYyIsIm9yaWdpbnMiLCJvc2FrYSIsIm90c3VrYSIsIm90dCIsIm92aCIsInBh'@; put 'Z2UiLCJwYW5hc29uaWMiLCJwYXJpcyIsInBhcnMiLCJwYXJ0bmVycyIsInBhcnRzIiwicGFydHkiLCJwYXkiLCJwY2N3IiwicGV0IiwicGZpemVyIiwicGhhcm1hY3kiLCJwaGQiLCJwaGlsaXBzIiwicGhvbmUiLCJwaG90byIsInBob3RvZ3JhcGh5IiwicGhvdG9zIiwicGh5c2lvIiwicGlj'@; put 'cyIsInBpY3RldCIsInBpY3R1cmVzIiwicGlkIiwicGluIiwicGluZyIsInBpbmsiLCJwaW9uZWVyIiwicGl6emEiLCJwbGFjZSIsInBsYXkiLCJwbGF5c3RhdGlvbiIsInBsdW1iaW5nIiwicGx1cyIsInBuYyIsInBvaGwiLCJwb2tlciIsInBvbGl0aWUiLCJwb3JuIiwicHJhbWVyaWNhIiwi'@; put 'cHJheGkiLCJwcmVzcyIsInByaW1lIiwicHJvZCIsInByb2R1Y3Rpb25zIiwicHJvZiIsInByb2dyZXNzaXZlIiwicHJvbW8iLCJwcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJwcm90ZWN0aW9uIiwicHJ1IiwicHJ1ZGVudGlhbCIsInB1YiIsInB3YyIsInFwb24iLCJxdWViZWMiLCJxdWVzdCIs'@; put 'InJhY2luZyIsInJhZGlvIiwicmVhZCIsInJlYWxlc3RhdGUiLCJyZWFsdG9yIiwicmVhbHR5IiwicmVjaXBlcyIsInJlZCIsInJlZHN0b25lIiwicmVkdW1icmVsbGEiLCJyZWhhYiIsInJlaXNlIiwicmVpc2VuIiwicmVpdCIsInJlbGlhbmNlIiwicmVuIiwicmVudCIsInJlbnRhbHMiLCJy'@; put 'ZXBhaXIiLCJyZXBvcnQiLCJyZXB1YmxpY2FuIiwicmVzdCIsInJlc3RhdXJhbnQiLCJyZXZpZXciLCJyZXZpZXdzIiwicmV4cm90aCIsInJpY2giLCJyaWNoYXJkbGkiLCJyaWNvaCIsInJpbCIsInJpbyIsInJpcCIsInJvY2tzIiwicm9kZW8iLCJyb2dlcnMiLCJyb29tIiwicnN2cCIsInJ1'@; put 'Z2J5IiwicnVociIsInJ1biIsInJ3ZSIsInJ5dWt5dSIsInNhYXJsYW5kIiwic2FmZSIsInNhZmV0eSIsInNha3VyYSIsInNhbGUiLCJzYWxvbiIsInNhbXNjbHViIiwic2Ftc3VuZyIsInNhbmR2aWsiLCJzYW5kdmlrY29yb21hbnQiLCJzYW5vZmkiLCJzYXAiLCJzYXJsIiwic2FzIiwic2F2'@; put 'ZSIsInNheG8iLCJzYmkiLCJzYnMiLCJzY2IiLCJzY2hhZWZmbGVyIiwic2NobWlkdCIsInNjaG9sYXJzaGlwcyIsInNjaG9vbCIsInNjaHVsZSIsInNjaHdhcnoiLCJzY2llbmNlIiwic2NvdCIsInNlYXJjaCIsInNlYXQiLCJzZWN1cmUiLCJzZWN1cml0eSIsInNlZWsiLCJzZWxlY3QiLCJz'@; put 'ZW5lciIsInNlcnZpY2VzIiwic2V2ZW4iLCJzZXciLCJzZXgiLCJzZXh5Iiwic2ZyIiwic2hhbmdyaWxhIiwic2hhcnAiLCJzaGVsbCIsInNoaWEiLCJzaGlrc2hhIiwic2hvZXMiLCJzaG9wIiwic2hvcHBpbmciLCJzaG91amkiLCJzaG93Iiwic2lsayIsInNpbmEiLCJzaW5nbGVzIiwic2l0'@; put 'ZSIsInNraSIsInNraW4iLCJza3kiLCJza3lwZSIsInNsaW5nIiwic21hcnQiLCJzbWlsZSIsInNuY2YiLCJzb2NjZXIiLCJzb2NpYWwiLCJzb2Z0YmFuayIsInNvZnR3YXJlIiwic29odSIsInNvbGFyIiwic29sdXRpb25zIiwic29uZyIsInNvbnkiLCJzb3kiLCJzcGEiLCJzcGFjZSIsInNw'@; put 'b3J0Iiwic3BvdCIsInNybCIsInN0YWRhIiwic3RhcGxlcyIsInN0YXIiLCJzdGF0ZWJhbmsiLCJzdGF0ZWZhcm0iLCJzdGMiLCJzdGNncm91cCIsInN0b2NraG9sbSIsInN0b3JhZ2UiLCJzdG9yZSIsInN0cmVhbSIsInN0dWRpbyIsInN0dWR5Iiwic3R5bGUiLCJzdWNrcyIsInN1cHBsaWVz'@; put 'Iiwic3VwcGx5Iiwic3VwcG9ydCIsInN1cmYiLCJzdXJnZXJ5Iiwic3V6dWtpIiwic3dhdGNoIiwic3dpc3MiLCJzeWRuZXkiLCJzeXN0ZW1zIiwidGFiIiwidGFpcGVpIiwidGFsayIsInRhb2JhbyIsInRhcmdldCIsInRhdGFtb3RvcnMiLCJ0YXRhciIsInRhdHRvbyIsInRheCIsInRheGki'@; put 'LCJ0Y2kiLCJ0ZGsiLCJ0ZWFtIiwidGVjaCIsInRlY2hub2xvZ3kiLCJ0ZW1hc2VrIiwidGVubmlzIiwidGV2YSIsInRoZCIsInRoZWF0ZXIiLCJ0aGVhdHJlIiwidGlhYSIsInRpY2tldHMiLCJ0aWVuZGEiLCJ0aXBzIiwidGlyZXMiLCJ0aXJvbCIsInRqbWF4eCIsInRqeCIsInRrbWF4eCIs'@; put 'InRtYWxsIiwidG9kYXkiLCJ0b2t5byIsInRvb2xzIiwidG9wIiwidG9yYXkiLCJ0b3NoaWJhIiwidG90YWwiLCJ0b3VycyIsInRvd24iLCJ0b3lvdGEiLCJ0b3lzIiwidHJhZGUiLCJ0cmFkaW5nIiwidHJhaW5pbmciLCJ0cmF2ZWwiLCJ0cmF2ZWxlcnMiLCJ0cmF2ZWxlcnNpbnN1cmFuY2Ui'@; put 'LCJ0cnVzdCIsInRydiIsInR1YmUiLCJ0dWkiLCJ0dW5lcyIsInR1c2h1IiwidHZzIiwidWJhbmsiLCJ1YnMiLCJ1bmljb20iLCJ1bml2ZXJzaXR5IiwidW5vIiwidW9sIiwidXBzIiwidmFjYXRpb25zIiwidmFuYSIsInZhbmd1YXJkIiwidmVnYXMiLCJ2ZW50dXJlcyIsInZlcmlzaWduIiwi'@; put 'dmVyc2ljaGVydW5nIiwidmV0IiwidmlhamVzIiwidmlkZW8iLCJ2aWciLCJ2aWtpbmciLCJ2aWxsYXMiLCJ2aW4iLCJ2aXAiLCJ2aXJnaW4iLCJ2aXNhIiwidmlzaW9uIiwidml2YSIsInZpdm8iLCJ2bGFhbmRlcmVuIiwidm9ka2EiLCJ2b2x2byIsInZvdGUiLCJ2b3RpbmciLCJ2b3RvIiwi'@; put 'dm95YWdlIiwid2FsZXMiLCJ3YWxtYXJ0Iiwid2FsdGVyIiwid2FuZyIsIndhbmdnb3UiLCJ3YXRjaCIsIndhdGNoZXMiLCJ3ZWF0aGVyIiwid2VhdGhlcmNoYW5uZWwiLCJ3ZWJjYW0iLCJ3ZWJlciIsIndlYnNpdGUiLCJ3ZWQiLCJ3ZWRkaW5nIiwid2VpYm8iLCJ3ZWlyIiwid2hvc3dobyIs'@; put 'IndpZW4iLCJ3aWtpIiwid2lsbGlhbWhpbGwiLCJ3aW4iLCJ3aW5kb3dzIiwid2luZSIsIndpbm5lcnMiLCJ3bWUiLCJ3b2x0ZXJza2x1d2VyIiwid29vZHNpZGUiLCJ3b3JrIiwid29ya3MiLCJ3b3JsZCIsIndvdyIsInd0YyIsInd0ZiIsInhib3giLCJ4ZXJveCIsInhpaHVhbiIsInhpbiIs'@; put 'Ilx1MDkxNVx1MDk0OVx1MDkyZSIsIlx1MzBiYlx1MzBmY1x1MzBlYiIsIlx1NGY1Ylx1NWM3MSIsIlx1NjE0OFx1NTU4NCIsIlx1OTZjNlx1NTZlMiIsIlx1NTcyOFx1N2ViZiIsIlx1NzBiOVx1NzcwYiIsIlx1MGUwNFx1MGUyZFx1MGUyMSIsIlx1NTE2Ylx1NTM2NiIsIlx1MDY0NVx1MDY0'@; put 'OFx1MDY0Mlx1MDYzOSIsIlx1NTE2Y1x1NzZjYSIsIlx1NTE2Y1x1NTNmOCIsIlx1OTk5OVx1NjgzY1x1OTFjY1x1NjJjOSIsIlx1N2Y1MVx1N2FkOSIsIlx1NzlmYlx1NTJhOCIsIlx1NjIxMVx1NzIzMVx1NGY2MCIsIlx1MDQzY1x1MDQzZVx1MDQ0MVx1MDQzYVx1MDQzMlx1MDQzMCIsIlx1'@; put 'MDQzYVx1MDQzMFx1MDQ0Mlx1MDQzZVx1MDQzYlx1MDQzOFx1MDQzYSIsIlx1MDQzZVx1MDQzZFx1MDQzYlx1MDQzMFx1MDQzOVx1MDQzZCIsIlx1MDQ0MVx1MDQzMFx1MDQzOVx1MDQ0MiIsIlx1ODA1NFx1OTAxYSIsIlx1MDVlN1x1MDVkNVx1MDVkZCIsIlx1NjVmNlx1NWMxYSIsIlx1NWZh'@; put 'ZVx1NTM1YSIsIlx1NmRlMVx1OWE2Y1x1OTUyMSIsIlx1MzBkNVx1MzBhMVx1MzBjM1x1MzBiN1x1MzBlN1x1MzBmMyIsIlx1MDQzZVx1MDQ0MFx1MDQzMyIsIlx1MDkyOFx1MDk0N1x1MDkxZiIsIlx1MzBiOVx1MzBjOFx1MzBhMiIsIlx1MzBhMlx1MzBkZVx1MzBiZVx1MzBmMyIsIlx1YzBi'@; put 'Y1x1YzEzMSIsIlx1NTU0Nlx1NjgwNyIsIlx1NTU0Nlx1NWU5NyIsIlx1NTU0Nlx1NTdjZSIsIlx1MDQzNFx1MDQzNVx1MDQ0Mlx1MDQzOCIsIlx1MzBkZFx1MzBhNFx1MzBmM1x1MzBjOCIsIlx1NjViMFx1OTVmYiIsIlx1NWJiNlx1OTZmYiIsIlx1MDY0M1x1MDY0OFx1MDY0NSIsIlx1NGUy'@; put 'ZFx1NjU4N1x1N2Y1MSIsIlx1NGUyZFx1NGZlMSIsIlx1NWEzMVx1NGU1MCIsIlx1OGMzN1x1NmI0YyIsIlx1OTZmYlx1OGEwYVx1NzZjOFx1NzlkMSIsIlx1OGQyZFx1NzI2OSIsIlx1MzBhZlx1MzBlOVx1MzBhNlx1MzBjOSIsIlx1OTAxYVx1OGNhOSIsIlx1N2Y1MVx1NWU5NyIsIlx1MDkz'@; put 'OFx1MDkwMlx1MDkxN1x1MDkyMFx1MDkyOCIsIlx1OTkxMFx1NTM4NSIsIlx1N2Y1MVx1N2VkYyIsIlx1MDQzYVx1MDQzZVx1MDQzYyIsIlx1NGU5YVx1OWE2Y1x1OTAwYSIsIlx1OThkZlx1NTRjMSIsIlx1OThkZVx1NTIyOVx1NmQ2NiIsIlx1NjI0Ylx1NjczYSIsIlx1MDYyN1x1MDYzMVx1'@; put 'MDYyN1x1MDY0NVx1MDY0M1x1MDY0OCIsIlx1MDYyN1x1MDY0NFx1MDYzOVx1MDY0NFx1MDY0YVx1MDYyN1x1MDY0NiIsIlx1MDYyOFx1MDYyN1x1MDYzMlx1MDYyN1x1MDYzMSIsIlx1MDYyN1x1MDYyOFx1MDY0OFx1MDYzOFx1MDYyOFx1MDY0YSIsIlx1MDY0M1x1MDYyN1x1MDYyYlx1MDY0'@; put 'OFx1MDY0NFx1MDY0YVx1MDY0MyIsIlx1MDY0N1x1MDY0NVx1MDYzMVx1MDYyN1x1MDY0NyIsIlx1YjJmN1x1Y2VmNCIsIlx1NjUzZlx1NWU5YyIsIlx1MDYzNFx1MDYyOFx1MDY0M1x1MDYyOSIsIlx1MDYyOFx1MDY0YVx1MDYyYVx1MDY0MyIsIlx1MDYzOVx1MDYzMVx1MDYyOCIsIlx1Njcz'@; put 'YVx1Njc4NCIsIlx1N2VjNFx1N2VjN1x1NjczYVx1Njc4NCIsIlx1NTA2NVx1NWViNyIsIlx1NjJkYlx1ODA1OCIsIlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1NTkyN1x1NjJmZiIsIlx1MzA3Zlx1MzA5M1x1MzA2YSIsIlx1MzBiMFx1MzBmY1x1MzBiMFx1MzBlYiIsIlx1NGUxNlx1NzU0YyIs'@; put 'Ilx1NjZmOFx1N2M0ZCIsIlx1N2Y1MVx1NTc0MCIsIlx1YjJmN1x1YjEzNyIsIlx1MzBiM1x1MzBlMCIsIlx1NTkyOVx1NGUzYlx1NjU1OSIsIlx1NmUzOFx1NjIwZiIsInZlcm1ceGY2Z2Vuc2JlcmF0ZXIiLCJ2ZXJtXHhmNmdlbnNiZXJhdHVuZyIsIlx1NGYwMVx1NGUxYSIsIlx1NGZlMVx1'@; put 'NjA2ZiIsIlx1NTYwOVx1OTFjY1x1NTkyN1x1OTE1Mlx1NWU5NyIsIlx1NTYwOVx1OTFjYyIsIlx1NWU3Zlx1NGUxYyIsIlx1NjUzZlx1NTJhMSIsInh5eiIsInlhY2h0cyIsInlhaG9vIiwieWFtYXh1biIsInlhbmRleCIsInlvZG9iYXNoaSIsInlvZ2EiLCJ5b2tvaGFtYSIsInlvdSIsInlv'@; put 'dXR1YmUiLCJ5dW4iLCJ6YXBwb3MiLCJ6YXJhIiwiemVybyIsInppcCIsInpvbmUiLCJ6dWVyaWNoIiwiY28ua3JkIiwiZWR1LmtyZCIsImFydC5wbCIsImdsaXdpY2UucGwiLCJrcmFrb3cucGwiLCJwb3puYW4ucGwiLCJ3cm9jLnBsIiwiemFrb3BhbmUucGwiLCJsaWIuZGUudXMiLCIxMmNo'@; put 'YXJzLmRldiIsIjEyY2hhcnMuaXQiLCIxMmNoYXJzLnBybyIsImNjLnVhIiwiaW5mLnVhIiwibHRkLnVhIiwiNjExLnRvIiwiYTJob3N0ZWQuY29tIiwiY3BzZXJ2ZXIuY29tIiwiYWFhLnZvZGthIiwiKi5vbi1hY29ybi5pbyIsImFjdGl2ZXRyYWlsLmJpeiIsImFkYXB0YWJsZS5hcHAiLCJh'@; put 'ZG9iZWFlbWNsb3VkLmNvbSIsIiouZGV2LmFkb2JlYWVtY2xvdWQuY29tIiwiYWVtLmxpdmUiLCJobHgubGl2ZSIsImFkb2JlYWVtY2xvdWQubmV0IiwiYWVtLnBhZ2UiLCJobHgucGFnZSIsImhseDMucGFnZSIsImFkb2JlaW8tc3RhdGljLm5ldCIsImFkb2JlaW9ydW50aW1lLm5ldCIsImFm'@; put 'cmljYS5jb20iLCJiZWVwLnBsIiwiYWlya2l0YXBwcy5jb20iLCJhaXJraXRhcHBzLWF1LmNvbSIsImFpcmtpdGFwcHMuZXUiLCJhaXZlbmNsb3VkLmNvbSIsImFrYWRucy5uZXQiLCJha2FtYWkubmV0IiwiYWthbWFpLXN0YWdpbmcubmV0IiwiYWthbWFpZWRnZS5uZXQiLCJha2FtYWllZGdl'@; put 'LXN0YWdpbmcubmV0IiwiYWthbWFpaGQubmV0IiwiYWthbWFpaGQtc3RhZ2luZy5uZXQiLCJha2FtYWlvcmlnaW4ubmV0IiwiYWthbWFpb3JpZ2luLXN0YWdpbmcubmV0IiwiYWthbWFpemVkLm5ldCIsImFrYW1haXplZC1zdGFnaW5nLm5ldCIsImVkZ2VrZXkubmV0IiwiZWRnZWtleS1zdGFn'@; put 'aW5nLm5ldCIsImVkZ2VzdWl0ZS5uZXQiLCJlZGdlc3VpdGUtc3RhZ2luZy5uZXQiLCJiYXJzeS5jYSIsIiouY29tcHV0ZS5lc3RhdGUiLCIqLmFsY2VzLm5ldHdvcmsiLCJrYXNzZXJ2ZXIuY29tIiwiYWx0ZXJ2aXN0YS5vcmciLCJhbHdheXNkYXRhLm5ldCIsIm15YW1hemUubmV0IiwiZXhl'@; put 'Y3V0ZS1hcGkuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiZXhlY3V0ZS1hcGkuY24tbm9ydGh3ZXN0LTEuYW1hem9uYXdzLmNvbS5jbiIsImV4ZWN1dGUtYXBpLmFmLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmFwLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiZXhl'@; put 'Y3V0ZS1hcGkuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5hcC1ub3J0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiZXhlY3V0ZS1hcGkuYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwi'@; put 'ZXhlY3V0ZS1hcGkuYXAtc291dGgtMi5hbWF6b25hd3MuY29tIiwiZXhlY3V0ZS1hcGkuYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5hcC1zb3V0aGVhc3QtMy5hbWF6b25hd3MuY29t'@; put 'IiwiZXhlY3V0ZS1hcGkuYXAtc291dGhlYXN0LTQuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmFwLXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmNhLXdlc3QtMS5hbWF6b25hd3MuY29t'@; put 'IiwiZXhlY3V0ZS1hcGkuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5ldS1jZW50cmFsLTIuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmV1LXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsImV4'@; put 'ZWN1dGUtYXBpLmV1LXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiZXhlY3V0ZS1hcGkuZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLmls'@; put 'LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiZXhlY3V0ZS1hcGkubWUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS5zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLnVzLWVhc3Qt'@; put 'MS5hbWF6b25hd3MuY29tIiwiZXhlY3V0ZS1hcGkudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS51cy1nb3YtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJleGVjdXRlLWFwaS51cy13ZXN0LTEuYW1h'@; put 'em9uYXdzLmNvbSIsImV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiY2xvdWRmcm9udC5uZXQiLCJhdXRoLmFmLXNvdXRoLTEuYW1hem9uY29nbml0by5jb20iLCJhdXRoLmFwLWVhc3QtMS5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguYXAtbm9ydGhlYXN0LTEuYW1hem9u'@; put 'Y29nbml0by5jb20iLCJhdXRoLmFwLW5vcnRoZWFzdC0yLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC5hcC1ub3J0aGVhc3QtMy5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguYXAtc291dGgtMS5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguYXAtc291dGgtMi5hbWF6b25jb2duaXRvLmNvbSIs'@; put 'ImF1dGguYXAtc291dGhlYXN0LTEuYW1hem9uY29nbml0by5jb20iLCJhdXRoLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC5hcC1zb3V0aGVhc3QtMy5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguYXAtc291dGhlYXN0LTQuYW1hem9uY29nbml0by5jb20iLCJhdXRo'@; put 'LmNhLWNlbnRyYWwtMS5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguY2Etd2VzdC0xLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC5ldS1jZW50cmFsLTEuYW1hem9uY29nbml0by5jb20iLCJhdXRoLmV1LWNlbnRyYWwtMi5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguZXUtbm9ydGgtMS5hbWF6'@; put 'b25jb2duaXRvLmNvbSIsImF1dGguZXUtc291dGgtMS5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguZXUtc291dGgtMi5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguZXUtd2VzdC0xLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC5ldS13ZXN0LTIuYW1hem9uY29nbml0by5jb20iLCJhdXRoLmV1'@; put 'LXdlc3QtMy5hbWF6b25jb2duaXRvLmNvbSIsImF1dGguaWwtY2VudHJhbC0xLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC5tZS1jZW50cmFsLTEuYW1hem9uY29nbml0by5jb20iLCJhdXRoLm1lLXNvdXRoLTEuYW1hem9uY29nbml0by5jb20iLCJhdXRoLnNhLWVhc3QtMS5hbWF6b25jb2du'@; put 'aXRvLmNvbSIsImF1dGgudXMtZWFzdC0xLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC1maXBzLnVzLWVhc3QtMS5hbWF6b25jb2duaXRvLmNvbSIsImF1dGgudXMtZWFzdC0yLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC1maXBzLnVzLWVhc3QtMi5hbWF6b25jb2duaXRvLmNvbSIsImF1dGgt'@; put 'Zmlwcy51cy1nb3Ytd2VzdC0xLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC51cy13ZXN0LTEuYW1hem9uY29nbml0by5jb20iLCJhdXRoLWZpcHMudXMtd2VzdC0xLmFtYXpvbmNvZ25pdG8uY29tIiwiYXV0aC51cy13ZXN0LTIuYW1hem9uY29nbml0by5jb20iLCJhdXRoLWZpcHMudXMtd2Vz'@; put 'dC0yLmFtYXpvbmNvZ25pdG8uY29tIiwiKi5jb21wdXRlLmFtYXpvbmF3cy5jb20uY24iLCIqLmNvbXB1dGUuYW1hem9uYXdzLmNvbSIsIiouY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20iLCJ1cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuY24tbm9ydGgtMS5hbWF6b25h'@; put 'd3MuY29tLmNuIiwiZW1ybm90ZWJvb2tzLXByb2QuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiZW1yc3R1ZGlvLXByb2QuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiZW1yYXBwdWktcHJvZC5jbi1ub3J0aHdlc3QtMS5hbWF6b25hd3MuY29tLmNuIiwiZW1ybm90ZWJvb2tz'@; put 'LXByb2QuY24tbm9ydGh3ZXN0LTEuYW1hem9uYXdzLmNvbS5jbiIsImVtcnN0dWRpby1wcm9kLmNuLW5vcnRod2VzdC0xLmFtYXpvbmF3cy5jb20uY24iLCJlbXJhcHB1aS1wcm9kLmFmLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmFmLXNvdXRoLTEuYW1hem9u'@; put 'YXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmFmLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuYXAtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5hcC1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmFwLWVhc3QtMS5hbWF6'@; put 'b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC5hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9k'@; put 'LmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuYXAtbm9ydGhlYXN0LTMuYW1hem9uYXdz'@; put 'LmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmFwLW5vcnRoZWFzdC0zLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5hcC1ub3J0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5hcC1z'@; put 'b3V0aC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLmFwLXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmFwLXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9k'@; put 'LmFwLXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29t'@; put 'IiwiZW1yYXBwdWktcHJvZC5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLmFwLXNvdXRo'@; put 'ZWFzdC0zLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5hcC1zb3V0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QuYXAtc291dGhlYXN0LTMuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuYXAtc291dGhlYXN0LTQuYW1hem9uYXdzLmNvbSIsImVt'@; put 'cm5vdGVib29rcy1wcm9kLmFwLXNvdXRoZWFzdC00LmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5hcC1zb3V0aGVhc3QtNC5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmNhLWNlbnRyYWwt'@; put 'MS5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QuY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLmNhLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QuY2Etd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5jYS13'@; put 'ZXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWkt'@; put 'cHJvZC5ldS1jZW50cmFsLTIuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmV1LWNlbnRyYWwtMi5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QuZXUtY2VudHJhbC0yLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLmV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIs'@; put 'ImVtcm5vdGVib29rcy1wcm9kLmV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QuZXUtc291dGgtMS5hbWF6b25h'@; put 'd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QuZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC5ldS1zb3V0aC0yLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5ldS1zb3V0aC0yLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5ldS1zb3V0aC0yLmFt'@; put 'YXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QuZXUtd2VzdC0yLmFt'@; put 'YXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLmV1LXdlc3Qt'@; put 'My5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLmlsLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QuaWwtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5p'@; put 'bC1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QubWUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5tZS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLm1lLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiZW1y'@; put 'YXBwdWktcHJvZC5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLnNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwi'@; put 'ZW1ybm90ZWJvb2tzLXByb2Quc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVkaW8tcHJvZC5zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJub3RlYm9va3MtcHJvZC51cy1lYXN0LTEuYW1hem9uYXdzLmNv'@; put 'bSIsImVtcnN0dWRpby1wcm9kLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QudXMtZWFzdC0yLmFtYXpvbmF3cy5j'@; put 'b20iLCJlbXJhcHB1aS1wcm9kLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29rcy1wcm9kLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcnN0dWRpby1wcm9kLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcmFwcHVpLXByb2QudXMtZ292LXdl'@; put 'c3QtMS5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QudXMtZ292LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QudXMtZ292LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiZW1yYXBwdWktcHJvZC51cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsImVtcm5vdGVib29r'@; put 'cy1wcm9kLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiZW1yc3R1ZGlvLXByb2QudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJlbXJhcHB1aS1wcm9kLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiZW1ybm90ZWJvb2tzLXByb2QudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJlbXJzdHVk'@; put 'aW8tcHJvZC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsIiouY24tbm9ydGgtMS5haXJmbG93LmFtYXpvbmF3cy5jb20uY24iLCIqLmNuLW5vcnRod2VzdC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbS5jbiIsIiouYWYtc291dGgtMS5haXJmbG93LmFtYXpvbmF3cy5jb20iLCIqLmFwLWVhc3Qt'@; put 'MS5haXJmbG93LmFtYXpvbmF3cy5jb20iLCIqLmFwLW5vcnRoZWFzdC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIiouYXAtbm9ydGhlYXN0LTIuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5hcC1ub3J0aGVhc3QtMy5haXJmbG93LmFtYXpvbmF3cy5jb20iLCIqLmFwLXNvdXRoLTEuYWly'@; put 'Zmxvdy5hbWF6b25hd3MuY29tIiwiKi5hcC1zb3V0aC0yLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIiouYXAtc291dGhlYXN0LTEuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5hcC1zb3V0aGVhc3QtMi5haXJmbG93LmFtYXpvbmF3cy5jb20iLCIqLmFwLXNvdXRoZWFzdC0zLmFpcmZsb3cu'@; put 'YW1hem9uYXdzLmNvbSIsIiouYXAtc291dGhlYXN0LTQuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5jYS1jZW50cmFsLTEuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5jYS13ZXN0LTEuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5ldS1jZW50cmFsLTEuYWlyZmxvdy5hbWF6b25hd3Mu'@; put 'Y29tIiwiKi5ldS1jZW50cmFsLTIuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5ldS1ub3J0aC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIiouZXUtc291dGgtMS5haXJmbG93LmFtYXpvbmF3cy5jb20iLCIqLmV1LXNvdXRoLTIuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5ldS13ZXN0'@; put 'LTEuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5ldS13ZXN0LTIuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5ldS13ZXN0LTMuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5pbC1jZW50cmFsLTEuYWlyZmxvdy5hbWF6b25hd3MuY29tIiwiKi5tZS1jZW50cmFsLTEuYWlyZmxvdy5hbWF6'@; put 'b25hd3MuY29tIiwiKi5tZS1zb3V0aC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIiouc2EtZWFzdC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIioudXMtZWFzdC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIioudXMtZWFzdC0yLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIioudXMtd2Vz'@; put 'dC0xLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsIioudXMtd2VzdC0yLmFpcmZsb3cuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5jbi1ub3J0aC0xLmFtYXpvbmF3cy5jb20uY24iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiczMt'@; put 'd2Vic2l0ZS5kdWFsc3RhY2suY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiczMuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiczMtYWNjZXNzcG9pbnQuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiczMtZGVwcmVjYXRlZC5jbi1ub3J0aC0xLmFtYXpvbmF3cy5jb20u'@; put 'Y24iLCJzMy1vYmplY3QtbGFtYmRhLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbiIsInMzLXdlYnNpdGUuY24tbm9ydGgtMS5hbWF6b25hd3MuY29tLmNuIiwiczMuZHVhbHN0YWNrLmNuLW5vcnRod2VzdC0xLmFtYXpvbmF3cy5jb20uY24iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2su'@; put 'Y24tbm9ydGh3ZXN0LTEuYW1hem9uYXdzLmNvbS5jbiIsInMzLmNuLW5vcnRod2VzdC0xLmFtYXpvbmF3cy5jb20uY24iLCJzMy1hY2Nlc3Nwb2ludC5jbi1ub3J0aHdlc3QtMS5hbWF6b25hd3MuY29tLmNuIiwiczMtb2JqZWN0LWxhbWJkYS5jbi1ub3J0aHdlc3QtMS5hbWF6b25hd3MuY29t'@; put 'LmNuIiwiczMtd2Vic2l0ZS5jbi1ub3J0aHdlc3QtMS5hbWF6b25hd3MuY29tLmNuIiwiczMuZHVhbHN0YWNrLmFmLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5hZi1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5h'@; put 'Zi1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy5hZi1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5hZi1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmFmLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYWYtc291dGgtMS5h'@; put 'bWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLmFwLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuYXAtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5hcC1lYXN0LTEuYW1hem9u'@; put 'YXdzLmNvbSIsInMzLW9iamVjdC1sYW1iZGEuYXAtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmFwLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suYXAtbm9y'@; put 'dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZHVhbHN0YWNrLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLW9iamVj'@; put 'dC1sYW1iZGEuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLmFwLW5vcnRoZWFzdC0y'@; put 'LmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRh'@; put 'LmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtbm9ydGhlYXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5hcC1ub3J0aGVhc3QtMy5hbWF6b25h'@; put 'd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suYXAtbm9ydGhlYXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLmFwLW5vcnRoZWFzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5hcC1ub3J0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5hcC1ub3J0'@; put 'aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5hcC1ub3J0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJz'@; put 'aXRlLmR1YWxzdGFjay5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNp'@; put 'dGUuYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5hcC1zb3V0aC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5hcC1zb3V0aC0yLmFtYXpvbmF3cy5j'@; put 'b20iLCJzMy5hcC1zb3V0aC0yLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5hcC1zb3V0aC0yLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmFwLXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtc291dGgtMi5hbWF6b25hd3MuY29tIiwiczMuZHVh'@; put 'bHN0YWNrLmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5hcC1zb3V0aGVhc3QtMS5h'@; put 'bWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLW9iamVjdC1sYW1iZGEuYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5h'@; put 'cC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuYXAtc291dGhlYXN0LTIuYW1hem9uYXdz'@; put 'LmNvbSIsInMzLWFjY2Vzc3BvaW50LmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtc291dGhl'@; put 'YXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suYXAtc291dGhlYXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLmFwLXNvdXRoZWFzdC0zLmFtYXpvbmF3cy5jb20iLCJz'@; put 'My1hY2Nlc3Nwb2ludC5hcC1zb3V0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5hcC1zb3V0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5hcC1zb3V0aGVhc3QtMy5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC00LmFt'@; put 'YXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suYXAtc291dGhlYXN0LTQuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC00LmFtYXpvbmF3cy5jb20iLCJzMy5hcC1zb3V0aGVhc3QtNC5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNz'@; put 'cG9pbnQuYXAtc291dGhlYXN0LTQuYW1hem9uYXdzLmNvbSIsInMzLW9iamVjdC1sYW1iZGEuYXAtc291dGhlYXN0LTQuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtc291dGhlYXN0LTQuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtNS5hbWF6b25hd3Mu'@; put 'Y29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtNS5hbWF6b25hd3MuY29tIiwiczMuYXAtc291dGhlYXN0LTUuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmFw'@; put 'LXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20iLCJzMy1kZXByZWNhdGVkLmFwLXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmFwLXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmFwLXNvdXRoZWFzdC01LmFtYXpvbmF3cy5jb20iLCJz'@; put 'My5kdWFsc3RhY2suY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBzLmR1YWxzdGFjay5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMuZHVh'@; put 'bHN0YWNrLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMt'@; put 'YWNjZXNzcG9pbnQtZmlwcy5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMuY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNv'@; put 'bSIsInMzLmR1YWxzdGFjay5jYS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5jYS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LWZpcHMuZHVhbHN0YWNrLmNhLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtZmlwcy5kdWFsc3Rh'@; put 'Y2suY2Etd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5jYS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmNhLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuY2Etd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBz'@; put 'LmNhLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtZmlwcy5jYS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLW9iamVjdC1sYW1iZGEuY2Etd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmNhLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmV1LWNlbnRyYWwt'@; put 'MS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3Bv'@; put 'aW50LmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtY2VudHJhbC0yLmFtYXpvbmF3cy5jb20iLCJzMy1h'@; put 'Y2Nlc3Nwb2ludC5kdWFsc3RhY2suZXUtY2VudHJhbC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5ldS1jZW50cmFsLTIuYW1hem9uYXdzLmNvbSIsInMzLmV1LWNlbnRyYWwtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZXUtY2VudHJhbC0yLmFtYXpv'@; put 'bmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmV1LWNlbnRyYWwtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5ldS1jZW50cmFsLTIuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS1ub3J0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suZXUt'@; put 'bm9ydGgtMS5hbWF6b25hd3MuY29tIiwiczMuZXUtbm9ydGgtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZXUtbm9ydGgtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5ldS1ub3J0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LW5vcnRoLTEuYW1h'@; put 'em9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMuZXUtc291dGgt'@; put 'MS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5ldS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS1zb3V0aC0y'@; put 'LmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2suZXUtc291dGgtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suZXUtc291dGgtMi5hbWF6b25hd3MuY29tIiwiczMuZXUtc291dGgtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZXUt'@; put 'c291dGgtMi5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5ldS1zb3V0aC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LXNvdXRoLTIuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxz'@; put 'dGFjay5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZHVhbHN0YWNrLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWRlcHJlY2F0ZWQuZXUt'@; put 'd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFj'@; put 'ay5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5ldS13ZXN0LTIuYW1h'@; put 'em9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZHVhbHN0YWNrLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwiczMuZXUtd2VzdC0zLmFt'@; put 'YXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLW9iamVjdC1sYW1iZGEuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmlsLWNlbnRyYWwtMS5hbWF6'@; put 'b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLmlsLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suaWwtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5pbC1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50Lmls'@; put 'LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5pbC1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuaWwtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2subWUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nw'@; put 'b2ludC5kdWFsc3RhY2subWUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay5tZS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLm1lLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQubWUtY2VudHJhbC0xLmFtYXpvbmF3cy5j'@; put 'b20iLCJzMy1vYmplY3QtbGFtYmRhLm1lLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5tZS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2subWUtc291dGgt'@; put 'MS5hbWF6b25hd3MuY29tIiwiczMubWUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQubWUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5tZS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLm1lLXNvdXRoLTEuYW1hem9uYXdz'@; put 'LmNvbSIsInMzLmFtYXpvbmF3cy5jb20iLCJzMy0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYXAtbm9ydGhlYXN0LTMuYW1h'@; put 'em9uYXdzLmNvbSIsInMzLWFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1ldS1jZW50cmFsLTEuYW1hem9u'@; put 'YXdzLmNvbSIsInMzLWV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIsInMzLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLWV4dGVybmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMt'@; put 'dXMtZ292LWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtZmlwcy11cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJtcmFwLmFjY2Vzc3BvaW50LnMzLWdsb2JhbC5hbWF6b25hd3MuY29tIiwiczMtbWUtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtc2EtZWFzdC0xLmFtYXpvbmF3cy5j'@; put 'b20iLCJzMy11cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJz'@; put 'aXRlLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0'@; put 'ZS1zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtdXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLXVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtdXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLXVzLXdlc3QtMi5h'@; put 'bWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLnNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLnNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2suc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5zYS1lYXN0LTEu'@; put 'YW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LnNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS5zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpv'@; put 'bmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBzLmR1YWxzdGFjay51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMt'@; put 'd2Vic2l0ZS5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQtZmlwcy51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWRl'@; put 'cHJlY2F0ZWQudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1maXBzLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2sudXMt'@; put 'ZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC5kdWFsc3RhY2sudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBzLmR1YWxzdGFjay51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMuZHVhbHN0YWNrLnVzLWVhc3QtMi5hbWF6b25h'@; put 'd3MuY29tIiwiczMtd2Vic2l0ZS5kdWFsc3RhY2sudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LnVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQtZmlwcy51cy1lYXN0LTIuYW1hem9uYXdz'@; put 'LmNvbSIsInMzLWRlcHJlY2F0ZWQudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1maXBzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtb2JqZWN0LWxhbWJkYS51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5k'@; put 'dWFsc3RhY2sudXMtZ292LWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LWZpcHMuZHVhbHN0YWNrLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMuZHVh'@; put 'bHN0YWNrLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LWZpcHMudXMtZ292LWVhc3QtMS5hbWF6b25hd3MuY29tIiwi'@; put 'czMtZmlwcy51cy1nb3YtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1vYmplY3QtbGFtYmRhLnVzLWdvdi1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUudXMtZ292LWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLnVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNv'@; put 'bSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBzLmR1YWxzdGFjay51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1maXBzLmR1YWxzdGFjay51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20i'@; put 'LCJzMy51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBzLnVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWZpcHMudXMtZ292LXdlc3QtMS5hbWF6b25hd3MuY29t'@; put 'IiwiczMtb2JqZWN0LWxhbWJkYS51cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLnVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay51cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LmR1YWxzdGFjay51cy13ZXN0LTEu'@; put 'YW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LWZpcHMuZHVhbHN0YWNrLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtZmlwcy5kdWFsc3RhY2sudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmR1YWxzdGFjay51cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMz'@; put 'LnVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hY2Nlc3Nwb2ludC1maXBzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtZmlwcy51cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLW9iamVjdC1sYW1iZGEu'@; put 'dXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9pbnQuZHVhbHN0YWNrLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtYWNjZXNzcG9p'@; put 'bnQtZmlwcy5kdWFsc3RhY2sudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1maXBzLmR1YWxzdGFjay51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZHVhbHN0YWNrLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJz'@; put 'My1hY2Nlc3Nwb2ludC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWFjY2Vzc3BvaW50LWZpcHMudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1kZXByZWNhdGVkLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtZmlwcy51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLW9i'@; put 'amVjdC1sYW1iZGEudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwibGFiZWxpbmcuYXAtbm9ydGhlYXN0LTEuc2FnZW1ha2VyLmF3cyIsImxhYmVsaW5nLmFwLW5vcnRoZWFzdC0yLnNhZ2VtYWtlci5hd3MiLCJsYWJlbGluZy5h'@; put 'cC1zb3V0aC0xLnNhZ2VtYWtlci5hd3MiLCJsYWJlbGluZy5hcC1zb3V0aGVhc3QtMS5zYWdlbWFrZXIuYXdzIiwibGFiZWxpbmcuYXAtc291dGhlYXN0LTIuc2FnZW1ha2VyLmF3cyIsImxhYmVsaW5nLmNhLWNlbnRyYWwtMS5zYWdlbWFrZXIuYXdzIiwibGFiZWxpbmcuZXUtY2VudHJhbC0x'@; put 'LnNhZ2VtYWtlci5hd3MiLCJsYWJlbGluZy5ldS13ZXN0LTEuc2FnZW1ha2VyLmF3cyIsImxhYmVsaW5nLmV1LXdlc3QtMi5zYWdlbWFrZXIuYXdzIiwibGFiZWxpbmcudXMtZWFzdC0xLnNhZ2VtYWtlci5hd3MiLCJsYWJlbGluZy51cy1lYXN0LTIuc2FnZW1ha2VyLmF3cyIsImxhYmVsaW5n'@; put 'LnVzLXdlc3QtMi5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2suYWYtc291dGgtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2suYXAtZWFzdC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5hcC1ub3J0aGVhc3QtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2suYXAtbm9ydGhlYXN0LTIuc2Fn'@; put 'ZW1ha2VyLmF3cyIsIm5vdGVib29rLmFwLW5vcnRoZWFzdC0zLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5hcC1zb3V0aC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5hcC1zb3V0aC0yLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5hcC1zb3V0aGVhc3QtMS5zYWdlbWFrZXIuYXdzIiwi'@; put 'bm90ZWJvb2suYXAtc291dGhlYXN0LTIuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLmFwLXNvdXRoZWFzdC0zLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5hcC1zb3V0aGVhc3QtNC5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2suY2EtY2VudHJhbC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9v'@; put 'ay1maXBzLmNhLWNlbnRyYWwtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2suY2Etd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay1maXBzLmNhLXdlc3QtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2suZXUtY2VudHJhbC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5ldS1jZW50'@; put 'cmFsLTIuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLmV1LW5vcnRoLTEuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLmV1LXNvdXRoLTEuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLmV1LXNvdXRoLTIuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLmV1LXdlc3QtMS5zYWdlbWFrZXIuYXdzIiwi'@; put 'bm90ZWJvb2suZXUtd2VzdC0yLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5ldS13ZXN0LTMuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLmlsLWNlbnRyYWwtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2subWUtY2VudHJhbC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5tZS1zb3V0aC0x'@; put 'LnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5zYS1lYXN0LTEuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLnVzLWVhc3QtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2stZmlwcy51cy1lYXN0LTEuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLnVzLWVhc3QtMi5zYWdlbWFrZXIuYXdzIiwibm90'@; put 'ZWJvb2stZmlwcy51cy1lYXN0LTIuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLnVzLWdvdi1lYXN0LTEuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLWZpcHMudXMtZ292LWVhc3QtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJvb2sudXMtZ292LXdlc3QtMS5zYWdlbWFrZXIuYXdzIiwibm90ZWJv'@; put 'b2stZmlwcy51cy1nb3Ytd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay51cy13ZXN0LTEuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLWZpcHMudXMtd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay51cy13ZXN0LTIuc2FnZW1ha2VyLmF3cyIsIm5vdGVib29rLWZpcHMudXMt'@; put 'd2VzdC0yLnNhZ2VtYWtlci5hd3MiLCJub3RlYm9vay5jbi1ub3J0aC0xLnNhZ2VtYWtlci5jb20uY24iLCJub3RlYm9vay5jbi1ub3J0aHdlc3QtMS5zYWdlbWFrZXIuY29tLmNuIiwic3R1ZGlvLmFmLXNvdXRoLTEuc2FnZW1ha2VyLmF3cyIsInN0dWRpby5hcC1lYXN0LTEuc2FnZW1ha2Vy'@; put 'LmF3cyIsInN0dWRpby5hcC1ub3J0aGVhc3QtMS5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLmFwLW5vcnRoZWFzdC0yLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uYXAtbm9ydGhlYXN0LTMuc2FnZW1ha2VyLmF3cyIsInN0dWRpby5hcC1zb3V0aC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uYXAt'@; put 'c291dGhlYXN0LTEuc2FnZW1ha2VyLmF3cyIsInN0dWRpby5hcC1zb3V0aGVhc3QtMi5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLmFwLXNvdXRoZWFzdC0zLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uY2EtY2VudHJhbC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uZXUtY2VudHJhbC0xLnNhZ2Vt'@; put 'YWtlci5hd3MiLCJzdHVkaW8uZXUtbm9ydGgtMS5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLmV1LXNvdXRoLTEuc2FnZW1ha2VyLmF3cyIsInN0dWRpby5ldS1zb3V0aC0yLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uZXUtd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uZXUtd2VzdC0yLnNh'@; put 'Z2VtYWtlci5hd3MiLCJzdHVkaW8uZXUtd2VzdC0zLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uaWwtY2VudHJhbC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8ubWUtY2VudHJhbC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8ubWUtc291dGgtMS5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLnNhLWVh'@; put 'c3QtMS5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLnVzLWVhc3QtMS5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLnVzLWVhc3QtMi5zYWdlbWFrZXIuYXdzIiwic3R1ZGlvLnVzLWdvdi1lYXN0LTEuc2FnZW1ha2VyLmF3cyIsInN0dWRpby1maXBzLnVzLWdvdi1lYXN0LTEuc2FnZW1ha2VyLmF3cyIs'@; put 'InN0dWRpby51cy1nb3Ytd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8tZmlwcy51cy1nb3Ytd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8udXMtd2VzdC0xLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8udXMtd2VzdC0yLnNhZ2VtYWtlci5hd3MiLCJzdHVkaW8uY24tbm9ydGgtMS5z'@; put 'YWdlbWFrZXIuY29tLmNuIiwic3R1ZGlvLmNuLW5vcnRod2VzdC0xLnNhZ2VtYWtlci5jb20uY24iLCIqLmV4cGVyaW1lbnRzLnNhZ2VtYWtlci5hd3MiLCJhbmFseXRpY3MtZ2F0ZXdheS5hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiYW5hbHl0aWNzLWdhdGV3YXkuYXAtbm9ydGhl'@; put 'YXN0LTIuYW1hem9uYXdzLmNvbSIsImFuYWx5dGljcy1nYXRld2F5LmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsImFuYWx5dGljcy1nYXRld2F5LmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJhbmFseXRpY3MtZ2F0ZXdheS5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwi'@; put 'YW5hbHl0aWNzLWdhdGV3YXkuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJhbmFseXRpY3MtZ2F0ZXdheS5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsImFuYWx5dGljcy1nYXRld2F5LnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiYW5hbHl0aWNzLWdhdGV3YXkudXMtZWFzdC0yLmFt'@; put 'YXpvbmF3cy5jb20iLCJhbmFseXRpY3MtZ2F0ZXdheS51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsImFtcGxpZnlhcHAuY29tIiwiKi5hd3NhcHBydW5uZXIuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNsb3VkOS5hZi1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJ2ZnMuY2xvdWQ5LmFmLXNv'@; put 'dXRoLTEuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmNsb3VkOS5hZi1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5LmFwLWVhc3QtMS5hbWF6b25hd3MuY29tIiwidmZzLmNsb3VkOS5hcC1lYXN0LTEuYW1hem9uYXdzLmNvbSIsIndlYnZp'@; put 'ZXctYXNzZXRzLmNsb3VkOS5hcC1lYXN0LTEuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDkuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDkuYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmNsb3VkOS5h'@; put 'cC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNsb3VkOS5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwidmZzLmNsb3VkOS5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LmFwLW5vcnRoZWFzdC0y'@; put 'LmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5LmFwLW5vcnRoZWFzdC0zLmFtYXpvbmF3cy5jb20iLCJ2ZnMuY2xvdWQ5LmFwLW5vcnRoZWFzdC0zLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91ZDkuYXAtbm9ydGhlYXN0LTMuYW1hem9uYXdzLmNv'@; put 'bSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDkuYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwidmZzLmNsb3VkOS5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91ZDkuYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNs'@; put 'b3VkOS5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwidmZzLmNsb3VkOS5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LmFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5LmFwLXNvdXRo'@; put 'ZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJ2ZnMuY2xvdWQ5LmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91ZDkuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDkuY2EtY2VudHJhbC0xLmFtYXpvbmF3'@; put 'cy5jb20iLCJ2ZnMuY2xvdWQ5LmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNsb3VkOS5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDku'@; put 'ZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91ZDkuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5LmV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDkuZXUtbm9ydGgtMS5hbWF6b25hd3Mu'@; put 'Y29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LmV1LW5vcnRoLTEuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDkuZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwidmZzLmNsb3VkOS5ldS1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91'@; put 'ZDkuZXUtc291dGgtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNsb3VkOS5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDkuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91ZDkuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20i'@; put 'LCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5LmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwidmZzLmNsb3VkOS5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmNsb3VkOS5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDku'@; put 'ZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJ2ZnMuY2xvdWQ5LmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNsb3VkOS5pbC1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIs'@; put 'InZmcy5jbG91ZDkuaWwtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5Lm1lLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDkubWUtc291dGgtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5Lm1lLXNvdXRoLTEu'@; put 'YW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDkuc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJ2ZnMuY2xvdWQ5LnNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LnNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3Nl'@; put 'dHMuYXdzLWNsb3VkOS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDkudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5jbG91ZDkudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3LWFzc2V0cy5hd3MtY2xvdWQ5LnVzLWVhc3QtMi5hbWF6'@; put 'b25hd3MuY29tIiwidmZzLmNsb3VkOS51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmNsb3VkOS51cy1lYXN0LTIuYW1hem9uYXdzLmNvbSIsIndlYnZpZXctYXNzZXRzLmF3cy1jbG91ZDkudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJ2ZnMuY2xvdWQ5LnVzLXdl'@; put 'c3QtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuY2xvdWQ5LnVzLXdlc3QtMS5hbWF6b25hd3MuY29tIiwid2Vidmlldy1hc3NldHMuYXdzLWNsb3VkOS51cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInZmcy5jbG91ZDkudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJ3ZWJ2aWV3'@; put 'LWFzc2V0cy5jbG91ZDkudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJhd3NhcHBzLmNvbSIsImNuLW5vcnRoLTEuZWIuYW1hem9uYXdzLmNvbS5jbiIsImNuLW5vcnRod2VzdC0xLmViLmFtYXpvbmF3cy5jb20uY24iLCJlbGFzdGljYmVhbnN0YWxrLmNvbSIsImFmLXNvdXRoLTEuZWxhc3Rp'@; put 'Y2JlYW5zdGFsay5jb20iLCJhcC1lYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1ub3J0aGVhc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLW5vcnRoZWFzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtbm9ydGhlYXN0LTMuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJh'@; put 'cC1zb3V0aC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtc291dGhlYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1zb3V0aGVhc3QtMi5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLXNvdXRoZWFzdC0zLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiY2EtY2VudHJhbC0xLmVsYXN0'@; put 'aWNiZWFuc3RhbGsuY29tIiwiZXUtY2VudHJhbC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiZXUtbm9ydGgtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImV1LXNvdXRoLTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTIu'@; put 'ZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTMuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJpbC1jZW50cmFsLTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJtZS1zb3V0aC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwic2EtZWFzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtZWFz'@; put 'dC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtZWFzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtZ292LWVhc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsInVzLWdvdi13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20i'@; put 'LCJ1cy13ZXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCIqLmVsYi5hbWF6b25hd3MuY29tLmNuIiwiKi5lbGIuYW1hem9uYXdzLmNvbSIsImF3c2dsb2JhbGFjY2VsZXJhdG9yLmNvbSIsIioucHJpdmF0ZS5yZXBvc3QuYXdzIiwiZWVyby5vbmxpbmUiLCJlZXJvLXN0YWdlLm9ubGluZSIs'@; put 'ImFwaWdlZS5pbyIsInBhbmVsLmRldiIsInNpaWl0ZXMuY29tIiwiYXBwc3BhY2Vob3N0ZWQuY29tIiwiYXBwc3BhY2V1c2VyY29udGVudC5jb20iLCJhcHB1ZG8ubmV0Iiwib24tYXB0aWJsZS5jb20iLCJmNS5zaSIsImFydmFuZWRnZS5pciIsInVzZXIuYXNlaW5ldC5uZS5qcCIsImd2LnZj'@; put 'IiwiZC5ndi52YyIsInVzZXIucGFydHkuZXVzIiwicGltaWVudGEub3JnIiwicG9pdnJvbi5vcmciLCJwb3RhZ2VyLm9yZyIsInN3ZWV0cGVwcGVyLm9yZyIsIm15YXN1c3Rvci5jb20iLCJjZG4ucHJvZC5hdGxhc3NpYW4tZGV2Lm5ldCIsInRyYW5zbGF0ZWQucGFnZSIsIm15ZnJpdHoubGlu'@; put 'ayIsIm15ZnJpdHoubmV0Iiwib25hdnN0YWNrLm5ldCIsIiouYXdkZXYuY2EiLCIqLmFkdmlzb3Iud3MiLCJlY29tbWVyY2Utc2hvcC5wbCIsImItZGF0YS5pbyIsImJhbGVuYS1kZXZpY2VzLmNvbSIsImJhc2UuZWMiLCJvZmZpY2lhbC5lYyIsImJ1eXNob3AuanAiLCJmYXNoaW9uc3RvcmUu'@; put 'anAiLCJoYW5kY3JhZnRlZC5qcCIsImthd2FpaXNob3AuanAiLCJzdXBlcnNhbGUuanAiLCJ0aGVzaG9wLmpwIiwic2hvcHNlbGVjdC5uZXQiLCJiYXNlLnNob3AiLCJiZWFnbGVib2FyZC5pbyIsIiouYmVnZXQuYXBwIiwicGFnZXMuZ2F5IiwiYm5yLmxhIiwiYml0YnVja2V0LmlvIiwiYmxh'@; put 'Y2tiYXVkY2RuLm5ldCIsIm9mLmplIiwiYmx1ZWJpdGUuaW8iLCJib29tbGEubmV0IiwiYm91dGlyLmNvbSIsImJveGZ1c2UuaW8iLCJzcXVhcmU3LmNoIiwiYnBsYWNlZC5jb20iLCJicGxhY2VkLmRlIiwic3F1YXJlNy5kZSIsImJwbGFjZWQubmV0Iiwic3F1YXJlNy5uZXQiLCIqLnMuYnJh'@; put 'dmUuaW8iLCJzaG9wLmJyZW5kbHkuaHIiLCJzaG9wLmJyZW5kbHkucnMiLCJicm93c2Vyc2FmZXR5bWFyay5pbyIsInJhZGlvLmFtIiwicmFkaW8uZm0iLCJ1azAuYmlndi5pbyIsImRoLmJ5dGVtYXJrLmNvLnVrIiwidm0uYnl0ZW1hcmsuY28udWsiLCJjYWZqcy5jb20iLCJjYW52YS1hcHBz'@; put 'LmNuIiwiKi5teS5jYW52YXNpdGUuY24iLCJjYW52YS1hcHBzLmNvbSIsIioubXkuY2FudmEuc2l0ZSIsImRyci5hYyIsInV3dS5haSIsImNhcnJkLmNvIiwiY3JkLmNvIiwianUubXAiLCJhcGkuZ292LnVrIiwiY2RuNzctc3RvcmFnZS5jb20iLCJyc2MuY29udGVudHByb3h5OS5jeiIsInIu'@; put 'Y2RuNzcubmV0IiwiY2RuNzctc3NsLm5ldCIsImMuY2RuNzcub3JnIiwicnNjLmNkbjc3Lm9yZyIsInNzbC5vcmlnaW4uY2RuNzctc2VjdXJlLm9yZyIsInphLmJ6IiwiYnIuY29tIiwiY24uY29tIiwiZGUuY29tIiwiZXUuY29tIiwianBuLmNvbSIsIm1leC5jb20iLCJydS5jb20iLCJzYS5j'@; put 'b20iLCJ1ay5jb20iLCJ1cy5jb20iLCJ6YS5jb20iLCJjb20uZGUiLCJnYi5uZXQiLCJodS5uZXQiLCJqcC5uZXQiLCJzZS5uZXQiLCJ1ay5uZXQiLCJhZS5vcmciLCJjb20uc2UiLCJjeC51YSIsImRpc2NvdXJzZS5ncm91cCIsImRpc2NvdXJzZS50ZWFtIiwiY2xlcmsuYXBwIiwiY2xlcmtz'@; put 'dGFnZS5hcHAiLCIqLmxjbC5kZXYiLCIqLmxjbHN0YWdlLmRldiIsIiouc3RnLmRldiIsIiouc3Rnc3RhZ2UuZGV2IiwiY2xldmVyYXBwcy5jYyIsIiouc2VydmljZXMuY2xldmVyLWNsb3VkLmNvbSIsImNsZXZlcmFwcHMuaW8iLCJjbGV2ZXJhcHBzLnRlY2giLCJjbGlja3Jpc2luZy5uZXQi'@; put 'LCJjbG91ZG5zLmFzaWEiLCJjbG91ZG5zLmJlIiwiY2xvdWQtaXAuYml6IiwiY2xvdWRucy5iaXoiLCJjbG91ZG5zLmNjIiwiY2xvdWRucy5jaCIsImNsb3VkbnMuY2wiLCJjbG91ZG5zLmNsdWIiLCJkbnNhYnIuY29tIiwiaXAtZGRucy5jb20iLCJjbG91ZG5zLmN4IiwiY2xvdWRucy5ldSIs'@; put 'ImNsb3VkbnMuaW4iLCJjbG91ZG5zLmluZm8iLCJkZG5zLWlwLm5ldCIsImRucy1jbG91ZC5uZXQiLCJkbnMtZHluYW1pYy5uZXQiLCJjbG91ZG5zLm56IiwiY2xvdWRucy5vcmciLCJpcC1keW5hbWljLm9yZyIsImNsb3VkbnMucGgiLCJjbG91ZG5zLnBybyIsImNsb3VkbnMucHciLCJjbG91'@; put 'ZG5zLnVzIiwiYzY2Lm1lIiwiY2xvdWQ2Ni53cyIsImNsb3VkNjYuem9uZSIsImpkZXZjbG91ZC5jb20iLCJ3cGRldmNsb3VkLmNvbSIsImNsb3VkYWNjZXNzLmhvc3QiLCJmcmVlc2l0ZS5ob3N0IiwiY2xvdWRhY2Nlc3MubmV0IiwiKi5jbG91ZGVyYS5zaXRlIiwiY2YtaXBmcy5jb20iLCJj'@; put 'bG91ZGZsYXJlLWlwZnMuY29tIiwidHJ5Y2xvdWRmbGFyZS5jb20iLCJwYWdlcy5kZXYiLCJyMi5kZXYiLCJ3b3JrZXJzLmRldiIsImNsb3VkZmxhcmUubmV0IiwiY2RuLmNsb3VkZmxhcmUubmV0IiwiY2RuLmNsb3VkZmxhcmVhbnljYXN0Lm5ldCIsImNkbi5jbG91ZGZsYXJlY24ubmV0Iiwi'@; put 'Y2RuLmNsb3VkZmxhcmVnbG9iYWwubmV0IiwiY3VzdC5jbG91ZHNjYWxlLmNoIiwib2JqZWN0cy5scGcuY2xvdWRzY2FsZS5jaCIsIm9iamVjdHMucm1hLmNsb3Vkc2NhbGUuY2giLCJ3bmV4dC5hcHAiLCJjbnB5LmdkbiIsIioub3RhcC5jbyIsImNvLmNhIiwiY28uY29tIiwiY29kZWJlcmcu'@; put 'cGFnZSIsImNzYi5hcHAiLCJwcmV2aWV3LmNzYi5hcHAiLCJjby5ubCIsImNvLm5vIiwid2ViaG9zdGluZy5iZSIsImhvc3RpbmctY2x1c3Rlci5ubCIsImN0ZmNsb3VkLm5ldCIsImNvbnZleC5zaXRlIiwiYWMucnUiLCJlZHUucnUiLCJnb3YucnUiLCJpbnQucnUiLCJtaWwucnUiLCJ0ZXN0'@; put 'LnJ1IiwiZHluLmNvc2lkbnMuZGUiLCJkbnN1cGRhdGVyLmRlIiwiZHluYW1pc2NoZXMtZG5zLmRlIiwiaW50ZXJuZXQtZG5zLmRlIiwibC1vLWctaS1uLmRlIiwiZHluYW1pYy1kbnMuaW5mbyIsImZlc3RlLWlwLm5ldCIsImtueC1zZXJ2ZXIubmV0Iiwic3RhdGljLWFjY2Vzcy5uZXQiLCJj'@; put 'cmFmdC5tZSIsInJlYWxtLmN6Iiwib24uY3Jpc3AuZW1haWwiLCIqLmNyeXB0b25vbWljLm5ldCIsImN1cnYuZGV2IiwiY2ZvbGtzLnBsIiwiY3lvbi5saW5rIiwiY3lvbi5zaXRlIiwicGxhdGZvcm0wLmFwcCIsImZud2suc2l0ZSIsImZvbGlvbmV0d29yay5zaXRlIiwiYml6LmRrIiwiY28u'@; put 'ZGsiLCJmaXJtLmRrIiwicmVnLmRrIiwic3RvcmUuZGsiLCJkeW5kbnMuZGFwcG5vZGUuaW8iLCJidWlsdHdpdGhkYXJrLmNvbSIsImRhcmtsYW5nLmlvIiwiZGVtby5kYXRhZGV0ZWN0LmNvbSIsImluc3RhbmNlLmRhdGFkZXRlY3QuY29tIiwiZWRnZXN0YWNrLm1lIiwiZGF0dG9sb2NhbC5j'@; put 'b20iLCJkYXR0b3JlbGF5LmNvbSIsImRhdHRvd2ViLmNvbSIsIm15ZGF0dG8uY29tIiwiZGF0dG9sb2NhbC5uZXQiLCJteWRhdHRvLm5ldCIsImRkbnNzLmRlIiwiZHluLmRkbnNzLmRlIiwiZHluZG5zLmRkbnNzLmRlIiwiZHluLWlwMjQuZGUiLCJkeW5kbnMxLmRlIiwiaG9tZS13ZWJzZXJ2'@; put 'ZXIuZGUiLCJkeW4uaG9tZS13ZWJzZXJ2ZXIuZGUiLCJteWhvbWUtc2VydmVyLmRlIiwiZGRuc3Mub3JnIiwiZGViaWFuLm5ldCIsImRlZmluaW1hLmlvIiwiZGVmaW5pbWEubmV0IiwiZGVuby5kZXYiLCJkZW5vLXN0YWdpbmcuZGV2IiwiZGVkeW4uaW8iLCJkZXRhLmFwcCIsImRldGEuZGV2'@; put 'IiwiZGZpcm1hLnBsIiwiZGtvbnRvLnBsIiwieW91Mi5wbCIsIm9uZGlnaXRhbG9jZWFuLmFwcCIsIiouZGlnaXRhbG9jZWFuc3BhY2VzLmNvbSIsInVzLmtnIiwicnNzLm15LmlkIiwiZGloZXIuc29sdXRpb25zIiwiZGlzY29yZHNheXMuY29tIiwiZGlzY29yZHNlei5jb20iLCJqb3ppLmJp'@; put 'eiIsImRuc2hvbWUuZGUiLCJvbmxpbmUudGgiLCJzaG9wLnRoIiwiZHJheWRkbnMuY29tIiwic2hvcGFyZW5hLnBsIiwiZHJlYW1ob3N0ZXJzLmNvbSIsImR1cnVtaXMuY29tIiwibXlkcm9iby5jb20iLCJkcnVkLmlvIiwiZHJ1ZC51cyIsImR1Y2tkbnMub3JnIiwiZHkuZmkiLCJ0dW5rLm9y'@; put 'ZyIsImR5bmRucy5iaXoiLCJmb3ItYmV0dGVyLmJpeiIsImZvci1tb3JlLmJpeiIsImZvci1zb21lLmJpeiIsImZvci10aGUuYml6Iiwic2VsZmlwLmJpeiIsIndlYmhvcC5iaXoiLCJmdHBhY2Nlc3MuY2MiLCJnYW1lLXNlcnZlci5jYyIsIm15cGhvdG9zLmNjIiwic2NyYXBwaW5nLmNjIiwi'@; put 'YmxvZ2Rucy5jb20iLCJjZWNoaXJlLmNvbSIsImRuc2FsaWFzLmNvbSIsImRuc2Rvam8uY29tIiwiZG9lc250ZXhpc3QuY29tIiwiZG9udGV4aXN0LmNvbSIsImRvb21kbnMuY29tIiwiZHluLW8tc2F1ci5jb20iLCJkeW5hbGlhcy5jb20iLCJkeW5kbnMtYXQtaG9tZS5jb20iLCJkeW5kbnMt'@; put 'YXQtd29yay5jb20iLCJkeW5kbnMtYmxvZy5jb20iLCJkeW5kbnMtZnJlZS5jb20iLCJkeW5kbnMtaG9tZS5jb20iLCJkeW5kbnMtaXAuY29tIiwiZHluZG5zLW1haWwuY29tIiwiZHluZG5zLW9mZmljZS5jb20iLCJkeW5kbnMtcGljcy5jb20iLCJkeW5kbnMtcmVtb3RlLmNvbSIsImR5bmRu'@; put 'cy1zZXJ2ZXIuY29tIiwiZHluZG5zLXdlYi5jb20iLCJkeW5kbnMtd2lraS5jb20iLCJkeW5kbnMtd29yay5jb20iLCJlc3QtYS1sYS1tYWlzb24uY29tIiwiZXN0LWEtbGEtbWFzaW9uLmNvbSIsImVzdC1sZS1wYXRyb24uY29tIiwiZXN0LW1vbi1ibG9ndWV1ci5jb20iLCJmcm9tLWFrLmNv'@; put 'bSIsImZyb20tYWwuY29tIiwiZnJvbS1hci5jb20iLCJmcm9tLWNhLmNvbSIsImZyb20tY3QuY29tIiwiZnJvbS1kYy5jb20iLCJmcm9tLWRlLmNvbSIsImZyb20tZmwuY29tIiwiZnJvbS1nYS5jb20iLCJmcm9tLWhpLmNvbSIsImZyb20taWEuY29tIiwiZnJvbS1pZC5jb20iLCJmcm9tLWls'@; put 'LmNvbSIsImZyb20taW4uY29tIiwiZnJvbS1rcy5jb20iLCJmcm9tLWt5LmNvbSIsImZyb20tbWEuY29tIiwiZnJvbS1tZC5jb20iLCJmcm9tLW1pLmNvbSIsImZyb20tbW4uY29tIiwiZnJvbS1tby5jb20iLCJmcm9tLW1zLmNvbSIsImZyb20tbXQuY29tIiwiZnJvbS1uYy5jb20iLCJmcm9t'@; put 'LW5kLmNvbSIsImZyb20tbmUuY29tIiwiZnJvbS1uaC5jb20iLCJmcm9tLW5qLmNvbSIsImZyb20tbm0uY29tIiwiZnJvbS1udi5jb20iLCJmcm9tLW9oLmNvbSIsImZyb20tb2suY29tIiwiZnJvbS1vci5jb20iLCJmcm9tLXBhLmNvbSIsImZyb20tcHIuY29tIiwiZnJvbS1yaS5jb20iLCJm'@; put 'cm9tLXNjLmNvbSIsImZyb20tc2QuY29tIiwiZnJvbS10bi5jb20iLCJmcm9tLXR4LmNvbSIsImZyb20tdXQuY29tIiwiZnJvbS12YS5jb20iLCJmcm9tLXZ0LmNvbSIsImZyb20td2EuY29tIiwiZnJvbS13aS5jb20iLCJmcm9tLXd2LmNvbSIsImZyb20td3kuY29tIiwiZ2V0bXlpcC5jb20i'@; put 'LCJnb3RkbnMuY29tIiwiaG9iYnktc2l0ZS5jb20iLCJob21lbGludXguY29tIiwiaG9tZXVuaXguY29tIiwiaWFtYWxsYW1hLmNvbSIsImlzLWEtYW5hcmNoaXN0LmNvbSIsImlzLWEtYmxvZ2dlci5jb20iLCJpcy1hLWJvb2trZWVwZXIuY29tIiwiaXMtYS1idWxscy1mYW4uY29tIiwiaXMt'@; put 'YS1jYXRlcmVyLmNvbSIsImlzLWEtY2hlZi5jb20iLCJpcy1hLWNvbnNlcnZhdGl2ZS5jb20iLCJpcy1hLWNwYS5jb20iLCJpcy1hLWN1YmljbGUtc2xhdmUuY29tIiwiaXMtYS1kZW1vY3JhdC5jb20iLCJpcy1hLWRlc2lnbmVyLmNvbSIsImlzLWEtZG9jdG9yLmNvbSIsImlzLWEtZmluYW5j'@; put 'aWFsYWR2aXNvci5jb20iLCJpcy1hLWdlZWsuY29tIiwiaXMtYS1ncmVlbi5jb20iLCJpcy1hLWd1cnUuY29tIiwiaXMtYS1oYXJkLXdvcmtlci5jb20iLCJpcy1hLWh1bnRlci5jb20iLCJpcy1hLWxhbmRzY2FwZXIuY29tIiwiaXMtYS1sYXd5ZXIuY29tIiwiaXMtYS1saWJlcmFsLmNvbSIs'@; put 'ImlzLWEtbGliZXJ0YXJpYW4uY29tIiwiaXMtYS1sbGFtYS5jb20iLCJpcy1hLW11c2ljaWFuLmNvbSIsImlzLWEtbmFzY2FyZmFuLmNvbSIsImlzLWEtbnVyc2UuY29tIiwiaXMtYS1wYWludGVyLmNvbSIsImlzLWEtcGVyc29uYWx0cmFpbmVyLmNvbSIsImlzLWEtcGhvdG9ncmFwaGVyLmNv'@; put 'bSIsImlzLWEtcGxheWVyLmNvbSIsImlzLWEtcmVwdWJsaWNhbi5jb20iLCJpcy1hLXJvY2tzdGFyLmNvbSIsImlzLWEtc29jaWFsaXN0LmNvbSIsImlzLWEtc3R1ZGVudC5jb20iLCJpcy1hLXRlYWNoZXIuY29tIiwiaXMtYS10ZWNoaWUuY29tIiwiaXMtYS10aGVyYXBpc3QuY29tIiwiaXMt'@; put 'YW4tYWNjb3VudGFudC5jb20iLCJpcy1hbi1hY3Rvci5jb20iLCJpcy1hbi1hY3RyZXNzLmNvbSIsImlzLWFuLWFuYXJjaGlzdC5jb20iLCJpcy1hbi1hcnRpc3QuY29tIiwiaXMtYW4tZW5naW5lZXIuY29tIiwiaXMtYW4tZW50ZXJ0YWluZXIuY29tIiwiaXMtY2VydGlmaWVkLmNvbSIsImlz'@; put 'LWdvbmUuY29tIiwiaXMtaW50by1hbmltZS5jb20iLCJpcy1pbnRvLWNhcnMuY29tIiwiaXMtaW50by1jYXJ0b29ucy5jb20iLCJpcy1pbnRvLWdhbWVzLmNvbSIsImlzLWxlZXQuY29tIiwiaXMtbm90LWNlcnRpZmllZC5jb20iLCJpcy1zbGljay5jb20iLCJpcy11YmVybGVldC5jb20iLCJp'@; put 'cy13aXRoLXRoZWJhbmQuY29tIiwiaXNhLWdlZWsuY29tIiwiaXNhLWhvY2tleW51dC5jb20iLCJpc3NtYXJ0ZXJ0aGFueW91LmNvbSIsImxpa2VzLXBpZS5jb20iLCJsaWtlc2NhbmR5LmNvbSIsIm5lYXQtdXJsLmNvbSIsInNhdmVzLXRoZS13aGFsZXMuY29tIiwic2VsZmlwLmNvbSIsInNl'@; put 'bGxzLWZvci1sZXNzLmNvbSIsInNlbGxzLWZvci11LmNvbSIsInNlcnZlYmJzLmNvbSIsInNpbXBsZS11cmwuY29tIiwic3BhY2UtdG8tcmVudC5jb20iLCJ0ZWFjaGVzLXlvZ2EuY29tIiwid3JpdGVzdGhpc2Jsb2cuY29tIiwiYXRoLmN4IiwiZnVldHRlcnRkYXNuZXR6LmRlIiwiaXN0ZWlu'@; put 'Z2Vlay5kZSIsImlzdG1laW4uZGUiLCJsZWJ0aW1uZXR6LmRlIiwibGVpdHVuZ3Nlbi5kZSIsInRyYWV1bXRnZXJhZGUuZGUiLCJiYXJyZWwtb2Yta25vd2xlZGdlLmluZm8iLCJiYXJyZWxsLW9mLWtub3dsZWRnZS5pbmZvIiwiZHluZG5zLmluZm8iLCJmb3Itb3VyLmluZm8iLCJncm9rcy10'@; put 'aGUuaW5mbyIsImdyb2tzLXRoaXMuaW5mbyIsImhlcmUtZm9yLW1vcmUuaW5mbyIsImtub3dzaXRhbGwuaW5mbyIsInNlbGZpcC5pbmZvIiwid2ViaG9wLmluZm8iLCJmb3Jnb3QuaGVyLm5hbWUiLCJmb3Jnb3QuaGlzLm5hbWUiLCJhdC1iYW5kLWNhbXAubmV0IiwiYmxvZ2Rucy5uZXQiLCJi'@; put 'cm9rZS1pdC5uZXQiLCJidXlzaG91c2VzLm5ldCIsImRuc2FsaWFzLm5ldCIsImRuc2Rvam8ubmV0IiwiZG9lcy1pdC5uZXQiLCJkb250ZXhpc3QubmV0IiwiZHluYWxpYXMubmV0IiwiZHluYXRob21lLm5ldCIsImVuZG9maW50ZXJuZXQubmV0IiwiZnJvbS1hei5uZXQiLCJmcm9tLWNvLm5l'@; put 'dCIsImZyb20tbGEubmV0IiwiZnJvbS1ueS5uZXQiLCJnZXRzLWl0Lm5ldCIsImhhbS1yYWRpby1vcC5uZXQiLCJob21lZnRwLm5ldCIsImhvbWVpcC5uZXQiLCJob21lbGludXgubmV0IiwiaG9tZXVuaXgubmV0IiwiaW4tdGhlLWJhbmQubmV0IiwiaXMtYS1jaGVmLm5ldCIsImlzLWEtZ2Vl'@; put 'ay5uZXQiLCJpc2EtZ2Vlay5uZXQiLCJraWNrcy1hc3MubmV0Iiwib2ZmaWNlLW9uLXRoZS5uZXQiLCJwb2R6b25lLm5ldCIsInNjcmFwcGVyLXNpdGUubmV0Iiwic2VsZmlwLm5ldCIsInNlbGxzLWl0Lm5ldCIsInNlcnZlYmJzLm5ldCIsInNlcnZlZnRwLm5ldCIsInRocnVoZXJlLm5ldCIs'@; put 'IndlYmhvcC5uZXQiLCJtZXJzZWluZS5udSIsIm1pbmUubnUiLCJzaGFja25ldC5udSIsImJsb2dkbnMub3JnIiwiYmxvZ3NpdGUub3JnIiwiYm9sZGx5Z29pbmdub3doZXJlLm9yZyIsImRuc2FsaWFzLm9yZyIsImRuc2Rvam8ub3JnIiwiZG9lc250ZXhpc3Qub3JnIiwiZG9udGV4aXN0Lm9y'@; put 'ZyIsImRvb21kbnMub3JnIiwiZHZyZG5zLm9yZyIsImR5bmFsaWFzLm9yZyIsImR5bmRucy5vcmciLCJnby5keW5kbnMub3JnIiwiaG9tZS5keW5kbnMub3JnIiwiZW5kb2ZpbnRlcm5ldC5vcmciLCJlbmRvZnRoZWludGVybmV0Lm9yZyIsImZyb20tbWUub3JnIiwiZ2FtZS1ob3N0Lm9yZyIs'@; put 'ImdvdGRucy5vcmciLCJob2JieS1zaXRlLm9yZyIsImhvbWVkbnMub3JnIiwiaG9tZWZ0cC5vcmciLCJob21lbGludXgub3JnIiwiaG9tZXVuaXgub3JnIiwiaXMtYS1icnVpbnNmYW4ub3JnIiwiaXMtYS1jYW5kaWRhdGUub3JnIiwiaXMtYS1jZWx0aWNzZmFuLm9yZyIsImlzLWEtY2hlZi5v'@; put 'cmciLCJpcy1hLWdlZWsub3JnIiwiaXMtYS1rbmlnaHQub3JnIiwiaXMtYS1saW51eC11c2VyLm9yZyIsImlzLWEtcGF0c2Zhbi5vcmciLCJpcy1hLXNveGZhbi5vcmciLCJpcy1mb3VuZC5vcmciLCJpcy1sb3N0Lm9yZyIsImlzLXNhdmVkLm9yZyIsImlzLXZlcnktYmFkLm9yZyIsImlzLXZl'@; put 'cnktZXZpbC5vcmciLCJpcy12ZXJ5LWdvb2Qub3JnIiwiaXMtdmVyeS1uaWNlLm9yZyIsImlzLXZlcnktc3dlZXQub3JnIiwiaXNhLWdlZWsub3JnIiwia2lja3MtYXNzLm9yZyIsIm1pc2NvbmZ1c2VkLm9yZyIsInBvZHpvbmUub3JnIiwicmVhZG15YmxvZy5vcmciLCJzZWxmaXAub3JnIiwi'@; put 'c2VsbHN5b3VyaG9tZS5vcmciLCJzZXJ2ZWJicy5vcmciLCJzZXJ2ZWZ0cC5vcmciLCJzZXJ2ZWdhbWUub3JnIiwic3R1ZmYtNC1zYWxlLm9yZyIsIndlYmhvcC5vcmciLCJiZXR0ZXItdGhhbi50diIsImR5bmRucy50diIsIm9uLXRoZS13ZWIudHYiLCJ3b3JzZS10aGFuLnR2IiwiaXMtYnku'@; put 'dXMiLCJsYW5kLTQtc2FsZS51cyIsInN0dWZmLTQtc2FsZS51cyIsImR5bmRucy53cyIsIm15cGV0cy53cyIsImRkbnNmcmVlLmNvbSIsImRkbnNnZWVrLmNvbSIsImdpaXplLmNvbSIsImdsZWV6ZS5jb20iLCJrb3pvdy5jb20iLCJsb3NleW91cmlwLmNvbSIsIm9vZ3V5LmNvbSIsInRoZXdv'@; put 'cmtwYy5jb20iLCJjYXNhY2FtLm5ldCIsImR5bnUubmV0IiwiYWNjZXNzY2FtLm9yZyIsImNhbWR2ci5vcmciLCJmcmVlZGRucy5vcmciLCJteXdpcmUub3JnIiwid2VicmVkaXJlY3Qub3JnIiwibXlkZG5zLnJvY2tzIiwiZHludjYubmV0IiwiZTQuY3oiLCJlYXN5cGFuZWwuYXBwIiwiZWFz'@; put 'eXBhbmVsLmhvc3QiLCIqLmV3cC5saXZlIiwidHdtYWlsLmNjIiwidHdtYWlsLm5ldCIsInR3bWFpbC5vcmciLCJteW1haWxlci5jb20udHciLCJ1cmwudHciLCJhdC5lbWYuY2FtcCIsInJ0Lmh0IiwiZWxlbWVudG9yLmNsb3VkIiwiZWxlbWVudG9yLmNvb2wiLCJlbi1yb290LmZyIiwibXl0'@; put 'dWxlYXAuY29tIiwidHVsZWFwLXBhcnRuZXJzLmNvbSIsImVuY3IuYXBwIiwiZW5jb3JlYXBpLmNvbSIsImV1LmVuY293YXkuY2xvdWQiLCJldS5vcmciLCJhbC5ldS5vcmciLCJhc3NvLmV1Lm9yZyIsImF0LmV1Lm9yZyIsImF1LmV1Lm9yZyIsImJlLmV1Lm9yZyIsImJnLmV1Lm9yZyIsImNh'@; put 'LmV1Lm9yZyIsImNkLmV1Lm9yZyIsImNoLmV1Lm9yZyIsImNuLmV1Lm9yZyIsImN5LmV1Lm9yZyIsImN6LmV1Lm9yZyIsImRlLmV1Lm9yZyIsImRrLmV1Lm9yZyIsImVkdS5ldS5vcmciLCJlZS5ldS5vcmciLCJlcy5ldS5vcmciLCJmaS5ldS5vcmciLCJmci5ldS5vcmciLCJnci5ldS5vcmci'@; put 'LCJoci5ldS5vcmciLCJodS5ldS5vcmciLCJpZS5ldS5vcmciLCJpbC5ldS5vcmciLCJpbi5ldS5vcmciLCJpbnQuZXUub3JnIiwiaXMuZXUub3JnIiwiaXQuZXUub3JnIiwianAuZXUub3JnIiwia3IuZXUub3JnIiwibHQuZXUub3JnIiwibHUuZXUub3JnIiwibHYuZXUub3JnIiwibWUuZXUu'@; put 'b3JnIiwibWsuZXUub3JnIiwibXQuZXUub3JnIiwibXkuZXUub3JnIiwibmV0LmV1Lm9yZyIsIm5nLmV1Lm9yZyIsIm5sLmV1Lm9yZyIsIm5vLmV1Lm9yZyIsIm56LmV1Lm9yZyIsInBsLmV1Lm9yZyIsInB0LmV1Lm9yZyIsInJvLmV1Lm9yZyIsInJ1LmV1Lm9yZyIsInNlLmV1Lm9yZyIsInNp'@; put 'LmV1Lm9yZyIsInNrLmV1Lm9yZyIsInRyLmV1Lm9yZyIsInVrLmV1Lm9yZyIsInVzLmV1Lm9yZyIsImV1cm9kaXIucnUiLCJldS0xLmV2ZW5ub2RlLmNvbSIsImV1LTIuZXZlbm5vZGUuY29tIiwiZXUtMy5ldmVubm9kZS5jb20iLCJldS00LmV2ZW5ub2RlLmNvbSIsInVzLTEuZXZlbm5vZGUu'@; put 'Y29tIiwidXMtMi5ldmVubm9kZS5jb20iLCJ1cy0zLmV2ZW5ub2RlLmNvbSIsInVzLTQuZXZlbm5vZGUuY29tIiwicmVsYXkuZXZlcnZhdWx0LmFwcCIsInJlbGF5LmV2ZXJ2YXVsdC5kZXYiLCJleHBvLmFwcCIsInN0YWdpbmcuZXhwby5hcHAiLCJvbmZhYnJpY2EuY29tIiwicnUubmV0Iiwi'@; put 'YWR5Z2V5YS5ydSIsImJhc2hraXJpYS5ydSIsImJpci5ydSIsImNiZy5ydSIsImNvbS5ydSIsImRhZ2VzdGFuLnJ1IiwiZ3Jvem55LnJ1Iiwia2FsbXlraWEucnUiLCJrdXN0YW5haS5ydSIsIm1hcmluZS5ydSIsIm1vcmRvdmlhLnJ1IiwibXNrLnJ1IiwibXl0aXMucnUiLCJuYWxjaGlrLnJ1'@; put 'Iiwibm92LnJ1IiwicHlhdGlnb3Jzay5ydSIsInNwYi5ydSIsInZsYWRpa2F2a2F6LnJ1IiwidmxhZGltaXIucnUiLCJhYmtoYXppYS5zdSIsImFkeWdleWEuc3UiLCJha3R5dWJpbnNrLnN1IiwiYXJraGFuZ2Vsc2suc3UiLCJhcm1lbmlhLnN1IiwiYXNoZ2FiYWQuc3UiLCJhemVyYmFpamFu'@; put 'LnN1IiwiYmFsYXNob3Yuc3UiLCJiYXNoa2lyaWEuc3UiLCJicnlhbnNrLnN1IiwiYnVraGFyYS5zdSIsImNoaW1rZW50LnN1IiwiZGFnZXN0YW4uc3UiLCJlYXN0LWthemFraHN0YW4uc3UiLCJleG5ldC5zdSIsImdlb3JnaWEuc3UiLCJncm96bnkuc3UiLCJpdmFub3ZvLnN1IiwiamFtYnls'@; put 'LnN1Iiwia2FsbXlraWEuc3UiLCJrYWx1Z2Euc3UiLCJrYXJhY29sLnN1Iiwia2FyYWdhbmRhLnN1Iiwia2FyZWxpYS5zdSIsImtoYWthc3NpYS5zdSIsImtyYXNub2Rhci5zdSIsImt1cmdhbi5zdSIsImt1c3RhbmFpLnN1IiwibGVudWcuc3UiLCJtYW5neXNobGFrLnN1IiwibW9yZG92aWEu'@; put 'c3UiLCJtc2suc3UiLCJtdXJtYW5zay5zdSIsIm5hbGNoaWsuc3UiLCJuYXZvaS5zdSIsIm5vcnRoLWthemFraHN0YW4uc3UiLCJub3Yuc3UiLCJvYm5pbnNrLnN1IiwicGVuemEuc3UiLCJwb2tyb3Zzay5zdSIsInNvY2hpLnN1Iiwic3BiLnN1IiwidGFzaGtlbnQuc3UiLCJ0ZXJtZXouc3Ui'@; put 'LCJ0b2dsaWF0dGkuc3UiLCJ0cm9pdHNrLnN1IiwidHNlbGlub2dyYWQuc3UiLCJ0dWxhLnN1IiwidHV2YS5zdSIsInZsYWRpa2F2a2F6LnN1IiwidmxhZGltaXIuc3UiLCJ2b2xvZ2RhLnN1IiwiY2hhbm5lbHNkdnIubmV0IiwidS5jaGFubmVsc2R2ci5uZXQiLCJlZGdlY29tcHV0ZS5hcHAi'@; put 'LCJmYXN0bHktZWRnZS5jb20iLCJmYXN0bHktdGVycmFyaXVtLmNvbSIsImZyZWV0bHMuZmFzdGx5Lm5ldCIsIm1hcC5mYXN0bHkubmV0IiwiYS5wcm9kLmZhc3RseS5uZXQiLCJnbG9iYWwucHJvZC5mYXN0bHkubmV0IiwiYS5zc2wuZmFzdGx5Lm5ldCIsImIuc3NsLmZhc3RseS5uZXQiLCJn'@; put 'bG9iYWwuc3NsLmZhc3RseS5uZXQiLCJmYXN0bHlsYi5uZXQiLCJtYXAuZmFzdGx5bGIubmV0IiwiKi51c2VyLmZtIiwiZmFzdHZwcy1zZXJ2ZXIuY29tIiwiZmFzdHZwcy5ob3N0IiwibXlmYXN0Lmhvc3QiLCJmYXN0dnBzLnNpdGUiLCJteWZhc3Quc3BhY2UiLCJjb25uLnVrIiwiY29wcm8u'@; put 'dWsiLCJob3NwLnVrIiwiZmVkb3JhaW5mcmFjbG91ZC5vcmciLCJmZWRvcmFwZW9wbGUub3JnIiwiY2xvdWQuZmVkb3JhcHJvamVjdC5vcmciLCJhcHAub3MuZmVkb3JhcHJvamVjdC5vcmciLCJhcHAub3Muc3RnLmZlZG9yYXByb2plY3Qub3JnIiwibXlkb2Jpc3MuY29tIiwiZmgtbXVlbnN0'@; put 'ZXIuaW8iLCJmaWxlZ2Vhci5tZSIsImZpcmViYXNlYXBwLmNvbSIsImZsZHJ2LmNvbSIsImZsdXR0ZXJmbG93LmFwcCIsImZseS5kZXYiLCJzaHcuaW8iLCJlZGdlYXBwLm5ldCIsImZvcmdlYmxvY2tzLmNvbSIsImlkLmZvcmdlcm9jay5pbyIsImZyYW1lci5haSIsImZyYW1lci5hcHAiLCJm'@; put 'cmFtZXJjYW52YXMuY29tIiwiZnJhbWVyLm1lZGlhIiwiZnJhbWVyLnBob3RvcyIsImZyYW1lci53ZWJzaXRlIiwiZnJhbWVyLndpa2kiLCIwZS52YyIsImZyZWVib3gtb3MuY29tIiwiZnJlZWJveG9zLmNvbSIsImZieC1vcy5mciIsImZieG9zLmZyIiwiZnJlZWJveC1vcy5mciIsImZyZWVi'@; put 'b3hvcy5mciIsImZyZWVkZXNrdG9wLm9yZyIsImZyZWVteWlwLmNvbSIsIiouZnJ1c2t5LmRlIiwid2llbi5mdW5rZmV1ZXIuYXQiLCJkYWVtb24uYXNpYSIsImRpeC5hc2lhIiwibXlkbnMuYnoiLCIwYW0uanAiLCIwZzAuanAiLCIwajAuanAiLCIwdDAuanAiLCJteWRucy5qcCIsInBndy5q'@; put 'cCIsIndqZy5qcCIsImtleXdvcmQtb24ubmV0IiwibGl2ZS1vbi5uZXQiLCJzZXJ2ZXItb24ubmV0IiwibXlkbnMudHciLCJteWRucy52YyIsIiouZnV0dXJlY21zLmF0IiwiKi5leC5mdXR1cmVjbXMuYXQiLCIqLmluLmZ1dHVyZWNtcy5hdCIsImZ1dHVyZWhvc3RpbmcuYXQiLCJmdXR1cmVt'@; put 'YWlsaW5nLmF0IiwiKi5leC5vcnRzaW5mby5hdCIsIioua3VuZGVuLm9ydHNpbmZvLmF0IiwiKi5zdGF0aWNzLmNsb3VkIiwiYWxpYXNlczEyMS5jb20iLCJjYW1wYWlnbi5nb3YudWsiLCJzZXJ2aWNlLmdvdi51ayIsImluZGVwZW5kZW50LWNvbW1pc3Npb24udWsiLCJpbmRlcGVuZGVudC1p'@; put 'bnF1ZXN0LnVrIiwiaW5kZXBlbmRlbnQtaW5xdWlyeS51ayIsImluZGVwZW5kZW50LXBhbmVsLnVrIiwiaW5kZXBlbmRlbnQtcmV2aWV3LnVrIiwicHVibGljLWlucXVpcnkudWsiLCJyb3lhbC1jb21taXNzaW9uLnVrIiwiZ2VoaXJuLm5lLmpwIiwidXNlcmNvbnRlbnQuanAiLCJnZW50YXBw'@; put 'cy5jb20iLCJnZW50bGVudGFwaXMuY29tIiwibGFiLm1zIiwiY2RuLWVkZ2VzLm5ldCIsImxvY2FsY2VydC5uZXQiLCJsb2NhbGhvc3RjZXJ0Lm5ldCIsImdzai5ieiIsImdpdGh1YnVzZXJjb250ZW50LmNvbSIsImdpdGh1YnByZXZpZXcuZGV2IiwiZ2l0aHViLmlvIiwiZ2l0bGFiLmlvIiwi'@; put 'Z2l0YXBwLnNpIiwiZ2l0cGFnZS5zaSIsImdsaXRjaC5tZSIsIm5vZy5jb21tdW5pdHkiLCJjby5ybyIsInNob3Aucm8iLCJsb2xpcG9wLmlvIiwiYW5ncnkuanAiLCJiYWJ5Ymx1ZS5qcCIsImJhYnltaWxrLmpwIiwiYmFja2Ryb3AuanAiLCJiYW1iaW5hLmpwIiwiYml0dGVyLmpwIiwiYmx1'@; put 'c2guanAiLCJib28uanAiLCJib3kuanAiLCJib3lmcmllbmQuanAiLCJidXQuanAiLCJjYW5keXBvcC5qcCIsImNhcG9vLmpwIiwiY2F0Zm9vZC5qcCIsImNoZWFwLmpwIiwiY2hpY2FwcGEuanAiLCJjaGlsbG91dC5qcCIsImNoaXBzLmpwIiwiY2hvd2Rlci5qcCIsImNodS5qcCIsImNpYW8u'@; put 'anAiLCJjb2NvdHRlLmpwIiwiY29vbGJsb2cuanAiLCJjcmFua3kuanAiLCJjdXRlZ2lybC5qcCIsImRhYS5qcCIsImRlY2EuanAiLCJkZWNpLmpwIiwiZGlnaWNrLmpwIiwiZWdvaXNtLmpwIiwiZmFrZWZ1ci5qcCIsImZlbS5qcCIsImZsaWVyLmpwIiwiZmxvcHB5LmpwIiwiZm9vbC5qcCIs'@; put 'ImZyZW5jaGtpc3MuanAiLCJnaXJsZnJpZW5kLmpwIiwiZ2lybHkuanAiLCJnbG9vbXkuanAiLCJnb25uYS5qcCIsImdyZWF0ZXIuanAiLCJoYWNjYS5qcCIsImhlYXZ5LmpwIiwiaGVyLmpwIiwiaGloby5qcCIsImhpcHB5LmpwIiwiaG9seS5qcCIsImh1bmdyeS5qcCIsImljdXJ1cy5qcCIs'@; put 'Iml0aWdvLmpwIiwiamVsbHliZWFuLmpwIiwia2lraXJhcmEuanAiLCJraWxsLmpwIiwia2lsby5qcCIsImt1cm9uLmpwIiwibGl0dGxlc3Rhci5qcCIsImxvbGlwb3BtYy5qcCIsImxvbGl0YXB1bmsuanAiLCJsb21vLmpwIiwibG92ZXBvcC5qcCIsImxvdmVzaWNrLmpwIiwibWFpbi5qcCIs'@; put 'Im1vZHMuanAiLCJtb25kLmpwIiwibW9uZ29saWFuLmpwIiwibW9vLmpwIiwibmFtYXN0ZS5qcCIsIm5pa2l0YS5qcCIsIm5vYnVzaGkuanAiLCJub29yLmpwIiwib29wcy5qcCIsInBhcmFsbGVsLmpwIiwicGFyYXNpdGUuanAiLCJwZWNvcmkuanAiLCJwZWV3ZWUuanAiLCJwZW5uZS5qcCIs'@; put 'InBlcHBlci5qcCIsInBlcm1hLmpwIiwicGlnYm9hdC5qcCIsInBpbm9rby5qcCIsInB1bnl1LmpwIiwicHVwdS5qcCIsInB1c3N5Y2F0LmpwIiwicHlhLmpwIiwicmFpbmRyb3AuanAiLCJyZWFkeW1hZGUuanAiLCJzYWRpc3QuanAiLCJzY2hvb2xidXMuanAiLCJzZWNyZXQuanAiLCJzdGFi'@; put 'YS5qcCIsInN0cmlwcGVyLmpwIiwic3ViLmpwIiwic3VubnlkYXkuanAiLCJ0aGljay5qcCIsInRvbmtvdHN1LmpwIiwidW5kZXIuanAiLCJ1cHBlci5qcCIsInZlbHZldC5qcCIsInZlcnNlLmpwIiwidmVyc3VzLmpwIiwidml2aWFuLmpwIiwid2F0c29uLmpwIiwid2VibGlrZS5qcCIsIndo'@; put 'aXRlc25vdy5qcCIsInpvbWJpZS5qcCIsImhldGVtbC5uZXQiLCJncmFwaGljLmRlc2lnbiIsImdvaXAuZGUiLCJibG9nc3BvdC5hZSIsImJsb2dzcG90LmFsIiwiYmxvZ3Nwb3QuYW0iLCIqLmhvc3RlZC5hcHAiLCIqLnJ1bi5hcHAiLCJ3ZWIuYXBwIiwiYmxvZ3Nwb3QuY29tLmFyIiwiYmxv'@; put 'Z3Nwb3QuY28uYXQiLCJibG9nc3BvdC5jb20uYXUiLCJibG9nc3BvdC5iYSIsImJsb2dzcG90LmJlIiwiYmxvZ3Nwb3QuYmciLCJibG9nc3BvdC5iaiIsImJsb2dzcG90LmNvbS5iciIsImJsb2dzcG90LmNvbS5ieSIsImJsb2dzcG90LmNhIiwiYmxvZ3Nwb3QuY2YiLCJibG9nc3BvdC5jaCIs'@; put 'ImJsb2dzcG90LmNsIiwiYmxvZ3Nwb3QuY29tLmNvIiwiKi4wZW1tLmNvbSIsImFwcHNwb3QuY29tIiwiKi5yLmFwcHNwb3QuY29tIiwiYmxvZ3Nwb3QuY29tIiwiY29kZXNwb3QuY29tIiwiZ29vZ2xlYXBpcy5jb20iLCJnb29nbGVjb2RlLmNvbSIsInBhZ2VzcGVlZG1vYmlsaXplci5jb20i'@; put 'LCJ3aXRoZ29vZ2xlLmNvbSIsIndpdGh5b3V0dWJlLmNvbSIsImJsb2dzcG90LmN2IiwiYmxvZ3Nwb3QuY29tLmN5IiwiYmxvZ3Nwb3QuY3oiLCJibG9nc3BvdC5kZSIsIiouZ2F0ZXdheS5kZXYiLCJibG9nc3BvdC5kayIsImJsb2dzcG90LmNvbS5lZSIsImJsb2dzcG90LmNvbS5lZyIsImJs'@; put 'b2dzcG90LmNvbS5lcyIsImJsb2dzcG90LmZpIiwiYmxvZ3Nwb3QuZnIiLCJjbG91ZC5nb29nIiwidHJhbnNsYXRlLmdvb2ciLCIqLnVzZXJjb250ZW50Lmdvb2ciLCJibG9nc3BvdC5nciIsImJsb2dzcG90LmhrIiwiYmxvZ3Nwb3QuaHIiLCJibG9nc3BvdC5odSIsImJsb2dzcG90LmNvLmlk'@; put 'IiwiYmxvZ3Nwb3QuaWUiLCJibG9nc3BvdC5jby5pbCIsImJsb2dzcG90LmluIiwiYmxvZ3Nwb3QuaXMiLCJibG9nc3BvdC5pdCIsImJsb2dzcG90LmpwIiwiYmxvZ3Nwb3QuY28ua2UiLCJibG9nc3BvdC5rciIsImJsb2dzcG90LmxpIiwiYmxvZ3Nwb3QubHQiLCJibG9nc3BvdC5sdSIsImJs'@; put 'b2dzcG90Lm1kIiwiYmxvZ3Nwb3QubWsiLCJibG9nc3BvdC5jb20ubXQiLCJibG9nc3BvdC5teCIsImJsb2dzcG90Lm15IiwiY2xvdWRmdW5jdGlvbnMubmV0IiwiYmxvZ3Nwb3QuY29tLm5nIiwiYmxvZ3Nwb3QubmwiLCJibG9nc3BvdC5ubyIsImJsb2dzcG90LmNvLm56IiwiYmxvZ3Nwb3Qu'@; put 'cGUiLCJibG9nc3BvdC5wdCIsImJsb2dzcG90LnFhIiwiYmxvZ3Nwb3QucmUiLCJibG9nc3BvdC5ybyIsImJsb2dzcG90LnJzIiwiYmxvZ3Nwb3QucnUiLCJibG9nc3BvdC5zZSIsImJsb2dzcG90LnNnIiwiYmxvZ3Nwb3Quc2kiLCJibG9nc3BvdC5zayIsImJsb2dzcG90LnNuIiwiYmxvZ3Nw'@; put 'b3QudGQiLCJibG9nc3BvdC5jb20udHIiLCJibG9nc3BvdC50dyIsImJsb2dzcG90LnVnIiwiYmxvZ3Nwb3QuY28udWsiLCJibG9nc3BvdC5jb20udXkiLCJibG9nc3BvdC52biIsImJsb2dzcG90LmNvLnphIiwiZ291cGlsZS5mciIsInB5bW50LnVrIiwiY2xvdWRhcHBzLmRpZ2l0YWwiLCJs'@; put 'b25kb24uY2xvdWRhcHBzLmRpZ2l0YWwiLCJnb3YubmwiLCJncmFmYW5hLWRldi5uZXQiLCJncmF5amF5bGVhZ3Vlcy5jb20iLCJnXHhmY25zdGlnYmVzdGVsbGVuLmRlIiwiZ1x4ZmNuc3RpZ2xpZWZlcm4uZGUiLCJmaW4uY2kiLCJmcmVlLmhyIiwiY2FhLmxpIiwidWEucnMiLCJjb25mLnNl'@; put 'IiwiaFx4ZTRra2luZW4uZmkiLCJocnNuLmRldiIsImhhc2hiYW5nLnNoIiwiaGFzdXJhLmFwcCIsImhhc3VyYS1hcHAuaW8iLCJoYXRlbmFibG9nLmNvbSIsImhhdGVuYWRpYXJ5LmNvbSIsImhhdGVibG8uanAiLCJoYXRlbmFibG9nLmpwIiwiaGF0ZW5hZGlhcnkuanAiLCJoYXRlbmFkaWFy'@; put 'eS5vcmciLCJwYWdlcy5pdC5ocy1oZWlsYnJvbm4uZGUiLCJwYWdlcy1yZXNlYXJjaC5pdC5ocy1oZWlsYnJvbm4uZGUiLCJoZWl5dS5zcGFjZSIsImhlbGlvaG8uc3QiLCJoZWxpb2hvc3QudXMiLCJoZXBmb3JnZS5vcmciLCJoZXJva3VhcHAuY29tIiwiaGVyb2t1c3NsLmNvbSIsImhleWZs'@; put 'b3cucGFnZSIsImhleWZsb3cuc2l0ZSIsInJhdmVuZGIuY2xvdWQiLCJyYXZlbmRiLmNvbW11bml0eSIsImRldmVsb3BtZW50LnJ1biIsInJhdmVuZGIucnVuIiwiaG9tZXNrbGVwLnBsIiwiKi5raW4ub25lIiwiKi5pZC5wdWIiLCIqLmtpbi5wdWIiLCJzZWNhYXMuaGsiLCJob3BsaXguc2hv'@; put 'cCIsIm9yeC5iaXoiLCJiaXouZ2wiLCJiaXoubmciLCJjby5iaXoubmciLCJkbC5iaXoubmciLCJnby5iaXoubmciLCJsZy5iaXoubmciLCJvbi5iaXoubmciLCJjb2wubmciLCJmaXJtLm5nIiwiZ2VuLm5nIiwibHRkLm5nIiwibmdvLm5nIiwicGxjLm5nIiwiaWUudWEiLCJob3N0eWhvc3Rp'@; put 'bmcuaW8iLCJoZi5zcGFjZSIsInN0YXRpYy5oZi5zcGFjZSIsImh5cGVybm9kZS5pbyIsImlvYmIubmV0IiwiY28uY3oiLCIqLm1vb25zY2FsZS5pbyIsIm1vb25zY2FsZS5uZXQiLCJnci5jb20iLCJpa2kuZmkiLCJpYnhvcy5pdCIsImlsaWFkYm94b3MuaXQiLCJzbXVzaGNkbi5jb20iLCJ3'@; put 'cGhvc3RlZG1haWwuY29tIiwid3BtdWNkbi5jb20iLCJ0ZW1wdXJsLmhvc3QiLCJ3cG11ZGV2Lmhvc3QiLCJkeW4tYmVybGluLmRlIiwiaW4tYmVybGluLmRlIiwiaW4tYnJiLmRlIiwiaW4tYnV0dGVyLmRlIiwiaW4tZHNsLmRlIiwiaW4tdnBuLmRlIiwiaW4tZHNsLm5ldCIsImluLXZwbi5u'@; put 'ZXQiLCJpbi1kc2wub3JnIiwiaW4tdnBuLm9yZyIsImJpei5hdCIsImluZm8uYXQiLCJpbmZvLmN4IiwiYWMubGVnLmJyIiwiYWwubGVnLmJyIiwiYW0ubGVnLmJyIiwiYXAubGVnLmJyIiwiYmEubGVnLmJyIiwiY2UubGVnLmJyIiwiZGYubGVnLmJyIiwiZXMubGVnLmJyIiwiZ28ubGVnLmJy'@; put 'IiwibWEubGVnLmJyIiwibWcubGVnLmJyIiwibXMubGVnLmJyIiwibXQubGVnLmJyIiwicGEubGVnLmJyIiwicGIubGVnLmJyIiwicGUubGVnLmJyIiwicGkubGVnLmJyIiwicHIubGVnLmJyIiwicmoubGVnLmJyIiwicm4ubGVnLmJyIiwicm8ubGVnLmJyIiwicnIubGVnLmJyIiwicnMubGVn'@; put 'LmJyIiwic2MubGVnLmJyIiwic2UubGVnLmJyIiwic3AubGVnLmJyIiwidG8ubGVnLmJyIiwicGl4b2xpbm8uY29tIiwibmE0dS5ydSIsImFwcHMtMWFuZDEuY29tIiwibGl2ZS13ZWJzaXRlLmNvbSIsImFwcHMtMWFuZDEubmV0Iiwid2Vic2l0ZWJ1aWxkZXIub25saW5lIiwiYXBwLWlvbm9z'@; put 'LnNwYWNlIiwiaW9wc3lzLnNlIiwiKi5kd2ViLmxpbmsiLCJpcGlmb255Lm5ldCIsImlyLm1kIiwiaXMtYS1nb29kLmRldiIsImlzLWEuZGV2IiwiaXNlcnZzY2h1bGUuZGUiLCJtZWluLWlzZXJ2LmRlIiwic2NodWxwbGF0dGZvcm0uZGUiLCJzY2h1bHNlcnZlci5kZSIsInRlc3QtaXNlcnYu'@; put 'ZGUiLCJpc2Vydi5kZXYiLCJtZWwuY2xvdWRsZXRzLmNvbS5hdSIsImNsb3VkLmludGVyaG9zdHNvbHV0aW9ucy5iZSIsImFscDEuYWUuZmxvdy5jaCIsImFwcGVuZ2luZS5mbG93LmNoIiwiZXMtMS5heGFybmV0LmNsb3VkIiwiZGlhZGVtLmNsb3VkIiwidmlwLmplbGFzdGljLmNsb3VkIiwi'@; put 'amVsZS5jbG91ZCIsIml0MS5ldXIuYXJ1YmEuamVudi1hcnViYS5jbG91ZCIsIml0MS5qZW52LWFydWJhLmNsb3VkIiwia2VsaXdlYi5jbG91ZCIsImNzLmtlbGl3ZWIuY2xvdWQiLCJveGEuY2xvdWQiLCJ0bi5veGEuY2xvdWQiLCJ1ay5veGEuY2xvdWQiLCJwcmltZXRlbC5jbG91ZCIsInVr'@; put 'LnByaW1ldGVsLmNsb3VkIiwiY2EucmVjbGFpbS5jbG91ZCIsInVrLnJlY2xhaW0uY2xvdWQiLCJ1cy5yZWNsYWltLmNsb3VkIiwiY2gudHJlbmRob3N0aW5nLmNsb3VkIiwiZGUudHJlbmRob3N0aW5nLmNsb3VkIiwiamVsZS5jbHViIiwiZG9wYWFzLmNvbSIsInBhYXMuaG9zdGVkLWJ5LXBy'@; put 'ZXZpZGVyLmNvbSIsInJhZy1jbG91ZC5ob3N0ZXVyLmNvbSIsInJhZy1jbG91ZC1jaC5ob3N0ZXVyLmNvbSIsImpjbG91ZC5pay1zZXJ2ZXIuY29tIiwiamNsb3VkLXZlci1qcGMuaWstc2VydmVyLmNvbSIsImRlbW8uamVsYXN0aWMuY29tIiwicGFhcy5tYXNzaXZlZ3JpZC5jb20iLCJqZWQu'@; put 'd2FmYWljbG91ZC5jb20iLCJyeWQud2FmYWljbG91ZC5jb20iLCJqLnNjYWxlZm9yY2UuY29tLmN5IiwiamVsYXN0aWMuZG9nYWRvLmV1IiwiZmkuY2xvdWRwbGF0Zm9ybS5maSIsImRlbW8uZGF0YWNlbnRlci5maSIsInBhYXMuZGF0YWNlbnRlci5maSIsImplbGUuaG9zdCIsIm1pcmNsb3Vk'@; put 'Lmhvc3QiLCJwYWFzLmJlZWJ5dGUuaW8iLCJzZWtkMS5iZWVieXRlYXBwLmlvIiwiamVsZS5pbyIsImpjLm5lZW4uaXQiLCJqY2xvdWQua3oiLCJjbG91ZGppZmZ5Lm5ldCIsImZyYTEtZGUuY2xvdWRqaWZmeS5uZXQiLCJ3ZXN0MS11cy5jbG91ZGppZmZ5Lm5ldCIsImpscy1zdG8xLmVsYXN0'@; put 'eC5uZXQiLCJqbHMtc3RvMi5lbGFzdHgubmV0IiwiamxzLXN0bzMuZWxhc3R4Lm5ldCIsImZyLTEucGFhcy5tYXNzaXZlZ3JpZC5uZXQiLCJsb24tMS5wYWFzLm1hc3NpdmVncmlkLm5ldCIsImxvbi0yLnBhYXMubWFzc2l2ZWdyaWQubmV0IiwibnktMS5wYWFzLm1hc3NpdmVncmlkLm5ldCIs'@; put 'Im55LTIucGFhcy5tYXNzaXZlZ3JpZC5uZXQiLCJzZy0xLnBhYXMubWFzc2l2ZWdyaWQubmV0IiwiamVsYXN0aWMuc2F2ZWluY2xvdWQubmV0Iiwibm9yZGVzdGUtaWRjLnNhdmVpbmNsb3VkLm5ldCIsImouc2NhbGVmb3JjZS5uZXQiLCJzZHNjbG91ZC5wbCIsInVuaWNsb3VkLnBsIiwibWly'@; put 'Y2xvdWQucnUiLCJlbnNjYWxlZC5zZyIsImplbGUuc2l0ZSIsImplbGFzdGljLnRlYW0iLCJvcmFuZ2VjbG91ZC50biIsImoubGF5ZXJzaGlmdC5jby51ayIsInBoeC5lbnNjYWxlZC51cyIsIm1pcmNsb3VkLnVzIiwibXlqaW5vLnJ1IiwiKi5ob3N0aW5nLm15amluby5ydSIsIioubGFuZGlu'@; put 'Zy5teWppbm8ucnUiLCIqLnNwZWN0cnVtLm15amluby5ydSIsIioudnBzLm15amluby5ydSIsImpvdGVsdWx1LmNsb3VkIiwid2ViYWRvcnNpdGUuY29tIiwiam91d3dlYi5zaXRlIiwiKi5jbnMuam95ZW50LmNvbSIsIioudHJpdG9uLnpvbmUiLCJqcy5vcmciLCJrYWFzLmdnIiwia2hwbGF5'@; put 'Lm5sIiwia2Fwc2kuZmkiLCJlenByb3h5Lmt1bGV1dmVuLmJlIiwia3VsZXV2ZW4uY2xvdWQiLCJrZXltYWNoaW5lLmRlIiwia2luZ2hvc3QubmV0IiwidW5pNS5uZXQiLCJrbmlnaHRwb2ludC5zeXN0ZW1zIiwia29vYmluLmV2ZW50cyIsIndlYnRoaW5ncy5pbyIsImtyZWxsaWFuLm5ldCIs'@; put 'Im95YS50byIsImdpdC1yZXBvcy5kZSIsImxjdWJlLXNlcnZlci5kZSIsInN2bi1yZXBvcy5kZSIsImxlYWRwYWdlcy5jbyIsImxwYWdlcy5jbyIsImxwdXNlcmNvbnRlbnQuY29tIiwibGVsdXguc2l0ZSIsImxpYnAycC5kaXJlY3QiLCJydW5jb250YWluZXJzLmRldiIsImNvLmJ1c2luZXNz'@; put 'IiwiY28uZWR1Y2F0aW9uIiwiY28uZXZlbnRzIiwiY28uZmluYW5jaWFsIiwiY28ubmV0d29yayIsImNvLnBsYWNlIiwiY28udGVjaG5vbG9neSIsImxpbmt5YXJkLWNsb3VkLmNoIiwibGlua3lhcmQuY2xvdWQiLCJtZW1iZXJzLmxpbm9kZS5jb20iLCIqLm5vZGViYWxhbmNlci5saW5vZGUu'@; put 'Y29tIiwiKi5saW5vZGVvYmplY3RzLmNvbSIsImlwLmxpbm9kZXVzZXJjb250ZW50LmNvbSIsIndlLmJzIiwiZmlsZWdlYXItc2cubWUiLCJnZ2ZmLm5ldCIsIioudXNlci5sb2NhbGNlcnQuZGV2IiwibG9kei5wbCIsInBhYmlhbmljZS5wbCIsInBsb2NrLnBsIiwic2llcmFkei5wbCIsInNr'@; put 'aWVybmlld2ljZS5wbCIsInpnaWVyei5wbCIsImxvZ2lubGluZS5hcHAiLCJsb2dpbmxpbmUuZGV2IiwibG9naW5saW5lLmlvIiwibG9naW5saW5lLnNlcnZpY2VzIiwibG9naW5saW5lLnNpdGUiLCJsb2htdXMubWUiLCJzZXJ2ZXJzLnJ1biIsImtyYXNuaWsucGwiLCJsZWN6bmEucGwiLCJs'@; put 'dWJhcnRvdy5wbCIsImx1Ymxpbi5wbCIsInBvbmlhdG93YS5wbCIsInN3aWRuaWsucGwiLCJnbHVnLm9yZy51ayIsImx1Zy5vcmcudWsiLCJsdWdzLm9yZy51ayIsImJhcnN5LmJnIiwiYmFyc3kuY2x1YiIsImJhcnN5Y2VudGVyLmNvbSIsImJhcnN5b25saW5lLmNvbSIsImJhcnN5LmRlIiwi'@; put 'YmFyc3kuZGV2IiwiYmFyc3kuZXUiLCJiYXJzeS5nciIsImJhcnN5LmluIiwiYmFyc3kuaW5mbyIsImJhcnN5LmlvIiwiYmFyc3kubWUiLCJiYXJzeS5tZW51IiwiYmFyc3lvbmxpbmUubWVudSIsImJhcnN5Lm1vYmkiLCJiYXJzeS5uZXQiLCJiYXJzeS5vbmxpbmUiLCJiYXJzeS5vcmciLCJi'@; put 'YXJzeS5wcm8iLCJiYXJzeS5wdWIiLCJiYXJzeS5ybyIsImJhcnN5LnJzIiwiYmFyc3kuc2hvcCIsImJhcnN5b25saW5lLnNob3AiLCJiYXJzeS5zaXRlIiwiYmFyc3kuc3RvcmUiLCJiYXJzeS5zdXBwb3J0IiwiYmFyc3kudWsiLCJiYXJzeS5jby51ayIsImJhcnN5b25saW5lLmNvLnVrIiwi'@; put 'Ki5tYWdlbnRvc2l0ZS5jbG91ZCIsImhiLmNsZG1haWwucnUiLCJtYXRsYWIuY2xvdWQiLCJtb2RlbHNjYXBlLmNvbSIsIm13Y2xvdWRub25wcm9kLmNvbSIsInBvbHlzcGFjZS5jb20iLCJtYXlmaXJzdC5pbmZvIiwibWF5Zmlyc3Qub3JnIiwibWF6ZXBsYXkuY29tIiwibWNkaXIubWUiLCJt'@; put 'Y2Rpci5ydSIsInZwcy5tY2Rpci5ydSIsIm1jcHJlLnJ1IiwibWVkaWF0ZWNoLmJ5IiwibWVkaWF0ZWNoLmRldiIsImhyYS5oZWFsdGgiLCJtZWR1c2Fqcy5hcHAiLCJtaW5pc2VydmVyLmNvbSIsIm1lbXNldC5uZXQiLCJtZXNzZXJsaS5hcHAiLCJhdG1ldGEuY29tIiwiYXBwcy5mYnNieC5j'@; put 'b20iLCIqLmNsb3VkLm1ldGFjZW50cnVtLmN6IiwiY3VzdG9tLm1ldGFjZW50cnVtLmN6IiwiZmx0LmNsb3VkLm11bmkuY3oiLCJ1c3IuY2xvdWQubXVuaS5jeiIsIm1ldGVvcmFwcC5jb20iLCJldS5tZXRlb3JhcHAuY29tIiwiY28ucGwiLCIqLmF6dXJlY29udGFpbmVyLmlvIiwiYXp1cmUt'@; put 'YXBpLm5ldCIsImF6dXJlLW1vYmlsZS5uZXQiLCJhenVyZWVkZ2UubmV0IiwiYXp1cmVmZC5uZXQiLCJhenVyZXN0YXRpY2FwcHMubmV0IiwiMS5henVyZXN0YXRpY2FwcHMubmV0IiwiMi5henVyZXN0YXRpY2FwcHMubmV0IiwiMy5henVyZXN0YXRpY2FwcHMubmV0IiwiNC5henVyZXN0YXRp'@; put 'Y2FwcHMubmV0IiwiNS5henVyZXN0YXRpY2FwcHMubmV0IiwiNi5henVyZXN0YXRpY2FwcHMubmV0IiwiNy5henVyZXN0YXRpY2FwcHMubmV0IiwiY2VudHJhbHVzLmF6dXJlc3RhdGljYXBwcy5uZXQiLCJlYXN0YXNpYS5henVyZXN0YXRpY2FwcHMubmV0IiwiZWFzdHVzMi5henVyZXN0YXRp'@; put 'Y2FwcHMubmV0Iiwid2VzdGV1cm9wZS5henVyZXN0YXRpY2FwcHMubmV0Iiwid2VzdHVzMi5henVyZXN0YXRpY2FwcHMubmV0IiwiYXp1cmV3ZWJzaXRlcy5uZXQiLCJjbG91ZGFwcC5uZXQiLCJ0cmFmZmljbWFuYWdlci5uZXQiLCJibG9iLmNvcmUud2luZG93cy5uZXQiLCJzZXJ2aWNlYnVz'@; put 'LndpbmRvd3MubmV0Iiwicm91dGluZ3RoZWNsb3VkLmNvbSIsInNuLm15bmV0bmFtZS5uZXQiLCJyb3V0aW5ndGhlY2xvdWQubmV0Iiwicm91dGluZ3RoZWNsb3VkLm9yZyIsImNzeC5jYyIsIm15ZGJzZXJ2ZXIuY29tIiwid2Vic3BhY2Vjb25maWcuZGUiLCJtaXR0d2FsZC5pbmZvIiwibWl0'@; put 'dHdhbGRzZXJ2ZXIuaW5mbyIsInR5cG8zc2VydmVyLmluZm8iLCJwcm9qZWN0LnNwYWNlIiwibW9keC5kZXYiLCJibW9hdHRhY2htZW50cy5vcmciLCJuZXQucnUiLCJvcmcucnUiLCJwcC5ydSIsImhvc3RlZHBpLmNvbSIsImNhcmFjYWwubXl0aGljLWJlYXN0cy5jb20iLCJjdXN0b21lci5t'@; put 'eXRoaWMtYmVhc3RzLmNvbSIsImZlbnRpZ2VyLm15dGhpYy1iZWFzdHMuY29tIiwibHlueC5teXRoaWMtYmVhc3RzLmNvbSIsIm9jZWxvdC5teXRoaWMtYmVhc3RzLmNvbSIsIm9uY2lsbGEubXl0aGljLWJlYXN0cy5jb20iLCJvbnphLm15dGhpYy1iZWFzdHMuY29tIiwic3BoaW54Lm15dGhp'@; put 'Yy1iZWFzdHMuY29tIiwidnMubXl0aGljLWJlYXN0cy5jb20iLCJ4Lm15dGhpYy1iZWFzdHMuY29tIiwieWFsaS5teXRoaWMtYmVhc3RzLmNvbSIsImN1c3QucmV0cm9zbnViLmNvLnVrIiwidWkubmFidS5jYXNhIiwiY2xvdWQubm9zcGFtcHJveHkuY29tIiwibmV0ZnkuYXBwIiwibmV0bGlm'@; put 'eS5hcHAiLCI0dS5jb20iLCJuZnNob3N0LmNvbSIsImlwZnMubmZ0c3RvcmFnZS5saW5rIiwibmdvLnVzIiwibmdyb2suYXBwIiwibmdyb2stZnJlZS5hcHAiLCJuZ3Jvay5kZXYiLCJuZ3Jvay1mcmVlLmRldiIsIm5ncm9rLmlvIiwiYXAubmdyb2suaW8iLCJhdS5uZ3Jvay5pbyIsImV1Lm5n'@; put 'cm9rLmlvIiwiaW4ubmdyb2suaW8iLCJqcC5uZ3Jvay5pbyIsInNhLm5ncm9rLmlvIiwidXMubmdyb2suaW8iLCJuZ3Jvay5waXp6YSIsIm5ncm9rLnBybyIsInRvcnVuLnBsIiwibmgtc2Vydi5jby51ayIsIm5pbXNpdGUudWsiLCJtbWFmYW4uYml6IiwibXlmdHAuYml6Iiwibm8taXAuYml6'@; put 'Iiwibm8taXAuY2EiLCJmYW50YXN5bGVhZ3VlLmNjIiwiZ290ZG5zLmNoIiwiM3V0aWxpdGllcy5jb20iLCJibG9nc3l0ZS5jb20iLCJjaXNjb2ZyZWFrLmNvbSIsImRhbW5zZXJ2ZXIuY29tIiwiZGRuc2tpbmcuY29tIiwiZGl0Y2h5b3VyaXAuY29tIiwiZG5zaXNraW5reS5jb20iLCJkeW5u'@; put 'cy5jb20iLCJnZWVrZ2FsYXh5LmNvbSIsImhlYWx0aC1jYXJlcmVmb3JtLmNvbSIsImhvbWVzZWN1cml0eW1hYy5jb20iLCJob21lc2VjdXJpdHlwYy5jb20iLCJteWFjdGl2ZWRpcmVjdG9yeS5jb20iLCJteXNlY3VyaXR5Y2FtZXJhLmNvbSIsIm15dm5jLmNvbSIsIm5ldC1mcmVha3MuY29t'@; put 'Iiwib250aGV3aWZpLmNvbSIsInBvaW50MnRoaXMuY29tIiwicXVpY2tzeXRlcy5jb20iLCJzZWN1cml0eXRhY3RpY3MuY29tIiwic2VydmViZWVyLmNvbSIsInNlcnZlY291bnRlcnN0cmlrZS5jb20iLCJzZXJ2ZWV4Y2hhbmdlLmNvbSIsInNlcnZlZnRwLmNvbSIsInNlcnZlZ2FtZS5jb20i'@; put 'LCJzZXJ2ZWhhbGZsaWZlLmNvbSIsInNlcnZlaHR0cC5jb20iLCJzZXJ2ZWh1bW91ci5jb20iLCJzZXJ2ZWlyYy5jb20iLCJzZXJ2ZW1wMy5jb20iLCJzZXJ2ZXAycC5jb20iLCJzZXJ2ZXBpY3MuY29tIiwic2VydmVxdWFrZS5jb20iLCJzZXJ2ZXNhcmNhc20uY29tIiwic3R1ZmZ0b3JlYWQu'@; put 'Y29tIiwidW51c3VhbHBlcnNvbi5jb20iLCJ3b3JraXNib3JpbmcuY29tIiwiZHZyY2FtLmluZm8iLCJpbG92ZWNvbGxlZ2UuaW5mbyIsIm5vLWlwLmluZm8iLCJicmFzaWxpYS5tZSIsImRkbnMubWUiLCJkbnNmb3IubWUiLCJob3B0by5tZSIsImxvZ2ludG8ubWUiLCJub2lwLm1lIiwid2Vi'@; put 'aG9wLm1lIiwiYm91bmNlbWUubmV0IiwiZGRucy5uZXQiLCJlYXRpbmctb3JnYW5pYy5uZXQiLCJteWRpc3NlbnQubmV0IiwibXllZmZlY3QubmV0IiwibXltZWRpYXBjLm5ldCIsIm15cHN4Lm5ldCIsIm15c2VjdXJpdHljYW1lcmEubmV0IiwibmhsZmFuLm5ldCIsIm5vLWlwLm5ldCIsInBn'@; put 'YWZhbi5uZXQiLCJwcml2YXRpemVoZWFsdGhpbnN1cmFuY2UubmV0IiwicmVkaXJlY3RtZS5uZXQiLCJzZXJ2ZWJsb2cubmV0Iiwic2VydmVtaW5lY3JhZnQubmV0Iiwic3l0ZXMubmV0IiwiY2FibGUtbW9kZW0ub3JnIiwiY29sbGVnZWZhbi5vcmciLCJjb3VjaHBvdGF0b2ZyaWVzLm9yZyIs'@; put 'ImhvcHRvLm9yZyIsIm1sYmZhbi5vcmciLCJteWZ0cC5vcmciLCJteXNlY3VyaXR5Y2FtZXJhLm9yZyIsIm5mbGZhbi5vcmciLCJuby1pcC5vcmciLCJyZWFkLWJvb2tzLm9yZyIsInVmY2Zhbi5vcmciLCJ6YXB0by5vcmciLCJuby1pcC5jby51ayIsImdvbGZmYW4udXMiLCJub2lwLnVzIiwi'@; put 'cG9pbnR0by51cyIsInN0YWdlLm5vZGVhcnQuaW8iLCIqLmRldmVsb3Blci5hcHAiLCJub29wLmFwcCIsIioubm9ydGhmbGFuay5hcHAiLCIqLmJ1aWxkLnJ1biIsIiouY29kZS5ydW4iLCIqLmRhdGFiYXNlLnJ1biIsIioubWlncmF0aW9uLnJ1biIsIm5vdGljZWFibGUubmV3cyIsIm5vdGlv'@; put 'bi5zaXRlIiwiZG5za2luZy5jaCIsIm15cGkuY28iLCJuNHQuY28iLCIwMDF3d3cuY29tIiwibXlpcGhvc3QuY29tIiwiZm9ydW16LmluZm8iLCJzb3VuZGNhc3QubWUiLCJ0Y3A0Lm1lIiwiZG5zdXAubmV0IiwiaGljYW0ubmV0Iiwibm93LWRucy5uZXQiLCJvd25pcC5uZXQiLCJ2cG5kbnMu'@; put 'bmV0IiwiZHluc2Vydi5vcmciLCJub3ctZG5zLm9yZyIsIng0NDMucHciLCJub3ctZG5zLnRvcCIsIm50ZGxsLnRvcCIsImZyZWVkZG5zLnVzIiwibnN1cGRhdGUuaW5mbyIsIm5lcmRwb2wub3ZoIiwibnljLm1uIiwicHJ2Y3kucGFnZSIsIm9ibC5vbmciLCJvYnNlcnZhYmxlaHEuY2xvdWQi'@; put 'LCJzdGF0aWMub2JzZXJ2YWJsZXVzZXJjb250ZW50LmNvbSIsIm9tZy5sb2wiLCJjbG91ZHljbHVzdGVyLm5ldCIsIm9tbml3ZS5zaXRlIiwiMTIzd2Vic2VpdGUuYXQiLCIxMjN3ZWJzaXRlLmJlIiwic2ltcGxlc2l0ZS5jb20uYnIiLCIxMjN3ZWJzaXRlLmNoIiwic2ltcGxlc2l0ZS5jb20i'@; put 'LCIxMjN3ZWJzZWl0ZS5kZSIsIjEyM2hqZW1tZXNpZGUuZGsiLCIxMjNtaXdlYi5lcyIsIjEyM2tvdGlzaXZ1LmZpIiwiMTIzc2l0ZXdlYi5mciIsInNpbXBsZXNpdGUuZ3IiLCIxMjNob21lcGFnZS5pdCIsIjEyM3dlYnNpdGUubHUiLCIxMjN3ZWJzaXRlLm5sIiwiMTIzaGplbW1lc2lkZS5u'@; put 'byIsInNlcnZpY2Uub25lIiwic2ltcGxlc2l0ZS5wbCIsIjEyM3BhZ2luYXdlYi5wdCIsIjEyM21pbnNpZGEuc2UiLCJpcy1hLWZ1bGxzdGFjay5kZXYiLCJpcy1jb29sLmRldiIsImlzLW5vdC1hLmRldiIsImxvY2FscGxheWVyLmRldiIsImlzLWxvY2FsLm9yZyIsIm9wZW5zb2NpYWwuc2l0'@; put 'ZSIsIm9wZW5jcmFmdC5ob3N0aW5nIiwiMTYtYi5pdCIsIjMyLWIuaXQiLCI2NC1iLml0Iiwib3JzaXRlcy5jb20iLCJvcGVyYXVuaXRlLmNvbSIsIiouY3VzdG9tZXItb2NpLmNvbSIsIioub2NpLmN1c3RvbWVyLW9jaS5jb20iLCIqLm9jcC5jdXN0b21lci1vY2kuY29tIiwiKi5vY3MuY3Vz'@; put 'dG9tZXItb2NpLmNvbSIsIioub3JhY2xlY2xvdWRhcHBzLmNvbSIsIioub3JhY2xlZ292Y2xvdWRhcHBzLmNvbSIsIioub3JhY2xlZ292Y2xvdWRhcHBzLnVrIiwidGVjaC5vcmFuZ2UiLCJjYW4ucmUiLCJhdXRoZ2Vhci1zdGFnaW5nLmNvbSIsImF1dGhnZWFyYXBwcy5jb20iLCJza3lnZWFy'@; put 'YXBwLmNvbSIsIm91dHN5c3RlbXNjbG91ZC5jb20iLCIqLmhvc3Rpbmcub3ZoLm5ldCIsIioud2VicGFhcy5vdmgubmV0Iiwib3ducHJvdmlkZXIuY29tIiwib3duLnBtIiwiKi5vd28uY29kZXMiLCJveC5ycyIsIm95LmxjIiwicGdmb2cuY29tIiwicGFnZXhsLmNvbSIsImdvdHBhbnRoZW9u'@; put 'LmNvbSIsInBhbnRoZW9uc2l0ZS5pbyIsIioucGF5d2hpcmwuY29tIiwiKi54bWl0LmNvIiwieG1pdC5kZXYiLCJtYWRldGhpcy5zaXRlIiwic3J2LnVzIiwiZ2guc3J2LnVzIiwiZ2wuc3J2LnVzIiwibGszLnJ1IiwibXlwZXAubGluayIsInBlcnNwZWN0YS5jbG91ZCIsIm9uLXdlYi5mciIs'@; put 'IioudXBzdW4uYXBwIiwidXBzdW5hcHAuY29tIiwiZW50LnBsYXRmb3JtLnNoIiwiZXUucGxhdGZvcm0uc2giLCJ1cy5wbGF0Zm9ybS5zaCIsIioucGxhdGZvcm1zaC5zaXRlIiwiKi50c3Quc2l0ZSIsInBsYXR0ZXItYXBwLmNvbSIsInBsYXR0ZXItYXBwLmRldiIsInBsYXR0ZXJwLnVzIiwi'@; put 'cGxleS5nYW1lcyIsIm9ucG9ydGVyLnJ1biIsImNvLmJuIiwicG9zdG1hbi1lY2hvLmNvbSIsInBzdG1uLmlvIiwibW9jay5wc3Rtbi5pbyIsImh0dHBiaW4ub3JnIiwicHJlcXVhbGlmeW1lLnRvZGF5IiwieGVuLnByZ21yLmNvbSIsInByaXYuYXQiLCJwcm90b25ldC5pbyIsImNoaXJ1cmdp'@; put 'ZW5zLWRlbnRpc3Rlcy1lbi1mcmFuY2UuZnIiLCJieWVuLnNpdGUiLCJwdWJ0bHMub3JnIiwicHl0aG9uYW55d2hlcmUuY29tIiwiZXUucHl0aG9uYW55d2hlcmUuY29tIiwicWEyLmNvbSIsInFjeC5pbyIsIiouc3lzLnFjeC5pbyIsIm15cW5hcGNsb3VkLmNuIiwiYWxwaGEtbXlxbmFwY2xv'@; put 'dWQuY29tIiwiZGV2LW15cW5hcGNsb3VkLmNvbSIsIm15Y2xvdWRuYXMuY29tIiwibXluYXNjbG91ZC5jb20iLCJteXFuYXBjbG91ZC5jb20iLCJxb3RvLmlvIiwicXVhbGlmaW9hcHAuY29tIiwibGFkZXNrLmNvbSIsInFidXNlci5jb20iLCIqLnF1aXBlbGVtZW50cy5jb20iLCJ2YXBvci5j'@; put 'bG91ZCIsInZhcG9yY2xvdWQuaW8iLCJyYWNrbWF6ZS5jb20iLCJyYWNrbWF6ZS5uZXQiLCJjbG91ZHNpdGUuYnVpbGRlcnMiLCJteXJhZHdlYi5uZXQiLCJzZXJ2ZXJuYW1lLnVzIiwid2ViLmluIiwiaW4ubmV0IiwibXlyZGJ4LmlvIiwic2l0ZS5yYi1ob3N0aW5nLmlvIiwiKi5vbi1yYW5j'@; put 'aGVyLmNsb3VkIiwiKi5vbi1rM3MuaW8iLCIqLm9uLXJpby5pbyIsInJhdnBhZ2UuY28uaWwiLCJyZWFkdGhlZG9jcy1ob3N0ZWQuY29tIiwicmVhZHRoZWRvY3MuaW8iLCJyaGNsb3VkLmNvbSIsImluc3RhbmNlcy5zcGF3bi5jYyIsIm9ucmVuZGVyLmNvbSIsImFwcC5yZW5kZXIuY29tIiwi'@; put 'cmVwbGl0LmFwcCIsImlkLnJlcGxpdC5hcHAiLCJmaXJld2FsbGVkcmVwbGl0LmNvIiwiaWQuZmlyZXdhbGxlZHJlcGxpdC5jbyIsInJlcGwuY28iLCJpZC5yZXBsLmNvIiwicmVwbGl0LmRldiIsImFyY2hlci5yZXBsaXQuZGV2IiwiYm9uZXMucmVwbGl0LmRldiIsImNhbmFyeS5yZXBsaXQu'@; put 'ZGV2IiwiZ2xvYmFsLnJlcGxpdC5kZXYiLCJoYWNrZXIucmVwbGl0LmRldiIsImlkLnJlcGxpdC5kZXYiLCJqYW5ld2F5LnJlcGxpdC5kZXYiLCJraW0ucmVwbGl0LmRldiIsImtpcmEucmVwbGl0LmRldiIsImtpcmsucmVwbGl0LmRldiIsIm9kby5yZXBsaXQuZGV2IiwicGFyaXMucmVwbGl0'@; put 'LmRldiIsInBpY2FyZC5yZXBsaXQuZGV2IiwicGlrZS5yZXBsaXQuZGV2IiwicHJlcmVsZWFzZS5yZXBsaXQuZGV2IiwicmVlZC5yZXBsaXQuZGV2IiwicmlrZXIucmVwbGl0LmRldiIsInNpc2tvLnJlcGxpdC5kZXYiLCJzcG9jay5yZXBsaXQuZGV2Iiwic3RhZ2luZy5yZXBsaXQuZGV2Iiwi'@; put 'c3VsdS5yZXBsaXQuZGV2IiwidGFycGl0LnJlcGxpdC5kZXYiLCJ0ZWFtcy5yZXBsaXQuZGV2IiwidHVja2VyLnJlcGxpdC5kZXYiLCJ3ZXNsZXkucmVwbGl0LmRldiIsIndvcmYucmVwbGl0LmRldiIsInJlcGwucnVuIiwicmVzaW5kZXZpY2UuaW8iLCJkZXZpY2VzLnJlc2luc3RhZ2luZy5p'@; put 'byIsImh6Yy5pbyIsImFkaW1vLmNvLnVrIiwiaXRjb3VsZGJld29yLnNlIiwiYXVzLmJhc2tldGJhbGwiLCJuei5iYXNrZXRiYWxsIiwiZ2l0LXBhZ2VzLnJpdC5lZHUiLCJyb2NreS5wYWdlIiwicnViLmRlIiwicnVoci11bmktYm9jaHVtLmRlIiwiaW8ubm9jLnJ1aHItdW5pLWJvY2h1bS5k'@; put 'ZSIsIlx1MDQzMVx1MDQzOFx1MDQzNy5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0M2FcdTA0M2VcdTA0M2MuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDNhXHUwNDQwXHUwNDRiXHUwNDNjLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQzY1x1MDQzOFx1MDQ0MC5cdTA0NDBcdTA0NDNcdTA0'@; put 'NDEiLCJcdTA0M2NcdTA0NDFcdTA0M2EuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDNlXHUwNDQwXHUwNDMzLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQ0MVx1MDQzMFx1MDQzY1x1MDQzMFx1MDQ0MFx1MDQzMC5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0NDFcdTA0M2VcdTA0NDdcdTA0'@; put 'MzguXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDQxXHUwNDNmXHUwNDMxLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQ0Zi5cdTA0NDBcdTA0NDNcdTA0NDEiLCJyYXMucnUiLCJueWF0LmFwcCIsIjE4MHIuY29tIiwiZG9qaW4uY29tIiwic2FrdXJhdGFuLmNvbSIsInNha3VyYXdlYi5jb20i'@; put 'LCJ4MC5jb20iLCIyLWQuanAiLCJib25hLmpwIiwiY3JhcC5qcCIsImRheW5pZ2h0LmpwIiwiZWVrLmpwIiwiZmxvcC5qcCIsImhhbGZtb29uLmpwIiwiamVlei5qcCIsIm1hdHJpeC5qcCIsIm1pbW96YS5qcCIsIml2b3J5Lm5lLmpwIiwibWFpbC1ib3gubmUuanAiLCJtaW50cy5uZS5qcCIs'@; put 'Im1va3VyZW4ubmUuanAiLCJvcGFsLm5lLmpwIiwic2FrdXJhLm5lLmpwIiwic3Vtb21vLm5lLmpwIiwidG9wYXoubmUuanAiLCJuZXRnYW1lcnMuanAiLCJueWFudGEuanAiLCJvMG8wLmpwIiwicmR5LmpwIiwicmdyLmpwIiwicnVsZXouanAiLCJzMy5pc2swMS5zYWt1cmFzdG9yYWdlLmpw'@; put 'IiwiczMuaXNrMDIuc2FrdXJhc3RvcmFnZS5qcCIsInNhbG9vbi5qcCIsInNibG8uanAiLCJza3IuanAiLCJ0YW5rLmpwIiwidWgtb2guanAiLCJ1bmRvLmpwIiwicnMud2ViYWNjZWwuanAiLCJ1c2VyLndlYmFjY2VsLmpwIiwid2Vic296YWkuanAiLCJ4aWkuanAiLCJzcXVhcmVzLm5ldCIs'@; put 'Impwbi5vcmciLCJraXJhcmEuc3QiLCJ4MC50byIsImZyb20udHYiLCJzYWt1cmEudHYiLCIqLmJ1aWxkZXIuY29kZS5jb20iLCIqLmRldi1idWlsZGVyLmNvZGUuY29tIiwiKi5zdGctYnVpbGRlci5jb2RlLmNvbSIsIiouMDAxLnRlc3QuY29kZS1idWlsZGVyLXN0Zy5wbGF0Zm9ybS5zYWxl'@; put 'c2ZvcmNlLmNvbSIsIiouZC5jcm0uZGV2IiwiKi53LmNybS5kZXYiLCIqLndhLmNybS5kZXYiLCIqLndiLmNybS5kZXYiLCIqLndjLmNybS5kZXYiLCIqLndkLmNybS5kZXYiLCIqLndlLmNybS5kZXYiLCIqLndmLmNybS5kZXYiLCJzYW5kY2F0cy5pbyIsImxvZ29pcC5jb20iLCJsb2dvaXAu'@; put 'ZGUiLCJmci1wYXItMS5iYXJlbWV0YWwuc2N3LmNsb3VkIiwiZnItcGFyLTIuYmFyZW1ldGFsLnNjdy5jbG91ZCIsIm5sLWFtcy0xLmJhcmVtZXRhbC5zY3cuY2xvdWQiLCJjb2NrcGl0LmZyLXBhci5zY3cuY2xvdWQiLCJmbmMuZnItcGFyLnNjdy5jbG91ZCIsImZ1bmN0aW9ucy5mbmMuZnIt'@; put 'cGFyLnNjdy5jbG91ZCIsIms4cy5mci1wYXIuc2N3LmNsb3VkIiwibm9kZXMuazhzLmZyLXBhci5zY3cuY2xvdWQiLCJzMy5mci1wYXIuc2N3LmNsb3VkIiwiczMtd2Vic2l0ZS5mci1wYXIuc2N3LmNsb3VkIiwid2htLmZyLXBhci5zY3cuY2xvdWQiLCJwcml2Lmluc3RhbmNlcy5zY3cuY2xv'@; put 'dWQiLCJwdWIuaW5zdGFuY2VzLnNjdy5jbG91ZCIsIms4cy5zY3cuY2xvdWQiLCJjb2NrcGl0Lm5sLWFtcy5zY3cuY2xvdWQiLCJrOHMubmwtYW1zLnNjdy5jbG91ZCIsIm5vZGVzLms4cy5ubC1hbXMuc2N3LmNsb3VkIiwiczMubmwtYW1zLnNjdy5jbG91ZCIsInMzLXdlYnNpdGUubmwtYW1z'@; put 'LnNjdy5jbG91ZCIsIndobS5ubC1hbXMuc2N3LmNsb3VkIiwiY29ja3BpdC5wbC13YXcuc2N3LmNsb3VkIiwiazhzLnBsLXdhdy5zY3cuY2xvdWQiLCJub2Rlcy5rOHMucGwtd2F3LnNjdy5jbG91ZCIsInMzLnBsLXdhdy5zY3cuY2xvdWQiLCJzMy13ZWJzaXRlLnBsLXdhdy5zY3cuY2xvdWQi'@; put 'LCJzY2FsZWJvb2suc2N3LmNsb3VkIiwic21hcnRsYWJlbGluZy5zY3cuY2xvdWQiLCJkZWRpYm94LmZyIiwic2Nob2tva2Vrcy5uZXQiLCJnb3Yuc2NvdCIsInNlcnZpY2UuZ292LnNjb3QiLCJzY3J5c2VjLmNvbSIsImNsaWVudC5zY3J5cHRlZC5pbyIsImZpcmV3YWxsLWdhdGV3YXkuY29t'@; put 'IiwiZmlyZXdhbGwtZ2F0ZXdheS5kZSIsIm15LWdhdGV3YXkuZGUiLCJteS1yb3V0ZXIuZGUiLCJzcGRucy5kZSIsInNwZG5zLmV1IiwiZmlyZXdhbGwtZ2F0ZXdheS5uZXQiLCJteS1maXJld2FsbC5vcmciLCJteWZpcmV3YWxsLm9yZyIsInNwZG5zLm9yZyIsInNlaWRhdC5uZXQiLCJzZWxs'@; put 'Znkuc3RvcmUiLCJtaW5pc2l0ZS5tcyIsInNlbnNlZXJpbmcubmV0Iiwic2VydmVib2x0LmNsb3VkIiwiYml6LnVhIiwiY28udWEiLCJwcC51YSIsImFzLnNoLmNuIiwic2hlZXp5LmdhbWVzIiwic2hpZnRlZGl0LmlvIiwibXlzaG9wYmxvY2tzLmNvbSIsIm15c2hvcGlmeS5jb20iLCJzaG9w'@; put 'aXRzaXRlLmNvbSIsInNob3B3YXJlLnNob3AiLCJzaG9wd2FyZS5zdG9yZSIsIm1vLXNpZW1lbnMuaW8iLCIxa2FwcC5jb20iLCJhcHBjaGl6aS5jb20iLCJhcHBsaW56aS5jb20iLCJzaW5hYXBwLmNvbSIsInZpcHNpbmFhcHAuY29tIiwic2l0ZWxlYWYubmV0Iiwic21hbGwtd2ViLm9yZyIs'@; put 'ImFlcm9wb3J0LmZyIiwiYXZvY2F0LmZyIiwiY2hhbWJhZ3JpLmZyIiwiY2hpcnVyZ2llbnMtZGVudGlzdGVzLmZyIiwiZXhwZXJ0cy1jb21wdGFibGVzLmZyIiwibWVkZWNpbi5mciIsIm5vdGFpcmVzLmZyIiwicGhhcm1hY2llbi5mciIsInBvcnQuZnIiLCJ2ZXRlcmluYWlyZS5mciIsInZw'@; put 'NC5tZSIsIiouc25vd2ZsYWtlLmFwcCIsIioucHJpdmF0ZWxpbmsuc25vd2ZsYWtlLmFwcCIsInN0cmVhbWxpdC5hcHAiLCJzdHJlYW1saXRhcHAuY29tIiwidHJ5LXNub3dwbG93LmNvbSIsIm1hZmVsby5uZXQiLCJwbGF5c3RhdGlvbi1jbG91ZC5jb20iLCJzcmh0LnNpdGUiLCJhcHBzLmxh'@; put 'aXIuaW8iLCIqLnN0b2xvcy5pbyIsInNwYWNla2l0LmlvIiwiaW5kLm1vbSIsImN1c3RvbWVyLnNwZWVkcGFydG5lci5kZSIsIm15c3ByZWFkc2hvcC5hdCIsIm15c3ByZWFkc2hvcC5jb20uYXUiLCJteXNwcmVhZHNob3AuYmUiLCJteXNwcmVhZHNob3AuY2EiLCJteXNwcmVhZHNob3AuY2gi'@; put 'LCJteXNwcmVhZHNob3AuY29tIiwibXlzcHJlYWRzaG9wLmRlIiwibXlzcHJlYWRzaG9wLmRrIiwibXlzcHJlYWRzaG9wLmVzIiwibXlzcHJlYWRzaG9wLmZpIiwibXlzcHJlYWRzaG9wLmZyIiwibXlzcHJlYWRzaG9wLmllIiwibXlzcHJlYWRzaG9wLml0IiwibXlzcHJlYWRzaG9wLm5ldCIs'@; put 'Im15c3ByZWFkc2hvcC5ubCIsIm15c3ByZWFkc2hvcC5ubyIsIm15c3ByZWFkc2hvcC5wbCIsIm15c3ByZWFkc2hvcC5zZSIsIm15c3ByZWFkc2hvcC5jby51ayIsInctY29ycC1zdGF0aWNibGl0ei5jb20iLCJ3LWNyZWRlbnRpYWxsZXNzLXN0YXRpY2JsaXR6LmNvbSIsInctc3RhdGljYmxp'@; put 'dHouY29tIiwic3RhY2toZXJvLW5ldHdvcmsuY29tIiwicnVucy5vbnN0YWNraXQuY2xvdWQiLCJzdGFja2l0LmdnIiwic3RhY2tpdC5yb2NrcyIsInN0YWNraXQucnVuIiwic3RhY2tpdC56b25lIiwibXVzaWNpYW4uaW8iLCJub3ZlY29yZS5zaXRlIiwiYXBpLnN0ZGxpYi5jb20iLCJmZWVk'@; put 'YmFjay5hYyIsImZvcm1zLmFjIiwiYXNzZXNzbWVudHMuY3giLCJjYWxjdWxhdG9ycy5jeCIsImZ1bm5lbHMuY3giLCJwYXlub3cuY3giLCJxdWl6emVzLmN4IiwicmVzZWFyY2hlZC5jeCIsInRlc3RzLmN4Iiwic3VydmV5cy5zbyIsInN0b3JlYmFzZS5zdG9yZSIsInN0b3JpcHJlc3MuYXBw'@; put 'Iiwic3RvcmouZmFybSIsInN0cmFwaWFwcC5jb20iLCJtZWRpYS5zdHJhcGlhcHAuY29tIiwidnBzLWhvc3QubmV0IiwiYXRsLmplbGFzdGljLnZwcy1ob3N0Lm5ldCIsIm5qcy5qZWxhc3RpYy52cHMtaG9zdC5uZXQiLCJyaWMuamVsYXN0aWMudnBzLWhvc3QubmV0Iiwic3RyZWFrLWxpbmsu'@; put 'Y29tIiwic3RyZWFrbGlua3MuY29tIiwic3RyZWFrdXNlcmNvbnRlbnQuY29tIiwic29jLnNyY2YubmV0IiwidXNlci5zcmNmLm5ldCIsInV0d2VudGUuaW8iLCJ0ZW1wLWRucy5jb20iLCJzdXBhYmFzZS5jbyIsInN1cGFiYXNlLmluIiwic3VwYWJhc2UubmV0Iiwic3luY2xvdWQuaXQiLCJk'@; put 'c2Nsb3VkLmJpeiIsImRpcmVjdC5xdWlja2Nvbm5lY3QuY24iLCJkc215bmFzLmNvbSIsImZhbWlseWRzLmNvbSIsImRpc2tzdGF0aW9uLm1lIiwiZHNjbG91ZC5tZSIsImkyMzQubWUiLCJteWRzLm1lIiwic3lub2xvZ3kubWUiLCJkc2Nsb3VkLm1vYmkiLCJkc215bmFzLm5ldCIsImZhbWls'@; put 'eWRzLm5ldCIsImRzbXluYXMub3JnIiwiZmFtaWx5ZHMub3JnIiwiZGlyZWN0LnF1aWNrY29ubmVjdC50byIsInZwbnBsdXMudG8iLCJteXRhYml0LmNvbSIsIm15dGFiaXQuY28uaWwiLCJ0YWJpdG9yZGVyLmNvLmlsIiwidGFpZnVuLWRucy5kZSIsInRzLm5ldCIsIiouYy50cy5uZXQiLCJn'@; put 'ZGEucGwiLCJnZGFuc2sucGwiLCJnZHluaWEucGwiLCJtZWQucGwiLCJzb3BvdC5wbCIsInRhdmV1c2VyY29udGVudC5jb20iLCJwLnRhd2suZW1haWwiLCJwLnRhd2t0by5lbWFpbCIsInNpdGUudGItaG9zdGluZy5jb20iLCJlZHVnaXQuaW8iLCJzMy50ZWNraWRzLm9yZyIsInRlbGViaXQu'@; put 'YXBwIiwidGVsZWJpdC5pbyIsIioudGVsZWJpdC54eXoiLCIqLmZpcmVuZXQuY2giLCIqLnN2Yy5maXJlbmV0LmNoIiwicmVzZXJ2ZC5jb20iLCJ0aGluZ2R1c3RkYXRhLmNvbSIsImN1c3QuZGV2LnRoaW5nZHVzdC5pbyIsInJlc2VydmQuZGV2LnRoaW5nZHVzdC5pbyIsImN1c3QuZGlzcmVj'@; put 'LnRoaW5nZHVzdC5pbyIsInJlc2VydmQuZGlzcmVjLnRoaW5nZHVzdC5pbyIsImN1c3QucHJvZC50aGluZ2R1c3QuaW8iLCJjdXN0LnRlc3RpbmcudGhpbmdkdXN0LmlvIiwicmVzZXJ2ZC50ZXN0aW5nLnRoaW5nZHVzdC5pbyIsInRpY2tldHMuaW8iLCJhcnZvLm5ldHdvcmsiLCJhemltdXRo'@; put 'Lm5ldHdvcmsiLCJ0bG9uLm5ldHdvcmsiLCJ0b3Jwcm9qZWN0Lm5ldCIsInBhZ2VzLnRvcnByb2plY3QubmV0IiwidG93bm5ld3Mtc3RhZ2luZy5jb20iLCIxMmhwLmF0IiwiMml4LmF0IiwiNGxpbWEuYXQiLCJsaW1hLWNpdHkuYXQiLCIxMmhwLmNoIiwiMml4LmNoIiwiNGxpbWEuY2giLCJs'@; put 'aW1hLWNpdHkuY2giLCJ0cmFmZmljcGxleC5jbG91ZCIsImRlLmNvb2wiLCIxMmhwLmRlIiwiMml4LmRlIiwiNGxpbWEuZGUiLCJsaW1hLWNpdHkuZGUiLCIxMzM3LnBpY3R1cmVzIiwiY2xhbi5yaXAiLCJsaW1hLWNpdHkucm9ja3MiLCJ3ZWJzcGFjZS5yb2NrcyIsImxpbWEuem9uZSIsIiou'@; put 'dHJhbnN1cmwuYmUiLCIqLnRyYW5zdXJsLmV1Iiwic2l0ZS50cmFuc2lwLm1lIiwiKi50cmFuc3VybC5ubCIsInR1eGZhbWlseS5vcmciLCJkZC1kbnMuZGUiLCJkcmF5LWRucy5kZSIsImRyYXlkbnMuZGUiLCJkeW4tdnBuLmRlIiwiZHludnBuLmRlIiwibWVpbi12aWdvci5kZSIsIm15LXZp'@; put 'Z29yLmRlIiwibXktd2FuLmRlIiwic3luby1kcy5kZSIsInN5bm9sb2d5LWRpc2tzdGF0aW9uLmRlIiwic3lub2xvZ3ktZHMuZGUiLCJkaXNrc3RhdGlvbi5ldSIsImRpc2tzdGF0aW9uLm9yZyIsInR5cGVkcmVhbS5hcHAiLCJwcm8udHlwZWZvcm0uY29tIiwiKi51YmVyc3BhY2UuZGUiLCJ1'@; put 'YmVyLnNwYWNlIiwiaGsuY29tIiwiaW5jLmhrIiwibHRkLmhrIiwiaGsub3JnIiwiaXQuY29tIiwidW5pc29uLXNlcnZpY2VzLmNsb3VkIiwidmlydHVhbC11c2VyLmRlIiwidmlydHVhbHVzZXIuZGUiLCJuYW1lLnBtIiwic2NoLnRmIiwiYml6LndmIiwic2NoLndmIiwib3JnLnl0IiwicnMu'@; put 'YmEiLCJiaWVsc2tvLnBsIiwidXBsaS5pbyIsInVyb3duLmNsb3VkIiwiZG5zdXBkYXRlLmluZm8iLCJ1cy5vcmciLCJ2LnVhIiwiZXhwcmVzcy52YWwucnVuIiwid2ViLnZhbC5ydW4iLCJ2ZXJjZWwuYXBwIiwidjAuYnVpbGQiLCJ2ZXJjZWwuZGV2IiwidnVzZXJjb250ZW50Lm5ldCIsIm5v'@; put 'dy5zaCIsIjIwMzguaW8iLCJyb3V0ZXIubWFuYWdlbWVudCIsInYtaW5mby5pbmZvIiwidm9vcmxvcGVyLmNsb3VkIiwiKi52dWx0cm9iamVjdHMuY29tIiwid2FmZmxlY2VsbC5jb20iLCJ3ZWJmbG93LmlvIiwid2ViZmxvd3Rlc3QuaW8iLCIqLndlYmhhcmUuZGV2IiwiYm9va29ubGluZS5h'@; put 'cHAiLCJob3RlbHdpdGhmbGlnaHQuY29tIiwicmVzZXJ2ZS1vbmxpbmUuY29tIiwicmVzZXJ2ZS1vbmxpbmUubmV0IiwiY3ByYXBpZC5jb20iLCJwbGVza25zLmNvbSIsIndwMi5ob3N0IiwicGRucy5wYWdlIiwicGxlc2sucGFnZSIsIndwc3F1YXJlZC5zaXRlIiwiKi53YWRsLnRvcCIsInJl'@; put 'bW90ZXdkLmNvbSIsImJveC5jYSIsInBhZ2VzLndpYXJkd2ViLmNvbSIsInRvb2xmb3JnZS5vcmciLCJ3bWNsb3VkLm9yZyIsIndtZmxhYnMub3JnIiwid2RoLmFwcCIsInBhbmVsLmdnIiwiZGFlbW9uLnBhbmVsLmdnIiwid2l4c2l0ZS5jb20iLCJ3aXhzdHVkaW8uY29tIiwiZWRpdG9yeC5p'@; put 'byIsIndpeHN0dWRpby5pbyIsIndpeC5ydW4iLCJtZXNzd2l0aGRucy5jb20iLCJ3b2x0bGFiLWRlbW8uY29tIiwibXlmb3J1bS5jb21tdW5pdHkiLCJjb21tdW5pdHktcHJvLmRlIiwiZGlza3Vzc2lvbnNiZXJlaWNoLmRlIiwiY29tbXVuaXR5LXByby5uZXQiLCJtZWluZm9ydW0ubmV0Iiwi'@; put 'YWZmaW5pdHlsb3R0ZXJ5Lm9yZy51ayIsInJhZmZsZWVudHJ5Lm9yZy51ayIsIndlZWtseWxvdHRlcnkub3JnLnVrIiwid3BlbmdpbmVwb3dlcmVkLmNvbSIsImpzLndwZW5naW5lcG93ZXJlZC5jb20iLCJoYWxmLmhvc3QiLCJ4bmJheS5jb20iLCJ1Mi54bmJheS5jb20iLCJ1Mi1sb2NhbC54'@; put 'bmJheS5jb20iLCJjaXN0cm9uLm5sIiwiZGVtb24ubmwiLCJ4czRhbGwuc3BhY2UiLCJ5YW5kZXhjbG91ZC5uZXQiLCJzdG9yYWdlLnlhbmRleGNsb3VkLm5ldCIsIndlYnNpdGUueWFuZGV4Y2xvdWQubmV0Iiwib2ZmaWNpYWwuYWNhZGVteSIsInlvbGFzaXRlLmNvbSIsInlvbWJvLm1lIiwi'@; put 'eW5oLmZyIiwibm9ob3N0Lm1lIiwibm9oby5zdCIsInphLm5ldCIsInphLm9yZyIsInphcC5jbG91ZCIsInplYWJ1ci5hcHAiLCJic3MuZGVzaWduIiwiYmFzaWNzZXJ2ZXIuaW8iLCJ2aXJ0dWFsc2VydmVyLmlvIiwiZW50ZXJwcmlzZWNsb3VkLm51Il0ucmVkdWNlKChOLHopPT57Y29uc3Qg'@; put 'WT16LnJlcGxhY2UoL14oXCpcLnxcISkvLCIiKSxGPXYudG9BU0NJSShZKSxXPXouY2hhckF0KDApO2lmKE4uaGFzKEYpKXRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgcnVsZXMgZm91bmQgZm9yICR7en0gKCR7Rn0pYCk7cmV0dXJuIE4uc2V0KEYse3J1bGU6eixzdWZmaXg6WSxwdW55U3Vm'@; put 'Zml4OkYsd2lsZGNhcmQ6IioiPT09VyxleGNlcHRpb246IiEiPT09V30pLE59LG5ldyBNYXApLEw9e0RPTUFJTl9UT09fU0hPUlQ6IkRvbWFpbiBuYW1lIHRvbyBzaG9ydC4iLERPTUFJTl9UT09fTE9ORzoiRG9tYWluIG5hbWUgdG9vIGxvbmcuIEl0IHNob3VsZCBiZSBubyBtb3JlIHRoYW4g'@; put 'MjU1IGNoYXJzLiIsTEFCRUxfU1RBUlRTX1dJVEhfREFTSDoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG5vdCBzdGFydCB3aXRoIGEgZGFzaC4iLExBQkVMX0VORFNfV0lUSF9EQVNIOiJEb21haW4gbmFtZSBsYWJlbCBjYW4gbm90IGVuZCB3aXRoIGEgZGFzaC4iLExBQkVMX1RPT19MT05HOiJE'@; put 'b21haW4gbmFtZSBsYWJlbCBzaG91bGQgYmUgYXQgbW9zdCA2MyBjaGFycyBsb25nLiIsTEFCRUxfVE9PX1NIT1JUOiJEb21haW4gbmFtZSBsYWJlbCBzaG91bGQgYmUgYXQgbGVhc3QgMSBjaGFyYWN0ZXIgbG9uZy4iLExBQkVMX0lOVkFMSURfQ0hBUlM6IkRvbWFpbiBuYW1lIGxhYmVsIGNh'@; put 'biBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgZGFzaGVzLiJ9LHg9Tj0+e2lmKCJzdHJpbmciIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJEb21haW4gbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpO2xldCB6PU4uc2xpY2UoMCkudG9Mb3dlckNhc2UoKTsi'@; put 'LiI9PT16LmNoYXJBdCh6Lmxlbmd0aC0xKSYmKHo9ei5zbGljZSgwLHoubGVuZ3RoLTEpKTtjb25zdCBZPShOPT57Y29uc3Qgej12LnRvQVNDSUkoTik7aWYoei5sZW5ndGg8MSlyZXR1cm4iRE9NQUlOX1RPT19TSE9SVCI7aWYoei5sZW5ndGg+MjU1KXJldHVybiJET01BSU5fVE9PX0xPTkci'@; put 'O2NvbnN0IFk9ei5zcGxpdCgiLiIpO2xldCBGO2ZvcihsZXQgVz0wO1c8WS5sZW5ndGg7KytXKXtpZihGPVlbV10sIUYubGVuZ3RoKXJldHVybiJMQUJFTF9UT09fU0hPUlQiO2lmKEYubGVuZ3RoPjYzKXJldHVybiJMQUJFTF9UT09fTE9ORyI7aWYoIi0iPT09Ri5jaGFyQXQoMCkpcmV0dXJu'@; put 'IkxBQkVMX1NUQVJUU19XSVRIX0RBU0giO2lmKCItIj09PUYuY2hhckF0KEYubGVuZ3RoLTEpKXJldHVybiJMQUJFTF9FTkRTX1dJVEhfREFTSCI7aWYoIS9eW2EtejAtOVwtX10rJC8udGVzdChGKSlyZXR1cm4iTEFCRUxfSU5WQUxJRF9DSEFSUyJ9fSkoeik7aWYoWSlyZXR1cm57aW5wdXQ6'@; put 'TixlcnJvcjp7bWVzc2FnZTpMW1ldLGNvZGU6WX19O2NvbnN0IEY9e2lucHV0Ok4sdGxkOm51bGwsc2xkOm51bGwsZG9tYWluOm51bGwsc3ViZG9tYWluOm51bGwsbGlzdGVkOiExfSxXPXouc3BsaXQoIi4iKTtpZigibG9jYWwiPT09V1tXLmxlbmd0aC0xXSlyZXR1cm4gRjtjb25zdCBxPSgp'@; put 'PT4oL3huLS0vLnRlc3QoeikmJihGLmRvbWFpbiYmKEYuZG9tYWluPXYudG9BU0NJSShGLmRvbWFpbikpLEYuc3ViZG9tYWluJiYoRi5zdWJkb21haW49di50b0FTQ0lJKEYuc3ViZG9tYWluKSkpLEYpLHJlPShOPT57Y29uc3Qgej12LnRvQVNDSUkoTikuc3BsaXQoIi4iKTtmb3IobGV0IFk9'@; put 'MDtZPHoubGVuZ3RoO1krKyl7Y29uc3QgRj16LnNsaWNlKFkpLmpvaW4oIi4iKSxXPXcuZ2V0KEYpO2lmKFcpcmV0dXJuIFd9cmV0dXJuIG51bGx9KSh6KTtpZighcmUpcmV0dXJuIFcubGVuZ3RoPDI/RjooRi50bGQ9Vy5wb3AoKSxGLnNsZD1XLnBvcCgpLEYuZG9tYWluPVtGLnNsZCxGLnRs'@; put 'ZF0uam9pbigiLiIpLFcubGVuZ3RoJiYoRi5zdWJkb21haW49Vy5wb3AoKSkscSgpKTtGLmxpc3RlZD0hMDtjb25zdCBtZT1yZS5zdWZmaXguc3BsaXQoIi4iKSxDZT1XLnNsaWNlKDAsVy5sZW5ndGgtbWUubGVuZ3RoKTtyZXR1cm4gcmUuZXhjZXB0aW9uJiZDZS5wdXNoKG1lLnNoaWZ0KCkp'@; put 'LEYudGxkPW1lLmpvaW4oIi4iKSwhQ2UubGVuZ3RofHwocmUud2lsZGNhcmQmJihtZS51bnNoaWZ0KENlLnBvcCgpKSxGLnRsZD1tZS5qb2luKCIuIikpLCFDZS5sZW5ndGgpfHwoRi5zbGQ9Q2UucG9wKCksRi5kb21haW49W0Yuc2xkLEYudGxkXS5qb2luKCIuIiksQ2UubGVuZ3RoJiYoRi5z'@; put 'dWJkb21haW49Q2Uuam9pbigiLiIpKSkscSgpfSxVPU49Pk4mJngoTikuZG9tYWlufHxudWxsLEg9Tj0+e2NvbnN0IHo9eChOKTtyZXR1cm4hKCF6LmRvbWFpbnx8IXoubGlzdGVkKX07ai5kZWZhdWx0PXtwYXJzZTp4LGdldDpVLGlzVmFsaWQ6SH0sai5lcnJvckNvZGVzPUwsai5nZXQ9VSxq'@; put 'LmlzVmFsaWQ9SCxqLnBhcnNlPXh9LDY5Mjk0KGZlLGosaCl7InVzZSBzdHJpY3QiO2guZChqLHtjOigpPT5jfSk7dmFyIGM9aCg0MjMzKX0sMzIxOShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhZXMtMTI4LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEy'@; put 'OCwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTE5Mi1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MCwibW9k'@; put 'ZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTI4LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xOTItY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0'@; put 'eXBlIjoiYmxvY2sifSwiYWVzLTI1Ni1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxMjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJh'@; put 'ZXMxOTIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMyNTYiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTI4LWNmYiI6eyJjaXBoZXIi'@; put 'OiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJr'@; put 'ZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5'@; put 'MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2'@; put 'IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYs'@; put 'Im1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoi'@; put 'T0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlw'@; put 'ZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVh'@; put 'bSJ9LCJhZXMtMTI4LWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTE5Mi1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn0sImFlcy0yNTYt'@; put 'Z2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9fScpfSw2Mjk1MShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJzaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6'@; put 'InNoYTIyNCIsImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwiUlNBLVNIQTIyNCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwic2hhMjU2V2l0aFJT'@; put 'QUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwIn0sIlJTQS1TSEEyNTYiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAx'@; put 'NjUwMzA0MDIwMTA1MDAwNDIwIn0sInNoYTM4NFdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJSU0EtU0hBMzg0Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoi'@; put 'c2hhMzg0IiwiaWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNI'@; put 'QTUxMiI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTEiOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGExIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQi'@; put 'fSwiZWNkc2Etd2l0aC1TSEExIjp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwic2hhMjU2Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCJ9LCJzaGEyMjQiOnsic2ln'@; put 'biI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sInNoYTM4NCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0'@; put 'MzAifSwic2hhNTEyIjp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIzMDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MCJ9LCJEU0EtU0hBIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQS1TSEExIjp7InNpZ24iOiJk'@; put 'c2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEyMjQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJEU0EtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hh'@; put 'MjI0IiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBMjU2Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwiRFNBLVNIQTI1NiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTM4NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNo'@; put 'YTM4NCIsImlkIjoiIn0sIkRTQS1TSEEzODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEE1MTIiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEy'@; put 'IiwiaWQiOiIifSwiRFNBLVJJUEVNRDE2MCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InJtZDE2MCIsImlkIjoiIn0sInJpcGVtZDE2MFdpdGhSU0EiOnsic2lnbiI6InJzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEwNTAwMDQxNCJ9LCJSU0EtUklQRU1E'@; put 'MTYwIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTQifSwibWQ1V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJtZDUiLCJpZCI6IjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQx'@; put 'MCJ9LCJSU0EtTUQ1Ijp7InNpZ24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifX0nKX0sNjQ1ODkoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siMS4zLjEzMi4wLjEwIjoic2VjcDI1NmsxIiwi'@; put 'MS4zLjEzMi4wLjMzIjoicDIyNCIsIjEuMi44NDAuMTAwNDUuMy4xLjEiOiJwMTkyIiwiMS4yLjg0MC4xMDA0NS4zLjEuNyI6InAyNTYiLCIxLjMuMTMyLjAuMzQiOiJwMzg0IiwiMS4zLjEzMi4wLjM1IjoicDUyMSJ9Jyl9LDE3NDQ5KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1KU09O'@; put 'LnBhcnNlKCd7Ik9fUkRPTkxZIjowLCJPX1dST05MWSI6MSwiT19SRFdSIjoyLCJTX0lGTVQiOjYxNDQwLCJTX0lGUkVHIjozMjc2OCwiU19JRkRJUiI6MTYzODQsIlNfSUZDSFIiOjgxOTIsIlNfSUZCTEsiOjI0NTc2LCJTX0lGSUZPIjo0MDk2LCJTX0lGTE5LIjo0MDk2MCwiU19JRlNPQ0si'@; put 'OjQ5MTUyLCJPX0NSRUFUIjo1MTIsIk9fRVhDTCI6MjA0OCwiT19OT0NUVFkiOjEzMTA3MiwiT19UUlVOQyI6MTAyNCwiT19BUFBFTkQiOjgsIk9fRElSRUNUT1JZIjoxMDQ4NTc2LCJPX05PRk9MTE9XIjoyNTYsIk9fU1lOQyI6MTI4LCJPX1NZTUxJTksiOjIwOTcxNTIsIk9fTk9OQkxPQ0si'@; put 'OjQsIlNfSVJXWFUiOjQ0OCwiU19JUlVTUiI6MjU2LCJTX0lXVVNSIjoxMjgsIlNfSVhVU1IiOjY0LCJTX0lSV1hHIjo1NiwiU19JUkdSUCI6MzIsIlNfSVdHUlAiOjE2LCJTX0lYR1JQIjo4LCJTX0lSV1hPIjo3LCJTX0lST1RIIjo0LCJTX0lXT1RIIjoyLCJTX0lYT1RIIjoxLCJFMkJJRyI6'@; put 'NywiRUFDQ0VTIjoxMywiRUFERFJJTlVTRSI6NDgsIkVBRERSTk9UQVZBSUwiOjQ5LCJFQUZOT1NVUFBPUlQiOjQ3LCJFQUdBSU4iOjM1LCJFQUxSRUFEWSI6MzcsIkVCQURGIjo5LCJFQkFETVNHIjo5NCwiRUJVU1kiOjE2LCJFQ0FOQ0VMRUQiOjg5LCJFQ0hJTEQiOjEwLCJFQ09OTkFCT1JU'@; put 'RUQiOjUzLCJFQ09OTlJFRlVTRUQiOjYxLCJFQ09OTlJFU0VUIjo1NCwiRURFQURMSyI6MTEsIkVERVNUQUREUlJFUSI6MzksIkVET00iOjMzLCJFRFFVT1QiOjY5LCJFRVhJU1QiOjE3LCJFRkFVTFQiOjE0LCJFRkJJRyI6MjcsIkVIT1NUVU5SRUFDSCI6NjUsIkVJRFJNIjo5MCwiRUlMU0VR'@; put 'Ijo5MiwiRUlOUFJPR1JFU1MiOjM2LCJFSU5UUiI6NCwiRUlOVkFMIjoyMiwiRUlPIjo1LCJFSVNDT05OIjo1NiwiRUlTRElSIjoyMSwiRUxPT1AiOjYyLCJFTUZJTEUiOjI0LCJFTUxJTksiOjMxLCJFTVNHU0laRSI6NDAsIkVNVUxUSUhPUCI6OTUsIkVOQU1FVE9PTE9ORyI6NjMsIkVORVRE'@; put 'T1dOIjo1MCwiRU5FVFJFU0VUIjo1MiwiRU5FVFVOUkVBQ0giOjUxLCJFTkZJTEUiOjIzLCJFTk9CVUZTIjo1NSwiRU5PREFUQSI6OTYsIkVOT0RFViI6MTksIkVOT0VOVCI6MiwiRU5PRVhFQyI6OCwiRU5PTENLIjo3NywiRU5PTElOSyI6OTcsIkVOT01FTSI6MTIsIkVOT01TRyI6OTEsIkVO'@; put 'T1BST1RPT1BUIjo0MiwiRU5PU1BDIjoyOCwiRU5PU1IiOjk4LCJFTk9TVFIiOjk5LCJFTk9TWVMiOjc4LCJFTk9UQ09OTiI6NTcsIkVOT1RESVIiOjIwLCJFTk9URU1QVFkiOjY2LCJFTk9UU09DSyI6MzgsIkVOT1RTVVAiOjQ1LCJFTk9UVFkiOjI1LCJFTlhJTyI6NiwiRU9QTk9UU1VQUCI6'@; put 'MTAyLCJFT1ZFUkZMT1ciOjg0LCJFUEVSTSI6MSwiRVBJUEUiOjMyLCJFUFJPVE8iOjEwMCwiRVBST1RPTk9TVVBQT1JUIjo0MywiRVBST1RPVFlQRSI6NDEsIkVSQU5HRSI6MzQsIkVST0ZTIjozMCwiRVNQSVBFIjoyOSwiRVNSQ0giOjMsIkVTVEFMRSI6NzAsIkVUSU1FIjoxMDEsIkVUSU1F'@; put 'RE9VVCI6NjAsIkVUWFRCU1kiOjI2LCJFV09VTERCTE9DSyI6MzUsIkVYREVWIjoxOCwiU0lHSFVQIjoxLCJTSUdJTlQiOjIsIlNJR1FVSVQiOjMsIlNJR0lMTCI6NCwiU0lHVFJBUCI6NSwiU0lHQUJSVCI6NiwiU0lHSU9UIjo2LCJTSUdCVVMiOjEwLCJTSUdGUEUiOjgsIlNJR0tJTEwiOjks'@; put 'IlNJR1VTUjEiOjMwLCJTSUdTRUdWIjoxMSwiU0lHVVNSMiI6MzEsIlNJR1BJUEUiOjEzLCJTSUdBTFJNIjoxNCwiU0lHVEVSTSI6MTUsIlNJR0NITEQiOjIwLCJTSUdDT05UIjoxOSwiU0lHU1RPUCI6MTcsIlNJR1RTVFAiOjE4LCJTSUdUVElOIjoyMSwiU0lHVFRPVSI6MjIsIlNJR1VSRyI6'@; put 'MTYsIlNJR1hDUFUiOjI0LCJTSUdYRlNaIjoyNSwiU0lHVlRBTFJNIjoyNiwiU0lHUFJPRiI6MjcsIlNJR1dJTkNIIjoyOCwiU0lHSU8iOjIzLCJTSUdTWVMiOjEyLCJTU0xfT1BfQUxMIjoyMTQ3NDg2NzE5LCJTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OIjoyNjIx'@; put 'NDQsIlNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiOjQxOTQzMDQsIlNTTF9PUF9DSVNDT19BTllDT05ORUNUIjozMjc2OCwiU1NMX09QX0NPT0tJRV9FWENIQU5HRSI6ODE5MiwiU1NMX09QX0NSWVBUT1BST19UTFNFWFRfQlVHIjoyMTQ3NDgzNjQ4LCJTU0xfT1BfRE9OVF9JTlNF'@; put 'UlRfRU1QVFlfRlJBR01FTlRTIjoyMDQ4LCJTU0xfT1BfRVBIRU1FUkFMX1JTQSI6MCwiU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09OTkVDVCI6NCwiU1NMX09QX01JQ1JPU09GVF9CSUdfU1NMVjNfQlVGRkVSIjozMiwiU1NMX09QX01JQ1JPU09GVF9TRVNTX0lEX0JVRyI6MSwiU1NMX09QX01T'@; put 'SUVfU1NMVjJfUlNBX1BBRERJTkciOjAsIlNTTF9PUF9ORVRTQ0FQRV9DQV9ETl9CVUciOjUzNjg3MDkxMiwiU1NMX09QX05FVFNDQVBFX0NIQUxMRU5HRV9CVUciOjIsIlNTTF9PUF9ORVRTQ0FQRV9ERU1PX0NJUEhFUl9DSEFOR0VfQlVHIjoxMDczNzQxODI0LCJTU0xfT1BfTkVUU0NBUEVf'@; put 'UkVVU0VfQ0lQSEVSX0NIQU5HRV9CVUciOjgsIlNTTF9PUF9OT19DT01QUkVTU0lPTiI6MTMxMDcyLCJTU0xfT1BfTk9fUVVFUllfTVRVIjo0MDk2LCJTU0xfT1BfTk9fU0VTU0lPTl9SRVNVTVBUSU9OX09OX1JFTkVHT1RJQVRJT04iOjY1NTM2LCJTU0xfT1BfTk9fU1NMdjIiOjE2Nzc3MjE2'@; put 'LCJTU0xfT1BfTk9fU1NMdjMiOjMzNTU0NDMyLCJTU0xfT1BfTk9fVElDS0VUIjoxNjM4NCwiU1NMX09QX05PX1RMU3YxIjo2NzEwODg2NCwiU1NMX09QX05PX1RMU3YxXzEiOjI2ODQzNTQ1NiwiU1NMX09QX05PX1RMU3YxXzIiOjEzNDIxNzcyOCwiU1NMX09QX1BLQ1MxX0NIRUNLXzEiOjAs'@; put 'IlNTTF9PUF9QS0NTMV9DSEVDS18yIjowLCJTU0xfT1BfU0lOR0xFX0RIX1VTRSI6MTA0ODU3NiwiU1NMX09QX1NJTkdMRV9FQ0RIX1VTRSI6NTI0Mjg4LCJTU0xfT1BfU1NMRUFZXzA4MF9DTElFTlRfREhfQlVHIjoxMjgsIlNTTF9PUF9TU0xSRUYyX1JFVVNFX0NFUlRfVFlQRV9CVUciOjAs'@; put 'IlNTTF9PUF9UTFNfQkxPQ0tfUEFERElOR19CVUciOjUxMiwiU1NMX09QX1RMU19ENV9CVUciOjI1NiwiU1NMX09QX1RMU19ST0xMQkFDS19CVUciOjgzODg2MDgsIkVOR0lORV9NRVRIT0RfRFNBIjoyLCJFTkdJTkVfTUVUSE9EX0RIIjo0LCJFTkdJTkVfTUVUSE9EX1JBTkQiOjgsIkVOR0lO'@; put 'RV9NRVRIT0RfRUNESCI6MTYsIkVOR0lORV9NRVRIT0RfRUNEU0EiOjMyLCJFTkdJTkVfTUVUSE9EX0NJUEhFUlMiOjY0LCJFTkdJTkVfTUVUSE9EX0RJR0VTVFMiOjEyOCwiRU5HSU5FX01FVEhPRF9TVE9SRSI6MjU2LCJFTkdJTkVfTUVUSE9EX1BLRVlfTUVUSFMiOjUxMiwiRU5HSU5FX01F'@; put 'VEhPRF9QS0VZX0FTTjFfTUVUSFMiOjEwMjQsIkVOR0lORV9NRVRIT0RfQUxMIjo2NTUzNSwiRU5HSU5FX01FVEhPRF9OT05FIjowLCJESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FIjoyLCJESF9DSEVDS19QX05PVF9QUklNRSI6MSwiREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUiI6NCwi'@; put 'REhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUiI6OCwiTlBOX0VOQUJMRUQiOjEsIlJTQV9QS0NTMV9QQURESU5HIjoxLCJSU0FfU1NMVjIzX1BBRERJTkciOjIsIlJTQV9OT19QQURESU5HIjozLCJSU0FfUEtDUzFfT0FFUF9QQURESU5HIjo0LCJSU0FfWDkzMV9QQURESU5HIjo1LCJSU0FfUEtD'@; put 'UzFfUFNTX1BBRERJTkciOjYsIlBPSU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRCI6MiwiUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQiOjQsIlBPSU5UX0NPTlZFUlNJT05fSFlCUklEIjo2LCJGX09LIjowLCJSX09LIjo0LCJXX09LIjoyLCJYX09LIjoxLCJVVl9VRFBfUkVVU0VBRERS'@; put 'Ijo0fScpfSwyMzI0MShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJtb2RwMSI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1'@; put 'MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAyIjp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRh'@; put 'YTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQw'@; put 'NmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHA1Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0'@; put 'MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2'@; put 'NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE0'@; put 'Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMy'@; put 'NDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2'@; put 'MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4'@; put 'OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTUiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0'@; put 'MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5'@; put 'OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVk'@; put 'ZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIw'@; put 'OTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNh'@; put 'ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTYiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJi'@; put 'MGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThm'@; put 'ZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3'@; put 'MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2Vl'@; put 'M2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEw'@; put 'YmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0'@; put 'ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2MzE5OWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE3Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEy'@; put 'OTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0'@; put 'MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUz'@; put 'NmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBh'@; put 'OGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0'@; put 'ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRl'@; put 'NmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZk'@; put 'ZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgz'@; put 'Y2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIw'@; put 'ZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZm'@; put 'ZmYifSwibW9kcDE4Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRm'@; put 'ZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQy'@; put 'M2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1'@; put 'NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJm'@; put 'MTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3'@; put 'MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDVi'@; put 'MDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4'@; put 'ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdj'@; put 'OTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJl'@; put 'ZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2'@; put 'NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJi'@; put 'M2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVk'@; put 'NWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZiJ9fScpfSwxNjM2KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz17ckU6IjYuNi4xIn19LDE1NTc5KGZl'@; put 'KXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjIuMTYuODQwLjEuMTAxLjMuNC4xLjEiOiJhZXMtMTI4LWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIiOiJhZXMtMTI4LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjMiOiJhZXMtMTI4LW9mYiIsIjIuMTYuODQw'@; put 'LjEuMTAxLjMuNC4xLjQiOiJhZXMtMTI4LWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxIjoiYWVzLTE5Mi1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMiI6ImFlcy0xOTItY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjMiOiJhZXMtMTkyLW9mYiIsIjIuMTYuODQwLjEuMTAx'@; put 'LjMuNC4xLjI0IjoiYWVzLTE5Mi1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MSI6ImFlcy0yNTYtZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDIiOiJhZXMtMjU2LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzIjoiYWVzLTI1Ni1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQu'@; put 'MS40NCI6ImFlcy0yNTYtY2ZiIn0nKX19O2NvbnN0IF9fd2VicGFja19tb2R1bGVfY2FjaGVfXz17fTtmdW5jdGlvbiBfX25lc3RlZF93ZWJwYWNrX3JlcXVpcmVfMzA2NDk5MF9fKGZlKXtjb25zdCBqPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1tmZV07aWYodm9pZCAwIT09ailyZXR1cm4g'@; put 'ai5leHBvcnRzO2NvbnN0IGg9X193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW2ZlXT17aWQ6ZmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBfX3dlYnBhY2tfbW9kdWxlc19fW2ZlXS5jYWxsKGguZXhwb3J0cyxoLGguZXhwb3J0cyxfX25lc3RlZF93ZWJwYWNrX3JlcXVpcmVfMzA2NDk5'@; put 'MF9fKSxoLmxvYWRlZD0hMCxoLmV4cG9ydHN9X19uZXN0ZWRfd2VicGFja19yZXF1aXJlXzMwNjQ5OTBfXy5kPShmZSxqKT0+e2lmKEFycmF5LmlzQXJyYXkoaikpZm9yKHZhciBoPTA7aDxqLmxlbmd0aDspe3ZhciB5PWpbaCsrXSxjPWpbaCsrXTtfX25lc3RlZF93ZWJwYWNrX3JlcXVpcmVf'@; put 'MzA2NDk5MF9fLm8oZmUseSk/MD09PWMmJmgrKzpPYmplY3QuZGVmaW5lUHJvcGVydHkoZmUseSwwPT09Yz97ZW51bWVyYWJsZTohMCx2YWx1ZTpqW2grK119OntlbnVtZXJhYmxlOiEwLGdldDpjfSl9ZWxzZSBmb3IodmFyIHkgaW4gailfX25lc3RlZF93ZWJwYWNrX3JlcXVpcmVfMzA2NDk5'@; put 'MF9fLm8oaix5KSYmIV9fbmVzdGVkX3dlYnBhY2tfcmVxdWlyZV8zMDY0OTkwX18ubyhmZSx5KSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGZlLHkse2VudW1lcmFibGU6ITAsZ2V0OmpbeV19KX0sX19uZXN0ZWRfd2VicGFja19yZXF1aXJlXzMwNjQ5OTBfXy5nPWZ1bmN0aW9uKCl7aWYoIm9i'@; put 'amVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2h7aWYoIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksX19uZXN0ZWRfd2VicGFja19yZXF1aXJl'@; put 'XzMwNjQ5OTBfXy5vPShmZSxqKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZlLGopLF9fbmVzdGVkX3dlYnBhY2tfcmVxdWlyZV8zMDY0OTkwX18ucj1mZT0+e1N5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGZlLFN5bWJvbC50b1N0cmlu'@; put 'Z1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZmUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxfX25lc3RlZF93ZWJwYWNrX3JlcXVpcmVfMzA2NDk5MF9fLm5tZD1mZT0+KGZlLnBhdGhzPVtdLGZlLmNoaWxkcmVufHwoZmUuY2hpbGRyZW49W10pLGZlKTts'@; put 'ZXQgX19uZXN0ZWRfd2VicGFja19leHBvcnRzX189X19uZXN0ZWRfd2VicGFja19yZXF1aXJlXzMwNjQ5OTBfXygyODE1Nik7cmV0dXJuIF9fbmVzdGVkX3dlYnBhY2tfZXhwb3J0c19ffSkoKSxtb2R1bGUuZXhwb3J0cz1oKCl9LDU5NDgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9dGhp'@; put 'cyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHcpe3JldHVybiB3JiZ3Ll9fZXNNb2R1bGU/dzp7ZGVmYXVsdDp3fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGosIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGouaXNTcGVjaWFsTWlzc2luZz1qLmNob2ljZVZhbGlkYXRvcj1qLmNv'@; put 'bmZpcm1hdGlvblZhbGlkYXRvcj1qLnVybFZhbGlkYXRvcj12b2lkIDA7Y29uc3QgYz15KGgoMTI5NTQpKTtqLnVybFZhbGlkYXRvcj0odyxTKT0+ISFjLmRlZmF1bHQuaXNIdHRwVXJpKHcpfHwhIWMuZGVmYXVsdC5pc0h0dHBzVXJpKHcpfHwiIj09PXd8fFMsai5jb25maXJtYXRpb25WYWxp'@; put 'ZGF0b3I9dz0+ITA9PT13fHwhMT09PXcsai5jaG9pY2VWYWxpZGF0b3I9KHcsUyxMKT0+dz4wJiZ3PD1TfHxMLGouaXNTcGVjaWFsTWlzc2luZz13PT4oInN0cmluZyIhPXR5cGVvZiB3fHwhdy5pbmNsdWRlcygiLi4iKSkmJm5ldyBSZWdFeHAoIl4oXFwuKT9bYS16Xy5dezF9JCIsImkiKS50'@; put 'ZXN0KHcpfSwxMzI0NyhmZSxqKXsidXNlIHN0cmljdCI7dmFyIGM7ai5ZPXZvaWQgMCwoYz1qLll8fChqLlk9e30pKS5TYXNWaXlhPSJTQVNWSVlBIixjLlNhczk9IlNBUzkiLGMuU2FzanM9IlNBU0pTIn0sMjUwMDEoZmUsail7InVzZSBzdHJpY3QiO2ouQz12b2lkIDAsai5DPShjLHM9MSxB'@; put 'PTEwOTk1MTE2Mjc3NzYpPT57aWYoMD09PWMpcmV0dXJuIjAgQiI7Yz1jPkE/QTpjO2NvbnN0IHc9czwwPzA6cyxTPU1hdGguZmxvb3IoTWF0aC5sb2coYykvTWF0aC5sb2coMTAyNCkpO3JldHVybihjL01hdGgucG93KDEwMjQsUykpLnRvRml4ZWQodykrIiAiK1siQiIsIktCIiwiTUIiLCJH'@; put 'QiIsIlRCIl1bU119fSw0MjkyNChmZSl7dmFyIGo9e3ZlcnNpb246IjEuMTUuMCJ9O2pbNDM3XT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThc'@; put 'eDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFc'@; put 'eGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGEyXHhhM1x4YTVcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1'@; put 'OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZc'@; put 'dTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1'@; put 'MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09'@; put 'aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbNjIwXT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4'@; put 'MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4'@; put 'ZTlceGUyXHhlNFx4ZTBcdTAxMDVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTAxMDdceGM0XHUwMTA0XHUwMTE4XHUwMTE5XHUwMTQyXHhmNFx4ZjZcdTAxMDZceGZiXHhmOVx1MDE1YVx4ZDZceGRjXHhhMlx1MDE0MVx4YTVcdTAxNWJcdTAxOTJcdTAxNzlcdTAxN2JceGYzXHhkM1x1MDE0'@; put 'NFx1MDE0M1x1MDE3YVx1MDE3Y1x4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1'@; put 'MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNc'@; put 'dTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIy'@; put 'MWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbNzM3XT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBc'@; put 'eDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNU'@; put 'VVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAz'@; put 'YTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzJcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdc'@; put 'dTAzYzhcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1'@; put 'NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYzlcdTAzYWNcdTAzYWRcdTAzYWVcdTAzY2FcdTAzYWZc'@; put 'dTAzY2NcdTAzY2RcdTAzY2JcdTAzY2VcdTAzODZcdTAzODhcdTAzODlcdTAzOGFcdTAzOGNcdTAzOGVcdTAzOGZceGIxXHUyMjY1XHUyMjY0XHUwM2FhXHUwM2FiXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLHk9W10sYz17fSxzPTA7MjU2IT1z'@; put 'Oysrcyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzg1MF09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVc'@; put 'eDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5c'@; put 'eDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJh'@; put 'XHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1'@; put 'YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRceGYwXHhkMFx4Y2FceGNiXHhjOFx1MDEzMVx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5'@; put 'XHhmZFx4ZGRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIix5PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hh'@; put 'ckF0KHMpO3JldHVybntlbmM6YyxkZWM6eX19KCksals4NTJdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFk'@; put 'XHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHUwMTZmXHUwMTA3XHhlN1x1MDE0Mlx4ZWJcdTAxNTBcdTAx'@; put 'NTFceGVlXHUwMTc5XHhjNFx1MDEwNlx4YzlcdTAxMzlcdTAxM2FceGY0XHhmNlx1MDEzZFx1MDEzZVx1MDE1YVx1MDE1Ylx4ZDZceGRjXHUwMTY0XHUwMTY1XHUwMTQxXHhkN1x1MDEwZFx4ZTFceGVkXHhmM1x4ZmFcdTAxMDRcdTAxMDVcdTAxN2RcdTAxN2VcdTAxMThcdTAxMTlceGFjXHUw'@; put 'MTdhXHUwMTBjXHUwMTVmXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx1MDExYVx1MDE1ZVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MDE3Ylx1MDE3Y1x1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MDEwMlx1MDEwM1x1'@; put 'MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRcdTAxMTFcdTAxMTBcdTAxMGVceGNiXHUwMTBmXHUwMTQ3XHhjZFx4Y2VcdTAxMWJcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTAxNjJcdTAxNmVcdTI1ODBceGQzXHhkZlx4ZDRcdTAxNDNcdTAxNDRcdTAxNDhc'@; put 'dTAxNjBcdTAxNjFcdTAxNTRceGRhXHUwMTU1XHUwMTcwXHhmZFx4ZGRcdTAxNjNceGI0XHhhZFx1MDJkZFx1MDJkYlx1MDJjN1x1MDJkOFx4YTdceGY3XHhiOFx4YjBceGE4XHUwMmQ5XHUwMTcxXHUwMTU4XHUwMTU5XHUyNWEwXHhhMCIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMz'@; put 'IT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbODU3XT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgx'@; put 'MVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhm'@; put 'Y1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHUwMTMxXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx1MDEzMFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUwMTVlXHUwMTVmXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHUwMTFlXHUwMTFm'@; put 'XHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1'@; put 'YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRceGJhXHhhYVx4Y2FceGNiXHhjOFx1ZmZmZFx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx1ZmZmZFx4ZDdceGRhXHhkYlx4'@; put 'ZDlceGVjXHhmZlx4YWZceGI0XHhhZFx4YjFcdWZmZmRceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAiLHk9W10sYz17fSxzPTA7MjU2IT1zOysrcyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5j'@; put 'aGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzg2MV09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4'@; put 'MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGQwXHhmMFx4'@; put 'ZGVceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmZVx4ZmJceGRkXHhmZFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4YzFceGNkXHhkM1x4ZGFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUy'@; put 'NTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZj'@; put 'XHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlc'@; put 'dTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLHk9W10sYz17fSxzPTA7MjU2IT1zOysrcyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYm'@; put 'KGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzg2NV09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgx'@; put 'Nlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhl'@; put 'NVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4'@; put 'YWJceGE0XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUy'@; put 'NTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4'@; put 'YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLHk9W10sYz17fSxzPTA7MjU2IT1zOysr'@; put 'cyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzg2Nl09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBm'@; put 'XHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdm'@; put 'XHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUw'@; put 'NDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYy'@; put 'XHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUy'@; put 'NTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRk'@; put 'XHUwNDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDBlXHUwNDVlXHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIxMTZceGE0XHUyNWEwXHhhMCIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChz'@; put 'KV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbODc0XT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5'@; put 'XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMjZcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwZTAxXHUw'@; put 'ZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFk'@; put 'XHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUw'@; put 'ZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0'@; put 'XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIix5PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hhckF0KHMpO3JldHVybntlbmM6'@; put 'YyxkZWM6eX19KCksals4OTVdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJico'@; put 'KSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDEwY1x4ZmNceGU5XHUwMTBmXHhlNFx1MDEwZVx1MDE2NFx1MDEwZFx1MDExYlx1MDExYVx1MDEzOVx4Y2RcdTAxM2VcdTAx'@; put 'ZWFceGM0XHhjMVx4YzlcdTAxN2VcdTAxN2RceGY0XHhmNlx4ZDNcdTAxNmZceGRhXHhmZFx4ZDZceGRjXHUwMTYwXHUwMTNkXHhkZFx1MDE1OFx1MDE2NVx4ZTFceGVkXHhmM1x4ZmFcdTAxNDhcdTAxNDdcdTAxNmVceGQ0XHUwMTYxXHUwMTU5XHUwMTU1XHUwMTU0XHhiY1x4YTdceGFiXHhi'@; put 'Ylx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1'@; put 'MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUw'@; put 'M2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIix5PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1'@; put 'MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hhckF0KHMpO3JldHVybntlbmM6YyxkZWM6eX19KCksals5MzJdPWZ1bmN0aW9uKCl7dmFyIHMsaD1bXSx5PXt9LGM9W107Zm9yKGNbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRc'@; put 'blx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz'@; put 'dHV2d3h5ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjYxXHVmZjYyXHVmZjYzXHVmZjY0XHVmZjY1XHVmZjY2XHVmZjY3XHVmZjY4XHVmZjY5XHVmZjZhXHVmZjZiXHVmZjZjXHVmZjZkXHVmZjZlXHVmZjZmXHVmZjcwXHVmZjcxXHVmZjcyXHVmZjczXHVm'@; put 'Zjc0XHVmZjc1XHVmZjc2XHVmZjc3XHVmZjc4XHVmZjc5XHVmZjdhXHVmZjdiXHVmZjdjXHVmZjdkXHVmZjdlXHVmZjdmXHVmZjgwXHVmZjgxXHVmZjgyXHVmZjgzXHVmZjg0XHVmZjg1XHVmZjg2XHVmZjg3XHVmZjg4XHVmZjg5XHVmZjhhXHVmZjhiXHVmZjhjXHVmZjhkXHVmZjhlXHVmZjhm'@; put 'XHVmZjkwXHVmZjkxXHVmZjkyXHVmZjkzXHVmZjk0XHVmZjk1XHVmZjk2XHVmZjk3XHVmZjk4XHVmZjk5XHVmZjlhXHVmZjliXHVmZjljXHVmZjlkXHVmZjllXHVmZjlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMF0ubGVuZ3RoOysrcyk2NTUzMyE9'@; put 'PWNbMF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1swXVtzXV09MCtzLGhbMCtzXT1jWzBdW3NdKTtmb3IoY1sxMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDBcdTMwMDFcdTMwMDJcdWZmMGNcdWZmMGVcdTMwZmJcdWZmMWFc'@; put 'dWZmMWJcdWZmMWZcdWZmMDFcdTMwOWJcdTMwOWNceGI0XHVmZjQwXHhhOFx1ZmYzZVx1ZmZlM1x1ZmYzZlx1MzBmZFx1MzBmZVx1MzA5ZFx1MzA5ZVx1MzAwM1x1NGVkZFx1MzAwNVx1MzAwNlx1MzAwN1x1MzBmY1x1MjAxNVx1MjAxMFx1ZmYwZlx1ZmYzY1x1ZmY1ZVx1MjIyNVx1ZmY1Y1x1'@; put 'MjAyNlx1MjAyNVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1ZmYwOFx1ZmYwOVx1MzAxNFx1MzAxNVx1ZmYzYlx1ZmYzZFx1ZmY1Ylx1ZmY1ZFx1MzAwOFx1MzAwOVx1MzAwYVx1MzAwYlx1MzAwY1x1MzAwZFx1MzAwZVx1MzAwZlx1MzAxMFx1MzAxMVx1ZmYwYlx1ZmYwZFx4YjFceGQ3XHVm'@; put 'ZmZkXHhmN1x1ZmYxZFx1MjI2MFx1ZmYxY1x1ZmYxZVx1MjI2Nlx1MjI2N1x1MjIxZVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmZTVcdWZmMDRcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMDNcdWZmMDZcdWZmMGFcdWZmMjBceGE3XHUyNjA2XHUyNjA1XHUyNWNi'@; put 'XHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyNWJkXHUyNWJjXHUyMDNiXHUzMDEyXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMjI3XHUyMjI4XHVmZmUyXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHUyMTJiXHUyMDMwXHUyNjZmXHUyNjZkXHUyNjZhXHUyMDIwXHUyMDIxXHhiNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjVlZlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEyOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTI5XVtzXS5jaGFyQ29k'@; put 'ZUF0KDApJiYoeVtjWzEyOV1bc11dPTMzMDI0K3MsaFszMzAyNCtzXT1jWzEyOV1bc10pO2ZvcihjWzEzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmYxMFx1ZmYxMVx1ZmYxMlx1ZmYxM1x1ZmYxNFx1ZmYxNVx1ZmYxNlx1ZmYxN1x1ZmYxOFx1ZmYxOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmYyMVx1ZmYyMlx1ZmYyM1x1'@; put 'ZmYyNFx1ZmYyNVx1ZmYyNlx1ZmYyN1x1ZmYyOFx1ZmYyOVx1ZmYyYVx1ZmYyYlx1ZmYyY1x1ZmYyZFx1ZmYyZVx1ZmYyZlx1ZmYzMFx1ZmYzMVx1ZmYzMlx1ZmYzM1x1ZmYzNFx1ZmYzNVx1ZmYzNlx1ZmYzN1x1ZmYzOFx1ZmYzOVx1ZmYzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmY0MVx1ZmY0Mlx1ZmY0M1x1ZmY0NFx1ZmY0NVx1ZmY0Nlx1ZmY0N1x1ZmY0OFx1ZmY0OVx1ZmY0YVx1ZmY0Ylx1ZmY0Y1x1ZmY0ZFx1ZmY0ZVx1ZmY0Zlx1ZmY1MFx1ZmY1MVx1ZmY1Mlx1ZmY1M1x1ZmY1NFx1ZmY1NVx1ZmY1Nlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1'@; put 'ZmY1YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NVx1MzA0Nlx1MzA0N1x1MzA0OFx1MzA0OVx1MzA0YVx1MzA0Ylx1MzA0Y1x1MzA0ZFx1MzA0ZVx1MzA0Zlx1MzA1MFx1MzA1MVx1MzA1Mlx1MzA1M1x1MzA1NFx1MzA1NVx1MzA1Nlx1MzA1'@; put 'N1x1MzA1OFx1MzA1OVx1MzA1YVx1MzA1Ylx1MzA1Y1x1MzA1ZFx1MzA1ZVx1MzA1Zlx1MzA2MFx1MzA2MVx1MzA2Mlx1MzA2M1x1MzA2NFx1MzA2NVx1MzA2Nlx1MzA2N1x1MzA2OFx1MzA2OVx1MzA2YVx1MzA2Ylx1MzA2Y1x1MzA2ZFx1MzA2ZVx1MzA2Zlx1MzA3MFx1MzA3MVx1MzA3Mlx1'@; put 'MzA3M1x1MzA3NFx1MzA3NVx1MzA3Nlx1MzA3N1x1MzA3OFx1MzA3OVx1MzA3YVx1MzA3Ylx1MzA3Y1x1MzA3ZFx1MzA3ZVx1MzA3Zlx1MzA4MFx1MzA4MVx1MzA4Mlx1MzA4M1x1MzA4NFx1MzA4NVx1MzA4Nlx1MzA4N1x1MzA4OFx1MzA4OVx1MzA4YVx1MzA4Ylx1MzA4Y1x1MzA4ZFx1MzA4'@; put 'ZVx1MzA4Zlx1MzA5MFx1MzA5MVx1MzA5Mlx1MzA5M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzMF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTMw'@; put 'XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzMF1bc11dPTMzMjgwK3MsaFszMzI4MCtzXT1jWzEzMF1bc10pO2ZvcihjWzEzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBh'@; put 'Nlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1'@; put 'MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBk'@; put 'ZFx1MzBkZVx1MzBkZlx1ZmZmZFx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNh'@; put 'Nlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1'@; put 'MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzMV0ubGVuZ3RoOysrcyk2'@; put 'NTUzMyE9PWNbMTMxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzMV1bc11dPTMzNTM2K3MsaFszMzUzNitzXT1jWzEzMV1bc10pO2ZvcihjWzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQx'@; put 'M1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1'@; put 'MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQz'@; put 'OVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1ZmZmZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUz'@; put 'M1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzMl0u'@; put 'bGVuZ3RoOysrcyk2NTUzMyE9PWNbMTMyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzMl1bc11dPTMzNzkyK3MsaFszMzc5MitzXT1jWzEzMl1bc10pO2ZvcihjWzEzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjQ2MFx1MjQ2'@; put 'MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1MjQ2YVx1MjQ2Ylx1MjQ2Y1x1MjQ2ZFx1MjQ2ZVx1MjQ2Zlx1MjQ3MFx1MjQ3MVx1MjQ3Mlx1MjQ3M1x1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1'@; put 'MjE2OVx1ZmZmZFx1MzM0OVx1MzMxNFx1MzMyMlx1MzM0ZFx1MzMxOFx1MzMyN1x1MzMwM1x1MzMzNlx1MzM1MVx1MzM1N1x1MzMwZFx1MzMyNlx1MzMyM1x1MzMyYlx1MzM0YVx1MzMzYlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzM4ZVx1MzM4Zlx1MzNjNFx1MzNhMVx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzM3Ylx1ZmZmZFx1MzAxZFx1MzAxZlx1MjExNlx1MzNjZFx1MjEyMVx1MzJhNFx1MzJhNVx1MzJhNlx1MzJhN1x1MzJhOFx1MzIzMVx1MzIzMlx1MzIzOVx1MzM3ZVx1MzM3ZFx1MzM3Y1x1MjI1Mlx1MjI2MVx1MjIyYlx1MjIyZVx1'@; put 'MjIxMVx1MjIxYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MjIzNVx1MjIyOVx1MjIyYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9'@; put 'MDtzIT1jWzEzNV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzNV1bc11dPTM0NTYwK3MsaFszNDU2MCtzXT1jWzEzNV1bc10pO2ZvcihjWzEzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYzZlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMxY1x1N2E1MFx1NjBhYVx1NjNlMVx1NmUy'@; put 'NVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1OThmNFx1N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1OTVjN1x1OTc4ZFx1Njc0Zlx1NGVlNVx1'@; put 'NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3MFx1NjYxM1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIwMlx1OTA1NVx1OTA3YVx1NTMzYlx1NGU5'@; put 'NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1ODI4Ylx1OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1ODUyZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIu'@; put 'c3BsaXQoIiIpLHM9MDtzIT1jWzEzNl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzNl1bc11dPTM0ODE2K3MsaFszNDgxNitzXT1jWzEzNl1bc10pO2ZvcihjWzEzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1OTY2Mlx1OTY3MFx1OTZhMFx1OTdmYlx1NTQwYlx1NTNmM1x1NWI4N1x1NzBjZlx1N2ZiZFx1OGZjMlx1OTZlOFx1NTM2Zlx1OWQ1Y1x1N2FiYVx1NGUxMVx1Nzg5M1x1ODFmY1x1NmUyNlx1NTYxOFx1NTUwNFx1NmIxZFx1ODUxYVx1OWMzYlx1NTllNVx1NTNhOVx1'@; put 'NmQ2Nlx1NzRkY1x1OTU4Zlx1NTY0Mlx1NGU5MVx1OTA0Ylx1OTZmMlx1ODM0Zlx1OTkwY1x1NTNlMVx1NTViNlx1NWIzMFx1NWY3MVx1NjYyMFx1NjZmM1x1NjgwNFx1NmMzOFx1NmNmM1x1NmQyOVx1NzQ1Ylx1NzZjOFx1N2E0ZVx1OTgzNFx1ODJmMVx1ODg1Ylx1OGE2MFx1OTJlZFx1NmRi'@; put 'Mlx1NzVhYlx1NzZjYVx1OTljNVx1NjBhNlx1OGIwMVx1OGQ4YVx1OTViMlx1Njk4ZVx1NTNhZFx1NTE4Nlx1ZmZmZFx1NTcxMlx1NTgzMFx1NTk0NFx1NWJiNFx1NWVmNlx1NjAyOFx1NjNhOVx1NjNmNFx1NmNiZlx1NmYxNFx1NzA4ZVx1NzExNFx1NzE1OVx1NzFkNVx1NzMzZlx1N2UwMVx1'@; put 'ODI3Nlx1ODJkMVx1ODU5N1x1OTA2MFx1OTI1Ylx1OWQxYlx1NTg2OVx1NjViY1x1NmM1YVx1NzUyNVx1NTFmOVx1NTkyZVx1NTk2NVx1NWY4MFx1NWZkY1x1NjJiY1x1NjVmYVx1NmEyYVx1NmIyN1x1NmJiNFx1NzM4Ylx1N2ZjMVx1ODk1Nlx1OWQyY1x1OWQwZVx1OWVjNFx1NWNhMVx1NmM5'@; put 'Nlx1ODM3Ylx1NTEwNFx1NWM0Ylx1NjFiNlx1ODFjNlx1Njg3Nlx1NzI2MVx1NGU1OVx1NGZmYVx1NTM3OFx1NjA2OVx1NmUyOVx1N2E0Zlx1OTdmM1x1NGUwYlx1NTMxNlx1NGVlZVx1NGY1NVx1NGYzZFx1NGZhMVx1NGY3M1x1NTJhMFx1NTNlZlx1NTYwOVx1NTkwZlx1NWFjMVx1NWJiNlx1'@; put 'NWJlMVx1NzlkMVx1NjY4N1x1Njc5Y1x1NjdiNlx1NmI0Y1x1NmNiM1x1NzA2Ylx1NzNjMlx1Nzk4ZFx1NzliZVx1N2EzY1x1N2I4N1x1ODJiMVx1ODJkYlx1ODMwNFx1ODM3N1x1ODNlZlx1ODNkM1x1ODc2Nlx1OGFiMlx1NTYyOVx1OGNhOFx1OGZlNlx1OTA0ZVx1OTcxZVx1ODY4YVx1NGZj'@; put 'NFx1NWNlOFx1NjIxMVx1NzI1OVx1NzUzYlx1ODFlNVx1ODJiZFx1ODZmZVx1OGNjMFx1OTZjNVx1OTkxM1x1OTlkNVx1NGVjYlx1NGYxYVx1ODllM1x1NTZkZVx1NTg0YVx1NThjYVx1NWVmYlx1NWZlYlx1NjAyYVx1NjA5NFx1NjA2Mlx1NjFkMFx1NjIxMlx1NjJkMFx1NjUzOVx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzN11bc11dPTM1MDcyK3MsaFszNTA3MitzXT1jWzEzN11bc10pO2ZvcihjWzEzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWI0MVx1NjY2Nlx1NjhiMFx1NmQ3N1x1NzA3MFx1NzU0Y1x1NzY4Nlx1N2Q3NVx1ODJhNVx1ODdmOVx1OTU4Ylx1OTY4ZVx1OGM5ZFx1NTFmMVx1NTJiZVx1NTkxNlx1NTRiM1x1NWJiM1x1NWQxNlx1NjE2OFx1Njk4Mlx1NmRhZlx1Nzg4ZFx1'@; put 'ODRjYlx1ODg1N1x1OGE3Mlx1OTNhN1x1OWFiOFx1NmQ2Y1x1OTlhOFx1ODZkOVx1NTdhM1x1NjdmZlx1ODZjZVx1OTIwZVx1NTI4M1x1NTY4N1x1NTQwNFx1NWVkM1x1NjJlMVx1NjRiOVx1NjgzY1x1NjgzOFx1NmJiYlx1NzM3Mlx1NzhiYVx1N2E2Ylx1ODk5YVx1ODlkMlx1OGQ2Ylx1OGYw'@; put 'M1x1OTBlZFx1OTVhM1x1OTY5NFx1OTc2OVx1NWI2Nlx1NWNiM1x1Njk3ZFx1OTg0ZFx1OTg0ZVx1NjM5Ylx1N2IyMFx1NmEyYlx1ZmZmZFx1NmE3Zlx1NjhiNlx1OWMwZFx1NmY1Zlx1NTI3Mlx1NTU5ZFx1NjA3MFx1NjJlY1x1NmQzYlx1NmUwN1x1NmVkMVx1ODQ1Ylx1ODkxMFx1OGY0NFx1'@; put 'NGUxNFx1OWMzOVx1NTNmNlx1NjkxYlx1NmEzYVx1OTc4NFx1NjgyYVx1NTE1Y1x1N2FjM1x1ODRiMlx1OTFkY1x1OTM4Y1x1NTY1Ylx1OWQyOFx1NjgyMlx1ODMwNVx1ODQzMVx1N2NhNVx1NTIwOFx1ODJjNVx1NzRlNlx1NGU3ZVx1NGY4M1x1NTFhMFx1NWJkMlx1NTIwYVx1NTJkOFx1NTJl'@; put 'N1x1NWRmYlx1NTU5YVx1NTgyYVx1NTllNlx1NWI4Y1x1NWI5OFx1NWJkYlx1NWU3Mlx1NWU3OVx1NjBhM1x1NjExZlx1NjE2M1x1NjFiZVx1NjNkYlx1NjU2Mlx1NjdkMVx1Njg1M1x1NjhmYVx1NmIzZVx1NmI1M1x1NmM1N1x1NmYyMlx1NmY5N1x1NmY0NVx1NzRiMFx1NzUxOFx1NzZlM1x1'@; put 'NzcwYlx1N2FmZlx1N2JhMVx1N2MyMVx1N2RlOVx1N2YzNlx1N2ZmMFx1ODA5ZFx1ODI2Nlx1ODM5ZVx1ODliM1x1OGFjY1x1OGNhYlx1OTA4NFx1OTQ1MVx1OTU5M1x1OTU5MVx1OTVhMlx1OTY2NVx1OTdkM1x1OTkyOFx1ODIxOFx1NGUzOFx1NTQyYlx1NWNiOFx1NWRjY1x1NzNhOVx1NzY0'@; put 'Y1x1NzczY1x1NWNhOVx1N2ZlYlx1OGQwYlx1OTZjMVx1OTgxMVx1OTg1NFx1OTg1OFx1NGYwMVx1NGYwZVx1NTM3MVx1NTU5Y1x1NTY2OFx1NTdmYVx1NTk0N1x1NWIwOVx1NWJjNFx1NWM5MFx1NWUwY1x1NWU3ZVx1NWZjY1x1NjNlZVx1NjczYVx1NjVkN1x1NjVlMlx1NjcxZlx1NjhjYlx1'@; put 'NjhjNFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzOF1bc11dPTM1MzI4K3MsaFszNTMyOCtzXT1jWzEzOF1bc10pO2ZvcihjWzEzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNiNFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1OWEwZVx1OWIzY1x1NGU4MFx1'@; put 'NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIyZlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1NzgyN1x1Njc3NVx1OWVjZFx1NTM3'@; put 'NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYxM1x1NjAyNVx1NjU1MVx1ZmZmZFx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNlM1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1N2QxYVx1N2NmZVx1N2Q2Nlx1'@; put 'NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhY1x1NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1NTE3MVx1NTFmNlx1NTM1NFx1NTMy'@; put 'MVx1NTM3Zlx1NTNlYlx1NTVhY1x1NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEwNVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdmZlx1OTk1N1x1OWE1YVx1NGVmMFx1'@; put 'NTFkZFx1NWMyZFx1NjY4MVx1Njk2ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1ODNjY1x1ODg3Zlx1ODk1Zlx1OGIz'@; put 'OVx1OGZkMVx1OTFkMVx1NTQxZlx1OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJlNlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0N1x1OTY4NVx1NGUzMlx1NmFkYlx1'@; put 'OTFlN1x1NWM1MVx1NWM0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzOV1bc11dPTM1NTg0K3MsaFszNTU4NCtzXT1jWzEzOV1bc10pO2ZvcihjWzE0MF09Ilx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjM5OFx1N2E5Zlx1NmM5M1x1OTc3NFx1OGY2MVx1N2FhYVx1NzE4YVx1OTY4OFx1N2M4Mlx1NjgxN1x1N2U3MFx1Njg1MVx1OTM2Y1x1NTJmMlx1NTQxYlx1ODVhYlx1OGExM1x1N2ZhNFx1OGVjZFx1'@; put 'OTBlMVx1NTM2Nlx1ODg4OFx1Nzk0MVx1NGZjMlx1NTBiZVx1NTIxMVx1NTE0NFx1NTU1M1x1NTcyZFx1NzNlYVx1NTc4Ylx1NTk1MVx1NWY2Mlx1NWY4NFx1NjA3NVx1NjE3Nlx1NjE2N1x1NjFhOVx1NjNiMlx1NjQzYVx1NjU2Y1x1NjY2Zlx1Njg0Mlx1NmUxM1x1NzU2Nlx1N2EzZFx1N2Nm'@; put 'Ylx1N2Q0Y1x1N2Q5OVx1N2U0Ylx1N2Y2Ylx1ODMwZVx1ODM0YVx1ODZjZFx1OGEwOFx1OGE2M1x1OGI2Nlx1OGVmZFx1OTgxYVx1OWQ4Zlx1ODJiOFx1OGZjZVx1OWJlOFx1ZmZmZFx1NTI4N1x1NjIxZlx1NjQ4M1x1NmZjMFx1OTY5OVx1Njg0MVx1NTA5MVx1NmIyMFx1NmM3YVx1NmY1NFx1'@; put 'N2E3NFx1N2Q1MFx1ODg0MFx1OGEyM1x1NjcwOFx1NGVmNlx1NTAzOVx1NTAyNlx1NTA2NVx1NTE3Y1x1NTIzOFx1NTI2M1x1NTVhN1x1NTcwZlx1NTgwNVx1NWFjY1x1NWVmYVx1NjFiMlx1NjFmOFx1NjJmM1x1NjM3Mlx1NjkxY1x1NmEyOVx1NzI3ZFx1NzJhY1x1NzMyZVx1NzgxNFx1Nzg2'@; put 'Zlx1N2Q3OVx1NzcwY1x1ODBhOVx1ODk4Ylx1OGIxOVx1OGNlMlx1OGVkMlx1OTA2M1x1OTM3NVx1OTY3YVx1OTg1NVx1OWExM1x1OWU3OFx1NTE0M1x1NTM5Zlx1NTNiM1x1NWU3Ylx1NWYyNlx1NmUxYlx1NmU5MFx1NzM4NFx1NzNmZVx1N2Q0M1x1ODIzN1x1OGEwMFx1OGFmYVx1OTY1MFx1'@; put 'NGU0ZVx1NTAwYlx1NTNlNFx1NTQ3Y1x1NTZmYVx1NTlkMVx1NWI2NFx1NWRmMVx1NWVhYlx1NWYyN1x1NjIzOFx1NjU0NVx1NjdhZlx1NmU1Nlx1NzJkMFx1N2NjYVx1ODhiNFx1ODBhMVx1ODBlMVx1ODNmMFx1ODY0ZVx1OGE4N1x1OGRlOFx1OTIzN1x1OTZjN1x1OTg2N1x1OWYxM1x1NGU5'@; put 'NFx1NGU5Mlx1NGYwZFx1NTM0OFx1NTQ0OVx1NTQzZVx1NWEyZlx1NWY4Y1x1NWZhMVx1NjA5Zlx1NjhhN1x1NmE4ZVx1NzQ1YVx1Nzg4MVx1OGE5ZVx1OGFhNFx1OGI3N1x1OTE5MFx1NGU1ZVx1OWJjOVx1NGVhNFx1NGY3Y1x1NGZhZlx1NTAxOVx1NTAxNlx1NTE0OVx1NTE2Y1x1NTI5Zlx1'@; put 'NTJiOVx1NTJmZVx1NTM5YVx1NTNlM1x1NTQxMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0MF1bc11dPTM1ODQwK3MsaFszNTg0MCtzXT1jWzE0MF1bc10pO2Zvcihj'@; put 'WzE0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTQwZVx1NTU4OVx1NTc1MVx1NTdhMlx1NTk3ZFx1NWI1NFx1NWI1ZFx1NWI4Zlx1NWRlNVx1NWRlN1x1NWRmN1x1NWU3OFx1NWU4M1x1NWU5YVx1NWViN1x1NWYxOFx1NjA1Mlx1'@; put 'NjE0Y1x1NjI5N1x1NjJkOFx1NjNhN1x1NjUzYlx1NjYwMlx1NjY0M1x1NjZmNFx1Njc2ZFx1NjgyMVx1Njg5N1x1NjljYlx1NmM1Zlx1NmQyYVx1NmQ2OVx1NmUyZlx1NmU5ZFx1NzUzMlx1NzY4N1x1Nzg2Y1x1N2EzZlx1N2NlMFx1N2QwNVx1N2QxOFx1N2Q1ZVx1N2RiMVx1ODAxNVx1ODAw'@; put 'M1x1ODBhZlx1ODBiMVx1ODE1NFx1ODE4Zlx1ODIyYVx1ODM1Mlx1ODg0Y1x1ODg2MVx1OGIxYlx1OGNhMlx1OGNmY1x1OTBjYVx1OTE3NVx1OTI3MVx1NzgzZlx1OTJmY1x1OTVhNFx1OTY0ZFx1ZmZmZFx1OTgwNVx1OTk5OVx1OWFkOFx1OWQzYlx1NTI1Ylx1NTJhYlx1NTNmN1x1NTQwOFx1'@; put 'NThkNVx1NjJmN1x1NmZlMFx1OGM2YVx1OGY1Zlx1OWViOVx1NTE0Ylx1NTIzYlx1NTQ0YVx1NTZmZFx1N2E0MFx1OTE3N1x1OWQ2MFx1OWVkMlx1NzM0NFx1NmYwOVx1ODE3MFx1NzUxMVx1NWZmZFx1NjBkYVx1OWFhOFx1NzJkYlx1OGZiY1x1NmI2NFx1OTgwM1x1NGVjYVx1NTZmMFx1NTc2'@; put 'NFx1NThiZVx1NWE1YVx1NjA2OFx1NjFjN1x1NjYwZlx1NjYwNlx1NjgzOVx1NjhiMVx1NmRmN1x1NzVkNVx1N2QzYVx1ODI2ZVx1OWI0Mlx1NGU5Ylx1NGY1MFx1NTNjOVx1NTUwNlx1NWQ2Zlx1NWRlNlx1NWRlZVx1NjdmYlx1NmM5OVx1NzQ3M1x1NzgwMlx1OGE1MFx1OTM5Nlx1ODhkZlx1'@; put 'NTc1MFx1NWVhN1x1NjMyYlx1NTBiNVx1NTBhY1x1NTE4ZFx1NjcwMFx1NTRjOVx1NTg1ZVx1NTliYlx1NWJiMFx1NWY2OVx1NjI0ZFx1NjNhMVx1NjgzZFx1NmI3M1x1NmUwOFx1NzA3ZFx1OTFjN1x1NzI4MFx1NzgxNVx1NzgyNlx1Nzk2ZFx1NjU4ZVx1N2QzMFx1ODNkY1x1ODhjMVx1OGYw'@; put 'OVx1OTY5Ylx1NTI2NFx1NTcyOFx1Njc1MFx1N2Y2YVx1OGNhMVx1NTFiNFx1NTc0Mlx1OTYyYVx1NTgzYVx1Njk4YVx1ODBiNFx1NTRiMlx1NWQwZVx1NTdmY1x1Nzg5NVx1OWRmYVx1NGY1Y1x1NTI0YVx1NTQ4Ylx1NjQzZVx1NjYyOFx1NjcxNFx1NjdmNVx1N2E4NFx1N2I1Nlx1N2QyMlx1'@; put 'OTMyZlx1Njg1Y1x1OWJhZFx1N2IzOVx1NTMxOVx1NTE4YVx1NTIzN1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0MV1bc11dPTM2MDk2K3MsaFszNjA5NitzXT1jWzE0'@; put 'MV1bc10pO2ZvcihjWzE0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMwNlx1OWJhYlx1NzZiZlx1NjY1Mlx1'@; put 'NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5N1x1N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1NGY3Zlx1NTIzYVx1NTNmOFx1NTNm'@; put 'Mlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTljOVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1NjAxZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2Mlx1ZmZmZFx1NmI3Ylx1NmMwZlx1NzM0NVx1Nzk0OVx1NzljMVx1N2NmOFx1'@; put 'N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNjN1x1OGNkY1x1OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1NjY0Mlx1NmIyMVx1NmVjYlx1NmNi'@; put 'Ylx1NzIzZVx1NzRiZFx1NzVkNFx1NzhjMVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1MFx1OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFjOVx1NWJhNFx1NjA4OVx1NmU3Zlx1'@; put 'NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1N2UxZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1OTA2ZVx1ODZjN1x1OTBhYVx1NTAx'@; put 'Zlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYzMVx1NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1Mlx1OTk5Nlx1NTExMlx1NTNkN1x1'@; put 'NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0Ml1bc11dPTM2MzUyK3MsaFsz'@; put 'NjM1MitzXT1jWzE0Ml1bc10pO2ZvcihjWzE0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI5N1x1NWMzMVx1NWRkZVx1NGZlZVx1NjEwMVx1NjJmZVx1NmQzMlx1NzljMFx1NzljYlx1N2Q0Mlx1N2U0ZFx1N2ZkMlx1ODFlZFx1'@; put 'ODIxZlx1ODQ5MFx1ODg0Nlx1ODk3Mlx1OGI5MFx1OGU3NFx1OGYyZlx1OTAzMVx1OTE0Ylx1OTE2Y1x1OTZjNlx1OTE5Y1x1NGVjMFx1NGY0Zlx1NTE0NVx1NTM0MVx1NWY5M1x1NjIwZVx1NjdkNFx1NmM0MVx1NmUwYlx1NzM2M1x1N2UyNlx1OTFjZFx1OTI4M1x1NTNkNFx1NTkxOVx1NWJi'@; put 'Zlx1NmRkMVx1Nzk1ZFx1N2UyZVx1N2M5Ylx1NTg3ZVx1NzE5Zlx1NTFmYVx1ODg1M1x1OGZmMFx1NGZjYVx1NWNmYlx1NjYyNVx1NzdhY1x1N2FlM1x1ODIxY1x1OTlmZlx1NTFjNlx1NWZhYVx1NjVlY1x1Njk2Zlx1NmI4OVx1NmRmM1x1ZmZmZFx1NmU5Nlx1NmY2NFx1NzZmZVx1N2QxNFx1'@; put 'NWRlMVx1OTA3NVx1OTE4N1x1OTgwNlx1NTFlNlx1NTIxZFx1NjI0MFx1NjY5MVx1NjZkOVx1NmUxYVx1NWViNlx1N2RkMlx1N2Y3Mlx1NjZmOFx1ODVhZlx1ODVmN1x1OGFmOFx1NTJhOVx1NTNkOVx1NTk3M1x1NWU4Zlx1NWY5MFx1NjA1NVx1OTJlNFx1OTY2NFx1NTBiN1x1NTExZlx1NTJk'@; put 'ZFx1NTMyMFx1NTM0N1x1NTNlY1x1NTRlOFx1NTU0Nlx1NTUzMVx1NTYxN1x1NTk2OFx1NTliZVx1NWEzY1x1NWJiNVx1NWMwNlx1NWMwZlx1NWMxMVx1NWMxYVx1NWU4NFx1NWU4YVx1NWVlMFx1NWY3MFx1NjI3Zlx1NjI4NFx1NjJkYlx1NjM4Y1x1NjM3N1x1NjYwN1x1NjYwY1x1NjYyZFx1'@; put 'NjY3Nlx1Njc3ZVx1NjhhMlx1NmExZlx1NmEzNVx1NmNiY1x1NmQ4OFx1NmUwOVx1NmU1OFx1NzEzY1x1NzEyNlx1NzE2N1x1NzVjN1x1NzcwMVx1Nzg1ZFx1NzkwMVx1Nzk2NVx1NzlmMFx1N2FlMFx1N2IxMVx1N2NhN1x1N2QzOVx1ODA5Nlx1ODNkNlx1ODQ4Ylx1ODU0OVx1ODg1ZFx1ODhm'@; put 'M1x1OGExZlx1OGEzY1x1OGE1NFx1OGE3M1x1OGM2MVx1OGNkZVx1OTFhNFx1OTI2Nlx1OTM3ZVx1OTQxOFx1OTY5Y1x1OTc5OFx1NGUwYVx1NGUwOFx1NGUxZVx1NGU1N1x1NTE5N1x1NTI3MFx1NTdjZVx1NTgzNFx1NThjY1x1NWIyMlx1NWUzOFx1NjBjNVx1NjRmZVx1Njc2MVx1Njc1Nlx1'@; put 'NmQ0NFx1NzJiNlx1NzU3M1x1N2E2M1x1ODRiOFx1OGI3Mlx1OTFiOFx1OTMyMFx1NTYzMVx1NTdmNFx1OThmZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0M11bc11d'@; put 'PTM2NjA4K3MsaFszNjYwOCtzXT1jWzE0M11bc10pO2ZvcihjWzE0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlZFx1NjkwZFx1NmI5Nlx1NzFlZFx1N2U1NFx1ODA3N1x1ODI3Mlx1ODllNlx1OThkZlx1ODc1NVx1OGZiMVx1'@; put 'NWMzYlx1NGYzOFx1NGZlMVx1NGZiNVx1NTUwN1x1NWEyMFx1NWJkZFx1NWJlOVx1NWZjM1x1NjE0ZVx1NjMyZlx1NjViMFx1NjY0Ylx1NjhlZVx1Njk5Ylx1NmQ3OFx1NmRmMVx1NzUzM1x1NzViOVx1NzcxZlx1Nzk1ZVx1NzllNlx1N2QzM1x1ODFlM1x1ODJhZlx1ODVhYVx1ODlhYVx1OGEz'@; put 'YVx1OGVhYlx1OGY5Ylx1OTAzMlx1OTFkZFx1OTcwN1x1NGViYVx1NGVjMVx1NTIwM1x1NTg3NVx1NThlY1x1NWMwYlx1NzUxYVx1NWMzZFx1ODE0ZVx1OGEwYVx1OGZjNVx1OTY2M1x1OTc2ZFx1N2IyNVx1OGFjZlx1OTgwOFx1OTE2Mlx1NTZmM1x1NTNhOFx1ZmZmZFx1OTAxN1x1NTQzOVx1'@; put 'NTc4Mlx1NWUyNVx1NjNhOFx1NmMzNFx1NzA4YVx1Nzc2MVx1N2M4Ylx1N2ZlMFx1ODg3MFx1OTA0Mlx1OTE1NFx1OTMxMFx1OTMxOFx1OTY4Zlx1NzQ1ZVx1OWFjNFx1NWQwN1x1NWQ2OVx1NjU3MFx1NjdhMlx1OGRhOFx1OTZkYlx1NjM2ZVx1Njc0OVx1NjkxOVx1ODNjNVx1OTgxN1x1OTZj'@; put 'MFx1ODhmZVx1NmY4NFx1NjQ3YVx1NWJmOFx1NGUxNlx1NzAyY1x1NzU1ZFx1NjYyZlx1NTFjNFx1NTIzNlx1NTJlMlx1NTlkM1x1NWY4MVx1NjAyN1x1NjIxMFx1NjUzZlx1NjU3NFx1NjYxZlx1NjY3NFx1NjhmMlx1NjgxNlx1NmI2M1x1NmUwNVx1NzI3Mlx1NzUxZlx1NzZkYlx1N2NiZVx1'@; put 'ODA1Nlx1NThmMFx1ODhmZFx1ODk3Zlx1OGFhMFx1OGE5M1x1OGFjYlx1OTAxZFx1OTE5Mlx1OTc1Mlx1OTc1OVx1NjU4OVx1N2EwZVx1ODEwNlx1OTZiYlx1NWUyZFx1NjBkY1x1NjIxYVx1NjVhNVx1NjYxNFx1Njc5MFx1NzdmM1x1N2E0ZFx1N2M0ZFx1N2UzZVx1ODEwYVx1OGNhY1x1OGQ2'@; put 'NFx1OGRlMVx1OGU1Zlx1NzhhOVx1NTIwN1x1NjJkOVx1NjNhNVx1NjQ0Mlx1NjI5OFx1OGEyZFx1N2E4M1x1N2JjMFx1OGFhY1x1OTZlYVx1N2Q3Nlx1ODIwY1x1ODc0OVx1NGVkOVx1NTE0OFx1NTM0M1x1NTM2MFx1NWJhM1x1NWMwMlx1NWMxNlx1NWRkZFx1NjIyNlx1NjI0N1x1NjRiMFx1'@; put 'NjgxM1x1NjgzNFx1NmNjOVx1NmQ0NVx1NmQxN1x1NjdkM1x1NmY1Y1x1NzE0ZVx1NzE3ZFx1NjVjYlx1N2E3Zlx1N2JhZFx1N2RkYVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ0XVtzXS5jaGFyQ29kZUF0KDApJiYo'@; put 'eVtjWzE0NF1bc11dPTM2ODY0K3MsaFszNjg2NCtzXT1jWzE0NF1bc10pO2ZvcihjWzE0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U0YVx1N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1ODVhNlx1OGE2ZVx1OGNjZVx1OGRmNVx1'@; put 'OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4NFx1NmYzOFx1NzEzNlx1NTE2OFx1Nzk4NVx1N2U1NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZmZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4Zlx1NzU4ZVx1NzkwZVx1Nzk1Nlx1Nzlk'@; put 'Zlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1OWYyMFx1NTBlN1x1NTI3NVx1NTNjY1x1NTNlMlx1NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1NjM4M1x1NjMzZlx1NjNiYlx1ZmZmZFx1'@; put 'NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYxNVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1N2E5M1x1N2NkZlx1N2RjZlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVmYlx1ODhjNVx1OGQ3MFx1OTAwMVx1OTA2ZFx1OTM5N1x1OTcxY1x1OWEx'@; put 'Mlx1NTBjZlx1NTg5N1x1NjE4ZVx1ODFkM1x1ODUzNVx1OGQwOFx1OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3M1x1NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1ODg5Nlx1NTE3Nlx1NjNjM1x1NWI1OFx1'@; put 'NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkxYVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1NTgxNVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJmZVx1ODAxMFx1NWNiMVx1NWUyZlx1NWY4'@; put 'NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNiOFx1OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1NmVkZFx1NzAyN1x1NTM1M1x1NTU0NFx1'@; put 'NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQyMlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1ODMzOFx1NTFlN1x1ODZmOFx1NTNlYVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ1XVtzXS5jaGFy'@; put 'Q29kZUF0KDApJiYoeVtjWzE0NV1bc11dPTM3MTIwK3MsaFszNzEyMCtzXT1jWzE0NV1bc10pO2ZvcihjWzE0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTNlOVx1NGY0Nlx1OTA1NFx1OGZiMFx1NTk2YVx1ODEzMVx1NWRmZFx1'@; put 'N2FlYVx1OGZiZlx1NjhkYVx1OGMzN1x1NzJmOFx1OWM0OFx1NmEzZFx1OGFiMFx1NGUzOVx1NTM1OFx1NTYwNlx1NTc2Nlx1NjJjNVx1NjNhMlx1NjVlNlx1NmI0ZVx1NmRlMVx1NmU1Ylx1NzBhZFx1NzdlZFx1N2FlZlx1N2JhYVx1N2RiYlx1ODAzZFx1ODBjNlx1ODZjYlx1OGE5NVx1OTM1'@; put 'Ylx1NTZlM1x1NThjN1x1NWYzZVx1NjVhZFx1NjY5Nlx1NmE4MFx1NmJiNVx1NzUzN1x1OGFjN1x1NTAyNFx1NzdlNVx1NTczMFx1NWYxYlx1NjA2NVx1NjY3YVx1NmM2MFx1NzVmNFx1N2ExYVx1N2Y2ZVx1ODFmNFx1ODcxOFx1OTA0NVx1OTliM1x1N2JjOVx1NzU1Y1x1N2FmOVx1N2I1MVx1'@; put 'ODRjNFx1ZmZmZFx1OTAxMFx1NzllOVx1N2E5Mlx1ODMzNlx1NWFlMVx1Nzc0MFx1NGUyZFx1NGVmMlx1NWI5OVx1NWZlMFx1NjJiZFx1NjYzY1x1NjdmMVx1NmNlOFx1ODY2Ylx1ODg3N1x1OGEzYlx1OTE0ZVx1OTJmM1x1OTlkMFx1NmExN1x1NzAyNlx1NzMyYVx1ODJlN1x1ODQ1N1x1OGNh'@; put 'Zlx1NGUwMVx1NTE0Nlx1NTFjYlx1NTU4Ylx1NWJmNVx1NWUxNlx1NWUzM1x1NWU4MVx1NWYxNFx1NWYzNVx1NWY2Ylx1NWZiNFx1NjFmMlx1NjMxMVx1NjZhMlx1NjcxZFx1NmY2ZVx1NzI1Mlx1NzUzYVx1NzczYVx1ODA3NFx1ODEzOVx1ODE3OFx1ODc3Nlx1OGFiZlx1OGFkY1x1OGQ4NVx1'@; put 'OGRmM1x1OTI5YVx1OTU3N1x1OTgwMlx1OWNlNVx1NTJjNVx1NjM1N1x1NzZmNFx1NjcxNVx1NmM4OFx1NzNjZFx1OGNjM1x1OTNhZVx1OTY3M1x1NmQyNVx1NTg5Y1x1NjkwZVx1NjljY1x1OGZmZFx1OTM5YVx1NzVkYlx1OTAxYVx1NTg1YVx1NjgwMlx1NjNiNFx1NjlmYlx1NGY0M1x1NmYy'@; put 'Y1x1NjdkOFx1OGZiYlx1ODUyNlx1N2RiNFx1OTM1NFx1NjkzZlx1NmY3MFx1NTc2YVx1NThmN1x1NWIyY1x1N2QyY1x1NzIyYVx1NTQwYVx1OTFlM1x1OWRiNFx1NGVhZFx1NGY0ZVx1NTA1Y1x1NTA3NVx1NTI0M1x1OGM5ZVx1NTQ0OFx1NTgyNFx1NWI5YVx1NWUxZFx1NWU5NVx1NWVhZFx1'@; put 'NWVmN1x1NWYxZlx1NjA4Y1x1NjJiNVx1NjMzYVx1NjNkMFx1NjhhZlx1NmM0MFx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2RlMFx1ODI0N1x1OGEwMlx1OGFlNlx1OGU0NFx1OTAxM1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNb'@; put 'MTQ2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0Nl1bc11dPTM3Mzc2K3MsaFszNzM3NitzXT1jWzE0Nl1bc10pO2ZvcihjWzE0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTBiOFx1OTEyZFx1OTFkOFx1OWYwZVx1NmNlNVx1'@; put 'NjQ1OFx1NjRlMlx1NjU3NVx1NmVmNFx1NzY4NFx1N2IxYlx1OTA2OVx1OTNkMVx1NmViYVx1NTRmMlx1NWZiOVx1NjRhNFx1OGY0ZFx1OGZlZFx1OTI0NFx1NTE3OFx1NTg2Ylx1NTkyOVx1NWM1NVx1NWU5N1x1NmRmYlx1N2U4Zlx1NzUxY1x1OGNiY1x1OGVlMlx1OTg1Ylx1NzBiOVx1NGYx'@; put 'ZFx1NmJiZlx1NmZiMVx1NzUzMFx1OTZmYlx1NTE0ZVx1NTQxMFx1NTgzNVx1NTg1N1x1NTlhY1x1NWM2MFx1NWY5Mlx1NjU5N1x1Njc1Y1x1NmUyMVx1NzY3Ylx1ODNkZlx1OGNlZFx1OTAxNFx1OTBmZFx1OTM0ZFx1NzgyNVx1NzgzYVx1NTJhYVx1NWVhNlx1NTcxZlx1NTk3NFx1NjAxMlx1'@; put 'NTAxMlx1NTE1YVx1NTFhY1x1ZmZmZFx1NTFjZFx1NTIwMFx1NTUxMFx1NTg1NFx1NTg1OFx1NTk1N1x1NWI5NVx1NWNmNlx1NWQ4Ylx1NjBiY1x1NjI5NVx1NjQyZFx1Njc3MVx1Njg0M1x1NjhiY1x1NjhkZlx1NzZkN1x1NmRkOFx1NmU2Zlx1NmQ5Ylx1NzA2Zlx1NzFjOFx1NWY1M1x1NzVk'@; put 'OFx1Nzk3N1x1N2I0OVx1N2I1NFx1N2I1Mlx1N2NkNlx1N2Q3MVx1NTIzMFx1ODQ2M1x1ODU2OVx1ODVlNFx1OGEwZVx1OGIwNFx1OGM0Nlx1OGUwZlx1OTAwM1x1OTAwZlx1OTQxOVx1OTY3Nlx1OTgyZFx1OWEzMFx1OTVkOFx1NTBjZFx1NTJkNVx1NTQwY1x1NTgwMlx1NWMwZVx1NjFhN1x1'@; put 'NjQ5ZVx1NmQxZVx1NzdiM1x1N2FlNVx1ODBmNFx1ODQwNFx1OTA1M1x1OTI4NVx1NWNlMFx1OWQwN1x1NTMzZlx1NWY5N1x1NWZiM1x1NmQ5Y1x1NzI3OVx1Nzc2M1x1NzliZlx1N2JlNFx1NmJkMlx1NzJlY1x1OGFhZFx1NjgwM1x1NmE2MVx1NTFmOFx1N2E4MVx1NjkzNFx1NWM0YVx1OWNm'@; put 'Nlx1ODJlYlx1NWJjNVx1OTE0OVx1NzAxZVx1NTY3OFx1NWM2Zlx1NjBjN1x1NjU2Nlx1NmM4Y1x1OGM1YVx1OTA0MVx1OTgxM1x1NTQ1MVx1NjZjN1x1OTIwZFx1NTk0OFx1OTBhM1x1NTE4NVx1NGU0ZFx1NTFlYVx1ODU5OVx1OGIwZVx1NzA1OFx1NjM3YVx1OTM0Ylx1Njk2Mlx1OTliNFx1'@; put 'N2UwNFx1NzU3N1x1NTM1N1x1Njk2MFx1OGVkZlx1OTZlM1x1NmM1ZFx1NGU4Y1x1NWMzY1x1NWYxMFx1OGZlOVx1NTMwMlx1OGNkMVx1ODA4OVx1ODY3OVx1NWVmZlx1NjVlNVx1NGU3M1x1NTE2NVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0N10ubGVuZ3RoOysr'@; put 'cyk2NTUzMyE9PWNbMTQ3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0N11bc11dPTM3NjMyK3MsaFszNzYzMitzXT1jWzE0N11bc10pO2ZvcihjWzE0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk4Mlx1NWMzZlx1OTdlZVx1'@; put 'NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFiMVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1NTdkY1x1NTZhMlx1NjBhOVx1NmZjM1x1N2QwZFx1ODBmZFx1ODEzM1x1ODFi'@; put 'Zlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJhZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5Mlx1NjU1N1x1Njc2Zlx1NzZjM1x1NzI0Y1x1ODBjY1x1ODBiYVx1OGYyOVx1'@; put 'OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NVx1ZmZmZFx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThmMlx1OGNlMFx1OTY2YVx1OTAxOVx1ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1NjJjZFx1NjdjZlx1NmNjYVx1NzY3ZFx1N2I5NFx1N2M5NVx1ODIz'@; put 'Nlx1ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNlx1NTFmZFx1N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4Y1x1NzY3YVx1OTE5N1x1OWFlYVx1NGYxMFx1'@; put 'N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIyNFx1NTM0YVx1NTNjZFx1NTNkYlx1NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1NzU1NFx1N2U0MVx1ODIyY1x1ODVlOVx1OGNh'@; put 'OVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1ODU0M1x1ODZlZVx1NTMyYVx1NTM1MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBiMlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5MFx1NmJkNFx1NmNjY1x1NzViMlx1NzZhZVx1'@; put 'Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThkYlx1NmEwYlx1N2MzOFx1NTA5OVx1NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1NzcwOVx1N2Y4ZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0'@; put 'OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0OF1bc11dPTM3ODg4K3MsaFszNzg4OCtzXT1jWzE0OF1bc10pO2ZvcihjWzE0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWYzYlx1'@; put 'NjdjYVx1N2ExN1x1NTMzOVx1NzU4Ylx1OWFlZFx1NWY2Nlx1ODE5ZFx1ODNmMVx1ODA5OFx1NWYzY1x1NWZjNVx1NzU2Mlx1N2I0Nlx1OTAzY1x1Njg2N1x1NTllYlx1NWE5Ylx1N2QxMFx1NzY3ZVx1OGIyY1x1NGZmNVx1NWY2YVx1NmExOVx1NmMzN1x1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2'@; put 'OFx1OGE1NVx1OGM3OVx1NWVkZlx1NjNjZlx1NzVjNVx1NzlkMlx1ODJkN1x1OTMyOFx1OTJmMlx1ODQ5Y1x1ODZlZFx1OWMyZFx1NTRjMVx1NWY2Y1x1NjU4Y1x1NmQ1Y1x1NzAxNVx1OGNhN1x1OGNkM1x1OTgzYlx1NjU0Zlx1NzRmNlx1NGUwZFx1NGVkOFx1NTdlMFx1NTkyYlx1NWE2Nlx1'@; put 'NWJjY1x1NTFhOFx1NWUwM1x1NWU5Y1x1NjAxNlx1NjI3Nlx1NjU3N1x1ZmZmZFx1NjVhN1x1NjY2ZVx1NmQ2ZVx1NzIzNlx1N2IyNlx1ODE1MFx1ODE5YVx1ODI5OVx1OGI1Y1x1OGNhMFx1OGNlNlx1OGQ3NFx1OTYxY1x1OTY0NFx1NGZhZVx1NjRhYlx1NmI2Nlx1ODIxZVx1ODQ2MVx1ODU2'@; put 'YVx1OTBlOFx1NWMwMVx1Njk1M1x1OThhOFx1ODQ3YVx1ODU1N1x1NGYwZlx1NTI2Zlx1NWZhOVx1NWU0NVx1NjcwZFx1Nzk4Zlx1ODE3OVx1ODkwN1x1ODk4Nlx1NmRmNVx1NWYxN1x1NjI1NVx1NmNiOFx1NGVjZlx1NzI2OVx1OWI5Mlx1NTIwNlx1NTQzYlx1NTY3NFx1NThiM1x1NjFhNFx1'@; put 'NjI2ZVx1NzExYVx1NTk2ZVx1N2M4OVx1N2NkZVx1N2QxYlx1OTZmMFx1NjU4N1x1ODA1ZVx1NGUxOVx1NGY3NVx1NTE3NVx1NTg0MFx1NWU2M1x1NWU3M1x1NWYwYVx1NjdjNFx1NGUyNlx1ODUzZFx1OTU4OVx1OTY1Ylx1N2M3M1x1OTgwMVx1NTBmYlx1NThjMVx1NzY1Nlx1NzhhN1x1NTIy'@; put 'NVx1NzdhNVx1ODUxMVx1N2I4Nlx1NTA0Zlx1NTkwOVx1NzI0N1x1N2JjN1x1N2RlOFx1OGZiYVx1OGZkNFx1OTA0ZFx1NGZiZlx1NTJjOVx1NWEyOVx1NWYwMVx1OTdhZFx1NGZkZFx1ODIxN1x1OTJlYVx1NTcwM1x1NjM1NVx1NmI2OVx1NzUyYlx1ODhkY1x1OGYxNFx1N2E0Mlx1NTJkZlx1'@; put 'NTg5M1x1NjE1NVx1NjIwYVx1NjZhZVx1NmJjZFx1N2MzZlx1ODNlOVx1NTAyM1x1NGZmOFx1NTMwNVx1NTQ0Nlx1NTgzMVx1NTk0OVx1NWI5ZFx1NWNmMFx1NWNlZlx1NWQyOVx1NWU5Nlx1NjJiMVx1NjM2N1x1NjUzZVx1NjViOVx1NjcwYlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIp'@; put 'LHM9MDtzIT1jWzE0OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0OV1bc11dPTM4MTQ0K3MsaFszODE0NCtzXT1jWzE0OV1bc10pO2ZvcihjWzE1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1NmNkNVx1NmNlMVx1NzBmOVx1NzgzMlx1N2UyYlx1ODBkZVx1ODJiM1x1ODQwY1x1ODRlY1x1ODcwMlx1ODkxMlx1OGEyYVx1OGM0YVx1OTBhNlx1OTJkMlx1OThmZFx1OWNmM1x1OWQ2Y1x1NGU0Zlx1NGVhMVx1NTA4ZFx1NTI1Nlx1NTc0YVx1NTlhOFx1NWUzZFx1NWZkOFx1NWZk'@; put 'OVx1NjIzZlx1NjZiNFx1NjcxYlx1NjdkMFx1NjhkMlx1NTE5Mlx1N2QyMVx1ODBhYVx1ODFhOFx1OGIwMFx1OGM4Y1x1OGNiZlx1OTI3ZVx1OTYzMlx1NTQyMFx1OTgyY1x1NTMxN1x1NTBkNVx1NTM1Y1x1NThhOFx1NjRiMlx1NjczNFx1NzI2N1x1Nzc2Nlx1N2E0Nlx1OTFlNlx1NTJjM1x1'@; put 'NmNhMVx1NmI4Nlx1NTgwMFx1NWU0Y1x1NTk1NFx1NjcyY1x1N2ZmYlx1NTFlMVx1NzZjNlx1ZmZmZFx1NjQ2OVx1NzhlOFx1OWI1NFx1OWViYlx1NTdjYlx1NTliOVx1NjYyN1x1Njc5YVx1NmJjZVx1NTRlOVx1NjlkOVx1NWU1NVx1ODE5Y1x1Njc5NVx1OWJhYVx1NjdmZVx1OWM1Mlx1Njg1'@; put 'ZFx1NGVhNlx1NGZlM1x1NTNjOFx1NjJiOVx1NjcyYlx1NmNhYlx1OGZjNFx1NGZhZFx1N2U2ZFx1OWViZlx1NGUwN1x1NjE2Mlx1NmU4MFx1NmYyYlx1ODUxM1x1NTQ3M1x1NjcyYVx1OWI0NVx1NWRmM1x1N2I5NVx1NWNhY1x1NWJjNlx1ODcxY1x1NmU0YVx1ODRkMVx1N2ExNFx1ODEwOFx1'@; put 'NTk5OVx1N2M4ZFx1NmMxMVx1NzcyMFx1NTJkOVx1NTkyMlx1NzEyMVx1NzI1Zlx1NzdkYlx1OTcyN1x1OWQ2MVx1NjkwYlx1NWE3Zlx1NWExOFx1NTFhNVx1NTQwZFx1NTQ3ZFx1NjYwZVx1NzZkZlx1OGZmN1x1OTI5OFx1OWNmNFx1NTllYVx1NzI1ZFx1NmVjNVx1NTE0ZFx1NjhjOVx1N2Ri'@; put 'Zlx1N2RlY1x1OTc2Mlx1OWViYVx1NjQ3OFx1NmEyMVx1ODMwMlx1NTk4NFx1NWI1Zlx1NmJkYlx1NzMxYlx1NzZmMlx1N2RiMlx1ODAxN1x1ODQ5OVx1NTEzMlx1NjcyOFx1OWVkOVx1NzZlZVx1Njc2Mlx1NTJmZlx1OTkwNVx1NWMyNFx1NjIzYlx1N2M3ZVx1OGNiMFx1NTU0Zlx1NjBiNlx1'@; put 'N2QwYlx1OTU4MFx1NTMwMVx1NGU1Zlx1NTFiNlx1NTkxY1x1NzIzYVx1ODAzNlx1OTFjZVx1NWYyNVx1NzdlMlx1NTM4NFx1NWY3OVx1N2QwNFx1ODVhY1x1OGEzM1x1OGU4ZFx1OTc1Nlx1NjdmM1x1ODVhZVx1OTQ1M1x1NjEwOVx1NjEwOFx1NmNiOVx1NzY1Mlx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1MF1bc11dPTM4NDAwK3MsaFszODQwMCtzXT1jWzE1MF1bc10pO2ZvcihjWzE1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1NTEyYVx1NTJjN1x1NTNjYlx1NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1MFx1ODhkNVx1OGE5OFx1OTA0YVx1OTA5MVx1OTBm'@; put 'NVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4OVx1OGYzZlx1OTgxMFx1NTBhZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1NzE5NFx1NzUyOFx1N2FhZlx1N2Y4YVx1ODAwMFx1'@; put 'ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1OTkwYVx1NjE3ZVx1NjI5MVx1NmIzMlx1ZmZmZFx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNiMVx1OTgzY1x1OTZmN1x1NmQxYlx1N2Q2MVx1ODQzZFx1OTE2'@; put 'YVx1NGU3MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlhN1x1NTIyOVx1NTQwZlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4M1x1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1NWY4Ylx1NzM4N1x1N2FjYlx1ODQ0ZVx1NjNhMFx1NzU2NVx1'@; put 'NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4MVx1NmRiY1x1NzMxZlx1NzY0Mlx1NzdhZFx1N2ExY1x1N2Nl'@; put 'N1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgxOFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1NmQ5OVx1N2QyZlx1OTg1ZVx1NGVlNFx1NGYzNlx1NGY4Ylx1'@; put 'NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5MFx1NmYyM1x1NzE0OVx1N2MzZVx1N2RmNFx1ODA2Zlx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1MV1bc11dPTM4NjU2K3MsaFszODY1NitzXT1jWzE1MV1bc10pO2ZvcihjWzE1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODRlZVx1OTAyM1x1OTMyY1x1NTQ0Mlx1OWI2Zlx1NmFkM1x1NzA4OVx1OGNjMlx1OGRlZlx1OTczMlx1NTJiNFx1NWE0MVx1NWVjYVx1NWYwNFx1NjcxN1x1Njk3Y1x1Njk5NFx1NmQ2YVx1NmYwZlx1NzI2Mlx1NzJmY1x1N2JlZFx1ODAw'@; put 'MVx1ODA3ZVx1ODc0Ylx1OTBjZVx1NTE2ZFx1OWU5M1x1Nzk4NFx1ODA4Ylx1OTMzMlx1OGFkNlx1NTAyZFx1NTQ4Y1x1OGE3MVx1NmI2YVx1OGNjNFx1ODEwN1x1NjBkMVx1NjdhMFx1OWRmMlx1NGU5OVx1NGU5OFx1OWMxMFx1OGE2Ylx1ODVjMVx1ODU2OFx1NjkwMFx1NmU3ZVx1Nzg5N1x1'@; put 'ODE1NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWYwY1x1NGUxMFx1NGUxNVx1NGUyYVx1NGUzMVx1NGUzNlx1NGUzY1x1NGUzZlx1NGU0Mlx1NGU1Nlx1'@; put 'NGU1OFx1NGU4Mlx1NGU4NVx1OGM2Ylx1NGU4YVx1ODIxMlx1NWYwZFx1NGU4ZVx1NGU5ZVx1NGU5Zlx1NGVhMFx1NGVhMlx1NGViMFx1NGViM1x1NGViNlx1NGVjZVx1NGVjZFx1NGVjNFx1NGVjNlx1NGVjMlx1NGVkN1x1NGVkZVx1NGVlZFx1NGVkZlx1NGVmN1x1NGYwOVx1NGY1YVx1NGYz'@; put 'MFx1NGY1Ylx1NGY1ZFx1NGY1N1x1NGY0N1x1NGY3Nlx1NGY4OFx1NGY4Zlx1NGY5OFx1NGY3Ylx1NGY2OVx1NGY3MFx1NGY5MVx1NGY2Zlx1NGY4Nlx1NGY5Nlx1NTExOFx1NGZkNFx1NGZkZlx1NGZjZVx1NGZkOFx1NGZkYlx1NGZkMVx1NGZkYVx1NGZkMFx1NGZlNFx1NGZlNVx1NTAxYVx1'@; put 'NTAyOFx1NTAxNFx1NTAyYVx1NTAyNVx1NTAwNVx1NGYxY1x1NGZmNlx1NTAyMVx1NTAyOVx1NTAyY1x1NGZmZVx1NGZlZlx1NTAxMVx1NTAwNlx1NTA0M1x1NTA0N1x1NjcwM1x1NTA1NVx1NTA1MFx1NTA0OFx1NTA1YVx1NTA1Nlx1NTA2Y1x1NTA3OFx1NTA4MFx1NTA5YVx1NTA4NVx1NTBi'@; put 'NFx1NTBiMlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1Ml1bc11dPTM4OTEyK3MsaFszODkxMitzXT1jWzE1Ml1bc10pO2ZvcihjWzE1M109Ilx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTBjOVx1NTBjYVx1NTBiM1x1NTBjMlx1NTBkNlx1NTBkZVx1NTBlNVx1NTBlZFx1NTBlM1x1NTBlZVx1NTBmOVx1NTBmNVx1NTEwOVx1NTEwMVx1NTEwMlx1NTExNlx1NTExNVx1NTExNFx1NTExYVx1NTEyMVx1NTEz'@; put 'YVx1NTEzN1x1NTEzY1x1NTEzYlx1NTEzZlx1NTE0MFx1NTE1Mlx1NTE0Y1x1NTE1NFx1NTE2Mlx1N2FmOFx1NTE2OVx1NTE2YVx1NTE2ZVx1NTE4MFx1NTE4Mlx1NTZkOFx1NTE4Y1x1NTE4OVx1NTE4Zlx1NTE5MVx1NTE5M1x1NTE5NVx1NTE5Nlx1NTFhNFx1NTFhNlx1NTFhMlx1NTFhOVx1'@; put 'NTFhYVx1NTFhYlx1NTFiM1x1NTFiMVx1NTFiMlx1NTFiMFx1NTFiNVx1NTFiZFx1NTFjNVx1NTFjOVx1NTFkYlx1NTFlMFx1ODY1NVx1NTFlOVx1NTFlZFx1ZmZmZFx1NTFmMFx1NTFmNVx1NTFmZVx1NTIwNFx1NTIwYlx1NTIxNFx1NTIwZVx1NTIyN1x1NTIyYVx1NTIyZVx1NTIzM1x1NTIz'@; put 'OVx1NTI0Zlx1NTI0NFx1NTI0Ylx1NTI0Y1x1NTI1ZVx1NTI1NFx1NTI2YVx1NTI3NFx1NTI2OVx1NTI3M1x1NTI3Zlx1NTI3ZFx1NTI4ZFx1NTI5NFx1NTI5Mlx1NTI3MVx1NTI4OFx1NTI5MVx1OGZhOFx1OGZhN1x1NTJhY1x1NTJhZFx1NTJiY1x1NTJiNVx1NTJjMVx1NTJjZFx1NTJkN1x1'@; put 'NTJkZVx1NTJlM1x1NTJlNlx1OThlZFx1NTJlMFx1NTJmM1x1NTJmNVx1NTJmOFx1NTJmOVx1NTMwNlx1NTMwOFx1NzUzOFx1NTMwZFx1NTMxMFx1NTMwZlx1NTMxNVx1NTMxYVx1NTMyM1x1NTMyZlx1NTMzMVx1NTMzM1x1NTMzOFx1NTM0MFx1NTM0Nlx1NTM0NVx1NGUxN1x1NTM0OVx1NTM0'@; put 'ZFx1NTFkNlx1NTM1ZVx1NTM2OVx1NTM2ZVx1NTkxOFx1NTM3Ylx1NTM3N1x1NTM4Mlx1NTM5Nlx1NTNhMFx1NTNhNlx1NTNhNVx1NTNhZVx1NTNiMFx1NTNiNlx1NTNjM1x1N2MxMlx1OTZkOVx1NTNkZlx1NjZmY1x1NzFlZVx1NTNlZVx1NTNlOFx1NTNlZFx1NTNmYVx1NTQwMVx1NTQzZFx1'@; put 'NTQ0MFx1NTQyY1x1NTQyZFx1NTQzY1x1NTQyZVx1NTQzNlx1NTQyOVx1NTQxZFx1NTQ0ZVx1NTQ4Zlx1NTQ3NVx1NTQ4ZVx1NTQ1Zlx1NTQ3MVx1NTQ3N1x1NTQ3MFx1NTQ5Mlx1NTQ3Ylx1NTQ4MFx1NTQ3Nlx1NTQ4NFx1NTQ5MFx1NTQ4Nlx1NTRjN1x1NTRhMlx1NTRiOFx1NTRhNVx1NTRh'@; put 'Y1x1NTRjNFx1NTRjOFx1NTRhOFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1M11bc11dPTM5MTY4K3MsaFszOTE2OCtzXT1jWzE1M11bc10pO2ZvcihjWzE1NF09Ilx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhYlx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1NTRmYVx1NTRlMlx1NTUzOVx1NTU0MFx1NTU2M1x1NTU0'@; put 'Y1x1NTUyZVx1NTU1Y1x1NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVhZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4N1x1NTVhOFx1NTVkYVx1NTVjNVx1NTVkZlx1NTVjNFx1'@; put 'NTVkY1x1NTVlNFx1NTVkNFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVmOVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOFx1ZmZmZFx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1NTY2YVx1NTY4Nlx1NTY4MFx1NTY4YVx1NTZhMFx1NTY5'@; put 'NFx1NTY4Zlx1NTZhNVx1NTZhZVx1NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZmOVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOVx1NTcwOFx1NTcwYlx1NTcwZFx1NTcxM1x1NTcxOFx1NTcxNlx1'@; put 'NTVjN1x1NTcxY1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1NTdjNlx1NTdkNFx1NTdkMlx1NTdkM1x1NTgwYVx1NTdk'@; put 'Nlx1NTdlM1x1NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThhYlx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThhZVx1NThjNVx1NThkM1x1NThkMVx1NThkN1x1NThkOVx1'@; put 'NThkOFx1NThlNVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThmY1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1N2FkMlx1NTk1NVx1NTk1MFx1NTk0ZVx1NTk1YVx1NTk1'@; put 'OFx1NTk2Mlx1NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1NF1bc11dPTM5NDI0K3MsaFszOTQyNCtzXT1jWzE1NF1bc10pO2Zv'@; put 'cihjWzE1NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk3OFx1NTk4MVx1NTk5ZFx1NGY1ZVx1NGZhYlx1NTlhM1x1NTliMlx1NTljNlx1NTllOFx1NTlkY1x1NTk4ZFx1NTlkOVx1NTlkYVx1NWEyNVx1NWExZlx1NWExMVx1NWEx'@; put 'Y1x1NWEwOVx1NWExYVx1NWE0MFx1NWE2Y1x1NWE0OVx1NWEzNVx1NWEzNlx1NWE2Mlx1NWE2YVx1NWE5YVx1NWFiY1x1NWFiZVx1NWFjYlx1NWFjMlx1NWFiZFx1NWFlM1x1NWFkN1x1NWFlNlx1NWFlOVx1NWFkNlx1NWFmYVx1NWFmYlx1NWIwY1x1NWIwYlx1NWIxNlx1NWIzMlx1NWFkMFx1'@; put 'NWIyYVx1NWIzNlx1NWIzZVx1NWI0M1x1NWI0NVx1NWI0MFx1NWI1MVx1NWI1NVx1NWI1YVx1NWI1Ylx1NWI2NVx1NWI2OVx1NWI3MFx1NWI3M1x1NWI3NVx1NWI3OFx1NjU4OFx1NWI3YVx1NWI4MFx1ZmZmZFx1NWI4M1x1NWJhNlx1NWJiOFx1NWJjM1x1NWJjN1x1NWJjOVx1NWJkNFx1NWJk'@; put 'MFx1NWJlNFx1NWJlNlx1NWJlMlx1NWJkZVx1NWJlNVx1NWJlYlx1NWJmMFx1NWJmNlx1NWJmM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwZFx1NWMxM1x1NWMyMFx1NWMyMlx1NWMyOFx1NWMzOFx1NWMzOVx1NWM0MVx1NWM0Nlx1NWM0ZVx1NWM1M1x1NWM1MFx1NWM0Zlx1NWI3MVx1NWM2Y1x1'@; put 'NWM2ZVx1NGU2Mlx1NWM3Nlx1NWM3OVx1NWM4Y1x1NWM5MVx1NWM5NFx1NTk5Ylx1NWNhYlx1NWNiYlx1NWNiNlx1NWNiY1x1NWNiN1x1NWNjNVx1NWNiZVx1NWNjN1x1NWNkOVx1NWNlOVx1NWNmZFx1NWNmYVx1NWNlZFx1NWQ4Y1x1NWNlYVx1NWQwYlx1NWQxNVx1NWQxN1x1NWQ1Y1x1NWQx'@; put 'Zlx1NWQxYlx1NWQxMVx1NWQxNFx1NWQyMlx1NWQxYVx1NWQxOVx1NWQxOFx1NWQ0Y1x1NWQ1Mlx1NWQ0ZVx1NWQ0Ylx1NWQ2Y1x1NWQ3M1x1NWQ3Nlx1NWQ4N1x1NWQ4NFx1NWQ4Mlx1NWRhMlx1NWQ5ZFx1NWRhY1x1NWRhZVx1NWRiZFx1NWQ5MFx1NWRiN1x1NWRiY1x1NWRjOVx1NWRjZFx1'@; put 'NWRkM1x1NWRkMlx1NWRkNlx1NWRkYlx1NWRlYlx1NWRmMlx1NWRmNVx1NWUwYlx1NWUxYVx1NWUxOVx1NWUxMVx1NWUxYlx1NWUzNlx1NWUzN1x1NWU0NFx1NWU0M1x1NWU0MFx1NWU0ZVx1NWU1N1x1NWU1NFx1NWU1Zlx1NWU2Mlx1NWU2NFx1NWU0N1x1NWU3NVx1NWU3Nlx1NWU3YVx1OWVi'@; put 'Y1x1NWU3Zlx1NWVhMFx1NWVjMVx1NWVjMlx1NWVjOFx1NWVkMFx1NWVjZlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1NV1bc11dPTM5NjgwK3MsaFszOTY4MCtzXT1j'@; put 'WzE1NV1bc10pO2ZvcihjWzE1Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWVkNlx1NWVlM1x1NWVkZFx1NWVkYVx1NWVkYlx1NWVlMlx1NWVlMVx1NWVlOFx1NWVlOVx1NWVlY1x1NWVmMVx1NWVmM1x1NWVmMFx1NWVmNFx1NWVm'@; put 'OFx1NWVmZVx1NWYwM1x1NWYwOVx1NWY1ZFx1NWY1Y1x1NWYwYlx1NWYxMVx1NWYxNlx1NWYyOVx1NWYyZFx1NWYzOFx1NWY0MVx1NWY0OFx1NWY0Y1x1NWY0ZVx1NWYyZlx1NWY1MVx1NWY1Nlx1NWY1N1x1NWY1OVx1NWY2MVx1NWY2ZFx1NWY3M1x1NWY3N1x1NWY4M1x1NWY4Mlx1NWY3Zlx1'@; put 'NWY4YVx1NWY4OFx1NWY5MVx1NWY4N1x1NWY5ZVx1NWY5OVx1NWY5OFx1NWZhMFx1NWZhOFx1NWZhZFx1NWZiY1x1NWZkNlx1NWZmYlx1NWZlNFx1NWZmOFx1NWZmMVx1NWZkZFx1NjBiM1x1NWZmZlx1NjAyMVx1NjA2MFx1ZmZmZFx1NjAxOVx1NjAxMFx1NjAyOVx1NjAwZVx1NjAzMVx1NjAx'@; put 'Ylx1NjAxNVx1NjAyYlx1NjAyNlx1NjAwZlx1NjAzYVx1NjA1YVx1NjA0MVx1NjA2YVx1NjA3N1x1NjA1Zlx1NjA0YVx1NjA0Nlx1NjA0ZFx1NjA2M1x1NjA0M1x1NjA2NFx1NjA0Mlx1NjA2Y1x1NjA2Ylx1NjA1OVx1NjA4MVx1NjA4ZFx1NjBlN1x1NjA4M1x1NjA5YVx1NjA4NFx1NjA5Ylx1'@; put 'NjA5Nlx1NjA5N1x1NjA5Mlx1NjBhN1x1NjA4Ylx1NjBlMVx1NjBiOFx1NjBlMFx1NjBkM1x1NjBiNFx1NWZmMFx1NjBiZFx1NjBjNlx1NjBiNVx1NjBkOFx1NjE0ZFx1NjExNVx1NjEwNlx1NjBmNlx1NjBmN1x1NjEwMFx1NjBmNFx1NjBmYVx1NjEwM1x1NjEyMVx1NjBmYlx1NjBmMVx1NjEw'@; put 'ZFx1NjEwZVx1NjE0N1x1NjEzZVx1NjEyOFx1NjEyN1x1NjE0YVx1NjEzZlx1NjEzY1x1NjEyY1x1NjEzNFx1NjEzZFx1NjE0Mlx1NjE0NFx1NjE3M1x1NjE3N1x1NjE1OFx1NjE1OVx1NjE1YVx1NjE2Ylx1NjE3NFx1NjE2Zlx1NjE2NVx1NjE3MVx1NjE1Zlx1NjE1ZFx1NjE1M1x1NjE3NVx1'@; put 'NjE5OVx1NjE5Nlx1NjE4N1x1NjFhY1x1NjE5NFx1NjE5YVx1NjE4YVx1NjE5MVx1NjFhYlx1NjFhZVx1NjFjY1x1NjFjYVx1NjFjOVx1NjFmN1x1NjFjOFx1NjFjM1x1NjFjNlx1NjFiYVx1NjFjYlx1N2Y3OVx1NjFjZFx1NjFlNlx1NjFlM1x1NjFmNlx1NjFmYVx1NjFmNFx1NjFmZlx1NjFm'@; put 'ZFx1NjFmY1x1NjFmZVx1NjIwMFx1NjIwOFx1NjIwOVx1NjIwZFx1NjIwY1x1NjIxNFx1NjIxYlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1Nl1bc11dPTM5OTM2K3Ms'@; put 'aFszOTkzNitzXT1jWzE1Nl1bc10pO2ZvcihjWzE1N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIzM1x1NjI0MVx1NjI0ZVx1NjI1ZVx1NjI2M1x1NjI1Ylx1NjI2'@; put 'MFx1NjI2OFx1NjI3Y1x1NjI4Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJkNFx1NjI4M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1NjJjYVx1NjJjMlx1NjJjN1x1NjI5Ylx1NjJjOVx1NjMwY1x1'@; put 'NjJlZVx1NjJmMVx1NjMyN1x1NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1NjM0ZFx1NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNiNVx1NjM2Ylx1ZmZmZFx1NjM2OVx1NjNiZVx1NjNlOVx1NjNj'@; put 'MFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNkMlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQwNlx1NjQxM1x1NjQyNlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1NjQ5NVx1NjQ5M1x1NjRhNVx1NjRhOVx1NjQ4OFx1NjRiY1x1'@; put 'NjRkYVx1NjRkMlx1NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRmZFx1NjUxOFx1NjUxY1x1NjUwNVx1NjUyNFx1NjUyM1x1NjUy'@; put 'Ylx1NjUzNFx1NjUzNVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1NjViN1x1NjVjM1x1NjVjNlx1NjVjMVx1NjVjNFx1NjVjY1x1'@; put 'NjVkMlx1NjVkYlx1NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2NFx1NjY2N1x1NjY2OFx1NjY1Zlx1NjY2Mlx1NjY3MFx1NjY4'@; put 'M1x1NjY4OFx1NjY4ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZjOVx1NjZiZVx1NjZiY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1N11b'@; put 'c11dPTQwMTkyK3MsaFs0MDE5MitzXT1jWzE1N11bc10pO2ZvcihjWzE1OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjZjNFx1NjZiOFx1NjZkNlx1NjZkYVx1NjZlMFx1NjYzZlx1NjZlNlx1NjZlOVx1NjZmMFx1NjZmNVx1NjZm'@; put 'N1x1NjcwZlx1NjcxNlx1NjcxZVx1NjcyNlx1NjcyN1x1OTczOFx1NjcyZVx1NjczZlx1NjczNlx1Njc0MVx1NjczOFx1NjczN1x1Njc0Nlx1Njc1ZVx1Njc2MFx1Njc1OVx1Njc2M1x1Njc2NFx1Njc4OVx1Njc3MFx1NjdhOVx1Njc3Y1x1Njc2YVx1Njc4Y1x1Njc4Ylx1NjdhNlx1NjdhMVx1'@; put 'Njc4NVx1NjdiN1x1NjdlZlx1NjdiNFx1NjdlY1x1NjdiM1x1NjdlOVx1NjdiOFx1NjdlNFx1NjdkZVx1NjdkZFx1NjdlMlx1NjdlZVx1NjdiOVx1NjdjZVx1NjdjNlx1NjdlN1x1NmE5Y1x1NjgxZVx1Njg0Nlx1NjgyOVx1Njg0MFx1Njg0ZFx1NjgzMlx1Njg0ZVx1ZmZmZFx1NjhiM1x1Njgy'@; put 'Ylx1Njg1OVx1Njg2M1x1Njg3N1x1Njg3Zlx1Njg5Zlx1Njg4Zlx1NjhhZFx1Njg5NFx1Njg5ZFx1Njg5Ylx1Njg4M1x1NmFhZVx1NjhiOVx1Njg3NFx1NjhiNVx1NjhhMFx1NjhiYVx1NjkwZlx1Njg4ZFx1Njg3ZVx1NjkwMVx1NjhjYVx1NjkwOFx1NjhkOFx1NjkyMlx1NjkyNlx1NjhlMVx1'@; put 'NjkwY1x1NjhjZFx1NjhkNFx1NjhlN1x1NjhkNVx1NjkzNlx1NjkxMlx1NjkwNFx1NjhkN1x1NjhlM1x1NjkyNVx1NjhmOVx1NjhlMFx1NjhlZlx1NjkyOFx1NjkyYVx1NjkxYVx1NjkyM1x1NjkyMVx1NjhjNlx1Njk3OVx1Njk3N1x1Njk1Y1x1Njk3OFx1Njk2Ylx1Njk1NFx1Njk3ZVx1Njk2'@; put 'ZVx1NjkzOVx1Njk3NFx1NjkzZFx1Njk1OVx1NjkzMFx1Njk2MVx1Njk1ZVx1Njk1ZFx1Njk4MVx1Njk2YVx1NjliMlx1NjlhZVx1NjlkMFx1NjliZlx1NjljMVx1NjlkM1x1NjliZVx1NjljZVx1NWJlOFx1NjljYVx1NjlkZFx1NjliYlx1NjljM1x1NjlhN1x1NmEyZVx1Njk5MVx1NjlhMFx1'@; put 'Njk5Y1x1Njk5NVx1NjliNFx1NjlkZVx1NjllOFx1NmEwMlx1NmExYlx1NjlmZlx1NmIwYVx1NjlmOVx1NjlmMlx1NjllN1x1NmEwNVx1NjliMVx1NmExZVx1NjllZFx1NmExNFx1NjllYlx1NmEwYVx1NmExMlx1NmFjMVx1NmEyM1x1NmExM1x1NmE0NFx1NmEwY1x1NmE3Mlx1NmEzNlx1NmE3'@; put 'OFx1NmE0N1x1NmE2Mlx1NmE1OVx1NmE2Nlx1NmE0OFx1NmEzOFx1NmEyMlx1NmE5MFx1NmE4ZFx1NmFhMFx1NmE4NFx1NmFhMlx1NmFhM1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU4XVtzXS5jaGFyQ29kZUF0KDAp'@; put 'JiYoeVtjWzE1OF1bc11dPTQwNDQ4K3MsaFs0MDQ0OCtzXT1jWzE1OF1bc10pO2ZvcihjWzE1OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE5N1x1ODYxN1x1NmFiYlx1NmFjM1x1NmFjMlx1NmFiOFx1NmFiM1x1NmFhY1x1NmFk'@; put 'ZVx1NmFkMVx1NmFkZlx1NmFhYVx1NmFkYVx1NmFlYVx1NmFmYlx1NmIwNVx1ODYxNlx1NmFmYVx1NmIxMlx1NmIxNlx1OWIzMVx1NmIxZlx1NmIzOFx1NmIzN1x1NzZkY1x1NmIzOVx1OThlZVx1NmI0N1x1NmI0M1x1NmI0OVx1NmI1MFx1NmI1OVx1NmI1NFx1NmI1Ylx1NmI1Zlx1NmI2MVx1'@; put 'NmI3OFx1NmI3OVx1NmI3Zlx1NmI4MFx1NmI4NFx1NmI4M1x1NmI4ZFx1NmI5OFx1NmI5NVx1NmI5ZVx1NmJhNFx1NmJhYVx1NmJhYlx1NmJhZlx1NmJiMlx1NmJiMVx1NmJiM1x1NmJiN1x1NmJiY1x1NmJjNlx1NmJjYlx1NmJkM1x1NmJkZlx1NmJlY1x1NmJlYlx1NmJmM1x1NmJlZlx1ZmZm'@; put 'ZFx1OWViZVx1NmMwOFx1NmMxM1x1NmMxNFx1NmMxYlx1NmMyNFx1NmMyM1x1NmM1ZVx1NmM1NVx1NmM2Mlx1NmM2YVx1NmM4Mlx1NmM4ZFx1NmM5YVx1NmM4MVx1NmM5Ylx1NmM3ZVx1NmM2OFx1NmM3M1x1NmM5Mlx1NmM5MFx1NmNjNFx1NmNmMVx1NmNkM1x1NmNiZFx1NmNkN1x1NmNjNVx1'@; put 'NmNkZFx1NmNhZVx1NmNiMVx1NmNiZVx1NmNiYVx1NmNkYlx1NmNlZlx1NmNkOVx1NmNlYVx1NmQxZlx1ODg0ZFx1NmQzNlx1NmQyYlx1NmQzZFx1NmQzOFx1NmQxOVx1NmQzNVx1NmQzM1x1NmQxMlx1NmQwY1x1NmQ2M1x1NmQ5M1x1NmQ2NFx1NmQ1YVx1NmQ3OVx1NmQ1OVx1NmQ4ZVx1NmQ5'@; put 'NVx1NmZlNFx1NmQ4NVx1NmRmOVx1NmUxNVx1NmUwYVx1NmRiNVx1NmRjN1x1NmRlNlx1NmRiOFx1NmRjNlx1NmRlY1x1NmRkZVx1NmRjY1x1NmRlOFx1NmRkMlx1NmRjNVx1NmRmYVx1NmRkOVx1NmRlNFx1NmRkNVx1NmRlYVx1NmRlZVx1NmUyZFx1NmU2ZVx1NmUyZVx1NmUxOVx1NmU3Mlx1'@; put 'NmU1Zlx1NmUzZVx1NmUyM1x1NmU2Ylx1NmUyYlx1NmU3Nlx1NmU0ZFx1NmUxZlx1NmU0M1x1NmUzYVx1NmU0ZVx1NmUyNFx1NmVmZlx1NmUxZFx1NmUzOFx1NmU4Mlx1NmVhYVx1NmU5OFx1NmVjOVx1NmViN1x1NmVkM1x1NmViZFx1NmVhZlx1NmVjNFx1NmViMlx1NmVkNFx1NmVkNVx1NmU4'@; put 'Zlx1NmVhNVx1NmVjMlx1NmU5Zlx1NmY0MVx1NmYxMVx1NzA0Y1x1NmVlY1x1NmVmOFx1NmVmZVx1NmYzZlx1NmVmMlx1NmYzMVx1NmVlZlx1NmYzMlx1NmVjY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU5XVtzXS5j'@; put 'aGFyQ29kZUF0KDApJiYoeVtjWzE1OV1bc11dPTQwNzA0K3MsaFs0MDcwNCtzXT1jWzE1OV1bc10pO2ZvcihjWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmYzZVx1NmYxM1x1NmVmN1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4'@; put 'MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1NmY4Mlx1NmY3Y1x1NmY1OFx1NmY4ZVx1NmY5MVx1NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1NmZjNlx1NmZhYVx1NmZkZlx1NmZkNVx1NmZlY1x1NmZkNFx1NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1'@; put 'NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAwZlx1NmZmZVx1NzAxYlx1NzAxYVx1NmY3NFx1NzAxZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2M1x1NzA5OVx1NzA5Mlx1NzBhZlx1NzBmMVx1NzBhY1x1NzBiOFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBj'@; put 'Ylx1NzBkZFx1ZmZmZFx1NzBkOVx1NzEwOVx1NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1NzE1NVx1NzE4OFx1NzE2Nlx1NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1NzE5NVx1NzFhOFx1NzFhY1x1NzFkN1x1NzFiOVx1NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1'@; put 'NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFmNVx1NzFmY1x1NzFmOVx1NzFmZlx1NzIwZFx1NzIxMFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIzYlx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1NzI0Ylx1NzI1OFx1NzI3NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4'@; put 'N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1NzJjNFx1NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMxNlx1NzMxZFx1NzMzNFx1NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1'@; put 'NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3NVx1NzM3Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNlNVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1NzQ2Zlx1NzQyNVx1NzNmOFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQz'@; put 'Zlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1NzQ3Nlx1NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1NzNmMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyNF0ubGVuZ3RoOysrcyk2NTUzMyE9'@; put 'PWNbMjI0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyNF1bc11dPTU3MzQ0K3MsaFs1NzM0NCtzXT1jWzIyNF1bc10pO2ZvcihjWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRlMFx1NzRlM1x1NzRlN1x1NzRlOVx1NzRl'@; put 'ZVx1NzRmMlx1NzRmMFx1NzRmMVx1NzRmOFx1NzRmN1x1NzUwNFx1NzUwM1x1NzUwNVx1NzUwY1x1NzUwZVx1NzUwZFx1NzUxNVx1NzUxM1x1NzUxZVx1NzUyNlx1NzUyY1x1NzUzY1x1NzU0NFx1NzU0ZFx1NzU0YVx1NzU0OVx1NzU1Ylx1NzU0Nlx1NzU1YVx1NzU2OVx1NzU2NFx1NzU2N1x1'@; put 'NzU2Ylx1NzU2ZFx1NzU3OFx1NzU3Nlx1NzU4Nlx1NzU4N1x1NzU3NFx1NzU4YVx1NzU4OVx1NzU4Mlx1NzU5NFx1NzU5YVx1NzU5ZFx1NzVhNVx1NzVhM1x1NzVjMlx1NzViM1x1NzVjM1x1NzViNVx1NzViZFx1NzViOFx1NzViY1x1NzViMVx1NzVjZFx1NzVjYVx1NzVkMlx1NzVkOVx1NzVl'@; put 'M1x1NzVkZVx1NzVmZVx1NzVmZlx1ZmZmZFx1NzVmY1x1NzYwMVx1NzVmMFx1NzVmYVx1NzVmMlx1NzVmM1x1NzYwYlx1NzYwZFx1NzYwOVx1NzYxZlx1NzYyN1x1NzYyMFx1NzYyMVx1NzYyMlx1NzYyNFx1NzYzNFx1NzYzMFx1NzYzYlx1NzY0N1x1NzY0OFx1NzY0Nlx1NzY1Y1x1NzY1OFx1'@; put 'NzY2MVx1NzY2Mlx1NzY2OFx1NzY2OVx1NzY2YVx1NzY2N1x1NzY2Y1x1NzY3MFx1NzY3Mlx1NzY3Nlx1NzY3OFx1NzY3Y1x1NzY4MFx1NzY4M1x1NzY4OFx1NzY4Ylx1NzY4ZVx1NzY5Nlx1NzY5M1x1NzY5OVx1NzY5YVx1NzZiMFx1NzZiNFx1NzZiOFx1NzZiOVx1NzZiYVx1NzZjMlx1NzZj'@; put 'ZFx1NzZkNlx1NzZkMlx1NzZkZVx1NzZlMVx1NzZlNVx1NzZlN1x1NzZlYVx1ODYyZlx1NzZmYlx1NzcwOFx1NzcwN1x1NzcwNFx1NzcyOVx1NzcyNFx1NzcxZVx1NzcyNVx1NzcyNlx1NzcxYlx1NzczN1x1NzczOFx1Nzc0N1x1Nzc1YVx1Nzc2OFx1Nzc2Ylx1Nzc1Ylx1Nzc2NVx1Nzc3Zlx1'@; put 'Nzc3ZVx1Nzc3OVx1Nzc4ZVx1Nzc4Ylx1Nzc5MVx1NzdhMFx1Nzc5ZVx1NzdiMFx1NzdiNlx1NzdiOVx1NzdiZlx1NzdiY1x1NzdiZFx1NzdiYlx1NzdjN1x1NzdjZFx1NzdkN1x1NzdkYVx1NzdkY1x1NzdlM1x1NzdlZVx1NzdmY1x1NzgwY1x1NzgxMlx1NzkyNlx1NzgyMFx1NzkyYVx1Nzg0'@; put 'NVx1Nzg4ZVx1Nzg3NFx1Nzg4Nlx1Nzg3Y1x1Nzg5YVx1Nzg4Y1x1NzhhM1x1NzhiNVx1NzhhYVx1NzhhZlx1NzhkMVx1NzhjNlx1NzhjYlx1NzhkNFx1NzhiZVx1NzhiY1x1NzhjNVx1NzhjYVx1NzhlY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyNV0ubGVuZ3Ro'@; put 'Oysrcyk2NTUzMyE9PWNbMjI1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyNV1bc11dPTU3NjAwK3MsaFs1NzYwMCtzXT1jWzIyNV1bc10pO2ZvcihjWzIyNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzhlN1x1NzhkYVx1Nzhm'@; put 'ZFx1NzhmNFx1NzkwN1x1NzkxMlx1NzkxMVx1NzkxOVx1NzkyY1x1NzkyYlx1Nzk0MFx1Nzk2MFx1Nzk1N1x1Nzk1Zlx1Nzk1YVx1Nzk1NVx1Nzk1M1x1Nzk3YVx1Nzk3Zlx1Nzk4YVx1Nzk5ZFx1NzlhN1x1OWY0Ylx1NzlhYVx1NzlhZVx1NzliM1x1NzliOVx1NzliYVx1NzljOVx1NzlkNVx1'@; put 'NzllN1x1NzllY1x1NzllMVx1NzllM1x1N2EwOFx1N2EwZFx1N2ExOFx1N2ExOVx1N2EyMFx1N2ExZlx1Nzk4MFx1N2EzMVx1N2EzYlx1N2EzZVx1N2EzN1x1N2E0M1x1N2E1N1x1N2E0OVx1N2E2MVx1N2E2Mlx1N2E2OVx1OWY5ZFx1N2E3MFx1N2E3OVx1N2E3ZFx1N2E4OFx1N2E5N1x1N2E5'@; put 'NVx1N2E5OFx1N2E5Nlx1N2FhOVx1N2FjOFx1N2FiMFx1ZmZmZFx1N2FiNlx1N2FjNVx1N2FjNFx1N2FiZlx1OTA4M1x1N2FjN1x1N2FjYVx1N2FjZFx1N2FjZlx1N2FkNVx1N2FkM1x1N2FkOVx1N2FkYVx1N2FkZFx1N2FlMVx1N2FlMlx1N2FlNlx1N2FlZFx1N2FmMFx1N2IwMlx1N2IwZlx1'@; put 'N2IwYVx1N2IwNlx1N2IzM1x1N2IxOFx1N2IxOVx1N2IxZVx1N2IzNVx1N2IyOFx1N2IzNlx1N2I1MFx1N2I3YVx1N2IwNFx1N2I0ZFx1N2IwYlx1N2I0Y1x1N2I0NVx1N2I3NVx1N2I2NVx1N2I3NFx1N2I2N1x1N2I3MFx1N2I3MVx1N2I2Y1x1N2I2ZVx1N2I5ZFx1N2I5OFx1N2I5Zlx1N2I4'@; put 'ZFx1N2I5Y1x1N2I5YVx1N2I4Ylx1N2I5Mlx1N2I4Zlx1N2I1ZFx1N2I5OVx1N2JjYlx1N2JjMVx1N2JjY1x1N2JjZlx1N2JiNFx1N2JjNlx1N2JkZFx1N2JlOVx1N2MxMVx1N2MxNFx1N2JlNlx1N2JlNVx1N2M2MFx1N2MwMFx1N2MwN1x1N2MxM1x1N2JmM1x1N2JmN1x1N2MxN1x1N2MwZFx1'@; put 'N2JmNlx1N2MyM1x1N2MyN1x1N2MyYVx1N2MxZlx1N2MzN1x1N2MyYlx1N2MzZFx1N2M0Y1x1N2M0M1x1N2M1NFx1N2M0Zlx1N2M0MFx1N2M1MFx1N2M1OFx1N2M1Zlx1N2M2NFx1N2M1Nlx1N2M2NVx1N2M2Y1x1N2M3NVx1N2M4M1x1N2M5MFx1N2NhNFx1N2NhZFx1N2NhMlx1N2NhYlx1N2Nh'@; put 'MVx1N2NhOFx1N2NiM1x1N2NiMlx1N2NiMVx1N2NhZVx1N2NiOVx1N2NiZFx1N2NjMFx1N2NjNVx1N2NjMlx1N2NkOFx1N2NkMlx1N2NkY1x1N2NlMlx1OWIzYlx1N2NlZlx1N2NmMlx1N2NmNFx1N2NmNlx1N2NmYVx1N2QwNlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1j'@; put 'WzIyNl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyNl1bc11dPTU3ODU2K3MsaFs1Nzg1NitzXT1jWzIyNl1bc10pO2ZvcihjWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Qw'@; put 'Mlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2QzZlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2M1x1N2Q5M1x1N2Q4OVx1N2Q1Ylx1N2Q4Zlx1N2Q3ZFx1N2Q5Ylx1N2RiYVx1N2RhZVx1N2RhM1x1'@; put 'N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1N2UwNVx1N2UwYVx1N2UyM1x1N2UyMVx1N2UxMlx1N2UzMVx1N2UxZlx1N2UwOVx1N2UwYlx1N2Uy'@; put 'Mlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzN1x1ZmZmZFx1N2UzMlx1N2UzYVx1N2U2N1x1N2U1ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2OVx1N2U3Y1x1N2U3Ylx1N2U4M1x1N2RkNVx1N2U3ZFx1OGZhZVx1N2U3Zlx1N2U4OFx1'@; put 'N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYVx1N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1OFx1N2Y1Zlx1N2Y2MFx1N2Y2OFx1N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4'@; put 'Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2ZiMlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1N2ZkNVx1N2ZkNFx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1'@; put 'OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3M1x1ODA3Mlx1ODA3MFx1ODA3Nlx1ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4'@; put 'NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBhY1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBkZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBlZlx1ODBmMVx1ODExYlx1ODEyOVx1ODEyM1x1ODEyZlx1ODE0Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQo'@; put 'IiIpLHM9MDtzIT1jWzIyN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyN11bc11dPTU4MTEyK3MsaFs1ODExMitzXT1jWzIyN11bc10pO2ZvcihjWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1OTY4Ylx1ODE0Nlx1ODEzZVx1ODE1M1x1ODE1MVx1ODBmY1x1ODE3MVx1ODE2ZVx1ODE2NVx1ODE2Nlx1ODE3NFx1ODE4M1x1ODE4OFx1ODE4YVx1ODE4MFx1ODE4Mlx1ODFhMFx1ODE5NVx1ODFhNFx1ODFhM1x1ODE1Zlx1ODE5M1x1ODFhOVx1ODFiMFx1ODFiNVx1ODFiZVx1'@; put 'ODFiOFx1ODFiZFx1ODFjMFx1ODFjMlx1ODFiYVx1ODFjOVx1ODFjZFx1ODFkMVx1ODFkOVx1ODFkOFx1ODFjOFx1ODFkYVx1ODFkZlx1ODFlMFx1ODFlN1x1ODFmYVx1ODFmYlx1ODFmZVx1ODIwMVx1ODIwMlx1ODIwNVx1ODIwN1x1ODIwYVx1ODIwZFx1ODIxMFx1ODIxNlx1ODIyOVx1ODIy'@; put 'Ylx1ODIzOFx1ODIzM1x1ODI0MFx1ODI1OVx1ODI1OFx1ODI1ZFx1ODI1YVx1ODI1Zlx1ODI2NFx1ZmZmZFx1ODI2Mlx1ODI2OFx1ODI2YVx1ODI2Ylx1ODIyZVx1ODI3MVx1ODI3N1x1ODI3OFx1ODI3ZVx1ODI4ZFx1ODI5Mlx1ODJhYlx1ODI5Zlx1ODJiYlx1ODJhY1x1ODJlMVx1ODJlM1x1'@; put 'ODJkZlx1ODJkMlx1ODJmNFx1ODJmM1x1ODJmYVx1ODM5M1x1ODMwM1x1ODJmYlx1ODJmOVx1ODJkZVx1ODMwNlx1ODJkY1x1ODMwOVx1ODJkOVx1ODMzNVx1ODMzNFx1ODMxNlx1ODMzMlx1ODMzMVx1ODM0MFx1ODMzOVx1ODM1MFx1ODM0NVx1ODMyZlx1ODMyYlx1ODMxN1x1ODMxOFx1ODM4'@; put 'NVx1ODM5YVx1ODNhYVx1ODM5Zlx1ODNhMlx1ODM5Nlx1ODMyM1x1ODM4ZVx1ODM4N1x1ODM4YVx1ODM3Y1x1ODNiNVx1ODM3M1x1ODM3NVx1ODNhMFx1ODM4OVx1ODNhOFx1ODNmNFx1ODQxM1x1ODNlYlx1ODNjZVx1ODNmZFx1ODQwM1x1ODNkOFx1ODQwYlx1ODNjMVx1ODNmN1x1ODQwN1x1'@; put 'ODNlMFx1ODNmMlx1ODQwZFx1ODQyMlx1ODQyMFx1ODNiZFx1ODQzOFx1ODUwNlx1ODNmYlx1ODQ2ZFx1ODQyYVx1ODQzY1x1ODU1YVx1ODQ4NFx1ODQ3N1x1ODQ2Ylx1ODRhZFx1ODQ2ZVx1ODQ4Mlx1ODQ2OVx1ODQ0Nlx1ODQyY1x1ODQ2Zlx1ODQ3OVx1ODQzNVx1ODRjYVx1ODQ2Mlx1ODRi'@; put 'OVx1ODRiZlx1ODQ5Zlx1ODRkOVx1ODRjZFx1ODRiYlx1ODRkYVx1ODRkMFx1ODRjMVx1ODRjNlx1ODRkNlx1ODRhMVx1ODUyMVx1ODRmZlx1ODRmNFx1ODUxN1x1ODUxOFx1ODUyY1x1ODUxZlx1ODUxNVx1ODUxNFx1ODRmY1x1ODU0MFx1ODU2M1x1ODU1OFx1ODU0OFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyOF1bc11dPTU4MzY4K3MsaFs1ODM2OCtzXT1jWzIyOF1bc10pO2ZvcihjWzIyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU0MVx1ODYwMlx1ODU0Ylx1ODU1NVx1ODU4MFx1ODVhNFx1ODU4OFx1ODU5MVx1ODU4YVx1ODVhOFx1ODU2ZFx1ODU5NFx1ODU5Ylx1ODVlYVx1ODU4N1x1ODU5Y1x1ODU3N1x1ODU3ZVx1ODU5MFx1ODVjOVx1ODViYVx1ODVjZlx1ODViOVx1ODVkMFx1'@; put 'ODVkNVx1ODVkZFx1ODVlNVx1ODVkY1x1ODVmOVx1ODYwYVx1ODYxM1x1ODYwYlx1ODVmZVx1ODVmYVx1ODYwNlx1ODYyMlx1ODYxYVx1ODYzMFx1ODYzZlx1ODY0ZFx1NGU1NVx1ODY1NFx1ODY1Zlx1ODY2N1x1ODY3MVx1ODY5M1x1ODZhM1x1ODZhOVx1ODZhYVx1ODY4Ylx1ODY4Y1x1ODZi'@; put 'Nlx1ODZhZlx1ODZjNFx1ODZjNlx1ODZiMFx1ODZjOVx1ODgyM1x1ODZhYlx1ODZkNFx1ODZkZVx1ODZlOVx1ODZlY1x1ZmZmZFx1ODZkZlx1ODZkYlx1ODZlZlx1ODcxMlx1ODcwNlx1ODcwOFx1ODcwMFx1ODcwM1x1ODZmYlx1ODcxMVx1ODcwOVx1ODcwZFx1ODZmOVx1ODcwYVx1ODczNFx1'@; put 'ODczZlx1ODczN1x1ODczYlx1ODcyNVx1ODcyOVx1ODcxYVx1ODc2MFx1ODc1Zlx1ODc3OFx1ODc0Y1x1ODc0ZVx1ODc3NFx1ODc1N1x1ODc2OFx1ODc2ZVx1ODc1OVx1ODc1M1x1ODc2M1x1ODc2YVx1ODgwNVx1ODdhMlx1ODc5Zlx1ODc4Mlx1ODdhZlx1ODdjYlx1ODdiZFx1ODdjMFx1ODdk'@; put 'MFx1OTZkNlx1ODdhYlx1ODdjNFx1ODdiM1x1ODdjN1x1ODdjNlx1ODdiYlx1ODdlZlx1ODdmMlx1ODdlMFx1ODgwZlx1ODgwZFx1ODdmZVx1ODdmNlx1ODdmN1x1ODgwZVx1ODdkMlx1ODgxMVx1ODgxNlx1ODgxNVx1ODgyMlx1ODgyMVx1ODgzMVx1ODgzNlx1ODgzOVx1ODgyN1x1ODgzYlx1'@; put 'ODg0NFx1ODg0Mlx1ODg1Mlx1ODg1OVx1ODg1ZVx1ODg2Mlx1ODg2Ylx1ODg4MVx1ODg3ZVx1ODg5ZVx1ODg3NVx1ODg3ZFx1ODhiNVx1ODg3Mlx1ODg4Mlx1ODg5N1x1ODg5Mlx1ODhhZVx1ODg5OVx1ODhhMlx1ODg4ZFx1ODhhNFx1ODhiMFx1ODhiZlx1ODhiMVx1ODhjM1x1ODhjNFx1ODhk'@; put 'NFx1ODhkOFx1ODhkOVx1ODhkZFx1ODhmOVx1ODkwMlx1ODhmY1x1ODhmNFx1ODhlOFx1ODhmMlx1ODkwNFx1ODkwY1x1ODkwYVx1ODkxM1x1ODk0M1x1ODkxZVx1ODkyNVx1ODkyYVx1ODkyYlx1ODk0MVx1ODk0NFx1ODkzYlx1ODkzNlx1ODkzOFx1ODk0Y1x1ODkxZFx1ODk2MFx1ODk1ZVx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyOV1bc11dPTU4NjI0K3MsaFs1ODYyNCtzXT1jWzIyOV1bc10pO2ZvcihjWzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODk2Nlx1ODk2NFx1ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlhOVx1ODlhNlx1ODlhY1x1ODlhZlx1ODliMlx1ODliYVx1ODliZFx1ODliZlx1'@; put 'ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1ODlmNFx1ODlmOFx1OGEwM1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1OGE3Y1x1OGE2ZFx1OGE2Y1x1OGE2Mlx1OGE4NVx1OGE4Mlx1OGE4NFx1OGFh'@; put 'OFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5YVx1OGFhM1x1OGFjNFx1OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlN1x1ZmZmZFx1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1OGFmN1x1OGFkZVx1OGFkYlx1OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1OGIxNlx1'@; put 'OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1OGIyYlx1OGIzZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2Ylx1OGI1Zlx1OGI2Y1x1OGI2Zlx1OGI3NFx1OGI3ZFx1OGI4MFx1OGI4Y1x1OGI4ZVx1OGI5Mlx1OGI5'@; put 'M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMzYVx1OGM0MVx1OGMzZlx1OGM0OFx1OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1OGM4ZFx1OGM4ZVx1OGM5NFx1OGM3Y1x1OGM5OFx1NjIxZFx1OGNhZFx1OGNhYVx1'@; put 'OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1OGNiNlx1OGNjOFx1OGNjMVx1OGNlNFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQxMFx1OWY0ZVx1OGQxM1x1OGNjZFx1OGQxNFx1OGQxNlx1OGQ2N1x1OGQ2ZFx1OGQ3'@; put 'MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRjMlx1OGRiZVx1OGRiYVx1OGRjZlx1OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1OGRmZlx1OGUxZFx1OGUxZVx1OGUxMFx1OGUxZlx1OGU0Mlx1OGUzNVx1OGUzMFx1'@; put 'OGUzNFx1OGU0YVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzMF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzMF1bc11dPTU4ODgwK3MsaFs1ODg4MCtzXT1jWzIzMF1bc10pO2ZvcihjWzIzMV09Ilx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGU0N1x1OGU0OVx1OGU0Y1x1OGU1MFx1OGU0OFx1OGU1OVx1OGU2NFx1OGU2MFx1OGUyYVx1OGU2M1x1OGU1NVx1OGU3Nlx1OGU3Mlx1OGU3Y1x1OGU4MVx1OGU4N1x1OGU4NVx1OGU4NFx1OGU4Ylx1OGU4YVx1'@; put 'OGU5M1x1OGU5MVx1OGU5NFx1OGU5OVx1OGVhYVx1OGVhMVx1OGVhY1x1OGViMFx1OGVjNlx1OGViMVx1OGViZVx1OGVjNVx1OGVjOFx1OGVjYlx1OGVkYlx1OGVlM1x1OGVmY1x1OGVmYlx1OGVlYlx1OGVmZVx1OGYwYVx1OGYwNVx1OGYxNVx1OGYxMlx1OGYxOVx1OGYxM1x1OGYxY1x1OGYx'@; put 'Zlx1OGYxYlx1OGYwY1x1OGYyNlx1OGYzM1x1OGYzYlx1OGYzOVx1OGY0NVx1OGY0Mlx1OGYzZVx1OGY0Y1x1OGY0OVx1OGY0Nlx1OGY0ZVx1OGY1N1x1OGY1Y1x1ZmZmZFx1OGY2Mlx1OGY2M1x1OGY2NFx1OGY5Y1x1OGY5Zlx1OGZhM1x1OGZhZFx1OGZhZlx1OGZiN1x1OGZkYVx1OGZlNVx1'@; put 'OGZlMlx1OGZlYVx1OGZlZlx1OTA4N1x1OGZmNFx1OTAwNVx1OGZmOVx1OGZmYVx1OTAxMVx1OTAxNVx1OTAyMVx1OTAwZFx1OTAxZVx1OTAxNlx1OTAwYlx1OTAyN1x1OTAzNlx1OTAzNVx1OTAzOVx1OGZmOFx1OTA0Zlx1OTA1MFx1OTA1MVx1OTA1Mlx1OTAwZVx1OTA0OVx1OTAzZVx1OTA1'@; put 'Nlx1OTA1OFx1OTA1ZVx1OTA2OFx1OTA2Zlx1OTA3Nlx1OTZhOFx1OTA3Mlx1OTA4Mlx1OTA3ZFx1OTA4MVx1OTA4MFx1OTA4YVx1OTA4OVx1OTA4Zlx1OTBhOFx1OTBhZlx1OTBiMVx1OTBiNVx1OTBlMlx1OTBlNFx1NjI0OFx1OTBkYlx1OTEwMlx1OTExMlx1OTExOVx1OTEzMlx1OTEzMFx1'@; put 'OTE0YVx1OTE1Nlx1OTE1OFx1OTE2M1x1OTE2NVx1OTE2OVx1OTE3M1x1OTE3Mlx1OTE4Ylx1OTE4OVx1OTE4Mlx1OTFhMlx1OTFhYlx1OTFhZlx1OTFhYVx1OTFiNVx1OTFiNFx1OTFiYVx1OTFjMFx1OTFjMVx1OTFjOVx1OTFjYlx1OTFkMFx1OTFkNlx1OTFkZlx1OTFlMVx1OTFkYlx1OTFm'@; put 'Y1x1OTFmNVx1OTFmNlx1OTIxZVx1OTFmZlx1OTIxNFx1OTIyY1x1OTIxNVx1OTIxMVx1OTI1ZVx1OTI1N1x1OTI0NVx1OTI0OVx1OTI2NFx1OTI0OFx1OTI5NVx1OTIzZlx1OTI0Ylx1OTI1MFx1OTI5Y1x1OTI5Nlx1OTI5M1x1OTI5Ylx1OTI1YVx1OTJjZlx1OTJiOVx1OTJiN1x1OTJlOVx1'@; put 'OTMwZlx1OTJmYVx1OTM0NFx1OTMyZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzMV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzMV1bc11dPTU5MTM2K3MsaFs1OTEzNitzXT1jWzIzMV1bc10pO2ZvcihjWzIzMl09'@; put 'Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTMxOVx1OTMyMlx1OTMxYVx1OTMyM1x1OTMzYVx1OTMzNVx1OTMzYlx1OTM1Y1x1OTM2MFx1OTM3Y1x1OTM2ZVx1OTM1Nlx1OTNiMFx1OTNhY1x1OTNhZFx1OTM5NFx1OTNiOVx1OTNkNlx1'@; put 'OTNkN1x1OTNlOFx1OTNlNVx1OTNkOFx1OTNjM1x1OTNkZFx1OTNkMFx1OTNjOFx1OTNlNFx1OTQxYVx1OTQxNFx1OTQxM1x1OTQwM1x1OTQwN1x1OTQxMFx1OTQzNlx1OTQyYlx1OTQzNVx1OTQyMVx1OTQzYVx1OTQ0MVx1OTQ1Mlx1OTQ0NFx1OTQ1Ylx1OTQ2MFx1OTQ2Mlx1OTQ1ZVx1OTQ2'@; put 'YVx1OTIyOVx1OTQ3MFx1OTQ3NVx1OTQ3N1x1OTQ3ZFx1OTQ1YVx1OTQ3Y1x1OTQ3ZVx1OTQ4MVx1OTQ3Zlx1OTU4Mlx1OTU4N1x1OTU4YVx1OTU5NFx1OTU5Nlx1OTU5OFx1OTU5OVx1ZmZmZFx1OTVhMFx1OTVhOFx1OTVhN1x1OTVhZFx1OTViY1x1OTViYlx1OTViOVx1OTViZVx1OTVjYVx1'@; put 'NmZmNlx1OTVjM1x1OTVjZFx1OTVjY1x1OTVkNVx1OTVkNFx1OTVkNlx1OTVkY1x1OTVlMVx1OTVlNVx1OTVlMlx1OTYyMVx1OTYyOFx1OTYyZVx1OTYyZlx1OTY0Mlx1OTY0Y1x1OTY0Zlx1OTY0Ylx1OTY3N1x1OTY1Y1x1OTY1ZVx1OTY1ZFx1OTY1Zlx1OTY2Nlx1OTY3Mlx1OTY2Y1x1OTY4'@; put 'ZFx1OTY5OFx1OTY5NVx1OTY5N1x1OTZhYVx1OTZhN1x1OTZiMVx1OTZiMlx1OTZiMFx1OTZiNFx1OTZiNlx1OTZiOFx1OTZiOVx1OTZjZVx1OTZjYlx1OTZjOVx1OTZjZFx1ODk0ZFx1OTZkY1x1OTcwZFx1OTZkNVx1OTZmOVx1OTcwNFx1OTcwNlx1OTcwOFx1OTcxM1x1OTcwZVx1OTcxMVx1'@; put 'OTcwZlx1OTcxNlx1OTcxOVx1OTcyNFx1OTcyYVx1OTczMFx1OTczOVx1OTczZFx1OTczZVx1OTc0NFx1OTc0Nlx1OTc0OFx1OTc0Mlx1OTc0OVx1OTc1Y1x1OTc2MFx1OTc2NFx1OTc2Nlx1OTc2OFx1NTJkMlx1OTc2Ylx1OTc3MVx1OTc3OVx1OTc4NVx1OTc3Y1x1OTc4MVx1OTc3YVx1OTc4'@; put 'Nlx1OTc4Ylx1OTc4Zlx1OTc5MFx1OTc5Y1x1OTdhOFx1OTdhNlx1OTdhM1x1OTdiM1x1OTdiNFx1OTdjM1x1OTdjNlx1OTdjOFx1OTdjYlx1OTdkY1x1OTdlZFx1OWY0Zlx1OTdmMlx1N2FkZlx1OTdmNlx1OTdmNVx1OTgwZlx1OTgwY1x1OTgzOFx1OTgyNFx1OTgyMVx1OTgzN1x1OTgzZFx1'@; put 'OTg0Nlx1OTg0Zlx1OTg0Ylx1OTg2Ylx1OTg2Zlx1OTg3MFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzMl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzMl1bc11dPTU5MzkyK3MsaFs1OTM5MitzXT1jWzIzMl1bc10p'@; put 'O2ZvcihjWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg3MVx1OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1OThjM1x1OThjNlx1OThlOVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1'@; put 'OTkxOFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTkyMFx1OTkyY1x1OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5N1x1OTk5OFx1OTlhNVx1OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlk'@; put 'ZFx1OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1OTlmMlx1OTlmYlx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0M1x1ZmZmZFx1OWEzZVx1OWE1NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2Mlx1'@; put 'OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFiMFx1OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFkZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFlYlx1OWFlZVx1OWFmNFx1OWFmMVx1OWFmN1x1OWFmYlx1OWIwNlx1OWIxOFx1OWIx'@; put 'YVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1OWI5M1x1OWI4M1x1OWI5MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJhOFx1'@; put 'OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJjNlx1OWJjZlx1OWJkMVx1OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJkNFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMwOVx1OWMxM1x1OWMwY1x1OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1OWMy'@; put 'ZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1OWMzMFx1OWM0N1x1OWMzMlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1OWNlYlx1OWQwM1x1OWQwNlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQxZlx1'@; put 'OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQzZlx1OWQzZVx1OWQ0Nlx1OWQ0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzM10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzM11bc11dPTU5NjQ4K3MsaFs1OTY0OCtz'@; put 'XT1jWzIzM11bc10pO2ZvcihjWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQ1ZFx1OWQ1ZVx1OWQ2NFx1OWQ1MVx1OWQ1MFx1OWQ1OVx1OWQ3Mlx1OWQ4OVx1OWQ4N1x1OWRhYlx1OWQ2Zlx1OWQ3YVx1OWQ5YVx1OWRhNFx1'@; put 'OWRhOVx1OWRiMlx1OWRjNFx1OWRjMVx1OWRiYlx1OWRiOFx1OWRiYVx1OWRjNlx1OWRjZlx1OWRjMlx1OWRkOVx1OWRkM1x1OWRmOFx1OWRlNlx1OWRlZFx1OWRlZlx1OWRmZFx1OWUxYVx1OWUxYlx1OWUxZVx1OWU3NVx1OWU3OVx1OWU3ZFx1OWU4MVx1OWU4OFx1OWU4Ylx1OWU4Y1x1OWU5'@; put 'Mlx1OWU5NVx1OWU5MVx1OWU5ZFx1OWVhNVx1OWVhOVx1OWViOFx1OWVhYVx1OWVhZFx1OTc2MVx1OWVjY1x1OWVjZVx1OWVjZlx1OWVkMFx1OWVkNFx1OWVkY1x1OWVkZVx1OWVkZFx1OWVlMFx1OWVlNVx1OWVlOFx1OWVlZlx1ZmZmZFx1OWVmNFx1OWVmNlx1OWVmN1x1OWVmOVx1OWVmYlx1'@; put 'OWVmY1x1OWVmZFx1OWYwN1x1OWYwOFx1NzZiN1x1OWYxNVx1OWYyMVx1OWYyY1x1OWYzZVx1OWY0YVx1OWY1Mlx1OWY1NFx1OWY2M1x1OWY1Zlx1OWY2MFx1OWY2MVx1OWY2Nlx1OWY2N1x1OWY2Y1x1OWY2YVx1OWY3N1x1OWY3Mlx1OWY3Nlx1OWY5NVx1OWY5Y1x1OWZhMFx1NTgyZlx1Njlj'@; put 'N1x1OTA1OVx1NzQ2NFx1NTFkY1x1NzE5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzNF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzNF1bc11dPTU5OTA0'@; put 'K3MsaFs1OTkwNCtzXT1jWzIzNF1bc10pO2ZvcihjWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U4YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYzMVx1NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1'@; put 'NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1NGY5YVx1NGY5NFx1NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YVx1NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIx'@; put 'NVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3Mlx1NTM5M1x1NTNiMlx1NTNkZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRmZlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1NTdjN1x1ZmEwZlx1ZmZmZFx1ZmExMFx1NTg5ZVx1NThiMlx1'@; put 'NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1NzUyZlx1NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRiOVx1NWRkMFx1NWYyMVx1NWYzNFx1NWY2N1x1NWZi'@; put 'N1x1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjExMVx1NjEzN1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNmNVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYzYlx1NjYwOVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1'@; put 'NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1NjcwZVx1ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1NjllMlx1NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3'@; put 'ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQwNFx1NmQ4N1x1NmQ2Zlx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmViZlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1'@; put 'NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1NzFmZVx1NzJiMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIz'@; put 'N11bc11dPTYwNjcyK3MsaFs2MDY3MitzXT1jWzIzN11bc10pO2ZvcihjWzIzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1'@; put 'NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmExYVx1Nzk5NFx1ZmEx'@; put 'Ylx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ZmZmZFx1ODU2Ylx1'@; put 'ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTEx'@; put 'NVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1'@; put 'OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0'@; put 'M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMVx1ZmZmZFx1ZmZmZFx1'@; put 'MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM4XVtzXS5jaGFyQ29kZUF0'@; put 'KDApJiYoeVtjWzIzOF1bc11dPTYwOTI4K3MsaFs2MDkyOCtzXT1jWzIzOF1bc10pO2ZvcihjWzI1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1'@; put 'MjE3OFx1MjE3OVx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1MzIzMVx1MjExNlx1MjEyMVx1MjIzNVx1N2U4YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYz'@; put 'MVx1NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1NGY5YVx1NGY5NFx1NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YVx1'@; put 'ZmZmZFx1NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIxNVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3Mlx1NTM5M1x1NTNiMlx1NTNkZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRmZlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1NTdj'@; put 'N1x1ZmEwZlx1ZmExMFx1NTg5ZVx1NThiMlx1NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1NzUyZlx1NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRiOVx1'@; put 'NWRkMFx1NWYyMVx1NWYzNFx1NWY2N1x1NWZiN1x1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjExMVx1NjEzN1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNmNVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYzYlx1NjYw'@; put 'OVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1NjcwZVx1ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1NjllMlx1'@; put 'NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQwNFx1NmQ4N1x1NmQ2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI1MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjUwXVtz'@; put 'XS5jaGFyQ29kZUF0KDApJiYoeVtjWzI1MF1bc11dPTY0ZTMrcyxoWzY0ZTMrc109Y1syNTBdW3NdKTtmb3IoY1syNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkOTZcdTZkYWNcdTZkY2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZl'@; put 'MzlcdTZlNWNcdTZlMjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcwODVcdTcwYWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjFcdTcyYmVcdTczMjRcdWZhMTZcdTczNzdcdTczYmRcdTczYzlc'@; put 'dTczZDZcdTczZTNcdTczZDJcdTc0MDdcdTczZjVcdTc0MjZcdTc0MmFcdTc0MjlcdTc0MmVcdTc0NjJcdTc0ODlcdTc0OWZcdTc1MDFcdTc1NmZcdTc2ODJcdTc2OWNcdTc2OWVcdTc2OWJcdTc2YTZcdWZhMTdcdTc3NDZcdTUyYWZcdTc4MjFcdTc4NGVcdTc4NjRcdTc4N2FcdTc5MzBcdWZh'@; put 'MThcdWZhMTlcdWZmZmRcdWZhMWFcdTc5OTRcdWZhMWJcdTc5OWJcdTdhZDFcdTdhZTdcdWZhMWNcdTdhZWJcdTdiOWVcdWZhMWRcdTdkNDhcdTdkNWNcdTdkYjdcdTdkYTBcdTdkZDZcdTdlNTJcdTdmNDdcdTdmYTFcdWZhMWVcdTgzMDFcdTgzNjJcdTgzN2ZcdTgzYzdcdTgzZjZcdTg0NDhc'@; put 'dTg0YjRcdTg1NTNcdTg1NTlcdTg1NmJcdWZhMWZcdTg1YjBcdWZhMjBcdWZhMjFcdTg4MDdcdTg4ZjVcdThhMTJcdThhMzdcdThhNzlcdThhYTdcdThhYmVcdThhZGZcdWZhMjJcdThhZjZcdThiNTNcdThiN2ZcdThjZjBcdThjZjRcdThkMTJcdThkNzZcdWZhMjNcdThlY2ZcdWZhMjRcdWZh'@; put 'MjVcdTkwNjdcdTkwZGVcdWZhMjZcdTkxMTVcdTkxMjdcdTkxZGFcdTkxZDdcdTkxZGVcdTkxZWRcdTkxZWVcdTkxZTRcdTkxZTVcdTkyMDZcdTkyMTBcdTkyMGFcdTkyM2FcdTkyNDBcdTkyM2NcdTkyNGVcdTkyNTlcdTkyNTFcdTkyMzlcdTkyNjdcdTkyYTdcdTkyNzdcdTkyNzhcdTkyZTdc'@; put 'dTkyZDdcdTkyZDlcdTkyZDBcdWZhMjdcdTkyZDVcdTkyZTBcdTkyZDNcdTkzMjVcdTkzMjFcdTkyZmJcdWZhMjhcdTkzMWVcdTkyZmZcdTkzMWRcdTkzMDJcdTkzNzBcdTkzNTdcdTkzYTRcdTkzYzZcdTkzZGVcdTkzZjhcdTk0MzFcdTk0NDVcdTk0NDhcdTk1OTJcdWY5ZGNcdWZhMjlcdTk2'@; put 'OWRcdTk2YWZcdTk3MzNcdTk3M2JcdTk3NDNcdTk3NGRcdTk3NGZcdTk3NTFcdTk3NTVcdTk4NTdcdTk4NjVcdWZhMmFcdWZhMmJcdTk5MjdcdWZhMmNcdTk5OWVcdTlhNGVcdTlhZDlcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNTFdLmxlbmd0aDsrK3MpNjU1MzMh'@; put 'PT1jWzI1MV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNTFdW3NdXT02NDI1NitzLGhbNjQyNTYrc109Y1syNTFdW3NdKTtmb3IoY1syNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTli'@; put 'YjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNTJdLmxlbmd0'@; put 'aDsrK3MpNjU1MzMhPT1jWzI1Ml1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNTJdW3NdXT02NDUxMitzLGhbNjQ1MTIrc109Y1syNTJdW3NdKTtyZXR1cm57ZW5jOnksZGVjOmh9fSgpLGpbOTM2XT1mdW5jdGlvbigpe3ZhciBzLGg9W10seT17fSxjPVtdO2ZvcihjWzBdPSJcMFx4MDFceDAy'@; put 'XHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpb'@; put 'XFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtz'@; put 'IT1jWzBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMF1bc11dPTArcyxoWzArc109Y1swXVtzXSk7Zm9yKGNbMTI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTAyXHU0ZTA0XHU0ZTA1'@; put 'XHU0ZTA2XHU0ZTBmXHU0ZTEyXHU0ZTE3XHU0ZTFmXHU0ZTIwXHU0ZTIxXHU0ZTIzXHU0ZTI2XHU0ZTI5XHU0ZTJlXHU0ZTJmXHU0ZTMxXHU0ZTMzXHU0ZTM1XHU0ZTM3XHU0ZTNjXHU0ZTQwXHU0ZTQxXHU0ZTQyXHU0ZTQ0XHU0ZTQ2XHU0ZTRhXHU0ZTUxXHU0ZTU1XHU0ZTU3XHU0ZTVhXHU0'@; put 'ZTViXHU0ZTYyXHU0ZTYzXHU0ZTY0XHU0ZTY1XHU0ZTY3XHU0ZTY4XHU0ZTZhXHU0ZTZiXHU0ZTZjXHU0ZTZkXHU0ZTZlXHU0ZTZmXHU0ZTcyXHU0ZTc0XHU0ZTc1XHU0ZTc2XHU0ZTc3XHU0ZTc4XHU0ZTc5XHU0ZTdhXHU0ZTdiXHU0ZTdjXHU0ZTdkXHU0ZTdmXHU0ZTgwXHU0ZTgxXHU0ZTgy'@; put 'XHU0ZTgzXHU0ZTg0XHU0ZTg1XHU0ZTg3XHU0ZThhXHVmZmZkXHU0ZTkwXHU0ZTk2XHU0ZTk3XHU0ZTk5XHU0ZTljXHU0ZTlkXHU0ZTllXHU0ZWEzXHU0ZWFhXHU0ZWFmXHU0ZWIwXHU0ZWIxXHU0ZWI0XHU0ZWI2XHU0ZWI3XHU0ZWI4XHU0ZWI5XHU0ZWJjXHU0ZWJkXHU0ZWJlXHU0ZWM4XHU0'@; put 'ZWNjXHU0ZWNmXHU0ZWQwXHU0ZWQyXHU0ZWRhXHU0ZWRiXHU0ZWRjXHU0ZWUwXHU0ZWUyXHU0ZWU2XHU0ZWU3XHU0ZWU5XHU0ZWVkXHU0ZWVlXHU0ZWVmXHU0ZWYxXHU0ZWY0XHU0ZWY4XHU0ZWY5XHU0ZWZhXHU0ZWZjXHU0ZWZlXHU0ZjAwXHU0ZjAyXHU0ZjAzXHU0ZjA0XHU0ZjA1XHU0ZjA2'@; put 'XHU0ZjA3XHU0ZjA4XHU0ZjBiXHU0ZjBjXHU0ZjEyXHU0ZjEzXHU0ZjE0XHU0ZjE1XHU0ZjE2XHU0ZjFjXHU0ZjFkXHU0ZjIxXHU0ZjIzXHU0ZjI4XHU0ZjI5XHU0ZjJjXHU0ZjJkXHU0ZjJlXHU0ZjMxXHU0ZjMzXHU0ZjM1XHU0ZjM3XHU0ZjM5XHU0ZjNiXHU0ZjNlXHU0ZjNmXHU0ZjQwXHU0'@; put 'ZjQxXHU0ZjQyXHU0ZjQ0XHU0ZjQ1XHU0ZjQ3XHU0ZjQ4XHU0ZjQ5XHU0ZjRhXHU0ZjRiXHU0ZjRjXHU0ZjUyXHU0ZjU0XHU0ZjU2XHU0ZjYxXHU0ZjYyXHU0ZjY2XHU0ZjY4XHU0ZjZhXHU0ZjZiXHU0ZjZkXHU0ZjZlXHU0ZjcxXHU0ZjcyXHU0Zjc1XHU0Zjc3XHU0Zjc4XHU0Zjc5XHU0Zjdh'@; put 'XHU0ZjdkXHU0ZjgwXHU0ZjgxXHU0ZjgyXHU0Zjg1XHU0Zjg2XHU0Zjg3XHU0ZjhhXHU0ZjhjXHU0ZjhlXHU0ZjkwXHU0ZjkyXHU0ZjkzXHU0Zjk1XHU0Zjk2XHU0Zjk4XHU0Zjk5XHU0ZjlhXHU0ZjljXHU0ZjllXHU0ZjlmXHU0ZmExXHU0ZmEyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNb'@; put 'MTI5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMjldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTI5XVtzXV09MzMwMjQrcyxoWzMzMDI0K3NdPWNbMTI5XVtzXSk7Zm9yKGNbMTMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZmE0'@; put 'XHU0ZmFiXHU0ZmFkXHU0ZmIwXHU0ZmIxXHU0ZmIyXHU0ZmIzXHU0ZmI0XHU0ZmI2XHU0ZmI3XHU0ZmI4XHU0ZmI5XHU0ZmJhXHU0ZmJiXHU0ZmJjXHU0ZmJkXHU0ZmJlXHU0ZmMwXHU0ZmMxXHU0ZmMyXHU0ZmM2XHU0ZmM3XHU0ZmM4XHU0ZmM5XHU0ZmNiXHU0ZmNjXHU0ZmNkXHU0ZmQyXHU0'@; put 'ZmQzXHU0ZmQ0XHU0ZmQ1XHU0ZmQ2XHU0ZmQ5XHU0ZmRiXHU0ZmUwXHU0ZmUyXHU0ZmU0XHU0ZmU1XHU0ZmU3XHU0ZmViXHU0ZmVjXHU0ZmYwXHU0ZmYyXHU0ZmY0XHU0ZmY1XHU0ZmY2XHU0ZmY3XHU0ZmY5XHU0ZmZiXHU0ZmZjXHU0ZmZkXHU0ZmZmXHU1MDAwXHU1MDAxXHU1MDAyXHU1MDAz'@; put 'XHU1MDA0XHU1MDA1XHU1MDA2XHU1MDA3XHU1MDA4XHU1MDA5XHU1MDBhXHVmZmZkXHU1MDBiXHU1MDBlXHU1MDEwXHU1MDExXHU1MDEzXHU1MDE1XHU1MDE2XHU1MDE3XHU1MDFiXHU1MDFkXHU1MDFlXHU1MDIwXHU1MDIyXHU1MDIzXHU1MDI0XHU1MDI3XHU1MDJiXHU1MDJmXHU1MDMwXHU1'@; put 'MDMxXHU1MDMyXHU1MDMzXHU1MDM0XHU1MDM1XHU1MDM2XHU1MDM3XHU1MDM4XHU1MDM5XHU1MDNiXHU1MDNkXHU1MDNmXHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ0XHU1MDQ1XHU1MDQ2XHU1MDQ5XHU1MDRhXHU1MDRiXHU1MDRkXHU1MDUwXHU1MDUxXHU1MDUyXHU1MDUzXHU1MDU0XHU1MDU2'@; put 'XHU1MDU3XHU1MDU4XHU1MDU5XHU1MDViXHU1MDVkXHU1MDVlXHU1MDVmXHU1MDYwXHU1MDYxXHU1MDYyXHU1MDYzXHU1MDY0XHU1MDY2XHU1MDY3XHU1MDY4XHU1MDY5XHU1MDZhXHU1MDZiXHU1MDZkXHU1MDZlXHU1MDZmXHU1MDcwXHU1MDcxXHU1MDcyXHU1MDczXHU1MDc0XHU1MDc1XHU1'@; put 'MDc4XHU1MDc5XHU1MDdhXHU1MDdjXHU1MDdkXHU1MDgxXHU1MDgyXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDg3XHU1MDg5XHU1MDhhXHU1MDhiXHU1MDhjXHU1MDhlXHU1MDhmXHU1MDkwXHU1MDkxXHU1MDkyXHU1MDkzXHU1MDk0XHU1MDk1XHU1MDk2XHU1MDk3XHU1MDk4XHU1MDk5XHU1MDlh'@; put 'XHU1MDliXHU1MDljXHU1MDlkXHU1MDllXHU1MDlmXHU1MGEwXHU1MGExXHU1MGEyXHU1MGE0XHU1MGE2XHU1MGFhXHU1MGFiXHU1MGFkXHU1MGFlXHU1MGFmXHU1MGIwXHU1MGIxXHU1MGIzXHU1MGI0XHU1MGI1XHU1MGI2XHU1MGI3XHU1MGI4XHU1MGI5XHU1MGJjXHVmZmZkIi5zcGxpdCgi'@; put 'Iikscz0wO3MhPWNbMTMwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTMwXVtzXV09MzMyODArcyxoWzMzMjgwK3NdPWNbMTMwXVtzXSk7Zm9yKGNbMTMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHU1MGJkXHU1MGJlXHU1MGJmXHU1MGMwXHU1MGMxXHU1MGMyXHU1MGMzXHU1MGM0XHU1MGM1XHU1MGM2XHU1MGM3XHU1MGM4XHU1MGM5XHU1MGNhXHU1MGNiXHU1MGNjXHU1MGNkXHU1MGNlXHU1MGQwXHU1MGQxXHU1MGQyXHU1MGQzXHU1MGQ0XHU1MGQ1XHU1MGQ3XHU1MGQ4XHU1'@; put 'MGQ5XHU1MGRiXHU1MGRjXHU1MGRkXHU1MGRlXHU1MGRmXHU1MGUwXHU1MGUxXHU1MGUyXHU1MGUzXHU1MGU0XHU1MGU1XHU1MGU4XHU1MGU5XHU1MGVhXHU1MGViXHU1MGVmXHU1MGYwXHU1MGYxXHU1MGYyXHU1MGY0XHU1MGY2XHU1MGY3XHU1MGY4XHU1MGY5XHU1MGZhXHU1MGZjXHU1MGZk'@; put 'XHU1MGZlXHU1MGZmXHU1MTAwXHU1MTAxXHU1MTAyXHU1MTAzXHU1MTA0XHU1MTA1XHU1MTA4XHVmZmZkXHU1MTA5XHU1MTBhXHU1MTBjXHU1MTBkXHU1MTBlXHU1MTBmXHU1MTEwXHU1MTExXHU1MTEzXHU1MTE0XHU1MTE1XHU1MTE2XHU1MTE3XHU1MTE4XHU1MTE5XHU1MTFhXHU1MTFiXHU1'@; put 'MTFjXHU1MTFkXHU1MTFlXHU1MTFmXHU1MTIwXHU1MTIyXHU1MTIzXHU1MTI0XHU1MTI1XHU1MTI2XHU1MTI3XHU1MTI4XHU1MTI5XHU1MTJhXHU1MTJiXHU1MTJjXHU1MTJkXHU1MTJlXHU1MTJmXHU1MTMwXHU1MTMxXHU1MTMyXHU1MTMzXHU1MTM0XHU1MTM1XHU1MTM2XHU1MTM3XHU1MTM4'@; put 'XHU1MTM5XHU1MTNhXHU1MTNiXHU1MTNjXHU1MTNkXHU1MTNlXHU1MTQyXHU1MTQ3XHU1MTRhXHU1MTRjXHU1MTRlXHU1MTRmXHU1MTUwXHU1MTUyXHU1MTUzXHU1MTU3XHU1MTU4XHU1MTU5XHU1MTViXHU1MTVkXHU1MTVlXHU1MTVmXHU1MTYwXHU1MTYxXHU1MTYzXHU1MTY0XHU1MTY2XHU1'@; put 'MTY3XHU1MTY5XHU1MTZhXHU1MTZmXHU1MTcyXHU1MTdhXHU1MTdlXHU1MTdmXHU1MTgzXHU1MTg0XHU1MTg2XHU1MTg3XHU1MThhXHU1MThiXHU1MThlXHU1MThmXHU1MTkwXHU1MTkxXHU1MTkzXHU1MTk0XHU1MTk4XHU1MTlhXHU1MTlkXHU1MTllXHU1MTlmXHU1MWExXHU1MWEzXHU1MWE2'@; put 'XHU1MWE3XHU1MWE4XHU1MWE5XHU1MWFhXHU1MWFkXHU1MWFlXHU1MWI0XHU1MWI4XHU1MWI5XHU1MWJhXHU1MWJlXHU1MWJmXHU1MWMxXHU1MWMyXHU1MWMzXHU1MWM1XHU1MWM4XHU1MWNhXHU1MWNkXHU1MWNlXHU1MWQwXHU1MWQyXHU1MWQzXHU1MWQ0XHU1MWQ1XHU1MWQ2XHU1MWQ3XHVm'@; put 'ZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTMxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTMxXVtzXV09MzM1MzYrcyxoWzMzNTM2K3NdPWNbMTMxXVtzXSk7Zm9yKGNbMTMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHU1MWQ4XHU1MWQ5XHU1MWRhXHU1MWRjXHU1MWRlXHU1MWRmXHU1MWUyXHU1MWUzXHU1MWU1XHU1MWU2XHU1MWU3XHU1MWU4XHU1MWU5XHU1MWVhXHU1MWVjXHU1MWVlXHU1MWYxXHU1MWYyXHU1MWY0XHU1MWY3XHU1MWZlXHU1MjA0XHU1MjA1XHU1MjA5XHU1'@; put 'MjBiXHU1MjBjXHU1MjBmXHU1MjEwXHU1MjEzXHU1MjE0XHU1MjE1XHU1MjFjXHU1MjFlXHU1MjFmXHU1MjIxXHU1MjIyXHU1MjIzXHU1MjI1XHU1MjI2XHU1MjI3XHU1MjJhXHU1MjJjXHU1MjJmXHU1MjMxXHU1MjMyXHU1MjM0XHU1MjM1XHU1MjNjXHU1MjNlXHU1MjQ0XHU1MjQ1XHU1MjQ2'@; put 'XHU1MjQ3XHU1MjQ4XHU1MjQ5XHU1MjRiXHU1MjRlXHU1MjRmXHU1MjUyXHU1MjUzXHU1MjU1XHU1MjU3XHU1MjU4XHVmZmZkXHU1MjU5XHU1MjVhXHU1MjViXHU1MjVkXHU1MjVmXHU1MjYwXHU1MjYyXHU1MjYzXHU1MjY0XHU1MjY2XHU1MjY4XHU1MjZiXHU1MjZjXHU1MjZkXHU1MjZlXHU1'@; put 'MjcwXHU1MjcxXHU1MjczXHU1Mjc0XHU1Mjc1XHU1Mjc2XHU1Mjc3XHU1Mjc4XHU1Mjc5XHU1MjdhXHU1MjdiXHU1MjdjXHU1MjdlXHU1MjgwXHU1MjgzXHU1Mjg0XHU1Mjg1XHU1Mjg2XHU1Mjg3XHU1Mjg5XHU1MjhhXHU1MjhiXHU1MjhjXHU1MjhkXHU1MjhlXHU1MjhmXHU1MjkxXHU1Mjky'@; put 'XHU1Mjk0XHU1Mjk1XHU1Mjk2XHU1Mjk3XHU1Mjk4XHU1Mjk5XHU1MjlhXHU1MjljXHU1MmE0XHU1MmE1XHU1MmE2XHU1MmE3XHU1MmFlXHU1MmFmXHU1MmIwXHU1MmI0XHU1MmI1XHU1MmI2XHU1MmI3XHU1MmI4XHU1MmI5XHU1MmJhXHU1MmJiXHU1MmJjXHU1MmJkXHU1MmMwXHU1MmMxXHU1'@; put 'MmMyXHU1MmM0XHU1MmM1XHU1MmM2XHU1MmM4XHU1MmNhXHU1MmNjXHU1MmNkXHU1MmNlXHU1MmNmXHU1MmQxXHU1MmQzXHU1MmQ0XHU1MmQ1XHU1MmQ3XHU1MmQ5XHU1MmRhXHU1MmRiXHU1MmRjXHU1MmRkXHU1MmRlXHU1MmUwXHU1MmUxXHU1MmUyXHU1MmUzXHU1MmU1XHU1MmU2XHU1MmU3'@; put 'XHU1MmU4XHU1MmU5XHU1MmVhXHU1MmViXHU1MmVjXHU1MmVkXHU1MmVlXHU1MmVmXHU1MmYxXHU1MmYyXHU1MmYzXHU1MmY0XHU1MmY1XHU1MmY2XHU1MmY3XHU1MmY4XHU1MmZiXHU1MmZjXHU1MmZkXHU1MzAxXHU1MzAyXHU1MzAzXHU1MzA0XHU1MzA3XHU1MzA5XHU1MzBhXHU1MzBiXHU1'@; put 'MzBjXHU1MzBlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTMyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTMyXVtzXV09MzM3OTIrcyxoWzMzNzkyK3NdPWNbMTMyXVtzXSk7Zm9yKGNbMTMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzExXHU1MzEyXHU1MzEzXHU1MzE0XHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFmXHU1MzIyXHU1MzI0XHU1MzI1XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzJmXHU1MzMwXHU1MzMxXHU1MzMyXHU1'@; put 'MzMzXHU1MzM0XHU1MzM1XHU1MzM2XHU1MzM3XHU1MzM4XHU1MzNjXHU1MzNkXHU1MzQwXHU1MzQyXHU1MzQ0XHU1MzQ2XHU1MzRiXHU1MzRjXHU1MzRkXHU1MzUwXHU1MzU0XHU1MzU4XHU1MzU5XHU1MzViXHU1MzVkXHU1MzY1XHU1MzY4XHU1MzZhXHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc2'@; put 'XHU1Mzc5XHU1MzdiXHU1MzdjXHU1MzdkXHU1MzdlXHU1MzgwXHU1MzgxXHU1MzgzXHU1Mzg3XHU1Mzg4XHU1MzhhXHU1MzhlXHU1MzhmXHVmZmZkXHU1MzkwXHU1MzkxXHU1MzkyXHU1MzkzXHU1Mzk0XHU1Mzk2XHU1Mzk3XHU1Mzk5XHU1MzliXHU1MzljXHU1MzllXHU1M2EwXHU1M2ExXHU1'@; put 'M2E0XHU1M2E3XHU1M2FhXHU1M2FiXHU1M2FjXHU1M2FkXHU1M2FmXHU1M2IwXHU1M2IxXHU1M2IyXHU1M2IzXHU1M2I0XHU1M2I1XHU1M2I3XHU1M2I4XHU1M2I5XHU1M2JhXHU1M2JjXHU1M2JkXHU1M2JlXHU1M2MwXHU1M2MzXHU1M2M0XHU1M2M1XHU1M2M2XHU1M2M3XHU1M2NlXHU1M2Nm'@; put 'XHU1M2QwXHU1M2QyXHU1M2QzXHU1M2Q1XHU1M2RhXHU1M2RjXHU1M2RkXHU1M2RlXHU1M2UxXHU1M2UyXHU1M2U3XHU1M2Y0XHU1M2ZhXHU1M2ZlXHU1M2ZmXHU1NDAwXHU1NDAyXHU1NDA1XHU1NDA3XHU1NDBiXHU1NDE0XHU1NDE4XHU1NDE5XHU1NDFhXHU1NDFjXHU1NDIyXHU1NDI0XHU1'@; put 'NDI1XHU1NDJhXHU1NDMwXHU1NDMzXHU1NDM2XHU1NDM3XHU1NDNhXHU1NDNkXHU1NDNmXHU1NDQxXHU1NDQyXHU1NDQ0XHU1NDQ1XHU1NDQ3XHU1NDQ5XHU1NDRjXHU1NDRkXHU1NDRlXHU1NDRmXHU1NDUxXHU1NDVhXHU1NDVkXHU1NDVlXHU1NDVmXHU1NDYwXHU1NDYxXHU1NDYzXHU1NDY1'@; put 'XHU1NDY3XHU1NDY5XHU1NDZhXHU1NDZiXHU1NDZjXHU1NDZkXHU1NDZlXHU1NDZmXHU1NDcwXHU1NDc0XHU1NDc5XHU1NDdhXHU1NDdlXHU1NDdmXHU1NDgxXHU1NDgzXHU1NDg1XHU1NDg3XHU1NDg4XHU1NDg5XHU1NDhhXHU1NDhkXHU1NDkxXHU1NDkzXHU1NDk3XHU1NDk4XHU1NDljXHU1'@; put 'NDllXHU1NDlmXHU1NGEwXHU1NGExXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTMzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTMzXVtzXV09MzQwNDgrcyxoWzM0MDQ4K3NdPWNbMTMzXVtzXSk7Zm9yKGNbMTM0XT0iXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGEyXHU1NGE1XHU1NGFlXHU1NGIwXHU1NGIyXHU1NGI1XHU1NGI2XHU1NGI3XHU1NGI5XHU1NGJhXHU1NGJjXHU1NGJlXHU1NGMzXHU1NGM1XHU1NGNhXHU1NGNiXHU1NGQ2XHU1NGQ4XHU1NGRiXHU1NGUwXHU1'@; put 'NGUxXHU1NGUyXHU1NGUzXHU1NGU0XHU1NGViXHU1NGVjXHU1NGVmXHU1NGYwXHU1NGYxXHU1NGY0XHU1NGY1XHU1NGY2XHU1NGY3XHU1NGY4XHU1NGY5XHU1NGZiXHU1NGZlXHU1NTAwXHU1NTAyXHU1NTAzXHU1NTA0XHU1NTA1XHU1NTA4XHU1NTBhXHU1NTBiXHU1NTBjXHU1NTBkXHU1NTBl'@; put 'XHU1NTEyXHU1NTEzXHU1NTE1XHU1NTE2XHU1NTE3XHU1NTE4XHU1NTE5XHU1NTFhXHU1NTFjXHU1NTFkXHU1NTFlXHU1NTFmXHU1NTIxXHU1NTI1XHU1NTI2XHVmZmZkXHU1NTI4XHU1NTI5XHU1NTJiXHU1NTJkXHU1NTMyXHU1NTM0XHU1NTM1XHU1NTM2XHU1NTM4XHU1NTM5XHU1NTNhXHU1'@; put 'NTNiXHU1NTNkXHU1NTQwXHU1NTQyXHU1NTQ1XHU1NTQ3XHU1NTQ4XHU1NTRiXHU1NTRjXHU1NTRkXHU1NTRlXHU1NTRmXHU1NTUxXHU1NTUyXHU1NTUzXHU1NTU0XHU1NTU3XHU1NTU4XHU1NTU5XHU1NTVhXHU1NTViXHU1NTVkXHU1NTVlXHU1NTVmXHU1NTYwXHU1NTYyXHU1NTYzXHU1NTY4'@; put 'XHU1NTY5XHU1NTZiXHU1NTZmXHU1NTcwXHU1NTcxXHU1NTcyXHU1NTczXHU1NTc0XHU1NTc5XHU1NTdhXHU1NTdkXHU1NTdmXHU1NTg1XHU1NTg2XHU1NThjXHU1NThkXHU1NThlXHU1NTkwXHU1NTkyXHU1NTkzXHU1NTk1XHU1NTk2XHU1NTk3XHU1NTlhXHU1NTliXHU1NTllXHU1NWEwXHU1'@; put 'NWExXHU1NWEyXHU1NWEzXHU1NWE0XHU1NWE1XHU1NWE2XHU1NWE4XHU1NWE5XHU1NWFhXHU1NWFiXHU1NWFjXHU1NWFkXHU1NWFlXHU1NWFmXHU1NWIwXHU1NWIyXHU1NWI0XHU1NWI2XHU1NWI4XHU1NWJhXHU1NWJjXHU1NWJmXHU1NWMwXHU1NWMxXHU1NWMyXHU1NWMzXHU1NWM2XHU1NWM3'@; put 'XHU1NWM4XHU1NWNhXHU1NWNiXHU1NWNlXHU1NWNmXHU1NWQwXHU1NWQ1XHU1NWQ3XHU1NWQ4XHU1NWQ5XHU1NWRhXHU1NWRiXHU1NWRlXHU1NWUwXHU1NWUyXHU1NWU3XHU1NWU5XHU1NWVkXHU1NWVlXHU1NWYwXHU1NWYxXHU1NWY0XHU1NWY2XHU1NWY4XHU1NWY5XHU1NWZhXHU1NWZiXHU1'@; put 'NWZjXHU1NWZmXHU1NjAyXHU1NjAzXHU1NjA0XHU1NjA1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTM0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTM0XVtzXV09MzQzMDQrcyxoWzM0MzA0K3NdPWNbMTM0XVtzXSk7Zm9yKGNbMTM1XT0i'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjA2XHU1NjA3XHU1NjBhXHU1NjBiXHU1NjBkXHU1NjEwXHU1NjExXHU1NjEyXHU1NjEzXHU1NjE0XHU1NjE1XHU1NjE2XHU1NjE3XHU1NjE5XHU1NjFhXHU1NjFjXHU1NjFkXHU1NjIwXHU1'@; put 'NjIxXHU1NjIyXHU1NjI1XHU1NjI2XHU1NjI4XHU1NjI5XHU1NjJhXHU1NjJiXHU1NjJlXHU1NjJmXHU1NjMwXHU1NjMzXHU1NjM1XHU1NjM3XHU1NjM4XHU1NjNhXHU1NjNjXHU1NjNkXHU1NjNlXHU1NjQwXHU1NjQxXHU1NjQyXHU1NjQzXHU1NjQ0XHU1NjQ1XHU1NjQ2XHU1NjQ3XHU1NjQ4'@; put 'XHU1NjQ5XHU1NjRhXHU1NjRiXHU1NjRmXHU1NjUwXHU1NjUxXHU1NjUyXHU1NjUzXHU1NjU1XHU1NjU2XHU1NjVhXHU1NjViXHU1NjVkXHU1NjVlXHU1NjVmXHU1NjYwXHU1NjYxXHVmZmZkXHU1NjYzXHU1NjY1XHU1NjY2XHU1NjY3XHU1NjZkXHU1NjZlXHU1NjZmXHU1NjcwXHU1NjcyXHU1'@; put 'NjczXHU1Njc0XHU1Njc1XHU1Njc3XHU1Njc4XHU1Njc5XHU1NjdhXHU1NjdkXHU1NjdlXHU1NjdmXHU1NjgwXHU1NjgxXHU1NjgyXHU1NjgzXHU1Njg0XHU1Njg3XHU1Njg4XHU1Njg5XHU1NjhhXHU1NjhiXHU1NjhjXHU1NjhkXHU1NjkwXHU1NjkxXHU1NjkyXHU1Njk0XHU1Njk1XHU1Njk2'@; put 'XHU1Njk3XHU1Njk4XHU1Njk5XHU1NjlhXHU1NjliXHU1NjljXHU1NjlkXHU1NjllXHU1NjlmXHU1NmEwXHU1NmExXHU1NmEyXHU1NmE0XHU1NmE1XHU1NmE2XHU1NmE3XHU1NmE4XHU1NmE5XHU1NmFhXHU1NmFiXHU1NmFjXHU1NmFkXHU1NmFlXHU1NmIwXHU1NmIxXHU1NmIyXHU1NmIzXHU1'@; put 'NmI0XHU1NmI1XHU1NmI2XHU1NmI4XHU1NmI5XHU1NmJhXHU1NmJiXHU1NmJkXHU1NmJlXHU1NmJmXHU1NmMwXHU1NmMxXHU1NmMyXHU1NmMzXHU1NmM0XHU1NmM1XHU1NmM2XHU1NmM3XHU1NmM4XHU1NmM5XHU1NmNiXHU1NmNjXHU1NmNkXHU1NmNlXHU1NmNmXHU1NmQwXHU1NmQxXHU1NmQy'@; put 'XHU1NmQzXHU1NmQ1XHU1NmQ2XHU1NmQ4XHU1NmQ5XHU1NmRjXHU1NmUzXHU1NmU1XHU1NmU2XHU1NmU3XHU1NmU4XHU1NmU5XHU1NmVhXHU1NmVjXHU1NmVlXHU1NmVmXHU1NmYyXHU1NmYzXHU1NmY2XHU1NmY3XHU1NmY4XHU1NmZiXHU1NmZjXHU1NzAwXHU1NzAxXHU1NzAyXHU1NzA1XHU1'@; put 'NzA3XHU1NzBiXHU1NzBjXHU1NzBkXHU1NzBlXHU1NzBmXHU1NzEwXHU1NzExXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTM1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTM1XVtzXV09MzQ1NjArcyxoWzM0NTYwK3NdPWNbMTM1XVtzXSk7'@; put 'Zm9yKGNbMTM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzEyXHU1NzEzXHU1NzE0XHU1NzE1XHU1NzE2XHU1NzE3XHU1NzE4XHU1NzE5XHU1NzFhXHU1NzFiXHU1NzFkXHU1NzFlXHU1NzIwXHU1NzIxXHU1NzIyXHU1NzI0XHU1'@; put 'NzI1XHU1NzI2XHU1NzI3XHU1NzJiXHU1NzMxXHU1NzMyXHU1NzM0XHU1NzM1XHU1NzM2XHU1NzM3XHU1NzM4XHU1NzNjXHU1NzNkXHU1NzNmXHU1NzQxXHU1NzQzXHU1NzQ0XHU1NzQ1XHU1NzQ2XHU1NzQ4XHU1NzQ5XHU1NzRiXHU1NzUyXHU1NzUzXHU1NzU0XHU1NzU1XHU1NzU2XHU1NzU4'@; put 'XHU1NzU5XHU1NzYyXHU1NzYzXHU1NzY1XHU1NzY3XHU1NzZjXHU1NzZlXHU1NzcwXHU1NzcxXHU1NzcyXHU1Nzc0XHU1Nzc1XHU1Nzc4XHU1Nzc5XHU1NzdhXHU1NzdkXHU1NzdlXHU1NzdmXHU1NzgwXHVmZmZkXHU1NzgxXHU1Nzg3XHU1Nzg4XHU1Nzg5XHU1NzhhXHU1NzhkXHU1NzhlXHU1'@; put 'NzhmXHU1NzkwXHU1NzkxXHU1Nzk0XHU1Nzk1XHU1Nzk2XHU1Nzk3XHU1Nzk4XHU1Nzk5XHU1NzlhXHU1NzljXHU1NzlkXHU1NzllXHU1NzlmXHU1N2E1XHU1N2E4XHU1N2FhXHU1N2FjXHU1N2FmXHU1N2IwXHU1N2IxXHU1N2IzXHU1N2I1XHU1N2I2XHU1N2I3XHU1N2I5XHU1N2JhXHU1N2Ji'@; put 'XHU1N2JjXHU1N2JkXHU1N2JlXHU1N2JmXHU1N2MwXHU1N2MxXHU1N2M0XHU1N2M1XHU1N2M2XHU1N2M3XHU1N2M4XHU1N2M5XHU1N2NhXHU1N2NjXHU1N2NkXHU1N2QwXHU1N2QxXHU1N2QzXHU1N2Q2XHU1N2Q3XHU1N2RiXHU1N2RjXHU1N2RlXHU1N2UxXHU1N2UyXHU1N2UzXHU1N2U1XHU1'@; put 'N2U2XHU1N2U3XHU1N2U4XHU1N2U5XHU1N2VhXHU1N2ViXHU1N2VjXHU1N2VlXHU1N2YwXHU1N2YxXHU1N2YyXHU1N2YzXHU1N2Y1XHU1N2Y2XHU1N2Y3XHU1N2ZiXHU1N2ZjXHU1N2ZlXHU1N2ZmXHU1ODAxXHU1ODAzXHU1ODA0XHU1ODA1XHU1ODA4XHU1ODA5XHU1ODBhXHU1ODBjXHU1ODBl'@; put 'XHU1ODBmXHU1ODEwXHU1ODEyXHU1ODEzXHU1ODE0XHU1ODE2XHU1ODE3XHU1ODE4XHU1ODFhXHU1ODFiXHU1ODFjXHU1ODFkXHU1ODFmXHU1ODIyXHU1ODIzXHU1ODI1XHU1ODI2XHU1ODI3XHU1ODI4XHU1ODI5XHU1ODJiXHU1ODJjXHU1ODJkXHU1ODJlXHU1ODJmXHU1ODMxXHU1ODMyXHU1'@; put 'ODMzXHU1ODM0XHU1ODM2XHU1ODM3XHU1ODM4XHU1ODM5XHU1ODNhXHU1ODNiXHU1ODNjXHU1ODNkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTM2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTM2XVtzXV09MzQ4MTYrcyxoWzM0ODE2K3Nd'@; put 'PWNbMTM2XVtzXSk7Zm9yKGNbMTM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ODNlXHU1ODNmXHU1ODQwXHU1ODQxXHU1ODQyXHU1ODQzXHU1ODQ1XHU1ODQ2XHU1ODQ3XHU1ODQ4XHU1ODQ5XHU1ODRhXHU1ODRiXHU1ODRlXHU1'@; put 'ODRmXHU1ODUwXHU1ODUyXHU1ODUzXHU1ODU1XHU1ODU2XHU1ODU3XHU1ODU5XHU1ODVhXHU1ODViXHU1ODVjXHU1ODVkXHU1ODVmXHU1ODYwXHU1ODYxXHU1ODYyXHU1ODYzXHU1ODY0XHU1ODY2XHU1ODY3XHU1ODY4XHU1ODY5XHU1ODZhXHU1ODZkXHU1ODZlXHU1ODZmXHU1ODcwXHU1ODcx'@; put 'XHU1ODcyXHU1ODczXHU1ODc0XHU1ODc1XHU1ODc2XHU1ODc3XHU1ODc4XHU1ODc5XHU1ODdhXHU1ODdiXHU1ODdjXHU1ODdkXHU1ODdmXHU1ODgyXHU1ODg0XHU1ODg2XHU1ODg3XHU1ODg4XHU1ODhhXHU1ODhiXHU1ODhjXHVmZmZkXHU1ODhkXHU1ODhlXHU1ODhmXHU1ODkwXHU1ODkxXHU1'@; put 'ODk0XHU1ODk1XHU1ODk2XHU1ODk3XHU1ODk4XHU1ODliXHU1ODljXHU1ODlkXHU1OGEwXHU1OGExXHU1OGEyXHU1OGEzXHU1OGE0XHU1OGE1XHU1OGE2XHU1OGE3XHU1OGFhXHU1OGFiXHU1OGFjXHU1OGFkXHU1OGFlXHU1OGFmXHU1OGIwXHU1OGIxXHU1OGIyXHU1OGIzXHU1OGI0XHU1OGI1'@; put 'XHU1OGI2XHU1OGI3XHU1OGI4XHU1OGI5XHU1OGJhXHU1OGJiXHU1OGJkXHU1OGJlXHU1OGJmXHU1OGMwXHU1OGMyXHU1OGMzXHU1OGM0XHU1OGM2XHU1OGM3XHU1OGM4XHU1OGM5XHU1OGNhXHU1OGNiXHU1OGNjXHU1OGNkXHU1OGNlXHU1OGNmXHU1OGQwXHU1OGQyXHU1OGQzXHU1OGQ0XHU1'@; put 'OGQ2XHU1OGQ3XHU1OGQ4XHU1OGQ5XHU1OGRhXHU1OGRiXHU1OGRjXHU1OGRkXHU1OGRlXHU1OGRmXHU1OGUwXHU1OGUxXHU1OGUyXHU1OGUzXHU1OGU1XHU1OGU2XHU1OGU3XHU1OGU4XHU1OGU5XHU1OGVhXHU1OGVkXHU1OGVmXHU1OGYxXHU1OGYyXHU1OGY0XHU1OGY1XHU1OGY3XHU1OGY4'@; put 'XHU1OGZhXHU1OGZiXHU1OGZjXHU1OGZkXHU1OGZlXHU1OGZmXHU1OTAwXHU1OTAxXHU1OTAzXHU1OTA1XHU1OTA2XHU1OTA4XHU1OTA5XHU1OTBhXHU1OTBiXHU1OTBjXHU1OTBlXHU1OTEwXHU1OTExXHU1OTEyXHU1OTEzXHU1OTE3XHU1OTE4XHU1OTFiXHU1OTFkXHU1OTFlXHU1OTIwXHU1'@; put 'OTIxXHU1OTIyXHU1OTIzXHU1OTI2XHU1OTI4XHU1OTJjXHU1OTMwXHU1OTMyXHU1OTMzXHU1OTM1XHU1OTM2XHU1OTNiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTM3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTM3XVtzXV09MzUwNzIr'@; put 'cyxoWzM1MDcyK3NdPWNbMTM3XVtzXSk7Zm9yKGNbMTM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1OTNkXHU1OTNlXHU1OTNmXHU1OTQwXHU1OTQzXHU1OTQ1XHU1OTQ2XHU1OTRhXHU1OTRjXHU1OTRkXHU1OTUwXHU1OTUyXHU1'@; put 'OTUzXHU1OTU5XHU1OTViXHU1OTVjXHU1OTVkXHU1OTVlXHU1OTVmXHU1OTYxXHU1OTYzXHU1OTY0XHU1OTY2XHU1OTY3XHU1OTY4XHU1OTY5XHU1OTZhXHU1OTZiXHU1OTZjXHU1OTZkXHU1OTZlXHU1OTZmXHU1OTcwXHU1OTcxXHU1OTcyXHU1OTc1XHU1OTc3XHU1OTdhXHU1OTdiXHU1OTdj'@; put 'XHU1OTdlXHU1OTdmXHU1OTgwXHU1OTg1XHU1OTg5XHU1OThiXHU1OThjXHU1OThlXHU1OThmXHU1OTkwXHU1OTkxXHU1OTk0XHU1OTk1XHU1OTk4XHU1OTlhXHU1OTliXHU1OTljXHU1OTlkXHU1OTlmXHU1OWEwXHU1OWExXHU1OWEyXHU1OWE2XHVmZmZkXHU1OWE3XHU1OWFjXHU1OWFkXHU1'@; put 'OWIwXHU1OWIxXHU1OWIzXHU1OWI0XHU1OWI1XHU1OWI2XHU1OWI3XHU1OWI4XHU1OWJhXHU1OWJjXHU1OWJkXHU1OWJmXHU1OWMwXHU1OWMxXHU1OWMyXHU1OWMzXHU1OWM0XHU1OWM1XHU1OWM3XHU1OWM4XHU1OWM5XHU1OWNjXHU1OWNkXHU1OWNlXHU1OWNmXHU1OWQ1XHU1OWQ2XHU1OWQ5'@; put 'XHU1OWRiXHU1OWRlXHU1OWRmXHU1OWUwXHU1OWUxXHU1OWUyXHU1OWU0XHU1OWU2XHU1OWU3XHU1OWU5XHU1OWVhXHU1OWViXHU1OWVkXHU1OWVlXHU1OWVmXHU1OWYwXHU1OWYxXHU1OWYyXHU1OWYzXHU1OWY0XHU1OWY1XHU1OWY2XHU1OWY3XHU1OWY4XHU1OWZhXHU1OWZjXHU1OWZkXHU1'@; put 'OWZlXHU1YTAwXHU1YTAyXHU1YTBhXHU1YTBiXHU1YTBkXHU1YTBlXHU1YTBmXHU1YTEwXHU1YTEyXHU1YTE0XHU1YTE1XHU1YTE2XHU1YTE3XHU1YTE5XHU1YTFhXHU1YTFiXHU1YTFkXHU1YTFlXHU1YTIxXHU1YTIyXHU1YTI0XHU1YTI2XHU1YTI3XHU1YTI4XHU1YTJhXHU1YTJiXHU1YTJj'@; put 'XHU1YTJkXHU1YTJlXHU1YTJmXHU1YTMwXHU1YTMzXHU1YTM1XHU1YTM3XHU1YTM4XHU1YTM5XHU1YTNhXHU1YTNiXHU1YTNkXHU1YTNlXHU1YTNmXHU1YTQxXHU1YTQyXHU1YTQzXHU1YTQ0XHU1YTQ1XHU1YTQ3XHU1YTQ4XHU1YTRiXHU1YTRjXHU1YTRkXHU1YTRlXHU1YTRmXHU1YTUwXHU1'@; put 'YTUxXHU1YTUyXHU1YTUzXHU1YTU0XHU1YTU2XHU1YTU3XHU1YTU4XHU1YTU5XHU1YTViXHU1YTVjXHU1YTVkXHU1YTVlXHU1YTVmXHU1YTYwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTM4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTM4'@; put 'XVtzXV09MzUzMjgrcyxoWzM1MzI4K3NdPWNbMTM4XVtzXSk7Zm9yKGNbMTM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTYxXHU1YTYzXHU1YTY0XHU1YTY1XHU1YTY2XHU1YTY4XHU1YTY5XHU1YTZiXHU1YTZjXHU1YTZkXHU1'@; put 'YTZlXHU1YTZmXHU1YTcwXHU1YTcxXHU1YTcyXHU1YTczXHU1YTc4XHU1YTc5XHU1YTdiXHU1YTdjXHU1YTdkXHU1YTdlXHU1YTgwXHU1YTgxXHU1YTgyXHU1YTgzXHU1YTg0XHU1YTg1XHU1YTg2XHU1YTg3XHU1YTg4XHU1YTg5XHU1YThhXHU1YThiXHU1YThjXHU1YThkXHU1YThlXHU1YThm'@; put 'XHU1YTkwXHU1YTkxXHU1YTkzXHU1YTk0XHU1YTk1XHU1YTk2XHU1YTk3XHU1YTk4XHU1YTk5XHU1YTljXHU1YTlkXHU1YTllXHU1YTlmXHU1YWEwXHU1YWExXHU1YWEyXHU1YWEzXHU1YWE0XHU1YWE1XHU1YWE2XHU1YWE3XHU1YWE4XHU1YWE5XHU1YWFiXHU1YWFjXHVmZmZkXHU1YWFkXHU1'@; put 'YWFlXHU1YWFmXHU1YWIwXHU1YWIxXHU1YWI0XHU1YWI2XHU1YWI3XHU1YWI5XHU1YWJhXHU1YWJiXHU1YWJjXHU1YWJkXHU1YWJmXHU1YWMwXHU1YWMzXHU1YWM0XHU1YWM1XHU1YWM2XHU1YWM3XHU1YWM4XHU1YWNhXHU1YWNiXHU1YWNkXHU1YWNlXHU1YWNmXHU1YWQwXHU1YWQxXHU1YWQz'@; put 'XHU1YWQ1XHU1YWQ3XHU1YWQ5XHU1YWRhXHU1YWRiXHU1YWRkXHU1YWRlXHU1YWRmXHU1YWUyXHU1YWU0XHU1YWU1XHU1YWU3XHU1YWU4XHU1YWVhXHU1YWVjXHU1YWVkXHU1YWVlXHU1YWVmXHU1YWYwXHU1YWYyXHU1YWYzXHU1YWY0XHU1YWY1XHU1YWY2XHU1YWY3XHU1YWY4XHU1YWY5XHU1'@; put 'YWZhXHU1YWZiXHU1YWZjXHU1YWZkXHU1YWZlXHU1YWZmXHU1YjAwXHU1YjAxXHU1YjAyXHU1YjAzXHU1YjA0XHU1YjA1XHU1YjA2XHU1YjA3XHU1YjA4XHU1YjBhXHU1YjBiXHU1YjBjXHU1YjBkXHU1YjBlXHU1YjBmXHU1YjEwXHU1YjExXHU1YjEyXHU1YjEzXHU1YjE0XHU1YjE1XHU1YjE4'@; put 'XHU1YjE5XHU1YjFhXHU1YjFiXHU1YjFjXHU1YjFkXHU1YjFlXHU1YjFmXHU1YjIwXHU1YjIxXHU1YjIyXHU1YjIzXHU1YjI0XHU1YjI1XHU1YjI2XHU1YjI3XHU1YjI4XHU1YjI5XHU1YjJhXHU1YjJiXHU1YjJjXHU1YjJkXHU1YjJlXHU1YjJmXHU1YjMwXHU1YjMxXHU1YjMzXHU1YjM1XHU1'@; put 'YjM2XHU1YjM4XHU1YjM5XHU1YjNhXHU1YjNiXHU1YjNjXHU1YjNkXHU1YjNlXHU1YjNmXHU1YjQxXHU1YjQyXHU1YjQzXHU1YjQ0XHU1YjQ1XHU1YjQ2XHU1YjQ3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTM5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxMzldW3NdLmNoYXJDb2RlQXQo'@; put 'MCkmJih5W2NbMTM5XVtzXV09MzU1ODQrcyxoWzM1NTg0K3NdPWNbMTM5XVtzXSk7Zm9yKGNbMTQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YjQ4XHU1YjQ5XHU1YjRhXHU1YjRiXHU1YjRjXHU1YjRkXHU1YjRlXHU1YjRmXHU1'@; put 'YjUyXHU1YjU2XHU1YjVlXHU1YjYwXHU1YjYxXHU1YjY3XHU1YjY4XHU1YjZiXHU1YjZkXHU1YjZlXHU1YjZmXHU1YjcyXHU1Yjc0XHU1Yjc2XHU1Yjc3XHU1Yjc4XHU1Yjc5XHU1YjdiXHU1YjdjXHU1YjdlXHU1YjdmXHU1YjgyXHU1Yjg2XHU1YjhhXHU1YjhkXHU1YjhlXHU1YjkwXHU1Yjkx'@; put 'XHU1YjkyXHU1Yjk0XHU1Yjk2XHU1YjlmXHU1YmE3XHU1YmE4XHU1YmE5XHU1YmFjXHU1YmFkXHU1YmFlXHU1YmFmXHU1YmIxXHU1YmIyXHU1YmI3XHU1YmJhXHU1YmJiXHU1YmJjXHU1YmMwXHU1YmMxXHU1YmMzXHU1YmM4XHU1YmM5XHU1YmNhXHU1YmNiXHU1YmNkXHU1YmNlXHU1YmNmXHVm'@; put 'ZmZkXHU1YmQxXHU1YmQ0XHU1YmQ1XHU1YmQ2XHU1YmQ3XHU1YmQ4XHU1YmQ5XHU1YmRhXHU1YmRiXHU1YmRjXHU1YmUwXHU1YmUyXHU1YmUzXHU1YmU2XHU1YmU3XHU1YmU5XHU1YmVhXHU1YmViXHU1YmVjXHU1YmVkXHU1YmVmXHU1YmYxXHU1YmYyXHU1YmYzXHU1YmY0XHU1YmY1XHU1YmY2'@; put 'XHU1YmY3XHU1YmZkXHU1YmZlXHU1YzAwXHU1YzAyXHU1YzAzXHU1YzA1XHU1YzA3XHU1YzA4XHU1YzBiXHU1YzBjXHU1YzBkXHU1YzBlXHU1YzEwXHU1YzEyXHU1YzEzXHU1YzE3XHU1YzE5XHU1YzFiXHU1YzFlXHU1YzFmXHU1YzIwXHU1YzIxXHU1YzIzXHU1YzI2XHU1YzI4XHU1YzI5XHU1'@; put 'YzJhXHU1YzJiXHU1YzJkXHU1YzJlXHU1YzJmXHU1YzMwXHU1YzMyXHU1YzMzXHU1YzM1XHU1YzM2XHU1YzM3XHU1YzQzXHU1YzQ0XHU1YzQ2XHU1YzQ3XHU1YzRjXHU1YzRkXHU1YzUyXHU1YzUzXHU1YzU0XHU1YzU2XHU1YzU3XHU1YzU4XHU1YzVhXHU1YzViXHU1YzVjXHU1YzVkXHU1YzVm'@; put 'XHU1YzYyXHU1YzY0XHU1YzY3XHU1YzY4XHU1YzY5XHU1YzZhXHU1YzZiXHU1YzZjXHU1YzZkXHU1YzcwXHU1YzcyXHU1YzczXHU1Yzc0XHU1Yzc1XHU1Yzc2XHU1Yzc3XHU1Yzc4XHU1YzdiXHU1YzdjXHU1YzdkXHU1YzdlXHU1YzgwXHU1YzgzXHU1Yzg0XHU1Yzg1XHU1Yzg2XHU1Yzg3XHU1'@; put 'Yzg5XHU1YzhhXHU1YzhiXHU1YzhlXHU1YzhmXHU1YzkyXHU1YzkzXHU1Yzk1XHU1YzlkXHU1YzllXHU1YzlmXHU1Y2EwXHU1Y2ExXHU1Y2E0XHU1Y2E1XHU1Y2E2XHU1Y2E3XHU1Y2E4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDBdW3Nd'@; put 'LmNoYXJDb2RlQXQoMCkmJih5W2NbMTQwXVtzXV09MzU4NDArcyxoWzM1ODQwK3NdPWNbMTQwXVtzXSk7Zm9yKGNbMTQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1Y2FhXHU1Y2FlXHU1Y2FmXHU1Y2IwXHU1Y2IyXHU1Y2I0XHU1'@; put 'Y2I2XHU1Y2I5XHU1Y2JhXHU1Y2JiXHU1Y2JjXHU1Y2JlXHU1Y2MwXHU1Y2MyXHU1Y2MzXHU1Y2M1XHU1Y2M2XHU1Y2M3XHU1Y2M4XHU1Y2M5XHU1Y2NhXHU1Y2NjXHU1Y2NkXHU1Y2NlXHU1Y2NmXHU1Y2QwXHU1Y2QxXHU1Y2QzXHU1Y2Q0XHU1Y2Q1XHU1Y2Q2XHU1Y2Q3XHU1Y2Q4XHU1Y2Rh'@; put 'XHU1Y2RiXHU1Y2RjXHU1Y2RkXHU1Y2RlXHU1Y2RmXHU1Y2UwXHU1Y2UyXHU1Y2UzXHU1Y2U3XHU1Y2U5XHU1Y2ViXHU1Y2VjXHU1Y2VlXHU1Y2VmXHU1Y2YxXHU1Y2YyXHU1Y2YzXHU1Y2Y0XHU1Y2Y1XHU1Y2Y2XHU1Y2Y3XHU1Y2Y4XHU1Y2Y5XHU1Y2ZhXHU1Y2ZjXHU1Y2ZkXHU1Y2ZlXHU1'@; put 'Y2ZmXHU1ZDAwXHVmZmZkXHU1ZDAxXHU1ZDA0XHU1ZDA1XHU1ZDA4XHU1ZDA5XHU1ZDBhXHU1ZDBiXHU1ZDBjXHU1ZDBkXHU1ZDBmXHU1ZDEwXHU1ZDExXHU1ZDEyXHU1ZDEzXHU1ZDE1XHU1ZDE3XHU1ZDE4XHU1ZDE5XHU1ZDFhXHU1ZDFjXHU1ZDFkXHU1ZDFmXHU1ZDIwXHU1ZDIxXHU1ZDIy'@; put 'XHU1ZDIzXHU1ZDI1XHU1ZDI4XHU1ZDJhXHU1ZDJiXHU1ZDJjXHU1ZDJmXHU1ZDMwXHU1ZDMxXHU1ZDMyXHU1ZDMzXHU1ZDM1XHU1ZDM2XHU1ZDM3XHU1ZDM4XHU1ZDM5XHU1ZDNhXHU1ZDNiXHU1ZDNjXHU1ZDNmXHU1ZDQwXHU1ZDQxXHU1ZDQyXHU1ZDQzXHU1ZDQ0XHU1ZDQ1XHU1ZDQ2XHU1'@; put 'ZDQ4XHU1ZDQ5XHU1ZDRkXHU1ZDRlXHU1ZDRmXHU1ZDUwXHU1ZDUxXHU1ZDUyXHU1ZDUzXHU1ZDU0XHU1ZDU1XHU1ZDU2XHU1ZDU3XHU1ZDU5XHU1ZDVhXHU1ZDVjXHU1ZDVlXHU1ZDVmXHU1ZDYwXHU1ZDYxXHU1ZDYyXHU1ZDYzXHU1ZDY0XHU1ZDY1XHU1ZDY2XHU1ZDY3XHU1ZDY4XHU1ZDZh'@; put 'XHU1ZDZkXHU1ZDZlXHU1ZDcwXHU1ZDcxXHU1ZDcyXHU1ZDczXHU1ZDc1XHU1ZDc2XHU1ZDc3XHU1ZDc4XHU1ZDc5XHU1ZDdhXHU1ZDdiXHU1ZDdjXHU1ZDdkXHU1ZDdlXHU1ZDdmXHU1ZDgwXHU1ZDgxXHU1ZDgzXHU1ZDg0XHU1ZDg1XHU1ZDg2XHU1ZDg3XHU1ZDg4XHU1ZDg5XHU1ZDhhXHU1'@; put 'ZDhiXHU1ZDhjXHU1ZDhkXHU1ZDhlXHU1ZDhmXHU1ZDkwXHU1ZDkxXHU1ZDkyXHU1ZDkzXHU1ZDk0XHU1ZDk1XHU1ZDk2XHU1ZDk3XHU1ZDk4XHU1ZDlhXHU1ZDliXHU1ZDljXHU1ZDllXHU1ZDlmXHU1ZGEwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQxXS5sZW5ndGg7KytzKTY1NTMz'@; put 'IT09Y1sxNDFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQxXVtzXV09MzYwOTYrcyxoWzM2MDk2K3NdPWNbMTQxXVtzXSk7Zm9yKGNbMTQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZGExXHU1ZGEyXHU1ZGEzXHU1ZGE0XHU1'@; put 'ZGE1XHU1ZGE2XHU1ZGE3XHU1ZGE4XHU1ZGE5XHU1ZGFhXHU1ZGFiXHU1ZGFjXHU1ZGFkXHU1ZGFlXHU1ZGFmXHU1ZGIwXHU1ZGIxXHU1ZGIyXHU1ZGIzXHU1ZGI0XHU1ZGI1XHU1ZGI2XHU1ZGI4XHU1ZGI5XHU1ZGJhXHU1ZGJiXHU1ZGJjXHU1ZGJkXHU1ZGJlXHU1ZGJmXHU1ZGMwXHU1ZGMx'@; put 'XHU1ZGMyXHU1ZGMzXHU1ZGM0XHU1ZGM2XHU1ZGM3XHU1ZGM4XHU1ZGM5XHU1ZGNhXHU1ZGNiXHU1ZGNjXHU1ZGNlXHU1ZGNmXHU1ZGQwXHU1ZGQxXHU1ZGQyXHU1ZGQzXHU1ZGQ0XHU1ZGQ1XHU1ZGQ2XHU1ZGQ3XHU1ZGQ4XHU1ZGQ5XHU1ZGRhXHU1ZGRjXHU1ZGRmXHU1ZGUwXHU1ZGUzXHU1'@; put 'ZGU0XHU1ZGVhXHU1ZGVjXHU1ZGVkXHVmZmZkXHU1ZGYwXHU1ZGY1XHU1ZGY2XHU1ZGY4XHU1ZGY5XHU1ZGZhXHU1ZGZiXHU1ZGZjXHU1ZGZmXHU1ZTAwXHU1ZTA0XHU1ZTA3XHU1ZTA5XHU1ZTBhXHU1ZTBiXHU1ZTBkXHU1ZTBlXHU1ZTEyXHU1ZTEzXHU1ZTE3XHU1ZTFlXHU1ZTFmXHU1ZTIw'@; put 'XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTI0XHU1ZTI1XHU1ZTI4XHU1ZTI5XHU1ZTJhXHU1ZTJiXHU1ZTJjXHU1ZTJmXHU1ZTMwXHU1ZTMyXHU1ZTMzXHU1ZTM0XHU1ZTM1XHU1ZTM2XHU1ZTM5XHU1ZTNhXHU1ZTNlXHU1ZTNmXHU1ZTQwXHU1ZTQxXHU1ZTQzXHU1ZTQ2XHU1ZTQ3XHU1ZTQ4XHU1'@; put 'ZTQ5XHU1ZTRhXHU1ZTRiXHU1ZTRkXHU1ZTRlXHU1ZTRmXHU1ZTUwXHU1ZTUxXHU1ZTUyXHU1ZTUzXHU1ZTU2XHU1ZTU3XHU1ZTU4XHU1ZTU5XHU1ZTVhXHU1ZTVjXHU1ZTVkXHU1ZTVmXHU1ZTYwXHU1ZTYzXHU1ZTY0XHU1ZTY1XHU1ZTY2XHU1ZTY3XHU1ZTY4XHU1ZTY5XHU1ZTZhXHU1ZTZi'@; put 'XHU1ZTZjXHU1ZTZkXHU1ZTZlXHU1ZTZmXHU1ZTcwXHU1ZTcxXHU1ZTc1XHU1ZTc3XHU1ZTc5XHU1ZTdlXHU1ZTgxXHU1ZTgyXHU1ZTgzXHU1ZTg1XHU1ZTg4XHU1ZTg5XHU1ZThjXHU1ZThkXHU1ZThlXHU1ZTkyXHU1ZTk4XHU1ZTliXHU1ZTlkXHU1ZWExXHU1ZWEyXHU1ZWEzXHU1ZWE0XHU1'@; put 'ZWE4XHU1ZWE5XHU1ZWFhXHU1ZWFiXHU1ZWFjXHU1ZWFlXHU1ZWFmXHU1ZWIwXHU1ZWIxXHU1ZWIyXHU1ZWI0XHU1ZWJhXHU1ZWJiXHU1ZWJjXHU1ZWJkXHU1ZWJmXHU1ZWMwXHU1ZWMxXHU1ZWMyXHU1ZWMzXHU1ZWM0XHU1ZWM1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQyXS5sZW5n'@; put 'dGg7KytzKTY1NTMzIT09Y1sxNDJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQyXVtzXV09MzYzNTIrcyxoWzM2MzUyK3NdPWNbMTQyXVtzXSk7Zm9yKGNbMTQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZWM2XHU1ZWM3XHU1'@; put 'ZWM4XHU1ZWNiXHU1ZWNjXHU1ZWNkXHU1ZWNlXHU1ZWNmXHU1ZWQwXHU1ZWQ0XHU1ZWQ1XHU1ZWQ3XHU1ZWQ4XHU1ZWQ5XHU1ZWRhXHU1ZWRjXHU1ZWRkXHU1ZWRlXHU1ZWRmXHU1ZWUwXHU1ZWUxXHU1ZWUyXHU1ZWUzXHU1ZWU0XHU1ZWU1XHU1ZWU2XHU1ZWU3XHU1ZWU5XHU1ZWViXHU1ZWVj'@; put 'XHU1ZWVkXHU1ZWVlXHU1ZWVmXHU1ZWYwXHU1ZWYxXHU1ZWYyXHU1ZWYzXHU1ZWY1XHU1ZWY4XHU1ZWY5XHU1ZWZiXHU1ZWZjXHU1ZWZkXHU1ZjA1XHU1ZjA2XHU1ZjA3XHU1ZjA5XHU1ZjBjXHU1ZjBkXHU1ZjBlXHU1ZjEwXHU1ZjEyXHU1ZjE0XHU1ZjE2XHU1ZjE5XHU1ZjFhXHU1ZjFjXHU1'@; put 'ZjFkXHU1ZjFlXHU1ZjIxXHU1ZjIyXHU1ZjIzXHU1ZjI0XHVmZmZkXHU1ZjI4XHU1ZjJiXHU1ZjJjXHU1ZjJlXHU1ZjMwXHU1ZjMyXHU1ZjMzXHU1ZjM0XHU1ZjM1XHU1ZjM2XHU1ZjM3XHU1ZjM4XHU1ZjNiXHU1ZjNkXHU1ZjNlXHU1ZjNmXHU1ZjQxXHU1ZjQyXHU1ZjQzXHU1ZjQ0XHU1ZjQ1'@; put 'XHU1ZjQ2XHU1ZjQ3XHU1ZjQ4XHU1ZjQ5XHU1ZjRhXHU1ZjRiXHU1ZjRjXHU1ZjRkXHU1ZjRlXHU1ZjRmXHU1ZjUxXHU1ZjU0XHU1ZjU5XHU1ZjVhXHU1ZjViXHU1ZjVjXHU1ZjVlXHU1ZjVmXHU1ZjYwXHU1ZjYzXHU1ZjY1XHU1ZjY3XHU1ZjY4XHU1ZjZiXHU1ZjZlXHU1ZjZmXHU1ZjcyXHU1'@; put 'Zjc0XHU1Zjc1XHU1Zjc2XHU1Zjc4XHU1ZjdhXHU1ZjdkXHU1ZjdlXHU1ZjdmXHU1ZjgzXHU1Zjg2XHU1ZjhkXHU1ZjhlXHU1ZjhmXHU1ZjkxXHU1ZjkzXHU1Zjk0XHU1Zjk2XHU1ZjlhXHU1ZjliXHU1ZjlkXHU1ZjllXHU1ZjlmXHU1ZmEwXHU1ZmEyXHU1ZmEzXHU1ZmE0XHU1ZmE1XHU1ZmE2'@; put 'XHU1ZmE3XHU1ZmE5XHU1ZmFiXHU1ZmFjXHU1ZmFmXHU1ZmIwXHU1ZmIxXHU1ZmIyXHU1ZmIzXHU1ZmI0XHU1ZmI2XHU1ZmI4XHU1ZmI5XHU1ZmJhXHU1ZmJiXHU1ZmJlXHU1ZmJmXHU1ZmMwXHU1ZmMxXHU1ZmMyXHU1ZmM3XHU1ZmM4XHU1ZmNhXHU1ZmNiXHU1ZmNlXHU1ZmQzXHU1ZmQ0XHU1'@; put 'ZmQ1XHU1ZmRhXHU1ZmRiXHU1ZmRjXHU1ZmRlXHU1ZmRmXHU1ZmUyXHU1ZmUzXHU1ZmU1XHU1ZmU2XHU1ZmU4XHU1ZmU5XHU1ZmVjXHU1ZmVmXHU1ZmYwXHU1ZmYyXHU1ZmYzXHU1ZmY0XHU1ZmY2XHU1ZmY3XHU1ZmY5XHU1ZmZhXHU1ZmZjXHU2MDA3XHVmZmZkIi5zcGxpdCgiIikscz0wO3Mh'@; put 'PWNbMTQzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQzXVtzXV09MzY2MDgrcyxoWzM2NjA4K3NdPWNbMTQzXVtzXSk7Zm9yKGNbMTQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2'@; put 'MDA4XHU2MDA5XHU2MDBiXHU2MDBjXHU2MDEwXHU2MDExXHU2MDEzXHU2MDE3XHU2MDE4XHU2MDFhXHU2MDFlXHU2MDFmXHU2MDIyXHU2MDIzXHU2MDI0XHU2MDJjXHU2MDJkXHU2MDJlXHU2MDMwXHU2MDMxXHU2MDMyXHU2MDMzXHU2MDM0XHU2MDM2XHU2MDM3XHU2MDM4XHU2MDM5XHU2MDNh'@; put 'XHU2MDNkXHU2MDNlXHU2MDQwXHU2MDQ0XHU2MDQ1XHU2MDQ2XHU2MDQ3XHU2MDQ4XHU2MDQ5XHU2MDRhXHU2MDRjXHU2MDRlXHU2MDRmXHU2MDUxXHU2MDUzXHU2MDU0XHU2MDU2XHU2MDU3XHU2MDU4XHU2MDViXHU2MDVjXHU2MDVlXHU2MDVmXHU2MDYwXHU2MDYxXHU2MDY1XHU2MDY2XHU2'@; put 'MDZlXHU2MDcxXHU2MDcyXHU2MDc0XHU2MDc1XHU2MDc3XHU2MDdlXHU2MDgwXHVmZmZkXHU2MDgxXHU2MDgyXHU2MDg1XHU2MDg2XHU2MDg3XHU2MDg4XHU2MDhhXHU2MDhiXHU2MDhlXHU2MDhmXHU2MDkwXHU2MDkxXHU2MDkzXHU2MDk1XHU2MDk3XHU2MDk4XHU2MDk5XHU2MDljXHU2MDll'@; put 'XHU2MGExXHU2MGEyXHU2MGE0XHU2MGE1XHU2MGE3XHU2MGE5XHU2MGFhXHU2MGFlXHU2MGIwXHU2MGIzXHU2MGI1XHU2MGI2XHU2MGI3XHU2MGI5XHU2MGJhXHU2MGJkXHU2MGJlXHU2MGJmXHU2MGMwXHU2MGMxXHU2MGMyXHU2MGMzXHU2MGM0XHU2MGM3XHU2MGM4XHU2MGM5XHU2MGNjXHU2'@; put 'MGNkXHU2MGNlXHU2MGNmXHU2MGQwXHU2MGQyXHU2MGQzXHU2MGQ0XHU2MGQ2XHU2MGQ3XHU2MGQ5XHU2MGRiXHU2MGRlXHU2MGUxXHU2MGUyXHU2MGUzXHU2MGU0XHU2MGU1XHU2MGVhXHU2MGYxXHU2MGYyXHU2MGY1XHU2MGY3XHU2MGY4XHU2MGZiXHU2MGZjXHU2MGZkXHU2MGZlXHU2MGZm'@; put 'XHU2MTAyXHU2MTAzXHU2MTA0XHU2MTA1XHU2MTA3XHU2MTBhXHU2MTBiXHU2MTBjXHU2MTEwXHU2MTExXHU2MTEyXHU2MTEzXHU2MTE0XHU2MTE2XHU2MTE3XHU2MTE4XHU2MTE5XHU2MTFiXHU2MTFjXHU2MTFkXHU2MTFlXHU2MTIxXHU2MTIyXHU2MTI1XHU2MTI4XHU2MTI5XHU2MTJhXHU2'@; put 'MTJjXHU2MTJkXHU2MTJlXHU2MTJmXHU2MTMwXHU2MTMxXHU2MTMyXHU2MTMzXHU2MTM0XHU2MTM1XHU2MTM2XHU2MTM3XHU2MTM4XHU2MTM5XHU2MTNhXHU2MTNiXHU2MTNjXHU2MTNkXHU2MTNlXHU2MTQwXHU2MTQxXHU2MTQyXHU2MTQzXHU2MTQ0XHU2MTQ1XHU2MTQ2XHVmZmZkIi5zcGxp'@; put 'dCgiIikscz0wO3MhPWNbMTQ0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQ0XVtzXV09MzY4NjQrcyxoWzM2ODY0K3NdPWNbMTQ0XVtzXSk7Zm9yKGNbMTQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHU2MTQ3XHU2MTQ5XHU2MTRiXHU2MTRkXHU2MTRmXHU2MTUwXHU2MTUyXHU2MTUzXHU2MTU0XHU2MTU2XHU2MTU3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTViXHU2MTVjXHU2MTVlXHU2MTVmXHU2MTYwXHU2MTYxXHU2MTYzXHU2MTY0XHU2MTY1XHU2MTY2XHU2MTY5XHU2MTZh'@; put 'XHU2MTZiXHU2MTZjXHU2MTZkXHU2MTZlXHU2MTZmXHU2MTcxXHU2MTcyXHU2MTczXHU2MTc0XHU2MTc2XHU2MTc4XHU2MTc5XHU2MTdhXHU2MTdiXHU2MTdjXHU2MTdkXHU2MTdlXHU2MTdmXHU2MTgwXHU2MTgxXHU2MTgyXHU2MTgzXHU2MTg0XHU2MTg1XHU2MTg2XHU2MTg3XHU2MTg4XHU2'@; put 'MTg5XHU2MThhXHU2MThjXHU2MThkXHU2MThmXHU2MTkwXHU2MTkxXHU2MTkyXHU2MTkzXHU2MTk1XHVmZmZkXHU2MTk2XHU2MTk3XHU2MTk4XHU2MTk5XHU2MTlhXHU2MTliXHU2MTljXHU2MTllXHU2MTlmXHU2MWEwXHU2MWExXHU2MWEyXHU2MWEzXHU2MWE0XHU2MWE1XHU2MWE2XHU2MWFh'@; put 'XHU2MWFiXHU2MWFkXHU2MWFlXHU2MWFmXHU2MWIwXHU2MWIxXHU2MWIyXHU2MWIzXHU2MWI0XHU2MWI1XHU2MWI2XHU2MWI4XHU2MWI5XHU2MWJhXHU2MWJiXHU2MWJjXHU2MWJkXHU2MWJmXHU2MWMwXHU2MWMxXHU2MWMzXHU2MWM0XHU2MWM1XHU2MWM2XHU2MWM3XHU2MWM5XHU2MWNjXHU2'@; put 'MWNkXHU2MWNlXHU2MWNmXHU2MWQwXHU2MWQzXHU2MWQ1XHU2MWQ2XHU2MWQ3XHU2MWQ4XHU2MWQ5XHU2MWRhXHU2MWRiXHU2MWRjXHU2MWRkXHU2MWRlXHU2MWRmXHU2MWUwXHU2MWUxXHU2MWUyXHU2MWUzXHU2MWU0XHU2MWU1XHU2MWU3XHU2MWU4XHU2MWU5XHU2MWVhXHU2MWViXHU2MWVj'@; put 'XHU2MWVkXHU2MWVlXHU2MWVmXHU2MWYwXHU2MWYxXHU2MWYyXHU2MWYzXHU2MWY0XHU2MWY2XHU2MWY3XHU2MWY4XHU2MWY5XHU2MWZhXHU2MWZiXHU2MWZjXHU2MWZkXHU2MWZlXHU2MjAwXHU2MjAxXHU2MjAyXHU2MjAzXHU2MjA0XHU2MjA1XHU2MjA3XHU2MjA5XHU2MjEzXHU2MjE0XHU2'@; put 'MjE5XHU2MjFjXHU2MjFkXHU2MjFlXHU2MjIwXHU2MjIzXHU2MjI2XHU2MjI3XHU2MjI4XHU2MjI5XHU2MjJiXHU2MjJkXHU2MjJmXHU2MjMwXHU2MjMxXHU2MjMyXHU2MjM1XHU2MjM2XHU2MjM4XHU2MjM5XHU2MjNhXHU2MjNiXHU2MjNjXHU2MjQyXHU2MjQ0XHU2MjQ1XHU2MjQ2XHU2MjRh'@; put 'XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQ1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQ1XVtzXV09MzcxMjArcyxoWzM3MTIwK3NdPWNbMTQ1XVtzXSk7Zm9yKGNbMTQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MjRmXHU2MjUwXHU2MjU1XHU2MjU2XHU2MjU3XHU2MjU5XHU2MjVhXHU2MjVjXHU2MjVkXHU2MjVlXHU2MjVmXHU2MjYwXHU2MjYxXHU2MjYyXHU2MjY0XHU2MjY1XHU2MjY4XHU2MjcxXHU2MjcyXHU2Mjc0XHU2Mjc1XHU2Mjc3XHU2Mjc4XHU2Mjdh'@; put 'XHU2MjdiXHU2MjdkXHU2MjgxXHU2MjgyXHU2MjgzXHU2Mjg1XHU2Mjg2XHU2Mjg3XHU2Mjg4XHU2MjhiXHU2MjhjXHU2MjhkXHU2MjhlXHU2MjhmXHU2MjkwXHU2Mjk0XHU2Mjk5XHU2MjljXHU2MjlkXHU2MjllXHU2MmEzXHU2MmE2XHU2MmE3XHU2MmE5XHU2MmFhXHU2MmFkXHU2MmFlXHU2'@; put 'MmFmXHU2MmIwXHU2MmIyXHU2MmIzXHU2MmI0XHU2MmI2XHU2MmI3XHU2MmI4XHU2MmJhXHU2MmJlXHU2MmMwXHU2MmMxXHVmZmZkXHU2MmMzXHU2MmNiXHU2MmNmXHU2MmQxXHU2MmQ1XHU2MmRkXHU2MmRlXHU2MmUwXHU2MmUxXHU2MmU0XHU2MmVhXHU2MmViXHU2MmYwXHU2MmYyXHU2MmY1'@; put 'XHU2MmY4XHU2MmY5XHU2MmZhXHU2MmZiXHU2MzAwXHU2MzAzXHU2MzA0XHU2MzA1XHU2MzA2XHU2MzBhXHU2MzBiXHU2MzBjXHU2MzBkXHU2MzBmXHU2MzEwXHU2MzEyXHU2MzEzXHU2MzE0XHU2MzE1XHU2MzE3XHU2MzE4XHU2MzE5XHU2MzFjXHU2MzI2XHU2MzI3XHU2MzI5XHU2MzJjXHU2'@; put 'MzJkXHU2MzJlXHU2MzMwXHU2MzMxXHU2MzMzXHU2MzM0XHU2MzM1XHU2MzM2XHU2MzM3XHU2MzM4XHU2MzNiXHU2MzNjXHU2MzNlXHU2MzNmXHU2MzQwXHU2MzQxXHU2MzQ0XHU2MzQ3XHU2MzQ4XHU2MzRhXHU2MzUxXHU2MzUyXHU2MzUzXHU2MzU0XHU2MzU2XHU2MzU3XHU2MzU4XHU2MzU5'@; put 'XHU2MzVhXHU2MzViXHU2MzVjXHU2MzVkXHU2MzYwXHU2MzY0XHU2MzY1XHU2MzY2XHU2MzY4XHU2MzZhXHU2MzZiXHU2MzZjXHU2MzZmXHU2MzcwXHU2MzcyXHU2MzczXHU2Mzc0XHU2Mzc1XHU2Mzc4XHU2Mzc5XHU2MzdjXHU2MzdkXHU2MzdlXHU2MzdmXHU2MzgxXHU2MzgzXHU2Mzg0XHU2'@; put 'Mzg1XHU2Mzg2XHU2MzhiXHU2MzhkXHU2MzkxXHU2MzkzXHU2Mzk0XHU2Mzk1XHU2Mzk3XHU2Mzk5XHU2MzlhXHU2MzliXHU2MzljXHU2MzlkXHU2MzllXHU2MzlmXHU2M2ExXHU2M2E0XHU2M2E2XHU2M2FiXHU2M2FmXHU2M2IxXHU2M2IyXHU2M2I1XHU2M2I2XHU2M2I5XHU2M2JiXHU2M2Jk'@; put 'XHU2M2JmXHU2M2MwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQ2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQ2XVtzXV09MzczNzYrcyxoWzM3Mzc2K3NdPWNbMTQ2XVtzXSk7Zm9yKGNbMTQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2M2MxXHU2M2MyXHU2M2MzXHU2M2M1XHU2M2M3XHU2M2M4XHU2M2NhXHU2M2NiXHU2M2NjXHU2M2QxXHU2M2QzXHU2M2Q0XHU2M2Q1XHU2M2Q3XHU2M2Q4XHU2M2Q5XHU2M2RhXHU2M2RiXHU2M2RjXHU2M2RkXHU2M2RmXHU2M2Uy'@; put 'XHU2M2U0XHU2M2U1XHU2M2U2XHU2M2U3XHU2M2U4XHU2M2ViXHU2M2VjXHU2M2VlXHU2M2VmXHU2M2YwXHU2M2YxXHU2M2YzXHU2M2Y1XHU2M2Y3XHU2M2Y5XHU2M2ZhXHU2M2ZiXHU2M2ZjXHU2M2ZlXHU2NDAzXHU2NDA0XHU2NDA2XHU2NDA3XHU2NDA4XHU2NDA5XHU2NDBhXHU2NDBkXHU2'@; put 'NDBlXHU2NDExXHU2NDEyXHU2NDE1XHU2NDE2XHU2NDE3XHU2NDE4XHU2NDE5XHU2NDFhXHU2NDFkXHU2NDFmXHU2NDIyXHU2NDIzXHU2NDI0XHVmZmZkXHU2NDI1XHU2NDI3XHU2NDI4XHU2NDI5XHU2NDJiXHU2NDJlXHU2NDJmXHU2NDMwXHU2NDMxXHU2NDMyXHU2NDMzXHU2NDM1XHU2NDM2'@; put 'XHU2NDM3XHU2NDM4XHU2NDM5XHU2NDNiXHU2NDNjXHU2NDNlXHU2NDQwXHU2NDQyXHU2NDQzXHU2NDQ5XHU2NDRiXHU2NDRjXHU2NDRkXHU2NDRlXHU2NDRmXHU2NDUwXHU2NDUxXHU2NDUzXHU2NDU1XHU2NDU2XHU2NDU3XHU2NDU5XHU2NDVhXHU2NDViXHU2NDVjXHU2NDVkXHU2NDVmXHU2'@; put 'NDYwXHU2NDYxXHU2NDYyXHU2NDYzXHU2NDY0XHU2NDY1XHU2NDY2XHU2NDY4XHU2NDZhXHU2NDZiXHU2NDZjXHU2NDZlXHU2NDZmXHU2NDcwXHU2NDcxXHU2NDcyXHU2NDczXHU2NDc0XHU2NDc1XHU2NDc2XHU2NDc3XHU2NDdiXHU2NDdjXHU2NDdkXHU2NDdlXHU2NDdmXHU2NDgwXHU2NDgx'@; put 'XHU2NDgzXHU2NDg2XHU2NDg4XHU2NDg5XHU2NDhhXHU2NDhiXHU2NDhjXHU2NDhkXHU2NDhlXHU2NDhmXHU2NDkwXHU2NDkzXHU2NDk0XHU2NDk3XHU2NDk4XHU2NDlhXHU2NDliXHU2NDljXHU2NDlkXHU2NDlmXHU2NGEwXHU2NGExXHU2NGEyXHU2NGEzXHU2NGE1XHU2NGE2XHU2NGE3XHU2'@; put 'NGE4XHU2NGFhXHU2NGFiXHU2NGFmXHU2NGIxXHU2NGIyXHU2NGIzXHU2NGI0XHU2NGI2XHU2NGI5XHU2NGJiXHU2NGJkXHU2NGJlXHU2NGJmXHU2NGMxXHU2NGMzXHU2NGM0XHU2NGM2XHU2NGM3XHU2NGM4XHU2NGM5XHU2NGNhXHU2NGNiXHU2NGNjXHU2NGNmXHU2NGQxXHU2NGQzXHU2NGQ0'@; put 'XHU2NGQ1XHU2NGQ2XHU2NGQ5XHU2NGRhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQ3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQ3XVtzXV09Mzc2MzIrcyxoWzM3NjMyK3NdPWNbMTQ3XVtzXSk7Zm9yKGNbMTQ4XT0iXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NGRiXHU2NGRjXHU2NGRkXHU2NGRmXHU2NGUwXHU2NGUxXHU2NGUzXHU2NGU1XHU2NGU3XHU2NGU4XHU2NGU5XHU2NGVhXHU2NGViXHU2NGVjXHU2NGVkXHU2NGVlXHU2NGVmXHU2NGYwXHU2NGYxXHU2NGYy'@; put 'XHU2NGYzXHU2NGY0XHU2NGY1XHU2NGY2XHU2NGY3XHU2NGY4XHU2NGY5XHU2NGZhXHU2NGZiXHU2NGZjXHU2NGZkXHU2NGZlXHU2NGZmXHU2NTAxXHU2NTAyXHU2NTAzXHU2NTA0XHU2NTA1XHU2NTA2XHU2NTA3XHU2NTA4XHU2NTBhXHU2NTBiXHU2NTBjXHU2NTBkXHU2NTBlXHU2NTBmXHU2'@; put 'NTEwXHU2NTExXHU2NTEzXHU2NTE0XHU2NTE1XHU2NTE2XHU2NTE3XHU2NTE5XHU2NTFhXHU2NTFiXHU2NTFjXHU2NTFkXHU2NTFlXHU2NTFmXHU2NTIwXHU2NTIxXHVmZmZkXHU2NTIyXHU2NTIzXHU2NTI0XHU2NTI2XHU2NTI3XHU2NTI4XHU2NTI5XHU2NTJhXHU2NTJjXHU2NTJkXHU2NTMw'@; put 'XHU2NTMxXHU2NTMyXHU2NTMzXHU2NTM3XHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQwXHU2NTQxXHU2NTQyXHU2NTQzXHU2NTQ0XHU2NTQ2XHU2NTQ3XHU2NTRhXHU2NTRiXHU2NTRkXHU2NTRlXHU2NTUwXHU2NTUyXHU2NTUzXHU2NTU0XHU2NTU3XHU2NTU4XHU2NTVhXHU2NTVjXHU2NTVmXHU2'@; put 'NTYwXHU2NTYxXHU2NTY0XHU2NTY1XHU2NTY3XHU2NTY4XHU2NTY5XHU2NTZhXHU2NTZkXHU2NTZlXHU2NTZmXHU2NTcxXHU2NTczXHU2NTc1XHU2NTc2XHU2NTc4XHU2NTc5XHU2NTdhXHU2NTdiXHU2NTdjXHU2NTdkXHU2NTdlXHU2NTdmXHU2NTgwXHU2NTgxXHU2NTgyXHU2NTgzXHU2NTg0'@; put 'XHU2NTg1XHU2NTg2XHU2NTg4XHU2NTg5XHU2NThhXHU2NThkXHU2NThlXHU2NThmXHU2NTkyXHU2NTk0XHU2NTk1XHU2NTk2XHU2NTk4XHU2NTlhXHU2NTlkXHU2NTllXHU2NWEwXHU2NWEyXHU2NWEzXHU2NWE2XHU2NWE4XHU2NWFhXHU2NWFjXHU2NWFlXHU2NWIxXHU2NWIyXHU2NWIzXHU2'@; put 'NWI0XHU2NWI1XHU2NWI2XHU2NWI3XHU2NWI4XHU2NWJhXHU2NWJiXHU2NWJlXHU2NWJmXHU2NWMwXHU2NWMyXHU2NWM3XHU2NWM4XHU2NWM5XHU2NWNhXHU2NWNkXHU2NWQwXHU2NWQxXHU2NWQzXHU2NWQ0XHU2NWQ1XHU2NWQ4XHU2NWQ5XHU2NWRhXHU2NWRiXHU2NWRjXHU2NWRkXHU2NWRl'@; put 'XHU2NWRmXHU2NWUxXHU2NWUzXHU2NWU0XHU2NWVhXHU2NWViXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQ4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQ4XVtzXV09Mzc4ODgrcyxoWzM3ODg4K3NdPWNbMTQ4XVtzXSk7Zm9yKGNbMTQ5'@; put 'XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NWYyXHU2NWYzXHU2NWY0XHU2NWY1XHU2NWY4XHU2NWY5XHU2NWZiXHU2NWZjXHU2NWZkXHU2NWZlXHU2NWZmXHU2NjAxXHU2NjA0XHU2NjA1XHU2NjA3XHU2NjA4XHU2NjA5XHU2NjBi'@; put 'XHU2NjBkXHU2NjEwXHU2NjExXHU2NjEyXHU2NjE2XHU2NjE3XHU2NjE4XHU2NjFhXHU2NjFiXHU2NjFjXHU2NjFlXHU2NjIxXHU2NjIyXHU2NjIzXHU2NjI0XHU2NjI2XHU2NjI5XHU2NjJhXHU2NjJiXHU2NjJjXHU2NjJlXHU2NjMwXHU2NjMyXHU2NjMzXHU2NjM3XHU2NjM4XHU2NjM5XHU2'@; put 'NjNhXHU2NjNiXHU2NjNkXHU2NjNmXHU2NjQwXHU2NjQyXHU2NjQ0XHU2NjQ1XHU2NjQ2XHU2NjQ3XHU2NjQ4XHU2NjQ5XHU2NjRhXHU2NjRkXHU2NjRlXHU2NjUwXHU2NjUxXHU2NjU4XHVmZmZkXHU2NjU5XHU2NjViXHU2NjVjXHU2NjVkXHU2NjVlXHU2NjYwXHU2NjYyXHU2NjYzXHU2NjY1'@; put 'XHU2NjY3XHU2NjY5XHU2NjZhXHU2NjZiXHU2NjZjXHU2NjZkXHU2NjcxXHU2NjcyXHU2NjczXHU2Njc1XHU2Njc4XHU2Njc5XHU2NjdiXHU2NjdjXHU2NjdkXHU2NjdmXHU2NjgwXHU2NjgxXHU2NjgzXHU2Njg1XHU2Njg2XHU2Njg4XHU2Njg5XHU2NjhhXHU2NjhiXHU2NjhkXHU2NjhlXHU2'@; put 'NjhmXHU2NjkwXHU2NjkyXHU2NjkzXHU2Njk0XHU2Njk1XHU2Njk4XHU2Njk5XHU2NjlhXHU2NjliXHU2NjljXHU2NjllXHU2NjlmXHU2NmEwXHU2NmExXHU2NmEyXHU2NmEzXHU2NmE0XHU2NmE1XHU2NmE2XHU2NmE5XHU2NmFhXHU2NmFiXHU2NmFjXHU2NmFkXHU2NmFmXHU2NmIwXHU2NmIx'@; put 'XHU2NmIyXHU2NmIzXHU2NmI1XHU2NmI2XHU2NmI3XHU2NmI4XHU2NmJhXHU2NmJiXHU2NmJjXHU2NmJkXHU2NmJmXHU2NmMwXHU2NmMxXHU2NmMyXHU2NmMzXHU2NmM0XHU2NmM1XHU2NmM2XHU2NmM3XHU2NmM4XHU2NmM5XHU2NmNhXHU2NmNiXHU2NmNjXHU2NmNkXHU2NmNlXHU2NmNmXHU2'@; put 'NmQwXHU2NmQxXHU2NmQyXHU2NmQzXHU2NmQ0XHU2NmQ1XHU2NmQ2XHU2NmQ3XHU2NmQ4XHU2NmRhXHU2NmRlXHU2NmRmXHU2NmUwXHU2NmUxXHU2NmUyXHU2NmUzXHU2NmU0XHU2NmU1XHU2NmU3XHU2NmU4XHU2NmVhXHU2NmViXHU2NmVjXHU2NmVkXHU2NmVlXHU2NmVmXHU2NmYxXHU2NmY1'@; put 'XHU2NmY2XHU2NmY4XHU2NmZhXHU2NmZiXHU2NmZkXHU2NzAxXHU2NzAyXHU2NzAzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTQ5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNDldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTQ5XVtzXV09MzgxNDQrcyxoWzM4MTQ0K3NdPWNbMTQ5XVtz'@; put 'XSk7Zm9yKGNbMTUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzA0XHU2NzA1XHU2NzA2XHU2NzA3XHU2NzBjXHU2NzBlXHU2NzBmXHU2NzExXHU2NzEyXHU2NzEzXHU2NzE2XHU2NzE4XHU2NzE5XHU2NzFhXHU2NzFjXHU2NzFl'@; put 'XHU2NzIwXHU2NzIxXHU2NzIyXHU2NzIzXHU2NzI0XHU2NzI1XHU2NzI3XHU2NzI5XHU2NzJlXHU2NzMwXHU2NzMyXHU2NzMzXHU2NzM2XHU2NzM3XHU2NzM4XHU2NzM5XHU2NzNiXHU2NzNjXHU2NzNlXHU2NzNmXHU2NzQxXHU2NzQ0XHU2NzQ1XHU2NzQ3XHU2NzRhXHU2NzRiXHU2NzRkXHU2'@; put 'NzUyXHU2NzU0XHU2NzU1XHU2NzU3XHU2NzU4XHU2NzU5XHU2NzVhXHU2NzViXHU2NzVkXHU2NzYyXHU2NzYzXHU2NzY0XHU2NzY2XHU2NzY3XHU2NzZiXHU2NzZjXHU2NzZlXHU2NzcxXHU2Nzc0XHU2Nzc2XHVmZmZkXHU2Nzc4XHU2Nzc5XHU2NzdhXHU2NzdiXHU2NzdkXHU2NzgwXHU2Nzgy'@; put 'XHU2NzgzXHU2Nzg1XHU2Nzg2XHU2Nzg4XHU2NzhhXHU2NzhjXHU2NzhkXHU2NzhlXHU2NzhmXHU2NzkxXHU2NzkyXHU2NzkzXHU2Nzk0XHU2Nzk2XHU2Nzk5XHU2NzliXHU2NzlmXHU2N2EwXHU2N2ExXHU2N2E0XHU2N2E2XHU2N2E5XHU2N2FjXHU2N2FlXHU2N2IxXHU2N2IyXHU2N2I0XHU2'@; put 'N2I5XHU2N2JhXHU2N2JiXHU2N2JjXHU2N2JkXHU2N2JlXHU2N2JmXHU2N2MwXHU2N2MyXHU2N2M1XHU2N2M2XHU2N2M3XHU2N2M4XHU2N2M5XHU2N2NhXHU2N2NiXHU2N2NjXHU2N2NkXHU2N2NlXHU2N2Q1XHU2N2Q2XHU2N2Q3XHU2N2RiXHU2N2RmXHU2N2UxXHU2N2UzXHU2N2U0XHU2N2U2'@; put 'XHU2N2U3XHU2N2U4XHU2N2VhXHU2N2ViXHU2N2VkXHU2N2VlXHU2N2YyXHU2N2Y1XHU2N2Y2XHU2N2Y3XHU2N2Y4XHU2N2Y5XHU2N2ZhXHU2N2ZiXHU2N2ZjXHU2N2ZlXHU2ODAxXHU2ODAyXHU2ODAzXHU2ODA0XHU2ODA2XHU2ODBkXHU2ODEwXHU2ODEyXHU2ODE0XHU2ODE1XHU2ODE4XHU2'@; put 'ODE5XHU2ODFhXHU2ODFiXHU2ODFjXHU2ODFlXHU2ODFmXHU2ODIwXHU2ODIyXHU2ODIzXHU2ODI0XHU2ODI1XHU2ODI2XHU2ODI3XHU2ODI4XHU2ODJiXHU2ODJjXHU2ODJkXHU2ODJlXHU2ODJmXHU2ODMwXHU2ODMxXHU2ODM0XHU2ODM1XHU2ODM2XHU2ODNhXHU2ODNiXHU2ODNmXHU2ODQ3'@; put 'XHU2ODRiXHU2ODRkXHU2ODRmXHU2ODUyXHU2ODU2XHU2ODU3XHU2ODU4XHU2ODU5XHU2ODVhXHU2ODViXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTUwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTUwXVtzXV09Mzg0MDArcyxoWzM4NDAw'@; put 'K3NdPWNbMTUwXVtzXSk7Zm9yKGNbMTUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ODVjXHU2ODVkXHU2ODVlXHU2ODVmXHU2ODZhXHU2ODZjXHU2ODZkXHU2ODZlXHU2ODZmXHU2ODcwXHU2ODcxXHU2ODcyXHU2ODczXHU2ODc1'@; put 'XHU2ODc4XHU2ODc5XHU2ODdhXHU2ODdiXHU2ODdjXHU2ODdkXHU2ODdlXHU2ODdmXHU2ODgwXHU2ODgyXHU2ODg0XHU2ODg3XHU2ODg4XHU2ODg5XHU2ODhhXHU2ODhiXHU2ODhjXHU2ODhkXHU2ODhlXHU2ODkwXHU2ODkxXHU2ODkyXHU2ODk0XHU2ODk1XHU2ODk2XHU2ODk4XHU2ODk5XHU2'@; put 'ODlhXHU2ODliXHU2ODljXHU2ODlkXHU2ODllXHU2ODlmXHU2OGEwXHU2OGExXHU2OGEzXHU2OGE0XHU2OGE1XHU2OGE5XHU2OGFhXHU2OGFiXHU2OGFjXHU2OGFlXHU2OGIxXHU2OGIyXHU2OGI0XHU2OGI2XHU2OGI3XHU2OGI4XHVmZmZkXHU2OGI5XHU2OGJhXHU2OGJiXHU2OGJjXHU2OGJk'@; put 'XHU2OGJlXHU2OGJmXHU2OGMxXHU2OGMzXHU2OGM0XHU2OGM1XHU2OGM2XHU2OGM3XHU2OGM4XHU2OGNhXHU2OGNjXHU2OGNlXHU2OGNmXHU2OGQwXHU2OGQxXHU2OGQzXHU2OGQ0XHU2OGQ2XHU2OGQ3XHU2OGQ5XHU2OGRiXHU2OGRjXHU2OGRkXHU2OGRlXHU2OGRmXHU2OGUxXHU2OGUyXHU2'@; put 'OGU0XHU2OGU1XHU2OGU2XHU2OGU3XHU2OGU4XHU2OGU5XHU2OGVhXHU2OGViXHU2OGVjXHU2OGVkXHU2OGVmXHU2OGYyXHU2OGYzXHU2OGY0XHU2OGY2XHU2OGY3XHU2OGY4XHU2OGZiXHU2OGZkXHU2OGZlXHU2OGZmXHU2OTAwXHU2OTAyXHU2OTAzXHU2OTA0XHU2OTA2XHU2OTA3XHU2OTA4'@; put 'XHU2OTA5XHU2OTBhXHU2OTBjXHU2OTBmXHU2OTExXHU2OTEzXHU2OTE0XHU2OTE1XHU2OTE2XHU2OTE3XHU2OTE4XHU2OTE5XHU2OTFhXHU2OTFiXHU2OTFjXHU2OTFkXHU2OTFlXHU2OTIxXHU2OTIyXHU2OTIzXHU2OTI1XHU2OTI2XHU2OTI3XHU2OTI4XHU2OTI5XHU2OTJhXHU2OTJiXHU2'@; put 'OTJjXHU2OTJlXHU2OTJmXHU2OTMxXHU2OTMyXHU2OTMzXHU2OTM1XHU2OTM2XHU2OTM3XHU2OTM4XHU2OTNhXHU2OTNiXHU2OTNjXHU2OTNlXHU2OTQwXHU2OTQxXHU2OTQzXHU2OTQ0XHU2OTQ1XHU2OTQ2XHU2OTQ3XHU2OTQ4XHU2OTQ5XHU2OTRhXHU2OTRiXHU2OTRjXHU2OTRkXHU2OTRl'@; put 'XHU2OTRmXHU2OTUwXHU2OTUxXHU2OTUyXHU2OTUzXHU2OTU1XHU2OTU2XHU2OTU4XHU2OTU5XHU2OTViXHU2OTVjXHU2OTVmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTUxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTUxXVtzXV09Mzg2'@; put 'NTYrcyxoWzM4NjU2K3NdPWNbMTUxXVtzXSk7Zm9yKGNbMTUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTYxXHU2OTYyXHU2OTY0XHU2OTY1XHU2OTY3XHU2OTY4XHU2OTY5XHU2OTZhXHU2OTZjXHU2OTZkXHU2OTZmXHU2OTcw'@; put 'XHU2OTcyXHU2OTczXHU2OTc0XHU2OTc1XHU2OTc2XHU2OTdhXHU2OTdiXHU2OTdkXHU2OTdlXHU2OTdmXHU2OTgxXHU2OTgzXHU2OTg1XHU2OThhXHU2OThiXHU2OThjXHU2OThlXHU2OThmXHU2OTkwXHU2OTkxXHU2OTkyXHU2OTkzXHU2OTk2XHU2OTk3XHU2OTk5XHU2OTlhXHU2OTlkXHU2'@; put 'OTllXHU2OTlmXHU2OWEwXHU2OWExXHU2OWEyXHU2OWEzXHU2OWE0XHU2OWE1XHU2OWE2XHU2OWE5XHU2OWFhXHU2OWFjXHU2OWFlXHU2OWFmXHU2OWIwXHU2OWIyXHU2OWIzXHU2OWI1XHU2OWI2XHU2OWI4XHU2OWI5XHU2OWJhXHU2OWJjXHU2OWJkXHVmZmZkXHU2OWJlXHU2OWJmXHU2OWMw'@; put 'XHU2OWMyXHU2OWMzXHU2OWM0XHU2OWM1XHU2OWM2XHU2OWM3XHU2OWM4XHU2OWM5XHU2OWNiXHU2OWNkXHU2OWNmXHU2OWQxXHU2OWQyXHU2OWQzXHU2OWQ1XHU2OWQ2XHU2OWQ3XHU2OWQ4XHU2OWQ5XHU2OWRhXHU2OWRjXHU2OWRkXHU2OWRlXHU2OWUxXHU2OWUyXHU2OWUzXHU2OWU0XHU2'@; put 'OWU1XHU2OWU2XHU2OWU3XHU2OWU4XHU2OWU5XHU2OWVhXHU2OWViXHU2OWVjXHU2OWVlXHU2OWVmXHU2OWYwXHU2OWYxXHU2OWYzXHU2OWY0XHU2OWY1XHU2OWY2XHU2OWY3XHU2OWY4XHU2OWY5XHU2OWZhXHU2OWZiXHU2OWZjXHU2OWZlXHU2YTAwXHU2YTAxXHU2YTAyXHU2YTAzXHU2YTA0'@; put 'XHU2YTA1XHU2YTA2XHU2YTA3XHU2YTA4XHU2YTA5XHU2YTBiXHU2YTBjXHU2YTBkXHU2YTBlXHU2YTBmXHU2YTEwXHU2YTExXHU2YTEyXHU2YTEzXHU2YTE0XHU2YTE1XHU2YTE2XHU2YTE5XHU2YTFhXHU2YTFiXHU2YTFjXHU2YTFkXHU2YTFlXHU2YTIwXHU2YTIyXHU2YTIzXHU2YTI0XHU2'@; put 'YTI1XHU2YTI2XHU2YTI3XHU2YTI5XHU2YTJiXHU2YTJjXHU2YTJkXHU2YTJlXHU2YTMwXHU2YTMyXHU2YTMzXHU2YTM0XHU2YTM2XHU2YTM3XHU2YTM4XHU2YTM5XHU2YTNhXHU2YTNiXHU2YTNjXHU2YTNmXHU2YTQwXHU2YTQxXHU2YTQyXHU2YTQzXHU2YTQ1XHU2YTQ2XHU2YTQ4XHU2YTQ5'@; put 'XHU2YTRhXHU2YTRiXHU2YTRjXHU2YTRkXHU2YTRlXHU2YTRmXHU2YTUxXHU2YTUyXHU2YTUzXHU2YTU0XHU2YTU1XHU2YTU2XHU2YTU3XHU2YTVhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTUyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2Nb'@; put 'MTUyXVtzXV09Mzg5MTIrcyxoWzM4OTEyK3NdPWNbMTUyXVtzXSk7Zm9yKGNbMTUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTVjXHU2YTVkXHU2YTVlXHU2YTVmXHU2YTYwXHU2YTYyXHU2YTYzXHU2YTY0XHU2YTY2XHU2YTY3'@; put 'XHU2YTY4XHU2YTY5XHU2YTZhXHU2YTZiXHU2YTZjXHU2YTZkXHU2YTZlXHU2YTZmXHU2YTcwXHU2YTcyXHU2YTczXHU2YTc0XHU2YTc1XHU2YTc2XHU2YTc3XHU2YTc4XHU2YTdhXHU2YTdiXHU2YTdkXHU2YTdlXHU2YTdmXHU2YTgxXHU2YTgyXHU2YTgzXHU2YTg1XHU2YTg2XHU2YTg3XHU2'@; put 'YTg4XHU2YTg5XHU2YThhXHU2YThiXHU2YThjXHU2YThkXHU2YThmXHU2YTkyXHU2YTkzXHU2YTk0XHU2YTk1XHU2YTk2XHU2YTk4XHU2YTk5XHU2YTlhXHU2YTliXHU2YTljXHU2YTlkXHU2YTllXHU2YTlmXHU2YWExXHU2YWEyXHU2YWEzXHU2YWE0XHU2YWE1XHU2YWE2XHVmZmZkXHU2YWE3'@; put 'XHU2YWE4XHU2YWFhXHU2YWFkXHU2YWFlXHU2YWFmXHU2YWIwXHU2YWIxXHU2YWIyXHU2YWIzXHU2YWI0XHU2YWI1XHU2YWI2XHU2YWI3XHU2YWI4XHU2YWI5XHU2YWJhXHU2YWJiXHU2YWJjXHU2YWJkXHU2YWJlXHU2YWJmXHU2YWMwXHU2YWMxXHU2YWMyXHU2YWMzXHU2YWM0XHU2YWM1XHU2'@; put 'YWM2XHU2YWM3XHU2YWM4XHU2YWM5XHU2YWNhXHU2YWNiXHU2YWNjXHU2YWNkXHU2YWNlXHU2YWNmXHU2YWQwXHU2YWQxXHU2YWQyXHU2YWQzXHU2YWQ0XHU2YWQ1XHU2YWQ2XHU2YWQ3XHU2YWQ4XHU2YWQ5XHU2YWRhXHU2YWRiXHU2YWRjXHU2YWRkXHU2YWRlXHU2YWRmXHU2YWUwXHU2YWUx'@; put 'XHU2YWUyXHU2YWUzXHU2YWU0XHU2YWU1XHU2YWU2XHU2YWU3XHU2YWU4XHU2YWU5XHU2YWVhXHU2YWViXHU2YWVjXHU2YWVkXHU2YWVlXHU2YWVmXHU2YWYwXHU2YWYxXHU2YWYyXHU2YWYzXHU2YWY0XHU2YWY1XHU2YWY2XHU2YWY3XHU2YWY4XHU2YWY5XHU2YWZhXHU2YWZiXHU2YWZjXHU2'@; put 'YWZkXHU2YWZlXHU2YWZmXHU2YjAwXHU2YjAxXHU2YjAyXHU2YjAzXHU2YjA0XHU2YjA1XHU2YjA2XHU2YjA3XHU2YjA4XHU2YjA5XHU2YjBhXHU2YjBiXHU2YjBjXHU2YjBkXHU2YjBlXHU2YjBmXHU2YjEwXHU2YjExXHU2YjEyXHU2YjEzXHU2YjE0XHU2YjE1XHU2YjE2XHU2YjE3XHU2YjE4'@; put 'XHU2YjE5XHU2YjFhXHU2YjFiXHU2YjFjXHU2YjFkXHU2YjFlXHU2YjFmXHU2YjI1XHU2YjI2XHU2YjI4XHU2YjI5XHU2YjJhXHU2YjJiXHU2YjJjXHU2YjJkXHU2YjJlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTUzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTNdW3NdLmNoYXJDb2Rl'@; put 'QXQoMCkmJih5W2NbMTUzXVtzXV09MzkxNjgrcyxoWzM5MTY4K3NdPWNbMTUzXVtzXSk7Zm9yKGNbMTU0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YjJmXHU2YjMwXHU2YjMxXHU2YjMzXHU2YjM0XHU2YjM1XHU2YjM2XHU2YjM4'@; put 'XHU2YjNiXHU2YjNjXHU2YjNkXHU2YjNmXHU2YjQwXHU2YjQxXHU2YjQyXHU2YjQ0XHU2YjQ1XHU2YjQ4XHU2YjRhXHU2YjRiXHU2YjRkXHU2YjRlXHU2YjRmXHU2YjUwXHU2YjUxXHU2YjUyXHU2YjUzXHU2YjU0XHU2YjU1XHU2YjU2XHU2YjU3XHU2YjU4XHU2YjVhXHU2YjViXHU2YjVjXHU2'@; put 'YjVkXHU2YjVlXHU2YjVmXHU2YjYwXHU2YjYxXHU2YjY4XHU2YjY5XHU2YjZiXHU2YjZjXHU2YjZkXHU2YjZlXHU2YjZmXHU2YjcwXHU2YjcxXHU2YjcyXHU2YjczXHU2Yjc0XHU2Yjc1XHU2Yjc2XHU2Yjc3XHU2Yjc4XHU2YjdhXHU2YjdkXHU2YjdlXHU2YjdmXHU2YjgwXHU2Yjg1XHU2Yjg4'@; put 'XHVmZmZkXHU2YjhjXHU2YjhlXHU2YjhmXHU2YjkwXHU2YjkxXHU2Yjk0XHU2Yjk1XHU2Yjk3XHU2Yjk4XHU2Yjk5XHU2YjljXHU2YjlkXHU2YjllXHU2YjlmXHU2YmEwXHU2YmEyXHU2YmEzXHU2YmE0XHU2YmE1XHU2YmE2XHU2YmE3XHU2YmE4XHU2YmE5XHU2YmFiXHU2YmFjXHU2YmFkXHU2'@; put 'YmFlXHU2YmFmXHU2YmIwXHU2YmIxXHU2YmIyXHU2YmI2XHU2YmI4XHU2YmI5XHU2YmJhXHU2YmJiXHU2YmJjXHU2YmJkXHU2YmJlXHU2YmMwXHU2YmMzXHU2YmM0XHU2YmM2XHU2YmM3XHU2YmM4XHU2YmM5XHU2YmNhXHU2YmNjXHU2YmNlXHU2YmQwXHU2YmQxXHU2YmQ4XHU2YmRhXHU2YmRj'@; put 'XHU2YmRkXHU2YmRlXHU2YmRmXHU2YmUwXHU2YmUyXHU2YmUzXHU2YmU0XHU2YmU1XHU2YmU2XHU2YmU3XHU2YmU4XHU2YmU5XHU2YmVjXHU2YmVkXHU2YmVlXHU2YmYwXHU2YmYxXHU2YmYyXHU2YmY0XHU2YmY2XHU2YmY3XHU2YmY4XHU2YmZhXHU2YmZiXHU2YmZjXHU2YmZlXHU2YmZmXHU2'@; put 'YzAwXHU2YzAxXHU2YzAyXHU2YzAzXHU2YzA0XHU2YzA4XHU2YzA5XHU2YzBhXHU2YzBiXHU2YzBjXHU2YzBlXHU2YzEyXHU2YzE3XHU2YzFjXHU2YzFkXHU2YzFlXHU2YzIwXHU2YzIzXHU2YzI1XHU2YzJiXHU2YzJjXHU2YzJkXHU2YzMxXHU2YzMzXHU2YzM2XHU2YzM3XHU2YzM5XHU2YzNh'@; put 'XHU2YzNiXHU2YzNjXHU2YzNlXHU2YzNmXHU2YzQzXHU2YzQ0XHU2YzQ1XHU2YzQ4XHU2YzRiXHU2YzRjXHU2YzRkXHU2YzRlXHU2YzRmXHU2YzUxXHU2YzUyXHU2YzUzXHU2YzU2XHU2YzU4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTU0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTRd'@; put 'W3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTU0XVtzXV09Mzk0MjQrcyxoWzM5NDI0K3NdPWNbMTU0XVtzXSk7Zm9yKGNbMTU1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzU5XHU2YzVhXHU2YzYyXHU2YzYzXHU2YzY1XHU2YzY2'@; put 'XHU2YzY3XHU2YzZiXHU2YzZjXHU2YzZkXHU2YzZlXHU2YzZmXHU2YzcxXHU2YzczXHU2Yzc1XHU2Yzc3XHU2Yzc4XHU2YzdhXHU2YzdiXHU2YzdjXHU2YzdmXHU2YzgwXHU2Yzg0XHU2Yzg3XHU2YzhhXHU2YzhiXHU2YzhkXHU2YzhlXHU2YzkxXHU2YzkyXHU2Yzk1XHU2Yzk2XHU2Yzk3XHU2'@; put 'Yzk4XHU2YzlhXHU2YzljXHU2YzlkXHU2YzllXHU2Y2EwXHU2Y2EyXHU2Y2E4XHU2Y2FjXHU2Y2FmXHU2Y2IwXHU2Y2I0XHU2Y2I1XHU2Y2I2XHU2Y2I3XHU2Y2JhXHU2Y2MwXHU2Y2MxXHU2Y2MyXHU2Y2MzXHU2Y2M2XHU2Y2M3XHU2Y2M4XHU2Y2NiXHU2Y2NkXHU2Y2NlXHU2Y2NmXHU2Y2Qx'@; put 'XHU2Y2QyXHU2Y2Q4XHVmZmZkXHU2Y2Q5XHU2Y2RhXHU2Y2RjXHU2Y2RkXHU2Y2RmXHU2Y2U0XHU2Y2U2XHU2Y2U3XHU2Y2U5XHU2Y2VjXHU2Y2VkXHU2Y2YyXHU2Y2Y0XHU2Y2Y5XHU2Y2ZmXHU2ZDAwXHU2ZDAyXHU2ZDAzXHU2ZDA1XHU2ZDA2XHU2ZDA4XHU2ZDA5XHU2ZDBhXHU2ZDBkXHU2'@; put 'ZDBmXHU2ZDEwXHU2ZDExXHU2ZDEzXHU2ZDE0XHU2ZDE1XHU2ZDE2XHU2ZDE4XHU2ZDFjXHU2ZDFkXHU2ZDFmXHU2ZDIwXHU2ZDIxXHU2ZDIyXHU2ZDIzXHU2ZDI0XHU2ZDI2XHU2ZDI4XHU2ZDI5XHU2ZDJjXHU2ZDJkXHU2ZDJmXHU2ZDMwXHU2ZDM0XHU2ZDM2XHU2ZDM3XHU2ZDM4XHU2ZDNh'@; put 'XHU2ZDNmXHU2ZDQwXHU2ZDQyXHU2ZDQ0XHU2ZDQ5XHU2ZDRjXHU2ZDUwXHU2ZDU1XHU2ZDU2XHU2ZDU3XHU2ZDU4XHU2ZDViXHU2ZDVkXHU2ZDVmXHU2ZDYxXHU2ZDYyXHU2ZDY0XHU2ZDY1XHU2ZDY3XHU2ZDY4XHU2ZDZiXHU2ZDZjXHU2ZDZkXHU2ZDcwXHU2ZDcxXHU2ZDcyXHU2ZDczXHU2'@; put 'ZDc1XHU2ZDc2XHU2ZDc5XHU2ZDdhXHU2ZDdiXHU2ZDdkXHU2ZDdlXHU2ZDdmXHU2ZDgwXHU2ZDgxXHU2ZDgzXHU2ZDg0XHU2ZDg2XHU2ZDg3XHU2ZDhhXHU2ZDhiXHU2ZDhkXHU2ZDhmXHU2ZDkwXHU2ZDkyXHU2ZDk2XHU2ZDk3XHU2ZDk4XHU2ZDk5XHU2ZDlhXHU2ZDljXHU2ZGEyXHU2ZGE1'@; put 'XHU2ZGFjXHU2ZGFkXHU2ZGIwXHU2ZGIxXHU2ZGIzXHU2ZGI0XHU2ZGI2XHU2ZGI3XHU2ZGI5XHU2ZGJhXHU2ZGJiXHU2ZGJjXHU2ZGJkXHU2ZGJlXHU2ZGMxXHU2ZGMyXHU2ZGMzXHU2ZGM4XHU2ZGM5XHU2ZGNhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTU1XS5sZW5ndGg7KytzKTY1'@; put 'NTMzIT09Y1sxNTVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTU1XVtzXV09Mzk2ODArcyxoWzM5NjgwK3NdPWNbMTU1XVtzXSk7Zm9yKGNbMTU2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZGNkXHU2ZGNlXHU2ZGNmXHU2ZGQw'@; put 'XHU2ZGQyXHU2ZGQzXHU2ZGQ0XHU2ZGQ1XHU2ZGQ3XHU2ZGRhXHU2ZGRiXHU2ZGRjXHU2ZGRmXHU2ZGUyXHU2ZGUzXHU2ZGU1XHU2ZGU3XHU2ZGU4XHU2ZGU5XHU2ZGVhXHU2ZGVkXHU2ZGVmXHU2ZGYwXHU2ZGYyXHU2ZGY0XHU2ZGY1XHU2ZGY2XHU2ZGY4XHU2ZGZhXHU2ZGZkXHU2ZGZlXHU2'@; put 'ZGZmXHU2ZTAwXHU2ZTAxXHU2ZTAyXHU2ZTAzXHU2ZTA0XHU2ZTA2XHU2ZTA3XHU2ZTA4XHU2ZTA5XHU2ZTBiXHU2ZTBmXHU2ZTEyXHU2ZTEzXHU2ZTE1XHU2ZTE4XHU2ZTE5XHU2ZTFiXHU2ZTFjXHU2ZTFlXHU2ZTFmXHU2ZTIyXHU2ZTI2XHU2ZTI3XHU2ZTI4XHU2ZTJhXHU2ZTJjXHU2ZTJl'@; put 'XHU2ZTMwXHU2ZTMxXHU2ZTMzXHU2ZTM1XHVmZmZkXHU2ZTM2XHU2ZTM3XHU2ZTM5XHU2ZTNiXHU2ZTNjXHU2ZTNkXHU2ZTNlXHU2ZTNmXHU2ZTQwXHU2ZTQxXHU2ZTQyXHU2ZTQ1XHU2ZTQ2XHU2ZTQ3XHU2ZTQ4XHU2ZTQ5XHU2ZTRhXHU2ZTRiXHU2ZTRjXHU2ZTRmXHU2ZTUwXHU2ZTUxXHU2'@; put 'ZTUyXHU2ZTU1XHU2ZTU3XHU2ZTU5XHU2ZTVhXHU2ZTVjXHU2ZTVkXHU2ZTVlXHU2ZTYwXHU2ZTYxXHU2ZTYyXHU2ZTYzXHU2ZTY0XHU2ZTY1XHU2ZTY2XHU2ZTY3XHU2ZTY4XHU2ZTY5XHU2ZTZhXHU2ZTZjXHU2ZTZkXHU2ZTZmXHU2ZTcwXHU2ZTcxXHU2ZTcyXHU2ZTczXHU2ZTc0XHU2ZTc1'@; put 'XHU2ZTc2XHU2ZTc3XHU2ZTc4XHU2ZTc5XHU2ZTdhXHU2ZTdiXHU2ZTdjXHU2ZTdkXHU2ZTgwXHU2ZTgxXHU2ZTgyXHU2ZTg0XHU2ZTg3XHU2ZTg4XHU2ZThhXHU2ZThiXHU2ZThjXHU2ZThkXHU2ZThlXHU2ZTkxXHU2ZTkyXHU2ZTkzXHU2ZTk0XHU2ZTk1XHU2ZTk2XHU2ZTk3XHU2ZTk5XHU2'@; put 'ZTlhXHU2ZTliXHU2ZTlkXHU2ZTllXHU2ZWEwXHU2ZWExXHU2ZWEzXHU2ZWE0XHU2ZWE2XHU2ZWE4XHU2ZWE5XHU2ZWFiXHU2ZWFjXHU2ZWFkXHU2ZWFlXHU2ZWIwXHU2ZWIzXHU2ZWI1XHU2ZWI4XHU2ZWI5XHU2ZWJjXHU2ZWJlXHU2ZWJmXHU2ZWMwXHU2ZWMzXHU2ZWM0XHU2ZWM1XHU2ZWM2'@; put 'XHU2ZWM4XHU2ZWM5XHU2ZWNhXHU2ZWNjXHU2ZWNkXHU2ZWNlXHU2ZWQwXHU2ZWQyXHU2ZWQ2XHU2ZWQ4XHU2ZWQ5XHU2ZWRiXHU2ZWRjXHU2ZWRkXHU2ZWUzXHU2ZWU3XHU2ZWVhXHU2ZWViXHU2ZWVjXHU2ZWVkXHU2ZWVlXHU2ZWVmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTU2XS5s'@; put 'ZW5ndGg7KytzKTY1NTMzIT09Y1sxNTZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTU2XVtzXV09Mzk5MzYrcyxoWzM5OTM2K3NdPWNbMTU2XVtzXSk7Zm9yKGNbMTU3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWYwXHU2ZWYx'@; put 'XHU2ZWYyXHU2ZWYzXHU2ZWY1XHU2ZWY2XHU2ZWY3XHU2ZWY4XHU2ZWZhXHU2ZWZiXHU2ZWZjXHU2ZWZkXHU2ZWZlXHU2ZWZmXHU2ZjAwXHU2ZjAxXHU2ZjAzXHU2ZjA0XHU2ZjA1XHU2ZjA3XHU2ZjA4XHU2ZjBhXHU2ZjBiXHU2ZjBjXHU2ZjBkXHU2ZjBlXHU2ZjEwXHU2ZjExXHU2ZjEyXHU2'@; put 'ZjE2XHU2ZjE3XHU2ZjE4XHU2ZjE5XHU2ZjFhXHU2ZjFiXHU2ZjFjXHU2ZjFkXHU2ZjFlXHU2ZjFmXHU2ZjIxXHU2ZjIyXHU2ZjIzXHU2ZjI1XHU2ZjI2XHU2ZjI3XHU2ZjI4XHU2ZjJjXHU2ZjJlXHU2ZjMwXHU2ZjMyXHU2ZjM0XHU2ZjM1XHU2ZjM3XHU2ZjM4XHU2ZjM5XHU2ZjNhXHU2ZjNi'@; put 'XHU2ZjNjXHU2ZjNkXHU2ZjNmXHU2ZjQwXHU2ZjQxXHU2ZjQyXHVmZmZkXHU2ZjQzXHU2ZjQ0XHU2ZjQ1XHU2ZjQ4XHU2ZjQ5XHU2ZjRhXHU2ZjRjXHU2ZjRlXHU2ZjRmXHU2ZjUwXHU2ZjUxXHU2ZjUyXHU2ZjUzXHU2ZjU0XHU2ZjU1XHU2ZjU2XHU2ZjU3XHU2ZjU5XHU2ZjVhXHU2ZjViXHU2'@; put 'ZjVkXHU2ZjVmXHU2ZjYwXHU2ZjYxXHU2ZjYzXHU2ZjY0XHU2ZjY1XHU2ZjY3XHU2ZjY4XHU2ZjY5XHU2ZjZhXHU2ZjZiXHU2ZjZjXHU2ZjZmXHU2ZjcwXHU2ZjcxXHU2ZjczXHU2Zjc1XHU2Zjc2XHU2Zjc3XHU2Zjc5XHU2ZjdiXHU2ZjdkXHU2ZjdlXHU2ZjdmXHU2ZjgwXHU2ZjgxXHU2Zjgy'@; put 'XHU2ZjgzXHU2Zjg1XHU2Zjg2XHU2Zjg3XHU2ZjhhXHU2ZjhiXHU2ZjhmXHU2ZjkwXHU2ZjkxXHU2ZjkyXHU2ZjkzXHU2Zjk0XHU2Zjk1XHU2Zjk2XHU2Zjk3XHU2Zjk4XHU2Zjk5XHU2ZjlhXHU2ZjliXHU2ZjlkXHU2ZjllXHU2ZjlmXHU2ZmEwXHU2ZmEyXHU2ZmEzXHU2ZmE0XHU2ZmE1XHU2'@; put 'ZmE2XHU2ZmE4XHU2ZmE5XHU2ZmFhXHU2ZmFiXHU2ZmFjXHU2ZmFkXHU2ZmFlXHU2ZmFmXHU2ZmIwXHU2ZmIxXHU2ZmIyXHU2ZmI0XHU2ZmI1XHU2ZmI3XHU2ZmI4XHU2ZmJhXHU2ZmJiXHU2ZmJjXHU2ZmJkXHU2ZmJlXHU2ZmJmXHU2ZmMxXHU2ZmMzXHU2ZmM0XHU2ZmM1XHU2ZmM2XHU2ZmM3'@; put 'XHU2ZmM4XHU2ZmNhXHU2ZmNiXHU2ZmNjXHU2ZmNkXHU2ZmNlXHU2ZmNmXHU2ZmQwXHU2ZmQzXHU2ZmQ0XHU2ZmQ1XHU2ZmQ2XHU2ZmQ3XHU2ZmQ4XHU2ZmQ5XHU2ZmRhXHU2ZmRiXHU2ZmRjXHU2ZmRkXHU2ZmRmXHU2ZmUyXHU2ZmUzXHU2ZmU0XHU2ZmU1XHVmZmZkIi5zcGxpdCgiIikscz0w'@; put 'O3MhPWNbMTU3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTU3XVtzXV09NDAxOTIrcyxoWzQwMTkyK3NdPWNbMTU3XVtzXSk7Zm9yKGNbMTU4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHU2ZmU2XHU2ZmU3XHU2ZmU4XHU2ZmU5XHU2ZmVhXHU2ZmViXHU2ZmVjXHU2ZmVkXHU2ZmYwXHU2ZmYxXHU2ZmYyXHU2ZmYzXHU2ZmY0XHU2ZmY1XHU2ZmY2XHU2ZmY3XHU2ZmY4XHU2ZmY5XHU2ZmZhXHU2ZmZiXHU2ZmZjXHU2ZmZkXHU2ZmZlXHU2ZmZmXHU3MDAwXHU3MDAxXHU3MDAyXHU3'@; put 'MDAzXHU3MDA0XHU3MDA1XHU3MDA2XHU3MDA3XHU3MDA4XHU3MDA5XHU3MDBhXHU3MDBiXHU3MDBjXHU3MDBkXHU3MDBlXHU3MDBmXHU3MDEwXHU3MDEyXHU3MDEzXHU3MDE0XHU3MDE1XHU3MDE2XHU3MDE3XHU3MDE4XHU3MDE5XHU3MDFjXHU3MDFkXHU3MDFlXHU3MDFmXHU3MDIwXHU3MDIx'@; put 'XHU3MDIyXHU3MDI0XHU3MDI1XHU3MDI2XHU3MDI3XHU3MDI4XHU3MDI5XHU3MDJhXHVmZmZkXHU3MDJiXHU3MDJjXHU3MDJkXHU3MDJlXHU3MDJmXHU3MDMwXHU3MDMxXHU3MDMyXHU3MDMzXHU3MDM0XHU3MDM2XHU3MDM3XHU3MDM4XHU3MDNhXHU3MDNiXHU3MDNjXHU3MDNkXHU3MDNlXHU3'@; put 'MDNmXHU3MDQwXHU3MDQxXHU3MDQyXHU3MDQzXHU3MDQ0XHU3MDQ1XHU3MDQ2XHU3MDQ3XHU3MDQ4XHU3MDQ5XHU3MDRhXHU3MDRiXHU3MDRkXHU3MDRlXHU3MDUwXHU3MDUxXHU3MDUyXHU3MDUzXHU3MDU0XHU3MDU1XHU3MDU2XHU3MDU3XHU3MDU4XHU3MDU5XHU3MDVhXHU3MDViXHU3MDVj'@; put 'XHU3MDVkXHU3MDVmXHU3MDYwXHU3MDYxXHU3MDYyXHU3MDYzXHU3MDY0XHU3MDY1XHU3MDY2XHU3MDY3XHU3MDY4XHU3MDY5XHU3MDZhXHU3MDZlXHU3MDcxXHU3MDcyXHU3MDczXHU3MDc0XHU3MDc3XHU3MDc5XHU3MDdhXHU3MDdiXHU3MDdkXHU3MDgxXHU3MDgyXHU3MDgzXHU3MDg0XHU3'@; put 'MDg2XHU3MDg3XHU3MDg4XHU3MDhiXHU3MDhjXHU3MDhkXHU3MDhmXHU3MDkwXHU3MDkxXHU3MDkzXHU3MDk3XHU3MDk4XHU3MDlhXHU3MDliXHU3MDllXHU3MDlmXHU3MGEwXHU3MGExXHU3MGEyXHU3MGEzXHU3MGE0XHU3MGE1XHU3MGE2XHU3MGE3XHU3MGE4XHU3MGE5XHU3MGFhXHU3MGIw'@; put 'XHU3MGIyXHU3MGI0XHU3MGI1XHU3MGI2XHU3MGJhXHU3MGJlXHU3MGJmXHU3MGM0XHU3MGM1XHU3MGM2XHU3MGM3XHU3MGM5XHU3MGNiXHU3MGNjXHU3MGNkXHU3MGNlXHU3MGNmXHU3MGQwXHU3MGQxXHU3MGQyXHU3MGQzXHU3MGQ0XHU3MGQ1XHU3MGQ2XHU3MGQ3XHU3MGRhXHVmZmZkIi5z'@; put 'cGxpdCgiIikscz0wO3MhPWNbMTU4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNThdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTU4XVtzXV09NDA0NDgrcyxoWzQwNDQ4K3NdPWNbMTU4XVtzXSk7Zm9yKGNbMTU5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHU3MGRjXHU3MGRkXHU3MGRlXHU3MGUwXHU3MGUxXHU3MGUyXHU3MGUzXHU3MGU1XHU3MGVhXHU3MGVlXHU3MGYwXHU3MGYxXHU3MGYyXHU3MGYzXHU3MGY0XHU3MGY1XHU3MGY2XHU3MGY4XHU3MGZhXHU3MGZiXHU3MGZjXHU3MGZlXHU3MGZmXHU3MTAwXHU3MTAxXHU3'@; put 'MTAyXHU3MTAzXHU3MTA0XHU3MTA1XHU3MTA2XHU3MTA3XHU3MTA4XHU3MTBiXHU3MTBjXHU3MTBkXHU3MTBlXHU3MTBmXHU3MTExXHU3MTEyXHU3MTE0XHU3MTE3XHU3MTFiXHU3MTFjXHU3MTFkXHU3MTFlXHU3MTFmXHU3MTIwXHU3MTIxXHU3MTIyXHU3MTIzXHU3MTI0XHU3MTI1XHU3MTI3'@; put 'XHU3MTI4XHU3MTI5XHU3MTJhXHU3MTJiXHU3MTJjXHU3MTJkXHU3MTJlXHU3MTMyXHU3MTMzXHU3MTM0XHVmZmZkXHU3MTM1XHU3MTM3XHU3MTM4XHU3MTM5XHU3MTNhXHU3MTNiXHU3MTNjXHU3MTNkXHU3MTNlXHU3MTNmXHU3MTQwXHU3MTQxXHU3MTQyXHU3MTQzXHU3MTQ0XHU3MTQ2XHU3'@; put 'MTQ3XHU3MTQ4XHU3MTQ5XHU3MTRiXHU3MTRkXHU3MTRmXHU3MTUwXHU3MTUxXHU3MTUyXHU3MTUzXHU3MTU0XHU3MTU1XHU3MTU2XHU3MTU3XHU3MTU4XHU3MTU5XHU3MTVhXHU3MTViXHU3MTVkXHU3MTVmXHU3MTYwXHU3MTYxXHU3MTYyXHU3MTYzXHU3MTY1XHU3MTY5XHU3MTZhXHU3MTZi'@; put 'XHU3MTZjXHU3MTZkXHU3MTZmXHU3MTcwXHU3MTcxXHU3MTc0XHU3MTc1XHU3MTc2XHU3MTc3XHU3MTc5XHU3MTdiXHU3MTdjXHU3MTdlXHU3MTdmXHU3MTgwXHU3MTgxXHU3MTgyXHU3MTgzXHU3MTg1XHU3MTg2XHU3MTg3XHU3MTg4XHU3MTg5XHU3MThiXHU3MThjXHU3MThkXHU3MThlXHU3'@; put 'MTkwXHU3MTkxXHU3MTkyXHU3MTkzXHU3MTk1XHU3MTk2XHU3MTk3XHU3MTlhXHU3MTliXHU3MTljXHU3MTlkXHU3MTllXHU3MWExXHU3MWEyXHU3MWEzXHU3MWE0XHU3MWE1XHU3MWE2XHU3MWE3XHU3MWE5XHU3MWFhXHU3MWFiXHU3MWFkXHU3MWFlXHU3MWFmXHU3MWIwXHU3MWIxXHU3MWIy'@; put 'XHU3MWI0XHU3MWI2XHU3MWI3XHU3MWI4XHU3MWJhXHU3MWJiXHU3MWJjXHU3MWJkXHU3MWJlXHU3MWJmXHU3MWMwXHU3MWMxXHU3MWMyXHU3MWM0XHU3MWM1XHU3MWM2XHU3MWM3XHU3MWM4XHU3MWM5XHU3MWNhXHU3MWNiXHU3MWNjXHU3MWNkXHU3MWNmXHU3MWQwXHU3MWQxXHU3MWQyXHU3'@; put 'MWQzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTU5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNTldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTU5XVtzXV09NDA3MDQrcyxoWzQwNzA0K3NdPWNbMTU5XVtzXSk7Zm9yKGNbMTYwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MWQ2XHU3MWQ3XHU3MWQ4XHU3MWQ5XHU3MWRhXHU3MWRiXHU3MWRjXHU3MWRkXHU3MWRlXHU3MWRmXHU3MWUxXHU3MWUyXHU3MWUzXHU3MWU0XHU3MWU2XHU3MWU4XHU3MWU5XHU3MWVhXHU3MWViXHU3MWVjXHU3MWVkXHU3MWVmXHU3MWYwXHU3'@; put 'MWYxXHU3MWYyXHU3MWYzXHU3MWY0XHU3MWY1XHU3MWY2XHU3MWY3XHU3MWY4XHU3MWZhXHU3MWZiXHU3MWZjXHU3MWZkXHU3MWZlXHU3MWZmXHU3MjAwXHU3MjAxXHU3MjAyXHU3MjAzXHU3MjA0XHU3MjA1XHU3MjA3XHU3MjA4XHU3MjA5XHU3MjBhXHU3MjBiXHU3MjBjXHU3MjBkXHU3MjBl'@; put 'XHU3MjBmXHU3MjEwXHU3MjExXHU3MjEyXHU3MjEzXHU3MjE0XHU3MjE1XHU3MjE2XHU3MjE3XHU3MjE4XHU3MjE5XHU3MjFhXHVmZmZkXHU3MjFiXHU3MjFjXHU3MjFlXHU3MjFmXHU3MjIwXHU3MjIxXHU3MjIyXHU3MjIzXHU3MjI0XHU3MjI1XHU3MjI2XHU3MjI3XHU3MjI5XHU3MjJiXHU3'@; put 'MjJkXHU3MjJlXHU3MjJmXHU3MjMyXHU3MjMzXHU3MjM0XHU3MjNhXHU3MjNjXHU3MjNlXHU3MjQwXHU3MjQxXHU3MjQyXHU3MjQzXHU3MjQ0XHU3MjQ1XHU3MjQ2XHU3MjQ5XHU3MjRhXHU3MjRiXHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUxXHU3MjUzXHU3MjU0XHU3MjU1XHU3MjU3XHU3MjU4'@; put 'XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY0XHU3MjY1XHU3MjY4XHU3MjZhXHU3MjZiXHU3MjZjXHU3MjZkXHU3MjcwXHU3MjcxXHU3MjczXHU3Mjc0XHU3Mjc2XHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdkXHU3MjgyXHU3MjgzXHU3Mjg1XHU3Mjg2XHU3Mjg3XHU3'@; put 'Mjg4XHU3Mjg5XHU3MjhjXHU3MjhlXHU3MjkwXHU3MjkxXHU3MjkzXHU3Mjk0XHU3Mjk1XHU3Mjk2XHU3Mjk3XHU3Mjk4XHU3Mjk5XHU3MjlhXHU3MjliXHU3MjljXHU3MjlkXHU3MjllXHU3MmEwXHU3MmExXHU3MmEyXHU3MmEzXHU3MmE0XHU3MmE1XHU3MmE2XHU3MmE3XHU3MmE4XHU3MmE5'@; put 'XHU3MmFhXHU3MmFiXHU3MmFlXHU3MmIxXHU3MmIyXHU3MmIzXHU3MmI1XHU3MmJhXHU3MmJiXHU3MmJjXHU3MmJkXHU3MmJlXHU3MmJmXHU3MmMwXHU3MmM1XHU3MmM2XHU3MmM3XHU3MmM5XHU3MmNhXHU3MmNiXHU3MmNjXHU3MmNmXHU3MmQxXHU3MmQzXHU3MmQ0XHU3MmQ1XHU3MmQ2XHU3'@; put 'MmQ4XHU3MmRhXHU3MmRiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTYwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTYwXVtzXV09NDA5NjArcyxoWzQwOTYwK3NdPWNbMTYwXVtzXSk7Zm9yKGNbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MDJjOVx1MDJjN1x4YThcdTMw'@; put 'MDNcdTMwMDVcdTIwMTRcdWZmNWVcdTIwMTZcdTIwMjZcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTMwMTRcdTMwMTVcdTMwMDhcdTMwMDlcdTMwMGFcdTMwMGJcdTMwMGNcdTMwMGRcdTMwMGVcdTMwMGZcdTMwMTZcdTMwMTdcdTMwMTBcdTMwMTFceGIxXHhkN1x4ZjdcdTIyMzZcdTIyMjdc'@; put 'dTIyMjhcdTIyMTFcdTIyMGZcdTIyMmFcdTIyMjlcdTIyMDhcdTIyMzdcdTIyMWFcdTIyYTVcdTIyMjVcdTIyMjBcdTIzMTJcdTIyOTlcdTIyMmJcdTIyMmVcdTIyNjFcdTIyNGNcdTIyNDhcdTIyM2RcdTIyMWRcdTIyNjBcdTIyNmVcdTIyNmZcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzVcdTIy'@; put 'MzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHVmZjA0XHhhNFx1ZmZlMFx1ZmZlMVx1MjAzMFx4YTdcdTIxMTZcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTIwM2JcdTIxOTJcdTIxOTBcdTIxOTFc'@; put 'dTIxOTNcdTMwMTNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2MV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjFdW3NdXT00MTIxNitzLGhbNDEyMTYrc109Y1sxNjFdW3NdKTtmb3IoY1sxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIxNzBcdTIxNzFcdTIxNzJcdTIxNzNcdTIxNzRcdTIxNzVcdTIxNzZcdTIx'@; put 'NzdcdTIxNzhcdTIxNzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI0ODhcdTI0ODlcdTI0OGFcdTI0OGJcdTI0OGNcdTI0OGRcdTI0OGVcdTI0OGZcdTI0OTBcdTI0OTFcdTI0OTJcdTI0OTNcdTI0OTRcdTI0OTVcdTI0OTZcdTI0OTdcdTI0OThcdTI0OTlcdTI0OWFc'@; put 'dTI0OWJcdTI0NzRcdTI0NzVcdTI0NzZcdTI0NzdcdTI0NzhcdTI0NzlcdTI0N2FcdTI0N2JcdTI0N2NcdTI0N2RcdTI0N2VcdTI0N2ZcdTI0ODBcdTI0ODFcdTI0ODJcdTI0ODNcdTI0ODRcdTI0ODVcdTI0ODZcdTI0ODdcdTI0NjBcdTI0NjFcdTI0NjJcdTI0NjNcdTI0NjRcdTI0NjVcdTI0'@; put 'NjZcdTI0NjdcdTI0NjhcdTI0NjlcdWZmZmRcdWZmZmRcdTMyMjBcdTMyMjFcdTMyMjJcdTMyMjNcdTMyMjRcdTMyMjVcdTMyMjZcdTMyMjdcdTMyMjhcdTMyMjlcdWZmZmRcdWZmZmRcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlc'@; put 'dTIxNmFcdTIxNmJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2Ml1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjJdW3NdXT00MTQ3MitzLGhbNDE0NzIrc109Y1sxNjJdW3NdKTtmb3IoY1sxNjNdPSJcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMDFcdWZmMDJcdWZmMDNcdWZmZTVcdWZmMDVcdWZm'@; put 'MDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVcdWZmMWZcdWZmMjBcdWZmMjFc'@; put 'dWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZmM2JcdWZmM2NcdWZm'@; put 'M2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZmNThc'@; put 'dWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2M11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjNdW3NdXT00MTcyOCtzLGhbNDE3Mjgrc109Y1sxNjNdW3NdKTtmb3IoY1sxNjRd'@; put 'PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwNDFcdTMwNDJcdTMwNDNcdTMw'@; put 'NDRcdTMwNDVcdTMwNDZcdTMwNDdcdTMwNDhcdTMwNDlcdTMwNGFcdTMwNGJcdTMwNGNcdTMwNGRcdTMwNGVcdTMwNGZcdTMwNTBcdTMwNTFcdTMwNTJcdTMwNTNcdTMwNTRcdTMwNTVcdTMwNTZcdTMwNTdcdTMwNThcdTMwNTlcdTMwNWFcdTMwNWJcdTMwNWNcdTMwNWRcdTMwNWVcdTMwNWZc'@; put 'dTMwNjBcdTMwNjFcdTMwNjJcdTMwNjNcdTMwNjRcdTMwNjVcdTMwNjZcdTMwNjdcdTMwNjhcdTMwNjlcdTMwNmFcdTMwNmJcdTMwNmNcdTMwNmRcdTMwNmVcdTMwNmZcdTMwNzBcdTMwNzFcdTMwNzJcdTMwNzNcdTMwNzRcdTMwNzVcdTMwNzZcdTMwNzdcdTMwNzhcdTMwNzlcdTMwN2FcdTMw'@; put 'N2JcdTMwN2NcdTMwN2RcdTMwN2VcdTMwN2ZcdTMwODBcdTMwODFcdTMwODJcdTMwODNcdTMwODRcdTMwODVcdTMwODZcdTMwODdcdTMwODhcdTMwODlcdTMwOGFcdTMwOGJcdTMwOGNcdTMwOGRcdTMwOGVcdTMwOGZcdTMwOTBcdTMwOTFcdTMwOTJcdTMwOTNcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2NF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjRdW3NdXT00MTk4NCtzLGhbNDE5ODQrc109Y1sxNjRdW3Nd'@; put 'KTtmb3IoY1sxNjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwYTFcdTMw'@; put 'YTJcdTMwYTNcdTMwYTRcdTMwYTVcdTMwYTZcdTMwYTdcdTMwYThcdTMwYTlcdTMwYWFcdTMwYWJcdTMwYWNcdTMwYWRcdTMwYWVcdTMwYWZcdTMwYjBcdTMwYjFcdTMwYjJcdTMwYjNcdTMwYjRcdTMwYjVcdTMwYjZcdTMwYjdcdTMwYjhcdTMwYjlcdTMwYmFcdTMwYmJcdTMwYmNcdTMwYmRc'@; put 'dTMwYmVcdTMwYmZcdTMwYzBcdTMwYzFcdTMwYzJcdTMwYzNcdTMwYzRcdTMwYzVcdTMwYzZcdTMwYzdcdTMwYzhcdTMwYzlcdTMwY2FcdTMwY2JcdTMwY2NcdTMwY2RcdTMwY2VcdTMwY2ZcdTMwZDBcdTMwZDFcdTMwZDJcdTMwZDNcdTMwZDRcdTMwZDVcdTMwZDZcdTMwZDdcdTMwZDhcdTMw'@; put 'ZDlcdTMwZGFcdTMwZGJcdTMwZGNcdTMwZGRcdTMwZGVcdTMwZGZcdTMwZTBcdTMwZTFcdTMwZTJcdTMwZTNcdTMwZTRcdTMwZTVcdTMwZTZcdTMwZTdcdTMwZThcdTMwZTlcdTMwZWFcdTMwZWJcdTMwZWNcdTMwZWRcdTMwZWVcdTMwZWZcdTMwZjBcdTMwZjFcdTMwZjJcdTMwZjNcdTMwZjRc'@; put 'dTMwZjVcdTMwZjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2NV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjVdW3NdXT00MjI0MCtzLGhbNDIyNDAr'@; put 'c109Y1sxNjVdW3NdKTtmb3IoY1sxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAz'@; put 'YzhcdTAzYzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlMzVcdWZlMzZcdWZlMzlcdWZlM2FcdWZlM2ZcdWZlNDBcdWZlM2RcdWZlM2VcdWZlNDFcdWZlNDJcdWZlNDNcdWZlNDRcdWZmZmRcdWZmZmRcdWZlM2JcdWZlM2NcdWZlMzdcdWZlMzhcdWZlMzFc'@; put 'dWZmZmRcdWZlMzNcdWZlMzRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2Nl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjZdW3NdXT00MjQ5'@; put 'NitzLGhbNDI0OTYrc109Y1sxNjZdW3NdKTtmb3IoY1sxNjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MDFcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0Mjdc'@; put 'dTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0'@; put 'MzRcdTA0MzVcdTA0NTFcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVc'@; put 'dTA0NGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2N11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sx'@; put 'NjddW3NdXT00Mjc1MitzLGhbNDI3NTIrc109Y1sxNjddW3NdKTtmb3IoY1sxNjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAyY2FcdTAyY2JcdTAyZDlcdTIwMTNcdTIwMTVcdTIwMjVcdTIwMzVcdTIxMDVcdTIxMDlcdTIxOTZc'@; put 'dTIxOTdcdTIxOThcdTIxOTlcdTIyMTVcdTIyMWZcdTIyMjNcdTIyNTJcdTIyNjZcdTIyNjdcdTIyYmZcdTI1NTBcdTI1NTFcdTI1NTJcdTI1NTNcdTI1NTRcdTI1NTVcdTI1NTZcdTI1NTdcdTI1NThcdTI1NTlcdTI1NWFcdTI1NWJcdTI1NWNcdTI1NWRcdTI1NWVcdTI1NWZcdTI1NjBcdTI1'@; put 'NjFcdTI1NjJcdTI1NjNcdTI1NjRcdTI1NjVcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFcdTI1NmJcdTI1NmNcdTI1NmRcdTI1NmVcdTI1NmZcdTI1NzBcdTI1NzFcdTI1NzJcdTI1NzNcdTI1ODFcdTI1ODJcdTI1ODNcdTI1ODRcdTI1ODVcdTI1ODZcdTI1ODdcdWZmZmRcdTI1ODhc'@; put 'dTI1ODlcdTI1OGFcdTI1OGJcdTI1OGNcdTI1OGRcdTI1OGVcdTI1OGZcdTI1OTNcdTI1OTRcdTI1OTVcdTI1YmNcdTI1YmRcdTI1ZTJcdTI1ZTNcdTI1ZTRcdTI1ZTVcdTI2MDlcdTIyOTVcdTMwMTJcdTMwMWRcdTMwMWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAxMDFceGUxXHUwMWNlXHhlMFx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUwMWQyXHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhXHUwMWRjXHhmY1x4ZWFcdTAyNTFc'@; put 'dWZmZmRcdTAxNDRcdTAxNDhcdWZmZmRcdTAyNjFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMxMDVcdTMxMDZcdTMxMDdcdTMxMDhcdTMxMDlcdTMxMGFcdTMxMGJcdTMxMGNcdTMxMGRcdTMxMGVcdTMxMGZcdTMxMTBcdTMxMTFcdTMxMTJcdTMxMTNcdTMxMTRcdTMxMTVcdTMxMTZcdTMx'@; put 'MTdcdTMxMThcdTMxMTlcdTMxMWFcdTMxMWJcdTMxMWNcdTMxMWRcdTMxMWVcdTMxMWZcdTMxMjBcdTMxMjFcdTMxMjJcdTMxMjNcdTMxMjRcdTMxMjVcdTMxMjZcdTMxMjdcdTMxMjhcdTMxMjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjhdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2OF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjhdW3NdXT00MzAw'@; put 'OCtzLGhbNDMwMDgrc109Y1sxNjhdW3NdKTtmb3IoY1sxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMjFcdTMwMjJcdTMwMjNcdTMwMjRcdTMwMjVcdTMwMjZcdTMwMjdcdTMwMjhcdTMwMjlcdTMyYTNcdTMzOGVcdTMzOGZc'@; put 'dTMzOWNcdTMzOWRcdTMzOWVcdTMzYTFcdTMzYzRcdTMzY2VcdTMzZDFcdTMzZDJcdTMzZDVcdWZlMzBcdWZmZTJcdWZmZTRcdWZmZmRcdTIxMjFcdTMyMzFcdWZmZmRcdTIwMTBcdWZmZmRcdWZmZmRcdWZmZmRcdTMwZmNcdTMwOWJcdTMwOWNcdTMwZmRcdTMwZmVcdTMwMDZcdTMwOWRcdTMw'@; put 'OWVcdWZlNDlcdWZlNGFcdWZlNGJcdWZlNGNcdWZlNGRcdWZlNGVcdWZlNGZcdWZlNTBcdWZlNTFcdWZlNTJcdWZlNTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZlNTlcdWZlNWFcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdWZlNWZcdWZlNjBcdWZlNjFcdWZmZmRcdWZlNjJcdWZlNjNcdWZlNjRc'@; put 'dWZlNjVcdWZlNjZcdWZlNjhcdWZlNjlcdWZlNmFcdWZlNmJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDFcdTI1MDJcdTI1MDNcdTI1MDRcdTI1MDVcdTI1MDZcdTI1MDdcdTI1MDhcdTI1MDlcdTI1MGFcdTI1MGJcdTI1MGNcdTI1MGRcdTI1MGVcdTI1MGZcdTI1MTBcdTI1MTFcdTI1MTJcdTI1MTNcdTI1MTRcdTI1MTVc'@; put 'dTI1MTZcdTI1MTdcdTI1MThcdTI1MTlcdTI1MWFcdTI1MWJcdTI1MWNcdTI1MWRcdTI1MWVcdTI1MWZcdTI1MjBcdTI1MjFcdTI1MjJcdTI1MjNcdTI1MjRcdTI1MjVcdTI1MjZcdTI1MjdcdTI1MjhcdTI1MjlcdTI1MmFcdTI1MmJcdTI1MmNcdTI1MmRcdTI1MmVcdTI1MmZcdTI1MzBcdTI1'@; put 'MzFcdTI1MzJcdTI1MzNcdTI1MzRcdTI1MzVcdTI1MzZcdTI1MzdcdTI1MzhcdTI1MzlcdTI1M2FcdTI1M2JcdTI1M2NcdTI1M2RcdTI1M2VcdTI1M2ZcdTI1NDBcdTI1NDFcdTI1NDJcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhcdTI1NDlcdTI1NGFcdTI1NGJcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2OV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sx'@; put 'NjldW3NdXT00MzI2NCtzLGhbNDMyNjQrc109Y1sxNjldW3NdKTtmb3IoY1sxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcyZGNcdTcyZGRcdTcyZGZcdTcyZTJcdTcyZTNcdTcyZTRcdTcyZTVcdTcyZTZcdTcyZTdcdTcyZWFc'@; put 'dTcyZWJcdTcyZjVcdTcyZjZcdTcyZjlcdTcyZmRcdTcyZmVcdTcyZmZcdTczMDBcdTczMDJcdTczMDRcdTczMDVcdTczMDZcdTczMDdcdTczMDhcdTczMDlcdTczMGJcdTczMGNcdTczMGRcdTczMGZcdTczMTBcdTczMTFcdTczMTJcdTczMTRcdTczMThcdTczMTlcdTczMWFcdTczMWZcdTcz'@; put 'MjBcdTczMjNcdTczMjRcdTczMjZcdTczMjdcdTczMjhcdTczMmRcdTczMmZcdTczMzBcdTczMzJcdTczMzNcdTczMzVcdTczMzZcdTczM2FcdTczM2JcdTczM2NcdTczM2RcdTczNDBcdTczNDFcdTczNDJcdTczNDNcdTczNDRcdTczNDVcdTczNDZcdTczNDdcdTczNDhcdWZmZmRcdTczNDlc'@; put 'dTczNGFcdTczNGJcdTczNGNcdTczNGVcdTczNGZcdTczNTFcdTczNTNcdTczNTRcdTczNTVcdTczNTZcdTczNThcdTczNTlcdTczNWFcdTczNWJcdTczNWNcdTczNWRcdTczNWVcdTczNWZcdTczNjFcdTczNjJcdTczNjNcdTczNjRcdTczNjVcdTczNjZcdTczNjdcdTczNjhcdTczNjlcdTcz'@; put 'NmFcdTczNmJcdTczNmVcdTczNzBcdTczNzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3MF1bc10uY2hhckNvZGVB'@; put 'dCgwKSYmKHlbY1sxNzBdW3NdXT00MzUyMCtzLGhbNDM1MjArc109Y1sxNzBdW3NdKTtmb3IoY1sxNzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczNzJcdTczNzNcdTczNzRcdTczNzVcdTczNzZcdTczNzdcdTczNzhcdTczNzlc'@; put 'dTczN2FcdTczN2JcdTczN2NcdTczN2RcdTczN2ZcdTczODBcdTczODFcdTczODJcdTczODNcdTczODVcdTczODZcdTczODhcdTczOGFcdTczOGNcdTczOGRcdTczOGZcdTczOTBcdTczOTJcdTczOTNcdTczOTRcdTczOTVcdTczOTdcdTczOThcdTczOTlcdTczOWFcdTczOWNcdTczOWRcdTcz'@; put 'OWVcdTczYTBcdTczYTFcdTczYTNcdTczYTRcdTczYTVcdTczYTZcdTczYTdcdTczYThcdTczYWFcdTczYWNcdTczYWRcdTczYjFcdTczYjRcdTczYjVcdTczYjZcdTczYjhcdTczYjlcdTczYmNcdTczYmRcdTczYmVcdTczYmZcdTczYzFcdTczYzNcdTczYzRcdTczYzVcdTczYzZcdTczYzdc'@; put 'dWZmZmRcdTczY2JcdTczY2NcdTczY2VcdTczZDJcdTczZDNcdTczZDRcdTczZDVcdTczZDZcdTczZDdcdTczZDhcdTczZGFcdTczZGJcdTczZGNcdTczZGRcdTczZGZcdTczZTFcdTczZTJcdTczZTNcdTczZTRcdTczZTZcdTczZThcdTczZWFcdTczZWJcdTczZWNcdTczZWVcdTczZWZcdTcz'@; put 'ZjBcdTczZjFcdTczZjNcdTczZjRcdTczZjVcdTczZjZcdTczZjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3MV1b'@; put 'c10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzFdW3NdXT00Mzc3NitzLGhbNDM3NzYrc109Y1sxNzFdW3NdKTtmb3IoY1sxNzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczZjhcdTczZjlcdTczZmFcdTczZmJcdTczZmNcdTczZmRc'@; put 'dTczZmVcdTczZmZcdTc0MDBcdTc0MDFcdTc0MDJcdTc0MDRcdTc0MDdcdTc0MDhcdTc0MGJcdTc0MGNcdTc0MGRcdTc0MGVcdTc0MTFcdTc0MTJcdTc0MTNcdTc0MTRcdTc0MTVcdTc0MTZcdTc0MTdcdTc0MThcdTc0MTlcdTc0MWNcdTc0MWRcdTc0MWVcdTc0MWZcdTc0MjBcdTc0MjFcdTc0'@; put 'MjNcdTc0MjRcdTc0MjdcdTc0MjlcdTc0MmJcdTc0MmRcdTc0MmZcdTc0MzFcdTc0MzJcdTc0MzdcdTc0MzhcdTc0MzlcdTc0M2FcdTc0M2JcdTc0M2RcdTc0M2VcdTc0M2ZcdTc0NDBcdTc0NDJcdTc0NDNcdTc0NDRcdTc0NDVcdTc0NDZcdTc0NDdcdTc0NDhcdTc0NDlcdTc0NGFcdTc0NGJc'@; put 'dTc0NGNcdTc0NGRcdWZmZmRcdTc0NGVcdTc0NGZcdTc0NTBcdTc0NTFcdTc0NTJcdTc0NTNcdTc0NTRcdTc0NTZcdTc0NThcdTc0NWRcdTc0NjBcdTc0NjFcdTc0NjJcdTc0NjNcdTc0NjRcdTc0NjVcdTc0NjZcdTc0NjdcdTc0NjhcdTc0NjlcdTc0NmFcdTc0NmJcdTc0NmNcdTc0NmVcdTc0'@; put 'NmZcdTc0NzFcdTc0NzJcdTc0NzNcdTc0NzRcdTc0NzVcdTc0NzhcdTc0NzlcdTc0N2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzJdLmxlbmd0aDsrK3MpNjU1'@; put 'MzMhPT1jWzE3Ml1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzJdW3NdXT00NDAzMitzLGhbNDQwMzIrc109Y1sxNzJdW3NdKTtmb3IoY1sxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0N2JcdTc0N2NcdTc0N2RcdTc0N2Zc'@; put 'dTc0ODJcdTc0ODRcdTc0ODVcdTc0ODZcdTc0ODhcdTc0ODlcdTc0OGFcdTc0OGNcdTc0OGRcdTc0OGZcdTc0OTFcdTc0OTJcdTc0OTNcdTc0OTRcdTc0OTVcdTc0OTZcdTc0OTdcdTc0OThcdTc0OTlcdTc0OWFcdTc0OWJcdTc0OWRcdTc0OWZcdTc0YTBcdTc0YTFcdTc0YTJcdTc0YTNcdTc0'@; put 'YTRcdTc0YTVcdTc0YTZcdTc0YWFcdTc0YWJcdTc0YWNcdTc0YWRcdTc0YWVcdTc0YWZcdTc0YjBcdTc0YjFcdTc0YjJcdTc0YjNcdTc0YjRcdTc0YjVcdTc0YjZcdTc0YjdcdTc0YjhcdTc0YjlcdTc0YmJcdTc0YmNcdTc0YmRcdTc0YmVcdTc0YmZcdTc0YzBcdTc0YzFcdTc0YzJcdTc0YzNc'@; put 'dTc0YzRcdTc0YzVcdTc0YzZcdTc0YzdcdWZmZmRcdTc0YzhcdTc0YzlcdTc0Y2FcdTc0Y2JcdTc0Y2NcdTc0Y2RcdTc0Y2VcdTc0Y2ZcdTc0ZDBcdTc0ZDFcdTc0ZDNcdTc0ZDRcdTc0ZDVcdTc0ZDZcdTc0ZDdcdTc0ZDhcdTc0ZDlcdTc0ZGFcdTc0ZGJcdTc0ZGRcdTc0ZGZcdTc0ZTFcdTc0'@; put 'ZTVcdTc0ZTdcdTc0ZThcdTc0ZTlcdTc0ZWFcdTc0ZWJcdTc0ZWNcdTc0ZWRcdTc0ZjBcdTc0ZjFcdTc0ZjJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzNdLmxl'@; put 'bmd0aDsrK3MpNjU1MzMhPT1jWzE3M11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzNdW3NdXT00NDI4OCtzLGhbNDQyODgrc109Y1sxNzNdW3NdKTtmb3IoY1sxNzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0ZjNcdTc0ZjVc'@; put 'dTc0ZjhcdTc0ZjlcdTc0ZmFcdTc0ZmJcdTc0ZmNcdTc0ZmRcdTc0ZmVcdTc1MDBcdTc1MDFcdTc1MDJcdTc1MDNcdTc1MDVcdTc1MDZcdTc1MDdcdTc1MDhcdTc1MDlcdTc1MGFcdTc1MGJcdTc1MGNcdTc1MGVcdTc1MTBcdTc1MTJcdTc1MTRcdTc1MTVcdTc1MTZcdTc1MTdcdTc1MWJcdTc1'@; put 'MWRcdTc1MWVcdTc1MjBcdTc1MjFcdTc1MjJcdTc1MjNcdTc1MjRcdTc1MjZcdTc1MjdcdTc1MmFcdTc1MmVcdTc1MzRcdTc1MzZcdTc1MzlcdTc1M2NcdTc1M2RcdTc1M2ZcdTc1NDFcdTc1NDJcdTc1NDNcdTc1NDRcdTc1NDZcdTc1NDdcdTc1NDlcdTc1NGFcdTc1NGRcdTc1NTBcdTc1NTFc'@; put 'dTc1NTJcdTc1NTNcdTc1NTVcdTc1NTZcdTc1NTdcdTc1NThcdWZmZmRcdTc1NWRcdTc1NWVcdTc1NWZcdTc1NjBcdTc1NjFcdTc1NjJcdTc1NjNcdTc1NjRcdTc1NjdcdTc1NjhcdTc1NjlcdTc1NmJcdTc1NmNcdTc1NmRcdTc1NmVcdTc1NmZcdTc1NzBcdTc1NzFcdTc1NzNcdTc1NzVcdTc1'@; put 'NzZcdTc1NzdcdTc1N2FcdTc1N2JcdTc1N2NcdTc1N2RcdTc1N2VcdTc1ODBcdTc1ODFcdTc1ODJcdTc1ODRcdTc1ODVcdTc1ODdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7'@; put 'cyE9Y1sxNzRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3NF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzRdW3NdXT00NDU0NCtzLGhbNDQ1NDQrc109Y1sxNzRdW3NdKTtmb3IoY1sxNzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dTc1ODhcdTc1ODlcdTc1OGFcdTc1OGNcdTc1OGRcdTc1OGVcdTc1OTBcdTc1OTNcdTc1OTVcdTc1OThcdTc1OWJcdTc1OWNcdTc1OWVcdTc1YTJcdTc1YTZcdTc1YTdcdTc1YThcdTc1YTlcdTc1YWFcdTc1YWRcdTc1YjZcdTc1YjdcdTc1YmFcdTc1YmJcdTc1YmZcdTc1YzBcdTc1YzFcdTc1'@; put 'YzZcdTc1Y2JcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDBcdTc1ZDFcdTc1ZDNcdTc1ZDdcdTc1ZDlcdTc1ZGFcdTc1ZGNcdTc1ZGRcdTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTVcdTc1ZTlcdTc1ZWNcdTc1ZWRcdTc1ZWVcdTc1ZWZcdTc1ZjJcdTc1ZjNcdTc1ZjVcdTc1ZjZcdTc1ZjdcdTc1Zjhc'@; put 'dTc1ZmFcdTc1ZmJcdTc1ZmRcdTc1ZmVcdTc2MDJcdTc2MDRcdTc2MDZcdTc2MDdcdWZmZmRcdTc2MDhcdTc2MDlcdTc2MGJcdTc2MGRcdTc2MGVcdTc2MGZcdTc2MTFcdTc2MTJcdTc2MTNcdTc2MTRcdTc2MTZcdTc2MWFcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjFcdTc2MjNcdTc2MjdcdTc2'@; put 'MjhcdTc2MmNcdTc2MmVcdTc2MmZcdTc2MzFcdTc2MzJcdTc2MzZcdTc2MzdcdTc2MzlcdTc2M2FcdTc2M2JcdTc2M2RcdTc2NDFcdTc2NDJcdTc2NDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNw'@; put 'bGl0KCIiKSxzPTA7cyE9Y1sxNzVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3NV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzVdW3NdXT00NDgwMCtzLGhbNDQ4MDArc109Y1sxNzVdW3NdKTtmb3IoY1sxNzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdTc2NDVcdTc2NDZcdTc2NDdcdTc2NDhcdTc2NDlcdTc2NGFcdTc2NGJcdTc2NGVcdTc2NGZcdTc2NTBcdTc2NTFcdTc2NTJcdTc2NTNcdTc2NTVcdTc2NTdcdTc2NThcdTc2NTlcdTc2NWFcdTc2NWJcdTc2NWRcdTc2NWZcdTc2NjBcdTc2NjFcdTc2NjJcdTc2NjRcdTc2'@; put 'NjVcdTc2NjZcdTc2NjdcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NmNcdTc2NmRcdTc2NmVcdTc2NzBcdTc2NzFcdTc2NzJcdTc2NzNcdTc2NzRcdTc2NzVcdTc2NzZcdTc2NzdcdTc2NzlcdTc2N2FcdTc2N2NcdTc2N2ZcdTc2ODBcdTc2ODFcdTc2ODNcdTc2ODVcdTc2ODlcdTc2OGFcdTc2OGNc'@; put 'dTc2OGRcdTc2OGZcdTc2OTBcdTc2OTJcdTc2OTRcdTc2OTVcdTc2OTdcdTc2OThcdTc2OWFcdTc2OWJcdWZmZmRcdTc2OWNcdTc2OWRcdTc2OWVcdTc2OWZcdTc2YTBcdTc2YTFcdTc2YTJcdTc2YTNcdTc2YTVcdTc2YTZcdTc2YTdcdTc2YThcdTc2YTlcdTc2YWFcdTc2YWJcdTc2YWNcdTc2'@; put 'YWRcdTc2YWZcdTc2YjBcdTc2YjNcdTc2YjVcdTc2YjZcdTc2YjdcdTc2YjhcdTc2YjlcdTc2YmFcdTc2YmJcdTc2YmNcdTc2YmRcdTc2YmVcdTc2YzBcdTc2YzFcdTc2YzNcdTU1NGFcdTk2M2ZcdTU3YzNcdTYzMjhcdTU0Y2VcdTU1MDlcdTU0YzBcdTc2OTFcdTc2NGNcdTg1M2NcdTc3ZWVc'@; put 'dTgyN2VcdTc4OGRcdTcyMzFcdTk2OThcdTk3OGRcdTZjMjhcdTViODlcdTRmZmFcdTYzMDlcdTY2OTdcdTVjYjhcdTgwZmFcdTY4NDhcdTgwYWVcdTY2MDJcdTc2Y2VcdTUxZjlcdTY1NTZcdTcxYWNcdTdmZjFcdTg4ODRcdTUwYjJcdTU5NjVcdTYxY2FcdTZmYjNcdTgyYWRcdTYzNGNcdTYy'@; put 'NTJcdTUzZWRcdTU0MjdcdTdiMDZcdTUxNmJcdTc1YTRcdTVkZjRcdTYyZDRcdThkY2JcdTk3NzZcdTYyOGFcdTgwMTlcdTU3NWRcdTk3MzhcdTdmNjJcdTcyMzhcdTc2N2RcdTY3Y2ZcdTc2N2VcdTY0NDZcdTRmNzBcdThkMjVcdTYyZGNcdTdhMTdcdTY1OTFcdTczZWRcdTY0MmNcdTYyNzNc'@; put 'dTgyMmNcdTk4ODFcdTY3N2ZcdTcyNDhcdTYyNmVcdTYyY2NcdTRmMzRcdTc0ZTNcdTUzNGFcdTUyOWVcdTdlY2FcdTkwYTZcdTVlMmVcdTY4ODZcdTY5OWNcdTgxODBcdTdlZDFcdTY4ZDJcdTc4YzVcdTg2OGNcdTk1NTFcdTUwOGRcdThjMjRcdTgyZGVcdTgwZGVcdTUzMDVcdTg5MTJcdTUy'@; put 'NjVcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3Nl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzZdW3NdXT00NTA1NitzLGhbNDUwNTYrc109Y1sxNzZdW3NdKTtmb3IoY1sxNzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2YzRcdTc2YzdcdTc2YzlcdTc2Y2JcdTc2Y2NcdTc2ZDNcdTc2ZDVcdTc2ZDlcdTc2ZGFcdTc2ZGNcdTc2ZGRcdTc2ZGVcdTc2ZTBcdTc2ZTFcdTc2ZTJcdTc2ZTNcdTc2ZTRcdTc2ZTZcdTc2ZTdcdTc2ZThcdTc2ZTlcdTc2ZWFcdTc2ZWJcdTc2'@; put 'ZWNcdTc2ZWRcdTc2ZjBcdTc2ZjNcdTc2ZjVcdTc2ZjZcdTc2ZjdcdTc2ZmFcdTc2ZmJcdTc2ZmRcdTc2ZmZcdTc3MDBcdTc3MDJcdTc3MDNcdTc3MDVcdTc3MDZcdTc3MGFcdTc3MGNcdTc3MGVcdTc3MGZcdTc3MTBcdTc3MTFcdTc3MTJcdTc3MTNcdTc3MTRcdTc3MTVcdTc3MTZcdTc3MTdc'@; put 'dTc3MThcdTc3MWJcdTc3MWNcdTc3MWRcdTc3MWVcdTc3MjFcdTc3MjNcdTc3MjRcdTc3MjVcdTc3MjdcdTc3MmFcdTc3MmJcdWZmZmRcdTc3MmNcdTc3MmVcdTc3MzBcdTc3MzFcdTc3MzJcdTc3MzNcdTc3MzRcdTc3MzlcdTc3M2JcdTc3M2RcdTc3M2VcdTc3M2ZcdTc3NDJcdTc3NDRcdTc3'@; put 'NDVcdTc3NDZcdTc3NDhcdTc3NDlcdTc3NGFcdTc3NGJcdTc3NGNcdTc3NGRcdTc3NGVcdTc3NGZcdTc3NTJcdTc3NTNcdTc3NTRcdTc3NTVcdTc3NTZcdTc3NTdcdTc3NThcdTc3NTlcdTc3NWNcdTg1ODRcdTk2ZjlcdTRmZGRcdTU4MjFcdTk5NzFcdTViOWRcdTYyYjFcdTYyYTVcdTY2YjRc'@; put 'dThjNzlcdTljOGRcdTcyMDZcdTY3NmZcdTc4OTFcdTYwYjJcdTUzNTFcdTUzMTdcdThmODhcdTgwY2NcdThkMWRcdTk0YTFcdTUwMGRcdTcyYzhcdTU5MDdcdTYwZWJcdTcxMTlcdTg4YWJcdTU5NTRcdTgyZWZcdTY3MmNcdTdiMjhcdTVkMjlcdTdlZjdcdTc1MmRcdTZjZjVcdThlNjZcdThm'@; put 'ZjhcdTkwM2NcdTlmM2JcdTZiZDRcdTkxMTlcdTdiMTRcdTVmN2NcdTc4YTdcdTg0ZDZcdTg1M2RcdTZiZDVcdTZiZDlcdTZiZDZcdTVlMDFcdTVlODdcdTc1ZjlcdTk1ZWRcdTY1NWRcdTVmMGFcdTVmYzVcdThmOWZcdTU4YzFcdTgxYzJcdTkwN2ZcdTk2NWJcdTk3YWRcdThmYjlcdTdmMTZc'@; put 'dThkMmNcdTYyNDFcdTRmYmZcdTUzZDhcdTUzNWVcdThmYThcdThmYTlcdThmYWJcdTkwNGRcdTY4MDdcdTVmNmFcdTgxOThcdTg4NjhcdTljZDZcdTYxOGJcdTUyMmJcdTc2MmFcdTVmNmNcdTY1OGNcdTZmZDJcdTZlZThcdTViYmVcdTY0NDhcdTUxNzVcdTUxYjBcdTY3YzRcdTRlMTlcdTc5'@; put 'YzlcdTk5N2NcdTcwYjNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3N11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzddW3NdXT00NTMxMitzLGhbNDUzMTIrc109Y1sxNzddW3NdKTtmb3IoY1sxNzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3NWRcdTc3NWVcdTc3NWZcdTc3NjBcdTc3NjRcdTc3NjdcdTc3NjlcdTc3NmFcdTc3NmRcdTc3NmVcdTc3NmZcdTc3NzBcdTc3NzFcdTc3NzJcdTc3NzNcdTc3NzRcdTc3NzVcdTc3NzZcdTc3NzdcdTc3NzhcdTc3N2FcdTc3'@; put 'N2JcdTc3N2NcdTc3ODFcdTc3ODJcdTc3ODNcdTc3ODZcdTc3ODdcdTc3ODhcdTc3ODlcdTc3OGFcdTc3OGJcdTc3OGZcdTc3OTBcdTc3OTNcdTc3OTRcdTc3OTVcdTc3OTZcdTc3OTdcdTc3OThcdTc3OTlcdTc3OWFcdTc3OWJcdTc3OWNcdTc3OWRcdTc3OWVcdTc3YTFcdTc3YTNcdTc3YTRc'@; put 'dTc3YTZcdTc3YThcdTc3YWJcdTc3YWRcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjJcdTc3YjRcdTc3YjZcdTc3YjdcdTc3YjhcdTc3YjlcdTc3YmFcdWZmZmRcdTc3YmNcdTc3YmVcdTc3YzBcdTc3YzFcdTc3YzJcdTc3YzNcdTc3YzRcdTc3YzVcdTc3YzZcdTc3YzdcdTc3YzhcdTc3YzlcdTc3'@; put 'Y2FcdTc3Y2JcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3ZDBcdTc3ZDFcdTc3ZDJcdTc3ZDNcdTc3ZDRcdTc3ZDVcdTc3ZDZcdTc3ZDhcdTc3ZDlcdTc3ZGFcdTc3ZGRcdTc3ZGVcdTc3ZGZcdTc3ZTBcdTc3ZTFcdTc3ZTRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBcdTY0YWRcdTYyZThcdTk0YjVc'@; put 'dTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVlMWJcdTgyMzZcdTgxMTZcdTgxOGFcdTZlMjRcdTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBcdTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYwMTZcdTY0ZTZcdTczMWNcdTg4'@; put 'YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlcdTgzZGNcdTg1MjFcdTk5MTBcdTUzYzJcdTg2OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRlZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRcdTY2ZjlcdTgzNDlcdTUzOTVc'@; put 'dTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUzYzlcdTgzMmNcdTgzMzZcdTY3ZTVcdTc4YjRcdTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRcdThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThjMTdcdTdmMjBcdTk0ZjJcdTRl'@; put 'YTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzhdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3OF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzhdW3NdXT00NTU2OCtzLGhbNDU1Njgrc109Y1sxNzhdW3NdKTtmb3IoY1sxNzldPSJcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3ZTZcdTc3ZThcdTc3ZWFcdTc3ZWZcdTc3ZjBcdTc3ZjFcdTc3ZjJcdTc3ZjRcdTc3ZjVcdTc3ZjdcdTc3ZjlcdTc3ZmFcdTc3ZmJcdTc3ZmNcdTc4MDNcdTc4MDRcdTc4MDVcdTc4MDZcdTc4MDdcdTc4'@; put 'MDhcdTc4MGFcdTc4MGJcdTc4MGVcdTc4MGZcdTc4MTBcdTc4MTNcdTc4MTVcdTc4MTlcdTc4MWJcdTc4MWVcdTc4MjBcdTc4MjFcdTc4MjJcdTc4MjRcdTc4MjhcdTc4MmFcdTc4MmJcdTc4MmVcdTc4MmZcdTc4MzFcdTc4MzJcdTc4MzNcdTc4MzVcdTc4MzZcdTc4M2RcdTc4M2ZcdTc4NDFc'@; put 'dTc4NDJcdTc4NDNcdTc4NDRcdTc4NDZcdTc4NDhcdTc4NDlcdTc4NGFcdTc4NGJcdTc4NGRcdTc4NGZcdTc4NTFcdTc4NTNcdTc4NTRcdTc4NThcdTc4NTlcdTc4NWFcdWZmZmRcdTc4NWJcdTc4NWNcdTc4NWVcdTc4NWZcdTc4NjBcdTc4NjFcdTc4NjJcdTc4NjNcdTc4NjRcdTc4NjVcdTc4'@; put 'NjZcdTc4NjdcdTc4NjhcdTc4NjlcdTc4NmZcdTc4NzBcdTc4NzFcdTc4NzJcdTc4NzNcdTc4NzRcdTc4NzVcdTc4NzZcdTc4NzhcdTc4NzlcdTc4N2FcdTc4N2JcdTc4N2RcdTc4N2VcdTc4N2ZcdTc4ODBcdTc4ODFcdTc4ODJcdTc4ODNcdTU3M2FcdTVjMWRcdTVlMzhcdTk1N2ZcdTUwN2Zc'@; put 'dTgwYTBcdTUzODJcdTY1NWVcdTc1NDVcdTU1MzFcdTUwMjFcdThkODVcdTYyODRcdTk0OWVcdTY3MWRcdTU2MzJcdTZmNmVcdTVkZTJcdTU0MzVcdTcwOTJcdThmNjZcdTYyNmZcdTY0YTRcdTYzYTNcdTVmN2JcdTZmODhcdTkwZjRcdTgxZTNcdThmYjBcdTVjMThcdTY2NjhcdTVmZjFcdTZj'@; put 'ODlcdTk2NDhcdThkODFcdTg4NmNcdTY0OTFcdTc5ZjBcdTU3Y2VcdTZhNTlcdTYyMTBcdTU0NDhcdTRlNThcdTdhMGJcdTYwZTlcdTZmODRcdThiZGFcdTYyN2ZcdTkwMWVcdTlhOGJcdTc5ZTRcdTU0MDNcdTc1ZjRcdTYzMDFcdTUzMTlcdTZjNjBcdThmZGZcdTVmMWJcdTlhNzBcdTgwM2Jc'@; put 'dTlmN2ZcdTRmODhcdTVjM2FcdThkNjRcdTdmYzVcdTY1YTVcdTcwYmRcdTUxNDVcdTUxYjJcdTg2NmJcdTVkMDdcdTViYTBcdTYyYmRcdTkxNmNcdTc1NzRcdThlMGNcdTdhMjBcdTYxMDFcdTdiNzlcdTRlYzdcdTdlZjhcdTc3ODVcdTRlMTFcdTgxZWRcdTUyMWRcdTUxZmFcdTZhNzFcdTUz'@; put 'YThcdThlODdcdTk1MDRcdTk2Y2ZcdTZlYzFcdTk2NjRcdTY5NWFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNzldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE3OV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNzldW3NdXT00NTgyNCtzLGhbNDU4MjQrc109Y1sxNzldW3NdKTtmb3IoY1sx'@; put 'ODBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc4ODRcdTc4ODVcdTc4ODZcdTc4ODhcdTc4OGFcdTc4OGJcdTc4OGZcdTc4OTBcdTc4OTJcdTc4OTRcdTc4OTVcdTc4OTZcdTc4OTlcdTc4OWRcdTc4OWVcdTc4YTBcdTc4YTJcdTc4'@; put 'YTRcdTc4YTZcdTc4YThcdTc4YTlcdTc4YWFcdTc4YWJcdTc4YWNcdTc4YWRcdTc4YWVcdTc4YWZcdTc4YjVcdTc4YjZcdTc4YjdcdTc4YjhcdTc4YmFcdTc4YmJcdTc4YmNcdTc4YmRcdTc4YmZcdTc4YzBcdTc4YzJcdTc4YzNcdTc4YzRcdTc4YzZcdTc4YzdcdTc4YzhcdTc4Y2NcdTc4Y2Rc'@; put 'dTc4Y2VcdTc4Y2ZcdTc4ZDFcdTc4ZDJcdTc4ZDNcdTc4ZDZcdTc4ZDdcdTc4ZDhcdTc4ZGFcdTc4ZGJcdTc4ZGNcdTc4ZGRcdTc4ZGVcdTc4ZGZcdTc4ZTBcdTc4ZTFcdTc4ZTJcdTc4ZTNcdWZmZmRcdTc4ZTRcdTc4ZTVcdTc4ZTZcdTc4ZTdcdTc4ZTlcdTc4ZWFcdTc4ZWJcdTc4ZWRcdTc4'@; put 'ZWVcdTc4ZWZcdTc4ZjBcdTc4ZjFcdTc4ZjNcdTc4ZjVcdTc4ZjZcdTc4ZjhcdTc4ZjlcdTc4ZmJcdTc4ZmNcdTc4ZmRcdTc4ZmVcdTc4ZmZcdTc5MDBcdTc5MDJcdTc5MDNcdTc5MDRcdTc5MDZcdTc5MDdcdTc5MDhcdTc5MDlcdTc5MGFcdTc5MGJcdTc5MGNcdTc4NDBcdTUwYThcdTc3ZDdc'@; put 'dTY0MTBcdTg5ZTZcdTU5MDRcdTYzZTNcdTVkZGRcdTdhN2ZcdTY5M2RcdTRmMjBcdTgyMzlcdTU1OThcdTRlMzJcdTc1YWVcdTdhOTdcdTVlNjJcdTVlOGFcdTk1ZWZcdTUyMWJcdTU0MzlcdTcwOGFcdTYzNzZcdTk1MjRcdTU3ODJcdTY2MjVcdTY5M2ZcdTkxODdcdTU1MDdcdTZkZjNcdTdl'@; put 'YWZcdTg4MjJcdTYyMzNcdTdlZjBcdTc1YjVcdTgzMjhcdTc4YzFcdTk2Y2NcdThmOWVcdTYxNDhcdTc0ZjdcdThiY2RcdTZiNjRcdTUyM2FcdThkNTBcdTZiMjFcdTgwNmFcdTg0NzFcdTU2ZjFcdTUzMDZcdTRlY2VcdTRlMWJcdTUxZDFcdTdjOTdcdTkxOGJcdTdjMDdcdTRmYzNcdThlN2Zc'@; put 'dTdiZTFcdTdhOWNcdTY0NjdcdTVkMTRcdTUwYWNcdTgxMDZcdTc2MDFcdTdjYjlcdTZkZWNcdTdmZTBcdTY3NTFcdTViNThcdTViZjhcdTc4Y2JcdTY0YWVcdTY0MTNcdTYzYWFcdTYzMmJcdTk1MTlcdTY0MmRcdThmYmVcdTdiNTRcdTc2MjlcdTYyNTNcdTU5MjdcdTU0NDZcdTZiNzlcdTUw'@; put 'YTNcdTYyMzRcdTVlMjZcdTZiODZcdTRlZTNcdThkMzdcdTg4OGJcdTVmODVcdTkwMmVcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4MF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODBdW3NdXT00NjA4MCtzLGhbNDYwODArc109Y1sxODBd'@; put 'W3NdKTtmb3IoY1sxODFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5MGRcdTc5MGVcdTc5MGZcdTc5MTBcdTc5MTFcdTc5MTJcdTc5MTRcdTc5MTVcdTc5MTZcdTc5MTdcdTc5MThcdTc5MTlcdTc5MWFcdTc5MWJcdTc5MWNcdTc5'@; put 'MWRcdTc5MWZcdTc5MjBcdTc5MjFcdTc5MjJcdTc5MjNcdTc5MjVcdTc5MjZcdTc5MjdcdTc5MjhcdTc5MjlcdTc5MmFcdTc5MmJcdTc5MmNcdTc5MmRcdTc5MmVcdTc5MmZcdTc5MzBcdTc5MzFcdTc5MzJcdTc5MzNcdTc5MzVcdTc5MzZcdTc5MzdcdTc5MzhcdTc5MzlcdTc5M2RcdTc5M2Zc'@; put 'dTc5NDJcdTc5NDNcdTc5NDRcdTc5NDVcdTc5NDdcdTc5NGFcdTc5NGJcdTc5NGNcdTc5NGRcdTc5NGVcdTc5NGZcdTc5NTBcdTc5NTFcdTc5NTJcdTc5NTRcdTc5NTVcdTc5NThcdTc5NTlcdTc5NjFcdTc5NjNcdWZmZmRcdTc5NjRcdTc5NjZcdTc5NjlcdTc5NmFcdTc5NmJcdTc5NmNcdTc5'@; put 'NmVcdTc5NzBcdTc5NzFcdTc5NzJcdTc5NzNcdTc5NzRcdTc5NzVcdTc5NzZcdTc5NzlcdTc5N2JcdTc5N2NcdTc5N2RcdTc5N2VcdTc5N2ZcdTc5ODJcdTc5ODNcdTc5ODZcdTc5ODdcdTc5ODhcdTc5ODlcdTc5OGJcdTc5OGNcdTc5OGRcdTc5OGVcdTc5OTBcdTc5OTFcdTc5OTJcdTYwMjBc'@; put 'dTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZcdTY1ZTZcdTZjMmVcdTRmNDZcdTYwZWVcdTZkZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFcdTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJcdTVjOWJcdTc5NzdcdTViZmNcdTUy'@; put 'MzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2ODRcdThlNmNcdTcwNmZcdTc2N2JcdTdiNDlcdTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZlZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVhZTFcdTYyYjVcdTVlOTVcdTU3MzBc'@; put 'dTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBcdTYzODJcdTZlYzdcdTc4OThcdTcwYjlcdTUxNzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1MzhcdTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNcdTk2ZDVcdTUxY2JcdTUyMDFcdTYz'@; put 'ODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3NzZcdThmZWRcdThjMGRcdTUzZTBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4MV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODFdW3NdXT00NjMzNitzLGhbNDYz'@; put 'MzYrc109Y1sxODFdW3NdKTtmb3IoY1sxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5OTNcdTc5OTRcdTc5OTVcdTc5OTZcdTc5OTdcdTc5OThcdTc5OTlcdTc5OWJcdTc5OWNcdTc5OWRcdTc5OWVcdTc5OWZcdTc5YTBcdTc5'@; put 'YTFcdTc5YTJcdTc5YTNcdTc5YTRcdTc5YTVcdTc5YTZcdTc5YThcdTc5YTlcdTc5YWFcdTc5YWJcdTc5YWNcdTc5YWRcdTc5YWVcdTc5YWZcdTc5YjBcdTc5YjFcdTc5YjJcdTc5YjRcdTc5YjVcdTc5YjZcdTc5YjdcdTc5YjhcdTc5YmNcdTc5YmZcdTc5YzJcdTc5YzRcdTc5YzVcdTc5Yzdc'@; put 'dTc5YzhcdTc5Y2FcdTc5Y2NcdTc5Y2VcdTc5Y2ZcdTc5ZDBcdTc5ZDNcdTc5ZDRcdTc5ZDZcdTc5ZDdcdTc5ZDlcdTc5ZGFcdTc5ZGJcdTc5ZGNcdTc5ZGRcdTc5ZGVcdTc5ZTBcdTc5ZTFcdTc5ZTJcdTc5ZTVcdTc5ZThcdTc5ZWFcdWZmZmRcdTc5ZWNcdTc5ZWVcdTc5ZjFcdTc5ZjJcdTc5'@; put 'ZjNcdTc5ZjRcdTc5ZjVcdTc5ZjZcdTc5ZjdcdTc5ZjlcdTc5ZmFcdTc5ZmNcdTc5ZmVcdTc5ZmZcdTdhMDFcdTdhMDRcdTdhMDVcdTdhMDdcdTdhMDhcdTdhMDlcdTdhMGFcdTdhMGNcdTdhMGZcdTdhMTBcdTdhMTFcdTdhMTJcdTdhMTNcdTdhMTVcdTdhMTZcdTdhMThcdTdhMTlcdTdhMWJc'@; put 'dTdhMWNcdTRlMDFcdTc2ZWZcdTUzZWVcdTk0ODlcdTk4NzZcdTlmMGVcdTk1MmRcdTViOWFcdThiYTJcdTRlMjJcdTRlMWNcdTUxYWNcdTg0NjNcdTYxYzJcdTUyYThcdTY4MGJcdTRmOTdcdTYwNmJcdTUxYmJcdTZkMWVcdTUxNWNcdTYyOTZcdTY1OTdcdTk2NjFcdThjNDZcdTkwMTdcdTc1'@; put 'ZDhcdTkwZmRcdTc3NjNcdTZiZDJcdTcyOGFcdTcyZWNcdThiZmJcdTU4MzVcdTc3NzlcdThkNGNcdTY3NWNcdTk1NDBcdTgwOWFcdTVlYTZcdTZlMjFcdTU5OTJcdTdhZWZcdTc3ZWRcdTk1M2JcdTZiYjVcdTY1YWRcdTdmMGVcdTU4MDZcdTUxNTFcdTk2MWZcdTViZjlcdTU4YTlcdTU0Mjhc'@; put 'dThlNzJcdTY1NjZcdTk4N2ZcdTU2ZTRcdTk0OWRcdTc2ZmVcdTkwNDFcdTYzODdcdTU0YzZcdTU5MWFcdTU5M2FcdTU3OWJcdThlYjJcdTY3MzVcdThkZmFcdTgyMzVcdTUyNDFcdTYwZjBcdTU4MTVcdTg2ZmVcdTVjZThcdTllNDVcdTRmYzRcdTk4OWRcdThiYjlcdTVhMjVcdTYwNzZcdTUz'@; put 'ODRcdTYyN2NcdTkwNGZcdTkxMDJcdTk5N2ZcdTYwNjlcdTgwMGNcdTUxM2ZcdTgwMzNcdTVjMTRcdTk5NzVcdTZkMzFcdTRlOGNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4Ml1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODJdW3NdXT00'@; put 'NjU5MitzLGhbNDY1OTIrc109Y1sxODJdW3NdKTtmb3IoY1sxODNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMWRcdTdhMWZcdTdhMjFcdTdhMjJcdTdhMjRcdTdhMjVcdTdhMjZcdTdhMjdcdTdhMjhcdTdhMjlcdTdhMmFcdTdh'@; put 'MmJcdTdhMmNcdTdhMmRcdTdhMmVcdTdhMmZcdTdhMzBcdTdhMzFcdTdhMzJcdTdhMzRcdTdhMzVcdTdhMzZcdTdhMzhcdTdhM2FcdTdhM2VcdTdhNDBcdTdhNDFcdTdhNDJcdTdhNDNcdTdhNDRcdTdhNDVcdTdhNDdcdTdhNDhcdTdhNDlcdTdhNGFcdTdhNGJcdTdhNGNcdTdhNGRcdTdhNGVc'@; put 'dTdhNGZcdTdhNTBcdTdhNTJcdTdhNTNcdTdhNTRcdTdhNTVcdTdhNTZcdTdhNThcdTdhNTlcdTdhNWFcdTdhNWJcdTdhNWNcdTdhNWRcdTdhNWVcdTdhNWZcdTdhNjBcdTdhNjFcdTdhNjJcdTdhNjNcdTdhNjRcdTdhNjVcdTdhNjZcdTdhNjdcdTdhNjhcdWZmZmRcdTdhNjlcdTdhNmFcdTdh'@; put 'NmJcdTdhNmNcdTdhNmRcdTdhNmVcdTdhNmZcdTdhNzFcdTdhNzJcdTdhNzNcdTdhNzVcdTdhN2JcdTdhN2NcdTdhN2RcdTdhN2VcdTdhODJcdTdhODVcdTdhODdcdTdhODlcdTdhOGFcdTdhOGJcdTdhOGNcdTdhOGVcdTdhOGZcdTdhOTBcdTdhOTNcdTdhOTRcdTdhOTlcdTdhOWFcdTdhOWJc'@; put 'dTdhOWVcdTdhYTFcdTdhYTJcdThkMzBcdTUzZDFcdTdmNWFcdTdiNGZcdTRmMTBcdTRlNGZcdTk2MDBcdTZjZDVcdTczZDBcdTg1ZTlcdTVlMDZcdTc1NmFcdTdmZmJcdTZhMGFcdTc3ZmVcdTk0OTJcdTdlNDFcdTUxZTFcdTcwZTZcdTUzY2RcdThmZDRcdTgzMDNcdThkMjlcdTcyYWZcdTk5'@; put 'NmRcdTZjZGJcdTU3NGFcdTgyYjNcdTY1YjlcdTgwYWFcdTYyM2ZcdTk2MzJcdTU5YThcdTRlZmZcdThiYmZcdTdlYmFcdTY1M2VcdTgzZjJcdTk3NWVcdTU1NjFcdTk4ZGVcdTgwYTVcdTUzMmFcdThiZmRcdTU0MjBcdTgwYmFcdTVlOWZcdTZjYjhcdThkMzlcdTgyYWNcdTkxNWFcdTU0Mjlc'@; put 'dTZjMWJcdTUyMDZcdTdlYjdcdTU3NWZcdTcxMWFcdTZjN2VcdTdjODlcdTU5NGJcdTRlZmRcdTVmZmZcdTYxMjRcdTdjYWFcdTRlMzBcdTVjMDFcdTY3YWJcdTg3MDJcdTVjZjBcdTk1MGJcdTk4Y2VcdTc1YWZcdTcwZmRcdTkwMjJcdTUxYWZcdTdmMWRcdThiYmRcdTU5NDlcdTUxZTRcdTRm'@; put 'NWJcdTU0MjZcdTU5MmJcdTY1NzdcdTgwYTRcdTViNzVcdTYyNzZcdTYyYzJcdThmOTBcdTVlNDVcdTZjMWZcdTdiMjZcdTRmMGZcdTRmZDhcdTY3MGRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4M11bc10uY2hhckNvZGVBdCgwKSYmKHlb'@; put 'Y1sxODNdW3NdXT00Njg0OCtzLGhbNDY4NDgrc109Y1sxODNdW3NdKTtmb3IoY1sxODRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhYTNcdTdhYTRcdTdhYTdcdTdhYTlcdTdhYWFcdTdhYWJcdTdhYWVcdTdhYWZcdTdhYjBcdTdh'@; put 'YjFcdTdhYjJcdTdhYjRcdTdhYjVcdTdhYjZcdTdhYjdcdTdhYjhcdTdhYjlcdTdhYmFcdTdhYmJcdTdhYmNcdTdhYmRcdTdhYmVcdTdhYzBcdTdhYzFcdTdhYzJcdTdhYzNcdTdhYzRcdTdhYzVcdTdhYzZcdTdhYzdcdTdhYzhcdTdhYzlcdTdhY2FcdTdhY2NcdTdhY2RcdTdhY2VcdTdhY2Zc'@; put 'dTdhZDBcdTdhZDFcdTdhZDJcdTdhZDNcdTdhZDRcdTdhZDVcdTdhZDdcdTdhZDhcdTdhZGFcdTdhZGJcdTdhZGNcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTRcdTdhZTdcdTdhZThcdTdhZTlcdTdhZWFcdTdhZWJcdTdhZWNcdTdhZWVcdTdhZjBcdTdhZjFcdTdhZjJcdTdhZjNcdWZmZmRcdTdh'@; put 'ZjRcdTdhZjVcdTdhZjZcdTdhZjdcdTdhZjhcdTdhZmJcdTdhZmNcdTdhZmVcdTdiMDBcdTdiMDFcdTdiMDJcdTdiMDVcdTdiMDdcdTdiMDlcdTdiMGNcdTdiMGRcdTdiMGVcdTdiMTBcdTdiMTJcdTdiMTNcdTdiMTZcdTdiMTdcdTdiMThcdTdiMWFcdTdiMWNcdTdiMWRcdTdiMWZcdTdiMjFc'@; put 'dTdiMjJcdTdiMjNcdTdiMjdcdTdiMjlcdTdiMmRcdTZkNmVcdTZkYWFcdTc5OGZcdTg4YjFcdTVmMTdcdTc1MmJcdTYyOWFcdThmODVcdTRmZWZcdTkxZGNcdTY1YTdcdTgxMmZcdTgxNTFcdTVlOWNcdTgxNTBcdThkNzRcdTUyNmZcdTg5ODZcdThkNGJcdTU5MGRcdTUwODVcdTRlZDhcdTk2'@; put 'MWNcdTcyMzZcdTgxNzlcdThkMWZcdTViY2NcdThiYTNcdTk2NDRcdTU5ODdcdTdmMWFcdTU0OTBcdTU2NzZcdTU2MGVcdThiZTVcdTY1MzlcdTY5ODJcdTk0OTlcdTc2ZDZcdTZlODlcdTVlNzJcdTc1MThcdTY3NDZcdTY3ZDFcdTdhZmZcdTgwOWRcdThkNzZcdTYxMWZcdTc5YzZcdTY1NjJc'@; put 'dThkNjNcdTUxODhcdTUyMWFcdTk0YTJcdTdmMzhcdTgwOWJcdTdlYjJcdTVjOTdcdTZlMmZcdTY3NjBcdTdiZDlcdTc2OGJcdTlhZDhcdTgxOGZcdTdmOTRcdTdjZDVcdTY0MWVcdTk1NTBcdTdhM2ZcdTU0NGFcdTU0ZTVcdTZiNGNcdTY0MDFcdTYyMDhcdTllM2RcdTgwZjNcdTc1OTlcdTUy'@; put 'NzJcdTk3NjlcdTg0NWJcdTY4M2NcdTg2ZTRcdTk2MDFcdTk2OTRcdTk0ZWNcdTRlMmFcdTU0MDRcdTdlZDlcdTY4MzlcdThkZGZcdTgwMTVcdTY2ZjRcdTVlOWFcdTdmYjlcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4NF1bc10uY2hhckNv'@; put 'ZGVBdCgwKSYmKHlbY1sxODRdW3NdXT00NzEwNCtzLGhbNDcxMDQrc109Y1sxODRdW3NdKTtmb3IoY1sxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdiMmZcdTdiMzBcdTdiMzJcdTdiMzRcdTdiMzVcdTdiMzZcdTdiMzdcdTdi'@; put 'MzlcdTdiM2JcdTdiM2RcdTdiM2ZcdTdiNDBcdTdiNDFcdTdiNDJcdTdiNDNcdTdiNDRcdTdiNDZcdTdiNDhcdTdiNGFcdTdiNGRcdTdiNGVcdTdiNTNcdTdiNTVcdTdiNTdcdTdiNTlcdTdiNWNcdTdiNWVcdTdiNWZcdTdiNjFcdTdiNjNcdTdiNjRcdTdiNjVcdTdiNjZcdTdiNjdcdTdiNjhc'@; put 'dTdiNjlcdTdiNmFcdTdiNmJcdTdiNmNcdTdiNmRcdTdiNmZcdTdiNzBcdTdiNzNcdTdiNzRcdTdiNzZcdTdiNzhcdTdiN2FcdTdiN2NcdTdiN2RcdTdiN2ZcdTdiODFcdTdiODJcdTdiODNcdTdiODRcdTdiODZcdTdiODdcdTdiODhcdTdiODlcdTdiOGFcdTdiOGJcdTdiOGNcdTdiOGVcdTdi'@; put 'OGZcdWZmZmRcdTdiOTFcdTdiOTJcdTdiOTNcdTdiOTZcdTdiOThcdTdiOTlcdTdiOWFcdTdiOWJcdTdiOWVcdTdiOWZcdTdiYTBcdTdiYTNcdTdiYTRcdTdiYTVcdTdiYWVcdTdiYWZcdTdiYjBcdTdiYjJcdTdiYjNcdTdiYjVcdTdiYjZcdTdiYjdcdTdiYjlcdTdiYmFcdTdiYmJcdTdiYmNc'@; put 'dTdiYmRcdTdiYmVcdTdiYmZcdTdiYzBcdTdiYzJcdTdiYzNcdTdiYzRcdTU3YzJcdTgwM2ZcdTY4OTdcdTVkZTVcdTY1M2JcdTUyOWZcdTYwNmRcdTlmOWFcdTRmOWJcdThlYWNcdTUxNmNcdTViYWJcdTVmMTNcdTVkZTlcdTZjNWVcdTYyZjFcdThkMjFcdTUxNzFcdTk0YTlcdTUyZmVcdTZj'@; put 'OWZcdTgyZGZcdTcyZDdcdTU3YTJcdTY3ODRcdThkMmRcdTU5MWZcdThmOWNcdTgzYzdcdTU0OTVcdTdiOGRcdTRmMzBcdTZjYmRcdTViNjRcdTU5ZDFcdTlmMTNcdTUzZTRcdTg2Y2FcdTlhYThcdThjMzdcdTgwYTFcdTY1NDVcdTk4N2VcdTU2ZmFcdTk2YzdcdTUyMmVcdTc0ZGNcdTUyNTBc'@; put 'dTViZTFcdTYzMDJcdTg5MDJcdTRlNTZcdTYyZDBcdTYwMmFcdTY4ZmFcdTUxNzNcdTViOThcdTUxYTBcdTg5YzJcdTdiYTFcdTk5ODZcdTdmNTBcdTYwZWZcdTcwNGNcdThkMmZcdTUxNDlcdTVlN2ZcdTkwMWJcdTc0NzBcdTg5YzRcdTU3MmRcdTc4NDVcdTVmNTJcdTlmOWZcdTk1ZmFcdThm'@; put 'NjhcdTliM2NcdThiZTFcdTc2NzhcdTY4NDJcdTY3ZGNcdThkZWFcdThkMzVcdTUyM2RcdThmOGFcdTZlZGFcdTY4Y2RcdTk1MDVcdTkwZWRcdTU2ZmRcdTY3OWNcdTg4ZjlcdThmYzdcdTU0YzhcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4'@; put 'NV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODVdW3NdXT00NzM2MCtzLGhbNDczNjArc109Y1sxODVdW3NdKTtmb3IoY1sxODZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdiYzVcdTdiYzhcdTdiYzlcdTdiY2FcdTdiY2JcdTdi'@; put 'Y2RcdTdiY2VcdTdiY2ZcdTdiZDBcdTdiZDJcdTdiZDRcdTdiZDVcdTdiZDZcdTdiZDdcdTdiZDhcdTdiZGJcdTdiZGNcdTdiZGVcdTdiZGZcdTdiZTBcdTdiZTJcdTdiZTNcdTdiZTRcdTdiZTdcdTdiZThcdTdiZTlcdTdiZWJcdTdiZWNcdTdiZWRcdTdiZWZcdTdiZjBcdTdiZjJcdTdiZjNc'@; put 'dTdiZjRcdTdiZjVcdTdiZjZcdTdiZjhcdTdiZjlcdTdiZmFcdTdiZmJcdTdiZmRcdTdiZmZcdTdjMDBcdTdjMDFcdTdjMDJcdTdjMDNcdTdjMDRcdTdjMDVcdTdjMDZcdTdjMDhcdTdjMDlcdTdjMGFcdTdjMGRcdTdjMGVcdTdjMTBcdTdjMTFcdTdjMTJcdTdjMTNcdTdjMTRcdTdjMTVcdTdj'@; put 'MTdcdTdjMThcdTdjMTlcdWZmZmRcdTdjMWFcdTdjMWJcdTdjMWNcdTdjMWRcdTdjMWVcdTdjMjBcdTdjMjFcdTdjMjJcdTdjMjNcdTdjMjRcdTdjMjVcdTdjMjhcdTdjMjlcdTdjMmJcdTdjMmNcdTdjMmRcdTdjMmVcdTdjMmZcdTdjMzBcdTdjMzFcdTdjMzJcdTdjMzNcdTdjMzRcdTdjMzVc'@; put 'dTdjMzZcdTdjMzdcdTdjMzlcdTdjM2FcdTdjM2JcdTdjM2NcdTdjM2RcdTdjM2VcdTdjNDJcdTlhYjhcdTViNjlcdTZkNzdcdTZjMjZcdTRlYTVcdTViYjNcdTlhODdcdTkxNjNcdTYxYThcdTkwYWZcdTk3ZTlcdTU0MmJcdTZkYjVcdTViZDJcdTUxZmRcdTU1OGFcdTdmNTVcdTdmZjBcdTY0'@; put 'YmNcdTYzNGRcdTY1ZjFcdTYxYmVcdTYwOGRcdTcxMGFcdTZjNTdcdTZjNDlcdTU5MmZcdTY3NmRcdTgyMmFcdTU4ZDVcdTU2OGVcdThjNmFcdTZiZWJcdTkwZGRcdTU5N2RcdTgwMTdcdTUzZjdcdTZkNjlcdTU0NzVcdTU1OWRcdTgzNzdcdTgzY2ZcdTY4MzhcdTc5YmVcdTU0OGNcdTRmNTVc'@; put 'dTU0MDhcdTc2ZDJcdThjODlcdTk2MDJcdTZjYjNcdTZkYjhcdThkNmJcdTg5MTBcdTllNjRcdThkM2FcdTU2M2ZcdTllZDFcdTc1ZDVcdTVmODhcdTcyZTBcdTYwNjhcdTU0ZmNcdTRlYThcdTZhMmFcdTg4NjFcdTYwNTJcdThmNzBcdTU0YzRcdTcwZDhcdTg2NzlcdTllM2ZcdTZkMmFcdTVi'@; put 'OGZcdTVmMThcdTdlYTJcdTU1ODlcdTRmYWZcdTczMzRcdTU0M2NcdTUzOWFcdTUwMTlcdTU0MGVcdTU0N2NcdTRlNGVcdTVmZmRcdTc0NWFcdTU4ZjZcdTg0NmJcdTgwZTFcdTg3NzRcdTcyZDBcdTdjY2FcdTZlNTZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODZdLmxlbmd0aDsrK3Mp'@; put 'NjU1MzMhPT1jWzE4Nl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODZdW3NdXT00NzYxNitzLGhbNDc2MTYrc109Y1sxODZdW3NdKTtmb3IoY1sxODddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjNDNcdTdjNDRcdTdjNDVcdTdj'@; put 'NDZcdTdjNDdcdTdjNDhcdTdjNDlcdTdjNGFcdTdjNGJcdTdjNGNcdTdjNGVcdTdjNGZcdTdjNTBcdTdjNTFcdTdjNTJcdTdjNTNcdTdjNTRcdTdjNTVcdTdjNTZcdTdjNTdcdTdjNThcdTdjNTlcdTdjNWFcdTdjNWJcdTdjNWNcdTdjNWRcdTdjNWVcdTdjNWZcdTdjNjBcdTdjNjFcdTdjNjJc'@; put 'dTdjNjNcdTdjNjRcdTdjNjVcdTdjNjZcdTdjNjdcdTdjNjhcdTdjNjlcdTdjNmFcdTdjNmJcdTdjNmNcdTdjNmRcdTdjNmVcdTdjNmZcdTdjNzBcdTdjNzFcdTdjNzJcdTdjNzVcdTdjNzZcdTdjNzdcdTdjNzhcdTdjNzlcdTdjN2FcdTdjN2VcdTdjN2ZcdTdjODBcdTdjODFcdTdjODJcdTdj'@; put 'ODNcdTdjODRcdTdjODVcdTdjODZcdTdjODdcdWZmZmRcdTdjODhcdTdjOGFcdTdjOGJcdTdjOGNcdTdjOGRcdTdjOGVcdTdjOGZcdTdjOTBcdTdjOTNcdTdjOTRcdTdjOTZcdTdjOTlcdTdjOWFcdTdjOWJcdTdjYTBcdTdjYTFcdTdjYTNcdTdjYTZcdTdjYTdcdTdjYThcdTdjYTlcdTdjYWJc'@; put 'dTdjYWNcdTdjYWRcdTdjYWZcdTdjYjBcdTdjYjRcdTdjYjVcdTdjYjZcdTdjYjdcdTdjYjhcdTdjYmFcdTdjYmJcdTVmMjdcdTg2NGVcdTU1MmNcdTYyYTRcdTRlOTJcdTZjYWFcdTYyMzdcdTgyYjFcdTU0ZDdcdTUzNGVcdTczM2VcdTZlZDFcdTc1M2JcdTUyMTJcdTUzMTZcdThiZGRcdTY5'@; put 'ZDBcdTVmOGFcdTYwMDBcdTZkZWVcdTU3NGZcdTZiMjJcdTczYWZcdTY4NTNcdThmZDhcdTdmMTNcdTYzNjJcdTYwYTNcdTU1MjRcdTc1ZWFcdThjNjJcdTcxMTVcdTZkYTNcdTViYTZcdTVlN2JcdTgzNTJcdTYxNGNcdTllYzRcdTc4ZmFcdTg3NTdcdTdjMjdcdTc2ODdcdTUxZjBcdTYwZjZc'@; put 'dTcxNGNcdTY2NDNcdTVlNGNcdTYwNGRcdThjMGVcdTcwNzBcdTYzMjVcdThmODlcdTVmYmRcdTYwNjJcdTg2ZDRcdTU2ZGVcdTZiYzFcdTYwOTRcdTYxNjdcdTUzNDlcdTYwZTBcdTY2NjZcdThkM2ZcdTc5ZmRcdTRmMWFcdTcwZTlcdTZjNDdcdThiYjNcdThiZjJcdTdlZDhcdTgzNjRcdTY2'@; put 'MGZcdTVhNWFcdTliNDJcdTZkNTFcdTZkZjdcdThjNDFcdTZkM2JcdTRmMTlcdTcwNmJcdTgzYjdcdTYyMTZcdTYwZDFcdTk3MGRcdThkMjdcdTc5NzhcdTUxZmJcdTU3M2VcdTU3ZmFcdTY3M2FcdTc1NzhcdTdhM2RcdTc5ZWZcdTdiOTVcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxODdd'@; put 'Lmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4N11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODddW3NdXT00Nzg3MitzLGhbNDc4NzIrc109Y1sxODddW3NdKTtmb3IoY1sxODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjYmZcdTdj'@; put 'YzBcdTdjYzJcdTdjYzNcdTdjYzRcdTdjYzZcdTdjYzlcdTdjY2JcdTdjY2VcdTdjY2ZcdTdjZDBcdTdjZDFcdTdjZDJcdTdjZDNcdTdjZDRcdTdjZDhcdTdjZGFcdTdjZGJcdTdjZGRcdTdjZGVcdTdjZTFcdTdjZTJcdTdjZTNcdTdjZTRcdTdjZTVcdTdjZTZcdTdjZTdcdTdjZTlcdTdjZWFc'@; put 'dTdjZWJcdTdjZWNcdTdjZWRcdTdjZWVcdTdjZjBcdTdjZjFcdTdjZjJcdTdjZjNcdTdjZjRcdTdjZjVcdTdjZjZcdTdjZjdcdTdjZjlcdTdjZmFcdTdjZmNcdTdjZmRcdTdjZmVcdTdjZmZcdTdkMDBcdTdkMDFcdTdkMDJcdTdkMDNcdTdkMDRcdTdkMDVcdTdkMDZcdTdkMDdcdTdkMDhcdTdk'@; put 'MDlcdTdkMGJcdTdkMGNcdTdkMGRcdTdkMGVcdTdkMGZcdTdkMTBcdWZmZmRcdTdkMTFcdTdkMTJcdTdkMTNcdTdkMTRcdTdkMTVcdTdkMTZcdTdkMTdcdTdkMThcdTdkMTlcdTdkMWFcdTdkMWJcdTdkMWNcdTdkMWRcdTdkMWVcdTdkMWZcdTdkMjFcdTdkMjNcdTdkMjRcdTdkMjVcdTdkMjZc'@; put 'dTdkMjhcdTdkMjlcdTdkMmFcdTdkMmNcdTdkMmRcdTdkMmVcdTdkMzBcdTdkMzFcdTdkMzJcdTdkMzNcdTdkMzRcdTdkMzVcdTdkMzZcdTgwOGNcdTk5NjVcdThmZjlcdTZmYzBcdThiYTVcdTllMjFcdTU5ZWNcdTdlZTlcdTdmMDlcdTU0MDlcdTY3ODFcdTY4ZDhcdThmOTFcdTdjNGRcdTk2'@; put 'YzZcdTUzY2FcdTYwMjVcdTc1YmVcdTZjNzJcdTUzNzNcdTVhYzlcdTdlYTdcdTYzMjRcdTUxZTBcdTgxMGFcdTVkZjFcdTg0ZGZcdTYyODBcdTUxODBcdTViNjNcdTRmMGVcdTc5NmRcdTUyNDJcdTYwYjhcdTZkNGVcdTViYzRcdTViYzJcdThiYTFcdThiYjBcdTY1ZTJcdTVmY2NcdTk2NDVc'@; put 'dTU5OTNcdTdlZTdcdTdlYWFcdTU2MDlcdTY3YjdcdTU5MzlcdTRmNzNcdTViYjZcdTUyYTBcdTgzNWFcdTk4OGFcdThkM2VcdTc1MzJcdTk0YmVcdTUwNDdcdTdhM2NcdTRlZjdcdTY3YjZcdTlhN2VcdTVhYzFcdTZiN2NcdTc2ZDFcdTU3NWFcdTVjMTZcdTdiM2FcdTk1ZjRcdTcxNGVcdTUx'@; put 'N2NcdTgwYTlcdTgyNzBcdTU5NzhcdTdmMDRcdTgzMjdcdTY4YzBcdTY3ZWNcdTc4YjFcdTc4NzdcdTYyZTNcdTYzNjFcdTdiODBcdTRmZWRcdTUyNmFcdTUxY2ZcdTgzNTBcdTY5ZGJcdTkyNzRcdThkZjVcdThkMzFcdTg5YzFcdTk1MmVcdTdiYWRcdTRlZjZcdWZmZmQiLnNwbGl0KCIiKSxz'@; put 'PTA7cyE9Y1sxODhdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4OF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODhdW3NdXT00ODEyOCtzLGhbNDgxMjgrc109Y1sxODhdW3NdKTtmb3IoY1sxODldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdTdkMzdcdTdkMzhcdTdkMzlcdTdkM2FcdTdkM2JcdTdkM2NcdTdkM2RcdTdkM2VcdTdkM2ZcdTdkNDBcdTdkNDFcdTdkNDJcdTdkNDNcdTdkNDRcdTdkNDVcdTdkNDZcdTdkNDdcdTdkNDhcdTdkNDlcdTdkNGFcdTdkNGJcdTdkNGNcdTdkNGRcdTdkNGVcdTdkNGZcdTdkNTBcdTdkNTFc'@; put 'dTdkNTJcdTdkNTNcdTdkNTRcdTdkNTVcdTdkNTZcdTdkNTdcdTdkNThcdTdkNTlcdTdkNWFcdTdkNWJcdTdkNWNcdTdkNWRcdTdkNWVcdTdkNWZcdTdkNjBcdTdkNjFcdTdkNjJcdTdkNjNcdTdkNjRcdTdkNjVcdTdkNjZcdTdkNjdcdTdkNjhcdTdkNjlcdTdkNmFcdTdkNmJcdTdkNmNcdTdk'@; put 'NmRcdTdkNmZcdTdkNzBcdTdkNzFcdTdkNzJcdTdkNzNcdTdkNzRcdTdkNzVcdTdkNzZcdWZmZmRcdTdkNzhcdTdkNzlcdTdkN2FcdTdkN2JcdTdkN2NcdTdkN2RcdTdkN2VcdTdkN2ZcdTdkODBcdTdkODFcdTdkODJcdTdkODNcdTdkODRcdTdkODVcdTdkODZcdTdkODdcdTdkODhcdTdkODlc'@; put 'dTdkOGFcdTdkOGJcdTdkOGNcdTdkOGRcdTdkOGVcdTdkOGZcdTdkOTBcdTdkOTFcdTdkOTJcdTdkOTNcdTdkOTRcdTdkOTVcdTdkOTZcdTdkOTdcdTdkOThcdTUwNjVcdTgyMzBcdTUyNTFcdTk5NmZcdTZlMTBcdTZlODVcdTZkYTdcdTVlZmFcdTUwZjVcdTU5ZGNcdTVjMDZcdTZkNDZcdTZj'@; put 'NWZcdTc1ODZcdTg0OGJcdTY4NjhcdTU5NTZcdThiYjJcdTUzMjBcdTkxNzFcdTk2NGRcdTg1NDlcdTY5MTJcdTc5MDFcdTcxMjZcdTgwZjZcdTRlYTRcdTkwY2FcdTZkNDdcdTlhODRcdTVhMDdcdTU2YmNcdTY0MDVcdTk0ZjBcdTc3ZWJcdTRmYTVcdTgxMWFcdTcyZTFcdTg5ZDJcdTk5N2Fc'@; put 'dTdmMzRcdTdlZGVcdTUyN2ZcdTY1NTlcdTkxNzVcdThmN2ZcdThmODNcdTUzZWJcdTdhOTZcdTYzZWRcdTYzYTVcdTc2ODZcdTc5ZjhcdTg4NTdcdTk2MzZcdTYyMmFcdTUyYWJcdTgyODJcdTY4NTRcdTY3NzBcdTYzNzdcdTc3NmJcdTdhZWRcdTZkMDFcdTdlZDNcdTg5ZTNcdTU5ZDBcdTYy'@; put 'MTJcdTg1YzlcdTgyYTVcdTc1NGNcdTUwMWZcdTRlY2JcdTc1YTVcdThiZWJcdTVjNGFcdTVkZmVcdTdiNGJcdTY1YTRcdTkxZDFcdTRlY2FcdTZkMjVcdTg5NWZcdTdkMjdcdTk1MjZcdTRlYzVcdThjMjhcdThmZGJcdTk3NzNcdTY2NGJcdTc5ODFcdThmZDFcdTcwZWNcdTZkNzhcdWZmZmQi'@; put 'LnNwbGl0KCIiKSxzPTA7cyE9Y1sxODldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE4OV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxODldW3NdXT00ODM4NCtzLGhbNDgzODQrc109Y1sxODldW3NdKTtmb3IoY1sxOTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdTdkOTlcdTdkOWFcdTdkOWJcdTdkOWNcdTdkOWRcdTdkOWVcdTdkOWZcdTdkYTBcdTdkYTFcdTdkYTJcdTdkYTNcdTdkYTRcdTdkYTVcdTdkYTdcdTdkYThcdTdkYTlcdTdkYWFcdTdkYWJcdTdkYWNcdTdkYWRcdTdkYWZcdTdkYjBcdTdkYjFcdTdkYjJcdTdkYjNc'@; put 'dTdkYjRcdTdkYjVcdTdkYjZcdTdkYjdcdTdkYjhcdTdkYjlcdTdkYmFcdTdkYmJcdTdkYmNcdTdkYmRcdTdkYmVcdTdkYmZcdTdkYzBcdTdkYzFcdTdkYzJcdTdkYzNcdTdkYzRcdTdkYzVcdTdkYzZcdTdkYzdcdTdkYzhcdTdkYzlcdTdkY2FcdTdkY2JcdTdkY2NcdTdkY2RcdTdkY2VcdTdk'@; put 'Y2ZcdTdkZDBcdTdkZDFcdTdkZDJcdTdkZDNcdTdkZDRcdTdkZDVcdTdkZDZcdTdkZDdcdTdkZDhcdTdkZDlcdWZmZmRcdTdkZGFcdTdkZGJcdTdkZGNcdTdkZGRcdTdkZGVcdTdkZGZcdTdkZTBcdTdkZTFcdTdkZTJcdTdkZTNcdTdkZTRcdTdkZTVcdTdkZTZcdTdkZTdcdTdkZThcdTdkZTlc'@; put 'dTdkZWFcdTdkZWJcdTdkZWNcdTdkZWRcdTdkZWVcdTdkZWZcdTdkZjBcdTdkZjFcdTdkZjJcdTdkZjNcdTdkZjRcdTdkZjVcdTdkZjZcdTdkZjdcdTdkZjhcdTdkZjlcdTdkZmFcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdj'@; put 'YmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZcdTk4ODhcdTk3NTlcdTU4ODNcdTY1NmNcdTk1NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdhZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZcdTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJc'@; put 'dTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0OGVcdTVjMzFcdTc1OWFcdTk3YTBcdTYyZDhcdTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2FcdTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYzNmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1'@; put 'MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdcdTYzNTBcdTllNDNcdTVhMWZcdTUwMjZcdTc3MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYyODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRcdTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJc'@; put 'dTVjZmJcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5MF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTBdW3NdXT00ODY0MCtzLGhbNDg2NDArc109Y1sxOTBdW3NdKTtmb3IoY1sxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkZmJcdTdkZmNcdTdkZmRcdTdkZmVcdTdkZmZcdTdlMDBcdTdlMDFcdTdlMDJcdTdlMDNcdTdlMDRcdTdlMDVcdTdlMDZcdTdlMDdcdTdlMDhcdTdlMDlcdTdlMGFcdTdlMGJcdTdlMGNcdTdlMGRcdTdlMGVcdTdlMGZcdTdlMTBcdTdlMTFc'@; put 'dTdlMTJcdTdlMTNcdTdlMTRcdTdlMTVcdTdlMTZcdTdlMTdcdTdlMThcdTdlMTlcdTdlMWFcdTdlMWJcdTdlMWNcdTdlMWRcdTdlMWVcdTdlMWZcdTdlMjBcdTdlMjFcdTdlMjJcdTdlMjNcdTdlMjRcdTdlMjVcdTdlMjZcdTdlMjdcdTdlMjhcdTdlMjlcdTdlMmFcdTdlMmJcdTdlMmNcdTdl'@; put 'MmRcdTdlMmVcdTdlMmZcdTdlMzBcdTdlMzFcdTdlMzJcdTdlMzNcdTdlMzRcdTdlMzVcdTdlMzZcdTdlMzdcdTdlMzhcdTdlMzlcdWZmZmRcdTdlM2FcdTdlM2NcdTdlM2RcdTdlM2VcdTdlM2ZcdTdlNDBcdTdlNDJcdTdlNDNcdTdlNDRcdTdlNDVcdTdlNDZcdTdlNDhcdTdlNDlcdTdlNGFc'@; put 'dTdlNGJcdTdlNGNcdTdlNGRcdTdlNGVcdTdlNGZcdTdlNTBcdTdlNTFcdTdlNTJcdTdlNTNcdTdlNTRcdTdlNTVcdTdlNTZcdTdlNTdcdTdlNThcdTdlNTlcdTdlNWFcdTdlNWJcdTdlNWNcdTdlNWRcdTRmY2FcdTdhZTNcdTZkNWFcdTkwZTFcdTlhOGZcdTU1ODBcdTU0OTZcdTUzNjFcdTU0'@; put 'YWZcdTVmMDBcdTYzZTlcdTY5NzdcdTUxZWZcdTYxNjhcdTUyMGFcdTU4MmFcdTUyZDhcdTU3NGVcdTc4MGRcdTc3MGJcdTVlYjdcdTYxNzdcdTdjZTBcdTYyNWJcdTYyOTdcdTRlYTJcdTcwOTVcdTgwMDNcdTYyZjdcdTcwZTRcdTk3NjBcdTU3NzdcdTgyZGJcdTY3ZWZcdTY4ZjVcdTc4ZDVc'@; put 'dTk4OTdcdTc5ZDFcdTU4ZjNcdTU0YjNcdTUzZWZcdTZlMzRcdTUxNGJcdTUyM2JcdTViYTJcdThiZmVcdTgwYWZcdTU1NDNcdTU3YTZcdTYwNzNcdTU3NTFcdTU0MmRcdTdhN2FcdTYwNTBcdTViNTRcdTYzYTdcdTYyYTBcdTUzZTNcdTYyNjNcdTViYzdcdTY3YWZcdTU0ZWRcdTdhOWZcdTgy'@; put 'ZTZcdTkxNzdcdTVlOTNcdTg4ZTRcdTU5MzhcdTU3YWVcdTYzMGVcdThkZThcdTgwZWZcdTU3NTdcdTdiNzdcdTRmYTlcdTVmZWJcdTViYmRcdTZiM2VcdTUzMjFcdTdiNTBcdTcyYzJcdTY4NDZcdTc3ZmZcdTc3MzZcdTY1ZjdcdTUxYjVcdTRlOGZcdTc2ZDRcdTVjYmZcdTdhYTVcdTg0NzVc'@; put 'dTU5NGVcdTliNDFcdTUwODBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5MV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTFdW3NdXT00ODg5NitzLGhbNDg4OTYrc109Y1sxOTFdW3NdKTtmb3IoY1sxOTJdPSJcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdlNWVcdTdlNWZcdTdlNjBcdTdlNjFcdTdlNjJcdTdlNjNcdTdlNjRcdTdlNjVcdTdlNjZcdTdlNjdcdTdlNjhcdTdlNjlcdTdlNmFcdTdlNmJcdTdlNmNcdTdlNmRcdTdlNmVcdTdlNmZcdTdlNzBcdTdlNzFcdTdlNzJc'@; put 'dTdlNzNcdTdlNzRcdTdlNzVcdTdlNzZcdTdlNzdcdTdlNzhcdTdlNzlcdTdlN2FcdTdlN2JcdTdlN2NcdTdlN2RcdTdlN2VcdTdlN2ZcdTdlODBcdTdlODFcdTdlODNcdTdlODRcdTdlODVcdTdlODZcdTdlODdcdTdlODhcdTdlODlcdTdlOGFcdTdlOGJcdTdlOGNcdTdlOGRcdTdlOGVcdTdl'@; put 'OGZcdTdlOTBcdTdlOTFcdTdlOTJcdTdlOTNcdTdlOTRcdTdlOTVcdTdlOTZcdTdlOTdcdTdlOThcdTdlOTlcdTdlOWFcdTdlOWNcdTdlOWRcdTdlOWVcdWZmZmRcdTdlYWVcdTdlYjRcdTdlYmJcdTdlYmNcdTdlZDZcdTdlZTRcdTdlZWNcdTdlZjlcdTdmMGFcdTdmMTBcdTdmMWVcdTdmMzdc'@; put 'dTdmMzlcdTdmM2JcdTdmM2NcdTdmM2RcdTdmM2VcdTdmM2ZcdTdmNDBcdTdmNDFcdTdmNDNcdTdmNDZcdTdmNDdcdTdmNDhcdTdmNDlcdTdmNGFcdTdmNGJcdTdmNGNcdTdmNGRcdTdmNGVcdTdmNGZcdTdmNTJcdTdmNTNcdTk5ODhcdTYxMjdcdTZlODNcdTU3NjRcdTY2MDZcdTYzNDZcdTU2'@; put 'ZjBcdTYyZWNcdTYyNjlcdTVlZDNcdTk2MTRcdTU3ODNcdTYyYzlcdTU1ODdcdTg3MjFcdTgxNGFcdThmYTNcdTU1NjZcdTgzYjFcdTY3NjVcdThkNTZcdTg0ZGRcdTVhNmFcdTY4MGZcdTYyZTZcdTdiZWVcdTk2MTFcdTUxNzBcdTZmOWNcdThjMzBcdTYzZmRcdTg5YzhcdTYxZDJcdTdmMDZc'@; put 'dTcwYzJcdTZlZTVcdTc0MDVcdTY5OTRcdTcyZmNcdTVlY2FcdTkwY2VcdTY3MTdcdTZkNmFcdTYzNWVcdTUyYjNcdTcyNjJcdTgwMDFcdTRmNmNcdTU5ZTVcdTkxNmFcdTcwZDlcdTZkOWRcdTUyZDJcdTRlNTBcdTk2ZjdcdTk1NmRcdTg1N2VcdTc4Y2FcdTdkMmZcdTUxMjFcdTU3OTJcdTY0'@; put 'YzJcdTgwOGJcdTdjN2JcdTZjZWFcdTY4ZjFcdTY5NWVcdTUxYjdcdTUzOThcdTY4YThcdTcyODFcdTllY2VcdTdiZjFcdTcyZjhcdTc5YmJcdTZmMTNcdTc0MDZcdTY3NGVcdTkxY2NcdTljYTRcdTc5M2NcdTgzODlcdTgzNTRcdTU0MGZcdTY4MTdcdTRlM2RcdTUzODlcdTUyYjFcdTc4M2Vc'@; put 'dTUzODZcdTUyMjlcdTUwODhcdTRmOGJcdTRmZDBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5Ml1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTJdW3NdXT00OTE1MitzLGhbNDkxNTIrc109Y1sxOTJdW3NdKTtmb3IoY1sxOTNdPSJcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdmNTZcdTdmNTlcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNWVcdTdmNjBcdTdmNjNcdTdmNjRcdTdmNjVcdTdmNjZcdTdmNjdcdTdmNmJcdTdmNmNcdTdmNmRcdTdmNmZcdTdmNzBcdTdmNzNcdTdmNzVc'@; put 'dTdmNzZcdTdmNzdcdTdmNzhcdTdmN2FcdTdmN2JcdTdmN2NcdTdmN2RcdTdmN2ZcdTdmODBcdTdmODJcdTdmODNcdTdmODRcdTdmODVcdTdmODZcdTdmODdcdTdmODhcdTdmODlcdTdmOGJcdTdmOGRcdTdmOGZcdTdmOTBcdTdmOTFcdTdmOTJcdTdmOTNcdTdmOTVcdTdmOTZcdTdmOTdcdTdm'@; put 'OThcdTdmOTlcdTdmOWJcdTdmOWNcdTdmYTBcdTdmYTJcdTdmYTNcdTdmYTVcdTdmYTZcdTdmYThcdTdmYTlcdTdmYWFcdTdmYWJcdTdmYWNcdTdmYWRcdTdmYWVcdTdmYjFcdWZmZmRcdTdmYjNcdTdmYjRcdTdmYjVcdTdmYjZcdTdmYjdcdTdmYmFcdTdmYmJcdTdmYmVcdTdmYzBcdTdmYzJc'@; put 'dTdmYzNcdTdmYzRcdTdmYzZcdTdmYzdcdTdmYzhcdTdmYzlcdTdmY2JcdTdmY2RcdTdmY2ZcdTdmZDBcdTdmZDFcdTdmZDJcdTdmZDNcdTdmZDZcdTdmZDdcdTdmZDlcdTdmZGFcdTdmZGJcdTdmZGNcdTdmZGRcdTdmZGVcdTdmZTJcdTdmZTNcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2'@; put 'YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgwNTRcdTgzYjJcdThmZGVcdTk1NzBcdTVlYzlcdTYwMWNcdTZkOWZcdTVlMThcdTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdjYjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2Vc'@; put 'dTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFcdTc1OTdcdTcxY2VcdTViZTVcdThmYmRcdTZmNjZcdTRlODZcdTY0ODJcdTk1NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdcdTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZk'@; put 'Y2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTczYjJcdTgzZjFcdTk2ZjZcdTlmODRcdTk0YzNcdTRmMzZcdTdmOWFcdTUxY2NcdTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFc'@; put 'dTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlcdTdiM2NcdTdhYmZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5M11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTNdW3NdXT00OTQwOCtzLGhbNDk0MDgrc109Y1sxOTNdW3NdKTtmb3Io'@; put 'Y1sxOTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdmZTRcdTdmZTdcdTdmZThcdTdmZWFcdTdmZWJcdTdmZWNcdTdmZWRcdTdmZWZcdTdmZjJcdTdmZjRcdTdmZjVcdTdmZjZcdTdmZjdcdTdmZjhcdTdmZjlcdTdmZmFcdTdmZmRc'@; put 'dTdmZmVcdTdmZmZcdTgwMDJcdTgwMDdcdTgwMDhcdTgwMDlcdTgwMGFcdTgwMGVcdTgwMGZcdTgwMTFcdTgwMTNcdTgwMWFcdTgwMWJcdTgwMWRcdTgwMWVcdTgwMWZcdTgwMjFcdTgwMjNcdTgwMjRcdTgwMmJcdTgwMmNcdTgwMmRcdTgwMmVcdTgwMmZcdTgwMzBcdTgwMzJcdTgwMzRcdTgw'@; put 'MzlcdTgwM2FcdTgwM2NcdTgwM2VcdTgwNDBcdTgwNDFcdTgwNDRcdTgwNDVcdTgwNDdcdTgwNDhcdTgwNDlcdTgwNGVcdTgwNGZcdTgwNTBcdTgwNTFcdTgwNTNcdTgwNTVcdTgwNTZcdTgwNTdcdWZmZmRcdTgwNTlcdTgwNWJcdTgwNWNcdTgwNWRcdTgwNWVcdTgwNWZcdTgwNjBcdTgwNjFc'@; put 'dTgwNjJcdTgwNjNcdTgwNjRcdTgwNjVcdTgwNjZcdTgwNjdcdTgwNjhcdTgwNmJcdTgwNmNcdTgwNmRcdTgwNmVcdTgwNmZcdTgwNzBcdTgwNzJcdTgwNzNcdTgwNzRcdTgwNzVcdTgwNzZcdTgwNzdcdTgwNzhcdTgwNzlcdTgwN2FcdTgwN2JcdTgwN2NcdTgwN2RcdTk2ODZcdTU3ODRcdTYy'@; put 'ZTJcdTk2NDdcdTY5N2NcdTVhMDRcdTY0MDJcdTdiZDNcdTZmMGZcdTk2NGJcdTgyYTZcdTUzNjJcdTk4ODVcdTVlOTBcdTcwODlcdTYzYjNcdTUzNjRcdTg2NGZcdTljODFcdTllOTNcdTc4OGNcdTk3MzJcdThkZWZcdThkNDJcdTllN2ZcdTZmNWVcdTc5ODRcdTVmNTVcdTk2NDZcdTYyMmVc'@; put 'dTlhNzRcdTU0MTVcdTk0ZGRcdTRmYTNcdTY1YzVcdTVjNjVcdTVjNjFcdTdmMTVcdTg2NTFcdTZjMmZcdTVmOGJcdTczODdcdTZlZTRcdTdlZmZcdTVjZTZcdTYzMWJcdTViNmFcdTZlZTZcdTUzNzVcdTRlNzFcdTYzYTBcdTc1NjVcdTYyYTFcdThmNmVcdTRmMjZcdTRlZDFcdTZjYTZcdTdl'@; put 'YjZcdThiYmFcdTg0MWRcdTg3YmFcdTdmNTdcdTkwM2JcdTk1MjNcdTdiYTlcdTlhYTFcdTg4ZjhcdTg0M2RcdTZkMWJcdTlhODZcdTdlZGNcdTU5ODhcdTllYmJcdTczOWJcdTc4MDFcdTg2ODJcdTlhNmNcdTlhODJcdTU2MWJcdTU0MTdcdTU3Y2JcdTRlNzBcdTllYTZcdTUzNTZcdThmYzhc'@; put 'dTgxMDlcdTc3OTJcdTk5OTJcdTg2ZWVcdTZlZTFcdTg1MTNcdTY2ZmNcdTYxNjJcdTZmMmJcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5NF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTRdW3NdXT00OTY2NCtzLGhbNDk2NjQrc109Y1sx'@; put 'OTRdW3NdKTtmb3IoY1sxOTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgwN2VcdTgwODFcdTgwODJcdTgwODVcdTgwODhcdTgwOGFcdTgwOGRcdTgwOGVcdTgwOGZcdTgwOTBcdTgwOTFcdTgwOTJcdTgwOTRcdTgwOTVcdTgwOTdc'@; put 'dTgwOTlcdTgwOWVcdTgwYTNcdTgwYTZcdTgwYTdcdTgwYThcdTgwYWNcdTgwYjBcdTgwYjNcdTgwYjVcdTgwYjZcdTgwYjhcdTgwYjlcdTgwYmJcdTgwYzVcdTgwYzdcdTgwYzhcdTgwYzlcdTgwY2FcdTgwY2JcdTgwY2ZcdTgwZDBcdTgwZDFcdTgwZDJcdTgwZDNcdTgwZDRcdTgwZDVcdTgw'@; put 'ZDhcdTgwZGZcdTgwZTBcdTgwZTJcdTgwZTNcdTgwZTZcdTgwZWVcdTgwZjVcdTgwZjdcdTgwZjlcdTgwZmJcdTgwZmVcdTgwZmZcdTgxMDBcdTgxMDFcdTgxMDNcdTgxMDRcdTgxMDVcdTgxMDdcdTgxMDhcdTgxMGJcdWZmZmRcdTgxMGNcdTgxMTVcdTgxMTdcdTgxMTlcdTgxMWJcdTgxMWNc'@; put 'dTgxMWRcdTgxMWZcdTgxMjBcdTgxMjFcdTgxMjJcdTgxMjNcdTgxMjRcdTgxMjVcdTgxMjZcdTgxMjdcdTgxMjhcdTgxMjlcdTgxMmFcdTgxMmJcdTgxMmRcdTgxMmVcdTgxMzBcdTgxMzNcdTgxMzRcdTgxMzVcdTgxMzdcdTgxMzlcdTgxM2FcdTgxM2JcdTgxM2NcdTgxM2RcdTgxM2ZcdThj'@; put 'MjlcdTgyOTJcdTgzMmJcdTc2ZjJcdTZjMTNcdTVmZDlcdTgzYmRcdTczMmJcdTgzMDVcdTk1MWFcdTZiZGJcdTc3ZGJcdTk0YzZcdTUzNmZcdTgzMDJcdTUxOTJcdTVlM2RcdThjOGNcdThkMzhcdTRlNDhcdTczYWJcdTY3OWFcdTY4ODVcdTkxNzZcdTk3MDlcdTcxNjRcdTZjYTFcdTc3MDlc'@; put 'dTVhOTJcdTk1NDFcdTZiY2ZcdTdmOGVcdTY2MjdcdTViZDBcdTU5YjlcdTVhOWFcdTk1ZThcdTk1ZjdcdTRlZWNcdTg0MGNcdTg0OTlcdTZhYWNcdTc2ZGZcdTk1MzBcdTczMWJcdTY4YTZcdTViNWZcdTc3MmZcdTkxOWFcdTk3NjFcdTdjZGNcdThmZjdcdThjMWNcdTVmMjVcdTdjNzNcdTc5'@; put 'ZDhcdTg5YzVcdTZjY2NcdTg3MWNcdTViYzZcdTVlNDJcdTY4YzlcdTc3MjBcdTdlZjVcdTUxOTVcdTUxNGRcdTUyYzlcdTVhMjlcdTdmMDVcdTk3NjJcdTgyZDdcdTYzY2ZcdTc3ODRcdTg1ZDBcdTc5ZDJcdTZlM2FcdTVlOTlcdTU5OTlcdTg1MTFcdTcwNmRcdTZjMTFcdTYyYmZcdTc2YmZc'@; put 'dTY1NGZcdTYwYWZcdTk1ZmRcdTY2MGVcdTg3OWZcdTllMjNcdTk0ZWRcdTU0MGRcdTU0N2RcdThjMmNcdTY0NzhcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5NV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTVdW3NdXT00OTkyMCtzLGhb'@; put 'NDk5MjArc109Y1sxOTVdW3NdKTtmb3IoY1sxOTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDBcdTgxNDFcdTgxNDJcdTgxNDNcdTgxNDRcdTgxNDVcdTgxNDdcdTgxNDlcdTgxNGRcdTgxNGVcdTgxNGZcdTgxNTJcdTgxNTZc'@; put 'dTgxNTdcdTgxNThcdTgxNWJcdTgxNWNcdTgxNWRcdTgxNWVcdTgxNWZcdTgxNjFcdTgxNjJcdTgxNjNcdTgxNjRcdTgxNjZcdTgxNjhcdTgxNmFcdTgxNmJcdTgxNmNcdTgxNmZcdTgxNzJcdTgxNzNcdTgxNzVcdTgxNzZcdTgxNzdcdTgxNzhcdTgxODFcdTgxODNcdTgxODRcdTgxODVcdTgx'@; put 'ODZcdTgxODdcdTgxODlcdTgxOGJcdTgxOGNcdTgxOGRcdTgxOGVcdTgxOTBcdTgxOTJcdTgxOTNcdTgxOTRcdTgxOTVcdTgxOTZcdTgxOTdcdTgxOTlcdTgxOWFcdTgxOWVcdTgxOWZcdTgxYTBcdTgxYTFcdTgxYTJcdTgxYTRcdTgxYTVcdWZmZmRcdTgxYTdcdTgxYTlcdTgxYWJcdTgxYWNc'@; put 'dTgxYWRcdTgxYWVcdTgxYWZcdTgxYjBcdTgxYjFcdTgxYjJcdTgxYjRcdTgxYjVcdTgxYjZcdTgxYjdcdTgxYjhcdTgxYjlcdTgxYmNcdTgxYmRcdTgxYmVcdTgxYmZcdTgxYzRcdTgxYzVcdTgxYzdcdTgxYzhcdTgxYzlcdTgxY2JcdTgxY2RcdTgxY2VcdTgxY2ZcdTgxZDBcdTgxZDFcdTgx'@; put 'ZDJcdTgxZDNcdTY0NzlcdTg2MTFcdTZhMjFcdTgxOWNcdTc4ZThcdTY0NjlcdTliNTRcdTYyYjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBcdTYyYzdcdTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2YWVc'@; put 'dTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2ZWVcdTc3NjZcdTcyNjdcdTdhNDZcdTYyZmZcdTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUzNTdcdTc1MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2NcdTk1'@; put 'ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVcdTVhZTlcdTgwZmRcdTU5YWVcdTk3MTNcdTUwMmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRcdTc4YmVcdTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTllMWZc'@; put 'dTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1NmVcdTk1NGFcdTk1NGRcdTZkODVcdTYwYThcdTY3ZTBcdTcyZGVcdTUxZGRcdTViODFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5Nl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTZdW3Nd'@; put 'XT01MDE3NitzLGhbNTAxNzYrc109Y1sxOTZdW3NdKTtmb3IoY1sxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxZDRcdTgxZDVcdTgxZDZcdTgxZDdcdTgxZDhcdTgxZDlcdTgxZGFcdTgxZGJcdTgxZGNcdTgxZGRcdTgxZGVc'@; put 'dTgxZGZcdTgxZTBcdTgxZTFcdTgxZTJcdTgxZTRcdTgxZTVcdTgxZTZcdTgxZThcdTgxZTlcdTgxZWJcdTgxZWVcdTgxZWZcdTgxZjBcdTgxZjFcdTgxZjJcdTgxZjVcdTgxZjZcdTgxZjdcdTgxZjhcdTgxZjlcdTgxZmFcdTgxZmRcdTgxZmZcdTgyMDNcdTgyMDdcdTgyMDhcdTgyMDlcdTgy'@; put 'MGFcdTgyMGJcdTgyMGVcdTgyMGZcdTgyMTFcdTgyMTNcdTgyMTVcdTgyMTZcdTgyMTdcdTgyMThcdTgyMTlcdTgyMWFcdTgyMWRcdTgyMjBcdTgyMjRcdTgyMjVcdTgyMjZcdTgyMjdcdTgyMjlcdTgyMmVcdTgyMzJcdTgyM2FcdTgyM2NcdTgyM2RcdTgyM2ZcdWZmZmRcdTgyNDBcdTgyNDFc'@; put 'dTgyNDJcdTgyNDNcdTgyNDVcdTgyNDZcdTgyNDhcdTgyNGFcdTgyNGNcdTgyNGRcdTgyNGVcdTgyNTBcdTgyNTFcdTgyNTJcdTgyNTNcdTgyNTRcdTgyNTVcdTgyNTZcdTgyNTdcdTgyNTlcdTgyNWJcdTgyNWNcdTgyNWRcdTgyNWVcdTgyNjBcdTgyNjFcdTgyNjJcdTgyNjNcdTgyNjRcdTgy'@; put 'NjVcdTgyNjZcdTgyNjdcdTgyNjlcdTYyZTdcdTZjZGVcdTcyNWJcdTYyNmRcdTk0YWVcdTdlYmRcdTgxMTNcdTZkNTNcdTUxOWNcdTVmMDRcdTU5NzRcdTUyYWFcdTYwMTJcdTU5NzNcdTY2OTZcdTg2NTBcdTc1OWZcdTYzMmFcdTYxZTZcdTdjZWZcdThiZmFcdTU0ZTZcdTZiMjdcdTllMjVc'@; put 'dTZiYjRcdTg1ZDVcdTU0NTVcdTUwNzZcdTZjYTRcdTU1NmFcdThkYjRcdTcyMmNcdTVlMTVcdTYwMTVcdTc0MzZcdTYyY2RcdTYzOTJcdTcyNGNcdTVmOThcdTZlNDNcdTZkM2VcdTY1MDBcdTZmNThcdTc2ZDhcdTc4ZDBcdTc2ZmNcdTc1NTRcdTUyMjRcdTUzZGJcdTRlNTNcdTVlOWVcdTY1'@; put 'YzFcdTgwMmFcdTgwZDZcdTYyOWJcdTU0ODZcdTUyMjhcdTcwYWVcdTg4OGRcdThkZDFcdTZjZTFcdTU0NzhcdTgwZGFcdTU3ZjlcdTg4ZjRcdThkNTRcdTk2NmFcdTkxNGRcdTRmNjlcdTZjOWJcdTU1YjdcdTc2YzZcdTc4MzBcdTYyYThcdTcwZjlcdTZmOGVcdTVmNmRcdTg0ZWNcdTY4ZGFc'@; put 'dTc4N2NcdTdiZjdcdTgxYThcdTY3MGJcdTllNGZcdTYzNjdcdTc4YjBcdTU3NmZcdTc4MTJcdTk3MzlcdTYyNzlcdTYyYWJcdTUyODhcdTc0MzVcdTZiZDdcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5N11bc10uY2hhckNvZGVBdCgwKSYm'@; put 'KHlbY1sxOTddW3NdXT01MDQzMitzLGhbNTA0MzIrc109Y1sxOTddW3NdKTtmb3IoY1sxOThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgyNmFcdTgyNmJcdTgyNmNcdTgyNmRcdTgyNzFcdTgyNzVcdTgyNzZcdTgyNzdcdTgyNzhc'@; put 'dTgyN2JcdTgyN2NcdTgyODBcdTgyODFcdTgyODNcdTgyODVcdTgyODZcdTgyODdcdTgyODlcdTgyOGNcdTgyOTBcdTgyOTNcdTgyOTRcdTgyOTVcdTgyOTZcdTgyOWFcdTgyOWJcdTgyOWVcdTgyYTBcdTgyYTJcdTgyYTNcdTgyYTdcdTgyYjJcdTgyYjVcdTgyYjZcdTgyYmFcdTgyYmJcdTgy'@; put 'YmNcdTgyYmZcdTgyYzBcdTgyYzJcdTgyYzNcdTgyYzVcdTgyYzZcdTgyYzlcdTgyZDBcdTgyZDZcdTgyZDlcdTgyZGFcdTgyZGRcdTgyZTJcdTgyZTdcdTgyZThcdTgyZTlcdTgyZWFcdTgyZWNcdTgyZWRcdTgyZWVcdTgyZjBcdTgyZjJcdTgyZjNcdTgyZjVcdTgyZjZcdTgyZjhcdWZmZmRc'@; put 'dTgyZmFcdTgyZmNcdTgyZmRcdTgyZmVcdTgyZmZcdTgzMDBcdTgzMGFcdTgzMGJcdTgzMGRcdTgzMTBcdTgzMTJcdTgzMTNcdTgzMTZcdTgzMThcdTgzMTlcdTgzMWRcdTgzMWVcdTgzMWZcdTgzMjBcdTgzMjFcdTgzMjJcdTgzMjNcdTgzMjRcdTgzMjVcdTgzMjZcdTgzMjlcdTgzMmFcdTgz'@; put 'MmVcdTgzMzBcdTgzMzJcdTgzMzdcdTgzM2JcdTgzM2RcdTU1NjRcdTgxM2VcdTc1YjJcdTc2YWVcdTUzMzlcdTc1ZGVcdTUwZmJcdTVjNDFcdThiNmNcdTdiYzdcdTUwNGZcdTcyNDdcdTlhOTdcdTk4ZDhcdTZmMDJcdTc0ZTJcdTc5NjhcdTY0ODdcdTc3YTVcdTYyZmNcdTk4OTFcdThkMmJc'@; put 'dTU0YzFcdTgwNThcdTRlNTJcdTU3NmFcdTgyZjlcdTg0MGRcdTVlNzNcdTUxZWRcdTc0ZjZcdThiYzRcdTVjNGZcdTU3NjFcdTZjZmNcdTk4ODdcdTVhNDZcdTc4MzRcdTliNDRcdThmZWJcdTdjOTVcdTUyNTZcdTYyNTFcdTk0ZmFcdTRlYzZcdTgzODZcdTg0NjFcdTgzZTlcdTg0YjJcdTU3'@; put 'ZDRcdTY3MzRcdTU3MDNcdTY2NmVcdTZkNjZcdThjMzFcdTY2ZGRcdTcwMTFcdTY3MWZcdTZiM2FcdTY4MTZcdTYyMWFcdTU5YmJcdTRlMDNcdTUxYzRcdTZmMDZcdTY3ZDJcdTZjOGZcdTUxNzZcdTY4Y2JcdTU5NDdcdTZiNjdcdTc1NjZcdTVkMGVcdTgxMTBcdTlmNTBcdTY1ZDdcdTc5NDhc'@; put 'dTc5NDFcdTlhOTFcdThkNzdcdTVjODJcdTRlNWVcdTRmMDFcdTU0MmZcdTU5NTFcdTc4MGNcdTU2NjhcdTZjMTRcdThmYzRcdTVmMDNcdTZjN2RcdTZjZTNcdThiYWJcdTYzOTBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOThdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE5OF1bc10uY2hh'@; put 'ckNvZGVBdCgwKSYmKHlbY1sxOThdW3NdXT01MDY4OCtzLGhbNTA2ODgrc109Y1sxOThdW3NdKTtmb3IoY1sxOTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzM2VcdTgzM2ZcdTgzNDFcdTgzNDJcdTgzNDRcdTgzNDVcdTgzNDhc'@; put 'dTgzNGFcdTgzNGJcdTgzNGNcdTgzNGRcdTgzNGVcdTgzNTNcdTgzNTVcdTgzNTZcdTgzNTdcdTgzNThcdTgzNTlcdTgzNWRcdTgzNjJcdTgzNzBcdTgzNzFcdTgzNzJcdTgzNzNcdTgzNzRcdTgzNzVcdTgzNzZcdTgzNzlcdTgzN2FcdTgzN2VcdTgzN2ZcdTgzODBcdTgzODFcdTgzODJcdTgz'@; put 'ODNcdTgzODRcdTgzODdcdTgzODhcdTgzOGFcdTgzOGJcdTgzOGNcdTgzOGRcdTgzOGZcdTgzOTBcdTgzOTFcdTgzOTRcdTgzOTVcdTgzOTZcdTgzOTdcdTgzOTlcdTgzOWFcdTgzOWRcdTgzOWZcdTgzYTFcdTgzYTJcdTgzYTNcdTgzYTRcdTgzYTVcdTgzYTZcdTgzYTdcdTgzYWNcdTgzYWRc'@; put 'dTgzYWVcdWZmZmRcdTgzYWZcdTgzYjVcdTgzYmJcdTgzYmVcdTgzYmZcdTgzYzJcdTgzYzNcdTgzYzRcdTgzYzZcdTgzYzhcdTgzYzlcdTgzY2JcdTgzY2RcdTgzY2VcdTgzZDBcdTgzZDFcdTgzZDJcdTgzZDNcdTgzZDVcdTgzZDdcdTgzZDlcdTgzZGFcdTgzZGJcdTgzZGVcdTgzZTJcdTgz'@; put 'ZTNcdTgzZTRcdTgzZTZcdTgzZTdcdTgzZThcdTgzZWJcdTgzZWNcdTgzZWRcdTYwNzBcdTZkM2RcdTcyNzVcdTYyNjZcdTk0OGVcdTk0YzVcdTUzNDNcdThmYzFcdTdiN2VcdTRlZGZcdThjMjZcdTRlN2VcdTllZDRcdTk0YjFcdTk0YjNcdTUyNGRcdTZmNWNcdTkwNjNcdTZkNDVcdThjMzRc'@; put 'dTU4MTFcdTVkNGNcdTZiMjBcdTZiNDlcdTY3YWFcdTU0NWJcdTgxNTRcdTdmOGNcdTU4OTlcdTg1MzdcdTVmM2FcdTYyYTJcdTZhNDdcdTk1MzlcdTY1NzJcdTYwODRcdTY4NjVcdTc3YTdcdTRlNTRcdTRmYThcdTVkZTdcdTk3OThcdTY0YWNcdTdmZDhcdTVjZWRcdTRmY2ZcdTdhOGRcdTUy'@; put 'MDdcdTgzMDRcdTRlMTRcdTYwMmZcdTdhODNcdTk0YTZcdTRmYjVcdTRlYjJcdTc5ZTZcdTc0MzRcdTUyZTRcdTgyYjlcdTY0ZDJcdTc5YmRcdTViZGRcdTZjODFcdTk3NTJcdThmN2JcdTZjMjJcdTUwM2VcdTUzN2ZcdTZlMDVcdTY0Y2VcdTY2NzRcdTZjMzBcdTYwYzVcdTk4NzdcdThiZjdc'@; put 'dTVlODZcdTc0M2NcdTdhNzdcdTc5Y2JcdTRlMThcdTkwYjFcdTc0MDNcdTZjNDJcdTU2ZGFcdTkxNGJcdTZjYzVcdThkOGJcdTUzM2FcdTg2YzZcdTY2ZjJcdThlYWZcdTVjNDhcdTlhNzFcdTZlMjBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxOTldLmxlbmd0aDsrK3MpNjU1MzMhPT1j'@; put 'WzE5OV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxOTldW3NdXT01MDk0NCtzLGhbNTA5NDQrc109Y1sxOTldW3NdKTtmb3IoY1syMDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzZWVcdTgzZWZcdTgzZjNcdTgzZjRcdTgzZjVc'@; put 'dTgzZjZcdTgzZjdcdTgzZmFcdTgzZmJcdTgzZmNcdTgzZmVcdTgzZmZcdTg0MDBcdTg0MDJcdTg0MDVcdTg0MDdcdTg0MDhcdTg0MDlcdTg0MGFcdTg0MTBcdTg0MTJcdTg0MTNcdTg0MTRcdTg0MTVcdTg0MTZcdTg0MTdcdTg0MTlcdTg0MWFcdTg0MWJcdTg0MWVcdTg0MWZcdTg0MjBcdTg0'@; put 'MjFcdTg0MjJcdTg0MjNcdTg0MjlcdTg0MmFcdTg0MmJcdTg0MmNcdTg0MmRcdTg0MmVcdTg0MmZcdTg0MzBcdTg0MzJcdTg0MzNcdTg0MzRcdTg0MzVcdTg0MzZcdTg0MzdcdTg0MzlcdTg0M2FcdTg0M2JcdTg0M2VcdTg0M2ZcdTg0NDBcdTg0NDFcdTg0NDJcdTg0NDNcdTg0NDRcdTg0NDVc'@; put 'dTg0NDdcdTg0NDhcdTg0NDlcdWZmZmRcdTg0NGFcdTg0NGJcdTg0NGNcdTg0NGRcdTg0NGVcdTg0NGZcdTg0NTBcdTg0NTJcdTg0NTNcdTg0NTRcdTg0NTVcdTg0NTZcdTg0NThcdTg0NWRcdTg0NWVcdTg0NWZcdTg0NjBcdTg0NjJcdTg0NjRcdTg0NjVcdTg0NjZcdTg0NjdcdTg0NjhcdTg0'@; put 'NmFcdTg0NmVcdTg0NmZcdTg0NzBcdTg0NzJcdTg0NzRcdTg0NzdcdTg0NzlcdTg0N2JcdTg0N2NcdTUzZDZcdTVhMzZcdTlmOGJcdThkYTNcdTUzYmJcdTU3MDhcdTk4YTdcdTY3NDNcdTkxOWJcdTZjYzlcdTUxNjhcdTc1Y2FcdTYyZjNcdTcyYWNcdTUyMzhcdTUyOWRcdTdmM2FcdTcwOTRc'@; put 'dTc2MzhcdTUzNzRcdTllNGFcdTY5YjdcdTc4NmVcdTk2YzBcdTg4ZDlcdTdmYTRcdTcxMzZcdTcxYzNcdTUxODlcdTY3ZDNcdTc0ZTRcdTU4ZTRcdTY1MThcdTU2YjdcdThiYTlcdTk5NzZcdTYyNzBcdTdlZDVcdTYwZjlcdTcwZWRcdTU4ZWNcdTRlYzFcdTRlYmFcdTVmY2RcdTk3ZTdcdTRl'@; put 'ZmJcdThiYTRcdTUyMDNcdTU5OGFcdTdlYWJcdTYyNTRcdTRlY2RcdTY1ZTVcdTYyMGVcdTgzMzhcdTg0YzlcdTgzNjNcdTg3OGRcdTcxOTRcdTZlYjZcdTViYjlcdTdlZDJcdTUxOTdcdTYzYzlcdTY3ZDRcdTgwODlcdTgzMzlcdTg4MTVcdTUxMTJcdTViN2FcdTU5ODJcdThmYjFcdTRlNzNc'@; put 'dTZjNWRcdTUxNjVcdTg5MjVcdThmNmZcdTk2MmVcdTg1NGFcdTc0NWVcdTk1MTBcdTk1ZjBcdTZkYTZcdTgyZTVcdTVmMzFcdTY0OTJcdTZkMTJcdTg0MjhcdTgxNmVcdTljYzNcdTU4NWVcdThkNWJcdTRlMDlcdTUzYzFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDBdLmxlbmd0aDsr'@; put 'K3MpNjU1MzMhPT1jWzIwMF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDBdW3NdXT01MTIwMCtzLGhbNTEyMDArc109Y1syMDBdW3NdKTtmb3IoY1syMDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg0N2RcdTg0N2VcdTg0N2Zc'@; put 'dTg0ODBcdTg0ODFcdTg0ODNcdTg0ODRcdTg0ODVcdTg0ODZcdTg0OGFcdTg0OGRcdTg0OGZcdTg0OTBcdTg0OTFcdTg0OTJcdTg0OTNcdTg0OTRcdTg0OTVcdTg0OTZcdTg0OThcdTg0OWFcdTg0OWJcdTg0OWRcdTg0OWVcdTg0OWZcdTg0YTBcdTg0YTJcdTg0YTNcdTg0YTRcdTg0YTVcdTg0'@; put 'YTZcdTg0YTdcdTg0YThcdTg0YTlcdTg0YWFcdTg0YWJcdTg0YWNcdTg0YWRcdTg0YWVcdTg0YjBcdTg0YjFcdTg0YjNcdTg0YjVcdTg0YjZcdTg0YjdcdTg0YmJcdTg0YmNcdTg0YmVcdTg0YzBcdTg0YzJcdTg0YzNcdTg0YzVcdTg0YzZcdTg0YzdcdTg0YzhcdTg0Y2JcdTg0Y2NcdTg0Y2Vc'@; put 'dTg0Y2ZcdTg0ZDJcdTg0ZDRcdTg0ZDVcdTg0ZDdcdWZmZmRcdTg0ZDhcdTg0ZDlcdTg0ZGFcdTg0ZGJcdTg0ZGNcdTg0ZGVcdTg0ZTFcdTg0ZTJcdTg0ZTRcdTg0ZTdcdTg0ZThcdTg0ZTlcdTg0ZWFcdTg0ZWJcdTg0ZWRcdTg0ZWVcdTg0ZWZcdTg0ZjFcdTg0ZjJcdTg0ZjNcdTg0ZjRcdTg0'@; put 'ZjVcdTg0ZjZcdTg0ZjdcdTg0ZjhcdTg0ZjlcdTg0ZmFcdTg0ZmJcdTg0ZmRcdTg0ZmVcdTg1MDBcdTg1MDFcdTg1MDJcdTRmMWVcdTY1NjNcdTY4NTFcdTU1ZDNcdTRlMjdcdTY0MTRcdTlhOWFcdTYyNmJcdTVhYzJcdTc0NWZcdTgyNzJcdTZkYTlcdTY4ZWVcdTUwZTdcdTgzOGVcdTc4MDJc'@; put 'dTY3NDBcdTUyMzlcdTZjOTlcdTdlYjFcdTUwYmJcdTU1NjVcdTcxNWVcdTdiNWJcdTY2NTJcdTczY2FcdTgyZWJcdTY3NDlcdTVjNzFcdTUyMjBcdTcxN2RcdTg4NmJcdTk1ZWFcdTk2NTVcdTY0YzVcdThkNjFcdTgxYjNcdTU1ODRcdTZjNTVcdTYyNDdcdTdmMmVcdTU4OTJcdTRmMjRcdTU1'@; put 'NDZcdThkNGZcdTY2NGNcdTRlMGFcdTVjMWFcdTg4ZjNcdTY4YTJcdTYzNGVcdTdhMGRcdTcwZTdcdTgyOGRcdTUyZmFcdTk3ZjZcdTVjMTFcdTU0ZThcdTkwYjVcdTdlY2RcdTU5NjJcdThkNGFcdTg2YzdcdTgyMGNcdTgyMGRcdThkNjZcdTY0NDRcdTVjMDRcdTYxNTFcdTZkODlcdTc5M2Vc'@; put 'dThiYmVcdTc4MzdcdTc1MzNcdTU0N2JcdTRmMzhcdThlYWJcdTZkZjFcdTVhMjBcdTdlYzVcdTc5NWVcdTZjODhcdTViYTFcdTVhNzZcdTc1MWFcdTgwYmVcdTYxNGVcdTZlMTdcdTU4ZjBcdTc1MWZcdTc1MjVcdTcyNzJcdTUzNDdcdTdlZjNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sy'@; put 'MDFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwMV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDFdW3NdXT01MTQ1NitzLGhbNTE0NTYrc109Y1syMDFdW3NdKTtmb3IoY1syMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1MDNc'@; put 'dTg1MDRcdTg1MDVcdTg1MDZcdTg1MDdcdTg1MDhcdTg1MDlcdTg1MGFcdTg1MGJcdTg1MGRcdTg1MGVcdTg1MGZcdTg1MTBcdTg1MTJcdTg1MTRcdTg1MTVcdTg1MTZcdTg1MThcdTg1MTlcdTg1MWJcdTg1MWNcdTg1MWRcdTg1MWVcdTg1MjBcdTg1MjJcdTg1MjNcdTg1MjRcdTg1MjVcdTg1'@; put 'MjZcdTg1MjdcdTg1MjhcdTg1MjlcdTg1MmFcdTg1MmRcdTg1MmVcdTg1MmZcdTg1MzBcdTg1MzFcdTg1MzJcdTg1MzNcdTg1MzRcdTg1MzVcdTg1MzZcdTg1M2VcdTg1M2ZcdTg1NDBcdTg1NDFcdTg1NDJcdTg1NDRcdTg1NDVcdTg1NDZcdTg1NDdcdTg1NGJcdTg1NGNcdTg1NGRcdTg1NGVc'@; put 'dTg1NGZcdTg1NTBcdTg1NTFcdTg1NTJcdTg1NTNcdTg1NTRcdTg1NTVcdWZmZmRcdTg1NTdcdTg1NThcdTg1NWFcdTg1NWJcdTg1NWNcdTg1NWRcdTg1NWZcdTg1NjBcdTg1NjFcdTg1NjJcdTg1NjNcdTg1NjVcdTg1NjZcdTg1NjdcdTg1NjlcdTg1NmFcdTg1NmJcdTg1NmNcdTg1NmRcdTg1'@; put 'NmVcdTg1NmZcdTg1NzBcdTg1NzFcdTg1NzNcdTg1NzVcdTg1NzZcdTg1NzdcdTg1NzhcdTg1N2NcdTg1N2RcdTg1N2ZcdTg1ODBcdTg1ODFcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFcdTcyZWVcdTY1YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFc'@; put 'dTc3ZjNcdTYyZmVcdTY1ZjZcdTRlYzBcdTk4ZGZcdTg2ODBcdTViOWVcdThiYzZcdTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYyZWRcdThhOTNcdTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkw'@; put 'MDJcdTRlZDVcdTRmOGRcdTkxY2FcdTk5NzBcdTZjMGZcdTVlMDJcdTYwNDNcdTViYTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2RcdTg1MmNcdTY3YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRc'@; put 'dTgyMTJcdTZkZDFcdTc1OGZcdTRlNjZcdThkNGVcdTViNzBcdTcxOWZcdTg1YWZcdTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdhZDZcdTU4ODVcdTVlYjZcdTY1NzBcdTZmMzFcdWZmZmQiLnNwbGl0KCIi'@; put 'KSxzPTA7cyE9Y1syMDJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwMl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDJdW3NdXT01MTcxMitzLGhbNTE3MTIrc109Y1syMDJdW3NdKTtmb3IoY1syMDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdTg1ODJcdTg1ODNcdTg1ODZcdTg1ODhcdTg1ODlcdTg1OGFcdTg1OGJcdTg1OGNcdTg1OGRcdTg1OGVcdTg1OTBcdTg1OTFcdTg1OTJcdTg1OTNcdTg1OTRcdTg1OTVcdTg1OTZcdTg1OTdcdTg1OThcdTg1OTlcdTg1OWFcdTg1OWRcdTg1OWVcdTg1OWZcdTg1YTBcdTg1YTFcdTg1'@; put 'YTJcdTg1YTNcdTg1YTVcdTg1YTZcdTg1YTdcdTg1YTlcdTg1YWJcdTg1YWNcdTg1YWRcdTg1YjFcdTg1YjJcdTg1YjNcdTg1YjRcdTg1YjVcdTg1YjZcdTg1YjhcdTg1YmFcdTg1YmJcdTg1YmNcdTg1YmRcdTg1YmVcdTg1YmZcdTg1YzBcdTg1YzJcdTg1YzNcdTg1YzRcdTg1YzVcdTg1YzZc'@; put 'dTg1YzdcdTg1YzhcdTg1Y2FcdTg1Y2JcdTg1Y2NcdTg1Y2RcdTg1Y2VcdTg1ZDFcdTg1ZDJcdWZmZmRcdTg1ZDRcdTg1ZDZcdTg1ZDdcdTg1ZDhcdTg1ZDlcdTg1ZGFcdTg1ZGJcdTg1ZGRcdTg1ZGVcdTg1ZGZcdTg1ZTBcdTg1ZTFcdTg1ZTJcdTg1ZTNcdTg1ZTVcdTg1ZTZcdTg1ZTdcdTg1'@; put 'ZThcdTg1ZWFcdTg1ZWJcdTg1ZWNcdTg1ZWRcdTg1ZWVcdTg1ZWZcdTg1ZjBcdTg1ZjFcdTg1ZjJcdTg1ZjNcdTg1ZjRcdTg1ZjVcdTg1ZjZcdTg1ZjdcdTg1ZjhcdTYwNTVcdTUyMzdcdTgwMGRcdTY0NTRcdTg4NzBcdTc1MjlcdTVlMDVcdTY4MTNcdTYyZjRcdTk3MWNcdTUzY2NcdTcyM2Rc'@; put 'dThjMDFcdTZjMzRcdTc3NjFcdTdhMGVcdTU0MmVcdTc3YWNcdTk4N2FcdTgyMWNcdThiZjRcdTc4NTVcdTY3MTRcdTcwYzFcdTY1YWZcdTY0OTVcdTU2MzZcdTYwMWRcdTc5YzFcdTUzZjhcdTRlMWRcdTZiN2JcdTgwODZcdTViZmFcdTU1ZTNcdTU2ZGJcdTRmM2FcdTRmM2NcdTk5NzJcdTVk'@; put 'ZjNcdTY3N2VcdTgwMzhcdTYwMDJcdTk4ODJcdTkwMDFcdTViOGJcdThiYmNcdThiZjVcdTY0MWNcdTgyNThcdTY0ZGVcdTU1ZmRcdTgyY2ZcdTkxNjVcdTRmZDdcdTdkMjBcdTkwMWZcdTdjOWZcdTUwZjNcdTU4NTFcdTZlYWZcdTViYmZcdThiYzlcdTgwODNcdTkxNzhcdTg0OWNcdTdiOTdc'@; put 'dTg2N2RcdTk2OGJcdTk2OGZcdTdlZTVcdTlhZDNcdTc4OGVcdTVjODFcdTdhNTdcdTkwNDJcdTk2YTdcdTc5NWZcdTViNTlcdTYzNWZcdTdiMGJcdTg0ZDFcdTY4YWRcdTU1MDZcdTdmMjlcdTc0MTBcdTdkMjJcdTk1MDFcdTYyNDBcdTU4NGNcdTRlZDZcdTViODNcdTU5NzlcdTU4NTRcdWZm'@; put 'ZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwM11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDNdW3NdXT01MTk2OCtzLGhbNTE5Njgrc109Y1syMDNdW3NdKTtmb3IoY1syMDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdTg1ZjlcdTg1ZmFcdTg1ZmNcdTg1ZmRcdTg1ZmVcdTg2MDBcdTg2MDFcdTg2MDJcdTg2MDNcdTg2MDRcdTg2MDZcdTg2MDdcdTg2MDhcdTg2MDlcdTg2MGFcdTg2MGJcdTg2MGNcdTg2MGRcdTg2MGVcdTg2MGZcdTg2MTBcdTg2MTJcdTg2MTNcdTg2MTRcdTg2'@; put 'MTVcdTg2MTdcdTg2MThcdTg2MTlcdTg2MWFcdTg2MWJcdTg2MWNcdTg2MWRcdTg2MWVcdTg2MWZcdTg2MjBcdTg2MjFcdTg2MjJcdTg2MjNcdTg2MjRcdTg2MjVcdTg2MjZcdTg2MjhcdTg2MmFcdTg2MmJcdTg2MmNcdTg2MmRcdTg2MmVcdTg2MmZcdTg2MzBcdTg2MzFcdTg2MzJcdTg2MzNc'@; put 'dTg2MzRcdTg2MzVcdTg2MzZcdTg2MzdcdTg2MzlcdTg2M2FcdTg2M2JcdTg2M2RcdTg2M2VcdTg2M2ZcdTg2NDBcdWZmZmRcdTg2NDFcdTg2NDJcdTg2NDNcdTg2NDRcdTg2NDVcdTg2NDZcdTg2NDdcdTg2NDhcdTg2NDlcdTg2NGFcdTg2NGJcdTg2NGNcdTg2NTJcdTg2NTNcdTg2NTVcdTg2'@; put 'NTZcdTg2NTdcdTg2NThcdTg2NTlcdTg2NWJcdTg2NWNcdTg2NWRcdTg2NWZcdTg2NjBcdTg2NjFcdTg2NjNcdTg2NjRcdTg2NjVcdTg2NjZcdTg2NjdcdTg2NjhcdTg2NjlcdTg2NmFcdTczNmRcdTYzMWVcdThlNGJcdThlMGZcdTgwY2VcdTgyZDRcdTYyYWNcdTUzZjBcdTZjZjBcdTkxNWVc'@; put 'dTU5MmFcdTYwMDFcdTZjNzBcdTU3NGRcdTY0NGFcdThkMmFcdTc2MmJcdTZlZTlcdTU3NWJcdTZhODBcdTc1ZjBcdTZmNmRcdThjMmRcdThjMDhcdTU3NjZcdTZiZWZcdTg4OTJcdTc4YjNcdTYzYTJcdTUzZjlcdTcwYWRcdTZjNjRcdTU4NThcdTY0MmFcdTU4MDJcdTY4ZTBcdTgxOWJcdTU1'@; put 'MTBcdTdjZDZcdTUwMThcdThlYmFcdTZkY2NcdThkOWZcdTcwZWJcdTYzOGZcdTZkOWJcdTZlZDRcdTdlZTZcdTg0MDRcdTY4NDNcdTkwMDNcdTZkZDhcdTk2NzZcdThiYThcdTU5NTdcdTcyNzlcdTg1ZTRcdTgxN2VcdTc1YmNcdThhOGFcdTY4YWZcdTUyNTRcdThlMjJcdTk1MTFcdTYzZDBc'@; put 'dTk4OThcdThlNDRcdTU1N2NcdTRmNTNcdTY2ZmZcdTU2OGZcdTYwZDVcdTZkOTVcdTUyNDNcdTVjNDlcdTU5MjlcdTZkZmJcdTU4NmJcdTc1MzBcdTc1MWNcdTYwNmNcdTgyMTRcdTgxNDZcdTYzMTFcdTY3NjFcdThmZTJcdTc3M2FcdThkZjNcdThkMzRcdTk0YzFcdTVlMTZcdTUzODVcdTU0'@; put 'MmNcdTcwYzNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwNF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDRdW3NdXT01MjIyNCtzLGhbNTIyMjQrc109Y1syMDRdW3NdKTtmb3IoY1syMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2NmRcdTg2NmZcdTg2NzBcdTg2NzJcdTg2NzNcdTg2NzRcdTg2NzVcdTg2NzZcdTg2NzdcdTg2NzhcdTg2ODNcdTg2ODRcdTg2ODVcdTg2ODZcdTg2ODdcdTg2ODhcdTg2ODlcdTg2OGVcdTg2OGZcdTg2OTBcdTg2OTFcdTg2OTJcdTg2'@; put 'OTRcdTg2OTZcdTg2OTdcdTg2OThcdTg2OTlcdTg2OWFcdTg2OWJcdTg2OWVcdTg2OWZcdTg2YTBcdTg2YTFcdTg2YTJcdTg2YTVcdTg2YTZcdTg2YWJcdTg2YWRcdTg2YWVcdTg2YjJcdTg2YjNcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmJcdTg2YmNcdTg2YmRcdTg2YmVcdTg2YmZcdTg2YzFc'@; put 'dTg2YzJcdTg2YzNcdTg2YzVcdTg2YzhcdTg2Y2NcdTg2Y2RcdTg2ZDJcdTg2ZDNcdTg2ZDVcdTg2ZDZcdTg2ZDdcdTg2ZGFcdTg2ZGNcdWZmZmRcdTg2ZGRcdTg2ZTBcdTg2ZTFcdTg2ZTJcdTg2ZTNcdTg2ZTVcdTg2ZTZcdTg2ZTdcdTg2ZThcdTg2ZWFcdTg2ZWJcdTg2ZWNcdTg2ZWZcdTg2'@; put 'ZjVcdTg2ZjZcdTg2ZjdcdTg2ZmFcdTg2ZmJcdTg2ZmNcdTg2ZmRcdTg2ZmZcdTg3MDFcdTg3MDRcdTg3MDVcdTg3MDZcdTg3MGJcdTg3MGNcdTg3MGVcdTg3MGZcdTg3MTBcdTg3MTFcdTg3MTRcdTg3MTZcdTZjNDBcdTVlZjdcdTUwNWNcdTRlYWRcdTVlYWRcdTYzM2FcdTgyNDdcdTkwMWFc'@; put 'dTY4NTBcdTkxNmVcdTc3YjNcdTU0MGNcdTk0ZGNcdTVmNjRcdTdhZTVcdTY4NzZcdTYzNDVcdTdiNTJcdTdlZGZcdTc1ZGJcdTUwNzdcdTYyOTVcdTU5MzRcdTkwMGZcdTUxZjhcdTc5YzNcdTdhODFcdTU2ZmVcdTVmOTJcdTkwMTRcdTZkODJcdTVjNjBcdTU3MWZcdTU0MTBcdTUxNTRcdTZl'@; put 'NGRcdTU2ZTJcdTYzYThcdTk4OTNcdTgxN2ZcdTg3MTVcdTg5MmFcdTkwMDBcdTU0MWVcdTVjNmZcdTgxYzBcdTYyZDZcdTYyNThcdTgxMzFcdTllMzVcdTk2NDBcdTlhNmVcdTlhN2NcdTY5MmRcdTU5YTVcdTYyZDNcdTU1M2VcdTYzMTZcdTU0YzdcdTg2ZDlcdTZkM2NcdTVhMDNcdTc0ZTZc'@; put 'dTg4OWNcdTZiNmFcdTU5MTZcdThjNGNcdTVmMmZcdTZlN2VcdTczYTlcdTk4N2RcdTRlMzhcdTcwZjdcdTViOGNcdTc4OTdcdTYzM2RcdTY2NWFcdTc2OTZcdTYwY2JcdTViOWJcdTVhNDlcdTRlMDdcdTgxNTVcdTZjNmFcdTczOGJcdTRlYTFcdTY3ODlcdTdmNTFcdTVmODBcdTY1ZmFcdTY3'@; put 'MWJcdTVmZDhcdTU5ODRcdTVhMDFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwNV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDVdW3NdXT01MjQ4MCtzLGhbNTI0ODArc109Y1syMDVdW3NdKTtmb3IoY1syMDZdPSJcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg3MTlcdTg3MWJcdTg3MWRcdTg3MWZcdTg3MjBcdTg3MjRcdTg3MjZcdTg3MjdcdTg3MjhcdTg3MmFcdTg3MmJcdTg3MmNcdTg3MmRcdTg3MmZcdTg3MzBcdTg3MzJcdTg3MzNcdTg3MzVcdTg3MzZcdTg3MzhcdTg3'@; put 'MzlcdTg3M2FcdTg3M2NcdTg3M2RcdTg3NDBcdTg3NDFcdTg3NDJcdTg3NDNcdTg3NDRcdTg3NDVcdTg3NDZcdTg3NGFcdTg3NGJcdTg3NGRcdTg3NGZcdTg3NTBcdTg3NTFcdTg3NTJcdTg3NTRcdTg3NTVcdTg3NTZcdTg3NThcdTg3NWFcdTg3NWJcdTg3NWNcdTg3NWRcdTg3NWVcdTg3NWZc'@; put 'dTg3NjFcdTg3NjJcdTg3NjZcdTg3NjdcdTg3NjhcdTg3NjlcdTg3NmFcdTg3NmJcdTg3NmNcdTg3NmRcdTg3NmZcdTg3NzFcdTg3NzJcdTg3NzNcdTg3NzVcdWZmZmRcdTg3NzdcdTg3NzhcdTg3NzlcdTg3N2FcdTg3N2ZcdTg3ODBcdTg3ODFcdTg3ODRcdTg3ODZcdTg3ODdcdTg3ODlcdTg3'@; put 'OGFcdTg3OGNcdTg3OGVcdTg3OGZcdTg3OTBcdTg3OTFcdTg3OTJcdTg3OTRcdTg3OTVcdTg3OTZcdTg3OThcdTg3OTlcdTg3OWFcdTg3OWJcdTg3OWNcdTg3OWRcdTg3OWVcdTg3YTBcdTg3YTFcdTg3YTJcdTg3YTNcdTg3YTRcdTVkY2RcdTVmYWVcdTUzNzFcdTk3ZTZcdThmZGRcdTY4NDVc'@; put 'dTU2ZjRcdTU1MmZcdTYwZGZcdTRlM2FcdTZmNGRcdTdlZjRcdTgyYzdcdTg0MGVcdTU5ZDRcdTRmMWZcdTRmMmFcdTVjM2VcdTdlYWNcdTY3MmFcdTg1MWFcdTU0NzNcdTc1NGZcdTgwYzNcdTU1ODJcdTliNGZcdTRmNGRcdTZlMmRcdThjMTNcdTVjMDlcdTYxNzBcdTUzNmJcdTc2MWZcdTZl'@; put 'MjlcdTg2OGFcdTY1ODdcdTk1ZmJcdTdlYjlcdTU0M2JcdTdhMzNcdTdkMGFcdTk1ZWVcdTU1ZTFcdTdmYzFcdTc0ZWVcdTYzMWRcdTg3MTdcdTZkYTFcdTdhOWRcdTYyMTFcdTY1YTFcdTUzNjdcdTYzZTFcdTZjODNcdTVkZWJcdTU0NWNcdTk0YThcdTRlNGNcdTZjNjFcdThiZWNcdTVjNGJc'@; put 'dTY1ZTBcdTgyOWNcdTY4YTdcdTU0M2VcdTU0MzRcdTZiY2JcdTZiNjZcdTRlOTRcdTYzNDJcdTUzNDhcdTgyMWVcdTRmMGRcdTRmYWVcdTU3NWVcdTYyMGFcdTk2ZmVcdTY2NjRcdTcyNjlcdTUyZmZcdTUyYTFcdTYwOWZcdThiZWZcdTY2MTRcdTcxOTlcdTY3OTBcdTg5N2ZcdTc4NTJcdTc3'@; put 'ZmRcdTY2NzBcdTU2M2JcdTU0MzhcdTk1MjFcdTcyN2FcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwNl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDZdW3NdXT01MjczNitzLGhbNTI3MzYrc109Y1syMDZdW3NdKTtmb3IoY1syMDddPSJc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg3YTVcdTg3YTZcdTg3YTdcdTg3YTlcdTg3YWFcdTg3YWVcdTg3YjBcdTg3YjFcdTg3YjJcdTg3YjRcdTg3YjZcdTg3YjdcdTg3YjhcdTg3YjlcdTg3YmJcdTg3YmNcdTg3YmVcdTg3YmZcdTg3'@; put 'YzFcdTg3YzJcdTg3YzNcdTg3YzRcdTg3YzVcdTg3YzdcdTg3YzhcdTg3YzlcdTg3Y2NcdTg3Y2RcdTg3Y2VcdTg3Y2ZcdTg3ZDBcdTg3ZDRcdTg3ZDVcdTg3ZDZcdTg3ZDdcdTg3ZDhcdTg3ZDlcdTg3ZGFcdTg3ZGNcdTg3ZGRcdTg3ZGVcdTg3ZGZcdTg3ZTFcdTg3ZTJcdTg3ZTNcdTg3ZTRc'@; put 'dTg3ZTZcdTg3ZTdcdTg3ZThcdTg3ZTlcdTg3ZWJcdTg3ZWNcdTg3ZWRcdTg3ZWZcdTg3ZjBcdTg3ZjFcdTg3ZjJcdTg3ZjNcdTg3ZjRcdTg3ZjVcdTg3ZjZcdTg3ZjdcdTg3ZjhcdWZmZmRcdTg3ZmFcdTg3ZmJcdTg3ZmNcdTg3ZmRcdTg3ZmZcdTg4MDBcdTg4MDFcdTg4MDJcdTg4MDRcdTg4'@; put 'MDVcdTg4MDZcdTg4MDdcdTg4MDhcdTg4MDlcdTg4MGJcdTg4MGNcdTg4MGRcdTg4MGVcdTg4MGZcdTg4MTBcdTg4MTFcdTg4MTJcdTg4MTRcdTg4MTdcdTg4MThcdTg4MTlcdTg4MWFcdTg4MWNcdTg4MWRcdTg4MWVcdTg4MWZcdTg4MjBcdTg4MjNcdTdhMDBcdTYwNmZcdTVlMGNcdTYwODlc'@; put 'dTgxOWRcdTU5MTVcdTYwZGNcdTcxODRcdTcwZWZcdTZlYWFcdTZjNTBcdTcyODBcdTZhODRcdTg4YWRcdTVlMmRcdTRlNjBcdTVhYjNcdTU1OWNcdTk0ZTNcdTZkMTdcdTdjZmJcdTk2OTlcdTYyMGZcdTdlYzZcdTc3OGVcdTg2N2VcdTUzMjNcdTk3MWVcdThmOTZcdTY2ODdcdTVjZTFcdTRm'@; put 'YTBcdTcyZWRcdTRlMGJcdTUzYTZcdTU5MGZcdTU0MTNcdTYzODBcdTk1MjhcdTUxNDhcdTRlZDlcdTljOWNcdTdlYTRcdTU0YjhcdThkMjRcdTg4NTRcdTgyMzdcdTk1ZjJcdTZkOGVcdTVmMjZcdTVhY2NcdTY2M2VcdTk2NjlcdTczYjBcdTczMmVcdTUzYmZcdTgxN2FcdTk5ODVcdTdmYTFc'@; put 'dTViYWFcdTk2NzdcdTk2NTBcdTdlYmZcdTc2ZjhcdTUzYTJcdTk1NzZcdTk5OTlcdTdiYjFcdTg5NDRcdTZlNThcdTRlNjFcdTdmZDRcdTc5NjVcdThiZTZcdTYwZjNcdTU0Y2RcdTRlYWJcdTk4NzlcdTVkZjdcdTZhNjFcdTUwY2ZcdTU0MTFcdThjNjFcdTg0MjdcdTc4NWRcdTk3MDRcdTUy'@; put 'NGFcdTU0ZWVcdTU2YTNcdTk1MDBcdTZkODhcdTViYjVcdTZkYzZcdTY2NTNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwN11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDddW3NdXT01Mjk5MitzLGhbNTI5OTIrc109Y1syMDddW3NdKTtm'@; put 'b3IoY1syMDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg4MjRcdTg4MjVcdTg4MjZcdTg4MjdcdTg4MjhcdTg4MjlcdTg4MmFcdTg4MmJcdTg4MmNcdTg4MmRcdTg4MmVcdTg4MmZcdTg4MzBcdTg4MzFcdTg4MzNcdTg4MzRcdTg4'@; put 'MzVcdTg4MzZcdTg4MzdcdTg4MzhcdTg4M2FcdTg4M2JcdTg4M2RcdTg4M2VcdTg4M2ZcdTg4NDFcdTg4NDJcdTg4NDNcdTg4NDZcdTg4NDdcdTg4NDhcdTg4NDlcdTg4NGFcdTg4NGJcdTg4NGVcdTg4NGZcdTg4NTBcdTg4NTFcdTg4NTJcdTg4NTNcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWFc'@; put 'dTg4NWJcdTg4NWNcdTg4NWRcdTg4NWVcdTg4NWZcdTg4NjBcdTg4NjZcdTg4NjdcdTg4NmFcdTg4NmRcdTg4NmZcdTg4NzFcdTg4NzNcdTg4NzRcdTg4NzVcdTg4NzZcdTg4NzhcdTg4NzlcdTg4N2FcdWZmZmRcdTg4N2JcdTg4N2NcdTg4ODBcdTg4ODNcdTg4ODZcdTg4ODdcdTg4ODlcdTg4'@; put 'OGFcdTg4OGNcdTg4OGVcdTg4OGZcdTg4OTBcdTg4OTFcdTg4OTNcdTg4OTRcdTg4OTVcdTg4OTdcdTg4OThcdTg4OTlcdTg4OWFcdTg4OWJcdTg4OWRcdTg4OWVcdTg4OWZcdTg4YTBcdTg4YTFcdTg4YTNcdTg4YTVcdTg4YTZcdTg4YTdcdTg4YThcdTg4YTlcdTg4YWFcdTVjMGZcdTViNWRc'@; put 'dTY4MjFcdTgwOTZcdTU1NzhcdTdiMTFcdTY1NDhcdTY5NTRcdTRlOWJcdTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUzNzhcdTg3ZjlcdTYxYzhcdTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgy'@; put 'YWZcdTk1MGNcdTZiMjNcdThmOWJcdTY1YjBcdTVmZmJcdTVmYzNcdTRmZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJcdTVlNzhcdTY3NGZcdTYwMjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhc'@; put 'dTZjNzlcdTk2YzRcdTcxOGFcdTRmMTFcdTRmZWVcdTdmOWVcdTY3M2RcdTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThiYjhcdTg0YzRcdTkxNTdcdTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdk'@; put 'NmVcdTVhN2ZcdTdlZWFcdTdlZWRcdThmNjlcdTU1YTdcdTViYTNcdTYwYWNcdTY1Y2JcdTczODRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDhdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwOF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDhdW3NdXT01MzI0OCtzLGhbNTMyNDgrc109'@; put 'Y1syMDhdW3NdKTtmb3IoY1syMDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg4YWNcdTg4YWVcdTg4YWZcdTg4YjBcdTg4YjJcdTg4YjNcdTg4YjRcdTg4YjVcdTg4YjZcdTg4YjhcdTg4YjlcdTg4YmFcdTg4YmJcdTg4YmRcdTg4'@; put 'YmVcdTg4YmZcdTg4YzBcdTg4YzNcdTg4YzRcdTg4YzdcdTg4YzhcdTg4Y2FcdTg4Y2JcdTg4Y2NcdTg4Y2RcdTg4Y2ZcdTg4ZDBcdTg4ZDFcdTg4ZDNcdTg4ZDZcdTg4ZDdcdTg4ZGFcdTg4ZGJcdTg4ZGNcdTg4ZGRcdTg4ZGVcdTg4ZTBcdTg4ZTFcdTg4ZTZcdTg4ZTdcdTg4ZTlcdTg4ZWFc'@; put 'dTg4ZWJcdTg4ZWNcdTg4ZWRcdTg4ZWVcdTg4ZWZcdTg4ZjJcdTg4ZjVcdTg4ZjZcdTg4ZjdcdTg4ZmFcdTg4ZmJcdTg4ZmRcdTg4ZmZcdTg5MDBcdTg5MDFcdTg5MDNcdTg5MDRcdTg5MDVcdTg5MDZcdTg5MDdcdTg5MDhcdWZmZmRcdTg5MDlcdTg5MGJcdTg5MGNcdTg5MGRcdTg5MGVcdTg5'@; put 'MGZcdTg5MTFcdTg5MTRcdTg5MTVcdTg5MTZcdTg5MTdcdTg5MThcdTg5MWNcdTg5MWRcdTg5MWVcdTg5MWZcdTg5MjBcdTg5MjJcdTg5MjNcdTg5MjRcdTg5MjZcdTg5MjdcdTg5MjhcdTg5MjlcdTg5MmNcdTg5MmRcdTg5MmVcdTg5MmZcdTg5MzFcdTg5MzJcdTg5MzNcdTg5MzVcdTg5Mzdc'@; put 'dTkwMDlcdTc2NjNcdTc3MjlcdTdlZGFcdTk3NzRcdTg1OWJcdTViNjZcdTdhNzRcdTk2ZWFcdTg4NDBcdTUyY2JcdTcxOGZcdTVmYWFcdTY1ZWNcdThiZTJcdTViZmJcdTlhNmZcdTVkZTFcdTZiODlcdTZjNWJcdThiYWRcdThiYWZcdTkwMGFcdThmYzVcdTUzOGJcdTYyYmNcdTllMjZcdTll'@; put 'MmRcdTU0NDBcdTRlMmJcdTgyYmRcdTcyNTlcdTg2OWNcdTVkMTZcdTg4NTlcdTZkYWZcdTk2YzVcdTU0ZDFcdTRlOWFcdThiYjZcdTcxMDlcdTU0YmRcdTk2MDlcdTcwZGZcdTZkZjlcdTc2ZDBcdTRlMjVcdTc4MTRcdTg3MTJcdTVjYTlcdTVlZjZcdThhMDBcdTk4OWNcdTk2MGVcdTcwOGVc'@; put 'dTZjYmZcdTU5NDRcdTYzYTlcdTc3M2NcdTg4NGRcdTZmMTRcdTgyNzNcdTU4MzBcdTcxZDVcdTUzOGNcdTc4MWFcdTk2YzFcdTU1MDFcdTVmNjZcdTcxMzBcdTViYjRcdThjMWFcdTlhOGNcdTZiODNcdTU5MmVcdTllMmZcdTc5ZTdcdTY3NjhcdTYyNmNcdTRmNmZcdTc1YTFcdTdmOGFcdTZk'@; put 'MGJcdTk2MzNcdTZjMjdcdTRlZjBcdTc1ZDJcdTUxN2JcdTY4MzdcdTZmM2VcdTkwODBcdTgxNzBcdTU5OTZcdTc0NzZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMDldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIwOV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMDldW3NdXT01MzUwNCtz'@; put 'LGhbNTM1MDQrc109Y1syMDldW3NdKTtmb3IoY1syMTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5MzhcdTg5MzlcdTg5M2FcdTg5M2JcdTg5M2NcdTg5M2RcdTg5M2VcdTg5M2ZcdTg5NDBcdTg5NDJcdTg5NDNcdTg5NDVcdTg5'@; put 'NDZcdTg5NDdcdTg5NDhcdTg5NDlcdTg5NGFcdTg5NGJcdTg5NGNcdTg5NGRcdTg5NGVcdTg5NGZcdTg5NTBcdTg5NTFcdTg5NTJcdTg5NTNcdTg5NTRcdTg5NTVcdTg5NTZcdTg5NTdcdTg5NThcdTg5NTlcdTg5NWFcdTg5NWJcdTg5NWNcdTg5NWRcdTg5NjBcdTg5NjFcdTg5NjJcdTg5NjNc'@; put 'dTg5NjRcdTg5NjVcdTg5NjdcdTg5NjhcdTg5NjlcdTg5NmFcdTg5NmJcdTg5NmNcdTg5NmRcdTg5NmVcdTg5NmZcdTg5NzBcdTg5NzFcdTg5NzJcdTg5NzNcdTg5NzRcdTg5NzVcdTg5NzZcdTg5NzdcdTg5NzhcdTg5NzlcdTg5N2FcdTg5N2NcdWZmZmRcdTg5N2RcdTg5N2VcdTg5ODBcdTg5'@; put 'ODJcdTg5ODRcdTg5ODVcdTg5ODdcdTg5ODhcdTg5ODlcdTg5OGFcdTg5OGJcdTg5OGNcdTg5OGRcdTg5OGVcdTg5OGZcdTg5OTBcdTg5OTFcdTg5OTJcdTg5OTNcdTg5OTRcdTg5OTVcdTg5OTZcdTg5OTdcdTg5OThcdTg5OTlcdTg5OWFcdTg5OWJcdTg5OWNcdTg5OWRcdTg5OWVcdTg5OWZc'@; put 'dTg5YTBcdTg5YTFcdTY0NDdcdTVjMjdcdTkwNjVcdTdhOTFcdThjMjNcdTU5ZGFcdTU0YWNcdTgyMDBcdTgzNmZcdTg5ODFcdTgwMDBcdTY5MzBcdTU2NGVcdTgwMzZcdTcyMzdcdTkxY2VcdTUxYjZcdTRlNWZcdTk4NzVcdTYzOTZcdTRlMWFcdTUzZjZcdTY2ZjNcdTgxNGJcdTU5MWNcdTZk'@; put 'YjJcdTRlMDBcdTU4ZjlcdTUzM2JcdTYzZDZcdTk0ZjFcdTRmOWRcdTRmMGFcdTg4NjNcdTk4OTBcdTU5MzdcdTkwNTdcdTc5ZmJcdTRlZWFcdTgwZjBcdTc1OTFcdTZjODJcdTViOWNcdTU5ZThcdTVmNWRcdTY5MDVcdTg2ODFcdTUwMWFcdTVkZjJcdTRlNTlcdTc3ZTNcdTRlZTVcdTgyN2Fc'@; put 'dTYyOTFcdTY2MTNcdTkwOTFcdTVjNzlcdTRlYmZcdTVmNzlcdTgxYzZcdTkwMzhcdTgwODRcdTc1YWJcdTRlYTZcdTg4ZDRcdTYxMGZcdTZiYzVcdTVmYzZcdTRlNDlcdTc2Y2FcdTZlYTJcdThiZTNcdThiYWVcdThjMGFcdThiZDFcdTVmMDJcdTdmZmNcdTdmY2NcdTdlY2VcdTgzMzVcdTgz'@; put 'NmJcdTU2ZTBcdTZiYjdcdTk3ZjNcdTk2MzRcdTU5ZmJcdTU0MWZcdTk0ZjZcdTZkZWJcdTViYzVcdTk5NmVcdTVjMzlcdTVmMTVcdTk2OTBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxMF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTBd'@; put 'W3NdXT01Mzc2MCtzLGhbNTM3NjArc109Y1syMTBdW3NdKTtmb3IoY1syMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5YTJcdTg5YTNcdTg5YTRcdTg5YTVcdTg5YTZcdTg5YTdcdTg5YThcdTg5YTlcdTg5YWFcdTg5YWJcdTg5'@; put 'YWNcdTg5YWRcdTg5YWVcdTg5YWZcdTg5YjBcdTg5YjFcdTg5YjJcdTg5YjNcdTg5YjRcdTg5YjVcdTg5YjZcdTg5YjdcdTg5YjhcdTg5YjlcdTg5YmFcdTg5YmJcdTg5YmNcdTg5YmRcdTg5YmVcdTg5YmZcdTg5YzBcdTg5YzNcdTg5Y2RcdTg5ZDNcdTg5ZDRcdTg5ZDVcdTg5ZDdcdTg5ZDhc'@; put 'dTg5ZDlcdTg5ZGJcdTg5ZGRcdTg5ZGZcdTg5ZTBcdTg5ZTFcdTg5ZTJcdTg5ZTRcdTg5ZTdcdTg5ZThcdTg5ZTlcdTg5ZWFcdTg5ZWNcdTg5ZWRcdTg5ZWVcdTg5ZjBcdTg5ZjFcdTg5ZjJcdTg5ZjRcdTg5ZjVcdTg5ZjZcdTg5ZjdcdTg5ZjhcdTg5ZjlcdTg5ZmFcdWZmZmRcdTg5ZmJcdTg5'@; put 'ZmNcdTg5ZmRcdTg5ZmVcdTg5ZmZcdThhMDFcdThhMDJcdThhMDNcdThhMDRcdThhMDVcdThhMDZcdThhMDhcdThhMDlcdThhMGFcdThhMGJcdThhMGNcdThhMGRcdThhMGVcdThhMGZcdThhMTBcdThhMTFcdThhMTJcdThhMTNcdThhMTRcdThhMTVcdThhMTZcdThhMTdcdThhMThcdThhMTlc'@; put 'dThhMWFcdThhMWJcdThhMWNcdThhMWRcdTUzNzBcdTgyZjFcdTZhMzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2YzhcdTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1'@; put 'YzhcdTVlYjhcdTk2Y2RcdThlMGFcdTg2ZjlcdTU0OGZcdTZjZjNcdTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlcdTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFc'@; put 'dTkxYzlcdThiZjFcdTUzYzhcdTVlN2NcdThmYzJcdTZkZTRcdTRlOGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRcdTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRlMGVcdTVjN2ZcdTc5YjlcdTViODdcdThi'@; put 'ZWRcdTdmYmRcdTczODlcdTU3ZGZcdTgyOGJcdTkwYzFcdTU0MDFcdTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODlcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxMV1bc10uY2hhckNvZGVBdCgw'@; put 'KSYmKHlbY1syMTFdW3NdXT01NDAxNitzLGhbNTQwMTYrc109Y1syMTFdW3NdKTtmb3IoY1syMTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhMWVcdThhMWZcdThhMjBcdThhMjFcdThhMjJcdThhMjNcdThhMjRcdThhMjVcdThh'@; put 'MjZcdThhMjdcdThhMjhcdThhMjlcdThhMmFcdThhMmJcdThhMmNcdThhMmRcdThhMmVcdThhMmZcdThhMzBcdThhMzFcdThhMzJcdThhMzNcdThhMzRcdThhMzVcdThhMzZcdThhMzdcdThhMzhcdThhMzlcdThhM2FcdThhM2JcdThhM2NcdThhM2RcdThhM2ZcdThhNDBcdThhNDFcdThhNDJc'@; put 'dThhNDNcdThhNDRcdThhNDVcdThhNDZcdThhNDdcdThhNDlcdThhNGFcdThhNGJcdThhNGNcdThhNGRcdThhNGVcdThhNGZcdThhNTBcdThhNTFcdThhNTJcdThhNTNcdThhNTRcdThhNTVcdThhNTZcdThhNTdcdThhNThcdThhNTlcdThhNWFcdThhNWJcdThhNWNcdThhNWRcdThhNWVcdWZm'@; put 'ZmRcdThhNWZcdThhNjBcdThhNjFcdThhNjJcdThhNjNcdThhNjRcdThhNjVcdThhNjZcdThhNjdcdThhNjhcdThhNjlcdThhNmFcdThhNmJcdThhNmNcdThhNmRcdThhNmVcdThhNmZcdThhNzBcdThhNzFcdThhNzJcdThhNzNcdThhNzRcdThhNzVcdThhNzZcdThhNzdcdThhNzhcdThhN2Fc'@; put 'dThhN2JcdThhN2NcdThhN2RcdThhN2VcdThhN2ZcdThhODBcdTZkNzRcdTViZDNcdTg4ZDVcdTk4ODRcdThjNmJcdTlhNmRcdTllMzNcdTZlMGFcdTUxYTRcdTUxNDNcdTU3YTNcdTg4ODFcdTUzOWZcdTYzZjRcdThmOTVcdTU2ZWRcdTU0NThcdTU3MDZcdTczM2ZcdTZlOTBcdTdmMThcdThm'@; put 'ZGNcdTgyZDFcdTYxM2ZcdTYwMjhcdTk2NjJcdTY2ZjBcdTdlYTZcdThkOGFcdThkYzNcdTk0YTVcdTVjYjNcdTdjYTRcdTY3MDhcdTYwYTZcdTk2MDVcdTgwMThcdTRlOTFcdTkwZTdcdTUzMDBcdTk2NjhcdTUxNDFcdThmZDBcdTg1NzRcdTkxNWRcdTY2NTVcdTk3ZjVcdTViNTVcdTUzMWRc'@; put 'dTc4MzhcdTY3NDJcdTY4M2RcdTU0YzlcdTcwN2VcdTViYjBcdThmN2RcdTUxOGRcdTU3MjhcdTU0YjFcdTY1MTJcdTY2ODJcdThkNWVcdThkNDNcdTgxMGZcdTg0NmNcdTkwNmRcdTdjZGZcdTUxZmZcdTg1ZmJcdTY3YTNcdTY1ZTlcdTZmYTFcdTg2YTRcdThlODFcdTU2NmFcdTkwMjBcdTc2'@; put 'ODJcdTcwNzZcdTcxZTVcdThkMjNcdTYyZTlcdTUyMTlcdTZjZmRcdThkM2NcdTYwMGVcdTU4OWVcdTYxOGVcdTY2ZmVcdThkNjBcdTYyNGVcdTU1YjNcdTZlMjNcdTY3MmRcdThmNjdcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxMl1bc10u'@; put 'Y2hhckNvZGVBdCgwKSYmKHlbY1syMTJdW3NdXT01NDI3MitzLGhbNTQyNzIrc109Y1syMTJdW3NdKTtmb3IoY1syMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhODFcdThhODJcdThhODNcdThhODRcdThhODVcdThhODZcdThh'@; put 'ODdcdThhODhcdThhOGJcdThhOGNcdThhOGRcdThhOGVcdThhOGZcdThhOTBcdThhOTFcdThhOTJcdThhOTRcdThhOTVcdThhOTZcdThhOTdcdThhOThcdThhOTlcdThhOWFcdThhOWJcdThhOWNcdThhOWRcdThhOWVcdThhOWZcdThhYTBcdThhYTFcdThhYTJcdThhYTNcdThhYTRcdThhYTVc'@; put 'dThhYTZcdThhYTdcdThhYThcdThhYTlcdThhYWFcdThhYWJcdThhYWNcdThhYWRcdThhYWVcdThhYWZcdThhYjBcdThhYjFcdThhYjJcdThhYjNcdThhYjRcdThhYjVcdThhYjZcdThhYjdcdThhYjhcdThhYjlcdThhYmFcdThhYmJcdThhYmNcdThhYmRcdThhYmVcdThhYmZcdThhYzBcdThh'@; put 'YzFcdThhYzJcdWZmZmRcdThhYzNcdThhYzRcdThhYzVcdThhYzZcdThhYzdcdThhYzhcdThhYzlcdThhY2FcdThhY2JcdThhY2NcdThhY2RcdThhY2VcdThhY2ZcdThhZDBcdThhZDFcdThhZDJcdThhZDNcdThhZDRcdThhZDVcdThhZDZcdThhZDdcdThhZDhcdThhZDlcdThhZGFcdThhZGJc'@; put 'dThhZGNcdThhZGRcdThhZGVcdThhZGZcdThhZTBcdThhZTFcdThhZTJcdThhZTNcdTk0ZTFcdTk1ZjhcdTc3MjhcdTY4MDVcdTY5YThcdTU0OGJcdTRlNGRcdTcwYjhcdThiYzhcdTY0NThcdTY1OGJcdTViODVcdTdhODRcdTUwM2FcdTViZThcdTc3YmJcdTZiZTFcdThhNzlcdTdjOThcdTZj'@; put 'YmVcdTc2Y2ZcdTY1YTlcdThmOTdcdTVkMmRcdTVjNTVcdTg2MzhcdTY4MDhcdTUzNjBcdTYyMThcdTdhZDlcdTZlNWJcdTdlZmRcdTZhMWZcdTdhZTBcdTVmNzBcdTZmMzNcdTVmMjBcdTYzOGNcdTZkYThcdTY3NTZcdTRlMDhcdTVlMTBcdThkMjZcdTRlZDdcdTgwYzBcdTc2MzRcdTk2OWNc'@; put 'dTYyZGJcdTY2MmRcdTYyN2VcdTZjYmNcdThkNzVcdTcxNjdcdTdmNjlcdTUxNDZcdTgwODdcdTUzZWNcdTkwNmVcdTYyOThcdTU0ZjJcdTg2ZjBcdThmOTlcdTgwMDVcdTk1MTdcdTg1MTdcdThmZDlcdTZkNTlcdTczY2RcdTY1OWZcdTc3MWZcdTc1MDRcdTc4MjdcdTgxZmJcdThkMWVcdTk0'@; put 'ODhcdTRmYTZcdTY3OTVcdTc1YjlcdThiY2FcdTk3MDdcdTYzMmZcdTk1NDdcdTk2MzVcdTg0YjhcdTYzMjNcdTc3NDFcdTVmODFcdTcyZjBcdTRlODlcdTYwMTRcdTY1NzRcdTYyZWZcdTZiNjNcdTY1M2ZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTNdLmxlbmd0aDsrK3MpNjU1MzMh'@; put 'PT1jWzIxM11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTNdW3NdXT01NDUyOCtzLGhbNTQ1Mjgrc109Y1syMTNdW3NdKTtmb3IoY1syMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTRcdThhZTVcdThhZTZcdThhZTdcdThh'@; put 'ZThcdThhZTlcdThhZWFcdThhZWJcdThhZWNcdThhZWRcdThhZWVcdThhZWZcdThhZjBcdThhZjFcdThhZjJcdThhZjNcdThhZjRcdThhZjVcdThhZjZcdThhZjdcdThhZjhcdThhZjlcdThhZmFcdThhZmJcdThhZmNcdThhZmRcdThhZmVcdThhZmZcdThiMDBcdThiMDFcdThiMDJcdThiMDNc'@; put 'dThiMDRcdThiMDVcdThiMDZcdThiMDhcdThiMDlcdThiMGFcdThiMGJcdThiMGNcdThiMGRcdThiMGVcdThiMGZcdThiMTBcdThiMTFcdThiMTJcdThiMTNcdThiMTRcdThiMTVcdThiMTZcdThiMTdcdThiMThcdThiMTlcdThiMWFcdThiMWJcdThiMWNcdThiMWRcdThiMWVcdThiMWZcdThi'@; put 'MjBcdThiMjFcdThiMjJcdThiMjNcdWZmZmRcdThiMjRcdThiMjVcdThiMjdcdThiMjhcdThiMjlcdThiMmFcdThiMmJcdThiMmNcdThiMmRcdThiMmVcdThiMmZcdThiMzBcdThiMzFcdThiMzJcdThiMzNcdThiMzRcdThiMzVcdThiMzZcdThiMzdcdThiMzhcdThiMzlcdThiM2FcdThiM2Jc'@; put 'dThiM2NcdThiM2RcdThiM2VcdThiM2ZcdThiNDBcdThiNDFcdThiNDJcdThiNDNcdThiNDRcdThiNDVcdTVlMjdcdTc1YzdcdTkwZDFcdThiYzFcdTgyOWRcdTY3OWRcdTY1MmZcdTU0MzFcdTg3MThcdTc3ZTVcdTgwYTJcdTgxMDJcdTZjNDFcdTRlNGJcdTdlYzdcdTgwNGNcdTc2ZjRcdTY5'@; put 'MGRcdTZiOTZcdTYyNjdcdTUwM2NcdTRmODRcdTU3NDBcdTYzMDdcdTZiNjJcdThkYmVcdTUzZWFcdTY1ZThcdTdlYjhcdTVmZDdcdTYzMWFcdTYzYjdcdTgxZjNcdTgxZjRcdTdmNmVcdTVlMWNcdTVjZDlcdTUyMzZcdTY2N2FcdTc5ZTlcdTdhMWFcdThkMjhcdTcwOTlcdTc1ZDRcdTZlZGVc'@; put 'dTZjYmJcdTdhOTJcdTRlMmRcdTc2YzVcdTVmZTBcdTk0OWZcdTg4NzdcdTdlYzhcdTc5Y2RcdTgwYmZcdTkxY2RcdTRlZjJcdTRmMTdcdTgyMWZcdTU0NjhcdTVkZGVcdTZkMzJcdThiY2NcdTdjYTVcdThmNzRcdTgwOThcdTVlMWFcdTU0OTJcdTc2YjFcdTViOTlcdTY2M2NcdTlhYTRcdTcz'@; put 'ZTBcdTY4MmFcdTg2ZGJcdTY3MzFcdTczMmFcdThiZjhcdThiZGJcdTkwMTBcdTdhZjlcdTcwZGJcdTcxNmVcdTYyYzRcdTc3YTlcdTU2MzFcdTRlM2JcdTg0NTdcdTY3ZjFcdTUyYTlcdTg2YzBcdThkMmVcdTk0ZjhcdTdiNTFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTRdLmxlbmd0'@; put 'aDsrK3MpNjU1MzMhPT1jWzIxNF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTRdW3NdXT01NDc4NCtzLGhbNTQ3ODQrc109Y1syMTRdW3NdKTtmb3IoY1syMTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiNDZcdThiNDdcdThi'@; put 'NDhcdThiNDlcdThiNGFcdThiNGJcdThiNGNcdThiNGRcdThiNGVcdThiNGZcdThiNTBcdThiNTFcdThiNTJcdThiNTNcdThiNTRcdThiNTVcdThiNTZcdThiNTdcdThiNThcdThiNTlcdThiNWFcdThiNWJcdThiNWNcdThiNWRcdThiNWVcdThiNWZcdThiNjBcdThiNjFcdThiNjJcdThiNjNc'@; put 'dThiNjRcdThiNjVcdThiNjdcdThiNjhcdThiNjlcdThiNmFcdThiNmJcdThiNmRcdThiNmVcdThiNmZcdThiNzBcdThiNzFcdThiNzJcdThiNzNcdThiNzRcdThiNzVcdThiNzZcdThiNzdcdThiNzhcdThiNzlcdThiN2FcdThiN2JcdThiN2NcdThiN2RcdThiN2VcdThiN2ZcdThiODBcdThi'@; put 'ODFcdThiODJcdThiODNcdThiODRcdThiODVcdThiODZcdWZmZmRcdThiODdcdThiODhcdThiODlcdThiOGFcdThiOGJcdThiOGNcdThiOGRcdThiOGVcdThiOGZcdThiOTBcdThiOTFcdThiOTJcdThiOTNcdThiOTRcdThiOTVcdThiOTZcdThiOTdcdThiOThcdThiOTlcdThiOWFcdThiOWJc'@; put 'dThiOWNcdThiOWRcdThiOWVcdThiOWZcdThiYWNcdThiYjFcdThiYmJcdThiYzdcdThiZDBcdThiZWFcdThjMDlcdThjMWVcdTRmNGZcdTZjZThcdTc5NWRcdTlhN2JcdTYyOTNcdTcyMmFcdTYyZmRcdTRlMTNcdTc4MTZcdThmNmNcdTY0YjBcdThkNWFcdTdiYzZcdTY4NjlcdTVlODRcdTg4'@; put 'YzVcdTU5ODZcdTY0OWVcdTU4ZWVcdTcyYjZcdTY5MGVcdTk1MjVcdThmZmRcdThkNThcdTU3NjBcdTdmMDBcdThjMDZcdTUxYzZcdTYzNDlcdTYyZDlcdTUzNTNcdTY4NGNcdTc0MjJcdTgzMDFcdTkxNGNcdTU1NDRcdTc3NDBcdTcwN2NcdTZkNGFcdTUxNzlcdTU0YThcdThkNDRcdTU5ZmZc'@; put 'dTZlY2JcdTZkYzRcdTViNWNcdTdkMmJcdTRlZDRcdTdjN2RcdTZlZDNcdTViNTBcdTgxZWFcdTZlMGRcdTViNTdcdTliMDNcdTY4ZDVcdThlMmFcdTViOTdcdTdlZmNcdTYwM2JcdTdlYjVcdTkwYjlcdThkNzBcdTU5NGZcdTYzY2RcdTc5ZGZcdThkYjNcdTUzNTJcdTY1Y2ZcdTc5NTZcdThi'@; put 'YzVcdTk2M2JcdTdlYzRcdTk0YmJcdTdlODJcdTU2MzRcdTkxODlcdTY3MDBcdTdmNmFcdTVjMGFcdTkwNzVcdTY2MjhcdTVkZTZcdTRmNTBcdTY3ZGVcdTUwNWFcdTRmNWNcdTU3NTBcdTVlYTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9'@; put 'Y1syMTVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxNV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTVdW3NdXT01NTA0MCtzLGhbNTUwNDArc109Y1syMTVdW3NdKTtmb3IoY1syMTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThj'@; put 'MzhcdThjMzlcdThjM2FcdThjM2JcdThjM2NcdThjM2RcdThjM2VcdThjM2ZcdThjNDBcdThjNDJcdThjNDNcdThjNDRcdThjNDVcdThjNDhcdThjNGFcdThjNGJcdThjNGRcdThjNGVcdThjNGZcdThjNTBcdThjNTFcdThjNTJcdThjNTNcdThjNTRcdThjNTZcdThjNTdcdThjNThcdThjNTlc'@; put 'dThjNWJcdThjNWNcdThjNWRcdThjNWVcdThjNWZcdThjNjBcdThjNjNcdThjNjRcdThjNjVcdThjNjZcdThjNjdcdThjNjhcdThjNjlcdThjNmNcdThjNmRcdThjNmVcdThjNmZcdThjNzBcdThjNzFcdThjNzJcdThjNzRcdThjNzVcdThjNzZcdThjNzdcdThjN2JcdThjN2NcdThjN2RcdThj'@; put 'N2VcdThjN2ZcdThjODBcdThjODFcdThjODNcdThjODRcdThjODZcdThjODdcdWZmZmRcdThjODhcdThjOGJcdThjOGRcdThjOGVcdThjOGZcdThjOTBcdThjOTFcdThjOTJcdThjOTNcdThjOTVcdThjOTZcdThjOTdcdThjOTlcdThjOWFcdThjOWJcdThjOWNcdThjOWRcdThjOWVcdThjOWZc'@; put 'dThjYTBcdThjYTFcdThjYTJcdThjYTNcdThjYTRcdThjYTVcdThjYTZcdThjYTdcdThjYThcdThjYTlcdThjYWFcdThjYWJcdThjYWNcdThjYWRcdTRlOGRcdTRlMGNcdTUxNDBcdTRlMTBcdTVlZmZcdTUzNDVcdTRlMTVcdTRlOThcdTRlMWVcdTliMzJcdTViNmNcdTU2NjlcdTRlMjhcdTc5'@; put 'YmFcdTRlM2ZcdTUzMTVcdTRlNDdcdTU5MmRcdTcyM2JcdTUzNmVcdTZjMTBcdTU2ZGZcdTgwZTRcdTk5OTdcdTZiZDNcdTc3N2VcdTlmMTdcdTRlMzZcdTRlOWZcdTlmMTBcdTRlNWNcdTRlNjlcdTRlOTNcdTgyODhcdTViNWJcdTU1NmNcdTU2MGZcdTRlYzRcdTUzOGRcdTUzOWRcdTUzYTNc'@; put 'dTUzYTVcdTUzYWVcdTk3NjVcdThkNWRcdTUzMWFcdTUzZjVcdTUzMjZcdTUzMmVcdTUzM2VcdThkNWNcdTUzNjZcdTUzNjNcdTUyMDJcdTUyMDhcdTUyMGVcdTUyMmRcdTUyMzNcdTUyM2ZcdTUyNDBcdTUyNGNcdTUyNWVcdTUyNjFcdTUyNWNcdTg0YWZcdTUyN2RcdTUyODJcdTUyODFcdTUy'@; put 'OTBcdTUyOTNcdTUxODJcdTdmNTRcdTRlYmJcdTRlYzNcdTRlYzlcdTRlYzJcdTRlZThcdTRlZTFcdTRlZWJcdTRlZGVcdTRmMWJcdTRlZjNcdTRmMjJcdTRmNjRcdTRlZjVcdTRmMjVcdTRmMjdcdTRmMDlcdTRmMmJcdTRmNWVcdTRmNjdcdTY1MzhcdTRmNWFcdTRmNWRcdWZmZmQiLnNwbGl0'@; put 'KCIiKSxzPTA7cyE9Y1syMTZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxNl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTZdW3NdXT01NTI5NitzLGhbNTUyOTYrc109Y1syMTZdW3NdKTtmb3IoY1syMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdThjYWVcdThjYWZcdThjYjBcdThjYjFcdThjYjJcdThjYjNcdThjYjRcdThjYjVcdThjYjZcdThjYjdcdThjYjhcdThjYjlcdThjYmFcdThjYmJcdThjYmNcdThjYmRcdThjYmVcdThjYmZcdThjYzBcdThjYzFcdThjYzJcdThjYzNcdThjYzRcdThjYzVcdThjYzZcdThjYzdc'@; put 'dThjYzhcdThjYzlcdThjY2FcdThjY2JcdThjY2NcdThjY2RcdThjY2VcdThjY2ZcdThjZDBcdThjZDFcdThjZDJcdThjZDNcdThjZDRcdThjZDVcdThjZDZcdThjZDdcdThjZDhcdThjZDlcdThjZGFcdThjZGJcdThjZGNcdThjZGRcdThjZGVcdThjZGZcdThjZTBcdThjZTFcdThjZTJcdThj'@; put 'ZTNcdThjZTRcdThjZTVcdThjZTZcdThjZTdcdThjZThcdThjZTlcdThjZWFcdThjZWJcdThjZWNcdWZmZmRcdThjZWRcdThjZWVcdThjZWZcdThjZjBcdThjZjFcdThjZjJcdThjZjNcdThjZjRcdThjZjVcdThjZjZcdThjZjdcdThjZjhcdThjZjlcdThjZmFcdThjZmJcdThjZmNcdThjZmRc'@; put 'dThjZmVcdThjZmZcdThkMDBcdThkMDFcdThkMDJcdThkMDNcdThkMDRcdThkMDVcdThkMDZcdThkMDdcdThkMDhcdThkMDlcdThkMGFcdThkMGJcdThkMGNcdThkMGRcdTRmNWZcdTRmNTdcdTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRm'@; put 'N2JcdTRmYWFcdTRmN2NcdTRmYWNcdTRmOTRcdTRmZTZcdTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRmZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUwMmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2Vc'@; put 'dTUwNDNcdTUwNTVcdTUwNDhcdTUwNGVcdTUwNmNcdTUwN2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFcdTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJcdTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVk'@; put 'ZmRcdTllYzlcdTk5OThcdTUxODFcdTU5MTRcdTUyZjlcdTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgxMTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmNc'@; put 'dWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxN11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTddW3NdXT01NTU1MitzLGhbNTU1NTIrc109Y1syMTddW3NdKTtmb3IoY1syMThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMGVcdThkMGZcdThkMTBcdThkMTFcdThkMTJcdThkMTNcdThkMTRcdThkMTVcdThkMTZcdThkMTdcdThkMThcdThkMTlcdThkMWFcdThkMWJcdThkMWNcdThkMjBcdThkNTFcdThkNTJcdThkNTdcdThkNWZcdThkNjVcdThkNjhcdThkNjlcdThkNmFc'@; put 'dThkNmNcdThkNmVcdThkNmZcdThkNzFcdThkNzJcdThkNzhcdThkNzlcdThkN2FcdThkN2JcdThkN2NcdThkN2RcdThkN2VcdThkN2ZcdThkODBcdThkODJcdThkODNcdThkODZcdThkODdcdThkODhcdThkODlcdThkOGNcdThkOGRcdThkOGVcdThkOGZcdThkOTBcdThkOTJcdThkOTNcdThk'@; put 'OTVcdThkOTZcdThkOTdcdThkOThcdThkOTlcdThkOWFcdThkOWJcdThkOWNcdThkOWRcdThkOWVcdThkYTBcdThkYTFcdWZmZmRcdThkYTJcdThkYTRcdThkYTVcdThkYTZcdThkYTdcdThkYThcdThkYTlcdThkYWFcdThkYWJcdThkYWNcdThkYWRcdThkYWVcdThkYWZcdThkYjBcdThkYjJc'@; put 'dThkYjZcdThkYjdcdThkYjlcdThkYmJcdThkYmRcdThkYzBcdThkYzFcdThkYzJcdThkYzVcdThkYzdcdThkYzhcdThkYzlcdThkY2FcdThkY2RcdThkZDBcdThkZDJcdThkZDNcdThkZDRcdTUxYzdcdTUxOTZcdTUxYTJcdTUxYTVcdThiYTBcdThiYTZcdThiYTdcdThiYWFcdThiYjRcdThi'@; put 'YjVcdThiYjdcdThiYzJcdThiYzNcdThiY2JcdThiY2ZcdThiY2VcdThiZDJcdThiZDNcdThiZDRcdThiZDZcdThiZDhcdThiZDlcdThiZGNcdThiZGZcdThiZTBcdThiZTRcdThiZThcdThiZTlcdThiZWVcdThiZjBcdThiZjNcdThiZjZcdThiZjlcdThiZmNcdThiZmZcdThjMDBcdThjMDJc'@; put 'dThjMDRcdThjMDdcdThjMGNcdThjMGZcdThjMTFcdThjMTJcdThjMTRcdThjMTVcdThjMTZcdThjMTlcdThjMWJcdThjMThcdThjMWRcdThjMWZcdThjMjBcdThjMjFcdThjMjVcdThjMjdcdThjMmFcdThjMmJcdThjMmVcdThjMmZcdThjMzJcdThjMzNcdThjMzVcdThjMzZcdTUzNjlcdTUz'@; put 'N2FcdTk2MWRcdTk2MjJcdTk2MjFcdTk2MzFcdTk2MmFcdTk2M2RcdTk2M2NcdTk2NDJcdTk2NDlcdTk2NTRcdTk2NWZcdTk2NjdcdTk2NmNcdTk2NzJcdTk2NzRcdTk2ODhcdTk2OGRcdTk2OTdcdTk2YjBcdTkwOTdcdTkwOWJcdTkwOWRcdTkwOTlcdTkwYWNcdTkwYTFcdTkwYjRcdTkwYjNc'@; put 'dTkwYjZcdTkwYmFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMThdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxOF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMThdW3NdXT01NTgwOCtzLGhbNTU4MDgrc109Y1syMThdW3NdKTtmb3IoY1syMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkZDVcdThkZDhcdThkZDlcdThkZGNcdThkZTBcdThkZTFcdThkZTJcdThkZTVcdThkZTZcdThkZTdcdThkZTlcdThkZWRcdThkZWVcdThkZjBcdThkZjFcdThkZjJcdThkZjRcdThkZjZcdThkZmNcdThkZmVcdThkZmZcdThlMDBc'@; put 'dThlMDFcdThlMDJcdThlMDNcdThlMDRcdThlMDZcdThlMDdcdThlMDhcdThlMGJcdThlMGRcdThlMGVcdThlMTBcdThlMTFcdThlMTJcdThlMTNcdThlMTVcdThlMTZcdThlMTdcdThlMThcdThlMTlcdThlMWFcdThlMWJcdThlMWNcdThlMjBcdThlMjFcdThlMjRcdThlMjVcdThlMjZcdThl'@; put 'MjdcdThlMjhcdThlMmJcdThlMmRcdThlMzBcdThlMzJcdThlMzNcdThlMzRcdThlMzZcdThlMzdcdThlMzhcdThlM2JcdThlM2NcdThlM2VcdWZmZmRcdThlM2ZcdThlNDNcdThlNDVcdThlNDZcdThlNGNcdThlNGRcdThlNGVcdThlNGZcdThlNTBcdThlNTNcdThlNTRcdThlNTVcdThlNTZc'@; put 'dThlNTdcdThlNThcdThlNWFcdThlNWJcdThlNWNcdThlNWRcdThlNWVcdThlNWZcdThlNjBcdThlNjFcdThlNjJcdThlNjNcdThlNjRcdThlNjVcdThlNjdcdThlNjhcdThlNmFcdThlNmJcdThlNmVcdThlNzFcdTkwYjhcdTkwYjBcdTkwY2ZcdTkwYzVcdTkwYmVcdTkwZDBcdTkwYzRcdTkw'@; put 'YzdcdTkwZDNcdTkwZTZcdTkwZTJcdTkwZGNcdTkwZDdcdTkwZGJcdTkwZWJcdTkwZWZcdTkwZmVcdTkxMDRcdTkxMjJcdTkxMWVcdTkxMjNcdTkxMzFcdTkxMmZcdTkxMzlcdTkxNDNcdTkxNDZcdTUyMGRcdTU5NDJcdTUyYTJcdTUyYWNcdTUyYWRcdTUyYmVcdTU0ZmZcdTUyZDBcdTUyZDZc'@; put 'dTUyZjBcdTUzZGZcdTcxZWVcdTc3Y2RcdTVlZjRcdTUxZjVcdTUxZmNcdTliMmZcdTUzYjZcdTVmMDFcdTc1NWFcdTVkZWZcdTU3NGNcdTU3YTlcdTU3YTFcdTU4N2VcdTU4YmNcdTU4YzVcdTU4ZDFcdTU3MjlcdTU3MmNcdTU3MmFcdTU3MzNcdTU3MzlcdTU3MmVcdTU3MmZcdTU3NWNcdTU3'@; put 'M2JcdTU3NDJcdTU3NjlcdTU3ODVcdTU3NmJcdTU3ODZcdTU3N2NcdTU3N2JcdTU3NjhcdTU3NmRcdTU3NzZcdTU3NzNcdTU3YWRcdTU3YTRcdTU3OGNcdTU3YjJcdTU3Y2ZcdTU3YTdcdTU3YjRcdTU3OTNcdTU3YTBcdTU3ZDVcdTU3ZDhcdTU3ZGFcdTU3ZDlcdTU3ZDJcdTU3YjhcdTU3ZjRc'@; put 'dTU3ZWZcdTU3ZjhcdTU3ZTRcdTU3ZGRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMTldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIxOV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMTldW3NdXT01NjA2NCtzLGhbNTYwNjQrc109Y1syMTldW3NdKTtmb3IoY1syMjBdPSJcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNzNcdThlNzVcdThlNzdcdThlNzhcdThlNzlcdThlN2FcdThlN2JcdThlN2RcdThlN2VcdThlODBcdThlODJcdThlODNcdThlODRcdThlODZcdThlODhcdThlODlcdThlOGFcdThlOGJcdThlOGNcdThlOGRc'@; put 'dThlOGVcdThlOTFcdThlOTJcdThlOTNcdThlOTVcdThlOTZcdThlOTdcdThlOThcdThlOTlcdThlOWFcdThlOWJcdThlOWRcdThlOWZcdThlYTBcdThlYTFcdThlYTJcdThlYTNcdThlYTRcdThlYTVcdThlYTZcdThlYTdcdThlYThcdThlYTlcdThlYWFcdThlYWRcdThlYWVcdThlYjBcdThl'@; put 'YjFcdThlYjNcdThlYjRcdThlYjVcdThlYjZcdThlYjdcdThlYjhcdThlYjlcdThlYmJcdThlYmNcdThlYmRcdThlYmVcdThlYmZcdThlYzBcdThlYzFcdThlYzJcdWZmZmRcdThlYzNcdThlYzRcdThlYzVcdThlYzZcdThlYzdcdThlYzhcdThlYzlcdThlY2FcdThlY2JcdThlY2NcdThlY2Rc'@; put 'dThlY2ZcdThlZDBcdThlZDFcdThlZDJcdThlZDNcdThlZDRcdThlZDVcdThlZDZcdThlZDdcdThlZDhcdThlZDlcdThlZGFcdThlZGJcdThlZGNcdThlZGRcdThlZGVcdThlZGZcdThlZTBcdThlZTFcdThlZTJcdThlZTNcdThlZTRcdTU4MGJcdTU4MGRcdTU3ZmRcdTU3ZWRcdTU4MDBcdTU4'@; put 'MWVcdTU4MTlcdTU4NDRcdTU4MjBcdTU4NjVcdTU4NmNcdTU4ODFcdTU4ODlcdTU4OWFcdTU4ODBcdTk5YThcdTlmMTlcdTYxZmZcdTgyNzlcdTgyN2RcdTgyN2ZcdTgyOGZcdTgyOGFcdTgyYThcdTgyODRcdTgyOGVcdTgyOTFcdTgyOTdcdTgyOTlcdTgyYWJcdTgyYjhcdTgyYmVcdTgyYjBc'@; put 'dTgyYzhcdTgyY2FcdTgyZTNcdTgyOThcdTgyYjdcdTgyYWVcdTgyY2JcdTgyY2NcdTgyYzFcdTgyYTlcdTgyYjRcdTgyYTFcdTgyYWFcdTgyOWZcdTgyYzRcdTgyY2VcdTgyYTRcdTgyZTFcdTgzMDlcdTgyZjdcdTgyZTRcdTgzMGZcdTgzMDdcdTgyZGNcdTgyZjRcdTgyZDJcdTgyZDhcdTgz'@; put 'MGNcdTgyZmJcdTgyZDNcdTgzMTFcdTgzMWFcdTgzMDZcdTgzMTRcdTgzMTVcdTgyZTBcdTgyZDVcdTgzMWNcdTgzNTFcdTgzNWJcdTgzNWNcdTgzMDhcdTgzOTJcdTgzM2NcdTgzMzRcdTgzMzFcdTgzOWJcdTgzNWVcdTgzMmZcdTgzNGZcdTgzNDdcdTgzNDNcdTgzNWZcdTgzNDBcdTgzMTdc'@; put 'dTgzNjBcdTgzMmRcdTgzM2FcdTgzMzNcdTgzNjZcdTgzNjVcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyMF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjBdW3NdXT01NjMyMCtzLGhbNTYzMjArc109Y1syMjBdW3NdKTtmb3IoY1syMjFd'@; put 'PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlZTVcdThlZTZcdThlZTdcdThlZThcdThlZTlcdThlZWFcdThlZWJcdThlZWNcdThlZWRcdThlZWVcdThlZWZcdThlZjBcdThlZjFcdThlZjJcdThlZjNcdThlZjRcdThlZjVcdThlZjZc'@; put 'dThlZjdcdThlZjhcdThlZjlcdThlZmFcdThlZmJcdThlZmNcdThlZmRcdThlZmVcdThlZmZcdThmMDBcdThmMDFcdThmMDJcdThmMDNcdThmMDRcdThmMDVcdThmMDZcdThmMDdcdThmMDhcdThmMDlcdThmMGFcdThmMGJcdThmMGNcdThmMGRcdThmMGVcdThmMGZcdThmMTBcdThmMTFcdThm'@; put 'MTJcdThmMTNcdThmMTRcdThmMTVcdThmMTZcdThmMTdcdThmMThcdThmMTlcdThmMWFcdThmMWJcdThmMWNcdThmMWRcdThmMWVcdThmMWZcdThmMjBcdThmMjFcdThmMjJcdThmMjNcdWZmZmRcdThmMjRcdThmMjVcdThmMjZcdThmMjdcdThmMjhcdThmMjlcdThmMmFcdThmMmJcdThmMmNc'@; put 'dThmMmRcdThmMmVcdThmMmZcdThmMzBcdThmMzFcdThmMzJcdThmMzNcdThmMzRcdThmMzVcdThmMzZcdThmMzdcdThmMzhcdThmMzlcdThmM2FcdThmM2JcdThmM2NcdThmM2RcdThmM2VcdThmM2ZcdThmNDBcdThmNDFcdThmNDJcdThmNDNcdThmNDRcdTgzNjhcdTgzMWJcdTgzNjlcdTgz'@; put 'NmNcdTgzNmFcdTgzNmRcdTgzNmVcdTgzYjBcdTgzNzhcdTgzYjNcdTgzYjRcdTgzYTBcdTgzYWFcdTgzOTNcdTgzOWNcdTgzODVcdTgzN2NcdTgzYjZcdTgzYTlcdTgzN2RcdTgzYjhcdTgzN2JcdTgzOThcdTgzOWVcdTgzYThcdTgzYmFcdTgzYmNcdTgzYzFcdTg0MDFcdTgzZTVcdTgzZDhc'@; put 'dTU4MDdcdTg0MThcdTg0MGJcdTgzZGRcdTgzZmRcdTgzZDZcdTg0MWNcdTg0MzhcdTg0MTFcdTg0MDZcdTgzZDRcdTgzZGZcdTg0MGZcdTg0MDNcdTgzZjhcdTgzZjlcdTgzZWFcdTgzYzVcdTgzYzBcdTg0MjZcdTgzZjBcdTgzZTFcdTg0NWNcdTg0NTFcdTg0NWFcdTg0NTlcdTg0NzNcdTg0'@; put 'ODdcdTg0ODhcdTg0N2FcdTg0ODlcdTg0NzhcdTg0M2NcdTg0NDZcdTg0NjlcdTg0NzZcdTg0OGNcdTg0OGVcdTg0MzFcdTg0NmRcdTg0YzFcdTg0Y2RcdTg0ZDBcdTg0ZTZcdTg0YmRcdTg0ZDNcdTg0Y2FcdTg0YmZcdTg0YmFcdTg0ZTBcdTg0YTFcdTg0YjlcdTg0YjRcdTg0OTdcdTg0ZTVc'@; put 'dTg0ZTNcdTg1MGNcdTc1MGRcdTg1MzhcdTg0ZjBcdTg1MzlcdTg1MWZcdTg1M2FcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyMV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjFdW3NdXT01NjU3NitzLGhbNTY1NzYrc109Y1syMjFdW3Nd'@; put 'KTtmb3IoY1syMjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmNDVcdThmNDZcdThmNDdcdThmNDhcdThmNDlcdThmNGFcdThmNGJcdThmNGNcdThmNGRcdThmNGVcdThmNGZcdThmNTBcdThmNTFcdThmNTJcdThmNTNcdThmNTRc'@; put 'dThmNTVcdThmNTZcdThmNTdcdThmNThcdThmNTlcdThmNWFcdThmNWJcdThmNWNcdThmNWRcdThmNWVcdThmNWZcdThmNjBcdThmNjFcdThmNjJcdThmNjNcdThmNjRcdThmNjVcdThmNmFcdThmODBcdThmOGNcdThmOTJcdThmOWRcdThmYTBcdThmYTFcdThmYTJcdThmYTRcdThmYTVcdThm'@; put 'YTZcdThmYTdcdThmYWFcdThmYWNcdThmYWRcdThmYWVcdThmYWZcdThmYjJcdThmYjNcdThmYjRcdThmYjVcdThmYjdcdThmYjhcdThmYmFcdThmYmJcdThmYmNcdThmYmZcdThmYzBcdThmYzNcdThmYzZcdWZmZmRcdThmYzlcdThmY2FcdThmY2JcdThmY2NcdThmY2RcdThmY2ZcdThmZDJc'@; put 'dThmZDZcdThmZDdcdThmZGFcdThmZTBcdThmZTFcdThmZTNcdThmZTdcdThmZWNcdThmZWZcdThmZjFcdThmZjJcdThmZjRcdThmZjVcdThmZjZcdThmZmFcdThmZmJcdThmZmNcdThmZmVcdThmZmZcdTkwMDdcdTkwMDhcdTkwMGNcdTkwMGVcdTkwMTNcdTkwMTVcdTkwMThcdTg1NTZcdTg1'@; put 'M2JcdTg0ZmZcdTg0ZmNcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjRcdTg1NWVcdTg1N2FcdTc3YTJcdTg1NDNcdTg1NzJcdTg1N2JcdTg1YTRcdTg1YThcdTg1ODdcdTg1OGZcdTg1NzlcdTg1YWVcdTg1OWNcdTg1ODVcdTg1YjlcdTg1YjdcdTg1YjBcdTg1ZDNcdTg1YzFcdTg1ZGNcdTg1ZmZc'@; put 'dTg2MjdcdTg2MDVcdTg2MjlcdTg2MTZcdTg2M2NcdTVlZmVcdTVmMDhcdTU5M2NcdTU5NDFcdTgwMzdcdTU5NTVcdTU5NWFcdTU5NThcdTUzMGZcdTVjMjJcdTVjMjVcdTVjMmNcdTVjMzRcdTYyNGNcdTYyNmFcdTYyOWZcdTYyYmJcdTYyY2FcdTYyZGFcdTYyZDdcdTYyZWVcdTYzMjJcdTYy'@; put 'ZjZcdTYzMzlcdTYzNGJcdTYzNDNcdTYzYWRcdTYzZjZcdTYzNzFcdTYzN2FcdTYzOGVcdTYzYjRcdTYzNmRcdTYzYWNcdTYzOGFcdTYzNjlcdTYzYWVcdTYzYmNcdTYzZjJcdTYzZjhcdTYzZTBcdTYzZmZcdTYzYzRcdTYzZGVcdTYzY2VcdTY0NTJcdTYzYzZcdTYzYmVcdTY0NDVcdTY0NDFc'@; put 'dTY0MGJcdTY0MWJcdTY0MjBcdTY0MGNcdTY0MjZcdTY0MjFcdTY0NWVcdTY0ODRcdTY0NmRcdTY0OTZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyMl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjJdW3NdXT01NjgzMitzLGhbNTY4MzIr'@; put 'c109Y1syMjJdW3NdKTtmb3IoY1syMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwMTlcdTkwMWNcdTkwMjNcdTkwMjRcdTkwMjVcdTkwMjdcdTkwMjhcdTkwMjlcdTkwMmFcdTkwMmJcdTkwMmNcdTkwMzBcdTkwMzFcdTkwMzJc'@; put 'dTkwMzNcdTkwMzRcdTkwMzdcdTkwMzlcdTkwM2FcdTkwM2RcdTkwM2ZcdTkwNDBcdTkwNDNcdTkwNDVcdTkwNDZcdTkwNDhcdTkwNDlcdTkwNGFcdTkwNGJcdTkwNGNcdTkwNGVcdTkwNTRcdTkwNTVcdTkwNTZcdTkwNTlcdTkwNWFcdTkwNWNcdTkwNWRcdTkwNWVcdTkwNWZcdTkwNjBcdTkw'@; put 'NjFcdTkwNjRcdTkwNjZcdTkwNjdcdTkwNjlcdTkwNmFcdTkwNmJcdTkwNmNcdTkwNmZcdTkwNzBcdTkwNzFcdTkwNzJcdTkwNzNcdTkwNzZcdTkwNzdcdTkwNzhcdTkwNzlcdTkwN2FcdTkwN2JcdTkwN2NcdTkwN2VcdTkwODFcdWZmZmRcdTkwODRcdTkwODVcdTkwODZcdTkwODdcdTkwODlc'@; put 'dTkwOGFcdTkwOGNcdTkwOGRcdTkwOGVcdTkwOGZcdTkwOTBcdTkwOTJcdTkwOTRcdTkwOTZcdTkwOThcdTkwOWFcdTkwOWNcdTkwOWVcdTkwOWZcdTkwYTBcdTkwYTRcdTkwYTVcdTkwYTdcdTkwYThcdTkwYTlcdTkwYWJcdTkwYWRcdTkwYjJcdTkwYjdcdTkwYmNcdTkwYmRcdTkwYmZcdTkw'@; put 'YzBcdTY0N2FcdTY0YjdcdTY0YjhcdTY0OTlcdTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVmMTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUzZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJc'@; put 'dTU0NTJcdTU0NTNcdTU0NTRcdTU0NTZcdTU0NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJcdTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRcdTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0'@; put 'YTZcdTU0ZDNcdTU0ZDRcdTU0NzJcdTU0YTNcdTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFc'@; put 'dTU1MjdcdTU1MmFcdTU1NjdcdTU1OGZcdTU1YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2NcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyM11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjNdW3NdXT01NzA4'@; put 'OCtzLGhbNTcwODgrc109Y1syMjNdW3NdKTtmb3IoY1syMjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwYzJcdTkwYzNcdTkwYzZcdTkwYzhcdTkwYzlcdTkwY2JcdTkwY2NcdTkwY2RcdTkwZDJcdTkwZDRcdTkwZDVcdTkwZDZc'@; put 'dTkwZDhcdTkwZDlcdTkwZGFcdTkwZGVcdTkwZGZcdTkwZTBcdTkwZTNcdTkwZTRcdTkwZTVcdTkwZTlcdTkwZWFcdTkwZWNcdTkwZWVcdTkwZjBcdTkwZjFcdTkwZjJcdTkwZjNcdTkwZjVcdTkwZjZcdTkwZjdcdTkwZjlcdTkwZmFcdTkwZmJcdTkwZmNcdTkwZmZcdTkxMDBcdTkxMDFcdTkx'@; put 'MDNcdTkxMDVcdTkxMDZcdTkxMDdcdTkxMDhcdTkxMDlcdTkxMGFcdTkxMGJcdTkxMGNcdTkxMGRcdTkxMGVcdTkxMGZcdTkxMTBcdTkxMTFcdTkxMTJcdTkxMTNcdTkxMTRcdTkxMTVcdTkxMTZcdTkxMTdcdTkxMThcdTkxMWFcdTkxMWJcdTkxMWNcdWZmZmRcdTkxMWRcdTkxMWZcdTkxMjBc'@; put 'dTkxMjFcdTkxMjRcdTkxMjVcdTkxMjZcdTkxMjdcdTkxMjhcdTkxMjlcdTkxMmFcdTkxMmJcdTkxMmNcdTkxMmRcdTkxMmVcdTkxMzBcdTkxMzJcdTkxMzNcdTkxMzRcdTkxMzVcdTkxMzZcdTkxMzdcdTkxMzhcdTkxM2FcdTkxM2JcdTkxM2NcdTkxM2RcdTkxM2VcdTkxM2ZcdTkxNDBcdTkx'@; put 'NDFcdTkxNDJcdTkxNDRcdTU1MzdcdTU1NTZcdTU1NzVcdTU1NzZcdTU1NzdcdTU1MzNcdTU1MzBcdTU1NWNcdTU1OGJcdTU1ZDJcdTU1ODNcdTU1YjFcdTU1YjlcdTU1ODhcdTU1ODFcdTU1OWZcdTU1N2VcdTU1ZDZcdTU1OTFcdTU1N2JcdTU1ZGZcdTU1YmRcdTU1YmVcdTU1OTRcdTU1OTlc'@; put 'dTU1ZWFcdTU1ZjdcdTU1YzlcdTU2MWZcdTU1ZDFcdTU1ZWJcdTU1ZWNcdTU1ZDRcdTU1ZTZcdTU1ZGRcdTU1YzRcdTU1ZWZcdTU1ZTVcdTU1ZjJcdTU1ZjNcdTU1Y2NcdTU1Y2RcdTU1ZThcdTU1ZjVcdTU1ZTRcdThmOTRcdTU2MWVcdTU2MDhcdTU2MGNcdTU2MDFcdTU2MjRcdTU2MjNcdTU1'@; put 'ZmVcdTU2MDBcdTU2MjdcdTU2MmRcdTU2NThcdTU2MzlcdTU2NTdcdTU2MmNcdTU2NGRcdTU2NjJcdTU2NTlcdTU2NWNcdTU2NGNcdTU2NTRcdTU2ODZcdTU2NjRcdTU2NzFcdTU2NmJcdTU2N2JcdTU2N2NcdTU2ODVcdTU2OTNcdTU2YWZcdTU2ZDRcdTU2ZDdcdTU2ZGRcdTU2ZTFcdTU2ZjVc'@; put 'dTU2ZWJcdTU2ZjlcdTU2ZmZcdTU3MDRcdTU3MGFcdTU3MDlcdTU3MWNcdTVlMGZcdTVlMTlcdTVlMTRcdTVlMTFcdTVlMzFcdTVlM2JcdTVlM2NcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyNF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sy'@; put 'MjRdW3NdXT01NzM0NCtzLGhbNTczNDQrc109Y1syMjRdW3NdKTtmb3IoY1syMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkxNDVcdTkxNDdcdTkxNDhcdTkxNTFcdTkxNTNcdTkxNTRcdTkxNTVcdTkxNTZcdTkxNThcdTkxNTlc'@; put 'dTkxNWJcdTkxNWNcdTkxNWZcdTkxNjBcdTkxNjZcdTkxNjdcdTkxNjhcdTkxNmJcdTkxNmRcdTkxNzNcdTkxN2FcdTkxN2JcdTkxN2NcdTkxODBcdTkxODFcdTkxODJcdTkxODNcdTkxODRcdTkxODZcdTkxODhcdTkxOGFcdTkxOGVcdTkxOGZcdTkxOTNcdTkxOTRcdTkxOTVcdTkxOTZcdTkx'@; put 'OTdcdTkxOThcdTkxOTlcdTkxOWNcdTkxOWRcdTkxOWVcdTkxOWZcdTkxYTBcdTkxYTFcdTkxYTRcdTkxYTVcdTkxYTZcdTkxYTdcdTkxYThcdTkxYTlcdTkxYWJcdTkxYWNcdTkxYjBcdTkxYjFcdTkxYjJcdTkxYjNcdTkxYjZcdTkxYjdcdTkxYjhcdTkxYjlcdTkxYmJcdWZmZmRcdTkxYmNc'@; put 'dTkxYmRcdTkxYmVcdTkxYmZcdTkxYzBcdTkxYzFcdTkxYzJcdTkxYzNcdTkxYzRcdTkxYzVcdTkxYzZcdTkxYzhcdTkxY2JcdTkxZDBcdTkxZDJcdTkxZDNcdTkxZDRcdTkxZDVcdTkxZDZcdTkxZDdcdTkxZDhcdTkxZDlcdTkxZGFcdTkxZGJcdTkxZGRcdTkxZGVcdTkxZGZcdTkxZTBcdTkx'@; put 'ZTFcdTkxZTJcdTkxZTNcdTkxZTRcdTkxZTVcdTVlMzdcdTVlNDRcdTVlNTRcdTVlNWJcdTVlNWVcdTVlNjFcdTVjOGNcdTVjN2FcdTVjOGRcdTVjOTBcdTVjOTZcdTVjODhcdTVjOThcdTVjOTlcdTVjOTFcdTVjOWFcdTVjOWNcdTVjYjVcdTVjYTJcdTVjYmRcdTVjYWNcdTVjYWJcdTVjYjFc'@; put 'dTVjYTNcdTVjYzFcdTVjYjdcdTVjYzRcdTVjZDJcdTVjZTRcdTVjY2JcdTVjZTVcdTVkMDJcdTVkMDNcdTVkMjdcdTVkMjZcdTVkMmVcdTVkMjRcdTVkMWVcdTVkMDZcdTVkMWJcdTVkNThcdTVkM2VcdTVkMzRcdTVkM2RcdTVkNmNcdTVkNWJcdTVkNmZcdTVkNWRcdTVkNmJcdTVkNGJcdTVk'@; put 'NGFcdTVkNjlcdTVkNzRcdTVkODJcdTVkOTlcdTVkOWRcdThjNzNcdTVkYjdcdTVkYzVcdTVmNzNcdTVmNzdcdTVmODJcdTVmODdcdTVmODlcdTVmOGNcdTVmOTVcdTVmOTlcdTVmOWNcdTVmYThcdTVmYWRcdTVmYjVcdTVmYmNcdTg4NjJcdTVmNjFcdTcyYWRcdTcyYjBcdTcyYjRcdTcyYjdc'@; put 'dTcyYjhcdTcyYzNcdTcyYzFcdTcyY2VcdTcyY2RcdTcyZDJcdTcyZThcdTcyZWZcdTcyZTlcdTcyZjJcdTcyZjRcdTcyZjdcdTczMDFcdTcyZjNcdTczMDNcdTcyZmFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyNV1bc10uY2hhckNvZGVB'@; put 'dCgwKSYmKHlbY1syMjVdW3NdXT01NzYwMCtzLGhbNTc2MDArc109Y1syMjVdW3NdKTtmb3IoY1syMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkxZTZcdTkxZTdcdTkxZThcdTkxZTlcdTkxZWFcdTkxZWJcdTkxZWNcdTkxZWRc'@; put 'dTkxZWVcdTkxZWZcdTkxZjBcdTkxZjFcdTkxZjJcdTkxZjNcdTkxZjRcdTkxZjVcdTkxZjZcdTkxZjdcdTkxZjhcdTkxZjlcdTkxZmFcdTkxZmJcdTkxZmNcdTkxZmRcdTkxZmVcdTkxZmZcdTkyMDBcdTkyMDFcdTkyMDJcdTkyMDNcdTkyMDRcdTkyMDVcdTkyMDZcdTkyMDdcdTkyMDhcdTky'@; put 'MDlcdTkyMGFcdTkyMGJcdTkyMGNcdTkyMGRcdTkyMGVcdTkyMGZcdTkyMTBcdTkyMTFcdTkyMTJcdTkyMTNcdTkyMTRcdTkyMTVcdTkyMTZcdTkyMTdcdTkyMThcdTkyMTlcdTkyMWFcdTkyMWJcdTkyMWNcdTkyMWRcdTkyMWVcdTkyMWZcdTkyMjBcdTkyMjFcdTkyMjJcdTkyMjNcdTkyMjRc'@; put 'dWZmZmRcdTkyMjVcdTkyMjZcdTkyMjdcdTkyMjhcdTkyMjlcdTkyMmFcdTkyMmJcdTkyMmNcdTkyMmRcdTkyMmVcdTkyMmZcdTkyMzBcdTkyMzFcdTkyMzJcdTkyMzNcdTkyMzRcdTkyMzVcdTkyMzZcdTkyMzdcdTkyMzhcdTkyMzlcdTkyM2FcdTkyM2JcdTkyM2NcdTkyM2RcdTkyM2VcdTky'@; put 'M2ZcdTkyNDBcdTkyNDFcdTkyNDJcdTkyNDNcdTkyNDRcdTkyNDVcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlcdTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTczN2Vc'@; put 'dTgyMWJcdTU5MjVcdTk4ZTdcdTU5MjRcdTU5MDJcdTk5NjNcdTk5NjdcdTk5NjhcdTk5NjlcdTk5NmFcdTk5NmJcdTk5NmNcdTk5NzRcdTk5NzdcdTk5N2RcdTk5ODBcdTk5ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFcdTVl'@; put 'OGJcdTVlOTZcdTVlYTVcdTVlYTBcdTVlYjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVlZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRcdTVmYzlcdTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVmZWFc'@; put 'dTVmZWRcdTVmZjhcdTYwMTlcdTYwMzVcdTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlcdTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYwN2JcdTYwN2FcdTYwNDJcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyNl1b'@; put 'c10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjZdW3NdXT01Nzg1NitzLGhbNTc4NTYrc109Y1syMjZdW3NdKTtmb3IoY1syMjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkyNDZcdTkyNDdcdTkyNDhcdTkyNDlcdTkyNGFcdTkyNGJc'@; put 'dTkyNGNcdTkyNGRcdTkyNGVcdTkyNGZcdTkyNTBcdTkyNTFcdTkyNTJcdTkyNTNcdTkyNTRcdTkyNTVcdTkyNTZcdTkyNTdcdTkyNThcdTkyNTlcdTkyNWFcdTkyNWJcdTkyNWNcdTkyNWRcdTkyNWVcdTkyNWZcdTkyNjBcdTkyNjFcdTkyNjJcdTkyNjNcdTkyNjRcdTkyNjVcdTkyNjZcdTky'@; put 'NjdcdTkyNjhcdTkyNjlcdTkyNmFcdTkyNmJcdTkyNmNcdTkyNmRcdTkyNmVcdTkyNmZcdTkyNzBcdTkyNzFcdTkyNzJcdTkyNzNcdTkyNzVcdTkyNzZcdTkyNzdcdTkyNzhcdTkyNzlcdTkyN2FcdTkyN2JcdTkyN2NcdTkyN2RcdTkyN2VcdTkyN2ZcdTkyODBcdTkyODFcdTkyODJcdTkyODNc'@; put 'dTkyODRcdTkyODVcdWZmZmRcdTkyODZcdTkyODdcdTkyODhcdTkyODlcdTkyOGFcdTkyOGJcdTkyOGNcdTkyOGRcdTkyOGZcdTkyOTBcdTkyOTFcdTkyOTJcdTkyOTNcdTkyOTRcdTkyOTVcdTkyOTZcdTkyOTdcdTkyOThcdTkyOTlcdTkyOWFcdTkyOWJcdTkyOWNcdTkyOWRcdTkyOWVcdTky'@; put 'OWZcdTkyYTBcdTkyYTFcdTkyYTJcdTkyYTNcdTkyYTRcdTkyYTVcdTkyYTZcdTkyYTdcdTYwNmFcdTYwN2RcdTYwOTZcdTYwOWFcdTYwYWRcdTYwOWRcdTYwODNcdTYwOTJcdTYwOGNcdTYwOWJcdTYwZWNcdTYwYmJcdTYwYjFcdTYwZGRcdTYwZDhcdTYwYzZcdTYwZGFcdTYwYjRcdTYxMjBc'@; put 'dTYxMjZcdTYxMTVcdTYxMjNcdTYwZjRcdTYxMDBcdTYxMGVcdTYxMmJcdTYxNGFcdTYxNzVcdTYxYWNcdTYxOTRcdTYxYTdcdTYxYjdcdTYxZDRcdTYxZjVcdTVmZGRcdTk2YjNcdTk1ZTlcdTk1ZWJcdTk1ZjFcdTk1ZjNcdTk1ZjVcdTk1ZjZcdTk1ZmNcdTk1ZmVcdTk2MDNcdTk2MDRcdTk2'@; put 'MDZcdTk2MDhcdTk2MGFcdTk2MGJcdTk2MGNcdTk2MGRcdTk2MGZcdTk2MTJcdTk2MTVcdTk2MTZcdTk2MTdcdTk2MTlcdTk2MWFcdTRlMmNcdTcyM2ZcdTYyMTVcdTZjMzVcdTZjNTRcdTZjNWNcdTZjNGFcdTZjYTNcdTZjODVcdTZjOTBcdTZjOTRcdTZjOGNcdTZjNjhcdTZjNjlcdTZjNzRc'@; put 'dTZjNzZcdTZjODZcdTZjYTlcdTZjZDBcdTZjZDRcdTZjYWRcdTZjZjdcdTZjZjhcdTZjZjFcdTZjZDdcdTZjYjJcdTZjZTBcdTZjZDZcdTZjZmFcdTZjZWJcdTZjZWVcdTZjYjFcdTZjZDNcdTZjZWZcdTZjZmVcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjddLmxlbmd0aDsrK3MpNjU1'@; put 'MzMhPT1jWzIyN11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjddW3NdXT01ODExMitzLGhbNTgxMTIrc109Y1syMjddW3NdKTtmb3IoY1syMjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkyYThcdTkyYTlcdTkyYWFcdTkyYWJc'@; put 'dTkyYWNcdTkyYWRcdTkyYWZcdTkyYjBcdTkyYjFcdTkyYjJcdTkyYjNcdTkyYjRcdTkyYjVcdTkyYjZcdTkyYjdcdTkyYjhcdTkyYjlcdTkyYmFcdTkyYmJcdTkyYmNcdTkyYmRcdTkyYmVcdTkyYmZcdTkyYzBcdTkyYzFcdTkyYzJcdTkyYzNcdTkyYzRcdTkyYzVcdTkyYzZcdTkyYzdcdTky'@; put 'YzlcdTkyY2FcdTkyY2JcdTkyY2NcdTkyY2RcdTkyY2VcdTkyY2ZcdTkyZDBcdTkyZDFcdTkyZDJcdTkyZDNcdTkyZDRcdTkyZDVcdTkyZDZcdTkyZDdcdTkyZDhcdTkyZDlcdTkyZGFcdTkyZGJcdTkyZGNcdTkyZGRcdTkyZGVcdTkyZGZcdTkyZTBcdTkyZTFcdTkyZTJcdTkyZTNcdTkyZTRc'@; put 'dTkyZTVcdTkyZTZcdTkyZTdcdTkyZThcdWZmZmRcdTkyZTlcdTkyZWFcdTkyZWJcdTkyZWNcdTkyZWRcdTkyZWVcdTkyZWZcdTkyZjBcdTkyZjFcdTkyZjJcdTkyZjNcdTkyZjRcdTkyZjVcdTkyZjZcdTkyZjdcdTkyZjhcdTkyZjlcdTkyZmFcdTkyZmJcdTkyZmNcdTkyZmRcdTkyZmVcdTky'@; put 'ZmZcdTkzMDBcdTkzMDFcdTkzMDJcdTkzMDNcdTkzMDRcdTkzMDVcdTkzMDZcdTkzMDdcdTkzMDhcdTkzMDlcdTZkMzlcdTZkMjdcdTZkMGNcdTZkNDNcdTZkNDhcdTZkMDdcdTZkMDRcdTZkMTlcdTZkMGVcdTZkMmJcdTZkNGRcdTZkMmVcdTZkMzVcdTZkMWFcdTZkNGZcdTZkNTJcdTZkNTRc'@; put 'dTZkMzNcdTZkOTFcdTZkNmZcdTZkOWVcdTZkYTBcdTZkNWVcdTZkOTNcdTZkOTRcdTZkNWNcdTZkNjBcdTZkN2NcdTZkNjNcdTZlMWFcdTZkYzdcdTZkYzVcdTZkZGVcdTZlMGVcdTZkYmZcdTZkZTBcdTZlMTFcdTZkZTZcdTZkZGRcdTZkZDlcdTZlMTZcdTZkYWJcdTZlMGNcdTZkYWVcdTZl'@; put 'MmJcdTZlNmVcdTZlNGVcdTZlNmJcdTZlYjJcdTZlNWZcdTZlODZcdTZlNTNcdTZlNTRcdTZlMzJcdTZlMjVcdTZlNDRcdTZlZGZcdTZlYjFcdTZlOThcdTZlZTBcdTZmMmRcdTZlZTJcdTZlYTVcdTZlYTdcdTZlYmRcdTZlYmJcdTZlYjdcdTZlZDdcdTZlYjRcdTZlY2ZcdTZlOGZcdTZlYzJc'@; put 'dTZlOWZcdTZmNjJcdTZmNDZcdTZmNDdcdTZmMjRcdTZmMTVcdTZlZjlcdTZmMmZcdTZmMzZcdTZmNGJcdTZmNzRcdTZmMmFcdTZmMDlcdTZmMjlcdTZmODlcdTZmOGRcdTZmOGNcdTZmNzhcdTZmNzJcdTZmN2NcdTZmN2FcdTZmZDFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMjhdLmxl'@; put 'bmd0aDsrK3MpNjU1MzMhPT1jWzIyOF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjhdW3NdXT01ODM2OCtzLGhbNTgzNjgrc109Y1syMjhdW3NdKTtmb3IoY1syMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMGFcdTkzMGJc'@; put 'dTkzMGNcdTkzMGRcdTkzMGVcdTkzMGZcdTkzMTBcdTkzMTFcdTkzMTJcdTkzMTNcdTkzMTRcdTkzMTVcdTkzMTZcdTkzMTdcdTkzMThcdTkzMTlcdTkzMWFcdTkzMWJcdTkzMWNcdTkzMWRcdTkzMWVcdTkzMWZcdTkzMjBcdTkzMjFcdTkzMjJcdTkzMjNcdTkzMjRcdTkzMjVcdTkzMjZcdTkz'@; put 'MjdcdTkzMjhcdTkzMjlcdTkzMmFcdTkzMmJcdTkzMmNcdTkzMmRcdTkzMmVcdTkzMmZcdTkzMzBcdTkzMzFcdTkzMzJcdTkzMzNcdTkzMzRcdTkzMzVcdTkzMzZcdTkzMzdcdTkzMzhcdTkzMzlcdTkzM2FcdTkzM2JcdTkzM2NcdTkzM2RcdTkzM2ZcdTkzNDBcdTkzNDFcdTkzNDJcdTkzNDNc'@; put 'dTkzNDRcdTkzNDVcdTkzNDZcdTkzNDdcdTkzNDhcdTkzNDlcdWZmZmRcdTkzNGFcdTkzNGJcdTkzNGNcdTkzNGRcdTkzNGVcdTkzNGZcdTkzNTBcdTkzNTFcdTkzNTJcdTkzNTNcdTkzNTRcdTkzNTVcdTkzNTZcdTkzNTdcdTkzNThcdTkzNTlcdTkzNWFcdTkzNWJcdTkzNWNcdTkzNWRcdTkz'@; put 'NWVcdTkzNWZcdTkzNjBcdTkzNjFcdTkzNjJcdTkzNjNcdTkzNjRcdTkzNjVcdTkzNjZcdTkzNjdcdTkzNjhcdTkzNjlcdTkzNmJcdTZmYzlcdTZmYTdcdTZmYjlcdTZmYjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcwMzlcdTcwMzVc'@; put 'dTcwNGZcdTcwNWVcdTViODBcdTViODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdcdThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNcdThmZThcdTkw'@; put 'MDVcdTkwMDRcdTkwMGJcdTkwMjZcdTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkwNjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkwOGJcdTVmNTBc'@; put 'dTVmNTdcdTVmNTZcdTVmNThcdTVjM2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2NcdTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7'@; put 'cyE9Y1syMjldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIyOV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMjldW3NdXT01ODYyNCtzLGhbNTg2MjQrc109Y1syMjldW3NdKTtmb3IoY1syMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dTkzNmNcdTkzNmRcdTkzNmVcdTkzNmZcdTkzNzBcdTkzNzFcdTkzNzJcdTkzNzNcdTkzNzRcdTkzNzVcdTkzNzZcdTkzNzdcdTkzNzhcdTkzNzlcdTkzN2FcdTkzN2JcdTkzN2NcdTkzN2RcdTkzN2VcdTkzN2ZcdTkzODBcdTkzODFcdTkzODJcdTkzODNcdTkzODRcdTkzODVcdTkzODZcdTkz'@; put 'ODdcdTkzODhcdTkzODlcdTkzOGFcdTkzOGJcdTkzOGNcdTkzOGRcdTkzOGVcdTkzOTBcdTkzOTFcdTkzOTJcdTkzOTNcdTkzOTRcdTkzOTVcdTkzOTZcdTkzOTdcdTkzOThcdTkzOTlcdTkzOWFcdTkzOWJcdTkzOWNcdTkzOWRcdTkzOWVcdTkzOWZcdTkzYTBcdTkzYTFcdTkzYTJcdTkzYTNc'@; put 'dTkzYTRcdTkzYTVcdTkzYTZcdTkzYTdcdTkzYThcdTkzYTlcdTkzYWFcdTkzYWJcdWZmZmRcdTkzYWNcdTkzYWRcdTkzYWVcdTkzYWZcdTkzYjBcdTkzYjFcdTkzYjJcdTkzYjNcdTkzYjRcdTkzYjVcdTkzYjZcdTkzYjdcdTkzYjhcdTkzYjlcdTkzYmFcdTkzYmJcdTkzYmNcdTkzYmRcdTkz'@; put 'YmVcdTkzYmZcdTkzYzBcdTkzYzFcdTkzYzJcdTkzYzNcdTkzYzRcdTkzYzVcdTkzYzZcdTkzYzdcdTkzYzhcdTkzYzlcdTkzY2JcdTkzY2NcdTkzY2RcdTU5OTdcdTU5Y2FcdTU5YWJcdTU5OWVcdTU5YTRcdTU5ZDJcdTU5YjJcdTU5YWZcdTU5ZDdcdTU5YmVcdTVhMDVcdTVhMDZcdTU5ZGRc'@; put 'dTVhMDhcdTU5ZTNcdTU5ZDhcdTU5ZjlcdTVhMGNcdTVhMDlcdTVhMzJcdTVhMzRcdTVhMTFcdTVhMjNcdTVhMTNcdTVhNDBcdTVhNjdcdTVhNGFcdTVhNTVcdTVhM2NcdTVhNjJcdTVhNzVcdTgwZWNcdTVhYWFcdTVhOWJcdTVhNzdcdTVhN2FcdTVhYmVcdTVhZWJcdTVhYjJcdTVhZDJcdTVh'@; put 'ZDRcdTVhYjhcdTVhZTBcdTVhZTNcdTVhZjFcdTVhZDZcdTVhZTZcdTVhZDhcdTVhZGNcdTViMDlcdTViMTdcdTViMTZcdTViMzJcdTViMzdcdTViNDBcdTVjMTVcdTVjMWNcdTViNWFcdTViNjVcdTViNzNcdTViNTFcdTViNTNcdTViNjJcdTlhNzVcdTlhNzdcdTlhNzhcdTlhN2FcdTlhN2Zc'@; put 'dTlhN2RcdTlhODBcdTlhODFcdTlhODVcdTlhODhcdTlhOGFcdTlhOTBcdTlhOTJcdTlhOTNcdTlhOTZcdTlhOThcdTlhOWJcdTlhOWNcdTlhOWRcdTlhOWZcdTlhYTBcdTlhYTJcdTlhYTNcdTlhYTVcdTlhYTdcdTdlOWZcdTdlYTFcdTdlYTNcdTdlYTVcdTdlYThcdTdlYTlcdWZmZmQiLnNw'@; put 'bGl0KCIiKSxzPTA7cyE9Y1syMzBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzMF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzBdW3NdXT01ODg4MCtzLGhbNTg4ODArc109Y1syMzBdW3NdKTtmb3IoY1syMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdTkzY2VcdTkzY2ZcdTkzZDBcdTkzZDFcdTkzZDJcdTkzZDNcdTkzZDRcdTkzZDVcdTkzZDdcdTkzZDhcdTkzZDlcdTkzZGFcdTkzZGJcdTkzZGNcdTkzZGRcdTkzZGVcdTkzZGZcdTkzZTBcdTkzZTFcdTkzZTJcdTkzZTNcdTkzZTRcdTkzZTVcdTkzZTZcdTkzZTdcdTkz'@; put 'ZThcdTkzZTlcdTkzZWFcdTkzZWJcdTkzZWNcdTkzZWRcdTkzZWVcdTkzZWZcdTkzZjBcdTkzZjFcdTkzZjJcdTkzZjNcdTkzZjRcdTkzZjVcdTkzZjZcdTkzZjdcdTkzZjhcdTkzZjlcdTkzZmFcdTkzZmJcdTkzZmNcdTkzZmRcdTkzZmVcdTkzZmZcdTk0MDBcdTk0MDFcdTk0MDJcdTk0MDNc'@; put 'dTk0MDRcdTk0MDVcdTk0MDZcdTk0MDdcdTk0MDhcdTk0MDlcdTk0MGFcdTk0MGJcdTk0MGNcdTk0MGRcdWZmZmRcdTk0MGVcdTk0MGZcdTk0MTBcdTk0MTFcdTk0MTJcdTk0MTNcdTk0MTRcdTk0MTVcdTk0MTZcdTk0MTdcdTk0MThcdTk0MTlcdTk0MWFcdTk0MWJcdTk0MWNcdTk0MWRcdTk0'@; put 'MWVcdTk0MWZcdTk0MjBcdTk0MjFcdTk0MjJcdTk0MjNcdTk0MjRcdTk0MjVcdTk0MjZcdTk0MjdcdTk0MjhcdTk0MjlcdTk0MmFcdTk0MmJcdTk0MmNcdTk0MmRcdTk0MmVcdTdlYWRcdTdlYjBcdTdlYmVcdTdlYzBcdTdlYzFcdTdlYzJcdTdlYzlcdTdlY2JcdTdlY2NcdTdlZDBcdTdlZDRc'@; put 'dTdlZDdcdTdlZGJcdTdlZTBcdTdlZTFcdTdlZThcdTdlZWJcdTdlZWVcdTdlZWZcdTdlZjFcdTdlZjJcdTdmMGRcdTdlZjZcdTdlZmFcdTdlZmJcdTdlZmVcdTdmMDFcdTdmMDJcdTdmMDNcdTdmMDdcdTdmMDhcdTdmMGJcdTdmMGNcdTdmMGZcdTdmMTFcdTdmMTJcdTdmMTdcdTdmMTlcdTdm'@; put 'MWNcdTdmMWJcdTdmMWZcdTdmMjFcdTdmMjJcdTdmMjNcdTdmMjRcdTdmMjVcdTdmMjZcdTdmMjdcdTdmMmFcdTdmMmJcdTdmMmNcdTdmMmRcdTdmMmZcdTdmMzBcdTdmMzFcdTdmMzJcdTdmMzNcdTdmMzVcdTVlN2FcdTc1N2ZcdTVkZGJcdTc1M2VcdTkwOTVcdTczOGVcdTczOTFcdTczYWVc'@; put 'dTczYTJcdTczOWZcdTczY2ZcdTczYzJcdTczZDFcdTczYjdcdTczYjNcdTczYzBcdTczYzlcdTczYzhcdTczZTVcdTczZDlcdTk4N2NcdTc0MGFcdTczZTlcdTczZTdcdTczZGVcdTczYmFcdTczZjJcdTc0MGZcdTc0MmFcdTc0NWJcdTc0MjZcdTc0MjVcdTc0MjhcdTc0MzBcdTc0MmVcdTc0'@; put 'MmNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzMV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzFdW3NdXT01OTEzNitzLGhbNTkxMzYrc109Y1syMzFdW3NdKTtmb3IoY1syMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0MmZcdTk0MzBcdTk0MzFcdTk0MzJcdTk0MzNcdTk0MzRcdTk0MzVcdTk0MzZcdTk0MzdcdTk0MzhcdTk0MzlcdTk0M2FcdTk0M2JcdTk0M2NcdTk0M2RcdTk0M2ZcdTk0NDBcdTk0NDFcdTk0NDJcdTk0NDNcdTk0NDRcdTk0NDVcdTk0NDZcdTk0'@; put 'NDdcdTk0NDhcdTk0NDlcdTk0NGFcdTk0NGJcdTk0NGNcdTk0NGRcdTk0NGVcdTk0NGZcdTk0NTBcdTk0NTFcdTk0NTJcdTk0NTNcdTk0NTRcdTk0NTVcdTk0NTZcdTk0NTdcdTk0NThcdTk0NTlcdTk0NWFcdTk0NWJcdTk0NWNcdTk0NWRcdTk0NWVcdTk0NWZcdTk0NjBcdTk0NjFcdTk0NjJc'@; put 'dTk0NjNcdTk0NjRcdTk0NjVcdTk0NjZcdTk0NjdcdTk0NjhcdTk0NjlcdTk0NmFcdTk0NmNcdTk0NmRcdTk0NmVcdTk0NmZcdWZmZmRcdTk0NzBcdTk0NzFcdTk0NzJcdTk0NzNcdTk0NzRcdTk0NzVcdTk0NzZcdTk0NzdcdTk0NzhcdTk0NzlcdTk0N2FcdTk0N2JcdTk0N2NcdTk0N2RcdTk0'@; put 'N2VcdTk0N2ZcdTk0ODBcdTk0ODFcdTk0ODJcdTk0ODNcdTk0ODRcdTk0OTFcdTk0OTZcdTk0OThcdTk0YzdcdTk0Y2ZcdTk0ZDNcdTk0ZDRcdTk0ZGFcdTk0ZTZcdTk0ZmJcdTk1MWNcdTk1MjBcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0NzdcdTc0NmRc'@; put 'dTc0N2VcdTc0OWNcdTc0OGVcdTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJcdTc0YmFcdTk3ZWFcdTk3ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNcdTY3OThcdTY3'@; put 'YTdcdTY3NzVcdTY3YThcdTY3OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3YjBcdTY4MGNcdTY3ZDlcdTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3ZmRcdTY4MzJc'@; put 'dTY4MzNcdTY4NjBcdTY4NjFcdTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4NjdcdTY4NDBcdTY4M2VcdTY4NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVcdTY4ZmNcdTY5'@; put 'MWZcdTY5MjBcdTY4ZjlcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzJdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzMl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzJdW3NdXT01OTM5MitzLGhbNTkzOTIrc109Y1syMzJdW3NdKTtmb3IoY1syMzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk1MjdcdTk1MzNcdTk1M2RcdTk1NDNcdTk1NDhcdTk1NGJcdTk1NTVcdTk1NWFcdTk1NjBcdTk1NmVcdTk1NzRcdTk1NzVcdTk1NzdcdTk1NzhcdTk1NzlcdTk1N2FcdTk1N2JcdTk1N2NcdTk1N2RcdTk1N2VcdTk1ODBcdTk1'@; put 'ODFcdTk1ODJcdTk1ODNcdTk1ODRcdTk1ODVcdTk1ODZcdTk1ODdcdTk1ODhcdTk1ODlcdTk1OGFcdTk1OGJcdTk1OGNcdTk1OGRcdTk1OGVcdTk1OGZcdTk1OTBcdTk1OTFcdTk1OTJcdTk1OTNcdTk1OTRcdTk1OTVcdTk1OTZcdTk1OTdcdTk1OThcdTk1OTlcdTk1OWFcdTk1OWJcdTk1OWNc'@; put 'dTk1OWRcdTk1OWVcdTk1OWZcdTk1YTBcdTk1YTFcdTk1YTJcdTk1YTNcdTk1YTRcdTk1YTVcdTk1YTZcdTk1YTdcdTk1YThcdTk1YTlcdTk1YWFcdWZmZmRcdTk1YWJcdTk1YWNcdTk1YWRcdTk1YWVcdTk1YWZcdTk1YjBcdTk1YjFcdTk1YjJcdTk1YjNcdTk1YjRcdTk1YjVcdTk1YjZcdTk1'@; put 'YjdcdTk1YjhcdTk1YjlcdTk1YmFcdTk1YmJcdTk1YmNcdTk1YmRcdTk1YmVcdTk1YmZcdTk1YzBcdTk1YzFcdTk1YzJcdTk1YzNcdTk1YzRcdTk1YzVcdTk1YzZcdTk1YzdcdTk1YzhcdTk1YzlcdTk1Y2FcdTk1Y2JcdTY5MjRcdTY4ZjBcdTY5MGJcdTY5MDFcdTY5NTdcdTY4ZTNcdTY5MTBc'@; put 'dTY5NzFcdTY5MzlcdTY5NjBcdTY5NDJcdTY5NWRcdTY5ODRcdTY5NmJcdTY5ODBcdTY5OThcdTY5NzhcdTY5MzRcdTY5Y2NcdTY5ODdcdTY5ODhcdTY5Y2VcdTY5ODlcdTY5NjZcdTY5NjNcdTY5NzlcdTY5OWJcdTY5YTdcdTY5YmJcdTY5YWJcdTY5YWRcdTY5ZDRcdTY5YjFcdTY5YzFcdTY5'@; put 'Y2FcdTY5ZGZcdTY5OTVcdTY5ZTBcdTY5OGRcdTY5ZmZcdTZhMmZcdTY5ZWRcdTZhMTdcdTZhMThcdTZhNjVcdTY5ZjJcdTZhNDRcdTZhM2VcdTZhYTBcdTZhNTBcdTZhNWJcdTZhMzVcdTZhOGVcdTZhNzlcdTZhM2RcdTZhMjhcdTZhNThcdTZhN2NcdTZhOTFcdTZhOTBcdTZhYTlcdTZhOTdc'@; put 'dTZhYWJcdTczMzdcdTczNTJcdTZiODFcdTZiODJcdTZiODdcdTZiODRcdTZiOTJcdTZiOTNcdTZiOGRcdTZiOWFcdTZiOWJcdTZiYTFcdTZiYWFcdThmNmJcdThmNmRcdThmNzFcdThmNzJcdThmNzNcdThmNzVcdThmNzZcdThmNzhcdThmNzdcdThmNzlcdThmN2FcdThmN2NcdThmN2VcdThm'@; put 'ODFcdThmODJcdThmODRcdThmODdcdThmOGJcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzM11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzNdW3NdXT01OTY0OCtzLGhbNTk2NDgrc109Y1syMzNdW3NdKTtmb3IoY1syMzRdPSJcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk1Y2NcdTk1Y2RcdTk1Y2VcdTk1Y2ZcdTk1ZDBcdTk1ZDFcdTk1ZDJcdTk1ZDNcdTk1ZDRcdTk1ZDVcdTk1ZDZcdTk1ZDdcdTk1ZDhcdTk1ZDlcdTk1ZGFcdTk1ZGJcdTk1ZGNcdTk1ZGRcdTk1ZGVcdTk1'@; put 'ZGZcdTk1ZTBcdTk1ZTFcdTk1ZTJcdTk1ZTNcdTk1ZTRcdTk1ZTVcdTk1ZTZcdTk1ZTdcdTk1ZWNcdTk1ZmZcdTk2MDdcdTk2MTNcdTk2MThcdTk2MWJcdTk2MWVcdTk2MjBcdTk2MjNcdTk2MjRcdTk2MjVcdTk2MjZcdTk2MjdcdTk2MjhcdTk2MjlcdTk2MmJcdTk2MmNcdTk2MmRcdTk2MmZc'@; put 'dTk2MzBcdTk2MzdcdTk2MzhcdTk2MzlcdTk2M2FcdTk2M2VcdTk2NDFcdTk2NDNcdTk2NGFcdTk2NGVcdTk2NGZcdTk2NTFcdTk2NTJcdTk2NTNcdTk2NTZcdTk2NTdcdWZmZmRcdTk2NThcdTk2NTlcdTk2NWFcdTk2NWNcdTk2NWRcdTk2NWVcdTk2NjBcdTk2NjNcdTk2NjVcdTk2NjZcdTk2'@; put 'NmJcdTk2NmRcdTk2NmVcdTk2NmZcdTk2NzBcdTk2NzFcdTk2NzNcdTk2NzhcdTk2NzlcdTk2N2FcdTk2N2JcdTk2N2NcdTk2N2RcdTk2N2VcdTk2N2ZcdTk2ODBcdTk2ODFcdTk2ODJcdTk2ODNcdTk2ODRcdTk2ODdcdTk2ODlcdTk2OGFcdThmOGRcdThmOGVcdThmOGZcdThmOThcdThmOWFc'@; put 'dThlY2VcdTYyMGJcdTYyMTdcdTYyMWJcdTYyMWZcdTYyMjJcdTYyMjFcdTYyMjVcdTYyMjRcdTYyMmNcdTgxZTdcdTc0ZWZcdTc0ZjRcdTc0ZmZcdTc1MGZcdTc1MTFcdTc1MTNcdTY1MzRcdTY1ZWVcdTY1ZWZcdTY1ZjBcdTY2MGFcdTY2MTlcdTY3NzJcdTY2MDNcdTY2MTVcdTY2MDBcdTcw'@; put 'ODVcdTY2ZjdcdTY2MWRcdTY2MzRcdTY2MzFcdTY2MzZcdTY2MzVcdTgwMDZcdTY2NWZcdTY2NTRcdTY2NDFcdTY2NGZcdTY2NTZcdTY2NjFcdTY2NTdcdTY2NzdcdTY2ODRcdTY2OGNcdTY2YTdcdTY2OWRcdTY2YmVcdTY2ZGJcdTY2ZGNcdTY2ZTZcdTY2ZTlcdThkMzJcdThkMzNcdThkMzZc'@; put 'dThkM2JcdThkM2RcdThkNDBcdThkNDVcdThkNDZcdThkNDhcdThkNDlcdThkNDdcdThkNGRcdThkNTVcdThkNTlcdTg5YzdcdTg5Y2FcdTg5Y2JcdTg5Y2NcdTg5Y2VcdTg5Y2ZcdTg5ZDBcdTg5ZDFcdTcyNmVcdTcyOWZcdTcyNWRcdTcyNjZcdTcyNmZcdTcyN2VcdTcyN2ZcdTcyODRcdTcy'@; put 'OGJcdTcyOGRcdTcyOGZcdTcyOTJcdTYzMDhcdTYzMzJcdTYzYjBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzNF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzRdW3NdXT01OTkwNCtzLGhbNTk5MDQrc109Y1syMzRdW3NdKTtmb3IoY1sy'@; put 'MzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGNcdTk2OGVcdTk2OTFcdTk2OTJcdTk2OTNcdTk2OTVcdTk2OTZcdTk2OWFcdTk2OWJcdTk2OWRcdTk2OWVcdTk2OWZcdTk2YTBcdTk2YTFcdTk2YTJcdTk2YTNcdTk2YTRcdTk2'@; put 'YTVcdTk2YTZcdTk2YThcdTk2YTlcdTk2YWFcdTk2YWJcdTk2YWNcdTk2YWRcdTk2YWVcdTk2YWZcdTk2YjFcdTk2YjJcdTk2YjRcdTk2YjVcdTk2YjdcdTk2YjhcdTk2YmFcdTk2YmJcdTk2YmZcdTk2YzJcdTk2YzNcdTk2YzhcdTk2Y2FcdTk2Y2JcdTk2ZDBcdTk2ZDFcdTk2ZDNcdTk2ZDRc'@; put 'dTk2ZDZcdTk2ZDdcdTk2ZDhcdTk2ZDlcdTk2ZGFcdTk2ZGJcdTk2ZGNcdTk2ZGRcdTk2ZGVcdTk2ZGZcdTk2ZTFcdTk2ZTJcdTk2ZTNcdTk2ZTRcdTk2ZTVcdTk2ZTZcdTk2ZTdcdTk2ZWJcdWZmZmRcdTk2ZWNcdTk2ZWRcdTk2ZWVcdTk2ZjBcdTk2ZjFcdTk2ZjJcdTk2ZjRcdTk2ZjVcdTk2'@; put 'ZjhcdTk2ZmFcdTk2ZmJcdTk2ZmNcdTk2ZmRcdTk2ZmZcdTk3MDJcdTk3MDNcdTk3MDVcdTk3MGFcdTk3MGJcdTk3MGNcdTk3MTBcdTk3MTFcdTk3MTJcdTk3MTRcdTk3MTVcdTk3MTdcdTk3MThcdTk3MTlcdTk3MWFcdTk3MWJcdTk3MWRcdTk3MWZcdTk3MjBcdTY0M2ZcdTY0ZDhcdTgwMDRc'@; put 'dTZiZWFcdTZiZjNcdTZiZmRcdTZiZjVcdTZiZjlcdTZjMDVcdTZjMDdcdTZjMDZcdTZjMGRcdTZjMTVcdTZjMThcdTZjMTlcdTZjMWFcdTZjMjFcdTZjMjlcdTZjMjRcdTZjMmFcdTZjMzJcdTY1MzVcdTY1NTVcdTY1NmJcdTcyNGRcdTcyNTJcdTcyNTZcdTcyMzBcdTg2NjJcdTUyMTZcdTgw'@; put 'OWZcdTgwOWNcdTgwOTNcdTgwYmNcdTY3MGFcdTgwYmRcdTgwYjFcdTgwYWJcdTgwYWRcdTgwYjRcdTgwYjdcdTgwZTdcdTgwZThcdTgwZTlcdTgwZWFcdTgwZGJcdTgwYzJcdTgwYzRcdTgwZDlcdTgwY2RcdTgwZDdcdTY3MTBcdTgwZGRcdTgwZWJcdTgwZjFcdTgwZjRcdTgwZWRcdTgxMGRc'@; put 'dTgxMGVcdTgwZjJcdTgwZmNcdTY3MTVcdTgxMTJcdThjNWFcdTgxMzZcdTgxMWVcdTgxMmNcdTgxMThcdTgxMzJcdTgxNDhcdTgxNGNcdTgxNTNcdTgxNzRcdTgxNTlcdTgxNWFcdTgxNzFcdTgxNjBcdTgxNjlcdTgxN2NcdTgxN2RcdTgxNmRcdTgxNjdcdTU4NGRcdTVhYjVcdTgxODhcdTgx'@; put 'ODJcdTgxOTFcdTZlZDVcdTgxYTNcdTgxYWFcdTgxY2NcdTY3MjZcdTgxY2FcdTgxYmJcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzNV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzVdW3NdXT02MDE2MCtzLGhbNjAxNjArc109Y1syMzVd'@; put 'W3NdKTtmb3IoY1syMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3MjFcdTk3MjJcdTk3MjNcdTk3MjRcdTk3MjVcdTk3MjZcdTk3MjdcdTk3MjhcdTk3MjlcdTk3MmJcdTk3MmNcdTk3MmVcdTk3MmZcdTk3MzFcdTk3MzNcdTk3'@; put 'MzRcdTk3MzVcdTk3MzZcdTk3MzdcdTk3M2FcdTk3M2JcdTk3M2NcdTk3M2RcdTk3M2ZcdTk3NDBcdTk3NDFcdTk3NDJcdTk3NDNcdTk3NDRcdTk3NDVcdTk3NDZcdTk3NDdcdTk3NDhcdTk3NDlcdTk3NGFcdTk3NGJcdTk3NGNcdTk3NGRcdTk3NGVcdTk3NGZcdTk3NTBcdTk3NTFcdTk3NTRc'@; put 'dTk3NTVcdTk3NTdcdTk3NThcdTk3NWFcdTk3NWNcdTk3NWRcdTk3NWZcdTk3NjNcdTk3NjRcdTk3NjZcdTk3NjdcdTk3NjhcdTk3NmFcdTk3NmJcdTk3NmNcdTk3NmRcdTk3NmVcdTk3NmZcdTk3NzBcdTk3NzFcdWZmZmRcdTk3NzJcdTk3NzVcdTk3NzdcdTk3NzhcdTk3NzlcdTk3N2FcdTk3'@; put 'N2JcdTk3N2RcdTk3N2VcdTk3N2ZcdTk3ODBcdTk3ODFcdTk3ODJcdTk3ODNcdTk3ODRcdTk3ODZcdTk3ODdcdTk3ODhcdTk3ODlcdTk3OGFcdTk3OGNcdTk3OGVcdTk3OGZcdTk3OTBcdTk3OTNcdTk3OTVcdTk3OTZcdTk3OTdcdTk3OTlcdTk3OWFcdTk3OWJcdTk3OWNcdTk3OWRcdTgxYzFc'@; put 'dTgxYTZcdTZiMjRcdTZiMzdcdTZiMzlcdTZiNDNcdTZiNDZcdTZiNTlcdTk4ZDFcdTk4ZDJcdTk4ZDNcdTk4ZDVcdTk4ZDlcdTk4ZGFcdTZiYjNcdTVmNDBcdTZiYzJcdTg5ZjNcdTY1OTBcdTlmNTFcdTY1OTNcdTY1YmNcdTY1YzZcdTY1YzRcdTY1YzNcdTY1Y2NcdTY1Y2VcdTY1ZDJcdTY1'@; put 'ZDZcdTcwODBcdTcwOWNcdTcwOTZcdTcwOWRcdTcwYmJcdTcwYzBcdTcwYjdcdTcwYWJcdTcwYjFcdTcwZThcdTcwY2FcdTcxMTBcdTcxMTNcdTcxMTZcdTcxMmZcdTcxMzFcdTcxNzNcdTcxNWNcdTcxNjhcdTcxNDVcdTcxNzJcdTcxNGFcdTcxNzhcdTcxN2FcdTcxOThcdTcxYjNcdTcxYjVc'@; put 'dTcxYThcdTcxYTBcdTcxZTBcdTcxZDRcdTcxZTdcdTcxZjlcdTcyMWRcdTcyMjhcdTcwNmNcdTcxMThcdTcxNjZcdTcxYjlcdTYyM2VcdTYyM2RcdTYyNDNcdTYyNDhcdTYyNDlcdTc5M2JcdTc5NDBcdTc5NDZcdTc5NDlcdTc5NWJcdTc5NWNcdTc5NTNcdTc5NWFcdTc5NjJcdTc5NTdcdTc5'@; put 'NjBcdTc5NmZcdTc5NjdcdTc5N2FcdTc5ODVcdTc5OGFcdTc5OWFcdTc5YTdcdTc5YjNcdTVmZDFcdTVmZDBcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzNl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzZdW3NdXT02MDQxNitzLGhbNjA0'@; put 'MTYrc109Y1syMzZdW3NdKTtmb3IoY1syMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3OWVcdTk3OWZcdTk3YTFcdTk3YTJcdTk3YTRcdTk3YTVcdTk3YTZcdTk3YTdcdTk3YThcdTk3YTlcdTk3YWFcdTk3YWNcdTk3YWVcdTk3'@; put 'YjBcdTk3YjFcdTk3YjNcdTk3YjVcdTk3YjZcdTk3YjdcdTk3YjhcdTk3YjlcdTk3YmFcdTk3YmJcdTk3YmNcdTk3YmRcdTk3YmVcdTk3YmZcdTk3YzBcdTk3YzFcdTk3YzJcdTk3YzNcdTk3YzRcdTk3YzVcdTk3YzZcdTk3YzdcdTk3YzhcdTk3YzlcdTk3Y2FcdTk3Y2JcdTk3Y2NcdTk3Y2Rc'@; put 'dTk3Y2VcdTk3Y2ZcdTk3ZDBcdTk3ZDFcdTk3ZDJcdTk3ZDNcdTk3ZDRcdTk3ZDVcdTk3ZDZcdTk3ZDdcdTk3ZDhcdTk3ZDlcdTk3ZGFcdTk3ZGJcdTk3ZGNcdTk3ZGRcdTk3ZGVcdTk3ZGZcdTk3ZTBcdTk3ZTFcdTk3ZTJcdTk3ZTNcdWZmZmRcdTk3ZTRcdTk3ZTVcdTk3ZThcdTk3ZWVcdTk3'@; put 'ZWZcdTk3ZjBcdTk3ZjFcdTk3ZjJcdTk3ZjRcdTk3ZjdcdTk3ZjhcdTk3ZjlcdTk3ZmFcdTk3ZmJcdTk3ZmNcdTk3ZmRcdTk3ZmVcdTk3ZmZcdTk4MDBcdTk4MDFcdTk4MDJcdTk4MDNcdTk4MDRcdTk4MDVcdTk4MDZcdTk4MDdcdTk4MDhcdTk4MDlcdTk4MGFcdTk4MGJcdTk4MGNcdTk4MGRc'@; put 'dTk4MGVcdTYwM2NcdTYwNWRcdTYwNWFcdTYwNjdcdTYwNDFcdTYwNTlcdTYwNjNcdTYwYWJcdTYxMDZcdTYxMGRcdTYxNWRcdTYxYTlcdTYxOWRcdTYxY2JcdTYxZDFcdTYyMDZcdTgwODBcdTgwN2ZcdTZjOTNcdTZjZjZcdTZkZmNcdTc3ZjZcdTc3ZjhcdTc4MDBcdTc4MDlcdTc4MTdcdTc4'@; put 'MThcdTc4MTFcdTY1YWJcdTc4MmRcdTc4MWNcdTc4MWRcdTc4MzlcdTc4M2FcdTc4M2JcdTc4MWZcdTc4M2NcdTc4MjVcdTc4MmNcdTc4MjNcdTc4MjlcdTc4NGVcdTc4NmRcdTc4NTZcdTc4NTdcdTc4MjZcdTc4NTBcdTc4NDdcdTc4NGNcdTc4NmFcdTc4OWJcdTc4OTNcdTc4OWFcdTc4ODdc'@; put 'dTc4OWNcdTc4YTFcdTc4YTNcdTc4YjJcdTc4YjlcdTc4YTVcdTc4ZDRcdTc4ZDlcdTc4YzlcdTc4ZWNcdTc4ZjJcdTc5MDVcdTc4ZjRcdTc5MTNcdTc5MjRcdTc5MWVcdTc5MzRcdTlmOWJcdTllZjlcdTllZmJcdTllZmNcdTc2ZjFcdTc3MDRcdTc3MGRcdTc2ZjlcdTc3MDdcdTc3MDhcdTc3'@; put 'MWFcdTc3MjJcdTc3MTlcdTc3MmRcdTc3MjZcdTc3MzVcdTc3MzhcdTc3NTBcdTc3NTFcdTc3NDdcdTc3NDNcdTc3NWFcdTc3NjhcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzN11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syMzddW3NdXT02'@; put 'MDY3MitzLGhbNjA2NzIrc109Y1syMzddW3NdKTtmb3IoY1syMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4MGZcdTk4MTBcdTk4MTFcdTk4MTJcdTk4MTNcdTk4MTRcdTk4MTVcdTk4MTZcdTk4MTdcdTk4MThcdTk4MTlcdTk4'@; put 'MWFcdTk4MWJcdTk4MWNcdTk4MWRcdTk4MWVcdTk4MWZcdTk4MjBcdTk4MjFcdTk4MjJcdTk4MjNcdTk4MjRcdTk4MjVcdTk4MjZcdTk4MjdcdTk4MjhcdTk4MjlcdTk4MmFcdTk4MmJcdTk4MmNcdTk4MmRcdTk4MmVcdTk4MmZcdTk4MzBcdTk4MzFcdTk4MzJcdTk4MzNcdTk4MzRcdTk4MzVc'@; put 'dTk4MzZcdTk4MzdcdTk4MzhcdTk4MzlcdTk4M2FcdTk4M2JcdTk4M2NcdTk4M2RcdTk4M2VcdTk4M2ZcdTk4NDBcdTk4NDFcdTk4NDJcdTk4NDNcdTk4NDRcdTk4NDVcdTk4NDZcdTk4NDdcdTk4NDhcdTk4NDlcdTk4NGFcdTk4NGJcdTk4NGNcdTk4NGRcdWZmZmRcdTk4NGVcdTk4NGZcdTk4'@; put 'NTBcdTk4NTFcdTk4NTJcdTk4NTNcdTk4NTRcdTk4NTVcdTk4NTZcdTk4NTdcdTk4NThcdTk4NTlcdTk4NWFcdTk4NWJcdTk4NWNcdTk4NWRcdTk4NWVcdTk4NWZcdTk4NjBcdTk4NjFcdTk4NjJcdTk4NjNcdTk4NjRcdTk4NjVcdTk4NjZcdTk4NjdcdTk4NjhcdTk4NjlcdTk4NmFcdTk4NmJc'@; put 'dTk4NmNcdTk4NmRcdTk4NmVcdTc3NjJcdTc3NjVcdTc3N2ZcdTc3OGRcdTc3N2RcdTc3ODBcdTc3OGNcdTc3OTFcdTc3OWZcdTc3YTBcdTc3YjBcdTc3YjVcdTc3YmRcdTc1M2FcdTc1NDBcdTc1NGVcdTc1NGJcdTc1NDhcdTc1NWJcdTc1NzJcdTc1NzlcdTc1ODNcdTdmNThcdTdmNjFcdTdm'@; put 'NWZcdThhNDhcdTdmNjhcdTdmNzRcdTdmNzFcdTdmNzlcdTdmODFcdTdmN2VcdTc2Y2RcdTc2ZTVcdTg4MzJcdTk0ODVcdTk0ODZcdTk0ODdcdTk0OGJcdTk0OGFcdTk0OGNcdTk0OGRcdTk0OGZcdTk0OTBcdTk0OTRcdTk0OTdcdTk0OTVcdTk0OWFcdTk0OWJcdTk0OWNcdTk0YTNcdTk0YTRc'@; put 'dTk0YWJcdTk0YWFcdTk0YWRcdTk0YWNcdTk0YWZcdTk0YjBcdTk0YjJcdTk0YjRcdTk0YjZcdTk0YjdcdTk0YjhcdTk0YjlcdTk0YmFcdTk0YmNcdTk0YmRcdTk0YmZcdTk0YzRcdTk0YzhcdTk0YzlcdTk0Y2FcdTk0Y2JcdTk0Y2NcdTk0Y2RcdTk0Y2VcdTk0ZDBcdTk0ZDFcdTk0ZDJcdTk0'@; put 'ZDVcdTk0ZDZcdTk0ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWFcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzhdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzOF1bc10uY2hhckNvZGVBdCgwKSYmKHlb'@; put 'Y1syMzhdW3NdXT02MDkyOCtzLGhbNjA5Mjgrc109Y1syMzhdW3NdKTtmb3IoY1syMzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4NmZcdTk4NzBcdTk4NzFcdTk4NzJcdTk4NzNcdTk4NzRcdTk4OGJcdTk4OGVcdTk4OTJcdTk4'@; put 'OTVcdTk4OTlcdTk4YTNcdTk4YThcdTk4YTlcdTk4YWFcdTk4YWJcdTk4YWNcdTk4YWRcdTk4YWVcdTk4YWZcdTk4YjBcdTk4YjFcdTk4YjJcdTk4YjNcdTk4YjRcdTk4YjVcdTk4YjZcdTk4YjdcdTk4YjhcdTk4YjlcdTk4YmFcdTk4YmJcdTk4YmNcdTk4YmRcdTk4YmVcdTk4YmZcdTk4YzBc'@; put 'dTk4YzFcdTk4YzJcdTk4YzNcdTk4YzRcdTk4YzVcdTk4YzZcdTk4YzdcdTk4YzhcdTk4YzlcdTk4Y2FcdTk4Y2JcdTk4Y2NcdTk4Y2RcdTk4Y2ZcdTk4ZDBcdTk4ZDRcdTk4ZDZcdTk4ZDdcdTk4ZGJcdTk4ZGNcdTk4ZGRcdTk4ZTBcdTk4ZTFcdTk4ZTJcdTk4ZTNcdTk4ZTRcdWZmZmRcdTk4'@; put 'ZTVcdTk4ZTZcdTk4ZTlcdTk4ZWFcdTk4ZWJcdTk4ZWNcdTk4ZWRcdTk4ZWVcdTk4ZWZcdTk4ZjBcdTk4ZjFcdTk4ZjJcdTk4ZjNcdTk4ZjRcdTk4ZjVcdTk4ZjZcdTk4ZjdcdTk4ZjhcdTk4ZjlcdTk4ZmFcdTk4ZmJcdTk4ZmNcdTk4ZmRcdTk4ZmVcdTk4ZmZcdTk5MDBcdTk5MDFcdTk5MDJc'@; put 'dTk5MDNcdTk5MDRcdTk5MDVcdTk5MDZcdTk5MDdcdTk0ZTlcdTk0ZWJcdTk0ZWVcdTk0ZWZcdTk0ZjNcdTk0ZjRcdTk0ZjVcdTk0ZjdcdTk0ZjlcdTk0ZmNcdTk0ZmRcdTk0ZmZcdTk1MDNcdTk1MDJcdTk1MDZcdTk1MDdcdTk1MDlcdTk1MGFcdTk1MGRcdTk1MGVcdTk1MGZcdTk1MTJcdTk1'@; put 'MTNcdTk1MTRcdTk1MTVcdTk1MTZcdTk1MThcdTk1MWJcdTk1MWRcdTk1MWVcdTk1MWZcdTk1MjJcdTk1MmFcdTk1MmJcdTk1MjlcdTk1MmNcdTk1MzFcdTk1MzJcdTk1MzRcdTk1MzZcdTk1MzdcdTk1MzhcdTk1M2NcdTk1M2VcdTk1M2ZcdTk1NDJcdTk1MzVcdTk1NDRcdTk1NDVcdTk1NDZc'@; put 'dTk1NDlcdTk1NGNcdTk1NGVcdTk1NGZcdTk1NTJcdTk1NTNcdTk1NTRcdTk1NTZcdTk1NTdcdTk1NThcdTk1NTlcdTk1NWJcdTk1NWVcdTk1NWZcdTk1NWRcdTk1NjFcdTk1NjJcdTk1NjRcdTk1NjVcdTk1NjZcdTk1NjdcdTk1NjhcdTk1NjlcdTk1NmFcdTk1NmJcdTk1NmNcdTk1NmZcdTk1'@; put 'NzFcdTk1NzJcdTk1NzNcdTk1M2FcdTc3ZTdcdTc3ZWNcdTk2YzlcdTc5ZDVcdTc5ZWRcdTc5ZTNcdTc5ZWJcdTdhMDZcdTVkNDdcdTdhMDNcdTdhMDJcdTdhMWVcdTdhMTRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syMzldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzIzOV1bc10uY2hhckNv'@; put 'ZGVBdCgwKSYmKHlbY1syMzldW3NdXT02MTE4NCtzLGhbNjExODQrc109Y1syMzldW3NdKTtmb3IoY1syNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5MDhcdTk5MDlcdTk5MGFcdTk5MGJcdTk5MGNcdTk5MGVcdTk5MGZcdTk5'@; put 'MTFcdTk5MTJcdTk5MTNcdTk5MTRcdTk5MTVcdTk5MTZcdTk5MTdcdTk5MThcdTk5MTlcdTk5MWFcdTk5MWJcdTk5MWNcdTk5MWRcdTk5MWVcdTk5MWZcdTk5MjBcdTk5MjFcdTk5MjJcdTk5MjNcdTk5MjRcdTk5MjVcdTk5MjZcdTk5MjdcdTk5MjhcdTk5MjlcdTk5MmFcdTk5MmJcdTk5MmNc'@; put 'dTk5MmRcdTk5MmZcdTk5MzBcdTk5MzFcdTk5MzJcdTk5MzNcdTk5MzRcdTk5MzVcdTk5MzZcdTk5MzdcdTk5MzhcdTk5MzlcdTk5M2FcdTk5M2JcdTk5M2NcdTk5M2RcdTk5M2VcdTk5M2ZcdTk5NDBcdTk5NDFcdTk5NDJcdTk5NDNcdTk5NDRcdTk5NDVcdTk5NDZcdTk5NDdcdTk5NDhcdTk5'@; put 'NDlcdWZmZmRcdTk5NGFcdTk5NGJcdTk5NGNcdTk5NGRcdTk5NGVcdTk5NGZcdTk5NTBcdTk5NTFcdTk5NTJcdTk5NTNcdTk5NTZcdTk5NTdcdTk5NThcdTk5NTlcdTk5NWFcdTk5NWJcdTk5NWNcdTk5NWRcdTk5NWVcdTk5NWZcdTk5NjBcdTk5NjFcdTk5NjJcdTk5NjRcdTk5NjZcdTk5NzNc'@; put 'dTk5NzhcdTk5NzlcdTk5N2JcdTk5N2VcdTk5ODJcdTk5ODNcdTk5ODlcdTdhMzlcdTdhMzdcdTdhNTFcdTllY2ZcdTk5YTVcdTdhNzBcdTc2ODhcdTc2OGVcdTc2OTNcdTc2OTlcdTc2YTRcdTc0ZGVcdTc0ZTBcdTc1MmNcdTllMjBcdTllMjJcdTllMjhcdTllMjlcdTllMmFcdTllMmJcdTll'@; put 'MmNcdTllMzJcdTllMzFcdTllMzZcdTllMzhcdTllMzdcdTllMzlcdTllM2FcdTllM2VcdTllNDFcdTllNDJcdTllNDRcdTllNDZcdTllNDdcdTllNDhcdTllNDlcdTllNGJcdTllNGNcdTllNGVcdTllNTFcdTllNTVcdTllNTdcdTllNWFcdTllNWJcdTllNWNcdTllNWVcdTllNjNcdTllNjZc'@; put 'dTllNjdcdTllNjhcdTllNjlcdTllNmFcdTllNmJcdTllNmNcdTllNzFcdTllNmRcdTllNzNcdTc1OTJcdTc1OTRcdTc1OTZcdTc1YTBcdTc1OWRcdTc1YWNcdTc1YTNcdTc1YjNcdTc1YjRcdTc1YjhcdTc1YzRcdTc1YjFcdTc1YjBcdTc1YzNcdTc1YzJcdTc1ZDZcdTc1Y2RcdTc1ZTNcdTc1'@; put 'ZThcdTc1ZTZcdTc1ZTRcdTc1ZWJcdTc1ZTdcdTc2MDNcdTc1ZjFcdTc1ZmNcdTc1ZmZcdTc2MTBcdTc2MDBcdTc2MDVcdTc2MGNcdTc2MTdcdTc2MGFcdTc2MjVcdTc2MThcdTc2MTVcdTc2MTlcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0'@; put 'MF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDBdW3NdXT02MTQ0MCtzLGhbNjE0NDArc109Y1syNDBdW3NdKTtmb3IoY1syNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5OGNcdTk5OGVcdTk5OWFcdTk5OWJcdTk5OWNcdTk5'@; put 'OWRcdTk5OWVcdTk5OWZcdTk5YTBcdTk5YTFcdTk5YTJcdTk5YTNcdTk5YTRcdTk5YTZcdTk5YTdcdTk5YTlcdTk5YWFcdTk5YWJcdTk5YWNcdTk5YWRcdTk5YWVcdTk5YWZcdTk5YjBcdTk5YjFcdTk5YjJcdTk5YjNcdTk5YjRcdTk5YjVcdTk5YjZcdTk5YjdcdTk5YjhcdTk5YjlcdTk5YmFc'@; put 'dTk5YmJcdTk5YmNcdTk5YmRcdTk5YmVcdTk5YmZcdTk5YzBcdTk5YzFcdTk5YzJcdTk5YzNcdTk5YzRcdTk5YzVcdTk5YzZcdTk5YzdcdTk5YzhcdTk5YzlcdTk5Y2FcdTk5Y2JcdTk5Y2NcdTk5Y2RcdTk5Y2VcdTk5Y2ZcdTk5ZDBcdTk5ZDFcdTk5ZDJcdTk5ZDNcdTk5ZDRcdTk5ZDVcdTk5'@; put 'ZDZcdTk5ZDdcdTk5ZDhcdWZmZmRcdTk5ZDlcdTk5ZGFcdTk5ZGJcdTk5ZGNcdTk5ZGRcdTk5ZGVcdTk5ZGZcdTk5ZTBcdTk5ZTFcdTk5ZTJcdTk5ZTNcdTk5ZTRcdTk5ZTVcdTk5ZTZcdTk5ZTdcdTk5ZThcdTk5ZTlcdTk5ZWFcdTk5ZWJcdTk5ZWNcdTk5ZWRcdTk5ZWVcdTk5ZWZcdTk5ZjBc'@; put 'dTk5ZjFcdTk5ZjJcdTk5ZjNcdTk5ZjRcdTk5ZjVcdTk5ZjZcdTk5ZjdcdTk5ZjhcdTk5ZjlcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBcdTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNcdTc2M2VcdTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2NWNcdTc2NTZcdTc2NmJcdTc2'@; put 'NmZcdTdmY2FcdTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdhYjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4N2ZcdTg4ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNcdTg4YzlcdTg4ZTJcdTg4Y2Vc'@; put 'dTg4ZTNcdTg4ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRcdTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2JcdTc1OGJcdTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgwMTJcdTgwMTRcdTgwMTZcdTgw'@; put 'MWNcdTgwMjBcdTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgwNTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4ODBcdTk4ODNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDFdLmxlbmd0aDsrK3Mp'@; put 'NjU1MzMhPT1jWzI0MV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDFdW3NdXT02MTY5NitzLGhbNjE2OTYrc109Y1syNDFdW3NdKTtmb3IoY1syNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5ZmFcdTk5ZmJcdTk5ZmNcdTk5'@; put 'ZmRcdTk5ZmVcdTk5ZmZcdTlhMDBcdTlhMDFcdTlhMDJcdTlhMDNcdTlhMDRcdTlhMDVcdTlhMDZcdTlhMDdcdTlhMDhcdTlhMDlcdTlhMGFcdTlhMGJcdTlhMGNcdTlhMGRcdTlhMGVcdTlhMGZcdTlhMTBcdTlhMTFcdTlhMTJcdTlhMTNcdTlhMTRcdTlhMTVcdTlhMTZcdTlhMTdcdTlhMThc'@; put 'dTlhMTlcdTlhMWFcdTlhMWJcdTlhMWNcdTlhMWRcdTlhMWVcdTlhMWZcdTlhMjBcdTlhMjFcdTlhMjJcdTlhMjNcdTlhMjRcdTlhMjVcdTlhMjZcdTlhMjdcdTlhMjhcdTlhMjlcdTlhMmFcdTlhMmJcdTlhMmNcdTlhMmRcdTlhMmVcdTlhMmZcdTlhMzBcdTlhMzFcdTlhMzJcdTlhMzNcdTlh'@; put 'MzRcdTlhMzVcdTlhMzZcdTlhMzdcdTlhMzhcdWZmZmRcdTlhMzlcdTlhM2FcdTlhM2JcdTlhM2NcdTlhM2RcdTlhM2VcdTlhM2ZcdTlhNDBcdTlhNDFcdTlhNDJcdTlhNDNcdTlhNDRcdTlhNDVcdTlhNDZcdTlhNDdcdTlhNDhcdTlhNDlcdTlhNGFcdTlhNGJcdTlhNGNcdTlhNGRcdTlhNGVc'@; put 'dTlhNGZcdTlhNTBcdTlhNTFcdTlhNTJcdTlhNTNcdTlhNTRcdTlhNTVcdTlhNTZcdTlhNTdcdTlhNThcdTlhNTlcdTk4ODlcdTk4OGNcdTk4OGRcdTk4OGZcdTk4OTRcdTk4OWFcdTk4OWJcdTk4OWVcdTk4OWZcdTk4YTFcdTk4YTJcdTk4YTVcdTk4YTZcdTg2NGRcdTg2NTRcdTg2NmNcdTg2'@; put 'NmVcdTg2N2ZcdTg2N2FcdTg2N2NcdTg2N2JcdTg2YThcdTg2OGRcdTg2OGJcdTg2YWNcdTg2OWRcdTg2YTdcdTg2YTNcdTg2YWFcdTg2OTNcdTg2YTlcdTg2YjZcdTg2YzRcdTg2YjVcdTg2Y2VcdTg2YjBcdTg2YmFcdTg2YjFcdTg2YWZcdTg2YzlcdTg2Y2ZcdTg2YjRcdTg2ZTlcdTg2ZjFc'@; put 'dTg2ZjJcdTg2ZWRcdTg2ZjNcdTg2ZDBcdTg3MTNcdTg2ZGVcdTg2ZjRcdTg2ZGZcdTg2ZDhcdTg2ZDFcdTg3MDNcdTg3MDdcdTg2ZjhcdTg3MDhcdTg3MGFcdTg3MGRcdTg3MDlcdTg3MjNcdTg3M2JcdTg3MWVcdTg3MjVcdTg3MmVcdTg3MWFcdTg3M2VcdTg3NDhcdTg3MzRcdTg3MzFcdTg3'@; put 'MjlcdTg3MzdcdTg3M2ZcdTg3ODJcdTg3MjJcdTg3N2RcdTg3N2VcdTg3N2JcdTg3NjBcdTg3NzBcdTg3NGNcdTg3NmVcdTg3OGJcdTg3NTNcdTg3NjNcdTg3N2NcdTg3NjRcdTg3NTlcdTg3NjVcdTg3OTNcdTg3YWZcdTg3YThcdTg3ZDJcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDJd'@; put 'Lmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0Ml1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDJdW3NdXT02MTk1MitzLGhbNjE5NTIrc109Y1syNDJdW3NdKTtmb3IoY1syNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhNWFcdTlh'@; put 'NWJcdTlhNWNcdTlhNWRcdTlhNWVcdTlhNWZcdTlhNjBcdTlhNjFcdTlhNjJcdTlhNjNcdTlhNjRcdTlhNjVcdTlhNjZcdTlhNjdcdTlhNjhcdTlhNjlcdTlhNmFcdTlhNmJcdTlhNzJcdTlhODNcdTlhODlcdTlhOGRcdTlhOGVcdTlhOTRcdTlhOTVcdTlhOTlcdTlhYTZcdTlhYTlcdTlhYWFc'@; put 'dTlhYWJcdTlhYWNcdTlhYWRcdTlhYWVcdTlhYWZcdTlhYjJcdTlhYjNcdTlhYjRcdTlhYjVcdTlhYjlcdTlhYmJcdTlhYmRcdTlhYmVcdTlhYmZcdTlhYzNcdTlhYzRcdTlhYzZcdTlhYzdcdTlhYzhcdTlhYzlcdTlhY2FcdTlhY2RcdTlhY2VcdTlhY2ZcdTlhZDBcdTlhZDJcdTlhZDRcdTlh'@; put 'ZDVcdTlhZDZcdTlhZDdcdTlhZDlcdTlhZGFcdTlhZGJcdTlhZGNcdWZmZmRcdTlhZGRcdTlhZGVcdTlhZTBcdTlhZTJcdTlhZTNcdTlhZTRcdTlhZTVcdTlhZTdcdTlhZThcdTlhZTlcdTlhZWFcdTlhZWNcdTlhZWVcdTlhZjBcdTlhZjFcdTlhZjJcdTlhZjNcdTlhZjRcdTlhZjVcdTlhZjZc'@; put 'dTlhZjdcdTlhZjhcdTlhZmFcdTlhZmNcdTlhZmRcdTlhZmVcdTlhZmZcdTliMDBcdTliMDFcdTliMDJcdTliMDRcdTliMDVcdTliMDZcdTg3YzZcdTg3ODhcdTg3ODVcdTg3YWRcdTg3OTdcdTg3ODNcdTg3YWJcdTg3ZTVcdTg3YWNcdTg3YjVcdTg3YjNcdTg3Y2JcdTg3ZDNcdTg3YmRcdTg3'@; put 'ZDFcdTg3YzBcdTg3Y2FcdTg3ZGJcdTg3ZWFcdTg3ZTBcdTg3ZWVcdTg4MTZcdTg4MTNcdTg3ZmVcdTg4MGFcdTg4MWJcdTg4MjFcdTg4MzlcdTg4M2NcdTdmMzZcdTdmNDJcdTdmNDRcdTdmNDVcdTgyMTBcdTdhZmFcdTdhZmRcdTdiMDhcdTdiMDNcdTdiMDRcdTdiMTVcdTdiMGFcdTdiMmJc'@; put 'dTdiMGZcdTdiNDdcdTdiMzhcdTdiMmFcdTdiMTlcdTdiMmVcdTdiMzFcdTdiMjBcdTdiMjVcdTdiMjRcdTdiMzNcdTdiM2VcdTdiMWVcdTdiNThcdTdiNWFcdTdiNDVcdTdiNzVcdTdiNGNcdTdiNWRcdTdiNjBcdTdiNmVcdTdiN2JcdTdiNjJcdTdiNzJcdTdiNzFcdTdiOTBcdTdiYTZcdTdi'@; put 'YTdcdTdiYjhcdTdiYWNcdTdiOWRcdTdiYThcdTdiODVcdTdiYWFcdTdiOWNcdTdiYTJcdTdiYWJcdTdiYjRcdTdiZDFcdTdiYzFcdTdiY2NcdTdiZGRcdTdiZGFcdTdiZTVcdTdiZTZcdTdiZWFcdTdjMGNcdTdiZmVcdTdiZmNcdTdjMGZcdTdjMTZcdTdjMGJcdWZmZmQiLnNwbGl0KCIiKSxz'@; put 'PTA7cyE9Y1syNDNdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0M11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDNdW3NdXT02MjIwOCtzLGhbNjIyMDgrc109Y1syNDNdW3NdKTtmb3IoY1syNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdTliMDdcdTliMDlcdTliMGFcdTliMGJcdTliMGNcdTliMGRcdTliMGVcdTliMTBcdTliMTFcdTliMTJcdTliMTRcdTliMTVcdTliMTZcdTliMTdcdTliMThcdTliMTlcdTliMWFcdTliMWJcdTliMWNcdTliMWRcdTliMWVcdTliMjBcdTliMjFcdTliMjJcdTliMjRcdTliMjVcdTliMjZc'@; put 'dTliMjdcdTliMjhcdTliMjlcdTliMmFcdTliMmJcdTliMmNcdTliMmRcdTliMmVcdTliMzBcdTliMzFcdTliMzNcdTliMzRcdTliMzVcdTliMzZcdTliMzdcdTliMzhcdTliMzlcdTliM2FcdTliM2RcdTliM2VcdTliM2ZcdTliNDBcdTliNDZcdTliNGFcdTliNGJcdTliNGNcdTliNGVcdTli'@; put 'NTBcdTliNTJcdTliNTNcdTliNTVcdTliNTZcdTliNTdcdTliNThcdTliNTlcdTliNWFcdWZmZmRcdTliNWJcdTliNWNcdTliNWRcdTliNWVcdTliNWZcdTliNjBcdTliNjFcdTliNjJcdTliNjNcdTliNjRcdTliNjVcdTliNjZcdTliNjdcdTliNjhcdTliNjlcdTliNmFcdTliNmJcdTliNmNc'@; put 'dTliNmRcdTliNmVcdTliNmZcdTliNzBcdTliNzFcdTliNzJcdTliNzNcdTliNzRcdTliNzVcdTliNzZcdTliNzdcdTliNzhcdTliNzlcdTliN2FcdTliN2JcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDRcdTgxZWNcdTg4NDRcdTgy'@; put 'MjFcdTgyMjJcdTgyMjNcdTgyMmRcdTgyMmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlcdTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5NWVcdTdmOWRcdTdmOWZcdTdmYTdc'@; put 'dTdmYWZcdTdmYjBcdTdmYjJcdTdjN2NcdTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdjYzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZcdTdmY2VcdTdmZDVcdTdmZTVcdTdm'@; put 'ZTFcdTdmZTZcdTdmZTlcdTdmZWVcdTdmZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNcdThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkxNGVcdTkxNGZcdTkxNjRcdWZmZmQi'@; put 'LnNwbGl0KCIiKSxzPTA7cyE9Y1syNDRdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0NF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDRdW3NdXT02MjQ2NCtzLGhbNjI0NjQrc109Y1syNDRdW3NdKTtmb3IoY1syNDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdTliN2NcdTliN2RcdTliN2VcdTliN2ZcdTliODBcdTliODFcdTliODJcdTliODNcdTliODRcdTliODVcdTliODZcdTliODdcdTliODhcdTliODlcdTliOGFcdTliOGJcdTliOGNcdTliOGRcdTliOGVcdTliOGZcdTliOTBcdTliOTFcdTliOTJcdTliOTNcdTliOTRc'@; put 'dTliOTVcdTliOTZcdTliOTdcdTliOThcdTliOTlcdTliOWFcdTliOWJcdTliOWNcdTliOWRcdTliOWVcdTliOWZcdTliYTBcdTliYTFcdTliYTJcdTliYTNcdTliYTRcdTliYTVcdTliYTZcdTliYTdcdTliYThcdTliYTlcdTliYWFcdTliYWJcdTliYWNcdTliYWRcdTliYWVcdTliYWZcdTli'@; put 'YjBcdTliYjFcdTliYjJcdTliYjNcdTliYjRcdTliYjVcdTliYjZcdTliYjdcdTliYjhcdTliYjlcdTliYmFcdWZmZmRcdTliYmJcdTliYmNcdTliYmRcdTliYmVcdTliYmZcdTliYzBcdTliYzFcdTliYzJcdTliYzNcdTliYzRcdTliYzVcdTliYzZcdTliYzdcdTliYzhcdTliYzlcdTliY2Fc'@; put 'dTliY2JcdTliY2NcdTliY2RcdTliY2VcdTliY2ZcdTliZDBcdTliZDFcdTliZDJcdTliZDNcdTliZDRcdTliZDVcdTliZDZcdTliZDdcdTliZDhcdTliZDlcdTliZGFcdTliZGJcdTkxNjJcdTkxNjFcdTkxNzBcdTkxNjlcdTkxNmZcdTkxN2RcdTkxN2VcdTkxNzJcdTkxNzRcdTkxNzlcdTkx'@; put 'OGNcdTkxODVcdTkxOTBcdTkxOGRcdTkxOTFcdTkxYTJcdTkxYTNcdTkxYWFcdTkxYWRcdTkxYWVcdTkxYWZcdTkxYjVcdTkxYjRcdTkxYmFcdThjNTVcdTllN2VcdThkYjhcdThkZWJcdThlMDVcdThlNTlcdThlNjlcdThkYjVcdThkYmZcdThkYmNcdThkYmFcdThkYzRcdThkZDZcdThkZDdc'@; put 'dThkZGFcdThkZGVcdThkY2VcdThkY2ZcdThkZGJcdThkYzZcdThkZWNcdThkZjdcdThkZjhcdThkZTNcdThkZjlcdThkZmJcdThkZTRcdThlMDlcdThkZmRcdThlMTRcdThlMWRcdThlMWZcdThlMmNcdThlMmVcdThlMjNcdThlMmZcdThlM2FcdThlNDBcdThlMzlcdThlMzVcdThlM2RcdThl'@; put 'MzFcdThlNDlcdThlNDFcdThlNDJcdThlNTFcdThlNTJcdThlNGFcdThlNzBcdThlNzZcdThlN2NcdThlNmZcdThlNzRcdThlODVcdThlOGZcdThlOTRcdThlOTBcdThlOWNcdThlOWVcdThjNzhcdThjODJcdThjOGFcdThjODVcdThjOThcdThjOTRcdTY1OWJcdTg5ZDZcdTg5ZGVcdTg5ZGFc'@; put 'dTg5ZGNcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDVdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0NV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDVdW3NdXT02MjcyMCtzLGhbNjI3MjArc109Y1syNDVdW3NdKTtmb3IoY1syNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTliZGNcdTliZGRcdTliZGVcdTliZGZcdTliZTBcdTliZTFcdTliZTJcdTliZTNcdTliZTRcdTliZTVcdTliZTZcdTliZTdcdTliZThcdTliZTlcdTliZWFcdTliZWJcdTliZWNcdTliZWRcdTliZWVcdTliZWZcdTliZjBcdTliZjFcdTliZjJc'@; put 'dTliZjNcdTliZjRcdTliZjVcdTliZjZcdTliZjdcdTliZjhcdTliZjlcdTliZmFcdTliZmJcdTliZmNcdTliZmRcdTliZmVcdTliZmZcdTljMDBcdTljMDFcdTljMDJcdTljMDNcdTljMDRcdTljMDVcdTljMDZcdTljMDdcdTljMDhcdTljMDlcdTljMGFcdTljMGJcdTljMGNcdTljMGRcdTlj'@; put 'MGVcdTljMGZcdTljMTBcdTljMTFcdTljMTJcdTljMTNcdTljMTRcdTljMTVcdTljMTZcdTljMTdcdTljMThcdTljMTlcdTljMWFcdWZmZmRcdTljMWJcdTljMWNcdTljMWRcdTljMWVcdTljMWZcdTljMjBcdTljMjFcdTljMjJcdTljMjNcdTljMjRcdTljMjVcdTljMjZcdTljMjdcdTljMjhc'@; put 'dTljMjlcdTljMmFcdTljMmJcdTljMmNcdTljMmRcdTljMmVcdTljMmZcdTljMzBcdTljMzFcdTljMzJcdTljMzNcdTljMzRcdTljMzVcdTljMzZcdTljMzdcdTljMzhcdTljMzlcdTljM2FcdTljM2JcdTg5ZTVcdTg5ZWJcdTg5ZWZcdThhM2VcdThiMjZcdTk3NTNcdTk2ZTlcdTk2ZjNcdTk2'@; put 'ZWZcdTk3MDZcdTk3MDFcdTk3MDhcdTk3MGZcdTk3MGVcdTk3MmFcdTk3MmRcdTk3MzBcdTk3M2VcdTlmODBcdTlmODNcdTlmODVcdTlmODZcdTlmODdcdTlmODhcdTlmODlcdTlmOGFcdTlmOGNcdTllZmVcdTlmMGJcdTlmMGRcdTk2YjlcdTk2YmNcdTk2YmRcdTk2Y2VcdTk2ZDJcdTc3YmZc'@; put 'dTk2ZTBcdTkyOGVcdTkyYWVcdTkyYzhcdTkzM2VcdTkzNmFcdTkzY2FcdTkzOGZcdTk0M2VcdTk0NmJcdTljN2ZcdTljODJcdTljODVcdTljODZcdTljODdcdTljODhcdTdhMjNcdTljOGJcdTljOGVcdTljOTBcdTljOTFcdTljOTJcdTljOTRcdTljOTVcdTljOWFcdTljOWJcdTljOWVcdTlj'@; put 'OWZcdTljYTBcdTljYTFcdTljYTJcdTljYTNcdTljYTVcdTljYTZcdTljYTdcdTljYThcdTljYTlcdTljYWJcdTljYWRcdTljYWVcdTljYjBcdTljYjFcdTljYjJcdTljYjNcdTljYjRcdTljYjVcdTljYjZcdTljYjdcdTljYmFcdTljYmJcdTljYmNcdTljYmRcdTljYzRcdTljYzVcdTljYzZc'@; put 'dTljYzdcdTljY2FcdTljY2JcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDZdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0Nl1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDZdW3NdXT02Mjk3NitzLGhbNjI5NzYrc109Y1syNDZdW3NdKTtmb3IoY1syNDddPSJcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljM2NcdTljM2RcdTljM2VcdTljM2ZcdTljNDBcdTljNDFcdTljNDJcdTljNDNcdTljNDRcdTljNDVcdTljNDZcdTljNDdcdTljNDhcdTljNDlcdTljNGFcdTljNGJcdTljNGNcdTljNGRcdTljNGVcdTljNGZcdTljNTBc'@; put 'dTljNTFcdTljNTJcdTljNTNcdTljNTRcdTljNTVcdTljNTZcdTljNTdcdTljNThcdTljNTlcdTljNWFcdTljNWJcdTljNWNcdTljNWRcdTljNWVcdTljNWZcdTljNjBcdTljNjFcdTljNjJcdTljNjNcdTljNjRcdTljNjVcdTljNjZcdTljNjdcdTljNjhcdTljNjlcdTljNmFcdTljNmJcdTlj'@; put 'NmNcdTljNmRcdTljNmVcdTljNmZcdTljNzBcdTljNzFcdTljNzJcdTljNzNcdTljNzRcdTljNzVcdTljNzZcdTljNzdcdTljNzhcdTljNzlcdTljN2FcdWZmZmRcdTljN2JcdTljN2RcdTljN2VcdTljODBcdTljODNcdTljODRcdTljODlcdTljOGFcdTljOGNcdTljOGZcdTljOTNcdTljOTZc'@; put 'dTljOTdcdTljOThcdTljOTlcdTljOWRcdTljYWFcdTljYWNcdTljYWZcdTljYjlcdTljYmVcdTljYmZcdTljYzBcdTljYzFcdTljYzJcdTljYzhcdTljYzlcdTljZDFcdTljZDJcdTljZGFcdTljZGJcdTljZTBcdTljZTFcdTljY2NcdTljY2RcdTljY2VcdTljY2ZcdTljZDBcdTljZDNcdTlj'@; put 'ZDRcdTljZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTllNThcdTlhYjZcdTlhYmFcdTlhYmNcdTlhYzFcdTlhYzBc'@; put 'dTlhYzVcdTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThcdTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZmJcdTlhZWRcdTlhZjlcdTliMDhcdTliMGZcdTli'@; put 'MTNcdTliMWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTllOWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTllZTVcdTllZWFcdTllZWZcdTlmMjJcdTlmMmNcdTlmMmZc'@; put 'dTlmMzlcdTlmMzdcdTlmM2RcdTlmM2VcdTlmNDRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDddLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0N11bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDddW3NdXT02MzIzMitzLGhbNjMyMzIrc109Y1syNDddW3NdKTtmb3IoY1syNDhdPSJcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljZTNcdTljZTRcdTljZTVcdTljZTZcdTljZTdcdTljZThcdTljZTlcdTljZWFcdTljZWJcdTljZWNcdTljZWRcdTljZWVcdTljZWZcdTljZjBcdTljZjFcdTljZjJcdTljZjNcdTljZjRcdTljZjVc'@; put 'dTljZjZcdTljZjdcdTljZjhcdTljZjlcdTljZmFcdTljZmJcdTljZmNcdTljZmRcdTljZmVcdTljZmZcdTlkMDBcdTlkMDFcdTlkMDJcdTlkMDNcdTlkMDRcdTlkMDVcdTlkMDZcdTlkMDdcdTlkMDhcdTlkMDlcdTlkMGFcdTlkMGJcdTlkMGNcdTlkMGRcdTlkMGVcdTlkMGZcdTlkMTBcdTlk'@; put 'MTFcdTlkMTJcdTlkMTNcdTlkMTRcdTlkMTVcdTlkMTZcdTlkMTdcdTlkMThcdTlkMTlcdTlkMWFcdTlkMWJcdTlkMWNcdTlkMWRcdTlkMWVcdTlkMWZcdTlkMjBcdTlkMjFcdWZmZmRcdTlkMjJcdTlkMjNcdTlkMjRcdTlkMjVcdTlkMjZcdTlkMjdcdTlkMjhcdTlkMjlcdTlkMmFcdTlkMmJc'@; put 'dTlkMmNcdTlkMmRcdTlkMmVcdTlkMmZcdTlkMzBcdTlkMzFcdTlkMzJcdTlkMzNcdTlkMzRcdTlkMzVcdTlkMzZcdTlkMzdcdTlkMzhcdTlkMzlcdTlkM2FcdTlkM2JcdTlkM2NcdTlkM2RcdTlkM2VcdTlkM2ZcdTlkNDBcdTlkNDFcdTlkNDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDhdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0OF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDhdW3NdXT02MzQ4OCtzLGhbNjM0ODgrc109Y1syNDhdW3NdKTtmb3Io'@; put 'Y1syNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkNDNcdTlkNDRcdTlkNDVcdTlkNDZcdTlkNDdcdTlkNDhcdTlkNDlcdTlkNGFcdTlkNGJcdTlkNGNcdTlkNGRcdTlkNGVcdTlkNGZcdTlkNTBcdTlkNTFcdTlkNTJcdTlkNTNc'@; put 'dTlkNTRcdTlkNTVcdTlkNTZcdTlkNTdcdTlkNThcdTlkNTlcdTlkNWFcdTlkNWJcdTlkNWNcdTlkNWRcdTlkNWVcdTlkNWZcdTlkNjBcdTlkNjFcdTlkNjJcdTlkNjNcdTlkNjRcdTlkNjVcdTlkNjZcdTlkNjdcdTlkNjhcdTlkNjlcdTlkNmFcdTlkNmJcdTlkNmNcdTlkNmRcdTlkNmVcdTlk'@; put 'NmZcdTlkNzBcdTlkNzFcdTlkNzJcdTlkNzNcdTlkNzRcdTlkNzVcdTlkNzZcdTlkNzdcdTlkNzhcdTlkNzlcdTlkN2FcdTlkN2JcdTlkN2NcdTlkN2RcdTlkN2VcdTlkN2ZcdTlkODBcdTlkODFcdWZmZmRcdTlkODJcdTlkODNcdTlkODRcdTlkODVcdTlkODZcdTlkODdcdTlkODhcdTlkODlc'@; put 'dTlkOGFcdTlkOGJcdTlkOGNcdTlkOGRcdTlkOGVcdTlkOGZcdTlkOTBcdTlkOTFcdTlkOTJcdTlkOTNcdTlkOTRcdTlkOTVcdTlkOTZcdTlkOTdcdTlkOThcdTlkOTlcdTlkOWFcdTlkOWJcdTlkOWNcdTlkOWRcdTlkOWVcdTlkOWZcdTlkYTBcdTlkYTFcdTlkYTJcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNDldLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI0OV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNDldW3NdXT02Mzc0NCtzLGhbNjM3NDQrc109Y1sy'@; put 'NDldW3NdKTtmb3IoY1syNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkYTNcdTlkYTRcdTlkYTVcdTlkYTZcdTlkYTdcdTlkYThcdTlkYTlcdTlkYWFcdTlkYWJcdTlkYWNcdTlkYWRcdTlkYWVcdTlkYWZcdTlkYjBcdTlkYjFc'@; put 'dTlkYjJcdTlkYjNcdTlkYjRcdTlkYjVcdTlkYjZcdTlkYjdcdTlkYjhcdTlkYjlcdTlkYmFcdTlkYmJcdTlkYmNcdTlkYmRcdTlkYmVcdTlkYmZcdTlkYzBcdTlkYzFcdTlkYzJcdTlkYzNcdTlkYzRcdTlkYzVcdTlkYzZcdTlkYzdcdTlkYzhcdTlkYzlcdTlkY2FcdTlkY2JcdTlkY2NcdTlk'@; put 'Y2RcdTlkY2VcdTlkY2ZcdTlkZDBcdTlkZDFcdTlkZDJcdTlkZDNcdTlkZDRcdTlkZDVcdTlkZDZcdTlkZDdcdTlkZDhcdTlkZDlcdTlkZGFcdTlkZGJcdTlkZGNcdTlkZGRcdTlkZGVcdTlkZGZcdTlkZTBcdTlkZTFcdWZmZmRcdTlkZTJcdTlkZTNcdTlkZTRcdTlkZTVcdTlkZTZcdTlkZTdc'@; put 'dTlkZThcdTlkZTlcdTlkZWFcdTlkZWJcdTlkZWNcdTlkZWRcdTlkZWVcdTlkZWZcdTlkZjBcdTlkZjFcdTlkZjJcdTlkZjNcdTlkZjRcdTlkZjVcdTlkZjZcdTlkZjdcdTlkZjhcdTlkZjlcdTlkZmFcdTlkZmJcdTlkZmNcdTlkZmRcdTlkZmVcdTlkZmZcdTllMDBcdTllMDFcdTllMDJcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1syNTBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzI1MF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1syNTBdW3NdXT02NGUzK3MsaFs2'@; put 'NGUzK3NdPWNbMjUwXVtzXSk7Zm9yKGNbMjUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZTAzXHU5ZTA0XHU5ZTA1XHU5ZTA2XHU5ZTA3XHU5ZTA4XHU5ZTA5XHU5ZTBhXHU5ZTBiXHU5ZTBjXHU5ZTBkXHU5ZTBlXHU5ZTBmXHU5'@; put 'ZTEwXHU5ZTExXHU5ZTEyXHU5ZTEzXHU5ZTE0XHU5ZTE1XHU5ZTE2XHU5ZTE3XHU5ZTE4XHU5ZTE5XHU5ZTFhXHU5ZTFiXHU5ZTFjXHU5ZTFkXHU5ZTFlXHU5ZTI0XHU5ZTI3XHU5ZTJlXHU5ZTMwXHU5ZTM0XHU5ZTNiXHU5ZTNjXHU5ZTQwXHU5ZTRkXHU5ZTUwXHU5ZTUyXHU5ZTUzXHU5ZTU0'@; put 'XHU5ZTU2XHU5ZTU5XHU5ZTVkXHU5ZTVmXHU5ZTYwXHU5ZTYxXHU5ZTYyXHU5ZTY1XHU5ZTZlXHU5ZTZmXHU5ZTcyXHU5ZTc0XHU5ZTc1XHU5ZTc2XHU5ZTc3XHU5ZTc4XHU5ZTc5XHU5ZTdhXHU5ZTdiXHU5ZTdjXHU5ZTdkXHU5ZTgwXHVmZmZkXHU5ZTgxXHU5ZTgzXHU5ZTg0XHU5ZTg1XHU5'@; put 'ZTg2XHU5ZTg5XHU5ZThhXHU5ZThjXHU5ZThkXHU5ZThlXHU5ZThmXHU5ZTkwXHU5ZTkxXHU5ZTk0XHU5ZTk1XHU5ZTk2XHU5ZTk3XHU5ZTk4XHU5ZTk5XHU5ZTlhXHU5ZTliXHU5ZTljXHU5ZTllXHU5ZWEwXHU5ZWExXHU5ZWEyXHU5ZWEzXHU5ZWE0XHU5ZWE1XHU5ZWE3XHU5ZWE4XHU5ZWE5'@; put 'XHU5ZWFhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjUxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNTFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjUxXVtzXV09'@; put 'NjQyNTYrcyxoWzY0MjU2K3NdPWNbMjUxXVtzXSk7Zm9yKGNbMjUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZWFiXHU5ZWFjXHU5ZWFkXHU5ZWFlXHU5ZWFmXHU5ZWIwXHU5ZWIxXHU5ZWIyXHU5ZWIzXHU5ZWI1XHU5ZWI2XHU5'@; put 'ZWI3XHU5ZWI5XHU5ZWJhXHU5ZWJjXHU5ZWJmXHU5ZWMwXHU5ZWMxXHU5ZWMyXHU5ZWMzXHU5ZWM1XHU5ZWM2XHU5ZWM3XHU5ZWM4XHU5ZWNhXHU5ZWNiXHU5ZWNjXHU5ZWQwXHU5ZWQyXHU5ZWQzXHU5ZWQ1XHU5ZWQ2XHU5ZWQ3XHU5ZWQ5XHU5ZWRhXHU5ZWRlXHU5ZWUxXHU5ZWUzXHU5ZWU0'@; put 'XHU5ZWU2XHU5ZWU4XHU5ZWViXHU5ZWVjXHU5ZWVkXHU5ZWVlXHU5ZWYwXHU5ZWYxXHU5ZWYyXHU5ZWYzXHU5ZWY0XHU5ZWY1XHU5ZWY2XHU5ZWY3XHU5ZWY4XHU5ZWZhXHU5ZWZkXHU5ZWZmXHU5ZjAwXHU5ZjAxXHU5ZjAyXHU5ZjAzXHU5ZjA0XHU5ZjA1XHVmZmZkXHU5ZjA2XHU5ZjA3XHU5'@; put 'ZjA4XHU5ZjA5XHU5ZjBhXHU5ZjBjXHU5ZjBmXHU5ZjExXHU5ZjEyXHU5ZjE0XHU5ZjE1XHU5ZjE2XHU5ZjE4XHU5ZjFhXHU5ZjFiXHU5ZjFjXHU5ZjFkXHU5ZjFlXHU5ZjFmXHU5ZjIxXHU5ZjIzXHU5ZjI0XHU5ZjI1XHU5ZjI2XHU5ZjI3XHU5ZjI4XHU5ZjI5XHU5ZjJhXHU5ZjJiXHU5ZjJk'@; put 'XHU5ZjJlXHU5ZjMwXHU5ZjMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjUyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNTJdW3NdLmNoYXJDb2RlQXQoMCkmJih5'@; put 'W2NbMjUyXVtzXV09NjQ1MTIrcyxoWzY0NTEyK3NdPWNbMjUyXVtzXSk7Zm9yKGNbMjUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjMyXHU5ZjMzXHU5ZjM0XHU5ZjM1XHU5ZjM2XHU5ZjM4XHU5ZjNhXHU5ZjNjXHU5ZjNmXHU5'@; put 'ZjQwXHU5ZjQxXHU5ZjQyXHU5ZjQzXHU5ZjQ1XHU5ZjQ2XHU5ZjQ3XHU5ZjQ4XHU5ZjQ5XHU5ZjRhXHU5ZjRiXHU5ZjRjXHU5ZjRkXHU5ZjRlXHU5ZjRmXHU5ZjUyXHU5ZjUzXHU5ZjU0XHU5ZjU1XHU5ZjU2XHU5ZjU3XHU5ZjU4XHU5ZjU5XHU5ZjVhXHU5ZjViXHU5ZjVjXHU5ZjVkXHU5ZjVl'@; put 'XHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjYyXHU5ZjYzXHU5ZjY0XHU5ZjY1XHU5ZjY2XHU5ZjY3XHU5ZjY4XHU5ZjY5XHU5ZjZhXHU5ZjZiXHU5ZjZjXHU5ZjZkXHU5ZjZlXHU5ZjZmXHU5ZjcwXHU5ZjcxXHU5ZjcyXHU5ZjczXHU5Zjc0XHU5Zjc1XHU5Zjc2XHU5Zjc3XHU5Zjc4XHVmZmZkXHU5'@; put 'Zjc5XHU5ZjdhXHU5ZjdiXHU5ZjdjXHU5ZjdkXHU5ZjdlXHU5ZjgxXHU5ZjgyXHU5ZjhkXHU5ZjhlXHU5ZjhmXHU5ZjkwXHU5ZjkxXHU5ZjkyXHU5ZjkzXHU5Zjk0XHU5Zjk1XHU5Zjk2XHU5Zjk3XHU5Zjk4XHU5ZjljXHU5ZjlkXHU5ZjllXHU5ZmExXHU5ZmEyXHU5ZmEzXHU5ZmE0XHU5ZmE1'@; put 'XHVmOTJjXHVmOTc5XHVmOTk1XHVmOWU3XHVmOWYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjUzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNTNdW3NdLmNoYXJD'@; put 'b2RlQXQoMCkmJih5W2NbMjUzXVtzXV09NjQ3NjgrcyxoWzY0NzY4K3NdPWNbMjUzXVtzXSk7Zm9yKGNbMjU0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmYTBjXHVmYTBkXHVmYTBlXHVmYTBmXHVmYTExXHVmYTEzXHVmYTE0XHVm'@; put 'YTE4XHVmYTFmXHVmYTIwXHVmYTIxXHVmYTIzXHVmYTI0XHVmYTI3XHVmYTI4XHVmYTI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjU0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sy'@; put 'NTRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjU0XVtzXV09NjUwMjQrcyxoWzY1MDI0K3NdPWNbMjU0XVtzXSk7cmV0dXJue2VuYzp5LGRlYzpofX0oKSxqWzk0OV09ZnVuY3Rpb24oKXt2YXIgcyxoPVtdLHk9e30sYz1bXTtmb3IoY1swXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZc'@; put 'eDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWpr'@; put 'bG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1swXS5sZW5ndGg7Kytz'@; put 'KTY1NTMzIT09Y1swXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzBdW3NdXT0wK3MsaFswK3NdPWNbMF1bc10pO2ZvcihjWzEyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWMwMlx1YWMwM1x1YWMwNVx1YWMwNlx1YWMw'@; put 'Ylx1YWMwY1x1YWMwZFx1YWMwZVx1YWMwZlx1YWMxOFx1YWMxZVx1YWMxZlx1YWMyMVx1YWMyMlx1YWMyM1x1YWMyNVx1YWMyNlx1YWMyN1x1YWMyOFx1YWMyOVx1YWMyYVx1YWMyYlx1YWMyZVx1YWMzMlx1YWMzM1x1YWMzNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'YWMzNVx1YWMzNlx1YWMzN1x1YWMzYVx1YWMzYlx1YWMzZFx1YWMzZVx1YWMzZlx1YWM0MVx1YWM0Mlx1YWM0M1x1YWM0NFx1YWM0NVx1YWM0Nlx1YWM0N1x1YWM0OFx1YWM0OVx1YWM0YVx1YWM0Y1x1YWM0ZVx1YWM0Zlx1YWM1MFx1YWM1MVx1YWM1Mlx1YWM1M1x1YWM1NVx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWM1Nlx1YWM1N1x1YWM1OVx1YWM1YVx1YWM1Ylx1YWM1ZFx1YWM1ZVx1YWM1Zlx1YWM2MFx1YWM2MVx1YWM2Mlx1YWM2M1x1YWM2NFx1YWM2NVx1YWM2Nlx1YWM2N1x1YWM2OFx1YWM2OVx1YWM2YVx1YWM2Ylx1YWM2Y1x1YWM2ZFx1YWM2ZVx1'@; put 'YWM2Zlx1YWM3Mlx1YWM3M1x1YWM3NVx1YWM3Nlx1YWM3OVx1YWM3Ylx1YWM3Y1x1YWM3ZFx1YWM3ZVx1YWM3Zlx1YWM4Mlx1YWM4N1x1YWM4OFx1YWM4ZFx1YWM4ZVx1YWM4Zlx1YWM5MVx1YWM5Mlx1YWM5M1x1YWM5NVx1YWM5Nlx1YWM5N1x1YWM5OFx1YWM5OVx1YWM5YVx1YWM5Ylx1YWM5'@; put 'ZVx1YWNhMlx1YWNhM1x1YWNhNFx1YWNhNVx1YWNhNlx1YWNhN1x1YWNhYlx1YWNhZFx1YWNhZVx1YWNiMVx1YWNiMlx1YWNiM1x1YWNiNFx1YWNiNVx1YWNiNlx1YWNiN1x1YWNiYVx1YWNiZVx1YWNiZlx1YWNjMFx1YWNjMlx1YWNjM1x1YWNjNVx1YWNjNlx1YWNjN1x1YWNjOVx1YWNjYVx1'@; put 'YWNjYlx1YWNjZFx1YWNjZVx1YWNjZlx1YWNkMFx1YWNkMVx1YWNkMlx1YWNkM1x1YWNkNFx1YWNkNlx1YWNkOFx1YWNkOVx1YWNkYVx1YWNkYlx1YWNkY1x1YWNkZFx1YWNkZVx1YWNkZlx1YWNlMlx1YWNlM1x1YWNlNVx1YWNlNlx1YWNlOVx1YWNlYlx1YWNlZFx1YWNlZVx1YWNmMlx1YWNm'@; put 'NFx1YWNmN1x1YWNmOFx1YWNmOVx1YWNmYVx1YWNmYlx1YWNmZVx1YWNmZlx1YWQwMVx1YWQwMlx1YWQwM1x1YWQwNVx1YWQwN1x1YWQwOFx1YWQwOVx1YWQwYVx1YWQwYlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEyOV0ubGVuZ3RoOysrcyk2'@; put 'NTUzMyE9PWNbMTI5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEyOV1bc11dPTMzMDI0K3MsaFszMzAyNCtzXT1jWzEyOV1bc10pO2ZvcihjWzEzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWQxNFx1YWQxNVx1YWQx'@; put 'Nlx1YWQxN1x1YWQxOVx1YWQxYVx1YWQxYlx1YWQxZFx1YWQxZVx1YWQxZlx1YWQyMVx1YWQyMlx1YWQyM1x1YWQyNFx1YWQyNVx1YWQyNlx1YWQyN1x1YWQyOFx1YWQyYVx1YWQyYlx1YWQyZVx1YWQyZlx1YWQzMFx1YWQzMVx1YWQzMlx1YWQzM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1YWQzNlx1YWQzN1x1YWQzOVx1YWQzYVx1YWQzYlx1YWQzZFx1YWQzZVx1YWQzZlx1YWQ0MFx1YWQ0MVx1YWQ0Mlx1YWQ0M1x1YWQ0Nlx1YWQ0OFx1YWQ0YVx1YWQ0Ylx1YWQ0Y1x1YWQ0ZFx1YWQ0ZVx1YWQ0Zlx1YWQ1MVx1YWQ1Mlx1YWQ1M1x1YWQ1NVx1YWQ1Nlx1YWQ1'@; put 'N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWQ1OVx1YWQ1YVx1YWQ1Ylx1YWQ1Y1x1YWQ1ZFx1YWQ1ZVx1YWQ1Zlx1YWQ2MFx1YWQ2Mlx1YWQ2NFx1YWQ2NVx1YWQ2Nlx1YWQ2N1x1YWQ2OFx1YWQ2OVx1YWQ2YVx1YWQ2Ylx1YWQ2ZVx1YWQ2Zlx1YWQ3MVx1YWQ3Mlx1'@; put 'YWQ3N1x1YWQ3OFx1YWQ3OVx1YWQ3YVx1YWQ3ZVx1YWQ4MFx1YWQ4M1x1YWQ4NFx1YWQ4NVx1YWQ4Nlx1YWQ4N1x1YWQ4YVx1YWQ4Ylx1YWQ4ZFx1YWQ4ZVx1YWQ4Zlx1YWQ5MVx1YWQ5Mlx1YWQ5M1x1YWQ5NFx1YWQ5NVx1YWQ5Nlx1YWQ5N1x1YWQ5OFx1YWQ5OVx1YWQ5YVx1YWQ5Ylx1YWQ5'@; put 'ZVx1YWQ5Zlx1YWRhMFx1YWRhMVx1YWRhMlx1YWRhM1x1YWRhNVx1YWRhNlx1YWRhN1x1YWRhOFx1YWRhOVx1YWRhYVx1YWRhYlx1YWRhY1x1YWRhZFx1YWRhZVx1YWRhZlx1YWRiMFx1YWRiMVx1YWRiMlx1YWRiM1x1YWRiNFx1YWRiNVx1YWRiNlx1YWRiOFx1YWRiOVx1YWRiYVx1YWRiYlx1'@; put 'YWRiY1x1YWRiZFx1YWRiZVx1YWRiZlx1YWRjMlx1YWRjM1x1YWRjNVx1YWRjNlx1YWRjN1x1YWRjOVx1YWRjYVx1YWRjYlx1YWRjY1x1YWRjZFx1YWRjZVx1YWRjZlx1YWRkMlx1YWRkNFx1YWRkNVx1YWRkNlx1YWRkN1x1YWRkOFx1YWRkOVx1YWRkYVx1YWRkYlx1YWRkZFx1YWRkZVx1YWRk'@; put 'Zlx1YWRlMVx1YWRlMlx1YWRlM1x1YWRlNVx1YWRlNlx1YWRlN1x1YWRlOFx1YWRlOVx1YWRlYVx1YWRlYlx1YWRlY1x1YWRlZFx1YWRlZVx1YWRlZlx1YWRmMFx1YWRmMVx1YWRmMlx1YWRmM1x1YWRmNFx1YWRmNVx1YWRmNlx1YWRmN1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzMF0u'@; put 'bGVuZ3RoOysrcyk2NTUzMyE9PWNbMTMwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzMF1bc11dPTMzMjgwK3MsaFszMzI4MCtzXT1jWzEzMF1bc10pO2ZvcihjWzEzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWRm'@; put 'YVx1YWRmYlx1YWRmZFx1YWRmZVx1YWUwMlx1YWUwM1x1YWUwNFx1YWUwNVx1YWUwNlx1YWUwN1x1YWUwYVx1YWUwY1x1YWUwZVx1YWUwZlx1YWUxMFx1YWUxMVx1YWUxMlx1YWUxM1x1YWUxNVx1YWUxNlx1YWUxN1x1YWUxOFx1YWUxOVx1YWUxYVx1YWUxYlx1YWUxY1x1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWUxZFx1YWUxZVx1YWUxZlx1YWUyMFx1YWUyMVx1YWUyMlx1YWUyM1x1YWUyNFx1YWUyNVx1YWUyNlx1YWUyN1x1YWUyOFx1YWUyOVx1YWUyYVx1YWUyYlx1YWUyY1x1YWUyZFx1YWUyZVx1YWUyZlx1YWUzMlx1YWUzM1x1YWUzNVx1YWUzNlx1YWUz'@; put 'OVx1YWUzYlx1YWUzY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWUzZFx1YWUzZVx1YWUzZlx1YWU0Mlx1YWU0NFx1YWU0N1x1YWU0OFx1YWU0OVx1YWU0Ylx1YWU0Zlx1YWU1MVx1YWU1Mlx1YWU1M1x1YWU1NVx1YWU1N1x1YWU1OFx1YWU1OVx1YWU1YVx1YWU1Ylx1'@; put 'YWU1ZVx1YWU2Mlx1YWU2M1x1YWU2NFx1YWU2Nlx1YWU2N1x1YWU2YVx1YWU2Ylx1YWU2ZFx1YWU2ZVx1YWU2Zlx1YWU3MVx1YWU3Mlx1YWU3M1x1YWU3NFx1YWU3NVx1YWU3Nlx1YWU3N1x1YWU3YVx1YWU3ZVx1YWU3Zlx1YWU4MFx1YWU4MVx1YWU4Mlx1YWU4M1x1YWU4Nlx1YWU4N1x1YWU4'@; put 'OFx1YWU4OVx1YWU4YVx1YWU4Ylx1YWU4ZFx1YWU4ZVx1YWU4Zlx1YWU5MFx1YWU5MVx1YWU5Mlx1YWU5M1x1YWU5NFx1YWU5NVx1YWU5Nlx1YWU5N1x1YWU5OFx1YWU5OVx1YWU5YVx1YWU5Ylx1YWU5Y1x1YWU5ZFx1YWU5ZVx1YWU5Zlx1YWVhMFx1YWVhMVx1YWVhMlx1YWVhM1x1YWVhNFx1'@; put 'YWVhNVx1YWVhNlx1YWVhN1x1YWVhOFx1YWVhOVx1YWVhYVx1YWVhYlx1YWVhY1x1YWVhZFx1YWVhZVx1YWVhZlx1YWViMFx1YWViMVx1YWViMlx1YWViM1x1YWViNFx1YWViNVx1YWViNlx1YWViN1x1YWViOFx1YWViOVx1YWViYVx1YWViYlx1YWViZlx1YWVjMVx1YWVjMlx1YWVjM1x1YWVj'@; put 'NVx1YWVjNlx1YWVjN1x1YWVjOFx1YWVjOVx1YWVjYVx1YWVjYlx1YWVjZVx1YWVkMlx1YWVkM1x1YWVkNFx1YWVkNVx1YWVkNlx1YWVkN1x1YWVkYVx1YWVkYlx1YWVkZFx1YWVkZVx1YWVkZlx1YWVlMFx1YWVlMVx1YWVlMlx1YWVlM1x1YWVlNFx1YWVlNVx1ZmZmZCIuc3BsaXQoIiIpLHM9'@; put 'MDtzIT1jWzEzMV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTMxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzMV1bc11dPTMzNTM2K3MsaFszMzUzNitzXT1jWzEzMV1bc10pO2ZvcihjWzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1YWVlNlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZVx1YWVlZlx1YWVmMFx1YWVmMVx1YWVmMlx1YWVmM1x1YWVmNVx1YWVmNlx1YWVmN1x1YWVmOVx1YWVmYVx1YWVmYlx1YWVmZFx1YWVmZVx1YWVmZlx1YWYwMFx1YWYwMVx1YWYwMlx1YWYwM1x1YWYwNFx1YWYwNVx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYwNlx1YWYwOVx1YWYwYVx1YWYwYlx1YWYwY1x1YWYwZVx1YWYwZlx1YWYxMVx1YWYxMlx1YWYxM1x1YWYxNFx1YWYxNVx1YWYxNlx1YWYxN1x1YWYxOFx1YWYxOVx1YWYxYVx1YWYxYlx1YWYxY1x1YWYxZFx1YWYxZVx1YWYx'@; put 'Zlx1YWYyMFx1YWYyMVx1YWYyMlx1YWYyM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYyNFx1YWYyNVx1YWYyNlx1YWYyN1x1YWYyOFx1YWYyOVx1YWYyYVx1YWYyYlx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYzNVx1YWYzNlx1YWYzN1x1YWYzOFx1YWYzOVx1'@; put 'YWYzYVx1YWYzYlx1YWYzZVx1YWY0MFx1YWY0NFx1YWY0NVx1YWY0Nlx1YWY0N1x1YWY0YVx1YWY0Ylx1YWY0Y1x1YWY0ZFx1YWY0ZVx1YWY0Zlx1YWY1MVx1YWY1Mlx1YWY1M1x1YWY1NFx1YWY1NVx1YWY1Nlx1YWY1N1x1YWY1OFx1YWY1OVx1YWY1YVx1YWY1Ylx1YWY1ZVx1YWY1Zlx1YWY2'@; put 'MFx1YWY2MVx1YWY2Mlx1YWY2M1x1YWY2Nlx1YWY2N1x1YWY2OFx1YWY2OVx1YWY2YVx1YWY2Ylx1YWY2Y1x1YWY2ZFx1YWY2ZVx1YWY2Zlx1YWY3MFx1YWY3MVx1YWY3Mlx1YWY3M1x1YWY3NFx1YWY3NVx1YWY3Nlx1YWY3N1x1YWY3OFx1YWY3YVx1YWY3Ylx1YWY3Y1x1YWY3ZFx1YWY3ZVx1'@; put 'YWY3Zlx1YWY4MVx1YWY4Mlx1YWY4M1x1YWY4NVx1YWY4Nlx1YWY4N1x1YWY4OVx1YWY4YVx1YWY4Ylx1YWY4Y1x1YWY4ZFx1YWY4ZVx1YWY4Zlx1YWY5Mlx1YWY5M1x1YWY5NFx1YWY5Nlx1YWY5N1x1YWY5OFx1YWY5OVx1YWY5YVx1YWY5Ylx1YWY5ZFx1YWY5ZVx1YWY5Zlx1YWZhMFx1YWZh'@; put 'MVx1YWZhMlx1YWZhM1x1YWZhNFx1YWZhNVx1YWZhNlx1YWZhN1x1YWZhOFx1YWZhOVx1YWZhYVx1YWZhYlx1YWZhY1x1YWZhZFx1YWZhZVx1YWZhZlx1YWZiMFx1YWZiMVx1YWZiMlx1YWZiM1x1YWZiNFx1YWZiNVx1YWZiNlx1YWZiN1x1YWZiYVx1YWZiYlx1YWZiZFx1YWZiZVx1ZmZmZCIu'@; put 'c3BsaXQoIiIpLHM9MDtzIT1jWzEzMl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTMyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzMl1bc11dPTMzNzkyK3MsaFszMzc5MitzXT1jWzEzMl1bc10pO2ZvcihjWzEzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWZiZlx1YWZjMVx1YWZjMlx1YWZjM1x1YWZjNFx1YWZjNVx1YWZjNlx1YWZjYVx1YWZjY1x1YWZjZlx1YWZkMFx1YWZkMVx1YWZkMlx1YWZkM1x1YWZkNVx1YWZkNlx1YWZkN1x1YWZkOFx1YWZkOVx1YWZkYVx1YWZkYlx1YWZkZFx1YWZkZVx1YWZkZlx1'@; put 'YWZlMFx1YWZlMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWZlMlx1YWZlM1x1YWZlNFx1YWZlNVx1YWZlNlx1YWZlN1x1YWZlYVx1YWZlYlx1YWZlY1x1YWZlZFx1YWZlZVx1YWZlZlx1YWZmMlx1YWZmM1x1YWZmNVx1YWZmNlx1YWZmN1x1YWZmOVx1YWZmYVx1YWZm'@; put 'Ylx1YWZmY1x1YWZmZFx1YWZmZVx1YWZmZlx1YjAwMlx1YjAwM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjAwNVx1YjAwNlx1YjAwN1x1YjAwOFx1YjAwOVx1YjAwYVx1YjAwYlx1YjAwZFx1YjAwZVx1YjAwZlx1YjAxMVx1YjAxMlx1YjAxM1x1YjAxNVx1YjAxNlx1'@; put 'YjAxN1x1YjAxOFx1YjAxOVx1YjAxYVx1YjAxYlx1YjAxZVx1YjAxZlx1YjAyMFx1YjAyMVx1YjAyMlx1YjAyM1x1YjAyNFx1YjAyNVx1YjAyNlx1YjAyN1x1YjAyOVx1YjAyYVx1YjAyYlx1YjAyY1x1YjAyZFx1YjAyZVx1YjAyZlx1YjAzMFx1YjAzMVx1YjAzMlx1YjAzM1x1YjAzNFx1YjAz'@; put 'NVx1YjAzNlx1YjAzN1x1YjAzOFx1YjAzOVx1YjAzYVx1YjAzYlx1YjAzY1x1YjAzZFx1YjAzZVx1YjAzZlx1YjA0MFx1YjA0MVx1YjA0Mlx1YjA0M1x1YjA0Nlx1YjA0N1x1YjA0OVx1YjA0Ylx1YjA0ZFx1YjA0Zlx1YjA1MFx1YjA1MVx1YjA1Mlx1YjA1Nlx1YjA1OFx1YjA1YVx1YjA1Ylx1'@; put 'YjA1Y1x1YjA1ZVx1YjA1Zlx1YjA2MFx1YjA2MVx1YjA2Mlx1YjA2M1x1YjA2NFx1YjA2NVx1YjA2Nlx1YjA2N1x1YjA2OFx1YjA2OVx1YjA2YVx1YjA2Ylx1YjA2Y1x1YjA2ZFx1YjA2ZVx1YjA2Zlx1YjA3MFx1YjA3MVx1YjA3Mlx1YjA3M1x1YjA3NFx1YjA3NVx1YjA3Nlx1YjA3N1x1YjA3'@; put 'OFx1YjA3OVx1YjA3YVx1YjA3Ylx1YjA3ZVx1YjA3Zlx1YjA4MVx1YjA4Mlx1YjA4M1x1YjA4NVx1YjA4Nlx1YjA4N1x1YjA4OFx1YjA4OVx1YjA4YVx1YjA4Ylx1YjA4ZVx1YjA5MFx1YjA5Mlx1YjA5M1x1YjA5NFx1YjA5NVx1YjA5Nlx1YjA5N1x1YjA5Ylx1YjA5ZFx1YjA5ZVx1YjBhM1x1'@; put 'YjBhNFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzM10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTMzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzM11bc11dPTM0MDQ4K3MsaFszNDA0OCtzXT1jWzEzM11bc10pO2ZvcihjWzEzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjBhNVx1YjBhNlx1YjBhN1x1YjBhYVx1YjBiMFx1YjBiMlx1YjBiNlx1YjBiN1x1YjBiOVx1YjBiYVx1YjBiYlx1YjBiZFx1YjBiZVx1YjBiZlx1YjBjMFx1YjBjMVx1YjBjMlx1YjBjM1x1YjBjNlx1YjBjYVx1YjBjYlx1YjBjY1x1'@; put 'YjBjZFx1YjBjZVx1YjBjZlx1YjBkMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjBkM1x1YjBkNVx1YjBkNlx1YjBkN1x1YjBkOVx1YjBkYVx1YjBkYlx1YjBkY1x1YjBkZFx1YjBkZVx1YjBkZlx1YjBlMVx1YjBlMlx1YjBlM1x1YjBlNFx1YjBlNlx1YjBlN1x1YjBl'@; put 'OFx1YjBlOVx1YjBlYVx1YjBlYlx1YjBlY1x1YjBlZFx1YjBlZVx1YjBlZlx1YjBmMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjBmMVx1YjBmMlx1YjBmM1x1YjBmNFx1YjBmNVx1YjBmNlx1YjBmN1x1YjBmOFx1YjBmOVx1YjBmYVx1YjBmYlx1YjBmY1x1YjBmZFx1'@; put 'YjBmZVx1YjBmZlx1YjEwMFx1YjEwMVx1YjEwMlx1YjEwM1x1YjEwNFx1YjEwNVx1YjEwNlx1YjEwN1x1YjEwYVx1YjEwZFx1YjEwZVx1YjEwZlx1YjExMVx1YjExNFx1YjExNVx1YjExNlx1YjExN1x1YjExYVx1YjExZVx1YjExZlx1YjEyMFx1YjEyMVx1YjEyMlx1YjEyNlx1YjEyN1x1YjEy'@; put 'OVx1YjEyYVx1YjEyYlx1YjEyZFx1YjEyZVx1YjEyZlx1YjEzMFx1YjEzMVx1YjEzMlx1YjEzM1x1YjEzNlx1YjEzYVx1YjEzYlx1YjEzY1x1YjEzZFx1YjEzZVx1YjEzZlx1YjE0Mlx1YjE0M1x1YjE0NVx1YjE0Nlx1YjE0N1x1YjE0OVx1YjE0YVx1YjE0Ylx1YjE0Y1x1YjE0ZFx1YjE0ZVx1'@; put 'YjE0Zlx1YjE1Mlx1YjE1M1x1YjE1Nlx1YjE1N1x1YjE1OVx1YjE1YVx1YjE1Ylx1YjE1ZFx1YjE1ZVx1YjE1Zlx1YjE2MVx1YjE2Mlx1YjE2M1x1YjE2NFx1YjE2NVx1YjE2Nlx1YjE2N1x1YjE2OFx1YjE2OVx1YjE2YVx1YjE2Ylx1YjE2Y1x1YjE2ZFx1YjE2ZVx1YjE2Zlx1YjE3MFx1YjE3'@; put 'MVx1YjE3Mlx1YjE3M1x1YjE3NFx1YjE3NVx1YjE3Nlx1YjE3N1x1YjE3YVx1YjE3Ylx1YjE3ZFx1YjE3ZVx1YjE3Zlx1YjE4MVx1YjE4M1x1YjE4NFx1YjE4NVx1YjE4Nlx1YjE4N1x1YjE4YVx1YjE4Y1x1YjE4ZVx1YjE4Zlx1YjE5MFx1YjE5MVx1YjE5NVx1YjE5Nlx1YjE5N1x1YjE5OVx1'@; put 'YjE5YVx1YjE5Ylx1YjE5ZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzNF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzNF1bc11dPTM0MzA0K3MsaFszNDMwNCtzXT1jWzEzNF1bc10pO2ZvcihjWzEzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjE5ZVx1YjE5Zlx1YjFhMFx1YjFhMVx1YjFhMlx1YjFhM1x1YjFhNFx1YjFhNVx1YjFhNlx1YjFhN1x1YjFhOVx1YjFhYVx1YjFhYlx1YjFhY1x1YjFhZFx1YjFhZVx1YjFhZlx1YjFiMFx1YjFiMVx1YjFiMlx1'@; put 'YjFiM1x1YjFiNFx1YjFiNVx1YjFiNlx1YjFiN1x1YjFiOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFiOVx1YjFiYVx1YjFiYlx1YjFiY1x1YjFiZFx1YjFiZVx1YjFiZlx1YjFjMFx1YjFjMVx1YjFjMlx1YjFjM1x1YjFjNFx1YjFjNVx1YjFjNlx1YjFjN1x1YjFj'@; put 'OFx1YjFjOVx1YjFjYVx1YjFjYlx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFkNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFkNlx1YjFkN1x1YjFkOFx1YjFkOVx1YjFkYVx1YjFkYlx1YjFkZVx1YjFlMFx1YjFlMVx1YjFlMlx1YjFlM1x1'@; put 'YjFlNFx1YjFlNVx1YjFlNlx1YjFlN1x1YjFlYVx1YjFlYlx1YjFlZFx1YjFlZVx1YjFlZlx1YjFmMVx1YjFmMlx1YjFmM1x1YjFmNFx1YjFmNVx1YjFmNlx1YjFmN1x1YjFmOFx1YjFmYVx1YjFmY1x1YjFmZVx1YjFmZlx1YjIwMFx1YjIwMVx1YjIwMlx1YjIwM1x1YjIwNlx1YjIwN1x1YjIw'@; put 'OVx1YjIwYVx1YjIwZFx1YjIwZVx1YjIwZlx1YjIxMFx1YjIxMVx1YjIxMlx1YjIxM1x1YjIxNlx1YjIxOFx1YjIxYVx1YjIxYlx1YjIxY1x1YjIxZFx1YjIxZVx1YjIxZlx1YjIyMVx1YjIyMlx1YjIyM1x1YjIyNFx1YjIyNVx1YjIyNlx1YjIyN1x1YjIyOFx1YjIyOVx1YjIyYVx1YjIyYlx1'@; put 'YjIyY1x1YjIyZFx1YjIyZVx1YjIyZlx1YjIzMFx1YjIzMVx1YjIzMlx1YjIzM1x1YjIzNVx1YjIzNlx1YjIzN1x1YjIzOFx1YjIzOVx1YjIzYVx1YjIzYlx1YjIzZFx1YjIzZVx1YjIzZlx1YjI0MFx1YjI0MVx1YjI0Mlx1YjI0M1x1YjI0NFx1YjI0NVx1YjI0Nlx1YjI0N1x1YjI0OFx1YjI0'@; put 'OVx1YjI0YVx1YjI0Ylx1YjI0Y1x1YjI0ZFx1YjI0ZVx1YjI0Zlx1YjI1MFx1YjI1MVx1YjI1Mlx1YjI1M1x1YjI1NFx1YjI1NVx1YjI1Nlx1YjI1N1x1YjI1OVx1YjI1YVx1YjI1Ylx1YjI1ZFx1YjI1ZVx1YjI1Zlx1YjI2MVx1YjI2Mlx1YjI2M1x1YjI2NFx1YjI2NVx1YjI2Nlx1YjI2N1x1'@; put 'YjI2YVx1YjI2Ylx1YjI2Y1x1YjI2ZFx1YjI2ZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzNV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzNV1bc11dPTM0NTYwK3MsaFszNDU2MCtzXT1jWzEzNV1bc10pO2ZvcihjWzEzNl09Ilx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjI2Zlx1YjI3MFx1YjI3MVx1YjI3Mlx1YjI3M1x1YjI3Nlx1YjI3N1x1YjI3OFx1YjI3OVx1YjI3YVx1YjI3Ylx1YjI3ZFx1YjI3ZVx1YjI3Zlx1YjI4MFx1YjI4MVx1YjI4Mlx1YjI4M1x1'@; put 'YjI4Nlx1YjI4N1x1YjI4OFx1YjI4YVx1YjI4Ylx1YjI4Y1x1YjI4ZFx1YjI4ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjI4Zlx1YjI5Mlx1YjI5M1x1YjI5NVx1YjI5Nlx1YjI5N1x1YjI5Ylx1YjI5Y1x1YjI5ZFx1YjI5ZVx1YjI5Zlx1YjJhMlx1YjJhNFx1YjJh'@; put 'N1x1YjJhOFx1YjJhOVx1YjJhYlx1YjJhZFx1YjJhZVx1YjJhZlx1YjJiMVx1YjJiMlx1YjJiM1x1YjJiNVx1YjJiNlx1YjJiN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjJiOFx1YjJiOVx1YjJiYVx1YjJiYlx1YjJiY1x1YjJiZFx1YjJiZVx1YjJiZlx1YjJjMFx1'@; put 'YjJjMVx1YjJjMlx1YjJjM1x1YjJjNFx1YjJjNVx1YjJjNlx1YjJjN1x1YjJjYVx1YjJjYlx1YjJjZFx1YjJjZVx1YjJjZlx1YjJkMVx1YjJkM1x1YjJkNFx1YjJkNVx1YjJkNlx1YjJkN1x1YjJkYVx1YjJkY1x1YjJkZVx1YjJkZlx1YjJlMFx1YjJlMVx1YjJlM1x1YjJlN1x1YjJlOVx1YjJl'@; put 'YVx1YjJmMFx1YjJmMVx1YjJmMlx1YjJmNlx1YjJmY1x1YjJmZFx1YjJmZVx1YjMwMlx1YjMwM1x1YjMwNVx1YjMwNlx1YjMwN1x1YjMwOVx1YjMwYVx1YjMwYlx1YjMwY1x1YjMwZFx1YjMwZVx1YjMwZlx1YjMxMlx1YjMxNlx1YjMxN1x1YjMxOFx1YjMxOVx1YjMxYVx1YjMxYlx1YjMxZFx1'@; put 'YjMxZVx1YjMxZlx1YjMyMFx1YjMyMVx1YjMyMlx1YjMyM1x1YjMyNFx1YjMyNVx1YjMyNlx1YjMyN1x1YjMyOFx1YjMyOVx1YjMyYVx1YjMyYlx1YjMyY1x1YjMyZFx1YjMyZVx1YjMyZlx1YjMzMFx1YjMzMVx1YjMzMlx1YjMzM1x1YjMzNFx1YjMzNVx1YjMzNlx1YjMzN1x1YjMzOFx1YjMz'@; put 'OVx1YjMzYVx1YjMzYlx1YjMzY1x1YjMzZFx1YjMzZVx1YjMzZlx1YjM0MFx1YjM0MVx1YjM0Mlx1YjM0M1x1YjM0NFx1YjM0NVx1YjM0Nlx1YjM0N1x1YjM0OFx1YjM0OVx1YjM0YVx1YjM0Ylx1YjM0Y1x1YjM0ZFx1YjM0ZVx1YjM0Zlx1YjM1MFx1YjM1MVx1YjM1Mlx1YjM1M1x1YjM1N1x1'@; put 'YjM1OVx1YjM1YVx1YjM1ZFx1YjM2MFx1YjM2MVx1YjM2Mlx1YjM2M1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzNl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzNl1bc11dPTM0ODE2K3MsaFszNDgxNitzXT1jWzEzNl1bc10pO2Zvcihj'@; put 'WzEzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjM2Nlx1YjM2OFx1YjM2YVx1YjM2Y1x1YjM2ZFx1YjM2Zlx1YjM3Mlx1YjM3M1x1YjM3NVx1YjM3Nlx1YjM3N1x1YjM3OVx1YjM3YVx1YjM3Ylx1YjM3Y1x1YjM3ZFx1'@; put 'YjM3ZVx1YjM3Zlx1YjM4Mlx1YjM4Nlx1YjM4N1x1YjM4OFx1YjM4OVx1YjM4YVx1YjM4Ylx1YjM4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjM4ZVx1YjM4Zlx1YjM5MVx1YjM5Mlx1YjM5M1x1YjM5NVx1YjM5Nlx1YjM5N1x1YjM5OFx1YjM5OVx1YjM5YVx1YjM5'@; put 'Ylx1YjM5Y1x1YjM5ZFx1YjM5ZVx1YjM5Zlx1YjNhMlx1YjNhM1x1YjNhNFx1YjNhNVx1YjNhNlx1YjNhN1x1YjNhOVx1YjNhYVx1YjNhYlx1YjNhZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjNhZVx1YjNhZlx1YjNiMFx1YjNiMVx1YjNiMlx1YjNiM1x1YjNiNFx1'@; put 'YjNiNVx1YjNiNlx1YjNiN1x1YjNiOFx1YjNiOVx1YjNiYVx1YjNiYlx1YjNiY1x1YjNiZFx1YjNiZVx1YjNiZlx1YjNjMFx1YjNjMVx1YjNjMlx1YjNjM1x1YjNjNlx1YjNjN1x1YjNjOVx1YjNjYVx1YjNjZFx1YjNjZlx1YjNkMVx1YjNkMlx1YjNkM1x1YjNkNlx1YjNkOFx1YjNkYVx1YjNk'@; put 'Y1x1YjNkZVx1YjNkZlx1YjNlMVx1YjNlMlx1YjNlM1x1YjNlNVx1YjNlNlx1YjNlN1x1YjNlOVx1YjNlYVx1YjNlYlx1YjNlY1x1YjNlZFx1YjNlZVx1YjNlZlx1YjNmMFx1YjNmMVx1YjNmMlx1YjNmM1x1YjNmNFx1YjNmNVx1YjNmNlx1YjNmN1x1YjNmOFx1YjNmOVx1YjNmYVx1YjNmYlx1'@; put 'YjNmZFx1YjNmZVx1YjNmZlx1YjQwMFx1YjQwMVx1YjQwMlx1YjQwM1x1YjQwNFx1YjQwNVx1YjQwNlx1YjQwN1x1YjQwOFx1YjQwOVx1YjQwYVx1YjQwYlx1YjQwY1x1YjQwZFx1YjQwZVx1YjQwZlx1YjQxMVx1YjQxMlx1YjQxM1x1YjQxNFx1YjQxNVx1YjQxNlx1YjQxN1x1YjQxOVx1YjQx'@; put 'YVx1YjQxYlx1YjQxZFx1YjQxZVx1YjQxZlx1YjQyMVx1YjQyMlx1YjQyM1x1YjQyNFx1YjQyNVx1YjQyNlx1YjQyN1x1YjQyYVx1YjQyY1x1YjQyZFx1YjQyZVx1YjQyZlx1YjQzMFx1YjQzMVx1YjQzMlx1YjQzM1x1YjQzNVx1YjQzNlx1YjQzN1x1YjQzOFx1YjQzOVx1YjQzYVx1YjQzYlx1'@; put 'YjQzY1x1YjQzZFx1YjQzZVx1YjQzZlx1YjQ0MFx1YjQ0MVx1YjQ0Mlx1YjQ0M1x1YjQ0NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzN11bc11dPTM1MDcyK3MsaFszNTA3MitzXT1jWzEz'@; put 'N11bc10pO2ZvcihjWzEzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ0NVx1YjQ0Nlx1YjQ0N1x1YjQ0OFx1YjQ0OVx1YjQ0YVx1YjQ0Ylx1YjQ0Y1x1YjQ0ZFx1YjQ0ZVx1YjQ0Zlx1YjQ1Mlx1YjQ1M1x1YjQ1NVx1'@; put 'YjQ1Nlx1YjQ1N1x1YjQ1OVx1YjQ1YVx1YjQ1Ylx1YjQ1Y1x1YjQ1ZFx1YjQ1ZVx1YjQ1Zlx1YjQ2Mlx1YjQ2NFx1YjQ2Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ2N1x1YjQ2OFx1YjQ2OVx1YjQ2YVx1YjQ2Ylx1YjQ2ZFx1YjQ2ZVx1YjQ2Zlx1YjQ3MFx1YjQ3'@; put 'MVx1YjQ3Mlx1YjQ3M1x1YjQ3NFx1YjQ3NVx1YjQ3Nlx1YjQ3N1x1YjQ3OFx1YjQ3OVx1YjQ3YVx1YjQ3Ylx1YjQ3Y1x1YjQ3ZFx1YjQ3ZVx1YjQ3Zlx1YjQ4MVx1YjQ4Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ4M1x1YjQ4NFx1YjQ4NVx1YjQ4Nlx1YjQ4N1x1'@; put 'YjQ4OVx1YjQ4YVx1YjQ4Ylx1YjQ4Y1x1YjQ4ZFx1YjQ4ZVx1YjQ4Zlx1YjQ5MFx1YjQ5MVx1YjQ5Mlx1YjQ5M1x1YjQ5NFx1YjQ5NVx1YjQ5Nlx1YjQ5N1x1YjQ5OFx1YjQ5OVx1YjQ5YVx1YjQ5Ylx1YjQ5Y1x1YjQ5ZVx1YjQ5Zlx1YjRhMFx1YjRhMVx1YjRhMlx1YjRhM1x1YjRhNVx1YjRh'@; put 'Nlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZFx1YjRhZVx1YjRhZlx1YjRiMFx1YjRiMVx1YjRiMlx1YjRiM1x1YjRiNFx1YjRiNlx1YjRiOFx1YjRiYVx1YjRiYlx1YjRiY1x1YjRiZFx1YjRiZVx1YjRiZlx1YjRjMVx1YjRjMlx1YjRjM1x1YjRjNVx1YjRjNlx1YjRjN1x1YjRjOVx1'@; put 'YjRjYVx1YjRjYlx1YjRjY1x1YjRjZFx1YjRjZVx1YjRjZlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRkNFx1YjRkNlx1YjRkN1x1YjRkOFx1YjRkOVx1YjRkYVx1YjRkYlx1YjRkZVx1YjRkZlx1YjRlMVx1YjRlMlx1YjRlNVx1YjRlN1x1YjRlOFx1YjRlOVx1YjRlYVx1YjRlYlx1YjRlZVx1YjRm'@; put 'MFx1YjRmMlx1YjRmM1x1YjRmNFx1YjRmNVx1YjRmNlx1YjRmN1x1YjRmOVx1YjRmYVx1YjRmYlx1YjRmY1x1YjRmZFx1YjRmZVx1YjRmZlx1YjUwMFx1YjUwMVx1YjUwMlx1YjUwM1x1YjUwNFx1YjUwNVx1YjUwNlx1YjUwN1x1YjUwOFx1YjUwOVx1YjUwYVx1YjUwYlx1YjUwY1x1YjUwZFx1'@; put 'YjUwZVx1YjUwZlx1YjUxMFx1YjUxMVx1YjUxMlx1YjUxM1x1YjUxNlx1YjUxN1x1YjUxOVx1YjUxYVx1YjUxZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzOF1bc11dPTM1MzI4K3MsaFsz'@; put 'NTMyOCtzXT1jWzEzOF1bc10pO2ZvcihjWzEzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjUxZVx1YjUxZlx1YjUyMFx1YjUyMVx1YjUyMlx1YjUyM1x1YjUyNlx1YjUyYlx1YjUyY1x1YjUyZFx1YjUyZVx1YjUyZlx1'@; put 'YjUzMlx1YjUzM1x1YjUzNVx1YjUzNlx1YjUzN1x1YjUzOVx1YjUzYVx1YjUzYlx1YjUzY1x1YjUzZFx1YjUzZVx1YjUzZlx1YjU0Mlx1YjU0Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjU0N1x1YjU0OFx1YjU0OVx1YjU0YVx1YjU0ZVx1YjU0Zlx1YjU1MVx1YjU1'@; put 'Mlx1YjU1M1x1YjU1NVx1YjU1Nlx1YjU1N1x1YjU1OFx1YjU1OVx1YjU1YVx1YjU1Ylx1YjU1ZVx1YjU2Mlx1YjU2M1x1YjU2NFx1YjU2NVx1YjU2Nlx1YjU2N1x1YjU2OFx1YjU2OVx1YjU2YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjU2Ylx1YjU2Y1x1YjU2ZFx1'@; put 'YjU2ZVx1YjU2Zlx1YjU3MFx1YjU3MVx1YjU3Mlx1YjU3M1x1YjU3NFx1YjU3NVx1YjU3Nlx1YjU3N1x1YjU3OFx1YjU3OVx1YjU3YVx1YjU3Ylx1YjU3Y1x1YjU3ZFx1YjU3ZVx1YjU3Zlx1YjU4MFx1YjU4MVx1YjU4Mlx1YjU4M1x1YjU4NFx1YjU4NVx1YjU4Nlx1YjU4N1x1YjU4OFx1YjU4'@; put 'OVx1YjU4YVx1YjU4Ylx1YjU4Y1x1YjU4ZFx1YjU4ZVx1YjU4Zlx1YjU5MFx1YjU5MVx1YjU5Mlx1YjU5M1x1YjU5NFx1YjU5NVx1YjU5Nlx1YjU5N1x1YjU5OFx1YjU5OVx1YjU5YVx1YjU5Ylx1YjU5Y1x1YjU5ZFx1YjU5ZVx1YjU5Zlx1YjVhMlx1YjVhM1x1YjVhNVx1YjVhNlx1YjVhN1x1'@; put 'YjVhOVx1YjVhY1x1YjVhZFx1YjVhZVx1YjVhZlx1YjViMlx1YjViNlx1YjViN1x1YjViOFx1YjViOVx1YjViYVx1YjViZVx1YjViZlx1YjVjMVx1YjVjMlx1YjVjM1x1YjVjNVx1YjVjNlx1YjVjN1x1YjVjOFx1YjVjOVx1YjVjYVx1YjVjYlx1YjVjZVx1YjVkMlx1YjVkM1x1YjVkNFx1YjVk'@; put 'NVx1YjVkNlx1YjVkN1x1YjVkOVx1YjVkYVx1YjVkYlx1YjVkY1x1YjVkZFx1YjVkZVx1YjVkZlx1YjVlMFx1YjVlMVx1YjVlMlx1YjVlM1x1YjVlNFx1YjVlNVx1YjVlNlx1YjVlN1x1YjVlOFx1YjVlOVx1YjVlYVx1YjVlYlx1YjVlZFx1YjVlZVx1YjVlZlx1YjVmMFx1YjVmMVx1YjVmMlx1'@; put 'YjVmM1x1YjVmNFx1YjVmNVx1YjVmNlx1YjVmN1x1YjVmOFx1YjVmOVx1YjVmYVx1YjVmYlx1YjVmY1x1YjVmZFx1YjVmZVx1YjVmZlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzEzOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTM5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzEzOV1bc11d'@; put 'PTM1NTg0K3MsaFszNTU4NCtzXT1jWzEzOV1bc10pO2ZvcihjWzE0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjYwMFx1YjYwMVx1YjYwMlx1YjYwM1x1YjYwNFx1YjYwNVx1YjYwNlx1YjYwN1x1YjYwOFx1YjYwOVx1'@; put 'YjYwYVx1YjYwYlx1YjYwY1x1YjYwZFx1YjYwZVx1YjYwZlx1YjYxMlx1YjYxM1x1YjYxNVx1YjYxNlx1YjYxN1x1YjYxOVx1YjYxYVx1YjYxYlx1YjYxY1x1YjYxZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjYxZVx1YjYxZlx1YjYyMFx1YjYyMVx1YjYyMlx1YjYy'@; put 'M1x1YjYyNFx1YjYyNlx1YjYyN1x1YjYyOFx1YjYyOVx1YjYyYVx1YjYyYlx1YjYyZFx1YjYyZVx1YjYyZlx1YjYzMFx1YjYzMVx1YjYzMlx1YjYzM1x1YjYzNVx1YjYzNlx1YjYzN1x1YjYzOFx1YjYzOVx1YjYzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjYzYlx1'@; put 'YjYzY1x1YjYzZFx1YjYzZVx1YjYzZlx1YjY0MFx1YjY0MVx1YjY0Mlx1YjY0M1x1YjY0NFx1YjY0NVx1YjY0Nlx1YjY0N1x1YjY0OVx1YjY0YVx1YjY0Ylx1YjY0Y1x1YjY0ZFx1YjY0ZVx1YjY0Zlx1YjY1MFx1YjY1MVx1YjY1Mlx1YjY1M1x1YjY1NFx1YjY1NVx1YjY1Nlx1YjY1N1x1YjY1'@; put 'OFx1YjY1OVx1YjY1YVx1YjY1Ylx1YjY1Y1x1YjY1ZFx1YjY1ZVx1YjY1Zlx1YjY2MFx1YjY2MVx1YjY2Mlx1YjY2M1x1YjY2NVx1YjY2Nlx1YjY2N1x1YjY2OVx1YjY2YVx1YjY2Ylx1YjY2Y1x1YjY2ZFx1YjY2ZVx1YjY2Zlx1YjY3MFx1YjY3MVx1YjY3Mlx1YjY3M1x1YjY3NFx1YjY3NVx1'@; put 'YjY3Nlx1YjY3N1x1YjY3OFx1YjY3OVx1YjY3YVx1YjY3Ylx1YjY3Y1x1YjY3ZFx1YjY3ZVx1YjY3Zlx1YjY4MFx1YjY4MVx1YjY4Mlx1YjY4M1x1YjY4NFx1YjY4NVx1YjY4Nlx1YjY4N1x1YjY4OFx1YjY4OVx1YjY4YVx1YjY4Ylx1YjY4Y1x1YjY4ZFx1YjY4ZVx1YjY4Zlx1YjY5MFx1YjY5'@; put 'MVx1YjY5Mlx1YjY5M1x1YjY5NFx1YjY5NVx1YjY5Nlx1YjY5N1x1YjY5OFx1YjY5OVx1YjY5YVx1YjY5Ylx1YjY5ZVx1YjY5Zlx1YjZhMVx1YjZhMlx1YjZhM1x1YjZhNVx1YjZhNlx1YjZhN1x1YjZhOFx1YjZhOVx1YjZhYVx1YjZhZFx1YjZhZVx1YjZhZlx1YjZiMFx1YjZiMlx1YjZiM1x1'@; put 'YjZiNFx1YjZiNVx1YjZiNlx1YjZiN1x1YjZiOFx1YjZiOVx1YjZiYVx1YjZiYlx1YjZiY1x1YjZiZFx1YjZiZVx1YjZiZlx1YjZjMFx1YjZjMVx1YjZjMlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQwXVtzXS5jaGFyQ29kZUF0KDApJiYo'@; put 'eVtjWzE0MF1bc11dPTM1ODQwK3MsaFszNTg0MCtzXT1jWzE0MF1bc10pO2ZvcihjWzE0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZjM1x1YjZjNFx1YjZjNVx1YjZjNlx1YjZjN1x1YjZjOFx1YjZjOVx1YjZjYVx1'@; put 'YjZjYlx1YjZjY1x1YjZjZFx1YjZjZVx1YjZjZlx1YjZkMFx1YjZkMVx1YjZkMlx1YjZkM1x1YjZkNVx1YjZkNlx1YjZkN1x1YjZkOFx1YjZkOVx1YjZkYVx1YjZkYlx1YjZkY1x1YjZkZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZkZVx1YjZkZlx1YjZlMFx1YjZl'@; put 'MVx1YjZlMlx1YjZlM1x1YjZlNFx1YjZlNVx1YjZlNlx1YjZlN1x1YjZlOFx1YjZlOVx1YjZlYVx1YjZlYlx1YjZlY1x1YjZlZFx1YjZlZVx1YjZlZlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1YjZmOVx1YjZmYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1YjZmYlx1YjZmY1x1YjZmZFx1YjZmZVx1YjZmZlx1YjcwMlx1YjcwM1x1YjcwNFx1YjcwNlx1YjcwN1x1YjcwOFx1YjcwOVx1YjcwYVx1YjcwYlx1YjcwY1x1YjcwZFx1YjcwZVx1YjcwZlx1YjcxMFx1YjcxMVx1YjcxMlx1YjcxM1x1YjcxNFx1YjcxNVx1YjcxNlx1YjcxN1x1Yjcx'@; put 'OFx1YjcxOVx1YjcxYVx1YjcxYlx1YjcxY1x1YjcxZFx1YjcxZVx1YjcxZlx1YjcyMFx1YjcyMVx1YjcyMlx1YjcyM1x1YjcyNFx1YjcyNVx1YjcyNlx1YjcyN1x1YjcyYVx1YjcyYlx1YjcyZFx1YjcyZVx1YjczMVx1YjczMlx1YjczM1x1YjczNFx1YjczNVx1YjczNlx1YjczN1x1YjczYVx1'@; put 'YjczY1x1YjczZFx1YjczZVx1YjczZlx1Yjc0MFx1Yjc0MVx1Yjc0Mlx1Yjc0M1x1Yjc0NVx1Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZFx1Yjc0ZVx1Yjc0Zlx1Yjc1MFx1Yjc1MVx1Yjc1Mlx1Yjc1M1x1Yjc1Nlx1Yjc1N1x1Yjc1OFx1Yjc1OVx1Yjc1YVx1Yjc1Ylx1Yjc1'@; put 'Y1x1Yjc1ZFx1Yjc1ZVx1Yjc1Zlx1Yjc2MVx1Yjc2Mlx1Yjc2M1x1Yjc2NVx1Yjc2Nlx1Yjc2N1x1Yjc2OVx1Yjc2YVx1Yjc2Ylx1Yjc2Y1x1Yjc2ZFx1Yjc2ZVx1Yjc2Zlx1Yjc3Mlx1Yjc3NFx1Yjc3Nlx1Yjc3N1x1Yjc3OFx1Yjc3OVx1Yjc3YVx1Yjc3Ylx1Yjc3ZVx1Yjc3Zlx1Yjc4MVx1'@; put 'Yjc4Mlx1Yjc4M1x1Yjc4NVx1Yjc4Nlx1Yjc4N1x1Yjc4OFx1Yjc4OVx1Yjc4YVx1Yjc4Ylx1Yjc4ZVx1Yjc5M1x1Yjc5NFx1Yjc5NVx1Yjc5YVx1Yjc5Ylx1Yjc5ZFx1Yjc5ZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQxXVtzXS5jaGFy'@; put 'Q29kZUF0KDApJiYoeVtjWzE0MV1bc11dPTM2MDk2K3MsaFszNjA5NitzXT1jWzE0MV1bc10pO2ZvcihjWzE0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjc5Zlx1YjdhMVx1YjdhMlx1YjdhM1x1YjdhNFx1YjdhNVx1'@; put 'YjdhNlx1YjdhN1x1YjdhYVx1YjdhZVx1YjdhZlx1YjdiMFx1YjdiMVx1YjdiMlx1YjdiM1x1YjdiNlx1YjdiN1x1YjdiOVx1YjdiYVx1YjdiYlx1YjdiY1x1YjdiZFx1YjdiZVx1YjdiZlx1YjdjMFx1YjdjMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjdjMlx1Yjdj'@; put 'M1x1YjdjNFx1YjdjNVx1YjdjNlx1YjdjOFx1YjdjYVx1YjdjYlx1YjdjY1x1YjdjZFx1YjdjZVx1YjdjZlx1YjdkMFx1YjdkMVx1YjdkMlx1YjdkM1x1YjdkNFx1YjdkNVx1YjdkNlx1YjdkN1x1YjdkOFx1YjdkOVx1YjdkYVx1YjdkYlx1YjdkY1x1YjdkZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1YjdkZVx1YjdkZlx1YjdlMFx1YjdlMVx1YjdlMlx1YjdlM1x1YjdlNFx1YjdlNVx1YjdlNlx1YjdlN1x1YjdlOFx1YjdlOVx1YjdlYVx1YjdlYlx1YjdlZVx1YjdlZlx1YjdmMVx1YjdmMlx1YjdmM1x1YjdmNVx1YjdmNlx1YjdmN1x1YjdmOFx1YjdmOVx1Yjdm'@; put 'YVx1YjdmYlx1YjdmZVx1YjgwMlx1YjgwM1x1YjgwNFx1YjgwNVx1YjgwNlx1YjgwYVx1YjgwYlx1YjgwZFx1YjgwZVx1YjgwZlx1YjgxMVx1YjgxMlx1YjgxM1x1YjgxNFx1YjgxNVx1YjgxNlx1YjgxN1x1YjgxYVx1YjgxY1x1YjgxZVx1YjgxZlx1YjgyMFx1YjgyMVx1YjgyMlx1YjgyM1x1'@; put 'YjgyNlx1YjgyN1x1YjgyOVx1YjgyYVx1YjgyYlx1YjgyZFx1YjgyZVx1YjgyZlx1YjgzMFx1YjgzMVx1YjgzMlx1YjgzM1x1YjgzNlx1YjgzYVx1YjgzYlx1YjgzY1x1YjgzZFx1YjgzZVx1YjgzZlx1Yjg0MVx1Yjg0Mlx1Yjg0M1x1Yjg0NVx1Yjg0Nlx1Yjg0N1x1Yjg0OFx1Yjg0OVx1Yjg0'@; put 'YVx1Yjg0Ylx1Yjg0Y1x1Yjg0ZFx1Yjg0ZVx1Yjg0Zlx1Yjg1MFx1Yjg1Mlx1Yjg1NFx1Yjg1NVx1Yjg1Nlx1Yjg1N1x1Yjg1OFx1Yjg1OVx1Yjg1YVx1Yjg1Ylx1Yjg1ZVx1Yjg1Zlx1Yjg2MVx1Yjg2Mlx1Yjg2M1x1Yjg2NVx1Yjg2Nlx1Yjg2N1x1Yjg2OFx1Yjg2OVx1Yjg2YVx1Yjg2Ylx1'@; put 'Yjg2ZVx1Yjg3MFx1Yjg3Mlx1Yjg3M1x1Yjg3NFx1Yjg3NVx1Yjg3Nlx1Yjg3N1x1Yjg3OVx1Yjg3YVx1Yjg3Ylx1Yjg3ZFx1Yjg3ZVx1Yjg3Zlx1Yjg4MFx1Yjg4MVx1Yjg4Mlx1Yjg4M1x1Yjg4NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNb'@; put 'MTQyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0Ml1bc11dPTM2MzUyK3MsaFszNjM1MitzXT1jWzE0Ml1bc10pO2ZvcihjWzE0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjg4NVx1Yjg4Nlx1Yjg4N1x1Yjg4OFx1'@; put 'Yjg4OVx1Yjg4YVx1Yjg4Ylx1Yjg4Y1x1Yjg4ZVx1Yjg4Zlx1Yjg5MFx1Yjg5MVx1Yjg5Mlx1Yjg5M1x1Yjg5NFx1Yjg5NVx1Yjg5Nlx1Yjg5N1x1Yjg5OFx1Yjg5OVx1Yjg5YVx1Yjg5Ylx1Yjg5Y1x1Yjg5ZFx1Yjg5ZVx1Yjg5Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1YjhhMFx1YjhhMVx1YjhhMlx1YjhhM1x1YjhhNFx1YjhhNVx1YjhhNlx1YjhhN1x1YjhhOVx1YjhhYVx1YjhhYlx1YjhhY1x1YjhhZFx1YjhhZVx1YjhhZlx1YjhiMVx1YjhiMlx1YjhiM1x1YjhiNVx1YjhiNlx1YjhiN1x1YjhiOVx1YjhiYVx1YjhiYlx1YjhiY1x1YjhiZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjhiZVx1YjhiZlx1YjhjMlx1YjhjNFx1YjhjNlx1YjhjN1x1YjhjOFx1YjhjOVx1YjhjYVx1YjhjYlx1YjhjZFx1YjhjZVx1YjhjZlx1YjhkMVx1YjhkMlx1YjhkM1x1YjhkNVx1YjhkNlx1YjhkN1x1YjhkOFx1YjhkOVx1YjhkYVx1Yjhk'@; put 'Ylx1YjhkY1x1YjhkZVx1YjhlMFx1YjhlMlx1YjhlM1x1YjhlNFx1YjhlNVx1YjhlNlx1YjhlN1x1YjhlYVx1YjhlYlx1YjhlZFx1YjhlZVx1YjhlZlx1YjhmMVx1YjhmMlx1YjhmM1x1YjhmNFx1YjhmNVx1YjhmNlx1YjhmN1x1YjhmYVx1YjhmY1x1YjhmZVx1YjhmZlx1YjkwMFx1YjkwMVx1'@; put 'YjkwMlx1YjkwM1x1YjkwNVx1YjkwNlx1YjkwN1x1YjkwOFx1YjkwOVx1YjkwYVx1YjkwYlx1YjkwY1x1YjkwZFx1YjkwZVx1YjkwZlx1YjkxMFx1YjkxMVx1YjkxMlx1YjkxM1x1YjkxNFx1YjkxNVx1YjkxNlx1YjkxN1x1YjkxOVx1YjkxYVx1YjkxYlx1YjkxY1x1YjkxZFx1YjkxZVx1Yjkx'@; put 'Zlx1YjkyMVx1YjkyMlx1YjkyM1x1YjkyNFx1YjkyNVx1YjkyNlx1YjkyN1x1YjkyOFx1YjkyOVx1YjkyYVx1YjkyYlx1YjkyY1x1YjkyZFx1YjkyZVx1YjkyZlx1YjkzMFx1YjkzMVx1YjkzMlx1YjkzM1x1YjkzNFx1YjkzNVx1YjkzNlx1YjkzN1x1YjkzOFx1YjkzOVx1YjkzYVx1YjkzYlx1'@; put 'YjkzZVx1YjkzZlx1Yjk0MVx1Yjk0Mlx1Yjk0M1x1Yjk0NVx1Yjk0Nlx1Yjk0N1x1Yjk0OFx1Yjk0OVx1Yjk0YVx1Yjk0Ylx1Yjk0ZFx1Yjk0ZVx1Yjk1MFx1Yjk1Mlx1Yjk1M1x1Yjk1NFx1Yjk1NVx1Yjk1Nlx1Yjk1N1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0M10ubGVuZ3RoOysr'@; put 'cyk2NTUzMyE9PWNbMTQzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0M11bc11dPTM2NjA4K3MsaFszNjYwOCtzXT1jWzE0M11bc10pO2ZvcihjWzE0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk1YVx1Yjk1Ylx1'@; put 'Yjk1ZFx1Yjk1ZVx1Yjk1Zlx1Yjk2MVx1Yjk2Mlx1Yjk2M1x1Yjk2NFx1Yjk2NVx1Yjk2Nlx1Yjk2N1x1Yjk2YVx1Yjk2Y1x1Yjk2ZVx1Yjk2Zlx1Yjk3MFx1Yjk3MVx1Yjk3Mlx1Yjk3M1x1Yjk3Nlx1Yjk3N1x1Yjk3OVx1Yjk3YVx1Yjk3Ylx1Yjk3ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1Yjk3ZVx1Yjk3Zlx1Yjk4MFx1Yjk4MVx1Yjk4Mlx1Yjk4M1x1Yjk4Nlx1Yjk4OFx1Yjk4Ylx1Yjk4Y1x1Yjk4Zlx1Yjk5MFx1Yjk5MVx1Yjk5Mlx1Yjk5M1x1Yjk5NFx1Yjk5NVx1Yjk5Nlx1Yjk5N1x1Yjk5OFx1Yjk5OVx1Yjk5YVx1Yjk5Ylx1Yjk5Y1x1Yjk5ZFx1'@; put 'Yjk5ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk5Zlx1YjlhMFx1YjlhMVx1YjlhMlx1YjlhM1x1YjlhNFx1YjlhNVx1YjlhNlx1YjlhN1x1YjlhOFx1YjlhOVx1YjlhYVx1YjlhYlx1YjlhZVx1YjlhZlx1YjliMVx1YjliMlx1YjliM1x1YjliNVx1YjliNlx1Yjli'@; put 'N1x1YjliOFx1YjliOVx1YjliYVx1YjliYlx1YjliZVx1YjljMFx1YjljMlx1YjljM1x1YjljNFx1YjljNVx1YjljNlx1YjljN1x1YjljYVx1YjljYlx1YjljZFx1YjlkM1x1YjlkNFx1YjlkNVx1YjlkNlx1YjlkN1x1YjlkYVx1YjlkY1x1YjlkZlx1YjllMFx1YjllMlx1YjllNlx1YjllN1x1'@; put 'YjllOVx1YjllYVx1YjllYlx1YjllZFx1YjllZVx1YjllZlx1YjlmMFx1YjlmMVx1YjlmMlx1YjlmM1x1YjlmNlx1YjlmYlx1YjlmY1x1YjlmZFx1YjlmZVx1YjlmZlx1YmEwMlx1YmEwM1x1YmEwNFx1YmEwNVx1YmEwNlx1YmEwN1x1YmEwOVx1YmEwYVx1YmEwYlx1YmEwY1x1YmEwZFx1YmEw'@; put 'ZVx1YmEwZlx1YmExMFx1YmExMVx1YmExMlx1YmExM1x1YmExNFx1YmExNlx1YmExN1x1YmExOFx1YmExOVx1YmExYVx1YmExYlx1YmExY1x1YmExZFx1YmExZVx1YmExZlx1YmEyMFx1YmEyMVx1YmEyMlx1YmEyM1x1YmEyNFx1YmEyNVx1YmEyNlx1YmEyN1x1YmEyOFx1YmEyOVx1YmEyYVx1'@; put 'YmEyYlx1YmEyY1x1YmEyZFx1YmEyZVx1YmEyZlx1YmEzMFx1YmEzMVx1YmEzMlx1YmEzM1x1YmEzNFx1YmEzNVx1YmEzNlx1YmEzN1x1YmEzYVx1YmEzYlx1YmEzZFx1YmEzZVx1YmEzZlx1YmE0MVx1YmE0M1x1YmE0NFx1YmE0NVx1YmE0Nlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0'@; put 'NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0NF1bc11dPTM2ODY0K3MsaFszNjg2NCtzXT1jWzE0NF1bc10pO2ZvcihjWzE0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'YmE0N1x1YmE0YVx1YmE0Y1x1YmE0Zlx1YmE1MFx1YmE1MVx1YmE1Mlx1YmE1Nlx1YmE1N1x1YmE1OVx1YmE1YVx1YmE1Ylx1YmE1ZFx1YmE1ZVx1YmE1Zlx1YmE2MFx1YmE2MVx1YmE2Mlx1YmE2M1x1YmE2Nlx1YmE2YVx1YmE2Ylx1YmE2Y1x1YmE2ZFx1YmE2ZVx1YmE2Zlx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmE3Mlx1YmE3M1x1YmE3NVx1YmE3Nlx1YmE3N1x1YmE3OVx1YmE3YVx1YmE3Ylx1YmE3Y1x1YmE3ZFx1YmE3ZVx1YmE3Zlx1YmE4MFx1YmE4MVx1YmE4Mlx1YmE4Nlx1YmE4OFx1YmE4OVx1YmE4YVx1YmE4Ylx1YmE4ZFx1YmE4ZVx1YmE4Zlx1'@; put 'YmE5MFx1YmE5MVx1YmE5Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmE5M1x1YmE5NFx1YmE5NVx1YmE5Nlx1YmE5N1x1YmE5OFx1YmE5OVx1YmE5YVx1YmE5Ylx1YmE5Y1x1YmE5ZFx1YmE5ZVx1YmE5Zlx1YmFhMFx1YmFhMVx1YmFhMlx1YmFhM1x1YmFhNFx1YmFh'@; put 'NVx1YmFhNlx1YmFhN1x1YmFhYVx1YmFhZFx1YmFhZVx1YmFhZlx1YmFiMVx1YmFiM1x1YmFiNFx1YmFiNVx1YmFiNlx1YmFiN1x1YmFiYVx1YmFiY1x1YmFiZVx1YmFiZlx1YmFjMFx1YmFjMVx1YmFjMlx1YmFjM1x1YmFjNVx1YmFjNlx1YmFjN1x1YmFjOVx1YmFjYVx1YmFjYlx1YmFjY1x1'@; put 'YmFjZFx1YmFjZVx1YmFjZlx1YmFkMFx1YmFkMVx1YmFkMlx1YmFkM1x1YmFkNFx1YmFkNVx1YmFkNlx1YmFkN1x1YmFkYVx1YmFkYlx1YmFkY1x1YmFkZFx1YmFkZVx1YmFkZlx1YmFlMFx1YmFlMVx1YmFlMlx1YmFlM1x1YmFlNFx1YmFlNVx1YmFlNlx1YmFlN1x1YmFlOFx1YmFlOVx1YmFl'@; put 'YVx1YmFlYlx1YmFlY1x1YmFlZFx1YmFlZVx1YmFlZlx1YmFmMFx1YmFmMVx1YmFmMlx1YmFmM1x1YmFmNFx1YmFmNVx1YmFmNlx1YmFmN1x1YmFmOFx1YmFmOVx1YmFmYVx1YmFmYlx1YmFmZFx1YmFmZVx1YmFmZlx1YmIwMVx1YmIwMlx1YmIwM1x1YmIwNVx1YmIwNlx1YmIwN1x1YmIwOFx1'@; put 'YmIwOVx1YmIwYVx1YmIwYlx1YmIwY1x1YmIwZVx1YmIxMFx1YmIxMlx1YmIxM1x1YmIxNFx1YmIxNVx1YmIxNlx1YmIxN1x1YmIxOVx1YmIxYVx1YmIxYlx1YmIxZFx1YmIxZVx1YmIxZlx1YmIyMVx1YmIyMlx1YmIyM1x1YmIyNFx1YmIyNVx1YmIyNlx1YmIyN1x1ZmZmZCIuc3BsaXQoIiIp'@; put 'LHM9MDtzIT1jWzE0NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0NV1bc11dPTM3MTIwK3MsaFszNzEyMCtzXT1jWzE0NV1bc10pO2ZvcihjWzE0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1YmIyOFx1YmIyYVx1YmIyY1x1YmIyZFx1YmIyZVx1YmIyZlx1YmIzMFx1YmIzMVx1YmIzMlx1YmIzM1x1YmIzN1x1YmIzOVx1YmIzYVx1YmIzZlx1YmI0MFx1YmI0MVx1YmI0Mlx1YmI0M1x1YmI0Nlx1YmI0OFx1YmI0YVx1YmI0Ylx1YmI0Y1x1YmI0ZVx1YmI1MVx1YmI1'@; put 'Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmI1M1x1YmI1NVx1YmI1Nlx1YmI1N1x1YmI1OVx1YmI1YVx1YmI1Ylx1YmI1Y1x1YmI1ZFx1YmI1ZVx1YmI1Zlx1YmI2MFx1YmI2Mlx1YmI2NFx1YmI2NVx1YmI2Nlx1YmI2N1x1YmI2OFx1YmI2OVx1YmI2YVx1YmI2Ylx1'@; put 'YmI2ZFx1YmI2ZVx1YmI2Zlx1YmI3MFx1YmI3MVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmI3Mlx1YmI3M1x1YmI3NFx1YmI3NVx1YmI3Nlx1YmI3N1x1YmI3OFx1YmI3OVx1YmI3YVx1YmI3Ylx1YmI3Y1x1YmI3ZFx1YmI3ZVx1YmI3Zlx1YmI4MFx1YmI4MVx1YmI4'@; put 'Mlx1YmI4M1x1YmI4NFx1YmI4NVx1YmI4Nlx1YmI4N1x1YmI4OVx1YmI4YVx1YmI4Ylx1YmI4ZFx1YmI4ZVx1YmI4Zlx1YmI5MVx1YmI5Mlx1YmI5M1x1YmI5NFx1YmI5NVx1YmI5Nlx1YmI5N1x1YmI5OFx1YmI5OVx1YmI5YVx1YmI5Ylx1YmI5Y1x1YmI5ZFx1YmI5ZVx1YmI5Zlx1YmJhMFx1'@; put 'YmJhMVx1YmJhMlx1YmJhM1x1YmJhNVx1YmJhNlx1YmJhN1x1YmJhOVx1YmJhYVx1YmJhYlx1YmJhZFx1YmJhZVx1YmJhZlx1YmJiMFx1YmJiMVx1YmJiMlx1YmJiM1x1YmJiNVx1YmJiNlx1YmJiOFx1YmJiOVx1YmJiYVx1YmJiYlx1YmJiY1x1YmJiZFx1YmJiZVx1YmJiZlx1YmJjMVx1YmJj'@; put 'Mlx1YmJjM1x1YmJjNVx1YmJjNlx1YmJjN1x1YmJjOVx1YmJjYVx1YmJjYlx1YmJjY1x1YmJjZFx1YmJjZVx1YmJjZlx1YmJkMVx1YmJkMlx1YmJkNFx1YmJkNVx1YmJkNlx1YmJkN1x1YmJkOFx1YmJkOVx1YmJkYVx1YmJkYlx1YmJkY1x1YmJkZFx1YmJkZVx1YmJkZlx1YmJlMFx1YmJlMVx1'@; put 'YmJlMlx1YmJlM1x1YmJlNFx1YmJlNVx1YmJlNlx1YmJlN1x1YmJlOFx1YmJlOVx1YmJlYVx1YmJlYlx1YmJlY1x1YmJlZFx1YmJlZVx1YmJlZlx1YmJmMFx1YmJmMVx1YmJmMlx1YmJmM1x1YmJmNFx1YmJmNVx1YmJmNlx1YmJmN1x1YmJmYVx1YmJmYlx1YmJmZFx1YmJmZVx1YmMwMVx1ZmZm'@; put 'ZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0Nl1bc11dPTM3Mzc2K3MsaFszNzM3NitzXT1jWzE0Nl1bc10pO2ZvcihjWzE0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMwM1x1YmMwNFx1YmMwNVx1YmMwNlx1YmMwN1x1YmMwYVx1YmMwZVx1YmMxMFx1YmMxMlx1YmMxM1x1YmMxOVx1YmMxYVx1YmMyMFx1YmMyMVx1YmMyMlx1YmMyM1x1YmMyNlx1YmMyOFx1YmMyYVx1YmMyYlx1YmMyY1x1YmMyZVx1YmMyZlx1YmMz'@; put 'Mlx1YmMzM1x1YmMzNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMzNlx1YmMzN1x1YmMzOVx1YmMzYVx1YmMzYlx1YmMzY1x1YmMzZFx1YmMzZVx1YmMzZlx1YmM0Mlx1YmM0Nlx1YmM0N1x1YmM0OFx1YmM0YVx1YmM0Ylx1YmM0ZVx1YmM0Zlx1YmM1MVx1YmM1Mlx1'@; put 'YmM1M1x1YmM1NFx1YmM1NVx1YmM1Nlx1YmM1N1x1YmM1OFx1YmM1OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZVx1YmM1Zlx1YmM2MFx1YmM2MVx1YmM2Mlx1YmM2M1x1YmM2NFx1YmM2NVx1YmM2Nlx1YmM2N1x1YmM2OFx1YmM2'@; put 'OVx1YmM2YVx1YmM2Ylx1YmM2Y1x1YmM2ZFx1YmM2ZVx1YmM2Zlx1YmM3MFx1YmM3MVx1YmM3Mlx1YmM3M1x1YmM3NFx1YmM3NVx1YmM3Nlx1YmM3N1x1YmM3OFx1YmM3OVx1YmM3YVx1YmM3Ylx1YmM3Y1x1YmM3ZFx1YmM3ZVx1YmM3Zlx1YmM4MFx1YmM4MVx1YmM4Mlx1YmM4M1x1YmM4Nlx1'@; put 'YmM4N1x1YmM4OVx1YmM4YVx1YmM4ZFx1YmM4Zlx1YmM5MFx1YmM5MVx1YmM5Mlx1YmM5M1x1YmM5Nlx1YmM5OFx1YmM5Ylx1YmM5Y1x1YmM5ZFx1YmM5ZVx1YmM5Zlx1YmNhMlx1YmNhM1x1YmNhNVx1YmNhNlx1YmNhOVx1YmNhYVx1YmNhYlx1YmNhY1x1YmNhZFx1YmNhZVx1YmNhZlx1YmNi'@; put 'Mlx1YmNiNlx1YmNiN1x1YmNiOFx1YmNiOVx1YmNiYVx1YmNiYlx1YmNiZVx1YmNiZlx1YmNjMVx1YmNjMlx1YmNjM1x1YmNjNVx1YmNjNlx1YmNjN1x1YmNjOFx1YmNjOVx1YmNjYVx1YmNjYlx1YmNjY1x1YmNjZVx1YmNkMlx1YmNkM1x1YmNkNFx1YmNkNlx1YmNkN1x1YmNkOVx1YmNkYVx1'@; put 'YmNkYlx1YmNkZFx1YmNkZVx1YmNkZlx1YmNlMFx1YmNlMVx1YmNlMlx1YmNlM1x1YmNlNFx1YmNlNVx1YmNlNlx1YmNlN1x1YmNlOFx1YmNlOVx1YmNlYVx1YmNlYlx1YmNlY1x1YmNlZFx1YmNlZVx1YmNlZlx1YmNmMFx1YmNmMVx1YmNmMlx1YmNmM1x1YmNmN1x1YmNmOVx1YmNmYVx1YmNm'@; put 'Ylx1YmNmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0N11bc11dPTM3NjMyK3MsaFszNzYzMitzXT1jWzE0N11bc10pO2ZvcihjWzE0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmNmZVx1YmNmZlx1YmQwMFx1YmQwMVx1YmQwMlx1YmQwM1x1YmQwNlx1YmQwOFx1YmQwYVx1YmQwYlx1YmQwY1x1YmQwZFx1YmQwZVx1YmQwZlx1YmQxMVx1YmQxMlx1YmQxM1x1YmQxNVx1YmQxNlx1YmQxN1x1YmQxOFx1YmQx'@; put 'OVx1YmQxYVx1YmQxYlx1YmQxY1x1YmQxZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmQxZVx1YmQxZlx1YmQyMFx1YmQyMVx1YmQyMlx1YmQyM1x1YmQyNVx1YmQyNlx1YmQyN1x1YmQyOFx1YmQyOVx1YmQyYVx1YmQyYlx1YmQyZFx1YmQyZVx1YmQyZlx1YmQzMFx1'@; put 'YmQzMVx1YmQzMlx1YmQzM1x1YmQzNFx1YmQzNVx1YmQzNlx1YmQzN1x1YmQzOFx1YmQzOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmQzYVx1YmQzYlx1YmQzY1x1YmQzZFx1YmQzZVx1YmQzZlx1YmQ0MVx1YmQ0Mlx1YmQ0M1x1YmQ0NFx1YmQ0NVx1YmQ0Nlx1YmQ0'@; put 'N1x1YmQ0YVx1YmQ0Ylx1YmQ0ZFx1YmQ0ZVx1YmQ0Zlx1YmQ1MVx1YmQ1Mlx1YmQ1M1x1YmQ1NFx1YmQ1NVx1YmQ1Nlx1YmQ1N1x1YmQ1YVx1YmQ1Ylx1YmQ1Y1x1YmQ1ZFx1YmQ1ZVx1YmQ1Zlx1YmQ2MFx1YmQ2MVx1YmQ2Mlx1YmQ2M1x1YmQ2NVx1YmQ2Nlx1YmQ2N1x1YmQ2OVx1YmQ2YVx1'@; put 'YmQ2Ylx1YmQ2Y1x1YmQ2ZFx1YmQ2ZVx1YmQ2Zlx1YmQ3MFx1YmQ3MVx1YmQ3Mlx1YmQ3M1x1YmQ3NFx1YmQ3NVx1YmQ3Nlx1YmQ3N1x1YmQ3OFx1YmQ3OVx1YmQ3YVx1YmQ3Ylx1YmQ3Y1x1YmQ3ZFx1YmQ3ZVx1YmQ3Zlx1YmQ4Mlx1YmQ4M1x1YmQ4NVx1YmQ4Nlx1YmQ4Ylx1YmQ4Y1x1YmQ4'@; put 'ZFx1YmQ4ZVx1YmQ4Zlx1YmQ5Mlx1YmQ5NFx1YmQ5Nlx1YmQ5N1x1YmQ5OFx1YmQ5Ylx1YmQ5ZFx1YmQ5ZVx1YmQ5Zlx1YmRhMFx1YmRhMVx1YmRhMlx1YmRhM1x1YmRhNVx1YmRhNlx1YmRhN1x1YmRhOFx1YmRhOVx1YmRhYVx1YmRhYlx1YmRhY1x1YmRhZFx1YmRhZVx1YmRhZlx1YmRiMVx1'@; put 'YmRiMlx1YmRiM1x1YmRiNFx1YmRiNVx1YmRiNlx1YmRiN1x1YmRiOVx1YmRiYVx1YmRiYlx1YmRiY1x1YmRiZFx1YmRiZVx1YmRiZlx1YmRjMFx1YmRjMVx1YmRjMlx1YmRjM1x1YmRjNFx1YmRjNVx1YmRjNlx1YmRjN1x1YmRjOFx1YmRjOVx1YmRjYVx1YmRjYlx1YmRjY1x1YmRjZFx1YmRj'@; put 'ZVx1YmRjZlx1YmRkMFx1YmRkMVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0OF1bc11dPTM3ODg4K3MsaFszNzg4OCtzXT1jWzE0OF1bc10pO2ZvcihjWzE0OV09Ilx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmRkMlx1YmRkM1x1YmRkNlx1YmRkN1x1YmRkOVx1YmRkYVx1YmRkYlx1YmRkZFx1YmRkZVx1YmRkZlx1YmRlMFx1YmRlMVx1YmRlMlx1YmRlM1x1YmRlNFx1YmRlNVx1YmRlNlx1YmRlN1x1YmRlOFx1YmRl'@; put 'YVx1YmRlYlx1YmRlY1x1YmRlZFx1YmRlZVx1YmRlZlx1YmRmMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmRmMlx1YmRmM1x1YmRmNVx1YmRmNlx1YmRmN1x1YmRmOVx1YmRmYVx1YmRmYlx1YmRmY1x1YmRmZFx1YmRmZVx1YmRmZlx1YmUwMVx1YmUwMlx1YmUwNFx1'@; put 'YmUwNlx1YmUwN1x1YmUwOFx1YmUwOVx1YmUwYVx1YmUwYlx1YmUwZVx1YmUwZlx1YmUxMVx1YmUxMlx1YmUxM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmUxNVx1YmUxNlx1YmUxN1x1YmUxOFx1YmUxOVx1YmUxYVx1YmUxYlx1YmUxZVx1YmUyMFx1YmUyMVx1YmUy'@; put 'Mlx1YmUyM1x1YmUyNFx1YmUyNVx1YmUyNlx1YmUyN1x1YmUyOFx1YmUyOVx1YmUyYVx1YmUyYlx1YmUyY1x1YmUyZFx1YmUyZVx1YmUyZlx1YmUzMFx1YmUzMVx1YmUzMlx1YmUzM1x1YmUzNFx1YmUzNVx1YmUzNlx1YmUzN1x1YmUzOFx1YmUzOVx1YmUzYVx1YmUzYlx1YmUzY1x1YmUzZFx1'@; put 'YmUzZVx1YmUzZlx1YmU0MFx1YmU0MVx1YmU0Mlx1YmU0M1x1YmU0Nlx1YmU0N1x1YmU0OVx1YmU0YVx1YmU0Ylx1YmU0ZFx1YmU0Zlx1YmU1MFx1YmU1MVx1YmU1Mlx1YmU1M1x1YmU1Nlx1YmU1OFx1YmU1Y1x1YmU1ZFx1YmU1ZVx1YmU1Zlx1YmU2Mlx1YmU2M1x1YmU2NVx1YmU2Nlx1YmU2'@; put 'N1x1YmU2OVx1YmU2Ylx1YmU2Y1x1YmU2ZFx1YmU2ZVx1YmU2Zlx1YmU3Mlx1YmU3Nlx1YmU3N1x1YmU3OFx1YmU3OVx1YmU3YVx1YmU3ZVx1YmU3Zlx1YmU4MVx1YmU4Mlx1YmU4M1x1YmU4NVx1YmU4Nlx1YmU4N1x1YmU4OFx1YmU4OVx1YmU4YVx1YmU4Ylx1YmU4ZVx1YmU5Mlx1YmU5M1x1'@; put 'YmU5NFx1YmU5NVx1YmU5Nlx1YmU5N1x1YmU5YVx1YmU5Ylx1YmU5Y1x1YmU5ZFx1YmU5ZVx1YmU5Zlx1YmVhMFx1YmVhMVx1YmVhMlx1YmVhM1x1YmVhNFx1YmVhNVx1YmVhNlx1YmVhN1x1YmVhOVx1YmVhYVx1YmVhYlx1YmVhY1x1YmVhZFx1YmVhZVx1YmVhZlx1YmViMFx1YmViMVx1YmVi'@; put 'Mlx1YmViM1x1YmViNFx1YmViNVx1YmViNlx1YmViN1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE0OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTQ5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE0OV1bc11dPTM4MTQ0K3MsaFszODE0NCtzXT1jWzE0OV1bc10pO2ZvcihjWzE1MF09Ilx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmViOFx1YmViOVx1YmViYVx1YmViYlx1YmViY1x1YmViZFx1YmViZVx1YmViZlx1YmVjMFx1YmVjMVx1YmVjMlx1YmVjM1x1YmVjNFx1YmVjNVx1YmVjNlx1YmVjN1x1YmVjOFx1YmVj'@; put 'OVx1YmVjYVx1YmVjYlx1YmVjY1x1YmVjZFx1YmVjZVx1YmVjZlx1YmVkMlx1YmVkM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVkNVx1YmVkNlx1YmVkOVx1YmVkYVx1YmVkYlx1YmVkY1x1YmVkZFx1YmVkZVx1YmVkZlx1YmVlMVx1YmVlMlx1YmVlNlx1YmVlN1x1'@; put 'YmVlOFx1YmVlOVx1YmVlYVx1YmVlYlx1YmVlZFx1YmVlZVx1YmVlZlx1YmVmMFx1YmVmMVx1YmVmMlx1YmVmM1x1YmVmNFx1YmVmNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVmNlx1YmVmN1x1YmVmOFx1YmVmOVx1YmVmYVx1YmVmYlx1YmVmY1x1YmVmZFx1YmVm'@; put 'ZVx1YmVmZlx1YmYwMFx1YmYwMlx1YmYwM1x1YmYwNFx1YmYwNVx1YmYwNlx1YmYwN1x1YmYwYVx1YmYwYlx1YmYwY1x1YmYwZFx1YmYwZVx1YmYwZlx1YmYxMFx1YmYxMVx1YmYxMlx1YmYxM1x1YmYxNFx1YmYxNVx1YmYxNlx1YmYxN1x1YmYxYVx1YmYxZVx1YmYxZlx1YmYyMFx1YmYyMVx1'@; put 'YmYyMlx1YmYyM1x1YmYyNFx1YmYyNVx1YmYyNlx1YmYyN1x1YmYyOFx1YmYyOVx1YmYyYVx1YmYyYlx1YmYyY1x1YmYyZFx1YmYyZVx1YmYyZlx1YmYzMFx1YmYzMVx1YmYzMlx1YmYzM1x1YmYzNFx1YmYzNVx1YmYzNlx1YmYzN1x1YmYzOFx1YmYzOVx1YmYzYVx1YmYzYlx1YmYzY1x1YmYz'@; put 'ZFx1YmYzZVx1YmYzZlx1YmY0Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1YmY0OVx1YmY0YVx1YmY0Ylx1YmY0Y1x1YmY0ZFx1YmY0ZVx1YmY0Zlx1YmY1Mlx1YmY1M1x1YmY1NFx1YmY1Nlx1YmY1N1x1YmY1OFx1YmY1OVx1YmY1YVx1YmY1Ylx1YmY1Y1x1YmY1ZFx1YmY1ZVx1YmY1Zlx1'@; put 'YmY2MFx1YmY2MVx1YmY2Mlx1YmY2M1x1YmY2NFx1YmY2NVx1YmY2Nlx1YmY2N1x1YmY2OFx1YmY2OVx1YmY2YVx1YmY2Ylx1YmY2Y1x1YmY2ZFx1YmY2ZVx1YmY2Zlx1YmY3MFx1YmY3MVx1YmY3Mlx1YmY3M1x1YmY3NFx1YmY3NVx1YmY3Nlx1YmY3N1x1YmY3OFx1YmY3OVx1YmY3YVx1YmY3'@; put 'Ylx1YmY3Y1x1YmY3ZFx1YmY3ZVx1YmY3Zlx1YmY4MFx1YmY4MVx1YmY4Mlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1MF1bc11dPTM4NDAwK3MsaFszODQwMCtzXT1jWzE1MF1bc10pO2Zv'@; put 'cihjWzE1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmY4M1x1YmY4NFx1YmY4NVx1YmY4Nlx1YmY4N1x1YmY4OFx1YmY4OVx1YmY4YVx1YmY4Ylx1YmY4Y1x1YmY4ZFx1YmY4ZVx1YmY4Zlx1YmY5MFx1YmY5MVx1YmY5'@; put 'Mlx1YmY5M1x1YmY5NVx1YmY5Nlx1YmY5N1x1YmY5OFx1YmY5OVx1YmY5YVx1YmY5Ylx1YmY5Y1x1YmY5ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmY5ZVx1YmY5Zlx1YmZhMFx1YmZhMVx1YmZhMlx1YmZhM1x1YmZhNFx1YmZhNVx1YmZhNlx1YmZhN1x1YmZhOFx1'@; put 'YmZhOVx1YmZhYVx1YmZhYlx1YmZhY1x1YmZhZFx1YmZhZVx1YmZhZlx1YmZiMVx1YmZiMlx1YmZiM1x1YmZiNFx1YmZiNVx1YmZiNlx1YmZiN1x1YmZiOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmZiOVx1YmZiYVx1YmZiYlx1YmZiY1x1YmZiZFx1YmZiZVx1YmZi'@; put 'Zlx1YmZjMFx1YmZjMVx1YmZjMlx1YmZjM1x1YmZjNFx1YmZjNlx1YmZjN1x1YmZjOFx1YmZjOVx1YmZjYVx1YmZjYlx1YmZjZVx1YmZjZlx1YmZkMVx1YmZkMlx1YmZkM1x1YmZkNVx1YmZkNlx1YmZkN1x1YmZkOFx1YmZkOVx1YmZkYVx1YmZkYlx1YmZkZFx1YmZkZVx1YmZlMFx1YmZlMlx1'@; put 'YmZlM1x1YmZlNFx1YmZlNVx1YmZlNlx1YmZlN1x1YmZlOFx1YmZlOVx1YmZlYVx1YmZlYlx1YmZlY1x1YmZlZFx1YmZlZVx1YmZlZlx1YmZmMFx1YmZmMVx1YmZmMlx1YmZmM1x1YmZmNFx1YmZmNVx1YmZmNlx1YmZmN1x1YmZmOFx1YmZmOVx1YmZmYVx1YmZmYlx1YmZmY1x1YmZmZFx1YmZm'@; put 'ZVx1YmZmZlx1YzAwMFx1YzAwMVx1YzAwMlx1YzAwM1x1YzAwNFx1YzAwNVx1YzAwNlx1YzAwN1x1YzAwOFx1YzAwOVx1YzAwYVx1YzAwYlx1YzAwY1x1YzAwZFx1YzAwZVx1YzAwZlx1YzAxMFx1YzAxMVx1YzAxMlx1YzAxM1x1YzAxNFx1YzAxNVx1YzAxNlx1YzAxN1x1YzAxOFx1YzAxOVx1'@; put 'YzAxYVx1YzAxYlx1YzAxY1x1YzAxZFx1YzAxZVx1YzAxZlx1YzAyMFx1YzAyMVx1YzAyMlx1YzAyM1x1YzAyNFx1YzAyNVx1YzAyNlx1YzAyN1x1YzAyOFx1YzAyOVx1YzAyYVx1YzAyYlx1YzAyY1x1YzAyZFx1YzAyZVx1YzAyZlx1YzAzMFx1YzAzMVx1YzAzMlx1YzAzM1x1YzAzNFx1YzAz'@; put 'NVx1YzAzNlx1YzAzN1x1YzAzOFx1YzAzOVx1YzAzYVx1YzAzYlx1YzAzZFx1YzAzZVx1YzAzZlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1MV1bc11dPTM4NjU2K3MsaFszODY1NitzXT1j'@; put 'WzE1MV1bc10pO2ZvcihjWzE1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzA0MFx1YzA0MVx1YzA0Mlx1YzA0M1x1YzA0NFx1YzA0NVx1YzA0Nlx1YzA0N1x1YzA0OFx1YzA0OVx1YzA0YVx1YzA0Ylx1YzA0Y1x1YzA0'@; put 'ZFx1YzA0ZVx1YzA0Zlx1YzA1MFx1YzA1Mlx1YzA1M1x1YzA1NFx1YzA1NVx1YzA1Nlx1YzA1N1x1YzA1OVx1YzA1YVx1YzA1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzA1ZFx1YzA1ZVx1YzA1Zlx1YzA2MVx1YzA2Mlx1YzA2M1x1YzA2NFx1YzA2NVx1YzA2Nlx1'@; put 'YzA2N1x1YzA2YVx1YzA2Ylx1YzA2Y1x1YzA2ZFx1YzA2ZVx1YzA2Zlx1YzA3MFx1YzA3MVx1YzA3Mlx1YzA3M1x1YzA3NFx1YzA3NVx1YzA3Nlx1YzA3N1x1YzA3OFx1YzA3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzA3YVx1YzA3Ylx1YzA3Y1x1YzA3ZFx1YzA3'@; put 'ZVx1YzA3Zlx1YzA4MFx1YzA4MVx1YzA4Mlx1YzA4M1x1YzA4NFx1YzA4NVx1YzA4Nlx1YzA4N1x1YzA4OFx1YzA4OVx1YzA4YVx1YzA4Ylx1YzA4Y1x1YzA4ZFx1YzA4ZVx1YzA4Zlx1YzA5Mlx1YzA5M1x1YzA5NVx1YzA5Nlx1YzA5N1x1YzA5OVx1YzA5YVx1YzA5Ylx1YzA5Y1x1YzA5ZFx1'@; put 'YzA5ZVx1YzA5Zlx1YzBhMlx1YzBhNFx1YzBhNlx1YzBhN1x1YzBhOFx1YzBhOVx1YzBhYVx1YzBhYlx1YzBhZVx1YzBiMVx1YzBiMlx1YzBiN1x1YzBiOFx1YzBiOVx1YzBiYVx1YzBiYlx1YzBiZVx1YzBjMlx1YzBjM1x1YzBjNFx1YzBjNlx1YzBjN1x1YzBjYVx1YzBjYlx1YzBjZFx1YzBj'@; put 'ZVx1YzBjZlx1YzBkMVx1YzBkMlx1YzBkM1x1YzBkNFx1YzBkNVx1YzBkNlx1YzBkN1x1YzBkYVx1YzBkZVx1YzBkZlx1YzBlMFx1YzBlMVx1YzBlMlx1YzBlM1x1YzBlNlx1YzBlN1x1YzBlOVx1YzBlYVx1YzBlYlx1YzBlZFx1YzBlZVx1YzBlZlx1YzBmMFx1YzBmMVx1YzBmMlx1YzBmM1x1'@; put 'YzBmNlx1YzBmOFx1YzBmYVx1YzBmYlx1YzBmY1x1YzBmZFx1YzBmZVx1YzBmZlx1YzEwMVx1YzEwMlx1YzEwM1x1YzEwNVx1YzEwNlx1YzEwN1x1YzEwOVx1YzEwYVx1YzEwYlx1YzEwY1x1YzEwZFx1YzEwZVx1YzEwZlx1YzExMVx1YzExMlx1YzExM1x1YzExNFx1YzExNlx1YzExN1x1YzEx'@; put 'OFx1YzExOVx1YzExYVx1YzExYlx1YzEyMVx1YzEyMlx1YzEyNVx1YzEyOFx1YzEyOVx1YzEyYVx1YzEyYlx1YzEyZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1Ml1bc11dPTM4OTEyK3Ms'@; put 'aFszODkxMitzXT1jWzE1Ml1bc10pO2ZvcihjWzE1M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzEzMlx1YzEzM1x1YzEzNFx1YzEzNVx1YzEzN1x1YzEzYVx1YzEzYlx1YzEzZFx1YzEzZVx1YzEzZlx1YzE0MVx1YzE0'@; put 'Mlx1YzE0M1x1YzE0NFx1YzE0NVx1YzE0Nlx1YzE0N1x1YzE0YVx1YzE0ZVx1YzE0Zlx1YzE1MFx1YzE1MVx1YzE1Mlx1YzE1M1x1YzE1Nlx1YzE1N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE1OVx1YzE1YVx1YzE1Ylx1YzE1ZFx1YzE1ZVx1YzE1Zlx1YzE2MFx1'@; put 'YzE2MVx1YzE2Mlx1YzE2M1x1YzE2Nlx1YzE2YVx1YzE2Ylx1YzE2Y1x1YzE2ZFx1YzE2ZVx1YzE2Zlx1YzE3MVx1YzE3Mlx1YzE3M1x1YzE3NVx1YzE3Nlx1YzE3N1x1YzE3OVx1YzE3YVx1YzE3Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE3Y1x1YzE3ZFx1YzE3'@; put 'ZVx1YzE3Zlx1YzE4MFx1YzE4MVx1YzE4Mlx1YzE4M1x1YzE4NFx1YzE4Nlx1YzE4N1x1YzE4OFx1YzE4OVx1YzE4YVx1YzE4Ylx1YzE4Zlx1YzE5MVx1YzE5Mlx1YzE5M1x1YzE5NVx1YzE5N1x1YzE5OFx1YzE5OVx1YzE5YVx1YzE5Ylx1YzE5ZVx1YzFhMFx1YzFhMlx1YzFhM1x1YzFhNFx1'@; put 'YzFhNlx1YzFhN1x1YzFhYVx1YzFhYlx1YzFhZFx1YzFhZVx1YzFhZlx1YzFiMVx1YzFiMlx1YzFiM1x1YzFiNFx1YzFiNVx1YzFiNlx1YzFiN1x1YzFiOFx1YzFiOVx1YzFiYVx1YzFiYlx1YzFiY1x1YzFiZVx1YzFiZlx1YzFjMFx1YzFjMVx1YzFjMlx1YzFjM1x1YzFjNVx1YzFjNlx1YzFj'@; put 'N1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZFx1YzFjZVx1YzFjZlx1YzFkMFx1YzFkMVx1YzFkMlx1YzFkM1x1YzFkNVx1YzFkNlx1YzFkOVx1YzFkYVx1YzFkYlx1YzFkY1x1YzFkZFx1YzFkZVx1YzFkZlx1YzFlMVx1YzFlMlx1YzFlM1x1YzFlNVx1YzFlNlx1YzFlN1x1YzFlOVx1YzFlYVx1'@; put 'YzFlYlx1YzFlY1x1YzFlZFx1YzFlZVx1YzFlZlx1YzFmMlx1YzFmNFx1YzFmNVx1YzFmNlx1YzFmN1x1YzFmOFx1YzFmOVx1YzFmYVx1YzFmYlx1YzFmZVx1YzFmZlx1YzIwMVx1YzIwMlx1YzIwM1x1YzIwNVx1YzIwNlx1YzIwN1x1YzIwOFx1YzIwOVx1YzIwYVx1YzIwYlx1YzIwZVx1YzIx'@; put 'MFx1YzIxMlx1YzIxM1x1YzIxNFx1YzIxNVx1YzIxNlx1YzIxN1x1YzIxYVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTUzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1M11b'@; put 'c11dPTM5MTY4K3MsaFszOTE2OCtzXT1jWzE1M11bc10pO2ZvcihjWzE1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzIyNFx1YzIyNVx1YzIyNlx1YzIyN1x1YzIyYVx1YzIyY1x1YzIyZVx1YzIzMFx1YzIzM1x1YzIz'@; put 'NVx1YzIzNlx1YzIzN1x1YzIzOFx1YzIzOVx1YzIzYVx1YzIzYlx1YzIzY1x1YzIzZFx1YzIzZVx1YzIzZlx1YzI0MFx1YzI0MVx1YzI0Mlx1YzI0M1x1YzI0NFx1YzI0NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzI0Nlx1YzI0N1x1YzI0OVx1YzI0YVx1YzI0Ylx1'@; put 'YzI0Y1x1YzI0ZFx1YzI0ZVx1YzI0Zlx1YzI1Mlx1YzI1M1x1YzI1NVx1YzI1Nlx1YzI1N1x1YzI1OVx1YzI1YVx1YzI1Ylx1YzI1Y1x1YzI1ZFx1YzI1ZVx1YzI1Zlx1YzI2MVx1YzI2Mlx1YzI2M1x1YzI2NFx1YzI2Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzI2'@; put 'N1x1YzI2OFx1YzI2OVx1YzI2YVx1YzI2Ylx1YzI2ZVx1YzI2Zlx1YzI3MVx1YzI3Mlx1YzI3M1x1YzI3NVx1YzI3Nlx1YzI3N1x1YzI3OFx1YzI3OVx1YzI3YVx1YzI3Ylx1YzI3ZVx1YzI4MFx1YzI4Mlx1YzI4M1x1YzI4NFx1YzI4NVx1YzI4Nlx1YzI4N1x1YzI4YVx1YzI4Ylx1YzI4Y1x1'@; put 'YzI4ZFx1YzI4ZVx1YzI4Zlx1YzI5MVx1YzI5Mlx1YzI5M1x1YzI5NFx1YzI5NVx1YzI5Nlx1YzI5N1x1YzI5OVx1YzI5YVx1YzI5Y1x1YzI5ZVx1YzI5Zlx1YzJhMFx1YzJhMVx1YzJhMlx1YzJhM1x1YzJhNlx1YzJhN1x1YzJhOVx1YzJhYVx1YzJhYlx1YzJhZVx1YzJhZlx1YzJiMFx1YzJi'@; put 'MVx1YzJiMlx1YzJiM1x1YzJiNlx1YzJiOFx1YzJiYVx1YzJiYlx1YzJiY1x1YzJiZFx1YzJiZVx1YzJiZlx1YzJjMFx1YzJjMVx1YzJjMlx1YzJjM1x1YzJjNFx1YzJjNVx1YzJjNlx1YzJjN1x1YzJjOFx1YzJjOVx1YzJjYVx1YzJjYlx1YzJjY1x1YzJjZFx1YzJjZVx1YzJjZlx1YzJkMFx1'@; put 'YzJkMVx1YzJkMlx1YzJkM1x1YzJkNFx1YzJkNVx1YzJkNlx1YzJkN1x1YzJkOFx1YzJkOVx1YzJkYVx1YzJkYlx1YzJkZVx1YzJkZlx1YzJlMVx1YzJlMlx1YzJlNVx1YzJlNlx1YzJlN1x1YzJlOFx1YzJlOVx1YzJlYVx1YzJlZVx1YzJmMFx1YzJmMlx1YzJmM1x1YzJmNFx1YzJmNVx1YzJm'@; put 'N1x1YzJmYVx1YzJmZFx1YzJmZVx1YzJmZlx1YzMwMVx1YzMwMlx1YzMwM1x1YzMwNFx1YzMwNVx1YzMwNlx1YzMwN1x1YzMwYVx1YzMwYlx1YzMwZVx1YzMwZlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU0XVtzXS5jaGFyQ29kZUF0KDAp'@; put 'JiYoeVtjWzE1NF1bc11dPTM5NDI0K3MsaFszOTQyNCtzXT1jWzE1NF1bc10pO2ZvcihjWzE1NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzMxMFx1YzMxMVx1YzMxMlx1YzMxNlx1YzMxN1x1YzMxOVx1YzMxYVx1YzMx'@; put 'Ylx1YzMxZFx1YzMxZVx1YzMxZlx1YzMyMFx1YzMyMVx1YzMyMlx1YzMyM1x1YzMyNlx1YzMyN1x1YzMyYVx1YzMyYlx1YzMyY1x1YzMyZFx1YzMyZVx1YzMyZlx1YzMzMFx1YzMzMVx1YzMzMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzMzM1x1YzMzNFx1YzMzNVx1'@; put 'YzMzNlx1YzMzN1x1YzMzOFx1YzMzOVx1YzMzYVx1YzMzYlx1YzMzY1x1YzMzZFx1YzMzZVx1YzMzZlx1YzM0MFx1YzM0MVx1YzM0Mlx1YzM0M1x1YzM0NFx1YzM0Nlx1YzM0N1x1YzM0OFx1YzM0OVx1YzM0YVx1YzM0Ylx1YzM0Y1x1YzM0ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1YzM0ZVx1YzM0Zlx1YzM1MFx1YzM1MVx1YzM1Mlx1YzM1M1x1YzM1NFx1YzM1NVx1YzM1Nlx1YzM1N1x1YzM1OFx1YzM1OVx1YzM1YVx1YzM1Ylx1YzM1Y1x1YzM1ZFx1YzM1ZVx1YzM1Zlx1YzM2MFx1YzM2MVx1YzM2Mlx1YzM2M1x1YzM2NFx1YzM2NVx1YzM2Nlx1YzM2N1x1'@; put 'YzM2YVx1YzM2Ylx1YzM2ZFx1YzM2ZVx1YzM2Zlx1YzM3MVx1YzM3M1x1YzM3NFx1YzM3NVx1YzM3Nlx1YzM3N1x1YzM3YVx1YzM3Ylx1YzM3ZVx1YzM3Zlx1YzM4MFx1YzM4MVx1YzM4Mlx1YzM4M1x1YzM4NVx1YzM4Nlx1YzM4N1x1YzM4OVx1YzM4YVx1YzM4Ylx1YzM4ZFx1YzM4ZVx1YzM4'@; put 'Zlx1YzM5MFx1YzM5MVx1YzM5Mlx1YzM5M1x1YzM5NFx1YzM5NVx1YzM5Nlx1YzM5N1x1YzM5OFx1YzM5OVx1YzM5YVx1YzM5Ylx1YzM5Y1x1YzM5ZFx1YzM5ZVx1YzM5Zlx1YzNhMFx1YzNhMVx1YzNhMlx1YzNhM1x1YzNhNFx1YzNhNVx1YzNhNlx1YzNhN1x1YzNhOFx1YzNhOVx1YzNhYVx1'@; put 'YzNhYlx1YzNhY1x1YzNhZFx1YzNhZVx1YzNhZlx1YzNiMFx1YzNiMVx1YzNiMlx1YzNiM1x1YzNiNFx1YzNiNVx1YzNiNlx1YzNiN1x1YzNiOFx1YzNiOVx1YzNiYVx1YzNiYlx1YzNiY1x1YzNiZFx1YzNiZVx1YzNiZlx1YzNjMVx1YzNjMlx1YzNjM1x1YzNjNFx1YzNjNVx1YzNjNlx1YzNj'@; put 'N1x1YzNjOFx1YzNjOVx1YzNjYVx1YzNjYlx1YzNjY1x1YzNjZFx1YzNjZVx1YzNjZlx1YzNkMFx1YzNkMVx1YzNkMlx1YzNkM1x1YzNkNFx1YzNkNVx1YzNkNlx1YzNkN1x1YzNkYVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU1XVtzXS5j'@; put 'aGFyQ29kZUF0KDApJiYoeVtjWzE1NV1bc11dPTM5NjgwK3MsaFszOTY4MCtzXT1jWzE1NV1bc10pO2ZvcihjWzE1Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNkYlx1YzNkZFx1YzNkZVx1YzNlMVx1YzNlM1x1YzNl'@; put 'NFx1YzNlNVx1YzNlNlx1YzNlN1x1YzNlYVx1YzNlYlx1YzNlY1x1YzNlZVx1YzNlZlx1YzNmMFx1YzNmMVx1YzNmMlx1YzNmM1x1YzNmNlx1YzNmN1x1YzNmOVx1YzNmYVx1YzNmYlx1YzNmY1x1YzNmZFx1YzNmZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNmZlx1'@; put 'YzQwMFx1YzQwMVx1YzQwMlx1YzQwM1x1YzQwNFx1YzQwNVx1YzQwNlx1YzQwN1x1YzQwOVx1YzQwYVx1YzQwYlx1YzQwY1x1YzQwZFx1YzQwZVx1YzQwZlx1YzQxMVx1YzQxMlx1YzQxM1x1YzQxNFx1YzQxNVx1YzQxNlx1YzQxN1x1YzQxOFx1YzQxOVx1YzQxYVx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzQxYlx1YzQxY1x1YzQxZFx1YzQxZVx1YzQxZlx1YzQyMFx1YzQyMVx1YzQyMlx1YzQyM1x1YzQyNVx1YzQyNlx1YzQyN1x1YzQyOFx1YzQyOVx1YzQyYVx1YzQyYlx1YzQyZFx1YzQyZVx1YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNVx1YzQzNlx1'@; put 'YzQzN1x1YzQzOFx1YzQzOVx1YzQzYVx1YzQzYlx1YzQzZVx1YzQzZlx1YzQ0MFx1YzQ0MVx1YzQ0Mlx1YzQ0M1x1YzQ0NFx1YzQ0NVx1YzQ0Nlx1YzQ0N1x1YzQ0OVx1YzQ0YVx1YzQ0Ylx1YzQ0Y1x1YzQ0ZFx1YzQ0ZVx1YzQ0Zlx1YzQ1MFx1YzQ1MVx1YzQ1Mlx1YzQ1M1x1YzQ1NFx1YzQ1'@; put 'NVx1YzQ1Nlx1YzQ1N1x1YzQ1OFx1YzQ1OVx1YzQ1YVx1YzQ1Ylx1YzQ1Y1x1YzQ1ZFx1YzQ1ZVx1YzQ1Zlx1YzQ2MFx1YzQ2MVx1YzQ2Mlx1YzQ2M1x1YzQ2Nlx1YzQ2N1x1YzQ2OVx1YzQ2YVx1YzQ2Ylx1YzQ2ZFx1YzQ2ZVx1YzQ2Zlx1YzQ3MFx1YzQ3MVx1YzQ3Mlx1YzQ3M1x1YzQ3Nlx1'@; put 'YzQ3N1x1YzQ3OFx1YzQ3YVx1YzQ3Ylx1YzQ3Y1x1YzQ3ZFx1YzQ3ZVx1YzQ3Zlx1YzQ4MVx1YzQ4Mlx1YzQ4M1x1YzQ4NFx1YzQ4NVx1YzQ4Nlx1YzQ4N1x1YzQ4OFx1YzQ4OVx1YzQ4YVx1YzQ4Ylx1YzQ4Y1x1YzQ4ZFx1YzQ4ZVx1YzQ4Zlx1YzQ5MFx1YzQ5MVx1YzQ5Mlx1YzQ5M1x1YzQ5'@; put 'NVx1YzQ5Nlx1YzQ5N1x1YzQ5OFx1YzQ5OVx1YzQ5YVx1YzQ5Ylx1YzQ5ZFx1YzQ5ZVx1YzQ5Zlx1YzRhMFx1YzRhMVx1YzRhMlx1YzRhM1x1YzRhNFx1YzRhNVx1YzRhNlx1YzRhN1x1YzRhOFx1YzRhOVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1Nl0ubGVuZ3RoOysrcyk2NTUzMyE9'@; put 'PWNbMTU2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1Nl1bc11dPTM5OTM2K3MsaFszOTkzNitzXT1jWzE1Nl1bc10pO2ZvcihjWzE1N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRhYVx1YzRhYlx1YzRhY1x1YzRh'@; put 'ZFx1YzRhZVx1YzRhZlx1YzRiMFx1YzRiMVx1YzRiMlx1YzRiM1x1YzRiNFx1YzRiNVx1YzRiNlx1YzRiN1x1YzRiOVx1YzRiYVx1YzRiYlx1YzRiZFx1YzRiZVx1YzRiZlx1YzRjMFx1YzRjMVx1YzRjMlx1YzRjM1x1YzRjNFx1YzRjNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1YzRjNlx1YzRjN1x1YzRjOFx1YzRjOVx1YzRjYVx1YzRjYlx1YzRjY1x1YzRjZFx1YzRjZVx1YzRjZlx1YzRkMFx1YzRkMVx1YzRkMlx1YzRkM1x1YzRkNFx1YzRkNVx1YzRkNlx1YzRkN1x1YzRkOFx1YzRkOVx1YzRkYVx1YzRkYlx1YzRkY1x1YzRkZFx1YzRkZVx1YzRkZlx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRlMFx1YzRlMVx1YzRlMlx1YzRlM1x1YzRlNFx1YzRlNVx1YzRlNlx1YzRlN1x1YzRlOFx1YzRlYVx1YzRlYlx1YzRlY1x1YzRlZFx1YzRlZVx1YzRlZlx1YzRmMlx1YzRmM1x1YzRmNVx1YzRmNlx1YzRmN1x1YzRmOVx1YzRmYlx1'@; put 'YzRmY1x1YzRmZFx1YzRmZVx1YzUwMlx1YzUwM1x1YzUwNFx1YzUwNVx1YzUwNlx1YzUwN1x1YzUwOFx1YzUwOVx1YzUwYVx1YzUwYlx1YzUwZFx1YzUwZVx1YzUwZlx1YzUxMVx1YzUxMlx1YzUxM1x1YzUxNVx1YzUxNlx1YzUxN1x1YzUxOFx1YzUxOVx1YzUxYVx1YzUxYlx1YzUxZFx1YzUx'@; put 'ZVx1YzUxZlx1YzUyMFx1YzUyMVx1YzUyMlx1YzUyM1x1YzUyNFx1YzUyNVx1YzUyNlx1YzUyN1x1YzUyYVx1YzUyYlx1YzUyZFx1YzUyZVx1YzUyZlx1YzUzMVx1YzUzMlx1YzUzM1x1YzUzNFx1YzUzNVx1YzUzNlx1YzUzN1x1YzUzYVx1YzUzY1x1YzUzZVx1YzUzZlx1YzU0MFx1YzU0MVx1'@; put 'YzU0Mlx1YzU0M1x1YzU0Nlx1YzU0N1x1YzU0Ylx1YzU0Zlx1YzU1MFx1YzU1MVx1YzU1Mlx1YzU1Nlx1YzU1YVx1YzU1Ylx1YzU1Y1x1YzU1Zlx1YzU2Mlx1YzU2M1x1YzU2NVx1YzU2Nlx1YzU2N1x1YzU2OVx1YzU2YVx1YzU2Ylx1YzU2Y1x1YzU2ZFx1YzU2ZVx1YzU2Zlx1YzU3Mlx1YzU3'@; put 'Nlx1YzU3N1x1YzU3OFx1YzU3OVx1YzU3YVx1YzU3Ylx1YzU3ZVx1YzU3Zlx1YzU4MVx1YzU4Mlx1YzU4M1x1YzU4NVx1YzU4Nlx1YzU4OFx1YzU4OVx1YzU4YVx1YzU4Ylx1YzU4ZVx1YzU5MFx1YzU5Mlx1YzU5M1x1YzU5NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE1N10ubGVuZ3Ro'@; put 'Oysrcyk2NTUzMyE9PWNbMTU3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1N11bc11dPTQwMTkyK3MsaFs0MDE5MitzXT1jWzE1N11bc10pO2ZvcihjWzE1OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzU5Nlx1YzU5'@; put 'OVx1YzU5YVx1YzU5Ylx1YzU5ZFx1YzU5ZVx1YzU5Zlx1YzVhMVx1YzVhMlx1YzVhM1x1YzVhNFx1YzVhNVx1YzVhNlx1YzVhN1x1YzVhOFx1YzVhYVx1YzVhYlx1YzVhY1x1YzVhZFx1YzVhZVx1YzVhZlx1YzViMFx1YzViMVx1YzViMlx1YzViM1x1YzViNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1YzViN1x1YzViYVx1YzViZlx1YzVjMFx1YzVjMVx1YzVjMlx1YzVjM1x1YzVjYlx1YzVjZFx1YzVjZlx1YzVkMlx1YzVkM1x1YzVkNVx1YzVkNlx1YzVkN1x1YzVkOVx1YzVkYVx1YzVkYlx1YzVkY1x1YzVkZFx1YzVkZVx1YzVkZlx1YzVlMlx1YzVlNFx1YzVl'@; put 'Nlx1YzVlN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzVlOFx1YzVlOVx1YzVlYVx1YzVlYlx1YzVlZlx1YzVmMVx1YzVmMlx1YzVmM1x1YzVmNVx1YzVmOFx1YzVmOVx1YzVmYVx1YzVmYlx1YzYwMlx1YzYwM1x1YzYwNFx1YzYwOVx1YzYwYVx1YzYwYlx1YzYwZFx1'@; put 'YzYwZVx1YzYwZlx1YzYxMVx1YzYxMlx1YzYxM1x1YzYxNFx1YzYxNVx1YzYxNlx1YzYxN1x1YzYxYVx1YzYxZFx1YzYxZVx1YzYxZlx1YzYyMFx1YzYyMVx1YzYyMlx1YzYyM1x1YzYyNlx1YzYyN1x1YzYyOVx1YzYyYVx1YzYyYlx1YzYyZlx1YzYzMVx1YzYzMlx1YzYzNlx1YzYzOFx1YzYz'@; put 'YVx1YzYzY1x1YzYzZFx1YzYzZVx1YzYzZlx1YzY0Mlx1YzY0M1x1YzY0NVx1YzY0Nlx1YzY0N1x1YzY0OVx1YzY0YVx1YzY0Ylx1YzY0Y1x1YzY0ZFx1YzY0ZVx1YzY0Zlx1YzY1Mlx1YzY1Nlx1YzY1N1x1YzY1OFx1YzY1OVx1YzY1YVx1YzY1Ylx1YzY1ZVx1YzY1Zlx1YzY2MVx1YzY2Mlx1'@; put 'YzY2M1x1YzY2NFx1YzY2NVx1YzY2Nlx1YzY2N1x1YzY2OFx1YzY2OVx1YzY2YVx1YzY2Ylx1YzY2ZFx1YzY2ZVx1YzY3MFx1YzY3Mlx1YzY3M1x1YzY3NFx1YzY3NVx1YzY3Nlx1YzY3N1x1YzY3YVx1YzY3Ylx1YzY3ZFx1YzY3ZVx1YzY3Zlx1YzY4MVx1YzY4Mlx1YzY4M1x1YzY4NFx1YzY4'@; put 'NVx1YzY4Nlx1YzY4N1x1YzY4YVx1YzY4Y1x1YzY4ZVx1YzY4Zlx1YzY5MFx1YzY5MVx1YzY5Mlx1YzY5M1x1YzY5Nlx1YzY5N1x1YzY5OVx1YzY5YVx1YzY5Ylx1YzY5ZFx1YzY5ZVx1YzY5Zlx1YzZhMFx1YzZhMVx1YzZhMlx1YzZhM1x1YzZhNlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1j'@; put 'WzE1OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1OF1bc11dPTQwNDQ4K3MsaFs0MDQ0OCtzXT1jWzE1OF1bc10pO2ZvcihjWzE1OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1YzZhOFx1YzZhYVx1YzZhYlx1YzZhY1x1YzZhZFx1YzZhZVx1YzZhZlx1YzZiMlx1YzZiM1x1YzZiNVx1YzZiNlx1YzZiN1x1YzZiYlx1YzZiY1x1YzZiZFx1YzZiZVx1YzZiZlx1YzZjMlx1YzZjNFx1YzZjNlx1YzZjN1x1YzZjOFx1YzZjOVx1YzZjYVx1YzZjYlx1YzZjZVx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZjZlx1YzZkMVx1YzZkMlx1YzZkM1x1YzZkNVx1YzZkNlx1YzZkN1x1YzZkOFx1YzZkOVx1YzZkYVx1YzZkYlx1YzZkZVx1YzZkZlx1YzZlMlx1YzZlM1x1YzZlNFx1YzZlNVx1YzZlNlx1YzZlN1x1YzZlYVx1YzZlYlx1YzZlZFx1YzZl'@; put 'ZVx1YzZlZlx1YzZmMVx1YzZmMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZmM1x1YzZmNFx1YzZmNVx1YzZmNlx1YzZmN1x1YzZmYVx1YzZmYlx1YzZmY1x1YzZmZVx1YzZmZlx1YzcwMFx1YzcwMVx1YzcwMlx1YzcwM1x1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1'@; put 'YzcwYlx1YzcwZFx1YzcwZVx1YzcwZlx1YzcxMFx1YzcxMVx1YzcxMlx1YzcxM1x1YzcxNlx1YzcxOFx1YzcxYVx1YzcxYlx1YzcxY1x1YzcxZFx1YzcxZVx1YzcxZlx1YzcyMlx1YzcyM1x1YzcyNVx1YzcyNlx1YzcyN1x1YzcyOVx1YzcyYVx1YzcyYlx1YzcyY1x1YzcyZFx1YzcyZVx1Yzcy'@; put 'Zlx1YzczMlx1YzczNFx1YzczNlx1YzczOFx1YzczOVx1YzczYVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NVx1Yzc0Nlx1Yzc0N1x1Yzc0OFx1Yzc0OVx1Yzc0Ylx1Yzc0ZVx1Yzc1MFx1Yzc1OVx1Yzc1YVx1Yzc1Ylx1Yzc1ZFx1Yzc1ZVx1Yzc1Zlx1Yzc2MVx1'@; put 'Yzc2Mlx1Yzc2M1x1Yzc2NFx1Yzc2NVx1Yzc2Nlx1Yzc2N1x1Yzc2OVx1Yzc2YVx1Yzc2Y1x1Yzc2ZFx1Yzc2ZVx1Yzc2Zlx1Yzc3MFx1Yzc3MVx1Yzc3Mlx1Yzc3M1x1Yzc3Nlx1Yzc3N1x1Yzc3OVx1Yzc3YVx1Yzc3Ylx1Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4'@; put 'Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1Yzc5OVx1Yzc5Ylx1Yzc5Y1x1Yzc5ZFx1Yzc5ZVx1Yzc5Zlx1YzdhMlx1YzdhN1x1YzdhOFx1YzdhOVx1YzdhYVx1YzdhYlx1YzdhZVx1YzdhZlx1YzdiMVx1YzdiMlx1YzdiM1x1YzdiNVx1YzdiNlx1YzdiN1x1ZmZmZCIuc3BsaXQo'@; put 'IiIpLHM9MDtzIT1jWzE1OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTU5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE1OV1bc11dPTQwNzA0K3MsaFs0MDcwNCtzXT1jWzE1OV1bc10pO2ZvcihjWzE2MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1YzdiOFx1YzdiOVx1YzdiYVx1YzdiYlx1YzdiZVx1YzdjMlx1YzdjM1x1YzdjNFx1YzdjNVx1YzdjNlx1YzdjN1x1YzdjYVx1YzdjYlx1YzdjZFx1YzdjZlx1YzdkMVx1YzdkMlx1YzdkM1x1YzdkNFx1YzdkNVx1YzdkNlx1YzdkN1x1YzdkOVx1YzdkYVx1YzdkYlx1'@; put 'YzdkY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzdkZVx1YzdkZlx1YzdlMFx1YzdlMVx1YzdlMlx1YzdlM1x1YzdlNVx1YzdlNlx1YzdlN1x1YzdlOVx1YzdlYVx1YzdlYlx1YzdlZFx1YzdlZVx1YzdlZlx1YzdmMFx1YzdmMVx1YzdmMlx1YzdmM1x1YzdmNFx1Yzdm'@; put 'NVx1YzdmNlx1YzdmN1x1YzdmOFx1YzdmOVx1YzdmYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzdmYlx1YzdmY1x1YzdmZFx1YzdmZVx1YzdmZlx1YzgwMlx1YzgwM1x1YzgwNVx1YzgwNlx1YzgwN1x1YzgwOVx1YzgwYlx1YzgwY1x1YzgwZFx1YzgwZVx1YzgwZlx1'@; put 'YzgxMlx1YzgxNFx1YzgxN1x1YzgxOFx1YzgxOVx1YzgxYVx1YzgxYlx1YzgxZVx1YzgxZlx1YzgyMVx1YzgyMlx1YzgyM1x1YzgyNVx1YzgyNlx1YzgyN1x1YzgyOFx1YzgyOVx1YzgyYVx1YzgyYlx1YzgyZVx1YzgzMFx1YzgzMlx1YzgzM1x1YzgzNFx1YzgzNVx1YzgzNlx1YzgzN1x1Yzgz'@; put 'OVx1YzgzYVx1YzgzYlx1YzgzZFx1YzgzZVx1YzgzZlx1Yzg0MVx1Yzg0Mlx1Yzg0M1x1Yzg0NFx1Yzg0NVx1Yzg0Nlx1Yzg0N1x1Yzg0YVx1Yzg0Ylx1Yzg0ZVx1Yzg0Zlx1Yzg1MFx1Yzg1MVx1Yzg1Mlx1Yzg1M1x1Yzg1NVx1Yzg1Nlx1Yzg1N1x1Yzg1OFx1Yzg1OVx1Yzg1YVx1Yzg1Ylx1'@; put 'Yzg1Y1x1Yzg1ZFx1Yzg1ZVx1Yzg1Zlx1Yzg2MFx1Yzg2MVx1Yzg2Mlx1Yzg2M1x1Yzg2NFx1Yzg2NVx1Yzg2Nlx1Yzg2N1x1Yzg2OFx1Yzg2OVx1Yzg2YVx1Yzg2Ylx1Yzg2Y1x1Yzg2ZFx1Yzg2ZVx1Yzg2Zlx1Yzg3Mlx1Yzg3M1x1Yzg3NVx1Yzg3Nlx1Yzg3N1x1Yzg3OVx1Yzg3Ylx1Yzg3'@; put 'Y1x1Yzg3ZFx1Yzg3ZVx1Yzg3Zlx1Yzg4Mlx1Yzg4NFx1Yzg4OFx1Yzg4OVx1Yzg4YVx1Yzg4ZVx1Yzg4Zlx1Yzg5MFx1Yzg5MVx1Yzg5Mlx1Yzg5M1x1Yzg5NVx1Yzg5Nlx1Yzg5N1x1Yzg5OFx1Yzg5OVx1Yzg5YVx1Yzg5Ylx1Yzg5Y1x1Yzg5ZVx1YzhhMFx1YzhhMlx1YzhhM1x1YzhhNFx1'@; put 'ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTYwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2MF1bc11dPTQwOTYwK3MsaFs0MDk2MCtzXT1jWzE2MF1bc10pO2ZvcihjWzE2MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzhhNVx1YzhhNlx1YzhhN1x1YzhhOVx1YzhhYVx1YzhhYlx1YzhhY1x1YzhhZFx1YzhhZVx1YzhhZlx1YzhiMFx1YzhiMVx1YzhiMlx1YzhiM1x1YzhiNFx1YzhiNVx1YzhiNlx1YzhiN1x1YzhiOFx1YzhiOVx1YzhiYVx1YzhiYlx1YzhiZVx1'@; put 'YzhiZlx1YzhjMFx1YzhjMVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzhjMlx1YzhjM1x1YzhjNVx1YzhjNlx1YzhjN1x1YzhjOVx1YzhjYVx1YzhjYlx1YzhjZFx1YzhjZVx1YzhjZlx1YzhkMFx1YzhkMVx1YzhkMlx1YzhkM1x1YzhkNlx1YzhkOFx1YzhkYVx1Yzhk'@; put 'Ylx1YzhkY1x1YzhkZFx1YzhkZVx1YzhkZlx1YzhlMlx1YzhlM1x1YzhlNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzhlNlx1YzhlN1x1YzhlOFx1YzhlOVx1YzhlYVx1YzhlYlx1YzhlY1x1YzhlZFx1YzhlZVx1YzhlZlx1YzhmMFx1YzhmMVx1YzhmMlx1YzhmM1x1'@; put 'YzhmNFx1YzhmNlx1YzhmN1x1YzhmOFx1YzhmOVx1YzhmYVx1YzhmYlx1YzhmZVx1YzhmZlx1YzkwMVx1YzkwMlx1YzkwM1x1YzkwN1x1YzkwOFx1YzkwOVx1YzkwYVx1YzkwYlx1YzkwZVx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTIwMjVcdTIwMjZceGE4XHUzMDAzXHhhZFx1MjAxNVx1MjIy'@; put 'NVx1ZmYzY1x1MjIzY1x1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOFx1MzAwOVx1MzAwYVx1MzAwYlx1MzAwY1x1MzAwZFx1MzAwZVx1MzAwZlx1MzAxMFx1MzAxMVx4YjFceGQ3XHhmN1x1MjI2MFx1MjI2NFx1MjI2NVx1MjIxZVx1MjIzNFx4YjBcdTIwMzJcdTIw'@; put 'MzNcdTIxMDNcdTIxMmJcdWZmZTBcdWZmZTFcdWZmZTVcdTI2NDJcdTI2NDBcdTIyMjBcdTIyYTVcdTIzMTJcdTIyMDJcdTIyMDdcdTIyNjFcdTIyNTJceGE3XHUyMDNiXHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUy'@; put 'NWJkXHUyNWJjXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUyMTk0XHUzMDEzXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5XHUyMjI3XHUyMjI4XHVmZmUyXHVmZmZk'@; put 'Ii5zcGxpdCgiIikscz0wO3MhPWNbMTYxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTYxXVtzXV09NDEyMTYrcyxoWzQxMjE2K3NdPWNbMTYxXVtzXSk7Zm9yKGNbMTYyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTEwXHVjOTEyXHVjOTEzXHVjOTE0XHVjOTE1XHVjOTE2XHVjOTE3XHVjOTE5XHVjOTFhXHVjOTFiXHVjOTFjXHVjOTFkXHVjOTFlXHVjOTFmXHVjOTIwXHVjOTIxXHVjOTIyXHVjOTIzXHVjOTI0XHVjOTI1XHVjOTI2XHVjOTI3XHVjOTI4XHVjOTI5'@; put 'XHVjOTJhXHVjOTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTJkXHVjOTJlXHVjOTJmXHVjOTMwXHVjOTMxXHVjOTMyXHVjOTMzXHVjOTM1XHVjOTM2XHVjOTM3XHVjOTM4XHVjOTM5XHVjOTNhXHVjOTNiXHVjOTNjXHVjOTNkXHVjOTNlXHVjOTNmXHVjOTQwXHVj'@; put 'OTQxXHVjOTQyXHVjOTQzXHVjOTQ0XHVjOTQ1XHVjOTQ2XHVjOTQ3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTQ4XHVjOTQ5XHVjOTRhXHVjOTRiXHVjOTRjXHVjOTRkXHVjOTRlXHVjOTRmXHVjOTUyXHVjOTUzXHVjOTU1XHVjOTU2XHVjOTU3XHVjOTU5XHVjOTVh'@; put 'XHVjOTViXHVjOTVjXHVjOTVkXHVjOTVlXHVjOTVmXHVjOTYyXHVjOTY0XHVjOTY1XHVjOTY2XHVjOTY3XHVjOTY4XHVjOTY5XHVjOTZhXHVjOTZiXHVjOTZkXHVjOTZlXHVjOTZmXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzXHhiNFx1ZmY1ZVx1MDJjN1x1MDJkOFx1MDJkZFx1MDJkYVx1MDJk'@; put 'OVx4YjhcdTAyZGJceGExXHhiZlx1MDJkMFx1MjIyZVx1MjIxMVx1MjIwZlx4YTRcdTIxMDlcdTIwMzBcdTI1YzFcdTI1YzBcdTI1YjdcdTI1YjZcdTI2NjRcdTI2NjBcdTI2NjFcdTI2NjVcdTI2NjdcdTI2NjNcdTIyOTlcdTI1YzhcdTI1YTNcdTI1ZDBcdTI1ZDFcdTI1OTJcdTI1YTRcdTI1'@; put 'YTVcdTI1YThcdTI1YTdcdTI1YTZcdTI1YTlcdTI2NjhcdTI2MGZcdTI2MGVcdTI2MWNcdTI2MWVceGI2XHUyMDIwXHUyMDIxXHUyMTk1XHUyMTk3XHUyMTk5XHUyMTk2XHUyMTk4XHUyNjZkXHUyNjY5XHUyNjZhXHUyNjZjXHUzMjdmXHUzMjFjXHUyMTE2XHUzM2M3XHUyMTIyXHUzM2MyXHUz'@; put 'M2Q4XHUyMTIxXHUyMGFjXHhhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIu'@; put 'c3BsaXQoIiIpLHM9MDtzIT1jWzE2Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTYyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2Ml1bc11dPTQxNDcyK3MsaFs0MTQ3MitzXT1jWzE2Ml1bc10pO2ZvcihjWzE2M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yzk3MVx1Yzk3Mlx1Yzk3M1x1Yzk3NVx1Yzk3Nlx1Yzk3N1x1Yzk3OFx1Yzk3OVx1Yzk3YVx1Yzk3Ylx1Yzk3ZFx1Yzk3ZVx1Yzk3Zlx1Yzk4MFx1Yzk4MVx1Yzk4Mlx1Yzk4M1x1Yzk4NFx1Yzk4NVx1Yzk4Nlx1Yzk4N1x1Yzk4YVx1Yzk4Ylx1Yzk4ZFx1'@; put 'Yzk4ZVx1Yzk4Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yzk5MVx1Yzk5Mlx1Yzk5M1x1Yzk5NFx1Yzk5NVx1Yzk5Nlx1Yzk5N1x1Yzk5YVx1Yzk5Y1x1Yzk5ZVx1Yzk5Zlx1YzlhMFx1YzlhMVx1YzlhMlx1YzlhM1x1YzlhNFx1YzlhNVx1YzlhNlx1YzlhN1x1Yzlh'@; put 'OFx1YzlhOVx1YzlhYVx1YzlhYlx1YzlhY1x1YzlhZFx1YzlhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzlhZlx1YzliMFx1YzliMVx1YzliMlx1YzliM1x1YzliNFx1YzliNVx1YzliNlx1YzliN1x1YzliOFx1YzliOVx1YzliYVx1YzliYlx1YzliY1x1YzliZFx1'@; put 'YzliZVx1YzliZlx1YzljMlx1YzljM1x1YzljNVx1YzljNlx1YzljOVx1YzljYlx1YzljY1x1YzljZFx1YzljZVx1YzljZlx1YzlkMlx1YzlkNFx1YzlkN1x1YzlkOFx1YzlkYlx1ZmYwMVx1ZmYwMlx1ZmYwM1x1ZmYwNFx1ZmYwNVx1ZmYwNlx1ZmYwN1x1ZmYwOFx1ZmYwOVx1ZmYwYVx1ZmYw'@; put 'Ylx1ZmYwY1x1ZmYwZFx1ZmYwZVx1ZmYwZlx1ZmYxMFx1ZmYxMVx1ZmYxMlx1ZmYxM1x1ZmYxNFx1ZmYxNVx1ZmYxNlx1ZmYxN1x1ZmYxOFx1ZmYxOVx1ZmYxYVx1ZmYxYlx1ZmYxY1x1ZmYxZFx1ZmYxZVx1ZmYxZlx1ZmYyMFx1ZmYyMVx1ZmYyMlx1ZmYyM1x1ZmYyNFx1ZmYyNVx1ZmYyNlx1'@; put 'ZmYyN1x1ZmYyOFx1ZmYyOVx1ZmYyYVx1ZmYyYlx1ZmYyY1x1ZmYyZFx1ZmYyZVx1ZmYyZlx1ZmYzMFx1ZmYzMVx1ZmYzMlx1ZmYzM1x1ZmYzNFx1ZmYzNVx1ZmYzNlx1ZmYzN1x1ZmYzOFx1ZmYzOVx1ZmYzYVx1ZmYzYlx1ZmZlNlx1ZmYzZFx1ZmYzZVx1ZmYzZlx1ZmY0MFx1ZmY0MVx1ZmY0'@; put 'Mlx1ZmY0M1x1ZmY0NFx1ZmY0NVx1ZmY0Nlx1ZmY0N1x1ZmY0OFx1ZmY0OVx1ZmY0YVx1ZmY0Ylx1ZmY0Y1x1ZmY0ZFx1ZmY0ZVx1ZmY0Zlx1ZmY1MFx1ZmY1MVx1ZmY1Mlx1ZmY1M1x1ZmY1NFx1ZmY1NVx1ZmY1Nlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1ZmY1Ylx1ZmY1Y1x1ZmY1ZFx1'@; put 'ZmZlM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTYzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2M11bc11dPTQxNzI4K3MsaFs0MTcyOCtzXT1jWzE2M11bc10pO2ZvcihjWzE2NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzlkZVx1YzlkZlx1YzllMVx1YzllM1x1YzllNVx1YzllNlx1YzllOFx1YzllOVx1YzllYVx1YzllYlx1YzllZVx1YzlmMlx1YzlmM1x1YzlmNFx1YzlmNVx1YzlmNlx1YzlmN1x1YzlmYVx1YzlmYlx1YzlmZFx1YzlmZVx1YzlmZlx1'@; put 'Y2EwMVx1Y2EwMlx1Y2EwM1x1Y2EwNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2EwNVx1Y2EwNlx1Y2EwN1x1Y2EwYVx1Y2EwZVx1Y2EwZlx1Y2ExMFx1Y2ExMVx1Y2ExMlx1Y2ExM1x1Y2ExNVx1Y2ExNlx1Y2ExN1x1Y2ExOVx1Y2ExYVx1Y2ExYlx1Y2ExY1x1Y2Ex'@; put 'ZFx1Y2ExZVx1Y2ExZlx1Y2EyMFx1Y2EyMVx1Y2EyMlx1Y2EyM1x1Y2EyNFx1Y2EyNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2EyNlx1Y2EyN1x1Y2EyOFx1Y2EyYVx1Y2EyYlx1Y2EyY1x1Y2EyZFx1Y2EyZVx1Y2EyZlx1Y2EzMFx1Y2EzMVx1Y2EzMlx1Y2EzM1x1'@; put 'Y2EzNFx1Y2EzNVx1Y2EzNlx1Y2EzN1x1Y2EzOFx1Y2EzOVx1Y2EzYVx1Y2EzYlx1Y2EzY1x1Y2EzZFx1Y2EzZVx1Y2EzZlx1Y2E0MFx1Y2E0MVx1Y2E0Mlx1Y2E0M1x1Y2E0NFx1Y2E0NVx1Y2E0Nlx1MzEzMVx1MzEzMlx1MzEzM1x1MzEzNFx1MzEzNVx1MzEzNlx1MzEzN1x1MzEzOFx1MzEz'@; put 'OVx1MzEzYVx1MzEzYlx1MzEzY1x1MzEzZFx1MzEzZVx1MzEzZlx1MzE0MFx1MzE0MVx1MzE0Mlx1MzE0M1x1MzE0NFx1MzE0NVx1MzE0Nlx1MzE0N1x1MzE0OFx1MzE0OVx1MzE0YVx1MzE0Ylx1MzE0Y1x1MzE0ZFx1MzE0ZVx1MzE0Zlx1MzE1MFx1MzE1MVx1MzE1Mlx1MzE1M1x1MzE1NFx1'@; put 'MzE1NVx1MzE1Nlx1MzE1N1x1MzE1OFx1MzE1OVx1MzE1YVx1MzE1Ylx1MzE1Y1x1MzE1ZFx1MzE1ZVx1MzE1Zlx1MzE2MFx1MzE2MVx1MzE2Mlx1MzE2M1x1MzE2NFx1MzE2NVx1MzE2Nlx1MzE2N1x1MzE2OFx1MzE2OVx1MzE2YVx1MzE2Ylx1MzE2Y1x1MzE2ZFx1MzE2ZVx1MzE2Zlx1MzE3'@; put 'MFx1MzE3MVx1MzE3Mlx1MzE3M1x1MzE3NFx1MzE3NVx1MzE3Nlx1MzE3N1x1MzE3OFx1MzE3OVx1MzE3YVx1MzE3Ylx1MzE3Y1x1MzE3ZFx1MzE3ZVx1MzE3Zlx1MzE4MFx1MzE4MVx1MzE4Mlx1MzE4M1x1MzE4NFx1MzE4NVx1MzE4Nlx1MzE4N1x1MzE4OFx1MzE4OVx1MzE4YVx1MzE4Ylx1'@; put 'MzE4Y1x1MzE4ZFx1MzE4ZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2NF1bc11dPTQxOTg0K3MsaFs0MTk4NCtzXT1jWzE2NF1bc10pO2ZvcihjWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E0N1x1Y2E0OFx1Y2E0OVx1Y2E0YVx1Y2E0Ylx1Y2E0ZVx1Y2E0Zlx1Y2E1MVx1Y2E1Mlx1Y2E1M1x1Y2E1NVx1Y2E1Nlx1Y2E1N1x1Y2E1OFx1Y2E1OVx1Y2E1YVx1Y2E1Ylx1Y2E1ZVx1Y2E2Mlx1Y2E2M1x1'@; put 'Y2E2NFx1Y2E2NVx1Y2E2Nlx1Y2E2N1x1Y2E2OVx1Y2E2YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E2Ylx1Y2E2Y1x1Y2E2ZFx1Y2E2ZVx1Y2E2Zlx1Y2E3MFx1Y2E3MVx1Y2E3Mlx1Y2E3M1x1Y2E3NFx1Y2E3NVx1Y2E3Nlx1Y2E3N1x1Y2E3OFx1Y2E3OVx1Y2E3'@; put 'YVx1Y2E3Ylx1Y2E3Y1x1Y2E3ZVx1Y2E3Zlx1Y2E4MFx1Y2E4MVx1Y2E4Mlx1Y2E4M1x1Y2E4NVx1Y2E4Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E4N1x1Y2E4OFx1Y2E4OVx1Y2E4YVx1Y2E4Ylx1Y2E4Y1x1Y2E4ZFx1Y2E4ZVx1Y2E4Zlx1Y2E5MFx1Y2E5MVx1'@; put 'Y2E5Mlx1Y2E5M1x1Y2E5NFx1Y2E5NVx1Y2E5Nlx1Y2E5N1x1Y2E5OVx1Y2E5YVx1Y2E5Ylx1Y2E5Y1x1Y2E5ZFx1Y2E5ZVx1Y2E5Zlx1Y2FhMFx1Y2FhMVx1Y2FhMlx1Y2FhM1x1Y2FhNFx1Y2FhNVx1Y2FhNlx1Y2FhN1x1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3'@; put 'Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1'@; put 'MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2NV1bc11dPTQyMjQwK3MsaFs0MjI0MCtzXT1jWzE2NV1bc10pO2ZvcihjWzE2Nl09Ilx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2FhOFx1Y2FhOVx1Y2FhYVx1Y2FhYlx1Y2FhY1x1Y2FhZFx1Y2FhZVx1Y2FhZlx1Y2FiMFx1Y2FiMVx1Y2FiMlx1Y2FiM1x1Y2FiNFx1Y2FiNVx1Y2FiNlx1Y2FiN1x1Y2FiOFx1Y2FiOVx1'@; put 'Y2FiYVx1Y2FiYlx1Y2FiZVx1Y2FiZlx1Y2FjMVx1Y2FjMlx1Y2FjM1x1Y2FjNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2FjNlx1Y2FjN1x1Y2FjOFx1Y2FjOVx1Y2FjYVx1Y2FjYlx1Y2FjZVx1Y2FkMFx1Y2FkMlx1Y2FkNFx1Y2FkNVx1Y2FkNlx1Y2FkN1x1Y2Fk'@; put 'YVx1Y2FkYlx1Y2FkY1x1Y2FkZFx1Y2FkZVx1Y2FkZlx1Y2FlMVx1Y2FlMlx1Y2FlM1x1Y2FlNFx1Y2FlNVx1Y2FlNlx1Y2FlN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2FlOFx1Y2FlOVx1Y2FlYVx1Y2FlYlx1Y2FlZFx1Y2FlZVx1Y2FlZlx1Y2FmMFx1Y2FmMVx1'@; put 'Y2FmMlx1Y2FmM1x1Y2FmNVx1Y2FmNlx1Y2FmN1x1Y2FmOFx1Y2FmOVx1Y2FmYVx1Y2FmYlx1Y2FmY1x1Y2FmZFx1Y2FmZVx1Y2FmZlx1Y2IwMFx1Y2IwMVx1Y2IwMlx1Y2IwM1x1Y2IwNFx1Y2IwNVx1Y2IwNlx1Y2IwN1x1Y2IwOVx1Y2IwYVx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUx'@; put 'OFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1'@; put 'MjUxMlx1MjUxMVx1MjUxYVx1MjUxOVx1MjUxNlx1MjUxNVx1MjUwZVx1MjUwZFx1MjUxZVx1MjUxZlx1MjUyMVx1MjUyMlx1MjUyNlx1MjUyN1x1MjUyOVx1MjUyYVx1MjUyZFx1MjUyZVx1MjUzMVx1MjUzMlx1MjUzNVx1MjUzNlx1MjUzOVx1MjUzYVx1MjUzZFx1MjUzZVx1MjU0MFx1MjU0'@; put 'MVx1MjU0M1x1MjU0NFx1MjU0NVx1MjU0Nlx1MjU0N1x1MjU0OFx1MjU0OVx1MjU0YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2Nl1bc11dPTQyNDk2K3MsaFs0MjQ5NitzXT1jWzE2Nl1bc10pO2Zvcihj'@; put 'WzE2N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2IwYlx1Y2IwY1x1Y2IwZFx1Y2IwZVx1Y2IwZlx1Y2IxMVx1Y2IxMlx1Y2IxM1x1Y2IxNVx1Y2IxNlx1Y2IxN1x1Y2IxOVx1Y2IxYVx1Y2IxYlx1Y2IxY1x1Y2IxZFx1'@; put 'Y2IxZVx1Y2IxZlx1Y2IyMlx1Y2IyM1x1Y2IyNFx1Y2IyNVx1Y2IyNlx1Y2IyN1x1Y2IyOFx1Y2IyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2IyYVx1Y2IyYlx1Y2IyY1x1Y2IyZFx1Y2IyZVx1Y2IyZlx1Y2IzMFx1Y2IzMVx1Y2IzMlx1Y2IzM1x1Y2IzNFx1Y2Iz'@; put 'NVx1Y2IzNlx1Y2IzN1x1Y2IzOFx1Y2IzOVx1Y2IzYVx1Y2IzYlx1Y2IzY1x1Y2IzZFx1Y2IzZVx1Y2IzZlx1Y2I0MFx1Y2I0Mlx1Y2I0M1x1Y2I0NFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I0NVx1Y2I0Nlx1Y2I0N1x1Y2I0YVx1Y2I0Ylx1Y2I0ZFx1Y2I0ZVx1'@; put 'Y2I0Zlx1Y2I1MVx1Y2I1Mlx1Y2I1M1x1Y2I1NFx1Y2I1NVx1Y2I1Nlx1Y2I1N1x1Y2I1YVx1Y2I1Ylx1Y2I1Y1x1Y2I1ZVx1Y2I1Zlx1Y2I2MFx1Y2I2MVx1Y2I2Mlx1Y2I2M1x1Y2I2NVx1Y2I2Nlx1Y2I2N1x1Y2I2OFx1Y2I2OVx1Y2I2YVx1Y2I2Ylx1Y2I2Y1x1MzM5NVx1MzM5Nlx1MzM5'@; put 'N1x1MjExM1x1MzM5OFx1MzNjNFx1MzNhM1x1MzNhNFx1MzNhNVx1MzNhNlx1MzM5OVx1MzM5YVx1MzM5Ylx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzM5Zlx1MzNhMFx1MzNhMVx1MzNhMlx1MzNjYVx1MzM4ZFx1MzM4ZVx1MzM4Zlx1MzNjZlx1MzM4OFx1MzM4OVx1MzNjOFx1MzNhN1x1MzNhOFx1'@; put 'MzNiMFx1MzNiMVx1MzNiMlx1MzNiM1x1MzNiNFx1MzNiNVx1MzNiNlx1MzNiN1x1MzNiOFx1MzNiOVx1MzM4MFx1MzM4MVx1MzM4Mlx1MzM4M1x1MzM4NFx1MzNiYVx1MzNiYlx1MzNiY1x1MzNiZFx1MzNiZVx1MzNiZlx1MzM5MFx1MzM5MVx1MzM5Mlx1MzM5M1x1MzM5NFx1MjEyNlx1MzNj'@; put 'MFx1MzNjMVx1MzM4YVx1MzM4Ylx1MzM4Y1x1MzNkNlx1MzNjNVx1MzNhZFx1MzNhZVx1MzNhZlx1MzNkYlx1MzNhOVx1MzNhYVx1MzNhYlx1MzNhY1x1MzNkZFx1MzNkMFx1MzNkM1x1MzNjM1x1MzNjOVx1MzNkY1x1MzNjNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2N11bc11dPTQyNzUyK3MsaFs0Mjc1MitzXT1jWzE2'@; put 'N11bc10pO2ZvcihjWzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I2ZFx1Y2I2ZVx1Y2I2Zlx1Y2I3MFx1Y2I3MVx1Y2I3Mlx1Y2I3M1x1Y2I3NFx1Y2I3NVx1Y2I3Nlx1Y2I3N1x1Y2I3YVx1Y2I3Ylx1Y2I3Y1x1'@; put 'Y2I3ZFx1Y2I3ZVx1Y2I3Zlx1Y2I4MFx1Y2I4MVx1Y2I4Mlx1Y2I4M1x1Y2I4NFx1Y2I4NVx1Y2I4Nlx1Y2I4N1x1Y2I4OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I4OVx1Y2I4YVx1Y2I4Ylx1Y2I4Y1x1Y2I4ZFx1Y2I4ZVx1Y2I4Zlx1Y2I5MFx1Y2I5MVx1Y2I5'@; put 'Mlx1Y2I5M1x1Y2I5NFx1Y2I5NVx1Y2I5Nlx1Y2I5N1x1Y2I5OFx1Y2I5OVx1Y2I5YVx1Y2I5Ylx1Y2I5ZFx1Y2I5ZVx1Y2I5Zlx1Y2JhMFx1Y2JhMVx1Y2JhMlx1Y2JhM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JhNFx1Y2JhNVx1Y2JhNlx1Y2JhN1x1Y2JhOFx1'@; put 'Y2JhOVx1Y2JhYVx1Y2JhYlx1Y2JhY1x1Y2JhZFx1Y2JhZVx1Y2JhZlx1Y2JiMFx1Y2JiMVx1Y2JiMlx1Y2JiM1x1Y2JiNFx1Y2JiNVx1Y2JiNlx1Y2JiN1x1Y2JiOVx1Y2JiYVx1Y2JiYlx1Y2JiY1x1Y2JiZFx1Y2JiZVx1Y2JiZlx1Y2JjMFx1Y2JjMVx1Y2JjMlx1Y2JjM1x1Y2JjNFx4YzZc'@; put 'eGQwXHhhYVx1MDEyNlx1ZmZmZFx1MDEzMlx1ZmZmZFx1MDEzZlx1MDE0MVx4ZDhcdTAxNTJceGJhXHhkZVx1MDE2Nlx1MDE0YVx1ZmZmZFx1MzI2MFx1MzI2MVx1MzI2Mlx1MzI2M1x1MzI2NFx1MzI2NVx1MzI2Nlx1MzI2N1x1MzI2OFx1MzI2OVx1MzI2YVx1MzI2Ylx1MzI2Y1x1MzI2ZFx1'@; put 'MzI2ZVx1MzI2Zlx1MzI3MFx1MzI3MVx1MzI3Mlx1MzI3M1x1MzI3NFx1MzI3NVx1MzI3Nlx1MzI3N1x1MzI3OFx1MzI3OVx1MzI3YVx1MzI3Ylx1MjRkMFx1MjRkMVx1MjRkMlx1MjRkM1x1MjRkNFx1MjRkNVx1MjRkNlx1MjRkN1x1MjRkOFx1MjRkOVx1MjRkYVx1MjRkYlx1MjRkY1x1MjRk'@; put 'ZFx1MjRkZVx1MjRkZlx1MjRlMFx1MjRlMVx1MjRlMlx1MjRlM1x1MjRlNFx1MjRlNVx1MjRlNlx1MjRlN1x1MjRlOFx1MjRlOVx1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1MjQ2YVx1MjQ2Ylx1MjQ2Y1x1MjQ2ZFx1MjQ2ZVx4'@; put 'YmRcdTIxNTNcdTIxNTRceGJjXHhiZVx1MjE1Ylx1MjE1Y1x1MjE1ZFx1MjE1ZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2OF1bc11dPTQzMDA4K3MsaFs0MzAwOCtzXT1jWzE2OF1bc10p'@; put 'O2ZvcihjWzE2OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JjNVx1Y2JjNlx1Y2JjN1x1Y2JjOFx1Y2JjOVx1Y2JjYVx1Y2JjYlx1Y2JjY1x1Y2JjZFx1Y2JjZVx1Y2JjZlx1Y2JkMFx1Y2JkMVx1Y2JkMlx1Y2JkM1x1'@; put 'Y2JkNVx1Y2JkNlx1Y2JkN1x1Y2JkOFx1Y2JkOVx1Y2JkYVx1Y2JkYlx1Y2JkY1x1Y2JkZFx1Y2JkZVx1Y2JkZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JlMFx1Y2JlMVx1Y2JlMlx1Y2JlM1x1Y2JlNVx1Y2JlNlx1Y2JlOFx1Y2JlYVx1Y2JlYlx1Y2JlY1x1Y2Jl'@; put 'ZFx1Y2JlZVx1Y2JlZlx1Y2JmMFx1Y2JmMVx1Y2JmMlx1Y2JmM1x1Y2JmNFx1Y2JmNVx1Y2JmNlx1Y2JmN1x1Y2JmOFx1Y2JmOVx1Y2JmYVx1Y2JmYlx1Y2JmY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JmZFx1Y2JmZVx1Y2JmZlx1Y2MwMFx1Y2MwMVx1Y2MwMlx1'@; put 'Y2MwM1x1Y2MwNFx1Y2MwNVx1Y2MwNlx1Y2MwN1x1Y2MwOFx1Y2MwOVx1Y2MwYVx1Y2MwYlx1Y2MwZVx1Y2MwZlx1Y2MxMVx1Y2MxMlx1Y2MxM1x1Y2MxNVx1Y2MxNlx1Y2MxN1x1Y2MxOFx1Y2MxOVx1Y2MxYVx1Y2MxYlx1Y2MxZVx1Y2MxZlx1Y2MyMFx1Y2MyM1x1Y2MyNFx4ZTZcdTAxMTFc'@; put 'eGYwXHUwMTI3XHUwMTMxXHUwMTMzXHUwMTM4XHUwMTQwXHUwMTQyXHhmOFx1MDE1M1x4ZGZceGZlXHUwMTY3XHUwMTRiXHUwMTQ5XHUzMjAwXHUzMjAxXHUzMjAyXHUzMjAzXHUzMjA0XHUzMjA1XHUzMjA2XHUzMjA3XHUzMjA4XHUzMjA5XHUzMjBhXHUzMjBiXHUzMjBjXHUzMjBkXHUzMjBl'@; put 'XHUzMjBmXHUzMjEwXHUzMjExXHUzMjEyXHUzMjEzXHUzMjE0XHUzMjE1XHUzMjE2XHUzMjE3XHUzMjE4XHUzMjE5XHUzMjFhXHUzMjFiXHUyNDljXHUyNDlkXHUyNDllXHUyNDlmXHUyNGEwXHUyNGExXHUyNGEyXHUyNGEzXHUyNGE0XHUyNGE1XHUyNGE2XHUyNGE3XHUyNGE4XHUyNGE5XHUy'@; put 'NGFhXHUyNGFiXHUyNGFjXHUyNGFkXHUyNGFlXHUyNGFmXHUyNGIwXHUyNGIxXHUyNGIyXHUyNGIzXHUyNGI0XHUyNGI1XHUyNDc0XHUyNDc1XHUyNDc2XHUyNDc3XHUyNDc4XHUyNDc5XHUyNDdhXHUyNDdiXHUyNDdjXHUyNDdkXHUyNDdlXHUyNDdmXHUyNDgwXHUyNDgxXHUyNDgyXHhiOVx4'@; put 'YjJceGIzXHUyMDc0XHUyMDdmXHUyMDgxXHUyMDgyXHUyMDgzXHUyMDg0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTY5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTY5XVtzXV09NDMyNjQrcyxoWzQzMjY0K3NdPWNbMTY5XVtzXSk7Zm9y'@; put 'KGNbMTcwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzI1XHVjYzI2XHVjYzJhXHVjYzJiXHVjYzJkXHVjYzJmXHVjYzMxXHVjYzMyXHVjYzMzXHVjYzM0XHVjYzM1XHVjYzM2XHVjYzM3XHVjYzNhXHVjYzNmXHVjYzQw'@; put 'XHVjYzQxXHVjYzQyXHVjYzQzXHVjYzQ2XHVjYzQ3XHVjYzQ5XHVjYzRhXHVjYzRiXHVjYzRkXHVjYzRlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzRmXHVjYzUwXHVjYzUxXHVjYzUyXHVjYzUzXHVjYzU2XHVjYzVhXHVjYzViXHVjYzVjXHVjYzVkXHVjYzVlXHVj'@; put 'YzVmXHVjYzYxXHVjYzYyXHVjYzYzXHVjYzY1XHVjYzY3XHVjYzY5XHVjYzZhXHVjYzZiXHVjYzZjXHVjYzZkXHVjYzZlXHVjYzZmXHVjYzcxXHVjYzcyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzczXHVjYzc0XHVjYzc2XHVjYzc3XHVjYzc4XHVjYzc5XHVjYzdh'@; put 'XHVjYzdiXHVjYzdjXHVjYzdkXHVjYzdlXHVjYzdmXHVjYzgwXHVjYzgxXHVjYzgyXHVjYzgzXHVjYzg0XHVjYzg1XHVjYzg2XHVjYzg3XHVjYzg4XHVjYzg5XHVjYzhhXHVjYzhiXHVjYzhjXHVjYzhkXHVjYzhlXHVjYzhmXHVjYzkwXHVjYzkxXHVjYzkyXHVjYzkzXHUzMDQxXHUzMDQyXHUz'@; put 'MDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVl'@; put 'XHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUz'@; put 'MDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTcwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTcwXVtzXV09NDM1MjArcyxoWzQzNTIwK3NdPWNb'@; put 'MTcwXVtzXSk7Zm9yKGNbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzk0XHVjYzk1XHVjYzk2XHVjYzk3XHVjYzlhXHVjYzliXHVjYzlkXHVjYzllXHVjYzlmXHVjY2ExXHVjY2EyXHVjY2EzXHVjY2E0XHVjY2E1'@; put 'XHVjY2E2XHVjY2E3XHVjY2FhXHVjY2FlXHVjY2FmXHVjY2IwXHVjY2IxXHVjY2IyXHVjY2IzXHVjY2I2XHVjY2I3XHVjY2I5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2JhXHVjY2JiXHVjY2JkXHVjY2JlXHVjY2JmXHVjY2MwXHVjY2MxXHVjY2MyXHVjY2MzXHVj'@; put 'Y2M2XHVjY2M4XHVjY2NhXHVjY2NiXHVjY2NjXHVjY2NkXHVjY2NlXHVjY2NmXHVjY2QxXHVjY2QyXHVjY2QzXHVjY2Q1XHVjY2Q2XHVjY2Q3XHVjY2Q4XHVjY2Q5XHVjY2RhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2RiXHVjY2RjXHVjY2RkXHVjY2RlXHVjY2Rm'@; put 'XHVjY2UwXHVjY2UxXHVjY2UyXHVjY2UzXHVjY2U1XHVjY2U2XHVjY2U3XHVjY2U4XHVjY2U5XHVjY2VhXHVjY2ViXHVjY2VkXHVjY2VlXHVjY2VmXHVjY2YxXHVjY2YyXHVjY2YzXHVjY2Y0XHVjY2Y1XHVjY2Y2XHVjY2Y3XHVjY2Y4XHVjY2Y5XHVjY2ZhXHVjY2ZiXHVjY2ZjXHVjY2ZkXHUz'@; put 'MGExXHUzMGEyXHUzMGEzXHUzMGE0XHUzMGE1XHUzMGE2XHUzMGE3XHUzMGE4XHUzMGE5XHUzMGFhXHUzMGFiXHUzMGFjXHUzMGFkXHUzMGFlXHUzMGFmXHUzMGIwXHUzMGIxXHUzMGIyXHUzMGIzXHUzMGI0XHUzMGI1XHUzMGI2XHUzMGI3XHUzMGI4XHUzMGI5XHUzMGJhXHUzMGJiXHUzMGJj'@; put 'XHUzMGJkXHUzMGJlXHUzMGJmXHUzMGMwXHUzMGMxXHUzMGMyXHUzMGMzXHUzMGM0XHUzMGM1XHUzMGM2XHUzMGM3XHUzMGM4XHUzMGM5XHUzMGNhXHUzMGNiXHUzMGNjXHUzMGNkXHUzMGNlXHUzMGNmXHUzMGQwXHUzMGQxXHUzMGQyXHUzMGQzXHUzMGQ0XHUzMGQ1XHUzMGQ2XHUzMGQ3XHUz'@; put 'MGQ4XHUzMGQ5XHUzMGRhXHUzMGRiXHUzMGRjXHUzMGRkXHUzMGRlXHUzMGRmXHUzMGUwXHUzMGUxXHUzMGUyXHUzMGUzXHUzMGU0XHUzMGU1XHUzMGU2XHUzMGU3XHUzMGU4XHUzMGU5XHUzMGVhXHUzMGViXHUzMGVjXHUzMGVkXHUzMGVlXHUzMGVmXHUzMGYwXHUzMGYxXHUzMGYyXHUzMGYz'@; put 'XHUzMGY0XHUzMGY1XHUzMGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTcxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTcxXVtzXV09NDM3NzYrcyxo'@; put 'WzQzNzc2K3NdPWNbMTcxXVtzXSk7Zm9yKGNbMTcyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2ZlXHVjY2ZmXHVjZDAwXHVjZDAyXHVjZDAzXHVjZDA0XHVjZDA1XHVjZDA2XHVjZDA3XHVjZDBhXHVjZDBiXHVjZDBk'@; put 'XHVjZDBlXHVjZDBmXHVjZDExXHVjZDEyXHVjZDEzXHVjZDE0XHVjZDE1XHVjZDE2XHVjZDE3XHVjZDFhXHVjZDFjXHVjZDFlXHVjZDFmXHVjZDIwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZDIxXHVjZDIyXHVjZDIzXHVjZDI1XHVjZDI2XHVjZDI3XHVjZDI5XHVj'@; put 'ZDJhXHVjZDJiXHVjZDJkXHVjZDJlXHVjZDJmXHVjZDMwXHVjZDMxXHVjZDMyXHVjZDMzXHVjZDM0XHVjZDM1XHVjZDM2XHVjZDM3XHVjZDM4XHVjZDNhXHVjZDNiXHVjZDNjXHVjZDNkXHVjZDNlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZDNmXHVjZDQwXHVjZDQx'@; put 'XHVjZDQyXHVjZDQzXHVjZDQ0XHVjZDQ1XHVjZDQ2XHVjZDQ3XHVjZDQ4XHVjZDQ5XHVjZDRhXHVjZDRiXHVjZDRjXHVjZDRkXHVjZDRlXHVjZDRmXHVjZDUwXHVjZDUxXHVjZDUyXHVjZDUzXHVjZDU0XHVjZDU1XHVjZDU2XHVjZDU3XHVjZDU4XHVjZDU5XHVjZDVhXHVjZDViXHVjZDVkXHVj'@; put 'ZDVlXHVjZDVmXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDAxXHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4'@; put 'XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUw'@; put 'NDM1XHUwNDUxXHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRm'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTcyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTcyXVtz'@; put 'XV09NDQwMzIrcyxoWzQ0MDMyK3NdPWNbMTcyXVtzXSk7Zm9yKGNbMTczXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZDYxXHVjZDYyXHVjZDYzXHVjZDY1XHVjZDY2XHVjZDY3XHVjZDY4XHVjZDY5XHVjZDZhXHVjZDZi'@; put 'XHVjZDZlXHVjZDcwXHVjZDcyXHVjZDczXHVjZDc0XHVjZDc1XHVjZDc2XHVjZDc3XHVjZDc5XHVjZDdhXHVjZDdiXHVjZDdjXHVjZDdkXHVjZDdlXHVjZDdmXHVjZDgwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZDgxXHVjZDgyXHVjZDgzXHVjZDg0XHVjZDg1XHVj'@; put 'ZDg2XHVjZDg3XHVjZDg5XHVjZDhhXHVjZDhiXHVjZDhjXHVjZDhkXHVjZDhlXHVjZDhmXHVjZDkwXHVjZDkxXHVjZDkyXHVjZDkzXHVjZDk2XHVjZDk3XHVjZDk5XHVjZDlhXHVjZDliXHVjZDlkXHVjZDllXHVjZDlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGEw'@; put 'XHVjZGExXHVjZGEyXHVjZGEzXHVjZGE2XHVjZGE4XHVjZGFhXHVjZGFiXHVjZGFjXHVjZGFkXHVjZGFlXHVjZGFmXHVjZGIxXHVjZGIyXHVjZGIzXHVjZGI0XHVjZGI1XHVjZGI2XHVjZGI3XHVjZGI4XHVjZGI5XHVjZGJhXHVjZGJiXHVjZGJjXHVjZGJkXHVjZGJlXHVjZGJmXHVjZGMwXHVj'@; put 'ZGMxXHVjZGMyXHVjZGMzXHVjZGM1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTczXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzNdW3NdLmNoYXJDb2RlQXQoMCkm'@; put 'Jih5W2NbMTczXVtzXV09NDQyODgrcyxoWzQ0Mjg4K3NdPWNbMTczXVtzXSk7Zm9yKGNbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGM2XHVjZGM3XHVjZGM4XHVjZGM5XHVjZGNhXHVjZGNiXHVjZGNkXHVjZGNl'@; put 'XHVjZGNmXHVjZGQxXHVjZGQyXHVjZGQzXHVjZGQ0XHVjZGQ1XHVjZGQ2XHVjZGQ3XHVjZGQ4XHVjZGQ5XHVjZGRhXHVjZGRiXHVjZGRjXHVjZGRkXHVjZGRlXHVjZGRmXHVjZGUwXHVjZGUxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGUyXHVjZGUzXHVjZGU0XHVj'@; put 'ZGU1XHVjZGU2XHVjZGU3XHVjZGU5XHVjZGVhXHVjZGViXHVjZGVkXHVjZGVlXHVjZGVmXHVjZGYxXHVjZGYyXHVjZGYzXHVjZGY0XHVjZGY1XHVjZGY2XHVjZGY3XHVjZGZhXHVjZGZjXHVjZGZlXHVjZGZmXHVjZTAwXHVjZTAxXHVjZTAyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVjZTAzXHVjZTA1XHVjZTA2XHVjZTA3XHVjZTA5XHVjZTBhXHVjZTBiXHVjZTBkXHVjZTBlXHVjZTBmXHVjZTEwXHVjZTExXHVjZTEyXHVjZTEzXHVjZTE1XHVjZTE2XHVjZTE3XHVjZTE4XHVjZTFhXHVjZTFiXHVjZTFjXHVjZTFkXHVjZTFlXHVjZTFmXHVjZTIyXHVjZTIzXHVj'@; put 'ZTI1XHVjZTI2XHVjZTI3XHVjZTI5XHVjZTJhXHVjZTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzRdW3NdLmNo'@; put 'YXJDb2RlQXQoMCkmJih5W2NbMTc0XVtzXV09NDQ1NDQrcyxoWzQ0NTQ0K3NdPWNbMTc0XVtzXSk7Zm9yKGNbMTc1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTJjXHVjZTJkXHVjZTJlXHVjZTJmXHVjZTMyXHVjZTM0'@; put 'XHVjZTM2XHVjZTM3XHVjZTM4XHVjZTM5XHVjZTNhXHVjZTNiXHVjZTNjXHVjZTNkXHVjZTNlXHVjZTNmXHVjZTQwXHVjZTQxXHVjZTQyXHVjZTQzXHVjZTQ0XHVjZTQ1XHVjZTQ2XHVjZTQ3XHVjZTQ4XHVjZTQ5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTRhXHVj'@; put 'ZTRiXHVjZTRjXHVjZTRkXHVjZTRlXHVjZTRmXHVjZTUwXHVjZTUxXHVjZTUyXHVjZTUzXHVjZTU0XHVjZTU1XHVjZTU2XHVjZTU3XHVjZTVhXHVjZTViXHVjZTVkXHVjZTVlXHVjZTYyXHVjZTYzXHVjZTY0XHVjZTY1XHVjZTY2XHVjZTY3XHVjZTZhXHVjZTZjXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVjZTZlXHVjZTZmXHVjZTcwXHVjZTcxXHVjZTcyXHVjZTczXHVjZTc2XHVjZTc3XHVjZTc5XHVjZTdhXHVjZTdiXHVjZTdkXHVjZTdlXHVjZTdmXHVjZTgwXHVjZTgxXHVjZTgyXHVjZTgzXHVjZTg2XHVjZTg4XHVjZThhXHVjZThiXHVjZThjXHVjZThkXHVj'@; put 'ZThlXHVjZThmXHVjZTkyXHVjZTkzXHVjZTk1XHVjZTk2XHVjZTk3XHVjZTk5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc1XS5sZW5ndGg7KytzKTY1NTMzIT09'@; put 'Y1sxNzVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc1XVtzXV09NDQ4MDArcyxoWzQ0ODAwK3NdPWNbMTc1XVtzXSk7Zm9yKGNbMTc2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTlhXHVjZTliXHVjZTljXHVjZTlk'@; put 'XHVjZTllXHVjZTlmXHVjZWEyXHVjZWE2XHVjZWE3XHVjZWE4XHVjZWE5XHVjZWFhXHVjZWFiXHVjZWFlXHVjZWFmXHVjZWIwXHVjZWIxXHVjZWIyXHVjZWIzXHVjZWI0XHVjZWI1XHVjZWI2XHVjZWI3XHVjZWI4XHVjZWI5XHVjZWJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVjZWJiXHVjZWJjXHVjZWJkXHVjZWJlXHVjZWJmXHVjZWMwXHVjZWMyXHVjZWMzXHVjZWM0XHVjZWM1XHVjZWM2XHVjZWM3XHVjZWM4XHVjZWM5XHVjZWNhXHVjZWNiXHVjZWNjXHVjZWNkXHVjZWNlXHVjZWNmXHVjZWQwXHVjZWQxXHVjZWQyXHVjZWQzXHVjZWQ0XHVjZWQ1XHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZWQ2XHVjZWQ3XHVjZWQ4XHVjZWQ5XHVjZWRhXHVjZWRiXHVjZWRjXHVjZWRkXHVjZWRlXHVjZWRmXHVjZWUwXHVjZWUxXHVjZWUyXHVjZWUzXHVjZWU2XHVjZWU3XHVjZWU5XHVjZWVhXHVjZWVkXHVjZWVlXHVjZWVmXHVjZWYwXHVj'@; put 'ZWYxXHVjZWYyXHVjZWYzXHVjZWY2XHVjZWZhXHVjZWZiXHVjZWZjXHVjZWZkXHVjZWZlXHVjZWZmXHVhYzAwXHVhYzAxXHVhYzA0XHVhYzA3XHVhYzA4XHVhYzA5XHVhYzBhXHVhYzEwXHVhYzExXHVhYzEyXHVhYzEzXHVhYzE0XHVhYzE1XHVhYzE2XHVhYzE3XHVhYzE5XHVhYzFhXHVhYzFi'@; put 'XHVhYzFjXHVhYzFkXHVhYzIwXHVhYzI0XHVhYzJjXHVhYzJkXHVhYzJmXHVhYzMwXHVhYzMxXHVhYzM4XHVhYzM5XHVhYzNjXHVhYzQwXHVhYzRiXHVhYzRkXHVhYzU0XHVhYzU4XHVhYzVjXHVhYzcwXHVhYzcxXHVhYzc0XHVhYzc3XHVhYzc4XHVhYzdhXHVhYzgwXHVhYzgxXHVhYzgzXHVh'@; put 'Yzg0XHVhYzg1XHVhYzg2XHVhYzg5XHVhYzhhXHVhYzhiXHVhYzhjXHVhYzkwXHVhYzk0XHVhYzljXHVhYzlkXHVhYzlmXHVhY2EwXHVhY2ExXHVhY2E4XHVhY2E5XHVhY2FhXHVhY2FjXHVhY2FmXHVhY2IwXHVhY2I4XHVhY2I5XHVhY2JiXHVhY2JjXHVhY2JkXHVhY2MxXHVhY2M0XHVhY2M4'@; put 'XHVhY2NjXHVhY2Q1XHVhY2Q3XHVhY2UwXHVhY2UxXHVhY2U0XHVhY2U3XHVhY2U4XHVhY2VhXHVhY2VjXHVhY2VmXHVhY2YwXHVhY2YxXHVhY2YzXHVhY2Y1XHVhY2Y2XHVhY2ZjXHVhY2ZkXHVhZDAwXHVhZDA0XHVhZDA2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc2XS5sZW5ndGg7'@; put 'KytzKTY1NTMzIT09Y1sxNzZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc2XVtzXV09NDUwNTYrcyxoWzQ1MDU2K3NdPWNbMTc2XVtzXSk7Zm9yKGNbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjAyXHVjZjAz'@; put 'XHVjZjA1XHVjZjA2XHVjZjA3XHVjZjA5XHVjZjBhXHVjZjBiXHVjZjBjXHVjZjBkXHVjZjBlXHVjZjBmXHVjZjEyXHVjZjE0XHVjZjE2XHVjZjE3XHVjZjE4XHVjZjE5XHVjZjFhXHVjZjFiXHVjZjFkXHVjZjFlXHVjZjFmXHVjZjIxXHVjZjIyXHVjZjIzXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVjZjI1XHVjZjI2XHVjZjI3XHVjZjI4XHVjZjI5XHVjZjJhXHVjZjJiXHVjZjJlXHVjZjMyXHVjZjMzXHVjZjM0XHVjZjM1XHVjZjM2XHVjZjM3XHVjZjM5XHVjZjNhXHVjZjNiXHVjZjNjXHVjZjNkXHVjZjNlXHVjZjNmXHVjZjQwXHVjZjQxXHVjZjQyXHVjZjQz'@; put 'XHVjZjQ0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjQ1XHVjZjQ2XHVjZjQ3XHVjZjQ4XHVjZjQ5XHVjZjRhXHVjZjRiXHVjZjRjXHVjZjRkXHVjZjRlXHVjZjRmXHVjZjUwXHVjZjUxXHVjZjUyXHVjZjUzXHVjZjU2XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVj'@; put 'ZjVkXHVjZjVlXHVjZjVmXHVjZjYwXHVjZjYxXHVjZjYyXHVjZjYzXHVjZjY2XHVjZjY4XHVjZjZhXHVjZjZiXHVjZjZjXHVhZDBjXHVhZDBkXHVhZDBmXHVhZDExXHVhZDE4XHVhZDFjXHVhZDIwXHVhZDI5XHVhZDJjXHVhZDJkXHVhZDM0XHVhZDM1XHVhZDM4XHVhZDNjXHVhZDQ0XHVhZDQ1'@; put 'XHVhZDQ3XHVhZDQ5XHVhZDUwXHVhZDU0XHVhZDU4XHVhZDYxXHVhZDYzXHVhZDZjXHVhZDZkXHVhZDcwXHVhZDczXHVhZDc0XHVhZDc1XHVhZDc2XHVhZDdiXHVhZDdjXHVhZDdkXHVhZDdmXHVhZDgxXHVhZDgyXHVhZDg4XHVhZDg5XHVhZDhjXHVhZDkwXHVhZDljXHVhZDlkXHVhZGE0XHVh'@; put 'ZGI3XHVhZGMwXHVhZGMxXHVhZGM0XHVhZGM4XHVhZGQwXHVhZGQxXHVhZGQzXHVhZGRjXHVhZGUwXHVhZGU0XHVhZGY4XHVhZGY5XHVhZGZjXHVhZGZmXHVhZTAwXHVhZTAxXHVhZTA4XHVhZTA5XHVhZTBiXHVhZTBkXHVhZTE0XHVhZTMwXHVhZTMxXHVhZTM0XHVhZTM3XHVhZTM4XHVhZTNh'@; put 'XHVhZTQwXHVhZTQxXHVhZTQzXHVhZTQ1XHVhZTQ2XHVhZTRhXHVhZTRjXHVhZTRkXHVhZTRlXHVhZTUwXHVhZTU0XHVhZTU2XHVhZTVjXHVhZTVkXHVhZTVmXHVhZTYwXHVhZTYxXHVhZTY1XHVhZTY4XHVhZTY5XHVhZTZjXHVhZTcwXHVhZTc4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNb'@; put 'MTc3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc3XVtzXV09NDUzMTIrcyxoWzQ1MzEyK3NdPWNbMTc3XVtzXSk7Zm9yKGNbMTc4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVjZjZkXHVjZjZlXHVjZjZmXHVjZjcyXHVjZjczXHVjZjc1XHVjZjc2XHVjZjc3XHVjZjc5XHVjZjdhXHVjZjdiXHVjZjdjXHVjZjdkXHVjZjdlXHVjZjdmXHVjZjgxXHVjZjgyXHVjZjgzXHVjZjg0XHVjZjg2XHVjZjg3XHVjZjg4XHVjZjg5XHVjZjhhXHVjZjhiXHVjZjhkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjhlXHVjZjhmXHVjZjkwXHVjZjkxXHVjZjkyXHVjZjkzXHVjZjk0XHVjZjk1XHVjZjk2XHVjZjk3XHVjZjk4XHVjZjk5XHVjZjlhXHVjZjliXHVjZjljXHVjZjlkXHVjZjllXHVjZjlmXHVjZmEwXHVjZmEyXHVjZmEzXHVjZmE0XHVjZmE1'@; put 'XHVjZmE2XHVjZmE3XHVjZmE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZmFhXHVjZmFiXHVjZmFjXHVjZmFkXHVjZmFlXHVjZmFmXHVjZmIxXHVjZmIyXHVjZmIzXHVjZmI0XHVjZmI1XHVjZmI2XHVjZmI3XHVjZmI4XHVjZmI5XHVjZmJhXHVjZmJiXHVjZmJjXHVj'@; put 'ZmJkXHVjZmJlXHVjZmJmXHVjZmMwXHVjZmMxXHVjZmMyXHVjZmMzXHVjZmM1XHVjZmM2XHVjZmM3XHVjZmM4XHVjZmM5XHVjZmNhXHVjZmNiXHVhZTc5XHVhZTdiXHVhZTdjXHVhZTdkXHVhZTg0XHVhZTg1XHVhZThjXHVhZWJjXHVhZWJkXHVhZWJlXHVhZWMwXHVhZWM0XHVhZWNjXHVhZWNk'@; put 'XHVhZWNmXHVhZWQwXHVhZWQxXHVhZWQ4XHVhZWQ5XHVhZWRjXHVhZWU4XHVhZWViXHVhZWVkXHVhZWY0XHVhZWY4XHVhZWZjXHVhZjA3XHVhZjA4XHVhZjBkXHVhZjEwXHVhZjJjXHVhZjJkXHVhZjMwXHVhZjMyXHVhZjM0XHVhZjNjXHVhZjNkXHVhZjNmXHVhZjQxXHVhZjQyXHVhZjQzXHVh'@; put 'ZjQ4XHVhZjQ5XHVhZjUwXHVhZjVjXHVhZjVkXHVhZjY0XHVhZjY1XHVhZjc5XHVhZjgwXHVhZjg0XHVhZjg4XHVhZjkwXHVhZjkxXHVhZjk1XHVhZjljXHVhZmI4XHVhZmI5XHVhZmJjXHVhZmMwXHVhZmM3XHVhZmM4XHVhZmM5XHVhZmNiXHVhZmNkXHVhZmNlXHVhZmQ0XHVhZmRjXHVhZmU4'@; put 'XHVhZmU5XHVhZmYwXHVhZmYxXHVhZmY0XHVhZmY4XHViMDAwXHViMDAxXHViMDA0XHViMDBjXHViMDEwXHViMDE0XHViMDFjXHViMDFkXHViMDI4XHViMDQ0XHViMDQ1XHViMDQ4XHViMDRhXHViMDRjXHViMDRlXHViMDUzXHViMDU0XHViMDU1XHViMDU3XHViMDU5XHVmZmZkIi5zcGxpdCgi'@; put 'Iikscz0wO3MhPWNbMTc4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc4XVtzXV09NDU1NjgrcyxoWzQ1NTY4K3NdPWNbMTc4XVtzXSk7Zm9yKGNbMTc5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVjZmNjXHVjZmNkXHVjZmNlXHVjZmNmXHVjZmQwXHVjZmQxXHVjZmQyXHVjZmQzXHVjZmQ0XHVjZmQ1XHVjZmQ2XHVjZmQ3XHVjZmQ4XHVjZmQ5XHVjZmRhXHVjZmRiXHVjZmRjXHVjZmRkXHVjZmRlXHVjZmRmXHVjZmUyXHVjZmUzXHVjZmU1XHVjZmU2XHVjZmU3XHVj'@; put 'ZmU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZmVhXHVjZmViXHVjZmVjXHVjZmVkXHVjZmVlXHVjZmVmXHVjZmYyXHVjZmY0XHVjZmY2XHVjZmY3XHVjZmY4XHVjZmY5XHVjZmZhXHVjZmZiXHVjZmZkXHVjZmZlXHVjZmZmXHVkMDAxXHVkMDAyXHVkMDAzXHVkMDA1'@; put 'XHVkMDA2XHVkMDA3XHVkMDA4XHVkMDA5XHVkMDBhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDBiXHVkMDBjXHVkMDBkXHVkMDBlXHVkMDBmXHVkMDEwXHVkMDEyXHVkMDEzXHVkMDE0XHVkMDE1XHVkMDE2XHVkMDE3XHVkMDE5XHVkMDFhXHVkMDFiXHVkMDFjXHVk'@; put 'MDFkXHVkMDFlXHVkMDFmXHVkMDIwXHVkMDIxXHVkMDIyXHVkMDIzXHVkMDI0XHVkMDI1XHVkMDI2XHVkMDI3XHVkMDI4XHVkMDI5XHVkMDJhXHVkMDJiXHVkMDJjXHViMDVkXHViMDdjXHViMDdkXHViMDgwXHViMDg0XHViMDhjXHViMDhkXHViMDhmXHViMDkxXHViMDk4XHViMDk5XHViMDlh'@; put 'XHViMDljXHViMDlmXHViMGEwXHViMGExXHViMGEyXHViMGE4XHViMGE5XHViMGFiXHViMGFjXHViMGFkXHViMGFlXHViMGFmXHViMGIxXHViMGIzXHViMGI0XHViMGI1XHViMGI4XHViMGJjXHViMGM0XHViMGM1XHViMGM3XHViMGM4XHViMGM5XHViMGQwXHViMGQxXHViMGQ0XHViMGQ4XHVi'@; put 'MGUwXHViMGU1XHViMTA4XHViMTA5XHViMTBiXHViMTBjXHViMTEwXHViMTEyXHViMTEzXHViMTE4XHViMTE5XHViMTFiXHViMTFjXHViMTFkXHViMTIzXHViMTI0XHViMTI1XHViMTI4XHViMTJjXHViMTM0XHViMTM1XHViMTM3XHViMTM4XHViMTM5XHViMTQwXHViMTQxXHViMTQ0XHViMTQ4'@; put 'XHViMTUwXHViMTUxXHViMTU0XHViMTU1XHViMTU4XHViMTVjXHViMTYwXHViMTc4XHViMTc5XHViMTdjXHViMTgwXHViMTgyXHViMTg4XHViMTg5XHViMThiXHViMThkXHViMTkyXHViMTkzXHViMTk0XHViMTk4XHViMTljXHViMWE4XHViMWNjXHViMWQwXHViMWQ0XHViMWRjXHViMWRkXHVm'@; put 'ZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc5XVtzXV09NDU4MjQrcyxoWzQ1ODI0K3NdPWNbMTc5XVtzXSk7Zm9yKGNbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDJlXHVkMDJmXHVkMDMwXHVkMDMxXHVkMDMyXHVkMDMzXHVkMDM2XHVkMDM3XHVkMDM5XHVkMDNhXHVkMDNiXHVkMDNkXHVkMDNlXHVkMDNmXHVkMDQwXHVkMDQxXHVkMDQyXHVkMDQzXHVkMDQ2XHVkMDQ4XHVkMDRhXHVkMDRiXHVkMDRjXHVk'@; put 'MDRkXHVkMDRlXHVkMDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDUxXHVkMDUyXHVkMDUzXHVkMDU1XHVkMDU2XHVkMDU3XHVkMDU5XHVkMDVhXHVkMDViXHVkMDVjXHVkMDVkXHVkMDVlXHVkMDVmXHVkMDYxXHVkMDYyXHVkMDYzXHVkMDY0XHVkMDY1XHVkMDY2'@; put 'XHVkMDY3XHVkMDY4XHVkMDY5XHVkMDZhXHVkMDZiXHVkMDZlXHVkMDZmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDcxXHVkMDcyXHVkMDczXHVkMDc1XHVkMDc2XHVkMDc3XHVkMDc4XHVkMDc5XHVkMDdhXHVkMDdiXHVkMDdlXHVkMDdmXHVkMDgwXHVkMDgyXHVk'@; put 'MDgzXHVkMDg0XHVkMDg1XHVkMDg2XHVkMDg3XHVkMDg4XHVkMDg5XHVkMDhhXHVkMDhiXHVkMDhjXHVkMDhkXHVkMDhlXHVkMDhmXHVkMDkwXHVkMDkxXHVkMDkyXHVkMDkzXHVkMDk0XHViMWRmXHViMWU4XHViMWU5XHViMWVjXHViMWYwXHViMWY5XHViMWZiXHViMWZkXHViMjA0XHViMjA1'@; put 'XHViMjA4XHViMjBiXHViMjBjXHViMjE0XHViMjE1XHViMjE3XHViMjE5XHViMjIwXHViMjM0XHViMjNjXHViMjU4XHViMjVjXHViMjYwXHViMjY4XHViMjY5XHViMjc0XHViMjc1XHViMjdjXHViMjg0XHViMjg1XHViMjg5XHViMjkwXHViMjkxXHViMjk0XHViMjk4XHViMjk5XHViMjlhXHVi'@; put 'MmEwXHViMmExXHViMmEzXHViMmE1XHViMmE2XHViMmFhXHViMmFjXHViMmIwXHViMmI0XHViMmM4XHViMmM5XHViMmNjXHViMmQwXHViMmQyXHViMmQ4XHViMmQ5XHViMmRiXHViMmRkXHViMmUyXHViMmU0XHViMmU1XHViMmU2XHViMmU4XHViMmViXHViMmVjXHViMmVkXHViMmVlXHViMmVm'@; put 'XHViMmYzXHViMmY0XHViMmY1XHViMmY3XHViMmY4XHViMmY5XHViMmZhXHViMmZiXHViMmZmXHViMzAwXHViMzAxXHViMzA0XHViMzA4XHViMzEwXHViMzExXHViMzEzXHViMzE0XHViMzE1XHViMzFjXHViMzU0XHViMzU1XHViMzU2XHViMzU4XHViMzViXHViMzVjXHViMzVlXHViMzVmXHVi'@; put 'MzY0XHViMzY1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgwXVtzXV09NDYwODArcyxoWzQ2MDgwK3NdPWNbMTgwXVtzXSk7Zm9yKGNbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDk1XHVkMDk2XHVkMDk3XHVkMDk4XHVkMDk5XHVkMDlhXHVkMDliXHVkMDljXHVkMDlkXHVkMDllXHVkMDlmXHVkMGEwXHVkMGExXHVkMGEyXHVkMGEzXHVkMGE2XHVkMGE3XHVkMGE5XHVkMGFhXHVkMGFiXHVkMGFkXHVk'@; put 'MGFlXHVkMGFmXHVkMGIwXHVkMGIxXHVkMGIyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMGIzXHVkMGI2XHVkMGI4XHVkMGJhXHVkMGJiXHVkMGJjXHVkMGJkXHVkMGJlXHVkMGJmXHVkMGMyXHVkMGMzXHVkMGM1XHVkMGM2XHVkMGM3XHVkMGNhXHVkMGNiXHVkMGNj'@; put 'XHVkMGNkXHVkMGNlXHVkMGNmXHVkMGQyXHVkMGQ2XHVkMGQ3XHVkMGQ4XHVkMGQ5XHVkMGRhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMGRiXHVkMGRlXHVkMGRmXHVkMGUxXHVkMGUyXHVkMGUzXHVkMGU1XHVkMGU2XHVkMGU3XHVkMGU4XHVkMGU5XHVkMGVhXHVk'@; put 'MGViXHVkMGVlXHVkMGYyXHVkMGYzXHVkMGY0XHVkMGY1XHVkMGY2XHVkMGY3XHVkMGY5XHVkMGZhXHVkMGZiXHVkMGZjXHVkMGZkXHVkMGZlXHVkMGZmXHVkMTAwXHVkMTAxXHVkMTAyXHVkMTAzXHVkMTA0XHViMzY3XHViMzY5XHViMzZiXHViMzZlXHViMzcwXHViMzcxXHViMzc0XHViMzc4'@; put 'XHViMzgwXHViMzgxXHViMzgzXHViMzg0XHViMzg1XHViMzhjXHViMzkwXHViMzk0XHViM2EwXHViM2ExXHViM2E4XHViM2FjXHViM2M0XHViM2M1XHViM2M4XHViM2NiXHViM2NjXHViM2NlXHViM2QwXHViM2Q0XHViM2Q1XHViM2Q3XHViM2Q5XHViM2RiXHViM2RkXHViM2UwXHViM2U0XHVi'@; put 'M2U4XHViM2ZjXHViNDEwXHViNDE4XHViNDFjXHViNDIwXHViNDI4XHViNDI5XHViNDJiXHViNDM0XHViNDUwXHViNDUxXHViNDU0XHViNDU4XHViNDYwXHViNDYxXHViNDYzXHViNDY1XHViNDZjXHViNDgwXHViNDg4XHViNDlkXHViNGE0XHViNGE4XHViNGFjXHViNGI1XHViNGI3XHViNGI5'@; put 'XHViNGMwXHViNGM0XHViNGM4XHViNGQwXHViNGQ1XHViNGRjXHViNGRkXHViNGUwXHViNGUzXHViNGU0XHViNGU2XHViNGVjXHViNGVkXHViNGVmXHViNGYxXHViNGY4XHViNTE0XHViNTE1XHViNTE4XHViNTFiXHViNTFjXHViNTI0XHViNTI1XHViNTI3XHViNTI4XHViNTI5XHViNTJhXHVi'@; put 'NTMwXHViNTMxXHViNTM0XHViNTM4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgxXVtzXV09NDYzMzYrcyxoWzQ2MzM2K3NdPWNbMTgxXVtzXSk7Zm9yKGNbMTgyXT0iXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTA1XHVkMTA2XHVkMTA3XHVkMTA4XHVkMTA5XHVkMTBhXHVkMTBiXHVkMTBjXHVkMTBlXHVkMTBmXHVkMTEwXHVkMTExXHVkMTEyXHVkMTEzXHVkMTE0XHVkMTE1XHVkMTE2XHVkMTE3XHVkMTE4XHVk'@; put 'MTE5XHVkMTFhXHVkMTFiXHVkMTFjXHVkMTFkXHVkMTFlXHVkMTFmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTIwXHVkMTIxXHVkMTIyXHVkMTIzXHVkMTI0XHVkMTI1XHVkMTI2XHVkMTI3XHVkMTI4XHVkMTI5XHVkMTJhXHVkMTJiXHVkMTJjXHVkMTJkXHVkMTJl'@; put 'XHVkMTJmXHVkMTMyXHVkMTMzXHVkMTM1XHVkMTM2XHVkMTM3XHVkMTM5XHVkMTNiXHVkMTNjXHVkMTNkXHVkMTNlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTNmXHVkMTQyXHVkMTQ2XHVkMTQ3XHVkMTQ4XHVkMTQ5XHVkMTRhXHVkMTRiXHVkMTRlXHVkMTRmXHVk'@; put 'MTUxXHVkMTUyXHVkMTUzXHVkMTU1XHVkMTU2XHVkMTU3XHVkMTU4XHVkMTU5XHVkMTVhXHVkMTViXHVkMTVlXHVkMTYwXHVkMTYyXHVkMTYzXHVkMTY0XHVkMTY1XHVkMTY2XHVkMTY3XHVkMTY5XHVkMTZhXHVkMTZiXHVkMTZkXHViNTQwXHViNTQxXHViNTQzXHViNTQ0XHViNTQ1XHViNTRi'@; put 'XHViNTRjXHViNTRkXHViNTUwXHViNTU0XHViNTVjXHViNTVkXHViNTVmXHViNTYwXHViNTYxXHViNWEwXHViNWExXHViNWE0XHViNWE4XHViNWFhXHViNWFiXHViNWIwXHViNWIxXHViNWIzXHViNWI0XHViNWI1XHViNWJiXHViNWJjXHViNWJkXHViNWMwXHViNWM0XHViNWNjXHViNWNkXHVi'@; put 'NWNmXHViNWQwXHViNWQxXHViNWQ4XHViNWVjXHViNjEwXHViNjExXHViNjE0XHViNjE4XHViNjI1XHViNjJjXHViNjM0XHViNjQ4XHViNjY0XHViNjY4XHViNjljXHViNjlkXHViNmEwXHViNmE0XHViNmFiXHViNmFjXHViNmIxXHViNmQ0XHViNmYwXHViNmY0XHViNmY4XHViNzAwXHViNzAx'@; put 'XHViNzA1XHViNzI4XHViNzI5XHViNzJjXHViNzJmXHViNzMwXHViNzM4XHViNzM5XHViNzNiXHViNzQ0XHViNzQ4XHViNzRjXHViNzU0XHViNzU1XHViNzYwXHViNzY0XHViNzY4XHViNzcwXHViNzcxXHViNzczXHViNzc1XHViNzdjXHViNzdkXHViNzgwXHViNzg0XHViNzhjXHViNzhkXHVi'@; put 'NzhmXHViNzkwXHViNzkxXHViNzkyXHViNzk2XHViNzk3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgyXVtzXV09NDY1OTIrcyxoWzQ2NTkyK3NdPWNbMTgyXVtzXSk7Zm9yKGNbMTgzXT0i'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTZlXHVkMTZmXHVkMTcwXHVkMTcxXHVkMTcyXHVkMTczXHVkMTc0XHVkMTc1XHVkMTc2XHVkMTc3XHVkMTc4XHVkMTc5XHVkMTdhXHVkMTdiXHVkMTdkXHVkMTdlXHVkMTdmXHVk'@; put 'MTgwXHVkMTgxXHVkMTgyXHVkMTgzXHVkMTg1XHVkMTg2XHVkMTg3XHVkMTg5XHVkMThhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMThiXHVkMThjXHVkMThkXHVkMThlXHVkMThmXHVkMTkwXHVkMTkxXHVkMTkyXHVkMTkzXHVkMTk0XHVkMTk1XHVkMTk2XHVkMTk3'@; put 'XHVkMTk4XHVkMTk5XHVkMTlhXHVkMTliXHVkMTljXHVkMTlkXHVkMTllXHVkMTlmXHVkMWEyXHVkMWEzXHVkMWE1XHVkMWE2XHVkMWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMWE5XHVkMWFhXHVkMWFiXHVkMWFjXHVkMWFkXHVkMWFlXHVkMWFmXHVkMWIyXHVk'@; put 'MWI0XHVkMWI2XHVkMWI3XHVkMWI4XHVkMWI5XHVkMWJiXHVkMWJkXHVkMWJlXHVkMWJmXHVkMWMxXHVkMWMyXHVkMWMzXHVkMWM0XHVkMWM1XHVkMWM2XHVkMWM3XHVkMWM4XHVkMWM5XHVkMWNhXHVkMWNiXHVkMWNjXHVkMWNkXHVkMWNlXHVkMWNmXHViNzk4XHViNzk5XHViNzljXHViN2Ew'@; put 'XHViN2E4XHViN2E5XHViN2FiXHViN2FjXHViN2FkXHViN2I0XHViN2I1XHViN2I4XHViN2M3XHViN2M5XHViN2VjXHViN2VkXHViN2YwXHViN2Y0XHViN2ZjXHViN2ZkXHViN2ZmXHViODAwXHViODAxXHViODA3XHViODA4XHViODA5XHViODBjXHViODEwXHViODE4XHViODE5XHViODFiXHVi'@; put 'ODFkXHViODI0XHViODI1XHViODI4XHViODJjXHViODM0XHViODM1XHViODM3XHViODM4XHViODM5XHViODQwXHViODQ0XHViODUxXHViODUzXHViODVjXHViODVkXHViODYwXHViODY0XHViODZjXHViODZkXHViODZmXHViODcxXHViODc4XHViODdjXHViODhkXHViOGE4XHViOGIwXHViOGI0'@; put 'XHViOGI4XHViOGMwXHViOGMxXHViOGMzXHViOGM1XHViOGNjXHViOGQwXHViOGQ0XHViOGRkXHViOGRmXHViOGUxXHViOGU4XHViOGU5XHViOGVjXHViOGYwXHViOGY4XHViOGY5XHViOGZiXHViOGZkXHViOTA0XHViOTE4XHViOTIwXHViOTNjXHViOTNkXHViOTQwXHViOTQ0XHViOTRjXHVi'@; put 'OTRmXHViOTUxXHViOTU4XHViOTU5XHViOTVjXHViOTYwXHViOTY4XHViOTY5XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgzXVtzXV09NDY4NDgrcyxoWzQ2ODQ4K3NdPWNbMTgzXVtzXSk7'@; put 'Zm9yKGNbMTg0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMWQwXHVkMWQxXHVkMWQyXHVkMWQzXHVkMWQ0XHVkMWQ1XHVkMWQ2XHVkMWQ3XHVkMWQ5XHVkMWRhXHVkMWRiXHVkMWRjXHVkMWRkXHVkMWRlXHVkMWRmXHVk'@; put 'MWUwXHVkMWUxXHVkMWUyXHVkMWUzXHVkMWU0XHVkMWU1XHVkMWU2XHVkMWU3XHVkMWU4XHVkMWU5XHVkMWVhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMWViXHVkMWVjXHVkMWVkXHVkMWVlXHVkMWVmXHVkMWYwXHVkMWYxXHVkMWYyXHVkMWYzXHVkMWY1XHVkMWY2'@; put 'XHVkMWY3XHVkMWY5XHVkMWZhXHVkMWZiXHVkMWZjXHVkMWZkXHVkMWZlXHVkMWZmXHVkMjAwXHVkMjAxXHVkMjAyXHVkMjAzXHVkMjA0XHVkMjA1XHVkMjA2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjA4XHVkMjBhXHVkMjBiXHVkMjBjXHVkMjBkXHVkMjBlXHVk'@; put 'MjBmXHVkMjExXHVkMjEyXHVkMjEzXHVkMjE0XHVkMjE1XHVkMjE2XHVkMjE3XHVkMjE4XHVkMjE5XHVkMjFhXHVkMjFiXHVkMjFjXHVkMjFkXHVkMjFlXHVkMjFmXHVkMjIwXHVkMjIxXHVkMjIyXHVkMjIzXHVkMjI0XHVkMjI1XHVkMjI2XHVkMjI3XHVkMjI4XHVkMjI5XHViOTZiXHViOTZk'@; put 'XHViOTc0XHViOTc1XHViOTc4XHViOTdjXHViOTg0XHViOTg1XHViOTg3XHViOTg5XHViOThhXHViOThkXHViOThlXHViOWFjXHViOWFkXHViOWIwXHViOWI0XHViOWJjXHViOWJkXHViOWJmXHViOWMxXHViOWM4XHViOWM5XHViOWNjXHViOWNlXHViOWNmXHViOWQwXHViOWQxXHViOWQyXHVi'@; put 'OWQ4XHViOWQ5XHViOWRiXHViOWRkXHViOWRlXHViOWUxXHViOWUzXHViOWU0XHViOWU1XHViOWU4XHViOWVjXHViOWY0XHViOWY1XHViOWY3XHViOWY4XHViOWY5XHViOWZhXHViYTAwXHViYTAxXHViYTA4XHViYTE1XHViYTM4XHViYTM5XHViYTNjXHViYTQwXHViYTQyXHViYTQ4XHViYTQ5'@; put 'XHViYTRiXHViYTRkXHViYTRlXHViYTUzXHViYTU0XHViYTU1XHViYTU4XHViYTVjXHViYTY0XHViYTY1XHViYTY3XHViYTY4XHViYTY5XHViYTcwXHViYTcxXHViYTc0XHViYTc4XHViYTgzXHViYTg0XHViYTg1XHViYTg3XHViYThjXHViYWE4XHViYWE5XHViYWFiXHViYWFjXHViYWIwXHVi'@; put 'YWIyXHViYWI4XHViYWI5XHViYWJiXHViYWJkXHViYWM0XHViYWM4XHViYWQ4XHViYWQ5XHViYWZjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg0XVtzXV09NDcxMDQrcyxoWzQ3MTA0K3Nd'@; put 'PWNbMTg0XVtzXSk7Zm9yKGNbMTg1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjJhXHVkMjJiXHVkMjJlXHVkMjJmXHVkMjMxXHVkMjMyXHVkMjMzXHVkMjM1XHVkMjM2XHVkMjM3XHVkMjM4XHVkMjM5XHVkMjNhXHVk'@; put 'MjNiXHVkMjNlXHVkMjQwXHVkMjQyXHVkMjQzXHVkMjQ0XHVkMjQ1XHVkMjQ2XHVkMjQ3XHVkMjQ5XHVkMjRhXHVkMjRiXHVkMjRjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjRkXHVkMjRlXHVkMjRmXHVkMjUwXHVkMjUxXHVkMjUyXHVkMjUzXHVkMjU0XHVkMjU1'@; put 'XHVkMjU2XHVkMjU3XHVkMjU4XHVkMjU5XHVkMjVhXHVkMjViXHVkMjVkXHVkMjVlXHVkMjVmXHVkMjYwXHVkMjYxXHVkMjYyXHVkMjYzXHVkMjY1XHVkMjY2XHVkMjY3XHVkMjY4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjY5XHVkMjZhXHVkMjZiXHVkMjZjXHVk'@; put 'MjZkXHVkMjZlXHVkMjZmXHVkMjcwXHVkMjcxXHVkMjcyXHVkMjczXHVkMjc0XHVkMjc1XHVkMjc2XHVkMjc3XHVkMjc4XHVkMjc5XHVkMjdhXHVkMjdiXHVkMjdjXHVkMjdkXHVkMjdlXHVkMjdmXHVkMjgyXHVkMjgzXHVkMjg1XHVkMjg2XHVkMjg3XHVkMjg5XHVkMjhhXHVkMjhiXHVkMjhj'@; put 'XHViYjAwXHViYjA0XHViYjBkXHViYjBmXHViYjExXHViYjE4XHViYjFjXHViYjIwXHViYjI5XHViYjJiXHViYjM0XHViYjM1XHViYjM2XHViYjM4XHViYjNiXHViYjNjXHViYjNkXHViYjNlXHViYjQ0XHViYjQ1XHViYjQ3XHViYjQ5XHViYjRkXHViYjRmXHViYjUwXHViYjU0XHViYjU4XHVi'@; put 'YjYxXHViYjYzXHViYjZjXHViYjg4XHViYjhjXHViYjkwXHViYmE0XHViYmE4XHViYmFjXHViYmI0XHViYmI3XHViYmMwXHViYmM0XHViYmM4XHViYmQwXHViYmQzXHViYmY4XHViYmY5XHViYmZjXHViYmZmXHViYzAwXHViYzAyXHViYzA4XHViYzA5XHViYzBiXHViYzBjXHViYzBkXHViYzBm'@; put 'XHViYzExXHViYzE0XHViYzE1XHViYzE2XHViYzE3XHViYzE4XHViYzFiXHViYzFjXHViYzFkXHViYzFlXHViYzFmXHViYzI0XHViYzI1XHViYzI3XHViYzI5XHViYzJkXHViYzMwXHViYzMxXHViYzM0XHViYzM4XHViYzQwXHViYzQxXHViYzQzXHViYzQ0XHViYzQ1XHViYzQ5XHViYzRjXHVi'@; put 'YzRkXHViYzUwXHViYzVkXHViYzg0XHViYzg1XHViYzg4XHViYzhiXHViYzhjXHViYzhlXHViYzk0XHViYzk1XHViYzk3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg1XVtzXV09NDczNjAr'@; put 'cyxoWzQ3MzYwK3NdPWNbMTg1XVtzXSk7Zm9yKGNbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjhkXHVkMjhlXHVkMjhmXHVkMjkyXHVkMjkzXHVkMjk0XHVkMjk2XHVkMjk3XHVkMjk4XHVkMjk5XHVkMjlhXHVk'@; put 'MjliXHVkMjlkXHVkMjllXHVkMjlmXHVkMmExXHVkMmEyXHVkMmEzXHVkMmE1XHVkMmE2XHVkMmE3XHVkMmE4XHVkMmE5XHVkMmFhXHVkMmFiXHVkMmFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmFlXHVkMmFmXHVkMmIwXHVkMmIyXHVkMmIzXHVkMmI0XHVkMmI1'@; put 'XHVkMmI2XHVkMmI3XHVkMmJhXHVkMmJiXHVkMmJkXHVkMmJlXHVkMmMxXHVkMmMzXHVkMmM0XHVkMmM1XHVkMmM2XHVkMmM3XHVkMmNhXHVkMmNjXHVkMmNkXHVkMmNlXHVkMmNmXHVkMmQwXHVkMmQxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmQyXHVkMmQzXHVk'@; put 'MmQ1XHVkMmQ2XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkXHVkMmRlXHVkMmRmXHVkMmUwXHVkMmUxXHVkMmUyXHVkMmUzXHVkMmU2XHVkMmU3XHVkMmU4XHVkMmU5XHVkMmVhXHVkMmViXHVkMmVjXHVkMmVkXHVkMmVlXHVkMmVmXHVkMmYyXHVkMmYzXHVkMmY1XHVkMmY2XHVkMmY3'@; put 'XHVkMmY5XHVkMmZhXHViYzk5XHViYzlhXHViY2EwXHViY2ExXHViY2E0XHViY2E3XHViY2E4XHViY2IwXHViY2IxXHViY2IzXHViY2I0XHViY2I1XHViY2JjXHViY2JkXHViY2MwXHViY2M0XHViY2NkXHViY2NmXHViY2QwXHViY2QxXHViY2Q1XHViY2Q4XHViY2RjXHViY2Y0XHViY2Y1XHVi'@; put 'Y2Y2XHViY2Y4XHViY2ZjXHViZDA0XHViZDA1XHViZDA3XHViZDA5XHViZDEwXHViZDE0XHViZDI0XHViZDJjXHViZDQwXHViZDQ4XHViZDQ5XHViZDRjXHViZDUwXHViZDU4XHViZDU5XHViZDY0XHViZDY4XHViZDgwXHViZDgxXHViZDg0XHViZDg3XHViZDg4XHViZDg5XHViZDhhXHViZDkw'@; put 'XHViZDkxXHViZDkzXHViZDk1XHViZDk5XHViZDlhXHViZDljXHViZGE0XHViZGIwXHViZGI4XHViZGQ0XHViZGQ1XHViZGQ4XHViZGRjXHViZGU5XHViZGYwXHViZGY0XHViZGY4XHViZTAwXHViZTAzXHViZTA1XHViZTBjXHViZTBkXHViZTEwXHViZTE0XHViZTFjXHViZTFkXHViZTFmXHVi'@; put 'ZTQ0XHViZTQ1XHViZTQ4XHViZTRjXHViZTRlXHViZTU0XHViZTU1XHViZTU3XHViZTU5XHViZTVhXHViZTViXHViZTYwXHViZTYxXHViZTY0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg2'@; put 'XVtzXV09NDc2MTYrcyxoWzQ3NjE2K3NdPWNbMTg2XVtzXSk7Zm9yKGNbMTg3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmZiXHVkMmZjXHVkMmZkXHVkMmZlXHVkMmZmXHVkMzAyXHVkMzA0XHVkMzA2XHVkMzA3XHVk'@; put 'MzA4XHVkMzA5XHVkMzBhXHVkMzBiXHVkMzBmXHVkMzExXHVkMzEyXHVkMzEzXHVkMzE1XHVkMzE3XHVkMzE4XHVkMzE5XHVkMzFhXHVkMzFiXHVkMzFlXHVkMzIyXHVkMzIzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMzI0XHVkMzI2XHVkMzI3XHVkMzJhXHVkMzJi'@; put 'XHVkMzJkXHVkMzJlXHVkMzJmXHVkMzMxXHVkMzMyXHVkMzMzXHVkMzM0XHVkMzM1XHVkMzM2XHVkMzM3XHVkMzNhXHVkMzNlXHVkMzNmXHVkMzQwXHVkMzQxXHVkMzQyXHVkMzQzXHVkMzQ2XHVkMzQ3XHVkMzQ4XHVkMzQ5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVk'@; put 'MzRhXHVkMzRiXHVkMzRjXHVkMzRkXHVkMzRlXHVkMzRmXHVkMzUwXHVkMzUxXHVkMzUyXHVkMzUzXHVkMzU0XHVkMzU1XHVkMzU2XHVkMzU3XHVkMzU4XHVkMzU5XHVkMzVhXHVkMzViXHVkMzVjXHVkMzVkXHVkMzVlXHVkMzVmXHVkMzYwXHVkMzYxXHVkMzYyXHVkMzYzXHVkMzY0XHVkMzY1'@; put 'XHVkMzY2XHVkMzY3XHVkMzY4XHVkMzY5XHViZTY4XHViZTZhXHViZTcwXHViZTcxXHViZTczXHViZTc0XHViZTc1XHViZTdiXHViZTdjXHViZTdkXHViZTgwXHViZTg0XHViZThjXHViZThkXHViZThmXHViZTkwXHViZTkxXHViZTk4XHViZTk5XHViZWE4XHViZWQwXHViZWQxXHViZWQ0XHVi'@; put 'ZWQ3XHViZWQ4XHViZWUwXHViZWUzXHViZWU0XHViZWU1XHViZWVjXHViZjAxXHViZjA4XHViZjA5XHViZjE4XHViZjE5XHViZjFiXHViZjFjXHViZjFkXHViZjQwXHViZjQxXHViZjQ0XHViZjQ4XHViZjUwXHViZjUxXHViZjU1XHViZjk0XHViZmIwXHViZmM1XHViZmNjXHViZmNkXHViZmQw'@; put 'XHViZmQ0XHViZmRjXHViZmRmXHViZmUxXHVjMDNjXHVjMDUxXHVjMDU4XHVjMDVjXHVjMDYwXHVjMDY4XHVjMDY5XHVjMDkwXHVjMDkxXHVjMDk0XHVjMDk4XHVjMGEwXHVjMGExXHVjMGEzXHVjMGE1XHVjMGFjXHVjMGFkXHVjMGFmXHVjMGIwXHVjMGIzXHVjMGI0XHVjMGI1XHVjMGI2XHVj'@; put 'MGJjXHVjMGJkXHVjMGJmXHVjMGMwXHVjMGMxXHVjMGM1XHVjMGM4XHVjMGM5XHVjMGNjXHVjMGQwXHVjMGQ4XHVjMGQ5XHVjMGRiXHVjMGRjXHVjMGRkXHVjMGU0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODddW3NdLmNoYXJDb2RlQXQo'@; put 'MCkmJih5W2NbMTg3XVtzXV09NDc4NzIrcyxoWzQ3ODcyK3NdPWNbMTg3XVtzXSk7Zm9yKGNbMTg4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMzZhXHVkMzZiXHVkMzZjXHVkMzZkXHVkMzZlXHVkMzZmXHVkMzcwXHVk'@; put 'MzcxXHVkMzcyXHVkMzczXHVkMzc0XHVkMzc1XHVkMzc2XHVkMzc3XHVkMzc4XHVkMzc5XHVkMzdhXHVkMzdiXHVkMzdlXHVkMzdmXHVkMzgxXHVkMzgyXHVkMzgzXHVkMzg1XHVkMzg2XHVkMzg3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMzg4XHVkMzg5XHVkMzhh'@; put 'XHVkMzhiXHVkMzhlXHVkMzkyXHVkMzkzXHVkMzk0XHVkMzk1XHVkMzk2XHVkMzk3XHVkMzlhXHVkMzliXHVkMzlkXHVkMzllXHVkMzlmXHVkM2ExXHVkM2EyXHVkM2EzXHVkM2E0XHVkM2E1XHVkM2E2XHVkM2E3XHVkM2FhXHVkM2FjXHVkM2FlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVkM2FmXHVkM2IwXHVkM2IxXHVkM2IyXHVkM2IzXHVkM2I1XHVkM2I2XHVkM2I3XHVkM2I5XHVkM2JhXHVkM2JiXHVkM2JkXHVkM2JlXHVkM2JmXHVkM2MwXHVkM2MxXHVkM2MyXHVkM2MzXHVkM2M2XHVkM2M3XHVkM2NhXHVkM2NiXHVkM2NjXHVkM2NkXHVkM2NlXHVkM2Nm'@; put 'XHVkM2QxXHVkM2QyXHVkM2QzXHVkM2Q0XHVkM2Q1XHVkM2Q2XHVjMGU1XHVjMGU4XHVjMGVjXHVjMGY0XHVjMGY1XHVjMGY3XHVjMGY5XHVjMTAwXHVjMTA0XHVjMTA4XHVjMTEwXHVjMTE1XHVjMTFjXHVjMTFkXHVjMTFlXHVjMTFmXHVjMTIwXHVjMTIzXHVjMTI0XHVjMTI2XHVjMTI3XHVj'@; put 'MTJjXHVjMTJkXHVjMTJmXHVjMTMwXHVjMTMxXHVjMTM2XHVjMTM4XHVjMTM5XHVjMTNjXHVjMTQwXHVjMTQ4XHVjMTQ5XHVjMTRiXHVjMTRjXHVjMTRkXHVjMTU0XHVjMTU1XHVjMTU4XHVjMTVjXHVjMTY0XHVjMTY1XHVjMTY3XHVjMTY4XHVjMTY5XHVjMTcwXHVjMTc0XHVjMTc4XHVjMTg1'@; put 'XHVjMThjXHVjMThkXHVjMThlXHVjMTkwXHVjMTk0XHVjMTk2XHVjMTljXHVjMTlkXHVjMTlmXHVjMWExXHVjMWE1XHVjMWE4XHVjMWE5XHVjMWFjXHVjMWIwXHVjMWJkXHVjMWM0XHVjMWM4XHVjMWNjXHVjMWQ0XHVjMWQ3XHVjMWQ4XHVjMWUwXHVjMWU0XHVjMWU4XHVjMWYwXHVjMWYxXHVj'@; put 'MWYzXHVjMWZjXHVjMWZkXHVjMjAwXHVjMjA0XHVjMjBjXHVjMjBkXHVjMjBmXHVjMjExXHVjMjE4XHVjMjE5XHVjMjFjXHVjMjFmXHVjMjIwXHVjMjI4XHVjMjI5XHVjMjJiXHVjMjJkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODhdW3Nd'@; put 'LmNoYXJDb2RlQXQoMCkmJih5W2NbMTg4XVtzXV09NDgxMjgrcyxoWzQ4MTI4K3NdPWNbMTg4XVtzXSk7Zm9yKGNbMTg5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Q3XHVkM2Q5XHVkM2RhXHVkM2RiXHVkM2RjXHVk'@; put 'M2RkXHVkM2RlXHVkM2RmXHVkM2UwXHVkM2UyXHVkM2U0XHVkM2U1XHVkM2U2XHVkM2U3XHVkM2U4XHVkM2U5XHVkM2VhXHVkM2ViXHVkM2VlXHVkM2VmXHVkM2YxXHVkM2YyXHVkM2YzXHVkM2Y1XHVkM2Y2XHVkM2Y3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Y4'@; put 'XHVkM2Y5XHVkM2ZhXHVkM2ZiXHVkM2ZlXHVkNDAwXHVkNDAyXHVkNDAzXHVkNDA0XHVkNDA1XHVkNDA2XHVkNDA3XHVkNDA5XHVkNDBhXHVkNDBiXHVkNDBjXHVkNDBkXHVkNDBlXHVkNDBmXHVkNDEwXHVkNDExXHVkNDEyXHVkNDEzXHVkNDE0XHVkNDE1XHVkNDE2XHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDE3XHVkNDE4XHVkNDE5XHVkNDFhXHVkNDFiXHVkNDFjXHVkNDFlXHVkNDFmXHVkNDIwXHVkNDIxXHVkNDIyXHVkNDIzXHVkNDI0XHVkNDI1XHVkNDI2XHVkNDI3XHVkNDI4XHVkNDI5XHVkNDJhXHVkNDJiXHVkNDJjXHVkNDJkXHVkNDJlXHVkNDJm'@; put 'XHVkNDMwXHVkNDMxXHVkNDMyXHVkNDMzXHVkNDM0XHVkNDM1XHVkNDM2XHVkNDM3XHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVjMjUwXHVjMjUxXHVjMjU0XHVjMjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdmXHVjMjgxXHVj'@; put 'Mjg4XHVjMjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3XHVjMmI5XHVjMmRjXHVjMmRkXHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVjMmY4XHVjMmY5'@; put 'XHVjMmZiXHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVjMzI1XHVjMzI4XHVjMzI5XHVjMzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdkXHVjMzg0XHVj'@; put 'Mzg4XHVjMzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1XHVjM2Y4XHVjNDA4XHVjNDEwXHVjNDI0XHVjNDJjXHVjNDMwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg5XS5sZW5ndGg7KytzKTY1NTMz'@; put 'IT09Y1sxODldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg5XVtzXV09NDgzODQrcyxoWzQ4Mzg0K3NdPWNbMTg5XVtzXSk7Zm9yKGNbMTkwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDM4XHVkNDM5XHVkNDNhXHVk'@; put 'NDNiXHVkNDNjXHVkNDNkXHVkNDNlXHVkNDNmXHVkNDQxXHVkNDQyXHVkNDQzXHVkNDQ1XHVkNDQ2XHVkNDQ3XHVkNDQ4XHVkNDQ5XHVkNDRhXHVkNDRiXHVkNDRjXHVkNDRkXHVkNDRlXHVkNDRmXHVkNDUwXHVkNDUxXHVkNDUyXHVkNDUzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVkNDU0XHVkNDU1XHVkNDU2XHVkNDU3XHVkNDU4XHVkNDU5XHVkNDVhXHVkNDViXHVkNDVkXHVkNDVlXHVkNDVmXHVkNDYxXHVkNDYyXHVkNDYzXHVkNDY1XHVkNDY2XHVkNDY3XHVkNDY4XHVkNDY5XHVkNDZhXHVkNDZiXHVkNDZjXHVkNDZlXHVkNDcwXHVkNDcxXHVkNDcyXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDczXHVkNDc0XHVkNDc1XHVkNDc2XHVkNDc3XHVkNDdhXHVkNDdiXHVkNDdkXHVkNDdlXHVkNDgxXHVkNDgzXHVkNDg0XHVkNDg1XHVkNDg2XHVkNDg3XHVkNDhhXHVkNDhjXHVkNDhlXHVkNDhmXHVkNDkwXHVkNDkxXHVkNDky'@; put 'XHVkNDkzXHVkNDk1XHVkNDk2XHVkNDk3XHVkNDk4XHVkNDk5XHVkNDlhXHVkNDliXHVkNDljXHVkNDlkXHVjNDM0XHVjNDNjXHVjNDNkXHVjNDQ4XHVjNDY0XHVjNDY1XHVjNDY4XHVjNDZjXHVjNDc0XHVjNDc1XHVjNDc5XHVjNDgwXHVjNDk0XHVjNDljXHVjNGI4XHVjNGJjXHVjNGU5XHVj'@; put 'NGYwXHVjNGYxXHVjNGY0XHVjNGY4XHVjNGZhXHVjNGZmXHVjNTAwXHVjNTAxXHVjNTBjXHVjNTEwXHVjNTE0XHVjNTFjXHVjNTI4XHVjNTI5XHVjNTJjXHVjNTMwXHVjNTM4XHVjNTM5XHVjNTNiXHVjNTNkXHVjNTQ0XHVjNTQ1XHVjNTQ4XHVjNTQ5XHVjNTRhXHVjNTRjXHVjNTRkXHVjNTRl'@; put 'XHVjNTUzXHVjNTU0XHVjNTU1XHVjNTU3XHVjNTU4XHVjNTU5XHVjNTVkXHVjNTVlXHVjNTYwXHVjNTYxXHVjNTY0XHVjNTY4XHVjNTcwXHVjNTcxXHVjNTczXHVjNTc0XHVjNTc1XHVjNTdjXHVjNTdkXHVjNTgwXHVjNTg0XHVjNTg3XHVjNThjXHVjNThkXHVjNThmXHVjNTkxXHVjNTk1XHVj'@; put 'NTk3XHVjNTk4XHVjNTljXHVjNWEwXHVjNWE5XHVjNWI0XHVjNWI1XHVjNWI4XHVjNWI5XHVjNWJiXHVjNWJjXHVjNWJkXHVjNWJlXHVjNWM0XHVjNWM1XHVjNWM2XHVjNWM3XHVjNWM4XHVjNWM5XHVjNWNhXHVjNWNjXHVjNWNlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTkwXS5sZW5n'@; put 'dGg7KytzKTY1NTMzIT09Y1sxOTBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTkwXVtzXV09NDg2NDArcyxoWzQ4NjQwK3NdPWNbMTkwXVtzXSk7Zm9yKGNbMTkxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDllXHVk'@; put 'NDlmXHVkNGEwXHVkNGExXHVkNGEyXHVkNGEzXHVkNGE0XHVkNGE1XHVkNGE2XHVkNGE3XHVkNGE4XHVkNGFhXHVkNGFiXHVkNGFjXHVkNGFkXHVkNGFlXHVkNGFmXHVkNGIwXHVkNGIxXHVkNGIyXHVkNGIzXHVkNGI0XHVkNGI1XHVkNGI2XHVkNGI3XHVkNGI4XHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVkNGI5XHVkNGJhXHVkNGJiXHVkNGJjXHVkNGJkXHVkNGJlXHVkNGJmXHVkNGMwXHVkNGMxXHVkNGMyXHVkNGMzXHVkNGM0XHVkNGM1XHVkNGM2XHVkNGM3XHVkNGM4XHVkNGM5XHVkNGNhXHVkNGNiXHVkNGNkXHVkNGNlXHVkNGNmXHVkNGQxXHVkNGQyXHVk'@; put 'NGQzXHVkNGQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNGQ2XHVkNGQ3XHVkNGQ4XHVkNGQ5XHVkNGRhXHVkNGRiXHVkNGRkXHVkNGRlXHVkNGUwXHVkNGUxXHVkNGUyXHVkNGUzXHVkNGU0XHVkNGU1XHVkNGU2XHVkNGU3XHVkNGU5XHVkNGVhXHVkNGViXHVkNGVk'@; put 'XHVkNGVlXHVkNGVmXHVkNGYxXHVkNGYyXHVkNGYzXHVkNGY0XHVkNGY1XHVkNGY2XHVkNGY3XHVkNGY5XHVkNGZhXHVkNGZjXHVjNWQwXHVjNWQxXHVjNWQ0XHVjNWQ4XHVjNWUwXHVjNWUxXHVjNWUzXHVjNWU1XHVjNWVjXHVjNWVkXHVjNWVlXHVjNWYwXHVjNWY0XHVjNWY2XHVjNWY3XHVj'@; put 'NWZjXHVjNWZkXHVjNWZlXHVjNWZmXHVjNjAwXHVjNjAxXHVjNjA1XHVjNjA2XHVjNjA3XHVjNjA4XHVjNjBjXHVjNjEwXHVjNjE4XHVjNjE5XHVjNjFiXHVjNjFjXHVjNjI0XHVjNjI1XHVjNjI4XHVjNjJjXHVjNjJkXHVjNjJlXHVjNjMwXHVjNjMzXHVjNjM0XHVjNjM1XHVjNjM3XHVjNjM5'@; put 'XHVjNjNiXHVjNjQwXHVjNjQxXHVjNjQ0XHVjNjQ4XHVjNjUwXHVjNjUxXHVjNjUzXHVjNjU0XHVjNjU1XHVjNjVjXHVjNjVkXHVjNjYwXHVjNjZjXHVjNjZmXHVjNjcxXHVjNjc4XHVjNjc5XHVjNjdjXHVjNjgwXHVjNjg4XHVjNjg5XHVjNjhiXHVjNjhkXHVjNjk0XHVjNjk1XHVjNjk4XHVj'@; put 'NjljXHVjNmE0XHVjNmE1XHVjNmE3XHVjNmE5XHVjNmIwXHVjNmIxXHVjNmI0XHVjNmI4XHVjNmI5XHVjNmJhXHVjNmMwXHVjNmMxXHVjNmMzXHVjNmM1XHVjNmNjXHVjNmNkXHVjNmQwXHVjNmQ0XHVjNmRjXHVjNmRkXHVjNmUwXHVjNmUxXHVjNmU4XHVmZmZkIi5zcGxpdCgiIikscz0wO3Mh'@; put 'PWNbMTkxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTkxXVtzXV09NDg4OTYrcyxoWzQ4ODk2K3NdPWNbMTkxXVtzXSk7Zm9yKGNbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVkNGZlXHVkNGZmXHVkNTAwXHVkNTAxXHVkNTAyXHVkNTAzXHVkNTA1XHVkNTA2XHVkNTA3XHVkNTA5XHVkNTBhXHVkNTBiXHVkNTBkXHVkNTBlXHVkNTBmXHVkNTEwXHVkNTExXHVkNTEyXHVkNTEzXHVkNTE2XHVkNTE4XHVkNTE5XHVkNTFhXHVkNTFiXHVkNTFjXHVkNTFkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTFlXHVkNTFmXHVkNTIwXHVkNTIxXHVkNTIyXHVkNTIzXHVkNTI0XHVkNTI1XHVkNTI2XHVkNTI3XHVkNTI4XHVkNTI5XHVkNTJhXHVkNTJiXHVkNTJjXHVkNTJkXHVkNTJlXHVkNTJmXHVkNTMwXHVkNTMxXHVkNTMyXHVkNTMzXHVk'@; put 'NTM0XHVkNTM1XHVkNTM2XHVkNTM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTM4XHVkNTM5XHVkNTNhXHVkNTNiXHVkNTNlXHVkNTNmXHVkNTQxXHVkNTQyXHVkNTQzXHVkNTQ1XHVkNTQ2XHVkNTQ3XHVkNTQ4XHVkNTQ5XHVkNTRhXHVkNTRiXHVkNTRlXHVkNTUw'@; put 'XHVkNTUyXHVkNTUzXHVkNTU0XHVkNTU1XHVkNTU2XHVkNTU3XHVkNTVhXHVkNTViXHVkNTVkXHVkNTVlXHVkNTVmXHVkNTYxXHVkNTYyXHVkNTYzXHVjNmU5XHVjNmVjXHVjNmYwXHVjNmY4XHVjNmY5XHVjNmZkXHVjNzA0XHVjNzA1XHVjNzA4XHVjNzBjXHVjNzE0XHVjNzE1XHVjNzE3XHVj'@; put 'NzE5XHVjNzIwXHVjNzIxXHVjNzI0XHVjNzI4XHVjNzMwXHVjNzMxXHVjNzMzXHVjNzM1XHVjNzM3XHVjNzNjXHVjNzNkXHVjNzQwXHVjNzQ0XHVjNzRhXHVjNzRjXHVjNzRkXHVjNzRmXHVjNzUxXHVjNzUyXHVjNzUzXHVjNzU0XHVjNzU1XHVjNzU2XHVjNzU3XHVjNzU4XHVjNzVjXHVjNzYw'@; put 'XHVjNzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVjNzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4XHVjNzg5XHVjNzhhXHVjNzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVjNzlhXHVjN2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVj'@; put 'N2E1XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVjN2NjXHVjN2NlXHVjN2QwXHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAxXHVjODA0XHVjODA4XHVjODBhXHVmZmZkIi5zcGxp'@; put 'dCgiIikscz0wO3MhPWNbMTkyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTkyXVtzXV09NDkxNTIrcyxoWzQ5MTUyK3NdPWNbMTkyXVtzXSk7Zm9yKGNbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVkNTY0XHVkNTY2XHVkNTY3XHVkNTZhXHVkNTZjXHVkNTZlXHVkNTZmXHVkNTcwXHVkNTcxXHVkNTcyXHVkNTczXHVkNTc2XHVkNTc3XHVkNTc5XHVkNTdhXHVkNTdiXHVkNTdkXHVkNTdlXHVkNTdmXHVkNTgwXHVkNTgxXHVkNTgyXHVkNTgzXHVkNTg2XHVkNThh'@; put 'XHVkNThiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNThjXHVkNThkXHVkNThlXHVkNThmXHVkNTkxXHVkNTkyXHVkNTkzXHVkNTk0XHVkNTk1XHVkNTk2XHVkNTk3XHVkNTk4XHVkNTk5XHVkNTlhXHVkNTliXHVkNTljXHVkNTlkXHVkNTllXHVkNTlmXHVkNWEwXHVk'@; put 'NWExXHVkNWEyXHVkNWEzXHVkNWE0XHVkNWE2XHVkNWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNWE4XHVkNWE5XHVkNWFhXHVkNWFiXHVkNWFjXHVkNWFkXHVkNWFlXHVkNWFmXHVkNWIwXHVkNWIxXHVkNWIyXHVkNWIzXHVkNWI0XHVkNWI1XHVkNWI2XHVkNWI3'@; put 'XHVkNWI4XHVkNWI5XHVkNWJhXHVkNWJiXHVkNWJjXHVkNWJkXHVkNWJlXHVkNWJmXHVkNWMwXHVkNWMxXHVkNWMyXHVkNWMzXHVkNWM0XHVkNWM1XHVkNWM2XHVkNWM3XHVjODEwXHVjODExXHVjODEzXHVjODE1XHVjODE2XHVjODFjXHVjODFkXHVjODIwXHVjODI0XHVjODJjXHVjODJkXHVj'@; put 'ODJmXHVjODMxXHVjODM4XHVjODNjXHVjODQwXHVjODQ4XHVjODQ5XHVjODRjXHVjODRkXHVjODU0XHVjODcwXHVjODcxXHVjODc0XHVjODc4XHVjODdhXHVjODgwXHVjODgxXHVjODgzXHVjODg1XHVjODg2XHVjODg3XHVjODhiXHVjODhjXHVjODhkXHVjODk0XHVjODlkXHVjODlmXHVjOGEx'@; put 'XHVjOGE4XHVjOGJjXHVjOGJkXHVjOGM0XHVjOGM4XHVjOGNjXHVjOGQ0XHVjOGQ1XHVjOGQ3XHVjOGQ5XHVjOGUwXHVjOGUxXHVjOGU0XHVjOGY1XHVjOGZjXHVjOGZkXHVjOTAwXHVjOTA0XHVjOTA1XHVjOTA2XHVjOTBjXHVjOTBkXHVjOTBmXHVjOTExXHVjOTE4XHVjOTJjXHVjOTM0XHVj'@; put 'OTUwXHVjOTUxXHVjOTU0XHVjOTU4XHVjOTYwXHVjOTYxXHVjOTYzXHVjOTZjXHVjOTcwXHVjOTc0XHVjOTdjXHVjOTg4XHVjOTg5XHVjOThjXHVjOTkwXHVjOTk4XHVjOTk5XHVjOTliXHVjOTlkXHVjOWMwXHVjOWMxXHVjOWM0XHVjOWM3XHVjOWM4XHVjOWNhXHVjOWQwXHVjOWQxXHVjOWQz'@; put 'XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTkzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTkzXVtzXV09NDk0MDgrcyxoWzQ5NDA4K3NdPWNbMTkzXVtzXSk7Zm9yKGNbMTk0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNWNhXHVkNWNiXHVkNWNkXHVkNWNlXHVkNWNmXHVkNWQxXHVkNWQzXHVkNWQ0XHVkNWQ1XHVkNWQ2XHVkNWQ3XHVkNWRhXHVkNWRjXHVkNWRlXHVkNWRmXHVkNWUwXHVkNWUxXHVkNWUyXHVkNWUzXHVkNWU2XHVkNWU3XHVkNWU5XHVkNWVh'@; put 'XHVkNWViXHVkNWVkXHVkNWVlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNWVmXHVkNWYwXHVkNWYxXHVkNWYyXHVkNWYzXHVkNWY2XHVkNWY4XHVkNWZhXHVkNWZiXHVkNWZjXHVkNWZkXHVkNWZlXHVkNWZmXHVkNjAyXHVkNjAzXHVkNjA1XHVkNjA2XHVkNjA3XHVk'@; put 'NjA5XHVkNjBhXHVkNjBiXHVkNjBjXHVkNjBkXHVkNjBlXHVkNjBmXHVkNjEyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjE2XHVkNjE3XHVkNjE4XHVkNjE5XHVkNjFhXHVkNjFiXHVkNjFkXHVkNjFlXHVkNjFmXHVkNjIxXHVkNjIyXHVkNjIzXHVkNjI1XHVkNjI2'@; put 'XHVkNjI3XHVkNjI4XHVkNjI5XHVkNjJhXHVkNjJiXHVkNjJjXHVkNjJlXHVkNjJmXHVkNjMwXHVkNjMxXHVkNjMyXHVkNjMzXHVkNjM0XHVkNjM1XHVkNjM2XHVkNjM3XHVkNjNhXHVkNjNiXHVjOWQ1XHVjOWQ2XHVjOWQ5XHVjOWRhXHVjOWRjXHVjOWRkXHVjOWUwXHVjOWUyXHVjOWU0XHVj'@; put 'OWU3XHVjOWVjXHVjOWVkXHVjOWVmXHVjOWYwXHVjOWYxXHVjOWY4XHVjOWY5XHVjOWZjXHVjYTAwXHVjYTA4XHVjYTA5XHVjYTBiXHVjYTBjXHVjYTBkXHVjYTE0XHVjYTE4XHVjYTI5XHVjYTRjXHVjYTRkXHVjYTUwXHVjYTU0XHVjYTVjXHVjYTVkXHVjYTVmXHVjYTYwXHVjYTYxXHVjYTY4'@; put 'XHVjYTdkXHVjYTg0XHVjYTk4XHVjYWJjXHVjYWJkXHVjYWMwXHVjYWM0XHVjYWNjXHVjYWNkXHVjYWNmXHVjYWQxXHVjYWQzXHVjYWQ4XHVjYWQ5XHVjYWUwXHVjYWVjXHVjYWY0XHVjYjA4XHVjYjEwXHVjYjE0XHVjYjE4XHVjYjIwXHVjYjIxXHVjYjQxXHVjYjQ4XHVjYjQ5XHVjYjRjXHVj'@; put 'YjUwXHVjYjU4XHVjYjU5XHVjYjVkXHVjYjY0XHVjYjc4XHVjYjc5XHVjYjljXHVjYmI4XHVjYmQ0XHVjYmU0XHVjYmU3XHVjYmU5XHVjYzBjXHVjYzBkXHVjYzEwXHVjYzE0XHVjYzFjXHVjYzFkXHVjYzIxXHVjYzIyXHVjYzI3XHVjYzI4XHVjYzI5XHVjYzJjXHVjYzJlXHVjYzMwXHVjYzM4'@; put 'XHVjYzM5XHVjYzNiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk0XVtzXV09NDk2NjQrcyxoWzQ5NjY0K3NdPWNbMTk0XVtzXSk7Zm9yKGNbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjNkXHVkNjNlXHVkNjNmXHVkNjQxXHVkNjQyXHVkNjQzXHVkNjQ0XHVkNjQ2XHVkNjQ3XHVkNjRhXHVkNjRjXHVkNjRlXHVkNjRmXHVkNjUwXHVkNjUyXHVkNjUzXHVkNjU2XHVkNjU3XHVkNjU5XHVkNjVhXHVkNjVi'@; put 'XHVkNjVkXHVkNjVlXHVkNjVmXHVkNjYwXHVkNjYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjYyXHVkNjYzXHVkNjY0XHVkNjY1XHVkNjY2XHVkNjY4XHVkNjZhXHVkNjZiXHVkNjZjXHVkNjZkXHVkNjZlXHVkNjZmXHVkNjcyXHVkNjczXHVkNjc1XHVkNjc2XHVk'@; put 'Njc3XHVkNjc4XHVkNjc5XHVkNjdhXHVkNjdiXHVkNjdjXHVkNjdkXHVkNjdlXHVkNjdmXHVkNjgwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjgxXHVkNjgyXHVkNjg0XHVkNjg2XHVkNjg3XHVkNjg4XHVkNjg5XHVkNjhhXHVkNjhiXHVkNjhlXHVkNjhmXHVkNjkx'@; put 'XHVkNjkyXHVkNjkzXHVkNjk1XHVkNjk2XHVkNjk3XHVkNjk4XHVkNjk5XHVkNjlhXHVkNjliXHVkNjljXHVkNjllXHVkNmEwXHVkNmEyXHVkNmEzXHVkNmE0XHVkNmE1XHVkNmE2XHVkNmE3XHVkNmE5XHVkNmFhXHVjYzNjXHVjYzNkXHVjYzNlXHVjYzQ0XHVjYzQ1XHVjYzQ4XHVjYzRjXHVj'@; put 'YzU0XHVjYzU1XHVjYzU3XHVjYzU4XHVjYzU5XHVjYzYwXHVjYzY0XHVjYzY2XHVjYzY4XHVjYzcwXHVjYzc1XHVjYzk4XHVjYzk5XHVjYzljXHVjY2EwXHVjY2E4XHVjY2E5XHVjY2FiXHVjY2FjXHVjY2FkXHVjY2I0XHVjY2I1XHVjY2I4XHVjY2JjXHVjY2M0XHVjY2M1XHVjY2M3XHVjY2M5'@; put 'XHVjY2QwXHVjY2Q0XHVjY2U0XHVjY2VjXHVjY2YwXHVjZDAxXHVjZDA4XHVjZDA5XHVjZDBjXHVjZDEwXHVjZDE4XHVjZDE5XHVjZDFiXHVjZDFkXHVjZDI0XHVjZDI4XHVjZDJjXHVjZDM5XHVjZDVjXHVjZDYwXHVjZDY0XHVjZDZjXHVjZDZkXHVjZDZmXHVjZDcxXHVjZDc4XHVjZDg4XHVj'@; put 'ZDk0XHVjZDk1XHVjZDk4XHVjZDljXHVjZGE0XHVjZGE1XHVjZGE3XHVjZGE5XHVjZGIwXHVjZGM0XHVjZGNjXHVjZGQwXHVjZGU4XHVjZGVjXHVjZGYwXHVjZGY4XHVjZGY5XHVjZGZiXHVjZGZkXHVjZTA0XHVjZTA4XHVjZTBjXHVjZTE0XHVjZTE5XHVjZTIwXHVjZTIxXHVjZTI0XHVjZTI4'@; put 'XHVjZTMwXHVjZTMxXHVjZTMzXHVjZTM1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk1XVtzXV09NDk5MjArcyxoWzQ5OTIwK3NdPWNbMTk1XVtzXSk7Zm9yKGNbMTk2XT0iXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNmFiXHVkNmFkXHVkNmFlXHVkNmFmXHVkNmIxXHVkNmIyXHVkNmIzXHVkNmI0XHVkNmI1XHVkNmI2XHVkNmI3XHVkNmI4XHVkNmJhXHVkNmJjXHVkNmJkXHVkNmJlXHVkNmJmXHVkNmMwXHVkNmMx'@; put 'XHVkNmMyXHVkNmMzXHVkNmM2XHVkNmM3XHVkNmM5XHVkNmNhXHVkNmNiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNmNkXHVkNmNlXHVkNmNmXHVkNmQwXHVkNmQyXHVkNmQzXHVkNmQ1XHVkNmQ2XHVkNmQ4XHVkNmRhXHVkNmRiXHVkNmRjXHVkNmRkXHVkNmRlXHVk'@; put 'NmRmXHVkNmUxXHVkNmUyXHVkNmUzXHVkNmU1XHVkNmU2XHVkNmU3XHVkNmU5XHVkNmVhXHVkNmViXHVkNmVjXHVkNmVkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNmVlXHVkNmVmXHVkNmYxXHVkNmYyXHVkNmYzXHVkNmY0XHVkNmY2XHVkNmY3XHVkNmY4XHVkNmY5'@; put 'XHVkNmZhXHVkNmZiXHVkNmZlXHVkNmZmXHVkNzAxXHVkNzAyXHVkNzAzXHVkNzA1XHVkNzA2XHVkNzA3XHVkNzA4XHVkNzA5XHVkNzBhXHVkNzBiXHVkNzBjXHVkNzBkXHVkNzBlXHVkNzBmXHVkNzEwXHVkNzEyXHVkNzEzXHVkNzE0XHVjZTU4XHVjZTU5XHVjZTVjXHVjZTVmXHVjZTYwXHVj'@; put 'ZTYxXHVjZTY4XHVjZTY5XHVjZTZiXHVjZTZkXHVjZTc0XHVjZTc1XHVjZTc4XHVjZTdjXHVjZTg0XHVjZTg1XHVjZTg3XHVjZTg5XHVjZTkwXHVjZTkxXHVjZTk0XHVjZTk4XHVjZWEwXHVjZWExXHVjZWEzXHVjZWE0XHVjZWE1XHVjZWFjXHVjZWFkXHVjZWMxXHVjZWU0XHVjZWU1XHVjZWU4'@; put 'XHVjZWViXHVjZWVjXHVjZWY0XHVjZWY1XHVjZWY3XHVjZWY4XHVjZWY5XHVjZjAwXHVjZjAxXHVjZjA0XHVjZjA4XHVjZjEwXHVjZjExXHVjZjEzXHVjZjE1XHVjZjFjXHVjZjIwXHVjZjI0XHVjZjJjXHVjZjJkXHVjZjJmXHVjZjMwXHVjZjMxXHVjZjM4XHVjZjU0XHVjZjU1XHVjZjU4XHVj'@; put 'ZjVjXHVjZjY0XHVjZjY1XHVjZjY3XHVjZjY5XHVjZjcwXHVjZjcxXHVjZjc0XHVjZjc4XHVjZjgwXHVjZjg1XHVjZjhjXHVjZmExXHVjZmE4XHVjZmIwXHVjZmM0XHVjZmUwXHVjZmUxXHVjZmU0XHVjZmU4XHVjZmYwXHVjZmYxXHVjZmYzXHVjZmY1XHVjZmZjXHVkMDAwXHVkMDA0XHVkMDEx'@; put 'XHVkMDE4XHVkMDJkXHVkMDM0XHVkMDM1XHVkMDM4XHVkMDNjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk2XVtzXV09NTAxNzYrcyxoWzUwMTc2K3NdPWNbMTk2XVtzXSk7Zm9yKGNbMTk3'@; put 'XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNzE1XHVkNzE2XHVkNzE3XHVkNzFhXHVkNzFiXHVkNzFkXHVkNzFlXHVkNzFmXHVkNzIxXHVkNzIyXHVkNzIzXHVkNzI0XHVkNzI1XHVkNzI2XHVkNzI3XHVkNzJhXHVkNzJj'@; put 'XHVkNzJlXHVkNzJmXHVkNzMwXHVkNzMxXHVkNzMyXHVkNzMzXHVkNzM2XHVkNzM3XHVkNzM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNzNhXHVkNzNiXHVkNzNkXHVkNzNlXHVkNzNmXHVkNzQwXHVkNzQxXHVkNzQyXHVkNzQzXHVkNzQ1XHVkNzQ2XHVkNzQ4XHVk'@; put 'NzRhXHVkNzRiXHVkNzRjXHVkNzRkXHVkNzRlXHVkNzRmXHVkNzUyXHVkNzUzXHVkNzU1XHVkNzVhXHVkNzViXHVkNzVjXHVkNzVkXHVkNzVlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNzVmXHVkNzYyXHVkNzY0XHVkNzY2XHVkNzY3XHVkNzY4XHVkNzZhXHVkNzZi'@; put 'XHVkNzZkXHVkNzZlXHVkNzZmXHVkNzcxXHVkNzcyXHVkNzczXHVkNzc1XHVkNzc2XHVkNzc3XHVkNzc4XHVkNzc5XHVkNzdhXHVkNzdiXHVkNzdlXHVkNzdmXHVkNzgwXHVkNzgyXHVkNzgzXHVkNzg0XHVkNzg1XHVkNzg2XHVkNzg3XHVkNzhhXHVkNzhiXHVkMDQ0XHVkMDQ1XHVkMDQ3XHVk'@; put 'MDQ5XHVkMDUwXHVkMDU0XHVkMDU4XHVkMDYwXHVkMDZjXHVkMDZkXHVkMDcwXHVkMDc0XHVkMDdjXHVkMDdkXHVkMDgxXHVkMGE0XHVkMGE1XHVkMGE4XHVkMGFjXHVkMGI0XHVkMGI1XHVkMGI3XHVkMGI5XHVkMGMwXHVkMGMxXHVkMGM0XHVkMGM4XHVkMGM5XHVkMGQwXHVkMGQxXHVkMGQz'@; put 'XHVkMGQ0XHVkMGQ1XHVkMGRjXHVkMGRkXHVkMGUwXHVkMGU0XHVkMGVjXHVkMGVkXHVkMGVmXHVkMGYwXHVkMGYxXHVkMGY4XHVkMTBkXHVkMTMwXHVkMTMxXHVkMTM0XHVkMTM4XHVkMTNhXHVkMTQwXHVkMTQxXHVkMTQzXHVkMTQ0XHVkMTQ1XHVkMTRjXHVkMTRkXHVkMTUwXHVkMTU0XHVk'@; put 'MTVjXHVkMTVkXHVkMTVmXHVkMTYxXHVkMTY4XHVkMTZjXHVkMTdjXHVkMTg0XHVkMTg4XHVkMWEwXHVkMWExXHVkMWE0XHVkMWE4XHVkMWIwXHVkMWIxXHVkMWIzXHVkMWI1XHVkMWJhXHVkMWJjXHVkMWMwXHVkMWQ4XHVkMWY0XHVkMWY4XHVkMjA3XHVkMjA5XHVkMjEwXHVkMjJjXHVkMjJk'@; put 'XHVkMjMwXHVkMjM0XHVkMjNjXHVkMjNkXHVkMjNmXHVkMjQxXHVkMjQ4XHVkMjVjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk3XVtzXV09NTA0MzIrcyxoWzUwNDMyK3NdPWNbMTk3XVtz'@; put 'XSk7Zm9yKGNbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNzhkXHVkNzhlXHVkNzhmXHVkNzkxXHVkNzkyXHVkNzkzXHVkNzk0XHVkNzk1XHVkNzk2XHVkNzk3XHVkNzlhXHVkNzljXHVkNzllXHVkNzlmXHVkN2Ew'@; put 'XHVkN2ExXHVkN2EyXHVkN2EzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjY0XHVk'@; put 'MjgwXHVkMjgxXHVkMjg0XHVkMjg4XHVkMjkwXHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVkMmI4XHVkMmI5XHVkMmJjXHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVkMmYx'@; put 'XHVkMmY0XHVkMmY4XHVkMzAwXHVkMzAxXHVkMzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2XHVkMzFjXHVkMzFkXHVkMzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNkXHVk'@; put 'MzQ0XHVkMzQ1XHVkMzdjXHVkMzdkXHVkMzgwXHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVkMzk5XHVkMzljXHVkM2EwXHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVkM2Q4'@; put 'XHVkM2UxXHVkM2UzXHVkM2VjXHVkM2VkXHVkM2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOThdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk4XVtzXV09NTA2ODgrcyxoWzUwNjg4'@; put 'K3NdPWNbMTk4XVtzXSk7Zm9yKGNbMTk5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVkNDA4XHVkNDFkXHVkNDQwXHVkNDQ0XHVkNDVjXHVkNDYwXHVkNDY0XHVkNDZkXHVkNDZmXHVkNDc4XHVkNDc5XHVkNDdjXHVkNDdmXHVkNDgwXHVkNDgyXHVkNDg4XHVkNDg5XHVkNDhiXHVkNDhkXHVkNDk0XHVkNGE5XHVkNGNjXHVkNGQwXHVkNGQ0XHVkNGRjXHVkNGRmXHVkNGU4'@; put 'XHVkNGVjXHVkNGYwXHVkNGY4XHVkNGZiXHVkNGZkXHVkNTA0XHVkNTA4XHVkNTBjXHVkNTE0XHVkNTE1XHVkNTE3XHVkNTNjXHVkNTNkXHVkNTQwXHVkNTQ0XHVkNTRjXHVkNTRkXHVkNTRmXHVkNTUxXHVkNTU4XHVkNTU5XHVkNTVjXHVkNTYwXHVkNTY1XHVkNTY4XHVkNTY5XHVkNTZiXHVk'@; put 'NTZkXHVkNTc0XHVkNTc1XHVkNTc4XHVkNTdjXHVkNTg0XHVkNTg1XHVkNTg3XHVkNTg4XHVkNTg5XHVkNTkwXHVkNWE1XHVkNWM4XHVkNWM5XHVkNWNjXHVkNWQwXHVkNWQyXHVkNWQ4XHVkNWQ5XHVkNWRiXHVkNWRkXHVkNWU0XHVkNWU1XHVkNWU4XHVkNWVjXHVkNWY0XHVkNWY1XHVkNWY3'@; put 'XHVkNWY5XHVkNjAwXHVkNjAxXHVkNjA0XHVkNjA4XHVkNjEwXHVkNjExXHVkNjEzXHVkNjE0XHVkNjE1XHVkNjFjXHVkNjIwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk5XVtzXV09NTA5'@; put 'NDQrcyxoWzUwOTQ0K3NdPWNbMTk5XVtzXSk7Zm9yKGNbMjAwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVkNjI0XHVkNjJkXHVkNjM4XHVkNjM5XHVkNjNjXHVkNjQwXHVkNjQ1XHVkNjQ4XHVkNjQ5XHVkNjRiXHVkNjRkXHVkNjUxXHVkNjU0XHVkNjU1XHVkNjU4XHVkNjVjXHVkNjY3XHVkNjY5XHVkNjcwXHVkNjcxXHVkNjc0XHVkNjgzXHVkNjg1XHVkNjhjXHVkNjhk'@; put 'XHVkNjkwXHVkNjk0XHVkNjlkXHVkNjlmXHVkNmExXHVkNmE4XHVkNmFjXHVkNmIwXHVkNmI5XHVkNmJiXHVkNmM0XHVkNmM1XHVkNmM4XHVkNmNjXHVkNmQxXHVkNmQ0XHVkNmQ3XHVkNmQ5XHVkNmUwXHVkNmU0XHVkNmU4XHVkNmYwXHVkNmY1XHVkNmZjXHVkNmZkXHVkNzAwXHVkNzA0XHVk'@; put 'NzExXHVkNzE4XHVkNzE5XHVkNzFjXHVkNzIwXHVkNzI4XHVkNzI5XHVkNzJiXHVkNzJkXHVkNzM0XHVkNzM1XHVkNzM4XHVkNzNjXHVkNzQ0XHVkNzQ3XHVkNzQ5XHVkNzUwXHVkNzUxXHVkNzU0XHVkNzU2XHVkNzU3XHVkNzU4XHVkNzU5XHVkNzYwXHVkNzYxXHVkNzYzXHVkNzY1XHVkNzY5'@; put 'XHVkNzZjXHVkNzcwXHVkNzc0XHVkNzdjXHVkNzdkXHVkNzgxXHVkNzg4XHVkNzg5XHVkNzhjXHVkNzkwXHVkNzk4XHVkNzk5XHVkNzliXHVkNzlkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjAwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2Nb'@; put 'MjAwXVtzXV09NTEyMDArcyxoWzUxMjAwK3NdPWNbMjAwXVtzXSk7Zm9yKGNbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjNkXHU0ZjczXHU1MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1XHU1NGU1XHU1NjA5XHU1YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4MmRiXHU4MzA0XHU4ODU3XHU4ODg4'@; put 'XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNiXHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2YmJjXHU3M2NmXHU4MTFhXHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5XHU2MWM3XHU2M2MwXHU2NzQ2XHU2'@; put 'N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4MjcxXHU4YWViXHU5NTkzXHU0ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1MmQ4XHU1NzRlXHU1ODJhXHU1ZDRj'@; put 'XHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFiXHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3ZDNhXHU5MGFmXHU5NDUxXHU5NDUyXHU5Zjk1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjAyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDJdW3NdLmNoYXJDb2Rl'@; put 'QXQoMCkmJih5W2NbMjAyXVtzXV09NTE3MTIrcyxoWzUxNzEyK3NdPWNbMjAyXVtzXSk7Zm9yKGNbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzIzXHU1Y2FjXHU3NTMyXHU4MGRiXHU5MjQwXHU5NTk4XHU1MjViXHU1ODA4XHU1OWRjXHU1Y2ExXHU1ZDE3XHU1ZWI3XHU1ZjNhXHU1ZjRhXHU2MTc3XHU2YzVmXHU3NTdhXHU3NTg2XHU3Y2UwXHU3ZDczXHU3ZGIx'@; put 'XHU3ZjhjXHU4MTU0XHU4MjIxXHU4NTkxXHU4OTQxXHU4YjFiXHU5MmZjXHU5NjRkXHU5YzQ3XHU0ZWNiXHU0ZWY3XHU1MDBiXHU1MWYxXHU1ODRmXHU2MTM3XHU2MTNlXHU2MTY4XHU2NTM5XHU2OWVhXHU2ZjExXHU3NWE1XHU3Njg2XHU3NmQ2XHU3Yjg3XHU4MmE1XHU4NGNiXHVmOTAwXHU5'@; put 'M2E3XHU5NThiXHU1NTgwXHU1YmEyXHU1NzUxXHVmOTAxXHU3Y2IzXHU3ZmI5XHU5MWI1XHU1MDI4XHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MzZlXHU2NGRhXHU2NGU3XHU2ZTIwXHU3MGFjXHU3OTViXHU4ZGRkXHU4ZTFlXHVmOTAyXHU5MDdkXHU5MjQ1XHU5MmY4XHU0ZTdlXHU0ZWY2'@; put 'XHU1MDY1XHU1ZGZlXHU1ZWZhXHU2MTA2XHU2OTU3XHU4MTcxXHU4NjU0XHU4ZTQ3XHU5Mzc1XHU5YTJiXHU0ZTVlXHU1MDkxXHU2NzcwXHU2ODQwXHU1MTA5XHU1MjhkXHU1MjkyXHU2YWEyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjAzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDNd'@; put 'W3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjAzXVtzXV09NTE5NjgrcyxoWzUxOTY4K3NdPWNbMjAzXVtzXSk7Zm9yKGNbMjA0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2JjXHU5MjEwXHU5ZWQ0XHU1MmFiXHU2MDJmXHU4ZmYyXHU1MDQ4XHU2MWE5XHU2M2VkXHU2NGNhXHU2ODNjXHU2YTg0XHU2ZmMwXHU4MTg4XHU4OWExXHU5Njk0XHU1ODA1XHU3MjdkXHU3MmFj'@; put 'XHU3NTA0XHU3ZDc5XHU3ZTZkXHU4MGE5XHU4OThiXHU4Yjc0XHU5MDYzXHU5ZDUxXHU2Mjg5XHU2YzdhXHU2ZjU0XHU3ZDUwXHU3ZjNhXHU4YTIzXHU1MTdjXHU2MTRhXHU3YjlkXHU4YjE5XHU5MjU3XHU5MzhjXHU0ZWFjXHU0ZmQzXHU1MDFlXHU1MGJlXHU1MTA2XHU1MmMxXHU1MmNkXHU1'@; put 'MzdmXHU1NzcwXHU1ODgzXHU1ZTlhXHU1ZjkxXHU2MTc2XHU2MWFjXHU2NGNlXHU2NTZjXHU2NjZmXHU2NmJiXHU2NmY0XHU2ODk3XHU2ZDg3XHU3MDg1XHU3MGYxXHU3NDlmXHU3NGE1XHU3NGNhXHU3NWQ5XHU3ODZjXHU3OGVjXHU3YWRmXHU3YWY2XHU3ZDQ1XHU3ZDkzXHU4MDE1XHU4MDNm'@; put 'XHU4MTFiXHU4Mzk2XHU4YjY2XHU4ZjE1XHU5MDE1XHU5M2UxXHU5ODAzXHU5ODM4XHU5YTVhXHU5YmU4XHU0ZmMyXHU1NTUzXHU1ODNhXHU1OTUxXHU1YjYzXHU1YzQ2XHU2MGI4XHU2MjEyXHU2ODQyXHU2OGIwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA0XS5sZW5ndGg7KytzKTY1'@; put 'NTMzIT09Y1syMDRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA0XVtzXV09NTIyMjQrcyxoWzUyMjI0K3NdPWNbMjA0XVtzXSk7Zm9yKGNbMjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OGU4XHU2ZWFhXHU3NTRjXHU3Njc4XHU3OGNlXHU3YTNkXHU3Y2ZiXHU3ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1M2U5XHU1NDRh'@; put 'XHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEwXHU2N2FmXHU2OWMxXHU2Y2JkXHU3NWZjXHU3NjkwXHU3NzdlXHU3YTNmXHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMxXHU4ODMxXHU4'@; put 'OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2NmYyXHU2ODhmXHU3YTQwXHU4YzM3XHU5ZDYwXHU1NmYwXHU1NzY0XHU1ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2YzY4XHVmOTA0'@; put 'XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3XHU2NTNiXHU3M2Q5XHU3YTdhXHU4NmEzXHU4Y2EyXHU5NzhmXHU0ZTMyXHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA1XS5s'@; put 'ZW5ndGg7KytzKTY1NTMzIT09Y1syMDVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA1XVtzXV09NTI0ODArcyxoWzUyNDgwK3NdPWNbMjA1XVtzXSk7Zm9yKGNbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OWQxXHU4M2QzXHU4YTg3XHU4YWIyXHU4ZGU4XHU5MDRlXHU5MzRiXHU5ODQ2XHU1ZWQzXHU2OWU4XHU4NWZmXHU5MGVkXHVmOTA1XHU1MWEwXHU1Yjk4'@; put 'XHU1YmVjXHU2MTYzXHU2OGZhXHU2YjNlXHU3MDRjXHU3NDJmXHU3NGQ4XHU3YmExXHU3ZjUwXHU4M2M1XHU4OWMwXHU4Y2FiXHU5NWRjXHU5OTI4XHU1MjJlXHU2MDVkXHU2MmVjXHU5MDAyXHU0ZjhhXHU1MTQ5XHU1MzIxXHU1OGQ5XHU1ZWUzXHU2NmUwXHU2ZDM4XHU3MDlhXHU3MmMyXHU3'@; put 'M2Q2XHU3YjUwXHU4MGYxXHU5NDViXHU1MzY2XHU2MzliXHU3ZjZiXHU0ZTU2XHU1MDgwXHU1ODRhXHU1OGRlXHU2MDJhXHU2MTI3XHU2MmQwXHU2OWQwXHU5YjQxXHU1YjhmXHU3ZDE4XHU4MGIxXHU4ZjVmXHU0ZWE0XHU1MGQxXHU1NGFjXHU1NWFjXHU1YjBjXHU1ZGEwXHU1ZGU3XHU2NTJh'@; put 'XHU2NTRlXHU2ODIxXHU2YTRiXHU3MmUxXHU3NjhlXHU3N2VmXHU3ZDVlXHU3ZmY5XHU4MWEwXHU4NTRlXHU4NmRmXHU4ZjAzXHU4ZjRlXHU5MGNhXHU5OTAzXHU5YTU1XHU5YmFiXHU0ZTE4XHU0ZTQ1XHU0ZTVkXHU0ZWM3XHU0ZmYxXHU1MTc3XHU1MmZlXHVmZmZkIi5zcGxpdCgiIikscz0w'@; put 'O3MhPWNbMjA2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA2XVtzXV09NTI3MzYrcyxoWzUyNzM2K3NdPWNbMjA2XVtzXSk7Zm9yKGNbMjA3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzQwXHU1M2UzXHU1M2U1XHU1NDhlXHU1NjE0XHU1Nzc1XHU1N2EyXHU1YmM3XHU1ZDg3XHU1ZWQwXHU2MWZjXHU2MmQ4XHU2NTUx'@; put 'XHU2N2I4XHU2N2U5XHU2OWNiXHU2YjUwXHU2YmM2XHU2YmVjXHU2YzQyXHU2ZTlkXHU3MDc4XHU3MmQ3XHU3Mzk2XHU3NDAzXHU3N2JmXHU3N2U5XHU3YTc2XHU3ZDdmXHU4MDA5XHU4MWZjXHU4MjA1XHU4MjBhXHU4MmRmXHU4ODYyXHU4YjMzXHU4Y2ZjXHU4ZWMwXHU5MDExXHU5MGIxXHU5'@; put 'MjY0XHU5MmI2XHU5OWQyXHU5YTQ1XHU5Y2U5XHU5ZGQ3XHU5ZjljXHU1NzBiXHU1YzQwXHU4M2NhXHU5N2EwXHU5N2FiXHU5ZWI0XHU1NDFiXHU3YTk4XHU3ZmE0XHU4OGQ5XHU4ZWNkXHU5MGUxXHU1ODAwXHU1YzQ4XHU2Mzk4XHU3YTlmXHU1YmFlXHU1ZjEzXHU3YTc5XHU3YWFlXHU4Mjhl'@; put 'XHU4ZWFjXHU1MDI2XHU1MjM4XHU1MmY4XHU1Mzc3XHU1NzA4XHU2MmYzXHU2MzcyXHU2YjBhXHU2ZGMzXHU3NzM3XHU1M2E1XHU3MzU3XHU4NTY4XHU4ZTc2XHU5NWQ1XHU2NzNhXHU2YWMzXHU2ZjcwXHU4YTZkXHU4ZWNjXHU5OTRiXHVmOTA2XHU2Njc3XHU2Yjc4XHU4Y2I0XHVmZmZkIi5z'@; put 'cGxpdCgiIikscz0wO3MhPWNbMjA3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA3XVtzXV09NTI5OTIrcyxoWzUyOTkyK3NdPWNbMjA3XVtzXSk7Zm9yKGNbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJkXHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1XHU3YWJhXHU3YWM1'@; put 'XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYwXHU4M2NjXHU5MjFlXHVmOTA4XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2NWE0XHU2ODM5XHU2'@; put 'OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0ZWNhXHU1OTk3XHU2NGQyXHU2NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdmXHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2NhXHU2MDI1XHU2Mjcx'@; put 'XHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2XHU1MTgwXHU1NWRjXHU1NjY4XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2MjgwXHU2NWQ3XHU2'@; put 'NWUzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA4XVtzXV09NTMyNDgrcyxoWzUzMjQ4K3NdPWNbMjA4XVtzXSk7Zm9yKGNbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzFlXHU2NzFmXHU2NzVlXHU2OGNiXHU2OGM0XHU2YTVmXHU2YjNhXHU2YzIzXHU2Yzdk'@; put 'XHU2YzgyXHU2ZGM3XHU3Mzk4XHU3NDI2XHU3NDJhXHU3NDgyXHU3NGEzXHU3NTc4XHU3NTdmXHU3ODgxXHU3OGVmXHU3OTQxXHU3OTQ3XHU3OTQ4XHU3OTdhXHU3Yjk1XHU3ZDAwXHU3ZGJhXHU3Zjg4XHU4MDA2XHU4MDJkXHU4MDhjXHU4YTE4XHU4YjRmXHU4YzQ4XHU4ZDc3XHU5MzIxXHU5'@; put 'MzI0XHU5OGUyXHU5OTUxXHU5YTBlXHU5YTBmXHU5YTY1XHU5ZTkyXHU3ZGNhXHU0Zjc2XHU1NDA5XHU2MmVlXHU2ODU0XHU5MWQxXHU1NWFiXHU1MTNhXHVmOTBiXHVmOTBjXHU1YTFjXHU2MWU2XHVmOTBkXHU2MmNmXHU2MmZmXHVmOTBlXHVmOTBmXHVmOTEwXHVmOTExXHVmOTEyXHVmOTEz'@; put 'XHU5MGEzXHVmOTE0XHVmOTE1XHVmOTE2XHVmOTE3XHVmOTE4XHU4YWZlXHVmOTE5XHVmOTFhXHVmOTFiXHVmOTFjXHU2Njk2XHVmOTFkXHU3MTU2XHVmOTFlXHVmOTFmXHU5NmUzXHVmOTIwXHU2MzRmXHU2MzdhXHU1MzU3XHVmOTIxXHU2NzhmXHU2OTYwXHU2ZTczXHVmOTIyXHU3NTM3XHVm'@; put 'OTIzXHVmOTI0XHVmOTI1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA5XVtzXV09NTM1MDQrcyxoWzUzNTA0K3NdPWNbMjA5XVtzXSk7Zm9yKGNbMjEwXT0iXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZDBkXHVmOTI2XHVmOTI3XHU4ODcyXHU1NmNhXHU1YTE4XHVmOTI4'@; put 'XHVmOTI5XHVmOTJhXHVmOTJiXHVmOTJjXHU0ZTQzXHVmOTJkXHU1MTY3XHU1OTQ4XHU2N2YwXHU4MDEwXHVmOTJlXHU1OTczXHU1ZTc0XHU2NDlhXHU3OWNhXHU1ZmY1XHU2MDZjXHU2MmM4XHU2MzdiXHU1YmU3XHU1YmQ3XHU1MmFhXHVmOTJmXHU1OTc0XHU1ZjI5XHU2MDEyXHVmOTMwXHVm'@; put 'OTMxXHVmOTMyXHU3NDU5XHVmOTMzXHVmOTM0XHVmOTM1XHVmOTM2XHVmOTM3XHVmOTM4XHU5OWQxXHVmOTM5XHVmOTNhXHVmOTNiXHVmOTNjXHVmOTNkXHVmOTNlXHVmOTNmXHVmOTQwXHVmOTQxXHVmOTQyXHVmOTQzXHU2ZmMzXHVmOTQ0XHVmOTQ1XHU4MWJmXHU4ZmIyXHU2MGYxXHVmOTQ2'@; put 'XHVmOTQ3XHU4MTY2XHVmOTQ4XHVmOTQ5XHU1YzNmXHVmOTRhXHVmOTRiXHVmOTRjXHVmOTRkXHVmOTRlXHVmOTRmXHVmOTUwXHVmOTUxXHU1YWU5XHU4YTI1XHU2NzdiXHU3ZDEwXHVmOTUyXHVmOTUzXHVmOTU0XHVmOTU1XHVmOTU2XHVmOTU3XHU4MGZkXHVmOTU4XHVmOTU5XHU1YzNjXHU2'@; put 'Y2U1XHU1MzNmXHU2ZWJhXHU1OTFhXHU4MzM2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjEwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjEwXVtzXV09NTM3NjArcyxoWzUzNzYwK3NdPWNbMjEwXVtzXSk7Zm9yKGNbMjExXT0iXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTM5XHU0ZWI2XHU0ZjQ2XHU1NWFlXHU1NzE4'@; put 'XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3YzFlXHU3ZGRlXHU4NmNiXHU4ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3XHU2ZGUxXHU2ZTViXHU2'@; put 'ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFmXHU2YzkzXHU3NTUzXHU3YjU0XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5ZWU4XHU0ZWUzXHU1Nzg4'@; put 'XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4MWZhXHU4ODhiXHU4Y2I4XHU5NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMwXHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYwXHU1Y2Y2XHU1ZDhiXHU1'@; put 'ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjExXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjExXVtzXV09NTQwMTYrcyxoWzU0MDE2K3NdPWNbMjExXVtzXSk7Zm9yKGNb'@; put 'MjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OGY5XHU2YWMyXHU2ZGQ4'@; put 'XHU2ZTIxXHU2ZWQ0XHU2ZmU0XHU3MWZlXHU3NmRjXHU3Nzc5XHU3OWIxXHU3YTNiXHU4NDA0XHU4OWE5XHU4Y2VkXHU4ZGYzXHU4ZTQ4XHU5MDAzXHU5MDE0XHU5MDUzXHU5MGZkXHU5MzRkXHU5Njc2XHU5N2RjXHU2YmQyXHU3MDA2XHU3MjU4XHU3MmEyXHU3MzY4XHU3NzYzXHU3OWJmXHU3'@; put 'YmU0XHU3ZTliXHU4YjgwXHU1OGE5XHU2MGM3XHU2NTY2XHU2NWZkXHU2NmJlXHU2YzhjXHU3MTFlXHU3MWM5XHU4YzVhXHU5ODEzXHU0ZTZkXHU3YTgxXHU0ZWRkXHU1MWFjXHU1MWNkXHU1MmQ1XHU1NDBjXHU2MWE3XHU2NzcxXHU2ODUwXHU2OGRmXHU2ZDFlXHU2ZjdjXHU3NWJjXHU3N2Iz'@; put 'XHU3YWU1XHU4MGY0XHU4NDYzXHU5Mjg1XHU1MTVjXHU2NTk3XHU2NzVjXHU2NzkzXHU3NWQ4XHU3YWM3XHU4MzczXHVmOTVhXHU4YzQ2XHU5MDE3XHU5ODJkXHU1YzZmXHU4MWMwXHU4MjlhXHU5MDQxXHU5MDZmXHU5MjBkXHU1Zjk3XHU1ZDlkXHU2YTU5XHU3MWM4XHU3NjdiXHU3YjQ5XHU4'@; put 'NWU0XHU4YjA0XHU5MTI3XHU5YTMwXHU1NTg3XHU2MWY2XHVmOTViXHU3NjY5XHU3Zjg1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjEyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjEyXVtzXV09NTQyNzIrcyxoWzU0MjcyK3NdPWNbMjEy'@; put 'XVtzXSk7Zm9yKGNbMjEzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NjNm'@; put 'XHU4N2JhXHU4OGY4XHU5MDhmXHVmOTVjXHU2ZDFiXHU3MGQ5XHU3M2RlXHU3ZDYxXHU4NDNkXHVmOTVkXHU5MTZhXHU5OWYxXHVmOTVlXHU0ZTgyXHU1Mzc1XHU2YjA0XHU2YjEyXHU3MDNlXHU3MjFiXHU4NjJkXHU5ZTFlXHU1MjRjXHU4ZmEzXHU1ZDUwXHU2NGU1XHU2NTJjXHU2YjE2XHU2'@; put 'ZmViXHU3YzQzXHU3ZTljXHU4NWNkXHU4OTY0XHU4OWJkXHU2MmM5XHU4MWQ4XHU4ODFmXHU1ZWNhXHU2NzE3XHU2ZDZhXHU3MmZjXHU3NDA1XHU3NDZmXHU4NzgyXHU5MGRlXHU0Zjg2XHU1ZDBkXHU1ZmEwXHU4NDBhXHU1MWI3XHU2M2EwXHU3NTY1XHU0ZWFlXHU1MDA2XHU1MTY5XHU1MWM5'@; put 'XHU2ODgxXHU2YTExXHU3Y2FlXHU3Y2IxXHU3Y2U3XHU4MjZmXHU4YWQyXHU4ZjFiXHU5MWNmXHU0ZmI2XHU1MTM3XHU1MmY1XHU1NDQyXHU1ZWVjXHU2MTZlXHU2MjNlXHU2NWM1XHU2YWRhXHU2ZmZlXHU3OTJhXHU4NWRjXHU4ODIzXHU5NWFkXHU5YTYyXHU5YTZhXHU5ZTk3XHU5ZWNlXHU1'@; put 'MjliXHU2NmM2XHU2Yjc3XHU3MDFkXHU3OTJiXHU4ZjYyXHU5NzQyXHU2MTkwXHU2MjAwXHU2NTIzXHU2ZjIzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjEzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjEzXVtzXV09NTQ1MjgrcyxoWzU0'@; put 'NTI4K3NdPWNbMjEzXVtzXSk7Zm9yKGNbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHU3MTQ5XHU3NDg5XHU3ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1MWJkXHU1MjE3XHU1MmEzXHU2ZDBjXHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVmOTVmXHU1Y2JhXHU1ZGJhXHU2'@; put 'MDFjXHU3M2IyXHU3YjJkXHU3ZjlhXHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4XHU5ODE4XHU5ZjYxXHU0ZjhiXHU2ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEwXHU3NmU3XHU4MDAxXHU4NjA2'@; put 'XHU4NjVjXHU4ZGVmXHU4ZjA1XHU5NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3ZGEwXHU4M2M5XHU5MzA0XHU5ZTdmXHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3MjYyXHU3OGNhXHU4Y2MyXHU4'@; put 'Y2RhXHU4Y2Y0XHU5NmY3XHU0ZTg2XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQyXHU3N2FkXHU4MDRhXHU4NGZjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE0XVtzXV09'@; put 'NTQ3ODQrcyxoWzU0Nzg0K3NdPWNbMjE0XVtzXSk7Zm9yKGNbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHU5MDdjXHU5YjI3XHU5ZjhkXHU1OGQ4XHU1YTQxXHU1YzYyXHU2YTEzXHU2ZGRhXHU2ZjBmXHU3NjNiXHU3ZDJmXHU3ZTM3XHU4NTFlXHU4OTM4XHU5M2U0XHU5NjRiXHU1Mjg5XHU2NWQyXHU2N2YzXHU2OWI0XHU2ZDQxXHU2ZTljXHU3MDBmXHU3NDA5XHU3'@; put 'NDYwXHU3NTU5XHU3NjI0XHU3ODZiXHU4YjJjXHU5ODVlXHU1MTZkXHU2MjJlXHU5Njc4XHU0Zjk2XHU1MDJiXHU1ZDE5XHU2ZGVhXHU3ZGI4XHU4ZjJhXHU1ZjhiXHU2MTQ0XHU2ODE3XHVmOTYxXHU5Njg2XHU1MmQyXHU4MDhiXHU1MWRjXHU1MWNjXHU2OTVlXHU3YTFjXHU3ZGJlXHU4M2Yx'@; put 'XHU5Njc1XHU0ZmRhXHU1MjI5XHU1Mzk4XHU1NDBmXHU1NTBlXHU1YzY1XHU2MGE3XHU2NzRlXHU2OGE4XHU2ZDZjXHU3MjgxXHU3MmY4XHU3NDA2XHU3NDgzXHVmOTYyXHU3NWUyXHU3YzZjXHU3Zjc5XHU3ZmI4XHU4Mzg5XHU4OGNmXHU4OGUxXHU5MWNjXHU5MWQwXHU5NmUyXHU5YmM5XHU1'@; put 'NDFkXHU2ZjdlXHU3MWQwXHU3NDk4XHU4NWZhXHU4ZWFhXHU5NmEzXHU5YzU3XHU5ZTlmXHU2Nzk3XHU2ZGNiXHU3NDMzXHU4MWU4XHU5NzE2XHU3ODJjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTVdW3NdLmNoYXJDb2RlQXQoMCkmJih5'@; put 'W2NbMjE1XVtzXV09NTUwNDArcyxoWzU1MDQwK3NdPWNbMjE1XVtzXSk7Zm9yKGNbMjE2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YWNiXHU3YjIwXHU3YzkyXHU2NDY5XHU3NDZhXHU3NWYyXHU3OGJjXHU3OGU4XHU5OWFjXHU5YjU0XHU5ZWJiXHU1YmRlXHU1ZTU1XHU2ZjIwXHU4MTljXHU4M2FiXHU5MDg4XHU0ZTA3XHU1MzRkXHU1YTI5XHU1ZGQyXHU1ZjRlXHU2'@; put 'MTYyXHU2MzNkXHU2NjY5XHU2NmZjXHU2ZWZmXHU2ZjJiXHU3MDYzXHU3NzllXHU4NDJjXHU4NTEzXHU4ODNiXHU4ZjEzXHU5OTQ1XHU5YzNiXHU1NTFjXHU2MmI5XHU2NzJiXHU2Y2FiXHU4MzA5XHU4OTZhXHU5NzdhXHU0ZWExXHU1OTg0XHU1ZmQ4XHU1ZmQ5XHU2NzFiXHU3ZGIyXHU3ZjU0'@; put 'XHU4MjkyXHU4MzJiXHU4M2JkXHU4ZjFlXHU5MDk5XHU1N2NiXHU1OWI5XHU1YTkyXHU1YmQwXHU2NjI3XHU2NzlhXHU2ODg1XHU2YmNmXHU3MTY0XHU3Zjc1XHU4Y2I3XHU4Y2UzXHU5MDgxXHU5YjQ1XHU4MTA4XHU4YzhhXHU5NjRjXHU5YTQwXHU5ZWE1XHU1YjVmXHU2YzEzXHU3MzFiXHU3'@; put 'NmYyXHU3NmRmXHU4NDBjXHU1MWFhXHU4OTkzXHU1MTRkXHU1MTk1XHU1MmM5XHU2OGM5XHU2Yzk0XHU3NzA0XHU3NzIwXHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWI1XHU2ZWM1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTZdW3NdLmNoYXJD'@; put 'b2RlQXQoMCkmJih5W2NbMjE2XVtzXV09NTUyOTYrcyxoWzU1Mjk2K3NdPWNbMjE2XVtzXSk7Zm9yKGNbMjE3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTExXHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0XHU4ODgyXHU0ZmFlXHU1MTkyXHU1MmRmXHU1'@; put 'OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2N2QwXHU2YTIxXHU2YmNkXHU2YmRiXHU3MjVmXHU3MjYxXHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3MjY3XHU3NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5'@; put 'XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZmXHU1ODkzXHU1OTk5XHU1ZWRmXHU2M2NmXHU2NjM0XHU2NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3XHU2NGFiXHU2NWUwXHU2OTU5XHU2YjY2XHU2'@; put 'YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4MzAyXHU4NTZhXHU4YWEzXHU4Y2JmXHU5NzI3XHU5ZDYxXHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sy'@; put 'MTddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE3XVtzXV09NTU1NTIrcyxoWzU1NTUyK3NdPWNbMjE3XVtzXSk7Zm9yKGNbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Yzc2XHU3ZDBhXHU3ZDBiXHU4MDVlXHU4NjhhXHU5NTgwXHU5NmVmXHU1MmZmXHU2Yzk1XHU3MjY5XHU1NDczXHU1YTlhXHU1YzNlXHU1ZDRiXHU1ZjRjXHU1ZmFlXHU2NzJhXHU2OGI2XHU2'@; put 'OTYzXHU2ZTNjXHU2ZTQ0XHU3NzA5XHU3YzczXHU3ZjhlXHU4NTg3XHU4YjBlXHU4ZmY3XHU5NzYxXHU5ZWY0XHU1Y2I3XHU2MGI2XHU2MTBkXHU2MWFiXHU2NTRmXHU2NWZiXHU2NWZjXHU2YzExXHU2Y2VmXHU3MzlmXHU3M2M5XHU3ZGUxXHU5NTk0XHU1YmM2XHU4NzFjXHU4YjEwXHU1MjVk'@; put 'XHU1MzVhXHU2MmNkXHU2NDBmXHU2NGIyXHU2NzM0XHU2YTM4XHU2Y2NhXHU3M2MwXHU3NDllXHU3Yjk0XHU3Yzk1XHU3ZTFiXHU4MThhXHU4MjM2XHU4NTg0XHU4ZmViXHU5NmY5XHU5OWMxXHU0ZjM0XHU1MzRhXHU1M2NkXHU1M2RiXHU2MmNjXHU2NDJjXHU2NTAwXHU2NTkxXHU2OWMzXHU2'@; put 'Y2VlXHU2ZjU4XHU3M2VkXHU3NTU0XHU3NjIyXHU3NmU0XHU3NmZjXHU3OGQwXHU3OGZiXHU3OTJjXHU3ZDQ2XHU4MjJjXHU4N2UwXHU4ZmQ0XHU5ODEyXHU5OGVmXHU1MmMzXHU2MmQ0XHU2NGE1XHU2ZTI0XHU2ZjUxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE4XS5sZW5ndGg7Kytz'@; put 'KTY1NTMzIT09Y1syMThdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE4XVtzXV09NTU4MDgrcyxoWzU1ODA4K3NdPWNbMjE4XVtzXSk7Zm9yKGNbMjE5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjdjXHU4ZGNiXHU5MWIxXHU5MjYyXHU5YWVlXHU5YjQzXHU1MDIzXHU1MDhkXHU1NzRhXHU1OWE4XHU1YzI4XHU1ZTQ3XHU1Zjc3XHU2MjNmXHU2NTNlXHU2NWI5XHU2'@; put 'NWMxXHU2NjA5XHU2NzhiXHU2OTljXHU2ZWMyXHU3OGM1XHU3ZDIxXHU4MGFhXHU4MTgwXHU4MjJiXHU4MmIzXHU4NGExXHU4NjhjXHU4YTJhXHU4YjE3XHU5MGE2XHU5NjMyXHU5ZjkwXHU1MDBkXHU0ZmYzXHVmOTYzXHU1N2Y5XHU1Zjk4XHU2MmRjXHU2MzkyXHU2NzZmXHU2ZTQzXHU3MTE5'@; put 'XHU3NmMzXHU4MGNjXHU4MGRhXHU4OGY0XHU4OGY1XHU4OTE5XHU4Y2UwXHU4ZjI5XHU5MTRkXHU5NjZhXHU0ZjJmXHU0ZjcwXHU1ZTFiXHU2N2NmXHU2ODIyXHU3NjdkXHU3NjdlXHU5YjQ0XHU1ZTYxXHU2YTBhXHU3MTY5XHU3MWQ0XHU3NTZhXHVmOTY0XHU3ZTQxXHU4NTQzXHU4NWU5XHU5'@; put 'OGRjXHU0ZjEwXHU3YjRmXHU3ZjcwXHU5NWE1XHU1MWUxXHU1ZTA2XHU2OGI1XHU2YzNlXHU2YzRlXHU2Y2RiXHU3MmFmXHU3YmM0XHU4MzAzXHU2Y2Q1XHU3NDNhXHU1MGZiXHU1Mjg4XHU1OGMxXHU2NGQ4XHU2YTk3XHU3NGE3XHU3NjU2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE5'@; put 'XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE5XVtzXV09NTYwNjQrcyxoWzU2MDY0K3NdPWNbMjE5XVtzXSk7Zm9yKGNbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OGE3XHU4NjE3XHU5NWUyXHU5NzM5XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5MDhhXHU1MjI1XHU3N2E1XHU5YzQ5XHU5'@; put 'ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0XHU2OGM1XHU3MGIzXHU3NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5OTIwXHU5YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1XHU2ZDExXHU2ZTdhXHU2ZjdkXHU3M2U0'@; put 'XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1MzEwXHU1MzVjXHU1YjkzXHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJmXHU4NTE0XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2NzJjXHU0ZTc2XHU0ZmY4XHU1OTQ5XHU1'@; put 'YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJiXHU4NGVjXHU4NzAyXHU5MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0ZmVmXHU1MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJiXHU1YTY2XHVmZmZkIi5zcGxpdCgiIiks'@; put 'cz0wO3MhPWNbMjIwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjIwXVtzXV09NTYzMjArcyxoWzU2MzIwK3NdPWNbMjIwXVtzXSk7Zm9yKGNbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YjVhXHU1Yjc1XHU1YmNjXHU1ZTljXHVmOTY2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2ZDZlXHU2ZWE1XHU3MjM2XHU3YjI2XHU3'@; put 'YzNmXHU3ZjM2XHU4MTUwXHU4MTUxXHU4MTlhXHU4MjQwXHU4Mjk5XHU4M2E5XHU4YTAzXHU4Y2EwXHU4Y2U2XHU4Y2ZiXHU4ZDc0XHU4ZGJhXHU5MGU4XHU5MWRjXHU5NjFjXHU5NjQ0XHU5OWQ5XHU5Y2U3XHU1MzE3XHU1MjA2XHU1NDI5XHU1Njc0XHU1OGIzXHU1OTU0XHU1OTZlXHU1ZmZm'@; put 'XHU2MWE0XHU2MjZlXHU2NjEwXHU2YzdlXHU3MTFhXHU3NmM2XHU3Yzg5XHU3Y2RlXHU3ZDFiXHU4MmFjXHU4Y2MxXHU5NmYwXHVmOTY3XHU0ZjViXHU1ZjE3XHU1ZjdmXHU2MmMyXHU1ZDI5XHU2NzBiXHU2OGRhXHU3ODdjXHU3ZTQzXHU5ZDZjXHU0ZTE1XHU1MDk5XHU1MzE1XHU1MzJhXHU1'@; put 'MzUxXHU1OTgzXHU1YTYyXHU1ZTg3XHU2MGIyXHU2MThhXHU2MjQ5XHU2Mjc5XHU2NTkwXHU2Nzg3XHU2OWE3XHU2YmQ0XHU2YmQ2XHU2YmQ3XHU2YmQ4XHU2Y2I4XHVmOTY4XHU3NDM1XHU3NWZhXHU3ODEyXHU3ODkxXHU3OWQ1XHU3OWQ4XHU3YzgzXHU3ZGNiXHU3ZmUxXHU4MGE1XHVmZmZk'@; put 'Ii5zcGxpdCgiIikscz0wO3MhPWNbMjIxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjIxXVtzXV09NTY1NzYrcyxoWzU2NTc2K3NdPWNbMjIxXVtzXSk7Zm9yKGNbMjIyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MTNlXHU4MWMyXHU4M2YyXHU4NzFhXHU4OGU4XHU4YWI5XHU4YjZjXHU4Y2JiXHU5MTE5XHU5NzVlXHU5'@; put 'OGRiXHU5ZjNiXHU1NmFjXHU1YjJhXHU1ZjZjXHU2NThjXHU2YWIzXHU2YmFmXHU2ZDVjXHU2ZmYxXHU3MDE1XHU3MjVkXHU3M2FkXHU4Y2E3XHU4Y2QzXHU5ODNiXHU2MTkxXHU2YzM3XHU4MDU4XHU5YTAxXHU0ZTRkXHU0ZThiXHU0ZTliXHU0ZWQ1XHU0ZjNhXHU0ZjNjXHU0ZjdmXHU0ZmRm'@; put 'XHU1MGZmXHU1M2YyXHU1M2Y4XHU1NTA2XHU1NWUzXHU1NmRiXHU1OGViXHU1OTYyXHU1YTExXHU1YmViXHU1YmZhXHU1YzA0XHU1ZGYzXHU1ZTJiXHU1Zjk5XHU2MDFkXHU2MzY4XHU2NTljXHU2NWFmXHU2N2Y2XHU2N2ZiXHU2OGFkXHU2YjdiXHU2Yzk5XHU2Y2Q3XHU2ZTIzXHU3MDA5XHU3'@; put 'MzQ1XHU3ODAyXHU3OTNlXHU3OTQwXHU3OTYwXHU3OWMxXHU3YmU5XHU3ZDE3XHU3ZDcyXHU4MDg2XHU4MjBkXHU4MzhlXHU4NGQxXHU4NmM3XHU4OGRmXHU4YTUwXHU4YTVlXHU4YjFkXHU4Y2RjXHU4ZDY2XHU4ZmFkXHU5MGFhXHU5OGZjXHU5OWRmXHU5ZTlkXHU1MjRhXHVmOTY5XHU2NzE0'@; put 'XHVmOTZhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjIyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjIyXVtzXV09NTY4MzIrcyxoWzU2ODMyK3NdPWNbMjIyXVtzXSk7Zm9yKGNbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MDk4XHU1MjJhXHU1YzcxXHU2NTYzXHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3'@; put 'Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4NWE5XHU0ZTA5XHVmOTZiXHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEyXHU5OGFmXHU0ZTBhXHU1MGI3XHU1MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3'@; put 'XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYzXHU2ODUxXHU2YTYxXHU2ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4OWY0XHU4YTczXHU4YzYxXHU4Y2RlXHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1'@; put 'NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVmOTZkXHU3YjE5XHU1ODg1XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRkXHU2NjkxXHU2NmQ5XHU2NmY4XHU2ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZl'@; put 'XHU3ZDZlXHU3ZGQ2XHU3ZjcyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjIzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjIzXVtzXV09NTcwODgrcyxoWzU3MDg4K3NdPWNbMjIzXVtzXSk7Zm9yKGNbMjI0XT0iXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MGU1XHU4MjEyXHU4NWFmXHU4OTdmXHU4YTkzXHU5MDFkXHU5'@; put 'MmU0XHU5ZWNkXHU5ZjIwXHU1OTE1XHU1OTZkXHU1ZTJkXHU2MGRjXHU2NjE0XHU2NjczXHU2NzkwXHU2YzUwXHU2ZGM1XHU2ZjVmXHU3N2YzXHU3OGE5XHU4NGM2XHU5MWNiXHU5MzJiXHU0ZWQ5XHU1MGNhXHU1MTQ4XHU1NTg0XHU1YjBiXHU1YmEzXHU2MjQ3XHU2NTdlXHU2NWNiXHU2ZTMy'@; put 'XHU3MTdkXHU3NDAxXHU3NDQ0XHU3NDg3XHU3NGJmXHU3NjZjXHU3OWFhXHU3ZGRhXHU3ZTU1XHU3ZmE4XHU4MTdhXHU4MWIzXHU4MjM5XHU4NjFhXHU4N2VjXHU4YTc1XHU4ZGUzXHU5MDc4XHU5MjkxXHU5NDI1XHU5OTRkXHU5YmFlXHU1MzY4XHU1YzUxXHU2OTU0XHU2Y2M0XHU2ZDI5XHU2'@; put 'ZTJiXHU4MjBjXHU4NTliXHU4OTNiXHU4YTJkXHU4YWFhXHU5NmVhXHU5ZjY3XHU1MjYxXHU2NmI5XHU2YmIyXHU3ZTk2XHU4N2ZlXHU4ZDBkXHU5NTgzXHU5NjVkXHU2NTFkXHU2ZDg5XHU3MWVlXHVmOTZlXHU1N2NlXHU1OWQzXHU1YmFjXHU2MDI3XHU2MGZhXHU2MjEwXHU2NjFmXHU2NjVm'@; put 'XHU3MzI5XHU3M2Y5XHU3NmRiXHU3NzAxXHU3YjZjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI0XVtzXV09NTczNDQrcyxoWzU3MzQ0K3NdPWNbMjI0XVtzXSk7Zm9yKGNbMjI1XT0iXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDU2XHU4MDcyXHU4MTY1XHU4YWEwXHU5'@; put 'MTkyXHU0ZTE2XHU1MmUyXHU2YjcyXHU2ZDE3XHU3YTA1XHU3YjM5XHU3ZDMwXHVmOTZmXHU4Y2IwXHU1M2VjXHU1NjJmXHU1ODUxXHU1YmI1XHU1YzBmXHU1YzExXHU1ZGUyXHU2MjQwXHU2MzgzXHU2NDE0XHU2NjJkXHU2OGIzXHU2Y2JjXHU2ZDg4XHU2ZWFmXHU3MDFmXHU3MGE0XHU3MWQy'@; put 'XHU3NTI2XHU3NThmXHU3NThlXHU3NjE5XHU3YjExXHU3YmUwXHU3YzJiXHU3ZDIwXHU3ZDM5XHU4NTJjXHU4NTZkXHU4NjA3XHU4YTM0XHU5MDBkXHU5MDYxXHU5MGI1XHU5MmI3XHU5N2Y2XHU5YTM3XHU0ZmQ3XHU1YzZjXHU2NzVmXHU2ZDkxXHU3YzlmXHU3ZThjXHU4YjE2XHU4ZDE2XHU5'@; put 'MDFmXHU1YjZiXHU1ZGZkXHU2NDBkXHU4NGMwXHU5MDVjXHU5OGUxXHU3Mzg3XHU1YjhiXHU2MDlhXHU2NzdlXHU2ZGRlXHU4YTFmXHU4YWE2XHU5MDAxXHU5ODBjXHU1MjM3XHVmOTcwXHU3MDUxXHU3ODhlXHU5Mzk2XHU4ODcwXHU5MWQ3XHU0ZmVlXHU1M2Q3XHU1NWZkXHU1NmRhXHU1Nzgy'@; put 'XHU1OGZkXHU1YWMyXHU1Yjg4XHU1Y2FiXHU1Y2MwXHU1ZTI1XHU2MTAxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI1XVtzXV09NTc2MDArcyxoWzU3NjAwK3NdPWNbMjI1XVtzXSk7Zm9y'@; put 'KGNbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MjBkXHU2MjRiXHU2'@; put 'Mzg4XHU2NDFjXHU2NTM2XHU2NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5XHU2ZjMxXHU3MWU3XHU3MmU5XHU3Mzc4XHU3NDA3XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYxXHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRh'@; put 'XHU4NWVhXHU4ODk2XHU4YWIwXHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5MTZjXHU5Mjk2XHU5MmI5XHU5NjhiXHU5NmE3XHU5NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3'@; put 'NDIxXHU3NGI5XHU4MDg1XHU4M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQyXHU2NWVjXHU2ODEyXHU2OTZmXHU2YTUzXHU2Yjg5XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQwXHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3'@; put 'XHU5MzFlXHU5ODA2XHU5OWI0XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1ZDA3XHU1ZDI3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI2XVtzXV09NTc4NTYrcyxoWzU3ODU2K3NdPWNb'@; put 'MjI2XVtzXSk7Zm9yKGNbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1'@; put 'ZDY5XHU3NDVmXHU4MTlkXHU4NzY4XHU2ZmQ1XHU2MmZlXHU3ZmQyXHU4OTM2XHU4OTcyXHU0ZTFlXHU0ZTU4XHU1MGU3XHU1MmRkXHU1MzQ3XHU2MjdmXHU2NjA3XHU3ZTY5XHU4ODA1XHU5NjVlXHU0ZjhkXHU1MzE5XHU1NjM2XHU1OWNiXHU1YWE0XHU1YzM4XHU1YzRlXHU1YzRkXHU1ZTAy'@; put 'XHU1ZjExXHU2MDQzXHU2NWJkXHU2NjJmXHU2NjQyXHU2N2JlXHU2N2Y0XHU3MzFjXHU3N2UyXHU3OTNhXHU3ZmM1XHU4NDk0XHU4NGNkXHU4OTk2XHU4YTY2XHU4YTY5XHU4YWUxXHU4YzU1XHU4YzdhXHU1N2Y0XHU1YmQ0XHU1ZjBmXHU2MDZmXHU2MmVkXHU2OTBkXHU2Yjk2XHU2ZTVjXHU3'@; put 'MTg0XHU3YmQyXHU4NzU1XHU4YjU4XHU4ZWZlXHU5OGRmXHU5OGZlXHU0ZjM4XHU0ZjgxXHU0ZmUxXHU1NDdiXHU1YTIwXHU1YmI4XHU2MTNjXHU2NWIwXHU2NjY4XHU3MWZjXHU3NTMzXHU3OTVlXHU3ZDMzXHU4MTRlXHU4MWUzXHU4Mzk4XHU4NWFhXHU4NWNlXHU4NzAzXHU4YTBhXHU4ZWFi'@; put 'XHU4ZjliXHVmOTcxXHU4ZmM1XHU1OTMxXHU1YmE0XHU1YmU2XHU2MDg5XHU1YmU5XHU1YzBiXHU1ZmMzXHU2YzgxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI3XVtzXV09NTgxMTIrcyxo'@; put 'WzU4MTEyK3NdPWNbMjI3XVtzXSk7Zm9yKGNbMjI4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmOTcyXHU2ZGYxXHU3MDBiXHU3NTFhXHU4MmFmXHU4YWY2XHU0ZWMwXHU1MzQxXHVmOTczXHU5NmQ5XHU2YzBmXHU0ZTllXHU0ZmM0XHU1MTUyXHU1NTVlXHU1YTI1XHU1Y2U4XHU2MjExXHU3MjU5XHU4MmJkXHU4M2FhXHU4NmZlXHU4ODU5XHU4YTFkXHU5NjNmXHU5NmM1'@; put 'XHU5OTEzXHU5ZDA5XHU5ZDVkXHU1ODBhXHU1Y2IzXHU1ZGJkXHU1ZTQ0XHU2MGUxXHU2MTE1XHU2M2UxXHU2YTAyXHU2ZTI1XHU5MTAyXHU5MzU0XHU5ODRlXHU5YzEwXHU5Zjc3XHU1Yjg5XHU1Y2I4XHU2MzA5XHU2NjRmXHU2ODQ4XHU3NzNjXHU5NmMxXHU5NzhkXHU5ODU0XHU5YjlmXHU2'@; put 'NWExXHU4YjAxXHU4ZWNiXHU5NWJjXHU1NTM1XHU1Y2E5XHU1ZGQ2XHU1ZWI1XHU2Njk3XHU3NjRjXHU4M2Y0XHU5NWM3XHU1OGQzXHU2MmJjXHU3MmNlXHU5ZDI4XHU0ZWYwXHU1OTJlXHU2MDBmXHU2NjNiXHU2YjgzXHU3OWU3XHU5ZDI2XHU1MzkzXHU1NGMwXHU1N2MzXHU1ZDE2XHU2MTFi'@; put 'XHU2NmQ2XHU2ZGFmXHU3ODhkXHU4MjdlXHU5Njk4XHU5NzQ0XHU1Mzg0XHU2MjdjXHU2Mzk2XHU2ZGIyXHU3ZTBhXHU4MTRiXHU5ODRkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI4XVtz'@; put 'XV09NTgzNjgrcyxoWzU4MzY4K3NdPWNbMjI4XVtzXSk7Zm9yKGNbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YWZiXHU3ZjRjXHU5ZGFmXHU5ZTFhXHU0ZTVmXHU1MDNiXHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3ZDA0XHU4MmU1XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThk'@; put 'XHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1YjQzXHU2MDU5XHU2M2RhXHU2NTE4XHU2NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdiXHU3ZjhhXHVmOTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5'@; put 'MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmExXHU2NWJjXHU2ZjAxXHU3NjAwXHU3OWE2XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3MTA5XHU4YTAwXHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZh'@; put 'XHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1ZGFhXHU2OTZkXHU1MTg2XHU0ZTg4XHU0ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjldW3NdLmNoYXJDb2RlQXQoMCkm'@; put 'Jih5W2NbMjI5XVtzXV09NTg2MjQrcyxoWzU4NjI0K3NdPWNbMjI5XVtzXSk7Zm9yKGNbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOTgzXHU2YjVmXHU2YzVkXHVmOTg0XHU3NGI1XHU3OTE2XHVmOTg1XHU4MjA3XHU4MjQ1XHU4MzM5XHU4ZjNmXHU4ZjVkXHVmOTg2XHU5OTE4XHVmOTg3XHVmOTg4XHVmOTg5XHU0ZWE2XHVmOThhXHU1N2RmXHU1Zjc5XHU2NjEz'@; put 'XHVmOThiXHVmOThjXHU3NWFiXHU3ZTc5XHU4YjZmXHVmOThkXHU5MDA2XHU5YTViXHU1NmE1XHU1ODI3XHU1OWY4XHU1YTFmXHU1YmI0XHVmOThlXHU1ZWY2XHVmOThmXHVmOTkwXHU2MzUwXHU2MzNiXHVmOTkxXHU2OTNkXHU2Yzg3XHU2Y2JmXHU2ZDhlXHU2ZDkzXHU2ZGY1XHU2ZjE0XHVm'@; put 'OTkyXHU3MGRmXHU3MTM2XHU3MTU5XHVmOTkzXHU3MWMzXHU3MWQ1XHVmOTk0XHU3ODRmXHU3ODZmXHVmOTk1XHU3Yjc1XHU3ZGUzXHVmOTk2XHU3ZTJmXHVmOTk3XHU4ODRkXHU4ZWRmXHVmOTk4XHVmOTk5XHVmOTlhXHU5MjViXHVmOTliXHU5Y2Y2XHVmOTljXHVmOTlkXHVmOTllXHU2MDg1'@; put 'XHU2ZDg1XHVmOTlmXHU3MWIxXHVmOWEwXHVmOWExXHU5NWIxXHU1M2FkXHVmOWEyXHVmOWEzXHVmOWE0XHU2N2QzXHVmOWE1XHU3MDhlXHU3MTMwXHU3NDMwXHU4Mjc2XHU4MmQyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzBdW3NdLmNo'@; put 'YXJDb2RlQXQoMCkmJih5W2NbMjMwXVtzXV09NTg4ODArcyxoWzU4ODgwK3NdPWNbMjMwXVtzXSk7Zm9yKGNbMjMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOWE2XHU5NWJiXHU5YWU1XHU5ZTdkXHU2NmM0XHVmOWE3XHU3MWMxXHU4NDQ5XHVmOWE4XHVmOWE5XHU1ODRiXHVmOWFhXHVmOWFiXHU1ZGI4XHU1ZjcxXHVmOWFjXHU2NjIwXHU2NjhlXHU2OTc5XHU2OWFl'@; put 'XHU2YzM4XHU2Y2YzXHU2ZTM2XHU2ZjQxXHU2ZmRhXHU3MDFiXHU3MDJmXHU3MTUwXHU3MWRmXHU3MzcwXHVmOWFkXHU3NDViXHVmOWFlXHU3NGQ0XHU3NmM4XHU3YTRlXHU3ZTkzXHVmOWFmXHVmOWIwXHU4MmYxXHU4YTYwXHU4ZmNlXHVmOWIxXHU5MzQ4XHVmOWIyXHU5NzE5XHVmOWIzXHVm'@; put 'OWI0XHU0ZTQyXHU1MDJhXHVmOWI1XHU1MjA4XHU1M2UxXHU2NmYzXHU2YzZkXHU2ZmNhXHU3MzBhXHU3NzdmXHU3YTYyXHU4MmFlXHU4NWRkXHU4NjAyXHVmOWI2XHU4OGQ0XHU4YTYzXHU4YjdkXHU4YzZiXHVmOWI3XHU5MmIzXHVmOWI4XHU5NzEzXHU5ODEwXHU0ZTk0XHU0ZjBkXHU0ZmM5'@; put 'XHU1MGIyXHU1MzQ4XHU1NDNlXHU1NDMzXHU1NWRhXHU1ODYyXHU1OGJhXHU1OTY3XHU1YTFiXHU1YmU0XHU2MDlmXHVmOWI5XHU2MWNhXHU2NTU2XHU2NWZmXHU2NjY0XHU2OGE3XHU2YzVhXHU2ZmIzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMxXS5sZW5ndGg7KytzKTY1NTMzIT09'@; put 'Y1syMzFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMxXVtzXV09NTkxMzYrcyxoWzU5MTM2K3NdPWNbMjMxXVtzXSk7Zm9yKGNbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0XHU5YzMyXHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3YTY5XHU3ZTE1'@; put 'XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3NjcwXHU3ZmMxXHU5MDk1XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4MWU1XHU4NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5XHU3NDEzXHU3'@; put 'NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4MzllXHU4YzRjXHU5NjJlXHU5ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3MzhiXHU1MDJkXHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZjXHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVmOWJiXHU1MGU1'@; put 'XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVmOWJjXHVmOWJkXHU1ZGEyXHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVmOWJmXHU2YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMyXS5sZW5ndGg7'@; put 'KytzKTY1NTMzIT09Y1syMzJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMyXVtzXV09NTkzOTIrcyxoWzU5MzkyK3NdPWNbMjMyXVtzXSk7Zm9yKGNbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTg4XHU3YWFmXHU3ZTQ3XHU3ZTVlXHU4MDAwXHU4MTcwXHVmOWMyXHU4N2VmXHU4OTgxXHU4YjIwXHU5MDU5XHVmOWMzXHU5MDgwXHU5OTUyXHU2MTdlXHU2YjMy'@; put 'XHU2ZDc0XHU3ZTFmXHU4OTI1XHU4ZmIxXHU0ZmQxXHU1MGFkXHU1MTk3XHU1MmM3XHU1N2M3XHU1ODg5XHU1YmI5XHU1ZWI4XHU2MTQyXHU2OTk1XHU2ZDhjXHU2ZTY3XHU2ZWI2XHU3MTk0XHU3NDYyXHU3NTI4XHU3NTJjXHU4MDczXHU4MzM4XHU4NGM5XHU4ZTBhXHU5Mzk0XHU5M2RlXHVm'@; put 'OWM0XHU0ZThlXHU0ZjUxXHU1MDc2XHU1MTJhXHU1M2M4XHU1M2NiXHU1M2YzXHU1Yjg3XHU1YmQzXHU1YzI0XHU2MTFhXHU2MTgyXHU2NWY0XHU3MjViXHU3Mzk3XHU3NDQwXHU3NmMyXHU3OTUwXHU3OTkxXHU3OWI5XHU3ZDA2XHU3ZmJkXHU4MjhiXHU4NWQ1XHU4NjVlXHU4ZmMyXHU5MDQ3'@; put 'XHU5MGY1XHU5MWVhXHU5Njg1XHU5NmU4XHU5NmU5XHU1MmQ2XHU1ZjY3XHU2NWVkXHU2NjMxXHU2ODJmXHU3MTVjXHU3YTM2XHU5MGMxXHU5ODBhXHU0ZTkxXHVmOWM1XHU2YTUyXHU2YjllXHU2ZjkwXHU3MTg5XHU4MDE4XHU4MmI4XHU4NTUzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNb'@; put 'MjMzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMzXVtzXV09NTk2NDgrcyxoWzU5NjQ4K3NdPWNbMjMzXVtzXSk7Zm9yKGNbMjM0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MDRiXHU5Njk1XHU5NmYyXHU5N2ZiXHU4NTFhXHU5YjMxXHU0ZTkwXHU3MThhXHU5NmM0XHU1MTQzXHU1MzlmXHU1NGUxXHU1NzEzXHU1NzEy'@; put 'XHU1N2EzXHU1YTliXHU1YWM0XHU1YmMzXHU2MDI4XHU2MTNmXHU2M2Y0XHU2Yzg1XHU2ZDM5XHU2ZTcyXHU2ZTkwXHU3MjMwXHU3MzNmXHU3NDU3XHU4MmQxXHU4ODgxXHU4ZjQ1XHU5MDYwXHVmOWM2XHU5NjYyXHU5ODU4XHU5ZDFiXHU2NzA4XHU4ZDhhXHU5MjVlXHU0ZjRkXHU1MDQ5XHU1'@; put 'MGRlXHU1MzcxXHU1NzBkXHU1OWQ0XHU1YTAxXHU1YzA5XHU2MTcwXHU2NjkwXHU2ZTJkXHU3MjMyXHU3NDRiXHU3ZGVmXHU4MGMzXHU4NDBlXHU4NDY2XHU4NTNmXHU4NzVmXHU4ODViXHU4OTE4XHU4YjAyXHU5MDU1XHU5N2NiXHU5YjRmXHU0ZTczXHU0ZjkxXHU1MTEyXHU1MTZhXHVmOWM3'@; put 'XHU1NTJmXHU1NWE5XHU1YjdhXHU1YmE1XHU1ZTdjXHU1ZTdkXHU1ZWJlXHU2MGEwXHU2MGRmXHU2MTA4XHU2MTA5XHU2M2M0XHU2NTM4XHU2NzA5XHVmOWM4XHU2N2Q0XHU2N2RhXHVmOWM5XHU2OTYxXHU2OTYyXHU2Y2I5XHU2ZDI3XHVmOWNhXHU2ZTM4XHVmOWNiXHVmZmZkIi5zcGxpdCgi'@; put 'Iikscz0wO3MhPWNbMjM0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM0XVtzXV09NTk5MDQrcyxoWzU5OTA0K3NdPWNbMjM0XVtzXSk7Zm9yKGNbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmUxXHU3MzM2XHU3MzM3XHVmOWNjXHU3NDVjXHU3NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZl'@; put 'XHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMwXHU4ZTQyXHU5MDRhXHU5MDNlXHU5MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5XHU4MGIyXHVmOWQzXHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2'@; put 'ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5NThmXHVmOWQ4XHVmOWQ5XHVmOWRhXHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2MTQ3XHU2YmI3XHU4YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJk'@; put 'XHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkxXHU1MWRkXHU2MWM5XHU4MWJhXHU5ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1XHU3NTkxXHU3N2UzXHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjXHVm'@; put 'ZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM1XVtzXV09NjAxNjArcyxoWzYwMTYwK3NdPWNbMjM1XVtzXSk7Zm9yKGNbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjcwXHU5MWFiXHU0ZThjXHU0ZWU1XHU0ZjBhXHVmOWRkXHVmOWRlXHU1OTM3XHU1OWU4XHVmOWRm'@; put 'XHU1ZGYyXHU1ZjFiXHU1ZjViXHU2MDIxXHVmOWUwXHVmOWUxXHVmOWUyXHVmOWUzXHU3MjNlXHU3M2U1XHVmOWU0XHU3NTcwXHU3NWNkXHVmOWU1XHU3OWZiXHVmOWU2XHU4MDBjXHU4MDMzXHU4MDg0XHU4MmUxXHU4MzUxXHVmOWU3XHVmOWU4XHU4Y2JkXHU4Y2IzXHU5MDg3XHVmOWU5XHVm'@; put 'OWVhXHU5OGY0XHU5OTBjXHVmOWViXHVmOWVjXHU3MDM3XHU3NmNhXHU3ZmNhXHU3ZmNjXHU3ZmZjXHU4YjFhXHU0ZWJhXHU0ZWMxXHU1MjAzXHU1MzcwXHVmOWVkXHU1NGJkXHU1NmUwXHU1OWZiXHU1YmM1XHU1ZjE1XHU1ZmNkXHU2ZTZlXHVmOWVlXHVmOWVmXHU3ZDZhXHU4MzM1XHVmOWYw'@; put 'XHU4NjkzXHU4YThkXHVmOWYxXHU5NzZkXHU5Nzc3XHVmOWYyXHVmOWYzXHU0ZTAwXHU0ZjVhXHU0ZjdlXHU1OGY5XHU2NWU1XHU2ZWEyXHU5MDM4XHU5M2IwXHU5OWI5XHU0ZWZiXHU1OGVjXHU1OThhXHU1OWQ5XHU2MDQxXHVmOWY0XHVmOWY1XHU3YTE0XHVmOWY2XHU4MzRmXHU4Y2MzXHU1'@; put 'MTY1XHU1MzQ0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM2XVtzXV09NjA0MTYrcyxoWzYwNDE2K3NdPWNbMjM2XVtzXSk7Zm9yKGNbMjM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOWY3XHVmOWY4XHVmOWY5XHU0ZWNkXHU1MjY5XHU1YjU1XHU4MmJmXHU0ZWQ0'@; put 'XHU1MjNhXHU1NGE4XHU1OWM5XHU1OWZmXHU1YjUwXHU1YjU3XHU1YjVjXHU2MDYzXHU2MTQ4XHU2ZWNiXHU3MDk5XHU3MTZlXHU3Mzg2XHU3NGY3XHU3NWI1XHU3OGMxXHU3ZDJiXHU4MDA1XHU4MWVhXHU4MzI4XHU4NTE3XHU4NWM5XHU4YWVlXHU4Y2M3XHU5NmNjXHU0ZjVjXHU1MmZhXHU1'@; put 'NmJjXHU2NWFiXHU2NjI4XHU3MDdjXHU3MGI4XHU3MjM1XHU3ZGJkXHU4MjhkXHU5MTRjXHU5NmMwXHU5ZDcyXHU1YjcxXHU2OGU3XHU2Yjk4XHU2ZjdhXHU3NmRlXHU1YzkxXHU2NmFiXHU2ZjViXHU3YmI0XHU3YzJhXHU4ODM2XHU5NmRjXHU0ZTA4XHU0ZWQ3XHU1MzIwXHU1ODM0XHU1OGJi'@; put 'XHU1OGVmXHU1OTZjXHU1YzA3XHU1ZTMzXHU1ZTg0XHU1ZjM1XHU2MzhjXHU2NmIyXHU2NzU2XHU2YTFmXHU2YWEzXHU2YjBjXHU2ZjNmXHU3MjQ2XHVmOWZhXHU3MzUwXHU3NDhiXHU3YWUwXHU3Y2E3XHU4MTc4XHU4MWRmXHU4MWU3XHU4MzhhXHU4NDZjXHU4NTIzXHU4NTk0XHU4NWNmXHU4'@; put 'OGRkXHU4ZDEzXHU5MWFjXHU5NTc3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM3XVtzXV09NjA2NzIrcyxoWzYwNjcyK3NdPWNbMjM3XVtzXSk7Zm9yKGNbMjM4XT0iXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRk'@; put 'XHU2NzUwXHU2ODNkXHU2ODkzXHU2ZTNkXHU2ZWQzXHU3MDdkXHU3ZTIxXHU4OGMxXHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRlXHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2'@; put 'ZTFhXHU3MmQ5XHU3MzJhXHU3NWJkXHU3YmI4XHU3ZDM1XHU4MmU3XHU4M2Y5XHU4NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMyXHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRk'@; put 'XHU3YjFiXHU3YzRkXHU3ZTNlXHU3ZmRmXHU4MzdiXHU4YjJiXHU4Y2NhXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2'@; put 'MDliXHU2MjMwXHU2ODEzXHU2YmJmXHU2YzA4XHU2ZmIxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM4XVtzXV09NjA5MjgrcyxoWzYwOTI4K3NdPWNbMjM4XVtzXSk7Zm9yKGNbMjM5XT0i'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTRlXHU3NDIwXHU3NTMwXHU3NTM4'@; put 'XHU3NTUxXHU3NjcyXHU3YjRjXHU3YjhiXHU3YmFkXHU3YmM2XHU3ZThmXHU4YTZlXHU4ZjNlXHU4ZjQ5XHU5MjNmXHU5MjkzXHU5MzIyXHU5NDJiXHU5NmZiXHU5ODVhXHU5ODZiXHU5OTFlXHU1MjA3XHU2MjJhXHU2Mjk4XHU2ZDU5XHU3NjY0XHU3YWNhXHU3YmMwXHU3ZDc2XHU1MzYwXHU1'@; put 'Y2JlXHU1ZTk3XHU2ZjM4XHU3MGI5XHU3Yzk4XHU5NzExXHU5YjhlXHU5ZWRlXHU2M2E1XHU2NDdhXHU4Nzc2XHU0ZTAxXHU0ZTk1XHU0ZWFkXHU1MDVjXHU1MDc1XHU1NDQ4XHU1OWMzXHU1YjlhXHU1ZTQwXHU1ZWFkXHU1ZWY3XHU1ZjgxXHU2MGM1XHU2MzNhXHU2NTNmXHU2NTc0XHU2NWNj'@; put 'XHU2Njc2XHU2Njc4XHU2N2ZlXHU2OTY4XHU2YTg5XHU2YjYzXHU2YzQwXHU2ZGMwXHU2ZGU4XHU2ZTFmXHU2ZTVlXHU3MDFlXHU3MGExXHU3MzhlXHU3M2ZkXHU3NTNhXHU3NzViXHU3ODg3XHU3OThlXHU3YTBiXHU3YTdkXHU3Y2JlXHU3ZDhlXHU4MjQ3XHU4YTAyXHU4YWVhXHU4YzllXHU5'@; put 'MTJkXHU5MTRhXHU5MWQ4XHU5MjY2XHU5MmNjXHU5MzIwXHU5NzA2XHU5NzU2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM5XVtzXV09NjExODQrcyxoWzYxMTg0K3NdPWNbMjM5XVtzXSk7'@; put 'Zm9yKGNbMjQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzVjXHU5ODAy'@; put 'XHU5ZjBlXHU1MjM2XHU1MjkxXHU1NTdjXHU1ODI0XHU1ZTFkXHU1ZjFmXHU2MDhjXHU2M2QwXHU2OGFmXHU2ZmRmXHU3OTZkXHU3YjJjXHU4MWNkXHU4NWJhXHU4OGZkXHU4YWY4XHU4ZTQ0XHU5MThkXHU5NjY0XHU5NjliXHU5NzNkXHU5ODRjXHU5ZjRhXHU0ZmNlXHU1MTQ2XHU1MWNiXHU1'@; put 'MmE5XHU1NjMyXHU1ZjE0XHU1ZjZiXHU2M2FhXHU2NGNkXHU2NWU5XHU2NjQxXHU2NmZhXHU2NmY5XHU2NzFkXHU2ODlkXHU2OGQ3XHU2OWZkXHU2ZjE1XHU2ZjZlXHU3MTY3XHU3MWU1XHU3MjJhXHU3NGFhXHU3NzNhXHU3OTU2XHU3OTVhXHU3OWRmXHU3YTIwXHU3YTk1XHU3Yzk3XHU3Y2Rm'@; put 'XHU3ZDQ0XHU3ZTcwXHU4MDg3XHU4NWZiXHU4NmE0XHU4YTU0XHU4YWJmXHU4ZDk5XHU4ZTgxXHU5MDIwXHU5MDZkXHU5MWUzXHU5NjNiXHU5NmQ1XHU5Y2U1XHU2NWNmXHU3YzA3XHU4ZGIzXHU5M2MzXHU1YjU4XHU1YzBhXHU1MzUyXHU2MmQ5XHU3MzFkXHU1MDI3XHU1Yjk3XHU1ZjllXHU2'@; put 'MGIwXHU2MTZiXHU2OGQ1XHU2ZGQ5XHU3NDJlXHU3YTJlXHU3ZDQyXHU3ZDljXHU3ZTMxXHU4MTZiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQwXVtzXV09NjE0NDArcyxoWzYxNDQwK3Nd'@; put 'PWNbMjQwXVtzXSk7Zm9yKGNbMjQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUwXHU1NzUwXHU1ZGU2XHU1ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRmXHU1Yjk5XHU1ZGRlXHU1ZWRhXHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2'@; put 'Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3M2UwXHU3NTg3XHU3YzRjXHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5MTUyXHU5NDQ0XHU5OWQwXHU3YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2'@; put 'XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNkXHU2ZDVhXHU2ZTk2XHU2ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2XHU5MWNkXHU1MzdkXHU2YWRiXHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2'@; put 'MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3NWM3XHU3ZTUyXHU4NGI4XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQxXVtzXV09NjE2OTYr'@; put 'cyxoWzYxNjk2K3NdPWNbMjQxXVtzXSk7Zm9yKGNbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHU1NGFiXHU1NzMwXHU1NzQwXHU1ZmQ3XHU2MzAxXHU2MzA3XHU2NDZmXHU2NTJmXHU2NWU4XHU2NjdhXHU2NzlkXHU2N2IzXHU2YjYyXHU2YzYwXHU2YzlhXHU2ZjJjXHU3N2U1XHU3ODI1XHU3OTQ5XHU3OTU3XHU3ZDE5XHU4MGEyXHU4MTAyXHU4MWYzXHU4MjlkXHU4'@; put 'MmI3XHU4NzE4XHU4YThjXHVmOWZjXHU4ZDA0XHU4ZGJlXHU5MDcyXHU3NmY0XHU3YTE5XHU3YTM3XHU3ZTU0XHU4MDc3XHU1NTA3XHU1NWQ0XHU1ODc1XHU2MzJmXHU2NDIyXHU2NjQ5XHU2NjRiXHU2ODZkXHU2OTliXHU2Yjg0XHU2ZDI1XHU2ZWIxXHU3M2NkXHU3NDY4XHU3NGExXHU3NTVi'@; put 'XHU3NWI5XHU3NmUxXHU3NzFlXHU3NzhiXHU3OWU2XHU3ZTA5XHU3ZTFkXHU4MWZiXHU4NTJmXHU4ODk3XHU4YTNhXHU4Y2QxXHU4ZWViXHU4ZmIwXHU5MDMyXHU5M2FkXHU5NjYzXHU5NjczXHU5NzA3XHU0Zjg0XHU1M2YxXHU1OWVhXHU1YWM5XHU1ZTE5XHU2ODRlXHU3NGM2XHU3NWJlXHU3'@; put 'OWU5XHU3YTkyXHU4MWEzXHU4NmVkXHU4Y2VhXHU4ZGNjXHU4ZmVkXHU2NTlmXHU2NzE1XHVmOWZkXHU1N2Y3XHU2ZjU3XHU3ZGRkXHU4ZjJmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQy'@; put 'XVtzXV09NjE5NTIrcyxoWzYxOTUyK3NdPWNbMjQyXVtzXSk7Zm9yKGNbMjQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5M2Y2XHU5NmM2XHU1ZmI1XHU2MWYyXHU2Zjg0XHU0ZTE0XHU0Zjk4XHU1MDFmXHU1M2M5XHU1NWRmXHU1ZDZmXHU1ZGVlXHU2YjIxXHU2YjY0XHU3OGNiXHU3YjlhXHVmOWZlXHU4ZTQ5XHU4ZWNhXHU5MDZlXHU2MzQ5XHU2NDNlXHU3NzQwXHU3'@; put 'YTg0XHU5MzJmXHU5NDdmXHU5ZjZhXHU2NGIwXHU2ZmFmXHU3MWU2XHU3NGE4XHU3NGRhXHU3YWM0XHU3YzEyXHU3ZTgyXHU3Y2IyXHU3ZTk4XHU4YjlhXHU4ZDBhXHU5NDdkXHU5OTEwXHU5OTRjXHU1MjM5XHU1YmRmXHU2NGU2XHU2NzJkXHU3ZDJlXHU1MGVkXHU1M2MzXHU1ODc5XHU2MTU4'@; put 'XHU2MTU5XHU2MWZhXHU2NWFjXHU3YWQ5XHU4YjkyXHU4Yjk2XHU1MDA5XHU1MDIxXHU1Mjc1XHU1NTMxXHU1YTNjXHU1ZWUwXHU1ZjcwXHU2MTM0XHU2NTVlXHU2NjBjXHU2NjM2XHU2NmEyXHU2OWNkXHU2ZWM0XHU2ZjMyXHU3MzE2XHU3NjIxXHU3YTkzXHU4MTM5XHU4MjU5XHU4M2Q2XHU4'@; put 'NGJjXHU1MGI1XHU1N2YwXHU1YmMwXHU1YmU4XHU1ZjY5XHU2M2ExXHU3ODI2XHU3ZGI1XHU4M2RjXHU4NTIxXHU5MWM3XHU5MWY1XHU1MThhXHU2N2Y1XHU3YjU2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDNdW3NdLmNoYXJDb2RlQXQo'@; put 'MCkmJih5W2NbMjQzXVtzXV09NjIyMDgrcyxoWzYyMjA4K3NdPWNbMjQzXVtzXSk7Zm9yKGNbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Y2FjXHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNhXHU2MTdkXHU2MjFhXHU2MmQzXHU2NGYyXHU2NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5NmJiXHU0ZWRmXHU1'@; put 'MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1XHU2Y2M5XHU2ZGZhXHU3Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5NWUxXHU5NjIxXHU5N2M2XHU1MWY4XHU1NGYyXHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFmXHU4ZjRkXHU5NDM1'@; put 'XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3NTFiXHU3N2JiXHU3YzNkXHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUyXHU3NThhXHU3NzZiXHU4YWRjXHU4Y2JjXHU4ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4YWNiXHU5NzUxXHU5'@; put 'YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1XHU2ZWVmXHU3ZGUwXHU4YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2Mjg0XHU2MmRiXHU2OGEyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDRdW3Nd'@; put 'LmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ0XVtzXV09NjI0NjQrcyxoWzYyNDY0K3NdPWNbMjQ0XVtzXSk7Zm9yKGNbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTEyXHU2OTVhXHU2YTM1XHU3MDkyXHU3MTI2XHU3ODVkXHU3OTAxXHU3OTBlXHU3OWQyXHU3YTBkXHU4MDk2XHU4Mjc4XHU4MmQ1XHU4MzQ5XHU4NTQ5XHU4YzgyXHU4ZDg1XHU5MTYyXHU5MThiXHU5'@; put 'MWFlXHU0ZmMzXHU1NmQxXHU3MWVkXHU3N2Q3XHU4NzAwXHU4OWY4XHU1YmY4XHU1ZmQ2XHU2NzUxXHU5MGE4XHU1M2UyXHU1ODVhXHU1YmY1XHU2MGE0XHU2MTgxXHU2NDYwXHU3ZTNkXHU4MDcwXHU4NTI1XHU5MjgzXHU2NGFlXHU1MGFjXHU1ZDE0XHU2NzAwXHU1ODljXHU2MmJkXHU2M2E4'@; put 'XHU2OTBlXHU2OTc4XHU2YTFlXHU2ZTZiXHU3NmJhXHU3OWNiXHU4MmJiXHU4NDI5XHU4YWNmXHU4ZGE4XHU4ZmZkXHU5MTEyXHU5MTRiXHU5MTljXHU5MzEwXHU5MzE4XHU5MzlhXHU5NmRiXHU5YTM2XHU5YzBkXHU0ZTExXHU3NTVjXHU3OTVkXHU3YWZhXHU3YjUxXHU3YmM5XHU3ZTJlXHU4'@; put 'NGM0XHU4ZTU5XHU4ZTc0XHU4ZWY4XHU5MDEwXHU2NjI1XHU2OTNmXHU3NDQzXHU1MWZhXHU2NzJlXHU5ZWRjXHU1MTQ1XHU1ZmUwXHU2Yzk2XHU4N2YyXHU4ODVkXHU4ODc3XHU2MGI0XHU4MWI1XHU4NDAzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ1XS5sZW5ndGg7KytzKTY1NTMz'@; put 'IT09Y1syNDVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ1XVtzXV09NjI3MjArcyxoWzYyNzIwK3NdPWNbMjQ1XVtzXSk7Zm9yKGNbMjQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZDA1XHU1M2Q2XHU1NDM5XHU1NjM0XHU1YTM2XHU1YzMxXHU3MDhhXHU3ZmUwXHU4MDVhXHU4MTA2XHU4MWVkXHU4ZGEzXHU5MTg5XHU5YTVmXHU5ZGYyXHU1MDc0XHU0ZWM0XHU1'@; put 'M2EwXHU2MGZiXHU2ZTJjXHU1YzY0XHU0Zjg4XHU1MDI0XHU1NWU0XHU1Y2Q5XHU1ZTVmXHU2MDY1XHU2ODk0XHU2Y2JiXHU2ZGM0XHU3MWJlXHU3NWQ0XHU3NWY0XHU3NjYxXHU3YTFhXHU3YTQ5XHU3ZGM3XHU3ZGZiXHU3ZjZlXHU4MWY0XHU4NmE5XHU4ZjFjXHU5NmM5XHU5OWIzXHU5ZjUy'@; put 'XHU1MjQ3XHU1MmM1XHU5OGVkXHU4OWFhXHU0ZTAzXHU2N2QyXHU2ZjA2XHU0ZmI1XHU1YmUyXHU2Nzk1XHU2Yzg4XHU2ZDc4XHU3NDFiXHU3ODI3XHU5MWRkXHU5MzdjXHU4N2M0XHU3OWU0XHU3YTMxXHU1ZmViXHU0ZWQ2XHU1NGE0XHU1NTNlXHU1OGFlXHU1OWE1XHU2MGYwXHU2MjUzXHU2'@; put 'MmQ2XHU2NzM2XHU2OTU1XHU4MjM1XHU5NjQwXHU5OWIxXHU5OWRkXHU1MDJjXHU1MzUzXHU1NTQ0XHU1NzdjXHVmYTAxXHU2MjU4XHVmYTAyXHU2NGUyXHU2NjZiXHU2N2RkXHU2ZmMxXHU2ZmVmXHU3NDIyXHU3NDM4XHU4YTE3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ2XS5sZW5n'@; put 'dGg7KytzKTY1NTMzIT09Y1syNDZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ2XVtzXV09NjI5NzYrcyxoWzYyOTc2K3NdPWNbMjQ2XVtzXSk7Zm9yKGNbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2YjRlXHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4'@; put 'MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2OWJiXHU1Yjk1XHU1ZTExXHU2ZTZmXHVmYTAzXHU4NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFlXHU4MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkx'@; put 'XHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFmXHU4YTBlXHU2MTVmXHU2ODc2XHVmYTA1XHU3NWRiXHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1MDc4XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1'@; put 'NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2NGFkXHU2NGZhXHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2NzdmXHU3MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExXHVmZmZkIi5zcGxpdCgiIikscz0wO3Mh'@; put 'PWNbMjQ3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ3XVtzXV09NjMyMzIrcyxoWzYzMjMyK3NdPWNbMjQ3XVtzXSk7Zm9yKGNbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjJhXHU1MTZiXHU1M2VkXHU2MzRjXHU0ZjY5XHU1NTA0XHU2MDk2XHU2NTU3XHU2YzliXHU2ZDdmXHU3MjRjXHU3MmZkXHU3YTE3XHU4'@; put 'OTg3XHU4YzlkXHU1ZjZkXHU2ZjhlXHU3MGY5XHU4MWE4XHU2MTBlXHU0ZmJmXHU1MDRmXHU2MjQxXHU3MjQ3XHU3YmM3XHU3ZGU4XHU3ZmU5XHU5MDRkXHU5N2FkXHU5YTE5XHU4Y2I2XHU1NzZhXHU1ZTczXHU2N2IwXHU4NDBkXHU4YTU1XHU1NDIwXHU1YjE2XHU1ZTYzXHU1ZWUyXHU1ZjBh'@; put 'XHU2NTgzXHU4MGJhXHU4NTNkXHU5NTg5XHU5NjViXHU0ZjQ4XHU1MzA1XHU1MzBkXHU1MzBmXHU1NDg2XHU1NGZhXHU1NzAzXHU1ZTAzXHU2MDE2XHU2MjliXHU2MmIxXHU2MzU1XHVmYTA2XHU2Y2UxXHU2ZDY2XHU3NWIxXHU3ODMyXHU4MGRlXHU4MTJmXHU4MmRlXHU4NDYxXHU4NGIyXHU4'@; put 'ODhkXHU4OTEyXHU5MDBiXHU5MmVhXHU5OGZkXHU5YjkxXHU1ZTQ1XHU2NmI0XHU2NmRkXHU3MDExXHU3MjA2XHVmYTA3XHU0ZmY1XHU1MjdkXHU1ZjZhXHU2MTUzXHU2NzUzXHU2YTE5XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4Yzc5XHU5OGM3XHU5OGM0XHU5YTQzXHVmZmZkIi5zcGxp'@; put 'dCgiIikscz0wO3MhPWNbMjQ4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ4XVtzXV09NjM0ODgrcyxoWzYzNDg4K3NdPWNbMjQ4XVtzXSk7Zm9yKGNbMjQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGMxXHU3YTFmXHU2OTUzXHU4YWY3XHU4YzRhXHU5OGE4XHU5OWFlXHU1ZjdjXHU2MmFiXHU3NWIyXHU3NmFlXHU4'@; put 'OGFiXHU5MDdmXHU5NjQyXHU1MzM5XHU1ZjNjXHU1ZmM1XHU2Y2NjXHU3M2NjXHU3NTYyXHU3NThiXHU3YjQ2XHU4MmZlXHU5OTlkXHU0ZTRmXHU5MDNjXHU0ZTBiXHU0ZjU1XHU1M2E2XHU1OTBmXHU1ZWM4XHU2NjMwXHU2Y2IzXHU3NDU1XHU4Mzc3XHU4NzY2XHU4Y2MwXHU5MDUwXHU5NzFl'@; put 'XHU5YzE1XHU1OGQxXHU1Yjc4XHU4NjUwXHU4YjE0XHU5ZGI0XHU1YmQyXHU2MDY4XHU2MDhkXHU2NWYxXHU2YzU3XHU2ZjIyXHU2ZmEzXHU3MDFhXHU3ZjU1XHU3ZmYwXHU5NTkxXHU5NTkyXHU5NjUwXHU5N2QzXHU1MjcyXHU4ZjQ0XHU1MWZkXHU1NDJiXHU1NGI4XHU1NTYzXHU1NThhXHU2'@; put 'YWJiXHU2ZGI1XHU3ZGQ4XHU4MjY2XHU5MjljXHU5Njc3XHU5ZTc5XHU1NDA4XHU1NGM4XHU3NmQyXHU4NmU0XHU5NWE0XHU5NWQ0XHU5NjVjXHU0ZWEyXHU0ZjA5XHU1OWVlXHU1YWU2XHU1ZGY3XHU2MDUyXHU2Mjk3XHU2NzZkXHU2ODQxXHU2Yzg2XHU2ZTJmXHU3ZjM4XHU4MDliXHU4MjJh'@; put 'XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ5XVtzXV09NjM3NDQrcyxoWzYzNzQ0K3NdPWNbMjQ5XVtzXSk7Zm9yKGNbMjUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmYTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1'@; put 'YmIzXHU2MWM4XHU2OTc3XHU2ZDc3XHU3MDIzXHU4N2Y5XHU4OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRjXHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5'@; put 'XHU1NjUzXHU1ODlmXHU4NjViXHU4YTMxXHU2MWIyXHU2YWY2XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3'@; put 'ZDQzXHU3ZDYyXHU3ZTIzXHU4MjM3XHU4ODUyXHVmYTBhXHU4Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQwXHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNlXHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0'@; put 'XHU1MjExXHU1NzhiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjUwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNTBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjUwXVtzXV09NjRlMytzLGhbNjRlMytzXT1jWzI1MF1bc10pO2ZvcihjWzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWY2Mlx1NmNjMlx1NmVjZVx1NzAwNVx1NzA1MFx1NzBhZlx1NzE5Mlx1NzNl'@; put 'OVx1NzQ2OVx1ODM0YVx1ODdhMlx1ODg2MVx1OTAwOFx1OTBhMlx1OTNhM1x1OTlhOFx1NTE2ZVx1NWY1N1x1NjBlMFx1NjE2N1x1NjZiM1x1ODU1OVx1OGU0YVx1OTFhZlx1OTc4Ylx1NGU0ZVx1NGU5Mlx1NTQ3Y1x1NThkNVx1NThmYVx1NTk3ZFx1NWNiNVx1NWYyN1x1NjIzNlx1NjI0OFx1'@; put 'NjYwYVx1NjY2N1x1NmJlYlx1NmQ2OVx1NmRjZlx1NmU1Nlx1NmVmOFx1NmY5NFx1NmZlMFx1NmZlOVx1NzA1ZFx1NzJkMFx1NzQyNVx1NzQ1YVx1NzRlMFx1NzY5M1x1Nzk1Y1x1N2NjYVx1N2UxZVx1ODBlMVx1ODJhNlx1ODQ2Ylx1ODRiZlx1ODY0ZVx1ODY1Zlx1ODc3NFx1OGI3N1x1OGM2'@; put 'YVx1OTNhY1x1OTgwMFx1OTg2NVx1NjBkMVx1NjIxNlx1OTE3N1x1NWE1YVx1NjYwZlx1NmRmN1x1NmUzZVx1NzQzZlx1OWI0Mlx1NWZmZFx1NjBkYVx1N2IwZlx1NTRjNFx1NWYxOFx1NmM1ZVx1NmNkM1x1NmQyYVx1NzBkOFx1N2QwNVx1ODY3OVx1OGEwY1x1OWQzYlx1NTMxNlx1NTQ4Y1x1'@; put 'NWIwNVx1NmEzYVx1NzA2Ylx1NzU3NVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI1MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjUxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI1MV1bc11dPTY0MjU2K3MsaFs2NDI1NitzXT1jWzI1MV1bc10pO2ZvcihjWzI1Ml09Ilx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzk4ZFx1NzliZVx1ODJiMVx1ODNlZlx1OGE3MVx1OGI0'@; put 'MVx1OGNhOFx1OTc3NFx1ZmEwYlx1NjRmNFx1NjUyYlx1NzhiYVx1NzhiYlx1N2E2Ylx1NGUzOFx1NTU5YVx1NTk1MFx1NWJhNlx1NWU3Ylx1NjBhM1x1NjNkYlx1NmI2MVx1NjY2NVx1Njg1M1x1NmUxOVx1NzE2NVx1NzRiMFx1N2QwOFx1OTA4NFx1OWE2OVx1OWMyNVx1NmQzYlx1NmVkMVx1'@; put 'NzMzZVx1OGM0MVx1OTVjYVx1NTFmMFx1NWU0Y1x1NWZhOFx1NjA0ZFx1NjBmNlx1NjEzMFx1NjE0Y1x1NjY0M1x1NjY0NFx1NjlhNVx1NmNjMVx1NmU1Zlx1NmVjOVx1NmY2Mlx1NzE0Y1x1NzQ5Y1x1NzY4N1x1N2JjMVx1N2MyN1x1ODM1Mlx1ODc1N1x1OTA1MVx1OTY4ZFx1OWVjM1x1NTMy'@; put 'Zlx1NTZkZVx1NWVmYlx1NWY4YVx1NjA2Mlx1NjA5NFx1NjFmN1x1NjY2Nlx1NjcwM1x1NmE5Y1x1NmRlZVx1NmZhZVx1NzA3MFx1NzM2YVx1N2U2YVx1ODFiZVx1ODMzNFx1ODZkNFx1OGFhOFx1OGNjNFx1NTI4M1x1NzM3Mlx1NWI5Nlx1NmE2Ylx1OTQwNFx1NTRlZVx1NTY4Nlx1NWI1ZFx1'@; put 'NjU0OFx1NjU4NVx1NjZjOVx1Njg5Zlx1NmQ4ZFx1NmRjNlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI1Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjUyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI1Ml1bc11dPTY0NTEyK3MsaFs2NDUxMitzXT1jWzI1Ml1bc10pO2ZvcihjWzI1M109'@; put 'Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzIzYlx1ODBiNFx1OTE3NVx1OWE0'@; put 'ZFx1NGZhZlx1NTAxOVx1NTM5YVx1NTQwZVx1NTQzY1x1NTU4OVx1NTVjNVx1NWUzZlx1NWY4Y1x1NjczZFx1NzE2Nlx1NzNkZFx1OTAwNVx1NTJkYlx1NTJmM1x1NTg2NFx1NThjZVx1NzEwNFx1NzE4Zlx1NzFmYlx1ODViMFx1OGExM1x1NjY4OFx1ODVhOFx1NTVhN1x1NjY4NFx1NzE0YVx1'@; put 'ODQzMVx1NTM0OVx1NTU5OVx1NmJjMVx1NWY1OVx1NWZiZFx1NjNlZVx1NjY4OVx1NzE0N1x1OGFmMVx1OGYxZFx1OWViZVx1NGYxMVx1NjQzYVx1NzBjYlx1NzU2Nlx1ODY2N1x1NjA2NFx1OGI0ZVx1OWRmOFx1NTE0N1x1NTFmNlx1NTMwOFx1NmQzNlx1ODBmOFx1OWVkMVx1NjYxNVx1NmIy'@; put 'M1x1NzA5OFx1NzVkNVx1NTQwM1x1NWM3OVx1N2QwN1x1OGExNlx1NmIyMFx1NmIzZFx1NmI0Nlx1NTQzOFx1NjA3MFx1NmQzZFx1N2ZkNVx1ODIwOFx1NTBkNlx1NTFkZVx1NTU5Y1x1NTY2Ylx1NTZjZFx1NTllY1x1NWIwOVx1NWUwY1x1NjE5OVx1NjE5OFx1NjIzMVx1NjY1ZVx1NjZlNlx1'@; put 'NzE5OVx1NzFiOVx1NzFiYVx1NzJhN1x1NzlhN1x1N2EwMFx1N2ZiMlx1OGE3MFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI1M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjUzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI1M11bc11dPTY0NzY4K3MsaFs2NDc2OCtzXT1jWzI1M11bc10p'@; put 'O3JldHVybntlbmM6eSxkZWM6aH19KCksals5NTBdPWZ1bmN0aW9uKCl7dmFyIHMsaD1bXSx5PXt9LGM9W107Zm9yKGNbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4'@; put 'MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMF1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1swXVtzXV09MCtzLGhbMCtzXT1jWzBdW3NdKTtm'@; put 'b3IoY1sxNjFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDBcdWZmMGNcdTMwMDFcdTMwMDJcdWZmMGVcdTIwMjdcdWZmMWJcdWZmMWFcdWZmMWZcdWZmMDFcdWZlMzBcdTIwMjZcdTIwMjVcdWZlNTBcdWZlNTFcdWZlNTJceGI3'@; put 'XHVmZTU0XHVmZTU1XHVmZTU2XHVmZTU3XHVmZjVjXHUyMDEzXHVmZTMxXHUyMDE0XHVmZTMzXHUyNTc0XHVmZTM0XHVmZTRmXHVmZjA4XHVmZjA5XHVmZTM1XHVmZTM2XHVmZjViXHVmZjVkXHVmZTM3XHVmZTM4XHUzMDE0XHUzMDE1XHVmZTM5XHVmZTNhXHUzMDEwXHUzMDExXHVmZTNiXHVm'@; put 'ZTNjXHUzMDBhXHUzMDBiXHVmZTNkXHVmZTNlXHUzMDA4XHUzMDA5XHVmZTNmXHVmZTQwXHUzMDBjXHUzMDBkXHVmZTQxXHVmZTQyXHUzMDBlXHUzMDBmXHVmZTQzXHVmZTQ0XHVmZTU5XHVmZTVhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZTViXHVmZTVjXHVm'@; put 'ZTVkXHVmZTVlXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDFkXHUzMDFlXHUyMDM1XHUyMDMyXHVmZjAzXHVmZjA2XHVmZjBhXHUyMDNiXHhhN1x1MzAwM1x1MjVjYlx1MjVjZlx1MjViM1x1MjViMlx1MjVjZVx1MjYwNlx1MjYwNVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViZFx1'@; put 'MjViY1x1MzJhM1x1MjEwNVx4YWZcdWZmZTNcdWZmM2ZcdTAyY2RcdWZlNDlcdWZlNGFcdWZlNGRcdWZlNGVcdWZlNGJcdWZlNGNcdWZlNWZcdWZlNjBcdWZlNjFcdWZmMGJcdWZmMGRceGQ3XHhmN1x4YjFcdTIyMWFcdWZmMWNcdWZmMWVcdWZmMWRcdTIyNjZcdTIyNjdcdTIyNjBcdTIyMWVc'@; put 'dTIyNTJcdTIyNjFcdWZlNjJcdWZlNjNcdWZlNjRcdWZlNjVcdWZlNjZcdWZmNWVcdTIyMjlcdTIyMmFcdTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTMzZDJcdTMzZDFcdTIyMmJcdTIyMmVcdTIyMzVcdTIyMzRcdTI2NDBcdTI2NDJcdTIyOTVcdTIyOTlcdTIxOTFcdTIxOTNcdTIxOTBcdTIx'@; put 'OTJcdTIxOTZcdTIxOTdcdTIxOTlcdTIxOThcdTIyMjVcdTIyMjNcdWZmMGZcdWZmZmQiLnNwbGl0KCIiKSxzPTA7cyE9Y1sxNjFdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzE2MV1bc10uY2hhckNvZGVBdCgwKSYmKHlbY1sxNjFdW3NdXT00MTIxNitzLGhbNDEyMTYrc109Y1sxNjFdW3NdKTtm'@; put 'b3IoY1sxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmM2NcdTIyMTVcdWZlNjhcdWZmMDRcdWZmZTVcdTMwMTJcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMjBcdTIxMDNcdTIxMDlcdWZlNjlcdWZlNmFcdWZlNmJcdTMzZDVcdTMz'@; put 'OWNcdTMzOWRcdTMzOWVcdTMzY2VcdTMzYTFcdTMzOGVcdTMzOGZcdTMzYzRceGIwXHU1MTU5XHU1MTViXHU1MTVlXHU1MTVkXHU1MTYxXHU1MTYzXHU1NWU3XHU3NGU5XHU3Y2NlXHUyNTgxXHUyNTgyXHUyNTgzXHUyNTg0XHUyNTg1XHUyNTg2XHUyNTg3XHUyNTg4XHUyNThmXHUyNThlXHUy'@; put 'NThkXHUyNThjXHUyNThiXHUyNThhXHUyNTg5XHUyNTNjXHUyNTM0XHUyNTJjXHUyNTI0XHUyNTFjXHUyNTk0XHUyNTAwXHUyNTAyXHUyNTk1XHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTZlXHUyNTcwXHUy'@; put 'NTZmXHUyNTUwXHUyNTVlXHUyNTZhXHUyNTYxXHUyNWUyXHUyNWUzXHUyNWU1XHUyNWU0XHUyNTcxXHUyNTcyXHUyNTczXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1'@; put 'XHUyMTY2XHUyMTY3XHUyMTY4XHUyMTY5XHUzMDIxXHUzMDIyXHUzMDIzXHUzMDI0XHUzMDI1XHUzMDI2XHUzMDI3XHUzMDI4XHUzMDI5XHU1MzQxXHU1MzQ0XHU1MzQ1XHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVm'@; put 'ZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRk'@; put 'XHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTYyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTYyXVtzXV09NDE0NzIrcyxoWzQxNDcyK3NdPWNb'@; put 'MTYyXVtzXSk7Zm9yKGNbMTYzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzli'@; put 'XHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUw'@; put 'M2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUzMTA1XHUzMTA2XHUzMTA3XHUzMTA4XHUzMTA5XHUzMTBhXHUzMTBiXHUzMTBjXHUzMTBkXHUzMTBlXHUzMTBmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUz'@; put 'MTEwXHUzMTExXHUzMTEyXHUzMTEzXHUzMTE0XHUzMTE1XHUzMTE2XHUzMTE3XHUzMTE4XHUzMTE5XHUzMTFhXHUzMTFiXHUzMTFjXHUzMTFkXHUzMTFlXHUzMTFmXHUzMTIwXHUzMTIxXHUzMTIyXHUzMTIzXHUzMTI0XHUzMTI1XHUzMTI2XHUzMTI3XHUzMTI4XHUzMTI5XHUwMmQ5XHUwMmM5'@; put 'XHUwMmNhXHUwMmM3XHUwMmNiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMGFjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTYzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTYzXVtzXV09NDE3Mjgrcyxo'@; put 'WzQxNzI4K3NdPWNbMTYzXVtzXSk7Zm9yKGNbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTAwXHU0ZTU5XHU0ZTAxXHU0ZTAzXHU0ZTQzXHU0ZTVkXHU0ZTg2XHU0ZThjXHU0ZWJhXHU1MTNmXHU1MTY1XHU1MTZiXHU1MWUw'@; put 'XHU1MjAwXHU1MjAxXHU1MjliXHU1MzE1XHU1MzQxXHU1MzVjXHU1M2M4XHU0ZTA5XHU0ZTBiXHU0ZTA4XHU0ZTBhXHU0ZTJiXHU0ZTM4XHU1MWUxXHU0ZTQ1XHU0ZTQ4XHU0ZTVmXHU0ZTVlXHU0ZThlXHU0ZWExXHU1MTQwXHU1MjAzXHU1MmZhXHU1MzQzXHU1M2M5XHU1M2UzXHU1NzFmXHU1'@; put 'OGViXHU1OTE1XHU1OTI3XHU1OTczXHU1YjUwXHU1YjUxXHU1YjUzXHU1YmY4XHU1YzBmXHU1YzIyXHU1YzM4XHU1YzcxXHU1ZGRkXHU1ZGU1XHU1ZGYxXHU1ZGYyXHU1ZGYzXHU1ZGZlXHU1ZTcyXHU1ZWZlXHU1ZjBiXHU1ZjEzXHU2MjRkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHU0ZTExXHU0ZTEwXHU0ZTBkXHU0ZTJkXHU0ZTMwXHU0ZTM5XHU0ZTRiXHU1YzM5XHU0ZTg4XHU0ZTkxXHU0ZTk1XHU0ZTkyXHU0ZTk0XHU0ZWEyXHU0ZWMxXHU0ZWMwXHU0ZWMzXHU0ZWM2XHU0ZWM3XHU0ZWNkXHU0ZWNhXHU0ZWNiXHU0ZWM0XHU1MTQzXHU1MTQxXHU1MTY3'@; put 'XHU1MTZkXHU1MTZlXHU1MTZjXHU1MTk3XHU1MWY2XHU1MjA2XHU1MjA3XHU1MjA4XHU1MmZiXHU1MmZlXHU1MmZmXHU1MzE2XHU1MzM5XHU1MzQ4XHU1MzQ3XHU1MzQ1XHU1MzVlXHU1Mzg0XHU1M2NiXHU1M2NhXHU1M2NkXHU1OGVjXHU1OTI5XHU1OTJiXHU1OTJhXHU1OTJkXHU1YjU0XHU1'@; put 'YzExXHU1YzI0XHU1YzNhXHU1YzZmXHU1ZGY0XHU1ZTdiXHU1ZWZmXHU1ZjE0XHU1ZjE1XHU1ZmMzXHU2MjA4XHU2MjM2XHU2MjRiXHU2MjRlXHU2NTJmXHU2NTg3XHU2NTk3XHU2NWE0XHU2NWI5XHU2NWU1XHU2NmYwXHU2NzA4XHU2NzI4XHU2YjIwXHU2YjYyXHU2Yjc5XHU2YmNiXHU2YmQ0'@; put 'XHU2YmRiXHU2YzBmXHU2YzM0XHU3MDZiXHU3MjJhXHU3MjM2XHU3MjNiXHU3MjQ3XHU3MjU5XHU3MjViXHU3MmFjXHU3MzhiXHU0ZTE5XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTY0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTY0XVtz'@; put 'XV09NDE5ODQrcyxoWzQxOTg0K3NdPWNbMTY0XVtzXSk7Zm9yKGNbMTY1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTE2XHU0ZTE1XHU0ZTE0XHU0ZTE4XHU0ZTNiXHU0ZTRkXHU0ZTRmXHU0ZTRlXHU0ZWU1XHU0ZWQ4XHU0ZWQ0'@; put 'XHU0ZWQ1XHU0ZWQ2XHU0ZWQ3XHU0ZWUzXHU0ZWU0XHU0ZWQ5XHU0ZWRlXHU1MTQ1XHU1MTQ0XHU1MTg5XHU1MThhXHU1MWFjXHU1MWY5XHU1MWZhXHU1MWY4XHU1MjBhXHU1MmEwXHU1MjlmXHU1MzA1XHU1MzA2XHU1MzE3XHU1MzFkXHU0ZWRmXHU1MzRhXHU1MzQ5XHU1MzYxXHU1MzYwXHU1'@; put 'MzZmXHU1MzZlXHU1M2JiXHU1M2VmXHU1M2U0XHU1M2YzXHU1M2VjXHU1M2VlXHU1M2U5XHU1M2U4XHU1M2ZjXHU1M2Y4XHU1M2Y1XHU1M2ViXHU1M2U2XHU1M2VhXHU1M2YyXHU1M2YxXHU1M2YwXHU1M2U1XHU1M2VkXHU1M2ZiXHU1NmRiXHU1NmRhXHU1OTE2XHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1OTJlXHU1OTMxXHU1OTc0XHU1OTc2XHU1YjU1XHU1YjgzXHU1YzNjXHU1ZGU4XHU1ZGU3XHU1ZGU2XHU1ZTAyXHU1ZTAzXHU1ZTczXHU1ZTdjXHU1ZjAxXHU1ZjE4XHU1ZjE3XHU1ZmM1XHU2MjBhXHU2MjUzXHU2MjU0XHU2MjUyXHU2MjUxXHU2NWE1'@; put 'XHU2NWU2XHU2NzJlXHU2NzJjXHU2NzJhXHU2NzJiXHU2NzJkXHU2YjYzXHU2YmNkXHU2YzExXHU2YzEwXHU2YzM4XHU2YzQxXHU2YzQwXHU2YzNlXHU3MmFmXHU3Mzg0XHU3Mzg5XHU3NGRjXHU3NGU2XHU3NTE4XHU3NTFmXHU3NTI4XHU3NTI5XHU3NTMwXHU3NTMxXHU3NTMyXHU3NTMzXHU3'@; put 'NThiXHU3NjdkXHU3NmFlXHU3NmJmXHU3NmVlXHU3N2RiXHU3N2UyXHU3N2YzXHU3OTNhXHU3OWJlXHU3YTc0XHU3YWNiXHU0ZTFlXHU0ZTFmXHU0ZTUyXHU0ZTUzXHU0ZTY5XHU0ZTk5XHU0ZWE0XHU0ZWE2XHU0ZWE1XHU0ZWZmXHU0ZjA5XHU0ZjE5XHU0ZjBhXHU0ZjE1XHU0ZjBkXHU0ZjEw'@; put 'XHU0ZjExXHU0ZjBmXHU0ZWYyXHU0ZWY2XHU0ZWZiXHU0ZWYwXHU0ZWYzXHU0ZWZkXHU0ZjAxXHU0ZjBiXHU1MTQ5XHU1MTQ3XHU1MTQ2XHU1MTQ4XHU1MTY4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTY1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjVdW3NdLmNoYXJDb2RlQXQoMCkm'@; put 'Jih5W2NbMTY1XVtzXV09NDIyNDArcyxoWzQyMjQwK3NdPWNbMTY1XVtzXSk7Zm9yKGNbMTY2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MTcxXHU1MThkXHU1MWIwXHU1MjE3XHU1MjExXHU1MjEyXHU1MjBlXHU1MjE2XHU1MmEz'@; put 'XHU1MzA4XHU1MzIxXHU1MzIwXHU1MzcwXHU1MzcxXHU1NDA5XHU1NDBmXHU1NDBjXHU1NDBhXHU1NDEwXHU1NDAxXHU1NDBiXHU1NDA0XHU1NDExXHU1NDBkXHU1NDA4XHU1NDAzXHU1NDBlXHU1NDA2XHU1NDEyXHU1NmUwXHU1NmRlXHU1NmRkXHU1NzMzXHU1NzMwXHU1NzI4XHU1NzJkXHU1'@; put 'NzJjXHU1NzJmXHU1NzI5XHU1OTE5XHU1OTFhXHU1OTM3XHU1OTM4XHU1OTg0XHU1OTc4XHU1OTgzXHU1OTdkXHU1OTc5XHU1OTgyXHU1OTgxXHU1YjU3XHU1YjU4XHU1Yjg3XHU1Yjg4XHU1Yjg1XHU1Yjg5XHU1YmZhXHU1YzE2XHU1Yzc5XHU1ZGRlXHU1ZTA2XHU1ZTc2XHU1ZTc0XHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZjBmXHU1ZjFiXHU1ZmQ5XHU1ZmQ2XHU2MjBlXHU2MjBjXHU2MjBkXHU2MjEwXHU2MjYzXHU2MjViXHU2MjU4XHU2NTM2XHU2NWU5XHU2NWU4XHU2NWVjXHU2NWVkXHU2NmYyXHU2NmYzXHU2NzA5XHU2NzNkXHU2NzM0XHU2NzMx'@; put 'XHU2NzM1XHU2YjIxXHU2YjY0XHU2YjdiXHU2YzE2XHU2YzVkXHU2YzU3XHU2YzU5XHU2YzVmXHU2YzYwXHU2YzUwXHU2YzU1XHU2YzYxXHU2YzViXHU2YzRkXHU2YzRlXHU3MDcwXHU3MjVmXHU3MjVkXHU3NjdlXHU3YWY5XHU3YzczXHU3Y2Y4XHU3ZjM2XHU3ZjhhXHU3ZmJkXHU4MDAxXHU4'@; put 'MDAzXHU4MDBjXHU4MDEyXHU4MDMzXHU4MDdmXHU4MDg5XHU4MDhiXHU4MDhjXHU4MWUzXHU4MWVhXHU4MWYzXHU4MWZjXHU4MjBjXHU4MjFiXHU4MjFmXHU4MjZlXHU4MjcyXHU4MjdlXHU4NjZiXHU4ODQwXHU4ODRjXHU4ODYzXHU4OTdmXHU5NjIxXHU0ZTMyXHU0ZWE4XHU0ZjRkXHU0ZjRm'@; put 'XHU0ZjQ3XHU0ZjU3XHU0ZjVlXHU0ZjM0XHU0ZjViXHU0ZjU1XHU0ZjMwXHU0ZjUwXHU0ZjUxXHU0ZjNkXHU0ZjNhXHU0ZjM4XHU0ZjQzXHU0ZjU0XHU0ZjNjXHU0ZjQ2XHU0ZjYzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTY2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjZdW3NdLmNo'@; put 'YXJDb2RlQXQoMCkmJih5W2NbMTY2XVtzXV09NDI0OTYrcyxoWzQyNDk2K3NdPWNbMTY2XVtzXSk7Zm9yKGNbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjVjXHU0ZjYwXHU0ZjJmXHU0ZjRlXHU0ZjM2XHU0ZjU5XHU0ZjVk'@; put 'XHU0ZjQ4XHU0ZjVhXHU1MTRjXHU1MTRiXHU1MTRkXHU1MTc1XHU1MWI2XHU1MWI3XHU1MjI1XHU1MjI0XHU1MjI5XHU1MjJhXHU1MjI4XHU1MmFiXHU1MmE5XHU1MmFhXHU1MmFjXHU1MzIzXHU1MzczXHU1Mzc1XHU1NDFkXHU1NDJkXHU1NDFlXHU1NDNlXHU1NDI2XHU1NDRlXHU1NDI3XHU1'@; put 'NDQ2XHU1NDQzXHU1NDMzXHU1NDQ4XHU1NDQyXHU1NDFiXHU1NDI5XHU1NDRhXHU1NDM5XHU1NDNiXHU1NDM4XHU1NDJlXHU1NDM1XHU1NDM2XHU1NDIwXHU1NDNjXHU1NDQwXHU1NDMxXHU1NDJiXHU1NDFmXHU1NDJjXHU1NmVhXHU1NmYwXHU1NmU0XHU1NmViXHU1NzRhXHU1NzUxXHU1NzQw'@; put 'XHU1NzRkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzQ3XHU1NzRlXHU1NzNlXHU1NzUwXHU1NzRmXHU1NzNiXHU1OGVmXHU1OTNlXHU1OTlkXHU1OTkyXHU1OWE4XHU1OTllXHU1OWEzXHU1OTk5XHU1OTk2XHU1OThkXHU1OWE0XHU1OTkzXHU1OThhXHU1OWE1'@; put 'XHU1YjVkXHU1YjVjXHU1YjVhXHU1YjViXHU1YjhjXHU1YjhiXHU1YjhmXHU1YzJjXHU1YzQwXHU1YzQxXHU1YzNmXHU1YzNlXHU1YzkwXHU1YzkxXHU1Yzk0XHU1YzhjXHU1ZGViXHU1ZTBjXHU1ZThmXHU1ZTg3XHU1ZThhXHU1ZWY3XHU1ZjA0XHU1ZjFmXHU1ZjY0XHU1ZjYyXHU1Zjc3XHU1'@; put 'Zjc5XHU1ZmQ4XHU1ZmNjXHU1ZmQ3XHU1ZmNkXHU1ZmYxXHU1ZmViXHU1ZmY4XHU1ZmVhXHU2MjEyXHU2MjExXHU2Mjg0XHU2Mjk3XHU2Mjk2XHU2MjgwXHU2Mjc2XHU2Mjg5XHU2MjZkXHU2MjhhXHU2MjdjXHU2MjdlXHU2Mjc5XHU2MjczXHU2MjkyXHU2MjZmXHU2Mjk4XHU2MjZlXHU2Mjk1'@; put 'XHU2MjkzXHU2MjkxXHU2Mjg2XHU2NTM5XHU2NTNiXHU2NTM4XHU2NWYxXHU2NmY0XHU2NzVmXHU2NzRlXHU2NzRmXHU2NzUwXHU2NzUxXHU2NzVjXHU2NzU2XHU2NzVlXHU2NzQ5XHU2NzQ2XHU2NzYwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTY3XS5sZW5ndGg7KytzKTY1NTMzIT09'@; put 'Y1sxNjddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTY3XVtzXV09NDI3NTIrcyxoWzQyNzUyK3NdPWNbMTY3XVtzXSk7Zm9yKGNbMTY4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzUzXHU2NzU3XHU2YjY1XHU2YmNmXHU2YzQy'@; put 'XHU2YzVlXHU2Yzk5XHU2YzgxXHU2Yzg4XHU2Yzg5XHU2Yzg1XHU2YzliXHU2YzZhXHU2YzdhXHU2YzkwXHU2YzcwXHU2YzhjXHU2YzY4XHU2Yzk2XHU2YzkyXHU2YzdkXHU2YzgzXHU2YzcyXHU2YzdlXHU2Yzc0XHU2Yzg2XHU2Yzc2XHU2YzhkXHU2Yzk0XHU2Yzk4XHU2YzgyXHU3MDc2XHU3'@; put 'MDdjXHU3MDdkXHU3MDc4XHU3MjYyXHU3MjYxXHU3MjYwXHU3MmM0XHU3MmMyXHU3Mzk2XHU3NTJjXHU3NTJiXHU3NTM3XHU3NTM4XHU3NjgyXHU3NmVmXHU3N2UzXHU3OWMxXHU3OWMwXHU3OWJmXHU3YTc2XHU3Y2ZiXHU3ZjU1XHU4MDk2XHU4MDkzXHU4MDlkXHU4MDk4XHU4MDliXHU4MDlh'@; put 'XHU4MGIyXHU4MjZmXHU4MjkyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhiXHU4MjhkXHU4OThiXHU4OWQyXHU4YTAwXHU4YzM3XHU4YzQ2XHU4YzU1XHU4YzlkXHU4ZDY0XHU4ZDcwXHU4ZGIzXHU4ZWFiXHU4ZWNhXHU4ZjliXHU4ZmIwXHU4ZmMyXHU4ZmM2'@; put 'XHU4ZmM1XHU4ZmM0XHU1ZGUxXHU5MDkxXHU5MGEyXHU5MGFhXHU5MGE2XHU5MGEzXHU5MTQ5XHU5MWM2XHU5MWNjXHU5NjMyXHU5NjJlXHU5NjMxXHU5NjJhXHU5NjJjXHU0ZTI2XHU0ZTU2XHU0ZTczXHU0ZThiXHU0ZTliXHU0ZTllXHU0ZWFiXHU0ZWFjXHU0ZjZmXHU0ZjlkXHU0ZjhkXHU0'@; put 'ZjczXHU0ZjdmXHU0ZjZjXHU0ZjliXHU0ZjhiXHU0Zjg2XHU0ZjgzXHU0ZjcwXHU0Zjc1XHU0Zjg4XHU0ZjY5XHU0ZjdiXHU0Zjk2XHU0ZjdlXHU0ZjhmXHU0ZjkxXHU0ZjdhXHU1MTU0XHU1MTUyXHU1MTU1XHU1MTY5XHU1MTc3XHU1MTc2XHU1MTc4XHU1MWJkXHU1MWZkXHU1MjNiXHU1MjM4'@; put 'XHU1MjM3XHU1MjNhXHU1MjMwXHU1MjJlXHU1MjM2XHU1MjQxXHU1MmJlXHU1MmJiXHU1MzUyXHU1MzU0XHU1MzUzXHU1MzUxXHU1MzY2XHU1Mzc3XHU1Mzc4XHU1Mzc5XHU1M2Q2XHU1M2Q0XHU1M2Q3XHU1NDczXHU1NDc1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTY4XS5sZW5ndGg7'@; put 'KytzKTY1NTMzIT09Y1sxNjhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTY4XVtzXV09NDMwMDgrcyxoWzQzMDA4K3NdPWNbMTY4XVtzXSk7Zm9yKGNbMTY5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NDk2XHU1NDc4XHU1NDk1'@; put 'XHU1NDgwXHU1NDdiXHU1NDc3XHU1NDg0XHU1NDkyXHU1NDg2XHU1NDdjXHU1NDkwXHU1NDcxXHU1NDc2XHU1NDhjXHU1NDlhXHU1NDYyXHU1NDY4XHU1NDhiXHU1NDdkXHU1NDhlXHU1NmZhXHU1NzgzXHU1Nzc3XHU1NzZhXHU1NzY5XHU1NzYxXHU1NzY2XHU1NzY0XHU1NzdjXHU1OTFjXHU1'@; put 'OTQ5XHU1OTQ3XHU1OTQ4XHU1OTQ0XHU1OTU0XHU1OWJlXHU1OWJiXHU1OWQ0XHU1OWI5XHU1OWFlXHU1OWQxXHU1OWM2XHU1OWQwXHU1OWNkXHU1OWNiXHU1OWQzXHU1OWNhXHU1OWFmXHU1OWIzXHU1OWQyXHU1OWM1XHU1YjVmXHU1YjY0XHU1YjYzXHU1Yjk3XHU1YjlhXHU1Yjk4XHU1Yjlj'@; put 'XHU1Yjk5XHU1YjliXHU1YzFhXHU1YzQ4XHU1YzQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzQ2XHU1Y2I3XHU1Y2ExXHU1Y2I4XHU1Y2E5XHU1Y2FiXHU1Y2IxXHU1Y2IzXHU1ZTE4XHU1ZTFhXHU1ZTE2XHU1ZTE1XHU1ZTFiXHU1ZTExXHU1ZTc4XHU1ZTlh'@; put 'XHU1ZTk3XHU1ZTljXHU1ZTk1XHU1ZTk2XHU1ZWY2XHU1ZjI2XHU1ZjI3XHU1ZjI5XHU1ZjgwXHU1ZjgxXHU1ZjdmXHU1ZjdjXHU1ZmRkXHU1ZmUwXHU1ZmZkXHU1ZmY1XHU1ZmZmXHU2MDBmXHU2MDE0XHU2MDJmXHU2MDM1XHU2MDE2XHU2MDJhXHU2MDE1XHU2MDIxXHU2MDI3XHU2MDI5XHU2'@; put 'MDJiXHU2MDFiXHU2MjE2XHU2MjE1XHU2MjNmXHU2MjNlXHU2MjQwXHU2MjdmXHU2MmM5XHU2MmNjXHU2MmM0XHU2MmJmXHU2MmMyXHU2MmI5XHU2MmQyXHU2MmRiXHU2MmFiXHU2MmQzXHU2MmQ0XHU2MmNiXHU2MmM4XHU2MmE4XHU2MmJkXHU2MmJjXHU2MmQwXHU2MmQ5XHU2MmM3XHU2MmNk'@; put 'XHU2MmI1XHU2MmRhXHU2MmIxXHU2MmQ4XHU2MmQ2XHU2MmQ3XHU2MmM2XHU2MmFjXHU2MmNlXHU2NTNlXHU2NWE3XHU2NWJjXHU2NWZhXHU2NjE0XHU2NjEzXHU2NjBjXHU2NjA2XHU2NjAyXHU2NjBlXHU2NjAwXHU2NjBmXHU2NjE1XHU2NjBhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNb'@; put 'MTY5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNjldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTY5XVtzXV09NDMyNjQrcyxoWzQzMjY0K3NdPWNbMTY5XVtzXSk7Zm9yKGNbMTcwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NjA3'@; put 'XHU2NzBkXHU2NzBiXHU2NzZkXHU2NzhiXHU2Nzk1XHU2NzcxXHU2NzljXHU2NzczXHU2Nzc3XHU2Nzg3XHU2NzlkXHU2Nzk3XHU2NzZmXHU2NzcwXHU2NzdmXHU2Nzg5XHU2NzdlXHU2NzkwXHU2Nzc1XHU2NzlhXHU2NzkzXHU2NzdjXHU2NzZhXHU2NzcyXHU2YjIzXHU2YjY2XHU2YjY3XHU2'@; put 'YjdmXHU2YzEzXHU2YzFiXHU2Y2UzXHU2Y2U4XHU2Y2YzXHU2Y2IxXHU2Y2NjXHU2Y2U1XHU2Y2IzXHU2Y2JkXHU2Y2JlXHU2Y2JjXHU2Y2UyXHU2Y2FiXHU2Y2Q1XHU2Y2QzXHU2Y2I4XHU2Y2M0XHU2Y2I5XHU2Y2MxXHU2Y2FlXHU2Y2Q3XHU2Y2M1XHU2Y2YxXHU2Y2JmXHU2Y2JiXHU2Y2Ux'@; put 'XHU2Y2RiXHU2Y2NhXHU2Y2FjXHU2Y2VmXHU2Y2RjXHU2Y2Q2XHU2Y2UwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MDk1XHU3MDhlXHU3MDkyXHU3MDhhXHU3MDk5XHU3MjJjXHU3MjJkXHU3MjM4XHU3MjQ4XHU3MjY3XHU3MjY5XHU3MmMwXHU3MmNlXHU3MmQ5'@; put 'XHU3MmQ3XHU3MmQwXHU3M2E5XHU3M2E4XHU3MzlmXHU3M2FiXHU3M2E1XHU3NTNkXHU3NTlkXHU3NTk5XHU3NTlhXHU3Njg0XHU3NmMyXHU3NmYyXHU3NmY0XHU3N2U1XHU3N2ZkXHU3OTNlXHU3OTQwXHU3OTQxXHU3OWM5XHU3OWM4XHU3YTdhXHU3YTc5XHU3YWZhXHU3Y2ZlXHU3ZjU0XHU3'@; put 'ZjhjXHU3ZjhiXHU4MDA1XHU4MGJhXHU4MGE1XHU4MGEyXHU4MGIxXHU4MGExXHU4MGFiXHU4MGE5XHU4MGI0XHU4MGFhXHU4MGFmXHU4MWU1XHU4MWZlXHU4MjBkXHU4MmIzXHU4MjlkXHU4Mjk5XHU4MmFkXHU4MmJkXHU4MjlmXHU4MmI5XHU4MmIxXHU4MmFjXHU4MmE1XHU4MmFmXHU4MmI4'@; put 'XHU4MmEzXHU4MmIwXHU4MmJlXHU4MmI3XHU4NjRlXHU4NjcxXHU1MjFkXHU4ODY4XHU4ZWNiXHU4ZmNlXHU4ZmQ0XHU4ZmQxXHU5MGI1XHU5MGI4XHU5MGIxXHU5MGI2XHU5MWM3XHU5MWQxXHU5NTc3XHU5NTgwXHU5NjFjXHU5NjQwXHU5NjNmXHU5NjNiXHU5NjQ0XHVmZmZkIi5zcGxpdCgi'@; put 'Iikscz0wO3MhPWNbMTcwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTcwXVtzXV09NDM1MjArcyxoWzQzNTIwK3NdPWNbMTcwXVtzXSk7Zm9yKGNbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHU5NjQyXHU5NmI5XHU5NmU4XHU5NzUyXHU5NzVlXHU0ZTlmXHU0ZWFkXHU0ZWFlXHU0ZmUxXHU0ZmI1XHU0ZmFmXHU0ZmJmXHU0ZmUwXHU0ZmQxXHU0ZmNmXHU0ZmRkXHU0ZmMzXHU0ZmI2XHU0ZmQ4XHU0ZmRmXHU0ZmNhXHU0ZmQ3XHU0ZmFlXHU0ZmQwXHU0ZmM0XHU0ZmMyXHU0'@; put 'ZmRhXHU0ZmNlXHU0ZmRlXHU0ZmI3XHU1MTU3XHU1MTkyXHU1MTkxXHU1MWEwXHU1MjRlXHU1MjQzXHU1MjRhXHU1MjRkXHU1MjRjXHU1MjRiXHU1MjQ3XHU1MmM3XHU1MmM5XHU1MmMzXHU1MmMxXHU1MzBkXHU1MzU3XHU1MzdiXHU1MzlhXHU1M2RiXHU1NGFjXHU1NGMwXHU1NGE4XHU1NGNl'@; put 'XHU1NGM5XHU1NGI4XHU1NGE2XHU1NGIzXHU1NGM3XHU1NGMyXHU1NGJkXHU1NGFhXHU1NGMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGM0XHU1NGM4XHU1NGFmXHU1NGFiXHU1NGIxXHU1NGJiXHU1NGE5XHU1NGE3XHU1NGJmXHU1NmZmXHU1NzgyXHU1Nzhi'@; put 'XHU1N2EwXHU1N2EzXHU1N2EyXHU1N2NlXHU1N2FlXHU1NzkzXHU1OTU1XHU1OTUxXHU1OTRmXHU1OTRlXHU1OTUwXHU1OWRjXHU1OWQ4XHU1OWZmXHU1OWUzXHU1OWU4XHU1YTAzXHU1OWU1XHU1OWVhXHU1OWRhXHU1OWU2XHU1YTAxXHU1OWZiXHU1YjY5XHU1YmEzXHU1YmE2XHU1YmE0XHU1'@; put 'YmEyXHU1YmE1XHU1YzAxXHU1YzRlXHU1YzRmXHU1YzRkXHU1YzRiXHU1Y2Q5XHU1Y2QyXHU1ZGY3XHU1ZTFkXHU1ZTI1XHU1ZTFmXHU1ZTdkXHU1ZWEwXHU1ZWE2XHU1ZWZhXHU1ZjA4XHU1ZjJkXHU1ZjY1XHU1Zjg4XHU1Zjg1XHU1ZjhhXHU1ZjhiXHU1Zjg3XHU1ZjhjXHU1Zjg5XHU2MDEy'@; put 'XHU2MDFkXHU2MDIwXHU2MDI1XHU2MDBlXHU2MDI4XHU2MDRkXHU2MDcwXHU2MDY4XHU2MDYyXHU2MDQ2XHU2MDQzXHU2MDZjXHU2MDZiXHU2MDZhXHU2MDY0XHU2MjQxXHU2MmRjXHU2MzE2XHU2MzA5XHU2MmZjXHU2MmVkXHU2MzAxXHU2MmVlXHU2MmZkXHU2MzA3XHU2MmYxXHU2MmY3XHVm'@; put 'ZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTcxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTcxXVtzXV09NDM3NzYrcyxoWzQzNzc2K3NdPWNbMTcxXVtzXSk7Zm9yKGNbMTcyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHU2MmVmXHU2MmVjXHU2MmZlXHU2MmY0XHU2MzExXHU2MzAyXHU2NTNmXHU2NTQ1XHU2NWFiXHU2NWJkXHU2NWUyXHU2NjI1XHU2NjJkXHU2NjIwXHU2NjI3XHU2NjJmXHU2NjFmXHU2NjI4XHU2NjMxXHU2NjI0XHU2NmY3XHU2N2ZmXHU2N2QzXHU2N2YxXHU2'@; put 'N2Q0XHU2N2QwXHU2N2VjXHU2N2I2XHU2N2FmXHU2N2Y1XHU2N2U5XHU2N2VmXHU2N2M0XHU2N2QxXHU2N2I0XHU2N2RhXHU2N2U1XHU2N2I4XHU2N2NmXHU2N2RlXHU2N2YzXHU2N2IwXHU2N2Q5XHU2N2UyXHU2N2RkXHU2N2QyXHU2YjZhXHU2YjgzXHU2Yjg2XHU2YmI1XHU2YmQyXHU2YmQ3'@; put 'XHU2YzFmXHU2Y2M5XHU2ZDBiXHU2ZDMyXHU2ZDJhXHU2ZDQxXHU2ZDI1XHU2ZDBjXHU2ZDMxXHU2ZDFlXHU2ZDE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDNiXHU2ZDNkXHU2ZDNlXHU2ZDM2XHU2ZDFiXHU2Y2Y1XHU2ZDM5XHU2ZDI3XHU2ZDM4XHU2ZDI5'@; put 'XHU2ZDJlXHU2ZDM1XHU2ZDBlXHU2ZDJiXHU3MGFiXHU3MGJhXHU3MGIzXHU3MGFjXHU3MGFmXHU3MGFkXHU3MGI4XHU3MGFlXHU3MGE0XHU3MjMwXHU3MjcyXHU3MjZmXHU3Mjc0XHU3MmU5XHU3MmUwXHU3MmUxXHU3M2I3XHU3M2NhXHU3M2JiXHU3M2IyXHU3M2NkXHU3M2MwXHU3M2IzXHU3'@; put 'NTFhXHU3NTJkXHU3NTRmXHU3NTRjXHU3NTRlXHU3NTRiXHU3NWFiXHU3NWE0XHU3NWE1XHU3NWEyXHU3NWEzXHU3Njc4XHU3Njg2XHU3Njg3XHU3Njg4XHU3NmM4XHU3NmM2XHU3NmMzXHU3NmM1XHU3NzAxXHU3NmY5XHU3NmY4XHU3NzA5XHU3NzBiXHU3NmZlXHU3NmZjXHU3NzA3XHU3N2Rj'@; put 'XHU3ODAyXHU3ODE0XHU3ODBjXHU3ODBkXHU3OTQ2XHU3OTQ5XHU3OTQ4XHU3OTQ3XHU3OWI5XHU3OWJhXHU3OWQxXHU3OWQyXHU3OWNiXHU3YTdmXHU3YTgxXHU3YWZmXHU3YWZkXHU3YzdkXHU3ZDAyXHU3ZDA1XHU3ZDAwXHU3ZDA5XHU3ZDA3XHU3ZDA0XHU3ZDA2XHU3ZjM4XHU3ZjhlXHU3'@; put 'ZmJmXHU4MDA0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTcyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTcyXVtzXV09NDQwMzIrcyxoWzQ0MDMyK3NdPWNbMTcyXVtzXSk7Zm9yKGNbMTczXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDEwXHU4MDBkXHU4MDExXHU4MDM2XHU4MGQ2XHU4MGU1XHU4MGRhXHU4MGMzXHU4MGM0XHU4MGNjXHU4MGUxXHU4MGRiXHU4MGNlXHU4MGRlXHU4MGU0XHU4MGRkXHU4MWY0XHU4MjIyXHU4MmU3XHU4MzAzXHU4MzA1XHU4MmUzXHU4'@; put 'MmRiXHU4MmU2XHU4MzA0XHU4MmU1XHU4MzAyXHU4MzA5XHU4MmQyXHU4MmQ3XHU4MmYxXHU4MzAxXHU4MmRjXHU4MmQ0XHU4MmQxXHU4MmRlXHU4MmQzXHU4MmRmXHU4MmVmXHU4MzA2XHU4NjUwXHU4Njc5XHU4NjdiXHU4NjdhXHU4ODRkXHU4ODZiXHU4OTgxXHU4OWQ0XHU4YTA4XHU4YTAy'@; put 'XHU4YTAzXHU4YzllXHU4Y2EwXHU4ZDc0XHU4ZDczXHU4ZGI0XHU4ZWNkXHU4ZWNjXHU4ZmYwXHU4ZmU2XHU4ZmUyXHU4ZmVhXHU4ZmU1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZmVkXHU4ZmViXHU4ZmU0XHU4ZmU4XHU5MGNhXHU5MGNlXHU5MGMxXHU5MGMz'@; put 'XHU5MTRiXHU5MTRhXHU5MWNkXHU5NTgyXHU5NjUwXHU5NjRiXHU5NjRjXHU5NjRkXHU5NzYyXHU5NzY5XHU5N2NiXHU5N2VkXHU5N2YzXHU5ODAxXHU5OGE4XHU5OGRiXHU5OGRmXHU5OTk2XHU5OTk5XHU0ZTU4XHU0ZWIzXHU1MDBjXHU1MDBkXHU1MDIzXHU0ZmVmXHU1MDI2XHU1MDI1XHU0'@; put 'ZmY4XHU1MDI5XHU1MDE2XHU1MDA2XHU1MDNjXHU1MDFmXHU1MDFhXHU1MDEyXHU1MDExXHU0ZmZhXHU1MDAwXHU1MDE0XHU1MDI4XHU0ZmYxXHU1MDIxXHU1MDBiXHU1MDE5XHU1MDE4XHU0ZmYzXHU0ZmVlXHU1MDJkXHU1MDJhXHU0ZmZlXHU1MDJiXHU1MDA5XHU1MTdjXHU1MWE0XHU1MWE1'@; put 'XHU1MWEyXHU1MWNkXHU1MWNjXHU1MWM2XHU1MWNiXHU1MjU2XHU1MjVjXHU1MjU0XHU1MjViXHU1MjVkXHU1MzJhXHU1MzdmXHU1MzlmXHU1MzlkXHU1M2RmXHU1NGU4XHU1NTEwXHU1NTAxXHU1NTM3XHU1NGZjXHU1NGU1XHU1NGYyXHU1NTA2XHU1NGZhXHU1NTE0XHU1NGU5XHU1NGVkXHU1'@; put 'NGUxXHU1NTA5XHU1NGVlXHU1NGVhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTczXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTczXVtzXV09NDQyODgrcyxoWzQ0Mjg4K3NdPWNbMTczXVtzXSk7Zm9yKGNbMTc0XT0iXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGU2XHU1NTI3XHU1NTA3XHU1NGZkXHU1NTBmXHU1NzAzXHU1NzA0XHU1N2MyXHU1N2Q0XHU1N2NiXHU1N2MzXHU1ODA5XHU1OTBmXHU1OTU3XHU1OTU4XHU1OTVhXHU1YTExXHU1YTE4XHU1YTFjXHU1YTFmXHU1'@; put 'YTFiXHU1YTEzXHU1OWVjXHU1YTIwXHU1YTIzXHU1YTI5XHU1YTI1XHU1YTBjXHU1YTA5XHU1YjZiXHU1YzU4XHU1YmIwXHU1YmIzXHU1YmI2XHU1YmI0XHU1YmFlXHU1YmI1XHU1YmI5XHU1YmI4XHU1YzA0XHU1YzUxXHU1YzU1XHU1YzUwXHU1Y2VkXHU1Y2ZkXHU1Y2ZiXHU1Y2VhXHU1Y2U4'@; put 'XHU1Y2YwXHU1Y2Y2XHU1ZDAxXHU1Y2Y0XHU1ZGVlXHU1ZTJkXHU1ZTJiXHU1ZWFiXHU1ZWFkXHU1ZWE3XHU1ZjMxXHU1ZjkyXHU1ZjkxXHU1ZjkwXHU2MDU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDYzXHU2MDY1XHU2MDUwXHU2MDU1XHU2MDZkXHU2MDY5'@; put 'XHU2MDZmXHU2MDg0XHU2MDlmXHU2MDlhXHU2MDhkXHU2MDk0XHU2MDhjXHU2MDg1XHU2MDk2XHU2MjQ3XHU2MmYzXHU2MzA4XHU2MmZmXHU2MzRlXHU2MzNlXHU2MzJmXHU2MzU1XHU2MzQyXHU2MzQ2XHU2MzRmXHU2MzQ5XHU2MzNhXHU2MzUwXHU2MzNkXHU2MzJhXHU2MzJiXHU2MzI4XHU2'@; put 'MzRkXHU2MzRjXHU2NTQ4XHU2NTQ5XHU2NTk5XHU2NWMxXHU2NWM1XHU2NjQyXHU2NjQ5XHU2NjRmXHU2NjQzXHU2NjUyXHU2NjRjXHU2NjQ1XHU2NjQxXHU2NmY4XHU2NzE0XHU2NzE1XHU2NzE3XHU2ODIxXHU2ODM4XHU2ODQ4XHU2ODQ2XHU2ODUzXHU2ODM5XHU2ODQyXHU2ODU0XHU2ODI5'@; put 'XHU2OGIzXHU2ODE3XHU2ODRjXHU2ODUxXHU2ODNkXHU2N2Y0XHU2ODUwXHU2ODQwXHU2ODNjXHU2ODQzXHU2ODJhXHU2ODQ1XHU2ODEzXHU2ODE4XHU2ODQxXHU2YjhhXHU2Yjg5XHU2YmI3XHU2YzIzXHU2YzI3XHU2YzI4XHU2YzI2XHU2YzI0XHU2Y2YwXHU2ZDZhXHU2ZDk1XHU2ZDg4XHU2'@; put 'ZDg3XHU2ZDY2XHU2ZDc4XHU2ZDc3XHU2ZDU5XHU2ZDkzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc0XVtzXV09NDQ1NDQrcyxoWzQ0NTQ0K3NdPWNbMTc0XVtzXSk7Zm9yKGNbMTc1XT0i'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDZjXHU2ZDg5XHU2ZDZlXHU2ZDVhXHU2ZDc0XHU2ZDY5XHU2ZDhjXHU2ZDhhXHU2ZDc5XHU2ZDg1XHU2ZDY1XHU2ZDk0XHU3MGNhXHU3MGQ4XHU3MGU0XHU3MGQ5XHU3MGM4XHU3MGNmXHU3'@; put 'MjM5XHU3Mjc5XHU3MmZjXHU3MmY5XHU3MmZkXHU3MmY4XHU3MmY3XHU3Mzg2XHU3M2VkXHU3NDA5XHU3M2VlXHU3M2UwXHU3M2VhXHU3M2RlXHU3NTU0XHU3NTVkXHU3NTVjXHU3NTVhXHU3NTU5XHU3NWJlXHU3NWM1XHU3NWM3XHU3NWIyXHU3NWIzXHU3NWJkXHU3NWJjXHU3NWI5XHU3NWMy'@; put 'XHU3NWI4XHU3NjhiXHU3NmIwXHU3NmNhXHU3NmNkXHU3NmNlXHU3NzI5XHU3NzFmXHU3NzIwXHU3NzI4XHU3N2U5XHU3ODMwXHU3ODI3XHU3ODM4XHU3ODFkXHU3ODM0XHU3ODM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ODI1XHU3ODJkXHU3ODIwXHU3ODFm'@; put 'XHU3ODMyXHU3OTU1XHU3OTUwXHU3OTYwXHU3OTVmXHU3OTU2XHU3OTVlXHU3OTVkXHU3OTU3XHU3OTVhXHU3OWU0XHU3OWUzXHU3OWU3XHU3OWRmXHU3OWU2XHU3OWU5XHU3OWQ4XHU3YTg0XHU3YTg4XHU3YWQ5XHU3YjA2XHU3YjExXHU3Yzg5XHU3ZDIxXHU3ZDE3XHU3ZDBiXHU3ZDBhXHU3'@; put 'ZDIwXHU3ZDIyXHU3ZDE0XHU3ZDEwXHU3ZDE1XHU3ZDFhXHU3ZDFjXHU3ZDBkXHU3ZDE5XHU3ZDFiXHU3ZjNhXHU3ZjVmXHU3Zjk0XHU3ZmM1XHU3ZmMxXHU4MDA2XHU4MDE4XHU4MDE1XHU4MDE5XHU4MDE3XHU4MDNkXHU4MDNmXHU4MGYxXHU4MTAyXHU4MGYwXHU4MTA1XHU4MGVkXHU4MGY0'@; put 'XHU4MTA2XHU4MGY4XHU4MGYzXHU4MTA4XHU4MGZkXHU4MTBhXHU4MGZjXHU4MGVmXHU4MWVkXHU4MWVjXHU4MjAwXHU4MjEwXHU4MjJhXHU4MjJiXHU4MjI4XHU4MjJjXHU4MmJiXHU4MzJiXHU4MzUyXHU4MzU0XHU4MzRhXHU4MzM4XHU4MzUwXHU4MzQ5XHU4MzM1XHU4MzM0XHU4MzRmXHU4'@; put 'MzMyXHU4MzM5XHU4MzM2XHU4MzE3XHU4MzQwXHU4MzMxXHU4MzI4XHU4MzQzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc1XVtzXV09NDQ4MDArcyxoWzQ0ODAwK3NdPWNbMTc1XVtzXSk7'@; put 'Zm9yKGNbMTc2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NjU0XHU4NjhhXHU4NmFhXHU4NjkzXHU4NmE0XHU4NmE5XHU4NjhjXHU4NmEzXHU4NjljXHU4ODcwXHU4ODc3XHU4ODgxXHU4ODgyXHU4ODdkXHU4ODc5XHU4YTE4XHU4'@; put 'YTEwXHU4YTBlXHU4YTBjXHU4YTE1XHU4YTBhXHU4YTE3XHU4YTEzXHU4YTE2XHU4YTBmXHU4YTExXHU4YzQ4XHU4YzdhXHU4Yzc5XHU4Y2ExXHU4Y2EyXHU4ZDc3XHU4ZWFjXHU4ZWQyXHU4ZWQ0XHU4ZWNmXHU4ZmIxXHU5MDAxXHU5MDA2XHU4ZmY3XHU5MDAwXHU4ZmZhXHU4ZmY0XHU5MDAz'@; put 'XHU4ZmZkXHU5MDA1XHU4ZmY4XHU5MDk1XHU5MGUxXHU5MGRkXHU5MGUyXHU5MTUyXHU5MTRkXHU5MTRjXHU5MWQ4XHU5MWRkXHU5MWQ3XHU5MWRjXHU5MWQ5XHU5NTgzXHU5NjYyXHU5NjYzXHU5NjYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjViXHU5NjVk'@; put 'XHU5NjY0XHU5NjU4XHU5NjVlXHU5NmJiXHU5OGUyXHU5OWFjXHU5YWE4XHU5YWQ4XHU5YjI1XHU5YjMyXHU5YjNjXHU0ZTdlXHU1MDdhXHU1MDdkXHU1MDVjXHU1MDQ3XHU1MDQzXHU1MDRjXHU1MDVhXHU1MDQ5XHU1MDY1XHU1MDc2XHU1MDRlXHU1MDU1XHU1MDc1XHU1MDc0XHU1MDc3XHU1'@; put 'MDRmXHU1MDBmXHU1MDZmXHU1MDZkXHU1MTVjXHU1MTk1XHU1MWYwXHU1MjZhXHU1MjZmXHU1MmQyXHU1MmQ5XHU1MmQ4XHU1MmQ1XHU1MzEwXHU1MzBmXHU1MzE5XHU1MzNmXHU1MzQwXHU1MzNlXHU1M2MzXHU2NmZjXHU1NTQ2XHU1NTZhXHU1NTY2XHU1NTQ0XHU1NTVlXHU1NTYxXHU1NTQz'@; put 'XHU1NTRhXHU1NTMxXHU1NTU2XHU1NTRmXHU1NTU1XHU1NTJmXHU1NTY0XHU1NTM4XHU1NTJlXHU1NTVjXHU1NTJjXHU1NTYzXHU1NTMzXHU1NTQxXHU1NTU3XHU1NzA4XHU1NzBiXHU1NzA5XHU1N2RmXHU1ODA1XHU1ODBhXHU1ODA2XHU1N2UwXHU1N2U0XHU1N2ZhXHU1ODAyXHU1ODM1XHU1'@; put 'N2Y3XHU1N2Y5XHU1OTIwXHU1OTYyXHU1YTM2XHU1YTQxXHU1YTQ5XHU1YTY2XHU1YTZhXHU1YTQwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc2XVtzXV09NDUwNTYrcyxoWzQ1MDU2K3Nd'@; put 'PWNbMTc2XVtzXSk7Zm9yKGNbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTNjXHU1YTYyXHU1YTVhXHU1YTQ2XHU1YTRhXHU1YjcwXHU1YmM3XHU1YmM1XHU1YmM0XHU1YmMyXHU1YmJmXHU1YmM2XHU1YzA5XHU1YzA4XHU1'@; put 'YzA3XHU1YzYwXHU1YzVjXHU1YzVkXHU1ZDA3XHU1ZDA2XHU1ZDBlXHU1ZDFiXHU1ZDE2XHU1ZDIyXHU1ZDExXHU1ZDI5XHU1ZDE0XHU1ZDE5XHU1ZDI0XHU1ZDI3XHU1ZDE3XHU1ZGUyXHU1ZTM4XHU1ZTM2XHU1ZTMzXHU1ZTM3XHU1ZWI3XHU1ZWI4XHU1ZWI2XHU1ZWI1XHU1ZWJlXHU1ZjM1'@; put 'XHU1ZjM3XHU1ZjU3XHU1ZjZjXHU1ZjY5XHU1ZjZiXHU1Zjk3XHU1Zjk5XHU1ZjllXHU1Zjk4XHU1ZmExXHU1ZmEwXHU1ZjljXHU2MDdmXHU2MGEzXHU2MDg5XHU2MGEwXHU2MGE4XHU2MGNiXHU2MGI0XHU2MGU2XHU2MGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHU2MGM1XHU2MGJiXHU2MGI1XHU2MGRjXHU2MGJjXHU2MGQ4XHU2MGQ1XHU2MGM2XHU2MGRmXHU2MGI4XHU2MGRhXHU2MGM3XHU2MjFhXHU2MjFiXHU2MjQ4XHU2M2EwXHU2M2E3XHU2MzcyXHU2Mzk2XHU2M2EyXHU2M2E1XHU2Mzc3XHU2MzY3XHU2Mzk4XHU2M2FhXHU2MzcxXHU2M2E5XHU2'@; put 'Mzg5XHU2MzgzXHU2MzliXHU2MzZiXHU2M2E4XHU2Mzg0XHU2Mzg4XHU2Mzk5XHU2M2ExXHU2M2FjXHU2MzkyXHU2MzhmXHU2MzgwXHU2MzdiXHU2MzY5XHU2MzY4XHU2MzdhXHU2NTVkXHU2NTU2XHU2NTUxXHU2NTU5XHU2NTU3XHU1NTVmXHU2NTRmXHU2NTU4XHU2NTU1XHU2NTU0XHU2NTlj'@; put 'XHU2NTliXHU2NWFjXHU2NWNmXHU2NWNiXHU2NWNjXHU2NWNlXHU2NjVkXHU2NjVhXHU2NjY0XHU2NjY4XHU2NjY2XHU2NjVlXHU2NmY5XHU1MmQ3XHU2NzFiXHU2ODgxXHU2OGFmXHU2OGEyXHU2ODkzXHU2OGI1XHU2ODdmXHU2ODc2XHU2OGIxXHU2OGE3XHU2ODk3XHU2OGIwXHU2ODgzXHU2'@; put 'OGM0XHU2OGFkXHU2ODg2XHU2ODg1XHU2ODk0XHU2ODlkXHU2OGE4XHU2ODlmXHU2OGExXHU2ODgyXHU2YjMyXHU2YmJhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc3XVtzXV09NDUzMTIr'@; put 'cyxoWzQ1MzEyK3NdPWNbMTc3XVtzXSk7Zm9yKGNbMTc4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YmViXHU2YmVjXHU2YzJiXHU2ZDhlXHU2ZGJjXHU2ZGYzXHU2ZGQ5XHU2ZGIyXHU2ZGUxXHU2ZGNjXHU2ZGU0XHU2ZGZiXHU2'@; put 'ZGZhXHU2ZTA1XHU2ZGM3XHU2ZGNiXHU2ZGFmXHU2ZGQxXHU2ZGFlXHU2ZGRlXHU2ZGY5XHU2ZGI4XHU2ZGY3XHU2ZGY1XHU2ZGM1XHU2ZGQyXHU2ZTFhXHU2ZGI1XHU2ZGRhXHU2ZGViXHU2ZGQ4XHU2ZGVhXHU2ZGYxXHU2ZGVlXHU2ZGU4XHU2ZGM2XHU2ZGM0XHU2ZGFhXHU2ZGVjXHU2ZGJm'@; put 'XHU2ZGU2XHU3MGY5XHU3MTA5XHU3MTBhXHU3MGZkXHU3MGVmXHU3MjNkXHU3MjdkXHU3MjgxXHU3MzFjXHU3MzFiXHU3MzE2XHU3MzEzXHU3MzE5XHU3Mzg3XHU3NDA1XHU3NDBhXHU3NDAzXHU3NDA2XHU3M2ZlXHU3NDBkXHU3NGUwXHU3NGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHU3NGY3XHU3NTFjXHU3NTIyXHU3NTY1XHU3NTY2XHU3NTYyXHU3NTcwXHU3NThmXHU3NWQ0XHU3NWQ1XHU3NWI1XHU3NWNhXHU3NWNkXHU3NjhlXHU3NmQ0XHU3NmQyXHU3NmRiXHU3NzM3XHU3NzNlXHU3NzNjXHU3NzM2XHU3NzM4XHU3NzNhXHU3ODZiXHU3ODQzXHU3'@; put 'ODRlXHU3OTY1XHU3OTY4XHU3OTZkXHU3OWZiXHU3YTkyXHU3YTk1XHU3YjIwXHU3YjI4XHU3YjFiXHU3YjJjXHU3YjI2XHU3YjE5XHU3YjFlXHU3YjJlXHU3YzkyXHU3Yzk3XHU3Yzk1XHU3ZDQ2XHU3ZDQzXHU3ZDcxXHU3ZDJlXHU3ZDM5XHU3ZDNjXHU3ZDQwXHU3ZDMwXHU3ZDMzXHU3ZDQ0'@; put 'XHU3ZDJmXHU3ZDQyXHU3ZDMyXHU3ZDMxXHU3ZjNkXHU3ZjllXHU3ZjlhXHU3ZmNjXHU3ZmNlXHU3ZmQyXHU4MDFjXHU4MDRhXHU4MDQ2XHU4MTJmXHU4MTE2XHU4MTIzXHU4MTJiXHU4MTI5XHU4MTMwXHU4MTI0XHU4MjAyXHU4MjM1XHU4MjM3XHU4MjM2XHU4MjM5XHU4MzhlXHU4MzllXHU4'@; put 'Mzk4XHU4Mzc4XHU4M2EyXHU4Mzk2XHU4M2JkXHU4M2FiXHU4MzkyXHU4MzhhXHU4MzkzXHU4Mzg5XHU4M2EwXHU4Mzc3XHU4MzdiXHU4MzdjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTc4'@; put 'XVtzXV09NDU1NjgrcyxoWzQ1NTY4K3NdPWNbMTc4XVtzXSk7Zm9yKGNbMTc5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Mzg2XHU4M2E3XHU4NjU1XHU1ZjZhXHU4NmM3XHU4NmMwXHU4NmI2XHU4NmM0XHU4NmI1XHU4NmM2XHU4'@; put 'NmNiXHU4NmIxXHU4NmFmXHU4NmM5XHU4ODUzXHU4ODllXHU4ODg4XHU4OGFiXHU4ODkyXHU4ODk2XHU4ODhkXHU4ODhiXHU4OTkzXHU4OThmXHU4YTJhXHU4YTFkXHU4YTIzXHU4YTI1XHU4YTMxXHU4YTJkXHU4YTFmXHU4YTFiXHU4YTIyXHU4YzQ5XHU4YzVhXHU4Y2E5XHU4Y2FjXHU4Y2Fi'@; put 'XHU4Y2E4XHU4Y2FhXHU4Y2E3XHU4ZDY3XHU4ZDY2XHU4ZGJlXHU4ZGJhXHU4ZWRiXHU4ZWRmXHU5MDE5XHU5MDBkXHU5MDFhXHU5MDE3XHU5MDIzXHU5MDFmXHU5MDFkXHU5MDEwXHU5MDE1XHU5MDFlXHU5MDIwXHU5MDBmXHU5MDIyXHU5MDE2XHU5MDFiXHU5MDE0XHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGU4XHU5MGVkXHU5MGZkXHU5MTU3XHU5MWNlXHU5MWY1XHU5MWU2XHU5MWUzXHU5MWU3XHU5MWVkXHU5MWU5XHU5NTg5XHU5NjZhXHU5Njc1XHU5NjczXHU5Njc4XHU5NjcwXHU5Njc0XHU5Njc2XHU5Njc3XHU5NjZjXHU5NmMwXHU5NmVhXHU5'@; put 'NmU5XHU3YWUwXHU3YWRmXHU5ODAyXHU5ODAzXHU5YjVhXHU5Y2U1XHU5ZTc1XHU5ZTdmXHU5ZWE1XHU5ZWJiXHU1MGEyXHU1MDhkXHU1MDg1XHU1MDk5XHU1MDkxXHU1MDgwXHU1MDk2XHU1MDk4XHU1MDlhXHU2NzAwXHU1MWYxXHU1MjcyXHU1Mjc0XHU1Mjc1XHU1MjY5XHU1MmRlXHU1MmRk'@; put 'XHU1MmRiXHU1MzVhXHU1M2E1XHU1NTdiXHU1NTgwXHU1NWE3XHU1NTdjXHU1NThhXHU1NTlkXHU1NTk4XHU1NTgyXHU1NTljXHU1NWFhXHU1NTk0XHU1NTg3XHU1NThiXHU1NTgzXHU1NWIzXHU1NWFlXHU1NTlmXHU1NTNlXHU1NWIyXHU1NTlhXHU1NWJiXHU1NWFjXHU1NWIxXHU1NTdlXHU1'@; put 'NTg5XHU1NWFiXHU1NTk5XHU1NzBkXHU1ODJmXHU1ODJhXHU1ODM0XHU1ODI0XHU1ODMwXHU1ODMxXHU1ODIxXHU1ODFkXHU1ODIwXHU1OGY5XHU1OGZhXHU1OTYwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTc5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxNzldW3NdLmNoYXJDb2RlQXQo'@; put 'MCkmJih5W2NbMTc5XVtzXV09NDU4MjQrcyxoWzQ1ODI0K3NdPWNbMTc5XVtzXSk7Zm9yKGNbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTc3XHU1YTlhXHU1YTdmXHU1YTkyXHU1YTliXHU1YWE3XHU1YjczXHU1YjcxXHU1'@; put 'YmQyXHU1YmNjXHU1YmQzXHU1YmQwXHU1YzBhXHU1YzBiXHU1YzMxXHU1ZDRjXHU1ZDUwXHU1ZDM0XHU1ZDQ3XHU1ZGZkXHU1ZTQ1XHU1ZTNkXHU1ZTQwXHU1ZTQzXHU1ZTdlXHU1ZWNhXHU1ZWMxXHU1ZWMyXHU1ZWM0XHU1ZjNjXHU1ZjZkXHU1ZmE5XHU1ZmFhXHU1ZmE4XHU2MGQxXHU2MGUx'@; put 'XHU2MGIyXHU2MGI2XHU2MGUwXHU2MTFjXHU2MTIzXHU2MGZhXHU2MTE1XHU2MGYwXHU2MGZiXHU2MGY0XHU2MTY4XHU2MGYxXHU2MTBlXHU2MGY2XHU2MTA5XHU2MTAwXHU2MTEyXHU2MjFmXHU2MjQ5XHU2M2EzXHU2MzhjXHU2M2NmXHU2M2MwXHU2M2U5XHU2M2M5XHU2M2M2XHU2M2NkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2M2QyXHU2M2UzXHU2M2QwXHU2M2UxXHU2M2Q2XHU2M2VkXHU2M2VlXHU2Mzc2XHU2M2Y0XHU2M2VhXHU2M2RiXHU2NDUyXHU2M2RhXHU2M2Y5XHU2NTVlXHU2NTY2XHU2NTYyXHU2NTYzXHU2NTkxXHU2NTkwXHU2NWFmXHU2'@; put 'NjZlXHU2NjcwXHU2Njc0XHU2Njc2XHU2NjZmXHU2NjkxXHU2NjdhXHU2NjdlXHU2Njc3XHU2NmZlXHU2NmZmXHU2NzFmXHU2NzFkXHU2OGZhXHU2OGQ1XHU2OGUwXHU2OGQ4XHU2OGQ3XHU2OTA1XHU2OGRmXHU2OGY1XHU2OGVlXHU2OGU3XHU2OGY5XHU2OGQyXHU2OGYyXHU2OGUzXHU2OGNi'@; put 'XHU2OGNkXHU2OTBkXHU2OTEyXHU2OTBlXHU2OGM5XHU2OGRhXHU2OTZlXHU2OGZiXHU2YjNlXHU2YjNhXHU2YjNkXHU2Yjk4XHU2Yjk2XHU2YmJjXHU2YmVmXHU2YzJlXHU2YzJmXHU2YzJjXHU2ZTJmXHU2ZTM4XHU2ZTU0XHU2ZTIxXHU2ZTMyXHU2ZTY3XHU2ZTRhXHU2ZTIwXHU2ZTI1XHU2'@; put 'ZTIzXHU2ZTFiXHU2ZTViXHU2ZTU4XHU2ZTI0XHU2ZTU2XHU2ZTZlXHU2ZTJkXHU2ZTI2XHU2ZTZmXHU2ZTM0XHU2ZTRkXHU2ZTNhXHU2ZTJjXHU2ZTQzXHU2ZTFkXHU2ZTNlXHU2ZWNiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODBdW3Nd'@; put 'LmNoYXJDb2RlQXQoMCkmJih5W2NbMTgwXVtzXV09NDYwODArcyxoWzQ2MDgwK3NdPWNbMTgwXVtzXSk7Zm9yKGNbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZTg5XHU2ZTE5XHU2ZTRlXHU2ZTYzXHU2ZTQ0XHU2ZTcyXHU2'@; put 'ZTY5XHU2ZTVmXHU3MTE5XHU3MTFhXHU3MTI2XHU3MTMwXHU3MTIxXHU3MTM2XHU3MTZlXHU3MTFjXHU3MjRjXHU3Mjg0XHU3MjgwXHU3MzM2XHU3MzI1XHU3MzM0XHU3MzI5XHU3NDNhXHU3NDJhXHU3NDMzXHU3NDIyXHU3NDI1XHU3NDM1XHU3NDM2XHU3NDM0XHU3NDJmXHU3NDFiXHU3NDI2'@; put 'XHU3NDI4XHU3NTI1XHU3NTI2XHU3NTZiXHU3NTZhXHU3NWUyXHU3NWRiXHU3NWUzXHU3NWQ5XHU3NWQ4XHU3NWRlXHU3NWUwXHU3NjdiXHU3NjdjXHU3Njk2XHU3NjkzXHU3NmI0XHU3NmRjXHU3NzRmXHU3N2VkXHU3ODVkXHU3ODZjXHU3ODZmXHU3YTBkXHU3YTA4XHU3YTBiXHU3YTA1XHU3'@; put 'YTAwXHU3YTk4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTk3XHU3YTk2XHU3YWU1XHU3YWUzXHU3YjQ5XHU3YjU2XHU3YjQ2XHU3YjUwXHU3YjUyXHU3YjU0XHU3YjRkXHU3YjRiXHU3YjRmXHU3YjUxXHU3YzlmXHU3Y2E1XHU3ZDVlXHU3ZDUwXHU3ZDY4XHU3'@; put 'ZDU1XHU3ZDJiXHU3ZDZlXHU3ZDcyXHU3ZDYxXHU3ZDY2XHU3ZDYyXHU3ZDcwXHU3ZDczXHU1NTg0XHU3ZmQ0XHU3ZmQ1XHU4MDBiXHU4MDUyXHU4MDg1XHU4MTU1XHU4MTU0XHU4MTRiXHU4MTUxXHU4MTRlXHU4MTM5XHU4MTQ2XHU4MTNlXHU4MTRjXHU4MTUzXHU4MTc0XHU4MjEyXHU4MjFj'@; put 'XHU4M2U5XHU4NDAzXHU4M2Y4XHU4NDBkXHU4M2UwXHU4M2M1XHU4NDBiXHU4M2MxXHU4M2VmXHU4M2YxXHU4M2Y0XHU4NDU3XHU4NDBhXHU4M2YwXHU4NDBjXHU4M2NjXHU4M2ZkXHU4M2YyXHU4M2NhXHU4NDM4XHU4NDBlXHU4NDA0XHU4M2RjXHU4NDA3XHU4M2Q0XHU4M2RmXHU4NjViXHU4'@; put 'NmRmXHU4NmQ5XHU4NmVkXHU4NmQ0XHU4NmRiXHU4NmU0XHU4NmQwXHU4NmRlXHU4ODU3XHU4OGMxXHU4OGMyXHU4OGIxXHU4OTgzXHU4OTk2XHU4YTNiXHU4YTYwXHU4YTU1XHU4YTVlXHU4YTNjXHU4YTQxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgxXS5sZW5ndGg7KytzKTY1NTMz'@; put 'IT09Y1sxODFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgxXVtzXV09NDYzMzYrcyxoWzQ2MzM2K3NdPWNbMTgxXVtzXSk7Zm9yKGNbMTgyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YTU0XHU4YTViXHU4YTUwXHU4YTQ2XHU4'@; put 'YTM0XHU4YTNhXHU4YTM2XHU4YTU2XHU4YzYxXHU4YzgyXHU4Y2FmXHU4Y2JjXHU4Y2IzXHU4Y2JkXHU4Y2MxXHU4Y2JiXHU4Y2MwXHU4Y2I0XHU4Y2I3XHU4Y2I2XHU4Y2JmXHU4Y2I4XHU4ZDhhXHU4ZDg1XHU4ZDgxXHU4ZGNlXHU4ZGRkXHU4ZGNiXHU4ZGRhXHU4ZGQxXHU4ZGNjXHU4ZGRi'@; put 'XHU4ZGM2XHU4ZWZiXHU4ZWY4XHU4ZWZjXHU4ZjljXHU5MDJlXHU5MDM1XHU5MDMxXHU5MDM4XHU5MDMyXHU5MDM2XHU5MTAyXHU5MGY1XHU5MTA5XHU5MGZlXHU5MTYzXHU5MTY1XHU5MWNmXHU5MjE0XHU5MjE1XHU5MjIzXHU5MjA5XHU5MjFlXHU5MjBkXHU5MjEwXHU5MjA3XHU5MjExXHU5'@; put 'NTk0XHU5NThmXHU5NThiXHU5NTkxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NTkzXHU5NTkyXHU5NThlXHU5NjhhXHU5NjhlXHU5NjhiXHU5NjdkXHU5Njg1XHU5Njg2XHU5NjhkXHU5NjcyXHU5Njg0XHU5NmMxXHU5NmM1XHU5NmM0XHU5NmM2XHU5NmM3XHU5'@; put 'NmVmXHU5NmYyXHU5N2NjXHU5ODA1XHU5ODA2XHU5ODA4XHU5OGU3XHU5OGVhXHU5OGVmXHU5OGU5XHU5OGYyXHU5OGVkXHU5OWFlXHU5OWFkXHU5ZWMzXHU5ZWNkXHU5ZWQxXHU0ZTgyXHU1MGFkXHU1MGI1XHU1MGIyXHU1MGIzXHU1MGM1XHU1MGJlXHU1MGFjXHU1MGI3XHU1MGJiXHU1MGFm'@; put 'XHU1MGM3XHU1MjdmXHU1Mjc3XHU1MjdkXHU1MmRmXHU1MmU2XHU1MmU0XHU1MmUyXHU1MmUzXHU1MzJmXHU1NWRmXHU1NWU4XHU1NWQzXHU1NWU2XHU1NWNlXHU1NWRjXHU1NWM3XHU1NWQxXHU1NWUzXHU1NWU0XHU1NWVmXHU1NWRhXHU1NWUxXHU1NWM1XHU1NWM2XHU1NWU1XHU1NWM5XHU1'@; put 'NzEyXHU1NzEzXHU1ODVlXHU1ODUxXHU1ODU4XHU1ODU3XHU1ODVhXHU1ODU0XHU1ODZiXHU1ODRjXHU1ODZkXHU1ODRhXHU1ODYyXHU1ODUyXHU1ODRiXHU1OTY3XHU1YWMxXHU1YWM5XHU1YWNjXHU1YWJlXHU1YWJkXHU1YWJjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTgyXS5sZW5n'@; put 'dGg7KytzKTY1NTMzIT09Y1sxODJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgyXVtzXV09NDY1OTIrcyxoWzQ2NTkyK3NdPWNbMTgyXVtzXSk7Zm9yKGNbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWIzXHU1YWMyXHU1'@; put 'YWIyXHU1ZDY5XHU1ZDZmXHU1ZTRjXHU1ZTc5XHU1ZWM5XHU1ZWM4XHU1ZjEyXHU1ZjU5XHU1ZmFjXHU1ZmFlXHU2MTFhXHU2MTBmXHU2MTQ4XHU2MTFmXHU2MGYzXHU2MTFiXHU2MGY5XHU2MTAxXHU2MTA4XHU2MTRlXHU2MTRjXHU2MTQ0XHU2MTRkXHU2MTNlXHU2MTM0XHU2MTI3XHU2MTBk'@; put 'XHU2MTA2XHU2MTM3XHU2MjIxXHU2MjIyXHU2NDEzXHU2NDNlXHU2NDFlXHU2NDJhXHU2NDJkXHU2NDNkXHU2NDJjXHU2NDBmXHU2NDFjXHU2NDE0XHU2NDBkXHU2NDM2XHU2NDE2XHU2NDE3XHU2NDA2XHU2NTZjXHU2NTlmXHU2NWIwXHU2Njk3XHU2Njg5XHU2Njg3XHU2Njg4XHU2Njk2XHU2'@; put 'Njg0XHU2Njk4XHU2NjhkXHU2NzAzXHU2OTk0XHU2OTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTVhXHU2OTc3XHU2OTYwXHU2OTU0XHU2OTc1XHU2OTMwXHU2OTgyXHU2OTRhXHU2OTY4XHU2OTZiXHU2OTVlXHU2OTUzXHU2OTc5XHU2OTg2XHU2OTVkXHU2'@; put 'OTYzXHU2OTViXHU2YjQ3XHU2YjcyXHU2YmMwXHU2YmJmXHU2YmQzXHU2YmZkXHU2ZWEyXHU2ZWFmXHU2ZWQzXHU2ZWI2XHU2ZWMyXHU2ZTkwXHU2ZTlkXHU2ZWM3XHU2ZWM1XHU2ZWE1XHU2ZTk4XHU2ZWJjXHU2ZWJhXHU2ZWFiXHU2ZWQxXHU2ZTk2XHU2ZTljXHU2ZWM0XHU2ZWQ0XHU2ZWFh'@; put 'XHU2ZWE3XHU2ZWI0XHU3MTRlXHU3MTU5XHU3MTY5XHU3MTY0XHU3MTQ5XHU3MTY3XHU3MTVjXHU3MTZjXHU3MTY2XHU3MTRjXHU3MTY1XHU3MTVlXHU3MTQ2XHU3MTY4XHU3MTU2XHU3MjNhXHU3MjUyXHU3MzM3XHU3MzQ1XHU3MzNmXHU3MzNlXHU3NDZmXHU3NDVhXHU3NDU1XHU3NDVmXHU3'@; put 'NDVlXHU3NDQxXHU3NDNmXHU3NDU5XHU3NDViXHU3NDVjXHU3NTc2XHU3NTc4XHU3NjAwXHU3NWYwXHU3NjAxXHU3NWYyXHU3NWYxXHU3NWZhXHU3NWZmXHU3NWY0XHU3NWYzXHU3NmRlXHU3NmRmXHU3NzViXHU3NzZiXHU3NzY2XHU3NzVlXHU3NzYzXHVmZmZkIi5zcGxpdCgiIikscz0wO3Mh'@; put 'PWNbMTgzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTgzXVtzXV09NDY4NDgrcyxoWzQ2ODQ4K3NdPWNbMTgzXVtzXSk7Zm9yKGNbMTg0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3'@; put 'Nzc5XHU3NzZhXHU3NzZjXHU3NzVjXHU3NzY1XHU3NzY4XHU3NzYyXHU3N2VlXHU3ODhlXHU3OGIwXHU3ODk3XHU3ODk4XHU3ODhjXHU3ODg5XHU3ODdjXHU3ODkxXHU3ODkzXHU3ODdmXHU3OTdhXHU3OTdmXHU3OTgxXHU4NDJjXHU3OWJkXHU3YTFjXHU3YTFhXHU3YTIwXHU3YTE0XHU3YTFm'@; put 'XHU3YTFlXHU3YTlmXHU3YWEwXHU3Yjc3XHU3YmMwXHU3YjYwXHU3YjZlXHU3YjY3XHU3Y2IxXHU3Y2IzXHU3Y2I1XHU3ZDkzXHU3ZDc5XHU3ZDkxXHU3ZDgxXHU3ZDhmXHU3ZDViXHU3ZjZlXHU3ZjY5XHU3ZjZhXHU3ZjcyXHU3ZmE5XHU3ZmE4XHU3ZmE0XHU4MDU2XHU4MDU4XHU4MDg2XHU4'@; put 'MDg0XHU4MTcxXHU4MTcwXHU4MTc4XHU4MTY1XHU4MTZlXHU4MTczXHU4MTZiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MTc5XHU4MTdhXHU4MTY2XHU4MjA1XHU4MjQ3XHU4NDgyXHU4NDc3XHU4NDNkXHU4NDMxXHU4NDc1XHU4NDY2XHU4NDZiXHU4NDQ5XHU4'@; put 'NDZjXHU4NDViXHU4NDNjXHU4NDM1XHU4NDYxXHU4NDYzXHU4NDY5XHU4NDZkXHU4NDQ2XHU4NjVlXHU4NjVjXHU4NjVmXHU4NmY5XHU4NzEzXHU4NzA4XHU4NzA3XHU4NzAwXHU4NmZlXHU4NmZiXHU4NzAyXHU4NzAzXHU4NzA2XHU4NzBhXHU4ODU5XHU4OGRmXHU4OGQ0XHU4OGQ5XHU4OGRj'@; put 'XHU4OGQ4XHU4OGRkXHU4OGUxXHU4OGNhXHU4OGQ1XHU4OGQyXHU4OTljXHU4OWUzXHU4YTZiXHU4YTcyXHU4YTczXHU4YTY2XHU4YTY5XHU4YTcwXHU4YTg3XHU4YTdjXHU4YTYzXHU4YWEwXHU4YTcxXHU4YTg1XHU4YTZkXHU4YTYyXHU4YTZlXHU4YTZjXHU4YTc5XHU4YTdiXHU4YTNlXHU4'@; put 'YTY4XHU4YzYyXHU4YzhhXHU4Yzg5XHU4Y2NhXHU4Y2M3XHU4Y2M4XHU4Y2M0XHU4Y2IyXHU4Y2MzXHU4Y2MyXHU4Y2M1XHU4ZGUxXHU4ZGRmXHU4ZGU4XHU4ZGVmXHU4ZGYzXHU4ZGZhXHU4ZGVhXHU4ZGU0XHU4ZGU2XHU4ZWIyXHU4ZjAzXHU4ZjA5XHU4ZWZlXHU4ZjBhXHVmZmZkIi5zcGxp'@; put 'dCgiIikscz0wO3MhPWNbMTg0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg0XVtzXV09NDcxMDQrcyxoWzQ3MTA0K3NdPWNbMTg0XVtzXSk7Zm9yKGNbMTg1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHU4ZjlmXHU4ZmIyXHU5MDRiXHU5MDRhXHU5MDUzXHU5MDQyXHU5MDU0XHU5MDNjXHU5MDU1XHU5MDUwXHU5MDQ3XHU5MDRmXHU5MDRlXHU5MDRkXHU5MDUxXHU5MDNlXHU5MDQxXHU5MTEyXHU5MTE3XHU5MTZjXHU5MTZhXHU5MTY5XHU5MWM5XHU5MjM3XHU5MjU3XHU5MjM4'@; put 'XHU5MjNkXHU5MjQwXHU5MjNlXHU5MjViXHU5MjRiXHU5MjY0XHU5MjUxXHU5MjM0XHU5MjQ5XHU5MjRkXHU5MjQ1XHU5MjM5XHU5MjNmXHU5MjVhXHU5NTk4XHU5Njk4XHU5Njk0XHU5Njk1XHU5NmNkXHU5NmNiXHU5NmM5XHU5NmNhXHU5NmY3XHU5NmZiXHU5NmY5XHU5NmY2XHU5NzU2XHU5'@; put 'Nzc0XHU5Nzc2XHU5ODEwXHU5ODExXHU5ODEzXHU5ODBhXHU5ODEyXHU5ODBjXHU5OGZjXHU5OGY0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5OGZkXHU5OGZlXHU5OWIzXHU5OWIxXHU5OWI0XHU5YWUxXHU5Y2U5XHU5ZTgyXHU5ZjBlXHU5ZjEzXHU5ZjIwXHU1'@; put 'MGU3XHU1MGVlXHU1MGU1XHU1MGQ2XHU1MGVkXHU1MGRhXHU1MGQ1XHU1MGNmXHU1MGQxXHU1MGYxXHU1MGNlXHU1MGU5XHU1MTYyXHU1MWYzXHU1MjgzXHU1MjgyXHU1MzMxXHU1M2FkXHU1NWZlXHU1NjAwXHU1NjFiXHU1NjE3XHU1NWZkXHU1NjE0XHU1NjA2XHU1NjA5XHU1NjBkXHU1NjBl'@; put 'XHU1NWY3XHU1NjE2XHU1NjFmXHU1NjA4XHU1NjEwXHU1NWY2XHU1NzE4XHU1NzE2XHU1ODc1XHU1ODdlXHU1ODgzXHU1ODkzXHU1ODhhXHU1ODc5XHU1ODg1XHU1ODdkXHU1OGZkXHU1OTI1XHU1OTIyXHU1OTI0XHU1OTZhXHU1OTY5XHU1YWUxXHU1YWU2XHU1YWU5XHU1YWQ3XHU1YWQ2XHU1'@; put 'YWQ4XHU1YWUzXHU1Yjc1XHU1YmRlXHU1YmU3XHU1YmUxXHU1YmU1XHU1YmU2XHU1YmU4XHU1YmUyXHU1YmU0XHU1YmRmXHU1YzBkXHU1YzYyXHU1ZDg0XHU1ZDg3XHU1ZTViXHU1ZTYzXHU1ZTU1XHU1ZTU3XHU1ZTU0XHU1ZWQzXHU1ZWQ2XHU1ZjBhXHU1ZjQ2XHU1ZjcwXHU1ZmI5XHU2MTQ3'@; put 'XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg1XVtzXV09NDczNjArcyxoWzQ3MzYwK3NdPWNbMTg1XVtzXSk7Zm9yKGNbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTNmXHU2MTRiXHU2MTc3XHU2MTYyXHU2MTYzXHU2MTVmXHU2MTVhXHU2MTU4XHU2MTc1XHU2MjJhXHU2NDg3XHU2NDU4XHU2NDU0XHU2NGE0XHU2NDc4XHU2NDVmXHU2NDdhXHU2NDUxXHU2NDY3XHU2NDM0XHU2NDZkXHU2NDdiXHU2NTcyXHU2NWEx'@; put 'XHU2NWQ3XHU2NWQ2XHU2NmEyXHU2NmE4XHU2NjlkXHU2OTljXHU2OWE4XHU2OTk1XHU2OWMxXHU2OWFlXHU2OWQzXHU2OWNiXHU2OTliXHU2OWI3XHU2OWJiXHU2OWFiXHU2OWI0XHU2OWQwXHU2OWNkXHU2OWFkXHU2OWNjXHU2OWE2XHU2OWMzXHU2OWEzXHU2YjQ5XHU2YjRjXHU2YzMzXHU2'@; put 'ZjMzXHU2ZjE0XHU2ZWZlXHU2ZjEzXHU2ZWY0XHU2ZjI5XHU2ZjNlXHU2ZjIwXHU2ZjJjXHU2ZjBmXHU2ZjAyXHU2ZjIyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWZmXHU2ZWVmXHU2ZjA2XHU2ZjMxXHU2ZjM4XHU2ZjMyXHU2ZjIzXHU2ZjE1XHU2ZjJiXHU2'@; put 'ZjJmXHU2Zjg4XHU2ZjJhXHU2ZWVjXHU2ZjAxXHU2ZWYyXHU2ZWNjXHU2ZWY3XHU3MTk0XHU3MTk5XHU3MTdkXHU3MThhXHU3MTg0XHU3MTkyXHU3MjNlXHU3MjkyXHU3Mjk2XHU3MzQ0XHU3MzUwXHU3NDY0XHU3NDYzXHU3NDZhXHU3NDcwXHU3NDZkXHU3NTA0XHU3NTkxXHU3NjI3XHU3NjBk'@; put 'XHU3NjBiXHU3NjA5XHU3NjEzXHU3NmUxXHU3NmUzXHU3Nzg0XHU3NzdkXHU3NzdmXHU3NzYxXHU3OGMxXHU3ODlmXHU3OGE3XHU3OGIzXHU3OGE5XHU3OGEzXHU3OThlXHU3OThmXHU3OThkXHU3YTJlXHU3YTMxXHU3YWFhXHU3YWE5XHU3YWVkXHU3YWVmXHU3YmExXHU3Yjk1XHU3YjhiXHU3'@; put 'Yjc1XHU3Yjk3XHU3YjlkXHU3Yjk0XHU3YjhmXHU3YmI4XHU3Yjg3XHU3Yjg0XHU3Y2I5XHU3Y2JkXHU3Y2JlXHU3ZGJiXHU3ZGIwXHU3ZDljXHU3ZGJkXHU3ZGJlXHU3ZGEwXHU3ZGNhXHU3ZGI0XHU3ZGIyXHU3ZGIxXHU3ZGJhXHU3ZGEyXHU3ZGJmXHU3ZGI1XHU3ZGI4XHU3ZGFkXHU3ZGQy'@; put 'XHU3ZGM3XHU3ZGFjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg2XVtzXV09NDc2MTYrcyxoWzQ3NjE2K3NdPWNbMTg2XVtzXSk7Zm9yKGNbMTg3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZjcwXHU3ZmUwXHU3ZmUxXHU3ZmRmXHU4MDVlXHU4MDVhXHU4MDg3XHU4MTUwXHU4MTgwXHU4MThmXHU4MTg4XHU4MThhXHU4MTdmXHU4MTgyXHU4MWU3XHU4MWZhXHU4MjA3XHU4MjE0XHU4MjFlXHU4MjRiXHU4NGM5XHU4NGJm'@; put 'XHU4NGM2XHU4NGM0XHU4NDk5XHU4NDllXHU4NGIyXHU4NDljXHU4NGNiXHU4NGI4XHU4NGMwXHU4NGQzXHU4NDkwXHU4NGJjXHU4NGQxXHU4NGNhXHU4NzNmXHU4NzFjXHU4NzNiXHU4NzIyXHU4NzI1XHU4NzM0XHU4NzE4XHU4NzU1XHU4NzM3XHU4NzI5XHU4OGYzXHU4OTAyXHU4OGY0XHU4'@; put 'OGY5XHU4OGY4XHU4OGZkXHU4OGU4XHU4OTFhXHU4OGVmXHU4YWE2XHU4YThjXHU4YTllXHU4YWEzXHU4YThkXHU4YWExXHU4YTkzXHU4YWE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YWFhXHU4YWE1XHU4YWE4XHU4YTk4XHU4YTkxXHU4YTlhXHU4YWE3XHU4'@; put 'YzZhXHU4YzhkXHU4YzhjXHU4Y2QzXHU4Y2QxXHU4Y2QyXHU4ZDZiXHU4ZDk5XHU4ZDk1XHU4ZGZjXHU4ZjE0XHU4ZjEyXHU4ZjE1XHU4ZjEzXHU4ZmEzXHU5MDYwXHU5MDU4XHU5MDVjXHU5MDYzXHU5MDU5XHU5MDVlXHU5MDYyXHU5MDVkXHU5MDViXHU5MTE5XHU5MTE4XHU5MTFlXHU5MTc1'@; put 'XHU5MTc4XHU5MTc3XHU5MTc0XHU5Mjc4XHU5MjgwXHU5Mjg1XHU5Mjk4XHU5Mjk2XHU5MjdiXHU5MjkzXHU5MjljXHU5MmE4XHU5MjdjXHU5MjkxXHU5NWExXHU5NWE4XHU5NWE5XHU5NWEzXHU5NWE1XHU5NWE0XHU5Njk5XHU5NjljXHU5NjliXHU5NmNjXHU5NmQyXHU5NzAwXHU5NzdjXHU5'@; put 'Nzg1XHU5N2Y2XHU5ODE3XHU5ODE4XHU5OGFmXHU5OGIxXHU5OTAzXHU5OTA1XHU5OTBjXHU5OTA5XHU5OWMxXHU5YWFmXHU5YWIwXHU5YWU2XHU5YjQxXHU5YjQyXHU5Y2Y0XHU5Y2Y2XHU5Y2YzXHU5ZWJjXHU5ZjNiXHU5ZjRhXHU1MTA0XHU1MTAwXHU1MGZiXHU1MGY1XHU1MGY5XHU1MTAy'@; put 'XHU1MTA4XHU1MTA5XHU1MTA1XHU1MWRjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg3XVtzXV09NDc4NzIrcyxoWzQ3ODcyK3NdPWNbMTg3XVtzXSk7Zm9yKGNbMTg4XT0iXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1Mjg3XHU1Mjg4XHU1Mjg5XHU1MjhkXHU1MjhhXHU1MmYwXHU1M2IyXHU1NjJlXHU1NjNiXHU1NjM5XHU1NjMyXHU1NjNmXHU1NjM0XHU1NjI5XHU1NjUzXHU1NjRlXHU1NjU3XHU1Njc0XHU1NjM2XHU1NjJm'@; put 'XHU1NjMwXHU1ODgwXHU1ODlmXHU1ODllXHU1OGIzXHU1ODljXHU1OGFlXHU1OGE5XHU1OGE2XHU1OTZkXHU1YjA5XHU1YWZiXHU1YjBiXHU1YWY1XHU1YjBjXHU1YjA4XHU1YmVlXHU1YmVjXHU1YmU5XHU1YmViXHU1YzY0XHU1YzY1XHU1ZDlkXHU1ZDk0XHU1ZTYyXHU1ZTVmXHU1ZTYxXHU1'@; put 'ZWUyXHU1ZWRhXHU1ZWRmXHU1ZWRkXHU1ZWUzXHU1ZWUwXHU1ZjQ4XHU1ZjcxXHU1ZmI3XHU1ZmI1XHU2MTc2XHU2MTY3XHU2MTZlXHU2MTVkXHU2MTU1XHU2MTgyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTdjXHU2MTcwXHU2MTZiXHU2MTdlXHU2MWE3XHU2'@; put 'MTkwXHU2MWFiXHU2MThlXHU2MWFjXHU2MTlhXHU2MWE0XHU2MTk0XHU2MWFlXHU2MjJlXHU2NDY5XHU2NDZmXHU2NDc5XHU2NDllXHU2NGIyXHU2NDg4XHU2NDkwXHU2NGIwXHU2NGE1XHU2NDkzXHU2NDk1XHU2NGE5XHU2NDkyXHU2NGFlXHU2NGFkXHU2NGFiXHU2NDlhXHU2NGFjXHU2NDk5'@; put 'XHU2NGEyXHU2NGIzXHU2NTc1XHU2NTc3XHU2NTc4XHU2NmFlXHU2NmFiXHU2NmI0XHU2NmIxXHU2YTIzXHU2YTFmXHU2OWU4XHU2YTAxXHU2YTFlXHU2YTE5XHU2OWZkXHU2YTIxXHU2YTEzXHU2YTBhXHU2OWYzXHU2YTAyXHU2YTA1XHU2OWVkXHU2YTExXHU2YjUwXHU2YjRlXHU2YmE0XHU2'@; put 'YmM1XHU2YmM2XHU2ZjNmXHU2ZjdjXHU2Zjg0XHU2ZjUxXHU2ZjY2XHU2ZjU0XHU2Zjg2XHU2ZjZkXHU2ZjViXHU2Zjc4XHU2ZjZlXHU2ZjhlXHU2ZjdhXHU2ZjcwXHU2ZjY0XHU2Zjk3XHU2ZjU4XHU2ZWQ1XHU2ZjZmXHU2ZjYwXHU2ZjVmXHU3MTlmXHU3MWFjXHU3MWIxXHU3MWE4XHU3MjU2'@; put 'XHU3MjliXHU3MzRlXHU3MzU3XHU3NDY5XHU3NDhiXHU3NDgzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg4XVtzXV09NDgxMjgrcyxoWzQ4MTI4K3NdPWNbMTg4XVtzXSk7Zm9yKGNbMTg5'@; put 'XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdlXHU3NDgwXHU3NTdmXHU3NjIwXHU3NjI5XHU3NjFmXHU3NjI0XHU3NjI2XHU3NjIxXHU3NjIyXHU3NjlhXHU3NmJhXHU3NmU0XHU3NzhlXHU3Nzg3XHU3NzhjXHU3NzkxXHU3Nzhi'@; put 'XHU3OGNiXHU3OGM1XHU3OGJhXHU3OGNhXHU3OGJlXHU3OGQ1XHU3OGJjXHU3OGQwXHU3YTNmXHU3YTNjXHU3YTQwXHU3YTNkXHU3YTM3XHU3YTNiXHU3YWFmXHU3YWFlXHU3YmFkXHU3YmIxXHU3YmM0XHU3YmI0XHU3YmM2XHU3YmM3XHU3YmMxXHU3YmEwXHU3YmNjXHU3Y2NhXHU3ZGUwXHU3'@; put 'ZGY0XHU3ZGVmXHU3ZGZiXHU3ZGQ4XHU3ZGVjXHU3ZGRkXHU3ZGU4XHU3ZGUzXHU3ZGRhXHU3ZGRlXHU3ZGU5XHU3ZDllXHU3ZGQ5XHU3ZGYyXHU3ZGY5XHU3Zjc1XHU3Zjc3XHU3ZmFmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZmU5XHU4MDI2XHU4MTliXHU4'@; put 'MTljXHU4MTlkXHU4MWEwXHU4MTlhXHU4MTk4XHU4NTE3XHU4NTNkXHU4NTFhXHU4NGVlXHU4NTJjXHU4NTJkXHU4NTEzXHU4NTExXHU4NTIzXHU4NTIxXHU4NTE0XHU4NGVjXHU4NTI1XHU4NGZmXHU4NTA2XHU4NzgyXHU4Nzc0XHU4Nzc2XHU4NzYwXHU4NzY2XHU4Nzc4XHU4NzY4XHU4NzU5'@; put 'XHU4NzU3XHU4NzRjXHU4NzUzXHU4ODViXHU4ODVkXHU4OTEwXHU4OTA3XHU4OTEyXHU4OTEzXHU4OTE1XHU4OTBhXHU4YWJjXHU4YWQyXHU4YWM3XHU4YWM0XHU4YTk1XHU4YWNiXHU4YWY4XHU4YWIyXHU4YWM5XHU4YWMyXHU4YWJmXHU4YWIwXHU4YWQ2XHU4YWNkXHU4YWI2XHU4YWI5XHU4'@; put 'YWRiXHU4YzRjXHU4YzRlXHU4YzZjXHU4Y2UwXHU4Y2RlXHU4Y2U2XHU4Y2U0XHU4Y2VjXHU4Y2VkXHU4Y2UyXHU4Y2UzXHU4Y2RjXHU4Y2VhXHU4Y2UxXHU4ZDZkXHU4ZDlmXHU4ZGEzXHU4ZTJiXHU4ZTEwXHU4ZTFkXHU4ZTIyXHU4ZTBmXHU4ZTI5XHU4ZTFmXHU4ZTIxXHU4ZTFlXHU4ZWJh'@; put 'XHU4ZjFkXHU4ZjFiXHU4ZjFmXHU4ZjI5XHU4ZjI2XHU4ZjJhXHU4ZjFjXHU4ZjFlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTg5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxODldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTg5XVtzXV09NDgzODQrcyxoWzQ4Mzg0K3NdPWNbMTg5XVtz'@; put 'XSk7Zm9yKGNbMTkwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZjI1XHU5MDY5XHU5MDZlXHU5MDY4XHU5MDZkXHU5MDc3XHU5MTMwXHU5MTJkXHU5MTI3XHU5MTMxXHU5MTg3XHU5MTg5XHU5MThiXHU5MTgzXHU5MmM1XHU5MmJi'@; put 'XHU5MmI3XHU5MmVhXHU5MmFjXHU5MmU0XHU5MmMxXHU5MmIzXHU5MmJjXHU5MmQyXHU5MmM3XHU5MmYwXHU5MmIyXHU5NWFkXHU5NWIxXHU5NzA0XHU5NzA2XHU5NzA3XHU5NzA5XHU5NzYwXHU5NzhkXHU5NzhiXHU5NzhmXHU5ODIxXHU5ODJiXHU5ODFjXHU5OGIzXHU5OTBhXHU5OTEzXHU5'@; put 'OTEyXHU5OTE4XHU5OWRkXHU5OWQwXHU5OWRmXHU5OWRiXHU5OWQxXHU5OWQ1XHU5OWQyXHU5OWQ5XHU5YWI3XHU5YWVlXHU5YWVmXHU5YjI3XHU5YjQ1XHU5YjQ0XHU5Yjc3XHU5YjZmXHU5ZDA2XHU5ZDA5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDAzXHU5'@; put 'ZWE5XHU5ZWJlXHU5ZWNlXHU1OGE4XHU5ZjUyXHU1MTEyXHU1MTE4XHU1MTE0XHU1MTEwXHU1MTE1XHU1MTgwXHU1MWFhXHU1MWRkXHU1MjkxXHU1MjkzXHU1MmYzXHU1NjU5XHU1NjZiXHU1Njc5XHU1NjY5XHU1NjY0XHU1Njc4XHU1NjZhXHU1NjY4XHU1NjY1XHU1NjcxXHU1NjZmXHU1NjZj'@; put 'XHU1NjYyXHU1Njc2XHU1OGMxXHU1OGJlXHU1OGM3XHU1OGM1XHU1OTZlXHU1YjFkXHU1YjM0XHU1Yjc4XHU1YmYwXHU1YzBlXHU1ZjRhXHU2MWIyXHU2MTkxXHU2MWE5XHU2MThhXHU2MWNkXHU2MWI2XHU2MWJlXHU2MWNhXHU2MWM4XHU2MjMwXHU2NGM1XHU2NGMxXHU2NGNiXHU2NGJiXHU2'@; put 'NGJjXHU2NGRhXHU2NGM0XHU2NGM3XHU2NGMyXHU2NGNkXHU2NGJmXHU2NGQyXHU2NGQ0XHU2NGJlXHU2NTc0XHU2NmM2XHU2NmM5XHU2NmI5XHU2NmM0XHU2NmM3XHU2NmI4XHU2YTNkXHU2YTM4XHU2YTNhXHU2YTU5XHU2YTZiXHU2YTU4XHU2YTM5XHU2YTQ0XHU2YTYyXHU2YTYxXHU2YTRi'@; put 'XHU2YTQ3XHU2YTM1XHU2YTVmXHU2YTQ4XHU2YjU5XHU2Yjc3XHU2YzA1XHU2ZmMyXHU2ZmIxXHU2ZmExXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTkwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTkwXVtzXV09NDg2NDArcyxoWzQ4NjQw'@; put 'K3NdPWNbMTkwXVtzXSk7Zm9yKGNbMTkxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmMzXHU2ZmE0XHU2ZmMxXHU2ZmE3XHU2ZmIzXHU2ZmMwXHU2ZmI5XHU2ZmI2XHU2ZmE2XHU2ZmEwXHU2ZmI0XHU3MWJlXHU3MWM5XHU3MWQw'@; put 'XHU3MWQyXHU3MWM4XHU3MWQ1XHU3MWI5XHU3MWNlXHU3MWQ5XHU3MWRjXHU3MWMzXHU3MWM0XHU3MzY4XHU3NDljXHU3NGEzXHU3NDk4XHU3NDlmXHU3NDllXHU3NGUyXHU3NTBjXHU3NTBkXHU3NjM0XHU3NjM4XHU3NjNhXHU3NmU3XHU3NmU1XHU3N2EwXHU3NzllXHU3NzlmXHU3N2E1XHU3'@; put 'OGU4XHU3OGRhXHU3OGVjXHU3OGU3XHU3OWE2XHU3YTRkXHU3YTRlXHU3YTQ2XHU3YTRjXHU3YTRiXHU3YWJhXHU3YmQ5XHU3YzExXHU3YmM5XHU3YmU0XHU3YmRiXHU3YmUxXHU3YmU5XHU3YmU2XHU3Y2Q1XHU3Y2Q2XHU3ZTBhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHU3ZTExXHU3ZTA4XHU3ZTFiXHU3ZTIzXHU3ZTFlXHU3ZTFkXHU3ZTA5XHU3ZTEwXHU3Zjc5XHU3ZmIyXHU3ZmYwXHU3ZmYxXHU3ZmVlXHU4MDI4XHU4MWIzXHU4MWE5XHU4MWE4XHU4MWZiXHU4MjA4XHU4MjU4XHU4MjU5XHU4NTRhXHU4NTU5XHU4NTQ4XHU4NTY4XHU4NTY5XHU4NTQz'@; put 'XHU4NTQ5XHU4NTZkXHU4NTZhXHU4NTVlXHU4NzgzXHU4NzlmXHU4NzllXHU4N2EyXHU4NzhkXHU4ODYxXHU4OTJhXHU4OTMyXHU4OTI1XHU4OTJiXHU4OTIxXHU4OWFhXHU4OWE2XHU4YWU2XHU4YWZhXHU4YWViXHU4YWYxXHU4YjAwXHU4YWRjXHU4YWU3XHU4YWVlXHU4YWZlXHU4YjAxXHU4'@; put 'YjAyXHU4YWY3XHU4YWVkXHU4YWYzXHU4YWY2XHU4YWZjXHU4YzZiXHU4YzZkXHU4YzkzXHU4Y2Y0XHU4ZTQ0XHU4ZTMxXHU4ZTM0XHU4ZTQyXHU4ZTM5XHU4ZTM1XHU4ZjNiXHU4ZjJmXHU4ZjM4XHU4ZjMzXHU4ZmE4XHU4ZmE2XHU5MDc1XHU5MDc0XHU5MDc4XHU5MDcyXHU5MDdjXHU5MDdh'@; put 'XHU5MTM0XHU5MTkyXHU5MzIwXHU5MzM2XHU5MmY4XHU5MzMzXHU5MzJmXHU5MzIyXHU5MmZjXHU5MzJiXHU5MzA0XHU5MzFhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTkxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTkxXVtzXV09NDg4'@; put 'OTYrcyxoWzQ4ODk2K3NdPWNbMTkxXVtzXSk7Zm9yKGNbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzEwXHU5MzI2XHU5MzIxXHU5MzE1XHU5MzJlXHU5MzE5XHU5NWJiXHU5NmE3XHU5NmE4XHU5NmFhXHU5NmQ1XHU5NzBl'@; put 'XHU5NzExXHU5NzE2XHU5NzBkXHU5NzEzXHU5NzBmXHU5NzViXHU5NzVjXHU5NzY2XHU5Nzk4XHU5ODMwXHU5ODM4XHU5ODNiXHU5ODM3XHU5ODJkXHU5ODM5XHU5ODI0XHU5OTEwXHU5OTI4XHU5OTFlXHU5OTFiXHU5OTIxXHU5OTFhXHU5OWVkXHU5OWUyXHU5OWYxXHU5YWI4XHU5YWJjXHU5'@; put 'YWZiXHU5YWVkXHU5YjI4XHU5YjkxXHU5ZDE1XHU5ZDIzXHU5ZDI2XHU5ZDI4XHU5ZDEyXHU5ZDFiXHU5ZWQ4XHU5ZWQ0XHU5ZjhkXHU5ZjljXHU1MTJhXHU1MTFmXHU1MTIxXHU1MTMyXHU1MmY1XHU1NjhlXHU1NjgwXHU1NjkwXHU1Njg1XHU1Njg3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHU1NjhmXHU1OGQ1XHU1OGQzXHU1OGQxXHU1OGNlXHU1YjMwXHU1YjJhXHU1YjI0XHU1YjdhXHU1YzM3XHU1YzY4XHU1ZGJjXHU1ZGJhXHU1ZGJkXHU1ZGI4XHU1ZTZiXHU1ZjRjXHU1ZmJkXHU2MWM5XHU2MWMyXHU2MWM3XHU2MWU2XHU2MWNiXHU2MjMyXHU2MjM0'@; put 'XHU2NGNlXHU2NGNhXHU2NGQ4XHU2NGUwXHU2NGYwXHU2NGU2XHU2NGVjXHU2NGYxXHU2NGUyXHU2NGVkXHU2NTgyXHU2NTgzXHU2NmQ5XHU2NmQ2XHU2YTgwXHU2YTk0XHU2YTg0XHU2YWEyXHU2YTljXHU2YWRiXHU2YWEzXHU2YTdlXHU2YTk3XHU2YTkwXHU2YWEwXHU2YjVjXHU2YmFlXHU2'@; put 'YmRhXHU2YzA4XHU2ZmQ4XHU2ZmYxXHU2ZmRmXHU2ZmUwXHU2ZmRiXHU2ZmU0XHU2ZmViXHU2ZmVmXHU2ZjgwXHU2ZmVjXHU2ZmUxXHU2ZmU5XHU2ZmQ1XHU2ZmVlXHU2ZmYwXHU3MWU3XHU3MWRmXHU3MWVlXHU3MWU2XHU3MWU1XHU3MWVkXHU3MWVjXHU3MWY0XHU3MWUwXHU3MjM1XHU3MjQ2'@; put 'XHU3MzcwXHU3MzcyXHU3NGE5XHU3NGIwXHU3NGE2XHU3NGE4XHU3NjQ2XHU3NjQyXHU3NjRjXHU3NmVhXHU3N2IzXHU3N2FhXHU3N2IwXHU3N2FjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTkyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2Nb'@; put 'MTkyXVtzXV09NDkxNTIrcyxoWzQ5MTUyK3NdPWNbMTkyXVtzXSk7Zm9yKGNbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2E3XHU3N2FkXHU3N2VmXHU3OGY3XHU3OGZhXHU3OGY0XHU3OGVmXHU3OTAxXHU3OWE3XHU3OWFh'@; put 'XHU3YTU3XHU3YWJmXHU3YzA3XHU3YzBkXHU3YmZlXHU3YmY3XHU3YzBjXHU3YmUwXHU3Y2UwXHU3Y2RjXHU3Y2RlXHU3Y2UyXHU3Y2RmXHU3Y2Q5XHU3Y2RkXHU3ZTJlXHU3ZTNlXHU3ZTQ2XHU3ZTM3XHU3ZTMyXHU3ZTQzXHU3ZTJiXHU3ZTNkXHU3ZTMxXHU3ZTQ1XHU3ZTQxXHU3ZTM0XHU3'@; put 'ZTM5XHU3ZTQ4XHU3ZTM1XHU3ZTNmXHU3ZTJmXHU3ZjQ0XHU3ZmYzXHU3ZmZjXHU4MDcxXHU4MDcyXHU4MDcwXHU4MDZmXHU4MDczXHU4MWM2XHU4MWMzXHU4MWJhXHU4MWMyXHU4MWMwXHU4MWJmXHU4MWJkXHU4MWM5XHU4MWJlXHU4MWU4XHU4MjA5XHU4MjcxXHU4NWFhXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTg0XHU4NTdlXHU4NTljXHU4NTkxXHU4NTk0XHU4NWFmXHU4NTliXHU4NTg3XHU4NWE4XHU4NThhXHU4NjY3XHU4N2MwXHU4N2QxXHU4N2IzXHU4N2QyXHU4N2M2XHU4N2FiXHU4N2JiXHU4N2JhXHU4N2M4XHU4N2NiXHU4OTNiXHU4OTM2'@; put 'XHU4OTQ0XHU4OTM4XHU4OTNkXHU4OWFjXHU4YjBlXHU4YjE3XHU4YjE5XHU4YjFiXHU4YjBhXHU4YjIwXHU4YjFkXHU4YjA0XHU4YjEwXHU4YzQxXHU4YzNmXHU4YzczXHU4Y2ZhXHU4Y2ZkXHU4Y2ZjXHU4Y2Y4XHU4Y2ZiXHU4ZGE4XHU4ZTQ5XHU4ZTRiXHU4ZTQ4XHU4ZTRhXHU4ZjQ0XHU4'@; put 'ZjNlXHU4ZjQyXHU4ZjQ1XHU4ZjNmXHU5MDdmXHU5MDdkXHU5MDg0XHU5MDgxXHU5MDgyXHU5MDgwXHU5MTM5XHU5MWEzXHU5MTllXHU5MTljXHU5MzRkXHU5MzgyXHU5MzI4XHU5Mzc1XHU5MzRhXHU5MzY1XHU5MzRiXHU5MzE4XHU5MzdlXHU5MzZjXHU5MzViXHU5MzcwXHU5MzVhXHU5MzU0'@; put 'XHU5NWNhXHU5NWNiXHU5NWNjXHU5NWM4XHU5NWM2XHU5NmIxXHU5NmI4XHU5NmQ2XHU5NzFjXHU5NzFlXHU5N2EwXHU5N2QzXHU5ODQ2XHU5OGI2XHU5OTM1XHU5YTAxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTkzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTNdW3NdLmNoYXJDb2Rl'@; put 'QXQoMCkmJih5W2NbMTkzXVtzXV09NDk0MDgrcyxoWzQ5NDA4K3NdPWNbMTkzXVtzXSk7Zm9yKGNbMTk0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5OWZmXHU5YmFlXHU5YmFiXHU5YmFhXHU5YmFkXHU5ZDNiXHU5ZDNmXHU5ZThi'@; put 'XHU5ZWNmXHU5ZWRlXHU5ZWRjXHU5ZWRkXHU5ZWRiXHU5ZjNlXHU5ZjRiXHU1M2UyXHU1Njk1XHU1NmFlXHU1OGQ5XHU1OGQ4XHU1YjM4XHU1ZjVkXHU2MWUzXHU2MjMzXHU2NGY0XHU2NGYyXHU2NGZlXHU2NTA2XHU2NGZhXHU2NGZiXHU2NGY3XHU2NWI3XHU2NmRjXHU2NzI2XHU2YWIzXHU2'@; put 'YWFjXHU2YWMzXHU2YWJiXHU2YWI4XHU2YWMyXHU2YWFlXHU2YWFmXHU2YjVmXHU2Yjc4XHU2YmFmXHU3MDA5XHU3MDBiXHU2ZmZlXHU3MDA2XHU2ZmZhXHU3MDExXHU3MDBmXHU3MWZiXHU3MWZjXHU3MWZlXHU3MWY4XHU3Mzc3XHU3Mzc1XHU3NGE3XHU3NGJmXHU3NTE1XHU3NjU2XHU3NjU4'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjUyXHU3N2JkXHU3N2JmXHU3N2JiXHU3N2JjXHU3OTBlXHU3OWFlXHU3YTYxXHU3YTYyXHU3YTYwXHU3YWM0XHU3YWM1XHU3YzJiXHU3YzI3XHU3YzJhXHU3YzFlXHU3YzIzXHU3YzIxXHU3Y2U3XHU3ZTU0XHU3ZTU1'@; put 'XHU3ZTVlXHU3ZTVhXHU3ZTYxXHU3ZTUyXHU3ZTU5XHU3ZjQ4XHU3ZmY5XHU3ZmZiXHU4MDc3XHU4MDc2XHU4MWNkXHU4MWNmXHU4MjBhXHU4NWNmXHU4NWE5XHU4NWNkXHU4NWQwXHU4NWM5XHU4NWIwXHU4NWJhXHU4NWI5XHU4NWE2XHU4N2VmXHU4N2VjXHU4N2YyXHU4N2UwXHU4OTg2XHU4'@; put 'OWIyXHU4OWY0XHU4YjI4XHU4YjM5XHU4YjJjXHU4YjJiXHU4YzUwXHU4ZDA1XHU4ZTU5XHU4ZTYzXHU4ZTY2XHU4ZTY0XHU4ZTVmXHU4ZTU1XHU4ZWMwXHU4ZjQ5XHU4ZjRkXHU5MDg3XHU5MDgzXHU5MDg4XHU5MWFiXHU5MWFjXHU5MWQwXHU5Mzk0XHU5MzhhXHU5Mzk2XHU5M2EyXHU5M2Iz'@; put 'XHU5M2FlXHU5M2FjXHU5M2IwXHU5Mzk4XHU5MzlhXHU5Mzk3XHU5NWQ0XHU5NWQ2XHU5NWQwXHU5NWQ1XHU5NmUyXHU5NmRjXHU5NmQ5XHU5NmRiXHU5NmRlXHU5NzI0XHU5N2EzXHU5N2E2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTRd'@; put 'W3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk0XVtzXV09NDk2NjQrcyxoWzQ5NjY0K3NdPWNbMTk0XVtzXSk7Zm9yKGNbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2FkXHU5N2Y5XHU5ODRkXHU5ODRmXHU5ODRjXHU5ODRl'@; put 'XHU5ODUzXHU5OGJhXHU5OTNlXHU5OTNmXHU5OTNkXHU5OTJlXHU5OWE1XHU5YTBlXHU5YWMxXHU5YjAzXHU5YjA2XHU5YjRmXHU5YjRlXHU5YjRkXHU5YmNhXHU5YmM5XHU5YmZkXHU5YmM4XHU5YmMwXHU5ZDUxXHU5ZDVkXHU5ZDYwXHU5ZWUwXHU5ZjE1XHU5ZjJjXHU1MTMzXHU1NmE1XHU1'@; put 'OGRlXHU1OGRmXHU1OGUyXHU1YmY1XHU5ZjkwXHU1ZWVjXHU2MWYyXHU2MWY3XHU2MWY2XHU2MWY1XHU2NTAwXHU2NTBmXHU2NmUwXHU2NmRkXHU2YWU1XHU2YWRkXHU2YWRhXHU2YWQzXHU3MDFiXHU3MDFmXHU3MDI4XHU3MDFhXHU3MDFkXHU3MDE1XHU3MDE4XHU3MjA2XHU3MjBkXHU3MjU4'@; put 'XHU3MmEyXHU3Mzc4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzdhXHU3NGJkXHU3NGNhXHU3NGUzXHU3NTg3XHU3NTg2XHU3NjVmXHU3NjYxXHU3N2M3XHU3OTE5XHU3OWIxXHU3YTZiXHU3YTY5XHU3YzNlXHU3YzNmXHU3YzM4XHU3YzNkXHU3YzM3XHU3YzQw'@; put 'XHU3ZTZiXHU3ZTZkXHU3ZTc5XHU3ZTY5XHU3ZTZhXHU3Zjg1XHU3ZTczXHU3ZmI2XHU3ZmI5XHU3ZmI4XHU4MWQ4XHU4NWU5XHU4NWRkXHU4NWVhXHU4NWQ1XHU4NWU0XHU4NWU1XHU4NWY3XHU4N2ZiXHU4ODA1XHU4ODBkXHU4N2Y5XHU4N2ZlXHU4OTYwXHU4OTVmXHU4OTU2XHU4OTVlXHU4'@; put 'YjQxXHU4YjVjXHU4YjU4XHU4YjQ5XHU4YjVhXHU4YjRlXHU4YjRmXHU4YjQ2XHU4YjU5XHU4ZDA4XHU4ZDBhXHU4ZTdjXHU4ZTcyXHU4ZTg3XHU4ZTc2XHU4ZTZjXHU4ZTdhXHU4ZTc0XHU4ZjU0XHU4ZjRlXHU4ZmFkXHU5MDhhXHU5MDhiXHU5MWIxXHU5MWFlXHU5M2UxXHU5M2QxXHU5M2Rm'@; put 'XHU5M2MzXHU5M2M4XHU5M2RjXHU5M2RkXHU5M2Q2XHU5M2UyXHU5M2NkXHU5M2Q4XHU5M2U0XHU5M2Q3XHU5M2U4XHU5NWRjXHU5NmI0XHU5NmUzXHU5NzJhXHU5NzI3XHU5NzYxXHU5N2RjXHU5N2ZiXHU5ODVlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk1XS5sZW5ndGg7KytzKTY1'@; put 'NTMzIT09Y1sxOTVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk1XVtzXV09NDk5MjArcyxoWzQ5OTIwK3NdPWNbMTk1XVtzXSk7Zm9yKGNbMTk2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODU4XHU5ODViXHU5OGJjXHU5OTQ1'@; put 'XHU5OTQ5XHU5YTE2XHU5YTE5XHU5YjBkXHU5YmU4XHU5YmU3XHU5YmQ2XHU5YmRiXHU5ZDg5XHU5ZDYxXHU5ZDcyXHU5ZDZhXHU5ZDZjXHU5ZTkyXHU5ZTk3XHU5ZTkzXHU5ZWI0XHU1MmY4XHU1NmE4XHU1NmI3XHU1NmI2XHU1NmI0XHU1NmJjXHU1OGU0XHU1YjQwXHU1YjQzXHU1YjdkXHU1'@; put 'YmY2XHU1ZGM5XHU2MWY4XHU2MWZhXHU2NTE4XHU2NTE0XHU2NTE5XHU2NmU2XHU2NzI3XHU2YWVjXHU3MDNlXHU3MDMwXHU3MDMyXHU3MjEwXHU3MzdiXHU3NGNmXHU3NjYyXHU3NjY1XHU3OTI2XHU3OTJhXHU3OTJjXHU3OTJiXHU3YWM3XHU3YWY2XHU3YzRjXHU3YzQzXHU3YzRkXHU3Y2Vm'@; put 'XHU3Y2YwXHU4ZmFlXHU3ZTdkXHU3ZTdjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZTgyXHU3ZjRjXHU4MDAwXHU4MWRhXHU4MjY2XHU4NWZiXHU4NWY5XHU4NjExXHU4NWZhXHU4NjA2XHU4NjBiXHU4NjA3XHU4NjBhXHU4ODE0XHU4ODE1XHU4OTY0XHU4OWJh'@; put 'XHU4OWY4XHU4YjcwXHU4YjZjXHU4YjY2XHU4YjZmXHU4YjVmXHU4YjZiXHU4ZDBmXHU4ZDBkXHU4ZTg5XHU4ZTgxXHU4ZTg1XHU4ZTgyXHU5MWI0XHU5MWNiXHU5NDE4XHU5NDAzXHU5M2ZkXHU5NWUxXHU5NzMwXHU5OGM0XHU5OTUyXHU5OTUxXHU5OWE4XHU5YTJiXHU5YTMwXHU5YTM3XHU5'@; put 'YTM1XHU5YzEzXHU5YzBkXHU5ZTc5XHU5ZWI1XHU5ZWU4XHU5ZjJmXHU5ZjVmXHU5ZjYzXHU5ZjYxXHU1MTM3XHU1MTM4XHU1NmMxXHU1NmMwXHU1NmMyXHU1OTE0XHU1YzZjXHU1ZGNkXHU2MWZjXHU2MWZlXHU2NTFkXHU2NTFjXHU2NTk1XHU2NmU5XHU2YWZiXHU2YjA0XHU2YWZhXHU2YmIy'@; put 'XHU3MDRjXHU3MjFiXHU3MmE3XHU3NGQ2XHU3NGQ0XHU3NjY5XHU3N2QzXHU3YzUwXHU3ZThmXHU3ZThjXHU3ZmJjXHU4NjE3XHU4NjJkXHU4NjFhXHU4ODIzXHU4ODIyXHU4ODIxXHU4ODFmXHU4OTZhXHU4OTZjXHU4OWJkXHU4Yjc0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMTk2XS5s'@; put 'ZW5ndGg7KytzKTY1NTMzIT09Y1sxOTZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk2XVtzXV09NTAxNzYrcyxoWzUwMTc2K3NdPWNbMTk2XVtzXSk7Zm9yKGNbMTk3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Yjc3XHU4Yjdk'@; put 'XHU4ZDEzXHU4ZThhXHU4ZThkXHU4ZThiXHU4ZjVmXHU4ZmFmXHU5MWJhXHU5NDJlXHU5NDMzXHU5NDM1XHU5NDNhXHU5NDM4XHU5NDMyXHU5NDJiXHU5NWUyXHU5NzM4XHU5NzM5XHU5NzMyXHU5N2ZmXHU5ODY3XHU5ODY1XHU5OTU3XHU5YTQ1XHU5YTQzXHU5YTQwXHU5YTNlXHU5YWNmXHU5'@; put 'YjU0XHU5YjUxXHU5YzJkXHU5YzI1XHU5ZGFmXHU5ZGI0XHU5ZGMyXHU5ZGI4XHU5ZTlkXHU5ZWVmXHU5ZjE5XHU5ZjVjXHU5ZjY2XHU5ZjY3XHU1MTNjXHU1MTNiXHU1NmM4XHU1NmNhXHU1NmM5XHU1YjdmXHU1ZGQ0XHU1ZGQyXHU1ZjRlXHU2MWZmXHU2NTI0XHU2YjBhXHU2YjYxXHU3MDUx'@; put 'XHU3MDU4XHU3MzgwXHU3NGU0XHU3NThhXHU3NjZlXHU3NjZjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OWIzXHU3YzYwXHU3YzVmXHU4MDdlXHU4MDdkXHU4MWRmXHU4OTcyXHU4OTZmXHU4OWZjXHU4YjgwXHU4ZDE2XHU4ZDE3XHU4ZTkxXHU4ZTkzXHU4ZjYx'@; put 'XHU5MTQ4XHU5NDQ0XHU5NDUxXHU5NDUyXHU5NzNkXHU5NzNlXHU5N2MzXHU5N2MxXHU5ODZiXHU5OTU1XHU5YTU1XHU5YTRkXHU5YWQyXHU5YjFhXHU5YzQ5XHU5YzMxXHU5YzNlXHU5YzNiXHU5ZGQzXHU5ZGQ3XHU5ZjM0XHU5ZjZjXHU5ZjZhXHU5Zjk0XHU1NmNjXHU1ZGQ2XHU2MjAwXHU2'@; put 'NTIzXHU2NTJiXHU2NTJhXHU2NmVjXHU2YjEwXHU3NGRhXHU3YWNhXHU3YzY0XHU3YzYzXHU3YzY1XHU3ZTkzXHU3ZTk2XHU3ZTk0XHU4MWUyXHU4NjM4XHU4NjNmXHU4ODMxXHU4YjhhXHU5MDkwXHU5MDhmXHU5NDYzXHU5NDYwXHU5NDY0XHU5NzY4XHU5ODZmXHU5OTVjXHU5YTVhXHU5YTVi'@; put 'XHU5YTU3XHU5YWQzXHU5YWQ0XHU5YWQxXHU5YzU0XHU5YzU3XHU5YzU2XHU5ZGU1XHU5ZTlmXHU5ZWY0XHU1NmQxXHU1OGU5XHU2NTJjXHU3MDVlXHU3NjcxXHU3NjcyXHU3N2Q3XHU3ZjUwXHU3Zjg4XHU4ODM2XHU4ODM5XHU4ODYyXHU4YjkzXHU4YjkyXHVmZmZkIi5zcGxpdCgiIikscz0w'@; put 'O3MhPWNbMTk3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOTddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk3XVtzXV09NTA0MzIrcyxoWzUwNDMyK3NdPWNbMTk3XVtzXSk7Zm9yKGNbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHU4Yjk2XHU4Mjc3XHU4ZDFiXHU5MWMwXHU5NDZhXHU5NzQyXHU5NzQ4XHU5NzQ0XHU5N2M2XHU5ODcwXHU5YTVmXHU5YjIyXHU5YjU4XHU5YzVmXHU5ZGY5XHU5ZGZhXHU5ZTdjXHU5ZTdkXHU5ZjA3XHU5Zjc3XHU5ZjcyXHU1ZWYzXHU2YjE2XHU3MDYzXHU3YzZjXHU3YzZlXHU4ODNiXHU4'@; put 'OWMwXHU4ZWExXHU5MWMxXHU5NDcyXHU5NDcwXHU5ODcxXHU5OTVlXHU5YWQ2XHU5YjIzXHU5ZWNjXHU3MDY0XHU3N2RhXHU4YjlhXHU5NDc3XHU5N2M5XHU5YTYyXHU5YTY1XHU3ZTljXHU4YjljXHU4ZWFhXHU5MWM1XHU5NDdkXHU5NDdlXHU5NDdjXHU5Yzc3XHU5Yzc4XHU5ZWY3XHU4YzU0'@; put 'XHU5NDdmXHU5ZTFhXHU3MjI4XHU5YTZhXHU5YjMxXHU5ZTFiXHU5ZTFlXHU3YzcyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5z'@; put 'cGxpdCgiIikscz0wO3MhPWNbMTk4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1sxOThdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMTk4XVtzXV09NTA2ODgrcyxoWzUwNjg4K3NdPWNbMTk4XVtzXSk7Zm9yKGNbMjAxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHU0ZTQyXHU0ZTVjXHU1MWY1XHU1MzFhXHU1MzgyXHU0ZTA3XHU0ZTBjXHU0ZTQ3XHU0ZThkXHU1NmQ3XHVmYTBjXHU1YzZlXHU1ZjczXHU0ZTBmXHU1MTg3XHU0ZTBlXHU0ZTJlXHU0ZTkzXHU0ZWMyXHU0ZWM5XHU0ZWM4XHU1MTk4XHU1MmZjXHU1MzZjXHU1M2I5XHU1'@; put 'NzIwXHU1OTAzXHU1OTJjXHU1YzEwXHU1ZGZmXHU2NWUxXHU2YmIzXHU2YmNjXHU2YzE0XHU3MjNmXHU0ZTMxXHU0ZTNjXHU0ZWU4XHU0ZWRjXHU0ZWU5XHU0ZWUxXHU0ZWRkXHU0ZWRhXHU1MjBjXHU1MzFjXHU1MzRjXHU1NzIyXHU1NzIzXHU1OTE3XHU1OTJmXHU1YjgxXHU1Yjg0XHU1YzEy'@; put 'XHU1YzNiXHU1Yzc0XHU1YzczXHU1ZTA0XHU1ZTgwXHU1ZTgyXHU1ZmM5XHU2MjA5XHU2MjUwXHU2YzE1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzM2XHU2YzQzXHU2YzNmXHU2YzNiXHU3MmFlXHU3MmIwXHU3MzhhXHU3OWI4XHU4MDhhXHU5NjFlXHU0ZjBl'@; put 'XHU0ZjE4XHU0ZjJjXHU0ZWY1XHU0ZjE0XHU0ZWYxXHU0ZjAwXHU0ZWY3XHU0ZjA4XHU0ZjFkXHU0ZjAyXHU0ZjA1XHU0ZjIyXHU0ZjEzXHU0ZjA0XHU0ZWY0XHU0ZjEyXHU1MWIxXHU1MjEzXHU1MjA5XHU1MjEwXHU1MmE2XHU1MzIyXHU1MzFmXHU1MzRkXHU1MzhhXHU1NDA3XHU1NmUxXHU1'@; put 'NmRmXHU1NzJlXHU1NzJhXHU1NzM0XHU1OTNjXHU1OTgwXHU1OTdjXHU1OTg1XHU1OTdiXHU1OTdlXHU1OTc3XHU1OTdmXHU1YjU2XHU1YzE1XHU1YzI1XHU1YzdjXHU1YzdhXHU1YzdiXHU1YzdlXHU1ZGRmXHU1ZTc1XHU1ZTg0XHU1ZjAyXHU1ZjFhXHU1Zjc0XHU1ZmQ1XHU1ZmQ0XHU1ZmNm'@; put 'XHU2MjVjXHU2MjVlXHU2MjY0XHU2MjYxXHU2MjY2XHU2MjYyXHU2MjU5XHU2MjYwXHU2MjVhXHU2MjY1XHU2NWVmXHU2NWVlXHU2NzNlXHU2NzM5XHU2NzM4XHU2NzNiXHU2NzNhXHU2NzNmXHU2NzNjXHU2NzMzXHU2YzE4XHU2YzQ2XHU2YzUyXHU2YzVjXHU2YzRmXHU2YzRhXHU2YzU0XHU2'@; put 'YzRiXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjAxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjAxXVtzXV09NTE0NTYrcyxoWzUxNDU2K3NdPWNbMjAxXVtzXSk7Zm9yKGNbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzRjXHU3MDcxXHU3MjVlXHU3MmI0XHU3MmI1XHU3MzhlXHU3NTJhXHU3NjdmXHU3YTc1XHU3ZjUxXHU4Mjc4XHU4MjdjXHU4MjgwXHU4MjdkXHU4MjdmXHU4NjRkXHU4OTdlXHU5MDk5XHU5MDk3XHU5MDk4XHU5MDliXHU5MDk0XHU5NjIyXHU5'@; put 'NjI0XHU5NjIwXHU5NjIzXHU0ZjU2XHU0ZjNiXHU0ZjYyXHU0ZjQ5XHU0ZjUzXHU0ZjY0XHU0ZjNlXHU0ZjY3XHU0ZjUyXHU0ZjVmXHU0ZjQxXHU0ZjU4XHU0ZjJkXHU0ZjMzXHU0ZjNmXHU0ZjYxXHU1MThmXHU1MWI5XHU1MjFjXHU1MjFlXHU1MjIxXHU1MmFkXHU1MmFlXHU1MzA5XHU1MzYz'@; put 'XHU1MzcyXHU1MzhlXHU1MzhmXHU1NDMwXHU1NDM3XHU1NDJhXHU1NDU0XHU1NDQ1XHU1NDE5XHU1NDFjXHU1NDI1XHU1NDE4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NDNkXHU1NDRmXHU1NDQxXHU1NDI4XHU1NDI0XHU1NDQ3XHU1NmVlXHU1NmU3XHU1NmU1'@; put 'XHU1NzQxXHU1NzQ1XHU1NzRjXHU1NzQ5XHU1NzRiXHU1NzUyXHU1OTA2XHU1OTQwXHU1OWE2XHU1OTk4XHU1OWEwXHU1OTk3XHU1OThlXHU1OWEyXHU1OTkwXHU1OThmXHU1OWE3XHU1OWExXHU1YjhlXHU1YjkyXHU1YzI4XHU1YzJhXHU1YzhkXHU1YzhmXHU1Yzg4XHU1YzhiXHU1Yzg5XHU1'@; put 'YzkyXHU1YzhhXHU1Yzg2XHU1YzkzXHU1Yzk1XHU1ZGUwXHU1ZTBhXHU1ZTBlXHU1ZThiXHU1ZTg5XHU1ZThjXHU1ZTg4XHU1ZThkXHU1ZjA1XHU1ZjFkXHU1Zjc4XHU1Zjc2XHU1ZmQyXHU1ZmQxXHU1ZmQwXHU1ZmVkXHU1ZmU4XHU1ZmVlXHU1ZmYzXHU1ZmUxXHU1ZmU0XHU1ZmUzXHU1ZmZh'@; put 'XHU1ZmVmXHU1ZmY3XHU1ZmZiXHU2MDAwXHU1ZmY0XHU2MjNhXHU2MjgzXHU2MjhjXHU2MjhlXHU2MjhmXHU2Mjk0XHU2Mjg3XHU2MjcxXHU2MjdiXHU2MjdhXHU2MjcwXHU2MjgxXHU2Mjg4XHU2Mjc3XHU2MjdkXHU2MjcyXHU2Mjc0XHU2NTM3XHU2NWYwXHU2NWY0XHU2NWYzXHU2NWYyXHU2'@; put 'NWY1XHU2NzQ1XHU2NzQ3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjAyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjAyXVtzXV09NTE3MTIrcyxoWzUxNzEyK3NdPWNbMjAyXVtzXSk7Zm9yKGNbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzU5XHU2NzU1XHU2NzRjXHU2NzQ4XHU2NzVkXHU2NzRkXHU2NzVhXHU2NzRiXHU2YmQwXHU2YzE5XHU2YzFhXHU2Yzc4XHU2YzY3XHU2YzZiXHU2Yzg0XHU2YzhiXHU2YzhmXHU2YzcxXHU2YzZmXHU2YzY5XHU2YzlhXHU2'@; put 'YzZkXHU2Yzg3XHU2Yzk1XHU2YzljXHU2YzY2XHU2YzczXHU2YzY1XHU2YzdiXHU2YzhlXHU3MDc0XHU3MDdhXHU3MjYzXHU3MmJmXHU3MmJkXHU3MmMzXHU3MmM2XHU3MmMxXHU3MmJhXHU3MmM1XHU3Mzk1XHU3Mzk3XHU3MzkzXHU3Mzk0XHU3MzkyXHU3NTNhXHU3NTM5XHU3NTk0XHU3NTk1'@; put 'XHU3NjgxXHU3OTNkXHU4MDM0XHU4MDk1XHU4MDk5XHU4MDkwXHU4MDkyXHU4MDljXHU4MjkwXHU4MjhmXHU4Mjg1XHU4MjhlXHU4MjkxXHU4MjkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhhXHU4MjgzXHU4Mjg0XHU4Yzc4XHU4ZmM5XHU4ZmJmXHU5MDlm'@; put 'XHU5MGExXHU5MGE1XHU5MDllXHU5MGE3XHU5MGEwXHU5NjMwXHU5NjI4XHU5NjJmXHU5NjJkXHU0ZTMzXHU0Zjk4XHU0ZjdjXHU0Zjg1XHU0ZjdkXHU0ZjgwXHU0Zjg3XHU0Zjc2XHU0Zjc0XHU0Zjg5XHU0Zjg0XHU0Zjc3XHU0ZjRjXHU0Zjk3XHU0ZjZhXHU0ZjlhXHU0Zjc5XHU0ZjgxXHU0'@; put 'Zjc4XHU0ZjkwXHU0ZjljXHU0Zjk0XHU0ZjllXHU0ZjkyXHU0ZjgyXHU0Zjk1XHU0ZjZiXHU0ZjZlXHU1MTllXHU1MWJjXHU1MWJlXHU1MjM1XHU1MjMyXHU1MjMzXHU1MjQ2XHU1MjMxXHU1MmJjXHU1MzBhXHU1MzBiXHU1MzNjXHU1MzkyXHU1Mzk0XHU1NDg3XHU1NDdmXHU1NDgxXHU1NDkx'@; put 'XHU1NDgyXHU1NDg4XHU1NDZiXHU1NDdhXHU1NDdlXHU1NDY1XHU1NDZjXHU1NDc0XHU1NDY2XHU1NDhkXHU1NDZmXHU1NDYxXHU1NDYwXHU1NDk4XHU1NDYzXHU1NDY3XHU1NDY0XHU1NmY3XHU1NmY5XHU1NzZmXHU1NzcyXHU1NzZkXHU1NzZiXHU1NzcxXHU1NzcwXHU1Nzc2XHU1NzgwXHU1'@; put 'Nzc1XHU1NzdiXHU1NzczXHU1Nzc0XHU1NzYyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjAzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjAzXVtzXV09NTE5NjgrcyxoWzUxOTY4K3NdPWNbMjAzXVtzXSk7Zm9yKGNbMjA0XT0iXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzY4XHU1NzdkXHU1OTBjXHU1OTQ1XHU1OWI1XHU1OWJhXHU1OWNmXHU1OWNlXHU1OWIyXHU1OWNjXHU1OWMxXHU1OWI2XHU1OWJjXHU1OWMzXHU1OWQ2XHU1OWIxXHU1OWJkXHU1OWMwXHU1OWM4XHU1'@; put 'OWI0XHU1OWM3XHU1YjYyXHU1YjY1XHU1YjkzXHU1Yjk1XHU1YzQ0XHU1YzQ3XHU1Y2FlXHU1Y2E0XHU1Y2EwXHU1Y2I1XHU1Y2FmXHU1Y2E4XHU1Y2FjXHU1YzlmXHU1Y2EzXHU1Y2FkXHU1Y2EyXHU1Y2FhXHU1Y2E3XHU1YzlkXHU1Y2E1XHU1Y2I2XHU1Y2IwXHU1Y2E2XHU1ZTE3XHU1ZTE0'@; put 'XHU1ZTE5XHU1ZjI4XHU1ZjIyXHU1ZjIzXHU1ZjI0XHU1ZjU0XHU1ZjgyXHU1ZjdlXHU1ZjdkXHU1ZmRlXHU1ZmU1XHU2MDJkXHU2MDI2XHU2MDE5XHU2MDMyXHU2MDBiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDM0XHU2MDBhXHU2MDE3XHU2MDMzXHU2MDFh'@; put 'XHU2MDFlXHU2MDJjXHU2MDIyXHU2MDBkXHU2MDEwXHU2MDJlXHU2MDEzXHU2MDExXHU2MDBjXHU2MDA5XHU2MDFjXHU2MjE0XHU2MjNkXHU2MmFkXHU2MmI0XHU2MmQxXHU2MmJlXHU2MmFhXHU2MmI2XHU2MmNhXHU2MmFlXHU2MmIzXHU2MmFmXHU2MmJiXHU2MmE5XHU2MmIwXHU2MmI4XHU2'@; put 'NTNkXHU2NWE4XHU2NWJiXHU2NjA5XHU2NWZjXHU2NjA0XHU2NjEyXHU2NjA4XHU2NWZiXHU2NjAzXHU2NjBiXHU2NjBkXHU2NjA1XHU2NWZkXHU2NjExXHU2NjEwXHU2NmY2XHU2NzBhXHU2Nzg1XHU2NzZjXHU2NzhlXHU2NzkyXHU2Nzc2XHU2NzdiXHU2Nzk4XHU2Nzg2XHU2Nzg0XHU2Nzc0'@; put 'XHU2NzhkXHU2NzhjXHU2NzdhXHU2NzlmXHU2NzkxXHU2Nzk5XHU2NzgzXHU2NzdkXHU2NzgxXHU2Nzc4XHU2Nzc5XHU2Nzk0XHU2YjI1XHU2YjgwXHU2YjdlXHU2YmRlXHU2YzFkXHU2YzkzXHU2Y2VjXHU2Y2ViXHU2Y2VlXHU2Y2Q5XHU2Y2I2XHU2Y2Q0XHU2Y2FkXHU2Y2U3XHU2Y2I3XHU2'@; put 'Y2QwXHU2Y2MyXHU2Y2JhXHU2Y2MzXHU2Y2M2XHU2Y2VkXHU2Y2YyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA0XVtzXV09NTIyMjQrcyxoWzUyMjI0K3NdPWNbMjA0XVtzXSk7Zm9yKGNb'@; put 'MjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Y2QyXHU2Y2RkXHU2Y2I0XHU2YzhhXHU2YzlkXHU2YzgwXHU2Y2RlXHU2Y2MwXHU2ZDMwXHU2Y2NkXHU2Y2M3XHU2Y2IwXHU2Y2Y5XHU2Y2NmXHU2Y2U5XHU2Y2QxXHU3MDk0XHU3'@; put 'MDk4XHU3MDg1XHU3MDkzXHU3MDg2XHU3MDg0XHU3MDkxXHU3MDk2XHU3MDgyXHU3MDlhXHU3MDgzXHU3MjZhXHU3MmQ2XHU3MmNiXHU3MmQ4XHU3MmM5XHU3MmRjXHU3MmQyXHU3MmQ0XHU3MmRhXHU3MmNjXHU3MmQxXHU3M2E0XHU3M2ExXHU3M2FkXHU3M2E2XHU3M2EyXHU3M2EwXHU3M2Fj'@; put 'XHU3MzlkXHU3NGRkXHU3NGU4XHU3NTNmXHU3NTQwXHU3NTNlXHU3NThjXHU3NTk4XHU3NmFmXHU3NmYzXHU3NmYxXHU3NmYwXHU3NmY1XHU3N2Y4XHU3N2ZjXHU3N2Y5XHU3N2ZiXHU3N2ZhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2Y3XHU3OTQyXHU3OTNm'@; put 'XHU3OWM1XHU3YTc4XHU3YTdiXHU3YWZiXHU3Yzc1XHU3Y2ZkXHU4MDM1XHU4MDhmXHU4MGFlXHU4MGEzXHU4MGI4XHU4MGI1XHU4MGFkXHU4MjIwXHU4MmEwXHU4MmMwXHU4MmFiXHU4MjlhXHU4Mjk4XHU4MjliXHU4MmI1XHU4MmE3XHU4MmFlXHU4MmJjXHU4MjllXHU4MmJhXHU4MmI0XHU4'@; put 'MmE4XHU4MmExXHU4MmE5XHU4MmMyXHU4MmE0XHU4MmMzXHU4MmI2XHU4MmEyXHU4NjcwXHU4NjZmXHU4NjZkXHU4NjZlXHU4YzU2XHU4ZmQyXHU4ZmNiXHU4ZmQzXHU4ZmNkXHU4ZmQ2XHU4ZmQ1XHU4ZmQ3XHU5MGIyXHU5MGI0XHU5MGFmXHU5MGIzXHU5MGIwXHU5NjM5XHU5NjNkXHU5NjNj'@; put 'XHU5NjNhXHU5NjQzXHU0ZmNkXHU0ZmM1XHU0ZmQzXHU0ZmIyXHU0ZmM5XHU0ZmNiXHU0ZmMxXHU0ZmQ0XHU0ZmRjXHU0ZmQ5XHU0ZmJiXHU0ZmIzXHU0ZmRiXHU0ZmM3XHU0ZmQ2XHU0ZmJhXHU0ZmMwXHU0ZmI5XHU0ZmVjXHU1MjQ0XHU1MjQ5XHU1MmMwXHU1MmMyXHU1MzNkXHU1MzdjXHU1'@; put 'Mzk3XHU1Mzk2XHU1Mzk5XHU1Mzk4XHU1NGJhXHU1NGExXHU1NGFkXHU1NGE1XHU1NGNmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA1XVtzXV09NTI0ODArcyxoWzUyNDgwK3NdPWNbMjA1'@; put 'XVtzXSk7Zm9yKGNbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGMzXHU4MzBkXHU1NGI3XHU1NGFlXHU1NGQ2XHU1NGI2XHU1NGM1XHU1NGM2XHU1NGEwXHU1NDcwXHU1NGJjXHU1NGEyXHU1NGJlXHU1NDcyXHU1NGRlXHU1'@; put 'NGIwXHU1N2I1XHU1NzllXHU1NzlmXHU1N2E0XHU1NzhjXHU1Nzk3XHU1NzlkXHU1NzliXHU1Nzk0XHU1Nzk4XHU1NzhmXHU1Nzk5XHU1N2E1XHU1NzlhXHU1Nzk1XHU1OGY0XHU1OTBkXHU1OTUzXHU1OWUxXHU1OWRlXHU1OWVlXHU1YTAwXHU1OWYxXHU1OWRkXHU1OWZhXHU1OWZkXHU1OWZj'@; put 'XHU1OWY2XHU1OWU0XHU1OWYyXHU1OWY3XHU1OWRiXHU1OWU5XHU1OWYzXHU1OWY1XHU1OWUwXHU1OWZlXHU1OWY0XHU1OWVkXHU1YmE4XHU1YzRjXHU1Y2QwXHU1Y2Q4XHU1Y2NjXHU1Y2Q3XHU1Y2NiXHU1Y2RiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1Y2Rl'@; put 'XHU1Y2RhXHU1Y2M5XHU1Y2M3XHU1Y2NhXHU1Y2Q2XHU1Y2QzXHU1Y2Q0XHU1Y2NmXHU1Y2M4XHU1Y2M2XHU1Y2NlXHU1Y2RmXHU1Y2Y4XHU1ZGY5XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTIwXHU1ZTI0XHU1ZWIwXHU1ZWE0XHU1ZWEyXHU1ZTliXHU1ZWEzXHU1ZWE1XHU1ZjA3XHU1ZjJlXHU1'@; put 'ZjU2XHU1Zjg2XHU2MDM3XHU2MDM5XHU2MDU0XHU2MDcyXHU2MDVlXHU2MDQ1XHU2MDUzXHU2MDQ3XHU2MDQ5XHU2MDViXHU2MDRjXHU2MDQwXHU2MDQyXHU2MDVmXHU2MDI0XHU2MDQ0XHU2MDU4XHU2MDY2XHU2MDZlXHU2MjQyXHU2MjQzXHU2MmNmXHU2MzBkXHU2MzBiXHU2MmY1XHU2MzBl'@; put 'XHU2MzAzXHU2MmViXHU2MmY5XHU2MzBmXHU2MzBjXHU2MmY4XHU2MmY2XHU2MzAwXHU2MzEzXHU2MzE0XHU2MmZhXHU2MzE1XHU2MmZiXHU2MmYwXHU2NTQxXHU2NTQzXHU2NWFhXHU2NWJmXHU2NjM2XHU2NjIxXHU2NjMyXHU2NjM1XHU2NjFjXHU2NjI2XHU2NjIyXHU2NjMzXHU2NjJiXHU2'@; put 'NjNhXHU2NjFkXHU2NjM0XHU2NjM5XHU2NjJlXHU2NzBmXHU2NzEwXHU2N2MxXHU2N2YyXHU2N2M4XHU2N2JhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA2XVtzXV09NTI3MzYrcyxoWzUy'@; put 'NzM2K3NdPWNbMjA2XVtzXSk7Zm9yKGNbMjA3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2N2RjXHU2N2JiXHU2N2Y4XHU2N2Q4XHU2N2MwXHU2N2I3XHU2N2M1XHU2N2ViXHU2N2U0XHU2N2RmXHU2N2I1XHU2N2NkXHU2N2IzXHU2'@; put 'N2Y3XHU2N2Y2XHU2N2VlXHU2N2UzXHU2N2MyXHU2N2I5XHU2N2NlXHU2N2U3XHU2N2YwXHU2N2IyXHU2N2ZjXHU2N2M2XHU2N2VkXHU2N2NjXHU2N2FlXHU2N2U2XHU2N2RiXHU2N2ZhXHU2N2M5XHU2N2NhXHU2N2MzXHU2N2VhXHU2N2NiXHU2YjI4XHU2YjgyXHU2Yjg0XHU2YmI2XHU2YmQ2'@; put 'XHU2YmQ4XHU2YmUwXHU2YzIwXHU2YzIxXHU2ZDI4XHU2ZDM0XHU2ZDJkXHU2ZDFmXHU2ZDNjXHU2ZDNmXHU2ZDEyXHU2ZDBhXHU2Y2RhXHU2ZDMzXHU2ZDA0XHU2ZDE5XHU2ZDNhXHU2ZDFhXHU2ZDExXHU2ZDAwXHU2ZDFkXHU2ZDQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHU2ZDAxXHU2ZDE4XHU2ZDM3XHU2ZDAzXHU2ZDBmXHU2ZDQwXHU2ZDA3XHU2ZDIwXHU2ZDJjXHU2ZDA4XHU2ZDIyXHU2ZDA5XHU2ZDEwXHU3MGI3XHU3MDlmXHU3MGJlXHU3MGIxXHU3MGIwXHU3MGExXHU3MGI0XHU3MGI1XHU3MGE5XHU3MjQxXHU3MjQ5XHU3MjRhXHU3MjZjXHU3'@; put 'MjcwXHU3MjczXHU3MjZlXHU3MmNhXHU3MmU0XHU3MmU4XHU3MmViXHU3MmRmXHU3MmVhXHU3MmU2XHU3MmUzXHU3Mzg1XHU3M2NjXHU3M2MyXHU3M2M4XHU3M2M1XHU3M2I5XHU3M2I2XHU3M2I1XHU3M2I0XHU3M2ViXHU3M2JmXHU3M2M3XHU3M2JlXHU3M2MzXHU3M2M2XHU3M2I4XHU3M2Ni'@; put 'XHU3NGVjXHU3NGVlXHU3NTJlXHU3NTQ3XHU3NTQ4XHU3NWE3XHU3NWFhXHU3Njc5XHU3NmM0XHU3NzA4XHU3NzAzXHU3NzA0XHU3NzA1XHU3NzBhXHU3NmY3XHU3NmZiXHU3NmZhXHU3N2U3XHU3N2U4XHU3ODA2XHU3ODExXHU3ODEyXHU3ODA1XHU3ODEwXHU3ODBmXHU3ODBlXHU3ODA5XHU3'@; put 'ODAzXHU3ODEzXHU3OTRhXHU3OTRjXHU3OTRiXHU3OTQ1XHU3OTQ0XHU3OWQ1XHU3OWNkXHU3OWNmXHU3OWQ2XHU3OWNlXHU3YTgwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjA3XVtzXV09'@; put 'NTI5OTIrcyxoWzUyOTkyK3NdPWNbMjA3XVtzXSk7Zm9yKGNbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTdlXHU3YWQxXHU3YjAwXHU3YjAxXHU3YzdhXHU3Yzc4XHU3Yzc5XHU3YzdmXHU3YzgwXHU3YzgxXHU3ZDAzXHU3'@; put 'ZDA4XHU3ZDAxXHU3ZjU4XHU3ZjkxXHU3ZjhkXHU3ZmJlXHU4MDA3XHU4MDBlXHU4MDBmXHU4MDE0XHU4MDM3XHU4MGQ4XHU4MGM3XHU4MGUwXHU4MGQxXHU4MGM4XHU4MGMyXHU4MGQwXHU4MGM1XHU4MGUzXHU4MGQ5XHU4MGRjXHU4MGNhXHU4MGQ1XHU4MGM5XHU4MGNmXHU4MGQ3XHU4MGU2'@; put 'XHU4MGNkXHU4MWZmXHU4MjIxXHU4Mjk0XHU4MmQ5XHU4MmZlXHU4MmY5XHU4MzA3XHU4MmU4XHU4MzAwXHU4MmQ1XHU4MzNhXHU4MmViXHU4MmQ2XHU4MmY0XHU4MmVjXHU4MmUxXHU4MmYyXHU4MmY1XHU4MzBjXHU4MmZiXHU4MmY2XHU4MmYwXHU4MmVhXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHU4MmU0XHU4MmUwXHU4MmZhXHU4MmYzXHU4MmVkXHU4Njc3XHU4Njc0XHU4NjdjXHU4NjczXHU4ODQxXHU4ODRlXHU4ODY3XHU4ODZhXHU4ODY5XHU4OWQzXHU4YTA0XHU4YTA3XHU4ZDcyXHU4ZmUzXHU4ZmUxXHU4ZmVlXHU4ZmUwXHU5MGYxXHU5MGJkXHU5'@; put 'MGJmXHU5MGQ1XHU5MGM1XHU5MGJlXHU5MGM3XHU5MGNiXHU5MGM4XHU5MWQ0XHU5MWQzXHU5NjU0XHU5NjRmXHU5NjUxXHU5NjUzXHU5NjRhXHU5NjRlXHU1MDFlXHU1MDA1XHU1MDA3XHU1MDEzXHU1MDIyXHU1MDMwXHU1MDFiXHU0ZmY1XHU0ZmY0XHU1MDMzXHU1MDM3XHU1MDJjXHU0ZmY2'@; put 'XHU0ZmY3XHU1MDE3XHU1MDFjXHU1MDIwXHU1MDI3XHU1MDM1XHU1MDJmXHU1MDMxXHU1MDBlXHU1MTVhXHU1MTk0XHU1MTkzXHU1MWNhXHU1MWM0XHU1MWM1XHU1MWM4XHU1MWNlXHU1MjYxXHU1MjVhXHU1MjUyXHU1MjVlXHU1MjVmXHU1MjU1XHU1MjYyXHU1MmNkXHU1MzBlXHU1MzllXHU1'@; put 'NTI2XHU1NGUyXHU1NTE3XHU1NTEyXHU1NGU3XHU1NGYzXHU1NGU0XHU1NTFhXHU1NGZmXHU1NTA0XHU1NTA4XHU1NGViXHU1NTExXHU1NTA1XHU1NGYxXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDhdW3NdLmNoYXJDb2RlQXQoMCkmJih5'@; put 'W2NbMjA4XVtzXV09NTMyNDgrcyxoWzUzMjQ4K3NdPWNbMjA4XVtzXSk7Zm9yKGNbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBhXHU1NGZiXHU1NGY3XHU1NGY4XHU1NGUwXHU1NTBlXHU1NTAzXHU1NTBiXHU1NzAxXHU1'@; put 'NzAyXHU1N2NjXHU1ODMyXHU1N2Q1XHU1N2QyXHU1N2JhXHU1N2M2XHU1N2JkXHU1N2JjXHU1N2I4XHU1N2I2XHU1N2JmXHU1N2M3XHU1N2QwXHU1N2I5XHU1N2MxXHU1OTBlXHU1OTRhXHU1YTE5XHU1YTE2XHU1YTJkXHU1YTJlXHU1YTE1XHU1YTBmXHU1YTE3XHU1YTBhXHU1YTFlXHU1YTMz'@; put 'XHU1YjZjXHU1YmE3XHU1YmFkXHU1YmFjXHU1YzAzXHU1YzU2XHU1YzU0XHU1Y2VjXHU1Y2ZmXHU1Y2VlXHU1Y2YxXHU1Y2Y3XHU1ZDAwXHU1Y2Y5XHU1ZTI5XHU1ZTI4XHU1ZWE4XHU1ZWFlXHU1ZWFhXHU1ZWFjXHU1ZjMzXHU1ZjMwXHU1ZjY3XHU2MDVkXHU2MDVhXHU2MDY3XHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDQxXHU2MGEyXHU2MDg4XHU2MDgwXHU2MDkyXHU2MDgxXHU2MDlkXHU2MDgzXHU2MDk1XHU2MDliXHU2MDk3XHU2MDg3XHU2MDljXHU2MDhlXHU2MjE5XHU2MjQ2XHU2MmYyXHU2MzEwXHU2MzU2XHU2MzJjXHU2MzQ0XHU2MzQ1XHU2'@; put 'MzM2XHU2MzQzXHU2M2U0XHU2MzM5XHU2MzRiXHU2MzRhXHU2MzNjXHU2MzI5XHU2MzQxXHU2MzM0XHU2MzU4XHU2MzU0XHU2MzU5XHU2MzJkXHU2MzQ3XHU2MzMzXHU2MzVhXHU2MzUxXHU2MzM4XHU2MzU3XHU2MzQwXHU2MzQ4XHU2NTRhXHU2NTQ2XHU2NWM2XHU2NWMzXHU2NWM0XHU2NWMy'@; put 'XHU2NjRhXHU2NjVmXHU2NjQ3XHU2NjUxXHU2NzEyXHU2NzEzXHU2ODFmXHU2ODFhXHU2ODQ5XHU2ODMyXHU2ODMzXHU2ODNiXHU2ODRiXHU2ODRmXHU2ODE2XHU2ODMxXHU2ODFjXHU2ODM1XHU2ODJiXHU2ODJkXHU2ODJmXHU2ODRlXHU2ODQ0XHU2ODM0XHU2ODFkXHU2ODEyXHU2ODE0XHU2'@; put 'ODI2XHU2ODI4XHU2ODJlXHU2ODRkXHU2ODNhXHU2ODI1XHU2ODIwXHU2YjJjXHU2YjJmXHU2YjJkXHU2YjMxXHU2YjM0XHU2YjZkXHU4MDgyXHU2Yjg4XHU2YmU2XHU2YmU0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjA5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMDldW3NdLmNoYXJD'@; put 'b2RlQXQoMCkmJih5W2NbMjA5XVtzXV09NTM1MDQrcyxoWzUzNTA0K3NdPWNbMjA5XVtzXSk7Zm9yKGNbMjEwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YmU4XHU2YmUzXHU2YmUyXHU2YmU3XHU2YzI1XHU2ZDdhXHU2ZDYzXHU2'@; put 'ZDY0XHU2ZDc2XHU2ZDBkXHU2ZDYxXHU2ZDkyXHU2ZDU4XHU2ZDYyXHU2ZDZkXHU2ZDZmXHU2ZDkxXHU2ZDhkXHU2ZGVmXHU2ZDdmXHU2ZDg2XHU2ZDVlXHU2ZDY3XHU2ZDYwXHU2ZDk3XHU2ZDcwXHU2ZDdjXHU2ZDVmXHU2ZDgyXHU2ZDk4XHU2ZDJmXHU2ZDY4XHU2ZDhiXHU2ZDdlXHU2ZDgw'@; put 'XHU2ZDg0XHU2ZDE2XHU2ZDgzXHU2ZDdiXHU2ZDdkXHU2ZDc1XHU2ZDkwXHU3MGRjXHU3MGQzXHU3MGQxXHU3MGRkXHU3MGNiXHU3ZjM5XHU3MGUyXHU3MGQ3XHU3MGQyXHU3MGRlXHU3MGUwXHU3MGQ0XHU3MGNkXHU3MGM1XHU3MGM2XHU3MGM3XHU3MGRhXHU3MGNlXHU3MGUxXHU3MjQyXHU3'@; put 'Mjc4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Mjc3XHU3Mjc2XHU3MzAwXHU3MmZhXHU3MmY0XHU3MmZlXHU3MmY2XHU3MmYzXHU3MmZiXHU3MzAxXHU3M2QzXHU3M2Q5XHU3M2U1XHU3M2Q2XHU3M2JjXHU3M2U3XHU3M2UzXHU3M2U5XHU3M2RjXHU3M2QyXHU3'@; put 'M2RiXHU3M2Q0XHU3M2RkXHU3M2RhXHU3M2Q3XHU3M2Q4XHU3M2U4XHU3NGRlXHU3NGRmXHU3NGY0XHU3NGY1XHU3NTIxXHU3NTViXHU3NTVmXHU3NWIwXHU3NWMxXHU3NWJiXHU3NWM0XHU3NWMwXHU3NWJmXHU3NWI2XHU3NWJhXHU3NjhhXHU3NmM5XHU3NzFkXHU3NzFiXHU3NzEwXHU3NzEz'@; put 'XHU3NzEyXHU3NzIzXHU3NzExXHU3NzE1XHU3NzE5XHU3NzFhXHU3NzIyXHU3NzI3XHU3ODIzXHU3ODJjXHU3ODIyXHU3ODM1XHU3ODJmXHU3ODI4XHU3ODJlXHU3ODJiXHU3ODIxXHU3ODI5XHU3ODMzXHU3ODJhXHU3ODMxXHU3OTU0XHU3OTViXHU3OTRmXHU3OTVjXHU3OTUzXHU3OTUyXHU3'@; put 'OTUxXHU3OWViXHU3OWVjXHU3OWUwXHU3OWVlXHU3OWVkXHU3OWVhXHU3OWRjXHU3OWRlXHU3OWRkXHU3YTg2XHU3YTg5XHU3YTg1XHU3YThiXHU3YThjXHU3YThhXHU3YTg3XHU3YWQ4XHU3YjEwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjEwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1sy'@; put 'MTBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjEwXVtzXV09NTM3NjArcyxoWzUzNzYwK3NdPWNbMjEwXVtzXSk7Zm9yKGNbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YjA0XHU3YjEzXHU3YjA1XHU3YjBmXHU3YjA4XHU3'@; put 'YjBhXHU3YjBlXHU3YjA5XHU3YjEyXHU3Yzg0XHU3YzkxXHU3YzhhXHU3YzhjXHU3Yzg4XHU3YzhkXHU3Yzg1XHU3ZDFlXHU3ZDFkXHU3ZDExXHU3ZDBlXHU3ZDE4XHU3ZDE2XHU3ZDEzXHU3ZDFmXHU3ZDEyXHU3ZDBmXHU3ZDBjXHU3ZjVjXHU3ZjYxXHU3ZjVlXHU3ZjYwXHU3ZjVkXHU3ZjVi'@; put 'XHU3Zjk2XHU3ZjkyXHU3ZmMzXHU3ZmMyXHU3ZmMwXHU4MDE2XHU4MDNlXHU4MDM5XHU4MGZhXHU4MGYyXHU4MGY5XHU4MGY1XHU4MTAxXHU4MGZiXHU4MTAwXHU4MjAxXHU4MjJmXHU4MjI1XHU4MzMzXHU4MzJkXHU4MzQ0XHU4MzE5XHU4MzUxXHU4MzI1XHU4MzU2XHU4MzNmXHU4MzQxXHU4'@; put 'MzI2XHU4MzFjXHU4MzIyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MzQyXHU4MzRlXHU4MzFiXHU4MzJhXHU4MzA4XHU4MzNjXHU4MzRkXHU4MzE2XHU4MzI0XHU4MzIwXHU4MzM3XHU4MzJmXHU4MzI5XHU4MzQ3XHU4MzQ1XHU4MzRjXHU4MzUzXHU4MzFlXHU4'@; put 'MzJjXHU4MzRiXHU4MzI3XHU4MzQ4XHU4NjUzXHU4NjUyXHU4NmEyXHU4NmE4XHU4Njk2XHU4NjhkXHU4NjkxXHU4NjllXHU4Njg3XHU4Njk3XHU4Njg2XHU4NjhiXHU4NjlhXHU4Njg1XHU4NmE1XHU4Njk5XHU4NmExXHU4NmE3XHU4Njk1XHU4Njk4XHU4NjhlXHU4NjlkXHU4NjkwXHU4Njk0'@; put 'XHU4ODQzXHU4ODQ0XHU4ODZkXHU4ODc1XHU4ODc2XHU4ODcyXHU4ODgwXHU4ODcxXHU4ODdmXHU4ODZmXHU4ODgzXHU4ODdlXHU4ODc0XHU4ODdjXHU4YTEyXHU4YzQ3XHU4YzU3XHU4YzdiXHU4Y2E0XHU4Y2EzXHU4ZDc2XHU4ZDc4XHU4ZGI1XHU4ZGI3XHU4ZGI2XHU4ZWQxXHU4ZWQzXHU4'@; put 'ZmZlXHU4ZmY1XHU5MDAyXHU4ZmZmXHU4ZmZiXHU5MDA0XHU4ZmZjXHU4ZmY2XHU5MGQ2XHU5MGUwXHU5MGQ5XHU5MGRhXHU5MGUzXHU5MGRmXHU5MGU1XHU5MGQ4XHU5MGRiXHU5MGQ3XHU5MGRjXHU5MGU0XHU5MTUwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjExXS5sZW5ndGg7Kytz'@; put 'KTY1NTMzIT09Y1syMTFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjExXVtzXV09NTQwMTYrcyxoWzU0MDE2K3NdPWNbMjExXVtzXSk7Zm9yKGNbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MTRlXHU5MTRmXHU5MWQ1XHU5'@; put 'MWUyXHU5MWRhXHU5NjVjXHU5NjVmXHU5NmJjXHU5OGUzXHU5YWRmXHU5YjJmXHU0ZTdmXHU1MDcwXHU1MDZhXHU1MDYxXHU1MDVlXHU1MDYwXHU1MDUzXHU1MDRiXHU1MDVkXHU1MDcyXHU1MDQ4XHU1MDRkXHU1MDQxXHU1MDViXHU1MDRhXHU1MDYyXHU1MDE1XHU1MDQ1XHU1MDVmXHU1MDY5'@; put 'XHU1MDZiXHU1MDYzXHU1MDY0XHU1MDQ2XHU1MDQwXHU1MDZlXHU1MDczXHU1MDU3XHU1MDUxXHU1MWQwXHU1MjZiXHU1MjZkXHU1MjZjXHU1MjZlXHU1MmQ2XHU1MmQzXHU1MzJkXHU1MzljXHU1NTc1XHU1NTc2XHU1NTNjXHU1NTRkXHU1NTUwXHU1NTM0XHU1NTJhXHU1NTUxXHU1NTYyXHU1'@; put 'NTM2XHU1NTM1XHU1NTMwXHU1NTUyXHU1NTQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBjXHU1NTMyXHU1NTY1XHU1NTRlXHU1NTM5XHU1NTQ4XHU1NTJkXHU1NTNiXHU1NTQwXHU1NTRiXHU1NzBhXHU1NzA3XHU1N2ZiXHU1ODE0XHU1N2UyXHU1N2Y2XHU1'@; put 'N2RjXHU1N2Y0XHU1ODAwXHU1N2VkXHU1N2ZkXHU1ODA4XHU1N2Y4XHU1ODBiXHU1N2YzXHU1N2NmXHU1ODA3XHU1N2VlXHU1N2UzXHU1N2YyXHU1N2U1XHU1N2VjXHU1N2UxXHU1ODBlXHU1N2ZjXHU1ODEwXHU1N2U3XHU1ODAxXHU1ODBjXHU1N2YxXHU1N2U5XHU1N2YwXHU1ODBkXHU1ODA0'@; put 'XHU1OTVjXHU1YTYwXHU1YTU4XHU1YTU1XHU1YTY3XHU1YTVlXHU1YTM4XHU1YTM1XHU1YTZkXHU1YTUwXHU1YTVmXHU1YTY1XHU1YTZjXHU1YTUzXHU1YTY0XHU1YTU3XHU1YTQzXHU1YTVkXHU1YTUyXHU1YTQ0XHU1YTViXHU1YTQ4XHU1YThlXHU1YTNlXHU1YTRkXHU1YTM5XHU1YTRjXHU1'@; put 'YTcwXHU1YTY5XHU1YTQ3XHU1YTUxXHU1YTU2XHU1YTQyXHU1YTVjXHU1YjcyXHU1YjZlXHU1YmMxXHU1YmMwXHU1YzU5XHU1ZDFlXHU1ZDBiXHU1ZDFkXHU1ZDFhXHU1ZDIwXHU1ZDBjXHU1ZDI4XHU1ZDBkXHU1ZDI2XHU1ZDI1XHU1ZDBmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjEy'@; put 'XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjEyXVtzXV09NTQyNzIrcyxoWzU0MjcyK3NdPWNbMjEyXVtzXSk7Zm9yKGNbMjEzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZDMwXHU1'@; put 'ZDEyXHU1ZDIzXHU1ZDFmXHU1ZDJlXHU1ZTNlXHU1ZTM0XHU1ZWIxXHU1ZWI0XHU1ZWI5XHU1ZWIyXHU1ZWIzXHU1ZjM2XHU1ZjM4XHU1ZjliXHU1Zjk2XHU1ZjlmXHU2MDhhXHU2MDkwXHU2MDg2XHU2MGJlXHU2MGIwXHU2MGJhXHU2MGQzXHU2MGQ0XHU2MGNmXHU2MGU0XHU2MGQ5XHU2MGRk'@; put 'XHU2MGM4XHU2MGIxXHU2MGRiXHU2MGI3XHU2MGNhXHU2MGJmXHU2MGMzXHU2MGNkXHU2MGMwXHU2MzMyXHU2MzY1XHU2MzhhXHU2MzgyXHU2MzdkXHU2M2JkXHU2MzllXHU2M2FkXHU2MzlkXHU2Mzk3XHU2M2FiXHU2MzhlXHU2MzZmXHU2Mzg3XHU2MzkwXHU2MzZlXHU2M2FmXHU2Mzc1XHU2'@; put 'MzljXHU2MzZkXHU2M2FlXHU2MzdjXHU2M2E0XHU2MzNiXHU2MzlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Mzc4XHU2Mzg1XHU2MzgxXHU2MzkxXHU2MzhkXHU2MzcwXHU2NTUzXHU2NWNkXHU2NjY1XHU2NjYxXHU2NjViXHU2NjU5XHU2NjVjXHU2NjYyXHU2'@; put 'NzE4XHU2ODc5XHU2ODg3XHU2ODkwXHU2ODljXHU2ODZkXHU2ODZlXHU2OGFlXHU2OGFiXHU2OTU2XHU2ODZmXHU2OGEzXHU2OGFjXHU2OGE5XHU2ODc1XHU2ODc0XHU2OGIyXHU2ODhmXHU2ODc3XHU2ODkyXHU2ODdjXHU2ODZiXHU2ODcyXHU2OGFhXHU2ODgwXHU2ODcxXHU2ODdlXHU2ODli'@; put 'XHU2ODk2XHU2ODhiXHU2OGEwXHU2ODg5XHU2OGE0XHU2ODc4XHU2ODdiXHU2ODkxXHU2ODhjXHU2ODhhXHU2ODdkXHU2YjM2XHU2YjMzXHU2YjM3XHU2YjM4XHU2YjkxXHU2YjhmXHU2YjhkXHU2YjhlXHU2YjhjXHU2YzJhXHU2ZGMwXHU2ZGFiXHU2ZGI0XHU2ZGIzXHU2ZTc0XHU2ZGFjXHU2'@; put 'ZGU5XHU2ZGUyXHU2ZGI3XHU2ZGY2XHU2ZGQ0XHU2ZTAwXHU2ZGM4XHU2ZGUwXHU2ZGRmXHU2ZGQ2XHU2ZGJlXHU2ZGU1XHU2ZGRjXHU2ZGRkXHU2ZGRiXHU2ZGY0XHU2ZGNhXHU2ZGJkXHU2ZGVkXHU2ZGYwXHU2ZGJhXHU2ZGQ1XHU2ZGMyXHU2ZGNmXHU2ZGM5XHVmZmZkIi5zcGxpdCgiIiks'@; put 'cz0wO3MhPWNbMjEzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjEzXVtzXV09NTQ1MjgrcyxoWzU0NTI4K3NdPWNbMjEzXVtzXSk7Zm9yKGNbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHU2ZGQwXHU2ZGYyXHU2ZGQzXHU2ZGZkXHU2ZGQ3XHU2ZGNkXHU2ZGUzXHU2ZGJiXHU3MGZhXHU3MTBkXHU3MGY3XHU3MTE3XHU3MGY0XHU3MTBjXHU3MGYwXHU3MTA0XHU3MGYzXHU3MTEwXHU3MGZjXHU3MGZmXHU3MTA2XHU3MTEzXHU3MTAwXHU3MGY4XHU3MGY2XHU3MTBiXHU3MTAy'@; put 'XHU3MTBlXHU3MjdlXHU3MjdiXHU3MjdjXHU3MjdmXHU3MzFkXHU3MzE3XHU3MzA3XHU3MzExXHU3MzE4XHU3MzBhXHU3MzA4XHU3MmZmXHU3MzBmXHU3MzFlXHU3Mzg4XHU3M2Y2XHU3M2Y4XHU3M2Y1XHU3NDA0XHU3NDAxXHU3M2ZkXHU3NDA3XHU3NDAwXHU3M2ZhXHU3M2ZjXHU3M2ZmXHU3'@; put 'NDBjXHU3NDBiXHU3M2Y0XHU3NDA4XHU3NTY0XHU3NTYzXHU3NWNlXHU3NWQyXHU3NWNmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NWNiXHU3NWNjXHU3NWQxXHU3NWQwXHU3NjhmXHU3Njg5XHU3NmQzXHU3NzM5XHU3NzJmXHU3NzJkXHU3NzMxXHU3NzMyXHU3'@; put 'NzM0XHU3NzMzXHU3NzNkXHU3NzI1XHU3NzNiXHU3NzM1XHU3ODQ4XHU3ODUyXHU3ODQ5XHU3ODRkXHU3ODRhXHU3ODRjXHU3ODI2XHU3ODQ1XHU3ODUwXHU3OTY0XHU3OTY3XHU3OTY5XHU3OTZhXHU3OTYzXHU3OTZiXHU3OTYxXHU3OWJiXHU3OWZhXHU3OWY4XHU3OWY2XHU3OWY3XHU3YThm'@; put 'XHU3YTk0XHU3YTkwXHU3YjM1XHU3YjQ3XHU3YjM0XHU3YjI1XHU3YjMwXHU3YjIyXHU3YjI0XHU3YjMzXHU3YjE4XHU3YjJhXHU3YjFkXHU3YjMxXHU3YjJiXHU3YjJkXHU3YjJmXHU3YjMyXHU3YjM4XHU3YjFhXHU3YjIzXHU3Yzk0XHU3Yzk4XHU3Yzk2XHU3Y2EzXHU3ZDM1XHU3ZDNkXHU3'@; put 'ZDM4XHU3ZDM2XHU3ZDNhXHU3ZDQ1XHU3ZDJjXHU3ZDI5XHU3ZDQxXHU3ZDQ3XHU3ZDNlXHU3ZDNmXHU3ZDRhXHU3ZDNiXHU3ZDI4XHU3ZjYzXHU3Zjk1XHU3ZjljXHU3ZjlkXHU3ZjliXHU3ZmNhXHU3ZmNiXHU3ZmNkXHU3ZmQwXHU3ZmQxXHU3ZmM3XHU3ZmNmXHU3ZmM5XHU4MDFmXHVmZmZk'@; put 'Ii5zcGxpdCgiIikscz0wO3MhPWNbMjE0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE0XVtzXV09NTQ3ODQrcyxoWzU0Nzg0K3NdPWNbMjE0XVtzXSk7Zm9yKGNbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHU4MDFlXHU4MDFiXHU4MDQ3XHU4MDQzXHU4MDQ4XHU4MTE4XHU4MTI1XHU4MTE5XHU4MTFiXHU4MTJkXHU4MTFmXHU4MTJjXHU4MTFlXHU4MTIxXHU4MTE1XHU4MTI3XHU4MTFkXHU4MTIyXHU4MjExXHU4MjM4XHU4MjMzXHU4MjNhXHU4MjM0XHU4MjMyXHU4Mjc0'@; put 'XHU4MzkwXHU4M2EzXHU4M2E4XHU4MzhkXHU4MzdhXHU4MzczXHU4M2E0XHU4Mzc0XHU4MzhmXHU4MzgxXHU4Mzk1XHU4Mzk5XHU4Mzc1XHU4Mzk0XHU4M2E5XHU4MzdkXHU4MzgzXHU4MzhjXHU4MzlkXHU4MzliXHU4M2FhXHU4MzhiXHU4MzdlXHU4M2E1XHU4M2FmXHU4Mzg4XHU4Mzk3XHU4'@; put 'M2IwXHU4MzdmXHU4M2E2XHU4Mzg3XHU4M2FlXHU4Mzc2XHU4MzlhXHU4NjU5XHU4NjU2XHU4NmJmXHU4NmI3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NmMyXHU4NmMxXHU4NmM1XHU4NmJhXHU4NmIwXHU4NmM4XHU4NmI5XHU4NmIzXHU4NmI4XHU4NmNjXHU4'@; put 'NmI0XHU4NmJiXHU4NmJjXHU4NmMzXHU4NmJkXHU4NmJlXHU4ODUyXHU4ODg5XHU4ODk1XHU4OGE4XHU4OGEyXHU4OGFhXHU4ODlhXHU4ODkxXHU4OGExXHU4ODlmXHU4ODk4XHU4OGE3XHU4ODk5XHU4ODliXHU4ODk3XHU4OGE0XHU4OGFjXHU4ODhjXHU4ODkzXHU4ODhlXHU4OTgyXHU4OWQ2'@; put 'XHU4OWQ5XHU4OWQ1XHU4YTMwXHU4YTI3XHU4YTJjXHU4YTFlXHU4YzM5XHU4YzNiXHU4YzVjXHU4YzVkXHU4YzdkXHU4Y2E1XHU4ZDdkXHU4ZDdiXHU4ZDc5XHU4ZGJjXHU4ZGMyXHU4ZGI5XHU4ZGJmXHU4ZGMxXHU4ZWQ4XHU4ZWRlXHU4ZWRkXHU4ZWRjXHU4ZWQ3XHU4ZWUwXHU4ZWUxXHU5'@; put 'MDI0XHU5MDBiXHU5MDExXHU5MDFjXHU5MDBjXHU5MDIxXHU5MGVmXHU5MGVhXHU5MGYwXHU5MGY0XHU5MGYyXHU5MGYzXHU5MGQ0XHU5MGViXHU5MGVjXHU5MGU5XHU5MTU2XHU5MTU4XHU5MTVhXHU5MTUzXHU5MTU1XHU5MWVjXHU5MWY0XHU5MWYxXHU5MWYzXHU5MWY4XHU5MWU0XHU5MWY5'@; put 'XHU5MWVhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE1XVtzXV09NTUwNDArcyxoWzU1MDQwK3NdPWNbMjE1XVtzXSk7Zm9yKGNbMjE2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MWViXHU5MWY3XHU5MWU4XHU5MWVlXHU5NTdhXHU5NTg2XHU5NTg4XHU5NjdjXHU5NjZkXHU5NjZiXHU5NjcxXHU5NjZmXHU5NmJmXHU5NzZhXHU5ODA0XHU5OGU1XHU5OTk3XHU1MDliXHU1MDk1XHU1MDk0XHU1MDllXHU1MDhiXHU1MGEz'@; put 'XHU1MDgzXHU1MDhjXHU1MDhlXHU1MDlkXHU1MDY4XHU1MDljXHU1MDkyXHU1MDgyXHU1MDg3XHU1MTVmXHU1MWQ0XHU1MzEyXHU1MzExXHU1M2E0XHU1M2E3XHU1NTkxXHU1NWE4XHU1NWE1XHU1NWFkXHU1NTc3XHU1NjQ1XHU1NWEyXHU1NTkzXHU1NTg4XHU1NThmXHU1NWI1XHU1NTgxXHU1'@; put 'NWEzXHU1NTkyXHU1NWE0XHU1NTdkXHU1NThjXHU1NWE2XHU1NTdmXHU1NTk1XHU1NWExXHU1NThlXHU1NzBjXHU1ODI5XHU1ODM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ODE5XHU1ODFlXHU1ODI3XHU1ODIzXHU1ODI4XHU1N2Y1XHU1ODQ4XHU1ODI1XHU1'@; put 'ODFjXHU1ODFiXHU1ODMzXHU1ODNmXHU1ODM2XHU1ODJlXHU1ODM5XHU1ODM4XHU1ODJkXHU1ODJjXHU1ODNiXHU1OTYxXHU1YWFmXHU1YTk0XHU1YTlmXHU1YTdhXHU1YWEyXHU1YTllXHU1YTc4XHU1YWE2XHU1YTdjXHU1YWE1XHU1YWFjXHU1YTk1XHU1YWFlXHU1YTM3XHU1YTg0XHU1YThh'@; put 'XHU1YTk3XHU1YTgzXHU1YThiXHU1YWE5XHU1YTdiXHU1YTdkXHU1YThjXHU1YTljXHU1YThmXHU1YTkzXHU1YTlkXHU1YmVhXHU1YmNkXHU1YmNiXHU1YmQ0XHU1YmQxXHU1YmNhXHU1YmNlXHU1YzBjXHU1YzMwXHU1ZDM3XHU1ZDQzXHU1ZDZiXHU1ZDQxXHU1ZDRiXHU1ZDNmXHU1ZDM1XHU1'@; put 'ZDUxXHU1ZDRlXHU1ZDU1XHU1ZDMzXHU1ZDNhXHU1ZDUyXHU1ZDNkXHU1ZDMxXHU1ZDU5XHU1ZDQyXHU1ZDM5XHU1ZDQ5XHU1ZDM4XHU1ZDNjXHU1ZDMyXHU1ZDM2XHU1ZDQwXHU1ZDQ1XHU1ZTQ0XHU1ZTQxXHU1ZjU4XHU1ZmE2XHU1ZmE1XHU1ZmFiXHU2MGM5XHU2MGI5XHU2MGNjXHU2MGUy'@; put 'XHU2MGNlXHU2MGM0XHU2MTE0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE2XVtzXV09NTUyOTYrcyxoWzU1Mjk2K3NdPWNbMjE2XVtzXSk7Zm9yKGNbMjE3XT0iXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MGYyXHU2MTBhXHU2MTE2XHU2MTA1XHU2MGY1XHU2MTEzXHU2MGY4XHU2MGZjXHU2MGZlXHU2MGMxXHU2MTAzXHU2MTE4XHU2MTFkXHU2MTEwXHU2MGZmXHU2MTA0XHU2MTBiXHU2MjRhXHU2Mzk0XHU2M2IxXHU2M2Iw'@; put 'XHU2M2NlXHU2M2U1XHU2M2U4XHU2M2VmXHU2M2MzXHU2NDlkXHU2M2YzXHU2M2NhXHU2M2UwXHU2M2Y2XHU2M2Q1XHU2M2YyXHU2M2Y1XHU2NDYxXHU2M2RmXHU2M2JlXHU2M2RkXHU2M2RjXHU2M2M0XHU2M2Q4XHU2M2QzXHU2M2MyXHU2M2M3XHU2M2NjXHU2M2NiXHU2M2M4XHU2M2YwXHU2'@; put 'M2Q3XHU2M2Q5XHU2NTMyXHU2NTY3XHU2NTZhXHU2NTY0XHU2NTVjXHU2NTY4XHU2NTY1XHU2NThjXHU2NTlkXHU2NTllXHU2NWFlXHU2NWQwXHU2NWQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NjdjXHU2NjZjXHU2NjdiXHU2NjgwXHU2NjcxXHU2Njc5XHU2'@; put 'NjZhXHU2NjcyXHU2NzAxXHU2OTBjXHU2OGQzXHU2OTA0XHU2OGRjXHU2OTJhXHU2OGVjXHU2OGVhXHU2OGYxXHU2OTBmXHU2OGQ2XHU2OGY3XHU2OGViXHU2OGU0XHU2OGY2XHU2OTEzXHU2OTEwXHU2OGYzXHU2OGUxXHU2OTA3XHU2OGNjXHU2OTA4XHU2OTcwXHU2OGI0XHU2OTExXHU2OGVm'@; put 'XHU2OGM2XHU2OTE0XHU2OGY4XHU2OGQwXHU2OGZkXHU2OGZjXHU2OGU4XHU2OTBiXHU2OTBhXHU2OTE3XHU2OGNlXHU2OGM4XHU2OGRkXHU2OGRlXHU2OGU2XHU2OGY0XHU2OGQxXHU2OTA2XHU2OGQ0XHU2OGU5XHU2OTE1XHU2OTI1XHU2OGM3XHU2YjM5XHU2YjNiXHU2YjNmXHU2YjNjXHU2'@; put 'Yjk0XHU2Yjk3XHU2Yjk5XHU2Yjk1XHU2YmJkXHU2YmYwXHU2YmYyXHU2YmYzXHU2YzMwXHU2ZGZjXHU2ZTQ2XHU2ZTQ3XHU2ZTFmXHU2ZTQ5XHU2ZTg4XHU2ZTNjXHU2ZTNkXHU2ZTQ1XHU2ZTYyXHU2ZTJiXHU2ZTNmXHU2ZTQxXHU2ZTVkXHU2ZTczXHU2ZTFjXHU2ZTMzXHU2ZTRiXHU2ZTQw'@; put 'XHU2ZTUxXHU2ZTNiXHU2ZTAzXHU2ZTJlXHU2ZTVlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE3XVtzXV09NTU1NTIrcyxoWzU1NTUyK3NdPWNbMjE3XVtzXSk7Zm9yKGNbMjE4XT0iXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZTY4XHU2ZTVjXHU2ZTYxXHU2ZTMxXHU2ZTI4XHU2ZTYwXHU2ZTcxXHU2ZTZiXHU2ZTM5XHU2ZTIyXHU2ZTMwXHU2ZTUzXHU2ZTY1XHU2ZTI3XHU2ZTc4XHU2ZTY0XHU2ZTc3XHU2ZTU1XHU2ZTc5'@; put 'XHU2ZTUyXHU2ZTY2XHU2ZTM1XHU2ZTM2XHU2ZTVhXHU3MTIwXHU3MTFlXHU3MTJmXHU3MGZiXHU3MTJlXHU3MTMxXHU3MTIzXHU3MTI1XHU3MTIyXHU3MTMyXHU3MTFmXHU3MTI4XHU3MTNhXHU3MTFiXHU3MjRiXHU3MjVhXHU3Mjg4XHU3Mjg5XHU3Mjg2XHU3Mjg1XHU3MjhiXHU3MzEyXHU3'@; put 'MzBiXHU3MzMwXHU3MzIyXHU3MzMxXHU3MzMzXHU3MzI3XHU3MzMyXHU3MzJkXHU3MzI2XHU3MzIzXHU3MzM1XHU3MzBjXHU3NDJlXHU3NDJjXHU3NDMwXHU3NDJiXHU3NDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDFhXHU3NDIxXHU3NDJkXHU3NDMxXHU3'@; put 'NDI0XHU3NDIzXHU3NDFkXHU3NDI5XHU3NDIwXHU3NDMyXHU3NGZiXHU3NTJmXHU3NTZmXHU3NTZjXHU3NWU3XHU3NWRhXHU3NWUxXHU3NWU2XHU3NWRkXHU3NWRmXHU3NWU0XHU3NWQ3XHU3Njk1XHU3NjkyXHU3NmRhXHU3NzQ2XHU3NzQ3XHU3NzQ0XHU3NzRkXHU3NzQ1XHU3NzRhXHU3NzRl'@; put 'XHU3NzRiXHU3NzRjXHU3N2RlXHU3N2VjXHU3ODYwXHU3ODY0XHU3ODY1XHU3ODVjXHU3ODZkXHU3ODcxXHU3ODZhXHU3ODZlXHU3ODcwXHU3ODY5XHU3ODY4XHU3ODVlXHU3ODYyXHU3OTc0XHU3OTczXHU3OTcyXHU3OTcwXHU3YTAyXHU3YTBhXHU3YTAzXHU3YTBjXHU3YTA0XHU3YTk5XHU3'@; put 'YWU2XHU3YWU0XHU3YjRhXHU3YjNiXHU3YjQ0XHU3YjQ4XHU3YjRjXHU3YjRlXHU3YjQwXHU3YjU4XHU3YjQ1XHU3Y2EyXHU3YzllXHU3Y2E4XHU3Y2ExXHU3ZDU4XHU3ZDZmXHU3ZDYzXHU3ZDUzXHU3ZDU2XHU3ZDY3XHU3ZDZhXHU3ZDRmXHU3ZDZkXHU3ZDVjXHU3ZDZiXHU3ZDUyXHU3ZDU0'@; put 'XHU3ZDY5XHU3ZDUxXHU3ZDVmXHU3ZDRlXHU3ZjNlXHU3ZjNmXHU3ZjY1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMThdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE4XVtzXV09NTU4MDgrcyxoWzU1ODA4K3NdPWNbMjE4XVtzXSk7Zm9y'@; put 'KGNbMjE5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZjY2XHU3ZmEyXHU3ZmEwXHU3ZmExXHU3ZmQ3XHU4MDUxXHU4MDRmXHU4MDUwXHU4MGZlXHU4MGQ0XHU4MTQzXHU4MTRhXHU4MTUyXHU4MTRmXHU4MTQ3XHU4MTNkXHU4MTRk'@; put 'XHU4MTNhXHU4MWU2XHU4MWVlXHU4MWY3XHU4MWY4XHU4MWY5XHU4MjA0XHU4MjNjXHU4MjNkXHU4MjNmXHU4Mjc1XHU4MzNiXHU4M2NmXHU4M2Y5XHU4NDIzXHU4M2MwXHU4M2U4XHU4NDEyXHU4M2U3XHU4M2U0XHU4M2ZjXHU4M2Y2XHU4NDEwXHU4M2M2XHU4M2M4XHU4M2ViXHU4M2UzXHU4'@; put 'M2JmXHU4NDAxXHU4M2RkXHU4M2U1XHU4M2Q4XHU4M2ZmXHU4M2UxXHU4M2NiXHU4M2NlXHU4M2Q2XHU4M2Y1XHU4M2M5XHU4NDA5XHU4NDBmXHU4M2RlXHU4NDExXHU4NDA2XHU4M2MyXHU4M2YzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4M2Q1XHU4M2ZhXHU4'@; put 'M2M3XHU4M2QxXHU4M2VhXHU4NDEzXHU4M2MzXHU4M2VjXHU4M2VlXHU4M2M0XHU4M2ZiXHU4M2Q3XHU4M2UyXHU4NDFiXHU4M2RiXHU4M2ZlXHU4NmQ4XHU4NmUyXHU4NmU2XHU4NmQzXHU4NmUzXHU4NmRhXHU4NmVhXHU4NmRkXHU4NmViXHU4NmRjXHU4NmVjXHU4NmU5XHU4NmQ3XHU4NmU4'@; put 'XHU4NmQxXHU4ODQ4XHU4ODU2XHU4ODU1XHU4OGJhXHU4OGQ3XHU4OGI5XHU4OGI4XHU4OGMwXHU4OGJlXHU4OGI2XHU4OGJjXHU4OGI3XHU4OGJkXHU4OGIyXHU4OTAxXHU4OGM5XHU4OTk1XHU4OTk4XHU4OTk3XHU4OWRkXHU4OWRhXHU4OWRiXHU4YTRlXHU4YTRkXHU4YTM5XHU4YTU5XHU4'@; put 'YTQwXHU4YTU3XHU4YTU4XHU4YTQ0XHU4YTQ1XHU4YTUyXHU4YTQ4XHU4YTUxXHU4YTRhXHU4YTRjXHU4YTRmXHU4YzVmXHU4YzgxXHU4YzgwXHU4Y2JhXHU4Y2JlXHU4Y2IwXHU4Y2I5XHU4Y2I1XHU4ZDg0XHU4ZDgwXHU4ZDg5XHU4ZGQ4XHU4ZGQzXHU4ZGNkXHU4ZGM3XHU4ZGQ2XHU4ZGRj'@; put 'XHU4ZGNmXHU4ZGQ1XHU4ZGQ5XHU4ZGM4XHU4ZGQ3XHU4ZGM1XHU4ZWVmXHU4ZWY3XHU4ZWZhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjE5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMTldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjE5XVtzXV09NTYwNjQrcyxoWzU2MDY0K3NdPWNb'@; put 'MjE5XVtzXSk7Zm9yKGNbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZWY5XHU4ZWU2XHU4ZWVlXHU4ZWU1XHU4ZWY1XHU4ZWU3XHU4ZWU4XHU4ZWY2XHU4ZWViXHU4ZWYxXHU4ZWVjXHU4ZWY0XHU4ZWU5XHU5MDJkXHU5MDM0'@; put 'XHU5MDJmXHU5MTA2XHU5MTJjXHU5MTA0XHU5MGZmXHU5MGZjXHU5MTA4XHU5MGY5XHU5MGZiXHU5MTAxXHU5MTAwXHU5MTA3XHU5MTA1XHU5MTAzXHU5MTYxXHU5MTY0XHU5MTVmXHU5MTYyXHU5MTYwXHU5MjAxXHU5MjBhXHU5MjI1XHU5MjAzXHU5MjFhXHU5MjI2XHU5MjBmXHU5MjBjXHU5'@; put 'MjAwXHU5MjEyXHU5MWZmXHU5MWZkXHU5MjA2XHU5MjA0XHU5MjI3XHU5MjAyXHU5MjFjXHU5MjI0XHU5MjE5XHU5MjE3XHU5MjA1XHU5MjE2XHU5NTdiXHU5NThkXHU5NThjXHU5NTkwXHU5Njg3XHU5NjdlXHU5Njg4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5'@; put 'Njg5XHU5NjgzXHU5NjgwXHU5NmMyXHU5NmM4XHU5NmMzXHU5NmYxXHU5NmYwXHU5NzZjXHU5NzcwXHU5NzZlXHU5ODA3XHU5OGE5XHU5OGViXHU5Y2U2XHU5ZWY5XHU0ZTgzXHU0ZTg0XHU0ZWI2XHU1MGJkXHU1MGJmXHU1MGM2XHU1MGFlXHU1MGM0XHU1MGNhXHU1MGI0XHU1MGM4XHU1MGMy'@; put 'XHU1MGIwXHU1MGMxXHU1MGJhXHU1MGIxXHU1MGNiXHU1MGM5XHU1MGI2XHU1MGI4XHU1MWQ3XHU1MjdhXHU1Mjc4XHU1MjdiXHU1MjdjXHU1NWMzXHU1NWRiXHU1NWNjXHU1NWQwXHU1NWNiXHU1NWNhXHU1NWRkXHU1NWMwXHU1NWQ0XHU1NWM0XHU1NWU5XHU1NWJmXHU1NWQyXHU1NThkXHU1'@; put 'NWNmXHU1NWQ1XHU1NWUyXHU1NWQ2XHU1NWM4XHU1NWYyXHU1NWNkXHU1NWQ5XHU1NWMyXHU1NzE0XHU1ODUzXHU1ODY4XHU1ODY0XHU1ODRmXHU1ODRkXHU1ODQ5XHU1ODZmXHU1ODU1XHU1ODRlXHU1ODVkXHU1ODU5XHU1ODY1XHU1ODViXHU1ODNkXHU1ODYzXHU1ODcxXHU1OGZjXHU1YWM3'@; put 'XHU1YWM0XHU1YWNiXHU1YWJhXHU1YWI4XHU1YWIxXHU1YWI1XHU1YWIwXHU1YWJmXHU1YWM4XHU1YWJiXHU1YWM2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjIwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjIwXVtzXV09NTYzMjArcyxo'@; put 'WzU2MzIwK3NdPWNbMjIwXVtzXSk7Zm9yKGNbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWI3XHU1YWMwXHU1YWNhXHU1YWI0XHU1YWI2XHU1YWNkXHU1YWI5XHU1YTkwXHU1YmQ2XHU1YmQ4XHU1YmQ5XHU1YzFmXHU1YzMz'@; put 'XHU1ZDcxXHU1ZDYzXHU1ZDRhXHU1ZDY1XHU1ZDcyXHU1ZDZjXHU1ZDVlXHU1ZDY4XHU1ZDY3XHU1ZDYyXHU1ZGYwXHU1ZTRmXHU1ZTRlXHU1ZTRhXHU1ZTRkXHU1ZTRiXHU1ZWM1XHU1ZWNjXHU1ZWM2XHU1ZWNiXHU1ZWM3XHU1ZjQwXHU1ZmFmXHU1ZmFkXHU2MGY3XHU2MTQ5XHU2MTRhXHU2'@; put 'MTJiXHU2MTQ1XHU2MTM2XHU2MTMyXHU2MTJlXHU2MTQ2XHU2MTJmXHU2MTRmXHU2MTI5XHU2MTQwXHU2MjIwXHU5MTY4XHU2MjIzXHU2MjI1XHU2MjI0XHU2M2M1XHU2M2YxXHU2M2ViXHU2NDEwXHU2NDEyXHU2NDA5XHU2NDIwXHU2NDI0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHU2NDMzXHU2NDQzXHU2NDFmXHU2NDE1XHU2NDE4XHU2NDM5XHU2NDM3XHU2NDIyXHU2NDIzXHU2NDBjXHU2NDI2XHU2NDMwXHU2NDI4XHU2NDQxXHU2NDM1XHU2NDJmXHU2NDBhXHU2NDFhXHU2NDQwXHU2NDI1XHU2NDI3XHU2NDBiXHU2M2U3XHU2NDFiXHU2NDJlXHU2NDIx'@; put 'XHU2NDBlXHU2NTZmXHU2NTkyXHU2NWQzXHU2Njg2XHU2NjhjXHU2Njk1XHU2NjkwXHU2NjhiXHU2NjhhXHU2Njk5XHU2Njk0XHU2Njc4XHU2NzIwXHU2OTY2XHU2OTVmXHU2OTM4XHU2OTRlXHU2OTYyXHU2OTcxXHU2OTNmXHU2OTQ1XHU2OTZhXHU2OTM5XHU2OTQyXHU2OTU3XHU2OTU5XHU2'@; put 'OTdhXHU2OTQ4XHU2OTQ5XHU2OTM1XHU2OTZjXHU2OTMzXHU2OTNkXHU2OTY1XHU2OGYwXHU2OTc4XHU2OTM0XHU2OTY5XHU2OTQwXHU2OTZmXHU2OTQ0XHU2OTc2XHU2OTU4XHU2OTQxXHU2OTc0XHU2OTRjXHU2OTNiXHU2OTRiXHU2OTM3XHU2OTVjXHU2OTRmXHU2OTUxXHU2OTMyXHU2OTUy'@; put 'XHU2OTJmXHU2OTdiXHU2OTNjXHU2YjQ2XHU2YjQ1XHU2YjQzXHU2YjQyXHU2YjQ4XHU2YjQxXHU2YjliXHVmYTBkXHU2YmZiXHU2YmZjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjIxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjIxXVtz'@; put 'XV09NTY1NzYrcyxoWzU2NTc2K3NdPWNbMjIxXVtzXSk7Zm9yKGNbMjIyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YmY5XHU2YmY3XHU2YmY4XHU2ZTliXHU2ZWQ2XHU2ZWM4XHU2ZThmXHU2ZWMwXHU2ZTlmXHU2ZTkzXHU2ZTk0'@; put 'XHU2ZWEwXHU2ZWIxXHU2ZWI5XHU2ZWM2XHU2ZWQyXHU2ZWJkXHU2ZWMxXHU2ZTllXHU2ZWM5XHU2ZWI3XHU2ZWIwXHU2ZWNkXHU2ZWE2XHU2ZWNmXHU2ZWIyXHU2ZWJlXHU2ZWMzXHU2ZWRjXHU2ZWQ4XHU2ZTk5XHU2ZTkyXHU2ZThlXHU2ZThkXHU2ZWE0XHU2ZWExXHU2ZWJmXHU2ZWIzXHU2'@; put 'ZWQwXHU2ZWNhXHU2ZTk3XHU2ZWFlXHU2ZWEzXHU3MTQ3XHU3MTU0XHU3MTUyXHU3MTYzXHU3MTYwXHU3MTQxXHU3MTVkXHU3MTYyXHU3MTcyXHU3MTc4XHU3MTZhXHU3MTYxXHU3MTQyXHU3MTU4XHU3MTQzXHU3MTRiXHU3MTcwXHU3MTVmXHU3MTUwXHU3MTUzXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTQ0XHU3MTRkXHU3MTVhXHU3MjRmXHU3MjhkXHU3MjhjXHU3MjkxXHU3MjkwXHU3MjhlXHU3MzNjXHU3MzQyXHU3MzNiXHU3MzNhXHU3MzQwXHU3MzRhXHU3MzQ5XHU3NDQ0XHU3NDRhXHU3NDRiXHU3NDUyXHU3NDUxXHU3NDU3XHU3NDQwXHU3NDRm'@; put 'XHU3NDUwXHU3NDRlXHU3NDQyXHU3NDQ2XHU3NDRkXHU3NDU0XHU3NGUxXHU3NGZmXHU3NGZlXHU3NGZkXHU3NTFkXHU3NTc5XHU3NTc3XHU2OTgzXHU3NWVmXHU3NjBmXHU3NjAzXHU3NWY3XHU3NWZlXHU3NWZjXHU3NWY5XHU3NWY4XHU3NjEwXHU3NWZiXHU3NWY2XHU3NWVkXHU3NWY1XHU3'@; put 'NWZkXHU3Njk5XHU3NmI1XHU3NmRkXHU3NzU1XHU3NzVmXHU3NzYwXHU3NzUyXHU3NzU2XHU3NzVhXHU3NzY5XHU3NzY3XHU3NzU0XHU3NzU5XHU3NzZkXHU3N2UwXHU3ODg3XHU3ODlhXHU3ODk0XHU3ODhmXHU3ODg0XHU3ODk1XHU3ODg1XHU3ODg2XHU3OGExXHU3ODgzXHU3ODc5XHU3ODk5'@; put 'XHU3ODgwXHU3ODk2XHU3ODdiXHU3OTdjXHU3OTgyXHU3OTdkXHU3OTc5XHU3YTExXHU3YTE4XHU3YTE5XHU3YTEyXHU3YTE3XHU3YTE1XHU3YTIyXHU3YTEzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjIyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjJdW3NdLmNoYXJDb2RlQXQoMCkm'@; put 'Jih5W2NbMjIyXVtzXV09NTY4MzIrcyxoWzU2ODMyK3NdPWNbMjIyXVtzXSk7Zm9yKGNbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YTFiXHU3YTEwXHU3YWEzXHU3YWEyXHU3YTllXHU3YWViXHU3YjY2XHU3YjY0XHU3YjZk'@; put 'XHU3Yjc0XHU3YjY5XHU3YjcyXHU3YjY1XHU3YjczXHU3YjcxXHU3YjcwXHU3YjYxXHU3Yjc4XHU3Yjc2XHU3YjYzXHU3Y2IyXHU3Y2I0XHU3Y2FmXHU3ZDg4XHU3ZDg2XHU3ZDgwXHU3ZDhkXHU3ZDdmXHU3ZDg1XHU3ZDdhXHU3ZDhlXHU3ZDdiXHU3ZDgzXHU3ZDdjXHU3ZDhjXHU3ZDk0XHU3'@; put 'ZDg0XHU3ZDdkXHU3ZDkyXHU3ZjZkXHU3ZjZiXHU3ZjY3XHU3ZjY4XHU3ZjZjXHU3ZmE2XHU3ZmE1XHU3ZmE3XHU3ZmRiXHU3ZmRjXHU4MDIxXHU4MTY0XHU4MTYwXHU4MTc3XHU4MTVjXHU4MTY5XHU4MTViXHU4MTYyXHU4MTcyXHU2NzIxXHU4MTVlXHU4MTc2XHU4MTY3XHU4MTZmXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MTQ0XHU4MTYxXHU4MjFkXHU4MjQ5XHU4MjQ0XHU4MjQwXHU4MjQyXHU4MjQ1XHU4NGYxXHU4NDNmXHU4NDU2XHU4NDc2XHU4NDc5XHU4NDhmXHU4NDhkXHU4NDY1XHU4NDUxXHU4NDQwXHU4NDg2XHU4NDY3XHU4NDMwXHU4NDRk'@; put 'XHU4NDdkXHU4NDVhXHU4NDU5XHU4NDc0XHU4NDczXHU4NDVkXHU4NTA3XHU4NDVlXHU4NDM3XHU4NDNhXHU4NDM0XHU4NDdhXHU4NDQzXHU4NDc4XHU4NDMyXHU4NDQ1XHU4NDI5XHU4M2Q5XHU4NDRiXHU4NDJmXHU4NDQyXHU4NDJkXHU4NDVmXHU4NDcwXHU4NDM5XHU4NDRlXHU4NDRjXHU4'@; put 'NDUyXHU4NDZmXHU4NGM1XHU4NDhlXHU4NDNiXHU4NDQ3XHU4NDM2XHU4NDMzXHU4NDY4XHU4NDdlXHU4NDQ0XHU4NDJiXHU4NDYwXHU4NDU0XHU4NDZlXHU4NDUwXHU4NzBiXHU4NzA0XHU4NmY3XHU4NzBjXHU4NmZhXHU4NmQ2XHU4NmY1XHU4NzRkXHU4NmY4XHU4NzBlXHU4NzA5XHU4NzAx'@; put 'XHU4NmY2XHU4NzBkXHU4NzA1XHU4OGQ2XHU4OGNiXHU4OGNkXHU4OGNlXHU4OGRlXHU4OGRiXHU4OGRhXHU4OGNjXHU4OGQwXHU4OTg1XHU4OTliXHU4OWRmXHU4OWU1XHU4OWU0XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjIzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjNdW3NdLmNo'@; put 'YXJDb2RlQXQoMCkmJih5W2NbMjIzXVtzXV09NTcwODgrcyxoWzU3MDg4K3NdPWNbMjIzXVtzXSk7Zm9yKGNbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OWUxXHU4OWUwXHU4OWUyXHU4OWRjXHU4OWU2XHU4YTc2XHU4YTg2'@; put 'XHU4YTdmXHU4YTYxXHU4YTNmXHU4YTc3XHU4YTgyXHU4YTg0XHU4YTc1XHU4YTgzXHU4YTgxXHU4YTc0XHU4YTdhXHU4YzNjXHU4YzRiXHU4YzRhXHU4YzY1XHU4YzY0XHU4YzY2XHU4Yzg2XHU4Yzg0XHU4Yzg1XHU4Y2NjXHU4ZDY4XHU4ZDY5XHU4ZDkxXHU4ZDhjXHU4ZDhlXHU4ZDhmXHU4'@; put 'ZDhkXHU4ZDkzXHU4ZDk0XHU4ZDkwXHU4ZDkyXHU4ZGYwXHU4ZGUwXHU4ZGVjXHU4ZGYxXHU4ZGVlXHU4ZGQwXHU4ZGU5XHU4ZGUzXHU4ZGUyXHU4ZGU3XHU4ZGYyXHU4ZGViXHU4ZGY0XHU4ZjA2XHU4ZWZmXHU4ZjAxXHU4ZjAwXHU4ZjA1XHU4ZjA3XHU4ZjA4XHU4ZjAyXHU4ZjBiXHU5MDUy'@; put 'XHU5MDNmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MDQ0XHU5MDQ5XHU5MDNkXHU5MTEwXHU5MTBkXHU5MTBmXHU5MTExXHU5MTE2XHU5MTE0XHU5MTBiXHU5MTBlXHU5MTZlXHU5MTZmXHU5MjQ4XHU5MjUyXHU5MjMwXHU5MjNhXHU5MjY2XHU5MjMzXHU5MjY1'@; put 'XHU5MjVlXHU5MjgzXHU5MjJlXHU5MjRhXHU5MjQ2XHU5MjZkXHU5MjZjXHU5MjRmXHU5MjYwXHU5MjY3XHU5MjZmXHU5MjM2XHU5MjYxXHU5MjcwXHU5MjMxXHU5MjU0XHU5MjYzXHU5MjUwXHU5MjcyXHU5MjRlXHU5MjUzXHU5MjRjXHU5MjU2XHU5MjMyXHU5NTlmXHU5NTljXHU5NTllXHU5'@; put 'NTliXHU5NjkyXHU5NjkzXHU5NjkxXHU5Njk3XHU5NmNlXHU5NmZhXHU5NmZkXHU5NmY4XHU5NmY1XHU5NzczXHU5Nzc3XHU5Nzc4XHU5NzcyXHU5ODBmXHU5ODBkXHU5ODBlXHU5OGFjXHU5OGY2XHU5OGY5XHU5OWFmXHU5OWIyXHU5OWIwXHU5OWI1XHU5YWFkXHU5YWFiXHU5YjViXHU5Y2Vh'@; put 'XHU5Y2VkXHU5Y2U3XHU5ZTgwXHU5ZWZkXHU1MGU2XHU1MGQ0XHU1MGQ3XHU1MGU4XHU1MGYzXHU1MGRiXHU1MGVhXHU1MGRkXHU1MGU0XHU1MGQzXHU1MGVjXHU1MGYwXHU1MGVmXHU1MGUzXHU1MGUwXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI0XS5sZW5ndGg7KytzKTY1NTMzIT09'@; put 'Y1syMjRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI0XVtzXV09NTczNDQrcyxoWzU3MzQ0K3NdPWNbMjI0XVtzXSk7Zm9yKGNbMjI1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MWQ4XHU1MjgwXHU1MjgxXHU1MmU5XHU1MmVi'@; put 'XHU1MzMwXHU1M2FjXHU1NjI3XHU1NjE1XHU1NjBjXHU1NjEyXHU1NWZjXHU1NjBmXHU1NjFjXHU1NjAxXHU1NjEzXHU1NjAyXHU1NWZhXHU1NjFkXHU1NjA0XHU1NWZmXHU1NWY5XHU1ODg5XHU1ODdjXHU1ODkwXHU1ODk4XHU1ODg2XHU1ODgxXHU1ODdmXHU1ODc0XHU1ODhiXHU1ODdhXHU1'@; put 'ODg3XHU1ODkxXHU1ODhlXHU1ODc2XHU1ODgyXHU1ODg4XHU1ODdiXHU1ODk0XHU1ODhmXHU1OGZlXHU1OTZiXHU1YWRjXHU1YWVlXHU1YWU1XHU1YWQ1XHU1YWVhXHU1YWRhXHU1YWVkXHU1YWViXHU1YWYzXHU1YWUyXHU1YWUwXHU1YWRiXHU1YWVjXHU1YWRlXHU1YWRkXHU1YWQ5XHU1YWU4'@; put 'XHU1YWRmXHU1Yjc3XHU1YmUwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YmUzXHU1YzYzXHU1ZDgyXHU1ZDgwXHU1ZDdkXHU1ZDg2XHU1ZDdhXHU1ZDgxXHU1ZDc3XHU1ZDhhXHU1ZDg5XHU1ZDg4XHU1ZDdlXHU1ZDdjXHU1ZDhkXHU1ZDc5XHU1ZDdmXHU1ZTU4'@; put 'XHU1ZTU5XHU1ZTUzXHU1ZWQ4XHU1ZWQxXHU1ZWQ3XHU1ZWNlXHU1ZWRjXHU1ZWQ1XHU1ZWQ5XHU1ZWQyXHU1ZWQ0XHU1ZjQ0XHU1ZjQzXHU1ZjZmXHU1ZmI2XHU2MTJjXHU2MTI4XHU2MTQxXHU2MTVlXHU2MTcxXHU2MTczXHU2MTUyXHU2MTUzXHU2MTcyXHU2MTZjXHU2MTgwXHU2MTc0XHU2'@; put 'MTU0XHU2MTdhXHU2MTViXHU2MTY1XHU2MTNiXHU2MTZhXHU2MTYxXHU2MTU2XHU2MjI5XHU2MjI3XHU2MjJiXHU2NDJiXHU2NDRkXHU2NDViXHU2NDVkXHU2NDc0XHU2NDc2XHU2NDcyXHU2NDczXHU2NDdkXHU2NDc1XHU2NDY2XHU2NGE2XHU2NDRlXHU2NDgyXHU2NDVlXHU2NDVjXHU2NDRi'@; put 'XHU2NDUzXHU2NDYwXHU2NDUwXHU2NDdmXHU2NDNmXHU2NDZjXHU2NDZiXHU2NDU5XHU2NDY1XHU2NDc3XHU2NTczXHU2NWEwXHU2NmExXHU2NmEwXHU2NjlmXHU2NzA1XHU2NzA0XHU2NzIyXHU2OWIxXHU2OWI2XHU2OWM5XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI1XS5sZW5ndGg7'@; put 'KytzKTY1NTMzIT09Y1syMjVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI1XVtzXV09NTc2MDArcyxoWzU3NjAwK3NdPWNbMjI1XVtzXSk7Zm9yKGNbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OWEwXHU2OWNlXHU2OTk2'@; put 'XHU2OWIwXHU2OWFjXHU2OWJjXHU2OTkxXHU2OTk5XHU2OThlXHU2OWE3XHU2OThkXHU2OWE5XHU2OWJlXHU2OWFmXHU2OWJmXHU2OWM0XHU2OWJkXHU2OWE0XHU2OWQ0XHU2OWI5XHU2OWNhXHU2OTlhXHU2OWNmXHU2OWIzXHU2OTkzXHU2OWFhXHU2OWExXHU2OTllXHU2OWQ5XHU2OTk3XHU2'@; put 'OTkwXHU2OWMyXHU2OWI1XHU2OWE1XHU2OWM2XHU2YjRhXHU2YjRkXHU2YjRiXHU2YjllXHU2YjlmXHU2YmEwXHU2YmMzXHU2YmM0XHU2YmZlXHU2ZWNlXHU2ZWY1XHU2ZWYxXHU2ZjAzXHU2ZjI1XHU2ZWY4XHU2ZjM3XHU2ZWZiXHU2ZjJlXHU2ZjA5XHU2ZjRlXHU2ZjE5XHU2ZjFhXHU2ZjI3'@; put 'XHU2ZjE4XHU2ZjNiXHU2ZjEyXHU2ZWVkXHU2ZjBhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZjM2XHU2ZjczXHU2ZWY5XHU2ZWVlXHU2ZjJkXHU2ZjQwXHU2ZjMwXHU2ZjNjXHU2ZjM1XHU2ZWViXHU2ZjA3XHU2ZjBlXHU2ZjQzXHU2ZjA1XHU2ZWZkXHU2ZWY2'@; put 'XHU2ZjM5XHU2ZjFjXHU2ZWZjXHU2ZjNhXHU2ZjFmXHU2ZjBkXHU2ZjFlXHU2ZjA4XHU2ZjIxXHU3MTg3XHU3MTkwXHU3MTg5XHU3MTgwXHU3MTg1XHU3MTgyXHU3MThmXHU3MTdiXHU3MTg2XHU3MTgxXHU3MTk3XHU3MjQ0XHU3MjUzXHU3Mjk3XHU3Mjk1XHU3MjkzXHU3MzQzXHU3MzRkXHU3'@; put 'MzUxXHU3MzRjXHU3NDYyXHU3NDczXHU3NDcxXHU3NDc1XHU3NDcyXHU3NDY3XHU3NDZlXHU3NTAwXHU3NTAyXHU3NTAzXHU3NTdkXHU3NTkwXHU3NjE2XHU3NjA4XHU3NjBjXHU3NjE1XHU3NjExXHU3NjBhXHU3NjE0XHU3NmI4XHU3NzgxXHU3NzdjXHU3Nzg1XHU3NzgyXHU3NzZlXHU3Nzgw'@; put 'XHU3NzZmXHU3NzdlXHU3NzgzXHU3OGIyXHU3OGFhXHU3OGI0XHU3OGFkXHU3OGE4XHU3ODdlXHU3OGFiXHU3ODllXHU3OGE1XHU3OGEwXHU3OGFjXHU3OGEyXHU3OGE0XHU3OTk4XHU3OThhXHU3OThiXHU3OTk2XHU3OTk1XHU3OTk0XHU3OTkzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNb'@; put 'MjI2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI2XVtzXV09NTc4NTYrcyxoWzU3ODU2K3NdPWNbMjI2XVtzXSk7Zm9yKGNbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTk3'@; put 'XHU3OTg4XHU3OTkyXHU3OTkwXHU3YTJiXHU3YTRhXHU3YTMwXHU3YTJmXHU3YTI4XHU3YTI2XHU3YWE4XHU3YWFiXHU3YWFjXHU3YWVlXHU3Yjg4XHU3YjljXHU3YjhhXHU3YjkxXHU3YjkwXHU3Yjk2XHU3YjhkXHU3YjhjXHU3YjliXHU3YjhlXHU3Yjg1XHU3Yjk4XHU1Mjg0XHU3Yjk5XHU3'@; put 'YmE0XHU3YjgyXHU3Y2JiXHU3Y2JmXHU3Y2JjXHU3Y2JhXHU3ZGE3XHU3ZGI3XHU3ZGMyXHU3ZGEzXHU3ZGFhXHU3ZGMxXHU3ZGMwXHU3ZGM1XHU3ZDlkXHU3ZGNlXHU3ZGM0XHU3ZGM2XHU3ZGNiXHU3ZGNjXHU3ZGFmXHU3ZGI5XHU3ZDk2XHU3ZGJjXHU3ZDlmXHU3ZGE2XHU3ZGFlXHU3ZGE5'@; put 'XHU3ZGExXHU3ZGM5XHU3ZjczXHU3ZmUyXHU3ZmUzXHU3ZmU1XHU3ZmRlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDI0XHU4MDVkXHU4MDVjXHU4MTg5XHU4MTg2XHU4MTgzXHU4MTg3XHU4MThkXHU4MThjXHU4MThiXHU4MjE1XHU4NDk3XHU4NGE0XHU4NGEx'@; put 'XHU4NDlmXHU4NGJhXHU4NGNlXHU4NGMyXHU4NGFjXHU4NGFlXHU4NGFiXHU4NGI5XHU4NGI0XHU4NGMxXHU4NGNkXHU4NGFhXHU4NDlhXHU4NGIxXHU4NGQwXHU4NDlkXHU4NGE3XHU4NGJiXHU4NGEyXHU4NDk0XHU4NGM3XHU4NGNjXHU4NDliXHU4NGE5XHU4NGFmXHU4NGE4XHU4NGQ2XHU4'@; put 'NDk4XHU4NGI2XHU4NGNmXHU4NGEwXHU4NGQ3XHU4NGQ0XHU4NGQyXHU4NGRiXHU4NGIwXHU4NDkxXHU4NjYxXHU4NzMzXHU4NzIzXHU4NzI4XHU4NzZiXHU4NzQwXHU4NzJlXHU4NzFlXHU4NzIxXHU4NzE5XHU4NzFiXHU4NzQzXHU4NzJjXHU4NzQxXHU4NzNlXHU4NzQ2XHU4NzIwXHU4NzMy'@; put 'XHU4NzJhXHU4NzJkXHU4NzNjXHU4NzEyXHU4NzNhXHU4NzMxXHU4NzM1XHU4NzQyXHU4NzI2XHU4NzI3XHU4NzM4XHU4NzI0XHU4NzFhXHU4NzMwXHU4NzExXHU4OGY3XHU4OGU3XHU4OGYxXHU4OGYyXHU4OGZhXHU4OGZlXHU4OGVlXHU4OGZjXHU4OGY2XHU4OGZiXHVmZmZkIi5zcGxpdCgi'@; put 'Iikscz0wO3MhPWNbMjI3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI3XVtzXV09NTgxMTIrcyxoWzU4MTEyK3NdPWNbMjI3XVtzXSk7Zm9yKGNbMjI4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHU4OGYwXHU4OGVjXHU4OGViXHU4OTlkXHU4OWExXHU4OTlmXHU4OTllXHU4OWU5XHU4OWViXHU4OWU4XHU4YWFiXHU4YTk5XHU4YThiXHU4YTkyXHU4YThmXHU4YTk2XHU4YzNkXHU4YzY4XHU4YzY5XHU4Y2Q1XHU4Y2NmXHU4Y2Q3XHU4ZDk2XHU4ZTA5XHU4ZTAyXHU4ZGZmXHU4'@; put 'ZTBkXHU4ZGZkXHU4ZTBhXHU4ZTAzXHU4ZTA3XHU4ZTA2XHU4ZTA1XHU4ZGZlXHU4ZTAwXHU4ZTA0XHU4ZjEwXHU4ZjExXHU4ZjBlXHU4ZjBkXHU5MTIzXHU5MTFjXHU5MTIwXHU5MTIyXHU5MTFmXHU5MTFkXHU5MTFhXHU5MTI0XHU5MTIxXHU5MTFiXHU5MTdhXHU5MTcyXHU5MTc5XHU5MTcz'@; put 'XHU5MmE1XHU5MmE0XHU5Mjc2XHU5MjliXHU5MjdhXHU5MmEwXHU5Mjk0XHU5MmFhXHU5MjhkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MmE2XHU5MjlhXHU5MmFiXHU5Mjc5XHU5Mjk3XHU5MjdmXHU5MmEzXHU5MmVlXHU5MjhlXHU5MjgyXHU5Mjk1XHU5MmEy'@; put 'XHU5MjdkXHU5Mjg4XHU5MmExXHU5MjhhXHU5Mjg2XHU5MjhjXHU5Mjk5XHU5MmE3XHU5MjdlXHU5Mjg3XHU5MmE5XHU5MjlkXHU5MjhiXHU5MjJkXHU5NjllXHU5NmExXHU5NmZmXHU5NzU4XHU5NzdkXHU5NzdhXHU5NzdlXHU5NzgzXHU5NzgwXHU5NzgyXHU5NzdiXHU5Nzg0XHU5NzgxXHU5'@; put 'NzdmXHU5N2NlXHU5N2NkXHU5ODE2XHU5OGFkXHU5OGFlXHU5OTAyXHU5OTAwXHU5OTA3XHU5OTlkXHU5OTljXHU5OWMzXHU5OWI5XHU5OWJiXHU5OWJhXHU5OWMyXHU5OWJkXHU5OWM3XHU5YWIxXHU5YWUzXHU5YWU3XHU5YjNlXHU5YjNmXHU5YjYwXHU5YjYxXHU5YjVmXHU5Y2YxXHU5Y2Yy'@; put 'XHU5Y2Y1XHU5ZWE3XHU1MGZmXHU1MTAzXHU1MTMwXHU1MGY4XHU1MTA2XHU1MTA3XHU1MGY2XHU1MGZlXHU1MTBiXHU1MTBjXHU1MGZkXHU1MTBhXHU1MjhiXHU1MjhjXHU1MmYxXHU1MmVmXHU1NjQ4XHU1NjQyXHU1NjRjXHU1NjM1XHU1NjQxXHU1NjRhXHU1NjQ5XHU1NjQ2XHU1NjU4XHVm'@; put 'ZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI4XVtzXV09NTgzNjgrcyxoWzU4MzY4K3NdPWNbMjI4XVtzXSk7Zm9yKGNbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHU1NjVhXHU1NjQwXHU1NjMzXHU1NjNkXHU1NjJjXHU1NjNlXHU1NjM4XHU1NjJhXHU1NjNhXHU1NzFhXHU1OGFiXHU1ODlkXHU1OGIxXHU1OGEwXHU1OGEzXHU1OGFmXHU1OGFjXHU1OGE1XHU1OGExXHU1OGZmXHU1YWZmXHU1YWY0XHU1YWZkXHU1YWY3XHU1'@; put 'YWY2XHU1YjAzXHU1YWY4XHU1YjAyXHU1YWY5XHU1YjAxXHU1YjA3XHU1YjA1XHU1YjBmXHU1YzY3XHU1ZDk5XHU1ZDk3XHU1ZDlmXHU1ZDkyXHU1ZGEyXHU1ZDkzXHU1ZDk1XHU1ZGEwXHU1ZDljXHU1ZGExXHU1ZDlhXHU1ZDllXHU1ZTY5XHU1ZTVkXHU1ZTYwXHU1ZTVjXHU3ZGYzXHU1ZWRi'@; put 'XHU1ZWRlXHU1ZWUxXHU1ZjQ5XHU1ZmIyXHU2MThiXHU2MTgzXHU2MTc5XHU2MWIxXHU2MWIwXHU2MWEyXHU2MTg5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTliXHU2MTkzXHU2MWFmXHU2MWFkXHU2MTlmXHU2MTkyXHU2MWFhXHU2MWExXHU2MThkXHU2MTY2'@; put 'XHU2MWIzXHU2MjJkXHU2NDZlXHU2NDcwXHU2NDk2XHU2NGEwXHU2NDg1XHU2NDk3XHU2NDljXHU2NDhmXHU2NDhiXHU2NDhhXHU2NDhjXHU2NGEzXHU2NDlmXHU2NDY4XHU2NGIxXHU2NDk4XHU2NTc2XHU2NTdhXHU2NTc5XHU2NTdiXHU2NWIyXHU2NWIzXHU2NmI1XHU2NmIwXHU2NmE5XHU2'@; put 'NmIyXHU2NmI3XHU2NmFhXHU2NmFmXHU2YTAwXHU2YTA2XHU2YTE3XHU2OWU1XHU2OWY4XHU2YTE1XHU2OWYxXHU2OWU0XHU2YTIwXHU2OWZmXHU2OWVjXHU2OWUyXHU2YTFiXHU2YTFkXHU2OWZlXHU2YTI3XHU2OWYyXHU2OWVlXHU2YTE0XHU2OWY3XHU2OWU3XHU2YTQwXHU2YTA4XHU2OWU2'@; put 'XHU2OWZiXHU2YTBkXHU2OWZjXHU2OWViXHU2YTA5XHU2YTA0XHU2YTE4XHU2YTI1XHU2YTBmXHU2OWY2XHU2YTI2XHU2YTA3XHU2OWY0XHU2YTE2XHU2YjUxXHU2YmE1XHU2YmEzXHU2YmEyXHU2YmE2XHU2YzAxXHU2YzAwXHU2YmZmXHU2YzAyXHU2ZjQxXHU2ZjI2XHU2ZjdlXHU2Zjg3XHU2'@; put 'ZmM2XHU2ZjkyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjI5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMjldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjI5XVtzXV09NTg2MjQrcyxoWzU4NjI0K3NdPWNbMjI5XVtzXSk7Zm9yKGNbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZjhkXHU2Zjg5XHU2ZjhjXHU2ZjYyXHU2ZjRmXHU2Zjg1XHU2ZjVhXHU2Zjk2XHU2Zjc2XHU2ZjZjXHU2ZjgyXHU2ZjU1XHU2ZjcyXHU2ZjUyXHU2ZjUwXHU2ZjU3XHU2Zjk0XHU2ZjkzXHU2ZjVkXHU2ZjAwXHU2ZjYxXHU2ZjZiXHU2'@; put 'ZjdkXHU2ZjY3XHU2ZjkwXHU2ZjUzXHU2ZjhiXHU2ZjY5XHU2ZjdmXHU2Zjk1XHU2ZjYzXHU2Zjc3XHU2ZjZhXHU2ZjdiXHU3MWIyXHU3MWFmXHU3MTliXHU3MWIwXHU3MWEwXHU3MTlhXHU3MWE5XHU3MWI1XHU3MTlkXHU3MWE1XHU3MTllXHU3MWE0XHU3MWExXHU3MWFhXHU3MTljXHU3MWE3'@; put 'XHU3MWIzXHU3Mjk4XHU3MjlhXHU3MzU4XHU3MzUyXHU3MzVlXHU3MzVmXHU3MzYwXHU3MzVkXHU3MzViXHU3MzYxXHU3MzVhXHU3MzU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzYyXHU3NDg3XHU3NDg5XHU3NDhhXHU3NDg2XHU3NDgxXHU3NDdkXHU3NDg1'@; put 'XHU3NDg4XHU3NDdjXHU3NDc5XHU3NTA4XHU3NTA3XHU3NTdlXHU3NjI1XHU3NjFlXHU3NjE5XHU3NjFkXHU3NjFjXHU3NjIzXHU3NjFhXHU3NjI4XHU3NjFiXHU3NjljXHU3NjlkXHU3NjllXHU3NjliXHU3NzhkXHU3NzhmXHU3Nzg5XHU3Nzg4XHU3OGNkXHU3OGJiXHU3OGNmXHU3OGNjXHU3'@; put 'OGQxXHU3OGNlXHU3OGQ0XHU3OGM4XHU3OGMzXHU3OGM0XHU3OGM5XHU3OTlhXHU3OWExXHU3OWEwXHU3OTljXHU3OWEyXHU3OTliXHU2Yjc2XHU3YTM5XHU3YWIyXHU3YWI0XHU3YWIzXHU3YmI3XHU3YmNiXHU3YmJlXHU3YmFjXHU3YmNlXHU3YmFmXHU3YmI5XHU3YmNhXHU3YmI1XHU3Y2M1'@; put 'XHU3Y2M4XHU3Y2NjXHU3Y2NiXHU3ZGY3XHU3ZGRiXHU3ZGVhXHU3ZGU3XHU3ZGQ3XHU3ZGUxXHU3ZTAzXHU3ZGZhXHU3ZGU2XHU3ZGY2XHU3ZGYxXHU3ZGYwXHU3ZGVlXHU3ZGRmXHU3Zjc2XHU3ZmFjXHU3ZmIwXHU3ZmFkXHU3ZmVkXHU3ZmViXHU3ZmVhXHU3ZmVjXHU3ZmU2XHU3ZmU4XHU4'@; put 'MDY0XHU4MDY3XHU4MWEzXHU4MTlmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMwXVtzXV09NTg4ODArcyxoWzU4ODgwK3NdPWNbMjMwXVtzXSk7Zm9yKGNbMjMxXT0iXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MTllXHU4MTk1XHU4MWEyXHU4MTk5XHU4MTk3XHU4MjE2XHU4MjRmXHU4MjUzXHU4MjUyXHU4MjUwXHU4MjRlXHU4MjUxXHU4NTI0XHU4NTNiXHU4NTBmXHU4NTAwXHU4NTI5XHU4NTBlXHU4NTA5XHU4NTBkXHU4'@; put 'NTFmXHU4NTBhXHU4NTI3XHU4NTFjXHU4NGZiXHU4NTJiXHU4NGZhXHU4NTA4XHU4NTBjXHU4NGY0XHU4NTJhXHU4NGYyXHU4NTE1XHU4NGY3XHU4NGViXHU4NGYzXHU4NGZjXHU4NTEyXHU4NGVhXHU4NGU5XHU4NTE2XHU4NGZlXHU4NTI4XHU4NTFkXHU4NTJlXHU4NTAyXHU4NGZkXHU4NTFl'@; put 'XHU4NGY2XHU4NTMxXHU4NTI2XHU4NGU3XHU4NGU4XHU4NGYwXHU4NGVmXHU4NGY5XHU4NTE4XHU4NTIwXHU4NTMwXHU4NTBiXHU4NTE5XHU4NTJmXHU4NjYyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NzU2XHU4NzYzXHU4NzY0XHU4Nzc3XHU4N2UxXHU4Nzcz'@; put 'XHU4NzU4XHU4NzU0XHU4NzViXHU4NzUyXHU4NzYxXHU4NzVhXHU4NzUxXHU4NzVlXHU4NzZkXHU4NzZhXHU4NzUwXHU4NzRlXHU4NzVmXHU4NzVkXHU4NzZmXHU4NzZjXHU4NzdhXHU4NzZlXHU4NzVjXHU4NzY1XHU4NzRmXHU4NzdiXHU4Nzc1XHU4NzYyXHU4NzY3XHU4NzY5XHU4ODVhXHU4'@; put 'OTA1XHU4OTBjXHU4OTE0XHU4OTBiXHU4OTE3XHU4OTE4XHU4OTE5XHU4OTA2XHU4OTE2XHU4OTExXHU4OTBlXHU4OTA5XHU4OWEyXHU4OWE0XHU4OWEzXHU4OWVkXHU4OWYwXHU4OWVjXHU4YWNmXHU4YWM2XHU4YWI4XHU4YWQzXHU4YWQxXHU4YWQ0XHU4YWQ1XHU4YWJiXHU4YWQ3XHU4YWJl'@; put 'XHU4YWMwXHU4YWM1XHU4YWQ4XHU4YWMzXHU4YWJhXHU4YWJkXHU4YWQ5XHU4YzNlXHU4YzRkXHU4YzhmXHU4Y2U1XHU4Y2RmXHU4Y2Q5XHU4Y2U4XHU4Y2RhXHU4Y2RkXHU4Y2U3XHU4ZGEwXHU4ZDljXHU4ZGExXHU4ZDliXHU4ZTIwXHU4ZTIzXHU4ZTI1XHU4ZTI0XHU4ZTJlXHU4ZTE1XHU4'@; put 'ZTFiXHU4ZTE2XHU4ZTExXHU4ZTE5XHU4ZTI2XHU4ZTI3XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMxXVtzXV09NTkxMzYrcyxoWzU5MTM2K3NdPWNbMjMxXVtzXSk7Zm9yKGNbMjMyXT0i'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZTE0XHU4ZTEyXHU4ZTE4XHU4ZTEzXHU4ZTFjXHU4ZTE3XHU4ZTFhXHU4ZjJjXHU4ZjI0XHU4ZjE4XHU4ZjFhXHU4ZjIwXHU4ZjIzXHU4ZjE2XHU4ZjE3XHU5MDczXHU5MDcwXHU5MDZmXHU5'@; put 'MDY3XHU5MDZiXHU5MTJmXHU5MTJiXHU5MTI5XHU5MTJhXHU5MTMyXHU5MTI2XHU5MTJlXHU5MTg1XHU5MTg2XHU5MThhXHU5MTgxXHU5MTgyXHU5MTg0XHU5MTgwXHU5MmQwXHU5MmMzXHU5MmM0XHU5MmMwXHU5MmQ5XHU5MmI2XHU5MmNmXHU5MmYxXHU5MmRmXHU5MmQ4XHU5MmU5XHU5MmQ3'@; put 'XHU5MmRkXHU5MmNjXHU5MmVmXHU5MmMyXHU5MmU4XHU5MmNhXHU5MmM4XHU5MmNlXHU5MmU2XHU5MmNkXHU5MmQ1XHU5MmM5XHU5MmUwXHU5MmRlXHU5MmU3XHU5MmQxXHU5MmQzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MmI1XHU5MmUxXHU5MmM2XHU5MmI0'@; put 'XHU5NTdjXHU5NWFjXHU5NWFiXHU5NWFlXHU5NWIwXHU5NmE0XHU5NmEyXHU5NmQzXHU5NzA1XHU5NzA4XHU5NzAyXHU5NzVhXHU5NzhhXHU5NzhlXHU5Nzg4XHU5N2QwXHU5N2NmXHU5ODFlXHU5ODFkXHU5ODI2XHU5ODI5XHU5ODI4XHU5ODIwXHU5ODFiXHU5ODI3XHU5OGIyXHU5OTA4XHU5'@; put 'OGZhXHU5OTExXHU5OTE0XHU5OTE2XHU5OTE3XHU5OTE1XHU5OWRjXHU5OWNkXHU5OWNmXHU5OWQzXHU5OWQ0XHU5OWNlXHU5OWM5XHU5OWQ2XHU5OWQ4XHU5OWNiXHU5OWQ3XHU5OWNjXHU5YWIzXHU5YWVjXHU5YWViXHU5YWYzXHU5YWYyXHU5YWYxXHU5YjQ2XHU5YjQzXHU5YjY3XHU5Yjc0'@; put 'XHU5YjcxXHU5YjY2XHU5Yjc2XHU5Yjc1XHU5YjcwXHU5YjY4XHU5YjY0XHU5YjZjXHU5Y2ZjXHU5Y2ZhXHU5Y2ZkXHU5Y2ZmXHU5Y2Y3XHU5ZDA3XHU5ZDAwXHU5Y2Y5XHU5Y2ZiXHU5ZDA4XHU5ZDA1XHU5ZDA0XHU5ZTgzXHU5ZWQzXHU5ZjBmXHU5ZjEwXHU1MTFjXHU1MTEzXHU1MTE3XHU1'@; put 'MTFhXHU1MTExXHU1MWRlXHU1MzM0XHU1M2UxXHU1NjcwXHU1NjYwXHU1NjZlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMyXVtzXV09NTkzOTIrcyxoWzU5MzkyK3NdPWNbMjMyXVtzXSk7'@; put 'Zm9yKGNbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjczXHU1NjY2XHU1NjYzXHU1NjZkXHU1NjcyXHU1NjVlXHU1Njc3XHU1NzFjXHU1NzFiXHU1OGM4XHU1OGJkXHU1OGM5XHU1OGJmXHU1OGJhXHU1OGMyXHU1OGJjXHU1'@; put 'OGM2XHU1YjE3XHU1YjE5XHU1YjFiXHU1YjIxXHU1YjE0XHU1YjEzXHU1YjEwXHU1YjE2XHU1YjI4XHU1YjFhXHU1YjIwXHU1YjFlXHU1YmVmXHU1ZGFjXHU1ZGIxXHU1ZGE5XHU1ZGE3XHU1ZGI1XHU1ZGIwXHU1ZGFlXHU1ZGFhXHU1ZGE4XHU1ZGIyXHU1ZGFkXHU1ZGFmXHU1ZGI0XHU1ZTY3'@; put 'XHU1ZTY4XHU1ZTY2XHU1ZTZmXHU1ZWU5XHU1ZWU3XHU1ZWU2XHU1ZWU4XHU1ZWU1XHU1ZjRiXHU1ZmJjXHU2MTlkXHU2MWE4XHU2MTk2XHU2MWM1XHU2MWI0XHU2MWM2XHU2MWMxXHU2MWNjXHU2MWJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MWJmXHU2MWI4'@; put 'XHU2MThjXHU2NGQ3XHU2NGQ2XHU2NGQwXHU2NGNmXHU2NGM5XHU2NGJkXHU2NDg5XHU2NGMzXHU2NGRiXHU2NGYzXHU2NGQ5XHU2NTMzXHU2NTdmXHU2NTdjXHU2NWEyXHU2NmM4XHU2NmJlXHU2NmMwXHU2NmNhXHU2NmNiXHU2NmNmXHU2NmJkXHU2NmJiXHU2NmJhXHU2NmNjXHU2NzIzXHU2'@; put 'YTM0XHU2YTY2XHU2YTQ5XHU2YTY3XHU2YTMyXHU2YTY4XHU2YTNlXHU2YTVkXHU2YTZkXHU2YTc2XHU2YTViXHU2YTUxXHU2YTI4XHU2YTVhXHU2YTNiXHU2YTNmXHU2YTQxXHU2YTZhXHU2YTY0XHU2YTUwXHU2YTRmXHU2YTU0XHU2YTZmXHU2YTY5XHU2YTYwXHU2YTNjXHU2YTVlXHU2YTU2'@; put 'XHU2YTU1XHU2YTRkXHU2YTRlXHU2YTQ2XHU2YjU1XHU2YjU0XHU2YjU2XHU2YmE3XHU2YmFhXHU2YmFiXHU2YmM4XHU2YmM3XHU2YzA0XHU2YzAzXHU2YzA2XHU2ZmFkXHU2ZmNiXHU2ZmEzXHU2ZmM3XHU2ZmJjXHU2ZmNlXHU2ZmM4XHU2ZjVlXHU2ZmM0XHU2ZmJkXHU2ZjllXHU2ZmNhXHU2'@; put 'ZmE4XHU3MDA0XHU2ZmE1XHU2ZmFlXHU2ZmJhXHU2ZmFjXHU2ZmFhXHU2ZmNmXHU2ZmJmXHU2ZmI4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjMzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjMzXVtzXV09NTk2NDgrcyxoWzU5NjQ4K3Nd'@; put 'PWNbMjMzXVtzXSk7Zm9yKGNbMjM0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmEyXHU2ZmM5XHU2ZmFiXHU2ZmNkXHU2ZmFmXHU2ZmIyXHU2ZmIwXHU3MWM1XHU3MWMyXHU3MWJmXHU3MWI4XHU3MWQ2XHU3MWMwXHU3MWMxXHU3'@; put 'MWNiXHU3MWQ0XHU3MWNhXHU3MWM3XHU3MWNmXHU3MWJkXHU3MWQ4XHU3MWJjXHU3MWM2XHU3MWRhXHU3MWRiXHU3MjlkXHU3MjllXHU3MzY5XHU3MzY2XHU3MzY3XHU3MzZjXHU3MzY1XHU3MzZiXHU3MzZhXHU3NDdmXHU3NDlhXHU3NGEwXHU3NDk0XHU3NDkyXHU3NDk1XHU3NGExXHU3NTBi'@; put 'XHU3NTgwXHU3NjJmXHU3NjJkXHU3NjMxXHU3NjNkXHU3NjMzXHU3NjNjXHU3NjM1XHU3NjMyXHU3NjMwXHU3NmJiXHU3NmU2XHU3NzlhXHU3NzlkXHU3N2ExXHU3NzljXHU3NzliXHU3N2EyXHU3N2EzXHU3Nzk1XHU3Nzk5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHU3Nzk3XHU3OGRkXHU3OGU5XHU3OGU1XHU3OGVhXHU3OGRlXHU3OGUzXHU3OGRiXHU3OGUxXHU3OGUyXHU3OGVkXHU3OGRmXHU3OGUwXHU3OWE0XHU3YTQ0XHU3YTQ4XHU3YTQ3XHU3YWI2XHU3YWI4XHU3YWI1XHU3YWIxXHU3YWI3XHU3YmRlXHU3YmUzXHU3YmU3XHU3YmRkXHU3YmQ1XHU3'@; put 'YmU1XHU3YmRhXHU3YmU4XHU3YmY5XHU3YmQ0XHU3YmVhXHU3YmUyXHU3YmRjXHU3YmViXHU3YmQ4XHU3YmRmXHU3Y2QyXHU3Y2Q0XHU3Y2Q3XHU3Y2QwXHU3Y2QxXHU3ZTEyXHU3ZTIxXHU3ZTE3XHU3ZTBjXHU3ZTFmXHU3ZTIwXHU3ZTEzXHU3ZTBlXHU3ZTFjXHU3ZTE1XHU3ZTFhXHU3ZTIy'@; put 'XHU3ZTBiXHU3ZTBmXHU3ZTE2XHU3ZTBkXHU3ZTE0XHU3ZTI1XHU3ZTI0XHU3ZjQzXHU3ZjdiXHU3ZjdjXHU3ZjdhXHU3ZmIxXHU3ZmVmXHU4MDJhXHU4MDI5XHU4MDZjXHU4MWIxXHU4MWE2XHU4MWFlXHU4MWI5XHU4MWI1XHU4MWFiXHU4MWIwXHU4MWFjXHU4MWI0XHU4MWIyXHU4MWI3XHU4'@; put 'MWE3XHU4MWYyXHU4MjU1XHU4MjU2XHU4MjU3XHU4NTU2XHU4NTQ1XHU4NTZiXHU4NTRkXHU4NTUzXHU4NTYxXHU4NTU4XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM0XVtzXV09NTk5MDQr'@; put 'cyxoWzU5OTA0K3NdPWNbMjM0XVtzXSk7Zm9yKGNbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTQwXHU4NTQ2XHU4NTY0XHU4NTQxXHU4NTYyXHU4NTQ0XHU4NTUxXHU4NTQ3XHU4NTYzXHU4NTNlXHU4NTViXHU4NTcxXHU4'@; put 'NTRlXHU4NTZlXHU4NTc1XHU4NTU1XHU4NTY3XHU4NTYwXHU4NThjXHU4NTY2XHU4NTVkXHU4NTU0XHU4NTY1XHU4NTZjXHU4NjYzXHU4NjY1XHU4NjY0XHU4NzliXHU4NzhmXHU4Nzk3XHU4NzkzXHU4NzkyXHU4Nzg4XHU4NzgxXHU4Nzk2XHU4Nzk4XHU4Nzc5XHU4Nzg3XHU4N2EzXHU4Nzg1'@; put 'XHU4NzkwXHU4NzkxXHU4NzlkXHU4Nzg0XHU4Nzk0XHU4NzljXHU4NzlhXHU4Nzg5XHU4OTFlXHU4OTI2XHU4OTMwXHU4OTJkXHU4OTJlXHU4OTI3XHU4OTMxXHU4OTIyXHU4OTI5XHU4OTIzXHU4OTJmXHU4OTJjXHU4OTFmXHU4OWYxXHU4YWUwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHU4YWUyXHU4YWYyXHU4YWY0XHU4YWY1XHU4YWRkXHU4YjE0XHU4YWU0XHU4YWRmXHU4YWYwXHU4YWM4XHU4YWRlXHU4YWUxXHU4YWU4XHU4YWZmXHU4YWVmXHU4YWZiXHU4YzkxXHU4YzkyXHU4YzkwXHU4Y2Y1XHU4Y2VlXHU4Y2YxXHU4Y2YwXHU4Y2YzXHU4ZDZjXHU4'@; put 'ZDZlXHU4ZGE1XHU4ZGE3XHU4ZTMzXHU4ZTNlXHU4ZTM4XHU4ZTQwXHU4ZTQ1XHU4ZTM2XHU4ZTNjXHU4ZTNkXHU4ZTQxXHU4ZTMwXHU4ZTNmXHU4ZWJkXHU4ZjM2XHU4ZjJlXHU4ZjM1XHU4ZjMyXHU4ZjM5XHU4ZjM3XHU4ZjM0XHU5MDc2XHU5MDc5XHU5MDdiXHU5MDg2XHU5MGZhXHU5MTMz'@; put 'XHU5MTM1XHU5MTM2XHU5MTkzXHU5MTkwXHU5MTkxXHU5MThkXHU5MThmXHU5MzI3XHU5MzFlXHU5MzA4XHU5MzFmXHU5MzA2XHU5MzBmXHU5MzdhXHU5MzM4XHU5MzNjXHU5MzFiXHU5MzIzXHU5MzEyXHU5MzAxXHU5MzQ2XHU5MzJkXHU5MzBlXHU5MzBkXHU5MmNiXHU5MzFkXHU5MmZhXHU5'@; put 'MzI1XHU5MzEzXHU5MmY5XHU5MmY3XHU5MzM0XHU5MzAyXHU5MzI0XHU5MmZmXHU5MzI5XHU5MzM5XHU5MzM1XHU5MzJhXHU5MzE0XHU5MzBjXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM1'@; put 'XVtzXV09NjAxNjArcyxoWzYwMTYwK3NdPWNbMjM1XVtzXSk7Zm9yKGNbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzBiXHU5MmZlXHU5MzA5XHU5MzAwXHU5MmZiXHU5MzE2XHU5NWJjXHU5NWNkXHU5NWJlXHU5NWI5XHU5'@; put 'NWJhXHU5NWI2XHU5NWJmXHU5NWI1XHU5NWJkXHU5NmE5XHU5NmQ0XHU5NzBiXHU5NzEyXHU5NzEwXHU5Nzk5XHU5Nzk3XHU5Nzk0XHU5N2YwXHU5N2Y4XHU5ODM1XHU5ODJmXHU5ODMyXHU5OTI0XHU5OTFmXHU5OTI3XHU5OTI5XHU5OTllXHU5OWVlXHU5OWVjXHU5OWU1XHU5OWU0XHU5OWYw'@; put 'XHU5OWUzXHU5OWVhXHU5OWU5XHU5OWU3XHU5YWI5XHU5YWJmXHU5YWI0XHU5YWJiXHU5YWY2XHU5YWZhXHU5YWY5XHU5YWY3XHU5YjMzXHU5YjgwXHU5Yjg1XHU5Yjg3XHU5YjdjXHU5YjdlXHU5YjdiXHU5YjgyXHU5YjkzXHU5YjkyXHU5YjkwXHU5YjdhXHU5Yjk1XHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjdkXHU5Yjg4XHU5ZDI1XHU5ZDE3XHU5ZDIwXHU5ZDFlXHU5ZDE0XHU5ZDI5XHU5ZDFkXHU5ZDE4XHU5ZDIyXHU5ZDEwXHU5ZDE5XHU5ZDFmXHU5ZTg4XHU5ZTg2XHU5ZTg3XHU5ZWFlXHU5ZWFkXHU5ZWQ1XHU5ZWQ2XHU5ZWZhXHU5ZjEyXHU5'@; put 'ZjNkXHU1MTI2XHU1MTI1XHU1MTIyXHU1MTI0XHU1MTIwXHU1MTI5XHU1MmY0XHU1NjkzXHU1NjhjXHU1NjhkXHU1Njg2XHU1Njg0XHU1NjgzXHU1NjdlXHU1NjgyXHU1NjdmXHU1NjgxXHU1OGQ2XHU1OGQ0XHU1OGNmXHU1OGQyXHU1YjJkXHU1YjI1XHU1YjMyXHU1YjIzXHU1YjJjXHU1YjI3'@; put 'XHU1YjI2XHU1YjJmXHU1YjJlXHU1YjdiXHU1YmYxXHU1YmYyXHU1ZGI3XHU1ZTZjXHU1ZTZhXHU1ZmJlXHU1ZmJiXHU2MWMzXHU2MWI1XHU2MWJjXHU2MWU3XHU2MWUwXHU2MWU1XHU2MWU0XHU2MWU4XHU2MWRlXHU2NGVmXHU2NGU5XHU2NGUzXHU2NGViXHU2NGU0XHU2NGU4XHU2NTgxXHU2'@; put 'NTgwXHU2NWI2XHU2NWRhXHU2NmQyXHU2YThkXHU2YTk2XHU2YTgxXHU2YWE1XHU2YTg5XHU2YTlmXHU2YTliXHU2YWExXHU2YTllXHU2YTg3XHU2YTkzXHU2YThlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzZdW3NdLmNoYXJDb2RlQXQo'@; put 'MCkmJih5W2NbMjM2XVtzXV09NjA0MTYrcyxoWzYwNDE2K3NdPWNbMjM2XVtzXSk7Zm9yKGNbMjM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTk1XHU2YTgzXHU2YWE4XHU2YWE0XHU2YTkxXHU2YTdmXHU2YWE2XHU2YTlhXHU2'@; put 'YTg1XHU2YThjXHU2YTkyXHU2YjViXHU2YmFkXHU2YzA5XHU2ZmNjXHU2ZmE5XHU2ZmY0XHU2ZmQ0XHU2ZmUzXHU2ZmRjXHU2ZmVkXHU2ZmU3XHU2ZmU2XHU2ZmRlXHU2ZmYyXHU2ZmRkXHU2ZmUyXHU2ZmU4XHU3MWUxXHU3MWYxXHU3MWU4XHU3MWYyXHU3MWU0XHU3MWYwXHU3MWUyXHU3Mzcz'@; put 'XHU3MzZlXHU3MzZmXHU3NDk3XHU3NGIyXHU3NGFiXHU3NDkwXHU3NGFhXHU3NGFkXHU3NGIxXHU3NGE1XHU3NGFmXHU3NTEwXHU3NTExXHU3NTEyXHU3NTBmXHU3NTg0XHU3NjQzXHU3NjQ4XHU3NjQ5XHU3NjQ3XHU3NmE0XHU3NmU5XHU3N2I1XHU3N2FiXHU3N2IyXHU3N2I3XHU3N2I2XHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2I0XHU3N2IxXHU3N2E4XHU3N2YwXHU3OGYzXHU3OGZkXHU3OTAyXHU3OGZiXHU3OGZjXHU3OGYyXHU3OTA1XHU3OGY5XHU3OGZlXHU3OTA0XHU3OWFiXHU3OWE4XHU3YTVjXHU3YTViXHU3YTU2XHU3YTU4XHU3YTU0XHU3'@; put 'YTVhXHU3YWJlXHU3YWMwXHU3YWMxXHU3YzA1XHU3YzBmXHU3YmYyXHU3YzAwXHU3YmZmXHU3YmZiXHU3YzBlXHU3YmY0XHU3YzBiXHU3YmYzXHU3YzAyXHU3YzA5XHU3YzAzXHU3YzAxXHU3YmY4XHU3YmZkXHU3YzA2XHU3YmYwXHU3YmYxXHU3YzEwXHU3YzBhXHU3Y2U4XHU3ZTJkXHU3ZTNj'@; put 'XHU3ZTQyXHU3ZTMzXHU5ODQ4XHU3ZTM4XHU3ZTJhXHU3ZTQ5XHU3ZTQwXHU3ZTQ3XHU3ZTI5XHU3ZTRjXHU3ZTMwXHU3ZTNiXHU3ZTM2XHU3ZTQ0XHU3ZTNhXHU3ZjQ1XHU3ZjdmXHU3ZjdlXHU3ZjdkXHU3ZmY0XHU3ZmYyXHU4MDJjXHU4MWJiXHU4MWM0XHU4MWNjXHU4MWNhXHU4MWM1XHU4'@; put 'MWM3XHU4MWJjXHU4MWU5XHU4MjViXHU4MjVhXHU4MjVjXHU4NTgzXHU4NTgwXHU4NThmXHU4NWE3XHU4NTk1XHU4NWEwXHU4NThiXHU4NWEzXHU4NTdiXHU4NWE0XHU4NTlhXHU4NTllXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syMzddW3Nd'@; put 'LmNoYXJDb2RlQXQoMCkmJih5W2NbMjM3XVtzXV09NjA2NzIrcyxoWzYwNjcyK3NdPWNbMjM3XVtzXSk7Zm9yKGNbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTc3XHU4NTdjXHU4NTg5XHU4NWExXHU4NTdhXHU4NTc4XHU4'@; put 'NTU3XHU4NThlXHU4NTk2XHU4NTg2XHU4NThkXHU4NTk5XHU4NTlkXHU4NTgxXHU4NWEyXHU4NTgyXHU4NTg4XHU4NTg1XHU4NTc5XHU4NTc2XHU4NTk4XHU4NTkwXHU4NTlmXHU4NjY4XHU4N2JlXHU4N2FhXHU4N2FkXHU4N2M1XHU4N2IwXHU4N2FjXHU4N2I5XHU4N2I1XHU4N2JjXHU4N2Fl'@; put 'XHU4N2M5XHU4N2MzXHU4N2MyXHU4N2NjXHU4N2I3XHU4N2FmXHU4N2M0XHU4N2NhXHU4N2I0XHU4N2I2XHU4N2JmXHU4N2I4XHU4N2JkXHU4N2RlXHU4N2IyXHU4OTM1XHU4OTMzXHU4OTNjXHU4OTNlXHU4OTQxXHU4OTUyXHU4OTM3XHU4OTQyXHU4OWFkXHU4OWFmXHU4OWFlXHU4OWYyXHU4'@; put 'OWYzXHU4YjFlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjE4XHU4YjE2XHU4YjExXHU4YjA1XHU4YjBiXHU4YjIyXHU4YjBmXHU4YjEyXHU4YjE1XHU4YjA3XHU4YjBkXHU4YjA4XHU4YjA2XHU4YjFjXHU4YjEzXHU4YjFhXHU4YzRmXHU4YzcwXHU4YzcyXHU4'@; put 'YzcxXHU4YzZmXHU4Yzk1XHU4Yzk0XHU4Y2Y5XHU4ZDZmXHU4ZTRlXHU4ZTRkXHU4ZTUzXHU4ZTUwXHU4ZTRjXHU4ZTQ3XHU4ZjQzXHU4ZjQwXHU5MDg1XHU5MDdlXHU5MTM4XHU5MTlhXHU5MWEyXHU5MTliXHU5MTk5XHU5MTlmXHU5MWExXHU5MTlkXHU5MWEwXHU5M2ExXHU5MzgzXHU5M2Fm'@; put 'XHU5MzY0XHU5MzU2XHU5MzQ3XHU5MzdjXHU5MzU4XHU5MzVjXHU5Mzc2XHU5MzQ5XHU5MzUwXHU5MzUxXHU5MzYwXHU5MzZkXHU5MzhmXHU5MzRjXHU5MzZhXHU5Mzc5XHU5MzU3XHU5MzU1XHU5MzUyXHU5MzRmXHU5MzcxXHU5Mzc3XHU5MzdiXHU5MzYxXHU5MzVlXHU5MzYzXHU5MzY3XHU5'@; put 'MzgwXHU5MzRlXHU5MzU5XHU5NWM3XHU5NWMwXHU5NWM5XHU5NWMzXHU5NWM1XHU5NWI3XHU5NmFlXHU5NmIwXHU5NmFjXHU5NzIwXHU5NzFmXHU5NzE4XHU5NzFkXHU5NzE5XHU5NzlhXHU5N2ExXHU5NzljXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM4XS5sZW5ndGg7KytzKTY1NTMz'@; put 'IT09Y1syMzhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM4XVtzXV09NjA5MjgrcyxoWzYwOTI4K3NdPWNbMjM4XVtzXSk7Zm9yKGNbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzllXHU5NzlkXHU5N2Q1XHU5N2Q0XHU5'@; put 'N2YxXHU5ODQxXHU5ODQ0XHU5ODRhXHU5ODQ5XHU5ODQ1XHU5ODQzXHU5OTI1XHU5OTJiXHU5OTJjXHU5OTJhXHU5OTMzXHU5OTMyXHU5OTJmXHU5OTJkXHU5OTMxXHU5OTMwXHU5OTk4XHU5OWEzXHU5OWExXHU5YTAyXHU5OWZhXHU5OWY0XHU5OWY3XHU5OWY5XHU5OWY4XHU5OWY2XHU5OWZi'@; put 'XHU5OWZkXHU5OWZlXHU5OWZjXHU5YTAzXHU5YWJlXHU5YWZlXHU5YWZkXHU5YjAxXHU5YWZjXHU5YjQ4XHU5YjlhXHU5YmE4XHU5YjllXHU5YjliXHU5YmE2XHU5YmExXHU5YmE1XHU5YmE0XHU5Yjg2XHU5YmEyXHU5YmEwXHU5YmFmXHU5ZDMzXHU5ZDQxXHU5ZDY3XHU5ZDM2XHU5ZDJlXHU5'@; put 'ZDJmXHU5ZDMxXHU5ZDM4XHU5ZDMwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDQ1XHU5ZDQyXHU5ZDQzXHU5ZDNlXHU5ZDM3XHU5ZDQwXHU5ZDNkXHU3ZmY1XHU5ZDJkXHU5ZThhXHU5ZTg5XHU5ZThkXHU5ZWIwXHU5ZWM4XHU5ZWRhXHU5ZWZiXHU5ZWZmXHU5'@; put 'ZjI0XHU5ZjIzXHU5ZjIyXHU5ZjU0XHU5ZmEwXHU1MTMxXHU1MTJkXHU1MTJlXHU1Njk4XHU1NjljXHU1Njk3XHU1NjlhXHU1NjlkXHU1Njk5XHU1OTcwXHU1YjNjXHU1YzY5XHU1YzZhXHU1ZGMwXHU1ZTZkXHU1ZTZlXHU2MWQ4XHU2MWRmXHU2MWVkXHU2MWVlXHU2MWYxXHU2MWVhXHU2MWYw'@; put 'XHU2MWViXHU2MWQ2XHU2MWU5XHU2NGZmXHU2NTA0XHU2NGZkXHU2NGY4XHU2NTAxXHU2NTAzXHU2NGZjXHU2NTk0XHU2NWRiXHU2NmRhXHU2NmRiXHU2NmQ4XHU2YWM1XHU2YWI5XHU2YWJkXHU2YWUxXHU2YWM2XHU2YWJhXHU2YWI2XHU2YWI3XHU2YWM3XHU2YWI0XHU2YWFkXHU2YjVlXHU2'@; put 'YmM5XHU2YzBiXHU3MDA3XHU3MDBjXHU3MDBkXHU3MDAxXHU3MDA1XHU3MDE0XHU3MDBlXHU2ZmZmXHU3MDAwXHU2ZmZiXHU3MDI2XHU2ZmZjXHU2ZmY3XHU3MDBhXHU3MjAxXHU3MWZmXHU3MWY5XHU3MjAzXHU3MWZkXHU3Mzc2XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjM5XS5sZW5n'@; put 'dGg7KytzKTY1NTMzIT09Y1syMzldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjM5XVtzXV09NjExODQrcyxoWzYxMTg0K3NdPWNbMjM5XVtzXSk7Zm9yKGNbMjQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NGI4XHU3NGMwXHU3'@; put 'NGI1XHU3NGMxXHU3NGJlXHU3NGI2XHU3NGJiXHU3NGMyXHU3NTE0XHU3NTEzXHU3NjVjXHU3NjY0XHU3NjU5XHU3NjUwXHU3NjUzXHU3NjU3XHU3NjVhXHU3NmE2XHU3NmJkXHU3NmVjXHU3N2MyXHU3N2JhXHU3OGZmXHU3OTBjXHU3OTEzXHU3OTE0XHU3OTA5XHU3OTEwXHU3OTEyXHU3OTEx'@; put 'XHU3OWFkXHU3OWFjXHU3YTVmXHU3YzFjXHU3YzI5XHU3YzE5XHU3YzIwXHU3YzFmXHU3YzJkXHU3YzFkXHU3YzI2XHU3YzI4XHU3YzIyXHU3YzI1XHU3YzMwXHU3ZTVjXHU3ZTUwXHU3ZTU2XHU3ZTYzXHU3ZTU4XHU3ZTYyXHU3ZTVmXHU3ZTUxXHU3ZTYwXHU3ZTU3XHU3ZTUzXHU3ZmI1XHU3'@; put 'ZmIzXHU3ZmY3XHU3ZmY4XHU4MDc1XHU4MWQxXHU4MWQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MWQwXHU4MjVmXHU4MjVlXHU4NWI0XHU4NWM2XHU4NWMwXHU4NWMzXHU4NWMyXHU4NWIzXHU4NWI1XHU4NWJkXHU4NWM3XHU4NWM0XHU4NWJmXHU4NWNiXHU4'@; put 'NWNlXHU4NWM4XHU4NWM1XHU4NWIxXHU4NWI2XHU4NWQyXHU4NjI0XHU4NWI4XHU4NWI3XHU4NWJlXHU4NjY5XHU4N2U3XHU4N2U2XHU4N2UyXHU4N2RiXHU4N2ViXHU4N2VhXHU4N2U1XHU4N2RmXHU4N2YzXHU4N2U0XHU4N2Q0XHU4N2RjXHU4N2QzXHU4N2VkXHU4N2Q4XHU4N2UzXHU4N2E0'@; put 'XHU4N2Q3XHU4N2Q5XHU4ODAxXHU4N2Y0XHU4N2U4XHU4N2RkXHU4OTUzXHU4OTRiXHU4OTRmXHU4OTRjXHU4OTQ2XHU4OTUwXHU4OTUxXHU4OTQ5XHU4YjJhXHU4YjI3XHU4YjIzXHU4YjMzXHU4YjMwXHU4YjM1XHU4YjQ3XHU4YjJmXHU4YjNjXHU4YjNlXHU4YjMxXHU4YjI1XHU4YjM3XHU4'@; put 'YjI2XHU4YjM2XHU4YjJlXHU4YjI0XHU4YjNiXHU4YjNkXHU4YjNhXHU4YzQyXHU4Yzc1XHU4Yzk5XHU4Yzk4XHU4Yzk3XHU4Y2ZlXHU4ZDA0XHU4ZDAyXHU4ZDAwXHU4ZTVjXHU4ZTYyXHU4ZTYwXHU4ZTU3XHU4ZTU2XHU4ZTVlXHU4ZTY1XHU4ZTY3XHVmZmZkIi5zcGxpdCgiIikscz0wO3Mh'@; put 'PWNbMjQwXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQwXVtzXV09NjE0NDArcyxoWzYxNDQwK3NdPWNbMjQwXVtzXSk7Zm9yKGNbMjQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4'@; put 'ZTViXHU4ZTVhXHU4ZTYxXHU4ZTVkXHU4ZTY5XHU4ZTU0XHU4ZjQ2XHU4ZjQ3XHU4ZjQ4XHU4ZjRiXHU5MTI4XHU5MTNhXHU5MTNiXHU5MTNlXHU5MWE4XHU5MWE1XHU5MWE3XHU5MWFmXHU5MWFhXHU5M2I1XHU5MzhjXHU5MzkyXHU5M2I3XHU5MzliXHU5MzlkXHU5Mzg5XHU5M2E3XHU5Mzhl'@; put 'XHU5M2FhXHU5MzllXHU5M2E2XHU5Mzk1XHU5Mzg4XHU5Mzk5XHU5MzlmXHU5MzhkXHU5M2IxXHU5MzkxXHU5M2IyXHU5M2E0XHU5M2E4XHU5M2I0XHU5M2EzXHU5M2E1XHU5NWQyXHU5NWQzXHU5NWQxXHU5NmIzXHU5NmQ3XHU5NmRhXHU1ZGMyXHU5NmRmXHU5NmQ4XHU5NmRkXHU5NzIzXHU5'@; put 'NzIyXHU5NzI1XHU5N2FjXHU5N2FlXHU5N2E4XHU5N2FiXHU5N2E0XHU5N2FhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2EyXHU5N2E1XHU5N2Q3XHU5N2Q5XHU5N2Q2XHU5N2Q4XHU5N2ZhXHU5ODUwXHU5ODUxXHU5ODUyXHU5OGI4XHU5OTQxXHU5OTNjXHU5'@; put 'OTNhXHU5YTBmXHU5YTBiXHU5YTA5XHU5YTBkXHU5YTA0XHU5YTExXHU5YTBhXHU5YTA1XHU5YTA3XHU5YTA2XHU5YWMwXHU5YWRjXHU5YjA4XHU5YjA0XHU5YjA1XHU5YjI5XHU5YjM1XHU5YjRhXHU5YjRjXHU5YjRiXHU5YmM3XHU5YmM2XHU5YmMzXHU5YmJmXHU5YmMxXHU5YmI1XHU5YmI4'@; put 'XHU5YmQzXHU5YmI2XHU5YmM0XHU5YmI5XHU5YmJkXHU5ZDVjXHU5ZDUzXHU5ZDRmXHU5ZDRhXHU5ZDViXHU5ZDRiXHU5ZDU5XHU5ZDU2XHU5ZDRjXHU5ZDU3XHU5ZDUyXHU5ZDU0XHU5ZDVmXHU5ZDU4XHU5ZDVhXHU5ZThlXHU5ZThjXHU5ZWRmXHU5ZjAxXHU5ZjAwXHU5ZjE2XHU5ZjI1XHU5'@; put 'ZjJiXHU5ZjJhXHU5ZjI5XHU5ZjI4XHU5ZjRjXHU5ZjU1XHU1MTM0XHU1MTM1XHU1Mjk2XHU1MmY3XHU1M2I0XHU1NmFiXHU1NmFkXHU1NmE2XHU1NmE3XHU1NmFhXHU1NmFjXHU1OGRhXHU1OGRkXHU1OGRiXHU1OTEyXHU1YjNkXHU1YjNlXHU1YjNmXHU1ZGMzXHU1ZTcwXHVmZmZkIi5zcGxp'@; put 'dCgiIikscz0wO3MhPWNbMjQxXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDFdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQxXVtzXV09NjE2OTYrcyxoWzYxNjk2K3NdPWNbMjQxXVtzXSk7Zm9yKGNbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHU1ZmJmXHU2MWZiXHU2NTA3XHU2NTEwXHU2NTBkXHU2NTA5XHU2NTBjXHU2NTBlXHU2NTg0XHU2NWRlXHU2NWRkXHU2NmRlXHU2YWU3XHU2YWUwXHU2YWNjXHU2YWQxXHU2YWQ5XHU2YWNiXHU2YWRmXHU2YWRjXHU2YWQwXHU2YWViXHU2YWNmXHU2YWNkXHU2YWRlXHU2YjYw'@; put 'XHU2YmIwXHU2YzBjXHU3MDE5XHU3MDI3XHU3MDIwXHU3MDE2XHU3MDJiXHU3MDIxXHU3MDIyXHU3MDIzXHU3MDI5XHU3MDE3XHU3MDI0XHU3MDFjXHU3MDJhXHU3MjBjXHU3MjBhXHU3MjA3XHU3MjAyXHU3MjA1XHU3MmE1XHU3MmE2XHU3MmE0XHU3MmEzXHU3MmExXHU3NGNiXHU3NGM1XHU3'@; put 'NGI3XHU3NGMzXHU3NTE2XHU3NjYwXHU3N2M5XHU3N2NhXHU3N2M0XHU3N2YxXHU3OTFkXHU3OTFiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTIxXHU3OTFjXHU3OTE3XHU3OTFlXHU3OWIwXHU3YTY3XHU3YTY4XHU3YzMzXHU3YzNjXHU3YzM5XHU3YzJjXHU3'@; put 'YzNiXHU3Y2VjXHU3Y2VhXHU3ZTc2XHU3ZTc1XHU3ZTc4XHU3ZTcwXHU3ZTc3XHU3ZTZmXHU3ZTdhXHU3ZTcyXHU3ZTc0XHU3ZTY4XHU3ZjRiXHU3ZjRhXHU3ZjgzXHU3Zjg2XHU3ZmI3XHU3ZmZkXHU3ZmZlXHU4MDc4XHU4MWQ3XHU4MWQ1XHU4MjY0XHU4MjYxXHU4MjYzXHU4NWViXHU4NWYx'@; put 'XHU4NWVkXHU4NWQ5XHU4NWUxXHU4NWU4XHU4NWRhXHU4NWQ3XHU4NWVjXHU4NWYyXHU4NWY4XHU4NWQ4XHU4NWRmXHU4NWUzXHU4NWRjXHU4NWQxXHU4NWYwXHU4NWU2XHU4NWVmXHU4NWRlXHU4NWUyXHU4ODAwXHU4N2ZhXHU4ODAzXHU4N2Y2XHU4N2Y3XHU4ODA5XHU4ODBjXHU4ODBiXHU4'@; put 'ODA2XHU4N2ZjXHU4ODA4XHU4N2ZmXHU4ODBhXHU4ODAyXHU4OTYyXHU4OTVhXHU4OTViXHU4OTU3XHU4OTYxXHU4OTVjXHU4OTU4XHU4OTVkXHU4OTU5XHU4OTg4XHU4OWI3XHU4OWI2XHU4OWY2XHU4YjUwXHU4YjQ4XHU4YjRhXHU4YjQwXHU4YjUzXHU4YjU2XHU4YjU0XHU4YjRiXHU4YjU1'@; put 'XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQyXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDJdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQyXVtzXV09NjE5NTIrcyxoWzYxOTUyK3NdPWNbMjQyXVtzXSk7Zm9yKGNbMjQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjUxXHU4YjQyXHU4YjUyXHU4YjU3XHU4YzQzXHU4Yzc3XHU4Yzc2XHU4YzlhXHU4ZDA2XHU4ZDA3XHU4ZDA5XHU4ZGFjXHU4ZGFhXHU4ZGFkXHU4ZGFiXHU4ZTZkXHU4ZTc4XHU4ZTczXHU4ZTZhXHU4ZTZmXHU4ZTdiXHU4ZWMyXHU4ZjUyXHU4ZjUx'@; put 'XHU4ZjRmXHU4ZjUwXHU4ZjUzXHU4ZmI0XHU5MTQwXHU5MTNmXHU5MWIwXHU5MWFkXHU5M2RlXHU5M2M3XHU5M2NmXHU5M2MyXHU5M2RhXHU5M2QwXHU5M2Y5XHU5M2VjXHU5M2NjXHU5M2Q5XHU5M2E5XHU5M2U2XHU5M2NhXHU5M2Q0XHU5M2VlXHU5M2UzXHU5M2Q1XHU5M2M0XHU5M2NlXHU5'@; put 'M2MwXHU5M2QyXHU5M2U3XHU5NTdkXHU5NWRhXHU5NWRiXHU5NmUxXHU5NzI5XHU5NzJiXHU5NzJjXHU5NzI4XHU5NzI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2IzXHU5N2I3XHU5N2I2XHU5N2RkXHU5N2RlXHU5N2RmXHU5ODVjXHU5ODU5XHU5ODVkXHU5'@; put 'ODU3XHU5OGJmXHU5OGJkXHU5OGJiXHU5OGJlXHU5OTQ4XHU5OTQ3XHU5OTQzXHU5OWE2XHU5OWE3XHU5YTFhXHU5YTE1XHU5YTI1XHU5YTFkXHU5YTI0XHU5YTFiXHU5YTIyXHU5YTIwXHU5YTI3XHU5YTIzXHU5YTFlXHU5YTFjXHU5YTE0XHU5YWMyXHU5YjBiXHU5YjBhXHU5YjBlXHU5YjBj'@; put 'XHU5YjM3XHU5YmVhXHU5YmViXHU5YmUwXHU5YmRlXHU5YmU0XHU5YmU2XHU5YmUyXHU5YmYwXHU5YmQ0XHU5YmQ3XHU5YmVjXHU5YmRjXHU5YmQ5XHU5YmU1XHU5YmQ1XHU5YmUxXHU5YmRhXHU5ZDc3XHU5ZDgxXHU5ZDhhXHU5ZDg0XHU5ZDg4XHU5ZDcxXHU5ZDgwXHU5ZDc4XHU5ZDg2XHU5'@; put 'ZDhiXHU5ZDhjXHU5ZDdkXHU5ZDZiXHU5ZDc0XHU5ZDc1XHU5ZDcwXHU5ZDY5XHU5ZDg1XHU5ZDczXHU5ZDdiXHU5ZDgyXHU5ZDZmXHU5ZDc5XHU5ZDdmXHU5ZDg3XHU5ZDY4XHU5ZTk0XHU5ZTkxXHU5ZWMwXHU5ZWZjXHU5ZjJkXHU5ZjQwXHU5ZjQxXHU5ZjRkXHU5ZjU2XHU5ZjU3XHU5ZjU4'@; put 'XHU1MzM3XHU1NmIyXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQzXS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDNdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQzXVtzXV09NjIyMDgrcyxoWzYyMjA4K3NdPWNbMjQzXVtzXSk7Zm9yKGNbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NmI1XHU1NmIzXHU1OGUzXHU1YjQ1XHU1ZGM2XHU1ZGM3XHU1ZWVlXHU1ZWVmXHU1ZmMwXHU1ZmMxXHU2MWY5XHU2NTE3XHU2NTE2XHU2NTE1XHU2NTEzXHU2NWRmXHU2NmU4XHU2NmUzXHU2NmU0XHU2YWYzXHU2YWYwXHU2YWVh'@; put 'XHU2YWU4XHU2YWY5XHU2YWYxXHU2YWVlXHU2YWVmXHU3MDNjXHU3MDM1XHU3MDJmXHU3MDM3XHU3MDM0XHU3MDMxXHU3MDQyXHU3MDM4XHU3MDNmXHU3MDNhXHU3MDM5XHU3MDQwXHU3MDNiXHU3MDMzXHU3MDQxXHU3MjEzXHU3MjE0XHU3MmE4XHU3MzdkXHU3MzdjXHU3NGJhXHU3NmFiXHU3'@; put 'NmFhXHU3NmJlXHU3NmVkXHU3N2NjXHU3N2NlXHU3N2NmXHU3N2NkXHU3N2YyXHU3OTI1XHU3OTIzXHU3OTI3XHU3OTI4XHU3OTI0XHU3OTI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OWIyXHU3YTZlXHU3YTZjXHU3YTZkXHU3YWY3XHU3YzQ5XHU3YzQ4XHU3'@; put 'YzRhXHU3YzQ3XHU3YzQ1XHU3Y2VlXHU3ZTdiXHU3ZTdlXHU3ZTgxXHU3ZTgwXHU3ZmJhXHU3ZmZmXHU4MDc5XHU4MWRiXHU4MWQ5XHU4MjBiXHU4MjY4XHU4MjY5XHU4NjIyXHU4NWZmXHU4NjAxXHU4NWZlXHU4NjFiXHU4NjAwXHU4NWY2XHU4NjA0XHU4NjA5XHU4NjA1XHU4NjBjXHU4NWZk'@; put 'XHU4ODE5XHU4ODEwXHU4ODExXHU4ODE3XHU4ODEzXHU4ODE2XHU4OTYzXHU4OTY2XHU4OWI5XHU4OWY3XHU4YjYwXHU4YjZhXHU4YjVkXHU4YjY4XHU4YjYzXHU4YjY1XHU4YjY3XHU4YjZkXHU4ZGFlXHU4ZTg2XHU4ZTg4XHU4ZTg0XHU4ZjU5XHU4ZjU2XHU4ZjU3XHU4ZjU1XHU4ZjU4XHU4'@; put 'ZjVhXHU5MDhkXHU5MTQzXHU5MTQxXHU5MWI3XHU5MWI1XHU5MWIyXHU5MWIzXHU5NDBiXHU5NDEzXHU5M2ZiXHU5NDIwXHU5NDBmXHU5NDE0XHU5M2ZlXHU5NDE1XHU5NDEwXHU5NDI4XHU5NDE5XHU5NDBkXHU5M2Y1XHU5NDAwXHU5M2Y3XHU5NDA3XHU5NDBlXHU5NDE2XHU5NDEyXHU5M2Zh'@; put 'XHU5NDA5XHU5M2Y4XHU5NDBhXHU5M2ZmXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ0XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDRdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ0XVtzXV09NjI0NjQrcyxoWzYyNDY0K3NdPWNbMjQ0XVtzXSk7Zm9yKGNbMjQ1XT0iXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5M2ZjXHU5NDBjXHU5M2Y2XHU5NDExXHU5NDA2XHU5NWRlXHU5NWUwXHU5NWRmXHU5NzJlXHU5NzJmXHU5N2I5XHU5N2JiXHU5N2ZkXHU5N2ZlXHU5ODYwXHU5ODYyXHU5ODYzXHU5ODVmXHU5OGMxXHU5OGMy'@; put 'XHU5OTUwXHU5OTRlXHU5OTU5XHU5OTRjXHU5OTRiXHU5OTUzXHU5YTMyXHU5YTM0XHU5YTMxXHU5YTJjXHU5YTJhXHU5YTM2XHU5YTI5XHU5YTJlXHU5YTM4XHU5YTJkXHU5YWM3XHU5YWNhXHU5YWM2XHU5YjEwXHU5YjEyXHU5YjExXHU5YzBiXHU5YzA4XHU5YmY3XHU5YzA1XHU5YzEyXHU5'@; put 'YmY4XHU5YzQwXHU5YzA3XHU5YzBlXHU5YzA2XHU5YzE3XHU5YzE0XHU5YzA5XHU5ZDlmXHU5ZDk5XHU5ZGE0XHU5ZDlkXHU5ZDkyXHU5ZDk4XHU5ZDkwXHU5ZDliXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZGEwXHU5ZDk0XHU5ZDljXHU5ZGFhXHU5ZDk3XHU5'@; put 'ZGExXHU5ZDlhXHU5ZGEyXHU5ZGE4XHU5ZDllXHU5ZGEzXHU5ZGJmXHU5ZGE5XHU5ZDk2XHU5ZGE2XHU5ZGE3XHU5ZTk5XHU5ZTliXHU5ZTlhXHU5ZWU1XHU5ZWU0XHU5ZWU3XHU5ZWU2XHU5ZjMwXHU5ZjJlXHU5ZjViXHU5ZjYwXHU5ZjVlXHU5ZjVkXHU5ZjU5XHU5ZjkxXHU1MTNhXHU1MTM5'@; put 'XHU1Mjk4XHU1Mjk3XHU1NmMzXHU1NmJkXHU1NmJlXHU1YjQ4XHU1YjQ3XHU1ZGNiXHU1ZGNmXHU1ZWYxXHU2MWZkXHU2NTFiXHU2YjAyXHU2YWZjXHU2YjAzXHU2YWY4XHU2YjAwXHU3MDQzXHU3MDQ0XHU3MDRhXHU3MDQ4XHU3MDQ5XHU3MDQ1XHU3MDQ2XHU3MjFkXHU3MjFhXHU3MjE5XHU3'@; put 'MzdlXHU3NTE3XHU3NjZhXHU3N2QwXHU3OTJkXHU3OTMxXHU3OTJmXHU3YzU0XHU3YzUzXHU3Y2YyXHU3ZThhXHU3ZTg3XHU3ZTg4XHU3ZThiXHU3ZTg2XHU3ZThkXHU3ZjRkXHU3ZmJiXHU4MDMwXHU4MWRkXHU4NjE4XHU4NjJhXHU4NjI2XHU4NjFmXHU4NjIzXHU4NjFjXHU4NjE5XHU4NjI3'@; put 'XHU4NjJlXHU4NjIxXHU4NjIwXHU4NjI5XHU4NjFlXHU4NjI1XHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ1XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDVdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ1XVtzXV09NjI3MjArcyxoWzYyNzIwK3NdPWNbMjQ1XVtzXSk7Zm9yKGNbMjQ2'@; put 'XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ODI5XHU4ODFkXHU4ODFiXHU4ODIwXHU4ODI0XHU4ODFjXHU4ODJiXHU4ODRhXHU4OTZkXHU4OTY5XHU4OTZlXHU4OTZiXHU4OWZhXHU4Yjc5XHU4Yjc4XHU4YjQ1XHU4YjdhXHU4Yjdi'@; put 'XHU4ZDEwXHU4ZDE0XHU4ZGFmXHU4ZThlXHU4ZThjXHU4ZjVlXHU4ZjViXHU4ZjVkXHU5MTQ2XHU5MTQ0XHU5MTQ1XHU5MWI5XHU5NDNmXHU5NDNiXHU5NDM2XHU5NDI5XHU5NDNkXHU5NDNjXHU5NDMwXHU5NDM5XHU5NDJhXHU5NDM3XHU5NDJjXHU5NDQwXHU5NDMxXHU5NWU1XHU5NWU0XHU5'@; put 'NWUzXHU5NzM1XHU5NzNhXHU5N2JmXHU5N2UxXHU5ODY0XHU5OGM5XHU5OGM2XHU5OGMwXHU5OTU4XHU5OTU2XHU5YTM5XHU5YTNkXHU5YTQ2XHU5YTQ0XHU5YTQyXHU5YTQxXHU5YTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YTNmXHU5YWNkXHU5YjE1XHU5'@; put 'YjE3XHU5YjE4XHU5YjE2XHU5YjNhXHU5YjUyXHU5YzJiXHU5YzFkXHU5YzFjXHU5YzJjXHU5YzIzXHU5YzI4XHU5YzI5XHU5YzI0XHU5YzIxXHU5ZGI3XHU5ZGI2XHU5ZGJjXHU5ZGMxXHU5ZGM3XHU5ZGNhXHU5ZGNmXHU5ZGJlXHU5ZGM1XHU5ZGMzXHU5ZGJiXHU5ZGI1XHU5ZGNlXHU5ZGI5'@; put 'XHU5ZGJhXHU5ZGFjXHU5ZGM4XHU5ZGIxXHU5ZGFkXHU5ZGNjXHU5ZGIzXHU5ZGNkXHU5ZGIyXHU5ZTdhXHU5ZTljXHU5ZWViXHU5ZWVlXHU5ZWVkXHU5ZjFiXHU5ZjE4XHU5ZjFhXHU5ZjMxXHU5ZjRlXHU5ZjY1XHU5ZjY0XHU5ZjkyXHU0ZWI5XHU1NmM2XHU1NmM1XHU1NmNiXHU1OTcxXHU1'@; put 'YjRiXHU1YjRjXHU1ZGQ1XHU1ZGQxXHU1ZWYyXHU2NTIxXHU2NTIwXHU2NTI2XHU2NTIyXHU2YjBiXHU2YjA4XHU2YjA5XHU2YzBkXHU3MDU1XHU3MDU2XHU3MDU3XHU3MDUyXHU3MjFlXHU3MjFmXHU3MmE5XHU3MzdmXHU3NGQ4XHU3NGQ1XHU3NGQ5XHU3NGQ3XHU3NjZkXHU3NmFkXHU3OTM1'@; put 'XHU3OWI0XHU3YTcwXHU3YTcxXHU3YzU3XHU3YzVjXHU3YzU5XHU3YzViXHU3YzVhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ2XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDZdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ2XVtzXV09NjI5NzYrcyxoWzYyOTc2K3NdPWNbMjQ2XVtz'@; put 'XSk7Zm9yKGNbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Y2Y0XHU3Y2YxXHU3ZTkxXHU3ZjRmXHU3Zjg3XHU4MWRlXHU4MjZiXHU4NjM0XHU4NjM1XHU4NjMzXHU4NjJjXHU4NjMyXHU4NjM2XHU4ODJjXHU4ODI4XHU4ODI2'@; put 'XHU4ODJhXHU4ODI1XHU4OTcxXHU4OWJmXHU4OWJlXHU4OWZiXHU4YjdlXHU4Yjg0XHU4YjgyXHU4Yjg2XHU4Yjg1XHU4YjdmXHU4ZDE1XHU4ZTk1XHU4ZTk0XHU4ZTlhXHU4ZTkyXHU4ZTkwXHU4ZTk2XHU4ZTk3XHU4ZjYwXHU4ZjYyXHU5MTQ3XHU5NDRjXHU5NDUwXHU5NDRhXHU5NDRiXHU5'@; put 'NDRmXHU5NDQ3XHU5NDQ1XHU5NDQ4XHU5NDQ5XHU5NDQ2XHU5NzNmXHU5N2UzXHU5ODZhXHU5ODY5XHU5OGNiXHU5OTU0XHU5OTViXHU5YTRlXHU5YTUzXHU5YTU0XHU5YTRjXHU5YTRmXHU5YTQ4XHU5YTRhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YTQ5XHU5'@; put 'YTUyXHU5YTUwXHU5YWQwXHU5YjE5XHU5YjJiXHU5YjNiXHU5YjU2XHU5YjU1XHU5YzQ2XHU5YzQ4XHU5YzNmXHU5YzQ0XHU5YzM5XHU5YzMzXHU5YzQxXHU5YzNjXHU5YzM3XHU5YzM0XHU5YzMyXHU5YzNkXHU5YzM2XHU5ZGRiXHU5ZGQyXHU5ZGRlXHU5ZGRhXHU5ZGNiXHU5ZGQwXHU5ZGRj'@; put 'XHU5ZGQxXHU5ZGRmXHU5ZGU5XHU5ZGQ5XHU5ZGQ4XHU5ZGQ2XHU5ZGY1XHU5ZGQ1XHU5ZGRkXHU5ZWI2XHU5ZWYwXHU5ZjM1XHU5ZjMzXHU5ZjMyXHU5ZjQyXHU5ZjZiXHU5Zjk1XHU5ZmEyXHU1MTNkXHU1Mjk5XHU1OGU4XHU1OGU3XHU1OTcyXHU1YjRkXHU1ZGQ4XHU4ODJmXHU1ZjRmXHU2'@; put 'MjAxXHU2MjAzXHU2MjA0XHU2NTI5XHU2NTI1XHU2NTk2XHU2NmViXHU2YjExXHU2YjEyXHU2YjBmXHU2YmNhXHU3MDViXHU3MDVhXHU3MjIyXHU3MzgyXHU3MzgxXHU3MzgzXHU3NjcwXHU3N2Q0XHU3YzY3XHU3YzY2XHU3ZTk1XHU4MjZjXHU4NjNhXHU4NjQwXHU4NjM5XHU4NjNjXHU4NjMx'@; put 'XHU4NjNiXHU4NjNlXHU4ODMwXHU4ODMyXHU4ODJlXHU4ODMzXHU4OTc2XHU4OTc0XHU4OTczXHU4OWZlXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ3XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDddW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ3XVtzXV09NjMyMzIrcyxoWzYzMjMy'@; put 'K3NdPWNbMjQ3XVtzXSk7Zm9yKGNbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjhjXHU4YjhlXHU4YjhiXHU4Yjg4XHU4YzQ1XHU4ZDE5XHU4ZTk4XHU4ZjY0XHU4ZjYzXHU5MWJjXHU5NDYyXHU5NDU1XHU5NDVkXHU5NDU3'@; put 'XHU5NDVlXHU5N2M0XHU5N2M1XHU5ODAwXHU5YTU2XHU5YTU5XHU5YjFlXHU5YjFmXHU5YjIwXHU5YzUyXHU5YzU4XHU5YzUwXHU5YzRhXHU5YzRkXHU5YzRiXHU5YzU1XHU5YzU5XHU5YzRjXHU5YzRlXHU5ZGZiXHU5ZGY3XHU5ZGVmXHU5ZGUzXHU5ZGViXHU5ZGY4XHU5ZGU0XHU5ZGY2XHU5'@; put 'ZGUxXHU5ZGVlXHU5ZGU2XHU5ZGYyXHU5ZGYwXHU5ZGUyXHU5ZGVjXHU5ZGY0XHU5ZGYzXHU5ZGU4XHU5ZGVkXHU5ZWMyXHU5ZWQwXHU5ZWYyXHU5ZWYzXHU5ZjA2XHU5ZjFjXHU5ZjM4XHU5ZjM3XHU5ZjM2XHU5ZjQzXHU5ZjRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHU5ZjcxXHU5ZjcwXHU5ZjZlXHU5ZjZmXHU1NmQzXHU1NmNkXHU1YjRlXHU1YzZkXHU2NTJkXHU2NmVkXHU2NmVlXHU2YjEzXHU3MDVmXHU3MDYxXHU3MDVkXHU3MDYwXHU3MjIzXHU3NGRiXHU3NGU1XHU3N2Q1XHU3OTM4XHU3OWI3XHU3OWI2XHU3YzZhXHU3ZTk3XHU3Zjg5XHU4MjZk'@; put 'XHU4NjQzXHU4ODM4XHU4ODM3XHU4ODM1XHU4ODRiXHU4Yjk0XHU4Yjk1XHU4ZTllXHU4ZTlmXHU4ZWEwXHU4ZTlkXHU5MWJlXHU5MWJkXHU5MWMyXHU5NDZiXHU5NDY4XHU5NDY5XHU5NmU1XHU5NzQ2XHU5NzQzXHU5NzQ3XHU5N2M3XHU5N2U1XHU5YTVlXHU5YWQ1XHU5YjU5XHU5YzYzXHU5'@; put 'YzY3XHU5YzY2XHU5YzYyXHU5YzVlXHU5YzYwXHU5ZTAyXHU5ZGZlXHU5ZTA3XHU5ZTAzXHU5ZTA2XHU5ZTA1XHU5ZTAwXHU5ZTAxXHU5ZTA5XHU5ZGZmXHU5ZGZkXHU5ZTA0XHU5ZWEwXHU5ZjFlXHU5ZjQ2XHU5Zjc0XHU5Zjc1XHU5Zjc2XHU1NmQ0XHU2NTJlXHU2NWI4XHU2YjE4XHU2YjE5'@; put 'XHU2YjE3XHU2YjFhXHU3MDYyXHU3MjI2XHU3MmFhXHU3N2Q4XHU3N2Q5XHU3OTM5XHU3YzY5XHU3YzZiXHU3Y2Y2XHU3ZTlhXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ4XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDhdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMjQ4XVtzXV09NjM0'@; put 'ODgrcyxoWzYzNDg4K3NdPWNbMjQ4XVtzXSk7Zm9yKGNbMjQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZTk4XHU3ZTliXHU3ZTk5XHU4MWUwXHU4MWUxXHU4NjQ2XHU4NjQ3XHU4NjQ4XHU4OTc5XHU4OTdhXHU4OTdjXHU4OTdi'@; put 'XHU4OWZmXHU4Yjk4XHU4Yjk5XHU4ZWE1XHU4ZWE0XHU4ZWEzXHU5NDZlXHU5NDZkXHU5NDZmXHU5NDcxXHU5NDczXHU5NzQ5XHU5ODcyXHU5OTVmXHU5YzY4XHU5YzZlXHU5YzZkXHU5ZTBiXHU5ZTBkXHU5ZTEwXHU5ZTBmXHU5ZTEyXHU5ZTExXHU5ZWExXHU5ZWY1XHU5ZjA5XHU5ZjQ3XHU5'@; put 'Zjc4XHU5ZjdiXHU5ZjdhXHU5Zjc5XHU1NzFlXHU3MDY2XHU3YzZmXHU4ODNjXHU4ZGIyXHU4ZWE2XHU5MWMzXHU5NDc0XHU5NDc4XHU5NDc2XHU5NDc1XHU5YTYwXHU5Yzc0XHU5YzczXHU5YzcxXHU5Yzc1XHU5ZTE0XHU5ZTEzXHU5ZWY2XHU5ZjBhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHU5ZmE0XHU3MDY4XHU3MDY1XHU3Y2Y3XHU4NjZhXHU4ODNlXHU4ODNkXHU4ODNmXHU4YjllXHU4YzljXHU4ZWE5XHU4ZWM5XHU5NzRiXHU5ODczXHU5ODc0XHU5OGNjXHU5OTYxXHU5OWFiXHU5YTY0XHU5YTY2XHU5YTY3XHU5YjI0XHU5ZTE1XHU5ZTE3XHU5ZjQ4'@; put 'XHU2MjA3XHU2YjFlXHU3MjI3XHU4NjRjXHU4ZWE4XHU5NDgyXHU5NDgwXHU5NDgxXHU5YTY5XHU5YTY4XHU5YjJlXHU5ZTE5XHU3MjI5XHU4NjRiXHU4YjlmXHU5NDgzXHU5Yzc5XHU5ZWI3XHU3Njc1XHU5YTZiXHU5YzdhXHU5ZTFkXHU3MDY5XHU3MDZhXHU5ZWE0XHU5ZjdlXHU5ZjQ5XHU5'@; put 'Zjk4XHU3ODgxXHU5MmI5XHU4OGNmXHU1OGJiXHU2MDUyXHU3Y2E3XHU1YWZhXHUyNTU0XHUyNTY2XHUyNTU3XHUyNTYwXHUyNTZjXHUyNTYzXHUyNTVhXHUyNTY5XHUyNTVkXHUyNTUyXHUyNTY0XHUyNTU1XHUyNTVlXHUyNTZhXHUyNTYxXHUyNTU4XHUyNTY3XHUyNTViXHUyNTUzXHUyNTY1'@; put 'XHUyNTU2XHUyNTVmXHUyNTZiXHUyNTYyXHUyNTU5XHUyNTY4XHUyNTVjXHUyNTUxXHUyNTUwXHUyNTZkXHUyNTZlXHUyNTcwXHUyNTZmXHUyNTkzXHVmZmZkIi5zcGxpdCgiIikscz0wO3MhPWNbMjQ5XS5sZW5ndGg7KytzKTY1NTMzIT09Y1syNDldW3NdLmNoYXJDb2RlQXQoMCkmJih5W2Nb'@; put 'MjQ5XVtzXV09NjM3NDQrcyxoWzYzNzQ0K3NdPWNbMjQ5XVtzXSk7cmV0dXJue2VuYzp5LGRlYzpofX0oKSxqWzEyNTBdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgx'@; put 'NVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1MjAxYVx1ZmZm'@; put 'ZFx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1YVx1MDE2NFx1MDE3ZFx1MDE3OVx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDE2MVx1MjAzYVx1MDE1Ylx1MDE2NVx1MDE3ZVx1'@; put 'MDE3YVx4YTBcdTAyYzdcdTAyZDhcdTAxNDFceGE0XHUwMTA0XHhhNlx4YTdceGE4XHhhOVx1MDE1ZVx4YWJceGFjXHhhZFx4YWVcdTAxN2JceGIwXHhiMVx1MDJkYlx1MDE0Mlx4YjRceGI1XHhiNlx4YjdceGI4XHUwMTA1XHUwMTVmXHhiYlx1MDEzZFx1MDJkZFx1MDEzZVx1MDE3Y1x1MDE1'@; put 'NFx4YzFceGMyXHUwMTAyXHhjNFx1MDEzOVx1MDEwNlx4YzdcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExYVx4Y2RceGNlXHUwMTBlXHUwMTEwXHUwMTQzXHUwMTQ3XHhkM1x4ZDRcdTAxNTBceGQ2XHhkN1x1MDE1OFx1MDE2ZVx4ZGFcdTAxNzBceGRjXHhkZFx1MDE2Mlx4ZGZcdTAxNTVceGUx'@; put 'XHhlMlx1MDEwM1x4ZTRcdTAxM2FcdTAxMDdceGU3XHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMWJceGVkXHhlZVx1MDEwZlx1MDExMVx1MDE0NFx1MDE0OFx4ZjNceGY0XHUwMTUxXHhmNlx4ZjdcdTAxNTlcdTAxNmZceGZhXHUwMTcxXHhmY1x4ZmRcdTAxNjNcdTAyZDkiLHk9W10sYz17fSxz'@; put 'PTA7MjU2IT1zOysrcyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzEyNTFdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5c'@; put 'dlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1'@; put 'dnd4eXp7fH1+XHg3Zlx1MDQwMlx1MDQwM1x1MjAxYVx1MDQ1M1x1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQwOVx1MjAzOVx1MDQwYVx1MDQwY1x1MDQwYlx1MDQwZlx1MDQ1Mlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1'@; put 'MjEyMlx1MDQ1OVx1MjAzYVx1MDQ1YVx1MDQ1Y1x1MDQ1Ylx1MDQ1Zlx4YTBcdTA0MGVcdTA0NWVcdTA0MDhceGE0XHUwNDkwXHhhNlx4YTdcdTA0MDFceGE5XHUwNDA0XHhhYlx4YWNceGFkXHhhZVx1MDQwN1x4YjBceGIxXHUwNDA2XHUwNDU2XHUwNDkxXHhiNVx4YjZceGI3XHUwNDUxXHUy'@; put 'MTE2XHUwNDU0XHhiYlx1MDQ1OFx1MDQwNVx1MDQ1NVx1MDQ1N1x1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1'@; put 'MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0'@; put 'MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0ZiIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtz'@; put 'XT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMTI1Ml09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFi'@; put 'XHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIx'@; put 'XHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHUwMTdkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHUwMTdlXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRc'@; put 'eGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4'@; put 'Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhm'@; put 'N1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIix5PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hhckF0KHMpO3JldHVybntlbmM6YyxkZWM6eX19KCksalsxMjUzXT1mdW5jdGlvbigpe2Zv'@; put 'cih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdI'@; put 'SUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIw'@; put 'MThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwMzg1XHUwMzg2XHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx1ZmZmZFx4YWJceGFjXHhhZFx4YWVcdTIwMTVceGIwXHhi'@; put 'MVx4YjJceGIzXHUwMzg0XHhiNVx4YjZceGI3XHUwMzg4XHUwMzg5XHUwMzhhXHhiYlx1MDM4Y1x4YmRcdTAzOGVcdTAzOGZcdTAzOTBcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAz'@; put 'OWZcdTAzYTBcdTAzYTFcdWZmZmRcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYWFcdTAzYWJcdTAzYWNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzYjBcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFc'@; put 'dTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzJcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdTAzY2FcdTAzY2JcdTAzY2NcdTAzY2RcdTAzY2VcdWZmZmQiLHk9W10sYz17fSxzPTA7MjU2IT1zOysrcyk2NTUzMyE9PWguY2hh'@; put 'ckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzEyNTRdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4'@; put 'MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1'@; put 'MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x1ZmZm'@; put 'ZFx1ZmZmZFx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1'@; put 'XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDExZVx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDEzMFx1MDE1ZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhl'@; put 'ZFx4ZWVceGVmXHUwMTFmXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMTMxXHUwMTVmXHhmZiIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChz'@; put 'KTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMTI1NV09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFl'@; put 'XHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMw'@; put 'XHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx4YTFceGEyXHhhM1x1MjBhYVx4YTVceGE2XHhh'@; put 'N1x4YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhiY1x4YmRceGJlXHhiZlx1MDViMFx1MDViMVx1MDViMlx1MDViM1x1MDViNFx1MDViNVx1MDViNlx1MDViN1x1MDViOFx1MDViOVx1ZmZmZFx1'@; put 'MDViYlx1MDViY1x1MDViZFx1MDViZVx1MDViZlx1MDVjMFx1MDVjMVx1MDVjMlx1MDVjM1x1MDVmMFx1MDVmMVx1MDVmMlx1MDVmM1x1MDVmNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVk'@; put 'Nlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCIseT1bXSxjPXt9LHM9'@; put 'MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMTI1Nl09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2'@; put 'XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2'@; put 'd3h5ent8fX5ceDdmXHUyMGFjXHUwNjdlXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwNjc5XHUyMDM5XHUwMTUyXHUwNjg2XHUwNjk4XHUwNjg4XHUwNmFmXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwNmE5XHUy'@; put 'MTIyXHUwNjkxXHUyMDNhXHUwMTUzXHUyMDBjXHUyMDBkXHUwNmJhXHhhMFx1MDYwY1x4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHUwNmJlXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHUwNjFiXHhiYlx4YmNceGJk'@; put 'XHhiZVx1MDYxZlx1MDZjMVx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx4ZDdcdTA2MzdcdTA2Mzhc'@; put 'dTA2MzlcdTA2M2FcdTA2NDBcdTA2NDFcdTA2NDJcdTA2NDNceGUwXHUwNjQ0XHhlMlx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx4ZTdceGU4XHhlOVx4ZWFceGViXHUwNjQ5XHUwNjRhXHhlZVx4ZWZcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVceGY0XHUwNjRmXHUwNjUwXHhmN1x1MDY1MVx4'@; put 'ZjlcdTA2NTJceGZiXHhmY1x1MjAwZVx1MjAwZlx1MDZkMiIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMTI1N109ZnVuY3Rpb24oKXtm'@; put 'b3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZH'@; put 'SElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHVmZmZkXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHhhOFx1MDJjN1x4YjhcdWZmZmRcdTIwMThc'@; put 'dTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRceGFmXHUwMmRiXHVmZmZkXHhhMFx1ZmZmZFx4YTJceGEzXHhhNFx1ZmZmZFx4YTZceGE3XHhkOFx4YTlcdTAxNTZceGFiXHhhY1x4YWRceGFlXHhjNlx4YjBceGIxXHhiMlx4'@; put 'YjNceGI0XHhiNVx4YjZceGI3XHhmOFx4YjlcdTAxNTdceGJiXHhiY1x4YmRceGJlXHhlNlx1MDEwNFx1MDEyZVx1MDEwMFx1MDEwNlx4YzRceGM1XHUwMTE4XHUwMTEyXHUwMTBjXHhjOVx1MDE3OVx1MDExNlx1MDEyMlx1MDEzNlx1MDEyYVx1MDEzYlx1MDE2MFx1MDE0M1x1MDE0NVx4ZDNc'@; put 'dTAxNGNceGQ1XHhkNlx4ZDdcdTAxNzJcdTAxNDFcdTAxNWFcdTAxNmFceGRjXHUwMTdiXHUwMTdkXHhkZlx1MDEwNVx1MDEyZlx1MDEwMVx1MDEwN1x4ZTRceGU1XHUwMTE5XHUwMTEzXHUwMTBkXHhlOVx1MDE3YVx1MDExN1x1MDEyM1x1MDEzN1x1MDEyYlx1MDEzY1x1MDE2MVx1MDE0NFx1'@; put 'MDE0Nlx4ZjNcdTAxNGRceGY1XHhmNlx4ZjdcdTAxNzNcdTAxNDJcdTAxNWJcdTAxNmJceGZjXHUwMTdjXHUwMTdlXHUwMmQ5Iix5PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hhckF0KHMpO3JldHVy'@; put 'bntlbmM6YyxkZWM6eX19KCksalsxMjU4XT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFc'@; put 'IiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdWZmZmRc'@; put 'dTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5'@; put 'XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhk'@; put 'MVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4'@; put 'ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIix5PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hhckF0KHMpO3JldHVybntlbmM6YyxkZWM6eX19KCksalsxZTRdPWZ1bmN0'@; put 'aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9A'@; put 'QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4'@; put 'ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhh'@; put 'YVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1'@; put 'MjAzOVx1MjAzYVx1ZmIwMVx1ZmIwMlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJk'@; put 'ZFx1MDJkYlx1MDJjNyIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMTAwMDZdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAy'@; put 'XHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpb'@; put 'XFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRceGI5XHhiMlx4YzlceGIzXHhkNlx4ZGNcdTAzODVceGUwXHhlMlx4ZTRcdTAzODRceGE4XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGEzXHUyMTIyXHhlZVx4ZWZcdTIwMjJceGJkXHUyMDMwXHhmNFx4ZjZceGE2XHhh'@; put 'ZFx4ZjlceGZiXHhmY1x1MjAyMFx1MDM5M1x1MDM5NFx1MDM5OFx1MDM5Ylx1MDM5ZVx1MDNhMFx4ZGZceGFlXHhhOVx1MDNhM1x1MDNhYVx4YTdcdTIyNjBceGIwXHUwMzg3XHUwMzkxXHhiMVx1MjI2NFx1MjI2NVx4YTVcdTAzOTJcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOTlcdTAzOWFcdTAz'@; put 'OWNcdTAzYTZcdTAzYWJcdTAzYThcdTAzYTlcdTAzYWNcdTAzOWRceGFjXHUwMzlmXHUwM2ExXHUyMjQ4XHUwM2E0XHhhYlx4YmJcdTIwMjZceGEwXHUwM2E1XHUwM2E3XHUwMzg2XHUwMzg4XHUwMTUzXHUyMDEzXHUyMDE1XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MDM4OVx1MDM4'@; put 'YVx1MDM4Y1x1MDM4ZVx1MDNhZFx1MDNhZVx1MDNhZlx1MDNjY1x1MDM4Zlx1MDNjZFx1MDNiMVx1MDNiMlx1MDNjOFx1MDNiNFx1MDNiNVx1MDNjNlx1MDNiM1x1MDNiN1x1MDNiOVx1MDNiZVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZlx1MDNjMFx1MDNjZVx1MDNjMVx1MDNjM1x1'@; put 'MDNjNFx1MDNiOFx1MDNjOVx1MDNjMlx1MDNjN1x1MDNjNVx1MDNiNlx1MDNjYVx1MDNjYlx1MDM5MFx1MDNiMFx1ZmZmZCIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57'@; put 'ZW5jOmMsZGVjOnl9fSgpLGpbMTAwMDddPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwi'@; put 'IyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1'@; put 'MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHUwNDA2XHhh'@; put 'ZVx4YTlcdTIxMjJcdTA0MDJcdTA0NTJcdTIyNjBcdTA0MDNcdTA0NTNcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHUwNDU2XHhiNVx1MjIwMlx1MDQwOFx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwOVx1MDQ1OVx1MDQwYVx1MDQ1YVx1MDQ1OFx1MDQwNVx4YWNcdTIyMWFcdTAxOTJcdTIy'@; put 'NDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTA0MGJcdTA0NWJcdTA0MGNcdTA0NWNcdTA0NTVcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyMDFlXHUwNDBlXHUwNDVlXHUwNDBmXHUwNDVmXHUyMTE2XHUwNDAxXHUwNDUxXHUwNDRmXHUwNDMwXHUwNDMxXHUw'@; put 'NDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRk'@; put 'XHUwNDRlXHhhNCIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMTAwMDhdPWZ1bmN0aW9uKCl7dmFyIHMsaD1bXSx5PXt9LGM9W107Zm9y'@; put 'KGNbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElK'@; put 'S0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHg4MFx1ZjhkOFx1ZjhkOVx1ZjhkYVx1ZjhkYlx1ZjhkY1x1ZjhkZFx1ZjhkZVx1ZjhkZlx1ZjhlMFx1ZjhlMVx1ZjhlMlx1ZjhlM1x1ZjhlNFx1ZjhlNVx1ZjhlNlx1ZjhlN1x1ZjhlOFx1'@; put 'ZjhlOVx1ZjhlYVx1ZjhlYlx1ZjhlY1x1ZjhlZFx1ZjhlZVx1ZjhlZlx1ZjhmMFx1ZjhmMVx1ZjhmMlx1ZjhmM1x1ZjhmNFx1ZjhmNVx1ZjhmNlx1ZjhmN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZjhmOFx1ZjhmOVx1ZjhmYVx1ZjhmYlx1ZjhmY1x1ZjhmZFx1ZjhmZVx1ZjhmZiIu'@; put 'c3BsaXQoIiIpLHM9MDtzIT1jWzBdLmxlbmd0aDsrK3MpNjU1MzMhPT1jWzBdW3NdLmNoYXJDb2RlQXQoMCkmJih5W2NbMF1bc11dPTArcyxoWzArc109Y1swXVtzXSk7Zm9yKGNbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHUzMGZiXHUwMmM5XHUwMmM3XHhhOFx1MzAwM1x1MzAwNVx1MjAxNVx1ZmY1ZVx1ZmZmZFx1MjAyNlx1MjAx'@; put 'OFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOFx1MzAwOVx1MzAwYVx1MzAwYlx1MzAwY1x1MzAwZFx1MzAwZVx1MzAwZlx1MzAxNlx1MzAxN1x1MzAxMFx1MzAxMVx4YjFceGQ3XHhmN1x1MjIzNlx1MjIyN1x1MjIyOFx1MjIxMVx1MjIwZlx1MjIyYVx1MjIyOVx1MjIwOFx1'@; put 'MjIzN1x1MjIxYVx1MjJhNVx1MjIyNVx1MjIyMFx1MjMxMlx1MjI5OVx1MjIyYlx1MjIyZVx1MjI2MVx1MjI0Y1x1MjI0OFx1MjIzZFx1MjIxZFx1MjI2MFx1MjI2ZVx1MjI2Zlx1MjI2NFx1MjI2NVx1MjIxZVx1MjIzNVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNc'@; put 'dWZmMDRceGE0XHVmZmUwXHVmZmUxXHUyMDMwXHhhN1x1MjExNlx1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjAzYlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1j'@; put 'WzE2MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTYxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2MV1bc11dPTQxMjE2K3MsaFs0MTIxNitzXT1jWzE2MV1bc10pO2ZvcihjWzE2Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1MjQ4OFx1MjQ4OVx1MjQ4YVx1MjQ4Ylx1MjQ4Y1x1MjQ4ZFx1MjQ4ZVx1MjQ4Zlx1MjQ5MFx1MjQ5MVx1MjQ5Mlx1MjQ5M1x1MjQ5NFx1MjQ5NVx1MjQ5Nlx1MjQ5N1x1MjQ5OFx1MjQ5OVx1MjQ5YVx1MjQ5Ylx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1'@; put 'MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx1MjQ4M1x1MjQ4NFx1MjQ4NVx1MjQ4Nlx1MjQ4N1x1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1ZmZmZFx1ZmZmZFx1MzIy'@; put 'MFx1MzIyMVx1MzIyMlx1MzIyM1x1MzIyNFx1MzIyNVx1MzIyNlx1MzIyN1x1MzIyOFx1MzIyOVx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1MjE2YVx1MjE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQo'@; put 'IiIpLHM9MDtzIT1jWzE2Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTYyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2Ml1bc11dPTQxNDcyK3MsaFs0MTQ3MitzXT1jWzE2Ml1bc10pO2ZvcihjWzE2M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmYwMVx1ZmYwMlx1ZmYwM1x1ZmZlNVx1ZmYwNVx1ZmYwNlx1ZmYwN1x1ZmYwOFx1ZmYwOVx1ZmYwYVx1ZmYwYlx1ZmYw'@; put 'Y1x1ZmYwZFx1ZmYwZVx1ZmYwZlx1ZmYxMFx1ZmYxMVx1ZmYxMlx1ZmYxM1x1ZmYxNFx1ZmYxNVx1ZmYxNlx1ZmYxN1x1ZmYxOFx1ZmYxOVx1ZmYxYVx1ZmYxYlx1ZmYxY1x1ZmYxZFx1ZmYxZVx1ZmYxZlx1ZmYyMFx1ZmYyMVx1ZmYyMlx1ZmYyM1x1ZmYyNFx1ZmYyNVx1ZmYyNlx1ZmYyN1x1'@; put 'ZmYyOFx1ZmYyOVx1ZmYyYVx1ZmYyYlx1ZmYyY1x1ZmYyZFx1ZmYyZVx1ZmYyZlx1ZmYzMFx1ZmYzMVx1ZmYzMlx1ZmYzM1x1ZmYzNFx1ZmYzNVx1ZmYzNlx1ZmYzN1x1ZmYzOFx1ZmYzOVx1ZmYzYVx1ZmYzYlx1ZmYzY1x1ZmYzZFx1ZmYzZVx1ZmYzZlx1ZmY0MFx1ZmY0MVx1ZmY0Mlx1ZmY0'@; put 'M1x1ZmY0NFx1ZmY0NVx1ZmY0Nlx1ZmY0N1x1ZmY0OFx1ZmY0OVx1ZmY0YVx1ZmY0Ylx1ZmY0Y1x1ZmY0ZFx1ZmY0ZVx1ZmY0Zlx1ZmY1MFx1ZmY1MVx1ZmY1Mlx1ZmY1M1x1ZmY1NFx1ZmY1NVx1ZmY1Nlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1ZmY1Ylx1ZmY1Y1x1ZmY1ZFx1ZmZlM1x1'@; put 'ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTYzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2M11bc11dPTQxNzI4K3MsaFs0MTcyOCtzXT1jWzE2M11bc10pO2ZvcihjWzE2NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NVx1MzA0Nlx1MzA0N1x1MzA0OFx1MzA0OVx1MzA0'@; put 'YVx1MzA0Ylx1MzA0Y1x1MzA0ZFx1MzA0ZVx1MzA0Zlx1MzA1MFx1MzA1MVx1MzA1Mlx1MzA1M1x1MzA1NFx1MzA1NVx1MzA1Nlx1MzA1N1x1MzA1OFx1MzA1OVx1MzA1YVx1MzA1Ylx1MzA1Y1x1MzA1ZFx1MzA1ZVx1MzA1Zlx1MzA2MFx1MzA2MVx1MzA2Mlx1MzA2M1x1MzA2NFx1MzA2NVx1'@; put 'MzA2Nlx1MzA2N1x1MzA2OFx1MzA2OVx1MzA2YVx1MzA2Ylx1MzA2Y1x1MzA2ZFx1MzA2ZVx1MzA2Zlx1MzA3MFx1MzA3MVx1MzA3Mlx1MzA3M1x1MzA3NFx1MzA3NVx1MzA3Nlx1MzA3N1x1MzA3OFx1MzA3OVx1MzA3YVx1MzA3Ylx1MzA3Y1x1MzA3ZFx1MzA3ZVx1MzA3Zlx1MzA4MFx1MzA4'@; put 'MVx1MzA4Mlx1MzA4M1x1MzA4NFx1MzA4NVx1MzA4Nlx1MzA4N1x1MzA4OFx1MzA4OVx1MzA4YVx1MzA4Ylx1MzA4Y1x1MzA4ZFx1MzA4ZVx1MzA4Zlx1MzA5MFx1MzA5MVx1MzA5Mlx1MzA5M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2NF1bc11dPTQxOTg0K3MsaFs0MTk4NCtzXT1jWzE2NF1bc10pO2ZvcihjWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBh'@; put 'OFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1'@; put 'MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1MzBkZVx1MzBk'@; put 'Zlx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2NV1bc11dPTQyMjQwK3MsaFs0MjI0MCtzXT1jWzE2NV1bc10pO2ZvcihjWzE2Nl09Ilx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5'@; put 'Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1'@; put 'MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2Nl1bc11dPTQyNDk2K3MsaFs0MjQ5NitzXT1jWzE2Nl1bc10pO2ZvcihjWzE2N109'@; put 'Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQx'@; put 'M1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1'@; put 'MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQz'@; put 'OVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2N11bc11dPTQyNzUyK3MsaFs0Mjc1MitzXT1jWzE2N11bc10p'@; put 'O2ZvcihjWzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDEwMVx4ZTFc'@; put 'dTAxY2VceGUwXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQwXHhlY1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGFcdTAxZGNceGZjXHhlYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1MzExMFx1MzExMVx1MzExMlx1MzExM1x1MzExNFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzEx'@; put 'ZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2OF1bc11dPTQzMDA4K3MsaFs0MzAwOCtzXT1jWzE2OF1bc10pO2ZvcihjWzE2OV09'@; put 'Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjUw'@; put 'MFx1MjUwMVx1MjUwMlx1MjUwM1x1MjUwNFx1MjUwNVx1MjUwNlx1MjUwN1x1MjUwOFx1MjUwOVx1MjUwYVx1MjUwYlx1MjUwY1x1MjUwZFx1MjUwZVx1MjUwZlx1MjUxMFx1MjUxMVx1MjUxMlx1MjUxM1x1MjUxNFx1MjUxNVx1MjUxNlx1MjUxN1x1MjUxOFx1MjUxOVx1MjUxYVx1MjUxYlx1'@; put 'MjUxY1x1MjUxZFx1MjUxZVx1MjUxZlx1MjUyMFx1MjUyMVx1MjUyMlx1MjUyM1x1MjUyNFx1MjUyNVx1MjUyNlx1MjUyN1x1MjUyOFx1MjUyOVx1MjUyYVx1MjUyYlx1MjUyY1x1MjUyZFx1MjUyZVx1MjUyZlx1MjUzMFx1MjUzMVx1MjUzMlx1MjUzM1x1MjUzNFx1MjUzNVx1MjUzNlx1MjUz'@; put 'N1x1MjUzOFx1MjUzOVx1MjUzYVx1MjUzYlx1MjUzY1x1MjUzZFx1MjUzZVx1MjUzZlx1MjU0MFx1MjU0MVx1MjU0Mlx1MjU0M1x1MjU0NFx1MjU0NVx1MjU0Nlx1MjU0N1x1MjU0OFx1MjU0OVx1MjU0YVx1MjU0Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE2OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTY5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE2OV1bc11dPTQzMjY0K3MsaFs0MzI2NCtzXT1jWzE2OV1bc10p'@; put 'O2ZvcihjWzE3Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTU0YVx1OTYz'@; put 'Zlx1NTdjM1x1NjMyOFx1NTRjZVx1NTUwOVx1NTRjMFx1NzY5MVx1NzY0Y1x1ODUzY1x1NzdlZVx1ODI3ZVx1Nzg4ZFx1NzIzMVx1OTY5OFx1OTc4ZFx1NmMyOFx1NWI4OVx1NGZmYVx1NjMwOVx1NjY5N1x1NWNiOFx1ODBmYVx1Njg0OFx1ODBhZVx1NjYwMlx1NzZjZVx1NTFmOVx1NjU1Nlx1'@; put 'NzFhY1x1N2ZmMVx1ODg4NFx1NTBiMlx1NTk2NVx1NjFjYVx1NmZiM1x1ODJhZFx1NjM0Y1x1NjI1Mlx1NTNlZFx1NTQyN1x1N2IwNlx1NTE2Ylx1NzVhNFx1NWRmNFx1NjJkNFx1OGRjYlx1OTc3Nlx1NjI4YVx1ODAxOVx1NTc1ZFx1OTczOFx1N2Y2Mlx1NzIzOFx1NzY3ZFx1NjdjZlx1NzY3'@; put 'ZVx1NjQ0Nlx1NGY3MFx1OGQyNVx1NjJkY1x1N2ExN1x1NjU5MVx1NzNlZFx1NjQyY1x1NjI3M1x1ODIyY1x1OTg4MVx1Njc3Zlx1NzI0OFx1NjI2ZVx1NjJjY1x1NGYzNFx1NzRlM1x1NTM0YVx1NTI5ZVx1N2VjYVx1OTBhNlx1NWUyZVx1Njg4Nlx1Njk5Y1x1ODE4MFx1N2VkMVx1NjhkMlx1'@; put 'NzhjNVx1ODY4Y1x1OTU1MVx1NTA4ZFx1OGMyNFx1ODJkZVx1ODBkZVx1NTMwNVx1ODkxMlx1NTI2NVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE3Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTc2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE3Nl1bc11dPTQ1MDU2K3MsaFs0NTA1Nitz'@; put 'XT1jWzE3Nl1bc10pO2ZvcihjWzE3N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ODU4NFx1OTZmOVx1NGZkZFx1NTgyMVx1OTk3MVx1NWI5ZFx1NjJiMVx1NjJhNVx1NjZiNFx1OGM3OVx1OWM4ZFx1NzIwNlx1Njc2Zlx1Nzg5MVx1NjBiMlx1NTM1MVx1NTMxN1x1OGY4OFx1ODBjY1x1OGQxZFx1OTRhMVx1NTAwZFx1NzJjOFx1NTkwN1x1NjBlYlx1NzExOVx1ODhhYlx1'@; put 'NTk1NFx1ODJlZlx1NjcyY1x1N2IyOFx1NWQyOVx1N2VmN1x1NzUyZFx1NmNmNVx1OGU2Nlx1OGZmOFx1OTAzY1x1OWYzYlx1NmJkNFx1OTExOVx1N2IxNFx1NWY3Y1x1NzhhN1x1ODRkNlx1ODUzZFx1NmJkNVx1NmJkOVx1NmJkNlx1NWUwMVx1NWU4N1x1NzVmOVx1OTVlZFx1NjU1ZFx1NWYw'@; put 'YVx1NWZjNVx1OGY5Zlx1NThjMVx1ODFjMlx1OTA3Zlx1OTY1Ylx1OTdhZFx1OGZiOVx1N2YxNlx1OGQyY1x1NjI0MVx1NGZiZlx1NTNkOFx1NTM1ZVx1OGZhOFx1OGZhOVx1OGZhYlx1OTA0ZFx1NjgwN1x1NWY2YVx1ODE5OFx1ODg2OFx1OWNkNlx1NjE4Ylx1NTIyYlx1NzYyYVx1NWY2Y1x1'@; put 'NjU4Y1x1NmZkMlx1NmVlOFx1NWJiZVx1NjQ0OFx1NTE3NVx1NTFiMFx1NjdjNFx1NGUxOVx1NzljOVx1OTk3Y1x1NzBiM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE3N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTc3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE3N11bc11dPTQ1MzEy'@; put 'K3MsaFs0NTMxMitzXT1jWzE3N11bc10pO2ZvcihjWzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1NzVjNVx1NWU3Nlx1NzNiYlx1ODNlMFx1NjRhZFx1NjJlOFx1OTRiNVx1NmNlMlx1NTM1YVx1NTJjM1x1NjQwZlx1OTRjMlx1N2I5NFx1NGYyZlx1NWUxYlx1ODIzNlx1ODExNlx1ODE4YVx1NmUyNFx1NmNjYVx1OWE3M1x1NjM1NVx1NTM1Y1x1NTRmYVx1ODg2NVx1'@; put 'NTdlMFx1NGUwZFx1NWUwM1x1NmI2NVx1N2MzZlx1OTBlOFx1NjAxNlx1NjRlNlx1NzMxY1x1ODhjMVx1Njc1MFx1NjI0ZFx1OGQyMlx1Nzc2Y1x1OGUyOVx1OTFjN1x1NWY2OVx1ODNkY1x1ODUyMVx1OTkxMFx1NTNjMlx1ODY5NVx1NmI4Ylx1NjBlZFx1NjBlOFx1NzA3Zlx1ODJjZFx1ODIz'@; put 'MVx1NGVkM1x1NmNhN1x1ODVjZlx1NjRjZFx1N2NkOVx1NjlmZFx1NjZmOVx1ODM0OVx1NTM5NVx1N2I1Nlx1NGZhN1x1NTE4Y1x1NmQ0Ylx1NWM0Mlx1OGU2ZFx1NjNkMlx1NTNjOVx1ODMyY1x1ODMzNlx1NjdlNVx1NzhiNFx1NjQzZFx1NWJkZlx1NWM5NFx1NWRlZVx1OGJlN1x1NjJjNlx1'@; put 'NjdmNFx1OGM3YVx1NjQwMFx1NjNiYVx1ODc0OVx1OTk4Ylx1OGMxN1x1N2YyMFx1OTRmMlx1NGVhN1x1OTYxMFx1OThhNFx1NjYwY1x1NzMxNlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE3OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTc4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE3'@; put 'OF1bc11dPTQ1NTY4K3MsaFs0NTU2OCtzXT1jWzE3OF1bc10pO2ZvcihjWzE3OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTczYVx1NWMxZFx1NWUzOFx1OTU3Zlx1NTA3Zlx1ODBhMFx1NTM4Mlx1NjU1ZVx1NzU0NVx1NTUzMVx1NTAyMVx1OGQ4NVx1NjI4NFx1OTQ5ZVx1NjcxZFx1NTYzMlx1NmY2ZVx1NWRlMlx1NTQzNVx1NzA5Mlx1OGY2Nlx1NjI2Zlx1NjRhNFx1'@; put 'NjNhM1x1NWY3Ylx1NmY4OFx1OTBmNFx1ODFlM1x1OGZiMFx1NWMxOFx1NjY2OFx1NWZmMVx1NmM4OVx1OTY0OFx1OGQ4MVx1ODg2Y1x1NjQ5MVx1NzlmMFx1NTdjZVx1NmE1OVx1NjIxMFx1NTQ0OFx1NGU1OFx1N2EwYlx1NjBlOVx1NmY4NFx1OGJkYVx1NjI3Zlx1OTAxZVx1OWE4Ylx1Nzll'@; put 'NFx1NTQwM1x1NzVmNFx1NjMwMVx1NTMxOVx1NmM2MFx1OGZkZlx1NWYxYlx1OWE3MFx1ODAzYlx1OWY3Zlx1NGY4OFx1NWMzYVx1OGQ2NFx1N2ZjNVx1NjVhNVx1NzBiZFx1NTE0NVx1NTFiMlx1ODY2Ylx1NWQwN1x1NWJhMFx1NjJiZFx1OTE2Y1x1NzU3NFx1OGUwY1x1N2EyMFx1NjEwMVx1'@; put 'N2I3OVx1NGVjN1x1N2VmOFx1Nzc4NVx1NGUxMVx1ODFlZFx1NTIxZFx1NTFmYVx1NmE3MVx1NTNhOFx1OGU4N1x1OTUwNFx1OTZjZlx1NmVjMVx1OTY2NFx1Njk1YVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE3OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTc5XVtzXS5jaGFyQ29kZUF0'@; put 'KDApJiYoeVtjWzE3OV1bc11dPTQ1ODI0K3MsaFs0NTgyNCtzXT1jWzE3OV1bc10pO2ZvcihjWzE4MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzg0MFx1NTBhOFx1NzdkN1x1NjQxMFx1ODllNlx1NTkwNFx1NjNlM1x1NWRkZFx1N2E3Zlx1NjkzZFx1NGYyMFx1ODIzOVx1NTU5OFx1NGUzMlx1NzVhZVx1N2E5N1x1NWU2Mlx1NWU4YVx1OTVlZlx1NTIxYlx1NTQzOVx1'@; put 'NzA4YVx1NjM3Nlx1OTUyNFx1NTc4Mlx1NjYyNVx1NjkzZlx1OTE4N1x1NTUwN1x1NmRmM1x1N2VhZlx1ODgyMlx1NjIzM1x1N2VmMFx1NzViNVx1ODMyOFx1NzhjMVx1OTZjY1x1OGY5ZVx1NjE0OFx1NzRmN1x1OGJjZFx1NmI2NFx1NTIzYVx1OGQ1MFx1NmIyMVx1ODA2YVx1ODQ3MVx1NTZm'@; put 'MVx1NTMwNlx1NGVjZVx1NGUxYlx1NTFkMVx1N2M5N1x1OTE4Ylx1N2MwN1x1NGZjM1x1OGU3Zlx1N2JlMVx1N2E5Y1x1NjQ2N1x1NWQxNFx1NTBhY1x1ODEwNlx1NzYwMVx1N2NiOVx1NmRlY1x1N2ZlMFx1Njc1MVx1NWI1OFx1NWJmOFx1NzhjYlx1NjRhZVx1NjQxM1x1NjNhYVx1NjMyYlx1'@; put 'OTUxOVx1NjQyZFx1OGZiZVx1N2I1NFx1NzYyOVx1NjI1M1x1NTkyN1x1NTQ0Nlx1NmI3OVx1NTBhM1x1NjIzNFx1NWUyNlx1NmI4Nlx1NGVlM1x1OGQzN1x1ODg4Ylx1NWY4NVx1OTAyZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTgwXVtz'@; put 'XS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4MF1bc11dPTQ2MDgwK3MsaFs0NjA4MCtzXT1jWzE4MF1bc10pO2ZvcihjWzE4MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjAyMFx1ODAzZFx1NjJjNVx1NGUzOVx1NTM1NVx1OTBmOFx1NjNiOFx1ODBjNlx1NjVlNlx1NmMyZVx1NGY0Nlx1NjBlZVx1NmRlMVx1OGJkZVx1NWYzOVx1ODZjYlx1NWY1M1x1NjMyMVx1NTE1YVx1'@; put 'ODM2MVx1Njg2M1x1NTIwMFx1NjM2M1x1OGU0OFx1NTAxMlx1NWM5Ylx1Nzk3N1x1NWJmY1x1NTIzMFx1N2EzYlx1NjBiY1x1OTA1M1x1NzZkN1x1NWZiN1x1NWY5N1x1NzY4NFx1OGU2Y1x1NzA2Zlx1NzY3Ylx1N2I0OVx1NzdhYVx1NTFmM1x1OTA5M1x1NTgyNFx1NGY0ZVx1NmVmNFx1OGZl'@; put 'YVx1NjU0Y1x1N2IxYlx1NzJjNFx1NmRhNFx1N2ZkZlx1NWFlMVx1NjJiNVx1NWU5NVx1NTczMFx1ODQ4Mlx1N2IyY1x1NWUxZFx1NWYxZlx1OTAxMlx1N2YxNFx1OThhMFx1NjM4Mlx1NmVjN1x1Nzg5OFx1NzBiOVx1NTE3OFx1OTc1Ylx1NTdhYlx1NzUzNVx1NGY0M1x1NzUzOFx1NWU5N1x1'@; put 'NjBlNlx1NTk2MFx1NmRjMFx1NmJiZlx1Nzg4OVx1NTNmY1x1OTZkNVx1NTFjYlx1NTIwMVx1NjM4OVx1NTQwYVx1OTQ5M1x1OGMwM1x1OGRjY1x1NzIzOVx1Nzg5Zlx1ODc3Nlx1OGZlZFx1OGMwZFx1NTNlMFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4MV0ubGVuZ3RoOysrcyk2NTUz'@; put 'MyE9PWNbMTgxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4MV1bc11dPTQ2MzM2K3MsaFs0NjMzNitzXT1jWzE4MV1bc10pO2ZvcihjWzE4Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGUwMVx1NzZlZlx1NTNlZVx1OTQ4OVx1OTg3Nlx1OWYwZVx1OTUyZFx1NWI5YVx1OGJhMlx1NGUyMlx1NGUxY1x1NTFhY1x1ODQ2M1x1NjFjMlx1NTJhOFx1NjgwYlx1NGY5N1x1'@; put 'NjA2Ylx1NTFiYlx1NmQxZVx1NTE1Y1x1NjI5Nlx1NjU5N1x1OTY2MVx1OGM0Nlx1OTAxN1x1NzVkOFx1OTBmZFx1Nzc2M1x1NmJkMlx1NzI4YVx1NzJlY1x1OGJmYlx1NTgzNVx1Nzc3OVx1OGQ0Y1x1Njc1Y1x1OTU0MFx1ODA5YVx1NWVhNlx1NmUyMVx1NTk5Mlx1N2FlZlx1NzdlZFx1OTUz'@; put 'Ylx1NmJiNVx1NjVhZFx1N2YwZVx1NTgwNlx1NTE1MVx1OTYxZlx1NWJmOVx1NThhOVx1NTQyOFx1OGU3Mlx1NjU2Nlx1OTg3Zlx1NTZlNFx1OTQ5ZFx1NzZmZVx1OTA0MVx1NjM4N1x1NTRjNlx1NTkxYVx1NTkzYVx1NTc5Ylx1OGViMlx1NjczNVx1OGRmYVx1ODIzNVx1NTI0MVx1NjBmMFx1'@; put 'NTgxNVx1ODZmZVx1NWNlOFx1OWU0NVx1NGZjNFx1OTg5ZFx1OGJiOVx1NWEyNVx1NjA3Nlx1NTM4NFx1NjI3Y1x1OTA0Zlx1OTEwMlx1OTk3Zlx1NjA2OVx1ODAwY1x1NTEzZlx1ODAzM1x1NWMxNFx1OTk3NVx1NmQzMVx1NGU4Y1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4Ml0ubGVu'@; put 'Z3RoOysrcyk2NTUzMyE9PWNbMTgyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4Ml1bc11dPTQ2NTkyK3MsaFs0NjU5MitzXT1jWzE4Ml1bc10pO2ZvcihjWzE4M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0Zlx1NGYxMFx1NGU0Zlx1OTYwMFx1NmNkNVx1NzNkMFx1ODVlOVx1NWUwNlx1NzU2YVx1N2ZmYlx1NmEwYVx1NzdmZVx1'@; put 'OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZkNFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1OTYzMlx1NTlhOFx1NGVmZlx1OGJiZlx1N2ViYVx1NjUzZVx1ODNmMlx1OTc1ZVx1NTU2MVx1OThkZVx1ODBhNVx1NTMy'@; put 'YVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4OVx1NTk0Ylx1NGVmZFx1NWZmZlx1NjEyNFx1N2NhYVx1NGUzMFx1NWMwMVx1NjdhYlx1ODcwMlx1NWNmMFx1OTUwYlx1'@; put 'OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2YxZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1NjJjMlx1OGY5MFx1NWU0NVx1NmMxZlx1N2IyNlx1NGYwZlx1NGZkOFx1NjcwZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtz'@; put 'IT1jWzE4M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTgzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4M11bc11dPTQ2ODQ4K3MsaFs0Njg0OCtzXT1jWzE4M11bc10pO2ZvcihjWzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ2ZVx1NmRhYVx1Nzk4Zlx1ODhiMVx1NWYxN1x1NzUyYlx1NjI5YVx1OGY4NVx1NGZlZlx1OTFkY1x1NjVhN1x1ODEyZlx1ODE1MVx1'@; put 'NWU5Y1x1ODE1MFx1OGQ3NFx1NTI2Zlx1ODk4Nlx1OGQ0Ylx1NTkwZFx1NTA4NVx1NGVkOFx1OTYxY1x1NzIzNlx1ODE3OVx1OGQxZlx1NWJjY1x1OGJhM1x1OTY0NFx1NTk4N1x1N2YxYVx1NTQ5MFx1NTY3Nlx1NTYwZVx1OGJlNVx1NjUzOVx1Njk4Mlx1OTQ5OVx1NzZkNlx1NmU4OVx1NWU3'@; put 'Mlx1NzUxOFx1Njc0Nlx1NjdkMVx1N2FmZlx1ODA5ZFx1OGQ3Nlx1NjExZlx1NzljNlx1NjU2Mlx1OGQ2M1x1NTE4OFx1NTIxYVx1OTRhMlx1N2YzOFx1ODA5Ylx1N2ViMlx1NWM5N1x1NmUyZlx1Njc2MFx1N2JkOVx1NzY4Ylx1OWFkOFx1ODE4Zlx1N2Y5NFx1N2NkNVx1NjQxZVx1OTU1MFx1'@; put 'N2EzZlx1NTQ0YVx1NTRlNVx1NmI0Y1x1NjQwMVx1NjIwOFx1OWUzZFx1ODBmM1x1NzU5OVx1NTI3Mlx1OTc2OVx1ODQ1Ylx1NjgzY1x1ODZlNFx1OTYwMVx1OTY5NFx1OTRlY1x1NGUyYVx1NTQwNFx1N2VkOVx1NjgzOVx1OGRkZlx1ODAxNVx1NjZmNFx1NWU5YVx1N2ZiOVx1ZmZmZCIuc3Bs'@; put 'aXQoIiIpLHM9MDtzIT1jWzE4NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTg0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4NF1bc11dPTQ3MTA0K3MsaFs0NzEwNCtzXT1jWzE4NF1bc10pO2ZvcihjWzE4NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTdjMlx1ODAzZlx1Njg5N1x1NWRlNVx1NjUzYlx1NTI5Zlx1NjA2ZFx1OWY5YVx1NGY5Ylx1OGVhY1x1NTE2Y1x1'@; put 'NWJhYlx1NWYxM1x1NWRlOVx1NmM1ZVx1NjJmMVx1OGQyMVx1NTE3MVx1OTRhOVx1NTJmZVx1NmM5Zlx1ODJkZlx1NzJkN1x1NTdhMlx1Njc4NFx1OGQyZFx1NTkxZlx1OGY5Y1x1ODNjN1x1NTQ5NVx1N2I4ZFx1NGYzMFx1NmNiZFx1NWI2NFx1NTlkMVx1OWYxM1x1NTNlNFx1ODZjYVx1OWFh'@; put 'OFx1OGMzN1x1ODBhMVx1NjU0NVx1OTg3ZVx1NTZmYVx1OTZjN1x1NTIyZVx1NzRkY1x1NTI1MFx1NWJlMVx1NjMwMlx1ODkwMlx1NGU1Nlx1NjJkMFx1NjAyYVx1NjhmYVx1NTE3M1x1NWI5OFx1NTFhMFx1ODljMlx1N2JhMVx1OTk4Nlx1N2Y1MFx1NjBlZlx1NzA0Y1x1OGQyZlx1NTE0OVx1'@; put 'NWU3Zlx1OTAxYlx1NzQ3MFx1ODljNFx1NTcyZFx1Nzg0NVx1NWY1Mlx1OWY5Zlx1OTVmYVx1OGY2OFx1OWIzY1x1OGJlMVx1NzY3OFx1Njg0Mlx1NjdkY1x1OGRlYVx1OGQzNVx1NTIzZFx1OGY4YVx1NmVkYVx1NjhjZFx1OTUwNVx1OTBlZFx1NTZmZFx1Njc5Y1x1ODhmOVx1OGZjN1x1NTRj'@; put 'OFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTg1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4NV1bc11dPTQ3MzYwK3MsaFs0NzM2MCtzXT1jWzE4NV1bc10pO2ZvcihjWzE4Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWFiOFx1NWI2OVx1NmQ3N1x1NmMyNlx1NGVhNVx1NWJiM1x1OWE4N1x1OTE2M1x1NjFhOFx1'@; put 'OTBhZlx1OTdlOVx1NTQyYlx1NmRiNVx1NWJkMlx1NTFmZFx1NTU4YVx1N2Y1NVx1N2ZmMFx1NjRiY1x1NjM0ZFx1NjVmMVx1NjFiZVx1NjA4ZFx1NzEwYVx1NmM1N1x1NmM0OVx1NTkyZlx1Njc2ZFx1ODIyYVx1NThkNVx1NTY4ZVx1OGM2YVx1NmJlYlx1OTBkZFx1NTk3ZFx1ODAxN1x1NTNm'@; put 'N1x1NmQ2OVx1NTQ3NVx1NTU5ZFx1ODM3N1x1ODNjZlx1NjgzOFx1NzliZVx1NTQ4Y1x1NGY1NVx1NTQwOFx1NzZkMlx1OGM4OVx1OTYwMlx1NmNiM1x1NmRiOFx1OGQ2Ylx1ODkxMFx1OWU2NFx1OGQzYVx1NTYzZlx1OWVkMVx1NzVkNVx1NWY4OFx1NzJlMFx1NjA2OFx1NTRmY1x1NGVhOFx1'@; put 'NmEyYVx1ODg2MVx1NjA1Mlx1OGY3MFx1NTRjNFx1NzBkOFx1ODY3OVx1OWUzZlx1NmQyYVx1NWI4Zlx1NWYxOFx1N2VhMlx1NTU4OVx1NGZhZlx1NzMzNFx1NTQzY1x1NTM5YVx1NTAxOVx1NTQwZVx1NTQ3Y1x1NGU0ZVx1NWZmZFx1NzQ1YVx1NThmNlx1ODQ2Ylx1ODBlMVx1ODc3NFx1NzJk'@; put 'MFx1N2NjYVx1NmU1Nlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTg2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4Nl1bc11dPTQ3NjE2K3MsaFs0NzYxNitzXT1jWzE4Nl1bc10pO2ZvcihjWzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWYyN1x1ODY0ZVx1NTUyY1x1NjJhNFx1NGU5Mlx1NmNhYVx1NjIzN1x1'@; put 'ODJiMVx1NTRkN1x1NTM0ZVx1NzMzZVx1NmVkMVx1NzUzYlx1NTIxMlx1NTMxNlx1OGJkZFx1NjlkMFx1NWY4YVx1NjAwMFx1NmRlZVx1NTc0Zlx1NmIyMlx1NzNhZlx1Njg1M1x1OGZkOFx1N2YxM1x1NjM2Mlx1NjBhM1x1NTUyNFx1NzVlYVx1OGM2Mlx1NzExNVx1NmRhM1x1NWJhNlx1NWU3'@; put 'Ylx1ODM1Mlx1NjE0Y1x1OWVjNFx1NzhmYVx1ODc1N1x1N2MyN1x1NzY4N1x1NTFmMFx1NjBmNlx1NzE0Y1x1NjY0M1x1NWU0Y1x1NjA0ZFx1OGMwZVx1NzA3MFx1NjMyNVx1OGY4OVx1NWZiZFx1NjA2Mlx1ODZkNFx1NTZkZVx1NmJjMVx1NjA5NFx1NjE2N1x1NTM0OVx1NjBlMFx1NjY2Nlx1'@; put 'OGQzZlx1NzlmZFx1NGYxYVx1NzBlOVx1NmM0N1x1OGJiM1x1OGJmMlx1N2VkOFx1ODM2NFx1NjYwZlx1NWE1YVx1OWI0Mlx1NmQ1MVx1NmRmN1x1OGM0MVx1NmQzYlx1NGYxOVx1NzA2Ylx1ODNiN1x1NjIxNlx1NjBkMVx1OTcwZFx1OGQyN1x1Nzk3OFx1NTFmYlx1NTczZVx1NTdmYVx1Njcz'@; put 'YVx1NzU3OFx1N2EzZFx1NzllZlx1N2I5NVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTg3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4N11bc11dPTQ3ODcyK3MsaFs0Nzg3MitzXT1jWzE4N11bc10pO2ZvcihjWzE4OF09Ilx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA4Y1x1OTk2NVx1OGZmOVx1NmZjMFx1OGJhNVx1'@; put 'OWUyMVx1NTllY1x1N2VlOVx1N2YwOVx1NTQwOVx1Njc4MVx1NjhkOFx1OGY5MVx1N2M0ZFx1OTZjNlx1NTNjYVx1NjAyNVx1NzViZVx1NmM3Mlx1NTM3M1x1NWFjOVx1N2VhN1x1NjMyNFx1NTFlMFx1ODEwYVx1NWRmMVx1ODRkZlx1NjI4MFx1NTE4MFx1NWI2M1x1NGYwZVx1Nzk2ZFx1NTI0'@; put 'Mlx1NjBiOFx1NmQ0ZVx1NWJjNFx1NWJjMlx1OGJhMVx1OGJiMFx1NjVlMlx1NWZjY1x1OTY0NVx1NTk5M1x1N2VlN1x1N2VhYVx1NTYwOVx1NjdiN1x1NTkzOVx1NGY3M1x1NWJiNlx1NTJhMFx1ODM1YVx1OTg4YVx1OGQzZVx1NzUzMlx1OTRiZVx1NTA0N1x1N2EzY1x1NGVmN1x1NjdiNlx1'@; put 'OWE3ZVx1NWFjMVx1NmI3Y1x1NzZkMVx1NTc1YVx1NWMxNlx1N2IzYVx1OTVmNFx1NzE0ZVx1NTE3Y1x1ODBhOVx1ODI3MFx1NTk3OFx1N2YwNFx1ODMyN1x1NjhjMFx1NjdlY1x1NzhiMVx1Nzg3N1x1NjJlM1x1NjM2MVx1N2I4MFx1NGZlZFx1NTI2YVx1NTFjZlx1ODM1MFx1NjlkYlx1OTI3'@; put 'NFx1OGRmNVx1OGQzMVx1ODljMVx1OTUyZVx1N2JhZFx1NGVmNlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTg4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4OF1bc11dPTQ4MTI4K3MsaFs0ODEyOCtzXT1jWzE4OF1bc10pO2ZvcihjWzE4'@; put 'OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTA2NVx1ODIzMFx1NTI1MVx1'@; put 'OTk2Zlx1NmUxMFx1NmU4NVx1NmRhN1x1NWVmYVx1NTBmNVx1NTlkY1x1NWMwNlx1NmQ0Nlx1NmM1Zlx1NzU4Nlx1ODQ4Ylx1Njg2OFx1NTk1Nlx1OGJiMlx1NTMyMFx1OTE3MVx1OTY0ZFx1ODU0OVx1NjkxMlx1NzkwMVx1NzEyNlx1ODBmNlx1NGVhNFx1OTBjYVx1NmQ0N1x1OWE4NFx1NWEw'@; put 'N1x1NTZiY1x1NjQwNVx1OTRmMFx1NzdlYlx1NGZhNVx1ODExYVx1NzJlMVx1ODlkMlx1OTk3YVx1N2YzNFx1N2VkZVx1NTI3Zlx1NjU1OVx1OTE3NVx1OGY3Zlx1OGY4M1x1NTNlYlx1N2E5Nlx1NjNlZFx1NjNhNVx1NzY4Nlx1NzlmOFx1ODg1N1x1OTYzNlx1NjIyYVx1NTJhYlx1ODI4Mlx1'@; put 'Njg1NFx1Njc3MFx1NjM3N1x1Nzc2Ylx1N2FlZFx1NmQwMVx1N2VkM1x1ODllM1x1NTlkMFx1NjIxMlx1ODVjOVx1ODJhNVx1NzU0Y1x1NTAxZlx1NGVjYlx1NzVhNVx1OGJlYlx1NWM0YVx1NWRmZVx1N2I0Ylx1NjVhNFx1OTFkMVx1NGVjYVx1NmQyNVx1ODk1Zlx1N2QyN1x1OTUyNlx1NGVj'@; put 'NVx1OGMyOFx1OGZkYlx1OTc3M1x1NjY0Ylx1Nzk4MVx1OGZkMVx1NzBlY1x1NmQ3OFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE4OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTg5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE4OV1bc11dPTQ4Mzg0K3MsaFs0ODM4NCtzXT1jWzE4OV1b'@; put 'c10pO2ZvcihjWzE5MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWMzZFx1'@; put 'NTJiMlx1ODM0Nlx1NTE2Mlx1ODMwZVx1Nzc1Ylx1NjY3Nlx1OWNiOFx1NGVhY1x1NjBjYVx1N2NiZVx1N2NiM1x1N2VjZlx1NGU5NVx1OGI2Nlx1NjY2Zlx1OTg4OFx1OTc1OVx1NTg4M1x1NjU2Y1x1OTU1Y1x1NWY4NFx1NzVjOVx1OTc1Nlx1N2FkZlx1N2FkZVx1NTFjMFx1NzBhZlx1N2E5'@; put 'OFx1NjNlYVx1N2E3Nlx1N2VhMFx1NzM5Nlx1OTdlZFx1NGU0NVx1NzA3OFx1NGU1ZFx1OTE1Mlx1NTNhOVx1NjU1MVx1NjVlN1x1ODFmY1x1ODIwNVx1NTQ4ZVx1NWMzMVx1NzU5YVx1OTdhMFx1NjJkOFx1NzJkOVx1NzViZFx1NWM0NVx1OWE3OVx1ODNjYVx1NWM0MFx1NTQ4MFx1NzdlOVx1'@; put 'NGUzZVx1NmNhZVx1ODA1YVx1NjJkMlx1NjM2ZVx1NWRlOFx1NTE3N1x1OGRkZFx1OGUxZVx1OTUyZlx1NGZmMVx1NTNlNVx1NjBlN1x1NzBhY1x1NTI2N1x1NjM1MFx1OWU0M1x1NWExZlx1NTAyNlx1NzczN1x1NTM3N1x1N2VlMlx1NjQ4NVx1NjUyYlx1NjI4OVx1NjM5OFx1NTAxNFx1NzIz'@; put 'NVx1ODljOVx1NTFiM1x1OGJjMFx1N2VkZFx1NTc0N1x1ODNjY1x1OTRhN1x1NTE5Ylx1NTQxYlx1NWNmYlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTkwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5MF1bc11dPTQ4NjQwK3MsaFs0ODY0'@; put 'MCtzXT1jWzE5MF1bc10pO2ZvcihjWzE5MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1NGZjYVx1N2FlM1x1NmQ1YVx1OTBlMVx1OWE4Zlx1NTU4MFx1NTQ5Nlx1NTM2MVx1NTRhZlx1NWYwMFx1NjNlOVx1Njk3N1x1NTFlZlx1NjE2OFx1NTIwYVx1NTgyYVx1NTJkOFx1NTc0ZVx1NzgwZFx1NzcwYlx1NWViN1x1NjE3N1x1N2NlMFx1NjI1Ylx1NjI5N1x1NGVhMlx1NzA5'@; put 'NVx1ODAwM1x1NjJmN1x1NzBlNFx1OTc2MFx1NTc3N1x1ODJkYlx1NjdlZlx1NjhmNVx1NzhkNVx1OTg5N1x1NzlkMVx1NThmM1x1NTRiM1x1NTNlZlx1NmUzNFx1NTE0Ylx1NTIzYlx1NWJhMlx1OGJmZVx1ODBhZlx1NTU0M1x1NTdhNlx1NjA3M1x1NTc1MVx1NTQyZFx1N2E3YVx1NjA1MFx1'@; put 'NWI1NFx1NjNhN1x1NjJhMFx1NTNlM1x1NjI2M1x1NWJjN1x1NjdhZlx1NTRlZFx1N2E5Zlx1ODJlNlx1OTE3N1x1NWU5M1x1ODhlNFx1NTkzOFx1NTdhZVx1NjMwZVx1OGRlOFx1ODBlZlx1NTc1N1x1N2I3N1x1NGZhOVx1NWZlYlx1NWJiZFx1NmIzZVx1NTMyMVx1N2I1MFx1NzJjMlx1Njg0'@; put 'Nlx1NzdmZlx1NzczNlx1NjVmN1x1NTFiNVx1NGU4Zlx1NzZkNFx1NWNiZlx1N2FhNVx1ODQ3NVx1NTk0ZVx1OWI0MVx1NTA4MFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTkxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5MV1bc11dPTQ4'@; put 'ODk2K3MsaFs0ODg5NitzXT1jWzE5MV1bc10pO2ZvcihjWzE5Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1OTk4OFx1NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1NjI2OVx1NWVkM1x1OTYxNFx1NTc4M1x1NjJjOVx1NTU4N1x1ODcyMVx1ODE0YVx1OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJl'@; put 'Nlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVlNVx1NzQwNVx1Njk5NFx1NzJmY1x1NWVjYVx1OTBjZVx1NjcxN1x1NmQ2YVx1NjM1ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1'@; put 'NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1N2M3Ylx1NmNlYVx1NjhmMVx1Njk1ZVx1NTFiN1x1NTM5OFx1NjhhOFx1NzI4MVx1OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNh'@; put 'NFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQwZlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIyOVx1NTA4OFx1NGY4Ylx1NGZkMFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTkyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtj'@; put 'WzE5Ml1bc11dPTQ5MTUyK3MsaFs0OTE1MitzXT1jWzE5Ml1bc10pO2ZvcihjWzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzVlMlx1N2FjYlx1N2M5Mlx1NmNhNVx1OTZiNlx1NTI5Ylx1NzQ4M1x1NTRlOVx1NGZlOVx1ODA1NFx1ODNiMlx1OGZkZVx1OTU3MFx1NWVjOVx1NjAxY1x1NmQ5Zlx1NWUxOFx1NjU1Ylx1ODEzOFx1OTRmZVx1NjA0Ylx1NzBiY1x1N2Vj'@; put 'M1x1N2NhZVx1NTFjOVx1Njg4MVx1N2NiMVx1ODI2Zlx1NGUyNFx1OGY4Nlx1OTFjZlx1NjY3ZVx1NGVhZVx1OGMwNVx1NjRhOVx1ODA0YVx1NTBkYVx1NzU5N1x1NzFjZVx1NWJlNVx1OGZiZFx1NmY2Nlx1NGU4Nlx1NjQ4Mlx1OTU2M1x1NWVkNlx1NjU5OVx1NTIxN1x1ODhjMlx1NzBjOFx1'@; put 'NTJhM1x1NzMwZVx1NzQzM1x1Njc5N1x1NzhmN1x1OTcxNlx1NGUzNFx1OTBiYlx1OWNkZVx1NmRjYlx1NTFkYlx1OGQ0MVx1NTQxZFx1NjJjZVx1NzNiMlx1ODNmMVx1OTZmNlx1OWY4NFx1OTRjM1x1NGYzNlx1N2Y5YVx1NTFjY1x1NzA3NVx1OTY3NVx1NWNhZFx1OTg4Nlx1NTNlNlx1NGVl'@; put 'NFx1NmU5Y1x1NzQwOVx1NjliNFx1Nzg2Ylx1OTk4Zlx1NzU1OVx1NTIxOFx1NzYyNFx1NmQ0MVx1NjdmM1x1NTE2ZFx1OWY5OVx1ODA0Ylx1NTQ5OVx1N2IzY1x1N2FiZlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTkzXVtzXS5jaGFyQ29k'@; put 'ZUF0KDApJiYoeVtjWzE5M11bc11dPTQ5NDA4K3MsaFs0OTQwOCtzXT1jWzE5M11bc10pO2ZvcihjWzE5NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY4Nlx1NTc4NFx1NjJlMlx1OTY0N1x1Njk3Y1x1NWEwNFx1NjQwMlx1N2JkM1x1NmYwZlx1OTY0Ylx1ODJhNlx1NTM2Mlx1OTg4NVx1NWU5MFx1NzA4OVx1NjNiM1x1NTM2NFx1ODY0Zlx1OWM4MVx1OWU5M1x1Nzg4'@; put 'Y1x1OTczMlx1OGRlZlx1OGQ0Mlx1OWU3Zlx1NmY1ZVx1Nzk4NFx1NWY1NVx1OTY0Nlx1NjIyZVx1OWE3NFx1NTQxNVx1OTRkZFx1NGZhM1x1NjVjNVx1NWM2NVx1NWM2MVx1N2YxNVx1ODY1MVx1NmMyZlx1NWY4Ylx1NzM4N1x1NmVlNFx1N2VmZlx1NWNlNlx1NjMxYlx1NWI2YVx1NmVlNlx1'@; put 'NTM3NVx1NGU3MVx1NjNhMFx1NzU2NVx1NjJhMVx1OGY2ZVx1NGYyNlx1NGVkMVx1NmNhNlx1N2ViNlx1OGJiYVx1ODQxZFx1ODdiYVx1N2Y1N1x1OTAzYlx1OTUyM1x1N2JhOVx1OWFhMVx1ODhmOFx1ODQzZFx1NmQxYlx1OWE4Nlx1N2VkY1x1NTk4OFx1OWViYlx1NzM5Ylx1NzgwMVx1ODY4'@; put 'Mlx1OWE2Y1x1OWE4Mlx1NTYxYlx1NTQxN1x1NTdjYlx1NGU3MFx1OWVhNlx1NTM1Nlx1OGZjOFx1ODEwOVx1Nzc5Mlx1OTk5Mlx1ODZlZVx1NmVlMVx1ODUxM1x1NjZmY1x1NjE2Mlx1NmYyYlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTk0'@; put 'XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5NF1bc11dPTQ5NjY0K3MsaFs0OTY2NCtzXT1jWzE5NF1bc10pO2ZvcihjWzE5NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1NWZkOVx1ODNiZFx1NzMyYlx1ODMwNVx1OTUxYVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMwMlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQz'@; put 'OFx1NGU0OFx1NzNhYlx1Njc5YVx1Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYyN1x1NWJkMFx1NTliOVx1NWE5YVx1OTVlOFx1OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1'@; put 'NWI1Zlx1NzcyZlx1OTE5YVx1OTc2MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1NWU0Mlx1NjhjOVx1NzcyMFx1N2VmNVx1NTE5NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVk'@; put 'MFx1NzlkMlx1NmUzYVx1NWU5OVx1NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5Zlx1OWUyM1x1OTRlZFx1NTQwZFx1NTQ3ZFx1OGMyY1x1NjQ3OFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5NV0ubGVuZ3RoOysrcyk2'@; put 'NTUzMyE9PWNbMTk1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5NV1bc11dPTQ5OTIwK3MsaFs0OTkyMCtzXT1jWzE5NV1bc10pO2ZvcihjWzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjQ3OVx1ODYxMVx1NmEyMVx1ODE5Y1x1NzhlOFx1NjQ2OVx1OWI1NFx1NjJiOVx1NjcyYlx1ODNhYlx1NThhOFx1OWVkOFx1NmNhYlx1NmYyMFx1NWJkZVx1OTY0Y1x1OGMw'@; put 'Ylx1NzI1Zlx1NjdkMFx1NjJjN1x1NzI2MVx1NGVhOVx1NTljNlx1NmJjZFx1NTg5M1x1NjZhZVx1NWU1NVx1NTJkZlx1NjE1NVx1NjcyOFx1NzZlZVx1Nzc2Nlx1NzI2N1x1N2E0Nlx1NjJmZlx1NTRlYVx1NTQ1MFx1OTRhMFx1OTBhM1x1NWExY1x1N2ViM1x1NmMxNlx1NGU0M1x1NTk3Nlx1'@; put 'ODAxMFx1NTk0OFx1NTM1N1x1NzUzN1x1OTZiZVx1NTZjYVx1NjMyMFx1ODExMVx1NjA3Y1x1OTVmOVx1NmRkNlx1NTQ2Mlx1OTk4MVx1NTE4NVx1NWFlOVx1ODBmZFx1NTlhZVx1OTcxM1x1NTAyYVx1NmNlNVx1NWMzY1x1NjJkZlx1NGY2MFx1NTMzZlx1ODE3Ylx1OTAwNlx1NmViYVx1ODUy'@; put 'Ylx1NjJjOFx1NWU3NFx1NzhiZVx1NjRiNVx1NjM3Ylx1NWZmNVx1NWExOFx1OTE3Zlx1OWUxZlx1NWMzZlx1NjM0Zlx1ODA0Mlx1NWI3ZFx1NTU2ZVx1OTU0YVx1OTU0ZFx1NmQ4NVx1NjBhOFx1NjdlMFx1NzJkZVx1NTFkZFx1NWI4MVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5Nl0u'@; put 'bGVuZ3RoOysrcyk2NTUzMyE9PWNbMTk2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5Nl1bc11dPTUwMTc2K3MsaFs1MDE3NitzXT1jWzE5Nl1bc10pO2ZvcihjWzE5N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlN1x1NmNkZVx1NzI1Ylx1NjI2ZFx1OTRhZVx1N2ViZFx1ODExM1x1NmQ1M1x1NTE5Y1x1NWYwNFx1NTk3NFx1NTJhYVx1NjAxMlx1NTk3M1x1NjY5'@; put 'Nlx1ODY1MFx1NzU5Zlx1NjMyYVx1NjFlNlx1N2NlZlx1OGJmYVx1NTRlNlx1NmIyN1x1OWUyNVx1NmJiNFx1ODVkNVx1NTQ1NVx1NTA3Nlx1NmNhNFx1NTU2YVx1OGRiNFx1NzIyY1x1NWUxNVx1NjAxNVx1NzQzNlx1NjJjZFx1NjM5Mlx1NzI0Y1x1NWY5OFx1NmU0M1x1NmQzZVx1NjUwMFx1'@; put 'NmY1OFx1NzZkOFx1NzhkMFx1NzZmY1x1NzU1NFx1NTIyNFx1NTNkYlx1NGU1M1x1NWU5ZVx1NjVjMVx1ODAyYVx1ODBkNlx1NjI5Ylx1NTQ4Nlx1NTIyOFx1NzBhZVx1ODg4ZFx1OGRkMVx1NmNlMVx1NTQ3OFx1ODBkYVx1NTdmOVx1ODhmNFx1OGQ1NFx1OTY2YVx1OTE0ZFx1NGY2OVx1NmM5'@; put 'Ylx1NTViN1x1NzZjNlx1NzgzMFx1NjJhOFx1NzBmOVx1NmY4ZVx1NWY2ZFx1ODRlY1x1NjhkYVx1Nzg3Y1x1N2JmN1x1ODFhOFx1NjcwYlx1OWU0Zlx1NjM2N1x1NzhiMFx1NTc2Zlx1NzgxMlx1OTczOVx1NjI3OVx1NjJhYlx1NTI4OFx1NzQzNVx1NmJkN1x1ZmZmZCIuc3BsaXQoIiIpLHM9'@; put 'MDtzIT1jWzE5N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTk3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5N11bc11dPTUwNDMyK3MsaFs1MDQzMitzXT1jWzE5N11bc10pO2ZvcihjWzE5OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTU2NFx1ODEzZVx1NzViMlx1NzZhZVx1NTMzOVx1NzVkZVx1NTBmYlx1NWM0MVx1OGI2Y1x1N2JjN1x1NTA0Zlx1NzI0N1x1OWE5'@; put 'N1x1OThkOFx1NmYwMlx1NzRlMlx1Nzk2OFx1NjQ4N1x1NzdhNVx1NjJmY1x1OTg5MVx1OGQyYlx1NTRjMVx1ODA1OFx1NGU1Mlx1NTc2YVx1ODJmOVx1ODQwZFx1NWU3M1x1NTFlZFx1NzRmNlx1OGJjNFx1NWM0Zlx1NTc2MVx1NmNmY1x1OTg4N1x1NWE0Nlx1NzgzNFx1OWI0NFx1OGZlYlx1'@; put 'N2M5NVx1NTI1Nlx1NjI1MVx1OTRmYVx1NGVjNlx1ODM4Nlx1ODQ2MVx1ODNlOVx1ODRiMlx1NTdkNFx1NjczNFx1NTcwM1x1NjY2ZVx1NmQ2Nlx1OGMzMVx1NjZkZFx1NzAxMVx1NjcxZlx1NmIzYVx1NjgxNlx1NjIxYVx1NTliYlx1NGUwM1x1NTFjNFx1NmYwNlx1NjdkMlx1NmM4Zlx1NTE3'@; put 'Nlx1NjhjYlx1NTk0N1x1NmI2N1x1NzU2Nlx1NWQwZVx1ODExMFx1OWY1MFx1NjVkN1x1Nzk0OFx1Nzk0MVx1OWE5MVx1OGQ3N1x1NWM4Mlx1NGU1ZVx1NGYwMVx1NTQyZlx1NTk1MVx1NzgwY1x1NTY2OFx1NmMxNFx1OGZjNFx1NWYwM1x1NmM3ZFx1NmNlM1x1OGJhYlx1NjM5MFx1ZmZmZCIu'@; put 'c3BsaXQoIiIpLHM9MDtzIT1jWzE5OF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTk4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5OF1bc11dPTUwNjg4K3MsaFs1MDY4OCtzXT1jWzE5OF1bc10pO2ZvcihjWzE5OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA3MFx1NmQzZFx1NzI3NVx1NjI2Nlx1OTQ4ZVx1OTRjNVx1NTM0M1x1OGZjMVx1N2I3ZVx1NGVkZlx1OGMy'@; put 'Nlx1NGU3ZVx1OWVkNFx1OTRiMVx1OTRiM1x1NTI0ZFx1NmY1Y1x1OTA2M1x1NmQ0NVx1OGMzNFx1NTgxMVx1NWQ0Y1x1NmIyMFx1NmI0OVx1NjdhYVx1NTQ1Ylx1ODE1NFx1N2Y4Y1x1NTg5OVx1ODUzN1x1NWYzYVx1NjJhMlx1NmE0N1x1OTUzOVx1NjU3Mlx1NjA4NFx1Njg2NVx1NzdhN1x1'@; put 'NGU1NFx1NGZhOFx1NWRlN1x1OTc5OFx1NjRhY1x1N2ZkOFx1NWNlZFx1NGZjZlx1N2E4ZFx1NTIwN1x1ODMwNFx1NGUxNFx1NjAyZlx1N2E4M1x1OTRhNlx1NGZiNVx1NGViMlx1NzllNlx1NzQzNFx1NTJlNFx1ODJiOVx1NjRkMlx1NzliZFx1NWJkZFx1NmM4MVx1OTc1Mlx1OGY3Ylx1NmMy'@; put 'Mlx1NTAzZVx1NTM3Zlx1NmUwNVx1NjRjZVx1NjY3NFx1NmMzMFx1NjBjNVx1OTg3N1x1OGJmN1x1NWU4Nlx1NzQzY1x1N2E3N1x1NzljYlx1NGUxOFx1OTBiMVx1NzQwM1x1NmM0Mlx1NTZkYVx1OTE0Ylx1NmNjNVx1OGQ4Ylx1NTMzYVx1ODZjNlx1NjZmMlx1OGVhZlx1NWM0OFx1OWE3MVx1'@; put 'NmUyMFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzE5OV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMTk5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzE5OV1bc11dPTUwOTQ0K3MsaFs1MDk0NCtzXT1jWzE5OV1bc10pO2ZvcihjWzIwMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTNkNlx1NWEzNlx1OWY4Ylx1OGRhM1x1NTNiYlx1NTcwOFx1OThhN1x1Njc0M1x1OTE5'@; put 'Ylx1NmNjOVx1NTE2OFx1NzVjYVx1NjJmM1x1NzJhY1x1NTIzOFx1NTI5ZFx1N2YzYVx1NzA5NFx1NzYzOFx1NTM3NFx1OWU0YVx1NjliN1x1Nzg2ZVx1OTZjMFx1ODhkOVx1N2ZhNFx1NzEzNlx1NzFjM1x1NTE4OVx1NjdkM1x1NzRlNFx1NThlNFx1NjUxOFx1NTZiN1x1OGJhOVx1OTk3Nlx1'@; put 'NjI3MFx1N2VkNVx1NjBmOVx1NzBlZFx1NThlY1x1NGVjMVx1NGViYVx1NWZjZFx1OTdlN1x1NGVmYlx1OGJhNFx1NTIwM1x1NTk4YVx1N2VhYlx1NjI1NFx1NGVjZFx1NjVlNVx1NjIwZVx1ODMzOFx1ODRjOVx1ODM2M1x1ODc4ZFx1NzE5NFx1NmViNlx1NWJiOVx1N2VkMlx1NTE5N1x1NjNj'@; put 'OVx1NjdkNFx1ODA4OVx1ODMzOVx1ODgxNVx1NTExMlx1NWI3YVx1NTk4Mlx1OGZiMVx1NGU3M1x1NmM1ZFx1NTE2NVx1ODkyNVx1OGY2Zlx1OTYyZVx1ODU0YVx1NzQ1ZVx1OTUxMFx1OTVmMFx1NmRhNlx1ODJlNVx1NWYzMVx1NjQ5Mlx1NmQxMlx1ODQyOFx1ODE2ZVx1OWNjM1x1NTg1ZVx1'@; put 'OGQ1Ylx1NGUwOVx1NTNjMVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwMF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjAwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwMF1bc11dPTUxMjAwK3MsaFs1MTIwMCtzXT1jWzIwMF1bc10pO2ZvcihjWzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGYxZVx1NjU2M1x1Njg1MVx1NTVkM1x1NGUyN1x1NjQxNFx1OWE5'@; put 'YVx1NjI2Ylx1NWFjMlx1NzQ1Zlx1ODI3Mlx1NmRhOVx1NjhlZVx1NTBlN1x1ODM4ZVx1NzgwMlx1Njc0MFx1NTIzOVx1NmM5OVx1N2ViMVx1NTBiYlx1NTU2NVx1NzE1ZVx1N2I1Ylx1NjY1Mlx1NzNjYVx1ODJlYlx1Njc0OVx1NWM3MVx1NTIyMFx1NzE3ZFx1ODg2Ylx1OTVlYVx1OTY1NVx1'@; put 'NjRjNVx1OGQ2MVx1ODFiM1x1NTU4NFx1NmM1NVx1NjI0N1x1N2YyZVx1NTg5Mlx1NGYyNFx1NTU0Nlx1OGQ0Zlx1NjY0Y1x1NGUwYVx1NWMxYVx1ODhmM1x1NjhhMlx1NjM0ZVx1N2EwZFx1NzBlN1x1ODI4ZFx1NTJmYVx1OTdmNlx1NWMxMVx1NTRlOFx1OTBiNVx1N2VjZFx1NTk2Mlx1OGQ0'@; put 'YVx1ODZjN1x1ODIwY1x1ODIwZFx1OGQ2Nlx1NjQ0NFx1NWMwNFx1NjE1MVx1NmQ4OVx1NzkzZVx1OGJiZVx1NzgzN1x1NzUzM1x1NTQ3Ylx1NGYzOFx1OGVhYlx1NmRmMVx1NWEyMFx1N2VjNVx1Nzk1ZVx1NmM4OFx1NWJhMVx1NWE3Nlx1NzUxYVx1ODBiZVx1NjE0ZVx1NmUxN1x1NThmMFx1'@; put 'NzUxZlx1NzUyNVx1NzI3Mlx1NTM0N1x1N2VmM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwMV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjAxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwMV1bc11dPTUxNDU2K3MsaFs1MTQ1NitzXT1jWzIwMV1bc10pO2ZvcihjWzIwMl09Ilx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzcwMVx1NzZkYlx1NTI2OVx1ODBkY1x1NTcy'@; put 'M1x1NWUwOFx1NTkzMVx1NzJlZVx1NjViZFx1NmU3Zlx1OGJkN1x1NWMzOFx1ODY3MVx1NTM0MVx1NzdmM1x1NjJmZVx1NjVmNlx1NGVjMFx1OThkZlx1ODY4MFx1NWI5ZVx1OGJjNlx1NTNmMlx1NzdlMlx1NGY3Zlx1NWM0ZVx1OWE3Nlx1NTljYlx1NWYwZlx1NzkzYVx1NThlYlx1NGUxNlx1'@; put 'NjdmZlx1NGU4Ylx1NjJlZFx1OGE5M1x1OTAxZFx1NTJiZlx1NjYyZlx1NTVkY1x1NTY2Y1x1OTAwMlx1NGVkNVx1NGY4ZFx1OTFjYVx1OTk3MFx1NmMwZlx1NWUwMlx1NjA0M1x1NWJhNFx1ODljNlx1OGJkNVx1NjUzNlx1NjI0Ylx1OTk5Nlx1NWI4OFx1NWJmZlx1NjM4OFx1NTUyZVx1NTNk'@; put 'N1x1NzYyNlx1NTE3ZFx1ODUyY1x1NjdhMlx1NjhiM1x1NmI4YVx1NjI5Mlx1OGY5M1x1NTNkNFx1ODIxMlx1NmRkMVx1NzU4Zlx1NGU2Nlx1OGQ0ZVx1NWI3MFx1NzE5Zlx1ODVhZlx1NjY5MVx1NjZkOVx1N2Y3Mlx1ODcwMFx1OWVjZFx1OWYyMFx1NWM1ZVx1NjcyZlx1OGZmMFx1NjgxMVx1'@; put 'Njc1Zlx1NjIwZFx1N2FkNlx1NTg4NVx1NWViNlx1NjU3MFx1NmYzMVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwMl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjAyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwMl1bc11dPTUxNzEyK3MsaFs1MTcxMitzXT1jWzIwMl1bc10pO2Zvcihj'@; put 'WzIwM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA1NVx1NTIzN1x1ODAw'@; put 'ZFx1NjQ1NFx1ODg3MFx1NzUyOVx1NWUwNVx1NjgxM1x1NjJmNFx1OTcxY1x1NTNjY1x1NzIzZFx1OGMwMVx1NmMzNFx1Nzc2MVx1N2EwZVx1NTQyZVx1NzdhY1x1OTg3YVx1ODIxY1x1OGJmNFx1Nzg1NVx1NjcxNFx1NzBjMVx1NjVhZlx1NjQ5NVx1NTYzNlx1NjAxZFx1NzljMVx1NTNmOFx1'@; put 'NGUxZFx1NmI3Ylx1ODA4Nlx1NWJmYVx1NTVlM1x1NTZkYlx1NGYzYVx1NGYzY1x1OTk3Mlx1NWRmM1x1Njc3ZVx1ODAzOFx1NjAwMlx1OTg4Mlx1OTAwMVx1NWI4Ylx1OGJiY1x1OGJmNVx1NjQxY1x1ODI1OFx1NjRkZVx1NTVmZFx1ODJjZlx1OTE2NVx1NGZkN1x1N2QyMFx1OTAxZlx1N2M5'@; put 'Zlx1NTBmM1x1NTg1MVx1NmVhZlx1NWJiZlx1OGJjOVx1ODA4M1x1OTE3OFx1ODQ5Y1x1N2I5N1x1ODY3ZFx1OTY4Ylx1OTY4Zlx1N2VlNVx1OWFkM1x1Nzg4ZVx1NWM4MVx1N2E1N1x1OTA0Mlx1OTZhN1x1Nzk1Zlx1NWI1OVx1NjM1Zlx1N2IwYlx1ODRkMVx1NjhhZFx1NTUwNlx1N2YyOVx1'@; put 'NzQxMFx1N2QyMlx1OTUwMVx1NjI0MFx1NTg0Y1x1NGVkNlx1NWI4M1x1NTk3OVx1NTg1NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwM10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjAzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwM11bc11dPTUxOTY4K3MsaFs1MTk2OCtzXT1jWzIw'@; put 'M11bc10pO2ZvcihjWzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzM2'@; put 'ZFx1NjMxZVx1OGU0Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1NTc0ZFx1NjQ0YVx1OGQyYVx1NzYyYlx1NmVlOVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1'@; put 'NjNhMlx1NTNmOVx1NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGViYVx1NmRjY1x1OGQ5Zlx1NzBlYlx1NjM4Zlx1NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3'@; put 'OVx1ODVlNFx1ODE3ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1NGY1M1x1NjZmZlx1NTY4Zlx1NjBkNVx1NmQ5NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRmYlx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1'@; put 'NjMxMVx1Njc2MVx1OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwNF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjA0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwNF1bc11dPTUyMjI0K3MsaFs1'@; put 'MjIyNCtzXT1jWzIwNF1bc10pO2ZvcihjWzIwNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1NmM0MFx1NWVmN1x1NTA1Y1x1NGVhZFx1NWVhZFx1NjMzYVx1ODI0N1x1OTAxYVx1Njg1MFx1OTE2ZVx1NzdiM1x1NTQwY1x1OTRkY1x1NWY2NFx1N2FlNVx1Njg3Nlx1NjM0NVx1N2I1Mlx1N2VkZlx1NzVkYlx1NTA3N1x1NjI5NVx1NTkzNFx1OTAwZlx1NTFmOFx1NzljM1x1'@; put 'N2E4MVx1NTZmZVx1NWY5Mlx1OTAxNFx1NmQ4Mlx1NWM2MFx1NTcxZlx1NTQxMFx1NTE1NFx1NmU0ZFx1NTZlMlx1NjNhOFx1OTg5M1x1ODE3Zlx1ODcxNVx1ODkyYVx1OTAwMFx1NTQxZVx1NWM2Zlx1ODFjMFx1NjJkNlx1NjI1OFx1ODEzMVx1OWUzNVx1OTY0MFx1OWE2ZVx1OWE3Y1x1Njky'@; put 'ZFx1NTlhNVx1NjJkM1x1NTUzZVx1NjMxNlx1NTRjN1x1ODZkOVx1NmQzY1x1NWEwM1x1NzRlNlx1ODg5Y1x1NmI2YVx1NTkxNlx1OGM0Y1x1NWYyZlx1NmU3ZVx1NzNhOVx1OTg3ZFx1NGUzOFx1NzBmN1x1NWI4Y1x1Nzg5N1x1NjMzZFx1NjY1YVx1NzY5Nlx1NjBjYlx1NWI5Ylx1NWE0OVx1'@; put 'NGUwN1x1ODE1NVx1NmM2YVx1NzM4Ylx1NGVhMVx1Njc4OVx1N2Y1MVx1NWY4MFx1NjVmYVx1NjcxYlx1NWZkOFx1NTk4NFx1NWEwMVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwNV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjA1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwNV1bc11d'@; put 'PTUyNDgwK3MsaFs1MjQ4MCtzXT1jWzIwNV1bc10pO2ZvcihjWzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWRjZFx1NWZhZVx1NTM3MVx1OTdlNlx1OGZkZFx1Njg0NVx1NTZmNFx1NTUyZlx1NjBkZlx1NGUzYVx1NmY0ZFx1N2VmNFx1ODJjN1x1ODQwZVx1NTlkNFx1NGYxZlx1NGYyYVx1NWMzZVx1N2VhY1x1NjcyYVx1ODUxYVx1NTQ3M1x1NzU0Zlx1ODBjM1x1'@; put 'NTU4Mlx1OWI0Zlx1NGY0ZFx1NmUyZFx1OGMxM1x1NWMwOVx1NjE3MFx1NTM2Ylx1NzYxZlx1NmUyOVx1ODY4YVx1NjU4N1x1OTVmYlx1N2ViOVx1NTQzYlx1N2EzM1x1N2QwYVx1OTVlZVx1NTVlMVx1N2ZjMVx1NzRlZVx1NjMxZFx1ODcxN1x1NmRhMVx1N2E5ZFx1NjIxMVx1NjVhMVx1NTM2'@; put 'N1x1NjNlMVx1NmM4M1x1NWRlYlx1NTQ1Y1x1OTRhOFx1NGU0Y1x1NmM2MVx1OGJlY1x1NWM0Ylx1NjVlMFx1ODI5Y1x1NjhhN1x1NTQzZVx1NTQzNFx1NmJjYlx1NmI2Nlx1NGU5NFx1NjM0Mlx1NTM0OFx1ODIxZVx1NGYwZFx1NGZhZVx1NTc1ZVx1NjIwYVx1OTZmZVx1NjY2NFx1NzI2OVx1'@; put 'NTJmZlx1NTJhMVx1NjA5Zlx1OGJlZlx1NjYxNFx1NzE5OVx1Njc5MFx1ODk3Zlx1Nzg1Mlx1NzdmZFx1NjY3MFx1NTYzYlx1NTQzOFx1OTUyMVx1NzI3YVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwNl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjA2XVtzXS5jaGFyQ29kZUF0KDApJiYo'@; put 'eVtjWzIwNl1bc11dPTUyNzM2K3MsaFs1MjczNitzXT1jWzIwNl1bc10pO2ZvcihjWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2EwMFx1NjA2Zlx1NWUwY1x1NjA4OVx1ODE5ZFx1NTkxNVx1NjBkY1x1NzE4NFx1NzBlZlx1NmVhYVx1NmM1MFx1NzI4MFx1NmE4NFx1ODhhZFx1NWUyZFx1NGU2MFx1NWFiM1x1NTU5Y1x1OTRlM1x1NmQxN1x1N2NmYlx1OTY5OVx1'@; put 'NjIwZlx1N2VjNlx1Nzc4ZVx1ODY3ZVx1NTMyM1x1OTcxZVx1OGY5Nlx1NjY4N1x1NWNlMVx1NGZhMFx1NzJlZFx1NGUwYlx1NTNhNlx1NTkwZlx1NTQxM1x1NjM4MFx1OTUyOFx1NTE0OFx1NGVkOVx1OWM5Y1x1N2VhNFx1NTRiOFx1OGQyNFx1ODg1NFx1ODIzN1x1OTVmMlx1NmQ4ZVx1NWYy'@; put 'Nlx1NWFjY1x1NjYzZVx1OTY2OVx1NzNiMFx1NzMyZVx1NTNiZlx1ODE3YVx1OTk4NVx1N2ZhMVx1NWJhYVx1OTY3N1x1OTY1MFx1N2ViZlx1NzZmOFx1NTNhMlx1OTU3Nlx1OTk5OVx1N2JiMVx1ODk0NFx1NmU1OFx1NGU2MVx1N2ZkNFx1Nzk2NVx1OGJlNlx1NjBmM1x1NTRjZFx1NGVhYlx1'@; put 'OTg3OVx1NWRmN1x1NmE2MVx1NTBjZlx1NTQxMVx1OGM2MVx1ODQyN1x1Nzg1ZFx1OTcwNFx1NTI0YVx1NTRlZVx1NTZhM1x1OTUwMFx1NmQ4OFx1NWJiNVx1NmRjNlx1NjY1M1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjA3XVtzXS5jaGFy'@; put 'Q29kZUF0KDApJiYoeVtjWzIwN11bc11dPTUyOTkyK3MsaFs1Mjk5MitzXT1jWzIwN11bc10pO2ZvcihjWzIwOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWMwZlx1NWI1ZFx1NjgyMVx1ODA5Nlx1NTU3OFx1N2IxMVx1NjU0OFx1Njk1NFx1NGU5Ylx1NmI0N1x1ODc0ZVx1OTc4Ylx1NTM0Zlx1NjMxZlx1NjQzYVx1OTBhYVx1NjU5Y1x1ODBjMVx1OGMxMFx1NTE5OVx1'@; put 'NjhiMFx1NTM3OFx1ODdmOVx1NjFjOFx1NmNjNFx1NmNmYlx1OGMyMlx1NWM1MVx1ODVhYVx1ODJhZlx1OTUwY1x1NmIyM1x1OGY5Ylx1NjViMFx1NWZmYlx1NWZjM1x1NGZlMVx1ODg0NVx1NjYxZlx1ODE2NVx1NzMyOVx1NjBmYVx1NTE3NFx1NTIxMVx1NTc4Ylx1NWY2Mlx1OTBhMlx1ODg0'@; put 'Y1x1OTE5Mlx1NWU3OFx1Njc0Zlx1NjAyN1x1NTlkM1x1NTE0NFx1NTFmNlx1ODBmOFx1NTMwOFx1NmM3OVx1OTZjNFx1NzE4YVx1NGYxMVx1NGZlZVx1N2Y5ZVx1NjczZFx1NTVjNVx1OTUwOFx1NzljMFx1ODg5Nlx1N2VlM1x1NTg5Zlx1NjIwY1x1OTcwMFx1ODY1YVx1NTYxOFx1OTg3Ylx1'@; put 'NWY5MFx1OGJiOFx1ODRjNFx1OTE1N1x1NTNkOVx1NjVlZFx1NWU4Zlx1NzU1Y1x1NjA2NFx1N2Q2ZVx1NWE3Zlx1N2VlYVx1N2VlZFx1OGY2OVx1NTVhN1x1NWJhM1x1NjBhY1x1NjVjYlx1NzM4NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNb'@; put 'MjA4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwOF1bc11dPTUzMjQ4K3MsaFs1MzI0OCtzXT1jWzIwOF1bc10pO2ZvcihjWzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTAwOVx1NzY2M1x1NzcyOVx1N2VkYVx1OTc3NFx1ODU5Ylx1NWI2Nlx1N2E3NFx1OTZlYVx1ODg0MFx1NTJjYlx1NzE4Zlx1NWZhYVx1NjVlY1x1OGJlMlx1NWJmYlx1OWE2Zlx1NWRlMVx1'@; put 'NmI4OVx1NmM1Ylx1OGJhZFx1OGJhZlx1OTAwYVx1OGZjNVx1NTM4Ylx1NjJiY1x1OWUyNlx1OWUyZFx1NTQ0MFx1NGUyYlx1ODJiZFx1NzI1OVx1ODY5Y1x1NWQxNlx1ODg1OVx1NmRhZlx1OTZjNVx1NTRkMVx1NGU5YVx1OGJiNlx1NzEwOVx1NTRiZFx1OTYwOVx1NzBkZlx1NmRmOVx1NzZk'@; put 'MFx1NGUyNVx1NzgxNFx1ODcxMlx1NWNhOVx1NWVmNlx1OGEwMFx1OTg5Y1x1OTYwZVx1NzA4ZVx1NmNiZlx1NTk0NFx1NjNhOVx1NzczY1x1ODg0ZFx1NmYxNFx1ODI3M1x1NTgzMFx1NzFkNVx1NTM4Y1x1NzgxYVx1OTZjMVx1NTUwMVx1NWY2Nlx1NzEzMFx1NWJiNFx1OGMxYVx1OWE4Y1x1'@; put 'NmI4M1x1NTkyZVx1OWUyZlx1NzllN1x1Njc2OFx1NjI2Y1x1NGY2Zlx1NzVhMVx1N2Y4YVx1NmQwYlx1OTYzM1x1NmMyN1x1NGVmMFx1NzVkMlx1NTE3Ylx1NjgzN1x1NmYzZVx1OTA4MFx1ODE3MFx1NTk5Nlx1NzQ3Nlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIwOV0ubGVuZ3RoOysr'@; put 'cyk2NTUzMyE9PWNbMjA5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIwOV1bc11dPTUzNTA0K3MsaFs1MzUwNCtzXT1jWzIwOV1bc10pO2ZvcihjWzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjQ0N1x1NWMyN1x1OTA2NVx1N2E5MVx1OGMyM1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1ODAwMFx1NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1'@; put 'NTFiNlx1NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThmOVx1NTMzYlx1NjNkNlx1OTRmMVx1NGY5ZFx1NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1NzlmYlx1NGVlYVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTll'@; put 'OFx1NWY1ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1OTA5MVx1NWM3OVx1NGViZlx1NWY3OVx1ODFjNlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1NjEwZlx1NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1'@; put 'OGJlM1x1OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJiN1x1OTdmM1x1OTYzNFx1NTlmYlx1NTQxZlx1OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYxNVx1OTY5MFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIx'@; put 'MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjEwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxMF1bc11dPTUzNzYwK3MsaFs1Mzc2MCtzXT1jWzIxMF1bc10pO2ZvcihjWzIxMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTM3MFx1ODJmMVx1NmEzMVx1NWE3NFx1OWU3MFx1NWU5NFx1N2YyOFx1ODNiOVx1ODQyNFx1ODQyNVx1ODM2N1x1ODc0N1x1OGZjZVx1OGQ2Mlx1'@; put 'NzZjOFx1NWY3MVx1OTg5Nlx1Nzg2Y1x1NjYyMFx1NTRkZlx1NjJlNVx1NGY2M1x1ODFjM1x1NzVjOFx1NWViOFx1OTZjZFx1OGUwYVx1ODZmOVx1NTQ4Zlx1NmNmM1x1NmQ4Y1x1NmMzOFx1NjA3Zlx1NTJjN1x1NzUyOFx1NWU3ZFx1NGYxOFx1NjBhMFx1NWZlN1x1NWMyNFx1NzUzMVx1OTBh'@; put 'ZVx1OTRjMFx1NzJiOVx1NmNiOVx1NmUzOFx1OTE0OVx1NjcwOVx1NTNjYlx1NTNmM1x1NGY1MVx1OTFjOVx1OGJmMVx1NTNjOFx1NWU3Y1x1OGZjMlx1NmRlNFx1NGU4ZVx1NzZjMlx1Njk4Nlx1ODY1ZVx1NjExYVx1ODIwNlx1NGY1OVx1NGZkZVx1OTAzZVx1OWM3Y1x1NjEwOVx1NmUxZFx1'@; put 'NmUxNFx1OTY4NVx1NGU4OFx1NWEzMVx1OTZlOFx1NGUwZVx1NWM3Zlx1NzliOVx1NWI4N1x1OGJlZFx1N2ZiZFx1NzM4OVx1NTdkZlx1ODI4Ylx1OTBjMVx1NTQwMVx1OTA0N1x1NTViYlx1NWNlYVx1NWZhMVx1NjEwOFx1NmIzMlx1NzJmMVx1ODBiMlx1OGE4OVx1ZmZmZCIuc3BsaXQoIiIp'@; put 'LHM9MDtzIT1jWzIxMV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjExXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxMV1bc11dPTU0MDE2K3MsaFs1NDAxNitzXT1jWzIxMV1bc10pO2ZvcihjWzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ3NFx1NWJkM1x1ODhkNVx1OTg4NFx1OGM2Ylx1OWE2ZFx1OWUzM1x1NmUwYVx1NTFhNFx1NTE0M1x1NTdhM1x1ODg4MVx1'@; put 'NTM5Zlx1NjNmNFx1OGY5NVx1NTZlZFx1NTQ1OFx1NTcwNlx1NzMzZlx1NmU5MFx1N2YxOFx1OGZkY1x1ODJkMVx1NjEzZlx1NjAyOFx1OTY2Mlx1NjZmMFx1N2VhNlx1OGQ4YVx1OGRjM1x1OTRhNVx1NWNiM1x1N2NhNFx1NjcwOFx1NjBhNlx1OTYwNVx1ODAxOFx1NGU5MVx1OTBlN1x1NTMw'@; put 'MFx1OTY2OFx1NTE0MVx1OGZkMFx1ODU3NFx1OTE1ZFx1NjY1NVx1OTdmNVx1NWI1NVx1NTMxZFx1NzgzOFx1Njc0Mlx1NjgzZFx1NTRjOVx1NzA3ZVx1NWJiMFx1OGY3ZFx1NTE4ZFx1NTcyOFx1NTRiMVx1NjUxMlx1NjY4Mlx1OGQ1ZVx1OGQ0M1x1ODEwZlx1ODQ2Y1x1OTA2ZFx1N2NkZlx1'@; put 'NTFmZlx1ODVmYlx1NjdhM1x1NjVlOVx1NmZhMVx1ODZhNFx1OGU4MVx1NTY2YVx1OTAyMFx1NzY4Mlx1NzA3Nlx1NzFlNVx1OGQyM1x1NjJlOVx1NTIxOVx1NmNmZFx1OGQzY1x1NjAwZVx1NTg5ZVx1NjE4ZVx1NjZmZVx1OGQ2MFx1NjI0ZVx1NTViM1x1NmUyM1x1NjcyZFx1OGY2N1x1ZmZm'@; put 'ZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxMl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjEyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxMl1bc11dPTU0MjcyK3MsaFs1NDI3MitzXT1jWzIxMl1bc10pO2ZvcihjWzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1'@; put 'NjU4Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1NjVhOVx1OGY5N1x1NWQyZFx1NWM1NVx1ODYzOFx1NjgwOFx1NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2FlMFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4'@; put 'Y1x1NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYyZFx1NjI3ZVx1NmNiY1x1OGQ3NVx1NzE2N1x1N2Y2OVx1NTE0Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1'@; put 'OGZkOVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1Njc5NVx1NzViOVx1OGJjYVx1OTcwN1x1NjMyZlx1OTU0N1x1OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2'@; put 'M1x1NjUzZlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxM10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjEzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxM11bc11dPTU0NTI4K3MsaFs1NDUyOCtzXT1jWzIxM11bc10pO2ZvcihjWzIxNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWUyN1x1NzVjN1x1OTBkMVx1OGJjMVx1ODI5ZFx1Njc5ZFx1NjUyZlx1NTQzMVx1'@; put 'ODcxOFx1NzdlNVx1ODBhMlx1ODEwMlx1NmM0MVx1NGU0Ylx1N2VjN1x1ODA0Y1x1NzZmNFx1NjkwZFx1NmI5Nlx1NjI2N1x1NTAzY1x1NGY4NFx1NTc0MFx1NjMwN1x1NmI2Mlx1OGRiZVx1NTNlYVx1NjVlOFx1N2ViOFx1NWZkN1x1NjMxYVx1NjNiN1x1ODFmM1x1ODFmNFx1N2Y2ZVx1NWUx'@; put 'Y1x1NWNkOVx1NTIzNlx1NjY3YVx1NzllOVx1N2ExYVx1OGQyOFx1NzA5OVx1NzVkNFx1NmVkZVx1NmNiYlx1N2E5Mlx1NGUyZFx1NzZjNVx1NWZlMFx1OTQ5Zlx1ODg3N1x1N2VjOFx1NzljZFx1ODBiZlx1OTFjZFx1NGVmMlx1NGYxN1x1ODIxZlx1NTQ2OFx1NWRkZVx1NmQzMlx1OGJjY1x1'@; put 'N2NhNVx1OGY3NFx1ODA5OFx1NWUxYVx1NTQ5Mlx1NzZiMVx1NWI5OVx1NjYzY1x1OWFhNFx1NzNlMFx1NjgyYVx1ODZkYlx1NjczMVx1NzMyYVx1OGJmOFx1OGJkYlx1OTAxMFx1N2FmOVx1NzBkYlx1NzE2ZVx1NjJjNFx1NzdhOVx1NTYzMVx1NGUzYlx1ODQ1N1x1NjdmMVx1NTJhOVx1ODZj'@; put 'MFx1OGQyZVx1OTRmOFx1N2I1MVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxNF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjE0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxNF1bc11dPTU0Nzg0K3MsaFs1NDc4NCtzXT1jWzIxNF1bc10pO2ZvcihjWzIxNV09Ilx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGY0Zlx1NmNlOFx1Nzk1ZFx1OWE3Ylx1NjI5M1x1NzIyYVx1'@; put 'NjJmZFx1NGUxM1x1NzgxNlx1OGY2Y1x1NjRiMFx1OGQ1YVx1N2JjNlx1Njg2OVx1NWU4NFx1ODhjNVx1NTk4Nlx1NjQ5ZVx1NThlZVx1NzJiNlx1NjkwZVx1OTUyNVx1OGZmZFx1OGQ1OFx1NTc2MFx1N2YwMFx1OGMwNlx1NTFjNlx1NjM0OVx1NjJkOVx1NTM1M1x1Njg0Y1x1NzQyMlx1ODMw'@; put 'MVx1OTE0Y1x1NTU0NFx1Nzc0MFx1NzA3Y1x1NmQ0YVx1NTE3OVx1NTRhOFx1OGQ0NFx1NTlmZlx1NmVjYlx1NmRjNFx1NWI1Y1x1N2QyYlx1NGVkNFx1N2M3ZFx1NmVkM1x1NWI1MFx1ODFlYVx1NmUwZFx1NWI1N1x1OWIwM1x1NjhkNVx1OGUyYVx1NWI5N1x1N2VmY1x1NjAzYlx1N2ViNVx1'@; put 'OTBiOVx1OGQ3MFx1NTk0Zlx1NjNjZFx1NzlkZlx1OGRiM1x1NTM1Mlx1NjVjZlx1Nzk1Nlx1OGJjNVx1OTYzYlx1N2VjNFx1OTRiYlx1N2U4Mlx1NTYzNFx1OTE4OVx1NjcwMFx1N2Y2YVx1NWMwYVx1OTA3NVx1NjYyOFx1NWRlNlx1NGY1MFx1NjdkZVx1NTA1YVx1NGY1Y1x1NTc1MFx1NWVh'@; put 'N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxNV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjE1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxNV1bc11dPTU1MDQwK3MsaFs1NTA0MCtzXT1jWzIxNV1bc10pO2ZvcihjWzIxNl09Ilx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU4ZFx1NGUwY1x1NTE0MFx1NGUxMFx1'@; put 'NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUzZlx1NTMxNVx1NGU0N1x1NTkyZFx1NzIzYlx1NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1NGU1Y1x1NGU2'@; put 'OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1NTNhZVx1OTc2NVx1OGQ1ZFx1NTMxYVx1NTNmNVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIzM1x1NTIzZlx1'@; put 'NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5M1x1NTE4Mlx1N2Y1NFx1NGViYlx1NGVjM1x1NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1NGYyNVx1NGYy'@; put 'N1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxNl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjE2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxNl1bc11dPTU1Mjk2K3MsaFs1NTI5NitzXT1jWzIxNl1bc10pO2Zv'@; put 'cihjWzIxN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGY1Zlx1NGY1N1x1'@; put 'NGYzMlx1NGYzZFx1NGY3Nlx1NGY3NFx1NGY5MVx1NGY4OVx1NGY4M1x1NGY4Zlx1NGY3ZVx1NGY3Ylx1NGZhYVx1NGY3Y1x1NGZhY1x1NGY5NFx1NGZlNlx1NGZlOFx1NGZlYVx1NGZjNVx1NGZkYVx1NGZlM1x1NGZkY1x1NGZkMVx1NGZkZlx1NGZmOFx1NTAyOVx1NTA0Y1x1NGZmM1x1NTAy'@; put 'Y1x1NTAwZlx1NTAyZVx1NTAyZFx1NGZmZVx1NTAxY1x1NTAwY1x1NTAyNVx1NTAyOFx1NTA3ZVx1NTA0M1x1NTA1NVx1NTA0OFx1NTA0ZVx1NTA2Y1x1NTA3Ylx1NTBhNVx1NTBhN1x1NTBhOVx1NTBiYVx1NTBkNlx1NTEwNlx1NTBlZFx1NTBlY1x1NTBlNlx1NTBlZVx1NTEwN1x1NTEwYlx1'@; put 'NGVkZFx1NmMzZFx1NGY1OFx1NGY2NVx1NGZjZVx1OWZhMFx1NmM0Nlx1N2M3NFx1NTE2ZVx1NWRmZFx1OWVjOVx1OTk5OFx1NTE4MVx1NTkxNFx1NTJmOVx1NTMwZFx1OGEwN1x1NTMxMFx1NTFlYlx1NTkxOVx1NTE1NVx1NGVhMFx1NTE1Nlx1NGViM1x1ODg2ZVx1ODhhNFx1NGViNVx1ODEx'@; put 'NFx1ODhkMlx1Nzk4MFx1NWIzNFx1ODgwM1x1N2ZiOFx1NTFhYlx1NTFiMVx1NTFiZFx1NTFiY1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjE3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxN11bc11dPTU1NTUyK3MsaFs1NTU1MitzXT1j'@; put 'WzIxN11bc10pO2ZvcihjWzIxOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'NTFjN1x1NTE5Nlx1NTFhMlx1NTFhNVx1OGJhMFx1OGJhNlx1OGJhN1x1OGJhYVx1OGJiNFx1OGJiNVx1OGJiN1x1OGJjMlx1OGJjM1x1OGJjYlx1OGJjZlx1OGJjZVx1OGJkMlx1OGJkM1x1OGJkNFx1OGJkNlx1OGJkOFx1OGJkOVx1OGJkY1x1OGJkZlx1OGJlMFx1OGJlNFx1OGJlOFx1OGJl'@; put 'OVx1OGJlZVx1OGJmMFx1OGJmM1x1OGJmNlx1OGJmOVx1OGJmY1x1OGJmZlx1OGMwMFx1OGMwMlx1OGMwNFx1OGMwN1x1OGMwY1x1OGMwZlx1OGMxMVx1OGMxMlx1OGMxNFx1OGMxNVx1OGMxNlx1OGMxOVx1OGMxYlx1OGMxOFx1OGMxZFx1OGMxZlx1OGMyMFx1OGMyMVx1OGMyNVx1OGMyN1x1'@; put 'OGMyYVx1OGMyYlx1OGMyZVx1OGMyZlx1OGMzMlx1OGMzM1x1OGMzNVx1OGMzNlx1NTM2OVx1NTM3YVx1OTYxZFx1OTYyMlx1OTYyMVx1OTYzMVx1OTYyYVx1OTYzZFx1OTYzY1x1OTY0Mlx1OTY0OVx1OTY1NFx1OTY1Zlx1OTY2N1x1OTY2Y1x1OTY3Mlx1OTY3NFx1OTY4OFx1OTY4ZFx1OTY5'@; put 'N1x1OTZiMFx1OTA5N1x1OTA5Ylx1OTA5ZFx1OTA5OVx1OTBhY1x1OTBhMVx1OTBiNFx1OTBiM1x1OTBiNlx1OTBiYVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjE4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxOF1bc11dPTU1ODA4K3Ms'@; put 'aFs1NTgwOCtzXT1jWzIxOF1bc10pO2ZvcihjWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1OTBiOFx1OTBiMFx1OTBjZlx1OTBjNVx1OTBiZVx1OTBkMFx1OTBjNFx1OTBjN1x1OTBkM1x1OTBlNlx1OTBlMlx1OTBkY1x1OTBkN1x1OTBkYlx1OTBlYlx1OTBlZlx1OTBmZVx1OTEwNFx1OTEyMlx1OTExZVx1OTEyM1x1OTEzMVx1OTEyZlx1OTEzOVx1OTE0M1x1OTE0'@; put 'Nlx1NTIwZFx1NTk0Mlx1NTJhMlx1NTJhY1x1NTJhZFx1NTJiZVx1NTRmZlx1NTJkMFx1NTJkNlx1NTJmMFx1NTNkZlx1NzFlZVx1NzdjZFx1NWVmNFx1NTFmNVx1NTFmY1x1OWIyZlx1NTNiNlx1NWYwMVx1NzU1YVx1NWRlZlx1NTc0Y1x1NTdhOVx1NTdhMVx1NTg3ZVx1NThiY1x1NThjNVx1'@; put 'NThkMVx1NTcyOVx1NTcyY1x1NTcyYVx1NTczM1x1NTczOVx1NTcyZVx1NTcyZlx1NTc1Y1x1NTczYlx1NTc0Mlx1NTc2OVx1NTc4NVx1NTc2Ylx1NTc4Nlx1NTc3Y1x1NTc3Ylx1NTc2OFx1NTc2ZFx1NTc3Nlx1NTc3M1x1NTdhZFx1NTdhNFx1NTc4Y1x1NTdiMlx1NTdjZlx1NTdhN1x1NTdi'@; put 'NFx1NTc5M1x1NTdhMFx1NTdkNVx1NTdkOFx1NTdkYVx1NTdkOVx1NTdkMlx1NTdiOFx1NTdmNFx1NTdlZlx1NTdmOFx1NTdlNFx1NTdkZFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIxOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjE5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIxOV1b'@; put 'c11dPTU2MDY0K3MsaFs1NjA2NCtzXT1jWzIxOV1bc10pO2ZvcihjWzIyMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgwYlx1NTgwZFx1NTdmZFx1NTdlZFx1NTgwMFx1NTgxZVx1NTgxOVx1NTg0NFx1NTgyMFx1NTg2NVx1NTg2Y1x1NTg4MVx1NTg4OVx1NTg5YVx1NTg4MFx1OTlhOFx1OWYxOVx1NjFmZlx1ODI3OVx1ODI3ZFx1ODI3Zlx1ODI4Zlx1ODI4YVx1ODJh'@; put 'OFx1ODI4NFx1ODI4ZVx1ODI5MVx1ODI5N1x1ODI5OVx1ODJhYlx1ODJiOFx1ODJiZVx1ODJiMFx1ODJjOFx1ODJjYVx1ODJlM1x1ODI5OFx1ODJiN1x1ODJhZVx1ODJjYlx1ODJjY1x1ODJjMVx1ODJhOVx1ODJiNFx1ODJhMVx1ODJhYVx1ODI5Zlx1ODJjNFx1ODJjZVx1ODJhNFx1ODJlMVx1'@; put 'ODMwOVx1ODJmN1x1ODJlNFx1ODMwZlx1ODMwN1x1ODJkY1x1ODJmNFx1ODJkMlx1ODJkOFx1ODMwY1x1ODJmYlx1ODJkM1x1ODMxMVx1ODMxYVx1ODMwNlx1ODMxNFx1ODMxNVx1ODJlMFx1ODJkNVx1ODMxY1x1ODM1MVx1ODM1Ylx1ODM1Y1x1ODMwOFx1ODM5Mlx1ODMzY1x1ODMzNFx1ODMz'@; put 'MVx1ODM5Ylx1ODM1ZVx1ODMyZlx1ODM0Zlx1ODM0N1x1ODM0M1x1ODM1Zlx1ODM0MFx1ODMxN1x1ODM2MFx1ODMyZFx1ODMzYVx1ODMzM1x1ODM2Nlx1ODM2NVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyMF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjIwXVtzXS5jaGFyQ29kZUF0KDAp'@; put 'JiYoeVtjWzIyMF1bc11dPTU2MzIwK3MsaFs1NjMyMCtzXT1jWzIyMF1bc10pO2ZvcihjWzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODM2OFx1ODMxYlx1ODM2OVx1ODM2Y1x1ODM2YVx1ODM2ZFx1ODM2ZVx1ODNiMFx1ODM3OFx1ODNiM1x1ODNiNFx1ODNhMFx1ODNhYVx1ODM5M1x1ODM5Y1x1ODM4NVx1ODM3Y1x1ODNiNlx1ODNhOVx1ODM3ZFx1ODNiOFx1ODM3'@; put 'Ylx1ODM5OFx1ODM5ZVx1ODNhOFx1ODNiYVx1ODNiY1x1ODNjMVx1ODQwMVx1ODNlNVx1ODNkOFx1NTgwN1x1ODQxOFx1ODQwYlx1ODNkZFx1ODNmZFx1ODNkNlx1ODQxY1x1ODQzOFx1ODQxMVx1ODQwNlx1ODNkNFx1ODNkZlx1ODQwZlx1ODQwM1x1ODNmOFx1ODNmOVx1ODNlYVx1ODNjNVx1'@; put 'ODNjMFx1ODQyNlx1ODNmMFx1ODNlMVx1ODQ1Y1x1ODQ1MVx1ODQ1YVx1ODQ1OVx1ODQ3M1x1ODQ4N1x1ODQ4OFx1ODQ3YVx1ODQ4OVx1ODQ3OFx1ODQzY1x1ODQ0Nlx1ODQ2OVx1ODQ3Nlx1ODQ4Y1x1ODQ4ZVx1ODQzMVx1ODQ2ZFx1ODRjMVx1ODRjZFx1ODRkMFx1ODRlNlx1ODRiZFx1ODRk'@; put 'M1x1ODRjYVx1ODRiZlx1ODRiYVx1ODRlMFx1ODRhMVx1ODRiOVx1ODRiNFx1ODQ5N1x1ODRlNVx1ODRlM1x1ODUwY1x1NzUwZFx1ODUzOFx1ODRmMFx1ODUzOVx1ODUxZlx1ODUzYVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyMV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjIxXVtzXS5j'@; put 'aGFyQ29kZUF0KDApJiYoeVtjWzIyMV1bc11dPTU2NTc2K3MsaFs1NjU3NitzXT1jWzIyMV1bc10pO2ZvcihjWzIyMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU1Nlx1ODUzYlx1ODRmZlx1ODRmY1x1ODU1OVx1ODU0OFx1ODU2OFx1ODU2NFx1ODU1ZVx1ODU3YVx1NzdhMlx1ODU0M1x1ODU3Mlx1ODU3Ylx1ODVhNFx1ODVhOFx1ODU4N1x1ODU4Zlx1ODU3OVx1ODVh'@; put 'ZVx1ODU5Y1x1ODU4NVx1ODViOVx1ODViN1x1ODViMFx1ODVkM1x1ODVjMVx1ODVkY1x1ODVmZlx1ODYyN1x1ODYwNVx1ODYyOVx1ODYxNlx1ODYzY1x1NWVmZVx1NWYwOFx1NTkzY1x1NTk0MVx1ODAzN1x1NTk1NVx1NTk1YVx1NTk1OFx1NTMwZlx1NWMyMlx1NWMyNVx1NWMyY1x1NWMzNFx1'@; put 'NjI0Y1x1NjI2YVx1NjI5Zlx1NjJiYlx1NjJjYVx1NjJkYVx1NjJkN1x1NjJlZVx1NjMyMlx1NjJmNlx1NjMzOVx1NjM0Ylx1NjM0M1x1NjNhZFx1NjNmNlx1NjM3MVx1NjM3YVx1NjM4ZVx1NjNiNFx1NjM2ZFx1NjNhY1x1NjM4YVx1NjM2OVx1NjNhZVx1NjNiY1x1NjNmMlx1NjNmOFx1NjNl'@; put 'MFx1NjNmZlx1NjNjNFx1NjNkZVx1NjNjZVx1NjQ1Mlx1NjNjNlx1NjNiZVx1NjQ0NVx1NjQ0MVx1NjQwYlx1NjQxYlx1NjQyMFx1NjQwY1x1NjQyNlx1NjQyMVx1NjQ1ZVx1NjQ4NFx1NjQ2ZFx1NjQ5Nlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyMl0ubGVuZ3RoOysrcyk2NTUzMyE9'@; put 'PWNbMjIyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyMl1bc11dPTU2ODMyK3MsaFs1NjgzMitzXT1jWzIyMl1bc10pO2ZvcihjWzIyM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjQ3YVx1NjRiN1x1NjRiOFx1NjQ5OVx1NjRiYVx1NjRjMFx1NjRkMFx1NjRkN1x1NjRlNFx1NjRlMlx1NjUwOVx1NjUyNVx1NjUyZVx1NWYwYlx1NWZkMlx1NzUxOVx1NWYxMVx1NTM1'@; put 'Zlx1NTNmMVx1NTNmZFx1NTNlOVx1NTNlOFx1NTNmYlx1NTQxMlx1NTQxNlx1NTQwNlx1NTQ0Ylx1NTQ1Mlx1NTQ1M1x1NTQ1NFx1NTQ1Nlx1NTQ0M1x1NTQyMVx1NTQ1N1x1NTQ1OVx1NTQyM1x1NTQzMlx1NTQ4Mlx1NTQ5NFx1NTQ3N1x1NTQ3MVx1NTQ2NFx1NTQ5YVx1NTQ5Ylx1NTQ4NFx1'@; put 'NTQ3Nlx1NTQ2Nlx1NTQ5ZFx1NTRkMFx1NTRhZFx1NTRjMlx1NTRiNFx1NTRkMlx1NTRhN1x1NTRhNlx1NTRkM1x1NTRkNFx1NTQ3Mlx1NTRhM1x1NTRkNVx1NTRiYlx1NTRiZlx1NTRjY1x1NTRkOVx1NTRkYVx1NTRkY1x1NTRhOVx1NTRhYVx1NTRhNFx1NTRkZFx1NTRjZlx1NTRkZVx1NTUx'@; put 'Ylx1NTRlN1x1NTUyMFx1NTRmZFx1NTUxNFx1NTRmM1x1NTUyMlx1NTUyM1x1NTUwZlx1NTUxMVx1NTUyN1x1NTUyYVx1NTU2N1x1NTU4Zlx1NTViNVx1NTU0OVx1NTU2ZFx1NTU0MVx1NTU1NVx1NTUzZlx1NTU1MFx1NTUzY1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyM10ubGVuZ3Ro'@; put 'Oysrcyk2NTUzMyE9PWNbMjIzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyM11bc11dPTU3MDg4K3MsaFs1NzA4OCtzXT1jWzIyM11bc10pO2ZvcihjWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTUzN1x1NTU1Nlx1NTU3NVx1NTU3Nlx1NTU3N1x1NTUzM1x1NTUzMFx1NTU1Y1x1NTU4Ylx1NTVkMlx1NTU4M1x1NTViMVx1NTViOVx1NTU4OFx1NTU4MVx1NTU5'@; put 'Zlx1NTU3ZVx1NTVkNlx1NTU5MVx1NTU3Ylx1NTVkZlx1NTViZFx1NTViZVx1NTU5NFx1NTU5OVx1NTVlYVx1NTVmN1x1NTVjOVx1NTYxZlx1NTVkMVx1NTVlYlx1NTVlY1x1NTVkNFx1NTVlNlx1NTVkZFx1NTVjNFx1NTVlZlx1NTVlNVx1NTVmMlx1NTVmM1x1NTVjY1x1NTVjZFx1NTVlOFx1'@; put 'NTVmNVx1NTVlNFx1OGY5NFx1NTYxZVx1NTYwOFx1NTYwY1x1NTYwMVx1NTYyNFx1NTYyM1x1NTVmZVx1NTYwMFx1NTYyN1x1NTYyZFx1NTY1OFx1NTYzOVx1NTY1N1x1NTYyY1x1NTY0ZFx1NTY2Mlx1NTY1OVx1NTY1Y1x1NTY0Y1x1NTY1NFx1NTY4Nlx1NTY2NFx1NTY3MVx1NTY2Ylx1NTY3'@; put 'Ylx1NTY3Y1x1NTY4NVx1NTY5M1x1NTZhZlx1NTZkNFx1NTZkN1x1NTZkZFx1NTZlMVx1NTZmNVx1NTZlYlx1NTZmOVx1NTZmZlx1NTcwNFx1NTcwYVx1NTcwOVx1NTcxY1x1NWUwZlx1NWUxOVx1NWUxNFx1NWUxMVx1NWUzMVx1NWUzYlx1NWUzY1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1j'@; put 'WzIyNF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyNF1bc11dPTU3MzQ0K3MsaFs1NzM0NCtzXT1jWzIyNF1bc10pO2ZvcihjWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWUzN1x1NWU0NFx1NWU1NFx1NWU1Ylx1NWU1ZVx1NWU2MVx1NWM4Y1x1NWM3YVx1NWM4ZFx1NWM5MFx1NWM5Nlx1NWM4OFx1NWM5OFx1NWM5'@; put 'OVx1NWM5MVx1NWM5YVx1NWM5Y1x1NWNiNVx1NWNhMlx1NWNiZFx1NWNhY1x1NWNhYlx1NWNiMVx1NWNhM1x1NWNjMVx1NWNiN1x1NWNjNFx1NWNkMlx1NWNlNFx1NWNjYlx1NWNlNVx1NWQwMlx1NWQwM1x1NWQyN1x1NWQyNlx1NWQyZVx1NWQyNFx1NWQxZVx1NWQwNlx1NWQxYlx1NWQ1OFx1'@; put 'NWQzZVx1NWQzNFx1NWQzZFx1NWQ2Y1x1NWQ1Ylx1NWQ2Zlx1NWQ1ZFx1NWQ2Ylx1NWQ0Ylx1NWQ0YVx1NWQ2OVx1NWQ3NFx1NWQ4Mlx1NWQ5OVx1NWQ5ZFx1OGM3M1x1NWRiN1x1NWRjNVx1NWY3M1x1NWY3N1x1NWY4Mlx1NWY4N1x1NWY4OVx1NWY4Y1x1NWY5NVx1NWY5OVx1NWY5Y1x1NWZh'@; put 'OFx1NWZhZFx1NWZiNVx1NWZiY1x1ODg2Mlx1NWY2MVx1NzJhZFx1NzJiMFx1NzJiNFx1NzJiN1x1NzJiOFx1NzJjM1x1NzJjMVx1NzJjZVx1NzJjZFx1NzJkMlx1NzJlOFx1NzJlZlx1NzJlOVx1NzJmMlx1NzJmNFx1NzJmN1x1NzMwMVx1NzJmM1x1NzMwM1x1NzJmYVx1ZmZmZCIuc3BsaXQo'@; put 'IiIpLHM9MDtzIT1jWzIyNV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyNV1bc11dPTU3NjAwK3MsaFs1NzYwMCtzXT1jWzIyNV1bc10pO2ZvcihjWzIyNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzJmYlx1NzMxN1x1NzMxM1x1NzMyMVx1NzMwYVx1NzMxZVx1NzMxZFx1NzMxNVx1NzMyMlx1NzMzOVx1NzMyNVx1NzMy'@; put 'Y1x1NzMzOFx1NzMzMVx1NzM1MFx1NzM0ZFx1NzM1N1x1NzM2MFx1NzM2Y1x1NzM2Zlx1NzM3ZVx1ODIxYlx1NTkyNVx1OThlN1x1NTkyNFx1NTkwMlx1OTk2M1x1OTk2N1x1OTk2OFx1OTk2OVx1OTk2YVx1OTk2Ylx1OTk2Y1x1OTk3NFx1OTk3N1x1OTk3ZFx1OTk4MFx1OTk4NFx1OTk4N1x1'@; put 'OTk4YVx1OTk4ZFx1OTk5MFx1OTk5MVx1OTk5M1x1OTk5NFx1OTk5NVx1NWU4MFx1NWU5MVx1NWU4Ylx1NWU5Nlx1NWVhNVx1NWVhMFx1NWViOVx1NWViNVx1NWViZVx1NWViM1x1OGQ1M1x1NWVkMlx1NWVkMVx1NWVkYlx1NWVlOFx1NWVlYVx1ODFiYVx1NWZjNFx1NWZjOVx1NWZkNlx1NWZj'@; put 'Zlx1NjAwM1x1NWZlZVx1NjAwNFx1NWZlMVx1NWZlNFx1NWZmZVx1NjAwNVx1NjAwNlx1NWZlYVx1NWZlZFx1NWZmOFx1NjAxOVx1NjAzNVx1NjAyNlx1NjAxYlx1NjAwZlx1NjAwZFx1NjAyOVx1NjAyYlx1NjAwYVx1NjAzZlx1NjAyMVx1NjA3OFx1NjA3OVx1NjA3Ylx1NjA3YVx1NjA0Mlx1'@; put 'ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyNl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyNl1bc11dPTU3ODU2K3MsaFs1Nzg1NitzXT1jWzIyNl1bc10pO2ZvcihjWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA2YVx1NjA3ZFx1NjA5Nlx1NjA5YVx1NjBhZFx1NjA5ZFx1NjA4M1x1NjA5Mlx1NjA4Y1x1NjA5'@; put 'Ylx1NjBlY1x1NjBiYlx1NjBiMVx1NjBkZFx1NjBkOFx1NjBjNlx1NjBkYVx1NjBiNFx1NjEyMFx1NjEyNlx1NjExNVx1NjEyM1x1NjBmNFx1NjEwMFx1NjEwZVx1NjEyYlx1NjE0YVx1NjE3NVx1NjFhY1x1NjE5NFx1NjFhN1x1NjFiN1x1NjFkNFx1NjFmNVx1NWZkZFx1OTZiM1x1OTVlOVx1'@; put 'OTVlYlx1OTVmMVx1OTVmM1x1OTVmNVx1OTVmNlx1OTVmY1x1OTVmZVx1OTYwM1x1OTYwNFx1OTYwNlx1OTYwOFx1OTYwYVx1OTYwYlx1OTYwY1x1OTYwZFx1OTYwZlx1OTYxMlx1OTYxNVx1OTYxNlx1OTYxN1x1OTYxOVx1OTYxYVx1NGUyY1x1NzIzZlx1NjIxNVx1NmMzNVx1NmM1NFx1NmM1'@; put 'Y1x1NmM0YVx1NmNhM1x1NmM4NVx1NmM5MFx1NmM5NFx1NmM4Y1x1NmM2OFx1NmM2OVx1NmM3NFx1NmM3Nlx1NmM4Nlx1NmNhOVx1NmNkMFx1NmNkNFx1NmNhZFx1NmNmN1x1NmNmOFx1NmNmMVx1NmNkN1x1NmNiMlx1NmNlMFx1NmNkNlx1NmNmYVx1NmNlYlx1NmNlZVx1NmNiMVx1NmNkM1x1'@; put 'NmNlZlx1NmNmZVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyN10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyN11bc11dPTU4MTEyK3MsaFs1ODExMitzXT1jWzIyN11bc10pO2ZvcihjWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQzOVx1NmQyN1x1NmQwY1x1NmQ0M1x1NmQ0OFx1NmQwN1x1NmQwNFx1NmQx'@; put 'OVx1NmQwZVx1NmQyYlx1NmQ0ZFx1NmQyZVx1NmQzNVx1NmQxYVx1NmQ0Zlx1NmQ1Mlx1NmQ1NFx1NmQzM1x1NmQ5MVx1NmQ2Zlx1NmQ5ZVx1NmRhMFx1NmQ1ZVx1NmQ5M1x1NmQ5NFx1NmQ1Y1x1NmQ2MFx1NmQ3Y1x1NmQ2M1x1NmUxYVx1NmRjN1x1NmRjNVx1NmRkZVx1NmUwZVx1NmRiZlx1'@; put 'NmRlMFx1NmUxMVx1NmRlNlx1NmRkZFx1NmRkOVx1NmUxNlx1NmRhYlx1NmUwY1x1NmRhZVx1NmUyYlx1NmU2ZVx1NmU0ZVx1NmU2Ylx1NmViMlx1NmU1Zlx1NmU4Nlx1NmU1M1x1NmU1NFx1NmUzMlx1NmUyNVx1NmU0NFx1NmVkZlx1NmViMVx1NmU5OFx1NmVlMFx1NmYyZFx1NmVlMlx1NmVh'@; put 'NVx1NmVhN1x1NmViZFx1NmViYlx1NmViN1x1NmVkN1x1NmViNFx1NmVjZlx1NmU4Zlx1NmVjMlx1NmU5Zlx1NmY2Mlx1NmY0Nlx1NmY0N1x1NmYyNFx1NmYxNVx1NmVmOVx1NmYyZlx1NmYzNlx1NmY0Ylx1NmY3NFx1NmYyYVx1NmYwOVx1NmYyOVx1NmY4OVx1NmY4ZFx1NmY4Y1x1NmY3OFx1'@; put 'NmY3Mlx1NmY3Y1x1NmY3YVx1NmZkMVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyOF1bc11dPTU4MzY4K3MsaFs1ODM2OCtzXT1jWzIyOF1bc10pO2ZvcihjWzIyOV09Ilx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZjOVx1NmZhN1x1NmZiOVx1NmZiNlx1NmZjMlx1NmZl'@; put 'MVx1NmZlZVx1NmZkZVx1NmZlMFx1NmZlZlx1NzAxYVx1NzAyM1x1NzAxYlx1NzAzOVx1NzAzNVx1NzA0Zlx1NzA1ZVx1NWI4MFx1NWI4NFx1NWI5NVx1NWI5M1x1NWJhNVx1NWJiOFx1NzUyZlx1OWE5ZVx1NjQzNFx1NWJlNFx1NWJlZVx1ODkzMFx1NWJmMFx1OGU0N1x1OGIwN1x1OGZiNlx1'@; put 'OGZkM1x1OGZkNVx1OGZlNVx1OGZlZVx1OGZlNFx1OGZlOVx1OGZlNlx1OGZmM1x1OGZlOFx1OTAwNVx1OTAwNFx1OTAwYlx1OTAyNlx1OTAxMVx1OTAwZFx1OTAxNlx1OTAyMVx1OTAzNVx1OTAzNlx1OTAyZFx1OTAyZlx1OTA0NFx1OTA1MVx1OTA1Mlx1OTA1MFx1OTA2OFx1OTA1OFx1OTA2'@; put 'Mlx1OTA1Ylx1NjZiOVx1OTA3NFx1OTA3ZFx1OTA4Mlx1OTA4OFx1OTA4M1x1OTA4Ylx1NWY1MFx1NWY1N1x1NWY1Nlx1NWY1OFx1NWMzYlx1NTRhYlx1NWM1MFx1NWM1OVx1NWI3MVx1NWM2M1x1NWM2Nlx1N2ZiY1x1NWYyYVx1NWYyOVx1NWYyZFx1ODI3NFx1NWYzY1x1OWIzYlx1NWM2ZVx1'@; put 'NTk4MVx1NTk4M1x1NTk4ZFx1NTlhOVx1NTlhYVx1NTlhM1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIyOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjI5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIyOV1bc11dPTU4NjI0K3MsaFs1ODYyNCtzXT1jWzIyOV1bc10pO2ZvcihjWzIzMF09'@; put 'Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk5N1x1NTljYVx1NTlhYlx1NTk5'@; put 'ZVx1NTlhNFx1NTlkMlx1NTliMlx1NTlhZlx1NTlkN1x1NTliZVx1NWEwNVx1NWEwNlx1NTlkZFx1NWEwOFx1NTllM1x1NTlkOFx1NTlmOVx1NWEwY1x1NWEwOVx1NWEzMlx1NWEzNFx1NWExMVx1NWEyM1x1NWExM1x1NWE0MFx1NWE2N1x1NWE0YVx1NWE1NVx1NWEzY1x1NWE2Mlx1NWE3NVx1'@; put 'ODBlY1x1NWFhYVx1NWE5Ylx1NWE3N1x1NWE3YVx1NWFiZVx1NWFlYlx1NWFiMlx1NWFkMlx1NWFkNFx1NWFiOFx1NWFlMFx1NWFlM1x1NWFmMVx1NWFkNlx1NWFlNlx1NWFkOFx1NWFkY1x1NWIwOVx1NWIxN1x1NWIxNlx1NWIzMlx1NWIzN1x1NWI0MFx1NWMxNVx1NWMxY1x1NWI1YVx1NWI2'@; put 'NVx1NWI3M1x1NWI1MVx1NWI1M1x1NWI2Mlx1OWE3NVx1OWE3N1x1OWE3OFx1OWE3YVx1OWE3Zlx1OWE3ZFx1OWE4MFx1OWE4MVx1OWE4NVx1OWE4OFx1OWE4YVx1OWE5MFx1OWE5Mlx1OWE5M1x1OWE5Nlx1OWE5OFx1OWE5Ylx1OWE5Y1x1OWE5ZFx1OWE5Zlx1OWFhMFx1OWFhMlx1OWFhM1x1'@; put 'OWFhNVx1OWFhN1x1N2U5Zlx1N2VhMVx1N2VhM1x1N2VhNVx1N2VhOFx1N2VhOVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzMF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzMF1bc11dPTU4ODgwK3MsaFs1ODg4MCtzXT1jWzIzMF1bc10p'@; put 'O2ZvcihjWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2VhZFx1N2Vi'@; put 'MFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2VkMFx1N2VkNFx1N2VkN1x1N2VkYlx1N2VlMFx1N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2VmYVx1N2VmYlx1N2VmZVx1N2YwMVx1N2YwMlx1N2YwM1x1'@; put 'N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1N2YxOVx1N2YxY1x1N2YxYlx1N2YxZlx1N2YyMVx1N2YyMlx1N2YyM1x1N2YyNFx1N2YyNVx1N2YyNlx1N2YyN1x1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZlx1N2YzMFx1N2YzMVx1N2YzMlx1N2Yz'@; put 'M1x1N2YzNVx1NWU3YVx1NzU3Zlx1NWRkYlx1NzUzZVx1OTA5NVx1NzM4ZVx1NzM5MVx1NzNhZVx1NzNhMlx1NzM5Zlx1NzNjZlx1NzNjMlx1NzNkMVx1NzNiN1x1NzNiM1x1NzNjMFx1NzNjOVx1NzNjOFx1NzNlNVx1NzNkOVx1OTg3Y1x1NzQwYVx1NzNlOVx1NzNlN1x1NzNkZVx1NzNiYVx1'@; put 'NzNmMlx1NzQwZlx1NzQyYVx1NzQ1Ylx1NzQyNlx1NzQyNVx1NzQyOFx1NzQzMFx1NzQyZVx1NzQyY1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzMV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzMV1bc11dPTU5MTM2K3MsaFs1OTEzNitz'@; put 'XT1jWzIzMV1bc10pO2ZvcihjWzIzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1NzQxYlx1NzQxYVx1NzQ0MVx1NzQ1Y1x1NzQ1N1x1NzQ1NVx1NzQ1OVx1NzQ3N1x1NzQ2ZFx1NzQ3ZVx1NzQ5Y1x1NzQ4ZVx1NzQ4MFx1NzQ4MVx1NzQ4N1x1NzQ4Ylx1NzQ5ZVx1NzRhOFx1NzRhOVx1NzQ5MFx1NzRhN1x1NzRkMlx1NzRiYVx1OTdlYVx1OTdlYlx1OTdlY1x1Njc0Y1x1'@; put 'Njc1M1x1Njc1ZVx1Njc0OFx1Njc2OVx1NjdhNVx1Njc4N1x1Njc2YVx1Njc3M1x1Njc5OFx1NjdhN1x1Njc3NVx1NjdhOFx1Njc5ZVx1NjdhZFx1Njc4Ylx1Njc3N1x1Njc3Y1x1NjdmMFx1NjgwOVx1NjdkOFx1NjgwYVx1NjdlOVx1NjdiMFx1NjgwY1x1NjdkOVx1NjdiNVx1NjdkYVx1Njdi'@; put 'M1x1NjdkZFx1NjgwMFx1NjdjM1x1NjdiOFx1NjdlMlx1NjgwZVx1NjdjMVx1NjdmZFx1NjgzMlx1NjgzM1x1Njg2MFx1Njg2MVx1Njg0ZVx1Njg2Mlx1Njg0NFx1Njg2NFx1Njg4M1x1NjgxZFx1Njg1NVx1Njg2Nlx1Njg0MVx1Njg2N1x1Njg0MFx1NjgzZVx1Njg0YVx1Njg0OVx1NjgyOVx1'@; put 'NjhiNVx1Njg4Zlx1Njg3NFx1Njg3N1x1Njg5M1x1Njg2Ylx1NjhjMlx1Njk2ZVx1NjhmY1x1NjkxZlx1NjkyMFx1NjhmOVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzMl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzMl1bc11dPTU5Mzky'@; put 'K3MsaFs1OTM5MitzXT1jWzIzMl1bc10pO2ZvcihjWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1NjkyNFx1NjhmMFx1NjkwYlx1NjkwMVx1Njk1N1x1NjhlM1x1NjkxMFx1Njk3MVx1NjkzOVx1Njk2MFx1Njk0Mlx1Njk1ZFx1Njk4NFx1Njk2Ylx1Njk4MFx1Njk5OFx1Njk3OFx1NjkzNFx1NjljY1x1Njk4N1x1Njk4OFx1NjljZVx1Njk4OVx1Njk2Nlx1Njk2M1x1'@; put 'Njk3OVx1Njk5Ylx1NjlhN1x1NjliYlx1NjlhYlx1NjlhZFx1NjlkNFx1NjliMVx1NjljMVx1NjljYVx1NjlkZlx1Njk5NVx1NjllMFx1Njk4ZFx1NjlmZlx1NmEyZlx1NjllZFx1NmExN1x1NmExOFx1NmE2NVx1NjlmMlx1NmE0NFx1NmEzZVx1NmFhMFx1NmE1MFx1NmE1Ylx1NmEzNVx1NmE4'@; put 'ZVx1NmE3OVx1NmEzZFx1NmEyOFx1NmE1OFx1NmE3Y1x1NmE5MVx1NmE5MFx1NmFhOVx1NmE5N1x1NmFhYlx1NzMzN1x1NzM1Mlx1NmI4MVx1NmI4Mlx1NmI4N1x1NmI4NFx1NmI5Mlx1NmI5M1x1NmI4ZFx1NmI5YVx1NmI5Ylx1NmJhMVx1NmJhYVx1OGY2Ylx1OGY2ZFx1OGY3MVx1OGY3Mlx1'@; put 'OGY3M1x1OGY3NVx1OGY3Nlx1OGY3OFx1OGY3N1x1OGY3OVx1OGY3YVx1OGY3Y1x1OGY3ZVx1OGY4MVx1OGY4Mlx1OGY4NFx1OGY4N1x1OGY4Ylx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzM10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjMzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIz'@; put 'M11bc11dPTU5NjQ4K3MsaFs1OTY0OCtzXT1jWzIzM11bc10pO2ZvcihjWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGY4ZFx1OGY4ZVx1OGY4Zlx1OGY5OFx1OGY5YVx1OGVjZVx1NjIwYlx1NjIxN1x1NjIxYlx1NjIxZlx1NjIyMlx1NjIyMVx1NjIyNVx1NjIyNFx1NjIyY1x1ODFlN1x1NzRlZlx1NzRmNFx1NzRmZlx1NzUwZlx1NzUxMVx1NzUxM1x1NjUzNFx1'@; put 'NjVlZVx1NjVlZlx1NjVmMFx1NjYwYVx1NjYxOVx1Njc3Mlx1NjYwM1x1NjYxNVx1NjYwMFx1NzA4NVx1NjZmN1x1NjYxZFx1NjYzNFx1NjYzMVx1NjYzNlx1NjYzNVx1ODAwNlx1NjY1Zlx1NjY1NFx1NjY0MVx1NjY0Zlx1NjY1Nlx1NjY2MVx1NjY1N1x1NjY3N1x1NjY4NFx1NjY4Y1x1NjZh'@; put 'N1x1NjY5ZFx1NjZiZVx1NjZkYlx1NjZkY1x1NjZlNlx1NjZlOVx1OGQzMlx1OGQzM1x1OGQzNlx1OGQzYlx1OGQzZFx1OGQ0MFx1OGQ0NVx1OGQ0Nlx1OGQ0OFx1OGQ0OVx1OGQ0N1x1OGQ0ZFx1OGQ1NVx1OGQ1OVx1ODljN1x1ODljYVx1ODljYlx1ODljY1x1ODljZVx1ODljZlx1ODlkMFx1'@; put 'ODlkMVx1NzI2ZVx1NzI5Zlx1NzI1ZFx1NzI2Nlx1NzI2Zlx1NzI3ZVx1NzI3Zlx1NzI4NFx1NzI4Ylx1NzI4ZFx1NzI4Zlx1NzI5Mlx1NjMwOFx1NjMzMlx1NjNiMFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzNF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM0XVtzXS5jaGFyQ29kZUF0'@; put 'KDApJiYoeVtjWzIzNF1bc11dPTU5OTA0K3MsaFs1OTkwNCtzXT1jWzIzNF1bc10pO2ZvcihjWzIzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjQzZlx1NjRkOFx1ODAwNFx1NmJlYVx1NmJmM1x1NmJmZFx1NmJmNVx1NmJmOVx1NmMwNVx1NmMwN1x1NmMwNlx1NmMwZFx1NmMxNVx1NmMxOFx1NmMxOVx1NmMxYVx1NmMyMVx1NmMyOVx1NmMyNFx1NmMyYVx1NmMzMlx1'@; put 'NjUzNVx1NjU1NVx1NjU2Ylx1NzI0ZFx1NzI1Mlx1NzI1Nlx1NzIzMFx1ODY2Mlx1NTIxNlx1ODA5Zlx1ODA5Y1x1ODA5M1x1ODBiY1x1NjcwYVx1ODBiZFx1ODBiMVx1ODBhYlx1ODBhZFx1ODBiNFx1ODBiN1x1ODBlN1x1ODBlOFx1ODBlOVx1ODBlYVx1ODBkYlx1ODBjMlx1ODBjNFx1ODBk'@; put 'OVx1ODBjZFx1ODBkN1x1NjcxMFx1ODBkZFx1ODBlYlx1ODBmMVx1ODBmNFx1ODBlZFx1ODEwZFx1ODEwZVx1ODBmMlx1ODBmY1x1NjcxNVx1ODExMlx1OGM1YVx1ODEzNlx1ODExZVx1ODEyY1x1ODExOFx1ODEzMlx1ODE0OFx1ODE0Y1x1ODE1M1x1ODE3NFx1ODE1OVx1ODE1YVx1ODE3MVx1'@; put 'ODE2MFx1ODE2OVx1ODE3Y1x1ODE3ZFx1ODE2ZFx1ODE2N1x1NTg0ZFx1NWFiNVx1ODE4OFx1ODE4Mlx1ODE5MVx1NmVkNVx1ODFhM1x1ODFhYVx1ODFjY1x1NjcyNlx1ODFjYVx1ODFiYlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzNV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM1XVtz'@; put 'XS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzNV1bc11dPTYwMTYwK3MsaFs2MDE2MCtzXT1jWzIzNV1bc10pO2ZvcihjWzIzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFjMVx1ODFhNlx1NmIyNFx1NmIzN1x1NmIzOVx1NmI0M1x1NmI0Nlx1NmI1OVx1OThkMVx1OThkMlx1OThkM1x1OThkNVx1OThkOVx1OThkYVx1NmJiM1x1NWY0MFx1NmJjMlx1ODlmM1x1NjU5MFx1'@; put 'OWY1MVx1NjU5M1x1NjViY1x1NjVjNlx1NjVjNFx1NjVjM1x1NjVjY1x1NjVjZVx1NjVkMlx1NjVkNlx1NzA4MFx1NzA5Y1x1NzA5Nlx1NzA5ZFx1NzBiYlx1NzBjMFx1NzBiN1x1NzBhYlx1NzBiMVx1NzBlOFx1NzBjYVx1NzExMFx1NzExM1x1NzExNlx1NzEyZlx1NzEzMVx1NzE3M1x1NzE1'@; put 'Y1x1NzE2OFx1NzE0NVx1NzE3Mlx1NzE0YVx1NzE3OFx1NzE3YVx1NzE5OFx1NzFiM1x1NzFiNVx1NzFhOFx1NzFhMFx1NzFlMFx1NzFkNFx1NzFlN1x1NzFmOVx1NzIxZFx1NzIyOFx1NzA2Y1x1NzExOFx1NzE2Nlx1NzFiOVx1NjIzZVx1NjIzZFx1NjI0M1x1NjI0OFx1NjI0OVx1NzkzYlx1'@; put 'Nzk0MFx1Nzk0Nlx1Nzk0OVx1Nzk1Ylx1Nzk1Y1x1Nzk1M1x1Nzk1YVx1Nzk2Mlx1Nzk1N1x1Nzk2MFx1Nzk2Zlx1Nzk2N1x1Nzk3YVx1Nzk4NVx1Nzk4YVx1Nzk5YVx1NzlhN1x1NzliM1x1NWZkMVx1NWZkMFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzNl0ubGVuZ3RoOysrcyk2NTUz'@; put 'MyE9PWNbMjM2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzNl1bc11dPTYwNDE2K3MsaFs2MDQxNitzXT1jWzIzNl1bc10pO2ZvcihjWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjAzY1x1NjA1ZFx1NjA1YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFjYlx1NjFkMVx1NjIwNlx1ODA4MFx1'@; put 'ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1NzgwMFx1NzgwOVx1NzgxN1x1NzgxOFx1NzgxMVx1NjVhYlx1NzgyZFx1NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1'@; put 'N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1Nzg5M1x1Nzg5YVx1Nzg4N1x1Nzg5Y1x1NzhhMVx1NzhhM1x1NzhiMlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1NzkyNFx1NzkxZVx1NzkzNFx1OWY5Ylx1'@; put 'OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZmOVx1NzcwN1x1NzcwOFx1NzcxYVx1NzcyMlx1NzcxOVx1NzcyZFx1NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzIzN10ubGVu'@; put 'Z3RoOysrcyk2NTUzMyE9PWNbMjM3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzN11bc11dPTYwNjcyK3MsaFs2MDY3MitzXT1jWzIzN11bc10pO2ZvcihjWzIzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzc2Mlx1Nzc2NVx1Nzc3Zlx1Nzc4ZFx1Nzc3ZFx1Nzc4MFx1Nzc4Y1x1Nzc5MVx1Nzc5Zlx1NzdhMFx1NzdiMFx1NzdiNVx1NzdiZFx1NzUzYVx1NzU0MFx1'@; put 'NzU0ZVx1NzU0Ylx1NzU0OFx1NzU1Ylx1NzU3Mlx1NzU3OVx1NzU4M1x1N2Y1OFx1N2Y2MVx1N2Y1Zlx1OGE0OFx1N2Y2OFx1N2Y3NFx1N2Y3MVx1N2Y3OVx1N2Y4MVx1N2Y3ZVx1NzZjZFx1NzZlNVx1ODgzMlx1OTQ4NVx1OTQ4Nlx1OTQ4N1x1OTQ4Ylx1OTQ4YVx1OTQ4Y1x1OTQ4ZFx1OTQ4'@; put 'Zlx1OTQ5MFx1OTQ5NFx1OTQ5N1x1OTQ5NVx1OTQ5YVx1OTQ5Ylx1OTQ5Y1x1OTRhM1x1OTRhNFx1OTRhYlx1OTRhYVx1OTRhZFx1OTRhY1x1OTRhZlx1OTRiMFx1OTRiMlx1OTRiNFx1OTRiNlx1OTRiN1x1OTRiOFx1OTRiOVx1OTRiYVx1OTRiY1x1OTRiZFx1OTRiZlx1OTRjNFx1OTRjOFx1'@; put 'OTRjOVx1OTRjYVx1OTRjYlx1OTRjY1x1OTRjZFx1OTRjZVx1OTRkMFx1OTRkMVx1OTRkMlx1OTRkNVx1OTRkNlx1OTRkN1x1OTRkOVx1OTRkOFx1OTRkYlx1OTRkZVx1OTRkZlx1OTRlMFx1OTRlMlx1OTRlNFx1OTRlNVx1OTRlN1x1OTRlOFx1OTRlYVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtz'@; put 'IT1jWzIzOF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM4XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzOF1bc11dPTYwOTI4K3MsaFs2MDkyOCtzXT1jWzIzOF1bc10pO2ZvcihjWzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTRlOVx1OTRlYlx1OTRlZVx1OTRlZlx1OTRmM1x1OTRmNFx1OTRmNVx1OTRmN1x1OTRmOVx1OTRmY1x1OTRmZFx1OTRmZlx1OTUwM1x1'@; put 'OTUwMlx1OTUwNlx1OTUwN1x1OTUwOVx1OTUwYVx1OTUwZFx1OTUwZVx1OTUwZlx1OTUxMlx1OTUxM1x1OTUxNFx1OTUxNVx1OTUxNlx1OTUxOFx1OTUxYlx1OTUxZFx1OTUxZVx1OTUxZlx1OTUyMlx1OTUyYVx1OTUyYlx1OTUyOVx1OTUyY1x1OTUzMVx1OTUzMlx1OTUzNFx1OTUzNlx1OTUz'@; put 'N1x1OTUzOFx1OTUzY1x1OTUzZVx1OTUzZlx1OTU0Mlx1OTUzNVx1OTU0NFx1OTU0NVx1OTU0Nlx1OTU0OVx1OTU0Y1x1OTU0ZVx1OTU0Zlx1OTU1Mlx1OTU1M1x1OTU1NFx1OTU1Nlx1OTU1N1x1OTU1OFx1OTU1OVx1OTU1Ylx1OTU1ZVx1OTU1Zlx1OTU1ZFx1OTU2MVx1OTU2Mlx1OTU2NFx1'@; put 'OTU2NVx1OTU2Nlx1OTU2N1x1OTU2OFx1OTU2OVx1OTU2YVx1OTU2Ylx1OTU2Y1x1OTU2Zlx1OTU3MVx1OTU3Mlx1OTU3M1x1OTUzYVx1NzdlN1x1NzdlY1x1OTZjOVx1NzlkNVx1NzllZFx1NzllM1x1NzllYlx1N2EwNlx1NWQ0N1x1N2EwM1x1N2EwMlx1N2ExZVx1N2ExNFx1ZmZmZCIuc3Bs'@; put 'aXQoIiIpLHM9MDtzIT1jWzIzOV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjM5XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzIzOV1bc11dPTYxMTg0K3MsaFs2MTE4NCtzXT1jWzIzOV1bc10pO2ZvcihjWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1'@; put 'NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOFx1OWUyOVx1OWUyYVx1OWUyYlx1OWUyY1x1OWUzMlx1OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0N1x1OWU0OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0'@; put 'ZVx1OWU1MVx1OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1OWU1ZVx1OWU2M1x1OWU2Nlx1OWU2N1x1OWU2OFx1OWU2OVx1OWU2YVx1OWU2Ylx1OWU2Y1x1OWU3MVx1OWU2ZFx1OWU3M1x1NzU5Mlx1NzU5NFx1NzU5Nlx1NzVhMFx1NzU5ZFx1NzVhY1x1NzVhM1x1NzViM1x1NzViNFx1'@; put 'NzViOFx1NzVjNFx1NzViMVx1NzViMFx1NzVjM1x1NzVjMlx1NzVkNlx1NzVjZFx1NzVlM1x1NzVlOFx1NzVlNlx1NzVlNFx1NzVlYlx1NzVlN1x1NzYwM1x1NzVmMVx1NzVmY1x1NzVmZlx1NzYxMFx1NzYwMFx1NzYwNVx1NzYwY1x1NzYxN1x1NzYwYVx1NzYyNVx1NzYxOFx1NzYxNVx1NzYx'@; put 'OVx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0MF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQwXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0MF1bc11dPTYxNDQwK3MsaFs2MTQ0MCtzXT1jWzI0MF1bc10pO2ZvcihjWzI0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzYxYlx1NzYzY1x1NzYyMlx1NzYyMFx1NzY0MFx1NzYyZFx1NzYzMFx1NzYzZlx1NzYzNVx1'@; put 'NzY0M1x1NzYzZVx1NzYzM1x1NzY0ZFx1NzY1ZVx1NzY1NFx1NzY1Y1x1NzY1Nlx1NzY2Ylx1NzY2Zlx1N2ZjYVx1N2FlNlx1N2E3OFx1N2E3OVx1N2E4MFx1N2E4Nlx1N2E4OFx1N2E5NVx1N2FhNlx1N2FhMFx1N2FhY1x1N2FhOFx1N2FhZFx1N2FiM1x1ODg2NFx1ODg2OVx1ODg3Mlx1ODg3'@; put 'ZFx1ODg3Zlx1ODg4Mlx1ODhhMlx1ODhjNlx1ODhiN1x1ODhiY1x1ODhjOVx1ODhlMlx1ODhjZVx1ODhlM1x1ODhlNVx1ODhmMVx1ODkxYVx1ODhmY1x1ODhlOFx1ODhmZVx1ODhmMFx1ODkyMVx1ODkxOVx1ODkxM1x1ODkxYlx1ODkwYVx1ODkzNFx1ODkyYlx1ODkzNlx1ODk0MVx1ODk2Nlx1'@; put 'ODk3Ylx1NzU4Ylx1ODBlNVx1NzZiMlx1NzZiNFx1NzdkY1x1ODAxMlx1ODAxNFx1ODAxNlx1ODAxY1x1ODAyMFx1ODAyMlx1ODAyNVx1ODAyNlx1ODAyN1x1ODAyOVx1ODAyOFx1ODAzMVx1ODAwYlx1ODAzNVx1ODA0M1x1ODA0Nlx1ODA0ZFx1ODA1Mlx1ODA2OVx1ODA3MVx1ODk4M1x1OTg3'@; put 'OFx1OTg4MFx1OTg4M1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0MV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQxXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0MV1bc11dPTYxNjk2K3MsaFs2MTY5NitzXT1jWzI0MV1bc10pO2ZvcihjWzI0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg4OVx1OTg4Y1x1OTg4ZFx1OTg4Zlx1OTg5NFx1OTg5YVx1OTg5Ylx1'@; put 'OTg5ZVx1OTg5Zlx1OThhMVx1OThhMlx1OThhNVx1OThhNlx1ODY0ZFx1ODY1NFx1ODY2Y1x1ODY2ZVx1ODY3Zlx1ODY3YVx1ODY3Y1x1ODY3Ylx1ODZhOFx1ODY4ZFx1ODY4Ylx1ODZhY1x1ODY5ZFx1ODZhN1x1ODZhM1x1ODZhYVx1ODY5M1x1ODZhOVx1ODZiNlx1ODZjNFx1ODZiNVx1ODZj'@; put 'ZVx1ODZiMFx1ODZiYVx1ODZiMVx1ODZhZlx1ODZjOVx1ODZjZlx1ODZiNFx1ODZlOVx1ODZmMVx1ODZmMlx1ODZlZFx1ODZmM1x1ODZkMFx1ODcxM1x1ODZkZVx1ODZmNFx1ODZkZlx1ODZkOFx1ODZkMVx1ODcwM1x1ODcwN1x1ODZmOFx1ODcwOFx1ODcwYVx1ODcwZFx1ODcwOVx1ODcyM1x1'@; put 'ODczYlx1ODcxZVx1ODcyNVx1ODcyZVx1ODcxYVx1ODczZVx1ODc0OFx1ODczNFx1ODczMVx1ODcyOVx1ODczN1x1ODczZlx1ODc4Mlx1ODcyMlx1ODc3ZFx1ODc3ZVx1ODc3Ylx1ODc2MFx1ODc3MFx1ODc0Y1x1ODc2ZVx1ODc4Ylx1ODc1M1x1ODc2M1x1ODc3Y1x1ODc2NFx1ODc1OVx1ODc2'@; put 'NVx1ODc5M1x1ODdhZlx1ODdhOFx1ODdkMlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0Ml0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQyXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0Ml1bc11dPTYxOTUyK3MsaFs2MTk1MitzXT1jWzI0Ml1bc10pO2ZvcihjWzI0M109Ilx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODdjNlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1'@; put 'ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1ODdjYlx1ODdkM1x1ODdiZFx1ODdkMVx1ODdjMFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1ODgyMVx1ODgzOVx1ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0'@; put 'NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2IwNFx1N2IxNVx1N2IwYVx1N2IyYlx1N2IwZlx1N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2IzZVx1N2IxZVx1N2I1OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1'@; put 'N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1N2I3MVx1N2I5MFx1N2JhNlx1N2JhN1x1N2JiOFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1N2JjMVx1N2JjY1x1N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2Jl'@; put 'YVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2MwYlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0M10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQzXVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0M11bc11dPTYyMjA4K3MsaFs2MjIwOCtzXT1jWzI0M11bc10pO2ZvcihjWzI0'@; put 'NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2MxZlx1N2MyYVx1N2MyNlx1'@; put 'N2MzOFx1N2M0MVx1N2M0MFx1ODFmZVx1ODIwMVx1ODIwMlx1ODIwNFx1ODFlY1x1ODg0NFx1ODIyMVx1ODIyMlx1ODIyM1x1ODIyZFx1ODIyZlx1ODIyOFx1ODIyYlx1ODIzOFx1ODIzYlx1ODIzM1x1ODIzNFx1ODIzZVx1ODI0NFx1ODI0OVx1ODI0Ylx1ODI0Zlx1ODI1YVx1ODI1Zlx1ODI2'@; put 'OFx1ODg3ZVx1ODg4NVx1ODg4OFx1ODhkOFx1ODhkZlx1ODk1ZVx1N2Y5ZFx1N2Y5Zlx1N2ZhN1x1N2ZhZlx1N2ZiMFx1N2ZiMlx1N2M3Y1x1NjU0OVx1N2M5MVx1N2M5ZFx1N2M5Y1x1N2M5ZVx1N2NhMlx1N2NiMlx1N2NiY1x1N2NiZFx1N2NjMVx1N2NjN1x1N2NjY1x1N2NjZFx1N2NjOFx1'@; put 'N2NjNVx1N2NkN1x1N2NlOFx1ODI2ZVx1NjZhOFx1N2ZiZlx1N2ZjZVx1N2ZkNVx1N2ZlNVx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZlZVx1N2ZmM1x1N2NmOFx1N2Q3N1x1N2RhNlx1N2RhZVx1N2U0N1x1N2U5Ylx1OWViOFx1OWViNFx1OGQ3M1x1OGQ4NFx1OGQ5NFx1OGQ5MVx1OGRiMVx1OGQ2'@; put 'N1x1OGQ2ZFx1OGM0N1x1OGM0OVx1OTE0YVx1OTE1MFx1OTE0ZVx1OTE0Zlx1OTE2NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0NF0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQ0XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0NF1bc11dPTYyNDY0K3MsaFs2MjQ2NCtzXT1jWzI0NF1b'@; put 'c10pO2ZvcihjWzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTE2Mlx1'@; put 'OTE2MVx1OTE3MFx1OTE2OVx1OTE2Zlx1OTE3ZFx1OTE3ZVx1OTE3Mlx1OTE3NFx1OTE3OVx1OTE4Y1x1OTE4NVx1OTE5MFx1OTE4ZFx1OTE5MVx1OTFhMlx1OTFhM1x1OTFhYVx1OTFhZFx1OTFhZVx1OTFhZlx1OTFiNVx1OTFiNFx1OTFiYVx1OGM1NVx1OWU3ZVx1OGRiOFx1OGRlYlx1OGUw'@; put 'NVx1OGU1OVx1OGU2OVx1OGRiNVx1OGRiZlx1OGRiY1x1OGRiYVx1OGRjNFx1OGRkNlx1OGRkN1x1OGRkYVx1OGRkZVx1OGRjZVx1OGRjZlx1OGRkYlx1OGRjNlx1OGRlY1x1OGRmN1x1OGRmOFx1OGRlM1x1OGRmOVx1OGRmYlx1OGRlNFx1OGUwOVx1OGRmZFx1OGUxNFx1OGUxZFx1OGUxZlx1'@; put 'OGUyY1x1OGUyZVx1OGUyM1x1OGUyZlx1OGUzYVx1OGU0MFx1OGUzOVx1OGUzNVx1OGUzZFx1OGUzMVx1OGU0OVx1OGU0MVx1OGU0Mlx1OGU1MVx1OGU1Mlx1OGU0YVx1OGU3MFx1OGU3Nlx1OGU3Y1x1OGU2Zlx1OGU3NFx1OGU4NVx1OGU4Zlx1OGU5NFx1OGU5MFx1OGU5Y1x1OGU5ZVx1OGM3'@; put 'OFx1OGM4Mlx1OGM4YVx1OGM4NVx1OGM5OFx1OGM5NFx1NjU5Ylx1ODlkNlx1ODlkZVx1ODlkYVx1ODlkY1x1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0NV0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQ1XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0NV1bc11dPTYyNzIwK3MsaFs2Mjcy'@; put 'MCtzXT1jWzI0NV1bc10pO2ZvcihjWzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIyNlx1OTc1M1x1OTZlOVx1OTZmM1x1OTZlZlx1OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NVx1OWY4Nlx1OWY4N1x1OWY4OFx1OWY4OVx1OWY4YVx1OWY4'@; put 'Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1OTZiY1x1OTZiZFx1OTZjZVx1OTZkMlx1NzdiZlx1OTZlMFx1OTI4ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1'@; put 'OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5NFx1OWM5NVx1OWM5YVx1OWM5Ylx1OWM5ZVx1OWM5Zlx1OWNhMFx1OWNhMVx1OWNhMlx1OWNhM1x1OWNhNVx1OWNhNlx1OWNhN1x1OWNhOFx1OWNhOVx1OWNhYlx1OWNhZFx1OWNhZVx1OWNiMFx1OWNiMVx1OWNiMlx1OWNiM1x1OWNiNFx1OWNi'@; put 'NVx1OWNiNlx1OWNiN1x1OWNiYVx1OWNiYlx1OWNiY1x1OWNiZFx1OWNjNFx1OWNjNVx1OWNjNlx1OWNjN1x1OWNjYVx1OWNjYlx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0Nl0ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQ2XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtjWzI0Nl1bc11dPTYy'@; put 'OTc2K3MsaFs2Mjk3NitzXT1jWzI0Nl1bc10pO2ZvcihjWzI0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1OWNjY1x1OWNjZFx1OWNjZVx1OWNjZlx1OWNkMFx1OWNkM1x1OWNkNFx1OWNkNVx1OWNkN1x1OWNkOFx1OWNkOVx1OWNkY1x1OWNkZFx1OWNkZlx1OWNlMlx1OTc3Y1x1OTc4NVx1OTc5MVx1OTc5Mlx1OTc5NFx1OTdhZlx1OTdhYlx1OTdhM1x1OTdiMlx1OTdi'@; put 'NFx1OWFiMVx1OWFiMFx1OWFiN1x1OWU1OFx1OWFiNlx1OWFiYVx1OWFiY1x1OWFjMVx1OWFjMFx1OWFjNVx1OWFjMlx1OWFjYlx1OWFjY1x1OWFkMVx1OWI0NVx1OWI0M1x1OWI0N1x1OWI0OVx1OWI0OFx1OWI0ZFx1OWI1MVx1OThlOFx1OTkwZFx1OTkyZVx1OTk1NVx1OTk1NFx1OWFkZlx1'@; put 'OWFlMVx1OWFlNlx1OWFlZlx1OWFlYlx1OWFmYlx1OWFlZFx1OWFmOVx1OWIwOFx1OWIwZlx1OWIxM1x1OWIxZlx1OWIyM1x1OWViZFx1OWViZVx1N2UzYlx1OWU4Mlx1OWU4N1x1OWU4OFx1OWU4Ylx1OWU5Mlx1OTNkNlx1OWU5ZFx1OWU5Zlx1OWVkYlx1OWVkY1x1OWVkZFx1OWVlMFx1OWVk'@; put 'Zlx1OWVlMlx1OWVlOVx1OWVlN1x1OWVlNVx1OWVlYVx1OWVlZlx1OWYyMlx1OWYyY1x1OWYyZlx1OWYzOVx1OWYzN1x1OWYzZFx1OWYzZVx1OWY0NFx1ZmZmZCIuc3BsaXQoIiIpLHM9MDtzIT1jWzI0N10ubGVuZ3RoOysrcyk2NTUzMyE9PWNbMjQ3XVtzXS5jaGFyQ29kZUF0KDApJiYoeVtj'@; put 'WzI0N11bc11dPTYzMjMyK3MsaFs2MzIzMitzXT1jWzI0N11bc10pO3JldHVybntlbmM6eSxkZWM6aH19KCksalsxMDAyOV09ZnVuY3Rpb24oKXtmb3IodmFyIGg9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRc'@; put 'eDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx1MDEwMFx1MDEwMVx4Yzlc'@; put 'dTAxMDRceGQ2XHhkY1x4ZTFcdTAxMDVcdTAxMGNceGU0XHUwMTBkXHUwMTA2XHUwMTA3XHhlOVx1MDE3OVx1MDE3YVx1MDEwZVx4ZWRcdTAxMGZcdTAxMTJcdTAxMTNcdTAxMTZceGYzXHUwMTE3XHhmNFx4ZjZceGY1XHhmYVx1MDExYVx1MDExYlx4ZmNcdTIwMjBceGIwXHUwMTE4XHhhM1x4'@; put 'YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHUwMTE5XHhhOFx1MjI2MFx1MDEyM1x1MDEyZVx1MDEyZlx1MDEyYVx1MjI2NFx1MjI2NVx1MDEyYlx1MDEzNlx1MjIwMlx1MjIxMVx1MDE0Mlx1MDEzYlx1MDEzY1x1MDEzZFx1MDEzZVx1MDEzOVx1MDEzYVx1MDE0NVx1MDE0Nlx1MDE0'@; put 'M1x4YWNcdTIyMWFcdTAxNDRcdTAxNDdcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTAxNDhcdTAxNTBceGQ1XHUwMTUxXHUwMTRjXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx1MDE0ZFx1MDE1NFx1MDE1NVx1MDE1OFx1MjAzOVx1MjAzYVx1MDE1OVx1'@; put 'MDE1Nlx1MDE1N1x1MDE2MFx1MjAxYVx1MjAxZVx1MDE2MVx1MDE1YVx1MDE1Ylx4YzFcdTAxNjRcdTAxNjVceGNkXHUwMTdkXHUwMTdlXHUwMTZhXHhkM1x4ZDRcdTAxNmJcdTAxNmVceGRhXHUwMTZmXHUwMTcwXHUwMTcxXHUwMTcyXHUwMTczXHhkZFx4ZmRcdTAxMzdcdTAxN2JcdTAxNDFc'@; put 'dTAxN2NcdTAxMjJcdTAyYzciLHk9W10sYz17fSxzPTA7MjU2IT1zOysrcyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzEwMDc5XT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAx'@; put 'XHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX'@; put 'WFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4Zjlc'@; put 'eGZiXHhmY1x4ZGRceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4'@; put 'YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIwNDRceGE0XHhkMFx4ZjBceGRlXHhmZVx4ZmRceGI3XHUy'@; put 'MDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLHk9W10sYz17fSxzPTA7MjU2IT1z'@; put 'Oysrcyk2NTUzMyE9PWguY2hhckNvZGVBdChzKSYmKGNbaC5jaGFyQXQocyldPXMpLHlbc109aC5jaGFyQXQocyk7cmV0dXJue2VuYzpjLGRlYzp5fX0oKSxqWzEwMDgxXT1mdW5jdGlvbigpe2Zvcih2YXIgaD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgw'@; put 'ZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9'@; put 'flx4N2ZceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2'@; put 'XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhi'@; put 'Ylx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MDExZVx1MDExZlx1MDEzMFx1MDEzMVx1MDE1ZVx1MDE1Zlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4'@; put 'YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdWZmZmRcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyIseT1bXSxjPXt9LHM9MDsyNTYhPXM7KytzKTY1NTMzIT09aC5jaGFyQ29kZUF0'@; put 'KHMpJiYoY1toLmNoYXJBdChzKV09cykseVtzXT1oLmNoYXJBdChzKTtyZXR1cm57ZW5jOmMsZGVjOnl9fSgpLGpbMjg1OTFdPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0'@; put 'XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4ODBceDgxXHg4Mlx4ODNceDg0'@; put 'XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRc'@; put 'eGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4'@; put 'ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIix5'@; put 'PVtdLGM9e30scz0wOzI1NiE9czsrK3MpNjU1MzMhPT1oLmNoYXJDb2RlQXQocykmJihjW2guY2hhckF0KHMpXT1zKSx5W3NdPWguY2hhckF0KHMpO3JldHVybntlbmM6YyxkZWM6eX19KCksZmUuZXhwb3J0cyYmdHlwZW9mIERPX05PVF9FWFBPUlRfQ09ERVBBR0U+InUiJiYoZmUuZXhwb3J0'@; put 'cz1qKSxmdW5jdGlvbihoLHkpeyJ1c2Ugc3RyaWN0IjtpZih0eXBlb2Ygaj4idSIpe3ZhciBjPWo7ZmUuZXhwb3J0cyYmdHlwZW9mIERPX05PVF9FWFBPUlRfQ09ERVBBR0U+InUiP2ZlLmV4cG9ydHM9eShjKTpoLmNwdGFibGU9eShjKX1lbHNlIGo9eShqKX0odGhpcyxmdW5jdGlvbihoKXsi'@; put 'dXNlIHN0cmljdCI7dmFyIHk9ezEyMDA6InV0ZjE2bGUiLDEyMDE6InV0ZjE2YmUiLDEyZTM6InV0ZjMybGUiLDEyMDAxOiJ1dGYzMmJlIiwxNjk2OToidXRmNjRsZSIsMjAxMjc6ImFzY2lpIiw2NWUzOiJ1dGY3Iiw2NTAwMToidXRmOCJ9LGM9Wzg3NCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEy'@; put 'NTQsMTI1NSwxMjU2LDFlNF0scz1bOTMyLDkzNiw5NDksOTUwXSxBPVs2NTAwMV0sdj17fSxDPXt9LHc9e30sUz17fSxMPWZ1bmN0aW9uKEcpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKEcpfSxSPWZ1bmN0aW9uKEcpe3JldHVybiBHLmNoYXJDb2RlQXQoMCl9LHg9dHlwZW9mIEJ1ZmZl'@; put 'cjwidSIsVT1mdW5jdGlvbigpe307aWYoeCl7dmFyIEg9IUJ1ZmZlci5mcm9tO2lmKCFIKXRyeXtCdWZmZXIuZnJvbSgiZm9vIiwidXRmOCIpfWNhdGNoe0g9ITB9VT1IP2Z1bmN0aW9uKEssRyl7cmV0dXJuIEc/bmV3IEJ1ZmZlcihLLEcpOm5ldyBCdWZmZXIoSyl9OkJ1ZmZlci5mcm9tLmJp'@; put 'bmQoQnVmZmVyKSxCdWZmZXIuYWxsb2NVbnNhZmV8fChCdWZmZXIuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oSyl7cmV0dXJuIG5ldyBCdWZmZXIoSyl9KTt2YXIgVj0xMDI0LE49QnVmZmVyLmFsbG9jVW5zYWZlKFYpLFk9ZnVuY3Rpb24oRyl7dmFyIEQ9ZnVuY3Rpb24oRyl7Zm9yKHZhciBEPUJ1'@; put 'ZmZlci5hbGxvY1Vuc2FmZSg2NTUzNikscD0wO3A8NjU1MzY7KytwKURbcF09MDtmb3IodmFyIEk9T2JqZWN0LmtleXMoRyksdWU9SS5sZW5ndGgsbmU9MCxfZT1JW25lXTtuZTx1ZTsrK25lKShfZT1JW25lXSkmJihEW19lLmNoYXJDb2RlQXQoMCldPUdbX2VdKTtyZXR1cm4gRH0oaFtHXS5l'@; put 'bmMpO3JldHVybiBmdW5jdGlvbihJLHVlKXt2YXIgX2UsbmU9SS5sZW5ndGgsUGU9MCxvdD0wLGx0PTAsZHQ9MDtpZigic3RyaW5nIj09dHlwZW9mIEkpZm9yKF9lPUJ1ZmZlci5hbGxvY1Vuc2FmZShuZSksUGU9MDtQZTxuZTsrK1BlKV9lW1BlXT1EW0kuY2hhckNvZGVBdChQZSldO2Vsc2Ug'@; put 'aWYoQnVmZmVyLmlzQnVmZmVyKEkpKXtmb3IoX2U9QnVmZmVyLmFsbG9jVW5zYWZlKDIqbmUpLG90PTAsUGU9MDtQZTxuZTsrK1BlKShsdD1JW1BlXSk8MTI4P19lW290KytdPURbbHRdOmx0PDIyND8oX2Vbb3QrK109RFsoKDMxJmx0KTw8NikrKDYzJklbUGUrMV0pXSwrK1BlKTpsdDwyNDA/'@; put 'KF9lW290KytdPURbKCgxNSZsdCk8PDEyKSsoKDYzJklbUGUrMV0pPDw2KSsoNjMmSVtQZSsyXSldLFBlKz0yKTooZHQ9KCg3Jmx0KTw8MTgpKygoNjMmSVtQZSsxXSk8PDEyKSsoKDYzJklbUGUrMl0pPDw2KSsoNjMmSVtQZSszXSksUGUrPTMsZHQ8NjU1MzY/X2Vbb3QrK109RFtkdF06KF9l'@; put 'W290KytdPURbNTUyOTYrKChkdC09NjU1MzYpPj4xMCYxMDIzKV0sX2Vbb3QrK109RFs1NjMyMCsoMTAyMyZkdCldKSk7X2U9X2Uuc2xpY2UoMCxvdCl9ZWxzZSBmb3IoX2U9QnVmZmVyLmFsbG9jVW5zYWZlKG5lKSxQZT0wO1BlPG5lOysrUGUpX2VbUGVdPURbSVtQZV0uY2hhckNvZGVBdCgw'@; put 'KV07cmV0dXJuIHVlJiYiYnVmIiE9PXVlPyJhcnIiIT09dWU/X2UudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwoX2UpOl9lfX0sRj1mdW5jdGlvbihHKXt2YXIgRD1oW0ddLmRlYyxwPUJ1ZmZlci5hbGxvY1Vuc2FmZSgxMzEwNzIpLEk9MCx1ZT0iIjtmb3IoST0wO0k8RC5sZW5n'@; put 'dGg7KytJKWlmKHVlPURbSV0pe3ZhciBuZT11ZS5jaGFyQ29kZUF0KDApO3BbMipJXT0yNTUmbmUscFsyKkkrMV09bmU+Pjh9cmV0dXJuIGZ1bmN0aW9uKFBlKXt2YXIgb3Q9UGUubGVuZ3RoLGx0PTAsZHQ9MDtpZigyKm90PlYmJihWPTIqb3QsTj1CdWZmZXIuYWxsb2NVbnNhZmUoVikpLEJ1'@; put 'ZmZlci5pc0J1ZmZlcihQZSkpZm9yKGx0PTA7bHQ8b3Q7bHQrKylOWzIqbHRdPXBbZHQ9MipQZVtsdF1dLE5bMipsdCsxXT1wW2R0KzFdO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBQZSlmb3IobHQ9MDtsdDxvdDtsdCsrKWR0PTIqUGUuY2hhckNvZGVBdChsdCksTlsyKmx0XT1wW2R0XSxO'@; put 'WzIqbHQrMV09cFtkdCsxXTtlbHNlIGZvcihsdD0wO2x0PG90O2x0KyspTlsyKmx0XT1wW2R0PTIqUGVbbHRdXSxOWzIqbHQrMV09cFtkdCsxXTtyZXR1cm4gTi5zbGljZSgwLDIqb3QpLnRvU3RyaW5nKCJ1Y3MyIil9fSxXPWZ1bmN0aW9uKEcpe2Zvcih2YXIgRD1oW0ddLmVuYyxwPUJ1ZmZl'@; put 'ci5hbGxvY1Vuc2FmZSgxMzEwNzIpLEk9MDtJPDEzMTA3MjsrK0kpcFtJXT0wO2Zvcih2YXIgdWU9T2JqZWN0LmtleXMoRCksbmU9MCxfZT11ZVtuZV07bmU8dWUubGVuZ3RoOysrbmUpaWYoX2U9dWVbbmVdKXt2YXIgUGU9X2UuY2hhckNvZGVBdCgwKTtwWzIqUGVdPTI1NSZEW19lXSxwWzIq'@; put 'UGUrMV09RFtfZV0+Pjh9cmV0dXJuIGZ1bmN0aW9uKGx0LGR0KXt2YXIgUmU9bHQubGVuZ3RoLGFlPUJ1ZmZlci5hbGxvY1Vuc2FmZSgyKlJlKSx4ZT0wLGplPTAsQWU9MCxEZT0wLEZlPTA7aWYoInN0cmluZyI9PXR5cGVvZiBsdCl7Zm9yKHhlPURlPTA7eGU8UmU7Kyt4ZSlqZT0yKmx0LmNo'@; put 'YXJDb2RlQXQoeGUpLGFlW0RlKytdPXBbamUrMV18fHBbamVdLHBbamUrMV0+MCYmKGFlW0RlKytdPXBbamVdKTthZT1hZS5zbGljZSgwLERlKX1lbHNlIGlmKEJ1ZmZlci5pc0J1ZmZlcihsdCkpe2Zvcih4ZT1EZT0wO3hlPFJlOysreGUpKEZlPWx0W3hlXSk8MTI4P2plPUZlOkZlPDIyND8o'@; put 'amU9KCgzMSZGZSk8PDYpKyg2MyZsdFt4ZSsxXSksKyt4ZSk6RmU8MjQwPyhqZT0oKDE1JkZlKTw8MTIpKygoNjMmbHRbeGUrMV0pPDw2KSsoNjMmbHRbeGUrMl0pLHhlKz0yKTooamU9KCg3JkZlKTw8MTgpKygoNjMmbHRbeGUrMV0pPDwxMikrKCg2MyZsdFt4ZSsyXSk8PDYpKyg2MyZsdFt4'@; put 'ZSszXSkseGUrPTMpLGplPDY1NTM2PyhhZVtEZSsrXT1wWzErKGplKj0yKV18fHBbamVdLHBbamUrMV0+MCYmKGFlW0RlKytdPXBbamVdKSk6KGFlW0RlKytdPXBbMSsoamU9MiooNTUyOTYrKChBZT1qZS02NTUzNik+PjEwJjEwMjMpKSldfHxwW2plXSxwW2plKzFdPjAmJihhZVtEZSsrXT1w'@; put 'W2plXSksYWVbRGUrK109cFsxKyhqZT0yKig1NjMyMCsoMTAyMyZBZSkpKV18fHBbamVdLHBbamUrMV0+MCYmKGFlW0RlKytdPXBbamVdKSk7YWU9YWUuc2xpY2UoMCxEZSl9ZWxzZSBmb3IoeGU9RGU9MDt4ZTxSZTt4ZSsrKWplPTIqbHRbeGVdLmNoYXJDb2RlQXQoMCksYWVbRGUrK109cFtq'@; put 'ZSsxXXx8cFtqZV0scFtqZSsxXT4wJiYoYWVbRGUrK109cFtqZV0pO3JldHVybiBkdCYmImJ1ZiIhPT1kdD8iYXJyIiE9PWR0P2FlLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKGFlKTphZX19LHE9ZnVuY3Rpb24oRyl7dmFyIHVlLEQ9aFtHXS5kZWMscD1CdWZmZXIuYWxsb2NV'@; put 'bnNhZmUoMTMxMDcyKSxJPTAsbmU9MCxfZT0wLFBlPTA7Zm9yKFBlPTA7UGU8NjU1MzY7KytQZSlwWzIqUGVdPTI1NSxwWzIqUGUrMV09MjUzO2ZvcihJPTA7STxELmxlbmd0aDsrK0kpKHVlPURbSV0pJiYobmU9dWUuY2hhckNvZGVBdCgwKSxwW19lPTIqSV09MjU1Jm5lLHBbX2UrMV09bmU+'@; put 'PjgpO3JldHVybiBmdW5jdGlvbihsdCl7dmFyIGR0PWx0Lmxlbmd0aCxSZT1CdWZmZXIuYWxsb2NVbnNhZmUoMipkdCksYWU9MCx4ZT0wLGplPTA7aWYoQnVmZmVyLmlzQnVmZmVyKGx0KSlmb3IoYWU9MDthZTxkdDthZSsrKTI1NT09PXBbeGU9MipsdFthZV1dJiYyNTM9PT1wW3hlKzFdJiYo'@; put 'eGU9MiooKGx0W2FlXTw8OCkrbHRbYWUrMV0pLCsrYWUpLFJlW2plKytdPXBbeGVdLFJlW2plKytdPXBbeGUrMV07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGx0KWZvcihhZT0wO2FlPGR0O2FlKyspeGU9MipsdC5jaGFyQ29kZUF0KGFlKSwyNTU9PT1wW3hlXSYmMjUzPT09cFt4ZSsxXSYm'@; put 'KHhlPTIqKChsdC5jaGFyQ29kZUF0KGFlKTw8OCkrbHQuY2hhckNvZGVBdChhZSsxKSksKythZSksUmVbamUrK109cFt4ZV0sUmVbamUrK109cFt4ZSsxXTtlbHNlIGZvcihhZT0wO2FlPGR0O2FlKyspMjU1PT09cFt4ZT0yKmx0W2FlXV0mJjI1Mz09PXBbeGUrMV0mJih4ZT0yKigobHRbYWVd'@; put 'PDw4KStsdFthZSsxXSksKythZSksUmVbamUrK109cFt4ZV0sUmVbamUrK109cFt4ZSsxXTtyZXR1cm4gUmUuc2xpY2UoMCxqZSkudG9TdHJpbmcoInVjczIiKX19O3ZbNjUwMDFdPWZ1bmN0aW9uIEsoRyl7aWYoInN0cmluZyI9PXR5cGVvZiBHKXJldHVybiBLKEcuc3BsaXQoIiIpLm1hcChS'@; put 'KSk7dmFyIEQ9Ry5sZW5ndGgscD0wLEk9MDs0KkQ+ViYmKFY9NCpELE49QnVmZmVyLmFsbG9jVW5zYWZlKFYpKTt2YXIgdWU9MDtEPj0zJiYyMzk9PUdbMF0mJjE4Nz09R1sxXSYmMTkxPT1HWzJdJiYodWU9Myk7Zm9yKHZhciBuZT0xLF9lPTAsUGU9MDt1ZTxEO3VlKz1uZSluZT0xLChQZT1H'@; put 'W3VlXSk8MTI4P3A9UGU6UGU8MjI0PyhwPTY0KigzMSZQZSkrKDYzJkdbdWUrMV0pLG5lPTIpOlBlPDI0MD8ocD0oKDE1JlBlKTw8MTIpKzY0Kig2MyZHW3VlKzFdKSsoNjMmR1t1ZSsyXSksbmU9Myk6KHA9MjYyMTQ0Kig3JlBlKSsoKDYzJkdbdWUrMV0pPDwxMikrNjQqKDYzJkdbdWUrMl0p'@; put 'Kyg2MyZHW3VlKzNdKSxuZT00KSxwPDY1NTM2PyhOW19lKytdPTI1NSZwLE5bX2UrK109cD4+OCk6KEk9NTUyOTYrKChwLT02NTUzNik+PjEwJjEwMjMpLHA9NTYzMjArKDEwMjMmcCksTltfZSsrXT0yNTUmSSxOW19lKytdPUk+Pj44LE5bX2UrK109MjU1JnAsTltfZSsrXT1wPj4+OCYyNTUp'@; put 'O3JldHVybiBOLnNsaWNlKDAsX2UpLnRvU3RyaW5nKCJ1Y3MyIil9LENbNjUwMDFdPWZ1bmN0aW9uKEcsRCl7aWYoeCYmQnVmZmVyLmlzQnVmZmVyKEcpKXJldHVybiBEJiYiYnVmIiE9PUQ/ImFyciIhPT1EP0cudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwoRyk6Rzt2YXIgcD1H'@; put 'Lmxlbmd0aCxJPTAsdWU9MCxuZT0wLF9lPSJzdHJpbmciPT10eXBlb2YgRzs0KnA+ViYmKFY9NCpwLE49QnVmZmVyLmFsbG9jVW5zYWZlKFYpKTtmb3IodmFyIFBlPTA7UGU8cDsrK1BlKShJPV9lP0cuY2hhckNvZGVBdChQZSk6R1tQZV0uY2hhckNvZGVBdCgwKSk8PTEyNz9OW25lKytdPUk6'@; put 'STw9MjA0Nz8oTltuZSsrXT0xOTIrKEk+PjYpLE5bbmUrK109MTI4Kyg2MyZJKSk6ST49NTUyOTYmJkk8PTU3MzQzPyhJLT01NTI5NiwrK1BlLHVlPShfZT9HLmNoYXJDb2RlQXQoUGUpOkdbUGVdLmNoYXJDb2RlQXQoMCkpLTU2MzIwKyhJPDwxMCksTltuZSsrXT0yNDArKHVlPj4+MTgmNyks'@; put 'TltuZSsrXT0xNDQrKHVlPj4+MTImNjMpLE5bbmUrK109MTI4Kyh1ZT4+PjYmNjMpLE5bbmUrK109MTI4Kyg2MyZ1ZSkpOihOW25lKytdPTIyNCsoST4+MTIpLE5bbmUrK109MTI4KyhJPj42JjYzKSxOW25lKytdPTEyOCsoNjMmSSkpO3JldHVybiBEJiYiYnVmIiE9PUQ/ImFyciIhPT1EP04u'@; put 'c2xpY2UoMCxuZSkudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwoTiwwLG5lKTpOLnNsaWNlKDAsbmUpfX12YXIgcmU9ZnVuY3Rpb24oKXtpZih4KXtpZih3W2NbMF1dKXJldHVybjt2YXIgRz0wLEQ9MDtmb3IoRz0wO0c8Yy5sZW5ndGg7KytHKWhbRD1jW0ddXSYmKHdbRF09RihE'@; put 'KSxTW0RdPVkoRCkpO2ZvcihHPTA7RzxzLmxlbmd0aDsrK0cpaFtEPXNbR11dJiYod1tEXT1xKEQpLFNbRF09VyhEKSk7Zm9yKEc9MDtHPEEubGVuZ3RoOysrRyl2W0Q9QVtHXV0mJih3W0RdPXZbRF0pLENbRF0mJihTW0RdPUNbRF0pfX0sbWU9ZnVuY3Rpb24oSyxHKXtyZXR1cm4iIn0sQ2U9'@; put 'ZnVuY3Rpb24oRyl7ZGVsZXRlIHdbR10sZGVsZXRlIFNbR119LGtlPXtlbmNhY2hlOnJlLGRlY2FjaGU6ZnVuY3Rpb24oKXtpZih4KXtpZighd1tjWzBdXSlyZXR1cm47Yy5mb3JFYWNoKENlKSxzLmZvckVhY2goQ2UpLEEuZm9yRWFjaChDZSl9Zj1tZSxiPTB9LHNiY3M6YyxkYmNzOnN9O3Jl'@; put 'KCk7dmFyIHFlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixmPW1lLGI9MDtyZXR1cm4gaC51dGlscz17ZGVjb2RlOmZ1bmN0aW9uIEsoRyxEKXt2YXIgcDtpZihwPXdbR10pcmV0dXJuIHAoRCk7aWYoInN0cmluZyI9'@; put 'PXR5cGVvZiBEKXJldHVybiBLKEcsRC5zcGxpdCgiIikubWFwKFIpKTt2YXIgYWUsST1ELmxlbmd0aCx1ZT1uZXcgQXJyYXkoSSksbmU9IiIsX2U9MCxQZT0wLG90PTEsbHQ9MCxkdD0wLFJlPWhbR10seGU9IiI7aWYoUmUmJihhZT1SZS5kZWMpKWZvcihQZT0wO1BlPEk7UGUrPW90KXtpZihv'@; put 'dD0yLChuZT1hZVsoRFtQZV08PDgpK0RbUGUrMV1dKXx8KG90PTEsbmU9YWVbRFtQZV1dKSwhbmUpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgY29kZTogIitEW1BlXSsiICIrRFtQZStvdC0xXSsiICIrUGUrIiAiK290KyIgIithZVtEW1BlXV0pO3VlW2x0KytdPW5lfWVsc2V7aWYo'@; put 'ISh4ZT15W0ddKSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBDUDogIitHKTtzd2l0Y2goeGUpe2Nhc2UidXRmOCI6Zm9yKEk+PTMmJjIzOT09RFswXSYmMTg3PT1EWzFdJiYxOTE9PURbMl0mJihQZT0zKTtQZTxJO1BlKz1vdClvdD0xLERbUGVdPDEyOD9fZT1EW1BlXTpEW1BlXTwy'@; put 'MjQ/KF9lPTY0KigzMSZEW1BlXSkrKDYzJkRbUGUrMV0pLG90PTIpOkRbUGVdPDI0MD8oX2U9KCgxNSZEW1BlXSk8PDEyKSs2NCooNjMmRFtQZSsxXSkrKDYzJkRbUGUrMl0pLG90PTMpOihfZT0yNjIxNDQqKDcmRFtQZV0pKygoNjMmRFtQZSsxXSk8PDEyKSs2NCooNjMmRFtQZSsyXSkrKDYz'@; put 'JkRbUGUrM10pLG90PTQpLF9lPDY1NTM2fHwoZHQ9NTUyOTYrKChfZS09NjU1MzYpPj4xMCYxMDIzKSxfZT01NjMyMCsoMTAyMyZfZSksdWVbbHQrK109U3RyaW5nLmZyb21DaGFyQ29kZShkdCkpLHVlW2x0KytdPVN0cmluZy5mcm9tQ2hhckNvZGUoX2UpO2JyZWFrO2Nhc2UiYXNjaWkiOmlm'@; put 'KHgmJkJ1ZmZlci5pc0J1ZmZlcihEKSlyZXR1cm4gRC50b1N0cmluZyh4ZSk7Zm9yKFBlPTA7UGU8STtQZSsrKXVlW1BlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKERbUGVdKTtsdD1JO2JyZWFrO2Nhc2UidXRmMTZsZSI6aWYoST49MiYmMjU1PT1EWzBdJiYyNTQ9PURbMV0mJihQZT0yKSx4JiZC'@; put 'dWZmZXIuaXNCdWZmZXIoRCkpcmV0dXJuIEQudG9TdHJpbmcoeGUpO2ZvcihvdD0yO1BlKzE8STtQZSs9b3QpdWVbbHQrK109U3RyaW5nLmZyb21DaGFyQ29kZSgoRFtQZSsxXTw8OCkrRFtQZV0pO2JyZWFrO2Nhc2UidXRmMTZiZSI6Zm9yKEk+PTImJjI1ND09RFswXSYmMjU1PT1EWzFdJiYo'@; put 'UGU9Miksb3Q9MjtQZSsxPEk7UGUrPW90KXVlW2x0KytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKERbUGVdPDw4KStEW1BlKzFdKTticmVhaztjYXNlInV0ZjMybGUiOmZvcihJPj00JiYyNTU9PURbMF0mJjI1ND09RFsxXSYmMD09PURbMl0mJjA9PT1EWzNdJiYoUGU9NCksb3Q9NDtQZTxJO1Bl'@; put 'Kz1vdCkoX2U9KERbUGUrM108PDI0KSsoRFtQZSsyXTw8MTYpKyhEW1BlKzFdPDw4KStEW1BlXSk+NjU1MzU/KF9lLT02NTUzNix1ZVtsdCsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhfZT4+MTAmMTAyMykpLHVlW2x0KytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTYzMjArKDEwMjMm'@; put 'X2UpKSk6dWVbbHQrK109U3RyaW5nLmZyb21DaGFyQ29kZShfZSk7YnJlYWs7Y2FzZSJ1dGYzMmJlIjpmb3IoST49NCYmMjU1PT1EWzNdJiYyNTQ9PURbMl0mJjA9PT1EWzFdJiYwPT09RFswXSYmKFBlPTQpLG90PTQ7UGU8STtQZSs9b3QpKF9lPShEW1BlXTw8MjQpKyhEW1BlKzFdPDwxNikr'@; put 'KERbUGUrMl08PDgpK0RbUGUrM10pPjY1NTM1PyhfZS09NjU1MzYsdWVbbHQrK109U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoX2U+PjEwJjEwMjMpKSx1ZVtsdCsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKygxMDIzJl9lKSkpOnVlW2x0KytdPVN0cmluZy5mcm9tQ2hhckNvZGUo'@; put 'X2UpO2JyZWFrO2Nhc2UidXRmNyI6Zm9yKEk+PTQmJjQzPT1EWzBdJiY0Nz09RFsxXSYmMTE4PT1EWzJdJiYoST49NSYmNTY9PURbM10mJjQ1PT1EWzRdP1BlPTU6KDU2PT1EWzNdfHw1Nz09RFszXXx8NDM9PURbM118fDQ3PT1EWzNdKSYmKFBlPTQpKTtQZTxJO1BlKz1vdClpZig0Mz09PURb'@; put 'UGVdKWlmKG90PTEsNDUhPT1EW1BlKzFdKXtmb3IoO1N0cmluZy5mcm9tQ2hhckNvZGUoRFtQZStvdF0pLm1hdGNoKC9bQS1aYS16MC05K1wvXS8pOylvdCsrO3ZhciBqZT0wOzQ1PT09RFtQZStvdF0mJigrK290LGplPTEpO2Zvcih2YXIgQWU9W10sRGU9IiIsaGU9MCx3ZT0wLEplPTAsdHQ9'@; put 'MCxLZT0xO0tlPG90LWplJiYoaGU9cWUuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKERbUGUrS2UrK10pKSx3ZT1xZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoRFtQZStLZSsrXSkpLEFlLnB1c2goaGU8PDJ8d2U+PjQpLC0xIT09KEplPXFlLmluZGV4T2YoU3RyaW5nLmZyb21D'@; put 'aGFyQ29kZShEW1BlK0tlKytdKSkpJiYoQWUucHVzaCgoMTUmd2UpPDw0fEplPj4yKSwtMSE9PSh0dD1xZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoRFtQZStLZSsrXSkpKSkpOyl0dDw2NCYmQWUucHVzaCgoMyZKZSk8PDZ8dHQpO2ZvcihEZT1LKDEyMDEsQWUpLEtlPTA7S2U8RGUu'@; put 'bGVuZ3RoOysrS2UpdWVbbHQrK109RGUuY2hhckF0KEtlKX1lbHNlIG90PTIsdWVbbHQrK109IisiO2Vsc2Ugb3Q9MSx1ZVtsdCsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKERbUGVdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgbWFnaWM6ICIrRysiICIreVtH'@; put 'XSl9fXJldHVybiB1ZS5zbGljZSgwLGx0KS5qb2luKCIiKX0sZW5jb2RlOmZ1bmN0aW9uIEsoRyxELHApe2lmKEc9PT1iJiZmKXJldHVybiBmKEQscCk7aWYoU1tHXSlyZXR1cm4oZj1TW2I9R10pKEQscCk7eCYmQnVmZmVyLmlzQnVmZmVyKEQpJiYoRD1ELnRvU3RyaW5nKCJ1dGY4IikpO3Zh'@; put 'ciBkdCxJPUQubGVuZ3RoLHVlPXg/QnVmZmVyLmFsbG9jVW5zYWZlKDQqSSk6W10sbmU9MCxfZT0wLFBlPTAsb3Q9MCxsdD1oW0ddLFJlPSIiLGFlPSJzdHJpbmciPT10eXBlb2YgRDtpZihsdCYmKGR0PWx0LmVuYykpZm9yKF9lPTA7X2U8STsrK19lLCsrUGUpKG5lPWR0W2FlP0QuY2hhckF0'@; put 'KF9lKTpEW19lXV0pPjI1NT8odWVbUGVdPW5lPj44LHVlWysrUGVdPTI1NSZuZSk6dWVbUGVdPTI1NSZuZTtlbHNle2lmKCEoUmU9eVtHXSkpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgQ1A6ICIrRyk7c3dpdGNoKFJlKXtjYXNlInV0ZjgiOmlmKHgmJmFlKXtQZT0odWU9VShELFJl'@; put 'KSkubGVuZ3RoO2JyZWFrfWZvcihfZT0wO19lPEk7KytfZSwrK1BlKShuZT1hZT9ELmNoYXJDb2RlQXQoX2UpOkRbX2VdLmNoYXJDb2RlQXQoMCkpPD0xMjc/dWVbUGVdPW5lOm5lPD0yMDQ3Pyh1ZVtQZV09MTkyKyhuZT4+NiksdWVbKytQZV09MTI4Kyg2MyZuZSkpOm5lPj01NTI5NiYmbmU8'@; put 'PTU3MzQzPyhuZS09NTUyOTYsb3Q9KGFlP0QuY2hhckNvZGVBdCgrK19lKTpEWysrX2VdLmNoYXJDb2RlQXQoMCkpLTU2MzIwKyhuZTw8MTApLHVlW1BlXT0yNDArKG90Pj4+MTgmNyksdWVbKytQZV09MTQ0KyhvdD4+PjEyJjYzKSx1ZVsrK1BlXT0xMjgrKG90Pj4+NiY2MyksdWVbKytQZV09'@; put 'MTI4Kyg2MyZvdCkpOih1ZVtQZV09MjI0KyhuZT4+MTIpLHVlWysrUGVdPTEyOCsobmU+PjYmNjMpLHVlWysrUGVdPTEyOCsoNjMmbmUpKTticmVhaztjYXNlImFzY2lpIjppZih4JiYic3RyaW5nIj09dHlwZW9mIEQpe1BlPSh1ZT1VKEQsUmUpKS5sZW5ndGg7YnJlYWt9Zm9yKF9lPTA7X2U8'@; put 'STsrK19lLCsrUGUpe2lmKCEoKG5lPWFlP0QuY2hhckNvZGVBdChfZSk6RFtfZV0uY2hhckNvZGVBdCgwKSk8PTEyNykpdGhyb3cgbmV3IEVycm9yKCJiYWQgYXNjaWkgIituZSk7dWVbUGVdPW5lfWJyZWFrO2Nhc2UidXRmMTZsZSI6aWYoeCYmInN0cmluZyI9PXR5cGVvZiBEKXtQZT0odWU9'@; put 'VShELFJlKSkubGVuZ3RoO2JyZWFrfWZvcihfZT0wO19lPEk7KytfZSluZT1hZT9ELmNoYXJDb2RlQXQoX2UpOkRbX2VdLmNoYXJDb2RlQXQoMCksdWVbUGUrK109MjU1Jm5lLHVlW1BlKytdPW5lPj44O2JyZWFrO2Nhc2UidXRmMTZiZSI6Zm9yKF9lPTA7X2U8STsrK19lKW5lPWFlP0QuY2hh'@; put 'ckNvZGVBdChfZSk6RFtfZV0uY2hhckNvZGVBdCgwKSx1ZVtQZSsrXT1uZT4+OCx1ZVtQZSsrXT0yNTUmbmU7YnJlYWs7Y2FzZSJ1dGYzMmxlIjpmb3IoX2U9MDtfZTxJOysrX2UpKG5lPWFlP0QuY2hhckNvZGVBdChfZSk6RFtfZV0uY2hhckNvZGVBdCgwKSk+PTU1Mjk2JiZuZTw9NTczNDMm'@; put 'JihuZT02NTUzNisobmUtNTUyOTY8PDEwKSsoRFsrK19lXS5jaGFyQ29kZUF0KDApLTU2MzIwKSksdWVbUGUrK109MjU1Jm5lLHVlW1BlKytdPTI1NSYobmU+Pj04KSx1ZVtQZSsrXT0yNTUmKG5lPj49OCksdWVbUGUrK109MjU1JihuZT4+PTgpO2JyZWFrO2Nhc2UidXRmMzJiZSI6Zm9yKF9l'@; put 'PTA7X2U8STsrK19lKShuZT1hZT9ELmNoYXJDb2RlQXQoX2UpOkRbX2VdLmNoYXJDb2RlQXQoMCkpPj01NTI5NiYmbmU8PTU3MzQzJiYobmU9NjU1MzYrKG5lLTU1Mjk2PDwxMCkrKERbKytfZV0uY2hhckNvZGVBdCgwKS01NjMyMCkpLHVlW1BlKzNdPTI1NSZuZSx1ZVtQZSsyXT0yNTUmKG5l'@; put 'Pj49OCksdWVbUGUrMV09MjU1JihuZT4+PTgpLHVlW1BlXT0yNTUmKG5lPj49OCksUGUrPTQ7YnJlYWs7Y2FzZSJ1dGY3Ijpmb3IoX2U9MDtfZTxJO19lKyspe3ZhciB4ZT1hZT9ELmNoYXJBdChfZSk6RFtfZV0uY2hhckF0KDApO2lmKCIrIiE9PXhlKWlmKCJBQkNERUZHSElKS0xNTk9QUVJT'@; put 'VFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OScoKSwtLi86PyIuaW5kZXhPZih4ZSk+LTEpdWVbUGUrK109eGUuY2hhckNvZGVBdCgwKTtlbHNle3ZhciBqZT1LKDEyMDEseGUpO3VlW1BlKytdPTQzLHVlW1BlKytdPXFlLmNoYXJDb2RlQXQoamVbMF0+PjIpLHVl'@; put 'W1BlKytdPXFlLmNoYXJDb2RlQXQoKCgzJmplWzBdKTw8NCkrKChqZVsxXXx8MCk+PjQpKSx1ZVtQZSsrXT1xZS5jaGFyQ29kZUF0KCgoMTUmamVbMV0pPDwyKSsoKGplWzJdfHwwKT4+NikpLHVlW1BlKytdPTQ1fWVsc2UgdWVbUGUrK109NDMsdWVbUGUrK109NDV9YnJlYWs7ZGVmYXVsdDp0'@; put 'aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIG1hZ2ljOiAiK0crIiAiK3lbR10pfX1yZXR1cm4gdWU9dWUuc2xpY2UoMCxQZSkseD9wJiYiYnVmIiE9PXA/ImFyciIhPT1wP3VlLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKHVlKTp1ZToic3RyIj09cD91ZS5tYXAoTCkuam9p'@; put 'bigiIik6dWV9LGhhc2NwOmZ1bmN0aW9uKEcpe3JldHVybiEoIWhbR10mJiF5W0ddKX0sbWFnaWM6eSxjYWNoZTprZX0saH0pfSwzMTc5KGZlLGope3ZhciBoLHksYzshZnVuY3Rpb24ocyl7aWYodHlwZW9mIERPX05PVF9FWFBPUlRfSlNaSVA+InUiKWZlLmV4cG9ydHM9cygpO2Vsc2UgaWYo'@; put 'dHlwZW9mIERPX05PVF9FWFBPUlRfSlNaSVA+InUiKUpTWmlwU3luYz1zKCkseT1bXSx2b2lkIDAhPT0oYz0iZnVuY3Rpb24iPT10eXBlb2YoaD1zKT9oLmFwcGx5KGoseSk6aCkmJihmZS5leHBvcnRzPWMpO2Vsc2V7dmFyIEE7dHlwZW9mIGdsb2JhbFRoaXM8InUiP0E9Z2xvYmFsVGhpczp0'@; put 'eXBlb2Ygd2luZG93PCJ1Ij9BPXdpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9BPWdsb2JhbDp0eXBlb2YgJDwidSImJiQuZ2xvYmFsP0E9JC5nbG9iYWw6dHlwZW9mIHNlbGY8InUiJiYoQT1zZWxmKSxBLkpTWmlwU3luYz1zKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBDKHcsUyxM'@; put 'KXtmdW5jdGlvbiBSKEgsVil7aWYoIVNbSF0pe2lmKCF3W0hdKXtpZih4KXJldHVybiB4KEgsITApO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK0grIiciKX12YXIgej1TW0hdPXtleHBvcnRzOnt9fTt3W0hdWzBdLmNhbGwoei5leHBvcnRzLGZ1bmN0aW9uKFkpe3Jl'@; put 'dHVybiBSKHdbSF1bMV1bWV18fFkpfSx6LHouZXhwb3J0cyxDLHcsUyxMKX1yZXR1cm4gU1tIXS5leHBvcnRzfWZvcih2YXIgeD12b2lkIDAsVT0wO1U8TC5sZW5ndGg7VSsrKVIoTFtVXSk7cmV0dXJuIFJ9KHsxOltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPSJBQkNERUZH'@; put 'SElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7Uy5lbmNvZGU9ZnVuY3Rpb24oUix4KXtmb3IodmFyIEgsVixOLHosWSxGLFcsVT0iIixxPTA7cTxSLmxlbmd0aDspej0oSD1SLmNoYXJDb2RlQXQocSsrKSk+PjIsWT0oMyZIKTw8NHwo'@; put 'Vj1SLmNoYXJDb2RlQXQocSsrKSk+PjQsRj0oMTUmVik8PDJ8KE49Ui5jaGFyQ29kZUF0KHErKykpPj42LFc9NjMmTixpc05hTihWKT9GPVc9NjQ6aXNOYU4oTikmJihXPTY0KSxVPVUrTC5jaGFyQXQoeikrTC5jaGFyQXQoWSkrTC5jaGFyQXQoRikrTC5jaGFyQXQoVyk7cmV0dXJuIFV9LFMu'@; put 'ZGVjb2RlPWZ1bmN0aW9uKFIseCl7dmFyIFYsTix6LFksRixXLFU9IiIscT0wO2ZvcihSPVIucmVwbGFjZSgvW15BLVphLXowLTlcK1wvXD1dL2csIiIpO3E8Ui5sZW5ndGg7KXo9TC5pbmRleE9mKFIuY2hhckF0KHErKykpLFY9KDE1JihZPUwuaW5kZXhPZihSLmNoYXJBdChxKyspKSkpPDw0'@; put 'fChGPUwuaW5kZXhPZihSLmNoYXJBdChxKyspKSk+PjIsTj0oMyZGKTw8NnwoVz1MLmluZGV4T2YoUi5jaGFyQXQocSsrKSkpLFUrPVN0cmluZy5mcm9tQ2hhckNvZGUoejw8MnxZPj40KSw2NCE9RiYmKFUrPVN0cmluZy5mcm9tQ2hhckNvZGUoVikpLDY0IT1XJiYoVSs9U3RyaW5nLmZyb21D'@; put 'aGFyQ29kZShOKSk7cmV0dXJuIFV9fSx7fV0sMjpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBMKCl7dGhpcy5jb21wcmVzc2VkU2l6ZT0wLHRoaXMudW5jb21wcmVzc2VkU2l6ZT0wLHRoaXMuY3JjMzI9MCx0aGlzLmNvbXByZXNzaW9uTWV0aG9kPW51bGwsdGhpcy5j'@; put 'b21wcmVzc2VkQ29udGVudD1udWxsfUwucHJvdG90eXBlPXtnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdldENvbXByZXNzZWRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSx3LmV4cG9ydHM9TH0se31dLDM6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7'@; put 'Uy5TVE9SRT17bWFnaWM6IlwwXDAiLGNvbXByZXNzOmZ1bmN0aW9uKEwpe3JldHVybiBMfSx1bmNvbXByZXNzOmZ1bmN0aW9uKEwpe3JldHVybiBMfSxjb21wcmVzc0lucHV0VHlwZTpudWxsLHVuY29tcHJlc3NJbnB1dFR5cGU6bnVsbH0sUy5ERUZMQVRFPUMoIi4vZmxhdGUiKX0seyIuL2Zs'@; put 'YXRlIjo4fV0sNDpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD1DKCIuL3V0aWxzIiksUj1bMCwxOTk2OTU5ODk0LDM5OTM5MTk3ODgsMjU2NzUyNDc5NCwxMjQ2MzQxMzcsMTg4NjA1NzYxNSwzOTE1NjIxNjg1LDI2NTczOTIwMzUsMjQ5MjY4Mjc0LDIwNDQ1MDgzMjQsMzc3'@; put 'MjExNTIzMCwyNTQ3MTc3ODY0LDE2Mjk0MTk5NSwyMTI1NTYxMDIxLDM4ODc2MDcwNDcsMjQyODQ0NDA0OSw0OTg1MzY1NDgsMTc4OTkyNzY2Niw0MDg5MDE2NjQ4LDIyMjcwNjEyMTQsNDUwNTQ4ODYxLDE4NDMyNTg2MDMsNDEwNzU4MDc1MywyMjExNjc3NjM5LDMyNTg4Mzk5MCwxNjg0Nzc3'@; put 'MTUyLDQyNTExMjIwNDIsMjMyMTkyNjYzNiwzMzU2MzM0ODcsMTY2MTM2NTQ2NSw0MTk1MzAyNzU1LDIzNjYxMTUzMTcsOTk3MDczMDk2LDEyODE5NTM4ODYsMzU3OTg1NTMzMiwyNzI0Njg4MjQyLDEwMDY4ODgxNDUsMTI1ODYwNzY4NywzNTI0MTAxNjI5LDI3Njg5NDI0NDMsOTAxMDk3NzIy'@; put 'LDExMTkwMDA2ODQsMzY4NjUxNzIwNiwyODk4MDY1NzI4LDg1MzA0NDQ1MSwxMTcyMjY2MTAxLDM3MDUwMTU3NTksMjg4MjYxNjY2NSw2NTE3Njc5ODAsMTM3MzUwMzU0NiwzMzY5NTU0MzA0LDMyMTgxMDQ1OTgsNTY1NTA3MjUzLDE0NTQ2MjE3MzEsMzQ4NTExMTcwNSwzMDk5NDM2MzAzLDY3'@; put 'MTI2Njk3NCwxNTk0MTk4MDI0LDMzMjI3MzA5MzAsMjk3MDM0NzgxMiw3OTU4MzU1MjcsMTQ4MzIzMDIyNSwzMjQ0MzY3Mjc1LDMwNjAxNDk1NjUsMTk5NDE0NjE5MiwzMTE1ODUzNCwyNTYzOTA3NzcyLDQwMjM3MTc5MzAsMTkwNzQ1OTQ2NSwxMTI2MzcyMTUsMjY4MDE1MzI1MywzOTA0NDI3'@; put 'MDU5LDIwMTM3NzYyOTAsMjUxNzIyMDM2LDI1MTcyMTUzNzQsMzc3NTgzMDA0MCwyMTM3NjU2NzYzLDE0MTM3NjgxMywyNDM5Mjc3NzE5LDM4NjUyNzEyOTcsMTgwMjE5NTQ0NCw0NzY4NjQ4NjYsMjIzODAwMTM2OCw0MDY2NTA4ODc4LDE4MTIzNzA5MjUsNDUzMDkyNzMxLDIxODE2MjUwMjUs'@; put 'NDExMTQ1MTIyMywxNzA2MDg4OTAyLDMxNDA0MjcwNCwyMzQ0NTMyMjAyLDQyNDAwMTc1MzIsMTY1ODY1ODI3MSwzNjY2MTk5NzcsMjM2MjY3MDMyMyw0MjI0OTk0NDA1LDEzMDM1MzU5NjAsOTg0OTYxNDg2LDI3NDcwMDcwOTIsMzU2OTAzNzUzOCwxMjU2MTcwODE3LDEwMzc2MDQzMTEsMjc2'@; put 'NTIxMDczMywzNTU0MDc5OTk1LDExMzEwMTQ1MDYsODc5Njc5OTk2LDI5MDkyNDM0NjIsMzY2Mzc3MTg1NiwxMTQxMTI0NDY3LDg1NTg0MjI3NywyODUyODAxNjMxLDM3MDg2NDg2NDksMTM0MjUzMzk0OCw2NTQ0NTkzMDYsMzE4ODM5NjA0OCwzMzczMDE1MTc0LDE0NjY0Nzk5MDksNTQ0MTc5'@; put 'NjM1LDMxMTA1MjM5MTMsMzQ2MjUyMjAxNSwxNTkxNjcxMDU0LDcwMjEzODc3NiwyOTY2NDYwNDUwLDMzNTI3OTk0MTIsMTUwNDkxODgwNyw3ODM1NTE4NzMsMzA4MjY0MDQ0MywzMjMzNDQyOTg5LDM5ODgyOTIzODQsMjU5NjI1NDY0Niw2MjMxNzA2OCwxOTU3ODEwODQyLDM5Mzk4NDU5NDUs'@; put 'MjY0NzgxNjExMSw4MTQ3MDk5NywxOTQzODAzNTIzLDM4MTQ5MTg5MzAsMjQ4OTU5NjgwNCwyMjUyNzQ0MzAsMjA1Mzc5MDM3NiwzODI2MTc1NzU1LDI0NjY5MDYwMTMsMTY3ODE2NzQzLDIwOTc2NTEzNzcsNDAyNzU1MjU4MCwyMjY1NDkwMzg2LDUwMzQ0NDA3MiwxNzYyMDUwODE0LDQxNTA0'@; put 'MTcyNDUsMjE1NDEyOTM1NSw0MjY1MjIyMjUsMTg1MjUwNzg3OSw0Mjc1MzEzNTI2LDIzMTIzMTc5MjAsMjgyNzUzNjI2LDE3NDI1NTU4NTIsNDE4OTcwODE0MywyMzk0ODc3OTQ1LDM5NzkxNzc2MywxNjIyMTgzNjM3LDM2MDQzOTA4ODgsMjcxNDg2NjU1OCw5NTM3Mjk3MzIsMTM0MDA3NjYy'@; put 'NiwzNTE4NzE5OTg1LDI3OTczNjA5OTksMTA2ODgyODM4MSwxMjE5NjM4ODU5LDM2MjQ3NDE4NTAsMjkzNjY3NTE0OCw5MDYxODU0NjIsMTA5MDgxMjUxMiwzNzQ3NjcyMDAzLDI4MjUzNzk2NjksODI5MzI5MTM1LDExODEzMzUxNjEsMzQxMjE3NzgwNCwzMTYwODM0ODQyLDYyODA4NTQwOCwx'@; put 'MzgyNjA1MzY2LDM0MjMzNjkxMDksMzEzODA3ODQ2Nyw1NzA1NjIyMzMsMTQyNjQwMDgxNSwzMzE3MzE2NTQyLDI5OTg3MzM2MDgsNzMzMjM5OTU0LDE1NTUyNjE5NTYsMzI2ODkzNTU5MSwzMDUwMzYwNjI1LDc1MjQ1OTQwMywxNTQxMzIwMjIxLDI2MDcwNzE5MjAsMzk2NTk3MzAzMCwxOTY5'@; put 'OTIyOTcyLDQwNzM1NDk4LDI2MTc4MzcyMjUsMzk0MzU3NzE1MSwxOTEzMDg3ODc3LDgzOTA4MzcxLDI1MTIzNDE2MzQsMzgwMzc0MDY5MiwyMDc1MjA4NjIyLDIxMzI2MTExMiwyNDYzMjcyNjAzLDM4NTU5OTAyODUsMjA5NDg1NDA3MSwxOTg5NTg4ODEsMjI2MjAyOTAxMiw0MDU3MjYwNjEw'@; put 'LDE3NTkzNTk5OTIsNTM0NDE0MTkwLDIxNzY3MTg1NDEsNDEzOTMyOTExNSwxODczODM2MDAxLDQxNDY2NDU2NywyMjgyMjQ4OTM0LDQyNzkyMDAzNjgsMTcxMTY4NDU1NCwyODUyODExMTYsMjQwNTgwMTcyNyw0MTY3MjE2NzQ1LDE2MzQ0Njc3OTUsMzc2MjI5NzAxLDI2ODUwNjc4OTYsMzYw'@; put 'ODAwNzQwNiwxMzA4OTE4NjEyLDk1NjU0MzkzOCwyODA4NTU1MTA1LDM0OTU5NTgyNjMsMTIzMTYzNjMwMSwxMDQ3NDI3MDM1LDI5MzI5NTk4MTgsMzY1NDcwMzgzNiwxMDg4MzU5MjcwLDkzNjkxOGUzLDI4NDc3MTQ4OTksMzczNjgzNzgyOSwxMjAyOTAwODYzLDgxNzIzMzg5NywzMTgzMzQy'@; put 'MTA4LDM0MDEyMzcxMzAsMTQwNDI3NzU1Miw2MTU4MTgxNTAsMzEzNDIwNzQ5MywzNDUzNDIxMjAzLDE0MjM4NTc0NDksNjAxNDUwNDMxLDMwMDk4Mzc2MTQsMzI5NDcxMDQ1NiwxNTY3MTAzNzQ2LDcxMTkyODcyNCwzMDIwNjY4NDcxLDMyNzIzODAwNjUsMTUxMDMzNDIzNSw3NTUxNjcxMTdd'@; put 'O3cuZXhwb3J0cz1mdW5jdGlvbihVLEgpe2lmKHR5cGVvZiBVPiJ1Inx8IVUubGVuZ3RoKXJldHVybiAwO3ZhciBWPSJzdHJpbmciIT09TC5nZXRUeXBlT2YoVSk7dHlwZW9mIEg+InUiJiYoSD0wKTt2YXIgWT0wO0hePS0xO2Zvcih2YXIgRj0wLFc9VS5sZW5ndGg7RjxXO0YrKylZPVY/VVtG'@; put 'XTpVLmNoYXJDb2RlQXQoRiksSD1IPj4+OF5SWzI1NSYoSF5ZKV07cmV0dXJuLTFeSH19LHsiLi91dGlscyI6MjF9XSw1OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vdXRpbHMiKTtmdW5jdGlvbiBSKHgpe3RoaXMuZGF0YT1udWxsLHRoaXMubGVuZ3RoPTAsdGhp'@; put 'cy5pbmRleD0wfVIucHJvdG90eXBlPXtjaGVja09mZnNldDpmdW5jdGlvbih4KXt0aGlzLmNoZWNrSW5kZXgodGhpcy5pbmRleCt4KX0sY2hlY2tJbmRleDpmdW5jdGlvbih4KXtpZih0aGlzLmxlbmd0aDx4fHx4PDApdGhyb3cgbmV3IEVycm9yKCJFbmQgb2YgZGF0YSByZWFjaGVkIChkYXRh'@; put 'IGxlbmd0aCA9ICIrdGhpcy5sZW5ndGgrIiwgYXNrZWQgaW5kZXggPSAiK3grIikuIENvcnJ1cHRlZCB6aXAgPyIpfSxzZXRJbmRleDpmdW5jdGlvbih4KXt0aGlzLmNoZWNrSW5kZXgoeCksdGhpcy5pbmRleD14fSxza2lwOmZ1bmN0aW9uKHgpe3RoaXMuc2V0SW5kZXgodGhpcy5pbmRleCt4'@; put 'KX0sYnl0ZUF0OmZ1bmN0aW9uKHgpe30scmVhZEludDpmdW5jdGlvbih4KXt2YXIgSCxVPTA7Zm9yKHRoaXMuY2hlY2tPZmZzZXQoeCksSD10aGlzLmluZGV4K3gtMTtIPj10aGlzLmluZGV4O0gtLSlVPShVPDw4KSt0aGlzLmJ5dGVBdChIKTtyZXR1cm4gdGhpcy5pbmRleCs9eCxVfSxyZWFk'@; put 'U3RyaW5nOmZ1bmN0aW9uKHgpe3JldHVybiBMLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMucmVhZERhdGEoeCkpfSxyZWFkRGF0YTpmdW5jdGlvbih4KXt9LGxhc3RJbmRleE9mU2lnbmF0dXJlOmZ1bmN0aW9uKHgpe30scmVhZERhdGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLnJlYWRJbnQo'@; put 'NCk7cmV0dXJuIG5ldyBEYXRlKDE5ODArKHg+PjI1JjEyNyksKHg+PjIxJjE1KS0xLHg+PjE2JjMxLHg+PjExJjMxLHg+PjUmNjMsKDMxJngpPDwxKX19LHcuZXhwb3J0cz1SfSx7Ii4vdXRpbHMiOjIxfV0sNjpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0IjtTLmJhc2U2ND0hMSxTLmJp'@; put 'bmFyeT0hMSxTLmRpcj0hMSxTLmNyZWF0ZUZvbGRlcnM9ITEsUy5kYXRlPW51bGwsUy5jb21wcmVzc2lvbj1udWxsLFMuY29tbWVudD1udWxsfSx7fV0sNzpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD1DKCIuL3V0aWxzIik7Uy5zdHJpbmcyYmluYXJ5PWZ1bmN0aW9uKFIp'@; put 'e3JldHVybiBMLnN0cmluZzJiaW5hcnkoUil9LFMuc3RyaW5nMlVpbnQ4QXJyYXk9ZnVuY3Rpb24oUil7cmV0dXJuIEwudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLFIpfSxTLnVpbnQ4QXJyYXkyU3RyaW5nPWZ1bmN0aW9uKFIpe3JldHVybiBMLnRyYW5zZm9ybVRvKCJzdHJpbmciLFIpfSxT'@; put 'LnN0cmluZzJCbG9iPWZ1bmN0aW9uKFIpe3ZhciB4PUwudHJhbnNmb3JtVG8oImFycmF5YnVmZmVyIixSKTtyZXR1cm4gTC5hcnJheUJ1ZmZlcjJCbG9iKHgpfSxTLmFycmF5QnVmZmVyMkJsb2I9ZnVuY3Rpb24oUil7cmV0dXJuIEwuYXJyYXlCdWZmZXIyQmxvYihSKX0sUy50cmFuc2Zvcm1U'@; put 'bz1mdW5jdGlvbihSLHgpe3JldHVybiBMLnRyYW5zZm9ybVRvKFIseCl9LFMuZ2V0VHlwZU9mPWZ1bmN0aW9uKFIpe3JldHVybiBMLmdldFR5cGVPZihSKX0sUy5jaGVja1N1cHBvcnQ9ZnVuY3Rpb24oUil7cmV0dXJuIEwuY2hlY2tTdXBwb3J0KFIpfSxTLk1BWF9WQUxVRV8xNkJJVFM9TC5N'@; put 'QVhfVkFMVUVfMTZCSVRTLFMuTUFYX1ZBTFVFXzMyQklUUz1MLk1BWF9WQUxVRV8zMkJJVFMsUy5wcmV0dHk9ZnVuY3Rpb24oUil7cmV0dXJuIEwucHJldHR5KFIpfSxTLmZpbmRDb21wcmVzc2lvbj1mdW5jdGlvbihSKXtyZXR1cm4gTC5maW5kQ29tcHJlc3Npb24oUil9LFMuaXNSZWdFeHA9'@; put 'ZnVuY3Rpb24oUil7cmV0dXJuIEwuaXNSZWdFeHAoUil9fSx7Ii4vdXRpbHMiOjIxfV0sODpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD10eXBlb2YgVWludDhBcnJheTwidSImJnR5cGVvZiBVaW50MTZBcnJheTwidSImJnR5cGVvZiBVaW50MzJBcnJheTwidSIsUj1DKCJw'@; put 'YWtvIik7Uy51bmNvbXByZXNzSW5wdXRUeXBlPUw/InVpbnQ4YXJyYXkiOiJhcnJheSIsUy5jb21wcmVzc0lucHV0VHlwZT1MPyJ1aW50OGFycmF5IjoiYXJyYXkiLFMubWFnaWM9IlxiXDAiLFMuY29tcHJlc3M9ZnVuY3Rpb24oeCl7cmV0dXJuIFIuZGVmbGF0ZVJhdyh4KX0sUy51bmNvbXBy'@; put 'ZXNzPWZ1bmN0aW9uKHgpe3JldHVybiBSLmluZmxhdGVSYXcoeCl9fSx7cGFrbzoyNH1dLDk6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7dmFyIEw9QygiLi9iYXNlNjQiKTtmdW5jdGlvbiBSKHgsVSl7aWYoISh0aGlzIGluc3RhbmNlb2YgUikpcmV0dXJuIG5ldyBSKHgsVSk7dGhp'@; put 'cy5maWxlcz17fSx0aGlzLmNvbW1lbnQ9bnVsbCx0aGlzLnJvb3Q9IiIseCYmdGhpcy5sb2FkKHgsVSksdGhpcy5jbG9uZT1mdW5jdGlvbigpe3ZhciBIPW5ldyBSO2Zvcih2YXIgViBpbiB0aGlzKSJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzW1ZdJiYoSFtWXT10aGlzW1ZdKTtyZXR1cm4gSH19'@; put 'KFIucHJvdG90eXBlPUMoIi4vb2JqZWN0IikpLmxvYWQ9QygiLi9sb2FkIiksUi5zdXBwb3J0PUMoIi4vc3VwcG9ydCIpLFIuZGVmYXVsdHM9QygiLi9kZWZhdWx0cyIpLFIudXRpbHM9QygiLi9kZXByZWNhdGVkUHVibGljVXRpbHMiKSxSLmJhc2U2ND17ZW5jb2RlOmZ1bmN0aW9uKHgpe3Jl'@; put 'dHVybiBMLmVuY29kZSh4KX0sZGVjb2RlOmZ1bmN0aW9uKHgpe3JldHVybiBMLmRlY29kZSh4KX19LFIuY29tcHJlc3Npb25zPUMoIi4vY29tcHJlc3Npb25zIiksdy5leHBvcnRzPVJ9LHsiLi9iYXNlNjQiOjEsIi4vY29tcHJlc3Npb25zIjozLCIuL2RlZmF1bHRzIjo2LCIuL2RlcHJlY2F0'@; put 'ZWRQdWJsaWNVdGlscyI6NywiLi9sb2FkIjoxMCwiLi9vYmplY3QiOjEzLCIuL3N1cHBvcnQiOjE3fV0sMTA6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7dmFyIEw9QygiLi9iYXNlNjQiKSxSPUMoIi4vemlwRW50cmllcyIpO3cuZXhwb3J0cz1mdW5jdGlvbih4LFUpe3ZhciBILFYs'@; put 'Tix6O2ZvcigoVT1VfHx7fSkuYmFzZTY0JiYoeD1MLmRlY29kZSh4KSksSD0oVj1uZXcgUih4LFUpKS5maWxlcyxOPTA7TjxILmxlbmd0aDtOKyspdGhpcy5maWxlKCh6PUhbTl0pLmZpbGVOYW1lLHouZGVjb21wcmVzc2VkLHtiaW5hcnk6ITAsb3B0aW1pemVkQmluYXJ5U3RyaW5nOiEwLGRh'@; put 'dGU6ei5kYXRlLGRpcjp6LmRpcixjb21tZW50OnouZmlsZUNvbW1lbnQubGVuZ3RoP3ouZmlsZUNvbW1lbnQ6bnVsbCxjcmVhdGVGb2xkZXJzOlUuY3JlYXRlRm9sZGVyc30pO3JldHVybiBWLnppcENvbW1lbnQubGVuZ3RoJiYodGhpcy5jb21tZW50PVYuemlwQ29tbWVudCksdGhpc319LHsi'@; put 'Li9iYXNlNjQiOjEsIi4vemlwRW50cmllcyI6MjJ9XSwxMTpbZnVuY3Rpb24oQyx3LFMpeyhmdW5jdGlvbihMKXsidXNlIHN0cmljdCI7dmFyIFI9ZnVuY3Rpb24oKXt9O2lmKHR5cGVvZiBMPCJ1Iil7dmFyIHg9IUwuZnJvbTtpZigheCl0cnl7TC5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7'@; put 'eD0hMH1SPXg/ZnVuY3Rpb24oVSxIKXtyZXR1cm4gSD9uZXcgTChVLEgpOm5ldyBMKFUpfTpMLmZyb20uYmluZChMKSxMLmFsbG9jfHwoTC5hbGxvYz1mdW5jdGlvbihVKXtyZXR1cm4gbmV3IEwoVSl9KX13LmV4cG9ydHM9ZnVuY3Rpb24oVSxIKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFU/'@; put 'TC5hbGxvYyhVKTpSKFUsSCl9LHcuZXhwb3J0cy50ZXN0PWZ1bmN0aW9uKFUpe3JldHVybiBMLmlzQnVmZmVyKFUpfX0pLmNhbGwodGhpcyx0eXBlb2YgQnVmZmVyPCJ1Ij9CdWZmZXI6dm9pZCAwKX0se31dLDEyOltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vdWlu'@; put 'dDhBcnJheVJlYWRlciIpO2Z1bmN0aW9uIFIoeCl7dGhpcy5kYXRhPXgsdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmluZGV4PTB9KFIucHJvdG90eXBlPW5ldyBMKS5yZWFkRGF0YT1mdW5jdGlvbih4KXt0aGlzLmNoZWNrT2Zmc2V0KHgpO3ZhciBVPXRoaXMuZGF0YS5zbGlj'@; put 'ZSh0aGlzLmluZGV4LHRoaXMuaW5kZXgreCk7cmV0dXJuIHRoaXMuaW5kZXgrPXgsVX0sdy5leHBvcnRzPVJ9LHsiLi91aW50OEFycmF5UmVhZGVyIjoxOH1dLDEzOltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vc3VwcG9ydCIpLFI9QygiLi91dGlscyIpLHg9Qygi'@; put 'Li9jcmMzMiIpLFU9QygiLi9zaWduYXR1cmUiKSxIPUMoIi4vZGVmYXVsdHMiKSxWPUMoIi4vYmFzZTY0IiksTj1DKCIuL2NvbXByZXNzaW9ucyIpLHo9QygiLi9jb21wcmVzc2VkT2JqZWN0IiksWT1DKCIuL25vZGVCdWZmZXIiKSxGPUMoIi4vdXRmOCIpLFc9QygiLi9zdHJpbmdXcml0ZXIi'@; put 'KSxxPUMoIi4vdWludDhBcnJheVdyaXRlciIpLHJlPWZ1bmN0aW9uKEcpe2lmKEcuX2RhdGEgaW5zdGFuY2VvZiB6JiYoRy5fZGF0YT1HLl9kYXRhLmdldENvbnRlbnQoKSxHLm9wdGlvbnMuYmluYXJ5PSEwLEcub3B0aW9ucy5iYXNlNjQ9ITEsInVpbnQ4YXJyYXkiPT09Ui5nZXRUeXBlT2Yo'@; put 'Ry5fZGF0YSkpKXt2YXIgRD1HLl9kYXRhO0cuX2RhdGE9bmV3IFVpbnQ4QXJyYXkoRC5sZW5ndGgpLDAhPT1ELmxlbmd0aCYmRy5fZGF0YS5zZXQoRCwwKX1yZXR1cm4gRy5fZGF0YX0sbWU9ZnVuY3Rpb24oRyl7dmFyIEQ9cmUoRyk7cmV0dXJuInN0cmluZyI9PT1SLmdldFR5cGVPZihEKT8h'@; put 'Ry5vcHRpb25zLmJpbmFyeSYmTC5ub2RlYnVmZmVyP1koRCwidXRmLTgiKTpHLmFzQmluYXJ5KCk6RH0sQ2U9ZnVuY3Rpb24oRyl7dmFyIEQ9cmUodGhpcyk7cmV0dXJuIG51bGw9PT1EfHx0eXBlb2YgRD4idSI/IiI6KHRoaXMub3B0aW9ucy5iYXNlNjQmJihEPVYuZGVjb2RlKEQpKSxEPUcm'@; put 'JnRoaXMub3B0aW9ucy5iaW5hcnk/Sy51dGY4ZGVjb2RlKEQpOlIudHJhbnNmb3JtVG8oInN0cmluZyIsRCksIUcmJiF0aGlzLm9wdGlvbnMuYmluYXJ5JiYoRD1SLnRyYW5zZm9ybVRvKCJzdHJpbmciLEsudXRmOGVuY29kZShEKSkpLEQpfSxJZT1mdW5jdGlvbihHLEQscCl7dGhpcy5uYW1l'@; put 'PUcsdGhpcy5kaXI9cC5kaXIsdGhpcy5kYXRlPXAuZGF0ZSx0aGlzLmNvbW1lbnQ9cC5jb21tZW50LHRoaXMuX2RhdGE9RCx0aGlzLm9wdGlvbnM9cCx0aGlzLl9pbml0aWFsTWV0YWRhdGE9e2RpcjpwLmRpcixkYXRlOnAuZGF0ZX19O0llLnByb3RvdHlwZT17YXNUZXh0OmZ1bmN0aW9uKCl7'@; put 'cmV0dXJuIENlLmNhbGwodGhpcywhMCl9LGFzQmluYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIENlLmNhbGwodGhpcywhMSl9LGFzTm9kZUJ1ZmZlcjpmdW5jdGlvbigpe3ZhciBHPW1lKHRoaXMpO3JldHVybiBSLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixHKX0sYXNVaW50OEFycmF5OmZ1bmN0'@; put 'aW9uKCl7dmFyIEc9bWUodGhpcyk7cmV0dXJuIFIudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLEcpfSxhc0FycmF5QnVmZmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXNVaW50OEFycmF5KCkuYnVmZmVyfX07dmFyIGtlPWZ1bmN0aW9uKEcsRCl7dmFyIEkscD0iIjtmb3IoST0wO0k8RDtJ'@; put 'KyspcCs9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmRyksRz4+Pj04O3JldHVybiBwfSxxZT1mdW5jdGlvbigpe3ZhciBELHAsRz17fTtmb3IoRD0wO0Q8YXJndW1lbnRzLmxlbmd0aDtEKyspZm9yKHAgaW4gYXJndW1lbnRzW0RdKWFyZ3VtZW50c1tEXS5oYXNPd25Qcm9wZXJ0eShwKSYmdHlw'@; put 'ZW9mIEdbcF0+InUiJiYoR1twXT1hcmd1bWVudHNbRF1bcF0pO3JldHVybiBHfSxmPWZ1bmN0aW9uKEcsRCxwKXt2YXIgdWUsST1SLmdldFR5cGVPZihEKTtpZihwPWZ1bmN0aW9uKEcpe3JldHVybiEwPT09KEc9R3x8e30pLmJhc2U2NCYmbnVsbD09Ry5iaW5hcnkmJihHLmJpbmFyeT0hMCks'@; put 'KEc9cWUoRyxIKSkuZGF0ZT1HLmRhdGV8fG5ldyBEYXRlLG51bGwhPT1HLmNvbXByZXNzaW9uJiYoRy5jb21wcmVzc2lvbj1HLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCkpLEd9KHApLHAuY3JlYXRlRm9sZGVycyYmKHVlPWIoRykpJiZrLmNhbGwodGhpcyx1ZSwhMCkscC5kaXJ8fG51bGw9'@; put 'PT1EfHx0eXBlb2YgRD4idSIpcC5iYXNlNjQ9ITEscC5iaW5hcnk9ITEsRD1udWxsO2Vsc2UgaWYoInN0cmluZyI9PT1JKXAuYmluYXJ5JiYhcC5iYXNlNjQmJiEwIT09cC5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcmJihEPVIuc3RyaW5nMmJpbmFyeShEKSk7ZWxzZXtpZihwLmJhc2U2ND0hMSxw'@; put 'LmJpbmFyeT0hMCwhKEl8fEQgaW5zdGFuY2VvZiB6KSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYXRhIG9mICciK0crIicgaXMgaW4gYW4gdW5zdXBwb3J0ZWQgZm9ybWF0ICEiKTsiYXJyYXlidWZmZXIiPT09SSYmKEQ9Ui50cmFuc2Zvcm1UbygidWludDhhcnJheSIsRCkpfXZhciBuZT1uZXcg'@; put 'SWUoRyxELHApO3JldHVybiB0aGlzLmZpbGVzW0ddPW5lLG5lfSxiPWZ1bmN0aW9uKEcpeyIvIj09Ry5zbGljZSgtMSkmJihHPUcuc3Vic3RyaW5nKDAsRy5sZW5ndGgtMSkpO3ZhciBEPUcubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gRD4wP0cuc3Vic3RyaW5nKDAsRCk6IiJ9LGs9ZnVuY3Rp'@; put 'b24oRyxEKXtyZXR1cm4iLyIhPUcuc2xpY2UoLTEpJiYoRys9Ii8iKSxEPXR5cGVvZiBEPCJ1IiYmRCx0aGlzLmZpbGVzW0ddfHxmLmNhbGwodGhpcyxHLG51bGwse2RpcjohMCxjcmVhdGVGb2xkZXJzOkR9KSx0aGlzLmZpbGVzW0ddfSxNPWZ1bmN0aW9uKEcsRCl7dmFyIEkscD1uZXcgejty'@; put 'ZXR1cm4gRy5fZGF0YSBpbnN0YW5jZW9mIHo/KHAudW5jb21wcmVzc2VkU2l6ZT1HLl9kYXRhLnVuY29tcHJlc3NlZFNpemUscC5jcmMzMj1HLl9kYXRhLmNyYzMyLDA9PT1wLnVuY29tcHJlc3NlZFNpemV8fEcuZGlyPyhEPU4uU1RPUkUscC5jb21wcmVzc2VkQ29udGVudD0iIixwLmNyYzMy'@; put 'PTApOkcuX2RhdGEuY29tcHJlc3Npb25NZXRob2Q9PT1ELm1hZ2ljP3AuY29tcHJlc3NlZENvbnRlbnQ9Ry5fZGF0YS5nZXRDb21wcmVzc2VkQ29udGVudCgpOihJPUcuX2RhdGEuZ2V0Q29udGVudCgpLHAuY29tcHJlc3NlZENvbnRlbnQ9RC5jb21wcmVzcyhSLnRyYW5zZm9ybVRvKEQuY29t'@; put 'cHJlc3NJbnB1dFR5cGUsSSkpKSk6KCghKEk9bWUoRykpfHwwPT09SS5sZW5ndGh8fEcuZGlyKSYmKEQ9Ti5TVE9SRSxJPSIiKSxwLnVuY29tcHJlc3NlZFNpemU9SS5sZW5ndGgscC5jcmMzMj14KEkpLHAuY29tcHJlc3NlZENvbnRlbnQ9RC5jb21wcmVzcyhSLnRyYW5zZm9ybVRvKEQuY29t'@; put 'cHJlc3NJbnB1dFR5cGUsSSkpKSxwLmNvbXByZXNzZWRTaXplPXAuY29tcHJlc3NlZENvbnRlbnQubGVuZ3RoLHAuY29tcHJlc3Npb25NZXRob2Q9RC5tYWdpYyxwfSxCPWZ1bmN0aW9uKEcsRCxwLEkpe3ZhciBSZSxhZSxEZSxGZSxuZT1SLnRyYW5zZm9ybVRvKCJzdHJpbmciLEYudXRmOGVu'@; put 'Y29kZShELm5hbWUpKSxfZT1ELmNvbW1lbnR8fCIiLFBlPVIudHJhbnNmb3JtVG8oInN0cmluZyIsRi51dGY4ZW5jb2RlKF9lKSksb3Q9bmUubGVuZ3RoIT09RC5uYW1lLmxlbmd0aCxsdD1QZS5sZW5ndGghPT1fZS5sZW5ndGgsZHQ9RC5vcHRpb25zLHhlPSIiLGplPSIiLEFlPSIiO0RlPUQu'@; put 'X2luaXRpYWxNZXRhZGF0YS5kaXIhPT1ELmRpcj9ELmRpcjpkdC5kaXIsUmU9KEZlPUQuX2luaXRpYWxNZXRhZGF0YS5kYXRlIT09RC5kYXRlP0QuZGF0ZTpkdC5kYXRlKS5nZXRIb3VycygpLFJlPDw9NixSZXw9RmUuZ2V0TWludXRlcygpLFJlPDw9NSxSZXw9RmUuZ2V0U2Vjb25kcygpLzIs'@; put 'YWU9RmUuZ2V0RnVsbFllYXIoKS0xOTgwLGFlPDw9NCxhZXw9RmUuZ2V0TW9udGgoKSsxLGFlPDw9NSxhZXw9RmUuZ2V0RGF0ZSgpLG90JiYoamU9a2UoMSwxKStrZSh4KG5lKSw0KStuZSx4ZSs9InVwIitrZShqZS5sZW5ndGgsMikramUpLGx0JiYoQWU9a2UoMSwxKStrZSh0aGlzLmNyYzMy'@; put 'KFBlKSw0KStQZSx4ZSs9InVjIitrZShBZS5sZW5ndGgsMikrQWUpO3ZhciBnZT0iIjtyZXR1cm4gZ2UrPSJcblwwIixnZSs9b3R8fGx0PyJcMFxiIjoiXDBcMCIsZ2UrPXAuY29tcHJlc3Npb25NZXRob2QsZ2UrPWtlKFJlLDIpLGdlKz1rZShhZSwyKSxnZSs9a2UocC5jcmMzMiw0KSxnZSs9'@; put 'a2UocC5jb21wcmVzc2VkU2l6ZSw0KSxnZSs9a2UocC51bmNvbXByZXNzZWRTaXplLDQpLGdlKz1rZShuZS5sZW5ndGgsMiksZ2UrPWtlKHhlLmxlbmd0aCwyKSx7ZmlsZVJlY29yZDpVLkxPQ0FMX0ZJTEVfSEVBREVSK2dlK25lK3hlLGRpclJlY29yZDpVLkNFTlRSQUxfRklMRV9IRUFERVIr'@; put 'Ilx4MTRcMCIrZ2Ura2UoUGUubGVuZ3RoLDIpKyJcMFwwXDBcMCIrKCEwPT09RGU/Ilx4MTBcMFwwXDAiOiJcMFwwXDBcMCIpK2tlKEksNCkrbmUreGUrUGUsY29tcHJlc3NlZE9iamVjdDpwfX0sSz17bG9hZDpmdW5jdGlvbihHLEQpe3Rocm93IG5ldyBFcnJvcigiTG9hZCBtZXRob2QgaXMg'@; put 'bm90IGRlZmluZWQuIElzIHRoZSBmaWxlIGpzemlwLWxvYWQuanMgaW5jbHVkZWQgPyIpfSxmaWx0ZXI6ZnVuY3Rpb24oRyl7dmFyIHAsSSx1ZSxuZSxEPVtdO2ZvcihwIGluIHRoaXMuZmlsZXMpdGhpcy5maWxlcy5oYXNPd25Qcm9wZXJ0eShwKSYmKG5lPW5ldyBJZSgodWU9dGhpcy5maWxl'@; put 'c1twXSkubmFtZSx1ZS5fZGF0YSxxZSh1ZS5vcHRpb25zKSksST1wLnNsaWNlKHRoaXMucm9vdC5sZW5ndGgscC5sZW5ndGgpLHAuc2xpY2UoMCx0aGlzLnJvb3QubGVuZ3RoKT09PXRoaXMucm9vdCYmRyhJLG5lKSYmRC5wdXNoKG5lKSk7cmV0dXJuIER9LGZpbGU6ZnVuY3Rpb24oRyxELHAp'@; put 'e2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihSLmlzUmVnRXhwKEcpKXt2YXIgST1HO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbih1ZSxuZSl7cmV0dXJuIW5lLmRpciYmSS50ZXN0KHVlKX0pfXJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbih1ZSxuZSl7cmV0dXJuIW5lLmRpciYm'@; put 'dWU9PT1HfSlbMF18fG51bGx9cmV0dXJuIGYuY2FsbCh0aGlzLEc9dGhpcy5yb290K0csRCxwKSx0aGlzfSxmb2xkZXI6ZnVuY3Rpb24oRyl7aWYoIUcpcmV0dXJuIHRoaXM7aWYoUi5pc1JlZ0V4cChHKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24odWUsbmUpe3JldHVybiBuZS5kaXIm'@; put 'JkcudGVzdCh1ZSl9KTt2YXIgcD1rLmNhbGwodGhpcyx0aGlzLnJvb3QrRyksST10aGlzLmNsb25lKCk7cmV0dXJuIEkucm9vdD1wLm5hbWUsSX0scmVtb3ZlOmZ1bmN0aW9uKEcpe3ZhciBEPXRoaXMuZmlsZXNbRz10aGlzLnJvb3QrR107aWYoRHx8KCIvIiE9Ry5zbGljZSgtMSkmJihHKz0i'@; put 'LyIpLEQ9dGhpcy5maWxlc1tHXSksRCYmIUQuZGlyKWRlbGV0ZSB0aGlzLmZpbGVzW0ddO2Vsc2UgZm9yKHZhciBwPXRoaXMuZmlsdGVyKGZ1bmN0aW9uKHVlLG5lKXtyZXR1cm4gbmUubmFtZS5zbGljZSgwLEcubGVuZ3RoKT09PUd9KSxJPTA7STxwLmxlbmd0aDtJKyspZGVsZXRlIHRoaXMu'@; put 'ZmlsZXNbcFtJXS5uYW1lXTtyZXR1cm4gdGhpc30sZ2VuZXJhdGU6ZnVuY3Rpb24oRyl7Rz1xZShHfHx7fSx7YmFzZTY0OiEwLGNvbXByZXNzaW9uOiJTVE9SRSIsdHlwZToiYmFzZTY0Iixjb21tZW50Om51bGx9KSxSLmNoZWNrU3VwcG9ydChHLnR5cGUpO3ZhciB1ZSxuZSx4ZSxEPVtdLHA9'@; put 'MCxJPTAsX2U9Ui50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnV0ZjhlbmNvZGUoRy5jb21tZW50fHx0aGlzLmNvbW1lbnR8fCIiKSk7Zm9yKHZhciBQZSBpbiB0aGlzLmZpbGVzKWlmKHRoaXMuZmlsZXMuaGFzT3duUHJvcGVydHkoUGUpKXt2YXIgb3Q9dGhpcy5maWxlc1tQZV0sbHQ9b3Qu'@; put 'b3B0aW9ucy5jb21wcmVzc2lvbnx8Ry5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpLGR0PU5bbHRdO2lmKCFkdCl0aHJvdyBuZXcgRXJyb3IobHQrIiBpcyBub3QgYSB2YWxpZCBjb21wcmVzc2lvbiBtZXRob2QgISIpO3ZhciBSZT1NLmNhbGwodGhpcyxvdCxkdCksYWU9Qi5jYWxsKHRoaXMs'@; put 'UGUsb3QsUmUscCk7cCs9YWUuZmlsZVJlY29yZC5sZW5ndGgrUmUuY29tcHJlc3NlZFNpemUsSSs9YWUuZGlyUmVjb3JkLmxlbmd0aCxELnB1c2goYWUpfXhlPVUuQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKyJcMFwwXDBcMCIra2UoRC5sZW5ndGgsMikra2UoRC5sZW5ndGgsMikra2UoSSw0KStr'@; put 'ZShwLDQpK2tlKF9lLmxlbmd0aCwyKStfZTt2YXIgamU9Ry50eXBlLnRvTG93ZXJDYXNlKCk7Zm9yKHVlPSJ1aW50OGFycmF5Ij09PWplfHwiYXJyYXlidWZmZXIiPT09amV8fCJibG9iIj09PWplfHwibm9kZWJ1ZmZlciI9PT1qZT9uZXcgcShwK0kreGUubGVuZ3RoKTpuZXcgVyhwK0kreGUu'@; put 'bGVuZ3RoKSxuZT0wO25lPEQubGVuZ3RoO25lKyspdWUuYXBwZW5kKERbbmVdLmZpbGVSZWNvcmQpLHVlLmFwcGVuZChEW25lXS5jb21wcmVzc2VkT2JqZWN0LmNvbXByZXNzZWRDb250ZW50KTtmb3IobmU9MDtuZTxELmxlbmd0aDtuZSsrKXVlLmFwcGVuZChEW25lXS5kaXJSZWNvcmQpO3Vl'@; put 'LmFwcGVuZCh4ZSk7dmFyIEFlPXVlLmZpbmFsaXplKCk7c3dpdGNoKEcudHlwZS50b0xvd2VyQ2FzZSgpKXtjYXNlInVpbnQ4YXJyYXkiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2Uibm9kZWJ1ZmZlciI6cmV0dXJuIFIudHJhbnNmb3JtVG8oRy50eXBlLnRvTG93ZXJDYXNlKCksQWUpO2Nhc2Ui'@; put 'YmxvYiI6cmV0dXJuIFIuYXJyYXlCdWZmZXIyQmxvYihSLnRyYW5zZm9ybVRvKCJhcnJheWJ1ZmZlciIsQWUpKTtjYXNlImJhc2U2NCI6cmV0dXJuIEcuYmFzZTY0P1YuZW5jb2RlKEFlKTpBZTtkZWZhdWx0OnJldHVybiBBZX19LGNyYzMyOmZ1bmN0aW9uKEcsRCl7cmV0dXJuIHgoRyxEKX0s'@; put 'dXRmOGVuY29kZTpmdW5jdGlvbihHKXtyZXR1cm4gUi50cmFuc2Zvcm1Ubygic3RyaW5nIixGLnV0ZjhlbmNvZGUoRykpfSx1dGY4ZGVjb2RlOmZ1bmN0aW9uKEcpe3JldHVybiBGLnV0ZjhkZWNvZGUoRyl9fTt3LmV4cG9ydHM9S30seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2VkT2JqZWN0'@; put 'IjoyLCIuL2NvbXByZXNzaW9ucyI6MywiLi9jcmMzMiI6NCwiLi9kZWZhdWx0cyI6NiwiLi9ub2RlQnVmZmVyIjoxMSwiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1dyaXRlciI6MTYsIi4vc3VwcG9ydCI6MTcsIi4vdWludDhBcnJheVdyaXRlciI6MTksIi4vdXRmOCI6MjAsIi4vdXRpbHMi'@; put 'OjIxfV0sMTQ6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7Uy5MT0NBTF9GSUxFX0hFQURFUj0iUEtceDAzXHgwNCIsUy5DRU5UUkFMX0ZJTEVfSEVBREVSPSJQS1x4MDFceDAyIixTLkNFTlRSQUxfRElSRUNUT1JZX0VORD0iUEtceDA1XHgwNiIsUy5aSVA2NF9DRU5UUkFMX0RJUkVD'@; put 'VE9SWV9MT0NBVE9SPSJQS1x4MDZceDA3IixTLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORD0iUEtceDA2XHgwNiIsUy5EQVRBX0RFU0NSSVBUT1I9IlBLXHgwN1xiIn0se31dLDE1OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vZGF0YVJlYWRlciIpLFI9Qygi'@; put 'Li91dGlscyIpO2Z1bmN0aW9uIHgoVSxIKXt0aGlzLmRhdGE9VSxIfHwodGhpcy5kYXRhPVIuc3RyaW5nMmJpbmFyeSh0aGlzLmRhdGEpKSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MH0oeC5wcm90b3R5cGU9bmV3IEwpLmJ5dGVBdD1mdW5jdGlvbihVKXtyZXR1'@; put 'cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQoVSl9LHgucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKFUpe3JldHVybiB0aGlzLmRhdGEubGFzdEluZGV4T2YoVSl9LHgucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKFUpe3RoaXMuY2hlY2tPZmZzZXQoVSk7dmFyIEg9'@; put 'dGhpcy5kYXRhLnNsaWNlKHRoaXMuaW5kZXgsdGhpcy5pbmRleCtVKTtyZXR1cm4gdGhpcy5pbmRleCs9VSxIfSx3LmV4cG9ydHM9eH0seyIuL2RhdGFSZWFkZXIiOjUsIi4vdXRpbHMiOjIxfV0sMTY6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7dmFyIEw9QygiLi91dGlscyIpLFI9'@; put 'ZnVuY3Rpb24oKXt0aGlzLmRhdGE9W119O1IucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oeCl7eD1MLnRyYW5zZm9ybVRvKCJzdHJpbmciLHgpLHRoaXMuZGF0YS5wdXNoKHgpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuam9pbigiIil9fSx3LmV4cG9ydHM9Un0s'@; put 'eyIuL3V0aWxzIjoyMX1dLDE3OltmdW5jdGlvbihDLHcsUyl7KGZ1bmN0aW9uKEwpeyJ1c2Ugc3RyaWN0IjtpZihTLmJhc2U2ND0hMCxTLmFycmF5PSEwLFMuc3RyaW5nPSEwLFMuYXJyYXlidWZmZXI9dHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiLFMubm9k'@; put 'ZWJ1ZmZlcj10eXBlb2YgTDwidSIsUy51aW50OGFycmF5PXR5cGVvZiBVaW50OEFycmF5PCJ1Iix0eXBlb2YgQXJyYXlCdWZmZXI+InUiKVMuYmxvYj0hMTtlbHNle3ZhciBSPW5ldyBBcnJheUJ1ZmZlcigwKTt0cnl7Uy5ibG9iPTA9PT1uZXcgQmxvYihbUl0se3R5cGU6ImFwcGxpY2F0aW9u'@; put 'L3ppcCJ9KS5zaXplfWNhdGNoe3RyeXt2YXIgVT1uZXcod2luZG93LkJsb2JCdWlsZGVyfHx3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXJ8fHdpbmRvdy5Nb3pCbG9iQnVpbGRlcnx8d2luZG93Lk1TQmxvYkJ1aWxkZXIpO1UuYXBwZW5kKFIpLFMuYmxvYj0wPT09VS5nZXRCbG9iKCJhcHBsaWNh'@; put 'dGlvbi96aXAiKS5zaXplfWNhdGNoe1MuYmxvYj0hMX19fX0pLmNhbGwodGhpcyx0eXBlb2YgQnVmZmVyPCJ1Ij9CdWZmZXI6dm9pZCAwKX0se31dLDE4OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vZGF0YVJlYWRlciIpO2Z1bmN0aW9uIFIoeCl7eCYmKHRoaXMu'@; put 'ZGF0YT14LHRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGgsdGhpcy5pbmRleD0wKX0oUi5wcm90b3R5cGU9bmV3IEwpLmJ5dGVBdD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kYXRhW3hdfSxSLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbih4KXtmb3IodmFyIFU9'@; put 'eC5jaGFyQ29kZUF0KDApLEg9eC5jaGFyQ29kZUF0KDEpLFY9eC5jaGFyQ29kZUF0KDIpLE49eC5jaGFyQ29kZUF0KDMpLHo9dGhpcy5sZW5ndGgtNDt6Pj0wOy0teilpZih0aGlzLmRhdGFbel09PT1VJiZ0aGlzLmRhdGFbeisxXT09PUgmJnRoaXMuZGF0YVt6KzJdPT09ViYmdGhpcy5kYXRh'@; put 'W3orM109PT1OKXJldHVybiB6O3JldHVybi0xfSxSLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbih4KXtpZih0aGlzLmNoZWNrT2Zmc2V0KHgpLDA9PT14KXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgVT10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy5pbmRleCx0aGlzLmluZGV4K3gp'@; put 'O3JldHVybiB0aGlzLmluZGV4Kz14LFV9LHcuZXhwb3J0cz1SfSx7Ii4vZGF0YVJlYWRlciI6NX1dLDE5OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vdXRpbHMiKSxSPWZ1bmN0aW9uKHgpe3RoaXMuZGF0YT1uZXcgVWludDhBcnJheSh4KSx0aGlzLmluZGV4PTB9'@; put 'O1IucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oeCl7MCE9PXgubGVuZ3RoJiYoeD1MLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5Iix4KSx0aGlzLmRhdGEuc2V0KHgsdGhpcy5pbmRleCksdGhpcy5pbmRleCs9eC5sZW5ndGgpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRh'@; put 'dGF9fSx3LmV4cG9ydHM9Un0seyIuL3V0aWxzIjoyMX1dLDIwOltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO2Zvcih2YXIgTD1DKCIuL3V0aWxzIiksUj1DKCIuL3N1cHBvcnQiKSx4PUMoIi4vbm9kZUJ1ZmZlciIpLFU9bmV3IEFycmF5KDI1NiksSD0wO0g8MjU2O0grKylVW0hdPUg+'@; put 'PTI1Mj82Okg+PTI0OD81Okg+PTI0MD80Okg+PTIyND8zOkg+PTE5Mj8yOjE7VVsyNTRdPVVbMjU0XT0xO3ZhciBOPWZ1bmN0aW9uKFksRil7dmFyIFc7Zm9yKChGPUZ8fFkubGVuZ3RoKT5ZLmxlbmd0aCYmKEY9WS5sZW5ndGgpLFc9Ri0xO1c+PTAmJjEyOD09KDE5MiZZW1ddKTspVy0tO3Jl'@; put 'dHVybiBXPDB8fDA9PT1XP0Y6VytVW1lbV11dPkY/VzpGfSx6PWZ1bmN0aW9uKFkpe3ZhciBXLHEscmUsbWUsQ2U9WS5sZW5ndGgsSWU9bmV3IEFycmF5KDIqQ2UpO2ZvcihxPTAsVz0wO1c8Q2U7KWlmKChyZT1ZW1crK10pPDEyOClJZVtxKytdPXJlO2Vsc2UgaWYoKG1lPVVbcmVdKT40KUll'@; put 'W3ErK109NjU1MzMsVys9bWUtMTtlbHNle2ZvcihyZSY9Mj09PW1lPzMxOjM9PT1tZT8xNTo3O21lPjEmJlc8Q2U7KXJlPXJlPDw2fDYzJllbVysrXSxtZS0tO21lPjE/SWVbcSsrXT02NTUzMzpyZTw2NTUzNj9JZVtxKytdPXJlOihJZVtxKytdPTU1Mjk2fChyZS09NjU1MzYpPj4xMCYxMDIz'@; put 'LEllW3ErK109NTYzMjB8MTAyMyZyZSl9cmV0dXJuIEllLmxlbmd0aCE9PXEmJihJZS5zdWJhcnJheT9JZT1JZS5zdWJhcnJheSgwLHEpOkllLmxlbmd0aD1xKSxMLmFwcGx5RnJvbUNoYXJDb2RlKEllKX07Uy51dGY4ZW5jb2RlPWZ1bmN0aW9uKEYpe3JldHVybiBSLm5vZGVidWZmZXI/eChG'@; put 'LCJ1dGYtOCIpOmZ1bmN0aW9uKFkpe3ZhciBGLFcscSxyZSxtZSxDZT1ZLmxlbmd0aCxJZT0wO2ZvcihyZT0wO3JlPENlO3JlKyspNTUyOTY9PSg2NDUxMiYoVz1ZLmNoYXJDb2RlQXQocmUpKSkmJnJlKzE8Q2UmJjU2MzIwPT0oNjQ1MTImKHE9WS5jaGFyQ29kZUF0KHJlKzEpKSkmJihXPTY1'@; put 'NTM2KyhXLTU1Mjk2PDwxMCkrKHEtNTYzMjApLHJlKyspLEllKz1XPDEyOD8xOlc8MjA0OD8yOlc8NjU1MzY/Mzo0O2ZvcihGPVIudWludDhhcnJheT9uZXcgVWludDhBcnJheShJZSk6bmV3IEFycmF5KEllKSxtZT0wLHJlPTA7bWU8SWU7cmUrKyk1NTI5Nj09KDY0NTEyJihXPVkuY2hhckNv'@; put 'ZGVBdChyZSkpKSYmcmUrMTxDZSYmNTYzMjA9PSg2NDUxMiYocT1ZLmNoYXJDb2RlQXQocmUrMSkpKSYmKFc9NjU1MzYrKFctNTUyOTY8PDEwKSsocS01NjMyMCkscmUrKyksVzwxMjg/RlttZSsrXT1XOlc8MjA0OD8oRlttZSsrXT0xOTJ8Vz4+PjYsRlttZSsrXT0xMjh8NjMmVyk6Vzw2NTUz'@; put 'Nj8oRlttZSsrXT0yMjR8Vz4+PjEyLEZbbWUrK109MTI4fFc+Pj42JjYzLEZbbWUrK109MTI4fDYzJlcpOihGW21lKytdPTI0MHxXPj4+MTgsRlttZSsrXT0xMjh8Vz4+PjEyJjYzLEZbbWUrK109MTI4fFc+Pj42JjYzLEZbbWUrK109MTI4fDYzJlcpO3JldHVybiBGfShGKX0sUy51dGY4ZGVj'@; put 'b2RlPWZ1bmN0aW9uKEYpe2lmKFIubm9kZWJ1ZmZlcilyZXR1cm4gTC50cmFuc2Zvcm1Ubygibm9kZWJ1ZmZlciIsRikudG9TdHJpbmcoInV0Zi04Iik7Zm9yKHZhciBXPVtdLHE9MCxyZT0oRj1MLnRyYW5zZm9ybVRvKFIudWludDhhcnJheT8idWludDhhcnJheSI6ImFycmF5IixGKSkubGVu'@; put 'Z3RoO3E8cmU7KXt2YXIgQ2U9TihGLE1hdGgubWluKHErNjU1MzYscmUpKTtXLnB1c2goeihSLnVpbnQ4YXJyYXk/Ri5zdWJhcnJheShxLENlKTpGLnNsaWNlKHEsQ2UpKSkscT1DZX1yZXR1cm4gVy5qb2luKCIiKX19LHsiLi9ub2RlQnVmZmVyIjoxMSwiLi9zdXBwb3J0IjoxNywiLi91dGls'@; put 'cyI6MjF9XSwyMTpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD1DKCIuL3N1cHBvcnQiKSxSPUMoIi4vY29tcHJlc3Npb25zIikseD1DKCIuL25vZGVCdWZmZXIiKTtmdW5jdGlvbiBVKFkpe3JldHVybiBZfWZ1bmN0aW9uIEgoWSxGKXtmb3IodmFyIFc9MDtXPFkubGVuZ3Ro'@; put 'OysrVylGW1ddPTI1NSZZLmNoYXJDb2RlQXQoVyk7cmV0dXJuIEZ9ZnVuY3Rpb24gVihZKXt2YXIgRj02NTUzNixXPVtdLHE9WS5sZW5ndGgscmU9Uy5nZXRUeXBlT2YoWSksbWU9MCxDZT0hMDt0cnl7c3dpdGNoKHJlKXtjYXNlInVpbnQ4YXJyYXkiOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBw'@; put 'bHkobnVsbCxuZXcgVWludDhBcnJheSgwKSk7YnJlYWs7Y2FzZSJub2RlYnVmZmVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwseCgwKSl9fWNhdGNoe0NlPSExfWlmKCFDZSl7Zm9yKHZhciBJZT0iIixrZT0wO2tlPFkubGVuZ3RoO2tlKyspSWUrPVN0cmluZy5mcm9tQ2hhckNv'@; put 'ZGUoWVtrZV0pO3JldHVybiBJZX1mb3IoO21lPHEmJkY+MTspdHJ5e1cucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsImFycmF5Ij09PXJlfHwibm9kZWJ1ZmZlciI9PT1yZT9ZLnNsaWNlKG1lLE1hdGgubWluKG1lK0YscSkpOlkuc3ViYXJyYXkobWUsTWF0aC5taW4obWUr'@; put 'RixxKSkpKSxtZSs9Rn1jYXRjaHtGPU1hdGguZmxvb3IoRi8yKX1yZXR1cm4gVy5qb2luKCIiKX1mdW5jdGlvbiBOKFksRil7Zm9yKHZhciBXPTA7VzxZLmxlbmd0aDtXKyspRltXXT1ZW1ddO3JldHVybiBGfVMuc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihZKXtmb3IodmFyIEY9IiIsVz0wO1c8'@; put 'WS5sZW5ndGg7VysrKUYrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JlkuY2hhckNvZGVBdChXKSk7cmV0dXJuIEZ9LFMuYXJyYXlCdWZmZXIyQmxvYj1mdW5jdGlvbihZKXtTLmNoZWNrU3VwcG9ydCgiYmxvYiIpO3RyeXtyZXR1cm4gbmV3IEJsb2IoW1ldLHt0eXBlOiJhcHBsaWNhdGlvbi96'@; put 'aXAifSl9Y2F0Y2h7dHJ5e3ZhciBXPW5ldyh3aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcik7cmV0dXJuIFcuYXBwZW5kKFkpLFcuZ2V0QmxvYigiYXBwbGljYXRpb24vemlwIil9'@; put 'Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJCdWcgOiBjYW4ndCBjb25zdHJ1Y3QgdGhlIEJsb2IuIil9fX0sUy5hcHBseUZyb21DaGFyQ29kZT1WO3ZhciB6PXt9O3ouc3RyaW5nPXtzdHJpbmc6VSxhcnJheTpmdW5jdGlvbihZKXtyZXR1cm4gSChZLG5ldyBBcnJheShZLmxlbmd0aCkpfSxhcnJh'@; put 'eWJ1ZmZlcjpmdW5jdGlvbihZKXtyZXR1cm4gei5zdHJpbmcudWludDhhcnJheShZKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIEgoWSxuZXcgVWludDhBcnJheShZLmxlbmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiBIKFkseChZLmxlbmd0aCkp'@; put 'fX0sei5hcnJheT17c3RyaW5nOlYsYXJyYXk6VSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihZKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWSkuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKFkpe3JldHVybiBuZXcgVWludDhBcnJheShZKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihZKXtyZXR1cm4g'@; put 'eChZKX19LHouYXJyYXlidWZmZXI9e3N0cmluZzpmdW5jdGlvbihZKXtyZXR1cm4gVihuZXcgVWludDhBcnJheShZKSl9LGFycmF5OmZ1bmN0aW9uKFkpe3JldHVybiBOKG5ldyBVaW50OEFycmF5KFkpLG5ldyBBcnJheShZLmJ5dGVMZW5ndGgpKX0sYXJyYXlidWZmZXI6VSx1aW50OGFycmF5'@; put 'OmZ1bmN0aW9uKFkpe3JldHVybiBuZXcgVWludDhBcnJheShZKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihZKXtyZXR1cm4geChuZXcgVWludDhBcnJheShZKSl9fSx6LnVpbnQ4YXJyYXk9e3N0cmluZzpWLGFycmF5OmZ1bmN0aW9uKFkpe3JldHVybiBOKFksbmV3IEFycmF5KFkubGVuZ3RoKSl9'@; put 'LGFycmF5YnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiBZLmJ1ZmZlcn0sdWludDhhcnJheTpVLG5vZGVidWZmZXI6ZnVuY3Rpb24oWSl7cmV0dXJuIHgoWSl9fSx6Lm5vZGVidWZmZXI9e3N0cmluZzpWLGFycmF5OmZ1bmN0aW9uKFkpe3JldHVybiBOKFksbmV3IEFycmF5KFkubGVuZ3RoKSl9'@; put 'LGFycmF5YnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiB6Lm5vZGVidWZmZXIudWludDhhcnJheShZKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIE4oWSxuZXcgVWludDhBcnJheShZLmxlbmd0aCkpfSxub2RlYnVmZmVyOlV9LFMudHJhbnNmb3JtVG89ZnVuY3Rpb24o'@; put 'WSxGKXtpZihGfHwoRj0iIiksIVkpcmV0dXJuIEY7Uy5jaGVja1N1cHBvcnQoWSk7dmFyIFc9Uy5nZXRUeXBlT2YoRik7cmV0dXJuIHpbV11bWV0oRil9LFMuZ2V0VHlwZU9mPWZ1bmN0aW9uKFkpe3JldHVybiJzdHJpbmciPT10eXBlb2YgWT8ic3RyaW5nIjoiW29iamVjdCBBcnJheV0iPT09'@; put 'T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFkpPyJhcnJheSI6TC5ub2RlYnVmZmVyJiZ4LnRlc3QoWSk/Im5vZGVidWZmZXIiOkwudWludDhhcnJheSYmWSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/InVpbnQ4YXJyYXkiOkwuYXJyYXlidWZmZXImJlkgaW5zdGFuY2VvZiBBcnJheUJ1'@; put 'ZmZlcj8iYXJyYXlidWZmZXIiOnZvaWQgMH0sUy5jaGVja1N1cHBvcnQ9ZnVuY3Rpb24oWSl7aWYoIUxbWS50b0xvd2VyQ2FzZSgpXSl0aHJvdyBuZXcgRXJyb3IoWSsiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyIil9LFMuTUFYX1ZBTFVFXzE2QklUUz02NTUzNSxTLk1BWF9W'@; put 'QUxVRV8zMkJJVFM9LTEsUy5wcmV0dHk9ZnVuY3Rpb24oWSl7dmFyIFcscSxGPSIiO2ZvcihxPTA7cTwoWXx8IiIpLmxlbmd0aDtxKyspRis9IlxceCIrKChXPVkuY2hhckNvZGVBdChxKSk8MTY/IjAiOiIiKStXLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBGfSxTLmZpbmRD'@; put 'b21wcmVzc2lvbj1mdW5jdGlvbihZKXtmb3IodmFyIEYgaW4gUilpZihSLmhhc093blByb3BlcnR5KEYpJiZSW0ZdLm1hZ2ljPT09WSlyZXR1cm4gUltGXTtyZXR1cm4gbnVsbH0sUy5pc1JlZ0V4cD1mdW5jdGlvbihZKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5'@; put 'cGUudG9TdHJpbmcuY2FsbChZKX19LHsiLi9jb21wcmVzc2lvbnMiOjMsIi4vbm9kZUJ1ZmZlciI6MTEsIi4vc3VwcG9ydCI6MTd9XSwyMjpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD1DKCIuL3N0cmluZ1JlYWRlciIpLFI9QygiLi9ub2RlQnVmZmVyUmVhZGVyIikseD1D'@; put 'KCIuL3VpbnQ4QXJyYXlSZWFkZXIiKSxVPUMoIi4vdXRpbHMiKSxIPUMoIi4vc2lnbmF0dXJlIiksVj1DKCIuL3ppcEVudHJ5IiksTj1DKCIuL3N1cHBvcnQiKSx6PUMoIi4vb2JqZWN0Iik7ZnVuY3Rpb24gWShGLFcpe3RoaXMuZmlsZXM9W10sdGhpcy5sb2FkT3B0aW9ucz1XLEYmJnRoaXMu'@; put 'bG9hZChGKX1ZLnByb3RvdHlwZT17Y2hlY2tTaWduYXR1cmU6ZnVuY3Rpb24oRil7dmFyIFc9dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KTtpZihXIT09Ril0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgb3IgYnVnIDogdW5leHBlY3RlZCBzaWduYXR1cmUgKCIrVS5wcmV0dHkoVykr'@; put 'IiwgZXhwZWN0ZWQgIitVLnByZXR0eShGKSsiKSIpfSxyZWFkQmxvY2tFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLmRpc2tOdW1iZXI9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50'@; put 'cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuY2VudHJhbERpck9mZnNldD10aGlzLnJl'@; put 'YWRlci5yZWFkSW50KDQpLHRoaXMuemlwQ29tbWVudExlbmd0aD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuemlwQ29tbWVudD10aGlzLnJlYWRlci5yZWFkU3RyaW5nKHRoaXMuemlwQ29tbWVudExlbmd0aCksdGhpcy56aXBDb21tZW50PXoudXRmOGRlY29kZSh0aGlzLnppcENvbW1l'@; put 'bnQpfSxyZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3RoaXMuemlwNjRFbmRPZkNlbnRyYWxTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy52ZXJzaW9uTWFkZUJ5PXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoMiksdGhpcy52ZXJzaW9uTmVlZGVkPXRoaXMucmVh'@; put 'ZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhp'@; put 'cy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGE9e307Zm9yKHZh'@; put 'ciBxLHJlLG1lLEY9dGhpcy56aXA2NEVuZE9mQ2VudHJhbFNpemUtNDQ7MDxGOylxPXRoaXMucmVhZGVyLnJlYWRJbnQoMikscmU9dGhpcy5yZWFkZXIucmVhZEludCg0KSxtZT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKHJlKSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGFbcV09e2lkOnEsbGVu'@; put 'Z3RoOnJlLHZhbHVlOm1lfX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWxMb2NhdG9yOmZ1bmN0aW9uKCl7aWYodGhpcy5kaXNrV2l0aFppcDY0Q2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlwNjRDZW50cmFsRGlyPXRo'@; put 'aXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5kaXNrc0NvdW50PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5kaXNrc0NvdW50PjEpdGhyb3cgbmV3IEVycm9yKCJNdWx0aS12b2x1bWVzIHppcCBhcmUgbm90IHN1cHBvcnRlZCIpfSxyZWFkTG9jYWxGaWxlczpmdW5jdGlvbigpe3ZhciBG'@; put 'LFc7Zm9yKEY9MDtGPHRoaXMuZmlsZXMubGVuZ3RoO0YrKyl0aGlzLnJlYWRlci5zZXRJbmRleCgoVz10aGlzLmZpbGVzW0ZdKS5sb2NhbEhlYWRlck9mZnNldCksdGhpcy5jaGVja1NpZ25hdHVyZShILkxPQ0FMX0ZJTEVfSEVBREVSKSxXLnJlYWRMb2NhbFBhcnQodGhpcy5yZWFkZXIpLFcu'@; put 'aGFuZGxlVVRGOCgpfSxyZWFkQ2VudHJhbERpcjpmdW5jdGlvbigpe3ZhciBGO2Zvcih0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLmNlbnRyYWxEaXJPZmZzZXQpO3RoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk9PT1ILkNFTlRSQUxfRklMRV9IRUFERVI7KShGPW5ldyBWKHt6aXA2NDp0aGlz'@; put 'LnppcDY0fSx0aGlzLmxvYWRPcHRpb25zKSkucmVhZENlbnRyYWxQYXJ0KHRoaXMucmVhZGVyKSx0aGlzLmZpbGVzLnB1c2goRil9LHJlYWRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt2YXIgRj10aGlzLnJlYWRlci5sYXN0SW5kZXhPZlNpZ25hdHVyZShILkNFTlRSQUxfRElSRUNUT1JZX0VO'@; put 'RCk7aWYoLTE9PT1GKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IGNhbid0IGZpbmQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5Iik7aWYodGhpcy5yZWFkZXIuc2V0SW5kZXgoRiksdGhpcy5jaGVja1NpZ25hdHVyZShILkNFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFk'@; put 'QmxvY2tFbmRPZkNlbnRyYWwoKSx0aGlzLmRpc2tOdW1iZXI9PT1VLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9PT1VLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPT09VS5NQVhfVkFMVUVfMTZCSVRTfHx0'@; put 'aGlzLmNlbnRyYWxEaXJSZWNvcmRzPT09VS5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJTaXplPT09VS5NQVhfVkFMVUVfMzJCSVRTfHx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9PT1VLk1BWF9WQUxVRV8zMkJJVFMpe2lmKHRoaXMuemlwNjQ9ITAsLTE9PT0oRj10aGlzLnJlYWRl'@; put 'ci5sYXN0SW5kZXhPZlNpZ25hdHVyZShILlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1IpKSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjYW4ndCBmaW5kIHRoZSBaSVA2NCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgbG9jYXRvciIpO3RoaXMucmVhZGVyLnNldElu'@; put 'ZGV4KEYpLHRoaXMuY2hlY2tTaWduYXR1cmUoSC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSx0aGlzLnJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcigpLHRoaXMucmVhZGVyLnNldEluZGV4KHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpciks'@; put 'dGhpcy5jaGVja1NpZ25hdHVyZShILlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbCgpfX0scHJlcGFyZVJlYWRlcjpmdW5jdGlvbihGKXt2YXIgVz1VLmdldFR5cGVPZihGKTt0aGlzLnJlYWRlcj0ic3RyaW5nIiE9PVd8fE4udWlu'@; put 'dDhhcnJheT8ibm9kZWJ1ZmZlciI9PT1XP25ldyBSKEYpOm5ldyB4KFUudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLEYpKTpuZXcgTChGLHRoaXMubG9hZE9wdGlvbnMub3B0aW1pemVkQmluYXJ5U3RyaW5nKX0sbG9hZDpmdW5jdGlvbihGKXt0aGlzLnByZXBhcmVSZWFkZXIoRiksdGhpcy5y'@; put 'ZWFkRW5kT2ZDZW50cmFsKCksdGhpcy5yZWFkQ2VudHJhbERpcigpLHRoaXMucmVhZExvY2FsRmlsZXMoKX19LHcuZXhwb3J0cz1ZfSx7Ii4vbm9kZUJ1ZmZlclJlYWRlciI6MTIsIi4vb2JqZWN0IjoxMywiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1JlYWRlciI6MTUsIi4vc3VwcG9ydCI6'@; put 'MTcsIi4vdWludDhBcnJheVJlYWRlciI6MTgsIi4vdXRpbHMiOjIxLCIuL3ppcEVudHJ5IjoyM31dLDIzOltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vc3RyaW5nUmVhZGVyIiksUj1DKCIuL3V0aWxzIikseD1DKCIuL2NvbXByZXNzZWRPYmplY3QiKSxVPUMoIi4v'@; put 'b2JqZWN0Iik7ZnVuY3Rpb24gSChWLE4pe3RoaXMub3B0aW9ucz1WLHRoaXMubG9hZE9wdGlvbnM9Tn1ILnByb3RvdHlwZT17aXNFbmNyeXB0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKDEmfnRoaXMuYml0RmxhZyl9LHVzZVVURjg6ZnVuY3Rpb24oKXtyZXR1cm4hKDIwNDgmfnRoaXMuYml0Rmxh'@; put 'Zyl9LHByZXBhcmVDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbihWLE4seil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFk9Vi5pbmRleDtWLnNldEluZGV4KE4pO3ZhciBGPVYucmVhZERhdGEoeik7cmV0dXJuIFYuc2V0SW5kZXgoWSksRn19LHByZXBhcmVDb250ZW50OmZ1bmN0aW9uKFYsTix6'@; put 'LFksRil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFc9Ui50cmFuc2Zvcm1UbyhZLnVuY29tcHJlc3NJbnB1dFR5cGUsdGhpcy5nZXRDb21wcmVzc2VkQ29udGVudCgpKSxxPVkudW5jb21wcmVzcyhXKTtpZihxLmxlbmd0aCE9PUYpdGhyb3cgbmV3IEVycm9yKCJCdWcgOiB1bmNvbXByZXNzZWQg'@; put 'ZGF0YSBzaXplIG1pc21hdGNoIik7cmV0dXJuIHF9fSxyZWFkTG9jYWxQYXJ0OmZ1bmN0aW9uKFYpe3ZhciBOLHo7aWYoVi5za2lwKDIyKSx0aGlzLmZpbGVOYW1lTGVuZ3RoPVYucmVhZEludCgyKSx6PVYucmVhZEludCgyKSx0aGlzLmZpbGVOYW1lPVYucmVhZFN0cmluZyh0aGlzLmZpbGVO'@; put 'YW1lTGVuZ3RoKSxWLnNraXAoeiksLTE9PXRoaXMuY29tcHJlc3NlZFNpemV8fC0xPT10aGlzLnVuY29tcHJlc3NlZFNpemUpdGhyb3cgbmV3IEVycm9yKCJCdWcgb3IgY29ycnVwdGVkIHppcCA6IGRpZG4ndCBnZXQgZW5vdWdoIGluZm9ybWF0aW9ucyBmcm9tIHRoZSBjZW50cmFsIGRpcmVj'@; put 'dG9yeSAoY29tcHJlc3NlZFNpemUgPT0gLTEgfHwgdW5jb21wcmVzc2VkU2l6ZSA9PSAtMSkiKTtpZihudWxsPT09KE49Ui5maW5kQ29tcHJlc3Npb24odGhpcy5jb21wcmVzc2lvbk1ldGhvZCkpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IGNvbXByZXNzaW9uICIrUi5wcmV0'@; put 'dHkodGhpcy5jb21wcmVzc2lvbk1ldGhvZCkrIiB1bmtub3duIChpbm5lciBmaWxlIDogIit0aGlzLmZpbGVOYW1lKyIpIik7aWYodGhpcy5kZWNvbXByZXNzZWQ9bmV3IHgsdGhpcy5kZWNvbXByZXNzZWQuY29tcHJlc3NlZFNpemU9dGhpcy5jb21wcmVzc2VkU2l6ZSx0aGlzLmRlY29tcHJl'@; put 'c3NlZC51bmNvbXByZXNzZWRTaXplPXRoaXMudW5jb21wcmVzc2VkU2l6ZSx0aGlzLmRlY29tcHJlc3NlZC5jcmMzMj10aGlzLmNyYzMyLHRoaXMuZGVjb21wcmVzc2VkLmNvbXByZXNzaW9uTWV0aG9kPXRoaXMuY29tcHJlc3Npb25NZXRob2QsdGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29tcHJl'@; put 'c3NlZENvbnRlbnQ9dGhpcy5wcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQoVixWLmluZGV4LHRoaXMuY29tcHJlc3NlZFNpemUsTiksdGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29udGVudD10aGlzLnByZXBhcmVDb250ZW50KFYsVi5pbmRleCx0aGlzLmNvbXByZXNzZWRTaXplLE4sdGhpcy51bmNv'@; put 'bXByZXNzZWRTaXplKSx0aGlzLmxvYWRPcHRpb25zLmNoZWNrQ1JDMzImJih0aGlzLmRlY29tcHJlc3NlZD1SLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbnRlbnQoKSksVS5jcmMzMih0aGlzLmRlY29tcHJlc3NlZCkhPT10aGlzLmNyYzMyKSl0aHJvdyBu'@; put 'ZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBDUkMzMiBtaXNtYXRjaCIpfSxyZWFkQ2VudHJhbFBhcnQ6ZnVuY3Rpb24oVil7aWYodGhpcy52ZXJzaW9uTWFkZUJ5PVYucmVhZFN0cmluZygyKSx0aGlzLnZlcnNpb25OZWVkZWQ9Vi5yZWFkSW50KDIpLHRoaXMuYml0RmxhZz1WLnJlYWRJbnQo'@; put 'MiksdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1WLnJlYWRTdHJpbmcoMiksdGhpcy5kYXRlPVYucmVhZERhdGUoKSx0aGlzLmNyYzMyPVYucmVhZEludCg0KSx0aGlzLmNvbXByZXNzZWRTaXplPVYucmVhZEludCg0KSx0aGlzLnVuY29tcHJlc3NlZFNpemU9Vi5yZWFkSW50KDQpLHRoaXMuZmls'@; put 'ZU5hbWVMZW5ndGg9Vi5yZWFkSW50KDIpLHRoaXMuZXh0cmFGaWVsZHNMZW5ndGg9Vi5yZWFkSW50KDIpLHRoaXMuZmlsZUNvbW1lbnRMZW5ndGg9Vi5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlclN0YXJ0PVYucmVhZEludCgyKSx0aGlzLmludGVybmFsRmlsZUF0dHJpYnV0ZXM9Vi5yZWFk'@; put 'SW50KDIpLHRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcz1WLnJlYWRJbnQoNCksdGhpcy5sb2NhbEhlYWRlck9mZnNldD1WLnJlYWRJbnQoNCksdGhpcy5pc0VuY3J5cHRlZCgpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGVkIHppcCBhcmUgbm90IHN1cHBvcnRlZCIpO3RoaXMuZmlsZU5h'@; put 'bWU9Vi5yZWFkU3RyaW5nKHRoaXMuZmlsZU5hbWVMZW5ndGgpLHRoaXMucmVhZEV4dHJhRmllbGRzKFYpLHRoaXMucGFyc2VaSVA2NEV4dHJhRmllbGQoViksdGhpcy5maWxlQ29tbWVudD1WLnJlYWRTdHJpbmcodGhpcy5maWxlQ29tbWVudExlbmd0aCksdGhpcy5kaXI9ISEoMTYmdGhpcy5l'@; put 'eHRlcm5hbEZpbGVBdHRyaWJ1dGVzKX0scGFyc2VaSVA2NEV4dHJhRmllbGQ6ZnVuY3Rpb24oVil7aWYodGhpcy5leHRyYUZpZWxkc1sxXSl7dmFyIE49bmV3IEwodGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09Ui5NQVhfVkFMVUVfMzJCSVRTJiYo'@; put 'dGhpcy51bmNvbXByZXNzZWRTaXplPU4ucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PVIuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9Ti5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09Ui5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5s'@; put 'b2NhbEhlYWRlck9mZnNldD1OLnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09Ui5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9Ti5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihWKXt2YXIgeixZLEYsTj1WLmluZGV4O2Zvcih0'@; put 'aGlzLmV4dHJhRmllbGRzPXRoaXMuZXh0cmFGaWVsZHN8fHt9O1YuaW5kZXg8Tit0aGlzLmV4dHJhRmllbGRzTGVuZ3RoOyl6PVYucmVhZEludCgyKSxZPVYucmVhZEludCgyKSxGPVYucmVhZFN0cmluZyhZKSx0aGlzLmV4dHJhRmllbGRzW3pdPXtpZDp6LGxlbmd0aDpZLHZhbHVlOkZ9fSxo'@; put 'YW5kbGVVVEY4OmZ1bmN0aW9uKCl7aWYodGhpcy51c2VVVEY4KCkpdGhpcy5maWxlTmFtZT1VLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudD1VLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgVj10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29k'@; put 'ZVBhdGgoKTtudWxsIT09ViYmKHRoaXMuZmlsZU5hbWU9Vik7dmFyIE49dGhpcy5maW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50KCk7bnVsbCE9PU4mJih0aGlzLmZpbGVDb21tZW50PU4pfX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5jdGlvbigpe3ZhciBWPXRoaXMuZXh0cmFG'@; put 'aWVsZHNbMjg3ODldO2lmKFYpe3ZhciBOPW5ldyBMKFYudmFsdWUpO3JldHVybiAxIT09Ti5yZWFkSW50KDEpfHxVLmNyYzMyKHRoaXMuZmlsZU5hbWUpIT09Ti5yZWFkSW50KDQpP251bGw6VS51dGY4ZGVjb2RlKE4ucmVhZFN0cmluZyhWLmxlbmd0aC01KSl9cmV0dXJuIG51bGx9LGZpbmRF'@; put 'eHRyYUZpZWxkVW5pY29kZUNvbW1lbnQ6ZnVuY3Rpb24oKXt2YXIgVj10aGlzLmV4dHJhRmllbGRzWzI1NDYxXTtpZihWKXt2YXIgTj1uZXcgTChWLnZhbHVlKTtyZXR1cm4gMSE9PU4ucmVhZEludCgxKXx8VS5jcmMzMih0aGlzLmZpbGVDb21tZW50KSE9PU4ucmVhZEludCg0KT9udWxsOlUu'@; put 'dXRmOGRlY29kZShOLnJlYWRTdHJpbmcoVi5sZW5ndGgtNSkpfXJldHVybiBudWxsfX0sdy5leHBvcnRzPUh9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL29iamVjdCI6MTMsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi91dGlscyI6MjF9XSwyNDpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3Ry'@; put 'aWN0Ijt2YXIgSD17fTsoMCxDKCIuL2xpYi91dGlscy9jb21tb24iKS5hc3NpZ24pKEgsQygiLi9saWIvZGVmbGF0ZSIpLEMoIi4vbGliL2luZmxhdGUiKSxDKCIuL2xpYi96bGliL2NvbnN0YW50cyIpKSx3LmV4cG9ydHM9SH0seyIuL2xpYi9kZWZsYXRlIjoyNSwiLi9saWIvaW5mbGF0ZSI6'@; put 'MjYsIi4vbGliL3V0aWxzL2NvbW1vbiI6MjcsIi4vbGliL3psaWIvY29uc3RhbnRzIjozMH1dLDI1OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vemxpYi9kZWZsYXRlLmpzIiksUj1DKCIuL3V0aWxzL2NvbW1vbiIpLHg9QygiLi91dGlscy9zdHJpbmdzIiksVT1D'@; put 'KCIuL3psaWIvbWVzc2FnZXMiKSxIPUMoIi4vemxpYi96c3RyZWFtIikscmU9ZnVuY3Rpb24oa2Upe3RoaXMub3B0aW9ucz1SLmFzc2lnbih7bGV2ZWw6LTEsbWV0aG9kOjgsY2h1bmtTaXplOjE2Mzg0LHdpbmRvd0JpdHM6MTUsbWVtTGV2ZWw6OCxzdHJhdGVneTowLHRvOiIifSxrZXx8e30p'@; put 'O3ZhciBxZT10aGlzLm9wdGlvbnM7cWUucmF3JiZxZS53aW5kb3dCaXRzPjA/cWUud2luZG93Qml0cz0tcWUud2luZG93Qml0czpxZS5nemlwJiZxZS53aW5kb3dCaXRzPjAmJnFlLndpbmRvd0JpdHM8MTYmJihxZS53aW5kb3dCaXRzKz0xNiksdGhpcy5lcnI9MCx0aGlzLm1zZz0iIix0aGlz'@; put 'LmVuZGVkPSExLHRoaXMuY2h1bmtzPVtdLHRoaXMuc3RybT1uZXcgSCx0aGlzLnN0cm0uYXZhaWxfb3V0PTA7dmFyIFg9TC5kZWZsYXRlSW5pdDIodGhpcy5zdHJtLHFlLmxldmVsLHFlLm1ldGhvZCxxZS53aW5kb3dCaXRzLHFlLm1lbUxldmVsLHFlLnN0cmF0ZWd5KTtpZigwIT09WCl0aHJv'@; put 'dyBuZXcgRXJyb3IoVVtYXSk7cWUuaGVhZGVyJiZMLmRlZmxhdGVTZXRIZWFkZXIodGhpcy5zdHJtLHFlLmhlYWRlcil9O2Z1bmN0aW9uIG1lKGtlLHFlKXt2YXIgWD1uZXcgcmUocWUpO2lmKFgucHVzaChrZSwhMCksWC5lcnIpdGhyb3cgWC5tc2c7cmV0dXJuIFgucmVzdWx0fXJlLnByb3Rv'@; put 'dHlwZS5wdXNoPWZ1bmN0aW9uKGtlLHFlKXt2YXIgYixrLFg9dGhpcy5zdHJtLGY9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtpZih0aGlzLmVuZGVkKXJldHVybiExO2s9cWU9PT1+fnFlP3FlOiEwPT09cWU/NDowLFguaW5wdXQ9InN0cmluZyI9PXR5cGVvZiBrZT94LnN0cmluZzJidWYoa2Up'@; put 'OmtlLFgubmV4dF9pbj0wLFguYXZhaWxfaW49WC5pbnB1dC5sZW5ndGg7ZG97aWYoMD09PVguYXZhaWxfb3V0JiYoWC5vdXRwdXQ9bmV3IFIuQnVmOChmKSxYLm5leHRfb3V0PTAsWC5hdmFpbF9vdXQ9ZiksMSE9PShiPUwuZGVmbGF0ZShYLGspKSYmMCE9PWIpcmV0dXJuIHRoaXMub25FbmQo'@; put 'YiksdGhpcy5lbmRlZD0hMCwhMTsoMD09PVguYXZhaWxfb3V0fHwwPT09WC5hdmFpbF9pbiYmND09PWspJiZ0aGlzLm9uRGF0YSgic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz94LmJ1ZjJiaW5zdHJpbmcoUi5zaHJpbmtCdWYoWC5vdXRwdXQsWC5uZXh0X291dCkpOlIuc2hyaW5rQnVmKFgu'@; put 'b3V0cHV0LFgubmV4dF9vdXQpKX13aGlsZSgoWC5hdmFpbF9pbj4wfHwwPT09WC5hdmFpbF9vdXQpJiYxIT09Yik7cmV0dXJuIDQhPT1rfHwoYj1MLmRlZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKGIpLHRoaXMuZW5kZWQ9ITAsMD09PWIpfSxyZS5wcm90b3R5cGUub25EYXRhPWZ1'@; put 'bmN0aW9uKGtlKXt0aGlzLmNodW5rcy5wdXNoKGtlKX0scmUucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGtlKXswPT09a2UmJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpSLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0'@; put 'aGlzLmNodW5rcz1bXSx0aGlzLmVycj1rZSx0aGlzLm1zZz10aGlzLnN0cm0ubXNnfSxTLkRlZmxhdGU9cmUsUy5kZWZsYXRlPW1lLFMuZGVmbGF0ZVJhdz1mdW5jdGlvbiBDZShrZSxxZSl7cmV0dXJuKHFlPXFlfHx7fSkucmF3PSEwLG1lKGtlLHFlKX0sUy5nemlwPWZ1bmN0aW9uIEllKGtl'@; put 'LHFlKXtyZXR1cm4ocWU9cWV8fHt9KS5nemlwPSEwLG1lKGtlLHFlKX19LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmluZ3MiOjI4LCIuL3psaWIvZGVmbGF0ZS5qcyI6MzIsIi4vemxpYi9tZXNzYWdlcyI6MzcsIi4vemxpYi96c3RyZWFtIjozOX1dLDI2OltmdW5jdGlvbihD'@; put 'LHcsUyl7InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4vemxpYi9pbmZsYXRlLmpzIiksUj1DKCIuL3V0aWxzL2NvbW1vbiIpLHg9QygiLi91dGlscy9zdHJpbmdzIiksVT1DKCIuL3psaWIvY29uc3RhbnRzIiksSD1DKCIuL3psaWIvbWVzc2FnZXMiKSxWPUMoIi4vemxpYi96c3RyZWFtIiksTj1D'@; put 'KCIuL3psaWIvZ3poZWFkZXIiKSx6PWZ1bmN0aW9uKFcpe3RoaXMub3B0aW9ucz1SLmFzc2lnbih7Y2h1bmtTaXplOjE2Mzg0LHdpbmRvd0JpdHM6MCx0bzoiIn0sV3x8e30pO3ZhciBxPXRoaXMub3B0aW9ucztxLnJhdyYmcS53aW5kb3dCaXRzPj0wJiZxLndpbmRvd0JpdHM8MTYmJihxLndp'@; put 'bmRvd0JpdHM9LXEud2luZG93Qml0cywwPT09cS53aW5kb3dCaXRzJiYocS53aW5kb3dCaXRzPS0xNSkpLHEud2luZG93Qml0cz49MCYmcS53aW5kb3dCaXRzPDE2JiYhKFcmJlcud2luZG93Qml0cykmJihxLndpbmRvd0JpdHMrPTMyKSxxLndpbmRvd0JpdHM+MTUmJnEud2luZG93Qml0czw0'@; put 'OCYmISgxNSZxLndpbmRvd0JpdHMpJiYocS53aW5kb3dCaXRzfD0xNSksdGhpcy5lcnI9MCx0aGlzLm1zZz0iIix0aGlzLmVuZGVkPSExLHRoaXMuY2h1bmtzPVtdLHRoaXMuc3RybT1uZXcgVix0aGlzLnN0cm0uYXZhaWxfb3V0PTA7dmFyIHJlPUwuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSxx'@; put 'LndpbmRvd0JpdHMpO2lmKHJlIT09VS5aX09LKXRocm93IG5ldyBFcnJvcihIW3JlXSk7dGhpcy5oZWFkZXI9bmV3IE4sTC5pbmZsYXRlR2V0SGVhZGVyKHRoaXMuc3RybSx0aGlzLmhlYWRlcil9O2Z1bmN0aW9uIFkoVyxxKXt2YXIgcmU9bmV3IHoocSk7aWYocmUucHVzaChXLCEwKSxyZS5l'@; put 'cnIpdGhyb3cgcmUubXNnO3JldHVybiByZS5yZXN1bHR9ei5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihXLHEpe3ZhciBDZSxJZSxrZSxxZSxYLHJlPXRoaXMuc3RybSxtZT10aGlzLm9wdGlvbnMuY2h1bmtTaXplO2lmKHRoaXMuZW5kZWQpcmV0dXJuITE7SWU9cT09PX5+cT9xOiEwPT09cT9V'@; put 'LlpfRklOSVNIOlUuWl9OT19GTFVTSCxyZS5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIFc/eC5iaW5zdHJpbmcyYnVmKFcpOlcscmUubmV4dF9pbj0wLHJlLmF2YWlsX2luPXJlLmlucHV0Lmxlbmd0aDtkb3tpZigwPT09cmUuYXZhaWxfb3V0JiYocmUub3V0cHV0PW5ldyBSLkJ1ZjgobWUpLHJl'@; put 'Lm5leHRfb3V0PTAscmUuYXZhaWxfb3V0PW1lKSwoQ2U9TC5pbmZsYXRlKHJlLFUuWl9OT19GTFVTSCkpIT09VS5aX1NUUkVBTV9FTkQmJkNlIT09VS5aX09LKXJldHVybiB0aGlzLm9uRW5kKENlKSx0aGlzLmVuZGVkPSEwLCExO3JlLm5leHRfb3V0JiYoMD09PXJlLmF2YWlsX291dHx8Q2U9'@; put 'PT1VLlpfU1RSRUFNX0VORHx8MD09PXJlLmF2YWlsX2luJiZJZT09PVUuWl9GSU5JU0gpJiYoInN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/KGtlPXgudXRmOGJvcmRlcihyZS5vdXRwdXQscmUubmV4dF9vdXQpLHFlPXJlLm5leHRfb3V0LWtlLFg9eC5idWYyc3RyaW5nKHJlLm91dHB1dCxr'@; put 'ZSkscmUubmV4dF9vdXQ9cWUscmUuYXZhaWxfb3V0PW1lLXFlLHFlJiZSLmFycmF5U2V0KHJlLm91dHB1dCxyZS5vdXRwdXQsa2UscWUsMCksdGhpcy5vbkRhdGEoWCkpOnRoaXMub25EYXRhKFIuc2hyaW5rQnVmKHJlLm91dHB1dCxyZS5uZXh0X291dCkpKX13aGlsZShyZS5hdmFpbF9pbj4w'@; put 'JiZDZSE9PVUuWl9TVFJFQU1fRU5EKTtyZXR1cm4gQ2U9PT1VLlpfU1RSRUFNX0VORCYmKEllPVUuWl9GSU5JU0gpLEllIT09VS5aX0ZJTklTSHx8KENlPUwuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoQ2UpLHRoaXMuZW5kZWQ9ITAsQ2U9PT1VLlpfT0spfSx6LnByb3RvdHlw'@; put 'ZS5vbkRhdGE9ZnVuY3Rpb24oVyl7dGhpcy5jaHVua3MucHVzaChXKX0sei5wcm90b3R5cGUub25FbmQ9ZnVuY3Rpb24oVyl7Vz09PVUuWl9PSyYmKHRoaXMucmVzdWx0PSJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP3RoaXMuY2h1bmtzLmpvaW4oIiIpOlIuZmxhdHRlbkNodW5rcyh0aGlz'@; put 'LmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPVcsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30sUy5JbmZsYXRlPXosUy5pbmZsYXRlPVksUy5pbmZsYXRlUmF3PWZ1bmN0aW9uIEYoVyxxKXtyZXR1cm4ocT1xfHx7fSkucmF3PSEwLFkoVyxxKX0sUy51bmd6aXA9WX0seyIuL3V0aWxz'@; put 'L2NvbW1vbiI6MjcsIi4vdXRpbHMvc3RyaW5ncyI6MjgsIi4vemxpYi9jb25zdGFudHMiOjMwLCIuL3psaWIvZ3poZWFkZXIiOjMzLCIuL3psaWIvaW5mbGF0ZS5qcyI6MzUsIi4vemxpYi9tZXNzYWdlcyI6MzcsIi4vemxpYi96c3RyZWFtIjozOX1dLDI3OltmdW5jdGlvbihDLHcsUyl7InVz'@; put 'ZSBzdHJpY3QiO3ZhciBMPXR5cGVvZiBVaW50OEFycmF5PCJ1IiYmdHlwZW9mIFVpbnQxNkFycmF5PCJ1IiYmdHlwZW9mIEludDMyQXJyYXk8InUiO1MuYXNzaWduPWZ1bmN0aW9uKFUpe2Zvcih2YXIgSD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7SC5sZW5ndGg7'@; put 'KXt2YXIgVj1ILnNoaWZ0KCk7aWYoVil7aWYoIm9iamVjdCIhPXR5cGVvZiBWKXRocm93IG5ldyBUeXBlRXJyb3IoVisibXVzdCBiZSBub24tb2JqZWN0Iik7Zm9yKHZhciBOIGluIFYpVi5oYXNPd25Qcm9wZXJ0eShOKSYmKFVbTl09VltOXSl9fXJldHVybiBVfSxTLnNocmlua0J1Zj1mdW5j'@; put 'dGlvbihVLEgpe3JldHVybiBVLmxlbmd0aD09PUg/VTpVLnN1YmFycmF5P1Uuc3ViYXJyYXkoMCxIKTooVS5sZW5ndGg9SCxVKX07dmFyIFI9e2FycmF5U2V0OmZ1bmN0aW9uKFUsSCxWLE4seil7aWYoSC5zdWJhcnJheSYmVS5zdWJhcnJheSlVLnNldChILnN1YmFycmF5KFYsVitOKSx6KTtl'@; put 'bHNlIGZvcih2YXIgWT0wO1k8TjtZKyspVVt6K1ldPUhbVitZXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihVKXt2YXIgSCxWLE4seixZLEY7Zm9yKE49MCxIPTAsVj1VLmxlbmd0aDtIPFY7SCsrKU4rPVVbSF0ubGVuZ3RoO2ZvcihGPW5ldyBVaW50OEFycmF5KE4pLHo9MCxIPTAsVj1VLmxl'@; put 'bmd0aDtIPFY7SCsrKUYuc2V0KFk9VVtIXSx6KSx6Kz1ZLmxlbmd0aDtyZXR1cm4gRn19LHg9e2FycmF5U2V0OmZ1bmN0aW9uKFUsSCxWLE4seil7Zm9yKHZhciBZPTA7WTxOO1krKylVW3orWV09SFtWK1ldfSxmbGF0dGVuQ2h1bmtzOmZ1bmN0aW9uKFUpe3JldHVybltdLmNvbmNhdC5hcHBs'@; put 'eShbXSxVKX19O1Muc2V0VHlwZWQ9ZnVuY3Rpb24oVSl7VT8oUy5CdWY4PVVpbnQ4QXJyYXksUy5CdWYxNj1VaW50MTZBcnJheSxTLkJ1ZjMyPUludDMyQXJyYXksUy5hc3NpZ24oUyxSKSk6KFMuQnVmOD1BcnJheSxTLkJ1ZjE2PUFycmF5LFMuQnVmMzI9QXJyYXksUy5hc3NpZ24oUyx4KSl9'@; put 'LFMuc2V0VHlwZWQoTCl9LHt9XSwyODpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD1DKCIuL2NvbW1vbiIpLFI9ITAseD0hMDt0cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLFswXSl9Y2F0Y2h7Uj0hMX10cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShu'@; put 'dWxsLG5ldyBVaW50OEFycmF5KDEpKX1jYXRjaHt4PSExfWZvcih2YXIgVT1uZXcgTC5CdWY4KDI1NiksSD0wO0g8MjU2O0grKylVW0hdPUg+PTI1Mj82Okg+PTI0OD81Okg+PTI0MD80Okg+PTIyND8zOkg+PTE5Mj8yOjE7ZnVuY3Rpb24gVihOLHope2lmKHo8NjU1MzcmJihOLnN1YmFycmF5'@; put 'JiZ4fHwhTi5zdWJhcnJheSYmUikpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxMLnNocmlua0J1ZihOLHopKTtmb3IodmFyIFk9IiIsRj0wO0Y8ejtGKyspWSs9U3RyaW5nLmZyb21DaGFyQ29kZShOW0ZdKTtyZXR1cm4gWX1VWzI1NF09VVsyNTRdPTEsUy5zdHJpbmcy'@; put 'YnVmPWZ1bmN0aW9uKE4pe3ZhciB6LFksRixXLHEscmU9Ti5sZW5ndGgsbWU9MDtmb3IoVz0wO1c8cmU7VysrKTU1Mjk2PT0oNjQ1MTImKFk9Ti5jaGFyQ29kZUF0KFcpKSkmJlcrMTxyZSYmNTYzMjA9PSg2NDUxMiYoRj1OLmNoYXJDb2RlQXQoVysxKSkpJiYoWT02NTUzNisoWS01NTI5Njw8'@; put 'MTApKyhGLTU2MzIwKSxXKyspLG1lKz1ZPDEyOD8xOlk8MjA0OD8yOlk8NjU1MzY/Mzo0O2Zvcih6PW5ldyBMLkJ1ZjgobWUpLHE9MCxXPTA7cTxtZTtXKyspNTUyOTY9PSg2NDUxMiYoWT1OLmNoYXJDb2RlQXQoVykpKSYmVysxPHJlJiY1NjMyMD09KDY0NTEyJihGPU4uY2hhckNvZGVBdChX'@; put 'KzEpKSkmJihZPTY1NTM2KyhZLTU1Mjk2PDwxMCkrKEYtNTYzMjApLFcrKyksWTwxMjg/eltxKytdPVk6WTwyMDQ4Pyh6W3ErK109MTkyfFk+Pj42LHpbcSsrXT0xMjh8NjMmWSk6WTw2NTUzNj8oeltxKytdPTIyNHxZPj4+MTIseltxKytdPTEyOHxZPj4+NiY2Myx6W3ErK109MTI4fDYzJlkp'@; put 'Oih6W3ErK109MjQwfFk+Pj4xOCx6W3ErK109MTI4fFk+Pj4xMiY2Myx6W3ErK109MTI4fFk+Pj42JjYzLHpbcSsrXT0xMjh8NjMmWSk7cmV0dXJuIHp9LFMuYnVmMmJpbnN0cmluZz1mdW5jdGlvbihOKXtyZXR1cm4gVihOLE4ubGVuZ3RoKX0sUy5iaW5zdHJpbmcyYnVmPWZ1bmN0aW9uKE4p'@; put 'e2Zvcih2YXIgej1uZXcgTC5CdWY4KE4ubGVuZ3RoKSxZPTAsRj16Lmxlbmd0aDtZPEY7WSsrKXpbWV09Ti5jaGFyQ29kZUF0KFkpO3JldHVybiB6fSxTLmJ1ZjJzdHJpbmc9ZnVuY3Rpb24oTix6KXt2YXIgWSxGLFcscSxyZT16fHxOLmxlbmd0aCxtZT1uZXcgQXJyYXkoMipyZSk7Zm9yKEY9'@; put 'MCxZPTA7WTxyZTspaWYoKFc9TltZKytdKTwxMjgpbWVbRisrXT1XO2Vsc2UgaWYoKHE9VVtXXSk+NCltZVtGKytdPTY1NTMzLFkrPXEtMTtlbHNle2ZvcihXJj0yPT09cT8zMTozPT09cT8xNTo3O3E+MSYmWTxyZTspVz1XPDw2fDYzJk5bWSsrXSxxLS07cT4xP21lW0YrK109NjU1MzM6Vzw2'@; put 'NTUzNj9tZVtGKytdPVc6KG1lW0YrK109NTUyOTZ8KFctPTY1NTM2KT4+MTAmMTAyMyxtZVtGKytdPTU2MzIwfDEwMjMmVyl9cmV0dXJuIFYobWUsRil9LFMudXRmOGJvcmRlcj1mdW5jdGlvbihOLHope3ZhciBZO2Zvcigoej16fHxOLmxlbmd0aCk+Ti5sZW5ndGgmJih6PU4ubGVuZ3RoKSxZ'@; put 'PXotMTtZPj0wJiYxMjg9PSgxOTImTltZXSk7KVktLTtyZXR1cm4gWTwwfHwwPT09WT96OlkrVVtOW1ldXT56P1k6en19LHsiLi9jb21tb24iOjI3fV0sMjk6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7dy5leHBvcnRzPWZ1bmN0aW9uIEwoUix4LFUsSCl7Zm9yKHZhciBWPTY1NTM1'@; put 'JlIsTj1SPj4+MTYmNjU1MzUsej0wOzAhPT1VOyl7VS09ej1VPjJlMz8yZTM6VTtkb3tOPU4rKFY9Vit4W0grK118MCl8MH13aGlsZSgtLXopO1YlPTY1NTIxLE4lPTY1NTIxfXJldHVybiBWfE48PDE2fX0se31dLDMwOltmdW5jdGlvbihDLHcsUyl7dy5leHBvcnRzPXtaX05PX0ZMVVNIOjAs'@; put 'Wl9QQVJUSUFMX0ZMVVNIOjEsWl9TWU5DX0ZMVVNIOjIsWl9GVUxMX0ZMVVNIOjMsWl9GSU5JU0g6NCxaX0JMT0NLOjUsWl9UUkVFUzo2LFpfT0s6MCxaX1NUUkVBTV9FTkQ6MSxaX05FRURfRElDVDoyLFpfRVJSTk86LTEsWl9TVFJFQU1fRVJST1I6LTIsWl9EQVRBX0VSUk9SOi0zLFpfQlVG'@; put 'X0VSUk9SOi01LFpfTk9fQ09NUFJFU1NJT046MCxaX0JFU1RfU1BFRUQ6MSxaX0JFU1RfQ09NUFJFU1NJT046OSxaX0RFRkFVTFRfQ09NUFJFU1NJT046LTEsWl9GSUxURVJFRDoxLFpfSFVGRk1BTl9PTkxZOjIsWl9STEU6MyxaX0ZJWEVEOjQsWl9ERUZBVUxUX1NUUkFURUdZOjAsWl9CSU5B'@; put 'Ulk6MCxaX1RFWFQ6MSxaX1VOS05PV046MixaX0RFRkxBVEVEOjh9fSx7fV0sMzE6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7dmFyIFI9ZnVuY3Rpb24gTCgpe2Zvcih2YXIgVSxIPVtdLFY9MDtWPDI1NjtWKyspe1U9Vjtmb3IodmFyIE49MDtOPDg7TisrKVU9MSZVPzM5ODgyOTIz'@; put 'ODReVT4+PjE6VT4+PjE7SFtWXT1VfXJldHVybiBIfSgpO3cuZXhwb3J0cz1mdW5jdGlvbiB4KFUsSCxWLE4pe3ZhciB6PVIsWT1OK1Y7VV49LTE7Zm9yKHZhciBGPU47RjxZO0YrKylVPVU+Pj44XnpbMjU1JihVXkhbRl0pXTtyZXR1cm4tMV5VfX0se31dLDMyOltmdW5jdGlvbihDLHcsUyl7'@; put 'InVzZSBzdHJpY3QiO3ZhciBMPUMoIi4uL3V0aWxzL2NvbW1vbiIpLFI9QygiLi90cmVlcyIpLHg9QygiLi9hZGxlcjMyIiksVT1DKCIuL2NyYzMyIiksSD1DKCIuL21lc3NhZ2VzIiksZHQ9MjYyO2Z1bmN0aW9uIEtlKEdlLFV0KXtyZXR1cm4gR2UubXNnPUhbVXRdLFV0fWZ1bmN0aW9uICR0'@; put 'KEdlKXtyZXR1cm4oR2U8PDEpLShHZT40Pzk6MCl9ZnVuY3Rpb24gUnQoR2Upe2Zvcih2YXIgVXQ9R2UubGVuZ3RoOy0tVXQ+PTA7KUdlW1V0XT0wfWZ1bmN0aW9uIEx0KEdlKXt2YXIgVXQ9R2Uuc3RhdGUsdnI9VXQucGVuZGluZzt2cj5HZS5hdmFpbF9vdXQmJih2cj1HZS5hdmFpbF9vdXQp'@; put 'LDAhPT12ciYmKEwuYXJyYXlTZXQoR2Uub3V0cHV0LFV0LnBlbmRpbmdfYnVmLFV0LnBlbmRpbmdfb3V0LHZyLEdlLm5leHRfb3V0KSxHZS5uZXh0X291dCs9dnIsVXQucGVuZGluZ19vdXQrPXZyLEdlLnRvdGFsX291dCs9dnIsR2UuYXZhaWxfb3V0LT12cixVdC5wZW5kaW5nLT12ciwwPT09'@; put 'VXQucGVuZGluZyYmKFV0LnBlbmRpbmdfb3V0PTApKX1mdW5jdGlvbiBHdChHZSxVdCl7Ui5fdHJfZmx1c2hfYmxvY2soR2UsR2UuYmxvY2tfc3RhcnQ+PTA/R2UuYmxvY2tfc3RhcnQ6LTEsR2Uuc3Ryc3RhcnQtR2UuYmxvY2tfc3RhcnQsVXQpLEdlLmJsb2NrX3N0YXJ0PUdlLnN0cnN0YXJ0'@; put 'LEx0KEdlLnN0cm0pfWZ1bmN0aW9uIGd0KEdlLFV0KXtHZS5wZW5kaW5nX2J1ZltHZS5wZW5kaW5nKytdPVV0fWZ1bmN0aW9uIFh0KEdlLFV0KXtHZS5wZW5kaW5nX2J1ZltHZS5wZW5kaW5nKytdPVV0Pj4+OCYyNTUsR2UucGVuZGluZ19idWZbR2UucGVuZGluZysrXT0yNTUmVXR9ZnVuY3Rp'@; put 'b24gTHIoR2UsVXQsdnIseHQpe3ZhciBCdD1HZS5hdmFpbF9pbjtyZXR1cm4gQnQ+eHQmJihCdD14dCksMD09PUJ0PzA6KEdlLmF2YWlsX2luLT1CdCxMLmFycmF5U2V0KFV0LEdlLmlucHV0LEdlLm5leHRfaW4sQnQsdnIpLDE9PT1HZS5zdGF0ZS53cmFwP0dlLmFkbGVyPXgoR2UuYWRsZXIs'@; put 'VXQsQnQsdnIpOjI9PT1HZS5zdGF0ZS53cmFwJiYoR2UuYWRsZXI9VShHZS5hZGxlcixVdCxCdCx2cikpLEdlLm5leHRfaW4rPUJ0LEdlLnRvdGFsX2luKz1CdCxCdCl9ZnVuY3Rpb24gbG4oR2UsVXQpe3ZhciBCdCx6bix2cj1HZS5tYXhfY2hhaW5fbGVuZ3RoLHh0PUdlLnN0cnN0YXJ0LEdu'@; put 'PUdlLnByZXZfbGVuZ3RoLHluPUdlLm5pY2VfbWF0Y2gsdmk9R2Uuc3Ryc3RhcnQ+R2Uud19zaXplLWR0P0dlLnN0cnN0YXJ0LShHZS53X3NpemUtZHQpOjAscnI9R2Uud2luZG93LGhyPUdlLndfbWFzayxwbz1HZS5wcmV2LHZuPUdlLnN0cnN0YXJ0KzI1OCxCbj1yclt4dCtHbi0xXSxqYT1y'@; put 'clt4dCtHbl07R2UucHJldl9sZW5ndGg+PUdlLmdvb2RfbWF0Y2gmJih2cj4+PTIpLHluPkdlLmxvb2thaGVhZCYmKHluPUdlLmxvb2thaGVhZCk7ZG97aWYocnJbKEJ0PVV0KStHbl09PT1qYSYmcnJbQnQrR24tMV09PT1CbiYmcnJbQnRdPT09cnJbeHRdJiZyclsrK0J0XT09PXJyW3h0KzFd'@; put 'KXt4dCs9MixCdCsrO2Rve313aGlsZShyclsrK3h0XT09PXJyWysrQnRdJiZyclsrK3h0XT09PXJyWysrQnRdJiZyclsrK3h0XT09PXJyWysrQnRdJiZyclsrK3h0XT09PXJyWysrQnRdJiZyclsrK3h0XT09PXJyWysrQnRdJiZyclsrK3h0XT09PXJyWysrQnRdJiZyclsrK3h0XT09PXJyWysr'@; put 'QnRdJiZyclsrK3h0XT09PXJyWysrQnRdJiZ4dDx2bik7aWYoem49MjU4LSh2bi14dCkseHQ9dm4tMjU4LHpuPkduKXtpZihHZS5tYXRjaF9zdGFydD1VdCxHbj16bix6bj49eW4pYnJlYWs7Qm49cnJbeHQrR24tMV0samE9cnJbeHQrR25dfX19d2hpbGUoKFV0PXBvW1V0JmhyXSk+dmkmJjAh'@; put 'PT0tLXZyKTtyZXR1cm4gR248PUdlLmxvb2thaGVhZD9HbjpHZS5sb29rYWhlYWR9ZnVuY3Rpb24gT24oR2Upe3ZhciB2cix4dCxCdCx6bixHbixVdD1HZS53X3NpemU7ZG97aWYoem49R2Uud2luZG93X3NpemUtR2UubG9va2FoZWFkLUdlLnN0cnN0YXJ0LEdlLnN0cnN0YXJ0Pj1VdCsoVXQt'@; put 'ZHQpKXtMLmFycmF5U2V0KEdlLndpbmRvdyxHZS53aW5kb3csVXQsVXQsMCksR2UubWF0Y2hfc3RhcnQtPVV0LEdlLnN0cnN0YXJ0LT1VdCxHZS5ibG9ja19zdGFydC09VXQsdnI9eHQ9R2UuaGFzaF9zaXplO2Rve0J0PUdlLmhlYWRbLS12cl0sR2UuaGVhZFt2cl09QnQ+PVV0P0J0LVV0OjB9'@; put 'd2hpbGUoLS14dCk7dnI9eHQ9VXQ7ZG97QnQ9R2UucHJldlstLXZyXSxHZS5wcmV2W3ZyXT1CdD49VXQ/QnQtVXQ6MH13aGlsZSgtLXh0KTt6bis9VXR9aWYoMD09PUdlLnN0cm0uYXZhaWxfaW4pYnJlYWs7aWYoeHQ9THIoR2Uuc3RybSxHZS53aW5kb3csR2Uuc3Ryc3RhcnQrR2UubG9va2Fo'@; put 'ZWFkLHpuKSxHZS5sb29rYWhlYWQrPXh0LEdlLmxvb2thaGVhZCtHZS5pbnNlcnQ+PTMpZm9yKEdlLmluc19oPUdlLndpbmRvd1tHbj1HZS5zdHJzdGFydC1HZS5pbnNlcnRdLEdlLmluc19oPShHZS5pbnNfaDw8R2UuaGFzaF9zaGlmdF5HZS53aW5kb3dbR24rMV0pJkdlLmhhc2hfbWFzaztH'@; put 'ZS5pbnNlcnQmJihHZS5pbnNfaD0oR2UuaW5zX2g8PEdlLmhhc2hfc2hpZnReR2Uud2luZG93W0duKzMtMV0pJkdlLmhhc2hfbWFzayxHZS5wcmV2W0duJkdlLndfbWFza109R2UuaGVhZFtHZS5pbnNfaF0sR2UuaGVhZFtHZS5pbnNfaF09R24sR24rKyxHZS5pbnNlcnQtLSwhKEdlLmxvb2th'@; put 'aGVhZCtHZS5pbnNlcnQ8MykpOyk7fXdoaWxlKEdlLmxvb2thaGVhZDxkdCYmMCE9PUdlLnN0cm0uYXZhaWxfaW4pfWZ1bmN0aW9uIHRyKEdlLFV0KXtmb3IodmFyIHZyLHh0Ozspe2lmKEdlLmxvb2thaGVhZDxkdCl7aWYoT24oR2UpLEdlLmxvb2thaGVhZDxkdCYmMD09PVV0KXJldHVybiAx'@; put 'O2lmKDA9PT1HZS5sb29rYWhlYWQpYnJlYWt9aWYodnI9MCxHZS5sb29rYWhlYWQ+PTMmJihHZS5pbnNfaD0oR2UuaW5zX2g8PEdlLmhhc2hfc2hpZnReR2Uud2luZG93W0dlLnN0cnN0YXJ0KzMtMV0pJkdlLmhhc2hfbWFzayx2cj1HZS5wcmV2W0dlLnN0cnN0YXJ0JkdlLndfbWFza109R2Uu'@; put 'aGVhZFtHZS5pbnNfaF0sR2UuaGVhZFtHZS5pbnNfaF09R2Uuc3Ryc3RhcnQpLDAhPT12ciYmR2Uuc3Ryc3RhcnQtdnI8PUdlLndfc2l6ZS1kdCYmKEdlLm1hdGNoX2xlbmd0aD1sbihHZSx2cikpLEdlLm1hdGNoX2xlbmd0aD49MylpZih4dD1SLl90cl90YWxseShHZSxHZS5zdHJzdGFydC1H'@; put 'ZS5tYXRjaF9zdGFydCxHZS5tYXRjaF9sZW5ndGgtMyksR2UubG9va2FoZWFkLT1HZS5tYXRjaF9sZW5ndGgsR2UubWF0Y2hfbGVuZ3RoPD1HZS5tYXhfbGF6eV9tYXRjaCYmR2UubG9va2FoZWFkPj0zKXtHZS5tYXRjaF9sZW5ndGgtLTtkb3tHZS5zdHJzdGFydCsrLEdlLmluc19oPShHZS5p'@; put 'bnNfaDw8R2UuaGFzaF9zaGlmdF5HZS53aW5kb3dbR2Uuc3Ryc3RhcnQrMy0xXSkmR2UuaGFzaF9tYXNrLHZyPUdlLnByZXZbR2Uuc3Ryc3RhcnQmR2Uud19tYXNrXT1HZS5oZWFkW0dlLmluc19oXSxHZS5oZWFkW0dlLmluc19oXT1HZS5zdHJzdGFydH13aGlsZSgwIT09LS1HZS5tYXRjaF9s'@; put 'ZW5ndGgpO0dlLnN0cnN0YXJ0Kyt9ZWxzZSBHZS5zdHJzdGFydCs9R2UubWF0Y2hfbGVuZ3RoLEdlLm1hdGNoX2xlbmd0aD0wLEdlLmluc19oPUdlLndpbmRvd1tHZS5zdHJzdGFydF0sR2UuaW5zX2g9KEdlLmluc19oPDxHZS5oYXNoX3NoaWZ0XkdlLndpbmRvd1tHZS5zdHJzdGFydCsxXSkm'@; put 'R2UuaGFzaF9tYXNrO2Vsc2UgeHQ9Ui5fdHJfdGFsbHkoR2UsMCxHZS53aW5kb3dbR2Uuc3Ryc3RhcnRdKSxHZS5sb29rYWhlYWQtLSxHZS5zdHJzdGFydCsrO2lmKHh0JiYoR3QoR2UsITEpLDA9PT1HZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIEdlLmluc2VydD1HZS5zdHJz'@; put 'dGFydDwyP0dlLnN0cnN0YXJ0OjIsND09PVV0PyhHdChHZSwhMCksMD09PUdlLnN0cm0uYXZhaWxfb3V0PzM6NCk6R2UubGFzdF9saXQmJihHdChHZSwhMSksMD09PUdlLnN0cm0uYXZhaWxfb3V0KT8xOjJ9ZnVuY3Rpb24gSG4oR2UsVXQpe2Zvcih2YXIgdnIseHQsQnQ7Oyl7aWYoR2UubG9v'@; put 'a2FoZWFkPGR0KXtpZihPbihHZSksR2UubG9va2FoZWFkPGR0JiYwPT09VXQpcmV0dXJuIDE7aWYoMD09PUdlLmxvb2thaGVhZClicmVha31pZih2cj0wLEdlLmxvb2thaGVhZD49MyYmKEdlLmluc19oPShHZS5pbnNfaDw8R2UuaGFzaF9zaGlmdF5HZS53aW5kb3dbR2Uuc3Ryc3RhcnQrMy0x'@; put 'XSkmR2UuaGFzaF9tYXNrLHZyPUdlLnByZXZbR2Uuc3Ryc3RhcnQmR2Uud19tYXNrXT1HZS5oZWFkW0dlLmluc19oXSxHZS5oZWFkW0dlLmluc19oXT1HZS5zdHJzdGFydCksR2UucHJldl9sZW5ndGg9R2UubWF0Y2hfbGVuZ3RoLEdlLnByZXZfbWF0Y2g9R2UubWF0Y2hfc3RhcnQsR2UubWF0'@; put 'Y2hfbGVuZ3RoPTIsMCE9PXZyJiZHZS5wcmV2X2xlbmd0aDxHZS5tYXhfbGF6eV9tYXRjaCYmR2Uuc3Ryc3RhcnQtdnI8PUdlLndfc2l6ZS1kdCYmKEdlLm1hdGNoX2xlbmd0aD1sbihHZSx2ciksR2UubWF0Y2hfbGVuZ3RoPD01JiYoMT09PUdlLnN0cmF0ZWd5fHwzPT09R2UubWF0Y2hfbGVu'@; put 'Z3RoJiZHZS5zdHJzdGFydC1HZS5tYXRjaF9zdGFydD40MDk2KSYmKEdlLm1hdGNoX2xlbmd0aD0yKSksR2UucHJldl9sZW5ndGg+PTMmJkdlLm1hdGNoX2xlbmd0aDw9R2UucHJldl9sZW5ndGgpe0J0PUdlLnN0cnN0YXJ0K0dlLmxvb2thaGVhZC0zLHh0PVIuX3RyX3RhbGx5KEdlLEdlLnN0'@; put 'cnN0YXJ0LTEtR2UucHJldl9tYXRjaCxHZS5wcmV2X2xlbmd0aC0zKSxHZS5sb29rYWhlYWQtPUdlLnByZXZfbGVuZ3RoLTEsR2UucHJldl9sZW5ndGgtPTI7ZG97KytHZS5zdHJzdGFydDw9QnQmJihHZS5pbnNfaD0oR2UuaW5zX2g8PEdlLmhhc2hfc2hpZnReR2Uud2luZG93W0dlLnN0cnN0'@; put 'YXJ0KzMtMV0pJkdlLmhhc2hfbWFzayx2cj1HZS5wcmV2W0dlLnN0cnN0YXJ0JkdlLndfbWFza109R2UuaGVhZFtHZS5pbnNfaF0sR2UuaGVhZFtHZS5pbnNfaF09R2Uuc3Ryc3RhcnQpfXdoaWxlKDAhPT0tLUdlLnByZXZfbGVuZ3RoKTtpZihHZS5tYXRjaF9hdmFpbGFibGU9MCxHZS5tYXRj'@; put 'aF9sZW5ndGg9MixHZS5zdHJzdGFydCsrLHh0JiYoR3QoR2UsITEpLDA9PT1HZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9ZWxzZSBpZihHZS5tYXRjaF9hdmFpbGFibGUpe2lmKCh4dD1SLl90cl90YWxseShHZSwwLEdlLndpbmRvd1tHZS5zdHJzdGFydC0xXSkpJiZHdChHZSwhMSksR2Uu'@; put 'c3Ryc3RhcnQrKyxHZS5sb29rYWhlYWQtLSwwPT09R2Uuc3RybS5hdmFpbF9vdXQpcmV0dXJuIDF9ZWxzZSBHZS5tYXRjaF9hdmFpbGFibGU9MSxHZS5zdHJzdGFydCsrLEdlLmxvb2thaGVhZC0tfXJldHVybiBHZS5tYXRjaF9hdmFpbGFibGUmJih4dD1SLl90cl90YWxseShHZSwwLEdlLndp'@; put 'bmRvd1tHZS5zdHJzdGFydC0xXSksR2UubWF0Y2hfYXZhaWxhYmxlPTApLEdlLmluc2VydD1HZS5zdHJzdGFydDwyP0dlLnN0cnN0YXJ0OjIsND09PVV0PyhHdChHZSwhMCksMD09PUdlLnN0cm0uYXZhaWxfb3V0PzM6NCk6R2UubGFzdF9saXQmJihHdChHZSwhMSksMD09PUdlLnN0cm0uYXZh'@; put 'aWxfb3V0KT8xOjJ9dmFyIFNuLFpuPWZ1bmN0aW9uKEdlLFV0LHZyLHh0LEJ0KXt0aGlzLmdvb2RfbGVuZ3RoPUdlLHRoaXMubWF4X2xhenk9VXQsdGhpcy5uaWNlX2xlbmd0aD12cix0aGlzLm1heF9jaGFpbj14dCx0aGlzLmZ1bmM9QnR9O2Z1bmN0aW9uIFR0KCl7dGhpcy5zdHJtPW51bGws'@; put 'dGhpcy5zdGF0dXM9MCx0aGlzLnBlbmRpbmdfYnVmPW51bGwsdGhpcy5wZW5kaW5nX2J1Zl9zaXplPTAsdGhpcy5wZW5kaW5nX291dD0wLHRoaXMucGVuZGluZz0wLHRoaXMud3JhcD0wLHRoaXMuZ3poZWFkPW51bGwsdGhpcy5nemluZGV4PTAsdGhpcy5tZXRob2Q9OCx0aGlzLmxhc3RfZmx1'@; put 'c2g9LTEsdGhpcy53X3NpemU9MCx0aGlzLndfYml0cz0wLHRoaXMud19tYXNrPTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLndpbmRvd19zaXplPTAsdGhpcy5wcmV2PW51bGwsdGhpcy5oZWFkPW51bGwsdGhpcy5pbnNfaD0wLHRoaXMuaGFzaF9zaXplPTAsdGhpcy5oYXNoX2JpdHM9MCx0aGlz'@; put 'Lmhhc2hfbWFzaz0wLHRoaXMuaGFzaF9zaGlmdD0wLHRoaXMuYmxvY2tfc3RhcnQ9MCx0aGlzLm1hdGNoX2xlbmd0aD0wLHRoaXMucHJldl9tYXRjaD0wLHRoaXMubWF0Y2hfYXZhaWxhYmxlPTAsdGhpcy5zdHJzdGFydD0wLHRoaXMubWF0Y2hfc3RhcnQ9MCx0aGlzLmxvb2thaGVhZD0wLHRo'@; put 'aXMucHJldl9sZW5ndGg9MCx0aGlzLm1heF9jaGFpbl9sZW5ndGg9MCx0aGlzLm1heF9sYXp5X21hdGNoPTAsdGhpcy5sZXZlbD0wLHRoaXMuc3RyYXRlZ3k9MCx0aGlzLmdvb2RfbWF0Y2g9MCx0aGlzLm5pY2VfbWF0Y2g9MCx0aGlzLmR5bl9sdHJlZT1uZXcgTC5CdWYxNigxMTQ2KSx0aGlz'@; put 'LmR5bl9kdHJlZT1uZXcgTC5CdWYxNigxMjIpLHRoaXMuYmxfdHJlZT1uZXcgTC5CdWYxNig3OCksUnQodGhpcy5keW5fbHRyZWUpLFJ0KHRoaXMuZHluX2R0cmVlKSxSdCh0aGlzLmJsX3RyZWUpLHRoaXMubF9kZXNjPW51bGwsdGhpcy5kX2Rlc2M9bnVsbCx0aGlzLmJsX2Rlc2M9bnVsbCx0'@; put 'aGlzLmJsX2NvdW50PW5ldyBMLkJ1ZjE2KDE2KSx0aGlzLmhlYXA9bmV3IEwuQnVmMTYoNTczKSxSdCh0aGlzLmhlYXApLHRoaXMuaGVhcF9sZW49MCx0aGlzLmhlYXBfbWF4PTAsdGhpcy5kZXB0aD1uZXcgTC5CdWYxNig1NzMpLFJ0KHRoaXMuZGVwdGgpLHRoaXMubF9idWY9MCx0aGlzLmxp'@; put 'dF9idWZzaXplPTAsdGhpcy5sYXN0X2xpdD0wLHRoaXMuZF9idWY9MCx0aGlzLm9wdF9sZW49MCx0aGlzLnN0YXRpY19sZW49MCx0aGlzLm1hdGNoZXM9MCx0aGlzLmluc2VydD0wLHRoaXMuYmlfYnVmPTAsdGhpcy5iaV92YWxpZD0wfWZ1bmN0aW9uIEFyKEdlKXt2YXIgVXQ7cmV0dXJuIEdl'@; put 'JiZHZS5zdGF0ZT8oR2UudG90YWxfaW49R2UudG90YWxfb3V0PTAsR2UuZGF0YV90eXBlPTIsKFV0PUdlLnN0YXRlKS5wZW5kaW5nPTAsVXQucGVuZGluZ19vdXQ9MCxVdC53cmFwPDAmJihVdC53cmFwPS1VdC53cmFwKSxVdC5zdGF0dXM9VXQud3JhcD80MjoxMTMsR2UuYWRsZXI9Mj09PVV0'@; put 'LndyYXA/MDoxLFV0Lmxhc3RfZmx1c2g9MCxSLl90cl9pbml0KFV0KSwwKTpLZShHZSwtMil9ZnVuY3Rpb24gX24oR2Upe3ZhciBVdD1BcihHZSk7cmV0dXJuIDA9PT1VdCYmZnVuY3Rpb24geHIoR2Upe0dlLndpbmRvd19zaXplPTIqR2Uud19zaXplLFJ0KEdlLmhlYWQpLEdlLm1heF9sYXp5'@; put 'X21hdGNoPVNuW0dlLmxldmVsXS5tYXhfbGF6eSxHZS5nb29kX21hdGNoPVNuW0dlLmxldmVsXS5nb29kX2xlbmd0aCxHZS5uaWNlX21hdGNoPVNuW0dlLmxldmVsXS5uaWNlX2xlbmd0aCxHZS5tYXhfY2hhaW5fbGVuZ3RoPVNuW0dlLmxldmVsXS5tYXhfY2hhaW4sR2Uuc3Ryc3RhcnQ9MCxH'@; put 'ZS5ibG9ja19zdGFydD0wLEdlLmxvb2thaGVhZD0wLEdlLmluc2VydD0wLEdlLm1hdGNoX2xlbmd0aD1HZS5wcmV2X2xlbmd0aD0yLEdlLm1hdGNoX2F2YWlsYWJsZT0wLEdlLmluc19oPTB9KEdlLnN0YXRlKSxVdH1mdW5jdGlvbiBObihHZSxVdCx2cix4dCxCdCx6bil7aWYoIUdlKXJldHVy'@; put 'bi0yO3ZhciBHbj0xO2lmKC0xPT09VXQmJihVdD02KSx4dDwwPyhHbj0wLHh0PS14dCk6eHQ+MTUmJihHbj0yLHh0LT0xNiksQnQ8MXx8QnQ+OXx8OCE9PXZyfHx4dDw4fHx4dD4xNXx8VXQ8MHx8VXQ+OXx8em48MHx8em4+NClyZXR1cm4gS2UoR2UsLTIpOzg9PT14dCYmKHh0PTkpO3ZhciB5'@; put 'bj1uZXcgVHQ7cmV0dXJuIEdlLnN0YXRlPXluLHluLnN0cm09R2UseW4ud3JhcD1Hbix5bi5nemhlYWQ9bnVsbCx5bi53X2JpdHM9eHQseW4ud19zaXplPTE8PHluLndfYml0cyx5bi53X21hc2s9eW4ud19zaXplLTEseW4uaGFzaF9iaXRzPUJ0KzcseW4uaGFzaF9zaXplPTE8PHluLmhhc2hf'@; put 'Yml0cyx5bi5oYXNoX21hc2s9eW4uaGFzaF9zaXplLTEseW4uaGFzaF9zaGlmdD1+figoeW4uaGFzaF9iaXRzKzMtMSkvMykseW4ud2luZG93PW5ldyBMLkJ1ZjgoMip5bi53X3NpemUpLHluLmhlYWQ9bmV3IEwuQnVmMTYoeW4uaGFzaF9zaXplKSx5bi5wcmV2PW5ldyBMLkJ1ZjE2KHluLndf'@; put 'c2l6ZSkseW4ubGl0X2J1ZnNpemU9MTw8QnQrNix5bi5wZW5kaW5nX2J1Zl9zaXplPTQqeW4ubGl0X2J1ZnNpemUseW4ucGVuZGluZ19idWY9bmV3IEwuQnVmOCh5bi5wZW5kaW5nX2J1Zl9zaXplKSx5bi5kX2J1Zj15bi5saXRfYnVmc2l6ZT4+MSx5bi5sX2J1Zj0zKnluLmxpdF9idWZzaXpl'@; put 'LHluLmxldmVsPVV0LHluLnN0cmF0ZWd5PXpuLHluLm1ldGhvZD12cixfbihHZSl9U249W25ldyBabigwLDAsMCwwLGZ1bmN0aW9uIFFyKEdlLFV0KXt2YXIgdnI9NjU1MzU7Zm9yKHZyPkdlLnBlbmRpbmdfYnVmX3NpemUtNSYmKHZyPUdlLnBlbmRpbmdfYnVmX3NpemUtNSk7Oyl7aWYoR2Uu'@; put 'bG9va2FoZWFkPD0xKXtpZihPbihHZSksMD09PUdlLmxvb2thaGVhZCYmMD09PVV0KXJldHVybiAxO2lmKDA9PT1HZS5sb29rYWhlYWQpYnJlYWt9R2Uuc3Ryc3RhcnQrPUdlLmxvb2thaGVhZCxHZS5sb29rYWhlYWQ9MDt2YXIgeHQ9R2UuYmxvY2tfc3RhcnQrdnI7aWYoKDA9PT1HZS5zdHJz'@; put 'dGFydHx8R2Uuc3Ryc3RhcnQ+PXh0KSYmKEdlLmxvb2thaGVhZD1HZS5zdHJzdGFydC14dCxHZS5zdHJzdGFydD14dCxHdChHZSwhMSksMD09PUdlLnN0cm0uYXZhaWxfb3V0KXx8R2Uuc3Ryc3RhcnQtR2UuYmxvY2tfc3RhcnQ+PUdlLndfc2l6ZS1kdCYmKEd0KEdlLCExKSwwPT09R2Uuc3Ry'@; put 'bS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBHZS5pbnNlcnQ9MCw0PT09VXQ/KEd0KEdlLCEwKSwwPT09R2Uuc3RybS5hdmFpbF9vdXQ/Mzo0KTooR2Uuc3Ryc3RhcnQ+R2UuYmxvY2tfc3RhcnQmJkd0KEdlLCExKSwxKX0pLG5ldyBabig0LDQsOCw0LHRyKSxuZXcgWm4oNCw1LDE2LDgs'@; put 'dHIpLG5ldyBabig0LDYsMzIsMzIsdHIpLG5ldyBabig0LDQsMTYsMTYsSG4pLG5ldyBabig4LDE2LDMyLDMyLEhuKSxuZXcgWm4oOCwxNiwxMjgsMTI4LEhuKSxuZXcgWm4oOCwzMiwxMjgsMjU2LEhuKSxuZXcgWm4oMzIsMTI4LDI1OCwxMDI0LEhuKSxuZXcgWm4oMzIsMjU4LDI1OCw0MDk2'@; put 'LEhuKV0sUy5kZWZsYXRlSW5pdD1mdW5jdGlvbiBwdChHZSxVdCl7cmV0dXJuIE5uKEdlLFV0LDgsMTUsOCwwKX0sUy5kZWZsYXRlSW5pdDI9Tm4sUy5kZWZsYXRlUmVzZXQ9X24sUy5kZWZsYXRlUmVzZXRLZWVwPUFyLFMuZGVmbGF0ZVNldEhlYWRlcj1mdW5jdGlvbiBadChHZSxVdCl7cmV0'@; put 'dXJuIEdlJiZHZS5zdGF0ZSYmMj09PUdlLnN0YXRlLndyYXA/KEdlLnN0YXRlLmd6aGVhZD1VdCwwKTotMn0sUy5kZWZsYXRlPWZ1bmN0aW9uIHBuKEdlLFV0KXt2YXIgdnIseHQsQnQsem47aWYoIUdlfHwhR2Uuc3RhdGV8fFV0PjV8fFV0PDApcmV0dXJuIEdlP0tlKEdlLC0yKTotMjtpZih4'@; put 'dD1HZS5zdGF0ZSwhR2Uub3V0cHV0fHwhR2UuaW5wdXQmJjAhPT1HZS5hdmFpbF9pbnx8NjY2PT09eHQuc3RhdHVzJiY0IT09VXQpcmV0dXJuIEtlKEdlLDA9PT1HZS5hdmFpbF9vdXQ/LTU6LTIpO2lmKHh0LnN0cm09R2UsdnI9eHQubGFzdF9mbHVzaCx4dC5sYXN0X2ZsdXNoPVV0LDQyPT09'@; put 'eHQuc3RhdHVzKWlmKDI9PT14dC53cmFwKUdlLmFkbGVyPTAsZ3QoeHQsMzEpLGd0KHh0LDEzOSksZ3QoeHQsOCkseHQuZ3poZWFkPyhndCh4dCwoeHQuZ3poZWFkLnRleHQ/MTowKSsoeHQuZ3poZWFkLmhjcmM/MjowKSsoeHQuZ3poZWFkLmV4dHJhPzQ6MCkrKHh0Lmd6aGVhZC5uYW1lPzg6'@; put 'MCkrKHh0Lmd6aGVhZC5jb21tZW50PzE2OjApKSxndCh4dCwyNTUmeHQuZ3poZWFkLnRpbWUpLGd0KHh0LHh0Lmd6aGVhZC50aW1lPj44JjI1NSksZ3QoeHQseHQuZ3poZWFkLnRpbWU+PjE2JjI1NSksZ3QoeHQseHQuZ3poZWFkLnRpbWU+PjI0JjI1NSksZ3QoeHQsOT09PXh0LmxldmVsPzI6'@; put 'eHQuc3RyYXRlZ3k+PTJ8fHh0LmxldmVsPDI/NDowKSxndCh4dCwyNTUmeHQuZ3poZWFkLm9zKSx4dC5nemhlYWQuZXh0cmEmJnh0Lmd6aGVhZC5leHRyYS5sZW5ndGgmJihndCh4dCwyNTUmeHQuZ3poZWFkLmV4dHJhLmxlbmd0aCksZ3QoeHQseHQuZ3poZWFkLmV4dHJhLmxlbmd0aD4+OCYy'@; put 'NTUpKSx4dC5nemhlYWQuaGNyYyYmKEdlLmFkbGVyPVUoR2UuYWRsZXIseHQucGVuZGluZ19idWYseHQucGVuZGluZywwKSkseHQuZ3ppbmRleD0wLHh0LnN0YXR1cz02OSk6KGd0KHh0LDApLGd0KHh0LDApLGd0KHh0LDApLGd0KHh0LDApLGd0KHh0LDApLGd0KHh0LDk9PT14dC5sZXZlbD8y'@; put 'Onh0LnN0cmF0ZWd5Pj0yfHx4dC5sZXZlbDwyPzQ6MCksZ3QoeHQsMykseHQuc3RhdHVzPTExMyk7ZWxzZXt2YXIgR249OCsoeHQud19iaXRzLTg8PDQpPDw4O0dufD0oeHQuc3RyYXRlZ3k+PTJ8fHh0LmxldmVsPDI/MDp4dC5sZXZlbDw2PzE6Nj09PXh0LmxldmVsPzI6Myk8PDYsMCE9PXh0'@; put 'LnN0cnN0YXJ0JiYoR258PTMyKSxHbis9MzEtR24lMzEseHQuc3RhdHVzPTExMyxYdCh4dCxHbiksMCE9PXh0LnN0cnN0YXJ0JiYoWHQoeHQsR2UuYWRsZXI+Pj4xNiksWHQoeHQsNjU1MzUmR2UuYWRsZXIpKSxHZS5hZGxlcj0xfWlmKDY5PT09eHQuc3RhdHVzKWlmKHh0Lmd6aGVhZC5leHRy'@; put 'YSl7Zm9yKEJ0PXh0LnBlbmRpbmc7eHQuZ3ppbmRleDwoNjU1MzUmeHQuZ3poZWFkLmV4dHJhLmxlbmd0aCkmJih4dC5wZW5kaW5nIT09eHQucGVuZGluZ19idWZfc2l6ZXx8KHh0Lmd6aGVhZC5oY3JjJiZ4dC5wZW5kaW5nPkJ0JiYoR2UuYWRsZXI9VShHZS5hZGxlcix4dC5wZW5kaW5nX2J1'@; put 'Zix4dC5wZW5kaW5nLUJ0LEJ0KSksTHQoR2UpLEJ0PXh0LnBlbmRpbmcseHQucGVuZGluZyE9PXh0LnBlbmRpbmdfYnVmX3NpemUpKTspZ3QoeHQsMjU1Jnh0Lmd6aGVhZC5leHRyYVt4dC5nemluZGV4XSkseHQuZ3ppbmRleCsrO3h0Lmd6aGVhZC5oY3JjJiZ4dC5wZW5kaW5nPkJ0JiYoR2Uu'@; put 'YWRsZXI9VShHZS5hZGxlcix4dC5wZW5kaW5nX2J1Zix4dC5wZW5kaW5nLUJ0LEJ0KSkseHQuZ3ppbmRleD09PXh0Lmd6aGVhZC5leHRyYS5sZW5ndGgmJih4dC5nemluZGV4PTAseHQuc3RhdHVzPTczKX1lbHNlIHh0LnN0YXR1cz03MztpZig3Mz09PXh0LnN0YXR1cylpZih4dC5nemhlYWQu'@; put 'bmFtZSl7QnQ9eHQucGVuZGluZztkb3tpZih4dC5wZW5kaW5nPT09eHQucGVuZGluZ19idWZfc2l6ZSYmKHh0Lmd6aGVhZC5oY3JjJiZ4dC5wZW5kaW5nPkJ0JiYoR2UuYWRsZXI9VShHZS5hZGxlcix4dC5wZW5kaW5nX2J1Zix4dC5wZW5kaW5nLUJ0LEJ0KSksTHQoR2UpLEJ0PXh0LnBlbmRp'@; put 'bmcseHQucGVuZGluZz09PXh0LnBlbmRpbmdfYnVmX3NpemUpKXt6bj0xO2JyZWFrfXpuPXh0Lmd6aW5kZXg8eHQuZ3poZWFkLm5hbWUubGVuZ3RoPzI1NSZ4dC5nemhlYWQubmFtZS5jaGFyQ29kZUF0KHh0Lmd6aW5kZXgrKyk6MCxndCh4dCx6bil9d2hpbGUoMCE9PXpuKTt4dC5nemhlYWQu'@; put 'aGNyYyYmeHQucGVuZGluZz5CdCYmKEdlLmFkbGVyPVUoR2UuYWRsZXIseHQucGVuZGluZ19idWYseHQucGVuZGluZy1CdCxCdCkpLDA9PT16biYmKHh0Lmd6aW5kZXg9MCx4dC5zdGF0dXM9OTEpfWVsc2UgeHQuc3RhdHVzPTkxO2lmKDkxPT09eHQuc3RhdHVzKWlmKHh0Lmd6aGVhZC5jb21t'@; put 'ZW50KXtCdD14dC5wZW5kaW5nO2Rve2lmKHh0LnBlbmRpbmc9PT14dC5wZW5kaW5nX2J1Zl9zaXplJiYoeHQuZ3poZWFkLmhjcmMmJnh0LnBlbmRpbmc+QnQmJihHZS5hZGxlcj1VKEdlLmFkbGVyLHh0LnBlbmRpbmdfYnVmLHh0LnBlbmRpbmctQnQsQnQpKSxMdChHZSksQnQ9eHQucGVuZGlu'@; put 'Zyx4dC5wZW5kaW5nPT09eHQucGVuZGluZ19idWZfc2l6ZSkpe3puPTE7YnJlYWt9em49eHQuZ3ppbmRleDx4dC5nemhlYWQuY29tbWVudC5sZW5ndGg/MjU1Jnh0Lmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQoeHQuZ3ppbmRleCsrKTowLGd0KHh0LHpuKX13aGlsZSgwIT09em4pO3h0Lmd6'@; put 'aGVhZC5oY3JjJiZ4dC5wZW5kaW5nPkJ0JiYoR2UuYWRsZXI9VShHZS5hZGxlcix4dC5wZW5kaW5nX2J1Zix4dC5wZW5kaW5nLUJ0LEJ0KSksMD09PXpuJiYoeHQuc3RhdHVzPTEwMyl9ZWxzZSB4dC5zdGF0dXM9MTAzO2lmKDEwMz09PXh0LnN0YXR1cyYmKHh0Lmd6aGVhZC5oY3JjPyh4dC5w'@; put 'ZW5kaW5nKzI+eHQucGVuZGluZ19idWZfc2l6ZSYmTHQoR2UpLHh0LnBlbmRpbmcrMjw9eHQucGVuZGluZ19idWZfc2l6ZSYmKGd0KHh0LDI1NSZHZS5hZGxlciksZ3QoeHQsR2UuYWRsZXI+PjgmMjU1KSxHZS5hZGxlcj0wLHh0LnN0YXR1cz0xMTMpKTp4dC5zdGF0dXM9MTEzKSwwIT09eHQu'@; put 'cGVuZGluZyl7aWYoTHQoR2UpLDA9PT1HZS5hdmFpbF9vdXQpcmV0dXJuIHh0Lmxhc3RfZmx1c2g9LTEsMH1lbHNlIGlmKDA9PT1HZS5hdmFpbF9pbiYmJHQoVXQpPD0kdCh2cikmJjQhPT1VdClyZXR1cm4gS2UoR2UsLTUpO2lmKDY2Nj09PXh0LnN0YXR1cyYmMCE9PUdlLmF2YWlsX2luKXJl'@; put 'dHVybiBLZShHZSwtNSk7aWYoMCE9PUdlLmF2YWlsX2lufHwwIT09eHQubG9va2FoZWFkfHwwIT09VXQmJjY2NiE9PXh0LnN0YXR1cyl7dmFyIHZpPTI9PT14dC5zdHJhdGVneT9mdW5jdGlvbiB1cihHZSxVdCl7Zm9yKHZhciB2cjs7KXtpZigwPT09R2UubG9va2FoZWFkJiYoT24oR2UpLDA9'@; put 'PT1HZS5sb29rYWhlYWQpKXtpZigwPT09VXQpcmV0dXJuIDE7YnJlYWt9aWYoR2UubWF0Y2hfbGVuZ3RoPTAsdnI9Ui5fdHJfdGFsbHkoR2UsMCxHZS53aW5kb3dbR2Uuc3Ryc3RhcnRdKSxHZS5sb29rYWhlYWQtLSxHZS5zdHJzdGFydCsrLHZyJiYoR3QoR2UsITEpLDA9PT1HZS5zdHJtLmF2'@; put 'YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIEdlLmluc2VydD0wLDQ9PT1VdD8oR3QoR2UsITApLDA9PT1HZS5zdHJtLmF2YWlsX291dD8zOjQpOkdlLmxhc3RfbGl0JiYoR3QoR2UsITEpLDA9PT1HZS5zdHJtLmF2YWlsX291dCk/MToyfSh4dCxVdCk6Mz09PXh0LnN0cmF0ZWd5P2Z1bmN0aW9u'@; put 'IE9vKEdlLFV0KXtmb3IodmFyIHZyLHh0LEJ0LHpuLEduPUdlLndpbmRvdzs7KXtpZihHZS5sb29rYWhlYWQ8PTI1OCl7aWYoT24oR2UpLEdlLmxvb2thaGVhZDw9MjU4JiYwPT09VXQpcmV0dXJuIDE7aWYoMD09PUdlLmxvb2thaGVhZClicmVha31pZihHZS5tYXRjaF9sZW5ndGg9MCxHZS5s'@; put 'b29rYWhlYWQ+PTMmJkdlLnN0cnN0YXJ0PjAmJih4dD1HbltCdD1HZS5zdHJzdGFydC0xXSk9PT1HblsrK0J0XSYmeHQ9PT1HblsrK0J0XSYmeHQ9PT1HblsrK0J0XSl7em49R2Uuc3Ryc3RhcnQrMjU4O2Rve313aGlsZSh4dD09PUduWysrQnRdJiZ4dD09PUduWysrQnRdJiZ4dD09PUduWysr'@; put 'QnRdJiZ4dD09PUduWysrQnRdJiZ4dD09PUduWysrQnRdJiZ4dD09PUduWysrQnRdJiZ4dD09PUduWysrQnRdJiZ4dD09PUduWysrQnRdJiZCdDx6bik7R2UubWF0Y2hfbGVuZ3RoPTI1OC0oem4tQnQpLEdlLm1hdGNoX2xlbmd0aD5HZS5sb29rYWhlYWQmJihHZS5tYXRjaF9sZW5ndGg9R2Uu'@; put 'bG9va2FoZWFkKX1pZihHZS5tYXRjaF9sZW5ndGg+PTM/KHZyPVIuX3RyX3RhbGx5KEdlLDEsR2UubWF0Y2hfbGVuZ3RoLTMpLEdlLmxvb2thaGVhZC09R2UubWF0Y2hfbGVuZ3RoLEdlLnN0cnN0YXJ0Kz1HZS5tYXRjaF9sZW5ndGgsR2UubWF0Y2hfbGVuZ3RoPTApOih2cj1SLl90cl90YWxs'@; put 'eShHZSwwLEdlLndpbmRvd1tHZS5zdHJzdGFydF0pLEdlLmxvb2thaGVhZC0tLEdlLnN0cnN0YXJ0KyspLHZyJiYoR3QoR2UsITEpLDA9PT1HZS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIEdlLmluc2VydD0wLDQ9PT1VdD8oR3QoR2UsITApLDA9PT1HZS5zdHJtLmF2YWlsX291'@; put 'dD8zOjQpOkdlLmxhc3RfbGl0JiYoR3QoR2UsITEpLDA9PT1HZS5zdHJtLmF2YWlsX291dCk/MToyfSh4dCxVdCk6U25beHQubGV2ZWxdLmZ1bmMoeHQsVXQpO2lmKCgzPT09dml8fDQ9PT12aSkmJih4dC5zdGF0dXM9NjY2KSwxPT09dml8fDM9PT12aSlyZXR1cm4gMD09PUdlLmF2YWlsX291'@; put 'dCYmKHh0Lmxhc3RfZmx1c2g9LTEpLDA7aWYoMj09PXZpJiYoMT09PVV0P1IuX3RyX2FsaWduKHh0KTo1IT09VXQmJihSLl90cl9zdG9yZWRfYmxvY2soeHQsMCwwLCExKSwzPT09VXQmJihSdCh4dC5oZWFkKSwwPT09eHQubG9va2FoZWFkJiYoeHQuc3Ryc3RhcnQ9MCx4dC5ibG9ja19zdGFy'@; put 'dD0wLHh0Lmluc2VydD0wKSkpLEx0KEdlKSwwPT09R2UuYXZhaWxfb3V0KSlyZXR1cm4geHQubGFzdF9mbHVzaD0tMSwwfXJldHVybiA0IT09VXQ/MDp4dC53cmFwPD0wPzE6KDI9PT14dC53cmFwPyhndCh4dCwyNTUmR2UuYWRsZXIpLGd0KHh0LEdlLmFkbGVyPj44JjI1NSksZ3QoeHQsR2Uu'@; put 'YWRsZXI+PjE2JjI1NSksZ3QoeHQsR2UuYWRsZXI+PjI0JjI1NSksZ3QoeHQsMjU1JkdlLnRvdGFsX2luKSxndCh4dCxHZS50b3RhbF9pbj4+OCYyNTUpLGd0KHh0LEdlLnRvdGFsX2luPj4xNiYyNTUpLGd0KHh0LEdlLnRvdGFsX2luPj4yNCYyNTUpKTooWHQoeHQsR2UuYWRsZXI+Pj4xNiks'@; put 'WHQoeHQsNjU1MzUmR2UuYWRsZXIpKSxMdChHZSkseHQud3JhcD4wJiYoeHQud3JhcD0teHQud3JhcCksMCE9PXh0LnBlbmRpbmc/MDoxKX0sUy5kZWZsYXRlRW5kPWZ1bmN0aW9uIE1pKEdlKXt2YXIgVXQ7cmV0dXJuIEdlJiZHZS5zdGF0ZT80MiE9PShVdD1HZS5zdGF0ZS5zdGF0dXMpJiY2'@; put 'OSE9PVV0JiY3MyE9PVV0JiY5MSE9PVV0JiYxMDMhPT1VdCYmMTEzIT09VXQmJjY2NiE9PVV0P0tlKEdlLC0yKTooR2Uuc3RhdGU9bnVsbCwxMTM9PT1VdD9LZShHZSwtMyk6MCk6LTJ9LFMuZGVmbGF0ZUluZm89InBha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCkifSx7Ii4uL3V0'@; put 'aWxzL2NvbW1vbiI6MjcsIi4vYWRsZXIzMiI6MjksIi4vY3JjMzIiOjMxLCIuL21lc3NhZ2VzIjozNywiLi90cmVlcyI6Mzh9XSwzMzpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt3LmV4cG9ydHM9ZnVuY3Rpb24gTCgpe3RoaXMudGV4dD0wLHRoaXMudGltZT0wLHRoaXMueGZsYWdz'@; put 'PTAsdGhpcy5vcz0wLHRoaXMuZXh0cmE9bnVsbCx0aGlzLmV4dHJhX2xlbj0wLHRoaXMubmFtZT0iIix0aGlzLmNvbW1lbnQ9IiIsdGhpcy5oY3JjPTAsdGhpcy5kb25lPSExfX0se31dLDM0OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3cuZXhwb3J0cz1mdW5jdGlvbihVLEgpe3Zh'@; put 'ciBWLE4seixZLEYsVyxxLHJlLG1lLENlLEllLGtlLHFlLFgsZixiLGssTSxCLEssRyxELHAsSSx1ZTtJPVUuaW5wdXQsej0oTj1VLm5leHRfaW4pKyhVLmF2YWlsX2luLTUpLHVlPVUub3V0cHV0LEY9KFk9VS5uZXh0X291dCktKEgtVS5hdmFpbF9vdXQpLFc9WSsoVS5hdmFpbF9vdXQtMjU3'@; put 'KSxxPShWPVUuc3RhdGUpLmRtYXgscmU9Vi53c2l6ZSxtZT1WLndoYXZlLENlPVYud25leHQsSWU9Vi53aW5kb3csa2U9Vi5ob2xkLHFlPVYuYml0cyxYPVYubGVuY29kZSxmPVYuZGlzdGNvZGUsYj0oMTw8Vi5sZW5iaXRzKS0xLGs9KDE8PFYuZGlzdGJpdHMpLTE7ZTpkb3txZTwxNSYmKGtl'@; put 'Kz1JW04rK108PHFlLGtlKz1JW04rK108PChxZSs9OCkscWUrPTgpLE09WFtrZSZiXTt0OmZvcig7Oyl7aWYoa2U+Pj49Qj1NPj4+MjQscWUtPUIsMD09KEI9TT4+PjE2JjI1NSkpdWVbWSsrXT02NTUzNSZNO2Vsc2V7aWYoISgxNiZCKSl7aWYoNjQmQil7aWYoMzImQil7Vi5tb2RlPTEyO2Jy'@; put 'ZWFrIGV9VS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsVi5tb2RlPTMwO2JyZWFrIGV9TT1YWyg2NTUzNSZNKSsoa2UmKDE8PEIpLTEpXTtjb250aW51ZSB0fWZvcihLPTY1NTM1Jk0sKEImPTE1KSYmKHFlPEImJihrZSs9SVtOKytdPDxxZSxxZSs9OCksSys9a2UmKDE8PEIp'@; put 'LTEsa2U+Pj49QixxZS09QikscWU8MTUmJihrZSs9SVtOKytdPDxxZSxrZSs9SVtOKytdPDwocWUrPTgpLHFlKz04KSxNPWZba2Uma107Oyl7aWYoa2U+Pj49Qj1NPj4+MjQscWUtPUIsMTYmKEI9TT4+PjE2JjI1NSkpe2lmKEc9NjU1MzUmTSxxZTwoQiY9MTUpJiYoa2UrPUlbTisrXTw8cWUs'@; put 'KHFlKz04KTxCJiYoa2UrPUlbTisrXTw8cWUscWUrPTgpKSwoRys9a2UmKDE8PEIpLTEpPnEpe1UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsVi5tb2RlPTMwO2JyZWFrIGV9aWYoa2U+Pj49QixxZS09QixHPihCPVktRikpe2lmKChCPUctQik+bWUmJlYuc2FuZSl7VS5t'@; put 'c2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixWLm1vZGU9MzA7YnJlYWsgZX1pZihEPTAscD1JZSwwPT09Q2Upe2lmKEQrPXJlLUIsQjxLKXtLLT1CO2Rve3VlW1krK109SWVbRCsrXX13aGlsZSgtLUIpO0Q9WS1HLHA9dWV9fWVsc2UgaWYoQ2U8Qil7aWYoRCs9cmUrQ2UtQiwo'@; put 'Qi09Q2UpPEspe0stPUI7ZG97dWVbWSsrXT1JZVtEKytdfXdoaWxlKC0tQik7aWYoRD0wLENlPEspe0stPUI9Q2U7ZG97dWVbWSsrXT1JZVtEKytdfXdoaWxlKC0tQik7RD1ZLUcscD11ZX19fWVsc2UgaWYoRCs9Q2UtQixCPEspe0stPUI7ZG97dWVbWSsrXT1JZVtEKytdfXdoaWxlKC0tQik7'@; put 'RD1ZLUcscD11ZX1mb3IoO0s+MjspdWVbWSsrXT1wW0QrK10sdWVbWSsrXT1wW0QrK10sdWVbWSsrXT1wW0QrK10sSy09MztLJiYodWVbWSsrXT1wW0QrK10sSz4xJiYodWVbWSsrXT1wW0QrK10pKX1lbHNle0Q9WS1HO2Rve3VlW1krK109dWVbRCsrXSx1ZVtZKytdPXVlW0QrK10sdWVbWSsr'@; put 'XT11ZVtEKytdLEstPTN9d2hpbGUoSz4yKTtLJiYodWVbWSsrXT11ZVtEKytdLEs+MSYmKHVlW1krK109dWVbRCsrXSkpfWJyZWFrfWlmKDY0JkIpe1UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLFYubW9kZT0zMDticmVhayBlfU09ZlsoNjU1MzUmTSkrKGtlJigxPDxCKS0xKV19fWJy'@; put 'ZWFrfX13aGlsZShOPHomJlk8Vyk7a2UmPSgxPDwocWUtPShLPXFlPj4zKTw8MykpLTEsVS5uZXh0X2luPU4tPUssVS5uZXh0X291dD1ZLFUuYXZhaWxfaW49Tjx6P3otTis1OjUtKE4teiksVS5hdmFpbF9vdXQ9WTxXP1ctWSsyNTc6MjU3LShZLVcpLFYuaG9sZD1rZSxWLmJpdHM9cWV9fSx7'@; put 'fV0sMzU6W2Z1bmN0aW9uKEMsdyxTKXsidXNlIHN0cmljdCI7dmFyIEw9QygiLi4vdXRpbHMvY29tbW9uIiksUj1DKCIuL2FkbGVyMzIiKSx4PUMoIi4vY3JjMzIiKSxVPUMoIi4vaW5mZmFzdCIpLEg9QygiLi9pbmZ0cmVlcyIpO2Z1bmN0aW9uIFh0KFp0KXtyZXR1cm4oWnQ+Pj4yNCYyNTUp'@; put 'KyhadD4+PjgmNjUyODApKygoNjUyODAmWnQpPDw4KSsoKDI1NSZadCk8PDI0KX1mdW5jdGlvbiBMcigpe3RoaXMubW9kZT0wLHRoaXMubGFzdD0hMSx0aGlzLndyYXA9MCx0aGlzLmhhdmVkaWN0PSExLHRoaXMuZmxhZ3M9MCx0aGlzLmRtYXg9MCx0aGlzLmNoZWNrPTAsdGhpcy50b3RhbD0w'@; put 'LHRoaXMuaGVhZD1udWxsLHRoaXMud2JpdHM9MCx0aGlzLndzaXplPTAsdGhpcy53aGF2ZT0wLHRoaXMud25leHQ9MCx0aGlzLndpbmRvdz1udWxsLHRoaXMuaG9sZD0wLHRoaXMuYml0cz0wLHRoaXMubGVuZ3RoPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmV4dHJhPTAsdGhpcy5sZW5jb2RlPW51'@; put 'bGwsdGhpcy5kaXN0Y29kZT1udWxsLHRoaXMubGVuYml0cz0wLHRoaXMuZGlzdGJpdHM9MCx0aGlzLm5jb2RlPTAsdGhpcy5ubGVuPTAsdGhpcy5uZGlzdD0wLHRoaXMuaGF2ZT0wLHRoaXMubmV4dD1udWxsLHRoaXMubGVucz1uZXcgTC5CdWYxNigzMjApLHRoaXMud29yaz1uZXcgTC5CdWYx'@; put 'NigyODgpLHRoaXMubGVuZHluPW51bGwsdGhpcy5kaXN0ZHluPW51bGwsdGhpcy5zYW5lPTAsdGhpcy5iYWNrPTAsdGhpcy53YXM9MH1mdW5jdGlvbiBsbihadCl7dmFyIE5uO3JldHVybiBadCYmWnQuc3RhdGU/KFp0LnRvdGFsX2luPVp0LnRvdGFsX291dD0oTm49WnQuc3RhdGUpLnRvdGFs'@; put 'PTAsWnQubXNnPSIiLE5uLndyYXAmJihadC5hZGxlcj0xJk5uLndyYXApLE5uLm1vZGU9MSxObi5sYXN0PTAsTm4uaGF2ZWRpY3Q9MCxObi5kbWF4PTMyNzY4LE5uLmhlYWQ9bnVsbCxObi5ob2xkPTAsTm4uYml0cz0wLE5uLmxlbmNvZGU9Tm4ubGVuZHluPW5ldyBMLkJ1ZjMyKDg1MiksTm4u'@; put 'ZGlzdGNvZGU9Tm4uZGlzdGR5bj1uZXcgTC5CdWYzMig1OTIpLE5uLnNhbmU9MSxObi5iYWNrPS0xLDApOi0yfWZ1bmN0aW9uIE9uKFp0KXt2YXIgTm47cmV0dXJuIFp0JiZadC5zdGF0ZT8oKE5uPVp0LnN0YXRlKS53c2l6ZT0wLE5uLndoYXZlPTAsTm4ud25leHQ9MCxsbihadCkpOi0yfWZ1'@; put 'bmN0aW9uIFFyKFp0LE5uKXt2YXIgcHQscG47cmV0dXJuIVp0fHwhWnQuc3RhdGV8fChwbj1adC5zdGF0ZSxObjwwPyhwdD0wLE5uPS1Obik6KHB0PTErKE5uPj40KSxObjw0OCYmKE5uJj0xNSkpLE5uJiYoTm48OHx8Tm4+MTUpKT8tMjoobnVsbCE9PXBuLndpbmRvdyYmcG4ud2JpdHMhPT1O'@; put 'biYmKHBuLndpbmRvdz1udWxsKSxwbi53cmFwPXB0LHBuLndiaXRzPU5uLE9uKFp0KSl9ZnVuY3Rpb24gdHIoWnQsTm4pe3ZhciBwdCxwbjtyZXR1cm4gWnQ/KHBuPW5ldyBMcixadC5zdGF0ZT1wbixwbi53aW5kb3c9bnVsbCwwIT09KHB0PVFyKFp0LE5uKSkmJihadC5zdGF0ZT1udWxsKSxw'@; put 'dCk6LTJ9dmFyIHVyLFpuLE9vPSEwO2Z1bmN0aW9uIFNuKFp0KXtpZihPbyl7dmFyIE5uO2Zvcih1cj1uZXcgTC5CdWYzMig1MTIpLFpuPW5ldyBMLkJ1ZjMyKDMyKSxObj0wO05uPDE0NDspWnQubGVuc1tObisrXT04O2Zvcig7Tm48MjU2OyladC5sZW5zW05uKytdPTk7Zm9yKDtObjwyODA7'@; put 'KVp0LmxlbnNbTm4rK109Nztmb3IoO05uPDI4ODspWnQubGVuc1tObisrXT04O2ZvcihIKDEsWnQubGVucywwLDI4OCx1ciwwLFp0Lndvcmsse2JpdHM6OX0pLE5uPTA7Tm48MzI7KVp0LmxlbnNbTm4rK109NTtIKDIsWnQubGVucywwLDMyLFpuLDAsWnQud29yayx7Yml0czo1fSksT289ITF9'@; put 'WnQubGVuY29kZT11cixadC5sZW5iaXRzPTksWnQuZGlzdGNvZGU9Wm4sWnQuZGlzdGJpdHM9NX1TLmluZmxhdGVSZXNldD1PbixTLmluZmxhdGVSZXNldDI9UXIsUy5pbmZsYXRlUmVzZXRLZWVwPWxuLFMuaW5mbGF0ZUluaXQ9ZnVuY3Rpb24gSG4oWnQpe3JldHVybiB0cihadCwxNSl9LFMu'@; put 'aW5mbGF0ZUluaXQyPXRyLFMuaW5mbGF0ZT1mdW5jdGlvbiBUdChadCxObil7dmFyIHB0LHBuLE1pLEdlLFV0LHZyLHh0LEJ0LHpuLEduLHluLHZpLHJyLGhyLHZuLEJuLGphLGpvLFhyLGVhLHJhLGNhLGhvLE1hLHBvPTAsQ2k9bmV3IEwuQnVmOCg0KSxrcz1bMTYsMTcsMTgsMCw4LDcsOSw2'@; put 'LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07aWYoIVp0fHwhWnQuc3RhdGV8fCFadC5vdXRwdXR8fCFadC5pbnB1dCYmMCE9PVp0LmF2YWlsX2luKXJldHVybi0yOzEyPT09KHB0PVp0LnN0YXRlKS5tb2RlJiYocHQubW9kZT0xMyksVXQ9WnQubmV4dF9vdXQsTWk9WnQub3V0cHV0LEdl'@; put 'PVp0Lm5leHRfaW4scG49WnQuaW5wdXQsQnQ9cHQuaG9sZCx6bj1wdC5iaXRzLEduPXZyPVp0LmF2YWlsX2luLHluPXh0PVp0LmF2YWlsX291dCxjYT0wO2U6Zm9yKDs7KXN3aXRjaChwdC5tb2RlKXtjYXNlIDE6aWYoMD09PXB0LndyYXApe3B0Lm1vZGU9MTM7YnJlYWt9Zm9yKDt6bjwxNjsp'@; put 'e2lmKDA9PT12cilicmVhayBlO3ZyLS0sQnQrPXBuW0dlKytdPDx6bix6bis9OH1pZigyJnB0LndyYXAmJjM1NjE1PT09QnQpe3B0LmNoZWNrPTAsQ2lbMF09MjU1JkJ0LENpWzFdPUJ0Pj4+OCYyNTUscHQuY2hlY2s9eChwdC5jaGVjayxDaSwyLDApLEJ0PTAsem49MCxwdC5tb2RlPTI7YnJl'@; put 'YWt9aWYocHQuZmxhZ3M9MCxwdC5oZWFkJiYocHQuaGVhZC5kb25lPSExKSwhKDEmcHQud3JhcCl8fCgoKDI1NSZCdCk8PDgpKyhCdD4+OCkpJTMxKXtadC5tc2c9ImluY29ycmVjdCBoZWFkZXIgY2hlY2siLHB0Lm1vZGU9MzA7YnJlYWt9aWYoOCE9KDE1JkJ0KSl7WnQubXNnPSJ1bmtub3du'@; put 'IGNvbXByZXNzaW9uIG1ldGhvZCIscHQubW9kZT0zMDticmVha31pZih6bi09NCxyYT04KygxNSYoQnQ+Pj49NCkpLDA9PT1wdC53Yml0cylwdC53Yml0cz1yYTtlbHNlIGlmKHJhPnB0LndiaXRzKXtadC5tc2c9ImludmFsaWQgd2luZG93IHNpemUiLHB0Lm1vZGU9MzA7YnJlYWt9cHQuZG1h'@; put 'eD0xPDxyYSxadC5hZGxlcj1wdC5jaGVjaz0xLHB0Lm1vZGU9NTEyJkJ0PzEwOjEyLEJ0PTAsem49MDticmVhaztjYXNlIDI6Zm9yKDt6bjwxNjspe2lmKDA9PT12cilicmVhayBlO3ZyLS0sQnQrPXBuW0dlKytdPDx6bix6bis9OH1pZihwdC5mbGFncz1CdCw4IT0oMjU1JnB0LmZsYWdzKSl7'@; put 'WnQubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIscHQubW9kZT0zMDticmVha31pZig1NzM0NCZwdC5mbGFncyl7WnQubXNnPSJ1bmtub3duIGhlYWRlciBmbGFncyBzZXQiLHB0Lm1vZGU9MzA7YnJlYWt9cHQuaGVhZCYmKHB0LmhlYWQudGV4dD1CdD4+OCYxKSw1MTImcHQuZmxh'@; put 'Z3MmJihDaVswXT0yNTUmQnQsQ2lbMV09QnQ+Pj44JjI1NSxwdC5jaGVjaz14KHB0LmNoZWNrLENpLDIsMCkpLEJ0PTAsem49MCxwdC5tb2RlPTM7Y2FzZSAzOmZvcig7em48MzI7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9cHQuaGVhZCYmKHB0Lmhl'@; put 'YWQudGltZT1CdCksNTEyJnB0LmZsYWdzJiYoQ2lbMF09MjU1JkJ0LENpWzFdPUJ0Pj4+OCYyNTUsQ2lbMl09QnQ+Pj4xNiYyNTUsQ2lbM109QnQ+Pj4yNCYyNTUscHQuY2hlY2s9eChwdC5jaGVjayxDaSw0LDApKSxCdD0wLHpuPTAscHQubW9kZT00O2Nhc2UgNDpmb3IoO3puPDE2Oyl7aWYo'@; put 'MD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fXB0LmhlYWQmJihwdC5oZWFkLnhmbGFncz0yNTUmQnQscHQuaGVhZC5vcz1CdD4+OCksNTEyJnB0LmZsYWdzJiYoQ2lbMF09MjU1JkJ0LENpWzFdPUJ0Pj4+OCYyNTUscHQuY2hlY2s9eChwdC5jaGVjayxDaSwyLDAp'@; put 'KSxCdD0wLHpuPTAscHQubW9kZT01O2Nhc2UgNTppZigxMDI0JnB0LmZsYWdzKXtmb3IoO3puPDE2Oyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fXB0Lmxlbmd0aD1CdCxwdC5oZWFkJiYocHQuaGVhZC5leHRyYV9sZW49QnQpLDUxMiZwdC5mbGFncyYm'@; put 'KENpWzBdPTI1NSZCdCxDaVsxXT1CdD4+PjgmMjU1LHB0LmNoZWNrPXgocHQuY2hlY2ssQ2ksMiwwKSksQnQ9MCx6bj0wfWVsc2UgcHQuaGVhZCYmKHB0LmhlYWQuZXh0cmE9bnVsbCk7cHQubW9kZT02O2Nhc2UgNjppZigxMDI0JnB0LmZsYWdzJiYoKHZpPXB0Lmxlbmd0aCk+dnImJih2aT12'@; put 'ciksdmkmJihwdC5oZWFkJiYocmE9cHQuaGVhZC5leHRyYV9sZW4tcHQubGVuZ3RoLHB0LmhlYWQuZXh0cmF8fChwdC5oZWFkLmV4dHJhPW5ldyBBcnJheShwdC5oZWFkLmV4dHJhX2xlbikpLEwuYXJyYXlTZXQocHQuaGVhZC5leHRyYSxwbixHZSx2aSxyYSkpLDUxMiZwdC5mbGFncyYmKHB0'@; put 'LmNoZWNrPXgocHQuY2hlY2sscG4sdmksR2UpKSx2ci09dmksR2UrPXZpLHB0Lmxlbmd0aC09dmkpLHB0Lmxlbmd0aCkpYnJlYWsgZTtwdC5sZW5ndGg9MCxwdC5tb2RlPTc7Y2FzZSA3OmlmKDIwNDgmcHQuZmxhZ3Mpe2lmKDA9PT12cilicmVhayBlO3ZpPTA7ZG97cmE9cG5bR2UrdmkrK10s'@; put 'cHQuaGVhZCYmcmEmJnB0Lmxlbmd0aDw2NTUzNiYmKHB0LmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZShyYSkpfXdoaWxlKHJhJiZ2aTx2cik7aWYoNTEyJnB0LmZsYWdzJiYocHQuY2hlY2s9eChwdC5jaGVjayxwbix2aSxHZSkpLHZyLT12aSxHZSs9dmkscmEpYnJlYWsgZX1lbHNl'@; put 'IHB0LmhlYWQmJihwdC5oZWFkLm5hbWU9bnVsbCk7cHQubGVuZ3RoPTAscHQubW9kZT04O2Nhc2UgODppZig0MDk2JnB0LmZsYWdzKXtpZigwPT09dnIpYnJlYWsgZTt2aT0wO2Rve3JhPXBuW0dlK3ZpKytdLHB0LmhlYWQmJnJhJiZwdC5sZW5ndGg8NjU1MzYmJihwdC5oZWFkLmNvbW1lbnQr'@; put 'PVN0cmluZy5mcm9tQ2hhckNvZGUocmEpKX13aGlsZShyYSYmdmk8dnIpO2lmKDUxMiZwdC5mbGFncyYmKHB0LmNoZWNrPXgocHQuY2hlY2sscG4sdmksR2UpKSx2ci09dmksR2UrPXZpLHJhKWJyZWFrIGV9ZWxzZSBwdC5oZWFkJiYocHQuaGVhZC5jb21tZW50PW51bGwpO3B0Lm1vZGU9OTtj'@; put 'YXNlIDk6aWYoNTEyJnB0LmZsYWdzKXtmb3IoO3puPDE2Oyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fWlmKEJ0IT09KDY1NTM1JnB0LmNoZWNrKSl7WnQubXNnPSJoZWFkZXIgY3JjIG1pc21hdGNoIixwdC5tb2RlPTMwO2JyZWFrfUJ0PTAsem49MH1w'@; put 'dC5oZWFkJiYocHQuaGVhZC5oY3JjPXB0LmZsYWdzPj45JjEscHQuaGVhZC5kb25lPSEwKSxadC5hZGxlcj1wdC5jaGVjaz0wLHB0Lm1vZGU9MTI7YnJlYWs7Y2FzZSAxMDpmb3IoO3puPDMyOyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fVp0LmFkbGVy'@; put 'PXB0LmNoZWNrPVh0KEJ0KSxCdD0wLHpuPTAscHQubW9kZT0xMTtjYXNlIDExOmlmKDA9PT1wdC5oYXZlZGljdClyZXR1cm4gWnQubmV4dF9vdXQ9VXQsWnQuYXZhaWxfb3V0PXh0LFp0Lm5leHRfaW49R2UsWnQuYXZhaWxfaW49dnIscHQuaG9sZD1CdCxwdC5iaXRzPXpuLDI7WnQuYWRsZXI9'@; put 'cHQuY2hlY2s9MSxwdC5tb2RlPTEyO2Nhc2UgMTI6aWYoNT09PU5ufHw2PT09Tm4pYnJlYWsgZTtjYXNlIDEzOmlmKHB0Lmxhc3Qpe0J0Pj4+PTcmem4sem4tPTcmem4scHQubW9kZT0yNzticmVha31mb3IoO3puPDM7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4s'@; put 'em4rPTh9c3dpdGNoKHB0Lmxhc3Q9MSZCdCx6bi09MSwzJihCdD4+Pj0xKSl7Y2FzZSAwOnB0Lm1vZGU9MTQ7YnJlYWs7Y2FzZSAxOmlmKFNuKHB0KSxwdC5tb2RlPTIwLDY9PT1Obil7QnQ+Pj49Mix6bi09MjticmVhayBlfWJyZWFrO2Nhc2UgMjpwdC5tb2RlPTE3O2JyZWFrO2Nhc2UgMzpa'@; put 'dC5tc2c9ImludmFsaWQgYmxvY2sgdHlwZSIscHQubW9kZT0zMH1CdD4+Pj0yLHpuLT0yO2JyZWFrO2Nhc2UgMTQ6Zm9yKEJ0Pj4+PTcmem4sem4tPTcmem47em48MzI7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9aWYoKDY1NTM1JkJ0KSE9KEJ0Pj4+'@; put 'MTZeNjU1MzUpKXtadC5tc2c9ImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiLHB0Lm1vZGU9MzA7YnJlYWt9aWYocHQubGVuZ3RoPTY1NTM1JkJ0LEJ0PTAsem49MCxwdC5tb2RlPTE1LDY9PT1ObilicmVhayBlO2Nhc2UgMTU6cHQubW9kZT0xNjtjYXNlIDE2OmlmKHZpPXB0Lmxlbmd0'@; put 'aCl7aWYodmk+dnImJih2aT12ciksdmk+eHQmJih2aT14dCksMD09PXZpKWJyZWFrIGU7TC5hcnJheVNldChNaSxwbixHZSx2aSxVdCksdnItPXZpLEdlKz12aSx4dC09dmksVXQrPXZpLHB0Lmxlbmd0aC09dmk7YnJlYWt9cHQubW9kZT0xMjticmVhaztjYXNlIDE3OmZvcig7em48MTQ7KXtp'@; put 'ZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9aWYocHQubmxlbj0yNTcrKDMxJkJ0KSx6bi09NSxwdC5uZGlzdD0xKygzMSYoQnQ+Pj49NSkpLHpuLT01LHB0Lm5jb2RlPTQrKDE1JihCdD4+Pj01KSksQnQ+Pj49NCx6bi09NCxwdC5ubGVuPjI4Nnx8cHQubmRp'@; put 'c3Q+MzApe1p0Lm1zZz0idG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMiLHB0Lm1vZGU9MzA7YnJlYWt9cHQuaGF2ZT0wLHB0Lm1vZGU9MTg7Y2FzZSAxODpmb3IoO3B0LmhhdmU8cHQubmNvZGU7KXtmb3IoO3puPDM7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltH'@; put 'ZSsrXTw8em4sem4rPTh9cHQubGVuc1trc1twdC5oYXZlKytdXT03JkJ0LEJ0Pj4+PTMsem4tPTN9Zm9yKDtwdC5oYXZlPDE5OylwdC5sZW5zW2tzW3B0LmhhdmUrK11dPTA7aWYocHQubGVuY29kZT1wdC5sZW5keW4scHQubGVuYml0cz03LGNhPUgoMCxwdC5sZW5zLDAsMTkscHQubGVuY29k'@; put 'ZSwwLHB0LndvcmssaG89e2JpdHM6cHQubGVuYml0c30pLHB0LmxlbmJpdHM9aG8uYml0cyxjYSl7WnQubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLHB0Lm1vZGU9MzA7YnJlYWt9cHQuaGF2ZT0wLHB0Lm1vZGU9MTk7Y2FzZSAxOTpmb3IoO3B0LmhhdmU8cHQubmxlbitwdC5uZGlz'@; put 'dDspe2Zvcig7Qm49KHBvPXB0LmxlbmNvZGVbQnQmKDE8PHB0LmxlbmJpdHMpLTFdKT4+PjE2JjI1NSxqYT02NTUzNSZwbywhKCh2bj1wbz4+PjI0KTw9em4pOyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fWlmKGphPDE2KUJ0Pj4+PXZuLHpuLT12bixw'@; put 'dC5sZW5zW3B0LmhhdmUrK109amE7ZWxzZXtpZigxNj09PWphKXtmb3IoTWE9dm4rMjt6bjxNYTspe2lmKDA9PT12cilicmVhayBlO3ZyLS0sQnQrPXBuW0dlKytdPDx6bix6bis9OH1pZihCdD4+Pj12bix6bi09dm4sMD09PXB0LmhhdmUpe1p0Lm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJl'@; put 'cGVhdCIscHQubW9kZT0zMDticmVha31yYT1wdC5sZW5zW3B0LmhhdmUtMV0sdmk9MysoMyZCdCksQnQ+Pj49Mix6bi09Mn1lbHNlIGlmKDE3PT09amEpe2ZvcihNYT12biszO3puPE1hOyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fXpuLT12bixyYT0w'@; put 'LHZpPTMrKDcmKEJ0Pj4+PXZuKSksQnQ+Pj49Myx6bi09M31lbHNle2ZvcihNYT12bis3O3puPE1hOyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdCs9cG5bR2UrK108PHpuLHpuKz04fXpuLT12bixyYT0wLHZpPTExKygxMjcmKEJ0Pj4+PXZuKSksQnQ+Pj49Nyx6bi09N31pZihwdC5oYXZl'@; put 'K3ZpPnB0Lm5sZW4rcHQubmRpc3Qpe1p0Lm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIscHQubW9kZT0zMDticmVha31mb3IoO3ZpLS07KXB0LmxlbnNbcHQuaGF2ZSsrXT1yYX19aWYoMzA9PT1wdC5tb2RlKWJyZWFrO2lmKDA9PT1wdC5sZW5zWzI1Nl0pe1p0Lm1zZz0iaW52YWxp'@; put 'ZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrIixwdC5tb2RlPTMwO2JyZWFrfWlmKHB0LmxlbmJpdHM9OSxjYT1IKDEscHQubGVucywwLHB0Lm5sZW4scHQubGVuY29kZSwwLHB0LndvcmssaG89e2JpdHM6cHQubGVuYml0c30pLHB0LmxlbmJpdHM9aG8uYml0cyxjYSl7WnQubXNnPSJp'@; put 'bnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQiLHB0Lm1vZGU9MzA7YnJlYWt9aWYocHQuZGlzdGJpdHM9NixwdC5kaXN0Y29kZT1wdC5kaXN0ZHluLGNhPUgoMixwdC5sZW5zLHB0Lm5sZW4scHQubmRpc3QscHQuZGlzdGNvZGUsMCxwdC53b3JrLGhvPXtiaXRzOnB0LmRpc3RiaXRzfSkscHQu'@; put 'ZGlzdGJpdHM9aG8uYml0cyxjYSl7WnQubXNnPSJpbnZhbGlkIGRpc3RhbmNlcyBzZXQiLHB0Lm1vZGU9MzA7YnJlYWt9aWYocHQubW9kZT0yMCw2PT09Tm4pYnJlYWsgZTtjYXNlIDIwOnB0Lm1vZGU9MjE7Y2FzZSAyMTppZih2cj49NiYmeHQ+PTI1OCl7WnQubmV4dF9vdXQ9VXQsWnQuYXZh'@; put 'aWxfb3V0PXh0LFp0Lm5leHRfaW49R2UsWnQuYXZhaWxfaW49dnIscHQuaG9sZD1CdCxwdC5iaXRzPXpuLFUoWnQseW4pLFV0PVp0Lm5leHRfb3V0LE1pPVp0Lm91dHB1dCx4dD1adC5hdmFpbF9vdXQsR2U9WnQubmV4dF9pbixwbj1adC5pbnB1dCx2cj1adC5hdmFpbF9pbixCdD1wdC5ob2xk'@; put 'LHpuPXB0LmJpdHMsMTI9PT1wdC5tb2RlJiYocHQuYmFjaz0tMSk7YnJlYWt9Zm9yKHB0LmJhY2s9MDtCbj0ocG89cHQubGVuY29kZVtCdCYoMTw8cHQubGVuYml0cyktMV0pPj4+MTYmMjU1LGphPTY1NTM1JnBvLCEoKHZuPXBvPj4+MjQpPD16bik7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0t'@; put 'LEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9aWYoQm4mJiEoMjQwJkJuKSl7Zm9yKGpvPXZuLFhyPUJuLGVhPWphO0JuPShwbz1wdC5sZW5jb2RlW2VhKygoQnQmKDE8PGpvK1hyKS0xKT4+am8pXSk+Pj4xNiYyNTUsamE9NjU1MzUmcG8sIShqbysodm49cG8+Pj4yNCk8PXpuKTspe2lmKDA9PT12'@; put 'cilicmVhayBlO3ZyLS0sQnQrPXBuW0dlKytdPDx6bix6bis9OH1CdD4+Pj1qbyx6bi09am8scHQuYmFjays9am99aWYoQnQ+Pj49dm4sem4tPXZuLHB0LmJhY2srPXZuLHB0Lmxlbmd0aD1qYSwwPT09Qm4pe3B0Lm1vZGU9MjY7YnJlYWt9aWYoMzImQm4pe3B0LmJhY2s9LTEscHQubW9kZT0x'@; put 'MjticmVha31pZig2NCZCbil7WnQubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLHB0Lm1vZGU9MzA7YnJlYWt9cHQuZXh0cmE9MTUmQm4scHQubW9kZT0yMjtjYXNlIDIyOmlmKHB0LmV4dHJhKXtmb3IoTWE9cHQuZXh0cmE7em48TWE7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0t'@; put 'LEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9cHQubGVuZ3RoKz1CdCYoMTw8cHQuZXh0cmEpLTEsQnQ+Pj49cHQuZXh0cmEsem4tPXB0LmV4dHJhLHB0LmJhY2srPXB0LmV4dHJhfXB0Lndhcz1wdC5sZW5ndGgscHQubW9kZT0yMztjYXNlIDIzOmZvcig7Qm49KHBvPXB0LmRpc3Rjb2RlW0J0Jigx'@; put 'PDxwdC5kaXN0Yml0cyktMV0pPj4+MTYmMjU1LGphPTY1NTM1JnBvLCEoKHZuPXBvPj4+MjQpPD16bik7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9aWYoISgyNDAmQm4pKXtmb3Ioam89dm4sWHI9Qm4sZWE9amE7Qm49KHBvPXB0LmRpc3Rjb2RlW2Vh'@; put 'KygoQnQmKDE8PGpvK1hyKS0xKT4+am8pXSk+Pj4xNiYyNTUsamE9NjU1MzUmcG8sIShqbysodm49cG8+Pj4yNCk8PXpuKTspe2lmKDA9PT12cilicmVhayBlO3ZyLS0sQnQrPXBuW0dlKytdPDx6bix6bis9OH1CdD4+Pj1qbyx6bi09am8scHQuYmFjays9am99aWYoQnQ+Pj49dm4sem4tPXZu'@; put 'LHB0LmJhY2srPXZuLDY0JkJuKXtadC5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIscHQubW9kZT0zMDticmVha31wdC5vZmZzZXQ9amEscHQuZXh0cmE9MTUmQm4scHQubW9kZT0yNDtjYXNlIDI0OmlmKHB0LmV4dHJhKXtmb3IoTWE9cHQuZXh0cmE7em48TWE7KXtpZigwPT09dnIpYnJl'@; put 'YWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9cHQub2Zmc2V0Kz1CdCYoMTw8cHQuZXh0cmEpLTEsQnQ+Pj49cHQuZXh0cmEsem4tPXB0LmV4dHJhLHB0LmJhY2srPXB0LmV4dHJhfWlmKHB0Lm9mZnNldD5wdC5kbWF4KXtadC5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBi'@; put 'YWNrIixwdC5tb2RlPTMwO2JyZWFrfXB0Lm1vZGU9MjU7Y2FzZSAyNTppZigwPT09eHQpYnJlYWsgZTtpZihwdC5vZmZzZXQ+KHZpPXluLXh0KSl7aWYoKHZpPXB0Lm9mZnNldC12aSk+cHQud2hhdmUmJnB0LnNhbmUpe1p0Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLHB0'@; put 'Lm1vZGU9MzA7YnJlYWt9cnI9dmk+cHQud25leHQ/cHQud3NpemUtKHZpLT1wdC53bmV4dCk6cHQud25leHQtdmksdmk+cHQubGVuZ3RoJiYodmk9cHQubGVuZ3RoKSxocj1wdC53aW5kb3d9ZWxzZSBocj1NaSxycj1VdC1wdC5vZmZzZXQsdmk9cHQubGVuZ3RoO3ZpPnh0JiYodmk9eHQpLHh0'@; put 'LT12aSxwdC5sZW5ndGgtPXZpO2Rve01pW1V0KytdPWhyW3JyKytdfXdoaWxlKC0tdmkpOzA9PT1wdC5sZW5ndGgmJihwdC5tb2RlPTIxKTticmVhaztjYXNlIDI2OmlmKDA9PT14dClicmVhayBlO01pW1V0KytdPXB0Lmxlbmd0aCx4dC0tLHB0Lm1vZGU9MjE7YnJlYWs7Y2FzZSAyNzppZihw'@; put 'dC53cmFwKXtmb3IoO3puPDMyOyl7aWYoMD09PXZyKWJyZWFrIGU7dnItLSxCdHw9cG5bR2UrK108PHpuLHpuKz04fWlmKFp0LnRvdGFsX291dCs9eW4tPXh0LHB0LnRvdGFsKz15bix5biYmKFp0LmFkbGVyPXB0LmNoZWNrPXB0LmZsYWdzP3gocHQuY2hlY2ssTWkseW4sVXQteW4pOlIocHQu'@; put 'Y2hlY2ssTWkseW4sVXQteW4pKSx5bj14dCwocHQuZmxhZ3M/QnQ6WHQoQnQpKSE9PXB0LmNoZWNrKXtadC5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIixwdC5tb2RlPTMwO2JyZWFrfUJ0PTAsem49MH1wdC5tb2RlPTI4O2Nhc2UgMjg6aWYocHQud3JhcCYmcHQuZmxhZ3Mpe2Zvcig7em48'@; put 'MzI7KXtpZigwPT09dnIpYnJlYWsgZTt2ci0tLEJ0Kz1wbltHZSsrXTw8em4sem4rPTh9aWYoQnQhPT0oNDI5NDk2NzI5NSZwdC50b3RhbCkpe1p0Lm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIscHQubW9kZT0zMDticmVha31CdD0wLHpuPTB9cHQubW9kZT0yOTtjYXNlIDI5OmNhPTE7'@; put 'YnJlYWsgZTtjYXNlIDMwOmNhPS0zO2JyZWFrIGU7Y2FzZSAzMTpyZXR1cm4tNDtkZWZhdWx0OnJldHVybi0yfXJldHVybiBadC5uZXh0X291dD1VdCxadC5hdmFpbF9vdXQ9eHQsWnQubmV4dF9pbj1HZSxadC5hdmFpbF9pbj12cixwdC5ob2xkPUJ0LHB0LmJpdHM9em4sKHB0LndzaXplfHx5'@; put 'biE9PVp0LmF2YWlsX291dCYmcHQubW9kZTwzMCYmKHB0Lm1vZGU8Mjd8fDQhPT1ObikpJiZmdW5jdGlvbiB4cihadCxObixwdCxwbil7dmFyIE1pLEdlPVp0LnN0YXRlO3JldHVybiBudWxsPT09R2Uud2luZG93JiYoR2Uud3NpemU9MTw8R2Uud2JpdHMsR2Uud25leHQ9MCxHZS53aGF2ZT0w'@; put 'LEdlLndpbmRvdz1uZXcgTC5CdWY4KEdlLndzaXplKSkscG4+PUdlLndzaXplPyhMLmFycmF5U2V0KEdlLndpbmRvdyxObixwdC1HZS53c2l6ZSxHZS53c2l6ZSwwKSxHZS53bmV4dD0wLEdlLndoYXZlPUdlLndzaXplKTooKE1pPUdlLndzaXplLUdlLnduZXh0KT5wbiYmKE1pPXBuKSxMLmFy'@; put 'cmF5U2V0KEdlLndpbmRvdyxObixwdC1wbixNaSxHZS53bmV4dCksKHBuLT1NaSk/KEwuYXJyYXlTZXQoR2Uud2luZG93LE5uLHB0LXBuLHBuLDApLEdlLnduZXh0PXBuLEdlLndoYXZlPUdlLndzaXplKTooR2Uud25leHQrPU1pLEdlLnduZXh0PT09R2Uud3NpemUmJihHZS53bmV4dD0wKSxH'@; put 'ZS53aGF2ZTxHZS53c2l6ZSYmKEdlLndoYXZlKz1NaSkpKSwwfShadCxadC5vdXRwdXQsWnQubmV4dF9vdXQseW4tWnQuYXZhaWxfb3V0KT8ocHQubW9kZT0zMSwtNCk6KHluLT1adC5hdmFpbF9vdXQsWnQudG90YWxfaW4rPUduLT1adC5hdmFpbF9pbixadC50b3RhbF9vdXQrPXluLHB0LnRv'@; put 'dGFsKz15bixwdC53cmFwJiZ5biYmKFp0LmFkbGVyPXB0LmNoZWNrPXB0LmZsYWdzP3gocHQuY2hlY2ssTWkseW4sWnQubmV4dF9vdXQteW4pOlIocHQuY2hlY2ssTWkseW4sWnQubmV4dF9vdXQteW4pKSxadC5kYXRhX3R5cGU9cHQuYml0cysocHQubGFzdD82NDowKSsoMTI9PT1wdC5tb2Rl'@; put 'PzEyODowKSsoMjA9PT1wdC5tb2RlfHwxNT09PXB0Lm1vZGU/MjU2OjApLCgwPT09R24mJjA9PT15bnx8ND09PU5uKSYmMD09PWNhJiYoY2E9LTUpLGNhKX0sUy5pbmZsYXRlRW5kPWZ1bmN0aW9uIEFyKFp0KXtpZighWnR8fCFadC5zdGF0ZSlyZXR1cm4tMjt2YXIgTm49WnQuc3RhdGU7cmV0'@; put 'dXJuIE5uLndpbmRvdyYmKE5uLndpbmRvdz1udWxsKSxadC5zdGF0ZT1udWxsLDB9LFMuaW5mbGF0ZUdldEhlYWRlcj1mdW5jdGlvbiBfbihadCxObil7dmFyIHB0O3JldHVybiBadCYmWnQuc3RhdGUmJjImKHB0PVp0LnN0YXRlKS53cmFwPyhwdC5oZWFkPU5uLE5uLmRvbmU9ITEsMCk6LTJ9'@; put 'LFMuaW5mbGF0ZUluZm89InBha28gaW5mbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCkifSx7Ii4uL3V0aWxzL2NvbW1vbiI6MjcsIi4vYWRsZXIzMiI6MjksIi4vY3JjMzIiOjMxLCIuL2luZmZhc3QiOjM0LCIuL2luZnRyZWVzIjozNn1dLDM2OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciBMPUMoIi4uL3V0aWxzL2NvbW1vbiIpLHo9WzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSxZPVsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNywxNywxNywxNywx'@; put 'OCwxOCwxOCwxOCwxOSwxOSwxOSwxOSwyMCwyMCwyMCwyMCwyMSwyMSwyMSwyMSwxNiw3Miw3OF0sRj1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1'@; put 'LDI0NTc3LDAsMF0sVz1bMTYsMTYsMTYsMTYsMTcsMTcsMTgsMTgsMTksMTksMjAsMjAsMjEsMjEsMjIsMjIsMjMsMjMsMjQsMjQsMjUsMjUsMjYsMjYsMjcsMjcsMjgsMjgsMjksMjksNjQsNjRdO3cuZXhwb3J0cz1mdW5jdGlvbihyZSxtZSxDZSxJZSxrZSxxZSxYLGYpe3ZhciBfZSxQZSxv'@; put 'dCxsdCxkdCx4ZSxnZSxjZSxoZSxiPWYuYml0cyxrPTAsTT0wLEI9MCxLPTAsRz0wLEQ9MCxwPTAsST0wLHVlPTAsbmU9MCxSZT1udWxsLGFlPTAsamU9bmV3IEwuQnVmMTYoMTYpLEFlPW5ldyBMLkJ1ZjE2KDE2KSxEZT1udWxsLEZlPTA7Zm9yKGs9MDtrPD0xNTtrKyspamVba109MDtmb3Io'@; put 'TT0wO008SWU7TSsrKWplW21lW0NlK01dXSsrO2ZvcihHPWIsSz0xNTtLPj0xJiYwPT09amVbS107Sy0tKTtpZihHPksmJihHPUspLDA9PT1LKXJldHVybiBrZVtxZSsrXT0yMDk3MTUyMCxrZVtxZSsrXT0yMDk3MTUyMCxmLmJpdHM9MSwwO2ZvcihCPTE7QjxLJiYwPT09amVbQl07QisrKTtm'@; put 'b3IoRzxCJiYoRz1CKSxJPTEsaz0xO2s8PTE1O2srKylpZihJPDw9MSwoSS09amVba10pPDApcmV0dXJuLTE7aWYoST4wJiYoMD09PXJlfHwxIT09SykpcmV0dXJuLTE7Zm9yKEFlWzFdPTAsaz0xO2s8MTU7aysrKUFlW2srMV09QWVba10ramVba107Zm9yKE09MDtNPEllO00rKykwIT09bWVb'@; put 'Q2UrTV0mJihYW0FlW21lW0NlK01dXSsrXT1NKTtpZigwPT09cmU/KFJlPURlPVgseGU9MTkpOjE9PT1yZT8oUmU9eixhZS09MjU3LERlPVksRmUtPTI1Nyx4ZT0yNTYpOihSZT1GLERlPVcseGU9LTEpLG5lPTAsTT0wLGs9QixkdD1xZSxEPUcscD0wLG90PS0xLGx0PSh1ZT0xPDxHKS0xLDE9'@; put 'PT1yZSYmdWU+ODUyfHwyPT09cmUmJnVlPjU5MilyZXR1cm4gMTtmb3IoOzspe2dlPWstcCxYW01dPHhlPyhjZT0wLGhlPVhbTV0pOlhbTV0+eGU/KGNlPURlW0ZlK1hbTV1dLGhlPVJlW2FlK1hbTV1dKTooY2U9OTYsaGU9MCksX2U9MTw8ay1wLEI9UGU9MTw8RDtkb3trZVtkdCsobmU+PnAp'@; put 'KyhQZS09X2UpXT1nZTw8MjR8Y2U8PDE2fGhlfXdoaWxlKDAhPT1QZSk7Zm9yKF9lPTE8PGstMTtuZSZfZTspX2U+Pj0xO2lmKDAhPT1fZT8obmUmPV9lLTEsbmUrPV9lKTpuZT0wLE0rKywwPT09LS1qZVtrXSl7aWYoaz09PUspYnJlYWs7az1tZVtDZStYW01dXX1pZihrPkcmJihuZSZsdCkh'@; put 'PT1vdCl7Zm9yKDA9PT1wJiYocD1HKSxkdCs9QixJPTE8PChEPWstcCk7RCtwPEsmJiEoKEktPWplW0QrcF0pPD0wKTspRCsrLEk8PD0xO2lmKHVlKz0xPDxELDE9PT1yZSYmdWU+ODUyfHwyPT09cmUmJnVlPjU5MilyZXR1cm4gMTtrZVtvdD1uZSZsdF09Rzw8MjR8RDw8MTZ8ZHQtcWV9fXJl'@; put 'dHVybiAwIT09bmUmJihrZVtkdCtuZV09ay1wPDwyNHw2NDw8MTYpLGYuYml0cz1HLDB9fSx7Ii4uL3V0aWxzL2NvbW1vbiI6Mjd9XSwzNzpbZnVuY3Rpb24oQyx3LFMpeyJ1c2Ugc3RyaWN0Ijt3LmV4cG9ydHM9ezI6Im5lZWQgZGljdGlvbmFyeSIsMToic3RyZWFtIGVuZCIsMDoiIiwiLTEi'@; put 'OiJmaWxlIGVycm9yIiwiLTIiOiJzdHJlYW0gZXJyb3IiLCItMyI6ImRhdGEgZXJyb3IiLCItNCI6Imluc3VmZmljaWVudCBtZW1vcnkiLCItNSI6ImJ1ZmZlciBlcnJvciIsIi02IjoiaW5jb21wYXRpYmxlIHZlcnNpb24ifX0se31dLDM4OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3Qi'@; put 'O3ZhciBMPUMoIi4uL3V0aWxzL2NvbW1vbiIpO2Z1bmN0aW9uIFYoVHQpe2Zvcih2YXIgQXI9VHQubGVuZ3RoOy0tQXI+PTA7KVR0W0FyXT0wfXZhciBLPVswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdLEc9WzAsMCwwLDAsMSwxLDIs'@; put 'MiwzLDMsNCw0LDUsNSw2LDYsNyw3LDgsOCw5LDksMTAsMTAsMTEsMTEsMTIsMTIsMTMsMTNdLEQ9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddLHA9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdLHVlPW5ldyBBcnJheSg1NzYp'@; put 'O1YodWUpO3ZhciBuZT1uZXcgQXJyYXkoNjApO1YobmUpO3ZhciBfZT1uZXcgQXJyYXkoNTEyKTtWKF9lKTt2YXIgUGU9bmV3IEFycmF5KDI1Nik7VihQZSk7dmFyIG90PW5ldyBBcnJheSgyOSk7VihvdCk7dmFyIGx0PW5ldyBBcnJheSgzMCk7VihsdCk7dmFyIFJlLGFlLHhlLGR0PWZ1bmN0'@; put 'aW9uKFR0LEFyLF9uLFp0LE5uKXt0aGlzLnN0YXRpY190cmVlPVR0LHRoaXMuZXh0cmFfYml0cz1Bcix0aGlzLmV4dHJhX2Jhc2U9X24sdGhpcy5lbGVtcz1adCx0aGlzLm1heF9sZW5ndGg9Tm4sdGhpcy5oYXNfc3RyZWU9VHQmJlR0Lmxlbmd0aH0samU9ZnVuY3Rpb24oVHQsQXIpe3RoaXMu'@; put 'ZHluX3RyZWU9VHQsdGhpcy5tYXhfY29kZT0wLHRoaXMuc3RhdF9kZXNjPUFyfTtmdW5jdGlvbiBBZShUdCl7cmV0dXJuIFR0PDI1Nj9fZVtUdF06X2VbMjU2KyhUdD4+PjcpXX1mdW5jdGlvbiBEZShUdCxBcil7VHQucGVuZGluZ19idWZbVHQucGVuZGluZysrXT0yNTUmQXIsVHQucGVuZGlu'@; put 'Z19idWZbVHQucGVuZGluZysrXT1Bcj4+PjgmMjU1fWZ1bmN0aW9uIEZlKFR0LEFyLF9uKXtUdC5iaV92YWxpZD4xNi1fbj8oVHQuYmlfYnVmfD1Bcjw8VHQuYmlfdmFsaWQmNjU1MzUsRGUoVHQsVHQuYmlfYnVmKSxUdC5iaV9idWY9QXI+PjE2LVR0LmJpX3ZhbGlkLFR0LmJpX3ZhbGlkKz1f'@; put 'bi0xNik6KFR0LmJpX2J1Znw9QXI8PFR0LmJpX3ZhbGlkJjY1NTM1LFR0LmJpX3ZhbGlkKz1fbil9ZnVuY3Rpb24gZ2UoVHQsQXIsX24pe0ZlKFR0LF9uWzIqQXJdLF9uWzIqQXIrMV0pfWZ1bmN0aW9uIGNlKFR0LEFyKXt2YXIgX249MDtkb3tfbnw9MSZUdCxUdD4+Pj0xLF9uPDw9MX13aGls'@; put 'ZSgtLUFyPjApO3JldHVybiBfbj4+PjF9ZnVuY3Rpb24gSmUoVHQsQXIsX24pe3ZhciBwdCxwbixadD1uZXcgQXJyYXkoMTYpLE5uPTA7Zm9yKHB0PTE7cHQ8PTE1O3B0KyspWnRbcHRdPU5uPU5uK19uW3B0LTFdPDwxO2Zvcihwbj0wO3BuPD1BcjtwbisrKXt2YXIgTWk9VHRbMipwbisxXTsw'@; put 'IT09TWkmJihUdFsyKnBuXT1jZShadFtNaV0rKyxNaSkpfX1mdW5jdGlvbiBLZShUdCl7dmFyIEFyO2ZvcihBcj0wO0FyPDI4NjtBcisrKVR0LmR5bl9sdHJlZVsyKkFyXT0wO2ZvcihBcj0wO0FyPDMwO0FyKyspVHQuZHluX2R0cmVlWzIqQXJdPTA7Zm9yKEFyPTA7QXI8MTk7QXIrKylUdC5i'@; put 'bF90cmVlWzIqQXJdPTA7VHQuZHluX2x0cmVlWzUxMl09MSxUdC5vcHRfbGVuPVR0LnN0YXRpY19sZW49MCxUdC5sYXN0X2xpdD1UdC5tYXRjaGVzPTB9ZnVuY3Rpb24gJHQoVHQpe1R0LmJpX3ZhbGlkPjg/RGUoVHQsVHQuYmlfYnVmKTpUdC5iaV92YWxpZD4wJiYoVHQucGVuZGluZ19idWZb'@; put 'VHQucGVuZGluZysrXT1UdC5iaV9idWYpLFR0LmJpX2J1Zj0wLFR0LmJpX3ZhbGlkPTB9ZnVuY3Rpb24gTHQoVHQsQXIsX24sWnQpe3ZhciBObj0yKkFyLHB0PTIqX247cmV0dXJuIFR0W05uXTxUdFtwdF18fFR0W05uXT09PVR0W3B0XSYmWnRbQXJdPD1adFtfbl19ZnVuY3Rpb24gR3QoVHQs'@; put 'QXIsX24pe2Zvcih2YXIgWnQ9VHQuaGVhcFtfbl0sTm49X248PDE7Tm48PVR0LmhlYXBfbGVuJiYoTm48VHQuaGVhcF9sZW4mJkx0KEFyLFR0LmhlYXBbTm4rMV0sVHQuaGVhcFtObl0sVHQuZGVwdGgpJiZObisrLCFMdChBcixadCxUdC5oZWFwW05uXSxUdC5kZXB0aCkpOylUdC5oZWFwW19u'@; put 'XT1UdC5oZWFwW05uXSxfbj1ObixObjw8PTE7VHQuaGVhcFtfbl09WnR9ZnVuY3Rpb24gZ3QoVHQsQXIsX24pe3ZhciBadCxObixwbixNaSxwdD0wO2lmKDAhPT1UdC5sYXN0X2xpdClkb3tadD1UdC5wZW5kaW5nX2J1ZltUdC5kX2J1ZisyKnB0XTw8OHxUdC5wZW5kaW5nX2J1ZltUdC5kX2J1'@; put 'ZisyKnB0KzFdLE5uPVR0LnBlbmRpbmdfYnVmW1R0LmxfYnVmK3B0XSxwdCsrLDA9PT1adD9nZShUdCxObixBcik6KGdlKFR0LChwbj1QZVtObl0pKzI1NisxLEFyKSwwIT09KE1pPUtbcG5dKSYmRmUoVHQsTm4tPW90W3BuXSxNaSksZ2UoVHQscG49QWUoLS1adCksX24pLDAhPT0oTWk9R1tw'@; put 'bl0pJiZGZShUdCxadC09bHRbcG5dLE1pKSl9d2hpbGUocHQ8VHQubGFzdF9saXQpO2dlKFR0LDI1NixBcil9ZnVuY3Rpb24gWHQoVHQsQXIpe3ZhciBwbixNaSxVdCxfbj1Bci5keW5fdHJlZSxadD1Bci5zdGF0X2Rlc2Muc3RhdGljX3RyZWUsTm49QXIuc3RhdF9kZXNjLmhhc19zdHJlZSxw'@; put 'dD1Bci5zdGF0X2Rlc2MuZWxlbXMsR2U9LTE7Zm9yKFR0LmhlYXBfbGVuPTAsVHQuaGVhcF9tYXg9NTczLHBuPTA7cG48cHQ7cG4rKykwIT09X25bMipwbl0/KFR0LmhlYXBbKytUdC5oZWFwX2xlbl09R2U9cG4sVHQuZGVwdGhbcG5dPTApOl9uWzIqcG4rMV09MDtmb3IoO1R0LmhlYXBfbGVu'@; put 'PDI7KV9uWzIqKFV0PVR0LmhlYXBbKytUdC5oZWFwX2xlbl09R2U8Mj8rK0dlOjApXT0xLFR0LmRlcHRoW1V0XT0wLFR0Lm9wdF9sZW4tLSxObiYmKFR0LnN0YXRpY19sZW4tPVp0WzIqVXQrMV0pO2ZvcihBci5tYXhfY29kZT1HZSxwbj1UdC5oZWFwX2xlbj4+MTtwbj49MTtwbi0tKUd0KFR0'@; put 'LF9uLHBuKTtVdD1wdDtkb3twbj1UdC5oZWFwWzFdLFR0LmhlYXBbMV09VHQuaGVhcFtUdC5oZWFwX2xlbi0tXSxHdChUdCxfbiwxKSxNaT1UdC5oZWFwWzFdLFR0LmhlYXBbLS1UdC5oZWFwX21heF09cG4sVHQuaGVhcFstLVR0LmhlYXBfbWF4XT1NaSxfblsyKlV0XT1fblsyKnBuXStfblsy'@; put 'Kk1pXSxUdC5kZXB0aFtVdF09KFR0LmRlcHRoW3BuXT49VHQuZGVwdGhbTWldP1R0LmRlcHRoW3BuXTpUdC5kZXB0aFtNaV0pKzEsX25bMipwbisxXT1fblsyKk1pKzFdPVV0LFR0LmhlYXBbMV09VXQrKyxHdChUdCxfbiwxKX13aGlsZShUdC5oZWFwX2xlbj49Mik7VHQuaGVhcFstLVR0Lmhl'@; put 'YXBfbWF4XT1UdC5oZWFwWzFdLGZ1bmN0aW9uIHdlKFR0LEFyKXt2YXIgVXQsdnIseHQsQnQsem4sR24sX249QXIuZHluX3RyZWUsWnQ9QXIubWF4X2NvZGUsTm49QXIuc3RhdF9kZXNjLnN0YXRpY190cmVlLHB0PUFyLnN0YXRfZGVzYy5oYXNfc3RyZWUscG49QXIuc3RhdF9kZXNjLmV4dHJh'@; put 'X2JpdHMsTWk9QXIuc3RhdF9kZXNjLmV4dHJhX2Jhc2UsR2U9QXIuc3RhdF9kZXNjLm1heF9sZW5ndGgseW49MDtmb3IoQnQ9MDtCdDw9MTU7QnQrKylUdC5ibF9jb3VudFtCdF09MDtmb3IoX25bMipUdC5oZWFwW1R0LmhlYXBfbWF4XSsxXT0wLFV0PVR0LmhlYXBfbWF4KzE7VXQ8NTczO1V0'@; put 'KyspKEJ0PV9uWzIqX25bMioodnI9VHQuaGVhcFtVdF0pKzFdKzFdKzEpPkdlJiYoQnQ9R2UseW4rKyksX25bMip2cisxXT1CdCwhKHZyPlp0KSYmKFR0LmJsX2NvdW50W0J0XSsrLHpuPTAsdnI+PU1pJiYoem49cG5bdnItTWldKSxUdC5vcHRfbGVuKz0oR249X25bMip2cl0pKihCdCt6biks'@; put 'cHQmJihUdC5zdGF0aWNfbGVuKz1HbiooTm5bMip2cisxXSt6bikpKTtpZigwIT09eW4pe2Rve2ZvcihCdD1HZS0xOzA9PT1UdC5ibF9jb3VudFtCdF07KUJ0LS07VHQuYmxfY291bnRbQnRdLS0sVHQuYmxfY291bnRbQnQrMV0rPTIsVHQuYmxfY291bnRbR2VdLS0seW4tPTJ9d2hpbGUoeW4+'@; put 'MCk7Zm9yKEJ0PUdlOzAhPT1CdDtCdC0tKWZvcih2cj1UdC5ibF9jb3VudFtCdF07MCE9PXZyOykhKCh4dD1UdC5oZWFwWy0tVXRdKT5adCkmJihfblsyKnh0KzFdIT09QnQmJihUdC5vcHRfbGVuKz0oQnQtX25bMip4dCsxXSkqX25bMip4dF0sX25bMip4dCsxXT1CdCksdnItLSl9fShUdCxB'@; put 'ciksSmUoX24sR2UsVHQuYmxfY291bnQpfWZ1bmN0aW9uIExyKFR0LEFyLF9uKXt2YXIgWnQscHQsTm49LTEscG49QXJbMV0sTWk9MCxHZT03LFV0PTQ7Zm9yKDA9PT1wbiYmKEdlPTEzOCxVdD0zKSxBclsyKihfbisxKSsxXT02NTUzNSxadD0wO1p0PD1fbjtadCsrKXB0PXBuLHBuPUFyWzIq'@; put 'KFp0KzEpKzFdLCEoKytNaTxHZSYmcHQ9PT1wbikmJihNaTxVdD9UdC5ibF90cmVlWzIqcHRdKz1NaTowIT09cHQ/KHB0IT09Tm4mJlR0LmJsX3RyZWVbMipwdF0rKyxUdC5ibF90cmVlWzMyXSsrKTpNaTw9MTA/VHQuYmxfdHJlZVszNF0rKzpUdC5ibF90cmVlWzM2XSsrLE1pPTAsTm49cHQs'@; put 'MD09PXBuPyhHZT0xMzgsVXQ9Myk6cHQ9PT1wbj8oR2U9NixVdD0zKTooR2U9NyxVdD00KSl9ZnVuY3Rpb24gbG4oVHQsQXIsX24pe3ZhciBadCxwdCxObj0tMSxwbj1BclsxXSxNaT0wLEdlPTcsVXQ9NDtmb3IoMD09PXBuJiYoR2U9MTM4LFV0PTMpLFp0PTA7WnQ8PV9uO1p0KyspaWYocHQ9'@; put 'cG4scG49QXJbMiooWnQrMSkrMV0sISgrK01pPEdlJiZwdD09PXBuKSl7aWYoTWk8VXQpZG97Z2UoVHQscHQsVHQuYmxfdHJlZSl9d2hpbGUoMCE9PS0tTWkpO2Vsc2UgMCE9PXB0PyhwdCE9PU5uJiYoZ2UoVHQscHQsVHQuYmxfdHJlZSksTWktLSksZ2UoVHQsMTYsVHQuYmxfdHJlZSksRmUo'@; put 'VHQsTWktMywyKSk6TWk8PTEwPyhnZShUdCwxNyxUdC5ibF90cmVlKSxGZShUdCxNaS0zLDMpKTooZ2UoVHQsMTgsVHQuYmxfdHJlZSksRmUoVHQsTWktMTEsNykpO01pPTAsTm49cHQsMD09PXBuPyhHZT0xMzgsVXQ9Myk6cHQ9PT1wbj8oR2U9NixVdD0zKTooR2U9NyxVdD00KX19dmFyIEhu'@; put 'PSExO2Z1bmN0aW9uIHVyKFR0LEFyLF9uLFp0KXtGZShUdCwwKyhadD8xOjApLDMpLGZ1bmN0aW9uIFJ0KFR0LEFyLF9uLFp0KXskdChUdCksWnQmJihEZShUdCxfbiksRGUoVHQsfl9uKSksTC5hcnJheVNldChUdC5wZW5kaW5nX2J1ZixUdC53aW5kb3csQXIsX24sVHQucGVuZGluZyksVHQu'@; put 'cGVuZGluZys9X259KFR0LEFyLF9uLCEwKX1TLl90cl9pbml0PWZ1bmN0aW9uIE9vKFR0KXtIbnx8KGZ1bmN0aW9uIHR0KCl7dmFyIFR0LEFyLF9uLFp0LE5uLHB0PW5ldyBBcnJheSgxNik7Zm9yKF9uPTAsWnQ9MDtadDwyODtadCsrKWZvcihvdFtadF09X24sVHQ9MDtUdDwxPDxLW1p0XTtU'@; put 'dCsrKVBlW19uKytdPVp0O2ZvcihQZVtfbi0xXT1adCxObj0wLFp0PTA7WnQ8MTY7WnQrKylmb3IobHRbWnRdPU5uLFR0PTA7VHQ8MTw8R1tadF07VHQrKylfZVtObisrXT1adDtmb3IoTm4+Pj03O1p0PDMwO1p0KyspZm9yKGx0W1p0XT1Objw8NyxUdD0wO1R0PDE8PEdbWnRdLTc7VHQrKylf'@; put 'ZVsyNTYrTm4rK109WnQ7Zm9yKEFyPTA7QXI8PTE1O0FyKyspcHRbQXJdPTA7Zm9yKFR0PTA7VHQ8PTE0MzspdWVbMipUdCsxXT04LFR0KysscHRbOF0rKztmb3IoO1R0PD0yNTU7KXVlWzIqVHQrMV09OSxUdCsrLHB0WzldKys7Zm9yKDtUdDw9Mjc5Oyl1ZVsyKlR0KzFdPTcsVHQrKyxwdFs3'@; put 'XSsrO2Zvcig7VHQ8PTI4NzspdWVbMipUdCsxXT04LFR0KysscHRbOF0rKztmb3IoSmUodWUsMjg3LHB0KSxUdD0wO1R0PDMwO1R0KyspbmVbMipUdCsxXT01LG5lWzIqVHRdPWNlKFR0LDUpO1JlPW5ldyBkdCh1ZSxLLDI1NywyODYsMTUpLGFlPW5ldyBkdChuZSxHLDAsMzAsMTUpLHhlPW5l'@; put 'dyBkdChuZXcgQXJyYXkoMCksRCwwLDE5LDcpfSgpLEhuPSEwKSxUdC5sX2Rlc2M9bmV3IGplKFR0LmR5bl9sdHJlZSxSZSksVHQuZF9kZXNjPW5ldyBqZShUdC5keW5fZHRyZWUsYWUpLFR0LmJsX2Rlc2M9bmV3IGplKFR0LmJsX3RyZWUseGUpLFR0LmJpX2J1Zj0wLFR0LmJpX3ZhbGlkPTAs'@; put 'S2UoVHQpfSxTLl90cl9zdG9yZWRfYmxvY2s9dXIsUy5fdHJfZmx1c2hfYmxvY2s9ZnVuY3Rpb24gU24oVHQsQXIsX24sWnQpe3ZhciBObixwdCxwbj0wO1R0LmxldmVsPjA/KDI9PT1UdC5zdHJtLmRhdGFfdHlwZSYmKFR0LnN0cm0uZGF0YV90eXBlPWZ1bmN0aW9uIHRyKFR0KXt2YXIgX24s'@; put 'QXI9NDA5MzYyNDQ0Nztmb3IoX249MDtfbjw9MzE7X24rKyxBcj4+Pj0xKWlmKDEmQXImJjAhPT1UdC5keW5fbHRyZWVbMipfbl0pcmV0dXJuIDA7aWYoMCE9PVR0LmR5bl9sdHJlZVsxOF18fDAhPT1UdC5keW5fbHRyZWVbMjBdfHwwIT09VHQuZHluX2x0cmVlWzI2XSlyZXR1cm4gMTtmb3Io'@; put 'X249MzI7X248MjU2O19uKyspaWYoMCE9PVR0LmR5bl9sdHJlZVsyKl9uXSlyZXR1cm4gMTtyZXR1cm4gMH0oVHQpKSxYdChUdCxUdC5sX2Rlc2MpLFh0KFR0LFR0LmRfZGVzYykscG49ZnVuY3Rpb24gT24oVHQpe3ZhciBBcjtmb3IoTHIoVHQsVHQuZHluX2x0cmVlLFR0LmxfZGVzYy5tYXhf'@; put 'Y29kZSksTHIoVHQsVHQuZHluX2R0cmVlLFR0LmRfZGVzYy5tYXhfY29kZSksWHQoVHQsVHQuYmxfZGVzYyksQXI9MTg7QXI+PTMmJjA9PT1UdC5ibF90cmVlWzIqcFtBcl0rMV07QXItLSk7cmV0dXJuIFR0Lm9wdF9sZW4rPTMqKEFyKzEpKzUrNSs0LEFyfShUdCksKHB0PVR0LnN0YXRpY19s'@; put 'ZW4rMys3Pj4+Myk8PShObj1UdC5vcHRfbGVuKzMrNz4+PjMpJiYoTm49cHQpKTpObj1wdD1fbis1LF9uKzQ8PU5uJiYtMSE9PUFyP3VyKFR0LEFyLF9uLFp0KTo0PT09VHQuc3RyYXRlZ3l8fHB0PT09Tm4/KEZlKFR0LDIrKFp0PzE6MCksMyksZ3QoVHQsdWUsbmUpKTooRmUoVHQsNCsoWnQ/'@; put 'MTowKSwzKSxmdW5jdGlvbiBRcihUdCxBcixfbixadCl7dmFyIE5uO2ZvcihGZShUdCxBci0yNTcsNSksRmUoVHQsX24tMSw1KSxGZShUdCxadC00LDQpLE5uPTA7Tm48WnQ7Tm4rKylGZShUdCxUdC5ibF90cmVlWzIqcFtObl0rMV0sMyk7bG4oVHQsVHQuZHluX2x0cmVlLEFyLTEpLGxuKFR0'@; put 'LFR0LmR5bl9kdHJlZSxfbi0xKX0oVHQsVHQubF9kZXNjLm1heF9jb2RlKzEsVHQuZF9kZXNjLm1heF9jb2RlKzEscG4rMSksZ3QoVHQsVHQuZHluX2x0cmVlLFR0LmR5bl9kdHJlZSkpLEtlKFR0KSxadCYmJHQoVHQpfSxTLl90cl90YWxseT1mdW5jdGlvbiB4cihUdCxBcixfbil7cmV0dXJu'@; put 'IFR0LnBlbmRpbmdfYnVmW1R0LmRfYnVmKzIqVHQubGFzdF9saXRdPUFyPj4+OCYyNTUsVHQucGVuZGluZ19idWZbVHQuZF9idWYrMipUdC5sYXN0X2xpdCsxXT0yNTUmQXIsVHQucGVuZGluZ19idWZbVHQubF9idWYrVHQubGFzdF9saXRdPTI1NSZfbixUdC5sYXN0X2xpdCsrLDA9PT1Bcj9U'@; put 'dC5keW5fbHRyZWVbMipfbl0rKzooVHQubWF0Y2hlcysrLEFyLS0sVHQuZHluX2x0cmVlWzIqKFBlW19uXSsyNTYrMSldKyssVHQuZHluX2R0cmVlWzIqQWUoQXIpXSsrKSxUdC5sYXN0X2xpdD09PVR0LmxpdF9idWZzaXplLTF9LFMuX3RyX2FsaWduPWZ1bmN0aW9uIFpuKFR0KXtGZShUdCwy'@; put 'LDMpLGdlKFR0LDI1Nix1ZSksZnVuY3Rpb24gaGUoVHQpezE2PT09VHQuYmlfdmFsaWQ/KERlKFR0LFR0LmJpX2J1ZiksVHQuYmlfYnVmPTAsVHQuYmlfdmFsaWQ9MCk6VHQuYmlfdmFsaWQ+PTgmJihUdC5wZW5kaW5nX2J1ZltUdC5wZW5kaW5nKytdPTI1NSZUdC5iaV9idWYsVHQuYmlfYnVm'@; put 'Pj49OCxUdC5iaV92YWxpZC09OCl9KFR0KX19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM5OltmdW5jdGlvbihDLHcsUyl7InVzZSBzdHJpY3QiO3cuZXhwb3J0cz1mdW5jdGlvbiBMKCl7dGhpcy5pbnB1dD1udWxsLHRoaXMubmV4dF9pbj0wLHRoaXMuYXZhaWxfaW49MCx0aGlzLnRvdGFs'@; put 'X2luPTAsdGhpcy5vdXRwdXQ9bnVsbCx0aGlzLm5leHRfb3V0PTAsdGhpcy5hdmFpbF9vdXQ9MCx0aGlzLnRvdGFsX291dD0wLHRoaXMubXNnPSIiLHRoaXMuc3RhdGU9bnVsbCx0aGlzLmRhdGFfdHlwZT0yLHRoaXMuYWRsZXI9MH19LHt9XX0se30sWzldKSg5KX0pfSw2MzU3OChmZSxqLGgp'@; put 'eyFmdW5jdGlvbiBjKHYpe3YudmVyc2lvbj0iMS4yMDIxMTEyMi4xIjt2YXIgQz0xMjAwLHc9MTI1Mjt0eXBlb2YgY3B0YWJsZT4idSImJih0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWwuY3B0YWJsZT1oKDQyOTI0KTp0eXBlb2Ygd2luZG93PCJ1IiYmKHdpbmRvdy5jcHRhYmxlPWgoNDI5MjQp'@; put 'KSk7Zm9yKHZhciBTPVs4NzQsOTMyLDkzNiw5NDksOTUwLDFlNF0sTD0wO0w8PTg7KytMKVMucHVzaCgxMjUwK0wpO3ZhciBSPXswOjEyNTIsMTo2NTAwMSwyOjY1MDAxLDc3OjFlNCwxMjg6OTMyLDEyOTo5NDksMTMwOjEzNjEsMTM0OjkzNiwxMzY6OTUwLDE2MToxMjUzLDE2MjoxMjU0LDE2'@; put 'MzoxMjU4LDE3NzoxMjU1LDE3ODoxMjU2LDE4NjoxMjU3LDIwNDoxMjUxLDIyMjo4NzQsMjM4OjEyNTAsMjU1OjEyNTIsNjk6Njk2OX0seD1mdW5jdGlvbihkKXstMSE9Uy5pbmRleE9mKGQpJiYodz1SWzBdPWQpfSxIPWZ1bmN0aW9uKGQpe0M9ZCx4KGQpfTtmdW5jdGlvbiBWKCl7SCgxMjAw'@; put 'KSxmdW5jdGlvbiBVKCl7eCgxMjUyKX0oKX1mdW5jdGlvbiBOKGQpe2Zvcih2YXIgXz1bXSxtPTAsVD1kLmxlbmd0aDttPFQ7KyttKV9bbV09ZC5jaGFyQ29kZUF0KG0pO3JldHVybiBffXZhciBGPWZ1bmN0aW9uKGQpe3ZhciBfPWQuY2hhckNvZGVBdCgwKSxtPWQuY2hhckNvZGVBdCgxKTty'@; put 'ZXR1cm4gMjU1PT1fJiYyNTQ9PW0/ZnVuY3Rpb24geihkKXtmb3IodmFyIF89W10sbT0wO208ZC5sZW5ndGg+PjE7KyttKV9bbV09U3RyaW5nLmZyb21DaGFyQ29kZShkLmNoYXJDb2RlQXQoMiptKSsoZC5jaGFyQ29kZUF0KDIqbSsxKTw8OCkpO3JldHVybiBfLmpvaW4oIiIpfShkLnNsaWNl'@; put 'KDIpKToyNTQ9PV8mJjI1NT09bT9mdW5jdGlvbiBZKGQpe2Zvcih2YXIgXz1bXSxtPTA7bTxkLmxlbmd0aD4+MTsrK20pX1ttXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGQuY2hhckNvZGVBdCgyKm0rMSkrKGQuY2hhckNvZGVBdCgyKm0pPDw4KSk7cmV0dXJuIF8uam9pbigiIil9KGQuc2xpY2Uo'@; put 'MikpOjY1Mjc5PT1fP2Quc2xpY2UoMSk6ZH0sVz1mdW5jdGlvbihfKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShfKX0scT1mdW5jdGlvbihfKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShfKX07dHlwZW9mIGNwdGFibGU8InUiJiYoSD1mdW5jdGlvbihkKXtDPWQseChkKX0sRj1m'@; put 'dW5jdGlvbihkKXtyZXR1cm4gMjU1PT09ZC5jaGFyQ29kZUF0KDApJiYyNTQ9PT1kLmNoYXJDb2RlQXQoMSk/Y3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCxOKGQuc2xpY2UoMikpKTpkfSxXPWZ1bmN0aW9uKF8pe3JldHVybiAxMjAwPT09Qz9TdHJpbmcuZnJvbUNoYXJDb2RlKF8pOmNwdGFi'@; put 'bGUudXRpbHMuZGVjb2RlKEMsWzI1NSZfLF8+PjhdKVswXX0scT1mdW5jdGlvbihfKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUodyxbX10pWzBdfSk7dmFyIENlPWZ1bmN0aW9uKCl7dmFyIF89IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4'@; put 'eXowMTIzNDU2Nzg5Ky89IjtyZXR1cm57ZW5jb2RlOmZ1bmN0aW9uKG0pe2Zvcih2YXIgVD0iIixQPTAsUT0wLHNlPTAsb2U9MCxkZT0wLExlPTAsTmU9MCxCZT0wO0JlPG0ubGVuZ3RoOylvZT0oUD1tLmNoYXJDb2RlQXQoQmUrKykpPj4yLGRlPSgzJlApPDw0fChRPW0uY2hhckNvZGVBdChC'@; put 'ZSsrKSk+PjQsTGU9KDE1JlEpPDwyfChzZT1tLmNoYXJDb2RlQXQoQmUrKykpPj42LE5lPTYzJnNlLGlzTmFOKFEpP0xlPU5lPTY0OmlzTmFOKHNlKSYmKE5lPTY0KSxUKz1fLmNoYXJBdChvZSkrXy5jaGFyQXQoZGUpK18uY2hhckF0KExlKStfLmNoYXJBdChOZSk7cmV0dXJuIFR9LGRlY29k'@; put 'ZTpmdW5jdGlvbihUKXt2YXIgUD0iIixkZT0wLExlPTAsTmU9MCxCZT0wO1Q9VC5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIFplPTA7WmU8VC5sZW5ndGg7KWRlPV8uaW5kZXhPZihULmNoYXJBdChaZSsrKSksTGU9Xy5pbmRleE9mKFQuY2hhckF0KFplKyspKSxQKz1TdHJp'@; put 'bmcuZnJvbUNoYXJDb2RlKGRlPDwyfExlPj40KSw2NCE9PShOZT1fLmluZGV4T2YoVC5jaGFyQXQoWmUrKykpKSYmKFArPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1JkxlKTw8NHxOZT4+MikpLDY0IT09KEJlPV8uaW5kZXhPZihULmNoYXJBdChaZSsrKSkpJiYoUCs9U3RyaW5nLmZyb21DaGFy'@; put 'Q29kZSgoMyZOZSk8PDZ8QmUpKTtyZXR1cm4gUH19fSgpLEllPXR5cGVvZiBCdWZmZXI8InUiJiZ0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPCJ1IiYmISFwcm9jZXNzLnZlcnNpb25zLm5vZGUsa2U9ZnVuY3Rpb24oKXt9O2lmKHR5cGVvZiBCdWZmZXI8InUi'@; put 'KXt2YXIgcWU9IUJ1ZmZlci5mcm9tO2lmKCFxZSl0cnl7QnVmZmVyLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaHtxZT0hMH1rZT1xZT9mdW5jdGlvbihkLF8pe3JldHVybiBfP25ldyBCdWZmZXIoZCxfKTpuZXcgQnVmZmVyKGQpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlciksQnVmZmVyLmFs'@; put 'bG9jfHwoQnVmZmVyLmFsbG9jPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcgQnVmZmVyKGQpfSksQnVmZmVyLmFsbG9jVW5zYWZlfHwoQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcgQnVmZmVyKGQpfSl9ZnVuY3Rpb24gWChkKXtyZXR1cm4gSWU/QnVmZmVyLmFsbG9j'@; put 'KGQpOm5ldyBBcnJheShkKX1mdW5jdGlvbiBmKGQpe3JldHVybiBJZT9CdWZmZXIuYWxsb2NVbnNhZmUoZCk6bmV3IEFycmF5KGQpfXZhciBiPWZ1bmN0aW9uKF8pe3JldHVybiBJZT9rZShfLCJiaW5hcnkiKTpfLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIDI1NSZtLmNoYXJD'@; put 'b2RlQXQoMCl9KX07ZnVuY3Rpb24gayhkKXtpZih0eXBlb2YgQXJyYXlCdWZmZXI+InUiKXJldHVybiBiKGQpO2Zvcih2YXIgXz1uZXcgQXJyYXlCdWZmZXIoZC5sZW5ndGgpLG09bmV3IFVpbnQ4QXJyYXkoXyksVD0wO1QhPWQubGVuZ3RoOysrVCltW1RdPTI1NSZkLmNoYXJDb2RlQXQoVCk7'@; put 'cmV0dXJuIF99ZnVuY3Rpb24gTShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkLm1hcChmdW5jdGlvbihUKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShUKX0pLmpvaW4oIiIpO2Zvcih2YXIgXz1bXSxtPTA7bTxkLmxlbmd0aDsrK20pX1ttXT1TdHJpbmcuZnJvbUNoYXJDb2Rl'@; put 'KGRbbV0pO3JldHVybiBfLmpvaW4oIiIpfWZ1bmN0aW9uIEsoZCl7aWYodHlwZW9mIEFycmF5QnVmZmVyPiJ1Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIik7aWYoZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBLKG5ldyBVaW50OEFycmF5KGQpKTtmb3IodmFyIF89bmV3'@; put 'IEFycmF5KGQubGVuZ3RoKSxtPTA7bTxkLmxlbmd0aDsrK20pX1ttXT1kW21dO3JldHVybiBffXZhciBHPWZ1bmN0aW9uKGQpe3ZhciBfPVtdO3JldHVybiBkLmZvckVhY2goZnVuY3Rpb24obSl7QXJyYXkuaXNBcnJheShtKT9fPV8uY29uY2F0KG0pOih0eXBlb2YgVWludDhBcnJheTwidSIm'@; put 'Jm0gaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZtIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpJiYoXz1fLmNvbmNhdChLKG0pKSl9KSxffSxEPS9cdTAwMDAvZyxwPS9bXHUwMDAxLVx1MDAwNl0vZyxJPXt9LHVlPWZ1bmN0aW9uKF8pe2Z1bmN0aW9uIG0o'@; put 'TnQpe2Zvcih2YXIgaG49IiIsUG49TnQubGVuZ3RoLTE7UG4+PTA7KWhuKz1OdC5jaGFyQXQoUG4tLSk7cmV0dXJuIGhufWZ1bmN0aW9uIFQoTnQsaG4pe2Zvcih2YXIgUG49IiI7UG4ubGVuZ3RoPGhuOylQbis9TnQ7cmV0dXJuIFBufWZ1bmN0aW9uIFAoTnQsaG4pe3ZhciBQbj0iIitOdDty'@; put 'ZXR1cm4gUG4ubGVuZ3RoPj1obj9QbjpUKCIwIixobi1Qbi5sZW5ndGgpK1BufWZ1bmN0aW9uIFEoTnQsaG4pe3ZhciBQbj0iIitOdDtyZXR1cm4gUG4ubGVuZ3RoPj1obj9QbjpUKCIgIixobi1Qbi5sZW5ndGgpK1BufWZ1bmN0aW9uIHNlKE50LGhuKXt2YXIgUG49IiIrTnQ7cmV0dXJuIFBu'@; put 'Lmxlbmd0aD49aG4/UG46UG4rVCgiICIsaG4tUG4ubGVuZ3RoKX1fLnZlcnNpb249IjEuMjAyMTA3MjYuMSI7dmFyIExlPU1hdGgucG93KDIsMzIpO2Z1bmN0aW9uIE5lKE50LGhuKXtyZXR1cm4gTnQ+TGV8fE50PC1MZT9mdW5jdGlvbiBvZShOdCxobil7dmFyIFBuPSIiK01hdGgucm91bmQo'@; put 'TnQpO3JldHVybiBQbi5sZW5ndGg+PWhuP1BuOlQoIjAiLGhuLVBuLmxlbmd0aCkrUG59KE50LGhuKTpmdW5jdGlvbiBkZShOdCxobil7dmFyIFBuPSIiK050O3JldHVybiBQbi5sZW5ndGg+PWhuP1BuOlQoIjAiLGhuLVBuLmxlbmd0aCkrUG59KE1hdGgucm91bmQoTnQpLGhuKX1mdW5jdGlv'@; put 'biBCZShOdCxobil7cmV0dXJuIE50Lmxlbmd0aD49NysoaG49aG58fDApJiYxMDM9PSgzMnxOdC5jaGFyQ29kZUF0KGhuKSkmJjEwMT09KDMyfE50LmNoYXJDb2RlQXQoaG4rMSkpJiYxMTA9PSgzMnxOdC5jaGFyQ29kZUF0KGhuKzIpKSYmMTAxPT0oMzJ8TnQuY2hhckNvZGVBdChobiszKSkm'@; put 'JjExND09KDMyfE50LmNoYXJDb2RlQXQoaG4rNCkpJiY5Nz09KDMyfE50LmNoYXJDb2RlQXQoaG4rNSkpJiYxMDg9PSgzMnxOdC5jaGFyQ29kZUF0KGhuKzYpKX1mdW5jdGlvbiBaZShOdCl7Zm9yKHZhciBobj1bXSxQbj1PYmplY3Qua2V5cyhOdCksU2k9MDtTaSE9PVBuLmxlbmd0aDsrK1Np'@; put 'KWhuW050W1BuW1NpXV1dPVBuW1NpXTtyZXR1cm4gaG59dmFyIG50PVtbIlN1biIsIlN1bmRheSJdLFsiTW9uIiwiTW9uZGF5Il0sWyJUdWUiLCJUdWVzZGF5Il0sWyJXZWQiLCJXZWRuZXNkYXkiXSxbIlRodSIsIlRodXJzZGF5Il0sWyJGcmkiLCJGcmlkYXkiXSxbIlNhdCIsIlNhdHVyZGF5'@; put 'Il1dLG10PVtbIkoiLCJKYW4iLCJKYW51YXJ5Il0sWyJGIiwiRmViIiwiRmVicnVhcnkiXSxbIk0iLCJNYXIiLCJNYXJjaCJdLFsiQSIsIkFwciIsIkFwcmlsIl0sWyJNIiwiTWF5IiwiTWF5Il0sWyJKIiwiSnVuIiwiSnVuZSJdLFsiSiIsIkp1bCIsIkp1bHkiXSxbIkEiLCJBdWciLCJBdWd1'@; put 'c3QiXSxbIlMiLCJTZXAiLCJTZXB0ZW1iZXIiXSxbIk8iLCJPY3QiLCJPY3RvYmVyIl0sWyJOIiwiTm92IiwiTm92ZW1iZXIiXSxbIkQiLCJEZWMiLCJEZWNlbWJlciJdXTtmdW5jdGlvbiBRZShOdCl7TnRbMF09IkdlbmVyYWwiLE50WzFdPSIwIixOdFsyXT0iMC4wMCIsTnRbM109IiMsIyMw'@; put 'IixOdFs0XT0iIywjIzAuMDAiLE50WzldPSIwJSIsTnRbMTBdPSIwLjAwJSIsTnRbMTFdPSIwLjAwRSswMCIsTnRbMTJdPSIjID8vPyIsTnRbMTNdPSIjID8/Lz8/IixOdFsxNF09Im0vZC95eSIsTnRbMTVdPSJkLW1tbS15eSIsTnRbMTZdPSJkLW1tbSIsTnRbMTddPSJtbW0teXkiLE50WzE4'@; put 'XT0iaDptbSBBTS9QTSIsTnRbMTldPSJoOm1tOnNzIEFNL1BNIixOdFsyMF09Img6bW0iLE50WzIxXT0iaDptbTpzcyIsTnRbMjJdPSJtL2QveXkgaDptbSIsTnRbMzddPSIjLCMjMCA7KCMsIyMwKSIsTnRbMzhdPSIjLCMjMCA7W1JlZF0oIywjIzApIixOdFszOV09IiMsIyMwLjAwOygjLCMj'@; put 'MC4wMCkiLE50WzQwXT0iIywjIzAuMDA7W1JlZF0oIywjIzAuMDApIixOdFs0NV09Im1tOnNzIixOdFs0Nl09IltoXTptbTpzcyIsTnRbNDddPSJtbXNzLjAiLE50WzQ4XT0iIyMwLjBFKzAiLE50WzQ5XT0iQCIsTnRbNTZdPSciXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCAiaGgiXHU2NjQy'@; put 'Im1tIlx1NTIwNiJzcyJcdTc5ZDIgIicsTW4oTnQpfXZhciBmdD17fTtRZShmdCk7dmFyIGt0PVtdLGJ0PTA7Zm9yKGJ0PTU7YnQ8PTg7KytidClrdFtidF09MzIrYnQ7Zm9yKGJ0PTIzO2J0PD0yNjsrK2J0KWt0W2J0XT0wO2ZvcihidD0yNztidDw9MzE7KytidClrdFtidF09MTQ7Zm9yKGJ0'@; put 'PTUwO2J0PD01ODsrK2J0KWt0W2J0XT0xNDtmb3IoYnQ9NTk7YnQ8PTYyOysrYnQpa3RbYnRdPWJ0LTU4O2ZvcihidD02NztidDw9Njg7KytidClrdFtidF09YnQtNTg7Zm9yKGJ0PTcyO2J0PD03NTsrK2J0KWt0W2J0XT1idC01ODtmb3IoYnQ9Njc7YnQ8PTY4OysrYnQpa3RbYnRdPWJ0LTU3'@; put 'O2ZvcihidD03NjtidDw9Nzg7KytidClrdFtidF09YnQtNTY7Zm9yKGJ0PTc5O2J0PD04MTsrK2J0KWt0W2J0XT1idC0zNDt2YXIgRXQ9W107ZnVuY3Rpb24gVnQoTnQsaG4sUG4pe2Zvcih2YXIgU2k9TnQ8MD8tMToxLGVyPU50KlNpLERpPTAsYnI9MSxSaT0wLHZhPTEsTmk9MCxEbz0wLHdp'@; put 'PU1hdGguZmxvb3IoZXIpO05pPGhuJiYoUmk9KHdpPU1hdGguZmxvb3IoZXIpKSpicitEaSxEbz13aSpOaSt2YSwhKGVyLXdpPDVlLTgpKTspZXI9MS8oZXItd2kpLERpPWJyLGJyPVJpLHZhPU5pLE5pPURvO2lmKERvPmhuJiYoTmk+aG4/KERvPXZhLFJpPURpKTooRG89TmksUmk9YnIpKSwh'@; put 'UG4pcmV0dXJuWzAsU2kqUmksRG9dO3ZhciBLcz1NYXRoLmZsb29yKFNpKlJpL0RvKTtyZXR1cm5bS3MsU2kqUmktS3MqRG8sRG9dfWZ1bmN0aW9uIHVuKE50LGhuLFBuKXtpZihOdD4yOTU4NDY1fHxOdDwwKXJldHVybiBudWxsO3ZhciBTaT0wfE50LGVyPU1hdGguZmxvb3IoODY0MDAqKE50'@; put 'LVNpKSksRGk9MCxicj1bXSxSaT17RDpTaSxUOmVyLHU6ODY0MDAqKE50LVNpKS1lcix5OjAsbTowLGQ6MCxIOjAsTTowLFM6MCxxOjB9O2lmKE1hdGguYWJzKFJpLnUpPDFlLTYmJihSaS51PTApLGhuJiZobi5kYXRlMTkwNCYmKFNpKz0xNDYyKSxSaS51Pi45OTk5JiYoUmkudT0wLDg2NDAw'@; put 'PT0rK2VyJiYoUmkuVD1lcj0wLCsrU2ksKytSaS5EKSksNjA9PT1TaSlicj1Qbj9bMTMxNywxMCwyOV06WzE5MDAsMiwyOV0sRGk9MztlbHNlIGlmKDA9PT1TaSlicj1Qbj9bMTMxNyw4LDI5XTpbMTkwMCwxLDBdLERpPTY7ZWxzZXtTaT42MCYmLS1TaTt2YXIgdmE9bmV3IERhdGUoMTkwMCww'@; put 'LDEpO3ZhLnNldERhdGUodmEuZ2V0RGF0ZSgpK1NpLTEpLGJyPVt2YS5nZXRGdWxsWWVhcigpLHZhLmdldE1vbnRoKCkrMSx2YS5nZXREYXRlKCldLERpPXZhLmdldERheSgpLFNpPDYwJiYoRGk9KERpKzYpJTcpLFBuJiYoRGk9ZnVuY3Rpb24gWWEoTnQsaG4pe2huWzBdLT01ODE7dmFyIFBu'@; put 'PU50LmdldERheSgpO3JldHVybiBOdDw2MCYmKFBuPShQbis2KSU3KSxQbn0odmEsYnIpKX1yZXR1cm4gUmkueT1iclswXSxSaS5tPWJyWzFdLFJpLmQ9YnJbMl0sUmkuUz1lciU2MCxlcj1NYXRoLmZsb29yKGVyLzYwKSxSaS5NPWVyJTYwLGVyPU1hdGguZmxvb3IoZXIvNjApLFJpLkg9ZXIs'@; put 'UmkucT1EaSxSaX1FdFs1XT1FdFs2M109JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLEV0WzZdPUV0WzY0XT0nIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyxFdFs3XT1FdFs2NV09JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLEV0WzhdPUV0WzY2XT0nIiQiIywj'@; put 'IzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyxFdFs0MV09J18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogIi0iXyk7XyhAXyknLEV0WzQyXT0nXygiJCIqICMsIyMwXyk7XygiJCIqIFxcKCMsIyMwXFwpO18oIiQiKiAiLSJfKTtfKEBfKScsRXRbNDNdPSdfKCogIywjIzAu'@; put 'MDBfKTtfKCogXFwoIywjIzAuMDBcXCk7XygqICItIj8/Xyk7XyhAXyknLEV0WzQ0XT0nXygiJCIqICMsIyMwLjAwXyk7XygiJCIqIFxcKCMsIyMwLjAwXFwpO18oIiQiKiAiLSI/P18pO18oQF8pJyxfLnBhcnNlX2RhdGVfY29kZT11bjt2YXIgbnI9bmV3IERhdGUoMTg5OSwxMSwzMSwwLDAs'@; put 'MCksbm49bnIuZ2V0VGltZSgpLGFyPW5ldyBEYXRlKDE5MDAsMiwxLDAsMCwwKTtmdW5jdGlvbiBqbihOdCxobil7dmFyIFBuPU50LmdldFRpbWUoKTtyZXR1cm4gaG4/UG4tPTEyNjIzMDRlNTpOdD49YXImJihQbis9ODY0ZTUpLChQbi0obm4rNmU0KihOdC5nZXRUaW1lem9uZU9mZnNldCgp'@; put 'LW5yLmdldFRpbWV6b25lT2Zmc2V0KCkpKSkvODY0ZTV9dmFyIGtuPSIiLHNyPXsiZW4tdXMiOnt5OiJ5IixkOiJkIiwiLCI6IiwiLCIuIjoiLiIsZGF0ZToiXy8ifSwiZGUtZGUiOnt5OiJqIixkOiJ0IiwiLCI6Ii4iLCIuIjoiLCIsZGF0ZToiXy4ifSwiaXQtaXQiOnt5OiJ5IixkOiJkIiwi'@; put 'LCI6Ii4iLCIuIjoiLCIsZGF0ZToiXy8ifX0sZ3I9c3Jba24udG9Mb3dlckNhc2UoKV18fHNyWyJlbi11cyJdLHFuPVplKGdyKSxfaT0iJCIsT2k9IiIsTGk9IiwiLGtyPSIuIixEbj0iLyI7ZnVuY3Rpb24gTW4oTnQpe3N3aXRjaCgoa258fCIiKS50b0xvd2VyQ2FzZSgpKXtjYXNlInpoLXR3'@; put 'IjpOdFsyN109IlskLTQwNF1lL20vZCIsTnRbMjhdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFsyOV09J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLE50WzMwXT0nbSIvImQiLyJ5eScsTnRbMzFdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1'@; put 'NjVlNSInLE50WzMyXT0naGgiXHU2NjQyIm1tIlx1NTIwNiInLE50WzMzXT0naGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxOdFszNF09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLE50WzM1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0'@; put 'OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLE50WzM2XT0iWyQtNDA0XWUvbS9kIixOdFs1MF09IlskLTQwNF1lL20vZCIsTnRbNTFdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFs1Ml09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQy'@; put 'Im1tIlx1NTIwNiInLE50WzUzXT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLE50WzU0XT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicsTnRbNTVdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0'@; put 'MiJtbSJcdTUyMDYiJyxOdFs1Nl09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxOdFs1N109IlskLTQwNF1lL20vZCIsTnRbNThdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJzticmVhaztjYXNlInpoLWNuIjpO'@; put 'dFsyN109J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsTnRbMjhdPSdtIlx1NjcwOCJkIlx1NjVlNSInLE50WzI5XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFszMF09J20iLSJkIi0ieXknLE50WzMxXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFszMl09J2giXHU2NWY2Im1t'@; put 'Ilx1NTIwNiInLE50WzMzXT0naCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLE50WzM0XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYiJyxOdFszNV09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1Nzlk'@; put 'MiInLE50WzM2XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxOdFs1MF09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsTnRbNTFdPSdtIlx1NjcwOCJkIlx1NjVlNSInLE50WzUyXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxOdFs1M109J20iXHU2NzA4ImQiXHU2NWU1IicsTnRbNTRdPSdtIlx1'@; put 'NjcwOCJkIlx1NjVlNSInLE50WzU1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYiJyxOdFs1Nl09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLE50WzU3XT0neXl5eSJcdTVlNzQibSJcdTY3MDgi'@; put 'JyxOdFs1OF09J20iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2FzZSJqYS1qcCI6TnRbMjddPSdbJC00MTFdZ2UiLiJtIi4iZCcsTnRbMjhdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFsyOV09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVl'@; put 'NSInLE50WzMwXT0nbSIvImQiLyJ5eScsTnRbMzFdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLE50WzMyXT0naCJcdTY2NDIibW0iXHU1MjA2IicsTnRbMzNdPSdoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicsTnRbMzRdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLE50'@; put 'WzM1XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFszNl09J1skLTQxMV1nZSIuIm0iLiJkJyxOdFs1MF09J1skLTQxMV1nZSIuIm0iLiJkJyxOdFs1MV09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLE50WzUyXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxOdFs1M109'@; put 'J20iXHU2NzA4ImQiXHU2NWU1IicsTnRbNTRdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxOdFs1NV09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsTnRbNTZdPSdtIlx1NjcwOCJkIlx1NjVlNSInLE50WzU3XT0nWyQtNDExXWdlIi4ibSIuImQnLE50WzU4XT0nWyQt'@; put 'NDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2FzZSJrby1rciI6TnRbMjddPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4IiBkZCJcdTY1ZTUiJyxOdFsyOF09Im1tLWRkIixOdFsyOV09Im1tLWRkIixOdFszMF09Im1tLWRkLXl5IixOdFszMV09J3l5eXkiXHViMTQ0'@; put 'IiBtbSJcdWM2ZDQiIGRkIlx1Yzc3YyInLE50WzMyXT0naCJcdWMyZGMiIG1tIlx1YmQ4NCInLE50WzMzXT0naCJcdWMyZGMiIG1tIlx1YmQ4NCIgc3MiXHVjZDA4IicsTnRbMzRdPSJ5eXl5LW1tLWRkIixOdFszNV09Inl5eXktbW0tZGQiLE50WzM2XT0neXl5eSJcdTVlNzQiIG1tIlx1Njcw'@; put 'OCIgZGQiXHU2NWU1IicsTnRbNTBdPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4IiBkZCJcdTY1ZTUiJyxOdFs1MV09Im1tLWRkIixOdFs1Ml09Inl5eXktbW0tZGQiLE50WzUzXT0ieXl5eS1tbS1kZCIsTnRbNTRdPSJtbS1kZCIsTnRbNTVdPSJ5eXl5LW1tLWRkIixOdFs1Nl09Inl5eXktbW0t'@; put 'ZGQiLE50WzU3XT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1IicsTnRbNThdPSJtbS1kZCI7YnJlYWs7Y2FzZSJ0aC10aCI6TnRbNTldPScidCIwJyxOdFs2MF09JyJ0IjAuMDAnLE50WzYxXT0nInQiIywjIzAnLE50WzYyXT0nInQiIywjIzAuMDAnLE50WzY3XT0idDAlIixO'@; put 'dFs2OF09InQwLjAwJSIsTnRbNjldPSJ0IyA/Lz8iLE50WzcwXT0idCMgPz8vPz8iLE50WzcxXT0nXHUwZTI3Ii8iXHUwZTE0Ii8iXHUwZTFiXHUwZTFiXHUwZTFiXHUwZTFiJyxOdFs3Ml09J1x1MGUyNyItIlx1MGUxNFx1MGUxNFx1MGUxNCItIlx1MGUxYlx1MGUxYicsTnRbNzNdPSdcdTBl'@; put 'MjciLSJcdTBlMTRcdTBlMTRcdTBlMTQnLE50Wzc0XT0nXHUwZTE0XHUwZTE0XHUwZTE0Ii0iXHUwZTFiXHUwZTFiJyxOdFs3NV09J1x1MGUwYSI6Ilx1MGUxOVx1MGUxOScsTnRbNzZdPSdcdTBlMGEiOiJcdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLE50Wzc3XT0nXHUwZTI3Ii8iXHUw'@; put 'ZTE0Ii8iXHUwZTFiXHUwZTFiXHUwZTFiXHUwZTFiIFx1MGUwYSI6Ilx1MGUxOVx1MGUxOScsTnRbNzhdPSdcdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLE50Wzc5XT0nW1x1MGUwYV1cdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLE50WzgwXT0nXHUwZTE5XHUwZTE5IjoiXHUwZTE3'@; put 'XHUwZTE3LjAnLE50WzgxXT0iZC9tL2JiIn19Xy5fZ2VuZXJhbF9pbnQ9ZnVuY3Rpb24gamkoTnQpe3JldHVybiBOdC50b1N0cmluZygxMCl9O3ZhciBiaT1mdW5jdGlvbigpe3ZhciBobj0vKD86XC4wKnwoXC5cZCpbMS05XSkwKykkLztmdW5jdGlvbiBQbihOaSl7cmV0dXJuLTE9PU5pLmlu'@; put 'ZGV4T2YoIi4iKT9OaTpOaS5yZXBsYWNlKGhuLCIkMSIpfXZhciBTaT0vKD86XC4wKnwoXC5cZCpbMS05XSkwKylbRWVdLyxlcj0vKEVbKy1dKShcZCkkLztyZXR1cm4gZnVuY3Rpb24oRG8pe3ZhciB3aT1mdW5jdGlvbiB2YShOaSl7dmFyIHdpLERvPU1hdGguZmxvb3IoTWF0aC5sb2coTWF0'@; put 'aC5hYnMoTmkpKSpNYXRoLkxPRzEwRSk7cmV0dXJuIHdpPURvPj0tNCYmRG88PS0xP05pLnRvUHJlY2lzaW9uKDEwK0RvKTpNYXRoLmFicyhEbyk8PTk/ZnVuY3Rpb24gYnIoTmkpe3ZhciBEbz1OaTwwPzEyOjExLHdpPVBuKE5pLnRvRml4ZWQoMTIpKTtyZXR1cm4gd2kubGVuZ3RoPD1Eb3x8'@; put 'KHdpPU5pLnRvUHJlY2lzaW9uKDEwKSkubGVuZ3RoPD1Ebz93aTpOaS50b0V4cG9uZW50aWFsKDUpfShOaSk6MTA9PT1Ebz9OaS50b0ZpeGVkKDEwKS5zdWJzdHIoMCwxMik6ZnVuY3Rpb24gUmkoTmkpe3ZhciBEbz1QbihOaS50b0ZpeGVkKDExKSk7cmV0dXJuIERvLmxlbmd0aD4oTmk8MD8x'@; put 'MjoxMSl8fCIwIj09PURvfHwiLTAiPT09RG8/TmkudG9QcmVjaXNpb24oNik6RG99KE5pKSxQbihmdW5jdGlvbiBEaShOaSl7cmV0dXJuLTE9PU5pLmluZGV4T2YoIkUiKT9OaTpOaS5yZXBsYWNlKFNpLCIkMUUiKS5yZXBsYWNlKGVyLCIkMTAkMiIpfSh3aS50b1VwcGVyQ2FzZSgpKSl9KERv'@; put 'KTtyZXR1cm4iLCI9PT1MaSYmIi4iPT09a3I/d2k6d2kucmVwbGFjZSgvWywuXS9nLGZ1bmN0aW9uKEtzKXtyZXR1cm4iLCI9PUtzP0xpOmtyfSl9fSgpO2Z1bmN0aW9uIE5vKE50LGhuKXtzd2l0Y2godHlwZW9mIE50KXtjYXNlInN0cmluZyI6cmV0dXJuIE50O2Nhc2UiYm9vbGVhbiI6cmV0'@; put 'dXJuIE50PyJUUlVFIjoiRkFMU0UiO2Nhc2UibnVtYmVyIjpyZXR1cm4oMHxOdCk9PT1OdD9OdC50b1N0cmluZygxMCk6YmkoTnQpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4iIjtjYXNlIm9iamVjdCI6aWYobnVsbD09TnQpcmV0dXJuIiI7aWYoTnQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBM'@; put 'aCgxNCxqbihOdCxobiYmaG4uZGF0ZTE5MDQpLGhuKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVyYWwgZm9ybWF0OiAiK050KX1fLl9nZW5lcmFsX251bT1iaSxfLl9nZW5lcmFsPU5vO3ZhciB1bz0iXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUw'@; put 'ZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5Ii5zcGxpdCgiIik7ZnVuY3Rpb24gTXMoTnQsaG4sUG4sU2kpe3ZhciB2YSxlcj0iIixEaT0wLGJyPTAsUmk9UG4ueSxOaT0wO3N3aXRjaChOdCl7Y2FzZSA5ODpSaT1Qbi55KzU0MztjYXNlIDEyMTpzd2l0Y2goaG4ubGVuZ3RoKXtjYXNlIDE6'@; put 'Y2FzZSAyOnZhPVJpJTEwMCxOaT0yO2JyZWFrO2RlZmF1bHQ6dmE9UmklMWU0LE5pPTR9YnJlYWs7Y2FzZSAxMDk6c3dpdGNoKGhuLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjp2YT1Qbi5tLE5pPWhuLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIG10W1BuLm0tMV1bMV07Y2FzZSA1OnJldHVy'@; put 'biBtdFtQbi5tLTFdWzBdO2RlZmF1bHQ6cmV0dXJuIG10W1BuLm0tMV1bMl19YnJlYWs7Y2FzZSAxMDA6c3dpdGNoKGhuLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjp2YT1Qbi5kLE5pPWhuLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIG50W1BuLnFdWzBdO2RlZmF1bHQ6cmV0dXJuIG50W1Bu'@; put 'LnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaChobi5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6dmE9MSsoUG4uSCsxMSklMTIsTmk9aG4ubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGhvdXIgZm9ybWF0OiAiK2hufWJyZWFrO2Nhc2UgNzI6c3dpdGNoKGhuLmxlbmd0aCl7Y2FzZSAx'@; put 'OmNhc2UgMjp2YT1Qbi5ILE5pPWhuLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIitobn1icmVhaztjYXNlIDc3OnN3aXRjaChobi5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6dmE9UG4uTSxOaT1obi5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgbWlu'@; put 'dXRlIGZvcm1hdDogIitobn1icmVhaztjYXNlIDExNTppZigicyIhPWhuJiYic3MiIT1obiYmIi4wIiE9aG4mJiIuMDAiIT1obiYmIi4wMDAiIT1obil0aHJvdyJiYWQgc2Vjb25kIGZvcm1hdDogIitobjtyZXR1cm4gMCE9PVBuLnV8fCJzIiE9aG4mJiJzcyIhPWhuPyhicj1TaT49Mj8zPT09'@; put 'U2k/MWUzOjEwMDoxPT09U2k/MTA6MSwoRGk9TWF0aC5yb3VuZChiciooUG4uUytQbi51KSkpPj02MCpiciYmKERpPTApLCJzIj09PWhuPzA9PT1EaT8iMCI6IiIrRGkvYnI6KGVyPVAoRGksMitTaSksInNzIj09PWhuP2VyLnN1YnN0cigwLDIpOiIuIitlci5zdWJzdHIoMixobi5sZW5ndGgt'@; put 'MSkpKTpQKFBuLlMsaG4ubGVuZ3RoKTtjYXNlIDkwOnN3aXRjaChobil7Y2FzZSJbaF0iOmNhc2UiW2hoXSI6Y2FzZSJbXHUwZTBhXSI6Y2FzZSJbXHUwZTBhXHUwZTBhXSI6dmE9MjQqUG4uRCtQbi5IO2JyZWFrO2Nhc2UiW21dIjpjYXNlIlttbV0iOmNhc2UiW1x1MGUxOV0iOmNhc2UiW1x1'@; put 'MGUxOVx1MGUxOV0iOnZhPTYwKigyNCpQbi5EK1BuLkgpK1BuLk07YnJlYWs7Y2FzZSJbc10iOmNhc2UiW3NzXSI6Y2FzZSJbXHUwZTE3XSI6Y2FzZSJbXHUwZTE3XHUwZTE3XSI6dmE9NjAqKDYwKigyNCpQbi5EK1BuLkgpK1BuLk0pK01hdGgucm91bmQoUG4uUytQbi51KTticmVhaztkZWZh'@; put 'dWx0OnRocm93ImJhZCBhYnN0aW1lIGZvcm1hdDogIitobn1OaT0zPT09aG4ubGVuZ3RoPzE6MjticmVhaztjYXNlIDEwMTp2YT1SaSxOaT0xO2JyZWFrO2Nhc2UgMzYyMzp2YT1Qbi5kLE5pPWhuLmxlbmd0aDticmVhaztjYXNlIDM2MDQ6c3dpdGNoKGhuLmxlbmd0aCl7Y2FzZSAxOmNhc2Ug'@; put 'Mjp2YT1Qbi5tLE5pPWhuLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIG10W1BuLm0tMV1bMV07Y2FzZSA1OnJldHVybiBtdFtQbi5tLTFdWzBdO2RlZmF1bHQ6cmV0dXJuIG10W1BuLm0tMV1bMl19YnJlYWs7Y2FzZSAzNjExOnN3aXRjaChSaT1Qbi55KzU0Myxobi5sZW5ndGgpe2Nhc2Ug'@; put 'MTpjYXNlIDI6dmE9UmklMTAwLE5pPTI7YnJlYWs7ZGVmYXVsdDp2YT1SaSUxZTQsTmk9NH1icmVhaztjYXNlIDM1OTQ6dmE9UG4uSCxOaT1obi5sZW5ndGg7YnJlYWs7Y2FzZSAzNjA5OnZhPVBuLk0sTmk9aG4ubGVuZ3RoO2JyZWFrO2Nhc2UgMzYwNzp2YT1Qbi5TLE5pPWhuLmxlbmd0aDti'@; put 'cmVhaztkZWZhdWx0OnRocm93IE50LnRvU3RyaW5nKDE2KX12YXIgRG89Tmk+MD9QKHZhLE5pKToiIjtyZXR1cm4oOTA9PU50P2huLmNoYXJDb2RlQXQoMSk8MzU4NDpOdDwzNTg0KT9EbzpEby5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKHdpKXtyZXR1cm4gdW9bK3dpXX0pfWZ1bmN0aW9u'@; put 'IGRhKE50KXtpZihOdC5sZW5ndGg8PTMpcmV0dXJuIE50O2Zvcih2YXIgUG49TnQubGVuZ3RoJTMsU2k9TnQuc3Vic3RyKDAsUG4pO1BuIT1OdC5sZW5ndGg7UG4rPTMpU2krPShTaS5sZW5ndGg+MD8iLCI6IiIpK050LnN1YnN0cihQbiwzKTtyZXR1cm4gU2l9dmFyICRhPWZ1bmN0aW9uKCl7'@; put 'dmFyIGhuPS8lL2c7ZnVuY3Rpb24gZXIoZW4sRHQpe3ZhciBXdCxvbj1lbi5pbmRleE9mKCJFIiktZW4uaW5kZXhPZigiLiIpLTE7aWYoZW4ubWF0Y2goL14jKzAuMEVcKzAkLykpe2lmKDA9PUR0KXJldHVybiIwLjBFKzAiO2lmKER0PDApcmV0dXJuIi0iK2VyKGVuLC1EdCk7dmFyIExuPWVu'@; put 'LmluZGV4T2YoIi4iKTstMT09PUxuJiYoTG49ZW4uaW5kZXhPZigiRSIpKTt2YXIgbXI9TWF0aC5mbG9vcihNYXRoLmxvZyhEdCkqTWF0aC5MT0cxMEUpJUxuO2lmKG1yPDAmJihtcis9TG4pLC0xPT09KFd0PShEdC9NYXRoLnBvdygxMCxtcikpLnRvUHJlY2lzaW9uKG9uKzErKExuK21yKSVM'@; put 'bikpLmluZGV4T2YoImUiKSl7dmFyIEJyPU1hdGguZmxvb3IoTWF0aC5sb2coRHQpKk1hdGguTE9HMTBFKTtmb3IoLTE9PT1XdC5pbmRleE9mKCIuIik/V3Q9V3QuY2hhckF0KDApKyIuIitXdC5zdWJzdHIoMSkrIkUrIisoQnItV3QubGVuZ3RoK21yKTpXdCs9IkUrIisoQnItbXIpOyIwLiI9'@; put 'PT1XdC5zdWJzdHIoMCwyKTspV3Q9KFd0PVd0LmNoYXJBdCgwKStXdC5zdWJzdHIoMixMbikrIi4iK1d0LnN1YnN0cigyK0xuKSkucmVwbGFjZSgvXjArKFsxLTldKS8sIiQxIikucmVwbGFjZSgvXjArXC4vLCIwLiIpO1d0PVd0LnJlcGxhY2UoL1wrLS8sIi0iKX1XdD1XdC5yZXBsYWNlKC9e'@; put 'KFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKEVpLG9pLGVvLEhpKXtyZXR1cm4gb2krZW8rSGkuc3Vic3RyKDAsKExuK21yKSVMbikrIi4iK0hpLnN1YnN0cihtcikrIkUifSl9ZWxzZSBXdD1EdC50b0V4cG9uZW50aWFsKG9uKTtyZXR1cm4gZW4ubWF0Y2goL0VcKzAwJC8pJiZX'@; put 'dC5tYXRjaCgvZVsrLV1cZCQvKSYmKFd0PVd0LnN1YnN0cigwLFd0Lmxlbmd0aC0xKSsiMCIrV3QuY2hhckF0KFd0Lmxlbmd0aC0xKSksZW4ubWF0Y2goL0VcLS8pJiZXdC5tYXRjaCgvZVwrLykmJihXdD1XdC5yZXBsYWNlKC9lXCsvLCJlIikpLFd0LnJlcGxhY2UoImUiLCJFIil9dmFyIERp'@; put 'PS8jIChcPyspKCA/KVwvKCA/KShcZCspLyx2YT0vXiMqMCpcLihbMCNdKykvLE5pPS9cKS4qWzAjXS8sRG89L1woIyMjXCkgIyMjXFw/LSMjIyMvO2Z1bmN0aW9uIHdpKGVuKXtmb3IodmFyIFd0LER0PSIiLG9uPTA7b24hPWVuLmxlbmd0aDsrK29uKXN3aXRjaChXdD1lbi5jaGFyQ29kZUF0'@; put 'KG9uKSl7Y2FzZSAzNTpicmVhaztjYXNlIDYzOkR0Kz0iICI7YnJlYWs7Y2FzZSA0ODpEdCs9IjAiO2JyZWFrO2RlZmF1bHQ6RHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoV3QpfXJldHVybiBEdH1mdW5jdGlvbiBLcyhlbixEdCl7dmFyIFd0PU1hdGgucG93KDEwLER0KTtyZXR1cm4iIitNYXRo'@; put 'LnJvdW5kKGVuKld0KS9XdH1mdW5jdGlvbiBRcyhlbixEdCl7aWYoRHQ+MTEpcmV0dXJuIFFzKGVuLDExKSpNYXRoLnBvdygxMCxEdC0xMSk7dmFyIFd0PWVuLU1hdGguZmxvb3IoZW4pLG9uPU1hdGgucG93KDEwLER0KTtyZXR1cm4gRHQ8KCIiK01hdGgucm91bmQoV3Qqb24pKS5sZW5ndGg/'@; put 'MDpNYXRoLnJvdW5kKFd0Km9uKX1mdW5jdGlvbiB6ZShlbixEdCxXdCl7aWYoNDA9PT1lbi5jaGFyQ29kZUF0KDApJiYhRHQubWF0Y2goTmkpKXt2YXIgb249RHQucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIFd0Pj0wP3plKCJu'@; put 'IixvbixXdCk6IigiK3plKCJuIixvbiwtV3QpKyIpIn1pZig0ND09PUR0LmNoYXJDb2RlQXQoRHQubGVuZ3RoLTEpKXJldHVybiBmdW5jdGlvbiBTaShlbixEdCxXdCl7Zm9yKHZhciBvbj1EdC5sZW5ndGgtMTs0ND09PUR0LmNoYXJDb2RlQXQob24tMSk7KS0tb247cmV0dXJuICRhKGVuLER0'@; put 'LnN1YnN0cigwLG9uKSxXdC9NYXRoLnBvdygxMCwzKihEdC5sZW5ndGgtb24pKSl9KGVuLER0LFd0KTtpZigtMSE9PUR0LmluZGV4T2YoIiUiKSlyZXR1cm4gZnVuY3Rpb24gUG4oZW4sRHQsV3Qpe3ZhciBvbj1EdC5yZXBsYWNlKGhuLCIiKSxMbj1EdC5sZW5ndGgtb24ubGVuZ3RoO3JldHVy'@; put 'biAkYShlbixvbixXdCpNYXRoLnBvdygxMCwyKkxuKSkrVCgiJSIsTG4pfShlbixEdCxXdCk7aWYoLTEhPT1EdC5pbmRleE9mKCJFIikpcmV0dXJuIGVyKER0LFd0KTtpZigzNj09PUR0LmNoYXJDb2RlQXQoMCkpcmV0dXJuIiQiK3plKGVuLER0LnN1YnN0cigiICI9PUR0LmNoYXJBdCgxKT8y'@; put 'OjEpLFd0KTt2YXIgTG4sbXIsQnIsRWksb2k9TWF0aC5hYnMoV3QpLGVvPVd0PDA/Ii0iOiIiO2lmKER0Lm1hdGNoKC9eMDArJC8pKXJldHVybiBlbytOZShvaSxEdC5sZW5ndGgpO2lmKER0Lm1hdGNoKC9eWyM/XSskLykpcmV0dXJuIjAiPT09KExuPU5lKFd0LDApKSYmKExuPSIiKSxMbi5s'@; put 'ZW5ndGg+RHQubGVuZ3RoP0xuOndpKER0LnN1YnN0cigwLER0Lmxlbmd0aC1Mbi5sZW5ndGgpKStMbjtpZihtcj1EdC5tYXRjaChEaSkpcmV0dXJuIGZ1bmN0aW9uIGJyKGVuLER0LFd0KXt2YXIgb249cGFyc2VJbnQoZW5bNF0sMTApLExuPU1hdGgucm91bmQoRHQqb24pLG1yPU1hdGguZmxv'@; put 'b3IoTG4vb24pLEJyPUxuLW1yKm9uLEVpPW9uO3JldHVybiBXdCsoMD09PW1yPyIiOiIiK21yKSsiICIrKDA9PT1Ccj9UKCIgIixlblsxXS5sZW5ndGgrMStlbls0XS5sZW5ndGgpOlEoQnIsZW5bMV0ubGVuZ3RoKStlblsyXSsiLyIrZW5bM10rUChFaSxlbls0XS5sZW5ndGgpKX0obXIsb2ks'@; put 'ZW8pO2lmKER0Lm1hdGNoKC9eIyswKyQvKSlyZXR1cm4gZW8rTmUob2ksRHQubGVuZ3RoLUR0LmluZGV4T2YoIjAiKSk7aWYobXI9RHQubWF0Y2godmEpKXJldHVybiBMbj1LcyhXdCxtclsxXS5sZW5ndGgpLnJlcGxhY2UoL14oW15cLl0rKSQvLCIkMS4iK3dpKG1yWzFdKSkucmVwbGFjZSgv'@; put 'XC4kLywiLiIrd2kobXJbMV0pKS5yZXBsYWNlKC9cLihcZCopJC8sZnVuY3Rpb24oeXMscmMpe3JldHVybiIuIityYytUKCIwIix3aShtclsxXSkubGVuZ3RoLXJjLmxlbmd0aCl9KSwtMSE9PUR0LmluZGV4T2YoIjAuIik/TG46TG4ucmVwbGFjZSgvXjBcLi8sIi4iKTtpZihEdD1EdC5yZXBs'@; put 'YWNlKC9eIysoWzAuXSkvLCIkMSIpLG1yPUR0Lm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4gZW8rS3Mob2ksbXJbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxtclsxXS5sZW5n'@; put 'dGg/IjAuIjoiLiIpO2lmKG1yPUR0Lm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBlbytkYShOZShvaSwwKSk7aWYobXI9RHQubWF0Y2goL14jLCMjMFwuKFsjMF0qMCkkLykpcmV0dXJuIFd0PDA/Ii0iK3plKGVuLER0LC1XdCk6ZGEoIiIrKE1hdGguZmxvb3IoV3QpK2Z1bmN0'@; put 'aW9uIF91KGVuLER0KXtyZXR1cm4gRHQ8KCIiK01hdGgucm91bmQoKGVuLU1hdGguZmxvb3IoZW4pKSpNYXRoLnBvdygxMCxEdCkpKS5sZW5ndGg/MTowfShXdCxtclsxXS5sZW5ndGgpKSkrIi4iK1AoUXMoV3QsbXJbMV0ubGVuZ3RoKSxtclsxXS5sZW5ndGgpO2lmKG1yPUR0Lm1hdGNoKC9e'@; put 'IywjKiwjMC8pKXJldHVybiB6ZShlbixEdC5yZXBsYWNlKC9eIywjKiwvLCIiKSxXdCk7aWYobXI9RHQubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIExuPW0oemUoZW4sRHQucmVwbGFjZSgvW1xcLV0vZywiIiksV3QpKSxCcj0wLG0obShEdC5yZXBsYWNlKC9cXC9n'@; put 'LCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKHlzKXtyZXR1cm4gQnI8TG4ubGVuZ3RoP0xuLmNoYXJBdChCcisrKToiMCI9PT15cz8iMCI6IiJ9KSk7aWYoRHQubWF0Y2goRG8pKXJldHVybiIoIisoTG49emUoZW4sIiMjIyMjIyMjIyMiLFd0KSkuc3Vic3RyKDAsMykrIikgIitMbi5z'@; put 'dWJzdHIoMywzKSsiLSIrTG4uc3Vic3RyKDYpO3ZhciBIaT0iIjtpZihtcj1EdC5tYXRjaCgvXihbIzA/XSspKCA/KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIEJyPU1hdGgubWluKG1yWzRdLmxlbmd0aCw3KSxFaT1WdChvaSxNYXRoLnBvdygxMCxCciktMSwhMSksTG49IiIrZW8sIiAiPT0o'@; put 'SGk9JGEoIm4iLG1yWzFdLEVpWzFdKSkuY2hhckF0KEhpLmxlbmd0aC0xKSYmKEhpPUhpLnN1YnN0cigwLEhpLmxlbmd0aC0xKSsiMCIpLExuKz1IaSttclsyXSsiLyIrbXJbM10sKEhpPXNlKEVpWzJdLEJyKSkubGVuZ3RoPG1yWzRdLmxlbmd0aCYmKEhpPXdpKG1yWzRdLnN1YnN0cihtcls0'@; put 'XS5sZW5ndGgtSGkubGVuZ3RoKSkrSGkpLExuKz1IaTtpZihtcj1EdC5tYXRjaCgvXiMgKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gQnI9TWF0aC5taW4oTWF0aC5tYXgobXJbMV0ubGVuZ3RoLG1yWzRdLmxlbmd0aCksNyksZW8rKChFaT1WdChvaSxNYXRoLnBvdygxMCxC'@; put 'ciktMSwhMCkpWzBdfHwoRWlbMV0/IiI6IjAiKSkrIiAiKyhFaVsxXT9RKEVpWzFdLEJyKSttclsyXSsiLyIrbXJbM10rc2UoRWlbMl0sQnIpOlQoIiAiLDIqQnIrMSttclsyXS5sZW5ndGgrbXJbM10ubGVuZ3RoKSk7aWYobXI9RHQubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIExuPU5lKFd0'@; put 'LDApLER0Lmxlbmd0aDw9TG4ubGVuZ3RoP0xuOndpKER0LnN1YnN0cigwLER0Lmxlbmd0aC1Mbi5sZW5ndGgpKStMbjtpZihtcj1EdC5tYXRjaCgvXihbIzA/XSspXC4oWyMwXSspJC8pKXtMbj0iIitXdC50b0ZpeGVkKE1hdGgubWluKG1yWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBd'@; put 'KTArJC8sIiQxIiksQnI9TG4uaW5kZXhPZigiLiIpO3ZhciBaYT1EdC5pbmRleE9mKCIuIiktQnIsc2E9RHQubGVuZ3RoLUxuLmxlbmd0aC1aYTtyZXR1cm4gd2koRHQuc3Vic3RyKDAsWmEpK0xuK0R0LnN1YnN0cihEdC5sZW5ndGgtc2EpKX1pZihtcj1EdC5tYXRjaCgvXjAwLDAwMFwuKFsj'@; put 'MF0qMCkkLykpcmV0dXJuIEJyPVFzKFd0LG1yWzFdLmxlbmd0aCksV3Q8MD8iLSIremUoZW4sRHQsLVd0KTpkYShmdW5jdGlvbiBNZChlbil7cmV0dXJuIGVuPDIxNDc0ODM2NDcmJmVuPi0yMTQ3NDgzNjQ4PyIiKyhlbj49MD8wfGVuOmVuLTF8MCk6IiIrTWF0aC5mbG9vcihlbil9KFd0KSku'@; put 'cmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbih5cyl7cmV0dXJuIjAwLCIrKHlzLmxlbmd0aDwzP1AoMCwzLXlzLmxlbmd0aCk6IiIpK3lzfSkrIi4iK1AoQnIsbXJbMV0ubGVuZ3RoKTtzd2l0Y2goRHQpe2Nhc2UiIyMjLCMjMC4wMCI6cmV0dXJu'@; put 'IHplKGVuLCIjLCMjMC4wMCIsV3QpO2Nhc2UiIyMjLCMjIyI6Y2FzZSIjIywjIyMiOmNhc2UiIywjIyMiOnZhciBBbz1kYShOZShvaSwwKSk7cmV0dXJuIjAiIT09QW8/ZW8rQW86IiI7Y2FzZSIjIyMsIyMjLjAwIjpyZXR1cm4gemUoZW4sIiMjIywjIzAuMDAiLFd0KS5yZXBsYWNlKC9eMFwu'@; put 'LywiLiIpO2Nhc2UiIywjIyMuMDAiOnJldHVybiB6ZShlbiwiIywjIzAuMDAiLFd0KS5yZXBsYWNlKC9eMFwuLywiLiIpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK0R0KyJ8Iil9ZnVuY3Rpb24gSnQoZW4sRHQpe3ZhciBXdCxvbj1lbi5pbmRleE9mKCJFIiktZW4u'@; put 'aW5kZXhPZigiLiIpLTE7aWYoZW4ubWF0Y2goL14jKzAuMEVcKzAkLykpe2lmKDA9PUR0KXJldHVybiIwLjBFKzAiO2lmKER0PDApcmV0dXJuIi0iK0p0KGVuLC1EdCk7dmFyIExuPWVuLmluZGV4T2YoIi4iKTstMT09PUxuJiYoTG49ZW4uaW5kZXhPZigiRSIpKTt2YXIgbXI9TWF0aC5mbG9v'@; put 'cihNYXRoLmxvZyhEdCkqTWF0aC5MT0cxMEUpJUxuO2lmKG1yPDAmJihtcis9TG4pLCEoV3Q9KER0L01hdGgucG93KDEwLG1yKSkudG9QcmVjaXNpb24ob24rMSsoTG4rbXIpJUxuKSkubWF0Y2goL1tFZV0vKSl7dmFyIEJyPU1hdGguZmxvb3IoTWF0aC5sb2coRHQpKk1hdGguTE9HMTBFKTst'@; put 'MT09PVd0LmluZGV4T2YoIi4iKT9XdD1XdC5jaGFyQXQoMCkrIi4iK1d0LnN1YnN0cigxKSsiRSsiKyhCci1XdC5sZW5ndGgrbXIpOld0Kz0iRSsiKyhCci1tciksV3Q9V3QucmVwbGFjZSgvXCstLywiLSIpfVd0PVd0LnJlcGxhY2UoL14oWystXT8pKFxkKilcLihcZCopW0VlXS8sZnVuY3Rp'@; put 'b24oRWksb2ksZW8sSGkpe3JldHVybiBvaStlbytIaS5zdWJzdHIoMCwoTG4rbXIpJUxuKSsiLiIrSGkuc3Vic3RyKG1yKSsiRSJ9KX1lbHNlIFd0PUR0LnRvRXhwb25lbnRpYWwob24pO3JldHVybiBlbi5tYXRjaCgvRVwrMDAkLykmJld0Lm1hdGNoKC9lWystXVxkJC8pJiYoV3Q9V3Quc3Vi'@; put 'c3RyKDAsV3QubGVuZ3RoLTEpKyIwIitXdC5jaGFyQXQoV3QubGVuZ3RoLTEpKSxlbi5tYXRjaCgvRVwtLykmJld0Lm1hdGNoKC9lXCsvKSYmKFd0PVd0LnJlcGxhY2UoL2VcKy8sImUiKSksV3QucmVwbGFjZSgiZSIsIkUiKX1mdW5jdGlvbiBibihlbixEdCxXdCl7aWYoNDA9PT1lbi5jaGFy'@; put 'Q29kZUF0KDApJiYhRHQubWF0Y2goTmkpKXt2YXIgb249RHQucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIFd0Pj0wP2JuKCJuIixvbixXdCk6IigiK2JuKCJuIixvbiwtV3QpKyIpIn1pZig0ND09PUR0LmNoYXJDb2RlQXQoRHQu'@; put 'bGVuZ3RoLTEpKXJldHVybiBmdW5jdGlvbiBMNShlbixEdCxXdCl7Zm9yKHZhciBvbj1EdC5sZW5ndGgtMTs0ND09PUR0LmNoYXJDb2RlQXQob24tMSk7KS0tb247cmV0dXJuICRhKGVuLER0LnN1YnN0cigwLG9uKSxXdC9NYXRoLnBvdygxMCwzKihEdC5sZW5ndGgtb24pKSl9KGVuLER0LFd0'@; put 'KTtpZigtMSE9PUR0LmluZGV4T2YoIiUiKSlyZXR1cm4gZnVuY3Rpb24gRzgoZW4sRHQsV3Qpe3ZhciBvbj1EdC5yZXBsYWNlKGhuLCIiKSxMbj1EdC5sZW5ndGgtb24ubGVuZ3RoO3JldHVybiAkYShlbixvbixXdCpNYXRoLnBvdygxMCwyKkxuKSkrVCgiJSIsTG4pfShlbixEdCxXdCk7aWYo'@; put 'LTEhPT1EdC5pbmRleE9mKCJFIikpcmV0dXJuIEp0KER0LFd0KTtpZigzNj09PUR0LmNoYXJDb2RlQXQoMCkpcmV0dXJuIiQiK2JuKGVuLER0LnN1YnN0cigiICI9PUR0LmNoYXJBdCgxKT8yOjEpLFd0KTt2YXIgTG4sbXIsQnIsRWksb2k9TWF0aC5hYnMoV3QpLGVvPVd0PDA/Ii0iOiIiO2lm'@; put 'KER0Lm1hdGNoKC9eMDArJC8pKXJldHVybiBlbytQKG9pLER0Lmxlbmd0aCk7aWYoRHQubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4gTG49IiIrV3QsMD09PVd0JiYoTG49IiIpLExuLmxlbmd0aD5EdC5sZW5ndGg/TG46d2koRHQuc3Vic3RyKDAsRHQubGVuZ3RoLUxuLmxlbmd0aCkpK0xuO2lm'@; put 'KG1yPUR0Lm1hdGNoKERpKSlyZXR1cm4gZnVuY3Rpb24gUmkoZW4sRHQsV3Qpe3JldHVybiBXdCsoMD09PUR0PyIiOiIiK0R0KStUKCIgIixlblsxXS5sZW5ndGgrMitlbls0XS5sZW5ndGgpfShtcixvaSxlbyk7aWYoRHQubWF0Y2goL14jKzArJC8pKXJldHVybiBlbytQKG9pLER0Lmxlbmd0'@; put 'aC1EdC5pbmRleE9mKCIwIikpO2lmKG1yPUR0Lm1hdGNoKHZhKSlyZXR1cm4gTG49KExuPSgiIitXdCkucmVwbGFjZSgvXihbXlwuXSspJC8sIiQxLiIrd2kobXJbMV0pKS5yZXBsYWNlKC9cLiQvLCIuIit3aShtclsxXSkpKS5yZXBsYWNlKC9cLihcZCopJC8sZnVuY3Rpb24oeXMscmMpe3Jl'@; put 'dHVybiIuIityYytUKCIwIix3aShtclsxXSkubGVuZ3RoLXJjLmxlbmd0aCl9KSwtMSE9PUR0LmluZGV4T2YoIjAuIik/TG46TG4ucmVwbGFjZSgvXjBcLi8sIi4iKTtpZihEdD1EdC5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLG1yPUR0Lm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4g'@; put 'ZW8rKCIiK29pKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxtclsxXS5sZW5ndGg/IjAuIjoiLiIpO2lmKG1yPUR0Lm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBlbytkYSgiIitvaSk7'@; put 'aWYobXI9RHQubWF0Y2goL14jLCMjMFwuKFsjMF0qMCkkLykpcmV0dXJuIFd0PDA/Ii0iK2JuKGVuLER0LC1XdCk6ZGEoIiIrV3QpKyIuIitUKCIwIixtclsxXS5sZW5ndGgpO2lmKG1yPUR0Lm1hdGNoKC9eIywjKiwjMC8pKXJldHVybiBibihlbixEdC5yZXBsYWNlKC9eIywjKiwvLCIiKSxX'@; put 'dCk7aWYobXI9RHQubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIExuPW0oYm4oZW4sRHQucmVwbGFjZSgvW1xcLV0vZywiIiksV3QpKSxCcj0wLG0obShEdC5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKHlzKXtyZXR1cm4gQnI8TG4u'@; put 'bGVuZ3RoP0xuLmNoYXJBdChCcisrKToiMCI9PT15cz8iMCI6IiJ9KSk7aWYoRHQubWF0Y2goRG8pKXJldHVybiIoIisoTG49Ym4oZW4sIiMjIyMjIyMjIyMiLFd0KSkuc3Vic3RyKDAsMykrIikgIitMbi5zdWJzdHIoMywzKSsiLSIrTG4uc3Vic3RyKDYpO3ZhciBIaT0iIjtpZihtcj1EdC5t'@; put 'YXRjaCgvXihbIzA/XSspKCA/KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIEJyPU1hdGgubWluKG1yWzRdLmxlbmd0aCw3KSxFaT1WdChvaSxNYXRoLnBvdygxMCxCciktMSwhMSksTG49IiIrZW8sIiAiPT0oSGk9JGEoIm4iLG1yWzFdLEVpWzFdKSkuY2hhckF0KEhpLmxlbmd0aC0xKSYmKEhp'@; put 'PUhpLnN1YnN0cigwLEhpLmxlbmd0aC0xKSsiMCIpLExuKz1IaSttclsyXSsiLyIrbXJbM10sKEhpPXNlKEVpWzJdLEJyKSkubGVuZ3RoPG1yWzRdLmxlbmd0aCYmKEhpPXdpKG1yWzRdLnN1YnN0cihtcls0XS5sZW5ndGgtSGkubGVuZ3RoKSkrSGkpLExuKz1IaTtpZihtcj1EdC5tYXRjaCgv'@; put 'XiMgKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gQnI9TWF0aC5taW4oTWF0aC5tYXgobXJbMV0ubGVuZ3RoLG1yWzRdLmxlbmd0aCksNyksZW8rKChFaT1WdChvaSxNYXRoLnBvdygxMCxCciktMSwhMCkpWzBdfHwoRWlbMV0/IiI6IjAiKSkrIiAiKyhFaVsxXT9RKEVpWzFd'@; put 'LEJyKSttclsyXSsiLyIrbXJbM10rc2UoRWlbMl0sQnIpOlQoIiAiLDIqQnIrMSttclsyXS5sZW5ndGgrbXJbM10ubGVuZ3RoKSk7aWYobXI9RHQubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIER0Lmxlbmd0aDw9KExuPSIiK1d0KS5sZW5ndGg/TG46d2koRHQuc3Vic3RyKDAsRHQubGVuZ3Ro'@; put 'LUxuLmxlbmd0aCkpK0xuO2lmKG1yPUR0Lm1hdGNoKC9eKFsjMF0rKVwuKFsjMF0rKSQvKSl7TG49IiIrV3QudG9GaXhlZChNYXRoLm1pbihtclsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLCIkMSIpLEJyPUxuLmluZGV4T2YoIi4iKTt2YXIgWmE9RHQuaW5kZXhPZigiLiIp'@; put 'LUJyLHNhPUR0Lmxlbmd0aC1Mbi5sZW5ndGgtWmE7cmV0dXJuIHdpKER0LnN1YnN0cigwLFphKStMbitEdC5zdWJzdHIoRHQubGVuZ3RoLXNhKSl9aWYobXI9RHQubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiBXdDwwPyItIitibihlbixEdCwtV3QpOmRhKCIiK1d0KS5yZXBs'@; put 'YWNlKC9eXGQsXGR7M30kLywiMCQmIikucmVwbGFjZSgvXlxkKiQvLGZ1bmN0aW9uKHlzKXtyZXR1cm4iMDAsIisoeXMubGVuZ3RoPDM/UCgwLDMteXMubGVuZ3RoKToiIikreXN9KSsiLiIrUCgwLG1yWzFdLmxlbmd0aCk7dmFyIEFvPWRhKCIiK29pKTtzd2l0Y2goRHQpe2Nhc2UiIyMjLCMj'@; put 'IyI6Y2FzZSIjIywjIyMiOmNhc2UiIywjIyMiOnJldHVybiIwIiE9PUFvP2VvK0FvOiIiO2Nhc2UiIywjMDAiOnJldHVybiIwMCIhPT0oQW89UChBbywyKSk/ZW8rQW86IiI7ZGVmYXVsdDppZihEdC5tYXRjaCgvXC5bMCM/XSokLykpcmV0dXJuIGJuKGVuLER0LnNsaWNlKDAsRHQubGFzdElu'@; put 'ZGV4T2YoIi4iKSksV3QpK3dpKER0LnNsaWNlKER0Lmxhc3RJbmRleE9mKCIuIikpKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGZvcm1hdCB8IitEdCsifCIpfXJldHVybiBmdW5jdGlvbihEdCxXdCxvbil7cmV0dXJuIjAsMCI9PVd0JiYoV3Q9IiMsIzAwIiksKDB8b24pPT09b24/'@; put 'Ym4oRHQsV3Qsb24pOnplKER0LFd0LG9uKX19KCk7ZnVuY3Rpb24gU2EoTnQpe2Zvcih2YXIgaG49W10sUG49ITEsU2k9MCxlcj0wO1NpPE50Lmxlbmd0aDsrK1NpKXN3aXRjaChOdC5jaGFyQ29kZUF0KFNpKSl7Y2FzZSAzNDpQbj0hUG47YnJlYWs7Y2FzZSA5NTpjYXNlIDQyOmNhc2UgOTI6'@; put 'KytTaTticmVhaztjYXNlIDU5OmhuW2huLmxlbmd0aF09TnQuc3Vic3RyKGVyLFNpLWVyKSxlcj1TaSsxfWlmKGhuW2huLmxlbmd0aF09TnQuc3Vic3RyKGVyKSwhMD09PVBuKXRocm93IG5ldyBFcnJvcigiRm9ybWF0IHwiK050KyJ8IHVudGVybWluYXRlZCBzdHJpbmcgIik7cmV0dXJuIGhu'@; put 'fV8uX3NwbGl0PVNhO3ZhciBQaT0vXFtbSGhNbVNzXHUwRTBBXHUwRTE5XHUwRTE3XSpcXS87ZnVuY3Rpb24gUGMoTnQpe2Zvcih2YXIgaG49MCxQbj0iIixTaT0iIjtobjxOdC5sZW5ndGg7KXN3aXRjaChQbj1OdC5jaGFyQXQoaG4pKXtjYXNlIkciOkJlKE50LGhuKSYmKGhuKz02KSxobisr'@; put 'O2JyZWFrO2Nhc2UnIic6Zm9yKDszNCE9PU50LmNoYXJDb2RlQXQoKytobikmJmhuPE50Lmxlbmd0aDspOysraG47YnJlYWs7Y2FzZSJcXCI6Y2FzZSJfIjpobis9MjticmVhaztjYXNlIkAiOisraG47YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKCIxIj09PU50LmNoYXJBdChobisxKXx8IjIi'@; put 'PT09TnQuY2hhckF0KGhuKzEpKXJldHVybiEwO2Nhc2UiTSI6Y2FzZSJEIjpjYXNlIlkiOmNhc2UiSCI6Y2FzZSJTIjpjYXNlIkUiOmNhc2UibSI6Y2FzZSJkIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6cmV0dXJuITA7Y2FzZSJBIjpjYXNlImEiOmNhc2UiXHU0'@; put 'ZTBhIjppZigiQS9QIj09PU50LnN1YnN0cihobiwzKS50b1VwcGVyQ2FzZSgpfHwiQU0vUE0iPT09TnQuc3Vic3RyKGhuLDUpLnRvVXBwZXJDYXNlKCl8fCJcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4Ij09PU50LnN1YnN0cihobiw1KS50b1VwcGVyQ2FzZSgpKXJldHVybiEwOysraG47YnJl'@; put 'YWs7Y2FzZSJbIjpmb3IoU2k9UG47Il0iIT09TnQuY2hhckF0KGhuKyspJiZobjxOdC5sZW5ndGg7KVNpKz1OdC5jaGFyQXQoaG4pO2lmKFNpLm1hdGNoKFBpKSlyZXR1cm4hMDticmVhaztjYXNlIi4iOmNhc2UiMCI6Y2FzZSIjIjpmb3IoO2huPE50Lmxlbmd0aCYmKCIwIz8uLEUrLSUiLmlu'@; put 'ZGV4T2YoUG49TnQuY2hhckF0KCsraG4pKT4tMXx8IlxcIj09UG4mJiItIj09TnQuY2hhckF0KGhuKzEpJiYiMCMiLmluZGV4T2YoTnQuY2hhckF0KGhuKzIpKT4tMSk7KTticmVhaztjYXNlIj8iOmZvcig7TnQuY2hhckF0KCsraG4pPT09UG47KTticmVhaztjYXNlIioiOisraG4sKCIgIj09'@; put 'TnQuY2hhckF0KGhuKXx8IioiPT1OdC5jaGFyQXQoaG4pKSYmKytobjticmVhaztjYXNlIigiOmNhc2UiKSI6KytobjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoO2huPE50Lmxlbmd0aCYm'@; put 'IjAxMjM0NTY3ODkiLmluZGV4T2YoTnQuY2hhckF0KCsraG4pKT4tMTspO2JyZWFrO2RlZmF1bHQ6Kytobn1yZXR1cm4hMX1mdW5jdGlvbiB4bihOdCxobixQbixTaSl7Zm9yKHZhciBOaSxEbyx3aSxlcj1bXSxEaT0iIixicj0wLFJpPSIiLHZhPSJ0IixLcz0iSCI7YnI8TnQubGVuZ3RoOylz'@; put 'd2l0Y2goUmk9TnQuY2hhckF0KGJyKSl7Y2FzZSJHIjppZighQmUoTnQsYnIpKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIGNoYXJhY3RlciAiK1JpKyIgaW4gIitOdCk7ZXJbZXIubGVuZ3RoXT17dDoiRyIsdjoiR2VuZXJhbCJ9LGJyKz03O2JyZWFrO2Nhc2UnIic6Zm9yKERpPSIi'@; put 'OzM0IT09KHdpPU50LmNoYXJDb2RlQXQoKyticikpJiZicjxOdC5sZW5ndGg7KURpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHdpKTtlcltlci5sZW5ndGhdPXt0OiJ0Iix2OkRpfSwrK2JyO2JyZWFrO2Nhc2UiXFwiOnZhciBRcz1OdC5jaGFyQXQoKyticik7ZXJbZXIubGVuZ3RoXT17dDoiKCI9'@; put 'PT1Rc3x8IikiPT09UXM/UXM6InQiLHY6UXN9LCsrYnI7YnJlYWs7Y2FzZSJfIjplcltlci5sZW5ndGhdPXt0OiJ0Iix2OiIgIn0sYnIrPTI7YnJlYWs7Y2FzZSJAIjplcltlci5sZW5ndGhdPXt0OiJUIix2OmhufSwrK2JyO2JyZWFrO2Nhc2UiQiI6Y2FzZSJiIjppZigiMSI9PT1OdC5jaGFy'@; put 'QXQoYnIrMSl8fCIyIj09PU50LmNoYXJBdChicisxKSl7aWYobnVsbD09TmkmJm51bGw9PShOaT11bihobixQbiwiMiI9PT1OdC5jaGFyQXQoYnIrMSkpKSlyZXR1cm4iIjtlcltlci5sZW5ndGhdPXt0OiJYIix2Ok50LnN1YnN0cihiciwyKX0sdmE9UmksYnIrPTI7YnJlYWt9Y2FzZSJNIjpj'@; put 'YXNlIkQiOmNhc2UiWSI6Y2FzZSJIIjpjYXNlIlMiOmNhc2UiRSI6Umk9UmkudG9Mb3dlckNhc2UoKTtjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOmNhc2UiXHUwZTI3IjpjYXNlIlx1MGUxNCI6Y2FzZSJcdTBlMWIiOmNhc2UiXHUwZTBh'@; put 'IjpjYXNlIlx1MGUxOSI6Y2FzZSJcdTBlMTciOmlmKGhuPDB8fG51bGw9PU5pJiZudWxsPT0oTmk9dW4oaG4sUG4pKSlyZXR1cm4iIjtmb3IoRGk9Umk7KyticjxOdC5sZW5ndGgmJk50LmNoYXJBdChicikudG9Mb3dlckNhc2UoKT09PVJpOylEaSs9Umk7Im0iPT09UmkmJiJoIj09PXZhLnRv'@; put 'TG93ZXJDYXNlKCkmJihSaT0iTSIpLCJoIj09PVJpJiYoUmk9S3MpLGVyW2VyLmxlbmd0aF09e3Q6UmksdjpEaX0sdmE9Umk7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNhc2UiXHU0ZTBhIjp2YXIgTWQ9e3Q6UmksdjpSaX07aWYobnVsbD09TmkmJihOaT11bihobixQbikpLCJBL1AiPT09TnQu'@; put 'c3Vic3RyKGJyLDMpLnRvVXBwZXJDYXNlKCk/KG51bGwhPU5pJiYoTWQudj1OaS5IPj0xMj8iUCI6IkEiKSxNZC50PSJUIixLcz0iaCIsYnIrPTMpOiJBTS9QTSI9PT1OdC5zdWJzdHIoYnIsNSkudG9VcHBlckNhc2UoKT8obnVsbCE9TmkmJihNZC52PU5pLkg+PTEyPyJQTSI6IkFNIiksTWQu'@; put 'dD0iVCIsYnIrPTUsS3M9ImgiKToiXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCI9PT1OdC5zdWJzdHIoYnIsNSkudG9VcHBlckNhc2UoKT8obnVsbCE9TmkmJihNZC52PU5pLkg+PTEyPyJcdTRlMGJcdTUzNDgiOiJcdTRlMGFcdTUzNDgiKSxNZC50PSJUIixicis9NSxLcz0iaCIpOihNZC50'@; put 'PSJ0IiwrK2JyKSxudWxsPT1OaSYmIlQiPT09TWQudClyZXR1cm4iIjtlcltlci5sZW5ndGhdPU1kLHZhPVJpO2JyZWFrO2Nhc2UiWyI6Zm9yKERpPVJpOyJdIiE9PU50LmNoYXJBdChicisrKSYmYnI8TnQubGVuZ3RoOylEaSs9TnQuY2hhckF0KGJyKTtpZigiXSIhPT1EaS5zbGljZSgtMSkp'@; put 'dGhyb3cndW50ZXJtaW5hdGVkICJbIiBibG9jazogfCcrRGkrInwiO2lmKERpLm1hdGNoKFBpKSl7aWYobnVsbD09TmkmJm51bGw9PShOaT11bihobixQbikpKXJldHVybiIiO2VyW2VyLmxlbmd0aF09e3Q6IloiLHY6RGkudG9Mb3dlckNhc2UoKX0sdmE9RGkuY2hhckF0KDEpfWVsc2UgRGku'@; put 'aW5kZXhPZigiJCIpPi0xJiYoRGk9KERpLm1hdGNoKC9cJChbXi1cW1xdXSopLyl8fFtdKVsxXXx8IiQiLFBjKE50KXx8KGVyW2VyLmxlbmd0aF09e3Q6InQiLHY6RGl9KSk7YnJlYWs7Y2FzZSIuIjppZihudWxsIT1OaSl7Zm9yKERpPVJpOysrYnI8TnQubGVuZ3RoJiYiMCI9PT0oUmk9TnQu'@; put 'Y2hhckF0KGJyKSk7KURpKz1SaTtlcltlci5sZW5ndGhdPXt0OiJzIix2OkRpfTticmVha31jYXNlIjAiOmNhc2UiIyI6Zm9yKERpPVJpOysrYnI8TnQubGVuZ3RoJiYiMCM/LixFKy0lIi5pbmRleE9mKFJpPU50LmNoYXJBdChicikpPi0xOylEaSs9Umk7ZXJbZXIubGVuZ3RoXT17dDoibiIs'@; put 'djpEaX07YnJlYWs7Y2FzZSI/Ijpmb3IoRGk9Umk7TnQuY2hhckF0KCsrYnIpPT09Umk7KURpKz1SaTtlcltlci5sZW5ndGhdPXt0OlJpLHY6RGl9LHZhPVJpO2JyZWFrO2Nhc2UiKiI6KyticiwoIiAiPT1OdC5jaGFyQXQoYnIpfHwiKiI9PU50LmNoYXJBdChicikpJiYrK2JyO2JyZWFrO2Nh'@; put 'c2UiKCI6Y2FzZSIpIjplcltlci5sZW5ndGhdPXt0OjE9PT1TaT8idCI6UmksdjpSaX0sKyticjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoRGk9Umk7YnI8TnQubGVuZ3RoJiYiMDEyMzQ1'@; put 'Njc4OSIuaW5kZXhPZihOdC5jaGFyQXQoKyticikpPi0xOylEaSs9TnQuY2hhckF0KGJyKTtlcltlci5sZW5ndGhdPXt0OiJEIix2OkRpfTticmVhaztjYXNlIiAiOmVyW2VyLmxlbmd0aF09e3Q6UmksdjpSaX0sKyticjticmVhaztjYXNlIiQiOmVyW2VyLmxlbmd0aF09e3Q6InQiLHY6X2l9'@; put 'LCsrYnI7YnJlYWs7Y2FzZSIvIjplcltlci5sZW5ndGhdPWVyLmxlbmd0aD4wJiZQYyhlcltlci5sZW5ndGgtMV0udik/e3Q6InQiLHY6RG59Ont0OiJ0Iix2OiIvIn0sKyticjticmVhaztkZWZhdWx0OmlmKC0xPT09IiwkLSsvKCk6IV4mJ357fTw+PVx1MjBhY2FjZmlqa2xvcHFydHV2d3h6'@; put 'UCIuaW5kZXhPZihSaSkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrUmkrIiBpbiAiK050KTtlcltlci5sZW5ndGhdPXt0OiJ0Iix2OlJpfSwrK2JyfXZhciBHOCx6ZT0wLEw1PTA7Zm9yKGJyPWVyLmxlbmd0aC0xLHZhPSJ0Ijticj49MDstLWJyKXN3aXRjaChl'@; put 'clticl0udCl7Y2FzZSJoIjpjYXNlIkgiOmVyW2JyXS50PUtzLHZhPSJoIix6ZTwxJiYoemU9MSk7YnJlYWs7Y2FzZSJzIjooRzg9ZXJbYnJdLnYubWF0Y2goL1wuMCskLykpJiYoTDU9TWF0aC5tYXgoTDUsRzhbMF0ubGVuZ3RoLTEpKSx6ZTwzJiYoemU9Myk7Y2FzZSJkIjpjYXNlInkiOmNh'@; put 'c2UiTSI6Y2FzZSJlIjp2YT1lclticl0udDticmVhaztjYXNlIm0iOiJzIj09PXZhJiYoZXJbYnJdLnQ9Ik0iLHplPDImJih6ZT0yKSk7YnJlYWs7Y2FzZSJYIjpicmVhaztjYXNlIloiOnplPDEmJmVyW2JyXS52Lm1hdGNoKC9bSGhdLykmJih6ZT0xKSx6ZTwyJiZlclticl0udi5tYXRjaCgv'@; put 'W01tXS8pJiYoemU9MiksemU8MyYmZXJbYnJdLnYubWF0Y2goL1tTc10vKSYmKHplPTMpfXN3aXRjaCh6ZSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTpOaS51Pj0uNSYmKE5pLnU9MCwrK05pLlMpLE5pLlM+PTYwJiYoTmkuUz0wLCsrTmkuTSksTmkuTT49NjAmJihOaS5NPTAsKytOaS5IKTticmVh'@; put 'aztjYXNlIDI6TmkudT49LjUmJihOaS51PTAsKytOaS5TKSxOaS5TPj02MCYmKE5pLlM9MCwrK05pLk0pfXZhciBibixKdD0iIjtmb3IoYnI9MDticjxlci5sZW5ndGg7Kyticilzd2l0Y2goZXJbYnJdLnQpe2Nhc2UidCI6Y2FzZSJUIjpjYXNlIiAiOmNhc2UiRCI6YnJlYWs7Y2FzZSJYIjpl'@; put 'clticl0udj0iIixlclticl0udD0iOyI7YnJlYWs7Y2FzZSJkIjpjYXNlIm0iOmNhc2UieSI6Y2FzZSJoIjpjYXNlIkgiOmNhc2UiTSI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiYiI6Y2FzZSJaIjpjYXNlIlx1MGUyNyI6Y2FzZSJcdTBlMTQiOmNhc2UiXHUwZTFiIjpjYXNlIlx1MGUwYSI6Y2Fz'@; put 'ZSJcdTBlMTkiOmNhc2UiXHUwZTE3Ijplclticl0udj1Ncyhlclticl0udC5jaGFyQ29kZUF0KDApLGVyW2JyXS52LE5pLEw1KSxlclticl0udD0idCI7YnJlYWs7Y2FzZSJuIjpjYXNlIj8iOmZvcihibj1icisxO251bGwhPWVyW2JuXSYmKCI/Ij09PShSaT1lcltibl0udCl8fCJEIj09PVJp'@; put 'fHwoIiAiPT09Uml8fCJ0Ij09PVJpKSYmbnVsbCE9ZXJbYm4rMV0mJigiPyI9PT1lcltibisxXS50fHwidCI9PT1lcltibisxXS50JiYiLyI9PT1lcltibisxXS52KXx8IigiPT09ZXJbYnJdLnQmJigiICI9PT1SaXx8Im4iPT09Uml8fCIpIj09PVJpKXx8InQiPT09UmkmJigiLyI9PT1lclti'@; put 'bl0udnx8IiAiPT09ZXJbYm5dLnYmJm51bGwhPWVyW2JuKzFdJiYiPyI9PWVyW2JuKzFdLnQpKTspZXJbYnJdLnYrPWVyW2JuXS52LGVyW2JuXT17djoiIix0OiI7In0sKytibjtKdCs9ZXJbYnJdLnYsYnI9Ym4tMTticmVhaztjYXNlIkciOmVyW2JyXS50PSJ0Iixlclticl0udj1ObyhobixQ'@; put 'bil9dmFyIER0LFd0LGVuPSIiO2lmKEp0Lmxlbmd0aD4wKXs0MD09SnQuY2hhckNvZGVBdCgwKT8oRHQ9aG48MCYmNDU9PT1KdC5jaGFyQ29kZUF0KDApPy1objpobixXdD0kYSgibiIsSnQsRHQpKTooV3Q9JGEoIm4iLEp0LER0PWhuPDAmJlNpPjE/LWhuOmhuKSxEdDwwJiZlclswXSYmInQi'@; put 'PT1lclswXS50JiYoV3Q9V3Quc3Vic3RyKDEpLGVyWzBdLnY9Ii0iK2VyWzBdLnYpKSxibj0oV3Q9V3QucmVwbGFjZSgvWyxcLl0vZyxmdW5jdGlvbihCcil7cmV0dXJuIi4iPT1Ccj9rcjpMaX0pKS5sZW5ndGgtMTt2YXIgb249ZXIubGVuZ3RoO2Zvcihicj0wO2JyPGVyLmxlbmd0aDsrK2Jy'@; put 'KWlmKG51bGwhPWVyW2JyXSYmInQiIT1lclticl0udCYmZXJbYnJdLnYuaW5kZXhPZigiLiIpPi0xKXtvbj1icjticmVha312YXIgTG49ZXIubGVuZ3RoO2lmKG9uPT09ZXIubGVuZ3RoJiYtMT09PVd0LmluZGV4T2YoIkUiKSl7Zm9yKGJyPWVyLmxlbmd0aC0xO2JyPj0wOy0tYnIpbnVsbD09'@; put 'ZXJbYnJdfHwtMT09PSJuPyIuaW5kZXhPZihlclticl0udCl8fChibj49ZXJbYnJdLnYubGVuZ3RoLTE/ZXJbYnJdLnY9V3Quc3Vic3RyKDErKGJuLT1lclticl0udi5sZW5ndGgpLGVyW2JyXS52Lmxlbmd0aCk6Ym48MD9lclticl0udj0iIjooZXJbYnJdLnY9V3Quc3Vic3RyKDAsYm4rMSks'@; put 'Ym49LTEpLGVyW2JyXS50PSJ0IixMbj1icik7Ym4+PTAmJkxuPGVyLmxlbmd0aCYmKGVyW0xuXS52PVd0LnN1YnN0cigwLGJuKzEpK2VyW0xuXS52KX1lbHNlIGlmKG9uIT09ZXIubGVuZ3RoJiYtMT09PVd0LmluZGV4T2YoIkUiKSl7Zm9yKGJuPVd0LmluZGV4T2Yoa3IpLTEsYnI9b247YnI+'@; put 'PTA7LS1icilpZihudWxsIT1lclticl0mJi0xIT09Im4/Ii5pbmRleE9mKGVyW2JyXS50KSl7Zm9yKERvPWVyW2JyXS52LmluZGV4T2YoIi4iKT4tMSYmYnI9PT1vbj9lclticl0udi5pbmRleE9mKCIuIiktMTplclticl0udi5sZW5ndGgtMSxlbj1lclticl0udi5zdWJzdHIoRG8rMSk7RG8+'@; put 'PTA7LS1Ebylibj49MCYmKCIwIj09PWVyW2JyXS52LmNoYXJBdChEbyl8fCIjIj09PWVyW2JyXS52LmNoYXJBdChEbykpJiYoZW49V3QuY2hhckF0KGJuLS0pK2VuKTtlclticl0udj1lbixlclticl0udD0idCIsTG49YnJ9Zm9yKGJuPj0wJiZMbjxlci5sZW5ndGgmJihlcltMbl0udj1XdC5z'@; put 'dWJzdHIoMCxibisxKStlcltMbl0udiksYm49V3QuaW5kZXhPZihrcikrMSxicj1vbjticjxlci5sZW5ndGg7KyticilpZihudWxsIT1lclticl0mJigtMSE9PSJuPygiLmluZGV4T2YoZXJbYnJdLnQpfHxicj09PW9uKSl7Zm9yKERvPWVyW2JyXS52LmluZGV4T2Yoa3IpPi0xJiZicj09PW9u'@; put 'P2VyW2JyXS52LmluZGV4T2Yoa3IpKzE6MCxlbj1lclticl0udi5zdWJzdHIoMCxEbyk7RG88ZXJbYnJdLnYubGVuZ3RoOysrRG8pYm48V3QubGVuZ3RoJiYoZW4rPVd0LmNoYXJBdChibisrKSk7ZXJbYnJdLnY9ZW4sZXJbYnJdLnQ9InQiLExuPWJyfX19Zm9yKGJyPTA7YnI8ZXIubGVuZ3Ro'@; put 'OysrYnIpbnVsbCE9ZXJbYnJdJiYibj8iLmluZGV4T2YoZXJbYnJdLnQpPi0xJiYoZXJbYnJdLnY9JGEoZXJbYnJdLnQsZXJbYnJdLnYsRHQ9U2k+MSYmaG48MCYmYnI+MCYmIi0iPT09ZXJbYnItMV0udj8taG46aG4pLnJlcGxhY2UoL1wuL2csa3IpLnJlcGxhY2UoLywvLExpKSxlclticl0u'@; put 'dD0idCIpO3ZhciBtcj0iIjtmb3IoYnI9MDticiE9PWVyLmxlbmd0aDsrK2JyKW51bGwhPWVyW2JyXSYmKG1yKz1lclticl0udik7cmV0dXJuIG1yfV8uaXNfZGF0ZT1QYyxfLl9ldmFsPXhuO3ZhciBxbD0vXFtbPTw+XS8sY2g9L1xbKD18Pls9XT98PFs+PV0/KSgtP1xkKyg/OlwuXGQqKT8p'@; put 'XF0vO2Z1bmN0aW9uIEVkKE50LGhuKXtpZihudWxsPT1obilyZXR1cm4hMTt2YXIgUG49cGFyc2VGbG9hdChoblsyXSk7c3dpdGNoKGhuWzFdKXtjYXNlIj0iOmlmKE50PT1QbilyZXR1cm4hMDticmVhaztjYXNlIj4iOmlmKE50PlBuKXJldHVybiEwO2JyZWFrO2Nhc2UiPCI6aWYoTnQ8UG4p'@; put 'cmV0dXJuITA7YnJlYWs7Y2FzZSI8PiI6aWYoTnQhPVBuKXJldHVybiEwO2JyZWFrO2Nhc2UiPj0iOmlmKE50Pj1QbilyZXR1cm4hMDticmVhaztjYXNlIjw9IjppZihOdDw9UG4pcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTGgoTnQsaG4sUG4pe251bGw9PVBuJiYoUG49e30pO3ZhciBT'@; put 'aT0iIjtzd2l0Y2godHlwZW9mIE50KXtjYXNlInN0cmluZyI6U2k9Im0vZC95eSI9PU50JiZQbi5kYXRlTkY/UG4uZGF0ZU5GOk50O2JyZWFrO2Nhc2UibnVtYmVyIjpudWxsPT0oU2k9MTQ9PU50JiZQbi5kYXRlTkY/UG4uZGF0ZU5GOihudWxsIT1Qbi50YWJsZT9Qbi50YWJsZTpmdClbTnRd'@; put 'KSYmKFNpPVBuLnRhYmxlJiZQbi50YWJsZVtrdFtOdF1dfHxmdFtrdFtOdF1dKSxudWxsPT1TaSYmKFNpPUV0W050XXx8IkdlbmVyYWwiKX1pZihCZShTaSwwKSlyZXR1cm4gTm8oaG4sUG4pO2huIGluc3RhbmNlb2YgRGF0ZSYmKGhuPWpuKGhuLFBuLmRhdGUxOTA0KSk7dmFyIGVyPWZ1bmN0'@; put 'aW9uIHpkKE50LGhuKXt2YXIgUG49U2EoTnQpLFNpPVBuLmxlbmd0aCxlcj1QbltTaS0xXS5pbmRleE9mKCJAIik7aWYoU2k8NCYmZXI+LTEmJi0tU2ksUG4ubGVuZ3RoPjQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHwiK1BuLmpvaW4oInwiKSsifCIp'@; put 'O2lmKCJudW1iZXIiIT10eXBlb2YgaG4pcmV0dXJuWzQsND09PVBuLmxlbmd0aHx8ZXI+LTE/UG5bUG4ubGVuZ3RoLTFdOiJAIl07c3dpdGNoKFBuLmxlbmd0aCl7Y2FzZSAxOlBuPWVyPi0xP1siR2VuZXJhbCIsIkdlbmVyYWwiLCJHZW5lcmFsIixQblswXV06W1BuWzBdLFBuWzBdLFBuWzBd'@; put 'LCJAIl07YnJlYWs7Y2FzZSAyOlBuPWVyPi0xP1tQblswXSxQblswXSxQblswXSxQblsxXV06W1BuWzBdLFBuWzFdLFBuWzBdLCJAIl07YnJlYWs7Y2FzZSAzOlBuPWVyPi0xP1tQblswXSxQblsxXSxQblswXSxQblsyXV06W1BuWzBdLFBuWzFdLFBuWzJdLCJAIl19dmFyIERpPWhuPjA/UG5b'@; put 'MF06aG48MD9QblsxXTpQblsyXTtpZigtMT09PVBuWzBdLmluZGV4T2YoIlsiKSYmLTE9PT1QblsxXS5pbmRleE9mKCJbIikpcmV0dXJuW1NpLERpXTtpZihudWxsIT1QblswXS5tYXRjaChxbCl8fG51bGwhPVBuWzFdLm1hdGNoKHFsKSl7dmFyIGJyPVBuWzBdLm1hdGNoKGNoKSxSaT1Qblsx'@; put 'XS5tYXRjaChjaCk7cmV0dXJuIEVkKGhuLGJyKT9bU2ksUG5bMF1dOkVkKGhuLFJpKT9bU2ksUG5bMV1dOltTaSxQbltudWxsIT1iciYmbnVsbCE9Umk/MjoxXV19cmV0dXJuW1NpLERpXX0oU2ksaG4pO2lmKEJlKGVyWzFdKSlyZXR1cm4gTm8oaG4sUG4pO2lmKCEwPT09aG4paG49IlRSVUUi'@; put 'O2Vsc2UgaWYoITE9PT1obilobj0iRkFMU0UiO2Vsc2UgaWYoIiI9PT1obnx8bnVsbD09aG4pcmV0dXJuIiI7cmV0dXJuIHhuKGVyWzFdLGhuLFBuLGVyWzBdKX1mdW5jdGlvbiBnYyhOdCxobil7aWYoIm51bWJlciIhPXR5cGVvZiBobil7aG49K2hufHwtMTtmb3IodmFyIFBuPTA7UG48Mzky'@; put 'OysrUG4paWYobnVsbCE9ZnRbUG5dKXtpZihmdFtQbl09PU50KXtobj1QbjticmVha319ZWxzZSBobjwwJiYoaG49UG4pO2huPDAmJihobj0zOTEpfXJldHVybiBmdFtobl09TnQsaG59Xy5sb2FkPWdjLF8uX3RhYmxlPWZ0LF8uZ2V0X3RhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ0fSxfLmxv'@; put 'YWRfdGFibGU9ZnVuY3Rpb24oaG4pe2Zvcih2YXIgUG49MDszOTIhPVBuOysrUG4pdm9pZCAwIT09aG5bUG5dJiZnYyhobltQbl0sUG4pfSxfLmluaXRfdGFibGU9UWUsXy5mb3JtYXQ9TGgsXy5nZXRsb2NhbGU9ZnVuY3Rpb24gT3IoKXtyZXR1cm4ga258fCJlbi1VUyJ9LF8uc2V0bG9jYWxl'@; put 'PWZ1bmN0aW9uIF9yKE50KXtpZihmdW5jdGlvbiBOcihOdCl7dmFyIGhuPTA7c3dpdGNoKChrbnx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiemgtdHciOmNhc2UiemgtY24iOmNhc2UiamEtanAiOmNhc2Uia28ta3IiOmZvcihobj0yNztobjw9MzY7KytobilkZWxldGUgTnRbaG5dO2Zvciho'@; put 'bj01MDtobjw9NTg7KytobilkZWxldGUgTnRbaG5dO2JyZWFrO2Nhc2UidGgtdGgiOmZvcihobj01OTtobjw9NjI7KytobilkZWxldGUgTnRbaG5dO2Zvcihobj02Nztobjw9ODE7KytobilkZWxldGUgTnRbaG5dfX0oZnQpLGtuPU50LE1uKGZ0KSx0eXBlb2YgSW50bDwidSIpe3ZhciBobj1J'@; put 'bnRsLkRhdGVUaW1lRm9ybWF0KE50KTtpZihobi5mb3JtYXRUb1BhcnRzKXtmb3IodmFyIFBuPWhuLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwwLDUsMCwwLDApKSxTaT0wO1NpPDc7KytTaSludFtTaV1bMV09SW50bC5EYXRlVGltZUZvcm1hdChOdCx7d2Vla2RheToibG9uZyJ9KS5m'@; put 'b3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAsMCw1K1NpLDAsMCwwKSlbMF0udmFsdWUsbnRbU2ldWzBdPUludGwuRGF0ZVRpbWVGb3JtYXQoTnQse3dlZWtkYXk6InNob3J0In0pLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwwLDUrU2ksMCwwLDApKVswXS52YWx1ZTtmb3IodmFyIGVy'@; put 'PTA7ZXI8MTI7KytlciltdFtlcl1bMl09SW50bC5EYXRlVGltZUZvcm1hdChOdCx7bW9udGg6ImxvbmcifSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLGVyLDIsMCwwLDApKVswXS52YWx1ZSxtdFtlcl1bMV09SW50bC5EYXRlVGltZUZvcm1hdChOdCx7bW9udGg6InNob3J0In0pLmZv'@; put 'cm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCxlciwyLDAsMCwwKSlbMF0udmFsdWUsbXRbZXJdWzBdPW10W2VyXVsxXS5zbGljZSgwLDEpO2Zvcih2YXIgRGk9IiIsYnI9MDticjxQbi5sZW5ndGg7Kyticil7dmFyIFJpPVBuW2JyXS52YWx1ZTtzd2l0Y2goUG5bYnJdLnR5cGUpe2Nhc2UieWVh'@; put 'ciI6RGkrPTI9PVJpLmxlbmd0aD8ieXkiOiJ5eXl5IjticmVhaztjYXNlIm1vbnRoIjpEaSs9IjEiPT1SaT8ibSI6IjAxIj09Umk/Im1tIjpSaT09bXRbMF1bMV0/Im1tbSI6Umk9PW10WzBdWzJdPyJtbW1tIjpSaT09bXRbMF1bMF0/Im1tbW1tIjoibW0iO2JyZWFrO2Nhc2UiZGF5IjpEaSs9'@; put 'IjUiPT1SaT8iZCI6IjA1Ij09Umk/ImRkIjpSaT09bnRbMF1bMF0/ImRkZCI6Umk9PW50WzBdWzFdPyJkZGRkIjoiZGQiO2JyZWFrO2Nhc2UibGl0ZXJhbCI6RGkrPVJpLnJlcGxhY2UoLy4vZywiXFwkJiIpLDE9PVJpLmxlbmd0aCYmKERuPVJpKX19KE50Lm1hdGNoKC9lbi9pKSYmTnQubWF0'@; put 'Y2goL3VzL2kpfHwhTnQpJiYoRGk9Im0vZC95eSIpLGZ0WzE0XT1EaX1lbHNlImphLWpwIj09TnQudG9Mb3dlckNhc2UoKSYmKGZ0WzE0XT0ieXl5eVxcL21cXC9kIik7dmFyIHZhPUludGwuTnVtYmVyRm9ybWF0KE50LHt9KS5mb3JtYXQoMTIzNDU2Ny44OSk7dmEmJihMaT0odmEubWF0Y2go'@; put 'LzEoLiopMi8pfHxbXSlbMV0sa3I9KHZhLm1hdGNoKC83KC4qKTgvKXx8W10pWzFdKX1zcltOdC50b0xvd2VyQ2FzZSgpXXx8KHNyW050LnRvTG93ZXJDYXNlKCldPXsiLiI6a3IsIiwiOkxpfSkscW49WmUoZ3I9c3JbTnQudG9Mb3dlckNhc2UoKV18fHNyWyJlbi11cyJdKX0sXy5ub3JtYWxp'@; put 'emU9ZnVuY3Rpb24geGwoTnQpe2Zvcih2YXIgaG49MCxQbj0wLFNpPSIiLGVyPSIiLERpPSIiLGJyPWdyLnl8fCJ5IixSaT1ici50b1VwcGVyQ2FzZSgpLHZhPWdyLmR8fCJkIixOaT12YS50b1VwcGVyQ2FzZSgpLERvPWdyWyIuIl0sd2k9Z3JbIiwiXSxLcz0iMCM/RSstJSIrZ3JbIiwiXStE'@; put 'bztobjxOdC5sZW5ndGg7KXN3aXRjaChTaT1OdC5jaGFyQXQoaG4pKXtjYXNlIkciOmhuKyssRGkrPVNpO2JyZWFrO2Nhc2UnIic6Zm9yKERpKz1TaTszNCE9PShQbj1OdC5jaGFyQ29kZUF0KCsraG4pKSYmaG48TnQubGVuZ3RoOylEaSs9U3RyaW5nLmZyb21DaGFyQ29kZShQbik7RGkrPSci'@; put 'JywrK2huO2JyZWFrO2Nhc2UiXFwiOmNhc2UiXyI6RGkrPU50LnNsaWNlKGhuLGhuKzIpLGhuKz0yO2JyZWFrO2Nhc2UiQCI6RGkrPVNpLCsraG47YnJlYWs7Y2FzZSJCIjpjYXNlImIiOisraG4sRGkrPVNpO2JyZWFrO2Nhc2UgYnI6Y2FzZSBSaTpjYXNlIHZhOmNhc2UgTmk6RGkrPXFuW1Np'@; put 'LnRvTG93ZXJDYXNlKCldLCsraG47YnJlYWs7Y2FzZSJNIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpjYXNlIm0iOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJBIjpjYXNlImEiOkRpKz1TaSwrK2huO2JyZWFrO2Nhc2UiWyI6Zm9yKGVyPVNpOyJdIiE9PU50LmNoYXJB'@; put 'dChobisrKSYmaG48TnQubGVuZ3RoOyllcis9TnQuY2hhckF0KGhuKTtEaSs9ZXI7YnJlYWs7Y2FzZSB3aTpEaSs9JyInK1NpKyciJywrK2huO2JyZWFrO2Nhc2UgRG86aWYoIShobjxOdC5sZW5ndGgmJihLcy5pbmRleE9mKFNpPU50LmNoYXJBdCgrK2huKSk+LTF8fCJcXCI9PVNpJiYiLSI9'@; put 'PU50LmNoYXJBdChobisxKSYmIjAjIi5pbmRleE9mKE50LmNoYXJBdChobisyKSk+LTEpKSl7RGkrPSciJytEbysnIic7YnJlYWt9U2k9RG8sLS1objtjYXNlIjAiOmNhc2UiIyI6Zm9yKERpKz1xbltTaS50b0xvd2VyQ2FzZSgpXXx8U2k7aG48TnQubGVuZ3RoJiYoS3MuaW5kZXhPZihTaT1O'@; put 'dC5jaGFyQXQoKytobikpPi0xfHwiXFwiPT1TaSYmIi0iPT1OdC5jaGFyQXQoaG4rMSkmJiIwIyIuaW5kZXhPZihOdC5jaGFyQXQoaG4rMikpPi0xKTspRGkrPXFuW1NpLnRvTG93ZXJDYXNlKCldfHxTaTticmVhaztjYXNlIj8iOmZvcihEaSs9U2k7TnQuY2hhckF0KCsraG4pPT09U2k7KURp'@; put 'Kz1TaTticmVhaztjYXNlIioiOkRpKz1TaSwrK2huLCgiICI9PU50LmNoYXJBdChobil8fCIqIj09TnQuY2hhckF0KGhuKSkmJihEaSs9TnQuY2hhckF0KGhuKSwrK2huKTticmVhaztjYXNlIigiOmNhc2UiKSI6RGkrPVNpLCsraG47YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2Fz'@; put 'ZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Zm9yKERpKz1TaTtobjxOdC5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKE50LmNoYXJBdCgrK2huKSk+LTE7KURpKz1OdC5jaGFyQXQoaG4pO2JyZWFrO2RlZmF1bHQ6RGkrPVNpLCsraG59cmV0dXJuIERp'@; put 'fSxfLmdldGN1cnJlbmN5PWZ1bmN0aW9uIHNvKCl7cmV0dXJuIE9pfHwiVVNEIn0sXy5zZXRjdXJyZW5jeT1mdW5jdGlvbiBtbyhOdCl7T2k9TnQsX2k9dHlwZW9mIEludGw8InUiP0ludGwuTnVtYmVyRm9ybWF0KGtuLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5RGlzcGxheToic3ltYm9s'@; put 'IixjdXJyZW5jeTpOdH0pLmZvcm1hdCgwKS5yZXBsYWNlKC9bMFwuXCxcc10vZywiIik6IiQifX07dWUoSSk7dmFyIFJlLG5lPXsiR2VuZXJhbCBOdW1iZXIiOiJHZW5lcmFsIiwiR2VuZXJhbCBEYXRlIjpJLl90YWJsZVsyMl0sIkxvbmcgRGF0ZSI6ImRkZGQsIG1tbW0gZGQsIHl5eXkiLCJN'@; put 'ZWRpdW0gRGF0ZSI6SS5fdGFibGVbMTVdLCJTaG9ydCBEYXRlIjpJLl90YWJsZVsxNF0sIkxvbmcgVGltZSI6SS5fdGFibGVbMTldLCJNZWRpdW0gVGltZSI6SS5fdGFibGVbMThdLCJTaG9ydCBUaW1lIjpJLl90YWJsZVsyMF0sQ3VycmVuY3k6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIj'@; put 'LCMjMC4wMFxcKScsRml4ZWQ6SS5fdGFibGVbMl0sU3RhbmRhcmQ6SS5fdGFibGVbNF0sUGVyY2VudDpJLl90YWJsZVsxMF0sU2NpZW50aWZpYzpJLl90YWJsZVsxMV0sIlllcy9ObyI6JyJZZXMiOyJZZXMiOyJObyI7QCcsIlRydWUvRmFsc2UiOiciVHJ1ZSI7IlRydWUiOyJGYWxzZSI7QCcs'@; put 'Ik9uL09mZiI6JyJZZXMiOyJZZXMiOyJObyI7QCd9LF9lPXs1OiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2OiciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLDc6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDg6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIj'@; put 'LCMjMC4wMFxcKScsMjM6IkdlbmVyYWwiLDI0OiJHZW5lcmFsIiwyNToiR2VuZXJhbCIsMjY6IkdlbmVyYWwiLDI3OiJtL2QveXkiLDI4OiJtL2QveXkiLDI5OiJtL2QveXkiLDMwOiJtL2QveXkiLDMxOiJtL2QveXkiLDMyOiJoOm1tOnNzIiwzMzoiaDptbTpzcyIsMzQ6Img6bW06c3MiLDM1'@; put 'OiJoOm1tOnNzIiwzNjoibS9kL3l5Iiw0MTonXygqICMsIyMwXyk7XygqICgjLCMjMCk7XygqICItIl8pO18oQF8pJyw0MjonXygiJCIqICMsIyMwXyk7XygiJCIqICgjLCMjMCk7XygiJCIqICItIl8pO18oQF8pJyw0MzonXygqICMsIyMwLjAwXyk7XygqICgjLCMjMC4wMCk7XygqICItIj8/'@; put 'Xyk7XyhAXyknLDQ0OidfKCIkIiogIywjIzAuMDBfKTtfKCIkIiogKCMsIyMwLjAwKTtfKCIkIiogIi0iPz9fKTtfKEBfKScsNTA6Im0vZC95eSIsNTE6Im0vZC95eSIsNTI6Im0vZC95eSIsNTM6Im0vZC95eSIsNTQ6Im0vZC95eSIsNTU6Im0vZC95eSIsNTY6Im0vZC95eSIsNTc6Im0vZC95'@; put 'eSIsNTg6Im0vZC95eSIsNTk6IjAiLDYwOiIwLjAwIiw2MToiIywjIzAiLDYyOiIjLCMjMC4wMCIsNjM6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY0OiciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLDY1OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw2Njon'@; put 'IiQiIywjIzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyw2NzoiMCUiLDY4OiIwLjAwJSIsNjk6IiMgPy8/Iiw3MDoiIyA/Py8/PyIsNzE6Im0vZC95eSIsNzI6Im0vZC95eSIsNzM6ImQtbW1tLXl5Iiw3NDoiZC1tbW0iLDc1OiJtbW0teXkiLDc2OiJoOm1tIiw3NzoiaDptbTpzcyIs'@; put 'Nzg6Im0vZC95eSBoOm1tIiw3OToibW06c3MiLDgwOiJbaF06bW06c3MiLDgxOiJtbXNzLjAifSxQZT0vW2REXSt8W21NXSt8W3lZZUVdK3xbSGhdK3xbU3NdKy9nOyFmdW5jdGlvbihkKXtkLnZlcnNpb249IjEuMi4wIjt2YXIgbT1mdW5jdGlvbiBfKCl7Zm9yKHZhciBvZT0wLGRlPW5ldyBB'@; put 'cnJheSgyNTYpLExlPTA7MjU2IT1MZTsrK0xlKWRlW0xlXT1vZT0xJihvZT0xJihvZT0xJihvZT0xJihvZT0xJihvZT0xJihvZT0xJihvZT0xJihvZT1MZSk/LTMwNjY3NDkxMl5vZT4+PjE6b2U+Pj4xKT8tMzA2Njc0OTEyXm9lPj4+MTpvZT4+PjEpPy0zMDY2NzQ5MTJeb2U+Pj4xOm9lPj4+'@; put 'MSk/LTMwNjY3NDkxMl5vZT4+PjE6b2U+Pj4xKT8tMzA2Njc0OTEyXm9lPj4+MTpvZT4+PjEpPy0zMDY2NzQ5MTJeb2U+Pj4xOm9lPj4+MSk/LTMwNjY3NDkxMl5vZT4+PjE6b2U+Pj4xKT8tMzA2Njc0OTEyXm9lPj4+MTpvZT4+PjE7cmV0dXJuIHR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcg'@; put 'SW50MzJBcnJheShkZSk6ZGV9KCk7ZC50YWJsZT1tLGQuYnN0cj1mdW5jdGlvbiBUKG9lLGRlKXtmb3IodmFyIExlPS0xXmRlLE5lPW9lLmxlbmd0aC0xLEJlPTA7QmU8TmU7KUxlPShMZT1MZT4+PjhebVsyNTUmKExlXm9lLmNoYXJDb2RlQXQoQmUrKykpXSk+Pj44Xm1bMjU1JihMZV5vZS5j'@; put 'aGFyQ29kZUF0KEJlKyspKV07cmV0dXJuIEJlPT09TmUmJihMZT1MZT4+PjhebVsyNTUmKExlXm9lLmNoYXJDb2RlQXQoQmUpKV0pLC0xXkxlfSxkLmJ1Zj1mdW5jdGlvbiBQKG9lLGRlKXtpZihvZS5sZW5ndGg+MWU0KXJldHVybiBmdW5jdGlvbiBRKG9lLGRlKXtmb3IodmFyIExlPS0xXmRl'@; put 'LE5lPW9lLmxlbmd0aC03LEJlPTA7QmU8TmU7KUxlPShMZT0oTGU9KExlPShMZT0oTGU9KExlPShMZT1MZT4+PjhebVsyNTUmKExlXm9lW0JlKytdKV0pPj4+OF5tWzI1NSYoTGVeb2VbQmUrK10pXSk+Pj44Xm1bMjU1JihMZV5vZVtCZSsrXSldKT4+PjhebVsyNTUmKExlXm9lW0JlKytdKV0p'@; put 'Pj4+OF5tWzI1NSYoTGVeb2VbQmUrK10pXSk+Pj44Xm1bMjU1JihMZV5vZVtCZSsrXSldKT4+PjhebVsyNTUmKExlXm9lW0JlKytdKV0pPj4+OF5tWzI1NSYoTGVeb2VbQmUrK10pXTtmb3IoO0JlPE5lKzc7KUxlPUxlPj4+OF5tWzI1NSYoTGVeb2VbQmUrK10pXTtyZXR1cm4tMV5MZX0ob2Us'@; put 'ZGUpO2Zvcih2YXIgTGU9LTFeZGUsTmU9b2UubGVuZ3RoLTMsQmU9MDtCZTxOZTspTGU9KExlPShMZT0oTGU9TGU+Pj44Xm1bMjU1JihMZV5vZVtCZSsrXSldKT4+PjhebVsyNTUmKExlXm9lW0JlKytdKV0pPj4+OF5tWzI1NSYoTGVeb2VbQmUrK10pXSk+Pj44Xm1bMjU1JihMZV5vZVtCZSsr'@; put 'XSldO2Zvcig7QmU8TmUrMzspTGU9TGU+Pj44Xm1bMjU1JihMZV5vZVtCZSsrXSldO3JldHVybi0xXkxlfSxkLnN0cj1mdW5jdGlvbiBzZShvZSxkZSl7Zm9yKHZhciBaZSxudCxMZT0tMV5kZSxOZT0wLEJlPW9lLmxlbmd0aDtOZTxCZTspKFplPW9lLmNoYXJDb2RlQXQoTmUrKykpPDEyOD9M'@; put 'ZT1MZT4+PjhebVsyNTUmKExlXlplKV06WmU8MjA0OD9MZT0oTGU9TGU+Pj44Xm1bMjU1JihMZV4oMTkyfFplPj42JjMxKSldKT4+PjhebVsyNTUmKExlXigxMjh8NjMmWmUpKV06WmU+PTU1Mjk2JiZaZTw1NzM0ND8oWmU9NjQrKDEwMjMmWmUpLG50PTEwMjMmb2UuY2hhckNvZGVBdChOZSsr'@; put 'KSxMZT0oTGU9KExlPShMZT1MZT4+PjhebVsyNTUmKExlXigyNDB8WmU+PjgmNykpXSk+Pj44Xm1bMjU1JihMZV4oMTI4fFplPj4yJjYzKSldKT4+PjhebVsyNTUmKExlXigxMjh8bnQ+PjYmMTV8KDMmWmUpPDw0KSldKT4+PjhebVsyNTUmKExlXigxMjh8NjMmbnQpKV0pOkxlPShMZT0oTGU9'@; put 'TGU+Pj44Xm1bMjU1JihMZV4oMjI0fFplPj4xMiYxNSkpXSk+Pj44Xm1bMjU1JihMZV4oMTI4fFplPj42JjYzKSldKT4+PjhebVsyNTUmKExlXigxMjh8NjMmWmUpKV07cmV0dXJuLTFeTGV9fShSZT17fSk7dmFyIHhlLGFlPWZ1bmN0aW9uKCl7dmFyIGRlLF89e307ZnVuY3Rpb24gVChKdCl7'@; put 'aWYoIi8iPT1KdC5jaGFyQXQoSnQubGVuZ3RoLTEpKXJldHVybi0xPT09SnQuc2xpY2UoMCwtMSkuaW5kZXhPZigiLyIpP0p0OlQoSnQuc2xpY2UoMCwtMSkpO3ZhciBibj1KdC5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09Ym4/SnQ6SnQuc2xpY2UoMCxibisxKX1mdW5jdGlvbiBQKEp0'@; put 'KXtpZigiLyI9PUp0LmNoYXJBdChKdC5sZW5ndGgtMSkpcmV0dXJuIFAoSnQuc2xpY2UoMCwtMSkpO3ZhciBibj1KdC5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09Ym4/SnQ6SnQuc2xpY2UoYm4rMSl9ZnVuY3Rpb24gUShKdCxibil7InN0cmluZyI9PXR5cGVvZiBibiYmKGJuPW5ldyBE'@; put 'YXRlKGJuKSk7dmFyIGVuPWJuLmdldEhvdXJzKCk7ZW49KGVuPWVuPDw2fGJuLmdldE1pbnV0ZXMoKSk8PDV8Ym4uZ2V0U2Vjb25kcygpPj4+MSxKdC53cml0ZV9zaGlmdCgyLGVuKTt2YXIgRHQ9Ym4uZ2V0RnVsbFllYXIoKS0xOTgwO0R0PShEdD1EdDw8NHxibi5nZXRNb250aCgpKzEpPDw1'@; put 'fGJuLmdldERhdGUoKSxKdC53cml0ZV9zaGlmdCgyLER0KX1mdW5jdGlvbiBvZShKdCl7T2woSnQsMCk7Zm9yKHZhciBibj17fSxlbj0wO0p0Lmw8PUp0Lmxlbmd0aC00Oyl7dmFyIER0PUp0LnJlYWRfc2hpZnQoMiksV3Q9SnQucmVhZF9zaGlmdCgyKSxvbj1KdC5sK1d0LExuPXt9OzIxNTg5'@; put 'PT09RHQmJigxJihlbj1KdC5yZWFkX3NoaWZ0KDEpKSYmKExuLm10aW1lPUp0LnJlYWRfc2hpZnQoNCkpLFd0PjUmJigyJmVuJiYoTG4uYXRpbWU9SnQucmVhZF9zaGlmdCg0KSksNCZlbiYmKExuLmN0aW1lPUp0LnJlYWRfc2hpZnQoNCkpKSxMbi5tdGltZSYmKExuLm10PW5ldyBEYXRlKDFl'@; put 'MypMbi5tdGltZSkpKSxKdC5sPW9uLGJuW0R0XT1Mbn1yZXR1cm4gYm59ZnVuY3Rpb24gTGUoKXtyZXR1cm4gZGV8fChkZT1oKDgzMzM3KSl9ZnVuY3Rpb24gTmUoSnQsYm4pe2lmKDgwPT1KdFswXSYmNzU9PUp0WzFdKXJldHVybiB3aShKdCxibik7aWYoSnQubGVuZ3RoPDUxMil0aHJvdyBu'@; put 'ZXcgRXJyb3IoIkNGQiBmaWxlIHNpemUgIitKdC5sZW5ndGgrIiA8IDUxMiIpO3ZhciBlbixXdCxvbixMbixtcixCcixEdD01MTIsRWk9W10sb2k9SnQuc2xpY2UoMCw1MTIpO09sKG9pLDApO3ZhciBlbz1mdW5jdGlvbiBCZShKdCl7aWYoODA9PUp0W0p0LmxdJiY3NT09SnRbSnQubCsxXSly'@; put 'ZXR1cm5bMCwwXTtKdC5jaGsoX2ksIkhlYWRlciBTaWduYXR1cmU6ICIpLEp0LmwrPTE2O3ZhciBibj1KdC5yZWFkX3NoaWZ0KDIsInUiKTtyZXR1cm5bSnQucmVhZF9zaGlmdCgyLCJ1IiksYm5dfShvaSk7c3dpdGNoKGVuPWVvWzBdKXtjYXNlIDM6RHQ9NTEyO2JyZWFrO2Nhc2UgNDpEdD00'@; put 'MDk2O2JyZWFrO2Nhc2UgMDppZigwPT1lb1sxXSlyZXR1cm4gd2koSnQsYm4pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJNYWpvciBWZXJzaW9uOiBFeHBlY3RlZCAzIG9yIDQgc2F3ICIrZW4pfTUxMiE9PUR0JiZPbChvaT1KdC5zbGljZSgwLER0KSwyOCk7dmFyIEhpPUp0LnNsaWNlKDAs'@; put 'RHQpOyFmdW5jdGlvbiBaZShKdCxibil7dmFyIGVuO3N3aXRjaChKdC5sKz0yLGVuPUp0LnJlYWRfc2hpZnQoMikpe2Nhc2UgOTppZigzIT1ibil0aHJvdyBuZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgOSBzYXcgIitlbik7YnJlYWs7Y2FzZSAxMjppZig0IT1ibil0aHJvdyBu'@; put 'ZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgMTIgc2F3ICIrZW4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgb3IgMTIgc2F3ICIrZW4pfUp0LmNoaygiMDYwMCIsIk1pbmkgU2VjdG9yIFNoaWZ0OiAiKSxKdC5jaGsoIjAw'@; put 'MDAwMDAwMDAwMCIsIlJlc2VydmVkOiAiKX0ob2ksZW4pO3ZhciBaYT1vaS5yZWFkX3NoaWZ0KDQsImkiKTtpZigzPT09ZW4mJjAhPT1aYSl0aHJvdyBuZXcgRXJyb3IoIiMgRGlyZWN0b3J5IFNlY3RvcnM6IEV4cGVjdGVkIDAgc2F3ICIrWmEpO29pLmwrPTQsTG49b2kucmVhZF9zaGlmdCg0'@; put 'LCJpIiksb2kubCs9NCxvaS5jaGsoIjAwMTAwMDAwIiwiTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICIpLG1yPW9pLnJlYWRfc2hpZnQoNCwiaSIpLFd0PW9pLnJlYWRfc2hpZnQoNCwiaSIpLEJyPW9pLnJlYWRfc2hpZnQoNCwiaSIpLG9uPW9pLnJlYWRfc2hpZnQoNCwiaSIpO2Zvcih2YXIg'@; put 'c2E9LTEsQW89MDtBbzwxMDkmJiEoKHNhPW9pLnJlYWRfc2hpZnQoNCwiaSIpKTwwKTsrK0FvKUVpW0FvXT1zYTt2YXIgeXM9ZnVuY3Rpb24gbnQoSnQsYm4pe2Zvcih2YXIgZW49TWF0aC5jZWlsKEp0Lmxlbmd0aC9ibiktMSxEdD1bXSxXdD0xO1d0PGVuOysrV3QpRHRbV3QtMV09SnQuc2xp'@; put 'Y2UoV3QqYm4sKFd0KzEpKmJuKTtyZXR1cm4gRHRbZW4tMV09SnQuc2xpY2UoZW4qYm4pLER0fShKdCxEdCk7ZnQoQnIsb24seXMsRHQsRWkpO3ZhciByYz1mdW5jdGlvbiBidChKdCxibixlbixEdCl7dmFyIFd0PUp0Lmxlbmd0aCxvbj1bXSxMbj1bXSxtcj1bXSxCcj1bXSxFaT1EdC0xLG9p'@; put 'PTAsZW89MCxIaT0wLFphPTA7Zm9yKG9pPTA7b2k8V3Q7KytvaSlpZihtcj1bXSwoSGk9b2krYm4pPj1XdCYmKEhpLT1XdCksIUxuW0hpXSl7QnI9W107dmFyIHNhPVtdO2Zvcihlbz1IaTtlbz49MDspe3NhW2VvXT0hMCxMbltlb109ITAsbXJbbXIubGVuZ3RoXT1lbyxCci5wdXNoKEp0W2Vv'@; put 'XSk7dmFyIEFvPWVuW01hdGguZmxvb3IoNCplby9EdCldO2lmKER0PDQrKFphPTQqZW8mRWkpKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6ICIrZW8rIiA0ICIrRHQpO2lmKCFKdFtBb118fHNhW2VvPXVsKEp0W0FvXSxaYSldKWJyZWFrfW9uW0hpXT17bm9kZXM6bXIs'@; put 'ZGF0YTpuaChbQnJdKX19cmV0dXJuIG9ufSh5cyxMbixFaSxEdCk7cmNbTG5dLm5hbWU9IiFEaXJlY3RvcnkiLFd0PjAmJm1yIT09cW4mJihyY1ttcl0ubmFtZT0iIU1pbmlGQVQiKSxyY1tFaVswXV0ubmFtZT0iIUZBVCIscmMuZmF0X2FkZHJzPUVpLHJjLnNzej1EdDt2YXIgejE9W10sVTA9'@; put 'W10sS3k9W107KGZ1bmN0aW9uIEV0KEp0LGJuLGVuLER0LFd0LG9uLExuLG1yKXtmb3IodmFyIFphLEJyPTAsRWk9RHQubGVuZ3RoPzI6MCxvaT1ibltKdF0uZGF0YSxlbz0wLEhpPTA7ZW88b2kubGVuZ3RoO2VvKz0xMjgpe3ZhciBzYT1vaS5zbGljZShlbyxlbysxMjgpO09sKHNhLDY0KSxI'@; put 'aT1zYS5yZWFkX3NoaWZ0KDIpLFphPUpjKHNhLDAsSGktRWkpLER0LnB1c2goWmEpO3ZhciBBbz17bmFtZTpaYSx0eXBlOnNhLnJlYWRfc2hpZnQoMSksY29sb3I6c2EucmVhZF9zaGlmdCgxKSxMOnNhLnJlYWRfc2hpZnQoNCwiaSIpLFI6c2EucmVhZF9zaGlmdCg0LCJpIiksQzpzYS5yZWFk'@; put 'X3NoaWZ0KDQsImkiKSxjbHNpZDpzYS5yZWFkX3NoaWZ0KDE2KSxzdGF0ZTpzYS5yZWFkX3NoaWZ0KDQsImkiKSxzdGFydDowLHNpemU6MH07MCE9PXNhLnJlYWRfc2hpZnQoMikrc2EucmVhZF9zaGlmdCgyKStzYS5yZWFkX3NoaWZ0KDIpK3NhLnJlYWRfc2hpZnQoMikmJihBby5jdD1WdChz'@; put 'YSxzYS5sLTgpKSwwIT09c2EucmVhZF9zaGlmdCgyKStzYS5yZWFkX3NoaWZ0KDIpK3NhLnJlYWRfc2hpZnQoMikrc2EucmVhZF9zaGlmdCgyKSYmKEFvLm10PVZ0KHNhLHNhLmwtOCkpLEFvLnN0YXJ0PXNhLnJlYWRfc2hpZnQoNCwiaSIpLEFvLnNpemU9c2EucmVhZF9zaGlmdCg0LCJpIiks'@; put 'QW8uc2l6ZTwwJiZBby5zdGFydDwwJiYoQW8uc2l6ZT1Bby50eXBlPTAsQW8uc3RhcnQ9cW4sQW8ubmFtZT0iIiksNT09PUFvLnR5cGU/KEJyPUFvLnN0YXJ0LFd0PjAmJkJyIT09cW4mJihibltCcl0ubmFtZT0iIVN0cmVhbURhdGEiKSk6QW8uc2l6ZT49NDA5Nj8oQW8uc3RvcmFnZT0iZmF0'@; put 'Iix2b2lkIDA9PT1ibltBby5zdGFydF0mJihibltBby5zdGFydF09a3QoZW4sQW8uc3RhcnQsYm4uZmF0X2FkZHJzLGJuLnNzeikpLGJuW0FvLnN0YXJ0XS5uYW1lPUFvLm5hbWUsQW8uY29udGVudD1ibltBby5zdGFydF0uZGF0YS5zbGljZSgwLEFvLnNpemUpKTooQW8uc3RvcmFnZT0ibWlu'@; put 'aWZhdCIsQW8uc2l6ZTwwP0FvLnNpemU9MDpCciE9PXFuJiZBby5zdGFydCE9PXFuJiZibltCcl0mJihBby5jb250ZW50PVFlKEFvLGJuW0JyXS5kYXRhLChiblttcl18fHt9KS5kYXRhKSkpLEFvLmNvbnRlbnQmJk9sKEFvLmNvbnRlbnQsMCksb25bWmFdPUFvLExuLnB1c2goQW8pfX0pKExu'@; put 'LHJjLHlzLHoxLFd0LHt9LFUwLG1yKSxmdW5jdGlvbiBtdChKdCxibixlbil7Zm9yKHZhciBEdD0wLFd0PTAsb249MCxMbj0wLG1yPTAsQnI9ZW4ubGVuZ3RoLEVpPVtdLG9pPVtdO0R0PEJyOysrRHQpRWlbRHRdPW9pW0R0XT1EdCxibltEdF09ZW5bRHRdO2Zvcig7bXI8b2kubGVuZ3RoOysr'@; put 'bXIpV3Q9SnRbRHQ9b2lbbXJdXS5MLG9uPUp0W0R0XS5SLExuPUp0W0R0XS5DLEVpW0R0XT09PUR0JiYoLTEhPT1XdCYmRWlbV3RdIT09V3QmJihFaVtEdF09RWlbV3RdKSwtMSE9PW9uJiZFaVtvbl0hPT1vbiYmKEVpW0R0XT1FaVtvbl0pKSwtMSE9PUxuJiYoRWlbTG5dPUR0KSwtMSE9PVd0'@; put 'JiZEdCE9RWlbRHRdJiYoRWlbV3RdPUVpW0R0XSxvaS5sYXN0SW5kZXhPZihXdCk8bXImJm9pLnB1c2goV3QpKSwtMSE9PW9uJiZEdCE9RWlbRHRdJiYoRWlbb25dPUVpW0R0XSxvaS5sYXN0SW5kZXhPZihvbik8bXImJm9pLnB1c2gob24pKTtmb3IoRHQ9MTtEdDxCcjsrK0R0KUVpW0R0XT09'@; put 'PUR0JiYoLTEhPT1vbiYmRWlbb25dIT09b24/RWlbRHRdPUVpW29uXTotMSE9PVd0JiZFaVtXdF0hPT1XdCYmKEVpW0R0XT1FaVtXdF0pKTtmb3IoRHQ9MTtEdDxCcjsrK0R0KWlmKDAhPT1KdFtEdF0udHlwZSl7aWYoKG1yPUR0KSE9RWlbbXJdKWRve2JuW0R0XT1iblttcj1FaVttcl1dKyIv'@; put 'IitibltEdF19d2hpbGUoMCE9PW1yJiYtMSE9PUVpW21yXSYmbXIhPUVpW21yXSk7RWlbRHRdPS0xfWZvcihiblswXSs9Ii8iLER0PTE7RHQ8QnI7KytEdCkyIT09SnRbRHRdLnR5cGUmJihibltEdF0rPSIvIil9KFUwLEt5LHoxKSx6MS5zaGlmdCgpO3ZhciBEMj17RmlsZUluZGV4OlUwLEZ1'@; put 'bGxQYXRoczpLeX07cmV0dXJuIGJuJiZibi5yYXcmJihEMi5yYXc9e2hlYWRlcjpIaSxzZWN0b3JzOnlzfSksRDJ9ZnVuY3Rpb24gUWUoSnQsYm4sZW4pe2Zvcih2YXIgV3Q9SnQuc2l6ZSxvbj1bXSxMbj1KdC5zdGFydDtlbiYmV3Q+MCYmTG4+PTA7KW9uLnB1c2goYm4uc2xpY2UoTG4qZ3Is'@; put 'TG4qZ3IrZ3IpKSxXdC09Z3IsTG49dWwoZW4sNCpMbik7cmV0dXJuIDA9PT1vbi5sZW5ndGg/RnIoMCk6Ryhvbikuc2xpY2UoMCxKdC5zaXplKX1mdW5jdGlvbiBmdChKdCxibixlbixEdCxXdCl7dmFyIG9uPXFuO2lmKEp0PT09cW4pe2lmKDAhPT1ibil0aHJvdyBuZXcgRXJyb3IoIkRJRkFU'@; put 'IGNoYWluIHNob3J0ZXIgdGhhbiBleHBlY3RlZCIpfWVsc2UgaWYoLTEhPT1KdCl7dmFyIExuPWVuW0p0XSxtcj0oRHQ+Pj4yKS0xO2lmKCFMbilyZXR1cm47Zm9yKHZhciBCcj0wO0JyPG1yJiYob249dWwoTG4sNCpCcikpIT09cW47KytCcilXdC5wdXNoKG9uKTtmdCh1bChMbixEdC00KSxi'@; put 'bi0xLGVuLER0LFd0KX19ZnVuY3Rpb24ga3QoSnQsYm4sZW4sRHQsV3Qpe3ZhciBvbj1bXSxMbj1bXTtXdHx8KFd0PVtdKTt2YXIgbXI9RHQtMSxCcj0wLEVpPTA7Zm9yKEJyPWJuO0JyPj0wOyl7V3RbQnJdPSEwLG9uW29uLmxlbmd0aF09QnIsTG4ucHVzaChKdFtCcl0pO3ZhciBvaT1lbltN'@; put 'YXRoLmZsb29yKDQqQnIvRHQpXTtpZihEdDw0KyhFaT00KkJyJm1yKSl0aHJvdyBuZXcgRXJyb3IoIkZBVCBib3VuZGFyeSBjcm9zc2VkOiAiK0JyKyIgNCAiK0R0KTtpZighSnRbb2ldKWJyZWFrO0JyPXVsKEp0W29pXSxFaSl9cmV0dXJue25vZGVzOm9uLGRhdGE6bmgoW0xuXSl9fWZ1bmN0'@; put 'aW9uIFZ0KEp0LGJuKXtyZXR1cm4gbmV3IERhdGUoMWUzKihRYShKdCxibis0KS8xZTcqTWF0aC5wb3coMiwzMikrUWEoSnQsYm4pLzFlNy0xMTY0NDQ3MzYwMCkpfWZ1bmN0aW9uIG5uKEp0LGJuKXt2YXIgZW49Ym58fHt9LER0PWVuLnJvb3R8fCJSb290IEVudHJ5IjtpZihKdC5GdWxsUGF0'@; put 'aHN8fChKdC5GdWxsUGF0aHM9W10pLEp0LkZpbGVJbmRleHx8KEp0LkZpbGVJbmRleD1bXSksSnQuRnVsbFBhdGhzLmxlbmd0aCE9PUp0LkZpbGVJbmRleC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZSIpOzA9PT1KdC5GdWxsUGF0aHMubGVuZ3Ro'@; put 'JiYoSnQuRnVsbFBhdGhzWzBdPUR0KyIvIixKdC5GaWxlSW5kZXhbMF09e25hbWU6RHQsdHlwZTo1fSksZW4uQ0xTSUQmJihKdC5GaWxlSW5kZXhbMF0uY2xzaWQ9ZW4uQ0xTSUQpLGZ1bmN0aW9uIGFyKEp0KXt2YXIgYm49Ilx4MDFTaDMzdEo1IjtpZighYWUuZmluZChKdCwiLyIrYm4pKXt2'@; put 'YXIgZW49RnIoNCk7ZW5bMF09NTUsZW5bMV09ZW5bM109NTAsZW5bMl09NTQsSnQuRmlsZUluZGV4LnB1c2goe25hbWU6Ym4sdHlwZToyLGNvbnRlbnQ6ZW4sc2l6ZTo0LEw6NjksUjo2OSxDOjY5fSksSnQuRnVsbFBhdGhzLnB1c2goSnQuRnVsbFBhdGhzWzBdK2JuKSxqbihKdCl9fShKdCl9'@; put 'ZnVuY3Rpb24gam4oSnQsYm4pe25uKEp0KTtmb3IodmFyIGVuPSExLER0PSExLFd0PUp0LkZ1bGxQYXRocy5sZW5ndGgtMTtXdD49MDstLVd0KXt2YXIgb249SnQuRmlsZUluZGV4W1d0XTtzd2l0Y2gob24udHlwZSl7Y2FzZSAwOkR0P2VuPSEwOihKdC5GaWxlSW5kZXgucG9wKCksSnQuRnVs'@; put 'bFBhdGhzLnBvcCgpKTticmVhaztjYXNlIDE6Y2FzZSAyOmNhc2UgNTpEdD0hMCxpc05hTihvbi5SKm9uLkwqb24uQykmJihlbj0hMCksb24uUj4tMSYmb24uTD4tMSYmb24uUj09b24uTCYmKGVuPSEwKTticmVhaztkZWZhdWx0OmVuPSEwfX1pZihlbnx8Ym4pe3ZhciBMbj1uZXcgRGF0ZSgx'@; put 'OTg3LDEsMTkpLG1yPTAsQnI9W107Zm9yKFd0PTA7V3Q8SnQuRnVsbFBhdGhzLmxlbmd0aDsrK1d0KTAhPT1KdC5GaWxlSW5kZXhbV3RdLnR5cGUmJkJyLnB1c2goW0p0LkZ1bGxQYXRoc1tXdF0sSnQuRmlsZUluZGV4W1d0XV0pO2ZvcihXdD0wO1d0PEJyLmxlbmd0aDsrK1d0KXt2YXIgRWk9'@; put 'VChCcltXdF1bMF0pO2ZvcihEdD0hMSxtcj0wO21yPEJyLmxlbmd0aDsrK21yKUJyW21yXVswXT09PUVpJiYoRHQ9ITApO0R0fHxCci5wdXNoKFtFaSx7bmFtZTpQKEVpKS5yZXBsYWNlKCIvIiwiIiksdHlwZToxLGNsc2lkOnNvLGN0OkxuLG10OkxuLGNvbnRlbnQ6bnVsbH1dKX1mb3IoQnIu'@; put 'c29ydChmdW5jdGlvbihIaSxaYSl7cmV0dXJuIGZ1bmN0aW9uIG0oSnQsYm4pe2Zvcih2YXIgZW49SnQuc3BsaXQoIi8iKSxEdD1ibi5zcGxpdCgiLyIpLFd0PTAsb249MCxMbj1NYXRoLm1pbihlbi5sZW5ndGgsRHQubGVuZ3RoKTtXdDxMbjsrK1d0KXtpZihvbj1lbltXdF0ubGVuZ3RoLUR0'@; put 'W1d0XS5sZW5ndGgpcmV0dXJuIG9uO2lmKGVuW1d0XSE9RHRbV3RdKXJldHVybiBlbltXdF08RHRbV3RdPy0xOjF9cmV0dXJuIGVuLmxlbmd0aC1EdC5sZW5ndGh9KEhpWzBdLFphWzBdKX0pLEp0LkZ1bGxQYXRocz1bXSxKdC5GaWxlSW5kZXg9W10sV3Q9MDtXdDxCci5sZW5ndGg7KytXdClK'@; put 'dC5GdWxsUGF0aHNbV3RdPUJyW1d0XVswXSxKdC5GaWxlSW5kZXhbV3RdPUJyW1d0XVsxXTtmb3IoV3Q9MDtXdDxCci5sZW5ndGg7KytXdCl7dmFyIG9pPUp0LkZpbGVJbmRleFtXdF0sZW89SnQuRnVsbFBhdGhzW1d0XTtpZihvaS5uYW1lPVAoZW8pLnJlcGxhY2UoIi8iLCIiKSxvaS5MPW9p'@; put 'LlI9b2kuQz0tKG9pLmNvbG9yPTEpLG9pLnNpemU9b2kuY29udGVudD9vaS5jb250ZW50Lmxlbmd0aDowLG9pLnN0YXJ0PTAsb2kuY2xzaWQ9b2kuY2xzaWR8fHNvLDA9PT1XdClvaS5DPUJyLmxlbmd0aD4xPzE6LTEsb2kuc2l6ZT0wLG9pLnR5cGU9NTtlbHNlIGlmKCIvIj09ZW8uc2xpY2Uo'@; put 'LTEpKXtmb3IobXI9V3QrMTttcjxCci5sZW5ndGgmJlQoSnQuRnVsbFBhdGhzW21yXSkhPWVvOysrbXIpO2ZvcihvaS5DPW1yPj1Cci5sZW5ndGg/LTE6bXIsbXI9V3QrMTttcjxCci5sZW5ndGgmJlQoSnQuRnVsbFBhdGhzW21yXSkhPVQoZW8pOysrbXIpO29pLlI9bXI+PUJyLmxlbmd0aD8t'@; put 'MTptcixvaS50eXBlPTF9ZWxzZSBUKEp0LkZ1bGxQYXRoc1tXdCsxXXx8IiIpPT1UKGVvKSYmKG9pLlI9V3QrMSksb2kudHlwZT0yfX19ZnVuY3Rpb24ga24oSnQsYm4pe3ZhciBlbj1ibnx8e307aWYoam4oSnQpLCJ6aXAiPT1lbi5maWxlVHlwZSlyZXR1cm4gZnVuY3Rpb24gUXMoSnQsYm4p'@; put 'e3ZhciBlbj1ibnx8e30sRHQ9W10sV3Q9W10sb249RnIoMSksTG49ZW4uY29tcHJlc3Npb24/ODowLG1yPTAsRWk9MCxvaT0wLGVvPTAsSGk9MCxaYT1KdC5GdWxsUGF0aHNbMF0sc2E9WmEsQW89SnQuRmlsZUluZGV4WzBdLHlzPVtdLHJjPTA7Zm9yKEVpPTE7RWk8SnQuRnVsbFBhdGhzLmxl'@; put 'bmd0aDsrK0VpKWlmKHNhPUp0LkZ1bGxQYXRoc1tFaV0uc2xpY2UoWmEubGVuZ3RoKSwoQW89SnQuRmlsZUluZGV4W0VpXSkuc2l6ZSYmQW8uY29udGVudCYmIlx4MDFTaDMzdEo1IiE9c2Epe3ZhciBJMj1lbyx6MT1GcihzYS5sZW5ndGgpO2ZvcihvaT0wO29pPHNhLmxlbmd0aDsrK29pKXox'@; put 'LndyaXRlX3NoaWZ0KDEsMTI3JnNhLmNoYXJDb2RlQXQob2kpKTt6MT16MS5zbGljZSgwLHoxLmwpLHlzW0hpXT1SZS5idWYoQW8uY29udGVudCwwKTt2YXIgVTA9QW8uY29udGVudDs4PT1MbiYmKFUwPU5yKFUwKSksKG9uPUZyKDMwKSkud3JpdGVfc2hpZnQoNCw2NzMyNDc1Miksb24ud3Jp'@; put 'dGVfc2hpZnQoMiwyMCksb24ud3JpdGVfc2hpZnQoMixtciksb24ud3JpdGVfc2hpZnQoMixMbiksQW8ubXQ/UShvbixBby5tdCk6b24ud3JpdGVfc2hpZnQoNCwwKSxvbi53cml0ZV9zaGlmdCgtNCw4Jm1yPzA6eXNbSGldKSxvbi53cml0ZV9zaGlmdCg0LDgmbXI/MDpVMC5sZW5ndGgpLG9u'@; put 'LndyaXRlX3NoaWZ0KDQsOCZtcj8wOkFvLmNvbnRlbnQubGVuZ3RoKSxvbi53cml0ZV9zaGlmdCgyLHoxLmxlbmd0aCksb24ud3JpdGVfc2hpZnQoMiwwKSxlbys9b24ubGVuZ3RoLER0LnB1c2gob24pLGVvKz16MS5sZW5ndGgsRHQucHVzaCh6MSksZW8rPVUwLmxlbmd0aCxEdC5wdXNoKFUw'@; put 'KSw4Jm1yJiYoKG9uPUZyKDEyKSkud3JpdGVfc2hpZnQoLTQseXNbSGldKSxvbi53cml0ZV9zaGlmdCg0LFUwLmxlbmd0aCksb24ud3JpdGVfc2hpZnQoNCxBby5jb250ZW50Lmxlbmd0aCksZW8rPW9uLmwsRHQucHVzaChvbikpLChvbj1Gcig0NikpLndyaXRlX3NoaWZ0KDQsMzM2MzkyNDgp'@; put 'LG9uLndyaXRlX3NoaWZ0KDIsMCksb24ud3JpdGVfc2hpZnQoMiwyMCksb24ud3JpdGVfc2hpZnQoMixtciksb24ud3JpdGVfc2hpZnQoMixMbiksb24ud3JpdGVfc2hpZnQoNCwwKSxvbi53cml0ZV9zaGlmdCgtNCx5c1tIaV0pLG9uLndyaXRlX3NoaWZ0KDQsVTAubGVuZ3RoKSxvbi53cml0'@; put 'ZV9zaGlmdCg0LEFvLmNvbnRlbnQubGVuZ3RoKSxvbi53cml0ZV9zaGlmdCgyLHoxLmxlbmd0aCksb24ud3JpdGVfc2hpZnQoMiwwKSxvbi53cml0ZV9zaGlmdCgyLDApLG9uLndyaXRlX3NoaWZ0KDIsMCksb24ud3JpdGVfc2hpZnQoMiwwKSxvbi53cml0ZV9zaGlmdCg0LDApLG9uLndyaXRl'@; put 'X3NoaWZ0KDQsSTIpLHJjKz1vbi5sLFd0LnB1c2gob24pLHJjKz16MS5sZW5ndGgsV3QucHVzaCh6MSksKytIaX1yZXR1cm4ob249RnIoMjIpKS53cml0ZV9zaGlmdCg0LDEwMTAxMDI1Niksb24ud3JpdGVfc2hpZnQoMiwwKSxvbi53cml0ZV9zaGlmdCgyLDApLG9uLndyaXRlX3NoaWZ0KDIs'@; put 'SGkpLG9uLndyaXRlX3NoaWZ0KDIsSGkpLG9uLndyaXRlX3NoaWZ0KDQscmMpLG9uLndyaXRlX3NoaWZ0KDQsZW8pLG9uLndyaXRlX3NoaWZ0KDIsMCksRyhbRyhEdCksRyhXdCksb25dKX0oSnQsZW4pO3ZhciBEdD1mdW5jdGlvbihaYSl7Zm9yKHZhciBzYT0wLEFvPTAseXM9MDt5czxaYS5G'@; put 'aWxlSW5kZXgubGVuZ3RoOysreXMpe3ZhciByYz1aYS5GaWxlSW5kZXhbeXNdO2lmKHJjLmNvbnRlbnQpe3ZhciBJMj1yYy5jb250ZW50Lmxlbmd0aDtJMj4wJiYoSTI8NDA5Nj9zYSs9STIrNjM+PjY6QW8rPUkyKzUxMT4+OSl9fWZvcih2YXIgejE9WmEuRnVsbFBhdGhzLmxlbmd0aCszPj4y'@; put 'LEt5PXNhKzEyNz4+NyxEMj0oc2ErNz4+MykrQW8rejErS3ksQ3A9RDIrMTI3Pj43LG91PUNwPD0xMDk/MDpNYXRoLmNlaWwoKENwLTEwOSkvMTI3KTtEMitDcCtvdSsxMjc+Pjc+Q3A7KW91PSsrQ3A8PTEwOT8wOk1hdGguY2VpbCgoQ3AtMTA5KS8xMjcpO3ZhciB6MD1bMSxvdSxDcCxLeSx6'@; put 'MSxBbyxzYSwwXTtyZXR1cm4gWmEuRmlsZUluZGV4WzBdLnNpemU9c2E8PDYsejBbN109KFphLkZpbGVJbmRleFswXS5zdGFydD16MFswXSt6MFsxXSt6MFsyXSt6MFszXSt6MFs0XSt6MFs1XSkrKHowWzZdKzc+PjMpLHowfShKdCksV3Q9RnIoRHRbN108PDkpLG9uPTAsTG49MDtmb3Iob249'@; put 'MDtvbjw4Oysrb24pV3Qud3JpdGVfc2hpZnQoMSxPaVtvbl0pO2Zvcihvbj0wO29uPDg7KytvbilXdC53cml0ZV9zaGlmdCgyLDApO2ZvcihXdC53cml0ZV9zaGlmdCgyLDYyKSxXdC53cml0ZV9zaGlmdCgyLDMpLFd0LndyaXRlX3NoaWZ0KDIsNjU1MzQpLFd0LndyaXRlX3NoaWZ0KDIsOSks'@; put 'V3Qud3JpdGVfc2hpZnQoMiw2KSxvbj0wO29uPDM7KytvbilXdC53cml0ZV9zaGlmdCgyLDApO2ZvcihXdC53cml0ZV9zaGlmdCg0LDApLFd0LndyaXRlX3NoaWZ0KDQsRHRbMl0pLFd0LndyaXRlX3NoaWZ0KDQsRHRbMF0rRHRbMV0rRHRbMl0rRHRbM10tMSksV3Qud3JpdGVfc2hpZnQoNCww'@; put 'KSxXdC53cml0ZV9zaGlmdCg0LDQwOTYpLFd0LndyaXRlX3NoaWZ0KDQsRHRbM10/RHRbMF0rRHRbMV0rRHRbMl0tMTpxbiksV3Qud3JpdGVfc2hpZnQoNCxEdFszXSksV3Qud3JpdGVfc2hpZnQoLTQsRHRbMV0/RHRbMF0tMTpxbiksV3Qud3JpdGVfc2hpZnQoNCxEdFsxXSksb249MDtvbjwx'@; put 'MDk7KytvbilXdC53cml0ZV9zaGlmdCgtNCxvbjxEdFsyXT9EdFsxXStvbjotMSk7aWYoRHRbMV0pZm9yKExuPTA7TG48RHRbMV07KytMbil7Zm9yKDtvbjwyMzYrMTI3KkxuOysrb24pV3Qud3JpdGVfc2hpZnQoLTQsb248RHRbMl0/RHRbMV0rb246LTEpO1d0LndyaXRlX3NoaWZ0KC00LExu'@; put 'PT09RHRbMV0tMT9xbjpMbisxKX12YXIgbXI9ZnVuY3Rpb24oWmEpe2ZvcihMbis9WmE7b248TG4tMTsrK29uKVd0LndyaXRlX3NoaWZ0KC00LG9uKzEpO1phJiYoKytvbixXdC53cml0ZV9zaGlmdCgtNCxxbikpfTtmb3IoTG49b249MCxMbis9RHRbMV07b248TG47KytvbilXdC53cml0ZV9z'@; put 'aGlmdCgtNCxtby5ESUZTRUNUKTtmb3IoTG4rPUR0WzJdO29uPExuOysrb24pV3Qud3JpdGVfc2hpZnQoLTQsbW8uRkFUU0VDVCk7bXIoRHRbM10pLG1yKER0WzRdKTtmb3IodmFyIEJyPTAsRWk9MCxvaT1KdC5GaWxlSW5kZXhbMF07QnI8SnQuRmlsZUluZGV4Lmxlbmd0aDsrK0JyKShvaT1K'@; put 'dC5GaWxlSW5kZXhbQnJdKS5jb250ZW50JiYhKChFaT1vaS5jb250ZW50Lmxlbmd0aCk8NDA5NikmJihvaS5zdGFydD1MbixtcihFaSs1MTE+PjkpKTtmb3IobXIoRHRbNl0rNz4+Myk7NTExJld0Lmw7KVd0LndyaXRlX3NoaWZ0KC00LG1vLkVORE9GQ0hBSU4pO2ZvcihMbj1vbj0wLEJyPTA7'@; put 'QnI8SnQuRmlsZUluZGV4Lmxlbmd0aDsrK0JyKShvaT1KdC5GaWxlSW5kZXhbQnJdKS5jb250ZW50JiYoRWk9b2kuY29udGVudC5sZW5ndGgpJiYhKEVpPj00MDk2KSYmKG9pLnN0YXJ0PUxuLG1yKEVpKzYzPj42KSk7Zm9yKDs1MTEmV3QubDspV3Qud3JpdGVfc2hpZnQoLTQsbW8uRU5ET0ZD'@; put 'SEFJTik7Zm9yKG9uPTA7b248RHRbNF08PDI7Kytvbil7dmFyIGVvPUp0LkZ1bGxQYXRoc1tvbl07aWYoZW8mJjAhPT1lby5sZW5ndGgpe29pPUp0LkZpbGVJbmRleFtvbl0sMD09PW9uJiYob2kuc3RhcnQ9b2kuc2l6ZT9vaS5zdGFydC0xOnFuKTt2YXIgSGk9MD09PW9uJiZlbi5yb290fHxv'@; put 'aS5uYW1lO2lmKEVpPTIqKEhpLmxlbmd0aCsxKSxXdC53cml0ZV9zaGlmdCg2NCxIaSwidXRmMTZsZSIpLFd0LndyaXRlX3NoaWZ0KDIsRWkpLFd0LndyaXRlX3NoaWZ0KDEsb2kudHlwZSksV3Qud3JpdGVfc2hpZnQoMSxvaS5jb2xvciksV3Qud3JpdGVfc2hpZnQoLTQsb2kuTCksV3Qud3Jp'@; put 'dGVfc2hpZnQoLTQsb2kuUiksV3Qud3JpdGVfc2hpZnQoLTQsb2kuQyksb2kuY2xzaWQpV3Qud3JpdGVfc2hpZnQoMTYsb2kuY2xzaWQsImhleCIpO2Vsc2UgZm9yKEJyPTA7QnI8NDsrK0JyKVd0LndyaXRlX3NoaWZ0KDQsMCk7V3Qud3JpdGVfc2hpZnQoNCxvaS5zdGF0ZXx8MCksV3Qud3Jp'@; put 'dGVfc2hpZnQoNCwwKSxXdC53cml0ZV9zaGlmdCg0LDApLFd0LndyaXRlX3NoaWZ0KDQsMCksV3Qud3JpdGVfc2hpZnQoNCwwKSxXdC53cml0ZV9zaGlmdCg0LG9pLnN0YXJ0KSxXdC53cml0ZV9zaGlmdCg0LG9pLnNpemUpLFd0LndyaXRlX3NoaWZ0KDQsMCl9ZWxzZXtmb3IoQnI9MDtCcjwx'@; put 'NzsrK0JyKVd0LndyaXRlX3NoaWZ0KDQsMCk7Zm9yKEJyPTA7QnI8MzsrK0JyKVd0LndyaXRlX3NoaWZ0KDQsLTEpO2ZvcihCcj0wO0JyPDEyOysrQnIpV3Qud3JpdGVfc2hpZnQoNCwwKX19Zm9yKG9uPTE7b248SnQuRmlsZUluZGV4Lmxlbmd0aDsrK29uKWlmKChvaT1KdC5GaWxlSW5kZXhb'@; put 'b25dKS5zaXplPj00MDk2KXtmb3IoV3QubD1vaS5zdGFydCsxPDw5LEJyPTA7QnI8b2kuc2l6ZTsrK0JyKVd0LndyaXRlX3NoaWZ0KDEsb2kuY29udGVudFtCcl0pO2Zvcig7NTExJkJyOysrQnIpV3Qud3JpdGVfc2hpZnQoMSwwKX1mb3Iob249MTtvbjxKdC5GaWxlSW5kZXgubGVuZ3RoOysr'@; put 'b24paWYoKG9pPUp0LkZpbGVJbmRleFtvbl0pLnNpemU+MCYmb2kuc2l6ZTw0MDk2KXtmb3IoQnI9MDtCcjxvaS5zaXplOysrQnIpV3Qud3JpdGVfc2hpZnQoMSxvaS5jb250ZW50W0JyXSk7Zm9yKDs2MyZCcjsrK0JyKVd0LndyaXRlX3NoaWZ0KDEsMCl9Zm9yKDtXdC5sPFd0Lmxlbmd0aDsp'@; put 'V3Qud3JpdGVfc2hpZnQoMSwwKTtyZXR1cm4gV3R9Xy52ZXJzaW9uPSIxLjEuNCI7dmFyIE9yLGdyPTY0LHFuPS0yLF9pPSJkMGNmMTFlMGExYjExYWUxIixPaT1bMjA4LDIwNywxNywyMjQsMTYxLDE3NywyNiwyMjVdLHNvPSIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsbW89'@; put 'e01BWFJFR1NFQ1Q6LTYsRElGU0VDVDotNCxGQVRTRUNUOi0zLEVORE9GQ0hBSU46cW4sRlJFRVNFQ1Q6LTEsSEVBREVSX1NJR05BVFVSRTpfaSxIRUFERVJfTUlOT1JfVkVSU0lPTjoiM2UwMCIsTUFYUkVHU0lEOi02LE5PU1RSRUFNOi0xLEhFQURFUl9DTFNJRDpzbyxFbnRyeVR5cGVzOlsi'@; put 'dW5rbm93biIsInN0b3JhZ2UiLCJzdHJlYW0iLCJsb2NrYnl0ZXMiLCJwcm9wZXJ0eSIsInJvb3QiXX07ZnVuY3Rpb24ga3IoSnQpe2Zvcih2YXIgYm49bmV3IEFycmF5KEp0Lmxlbmd0aCksZW49MDtlbjxKdC5sZW5ndGg7Kytlbilibltlbl09U3RyaW5nLmZyb21DaGFyQ29kZShKdFtlbl0p'@; put 'O3JldHVybiBibi5qb2luKCIiKX1mdW5jdGlvbiBOcihKdCl7cmV0dXJuIE9yP09yLmRlZmxhdGVSYXdTeW5jKEp0KTp6ZChKdCl9dmFyIGppPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSxiaT1bMyw0LDUsNiw3LDgsOSwxMCwxMSwxMywxNSwxNywx'@; put 'OSwyMywyNywzMSwzNSw0Myw1MSw1OSw2Nyw4Myw5OSwxMTUsMTMxLDE2MywxOTUsMjI3LDI1OF0sTm89WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4'@; put 'NSwyNDU3N107ZnVuY3Rpb24gWWEoSnQpe3ZhciBibj0xMzk1MzYmKEp0PDwxfEp0PDwxMSl8NTU4MTQ0JihKdDw8NXxKdDw8MTUpO3JldHVybiAyNTUmKGJuPj4xNnxibj4+OHxibil9Zm9yKHZhciB1bz10eXBlb2YgVWludDhBcnJheTwidSIsTXM9dW8/bmV3IFVpbnQ4QXJyYXkoMjU2KTpb'@; put 'XSxkYT0wO2RhPDI1NjsrK2RhKU1zW2RhXT1ZYShkYSk7ZnVuY3Rpb24gJGEoSnQsYm4pe3ZhciBlbj1Nc1syNTUmSnRdO3JldHVybiBibjw9OD9lbj4+PjgtYm46KGVuPWVuPDw4fE1zW0p0Pj44JjI1NV0sYm48PTE2P2VuPj4+MTYtYm46KGVuPWVuPDw4fE1zW0p0Pj4xNiYyNTVdKT4+PjI0'@; put 'LWJuKX1mdW5jdGlvbiBTYShKdCxibil7dmFyIGVuPTcmYm4sRHQ9Ym4+Pj4zO3JldHVybihKdFtEdF18KGVuPD02PzA6SnRbRHQrMV08PDgpKT4+PmVuJjN9ZnVuY3Rpb24gUGkoSnQsYm4pe3ZhciBlbj03JmJuLER0PWJuPj4+MztyZXR1cm4oSnRbRHRdfChlbjw9NT8wOkp0W0R0KzFdPDw4'@; put 'KSk+Pj5lbiY3fWZ1bmN0aW9uIHhuKEp0LGJuKXt2YXIgZW49NyZibixEdD1ibj4+PjM7cmV0dXJuKEp0W0R0XXwoZW48PTM/MDpKdFtEdCsxXTw8OCkpPj4+ZW4mMzF9ZnVuY3Rpb24geGwoSnQsYm4pe3ZhciBlbj03JmJuLER0PWJuPj4+MztyZXR1cm4oSnRbRHRdfChlbjw9MT8wOkp0W0R0'@; put 'KzFdPDw4KSk+Pj5lbiYxMjd9ZnVuY3Rpb24gcWwoSnQsYm4sZW4pe3ZhciBEdD03JmJuLFd0PWJuPj4+MyxMbj1KdFtXdF0+Pj5EdDtyZXR1cm4gZW48OC1EdHx8KExufD1KdFtXdCsxXTw8OC1EdCxlbjwxNi1EdCl8fChMbnw9SnRbV3QrMl08PDE2LUR0LGVuPDI0LUR0KXx8KExufD1KdFtX'@; put 'dCszXTw8MjQtRHQpLExuJigxPDxlbiktMX1mdW5jdGlvbiBjaChKdCxibil7dmFyIGVuPUp0Lmxlbmd0aCxEdD0yKmVuPmJuPzIqZW46Ym4rNSxXdD0wO2lmKGVuPj1ibilyZXR1cm4gSnQ7aWYoSWUpe3ZhciBvbj1mKER0KTtpZihKdC5jb3B5KUp0LmNvcHkob24pO2Vsc2UgZm9yKDtXdDxK'@; put 'dC5sZW5ndGg7KytXdClvbltXdF09SnRbV3RdO3JldHVybiBvbn1pZih1byl7dmFyIExuPW5ldyBVaW50OEFycmF5KER0KTtpZihMbi5zZXQpTG4uc2V0KEp0KTtlbHNlIGZvcig7V3Q8SnQubGVuZ3RoOysrV3QpTG5bV3RdPUp0W1d0XTtyZXR1cm4gTG59cmV0dXJuIEp0Lmxlbmd0aD1EdCxK'@; put 'dH1mdW5jdGlvbiBFZChKdCl7Zm9yKHZhciBibj1uZXcgQXJyYXkoSnQpLGVuPTA7ZW48SnQ7Kytlbilibltlbl09MDtyZXR1cm4gYm59dmFyIHpkPWZ1bmN0aW9uKCl7dmFyIEp0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGVuLER0KXtmb3IodmFyIFd0PTA7V3Q8ZW4ubGVuZ3RoOyl7'@; put 'dmFyIG9uPU1hdGgubWluKDY1NTM1LGVuLmxlbmd0aC1XdCk7Zm9yKER0LndyaXRlX3NoaWZ0KDEsKyhXdCtvbj09ZW4ubGVuZ3RoKSksRHQud3JpdGVfc2hpZnQoMixvbiksRHQud3JpdGVfc2hpZnQoMiw2NTUzNSZ+b24pO29uLS0gPjA7KUR0W0R0LmwrK109ZW5bV3QrK119cmV0dXJuIER0'@; put 'Lmx9fSgpO3JldHVybiBmdW5jdGlvbihibil7dmFyIGVuPUZyKDUwK01hdGguZmxvb3IoMS4xKmJuLmxlbmd0aCkpLER0PUp0KGJuLGVuKTtyZXR1cm4gZW4uc2xpY2UoMCxEdCl9fSgpO2Z1bmN0aW9uIExoKEp0LGJuLGVuKXt2YXIgRHQ9MSxXdD0wLG9uPTAsTG49MCxtcj0wLEJyPUp0Lmxl'@; put 'bmd0aCxFaT11bz9uZXcgVWludDE2QXJyYXkoMzIpOkVkKDMyKTtmb3Iob249MDtvbjwzMjsrK29uKUVpW29uXT0wO2Zvcihvbj1CcjtvbjxlbjsrK29uKUp0W29uXT0wO0JyPUp0Lmxlbmd0aDt2YXIgb2k9dW8/bmV3IFVpbnQxNkFycmF5KEJyKTpFZChCcik7Zm9yKG9uPTA7b248QnI7Kytv'@; put 'bilFaVtXdD1KdFtvbl1dKyssRHQ8V3QmJihEdD1XdCksb2lbb25dPTA7Zm9yKEVpWzBdPTAsb249MTtvbjw9RHQ7KytvbilFaVtvbisxNl09bXI9bXIrRWlbb24tMV08PDE7Zm9yKG9uPTA7b248QnI7KytvbikwIT0obXI9SnRbb25dKSYmKG9pW29uXT1FaVttcisxNl0rKyk7dmFyIGVvPTA7'@; put 'Zm9yKG9uPTA7b248QnI7KytvbilpZigwIT0oZW89SnRbb25dKSlmb3IobXI9JGEob2lbb25dLER0KT4+RHQtZW8sTG49KDE8PER0KzQtZW8pLTE7TG4+PTA7LS1MbiliblttcnxMbjw8ZW9dPTE1JmVvfG9uPDw0O3JldHVybiBEdH12YXIgZ2M9dW8/bmV3IFVpbnQxNkFycmF5KDUxMik6RWQo'@; put 'NTEyKSxOdD11bz9uZXcgVWludDE2QXJyYXkoMzIpOkVkKDMyKTtpZighdW8pe2Zvcih2YXIgaG49MDtobjw1MTI7KytobilnY1tobl09MDtmb3IoaG49MDtobjwzMjsrK2huKU50W2huXT0wfSFmdW5jdGlvbigpe2Zvcih2YXIgSnQ9W10sYm49MDtibjwzMjtibisrKUp0LnB1c2goNSk7TGgo'@; put 'SnQsTnQsMzIpO3ZhciBlbj1bXTtmb3IoYm49MDtibjw9MTQzO2JuKyspZW4ucHVzaCg4KTtmb3IoO2JuPD0yNTU7Ym4rKyllbi5wdXNoKDkpO2Zvcig7Ym48PTI3OTtibisrKWVuLnB1c2goNyk7Zm9yKDtibjw9Mjg3O2JuKyspZW4ucHVzaCg4KTtMaChlbixnYywyODgpfSgpO3ZhciBQbj11'@; put 'bz9uZXcgVWludDE2QXJyYXkoMzI3NjgpOkVkKDMyNzY4KSxTaT11bz9uZXcgVWludDE2QXJyYXkoMzI3NjgpOkVkKDMyNzY4KSxlcj11bz9uZXcgVWludDE2QXJyYXkoMTI4KTpFZCgxMjgpLERpPTEsYnI9MTtmdW5jdGlvbiBSaShKdCxibil7dmFyIGVuPXhuKEp0LGJuKSsyNTcsRHQ9eG4o'@; put 'SnQsYm4rPTUpKzEsV3Q9ZnVuY3Rpb24gUGMoSnQsYm4pe3ZhciBlbj03JmJuLER0PWJuPj4+MztyZXR1cm4oSnRbRHRdfChlbjw9ND8wOkp0W0R0KzFdPDw4KSk+Pj5lbiYxNX0oSnQsYm4rPTUpKzQ7Ym4rPTQ7Zm9yKHZhciBvbj0wLExuPXVvP25ldyBVaW50OEFycmF5KDE5KTpFZCgxOSks'@; put 'bXI9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLEJyPTEsRWk9dW8/bmV3IFVpbnQ4QXJyYXkoOCk6RWQoOCksb2k9dW8/bmV3IFVpbnQ4QXJyYXkoOCk6RWQoOCksZW89TG4ubGVuZ3RoLEhpPTA7SGk8V3Q7KytIaSlMbltqaVtIaV1dPW9uPVBpKEp0LGJuKSxCcjxv'@; put 'biYmKEJyPW9uKSxFaVtvbl0rKyxibis9Mzt2YXIgWmE9MDtmb3IoRWlbMF09MCxIaT0xO0hpPD1CcjsrK0hpKW9pW0hpXT1aYT1aYStFaVtIaS0xXTw8MTtmb3IoSGk9MDtIaTxlbzsrK0hpKTAhPShaYT1MbltIaV0pJiYobXJbSGldPW9pW1phXSsrKTt2YXIgc2E9MDtmb3IoSGk9MDtIaTxl'@; put 'bzsrK0hpKWlmKDAhPShzYT1MbltIaV0pKXtaYT1Nc1ttcltIaV1dPj44LXNhO2Zvcih2YXIgQW89KDE8PDctc2EpLTE7QW8+PTA7LS1BbyllcltaYXxBbzw8c2FdPTcmc2F8SGk8PDN9dmFyIHlzPVtdO2ZvcihCcj0xO3lzLmxlbmd0aDxlbitEdDspc3dpdGNoKFphPWVyW3hsKEp0LGJuKV0s'@; put 'Ym4rPTcmWmEsWmE+Pj49Myl7Y2FzZSAxNjpmb3Iob249MytTYShKdCxibiksYm4rPTIsWmE9eXNbeXMubGVuZ3RoLTFdO29uLS0gPjA7KXlzLnB1c2goWmEpO2JyZWFrO2Nhc2UgMTc6Zm9yKG9uPTMrUGkoSnQsYm4pLGJuKz0zO29uLS0gPjA7KXlzLnB1c2goMCk7YnJlYWs7Y2FzZSAxODpm'@; put 'b3Iob249MTEreGwoSnQsYm4pLGJuKz03O29uLS0gPjA7KXlzLnB1c2goMCk7YnJlYWs7ZGVmYXVsdDp5cy5wdXNoKFphKSxCcjxaYSYmKEJyPVphKX12YXIgcmM9eXMuc2xpY2UoMCxlbiksSTI9eXMuc2xpY2UoZW4pO2ZvcihIaT1lbjtIaTwyODY7KytIaSlyY1tIaV09MDtmb3IoSGk9RHQ7'@; put 'SGk8MzA7KytIaSlJMltIaV09MDtyZXR1cm4gRGk9TGgocmMsUG4sMjg2KSxicj1MaChJMixTaSwzMCksYm59ZnVuY3Rpb24gTmkoSnQsYm4pe3ZhciBEdD1mdW5jdGlvbiB2YShKdCxibil7aWYoMz09SnRbMF0mJiEoMyZKdFsxXSkpcmV0dXJuW1goYm4pLDJdO2Zvcih2YXIgZW49MCxEdD0w'@; put 'LFd0PWYoYm58fDE8PDE4KSxvbj0wLExuPVd0Lmxlbmd0aD4+PjAsbXI9MCxCcj0wOyEoMSZEdCk7KWlmKER0PVBpKEp0LGVuKSxlbis9MyxEdD4+PjEpZm9yKER0Pj4+MT09MT8obXI9OSxCcj01KTooZW49UmkoSnQsZW4pLG1yPURpLEJyPWJyKSwhYm4mJkxuPG9uKzMyNzY3JiYoTG49KFd0'@; put 'PWNoKFd0LG9uKzMyNzY3KSkubGVuZ3RoKTs7KXt2YXIgb2k9cWwoSnQsZW4sbXIpLGVvPUR0Pj4+MT09MT9nY1tvaV06UG5bb2ldO2lmKGVuKz0xNSZlbywoZW8+Pj49NCk+Pj44JjI1NSl7aWYoMjU2PT1lbylicmVhazt2YXIgSGk9KGVvLT0yNTcpPDg/MDplby00Pj4yO0hpPjUmJihIaT0w'@; put 'KTt2YXIgWmE9b24rYmlbZW9dO0hpPjAmJihaYSs9cWwoSnQsZW4sSGkpLGVuKz1IaSksb2k9cWwoSnQsZW4sQnIpLGVuKz0xNSYoZW89RHQ+Pj4xPT0xP050W29pXTpTaVtvaV0pO3ZhciBzYT0oZW8+Pj49NCk8ND8wOmVvLTI+PjEsQW89Tm9bZW9dO2ZvcihzYT4wJiYoQW8rPXFsKEp0LGVu'@; put 'LHNhKSxlbis9c2EpLCFibiYmTG48WmEmJihMbj0oV3Q9Y2goV3QsWmEpKS5sZW5ndGgpO29uPFphOylXdFtvbl09V3Rbb24tQW9dLCsrb259ZWxzZSBXdFtvbisrXT1lb31lbHNlezcmZW4mJihlbis9OC0oNyZlbikpO3ZhciBFaT1KdFtlbj4+PjNdfEp0Wyhlbj4+PjMpKzFdPDw4O2lmKGVu'@; put 'Kz0zMiwhYm4mJkxuPG9uK0VpJiYoTG49KFd0PWNoKFd0LG9uK0VpKSkubGVuZ3RoKSwiZnVuY3Rpb24iPT10eXBlb2YgSnQuY29weSlKdC5jb3B5KFd0LG9uLGVuPj4+MywoZW4+Pj4zKStFaSksb24rPUVpLGVuKz04KkVpO2Vsc2UgZm9yKDtFaS0tID4wOylXdFtvbisrXT1KdFtlbj4+PjNd'@; put 'LGVuKz04fXJldHVybltibj9XdDpXdC5zbGljZSgwLG9uKSxlbis3Pj4+M119KEp0LnNsaWNlKEp0Lmx8fDApLGJuKTtyZXR1cm4gSnQubCs9RHRbMV0sRHRbMF19ZnVuY3Rpb24gRG8oSnQsYm4pe2lmKCFKdCl0aHJvdyBuZXcgRXJyb3IoYm4pO3R5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29s'@; put 'ZS5lcnJvcihibil9ZnVuY3Rpb24gd2koSnQsYm4pe3ZhciBlbj1KdDtPbChlbiwwKTt2YXIgb249e0ZpbGVJbmRleDpbXSxGdWxsUGF0aHM6W119O25uKG9uLHtyb290OmJuLnJvb3R9KTtmb3IodmFyIExuPWVuLmxlbmd0aC00Oyg4MCE9ZW5bTG5dfHw3NSE9ZW5bTG4rMV18fDUhPWVuW0xu'@; put 'KzJdfHw2IT1lbltMbiszXSkmJkxuPj0wOyktLUxuO2VuLmw9TG4rNCxlbi5sKz00O3ZhciBtcj1lbi5yZWFkX3NoaWZ0KDIpO2VuLmwrPTY7dmFyIEJyPWVuLnJlYWRfc2hpZnQoNCk7Zm9yKGVuLmw9QnIsTG49MDtMbjxtcjsrK0xuKXtlbi5sKz0yMDt2YXIgRWk9ZW4ucmVhZF9zaGlmdCg0'@; put 'KSxvaT1lbi5yZWFkX3NoaWZ0KDQpLGVvPWVuLnJlYWRfc2hpZnQoMiksSGk9ZW4ucmVhZF9zaGlmdCgyKSxaYT1lbi5yZWFkX3NoaWZ0KDIpO2VuLmwrPTg7dmFyIHNhPWVuLnJlYWRfc2hpZnQoNCksQW89b2UoZW4uc2xpY2UoZW4ubCtlbyxlbi5sK2VvK0hpKSk7ZW4ubCs9ZW8rSGkrWmE7'@; put 'dmFyIHlzPWVuLmw7ZW4ubD1zYSs0LEtzKGVuLEVpLG9pLG9uLEFvKSxlbi5sPXlzfXJldHVybiBvbn1mdW5jdGlvbiBLcyhKdCxibixlbixEdCxXdCl7SnQubCs9Mjt2YXIgb249SnQucmVhZF9zaGlmdCgyKSxMbj1KdC5yZWFkX3NoaWZ0KDIpLG1yPWZ1bmN0aW9uIHNlKEp0KXt2YXIgYm49'@; put 'NjU1MzUmSnQucmVhZF9zaGlmdCgyKSxlbj02NTUzNSZKdC5yZWFkX3NoaWZ0KDIpLER0PW5ldyBEYXRlLFd0PTMxJmVuLG9uPTE1Jihlbj4+Pj01KTtlbj4+Pj00LER0LnNldE1pbGxpc2Vjb25kcygwKSxEdC5zZXRGdWxsWWVhcihlbisxOTgwKSxEdC5zZXRNb250aChvbi0xKSxEdC5zZXRE'@; put 'YXRlKFd0KTt2YXIgTG49MzEmYm4sbXI9NjMmKGJuPj4+PTUpO3JldHVybiBEdC5zZXRIb3Vycyhibj4+Pj02KSxEdC5zZXRNaW51dGVzKG1yKSxEdC5zZXRTZWNvbmRzKExuPDwxKSxEdH0oSnQpO2lmKDgyNTcmb24pdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAgZW5jcnlwdGlv'@; put 'biIpO2Zvcih2YXIgQnI9SnQucmVhZF9zaGlmdCg0KSxFaT1KdC5yZWFkX3NoaWZ0KDQpLG9pPUp0LnJlYWRfc2hpZnQoNCksZW89SnQucmVhZF9zaGlmdCgyKSxIaT1KdC5yZWFkX3NoaWZ0KDIpLFphPSIiLHNhPTA7c2E8ZW87KytzYSlaYSs9U3RyaW5nLmZyb21DaGFyQ29kZShKdFtKdC5s'@; put 'KytdKTtpZihIaSl7dmFyIEFvPW9lKEp0LnNsaWNlKEp0LmwsSnQubCtIaSkpOyhBb1syMTU4OV18fHt9KS5tdCYmKG1yPUFvWzIxNTg5XS5tdCksKChXdHx8e30pWzIxNTg5XXx8e30pLm10JiYobXI9V3RbMjE1ODldLm10KX1KdC5sKz1IaTt2YXIgeXM9SnQuc2xpY2UoSnQubCxKdC5sK0Vp'@; put 'KTtzd2l0Y2goTG4pe2Nhc2UgODp5cz1mdW5jdGlvbiBNbihKdCxibil7aWYoIU9yKXJldHVybiBOaShKdCxibik7dmFyIER0PW5ldygwLE9yLkluZmxhdGVSYXcpLFd0PUR0Ll9wcm9jZXNzQ2h1bmsoSnQuc2xpY2UoSnQubCksRHQuX2ZpbmlzaEZsdXNoRmxhZyk7cmV0dXJuIEp0LmwrPUR0'@; put 'LmJ5dGVzUmVhZCxXdH0oSnQsb2kpO2JyZWFrO2Nhc2UgMDpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIENvbXByZXNzaW9uIG1ldGhvZCAiK0xuKX12YXIgcmM9ITE7OCZvbiYmKDEzNDY5NTc2MD09KEJyPUp0LnJlYWRfc2hpZnQoNCkpJiYoQnI9SnQu'@; put 'cmVhZF9zaGlmdCg0KSxyYz0hMCksRWk9SnQucmVhZF9zaGlmdCg0KSxvaT1KdC5yZWFkX3NoaWZ0KDQpKSxFaSE9Ym4mJkRvKHJjLCJCYWQgY29tcHJlc3NlZCBzaXplOiAiK2JuKyIgIT0gIitFaSksb2khPWVuJiZEbyhyYywiQmFkIHVuY29tcHJlc3NlZCBzaXplOiAiK2VuKyIgIT0gIitv'@; put 'aSk7dmFyIEkyPVJlLmJ1Zih5cywwKTsoMHxCcikhPSgwfEkyKSYmRG8ocmMsIkJhZCBDUkMzMiBjaGVja3N1bTogIitCcisiICE9ICIrSTIpLE1kKER0LFphLHlzLHt1bnNhZmU6ITAsbXQ6bXJ9KX1mdW5jdGlvbiBNZChKdCxibixlbixEdCl7dmFyIFd0PUR0JiZEdC51bnNhZmU7V3R8fG5u'@; put 'KEp0KTt2YXIgb249IVd0JiZhZS5maW5kKEp0LGJuKTtpZighb24pe3ZhciBMbj1KdC5GdWxsUGF0aHNbMF07Ym4uc2xpY2UoMCxMbi5sZW5ndGgpPT1Mbj9Mbj1ibjooIi8iIT1Mbi5zbGljZSgtMSkmJihMbis9Ii8iKSxMbj0oTG4rYm4pLnJlcGxhY2UoIi8vIiwiLyIpKSxvbj17bmFtZTpQ'@; put 'KGJuKSx0eXBlOjJ9LEp0LkZpbGVJbmRleC5wdXNoKG9uKSxKdC5GdWxsUGF0aHMucHVzaChMbiksV3R8fGFlLnV0aWxzLmNmYl9nYyhKdCl9cmV0dXJuIG9uLmNvbnRlbnQ9ZW4sb24uc2l6ZT1lbj9lbi5sZW5ndGg6MCxEdCYmKER0LkNMU0lEJiYob24uY2xzaWQ9RHQuQ0xTSUQpLER0Lm10'@; put 'JiYob24ubXQ9RHQubXQpLER0LmN0JiYob24uY3Q9RHQuY3QpKSxvbn1yZXR1cm4gXy5maW5kPWZ1bmN0aW9uIHNyKEp0LGJuKXt2YXIgZW49SnQuRnVsbFBhdGhzLm1hcChmdW5jdGlvbihCcil7cmV0dXJuIEJyLnRvVXBwZXJDYXNlKCl9KSxEdD1lbi5tYXAoZnVuY3Rpb24oQnIpe3ZhciBF'@; put 'aT1Cci5zcGxpdCgiLyIpO3JldHVybiBFaVtFaS5sZW5ndGgtKCIvIj09QnIuc2xpY2UoLTEpPzI6MSldfSksV3Q9ITE7NDc9PT1ibi5jaGFyQ29kZUF0KDApPyhXdD0hMCxibj1lblswXS5zbGljZSgwLC0xKStibik6V3Q9LTEhPT1ibi5pbmRleE9mKCIvIik7dmFyIG9uPWJuLnRvVXBwZXJD'@; put 'YXNlKCksTG49ITA9PT1XdD9lbi5pbmRleE9mKG9uKTpEdC5pbmRleE9mKG9uKTtpZigtMSE9PUxuKXJldHVybiBKdC5GaWxlSW5kZXhbTG5dO3ZhciBtcj0hb24ubWF0Y2gocCk7Zm9yKG9uPW9uLnJlcGxhY2UoRCwiIiksbXImJihvbj1vbi5yZXBsYWNlKHAsIiEiKSksTG49MDtMbjxlbi5s'@; put 'ZW5ndGg7KytMbilpZigobXI/ZW5bTG5dLnJlcGxhY2UocCwiISIpOmVuW0xuXSkucmVwbGFjZShELCIiKT09b258fChtcj9EdFtMbl0ucmVwbGFjZShwLCIhIik6RHRbTG5dKS5yZXBsYWNlKEQsIiIpPT1vbilyZXR1cm4gSnQuRmlsZUluZGV4W0xuXTtyZXR1cm4gbnVsbH0sXy5yZWFkPWZ1'@; put 'bmN0aW9uIG5yKEp0LGJuKXtzd2l0Y2goYm4mJmJuLnR5cGV8fCJiYXNlNjQiKXtjYXNlImZpbGUiOnJldHVybiBmdW5jdGlvbiB1bihKdCxibil7cmV0dXJuIExlKCksTmUoZGUucmVhZEZpbGVTeW5jKEp0KSxibil9KEp0LGJuKTtjYXNlImJhc2U2NCI6cmV0dXJuIE5lKGIoQ2UuZGVjb2Rl'@; put 'KEp0KSksYm4pO2Nhc2UiYmluYXJ5IjpyZXR1cm4gTmUoYihKdCksYm4pfXJldHVybiBOZShKdCxibil9LF8ucGFyc2U9TmUsXy53cml0ZT1mdW5jdGlvbiBEbihKdCxibil7dmFyIGVuPWtuKEp0LGJuKTtzd2l0Y2goYm4mJmJuLnR5cGUpe2Nhc2UiZmlsZSI6cmV0dXJuIExlKCksZGUud3Jp'@; put 'dGVGaWxlU3luYyhibi5maWxlbmFtZSxlbiksZW47Y2FzZSJiaW5hcnkiOnJldHVybiBrcihlbik7Y2FzZSJiYXNlNjQiOnJldHVybiBDZS5lbmNvZGUoa3IoZW4pKX1yZXR1cm4gZW59LF8ud3JpdGVGaWxlPWZ1bmN0aW9uIExpKEp0LGJuLGVuKXtMZSgpO3ZhciBEdD1rbihKdCxlbik7ZGUu'@; put 'd3JpdGVGaWxlU3luYyhibixEdCl9LF8udXRpbHM9e2NmYl9uZXc6ZnVuY3Rpb24gX3UoSnQpe3ZhciBibj17fTtyZXR1cm4gbm4oYm4sSnQpLGJufSxjZmJfYWRkOk1kLGNmYl9kZWw6ZnVuY3Rpb24gemUoSnQsYm4pe25uKEp0KTt2YXIgZW49YWUuZmluZChKdCxibik7aWYoZW4pZm9yKHZh'@; put 'ciBEdD0wO0R0PEp0LkZpbGVJbmRleC5sZW5ndGg7KytEdClpZihKdC5GaWxlSW5kZXhbRHRdPT1lbilyZXR1cm4gSnQuRmlsZUluZGV4LnNwbGljZShEdCwxKSxKdC5GdWxsUGF0aHMuc3BsaWNlKER0LDEpLCEwO3JldHVybiExfSxjZmJfbW92OmZ1bmN0aW9uIEw1KEp0LGJuLGVuKXtubihK'@; put 'dCk7dmFyIER0PWFlLmZpbmQoSnQsYm4pO2lmKER0KWZvcih2YXIgV3Q9MDtXdDxKdC5GaWxlSW5kZXgubGVuZ3RoOysrV3QpaWYoSnQuRmlsZUluZGV4W1d0XT09RHQpcmV0dXJuIEp0LkZpbGVJbmRleFtXdF0ubmFtZT1QKGVuKSxKdC5GdWxsUGF0aHNbV3RdPWVuLCEwO3JldHVybiExfSxj'@; put 'ZmJfZ2M6ZnVuY3Rpb24gRzgoSnQpe2puKEp0LCEwKX0sUmVhZFNoaWZ0OnR1LENoZWNrRmllbGQ6SmgscHJlcF9ibG9iOk9sLGJjb25jYXQ6Ryx1c2VfemxpYjpmdW5jdGlvbiBfcihKdCl7dHJ5e3ZhciBlbj1uZXcoMCxKdC5JbmZsYXRlUmF3KTtpZihlbi5fcHJvY2Vzc0NodW5rKG5ldyBV'@; put 'aW50OEFycmF5KFszLDBdKSxlbi5fZmluaXNoRmx1c2hGbGFnKSwhZW4uYnl0ZXNSZWFkKXRocm93IG5ldyBFcnJvcigiemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkIik7T3I9SnR9Y2F0Y2goRHQpe2NvbnNvbGUuZXJyb3IoImNhbm5vdCB1c2UgbmF0aXZlIHpsaWI6ICIrKER0Lm1l'@; put 'c3NhZ2V8fER0KSl9fSxfZGVmbGF0ZVJhdzp6ZCxfaW5mbGF0ZVJhdzpOaSxjb25zdHM6bW99LF99KCk7dHJ5e3hlPWgoODMzMzcpfWNhdGNoe31mdW5jdGlvbiBqZShkKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQ/ayhkKTpBcnJheS5pc0FycmF5KGQpP2Z1bmN0aW9uIEIoZCl7aWYodHlw'@; put 'ZW9mIFVpbnQ4QXJyYXk+InUiKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQiKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZCl9KGQpOmR9ZnVuY3Rpb24gQWUoZCxfLG0pe2lmKHR5cGVvZiB4ZTwidSImJnhlLndyaXRlRmlsZVN5bmMpcmV0dXJuIG0/eGUud3JpdGVGaWxlU3luYyhkLF8s'@; put 'bSk6eGUud3JpdGVGaWxlU3luYyhkLF8pO3ZhciBUPSJ1dGY4Ij09bT9RaChfKTpfO2lmKHR5cGVvZiBJRV9TYXZlRmlsZTwidSIpcmV0dXJuIElFX1NhdmVGaWxlKFQsZCk7aWYodHlwZW9mIEJsb2I8InUiKXt2YXIgUD1uZXcgQmxvYihbamUoVCldLHt0eXBlOiJhcHBsaWNhdGlvbi9vY3Rl'@; put 'dC1zdHJlYW0ifSk7aWYodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5tc1NhdmVCbG9iKXJldHVybiBuYXZpZ2F0b3IubXNTYXZlQmxvYihQLGQpO2lmKHR5cGVvZiBzYXZlQXM8InUiKXJldHVybiBzYXZlQXMoUCxkKTtpZih0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIGRvY3VtZW50'@; put 'PCJ1IiYmZG9jdW1lbnQuY3JlYXRlRWxlbWVudCYmVVJMLmNyZWF0ZU9iamVjdFVSTCl7dmFyIFE9VVJMLmNyZWF0ZU9iamVjdFVSTChQKTtpZigib2JqZWN0Ij09dHlwZW9mIGNocm9tZSYmImZ1bmN0aW9uIj09dHlwZW9mKGNocm9tZS5kb3dubG9hZHN8fHt9KS5kb3dubG9hZClyZXR1cm4g'@; put 'VVJMLnJldm9rZU9iamVjdFVSTCYmdHlwZW9mIHNldFRpbWVvdXQ8InUiJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTChRKX0sNmU0KSxjaHJvbWUuZG93bmxvYWRzLmRvd25sb2FkKHt1cmw6USxmaWxlbmFtZTpkLHNhdmVBczohMH0pO3ZhciBzZT1kb2N1bWVu'@; put 'dC5jcmVhdGVFbGVtZW50KCJhIik7aWYobnVsbCE9c2UuZG93bmxvYWQpcmV0dXJuIHNlLmRvd25sb2FkPWQsc2UuaHJlZj1RLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2UpLHNlLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzZSksVVJMLnJldm9rZU9iamVjdFVSTCYm'@; put 'dHlwZW9mIHNldFRpbWVvdXQ8InUiJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTChRKX0sNmU0KSxRfX1pZih0eXBlb2YgJDwidSImJnR5cGVvZiBGaWxlPCJ1IiYmdHlwZW9mIEZvbGRlcjwidSIpdHJ5e3ZhciBvZT1GaWxlKGQpO3JldHVybiBvZS5vcGVuKCJ3'@; put 'Iiksb2UuZW5jb2Rpbmc9ImJpbmFyeSIsQXJyYXkuaXNBcnJheShfKSYmKF89TShfKSksb2Uud3JpdGUoXyksb2UuY2xvc2UoKSxffWNhdGNoKGRlKXtpZighZGUubWVzc2FnZXx8IWRlLm1lc3NhZ2UubWF0Y2goL29uc3RydWN0LykpdGhyb3cgZGV9dGhyb3cgbmV3IEVycm9yKCJjYW5ub3Qg'@; put 'c2F2ZSBmaWxlICIrZCl9ZnVuY3Rpb24gRmUoZCl7Zm9yKHZhciBfPU9iamVjdC5rZXlzKGQpLG09W10sVD0wO1Q8Xy5sZW5ndGg7KytUKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLF9bVF0pJiZtLnB1c2goX1tUXSk7cmV0dXJuIG19ZnVuY3Rpb24gZ2UoZCxfKXtm'@; put 'b3IodmFyIG09W10sVD1GZShkKSxQPTA7UCE9PVQubGVuZ3RoOysrUCludWxsPT1tW2RbVFtQXV1bX11dJiYobVtkW1RbUF1dW19dXT1UW1BdKTtyZXR1cm4gbX1mdW5jdGlvbiBjZShkKXtmb3IodmFyIF89W10sbT1GZShkKSxUPTA7VCE9PW0ubGVuZ3RoOysrVClfW2RbbVtUXV1dPW1bVF07'@; put 'cmV0dXJuIF99ZnVuY3Rpb24gaGUoZCl7Zm9yKHZhciBfPVtdLG09RmUoZCksVD0wO1QhPT1tLmxlbmd0aDsrK1QpX1tkW21bVF1dXT1wYXJzZUludChtW1RdLDEwKTtyZXR1cm4gX312YXIgS2UsJHQsSmU9bmV3IERhdGUoMTg5OSwxMSwzMCwwLDAsMCksdHQ9MDtmdW5jdGlvbiBSdCgpe3R0'@; put 'PUplLmdldFRpbWUoKSs2ZTQqKChuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKS1KZS5nZXRUaW1lem9uZU9mZnNldCgpKSxLZT1mdW5jdGlvbihfLG0pe3ZhciBUPV8uZ2V0VGltZSgpO3JldHVybiBtJiYoVC09MTI2MzE2OGU1KSwoVC10dCkvODY0ZTV9LCR0PWZ1bmN0aW9uKF8pe3Zh'@; put 'ciBtPW5ldyBEYXRlO3JldHVybiBtLnNldFRpbWUoMjQqXyo2MCo2MCoxZTMrdHQpLG19fWZ1bmN0aW9uIGd0KGQpe3ZhciBfPTAsbT0wLFQ9ITEsUD1kLm1hdGNoKC9QKFswLTlcLl0rWSk/KFswLTlcLl0rTSk/KFswLTlcLl0rRCk/VChbMC05XC5dK0gpPyhbMC05XC5dK00pPyhbMC05XC5d'@; put 'K1MpPy8pO2lmKCFQKXRocm93IG5ldyBFcnJvcigifCIrZCsifCBpcyBub3QgYW4gSVNPODYwMSBEdXJhdGlvbiIpO2Zvcih2YXIgUT0xO1EhPVAubGVuZ3RoOysrUSlpZihQW1FdKXtzd2l0Y2gobT0xLFE+MyYmKFQ9ITApLFBbUV0uc2xpY2UoUFtRXS5sZW5ndGgtMSkpe2Nhc2UiWSI6dGhy'@; put 'b3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6ICIrUFtRXS5zbGljZShQW1FdLmxlbmd0aC0xKSk7Y2FzZSJEIjptKj0yNDtjYXNlIkgiOm0qPTYwO2Nhc2UiTSI6aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6'@; put 'IE0iKTttKj02MH1fKz1tKnBhcnNlSW50KFBbUV0sMTApfXJldHVybiBffVJ0KCk7dmFyIFh0PW5ldyBEYXRlKCIyMDE3LTAyLTE5VDE5OjA2OjA5LjAwMFoiKTtpc05hTihYdC5nZXRGdWxsWWVhcigpKSYmKFh0PW5ldyBEYXRlKCIyLzE5LzE3IikpO3ZhciBMcj0yMDE3PT1YdC5nZXRGdWxs'@; put 'WWVhcigpO2Z1bmN0aW9uIGxuKGQsXyl7dmFyIG09bmV3IERhdGUoZCk7aWYoTHIpcmV0dXJuIF8+MD9tLnNldFRpbWUobS5nZXRUaW1lKCkrNjAqbS5nZXRUaW1lem9uZU9mZnNldCgpKjFlMyk6XzwwJiZtLnNldFRpbWUobS5nZXRUaW1lKCktNjAqbS5nZXRUaW1lem9uZU9mZnNldCgpKjFl'@; put 'MyksbTtpZihkIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZDtpZigxOTE3PT1YdC5nZXRGdWxsWWVhcigpJiYhaXNOYU4obS5nZXRGdWxsWWVhcigpKSl7dmFyIFQ9bS5nZXRGdWxsWWVhcigpO3JldHVybiBkLmluZGV4T2YoIiIrVCk+LTF8fG0uc2V0RnVsbFllYXIobS5nZXRGdWxsWWVhcigp'@; put 'KzEwMCksbX12YXIgUD1kLm1hdGNoKC9cZCsvZyl8fFsiMjAxNyIsIjIiLCIxOSIsIjAiLCIwIiwiMCJdLFE9bmV3IERhdGUoK1BbMF0sK1BbMV0tMSwrUFsyXSwrUFszXXx8MCwrUFs0XXx8MCwrUFs1XXx8MCk7cmV0dXJuIGQuaW5kZXhPZigiWiIpPi0xJiYoUT1uZXcgRGF0ZShRLmdldFRp'@; put 'bWUoKS02MCpRLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKSksUX1mdW5jdGlvbiBPbihkKXtmb3IodmFyIF89IiIsbT0wO20hPWQubGVuZ3RoOysrbSlfKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGRbbV0pO3JldHVybiBffWZ1bmN0aW9uIFFyKGQpe2lmKCJvYmplY3QiIT10eXBlb2YgZHx8bnVs'@; put 'bD09ZClyZXR1cm4gZDtpZihkIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoZC5nZXRUaW1lKCkpO2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGZ1bmN0aW9uIHRyKGQpe2Zvcih2YXIgXz1bXSxtPTA7bTxkLmxlbmd0aDsrK20pe3ZhciBUPWRbbV07Im9iamVjdCI9PXR5cGVv'@; put 'ZiBUP19bbV09UXIoVCk6bnVsbCE9VCYmKF9bbV09VCl9cmV0dXJuIF99KGQpO3ZhciBfPXt9O2Zvcih2YXIgbSBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLG0pJiYoX1ttXT1RcihkW21dKSk7cmV0dXJuIF99ZnVuY3Rpb24gSG4oZCxfKXtpZigib2JqZWN0'@; put 'IiE9dHlwZW9mIF98fG51bGw9PV8pcmV0dXJuIGQ7Zm9yKHZhciBtIGluIF8pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF8sbSkmJihkW21dPVFyKF9bbV0pKTtyZXR1cm4gZH1mdW5jdGlvbiBPbyhkLF8pe2Zvcih2YXIgbT0iIjttLmxlbmd0aDxfOyltKz1kO3JldHVy'@; put 'biBtfWZ1bmN0aW9uIHVyKGQpe3ZhciBfPU51bWJlcihkKTtpZighaXNOYU4oXykpcmV0dXJuIGlzRmluaXRlKF8pP186TmFOO2lmKCEvXGQvLnRlc3QoZCkpcmV0dXJuIF87dmFyIG09MSxUPWQucmVwbGFjZSgvKFtcZF0pLChbXGRdKS9nLCIkMSQyIikucmVwbGFjZSgvWyRdL2csIiIpLnJl'@; put 'cGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIG0qPTEwMCwiIn0pO3JldHVybiBpc05hTihfPU51bWJlcihUKSkmJihUPVQucmVwbGFjZSgvWyhdKC4qKVspXS8sZnVuY3Rpb24oUCxRKXtyZXR1cm4gbT0tbSxRfSksaXNOYU4oXz1OdW1iZXIoVCkpKT9fOl8vbX1mdW5jdGlvbiBabihk'@; put 'KXt2YXIgXz1uZXcgRGF0ZShkKSxtPW5ldyBEYXRlKE5hTiksVD1fLmdldFllYXIoKSxQPV8uZ2V0TW9udGgoKSxRPV8uZ2V0RGF0ZSgpO3JldHVybiBpc05hTihRKXx8VDwwfHxUPjgwOTk/bTooUD4wfHxRPjEpJiYxMDEhPVR8fGQudG9Mb3dlckNhc2UoKS5tYXRjaCgvamFufGZlYnxtYXJ8'@; put 'YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKT9fOmQubWF0Y2goL1teLTAtOTosXC9cXF0vKT9tOl99ZnVuY3Rpb24gU24oZCxfKXtpZihfJiZfLnJhdylyZXR1cm57dDoicyIsdjpkfTtpZighZClyZXR1cm57dDoieiJ9O2lmKCJUUlVFIj09PWQpcmV0dXJue3Q6ImIiLHY6'@; put 'ITB9O2lmKCJGQUxTRSI9PT1kKXJldHVybnt0OiJiIix2OiExfTt2YXIgbT0iIixUPU51bWJlcihkKTtpZihpc0Zpbml0ZShUKSlyZXR1cm57dDoibiIsdjpUfTtpZihpc05hTihUKSYmL1xkLy50ZXN0KGQpKXt2YXIgUD0xLFE9ZC5yZXBsYWNlKC8oW1xkXSksKFtcZF0pL2csZnVuY3Rpb24o'@; put 'WmUsbnQsbXQpe3JldHVybiBtfHwobT0iIywjIzAiKSxudCttdH0pLnJlcGxhY2UoL1skXS9nLCIiKS5yZXBsYWNlKC9cLlxkKi8sZnVuY3Rpb24oWmUpe218fChtPSIwIiksbSs9Ii4iO2Zvcih2YXIgbnQ9MjtudDw9WmUubGVuZ3RoOysrbnQpbSs9IjAiO3JldHVybiBaZX0pLnJlcGxhY2Uo'@; put 'L1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIFAqPTEwMCxtfHwobT0iMCIpLG0rPSIlIiwiIn0pO2lmKCFpc05hTihUPU51bWJlcihRKSkpcmV0dXJue3Q6Im4iLHY6VC9QLHo6bX07aWYoUT1RLnJlcGxhY2UoL1soXSguKilbKV0vLGZ1bmN0aW9uKFplLG50KXtyZXR1cm4gUD0tUCxudH0pLCFp'@; put 'c05hTihUPU51bWJlcihRKSkpcmV0dXJue3Q6Im4iLHY6VC9QLHo6KG18fCIwIikrIl8pOygiKyhtfHwiMCIpKyIpO0AifX1lOmlmKCFffHwhXy5yYXdEYXRlcyl7dmFyIHNlPV8mJl8uY2VsbERhdGVzLG9lPW5ldyBEYXRlKGQpLExlPW9lLmdldFllYXIoKSxOZT1vZS5nZXRNb250aCgpLEJl'@; put 'PW9lLmdldERhdGUoKTtpZihpc05hTihCZSl8fExlPDB8fExlPjgwOTkpYnJlYWsgZTtpZigoTmU+MHx8QmU+MSkmJjEwMSE9TGUpcmV0dXJue3Q6c2U/ImQiOiJuIix2OnNlP29lOktlKG9lKSx6Ol8uZGF0ZU5GfHxJLl90YWJsZVsxNF19O2lmKGQudG9Mb3dlckNhc2UoKS5tYXRjaCgvamFu'@; put 'fGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKSlyZXR1cm57dDpzZT8iZCI6Im4iLHY6c2U/b2U6S2Uob2UpLHo6Xy5kYXRlTkZ8fEkuX3RhYmxlWzE0XX07aWYoZC5tYXRjaCgvW14tMC05OixcL1xcXS8pKWJyZWFrIGU7cmV0dXJuIG9lfXJldHVybnt0OiJz'@; put 'Iix2OmR9fXZhciB5bix4cj01PT0iYWJhY2FiYSIuc3BsaXQoLyg6P2IpL2kpLmxlbmd0aDtmdW5jdGlvbiBfbihkKXtyZXR1cm4gbnVsbCE9ZCYmIWR9ZnVuY3Rpb24gWnQoZCl7cmV0dXJuIGQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZC5zbGljZSgxKX1mdW5jdGlvbiBObihkKXtyZXR1'@; put 'cm4gZD9kLmRhdGE/RihkLmRhdGEpOmQuYXNOb2RlQnVmZmVyJiZJZT9GKGQuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoImJpbmFyeSIpKTpkLmFzQmluYXJ5P0YoZC5hc0JpbmFyeSgpKTpkLl9kYXRhJiZkLl9kYXRhLmdldENvbnRlbnQ/RihPbihBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs'@; put 'bChkLl9kYXRhLmdldENvbnRlbnQoKSwwKSkpOmQuY29udGVudCYmZC50eXBlP0YoT24oZC5jb250ZW50KSk6bnVsbDpudWxsfWZ1bmN0aW9uIHB0KGQpe2lmKCFkKXJldHVybiBudWxsO2lmKGQuZGF0YSlyZXR1cm4gTihkLmRhdGEpO2lmKGQuYXNOb2RlQnVmZmVyJiZJZSlyZXR1cm4gZC5h'@; put 'c05vZGVCdWZmZXIoKTtpZihkLl9kYXRhJiZkLl9kYXRhLmdldENvbnRlbnQpe3ZhciBfPWQuX2RhdGEuZ2V0Q29udGVudCgpO3JldHVybiJzdHJpbmciPT10eXBlb2YgXz9OKF8pOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKF8pfXJldHVybiBkLmNvbnRlbnQmJmQudHlwZT9kLmNvbnRl'@; put 'bnQ6bnVsbH1mdW5jdGlvbiBNaShkLF8pe2Zvcih2YXIgbT1kLkZ1bGxQYXRoc3x8RmUoZC5maWxlcyksVD1fLnRvTG93ZXJDYXNlKCksUD1ULnJlcGxhY2UoL1wvL2csIlxcIiksUT0wO1E8bS5sZW5ndGg7KytRKXt2YXIgc2U9bVtRXS50b0xvd2VyQ2FzZSgpO2lmKFQ9PXNlfHxQPT1zZSly'@; put 'ZXR1cm4gZC5maWxlc1ttW1FdXX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBHZShkLF8pe3ZhciBtPU1pKGQsXyk7aWYobnVsbD09bSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIGZpbGUgIitfKyIgaW4gemlwIik7cmV0dXJuIG19ZnVuY3Rpb24gVXQoZCxfLG0pe2lmKCFtKXJldHVybiBm'@; put 'dW5jdGlvbiBwbihkKXtyZXR1cm4gZCYmIi5iaW4iPT09ZC5uYW1lLnNsaWNlKC00KT9wdChkKTpObihkKX0oR2UoZCxfKSk7aWYoIV8pcmV0dXJuIG51bGw7dHJ5e3JldHVybiBVdChkLF8pfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiB2cihkLF8sbSl7aWYoIW0pcmV0dXJuIE5uKEdl'@; put 'KGQsXykpO2lmKCFfKXJldHVybiBudWxsO3RyeXtyZXR1cm4gdnIoZCxfKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24geHQoZCxfLG0pe2lmKCFtKXJldHVybiBwdChHZShkLF8pKTtpZighXylyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIHh0KGQsXyl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1'@; put 'bmN0aW9uIHpuKGQsXyxtKXtkLkZ1bGxQYXRocz9hZS51dGlscy5jZmJfYWRkKGQsXyxtKTpkLmZpbGUoXyxtKX1mdW5jdGlvbiB2aSgpe3JldHVybiB5bj9uZXcgeW46YWUudXRpbHMuY2ZiX25ldygpfWZ1bmN0aW9uIHJyKGQsXyl7dmFyIG07aWYoeW4pc3dpdGNoKF8udHlwZSl7Y2FzZSJi'@; put 'YXNlNjQiOm09bmV3IHluKGQse2Jhc2U2NDohMH0pO2JyZWFrO2Nhc2UiYmluYXJ5IjpjYXNlImFycmF5IjptPW5ldyB5bihkLHtiYXNlNjQ6ITF9KTticmVhaztjYXNlImJ1ZmZlciI6bT1uZXcgeW4oZCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBl'@; put 'ICIrXy50eXBlKX1lbHNlIHN3aXRjaChfLnR5cGUpe2Nhc2UiYmFzZTY0IjptPWFlLnJlYWQoZCx7dHlwZToiYmFzZTY0In0pO2JyZWFrO2Nhc2UiYmluYXJ5IjptPWFlLnJlYWQoZCx7dHlwZToiYmluYXJ5In0pO2JyZWFrO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjptPWFlLnJlYWQoZCx7'@; put 'dHlwZToiYnVmZmVyIn0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK18udHlwZSl9cmV0dXJuIG19ZnVuY3Rpb24gaHIoZCxfKXtpZigiLyI9PWQuY2hhckF0KDApKXJldHVybiBkLnNsaWNlKDEpO3ZhciBtPV8uc3BsaXQoIi8iKTsiLyIhPV8u'@; put 'c2xpY2UoLTEpJiZtLnBvcCgpO2Zvcih2YXIgVD1kLnNwbGl0KCIvIik7MCE9PVQubGVuZ3RoOyl7dmFyIFA9VC5zaGlmdCgpOyIuLiI9PT1QP20ucG9wKCk6Ii4iIT09UCYmbS5wdXNoKFApfXJldHVybiBtLmpvaW4oIi8iKX10eXBlb2YgSlNaaXBTeW5jPCJ1IiYmKHluPUpTWmlwU3luYyks'@; put 'ZmUuZXhwb3J0cyYmdHlwZW9mIHluPiJ1IiYmKHluPWgoMzE3OSkpO3ZhciBwbz0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PlxyXG4nLHZuPS8oPzpbXiJccz8+XC9dKylccyo9XHMqKCg/OiIpKD86W14iXSo/KSg/OiIpfCg/OicpKD86'@; put 'W14nXSo/KSg/OicpfCg/OlteJyI+XHNdKykpL2csQm49LzxbXC9cP10/W2EtekEtWjAtOTpfLV0rKD86XHMrW14iXHM/PlwvXStccyo9XHMqKD86IlteIl0qInwnW14nXSonfFteJyI+XHM9XSspKSpccz9bXC9cP10/Pi9nO3BvLm1hdGNoKEJuKXx8KEJuPS88W14+XSo+L2cpO3ZhciBqYT0v'@; put 'PFx3KjovLGpvPS88KFwvPylcdys6LztmdW5jdGlvbiBYcihkLF8sbSl7Zm9yKHZhciBUPXt9LFA9MCxRPTA7UCE9PWQubGVuZ3RoJiYzMiE9PShRPWQuY2hhckNvZGVBdChQKSkmJjEwIT09USYmMTMhPT1ROysrUCk7aWYoX3x8KFRbMF09ZC5zbGljZSgwLFApKSxQPT09ZC5sZW5ndGgpcmV0'@; put 'dXJuIFQ7dmFyIHNlPWQubWF0Y2godm4pLG9lPTAsZGU9IiIsTGU9MCxOZT0iIixCZT0iIixaZT0xO2lmKHNlKWZvcihMZT0wO0xlIT1zZS5sZW5ndGg7KytMZSl7Zm9yKEJlPXNlW0xlXSxRPTA7USE9QmUubGVuZ3RoJiY2MSE9PUJlLmNoYXJDb2RlQXQoUSk7KytRKTtmb3IoTmU9QmUuc2xp'@; put 'Y2UoMCxRKS50cmltKCk7MzI9PUJlLmNoYXJDb2RlQXQoUSsxKTspKytRO2ZvcihaZT0zND09KFA9QmUuY2hhckNvZGVBdChRKzEpKXx8Mzk9PVA/MTowLGRlPUJlLnNsaWNlKFErMStaZSxCZS5sZW5ndGgtWmUpLG9lPTA7b2UhPU5lLmxlbmd0aCYmNTghPT1OZS5jaGFyQ29kZUF0KG9lKTsr'@; put 'K29lKTtpZihvZT09PU5lLmxlbmd0aClOZS5pbmRleE9mKCJfIik+MCYmKE5lPU5lLnNsaWNlKDAsTmUuaW5kZXhPZigiXyIpKSksVFtOZV09ZGUsbXx8KFRbTmUudG9Mb3dlckNhc2UoKV09ZGUpO2Vsc2V7dmFyIG50PSg1PT09b2UmJiJ4bWxucyI9PT1OZS5zbGljZSgwLDUpPyJ4bWxucyI6'@; put 'IiIpK05lLnNsaWNlKG9lKzEpO2lmKFRbbnRdJiYiZXh0Ij09TmUuc2xpY2Uob2UtMyxvZSkpY29udGludWU7VFtudF09ZGUsbXx8KFRbbnQudG9Mb3dlckNhc2UoKV09ZGUpfX1yZXR1cm4gVH1mdW5jdGlvbiBlYShkKXtyZXR1cm4gZC5yZXBsYWNlKGpvLCI8JDEiKX12YXIgcmE9eyImcXVv'@; put 'dDsiOiciJywiJmFwb3M7IjoiJyIsIiZndDsiOiI+IiwiJmx0OyI6IjwiLCImYW1wOyI6IiYifSxjYT1jZShyYSksQ2k9ZnVuY3Rpb24oKXt2YXIgZD0vJig/OnF1b3R8YXBvc3xndHxsdHxhbXB8I3g/KFtcZGEtZkEtRl0rKSk7L2dpLF89L194KFtcZGEtZkEtRl17NH0pXy9naTtyZXR1cm4g'@; put 'ZnVuY3Rpb24gbShUKXt2YXIgUD1UKyIiLFE9UC5pbmRleE9mKCI8IVtDREFUQVsiKTtpZigtMT09USlyZXR1cm4gUC5yZXBsYWNlKGQsZnVuY3Rpb24ob2UsZGUpe3JldHVybiByYVtvZV18fFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZGUsb2UuaW5kZXhPZigieCIpPi0xPzE2OjEw'@; put 'KSl8fG9lfSkucmVwbGFjZShfLGZ1bmN0aW9uKG9lLGRlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChkZSwxNikpfSk7dmFyIHNlPVAuaW5kZXhPZigiXV0+Iik7cmV0dXJuIG0oUC5zbGljZSgwLFEpKStQLnNsaWNlKFErOSxzZSkrbShQLnNsaWNlKHNlKzMpKX19KCks'@; put 'aG89L1smPD4nIl0vZyxNYT0vW1x1MDAwMC1cdTAwMDhcdTAwMGItXHUwMDFmXS9nLGtzPS9feFswLTlhLWZBLUZdezR9Xy9nO2Z1bmN0aW9uIEJpKGQpe3JldHVybihkKyIiKS5yZXBsYWNlKGtzLCJfeDAwNUYkJiIpLnJlcGxhY2UoaG8sZnVuY3Rpb24obSl7cmV0dXJuIGNhW21dfSkucmVw'@; put 'bGFjZShNYSxmdW5jdGlvbihtKXtyZXR1cm4iX3giKygiMDAwIittLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIl8ifSl9ZnVuY3Rpb24gdGEoZCl7cmV0dXJuIEJpKGQpLnJlcGxhY2UoL1xuL2csIl94MDAwYV8iKX1mdW5jdGlvbiBNcihkKXtyZXR1cm4gQmkoZCku'@; put 'cmVwbGFjZSgvIC9nLCJfeDAwMjBfIil9dmFyIEZzPS9bXHUwMDAwLVx1MDAxZl0vZztmdW5jdGlvbiAkaShkKXtyZXR1cm4oZCsiIikucmVwbGFjZShobyxmdW5jdGlvbihtKXtyZXR1cm4gY2FbbV19KS5yZXBsYWNlKC9cbi9nLCI8YnIvPiIpLnJlcGxhY2UoRnMsZnVuY3Rpb24obSl7cmV0'@; put 'dXJuIiYjeCIrKCIwMDAiK20uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSsiOyJ9KX1mdW5jdGlvbiBfcyhkKXtyZXR1cm4oZCsiIikucmVwbGFjZShobyxmdW5jdGlvbihtKXtyZXR1cm4gY2FbbV19KS5yZXBsYWNlKEZzLGZ1bmN0aW9uKG0pe3JldHVybiImI3giK20u'@; put 'Y2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiOyJ9KX12YXIganM9ZnVuY3Rpb24oKXt2YXIgZD0vJiMoXGQrKTsvZztmdW5jdGlvbiBfKG0sVCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoVCwxMCkpfXJldHVybiBmdW5jdGlvbihUKXtyZXR1'@; put 'cm4gVC5yZXBsYWNlKGQsXyl9fSgpLENsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKF8pe3JldHVybiBfLnJlcGxhY2UoLyhcclxufFtcclxuXSkvZywiJiMxMDsiKX19KCk7ZnVuY3Rpb24gVGkoZCl7c3dpdGNoKGQpe2Nhc2UgMTpjYXNlITA6Y2FzZSIxIjpjYXNlInRydWUiOmNhc2Ui'@; put 'VFJVRSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19dmFyIFduPWZ1bmN0aW9uKF8pe2Zvcih2YXIgbT0iIixUPTAsUD0wLFE9MCxzZT0wLG9lPTAsZGU9MDtUPF8ubGVuZ3RoOykoUD1fLmNoYXJDb2RlQXQoVCsrKSk8MTI4P20rPVN0cmluZy5mcm9tQ2hhckNvZGUoUCk6KFE9Xy5jaGFy'@; put 'Q29kZUF0KFQrKyksUD4xOTEmJlA8MjI0PyhvZT0oMzEmUCk8PDYsb2V8PTYzJlEsbSs9U3RyaW5nLmZyb21DaGFyQ29kZShvZSkpOihzZT1fLmNoYXJDb2RlQXQoVCsrKSxQPDI0MD9tKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgxNSZQKTw8MTJ8KDYzJlEpPDw2fDYzJnNlKTooZGU9KCg3JlAp'@; put 'PDwxOHwoNjMmUSk8PDEyfCg2MyZzZSk8PDZ8NjMmKG9lPV8uY2hhckNvZGVBdChUKyspKSktNjU1MzYsbSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoZGU+Pj4xMCYxMDIzKSksbSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NjMyMCsoMTAyMyZkZSkpKSkpO3JldHVybiBtfSxRaD1mdW5j'@; put 'dGlvbihkKXtmb3IodmFyIF89W10sbT0wLFQ9MCxQPTA7bTxkLmxlbmd0aDspc3dpdGNoKFQ9ZC5jaGFyQ29kZUF0KG0rKyksITApe2Nhc2UgVDwxMjg6Xy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoVCkpO2JyZWFrO2Nhc2UgVDwyMDQ4Ol8ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5'@; put 'MisoVD4+NikpKSxfLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKDYzJlQpKSk7YnJlYWs7Y2FzZSBUPj01NTI5NiYmVDw1NzM0NDpULT01NTI5NixQPWQuY2hhckNvZGVBdChtKyspLTU2MzIwKyhUPDwxMCksXy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjQwKyhQPj4xOCY3KSkp'@; put 'LF8ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE0NCsoUD4+MTImNjMpKSksXy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4KyhQPj42JjYzKSkpLF8ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmUCkpKTticmVhaztkZWZhdWx0Ol8ucHVzaChTdHJpbmcuZnJvbUNoYXJD'@; put 'b2RlKDIyNCsoVD4+MTIpKSksXy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4KyhUPj42JjYzKSkpLF8ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmVCkpKX1yZXR1cm4gXy5qb2luKCIiKX07aWYoSWUpe3ZhciBkYz1mdW5jdGlvbihfKXt2YXIgVCxQLGRlLG09QnVmZmVy'@; put 'LmFsbG9jKDIqXy5sZW5ndGgpLFE9MSxzZT0wLG9lPTA7Zm9yKFA9MDtQPF8ubGVuZ3RoO1ArPVEpUT0xLChkZT1fLmNoYXJDb2RlQXQoUCkpPDEyOD9UPWRlOmRlPDIyND8oVD02NCooMzEmZGUpKyg2MyZfLmNoYXJDb2RlQXQoUCsxKSksUT0yKTpkZTwyNDA/KFQ9NDA5NiooMTUmZGUpKzY0'@; put 'Kig2MyZfLmNoYXJDb2RlQXQoUCsxKSkrKDYzJl8uY2hhckNvZGVBdChQKzIpKSxRPTMpOihRPTQsVD0yNjIxNDQqKDcmZGUpKzQwOTYqKDYzJl8uY2hhckNvZGVBdChQKzEpKSs2NCooNjMmXy5jaGFyQ29kZUF0KFArMikpKyg2MyZfLmNoYXJDb2RlQXQoUCszKSksb2U9NTUyOTYrKChULT02'@; put 'NTUzNik+Pj4xMCYxMDIzKSxUPTU2MzIwKygxMDIzJlQpKSwwIT09b2UmJihtW3NlKytdPTI1NSZvZSxtW3NlKytdPW9lPj4+OCxvZT0wKSxtW3NlKytdPVQlMjU2LG1bc2UrK109VD4+Pjg7cmV0dXJuIG0uc2xpY2UoMCxzZSkudG9TdHJpbmcoInVjczIiKX0sSWw9ImZvbyBiYXIgYmF6XHhl'@; put 'Mlx4OThceDgzXHhmMFx4OWZceDhkXHhhMyI7V24oSWwpPT1kYyhJbCkmJihXbj1kYyk7dmFyIGcyPWZ1bmN0aW9uKF8pe3JldHVybiBrZShfLCJiaW5hcnkiKS50b1N0cmluZygidXRmOCIpfTtXbihJbCk9PWcyKElsKSYmKFduPWcyKSxRaD1mdW5jdGlvbihkKXtyZXR1cm4ga2UoZCwidXRm'@; put 'OCIpLnRvU3RyaW5nKCJiaW5hcnkiKX19dmFyIGQsTGM9ZnVuY3Rpb24oKXt2YXIgZD17fTtyZXR1cm4gZnVuY3Rpb24obSxUKXt2YXIgUD1tKyJ8IisoVHx8IiIpO3JldHVybiBkW1BdP2RbUF06ZFtQXT1uZXcgUmVnRXhwKCI8KD86XFx3KzopPyIrbSsnKD86IHhtbDpzcGFjZT0icHJlc2Vy'@; put 'dmUiKT8oPzpbXj5dKik+KFtcXHNcXFNdKj8pPC8oPzpcXHcrOik/JyttKyI+IixUfHwiIil9fSgpLFVzPShkPVtbIm5ic3AiLCIgIl0sWyJtaWRkb3QiLCJceGI3Il0sWyJxdW90IiwnIiddLFsiYXBvcyIsIiciXSxbImd0IiwiPiJdLFsibHQiLCI8Il0sWyJhbXAiLCImIl1dLm1hcChmdW5j'@; put 'dGlvbihfKXtyZXR1cm5bbmV3IFJlZ0V4cCgiJiIrX1swXSsiOyIsImlnIiksX1sxXV19KSxmdW5jdGlvbihtKXtmb3IodmFyIFQ9bS5yZXBsYWNlKC9eW1x0XG5cciBdKy8sIiIpLnJlcGxhY2UoL1tcdFxuXHIgXSskLywiIikucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIikucmVwbGFjZSgv'@; put 'PFxzKltiQl1bclJdXHMqXC8/Pi9nLCJcbiIpLnJlcGxhY2UoLzxbXj5dKj4vZywiIiksUD0wO1A8ZC5sZW5ndGg7KytQKVQ9VC5yZXBsYWNlKGRbUF1bMF0sZFtQXVsxXSk7cmV0dXJuIFR9KSxzcD1mdW5jdGlvbigpe3ZhciBkPXt9O3JldHVybiBmdW5jdGlvbihtKXtyZXR1cm4gdm9pZCAw'@; put 'IT09ZFttXT9kW21dOmRbbV09bmV3IFJlZ0V4cCgiPCg/OnZ0Oik/IittKyI+KFtcXHNcXFNdKj8pPC8oPzp2dDopPyIrbSsiPiIsImciKX19KCksUnM9LzxcLz8oPzp2dDopP3ZhcmlhbnQ+L2csTDA9LzwoPzp2dDopKFtePl0qKT4oW1xzXFNdKik8LztmdW5jdGlvbiBKdShkLF8pe3ZhciBt'@; put 'PVhyKGQpLFQ9ZC5tYXRjaChzcChtLmJhc2VUeXBlKSl8fFtdLFA9W107aWYoVC5sZW5ndGghPW0uc2l6ZSl7aWYoXy5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIHZlY3RvciBsZW5ndGggIitULmxlbmd0aCsiICE9ICIrbS5zaXplKTtyZXR1cm4gUH1yZXR1cm4gVC5mb3JFYWNo'@; put 'KGZ1bmN0aW9uKFEpe3ZhciBzZT1RLnJlcGxhY2UoUnMsIiIpLm1hdGNoKEwwKTtzZSYmUC5wdXNoKHt2OlduKHNlWzJdKSx0OnNlWzFdfSl9KSxQfXZhciB5ZD0vKF5cc3xccyR8XG4pLztmdW5jdGlvbiBVbyhkLF8pe3JldHVybiI8IitkKyhfLm1hdGNoKHlkKT8nIHhtbDpzcGFjZT0icHJl'@; put 'c2VydmUiJzoiIikrIj4iK18rIjwvIitkKyI+In1mdW5jdGlvbiBmYShkKXtyZXR1cm4gRmUoZCkubWFwKGZ1bmN0aW9uKF8pe3JldHVybiIgIitfKyc9IicrZFtfXSsnIid9KS5qb2luKCIiKX1mdW5jdGlvbiBWcihkLF8sbSl7cmV0dXJuIjwiK2QrKG51bGwhPW0/ZmEobSk6IiIpKyhudWxs'@; put 'IT1fPyhfLm1hdGNoKHlkKT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4iK18rIjwvIitkOiIvIikrIj4ifWZ1bmN0aW9uIGEwKGQsXyl7dHJ5e3JldHVybiBkLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCovLCIiKX1jYXRjaChtKXtpZihfKXRocm93IG19cmV0dXJuIiJ9dmFy'@; put 'IG1pLGV1LFVhPXtkYzoiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLGRjdGVybXM6Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iLGRjbWl0eXBlOiJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIixteDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uv'@; put 'bWFjL2V4Y2VsLzIwMDgvbWFpbiIscjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIsc2pzOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3NoZWV0anMvY29yZS1wcm9wZXJ0'@; put 'aWVzIix2dDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZG9jUHJvcHNWVHlwZXMiLHhzaToiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLHhzZDoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEi'@; put 'LG1haW46WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9zcHJlYWRzaGVldG1sL21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21h'@; put 'aW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzIiXX0sVnVfbz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIixWdV94PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCIsVnVfc3M9InVybjpzY2hl'@; put 'bWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOnNwcmVhZHNoZWV0IixWdV92PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIsbmg9ZnVuY3Rpb24oZCl7Zm9yKHZhciBfPVtdLFQ9MDtUPGRbMF0ubGVuZ3RoOysrVClpZihkWzBdW1RdKWZvcih2YXIgUD0wLFE9ZFswXVtUXS5sZW5ndGg7'@; put 'UDxRO1ArPTEwMjQwKV8ucHVzaC5hcHBseShfLGRbMF1bVF0uc2xpY2UoUCxQKzEwMjQwKSk7cmV0dXJuIF99LHdnPW5oLEpjPWZ1bmN0aW9uKGQsXyxtKXtmb3IodmFyIFQ9W10sUD1fO1A8bTtQKz0yKVQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKEVyKGQsUCkpKTtyZXR1cm4gVC5qb2lu'@; put 'KCIiKS5yZXBsYWNlKEQsIiIpfSxnZj1KYyxscD1mdW5jdGlvbihkLF8sbSl7Zm9yKHZhciBUPVtdLFA9XztQPF8rbTsrK1ApVC5wdXNoKCgiMCIrZFtQXS50b1N0cmluZygxNikpLnNsaWNlKC0yKSk7cmV0dXJuIFQuam9pbigiIil9LERsPWxwLEVvPWZ1bmN0aW9uKGQsXyxtKXtmb3IodmFy'@; put 'IFQ9W10sUD1fO1A8bTtQKyspVC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobHMoZCxQKSkpO3JldHVybiBULmpvaW4oIiIpfSxCdT1FbyxOMT1mdW5jdGlvbihkLF8pe3ZhciBtPVFhKGQsXyk7cmV0dXJuIG0+MD9FbyhkLF8rNCxfKzQrbS0xKToiIn0sUnU9TjEsaGM9ZnVuY3Rpb24oZCxf'@; put 'KXt2YXIgbT1RYShkLF8pO3JldHVybiBtPjA/RW8oZCxfKzQsXys0K20tMSk6IiJ9LGVkPWhjLEpuPWZ1bmN0aW9uKGQsXyl7dmFyIG09MipRYShkLF8pO3JldHVybiBtPjA/RW8oZCxfKzQsXys0K20tMSk6IiJ9LGNsPUpuO21pPWV1PWZ1bmN0aW9uKF8sbSl7dmFyIFQ9UWEoXyxtKTtyZXR1'@; put 'cm4gVD4wP0pjKF8sbSs0LG0rNCtUKToiIn07dmFyIGlyLGdpLFNsPWZ1bmN0aW9uKGQsXyl7dmFyIG09UWEoZCxfKTtyZXR1cm4gbT4wP0VvKGQsXys0LF8rNCttKToiIn0sY249U2w7aXI9Z2k9ZnVuY3Rpb24oZCxfKXtyZXR1cm4gZnVuY3Rpb24gTG0oZCxfKXtmb3IodmFyIG09MS0yKihk'@; put 'W18rN10+Pj43KSxUPSgoMTI3JmRbXys3XSk8PDQpKyhkW18rNl0+Pj40JjE1KSxQPTE1JmRbXys2XSxRPTU7UT49MDstLVEpUD0yNTYqUCtkW18rUV07cmV0dXJuIDIwNDc9PVQ/MD09UD9tKigxLzApOk5hTjooMD09VD9UPS0xMDIyOihULT0xMDIzLFArPU1hdGgucG93KDIsNTIpKSxtKk1h'@; put 'dGgucG93KDIsVC01MikqUCl9KGQsXyl9O3ZhciB3bz1mdW5jdGlvbihfKXtyZXR1cm4gQXJyYXkuaXNBcnJheShfKX07SWUmJihKYz1mdW5jdGlvbihkLF8sbSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihkKT9kLnRvU3RyaW5nKCJ1dGYxNmxlIixfLG0pLnJlcGxhY2UoRCwiIik6Z2YoZCxf'@; put 'LG0pfSxscD1mdW5jdGlvbihkLF8sbSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihkKT9kLnRvU3RyaW5nKCJoZXgiLF8sXyttKTpEbChkLF8sbSl9LE4xPWZ1bmN0aW9uKF8sbSl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihfKSlyZXR1cm4gUnUoXyxtKTt2YXIgVD1fLnJlYWRVSW50MzJMRShtKTty'@; put 'ZXR1cm4gVD4wP18udG9TdHJpbmcoInV0ZjgiLG0rNCxtKzQrVC0xKToiIn0saGM9ZnVuY3Rpb24oXyxtKXtpZighQnVmZmVyLmlzQnVmZmVyKF8pKXJldHVybiBlZChfLG0pO3ZhciBUPV8ucmVhZFVJbnQzMkxFKG0pO3JldHVybiBUPjA/Xy50b1N0cmluZygidXRmOCIsbSs0LG0rNCtULTEp'@; put 'OiIifSxKbj1mdW5jdGlvbihfLG0pe2lmKCFCdWZmZXIuaXNCdWZmZXIoXykpcmV0dXJuIGNsKF8sbSk7dmFyIFQ9MipfLnJlYWRVSW50MzJMRShtKTtyZXR1cm4gXy50b1N0cmluZygidXRmMTZsZSIsbSs0LG0rNCtULTEpfSxtaT1mdW5jdGlvbihfLG0pe2lmKCFCdWZmZXIuaXNCdWZmZXIo'@; put 'XykpcmV0dXJuIGV1KF8sbSk7dmFyIFQ9Xy5yZWFkVUludDMyTEUobSk7cmV0dXJuIF8udG9TdHJpbmcoInV0ZjE2bGUiLG0rNCxtKzQrVCl9LFNsPWZ1bmN0aW9uKF8sbSl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihfKSlyZXR1cm4gY24oXyxtKTt2YXIgVD1fLnJlYWRVSW50MzJMRShtKTtyZXR1'@; put 'cm4gXy50b1N0cmluZygidXRmOCIsbSs0LG0rNCtUKX0sRW89ZnVuY3Rpb24oXyxtLFQpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoXyk/Xy50b1N0cmluZygidXRmOCIsbSxUKTpCdShfLG0sVCl9LG5oPWZ1bmN0aW9uKGQpe3JldHVybiBkWzBdLmxlbmd0aD4wJiZCdWZmZXIuaXNCdWZmZXIo'@; put 'ZFswXVswXSk/QnVmZmVyLmNvbmNhdChkWzBdKTp3ZyhkKX0sRz1mdW5jdGlvbihkKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGRbMF0pP0J1ZmZlci5jb25jYXQoZCk6W10uY29uY2F0LmFwcGx5KFtdLGQpfSxpcj1mdW5jdGlvbihfLG0pe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoXyk/Xy5y'@; put 'ZWFkRG91YmxlTEUobSk6Z2koXyxtKX0sd289ZnVuY3Rpb24oXyl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihfKXx8QXJyYXkuaXNBcnJheShfKX0pLHR5cGVvZiBjcHRhYmxlPCJ1IiYmKEpjPWZ1bmN0aW9uKGQsXyxtKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCxkLnNsaWNl'@; put 'KF8sbSkpLnJlcGxhY2UoRCwiIil9LEVvPWZ1bmN0aW9uKGQsXyxtKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsZC5zbGljZShfLG0pKX0sTjE9ZnVuY3Rpb24oZCxfKXt2YXIgbT1RYShkLF8pO3JldHVybiBtPjA/Y3B0YWJsZS51dGlscy5kZWNvZGUodyxkLnNsaWNlKF8r'@; put 'NCxfKzQrbS0xKSk6IiJ9LGhjPWZ1bmN0aW9uKGQsXyl7dmFyIG09UWEoZCxfKTtyZXR1cm4gbT4wP2NwdGFibGUudXRpbHMuZGVjb2RlKEMsZC5zbGljZShfKzQsXys0K20tMSkpOiIifSxKbj1mdW5jdGlvbihkLF8pe3ZhciBtPTIqUWEoZCxfKTtyZXR1cm4gbT4wP2NwdGFibGUudXRpbHMu'@; put 'ZGVjb2RlKDEyMDAsZC5zbGljZShfKzQsXys0K20tMSkpOiIifSxtaT1mdW5jdGlvbihkLF8pe3ZhciBtPVFhKGQsXyk7cmV0dXJuIG0+MD9jcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLGQuc2xpY2UoXys0LF8rNCttKSk6IiJ9LFNsPWZ1bmN0aW9uKGQsXyl7dmFyIG09UWEoZCxfKTtyZXR1'@; put 'cm4gbT4wP2NwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLGQuc2xpY2UoXys0LF8rNCttKSk6IiJ9KTt2YXIgbHM9ZnVuY3Rpb24oZCxfKXtyZXR1cm4gZFtfXX0sRXI9ZnVuY3Rpb24oZCxfKXtyZXR1cm4gMjU2KmRbXysxXStkW19dfSx0Yz1mdW5jdGlvbihkLF8pe3ZhciBtPTI1NipkW18r'@; put 'MV0rZFtfXTtyZXR1cm4gbTwzMjc2OD9tOi0xKig2NTUzNS1tKzEpfSxRYT1mdW5jdGlvbihkLF8pe3JldHVybiBkW18rM10qKDE8PDI0KSsoZFtfKzJdPDwxNikrKGRbXysxXTw8OCkrZFtfXX0sdWw9ZnVuY3Rpb24oZCxfKXtyZXR1cm4gZFtfKzNdPDwyNHxkW18rMl08PDE2fGRbXysxXTw8'@; put 'OHxkW19dfSxwcz1mdW5jdGlvbihkLF8pe3JldHVybiBkW19dPDwyNHxkW18rMV08PDE2fGRbXysyXTw8OHxkW18rM119O2Z1bmN0aW9uIHR1KGQsXyl7dmFyIFQsUCxzZSxvZSxkZSxMZSxtPSIiLFE9W107c3dpdGNoKF8pe2Nhc2UiZGJjcyI6aWYoTGU9dGhpcy5sLEllJiZCdWZmZXIuaXNC'@; put 'dWZmZXIodGhpcykpbT10aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrMipkKS50b1N0cmluZygidXRmMTZsZSIpO2Vsc2UgZm9yKGRlPTA7ZGU8ZDsrK2RlKW0rPVN0cmluZy5mcm9tQ2hhckNvZGUoRXIodGhpcyxMZSkpLExlKz0yO2QqPTI7YnJlYWs7Y2FzZSJ1dGY4IjptPUVvKHRoaXMsdGhp'@; put 'cy5sLHRoaXMubCtkKTticmVhaztjYXNlInV0ZjE2bGUiOm09SmModGhpcyx0aGlzLmwsdGhpcy5sKyhkKj0yKSk7YnJlYWs7Y2FzZSJ3c3RyIjppZighKHR5cGVvZiBjcHRhYmxlPCJ1IikpcmV0dXJuIHR1LmNhbGwodGhpcyxkLCJkYmNzIik7bT1jcHRhYmxlLnV0aWxzLmRlY29kZShDLHRo'@; put 'aXMuc2xpY2UodGhpcy5sLHRoaXMubCsyKmQpKSxkKj0yO2JyZWFrO2Nhc2UibHBzdHItYW5zaSI6bT1OMSh0aGlzLHRoaXMubCksZD00K1FhKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwc3RyLWNwIjptPWhjKHRoaXMsdGhpcy5sKSxkPTQrUWEodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2Ui'@; put 'bHB3c3RyIjptPUpuKHRoaXMsdGhpcy5sKSxkPTQrMipRYSh0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHA0IjpkPTQrUWEodGhpcyx0aGlzLmwpLG09bWkodGhpcyx0aGlzLmwpLDImZCYmKGQrPTIpO2JyZWFrO2Nhc2UiOGxwcDQiOmQ9NCtRYSh0aGlzLHRoaXMubCksbT1TbCh0aGlzLHRo'@; put 'aXMubCksMyZkJiYoZCs9NC0oMyZkKSk7YnJlYWs7Y2FzZSJjc3RyIjpmb3IoZD0wLG09IiI7MCE9PShzZT1scyh0aGlzLHRoaXMubCtkKyspKTspUS5wdXNoKFcoc2UpKTttPVEuam9pbigiIik7YnJlYWs7Y2FzZSJfd3N0ciI6Zm9yKGQ9MCxtPSIiOzAhPT0oc2U9RXIodGhpcyx0aGlzLmwr'@; put 'ZCkpOylRLnB1c2goVyhzZSkpLGQrPTI7ZCs9MixtPVEuam9pbigiIik7YnJlYWs7Y2FzZSJkYmNzLWNvbnQiOmZvcihtPSIiLExlPXRoaXMubCxkZT0wO2RlPGQ7KytkZSl7aWYodGhpcy5sZW5zJiYtMSE9PXRoaXMubGVucy5pbmRleE9mKExlKSlyZXR1cm4gc2U9bHModGhpcyxMZSksdGhp'@; put 'cy5sPUxlKzEsb2U9dHUuY2FsbCh0aGlzLGQtZGUsc2U/ImRiY3MtY29udCI6InNiY3MtY29udCIpLFEuam9pbigiIikrb2U7US5wdXNoKFcoRXIodGhpcyxMZSkpKSxMZSs9Mn1tPVEuam9pbigiIiksZCo9MjticmVhaztjYXNlImNwc3RyIjppZih0eXBlb2YgY3B0YWJsZTwidSIpe209Y3B0'@; put 'YWJsZS51dGlscy5kZWNvZGUoQyx0aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrZCkpO2JyZWFrfWNhc2Uic2Jjcy1jb250Ijpmb3IobT0iIixMZT10aGlzLmwsZGU9MDtkZSE9ZDsrK2RlKXtpZih0aGlzLmxlbnMmJi0xIT09dGhpcy5sZW5zLmluZGV4T2YoTGUpKXJldHVybiBzZT1scyh0aGlz'@; put 'LExlKSx0aGlzLmw9TGUrMSxvZT10dS5jYWxsKHRoaXMsZC1kZSxzZT8iZGJjcy1jb250Ijoic2Jjcy1jb250IiksUS5qb2luKCIiKStvZTtRLnB1c2goVyhscyh0aGlzLExlKSkpLExlKz0xfW09US5qb2luKCIiKTticmVhaztkZWZhdWx0OnN3aXRjaChkKXtjYXNlIDE6cmV0dXJuIFQ9bHMo'@; put 'dGhpcyx0aGlzLmwpLHRoaXMubCsrLFQ7Y2FzZSAyOnJldHVybiBUPSgiaSI9PT1fP3RjOkVyKSh0aGlzLHRoaXMubCksdGhpcy5sKz0yLFQ7Y2FzZSA0OmNhc2UtNDpyZXR1cm4iaSIhPT1fJiYxMjgmdGhpc1t0aGlzLmwrM10/KFA9UWEodGhpcyx0aGlzLmwpLHRoaXMubCs9NCxQKTooVD0o'@; put 'ZD4wP3VsOnBzKSh0aGlzLHRoaXMubCksdGhpcy5sKz00LFQpO2Nhc2UgODpjYXNlLTg6aWYoImYiPT09XylyZXR1cm4gUD04PT1kP2lyKHRoaXMsdGhpcy5sKTppcihbdGhpc1t0aGlzLmwrN10sdGhpc1t0aGlzLmwrNl0sdGhpc1t0aGlzLmwrNV0sdGhpc1t0aGlzLmwrNF0sdGhpc1t0aGlz'@; put 'LmwrM10sdGhpc1t0aGlzLmwrMl0sdGhpc1t0aGlzLmwrMV0sdGhpc1t0aGlzLmwrMF1dLDApLHRoaXMubCs9OCxQO2Q9ODtjYXNlIDE2Om09bHAodGhpcyx0aGlzLmwsZCl9fXJldHVybiB0aGlzLmwrPWQsbX12YXIgZ3M9ZnVuY3Rpb24oZCxfLG0pe2RbbV09MjU1Jl8sZFttKzFdPV8+Pj44'@; put 'JjI1NSxkW20rMl09Xz4+PjE2JjI1NSxkW20rM109Xz4+PjI0JjI1NX0sT2M9ZnVuY3Rpb24oZCxfLG0pe2RbbV09MjU1Jl8sZFttKzFdPV8+PjgmMjU1LGRbbSsyXT1fPj4xNiYyNTUsZFttKzNdPV8+PjI0JjI1NX0sTGw9ZnVuY3Rpb24oZCxfLG0pe2RbbV09MjU1Jl8sZFttKzFdPV8+Pj44'@; put 'JjI1NX07ZnVuY3Rpb24gQWgoZCxfLG0pe3ZhciBUPTAsUD0wO2lmKCJkYmNzIj09PW0pe2ZvcihQPTA7UCE9Xy5sZW5ndGg7KytQKUxsKHRoaXMsXy5jaGFyQ29kZUF0KFApLHRoaXMubCsyKlApO1Q9MipfLmxlbmd0aH1lbHNlIGlmKCJzYmNzIj09PW0pe2lmKHR5cGVvZiBjcHRhYmxlPCJ1'@; put 'IiYmODc0PT13KWZvcihQPTA7UCE9Xy5sZW5ndGg7KytQKXt2YXIgUT1jcHRhYmxlLnV0aWxzLmVuY29kZSh3LF8uY2hhckF0KFApKTt0aGlzW3RoaXMubCtQXT1RWzBdfWVsc2UgZm9yKF89Xy5yZXBsYWNlKC9bXlx4MDAtXHg3Rl0vZywiXyIpLFA9MDtQIT1fLmxlbmd0aDsrK1ApdGhpc1t0'@; put 'aGlzLmwrUF09MjU1Jl8uY2hhckNvZGVBdChQKTtUPV8ubGVuZ3RofWVsc2V7aWYoImhleCI9PT1tKXtmb3IoO1A8ZDsrK1ApdGhpc1t0aGlzLmwrK109cGFyc2VJbnQoXy5zbGljZSgyKlAsMipQKzIpLDE2KXx8MDtyZXR1cm4gdGhpc31pZigidXRmMTZsZSI9PT1tKXt2YXIgc2U9TWF0aC5t'@; put 'aW4odGhpcy5sK2QsdGhpcy5sZW5ndGgpO2ZvcihQPTA7UDxNYXRoLm1pbihfLmxlbmd0aCxkKTsrK1Ape3ZhciBvZT1fLmNoYXJDb2RlQXQoUCk7dGhpc1t0aGlzLmwrK109MjU1Jm9lLHRoaXNbdGhpcy5sKytdPW9lPj44fWZvcig7dGhpcy5sPHNlOyl0aGlzW3RoaXMubCsrXT0wO3JldHVy'@; put 'biB0aGlzfXN3aXRjaChkKXtjYXNlIDE6VD0xLHRoaXNbdGhpcy5sXT0yNTUmXzticmVhaztjYXNlIDI6VD0yLHRoaXNbdGhpcy5sXT0yNTUmXyx0aGlzW3RoaXMubCsxXT0yNTUmKF8+Pj49OCk7YnJlYWs7Y2FzZSAzOlQ9Myx0aGlzW3RoaXMubF09MjU1Jl8sdGhpc1t0aGlzLmwrMV09MjU1'@; put 'JihfPj4+PTgpLHRoaXNbdGhpcy5sKzJdPTI1NSYoXz4+Pj04KTticmVhaztjYXNlIDQ6VD00LGdzKHRoaXMsXyx0aGlzLmwpO2JyZWFrO2Nhc2UgODppZihUPTgsImYiPT09bSl7IWZ1bmN0aW9uIHUzKGQsXyxtKXt2YXIgVD0oXzwwfHwxL189PS0xLzA/MTowKTw8NyxQPTAsUT0wLHNlPVQ/'@; put 'LV86Xztpc0Zpbml0ZShzZSk/MD09c2U/UD1RPTA6KFA9TWF0aC5mbG9vcihNYXRoLmxvZyhzZSkvTWF0aC5MTjIpLFE9c2UqTWF0aC5wb3coMiw1Mi1QKSxQPD0tMTAyMyYmKCFpc0Zpbml0ZShRKXx8UTxNYXRoLnBvdygyLDUyKSk/UD0tMTAyMjooUS09TWF0aC5wb3coMiw1MiksUCs9MTAy'@; put 'MykpOihQPTIwNDcsUT1pc05hTihfKT8yNjk4NTowKTtmb3IodmFyIG9lPTA7b2U8PTU7KytvZSxRLz0yNTYpZFttK29lXT0yNTUmUTtkW20rNl09KDE1JlApPDw0fDE1JlEsZFttKzddPVA+PjR8VH0odGhpcyxfLHRoaXMubCk7YnJlYWt9Y2FzZSAxNjpicmVhaztjYXNlLTQ6VD00LE9jKHRo'@; put 'aXMsXyx0aGlzLmwpfX1yZXR1cm4gdGhpcy5sKz1ULHRoaXN9ZnVuY3Rpb24gSmgoZCxfKXt2YXIgbT1scCh0aGlzLHRoaXMubCxkLmxlbmd0aD4+MSk7aWYobSE9PWQpdGhyb3cgbmV3IEVycm9yKF8rIkV4cGVjdGVkICIrZCsiIHNhdyAiK20pO3RoaXMubCs9ZC5sZW5ndGg+PjF9ZnVuY3Rp'@; put 'b24gT2woZCxfKXtkLmw9XyxkLnJlYWRfc2hpZnQ9dHUsZC5jaGs9SmgsZC53cml0ZV9zaGlmdD1BaH1mdW5jdGlvbiBFYyhkLF8pe2QubCs9X31mdW5jdGlvbiBGcihkKXt2YXIgXz1YKGQpO3JldHVybiBPbChfLDApLF99ZnVuY3Rpb24gSXUoZCxfLG0pe2lmKGQpe3ZhciBULFAsUTtPbChk'@; put 'LGQubHx8MCk7Zm9yKHZhciBzZT1kLmxlbmd0aCxvZT0wLGRlPTA7ZC5sPHNlOyl7MTI4JihvZT1kLnJlYWRfc2hpZnQoMSkpJiYob2U9KDEyNyZvZSkrKCgxMjcmZC5yZWFkX3NoaWZ0KDEpKTw8NykpO3ZhciBMZT1aOVtvZV18fFo5WzY1NTM1XTtmb3IoUT0xMjcmKFQ9ZC5yZWFkX3NoaWZ0'@; put 'KDEpKSxQPTE7UDw0JiYxMjgmVDsrK1ApUSs9KDEyNyYoVD1kLnJlYWRfc2hpZnQoMSkpKTw8NypQO2RlPWQubCtRO3ZhciBOZT0oTGUuZnx8RWMpKGQsUSxtKTtpZihkLmw9ZGUsXyhOZSxMZS5uLG9lKSlyZXR1cm59fX1mdW5jdGlvbiBNYygpe3ZhciBkPVtdLF89SWU/MjU2OjIwNDgsbT1m'@; put 'dW5jdGlvbihMZSl7dmFyIE5lPUZyKExlKTtyZXR1cm4gT2woTmUsMCksTmV9LFQ9bShfKSxQPWZ1bmN0aW9uKCl7VCYmKFQubGVuZ3RoPlQubCYmKChUPVQuc2xpY2UoMCxULmwpKS5sPVQubGVuZ3RoKSxULmxlbmd0aD4wJiZkLnB1c2goVCksVD1udWxsKX0sUT1mdW5jdGlvbihMZSl7cmV0'@; put 'dXJuIFQmJkxlPFQubGVuZ3RoLVQubD9UOihQKCksVD1tKE1hdGgubWF4KExlKzEsXykpKX07cmV0dXJue25leHQ6USxwdXNoOmZ1bmN0aW9uKExlKXtQKCksbnVsbD09KFQ9TGUpLmwmJihULmw9VC5sZW5ndGgpLFEoXyl9LGVuZDpmdW5jdGlvbigpe3JldHVybiBQKCksbmgoW2RdKX0sX2J1'@; put 'ZnM6ZH19ZnVuY3Rpb24gSWkoZCxfLG0sVCl7dmFyIFEsUD0rQkJbX107aWYoIWlzTmFOKFApKXtUfHwoVD1aOVtQXS5wfHwobXx8W10pLmxlbmd0aHx8MCksUT0xKyhQPj0xMjg/MTowKSsxLFQ+PTEyOCYmKytRLFQ+PTE2Mzg0JiYrK1EsVD49MjA5NzE1MiYmKytRO3ZhciBzZT1kLm5leHQo'@; put 'USk7UDw9MTI3P3NlLndyaXRlX3NoaWZ0KDEsUCk6KHNlLndyaXRlX3NoaWZ0KDEsMTI4KygxMjcmUCkpLHNlLndyaXRlX3NoaWZ0KDEsUD4+NykpO2Zvcih2YXIgb2U9MDs0IT1vZTsrK29lKXtpZighKFQ+PTEyOCkpe3NlLndyaXRlX3NoaWZ0KDEsVCk7YnJlYWt9c2Uud3JpdGVfc2hpZnQo'@; put 'MSwxMjgrKDEyNyZUKSksVD4+PTd9VD4wJiZ3byhtKSYmZC5wdXNoKG0pfX1mdW5jdGlvbiByaChkLF8sbSl7dmFyIFQ9UXIoZCk7aWYoXy5zPyhULmNSZWwmJihULmMrPV8ucy5jKSxULnJSZWwmJihULnIrPV8ucy5yKSk6KFQuY1JlbCYmKFQuYys9Xy5jKSxULnJSZWwmJihULnIrPV8ucikp'@; put 'LCFtfHxtLmJpZmY8MTIpe2Zvcig7VC5jPj0yNTY7KVQuYy09MjU2O2Zvcig7VC5yPj02NTUzNjspVC5yLT02NTUzNn1yZXR1cm4gVH1mdW5jdGlvbiBuNShkLF8sbSl7dmFyIFQ9UXIoZCk7cmV0dXJuIFQucz1yaChULnMsXy5zLG0pLFQuZT1yaChULmUsXy5zLG0pLFR9ZnVuY3Rpb24gdjIo'@; put 'ZCxfKXtpZihkLmNSZWwmJmQuYzwwKWZvcihkPVFyKGQpO2QuYzwwOylkLmMrPV8+OD8xNjM4NDoyNTY7aWYoZC5yUmVsJiZkLnI8MClmb3IoZD1RcihkKTtkLnI8MDspZC5yKz1fPjg/MTA0ODU3NjpfPjU/NjU1MzY6MTYzODQ7aWYoZC5jUmVsJiZkLmM+PShfPjg/MTYzODQ6MjU2KSlmb3Io'@; put 'ZD1RcihkKTtkLmM+PShfPjg/MTYzODQ6MjU2KTspZC5jLT1fPjg/MTYzODQ6MjU2O2lmKGQuclJlbCYmZC5yPj0xMDQ4NTc2KWZvcihkPVFyKGQpO2Qucj49MTA0ODU3NjspZC5yLT0xMDQ4NTc2O3ZhciBtPXFpKGQpO3JldHVybiFkLmNSZWwmJm51bGwhPWQuY1JlbCYmKG09ZnVuY3Rpb24g'@; put 'RjEoZCl7cmV0dXJuIGQucmVwbGFjZSgvXihbQS1aXSkvLCIkJCQxIil9KG0pKSwhZC5yUmVsJiZudWxsIT1kLnJSZWwmJihtPWZ1bmN0aW9uIENnKGQpe3JldHVybiBkLnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfShtKSksbX1mdW5jdGlvbiB0ZChkLF8pe3JldHVybiAw'@; put 'IT1kLnMucnx8ZC5zLnJSZWx8fGQuZS5yIT0oXy5iaWZmPj0xMj8xMDQ4NTc1Ol8uYmlmZj49OD82NTUzNjoxNjM4NCl8fGQuZS5yUmVsPzAhPWQucy5jfHxkLnMuY1JlbHx8ZC5lLmMhPShfLmJpZmY+PTEyPzE2MzgzOjI1NSl8fGQuZS5jUmVsP3YyKGQucyxfLmJpZmYpKyI6Iit2MihkLmUs'@; put 'Xy5iaWZmKTooZC5zLnJSZWw/IiI6IiQiKSt6byhkLnMucikrIjoiKyhkLmUuclJlbD8iIjoiJCIpK3pvKGQuZS5yKTooZC5zLmNSZWw/IiI6IiQiKSttcyhkLnMuYykrIjoiKyhkLmUuY1JlbD8iIjoiJCIpK21zKGQuZS5jKX12YXIgTzA9e307ZnVuY3Rpb24gaWEoZCl7cmV0dXJuIHBhcnNl'@; put 'SW50KGZ1bmN0aW9uIF8yKGQpe3JldHVybiBkLnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX0oZCksMTApLTF9ZnVuY3Rpb24gem8oZCl7cmV0dXJuIiIrKGQrMSl9ZnVuY3Rpb24gVGMoZCl7Zm9yKHZhciBfPWZ1bmN0aW9uIE5tKGQpe3JldHVybiBkLnJlcGxhY2UoL15cJChbQS1aXSkvLCIk'@; put 'MSIpfShkKSxtPTAsVD0wO1QhPT1fLmxlbmd0aDsrK1QpbT0yNiptK18uY2hhckNvZGVBdChUKS02NDtyZXR1cm4gbS0xfWZ1bmN0aW9uIG1zKGQpe2lmKGQ8MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY29sdW1uICIrZCk7dmFyIF89IiI7Zm9yKCsrZDtkO2Q9TWF0aC5mbG9vcigoZC0x'@; put 'KS8yNikpXz1TdHJpbmcuZnJvbUNoYXJDb2RlKChkLTEpJTI2KzY1KStfO3JldHVybiBffWZ1bmN0aW9uIElzKGQpe2Zvcih2YXIgXz0wLG09MCxUPTA7VDxkLmxlbmd0aDsrK1Qpe3ZhciBQPWQuY2hhckNvZGVBdChUKTtQPj00OCYmUDw9NTc/Xz0xMCpfKyhQLTQ4KTpQPj02NSYmUDw9OTAm'@; put 'JihtPTI2Km0rKFAtNjQpKX1yZXR1cm57YzptLTEscjpfLTF9fWZ1bmN0aW9uIHFpKGQpe2Zvcih2YXIgXz1kLmMrMSxtPSIiO187Xz0oXy0xKS8yNnwwKW09U3RyaW5nLmZyb21DaGFyQ29kZSgoXy0xKSUyNis2NSkrbTtyZXR1cm4gbSsoZC5yKzEpfWZ1bmN0aW9uIHphKGQpe3ZhciBfPWQu'@; put 'aW5kZXhPZigiOiIpO3JldHVybi0xPT1fP3tzOklzKGQpLGU6SXMoZCl9OntzOklzKGQuc2xpY2UoMCxfKSksZTpJcyhkLnNsaWNlKF8rMSkpfX1mdW5jdGlvbiBodChkLF8pe3JldHVybiB0eXBlb2YgXz4idSJ8fCJudW1iZXIiPT10eXBlb2YgXz9odChkLnMsZC5lKTooInN0cmluZyIhPXR5'@; put 'cGVvZiBkJiYoZD1xaShkKSksInN0cmluZyIhPXR5cGVvZiBfJiYoXz1xaShfKSksZD09Xz9kOmQrIjoiK18pfWZ1bmN0aW9uIHl0KGQpe3ZhciBfPUpTT04ucGFyc2UoJ3sicyI6eyJjIjowLCJyIjowfSwiZSI6eyJjIjowLCJyIjowfX0nKSxtPTAsVD0wLFA9MCxRPWQubGVuZ3RoO2Zvciht'@; put 'PTA7VDxRJiYhKChQPWQuY2hhckNvZGVBdChUKS02NCk8MXx8UD4yNik7KytUKW09MjYqbStQO2ZvcihfLnMuYz0tLW0sbT0wO1Q8USYmISgoUD1kLmNoYXJDb2RlQXQoVCktNDgpPDB8fFA+OSk7KytUKW09MTAqbStQO2lmKF8ucy5yPS0tbSxUPT09UXx8NTg9PT1kLmNoYXJDb2RlQXQoKytU'@; put 'KSlyZXR1cm4gXy5lLmM9Xy5zLmMsXy5lLnI9Xy5zLnIsXztmb3IobT0wO1QhPVEmJiEoKFA9ZC5jaGFyQ29kZUF0KFQpLTY0KTwxfHxQPjI2KTsrK1QpbT0yNiptK1A7Zm9yKF8uZS5jPS0tbSxtPTA7VCE9USYmISgoUD1kLmNoYXJDb2RlQXQoVCktNDgpPDB8fFA+OSk7KytUKW09MTAqbStQ'@; put 'O3JldHVybiBfLmUucj0tLW0sX31mdW5jdGlvbiBqdChkLF8pe3ZhciBtPSJkIj09ZC50JiZfIGluc3RhbmNlb2YgRGF0ZTtpZihudWxsIT1kLnopdHJ5e3JldHVybiBkLnc9SS5mb3JtYXQoZC56LG0/S2UoXyk6Xyl9Y2F0Y2h7fXRyeXtyZXR1cm4gZC53PUkuZm9ybWF0KChkLlhGfHx7fSku'@; put 'bnVtRm10SWR8fChtPzE0OjApLG0/S2UoXyk6Xyl9Y2F0Y2h7cmV0dXJuIiIrX319ZnVuY3Rpb24genQoZCxfLG0pe3JldHVybiBudWxsPT1kfHxudWxsPT1kLnR8fCJ6Ij09ZC50PyIiOnZvaWQgMCE9PWQudz9kLnc6KCJkIj09ZC50JiYhZC56JiZtJiZtLmRhdGVORiYmKGQuej1tLmRhdGVO'@; put 'RiksImUiPT1kLnQ/bmxbZC52XXx8ZC52Omp0KGQsbnVsbD09Xz9kLnY6XykpfWZ1bmN0aW9uIG1uKGQsXyl7dmFyIG09XyYmXy5zaGVldD9fLnNoZWV0OiJTaGVldDEiLFQ9e307cmV0dXJuIFRbbV09ZCx7U2hlZXROYW1lczpbbV0sU2hlZXRzOlR9fWZ1bmN0aW9uIEZuKGQsXyxtKXt2YXIg'@; put 'VD1tfHx7fSxQPWQ/QXJyYXkuaXNBcnJheShkKTpULmRlbnNlLFE9ZHx8KFA/W106e30pLHNlPTAsb2U9MDtpZihRJiZudWxsIT1ULm9yaWdpbil7aWYoIm51bWJlciI9PXR5cGVvZiBULm9yaWdpbilzZT1ULm9yaWdpbjtlbHNle3ZhciBkZT0ic3RyaW5nIj09dHlwZW9mIFQub3JpZ2luP0lz'@; put 'KFQub3JpZ2luKTpULm9yaWdpbjtzZT1kZS5yLG9lPWRlLmN9UVsiIXJlZiJdfHwoUVsiIXJlZiJdPSJBMTpBMSIpfXZhciBMZT17czp7YzoxZTcscjoxZTd9LGU6e2M6MCxyOjB9fTtpZihRWyIhcmVmIl0pe3ZhciBOZT15dChRWyIhcmVmIl0pO0xlLnMuYz1OZS5zLmMsTGUucy5yPU5lLnMu'@; put 'cixMZS5lLmM9TWF0aC5tYXgoTGUuZS5jLE5lLmUuYyksTGUuZS5yPU1hdGgubWF4KExlLmUucixOZS5lLnIpLC0xPT1zZSYmKExlLmUucj1zZT1OZS5lLnIrMSl9Zm9yKHZhciBCZT0wO0JlIT1fLmxlbmd0aDsrK0JlKWlmKF9bQmVdKXtpZighQXJyYXkuaXNBcnJheShfW0JlXSkpdGhyb3cg'@; put 'bmV3IEVycm9yKCJhb2FfdG9fc2hlZXQgZXhwZWN0cyBhbiBhcnJheSBvZiBhcnJheXMiKTtmb3IodmFyIFplPTA7WmUhPV9bQmVdLmxlbmd0aDsrK1plKWlmKCEodHlwZW9mIF9bQmVdW1plXT4idSIpKXt2YXIgbnQ9e3Y6X1tCZV1bWmVdfSxtdD1zZStCZSxRZT1vZStaZTtpZihMZS5zLnI+'@; put 'bXQmJihMZS5zLnI9bXQpLExlLnMuYz5RZSYmKExlLnMuYz1RZSksTGUuZS5yPG10JiYoTGUuZS5yPW10KSxMZS5lLmM8UWUmJihMZS5lLmM9UWUpLCFfW0JlXVtaZV18fCJvYmplY3QiIT10eXBlb2YgX1tCZV1bWmVdfHxBcnJheS5pc0FycmF5KF9bQmVdW1plXSl8fF9bQmVdW1plXWluc3Rh'@; put 'bmNlb2YgRGF0ZSlpZihBcnJheS5pc0FycmF5KG50LnYpJiYobnQuZj1fW0JlXVtaZV1bMV0sbnQudj1udC52WzBdKSxudWxsPT09bnQudilpZihudC5mKW50LnQ9Im4iO2Vsc2UgaWYoVC5udWxsRXJyb3IpbnQudD0iZSIsbnQudj0wO2Vsc2V7aWYoIVQuc2hlZXRTdHVicyljb250aW51ZTtu'@; put 'dC50PSJ6In1lbHNlIm51bWJlciI9PXR5cGVvZiBudC52P250LnQ9Im4iOiJib29sZWFuIj09dHlwZW9mIG50LnY/bnQudD0iYiI6bnQudiBpbnN0YW5jZW9mIERhdGU/KG50Lno9VC5kYXRlTkZ8fEkuX3RhYmxlWzE0XSxULmNlbGxEYXRlcz8obnQudD0iZCIsbnQudz1JLmZvcm1hdChudC56'@; put 'LEtlKG50LnYpKSk6KG50LnQ9Im4iLG50LnY9S2UobnQudiksbnQudz1JLmZvcm1hdChudC56LG50LnYpKSk6bnQudD0icyI7ZWxzZSBudD1fW0JlXVtaZV07aWYobnQmJm50LmgpdHJ5e250LlI9a2YuaHRtbF90b19ycyhudC5oKSxudC52PSIiO2Zvcih2YXIgZnQ9MDtmdDxudC5SLmxlbmd0'@; put 'aDsrK2Z0KW50LnYrPW50LlJbZnRdLnZ8fCIifWNhdGNoe31pZihQKVFbbXRdfHwoUVttdF09W10pLFFbbXRdW1FlXSYmUVttdF1bUWVdLnMmJihudC5zPVFbbXRdW1FlXS5zKSxRW210XVtRZV0mJlFbbXRdW1FlXS56JiYobnQuej1RW210XVtRZV0ueiksUVttdF1bUWVdPW50O2Vsc2V7dmFy'@; put 'IGt0PXFpKHtjOlFlLHI6bXR9KTtRW2t0XSYmUVtrdF0ucyYmKG50LnM9UVtrdF0ucyksUVtrdF0mJlFba3RdLnomJihudC56PVFba3RdLnopLFFba3RdPW50fX19cmV0dXJuIExlLnMuYzwxZTcmJihRWyIhcmVmIl09aHQoTGUpKSxRfWZ1bmN0aW9uIFFuKGQsXyl7cmV0dXJuIEZuKG51bGws'@; put 'ZCxfKX1mdW5jdGlvbiBscihkLF8pe3JldHVybiBffHwoXz1Gcig0KSksXy53cml0ZV9zaGlmdCg0LGQpLF99ZnVuY3Rpb24gaWkoZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDQpO3JldHVybiAwPT09Xz8iIjpkLnJlYWRfc2hpZnQoXywiZGJjcyIpfWZ1bmN0aW9uIGtpKGQsXyl7dmFyIG09ITE7'@; put 'cmV0dXJuIG51bGw9PV8mJihtPSEwLF89RnIoNCsyKmQubGVuZ3RoKSksXy53cml0ZV9zaGlmdCg0LGQubGVuZ3RoKSxkLmxlbmd0aD4wJiZfLndyaXRlX3NoaWZ0KDAsZCwiZGJjcyIpLG0/Xy5zbGljZSgwLF8ubCk6X31mdW5jdGlvbiBLaShkKXtyZXR1cm57aWNoOmQucmVhZF9zaGlmdCgy'@; put 'KSxpZm50OmQucmVhZF9zaGlmdCgyKX19ZnVuY3Rpb24gUm8oZCxfKXt2YXIgbT1kLmwsVD1kLnJlYWRfc2hpZnQoMSksUD1paShkKSxRPVtdLHNlPXt0OlAsaDpQfTtpZigxJlQpe2Zvcih2YXIgb2U9ZC5yZWFkX3NoaWZ0KDQpLGRlPTA7ZGUhPW9lOysrZGUpUS5wdXNoKEtpKGQpKTtzZS5y'@; put 'PVF9ZWxzZSBzZS5yPVt7aWNoOjAsaWZudDowfV07cmV0dXJuIGQubD1tK18sc2V9IWZ1bmN0aW9uKGQsXyl7dmFyIG07aWYodHlwZW9mIGNyeXB0b0Jyb3dzZXJpZnk8InUiKW09Y3J5cHRvQnJvd3NlcmlmeTtlbHNlIGlmKHR5cGVvZiBfPCJ1IiltPV87ZWxzZSB0cnl7bT1oKDI4MjY3KX1j'@; put 'YXRjaHttPW51bGx9ZC5yYzQ9ZnVuY3Rpb24oVCxQKXt2YXIgUT1uZXcgQXJyYXkoMjU2KSxzZT0wLG9lPTAsZGU9MCxMZT0wO2ZvcihvZT0wOzI1NiE9b2U7KytvZSlRW29lXT1vZTtmb3Iob2U9MDsyNTYhPW9lOysrb2UpZGU9ZGUrUVtvZV0rVFtvZSVULmxlbmd0aF0uY2hhckNvZGVBdCgw'@; put 'KSYyNTUsTGU9UVtvZV0sUVtvZV09UVtkZV0sUVtkZV09TGU7b2U9ZGU9MDt2YXIgTmU9WChQLmxlbmd0aCk7Zm9yKHNlPTA7c2UhPVAubGVuZ3RoOysrc2UpTGU9UVtvZT1vZSsxJjI1NV0sUVtvZV09UVtkZT0oZGUrUVtvZV0pJTI1Nl0sUVtkZV09TGUsTmVbc2VdPVBbc2VdXlFbUVtvZV0r'@; put 'UVtkZV0mMjU1XTtyZXR1cm4gTmV9LGQubWQ1PWZ1bmN0aW9uKFQpe2lmKCFtKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY3J5cHRvIik7cmV0dXJuIG0uY3JlYXRlSGFzaCgibWQ1IikudXBkYXRlKEJ1ZmZlci5mcm9tKFQpKS5kaWdlc3QoImhleCIpfX0oTzAsdHlwZW9mIGNyeXB0'@; put 'bzwidSI/Y3J5cHRvOnZvaWQgMCk7dmFyIG9yPVJvO2Z1bmN0aW9uIHNuKGQpe3ZhciBfPWQucmVhZF9zaGlmdCg0KSxtPWQucmVhZF9zaGlmdCgyKTtyZXR1cm4gbSs9ZC5yZWFkX3NoaWZ0KDEpPDwxNixkLmwrKyx7YzpfLGlTdHlsZVJlZjptfX1mdW5jdGlvbiBpbyhkLF8pe3JldHVybiBu'@; put 'dWxsPT1fJiYoXz1Gcig4KSksXy53cml0ZV9zaGlmdCgtNCxkLmMpLF8ud3JpdGVfc2hpZnQoMyxkLmlTdHlsZVJlZnx8ZC5zKSxfLndyaXRlX3NoaWZ0KDEsMCksX31mdW5jdGlvbiBEYShkKXt2YXIgXz1kLnJlYWRfc2hpZnQoMik7cmV0dXJuIF8rPWQucmVhZF9zaGlmdCgxKTw8MTYsZC5s'@; put 'Kysse2M6LTEsaVN0eWxlUmVmOl99fWZ1bmN0aW9uIG5zKGQsXyl7cmV0dXJuIG51bGw9PV8mJihfPUZyKDQpKSxfLndyaXRlX3NoaWZ0KDMsZC5pU3R5bGVSZWZ8fGQucyksXy53cml0ZV9zaGlmdCgxLDApLF99dmFyIEVsPWlpLFdjPWtpO2Z1bmN0aW9uIG5jKGQpe3ZhciBfPWQucmVhZF9z'@; put 'aGlmdCg0KTtyZXR1cm4gMD09PV98fDQyOTQ5NjcyOTU9PT1fPyIiOmQucmVhZF9zaGlmdChfLCJkYmNzIil9ZnVuY3Rpb24geTIoZCxfKXt2YXIgbT0hMTtyZXR1cm4gbnVsbD09XyYmKG09ITAsXz1GcigxMjcpKSxfLndyaXRlX3NoaWZ0KDQsZC5sZW5ndGg+MD9kLmxlbmd0aDo0Mjk0OTY3'@; put 'Mjk1KSxkLmxlbmd0aD4wJiZfLndyaXRlX3NoaWZ0KDAsZCwiZGJjcyIpLG0/Xy5zbGljZSgwLF8ubCk6X312YXIgRHU9aWksZTE9bmMsdDE9eTI7ZnVuY3Rpb24gYmQoZCl7dmFyIF89ZC5zbGljZShkLmwsZC5sKzQpLG09MSZfWzBdLFQ9MiZfWzBdO2QubCs9NCxfWzBdJj0yNTI7dmFyIFA9'@; put 'MD09PVQ/aXIoWzAsMCwwLDAsX1swXSxfWzFdLF9bMl0sX1szXV0sMCk6dWwoXywwKT4+MjtyZXR1cm4gbT9QLzEwMDpQfWZ1bmN0aW9uIHMwKGQsXyl7bnVsbD09XyYmKF89RnIoNCkpO3ZhciBtPTAsVD0wLFA9MTAwKmQ7aWYoZD09KDB8ZCkmJmQ+PS0oMTw8MjkpJiZkPDE8PDI5P1Q9MTpQ'@; put 'PT0oMHxQKSYmUD49LSgxPDwyOSkmJlA8MTw8MjkmJihUPTEsbT0xKSwhVCl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIFJrTnVtYmVyICIrZCk7Xy53cml0ZV9zaGlmdCgtNCwoKG0/UDpkKTw8MikrKG0rMikpfWZ1bmN0aW9uIGIyKGQpe3ZhciBfPXtzOnt9LGU6e319O3JldHVybiBf'@; put 'LnMucj1kLnJlYWRfc2hpZnQoNCksXy5lLnI9ZC5yZWFkX3NoaWZ0KDQpLF8ucy5jPWQucmVhZF9zaGlmdCg0KSxfLmUuYz1kLnJlYWRfc2hpZnQoNCksX312YXIganU9YjIsQmQ9ZnVuY3Rpb24ga2goZCxfKXtyZXR1cm4gX3x8KF89RnIoMTYpKSxfLndyaXRlX3NoaWZ0KDQsZC5zLnIpLF8u'@; put 'd3JpdGVfc2hpZnQoNCxkLmUuciksXy53cml0ZV9zaGlmdCg0LGQucy5jKSxfLndyaXRlX3NoaWZ0KDQsZC5lLmMpLF99O2Z1bmN0aW9uIHcyKGQpe2Zvcih2YXIgXz1kLnJlYWRfc2hpZnQoNCksbT1bXSxUPTA7VDxfOysrVCl7dmFyIFA9anUoZCk7bS5wdXNoKGh0KFApKX1yZXR1cm4gbS5q'@; put 'b2luKCIsIil9ZnVuY3Rpb24gcXMoZCl7aWYoZC5sZW5ndGgtZC5sPDgpdGhyb3ciWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvdyI7cmV0dXJuIGQucmVhZF9zaGlmdCg4LCJmIil9ZnVuY3Rpb24gSmEoZCxfKXtyZXR1cm4oX3x8RnIoOCkpLndyaXRlX3NoaWZ0KDgsZCwiZiIpfWZ1bmN0aW9u'@; put 'IE5sKGQpe3ZhciBfPXt9LFQ9ZC5yZWFkX3NoaWZ0KDEpPj4+MSxQPWQucmVhZF9zaGlmdCgxKSxRPWQucmVhZF9zaGlmdCgyLCJpIiksc2U9ZC5yZWFkX3NoaWZ0KDEpLG9lPWQucmVhZF9zaGlmdCgxKSxkZT1kLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGQubCsrLFQpe2Nhc2UgMDpfLmF1dG89'@; put 'MTticmVhaztjYXNlIDE6Xy5pbmRleD1QO3ZhciBMZT13ZFtQXTtMZSYmKF8ucmdiPWIzKExlKSk7YnJlYWs7Y2FzZSAyOl8ucmdiPWIzKFtzZSxvZSxkZV0pO2JyZWFrO2Nhc2UgMzpfLnRoZW1lPVB9cmV0dXJuIDAhPVEmJihfLnRpbnQ9UT4wP1EvMzI3Njc6US8zMjc2OCksX31mdW5jdGlv'@; put 'biBuMShkLF8pe2lmKF98fChfPUZyKDgpKSwhZHx8ZC5hdXRvKXJldHVybiBfLndyaXRlX3NoaWZ0KDQsMCksXy53cml0ZV9zaGlmdCg0LDApLF87bnVsbCE9ZC5pbmRleD8oXy53cml0ZV9zaGlmdCgxLDIpLF8ud3JpdGVfc2hpZnQoMSxkLmluZGV4KSk6bnVsbCE9ZC50aGVtZT8oXy53cml0'@; put 'ZV9zaGlmdCgxLDYpLF8ud3JpdGVfc2hpZnQoMSxkLnRoZW1lKSk6KF8ud3JpdGVfc2hpZnQoMSw1KSxfLndyaXRlX3NoaWZ0KDEsMCkpO3ZhciBtPWQudGludHx8MDtpZihtPjA/bSo9MzI3Njc6bTwwJiYobSo9MzI3NjgpLF8ud3JpdGVfc2hpZnQoMixtKSxkLnJnYiYmbnVsbD09ZC50aGVt'@; put 'ZSl7dmFyIFQ9ZC5yZ2J8fCJGRkZGRkYiOyJudW1iZXIiPT10eXBlb2YgVCYmKFQ9KCIwMDAwMDAiK1QudG9TdHJpbmcoMTYpKS5zbGljZSgtNikpLF8ud3JpdGVfc2hpZnQoMSxwYXJzZUludChULnNsaWNlKDAsMiksMTYpKSxfLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQoVC5zbGljZSgyLDQp'@; put 'LDE2KSksXy53cml0ZV9zaGlmdCgxLHBhcnNlSW50KFQuc2xpY2UoNCw2KSwxNikpLF8ud3JpdGVfc2hpZnQoMSwyNTUpfWVsc2UgXy53cml0ZV9zaGlmdCgyLDApLF8ud3JpdGVfc2hpZnQoMSwwKSxfLndyaXRlX3NoaWZ0KDEsMCk7cmV0dXJuIF99ZnVuY3Rpb24gamQoZCl7dmFyIF89ZC5y'@; put 'ZWFkX3NoaWZ0KDEpO3JldHVybiBkLmwrKyx7ZkJvbGQ6MSZfLGZJdGFsaWM6MiZfLGZVbmRlcmxpbmU6NCZfLGZTdHJpa2VvdXQ6OCZfLGZPdXRsaW5lOjE2Jl8sZlNoYWRvdzozMiZfLGZDb25kZW5zZTo2NCZfLGZFeHRlbmQ6MTI4Jl99fWZ1bmN0aW9uIHIxKGQsXyl7dmFyIFQ9ZC5yZWFk'@; put 'X3NoaWZ0KDQpO3N3aXRjaChUKXtjYXNlIDA6cmV0dXJuIiI7Y2FzZSA0Mjk0OTY3Mjk1OmNhc2UgNDI5NDk2NzI5NDpyZXR1cm57MjoiQklUTUFQIiwzOiJNRVRBRklMRVBJQ1QiLDg6IkRJQiIsMTQ6IkVOSE1FVEFGSUxFIn1bZC5yZWFkX3NoaWZ0KDQpXXx8IiJ9aWYoVD40MDApdGhyb3cg'@; put 'bmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDbGlwYm9hcmQ6ICIrVC50b1N0cmluZygxNikpO3JldHVybiBkLmwtPTQsZC5yZWFkX3NoaWZ0KDAsMT09Xz8ibHBzdHIiOiJscHdzdHIiKX12YXIgcjU9WzgwLDgxXSx1cD17MTp7bjoiQ29kZVBhZ2UiLHQ6Mn0sMjp7bjoiQ2F0ZWdvcnkiLHQ6ODB9'@; put 'LDM6e246IlByZXNlbnRhdGlvbkZvcm1hdCIsdDo4MH0sNDp7bjoiQnl0ZUNvdW50Iix0OjN9LDU6e246IkxpbmVDb3VudCIsdDozfSw2OntuOiJQYXJhZ3JhcGhDb3VudCIsdDozfSw3OntuOiJTbGlkZUNvdW50Iix0OjN9LDg6e246Ik5vdGVDb3VudCIsdDozfSw5OntuOiJIaWRkZW5Db3Vu'@; put 'dCIsdDozfSwxMDp7bjoiTXVsdGltZWRpYUNsaXBDb3VudCIsdDozfSwxMTp7bjoiU2NhbGVDcm9wIix0OjExfSwxMjp7bjoiSGVhZGluZ1BhaXJzIix0OjQxMDh9LDEzOntuOiJUaXRsZXNPZlBhcnRzIix0OjQxMjZ9LDE0OntuOiJNYW5hZ2VyIix0OjgwfSwxNTp7bjoiQ29tcGFueSIsdDo4'@; put 'MH0sMTY6e246IkxpbmtzVXBUb0RhdGUiLHQ6MTF9LDE3OntuOiJDaGFyYWN0ZXJDb3VudCIsdDozfSwxOTp7bjoiU2hhcmVkRG9jIix0OjExfSwyMjp7bjoiSHlwZXJsaW5rc0NoYW5nZWQiLHQ6MTF9LDIzOntuOiJBcHBWZXJzaW9uIix0OjMscDoidmVyc2lvbiJ9LDI0OntuOiJEaWdTaWci'@; put 'LHQ6NjV9LDI2OntuOiJDb250ZW50VHlwZSIsdDo4MH0sMjc6e246IkNvbnRlbnRTdGF0dXMiLHQ6ODB9LDI4OntuOiJMYW5ndWFnZSIsdDo4MH0sMjk6e246IlZlcnNpb24iLHQ6ODB9LDI1NTp7fSwyMTQ3NDgzNjQ4OntuOiJMb2NhbGUiLHQ6MTl9LDIxNDc0ODM2NTE6e246IkJlaGF2aW9y'@; put 'Iix0OjE5fSwxOTE5MDU0NDM0Ont9fSxjMD17MTp7bjoiQ29kZVBhZ2UiLHQ6Mn0sMjp7bjoiVGl0bGUiLHQ6ODB9LDM6e246IlN1YmplY3QiLHQ6ODB9LDQ6e246IkF1dGhvciIsdDo4MH0sNTp7bjoiS2V5d29yZHMiLHQ6ODB9LDY6e246IkNvbW1lbnRzIix0OjgwfSw3OntuOiJUZW1wbGF0'@; put 'ZSIsdDo4MH0sODp7bjoiTGFzdEF1dGhvciIsdDo4MH0sOTp7bjoiUmV2TnVtYmVyIix0OjgwfSwxMDp7bjoiRWRpdFRpbWUiLHQ6NjR9LDExOntuOiJMYXN0UHJpbnRlZCIsdDo2NH0sMTI6e246IkNyZWF0ZWREYXRlIix0OjY0fSwxMzp7bjoiTW9kaWZpZWREYXRlIix0OjY0fSwxNDp7bjoi'@; put 'UGFnZUNvdW50Iix0OjN9LDE1OntuOiJXb3JkQ291bnQiLHQ6M30sMTY6e246IkNoYXJDb3VudCIsdDozfSwxNzp7bjoiVGh1bWJuYWlsIix0OjcxfSwxODp7bjoiQXBwbGljYXRpb24iLHQ6ODB9LDE5OntuOiJEb2NTZWN1cml0eSIsdDozfSwyNTU6e30sMjE0NzQ4MzY0ODp7bjoiTG9jYWxl'@; put 'Iix0OjE5fSwyMTQ3NDgzNjUxOntuOiJCZWhhdmlvciIsdDoxOX0sMTkxOTA1NDQzNDp7fX0sUG09Z2UodXAsIm4iKSxpMT1nZShjMCwibiIpLGk4PXsxOiJVUyIsMjoiQ0EiLDM6IiIsNzoiUlUiLDIwOiJFRyIsMzA6IkdSIiwzMToiTkwiLDMyOiJCRSIsMzM6IkZSIiwzNDoiRVMiLDM2OiJI'@; put 'VSIsMzk6IklUIiw0MToiQ0giLDQzOiJBVCIsNDQ6IkdCIiw0NToiREsiLDQ2OiJTRSIsNDc6Ik5PIiw0ODoiUEwiLDQ5OiJERSIsNTI6Ik1YIiw1NToiQlIiLDYxOiJBVSIsNjQ6Ik5aIiw2NjoiVEgiLDgxOiJKUCIsODI6IktSIiw4NDoiVk4iLDg2OiJDTiIsOTA6IlRSIiwxMDU6IkpTIiwy'@; put 'MTM6IkRaIiwyMTY6Ik1BIiwyMTg6IkxZIiwzNTE6IlBUIiwzNTQ6IklTIiwzNTg6IkZJIiw0MjA6IkNaIiw4ODY6IlRXIiw5NjE6IkxCIiw5NjI6IkpPIiw5NjM6IlNZIiw5NjQ6IklRIiw5NjU6IktXIiw5NjY6IlNBIiw5NzE6IkFFIiw5NzI6IklMIiw5NzQ6IlFBIiw5ODE6IklSIiw2NTUz'@; put 'NToiVVMifSxvOD1bbnVsbCwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVy'@; put 'dGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il07ZnVuY3Rpb24gU2coZCl7cmV0dXJuIGQubWFwKGZ1bmN0aW9uKF8pe3JldHVybltfPj4xNiYyNTUsXz4+OCYyNTUsMjU1Jl9dfSl9dmFyIEhtPVNnKFsw'@; put 'LDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSw4Mzg4NjA4LDMyNzY4LDEyOCw4NDIxMzc2LDgzODg3MzYsMzI4OTYsMTI2MzIyNTYsODQyMTUwNCwx'@; put 'MDA2NjQzMSwxMDA0MDE2NiwxNjc3NzE2NCwxMzQzNDg3OSw2Njg0Nzc0LDE2NzQ0NTc2LDI2MzE2LDEzNDIxODIzLDEyOCwxNjcxMTkzNSwxNjc3Njk2MCw2NTUzNSw4Mzg4NzM2LDgzODg2MDgsMzI4OTYsMjU1LDUyNDc5LDEzNDM0ODc5LDEzNDM0ODI4LDE2Nzc3MTEzLDEwMDc5NDg3LDE2'@; put 'NzUxMDUyLDEzNDA4NzY3LDE2NzY0MDU3LDMzNjg3MDMsMzM5NDc2NCwxMDA3OTIzMiwxNjc2MzkwNCwxNjc1MDg0OCwxNjczNzc5Miw2NzEwOTM3LDk4Njg5NTAsMTMxNTgsMzM4MTYwNiwxMzA1NiwzMzU1MzkyLDEwMDQwMDY0LDEwMDQwMTY2LDMzNTU1NDUsMzM1NTQ0MywwLDE2Nzc3MjE1'@; put 'LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSx3ZD1RcihIbSksaTU9U2coWzEyNjMyMjU2LDk4Njg5NTAsODQyMTUwNCw2NzEwODg2LDMzNTU0NDMsMTY3MTE2ODAsMzI3NjgsMTMzNjk0OTcsMTI4LDMzOTQ1NjAsMjYzNjcsMTAwMjcyMTIsMTAwNTMxNzEsMTI4LDMyNzY4LDgz'@; put 'ODg2MDgsMzI4OTYsODM4ODczNiw4NDIxMzc2LDEzNjMxNDg4LDE0NTM5OTk0LDEzMDY4ODUwLDEzOTI0MzUyLDk5Njc0OTYsOTE3NTI2Nyw5MTk1MDA4LDM2ODM1MzcsMTA2OTI1OCw4ODgwODk5LDc0OTQ2NCwyODkzNDc2LDExNzQ1NzMwLDM3NTAyMDEsMTU1NTk1MDMsMTgzNzk0MSwxMjA4'@; put 'NDM1OSw3NjMyMjUwLDczNjMzMjgsOTUxNDU4OCw4Mjg4NjE3LDMwMzY4MTQsMTExODQ4MTBdKSxubD17MDoiI05VTEwhIiw3OiIjRElWLzAhIiwxNToiI1ZBTFVFISIsMjM6IiNSRUYhIiwyOToiI05BTUU/IiwzNjoiI05VTSEiLDQyOiIjTi9BIiw0MzoiI0dFVFRJTkdfREFUQSIsMjU1OiIj'@; put 'V1RGPyJ9LEgxPWhlKG5sKSxkcD17ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3MiOiJUT0RPIiwiYXBwbGljYXRp'@; put 'b24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiOiJjb3JlcHJvcHMiLCJhcHBsaWNh'@; put 'dGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tLXByb3BlcnRpZXMreG1sIjoiY3VzdHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIjoiZXh0cHJvcHMiLCJhcHBsaWNh'@; put 'dGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tWG1sUHJvcGVydGllcyt4bWwiOiJjdXN0b214bWxwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5IjoiVE9ETyIs'@; put 'ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIjoicGl2b3RzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWwiOiJwaXZvdHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMt'@; put 'b2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbCI6ImNoYXJ0b2JqcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbCI6ImNoYXJ0Y29sb3JzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydHN0eWxlK3htbCI6ImNoYXJ0c3R5bGVz'@; put 'IiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGV4K3htbCI6ImNoYXJ0ZXhzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpbiI6ImNhbGNjaGFpbnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5j'@; put 'YWxjQ2hhaW4reG1sIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJTZXR0aW5ncyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgiOiJUT0RPIiwiYXBwbGljYXRp'@; put 'b24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMiOiJjb25ucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0'@; put 'cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3htbCI6ImNvbm5zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayI6ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwu'@; put 'ZXh0ZXJuYWxMaW5rK3htbCI6ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGEiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRNZXRhZGF0YSt4bWwiOiJUT0RPIiwiYXBw'@; put 'bGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0aW9uIjoicGl2b3RjYWNoZXMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMiOiJwaXZvdHJlY29yZHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQu'@; put 'c3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWwiOiJwaXZvdGNhY2hlcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbCI6InBpdm90cmVjb3JkcyIsImFwcGxpY2F0aW9u'@; put 'L3ZuZC5tcy1leGNlbC5xdWVyeVRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1ZXJ5VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC51c2VyTmFtZXMiOiJUT0RPIiwiYXBw'@; put 'bGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uSGVhZGVycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25Mb2ciOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25IZWFk'@; put 'ZXJzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkxvZyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNl'@; put 'ck5hbWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGVTaW5nbGVDZWxscyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZVNpbmdsZUNlbGxzK3htbCI6IlRPRE8iLCJhcHBs'@; put 'aWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUr'@; put 'eG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53c1NvcnRNYXAiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlIjoidGFibGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUr'@; put 'eG1sIjoidGFibGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCI6InRoZW1lcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlv'@; put 'bi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiOiJ2YmEiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVBy'@; put 'b2plY3RTaWduYXR1cmUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWwi'@; put 'OiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbCI6ImN0cmxwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhIjoiZGF0YW1vZGVscyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNl'@; put 'bC5TdXJ2ZXkreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbCI6ImRyYXdpbmdzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWwi'@; put 'OiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtQ29sb3JzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1EYXRhK3htbCI6'@; put 'IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1MYXlvdXQreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbVN0eWxlK3htbCI6'@; put 'IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCI6InJlbHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZv'@; put 'cm1hdHMtb2ZmaWNlZG9jdW1lbnQub2xlT2JqZWN0IjoiVE9ETyIsImltYWdlL3BuZyI6IlRPRE8iLHNoZWV0OiJqcyJ9LGE4PWZ1bmN0aW9uKCl7dmFyIGQ9e3dvcmtib29rczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0'@; put 'bWwuc2hlZXQubWFpbit4bWwiLHhsc206ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQubWFpbit4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW4iLHhsYW06ImFwcGxpY2F0aW9uL3ZuZC5t'@; put 'cy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWwiLHhsdHg6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sIn0sc3Ryczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRz'@; put 'LW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGFyZWRTdHJpbmdzIn0sY29tbWVudHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRz'@; put 'aGVldG1sLmNvbW1lbnRzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzIn0sc2hlZXRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIix4bHNiOiJhcHBsaWNh'@; put 'dGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0In0sY2hhcnRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNoYXJ0c2hlZXQifSxk'@; put 'aWFsb2dzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5kaWFsb2dzaGVldCJ9LG1hY3Jvczp7eGxzeDoiYXBwbGljYXRpb24vdm5k'@; put 'Lm1zLWV4Y2VsLm1hY3Jvc2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCJ9LHRhYmxlczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sIix4bHNiOiJhcHBs'@; put 'aWNhdGlvbi92bmQubXMtZXhjZWwudGFibGUifSxwaXZvdHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RUYWJsZSJ9LHBp'@; put 'dm90Y2FjaGVzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvbiJ9LHBpdm90cmVj'@; put 'b3Jkczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMifSxjb25uczp7eGxzeDoiYXBwbGlj'@; put 'YXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMifSxsaW5rczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmlj'@; put 'ZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayJ9LHN0eWxlczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5'@; put 'bGVzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnN0eWxlcyJ9fTtyZXR1cm4gRmUoZCkuZm9yRWFjaChmdW5jdGlvbihfKXtbInhsc20iLCJ4bGFtIl0uZm9yRWFjaChmdW5jdGlvbihtKXtkW19dW21dfHwoZFtfXVttXT1kW19dLnhsc3gpfSl9KSxGZShkKS5mb3JFYWNo'@; put 'KGZ1bmN0aW9uKF8pe0ZlKGRbX10pLmZvckVhY2goZnVuY3Rpb24obSl7ZHBbZFtfXVttXV09X30pfSksZH0oKSxzOD1mdW5jdGlvbiB3ZShkKXtmb3IodmFyIF89W10sbT1GZShkKSxUPTA7VCE9PW0ubGVuZ3RoOysrVCludWxsPT1fW2RbbVtUXV1dJiYoX1tkW21bVF1dXT1bXSksX1tkW21b'@; put 'VF1dXS5wdXNoKG1bVF0pO3JldHVybiBffShkcCk7VWEuQ1Q9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcyI7dmFyIGgzPVZyKCJUeXBlcyIsbnVsbCx7eG1sbnM6VWEuQ1QsInhtbG5zOnhzZCI6VWEueHNkLCJ4bWxuczp4c2ki'@; put 'OlVhLnhzaX0pLGw4PVtbInhtbCIsImFwcGxpY2F0aW9uL3htbCJdLFsiYmluIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiJdLFsidm1sIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERy'@; put 'YXdpbmciXSxbImRhdGEiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YSJdLFsiYm1wIiwiaW1hZ2UvYm1wIl0sWyJwbmciLCJpbWFnZS9wbmciXSxbImdpZiIsImltYWdlL2dpZiJdLFsiZW1mIiwiaW1hZ2UveC1lbWYiXSxbIndtZiIs'@; put 'ImltYWdlL3gtd21mIl0sWyJqcGciLCJpbWFnZS9qcGVnIl0sWyJqcGVnIiwiaW1hZ2UvanBlZyJdLFsidGlmIiwiaW1hZ2UvdGlmZiJdLFsidGlmZiIsImltYWdlL3RpZmYiXSxbInBkZiIsImFwcGxpY2F0aW9uL3BkZiJdLFsicmVscyIsczgucmVsc1swXV1dLm1hcChmdW5jdGlvbihkKXty'@; put 'ZXR1cm4gVnIoIkRlZmF1bHQiLG51bGwse0V4dGVuc2lvbjpkWzBdLENvbnRlbnRUeXBlOmRbMV19KX0pLHVhPXtXQjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsU0hFRVQ6Imh0dHA6'@; put 'Ly9zaGVldGpzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLEhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2h5cGVybGluayIs'@; put 'Vk1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmciLFhQQVRIOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVy'@; put 'bmFsTGlua1BhdGgiLFhNSVNTOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxFeHRlcm5hbExpbmtQYXRoL3hsUGF0aE1pc3NpbmciLFhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQv'@; put 'MjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGluayIsQ1hNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWwiLENYTUxQOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNl'@; put 'RG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFByb3BzIixWQkE6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy92YmFQcm9qZWN0In07ZnVuY3Rpb24gdmYoZCl7dmFyIF89ZC5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBk'@; put 'LnNsaWNlKDAsXysxKSsiX3JlbHMvIitkLnNsaWNlKF8rMSkrIi5yZWxzIn1mdW5jdGlvbiBMdShkLF8pe3ZhciBtPXsiIWlkIjp7fX07aWYoIWQpcmV0dXJuIG07Ii8iIT09Xy5jaGFyQXQoMCkmJihfPSIvIitfKTt2YXIgVD17fTtyZXR1cm4oZC5tYXRjaChCbil8fFtdKS5mb3JFYWNoKGZ1'@; put 'bmN0aW9uKFApe3ZhciBRPVhyKFApO2lmKCI8UmVsYXRpb25zaGlwIj09PVFbMF0pe3ZhciBzZT17fTtzZS5UeXBlPVEuVHlwZSxzZS5UYXJnZXQ9US5UYXJnZXQsc2UuSWQ9US5JZCxzZS5UYXJnZXRNb2RlPVEuVGFyZ2V0TW9kZTt2YXIgb2U9IkV4dGVybmFsIj09PVEuVGFyZ2V0TW9kZT9R'@; put 'LlRhcmdldDpocihRLlRhcmdldCxfKTttW29lXT1zZSxUW1EuSWRdPXNlfX0pLG1bIiFpZCJdPVQsbX1VYS5SRUxTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiO3ZhciBFZz1WcigiUmVsYXRpb25zaGlwcyIsbnVsbCx7eG1s'@; put 'bnM6VWEuUkVMU30pO2Z1bmN0aW9uIEMyKGQpe3ZhciBfPVtwbyxFZ107cmV0dXJuIEZlKGRbIiFpZCJdKS5mb3JFYWNoKGZ1bmN0aW9uKG0pe19bXy5sZW5ndGhdPVZyKCJSZWxhdGlvbnNoaXAiLG51bGwsZFsiIWlkIl1bbV0pfSksXy5sZW5ndGg+MiYmKF9bXy5sZW5ndGhdPSI8L1JlbGF0'@; put 'aW9uc2hpcHM+IixfWzFdPV9bMV0ucmVwbGFjZSgiLz4iLCI+IikpLF8uam9pbigiIil9dmFyIHJ1PVt1YS5ITElOSyx1YS5YUEFUSCx1YS5YTUlTU107ZnVuY3Rpb24gYWkoZCxfLG0sVCxQLFEpe2lmKFB8fChQPXt9KSxkWyIhaWQiXXx8KGRbIiFpZCJdPXt9KSxfPDApZm9yKF89MTtkWyIh'@; put 'aWQiXVsicklkIitfXTsrK18pO2lmKFAuSWQ9InJJZCIrXyxQLlR5cGU9VCxQLlRhcmdldD1tLFE/UC5UYXJnZXRNb2RlPVE6cnUuaW5kZXhPZihQLlR5cGUpPi0xJiYoUC5UYXJnZXRNb2RlPSJFeHRlcm5hbCIpLGRbIiFpZCJdW1AuSWRdKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJld3Jp'@; put 'dGUgcklkICIrXyk7cmV0dXJuIGRbIiFpZCJdW1AuSWRdPVAsZFsoIi8iK1AuVGFyZ2V0KS5yZXBsYWNlKCIvLyIsIi8iKV09UCxffWZ1bmN0aW9uIFd1KGQsXyxtKXtyZXR1cm5bJyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IicrZCsnIj5cbicsJyAgICA8cmRmOnR5cGUgcmRmOnJl'@; put 'c291cmNlPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvJysobXx8Im9kZiIpKyIjIitfKyciLz5cbicsIiAgPC9yZGY6RGVzY3JpcHRpb24+XG4iXS5qb2luKCIiKX1mdW5jdGlvbiBmcChkLF8pe3JldHVyblsnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph'@; put 'Ym91dD0iJytkKyciPlxuJywnICAgIDxuczA6aGFzUGFydCB4bWxuczpuczA9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS9wa2cjIiByZGY6cmVzb3VyY2U9IicrXysnIi8+XG4nLCIgIDwvcmRmOkRlc2NyaXB0aW9uPlxuIl0uam9pbigiIil9dmFyIGZs'@; put 'PWZ1bmN0aW9uKCl7dmFyIGQ9JzxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIgeG1sbnM6bWV0YT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIg'@; put 'eG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgb2ZmaWNlOnZlcnNpb249IjEuMiI+PG9mZmljZTptZXRhPjxtZXRhOmdlbmVyYXRvcj5TaGVldEpTICcrdi52ZXJzaW9uKyI8L21ldGE6'@; put 'Z2VuZXJhdG9yPjwvb2ZmaWNlOm1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT4iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBkfX0oKSxYYT1bWyJjcDpjYXRlZ29yeSIsIkNhdGVnb3J5Il0sWyJjcDpjb250ZW50U3RhdHVzIiwiQ29udGVudFN0YXR1cyJdLFsiY3A6a2V5d29yZHMiLCJL'@; put 'ZXl3b3JkcyJdLFsiY3A6bGFzdE1vZGlmaWVkQnkiLCJMYXN0QXV0aG9yIl0sWyJjcDpsYXN0UHJpbnRlZCIsIkxhc3RQcmludGVkIl0sWyJjcDpyZXZpc2lvbiIsIlJldk51bWJlciJdLFsiY3A6dmVyc2lvbiIsIlZlcnNpb24iXSxbImRjOmNyZWF0b3IiLCJBdXRob3IiXSxbImRjOmRlc2Ny'@; put 'aXB0aW9uIiwiQ29tbWVudHMiXSxbImRjOmlkZW50aWZpZXIiLCJJZGVudGlmaWVyIl0sWyJkYzpsYW5ndWFnZSIsIkxhbmd1YWdlIl0sWyJkYzpzdWJqZWN0IiwiU3ViamVjdCJdLFsiZGM6dGl0bGUiLCJUaXRsZSJdLFsiZGN0ZXJtczpjcmVhdGVkIiwiQ3JlYXRlZERhdGUiLCJkYXRlIl0s'@; put 'WyJkY3Rlcm1zOm1vZGlmaWVkIiwiTW9kaWZpZWREYXRlIiwiZGF0ZSJdXTtVYS5DT1JFX1BST1BTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIsdWEuQ09SRV9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3Bl'@; put 'bnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyI7dmFyIHUwPWZ1bmN0aW9uKCl7Zm9yKHZhciBkPW5ldyBBcnJheShYYS5sZW5ndGgpLF89MDtfPFhhLmxlbmd0aDsrK18pe3ZhciBtPVhhW19dLFQ9Iig/OiIrbVswXS5z'@; put 'bGljZSgwLG1bMF0uaW5kZXhPZigiOiIpKSsiOikiK21bMF0uc2xpY2UobVswXS5pbmRleE9mKCI6IikrMSk7ZFtfXT1uZXcgUmVnRXhwKCI8IitUKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrVCsiPiIpfXJldHVybiBkfSgpO2Z1bmN0aW9uIHJzKGQpe3ZhciBfPXt9O2Q9V24oZCk7Zm9yKHZh'@; put 'ciBtPTA7bTxYYS5sZW5ndGg7KyttKXt2YXIgVD1YYVttXSxQPWQubWF0Y2godTBbbV0pO251bGwhPVAmJlAubGVuZ3RoPjAmJihfW1RbMV1dPUNpKFBbMV0pKSwiZGF0ZSI9PT1UWzJdJiZfW1RbMV1dJiYoX1tUWzFdXT1sbihfW1RbMV1dKSl9cmV0dXJuIF99dmFyIHBwPVZyKCJjcDpjb3Jl'@; put 'UHJvcGVydGllcyIsbnVsbCx7InhtbG5zOmNwIjpVYS5DT1JFX1BST1BTLCJ4bWxuczpkYyI6VWEuZGMsInhtbG5zOmRjdGVybXMiOlVhLmRjdGVybXMsInhtbG5zOmRjbWl0eXBlIjpVYS5kY21pdHlwZSwieG1sbnM6eHNpIjpVYS54c2l9KTtmdW5jdGlvbiBNZyhkLF8sbSxULFApe251bGwh'@; put 'PVBbZF18fG51bGw9PV98fCIiPT09X3x8KFBbZF09XyxfPUJpKF8pLFRbVC5sZW5ndGhdPW0/VnIoZCxfLG0pOlVvKGQsXykpfXZhciBmYz1bWyJBcHBsaWNhdGlvbiIsIkFwcGxpY2F0aW9uIiwic3RyaW5nIl0sWyJBcHBWZXJzaW9uIiwiQXBwVmVyc2lvbiIsInN0cmluZyJdLFsiQ29tcGFu'@; put 'eSIsIkNvbXBhbnkiLCJzdHJpbmciXSxbIkRvY1NlY3VyaXR5IiwiRG9jU2VjdXJpdHkiLCJzdHJpbmciXSxbIk1hbmFnZXIiLCJNYW5hZ2VyIiwic3RyaW5nIl0sWyJIeXBlcmxpbmtzQ2hhbmdlZCIsIkh5cGVybGlua3NDaGFuZ2VkIiwiYm9vbCJdLFsiU2hhcmVkRG9jIiwiU2hhcmVkRG9j'@; put 'IiwiYm9vbCJdLFsiTGlua3NVcFRvRGF0ZSIsIkxpbmtzVXBUb0RhdGUiLCJib29sIl0sWyJTY2FsZUNyb3AiLCJTY2FsZUNyb3AiLCJib29sIl0sWyJIZWFkaW5nUGFpcnMiLCJIZWFkaW5nUGFpcnMiLCJyYXciXSxbIlRpdGxlc09mUGFydHMiLCJUaXRsZXNPZlBhcnRzIiwicmF3Il1dO2Z1'@; put 'bmN0aW9uIGdwKGQsXyxtLFQpe3ZhciBQPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgZClQPUp1KGQsVCk7ZWxzZSBmb3IodmFyIFE9MDtRPGQubGVuZ3RoOysrUSlQPVAuY29uY2F0KGRbUV0ubWFwKGZ1bmN0aW9uKE5lKXtyZXR1cm57djpOZX19KSk7dmFyIHNlPSJzdHJpbmciPT10eXBlb2Yg'@; put 'Xz9KdShfLFQpLm1hcChmdW5jdGlvbihOZSl7cmV0dXJuIE5lLnZ9KTpfLG9lPTAsZGU9MDtpZihzZS5sZW5ndGg+MClmb3IodmFyIExlPTA7TGUhPT1QLmxlbmd0aDtMZSs9Mil7c3dpdGNoKGRlPStQW0xlKzFdLnYsUFtMZV0udil7Y2FzZSJXb3Jrc2hlZXRzIjpjYXNlIlx1NWRlNVx1NGY1'@; put 'Y1x1ODg2OCI6Y2FzZSJcdTA0MWJcdTA0MzhcdTA0NDFcdTA0NDJcdTA0NGIiOmNhc2UiXHUwNjIzXHUwNjQ4XHUwNjMxXHUwNjI3XHUwNjQyIFx1MDYyN1x1MDY0NFx1MDYzOVx1MDY0NVx1MDY0NCI6Y2FzZSJcdTMwZWZcdTMwZmNcdTMwYWZcdTMwYjdcdTMwZmNcdTMwYzgiOmNhc2UiXHUw'@; put 'NWQyXHUwNWRjXHUwNWQ5XHUwNWQ1XHUwNWUwXHUwNWQ1XHUwNWVhIFx1MDVlMlx1MDVkMVx1MDVkNVx1MDVkM1x1MDVkNCI6Y2FzZSJBcmJlaXRzYmxceGU0dHRlciI6Y2FzZSJceGM3YWxcdTAxMzFcdTAxNWZtYSBTYXlmYWxhclx1MDEzMSI6Y2FzZSJGZXVpbGxlcyBkZSBjYWxjdWwiOmNh'@; put 'c2UiRm9nbGkgZGkgbGF2b3JvIjpjYXNlIkZvbGhhcyBkZSBjXHhlMWxjdWxvIjpjYXNlIlBsYW5pbGhhcyI6Y2FzZSJSZWduZWFyayI6Y2FzZSJIb2phcyBkZSBjXHhlMWxjdWxvIjpjYXNlIldlcmtibGFkZW4iOm0uV29ya3NoZWV0cz1kZSxtLlNoZWV0TmFtZXM9c2Uuc2xpY2Uob2Usb2Ur'@; put 'ZGUpO2JyZWFrO2Nhc2UiTmFtZWQgUmFuZ2VzIjpjYXNlIlJhbmdvcyBjb24gbm9tYnJlIjpjYXNlIlx1NTQwZFx1NTI0ZFx1NGVkOFx1MzA0ZFx1NGUwMFx1ODlhNyI6Y2FzZSJCZW5hbm50ZSBCZXJlaWNoZSI6Y2FzZSJOYXZuZ2l2bmUgb21yXHhlNWRlciI6bS5OYW1lZFJhbmdlcz1kZSxt'@; put 'LkRlZmluZWROYW1lcz1zZS5zbGljZShvZSxvZStkZSk7YnJlYWs7Y2FzZSJDaGFydHMiOmNhc2UiRGlhZ3JhbW1lIjptLkNoYXJ0c2hlZXRzPWRlLG0uQ2hhcnROYW1lcz1zZS5zbGljZShvZSxvZStkZSl9b2UrPWRlfX1VYS5FWFRfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3Jt'@; put 'YXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXMiLHVhLkVYVF9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlbmRlZC1wcm9wZXJ0aWVzIjt2YXIgQm09VnIoIlBy'@; put 'b3BlcnRpZXMiLG51bGwse3htbG5zOlVhLkVYVF9QUk9QUywieG1sbnM6dnQiOlVhLnZ0fSk7VWEuQ1VTVF9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvY3VzdG9tLXByb3BlcnRpZXMiLHVhLkNVU1RfUFJPUFM9Imh0dHA6Ly9z'@; put 'Y2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tLXByb3BlcnRpZXMiO3ZhciB5Zj0vPFtePl0rPltePF0qL2cscDM9VnIoIlByb3BlcnRpZXMiLG51bGwse3htbG5zOlVhLkNVU1RfUFJPUFMsInhtbG5zOnZ0IjpVYS52dH0p'@; put 'O3ZhciBnMz17VGl0bGU6IlRpdGxlIixTdWJqZWN0OiJTdWJqZWN0IixBdXRob3I6IkF1dGhvciIsS2V5d29yZHM6IktleXdvcmRzIixDb21tZW50czoiRGVzY3JpcHRpb24iLExhc3RBdXRob3I6Ikxhc3RBdXRob3IiLFJldk51bWJlcjoiUmV2aXNpb24iLEFwcGxpY2F0aW9uOiJBcHBOYW1l'@; put 'IixMYXN0UHJpbnRlZDoiTGFzdFByaW50ZWQiLENyZWF0ZWREYXRlOiJDcmVhdGVkIixNb2RpZmllZERhdGU6Ikxhc3RTYXZlZCIsQ2F0ZWdvcnk6IkNhdGVnb3J5IixNYW5hZ2VyOiJNYW5hZ2VyIixDb21wYW55OiJDb21wYW55IixBcHBWZXJzaW9uOiJWZXJzaW9uIixDb250ZW50U3RhdHVz'@; put 'OiJDb250ZW50U3RhdHVzIixJZGVudGlmaWVyOiJJZGVudGlmaWVyIixMYW5ndWFnZToiTGFuZ3VhZ2UifSxtMz1jZShnMyk7ZnVuY3Rpb24gbWEoZCxfLG0pe2RbXz1tM1tfXXx8X109bX1mdW5jdGlvbiBhMShkKXt2YXIgXz1kLnJlYWRfc2hpZnQoNCksbT1kLnJlYWRfc2hpZnQoNCk7cmV0'@; put 'dXJuIG5ldyBEYXRlKDFlMyoobS8xZTcqTWF0aC5wb3coMiwzMikrXy8xZTctMTE2NDQ0NzM2MDApKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuMDAwLywiIil9ZnVuY3Rpb24gRjAoZCxfLG0pe3ZhciBUPWQubCxQPWQucmVhZF9zaGlmdCgwLCJscHN0ci1jcCIpO2lmKG0pZm9yKDtkLmwt'@; put 'VCYzOykrK2QubDtyZXR1cm4gUH1mdW5jdGlvbiBGbChkLF8sbSl7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpO3JldHVybiBtJiYoZC5sKz00LShULmxlbmd0aCsxJjMpJjMpLFR9ZnVuY3Rpb24genMoZCxfLG0pe3JldHVybiAzMT09PV8/RmwoZCk6RjAoZCwwLG0pfWZ1bmN0aW9u'@; put 'IFl1KGQsXyxtKXtyZXR1cm4genMoZCxfLCExPT09bT8wOjQpfWZ1bmN0aW9uIHMxKGQpe3ZhciBfPWQubCxtPVVtKGQsODEpO3JldHVybiAwPT1kW2QubF0mJjA9PWRbZC5sKzFdJiZkLmwtXyYyJiYoZC5sKz0yKSxbbSxVbShkLDMpXX1mdW5jdGlvbiBkeShkLF8pe2Zvcih2YXIgbT1kLnJl'@; put 'YWRfc2hpZnQoNCksVD17fSxQPTA7UCE9bTsrK1Ape3ZhciBRPWQucmVhZF9zaGlmdCg0KSxzZT1kLnJlYWRfc2hpZnQoNCk7VFtRXT1kLnJlYWRfc2hpZnQoc2UsMTIwMD09PV8/InV0ZjE2bGUiOiJ1dGY4IikucmVwbGFjZShELCIiKS5yZXBsYWNlKHAsIiEiKSwxMjAwPT09XyYmc2UlMiYm'@; put 'KGQubCs9Mil9cmV0dXJuIDMmZC5sJiYoZC5sPWQubD4+Mzw8MiksVH1mdW5jdGlvbiBPdShkKXt2YXIgXz1kLnJlYWRfc2hpZnQoNCksbT1kLnNsaWNlKGQubCxkLmwrXyk7cmV0dXJuIGQubCs9XywoMyZfKT4wJiYoZC5sKz00LSgzJl8pJjMpLG19ZnVuY3Rpb24gVW0oZCxfLG0pe3ZhciBQ'@; put 'LFQ9ZC5yZWFkX3NoaWZ0KDIpLFE9bXx8e307aWYoZC5sKz0yLDEyIT09XyYmVCE9PV8mJi0xPT09cjUuaW5kZXhPZihfKSYmKDQxMjYhPSg2NTUzNCZfKXx8NDEyNiE9KDY1NTM0JlQpKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHR5cGUgIitfKyIgc2F3ICIrVCk7c3dpdGNoKDEyPT09'@; put 'Xz9UOl8pe2Nhc2UgMjpyZXR1cm4gUD1kLnJlYWRfc2hpZnQoMiwiaSIpLFEucmF3fHwoZC5sKz0yKSxQO2Nhc2UgMzpyZXR1cm4gZC5yZWFkX3NoaWZ0KDQsImkiKTtjYXNlIDExOnJldHVybiAwIT09ZC5yZWFkX3NoaWZ0KDQpO2Nhc2UgMTk6cmV0dXJuIGQucmVhZF9zaGlmdCg0KTtjYXNl'@; put 'IDMwOnJldHVybiBGMChkLDAsNCkucmVwbGFjZShELCIiKTtjYXNlIDMxOnJldHVybiBGbChkKTtjYXNlIDY0OnJldHVybiBhMShkKTtjYXNlIDY1OnJldHVybiBPdShkKTtjYXNlIDcxOnJldHVybiBmdW5jdGlvbiBTZihkKXt2YXIgXz17fTtyZXR1cm4gXy5TaXplPWQucmVhZF9zaGlmdCg0'@; put 'KSxkLmwrPV8uU2l6ZSszLShfLlNpemUtMSklNCxffShkKTtjYXNlIDgwOnJldHVybiBZdShkLFQsIVEucmF3KS5yZXBsYWNlKEQsIiIpO2Nhc2UgODE6cmV0dXJuIGZ1bmN0aW9uIHJkKGQsXyl7aWYoIV8pdGhyb3cgbmV3IEVycm9yKCJWdFVuYWxpZ25lZFN0cmluZyBtdXN0IGhhdmUgcG9z'@; put 'aXRpdmUgbGVuZ3RoIik7cmV0dXJuIHpzKGQsXywwKX0oZCxUKS5yZXBsYWNlKEQsIiIpO2Nhc2UgNDEwODpyZXR1cm4gZnVuY3Rpb24gdjMoZCl7Zm9yKHZhciBfPWQucmVhZF9zaGlmdCg0KSxtPVtdLFQ9MDtUPF8vMjsrK1QpbS5wdXNoKHMxKGQpKTtyZXR1cm4gbX0oZCk7Y2FzZSA0MTI2'@; put 'OmNhc2UgNDEyNzpyZXR1cm4gNDEyNz09VD9mdW5jdGlvbiB3ZihkKXtmb3IodmFyIF89ZC5yZWFkX3NoaWZ0KDQpLG09W10sVD0wO1QhPV87KytUKXt2YXIgUD1kLmw7bVtUXT1kLnJlYWRfc2hpZnQoMCwibHB3c3RyIikucmVwbGFjZShELCIiKSxkLmwtUCYyJiYoZC5sKz0yKX1yZXR1cm4g'@; put 'bX0oZCk6ZnVuY3Rpb24gQ2YoZCl7Zm9yKHZhciBfPWQucmVhZF9zaGlmdCg0KSxtPVtdLFQ9MDtUIT1fOysrVCltW1RdPWQucmVhZF9zaGlmdCgwLCJscHN0ci1jcCIpLnJlcGxhY2UoRCwiIik7cmV0dXJuIG19KGQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFs'@; put 'dWUgdW5yZWNvZ25pemVkIHR5cGUgIitfKyIgIitUKX19ZnVuY3Rpb24gQzkoZCxfKXt2YXIgbT1Gcig0KSxUPUZyKDQpO3N3aXRjaChtLndyaXRlX3NoaWZ0KDQsODA9PWQ/MzE6ZCksZCl7Y2FzZSAzOlQud3JpdGVfc2hpZnQoLTQsXyk7YnJlYWs7Y2FzZSA1OihUPUZyKDgpKS53cml0ZV9z'@; put 'aGlmdCg4LF8sImYiKTticmVhaztjYXNlIDExOlQud3JpdGVfc2hpZnQoNCxfPzE6MCk7YnJlYWs7Y2FzZSA2NDpUPWZ1bmN0aW9uIHhnKGQpe3ZhciBtPSgic3RyaW5nIj09dHlwZW9mIGQ/bmV3IERhdGUoRGF0ZS5wYXJzZShkKSk6ZCkuZ2V0VGltZSgpLzFlMysxMTY0NDQ3MzYwMCxUPW0l'@; put 'TWF0aC5wb3coMiwzMiksUD0obS1UKS9NYXRoLnBvdygyLDMyKTtQKj0xZTc7dmFyIFE9KFQqPTFlNykvTWF0aC5wb3coMiwzMil8MDtRPjAmJihUJT1NYXRoLnBvdygyLDMyKSxQKz1RKTt2YXIgc2U9RnIoOCk7cmV0dXJuIHNlLndyaXRlX3NoaWZ0KDQsVCksc2Uud3JpdGVfc2hpZnQoNCxQ'@; put 'KSxzZX0oXyk7YnJlYWs7Y2FzZSAzMTpjYXNlIDgwOmZvcigoVD1Gcig0KzIqKF8ubGVuZ3RoKzEpKyhfLmxlbmd0aCUyPzA6MikpKS53cml0ZV9zaGlmdCg0LF8ubGVuZ3RoKzEpLFQud3JpdGVfc2hpZnQoMCxfLCJkYmNzIik7VC5sIT1ULmxlbmd0aDspVC53cml0ZV9zaGlmdCgxLDApO2Jy'@; put 'ZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIitkKyIgIitfKX1yZXR1cm4gRyhbbSxUXSl9ZnVuY3Rpb24gRWYoZCxfKXt2YXIgbT1kLmwsVD1kLnJlYWRfc2hpZnQoNCksUD1kLnJlYWRfc2hpZnQoNCksUT1bXSxzZT0w'@; put 'LG9lPTAsZGU9LTEsTGU9e307Zm9yKHNlPTA7c2UhPVA7KytzZSl7dmFyIE5lPWQucmVhZF9zaGlmdCg0KSxCZT1kLnJlYWRfc2hpZnQoNCk7UVtzZV09W05lLEJlK21dfVEuc29ydChmdW5jdGlvbihidCxFdCl7cmV0dXJuIGJ0WzFdLUV0WzFdfSk7dmFyIFplPXt9O2ZvcihzZT0wO3NlIT1Q'@; put 'Oysrc2Upe2lmKGQubCE9PVFbc2VdWzFdKXt2YXIgbnQ9ITA7aWYoc2U+MCYmXylzd2l0Y2goX1tRW3NlLTFdWzBdXS50KXtjYXNlIDI6ZC5sKzI9PT1RW3NlXVsxXSYmKGQubCs9MixudD0hMSk7YnJlYWs7Y2FzZSA4MDpjYXNlIDQxMDg6ZC5sPD1RW3NlXVsxXSYmKGQubD1RW3NlXVsxXSxu'@; put 'dD0hMSl9aWYoKCFffHwwPT1zZSkmJmQubDw9UVtzZV1bMV0mJihudD0hMSxkLmw9UVtzZV1bMV0pLG50KXRocm93IG5ldyBFcnJvcigiUmVhZCBFcnJvcjogRXhwZWN0ZWQgYWRkcmVzcyAiK1Fbc2VdWzFdKyIgYXQgIitkLmwrIiA6IitzZSl9aWYoXyl7dmFyIG10PV9bUVtzZV1bMF1dO2lm'@; put 'KFplW210Lm5dPVVtKGQsbXQudCx7cmF3OiEwfSksInZlcnNpb24iPT09bXQucCYmKFplW210Lm5dPVN0cmluZyhaZVttdC5uXT4+MTYpKyIuIisoIjAwMDAiK1N0cmluZyg2NTUzNSZaZVttdC5uXSkpLnNsaWNlKC00KSksIkNvZGVQYWdlIj09bXQubilzd2l0Y2goWmVbbXQubl0pe2Nhc2Ug'@; put 'MDpaZVttdC5uXT0xMjUyO2Nhc2UgODc0OmNhc2UgOTMyOmNhc2UgOTM2OmNhc2UgOTQ5OmNhc2UgOTUwOmNhc2UgMTI1MDpjYXNlIDEyNTE6Y2FzZSAxMjUzOmNhc2UgMTI1NDpjYXNlIDEyNTU6Y2FzZSAxMjU2OmNhc2UgMTI1NzpjYXNlIDEyNTg6Y2FzZSAxZTQ6Y2FzZSAxMjAwOmNhc2Ug'@; put 'MTIwMTpjYXNlIDEyNTI6Y2FzZSA2NWUzOmNhc2UtNTM2OmNhc2UgNjUwMDE6Y2FzZS01MzU6SChvZT1aZVttdC5uXT4+PjAmNjU1MzUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb2RlUGFnZTogIitaZVttdC5uXSl9fWVsc2UgaWYoMT09PVFbc2VdWzBd'@; put 'KXtpZihvZT1aZS5Db2RlUGFnZT1VbShkLDIpLEgob2UpLC0xIT09ZGUpe3ZhciBRZT1kLmw7ZC5sPVFbZGVdWzFdLExlPWR5KGQsb2UpLGQubD1RZX19ZWxzZSBpZigwPT09UVtzZV1bMF0pe2lmKDA9PT1vZSl7ZGU9c2UsZC5sPVFbc2UrMV1bMV07Y29udGludWV9TGU9ZHkoZCxvZSl9ZWxz'@; put 'ZXt2YXIga3QsZnQ9TGVbUVtzZV1bMF1dO3N3aXRjaChkW2QubF0pe2Nhc2UgNjU6ZC5sKz00LGt0PU91KGQpO2JyZWFrO2Nhc2UgMzA6Y2FzZSAzMTpkLmwrPTQsa3Q9WXUoZCxkW2QubC00XSkucmVwbGFjZSgvXHUwMDAwKyQvLCIiKTticmVhaztjYXNlIDM6ZC5sKz00LGt0PWQucmVhZF9z'@; put 'aGlmdCg0LCJpIik7YnJlYWs7Y2FzZSAxOTpkLmwrPTQsa3Q9ZC5yZWFkX3NoaWZ0KDQpO2JyZWFrO2Nhc2UgNTpkLmwrPTQsa3Q9ZC5yZWFkX3NoaWZ0KDgsImYiKTticmVhaztjYXNlIDExOmQubCs9NCxrdD14YShkLDQpO2JyZWFrO2Nhc2UgNjQ6ZC5sKz00LGt0PWxuKGExKGQpKTticmVh'@; put 'aztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5wYXJzZWQgdmFsdWU6ICIrZFtkLmxdKX1aZVtmdF09a3R9fXJldHVybiBkLmw9bStULFplfXZhciBBZz1bIkNvZGVQYWdlIiwiVGh1bWJuYWlsIiwiX1BJRF9MSU5LQkFTRSIsIl9QSURfSExJTktTIiwiU3lzdGVtSWRlbnRpZmllciIsIkZN'@; put 'VElEIl0uY29uY2F0KFsiV29ya3NoZWV0cyIsIlNoZWV0TmFtZXMiLCJOYW1lZFJhbmdlcyIsIkRlZmluZWROYW1lcyIsIkNoYXJ0c2hlZXRzIiwiQ2hhcnROYW1lcyJdKTtmdW5jdGlvbiBKQyhkKXtzd2l0Y2godHlwZW9mIGQpe2Nhc2UiYm9vbGVhbiI6cmV0dXJuIDExO2Nhc2UibnVtYmVy'@; put 'IjpyZXR1cm4oMHxkKT09ZD8zOjU7Y2FzZSJzdHJpbmciOnJldHVybiAzMTtjYXNlIm9iamVjdCI6aWYoZCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIDY0fXJldHVybi0xfWZ1bmN0aW9uIGh5KGQsXyxtKXt2YXIgVD1Gcig4KSxQPVtdLFE9W10sc2U9OCxvZT0wLGRlPUZyKDgpLExlPUZyKDgp'@; put 'O2lmKGRlLndyaXRlX3NoaWZ0KDQsMiksZGUud3JpdGVfc2hpZnQoNCwxMjAwKSxMZS53cml0ZV9zaGlmdCg0LDEpLFEucHVzaChkZSksUC5wdXNoKExlKSxzZSs9OCtkZS5sZW5ndGgsIV8peyhMZT1Gcig4KSkud3JpdGVfc2hpZnQoNCwwKSxQLnVuc2hpZnQoTGUpO3ZhciBOZT1bRnIoNCld'@; put 'O2ZvcihOZVswXS53cml0ZV9zaGlmdCg0LGQubGVuZ3RoKSxvZT0wO29lPGQubGVuZ3RoOysrb2Upe3ZhciBCZT1kW29lXVswXTtmb3IoKGRlPUZyKDgrMiooQmUubGVuZ3RoKzEpKyhCZS5sZW5ndGglMj8wOjIpKSkud3JpdGVfc2hpZnQoNCxvZSsyKSxkZS53cml0ZV9zaGlmdCg0LEJlLmxl'@; put 'bmd0aCsxKSxkZS53cml0ZV9zaGlmdCgwLEJlLCJkYmNzIik7ZGUubCE9ZGUubGVuZ3RoOylkZS53cml0ZV9zaGlmdCgxLDApO05lLnB1c2goZGUpfWRlPUcoTmUpLFEudW5zaGlmdChkZSksc2UrPTgrZGUubGVuZ3RofWZvcihvZT0wO29lPGQubGVuZ3RoOysrb2UpaWYoKCFffHxfW2Rbb2Vd'@; put 'WzBdXSkmJiEoQWcuaW5kZXhPZihkW29lXVswXSk+LTEpJiZudWxsIT1kW29lXVsxXSl7dmFyIFplPWRbb2VdWzFdLG50PTA7aWYoXyl7dmFyIG10PW1bbnQ9K19bZFtvZV1bMF1dXTtpZigidmVyc2lvbiI9PW10LnAmJiJzdHJpbmciPT10eXBlb2YgWmUpe3ZhciBRZT1aZS5zcGxpdCgiLiIp'@; put 'O1plPSgrUWVbMF08PDE2KSsoK1FlWzFdfHwwKX1kZT1DOShtdC50LFplKX1lbHNle3ZhciBmdD1KQyhaZSk7LTE9PWZ0JiYoZnQ9MzEsWmU9U3RyaW5nKFplKSksZGU9QzkoZnQsWmUpfVEucHVzaChkZSksKExlPUZyKDgpKS53cml0ZV9zaGlmdCg0LF8/bnQ6MitvZSksUC5wdXNoKExlKSxz'@; put 'ZSs9OCtkZS5sZW5ndGh9dmFyIGt0PTgqKFEubGVuZ3RoKzEpO2ZvcihvZT0wO29lPFEubGVuZ3RoOysrb2UpUFtvZV0ud3JpdGVfc2hpZnQoNCxrdCksa3QrPVFbb2VdLmxlbmd0aDtyZXR1cm4gVC53cml0ZV9zaGlmdCg0LHNlKSxULndyaXRlX3NoaWZ0KDQsUS5sZW5ndGgpLEcoW1RdLmNv'@; put 'bmNhdChQKS5jb25jYXQoUSkpfWZ1bmN0aW9uIGZ5KGQsXyxtKXt2YXIgVD1kLmNvbnRlbnQ7aWYoIVQpcmV0dXJue307T2woVCwwKTt2YXIgUCxRLHNlLG9lLGRlPTA7VC5jaGsoImZlZmYiLCJCeXRlIE9yZGVyOiAiKSxULnJlYWRfc2hpZnQoMik7dmFyIExlPVQucmVhZF9zaGlmdCg0KSxO'@; put 'ZT1ULnJlYWRfc2hpZnQoMTYpO2lmKE5lIT09YWUudXRpbHMuY29uc3RzLkhFQURFUl9DTFNJRCYmTmUhPT1tKXRocm93IG5ldyBFcnJvcigiQmFkIFByb3BlcnR5U2V0IENMU0lEICIrTmUpO2lmKDEhPT0oUD1ULnJlYWRfc2hpZnQoNCkpJiYyIT09UCl0aHJvdyBuZXcgRXJyb3IoIlVucmVj'@; put 'b2duaXplZCAjU2V0czogIitQKTtpZihRPVQucmVhZF9zaGlmdCgxNiksb2U9VC5yZWFkX3NoaWZ0KDQpLDE9PT1QJiZvZSE9PVQubCl0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBtaXNtYXRjaDogIitvZSsiICE9PSAiK1QubCk7Mj09PVAmJihzZT1ULnJlYWRfc2hpZnQoMTYpLGRlPVQucmVh'@; put 'ZF9zaGlmdCg0KSk7dmFyIG10LEJlPUVmKFQsXyksWmU9e1N5c3RlbUlkZW50aWZpZXI6TGV9O2Zvcih2YXIgbnQgaW4gQmUpWmVbbnRdPUJlW250XTtpZihaZS5GTVRJRD1RLDE9PT1QKXJldHVybiBaZTtpZihkZS1ULmw9PTImJihULmwrPTIpLFQubCE9PWRlKXRocm93IG5ldyBFcnJvcigi'@; put 'TGVuZ3RoIG1pc21hdGNoIDI6ICIrVC5sKyIgIT09ICIrZGUpO3RyeXttdD1FZihULG51bGwpfWNhdGNoe31mb3IobnQgaW4gbXQpWmVbbnRdPW10W250XTtyZXR1cm4gWmUuRk1USUQ9W1Esc2VdLFplfWZ1bmN0aW9uIFVpKGQsXyxtLFQsUCxRKXt2YXIgc2U9RnIoUD82ODo0OCksb2U9W3Nl'@; put 'XTtzZS53cml0ZV9zaGlmdCgyLDY1NTM0KSxzZS53cml0ZV9zaGlmdCgyLDApLHNlLndyaXRlX3NoaWZ0KDQsODQyNDEyNTk5KSxzZS53cml0ZV9zaGlmdCgxNixhZS51dGlscy5jb25zdHMuSEVBREVSX0NMU0lELCJoZXgiKSxzZS53cml0ZV9zaGlmdCg0LFA/MjoxKSxzZS53cml0ZV9zaGlm'@; put 'dCgxNixfLCJoZXgiKSxzZS53cml0ZV9zaGlmdCg0LFA/Njg6NDgpO3ZhciBkZT1oeShkLG0sVCk7aWYob2UucHVzaChkZSksUCl7dmFyIExlPWh5KFAsbnVsbCxudWxsKTtzZS53cml0ZV9zaGlmdCgxNixRLCJoZXgiKSxzZS53cml0ZV9zaGlmdCg0LDY4K2RlLmxlbmd0aCksb2UucHVzaChM'@; put 'ZSl9cmV0dXJuIEcob2UpfWZ1bmN0aW9uIG1wKGQsXyl7cmV0dXJuIGQucmVhZF9zaGlmdChfKSxudWxsfWZ1bmN0aW9uIHhhKGQsXyl7cmV0dXJuIDE9PT1kLnJlYWRfc2hpZnQoXyl9ZnVuY3Rpb24gcGwoZCxfKXtyZXR1cm4gX3x8KF89RnIoMikpLF8ud3JpdGVfc2hpZnQoMiwrISFkKSxf'@; put 'fWZ1bmN0aW9uIGlkKGQpe3JldHVybiBkLnJlYWRfc2hpZnQoMiwidSIpfWZ1bmN0aW9uIGQwKGQsXyl7cmV0dXJuIF98fChfPUZyKDIpKSxfLndyaXRlX3NoaWZ0KDIsZCksX31mdW5jdGlvbiBoOChkLF8pe3JldHVybiBmdW5jdGlvbiBkOChkLF8sbSl7Zm9yKHZhciBUPVtdLFA9ZC5sK187'@; put 'ZC5sPFA7KVQucHVzaChtKGQsUC1kLmwpKTtpZihQIT09ZC5sKXRocm93IG5ldyBFcnJvcigiU2x1cnAgZXJyb3IiKTtyZXR1cm4gVH0oZCxfLGlkKX1mdW5jdGlvbiBsZShkLF8sbSl7cmV0dXJuIG18fChtPUZyKDIpKSxtLndyaXRlX3NoaWZ0KDEsImUiPT1fPytkOishIWQpLG0ud3JpdGVf'@; put 'c2hpZnQoMSwiZSI9PV8/MTowKSxtfWZ1bmN0aW9uIGJlKGQsXyxtKXt2YXIgVD1kLnJlYWRfc2hpZnQobSYmbS5iaWZmPj0xMj8yOjEpLFA9InNiY3MtY29udCIsUT1DO20mJm0uYmlmZj49OCYmKEM9MTIwMCksbSYmOCE9bS5iaWZmPzEyPT1tLmJpZmYmJihQPSJ3c3RyIik6ZC5yZWFkX3No'@; put 'aWZ0KDEpJiYoUD0iZGJjcy1jb250IiksbS5iaWZmPj0yJiZtLmJpZmY8PTUmJihQPSJjcHN0ciIpO3ZhciBvZT1UP2QucmVhZF9zaGlmdChULFApOiIiO3JldHVybiBDPVEsb2V9ZnVuY3Rpb24gT2UoZCl7dmFyIF89QztDPTEyMDA7dmFyIGRlLG09ZC5yZWFkX3NoaWZ0KDIpLFQ9ZC5yZWFk'@; put 'X3NoaWZ0KDEpLFA9NCZULFE9OCZULHNlPTErKDEmVCksb2U9MCxMZT17fTtRJiYob2U9ZC5yZWFkX3NoaWZ0KDIpKSxQJiYoZGU9ZC5yZWFkX3NoaWZ0KDQpKTt2YXIgQmU9MD09PW0/IiI6ZC5yZWFkX3NoaWZ0KG0sMj09c2U/ImRiY3MtY29udCI6InNiY3MtY29udCIpO2lmKFEpZm9yKExl'@; put 'Ll9SPVtdO29lLS0gPjA7KUxlLl9SLnB1c2goe2lkeDpkLnJlYWRfc2hpZnQoMiksaWZudDpkLnJlYWRfc2hpZnQoMil9KTtyZXR1cm4gUCYmKGQubCs9ZGUpLExlLnQ9QmUsUXx8KExlLnI9Ijx0PiIrTGUudCsiPC90PiIpLEM9XyxMZX1mdW5jdGlvbiAkZShkLF8pe3ZhciBtPWQuUiYmZC5S'@; put 'Lmxlbmd0aHx8ZC5yO2QuciYmKGQuUj1teShkLnIpKTt2YXIgVD0iIixQPTA7bT9kLlIuZm9yRWFjaChmdW5jdGlvbihtdCl7UCsrLFQrPW10LnZ8fCIifSk6KFQ9ZC50fHwiIixQPTEpO3ZhciBRPUZyKDMrKFA+MT8yOjApKTtRLndyaXRlX3NoaWZ0KDIsVC5sZW5ndGgpLFEud3JpdGVfc2hp'@; put 'ZnQoMSwxfChQPjE/ODowKSksUD4xJiZRLndyaXRlX3NoaWZ0KDIsUCk7dmFyIHNlPUZyKDIqVC5sZW5ndGgpO3NlLndyaXRlX3NoaWZ0KDIqVC5sZW5ndGgsVCwidXRmMTZsZSIpO3ZhciBvZT1bUSxzZV07aWYobSl7dmFyIGRlPUZyKDQqZC5SLmxlbmd0aCksTGU9MDtvZS5wdXNoKGRlKTtm'@; put 'b3IodmFyIE5lPTA7TmU8ZC5SLmxlbmd0aDsrK05lKXt2YXIgQmU9ZC5SW05lXTtkZS53cml0ZV9zaGlmdCgyLExlKSxMZSs9KEJlLnZ8fCIiKS5sZW5ndGg7dmFyIFplPUJlLnM/QTIoXy5jZWxsWGZzLF8uY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpCZS5zfSxfKTowLG50PV8uY2VsbFhm'@; put 'c1taZV0uZm9udElkO2RlLndyaXRlX3NoaWZ0KDIsbnQ8ND9udDpudCsxKX19cmV0dXJuIEcob2UpfWZ1bmN0aW9uIFN0KGQsXyxtKXtpZihtKXtpZihtLmJpZmY+PTImJm0uYmlmZjw9NSlyZXR1cm4gZC5yZWFkX3NoaWZ0KF8sImNwc3RyIik7aWYobS5iaWZmPj0xMilyZXR1cm4gZC5yZWFk'@; put 'X3NoaWZ0KF8sImRiY3MtY29udCIpfXZhciBQPWQucmVhZF9zaGlmdCgxKTtyZXR1cm4gZC5yZWFkX3NoaWZ0KF8sMD09PVA/InNiY3MtY29udCI6ImRiY3MtY29udCIpfWZ1bmN0aW9uIFF0KGQsXyxtKXt2YXIgVD1kLnJlYWRfc2hpZnQobSYmMj09bS5iaWZmPzE6Mik7cmV0dXJuIDA9PT1U'@; put 'PyhkLmwrKywiIik6U3QoZCxULG0pfWZ1bmN0aW9uIEVuKGQsXyxtKXtpZihtLmJpZmY+NSlyZXR1cm4gUXQoZCwwLG0pO3ZhciBUPWQucmVhZF9zaGlmdCgxKTtyZXR1cm4gMD09PVQ/KGQubCsrLCIiKTpkLnJlYWRfc2hpZnQoVCxtLmJpZmY8PTR8fCFkLmxlbnM/ImNwc3RyIjoic2Jjcy1j'@; put 'b250Iil9ZnVuY3Rpb24gY3IoZCxfLG0pe3JldHVybiBtfHwobT1GcigzKzIqZC5sZW5ndGgpKSxtLndyaXRlX3NoaWZ0KDIsZC5sZW5ndGgpLG0ud3JpdGVfc2hpZnQoMSwxKSxtLndyaXRlX3NoaWZ0KDMxLGQsInV0ZjE2bGUiKSxtfWZ1bmN0aW9uIHhvKGQpe3ZhciBfPWQucmVhZF9zaGlm'@; put 'dCg0KTtyZXR1cm4gXz4wP2QucmVhZF9zaGlmdChfLCJ1dGYxNmxlIikucmVwbGFjZShELCIiKToiIn1mdW5jdGlvbiBZaShkLF8pe198fChfPUZyKDYrMipkLmxlbmd0aCkpLF8ud3JpdGVfc2hpZnQoNCwxK2QubGVuZ3RoKTtmb3IodmFyIG09MDttPGQubGVuZ3RoOysrbSlfLndyaXRlX3No'@; put 'aWZ0KDIsZC5jaGFyQ29kZUF0KG0pKTtyZXR1cm4gXy53cml0ZV9zaGlmdCgyLDApLF99ZnVuY3Rpb24gUHMoZCl7dmFyIF89RnIoNTEyKSxtPTAsVD1kLlRhcmdldDsiZmlsZTovLyI9PVQuc2xpY2UoMCw3KSYmKFQ9VC5zbGljZSg3KSk7dmFyIFA9VC5pbmRleE9mKCIjIiksUT1QPi0xPzMx'@; put 'OjIzO3N3aXRjaChULmNoYXJBdCgwKSl7Y2FzZSIjIjpRPTI4O2JyZWFrO2Nhc2UiLiI6USY9LTN9Xy53cml0ZV9zaGlmdCg0LDIpLF8ud3JpdGVfc2hpZnQoNCxRKTt2YXIgc2U9WzgsNjgxNTgyNyw2NjE5MjM3LDQ4NDk3ODAsODNdO2ZvcihtPTA7bTxzZS5sZW5ndGg7KyttKV8ud3JpdGVf'@; put 'c2hpZnQoNCxzZVttXSk7aWYoMjg9PVEpWWkoVD1ULnNsaWNlKDEpLF8pO2Vsc2UgaWYoMiZRKXtmb3Ioc2U9ImUwIGM5IGVhIDc5IGY5IGJhIGNlIDExIDhjIDgyIDAwIGFhIDAwIDRiIGE5IDBiIi5zcGxpdCgiICIpLG09MDttPHNlLmxlbmd0aDsrK20pXy53cml0ZV9zaGlmdCgxLHBhcnNl'@; put 'SW50KHNlW21dLDE2KSk7dmFyIG9lPVA+LTE/VC5zbGljZSgwLFApOlQ7Zm9yKF8ud3JpdGVfc2hpZnQoNCwyKihvZS5sZW5ndGgrMSkpLG09MDttPG9lLmxlbmd0aDsrK20pXy53cml0ZV9zaGlmdCgyLG9lLmNoYXJDb2RlQXQobSkpO18ud3JpdGVfc2hpZnQoMiwwKSw4JlEmJllpKFA+LTE/'@; put 'VC5zbGljZShQKzEpOiIiLF8pfWVsc2V7Zm9yKHNlPSIwMyAwMyAwMCAwMCAwMCAwMCAwMCAwMCBjMCAwMCAwMCAwMCAwMCAwMCAwMCA0NiIuc3BsaXQoIiAiKSxtPTA7bTxzZS5sZW5ndGg7KyttKV8ud3JpdGVfc2hpZnQoMSxwYXJzZUludChzZVttXSwxNikpO2Zvcih2YXIgZGU9MDsiLi4v'@; put 'Ij09VC5zbGljZSgzKmRlLDMqZGUrMyl8fCIuLlxcIj09VC5zbGljZSgzKmRlLDMqZGUrMyk7KSsrZGU7Zm9yKF8ud3JpdGVfc2hpZnQoMixkZSksXy53cml0ZV9zaGlmdCg0LFQubGVuZ3RoLTMqZGUrMSksbT0wO208VC5sZW5ndGgtMypkZTsrK20pXy53cml0ZV9zaGlmdCgxLDI1NSZULmNo'@; put 'YXJDb2RlQXQobSszKmRlKSk7Zm9yKF8ud3JpdGVfc2hpZnQoMSwwKSxfLndyaXRlX3NoaWZ0KDIsNjU1MzUpLF8ud3JpdGVfc2hpZnQoMiw1NzAwNSksbT0wO208NjsrK20pXy53cml0ZV9zaGlmdCg0LDApfXJldHVybiBfLnNsaWNlKDAsXy5sKX1mdW5jdGlvbiBhYShkKXtyZXR1cm5bZC5y'@; put 'ZWFkX3NoaWZ0KDEpLGQucmVhZF9zaGlmdCgxKSxkLnJlYWRfc2hpZnQoMSksZC5yZWFkX3NoaWZ0KDEpXX1mdW5jdGlvbiBJbyhkLF8pe3ZhciBtPWFhKGQpO3JldHVybiBtWzNdPTAsbX1mdW5jdGlvbiBaaShkKXtyZXR1cm57cjpkLnJlYWRfc2hpZnQoMiksYzpkLnJlYWRfc2hpZnQoMiks'@; put 'aXhmZTpkLnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIGdsKGQsXyxtLFQpe3JldHVybiBUfHwoVD1Gcig2KSksVC53cml0ZV9zaGlmdCgyLGQpLFQud3JpdGVfc2hpZnQoMixfKSxULndyaXRlX3NoaWZ0KDIsbXx8MCksVH1mdW5jdGlvbiBwYyhkLF8sbSl7dmFyIFQ9bS5iaWZmPjg/NDoyO3Jl'@; put 'dHVybltkLnJlYWRfc2hpZnQoVCksZC5yZWFkX3NoaWZ0KFQsImkiKSxkLnJlYWRfc2hpZnQoVCwiaSIpXX1mdW5jdGlvbiBVZChkKXtyZXR1cm5bZC5yZWFkX3NoaWZ0KDIpLGJkKGQpXX1mdW5jdGlvbiBvZChkKXt2YXIgXz1kLnJlYWRfc2hpZnQoMiksbT1kLnJlYWRfc2hpZnQoMik7cmV0'@; put 'dXJue3M6e2M6ZC5yZWFkX3NoaWZ0KDIpLHI6X30sZTp7YzpkLnJlYWRfc2hpZnQoMikscjptfX19ZnVuY3Rpb24gWmMoZCxfKXtyZXR1cm4gX3x8KF89RnIoOCkpLF8ud3JpdGVfc2hpZnQoMixkLnMuciksXy53cml0ZV9zaGlmdCgyLGQuZS5yKSxfLndyaXRlX3NoaWZ0KDIsZC5zLmMpLF8u'@; put 'd3JpdGVfc2hpZnQoMixkLmUuYyksX31mdW5jdGlvbiBoMChkKXt2YXIgXz1kLnJlYWRfc2hpZnQoMiksbT1kLnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6ZC5yZWFkX3NoaWZ0KDEpLHI6X30sZTp7YzpkLnJlYWRfc2hpZnQoMSkscjptfX19dmFyIF8zPWgwO2Z1bmN0aW9uIE1mKGQpe2Qu'@; put 'bCs9NDt2YXIgXz1kLnJlYWRfc2hpZnQoMiksbT1kLnJlYWRfc2hpZnQoMiksVD1kLnJlYWRfc2hpZnQoMik7cmV0dXJuIGQubCs9MTIsW20sXyxUXX1mdW5jdGlvbiBadShkKXtkLmwrPTIsZC5sKz1kLnJlYWRfc2hpZnQoMil9dmFyIFM5PXswOlp1LDQ6WnUsNTpadSw2Olp1LDc6ZnVuY3Rp'@; put 'b24ga2coZCl7cmV0dXJuIGQubCs9NCxkLmNmPWQucmVhZF9zaGlmdCgyKSx7fX0sODpadSw5Olp1LDEwOlp1LDExOlp1LDEyOlp1LDEzOmZ1bmN0aW9uIGloKGQpe3ZhciBfPXt9O3JldHVybiBkLmwrPTQsZC5sKz0xNixfLmZTaGFyZWROb3RlPWQucmVhZF9zaGlmdCgyKSxkLmwrPTQsX30s'@; put 'MTQ6WnUsMTU6WnUsMTY6WnUsMTc6WnUsMTg6WnUsMTk6WnUsMjA6WnUsMjE6TWZ9O2Z1bmN0aW9uIEloKGQsXyl7dmFyIG09e0JJRkZWZXI6MCxkdDowfTtzd2l0Y2gobS5CSUZGVmVyPWQucmVhZF9zaGlmdCgyKSwoXy09Mik+PTImJihtLmR0PWQucmVhZF9zaGlmdCgyKSxkLmwtPTIpLG0u'@; put 'QklGRlZlcil7Y2FzZSAxNTM2OmNhc2UgMTI4MDpjYXNlIDEwMjQ6Y2FzZSA3Njg6Y2FzZSA1MTI6Y2FzZSAyOmNhc2UgNzpicmVhaztkZWZhdWx0OmlmKF8+Nil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgQklGRiBWZXIgIittLkJJRkZWZXIpfXJldHVybiBkLnJlYWRfc2hpZnQoXyks'@; put 'bX1mdW5jdGlvbiBSZyhkLF8sbSl7dmFyIFQ9MTUzNixQPTE2O3N3aXRjaChtLmJvb2tUeXBlKXtjYXNlImJpZmY4IjpjYXNlInhsYSI6YnJlYWs7Y2FzZSJiaWZmNSI6VD0xMjgwLFA9ODticmVhaztjYXNlImJpZmY0IjpUPTQsUD02O2JyZWFrO2Nhc2UiYmlmZjMiOlQ9MyxQPTY7YnJlYWs7'@; put 'Y2FzZSJiaWZmMiI6VD0yLFA9NDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgQklGRiB2ZXJzaW9uIil9dmFyIFE9RnIoUCk7cmV0dXJuIFEud3JpdGVfc2hpZnQoMixUKSxRLndyaXRlX3NoaWZ0KDIsXyksUD40JiZRLndyaXRlX3NoaWZ0KDIsMjkyODIpLFA+'@; put 'NiYmUS53cml0ZV9zaGlmdCgyLDE5OTcpLFA+OCYmKFEud3JpdGVfc2hpZnQoMiw0OTE2MSksUS53cml0ZV9zaGlmdCgyLDEpLFEud3JpdGVfc2hpZnQoMiwxNzk4KSxRLndyaXRlX3NoaWZ0KDIsMCkpLFF9ZnVuY3Rpb24gdnAoZCxfKXt2YXIgbT0hX3x8Xy5iaWZmPj04PzI6MSxUPUZyKDgr'@; put 'bSpkLm5hbWUubGVuZ3RoKTtULndyaXRlX3NoaWZ0KDQsZC5wb3MpLFQud3JpdGVfc2hpZnQoMSxkLmhzfHwwKSxULndyaXRlX3NoaWZ0KDEsZC5kdCksVC53cml0ZV9zaGlmdCgxLGQubmFtZS5sZW5ndGgpLF8uYmlmZj49OCYmVC53cml0ZV9zaGlmdCgxLDEpLFQud3JpdGVfc2hpZnQobSpk'@; put 'Lm5hbWUubGVuZ3RoLGQubmFtZSxfLmJpZmY8OD8ic2JjcyI6InV0ZjE2bGUiKTt2YXIgUD1ULnNsaWNlKDAsVC5sKTtyZXR1cm4gUC5sPVQubCxQfWZ1bmN0aW9uIFhlKGQpe3JldHVybiBkLnJlYWRfc2hpZnQoNCksanUoZCl9ZnVuY3Rpb24gV2EoZCl7cmV0dXJuIGQucmVhZF9zaGlmdCg0'@; put 'KSx3MihkKX1mdW5jdGlvbiBXcyhkLF8sbSl7cmV0dXJuIGQucmVhZF9zaGlmdCg0KSxNNWUoZCwwLG0pfWZ1bmN0aW9uIERoKGQsXyxtKXt2YXIgVD0wO20mJjI9PW0uYmlmZnx8KFQ9ZC5yZWFkX3NoaWZ0KDIpKTt2YXIgUD1kLnJlYWRfc2hpZnQoMik7cmV0dXJuIG0mJjI9PW0uYmlmZiYm'@; put 'KFQ9MS0oUD4+MTUpLFAmPTMyNzY3KSxbe1Vuc3luY2VkOjEmVCxEeVplcm86KDImVCk+PjEsRXhBc2M6KDQmVCk+PjIsRXhEc2M6KDgmVCk+PjN9LFBdfWZ1bmN0aW9uIHBYKGQsXyxtLFQpe3ZhciBQPW0mJjU9PW0uYmlmZjtUfHwoVD1GcihQPzMrXy5sZW5ndGg6NSsyKl8ubGVuZ3RoKSks'@; put 'VC53cml0ZV9zaGlmdCgyLGQpLFQud3JpdGVfc2hpZnQoUD8xOjIsXy5sZW5ndGgpLFB8fFQud3JpdGVfc2hpZnQoMSwxKSxULndyaXRlX3NoaWZ0KChQPzE6MikqXy5sZW5ndGgsXyxQPyJzYmNzIjoidXRmMTZsZSIpO3ZhciBRPVQubGVuZ3RoPlQubD9ULnNsaWNlKDAsVC5sKTpUO3JldHVy'@; put 'biBudWxsPT1RLmwmJihRLmw9US5sZW5ndGgpLFF9dmFyIGdYPUVuO2Z1bmN0aW9uIG5TKGQsXyxtKXt2YXIgVD1kLmwrXyxQPTghPW0uYmlmZiYmbS5iaWZmPzI6NCxRPWQucmVhZF9zaGlmdChQKSxzZT1kLnJlYWRfc2hpZnQoUCksb2U9ZC5yZWFkX3NoaWZ0KDIpLGRlPWQucmVhZF9zaGlm'@; put 'dCgyKTtyZXR1cm4gZC5sPVQse3M6e3I6USxjOm9lfSxlOntyOnNlLGM6ZGV9fX1mdW5jdGlvbiBSQShkLF8sbSxUKXt2YXIgUT0hbXx8IW0uYmlmZnx8OD09bS5iaWZmO1R8fChUPUZyKG0mJjU9PW0uYmlmZj8xNjoyMCkpLFQud3JpdGVfc2hpZnQoMixRJiZtLmNlbGxTdHlsZXMmJmQuZm9u'@; put 'dElkJiYoZC5mb250SWQ8ND9kLmZvbnRJZDpkLmZvbnRJZCsxKXx8MCk7dmFyIHNlPTE7ZC5wcm90ZWN0aW9uJiYoZC5wcm90ZWN0aW9uLmVkaXRhYmxlJiYoc2UmPS0yKSxkLnByb3RlY3Rpb24uaGlkZGVuJiYoc2V8PTIpKSxkLnN0eWxlPyhULndyaXRlX3NoaWZ0KDIsZC5udW1GbXRJZHx8'@; put 'MCksVC53cml0ZV9zaGlmdCgyLDY1NTI0fHNlKSk6KFQud3JpdGVfc2hpZnQoMixkLm51bUZtdElkfHwwKSxULndyaXRlX3NoaWZ0KDIsXzw8NHxzZSkpO3ZhciBvZT1kLmFsaWdubWVudHx8e307aWYoUSl7dmFyIGRlPTAsTGU9MDtLQS5pbmRleE9mKG9lLmhvcml6b250YWwpPi0xJiYoZGV8'@; put 'PUtBLmluZGV4T2Yob2UuaG9yaXpvbnRhbCkpLG9lLndyYXBUZXh0JiYoZGV8PTgpLGJTLmluZGV4T2Yob2UudmVydGljYWwpPi0xP2RlfD1iUy5pbmRleE9mKG9lLnZlcnRpY2FsKTw8NDpudWxsPT1vZS52ZXJ0aWNhbCYmKGRlfD0zMiksVC53cml0ZV9zaGlmdCgxLGRlKSxULndyaXRlX3No'@; put 'aWZ0KDEsMCksb2Uuc2hyaW5rVG9GaXQmJihMZXw9MTYpLFQud3JpdGVfc2hpZnQoMixMZSk7dmFyIE5lPW51bGw7bnVsbCE9ZC5ib3JkZXJJZCYmKE5lPW0uQm9yZGVycyYmbS5Cb3JkZXJzW2QuYm9yZGVySWR8fDBdfHx7fSk7dmFyIEJlPTAsWmU9MCxudD0wO05lJiYobnVsbCE9TmUubGVm'@; put 'dCYmTmUubGVmdC5zdHlsZSYmKEJlfD0obnQ9RTguaW5kZXhPZihOZS5sZWZ0LnN0eWxlKSk+LTE/bnQ6MCksbnVsbCE9TmUucmlnaHQmJk5lLnJpZ2h0LnN0eWxlJiYoQmV8PSgobnQ9RTguaW5kZXhPZihOZS5yaWdodC5zdHlsZSkpPi0xP250OjApPDw0KSxudWxsIT1OZS50b3AmJk5lLnRv'@; put 'cC5zdHlsZSYmKFplfD0obnQ9RTguaW5kZXhPZihOZS50b3Auc3R5bGUpKT4tMT9udDowKSxudWxsIT1OZS5ib3R0b20mJk5lLmJvdHRvbS5zdHlsZSYmKFplfD0oKG50PUU4LmluZGV4T2YoTmUuYm90dG9tLnN0eWxlKSk+LTE/bnQ6MCk8PDQpKSxULndyaXRlX3NoaWZ0KDEsQmUpLFQud3Jp'@; put 'dGVfc2hpZnQoMSxaZSksVC53cml0ZV9zaGlmdCgyLDApLFQud3JpdGVfc2hpZnQoMiwwKSxULndyaXRlX3NoaWZ0KDEsMCk7dmFyIG10PTAsUWU9bS5GaWxscyYmbS5GaWxsc1tkLmZpbGxJZHx8MF18fHt9OyhRZS5mZ0NvbG9yfHxRZS5iZ0NvbG9yKSYmKG10fD00KSxULndyaXRlX3NoaWZ0'@; put 'KDEsbXQpO3ZhciBmdD0wO2Z0fD1NUyhRZS5mZ0NvbG9yLDY1KSxmdHw9TVMoUWUuYmdDb2xvciw2NSk8PDcsVC53cml0ZV9zaGlmdCgyLGZ0KX1lbHNlIFQud3JpdGVfc2hpZnQoNCwwKSxULndyaXRlX3NoaWZ0KDQsMCksVC53cml0ZV9zaGlmdCgyLDApO3JldHVybiBUfWZ1bmN0aW9uIGlT'@; put 'KGQsXyxtKXt2YXIgVD1aaShkKTsoMj09bS5iaWZmfHw5PT1fKSYmKytkLmw7dmFyIFA9ZnVuY3Rpb24gcGUoZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDEpO3JldHVybiAxPT09ZC5yZWFkX3NoaWZ0KDEpP186MT09PV99KGQpO3JldHVybiBULnZhbD1QLFQudD0hMD09PVB8fCExPT09UD8iYiI6'@; put 'ImUiLFR9dmFyIHkzPWZ1bmN0aW9uIFYxKGQsXyxtKXtyZXR1cm4gMD09PV8/IiI6RW4oZCwwLG0pfTtmdW5jdGlvbiBxUChkLF8sbSl7dmFyIFAsVD1kLnJlYWRfc2hpZnQoMiksUT17ZkJ1aWx0SW46MSZULGZXYW50QWR2aXNlOlQ+Pj4xJjEsZldhbnRQaWN0OlQ+Pj4yJjEsZk9sZTpUPj4+'@; put 'MyYxLGZPbGVMaW5rOlQ+Pj40JjEsY2Y6VD4+PjUmMTAyMyxmSWNvbjpUPj4+MTUmMX07cmV0dXJuIDE0ODQ5PT09bS5zYmNjaCYmKFA9ZnVuY3Rpb24gbDEoZCxfLG0pe2QubCs9NDt2YXIgVD1kLmwrKF8tPTQpLFA9YmUoZCwwLG0pLFE9ZC5yZWFkX3NoaWZ0KDIpO2lmKFEhPT0oVC09ZC5s'@; put 'KSl0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBBZGRpblVkZjogcGFkZGluZyA9ICIrVCsiICE9ICIrUSk7cmV0dXJuIGQubCs9USxQfShkLF8tMixtKSksUS5ib2R5PVB8fGQucmVhZF9zaGlmdChfLTIpLCJzdHJpbmciPT10eXBlb2YgUCYmKFEuTmFtZT1QKSxRfXZhciB5WD1bIl94bG5t'@; put 'LkNvbnNvbGlkYXRlX0FyZWEiLCJfeGxubS5BdXRvX09wZW4iLCJfeGxubS5BdXRvX0Nsb3NlIiwiX3hsbm0uRXh0cmFjdCIsIl94bG5tLkRhdGFiYXNlIiwiX3hsbm0uQ3JpdGVyaWEiLCJfeGxubS5QcmludF9BcmVhIiwiX3hsbm0uUHJpbnRfVGl0bGVzIiwiX3hsbm0uUmVjb3JkZXIiLCJf'@; put 'eGxubS5EYXRhX0Zvcm0iLCJfeGxubS5BdXRvX0FjdGl2YXRlIiwiX3hsbm0uQXV0b19EZWFjdGl2YXRlIiwiX3hsbm0uU2hlZXRfVGl0bGUiLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiXTtmdW5jdGlvbiBLUChkLF8sbSl7dmFyIFQ9ZC5sK18sUD1kLnJlYWRfc2hpZnQoMiksUT1kLnJlYWRf'@; put 'c2hpZnQoMSksc2U9ZC5yZWFkX3NoaWZ0KDEpLG9lPWQucmVhZF9zaGlmdChtJiYyPT1tLmJpZmY/MToyKSxkZT0wOyghbXx8bS5iaWZmPj01KSYmKDUhPW0uYmlmZiYmKGQubCs9MiksZGU9ZC5yZWFkX3NoaWZ0KDIpLDU9PW0uYmlmZiYmKGQubCs9MiksZC5sKz00KTt2YXIgTGU9U3QoZCxz'@; put 'ZSxtKTszMiZQJiYoTGU9eVhbTGUuY2hhckNvZGVBdCgwKV0pO3ZhciBOZT1ULWQubDttJiYyPT1tLmJpZmYmJi0tTmU7dmFyIEJlPVQhPWQubCYmMCE9PW9lJiZOZT4wP2Z1bmN0aW9uIFNWKGQsXyxtLFQpe3ZhciBzZSxQPWQubCtfLFE9QWYoZCxULG0pO3JldHVybiBQIT09ZC5sJiYoc2U9'@; put 'eHkoZCxQLWQubCxRLG0pKSxbUSxzZV19KGQsTmUsbSxvZSk6W107cmV0dXJue2NoS2V5OlEsTmFtZTpMZSxpdGFiOmRlLHJnY2U6QmV9fWZ1bmN0aW9uIElBKGQsXyxtKXtpZihtLmJpZmY8OClyZXR1cm4gZnVuY3Rpb24gWFAoZCxfLG0pezM9PWRbZC5sKzFdJiZkW2QubF0rKzt2YXIgVD1i'@; put 'ZShkLDAsbSk7cmV0dXJuIDM9PVQuY2hhckNvZGVBdCgwKT9ULnNsaWNlKDEpOlR9KGQsMCxtKTtmb3IodmFyIFQ9W10sUD1kLmwrXyxRPWQucmVhZF9zaGlmdChtLmJpZmY+OD80OjIpOzAhPT1RLS07KVQucHVzaChwYyhkLDAsbSkpO2lmKGQubCE9UCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBF'@; put 'eHRlcm5TaGVldDogIitkLmwrIiAhPSAiK1ApO3JldHVybiBUfWZ1bmN0aW9uIERBKGQsXyxtKXt2YXIgVD1fMyhkLDYpO3N3aXRjaChtLmJpZmYpe2Nhc2UgMjpkLmwrKyxfLT03O2JyZWFrO2Nhc2UgMzpjYXNlIDQ6ZC5sKz0yLF8tPTg7YnJlYWs7ZGVmYXVsdDpkLmwrPTYsXy09MTJ9cmV0'@; put 'dXJuW1QseGsoZCxfLG0pXX12YXIgZzg9W107ZnVuY3Rpb24gZTVlKGQpe3ZhciBfPUZyKDI0KSxtPUlzKGRbMF0pO18ud3JpdGVfc2hpZnQoMixtLnIpLF8ud3JpdGVfc2hpZnQoMixtLnIpLF8ud3JpdGVfc2hpZnQoMixtLmMpLF8ud3JpdGVfc2hpZnQoMixtLmMpO2Zvcih2YXIgVD0iZDAg'@; put 'YzkgZWEgNzkgZjkgYmEgY2UgMTEgOGMgODIgMDAgYWEgMDAgNGIgYTkgMGIiLnNwbGl0KCIgIiksUD0wO1A8MTY7KytQKV8ud3JpdGVfc2hpZnQoMSxwYXJzZUludChUW1BdLDE2KSk7cmV0dXJuIEcoW18sUHMoZFsxXSldKX1mdW5jdGlvbiB0NWUoZCl7dmFyIF89ZFsxXS5Ub29sdGlwLG09'@; put 'RnIoMTArMiooXy5sZW5ndGgrMSkpO20ud3JpdGVfc2hpZnQoMiwyMDQ4KTt2YXIgVD1JcyhkWzBdKTttLndyaXRlX3NoaWZ0KDIsVC5yKSxtLndyaXRlX3NoaWZ0KDIsVC5yKSxtLndyaXRlX3NoaWZ0KDIsVC5jKSxtLndyaXRlX3NoaWZ0KDIsVC5jKTtmb3IodmFyIFA9MDtQPF8ubGVuZ3Ro'@; put 'OysrUCltLndyaXRlX3NoaWZ0KDIsXy5jaGFyQ29kZUF0KFApKTtyZXR1cm4gbS53cml0ZV9zaGlmdCgyLDApLG19ZnVuY3Rpb24gbTgoZCxfLG0pe2lmKCFtLmNlbGxTdHlsZXMpcmV0dXJuIEVjKGQsXyk7dmFyIFQ9bSYmbS5iaWZmPj0xMj80OjIsUD1kLnJlYWRfc2hpZnQoVCksUT1kLnJl'@; put 'YWRfc2hpZnQoVCksc2U9ZC5yZWFkX3NoaWZ0KFQpLG9lPWQucmVhZF9zaGlmdChUKSxkZT1kLnJlYWRfc2hpZnQoMik7Mj09VCYmKGQubCs9Mik7dmFyIExlPXtzOlAsZTpRLHc6c2UsaXhmZTpvZSxmbGFnczpkZX07cmV0dXJuKG0uYmlmZj49NXx8IW0uYmlmZikmJihMZS5sZXZlbD1kZT4+'@; put 'OCY3KSxMZX1nOFs4XT1mdW5jdGlvbihkLF8pe3ZhciBtPWQubCtfO2QubCs9MTA7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDIpO2QubCs9NCxkLmwrPTIsZC5sKz0yLGQubCs9MixkLmwrPTQ7dmFyIFA9ZC5yZWFkX3NoaWZ0KDEpO3JldHVybiBkLmwrPVAsZC5sPW0se2ZtdDpUfX07dmFyIGFTPVpp'@; put 'LGd5PWg4LG9IPVF0O3ZhciB5cD1mdW5jdGlvbigpe3ZhciBkPXsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEyMDo5NTAsMTIxOjk0OSwxMjI6OTM2LDEyMzo5MzIsMTI0Ojg3'@; put 'NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1NCwyMDM6MTI1MywwOjIwMTI3LDg6ODY1LDk6NDM3LDEwOjg1MCwxMTo0MzcsMTM6NDM3LDE0Ojg1MCwxNTo0MzcsMTY6ODUwLDE3OjQzNywxODo4NTAsMTk6'@; put 'OTMyLDIwOjg1MCwyMTo0MzcsMjI6ODUwLDIzOjg2NSwyNDo0MzcsMjU6NDM3LDI2Ojg1MCwyNzo0MzcsMjg6ODYzLDI5Ojg1MCwzMTo4NTIsMzQ6ODUyLDM1Ojg1MiwzNjo4NjAsMzc6ODUwLDM4Ojg2Niw1NTo4NTAsNjQ6ODUyLDc3OjkzNiw3ODo5NDksNzk6OTUwLDgwOjg3NCw4NzoxMjUy'@; put 'LDg4OjEyNTIsODk6MTI1MiwxMDg6ODYzLDEzNDo3MzcsMTM1Ojg1MiwxMzY6ODU3LDIwNDoxMjU3LDI1NToxNjk2OX0sXz1jZSh7MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEwNjo3MzcsMTA3Ojg1Nywx'@; put 'MjA6OTUwLDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyN30pO2Z1bmN0aW9uIFAoZGUsTGUpe3ZhciBOZT1MZXx8e307'@; put 'cmV0dXJuIE5lLmRhdGVORnx8KE5lLmRhdGVORj0ieXl5eW1tZGQiKSxRbihmdW5jdGlvbiBUKGRlLExlKXt2YXIgTmU9W10sQmU9WCgxKTtzd2l0Y2goTGUudHlwZSl7Y2FzZSJiYXNlNjQiOkJlPWIoQ2UuZGVjb2RlKGRlKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOkJlPWIoZGUpO2JyZWFrO2Nh'@; put 'c2UiYnVmZmVyIjpjYXNlImFycmF5IjpCZT1kZX1PbChCZSwwKTt2YXIgWmU9QmUucmVhZF9zaGlmdCgxKSxudD0hISgxMzYmWmUpLG10PSExLFFlPSExO3N3aXRjaChaZSl7Y2FzZSAyOmNhc2UgMzpjYXNlIDEzMTpjYXNlIDEzOTpjYXNlIDI0NTpicmVhaztjYXNlIDQ4OmNhc2UgNDk6bXQ9'@; put 'ITAsbnQ9ITA7YnJlYWs7Y2FzZSAxNDA6UWU9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnN1cHBvcnRlZCBWZXJzaW9uOiAiK1plLnRvU3RyaW5nKDE2KSl9dmFyIGZ0PTAsa3Q9NTIxOzI9PVplJiYoZnQ9QmUucmVhZF9zaGlmdCgyKSksQmUubCs9MywyIT1aZSYm'@; put 'KGZ0PUJlLnJlYWRfc2hpZnQoNCkpLGZ0PjEwNDg1NzYmJihmdD0xZTYpLDIhPVplJiYoa3Q9QmUucmVhZF9zaGlmdCgyKSk7dmFyIGJ0PUJlLnJlYWRfc2hpZnQoMiksRXQ9TGUuY29kZXBhZ2V8fDEyNTI7MiE9WmUmJihCZS5sKz0xNixCZS5yZWFkX3NoaWZ0KDEpLDAhPT1CZVtCZS5sXSYm'@; put 'KEV0PWRbQmVbQmUubF1dKSxCZS5sKz0xLEJlLmwrPTIpLFFlJiYoQmUubCs9MzYpO2Zvcih2YXIgVnQ9W10sdW49e30sbnI9TWF0aC5taW4oQmUubGVuZ3RoLDI9PVplPzUyMTprdC0xMC0obXQ/MjY0OjApKSxubj1RZT8zMjoxMTtCZS5sPG5yJiYxMyE9QmVbQmUubF07KXN3aXRjaCh1bj17'@; put 'fSx1bi5uYW1lPWNwdGFibGUudXRpbHMuZGVjb2RlKEV0LEJlLnNsaWNlKEJlLmwsQmUubCtubikpLnJlcGxhY2UoL1tcdTAwMDBcclxuXS4qJC9nLCIiKSxCZS5sKz1ubix1bi50eXBlPVN0cmluZy5mcm9tQ2hhckNvZGUoQmUucmVhZF9zaGlmdCgxKSksMiE9WmUmJiFRZSYmKHVuLm9mZnNl'@; put 'dD1CZS5yZWFkX3NoaWZ0KDQpKSx1bi5sZW49QmUucmVhZF9zaGlmdCgxKSwyPT1aZSYmKHVuLm9mZnNldD1CZS5yZWFkX3NoaWZ0KDIpKSx1bi5kZWM9QmUucmVhZF9zaGlmdCgxKSx1bi5uYW1lLmxlbmd0aCYmVnQucHVzaCh1biksMiE9WmUmJihCZS5sKz1RZT8xMzoxNCksdW4udHlwZSl7'@; put 'Y2FzZSJCIjooIW10fHw4IT11bi5sZW4pJiZMZS5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK3VuLm5hbWUrIjoiK3VuLnR5cGUpO2JyZWFrO2Nhc2UiRyI6Y2FzZSJQIjpMZS5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK3VuLm5hbWUrIjoiK3VuLnR5cGUpO2JyZWFrO2Nhc2Ui'@; put 'KyI6Y2FzZSIwIjpjYXNlIkAiOmNhc2UiQyI6Y2FzZSJEIjpjYXNlIkYiOmNhc2UiSSI6Y2FzZSJMIjpjYXNlIk0iOmNhc2UiTiI6Y2FzZSJPIjpjYXNlIlQiOmNhc2UiWSI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gRmllbGQgVHlwZTogIit1bi50eXBlKX1pZigx'@; put 'MyE9PUJlW0JlLmxdJiYoQmUubD1rdC0xKSwxMyE9PUJlLnJlYWRfc2hpZnQoMSkpdGhyb3cgbmV3IEVycm9yKCJEQkYgVGVybWluYXRvciBub3QgZm91bmQgIitCZS5sKyIgIitCZVtCZS5sXSk7QmUubD1rdDt2YXIgYXI9MCxqbj0wO2ZvcihOZVswXT1bXSxqbj0wO2puIT1WdC5sZW5ndGg7'@; put 'KytqbilOZVswXVtqbl09VnRbam5dLm5hbWU7Zm9yKDtmdC0tID4wOylpZig0MiE9PUJlW0JlLmxdKWZvcigrK0JlLmwsTmVbKythcl09W10sam49MCxqbj0wO2puIT1WdC5sZW5ndGg7Kytqbil7dmFyIGtuPUJlLnNsaWNlKEJlLmwsQmUubCtWdFtqbl0ubGVuKTtCZS5sKz1WdFtqbl0ubGVu'@; put 'LE9sKGtuLDApO3ZhciBzcj1jcHRhYmxlLnV0aWxzLmRlY29kZShFdCxrbik7c3dpdGNoKFZ0W2puXS50eXBlKXtjYXNlIkMiOnNyLnRyaW0oKS5sZW5ndGgmJihOZVthcl1bam5dPXNyLnJlcGxhY2UoL1xzKyQvLCIiKSk7YnJlYWs7Y2FzZSJEIjpOZVthcl1bam5dPTg9PT1zci5sZW5ndGg/'@; put 'bmV3IERhdGUoK3NyLnNsaWNlKDAsNCksK3NyLnNsaWNlKDQsNiktMSwrc3Iuc2xpY2UoNiw4KSk6c3I7YnJlYWs7Y2FzZSJGIjpOZVthcl1bam5dPXBhcnNlRmxvYXQoc3IudHJpbSgpKTticmVhaztjYXNlIisiOmNhc2UiSSI6TmVbYXJdW2puXT1RZT8yMTQ3NDgzNjQ4XmtuLnJlYWRfc2hp'@; put 'ZnQoLTQsImkiKTprbi5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIkwiOnN3aXRjaChzci50cmltKCkudG9VcHBlckNhc2UoKSl7Y2FzZSJZIjpjYXNlIlQiOk5lW2FyXVtqbl09ITA7YnJlYWs7Y2FzZSJOIjpjYXNlIkYiOk5lW2FyXVtqbl09ITE7YnJlYWs7Y2FzZSIiOmNhc2UiPyI6'@; put 'YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnJlY29nbml6ZWQgTDp8IitzcisifCIpfWJyZWFrO2Nhc2UiTSI6aWYoIW50KXRocm93IG5ldyBFcnJvcigiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSAiK1plLnRvU3RyaW5nKDE2KSk7TmVbYXJdW2puXT0iIyNNRU1P'@; put 'IyMiKyhRZT9wYXJzZUludChzci50cmltKCksMTApOmtuLnJlYWRfc2hpZnQoNCkpO2JyZWFrO2Nhc2UiTiI6KHNyPXNyLnJlcGxhY2UoL1x1MDAwMC9nLCIiKS50cmltKCkpJiYiLiIhPXNyJiYoTmVbYXJdW2puXT0rc3J8fDApO2JyZWFrO2Nhc2UiQCI6TmVbYXJdW2puXT1uZXcgRGF0ZShr'@; put 'bi5yZWFkX3NoaWZ0KC04LCJmIiktNjIxMzU2ODMyZTUpO2JyZWFrO2Nhc2UiVCI6TmVbYXJdW2puXT1uZXcgRGF0ZSg4NjRlNSooa24ucmVhZF9zaGlmdCg0KS0yNDQwNTg4KStrbi5yZWFkX3NoaWZ0KDQpKTticmVhaztjYXNlIlkiOk5lW2FyXVtqbl09a24ucmVhZF9zaGlmdCg0LCJpIikv'@; put 'MWU0O2JyZWFrO2Nhc2UiTyI6TmVbYXJdW2puXT0ta24ucmVhZF9zaGlmdCgtOCwiZiIpO2JyZWFrO2Nhc2UiQiI6aWYobXQmJjg9PVZ0W2puXS5sZW4pe05lW2FyXVtqbl09a24ucmVhZF9zaGlmdCg4LCJmIik7YnJlYWt9Y2FzZSJHIjpjYXNlIlAiOmtuLmwrPVZ0W2puXS5sZW47YnJlYWs7'@; put 'Y2FzZSIwIjppZigiX051bGxGbGFncyI9PT1WdFtqbl0ubmFtZSlicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVuc3VwcG9ydGVkIGRhdGEgdHlwZSAiK1Z0W2puXS50eXBlKX19ZWxzZSBCZS5sKz1idDtpZigyIT1aZSYmQmUubDxCZS5sZW5ndGgmJjI2IT1CZVtCZS5sKytd'@; put 'KXRocm93IG5ldyBFcnJvcigiREJGIEVPRiBNYXJrZXIgbWlzc2luZyAiKyhCZS5sLTEpKyIgb2YgIitCZS5sZW5ndGgrIiAiK0JlW0JlLmwtMV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gTGUmJkxlLnNoZWV0Um93cyYmKE5lPU5lLnNsaWNlKDAsTGUuc2hlZXRSb3dzKSksTmV9KGRlLE5lKSxO'@; put 'ZSl9dmFyIHNlPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtyZXR1cm57dmVyc2lvbnM6WzIsMyw0OCw0OSwxMzEsMTM5LDE0MCwyNDVdLHRvX3dvcmtib29rOmZ1bmN0aW9uIFEoZGUsTGUpe3RyeXtyZXR1cm4gbW4oUChkZSxMZSksTGUpfWNhdGNoKE5lKXtpZihMZSYmTGUuV1RG'@; put 'KXRocm93IE5lfXJldHVybntTaGVldE5hbWVzOltdLFNoZWV0czp7fX19LHRvX3NoZWV0OlAsZnJvbV9zaGVldDpmdW5jdGlvbiBvZShkZSxMZSl7dmFyIE5lPUxlfHx7fTtpZigrTmUuY29kZXBhZ2U+PTAmJkgoK05lLmNvZGVwYWdlKSwic3RyaW5nIj09TmUudHlwZSl0aHJvdyBuZXcgRXJy'@; put 'b3IoIkNhbm5vdCB3cml0ZSBEQkYgdG8gSlMgc3RyaW5nIik7dmFyIEJlPU1jKCksWmU9JHkoZGUse2hlYWRlcjoxLHJhdzohMCxjZWxsRGF0ZXM6ITB9KSxudD1aZVswXSxtdD1aZS5zbGljZSgxKSxRZT0wLGZ0PTAsa3Q9MCxidD0xO2ZvcihRZT0wO1FlPG50Lmxlbmd0aDsrK1FlKWlmKG51'@; put 'bGwhPVFlKXtpZigrK2t0LCJudW1iZXIiPT10eXBlb2YgbnRbUWVdJiYobnRbUWVdPW50W1FlXS50b1N0cmluZygxMCkpLCJzdHJpbmciIT10eXBlb2YgbnRbUWVdKXRocm93IG5ldyBFcnJvcigiREJGIEludmFsaWQgY29sdW1uIG5hbWUgIitudFtRZV0rIiB8Iit0eXBlb2YgbnRbUWVdKyJ8'@; put 'Iik7aWYobnQuaW5kZXhPZihudFtRZV0pIT09UWUpZm9yKGZ0PTA7ZnQ8MTAyNDsrK2Z0KWlmKC0xPT1udC5pbmRleE9mKG50W1FlXSsiXyIrZnQpKXtudFtRZV0rPSJfIitmdDticmVha319dmFyIEV0PXl0KGRlWyIhcmVmIl0pLFZ0PVtdO2ZvcihRZT0wO1FlPD1FdC5lLmMtRXQucy5jOysr'@; put 'UWUpe3ZhciB1bj1bXTtmb3IoZnQ9MDtmdDxtdC5sZW5ndGg7KytmdCludWxsIT1tdFtmdF1bUWVdJiZ1bi5wdXNoKG10W2Z0XVtRZV0pO2lmKDAhPXVuLmxlbmd0aCYmbnVsbCE9bnRbUWVdKXt2YXIgbnI9IiIsbm49IiI7Zm9yKGZ0PTA7ZnQ8dW4ubGVuZ3RoOysrZnQpe3N3aXRjaCh0eXBl'@; put 'b2YgdW5bZnRdKXtjYXNlIm51bWJlciI6bm49IkIiO2JyZWFrO2Nhc2Uic3RyaW5nIjpkZWZhdWx0Om5uPSJDIjticmVhaztjYXNlImJvb2xlYW4iOm5uPSJMIjticmVhaztjYXNlIm9iamVjdCI6bm49dW5bZnRdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyJ9aWYoIkMiPT0obnI9bnImJm5yIT1u'@; put 'bj8iQyI6bm4pKWJyZWFrfWJ0Kz1zZVtucl18fDAsVnRbUWVdPW5yfWVsc2UgVnRbUWVdPSI/In12YXIgYXI9QmUubmV4dCgzMik7Zm9yKGFyLndyaXRlX3NoaWZ0KDQsMzE4OTAyNTc2KSxhci53cml0ZV9zaGlmdCg0LG10Lmxlbmd0aCksYXIud3JpdGVfc2hpZnQoMiwyOTYrMzIqa3QpLGFy'@; put 'LndyaXRlX3NoaWZ0KDIsYnQpLFFlPTA7UWU8NDsrK1FlKWFyLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKGFyLndyaXRlX3NoaWZ0KDQsKCtfW3ddfHwzKTw8OCksUWU9MCxmdD0wO1FlPG50Lmxlbmd0aDsrK1FlKWlmKG51bGwhPW50W1FlXSl7dmFyIGpuPUJlLm5leHQoMzIpLGtuPShudFtRZV0u'@; put 'c2xpY2UoLTEwKSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIpLnNsaWNlKDAsMTEpO2puLndyaXRlX3NoaWZ0KDEsa24sInNiY3MiKSxqbi53cml0ZV9zaGlmdCgxLCI/Ij09VnRbUWVdPyJDIjpWdFtRZV0sInNiY3MiKSxqbi53cml0ZV9zaGlmdCg0LGZ0KSxqbi53cml0ZV9zaGlmdCgxLHNl'@; put 'W1Z0W1FlXV18fDApLGpuLndyaXRlX3NoaWZ0KDEsMCksam4ud3JpdGVfc2hpZnQoMSwyKSxqbi53cml0ZV9zaGlmdCg0LDApLGpuLndyaXRlX3NoaWZ0KDEsMCksam4ud3JpdGVfc2hpZnQoNCwwKSxqbi53cml0ZV9zaGlmdCg0LDApLGZ0Kz1zZVtWdFtRZV1dfHwwfXZhciBzcj1CZS5uZXh0'@; put 'KDI2NCk7Zm9yKHNyLndyaXRlX3NoaWZ0KDQsMTMpLFFlPTA7UWU8NjU7KytRZSlzci53cml0ZV9zaGlmdCg0LDApO2ZvcihRZT0wO1FlPG10Lmxlbmd0aDsrK1FlKXt2YXIgZ3I9QmUubmV4dChidCk7Zm9yKGdyLndyaXRlX3NoaWZ0KDEsMCksZnQ9MDtmdDxudC5sZW5ndGg7KytmdClpZihu'@; put 'dWxsIT1udFtmdF0pc3dpdGNoKFZ0W2Z0XSl7Y2FzZSJMIjpnci53cml0ZV9zaGlmdCgxLG51bGw9PW10W1FlXVtmdF0/NjM6bXRbUWVdW2Z0XT84NDo3MCk7YnJlYWs7Y2FzZSJCIjpnci53cml0ZV9zaGlmdCg4LG10W1FlXVtmdF18fDAsImYiKTticmVhaztjYXNlIkQiOm10W1FlXVtmdF0/'@; put 'KGdyLndyaXRlX3NoaWZ0KDQsKCIwMDAwIittdFtRZV1bZnRdLmdldEZ1bGxZZWFyKCkpLnNsaWNlKC00KSwic2JjcyIpLGdyLndyaXRlX3NoaWZ0KDIsKCIwMCIrKG10W1FlXVtmdF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksZ3Iud3JpdGVfc2hpZnQoMiwoIjAwIittdFtR'@; put 'ZV1bZnRdLmdldERhdGUoKSkuc2xpY2UoLTIpLCJzYmNzIikpOmdyLndyaXRlX3NoaWZ0KDgsIjAwMDAwMDAwIiwic2JjcyIpO2JyZWFrO2Nhc2UiQyI6dmFyIHFuPVN0cmluZyhtdFtRZV1bZnRdfHwiIik7Zm9yKGdyLndyaXRlX3NoaWZ0KDEscW4sInNiY3MiKSxrdD0wO2t0PDI1MC1xbi5s'@; put 'ZW5ndGg7KytrdClnci53cml0ZV9zaGlmdCgxLDMyKX19cmV0dXJuIEJlLm5leHQoMSkud3JpdGVfc2hpZnQoMSwyNiksQmUuZW5kKCl9fX0oKSxzUz1mdW5jdGlvbigpe3ZhciBkPXtBQToiXHhjMCIsQkE6Ilx4YzEiLENBOiJceGMyIixEQToxOTUsSEE6Ilx4YzQiLEpBOjE5NyxBRToiXHhj'@; put 'OCIsQkU6Ilx4YzkiLENFOiJceGNhIixIRToiXHhjYiIsQUk6Ilx4Y2MiLEJJOiJceGNkIixDSToiXHhjZSIsSEk6Ilx4Y2YiLEFPOiJceGQyIixCTzoiXHhkMyIsQ086Ilx4ZDQiLERPOjIxMyxITzoiXHhkNiIsQVU6Ilx4ZDkiLEJVOiJceGRhIixDVToiXHhkYiIsSFU6Ilx4ZGMiLEFhOiJc'@; put 'eGUwIixCYToiXHhlMSIsQ2E6Ilx4ZTIiLERhOjIyNyxIYToiXHhlNCIsSmE6MjI5LEFlOiJceGU4IixCZToiXHhlOSIsQ2U6Ilx4ZWEiLEhlOiJceGViIixBaToiXHhlYyIsQmk6Ilx4ZWQiLENpOiJceGVlIixIaToiXHhlZiIsQW86Ilx4ZjIiLEJvOiJceGYzIixDbzoiXHhmNCIsRG86MjQ1'@; put 'LEhvOiJceGY2IixBdToiXHhmOSIsQnU6Ilx4ZmEiLEN1OiJceGZiIixIdToiXHhmYyIsS0M6Ilx4YzciLEtjOiJceGU3IixxOiJceGU2Iix6OiJcdTAxNTMiLGE6Ilx4YzYiLGo6Ilx1MDE1MiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYs'@; put 'MToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4'@; put 'OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30sXz1uZXcgUmVnRXhwKCJceDFiTigiK0ZlKGQpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpLG09ZnVuY3Rpb24oWmUsbnQpe3ZhciBtdD1kW250XTty'@; put 'ZXR1cm4ibnVtYmVyIj09dHlwZW9mIG10P3EobXQpOm10fSxUPWZ1bmN0aW9uKFplLG50LG10KXt2YXIgUWU9bnQuY2hhckNvZGVBdCgwKS0zMjw8NHxtdC5jaGFyQ29kZUF0KDApLTQ4O3JldHVybiA1OT09UWU/WmU6cShRZSl9O2Z1bmN0aW9uIFEoWmUsbnQpe3ZhciBzcixtdD1aZS5zcGxp'@; put 'dCgvW1xuXHJdKy8pLFFlPS0xLGZ0PS0xLGt0PTAsYnQ9MCxFdD1bXSxWdD1bXSx1bj1udWxsLG5yPXt9LG5uPVtdLGFyPVtdLGpuPVtdLGtuPTA7Zm9yKCtudC5jb2RlcGFnZT49MCYmSCgrbnQuY29kZXBhZ2UpO2t0IT09bXQubGVuZ3RoOysra3Qpe2tuPTA7dmFyIE9pLGdyPW10W2t0XS50'@; put 'cmltKCkucmVwbGFjZSgvXHgxQihbXHgyMC1ceDJGXSkoW1x4MzAtXHgzRl0pL2csVCkucmVwbGFjZShfLG0pLHFuPWdyLnJlcGxhY2UoLzs7L2csIlwwIikuc3BsaXQoIjsiKS5tYXAoZnVuY3Rpb24oamkpe3JldHVybiBqaS5yZXBsYWNlKC9cdTAwMDAvZywiOyIpfSk7aWYoZ3IubGVuZ3Ro'@; put 'PjApc3dpdGNoKHFuWzBdKXtjYXNlIklEIjpjYXNlIkUiOmNhc2UiQiI6Y2FzZSJPIjpjYXNlIlciOmJyZWFrO2Nhc2UiUCI6IlAiPT1xblsxXS5jaGFyQXQoMCkmJlZ0LnB1c2goZ3Iuc2xpY2UoMykucmVwbGFjZSgvOzsvZywiOyIpKTticmVhaztjYXNlIkMiOnZhciBzbz0hMSxtbz0hMSxM'@; put 'aT0hMSxrcj0hMSxEbj0tMSxPcj0tMTtmb3IoYnQ9MTtidDxxbi5sZW5ndGg7KytidClzd2l0Y2gocW5bYnRdLmNoYXJBdCgwKSl7Y2FzZSJBIjpjYXNlIkciOmJyZWFrO2Nhc2UiWCI6ZnQ9cGFyc2VJbnQocW5bYnRdLnNsaWNlKDEpKS0xLG1vPSEwO2JyZWFrO2Nhc2UiWSI6Zm9yKFFlPXBh'@; put 'cnNlSW50KHFuW2J0XS5zbGljZSgxKSktMSxtb3x8KGZ0PTApLHNyPUV0Lmxlbmd0aDtzcjw9UWU7KytzcilFdFtzcl09W107YnJlYWs7Y2FzZSJLIjonIic9PT0oT2k9cW5bYnRdLnNsaWNlKDEpKS5jaGFyQXQoMCk/T2k9T2kuc2xpY2UoMSxPaS5sZW5ndGgtMSk6IlRSVUUiPT09T2k/T2k9'@; put 'ITA6IkZBTFNFIj09PU9pP09pPSExOmlzTmFOKHVyKE9pKSk/aXNOYU4oWm4oT2kpLmdldERhdGUoKSl8fChPaT1sbihPaSkpOihPaT11cihPaSksbnVsbCE9PXVuJiZJLmlzX2RhdGUodW4pJiYoT2k9JHQoT2kpKSksdHlwZW9mIGNwdGFibGU8InUiJiYic3RyaW5nIj09dHlwZW9mIE9pJiYi'@; put 'c3RyaW5nIiE9KG50fHx7fSkudHlwZSYmKG50fHx7fSkuY29kZXBhZ2UmJihPaT1jcHRhYmxlLnV0aWxzLmRlY29kZShudC5jb2RlcGFnZSxPaSkpLHNvPSEwO2JyZWFrO2Nhc2UiRSI6a3I9ITA7dmFyIF9yPVI4KHFuW2J0XS5zbGljZSgxKSx7cjpRZSxjOmZ0fSk7RXRbUWVdW2Z0XT1bRXRb'@; put 'UWVdW2Z0XSxfcl07YnJlYWs7Y2FzZSJTIjpMaT0hMCxFdFtRZV1bZnRdPVtFdFtRZV1bZnRdLCJTNVMiXTticmVhaztjYXNlIlIiOkRuPXBhcnNlSW50KHFuW2J0XS5zbGljZSgxKSktMTticmVhaztjYXNlIkMiOk9yPXBhcnNlSW50KHFuW2J0XS5zbGljZSgxKSktMTticmVhaztkZWZhdWx0'@; put 'OmlmKG50JiZudC5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIitncil9aWYoc28mJihFdFtRZV1bZnRdJiYyPT1FdFtRZV1bZnRdLmxlbmd0aD9FdFtRZV1bZnRdWzBdPU9pOkV0W1FlXVtmdF09T2ksdW49bnVsbCksTGkpe2lmKGtyKXRocm93IG5ldyBFcnJvcigiU1lM'@; put 'SyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgaGF2ZSBvd24gZm9ybXVsYSIpO3ZhciBNbj1Ebj4tMSYmRXRbRG5dW09yXTtpZighTW58fCFNblsxXSl0aHJvdyBuZXcgRXJyb3IoIlNZTEsgc2hhcmVkIGZvcm11bGEgY2Fubm90IGZpbmQgYmFzZSIpO0V0W1FlXVtmdF1bMV09blYoTW5bMV0se3I6'@; put 'UWUtRG4sYzpmdC1Pcn0pfWJyZWFrO2Nhc2UiRiI6dmFyIE5yPTA7Zm9yKGJ0PTE7YnQ8cW4ubGVuZ3RoOysrYnQpc3dpdGNoKHFuW2J0XS5jaGFyQXQoMCkpe2Nhc2UiWCI6ZnQ9cGFyc2VJbnQocW5bYnRdLnNsaWNlKDEpKS0xLCsrTnI7YnJlYWs7Y2FzZSJZIjpmb3IoUWU9cGFyc2VJbnQo'@; put 'cW5bYnRdLnNsaWNlKDEpKS0xLHNyPUV0Lmxlbmd0aDtzcjw9UWU7KytzcilFdFtzcl09W107YnJlYWs7Y2FzZSJNIjprbj1wYXJzZUludChxbltidF0uc2xpY2UoMSkpLzIwO2JyZWFrO2Nhc2UiRiI6Y2FzZSJHIjpjYXNlIlMiOmNhc2UiRCI6Y2FzZSJOIjpicmVhaztjYXNlIlAiOnVuPVZ0'@; put 'W3BhcnNlSW50KHFuW2J0XS5zbGljZSgxKSldO2JyZWFrO2Nhc2UiVyI6Zm9yKGpuPXFuW2J0XS5zbGljZSgxKS5zcGxpdCgiICIpLHNyPXBhcnNlSW50KGpuWzBdLDEwKTtzcjw9cGFyc2VJbnQoam5bMV0sMTApOysrc3Ipa249cGFyc2VJbnQoam5bMl0sMTApLGFyW3NyLTFdPTA9PT1rbj97'@; put 'aGlkZGVuOiEwfTp7d2NoOmtufSxCMChhcltzci0xXSk7YnJlYWs7Y2FzZSJDIjphcltmdD1wYXJzZUludChxbltidF0uc2xpY2UoMSkpLTFdfHwoYXJbZnRdPXt9KTticmVhaztjYXNlIlIiOm5uW1FlPXBhcnNlSW50KHFuW2J0XS5zbGljZSgxKSktMV18fChubltRZV09e30pLGtuPjA/KG5u'@; put 'W1FlXS5ocHQ9a24sbm5bUWVdLmhweD1OZyhrbikpOjA9PT1rbiYmKG5uW1FlXS5oaWRkZW49ITApO2JyZWFrO2RlZmF1bHQ6aWYobnQmJm50LldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK2dyKX1OcjwxJiYodW49bnVsbCk7YnJlYWs7ZGVmYXVsdDppZihudCYmbnQu'@; put 'V1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrZ3IpfX1yZXR1cm4gbm4ubGVuZ3RoPjAmJihuclsiIXJvd3MiXT1ubiksYXIubGVuZ3RoPjAmJihuclsiIWNvbHMiXT1hciksbnQmJm50LnNoZWV0Um93cyYmKEV0PUV0LnNsaWNlKDAsbnQuc2hlZXRSb3dzKSksW0V0LG5y'@; put 'XX1mdW5jdGlvbiBzZShaZSxudCl7dmFyIG10PWZ1bmN0aW9uIFAoWmUsbnQpe3N3aXRjaChudC50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIFEoQ2UuZGVjb2RlKFplKSxudCk7Y2FzZSJiaW5hcnkiOnJldHVybiBRKFplLG50KTtjYXNlImJ1ZmZlciI6cmV0dXJuIFEoWmUudG9TdHJpbmco'@; put 'ImJpbmFyeSIpLG50KTtjYXNlImFycmF5IjpyZXR1cm4gUShPbihaZSksbnQpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitudC50eXBlKX0oWmUsbnQpLGZ0PW10WzFdLGt0PVFuKG10WzBdLG50KTtyZXR1cm4gRmUoZnQpLmZvckVhY2goZnVuY3Rpb24oYnQpe2t0W2J0'@; put 'XT1mdFtidF19KSxrdH1mdW5jdGlvbiBkZShaZSxudCxtdCxRZSl7dmFyIGZ0PSJDO1kiKyhtdCsxKSsiO1giKyhRZSsxKSsiO0siO3N3aXRjaChaZS50KXtjYXNlIm4iOmZ0Kz1aZS52fHwwLFplLmYmJiFaZS5GJiYoZnQrPSI7RSIraGsoWmUuZix7cjptdCxjOlFlfSkpO2JyZWFrO2Nhc2Ui'@; put 'YiI6ZnQrPVplLnY/IlRSVUUiOiJGQUxTRSI7YnJlYWs7Y2FzZSJlIjpmdCs9WmUud3x8WmUudjticmVhaztjYXNlImQiOmZ0Kz0nIicrKFplLnd8fFplLnYpKyciJzticmVhaztjYXNlInMiOmZ0Kz0nIicrWmUudi5yZXBsYWNlKC8iL2csIiIpKyciJ31yZXR1cm4gZnR9cmV0dXJuIGRbInwi'@; put 'XT0yNTQse3RvX3dvcmtib29rOmZ1bmN0aW9uIG9lKFplLG50KXtyZXR1cm4gbW4oc2UoWmUsbnQpLG50KX0sdG9fc2hlZXQ6c2UsZnJvbV9zaGVldDpmdW5jdGlvbiBCZShaZSxudCl7dmFyIGt0LG10PVsiSUQ7UFNoZWV0SlM7TjtFIl0sUWU9W10sZnQ9eXQoWmVbIiFyZWYiXSksYnQ9QXJy'@; put 'YXkuaXNBcnJheShaZSksRXQ9IlxyXG4iO210LnB1c2goIlA7UEdlbmVyYWwiKSxtdC5wdXNoKCJGO1AwO0RHMEc4O00yNTUiKSxaZVsiIWNvbHMiXSYmZnVuY3Rpb24gTGUoWmUsbnQpe250LmZvckVhY2goZnVuY3Rpb24obXQsUWUpe3ZhciBmdD0iRjtXIisoUWUrMSkrIiAiKyhRZSsxKSsi'@; put 'ICI7bXQuaGlkZGVuP2Z0Kz0iMCI6KCJudW1iZXIiPT10eXBlb2YgbXQud2lkdGgmJiFtdC53cHgmJihtdC53cHg9ZjUobXQud2lkdGgpKSwibnVtYmVyIj09dHlwZW9mIG10LndweCYmIW10LndjaCYmKG10LndjaD15OChtdC53cHgpKSwibnVtYmVyIj09dHlwZW9mIG10LndjaCYmKGZ0Kz1N'@; put 'YXRoLnJvdW5kKG10LndjaCkpKSwiICIhPWZ0LmNoYXJBdChmdC5sZW5ndGgtMSkmJlplLnB1c2goZnQpfSl9KG10LFplWyIhY29scyJdKSxaZVsiIXJvd3MiXSYmZnVuY3Rpb24gTmUoWmUsbnQpe250LmZvckVhY2goZnVuY3Rpb24obXQsUWUpe3ZhciBmdD0iRjsiO210LmhpZGRlbj9mdCs9'@; put 'Ik0wOyI6bXQuaHB0P2Z0Kz0iTSIrMjAqbXQuaHB0KyI7IjptdC5ocHgmJihmdCs9Ik0iKzIwKmI4KG10LmhweCkrIjsiKSxmdC5sZW5ndGg+MiYmWmUucHVzaChmdCsiUiIrKFFlKzEpKX0pfShtdCxaZVsiIXJvd3MiXSksbXQucHVzaCgiQjtZIisoZnQuZS5yLWZ0LnMucisxKSsiO1giKyhm'@; put 'dC5lLmMtZnQucy5jKzEpKyI7RCIrW2Z0LnMuYyxmdC5zLnIsZnQuZS5jLGZ0LmUucl0uam9pbigiICIpKTtmb3IodmFyIFZ0PWZ0LnMucjtWdDw9ZnQuZS5yOysrVnQpZm9yKHZhciB1bj1mdC5zLmM7dW48PWZ0LmUuYzsrK3VuKXt2YXIgbnI9cWkoe3I6VnQsYzp1bn0pOyhrdD1idD8oWmVb'@; put 'VnRdfHxbXSlbdW5dOlplW25yXSkmJihudWxsIT1rdC52fHxrdC5mJiYha3QuRikmJlFlLnB1c2goZGUoa3QsMCxWdCx1bikpfXJldHVybiBtdC5qb2luKEV0KStFdCtRZS5qb2luKEV0KStFdCsiRSIrRXR9fX0oKSxsUz1mdW5jdGlvbigpe2Z1bmN0aW9uIF8oUSxzZSl7Zm9yKHZhciBvZT1R'@; put 'LnNwbGl0KCJcbiIpLGRlPS0xLExlPS0xLE5lPTAsQmU9W107TmUhPT1vZS5sZW5ndGg7KytOZSlpZigiQk9UIiE9PW9lW05lXS50cmltKCkpe2lmKCEoZGU8MCkpe2Zvcih2YXIgWmU9b2VbTmVdLnRyaW0oKS5zcGxpdCgiLCIpLG50PVplWzBdLG10PVplWzFdLFFlPW9lWysrTmVdfHwiIjsx'@; put 'JihRZS5tYXRjaCgvWyJdL2cpfHxbXSkubGVuZ3RoJiZOZTxvZS5sZW5ndGgtMTspUWUrPSJcbiIrb2VbKytOZV07c3dpdGNoKFFlPVFlLnRyaW0oKSwrbnQpe2Nhc2UtMTppZigiQk9UIj09PVFlKXtCZVsrK2RlXT1bXSxMZT0wO2NvbnRpbnVlfWlmKCJFT0QiIT09UWUpdGhyb3cgbmV3IEVy'@; put 'cm9yKCJVbnJlY29nbml6ZWQgRElGIHNwZWNpYWwgY29tbWFuZCAiK1FlKTticmVhaztjYXNlIDA6QmVbZGVdW0xlXT0iVFJVRSI9PT1RZXx8IkZBTFNFIiE9PVFlJiYoaXNOYU4odXIobXQpKT9pc05hTihabihtdCkuZ2V0RGF0ZSgpKT9tdDpsbihtdCk6dXIobXQpKSwrK0xlO2JyZWFrO2Nh'@; put 'c2UgMTooUWU9KFFlPVFlLnNsaWNlKDEsUWUubGVuZ3RoLTEpKS5yZXBsYWNlKC8iIi9nLCciJykpJiZRZS5tYXRjaCgvXj0iLioiJC8pJiYoUWU9UWUuc2xpY2UoMiwtMSkpLEJlW2RlXVtMZSsrXT0iIiE9PVFlP1FlOm51bGx9aWYoIkVPRCI9PT1RZSlicmVha319ZWxzZSBCZVsrK2RlXT1b'@; put 'XSxMZT0wO3JldHVybiBzZSYmc2Uuc2hlZXRSb3dzJiYoQmU9QmUuc2xpY2UoMCxzZS5zaGVldFJvd3MpKSxCZX1mdW5jdGlvbiBtKFEsc2Upe3JldHVybiBRbihmdW5jdGlvbiBkKFEsc2Upe3N3aXRjaChzZS50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIF8oQ2UuZGVjb2RlKFEpLHNlKTtj'@; put 'YXNlImJpbmFyeSI6cmV0dXJuIF8oUSxzZSk7Y2FzZSJidWZmZXIiOnJldHVybiBfKFEudG9TdHJpbmcoImJpbmFyeSIpLHNlKTtjYXNlImFycmF5IjpyZXR1cm4gXyhPbihRKSxzZSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK3NlLnR5cGUpfShRLHNlKSxzZSl9cmV0'@; put 'dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIFQoUSxzZSl7cmV0dXJuIG1uKG0oUSxzZSksc2UpfSx0b19zaGVldDptLGZyb21fc2hlZXQ6ZnVuY3Rpb24oKXt2YXIgUT1mdW5jdGlvbihkZSxMZSxOZSxCZSxaZSl7ZGUucHVzaChMZSksZGUucHVzaChOZSsiLCIrQmUpLGRlLnB1c2goJyInK1pl'@; put 'LnJlcGxhY2UoLyIvZywnIiInKSsnIicpfSxzZT1mdW5jdGlvbihkZSxMZSxOZSxCZSl7ZGUucHVzaChMZSsiLCIrTmUpLGRlLnB1c2goMT09TGU/JyInK0JlLnJlcGxhY2UoLyIvZywnIiInKSsnIic6QmUpfTtyZXR1cm4gZnVuY3Rpb24oZGUpe3ZhciBCZSxMZT1bXSxOZT15dChkZVsiIXJl'@; put 'ZiJdKSxaZT1BcnJheS5pc0FycmF5KGRlKTtRKExlLCJUQUJMRSIsMCwxLCJzaGVldGpzIiksUShMZSwiVkVDVE9SUyIsMCxOZS5lLnItTmUucy5yKzEsIiIpLFEoTGUsIlRVUExFUyIsMCxOZS5lLmMtTmUucy5jKzEsIiIpLFEoTGUsIkRBVEEiLDAsMCwiIik7Zm9yKHZhciBudD1OZS5zLnI7'@; put 'bnQ8PU5lLmUucjsrK250KXtzZShMZSwtMSwwLCJCT1QiKTtmb3IodmFyIG10PU5lLnMuYzttdDw9TmUuZS5jOysrbXQpe3ZhciBRZT1xaSh7cjpudCxjOm10fSk7aWYoQmU9WmU/KGRlW250XXx8W10pW210XTpkZVtRZV0pc3dpdGNoKEJlLnQpe2Nhc2UibiI6dmFyIGZ0PUJlLnc7IWZ0JiZu'@; put 'dWxsIT1CZS52JiYoZnQ9QmUudiksbnVsbD09ZnQ/c2UoTGUsMSwwLEJlLmYmJiFCZS5GPyI9IitCZS5mOiIiKTpzZShMZSwwLGZ0LCJWIik7YnJlYWs7Y2FzZSJiIjpzZShMZSwwLEJlLnY/MTowLEJlLnY/IlRSVUUiOiJGQUxTRSIpO2JyZWFrO2Nhc2UicyI6c2UoTGUsMSwwLGlzTmFOKEJl'@; put 'LnYpP0JlLnY6Jz0iJytCZS52KyciJyk7YnJlYWs7Y2FzZSJkIjpCZS53fHwoQmUudz1JLmZvcm1hdChCZS56fHxJLl90YWJsZVsxNF0sS2UobG4oQmUudikpKSksc2UoTGUsMCxCZS53LCJWIik7YnJlYWs7ZGVmYXVsdDpzZShMZSwxLDAsIiIpfWVsc2Ugc2UoTGUsMSwwLCIiKX19cmV0dXJu'@; put 'IHNlKExlLC0xLDAsIkVPRCIpLExlLmpvaW4oIlxyXG4iKX19KCl9fSgpLFYwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChCZSl7cmV0dXJuIEJlLnJlcGxhY2UoL1xcYi9nLCJcXCIpLnJlcGxhY2UoL1xcYy9nLCI6IikucmVwbGFjZSgvXFxuL2csIlxuIil9ZnVuY3Rpb24gXyhCZSl7cmV0dXJu'@; put 'IEJlLnJlcGxhY2UoL1xcL2csIlxcYiIpLnJlcGxhY2UoLzovZywiXFxjIikucmVwbGFjZSgvXG4vZywiXFxuIil9ZnVuY3Rpb24gVChCZSxaZSl7cmV0dXJuIFFuKGZ1bmN0aW9uIG0oQmUsWmUpe2Zvcih2YXIgbnQ9QmUuc3BsaXQoIlxuIiksbXQ9LTEsUWU9LTEsZnQ9MCxrdD1bXTtmdCE9'@; put 'PW50Lmxlbmd0aDsrK2Z0KXt2YXIgYnQ9bnRbZnRdLnRyaW0oKS5zcGxpdCgiOiIpO2lmKCJjZWxsIj09PWJ0WzBdKXt2YXIgRXQ9SXMoYnRbMV0pO2lmKGt0Lmxlbmd0aDw9RXQucilmb3IobXQ9a3QubGVuZ3RoO210PD1FdC5yOysrbXQpa3RbbXRdfHwoa3RbbXRdPVtdKTtzd2l0Y2gobXQ9'@; put 'RXQucixRZT1FdC5jLGJ0WzJdKXtjYXNlInQiOmt0W210XVtRZV09ZChidFszXSk7YnJlYWs7Y2FzZSJ2IjprdFttdF1bUWVdPStidFszXTticmVhaztjYXNlInZ0ZiI6dmFyIFZ0PWJ0W2J0Lmxlbmd0aC0xXTtjYXNlInZ0YyI6a3RbbXRdW1FlXT0ibmwiPT09YnRbM10/ISErYnRbNF06K2J0'@; put 'WzRdLCJ2dGYiPT1idFsyXSYmKGt0W210XVtRZV09W2t0W210XVtRZV0sVnRdKX19fXJldHVybiBaZSYmWmUuc2hlZXRSb3dzJiYoa3Q9a3Quc2xpY2UoMCxaZS5zaGVldFJvd3MpKSxrdH0oQmUsWmUpLFplKX12YXIgUT1bInNvY2lhbGNhbGM6dmVyc2lvbjoxLjUiLCJNSU1FLVZlcnNpb246'@; put 'IDEuMCIsIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZSJdLmpvaW4oIlxuIiksc2U9WyItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlIiwiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluOyBjaGFy'@; put 'c2V0PVVURi04Il0uam9pbigiXG4iKSsiXG4iLG9lPVsiIyBTb2NpYWxDYWxjIFNwcmVhZHNoZWV0IENvbnRyb2wgU2F2ZSIsInBhcnQ6c2hlZXQiXS5qb2luKCJcbiIpLGRlPSItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlLS0iO2Z1bmN0aW9uIExlKEJlKXtpZighQmV8fCFC'@; put 'ZVsiIXJlZiJdKXJldHVybiIiO2Zvcih2YXIgbXQsWmU9W10sbnQ9W10sUWU9IiIsZnQ9emEoQmVbIiFyZWYiXSksa3Q9QXJyYXkuaXNBcnJheShCZSksYnQ9ZnQucy5yO2J0PD1mdC5lLnI7KytidClmb3IodmFyIEV0PWZ0LnMuYztFdDw9ZnQuZS5jOysrRXQpaWYoUWU9cWkoe3I6YnQsYzpF'@; put 'dH0pLChtdD1rdD8oQmVbYnRdfHxbXSlbRXRdOkJlW1FlXSkmJm51bGwhPW10LnYmJiJ6IiE9PW10LnQpe3N3aXRjaChudD1bImNlbGwiLFFlLCJ0Il0sbXQudCl7Y2FzZSJzIjpjYXNlInN0ciI6bnQucHVzaChfKG10LnYpKTticmVhaztjYXNlIm4iOm10LmY/KG50WzJdPSJ2dGYiLG50WzNd'@; put 'PSJuIixudFs0XT1tdC52LG50WzVdPV8obXQuZikpOihudFsyXT0idiIsbnRbM109bXQudik7YnJlYWs7Y2FzZSJiIjpudFsyXT0idnQiKyhtdC5mPyJmIjoiYyIpLG50WzNdPSJubCIsbnRbNF09bXQudj8iMSI6IjAiLG50WzVdPV8obXQuZnx8KG10LnY/IlRSVUUiOiJGQUxTRSIpKTticmVh'@; put 'aztjYXNlImQiOnZhciBWdD1LZShsbihtdC52KSk7bnRbMl09InZ0YyIsbnRbM109Im5kIixudFs0XT0iIitWdCxudFs1XT1tdC53fHxJLmZvcm1hdChtdC56fHxJLl90YWJsZVsxNF0sVnQpO2JyZWFrO2Nhc2UiZSI6Y29udGludWV9WmUucHVzaChudC5qb2luKCI6IikpfXJldHVybiBaZS5w'@; put 'dXNoKCJzaGVldDpjOiIrKGZ0LmUuYy1mdC5zLmMrMSkrIjpyOiIrKGZ0LmUuci1mdC5zLnIrMSkrIjp0dmY6MSIpLFplLnB1c2goInZhbHVlZm9ybWF0OjE6dGV4dC13aWtpIiksWmUuam9pbigiXG4iKX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gUChCZSxaZSl7cmV0dXJuIG1uKFQo'@; put 'QmUsWmUpLFplKX0sdG9fc2hlZXQ6VCxmcm9tX3NoZWV0OmZ1bmN0aW9uIE5lKEJlKXtyZXR1cm5bUSxzZSxvZSxzZSxMZShCZSksZGVdLmpvaW4oIlxuIil9fX0oKSx2OD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoTmUsQmUsWmUsbnQsbXQpe210LnJhdz9CZVtaZV1bbnRdPU5lOiIiPT09TmV8'@; put 'fChCZVtaZV1bbnRdPVNuKE5lLG10KT9TbihOZSxtdCkudjpOZSl9dmFyIG09ezQ0OiIsIiw5OiJcdCIsNTk6IjsifSxUPXs0NDozLDk6Miw1OToxfTtmdW5jdGlvbiBQKE5lKXtmb3IodmFyIEJlPXt9LFplPSExLG50PTAsbXQ9MDtudDxOZS5sZW5ndGg7KytudCkzND09KG10PU5lLmNoYXJD'@; put 'b2RlQXQobnQpKT9aZT0hWmU6IVplJiZtdCBpbiBtJiYoQmVbbXRdPShCZVttdF18fDApKzEpO2ZvcihudCBpbiBtdD1bXSxCZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQmUsbnQpJiZtdC5wdXNoKFtCZVtudF0sbnRdKTtpZighbXQubGVuZ3RoKWZvcihudCBpbiBC'@; put 'ZT1UKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCZSxudCkmJm10LnB1c2goW0JlW250XSxudF0pO3JldHVybiBtdC5zb3J0KGZ1bmN0aW9uKFFlLGZ0KXtyZXR1cm4gUWVbMF0tZnRbMF18fFRbUWVbMV1dLVRbZnRbMV1dfSksbVttdC5wb3AoKVsxXV19ZnVuY3Rpb24g'@; put 'c2UoTmUsQmUpe3JldHVybiFCZXx8IUJlLlBSTnx8InNlcD0iPT1OZS5zbGljZSgwLDQpfHxOZS5pbmRleE9mKCJcdCIpPj0wfHxOZS5pbmRleE9mKCIsIik+PTB8fE5lLmluZGV4T2YoIjsiKT49MD9mdW5jdGlvbiBRKE5lLEJlKXt2YXIgWmU9QmV8fHt9LG50PSIiLG10PVplLmRlbnNlP1td'@; put 'Ont9LFFlPXtzOntjOjAscjowfSxlOntjOjAscjowfX07InNlcD0iPT1OZS5zbGljZSgwLDQpPzEzPT1OZS5jaGFyQ29kZUF0KDUpJiYxMD09TmUuY2hhckNvZGVBdCg2KT8obnQ9TmUuY2hhckF0KDQpLE5lPU5lLnNsaWNlKDcpKToxMz09TmUuY2hhckNvZGVBdCg1KXx8MTA9PU5lLmNoYXJD'@; put 'b2RlQXQoNSk/KG50PU5lLmNoYXJBdCg0KSxOZT1OZS5zbGljZSg2KSk6bnQ9UChOZS5zbGljZSgwLDEwMjQpKTpudD1QKE5lLnNsaWNlKDAsMTAyNCkpO3ZhciBmdD0wLGt0PTAsYnQ9MCxFdD0wLFZ0PTAsdW49bnQuY2hhckNvZGVBdCgwKSxucj0hMSxubj0wLGFyPU5lLmNoYXJDb2RlQXQo'@; put 'MCk7TmU9TmUucmVwbGFjZSgvXHJcbi9nbSwiXG4iKTt2YXIgam49bnVsbCE9WmUuZGF0ZU5GP2Z1bmN0aW9uIG90KGQpe3ZhciBfPSJudW1iZXIiPT10eXBlb2YgZD9JLl90YWJsZVtkXTpkO3JldHVybiBfPV8ucmVwbGFjZShQZSwiKFxcZCspIiksbmV3IFJlZ0V4cCgiXiIrXysiJCIpfSha'@; put 'ZS5kYXRlTkYpOm51bGw7ZnVuY3Rpb24ga24oKXt2YXIgc3I9TmUuc2xpY2UoRXQsVnQpLGdyPXt9O2lmKCciJz09c3IuY2hhckF0KDApJiYnIic9PXNyLmNoYXJBdChzci5sZW5ndGgtMSkmJihzcj1zci5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLDA9PT1zci5sZW5ndGgpZ3Iu'@; put 'dD0ieiI7ZWxzZSBpZihaZS5yYXcpZ3IudD0icyIsZ3Iudj1zcjtlbHNlIGlmKDA9PT1zci50cmltKCkubGVuZ3RoKWdyLnQ9InMiLGdyLnY9c3I7ZWxzZSBpZig2MT09c3IuY2hhckNvZGVBdCgwKSkzND09c3IuY2hhckNvZGVBdCgxKSYmMzQ9PXNyLmNoYXJDb2RlQXQoc3IubGVuZ3RoLTEp'@; put 'Pyhnci50PSJzIixnci52PXNyLnNsaWNlKDIsLTEpLnJlcGxhY2UoLyIiL2csJyInKSk6ZnVuY3Rpb24gTFEoZCl7cmV0dXJuIDEhPWQubGVuZ3RofShzcik/KGdyLnQ9Im4iLGdyLmY9c3Iuc2xpY2UoMSkpOihnci50PSJzIixnci52PXNyKTtlbHNlIGlmKCJUUlVFIj09c3IpZ3IudD0iYiIs'@; put 'Z3Iudj0hMDtlbHNlIGlmKCJGQUxTRSI9PXNyKWdyLnQ9ImIiLGdyLnY9ITE7ZWxzZSBpZihpc05hTihidD11cihzcikpKWlmKCFpc05hTihabihzcikuZ2V0RGF0ZSgpKXx8am4mJnNyLm1hdGNoKGpuKSl7Z3Iuej1aZS5kYXRlTkZ8fEkuX3RhYmxlWzE0XTt2YXIgcW49MDtqbiYmc3IubWF0'@; put 'Y2goam4pJiYoc3I9ZnVuY3Rpb24gbHQoZCxfLG0pe3ZhciBUPS0xLFA9LTEsUT0tMSxzZT0tMSxvZT0tMSxkZT0tMTsoXy5tYXRjaChQZSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEJlLFplKXt2YXIgbnQ9cGFyc2VJbnQobVtaZSsxXSwxMCk7c3dpdGNoKEJlLnRvTG93ZXJDYXNlKCkuY2hh'@; put 'ckF0KDApKXtjYXNlInkiOlQ9bnQ7YnJlYWs7Y2FzZSJkIjpRPW50O2JyZWFrO2Nhc2UiaCI6c2U9bnQ7YnJlYWs7Y2FzZSJzIjpkZT1udDticmVhaztjYXNlIm0iOnNlPj0wP29lPW50OlA9bnR9fSksZGU+PTAmJi0xPT1vZSYmUD49MCYmKG9lPVAsUD0tMSk7dmFyIExlPSgiIisoVD49MD9U'@; put 'OihuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSkpLnNsaWNlKC00KSsiLSIrKCIwMCIrKFA+PTE/UDoxKSkuc2xpY2UoLTIpKyItIisoIjAwIisoUT49MT9ROjEpKS5zbGljZSgtMik7Nz09TGUubGVuZ3RoJiYoTGU9IjAiK0xlKSw4PT1MZS5sZW5ndGgmJihMZT0iMjAiK0xlKTt2YXIgTmU9KCIw'@; put 'MCIrKHNlPj0wP3NlOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyhvZT49MD9vZTowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisoZGU+PTA/ZGU6MCkpLnNsaWNlKC0yKTtyZXR1cm4tMT09c2UmJi0xPT1vZSYmLTE9PWRlP0xlOi0xPT1UJiYtMT09UCYmLTE9PVE/TmU6TGUrIlQiK05lfSgwLFpl'@; put 'LmRhdGVORixzci5tYXRjaChqbil8fFtdKSxxbj0xKSxaZS5jZWxsRGF0ZXM/KGdyLnQ9ImQiLGdyLnY9bG4oc3IscW4pKTooZ3IudD0ibiIsZ3Iudj1LZShsbihzcixxbikpKSwhMSE9PVplLmNlbGxUZXh0JiYoZ3Iudz1JLmZvcm1hdChnci56LGdyLnYgaW5zdGFuY2VvZiBEYXRlP0tlKGdy'@; put 'LnYpOmdyLnYpKSxaZS5jZWxsTkZ8fGRlbGV0ZSBnci56fWVsc2UgZ3IudD0icyIsZ3Iudj1zcjtlbHNlIGdyLnQ9Im4iLCExIT09WmUuY2VsbFRleHQmJihnci53PXNyKSxnci52PWJ0O2lmKCJ6Ij09Z3IudHx8KFplLmRlbnNlPyhtdFtmdF18fChtdFtmdF09W10pLG10W2Z0XVtrdF09Z3Ip'@; put 'Om10W3FpKHtjOmt0LHI6ZnR9KV09Z3IpLGFyPU5lLmNoYXJDb2RlQXQoRXQ9VnQrMSksUWUuZS5jPGt0JiYoUWUuZS5jPWt0KSxRZS5lLnI8ZnQmJihRZS5lLnI9ZnQpLG5uPT11bikrK2t0O2Vsc2UgaWYoa3Q9MCwrK2Z0LFplLnNoZWV0Um93cyYmWmUuc2hlZXRSb3dzPD1mdClyZXR1cm4h'@; put 'MH1lOmZvcig7VnQ8TmUubGVuZ3RoOysrVnQpc3dpdGNoKG5uPU5lLmNoYXJDb2RlQXQoVnQpKXtjYXNlIDM0OjM0PT09YXImJihucj0hbnIpO2JyZWFrO2Nhc2UgdW46Y2FzZSAxMDpjYXNlIDEzOmlmKCFuciYma24oKSlicmVhayBlfXJldHVybiBWdC1FdD4wJiZrbigpLG10WyIhcmVmIl09'@; put 'aHQoUWUpLG10fShOZSxCZSk6UW4oZnVuY3Rpb24gXyhOZSxCZSl7dmFyIFplPUJlfHx7fSxudD1bXTtpZighTmV8fDA9PT1OZS5sZW5ndGgpcmV0dXJuIG50O2Zvcih2YXIgbXQ9TmUuc3BsaXQoL1tcclxuXS8pLFFlPW10Lmxlbmd0aC0xO1FlPj0wJiYwPT09bXRbUWVdLmxlbmd0aDspLS1R'@; put 'ZTtmb3IodmFyIGZ0PTEwLGt0PTAsYnQ9MDtidDw9UWU7KytidCktMT09KGt0PW10W2J0XS5pbmRleE9mKCIgIikpP2t0PW10W2J0XS5sZW5ndGg6a3QrKyxmdD1NYXRoLm1heChmdCxrdCk7Zm9yKGJ0PTA7YnQ8PVFlOysrYnQpe250W2J0XT1bXTt2YXIgRXQ9MDtmb3IoZChtdFtidF0uc2xp'@; put 'Y2UoMCxmdCkudHJpbSgpLG50LGJ0LEV0LFplKSxFdD0xO0V0PD0obXRbYnRdLmxlbmd0aC1mdCkvMTArMTsrK0V0KWQobXRbYnRdLnNsaWNlKGZ0KzEwKihFdC0xKSxmdCsxMCpFdCkudHJpbSgpLG50LGJ0LEV0LFplKX1yZXR1cm4gWmUuc2hlZXRSb3dzJiYobnQ9bnQuc2xpY2UoMCxaZS5z'@; put 'aGVldFJvd3MpKSxudH0oTmUsQmUpLEJlKX1mdW5jdGlvbiBvZShOZSxCZSl7dmFyIFplPSIiLG50PSJzdHJpbmciPT1CZS50eXBlP1swLDAsMCwwXTpXOChOZSxCZSk7c3dpdGNoKEJlLnR5cGUpe2Nhc2UiYmFzZTY0IjpaZT1DZS5kZWNvZGUoTmUpO2JyZWFrO2Nhc2UiYmluYXJ5IjpjYXNl'@; put 'InN0cmluZyI6WmU9TmU7YnJlYWs7Y2FzZSJidWZmZXIiOlplPTY1MDAxPT1CZS5jb2RlcGFnZT9OZS50b1N0cmluZygidXRmOCIpOkJlLmNvZGVwYWdlJiZ0eXBlb2YgY3B0YWJsZTwidSI/Y3B0YWJsZS51dGlscy5kZWNvZGUoQmUuY29kZXBhZ2UsTmUpOk5lLnRvU3RyaW5nKCJiaW5hcnki'@; put 'KTticmVhaztjYXNlImFycmF5IjpaZT1PbihOZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrQmUudHlwZSl9cmV0dXJuIDIzOT09bnRbMF0mJjE4Nz09bnRbMV0mJjE5MT09bnRbMl0/WmU9V24oWmUuc2xpY2UoMykpOiJiaW5hcnkiPT1CZS50'@; put 'eXBlJiZ0eXBlb2YgY3B0YWJsZTwidSImJkJlLmNvZGVwYWdlJiYoWmU9Y3B0YWJsZS51dGlscy5kZWNvZGUoQmUuY29kZXBhZ2UsY3B0YWJsZS51dGlscy5lbmNvZGUoMjg1OTEsWmUpKSksInNvY2lhbGNhbGM6dmVyc2lvbjoiPT1aZS5zbGljZSgwLDE5KT9WMC50b19zaGVldCgic3RyaW5n'@; put 'Ij09QmUudHlwZT9aZTpXbihaZSksQmUpOnNlKFplLEJlKX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gZGUoTmUsQmUpe3JldHVybiBtbihvZShOZSxCZSksQmUpfSx0b19zaGVldDpvZSxmcm9tX3NoZWV0OmZ1bmN0aW9uIExlKE5lKXtmb3IodmFyIG50LEJlPVtdLFplPXl0KE5lWyIh'@; put 'cmVmIl0pLG10PUFycmF5LmlzQXJyYXkoTmUpLFFlPVplLnMucjtRZTw9WmUuZS5yOysrUWUpe2Zvcih2YXIgZnQ9W10sa3Q9WmUucy5jO2t0PD1aZS5lLmM7KytrdCl7dmFyIGJ0PXFpKHtyOlFlLGM6a3R9KTtpZigobnQ9bXQ/KE5lW1FlXXx8W10pW2t0XTpOZVtidF0pJiZudWxsIT1udC52'@; put 'KXtmb3IodmFyIEV0PShudC53fHwoenQobnQpLG50LncpfHwiIikuc2xpY2UoMCwxMCk7RXQubGVuZ3RoPDEwOylFdCs9IiAiO2Z0LnB1c2goRXQrKDA9PT1rdD8iICI6IiIpKX1lbHNlIGZ0LnB1c2goIiAgICAgICAgICAiKX1CZS5wdXNoKGZ0LmpvaW4oIiIpKX1yZXR1cm4gQmUuam9pbigi'@; put 'XG4iKX19fSgpLGNTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChEbixPcixfcil7aWYoRG4pe09sKERuLERuLmx8fDApO2Zvcih2YXIgTW49X3IuRW51bXx8TGk7RG4ubDxEbi5sZW5ndGg7KXt2YXIgTnI9RG4ucmVhZF9zaGlmdCgyKSxqaT1NbltOcl18fE1uWzY1NTM1XSxiaT1Ebi5yZWFkX3No'@; put 'aWZ0KDIpLE5vPURuLmwrYmksWWE9amkuZiYmamkuZihEbixiaSxfcik7aWYoRG4ubD1ObyxPcihZYSxqaSxOcikpcmV0dXJufX19ZnVuY3Rpb24gbShEbixPcil7aWYoIURuKXJldHVybiBEbjt2YXIgX3I9T3J8fHt9LE1uPV9yLmRlbnNlP1tdOnt9LE5yPSJTaGVldDEiLGppPTAsYmk9e30s'@; put 'Tm89W05yXSxZYT1bXSx1bz17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LE1zPV9yLnNoZWV0Um93c3x8MDtpZigyPT1EblsyXSlfci5FbnVtPUxpLGQoRG4sZnVuY3Rpb24oUGksUGMseG4pe3N3aXRjaCh4bil7Y2FzZSAwOl9yLnZlcnM9UGksUGk+PTQwOTYmJihfci5xcHJvPSEwKTticmVh'@; put 'aztjYXNlIDY6dW89UGk7YnJlYWs7Y2FzZSAxNTpjYXNlIDUxOl9yLnFwcm98fChQaVsxXS52PVBpWzFdLnYuc2xpY2UoMSkpO2Nhc2UgMTM6Y2FzZSAxNDpjYXNlIDE2OjE0PT14biYmISgxMTImflBpWzJdKSYmKDE1JlBpWzJdKT4xJiYoMTUmUGlbMl0pPDE1JiYoUGlbMV0uej1fci5kYXRl'@; put 'TkZ8fEkuX3RhYmxlWzE0XSxfci5jZWxsRGF0ZXMmJihQaVsxXS50PSJkIixQaVsxXS52PSR0KFBpWzFdLnYpKSk7dmFyIHhsPV9yLmRlbnNlPyhNbltQaVswXS5yXXx8W10pW1BpWzBdLmNdOk1uW3FpKFBpWzBdKV07aWYoeGwpe3hsLnQ9UGlbMV0udCx4bC52PVBpWzFdLnYsbnVsbCE9UGlb'@; put 'MV0ueiYmKHhsLno9UGlbMV0ueiksbnVsbCE9UGlbMV0uZiYmKHhsLmY9UGlbMV0uZik7YnJlYWt9X3IuZGVuc2U/KE1uW1BpWzBdLnJdfHwoTW5bUGlbMF0ucl09W10pLE1uW1BpWzBdLnJdW1BpWzBdLmNdPVBpWzFdKTpNbltxaShQaVswXSldPVBpWzFdfX0sX3IpO2Vsc2V7aWYoMjYhPURu'@; put 'WzJdJiYxNCE9RG5bMl0pdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgTE9UVVMgQk9GICIrRG5bMl0pO19yLkVudW09a3IsMTQ9PURuWzJdJiYoX3IucXBybz0hMCxEbi5sPTApLGQoRG4sZnVuY3Rpb24oUGksUGMseG4pe3N3aXRjaCh4bil7Y2FzZSAyMjpQaVsxXS52PVBpWzFdLnYu'@; put 'c2xpY2UoMSk7Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAzNzpjYXNlIDM5OmNhc2UgNDA6aWYoUGlbM10+amkmJihNblsiIXJlZiJdPWh0KHVvKSxiaVtOcl09TW4sTW49X3IuZGVuc2U/W106e30sdW89e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSxOby5wdXNoKE5yPSJTaGVldCIr'@; put 'KChqaT1QaVszXSkrMSkpKSxNcz4wJiZQaVswXS5yPj1NcylicmVhaztfci5kZW5zZT8oTW5bUGlbMF0ucl18fChNbltQaVswXS5yXT1bXSksTW5bUGlbMF0ucl1bUGlbMF0uY109UGlbMV0pOk1uW3FpKFBpWzBdKV09UGlbMV0sdW8uZS5jPFBpWzBdLmMmJih1by5lLmM9UGlbMF0uYyksdW8u'@; put 'ZS5yPFBpWzBdLnImJih1by5lLnI9UGlbMF0ucik7YnJlYWs7Y2FzZSAyNzpQaVsxNGUzXSYmKFlhW1BpWzE0ZTNdWzBdXT1QaVsxNGUzXVsxXSl9fSxfcil9aWYoTW5bIiFyZWYiXT1odCh1byksYmlbTnJdPU1uLCFZYS5sZW5ndGgpcmV0dXJue1NoZWV0TmFtZXM6Tm8sU2hlZXRzOmJpfTtm'@; put 'b3IodmFyIGRhPXt9LCRhPVtdLFNhPTA7U2E8WWEubGVuZ3RoOysrU2EpYmlbTm9bU2FdXSYmKCRhLnB1c2goWWFbU2FdKSxkYVtZYVtTYV1dPWJpW05vW1NhXV0pO3JldHVybntTaGVldE5hbWVzOiRhLFNoZWV0czpkYX19ZnVuY3Rpb24gTGUoRG4sT3IsX3Ipe3ZhciBNbj1be2M6MCxyOjB9'@; put 'LHt0OiJuIix2OjB9LDBdO3JldHVybiBfci5xcHJvJiYyMDc2OCE9X3IudmVycz8oTW5bMF0uYz1Ebi5yZWFkX3NoaWZ0KDEpLERuLmwrKyxNblswXS5yPURuLnJlYWRfc2hpZnQoMiksRG4ubCs9Mik6KE1uWzJdPURuLnJlYWRfc2hpZnQoMSksTW5bMF0uYz1Ebi5yZWFkX3NoaWZ0KDIpLE1u'@; put 'WzBdLnI9RG4ucmVhZF9zaGlmdCgyKSksTW59ZnVuY3Rpb24gTmUoRG4sT3IsX3Ipe3ZhciBNbj1Ebi5sK09yLE5yPUxlKERuLDAsX3IpO2lmKE5yWzFdLnQ9InMiLDIwNzY4PT1fci52ZXJzKXtEbi5sKys7dmFyIGppPURuLnJlYWRfc2hpZnQoMSk7cmV0dXJuIE5yWzFdLnY9RG4ucmVhZF9z'@; put 'aGlmdChqaSwidXRmOCIpLE5yfXJldHVybiBfci5xcHJvJiZEbi5sKyssTnJbMV0udj1Ebi5yZWFkX3NoaWZ0KE1uLURuLmwsImNzdHIiKSxOcn1mdW5jdGlvbiBCZShEbixPcixfcil7dmFyIE1uPUZyKDcrX3IubGVuZ3RoKTtNbi53cml0ZV9zaGlmdCgxLDI1NSksTW4ud3JpdGVfc2hpZnQo'@; put 'MixPciksTW4ud3JpdGVfc2hpZnQoMixEbiksTW4ud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciBOcj0wO05yPE1uLmxlbmd0aDsrK05yKXt2YXIgamk9X3IuY2hhckNvZGVBdChOcik7TW4ud3JpdGVfc2hpZnQoMSxqaT49MTI4Pzk1OmppKX1yZXR1cm4gTW4ud3JpdGVfc2hpZnQoMSwwKSxN'@; put 'bn1mdW5jdGlvbiBudChEbixPcixfcil7dmFyIE1uPUZyKDcpO3JldHVybiBNbi53cml0ZV9zaGlmdCgxLDI1NSksTW4ud3JpdGVfc2hpZnQoMixPciksTW4ud3JpdGVfc2hpZnQoMixEbiksTW4ud3JpdGVfc2hpZnQoMixfciwiaSIpLE1ufWZ1bmN0aW9uIFFlKERuLE9yLF9yKXt2YXIgTW49'@; put 'RnIoMTMpO3JldHVybiBNbi53cml0ZV9zaGlmdCgxLDI1NSksTW4ud3JpdGVfc2hpZnQoMixPciksTW4ud3JpdGVfc2hpZnQoMixEbiksTW4ud3JpdGVfc2hpZnQoOCxfciwiZiIpLE1ufWZ1bmN0aW9uIGt0KERuLE9yLF9yKXt2YXIgTW49MzI3NjgmT3I7cmV0dXJuIE9yPShNbj9EbjowKSso'@; put 'KE9yJj0tMzI3NjkpPj04MTkyP09yLTE2Mzg0Ok9yKSwoTW4/IiI6IiQiKSsoX3I/bXMoT3IpOnpvKE9yKSl9dmFyIEV0PXs1MTpbIkZBTFNFIiwwXSw1MjpbIlRSVUUiLDBdLDcwOlsiTEVOIiwxXSw4MDpbIlNVTSIsNjldLDgxOlsiQVZFUkFHRUEiLDY5XSw4MjpbIkNPVU5UQSIsNjldLDgz'@; put 'OlsiTUlOQSIsNjldLDg0OlsiTUFYQSIsNjldLDExMTpbIlQiLDFdfSxWdD1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIisiLCItIiwiKiIsIi8iLCJeIiwiPSIsIjw+IiwiPD0iLCI+PSIsIjwiLCI+IiwiIiwiIiwiIiwiIiwiJiIsIiIsIiIsIiIsIiIsIiIsIiIsIiJdO2Z1bmN0aW9u'@; put 'IG5yKERuKXt2YXIgT3I9W3tjOjAscjowfSx7dDoibiIsdjowfSwwXTtyZXR1cm4gT3JbMF0ucj1Ebi5yZWFkX3NoaWZ0KDIpLE9yWzNdPURuW0RuLmwrK10sT3JbMF0uYz1EbltEbi5sKytdLE9yfWZ1bmN0aW9uIGFyKERuLE9yLF9yLE1uKXt2YXIgTnI9RnIoNitNbi5sZW5ndGgpO05yLndy'@; put 'aXRlX3NoaWZ0KDIsRG4pLE5yLndyaXRlX3NoaWZ0KDEsX3IpLE5yLndyaXRlX3NoaWZ0KDEsT3IpLE5yLndyaXRlX3NoaWZ0KDEsMzkpO2Zvcih2YXIgamk9MDtqaTxNbi5sZW5ndGg7KytqaSl7dmFyIGJpPU1uLmNoYXJDb2RlQXQoamkpO05yLndyaXRlX3NoaWZ0KDEsYmk+PTEyOD85NTpi'@; put 'aSl9cmV0dXJuIE5yLndyaXRlX3NoaWZ0KDEsMCksTnJ9ZnVuY3Rpb24ga24oRG4sT3Ipe3ZhciBfcj1ucihEbiksTW49RG4ucmVhZF9zaGlmdCg0KSxOcj1Ebi5yZWFkX3NoaWZ0KDQpLGppPURuLnJlYWRfc2hpZnQoMik7aWYoNjU1MzU9PWppKXJldHVybiAwPT09TW4mJjMyMjEyMjU0NzI9'@; put 'PT1Ocj8oX3JbMV0udD0iZSIsX3JbMV0udj0xNSk6MD09PU1uJiYzNDg5NjYwOTI4PT09TnI/KF9yWzFdLnQ9ImUiLF9yWzFdLnY9NDIpOl9yWzFdLnY9MCxfcjt2YXIgYmk9MzI3Njgmamk7cmV0dXJuIGppPSgzMjc2NyZqaSktMTY0NDYsX3JbMV0udj0oMS0yKmJpKSooTnIqTWF0aC5wb3co'@; put 'MixqaSszMikrTW4qTWF0aC5wb3coMixqaSkpLF9yfWZ1bmN0aW9uIHNyKERuLE9yLF9yLE1uKXt2YXIgTnI9RnIoMTQpO2lmKE5yLndyaXRlX3NoaWZ0KDIsRG4pLE5yLndyaXRlX3NoaWZ0KDEsX3IpLE5yLndyaXRlX3NoaWZ0KDEsT3IpLDA9PU1uKXJldHVybiBOci53cml0ZV9zaGlmdCg0'@; put 'LDApLE5yLndyaXRlX3NoaWZ0KDQsMCksTnIud3JpdGVfc2hpZnQoMiw2NTUzNSksTnI7dmFyIGppPTAsYmk9MCxZYT0wO3JldHVybiBNbjwwJiYoamk9MSxNbj0tTW4pLGJpPTB8TWF0aC5sb2cyKE1uKSwhKDIxNDc0ODM2NDgmKFlhPShNbi89TWF0aC5wb3coMixiaS0zMSkpPj4+MCkpJiYo'@; put 'KytiaSxZYT0oTW4vPTIpPj4+MCksTW4tPVlhLFlhfD0yMTQ3NDgzNjQ4LFlhPj4+PTAsTW4qPU1hdGgucG93KDIsMzIpLE5yLndyaXRlX3NoaWZ0KDQsTW4+Pj4wKSxOci53cml0ZV9zaGlmdCg0LFlhKSxOci53cml0ZV9zaGlmdCgyLGJpKz0xNjM4Mysoamk/MzI3Njg6MCkpLE5yfWZ1bmN0'@; put 'aW9uIF9pKERuLE9yKXt2YXIgX3I9bnIoRG4pLE1uPURuLnJlYWRfc2hpZnQoOCwiZiIpO3JldHVybiBfclsxXS52PU1uLF9yfWZ1bmN0aW9uIG1vKERuLE9yKXt2YXIgX3I9RnIoNStEbi5sZW5ndGgpO19yLndyaXRlX3NoaWZ0KDIsMTRlMyksX3Iud3JpdGVfc2hpZnQoMixPcik7Zm9yKHZh'@; put 'ciBNbj0wO01uPERuLmxlbmd0aDsrK01uKXt2YXIgTnI9RG4uY2hhckNvZGVBdChNbik7X3JbX3IubCsrXT1Ocj4xMjc/OTU6TnJ9cmV0dXJuIF9yW19yLmwrK109MCxfcn12YXIgTGk9ezA6e246IkJPRiIsZjppZH0sMTp7bjoiRU9GIn0sMjp7bjoiQ0FMQ01PREUifSwzOntuOiJDQUxDT1JE'@; put 'RVIifSw0OntuOiJTUExJVCJ9LDU6e246IlNZTkMifSw2OntuOiJSQU5HRSIsZjpmdW5jdGlvbiBvZShEbil7dmFyIE9yPXtzOntjOjAscjowfSxlOntjOjAscjowfX07cmV0dXJuIE9yLnMuYz1Ebi5yZWFkX3NoaWZ0KDIpLE9yLnMucj1Ebi5yZWFkX3NoaWZ0KDIpLE9yLmUuYz1Ebi5yZWFk'@; put 'X3NoaWZ0KDIpLE9yLmUucj1Ebi5yZWFkX3NoaWZ0KDIpLDY1NTM1PT1Pci5zLmMmJihPci5zLmM9T3IuZS5jPU9yLnMucj1Pci5lLnI9MCksT3J9fSw3OntuOiJXSU5ET1cxIn0sODp7bjoiQ09MVzEifSw5OntuOiJXSU5UV08ifSwxMDp7bjoiQ09MVzIifSwxMTp7bjoiTkFNRSJ9LDEyOntu'@; put 'OiJCTEFOSyJ9LDEzOntuOiJJTlRFR0VSIixmOmZ1bmN0aW9uIFplKERuLE9yLF9yKXt2YXIgTW49TGUoRG4sMCxfcik7cmV0dXJuIE1uWzFdLnY9RG4ucmVhZF9zaGlmdCgyLCJpIiksTW59fSwxNDp7bjoiTlVNQkVSIixmOmZ1bmN0aW9uIG10KERuLE9yLF9yKXt2YXIgTW49TGUoRG4sMCxf'@; put 'cik7cmV0dXJuIE1uWzFdLnY9RG4ucmVhZF9zaGlmdCg4LCJmIiksTW59fSwxNTp7bjoiTEFCRUwiLGY6TmV9LDE2OntuOiJGT1JNVUxBIixmOmZ1bmN0aW9uIGZ0KERuLE9yLF9yKXt2YXIgTW49RG4ubCtPcixOcj1MZShEbiwwLF9yKTtpZihOclsxXS52PURuLnJlYWRfc2hpZnQoOCwiZiIp'@; put 'LF9yLnFwcm8pRG4ubD1NbjtlbHNle3ZhciBqaT1Ebi5yZWFkX3NoaWZ0KDIpOyhmdW5jdGlvbiB1bihEbixPcil7T2woRG4sMCk7Zm9yKHZhciBfcj1bXSxNbj0wLE5yPSIiLGppPSIiO0RuLmw8RG4ubGVuZ3RoOyl7dmFyIGJpPURuW0RuLmwrK107c3dpdGNoKGJpKXtjYXNlIDA6X3IucHVz'@; put 'aChEbi5yZWFkX3NoaWZ0KDgsImYiKSk7YnJlYWs7Y2FzZSAxOmppPWt0KE9yWzBdLmMsRG4ucmVhZF9zaGlmdCgyKSwhMCksTnI9a3QoT3JbMF0ucixEbi5yZWFkX3NoaWZ0KDIpLCExKSxfci5wdXNoKGppK05yKTticmVhaztjYXNlIDI6dmFyIE5vPWt0KE9yWzBdLmMsRG4ucmVhZF9zaGlm'@; put 'dCgyKSwhMCksWWE9a3QoT3JbMF0ucixEbi5yZWFkX3NoaWZ0KDIpLCExKTtqaT1rdChPclswXS5jLERuLnJlYWRfc2hpZnQoMiksITApLE5yPWt0KE9yWzBdLnIsRG4ucmVhZF9zaGlmdCgyKSwhMSksX3IucHVzaChObytZYSsiOiIramkrTnIpO2JyZWFrO2Nhc2UgMzppZihEbi5sPERuLmxl'@; put 'bmd0aClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJXSzEgcHJlbWF0dXJlIGZvcm11bGEgZW5kIik7YnJlYWs7Y2FzZSA0Ol9yLnB1c2goIigiK19yLnBvcCgpKyIpIik7YnJlYWs7Y2FzZSA1Ol9yLnB1c2goRG4ucmVhZF9zaGlmdCgyKSk7YnJlYWs7Y2FzZSA2OmZvcih2YXIgdW89IiI7'@; put 'Ymk9RG5bRG4ubCsrXTspdW8rPVN0cmluZy5mcm9tQ2hhckNvZGUoYmkpO19yLnB1c2goJyInK3VvLnJlcGxhY2UoLyIvZywnIiInKSsnIicpO2JyZWFrO2Nhc2UgODpfci5wdXNoKCItIitfci5wb3AoKSk7YnJlYWs7Y2FzZSAyMzpfci5wdXNoKCIrIitfci5wb3AoKSk7YnJlYWs7Y2FzZSAy'@; put 'Mjpfci5wdXNoKCJOT1QoIitfci5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgMjA6Y2FzZSAyMTp2YXIgTXM9X3IucG9wKCksZGE9X3IucG9wKCk7X3IucHVzaChbIkFORCIsIk9SIl1bYmktMjBdKyIoIitkYSsiLCIrTXMrIikiKTticmVhaztkZWZhdWx0OmlmKGJpPDMyJiZWdFtiaV0pTXM9X3Iu'@; put 'cG9wKCksZGE9X3IucG9wKCksX3IucHVzaChkYStWdFtiaV0rTXMpO2Vsc2V7aWYoIUV0W2JpXSlyZXR1cm4gYmk8PTc/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrYmkudG9TdHJpbmcoMTYpKTpiaTw9MjQ/Y29uc29sZS5lcnJvcigiV0sxIHVuc3VwcG9ydGVkIG9wICIr'@; put 'YmkudG9TdHJpbmcoMTYpKTpiaTw9MzA/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrYmkudG9TdHJpbmcoMTYpKTpiaTw9MTE1P2NvbnNvbGUuZXJyb3IoIldLMSB1bnN1cHBvcnRlZCBmdW5jdGlvbiBvcGNvZGUgIitiaS50b1N0cmluZygxNikpOmNvbnNvbGUuZXJyb3Io'@; put 'IldLMSB1bnJlY29nbml6ZWQgb3Bjb2RlICIrYmkudG9TdHJpbmcoMTYpKTtpZig2OT09KE1uPUV0W2JpXVsxXSkmJihNbj1EbltEbi5sKytdKSxNbj5fci5sZW5ndGgpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIDB4IitiaS50b1N0cmluZygxNikr'@; put 'Ijp8Iitfci5qb2luKCJ8IikrInwiKTt2YXIgJGE9X3Iuc2xpY2UoLU1uKTtfci5sZW5ndGgtPU1uLF9yLnB1c2goRXRbYmldWzBdKyIoIiskYS5qb2luKCIsIikrIikiKX19fTE9PV9yLmxlbmd0aD9PclsxXS5mPSIiK19yWzBdOmNvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJz'@; put 'ZSB8Iitfci5qb2luKCJ8IikrInwiKX0pKERuLnNsaWNlKERuLmwsRG4ubCtqaSksTnIpLERuLmwrPWppfXJldHVybiBOcn19LDI0OntuOiJUQUJMRSJ9LDI1OntuOiJPUkFOR0UifSwyNjp7bjoiUFJBTkdFIn0sMjc6e246IlNSQU5HRSJ9LDI4OntuOiJGUkFOR0UifSwyOTp7bjoiS1JBTkdF'@; put 'MSJ9LDMyOntuOiJIUkFOR0UifSwzNTp7bjoiS1JBTkdFMiJ9LDM2OntuOiJQUk9URUMifSwzNzp7bjoiRk9PVEVSIn0sMzg6e246IkhFQURFUiJ9LDM5OntuOiJTRVRVUCJ9LDQwOntuOiJNQVJHSU5TIn0sNDE6e246IkxBQkVMRk1UIn0sNDI6e246IlRJVExFUyJ9LDQzOntuOiJTSEVFVEpT'@; put 'In0sNDU6e246IkdSQVBIIn0sNDY6e246Ik5HUkFQSCJ9LDQ3OntuOiJDQUxDQ09VTlQifSw0ODp7bjoiVU5GT1JNQVRURUQifSw0OTp7bjoiQ1VSU09SVzEyIn0sNTA6e246IldJTkRPVyJ9LDUxOntuOiJTVFJJTkciLGY6TmV9LDU1OntuOiJQQVNTV09SRCJ9LDU2OntuOiJMT0NLRUQifSw2'@; put 'MDp7bjoiUVVFUlkifSw2MTp7bjoiUVVFUllOQU1FIn0sNjI6e246IlBSSU5UIn0sNjM6e246IlBSSU5UTkFNRSJ9LDY0OntuOiJHUkFQSDIifSw2NTp7bjoiR1JBUEhOQU1FIn0sNjY6e246IlpPT00ifSw2Nzp7bjoiU1lNU1BMSVQifSw2ODp7bjoiTlNST1dTIn0sNjk6e246Ik5TQ09MUyJ9'@; put 'LDcwOntuOiJSVUxFUiJ9LDcxOntuOiJOTkFNRSJ9LDcyOntuOiJBQ09NTSJ9LDczOntuOiJBTUFDUk8ifSw3NDp7bjoiUEFSU0UifSwxMDI6e246IlBSQU5HRVM/PyJ9LDEwMzp7bjoiUlJBTkdFUz8/In0sMTA0OntuOiJGTkFNRT8/In0sMTA1OntuOiJNUkFOR0VTPz8ifSw2NTUzNTp7bjoi'@; put 'In19LGtyPXswOntuOiJCT0YifSwxOntuOiJFT0YifSwyOntuOiJQQVNTV09SRCJ9LDM6e246IkNBTENTRVQifSw0OntuOiJXSU5ET1dTRVQifSw1OntuOiJTSEVFVENFTExQVFIifSw2OntuOiJTSEVFVExBWU9VVCJ9LDc6e246IkNPTFVNTldJRFRIIn0sODp7bjoiSElEREVOQ09MVU1OIn0s'@; put 'OTp7bjoiVVNFUlJBTkdFIn0sMTA6e246IlNZU1RFTVJBTkdFIn0sMTE6e246IlpFUk9GT1JDRSJ9LDEyOntuOiJTT1JUS0VZRElSIn0sMTM6e246IkZJTEVTRUFMIn0sMTQ6e246IkRBVEFGSUxMTlVNUyJ9LDE1OntuOiJQUklOVE1BSU4ifSwxNjp7bjoiUFJJTlRTVFJJTkcifSwxNzp7bjoi'@; put 'R1JBUEhNQUlOIn0sMTg6e246IkdSQVBIU1RSSU5HIn0sMTk6e246Ij8/In0sMjA6e246IkVSUkNFTEwifSwyMTp7bjoiTkFDRUxMIn0sMjI6e246IkxBQkVMMTYiLGY6ZnVuY3Rpb24gbm4oRG4sT3Ipe3ZhciBfcj1ucihEbik7cmV0dXJuIF9yWzFdLnQ9InMiLF9yWzFdLnY9RG4ucmVhZF9z'@; put 'aGlmdChPci00LCJjc3RyIiksX3J9fSwyMzp7bjoiTlVNQkVSMTciLGY6a259LDI0OntuOiJOVU1CRVIxOCIsZjpmdW5jdGlvbiBqbihEbixPcil7dmFyIF9yPW5yKERuKTtfclsxXS52PURuLnJlYWRfc2hpZnQoMik7dmFyIE1uPV9yWzFdLnY+PjE7aWYoMSZfclsxXS52KXN3aXRjaCg3Jk1u'@; put 'KXtjYXNlIDA6TW49NWUzKihNbj4+Myk7YnJlYWs7Y2FzZSAxOk1uPTUwMCooTW4+PjMpO2JyZWFrO2Nhc2UgMjpNbj0oTW4+PjMpLzIwO2JyZWFrO2Nhc2UgMzpNbj0oTW4+PjMpLzIwMDticmVhaztjYXNlIDQ6TW49KE1uPj4zKS8yZTM7YnJlYWs7Y2FzZSA1Ok1uPShNbj4+MykvMmU0O2Jy'@; put 'ZWFrO2Nhc2UgNjpNbj0oTW4+PjMpLzE2O2JyZWFrO2Nhc2UgNzpNbj0oTW4+PjMpLzY0fXJldHVybiBfclsxXS52PU1uLF9yfX0sMjU6e246IkZPUk1VTEExOSIsZjpmdW5jdGlvbiBncihEbixPcil7dmFyIF9yPWtuKERuKTtyZXR1cm4gRG4ubCs9T3ItMTQsX3J9fSwyNjp7bjoiRk9STVVM'@; put 'QTFBIn0sMjc6e246IlhGT1JNQVQiLGY6ZnVuY3Rpb24gc28oRG4sT3Ipe2Zvcih2YXIgX3I9e30sTW49RG4ubCtPcjtEbi5sPE1uOyl7dmFyIE5yPURuLnJlYWRfc2hpZnQoMik7aWYoMTRlMz09TnIpe2ZvcihfcltOcl09WzAsIiJdLF9yW05yXVswXT1Ebi5yZWFkX3NoaWZ0KDIpO0RuW0Ru'@; put 'LmxdOylfcltOcl1bMV0rPVN0cmluZy5mcm9tQ2hhckNvZGUoRG5bRG4ubF0pLERuLmwrKztEbi5sKyt9fXJldHVybiBfcn19LDI4OntuOiJEVExBQkVMTUlTQyJ9LDI5OntuOiJEVExBQkVMQ0VMTCJ9LDMwOntuOiJHUkFQSFdJTkRPVyJ9LDMxOntuOiJDUEEifSwzMjp7bjoiTFBMQVVUTyJ9'@; put 'LDMzOntuOiJRVUVSWSJ9LDM0OntuOiJISURERU5TSEVFVCJ9LDM1OntuOiI/PyJ9LDM3OntuOiJOVU1CRVIyNSIsZjpmdW5jdGlvbiBxbihEbixPcil7dmFyIF9yPW5yKERuKSxNbj1Ebi5yZWFkX3NoaWZ0KDQpO3JldHVybiBfclsxXS52PU1uPj42LF9yfX0sMzg6e246Ij8/In0sMzk6e246'@; put 'Ik5VTUJFUjI3IixmOl9pfSw0MDp7bjoiRk9STVVMQTI4IixmOmZ1bmN0aW9uIE9pKERuLE9yKXt2YXIgX3I9X2koRG4pO3JldHVybiBEbi5sKz1Pci0xMCxfcn19LDE0Mjp7bjoiPz8ifSwxNDc6e246Ij8/In0sMTUwOntuOiI/PyJ9LDE1MTp7bjoiPz8ifSwxNTI6e246Ij8/In0sMTUzOntu'@; put 'OiI/PyJ9LDE1NDp7bjoiPz8ifSwxNTU6e246Ij8/In0sMTU2OntuOiI/PyJ9LDE2Mzp7bjoiPz8ifSwxNzQ6e246Ij8/In0sMTc1OntuOiI/PyJ9LDE3Njp7bjoiPz8ifSwxNzc6e246Ij8/In0sMTg0OntuOiI/PyJ9LDE4NTp7bjoiPz8ifSwxODY6e246Ij8/In0sMTg3OntuOiI/PyJ9LDE4'@; put 'ODp7bjoiPz8ifSwxOTU6e246Ij8/In0sMjAxOntuOiI/PyJ9LDIwNTp7bjoiPz8ifSwyMDY6e246Ij8/In0sMjA3OntuOiI/PyJ9LDIwODp7bjoiPz8ifSwyNTY6e246Ij8/In0sMjU5OntuOiI/PyJ9LDI2MDp7bjoiPz8ifSwyNjE6e246Ij8/In0sMjYyOntuOiI/PyJ9LDI2Mzp7bjoiPz8i'@; put 'fSwyNjU6e246Ij8/In0sMjY2OntuOiI/PyJ9LDI2Nzp7bjoiPz8ifSwyNjg6e246Ij8/In0sMjcwOntuOiI/PyJ9LDI3MTp7bjoiPz8ifSwzODQ6e246Ij8/In0sMzg5OntuOiI/PyJ9LDM5MDp7bjoiPz8ifSwzOTM6e246Ij8/In0sMzk2OntuOiI/PyJ9LDUxMjp7bjoiPz8ifSw1MTQ6e246'@; put 'Ij8/In0sNTEzOntuOiI/PyJ9LDUxNjp7bjoiPz8ifSw1MTc6e246Ij8/In0sNjQwOntuOiI/PyJ9LDY0MTp7bjoiPz8ifSw2NDI6e246Ij8/In0sNjQzOntuOiI/PyJ9LDY0NDp7bjoiPz8ifSw2NDU6e246Ij8/In0sNjQ2OntuOiI/PyJ9LDY0Nzp7bjoiPz8ifSw2NDg6e246Ij8/In0sNjU4'@; put 'OntuOiI/PyJ9LDY1OTp7bjoiPz8ifSw2NjA6e246Ij8/In0sNjYxOntuOiI/PyJ9LDY2Mjp7bjoiPz8ifSw2NjU6e246Ij8/In0sNjY2OntuOiI/PyJ9LDc2ODp7bjoiPz8ifSw3NzI6e246Ij8/In0sMTYwMDp7bjoiPz8ifSwxNjAyOntuOiI/PyJ9LDE3OTM6e246Ij8/In0sMTc5NDp7bjoi'@; put 'Pz8ifSwxNzk1OntuOiI/PyJ9LDE3OTY6e246Ij8/In0sMTkyMDp7bjoiPz8ifSwyMDQ4OntuOiI/PyJ9LDIwNDk6e246Ij8/In0sMjA1Mjp7bjoiPz8ifSwyNjg4OntuOiI/PyJ9LDEwOTk4OntuOiI/PyJ9LDEyODQ5OntuOiI/PyJ9LDI4MjMzOntuOiI/PyJ9LDI4NDg0OntuOiI/PyJ9LDY1'@; put 'NTM1OntuOiIifX07cmV0dXJue3NoZWV0X3RvX3drMTpmdW5jdGlvbiBUKERuLE9yKXt2YXIgX3I9T3J8fHt9O2lmKCtfci5jb2RlcGFnZT49MCYmSCgrX3IuY29kZXBhZ2UpLCJzdHJpbmciPT1fci50eXBlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmci'@; put 'KTt2YXIgTW49TWMoKSxOcj15dChEblsiIXJlZiJdKSxqaT1BcnJheS5pc0FycmF5KERuKSxiaT1bXTt6aShNbiwwLGZ1bmN0aW9uIFEoRG4pe3ZhciBPcj1GcigyKTtyZXR1cm4gT3Iud3JpdGVfc2hpZnQoMixEbiksT3J9KDEwMzApKSx6aShNbiw2LGZ1bmN0aW9uIGRlKERuKXt2YXIgT3I9'@; put 'RnIoOCk7cmV0dXJuIE9yLndyaXRlX3NoaWZ0KDIsRG4ucy5jKSxPci53cml0ZV9zaGlmdCgyLERuLnMuciksT3Iud3JpdGVfc2hpZnQoMixEbi5lLmMpLE9yLndyaXRlX3NoaWZ0KDIsRG4uZS5yKSxPcn0oTnIpKTtmb3IodmFyIE5vPU5yLnMucjtObzw9TnIuZS5yOysrTm8pZm9yKHZhciBZ'@; put 'YT16byhObyksdW89TnIucy5jO3VvPD1Oci5lLmM7Kyt1byl7Tm89PT1Oci5zLnImJihiaVt1b109bXModW8pKTt2YXIgZGE9amk/KERuW05vXXx8W10pW3VvXTpEbltiaVt1b10rWWFdO2RhJiYieiIhPWRhLnQmJigibiI9PWRhLnQ/KDB8ZGEudik9PWRhLnYmJmRhLnY+PS0zMjc2OCYmZGEu'@; put 'djw9MzI3Njc/emkoTW4sMTMsbnQoTm8sdW8sZGEudikpOnppKE1uLDE0LFFlKE5vLHVvLGRhLnYpKTp6aShNbiwxNSxCZShObyx1byx6dChkYSkuc2xpY2UoMCwyMzkpKSkpfXJldHVybiB6aShNbiwxKSxNbi5lbmQoKX0sYm9va190b193azM6ZnVuY3Rpb24gUChEbixPcil7dmFyIF9yPU9y'@; put 'fHx7fTtpZigrX3IuY29kZXBhZ2U+PTAmJkgoK19yLmNvZGVwYWdlKSwic3RyaW5nIj09X3IudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFyIE1uPU1jKCk7emkoTW4sMCxmdW5jdGlvbiBzZShEbil7dmFyIE9yPUZyKDI2KTtPci53cml0'@; put 'ZV9zaGlmdCgyLDQwOTYpLE9yLndyaXRlX3NoaWZ0KDIsNCksT3Iud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIF9yPTAsTW49MCxOcj0wLGppPTA7amk8RG4uU2hlZXROYW1lcy5sZW5ndGg7KytqaSl7dmFyIE5vPURuLlNoZWV0c1tEbi5TaGVldE5hbWVzW2ppXV07aWYoTm8mJk5vWyIhcmVm'@; put 'Il0peysrTnI7dmFyIFlhPXphKE5vWyIhcmVmIl0pO19yPFlhLmUuciYmKF9yPVlhLmUuciksTW48WWEuZS5jJiYoTW49WWEuZS5jKX19cmV0dXJuIE9yLndyaXRlX3NoaWZ0KDIsX3IpLE9yLndyaXRlX3NoaWZ0KDEsTnIpLE9yLndyaXRlX3NoaWZ0KDEsTW4pLE9yLndyaXRlX3NoaWZ0KDIs'@; put 'MCksT3Iud3JpdGVfc2hpZnQoMiwwKSxPci53cml0ZV9zaGlmdCgxLDEpLE9yLndyaXRlX3NoaWZ0KDEsMiksT3Iud3JpdGVfc2hpZnQoNCwwKSxPci53cml0ZV9zaGlmdCg0LDApLE9yfShEbikpO2Zvcih2YXIgTnI9MCxqaT0wO05yPERuLlNoZWV0TmFtZXMubGVuZ3RoOysrTnIpKERuLlNo'@; put 'ZWV0c1tEbi5TaGVldE5hbWVzW05yXV18fHt9KVsiIXJlZiJdJiZ6aShNbiwyNyxtbyhEbi5TaGVldE5hbWVzW05yXSxqaSsrKSk7dmFyIGJpPTA7Zm9yKE5yPTA7TnI8RG4uU2hlZXROYW1lcy5sZW5ndGg7KytOcil7dmFyIE5vPURuLlNoZWV0c1tEbi5TaGVldE5hbWVzW05yXV07aWYoTm8m'@; put 'Jk5vWyIhcmVmIl0pe2Zvcih2YXIgWWE9eXQoTm9bIiFyZWYiXSksdW89QXJyYXkuaXNBcnJheShObyksTXM9W10sZGE9WWEucy5yO2RhPD1ZYS5lLnI7KytkYSlmb3IodmFyICRhPXpvKGRhKSxTYT1ZYS5zLmM7U2E8PVlhLmUuYzsrK1NhKXtkYT09PVlhLnMuciYmKE1zW1NhXT1tcyhTYSkp'@; put 'O3ZhciBQYz11bz8oTm9bZGFdfHxbXSlbU2FdOk5vW01zW1NhXSskYV07UGMmJiJ6IiE9UGMudCYmKCJuIj09UGMudD96aShNbiwyMyxzcihkYSxTYSxiaSxQYy52KSk6emkoTW4sMjIsYXIoZGEsU2EsYmksenQoUGMpLnNsaWNlKDAsMjM5KSkpKX0rK2JpfX1yZXR1cm4gemkoTW4sMSksTW4u'@; put 'ZW5kKCl9LHRvX3dvcmtib29rOmZ1bmN0aW9uIF8oRG4sT3Ipe3N3aXRjaChPci50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIG0oYihDZS5kZWNvZGUoRG4pKSxPcik7Y2FzZSJiaW5hcnkiOnJldHVybiBtKGIoRG4pLE9yKTtjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6cmV0dXJuIG0oRG4s'@; put 'T3IpfXRocm93IlVuc3VwcG9ydGVkIHR5cGUgIitPci50eXBlfX19KCksbXk9ZnVuY3Rpb24oKXt2YXIgZD1MYygidCIpLF89TGMoInJQciIpO2Z1bmN0aW9uIG0oUSl7dmFyIHNlPVEubWF0Y2goZCk7aWYoIXNlKXJldHVybnt0OiJzIix2OiIifTt2YXIgb2U9e3Q6InMiLHY6Q2koc2VbMV0p'@; put 'fSxkZT1RLm1hdGNoKF8pO3JldHVybiBkZSYmKG9lLnM9ZnVuY3Rpb24gUlgoZCl7dmFyIF89e30sbT1kLm1hdGNoKEJuKSxUPTAsUD0hMTtpZihtKWZvcig7VCE9bS5sZW5ndGg7KytUKXt2YXIgUT1YcihtW1RdKTtzd2l0Y2goUVswXS5yZXBsYWNlKC9cdyo6L2csIiIpKXtjYXNlIjxjb25k'@; put 'ZW5zZSI6Y2FzZSI8ZXh0ZW5kIjpicmVhaztjYXNlIjxzaGFkb3ciOmlmKCFRLnZhbClicmVhaztjYXNlIjxzaGFkb3c+IjpjYXNlIjxzaGFkb3cvPiI6Xy5zaGFkb3c9MTticmVhaztjYXNlIjwvc2hhZG93PiI6YnJlYWs7Y2FzZSI8Y2hhcnNldCI6aWYoIjEiPT1RLnZhbClicmVhaztfLmNw'@; put 'PVJbcGFyc2VJbnQoUS52YWwsMTApXTticmVhaztjYXNlIjxvdXRsaW5lIjppZighUS52YWwpYnJlYWs7Y2FzZSI8b3V0bGluZT4iOmNhc2UiPG91dGxpbmUvPiI6Xy5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpicmVhaztjYXNlIjxyRm9udCI6Xy5uYW1lPVEudmFsO2JyZWFr'@; put 'O2Nhc2UiPHN6IjpfLnN6PVEudmFsO2JyZWFrO2Nhc2UiPHN0cmlrZSI6aWYoIVEudmFsKWJyZWFrO2Nhc2UiPHN0cmlrZT4iOmNhc2UiPHN0cmlrZS8+IjpfLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPC9zdHJpa2U+IjpicmVhaztjYXNlIjx1IjppZighUS52YWwpYnJlYWs7c3dpdGNoKFEudmFs'@; put 'KXtjYXNlImRvdWJsZSI6Xy51bmRlcmxpbmU9MjticmVhaztjYXNlInNpbmdsZUFjY291bnRpbmciOl8udW5kZXJsaW5lPTMzO2JyZWFrO2Nhc2UiZG91YmxlQWNjb3VudGluZyI6Xy51bmRlcmxpbmU9MzR9Y2FzZSI8dT4iOmNhc2UiPHUvPiI6Xy51bmRlcmxpbmV8fChfLnVuZGVybGluZT0x'@; put 'KTticmVhaztjYXNlIjwvdT4iOmJyZWFrO2Nhc2UiPGIiOmlmKCIwIj09US52YWwpYnJlYWs7Y2FzZSI8Yj4iOmNhc2UiPGIvPiI6Xy5ib2xkPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjppZigiMCI9PVEudmFsKWJyZWFrO2Nhc2UiPGk+IjpjYXNlIjxpLz4iOl8uaXRhbGlj'@; put 'PTE7YnJlYWs7Y2FzZSI8L2k+IjpicmVhaztjYXNlIjxjb2xvciI6US5yZ2ImJihfLmNvbG9yPXtyZ2I6OD09US5yZ2IubGVuZ3RoP1EucmdiLnNsaWNlKDIsOCk6KCIwMDAwMDAiK1EucmdiKS5zbGljZSgtNil9KTticmVhaztjYXNlIjxmYW1pbHkiOl8uZmFtaWx5PVEudmFsO2JyZWFrO2Nh'@; put 'c2UiPHZlcnRBbGlnbiI6Im5vbmUiIT0oUS52YWx8fCJub25lIikmJihfLnZhbGlnbj1RLnZhbC5yZXBsYWNlKCJzY3JpcHQiLCIiKSk7YnJlYWs7Y2FzZSI8c2NoZW1lIjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOlA9ITA7'@; put 'YnJlYWs7Y2FzZSI8L2V4dD4iOlA9ITE7YnJlYWs7ZGVmYXVsdDppZig0NyE9PVFbMF0uY2hhckNvZGVBdCgxKSYmIVApdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgcmljaCBmb3JtYXQgIitRWzBdKX19cmV0dXJuIF99KGRlWzFdKSksb2V9dmFyIFQ9LzwoPzpcdys6KT9yPi9nLFA9'@; put 'LzxcLyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24oc2Upe3JldHVybiBzZS5yZXBsYWNlKFQsIiIpLnNwbGl0KFApLm1hcChtKS5maWx0ZXIoZnVuY3Rpb24ob2Upe3JldHVybiBvZS52fSl9fSgpLGxIPXsxOiJzaW5nbGUiLDI6ImRvdWJsZSIsMzM6InNpbmdsZS1hY2NvdW50aW5nIiwz'@; put 'NDoiZG91YmxlLWFjY291bnRpbmcifSx1Uz1mdW5jdGlvbigpe3ZhciBfPS8oXHJcbnxcbikvZztmdW5jdGlvbiBUKFApe3ZhciBRPVtbXSxQLnYsW11dO3JldHVybiBQLnY/KFAucyYmZnVuY3Rpb24gbShQLFEsc2Upe3ZhciBvZT1bXTtQLnVuZGVybGluZSYmb2UucHVzaCgidGV4dC1kZWNv'@; put 'cmF0aW9uOiB1bmRlcmxpbmU7IiksUC51bmRlcmxpbmU+MSYmb2UucHVzaCgidGV4dC11bmRlcmxpbmUtc3R5bGU6IitsSFtQLnVuZGVybGluZV0rIjsiKSxQLnN6JiZvZS5wdXNoKCJmb250LXNpemU6IitQLnN6KyJwdDsiKSxQLm91dGxpbmUmJm9lLnB1c2goInRleHQtZWZmZWN0OiBvdXRs'@; put 'aW5lOyIpLFAuc2hhZG93JiZvZS5wdXNoKCJ0ZXh0LXNoYWRvdzogYXV0bzsiKSxQLmNvbG9yJiZQLmNvbG9yLnJnYiYmb2UucHVzaCgiY29sb3I6ICMiK1QyKFAuY29sb3IucmdiKSsiOyIpLFEucHVzaCgnPHNwYW4gc3R5bGU9Iicrb2Uuam9pbigiIikrJyI+JyksUC5ib2xkJiYoUS5wdXNo'@; put 'KCI8Yj4iKSxzZS5wdXNoKCI8L2I+IikpLFAuaXRhbGljJiYoUS5wdXNoKCI8aT4iKSxzZS5wdXNoKCI8L2k+IikpLFAuc3RyaWtlJiYoUS5wdXNoKCI8cz4iKSxzZS5wdXNoKCI8L3M+IikpO3ZhciBkZT1QLnZhbGlnbnx8IiI7InN1cGVyc2NyaXB0Ij09ZGV8fCJzdXBlciI9PWRlP2RlPSJz'@; put 'dXAiOiJzdWJzY3JpcHQiPT1kZSYmKGRlPSJzdWIiKSwiIiE9ZGUmJihRLnB1c2goIjwiK2RlKyI+Iiksc2UucHVzaCgiPC8iK2RlKyI+IikpLHNlLnB1c2goIjwvc3Bhbj4iKX0oUC5zLFFbMF0sUVsyXSksUVswXS5qb2luKCIiKStRWzFdLnJlcGxhY2UoXywiPGJyLz4iKStRWzJdLmpvaW4o'@; put 'IiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oUSl7cmV0dXJuIFEubWFwKFQpLmpvaW4oIiIpfX0oKTtmdW5jdGlvbiBNOShkKXtyZXR1cm4gZC5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIGZ1bmN0aW9uIENyKGQpe3ZhciBfPSIiLG09W107cmV0dXJuIGQucyYmKGQucy5ib2xkJiZtLnB1c2goIjxi'@; put 'Lz4iKSxkLnMuaXRhbGljJiZtLnB1c2goIjxpLz4iKSxkLnMuc3RyaWtlJiZtLnB1c2goIjxzdHJpa2UvPiIpLGQucy51bmRlcmxpbmUmJm0ucHVzaCgnPHUgdmFsPSInKyhtNVtkLnMudW5kZXJsaW5lXXx8InNpbmdsZSIpKyciLz4nKSxkLnMuY29sb3ImJm0ucHVzaChQZyhkLnMuY29sb3Ip'@; put 'KSxkLnMuc3omJm0ucHVzaCgnPHN6IHZhbD0iJytkLnMuc3orJyIvPicpLGQucy5uYW1lJiZtLnB1c2goJzxyRm9udCB2YWw9IicrZC5zLm5hbWUrJyIvPicpLCgic3VwZXIiPT1kLnMudmFsaWdufHwic3ViIj09ZC5zLnZhbGlnbikmJm0ucHVzaCgnPHZlcnRBbGlnbiB2YWw9IicrZC5zLnZh'@; put 'bGlnbisnc2NyaXB0Ii8+JykpLG0ubGVuZ3RoJiYoXys9IjxyUHI+IittLmpvaW4oIiIpKyI8L3JQcj4iKSwiPHI+IisoXys9VnIoInQiLEJpKGQudiksbnVsbCkpKyI8L3I+In0obSl9KS5qb2luKCIiKX12YXIgYWQ9LzwoPzpcdys6KT90W14+XSo+KFtePF0qKTxcLyg/Olx3KzopP3Q+L2cs'@; put 'dnU9LzwoPzpcdys6KT9yXGJbXj5dKj4vLElYPS88KD86XHcrOik/clBoLio/PihbXHNcU10qPyk8XC8oPzpcdys6KT9yUGg+L2c7ZnVuY3Rpb24gRXMoZCxfKXt2YXIgbT0hX3x8Xy5jZWxsSFRNTCxUPXt9O3JldHVybiBkPyhkLm1hdGNoKC9eXHMqPCg/Olx3KzopP3RbXj5dKj4vKT8oVC50'@; put 'PUNpKFduKGQuc2xpY2UoZC5pbmRleE9mKCI+IikrMSkuc3BsaXQoLzxcLyg/Olx3KzopP3Q+LylbMF18fCIiKSksVC5yPVduKGQpLG0mJihULmg9JGkoVC50KSkpOmQubWF0Y2godnUpJiYoVC5yPVduKGQpLFQudD1DaShXbigoZC5yZXBsYWNlKElYLCIiKS5tYXRjaChhZCl8fFtdKS5qb2lu'@; put 'KCIiKS5yZXBsYWNlKEJuLCIiKSkpLFQuUj1teShULnIpLG0mJihULmg9dVMoVC5SKSkpLFQpOnt0OiIifX12YXIgRFg9LzwoPzpcdys6KT9zc3QoW14+XSopPihbXHNcU10qKTxcLyg/Olx3KzopP3NzdD4vLExYPS88KD86XHcrOik/KD86c2l8c3N0SXRlbSk+L2csaTVlPS88XC8oPzpcdys6'@; put 'KT8oPzpzaXxzc3RJdGVtKT4vO3VhLlNTVD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGFyZWRTdHJpbmdzIjt2YXIgRGc9L15cc3xccyR8W1x0XG5ccl0vO2Z1bmN0aW9uIGNIKGQsXyl7aWYoIV8uYm9va1NT'@; put 'VClyZXR1cm4iIjt2YXIgbT1bcG9dO21bbS5sZW5ndGhdPVZyKCJzc3QiLG51bGwse3htbG5zOlVhLm1haW5bMF0sY291bnQ6ZC5Db3VudCx1bmlxdWVDb3VudDpkLlVuaXF1ZX0pO2Zvcih2YXIgVD0wO1QhPWQubGVuZ3RoOysrVClpZihudWxsIT1kW1RdKXt2YXIgUD1kW1RdLFE9IjxzaT4i'@; put 'O1Aucj9RKz1QLnI6KFErPSI8dCIsUC50fHwoUC50PSIiKSxQLnQubWF0Y2goRGcpJiYoUSs9JyB4bWw6c3BhY2U9InByZXNlcnZlIicpLFErPSI+IitCaShQLnQpKyI8L3Q+IiksbVttLmxlbmd0aF09USs9Ijwvc2k+In1yZXR1cm4gbS5sZW5ndGg+MiYmKG1bbS5sZW5ndGhdPSI8L3NzdD4i'@; put 'LG1bMV09bVsxXS5yZXBsYWNlKCIvPiIsIj4iKSksbS5qb2luKCIiKX12YXIgVDk9ZnVuY3Rpb24gZGwoZCxfLG0pe3ZhciBUPTEzKzQqZC50Lmxlbmd0aCxQPWQuUiYmZC5SLmxlbmd0aHx8ZC5yO2QuciYmKGQuUj1teShkLnIpKSxQJiYoVCs9NCs0KmQuUi5sZW5ndGgpO3ZhciBRPSExO2lm'@; put 'KG51bGw9PW0mJihRPSEwLG09RnIoVCkpLG0ud3JpdGVfc2hpZnQoMSxQPzE6MCksa2koZC50LG0pLFApe20ud3JpdGVfc2hpZnQoNCxkLlIubGVuZ3RoKTtmb3IodmFyIHNlPTAsb2U9MDtvZTxkLlIubGVuZ3RoOysrb2Upe3ZhciBkZT1kLlJbb2VdO20ud3JpdGVfc2hpZnQoMixzZSksc2Ur'@; put 'PShkZS52fHwiIikubGVuZ3RoO3ZhciBMZT1kZS5zP0EyKF8uY2VsbFhmcyxfLmNlbGxTdHlsZVhmcyx7dDoibiIsdjowLHM6ZGUuc30sXyk6MDttLndyaXRlX3NoaWZ0KDIsXy5jZWxsWGZzW0xlXS5mb250SWQpfX1yZXR1cm4gUT9tLnNsaWNlKDAsbS5sKTptfTtmdW5jdGlvbiBkUyhkLF8p'@; put 'e3ZhciBtPU1jKCk7SWkobSwiQnJ0QmVnaW5Tc3QiLGZ1bmN0aW9uIFBBKGQsXyl7cmV0dXJuIF98fChfPUZyKDgpKSxfLndyaXRlX3NoaWZ0KDQsZC5Db3VudCksXy53cml0ZV9zaGlmdCg0LGQuVW5pcXVlKSxffShkKSk7Zm9yKHZhciBUPTA7VDxkLmxlbmd0aDsrK1QpSWkobSwiQnJ0U1NU'@; put 'SXRlbSIsVDkoZFtUXSxfKSk7cmV0dXJuIElpKG0sIkJydEVuZFNzdCIpLG0uZW5kKCl9ZnVuY3Rpb24gdUgoZCl7aWYodHlwZW9mIGNwdGFibGU8InUiKXJldHVybiBjcHRhYmxlLnV0aWxzLmVuY29kZSh3LGQpO2Zvcih2YXIgXz1bXSxtPWQuc3BsaXQoIiIpLFQ9MDtUPG0ubGVuZ3RoOysr'@; put 'VClfW1RdPW1bVF0uY2hhckNvZGVBdCgwKTtyZXR1cm4gX31mdW5jdGlvbiBMZyhkLF8pe3ZhciBtPXt9O3JldHVybiBtLk1ham9yPWQucmVhZF9zaGlmdCgyKSxtLk1pbm9yPWQucmVhZF9zaGlmdCgyKSxfPj00JiYoZC5sKz1fLTQpLG19ZnVuY3Rpb24gdTUoZCl7Zm9yKHZhciBfPWQucmVh'@; put 'ZF9zaGlmdCg0KSxtPWQubCtfLTQsVD17fSxQPWQucmVhZF9zaGlmdCg0KSxRPVtdO1AtLSA+MDspUS5wdXNoKHt0OmQucmVhZF9zaGlmdCg0KSx2OmQucmVhZF9zaGlmdCgwLCJscHA0Iil9KTtpZihULm5hbWU9ZC5yZWFkX3NoaWZ0KDAsImxwcDQiKSxULmNvbXBzPVEsZC5sIT1tKXRocm93'@; put 'IG5ldyBFcnJvcigiQmFkIERhdGFTcGFjZU1hcEVudHJ5OiAiK2QubCsiICE9ICIrbSk7cmV0dXJuIFR9ZnVuY3Rpb24gZEgoZCxfKXt2YXIgbT1kLmwrXyxUPXt9O1QuRmxhZ3M9NjMmZC5yZWFkX3NoaWZ0KDQpLGQubCs9NCxULkFsZ0lEPWQucmVhZF9zaGlmdCg0KTt2YXIgUD0hMTtzd2l0'@; put 'Y2goVC5BbGdJRCl7Y2FzZSAyNjEyNjpjYXNlIDI2MTI3OmNhc2UgMjYxMjg6UD0zNj09VC5GbGFnczticmVhaztjYXNlIDI2NjI1OlA9ND09KDUyJlQuRmxhZ3MpO2JyZWFrO2Nhc2UgMDpQPTE2PT1ULkZsYWdzfHw0PT1ULkZsYWdzfHwzNj09VC5GbGFnczticmVhaztkZWZhdWx0OnRocm93'@; put 'IlVucmVjb2duaXplZCBlbmNyeXB0aW9uIGFsZ29yaXRobTogIitULkFsZ0lEfWlmKCFQKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBGbGFncy9BbGdJRCBtaXNtYXRjaCIpO3JldHVybiBULkFsZ0lESGFzaD1kLnJlYWRfc2hpZnQoNCksVC5LZXlTaXplPWQucmVhZF9zaGlmdCg0KSxU'@; put 'LlByb3ZpZGVyVHlwZT1kLnJlYWRfc2hpZnQoNCksZC5sKz04LFQuQ1NQTmFtZT1kLnJlYWRfc2hpZnQobS1kLmw+PjEsInV0ZjE2bGUiKSxkLmw9bSxUfWZ1bmN0aW9uIEZYKGQsXyl7dmFyIG09e30sVD1kLmwrXztyZXR1cm4gZC5sKz00LG0uU2FsdD1kLnNsaWNlKGQubCxkLmwrMTYpLGQu'@; put 'bCs9MTYsbS5WZXJpZmllcj1kLnNsaWNlKGQubCxkLmwrMTYpLGQubCs9MTYsZC5yZWFkX3NoaWZ0KDQpLG0uVmVyaWZpZXJIYXNoPWQuc2xpY2UoZC5sLFQpLGQubD1ULG19ZnVuY3Rpb24geDkoZCl7aWYoMzYhPSg2MyZkLnJlYWRfc2hpZnQoNCkpKXRocm93IG5ldyBFcnJvcigiRW5jcnlw'@; put 'dGlvbkluZm8gbWlzbWF0Y2giKTt2YXIgbT1kLnJlYWRfc2hpZnQoNCk7cmV0dXJue3Q6IlN0ZCIsaDpkSChkLG0pLHY6RlgoZCxkLmxlbmd0aC1kLmwpfX1mdW5jdGlvbiBsNWUoKXt0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkOiBFQ01BLTM3NiBFeHRlbnNp'@; put 'YmxlIil9ZnVuY3Rpb24gZlMoZCl7dmFyIF89WyJzYWx0U2l6ZSIsImJsb2NrU2l6ZSIsImtleUJpdHMiLCJoYXNoU2l6ZSIsImNpcGhlckFsZ29yaXRobSIsImNpcGhlckNoYWluaW5nIiwiaGFzaEFsZ29yaXRobSIsInNhbHRWYWx1ZSJdO2QubCs9NDt2YXIgbT1kLnJlYWRfc2hpZnQoZC5s'@; put 'ZW5ndGgtZC5sLCJ1dGY4IiksVD17fTtyZXR1cm4gbS5yZXBsYWNlKEJuLGZ1bmN0aW9uKFEpe3ZhciBzZT1YcihRKTtzd2l0Y2goZWEoc2VbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjxlbmNyeXB0aW9uIjpjYXNlIjwvZW5jcnlwdGlvbj4iOmNhc2UiPC9rZXlFbmNyeXB0b3JzPiI6Y2FzZSI8'@; put 'L2tleUVuY3J5cHRvcj4iOmJyZWFrO2Nhc2UiPGtleURhdGEiOl8uZm9yRWFjaChmdW5jdGlvbihvZSl7VFtvZV09c2Vbb2VdfSk7YnJlYWs7Y2FzZSI8ZGF0YUludGVncml0eSI6VC5lbmNyeXB0ZWRIbWFjS2V5PXNlLmVuY3J5cHRlZEhtYWNLZXksVC5lbmNyeXB0ZWRIbWFjVmFsdWU9c2Uu'@; put 'ZW5jcnlwdGVkSG1hY1ZhbHVlO2JyZWFrO2Nhc2UiPGtleUVuY3J5cHRvcnM+IjpjYXNlIjxrZXlFbmNyeXB0b3JzIjpULmVuY3M9W107YnJlYWs7Y2FzZSI8a2V5RW5jcnlwdG9yIjpULnVyaT1zZS51cmk7YnJlYWs7Y2FzZSI8ZW5jcnlwdGVkS2V5IjpULmVuY3MucHVzaChzZSk7YnJlYWs7'@; put 'ZGVmYXVsdDp0aHJvdyBzZVswXX19KSxUfWZ1bmN0aW9uIFZBKGQpe3ZhciBtLFEsXz0wLFQ9dUgoZCksUD1ULmxlbmd0aCsxO2ZvcigobT1YKFApKVswXT1ULmxlbmd0aCxRPTE7USE9UDsrK1EpbVtRXT1UW1EtMV07Zm9yKFE9UC0xO1E+PTA7LS1RKV89KCgxNjM4NCZfPzE6MCl8Xzw8MSYz'@; put 'Mjc2NylebVtRXTtyZXR1cm4gNTI4MTFeX312YXIgZkg9ZnVuY3Rpb24oKXt2YXIgZD1bMTg3LDI1NSwyNTUsMTg2LDI1NSwyNTUsMTg1LDEyOCwwLDE5MCwxNSwwLDE5MSwxNSwwXSxfPVs1Nzg0MCw3NDM5LDUyMzgwLDMzOTg0LDQzNjQsMzYwMCw2MTkwMiwxMjYwNiw2MjU4LDU3NjU3LDU0'@; put 'Mjg3LDM0MDQxLDEwMjUyLDQzMzcwLDIwMTYzXSxtPVs0NDc5NiwxOTkyOSwzOTg1OCwxMDA1MywyMDEwNiw0MDIxMiwxMDc2MSwzMTU4NSw2MzE3MCw2NDkzMyw2MDI2Nyw1MDkzNSw0MDM5OSwxMTE5OSwxNzc2MywzNTUyNiwxNDUzLDI5MDYsNTgxMiwxMTYyNCwyMzI0OCw4ODUsMTc3MCwz'@; put 'NTQwLDcwODAsMTQxNjAsMjgzMjAsNTY2NDAsNTUzNjksNDExMzksMjA4MDcsNDE2MTQsMjE4MjEsNDM2NDIsMTc2MjEsMjg0ODUsNTY5NzAsNDQzNDEsMTkwMTksMzgwMzgsMTQ2MDUsMjkyMTAsNjAxOTUsNTA3OTEsNDAxNzUsMTA3NTEsMjE1MDIsNDMwMDQsMjQ1MzcsMTgzODcsMzY3NzQs'@; put 'Mzk0OSw3ODk4LDE1Nzk2LDMxNTkyLDYzMTg0LDQ3MjAxLDI0ODAzLDQ5NjA2LDM3ODA1LDE0MjAzLDI4NDA2LDU2ODEyLDE3ODI0LDM1NjQ4LDE2OTcsMzM5NCw2Nzg4LDEzNTc2LDI3MTUyLDQzNjAxLDE3NTM5LDM1MDc4LDU1NywxMTE0LDIyMjgsNDQ1NiwzMDM4OCw2MDc3Niw1MTk1Mywz'@; put 'NDI0Myw3MDc5LDE0MTU4LDI4MzE2LDE0MTI4LDI4MjU2LDU2NTEyLDQzNDI1LDE3MjUxLDM0NTAyLDc1OTcsMTMxMDUsMjYyMTAsNTI0MjAsMzUyNDEsODgzLDE3NjYsMzUzMiw0MTI5LDgyNTgsMTY1MTYsMzMwMzIsNDY1Nyw5MzE0LDE4NjI4XSxQPWZ1bmN0aW9uKHNlLG9lKXtyZXR1cm4g'@; put 'ZnVuY3Rpb24oc2Upe3JldHVybiAyNTUmKHNlPj4xfHNlPDw3KX0oc2Veb2UpfTtyZXR1cm4gZnVuY3Rpb24ob2Upe2Zvcih2YXIgZGU9dUgob2UpLExlPWZ1bmN0aW9uKHNlKXtmb3IodmFyIG9lPV9bc2UubGVuZ3RoLTFdLGRlPTEwNCxMZT1zZS5sZW5ndGgtMTtMZT49MDstLUxlKWZvcih2'@; put 'YXIgTmU9c2VbTGVdLEJlPTA7NyE9QmU7KytCZSk2NCZOZSYmKG9lXj1tW2RlXSksTmUqPTIsLS1kZTtyZXR1cm4gb2V9KGRlKSxOZT1kZS5sZW5ndGgsQmU9WCgxNiksWmU9MDsxNiE9WmU7KytaZSlCZVtaZV09MDt2YXIgUWU7Zm9yKCEoMSZ+TmUpJiYoQmVbTmVdPVAoZFswXSxMZT4+OCks'@; put 'QmVbLS1OZV09UChkZVtkZS5sZW5ndGgtMV0sMjU1JkxlKSk7TmU+MDspQmVbLS1OZV09UChkZVtOZV0sTGU+PjgpLEJlWy0tTmVdPVAoZGVbTmVdLDI1NSZMZSk7Zm9yKE5lPTE1LFFlPTE1LWRlLmxlbmd0aDtRZT4wOylCZVtOZV09UChkW1FlXSxMZT4+OCksLS1RZSxCZVstLU5lXT1QKGRl'@; put 'W05lXSwyNTUmTGUpLC0tTmUsLS1RZTtyZXR1cm4gQmV9fSgpO3ZhciBkNT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoUCxRKXtzd2l0Y2goUS50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIF8oQ2UuZGVjb2RlKFApLFEpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gXyhQLFEpO2Nhc2UiYnVmZmVyIjpy'@; put 'ZXR1cm4gXyhQLnRvU3RyaW5nKCJiaW5hcnkiKSxRKTtjYXNlImFycmF5IjpyZXR1cm4gXyhPbihQKSxRKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUS50eXBlKX1mdW5jdGlvbiBfKFAsUSl7dmFyIG9lPShRfHx7fSkuZGVuc2U/W106e307aWYoIVAubWF0Y2goL1xc'@; put 'dHJvd2QvKSl0aHJvdyBuZXcgRXJyb3IoIlJURiBtaXNzaW5nIHRhYmxlIik7cmV0dXJuIG9lWyIhcmVmIl09aHQoe3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSksb2V9cmV0dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIG0oUCxRKXtyZXR1cm4gbW4oZChQLFEpLFEpfSx0b19zaGVldDpkLGZy'@; put 'b21fc2hlZXQ6ZnVuY3Rpb24gVChQKXtmb3IodmFyIG9lLFE9WyJ7XFxydGYxXFxhbnNpIl0sc2U9eXQoUFsiIXJlZiJdKSxkZT1BcnJheS5pc0FycmF5KFApLExlPXNlLnMucjtMZTw9c2UuZS5yOysrTGUpe1EucHVzaCgiXFx0cm93ZFxcdHJhdXRvZml0MSIpO2Zvcih2YXIgTmU9c2Uucy5j'@; put 'O05lPD1zZS5lLmM7KytOZSlRLnB1c2goIlxcY2VsbHgiKyhOZSsxKSk7Zm9yKFEucHVzaCgiXFxwYXJkXFxpbnRibCIpLE5lPXNlLnMuYztOZTw9c2UuZS5jOysrTmUpe3ZhciBCZT1xaSh7cjpMZSxjOk5lfSk7KG9lPWRlPyhQW0xlXXx8W10pW05lXTpQW0JlXSkmJihudWxsIT1vZS52fHxv'@; put 'ZS5mJiYhb2UuRikmJihRLnB1c2goIiAiKyhvZS53fHwoenQob2UpLG9lLncpKSksUS5wdXNoKCJcXGNlbGwiKSl9US5wdXNoKCJcXHBhcmRcXGludGJsXFxyb3ciKX1yZXR1cm4gUS5qb2luKCIiKSsifSJ9fX0oKTtmdW5jdGlvbiBfOChkKXt2YXIgXz1kLnNsaWNlKCIjIj09PWRbMF0/MTow'@; put 'KS5zbGljZSgwLDYpO3JldHVybltwYXJzZUludChfLnNsaWNlKDAsMiksMTYpLHBhcnNlSW50KF8uc2xpY2UoMiw0KSwxNikscGFyc2VJbnQoXy5zbGljZSg0LDYpLDE2KV19ZnVuY3Rpb24gYjMoZCl7Zm9yKHZhciBfPTAsbT0xOzMhPV87KytfKW09MjU2Km0rKGRbX10+MjU1PzI1NTpkW19d'@; put 'PDA/MDpkW19dKTtyZXR1cm4gbS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKX1mdW5jdGlvbiBPZyhkLF8pe2lmKG51bGw9PWQpcmV0dXJuIG51bGwhPV87aWYobnVsbD09XylyZXR1cm4hMDtpZigxPT1kLmF1dG8mJjE9PV8uYXV0bylyZXR1cm4hMTtpZighIWQuYXV0byE9'@; put 'ISFfLmF1dG98fG51bGw9PWQudGhlbWUhPShudWxsPT1fLnRoZW1lKSlyZXR1cm4hMDtpZihudWxsIT1kLnRoZW1lKXJldHVybiBkLnRoZW1lIT1fLnRoZW1lfHxkLnRpbnQhPV8udGludDtpZihudWxsPT1kLnJnYiYmbnVsbD09Xy5yZ2IpcmV0dXJuITE7dmFyIG09ZC5yZ2I7Im51bWJlciI9'@; put 'PXR5cGVvZiBtJiYobT1tLnRvU3RyaW5nKDE2KSksbT1tLnNsaWNlKC02KTt2YXIgVD1fLnJnYjtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFQmJihUPVQudG9TdHJpbmcoMTYpKSxUPVQuc2xpY2UoLTYpLG0udG9Mb3dlckNhc2UoKSE9VC50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHU1ZShkLF8p'@; put 'e3JldHVybiBudWxsPT1kP251bGwhPV86bnVsbD09Xz9udWxsIT1kOmQuc3R5bGUhPV8uc3R5bGV8fE9nKGQuY29sb3IsXy5jb2xvcil9ZnVuY3Rpb24gaDUoZCxfKXtpZigwPT09XylyZXR1cm4gZDt2YXIgbT1mdW5jdGlvbiBVWChkKXt2YXIgXz1kWzBdLzI1NSxtPWRbMV0vMjU1LFQ9ZFsy'@; put 'XS8yNTUsUD1NYXRoLm1heChfLG0sVCksUT1NYXRoLm1pbihfLG0sVCksc2U9UC1RO2lmKDA9PT1zZSlyZXR1cm5bMCwwLF9dO3ZhciBkZSxvZT0wLExlPVArUTtzd2l0Y2goZGU9c2UvKExlPjE/Mi1MZTpMZSksUCl7Y2FzZSBfOm9lPSgobS1UKS9zZSs2KSU2O2JyZWFrO2Nhc2UgbTpvZT0o'@; put 'VC1fKS9zZSsyO2JyZWFrO2Nhc2UgVDpvZT0oXy1tKS9zZSs0fXJldHVybltvZS82LGRlLExlLzJdfShfOChkKSk7cmV0dXJuIG1bMl09XzwwP21bMl0qKDErXyk6MS0oMS1tWzJdKSooMS1fKSxiMyhmdW5jdGlvbiB6WChkKXt2YXIgZGUsbT1kWzFdLFQ9ZFsyXSxQPTIqbSooVDwuNT9UOjEt'@; put 'VCksUT1ULVAvMixzZT1bUSxRLFFdLG9lPTYqZFswXTtpZigwIT09bSlzd2l0Y2goMHxvZSl7Y2FzZSAwOmNhc2UgNjpkZT1QKm9lLHNlWzBdKz1QLHNlWzFdKz1kZTticmVhaztjYXNlIDE6c2VbMF0rPWRlPVAqKDItb2UpLHNlWzFdKz1QO2JyZWFrO2Nhc2UgMjpkZT1QKihvZS0yKSxzZVsx'@; put 'XSs9UCxzZVsyXSs9ZGU7YnJlYWs7Y2FzZSAzOnNlWzFdKz1kZT1QKig0LW9lKSxzZVsyXSs9UDticmVhaztjYXNlIDQ6ZGU9UCoob2UtNCksc2VbMl0rPVAsc2VbMF0rPWRlO2JyZWFrO2Nhc2UgNTpzZVsyXSs9ZGU9UCooNi1vZSksc2VbMF0rPVB9Zm9yKHZhciBMZT0wOzMhPUxlOysrTGUp'@; put 'c2VbTGVdPU1hdGgucm91bmQoMjU1KnNlW0xlXSk7cmV0dXJuIHNlfShtKSl9dmFyIHNkPTY7ZnVuY3Rpb24gZjUoZCl7cmV0dXJuIE1hdGguZmxvb3IoKGQrTWF0aC5yb3VuZCgxMjgvc2QpLzI1Nikqc2QpfWZ1bmN0aW9uIHk4KGQpe3JldHVybiBNYXRoLmZsb29yKChkLTUpL3NkKjEwMCsu'@; put 'NSkvMTAwfWZ1bmN0aW9uIHBTKGQpe3JldHVybiBNYXRoLnJvdW5kKChkKnNkKzUpL3NkKjI1NikvMjU2fWZ1bmN0aW9uIEIwKGQpe2QuYmVzdEZpdCYmZGVsZXRlIGQuYmVzdEZpdCxkLndpZHRoPyhkLndweD1mNShkLndpZHRoKSxkLndjaD15OChkLndweCksZC5NRFc9c2QpOmQud3B4Pyhk'@; put 'LndjaD15OChkLndweCksZC53aWR0aD1wUyhkLndjaCksZC5NRFc9c2QpOiJudW1iZXIiPT10eXBlb2YgZC53Y2gmJihkLndpZHRoPXBTKGQud2NoKSxkLndweD1mNShkLndpZHRoKSxkLk1EVz1zZCksZC5jdXN0b21XaWR0aCYmZGVsZXRlIGQuY3VzdG9tV2lkdGh9dmFyIHA1PTk2O2Z1bmN0'@; put 'aW9uIGI4KGQpe3JldHVybiA3MipkL3A1fWZ1bmN0aW9uIE5nKGQpe3JldHVybiBkKnA1LzcyfWZ1bmN0aW9uIGdTKGQpe3A1PWQ9e29zeDo3Mix3aW46OTYsd2luMTAwOjk2LHdpbjEyNToxMjAsd2luMTUwOjE0NH1bZF18fGR8fDk2LGc1PWJwW2RdfWZ1bmN0aW9uIFdBKGQpe2QuaHB4P2Qu'@; put 'aHB0PWI4KGQuaHB4KTpkLmhwdCYmKGQuaHB4PU5nKGQuaHB0KSl9dmFyIG1IPXtOb25lOiJub25lIixTb2xpZDoic29saWQiLEdyYXk1MDoibWVkaXVtR3JheSIsR3JheTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3Ry'@; put 'aXBlOiJkYXJrVmVydGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFnQ3Jvc3M6ImRhcmtHcmlkIixUaGlja0RpYWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBl'@; put 'OiJsaWdodFZlcnRpY2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRHcmlkIn0sV1g9Y2UobUgpLG1TPXtvcmFuZ2U6MTY3NTM5MjAsYmxhY2s6MCxuYXZ5OjEyOCxibHVlOjI1NSxncmVlbjozMjc2OCx0ZWFsOjMyODk2LGxpbWU6NjUy'@; put 'ODAsYXF1YTo2NTUzNSxzaWx2ZXI6MTI2MzIyNTYsbWFyb29uOjgzODg2MDgscHVycGxlOjgzODg3MzYsb2xpdmU6ODQyMTM3NixncmF5Ojg0MjE1MDQscmVkOjE2NzExNjgwLGZ1Y2hzaWE6MTY3MTE5MzUseWVsbG93OjE2Nzc2OTYwLHdoaXRlOjE2Nzc3MjE1fTtmdW5jdGlvbiBUZihkLF8p'@; put 'e2lmKGQucmVwbGFjZSgiIyIsIiIpLm1hdGNoKC9eWzAtOWEtZkEtRl17Nn0kLykpcmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgiIyIsIiIpLDE2KTtpZihtU1tkXSlyZXR1cm4gbVNbZF07dmFyIG09ZC5tYXRjaCgvcmdiXChccyooXGQqKVxzKixccyooXGQqKVxzKixccyooXGQqKVxzKlwp'@; put 'Lyk7aWYobSlyZXR1cm4oK21bMV08PDE2KSsoK21bMl08PDgpKyArbVszXTtpZihtPWQubWF0Y2goL3JnYmFcKFxzKihcZCopXHMqLFxzKihcZCopXHMqLFxzKihcZCopXHMqKFxkKikvKSlyZXR1cm4gMCE9KG1bNF0mJm1bNF0ubGVuZ3RoPjAmJittWzRdfHwwKXx8K21bMV0+MHx8K21bMl0+'@; put 'MHx8K21bM10+MD8oK21bMV08PDE2KSsoK21bMl08PDgpKyArbVszXTpfPy0xOjE2Nzc3MjE1O3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBIVE1MIGNvbG9yICIrZCl9dmFyIGJwPXt9O2Z1bmN0aW9uIEdtKGQpe2Q9ZHx8OTY7dmFyIF89e0NhbGlicmk6W10sQXJpYWw6W10sIlNwYXJrYXNz'@; put 'ZSBSZyI6W10sXHU1YjhiXHU0ZjUzOltdLFx1NmUzOFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZjpbXSwiQ2VudHVyeSBHb3RoaWMiOltdfTtyZXR1cm4gXy5DYWxpYnJpWzExXT03LF8uQ2FsaWJyaVsxMl09ezcyOjYsOTY6OCwxMjA6MTAsMTQ0OjEyfVtkXXx8OCxfLkNhbGlicmlbMTNdPTEw'@; put 'LF8uQ2FsaWJyaVsxNF09MTEsXy5DYWxpYnJpWzE2XT0xMixfLkNhbGlicmlbMThdPTE0LF8uQ2FsaWJyaVsyMF09MTYsXy5cdTViOGJcdTRmNTNbMTFdPTgsXy5cdTZlMzhcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWZbMTFdPTgsX1siU3Bhcmthc3NlIFJnIl1bMTFdPTcsXy5BcmlhbFsxMF09'@; put 'NyxfWyJDZW50dXJ5IEdvdGhpYyJdWzEyXT05LF99YnBbNzJdPUdtKDcyKSxicFs5Nl09R20oOTYpLGJwWzEyMF09R20oMTIwKSxicFsxNDRdPUdtKDE0NCk7dmFyIGc1PWJwWzk2XTtmdW5jdGlvbiBZQShkKXtyZXR1cm4oZzVbZC5uYW1lfHxkLkZvbnROYW1lXXx8W10pW2Quc3p8fGQuU2l6'@; put 'ZV19ZnVuY3Rpb24gJG0oZCl7aWYoZCl7dmFyIF89WUEoZCk7aWYoXylyZXR1cm4gc2Q9X31yZXR1cm4gc2Q9Nn1mdW5jdGlvbiB2SChkLF8sbSl7cmV0dXJuIGIzKGZ1bmN0aW9uIEE5KGQsXyxtKXtyZXR1cm5bTWF0aC5yb3VuZChfWzBdKm0rZFswXSooMS1tKSksTWF0aC5yb3VuZChfWzFd'@; put 'Km0rZFsxXSooMS1tKSksTWF0aC5yb3VuZChfWzJdKm0rZFsyXSooMS1tKSldfShfOCgibnVtYmVyIj09dHlwZW9mIGQucmdiPygiMDAwMDAiK2QudG9TdHJpbmcoMTYpKS5zbGljZSgtNik6ZC5yZ2IpLF84KCJudW1iZXIiPT10eXBlb2YgXy5yZ2I/KCIwMDAwMCIrXy50b1N0cmluZygxNikp'@; put 'LnNsaWNlKC02KTpfLnJnYiksbSkpfWZ1bmN0aW9uIHZ5KGQsXyxtKXtpZihtKXN3aXRjaCgrZCl7Y2FzZSA2NDpkPTY1O2JyZWFrO2Nhc2UgNjU6ZD02NH12YXIgVD1fJiZfWytkXXx8d2RbK2RdfHxpNVsrZC0yMDBdO2lmKDgxPT0rZCYmKFQ9d2RbMV0pLFR8fChUPXdkWzFdKSwhVCl0aHJv'@; put 'dyBuZXcgRXJyb3IoImJhZCBJQ1YgaW5kZXggIitkKTtyZXR1cm4gYjMoVCl9ZnVuY3Rpb24gdzgoZCxfLG0pe3ZhciBUPXt9O3JldHVybiBudWxsIT1kLmluZGV4ZWQmJihULmluZGV4PXBhcnNlSW50KGQuaW5kZXhlZCwxMCksVC5yZ2I9dnkoVC5pbmRleCxfLkluZGV4ZWQpKSxudWxsIT1k'@; put 'LnRoZW1lJiYoVC50aGVtZT1wYXJzZUludChkLnRoZW1lLDEwKSksbnVsbCE9ZC50aW50JiYoVC50aW50PXBhcnNlRmxvYXQoZC50aW50KSksbnVsbCE9ZC5yZ2ImJihULnJnYj1kLnJnYi5zbGljZSgtNikpLG51bGwhPVQudGhlbWUmJiFULnJnYiYmbS50aGVtZUVsZW1lbnRzJiYoVC5yZ2I9'@; put 'aDUobS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtULnRoZW1lXS5yZ2IsVC50aW50fHwwKSxULnJhd19yZ2I9bS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtULnRoZW1lXS5yZ2IpLFR9ZnVuY3Rpb24gX0goZCxfLG0sVCl7Xy5Cb3JkZXJzPVtdO3ZhciBQPXt9LFE9e30sc2U9ITE7KGRbMF0u'@; put 'bWF0Y2goQm4pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihvZSl7dmFyIGRlPVhyKG9lKTtzd2l0Y2goZWEoZGVbMF0pKXtjYXNlIjxib3JkZXJzIjpjYXNlIjxib3JkZXJzPiI6Y2FzZSI8L2JvcmRlcnM+IjpjYXNlIjwvYm9yZGVyPiI6Y2FzZSI8bGVmdC8+IjpjYXNlIjwvbGVmdD4iOmNhc2Ui'@; put 'PHJpZ2h0Lz4iOmNhc2UiPC9yaWdodD4iOmNhc2UiPHRvcC8+IjpjYXNlIjwvdG9wPiI6Y2FzZSI8Ym90dG9tLz4iOmNhc2UiPC9ib3R0b20+IjpjYXNlIjxkaWFnb25hbCI6Y2FzZSI8ZGlhZ29uYWw+IjpjYXNlIjxkaWFnb25hbC8+IjpjYXNlIjxob3Jpem9udGFsIjpjYXNlIjxob3Jpem9u'@; put 'dGFsPiI6Y2FzZSI8aG9yaXpvbnRhbC8+IjpjYXNlIjx2ZXJ0aWNhbCI6Y2FzZSI8dmVydGljYWw+IjpjYXNlIjx2ZXJ0aWNhbC8+IjpjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjpjYXNlIjxzdGFydC8+IjpjYXNlIjwvc3RhcnQ+IjpjYXNlIjxlbmQiOmNhc2UiPGVuZD4iOmNhc2UiPGVu'@; put 'ZC8+IjpjYXNlIjwvZW5kPiI6Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6UD17fSxkZS5kaWFnb25hbFVwJiYo'@; put 'UC5kaWFnb25hbFVwPVRpKGRlLmRpYWdvbmFsVXApKSxkZS5kaWFnb25hbERvd24mJihQLmRpYWdvbmFsRG93bj1UaShkZS5kaWFnb25hbERvd24pKSxfLkJvcmRlcnMucHVzaChQKTticmVhaztjYXNlIjxsZWZ0IjpjYXNlIjxsZWZ0PiI6UT1QLmxlZnQ9e30sZGUuc3R5bGUmJihRLnN0eWxl'@; put 'PWRlLnN0eWxlKTticmVhaztjYXNlIjxyaWdodCI6Y2FzZSI8cmlnaHQ+IjpRPVAucmlnaHQ9e30sZGUuc3R5bGUmJihRLnN0eWxlPWRlLnN0eWxlKTticmVhaztjYXNlIjx0b3AiOmNhc2UiPHRvcD4iOlE9UC50b3A9e30sZGUuc3R5bGUmJihRLnN0eWxlPWRlLnN0eWxlKTticmVhaztjYXNl'@; put 'Ijxib3R0b20iOmNhc2UiPGJvdHRvbT4iOlE9UC5ib3R0b209e30sZGUuc3R5bGUmJihRLnN0eWxlPWRlLnN0eWxlKTticmVhaztjYXNlIjwvZGlhZ29uYWw+IjpQLmRpYWdvbmFsPVEsUT17fTticmVhaztjYXNlIjwvaG9yaXpvbnRhbD4iOlAuaG9yaXpvbnRhbD1RLFE9e307YnJlYWs7Y2Fz'@; put 'ZSI8L3ZlcnRpY2FsPiI6UC52ZXJ0aWNhbD1RLFE9e307YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yPiI6US5jb2xvcnx8KFEuY29sb3I9e30pLGRlLmF1dG8mJihRLmNvbG9yLmF1dG89VGkoZGUuYXV0bykpLG51bGwhPWRlLnJnYj9RLmNvbG9yLnJnYj1kZS5yZ2Iuc2xpY2UoLTYp'@; put 'OmRlLmluZGV4ZWQ/KFEuY29sb3IuaW5kZXg9cGFyc2VJbnQoZGUuaW5kZXhlZCwxMCksUS5jb2xvci5yZ2I9dnkoUS5jb2xvci5pbmRleCxfLkluZGV4ZWQsITEpKTpkZS50aGVtZSYmKFEuY29sb3IudGhlbWU9cGFyc2VJbnQoZGUudGhlbWUsMTApLGRlLnRpbnQmJihRLmNvbG9yLnRpbnQ9'@; put 'cGFyc2VGbG9hdChkZS50aW50KSksZGUudGhlbWUmJm0udGhlbWVFbGVtZW50cyYmbS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKFEuY29sb3IucmdiPWg1KG0udGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbUS5jb2xvci50aGVtZV0ucmdiLFEuY29sb3IudGludHx8MCkpKSwhZGUuYXV0byYm'@; put 'bnVsbD09ZGUucmdiJiYhZGUuaW5kZXhlZCYmZGVsZXRlIFEuY29sb3I7YnJlYWs7Y2FzZSI8ZXh0IjpzZT0hMDticmVhaztjYXNlIjwvZXh0PiI6c2U9ITE7YnJlYWs7ZGVmYXVsdDppZihUJiZULldURiYmIXNlKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrZGVbMF0rIiBpbiBi'@; put 'b3JkZXJzIil9fSl9ZnVuY3Rpb24gcW0oZCxfKXt2YXIgbT1bIjwiK19dO3JldHVybiBkJiZkLnN0eWxlPyhtLnB1c2goJyBzdHlsZT0iJytkLnN0eWxlKyciJyksZC5jb2xvcj8obS5wdXNoKCI+IiksbS5wdXNoKFBnKGQuY29sb3IsITApKSxtLmpvaW4oIiIpKyI8LyIrXysiPiIpOm0uam9p'@; put 'bigiIikrIi8+Iik6bVswXSsiLz4ifWZ1bmN0aW9uIHhmKGQsXyxtLFQpe18uRmlsbHM9W107dmFyIFA9e30sUT17fSxzZT0hMSxvZT0hMTsoZFswXS5tYXRjaChCbil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGRlKXt2YXIgTGU9WHIoZGUpO3N3aXRjaChlYShMZVswXSkpe2Nhc2UiPGZpbGxz'@; put 'IjpjYXNlIjxmaWxscz4iOmNhc2UiPC9maWxscz4iOmNhc2UiPC9maWxsPiI6Y2FzZSI8L2dyYWRpZW50RmlsbD4iOmNhc2UiPGJnQ29sb3IvPiI6Y2FzZSI8L2JnQ29sb3I+IjpjYXNlIjxmZ0NvbG9yLz4iOmNhc2UiPC9mZ0NvbG9yPiI6Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6'@; put 'Y2FzZSI8c3RvcC8+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxmaWxsPiI6Y2FzZSI8ZmlsbCI6Y2FzZSI8ZmlsbC8+IjpfLkZpbGxzLnB1c2goUD17fSk7YnJlYWs7Y2FzZSI8Z3JhZGllbnRGaWxsPiI6UC5zdG9wcz1bXTticmVh'@; put 'aztjYXNlIjxncmFkaWVudEZpbGwiOlAuc3RvcHM9W10sTGUuZGVncmVlJiYoUC5hbmdsZT0rTGUuZGVncmVlKTticmVhaztjYXNlIjxwYXR0ZXJuRmlsbCI6Y2FzZSI8cGF0dGVybkZpbGw+IjpMZS5wYXR0ZXJuVHlwZSYmKFAucGF0dGVyblR5cGU9TGUucGF0dGVyblR5cGUpO2JyZWFrO2Nh'@; put 'c2UiPHBhdHRlcm5GaWxsLz4iOmNhc2UiPC9wYXR0ZXJuRmlsbD4iOmlmKHNlKXRocm93IG5ldyBFcnJvcigiYmFkIHN0b3AiKTticmVhaztjYXNlIjxjb2xvciI6Y2FzZSI8YmdDb2xvciI6Y2FzZSI8ZmdDb2xvciI6dmFyIE5lPWVhKExlWzBdKS5zbGljZSgxKTsiY29sb3IiIT1OZSYmIVBb'@; put 'TmVdJiYoUFtOZV09e30pO3ZhciBCZT1zZT9ROlBbTmVdO251bGwhPUxlLmluZGV4ZWQmJihCZS5pbmRleD1wYXJzZUludChMZS5pbmRleGVkLDEwKSxCZS5yZ2I9dnkoQmUuaW5kZXgsXy5JbmRleGVkKSksbnVsbCE9TGUudGhlbWUmJihCZS50aGVtZT1wYXJzZUludChMZS50aGVtZSwxMCkp'@; put 'LG51bGwhPUxlLnRpbnQmJihCZS50aW50PXBhcnNlRmxvYXQoTGUudGludCkpLG51bGwhPUxlLnJnYiYmKEJlLnJnYj1MZS5yZ2Iuc2xpY2UoLTYpKSxudWxsIT1MZS5hdXRvJiZkZWxldGUgUFtOZV0sbnVsbCE9QmUudGhlbWUmJiFCZS5yZ2ImJm0udGhlbWVFbGVtZW50cyYmKEJlLnJnYj1o'@; put 'NShtLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW0JlLnRoZW1lXS5yZ2IsQmUudGludHx8MCksVC5XVEYmJihCZS5yYXdfcmdiPW0udGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbQmUudGhlbWVdLnJnYikpO2JyZWFrO2Nhc2UiPHN0b3A+IjpzZT0hMCxRPXt9O2JyZWFrO2Nhc2UiPHN0b3AiOnNl'@; put 'PSEwLFE9e30sbnVsbCE9TGUucG9zaXRpb24mJihRLnY9cGFyc2VGbG9hdChMZS5wb3NpdGlvbikpO2JyZWFrO2Nhc2UiPC9zdG9wPiI6c2U9ITEsUC5zdG9wcy5wdXNoKFEpO2JyZWFrO2Nhc2UiPGV4dCI6b2U9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOm9lPSExO2JyZWFrO2RlZmF1bHQ6aWYo'@; put 'VCYmVC5XVEYmJiFvZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK0xlWzBdKyIgaW4gZmlsbHMiKX19KX1mdW5jdGlvbiBaQShkLF8sbSxUKXtfLkZvbnRzPVtdO3ZhciBQPXt9LFE9ITE7KGRbMF0ubWF0Y2goQm4pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihzZSl7dmFyIG9lPVhy'@; put 'KHNlKTtzd2l0Y2goZWEob2VbMF0pKXtjYXNlIjxmb250cyI6Y2FzZSI8Zm9udHM+IjpjYXNlIjwvZm9udHM+IjpicmVhaztjYXNlIjxmb250IjpjYXNlIjxmb250PiI6aWYoIi8+IiE9c2Uuc2xpY2UoLTIpKWJyZWFrO2Nhc2UiPC9mb250PiI6Y2FzZSI8Zm9udC8+IjpfLkZvbnRzLnB1c2go'@; put 'UCksUD17fTticmVhaztjYXNlIjxuYW1lIjpvZS52YWwmJihQLm5hbWU9V24ob2UudmFsKSk7YnJlYWs7Y2FzZSI8bmFtZS8+IjpjYXNlIjwvbmFtZT4iOmJyZWFrO2Nhc2UiPGIiOlAuYm9sZD1vZS52YWw/VGkob2UudmFsKToxO2JyZWFrO2Nhc2UiPGIvPiI6Y2FzZSI8Yj4iOlAuYm9sZD0x'@; put 'O2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6UC5pdGFsaWM9b2UudmFsP1RpKG9lLnZhbCk6MTticmVhaztjYXNlIjxpLz4iOmNhc2UiPGk+IjpQLml0YWxpYz0xO2JyZWFrO2Nhc2UiPC9pPiI6YnJlYWs7Y2FzZSI8dSI6c3dpdGNoKG9lLnZhbCl7Y2FzZSJub25lIjpQLnVuZGVy'@; put 'bGluZT0wO2JyZWFrO2Nhc2Uic2luZ2xlIjpQLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiZG91YmxlIjpQLnVuZGVybGluZT0yO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6UC51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjpQLnVuZGVybGluZT0zNH1icmVh'@; put 'aztjYXNlIjx1Lz4iOmNhc2UiPHU+IjpQLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiPC91PiI6YnJlYWs7Y2FzZSI8c3RyaWtlIjpQLnN0cmlrZT1vZS52YWw/VGkob2UudmFsKToxO2JyZWFrO2Nhc2UiPHN0cmlrZS8+IjpQLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPG91dGxpbmUiOlAub3V0bGlu'@; put 'ZT1vZS52YWw/VGkob2UudmFsKToxO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6UC5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8c2hhZG93IjpQLnNoYWRvdz1vZS52YWw/VGkob2UudmFsKToxO2JyZWFrO2Nhc2UiPHNoYWRvdy8+IjpQLnNoYWRvdz0xO2JyZWFrO2Nhc2UiPGNvbmRlbnNlIjpQLmNv'@; put 'bmRlbnNlPW9lLnZhbD9UaShvZS52YWwpOjE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UvPiI6UC5jb25kZW5zZT0xO2JyZWFrO2Nhc2UiPGV4dGVuZCI6UC5leHRlbmQ9b2UudmFsP1RpKG9lLnZhbCk6MTticmVhaztjYXNlIjxleHRlbmQvPiI6UC5leHRlbmQ9MTticmVhaztjYXNlIjxzeiI6b2Uu'@; put 'dmFsJiYoUC5zej0rb2UudmFsKTticmVhaztjYXNlIjxzei8+IjpjYXNlIjwvc3o+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOiJub25lIiE9KG9lLnZhbHx8Im5vbmUiKSYmKFAudmFsaWduPW9lLnZhbC5yZXBsYWNlKCJzY3JpcHQiLCIiKSk7YnJlYWs7Y2FzZSI8dmVydEFsaWduLz4iOmNh'@; put 'c2UiPC92ZXJ0QWxpZ24+IjpicmVhaztjYXNlIjxmYW1pbHkiOm9lLnZhbCYmKFAuZmFtaWx5PXBhcnNlSW50KG9lLnZhbCwxMCkpO2JyZWFrO2Nhc2UiPGZhbWlseS8+IjpjYXNlIjwvZmFtaWx5PiI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpvZS52YWwmJihQLnNjaGVtZT1vZS52YWwpO2JyZWFr'@; put 'O2Nhc2UiPHNjaGVtZS8+IjpjYXNlIjwvc2NoZW1lPiI6YnJlYWs7Y2FzZSI8Y2hhcnNldCI6aWYoIjEiPT1vZS52YWwpYnJlYWs7b2UuY29kZXBhZ2U9UltwYXJzZUludChvZS52YWwsMTApXTticmVhaztjYXNlIjxjb2xvciI6UC5jb2xvcnx8KFAuY29sb3I9e30pLG9lLmF1dG8mJihQLmNv'@; put 'bG9yLmF1dG89VGkob2UuYXV0bykpLG9lLnJnYj9QLmNvbG9yLnJnYj1vZS5yZ2Iuc2xpY2UoLTYpOm9lLmluZGV4ZWQ/KFAuY29sb3IuaW5kZXg9cGFyc2VJbnQob2UuaW5kZXhlZCwxMCksUC5jb2xvci5yZ2I9dnkoUC5jb2xvci5pbmRleCxfLkluZGV4ZWQpKTpvZS50aGVtZSYmKFAuY29s'@; put 'b3IudGhlbWU9cGFyc2VJbnQob2UudGhlbWUsMTApLG9lLnRpbnQmJihQLmNvbG9yLnRpbnQ9cGFyc2VGbG9hdChvZS50aW50KSksb2UudGhlbWUmJm0udGhlbWVFbGVtZW50cyYmbS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKFAuY29sb3IucmdiPWg1KG0udGhlbWVFbGVtZW50cy5jbHJT'@; put 'Y2hlbWVbUC5jb2xvci50aGVtZV0ucmdiLFAuY29sb3IudGludHx8MCkpKTticmVhaztjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxBbHRlcm5hdGVDb250ZW50IjpRPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6UT0hMTticmVhaztjYXNlIjxl'@; put 'eHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOlE9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlE9ITE7YnJlYWs7ZGVmYXVsdDppZihUJiZULldURiYmIVEpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitvZVswXSsiIGluIGZvbnRzIil9'@; put 'fSl9dmFyIG01PXswOiJub25lIiwxOiJzaW5nbGUiLDI6ImRvdWJsZSIsMzM6InNpbmdsZUFjY291bnRpbmciLDM0OiJkb3VibGVBY2NvdW50aW5nIn0sdjU9WyJudW1GbXRJZCIsImZpbGxJZCIsImZvbnRJZCIsImJvcmRlcklkIiwieGZJZCJdLF81PVsiYXBwbHlBbGlnbm1lbnQiLCJhcHBs'@; put 'eUJvcmRlciIsImFwcGx5RmlsbCIsImFwcGx5Rm9udCIsImFwcGx5TnVtYmVyRm9ybWF0IiwiYXBwbHlQcm90ZWN0aW9uIiwicGl2b3RCdXR0b24iLCJxdW90ZVByZWZpeCJdLENIPWZ1bmN0aW9uKCl7dmFyIGQ9LzwoPzpcdys6KT9mb250KFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2Zv'@; put 'bnQ+LyxfPS88KD86XHcrOik/bnVtRm10KFtePl0qKVwvPi8sbT0vPCg/Olx3KzopP2ZpbGwoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/ZmlsbD4vLFA9LzwoPzpcdys6KT9ib3JkZXIoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Ym9yZGVyPi87cmV0dXJuIGZ1bmN0aW9uKG9lLGRl'@; put 'LExlLE5lKXt2YXIgbnQsbXQsQmU9e30sWmU9e307cmV0dXJuKG50PW9lLm1hdGNoKGQpKSYmKFpBKG50LEJlLExlLE5lKSwoQmUuRm9udHN8fFtdKVswXSYmSG4oWmUsQmUuRm9udHNbMF0pKSwobnQ9b2UubWF0Y2goXykpJiYobXQ9WHIoV24obnRbMF0pKSxaZS56PW10LmZvcm1hdENvZGU/'@; put 'Q2kobXQuZm9ybWF0Q29kZSk6KGRlLk51bWJlckZtdHx8W10pWyttdC5udW1GbXRJZF18fCJHZW5lcmFsIiksKG50PW9lLm1hdGNoKG0pKSYmKHhmKG50LEJlLExlLE5lKSwoQmUuRmlsbHN8fFtdKVswXSYmSG4oWmUsQmUuRmlsbHNbMF0pKSwobnQ9b2UubWF0Y2goUCkpJiYoX0gobnQsQmUs'@; put 'TGUsTmUpLChCZS5Cb3JkZXJzfHxbXSlbMF0mJkhuKFplLEJlLkJvcmRlcnNbMF0pKSxaZX19KCksWFg9LzwoPzpcdys6KT9keGY+W1xTXHNdKj88XC8oPzpcdys6KT9keGY+L2csQzg9LzwoPzpcdys6KT90YWJsZVN0eWxlXGIuKj8+W1xTXHNdKj88XC8oPzpcdys6KT90YWJsZVN0eWxlPi9n'@; put 'O3ZhciBuUT1mdW5jdGlvbigpe3ZhciBfPS88KD86XHcrOik/bnVtRm10cyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9udW1GbXRzPi8sbT0vPCg/Olx3KzopP2NlbGxTdHlsZVhmcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9jZWxsU3R5bGVYZnM+LyxUPS88KD86XHcrOik/Y2Vs'@; put 'bFN0eWxlcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9jZWxsU3R5bGVzPi8sUD0vPCg/Olx3KzopP2NlbGxYZnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Y2VsbFhmcz4vLFE9LzwoPzpcdys6KT9maWxscyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9maWxscz4vLHNlPS88'@; put 'KD86XHcrOik/Zm9udHMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Zm9udHM+LyxvZT0vPCg/Olx3KzopP2JvcmRlcnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Ym9yZGVycz4vLGRlPS88KD86XHcrOik/aW5kZXhlZENvbG9ycyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9p'@; put 'bmRleGVkQ29sb3JzPi8sTGU9LzwoPzpcdys6KT90YWJsZVN0eWxlcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT90YWJsZVN0eWxlcz4vLE5lPS88KD86XHcrOik/ZHhmcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9keGZzPi87cmV0dXJuIGZ1bmN0aW9uKFplLG50LG10KXt2YXIg'@; put 'ZnQsUWU9e307cmV0dXJuIFplPygoZnQ9KFplPVplLnJlcGxhY2UoLzwhLS0oW1xzXFNdKj8pLS0+L2dtLCIiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxbXSpcW1teXF1dKlxdPi9nbSwiIikpLm1hdGNoKGRlKSkmJmZ1bmN0aW9uIHdIKGQsXyxtKXtfLkluZGV4ZWR8fChfLkluZGV4ZWQ9W10p'@; put 'O3ZhciBUPSExOyhkWzBdLm1hdGNoKEJuKXx8W10pLmZvckVhY2goZnVuY3Rpb24oUCl7dmFyIFE9WHIoUCk7c3dpdGNoKGVhKFFbMF0pKXtjYXNlIjxpbmRleGVkQ29sb3JzPiI6Y2FzZSI8aW5kZXhlZENvbG9ycyI6Y2FzZSI8aW5kZXhlZENvbG9ycy8+IjpjYXNlIjwvaW5kZXhlZENvbG9y'@; put 'cz4iOmNhc2UiPC9yZ2JDb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPHJnYkNvbG9yIjpkZWxldGUgUVswXTt2YXIgc2U9cGFyc2VJbnQoUS5yZ2Iuc2xpY2UoLTYpLDE2KTtfLkluZGV4ZWQucHVzaChbc2U+PjE2JjI1NSxz'@; put 'ZT4+OCYyNTUsMjU1JnNlXSk7YnJlYWs7Y2FzZSI8ZXh0IjpUPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpUPSExO2JyZWFrO2RlZmF1bHQ6aWYobSYmbS5XVEYmJiFUKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrUVswXSsiIGluIGNlbGxTdHlsZXMiKX19KX0oZnQsUWUsbXQpLChm'@; put 'dD1aZS5tYXRjaChfKSkmJmZ1bmN0aW9uIEdYKGQsXyxtKXtfLk51bWJlckZtdD1bXTtmb3IodmFyIFQ9RmUoSS5fdGFibGUpLFA9MDtQPFQubGVuZ3RoOysrUClfLk51bWJlckZtdFtUW1BdXT1JLl90YWJsZVtUW1BdXTt2YXIgUT1kWzBdLm1hdGNoKEJuKTtpZihRKWZvcihQPTA7UDxRLmxl'@; put 'bmd0aDsrK1Ape3ZhciBzZT1YcihRW1BdKTtzd2l0Y2goZWEoc2VbMF0pKXtjYXNlIjxudW1GbXRzIjpjYXNlIjwvbnVtRm10cz4iOmNhc2UiPG51bUZtdHMvPiI6Y2FzZSI8bnVtRm10cz4iOmNhc2UiPC9udW1GbXQ+IjpicmVhaztjYXNlIjxudW1GbXQiOnZhciBvZT1DaShXbihzZS5mb3Jt'@; put 'YXRDb2RlKSksZGU9cGFyc2VJbnQoc2UubnVtRm10SWQsMTApO2lmKF8uTnVtYmVyRm10W2RlXT1vZSxkZT4wKXtpZihkZT4zOTIpe2ZvcihkZT0zOTI7ZGU+NjAmJm51bGwhPV8uTnVtYmVyRm10W2RlXTstLWRlKTtfLk51bWJlckZtdFtkZV09b2V9SS5sb2FkKG9lLGRlKX1icmVhaztkZWZh'@; put 'dWx0OmlmKG0uV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrc2VbMF0rIiBpbiBudW1GbXRzIil9fX0oZnQsUWUsbXQpLChmdD1aZS5tYXRjaChzZSkpJiZaQShmdCxRZSxudCxtdCksKGZ0PVplLm1hdGNoKFEpKSYmeGYoZnQsUWUsbnQsbXQpLChmdD1aZS5tYXRjaChvZSkp'@; put 'JiZfSChmdCxRZSxudCxtdCksKGZ0PVplLm1hdGNoKG0pKSYmZnVuY3Rpb24gdlMoZCxfLG0pe18uQ2VsbFN0eWxlWGY9W107dmFyIFQsUD0hMTsoZFswXS5tYXRjaChCbil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFEpe3ZhciBzZT1YcihRKSxvZT0wO3N3aXRjaChlYShzZVswXSkpe2Nhc2Ui'@; put 'PGNlbGxTdHlsZVhmcyI6Y2FzZSI8Y2VsbFN0eWxlWGZzPiI6Y2FzZSI8Y2VsbFN0eWxlWGZzLz4iOmNhc2UiPC9jZWxsU3R5bGVYZnM+IjpjYXNlIjwveGY+IjpjYXNlIjwvYWxpZ25tZW50PiI6Y2FzZSI8L3Byb3RlY3Rpb24+IjpjYXNlIjxwcm90ZWN0aW9uLz4iOmNhc2UiPGV4dExzdCI6'@; put 'Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPHhmIjpjYXNlIjx4Zi8+Ijpmb3IoZGVsZXRlKFQ9c2UpWzBdLG9lPTA7b2U8djUubGVuZ3RoOysrb2UpVFt2NVtvZV1dJiYoVFt2NVtvZV1dPXBhcnNlSW50KFRbdjVbb2VdXSwxMCkpO2ZvcihvZT0wO29lPF81Lmxl'@; put 'bmd0aDsrK29lKVRbXzVbb2VdXSYmKFRbXzVbb2VdXT1UaShUW181W29lXV0pKTtpZihfLk51bWJlckZtdCYmVC5udW1GbXRJZD4zOTIpZm9yKG9lPTM5MjtvZT42MDstLW9lKWlmKF8uTnVtYmVyRm10W1QubnVtRm10SWRdPT1fLk51bWJlckZtdFtvZV0pe1QubnVtRm10SWQ9b2U7YnJlYWt9'@; put 'Xy5DZWxsU3R5bGVYZi5wdXNoKFQpO2JyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOnZhciBkZT17fTtzZS52ZXJ0aWNhbCYmKGRlLnZlcnRpY2FsPXNlLnZlcnRpY2FsKSxzZS5ob3Jpem9udGFsJiYoZGUuaG9yaXpvbnRhbD1zZS5ob3Jpem9udGFsKSxudWxsIT1z'@; put 'ZS50ZXh0Um90YXRpb24mJihkZS50ZXh0Um90YXRpb249c2UudGV4dFJvdGF0aW9uKSxzZS5pbmRlbnQmJihkZS5pbmRlbnQ9c2UuaW5kZW50KSxzZS53cmFwVGV4dCYmKGRlLndyYXBUZXh0PXNlLndyYXBUZXh0KSxzZS5zaHJpbmtUb0ZpdCYmKGRlLnNocmlua1RvRml0PVRpKHNlLnNocmlu'@; put 'a1RvRml0KSksVC5hbGlnbm1lbnQ9ZGU7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6VC5wcm90ZWN0aW9uPXt9LFRpKHNlLmhpZGRlbikmJihULnByb3RlY3Rpb24uaGlkZGVuPSEwKSxudWxsIT1zZS5sb2NrZWQmJihULnByb3RlY3Rpb24uZWRpdGFibGU9IVRpKHNlLmxvY2tlZCkpO2JyZWFr'@; put 'O2Nhc2UiPGV4dCI6UD0hMDticmVhaztjYXNlIjwvZXh0PiI6UD0hMTticmVhaztkZWZhdWx0OmlmKG0mJm0uV1RGJiYhUCl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3NlWzBdKyIgaW4gY2VsbFN0eWxlWGZzIil9fSl9KGZ0LFFlLG10KSwoZnQ9WmUubWF0Y2goVCkpJiZmdW5j'@; put 'dGlvbiBiSChkLF8sbSl7Xy5DZWxsU3R5bGVYZnx8KF8uQ2VsbFN0eWxlWGY9W10pO3ZhciBUPSExOyhkWzBdLm1hdGNoKEJuKXx8W10pLmZvckVhY2goZnVuY3Rpb24oUCl7dmFyIFE9WHIoUCk7c3dpdGNoKGVhKFFbMF0pKXtjYXNlIjxjZWxsU3R5bGVzIjpjYXNlIjxjZWxsU3R5bGVzPiI6'@; put 'Y2FzZSI8Y2VsbFN0eWxlcy8+IjpjYXNlIjwvY2VsbFN0eWxlcz4iOmNhc2UiPC94Zj4iOmNhc2UiPC9jZWxsU3R5bGU+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxjZWxsU3R5bGUiOmNhc2UiPGNlbGxTdHlsZS8+IjpkZWxldGUg'@; put 'UVswXTt2YXIgc2U9K1EueGZJZDtpZihfLkNlbGxTdHlsZVhmW3NlXSlfLkNlbGxTdHlsZVhmW3NlXS5zdHlsZT1XbihRLm5hbWUpO2Vsc2UgaWYoIVEuYnVpbHRpbklkKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgQ2VsbFN0eWxlICIrc2UpO2JyZWFrO2Nhc2UiPGV4dCI6VD0h'@; put 'MDticmVhaztjYXNlIjwvZXh0PiI6VD0hMTticmVhaztkZWZhdWx0OmlmKG0mJm0uV1RGJiYhVCl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1FbMF0rIiBpbiBjZWxsU3R5bGVzIil9fSl9KGZ0LFFlLG10KSwoZnQ9WmUubWF0Y2goUCkpJiZmdW5jdGlvbiBxWChkLF8sbSl7Xy5D'@; put 'ZWxsWGY9W107dmFyIFQsUD0hMTsoZFswXS5tYXRjaChCbil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFEpe3ZhciBzZT1YcihRKSxvZT0wO3N3aXRjaChlYShzZVswXSkpe2Nhc2UiPGNlbGxYZnMiOmNhc2UiPGNlbGxYZnM+IjpjYXNlIjxjZWxsWGZzLz4iOmNhc2UiPC9jZWxsWGZzPiI6Y2Fz'@; put 'ZSI8L3hmPiI6Y2FzZSI8L2FsaWdubWVudD4iOmNhc2UiPC9wcm90ZWN0aW9uPiI6Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Zm9yKGRlbGV0ZShUPXNlKVswXSxvZT0w'@; put 'O29lPHY1Lmxlbmd0aDsrK29lKVRbdjVbb2VdXSYmKFRbdjVbb2VdXT1wYXJzZUludChUW3Y1W29lXV0sMTApKTtmb3Iob2U9MDtvZTxfNS5sZW5ndGg7KytvZSlUW181W29lXV0mJihUW181W29lXV09VGkoVFtfNVtvZV1dKSk7aWYoXy5OdW1iZXJGbXQmJlQubnVtRm10SWQ+MzkyKWZvcihv'@; put 'ZT0zOTI7b2U+NjA7LS1vZSlpZihfLk51bWJlckZtdFtULm51bUZtdElkXT09Xy5OdW1iZXJGbXRbb2VdKXtULm51bUZtdElkPW9lO2JyZWFrfV8uQ2VsbFN0eWxlWGYmJlQueGZJZCYmXy5DZWxsU3R5bGVYZltULnhmSWRdJiZfLkNlbGxTdHlsZVhmW1QueGZJZF0uc3R5bGUmJihULnN0eWxl'@; put 'PV8uQ2VsbFN0eWxlWGZbVC54ZklkXS5zdHlsZSksXy5DZWxsWGYucHVzaChUKTticmVhaztjYXNlIjxhbGlnbm1lbnQiOmNhc2UiPGFsaWdubWVudC8+Ijp2YXIgZGU9e307c2UudmVydGljYWwmJihkZS52ZXJ0aWNhbD1zZS52ZXJ0aWNhbCksc2UuaG9yaXpvbnRhbCYmKGRlLmhvcml6b250'@; put 'YWw9c2UuaG9yaXpvbnRhbCksbnVsbCE9c2UudGV4dFJvdGF0aW9uJiYoZGUudGV4dFJvdGF0aW9uPXNlLnRleHRSb3RhdGlvbiksc2UuaW5kZW50JiYoZGUuaW5kZW50PXNlLmluZGVudCksc2Uud3JhcFRleHQmJihkZS53cmFwVGV4dD1UaShzZS53cmFwVGV4dCkpLHNlLnNocmlua1RvRml0'@; put 'JiYoZGUuc2hyaW5rVG9GaXQ9VGkoc2Uuc2hyaW5rVG9GaXQpKSxULmFsaWdubWVudD1kZTticmVhaztjYXNlIjxwcm90ZWN0aW9uIjpULnByb3RlY3Rpb249e30sVGkoc2UuaGlkZGVuKSYmKFQucHJvdGVjdGlvbi5oaWRkZW49ITApLG51bGwhPXNlLmxvY2tlZCYmKFQucHJvdGVjdGlvbi5l'@; put 'ZGl0YWJsZT0hVGkoc2UubG9ja2VkKSk7YnJlYWs7Y2FzZSI8QWx0ZXJuYXRlQ29udGVudCI6Y2FzZSI8ZXh0IjpQPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6Y2FzZSI8L2V4dD4iOlA9ITE7YnJlYWs7ZGVmYXVsdDppZihtJiZtLldURiYmIVApdGhyb3cgbmV3IEVycm9y'@; put 'KCJ1bnJlY29nbml6ZWQgIitzZVswXSsiIGluIGNlbGxYZnMiKX19KX0oZnQsUWUsbXQpLChmdD1aZS5tYXRjaChOZSkpJiZmdW5jdGlvbiBTSChkLF8sbSxUKXtfLkRYRnx8KF8uRFhGPVtdKSwoZFswXS5tYXRjaChYWCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFApe18uRFhGLnB1c2goQ0go'@; put 'UCxfLG0sVCkpfSl9KGZ0LFFlLG50LG10KSwoZnQ9WmUubWF0Y2goTGUpKSYmZnVuY3Rpb24gSlgoZCxfLG0sVCl7Xy5UYWJsZXx8KF8uVGFibGU9W10pLChkWzBdLm1hdGNoKEM4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oUCl7Xy5UYWJsZS5wdXNoKGZ1bmN0aW9uIEVIKGQsXyxtLFQpe3Zh'@; put 'ciBQPSExLFE9e307cmV0dXJuKGQubWF0Y2goQm4pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihzZSl7dmFyIG9lPVhyKHNlKTtzd2l0Y2goZWEob2VbMF0pKXtjYXNlIjx0YWJsZVN0eWxlPiI6Y2FzZSI8dGFibGVTdHlsZSI6US5uYW1lPW9lLm5hbWUucmVwbGFjZSgvXihUYWJsZXxQaXZvdClT'@; put 'dHlsZS8sIiIpLFEucmF3bmFtZT1vZS5uYW1lLFEucGl2b3Q9IW9lLnBpdm90fHxUaShvZS5waXZvdCksUS50YWJsZT0hb2UudGFibGV8fFRpKG9lLnRhYmxlKTticmVhaztjYXNlIjx0YWJsZVN0eWxlLz4iOmNhc2UiPC90YWJsZVN0eWxlPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+'@; put 'IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8dGFibGVTdHlsZUVsZW1lbnQiOmlmKG9lLnR5cGUmJm9lLmR4ZklkKXtpZighXy5EWEZ8fCFfLkRYRlsrb2UuZHhmSWRdKXRocm93IG5ldyBFcnJvcihzZSsiIGNhbm5vdCBmaW5kIERYRiIpO1Fbb2UudHlwZV09Xy5EWEZbK29lLmR4Zklk'@; put 'XX1icmVhaztjYXNlIjxleHQiOlA9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlA9ITE7YnJlYWs7ZGVmYXVsdDppZihUJiZULldURiYmIVApdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitvZVswXSsiIGluIHRhYmxlU3R5bGUiKX19KSxRfShQLF8sMCxUKSl9KX0oZnQsUWUsMCxtdCks'@; put 'KFFlLkZvbnRzfHxbXSlbMF0mJiRtKFFlLkZvbnRzWzBdKSxRZSk6UWV9fSgpLE1IPVZyKCJzdHlsZVNoZWV0IixudWxsLHt4bWxuczpVYS5tYWluWzBdLCJ4bWxuczp2dCI6VWEudnR9KTtmdW5jdGlvbiBfUyhkLF8pe3ZhciBULG09W3BvLE1IXTtkLlNTRiYmbnVsbCE9KFQ9ZnVuY3Rpb24g'@; put 'JFgoZCl7dmFyIF89WyI8bnVtRm10cz4iXTtyZXR1cm5bWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKG0pe2Zvcih2YXIgVD1tWzBdO1Q8PW1bMV07KytUKW51bGwhPWRbVF0mJihfW18ubGVuZ3RoXT1WcigibnVtRm10IixudWxsLHtudW1GbXRJZDpU'@; put 'LGZvcm1hdENvZGU6QmkoZFtUXSl9KSl9KSwxPT09Xy5sZW5ndGg/IiI6KF9bXy5sZW5ndGhdPSI8L251bUZtdHM+IixfWzBdPVZyKCJudW1GbXRzIixudWxsLHtjb3VudDpfLmxlbmd0aC0yfSkucmVwbGFjZSgiLz4iLCI+IiksXy5qb2luKCIiKSl9KGQuU1NGKSkmJihtW20ubGVuZ3RoXT1U'@; put 'KSxtW20ubGVuZ3RoXT1mdW5jdGlvbiBaWChkKXt2YXIgXz1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKG0pe3ZhciBUPVsiPGZvbnQ+Il07bS5ib2xkJiZULnB1c2goIjxiLz4iKSxtLml0YWxpYyYmVC5wdXNoKCI8aS8+IiksbS5zdHJpa2UmJlQucHVzaCgiPHN0cmlrZS8+IiksbS5z'@; put 'aGFkb3cmJlQucHVzaCgiPHNoYWRvdy8+IiksbTVbK20udW5kZXJsaW5lXSYmVC5wdXNoKCc8dSB2YWw9IicrbTVbK20udW5kZXJsaW5lXSsnIi8+JyksbS5zeiYmVC5wdXNoKCc8c3ogdmFsPSInK20uc3orJyIvPicpLG0uY29sb3ImJlQucHVzaChQZyhtLmNvbG9yLCEwKSksbS5uYW1lJiZU'@; put 'LnB1c2goJzxuYW1lIHZhbD0iJyttLm5hbWUrJyIvPicpLG0uZmFtaWx5JiZULnB1c2goJzxmYW1pbHkgdmFsPSInK20uZmFtaWx5KyciLz4nKSxtLnNjaGVtZSYmVC5wdXNoKCc8c2NoZW1lIHZhbD0iJyttLnNjaGVtZSsnIi8+JyksbS52YWxpZ24mJlQucHVzaCgnPHZlcnRBbGlnbiB2YWw9'@; put 'IicrbS52YWxpZ24rKCJzdWIiPT1tLnZhbGlnbnx8InN1cGVyIj09bS52YWxpZ24/InNjcmlwdCI6IiIpKyciLz4nKSxfLnB1c2goVC5qb2luKCIiKSsiPC9mb250PiIpfSksJzxmb250cyBjb3VudD0iJytfLmxlbmd0aCsnIj4nK18uam9pbigiIikrIjwvZm9udHM+In0oKGQuU3R5bGVzfHx7'@; put 'fSkuRm9udHN8fFtdKSxtW20ubGVuZ3RoXT1mdW5jdGlvbiB5SChkKXt2YXIgXz1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKG0pe3ZhciBUPW51bGw7aWYobS5zdG9wcyYmbS5zdG9wcy5sZW5ndGgpe3ZhciBQPXt9O20uYW5nbGUmJihQLmRlZ3JlZT1NYXRoLnJvdW5kKG0uYW5nbGUp'@; put 'KSxUPW0uc3RvcHMubWFwKGZ1bmN0aW9uKFEpe3JldHVybiBWcigic3RvcCIsUGcoUSwiY29sb3IiLCEwKSxudWxsIT1RLnY/e3Bvc2l0aW9uOlEudn06e30pfSksXy5wdXNoKCI8ZmlsbD4iK1ZyKCJncmFkaWVudEZpbGwiLFQuam9pbigiIiksUCkrIjwvZmlsbD4iKX1lbHNle2lmKG0uZmdD'@; put 'b2xvcil7aWYoVD0oVHx8IiIpKyI8ZmdDb2xvciAiLG0uZmdDb2xvci50aGVtZSlUKz0ndGhlbWU9IicrbS5mZ0NvbG9yLnRoZW1lKyciJysobS5mZ0NvbG9yLnRpbnQ/JyB0aW50PSInK20uZmdDb2xvci50aW50KyciJzoiIikrIi8+IjtlbHNlIGlmKG51bGwhPW0uZmdDb2xvci5pbmRleCYm'@; put 'bnVsbD09bS5mZ0NvbG9yLnJnYilUKz0naW5kZXhlZD0iJyttLmZnQ29sb3IuaW5kZXgrJyIvPic7ZWxzZSBpZihtLmZnQ29sb3IuYXV0bylUKz0nYXV0bz0iMSIvPic7ZWxzZXtpZihudWxsPT1tLmZnQ29sb3IucmdiKXRocm93IG5ldyBFcnJvcigiQmFkIGNvbG9yICIrRmUobS5mZ0NvbG9y'@; put 'KS5qb2luKCJ8IikpO1QrPSdyZ2I9IkZGJytUMihtLmZnQ29sb3IucmdiKSsnIi8+J30ic29saWQiPT1tLnBhdHRlcm5UeXBlJiYhbS5iZ0NvbG9yJiYobS5iZ0NvbG9yPXtpbmRleDo2NH0pfWlmKG0uYmdDb2xvcilpZihUPShUfHwiIikrIjxiZ0NvbG9yICIsbS5iZ0NvbG9yLnRoZW1lKVQr'@; put 'PSd0aGVtZT0iJyttLmJnQ29sb3IudGhlbWUrJyIvPic7ZWxzZSBpZihudWxsIT1tLmJnQ29sb3IuaW5kZXgmJm51bGw9PW0uYmdDb2xvci5yZ2IpVCs9J2luZGV4ZWQ9IicrbS5iZ0NvbG9yLmluZGV4KyciLz4nO2Vsc2UgaWYobS5iZ0NvbG9yLmF1dG8pVCs9J2F1dG89IjEiLz4nO2Vsc2V7'@; put 'aWYobnVsbD09bS5iZ0NvbG9yLnJnYil0aHJvdyBuZXcgRXJyb3IoIkJhZCBjb2xvciAiK0ZlKG0uYmdDb2xvcikuam9pbigifCIpKTtUKz0ncmdiPSJGRicrVDIobS5iZ0NvbG9yLnJnYikrJyIvPid9Xy5wdXNoKCI8ZmlsbD4iK1ZyKCJwYXR0ZXJuRmlsbCIsVCx7cGF0dGVyblR5cGU6bS5w'@; put 'YXR0ZXJuVHlwZX0pKyI8L2ZpbGw+Iil9fSksJzxmaWxscyBjb3VudD0iJytfLmxlbmd0aCsnIj4nK18uam9pbigiIikrIjwvZmlsbHM+In0oKGQuU3R5bGVzfHx7fSkuRmlsbHN8fFtdKSxtW20ubGVuZ3RoXT1mdW5jdGlvbiBZWChkKXt2YXIgXz1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0'@; put 'aW9uKG0pe3ZhciBUPVtdO1QucHVzaChxbShtLmxlZnQsImxlZnQiKSksVC5wdXNoKHFtKG0ucmlnaHQsInJpZ2h0IikpLFQucHVzaChxbShtLnRvcCwidG9wIikpLFQucHVzaChxbShtLmJvdHRvbSwiYm90dG9tIikpLFQucHVzaChxbShtLmRpYWdvbmFsLCJkaWFnb25hbCIpKSxfLnB1c2go'@; put 'Ijxib3JkZXI+IitULmpvaW4oIiIpKyI8L2JvcmRlcj4iKX0pLCc8Ym9yZGVycyBjb3VudD0iJytfLmxlbmd0aCsnIj4nK18uam9pbigiIikrIjwvYm9yZGVycz4ifSgoZC5TdHlsZXN8fHt9KS5Cb3JkZXJzfHxbXSksbVttLmxlbmd0aF09ZnVuY3Rpb24gS1goZCl7dmFyIF89Wyc8eGYgbnVt'@; put 'Rm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIvPiddO2lmKGQpZm9yKHZhciBtPTE7bTxkLmxlbmd0aDsrK20pXy5wdXNoKFZyKCJ4ZiIsbnVsbCx7bnVtRm10SWQ6ZFttXS5udW1GbXRJZHx8MCxmb250SWQ6ZFttXS5mb250SWR8fDAsZmlsbElkOmRbbV0uZmls'@; put 'bElkfHwwLGJvcmRlcklkOmRbbV0uYm9yZGVySWR8fDB9KSk7cmV0dXJuJzxjZWxsU3R5bGVYZnMgY291bnQ9IicrXy5sZW5ndGgrJyI+JytfLmpvaW4oIiIpKyI8L2NlbGxTdHlsZVhmcz4ifShfLmNlbGxTdHlsZVhmcyksKFQ9ZnVuY3Rpb24gR0EoZCl7dmFyIF89W107cmV0dXJuIF9bXy5s'@; put 'ZW5ndGhdPVZyKCJjZWxsWGZzIixudWxsKSxkLmZvckVhY2goZnVuY3Rpb24obSl7dmFyIFQ9bS5hbGlnbm1lbnQ7ZGVsZXRlIG0uYWxpZ25tZW50O3ZhciBQPW0ucHJvdGVjdGlvbjtkZWxldGUgbS5wcm90ZWN0aW9uO3ZhciBRPVQ/VnIoImFsaWdubWVudCIsbnVsbCxUKToiIjtRKz1QP1Zy'@; put 'KCJwcm90ZWN0aW9uIixudWxsLHtoaWRkZW46UC5oaWRkZW4/MTowLGxvY2tlZDpQLmVkaXRhYmxlPzA6MX0pOiIiLF9bXy5sZW5ndGhdPVZyKCJ4ZiIsUXx8bnVsbCxtKSxUJiYobS5hbGlnbm1lbnQ9VCksUCYmKG0ucHJvdGVjdGlvbj1QKX0pLF9bXy5sZW5ndGhdPSI8L2NlbGxYZnM+Iiwy'@; put 'PT09Xy5sZW5ndGg/IiI6KF9bMF09VnIoImNlbGxYZnMiLG51bGwse2NvdW50Ol8ubGVuZ3RoLTJ9KS5yZXBsYWNlKCIvPiIsIj4iKSxfLmpvaW4oIiIpKX0oXy5jZWxsWGZzKSkmJihtW20ubGVuZ3RoXT1UKSxtW20ubGVuZ3RoXT1mdW5jdGlvbiBpdShkKXt2YXIgXz1bJzxjZWxsU3R5bGUg'@; put 'bmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiLz4nXTtpZihkKWZvcih2YXIgbT0xO208ZC5sZW5ndGg7KyttKV8ucHVzaChWcigiY2VsbFN0eWxlIixudWxsLHtuYW1lOmRbbV0ubmFtZSx4ZklkOm19KSk7cmV0dXJuJzxjZWxsU3R5bGVzIGNvdW50PSInK18ubGVuZ3RoKyci'@; put 'PicrXy5qb2luKCIiKSsiPC9jZWxsU3R5bGVzPiJ9KF8uY2VsbFN0eWxlWGZzKSxkLlN0eWxlcy5EWEZ8fChkLlN0eWxlcy5EWEY9W10pO3ZhciBQPWZ1bmN0aW9uIGVRKGQsXyxtKXt2YXIgVD1bJzx0YWJsZVN0eWxlcyBjb3VudD0iJysoZHx8W10pLmxlbmd0aCsnIiBkZWZhdWx0VGFibGVT'@; put 'dHlsZT0iVGFibGVTdHlsZU1lZGl1bTkiIGRlZmF1bHRQaXZvdFN0eWxlPSJQaXZvdFN0eWxlTWVkaXVtNCInXTtyZXR1cm4gZCYmZC5sZW5ndGg/KFRbMF0rPSI+IixkLmZvckVhY2goZnVuY3Rpb24oUCl7VC5wdXNoKGZ1bmN0aW9uIFFYKGQsXyl7dmFyIFQ9W107WyJ3aG9sZVRhYmxlIiwi'@; put 'aGVhZGVyUm93IiwidG90YWxSb3ciLCJmaXJzdENvbHVtbiIsImxhc3RDb2x1bW4iLCJmaXJzdFJvd1N0cmlwZSIsInNlY29uZFJvd1N0cmlwZSIsImZpcnN0Q29sdW1uU3RyaXBlIiwic2Vjb25kQ29sdW1uU3RyaXBlIiwiZmlyc3RIZWFkZXJDZWxsIiwibGFzdEhlYWRlckNlbGwiLCJmaXJz'@; put 'dFRvdGFsQ2VsbCIsImxhc3RUb3RhbENlbGwiLCJmaXJzdFN1YnRvdGFsQ29sdW1uIiwic2Vjb25kU3VidG90YWxDb2x1bW4iLCJ0aGlyZFN1YnRvdGFsQ29sdW1uIiwiZmlyc3RTdWJ0b3RhbFJvdyIsInNlY29uZFN1YnRvdGFsUm93IiwidGhpcmRTdWJ0b3RhbFJvdyIsImJsYW5rUm93Iiwi'@; put 'Zmlyc3RDb2x1bW5TdWJoZWFkaW5nIiwic2Vjb25kQ29sdW1uU3ViaGVhZGluZyIsInRoaXJkQ29sdW1uU3ViaGVhZGluZyIsImZpcnN0Um93U3ViaGVhZGluZyIsInNlY29uZFJvd1N1YmhlYWRpbmciLCJ0aGlyZFJvd1N1YmhlYWRpbmciLCJwYWdlRmllbGRMYWJlbHMiLCJwYWdlRmllbGRW'@; put 'YWx1ZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKFEpe2lmKGRbUV0pe3ZhciBzZT1OayhfLGRbUV0pO1QucHVzaCgnPHRhYmxlU3R5bGVFbGVtZW50IGR4ZklkPSInK3NlKyciIHR5cGU9IicrUSsnIi8+Jyl9fSk7dmFyIFA9Jzx0YWJsZVN0eWxlIGNvdW50PSInK1QubGVuZ3RoKyciIHBpdm90PSIn'@; put 'KyArISFkLnBpdm90KyciIG5hbWU9IicrZC5uYW1lKyciJztyZXR1cm4gVC5sZW5ndGg/UCsiPiIrVC5qb2luKCIiKSsiPC90YWJsZVN0eWxlPiI6UCsiLz4ifShQLF8pKX0pLFQuam9pbigiIikrIjwvdGFibGVTdHlsZXM+Iik6VFswXSsiLz4ifSgoZC5TdHlsZXN8fHt9KS5UYWJsZXx8W10s'@; put 'ZC5TdHlsZXMuRFhGKTtyZXR1cm4gbVttLmxlbmd0aF09ZnVuY3Rpb24gR2MoZCxfKXtpZighZC5sZW5ndGgpcmV0dXJuJzxkeGZzIGNvdW50PSIwIi8+Jzt2YXIgbT1bJzxkeGZzIGNvdW50PSInK2QubGVuZ3RoKyciPiddO3JldHVybiBkLmZvckVhY2goZnVuY3Rpb24oVCl7bS5wdXNoKGZ1'@; put 'bmN0aW9uIHRRKGQsXyl7dmFyIG09e2JvbGQ6ImIiLGl0YWxpYzoiaSIsdmFsaWduOiJ2ZXJ0QWxpZ24ifSxUPVsiPGR4Zj4iXSxQPVtdLFE9W10sc2U9W10sZGU9W107cmV0dXJuIEZlKGQpLmZvckVhY2goZnVuY3Rpb24oTmUpe3N3aXRjaChOZSl7Y2FzZSJib2xkIjpjYXNlIml0YWxpYyI6'@; put 'Y2FzZSJzdHJpa2UiOmNhc2UidW5kZXJsaW5lIjpjYXNlImNvbG9yIjpjYXNlInZhbGlnbiI6Y2FzZSJzeiI6Y2FzZSJuYW1lIjpjYXNlIm91dGxpbmUiOmNhc2Uic2hhZG93IjpjYXNlImNoYXJzZXQiOmNhc2UiZmFtaWx5IjpjYXNlImNvbmRlbnNlIjpjYXNlImV4dGVuZCI6Y2FzZSJzY2hl'@; put 'bWUiOlAucHVzaChOZSk7YnJlYWs7Y2FzZSJiZ0NvbG9yIjpjYXNlImZnQ29sb3IiOnNlLnB1c2goTmUpO2JyZWFrO2Nhc2UieiI6US5wdXNoKE5lKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmNhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJkaWFnb25hbCI6Y2FzZSJ2ZXJ0aWNh'@; put 'bCI6Y2FzZSJob3Jpem9udGFsIjpkZS5wdXNoKE5lKTticmVhaztjYXNlInBhdHRlcm5UeXBlIjpjYXNlImRpYWdvbmFsRG93biI6Y2FzZSJkaWFnb25hbFVwIjpjYXNlInN0b3BzIjpjYXNlImRlZ3JlZSI6YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnJlY29nbml6ZWQgIitOZSsiIGluIERYRiJ9'@; put 'fSksUC5sZW5ndGg+MCYmKFQucHVzaCgiPGZvbnQ+IiksUC5mb3JFYWNoKGZ1bmN0aW9uKE5lKXtzd2l0Y2goTmUpe2Nhc2UiYm9sZCI6Y2FzZSJpdGFsaWMiOmNhc2Uic3RyaWtlIjpjYXNlIm91dGxpbmUiOmNhc2Uic2hhZG93IjpjYXNlImNvbmRlbnNlIjpjYXNlImV4dGVuZCI6VC5wdXNo'@; put 'KCI8IisobVtOZV18fE5lKSsnIHZhbD0iJysoZFtOZV0/IjEiOiIwIikrJyIvPicpO2JyZWFrO2Nhc2UiY29sb3IiOlQucHVzaChQZyhkW05lXSxOZSwhMCkpO2JyZWFrO2Nhc2UiZmFtaWx5IjpjYXNlIm5hbWUiOmNhc2Uic3oiOmNhc2Uic2NoZW1lIjpULnB1c2goIjwiKyhtW05lXXx8TmUp'@; put 'KycgdmFsPSInK2RbTmVdKyciLz4nKTticmVhaztjYXNlInVuZGVybGluZSI6VC5wdXNoKCc8dSB2YWw9IicrbTVbZFtOZV18fDBdKyciLz4nKTticmVhaztjYXNlInZhbGlnbiI6VC5wdXNoKCc8dmVydEFsaWduIHZhbD0iJytkLnZhbGlnbisoInN1YiI9PWQudmFsaWdufHwic3VwZXIiPT1k'@; put 'LnZhbGlnbj8ic2NyaXB0IjoiIikrJyIvPicpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgIitOZSsiIDogZm9udCBEWEYifX0pLFQucHVzaCgiPC9mb250PiIpKSxRLmxlbmd0aD4wJiZULnB1c2goJzxudW1GbXQgZm9ybWF0Q29kZT0iJytCaShkLnopKyciIG51bUZtdElkPSIn'@; put 'K2Z1bmN0aW9uIGs1ZShkLF8pe2lmKCJudW1iZXIiPT10eXBlb2YgZClyZXR1cm4gZDt2YXIgbT1fLnJldnNzZltkPz8iR2VuZXJhbCJdLFQ9NjA7aWYobnVsbD09bSlmb3IoO1Q8MzkyOysrVClpZihudWxsPT1fLnNzZltUXSlyZXR1cm4gSS5sb2FkKGQsVCksXy5zc2ZbVF09ZCxfLnJldnNz'@; put 'ZltkXT1ULFQ7cmV0dXJuIG19KGQueixfKSsnIi8+Jyksc2UubGVuZ3RoPjAmJihULnB1c2goIjxmaWxsPiIpLFQucHVzaCgiPHBhdHRlcm5GaWxsIisoZC5wYXR0ZXJuVHlwZT8nIHBhdHRlcm5UeXBlPSInK2QucGF0dGVyblR5cGUrJyI+JzoiPiIpKSxzZS5mb3JFYWNoKGZ1bmN0aW9uKE5l'@; put 'KXtzd2l0Y2goTmUpe2Nhc2UicGF0dGVyblR5cGUiOmJyZWFrO2Nhc2UiZmdDb2xvciI6Y2FzZSJiZ0NvbG9yIjpULnB1c2goUGcoZFtOZV0sTmUsITApKTticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkICIrTmUrIiA6IGZpbGwgRFhGIn19KSxULnB1c2goIjwvcGF0dGVybkZpbGw+'@; put 'IiksVC5wdXNoKCI8L2ZpbGw+IikpLGRlLmxlbmd0aD4wPyhULnB1c2goWyI8Ym9yZGVyIixudWxsIT1kLmRpYWdvbmFsRG93bj8nIGRpYWdvbmFsRG93bj0iJysgKyEhZC5kaWFnb25hbERvd24rJyInOiIiLG51bGwhPWQuZGlhZ29uYWxVcD8nIGRpYWdvbmFsVXA9IicrICshIWQuZGlhZ29u'@; put 'YWxVcCsnIic6IiIsIj4iXS5qb2luKCIiKSksZGUuZm9yRWFjaChmdW5jdGlvbihOZSl7VC5wdXNoKHFtKGRbTmVdLE5lKSl9KSxULnB1c2goIjwvYm9yZGVyPiIpKToobnVsbCE9ZC5kaWFnb25hbERvd258fG51bGwhPWQuZGlhZ29uYWxVcCkmJlQucHVzaChbIjxib3JkZXIiLG51bGwhPWQu'@; put 'ZGlhZ29uYWxEb3duPycgZGlhZ29uYWxEb3duPSInKyArISFkLmRpYWdvbmFsRG93bisnIic6IiIsbnVsbCE9ZC5kaWFnb25hbFVwPycgZGlhZ29uYWxVcD0iJysgKyEhZC5kaWFnb25hbFVwKyciJzoiIiwiLz4iXS5qb2luKCIiKSksMT09VC5sZW5ndGg/IjxkeGYvPiI6VC5qb2luKCIiKSsi'@; put 'PC9keGY+In0oVCxfKSl9KSxtLmpvaW4oIiIpKyI8L2R4ZnM+In0oZC5TdHlsZXMuRFhGLF8pLG1bbS5sZW5ndGhdPVAsbS5sZW5ndGg+MiYmKG1bbS5sZW5ndGhdPSI8L3N0eWxlU2hlZXQ+IixtWzFdPW1bMV0ucmVwbGFjZSgiLz4iLCI+IikpLG0uam9pbigiIil9ZnVuY3Rpb24gJEEoZCxf'@; put 'LG0pe218fChtPUZyKDYrNCpfLmxlbmd0aCkpLG0ud3JpdGVfc2hpZnQoMixkKSxraShfLG0pO3ZhciBUPW0ubGVuZ3RoPm0ubD9tLnNsaWNlKDAsbS5sKTptO3JldHVybiBudWxsPT1tLmwmJihtLmw9bS5sZW5ndGgpLFR9ZnVuY3Rpb24gclEoZCl7cmV0dXJue2NvbG9yOk5sKGQpLHBvczpx'@; put 'cyhkKX19dWEuU1RZPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlcyI7dmFyIFM4PVsibm9uZSIsInNvbGlkIiwibWVkaXVtR3JheSIsImRhcmtHcmF5IiwibGlnaHRHcmF5IiwiZGFya0hvcml6b250YWwi'@; put 'LCJkYXJrVmVydGljYWwiLCJkYXJrRG93biIsImRhcmtVcCIsImRhcmtHcmlkIiwiZGFya1RyZWxsaXMiLCJsaWdodEhvcml6b250YWwiLCJsaWdodFZlcnRpY2FsIiwibGlnaHREb3duIiwibGlnaHRVcCIsImxpZ2h0R3JpZCIsImxpZ2h0VHJlbGxpcyIsImdyYXkxMjUiLCJncmF5MDYyNSJd'@; put 'LF95PWNlKFM4KSxLQT1bImdlbmVyYWwiLCJsZWZ0IiwiY2VudGVyIiwicmlnaHQiLCJmaWxsIiwianVzdGlmeSIsImNlbnRlckNvbnRpbnVvdXMiLCJkaXN0cmlidXRlZCJdLGJTPVsidG9wIiwiY2VudGVyIiwiYm90dG9tIiwianVzdGlmeSIsImRpc3RyaWJ1dGVkIl07ZnVuY3Rpb24ga0go'@; put 'ZCxfLG0pe218fChtPUZyKDE2KSksbS53cml0ZV9zaGlmdCgyLF98fDApLG0ud3JpdGVfc2hpZnQoMixkLm51bUZtdElkfHwwKSxtLndyaXRlX3NoaWZ0KDIsZC5mb250SWR8fDApLG0ud3JpdGVfc2hpZnQoMixkLmZpbGxJZHx8MCksbS53cml0ZV9zaGlmdCgyLGQuYm9yZGVySWR8fDApLG0u'@; put 'd3JpdGVfc2hpZnQoMSxkLmFsaWdubWVudCYmZC5hbGlnbm1lbnQudGV4dFJvdGF0aW9ufHwwKSxtLndyaXRlX3NoaWZ0KDEsZC5hbGlnbm1lbnQmJmQuYWxpZ25tZW50LmluZGVudHx8MCk7dmFyIFQ9MCxQPTA7aWYoZC5hbGlnbm1lbnQpe2lmKGQuYWxpZ25tZW50Lmhvcml6b250YWwpe3Zh'@; put 'ciBRPUtBLmluZGV4T2YoZC5hbGlnbm1lbnQuaG9yaXpvbnRhbCk7UTwwJiYoUT0wKSxUfD1RfWlmKGQuYWxpZ25tZW50LnZlcnRpY2FsKXt2YXIgc2U9YlMuaW5kZXhPZihkLmFsaWdubWVudC52ZXJ0aWNhbCk7c2U8MCYmKHNlPTIpLFR8PXNlPDwzfWQuYWxpZ25tZW50LndyYXBUZXh0JiYo'@; put 'VHw9NjQpLGQuYWxpZ25tZW50LnNocmlua1RvRml0JiYoUHw9MSl9cmV0dXJuIG0ud3JpdGVfc2hpZnQoMSxUKSxtLndyaXRlX3NoaWZ0KDEsUCksbS53cml0ZV9zaGlmdCgxLDApLG0ud3JpdGVfc2hpZnQoMSwwKSxtfXZhciBFOD1bIm5vbmUiLCJ0aGluIiwibWVkaXVtIiwiZGFzaGVkIiwi'@; put 'ZG90dGVkIiwidGhpY2siLCJkb3VibGUiLCJoYWlyIiwibWVkaXVtRGFzaGVkIiwiZGFzaERvdCIsIm1lZGl1bURhc2hEb3QiLCJkYXNoRG90RG90IiwibWVkaXVtRGFzaERvdERvdCIsInNsYW50RGFzaERvdCJdO2Z1bmN0aW9uIHl5KGQpe3ZhciBfPWQucmVhZF9zaGlmdCgxKTtkLmwrPTE7'@; put 'dmFyIG09TmwoZCk7cmV0dXJue3N0eWxlOkU4W19dLGNvbG9yOm19fWZ1bmN0aW9uIGs5KGQsXyl7cmV0dXJuIF98fChfPUZyKDEwKSksZCYmZC5zdHlsZSYmIiIhPWQuc3R5bGUmJiJub25lIiE9ZC5zdHlsZSYmLTEhPT1FOC5pbmRleE9mKGQuc3R5bGUpPyhfLndyaXRlX3NoaWZ0KDEsRTgu'@; put 'aW5kZXhPZihkLnN0eWxlKSksXy53cml0ZV9zaGlmdCgxLDApLGQuY29sb3I/bjEoZC5jb2xvcixfKTooXy53cml0ZV9zaGlmdCg0LDApLF8ud3JpdGVfc2hpZnQoNCwwKSkpOihfLndyaXRlX3NoaWZ0KDEsMCksXy53cml0ZV9zaGlmdCgxLDApLF8ud3JpdGVfc2hpZnQoNCwwKSxfLndyaXRl'@; put 'X3NoaWZ0KDQsMCkpLF99ZnVuY3Rpb24gWEEoZCxfKXtyZXR1cm4gX3x8KF89RnIoNTIpKSxfLndyaXRlX3NoaWZ0KDQsZC54ZklkKSxfLndyaXRlX3NoaWZ0KDIsMSksXy53cml0ZV9zaGlmdCgxLCtkLmJ1aWx0aW5JZCksXy53cml0ZV9zaGlmdCgxLDApLHkyKGQubmFtZXx8IiIsXyksXy5s'@; put 'ZW5ndGg+Xy5sP18uc2xpY2UoMCxfLmwpOl99ZnVuY3Rpb24geTUoZCxfKXshX3x8IV8udGhlbWVFbGVtZW50c3x8IV8udGhlbWVFbGVtZW50cy5jbHJTY2hlbWV8fG51bGwhPWQudGhlbWUmJihkLnJnYj1oNShfLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW2QudGhlbWVdLnJnYixkLnRpbnR8'@; put 'fDApKX1mdW5jdGlvbiB0ayhkLF8pe3ZhciBtPU1jKCk7cmV0dXJuIElpKG0sIkJydEJlZ2luU3R5bGVTaGVldCIpLGZ1bmN0aW9uIGJ5KGQsXyl7aWYoXyl7dmFyIG09MDtbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKFQpe2Zvcih2YXIgUD1UWzBd'@; put 'O1A8PVRbMV07KytQKW51bGwhPV9bUF0mJisrbX0pLDAhPW0mJihJaShkLCJCcnRCZWdpbkZtdHMiLGxyKG0pKSxbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKFQpe2Zvcih2YXIgUD1UWzBdO1A8PVRbMV07KytQKW51bGwhPV9bUF0mJklpKGQsIkJy'@; put 'dEZtdCIsJEEoUCxfW1BdKSl9KSxJaShkLCJCcnRFbmRGbXRzIikpfX0obSxkLlNTRiksZnVuY3Rpb24gSkEoZCxfKXt2YXIgbT1fLmxlbmd0aDswIT1tJiYoSWkoZCwiQnJ0QmVnaW5Gb250cyIsbHIobSkpLF8uZm9yRWFjaChmdW5jdGlvbihUKXtJaShkLCJCcnRGb250IixmdW5jdGlvbiB4'@; put 'SChkLF8pe198fChfPUZyKDE1MykpLF8ud3JpdGVfc2hpZnQoMiwyMCpkLnN6KSxmdW5jdGlvbiBOMChkLF8pe198fChfPUZyKDIpKSxfLndyaXRlX3NoaWZ0KDEsKGQuaXRhbGljPzI6MCl8KGQuc3RyaWtlPzg6MCl8KGQub3V0bGluZT8xNjowKXwoZC5zaGFkb3c/MzI6MCl8KGQuY29uZGVu'@; put 'c2U/NjQ6MCl8KGQuZXh0ZW5kPzEyODowKSksXy53cml0ZV9zaGlmdCgxLDApfShkLF8pLF8ud3JpdGVfc2hpZnQoMixkLmJvbGQ/NzAwOjQwMCk7dmFyIG09MDsic3VwZXIiPT1kLnZhbGlnbj9tPTE6InN1YiI9PWQudmFsaWduJiYobT0yKSxfLndyaXRlX3NoaWZ0KDIsbSksXy53cml0ZV9z'@; put 'aGlmdCgxLGQudW5kZXJsaW5lfHwwKSxfLndyaXRlX3NoaWZ0KDEsZC5mYW1pbHl8fDApLF8ud3JpdGVfc2hpZnQoMSxkLmNoYXJzZXR8fDApLF8ud3JpdGVfc2hpZnQoMSwwKSxuMShkLmNvbG9yLF8pO3ZhciBUPTA7cmV0dXJuIm1ham9yIj09ZC5zY2hlbWUmJihUPTEpLCJtaW5vciI9PWQu'@; put 'c2NoZW1lJiYoVD0yKSxfLndyaXRlX3NoaWZ0KDEsVCksa2koZC5uYW1lLF8pLF8ubGVuZ3RoPl8ubD9fLnNsaWNlKDAsXy5sKTpffShUKSl9KSxJaShkLCJCcnRFbmRGb250cyIpKX0obSwoZC5TdHlsZXN8fHt9KS5Gb250c3x8W10pLGZ1bmN0aW9uIHdTKGQsXyl7dmFyIG09Xy5sZW5ndGg7'@; put 'MCE9bSYmKElpKGQsIkJydEJlZ2luRmlsbHMiLGxyKG0pKSxfLmZvckVhY2goZnVuY3Rpb24oVCl7SWkoZCwiQnJ0RmlsbCIsZnVuY3Rpb24gQUgoZCxfKXtffHwoXz1Gcig4NCkpO3ZhciBtPV95W2QucGF0dGVyblR5cGVdO251bGw9PW0mJihtPTQwKSxfLndyaXRlX3NoaWZ0KDQsbT0rbSk7'@; put 'dmFyIFQ9MDtpZig0MCE9bSlmb3IobjEoZC5mZ0NvbG9yfHx7aW5kZXg6NjR9LF8pLG4xKGQuYmdDb2xvcnx8e2luZGV4OjY1fSxfKTtUPDEyOysrVClfLndyaXRlX3NoaWZ0KDQsMCk7ZWxzZXtmb3IoO1Q8NDsrK1QpXy53cml0ZV9zaGlmdCg0LDApO2Zvcig7VDwxMjsrK1QpXy53cml0ZV9z'@; put 'aGlmdCg0LDApfXJldHVybiBfLmxlbmd0aD5fLmw/Xy5zbGljZSgwLF8ubCk6X30oVCkpfSksSWkoZCwiQnJ0RW5kRmlsbHMiKSl9KG0sKGQuU3R5bGVzfHx7fSkuRmlsbHN8fFtdKSxmdW5jdGlvbiBkNWUoZCxfKXt2YXIgbT1fLmxlbmd0aDswIT1tJiYoSWkoZCwiQnJ0QmVnaW5Cb3JkZXJz'@; put 'IixscihtKSksXy5mb3JFYWNoKGZ1bmN0aW9uKFQpe0lpKGQsIkJydEJvcmRlciIsZnVuY3Rpb24gUjkoZCxfKXtyZXR1cm4gX3x8KF89RnIoNTEpKSxfLndyaXRlX3NoaWZ0KDEsMCksazkoZC50b3AsXyksazkoZC5ib3R0b20sXyksazkoZC5sZWZ0LF8pLGs5KGQucmlnaHQsXyksazkobnVs'@; put 'bCxfKSxfLmxlbmd0aD5fLmw/Xy5zbGljZSgwLF8ubCk6X30oVCkpfSksSWkoZCwiQnJ0RW5kQm9yZGVycyIpKX0obSwoZC5TdHlsZXN8fHt9KS5Cb3JkZXJzfHxbXSksZnVuY3Rpb24gSUgoZCxfKXt2YXIgbT0xO2lmKF8mJihtPV8ubGVuZ3RoKSxJaShkLCJCcnRCZWdpbkNlbGxTdHlsZVhG'@; put 'cyIsbHIobSkpLElpKGQsIkJydFhGIixrSCh7bnVtRm10SWQ6MCxmb250SWQ6MCxmaWxsSWQ6MCxib3JkZXJJZDowfSw2NTUzNSkpLF8pZm9yKHZhciBUPTE7VDxfLmxlbmd0aDsrK1QpSWkoZCwiQnJ0WEYiLGtIKHtudW1GbXRJZDpfW1RdLm51bUZtdElkfHwwLGZvbnRJZDpfW1RdLmZvbnRJ'@; put 'ZHx8MCxmaWxsSWQ6X1tUXS5maWxsSWR8fDAsYm9yZGVySWQ6X1tUXS5ib3JkZXJJZHx8MH0sNjU1MzUpKTtJaShkLCJCcnRFbmRDZWxsU3R5bGVYRnMiKX0obSxfLmNlbGxTdHlsZVhmcyksZnVuY3Rpb24gREgoZCxfKXtJaShkLCJCcnRCZWdpbkNlbGxYRnMiLGxyKF8ubGVuZ3RoKSksXy5m'@; put 'b3JFYWNoKGZ1bmN0aW9uKG0pe0lpKGQsIkJydFhGIixrSChtLDApKX0pLElpKGQsIkJydEVuZENlbGxYRnMiKX0obSxfLmNlbGxYZnMpLGZ1bmN0aW9uIGFRKGQsXyl7dmFyIG09MTtpZihfJiYobT1fLmxlbmd0aCksSWkoZCwiQnJ0QmVnaW5TdHlsZXMiLGxyKG0pKSxJaShkLCJCcnRTdHls'@; put 'ZSIsWEEoe3hmSWQ6MCxidWlsdGluSWQ6MCxuYW1lOiJOb3JtYWwifSkpLF8pZm9yKHZhciBUPTE7VDxfLmxlbmd0aDsrK1QpSWkoZCwiQnJ0U3R5bGUiLFhBKHt4ZklkOlQsYnVpbHRpbklkOjAsbmFtZTpfW1RdLm5hbWV9KSk7SWkoZCwiQnJ0RW5kU3R5bGVzIil9KG0sXy5jZWxsU3R5bGVY'@; put 'ZnMpLGZ1bmN0aW9uIEZnKGQpe0lpKGQsIkJydEJlZ2luRFhGcyIsbHIoMCkpLElpKGQsIkJydEVuZERYRnMiKX0obSksZnVuY3Rpb24gc1EoZCl7SWkoZCwiQnJ0QmVnaW5UYWJsZVN0eWxlcyIsZnVuY3Rpb24gUUEoZCxfLG0pe3ZhciBUPUZyKDIwNTIpO3JldHVybiBULndyaXRlX3NoaWZ0'@; put 'KDQsZCkseTIoXyxUKSx5MihtLFQpLFQubGVuZ3RoPlQubD9ULnNsaWNlKDAsVC5sKTpUfSgwLCJUYWJsZVN0eWxlTWVkaXVtOSIsIlBpdm90U3R5bGVNZWRpdW00IikpLElpKGQsIkJydEVuZFRhYmxlU3R5bGVzIil9KG0pLElpKG0sIkJydEVuZFN0eWxlU2hlZXQiKSxtLmVuZCgpfXVhLlRI'@; put 'RU1FPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIjt2YXIgTEg9WyI8L2E6bHQxPiIsIjwvYTpkazE+IiwiPC9hOmx0Mj4iLCI8L2E6ZGsyPiIsIjwvYTphY2NlbnQxPiIsIjwvYTphY2NlbnQyPiIsIjwv'@; put 'YTphY2NlbnQzPiIsIjwvYTphY2NlbnQ0PiIsIjwvYTphY2NlbnQ1PiIsIjwvYTphY2NlbnQ2PiIsIjwvYTpobGluaz4iLCI8L2E6Zm9sSGxpbms+Il07ZnVuY3Rpb24gQ1MoZCxfLG0pe18udGhlbWVFbGVtZW50cy5jbHJTY2hlbWU9W107dmFyIFQ9e307KGRbMF0ubWF0Y2goQm4pfHxbXSku'@; put 'Zm9yRWFjaChmdW5jdGlvbihQKXt2YXIgUT1YcihQKTtzd2l0Y2goUVswXSl7Y2FzZSI8YTpjbHJTY2hlbWUiOmNhc2UiPC9hOmNsclNjaGVtZT4iOmNhc2UiPC9hOnNyZ2JDbHI+IjpjYXNlIjwvYTpzeXNDbHI+IjpicmVhaztjYXNlIjxhOnNyZ2JDbHIiOlQucmdiPVEudmFsO2JyZWFrO2Nh'@; put 'c2UiPGE6c3lzQ2xyIjpULnJnYj1RLmxhc3RDbHI7YnJlYWs7Y2FzZSI8YTpkazE+IjpjYXNlIjwvYTpkazE+IjpjYXNlIjxhOmx0MT4iOmNhc2UiPC9hOmx0MT4iOmNhc2UiPGE6ZGsyPiI6Y2FzZSI8L2E6ZGsyPiI6Y2FzZSI8YTpsdDI+IjpjYXNlIjwvYTpsdDI+IjpjYXNlIjxhOmFjY2Vu'@; put 'dDE+IjpjYXNlIjwvYTphY2NlbnQxPiI6Y2FzZSI8YTphY2NlbnQyPiI6Y2FzZSI8L2E6YWNjZW50Mj4iOmNhc2UiPGE6YWNjZW50Mz4iOmNhc2UiPC9hOmFjY2VudDM+IjpjYXNlIjxhOmFjY2VudDQ+IjpjYXNlIjwvYTphY2NlbnQ0PiI6Y2FzZSI8YTphY2NlbnQ1PiI6Y2FzZSI8L2E6YWNj'@; put 'ZW50NT4iOmNhc2UiPGE6YWNjZW50Nj4iOmNhc2UiPC9hOmFjY2VudDY+IjpjYXNlIjxhOmhsaW5rPiI6Y2FzZSI8L2E6aGxpbms+IjpjYXNlIjxhOmZvbEhsaW5rPiI6Y2FzZSI8L2E6Zm9sSGxpbms+IjoiLyI9PT1RWzBdLmNoYXJBdCgxKT8oXy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtM'@; put 'SC5pbmRleE9mKFFbMF0pXT1ULFQ9e30pOlQubmFtZT1RWzBdLnNsaWNlKDMsUVswXS5sZW5ndGgtMSk7YnJlYWs7ZGVmYXVsdDppZihtJiZtLldURil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCAiK1FbMF0rIiBpbiBjbHJTY2hlbWUiKX19KX1mdW5jdGlvbiBuaygpe31mdW5jdGlv'@; put 'biBsUSgpe312YXIgT0g9LzxhOmNsclNjaGVtZShbXj5dKik+W1xzXFNdKjxcL2E6Y2xyU2NoZW1lPi8sTkg9LzxhOmZvbnRTY2hlbWUoW14+XSopPltcc1xTXSo8XC9hOmZvbnRTY2hlbWU+LyxGSD0vPGE6Zm10U2NoZW1lKFtePl0qKT5bXHNcU10qPFwvYTpmbXRTY2hlbWU+LyxjUT0vPGE6'@; put 'dGhlbWVFbGVtZW50cyhbXj5dKik+W1xzXFNdKjxcL2E6dGhlbWVFbGVtZW50cz4vO2Z1bmN0aW9uIEk5KGQsXyl7aWYoIWR8fDA9PT1kLmxlbmd0aClyZXR1cm4gSTkodVEoKSk7dmFyIG0sVD17fTtpZighKG09ZC5tYXRjaChjUSkpKXRocm93IG5ldyBFcnJvcigidGhlbWVFbGVtZW50cyBu'@; put 'b3QgZm91bmQgaW4gdGhlbWUiKTtyZXR1cm4gZnVuY3Rpb24gUEgoZCxfLG0pe3ZhciBUO18udGhlbWVFbGVtZW50cz17fSxbWyJjbHJTY2hlbWUiLE9ILENTXSxbImZvbnRTY2hlbWUiLE5ILG5rXSxbImZtdFNjaGVtZSIsRkgsbFFdXS5mb3JFYWNoKGZ1bmN0aW9uKFApe2lmKCEoVD1kLm1h'@; put 'dGNoKFBbMV0pKSl0aHJvdyBuZXcgRXJyb3IoUFswXSsiIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7UFsyXShULF8sbSl9KX0obVswXSxULF8pLFQucmF3PWQsVH1mdW5jdGlvbiB1UShkLF8pe2lmKF8mJl8udGhlbWVYTFNYKXJldHVybiBfLnRoZW1lWExTWDtpZihkJiYic3RyaW5n'@; put 'Ij09dHlwZW9mIGQucmF3KXJldHVybiBkLnJhdzt2YXIgbT1bcG9dO3JldHVybiBtW20ubGVuZ3RoXT0nPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+JyxtW20ubGVuZ3Ro'@; put 'XT0iPGE6dGhlbWVFbGVtZW50cz4iLG1bbS5sZW5ndGhdPSc8YTpjbHJTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLG1bbS5sZW5ndGhdPSc8YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIgbGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT4nLG1bbS5sZW5ndGhdPSc8YTpsdDE+PGE6c3lz'@; put 'Q2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPicsbVttLmxlbmd0aF09JzxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iMUY0OTdEIi8+PC9hOmRrMj4nLG1bbS5sZW5ndGhdPSc8YTpsdDI+PGE6c3JnYkNsciB2YWw9IkVFRUNFMSIvPjwvYTpsdDI+JyxtW20ubGVuZ3Ro'@; put 'XT0nPGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNEY4MUJEIi8+PC9hOmFjY2VudDE+JyxtW20ubGVuZ3RoXT0nPGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iQzA1MDREIi8+PC9hOmFjY2VudDI+JyxtW20ubGVuZ3RoXT0nPGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iOUJCQjU5Ii8+'@; put 'PC9hOmFjY2VudDM+JyxtW20ubGVuZ3RoXT0nPGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iODA2NEEyIi8+PC9hOmFjY2VudDQ+JyxtW20ubGVuZ3RoXT0nPGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD0iNEJBQ0M2Ii8+PC9hOmFjY2VudDU+JyxtW20ubGVuZ3RoXT0nPGE6YWNjZW50Nj48'@; put 'YTpzcmdiQ2xyIHZhbD0iRjc5NjQ2Ii8+PC9hOmFjY2VudDY+JyxtW20ubGVuZ3RoXT0nPGE6aGxpbms+PGE6c3JnYkNsciB2YWw9IjAwMDBGRiIvPjwvYTpobGluaz4nLG1bbS5sZW5ndGhdPSc8YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iODAwMDgwIi8+PC9hOmZvbEhsaW5rPicsbVtt'@; put 'Lmxlbmd0aF09IjwvYTpjbHJTY2hlbWU+IixtW20ubGVuZ3RoXT0nPGE6Zm9udFNjaGVtZSBuYW1lPSJPZmZpY2UiPicsbVttLmxlbmd0aF09IjxhOm1ham9yRm9udD4iLG1bbS5sZW5ndGhdPSc8YTpsYXRpbiB0eXBlZmFjZT0iQ2FtYnJpYSIvPicsbVttLmxlbmd0aF09JzxhOmVhIHR5cGVm'@; put 'YWNlPSIiLz4nLG1bbS5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSJcdWZmMmRcdWZmMzMgXHVmZjMwXHUzMGI0XHUzMGI3XHUzMGMzXHUzMGFmIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9'@; put 'IkhhbmciIHR5cGVmYWNlPSJcdWI5ZDFcdWM3NDAgXHVhY2UwXHViNTE1Ii8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSJcdTViOGJcdTRmNTMiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9Ilx1NjViMFx1N2Qz'@; put 'MFx1NjYwZVx1OWFkNCIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhlYnIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLG1bbS5sZW5ndGhdPSc8YTpm'@; put 'b250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPicsbVttLmxlbmd0aF09Jzxh'@; put 'OmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJNb29sQm9yYW4iLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdhIi8+JyxtW20ubGVuZ3Ro'@; put 'XT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJv'@; put 'a2VlIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQg'@; put 'c2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0YW1pIi8+JyxtW20ubGVuZ3RoXT0nPGE6'@; put 'Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIgdHlwZWZhY2U9IkthbGluZ2EiLz4nLG1b'@; put 'bS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29s'@; put 'YSBQb3RhIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2Ny'@; put 'aXB0PSJVaWdoIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFVpZ2h1ciIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHZW9yIiB0eXBlZmFjZT0iU3lsZmFlbiIvPicsbVttLmxlbmd0aF09IjwvYTptYWpvckZvbnQ+IixtW20ubGVuZ3RoXT0iPGE6bWlub3JGb250PiIsbVttLmxlbmd0'@; put 'aF09JzxhOmxhdGluIHR5cGVmYWNlPSJDYWxpYnJpIi8+JyxtW20ubGVuZ3RoXT0nPGE6ZWEgdHlwZWZhY2U9IiIvPicsbVttLmxlbmd0aF09JzxhOmNzIHR5cGVmYWNlPSIiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSnBhbiIgdHlwZWZhY2U9Ilx1ZmYyZFx1ZmYzMyBcdWZm'@; put 'MzBcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWYiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9Ilx1YjlkMVx1Yzc0MCBcdWFjZTBcdWI1MTUiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Ilx1NWI4Ylx1NGY1MyIv'@; put 'PicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0iXHU2NWIwXHU3ZDMwXHU2NjBlXHU5YWQ0Ii8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJBcmlhbCIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJy'@; put 'IiB0eXBlZmFjZT0iQXJpYWwiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQmVu'@; put 'ZyIgdHlwZWZhY2U9IlZyaW5kYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0'@; put 'PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2Ny'@; put 'aXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9z'@; put 'b2Z0IEhpbWFsYXlhIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGVsdSIg'@; put 'dHlwZWZhY2U9IkdhdXRhbWkiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+JyxtW20ubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQg'@; put 'c2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+JyxtW20ubGVuZ3RoXT0n'@; put 'PGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPicsbVttLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwi'@; put 'Lz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4nLG1bbS5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz4nLG1bbS5sZW5ndGhdPSI8L2E6bWlub3JGb250PiIsbVttLmxlbmd0'@; put 'aF09IjwvYTpmb250U2NoZW1lPiIsbVttLmxlbmd0aF09JzxhOmZtdFNjaGVtZSBuYW1lPSJPZmZpY2UiPicsbVttLmxlbmd0aF09IjxhOmZpbGxTdHlsZUxzdD4iLG1bbS5sZW5ndGhdPSc8YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPicsbVtt'@; put 'Lmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxtW20ubGVuZ3RoXT0iPGE6Z3NMc3Q+IixtW20ubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjUwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9h'@; put 'OnNjaGVtZUNscj48L2E6Z3M+JyxtW20ubGVuZ3RoXT0nPGE6Z3MgcG9zPSIzNTAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIzNzAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsbVttLmxlbmd0aF09JzxhOmdzIHBv'@; put 'cz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjE1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxtW20ubGVuZ3RoXT0iPC9hOmdzTHN0PiIsbVttLmxlbmd0aF09JzxhOmxpbiBhbmc9IjE2MjAwMDAwIiBz'@; put 'Y2FsZWQ9IjEiLz4nLG1bbS5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixtW20ubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLG1bbS5sZW5ndGhdPSI8YTpnc0xzdD4iLG1bbS5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0'@; put 'aW50IHZhbD0iMTAwMDAwIi8+PGE6c2hhZGUgdmFsPSIxMDAwMDAiLz48YTpzYXRNb2QgdmFsPSIxMzAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLG1bbS5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIv'@; put 'PjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxtW20ubGVuZ3RoXT0iPC9hOmdzTHN0PiIsbVttLmxlbmd0aF09JzxhOmxpbiBhbmc9IjE2MjAwMDAwIiBzY2FsZWQ9IjAiLz4nLG1bbS5sZW5ndGhdPSI8L2E6Z3Jh'@; put 'ZEZpbGw+IixtW20ubGVuZ3RoXT0iPC9hOmZpbGxTdHlsZUxzdD4iLG1bbS5sZW5ndGhdPSI8YTpsblN0eWxlTHN0PiIsbVttLmxlbmd0aF09JzxhOmxuIHc9Ijk1MjUiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENs'@; put 'ciI+PGE6c2hhZGUgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEwNTAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicsbVttLmxlbmd0aF09JzxhOmxuIHc9IjI1NDAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxn'@; put 'bj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxtW20ubGVuZ3RoXT0nPGE6bG4gdz0iMzgxMDAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlk'@; put 'RmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLG1bbS5sZW5ndGhdPSI8L2E6bG5TdHlsZUxzdD4iLG1bbS5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZUxzdD4iLG1bbS5sZW5ndGhdPSI8YTplZmZlY3RT'@; put 'dHlsZT4iLG1bbS5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixtW20ubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMDAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzgwMDAi'@; put 'Lz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicsbVttLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixtW20ubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIsbVttLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIsbVttLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLG1bbS5sZW5ndGhdPSc8YTpv'@; put 'dXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxtW20ubGVuZ3RoXT0iPC9hOmVmZmVj'@; put 'dExzdD4iLG1bbS5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixtW20ubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixtW20ubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIsbVttLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjMwMDAiIGRpcj0iNTQwMDAwMCIg'@; put 'cm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM1MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLG1bbS5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIsbVttLmxlbmd0aF09JzxhOnNjZW5lM2Q+PGE6Y2FtZXJhIHByc3Q9Im9ydGhv'@; put 'Z3JhcGhpY0Zyb250Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMCIvPjwvYTpjYW1lcmE+PGE6bGlnaHRSaWcgcmlnPSJ0aHJlZVB0IiBkaXI9InQiPjxhOnJvdCBsYXQ9IjAiIGxvbj0iMCIgcmV2PSIxMjAwMDAwIi8+PC9hOmxpZ2h0UmlnPjwvYTpzY2VuZTNkPicsbVttLmxlbmd0'@; put 'aF09JzxhOnNwM2Q+PGE6YmV2ZWxUIHc9IjYzNTAwIiBoPSIyNTQwMCIvPjwvYTpzcDNkPicsbVttLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLG1bbS5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGVMc3Q+IixtW20ubGVuZ3RoXT0iPGE6YmdGaWxsU3R5bGVMc3Q+IixtW20ubGVuZ3RoXT0n'@; put 'PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLG1bbS5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicsbVttLmxlbmd0aF09IjxhOmdzTHN0PiIsbVttLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZh'@; put 'bD0icGhDbHIiPjxhOnRpbnQgdmFsPSI0MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsbVttLmxlbmd0aF09JzxhOmdzIHBvcz0iNDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNDUwMDAiLz48YTpzaGFkZSB2'@; put 'YWw9Ijk5MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxtW20ubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9IjIwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjU1MDAwIi8+PC9h'@; put 'OnNjaGVtZUNscj48L2E6Z3M+JyxtW20ubGVuZ3RoXT0iPC9hOmdzTHN0PiIsbVttLmxlbmd0aF09JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSItODAwMDAiIHI9IjUwMDAwIiBiPSIxODAwMDAiLz48L2E6cGF0aD4nLG1bbS5sZW5ndGhdPSI8L2E6'@; put 'Z3JhZEZpbGw+IixtW20ubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLG1bbS5sZW5ndGhdPSI8YTpnc0xzdD4iLG1bbS5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iODAwMDAiLz48YTpzYXRNb2QgdmFs'@; put 'PSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLG1bbS5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iMzAwMDAiLz48YTpzYXRNb2QgdmFsPSIyMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLG1bbS5s'@; put 'ZW5ndGhdPSI8L2E6Z3NMc3Q+IixtW20ubGVuZ3RoXT0nPGE6cGF0aCBwYXRoPSJjaXJjbGUiPjxhOmZpbGxUb1JlY3QgbD0iNTAwMDAiIHQ9IjUwMDAwIiByPSI1MDAwMCIgYj0iNTAwMDAiLz48L2E6cGF0aD4nLG1bbS5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixtW20ubGVuZ3RoXT0iPC9h'@; put 'OmJnRmlsbFN0eWxlTHN0PiIsbVttLmxlbmd0aF09IjwvYTpmbXRTY2hlbWU+IixtW20ubGVuZ3RoXT0iPC9hOnRoZW1lRWxlbWVudHM+IixtW20ubGVuZ3RoXT0iPGE6b2JqZWN0RGVmYXVsdHM+IixtW20ubGVuZ3RoXT0iPGE6c3BEZWY+IixtW20ubGVuZ3RoXT0nPGE6c3BQci8+PGE6Ym9k'@; put 'eVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PSIxIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYgaWR4PSIzIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD0iMiI+PGE6'@; put 'c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9Im1pbm9yIj48YTpzY2hlbWVDbHIgdmFsPSJsdDEiLz48L2E6Zm9udFJlZj48L2E6c3R5bGU+JyxtW20ubGVuZ3RoXT0iPC9hOnNwRGVmPiIsbVttLmxlbmd0aF09IjxhOmxuRGVmPiIsbVttLmxl'@; put 'bmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD0iMiI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxh'@; put 'OmVmZmVjdFJlZiBpZHg9IjEiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0idHgxIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPicsbVttLmxlbmd0aF09IjwvYTpsbkRlZj4iLG1bbS5sZW5n'@; put 'dGhdPSI8L2E6b2JqZWN0RGVmYXVsdHM+IixtW20ubGVuZ3RoXT0iPGE6ZXh0cmFDbHJTY2hlbWVMc3QvPiIsbVttLmxlbmd0aF09IjwvYTp0aGVtZT4iLG0uam9pbigiIil9ZnVuY3Rpb24gTTgoZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDIpLG09ZC5yZWFkX3NoaWZ0KDIpLTQsVD1bX107c3dp'@; put 'dGNoKF8pe2Nhc2UgNDpjYXNlIDU6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6VFsxXT1mdW5jdGlvbiBISChkKXt2YXIgXz17fTtzd2l0Y2goXy54Y2xyVHlwZT1kLnJlYWRfc2hpZnQoMiksXy5uVGludFNoYWRlPWQucmVhZF9zaGlmdCgyKSxfLnhjbHJU'@; put 'eXBlKXtjYXNlIDA6Y2FzZSA0OmQubCs9NDticmVhaztjYXNlIDE6Xy54Y2xyVmFsdWU9ZnVuY3Rpb24gVkgoZCxfKXtyZXR1cm4gRWMoZCxfKX0oZCw0KTticmVhaztjYXNlIDI6Xy54Y2xyVmFsdWU9YWEoZCk7YnJlYWs7Y2FzZSAzOl8ueGNsclZhbHVlPWZ1bmN0aW9uIGRRKGQpe3JldHVy'@; put 'biBkLnJlYWRfc2hpZnQoNCl9KGQpfXJldHVybiBkLmwrPTgsX30oZCk7YnJlYWs7Y2FzZSA2OlRbMV09ZnVuY3Rpb24gYjUoZCxfKXtyZXR1cm4gRWMoZCxfKX0oZCxtKTticmVhaztjYXNlIDE0OmNhc2UgMTU6VFsxXT1kLnJlYWRfc2hpZnQoMT09PW0/MToyKTticmVhaztkZWZhdWx0OnRo'@; put 'cm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIEV4dFByb3AgdHlwZTogIitfKyIgIittKX1yZXR1cm4gVH1mdW5jdGlvbiBoUShkLF8pe18uZm9yRWFjaChmdW5jdGlvbihtKXtzd2l0Y2gobVswXSl7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpj'@; put 'YXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpicmVhaztjYXNlIDEzOmQuZm9udCYmZC5mb250LmNvbG9yJiZBcnJheS5pc0FycmF5KG1bMV0ueGNsclZhbHVlKSYmKGQuZm9udC5jb2xvci5yZ2I9YjMobVsxXS54Y2xyVmFsdWUpKX19KX1mdW5jdGlvbiB3YShkKXtyZXR1cm4gZC85MTQ0MDAqcDV9'@; put 'ZnVuY3Rpb24gZlEoZCxfKXt2YXIgbT17fTtpZihkLnBvcyltLng9d2EoZC5wb3MueCksbS55PXdhKGQucG9zLnkpO2Vsc2V7aWYoIWQuZnJvbSl0aHJvdyJiYWQgYW5jaG9yIHN0YXJ0IjttLnI9ZC5mcm9tLnJ8fDAsbS5jPWQuZnJvbS5jfHwwLGQuZnJvbS5jT2ZmJiYobS54PXdhKGQuZnJv'@; put 'bS5jT2ZmKSksZC5mcm9tLnJPZmYmJihtLnk9d2EoZC5mcm9tLnJPZmYpKX1pZihkLmV4dCltLnc9d2EoZC5leHQueCksbS5oPXdhKGQuZXh0LnkpO2Vsc2V7aWYoIWQudG8pdGhyb3ciYmFkIGFuY2hvciBlbmQiO20uQz1kLnRvLmMsbS5SPWQudG8ucixkLnRvLmNPZmYmJihtLlg9d2EoZC50'@; put 'by5jT2ZmKSksZC50by5yT2ZmJiYobS5ZPXdhKGQudG8uck9mZikpfXJldHVybiBtfWZ1bmN0aW9uIEQ5KGQsXyl7dmFyIG09e3g6LTEseTotMSx3Oi0xLGg6LTF9O2lmKGQucG9zKW0ueD13YShkLnBvcy54KSxtLnk9d2EoZC5wb3MueSk7ZWxzZXtpZighZC5mcm9tKXRocm93ImJhZCBhbmNo'@; put 'b3Igc3RhcnQiO20ueD1FUyhfLGQuZnJvbS5jLCJDIikrd2EoZC5mcm9tLmNPZmYpLG0ueT1FUyhfLGQuZnJvbS5yLCJSIikrd2EoZC5mcm9tLnJPZmYpfWlmKGQuZXh0KW0udz13YShkLmV4dC54KSxtLmg9d2EoZC5leHQueSk7ZWxzZXtpZighZC50byl0aHJvdyJiYWQgYW5jaG9yIGVuZCI7'@; put 'bS53PUVTKF8sZC50by5jLCJDIikrd2EoZC50by5jT2ZmKS1tLngsbS5oPUVTKF8sZC50by5yLCJSIikrd2EoZC50by5yT2ZmKS1tLnl9cmV0dXJuIG19ZnVuY3Rpb24gdzUoZCxfKXt2YXIgbT17cjotMSxjOi0xLHg6LTEseTotMSxSOi0xLEM6LTEsWDotMSxZOi0xfTtzd2l0Y2goZC50eXBl'@; put 'KXtjYXNlInR3b0NlbGxBbmNob3IiOm0ucj1kLmZyb20ucixtLnk9d2EoZC5mcm9tLnJPZmYpLG0uUj1kLnRvLnIsbS5ZPXdhKGQudG8uck9mZiksbS5jPWQuZnJvbS5jLG0ueD13YShkLmZyb20uY09mZiksbS5DPWQudG8uYyxtLlg9d2EoZC50by5jT2ZmKTticmVhaztjYXNlIm9uZUNlbGxB'@; put 'bmNob3IiOm0ucj1kLmZyb20ucixtLnk9d2EoZC5mcm9tLnJPZmYpO3ZhciBUPXg4KF8sbS5yLG0ueSt3YShkLmV4dC55KSk7bS5SPVRbMF0sbS5ZPVRbMV0sbS5jPWQuZnJvbS5jLG0ueD13YShkLmZyb20uY09mZik7dmFyIFA9aWsoXyxtLmMsbS54K3dhKGQuZXh0LngpKTttLkM9UFswXSxt'@; put 'Llg9UFsxXTticmVhaztjYXNlImFic29sdXRlQW5jaG9yIjp2YXIgUT14OChfLDAsd2EoZC5wb3MueSkpO20ucj1RWzBdLG0ueT1RWzFdO3ZhciBzZT14OChfLG0ucixtLnkrd2EoZC5leHQueSkpO20uUj1zZVswXSxtLlk9c2VbMV07dmFyIG9lPXg4KF8sMCx3YShkLnBvcy54KSk7bS5jPW9l'@; put 'WzBdLG0ueD1vZVsxXTt2YXIgZGU9eDgoXyxtLmMsbS54K3dhKGQuZXh0LngpKTttLkM9ZGVbMF0sbS5YPWRlWzFdO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGFuY2hvciB0eXBlICIrZC50eXBlfXJldHVybiBtfWZ1bmN0aW9uIGpIKGQsXyl7dmFyIG09ZC50cmltKCkuc3BsaXQoL1xzKixc'@; put 'cyovKTtfWyIhcG9zIl09e2M6K21bMF0seDorbVsxXSxyOittWzJdLHk6K21bM10sQzorbVs0XSxYOittWzVdLFI6K21bNl0sWTorbVs3XX19ZnVuY3Rpb24gcmsoZCxfLG0pe3ZhciBUPS0xO2lmKG51bGwhPWQuUnx8bnVsbCE9ZC5DKVQ9MDtlbHNle2lmKG51bGw9PWQueHx8bnVsbD09ZC55'@; put 'fHxudWxsPT1kLnd8fG51bGw9PWQuaCl0aHJvdyJjYW5ub3QgcGFyc2UgYW5jaG9yICIrSlNPTi5zdHJpbmdpZnkoZCk7VD0xKzIqIShkLmN8fGQucil9aWYoVCE9Xyl7c3dpdGNoKF8pe2Nhc2UgMDpjYXNlIDE6aWYoMyE9VClicmVhazt2YXIgUD1payhtLGQuY3x8MCxkLnh8fDApO2QuYz1Q'@; put 'WzBdLGQueD1QWzFdO3ZhciBRPXg4KG0sZC5yfHwwLGQueXx8MCk7ZC5yPVFbMF0sZC55PVFbMV07YnJlYWs7Y2FzZSAzOmlmKDM9PVQpYnJlYWs7dmFyIHNlPWQuY3x8MCxvZT1kLnh8fDA7ZGVsZXRlIGQuYyxkZWxldGUgZC54LGQueD0oc2U/Q3kobSxzZSk6MCkrb2U7dmFyIGRlPWQucnx8'@; put 'MCxMZT1kLnl8fDA7ZGVsZXRlIGQucixkZWxldGUgZC55LGQueT0oZGU/VDgobSxkZSk6MCkrTGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyJjb252ZXJ0X2FuY2hvciB1bnJlY29nbml6ZWQgdHlwZSAiK199c3dpdGNoKF8pe2Nhc2UgMDppZigwPT1UKWJyZWFrO3ZhciBOZT1payhtLGQuY3x8MCwo'@; put 'ZC54fHwwKStkLncpO2RlbGV0ZSBkLncsZC5DPU5lWzBdLGQuWD1OZVsxXTt2YXIgQmU9eDgobSxkLnJ8fDAsKGQueXx8MCkrZC5oKTtkZWxldGUgZC5oLGQuUj1CZVswXSxkLlk9QmVbMV07YnJlYWs7Y2FzZSAxOmNhc2UgMzppZigwIT1UKWJyZWFrO3ZhciBaZT1kLkN8fDAsbnQ9ZC5YfHww'@; put 'O2RlbGV0ZSBkLkMsZGVsZXRlIGQuWCxkLnc9Q3kobSxaZSkrbnQtKGQuYz9DeShtLGQuYyk6MCktKGQueHx8MCk7dmFyIG10PWQuUnx8MCxRZT1kLll8fDA7ZGVsZXRlIGQuUixkZWxldGUgZC5ZLGQuaD1UOChtLG10KStRZS0oZC5yP1Q4KG0sZC5yKTowKS0oZC55fHwwKTticmVhaztkZWZh'@; put 'dWx0OnRocm93ImNvbnZlcnRfYW5jaG9yIHVucmVjb2duaXplZCB0eXBlICIrX319fWZ1bmN0aW9uIFNTKGQpe3ZhciBfPVtkLmN8fDAsTWF0aC5yb3VuZChkLnh8fDApLGQucnx8MCxNYXRoLnJvdW5kKGQueXx8MCldO3JldHVybihfPV8uY29uY2F0KGQuaCYmZC53P1tfWzBdLE1hdGgucm91'@; put 'bmQoX1sxXStkLncpLF9bMl0sTWF0aC5yb3VuZChfWzNdK2QuaCldOltkLkN8fDAsTWF0aC5yb3VuZChkLlh8fDApLGQuUnx8MCxNYXRoLnJvdW5kKGQuWXx8MCldKSkuam9pbigiLCAiKX1mdW5jdGlvbiBUOChkLF8pe2lmKCFkKXJldHVybiAwO2Zvcih2YXIgbT0wOy0tXz49MDspe3ZhciBU'@; put 'PSgoZFsiIXJvd3MiXXx8W10pW19dfHx7fSkuaHB4O251bGw9PVQmJihUPSgoZFsiIXNoZWV0Rm9ybWF0Il18fHt9KS5yb3d8fHt9KS5ocHgpLG51bGw9PVQmJihUPTI0KSxtKz1UfXJldHVybiBtfWZ1bmN0aW9uIEN5KGQsXyl7aWYoIWQpcmV0dXJuIDA7Zm9yKHZhciBtPTA7LS1fPj0wOyl7'@; put 'dmFyIFQ9KChkWyIhY29scyJdfHxbXSlbX118fHt9KS53cHg7aWYobnVsbD09VCYmKFQ9KChkWyIhc2hlZXRGb3JtYXQiXXx8e30pLmNvbHx8e30pLndweCksbnVsbD09VCl7dmFyIFA9e3djaDo4LjQzfTtCMChQKSxkWyIhY29scyJdJiYoZFsiIWNvbHMiXVtfXT1QKSxUPVAud3B4fW0rPVR9'@; put 'cmV0dXJuIG19ZnVuY3Rpb24gRVMoZCxfLG0pe3JldHVybiJDIj09bT9DeShkLF8pOlQ4KGQsXyl9ZnVuY3Rpb24geDgoZCxfLG0pe3ZhciBUPVtfLG1dO2lmKCFkKXJldHVybiBUO2Zvcig7Oyl7dmFyIFA9KGRbIiFyb3dzIl18fFtdKVtUWzBdXXx8e307aWYoUC5oaWRkZW4pKytUWzBdO2Vs'@; put 'c2V7dmFyIFE9UC5ocHg7aWYobnVsbD09USYmKFE9KChkWyIhc2hlZXRGb3JtYXQiXXx8e30pLnJvd3x8e30pLmhweCksbnVsbD09USYmKFE9TmcoMTUpKSxUWzFdPFEpYnJlYWs7VFswXSsrLFRbMV0tPVF9fXJldHVybiBUfWZ1bmN0aW9uIGlrKGQsXyxtKXt2YXIgVD1bXyxtXTtpZighZCly'@; put 'ZXR1cm4gVDtmb3IoOzspe3ZhciBQPShkWyIhY29scyJdfHxbXSlbVFswXV18fHt9O2lmKFAuaGlkZGVufHwwPT09UC53cHgpKytUWzBdO2Vsc2V7dmFyIFE9UC53cHg7aWYobnVsbD09USYmKFE9KChkWyIhc2hlZXRGb3JtYXQiXXx8e30pLmNvbHx8e30pLndweCksbnVsbD09USl7dmFyIHNl'@; put 'PXt3Y2g6OC40M307QjAoc2UpLGRbIiFjb2xzIl0mJihkWyIhY29scyJdW1RbMF1dPXNlKSxRPXNlLndweH1pZihUWzFdPFEpYnJlYWs7VFswXSsrLFRbMV0tPVF9fXJldHVybiBUfWZ1bmN0aW9uIFQyKGQpe3JldHVybigiMDAwMDAwIisoIm51bWJlciI9PXR5cGVvZiBkP2QudG9TdHJpbmco'@; put 'MTYpOmQpKS5zbGljZSgtNil9ZnVuY3Rpb24gUGcoZCxfLG0pe3ZhciBUPSJzdHJpbmciPT10eXBlb2YgXz8hIW06ISFfOyJzdHJpbmciIT10eXBlb2YgXyYmKF89ImNvbG9yIik7dmFyIFA9IjwiK18rIiAiO3JldHVybiBkLmF1dG8/UCsnYXV0bz0iMSIvPic6ZC5pbmRleCYmbnVsbD09ZC5y'@; put 'Z2I/UCsnaW5kZXhlZD0iJytkLmluZGV4KyciLz4nOm51bGwhPWQudGhlbWU/UCsndGhlbWU9IicrZC50aGVtZSsnIicrKGQudGludD8nIHRpbnQ9IicrZC50aW50KyciJzoiIikrIi8+IjpudWxsIT1kLnJnYj9QKydyZ2I9IicrKFQ/IkZGIjoiIikrVDIoZC5yZ2IpKyciLz4nOlArIi8+In1m'@; put 'dW5jdGlvbiBNUyhkLF8pe2lmKCFkfHxudWxsPT1kLnJnYilyZXR1cm4gXztmb3IodmFyIG09KCIwMDAwMDAiK2QucmdiLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpLFQ9W20uc2xpY2UoMCwyKSxtLnNsaWNlKDIsNCksbS5zbGljZSg0LDYpXS5tYXAoZnVuY3Rpb24oc2Upe3JldHVybiBwYXJz'@; put 'ZUludChzZSwxNil9KSxQPTA7UDx3ZC5sZW5ndGg7KytQKXt2YXIgUT13ZFtQXTtpZihRWzBdPT1UWzBdJiZRWzFdPT1UWzFdJiZRWzJdPT1UWzJdKXJldHVybiBQfXJldHVybiB3ZC5sZW5ndGg8NjQ/KHdkLnB1c2goW1RbMF0sVFsxXSxUWzJdXSksd2QubGVuZ3RoLTEpOl99ZnVuY3Rpb24g'@; put 'S20oZCl7dmFyIF89WyIiLCIiLCIiXTtpZighZClyZXR1cm5bXTt2YXIgbT0iIixUPWQmJmQucz9mdW5jdGlvbiBwUShkKXt2YXIgXz1bIiIsIiJdO2lmKCFkKXJldHVybiBfO2lmKGQuc3omJihfWzBdKz0iJiIrZC5zeixfWzFdPSImMTIiK19bMV0pLGQubmFtZSYmKF9bMF0rPScmIicrZC5u'@; put 'YW1lKycsUmVndWxhciInLF9bMV09JyYiLSxSZWd1bGFyIicrX1sxXSksZC5ib2xkJiYoX1swXSs9IiZCIixfWzFdPSImQiIrX1sxXSksZC51bmRlcmxpbmUpe3ZhciBtPTI9PWQudW5kZXJsaW5lPyImRSI6IiZVIjtfWzBdKz1tLF9bMV09bStfWzFdfXJldHVybiBkLml0YWxpYyYmKF9bMF0r'@; put 'PSImSSIsX1sxXT0iJkkiK19bMV0pLGQuY29sb3ImJm51bGwhPWQuY29sb3IucmdiJiYoX1swXSs9IiZLIitUMihkLmNvbG9yLnJnYiksX1sxXSs9IiZLMDAwMDAwIiksZC5zdHJpa2UmJihfWzBdKz0iJlMiLF9bMV09IiZTIitfWzFdKSwic3VwZXIiPT1kLnZhbGlnbiYmKF9bMF0rPSImWCIs'@; put 'X1sxXT0iJlgiK19bMV0pLCJzdWIiPT1kLnZhbGlnbiYmKF9bMF0rPSImWSIsX1sxXT0iJlkiK19bMV0pLF99KGQucyk6WyIiLCIiXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQ/W2QsZCxkXTpudWxsIT1kLmZpcnN0fHxudWxsIT1kLmV2ZW58fG51bGwhPWQub2RkPyhudWxsIT1kLm9kZCYm'@; put 'KF9bMF09S20oZC5vZGQpWzBdKSx2b2lkIDA9PT1kLmZpcnN0JiZfWzBdJiYoX1sxXT1fWzBdKSxudWxsIT1kLmZpcnN0JiYoX1sxXT1LbShkLmZpcnN0KVswXSksbnVsbCE9ZC5ldmVuJiYoX1syXT1LbShkLmV2ZW4pWzBdKSxfKTpkLmxlZnR8fGQuY2VudGVyfHxkLnJpZ2h0PyhkLmxlZnQm'@; put 'JihtKz0iJkwiK0ttKGQubGVmdClbMF0pLGQuY2VudGVyJiYobSs9IiZDIitLbShkLmNlbnRlcilbMF0pLGQucmlnaHQmJihtKz0iJlIiK0ttKGQucmlnaHQpWzBdKSxbbSxtLG1dKTpudWxsIT1kLnY/W209VFswXStkLnYucmVwbGFjZSgvJi9nLCImJiIpK1RbMV0sbSxtXTpudWxsIT1kLnc/'@; put 'W209VFswXStkLncrVFsxXSxtLG1dOkFycmF5LmlzQXJyYXkoZC5SKT8oZC5SLmZvckVhY2goZnVuY3Rpb24oUCl7bSs9S20oUClbMF19KSxbbSxtLG1dKTpbXX12YXIgQTg9ezE6IkxldHRlciIsMzoiVGFibG9pZCIsNToiTGVnYWwiLDc6IkV4ZWN1dGl2ZSIsODoiQTMiLDk6IkE0IiwxMToi'@; put 'QTUiLDEyOiJCNCIsMTM6IkI1IiwxNDoiRm9saW8iLDIwOiJFbnZlbG9wZSIsMzc6Ik1vbmFyY2giLDcwOiJBNiJ9LG5vPWNlKEE4KTt1YS5DT05OPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2Nvbm5lY3Rpb25z'@; put 'Ijt2YXIgX1E9VnIoImV4dGVybmFsTGluayIsbnVsbCx7eG1sbnM6VWEubWFpblswXX0pO3VhLklNRz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9pbWFnZSIsdWEuRFJBVz0iaHR0cDovL3NjaGVtYXMub3Blbnht'@; put 'bGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kcmF3aW5nIjt2YXIgV0g9e3Q6InRvcCIsY3RyOiJjZW50ZXIiLGI6ImJvdHRvbSIsanVzdDoidG9wIixkaXN0OiJ0b3AifSxFeT17Y3RyOiJjZW50ZXIiLGRpc3Q6ImNlbnRlciIsanVzdDoiY2VudGVyIixq'@; put 'dXN0TG93OiJjZW50ZXIiLGw6ImxlZnQiLHI6InJpZ2h0Iix0aGFpRGlzdDoiY2VudGVyIn07ZnVuY3Rpb24gd1EoKXt2YXIgZD1bcG9dO3JldHVybiBkLnB1c2goJzx4ZHI6d3NEciB4bWxuczp4ZHI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9z'@; put 'cHJlYWRzaGVldERyYXdpbmciIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIi8+JyksZC5qb2luKCIiKX1mdW5jdGlvbiBDUShkKXt2YXIgbSxfPWRbIiFkYXRhIl07cmV0dXJuImJhc2U2NCI9PT1kWyIhZGF0YXR5cGUiXT8o'@; put 'KG09Xy5tYXRjaCgvXmRhdGE6LiosLykpJiYoXz1fLnNsaWNlKG1bMF0ubGVuZ3RoKSksQ2UuZGVjb2RlKF8pKTpffXVhLlRBQkxFPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RhYmxlIjt2YXIgU1E9LzwoPzpc'@; put 'dys6KT9zaGFwZSg/OlteXHddW14+XSopPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/c2hhcGU+L2c7ZnVuY3Rpb24geDIoZCxfLG0sVCl7dmFyIFA9WzIxNjAwLDIxNjAwXSxRPVsibTAsMGwwIixQWzFdLFBbMF0sUFsxXSxQWzBdLCIweGUiXS5qb2luKCIsIiksc2U9W1ZyKCJ4bWwiLG51bGws'@; put 'eyJ4bWxuczp2IjpWdV92LCJ4bWxuczpvIjpWdV9vLCJ4bWxuczp4IjpWdV94LCJ4bWxuczptdiI6Imh0dHA6Ly9tYWNWbWxTY2hlbWFVcmkifSkucmVwbGFjZSgvXC8+LywiPiIpLFZyKCJvOnNoYXBlbGF5b3V0IixWcigibzppZG1hcCIsbnVsbCx7InY6ZXh0IjoiZWRpdCJ9KSx7InY6ZXh0'@; put 'IjoiZWRpdCJ9KV0sb2U9MTAyNCpkLGRlPW18fFtdO2RlLmxlbmd0aD4wJiZzZS5wdXNoKFZyKCJ2OnNoYXBldHlwZSIsW1ZyKCJ2OnN0cm9rZSIsbnVsbCx7am9pbnN0eWxlOiJtaXRlciJ9KSxWcigidjpwYXRoIixudWxsLHtzaGFkb3dvazoiZiIsZXh0cnVzaW9ub2s6ImYiLHN0cm9rZW9r'@; put 'OiJmIixmaWxsb2s6ImYiLCJvOmNvbm5lY3R0eXBlIjoicmVjdCJ9KSxWcigibzpsb2NrIixudWxsLHsidjpleHQiOiJlZGl0IixzaGFwZXR5cGU6InQifSldLmpvaW4oIiIpLHtpZDoiX3gwMDAwX3QyMDEiLGNvb3Jkc2l6ZTpQLmpvaW4oIiwiKSwibzpzcHQiOjIwMSxwYXRoOlF9KSksZGUu'@; put 'Zm9yRWFjaChmdW5jdGlvbihOZSl7KytvZSxzZT1zZS5jb25jYXQoZnVuY3Rpb24gajAoZCxfKXt2YXIgbT17aWQ6Il94MDAwMF9zIitfLHR5cGU6IiNfeDAwMDBfdDIwMSIsc3R5bGU6Im1zby13cmFwLXN0eWxlOnRpZ2h0In07KCJSYWRpbyI9PWRbIiF0eXBlIl18fCJDaGVja2JveCI9PWRb'@; put 'IiF0eXBlIl18fCJMaXN0Ij09ZFsiIXR5cGUiXXx8IkRyb3AiPT1kWyIhdHlwZSJdKSYmKG0uc3Ryb2tlZD0iZiIpLCJMYWJlbCI9PWRbIiF0eXBlIl0mJihtLmZpbGxlZD0iZiIpO3ZhciBUPSIiO2QudCYmY2tbZFsiIXR5cGUiXV0mJihUPWNrW2RbIiF0eXBlIl1dLnJlcGxhY2UoLyMjIyMv'@; put 'LEJpKGQudCkpKTt2YXIgUD1bXTtyZXR1cm4gZC5tYWNybyYmUC5wdXNoKFVvKCJ4OkZtbGFNYWNybyIsZC5tYWNybykpLGQubGluayYmUC5wdXNoKFVvKCJ4OkZtbGFMaW5rIixkLmxpbmspKSxkLnZhbCYmUC5wdXNoKFVvKCJSYWRpbyI9PWRbIiF0eXBlIl18fCJDaGVja2JveCI9PWRbIiF0'@; put 'eXBlIl0/Ing6Q2hlY2tlZCI6Ing6VmFsIixTdHJpbmcoZC52YWwpKSksZC5yZWYmJlAucHVzaChVbygieDpGbWxhUmFuZ2UiLGQucmVmKSksZC5zZWwmJiJMaXN0Ij09ZFsiIXR5cGUiXSYmUC5wdXNoKFVvKCJ4OlNlbFR5cGUiLGQuc2VsKSksZC5taW4mJlAucHVzaChVbygieDpNaW4iLFN0'@; put 'cmluZyhkLm1pbikpKSxkLm1heCYmUC5wdXNoKFVvKCJ4Ok1heCIsU3RyaW5nKGQubWF4KSkpLGQuc3RlcCYmUC5wdXNoKFVvKCJ4OkluYyIsU3RyaW5nKGQuc3RlcCkpKSxkLnBhZ2UmJlAucHVzaChVbygieDpQYWdlIixTdHJpbmcoZC5wYWdlKSkpLFtdLmNvbmNhdChbIjx2OnNoYXBlIitm'@; put 'YShtKSsiPiJdKS5jb25jYXQodWtbZFsiIXR5cGUiXV18fFtdKS5jb25jYXQoW1RdKS5jb25jYXQoWyc8eDpDbGllbnREYXRhIE9iamVjdFR5cGU9IicrZFsiIXR5cGUiXSsnIj4nLFVvKCJ4OkFuY2hvciIsU1MoZFsiIXBvcyJdKSksVW8oIng6UHJpbnRPYmplY3QiLCJGYWxzZSIpXSkuY29u'@; put 'Y2F0KFApLmNvbmNhdChsa1tkWyIhdHlwZSJdXXx8W10pLmNvbmNhdChbIjwveDpDbGllbnREYXRhPiIsIjwvdjpzaGFwZT4iXSl9KE5lLG9lKSl9KTt2YXIgTGU9X3x8W107cmV0dXJuIExlLmxlbmd0aD4wJiZzZS5wdXNoKFZyKCJ2OnNoYXBldHlwZSIsW1ZyKCJ2OnN0cm9rZSIsbnVsbCx7'@; put 'am9pbnN0eWxlOiJtaXRlciJ9KSxWcigidjpwYXRoIixudWxsLHtncmFkaWVudHNoYXBlb2s6InQiLCJvOmNvbm5lY3R0eXBlIjoicmVjdCJ9KV0uam9pbigiIikse2lkOiJfeDAwMDBfdDIwMiIsY29vcmRzaXplOlAuam9pbigiLCIpLCJvOnNwdCI6MjAyLHBhdGg6UX0pKSxMZS5mb3JFYWNo'@; put 'KGZ1bmN0aW9uKE5lKXsrK29lLHNlPXNlLmNvbmNhdChmdW5jdGlvbiBUeShkLF8sbSl7dmFyIFQ9SXMoZFswXSksUD1kWzFdLmZpbGx8fHt9O2RbMV0ucyYmKFA9e3R5cGU6ZFsxXS5zLnBhdHRlcm5UeXBlfHwic29saWQifSxkWzFdLnMuZmdDb2xvciYmKFAuY29sb3IyPVAuY29sb3IxPSIj'@; put 'IitUMihkWzFdLnMuZmdDb2xvci5yZ2IpKSxkWzFdLnMuYmdDb2xvciYmKFAuY29sb3IyPSIjIitUMihkWzFdLnMuYmdDb2xvci5yZ2IpKSk7dmFyIFE9e2NvbG9yMjpQLmNvbG9yMnx8IiNCRUZGODIiLHR5cGU6UC50eXBlfHwiZ3JhZGllbnQifTsiZ3JhZGllbnQiPT1RLnR5cGUmJihRLmFu'@; put 'Z2xlPSItMTgwIik7dmFyIHNlPSJncmFkaWVudCI9PVEudHlwZT9WcigibzpmaWxsIixudWxsLHt0eXBlOiJncmFkaWVudFVuc2NhbGVkIiwidjpleHQiOiJ2aWV3In0pOm51bGwsb2U9VnIoInY6ZmlsbCIsc2UsUSksZGU9e307ZFsxXS5zaGFkb3cmJihkWzFdLnNoYWRvdy5jb2xvciYmKGRl'@; put 'LmNvbG9yPWRbMV0uc2hhZG93LmNvbG9yKSxkWzFdLnNoYWRvdy5vbiYmKGRlLm9uPWRbMV0uc2hhZG93Lm9uKSksZGUub2JzY3VyZWQ9InQiO3ZhciBMZT0hMCxOZT0hMCxCZT1kWzFdWyIhcG9zIl0/UXIoZFsxXVsiIXBvcyJdKTpudWxsO3JldHVybiBCZSYmKE5lPW51bGw9PUJlLlImJm51'@; put 'bGw9PUJlLkMmJm51bGw9PUJlLlgmJm51bGw9PUJlLlksTGU9IUJlLnImJiFCZS5jLHJrKEJlLDAsbSkpLFsiPHY6c2hhcGUiK2ZhKHtpZDoiX3gwMDAwX3MiK18sdHlwZToiI194MDAwMF90MjAyIixzdHlsZToicG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbi1sZWZ0OjgwcHQ7bWFyZ2luLXRv'@; put 'cDo1cHQ7d2lkdGg6MTA0cHQ7aGVpZ2h0OjY0cHQ7ei1pbmRleDoxMCIrKGRbMV0uaGlkZGVuPyI7dmlzaWJpbGl0eTpoaWRkZW4iOiIiKSxmaWxsY29sb3I6UC5jb2xvcjF8fCIjRUNGQUQ0IixzdHJva2Vjb2xvcjooZFsxXS5zdHJva2V8fHt9KS5jb2xvcnx8IiNlZGVhYTEifSkrIj4iLG9l'@; put 'LFZyKCJ2OnNoYWRvdyIsbnVsbCxkZSksVnIoInY6cGF0aCIsbnVsbCx7Im86Y29ubmVjdHR5cGUiOiJub25lIn0pLCc8djp0ZXh0Ym94PjxkaXYgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC9kaXY+PC92OnRleHRib3g+JywnPHg6Q2xpZW50RGF0YSBPYmplY3RUeXBlPSJOb3RlIj4nLExl'@; put 'PyI8eDpNb3ZlV2l0aENlbGxzLz4iOiIiLE5lPyI8eDpTaXplV2l0aENlbGxzLz4iOiIiLFVvKCJ4OkFuY2hvciIsQmU/U1MoQmUpOmRbMV0ucmF3YW5jaG9yfHxbVC5jKzEsMCxULnIrMSwwLFQuYyszLDIwLFQucis1LDIwXS5qb2luKCIsIikpLFVvKCJ4OkF1dG9GaWxsIiwiRmFsc2UiKSxV'@; put 'bygieDpSb3ciLFN0cmluZyhULnIpKSxVbygieDpDb2x1bW4iLFN0cmluZyhULmMpKSxkWzFdLmhpZGRlbj8iIjoiPHg6VmlzaWJsZS8+IiwiPC94OkNsaWVudERhdGE+IiwiPC92OnNoYXBlPiJdfShOZSxvZSxUKSl9KSxzZS5wdXNoKCI8L3htbD4iKSxzZS5qb2luKCIiKX12YXIgbGs9e0J1'@; put 'dHRvbjpbIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4OlRleHRIQWxpZ24+Q2VudGVyPC94OlRleHRIQWxpZ24+IiwiPHg6VGV4dFZBbGlnbj5DZW50ZXI8L3g6VGV4dFZBbGlnbj4iXSxHQm94OlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6'@; put 'QXV0b0ZpbGw+IiwiPHg6Tm9UaHJlZUQvPiJdLExhYmVsOlsiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6QXV0b0xpbmU+RmFsc2U8L3g6QXV0b0xpbmU+Il0sUmFkaW86WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvRmlsbD5GYWxzZTwveDpBdXRvRmlsbD4iLCI8'@; put 'eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpUZXh0VkFsaWduPkNlbnRlcjwveDpUZXh0VkFsaWduPiIsIjx4Ok5vVGhyZWVELz4iXSxDaGVja2JveDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4OkF1dG9MaW5lPkZh'@; put 'bHNlPC94OkF1dG9MaW5lPiIsIjx4OlRleHRWQWxpZ24+Q2VudGVyPC94OlRleHRWQWxpZ24+IiwiPHg6Tm9UaHJlZUQvPiJdLERyb3A6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpOb1RocmVlRDIvPiIsIjx4OlNlbFR5cGU+U2lu'@; put 'Z2xlPC94OlNlbFR5cGU+IiwiPHg6RHJvcFN0eWxlPkNvbWJvPC94OkRyb3BTdHlsZT4iLCI8eDpMQ1Q+Tm9ybWFsPC94OkxDVD4iLCI8eDpEcm9wTGluZXM+NDwveDpEcm9wTGluZXM+Il0sTGlzdDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5l'@; put 'PiIsIjx4Ok5vVGhyZWVEMi8+IiwiPHg6TENUPk5vcm1hbDwveDpMQ1Q+IiwiPHg6VmFsPjA8L3g6VmFsPiIsIjx4Ok1pbj4wPC94Ok1pbj4iLCI8eDpNYXg+NTwveDpNYXg+IiwiPHg6SW5jPjE8L3g6SW5jPiIsIjx4OlBhZ2U+NDwveDpQYWdlPiIsIjx4OkR4PjE1PC94OkR4PiJdLFNjcm9s'@; put 'bDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4Okhvcml6Lz4iLCI8eDpEeD4xNTwveDpEeD4iXSxTcGluOlsiPHg6RHg+MTU8L3g6RHg+Il19LGNrPXtCdXR0b246Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9'@; put 'J3RleHQtYWxpZ246Y2VudGVyJz48Zm9udCBmYWNlPSdDYWxpYnJpJyBzaXplPScyNDAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsR0JveDoiPHY6dGV4dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+'@; put 'PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsUmFkaW86Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0OmF1dG8nIG86'@; put 'c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+PGZvbnQgZmFjZT0nTHVjaWRhIEdyYW5kZScgc2l6ZT0nMjYwJyBjb2xvcj0nYXV0byc+IyMjIzwvZm9udD48L2Rpdj48L3Y6dGV4dGJveD4iLExhYmVsOiI8djp0ZXh0Ym94IHN0eWxlPSdtc28tZGlyZWN0aW9u'@; put 'LWFsdDphdXRvJyBvOnNpbmdsZWNsaWNrPSdmJz48ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPjxmb250IGZhY2U9J0x1Y2lkYSBHcmFuZGUnIHNpemU9JzI2MCcgY29sb3I9JyMwMDAwMDAnPiMjIyM8L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+IixDaGVja2JveDoiPHY6dGV4dGJveCBz'@; put 'dHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsc2hl'@; put 'ZXRqczoiZGFmdXEifSx1az17QnV0dG9uOlsnPHY6ZmlsbCBjb2xvcjI9IiNmMGYwZjAgWzY3XSIgbzpkZXRlY3Rtb3VzZWNsaWNrPSJ0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxHQm94OlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4n'@; put 'XSxEcm9wOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxMaXN0OlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxTcGluOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxT'@; put 'Y3JvbGw6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIgdGV4dD0idCIvPiddLExhYmVsOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxSYWRpbzpbJzx2OnBhdGggc2hhZG93b2s9InQiIHN0cm9rZW9rPSJ0IiBmaWxsb2s9InQiLz4nLCc8bzpsb2Nr'@; put 'IHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIvPiddLENoZWNrYm94OlsnPHY6cGF0aCBzaGFkb3dvaz0idCIgc3Ryb2tlb2s9InQiIGZpbGxvaz0idCIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10sc2hlZXRqczpbXX07ZnVuY3Rpb24gWUgoZCxfLG0sVCl7dmFy'@; put 'IFA9eyIhaWQiOnt9fSxRPVtWcigieG1sIixudWxsLHsieG1sbnM6diI6VnVfdiwieG1sbnM6byI6VnVfbywieG1sbnM6eCI6VnVfeH0pLnJlcGxhY2UoL1wvPi8sIj4iKSxWcigibzpzaGFwZWxheW91dCIsVnIoIm86aWRtYXAiLG51bGwseyJ2OmV4dCI6ImVkaXQiLGRhdGE6MX0pLHsidjpl'@; put 'eHQiOiJlZGl0In0pLCc8djpzaGFwZXR5cGUgaWQ9Il94MDAwMF90NzUiIGNvb3Jkc2l6ZT0iMjE2MDAsMjE2MDAiIG86c3B0PSI3NSIgbzpwcmVmZXJyZWxhdGl2ZT0idCIgcGF0aD0ibUA0QDVsQDRAMTFAOUAxMUA5QDV4ZSIgZmlsbGVkPSJmIiBzdHJva2VkPSJmIj4nLCc8djpzdHJva2Ug'@; put 'am9pbnN0eWxlPSJtaXRlciIvPicsIjx2OmZvcm11bGFzPiIsJzx2OmYgZXFuPSJpZiBsaW5lRHJhd24gcGl4ZWxMaW5lV2lkdGggMCIvPicsJzx2OmYgZXFuPSJzdW0gQDAgMSAwIi8+JywnPHY6ZiBlcW49InN1bSAwIDAgQDEiLz4nLCc8djpmIGVxbj0icHJvZCBAMiAxIDIiLz4nLCc8djpm'@; put 'IGVxbj0icHJvZCBAMyAyMTYwMCBwaXhlbFdpZHRoIi8+JywnPHY6ZiBlcW49InByb2QgQDMgMjE2MDAgcGl4ZWxIZWlnaHQiLz4nLCc8djpmIGVxbj0ic3VtIEAwIDAgMSIvPicsJzx2OmYgZXFuPSJwcm9kIEA2IDEgMiIvPicsJzx2OmYgZXFuPSJwcm9kIEA3IDIxNjAwIHBpeGVsV2lkdGgi'@; put 'Lz4nLCc8djpmIGVxbj0ic3VtIEA4IDIxNjAwIDAiLz4nLCc8djpmIGVxbj0icHJvZCBANyAyMTYwMCBwaXhlbEhlaWdodCIvPicsJzx2OmYgZXFuPSJzdW0gQDEwIDIxNjAwIDAiLz4nLCI8L3Y6Zm9ybXVsYXM+IiwnPHY6cGF0aCBvOmV4dHJ1c2lvbm9rPSJmIiBncmFkaWVudHNoYXBlb2s9'@; put 'InQiIG86Y29ubmVjdHR5cGU9InJlY3QiLz4nLCc8bzpsb2NrIHY6ZXh0PSJlZGl0IiBhc3BlY3RyYXRpbz0idCIvPicsIjwvdjpzaGFwZXR5cGU+Il0sc2U9MTtbImhlYWRlciIsImZvb3RlciJdLmZvckVhY2goZnVuY3Rpb24ob2Upe1Rbb2VdJiZbIm9kZCIsImV2ZW4iLCJmaXJzdCJdLmZv'@; put 'ckVhY2goZnVuY3Rpb24oZGUpe1Rbb2VdW2RlXSYmWyJsZWZ0IiwicmlnaHQiLCJjZW50ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKExlKXtpZihBcnJheS5pc0FycmF5KFRbb2VdW2RlXVtMZV0pKWZvcih2YXIgTmU9MDtOZTxUW29lXVtkZV1bTGVdLmxlbmd0aDsrK05lKWlmKFRbb2VdW2RlXVtM'@; put 'ZV1bTmVdKXt2YXIgQmU9VFtvZV1bZGVdW0xlXVtOZV07aWYoInJlbW90ZSI9PUJlWyIhZGF0YXR5cGUiXSl0aHJvdyJDYW5ub3QgdXNlIGxpbmtlZCBpbWFnZSBpbiBoZWFkZXIgb3IgZm9vdGVyIjtmb3IoO01pKGQsInhsL21lZGlhL2ltYWdlIitzZSsiLmpwZyIpOykrK3NlO2QuZmlsZSgi'@; put 'eGwvbWVkaWEvaW1hZ2UiK3NlKyIuanBnIixDUShCZSkse2JpbmFyeTohMH0pLGFpKFAsLTEsIi4uL21lZGlhL2ltYWdlIitzZSsiLmpwZyIsdWEuSU1HKTt2YXIgWmU9Il94MDAwMF9zIisoMTAyNStCZS5fY250KSxudD0icG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6MDttYXJnaW4t'@; put 'dG9wOjA7ei1pbmRleDoiKyhCZS5fY250KzEpKyI7IjtudCs9IndpZHRoOiIrQmVbIiFwb3MiXS53KyJweDsiLG50Kz0iaGVpZ2h0OiIrQmVbIiFwb3MiXS5oKyJweDsiO3ZhciBtdD1MZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStvZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsib2RkIiE9'@; put 'PWRlJiYobXQrPWRlLnRvVXBwZXJDYXNlKCkpLFRbb2VdW2RlXVtMZV0ubGVuZ3RoPjEmJihtdCs9TmUpLFEucHVzaChWcigidjpzaGFwZSIsWyc8djppbWFnZWRhdGEgbzpyZWxpZD0icklkJysoQmUuX2NudCsxKSsnIiBvOnRpdGxlPSJzaGVldGpzIi8+JywnPG86bG9jayB2OmV4dD0iZWRp'@; put 'dCIgcm90YXRpb249InQiLz4nXS5qb2luKCIiKSx7aWQ6bXQsIm86c3BpZCI6WmUsdHlwZToiI194MDAwMF90NzUiLHN0eWxlOm50fSkpfX0pfSl9KSxRLnB1c2goIjwveG1sPiIpLGQuZmlsZSgieGwvZHJhd2luZ3Mvdm1sRHJhd2luZyIrbSsiSEYudm1sIixRLmpvaW4oIiIpKSxkLmZpbGUo'@; put 'InhsL2RyYXdpbmdzL19yZWxzL3ZtbERyYXdpbmciK20rIkhGLnZtbC5yZWxzIixDMihQKSl9dWEuQ01OVD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jb21tZW50cyI7dmFyIEdIPVZyKCJjb21tZW50cyIsbnVs'@; put 'bCx7eG1sbnM6VWEubWFpblswXX0pO2Z1bmN0aW9uIFRRKGQpe3ZhciBfPVtwbyxHSF0sbT1bXTtyZXR1cm4gXy5wdXNoKCI8YXV0aG9ycz4iKSxkLmZvckVhY2goZnVuY3Rpb24oVCl7VFsxXS5mb3JFYWNoKGZ1bmN0aW9uKFApe3ZhciBRPUJpKFAuYSk7bS5pbmRleE9mKFEpPi0xfHwobS5w'@; put 'dXNoKFEpLF8ucHVzaCgiPGF1dGhvcj4iK1ErIjwvYXV0aG9yPiIpKX0pfSksXy5wdXNoKCI8L2F1dGhvcnM+IiksXy5wdXNoKCI8Y29tbWVudExpc3Q+IiksZC5mb3JFYWNoKGZ1bmN0aW9uKFQpe1RbMV0uZm9yRWFjaChmdW5jdGlvbihQKXtfLnB1c2goJzxjb21tZW50IHJlZj0iJytUWzBd'@; put 'KyciIGF1dGhvcklkPSInK20uaW5kZXhPZihCaShQLmEpKSsnIj48dGV4dD4nKSxfLnB1c2goUC5SP005KFAuUik6VW8oInQiLG51bGw9PVAudD8iIjpCaShQLnQpKSksXy5wdXNoKCI8L3RleHQ+PC9jb21tZW50PiIpfSl9KSxfLnB1c2goIjwvY29tbWVudExpc3Q+IiksXy5sZW5ndGg+MiYm'@; put 'KF9bXy5sZW5ndGhdPSI8L2NvbW1lbnRzPiIsX1sxXT1fWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxfLmpvaW4oIiIpfXZhciBxSD1paTtmdW5jdGlvbiBSUShkKXt2YXIgXz1NYygpLG09W107cmV0dXJuIElpKF8sIkJydEJlZ2luQ29tbWVudHMiKSxJaShfLCJCcnRCZWdpbkNvbW1lbnRBdXRo'@; put 'b3JzIiksZC5mb3JFYWNoKGZ1bmN0aW9uKFQpe1RbMV0uZm9yRWFjaChmdW5jdGlvbihQKXttLmluZGV4T2YoUC5hKT4tMXx8KG0ucHVzaChQLmEuc2xpY2UoMCw1NCkpLElpKF8sIkJydENvbW1lbnRBdXRob3IiLGZ1bmN0aW9uIEFRKGQpe3JldHVybiBraShkLnNsaWNlKDAsNTQpKX0oUC5h'@; put 'KSkpfSl9KSxJaShfLCJCcnRFbmRDb21tZW50QXV0aG9ycyIpLElpKF8sIkJydEJlZ2luQ29tbWVudExpc3QiKSxkLmZvckVhY2goZnVuY3Rpb24oVCl7VFsxXS5mb3JFYWNoKGZ1bmN0aW9uKFApe1AuaWF1dGhvcj1tLmluZGV4T2YoUC5hKTt2YXIgUT17czpJcyhUWzBdKSxlOklzKFRbMF0p'@; put 'fTtJaShfLCJCcnRCZWdpbkNvbW1lbnQiLGZ1bmN0aW9uIHhRKGQsXyl7cmV0dXJuIG51bGw9PV8mJihfPUZyKDM2KSksXy53cml0ZV9zaGlmdCg0LGRbMV0uaWF1dGhvciksQmQoZFswXSxfKSxfLndyaXRlX3NoaWZ0KDQsMCksXy53cml0ZV9zaGlmdCg0LDApLF8ud3JpdGVfc2hpZnQoNCww'@; put 'KSxfLndyaXRlX3NoaWZ0KDQsMCksX30oW1EsUF0pKSxQLnQmJlAudC5sZW5ndGg+MCYmSWkoXywiQnJ0Q29tbWVudFRleHQiLGZ1bmN0aW9uIGNvKGQsXyl7dmFyIG09ITE7cmV0dXJuIG51bGw9PV8mJihtPSEwLF89RnIoMjMrNCpkLnQubGVuZ3RoKSksXy53cml0ZV9zaGlmdCgxLDEpLGtp'@; put 'KGQudCxfKSxfLndyaXRlX3NoaWZ0KDQsMSksZnVuY3Rpb24gTmEoZCxfKXtffHwoXz1Gcig0KSksXy53cml0ZV9zaGlmdCgyLGQuaWNofHwwKSxfLndyaXRlX3NoaWZ0KDIsZC5pZm50fHwwKX0oe2ljaDowLGlmbnQ6MH0sXyksbT9fLnNsaWNlKDAsXy5sKTpffShQKSksSWkoXywiQnJ0RW5k'@; put 'Q29tbWVudCIpLGRlbGV0ZSBQLmlhdXRob3J9KX0pLElpKF8sIkJydEVuZENvbW1lbnRMaXN0IiksSWkoXywiQnJ0RW5kQ29tbWVudHMiKSxfLmVuZCgpfXZhciBRSD1bInhsc2IiLCJ4bHNtIiwieGxhbSIsImJpZmY4IiwieGxhIl07dWEuRFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3Jt'@; put 'YXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZGlhbG9nc2hlZXQiLHVhLk1TPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxNYWNyb3NoZWV0Ijt2YXIgUjg9ZnVuY3Rpb24oKXt2YXIgZD0vKF58W15BLVph'@; put 'LXpfXSlSKFxbPy0/XGQrXF18WzEtOV1cZCp8KUMoXFs/LT9cZCtcXXxbMS05XVxkKnwpKD8hW0EtWmEtejAtOV9dKS9nLF89e3I6MCxjOjB9O2Z1bmN0aW9uIG0oVCxQLFEsc2Upe3ZhciBvZT0hMSxkZT0hMTswPT1RLmxlbmd0aD9kZT0hMDoiWyI9PVEuY2hhckF0KDApJiYoZGU9ITAsUT1R'@; put 'LnNsaWNlKDEsLTEpKSwwPT1zZS5sZW5ndGg/b2U9ITA6IlsiPT1zZS5jaGFyQXQoMCkmJihvZT0hMCxzZT1zZS5zbGljZSgxLC0xKSk7dmFyIExlPVEubGVuZ3RoPjA/MHxwYXJzZUludChRLDEwKTowLE5lPXNlLmxlbmd0aD4wPzB8cGFyc2VJbnQoc2UsMTApOjA7cmV0dXJuIG9lP05lKz1f'@; put 'LmM6LS1OZSxkZT9MZSs9Xy5yOi0tTGUsUCsob2U/IiI6IiQiKSttcyhOZSkrKGRlPyIiOiIkIikrem8oTGUpfXJldHVybiBmdW5jdGlvbihQLFEpe3JldHVybiBfPVEsUC5yZXBsYWNlKGQsbSl9fSgpLGRrPS8oXnxbXi5fQS1aMC05XSkoWyRdPykoW0EtWl17MSwyfXxbQS1XXVtBLVpdezJ9'@; put 'fFhbQS1FXVtBLVpdfFhGW0EtRF0pKFskXT8pKDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pKD8hW18uXChBLVphLXowLTldKS9nLGhrPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKF8sbSl7'@; put 'cmV0dXJuIF8ucmVwbGFjZShkayxmdW5jdGlvbihULFAsUSxzZSxvZSxkZSl7dmFyIExlPVRjKHNlKS0oUT8wOm0uYyksTmU9aWEoZGUpLShvZT8wOm0ucik7cmV0dXJuIFArIlIiKygwPT1OZT8iIjpvZT9OZSsxOiJbIitOZSsiXSIpKyJDIisoMD09TGU/IiI6UT9MZSsxOiJbIitMZSsiXSIp'@; put 'fSl9fSgpO2Z1bmN0aW9uIG5WKGQsXyl7cmV0dXJuIGQucmVwbGFjZShkayxmdW5jdGlvbihtLFQsUCxRLHNlLG9lKXtyZXR1cm4gVCsoIiQiPT1QP1ArUTptcyhUYyhRKStfLmMpKSsoIiQiPT1zZT9zZStvZTp6byhpYShvZSkrXy5yKSl9KS5yZXBsYWNlKC8oXGQrKTooXGQrKS9nLGZ1bmN0'@; put 'aW9uKG0sVCxQKXtyZXR1cm4gem8oaWEoVCkrXy5yKSsiOiIrem8oaWEoUCkrXy5yKX0pfWZ1bmN0aW9uIERRKGQsXyxtKXt2YXIgUD16YShfKS5zLFE9SXMobSk7cmV0dXJuIG5WKGQse3I6US5yLVAucixjOlEuYy1QLmN9KX1mdW5jdGlvbiByVihkKXtyZXR1cm4gZC5yZXBsYWNlKC9feGxm'@; put 'blwuL2csIiIpfWZ1bmN0aW9uIGFoKGQpe2QubCs9MX1mdW5jdGlvbiBDNShkLF8pe3ZhciBtPWQucmVhZF9zaGlmdCgxPT1fPzE6Mik7cmV0dXJuWzE2MzgzJm0sbT4+MTQmMSxtPj4xNSYxXX1mdW5jdGlvbiBmayhkLF8sbSl7dmFyIFQ9MjtpZihtKXtpZihtLmJpZmY+PTImJm0uYmlmZjw9'@; put 'NSlyZXR1cm4gaVYoZCk7MTI9PW0uYmlmZiYmKFQ9NCl9dmFyIFA9ZC5yZWFkX3NoaWZ0KFQpLFE9ZC5yZWFkX3NoaWZ0KFQpLHNlPUM1KGQsMiksb2U9QzUoZCwyKTtyZXR1cm57czp7cjpQLGM6c2VbMF0sY1JlbDpzZVsxXSxyUmVsOnNlWzJdfSxlOntyOlEsYzpvZVswXSxjUmVsOm9lWzFd'@; put 'LHJSZWw6b2VbMl19fX1mdW5jdGlvbiBpVihkKXt2YXIgXz1DNShkLDIpLG09QzUoZCwyKSxUPWQucmVhZF9zaGlmdCgxKSxQPWQucmVhZF9zaGlmdCgxKTtyZXR1cm57czp7cjpfWzBdLGM6VCxjUmVsOl9bMV0sclJlbDpfWzJdfSxlOntyOm1bMF0sYzpQLGNSZWw6bVsxXSxyUmVsOm1bMl19'@; put 'fX1mdW5jdGlvbiBvVihkLF8sbSl7aWYobSYmbS5iaWZmPj0yJiZtLmJpZmY8PTUpcmV0dXJuIGZ1bmN0aW9uIGFWKGQpe3ZhciBfPUM1KGQsMiksbT1kLnJlYWRfc2hpZnQoMSk7cmV0dXJue3I6X1swXSxjOm0sY1JlbDpfWzFdLHJSZWw6X1syXX19KGQpO3ZhciBUPWQucmVhZF9zaGlmdCht'@; put 'JiYxMj09bS5iaWZmPzQ6MiksUD1DNShkLDIpO3JldHVybntyOlQsYzpQWzBdLGNSZWw6UFsxXSxyUmVsOlBbMl19fWZ1bmN0aW9uIHBrKGQpe3ZhciBfPWQucmVhZF9zaGlmdCgyKSxtPWQucmVhZF9zaGlmdCgyKTtyZXR1cm57cjpfLGM6MjU1Jm0sZlF1b3RlZDohISgxNjM4NCZtKSxjUmVs'@; put 'Om0+PjE1LHJSZWw6bT4+MTV9fWZ1bmN0aW9uIGdrKGQpe3JldHVybltkLnJlYWRfc2hpZnQoMSksZC5yZWFkX3NoaWZ0KDEpXX1mdW5jdGlvbiB6UShkLF8pe3ZhciBtPVtkLnJlYWRfc2hpZnQoMSldO2lmKDEyPT1fKXN3aXRjaChtWzBdKXtjYXNlIDI6bVswXT00O2JyZWFrO2Nhc2UgNDpt'@; put 'WzBdPTE2O2JyZWFrO2Nhc2UgMDptWzBdPTE7YnJlYWs7Y2FzZSAxOm1bMF09Mn1zd2l0Y2gobVswXSl7Y2FzZSA0Om1bMV09eGEoZCwxKT8iVFJVRSI6IkZBTFNFIiwxMiE9XyYmKGQubCs9Nyk7YnJlYWs7Y2FzZSAzNzpjYXNlIDE2Om1bMV09bmxbZFtkLmxdXSxkLmwrPTEyPT1fPzQ6ODti'@; put 'cmVhaztjYXNlIDA6ZC5sKz04O2JyZWFrO2Nhc2UgMTptWzFdPXFzKGQpO2JyZWFrO2Nhc2UgMjptWzFdPUVuKGQsMCx7YmlmZjpfPjAmJl88OD8yOl99KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIFNlckFyOiAiK21bMF0pfXJldHVybiBtfWZ1bmN0aW9uIHZWKGQsXyxt'@; put 'KXtmb3IodmFyIFQ9ZC5yZWFkX3NoaWZ0KDEyPT1tLmJpZmY/NDoyKSxQPVtdLFE9MDtRIT1UOysrUSlQLnB1c2goKDEyPT1tLmJpZmY/anU6b2QpKGQsOCkpO3JldHVybiBQfWZ1bmN0aW9uIGc1ZShkLF8sbSl7dmFyIFQ9MCxQPTA7MTI9PW0uYmlmZj8oVD1kLnJlYWRfc2hpZnQoNCksUD1k'@; put 'LnJlYWRfc2hpZnQoNCkpOihQPTErZC5yZWFkX3NoaWZ0KDEpLFQ9MStkLnJlYWRfc2hpZnQoMikpLG0uYmlmZj49MiYmbS5iaWZmPDgmJigtLVQsMD09LS1QJiYoUD0yNTYpKTtmb3IodmFyIFE9MCxzZT1bXTtRIT1UJiYoc2VbUV09W10pOysrUSlmb3IodmFyIG9lPTA7b2UhPVA7KytvZSlz'@; put 'ZVtRXVtvZV09elEoZCxtLmJpZmYpO3JldHVybiBzZX1mdW5jdGlvbiBJOChkLF8sbSl7cmV0dXJuIGQubCs9MixbcGsoZCldfWZ1bmN0aW9uIEU1KGQpe3JldHVybiBkLmwrPTYsW119dmFyIEFTPUk4LGtTPUU1LEY5PUU1LHdrPUk4O2Z1bmN0aW9uIFJTKGQpe3JldHVybiBkLmwrPTIsW2lk'@; put 'KGQpLDEmZC5yZWFkX3NoaWZ0KDIpXX12YXIgeVY9STgsYlY9UlMscVE9RTUsS1E9STgsQ2s9STgsXzVlPVsiRGF0YSIsIkFsbCIsIkhlYWRlcnMiLCI/PyIsIj9EYXRhMiIsIj8/IiwiP0RhdGFIZWFkZXJzIiwiPz8iLCJUb3RhbHMiLCI/PyIsIj8/IiwiPz8iLCI/RGF0YVRvdGFscyIsIj8/'@; put 'IiwiPz8iLCI/PyIsIj9DdXJyZW50Il0sd1Y9ezE6e246IlB0Z0V4cCIsZjpmdW5jdGlvbiBqUShkLF8sbSl7cmV0dXJuIGQubCsrLG0mJjEyPT1tLmJpZmY/W2QucmVhZF9zaGlmdCg0LCJpIiksMF06W2QucmVhZF9zaGlmdCgyKSxkLnJlYWRfc2hpZnQobSYmMj09bS5iaWZmPzE6MildfX0s'@; put 'Mjp7bjoiUHRnVGJsIixmOkVjfSwzOntuOiJQdGdBZGQiLGY6YWh9LDQ6e246IlB0Z1N1YiIsZjphaH0sNTp7bjoiUHRnTXVsIixmOmFofSw2OntuOiJQdGdEaXYiLGY6YWh9LDc6e246IlB0Z1Bvd2VyIixmOmFofSw4OntuOiJQdGdDb25jYXQiLGY6YWh9LDk6e246IlB0Z0x0IixmOmFofSwx'@; put 'MDp7bjoiUHRnTGUiLGY6YWh9LDExOntuOiJQdGdFcSIsZjphaH0sMTI6e246IlB0Z0dlIixmOmFofSwxMzp7bjoiUHRnR3QiLGY6YWh9LDE0OntuOiJQdGdOZSIsZjphaH0sMTU6e246IlB0Z0lzZWN0IixmOmFofSwxNjp7bjoiUHRnVW5pb24iLGY6YWh9LDE3OntuOiJQdGdSYW5nZSIsZjph'@; put 'aH0sMTg6e246IlB0Z1VwbHVzIixmOmFofSwxOTp7bjoiUHRnVW1pbnVzIixmOmFofSwyMDp7bjoiUHRnUGVyY2VudCIsZjphaH0sMjE6e246IlB0Z1BhcmVuIixmOmFofSwyMjp7bjoiUHRnTWlzc0FyZyIsZjphaH0sMjM6e246IlB0Z1N0ciIsZjpmdW5jdGlvbiBtVihkLF8sbSl7cmV0dXJu'@; put 'IGQubCsrLGJlKGQsMCxtKX19LDI2OntuOiJQdGdTaGVldCIsZjpmdW5jdGlvbiBiNWUoZCxfLG0pe3JldHVybiBkLmwrPTUsZC5sKz0yLGQubCs9Mj09bS5iaWZmPzE6NCxbIlBUR1NIRUVUIl19fSwyNzp7bjoiUHRnRW5kU2hlZXQiLGY6ZnVuY3Rpb24gUVEoZCxfLG0pe3JldHVybiBkLmwr'@; put 'PTI9PW0uYmlmZj80OjUsWyJQVEdFTkRTSEVFVCJdfX0sMjg6e246IlB0Z0VyciIsZjpmdW5jdGlvbiBmVihkKXtyZXR1cm4gZC5sKyssbmxbZC5yZWFkX3NoaWZ0KDEpXX19LDI5OntuOiJQdGdCb29sIixmOmZ1bmN0aW9uIFVRKGQpe3JldHVybiBkLmwrKywwIT09ZC5yZWFkX3NoaWZ0KDEp'@; put 'fX0sMzA6e246IlB0Z0ludCIsZjpmdW5jdGlvbiBwVihkKXtyZXR1cm4gZC5sKyssZC5yZWFkX3NoaWZ0KDIpfX0sMzE6e246IlB0Z051bSIsZjpmdW5jdGlvbiBnVihkKXtyZXR1cm4gZC5sKysscXMoZCl9fSwzMjp7bjoiUHRnQXJyYXkiLGY6ZnVuY3Rpb24gbFYoZCxfLG0pe3ZhciBUPSg5'@; put 'NiZkW2QubCsrXSk+PjU7cmV0dXJuIGQubCs9Mj09bS5iaWZmPzY6MTI9PW0uYmlmZj8xNDo3LFtUXX19LDMzOntuOiJQdGdGdW5jIixmOmZ1bmN0aW9uIEJRKGQsXyxtKXt2YXIgVD0oOTYmZFtkLmxdKT4+NTtkLmwrPTE7dmFyIFA9ZC5yZWFkX3NoaWZ0KG0mJm0uYmlmZjw9Mz8xOjIpO3Jl'@; put 'dHVybltBNWVbUF0sb0pbUF0sVF19fSwzNDp7bjoiUHRnRnVuY1ZhciIsZjpmdW5jdGlvbiB5ayhkLF8sbSl7dmFyIFQ9ZFtkLmwrK10sUD1kLnJlYWRfc2hpZnQoMSksUT1tJiZtLmJpZmY8PTM/Wzg4PT1UPy0xOjAsZC5yZWFkX3NoaWZ0KDEpXTpmdW5jdGlvbiBoVihkKXtyZXR1cm5bZFtk'@; put 'LmwrMV0+PjcsMzI3NjcmZC5yZWFkX3NoaWZ0KDIpXX0oZCk7cmV0dXJuW1AsKDA9PT1RWzBdP29KOlJrKVtRWzFdXV19fSwzNTp7bjoiUHRnTmFtZSIsZjpmdW5jdGlvbiBfVihkLF8sbSl7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDEpPj4+NSYzLFE9ZC5yZWFkX3NoaWZ0KCFtfHxtLmJpZmY+PTg/'@; put 'NDoyKTtzd2l0Y2gobS5iaWZmKXtjYXNlIDI6ZC5sKz01O2JyZWFrO2Nhc2UgMzpjYXNlIDQ6ZC5sKz04O2JyZWFrO2Nhc2UgNTpkLmwrPTEyfXJldHVybltULDAsUV19fSwzNjp7bjoiUHRnUmVmIixmOmZ1bmN0aW9uIF9rKGQsXyxtKXt2YXIgVD0oOTYmZFtkLmxdKT4+NTtyZXR1cm4gZC5s'@; put 'Kz0xLFtULG9WKGQsMCxtKV19fSwzNzp7bjoiUHRnQXJlYSIsZjpmdW5jdGlvbiBMOShkLF8sbSl7cmV0dXJuWyg5NiZkW2QubCsrXSk+PjUsZmsoZCwwLG0pXX19LDM4OntuOiJQdGdNZW1BcmVhIixmOmZ1bmN0aW9uIG01ZShkLF8sbSl7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDEpPj4+NSYzO3Jl'@; put 'dHVybiBkLmwrPW0mJjI9PW0uYmlmZj8zOjQsW1QsZC5yZWFkX3NoaWZ0KG0mJjI9PW0uYmlmZj8xOjIpXX19LDM5OntuOiJQdGdNZW1FcnIiLGY6RWN9LDQwOntuOiJQdGdNZW1Ob01lbSIsZjpFY30sNDE6e246IlB0Z01lbUZ1bmMiLGY6ZnVuY3Rpb24gdjVlKGQsXyxtKXtyZXR1cm5bZC5y'@; put 'ZWFkX3NoaWZ0KDEpPj4+NSYzLGQucmVhZF9zaGlmdChtJiYyPT1tLmJpZmY/MToyKV19fSw0Mjp7bjoiUHRnUmVmRXJyIixmOmZ1bmN0aW9uIFpRKGQsXyxtKXt2YXIgVD1kLnJlYWRfc2hpZnQoMSk+Pj41JjM7cmV0dXJuIGQubCs9NCxtLmJpZmY8OCYmZC5sLS0sMTI9PW0uYmlmZiYmKGQu'@; put 'bCs9MiksW1RdfX0sNDM6e246IlB0Z0FyZWFFcnIiLGY6ZnVuY3Rpb24gc1YoZCxfLG0pe3ZhciBUPSg5NiZkW2QubCsrXSk+PjU7cmV0dXJuIGQubCs9bSYmbS5iaWZmPjg/MTI6bS5iaWZmPDg/Njo4LFtUXX19LDQ0OntuOiJQdGdSZWZOIixmOmZ1bmN0aW9uIHVWKGQsXyxtKXt2YXIgVD0o'@; put 'OTYmZFtkLmxdKT4+NTtkLmwrPTE7dmFyIFA9ZnVuY3Rpb24gTlEoZCxfLG0pe3ZhciBUPW0mJm0uYmlmZj9tLmJpZmY6ODtpZihUPj0yJiZUPD01KXJldHVybiBmdW5jdGlvbiBTNShkKXt2YXIgXz1kLnJlYWRfc2hpZnQoMiksbT1kLnJlYWRfc2hpZnQoMSksVD0oMzI3NjgmXyk+PjE1LFA9'@; put 'KDE2Mzg0Jl8pPj4xNDtyZXR1cm4gXyY9MTYzODMsMT09VCYmXz49ODE5MiYmKF8tPTE2Mzg0KSwxPT1QJiZtPj0xMjgmJihtLT0yNTYpLHtyOl8sYzptLGNSZWw6UCxyUmVsOlR9fShkKTt2YXIgUD1kLnJlYWRfc2hpZnQoVD49MTI/NDoyKSxRPWQucmVhZF9zaGlmdCgyKSxzZT0oMTYzODQm'@; put 'USk+PjE0LG9lPSgzMjc2OCZRKT4+MTU7aWYoUSY9MTYzODMsMT09b2UpZm9yKDtQPjUyNDI4NzspUC09MTA0ODU3NjtpZigxPT1zZSlmb3IoO1E+ODE5MTspUS09MTYzODQ7cmV0dXJue3I6UCxjOlEsY1JlbDpzZSxyUmVsOm9lfX0oZCwwLG0pO3JldHVybltULFBdfX0sNDU6e246IlB0Z0Fy'@; put 'ZWFOIixmOmZ1bmN0aW9uIGY1ZShkLF8sbSl7dmFyIFQ9KDk2JmRbZC5sKytdKT4+NSxQPWZ1bmN0aW9uIE9RKGQsXyxtKXtpZihtLmJpZmY8OClyZXR1cm4gaVYoZCk7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDEyPT1tLmJpZmY/NDoyKSxQPWQucmVhZF9zaGlmdCgxMj09bS5iaWZmPzQ6MiksUT1D'@; put 'NShkLDIpLHNlPUM1KGQsMik7cmV0dXJue3M6e3I6VCxjOlFbMF0sY1JlbDpRWzFdLHJSZWw6UVsyXX0sZTp7cjpQLGM6c2VbMF0sY1JlbDpzZVsxXSxyUmVsOnNlWzJdfX19KGQsMCxtKTtyZXR1cm5bVCxQXX19LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpmdW5jdGlvbiB3NWUoZCl7cmV0dXJu'@; put 'W2QucmVhZF9zaGlmdCgxKT4+PjUmMyxkLnJlYWRfc2hpZnQoMildfX0sNDc6e246IlB0Z01lbU5vTWVtTiIsZjpmdW5jdGlvbiBDNWUoZCl7cmV0dXJuW2QucmVhZF9zaGlmdCgxKT4+PjUmMyxkLnJlYWRfc2hpZnQoMildfX0sNTc6e246IlB0Z05hbWVYIixmOmZ1bmN0aW9uIFdRKGQsXyxt'@; put 'KXtyZXR1cm4gNT09bS5iaWZmP2Z1bmN0aW9uIFlRKGQpe3ZhciBfPWQucmVhZF9zaGlmdCgxKT4+PjUmMyxtPWQucmVhZF9zaGlmdCgyLCJpIik7ZC5sKz04O3ZhciBUPWQucmVhZF9zaGlmdCgyKTtyZXR1cm4gZC5sKz0xMixbXyxtLFRdfShkKTpbZC5yZWFkX3NoaWZ0KDEpPj4+NSYzLGQu'@; put 'cmVhZF9zaGlmdCgyKSxkLnJlYWRfc2hpZnQoNCldfX0sNTg6e246IlB0Z1JlZjNkIixmOmZ1bmN0aW9uIGRWKGQsXyxtKXt2YXIgVD0oOTYmZFtkLmxdKT4+NTtkLmwrPTE7dmFyIFA9ZC5yZWFkX3NoaWZ0KDIpO3JldHVybiBtJiY1PT1tLmJpZmYmJihkLmwrPTEyKSxbVCxQLG9WKGQsMCxt'@; put 'KV19fSw1OTp7bjoiUHRnQXJlYTNkIixmOmZ1bmN0aW9uIEZRKGQsXyxtKXt2YXIgVD0oOTYmZFtkLmwrK10pPj41LFA9ZC5yZWFkX3NoaWZ0KDIsImkiKTtpZihtJiY1PT09bS5iaWZmKWQubCs9MTI7cmV0dXJuW1QsUCxmayhkLDAsbSldfX0sNjA6e246IlB0Z1JlZkVycjNkIixmOmZ1bmN0'@; put 'aW9uIEdRKGQsXyxtKXt2YXIgVD0oOTYmZFtkLmwrK10pPj41LFA9ZC5yZWFkX3NoaWZ0KDIpLFE9NDtpZihtKXN3aXRjaChtLmJpZmYpe2Nhc2UgNTpRPTE1O2JyZWFrO2Nhc2UgMTI6UT02fXJldHVybiBkLmwrPVEsW1QsUF19fSw2MTp7bjoiUHRnQXJlYUVycjNkIixmOmZ1bmN0aW9uIGxk'@; put 'KGQsXyxtKXt2YXIgVD0oOTYmZFtkLmwrK10pPj41LFA9ZC5yZWFkX3NoaWZ0KDIpLFE9ODtpZihtKXN3aXRjaChtLmJpZmYpe2Nhc2UgNTpkLmwrPTEyLFE9NjticmVhaztjYXNlIDEyOlE9MTJ9cmV0dXJuIGQubCs9USxbVCxQXX19LDI1NTp7fX0sRWs9ezY0OjMyLDk2OjMyLDY1OjMzLDk3'@; put 'OjMzLDY2OjM0LDk4OjM0LDY3OjM1LDk5OjM1LDY4OjM2LDEwMDozNiw2OTozNywxMDE6MzcsNzA6MzgsMTAyOjM4LDcxOjM5LDEwMzozOSw3Mjo0MCwxMDQ6NDAsNzM6NDEsMTA1OjQxLDc0OjQyLDEwNjo0Miw3NTo0MywxMDc6NDMsNzY6NDQsMTA4OjQ0LDc3OjQ1LDEwOTo0NSw3ODo0Niwx'@; put 'MTA6NDYsNzk6NDcsMTExOjQ3LDg4OjM0LDEyMDozNCw4OTo1NywxMjE6NTcsOTA6NTgsMTIyOjU4LDkxOjU5LDEyMzo1OSw5Mjo2MCwxMjQ6NjAsOTM6NjEsMTI1OjYxfTshZnVuY3Rpb24oKXtmb3IodmFyIGQgaW4gRWspd1ZbZF09d1ZbRWtbZF1dfSgpO3ZhciBDVj17MTp7bjoiUHRnRWxm'@; put 'TGVsIixmOlJTfSwyOntuOiJQdGdFbGZSdyIsZjpLUX0sMzp7bjoiUHRnRWxmQ29sIixmOkFTfSw2OntuOiJQdGdFbGZSd1YiLGY6Q2t9LDc6e246IlB0Z0VsZkNvbFYiLGY6d2t9LDEwOntuOiJQdGdFbGZSYWRpY2FsIixmOnlWfSwxMTp7bjoiUHRnRWxmUmFkaWNhbFMiLGY6cVF9LDEzOntu'@; put 'OiJQdGdFbGZDb2xTIixmOmtTfSwxNTp7bjoiUHRnRWxmQ29sU1YiLGY6Rjl9LDE2OntuOiJQdGdFbGZSYWRpY2FsTGVsIixmOmJWfSwyNTp7bjoiUHRnTGlzdCIsZjpmdW5jdGlvbiB5NWUoZCl7ZC5sKz0yO3ZhciBfPWQucmVhZF9zaGlmdCgyKSxtPWQucmVhZF9zaGlmdCgyKSxUPWQucmVh'@; put 'ZF9zaGlmdCg0KSxQPWQucmVhZF9zaGlmdCgyKSxRPWQucmVhZF9zaGlmdCgyKTtyZXR1cm57aXh0aTpfLGNvbHR5cGU6MyZtLHJ0Ol81ZVttPj4yJjMxXSxpZHg6VCxjOlAsQzpRfX19LDI5OntuOiJQdGdTeE5hbWUiLGY6ZnVuY3Rpb24gWFEoZCl7cmV0dXJuIGQubCs9MixbZC5yZWFkX3No'@; put 'aWZ0KDQpXX19LDI1NTp7fX0sTWs9ezA6e246IlB0Z0F0dHJOb29wIixmOmZ1bmN0aW9uIFNrKGQpe3JldHVybiBkLmwrPTQsWzAsMF19fSwxOntuOiJQdGdBdHRyU2VtaSIsZjpmdW5jdGlvbiBPOShkLF8sbSl7dmFyIFQ9MjU1JmRbZC5sKzFdPzE6MDtyZXR1cm4gZC5sKz1tJiYyPT1tLmJp'@; put 'ZmY/Mzo0LFtUXX19LDI6e246IlB0Z0F0dHJJZiIsZjpmdW5jdGlvbiBwNWUoZCxfLG0pe3ZhciBUPTI1NSZkW2QubCsxXT8xOjA7cmV0dXJuIGQubCs9MixbVCxkLnJlYWRfc2hpZnQobSYmMj09bS5iaWZmPzE6MildfX0sNDp7bjoiUHRnQXR0ckNob29zZSIsZjpmdW5jdGlvbiBQUShkLF8s'@; put 'bSl7ZC5sKz0yO2Zvcih2YXIgVD1kLnJlYWRfc2hpZnQobSYmMj09bS5iaWZmPzE6MiksUD1bXSxRPTA7UTw9VDsrK1EpUC5wdXNoKGQucmVhZF9zaGlmdChtJiYyPT1tLmJpZmY/MToyKSk7cmV0dXJuIFB9fSw4OntuOiJQdGdBdHRyR290byIsZjpmdW5jdGlvbiBIUShkLF8sbSl7dmFyIFQ9'@; put 'MjU1JmRbZC5sKzFdPzE6MDtyZXR1cm4gZC5sKz0yLFtULGQucmVhZF9zaGlmdChtJiYyPT1tLmJpZmY/MToyKV19fSwxNjp7bjoiUHRnQXR0clN1bSIsZjpmdW5jdGlvbiBOOShkLF8sbSl7ZC5sKz1tJiYyPT1tLmJpZmY/Mzo0fX0sMzI6e246IlB0Z0F0dHJCYXhjZWwiLGY6ZnVuY3Rpb24g'@; put 'Y1YoZCl7dmFyIF89MSZkW2QubCsxXTtyZXR1cm4gZC5sKz00LFtfLDFdfX0sNjQ6e246IlB0Z0F0dHJTcGFjZSIsZjpmdW5jdGlvbiBtayhkKXtyZXR1cm4gZC5yZWFkX3NoaWZ0KDIpLGdrKGQpfX0sNjU6e246IlB0Z0F0dHJTcGFjZVNlbWkiLGY6ZnVuY3Rpb24gdmsoZCl7cmV0dXJuIGQu'@; put 'cmVhZF9zaGlmdCgyKSxnayhkKX19LDEyODp7bjoiUHRnQXR0cklmRXJyb3IiLGY6ZnVuY3Rpb24gVlEoZCl7dmFyIF89MjU1JmRbZC5sKzFdPzE6MDtyZXR1cm4gZC5sKz0yLFtfLGQucmVhZF9zaGlmdCgyKV19fSwyNTU6e319O2Z1bmN0aW9uIHh5KGQsXyxtLFQsUCl7aWYoVC5iaWZmPDgp'@; put 'cmV0dXJuIEVjKGQsXyk7Zm9yKHZhciBRPWQubCtfLHNlPVtdLG9lPTA7b2UhPT1tLmxlbmd0aDsrK29lKXN3aXRjaChtW29lXVswXSl7Y2FzZSJQdGdBcnJheSI6bVtvZV1bMV09ZzVlKGQsMCxUKSxzZS5wdXNoKG1bb2VdWzFdKTticmVhaztjYXNlIlB0Z01lbUFyZWEiOm1bb2VdWzJdPXZW'@; put 'KGQsMCxUKSxzZS5wdXNoKG1bb2VdWzJdKTticmVhaztjYXNlIlB0Z0V4cCI6VCYmMTI9PVQuYmlmZiYmKG1bb2VdWzFdWzFdPWQucmVhZF9zaGlmdCg0KSxzZS5wdXNoKG1bb2VdWzFdKSk7YnJlYWs7Y2FzZSJQdGdMaXN0IjpjYXNlIlB0Z0VsZlJhZGljYWxTIjpjYXNlIlB0Z0VsZkNvbFMi'@; put 'OmNhc2UiUHRnRWxmQ29sU1YiOnRocm93IlVuc3VwcG9ydGVkICIrbVtvZV1bMF19cmV0dXJuIF89US1kLmwsIVAmJjAhPT1fJiZzZS5wdXNoKEVjKGQsXykpLHNlfWZ1bmN0aW9uIEFmKGQsXyxtKXtmb3IodmFyIFAsUSxUPWQubCtfLHNlPVtdO1QhPWQubDspXz1ULWQubCxQPXdWW1E9ZFtk'@; put 'LmxdXSwoMjQ9PT1RfHwyNT09PVEpJiYoUD0oMjQ9PT1RP0NWOk1rKVtkW2QubCsxXV0pLFAmJlAuZj9zZS5wdXNoKFtQLm4sUC5mKGQsXyxtKV0pOkVjKGQsXyk7cmV0dXJuIHNlfWZ1bmN0aW9uIFM1ZShkKXtmb3IodmFyIF89W10sbT0wO208ZC5sZW5ndGg7KyttKXtmb3IodmFyIFQ9ZFtt'@; put 'XSxQPVtdLFE9MDtRPFQubGVuZ3RoOysrUSl7dmFyIHNlPVRbUV07UC5wdXNoKHNlPzI9PT1zZVswXT8nIicrc2VbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJzpzZVsxXToiIil9Xy5wdXNoKFAuam9pbigiLCIpKX1yZXR1cm4gXy5qb2luKCI7Iil9TWtbMzNdPU1rWzMyXTt2YXIgSVM9e1B0'@; put 'Z0FkZDoiKyIsUHRnQ29uY2F0OiImIixQdGdEaXY6Ii8iLFB0Z0VxOiI9IixQdGdHZToiPj0iLFB0Z0d0OiI+IixQdGdMZToiPD0iLFB0Z0x0OiI8IixQdGdNdWw6IioiLFB0Z05lOiI8PiIsUHRnUG93ZXI6Il4iLFB0Z1N1YjoiLSJ9LEpRPW5ldyBSZWdFeHAoL1teXHdcdTRFMDAtXHU5RkZG'@; put 'XHUzMDQwLVx1MzBGRl0vKTtmdW5jdGlvbiBUayhkLF8sbSl7aWYoIWQpcmV0dXJuIlNIMzNUSlNFUlIwIjtpZihtLmJpZmY+OCYmKCFkLlhUSXx8IWQuWFRJW19dKSlyZXR1cm4gZC5TaGVldE5hbWVzW19dO2lmKCFkLlhUSSlyZXR1cm4iU0gzM1RKU0VSUjYiO3ZhciBUPWQuWFRJW19dO2lm'@; put 'KG0uYmlmZjw4KXJldHVybiBfPjFlNCYmKF8tPTY1NTM2KSxfPDAmJihfPS1fKSwwPT1fPyIiOmQuWFRJW18tMV07aWYoIVQpcmV0dXJuIlNIMzNUSlNFUlIxIjt2YXIgUD0iIjtpZihtLmJpZmY+OClzd2l0Y2goZFtUWzBdXVswXSl7Y2FzZSAzNTc6cmV0dXJuIFA9LTE9PVRbMV0/IiNSRUYi'@; put 'OmQuU2hlZXROYW1lc1tUWzFdXSxUWzFdPT1UWzJdP1A6UCsiOiIrZC5TaGVldE5hbWVzW1RbMl1dO2Nhc2UgMzU4OnJldHVybiBudWxsIT1tLlNJRD9kLlNoZWV0TmFtZXNbbS5TSURdOiJTSDMzVEpTU0FNRSIrZFtUWzBdXVswXTtkZWZhdWx0OnJldHVybiJTSDMzVEpTU1JDIitkW1RbMF1d'@; put 'WzBdfXN3aXRjaChkW1RbMF1dWzBdWzBdKXtjYXNlIDEwMjU6cmV0dXJuIFA9LTE9PVRbMV0/IiNSRUYiOmQuU2hlZXROYW1lc1tUWzFdXXx8IlNIMzNUSlNFUlIzIixUWzFdPT1UWzJdP1A6UCsiOiIrZC5TaGVldE5hbWVzW1RbMl1dO2Nhc2UgMTQ4NDk6cmV0dXJuIGRbVFswXV0uc2xpY2Uo'@; put 'MSkubWFwKGZ1bmN0aW9uKFEpe3JldHVybiBRLk5hbWV9KS5qb2luKCI7OyIpO2RlZmF1bHQ6cmV0dXJuIGRbVFswXV1bMF1bM10/KFA9LTE9PVRbMV0/IiNSRUYiOmRbVFswXV1bMF1bM11bVFsxXV18fCJTSDMzVEpTRVJSNCIsVFsxXT09VFsyXT9QOlArIjoiK2RbVFswXV1bMF1bM11bVFsy'@; put 'XV0pOiJTSDMzVEpTRVJSMiJ9fWZ1bmN0aW9uIEF5KGQsXyxtKXtyZXR1cm4gZnVuY3Rpb24gZUooZCxfKXtpZighKGR8fF8mJl8uYmlmZjw9NSYmXy5iaWZmPj0yKSl0aHJvdyBuZXcgRXJyb3IoImVtcHR5IHNoZWV0IG5hbWUiKTtyZXR1cm4vI1JFRi8udGVzdChkKT9kOkpRLnRlc3QoZCk/'@; put 'IiciK2QrIiciOmR9KFRrKGQsXyxtKSxtKX1mdW5jdGlvbiB1MShkLF8sbSxULFAsUSl7dmFyIExlLE5lLEJlLG10LHNlPVAmJlAuYmlmZnx8OCxvZT1RJiZudWxsIT1fP186e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSxkZT1bXSxaZT0wLG50PTAsUWU9IiI7aWYoIWRbMF18fCFkWzBdWzBd'@; put 'KXJldHVybiIiO2Zvcih2YXIgZnQ9LTEsa3Q9IiIsYnQ9MCxFdD1kWzBdLmxlbmd0aDtidDxFdDsrK2J0KXt2YXIgVnQ9ZFswXVtidF07c3dpdGNoKFZ0WzBdKXtjYXNlIlB0Z1VtaW51cyI6ZGUucHVzaCgiLSIrZGUucG9wKCkpO2JyZWFrO2Nhc2UiUHRnVXBsdXMiOmRlLnB1c2goIisiK2Rl'@; put 'LnBvcCgpKTticmVhaztjYXNlIlB0Z1BlcmNlbnQiOmRlLnB1c2goZGUucG9wKCkrIiUiKTticmVhaztjYXNlIlB0Z0FkZCI6Y2FzZSJQdGdDb25jYXQiOmNhc2UiUHRnRGl2IjpjYXNlIlB0Z0VxIjpjYXNlIlB0Z0dlIjpjYXNlIlB0Z0d0IjpjYXNlIlB0Z0xlIjpjYXNlIlB0Z0x0IjpjYXNl'@; put 'IlB0Z011bCI6Y2FzZSJQdGdOZSI6Y2FzZSJQdGdQb3dlciI6Y2FzZSJQdGdTdWIiOmlmKExlPWRlLnBvcCgpLE5lPWRlLnBvcCgpLGZ0Pj0wKXtzd2l0Y2goZFswXVtmdF1bMV1bMF0pe2Nhc2UgMDprdD1PbygiICIsZFswXVtmdF1bMV1bMV0pO2JyZWFrO2Nhc2UgMTprdD1PbygiXHIiLGRb'@; put 'MF1bZnRdWzFdWzFdKTticmVhaztkZWZhdWx0OmlmKGt0PSIiLFAuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZFswXVtmdF1bMV1bMF0pfU5lKz1rdCxmdD0tMX1kZS5wdXNoKE5lK0lTW1Z0WzBdXStMZSk7YnJlYWs7Y2FzZSJQdGdJc2VjdCI6'@; put 'TGU9ZGUucG9wKCksTmU9ZGUucG9wKCksZGUucHVzaChOZSsiICIrTGUpO2JyZWFrO2Nhc2UiUHRnVW5pb24iOkxlPWRlLnBvcCgpLE5lPWRlLnBvcCgpLGRlLnB1c2goTmUrIiwiK0xlKTticmVhaztjYXNlIlB0Z1JhbmdlIjpMZT1kZS5wb3AoKSxOZT1kZS5wb3AoKSxkZS5wdXNoKE5lKyI6'@; put 'IitMZSk7YnJlYWs7Y2FzZSJQdGdBdHRyQ2hvb3NlIjpjYXNlIlB0Z0F0dHJHb3RvIjpjYXNlIlB0Z0F0dHJJZiI6Y2FzZSJQdGdBdHRySWZFcnJvciI6Y2FzZSJQdGdBdHRyQmF4Y2VsIjpjYXNlIlB0Z0F0dHJTZW1pIjpjYXNlIlB0Z01lbUFyZWEiOmNhc2UiUHRnVGJsIjpjYXNlIlB0Z01l'@; put 'bUVyciI6Y2FzZSJQdGdNZW1BcmVhTiI6Y2FzZSJQdGdNZW1Ob01lbU4iOmNhc2UiUHRnQXR0ck5vb3AiOmNhc2UiUHRnU2hlZXQiOmNhc2UiUHRnRW5kU2hlZXQiOmNhc2UiUHRnTWVtRnVuYyI6Y2FzZSJQdGdNZW1Ob01lbSI6YnJlYWs7Y2FzZSJQdGdSZWYiOkJlPXJoKFZ0WzFdWzFdLG9l'@; put 'LFApLGRlLnB1c2godjIoQmUsc2UpKTticmVhaztjYXNlIlB0Z1JlZk4iOkJlPW0/cmgoVnRbMV1bMV0sbSxQKTpWdFsxXVsxXSxkZS5wdXNoKHYyKEJlLHNlKSk7YnJlYWs7Y2FzZSJQdGdSZWYzZCI6WmU9VnRbMV1bMV0sQmU9cmgoVnRbMV1bMl0sb2UsUCksUWU9QXkoVCxaZSxQKSxkZS5w'@; put 'dXNoKFFlKyIhIit2MihCZSxzZSkpO2JyZWFrO2Nhc2UiUHRnRnVuYyI6Y2FzZSJQdGdGdW5jVmFyIjp2YXIgbnI9VnRbMV1bMF0sbm49VnRbMV1bMV07bnJ8fChucj0wKTt2YXIgYXI9MD09KG5yJj0xMjcpP1tdOmRlLnNsaWNlKC1ucik7ZGUubGVuZ3RoLT1uciwiVXNlciI9PT1ubiYmKG5u'@; put 'PWFyLnNoaWZ0KCkpLGRlLnB1c2gobm4rIigiK2FyLmpvaW4oIiwiKSsiKSIpO2JyZWFrO2Nhc2UiUHRnQm9vbCI6ZGUucHVzaChWdFsxXT8iVFJVRSI6IkZBTFNFIik7YnJlYWs7Y2FzZSJQdGdJbnQiOmNhc2UiUHRnTnVtIjpkZS5wdXNoKFN0cmluZyhWdFsxXSkpO2JyZWFrO2Nhc2UiUHRn'@; put 'U3RyIjpkZS5wdXNoKCciJytWdFsxXS5yZXBsYWNlKC8iL2csJyIiJykrJyInKTticmVhaztjYXNlIlB0Z0VyciI6ZGUucHVzaChWdFsxXSk7YnJlYWs7Y2FzZSJQdGdBcmVhTiI6bXQ9bjUoVnRbMV1bMV0sbT97czptfTpvZSxQKSxkZS5wdXNoKHRkKG10LFApKTticmVhaztjYXNlIlB0Z0Fy'@; put 'ZWEiOm10PW41KFZ0WzFdWzFdLG9lLFApLGRlLnB1c2godGQobXQsUCkpO2JyZWFrO2Nhc2UiUHRnQXJlYTNkIjpaZT1WdFsxXVsxXSxtdD1uNShWdFsxXVsyXSxvZSxQKSxRZT1BeShULFplLFApLGRlLnB1c2goUWUrIiEiK3RkKG10LFApKTticmVhaztjYXNlIlB0Z0F0dHJTdW0iOmRlLnB1'@; put 'c2goIlNVTSgiK2RlLnBvcCgpKyIpIik7YnJlYWs7Y2FzZSJQdGdOYW1lIjp2YXIgam49KFQubmFtZXN8fFtdKVsobnQ9VnRbMV1bMl0pLTFdfHwoVFswXXx8W10pW250XSxrbj1qbj9qbi5OYW1lOiJTSDMzVEpTTkFNRSIrU3RyaW5nKG50KTtrbiBpbiBhSiYmKGtuPWFKW2tuXSksZGUucHVz'@; put 'aChrbik7YnJlYWs7Y2FzZSJQdGdOYW1lWCI6dmFyIGdyLHNyPVZ0WzFdWzFdO2lmKG50PVZ0WzFdWzJdLCEoUC5iaWZmPD01KSl7dmFyIHFuPSIiO2lmKDE0ODQ5PT0oKFRbc3JdfHxbXSlbMF18fFtdKVswXXx8KDEwMjU9PSgoVFtzcl18fFtdKVswXXx8W10pWzBdP1Rbc3JdW250XSYmVFtz'@; put 'cl1bbnRdLml0YWI+MCYmKHFuPVQuU2hlZXROYW1lc1tUW3NyXVtudF0uaXRhYi0xXSsiISIpOnFuPVQuU2hlZXROYW1lc1tudC0xXSsiISIpLFRbc3JdJiZUW3NyXVtudF0pcW4rPVRbc3JdW250XS5OYW1lO2Vsc2UgaWYoVFswXSYmVFswXVtudF0pcW4rPVRbMF1bbnRdLk5hbWU7ZWxzZXt2'@; put 'YXIgT2k9KFRrKFQsc3IsUCl8fCIiKS5zcGxpdCgiOzsiKTtPaVtudC0xXT9xbj1PaVtudC0xXTpxbis9IlNIMzNUSlNFUlJYIn1kZS5wdXNoKHFuKTticmVha31zcjwwJiYoc3I9LXNyKSxUW3NyXSYmKGdyPVRbc3JdW250XSksZ3J8fChncj17TmFtZToiU0gzM1RKU0VSUlkifSksZGUucHVz'@; put 'aChnci5OYW1lKTticmVhaztjYXNlIlB0Z1BhcmVuIjp2YXIgc289IigiLG1vPSIpIjtpZihmdD49MCl7c3dpdGNoKGt0PSIiLGRbMF1bZnRdWzFdWzBdKXtjYXNlIDI6c289T28oIiAiLGRbMF1bZnRdWzFdWzFdKStzbzticmVhaztjYXNlIDM6c289T28oIlxyIixkWzBdW2Z0XVsxXVsxXSkr'@; put 'c287YnJlYWs7Y2FzZSA0Om1vPU9vKCIgIixkWzBdW2Z0XVsxXVsxXSkrbW87YnJlYWs7Y2FzZSA1Om1vPU9vKCJcciIsZFswXVtmdF1bMV1bMV0pK21vO2JyZWFrO2RlZmF1bHQ6aWYoUC5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgIitkWzBdW2Z0'@; put 'XVsxXVswXSl9ZnQ9LTF9ZGUucHVzaChzbytkZS5wb3AoKSttbyk7YnJlYWs7Y2FzZSJQdGdSZWZFcnIiOmNhc2UiUHRnQXJlYUVyciI6Y2FzZSJQdGdBcmVhRXJyM2QiOmNhc2UiUHRnUmVmRXJyM2QiOmRlLnB1c2goIiNSRUYhIik7YnJlYWs7Y2FzZSJQdGdFeHAiOnZhciBrcj17YzptLmMs'@; put 'cjptLnJ9O2lmKFQuc2hhcmVkZltxaShCZT17YzpWdFsxXVsxXSxyOlZ0WzFdWzBdfSldKXt2YXIgRG49VC5zaGFyZWRmW3FpKEJlKV07ZGUucHVzaCh1MShEbixvZSxrcixULFApKX1lbHNle3ZhciBPcj0hMTtmb3IoTGU9MDtMZSE9VC5hcnJheWYubGVuZ3RoOysrTGUpaWYoIShCZS5jPChO'@; put 'ZT1ULmFycmF5ZltMZV0pWzBdLnMuY3x8QmUuYz5OZVswXS5lLmN8fEJlLnI8TmVbMF0ucy5yfHxCZS5yPk5lWzBdLmUucikpe2RlLnB1c2godTEoTmVbMV0sb2Usa3IsVCxQKSksT3I9ITA7YnJlYWt9T3J8fGRlLnB1c2goVnRbMV0pfWJyZWFrO2Nhc2UiUHRnQXJyYXkiOmRlLnB1c2goInsi'@; put 'K1M1ZShWdFsxXSkrIn0iKTticmVhaztjYXNlIlB0Z0F0dHJTcGFjZSI6Y2FzZSJQdGdBdHRyU3BhY2VTZW1pIjpmdD1idDticmVhaztjYXNlIlB0Z01pc3NBcmciOmRlLnB1c2goIiIpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6ZGUucHVzaCgiVGFibGUiK1Z0WzFdLmlkeCsiWyMiK1Z0WzFdLnJ0'@; put 'KyJdIik7YnJlYWs7Y2FzZSJQdGdFbGZDb2wiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6Y2FzZSJQdGdFbGZDb2xWIjpjYXNlIlB0Z0VsZkxlbCI6Y2FzZSJQdGdFbGZSYWRpY2FsIjpjYXNlIlB0Z0VsZlJhZGljYWxMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2Ui'@; put 'UHRnRWxmUnciOmNhc2UiUHRnRWxmUndWIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVMRnMiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIEZvcm11bGEgVG9rZW46ICIrU3RyaW5nKFZ0KSl9aWYoMyE9UC5iaWZmJiZmdD49MCYmLTE9PVsiUHRnQXR0clNw'@; put 'YWNlIiwiUHRnQXR0clNwYWNlU2VtaSIsIlB0Z0F0dHJHb3RvIl0uaW5kZXhPZihkWzBdW2J0XVswXSkpe3ZhciBNbj0hMDtzd2l0Y2goKFZ0PWRbMF1bZnRdKVsxXVswXSl7Y2FzZSA0Ok1uPSExO2Nhc2UgMDprdD1PbygiICIsVnRbMV1bMV0pO2JyZWFrO2Nhc2UgNTpNbj0hMTtjYXNlIDE6'@; put 'a3Q9T28oIlxyIixWdFsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihrdD0iIixQLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSAiK1Z0WzFdWzBdKX1kZS5wdXNoKChNbj9rdDoiIikrZGUucG9wKCkrKE1uPyIiOmt0KSksZnQ9LTF9fWlmKGRlLmxlbmd0'@; put 'aD4xJiZQLldURil0aHJvdyBuZXcgRXJyb3IoImJhZCBmb3JtdWxhIHN0YWNrIik7cmV0dXJuIGRlWzBdfWZ1bmN0aW9uIHhrKGQsXyxtKXt2YXIgUSxUPWQubCtfLFA9Mj09bS5iaWZmPzE6MixzZT1kLnJlYWRfc2hpZnQoUCk7aWYoNjU1MzU9PXNlKXJldHVybltbXSxFYyhkLF8tMildO3Zh'@; put 'ciBvZT1BZihkLHNlLG0pO3JldHVybiBfIT09c2UrUCYmKFE9eHkoZCxfLXNlLVAsb2UsbSkpLGQubD1ULFtvZSxRXX1mdW5jdGlvbiBuSihkLF8sbSl7dmFyIFAsVD1kLmwrXyxRPWQucmVhZF9zaGlmdCgyKSxzZT1BZihkLFEsbSk7cmV0dXJuIDY1NTM1PT1RP1tbXSxFYyhkLF8tMildOihf'@; put 'IT09USsyJiYoUD14eShkLFQtUS0yLHNlLG0pKSxbc2UsUF0pfWZ1bmN0aW9uIEFrKGQsXyxtKXt2YXIgVD1kLmwrXyxQPVppKGQpOzI9PW0uYmlmZiYmKytkLmw7dmFyIFE9ZnVuY3Rpb24gRTVlKGQpe3ZhciBfO2lmKDY1NTM1IT09RXIoZCxkLmwrNikpcmV0dXJuW3FzKGQpLCJuIl07c3dp'@; put 'dGNoKGRbZC5sXSl7Y2FzZSAwOnJldHVybiBkLmwrPTgsWyJTdHJpbmciLCJzIl07Y2FzZSAxOnJldHVybiBfPTE9PT1kW2QubCsyXSxkLmwrPTgsW18sImIiXTtjYXNlIDI6cmV0dXJuIF89ZFtkLmwrMl0sZC5sKz04LFtfLCJlIl07Y2FzZSAzOnJldHVybiBkLmwrPTgsWyIiLCJzIl19cmV0'@; put 'dXJuW119KGQpLHNlPWQucmVhZF9zaGlmdCgxKTsyIT1tLmJpZmYmJihkLnJlYWRfc2hpZnQoMSksbS5iaWZmPj01JiZkLnJlYWRfc2hpZnQoNCkpO3ZhciBvZT1mdW5jdGlvbiB0SihkLF8sbSl7dmFyIFEsVD1kLmwrXyxQPTI9PW0uYmlmZj8xOjIsc2U9ZC5yZWFkX3NoaWZ0KFApO2lmKDY1'@; put 'NTM1PT1zZSlyZXR1cm5bW10sRWMoZCxfLTIpXTt2YXIgb2U9QWYoZCxzZSxtKTtyZXR1cm4gXyE9PXNlK1AmJihRPXh5KGQsXy1zZS1QLG9lLG0pKSxkLmw9VCxbb2UsUV19KGQsVC1kLmwsbSk7cmV0dXJue2NlbGw6UCx2YWw6UVswXSxmb3JtdWxhOm9lLHNoYXJlZDpzZT4+MyYxLHR0OlFb'@; put 'MV19fWZ1bmN0aW9uIGt5KGQsXyxtKXt2YXIgVD1kLnJlYWRfc2hpZnQoNCksUD1BZihkLFQsbSksUT1kLnJlYWRfc2hpZnQoNCk7cmV0dXJuW1AsUT4wP3h5KGQsUSxQLG0sITApOm51bGxdfXZhciBNVj1reSxQOT1reSxUVj1reSxNNWU9ZnVuY3Rpb24gUnkoZCxfLG0pe3ZhciBUPWQucmVh'@; put 'ZF9zaGlmdCg0KSxQPWQucmVhZF9zaGlmdCg0KSxRPUFmKGQsVCxtKTtyZXR1cm5bUSxQPjA/eHkoZCxQLFEsbSwhMCk6bnVsbF19LFQ1ZT1reSx4NWU9a3k7ZnVuY3Rpb24gRDgoZCl7aWYoKDB8ZCk9PWQmJmQ8TWF0aC5wb3coMiwxNikmJmQ+PTApe3ZhciBfPUZyKDExKTtyZXR1cm4gXy53'@; put 'cml0ZV9zaGlmdCg0LDMpLF8ud3JpdGVfc2hpZnQoMSwzMCksXy53cml0ZV9zaGlmdCgyLGQpLF8ud3JpdGVfc2hpZnQoNCwwKSxffXZhciBtPUZyKDE3KTtyZXR1cm4gbS53cml0ZV9zaGlmdCg0LDExKSxtLndyaXRlX3NoaWZ0KDEsMzEpLG0ud3JpdGVfc2hpZnQoOCxkKSxtLndyaXRlX3No'@; put 'aWZ0KDQsMCksbX1mdW5jdGlvbiBJeShkKXt2YXIgXz1Gcig3KTtfLndyaXRlX3NoaWZ0KDQsMysyKmQubGVuZ3RoKSxfLndyaXRlX3NoaWZ0KDEsMjMpLF8ud3JpdGVfc2hpZnQoMixkLmxlbmd0aCk7dmFyIG09RnIoMipkLmxlbmd0aCk7bS53cml0ZV9zaGlmdCgyKmQubGVuZ3RoLGQsInV0'@; put 'ZjE2bGUiKTt2YXIgVD1Gcig0KTtyZXR1cm4gVC53cml0ZV9zaGlmdCg0LDApLEcoW18sbSxUXSl9ZnVuY3Rpb24gRHkoZCl7aWYoZC5tYXRjaCgvXiMoRElWXC8wIXxHRVRUSU5HX0RBVEF8TlwvQXxOQU1FXD98TlVMTCF8TlVNIXxSRUYhfFZBTFVFISkkLykpcmV0dXJuIGZ1bmN0aW9uIGlK'@; put 'KGQpe3ZhciBfPUZyKDEwKTtyZXR1cm4gXy53cml0ZV9zaGlmdCg0LDIpLF8ud3JpdGVfc2hpZnQoMSwyOCksXy53cml0ZV9zaGlmdCgxLGQpLF8ud3JpdGVfc2hpZnQoNCwwKSxffSgrSDFbZF0pO2lmKGQubWF0Y2goL15cJD8oPzpbQS1XXVtBLVpdezJ9fFhbQS1FXVtBLVpdfFhGW0EtRF18'@; put 'W0EtWl17MSwyfSlcJD8oPzoxMFswLTNdXGR7NH18MTA0WzAtN11cZHszfXwxMDQ4WzAtNF1cZHsyfXwxMDQ4NVswLTZdXGR8MTA0ODU3WzAtNl18WzEtOV1cZHswLDV9KSQvKSlyZXR1cm4gZnVuY3Rpb24ga2soZCl7dmFyIF89SXMoZCksbT1GcigxNSk7cmV0dXJuIG0ud3JpdGVfc2hpZnQo'@; put 'NCw3KSxtLndyaXRlX3NoaWZ0KDEsMzYpLG0ud3JpdGVfc2hpZnQoNCxfLnIpLG0ud3JpdGVfc2hpZnQoMixfLmN8KCIkIj09ZC5jaGFyQXQoMCk/MDoxKTw8MTR8KGQubWF0Y2goL1wkXGQvKT8wOjEpPDwxNSksbS53cml0ZV9zaGlmdCg0LDApLG19KGQpO2lmKGQubWF0Y2goL14iLioiJC8p'@; put 'KXJldHVybiBJeShkKTt0aHJvdyJGb3JtdWxhIHwiK2QrInwgbm90IHN1cHBvcnRlZCBmb3IgWExTQiJ9dmFyIFJrPXswOiJCRUVQIiwxOiJPUEVOIiwyOiJPUEVOLkxJTktTIiwzOiJDTE9TRS5BTEwiLDQ6IlNBVkUiLDU6IlNBVkUuQVMiLDY6IkZJTEUuREVMRVRFIiw3OiJQQUdFLlNFVFVQ'@; put 'Iiw4OiJQUklOVCIsOToiUFJJTlRFUi5TRVRVUCIsMTA6IlFVSVQiLDExOiJORVcuV0lORE9XIiwxMjoiQVJSQU5HRS5BTEwiLDEzOiJXSU5ET1cuU0laRSIsMTQ6IldJTkRPVy5NT1ZFIiwxNToiRlVMTCIsMTY6IkNMT1NFIiwxNzoiUlVOIiwyMjoiU0VULlBSSU5ULkFSRUEiLDIzOiJTRVQu'@; put 'UFJJTlQuVElUTEVTIiwyNDoiU0VULlBBR0UuQlJFQUsiLDI1OiJSRU1PVkUuUEFHRS5CUkVBSyIsMjY6IkZPTlQiLDI3OiJESVNQTEFZIiwyODoiUFJPVEVDVC5ET0NVTUVOVCIsMjk6IlBSRUNJU0lPTiIsMzA6IkExLlIxQzEiLDMxOiJDQUxDVUxBVEUuTk9XIiwzMjoiQ0FMQ1VMQVRJT04i'@; put 'LDM0OiJEQVRBLkZJTkQiLDM1OiJFWFRSQUNUIiwzNjoiREFUQS5ERUxFVEUiLDM3OiJTRVQuREFUQUJBU0UiLDM4OiJTRVQuQ1JJVEVSSUEiLDM5OiJTT1JUIiw0MDoiREFUQS5TRVJJRVMiLDQxOiJUQUJMRSIsNDI6IkZPUk1BVC5OVU1CRVIiLDQzOiJBTElHTk1FTlQiLDQ0OiJTVFlMRSIs'@; put 'NDU6IkJPUkRFUiIsNDY6IkNFTEwuUFJPVEVDVElPTiIsNDc6IkNPTFVNTi5XSURUSCIsNDg6IlVORE8iLDQ5OiJDVVQiLDUwOiJDT1BZIiw1MToiUEFTVEUiLDUyOiJDTEVBUiIsNTM6IlBBU1RFLlNQRUNJQUwiLDU0OiJFRElULkRFTEVURSIsNTU6IklOU0VSVCIsNTY6IkZJTEwuUklHSFQi'@; put 'LDU3OiJGSUxMLkRPV04iLDYxOiJERUZJTkUuTkFNRSIsNjI6IkNSRUFURS5OQU1FUyIsNjM6IkZPUk1VTEEuR09UTyIsNjQ6IkZPUk1VTEEuRklORCIsNjU6IlNFTEVDVC5MQVNULkNFTEwiLDY2OiJTSE9XLkFDVElWRS5DRUxMIiw2NzoiR0FMTEVSWS5BUkVBIiw2ODoiR0FMTEVSWS5CQVIi'@; put 'LDY5OiJHQUxMRVJZLkNPTFVNTiIsNzA6IkdBTExFUlkuTElORSIsNzE6IkdBTExFUlkuUElFIiw3MjoiR0FMTEVSWS5TQ0FUVEVSIiw3MzoiQ09NQklOQVRJT04iLDc0OiJQUkVGRVJSRUQiLDc1OiJBREQuT1ZFUkxBWSIsNzY6IkdSSURMSU5FUyIsNzc6IlNFVC5QUkVGRVJSRUQiLDc4OiJB'@; put 'WEVTIiw3OToiTEVHRU5EIiw4MDoiQVRUQUNILlRFWFQiLDgxOiJBREQuQVJST1ciLDgyOiJTRUxFQ1QuQ0hBUlQiLDgzOiJTRUxFQ1QuUExPVC5BUkVBIiw4NDoiUEFUVEVSTlMiLDg1OiJNQUlOLkNIQVJUIiw4NjoiT1ZFUkxBWSIsODc6IlNDQUxFIiw4ODoiRk9STUFULkxFR0VORCIsODk6'@; put 'IkZPUk1BVC5URVhUIiw5MDoiRURJVC5SRVBFQVQiLDkxOiJQQVJTRSIsOTI6IkpVU1RJRlkiLDkzOiJISURFIiw5NDoiVU5ISURFIiw5NToiV09SS1NQQUNFIiw5NjoiRk9STVVMQSIsOTc6IkZPUk1VTEEuRklMTCIsOTg6IkZPUk1VTEEuQVJSQVkiLDk5OiJEQVRBLkZJTkQuTkVYVCIsMTAw'@; put 'OiJEQVRBLkZJTkQuUFJFViIsMTAxOiJGT1JNVUxBLkZJTkQuTkVYVCIsMTAyOiJGT1JNVUxBLkZJTkQuUFJFViIsMTAzOiJBQ1RJVkFURSIsMTA0OiJBQ1RJVkFURS5ORVhUIiwxMDU6IkFDVElWQVRFLlBSRVYiLDEwNjoiVU5MT0NLRUQuTkVYVCIsMTA3OiJVTkxPQ0tFRC5QUkVWIiwxMDg6'@; put 'IkNPUFkuUElDVFVSRSIsMTA5OiJTRUxFQ1QiLDExMDoiREVMRVRFLk5BTUUiLDExMToiREVMRVRFLkZPUk1BVCIsMTEyOiJWTElORSIsMTEzOiJITElORSIsMTE0OiJWUEFHRSIsMTE1OiJIUEFHRSIsMTE2OiJWU0NST0xMIiwxMTc6IkhTQ1JPTEwiLDExODoiQUxFUlQiLDExOToiTkVXIiwx'@; put 'MjA6IkNBTkNFTC5DT1BZIiwxMjE6IlNIT1cuQ0xJUEJPQVJEIiwxMjI6Ik1FU1NBR0UiLDEyNDoiUEFTVEUuTElOSyIsMTI1OiJBUFAuQUNUSVZBVEUiLDEyNjoiREVMRVRFLkFSUk9XIiwxMjc6IlJPVy5IRUlHSFQiLDEyODoiRk9STUFULk1PVkUiLDEyOToiRk9STUFULlNJWkUiLDEzMDoi'@; put 'Rk9STVVMQS5SRVBMQUNFIiwxMzE6IlNFTkQuS0VZUyIsMTMyOiJTRUxFQ1QuU1BFQ0lBTCIsMTMzOiJBUFBMWS5OQU1FUyIsMTM0OiJSRVBMQUNFLkZPTlQiLDEzNToiRlJFRVpFLlBBTkVTIiwxMzY6IlNIT1cuSU5GTyIsMTM3OiJTUExJVCIsMTM4OiJPTi5XSU5ET1ciLDEzOToiT04uREFU'@; put 'QSIsMTQwOiJESVNBQkxFLklOUFVUIiwxNDI6Ik9VVExJTkUiLDE0MzoiTElTVC5OQU1FUyIsMTQ0OiJGSUxFLkNMT1NFIiwxNDU6IlNBVkUuV09SS0JPT0siLDE0NjoiREFUQS5GT1JNIiwxNDc6IkNPUFkuQ0hBUlQiLDE0ODoiT04uVElNRSIsMTQ5OiJXQUlUIiwxNTA6IkZPUk1BVC5GT05U'@; put 'IiwxNTE6IkZJTEwuVVAiLDE1MjoiRklMTC5MRUZUIiwxNTM6IkRFTEVURS5PVkVSTEFZIiwxNTU6IlNIT1JULk1FTlVTIiwxNTk6IlNFVC5VUERBVEUuU1RBVFVTIiwxNjE6IkNPTE9SLlBBTEVUVEUiLDE2MjoiREVMRVRFLlNUWUxFIiwxNjM6IldJTkRPVy5SRVNUT1JFIiwxNjQ6IldJTkRP'@; put 'Vy5NQVhJTUlaRSIsMTY2OiJDSEFOR0UuTElOSyIsMTY3OiJDQUxDVUxBVEUuRE9DVU1FTlQiLDE2ODoiT04uS0VZIiwxNjk6IkFQUC5SRVNUT1JFIiwxNzA6IkFQUC5NT1ZFIiwxNzE6IkFQUC5TSVpFIiwxNzI6IkFQUC5NSU5JTUlaRSIsMTczOiJBUFAuTUFYSU1JWkUiLDE3NDoiQlJJTkcu'@; put 'VE8uRlJPTlQiLDE3NToiU0VORC5UTy5CQUNLIiwxODU6Ik1BSU4uQ0hBUlQuVFlQRSIsMTg2OiJPVkVSTEFZLkNIQVJULlRZUEUiLDE4NzoiU0VMRUNULkVORCIsMTg4OiJPUEVOLk1BSUwiLDE4OToiU0VORC5NQUlMIiwxOTA6IlNUQU5EQVJELkZPTlQiLDE5MToiQ09OU09MSURBVEUiLDE5'@; put 'MjoiU09SVC5TUEVDSUFMIiwxOTM6IkdBTExFUlkuM0QuQVJFQSIsMTk0OiJHQUxMRVJZLjNELkNPTFVNTiIsMTk1OiJHQUxMRVJZLjNELkxJTkUiLDE5NjoiR0FMTEVSWS4zRC5QSUUiLDE5NzoiVklFVy4zRCIsMTk4OiJHT0FMLlNFRUsiLDE5OToiV09SS0dST1VQIiwyMDA6IkZJTEwuR1JP'@; put 'VVAiLDIwMToiVVBEQVRFLkxJTksiLDIwMjoiUFJPTU9URSIsMjAzOiJERU1PVEUiLDIwNDoiU0hPVy5ERVRBSUwiLDIwNjoiVU5HUk9VUCIsMjA3OiJPQkpFQ1QuUFJPUEVSVElFUyIsMjA4OiJTQVZFLk5FVy5PQkpFQ1QiLDIwOToiU0hBUkUiLDIxMDoiU0hBUkUuTkFNRSIsMjExOiJEVVBM'@; put 'SUNBVEUiLDIxMjoiQVBQTFkuU1RZTEUiLDIxMzoiQVNTSUdOLlRPLk9CSkVDVCIsMjE0OiJPQkpFQ1QuUFJPVEVDVElPTiIsMjE1OiJISURFLk9CSkVDVCIsMjE2OiJTRVQuRVhUUkFDVCIsMjE3OiJDUkVBVEUuUFVCTElTSEVSIiwyMTg6IlNVQlNDUklCRS5UTyIsMjE5OiJBVFRSSUJVVEVT'@; put 'IiwyMjA6IlNIT1cuVE9PTEJBUiIsMjIyOiJQUklOVC5QUkVWSUVXIiwyMjM6IkVESVQuQ09MT1IiLDIyNDoiU0hPVy5MRVZFTFMiLDIyNToiRk9STUFULk1BSU4iLDIyNjoiRk9STUFULk9WRVJMQVkiLDIyNzoiT04uUkVDQUxDIiwyMjg6IkVESVQuU0VSSUVTIiwyMjk6IkRFRklORS5TVFlM'@; put 'RSIsMjQwOiJMSU5FLlBSSU5UIiwyNDM6IkVOVEVSLkRBVEEiLDI0OToiR0FMTEVSWS5SQURBUiIsMjUwOiJNRVJHRS5TVFlMRVMiLDI1MToiRURJVElPTi5PUFRJT05TIiwyNTI6IlBBU1RFLlBJQ1RVUkUiLDI1MzoiUEFTVEUuUElDVFVSRS5MSU5LIiwyNTQ6IlNQRUxMSU5HIiwyNTY6IlpP'@; put 'T00iLDI1OToiSU5TRVJULk9CSkVDVCIsMjYwOiJXSU5ET1cuTUlOSU1JWkUiLDI2NToiU09VTkQuTk9URSIsMjY2OiJTT1VORC5QTEFZIiwyNjc6IkZPUk1BVC5TSEFQRSIsMjY4OiJFWFRFTkQuUE9MWUdPTiIsMjY5OiJGT1JNQVQuQVVUTyIsMjcyOiJHQUxMRVJZLjNELkJBUiIsMjczOiJH'@; put 'QUxMRVJZLjNELlNVUkZBQ0UiLDI3NDoiRklMTC5BVVRPIiwyNzY6IkNVU1RPTUlaRS5UT09MQkFSIiwyNzc6IkFERC5UT09MIiwyNzg6IkVESVQuT0JKRUNUIiwyNzk6Ik9OLkRPVUJMRUNMSUNLIiwyODA6Ik9OLkVOVFJZIiwyODE6IldPUktCT09LLkFERCIsMjgyOiJXT1JLQk9PSy5NT1ZF'@; put 'IiwyODM6IldPUktCT09LLkNPUFkiLDI4NDoiV09SS0JPT0suT1BUSU9OUyIsMjg1OiJTQVZFLldPUktTUEFDRSIsMjg4OiJDSEFSVC5XSVpBUkQiLDI4OToiREVMRVRFLlRPT0wiLDI5MDoiTU9WRS5UT09MIiwyOTE6IldPUktCT09LLlNFTEVDVCIsMjkyOiJXT1JLQk9PSy5BQ1RJVkFURSIs'@; put 'MjkzOiJBU1NJR04uVE8uVE9PTCIsMjk1OiJDT1BZLlRPT0wiLDI5NjoiUkVTRVQuVE9PTCIsMjk3OiJDT05TVFJBSU4uTlVNRVJJQyIsMjk4OiJQQVNURS5UT09MIiwzMDI6IldPUktCT09LLk5FVyIsMzA1OiJTQ0VOQVJJTy5DRUxMUyIsMzA2OiJTQ0VOQVJJTy5ERUxFVEUiLDMwNzoiU0NF'@; put 'TkFSSU8uQUREIiwzMDg6IlNDRU5BUklPLkVESVQiLDMwOToiU0NFTkFSSU8uU0hPVyIsMzEwOiJTQ0VOQVJJTy5TSE9XLk5FWFQiLDMxMToiU0NFTkFSSU8uU1VNTUFSWSIsMzEyOiJQSVZPVC5UQUJMRS5XSVpBUkQiLDMxMzoiUElWT1QuRklFTEQuUFJPUEVSVElFUyIsMzE0OiJQSVZPVC5G'@; put 'SUVMRCIsMzE1OiJQSVZPVC5JVEVNIiwzMTY6IlBJVk9ULkFERC5GSUVMRFMiLDMxODoiT1BUSU9OUy5DQUxDVUxBVElPTiIsMzE5OiJPUFRJT05TLkVESVQiLDMyMDoiT1BUSU9OUy5WSUVXIiwzMjE6IkFERElOLk1BTkFHRVIiLDMyMjoiTUVOVS5FRElUT1IiLDMyMzoiQVRUQUNILlRPT0xC'@; put 'QVJTIiwzMjQ6IlZCQUFjdGl2YXRlIiwzMjU6Ik9QVElPTlMuQ0hBUlQiLDMyODoiVkJBLklOU0VSVC5GSUxFIiwzMzA6IlZCQS5QUk9DRURVUkUuREVGSU5JVElPTiIsMzM2OiJST1VUSU5HLlNMSVAiLDMzODoiUk9VVEUuRE9DVU1FTlQiLDMzOToiTUFJTC5MT0dPTiIsMzQyOiJJTlNFUlQu'@; put 'UElDVFVSRSIsMzQzOiJFRElULlRPT0wiLDM0NDoiR0FMTEVSWS5ET1VHSE5VVCIsMzUwOiJDSEFSVC5UUkVORCIsMzUyOiJQSVZPVC5JVEVNLlBST1BFUlRJRVMiLDM1NDoiV09SS0JPT0suSU5TRVJUIiwzNTU6Ik9QVElPTlMuVFJBTlNJVElPTiIsMzU2OiJPUFRJT05TLkdFTkVSQUwiLDM3'@; put 'MDoiRklMVEVSLkFEVkFOQ0VEIiwzNzM6Ik1BSUwuQURELk1BSUxFUiIsMzc0OiJNQUlMLkRFTEVURS5NQUlMRVIiLDM3NToiTUFJTC5SRVBMWSIsMzc2OiJNQUlMLlJFUExZLkFMTCIsMzc3OiJNQUlMLkZPUldBUkQiLDM3ODoiTUFJTC5ORVhULkxFVFRFUiIsMzc5OiJEQVRBLkxBQkVMIiwz'@; put 'ODA6IklOU0VSVC5USVRMRSIsMzgxOiJGT05ULlBST1BFUlRJRVMiLDM4MjoiTUFDUk8uT1BUSU9OUyIsMzgzOiJXT1JLQk9PSy5ISURFIiwzODQ6IldPUktCT09LLlVOSElERSIsMzg1OiJXT1JLQk9PSy5ERUxFVEUiLDM4NjoiV09SS0JPT0suTkFNRSIsMzg4OiJHQUxMRVJZLkNVU1RPTSIs'@; put 'MzkwOiJBREQuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkxOiJERUxFVEUuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkyOiJDSEFSVC5BREQuREFUQSIsMzkzOiJBVVRPLk9VVExJTkUiLDM5NDoiVEFCLk9SREVSIiwzOTU6IlNIT1cuRElBTE9HIiwzOTY6IlNFTEVDVC5BTEwiLDM5NzoiVU5HUk9VUC5TSEVF'@; put 'VFMiLDM5ODoiU1VCVE9UQUwuQ1JFQVRFIiwzOTk6IlNVQlRPVEFMLlJFTU9WRSIsNDAwOiJSRU5BTUUuT0JKRUNUIiw0MTI6IldPUktCT09LLlNDUk9MTCIsNDEzOiJXT1JLQk9PSy5ORVhUIiw0MTQ6IldPUktCT09LLlBSRVYiLDQxNToiV09SS0JPT0suVEFCLlNQTElUIiw0MTY6IkZVTEwu'@; put 'U0NSRUVOIiw0MTc6IldPUktCT09LLlBST1RFQ1QiLDQyMDoiU0NST0xMQkFSLlBST1BFUlRJRVMiLDQyMToiUElWT1QuU0hPVy5QQUdFUyIsNDIyOiJURVhULlRPLkNPTFVNTlMiLDQyMzoiRk9STUFULkNIQVJUVFlQRSIsNDI0OiJMSU5LLkZPUk1BVCIsNDI1OiJUUkFDRVIuRElTUExBWSIs'@; put 'NDMwOiJUUkFDRVIuTkFWSUdBVEUiLDQzMToiVFJBQ0VSLkNMRUFSIiw0MzI6IlRSQUNFUi5FUlJPUiIsNDMzOiJQSVZPVC5GSUVMRC5HUk9VUCIsNDM0OiJQSVZPVC5GSUVMRC5VTkdST1VQIiw0MzU6IkNIRUNLQk9YLlBST1BFUlRJRVMiLDQzNjoiTEFCRUwuUFJPUEVSVElFUyIsNDM3OiJM'@; put 'SVNUQk9YLlBST1BFUlRJRVMiLDQzODoiRURJVEJPWC5QUk9QRVJUSUVTIiw0Mzk6IlBJVk9ULlJFRlJFU0giLDQ0MDoiTElOSy5DT01CTyIsNDQxOiJPUEVOLlRFWFQiLDQ0MjoiSElERS5ESUFMT0ciLDQ0MzoiU0VULkRJQUxPRy5GT0NVUyIsNDQ0OiJFTkFCTEUuT0JKRUNUIiw0NDU6IlBV'@; put 'U0hCVVRUT04uUFJPUEVSVElFUyIsNDQ2OiJTRVQuRElBTE9HLkRFRkFVTFQiLDQ0NzoiRklMVEVSIiw0NDg6IkZJTFRFUi5TSE9XLkFMTCIsNDQ5OiJDTEVBUi5PVVRMSU5FIiw0NTA6IkZVTkNUSU9OLldJWkFSRCIsNDUxOiJBREQuTElTVC5JVEVNIiw0NTI6IlNFVC5MSVNULklURU0iLDQ1'@; put 'MzoiUkVNT1ZFLkxJU1QuSVRFTSIsNDU0OiJTRUxFQ1QuTElTVC5JVEVNIiw0NTU6IlNFVC5DT05UUk9MLlZBTFVFIiw0NTY6IlNBVkUuQ09QWS5BUyIsNDU4OiJPUFRJT05TLkxJU1RTLkFERCIsNDU5OiJPUFRJT05TLkxJU1RTLkRFTEVURSIsNDYwOiJTRVJJRVMuQVhFUyIsNDYxOiJTRVJJ'@; put 'RVMuWCIsNDYyOiJTRVJJRVMuWSIsNDYzOiJFUlJPUkJBUi5YIiw0NjQ6IkVSUk9SQkFSLlkiLDQ2NToiRk9STUFULkNIQVJUIiw0NjY6IlNFUklFUy5PUkRFUiIsNDY3OiJNQUlMLkxPR09GRiIsNDY4OiJDTEVBUi5ST1VUSU5HLlNMSVAiLDQ2OToiQVBQLkFDVElWQVRFLk1JQ1JPU09GVCIs'@; put 'NDcwOiJNQUlMLkVESVQuTUFJTEVSIiw0NzE6Ik9OLlNIRUVUIiw0NzI6IlNUQU5EQVJELldJRFRIIiw0NzM6IlNDRU5BUklPLk1FUkdFIiw0NzQ6IlNVTU1BUlkuSU5GTyIsNDc1OiJGSU5ELkZJTEUiLDQ3NjoiQUNUSVZFLkNFTEwuRk9OVCIsNDc3OiJFTkFCTEUuVElQV0laQVJEIiw0Nzg6'@; put 'IlZCQS5NQUtFLkFERElOIiw0ODA6IklOU0VSVERBVEFUQUJMRSIsNDgxOiJXT1JLR1JPVVAuT1BUSU9OUyIsNDgyOiJNQUlMLlNFTkQuTUFJTEVSIiw0ODU6IkFVVE9DT1JSRUNUIiw0ODk6IlBPU1QuRE9DVU1FTlQiLDQ5MToiUElDS0xJU1QiLDQ5MzoiVklFVy5TSE9XIiw0OTQ6IlZJRVcu'@; put 'REVGSU5FIiw0OTU6IlZJRVcuREVMRVRFIiw1MDk6IlNIRUVULkJBQ0tHUk9VTkQiLDUxMDoiSU5TRVJULk1BUC5PQkpFQ1QiLDUxMToiT1BUSU9OUy5NRU5PTk8iLDUxNzoiTVNPQ0hFQ0tTIiw1MTg6Ik5PUk1BTCIsNTE5OiJMQVlPVVQiLDUyMDoiUk0uUFJJTlQuQVJFQSIsNTIxOiJDTEVB'@; put 'Ui5QUklOVC5BUkVBIiw1MjI6IkFERC5QUklOVC5BUkVBIiw1MjM6Ik1PVkUuQlJLIiw1NDU6IkhJREVDVVJSLk5PVEUiLDU0NjoiSElERUFMTC5OT1RFUyIsNTQ3OiJERUxFVEUuTk9URSIsNTQ4OiJUUkFWRVJTRS5OT1RFUyIsNTQ5OiJBQ1RJVkFURS5OT1RFUyIsNjIwOiJQUk9URUNULlJF'@; put 'VklTSU9OUyIsNjIxOiJVTlBST1RFQ1QuUkVWSVNJT05TIiw2NDc6Ik9QVElPTlMuTUUiLDY1MzoiV0VCLlBVQkxJU0giLDY2NzoiTkVXV0VCUVVFUlkiLDY3MzoiUElWT1QuVEFCTEUuQ0hBUlQiLDc1MzoiT1BUSU9OUy5TQVZFIiw3NTU6Ik9QVElPTlMuU1BFTEwiLDgwODoiSElERUFMTC5J'@; put 'TktBTk5PVFMifSxvSj17MDoiQ09VTlQiLDE6IklGIiwyOiJJU05BIiwzOiJJU0VSUk9SIiw0OiJTVU0iLDU6IkFWRVJBR0UiLDY6Ik1JTiIsNzoiTUFYIiw4OiJST1ciLDk6IkNPTFVNTiIsMTA6Ik5BIiwxMToiTlBWIiwxMjoiU1RERVYiLDEzOiJET0xMQVIiLDE0OiJGSVhFRCIsMTU6IlNJ'@; put 'TiIsMTY6IkNPUyIsMTc6IlRBTiIsMTg6IkFUQU4iLDE5OiJQSSIsMjA6IlNRUlQiLDIxOiJFWFAiLDIyOiJMTiIsMjM6IkxPRzEwIiwyNDoiQUJTIiwyNToiSU5UIiwyNjoiU0lHTiIsMjc6IlJPVU5EIiwyODoiTE9PS1VQIiwyOToiSU5ERVgiLDMwOiJSRVBUIiwzMToiTUlEIiwzMjoiTEVO'@; put 'IiwzMzoiVkFMVUUiLDM0OiJUUlVFIiwzNToiRkFMU0UiLDM2OiJBTkQiLDM3OiJPUiIsMzg6Ik5PVCIsMzk6Ik1PRCIsNDA6IkRDT1VOVCIsNDE6IkRTVU0iLDQyOiJEQVZFUkFHRSIsNDM6IkRNSU4iLDQ0OiJETUFYIiw0NToiRFNUREVWIiw0NjoiVkFSIiw0NzoiRFZBUiIsNDg6IlRFWFQi'@; put 'LDQ5OiJMSU5FU1QiLDUwOiJUUkVORCIsNTE6IkxPR0VTVCIsNTI6IkdST1dUSCIsNTM6IkdPVE8iLDU0OiJIQUxUIiw1NToiUkVUVVJOIiw1NjoiUFYiLDU3OiJGViIsNTg6Ik5QRVIiLDU5OiJQTVQiLDYwOiJSQVRFIiw2MToiTUlSUiIsNjI6IklSUiIsNjM6IlJBTkQiLDY0OiJNQVRDSCIs'@; put 'NjU6IkRBVEUiLDY2OiJUSU1FIiw2NzoiREFZIiw2ODoiTU9OVEgiLDY5OiJZRUFSIiw3MDoiV0VFS0RBWSIsNzE6IkhPVVIiLDcyOiJNSU5VVEUiLDczOiJTRUNPTkQiLDc0OiJOT1ciLDc1OiJBUkVBUyIsNzY6IlJPV1MiLDc3OiJDT0xVTU5TIiw3ODoiT0ZGU0VUIiw3OToiQUJTUkVGIiw4'@; put 'MDoiUkVMUkVGIiw4MToiQVJHVU1FTlQiLDgyOiJTRUFSQ0giLDgzOiJUUkFOU1BPU0UiLDg0OiJFUlJPUiIsODU6IlNURVAiLDg2OiJUWVBFIiw4NzoiRUNITyIsODg6IlNFVC5OQU1FIiw4OToiQ0FMTEVSIiw5MDoiREVSRUYiLDkxOiJXSU5ET1dTIiw5MjoiU0VSSUVTIiw5MzoiRE9DVU1F'@; put 'TlRTIiw5NDoiQUNUSVZFLkNFTEwiLDk1OiJTRUxFQ1RJT04iLDk2OiJSRVNVTFQiLDk3OiJBVEFOMiIsOTg6IkFTSU4iLDk5OiJBQ09TIiwxMDA6IkNIT09TRSIsMTAxOiJITE9PS1VQIiwxMDI6IlZMT09LVVAiLDEwMzoiTElOS1MiLDEwNDoiSU5QVVQiLDEwNToiSVNSRUYiLDEwNjoiR0VU'@; put 'LkZPUk1VTEEiLDEwNzoiR0VULk5BTUUiLDEwODoiU0VULlZBTFVFIiwxMDk6IkxPRyIsMTEwOiJFWEVDIiwxMTE6IkNIQVIiLDExMjoiTE9XRVIiLDExMzoiVVBQRVIiLDExNDoiUFJPUEVSIiwxMTU6IkxFRlQiLDExNjoiUklHSFQiLDExNzoiRVhBQ1QiLDExODoiVFJJTSIsMTE5OiJSRVBM'@; put 'QUNFIiwxMjA6IlNVQlNUSVRVVEUiLDEyMToiQ09ERSIsMTIyOiJOQU1FUyIsMTIzOiJESVJFQ1RPUlkiLDEyNDoiRklORCIsMTI1OiJDRUxMIiwxMjY6IklTRVJSIiwxMjc6IklTVEVYVCIsMTI4OiJJU05VTUJFUiIsMTI5OiJJU0JMQU5LIiwxMzA6IlQiLDEzMToiTiIsMTMyOiJGT1BFTiIs'@; put 'MTMzOiJGQ0xPU0UiLDEzNDoiRlNJWkUiLDEzNToiRlJFQURMTiIsMTM2OiJGUkVBRCIsMTM3OiJGV1JJVEVMTiIsMTM4OiJGV1JJVEUiLDEzOToiRlBPUyIsMTQwOiJEQVRFVkFMVUUiLDE0MToiVElNRVZBTFVFIiwxNDI6IlNMTiIsMTQzOiJTWUQiLDE0NDoiRERCIiwxNDU6IkdFVC5ERUYi'@; put 'LDE0NjoiUkVGVEVYVCIsMTQ3OiJURVhUUkVGIiwxNDg6IklORElSRUNUIiwxNDk6IlJFR0lTVEVSIiwxNTA6IkNBTEwiLDE1MToiQURELkJBUiIsMTUyOiJBREQuTUVOVSIsMTUzOiJBREQuQ09NTUFORCIsMTU0OiJFTkFCTEUuQ09NTUFORCIsMTU1OiJDSEVDSy5DT01NQU5EIiwxNTY6IlJF'@; put 'TkFNRS5DT01NQU5EIiwxNTc6IlNIT1cuQkFSIiwxNTg6IkRFTEVURS5NRU5VIiwxNTk6IkRFTEVURS5DT01NQU5EIiwxNjA6IkdFVC5DSEFSVC5JVEVNIiwxNjE6IkRJQUxPRy5CT1giLDE2MjoiQ0xFQU4iLDE2MzoiTURFVEVSTSIsMTY0OiJNSU5WRVJTRSIsMTY1OiJNTVVMVCIsMTY2OiJG'@; put 'SUxFUyIsMTY3OiJJUE1UIiwxNjg6IlBQTVQiLDE2OToiQ09VTlRBIiwxNzA6IkNBTkNFTC5LRVkiLDE3MToiRk9SIiwxNzI6IldISUxFIiwxNzM6IkJSRUFLIiwxNzQ6Ik5FWFQiLDE3NToiSU5JVElBVEUiLDE3NjoiUkVRVUVTVCIsMTc3OiJQT0tFIiwxNzg6IkVYRUNVVEUiLDE3OToiVEVS'@; put 'TUlOQVRFIiwxODA6IlJFU1RBUlQiLDE4MToiSEVMUCIsMTgyOiJHRVQuQkFSIiwxODM6IlBST0RVQ1QiLDE4NDoiRkFDVCIsMTg1OiJHRVQuQ0VMTCIsMTg2OiJHRVQuV09SS1NQQUNFIiwxODc6IkdFVC5XSU5ET1ciLDE4ODoiR0VULkRPQ1VNRU5UIiwxODk6IkRQUk9EVUNUIiwxOTA6IklT'@; put 'Tk9OVEVYVCIsMTkxOiJHRVQuTk9URSIsMTkyOiJOT1RFIiwxOTM6IlNUREVWUCIsMTk0OiJWQVJQIiwxOTU6IkRTVERFVlAiLDE5NjoiRFZBUlAiLDE5NzoiVFJVTkMiLDE5ODoiSVNMT0dJQ0FMIiwxOTk6IkRDT1VOVEEiLDIwMDoiREVMRVRFLkJBUiIsMjAxOiJVTlJFR0lTVEVSIiwyMDQ6'@; put 'IlVTRE9MTEFSIiwyMDU6IkZJTkRCIiwyMDY6IlNFQVJDSEIiLDIwNzoiUkVQTEFDRUIiLDIwODoiTEVGVEIiLDIwOToiUklHSFRCIiwyMTA6Ik1JREIiLDIxMToiTEVOQiIsMjEyOiJST1VORFVQIiwyMTM6IlJPVU5ERE9XTiIsMjE0OiJBU0MiLDIxNToiREJDUyIsMjE2OiJSQU5LIiwyMTk6'@; put 'IkFERFJFU1MiLDIyMDoiREFZUzM2MCIsMjIxOiJUT0RBWSIsMjIyOiJWREIiLDIyMzoiRUxTRSIsMjI0OiJFTFNFLklGIiwyMjU6IkVORC5JRiIsMjI2OiJGT1IuQ0VMTCIsMjI3OiJNRURJQU4iLDIyODoiU1VNUFJPRFVDVCIsMjI5OiJTSU5IIiwyMzA6IkNPU0giLDIzMToiVEFOSCIsMjMy'@; put 'OiJBU0lOSCIsMjMzOiJBQ09TSCIsMjM0OiJBVEFOSCIsMjM1OiJER0VUIiwyMzY6IkNSRUFURS5PQkpFQ1QiLDIzNzoiVk9MQVRJTEUiLDIzODoiTEFTVC5FUlJPUiIsMjM5OiJDVVNUT00uVU5ETyIsMjQwOiJDVVNUT00uUkVQRUFUIiwyNDE6IkZPUk1VTEEuQ09OVkVSVCIsMjQyOiJHRVQu'@; put 'TElOSy5JTkZPIiwyNDM6IlRFWFQuQk9YIiwyNDQ6IklORk8iLDI0NToiR1JPVVAiLDI0NjoiR0VULk9CSkVDVCIsMjQ3OiJEQiIsMjQ4OiJQQVVTRSIsMjUxOiJSRVNVTUUiLDI1MjoiRlJFUVVFTkNZIiwyNTM6IkFERC5UT09MQkFSIiwyNTQ6IkRFTEVURS5UT09MQkFSIiwyNTU6IlVzZXIi'@; put 'LDI1NjoiUkVTRVQuVE9PTEJBUiIsMjU3OiJFVkFMVUFURSIsMjU4OiJHRVQuVE9PTEJBUiIsMjU5OiJHRVQuVE9PTCIsMjYwOiJTUEVMTElORy5DSEVDSyIsMjYxOiJFUlJPUi5UWVBFIiwyNjI6IkFQUC5USVRMRSIsMjYzOiJXSU5ET1cuVElUTEUiLDI2NDoiU0FWRS5UT09MQkFSIiwyNjU6'@; put 'IkVOQUJMRS5UT09MIiwyNjY6IlBSRVNTLlRPT0wiLDI2NzoiUkVHSVNURVIuSUQiLDI2ODoiR0VULldPUktCT09LIiwyNjk6IkFWRURFViIsMjcwOiJCRVRBRElTVCIsMjcxOiJHQU1NQUxOIiwyNzI6IkJFVEFJTlYiLDI3MzoiQklOT01ESVNUIiwyNzQ6IkNISURJU1QiLDI3NToiQ0hJSU5W'@; put 'IiwyNzY6IkNPTUJJTiIsMjc3OiJDT05GSURFTkNFIiwyNzg6IkNSSVRCSU5PTSIsMjc5OiJFVkVOIiwyODA6IkVYUE9ORElTVCIsMjgxOiJGRElTVCIsMjgyOiJGSU5WIiwyODM6IkZJU0hFUiIsMjg0OiJGSVNIRVJJTlYiLDI4NToiRkxPT1IiLDI4NjoiR0FNTUFESVNUIiwyODc6IkdBTU1B'@; put 'SU5WIiwyODg6IkNFSUxJTkciLDI4OToiSFlQR0VPTURJU1QiLDI5MDoiTE9HTk9STURJU1QiLDI5MToiTE9HSU5WIiwyOTI6Ik5FR0JJTk9NRElTVCIsMjkzOiJOT1JNRElTVCIsMjk0OiJOT1JNU0RJU1QiLDI5NToiTk9STUlOViIsMjk2OiJOT1JNU0lOViIsMjk3OiJTVEFOREFSRElaRSIs'@; put 'Mjk4OiJPREQiLDI5OToiUEVSTVVUIiwzMDA6IlBPSVNTT04iLDMwMToiVERJU1QiLDMwMjoiV0VJQlVMTCIsMzAzOiJTVU1YTVkyIiwzMDQ6IlNVTVgyTVkyIiwzMDU6IlNVTVgyUFkyIiwzMDY6IkNISVRFU1QiLDMwNzoiQ09SUkVMIiwzMDg6IkNPVkFSIiwzMDk6IkZPUkVDQVNUIiwzMTA6'@; put 'IkZURVNUIiwzMTE6IklOVEVSQ0VQVCIsMzEyOiJQRUFSU09OIiwzMTM6IlJTUSIsMzE0OiJTVEVZWCIsMzE1OiJTTE9QRSIsMzE2OiJUVEVTVCIsMzE3OiJQUk9CIiwzMTg6IkRFVlNRIiwzMTk6IkdFT01FQU4iLDMyMDoiSEFSTUVBTiIsMzIxOiJTVU1TUSIsMzIyOiJLVVJUIiwzMjM6IlNL'@; put 'RVciLDMyNDoiWlRFU1QiLDMyNToiTEFSR0UiLDMyNjoiU01BTEwiLDMyNzoiUVVBUlRJTEUiLDMyODoiUEVSQ0VOVElMRSIsMzI5OiJQRVJDRU5UUkFOSyIsMzMwOiJNT0RFIiwzMzE6IlRSSU1NRUFOIiwzMzI6IlRJTlYiLDMzNDoiTU9WSUUuQ09NTUFORCIsMzM1OiJHRVQuTU9WSUUiLDMz'@; put 'NjoiQ09OQ0FURU5BVEUiLDMzNzoiUE9XRVIiLDMzODoiUElWT1QuQURELkRBVEEiLDMzOToiR0VULlBJVk9ULlRBQkxFIiwzNDA6IkdFVC5QSVZPVC5GSUVMRCIsMzQxOiJHRVQuUElWT1QuSVRFTSIsMzQyOiJSQURJQU5TIiwzNDM6IkRFR1JFRVMiLDM0NDoiU1VCVE9UQUwiLDM0NToiU1VN'@; put 'SUYiLDM0NjoiQ09VTlRJRiIsMzQ3OiJDT1VOVEJMQU5LIiwzNDg6IlNDRU5BUklPLkdFVCIsMzQ5OiJPUFRJT05TLkxJU1RTLkdFVCIsMzUwOiJJU1BNVCIsMzUxOiJEQVRFRElGIiwzNTI6IkRBVEVTVFJJTkciLDM1MzoiTlVNQkVSU1RSSU5HIiwzNTQ6IlJPTUFOIiwzNTU6Ik9QRU4uRElB'@; put 'TE9HIiwzNTY6IlNBVkUuRElBTE9HIiwzNTc6IlZJRVcuR0VUIiwzNTg6IkdFVFBJVk9UREFUQSIsMzU5OiJIWVBFUkxJTksiLDM2MDoiUEhPTkVUSUMiLDM2MToiQVZFUkFHRUEiLDM2MjoiTUFYQSIsMzYzOiJNSU5BIiwzNjQ6IlNUREVWUEEiLDM2NToiVkFSUEEiLDM2NjoiU1RERVZBIiwz'@; put 'Njc6IlZBUkEiLDM2ODoiQkFIVFRFWFQiLDM2OToiVEhBSURBWU9GV0VFSyIsMzcwOiJUSEFJRElHSVQiLDM3MToiVEhBSU1PTlRIT0ZZRUFSIiwzNzI6IlRIQUlOVU1TT1VORCIsMzczOiJUSEFJTlVNU1RSSU5HIiwzNzQ6IlRIQUlTVFJJTkdMRU5HVEgiLDM3NToiSVNUSEFJRElHSVQiLDM3'@; put 'NjoiUk9VTkRCQUhURE9XTiIsMzc3OiJST1VOREJBSFRVUCIsMzc4OiJUSEFJWUVBUiIsMzc5OiJSVEQiLDM4MDoiQ1VCRVZBTFVFIiwzODE6IkNVQkVNRU1CRVIiLDM4MjoiQ1VCRU1FTUJFUlBST1BFUlRZIiwzODM6IkNVQkVSQU5LRURNRU1CRVIiLDM4NDoiSEVYMkJJTiIsMzg1OiJIRVgy'@; put 'REVDIiwzODY6IkhFWDJPQ1QiLDM4NzoiREVDMkJJTiIsMzg4OiJERUMySEVYIiwzODk6IkRFQzJPQ1QiLDM5MDoiT0NUMkJJTiIsMzkxOiJPQ1QySEVYIiwzOTI6Ik9DVDJERUMiLDM5MzoiQklOMkRFQyIsMzk0OiJCSU4yT0NUIiwzOTU6IkJJTjJIRVgiLDM5NjoiSU1TVUIiLDM5NzoiSU1E'@; put 'SVYiLDM5ODoiSU1QT1dFUiIsMzk5OiJJTUFCUyIsNDAwOiJJTVNRUlQiLDQwMToiSU1MTiIsNDAyOiJJTUxPRzIiLDQwMzoiSU1MT0cxMCIsNDA0OiJJTVNJTiIsNDA1OiJJTUNPUyIsNDA2OiJJTUVYUCIsNDA3OiJJTUFSR1VNRU5UIiw0MDg6IklNQ09OSlVHQVRFIiw0MDk6IklNQUdJTkFS'@; put 'WSIsNDEwOiJJTVJFQUwiLDQxMToiQ09NUExFWCIsNDEyOiJJTVNVTSIsNDEzOiJJTVBST0RVQ1QiLDQxNDoiU0VSSUVTU1VNIiw0MTU6IkZBQ1RET1VCTEUiLDQxNjoiU1FSVFBJIiw0MTc6IlFVT1RJRU5UIiw0MTg6IkRFTFRBIiw0MTk6IkdFU1RFUCIsNDIwOiJJU0VWRU4iLDQyMToiSVNP'@; put 'REQiLDQyMjoiTVJPVU5EIiw0MjM6IkVSRiIsNDI0OiJFUkZDIiw0MjU6IkJFU1NFTEoiLDQyNjoiQkVTU0VMSyIsNDI3OiJCRVNTRUxZIiw0Mjg6IkJFU1NFTEkiLDQyOToiWElSUiIsNDMwOiJYTlBWIiw0MzE6IlBSSUNFTUFUIiw0MzI6IllJRUxETUFUIiw0MzM6IklOVFJBVEUiLDQzNDoi'@; put 'UkVDRUlWRUQiLDQzNToiRElTQyIsNDM2OiJQUklDRURJU0MiLDQzNzoiWUlFTERESVNDIiw0Mzg6IlRCSUxMRVEiLDQzOToiVEJJTExQUklDRSIsNDQwOiJUQklMTFlJRUxEIiw0NDE6IlBSSUNFIiw0NDI6IllJRUxEIiw0NDM6IkRPTExBUkRFIiw0NDQ6IkRPTExBUkZSIiw0NDU6Ik5PTUlO'@; put 'QUwiLDQ0NjoiRUZGRUNUIiw0NDc6IkNVTVBSSU5DIiw0NDg6IkNVTUlQTVQiLDQ0OToiRURBVEUiLDQ1MDoiRU9NT05USCIsNDUxOiJZRUFSRlJBQyIsNDUyOiJDT1VQREFZQlMiLDQ1MzoiQ09VUERBWVMiLDQ1NDoiQ09VUERBWVNOQyIsNDU1OiJDT1VQTkNEIiw0NTY6IkNPVVBOVU0iLDQ1'@; put 'NzoiQ09VUFBDRCIsNDU4OiJEVVJBVElPTiIsNDU5OiJNRFVSQVRJT04iLDQ2MDoiT0RETFBSSUNFIiw0NjE6Ik9ERExZSUVMRCIsNDYyOiJPRERGUFJJQ0UiLDQ2MzoiT0RERllJRUxEIiw0NjQ6IlJBTkRCRVRXRUVOIiw0NjU6IldFRUtOVU0iLDQ2NjoiQU1PUkRFR1JDIiw0Njc6IkFNT1JM'@; put 'SU5DIiw0Njg6IkNPTlZFUlQiLDcyNDoiU0hFRVRKUyIsNDY5OiJBQ0NSSU5UIiw0NzA6IkFDQ1JJTlRNIiw0NzE6IldPUktEQVkiLDQ3MjoiTkVUV09SS0RBWVMiLDQ3MzoiR0NEIiw0NzQ6Ik1VTFRJTk9NSUFMIiw0NzU6IkxDTSIsNDc2OiJGVlNDSEVEVUxFIiw0Nzc6IkNVQkVLUElNRU1C'@; put 'RVIiLDQ3ODoiQ1VCRVNFVCIsNDc5OiJDVUJFU0VUQ09VTlQiLDQ4MDoiSUZFUlJPUiIsNDgxOiJDT1VOVElGUyIsNDgyOiJTVU1JRlMiLDQ4MzoiQVZFUkFHRUlGIiw0ODQ6IkFWRVJBR0VJRlMifSxBNWU9ezI6MSwzOjEsMTA6MCwxNToxLDE2OjEsMTc6MSwxODoxLDE5OjAsMjA6MSwyMTox'@; put 'LDIyOjEsMjM6MSwyNDoxLDI1OjEsMjY6MSwyNzoyLDMwOjIsMzE6MywzMjoxLDMzOjEsMzQ6MCwzNTowLDM4OjEsMzk6Miw0MDozLDQxOjMsNDI6Myw0MzozLDQ0OjMsNDU6Myw0NzozLDQ4OjIsNTM6MSw2MTozLDYzOjAsNjU6Myw2NjozLDY3OjEsNjg6MSw2OToxLDcwOjEsNzE6MSw3Mjox'@; put 'LDczOjEsNzQ6MCw3NToxLDc2OjEsNzc6MSw3OToyLDgwOjIsODM6MSw4NTowLDg2OjEsODk6MCw5MDoxLDk0OjAsOTU6MCw5NzoyLDk4OjEsOTk6MSwxMDE6MywxMDI6MywxMDU6MSwxMDY6MSwxMDg6MiwxMTE6MSwxMTI6MSwxMTM6MSwxMTQ6MSwxMTc6MiwxMTg6MSwxMTk6NCwxMjE6MSwx'@; put 'MjY6MSwxMjc6MSwxMjg6MSwxMjk6MSwxMzA6MSwxMzE6MSwxMzM6MSwxMzQ6MSwxMzU6MSwxMzY6MiwxMzc6MiwxMzg6MiwxNDA6MSwxNDE6MSwxNDI6MywxNDM6NCwxNDQ6NCwxNjE6MSwxNjI6MSwxNjM6MSwxNjQ6MSwxNjU6MiwxNzI6MSwxNzU6MiwxNzY6MiwxNzc6MywxNzg6MiwxNzk6'@; put 'MSwxODQ6MSwxODY6MSwxODk6MywxOTA6MSwxOTU6MywxOTY6MywxOTc6MSwxOTg6MSwxOTk6MywyMDE6MSwyMDc6NCwyMTA6MywyMTE6MSwyMTI6MiwyMTM6MiwyMTQ6MSwyMTU6MSwyMjU6MCwyMjk6MSwyMzA6MSwyMzE6MSwyMzI6MSwyMzM6MSwyMzQ6MSwyMzU6MywyNDQ6MSwyNDc6NCwy'@; put 'NTI6MiwyNTc6MSwyNjE6MSwyNzE6MSwyNzM6NCwyNzQ6MiwyNzU6MiwyNzY6MiwyNzc6MywyNzg6MywyNzk6MSwyODA6MywyODE6MywyODI6MywyODM6MSwyODQ6MSwyODU6MiwyODY6NCwyODc6MywyODg6MiwyODk6NCwyOTA6MywyOTE6MywyOTI6MywyOTM6NCwyOTQ6MSwyOTU6MywyOTY6'@; put 'MSwyOTc6MywyOTg6MSwyOTk6MiwzMDA6MywzMDE6MywzMDI6NCwzMDM6MiwzMDQ6MiwzMDU6MiwzMDY6MiwzMDc6MiwzMDg6MiwzMDk6MywzMTA6MiwzMTE6MiwzMTI6MiwzMTM6MiwzMTQ6MiwzMTU6MiwzMTY6NCwzMjU6MiwzMjY6MiwzMjc6MiwzMjg6MiwzMzE6MiwzMzI6MiwzMzc6Miwz'@; put 'NDI6MSwzNDM6MSwzNDY6MiwzNDc6MSwzNTA6NCwzNTE6MywzNTI6MSwzNTM6MiwzNjA6MSwzNjg6MSwzNjk6MSwzNzA6MSwzNzE6MSwzNzI6MSwzNzM6MSwzNzQ6MSwzNzU6MSwzNzY6MSwzNzc6MSwzNzg6MSwzODI6MywzODU6MSwzOTI6MSwzOTM6MSwzOTY6MiwzOTc6MiwzOTg6MiwzOTk6'@; put 'MSw0MDA6MSw0MDE6MSw0MDI6MSw0MDM6MSw0MDQ6MSw0MDU6MSw0MDY6MSw0MDc6MSw0MDg6MSw0MDk6MSw0MTA6MSw0MTQ6NCw0MTU6MSw0MTY6MSw0MTc6Miw0MjA6MSw0MjE6MSw0MjI6Miw0MjQ6MSw0MjU6Miw0MjY6Miw0Mjc6Miw0Mjg6Miw0MzA6Myw0Mzg6Myw0Mzk6Myw0NDA6Myw0'@; put 'NDM6Miw0NDQ6Miw0NDU6Miw0NDY6Miw0NDc6Niw0NDg6Niw0NDk6Miw0NTA6Miw0NjQ6Miw0Njg6Myw0NzY6Miw0Nzk6MSw0ODA6Miw2NTUzNTowfSxhSj17Il94bGZuLkFDT1QiOiJBQ09UIiwiX3hsZm4uQUNPVEgiOiJBQ09USCIsIl94bGZuLkFHR1JFR0FURSI6IkFHR1JFR0FURSIsIl94'@; put 'bGZuLkFSQUJJQyI6IkFSQUJJQyIsIl94bGZuLkFWRVJBR0VJRiI6IkFWRVJBR0VJRiIsIl94bGZuLkFWRVJBR0VJRlMiOiJBVkVSQUdFSUZTIiwiX3hsZm4uQkFTRSI6IkJBU0UiLCJfeGxmbi5CRVRBLkRJU1QiOiJCRVRBLkRJU1QiLCJfeGxmbi5CRVRBLklOViI6IkJFVEEuSU5WIiwiX3hs'@; put 'Zm4uQklOT00uRElTVCI6IkJJTk9NLkRJU1QiLCJfeGxmbi5CSU5PTS5ESVNULlJBTkdFIjoiQklOT00uRElTVC5SQU5HRSIsIl94bGZuLkJJTk9NLklOViI6IkJJTk9NLklOViIsIl94bGZuLkJJVEFORCI6IkJJVEFORCIsIl94bGZuLkJJVExTSElGVCI6IkJJVExTSElGVCIsIl94bGZuLkJJ'@; put 'VE9SIjoiQklUT1IiLCJfeGxmbi5CSVRSU0hJRlQiOiJCSVRSU0hJRlQiLCJfeGxmbi5CSVRYT1IiOiJCSVRYT1IiLCJfeGxmbi5DRUlMSU5HLk1BVEgiOiJDRUlMSU5HLk1BVEgiLCJfeGxmbi5DRUlMSU5HLlBSRUNJU0UiOiJDRUlMSU5HLlBSRUNJU0UiLCJfeGxmbi5DSElTUS5ESVNUIjoi'@; put 'Q0hJU1EuRElTVCIsIl94bGZuLkNISVNRLkRJU1QuUlQiOiJDSElTUS5ESVNULlJUIiwiX3hsZm4uQ0hJU1EuSU5WIjoiQ0hJU1EuSU5WIiwiX3hsZm4uQ0hJU1EuSU5WLlJUIjoiQ0hJU1EuSU5WLlJUIiwiX3hsZm4uQ0hJU1EuVEVTVCI6IkNISVNRLlRFU1QiLCJfeGxmbi5DT01CSU5BIjoi'@; put 'Q09NQklOQSIsIl94bGZuLkNPTkNBVCI6IkNPTkNBVCIsIl94bGZuLkNPTkZJREVOQ0UuTk9STSI6IkNPTkZJREVOQ0UuTk9STSIsIl94bGZuLkNPTkZJREVOQ0UuVCI6IkNPTkZJREVOQ0UuVCIsIl94bGZuLkNPVCI6IkNPVCIsIl94bGZuLkNPVEgiOiJDT1RIIiwiX3hsZm4uQ09VTlRJRlMi'@; put 'OiJDT1VOVElGUyIsIl94bGZuLkNPVkFSSUFOQ0UuUCI6IkNPVkFSSUFOQ0UuUCIsIl94bGZuLkNPVkFSSUFOQ0UuUyI6IkNPVkFSSUFOQ0UuUyIsIl94bGZuLkNTQyI6IkNTQyIsIl94bGZuLkNTQ0giOiJDU0NIIiwiX3hsZm4uREFZUyI6IkRBWVMiLCJfeGxmbi5ERUNJTUFMIjoiREVDSU1B'@; put 'TCIsIl94bGZuLkVDTUEuQ0VJTElORyI6IkVDTUEuQ0VJTElORyIsIl94bGZuLkVSRi5QUkVDSVNFIjoiRVJGLlBSRUNJU0UiLCJfeGxmbi5FUkZDLlBSRUNJU0UiOiJFUkZDLlBSRUNJU0UiLCJfeGxmbi5FWFBPTi5ESVNUIjoiRVhQT04uRElTVCIsIl94bGZuLkYuRElTVCI6IkYuRElTVCIs'@; put 'Il94bGZuLkYuRElTVC5SVCI6IkYuRElTVC5SVCIsIl94bGZuLkYuSU5WIjoiRi5JTlYiLCJfeGxmbi5GLklOVi5SVCI6IkYuSU5WLlJUIiwiX3hsZm4uRi5URVNUIjoiRi5URVNUIiwiX3hsZm4uRklMVEVSWE1MIjoiRklMVEVSWE1MIiwiX3hsZm4uRkxPT1IuTUFUSCI6IkZMT09SLk1BVEgi'@; put 'LCJfeGxmbi5GTE9PUi5QUkVDSVNFIjoiRkxPT1IuUFJFQ0lTRSIsIl94bGZuLkZPUkVDQVNULkVUUyI6IkZPUkVDQVNULkVUUyIsIl94bGZuLkZPUkVDQVNULkVUUy5DT05GSU5UIjoiRk9SRUNBU1QuRVRTLkNPTkZJTlQiLCJfeGxmbi5GT1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkiOiJGT1JF'@; put 'Q0FTVC5FVFMuU0VBU09OQUxJVFkiLCJfeGxmbi5GT1JFQ0FTVC5FVFMuU1RBVCI6IkZPUkVDQVNULkVUUy5TVEFUIiwiX3hsZm4uRk9SRUNBU1QuTElORUFSIjoiRk9SRUNBU1QuTElORUFSIiwiX3hsZm4uRk9STVVMQVRFWFQiOiJGT1JNVUxBVEVYVCIsIl94bGZuLkdBTU1BIjoiR0FNTUEi'@; put 'LCJfeGxmbi5HQU1NQS5ESVNUIjoiR0FNTUEuRElTVCIsIl94bGZuLkdBTU1BLklOViI6IkdBTU1BLklOViIsIl94bGZuLkdBTU1BTE4uUFJFQ0lTRSI6IkdBTU1BTE4uUFJFQ0lTRSIsIl94bGZuLkdBVVNTIjoiR0FVU1MiLCJfeGxmbi5IWVBHRU9NLkRJU1QiOiJIWVBHRU9NLkRJU1QiLCJf'@; put 'eGxmbi5JRkVSUk9SIjoiSUZFUlJPUiIsIl94bGZuLklGTkEiOiJJRk5BIiwiX3hsZm4uSUZTIjoiSUZTIiwiX3hsZm4uSU1DT1NIIjoiSU1DT1NIIiwiX3hsZm4uSU1DT1QiOiJJTUNPVCIsIl94bGZuLklNQ1NDIjoiSU1DU0MiLCJfeGxmbi5JTUNTQ0giOiJJTUNTQ0giLCJfeGxmbi5JTVNF'@; put 'QyI6IklNU0VDIiwiX3hsZm4uSU1TRUNIIjoiSU1TRUNIIiwiX3hsZm4uSU1TSU5IIjoiSU1TSU5IIiwiX3hsZm4uSU1UQU4iOiJJTVRBTiIsIl94bGZuLklTRk9STVVMQSI6IklTRk9STVVMQSIsIl94bGZuLklTTy5DRUlMSU5HIjoiSVNPLkNFSUxJTkciLCJfeGxmbi5JU09XRUVLTlVNIjoi'@; put 'SVNPV0VFS05VTSIsIl94bGZuLkxPR05PUk0uRElTVCI6IkxPR05PUk0uRElTVCIsIl94bGZuLkxPR05PUk0uSU5WIjoiTE9HTk9STS5JTlYiLCJfeGxmbi5NQVhJRlMiOiJNQVhJRlMiLCJfeGxmbi5NSU5JRlMiOiJNSU5JRlMiLCJfeGxmbi5NT0RFLk1VTFQiOiJNT0RFLk1VTFQiLCJfeGxm'@; put 'bi5NT0RFLlNOR0wiOiJNT0RFLlNOR0wiLCJfeGxmbi5NVU5JVCI6Ik1VTklUIiwiX3hsZm4uTkVHQklOT00uRElTVCI6Ik5FR0JJTk9NLkRJU1QiLCJfeGxmbi5ORVRXT1JLREFZUy5JTlRMIjoiTkVUV09SS0RBWVMuSU5UTCIsIl94bGZuLk5JR0JJTk9NIjoiTklHQklOT00iLCJfeGxmbi5O'@; put 'T1JNLkRJU1QiOiJOT1JNLkRJU1QiLCJfeGxmbi5OT1JNLklOViI6Ik5PUk0uSU5WIiwiX3hsZm4uTk9STS5TLkRJU1QiOiJOT1JNLlMuRElTVCIsIl94bGZuLk5PUk0uUy5JTlYiOiJOT1JNLlMuSU5WIiwiX3hsZm4uTlVNQkVSVkFMVUUiOiJOVU1CRVJWQUxVRSIsIl94bGZuLlBEVVJBVElP'@; put 'TiI6IlBEVVJBVElPTiIsIl94bGZuLlBFUkNFTlRJTEUuRVhDIjoiUEVSQ0VOVElMRS5FWEMiLCJfeGxmbi5QRVJDRU5USUxFLklOQyI6IlBFUkNFTlRJTEUuSU5DIiwiX3hsZm4uUEVSQ0VOVFJBTksuRVhDIjoiUEVSQ0VOVFJBTksuRVhDIiwiX3hsZm4uUEVSQ0VOVFJBTksuSU5DIjoiUEVS'@; put 'Q0VOVFJBTksuSU5DIiwiX3hsZm4uUEVSTVVUQVRJT05BIjoiUEVSTVVUQVRJT05BIiwiX3hsZm4uUEhJIjoiUEhJIiwiX3hsZm4uUE9JU1NPTi5ESVNUIjoiUE9JU1NPTi5ESVNUIiwiX3hsZm4uUVVBUlRJTEUuRVhDIjoiUVVBUlRJTEUuRVhDIiwiX3hsZm4uUVVBUlRJTEUuSU5DIjoiUVVB'@; put 'UlRJTEUuSU5DIiwiX3hsZm4uUVVFUllTVFJJTkciOiJRVUVSWVNUUklORyIsIl94bGZuLlJBTksuQVZHIjoiUkFOSy5BVkciLCJfeGxmbi5SQU5LLkVRIjoiUkFOSy5FUSIsIl94bGZuLlJSSSI6IlJSSSIsIl94bGZuLlNFQyI6IlNFQyIsIl94bGZuLlNFQ0giOiJTRUNIIiwiX3hsZm4uU0hF'@; put 'RVQiOiJTSEVFVCIsIl94bGZuLlNIRUVUUyI6IlNIRUVUUyIsIl94bGZuLlNLRVcuUCI6IlNLRVcuUCIsIl94bGZuLlNUREVWLlAiOiJTVERFVi5QIiwiX3hsZm4uU1RERVYuUyI6IlNUREVWLlMiLCJfeGxmbi5TVU1JRlMiOiJTVU1JRlMiLCJfeGxmbi5TV0lUQ0giOiJTV0lUQ0giLCJfeGxm'@; put 'bi5ULkRJU1QiOiJULkRJU1QiLCJfeGxmbi5ULkRJU1QuMlQiOiJULkRJU1QuMlQiLCJfeGxmbi5ULkRJU1QuUlQiOiJULkRJU1QuUlQiLCJfeGxmbi5ULklOViI6IlQuSU5WIiwiX3hsZm4uVC5JTlYuMlQiOiJULklOVi4yVCIsIl94bGZuLlQuVEVTVCI6IlQuVEVTVCIsIl94bGZuLlRFWFRK'@; put 'T0lOIjoiVEVYVEpPSU4iLCJfeGxmbi5VTklDSEFSIjoiVU5JQ0hBUiIsIl94bGZuLlVOSUNPREUiOiJVTklDT0RFIiwiX3hsZm4uVkFSLlAiOiJWQVIuUCIsIl94bGZuLlZBUi5TIjoiVkFSLlMiLCJfeGxmbi5XRUJTRVJWSUNFIjoiV0VCU0VSVklDRSIsIl94bGZuLldFSUJVTEwuRElTVCI6'@; put 'IldFSUJVTEwuRElTVCIsIl94bGZuLldPUktEQVkuSU5UTCI6IldPUktEQVkuSU5UTCIsIl94bGZuLlhPUiI6IlhPUiIsIl94bGZuLlouVEVTVCI6IlouVEVTVCJ9O2Z1bmN0aW9uIElrKGQpe3JldHVybiJvZjoiPT1kLnNsaWNlKDAsMykmJihkPWQuc2xpY2UoMykpLDYxPT1kLmNoYXJDb2Rl'@; put 'QXQoMCkmJjYxPT0oZD1kLnNsaWNlKDEpKS5jaGFyQ29kZUF0KDApJiYoZD1kLnNsaWNlKDEpKSwoZD0oZD0oZD1kLnJlcGxhY2UoL0NPTVwuTUlDUk9TT0ZUXC4vZywiIikpLnJlcGxhY2UoL1xbKCg/OlwuW0EtWl0rWzAtOV0rKSg/OjpcLltBLVpdK1swLTldKyk/KVxdL2csZnVuY3Rpb24o'@; put 'XyxtKXtyZXR1cm4gbS5yZXBsYWNlKC9cLi9nLCIiKX0pKS5yZXBsYWNlKC9cWy4oI1tBLVpdKls/IV0pXF0vZywiJDEiKSkucmVwbGFjZSgvWzt+XS9nLCIsIikucmVwbGFjZSgvXHwvZywiOyIpfWZ1bmN0aW9uIHNKKGQpe3JldHVybigib2Y6PSIrZC5yZXBsYWNlKGRrLCIkMVsuJDIkMyQ0'@; put 'JDVdIikucmVwbGFjZSgvXF06XFsvZywiOiIpKS5yZXBsYWNlKC87L2csInwiKS5yZXBsYWNlKC8sL2csIjsiKX1mdW5jdGlvbiBEUyhkKXt2YXIgXz1kLnNwbGl0KCI6Iik7cmV0dXJuW19bMF0uc3BsaXQoIi4iKVswXSxfWzBdLnNwbGl0KCIuIilbMV0rKF8ubGVuZ3RoPjE/IjoiKyhfWzFd'@; put 'LnNwbGl0KCIuIilbMV18fF9bMV0uc3BsaXQoIi4iKVswXSk6IiIpXX1mdW5jdGlvbiBEayhkKXtyZXR1cm4gZC5yZXBsYWNlKC9cLi8sIiEiKX12YXIgSDk9e30sWG09e307dWEuV1M9WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxh'@; put 'dGlvbnNoaXBzL3dvcmtzaGVldCIsImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL29mZmljZURvY3VtZW50L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0Il07dmFyIE01PXR5cGVvZiBNYXA8InUiO2Z1bmN0aW9uIExrKGQsXyxtLFQpe3ZhciBQPTAsUT1kLmxlbmd0aDtpZihUKXtpZihNNT9U'@; put 'LmhhcyhfKTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVCxfKSlmb3IodmFyIHNlPU01P1QuZ2V0KF8pOlRbX107UDxzZS5sZW5ndGg7KytQKWlmKGRbc2VbUF1dLnQ9PT1fJiYoIWRbc2VbUF1dLnImJiFtfHxkW3NlW1BdXS5yPT1tKSlyZXR1cm4gZC5Db3VudCsrLHNl'@; put 'W1BdfWVsc2UgZm9yKDtQPFE7KytQKWlmKGRbUF0udD09PV8mJighZFtQXS5yJiYhbXx8ZFtQXS5yPT1tKSlyZXR1cm4gZC5Db3VudCsrLFA7cmV0dXJuIGRbUV09e3Q6XyxyOm19LGQuQ291bnQrKyxkLlVuaXF1ZSsrLFQmJihNNT8oVC5oYXMoXyl8fFQuc2V0KF8sW10pLFQuZ2V0KF8pLnB1'@; put 'c2goUSkpOihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVCxfKXx8KFRbX109W10pLFRbX10ucHVzaChRKSkpLFF9ZnVuY3Rpb24gT2soZCxfKXt2YXIgbT17bWluOmQrMSxtYXg6ZCsxfSxUPXNkO2lmKCFfKXJldHVybiBfO3ZhciBQPS0xO3JldHVybiBfLmF1dG8mJiht'@; put 'LmJlc3RGaXQ9MSxfLmJlc3R3aWR0aCYmKFA9Xy5iZXN0d2lkdGgpLGRlbGV0ZSBfLmJlc3R3aWR0aCksbnVsbCE9Xy53cHg/UD15OChfLndweCk6bnVsbCE9Xy53Y2g/UD1fLndjaDpudWxsIT1fLndpZHRoJiYobS5jdXN0b21XaWR0aD0xKSxQPi0xPyhtLndpZHRoPXBTKFApLG0uY3VzdG9t'@; put 'V2lkdGg9MSk6bnVsbCE9Xy53aWR0aCYmKG0ud2lkdGg9Xy53aWR0aCksXy5oaWRkZW4mJihtLmhpZGRlbj0hMCksbS5iZXN0Rml0JiZkZWxldGUgbS5jdXN0b21XaWR0aCxzZD1ULG51bGwhPV8ubGV2ZWwmJihtLm91dGxpbmVMZXZlbD1tLmxldmVsPV8ubGV2ZWwpLG51bGwhPV8uc3R5bGUm'@; put 'JihtLnN0eWxlPV8uc3R5bGUpLG19ZnVuY3Rpb24geFYoZCxfLG0pe3ZhciBUPXphKGRbIiFyZWYiXSksUD0wLFE9ZFsiIW1lcmdlcyJdfHxbXSxzZT1BcnJheS5pc0FycmF5KGQpO2U6Zm9yKHZhciBvZT0wO29lPD1ULmUucjsrK29lKXtmb3IodmFyIGRlPTA7ZGU8US5sZW5ndGg7KytkZSlp'@; put 'ZihRW2RlXS5zLnI8PW9lJiZvZTw9UVtkZV0uZS5yJiZRW2RlXS5zLmM8PW0mJm08PVFbZGVdLmUuYyljb250aW51ZSBlO3ZhciBMZT1zZT8oZFtvZV18fFtdKVttXTpkW3FpKHtyOm9lLGM6bX0pXTtpZihMZSl7dmFyIE5lPTE7aWYoTGUucyYmKE5lPVlBKExlLnMpL2c1LkNhbGlicmlbMTJd'@; put 'fHwxKSxMZS53KVA9TWF0aC5tYXgoUCxMZS53Lmxlbmd0aCpOZSk7ZWxzZSBzd2l0Y2goTGUudCl7Y2FzZSJiIjpjYXNlImUiOlA9TWF0aC5tYXgoUCw1Kk5lKTticmVhaztjYXNlInMiOlA9TWF0aC5tYXgoUCxMZS52Lmxlbmd0aCpOZSoxLjJ8MCk7YnJlYWs7Y2FzZSJuIjpqdChMZSxMZS52'@; put 'KSxQPU1hdGgubWF4KFAsU3RyaW5nKExlLnd8fExlLnYpLmxlbmd0aCpOZSk7YnJlYWs7Y2FzZSJkIjpQPU1hdGgubWF4KFAsOCpOZSl9fX1QPDEmJihQPTEpLF8uYmVzdHdpZHRoPVB9ZnVuY3Rpb24gTDgoZCxfKXtpZihkKXt2YXIgbT1bLjcsLjcsLjc1LC43NSwuMywuM107InhsbWwiPT1f'@; put 'JiYobT1bMSwxLDEsMSwuNSwuNV0pLG51bGw9PWQubGVmdCYmKGQubGVmdD1tWzBdKSxudWxsPT1kLnJpZ2h0JiYoZC5yaWdodD1tWzFdKSxudWxsPT1kLnRvcCYmKGQudG9wPW1bMl0pLG51bGw9PWQuYm90dG9tJiYoZC5ib3R0b209bVszXSksbnVsbD09ZC5oZWFkZXImJihkLmhlYWRlcj1t'@; put 'WzRdKSxudWxsPT1kLmZvb3RlciYmKGQuZm9vdGVyPW1bNV0pfX1mdW5jdGlvbiBOayhkLF8pe2Zvcih2YXIgbT1GZShfKSxUPTA7VDxkLmxlbmd0aDsrK1Qpe3ZhciBQPSEwLFE9ZFtUXTtpZihRJiZtLmxlbmd0aD09RmUoUSkubGVuZ3RoJiYobS5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtpZihQ'@; put 'KXtpZihudWxsPT09X1tzZV0hPShudWxsPT09UVtzZV0pKXJldHVybiB2b2lkKFA9ITEpO2lmKCJvYmplY3QiPT10eXBlb2YgX1tzZV0paWYoWyJjb2xvciIsImZnQ29sb3IiLCJiZ0NvbG9yIl0uaW5kZXhPZihzZSk+LTEpe2lmKE9nKF9bc2VdLFFbc2VdKSlyZXR1cm4gdm9pZChQPSExKX1l'@; put 'bHNle2lmKCEoWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXS5pbmRleE9mKHNlKT4tMSkpcmV0dXJuIHZvaWQoUD0hMSk7aWYodTVlKF9bc2VdLFFbc2VdKSlyZXR1cm4gdm9pZChQPSExKX1pZihfW3NlXSE9UVtzZV0pcmV0dXJuIHZvaWQoUD0hMSl9fSksUCkpcmV0dXJuIFR9cmV0'@; put 'dXJuIGRbZC5sZW5ndGhdPVFyKF8pLGQubGVuZ3RoLTF9ZnVuY3Rpb24gQTIoZCxfLG0sVCl7dmFyIFA9VC5yZXZzc2ZbbnVsbCE9bS56P20uejoiR2VuZXJhbCJdLFE9NjAsc2U9ZC5sZW5ndGg7aWYobnVsbD09UCYmVC5zc2YpZm9yKDtRPDM5MjsrK1EpaWYobnVsbD09VC5zc2ZbUV0pe0ku'@; put 'bG9hZChtLnosUSksVC5zc2ZbUV09bS56LFQucmV2c3NmW20uel09UD1RO2JyZWFrfXZhciBvZT0wLGRlPTAsTGU9MCxOZT0wO2lmKFQuY2VsbFN0eWxlcyl7aWYobS5zKXtpZihULkZvbnRzKXttLnMuY29sb3J8fChtLnMuY29sb3I9e3RoZW1lOjEscmdiOiIwMDAwMDAifSk7Zm9yKHZhciBC'@; put 'ZT0obS5zLmJvbGQ/MTowKXwobS5zLml0YWxpYz8yOjApfChtLnMuc3RyaWtlPzQ6MCl8KG0ucy5zaGFkb3c/ODowKTtvZTxULkZvbnRzLmxlbmd0aDsrK29lKXt2YXIgWmU9VC5Gb250c1tvZV07aWYobnVsbD09WmUuZm9udGhhc2gmJihaZS5mb250aGFzaD0oWmUuYm9sZD8xOjApfChaZS5p'@; put 'dGFsaWM/MjowKXwoWmUuc3RyaWtlPzQ6MCl8KFplLnNoYWRvdz84OjApKSwhKEJlIT1aZS5mb250aGFzaHx8ISFtLnMuY29sb3IhPSEhWmUuY29sb3J8fG0ucy52YWxpZ24hPVplLnZhbGlnbnx8KG0ucy5zenx8WmUuc3opJiYobS5zLnN6fHwxMikhPShaZS5zenx8MTIpfHxtLnMubmFtZSYm'@; put 'bS5zLm5hbWUhPVplLm5hbWV8fChtLnMudW5kZXJsaW5lfHwwKSE9KFplLnVuZGVybGluZXx8MCl8fG0ucy5jb2xvciYmT2cobS5zLmNvbG9yLFplLmNvbG9yKSkpYnJlYWt9b2U9PVQuRm9udHMubGVuZ3RoJiYoVC5Gb250cy5wdXNoKHtzejptLnMuc3p8fDEyLGNvbG9yOm0ucy5jb2xvcnx8'@; put 'e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOm0ucy5uYW1lfHwiQ2FsaWJyaSIsZmFtaWx5Om0ucy5mYW1pbHl8fDIsc2NoZW1lOm0ucy5zY2hlbWUsYm9sZDptLnMuYm9sZCxpdGFsaWM6bS5zLml0YWxpYyxzdHJpa2U6bS5zLnN0cmlrZSxzaGFkb3c6bS5zLnNoYWRvdyx2YWxpZ246bS5z'@; put 'LnZhbGlnbix1bmRlcmxpbmU6bS5zLnVuZGVybGluZX0pLDE9PVQuRm9udHMubGVuZ3RoJiYkbShULkZvbnRzWzBdKSl9aWYoVC5GaWxscyl7Zm9yKDtkZTxULkZpbGxzLmxlbmd0aDsrK2RlKXt2YXIgbnQ9VC5GaWxsc1tkZV07aWYoISFtLnMuc3RvcHM9PSEhbnQuc3RvcHMpe2lmKG0ucy5z'@; put 'dG9wcyl7aWYobS5zLmFuZ2xlIT1udC5hbmdsZSljb250aW51ZTt2YXIgbXQ9ITA7aWYobS5zLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYnQsRXQpe09nKGJ0LG50LnN0b3BzW0V0XSkmJihtdD0hMSksYnQudiE9bnQuc3RvcHNbRXRdLnYmJihtdD0hMSl9KSwhbXQpY29udGludWV9ZWxzZXtp'@; put 'ZihudWxsPT1tLnMucGF0dGVyblR5cGUmJm0ucy5mZ0NvbG9yJiYobS5zLnBhdHRlcm5UeXBlPSJzb2xpZCIpLG51bGw9PW0ucy5wYXR0ZXJuVHlwZSlicmVhaztpZihtLnMucGF0dGVyblR5cGUhPW50LnBhdHRlcm5UeXBlfHxPZyhtLnMuZmdDb2xvcixudC5mZ0NvbG9yKXx8T2cobS5zLmJn'@; put 'Q29sb3IsbnQuYmdDb2xvcikpY29udGludWV9YnJlYWt9fWlmKGRlPT1ULkZpbGxzLmxlbmd0aCl7dmFyIFFlPXt9O20ucy5zdG9wcz8obnVsbCE9bS5zLmFuZ2xlJiYoUWUuYW5nbGU9bS5zLmFuZ2xlKSxRZS5zdG9wcz1bXSxtLnMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihidCl7UWUuc3Rv'@; put 'cHMucHVzaChRcihidCkpfSkpOlFlPXtwYXR0ZXJuVHlwZTptLnMucGF0dGVyblR5cGUsZmdDb2xvcjptLnMuZmdDb2xvcixiZ0NvbG9yOm0ucy5iZ0NvbG9yfSxULkZpbGxzLnB1c2goUWUpfX1pZihULkJvcmRlcnMpe2Zvcig7TGU8VC5Cb3JkZXJzLmxlbmd0aDsrK0xlKXt2YXIgZnQ9VC5C'@; put 'b3JkZXJzW0xlXSxrdD0idG9wIjtpZihtLnNba3RdKXtpZighZnRba3RdfHxtLnNba3RdLnN0eWxlIT1mdFtrdF0uc3R5bGV8fE9nKG0uc1trdF0uY29sb3IsZnRba3RdLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPWZ0W2t0XSljb250aW51ZTtpZihtLnNba3Q9ImJvdHRvbSJdKXtp'@; put 'ZighZnRba3RdfHxtLnNba3RdLnN0eWxlIT1mdFtrdF0uc3R5bGV8fE9nKG0uc1trdF0uY29sb3IsZnRba3RdLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPWZ0W2t0XSljb250aW51ZTtpZihtLnNba3Q9ImxlZnQiXSl7aWYoIWZ0W2t0XXx8bS5zW2t0XS5zdHlsZSE9ZnRba3RdLnN0'@; put 'eWxlfHxPZyhtLnNba3RdLmNvbG9yLGZ0W2t0XS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT1mdFtrdF0pY29udGludWU7aWYobS5zW2t0PSJyaWdodCJdKXtpZighZnRba3RdfHxtLnNba3RdLnN0eWxlIT1mdFtrdF0uc3R5bGV8fE9nKG0uc1trdF0uY29sb3IsZnRba3RdLmNvbG9y'@; put 'KSljb250aW51ZX1lbHNlIGlmKG51bGwhPWZ0W2t0XSljb250aW51ZTticmVha31MZT09VC5Cb3JkZXJzLmxlbmd0aCYmVC5Cb3JkZXJzLnB1c2goe3RvcDptLnMudG9wJiZRcihtLnMudG9wKXx8dm9pZCAwLGJvdHRvbTptLnMuYm90dG9tJiZRcihtLnMuYm90dG9tKXx8dm9pZCAwLGxlZnQ6'@; put 'bS5zLmxlZnQmJlFyKG0ucy5sZWZ0KXx8dm9pZCAwLHJpZ2h0Om0ucy5yaWdodCYmUXIobS5zLnJpZ2h0KXx8dm9pZCAwfSl9aWYoXyYmbS5zLnN0eWxlJiYiTm9ybWFsIiE9PW0ucy5zdHlsZSl7Zm9yKE5lPTE7TmU8Xy5sZW5ndGgmJl9bTmVdLm5hbWUhPW0ucy5zdHlsZTsrK05lKTtOZT09'@; put 'Xy5sZW5ndGgmJl8ucHVzaCh7bmFtZTptLnMuc3R5bGUsbnVtRm10SWQ6UCxmb250SWQ6b2UsZmlsbElkOmRlLGJvcmRlcklkOkxlfSl9fWZvcihRPTA7USE9c2U7KytRKWlmKGRbUV0ubnVtRm10SWQ9PVAmJmRbUV0uZm9udElkPT1vZSYmZFtRXS5maWxsSWQ9PWRlJiZkW1FdLmJvcmRlcklk'@; put 'PT1MZSYmZFtRXS54ZklkPT1OZSl7aWYobS5zJiZtLnMuYWxpZ25tZW50KXtpZighZFtRXS5hbGlnbm1lbnQpY29udGludWU7aWYobS5zLmFsaWdubWVudC5ob3Jpem9udGFsIT1kW1FdLmFsaWdubWVudC5ob3Jpem9udGFsfHxtLnMuYWxpZ25tZW50LnZlcnRpY2FsIT1kW1FdLmFsaWdubWVu'@; put 'dC52ZXJ0aWNhbHx8bS5zLmFsaWdubWVudC53cmFwVGV4dCE9ZFtRXS5hbGlnbm1lbnQud3JhcFRleHR8fG0ucy5hbGlnbm1lbnQuc2hyaW5rVG9GaXQhPWRbUV0uYWxpZ25tZW50LnNocmlua1RvRml0fHxtLnMuYWxpZ25tZW50LnRleHRSb3RhdGlvbiE9ZFtRXS5hbGlnbm1lbnQudGV4dFJv'@; put 'dGF0aW9ufHxtLnMuYWxpZ25tZW50LmluZGVudCE9ZFtRXS5hbGlnbm1lbnQuaW5kZW50KWNvbnRpbnVlfWVsc2UgaWYoZFtRXS5hbGlnbm1lbnQpY29udGludWU7aWYobS5zKXtpZighIW0ucy5oaWRkZW49PSghZFtRXS5wcm90ZWN0aW9ufHwhZFtRXS5wcm90ZWN0aW9uLmhpZGRlbil8fCEh'@; put 'bS5zLmVkaXRhYmxlPT0oIWRbUV0ucHJvdGVjdGlvbnx8IWRbUV0ucHJvdGVjdGlvbi5lZGl0YWJsZSkpY29udGludWV9ZWxzZSBpZihkW1FdLnByb3RlY3Rpb24pY29udGludWU7cmV0dXJuIFF9fWVsc2UgZm9yKFE9MDtRIT1zZTsrK1EpaWYoZFtRXS5udW1GbXRJZD09PVApcmV0dXJuIFE7'@; put 'cmV0dXJuIGRbc2VdPXtudW1GbXRJZDpQLGZvbnRJZDpvZSxmaWxsSWQ6ZGUsYm9yZGVySWQ6TGUseGZJZDpOZSxhcHBseU51bWJlckZvcm1hdDoxfSxvZT4wJiYoZFtzZV0uYXBwbHlGb250PTEpLGRlPjAmJihkW3NlXS5hcHBseUZpbGw9MSksTGU+MCYmKGRbc2VdLmFwcGx5Qm9yZGVyPTEp'@; put 'LCFfJiZtLnMmJm0ucy5zdHlsZSYmIk5vcm1hbCIhPW0ucy5zdHlsZSYmKGRbc2VdLnN0eWxlPW0ucy5zdHlsZSksbS5zJiZtLnMuYWxpZ25tZW50JiYoZFtzZV0uYWxpZ25tZW50PXt9LFsiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwid3JhcFRleHQiLCJzaHJpbmtUb0ZpdCIsImluZGVudCIs'@; put 'InRleHRSb3RhdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oYnQpe251bGwhPW0ucy5hbGlnbm1lbnRbYnRdJiYoZFtzZV0uYWxpZ25tZW50W2J0XT1tLnMuYWxpZ25tZW50W2J0XSl9KSksbS5zJiZtLnMuaGlkZGVuJiYoZFtzZV0ucHJvdGVjdGlvbnx8KGRbc2VdLnByb3RlY3Rpb249e30pLGRb'@; put 'c2VdLnByb3RlY3Rpb24uaGlkZGVuPSEwKSxtLnMmJm0ucy5lZGl0YWJsZSYmKGRbc2VdLnByb3RlY3Rpb258fChkW3NlXS5wcm90ZWN0aW9uPXt9KSxkW3NlXS5wcm90ZWN0aW9uLmVkaXRhYmxlPSEwKSxzZX1mdW5jdGlvbiBGayhkLF8sbSxULFAsUSxzZSxvZSl7ImQiPT09ZC50JiYic3Ry'@; put 'aW5nIj09dHlwZW9mIGQudiYmKGQudj1sbihkLnYpKTt0cnl7US5jZWxsTkYmJihkLno9SS5fdGFibGVbX10pfWNhdGNoKExlKXtpZihRLldURil0aHJvdyBMZX1pZigoIVF8fCExIT09US5jZWxsVGV4dCkmJiJ6IiE9ZC50KXRyeXtpZihudWxsPT1JLl90YWJsZVtfXSYmSS5sb2FkKF9lW19d'@; put 'fHwiR2VuZXJhbCIsXyksImUiPT09ZC50KWQudz1kLnd8fG5sW2Qudl07ZWxzZSBpZigwPT09XylpZigibiI9PT1kLnQpZC53PSgwfGQudik9PT1kLnY/SS5fZ2VuZXJhbF9pbnQoZC52KTpJLl9nZW5lcmFsX251bShkLnYpO2Vsc2UgaWYoImQiPT09ZC50KXt2YXIgZGU9S2UoZC52KTtkLnc9'@; put 'KDB8ZGUpPT09ZGU/SS5fZ2VuZXJhbF9pbnQoZGUpOkkuX2dlbmVyYWxfbnVtKGRlKX1lbHNle2lmKHZvaWQgMD09PWQudilyZXR1cm4iIjtkLnc9SS5fZ2VuZXJhbChkLnYsWG0pfWVsc2UgZC53PUkuZm9ybWF0KF8sImQiPT09ZC50P0tlKGQudik6ZC52LFhtKX1jYXRjaChMZSl7aWYoUS5X'@; put 'VEYpdGhyb3cgTGV9aWYoUS5jZWxsU3R5bGVzJiZvZSl7aWYoZC5zPXt9LG51bGwhPW0mJm9lLkZpbGxzKXRyeXtIbihkLnMsb2UuRmlsbHNbbV0pfWNhdGNoKExlKXtpZihRLldURil0aHJvdyBMZX1pZihudWxsIT1UJiZvZS5Gb250cyl0cnl7SG4oZC5zLG9lLkZvbnRzW1RdKX1jYXRjaChM'@; put 'ZSl7aWYoUS5XVEYpdGhyb3cgTGV9aWYobnVsbCE9UCYmb2UuQm9yZGVycyl0cnl7SG4oZC5zLG9lLkJvcmRlcnNbUF0pfWNhdGNoKExlKXtpZihRLldURil0aHJvdyBMZX19fWZ1bmN0aW9uIGxKKGQsXyxtKXtpZihkJiZkWyIhcmVmIl0pe3ZhciBUPXl0KGRbIiFyZWYiXSk7aWYoVC5lLmM8'@; put 'VC5zLmN8fFQuZS5yPFQucy5yKXRocm93IG5ldyBFcnJvcigiQmFkIHJhbmdlICgiK20rIik6ICIrZFsiIXJlZiJdKX19dmFyIHVKPS88KD86XHc6KT9tZXJnZUNlbGwgcmVmPSJbQS1aMC05Ol0rIlxzKltcL10/Pi9nLFBrPS88KD86XHcrOik/c2hlZXREYXRhW14+XSo+KFtcc1xTXSopPFwv'@; put 'KD86XHcrOik/c2hlZXREYXRhPi8sZEo9LzwoPzpcdzopP2h5cGVybGluayBbXj5dKj4vZ20sUjVlPS8iKFx3KjpcdyopIi8sSGs9LzwoPzpcdzopP2NvbFxiW14+XSpbXC9dPz4vZyxBVj0vPCg/Olx3Oik/Y29udHJvbFxiW14+XSpbXC9dPz4vZyxJNWU9LzwoPzpcdzopP2F1dG9GaWx0ZXJb'@; put 'Xj5dKihbXC9dfD4oW1xzXFNdKik8XC8oPzpcdzopP2F1dG9GaWx0ZXIpPi9nLFZrPS88KD86XHc6KT9wYWdlTWFyZ2luc1tePl0qXC8+L2csTFM9LzwoPzpcdzopP3NoZWV0UHJcYig/OltePmEtel1bXj5dKik/XC8+LyxCaz0vPCg/Olx3Oik/c2hlZXRQcm90ZWN0aW9uXGIoPzpbXj5hLXpd'@; put 'W14+XSopP1wvPi8sUW09LzwoPzpcdzopP3NoZWV0UHJbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/c2hlZXRQcik+LyxoSj0vPCg/Olx3Oik/c2hlZXRWaWV3c1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9zaGVldFZpZXdzKT4vLGtWPS88KD86XHcrOik/ZGF0'@; put 'YVZhbGlkYXRpb25zW14+XSooPzpbXC9dfD4oW1xzXFNdKj8pPFwvKD86XHcrOik/ZGF0YVZhbGlkYXRpb25zKT4vLE9TPS88KD86XHcrOik/Y29uZGl0aW9uYWxGb3JtYXR0aW5nXGJbXj5dKig/OltcL118PihbXHNcU10qPyk8XC8oPzpcdys6KT9jb25kaXRpb25hbEZvcm1hdHRpbmcpPi9n'@; put 'LEQ1ZT0vPCg/Olx3Oik/c2hlZXRGb3JtYXRQcltePl0qXC8+LyxMNWU9LzwoPzpcdys6KT90YWJsZVBhcnRzLio/PihbXHNcU10qPyk8XC8oPzpcdys6KT90YWJsZVBhcnRzPi8sams9LzwoPzpcdzopP3BhZ2VTZXR1cFtePl0qXC8+LyxPNWU9LzwoPzpcdzopP3Jvd0JyZWFrc1tePl0qKD86'@; put 'W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9yb3dCcmVha3MpPi8sTjVlPS88KD86XHc6KT9jb2xCcmVha3NbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/Y29sQnJlYWtzKT4vLEY1ZT0vPCg/Olx3Oik/aGVhZGVyRm9vdGVyW14+XSooPzpbXC9dfD4oW1xzXFNdKik8XC8oPzpc'@; put 'dzopP2hlYWRlckZvb3Rlcik+LyxQNWU9LzwoPzpcdzopP3ByaW50T3B0aW9uc1xiW14+XC9dKlwvPi87dmFyIE5TPS88KD86XHc6KT90YWJsZVBhcnRcYlteXC8+XSpbXC9dPz4vZztmdW5jdGlvbiBQUyhkLF8sbSxUKXt2YXIgUD1YcihkKTttLlNoZWV0c1tUXXx8KG0uU2hlZXRzW1RdPXt9'@; put 'KSxQLmNvZGVOYW1lJiYobS5TaGVldHNbVF0uQ29kZU5hbWU9UC5jb2RlTmFtZSl9dmFyIElWPS88KD86XHc6KT90YWJDb2xvcltePl0qW1wvXT8+LyxEVj0vPCg/Olx3Oik/cGFnZVNldFVwUHJbXj5dKltcL10/Pi8sTFY9LzwoPzpcdzopP291dGxpbmVQcltePl0qW1wvXT8+LyxVaz17ZGlz'@; put 'cGxheWVkOiJhc0Rpc3BsYXllZCIsZW5kOiJhdEVuZCIsbm9uZToibm9uZSJ9LE84PWNlKFVrKSxOVj17ZGlzcGxheWVkOiJkaXNwbGF5ZWQiLG5vbmU6ImJsYW5rIixkYXNoOiJkYXNoIiwibi9hIjoiTkEifSxMeT1jZShOViksVDU9LzwoPzpcdzopP2Jya1tePl0qXC8+L2csVlY9WyJvYmpl'@; put 'Y3RzIiwic2NlbmFyaW9zIiwic2VsZWN0TG9ja2VkQ2VsbHMiLCJzZWxlY3RVbmxvY2tlZENlbGxzIl0sazI9WyJmb3JtYXRDb2x1bW5zIiwiZm9ybWF0Um93cyIsImZvcm1hdENlbGxzIiwiaW5zZXJ0Q29sdW1ucyIsImluc2VydFJvd3MiLCJpbnNlcnRIeXBlcmxpbmtzIiwiZGVsZXRlQ29s'@; put 'dW1ucyIsImRlbGV0ZVJvd3MiLCJzb3J0IiwiYXV0b0ZpbHRlciIsInBpdm90VGFibGVzIl07ZnVuY3Rpb24gQlYoZCl7dmFyIF89e307cmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKG0pe2RbbV0mJihfW21d'@; put 'PXBhcnNlRmxvYXQoZFttXSkpfSksX312YXIgVVY9e0N1c3RvbToiY3VzdG9tIixEYXRlOiJkYXRlIixUaW1lOiJ0aW1lIixMZW5ndGg6InRleHRMZW5ndGgiLExpc3Q6Imxpc3QiLERlY2ltYWw6ImRlY2ltYWwiLFdob2xlOiJ3aG9sZSIsQW55OiJub25lIn0sVlM9Y2UoVVYpLHczPXtJTjoi'@; put 'YmV0d2VlbiIsT1Q6Im5vdEJldHdlZW4iLEVROiJlcXVhbCIsTkU6Im5vdEVxdWFsIixHVDoiZ3JlYXRlclRoYW4iLExUOiJsZXNzVGhhbiIsR0U6ImdyZWF0ZXJUaGFuT3JFcXVhbCIsTEU6Imxlc3NUaGFuT3JFcXVhbCJ9LFY5PWNlKHczKTtmdW5jdGlvbiBXayhkLF8sbSl7dmFyIFQ9W10s'@; put 'UD17fSxRPSIiLHNlPSExLG9lPTAsZGU9MDtyZXR1cm4gZC5yZXBsYWNlKEJuLGZ1bmN0aW9uKExlLE5lKXt2YXIgQmU9WHIoTGUpO3N3aXRjaChlYShCZVswXSkpe2Nhc2UiPGRhdGFWYWxpZGF0aW9ucyI6Y2FzZSI8ZGF0YVZhbGlkYXRpb25zPiI6Y2FzZSI8L2RhdGFWYWxpZGF0aW9ucz4i'@; put 'OmJyZWFrO2Nhc2UiPGRhdGFWYWxpZGF0aW9uIjpQPXt0OlZTW0JlLnR5cGV8fCJub25lIl0scmVmOihRPUJlLnNxcmVmKT9RLmluZGV4T2YoIiAiKT4tMT9ROnl0KFEpOiIifSxCZS5vcGVyYXRvciYmKFAub3A9VjlbQmUub3BlcmF0b3JdKSxQLmJsYW5rPSEhQmUuYWxsb3dCbGFuayYmVGko'@; put 'QmUuYWxsb3dCbGFuayksKCFCZS5zaG93SW5wdXRNZXNzYWdlfHwhVGkoQmUuc2hvd0lucHV0TWVzc2FnZSkpJiYoUC5pbnB1dD0hMSksQmUucHJvbXB0VGl0bGUmJigoUC5pbnB1dHx8KFAuaW5wdXQ9e30pKS50aXRsZT1DaShCZS5wcm9tcHRUaXRsZSkpLEJlLnByb21wdCYmKChQLmlucHV0'@; put 'fHwoUC5pbnB1dD17fSkpLm1lc3NhZ2U9Q2koQmUucHJvbXB0KSksKCFCZS5zaG93RXJyb3JNZXNzYWdlfHwhVGkoQmUuc2hvd0Vycm9yTWVzc2FnZSkpJiYoUC5lcnJvcj0hMSksQmUuZXJyb3JUaXRsZSYmKChQLmVycm9yfHwoUC5lcnJvcj17fSkpLnRpdGxlPUNpKEJlLmVycm9yVGl0bGUp'@; put 'KSxCZS5lcnJvciYmKChQLmVycm9yfHwoUC5lcnJvcj17fSkpLm1lc3NhZ2U9Q2koQmUuZXJyb3IpKSxQLmVycm9yP1AuZXJyb3Iuc3R5bGU9QmUuZXJyb3JTdHlsZXx8InN0b3AiOkJlLmVycm9yU3R5bGUmJihQLmVycm9yPXtzdHlsZTpCZS5lcnJvclN0eWxlfSksUC50JiZULnB1c2goUCk7'@; put 'YnJlYWs7Y2FzZSI8ZGF0YVZhbGlkYXRpb24vPiI6Y2FzZSI8L2RhdGFWYWxpZGF0aW9uPiI6YnJlYWs7Y2FzZSI8c3FyZWY+IjpkZT1OZStMZS5sZW5ndGg7YnJlYWs7Y2FzZSI8L3NxcmVmPiI6UT1kLnNsaWNlKGRlLE5lKSxQLnJlZj1RP1EuaW5kZXhPZigiICIpPi0xP1E6eXQoUSk6IiI7'@; put 'YnJlYWs7Y2FzZSI8Zj4iOmNhc2UiPGZvcm11bGExIjpjYXNlIjxmb3JtdWxhMT4iOmNhc2UiPGZvcm11bGEyIjpjYXNlIjxmb3JtdWxhMj4iOm9lPU5lK0xlLmxlbmd0aDticmVhaztjYXNlIjwvZm9ybXVsYTE+IjpjYXNlIjwvZm9ybXVsYTI+IjppZihtKWJyZWFrO2Nhc2UiPC9mPiI6dmFy'@; put 'IFplPUNpKFduKGQuc2xpY2Uob2UsTmUpKSk7c3dpdGNoKFAudCl7Y2FzZSJMaXN0IjppZihQLmx8fFAuZilicmVhaztpZigzND09WmUuY2hhckNvZGVBdCgwKSl7UC5sPVplLnNsaWNlKDEsLTEpLnNwbGl0KCIsIik7YnJlYWt9Y2FzZSJDdXN0b20iOm51bGw9PVAuZiYmKFAuZj1aZSk7YnJl'@; put 'YWs7Y2FzZSJEYXRlIjpjYXNlIkRlY2ltYWwiOmNhc2UiTGVuZ3RoIjpjYXNlIlRpbWUiOmNhc2UiV2hvbGUiOlAub3B8fChQLm9wPSJJTiIpLG51bGw9PVAudj9QLnY9aXNOYU4oK1plKT9aZTorWmU6KFAubWluPVAudixQLm1heD1pc05hTigrWmUpP1plOitaZSxkZWxldGUgUC52KX1icmVh'@; put 'aztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOnNlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpzZT0hMTticmVhaztkZWZhdWx0OmlmKF8mJl8uV1RGJiYhc2UpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitCZVswXSsi'@; put 'IGluIGRhdGEgdmFsaWRhdGlvbiIpfXJldHVybiBMZX0pLFR9dmFyIFlrPXtJTjoiY29udGFpbnNUZXh0IixPVDoibm90Q29udGFpbnNUZXh0IixTVDoiYmVnaW5zV2l0aCIsTkQ6ImVuZHNXaXRoIn0sVEo9Y2UoWWspLHhKPXtMTToibGFzdE1vbnRoIixMUzoibGFzdDdEYXlzIixMVzoibGFz'@; put 'dFdlZWsiLE5NOiJuZXh0TW9udGgiLE5XOiJuZXh0V2VlayIsVE06InRoaXNNb250aCIsVFc6InRoaXNXZWVrIixURDoidG9kYXkiLFRPOiJ0b21vcnJvdyIsWVM6Inllc3RlcmRheSJ9LFY1ZT1jZSh4Sik7ZnVuY3Rpb24gQjkoZCl7dmFyIF89e307cmV0dXJuIG51bGwhPWQudmFsJiYoaXNO'@; put 'YU4oK2QudmFsKT9fLmY9ZC52YWw6Xy52PStkLnZhbCksXy50PWQudHlwZSxffWZ1bmN0aW9uIE44KGQpe3JldHVybiBWcigiY2Z2byIsbnVsbCx7dHlwZTpkLnQsdmFsOm51bGwhPWQudj9kLnY6QmkoZC5mKX0pfWZ1bmN0aW9uIFdWKGQsXyxtLFQpe3ZhciBQPUI5KGQpO3JldHVybiBQLmNv'@; put 'bG9yPXc4KF8sbSxUKSxQfWZ1bmN0aW9uIEJTKGQsXyxtLFQsUCl7dmFyIFE9KGQubWF0Y2goL3NxcmVmPSIoW1x3OiQgXSopIi8pfHxbXSlbMV07cmV0dXJuIGZ1bmN0aW9uIEI1ZShkLF8sbSxULFAsUSl7dmFyIHNlPSExLG9lPVtdLGRlPXtmOltdfSxMZT0wLE5lPTAsQmU9e2Nmdm9zOltd'@; put 'LGNvbG9yczpbXX0sWmU9e30sbnQ9LTEsbXQ9MCxRZT0iIjtyZXR1cm4gZC5yZXBsYWNlKEJuLGZ1bmN0aW9uKGZ0LGt0KXt2YXIgYnQ9WHIoZnQpO3N3aXRjaChlYShidFswXSkpe2Nhc2UiPGNvbmRpdGlvbmFsRm9ybWF0dGluZyI6Y2FzZSI8L2NvbmRpdGlvbmFsRm9ybWF0dGluZz4iOmJy'@; put 'ZWFrO2Nhc2UiPGNmUnVsZSI6Y2FzZSI8Y2ZSdWxlPiI6aWYoTmU9a3QsWmU9YnQsZGU9e3JlZjpfLGY6W119LCFmdC5tYXRjaCgvXC8+LykpYnJlYWs7Y2FzZSI8L2NmUnVsZT4iOnN3aXRjaChaZS5keGZJZCYmUCYmUC5EWEYmJihkZS5zPVAuRFhGWytaZS5keGZJZF0pLFplLnR5cGUpe2Nh'@; put 'c2UiZHVwbGljYXRlVmFsdWVzIjpkZS50PSJkdXAiO2JyZWFrO2Nhc2UidW5pcXVlVmFsdWVzIjpkZS50PSJ1bmlxdWUiO2JyZWFrO2Nhc2UiY29udGFpbnNCbGFua3MiOmRlLnQ9ImJsYW5rIixkZS52PSEwO2JyZWFrO2Nhc2Uibm90Q29udGFpbnNCbGFua3MiOmRlLnQ9ImJsYW5rIixkZS52'@; put 'PSExO2JyZWFrO2Nhc2UiY29udGFpbnNFcnJvcnMiOmRlLnQ9ImVycm9yIixkZS52PSEwO2JyZWFrO2Nhc2Uibm90Q29udGFpbnNFcnJvcnMiOmRlLnQ9ImVycm9yIixkZS52PSExO2JyZWFrO2Nhc2UiY2VsbElzIjpzd2l0Y2goWmUub3BlcmF0b3Ipe2Nhc2UiY29udGFpbnNUZXh0IjpjYXNl'@; put 'Im5vdENvbnRhaW5zIjpjYXNlImJlZ2luc1dpdGgiOmNhc2UiZW5kc1dpdGgiOmlmKGRlLnQ9InRleHQiLGRlLm9wPVRKW1plLm9wZXJhdG9yXSxudWxsPT1aZS50ZXh0KXRocm93IG5ldyBFcnJvcigiQ0YgVGV4dCBSdWxlICIrZGUub3ArIiBtaXNzaW5nIHRleHQiKTtkZS52PVplLnRleHQs'@; put 'ZGUuZj1kZS5mWzBdLG51bGw9PWRlLmYmJmRlbGV0ZSBkZS5mO2JyZWFrO2RlZmF1bHQ6ZGUudD0idmFsIixkZS5vcD1WOVtaZS5vcGVyYXRvcl0sMT09ZGUuZi5sZW5ndGg/aXNOYU4oK2RlLmZbMF0pP2RlLmY9ZGUuZlswXTooZGUudj0rZGUuZlswXSxkZWxldGUgZGUuZik6KGRlLm1pbj1p'@; put 'c05hTigrZGUuZlswXSk/ZGUuZlswXTorZGUuZlswXSxkZS5tYXg9aXNOYU4oK2RlLmZbMV0pP2RlLmZbMV06K2RlLmZbMV0sZGVsZXRlIGRlLmYpfWJyZWFrO2Nhc2UiZXhwcmVzc2lvbiI6ZGUudD0iZm9ybXVsYSIsZGUuZj1kZS5mWzBdO2JyZWFrO2Nhc2UiY29udGFpbnNUZXh0IjpjYXNl'@; put 'Im5vdENvbnRhaW5zVGV4dCI6Y2FzZSJiZWdpbnNXaXRoIjpjYXNlImVuZHNXaXRoIjppZihkZS50PSJ0ZXh0IixkZS5vcD1USltaZS50eXBlXSxudWxsPT1aZS50ZXh0JiZkZS5mLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ0YgVGV4dCBSdWxlICIrZGUub3ArIiBtaXNzaW5nIHRleHQi'@; put 'KTtkZS52PW51bGwhPVplLnRleHQ/WmUudGV4dDpkZS5mWzFdLm1hdGNoKC8iLioiLyk/ZGUuZlsxXS5zbGljZSgxLC0xKTpkZS5mWzFdLGRlLmY9ZGUuZlswXSxudWxsPT1kZS5mJiZkZWxldGUgZGUuZjticmVhaztjYXNlImNvbG9yU2NhbGUiOmlmKGRlLnQ9InNjYWxlIiwhZGUuY29sb3JT'@; put 'Y2FsZSl0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgY29sb3JTY2FsZSIpO2RlLmNtaW49V1YoKEJlPWRlLmNvbG9yU2NhbGUpLmNmdm9zWzBdLEJlLmNvbG9yc1swXSxQLFQpLDM9PUJlLmNmdm9zLmxlbmd0aCYmKGRlLmNtaWQ9V1YoQmUuY2Z2b3NbMV0sQmUuY29sb3JzWzFdLFAsVCkpLGRl'@; put 'LmNtYXg9V1YoQmUuY2Z2b3NbQmUuY2Z2b3MubGVuZ3RoLTFdLEJlLmNvbG9yc1tCZS5jZnZvcy5sZW5ndGgtMV0sUCxUKTticmVhaztjYXNlImRhdGFCYXIiOmlmKGRlLnQ9ImJhciIsIWRlLmRhdGFCYXIpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGRhdGFCYXIiKTsoQmU9ZGUuZGF0YUJh'@; put 'cikuY29sb3JzWzBdJiYoZGUuY29sb3I9dzgoQmUuY29sb3JzWzBdLFAsVCkpLGRlLmNtaW49QjkoQmUuY2Z2b3NbMF0pLGRlLmNtYXg9QjkoQmUuY2Z2b3NbMV0pO2JyZWFrO2Nhc2UiaWNvblNldCI6aWYoZGUudD0iaWNvbiIsIWRlLmljb25TZXQpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5n'@; put 'IGljb25TZXQiKTtkZS50aHJlc2g9KEJlPWRlLmljb25TZXQpLmNmdm9zLm1hcChmdW5jdGlvbihFdCl7cmV0dXJuIEI5KEV0KX0pLGRlLnY9QmUudGFnJiZCZS50YWcuaWNvblNldHx8IjNUcmFmZmljTGlnaHRzMSIsZGUucmV2PVRpKEJlLnRhZy5yZXZlcnNlfHwiZmFsc2UiKSxkZS5wY3Q9'@; put 'VGkoQmUudGFnLnBlcmNlbnR8fCJ0cnVlIiksZGUuaGlkZGVuPSFUaShCZS50YWcuc2hvd1ZhbHVlfHwidHJ1ZSIpO2JyZWFrO2Nhc2UidGltZVBlcmlvZCI6ZGUudD0iZGF0ZSIsZGUub3A9VjVlW1plLnRpbWVQZXJpb2RdO2JyZWFrO2Nhc2UiYWJvdmVBdmVyYWdlIjpkZS50PSJhdmciLGRl'@; put 'Lm9wPSIwIj09WmUuYWJvdmVBdmVyYWdlPyJMIjoiRyIsZGUub3ArPVplLnN0ZERldj9aZS5zdGREZXY6VGkoWmUuZXF1YWxBdmVyYWdlfHwiMCIpPyJFIjoiVCI7YnJlYWs7Y2FzZSJ0b3AxMCI6ZGUudD0icmFuayIsZGUub3A9KFRpKFplLmJvdHRvbXx8IjAiKT8iQiI6IlQiKSsoVGkoWmUu'@; put 'cGVyY2VudHx8IjAiKT8iUCI6IlYiKSxkZS52PStaZS5yYW5rO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgQ0YgVHlwZSAiK1plLnR5cGV9aWYoZGVsZXRlIGRlLmNvbG9yU2NhbGUsZGVsZXRlIGRlLmRhdGFCYXIsZGVsZXRlIGRlLmljb25TZXQsIWRlLnQpdGhyb3cgY29uc29s'@; put 'ZS5sb2coZC5zbGljZShOZSxrdCtmdC5sZW5ndGgpKSwiYmFkIENGIHJ1bGUiO251bGwhPWRlLmYmJiFkZS5mLmxlbmd0aCYmZGVsZXRlIGRlLmYsZGUuZGVsfHxvZS5wdXNoKGRlKTticmVhaztjYXNlIjxmb3JtdWxhIjpjYXNlIjxmb3JtdWxhPiI6TGU9a3QrZnQubGVuZ3RoO2JyZWFrO2Nh'@; put 'c2UiPC9mb3JtdWxhPiI6ZGUuZi5wdXNoKENpKGQuc2xpY2UoTGUsa3QpKSk7YnJlYWs7Y2FzZSI8ZiI6Y2FzZSI8Zj4iOkxlPWt0K2Z0Lmxlbmd0aDticmVhaztjYXNlIjwvZj4iOmRlLmYucHVzaChDaShkLnNsaWNlKExlLGt0KSkpO2JyZWFrO2Nhc2UiPHNxcmVmPiI6bXQ9a3QrZnQubGVu'@; put 'Z3RoO2JyZWFrO2Nhc2UiPC9zcXJlZj4iOlFlPWQuc2xpY2UobXQsa3QpLF89UWU/UWUuaW5kZXhPZigiICIpPi0xP1FlOnl0KFFlKToiIixkZS5yZWY9XyxvZS5mb3JFYWNoKGZ1bmN0aW9uKEV0KXtFdC5yZWY9X30pO2JyZWFrO2Nhc2UiPGNvbG9yU2NhbGUiOmNhc2UiPGNvbG9yU2NhbGU+'@; put 'IjpjYXNlIjxkYXRhQmFyIjpjYXNlIjxkYXRhQmFyPiI6Y2FzZSI8aWNvblNldCI6Y2FzZSI8aWNvblNldD4iOkJlPXtjZnZvczpbXSxjb2xvcnM6W10sdGFnOmJ0fSxMZT1rdCtmdC5sZW5ndGg7YnJlYWs7Y2FzZSI8L2NvbG9yU2NhbGU+IjpkZS5jb2xvclNjYWxlPUJlO2JyZWFrO2Nhc2Ui'@; put 'PC9kYXRhQmFyPiI6ZGUuZGF0YUJhcj1CZTticmVhaztjYXNlIjwvaWNvblNldD4iOmRlLmljb25TZXQ9QmU7YnJlYWs7Y2FzZSI8Y2Z2byI6Y2FzZSI8Y2Z2by8+IjpCZS5jZnZvcy5wdXNoKGJ0KTticmVhaztjYXNlIjwvY2Z2bz4iOmJyZWFrO2Nhc2UiPGNvbG9yIjpCZS5jb2xvcnMucHVz'@; put 'aChidCk7YnJlYWs7Y2FzZSI8L2NvbG9yPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0IjpzZT0hMDticmVhaztjYXNlIjwvZXh0PiI6c2U9ITE7YnJlYWs7Y2FzZSI8bmVnYXRpdmVGaWxsQ29sb3IiOmNhc2UiPGF4aXNDb2xv'@; put 'ciI6Y2FzZSI8Ym9yZGVyQ29sb3IiOmNhc2UiPG5lZ2F0aXZlQm9yZGVyQ29sb3IiOmNhc2UiPGNmSWNvbiI6ZGUuZGVsPSEwO2JyZWFrO2Nhc2UiPGR4Zj4iOnNlPSEwLG50PWt0O2JyZWFrO2Nhc2UiPC9keGY+IjpzZT0hMSxkZS5zPUNIKGQuc2xpY2UobnQsa3QrZnQubGVuZ3RoKSxQLFQs'@; put 'bSk7YnJlYWs7ZGVmYXVsdDppZihtJiZtLldURil7aWYoUSlicmVhaztpZighc2UpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitidFswXSsiIGluIGNvbmRmbXQiKX19cmV0dXJuIGZ0fSksb2V9KGQsUSxfLG0sVCxQKX12YXIgUko9LzwoPzpcdzopP3NoZWV0Vmlldyg/OltePmEt'@; put 'el1bXj5dKik/XC8/Pi9nO2Z1bmN0aW9uIE95KGQsXyl7dmFyIG09MCxUPTAsUD0wLFE9MDtpZighX3x8IV8uQ2VsbFhmKXJldHVybiBudWxsO3ZhciBzZT1fLkNlbGxYZltkXTtudWxsIT1zZSYmKG51bGwhPXNlLm51bUZtdElkJiYobT1zZS5udW1GbXRJZCksbnVsbCE9c2UuZmlsbElkJiYo'@; put 'VD1zZS5maWxsSWQpLG51bGwhPXNlLmZvbnRJZCYmKFA9c2UuZm9udElkKSxudWxsIT1zZS5ib3JkZXJJZCYmKFE9c2UuYm9yZGVySWQpKTt2YXIgb2U9e3Q6InoifTt0cnl7Rmsob2UsbSxULFAsUSx7V1RGOjEsY2VsbFN0eWxlczohMH0sMCxfKX1jYXRjaHt9cmV0dXJuIG9lLnN9ZnVuY3Rp'@; put 'b24gWVYoZCxfLG0sVCl7aWYodm9pZCAwPT09ZC52JiZ2b2lkIDA9PT1kLmYmJm51bGw9PWQucyYmIWQuY3x8InoiPT09ZC50JiYhZC5jJiYhVC5zaGVldFN0dWJzKXJldHVybiIiO3ZhciBQPSIiLFE9ZC50LHNlPWQudjtpZigieiIhPT1kLnQpc3dpdGNoKGQudCl7Y2FzZSJiIjpQPWQudj8i'@; put 'MSI6IjAiO2JyZWFrO2Nhc2UibiI6UD0iIitkLnY7YnJlYWs7Y2FzZSJlIjpQPW5sW2Qudl07YnJlYWs7Y2FzZSJkIjpUJiZULmNlbGxEYXRlcz9QPWxuKGQudiwtMSkudG9JU09TdHJpbmcoKTooKGQ9UXIoZCkpLnQ9Im4iLFA9IiIrKGQudj1LZShsbihkLnYpKSkpLHR5cGVvZiBkLno+InUi'@; put 'JiYoZC56PUkuX3RhYmxlWzE0XSk7YnJlYWs7ZGVmYXVsdDpQPWQudn12YXIgb2U9InoiPT1kLnQ/IiI6VW8oInYiLEJpKFApKSxkZT17cjpffSxMZT1UP0EyKFQuY2VsbFhmcyxULmNlbGxTdHlsZVhmcyxkLFQpOjA7c3dpdGNoKDAhPT1MZSYmKGRlLnM9TGUpLGQudCl7Y2FzZSJuIjpjYXNl'@; put 'InoiOmJyZWFrO2Nhc2UiZCI6ZGUudD0iZCI7YnJlYWs7Y2FzZSJiIjpkZS50PSJiIjticmVhaztjYXNlImUiOmRlLnQ9ImUiO2JyZWFrO2RlZmF1bHQ6aWYobnVsbD09ZC52KXtkZWxldGUgZC50O2JyZWFrfWlmKFQmJlQuYm9va1NTVCl7b2U9VW8oInYiLCIiK0xrKFQuU3RyaW5ncyxkLnYs'@; put 'ZC5SP2Qucj1NOShkLlIpOm51bGwsVC5yZXZTdHJpbmdzKSksZGUudD0icyI7YnJlYWt9QXJyYXkuaXNBcnJheShkLlIpPyhvZT0iPGlzPiIrTTkoZC5SKSsiPC9pcz4iLGRlLnQ9ImlubGluZVN0ciIpOmRlLnQ9InN0ciJ9aWYoZC50IT1RJiYoZC50PVEsZC52PXNlKSxkLmYpe3ZhciBOZT1k'@; put 'LkYmJmQuRi5zbGljZSgwLF8ubGVuZ3RoKT09Xz97dDoiYXJyYXkiLHJlZjpkLkZ9Om51bGw7b2U9VnIoImYiLEJpKGQuZiksTmUpKyhudWxsIT1kLnY/b2U6IiIpfXJldHVybiBkLmwmJm1bIiFsaW5rcyJdLnB1c2goW18sZC5sXSksZC5jJiZtWyIhY29tbWVudHMiXS5wdXNoKFtfLGQuY10p'@; put 'LFZyKCJjIixvZSxkZSl9dmFyIExKPWZ1bmN0aW9uKCl7dmFyIGQ9LzwoPzpcdys6KT9jWyBcLz5dLyxfPS88XC8oPzpcdys6KT9yb3c+LyxtPS9yPVsiJ10oW14iJ10qKVsiJ10vLFQ9LzwoPzpcdys6KT9pcz4oW1xTXHNdKj8pPFwvKD86XHcrOik/aXM+LyxQPS9yZWY9WyInXShbXiInXSop'@; put 'WyInXS8sUT1MYygidiIpLHNlPUxjKCJmIik7cmV0dXJuIGZ1bmN0aW9uKGRlLExlLE5lLEJlLFplLG50LG10KXtmb3IodmFyIG5uLGFyLHNyLGdyLExpLFFlPTAsZnQ9IiIsa3Q9W10sYnQ9W10sRXQ9MCxWdD0wLHVuPTAsbnI9IiIsam49MCxrbj0wLHFuPTAsX2k9MCxPaT0wLHNvPTAsbW89'@; put 'QXJyYXkuaXNBcnJheShtdC5DZWxsWGYpLGtyPVtdLERuPVtdLE9yPUFycmF5LmlzQXJyYXkoTmUpLF9yPVtdLE1uPXt9LE5yPSExLGppPWRlLnNwbGl0KF8pLGJpPSEhQmUuc2hlZXRTdHVicyxObz0hIUJlLmNlbGxIVE1MLFlhPSEoITE9PT1CZS5jZWxsVGV4dCYmIUJlLmNlbGxORiYmIUJl'@; put 'LmNlbGxTdHlsZXMpLHVvPTAsTXM9amkubGVuZ3RoO3VvIT1NczsrK3VvKXt2YXIgZGE9KGZ0PWppW3VvXS50cmltKCkpLmxlbmd0aDtpZigwIT09ZGEpe3ZhciAkYT0wO2U6Zm9yKFFlPTA7UWU8ZGE7KytRZSlzd2l0Y2goZnRbUWVdKXtjYXNlIj4iOmlmKCIvIiE9ZnRbUWUtMV0peysrUWU7'@; put 'YnJlYWsgZX1CZS5jZWxsU3R5bGVzJiZudWxsIT0oYXI9WHIoZnQuc2xpY2UoJGEsUWUpLCEwKSkuciYmcGFyc2VJbnQoYXIuciwxMCkmJihqbj1wYXJzZUludChhci5yLDEwKSxNbj17fSxOcj0hMSxhci5odCYmKE5yPSEwLE1uLmhwdD1wYXJzZUZsb2F0KGFyLmh0KSxNbi5ocHg9TmcoTW4u'@; put 'aHB0KSksYXIuZHlEZXNjZW50JiYoTnI9ITAsTW4uZHlEZXNjZW50PWFyLmR5RGVzY2VudCksIjEiPT1hci5oaWRkZW4mJihOcj0hMCxNbi5oaWRkZW49ITApLG51bGwhPWFyLm91dGxpbmVMZXZlbCYmKE5yPSEwLE1uLmxldmVsPSthci5vdXRsaW5lTGV2ZWwpLGFyLnMmJm10JiZtdC5DZWxs'@; put 'WGYmJihOcj0hMCxNbi5zPU95KGFyLnMsbXQpKSxOciYmKF9yW2puLTFdPU1uKSk7YnJlYWs7Y2FzZSI8IjokYT1RZX1pZigkYT49UWUpYnJlYWs7aWYoam49bnVsbCE9KGFyPVhyKGZ0LnNsaWNlKCRhLFFlKSwhMCkpLnI/cGFyc2VJbnQoYXIuciwxMCk6am4rMSxrbj0tMSwhKEJlLnNoZWV0'@; put 'Um93cyYmQmUuc2hlZXRSb3dzPGpuKSl7QmUubm9kaW18fChaZS5zLnI+am4tMSYmKFplLnMucj1qbi0xKSxaZS5lLnI8am4tMSYmKFplLmUucj1qbi0xKSk7dmFyIFNhPXt0OiJyb3ciLHJvdzpbXSxSOmpuLTEsaWR4OkxlfTtCZS5jZWxsU3R5bGVzJiYoTW49e30sTnI9ITEsYXIuaHQmJihO'@; put 'cj0hMCxNbi5ocHQ9cGFyc2VGbG9hdChhci5odCksTW4uaHB4PU5nKE1uLmhwdCkpLGFyLmR5RGVzY2VudCYmKE5yPSEwLE1uLmR5RGVzY2VudD1hci5keURlc2NlbnQpLCIxIj09YXIuaGlkZGVuJiYoTnI9ITAsTW4uaGlkZGVuPSEwKSxudWxsIT1hci5vdXRsaW5lTGV2ZWwmJihOcj0hMCxN'@; put 'bi5sZXZlbD0rYXIub3V0bGluZUxldmVsKSxhci5zJiYoTnI9ITAsTW4ucz1PeShhci5zLG10KSksTnImJihCZS5jYWxsYmFjaz9TYS5wcm9wcz1Nbjpfcltqbi0xXT1NbikpLGt0PWZ0LnNsaWNlKFFlKS5zcGxpdChkKTtmb3IodmFyIFBpPTA7UGkhPWt0Lmxlbmd0aCYmIjwiPT1rdFtQaV0u'@; put 'dHJpbSgpLmNoYXJBdCgwKTsrK1BpKTtmb3Ioa3Q9a3Quc2xpY2UoUGkpLFFlPTA7UWUhPWt0Lmxlbmd0aDsrK1FlKWlmKDAhPT0oZnQ9a3RbUWVdLnRyaW0oKSkubGVuZ3RoKXtpZihidD1mdC5tYXRjaChtKSxFdD1RZSxWdD0wLHVuPTAsZnQ9IjxjICIrKCI8Ij09ZnQuc2xpY2UoMCwxKT8i'@; put 'PiI6IiIpK2Z0LG51bGwhPWJ0JiYyPT09YnQubGVuZ3RoKXtmb3IoRXQ9MCxucj1idFsxXSxWdD0wO1Z0IT1uci5sZW5ndGgmJiEoKHVuPW5yLmNoYXJDb2RlQXQoVnQpLTY0KTwxfHx1bj4yNik7KytWdClFdD0yNipFdCt1bjtrbj0tLUV0fWVsc2UrK2tuO2ZvcihWdD0wO1Z0IT1mdC5sZW5n'@; put 'dGgmJjYyIT09ZnQuY2hhckNvZGVBdChWdCk7KytWdCk7aWYoKytWdCwoYXI9WHIoZnQuc2xpY2UoMCxWdCksITApKS5yfHwoYXIucj1xaSh7cjpqbi0xLGM6a259KSksbm49e3Q6IiJ9LG51bGwhPShidD0obnI9ZnQuc2xpY2UoVnQpKS5tYXRjaChRKSkmJiIiIT09YnRbMV0mJihubi52PUNp'@; put 'KGJ0WzFdKSksQmUuY2VsbEZvcm11bGEpe2lmKG51bGwhPShidD1uci5tYXRjaChzZSkpJiYiIiE9PWJ0WzFdKXtpZihubi5mPUNpKFduKGJ0WzFdKSkucmVwbGFjZSgvXHJcbi9nLCJcbiIpLEJlLnhsZm58fChubi5mPXJWKG5uLmYpKSxidFswXS5pbmRleE9mKCd0PSJhcnJheSInKT4tMSlu'@; put 'bi5GPShuci5tYXRjaChQKXx8W10pWzFdLG5uLkYuaW5kZXhPZigiOiIpPi0xJiZrci5wdXNoKFt5dChubi5GKSxubi5GXSk7ZWxzZSBpZihidFswXS5pbmRleE9mKCd0PSJzaGFyZWQiJyk+LTEpe2dyPVhyKGJ0WzBdKTt2YXIgUGM9Q2koV24oYnRbMV0pKTtCZS54bGZufHwoUGM9clYoUGMp'@; put 'KSxEbltwYXJzZUludChnci5zaSwxMCldPVtncixQYyxhci5yXX19ZWxzZShidD1uci5tYXRjaCgvPGZbXj5dKlwvPi8pKSYmRG5bKGdyPVhyKGJ0WzBdKSkuc2ldJiYobm4uZj1EUShEbltnci5zaV1bMV0sRG5bZ3Iuc2ldWzJdLGFyLnIpKTt2YXIgeG49SXMoYXIucik7Zm9yKFZ0PTA7VnQ8'@; put 'a3IubGVuZ3RoOysrVnQpeG4ucj49a3JbVnRdWzBdLnMuciYmeG4ucjw9a3JbVnRdWzBdLmUuciYmeG4uYz49a3JbVnRdWzBdLnMuYyYmeG4uYzw9a3JbVnRdWzBdLmUuYyYmKG5uLkY9a3JbVnRdWzFdKX1pZihudWxsPT1hci50JiZ2b2lkIDA9PT1ubi52KWlmKG5uLmZ8fG5uLkYpbm4udj0w'@; put 'LG5uLnQ9Im4iO2Vsc2V7aWYoIWJpKWNvbnRpbnVlO25uLnQ9InoifWVsc2Ugbm4udD1hci50fHwibiI7c3dpdGNoKFplLnMuYz5rbiYmKFplLnMuYz1rbiksWmUuZS5jPGtuJiYoWmUuZS5jPWtuKSxubi50KXtjYXNlIm4iOmlmKCIiPT1ubi52fHxudWxsPT1ubi52KXtpZighYmkpY29udGlu'@; put 'dWU7bm4udD0ieiJ9ZWxzZSBubi52PXBhcnNlRmxvYXQobm4udik7YnJlYWs7Y2FzZSJzIjppZih0eXBlb2Ygbm4udj4idSIpe2lmKCFiaSljb250aW51ZTtubi50PSJ6In1lbHNlIHNyPUg5W3BhcnNlSW50KG5uLnYsMTApXSxubi52PXNyLnQsbm4ucj1zci5yLHNyLlImJihubi5SPXNyLlIp'@; put 'LE5vJiYobm4uaD1zci5oKTticmVhaztjYXNlInN0ciI6bm4udD0icyIsbm4udj1udWxsIT1ubi52P1duKG5uLnYpOiIiLE5vJiYobm4uaD0kaShubi52KSk7YnJlYWs7Y2FzZSJpbmxpbmVTdHIiOmJ0PW5yLm1hdGNoKFQpLG5uLnQ9InMiLG51bGwhPWJ0JiYoc3I9RXMoYnRbMV0pKT8obm4u'@; put 'dj1zci50LHNyLlImJihubi5SPXNyLlIpLE5vJiYobm4uaD1zci5oKSk6bm4udj0iIjticmVhaztjYXNlImIiOm5uLnY9VGkobm4udik7YnJlYWs7Y2FzZSJkIjpCZS5jZWxsRGF0ZXM/bm4udj1sbihubi52LDEpOihubi52PUtlKGxuKG5uLnYsMSkpLG5uLnQ9Im4iKTticmVhaztjYXNlImUi'@; put 'OiExIT09QmUuY2VsbFRleHQmJihubi53PW5uLnYpLG5uLnY9SDFbbm4udl19aWYoWWEpe3FuPV9pPU9pPXNvPTAsTGk9bnVsbCxtbyYmdm9pZCAwIT09YXIucyYmbnVsbCE9KExpPW10LkNlbGxYZlthci5zXSkmJihudWxsIT1MaS5udW1GbXRJZCYmKHFuPUxpLm51bUZtdElkKSxCZS5jZWxs'@; put 'U3R5bGVzJiYobnVsbCE9TGkuZmlsbElkJiYoX2k9TGkuZmlsbElkKSxudWxsIT1MaS5mb250SWQmJihPaT1MaS5mb250SWQpLG51bGwhPUxpLmJvcmRlcklkJiYoc289TGkuYm9yZGVySWQpKSk7dHJ5e0ZrKG5uLHFuLF9pLE9pLHNvLEJlLDAsbXQpfWNhdGNoe31CZS5jZWxsU3R5bGVzJiZu'@; put 'bi5zJiYoTGkmJkxpLmFsaWdubWVudCYmKG5uLnMuYWxpZ25tZW50PVFyKExpLmFsaWdubWVudCkpLExpJiZMaS5wcm90ZWN0aW9uJiYobnVsbCE9TGkucHJvdGVjdGlvbi5oaWRkZW4mJihubi5zLmhpZGRlbj1MaS5wcm90ZWN0aW9uLmhpZGRlbiksbnVsbCE9TGkucHJvdGVjdGlvbi5lZGl0'@; put 'YWJsZSYmKG5uLnMuZWRpdGFibGU9TGkucHJvdGVjdGlvbi5lZGl0YWJsZSkpLExpJiZMaS5zdHlsZSYmKG5uLnMuc3R5bGU9TGkuc3R5bGUpKSxCZS5jZWxsRGF0ZXMmJm1vJiYibiI9PW5uLnQmJkkuaXNfZGF0ZShJLl90YWJsZVtxbl0pJiYobm4udD0iZCIsbm4udj0kdChubi52KSl9dmFy'@; put 'IHhsO0JlLm5vZGltJiYoeGw9SXMoYXIuciksWmUucy5yPnhsLnImJihaZS5zLnI9eGwuciksWmUuZS5yPHhsLnImJihaZS5lLnI9eGwucikpLEJlLmNhbGxiYWNrPyh4bD1Jcyhhci5yKSxTYS5yb3dbeGwuY109bm4pOk9yPyhOZVsoeGw9SXMoYXIucikpLnJdfHwoTmVbeGwucl09W10pLE5l'@; put 'W3hsLnJdW3hsLmNdPW5uKTpOZVthci5yXT1ubn1CZS5jYWxsYmFjayYmQmUuY2FsbGJhY2soU2EpfX19YmkmJiFCZS5jYWxsYmFjayYmT3koMCxtdCksX3IubGVuZ3RoPjAmJihOZVsiIXJvd3MiXT1fcil9fSgpLFpWPVZyKCJ3b3Jrc2hlZXQiLG51bGwse3htbG5zOlVhLm1haW5bMF0sInht'@; put 'bG5zOnIiOlVhLnIsInhtbG5zOngxNGFjIjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiLCJ4bWxuczptYyI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiwibWM6'@; put 'SWdub3JhYmxlIjoieDE0YWMifSk7ZnVuY3Rpb24galMoZCxfLG0sVCl7dmFyIHNlLFA9W3BvLFpWXSxvZT0iIixkZT1tLlNoZWV0c1ttLlNoZWV0TmFtZXNbZF1dO251bGw9PWRlJiYoZGU9e30pO3ZhciBMZT1kZVsiIXJlZiJdfHwiQTEiLE5lPXl0KExlKTtpZihOZS5lLmM+MTYzODN8fE5l'@; put 'LmUucj4xMDQ4NTc1KXtpZihfLldURil0aHJvdyBuZXcgRXJyb3IoIlJhbmdlICIrTGUrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2Iik7TmUuZS5jPU1hdGgubWluKE5lLmUuYywxNjM4MyksTmUuZS5yPU1hdGgubWluKE5lLmUuYywxMDQ4NTc1KSxMZT1odChOZSl9VHx8'@; put 'KFQ9e30pLGRlWyIhY29tbWVudHMiXT1bXTt2YXIgQmU9W10sWmU9ZGVbIiFwcmludCJdO2lmKGZ1bmN0aW9uIEhTKGQsXyxtLFQsUCl7dmFyIFE9ITEsc2U9e30sb2U9bnVsbDtpZigieGxzeCIhPT1ULmJvb2tUeXBlJiZfLnZiYXJhdyl7dmFyIGRlPV8uU2hlZXROYW1lc1ttXTt0cnl7Xy5X'@; put 'b3JrYm9vayYmKGRlPV8uV29ya2Jvb2suU2hlZXRzW21dLkNvZGVOYW1lfHxkZSl9Y2F0Y2h7fVE9ITAsc2UuY29kZU5hbWU9QmkoZGUpfWQmJmRbIiFjb25kZm10Il0mJihzZS5lbmFibGVGb3JtYXRDb25kaXRpb25zQ2FsY3VsYXRpb249IjEiKSxkJiZkWyIhdGFiY29sb3IiXSYmKG9lPShv'@; put 'ZXx8IiIpKyc8dGFiQ29sb3IgcmdiPSJGRicrVDIoZFsiIXRhYmNvbG9yIl0ucmdiKSsnIi8+Jyk7dmFyIExlPSExLE5lPXt9O2lmKCgoKGR8fHt9KVsiIXByaW50Il18fHt9KS5wcm9wc3x8e30pLmZpdCYmKExlPSEwLE5lLmZpdFRvUGFnZT0xKSxMZSYmKG9lPShvZXx8IiIpK1ZyKCJwYWdl'@; put 'U2V0VXBQciIsbnVsbCxOZSkpLGQmJmRbIiFvdXRsaW5lIl0pe3ZhciBCZT17c3VtbWFyeUJlbG93OjEsc3VtbWFyeVJpZ2h0OjF9O2RbIiFvdXRsaW5lIl0uYWJvdmUmJihCZS5zdW1tYXJ5QmVsb3c9MCksZFsiIW91dGxpbmUiXS5sZWZ0JiYoQmUuc3VtbWFyeVJpZ2h0PTApLG9lPShvZXx8'@; put 'IiIpK1ZyKCJvdXRsaW5lUHIiLG51bGwsQmUpfSFRJiYhb2V8fChQW1AubGVuZ3RoXT1Wcigic2hlZXRQciIsb2Usc2UpKX0oZGUsbSxkLF8sUCksUFtQLmxlbmd0aF09VnIoImRpbWVuc2lvbiIsbnVsbCx7cmVmOkxlfSksUFtQLmxlbmd0aF09ZnVuY3Rpb24gREooZCxfLG0sVCl7dmFyIFA9'@; put 'e3dvcmtib29rVmlld0lkOiIwIn07aWYoKCgoVHx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKS5sZW5ndGgpe3ZhciBRPVQuV29ya2Jvb2suVmlld3Msc2U9UVttXXx8UVswXTtQLnJpZ2h0VG9MZWZ0PXNlLlJUTD8iMSI6IjAiLHNlLnpvb20mJihQLnpvb21TY2FsZT1zZS56b29tKSxu'@; put 'dWxsIT1zZS5ncmlkJiYoUC5zaG93R3JpZExpbmVzPXNlLmdyaWQpLHNlLnZpZXcmJihQLnZpZXc9c2Uudmlldyl9bnVsbCE9ZFsiIWdyaWRsaW5lcyJdJiYoUC5zaG93R3JpZExpbmVzPSEhZFsiIWdyaWRsaW5lcyJdKTt2YXIgb2U9IiIsZGU9e3I6MCxjOjB9O2lmKGRbIiFzZWwiXSl7aWYo'@; put 'IShkZT1kWyIhc2VsIl0uY2VsbCkpe2lmKCFkWyIhc2VsIl0ucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJNdXN0IHNwZWNpZnkgYSBzZWxlY3Rpb24gY2VsbCBvciByYW5nZSIpO2RlPXphKGRbIiFzZWwiXS5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zfSJzdHJpbmciPT10eXBlb2YgZGUm'@; put 'JihkZT1JcyhkZSkpfXZhciBOZT1kWyIhZnJlZXplIl0/InN0cmluZyI9PXR5cGVvZiBkWyIhZnJlZXplIl0/SXMoZFsiIWZyZWV6ZSJdKTpkWyIhZnJlZXplIl06e2M6MCxyOjB9O2lmKGRbIiFmcmVlemUiXSl7dmFyIEJlPXFpKE5lKSxaZT17c3RhdGU6ImZyb3plbiIseFNwbGl0Ok5lLmMs'@; put 'eVNwbGl0Ok5lLnIsdG9wTGVmdENlbGw6QmV9O2RbIiFzZWwiXSYmKFplLmFjdGl2ZVBhbmU9KGRlLnI+PU5lLnImJk5lLnI+MD8iYm90dG9tIjoidG9wIikrKGRlLmM+PU5lLmMmJk5lLmM+MD8iUmlnaHQiOiJMZWZ0IikpLG9lPVZyKCJwYW5lIixudWxsLFplKX1pZihkWyIhc2VsIl0pe3Zh'@; put 'ciBudD17YWN0aXZlQ2VsbDoic3RyaW5nIj09dHlwZW9mIGRlP2RlOnFpKGRlKX07bnQuc3FyZWY9ZFsiIXNlbCJdLnJhbmdlP2RbIiFzZWwiXS5yYW5nZTpudC5hY3RpdmVDZWxsKyI6IitudC5hY3RpdmVDZWxsLG9lKz1Wcigic2VsZWN0aW9uIixudWxsLG50KSxkWyIhZnJlZXplIl0mJihO'@; put 'ZS5jPjAmJihudC5wYW5lPSJ0b3BSaWdodCIsb2UrPVZyKCJzZWxlY3Rpb24iLG51bGwsbnQpKSxOZS5yPjAmJihudC5wYW5lPSJib3R0b21MZWZ0IixvZSs9VnIoInNlbGVjdGlvbiIsbnVsbCxudCkpLE5lLmM+MCYmTmUucj4wJiYobnQucGFuZT0iYm90dG9tUmlnaHQiLG9lKz1Wcigic2Vs'@; put 'ZWN0aW9uIixudWxsLG50KSkpfXJldHVybiBWcigic2hlZXRWaWV3cyIsVnIoInNoZWV0VmlldyIsb2V8fG51bGwsUCkse30pfShkZSwwLGQsbSksXy5zaGVldEZvcm1hdCl7dmFyIG50PXtkZWZhdWx0Um93SGVpZ2h0Ol8uc2hlZXRGb3JtYXQuZGVmYXVsdFJvd0hlaWdodHx8IjE2IixiYXNl'@; put 'Q29sV2lkdGg6Xy5zaGVldEZvcm1hdC5iYXNlQ29sV2lkdGh8fCIxMCJ9O251bGwhPV8uc2hlZXRGb3JtYXQub3V0bGluZUxldmVsUm93JiYobnQub3V0bGluZUxldmVsUm93PV8uc2hlZXRGb3JtYXQub3V0bGluZUxldmVsUm93KSxQW1AubGVuZ3RoXT1Wcigic2hlZXRGb3JtYXRQciIsbnVs'@; put 'bCxudCl9ZWxzZSBpZihkZVsiIXNoZWV0Rm9ybWF0Il0pe3ZhciBtdD17fSxRZT0hMTtkZVsiIXNoZWV0Rm9ybWF0Il0ucm93JiYoZGVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHQ/KFFlPSEwLG10LmRlZmF1bHRSb3dIZWlnaHQ9ZGVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHQsbXQuY3VzdG9t'@; put 'SGVpZ2h0PTEpOmRlWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB4PyhRZT0hMCxtdC5kZWZhdWx0Um93SGVpZ2h0PWI4KGRlWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB4KSxtdC5jdXN0b21IZWlnaHQ9MSk6KDA9PT1kZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhwdHx8MD09PWRlWyIhc2hlZXRGb3Jt'@; put 'YXQiXS5yb3cuaHB4fHxkZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhpZGRlbikmJihRZT0hMCxtdC5kZWZhdWx0Um93SGVpZ2h0PW10LmRlZmF1bHRSb3dIZWlnaHR8fDE2LG10LmN1c3RvbUhlaWdodD0xLG10Lnplcm9IZWlnaHQ9MSksZGVbIiFzaGVldEZvcm1hdCJdLmR5RGVzY2VudCYmKG10'@; put 'WyJ4MTRhYzpkeURlc2NlbnQiXT1kZVsiIXNoZWV0Rm9ybWF0Il0uZHlEZXNjZW50KSksZGVbIiFzaGVldEZvcm1hdCJdLmNvbCYmKGRlWyIhc2hlZXRGb3JtYXQiXS5jb2wud2NofHxCMChkZVsiIXNoZWV0Rm9ybWF0Il0uY29sKSxtdC5kZWZhdWx0Q29sV2lkdGg9ZGVbIiFzaGVldEZvcm1h'@; put 'dCJdLmNvbC53Y2grNS9zZHx8MCxRZT0hMCksbnVsbD09bXQuZGVmYXVsdFJvd0hlaWdodCYmKG10LmRlZmF1bHRSb3dIZWlnaHQ9MTYpLG51bGw9PW10LmRlZmF1bHRDb2xXaWR0aCYmKG10LmRlZmF1bHRDb2xXaWR0aD0xMCksbXQub3V0bGluZUxldmVsUm93PW10Lm91dGxpbmVMZXZlbFJv'@; put 'd3x8NyxRZSYmKFBbUC5sZW5ndGhdPVZyKCJzaGVldEZvcm1hdFByIixudWxsLG10KSl9bnVsbCE9ZGVbIiFjb2xzIl0mJmRlWyIhY29scyJdLmxlbmd0aD4wJiYoUFtQLmxlbmd0aF09ZnVuY3Rpb24gQ0ooZCxfLG0pe2Zvcih2YXIgUCxUPVsiPGNvbHM+Il0sUT0wO1EhPV8ubGVuZ3RoOysr'@; put 'USlpZihQPV9bUV0pe2lmKFAuYXV0byYmeFYoZCxQLFEpLFAuc3x8UC56KXt2YXIgc2U9e3Q6InoifTtudWxsIT1QLnMmJihzZS5zPVAucyksbnVsbCE9UC56JiYoc2Uuej1QLnopLFAuc3R5bGU9QTIobS5jZWxsWGZzLG0uY2VsbFN0eWxlWGZzLHNlLG0pfVRbVC5sZW5ndGhdPVZyKCJjb2wi'@; put 'LG51bGwsT2soUSxQKSl9cmV0dXJuIFRbVC5sZW5ndGhdPSI8L2NvbHM+IixULmpvaW4oIiIpfShkZSxkZVsiIWNvbHMiXSxfKSksUFtzZT1QLmxlbmd0aF09IjxzaGVldERhdGEvPiIsZGVbIiFsaW5rcyJdPVtdLG51bGwhPWRlWyIhcmVmIl0mJihvZT1mdW5jdGlvbiBPSihkLF8pe3ZhciBk'@; put 'ZSxmdCxQPVtdLFE9W10sc2U9eXQoZFsiIXJlZiJdKSxvZT0iIixMZT0iIixOZT1bXSxCZT0wLFplPTAsbnQ9ZFsiIXJvd3MiXSxtdD1BcnJheS5pc0FycmF5KGQpLFFlPXtyOkxlfSxrdD0tMTtmb3IoWmU9c2Uucy5jO1plPD1zZS5lLmM7KytaZSlOZVtaZV09bXMoWmUpO2ZvcihCZT1zZS5z'@; put 'LnI7QmU8PXNlLmUucjsrK0JlKXtmb3IoUT1bXSxMZT16byhCZSksWmU9c2Uucy5jO1plPD1zZS5lLmM7KytaZSl7ZGU9TmVbWmVdK0xlO3ZhciBidD1tdD8oZFtCZV18fFtdKVtaZV06ZFtkZV07dm9pZCAwIT09YnQmJm51bGwhPShvZT1ZVihidCxkZSxkLF8pKSYmUS5wdXNoKG9lKX0oUS5s'@; put 'ZW5ndGg+MHx8bnQmJm50W0JlXSkmJihRZT17cjpMZX0sbnQmJm50W0JlXSYmKChmdD1udFtCZV0pLmhpZGRlbiYmKFFlLmhpZGRlbj0xKSxrdD0tMSxmdC5ocHg/a3Q9YjgoZnQuaHB4KTpmdC5ocHQmJihrdD1mdC5ocHQpLGt0Pi0xJiYoUWUuaHQ9a3QsUWUuY3VzdG9tSGVpZ2h0PTEpLGZ0'@; put 'LmxldmVsJiYoUWUub3V0bGluZUxldmVsPWZ0LmxldmVsKSxmdC5keURlc2NlbnQmJihRZVsieDE0YWM6ZHlEZXNjZW50Il09ZnQuZHlEZXNjZW50KSxmdC5zJiYoUWUucz1BMihfLmNlbGxYZnMsXy5jZWxsU3R5bGVYZnMse3Q6InoiLHM6ZnQuc30sXyksUWUuY3VzdG9tRm9ybWF0PTEpKSxQ'@; put 'W1AubGVuZ3RoXT1Wcigicm93IixRLmpvaW4oIiIpLFFlKSl9aWYobnQpZm9yKDtCZTxudC5sZW5ndGg7KytCZSludCYmbnRbQmVdJiYoUWU9e3I6QmUrMX0sKGZ0PW50W0JlXSkuaGlkZGVuJiYoUWUuaGlkZGVuPTEpLGt0PS0xLGZ0LmhweD9rdD1iOChmdC5ocHgpOmZ0LmhwdCYmKGt0PWZ0'@; put 'LmhwdCksa3Q+LTEmJihRZS5odD1rdCxRZS5jdXN0b21IZWlnaHQ9MSksZnQubGV2ZWwmJihRZS5vdXRsaW5lTGV2ZWw9ZnQubGV2ZWwpLFBbUC5sZW5ndGhdPVZyKCJyb3ciLCIiLFFlKSk7cmV0dXJuIFAuam9pbigiIil9KGRlLF8pLG9lLmxlbmd0aD4wJiYoUFtQLmxlbmd0aF09b2UpKSxQ'@; put 'Lmxlbmd0aD5zZSsxJiYoUFtQLmxlbmd0aF09Ijwvc2hlZXREYXRhPiIsUFtzZV09UFtzZV0ucmVwbGFjZSgiLz4iLCI+IikpLGRlWyIhcHJvdGVjdCJdJiYoUFtQLmxlbmd0aF09ZnVuY3Rpb24gSGcoZCl7dmFyIF89e3NoZWV0OjF9O3JldHVybiBWVi5mb3JFYWNoKGZ1bmN0aW9uKG0pe251'@; put 'bGwhPWRbbV0mJmRbbV0mJihfW21dPSIxIil9KSxrMi5mb3JFYWNoKGZ1bmN0aW9uKG0pe251bGwhPWRbbV0mJiFkW21dJiYoX1ttXT0iMCIpfSksZC5wYXNzd29yZD9fLnBhc3N3b3JkPVZBKGQucGFzc3dvcmQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOmQuZW5jcnlwdGlvbiYmKF8u'@; put 'YWxnb3JpdGhtTmFtZT1kLmVuY3J5cHRpb24uYWxnbyxfLmhhc2hWYWx1ZT1kLmVuY3J5cHRpb24uaGFzaCxfLnNhbHRWYWx1ZT1kLmVuY3J5cHRpb24uc2FsdCxfLnNwaW5Db3VudD1kLmVuY3J5cHRpb24uc3BpbiksVnIoInNoZWV0UHJvdGVjdGlvbiIsbnVsbCxfKX0oZGVbIiFwcm90ZWN0'@; put 'Il0pKSxudWxsIT1kZVsiIWF1dG9maWx0ZXIiXSYmKFBbUC5sZW5ndGhdPWZ1bmN0aW9uIFNKKGQsXyxtLFQpe3ZhciBQPSJzdHJpbmciPT10eXBlb2YgZC5yZWY/ZC5yZWY6aHQoZC5yZWYpO20uV29ya2Jvb2t8fChtLldvcmtib29rPXtTaGVldHM6W119KSxtLldvcmtib29rLk5hbWVzfHwo'@; put 'bS5Xb3JrYm9vay5OYW1lcz1bXSk7dmFyIFE9bS5Xb3JrYm9vay5OYW1lcyxzZT16YShQKTtzZS5zLnI9PXNlLmUuciYmKHNlLmUucj16YShfWyIhcmVmIl0pLmUucixQPWh0KHNlKSk7Zm9yKHZhciBvZT0wO29lPFEubGVuZ3RoOysrb2Upe3ZhciBkZT1RW29lXTtpZigiX3hsbm0uX0ZpbHRl'@; put 'ckRhdGFiYXNlIj09ZGUuTmFtZSYmZGUuU2hlZXQ9PVQpe2RlLlJlZj0iJyIrbS5TaGVldE5hbWVzW1RdKyInISIrUDticmVha319cmV0dXJuIG9lPT1RLmxlbmd0aCYmUS5wdXNoKHtOYW1lOiJfeGxubS5fRmlsdGVyRGF0YWJhc2UiLFNoZWV0OlQsUmVmOiInIittLlNoZWV0TmFtZXNbVF0r'@; put 'IichIitQfSksVnIoImF1dG9GaWx0ZXIiLG51bGwse3JlZjpQfSl9KGRlWyIhYXV0b2ZpbHRlciJdLGRlLG0sZCkpLG51bGwhPWRlWyIhbWVyZ2VzIl0mJmRlWyIhbWVyZ2VzIl0ubGVuZ3RoPjAmJihQW1AubGVuZ3RoXT1mdW5jdGlvbiBSVihkKXtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIiI7'@; put 'Zm9yKHZhciBfPSc8bWVyZ2VDZWxscyBjb3VudD0iJytkLmxlbmd0aCsnIj4nLG09MDttIT1kLmxlbmd0aDsrK20pXys9JzxtZXJnZUNlbGwgcmVmPSInK2h0KGRbbV0pKyciLz4nO3JldHVybiBfKyI8L21lcmdlQ2VsbHM+In0oZGVbIiFtZXJnZXMiXSkpLGRlWyIhY29uZGZtdCJdJiYoUFtQ'@; put 'Lmxlbmd0aF09ZnVuY3Rpb24ga0ooZCxfKXtyZXR1cm4gZC5tYXAoZnVuY3Rpb24obSxUKXtyZXR1cm4gZnVuY3Rpb24gQUooZCxfLG0pe3ZhciBUPWQucz9OayhtLkRYRixkLnMpOi0xLFA9InN0cmluZyI9PXR5cGVvZiBkLnJlZj9kLnJlZjpodChkLnJlZiksc2U9eXQoUC5yZXBsYWNlKC9c'@; put 'cy4qJC8sIiIpKS5zO3NlLnI8MCYmKHNlLnI9MCksc2UuYzwwJiYoc2UuYz0wKTt2YXIgb2U9IiIsZGU9e3ByaW9yaXR5Ol8rMX07c3dpdGNoKFQ+LTEmJihkZS5keGZJZD1UKSxkLnQpe2Nhc2UidW5pcXVlIjpkZS50eXBlPSJ1bmlxdWVWYWx1ZXMiO2JyZWFrO2Nhc2UiZHVwIjpkZS50eXBl'@; put 'PSJkdXBsaWNhdGVWYWx1ZXMiO2JyZWFrO2Nhc2UiYmxhbmsiOmRlLnR5cGU9KGQudj8iYyI6Im5vdEMiKSsib250YWluc0JsYW5rcyIsb2U9Ijxmb3JtdWxhPkxFTihUUklNKCIrcWkoc2UpKyIpKSIrKGQudj8iPSI6IiZndDsiKSsiMDwvZm9ybXVsYT4iO2JyZWFrO2Nhc2UiZXJyb3IiOmRl'@; put 'LnR5cGU9KGQudj8iYyI6Im5vdEMiKSsib250YWluc0Vycm9ycyI7YnJlYWs7Y2FzZSJmb3JtdWxhIjpkZS50eXBlPSJleHByZXNzaW9uIixvZT1WcigiZm9ybXVsYSIsQmkoZC5mKSx7fSk7YnJlYWs7Y2FzZSJkYXRlIjpkZS50eXBlPSJ0aW1lUGVyaW9kIixkZS50aW1lUGVyaW9kPXhKW2Qu'@; put 'b3BdO2JyZWFrO2Nhc2UidGV4dCI6c3dpdGNoKGRlLnR5cGU9ZGUub3BlcmF0b3I9WWtbZC5vcF0sZGUudGV4dD1kLnYsZC5vcCl7Y2FzZSJJTiI6b2U9Jzxmb3JtdWxhPk5PVChJU0VSUk9SKFNFQVJDSCgiJytCaShkLnYpKyciLCcrcWkoc2UpKyIpKSk8L2Zvcm11bGE+IjticmVhaztjYXNl'@; put 'Ik9UIjpvZT0nPGZvcm11bGE+SVNFUlJPUihTRUFSQ0goIicrQmkoZC52KSsnIiwnK3FpKHNlKSsiKSk8L2Zvcm11bGE+IjticmVhaztjYXNlIlNUIjpvZT0iPGZvcm11bGE+TEVGVCgiK3FpKHNlKSsnLExFTigiJytCaShkLnYpKyciKSk9IicrQmkoZC52KSsnIjwvZm9ybXVsYT4nO2JyZWFr'@; put 'O2Nhc2UiTkQiOm9lPSI8Zm9ybXVsYT5SSUdIVCgiK3FpKHNlKSsnLExFTigiJytCaShkLnYpKyciKSk9IicrQmkoZC52KSsnIjwvZm9ybXVsYT4nfWJyZWFrO2Nhc2UidmFsIjpkZS50eXBlPSJjZWxsSXMiLGRlLm9wZXJhdG9yPXczW2Qub3BdLG9lPW51bGwhPWQubWluP1ZyKCJmb3JtdWxh'@; put 'IixCaShTdHJpbmcoZC5taW4pKSx7fSkrVnIoImZvcm11bGEiLEJpKFN0cmluZyhkLm1heCkpLHt9KTpWcigiZm9ybXVsYSIsQmkobnVsbCE9ZC52P1N0cmluZygic3RyaW5nIj09dHlwZW9mIGQudj8nIicrZC52LnJlcGxhY2UoLyIvZywnIiInKSsnIic6ZC52KTpkLmYpLHt9KTticmVhaztj'@; put 'YXNlImF2ZyI6c3dpdGNoKGRlLnR5cGU9ImFib3ZlQXZlcmFnZSIsZGUuYWJvdmVBdmVyYWdlPSJMIj09ZC5vcC5jaGFyQXQoMCk/IjAiOiIxIixkLm9wLmNoYXJBdCgxKSl7Y2FzZSJUIjpkZS5lcXVhbEF2ZXJhZ2U9IjAiO2JyZWFrO2Nhc2UiRSI6ZGUuZXF1YWxBdmVyYWdlPSIxIjticmVh'@; put 'aztkZWZhdWx0OmRlLnN0ZERldj1kLm9wLmNoYXJBdCgxKX1icmVhaztjYXNlInJhbmsiOmRlLnR5cGU9InRvcDEwIixkZS5ib3R0b209IkIiPT1kLm9wLmNoYXJBdCgwKT8iMSI6IjAiLGRlLnBlcmNlbnQ9IlAiPT1kLm9wLmNoYXJBdCgxKT8iMSI6IjAiLGRlLnJhbms9ZC52O2JyZWFrO2Nh'@; put 'c2UiaWNvbiI6ZGUudHlwZT0iaWNvblNldCI7dmFyIExlPXtpY29uU2V0OmQudixwZXJjZW50OmQucGN0PyJ0cnVlIjoiZmFsc2UifTtkLnJldiYmKExlLnJldmVyc2U9InRydWUiKSxkLmhpZGRlbiYmKExlLnNob3dWYWx1ZT0iZmFsc2UiKSxvZT1WcigiaWNvblNldCIsZC50aHJlc2gubWFw'@; put 'KE44KS5qb2luKCIiKSxMZSk7YnJlYWs7Y2FzZSJzY2FsZSI6ZGUudHlwZT0iY29sb3JTY2FsZSIsb2UrPU44KGQuY21pbiksZC5jbWlkJiYob2UrPU44KGQuY21pZCkpLG9lKz1OOChkLmNtYXgpLG9lKz1QZyhkLmNtaW4uY29sb3IpLGQuY21pZCYmKG9lKz1QZyhkLmNtaWQuY29sb3IpKSxv'@; put 'ZT1WcigiY29sb3JTY2FsZSIsb2UrPVBnKGQuY21heC5jb2xvcikse30pO2JyZWFrO2Nhc2UiYmFyIjpkZS50eXBlPSJkYXRhQmFyIixvZSs9TjgoZC5jbWluKSxvZSs9TjgoZC5jbWF4KSxvZT1WcigiZGF0YUJhciIsb2UrPVBnKGQuY29sb3IpLHt9KTticmVhaztkZWZhdWx0OnRocm93IGNv'@; put 'bnNvbGUubG9nKGQpLCJDRiBtaXNzaW5nIHR5cGUgIitkLnR9cmV0dXJuJzxjb25kaXRpb25hbEZvcm1hdHRpbmcgc3FyZWY9IicrUCsnIj4nK1ZyKCJjZlJ1bGUiLCIiPT1vZT9udWxsOm9lLGRlKSsiPC9jb25kaXRpb25hbEZvcm1hdHRpbmc+In0obSxULF8pfSkuam9pbigiIil9KGRlWyIh'@; put 'Y29uZGZtdCJdLF8pKSxkZVsiIXZhbGlkYXRpb25zIl0mJihQW1AubGVuZ3RoXT1mdW5jdGlvbiB6VihkKXtpZighZHx8MD09ZC5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBfPVtdLG09MCxUPTA7VDxkLmxlbmd0aDsrK1Qpe3ZhciBQPWRbVF0sUT1VVltQLnRdO2lmKFAucmVmJiYoInN0cmlu'@; put 'ZyIhPXR5cGVvZiBQLnJlZnx8LTEhPVAucmVmLmluZGV4T2YoIiAiKXx8KFAucmVmPXl0KFAucmVmKSxQLnJlZi5zJiYhKFAucmVmLnMuYzwwKSkpKXsrK207dmFyIHNlPXt0eXBlOlEsYWxsb3dCbGFuazorKDAhPVAuYmxhbmspLHNob3dJbnB1dE1lc3NhZ2U6KygwIT1QLmlucHV0KSxzaG93'@; put 'RXJyb3JNZXNzYWdlOisoMCE9UC5lcnJvciksc3FyZWY6InN0cmluZyI9PXR5cGVvZiBQLnJlZj9QLnJlZjpodChQLnJlZil9O2lmKFAuaW5wdXQmJihQLmlucHV0LnRpdGxlJiYoc2UucHJvbXB0VGl0bGU9dGEoUC5pbnB1dC50aXRsZSkpLFAuaW5wdXQubWVzc2FnZSYmKHNlLnByb21wdD10'@; put 'YShQLmlucHV0Lm1lc3NhZ2UpKSksUC5lcnJvciYmKFAuZXJyb3IudGl0bGUmJihzZS5lcnJvclRpdGxlPXRhKFAuZXJyb3IudGl0bGUpKSxQLmVycm9yLm1lc3NhZ2UmJihzZS5lcnJvcj10YShQLmVycm9yLm1lc3NhZ2UpKSxQLmVycm9yLnN0eWxlJiYoc2UuZXJyb3JTdHlsZT1QLmVycm9y'@; put 'LnN0eWxlKSksIVEpdGhyb3cgbmV3IEVycm9yKCJCYWQgdmFsaWRhdGlvbjogdW5yZWNvZ25pemVkIHR5cGUgIitQLnQpO3ZhciBvZT0iIjtzd2l0Y2goUC50KXtjYXNlIkFueSI6YnJlYWs7Y2FzZSJMaXN0IjpjYXNlIkN1c3RvbSI6aWYoUC5sKXtpZihQLmwuam9pbigiLCIpLmxlbmd0aD4y'@; put 'NTApdGhyb3cgbmV3IEVycm9yKCJEViBsZW5ndGggPiAyNTAgdHJpZ2dlcnMgY29ycnVwdGlvbiBlcnJvcnMgaW4gRXhjZWwuICBVc2UgYSBsb29rdXAgdGFibGUiKTtvZT0nPGZvcm11bGExPiInK0JpKFAubC5qb2luKCIsIikpKyciPC9mb3JtdWxhMT4nfWVsc2Ugb2U9Ijxmb3JtdWxhMT4i'@; put 'K0JpKFAuZikrIjwvZm9ybXVsYTE+IjticmVhaztjYXNlIkRhdGUiOmNhc2UiVGltZSI6Y2FzZSJEZWNpbWFsIjpjYXNlIkxlbmd0aCI6Y2FzZSJXaG9sZSI6aWYoIXczW1Aub3BdKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGEgVmFsaWRhdGlvbiB0eXBlICIrUC5vcCsiIGZvciAiK1AudCk7'@; put 'aWYoc2Uub3BlcmF0b3I9dzNbUC5vcF0sbnVsbCE9UC52KW9lPSI8Zm9ybXVsYTE+IitCaShTdHJpbmcoUC52IGluc3RhbmNlb2YgRGF0ZT9LZShQLnYpOlAudikpKyI8L2Zvcm11bGExPiI7ZWxzZXtpZihudWxsPT1QLm1pbnx8bnVsbD09UC5tYXgpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0'@; put 'YSBWYWxpZGF0aW9uOiBgdmAgb3IgYG1pbmArYG1heGAgcmVxdWlyZWQgZm9yIFR5cGUgIitQLnQpO29lPSI8Zm9ybXVsYTE+IitCaShTdHJpbmcoUC5taW4gaW5zdGFuY2VvZiBEYXRlP0tlKFAubWluKTpQLm1pbikpKyI8L2Zvcm11bGExPjxmb3JtdWxhMj4iK0JpKFN0cmluZyhQLm1heCBp'@; put 'bnN0YW5jZW9mIERhdGU/S2UoUC5tYXgpOlAubWF4KSkrIjwvZm9ybXVsYTI+In19Xy5wdXNoKFZyKCJkYXRhVmFsaWRhdGlvbiIsb2V8fG51bGwsc2UpKX19cmV0dXJuIG0+MD8nPGRhdGFWYWxpZGF0aW9ucyBjb3VudD0iJyttKyciPicrXy5qb2luKCIiKSsiPC9kYXRhVmFsaWRhdGlvbnM+'@; put 'IjoiIn0oZGVbIiF2YWxpZGF0aW9ucyJdKSk7dmFyIGt0LGZ0PS0xLGJ0PS0xO2lmKGRlWyIhbGlua3MiXS5sZW5ndGg+MCYmKFBbUC5sZW5ndGhdPSI8aHlwZXJsaW5rcz4iLGRlWyIhbGlua3MiXS5mb3JFYWNoKGZ1bmN0aW9uKG5uKXtublsxXS5UYXJnZXQmJihrdD17cmVmOm5uWzBdfSwi'@; put 'IyIhPW5uWzFdLlRhcmdldC5jaGFyQXQoMCkmJihidD1haShULC0xLEJpKG5uWzFdLlRhcmdldCkucmVwbGFjZSgvIy4qJC8sIiIpLHVhLkhMSU5LKSxrdFsicjppZCJdPSJySWQiK2J0KSwoZnQ9bm5bMV0uVGFyZ2V0LmluZGV4T2YoIiMiKSk+LTEmJihrdC5sb2NhdGlvbj1CaShublsxXS5U'@; put 'YXJnZXQuc2xpY2UoZnQrMSkpKSxublsxXS5Ub29sdGlwJiYoa3QudG9vbHRpcD1CaShublsxXS5Ub29sdGlwKSksUFtQLmxlbmd0aF09VnIoImh5cGVybGluayIsbnVsbCxrdCkpfSksUFtQLmxlbmd0aF09IjwvaHlwZXJsaW5rcz4iKSxkZWxldGUgZGVbIiFsaW5rcyJdLFplKXt2YXIgRXQ9'@; put 'ZnVuY3Rpb24gSFYoZCl7aWYoZC5wcm9wcyl7dmFyIF89e30sbT1kLnByb3BzO3JldHVybiBtLmdyaWRsaW5lcyYmKF8uZ3JpZExpbmVzPV8uZ3JpZExpbmVzU2V0PTEpLG0uaGVhZGluZ3MmJihfLmhlYWRpbmdzPTEpLG0uY2VudGVyWCYmKF8uaG9yaXpvbnRhbENlbnRlcmVkPTEpLG0uY2Vu'@; put 'dGVyWSYmKF8udmVydGljYWxDZW50ZXJlZD0xKSxWcigicHJpbnRPcHRpb25zIixudWxsLF8pfXJldHVybiIifShaZSk7RXQubGVuZ3RoJiYoUFtQLmxlbmd0aF09RXQpfWlmKChudWxsIT1kZVsiIW1hcmdpbnMiXXx8WmUmJlplLm1hcmdpbnMpJiYoUFtQLmxlbmd0aF09ZnVuY3Rpb24gYkoo'@; put 'ZCl7cmV0dXJuIEw4KGQpLFZyKCJwYWdlTWFyZ2lucyIsbnVsbCxkKX0oZGVbIiFtYXJnaW5zIl18fFplLm1hcmdpbnMpKSxaZSl7dmFyIFZ0PWZ1bmN0aW9uIEZWKGQpe2lmKGQucHJvcHMpe3ZhciBfPXt9LG09ZC5wcm9wcztpZihtLm9yaWVudGF0aW9uJiYoXy5vcmllbnRhdGlvbj1tLm9y'@; put 'aWVudGF0aW9uKSxtLnNjYWxlJiYoXy5zY2FsZT1tLnNjYWxlKSxtLmZpdCYmKG51bGwhPW0uZml0LmhlaWdodCYmKF8uZml0VG9IZWlnaHQ9bS5maXQuaGVpZ2h0KSxudWxsIT1tLmZpdC53aWR0aCYmKF8uZml0VG9XaWR0aD1tLmZpdC53aWR0aCkpLG0uZHBpJiYoXy5ob3Jpem9udGFsRHBp'@; put 'PV8udmVydGljYWxEcGk9bS5kcGkpLG51bGwhPW0uZmlyc3QmJihfLmZpcnN0UGFnZU51bWJlcj1tLmZpcnN0LF8udXNlRmlyc3RQYWdlTnVtYmVyPTEpLG0uYncmJihfLmJsYWNrQW5kV2hpdGU9MSksbS5kcmFmdCYmKF8uZHJhZnQ9MSksbS5jb21tZW50cyYmKF8uY2VsbENvbW1lbnRzPVVr'@; put 'W20uY29tbWVudHNdfHwibm9uZSIpLG0uZXJyb3JzJiYoXy5lcnJvcnM9TlZbbS5lcnJvcnNdfHwibm9uZSIpLG0ucGFwZXIpc3dpdGNoKHR5cGVvZiBtLnBhcGVyKXtjYXNlIm51bWJlciI6Xy5wYXBlclNpemU9bS5wYXBlcjticmVhaztjYXNlInN0cmluZyI6bm9bbS5wYXBlcl0/Xy5wYXBl'@; put 'clNpemU9bm9bbS5wYXBlcl06K20ucGFwZXImJihfLnBhcGVyU2l6ZT0rbS5wYXBlcik7YnJlYWs7Y2FzZSJvYmplY3QiOmlmKCFtLnBhcGVyLmhlaWdodHx8IW0ucGFwZXIud2lkdGgpdGhyb3ciQ3VzdG9tIFBhcGVyIFNpemUgbXVzdCBpbmNsdWRlIHdpZHRoIGFuZCBoZWlnaHQhIjtfLnBh'@; put 'cGVySGVpZ2h0PW0ucGFwZXIuaGVpZ2h0LF8ucGFwZXJXaWR0aD1tLnBhcGVyLndpZHRofXJldHVyblsxLCEwLCJ0cnVlIiwib3ZlciJdLmluZGV4T2YobS5vcmRlcik+LTEmJihfLnBhZ2VPcmRlcj0ib3ZlclRoZW5Eb3duIiksVnIoInBhZ2VTZXR1cCIsbnVsbCxfKX1yZXR1cm4iIn0oWmUp'@; put 'O1Z0Lmxlbmd0aCYmKFBbUC5sZW5ndGhdPVZ0KSxWdD1mdW5jdGlvbiBNSihkKXt2YXIgXz1bXSxtPSIiLFQ9IiIsUD0iIixRPSIiLHNlPSIiLG9lPSIiLGRlPSIiLExlPUttKGQuaGVhZGVyKTtMZS5sZW5ndGgmJihUPUxlWzBdLG9lPUxlWzFdLFE9TGVbMl0pO3ZhciBOZT1LbShkLmZvb3Rl'@; put 'cik7cmV0dXJuIE5lLmxlbmd0aCYmKFA9TmVbMF0sZGU9TmVbMV0sc2U9TmVbMl0pLFQmJl8ucHVzaCgiPG9kZEhlYWRlcj4iK0JpKFQpKyI8L29kZEhlYWRlcj4iKSxQJiZfLnB1c2goIjxvZGRGb290ZXI+IitCaShQKSsiPC9vZGRGb290ZXI+IiksKHNlIT1QfHxRIT1UKSYmKG0rPScgZGlm'@; put 'ZmVyZW50T2RkRXZlbj0iMSInLF8ucHVzaCgiPGV2ZW5IZWFkZXI+IitCaShRKSsiPC9ldmVuSGVhZGVyPiIpLF8ucHVzaCgiPGV2ZW5Gb290ZXI+IitCaShzZSkrIjwvZXZlbkZvb3Rlcj4iKSksKGRlIT1QfHxvZSE9VCkmJihtKz0nIGRpZmZlcmVudEZpcnN0PSIxIicsXy5wdXNoKCI8Zmly'@; put 'c3RIZWFkZXI+IitCaShvZSkrIjwvZmlyc3RIZWFkZXI+IiksXy5wdXNoKCI8Zmlyc3RGb290ZXI+IitCaShkZSkrIjwvZmlyc3RGb290ZXI+IikpLF8ubGVuZ3RoPyI8aGVhZGVyRm9vdGVyIittKyI+IitfLmpvaW4oIiIpKyI8L2hlYWRlckZvb3Rlcj4iOiIifShaZSksVnQubGVuZ3RoJiYo'@; put 'UFtQLmxlbmd0aF09VnQpfWlmKChudWxsIT1kZVsiIXJvd0JyZWFrcyJdfHxaZSYmWmUucm93QnJlYWtzKSYmKFBbUC5sZW5ndGhdPWZ1bmN0aW9uIGdKKGQpe2lmKDA9PWQubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgXz1bJzxyb3dCcmVha3MgY291bnQ9IicrZC5sZW5ndGgrJyIgbWFudWFs'@; put 'QnJlYWtDb3VudD0iJytkLmxlbmd0aCsnIj4nXSxtPTA7bTxkLmxlbmd0aDsrK20pXy5wdXNoKCc8YnJrIGlkPSInK2RbbV0uUisnIiBtYW49IjEiLz4nKTtyZXR1cm4gXy5qb2luKCIiKSsiPC9yb3dCcmVha3M+In0oZGVbIiFyb3dCcmVha3MiXXx8WmUucm93QnJlYWtzKSksKG51bGwhPWRl'@; put 'WyIhY29sQnJlYWtzIl18fFplJiZaZS5jb2xCcmVha3MpJiYoUFtQLmxlbmd0aF09ZnVuY3Rpb24gdkooZCl7aWYoMD09ZC5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBfPVsnPGNvbEJyZWFrcyBjb3VudD0iJytkLmxlbmd0aCsnIiBtYW51YWxCcmVha0NvdW50PSInK2QubGVuZ3RoKyciPidd'@; put 'LG09MDttPGQubGVuZ3RoOysrbSlfLnB1c2goJzxicmsgaWQ9IicrZFttXS5DKyciIG1hbj0iMSIvPicpO3JldHVybiBfLmpvaW4oIiIpKyI8L2NvbEJyZWFrcz4ifShkZVsiIWNvbEJyZWFrcyJdfHxaZS5jb2xCcmVha3MpKSwoIV98fF8uaWdub3JlRUN8fG51bGw9PV8uaWdub3JlRUMpJiYo'@; put 'UFtQLmxlbmd0aF09VW8oImlnbm9yZWRFcnJvcnMiLFZyKCJpZ25vcmVkRXJyb3IiLG51bGwse251bWJlclN0b3JlZEFzVGV4dDoxLHNxcmVmOkxlfSkpKSxkZVsiIWNoYXJ0cyJdJiZCZS5wdXNoLmFwcGx5KEJlLGRlWyIhY2hhcnRzIl0pLGRlWyIhaW1hZ2VzIl0mJkJlLnB1c2guYXBwbHko'@; put 'QmUsZGVbIiFpbWFnZXMiXSksZGVbIiFzaGFwZXMiXSYmQmUucHVzaC5hcHBseShCZSxkZVsiIXNoYXBlcyJdKSxCZS5sZW5ndGg+MCYmKGJ0PWFpKFQsLTEsIi4uL2RyYXdpbmdzL2RyYXdpbmciKyhkKzEpKyIueG1sIix1YS5EUkFXKSxQW1AubGVuZ3RoXT1WcigiZHJhd2luZyIsbnVsbCx7'@; put 'InI6aWQiOiJySWQiK2J0fSksZGVbIiFkcmF3aW5nIl09QmUpLChkZVsiIWNvbW1lbnRzIl0ubGVuZ3RoPjB8fChkZVsiIWNvbnRyb2xzIl18fFtdKS5sZW5ndGg+MCkmJihidD1haShULC0xLCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nIisoZCsxKSsiLnZtbCIsdWEuVk1MKSxQW1AubGVuZ3Ro'@; put 'XT1WcigibGVnYWN5RHJhd2luZyIsbnVsbCx7InI6aWQiOiJySWQiK2J0fSksZGVbIiFsZWdhY3kiXT1idCksZGVbIiFwcmludCJdJiZkZVsiIXByaW50Il0uaW1hZ2VzKXt2YXIgdW49ZGVbIiFwcmludCJdLmltYWdlcyxucj0wO1siaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlv'@; put 'bihubil7dW5bbm5dJiZbIm9kZCIsImV2ZW4iLCJmaXJzdCJdLmZvckVhY2goZnVuY3Rpb24oYXIpe3VuW25uXVthcl0mJlsibGVmdCIsInJpZ2h0IiwiY2VudGVyIl0uZm9yRWFjaChmdW5jdGlvbihqbil7aWYoQXJyYXkuaXNBcnJheSh1bltubl1bYXJdW2puXSkpZm9yKHZhciBrbj0wO2tu'@; put 'PHVuW25uXVthcl1bam5dLmxlbmd0aDsrK2tuKXVuW25uXVthcl1bam5dW2tuXSYmKHVuW25uXVthcl1bam5dW2tuXS5fY250PW5yKyspfSl9KX0pLG5yPjAmJihidD1haShULC0xLCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nIisoZCsxKSsiSEYudm1sIix1YS5WTUwpLFBbUC5sZW5ndGhdPVZy'@; put 'KCJsZWdhY3lEcmF3aW5nSEYiLG51bGwseyJyOmlkIjoicklkIitidH0pLGRlWyIhbGVnYWN5SEYiXT1idCl9cmV0dXJuKGRlWyIhdGFibGVzIl18fFtdKS5sZW5ndGg+MCYmKFBbUC5sZW5ndGhdPSc8dGFibGVQYXJ0cyBjb3VudD0iJytkZVsiIXRhYmxlcyJdLmxlbmd0aCsnIj4nLGRlWyIh'@; put 'dGFibGVzIl0uZm9yRWFjaChmdW5jdGlvbihubixhcil7YnQ9YWkoVCwtMSwiLi4vdGFibGVzL3RhYmxlIisoZCsxKSsiXyIrYXIrIi54bWwiLHVhLlRBQkxFKSxQW1AubGVuZ3RoXT0nPHRhYmxlUGFydCByOmlkPSJySWQnK2J0KyciLz4nfSksUFtQLmxlbmd0aF09IjwvdGFibGVQYXJ0cz4i'@; put 'KSxQLmxlbmd0aD4xJiYoUFtQLmxlbmd0aF09Ijwvd29ya3NoZWV0PiIsUFsxXT1QWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxQLmpvaW4oIiIpfWZ1bmN0aW9uIE5KKGQsXyxtLFQpe3ZhciBQPWZ1bmN0aW9uIFprKGQsXyxtKXt2YXIgVD1GcigxNDUpLFA9KG1bIiFyb3dzIl18fFtdKVtkXXx8'@; put 'e307VC53cml0ZV9zaGlmdCg0LGQpLFQud3JpdGVfc2hpZnQoNCwwKTt2YXIgUT0zMjA7UC5ocHg/UT0yMCpiOChQLmhweCk6UC5ocHQmJihRPTIwKlAuaHB0KSxULndyaXRlX3NoaWZ0KDIsUSksVC53cml0ZV9zaGlmdCgxLDApO3ZhciBzZT0wO1AubGV2ZWwmJihzZXw9UC5sZXZlbCksUC5o'@; put 'aWRkZW4mJihzZXw9MTYpLChQLmhweHx8UC5ocHQpJiYoc2V8PTMyKSxULndyaXRlX3NoaWZ0KDEsc2UpLFQud3JpdGVfc2hpZnQoMSwwKTt2YXIgb2U9MCxkZT1ULmw7VC5sKz00O2Zvcih2YXIgTGU9e3I6ZCxjOjB9LE5lPTA7TmU8MTY7KytOZSlpZighKF8ucy5jPk5lKzE8PDEwfHxfLmUu'@; put 'YzxOZTw8MTApKXtmb3IodmFyIEJlPS0xLFplPS0xLG50PU5lPDwxMDtudDxOZSsxPDwxMDsrK250KUxlLmM9bnQsKEFycmF5LmlzQXJyYXkobSk/KG1bTGUucl18fFtdKVtMZS5jXTptW3FpKExlKV0pJiYoQmU8MCYmKEJlPW50KSxaZT1udCk7QmU8MHx8KCsrb2UsVC53cml0ZV9zaGlmdCg0'@; put 'LEJlKSxULndyaXRlX3NoaWZ0KDQsWmUpKX12YXIgUWU9VC5sO3JldHVybiBULmw9ZGUsVC53cml0ZV9zaGlmdCg0LG9lKSxULmw9UWUsVC5sZW5ndGg+VC5sP1Quc2xpY2UoMCxULmwpOlR9KFQsbSxfKTsoUC5sZW5ndGg+MTd8fChfWyIhcm93cyJdfHxbXSlbVF0pJiZJaShkLCJCcnRSb3dI'@; put 'ZHIiLFApfXZhciBGSj1qdSxQSj1CZDtmdW5jdGlvbiBuQihkKXtyZXR1cm5bRGEoZCkscXMoZCksIm4iXX12YXIgejVlPWp1LEdKPUJkLGNCPVsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl0sSms9WyJBbnkiLCJXaG9sZSIsIkRlY2ltYWwiLCJMaXN0'@; put 'IiwiRGF0ZSIsIlRpbWUiLCJMZW5ndGgiLCJDdXN0b20iXSxQeT1bIklOIiwiT1QiLCJFUSIsIk5FIiwiR1QiLCJMVCIsIkdFIiwiTEUiXTtmdW5jdGlvbiBlZWUoZCl7dmFyIF89RnIoNCksbT1bX10sVD1Kay5pbmRleE9mKGQudCk7aWYoVDwwKXRocm93IG5ldyBFcnJvcigiQmFkIHZhbGlk'@; put 'YXRpb246IHVucmVjb2duaXplZCB0eXBlICIrZC50KTt2YXIgUT1QeS5pbmRleE9mKGQub3ApO3N3aXRjaChUKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNzpRPTA7YnJlYWs7ZGVmYXVsdDppZigtMT09USl0aHJvdyBuZXcgRXJyb3IoIkJhZCBEYXRhIFZhbGlkYXRpb24gdHlwZSAiK2Qub3ArIiBm'@; put 'b3IgIitkLnQpfV8ud3JpdGVfc2hpZnQoMSwwfFQpLF8ud3JpdGVfc2hpZnQoMSwxKSxfLndyaXRlX3NoaWZ0KDEsMTJ8UTw8NCksXy53cml0ZV9zaGlmdCgxLDApLG0ucHVzaChmdW5jdGlvbiByOChkKXt2YXIgXz1kLnNwbGl0KC9ccyosXHMqLyksbT1Gcig0KTttLndyaXRlX3NoaWZ0KDQs'@; put 'Xy5sZW5ndGgpO3ZhciBUPVttXTtyZXR1cm4gXy5mb3JFYWNoKGZ1bmN0aW9uKFApe1QucHVzaChCZCh5dChQKSkpfSksRyhUKX0oInN0cmluZyI9PXR5cGVvZiBkLnJlZj9kLnJlZjpodChkLnJlZikpKTt2YXIgc2U9RnIoMTYpO3NlLndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5NSksc2Uud3Jp'@; put 'dGVfc2hpZnQoNCw0Mjk0OTY3Mjk1KSxzZS53cml0ZV9zaGlmdCg0LDQyOTQ5NjcyOTUpLHNlLndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5NSksbS5wdXNoKHNlKTt2YXIgb2U9RnIoOCk7b2Uud3JpdGVfc2hpZnQoNCwwKSxvZS53cml0ZV9zaGlmdCg0LDApO3ZhciBkZT0xO3N3aXRjaChkLnQp'@; put 'e2Nhc2UiQW55IjptLnB1c2gob2UpLG0ucHVzaChvZSk7YnJlYWs7Y2FzZSJEZWNpbWFsIjpjYXNlIkxlbmd0aCI6Y2FzZSJXaG9sZSI6aWYobnVsbCE9ZC52fHxudWxsIT1kLmYpbS5wdXNoKCJudW1iZXIiPT10eXBlb2YgZC52P0Q4KGQudik6RHkobnVsbD09ZC52P2QuZjpkLnYpKTtlbHNl'@; put 'e2lmKG51bGw9PWQubWlufHxudWxsPT1kLm1heCl0aHJvdyJVbnN1cHBvcnRlZCBEYXRhIFZhbGlkYXRpb246IGB2YCBvciBgbWluYCtgbWF4YCByZXF1aXJlZCBmb3IgVHlwZSAiK2QudDttLnB1c2goIm51bWJlciI9PXR5cGVvZiBkLm1pbj9EOChkLm1pbik6RHkoZC5taW4pKSxtLnB1c2go'@; put 'Im51bWJlciI9PXR5cGVvZiBkLm1heD9EOChkLm1heCk6RHkoZC5tYXgpKSxkZT0yfWJyZWFrO2Nhc2UiTGlzdCI6aWYobnVsbCE9ZC5sKXttLnB1c2goSXkoZC5sLmpvaW4oIiwiKSkpO2JyZWFrfWNhc2UiQ3VzdG9tIjppZigibnVsbCIhPWQuZil7bS5wdXNoKER5KGQuZikpO2JyZWFrfXRo'@; put 'cm93IlVuc3VwcG9ydGVkIERhdGEgVmFsaWRhdGlvbjogYGZgIisoIkxpc3QiPT1kLnQ/IiBvciBgbGAiOiIiKSsiIHJlcXVpcmVkIGZvciBUeXBlICIrZC50O2RlZmF1bHQ6dGhyb3ciWExTQiBkb2VzIG5vdCBzdXBwb3J0IERhdGEgVmFsaWRhdGlvbiB0eXBlICIrZC50fXJldHVybiAxPT1k'@; put 'ZSYmbS5wdXNoKG9lKSxHKG0pfWZ1bmN0aW9uIHRlZShkLF8sbSxULFAsUSxzZSl7aWYodm9pZCAwPT09Xy52JiZudWxsPT1fLnN8fCJ6Ij09PV8udCYmIVAuc2hlZXRTdHVicylyZXR1cm4hMTt2YXIgb2U9IiI7c3dpdGNoKF8udCl7Y2FzZSJiIjpvZT1fLnY/IjEiOiIwIjticmVhaztjYXNl'@; put 'ImQiOihfPVFyKF8pKS56PV8uenx8SS5fdGFibGVbMTRdLF8udj1LZShsbihfLnYpKSxfLnQ9Im4iO2JyZWFrO2Nhc2UibiI6Y2FzZSJlIjpvZT0iIitfLnY7YnJlYWs7ZGVmYXVsdDpvZT1fLnZ9dmFyIGRlPXtyOm0sYzpUfTtzd2l0Y2goZGUucz1BMihQLmNlbGxYZnMsUC5jZWxsU3R5bGVY'@; put 'ZnMsXyxQKSxfLmwmJlFbIiFsaW5rcyJdLnB1c2goW3FpKGRlKSxfLmxdKSxfLmMmJlFbIiFjb21tZW50cyJdLnB1c2goW3FpKGRlKSxfLmNdKSxfLnQpe2Nhc2UicyI6Y2FzZSJzdHIiOmlmKFAuYm9va1NTVCl7aWYob2U9TGsoUC5TdHJpbmdzLF8udixfLlI/Xy5yPU05KF8uUik6bnVsbCxQ'@; put 'LnJldlN0cmluZ3MpLF8uUilmb3IodmFyIExlPTA7TGU8Xy5SLmxlbmd0aDsrK0xlKV8uUltMZV0ucyYmQTIoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpfLlJbTGVdLnN9LFApO2RlLnQ9InMiLGRlLnY9b2Usc2U/SWkoZCwiQnJ0U2hvcnRJc3N0IixmdW5jdGlvbiBL'@; put 'ayhkLF8sbSl7cmV0dXJuIG51bGw9PW0mJihtPUZyKDgpKSxucyhfLG0pLG0ud3JpdGVfc2hpZnQoNCxfLnYpLG19KDAsZGUpKTpJaShkLCJCcnRDZWxsSXNzdCIsZnVuY3Rpb24geDUoZCxfLG0pe3JldHVybiBudWxsPT1tJiYobT1GcigxMikpLGlvKF8sbSksbS53cml0ZV9zaGlmdCg0LF8u'@; put 'diksbX0oMCxkZSkpfWVsc2UgZGUudD0ic3RyIixzZT9JaShkLCJCcnRTaG9ydFN0IixmdW5jdGlvbiBXSihkLF8sbSl7cmV0dXJuIG51bGw9PW0mJihtPUZyKDgrNCpkLnYubGVuZ3RoKSksbnMoXyxtKSxraShkLnYsbSksbS5sZW5ndGg+bS5sP20uc2xpY2UoMCxtLmwpOm19KF8sZGUpKTpJ'@; put 'aShkLCJCcnRDZWxsU3QiLGZ1bmN0aW9uIG9CKGQsXyxtKXtyZXR1cm4gbnVsbD09bSYmKG09RnIoMTIrNCpkLnYubGVuZ3RoKSksaW8oXyxtKSxraShkLnYsbSksbS5sZW5ndGg+bS5sP20uc2xpY2UoMCxtLmwpOm19KF8sZGUpKTtyZXR1cm4hMDtjYXNlIm4iOnJldHVybiBfLnY9PSgwfF8u'@; put 'dikmJl8udj4tMWUzJiZfLnY8MWUzP3NlP0lpKGQsIkJydFNob3J0UmsiLGZ1bmN0aW9uIEZ5KGQsXyxtKXtyZXR1cm4gbnVsbD09bSYmKG09RnIoOCkpLG5zKF8sbSksczAoZC52LG0pLG19KF8sZGUpKTpJaShkLCJCcnRDZWxsUmsiLGZ1bmN0aW9uIHJCKGQsXyxtKXtyZXR1cm4gbnVsbD09'@; put 'bSYmKG09RnIoMTIpKSxpbyhfLG0pLHMwKGQudixtKSxtfShfLGRlKSk6c2U/SWkoZCwiQnJ0U2hvcnRSZWFsIixmdW5jdGlvbiBVSihkLF8sbSl7cmV0dXJuIG51bGw9PW0mJihtPUZyKDEyKSksbnMoXyxtKSxKYShkLnYsbSksbX0oXyxkZSkpOklpKGQsIkJydENlbGxSZWFsIixmdW5jdGlv'@; put 'biB0QihkLF8sbSl7cmV0dXJuIG51bGw9PW0mJihtPUZyKDE2KSksaW8oXyxtKSxKYShkLnYsbSksbX0oXyxkZSkpLCEwO2Nhc2UiYiI6cmV0dXJuIGRlLnQ9ImIiLHNlP0lpKGQsIkJydFNob3J0Qm9vbCIsZnVuY3Rpb24gUVYoZCxfLG0pe3JldHVybiBudWxsPT1tJiYobT1Gcig1KSksbnMo'@; put 'XyxtKSxtLndyaXRlX3NoaWZ0KDEsZC52PzE6MCksbX0oXyxkZSkpOklpKGQsIkJydENlbGxCb29sIixmdW5jdGlvbiBYVihkLF8sbSl7cmV0dXJuIG51bGw9PW0mJihtPUZyKDkpKSxpbyhfLG0pLG0ud3JpdGVfc2hpZnQoMSxkLnY/MTowKSxtfShfLGRlKSksITA7Y2FzZSJlIjpyZXR1cm4g'@; put 'ZGUudD0iZSIsc2U/SWkoZCwiQnJ0U2hvcnRFcnJvciIsZnVuY3Rpb24gakooZCxfLG0pe3JldHVybiBudWxsPT1tJiYobT1Gcig4KSksbnMoXyxtKSxtLndyaXRlX3NoaWZ0KDEsZC52KSxtLndyaXRlX3NoaWZ0KDIsMCksbS53cml0ZV9zaGlmdCgxLDApLG19KF8sZGUpKTpJaShkLCJCcnRD'@; put 'ZWxsRXJyb3IiLGZ1bmN0aW9uIEJKKGQsXyxtKXtyZXR1cm4gbnVsbD09bSYmKG09RnIoOSkpLGlvKF8sbSksbS53cml0ZV9zaGlmdCgxLGQudiksbX0oXyxkZSkpLCEwfXJldHVybiBzZT9JaShkLCJCcnRTaG9ydEJsYW5rIixmdW5jdGlvbiBGOChkLF8sbSl7cmV0dXJuIG51bGw9PW0mJiht'@; put 'PUZyKDQpKSxucyhfLG0pfSgwLGRlKSk6SWkoZCwiQnJ0Q2VsbEJsYW5rIixmdW5jdGlvbiAkayhkLF8sbSl7cmV0dXJuIG51bGw9PW0mJihtPUZyKDgpKSxpbyhfLG0pfSgwLGRlKSksITB9ZnVuY3Rpb24gV1MoZCxfLG0sVCl7dmFyIFA9TWMoKSxRPW0uU2hlZXROYW1lc1tkXSxzZT1tLlNo'@; put 'ZWV0c1tRXXx8e30sb2U9UTt0cnl7bSYmbS5Xb3JrYm9vayYmKG9lPW0uV29ya2Jvb2suU2hlZXRzW2RdLkNvZGVOYW1lfHxvZSl9Y2F0Y2h7fXZhciBkZT15dChzZVsiIXJlZiJdfHwiQTEiKTtpZihkZS5lLmM+MTYzODN8fGRlLmUucj4xMDQ4NTc1KXtpZihfLldURil0aHJvdyBuZXcgRXJy'@; put 'b3IoIlJhbmdlICIrKHNlWyIhcmVmIl18fCJBMSIpKyIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6WEZEMTA0ODU3NiIpO2RlLmUuYz1NYXRoLm1pbihkZS5lLmMsMTYzODMpLGRlLmUucj1NYXRoLm1pbihkZS5lLmMsMTA0ODU3NSl9cmV0dXJuIHNlWyIhbGlua3MiXT1bXSxzZVsiIWNvbW1l'@; put 'bnRzIl09W10sSWkoUCwiQnJ0QmVnaW5TaGVldCIpLChtLnZiYXJhd3x8c2VbIiFvdXRsaW5lIl0pJiZJaShQLCJCcnRXc1Byb3AiLGZ1bmN0aW9uIEdrKGQsXyxtKXtudWxsPT1tJiYobT1Gcig4NCs0KmQubGVuZ3RoKSk7dmFyIFQ9MTkyO18mJihfLmFib3ZlJiYoVCY9LTY1KSxfLmxlZnQm'@; put 'JihUJj0tMTI5KSksbS53cml0ZV9zaGlmdCgxLFQpO2Zvcih2YXIgUD0xO1A8MzsrK1ApbS53cml0ZV9zaGlmdCgxLDApO3JldHVybiBuMSh7YXV0bzoxfSxtKSxtLndyaXRlX3NoaWZ0KC00LC0xKSxtLndyaXRlX3NoaWZ0KC00LC0xKSxXYyhkLG0pLG0uc2xpY2UoMCxtLmwpfShvZSxzZVsi'@; put 'IW91dGxpbmUiXSkpLElpKFAsIkJydFdzRGltIixQSihkZSkpLGZ1bmN0aW9uIE5jKGQsXyxtKXtJaShkLCJCcnRCZWdpbldzVmlld3MiKSxJaShkLCJCcnRCZWdpbldzVmlldyIsZnVuY3Rpb24gZEIoZCxfLG0pe251bGw9PW0mJihtPUZyKDMwKSk7dmFyIFQ9OTI0O3JldHVybigoKF98fHt9'@; put 'KS5WaWV3c3x8W10pWzBdfHx7fSkuUlRMJiYoVHw9MzIpLF9uKGRbIiFncmlkbGluZXMiXSkmJihUJj0tNSksX24oKCgoX3x8e30pLlZpZXdzfHxbXSlbMF18fHt9KS5ncmlkKSYmKFQmPS01KSxtLndyaXRlX3NoaWZ0KDIsVCksbS53cml0ZV9zaGlmdCg0LDApLG0ud3JpdGVfc2hpZnQoNCww'@; put 'KSxtLndyaXRlX3NoaWZ0KDQsMCksbS53cml0ZV9zaGlmdCgxLDApLG0ud3JpdGVfc2hpZnQoMSwwKSxtLndyaXRlX3NoaWZ0KDIsMCksbS53cml0ZV9zaGlmdCgyLDEwMCksbS53cml0ZV9zaGlmdCgyLDApLG0ud3JpdGVfc2hpZnQoMiwwKSxtLndyaXRlX3NoaWZ0KDIsMCksbS53cml0ZV9z'@; put 'aGlmdCg0LDApLG19KF8sbSkpLF9bIiFmcmVlemUiXSYmSWkoZCwiQnJ0UGFuZSIsZnVuY3Rpb24gUDgoZCl7dmFyIF89SXMoZFsiIWZyZWV6ZSJdKSxtPUZyKDI5KTtyZXR1cm4gbS53cml0ZV9zaGlmdCg4LF8uYywiZiIpLG0ud3JpdGVfc2hpZnQoOCxfLnIsImYiKSxtLndyaXRlX3NoaWZ0'@; put 'KDQsXy5yKSxtLndyaXRlX3NoaWZ0KDQsXy5jKSxtLndyaXRlX3NoaWZ0KDQsMCksbS53cml0ZV9zaGlmdCgxLDMpLG19KF8pKSxfWyIhc2VsIl0mJklpKGQsIkJydFNlbCIsZnVuY3Rpb24gajkoZCxfKXt2YXIgbT1GcigzNiksVD1kLmNlbGw7aWYoIVQpe2lmKCFkLnJhbmdlKXRocm93IG5l'@; put 'dyBFcnJvcigiTXVzdCBzcGVjaWZ5IGEgc2VsZWN0aW9uIGNlbGwgb3IgcmFuZ2UiKTtUPXFpKHphKGQucmFuZ2UucmVwbGFjZSgvXHMuKiQvLCIiKSkucyl9dmFyIFA9InN0cmluZyI9PXR5cGVvZiBUP0lzKFQpOlQ7aWYoXyl7dmFyIFE9InN0cmluZyI9PXR5cGVvZiBfP0lzKF8pOl87bS53'@; put 'cml0ZV9zaGlmdCg0LFAucj49US5yJiZQLmM+PVEuYz8wOlAucj49US5yJiZQLmM8US5jPzI6UC5yPFEuciYmUC5jPj1RLmM/MTozKX1lbHNlIG0ud3JpdGVfc2hpZnQoNCwzKTtyZXR1cm4gbS53cml0ZV9zaGlmdCg0LFAuciksbS53cml0ZV9zaGlmdCg0LFAuYyksbS53cml0ZV9zaGlmdCg0'@; put 'LDApLG0ud3JpdGVfc2hpZnQoNCwxKSxtLndyaXRlX3NoaWZ0KDQsUC5yKSxtLndyaXRlX3NoaWZ0KDQsUC5yKSxtLndyaXRlX3NoaWZ0KDQsUC5jKSxtLndyaXRlX3NoaWZ0KDQsUC5jKSxtfShfWyIhc2VsIl0sX1siIWZyZWV6ZSJdKSksSWkoZCwiQnJ0RW5kV3NWaWV3IiksSWkoZCwiQnJ0'@; put 'RW5kV3NWaWV3cyIpfShQLHNlLG0uV29ya2Jvb2spLGZ1bmN0aW9uIGllZShkLF8peyFffHwhX1siIWNvbHMiXXx8KElpKGQsIkJydEJlZ2luQ29sSW5mb3MiKSxfWyIhY29scyJdLmZvckVhY2goZnVuY3Rpb24obSxUKXttJiZJaShkLCJCcnRDb2xJbmZvIixmdW5jdGlvbiBXNWUoZCxfLG0p'@; put 'e251bGw9PW0mJihtPUZyKDE4KSk7dmFyIFQ9T2soZCxfKTttLndyaXRlX3NoaWZ0KC00LGQpLG0ud3JpdGVfc2hpZnQoLTQsZCksbS53cml0ZV9zaGlmdCg0LDI1NiooVC53aWR0aHx8MTApKSxtLndyaXRlX3NoaWZ0KDQsMCk7dmFyIFA9MDtyZXR1cm4gXy5oaWRkZW4mJihQfD0xKSwibnVt'@; put 'YmVyIj09dHlwZW9mIFQud2lkdGgmJihQfD0yKSxfLmxldmVsJiYoUHw9Xy5sZXZlbDw8OCksbS53cml0ZV9zaGlmdCgyLFApLG19KFQsbSkpfSksSWkoZCwiQnJ0RW5kQ29sSW5mb3MiKSl9KFAsc2UpLGZ1bmN0aW9uIG5lZShkLF8sbSxUKXt2YXIgUD15dChfWyIhcmVmIl18fCJBMSIpLHNl'@; put 'PSIiLG9lPVtdO0lpKGQsIkJydEJlZ2luU2hlZXREYXRhIik7dmFyIGRlPUFycmF5LmlzQXJyYXkoXyksTGU9UC5lLnI7X1siIXJvd3MiXSYmKExlPU1hdGgubWF4KFAuZS5yLF9bIiFyb3dzIl0ubGVuZ3RoLTEpKTtmb3IodmFyIE5lPVAucy5yO05lPD1MZTsrK05lKXtzZT16byhOZSksTkoo'@; put 'ZCxfLFAsTmUpO3ZhciBCZT0hMTtpZihOZTw9UC5lLnIpZm9yKHZhciBaZT1QLnMuYztaZTw9UC5lLmM7KytaZSl7TmU9PT1QLnMuciYmKG9lW1plXT1tcyhaZSkpO3ZhciBudD1kZT8oX1tOZV18fFtdKVtaZV06X1tvZVtaZV0rc2VdO0JlPSEhbnQmJnRlZShkLG50LE5lLFplLFQsXyxCZSl9'@; put 'fUlpKGQsIkJydEVuZFNoZWV0RGF0YSIpfShQLHNlLDAsXyksZnVuY3Rpb24gbGVlKGQsXyl7X1siIXByb3RlY3QiXSYmSWkoZCwiQnJ0U2hlZXRQcm90ZWN0aW9uIixmdW5jdGlvbiBYSihkLF8pe3JldHVybiBudWxsPT1fJiYoXz1Gcig2NikpLF8ud3JpdGVfc2hpZnQoMixkLnBhc3N3b3Jk'@; put 'P1ZBKGQucGFzc3dvcmQpOjApLF8ud3JpdGVfc2hpZnQoNCwxKSxbWyJvYmplY3RzIiwhMV0sWyJzY2VuYXJpb3MiLCExXSxbImZvcm1hdENlbGxzIiwhMF0sWyJmb3JtYXRDb2x1bW5zIiwhMF0sWyJmb3JtYXRSb3dzIiwhMF0sWyJpbnNlcnRDb2x1bW5zIiwhMF0sWyJpbnNlcnRSb3dzIiwh'@; put 'MF0sWyJpbnNlcnRIeXBlcmxpbmtzIiwhMF0sWyJkZWxldGVDb2x1bW5zIiwhMF0sWyJkZWxldGVSb3dzIiwhMF0sWyJzZWxlY3RMb2NrZWRDZWxscyIsITFdLFsic29ydCIsITBdLFsiYXV0b0ZpbHRlciIsITBdLFsicGl2b3RUYWJsZXMiLCEwXSxbInNlbGVjdFVubG9ja2VkQ2VsbHMiLCEx'@; put 'XV0uZm9yRWFjaChmdW5jdGlvbihtKXtfLndyaXRlX3NoaWZ0KDQsbVsxXT9udWxsPT1kW21bMF1dfHxkW21bMF1dPzA6MTpudWxsIT1kW21bMF1dJiZkW21bMF1dPzA6MSl9KSxffShfWyIhcHJvdGVjdCJdKSl9KFAsc2UpLGZ1bmN0aW9uIHNlZShkLF8sbSxUKXtpZihfWyIhYXV0b2ZpbHRl'@; put 'ciJdKXt2YXIgUD1fWyIhYXV0b2ZpbHRlciJdLFE9InN0cmluZyI9PXR5cGVvZiBQLnJlZj9QLnJlZjpodChQLnJlZik7bS5Xb3JrYm9va3x8KG0uV29ya2Jvb2s9e1NoZWV0czpbXX0pLG0uV29ya2Jvb2suTmFtZXN8fChtLldvcmtib29rLk5hbWVzPVtdKTt2YXIgc2U9bS5Xb3JrYm9vay5O'@; put 'YW1lcyxvZT16YShRKTtvZS5zLnI9PW9lLmUuciYmKG9lLmUucj16YShfWyIhcmVmIl0pLmUucixRPWh0KG9lKSk7Zm9yKHZhciBkZT0wO2RlPHNlLmxlbmd0aDsrK2RlKXt2YXIgTGU9c2VbZGVdO2lmKCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiPT1MZS5OYW1lJiZMZS5TaGVldD09VCl7TGUu'@; put 'UmVmPSInIittLlNoZWV0TmFtZXNbVF0rIichIitRO2JyZWFrfX1kZT09c2UubGVuZ3RoJiZzZS5wdXNoKHtOYW1lOiJfeGxubS5fRmlsdGVyRGF0YWJhc2UiLFNoZWV0OlQsUmVmOiInIittLlNoZWV0TmFtZXNbVF0rIichIitRfSksSWkoZCwiQnJ0QmVnaW5BRmlsdGVyIixCZCh5dChRKSkp'@; put 'LElpKGQsIkJydEVuZEFGaWx0ZXIiKX19KFAsc2UsbSxkKSxmdW5jdGlvbiByZWUoZCxfKXshX3x8IV9bIiFtZXJnZXMiXXx8KElpKGQsIkJydEJlZ2luTWVyZ2VDZWxscyIsZnVuY3Rpb24gJEooZCxfKXtyZXR1cm4gbnVsbD09XyYmKF89RnIoNCkpLF8ud3JpdGVfc2hpZnQoNCxkKSxffShf'@; put 'WyIhbWVyZ2VzIl0ubGVuZ3RoKSksX1siIW1lcmdlcyJdLmZvckVhY2goZnVuY3Rpb24obSl7SWkoZCwiQnJ0TWVyZ2VDZWxsIixHSihtKSl9KSxJaShkLCJCcnRFbmRNZXJnZUNlbGxzIikpfShQLHNlKSxmdW5jdGlvbiBtQihkLF8pe2lmKF8pe0lpKGQsIkJydEJlZ2luRFZhbHMiLGZ1bmN0'@; put 'aW9uIGhCKGQsXyl7bnVsbD09XyYmKF89RnIoMTgpKSxfLndyaXRlX3NoaWZ0KDIsMCksXy53cml0ZV9zaGlmdCg0LDApLF8ud3JpdGVfc2hpZnQoNCwwKSxfLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKHZhciBtPTAsVD0wO1Q8ZC5sZW5ndGg7KytUKSgoZFtUXXx8e30pLnJlZnx8e30pLnMmJmRb'@; put 'VF0ucmVmLnMuYzwwfHwrK207cmV0dXJuIF8ud3JpdGVfc2hpZnQoNCxtKSxffShfKSk7Zm9yKHZhciBtPTA7bTxfLmxlbmd0aDsrK20pKChfW21dfHx7fSkucmVmfHx7fSkucyYmX1ttXS5yZWYucy5jPDB8fElpKGQsIkJydERWYWwiLGVlZShfW21dKSk7SWkoZCwiQnJ0RW5kRFZhbHMiKX19'@; put 'KFAsc2VbIiF2YWxpZGF0aW9ucyJdKSxmdW5jdGlvbiBvZWUoZCxfLG0pe19bIiFsaW5rcyJdLmZvckVhY2goZnVuY3Rpb24oVCl7aWYoVFsxXS5UYXJnZXQpe3ZhciBQPWFpKG0sLTEsVFsxXS5UYXJnZXQucmVwbGFjZSgvIy4qJC8sIiIpLHVhLkhMSU5LKTtJaShkLCJCcnRITGluayIsZnVu'@; put 'Y3Rpb24gS0ooZCxfKXt2YXIgbT1Gcig1MCs0KihkWzFdLlRhcmdldC5sZW5ndGgrKGRbMV0uVG9vbHRpcHx8IiIpLmxlbmd0aCkpO0JkKHtzOklzKGRbMF0pLGU6SXMoZFswXSl9LG0pLHQxKCJySWQiK18sbSk7dmFyIFQ9ZFsxXS5UYXJnZXQuaW5kZXhPZigiIyIpO3JldHVybiBraSgoLTE9'@; put 'PVQ/IiI6ZFsxXS5UYXJnZXQuc2xpY2UoVCsxKSl8fCIiLG0pLGtpKGRbMV0uVG9vbHRpcHx8IiIsbSksa2koIiIsbSksbS5zbGljZSgwLG0ubCl9KFQsUCkpfX0pLGRlbGV0ZSBfWyIhbGlua3MiXX0oUCxzZSxUKSxzZVsiIW1hcmdpbnMiXSYmSWkoUCwiQnJ0TWFyZ2lucyIsZnVuY3Rpb24g'@; put 'WjVlKGQsXyl7cmV0dXJuIG51bGw9PV8mJihfPUZyKDQ4KSksTDgoZCksY0IuZm9yRWFjaChmdW5jdGlvbihtKXtKYShkW21dLF8pfSksX30oc2VbIiFtYXJnaW5zIl0pKSwoIV98fF8uaWdub3JlRUN8fG51bGw9PV8uaWdub3JlRUMpJiZmdW5jdGlvbiBwQihkLF8peyFffHwhX1siIXJlZiJd'@; put 'fHwoSWkoZCwiQnJ0QmVnaW5DZWxsSWdub3JlRUNzIiksSWkoZCwiQnJ0Q2VsbElnbm9yZUVDIixmdW5jdGlvbiBHNWUoZCl7dmFyIF89RnIoMjQpO3JldHVybiBfLndyaXRlX3NoaWZ0KDQsNCksXy53cml0ZV9zaGlmdCg0LDEpLEJkKGQsXyksX30oeXQoX1siIXJlZiJdKSkpLElpKGQsIkJy'@; put 'dEVuZENlbGxJZ25vcmVFQ3MiKSl9KFAsc2UpLGZ1bmN0aW9uIGFlZShkLF8sbSxUKXtpZihfWyIhY29tbWVudHMiXS5sZW5ndGg+MCl7dmFyIFA9YWkoVCwtMSwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZyIrKG0rMSkrIi52bWwiLHVhLlZNTCk7SWkoZCwiQnJ0TGVnYWN5RHJhd2luZyIsdDEo'@; put 'InJJZCIrUCkpLF9bIiFsZWdhY3kiXT1QfX0oUCxzZSxkLFQpLElpKFAsIkJydEVuZFNoZWV0IiksUC5lbmQoKX1mdW5jdGlvbiB2QihkKXt2YXIgVCxfPVtdLG09ZC5tYXRjaCgvXjxjOm51bUNhY2hlPi8pOyhkLm1hdGNoKC88YzpwdCBpZHg9IihcZCopIj4oLio/KTxcL2M6cHQ+L2dtKXx8'@; put 'W10pLmZvckVhY2goZnVuY3Rpb24oUSl7dmFyIHNlPVEubWF0Y2goLzxjOnB0IGlkeD0iKFxkKj8pIj48Yzp2PiguKik8XC9jOnY+PFwvYzpwdD4vKTtzZSYmKF9bK3NlWzFdXT1tPytzZVsyXTpzZVsyXSl9KTt2YXIgUD1DaSgoZC5tYXRjaCgvPGM6Zm9ybWF0Q29kZT4oW1xzXFNdKj8pPFwv'@; put 'Yzpmb3JtYXRDb2RlPi8pfHxbIiIsIkdlbmVyYWwiXSlbMV0pO3JldHVybihkLm1hdGNoKC88YzpmPiguKj8pPFwvYzpmPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFEpe1Q9US5yZXBsYWNlKC88Lio/Pi9nLCIiKX0pLFtfLFAsVF19dWEuQ0hBUlQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54'@; put 'bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnQiLHVhLkNIQVJURVg9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTQvcmVsYXRpb25zaGlwcy9jaGFydEV4Ijt2YXIgdFI9LzwoPzpcdys6KT9jaGFydD4oW1xzXFNdKj8p'@; put 'PFwvKD86XHcrOik/Y2hhcnQ+LyxpZT0vPCg/Olx3KzopP3Bsb3RBcmVhPihbXHNcU10qPyk8XC8oPzpcdys6KT9wbG90QXJlYT4vLF9CPS88KD86XHcrOik/bGVnZW5kPihbXHNcU10qPyk8XC8oPzpcdys6KT9sZWdlbmQ+LyxZUz0vPCg/Olx3KzopP3RpdGxlPihbXHNcU10qPyk8XC8oPzpc'@; put 'dys6KT90aXRsZT4vO2Z1bmN0aW9uIFZ5KGQsXyxtLFQsUCxRLHNlLG9lKXt2YXIgZGU9UXx8eyIhdHlwZSI6ImNoYXJ0In07aWYoIWQpcmV0dXJuIFE7c2UmJnNlLkFuY2hvciYmKGRlWyIhcG9zIl09RDkoc2UuQW5jaG9yLG9lKSxkZVsiIXBvc1R5cGUiXT1zZS5BbmNob3IudHlwZS5yZXBs'@; put 'YWNlKC9BbmNob3IvLCIiKSxkZVsiIWFic3BvcyJdPUQ5KHNlLkFuY2hvcixvZSksZGVbIiFyZWxwb3MiXT13NShzZS5BbmNob3Isb2UpKSxkZVsiIXBsb3QiXT1bXTt2YXIgTGU9IiIsTmU9IiIsQmU9ZC5tYXRjaCh0Uik7QmU/KExlPWQuc2xpY2UoMCxCZS5pbmRleCksTmU9ZC5zbGljZShC'@; put 'ZS5pbmRleCtCZVswXS5sZW5ndGgpKTpMZT1OZT1kO3ZhciBaZT1bXSxudD1MZS5tYXRjaCgvPGM6bGFuZy4qPz4vKXx8ZC5tYXRjaCgvPGM6bGFuZy4qPz4vKXx8TmUubWF0Y2goLzxjOmxhbmcuKj8+Lyk7cmV0dXJuIG50JiYoZGVbIiFsYW5nIl09KFhyKG50WzBdKXx8e30pLnZhbHx8ImVu'@; put 'LVVTIiksQmUmJigoWmU9QmVbMV0ubWF0Y2goWVMpKSYmZnVuY3Rpb24gSHkoZCxfKXt2YXIgbT0iIjtkLm1hdGNoKC88YzpyaWNoPi8pJiZkLnJlcGxhY2UoLzxhOnQ+KFtcc1xTXSo/KTxcL2E6dD4vZyxmdW5jdGlvbihULFApe20rPVB9KSxfWyIhdGl0bGUiXT1tfHwiQ2hhcnQgVGl0bGUi'@; put 'fShaZVsxXSxkZSksZnVuY3Rpb24gclIoZCxfKXtpZihkKXt2YXIgbT0wLFQ9MCxQPSJBIixRPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19O2QucmVwbGFjZShBNSxmdW5jdGlvbihzZSxvZSl7dmFyIGRlPXt0Om9lLGM6bSx3OjAsc2VyOltdfSxMZT1bXSxOZT0oc2UubWF0Y2goLzxj'@; put 'OnNlci8pfHxbXSkuaW5kZXgsQmU9TmU/c2Uuc2xpY2UoMCxOZSk6c2U7InNjYXR0ZXIiPT1vZSYmKExlPXNlLm1hdGNoKC88YzpzY2F0dGVyU3R5bGUoW15cLz5dKilcLz4vbSkpJiZYcihMZVswXSksImJhciI9PW9lJiYoTGU9c2UubWF0Y2goLzxjOmJhckRpcihbXlwvPl0qKVwvPi9tKSkm'@; put 'JihkZS5iYXJEaXI9ImJhciI9PVhyKExlWzBdKS52YWw/ImgiOiJ2IiksKExlPUJlLm1hdGNoKC88Yzpncm91cGluZyhbXlwvPl0qKVwvPi9tKSkmJihkZS5ncm91cGluZz1YcihMZVswXSkudmFsfHwic3RhbmRhcmQiKSwoc2UubWF0Y2goblIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihudCl7'@; put 'dmFyIG10PVtdLFFlPXt9LGZ0PVtdO2lmKG50Lm1hdGNoKC88Yzp0eD4vKSl7dmFyIGt0PXZCKChudC5tYXRjaCgvPGM6dHg+KFtcc1xTXSo/KTxcL2M6dHg+Lyl8fFtdKVsxXXx8IiIpfHxbXTtrdFswXSYma3RbMF1bMF0mJihRZS5uYW1lPWt0WzBdWzBdKSxrdFsyXSYmKFFlLm5hbWVyZWY9'@; put 'a3RbMl0pfVsieFZhbCIsInlWYWwiLCJjYXQiLCJ2YWwiLCJidWJibGVTaXplIl0uZm9yRWFjaChmdW5jdGlvbihidCl7dmFyIFZ0LEV0PW50Lm1hdGNoKG5ldyBSZWdFeHAoIjxjOiIrYnQrIj5bXFxzXFxTXSo/PFxcL2M6IitidCsiPiIsImdtIikpO0V0JiYoKEV0WzBdLm1hdGNoKC88Yzpm'@; put 'PiguKj8pPFwvYzpmPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHVuKXtWdD11bi5yZXBsYWNlKC88Lio/Pi9nLCIiKX0pLChFdFswXS5tYXRjaCgvPGM6KD86XHcqKUNhY2hlPltcc1xTXSo/PFwvYzooPzpcdyopQ2FjaGU+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24odW4pe3ZhciBu'@; put 'cj12Qih1bik7US5zLnI9US5zLmM9MCxRLmUuYz1tLFA9bXMobSksbnJbMF0uZm9yRWFjaChmdW5jdGlvbihubixhcil7X1tQK3pvKGFyKV09e3Q6Im51bWJlciI9PXR5cGVvZiBubj8ibiI6InMiLHY6bm4sejpuclsxXX0sVD1hcn0pLFEuZS5yPFQmJihRLmUucj1UKSwrK20sZGUudysrLG10'@; put 'LnB1c2goYnQpLChuclsyXXx8VnQpJiZmdC5wdXNoKG5yWzJdfHxWdCksInZhbCI9PWJ0JiYoUWUuej1uclsxXXx8IkdlbmVyYWwiKX0pKX0pLChMZT1zZS5tYXRjaCgvPGM6c21vb3RoKFteXC8+XSopXC8+L20pKSYmKFFlLnNtb290aD1udWxsPT1YcihMZVswXSkudmFsfHxUaShYcihMZVsw'@; put 'XSkudmFsKSksUWUuY29scz1tdCxRZS5yYW5nZXM9ZnQsZGUuc2VyLnB1c2goUWUpfSksImRvdWdobnV0Ij09b2UmJihMZT1zZS5tYXRjaCgvPGM6aG9sZVNpemUoW15cLz5dKilcLz4vbSkpJiYoZGUuaG9sZT0oWHIoTGVbMF0pLnZhbHx8MTApLzEwMCksX1siIXBsb3QiXS5wdXNoKGRlKX0p'@; put 'LG0+MCYmKF9bIiFyZWYiXT1odChRKSl9fSgoQmVbMV0ubWF0Y2goaWUpfHxbXSlbMV0sZGUpLG51bGwhPShaZT1CZVsxXS5tYXRjaChfQikpJiZmdW5jdGlvbiBlUihkLF8pe3ZhciBtO19bIiFsZWdlbmQiXT17cG9zOiJyIn0sKG09ZC5tYXRjaCgvPGM6bGVnZW5kUG9zKFteXC8+XSopXC8+'@; put 'L20pKSYmKF9bIiFsZWdlbmQiXS5wb3M9WHIobVswXSkudmFsfHwiciIpfShaZVswXSxkZSkpLGRlfXZhciBBNT0vPGM6KCg/OmFyZWF8bGluZXxzdG9ja3xyYWRhcnxzY2F0dGVyfHBpZXxkb3VnaG51dHxiYXJ8b2ZQaWV8c3VyZmFjZXxidWJibGUpKD86M0QpPylDaGFydFtePl0qPihbXHNc'@; put 'U10qPyk8XC9jOig/OmFyZWF8bGluZXxzdG9ja3xyYWRhcnxzY2F0dGVyfHBpZXxkb3VnaG51dHxiYXJ8b2ZQaWV8c3VyZmFjZXxidWJibGUpKD86M0QpP0NoYXJ0Pi9nbSxuUj0vPGM6c2VyPihbXHNcU10qPyk8XC9jOnNlcj4vZ207dWEuQ1M9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3Jt'@; put 'YXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnRzaGVldCI7dmFyIGNlZT1WcigiY2hhcnRzaGVldCIsbnVsbCx7eG1sbnM6VWEubWFpblswXSwieG1sbnM6ciI6VWEucn0pO2Z1bmN0aW9uIFU5KGQsXyxtLFQpe3ZhciBQPVtwbyxjZWVdO3JldHVybiBQLnB1'@; put 'c2goIjxzaGVldFByLz4iKSxQLnB1c2goJzxzaGVldFZpZXdzPjxzaGVldFZpZXcgem9vbVNjYWxlPSIxMDAiIHdvcmtib29rVmlld0lkPSIwIiB6b29tVG9GaXQ9IjEiLz48L3NoZWV0Vmlld3M+JyksUFtQLmxlbmd0aF09VnIoImRyYXdpbmciLG51bGwseyJyOmlkIjoicklkMSJ9KSxhaShU'@; put 'LC0xLCIuLi9kcmF3aW5ncy9kcmF3aW5nIisoZCsxKSsiLnhtbCIsdWEuRFJBVyksUC5sZW5ndGg+MiYmKFBbUC5sZW5ndGhdPSI8L2NoYXJ0c2hlZXQ+IixQWzFdPVBbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFAuam9pbigiIil9ZnVuY3Rpb24geUIoKXt2YXIgZD1NYygpO3JldHVybiBJaShk'@; put 'LCJCcnRCZWdpblNoZWV0IiksSWkoZCwiQnJ0RW5kU2hlZXQiKSxkLmVuZCgpfXZhciBHUz1bWyJhbGxvd1JlZnJlc2hRdWVyeSIsITEsImJvb2wiXSxbImF1dG9Db21wcmVzc1BpY3R1cmVzIiwhMCwiYm9vbCJdLFsiYmFja3VwRmlsZSIsITEsImJvb2wiXSxbImNoZWNrQ29tcGF0aWJpbGl0'@; put 'eSIsITEsImJvb2wiXSxbIkNvZGVOYW1lIiwiIl0sWyJkYXRlMTkwNCIsITEsImJvb2wiXSxbImRlZmF1bHRUaGVtZVZlcnNpb24iLDAsImludCJdLFsiZmlsdGVyUHJpdmFjeSIsITEsImJvb2wiXSxbImhpZGVQaXZvdEZpZWxkTGlzdCIsITEsImJvb2wiXSxbInByb21wdGVkU29sdXRpb25z'@; put 'IiwhMSwiYm9vbCJdLFsicHVibGlzaEl0ZW1zIiwhMSwiYm9vbCJdLFsicmVmcmVzaEFsbENvbm5lY3Rpb25zIiwhMSwiYm9vbCJdLFsic2F2ZUV4dGVybmFsTGlua1ZhbHVlcyIsITAsImJvb2wiXSxbInNob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzIiwhMCwiYm9vbCJdLFsic2hvd0lua0Fu'@; put 'bm90YXRpb24iLCEwLCJib29sIl0sWyJzaG93T2JqZWN0cyIsImFsbCJdLFsic2hvd1Bpdm90Q2hhcnRGaWx0ZXIiLCExLCJib29sIl0sWyJ1cGRhdGVMaW5rcyIsInVzZXJTZXQiXV0saGVlPVtbImFjdGl2ZVRhYiIsMCwiaW50Il0sWyJhdXRvRmlsdGVyRGF0ZUdyb3VwaW5nIiwhMCwiYm9v'@; put 'bCJdLFsiZmlyc3RTaGVldCIsMCwiaW50Il0sWyJtaW5pbWl6ZWQiLCExLCJib29sIl0sWyJzaG93SG9yaXpvbnRhbFNjcm9sbCIsITAsImJvb2wiXSxbInNob3dTaGVldFRhYnMiLCEwLCJib29sIl0sWyJzaG93VmVydGljYWxTY3JvbGwiLCEwLCJib29sIl0sWyJ0YWJSYXRpbyIsNjAwLCJp'@; put 'bnQiXSxbInZpc2liaWxpdHkiLCJ2aXNpYmxlIl1dLGJCPVtdLGZlZT1bWyJjYWxjQ29tcGxldGVkIiwidHJ1ZSJdLFsiY2FsY01vZGUiLCJhdXRvIl0sWyJjYWxjT25TYXZlIiwidHJ1ZSJdLFsiY29uY3VycmVudENhbGMiLCJ0cnVlIl0sWyJmdWxsQ2FsY09uTG9hZCIsImZhbHNlIl0sWyJm'@; put 'dWxsUHJlY2lzaW9uIiwidHJ1ZSJdLFsiaXRlcmF0ZSIsImZhbHNlIl0sWyJpdGVyYXRlQ291bnQiLCIxMDAiXSxbIml0ZXJhdGVEZWx0YSIsIjAuMDAxIl0sWyJyZWZNb2RlIiwiQTEiXV07ZnVuY3Rpb24gazUoZCxfKXtmb3IodmFyIG09MDttIT1kLmxlbmd0aDsrK20pZm9yKHZhciBUPWRb'@; put 'bV0sUD0wO1AhPV8ubGVuZ3RoOysrUCl7dmFyIFE9X1tQXTtpZihudWxsPT1UW1FbMF1dKVRbUVswXV09UVsxXTtlbHNlIHN3aXRjaChRWzJdKXtjYXNlImJvb2wiOiJzdHJpbmciPT10eXBlb2YgVFtRWzBdXSYmKFRbUVswXV09VGkoVFtRWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijoic3RyaW5n'@; put 'Ij09dHlwZW9mIFRbUVswXV0mJihUW1FbMF1dPXBhcnNlSW50KFRbUVswXV0sMTApKX19fWZ1bmN0aW9uICRTKGQsXyl7Zm9yKHZhciBtPTA7bSE9Xy5sZW5ndGg7KyttKXt2YXIgVD1fW21dO2lmKG51bGw9PWRbVFswXV0pZFtUWzBdXT1UWzFdO2Vsc2Ugc3dpdGNoKFRbMl0pe2Nhc2UiYm9v'@; put 'bCI6InN0cmluZyI9PXR5cGVvZiBkW1RbMF1dJiYoZFtUWzBdXT1UaShkW1RbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOiJzdHJpbmciPT10eXBlb2YgZFtUWzBdXSYmKGRbVFswXV09cGFyc2VJbnQoZFtUWzBdXSwxMCkpfX19ZnVuY3Rpb24gejkoZCl7JFMoZC5XQlByb3BzLEdTKSwkUyhkLkNh'@; put 'bGNQcixmZWUpLGs1KGQuV0JWaWV3LGhlZSksazUoZC5TaGVldHMsYkIpLFhtLmRhdGUxOTA0PVRpKGQuV0JQcm9wcy5kYXRlMTkwNCl9dmFyIGoxPSJdWyo/L1xcIi5zcGxpdCgiIik7ZnVuY3Rpb24gaVIoZCxfKXtpZihkLmxlbmd0aD4zMSl7aWYoXylyZXR1cm4hMTt0aHJvdyBuZXcgRXJy'@; put 'b3IoIlNoZWV0IG5hbWVzIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKX12YXIgbT0hMDtyZXR1cm4gajEuZm9yRWFjaChmdW5jdGlvbihUKXtpZigtMSE9ZC5pbmRleE9mKFQpKXtpZighXyl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0i'@; put 'KTttPSExfX0pLG19dmFyIENCPS88XHcrOndvcmtib29rLyxxUz1Wcigid29ya2Jvb2siLG51bGwse3htbG5zOlVhLm1haW5bMF0sInhtbG5zOnIiOlVhLnJ9KTtmdW5jdGlvbiBnZWUoZCxfKXt2YXIgbT1ffHx7fSxUPVtwb107VFtULmxlbmd0aF09cVM7dmFyIFA9ZC5Xb3JrYm9vayYmKGQu'@; put 'V29ya2Jvb2suTmFtZXN8fFtdKS5sZW5ndGg+MDtkLldvcmtib29rJiZkLldvcmtib29rLk1vZGlmeSYmKFRbVC5sZW5ndGhdPWZ1bmN0aW9uICQ1ZShkKXt2YXIgXz17fTtyZXR1cm4gZC53YXJuJiYoXy5yZWFkT25seVJlY29tbWVuZGVkPTEpLF8udXNlck5hbWU9ZC51c2VyfHwiU2hlZXQg'@; put 'SlMiLGQuZW5jcnlwdGlvbiYmKGQuZW5jcnlwdGlvbi5hbGdvJiYoXy5hbGdvcml0aG1OYW1lPWQuZW5jcnlwdGlvbi5hbGdvKSxkLmVuY3J5cHRpb24uaGFzaCYmKF8uaGFzaFZhbHVlPWQuZW5jcnlwdGlvbi5oYXNoKSxkLmVuY3J5cHRpb24uc2FsdCYmKF8uc2FsdFZhbHVlPWQuZW5jcnlw'@; put 'dGlvbi5zYWx0KSxkLmVuY3J5cHRpb24uc3BpbiYmKF8uc3BpbkNvdW50PWQuZW5jcnlwdGlvbi5zcGluKSksVnIoImZpbGVTaGFyaW5nIixudWxsLF8pfShkLldvcmtib29rLk1vZGlmeSkpO3ZhciBRPXtjb2RlTmFtZToiVGhpc1dvcmtib29rIn07ZC5Xb3JrYm9vayYmZC5Xb3JrYm9vay5X'@; put 'QlByb3BzJiYoR1MuZm9yRWFjaChmdW5jdGlvbihMZSl7bnVsbCE9ZC5Xb3JrYm9vay5XQlByb3BzW0xlWzBdXSYmZC5Xb3JrYm9vay5XQlByb3BzW0xlWzBdXSE9TGVbMV0mJihRW0xlWzBdXT1kLldvcmtib29rLldCUHJvcHNbTGVbMF1dKX0pLGQuV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFt'@; put 'ZSYmKFEuY29kZU5hbWU9ZC5Xb3JrYm9vay5XQlByb3BzLkNvZGVOYW1lLGRlbGV0ZSBRLkNvZGVOYW1lKSksVFtULmxlbmd0aF09VnIoIndvcmtib29rUHIiLG51bGwsUSksZC5Xb3JrYm9vayYmZC5Xb3JrYm9vay5Qcm90ZWN0aW9uJiYoVFtULmxlbmd0aF09ZnVuY3Rpb24gb1IoZCl7dmFy'@; put 'IF89e307cmV0dXJuIGQubG9ja1N0cnVjdHVyZSYmKF8ubG9ja1N0cnVjdHVyZT0xKSxkLmxvY2tXaW5kb3dzJiYoXy5sb2NrV2luZG93cz0xKSxkLmVuY3J5cHRpb24mJihkLmVuY3J5cHRpb24uYWxnbyYmKF8ud29ya2Jvb2tBbGdvcml0aG1OYW1lPWQuZW5jcnlwdGlvbi5hbGdvKSxkLmVu'@; put 'Y3J5cHRpb24uaGFzaCYmKF8ud29ya2Jvb2tIYXNoVmFsdWU9ZC5lbmNyeXB0aW9uLmhhc2gpLGQuZW5jcnlwdGlvbi5zYWx0JiYoXy53b3JrYm9va1NhbHRWYWx1ZT1kLmVuY3J5cHRpb24uc2FsdCksZC5lbmNyeXB0aW9uLnNwaW4mJihfLndvcmtib29rU3BpbkNvdW50PWQuZW5jcnlwdGlv'@; put 'bi5zcGluKSksVnIoIndvcmtib29rUHJvdGVjdGlvbiIsbnVsbCxfKX0oZC5Xb3JrYm9vay5Qcm90ZWN0aW9uKSk7dmFyIHNlPWQuV29ya2Jvb2smJmQuV29ya2Jvb2suU2hlZXRzfHxbXSxvZT0wO2lmKHNlJiZzZVswXSYmc2VbMF0uSGlkZGVuKXtmb3IoVFtULmxlbmd0aF09Ijxib29rVmll'@; put 'd3M+IixvZT0wO29lIT1kLlNoZWV0TmFtZXMubGVuZ3RoJiZzZVtvZV0mJnNlW29lXS5IaWRkZW47KytvZSk7b2U9PWQuU2hlZXROYW1lcy5sZW5ndGgmJihvZT0wKSxUW1QubGVuZ3RoXT0nPHdvcmtib29rVmlldyBmaXJzdFNoZWV0PSInK29lKyciIGFjdGl2ZVRhYj0iJytvZSsnIi8+JyxU'@; put 'W1QubGVuZ3RoXT0iPC9ib29rVmlld3M+In1mb3IoVFtULmxlbmd0aF09IjxzaGVldHM+IixvZT0wO29lIT1kLlNoZWV0TmFtZXMubGVuZ3RoOysrb2Upe3ZhciBkZT17bmFtZTpCaShkLlNoZWV0TmFtZXNbb2VdLnNsaWNlKDAsMzEpKX07aWYoZGUuc2hlZXRJZD0iIisob2UrMSksZGVbInI6'@; put 'aWQiXT0icklkIisob2UrMSksc2Vbb2VdKXN3aXRjaChzZVtvZV0uSGlkZGVuKXtjYXNlIDE6ZGUuc3RhdGU9ImhpZGRlbiI7YnJlYWs7Y2FzZSAyOmRlLnN0YXRlPSJ2ZXJ5SGlkZGVuIn1UW1QubGVuZ3RoXT1Wcigic2hlZXQiLG51bGwsZGUpfXJldHVybiBUW1QubGVuZ3RoXT0iPC9zaGVl'@; put 'dHM+IixkLkV4dGVybmFsV0ImJmQuRXh0ZXJuYWxXQi5sZW5ndGgmJihUW1QubGVuZ3RoXT0iPGV4dGVybmFsUmVmZXJlbmNlcz4iLChkLkV4dGVybmFsV0J8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKExlLE5lKXt2YXIgQmU9YWkobS53YnJlbHMsLTEsImV4dGVybmFsTGlua3MvZXh0ZXJuYWxM'@; put 'aW5rIisoTmUrMSkrIi54bWwiLHVhLlhMSU5LKTtUW1QubGVuZ3RoXT0nPGV4dGVybmFsUmVmZXJlbmNlIHI6aWQ9InJJZCcrQmUrJyIvPid9KSxUW1QubGVuZ3RoXT0iPC9leHRlcm5hbFJlZmVyZW5jZXM+IiksUCYmKFRbVC5sZW5ndGhdPSI8ZGVmaW5lZE5hbWVzPiIsZC5Xb3JrYm9vayYm'@; put 'ZC5Xb3JrYm9vay5OYW1lcyYmZC5Xb3JrYm9vay5OYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKExlKXt2YXIgTmU9e25hbWU6TGUuTmFtZX07TGUuQ29tbWVudCYmKE5lLmNvbW1lbnQ9TGUuQ29tbWVudCksbnVsbCE9TGUuU2hlZXQmJihOZS5sb2NhbFNoZWV0SWQ9IiIrTGUuU2hlZXQpLExlLkhp'@; put 'ZGRlbiYmKE5lLmhpZGRlbj0iMSIpLExlLlJlZiYmKFRbVC5sZW5ndGhdPVZyKCJkZWZpbmVkTmFtZSIsQmkoTGUuUmVmKSxOZSkpfSksVFtULmxlbmd0aF09IjwvZGVmaW5lZE5hbWVzPiIpLG0mJm0ucGl2b3RzJiZtLnBpdm90cy5sZW5ndGg+MCYmKFQucHVzaCgiPHBpdm90Q2FjaGVzPiIp'@; put 'LG0ucGl2b3RzLmZvckVhY2goZnVuY3Rpb24oTGUsTmUpe1QucHVzaCgnPHBpdm90Q2FjaGUgY2FjaGVJZD0iJysoTmUrMSkrJyIgcjppZD0icklkJytMZVsyXSsnIi8+Jyl9KSxULnB1c2goIjwvcGl2b3RDYWNoZXM+IikpLFQubGVuZ3RoPjImJihUW1QubGVuZ3RoXT0iPC93b3JrYm9vaz4i'@; put 'LFRbMV09VFsxXS5yZXBsYWNlKCIvPiIsIj4iKSksVC5qb2luKCIiKX1mdW5jdGlvbiBtZWUoZCxfKXtyZXR1cm4gX3x8KF89RnIoMTI3KSksXy53cml0ZV9zaGlmdCg0LGQuSGlkZGVuKSxfLndyaXRlX3NoaWZ0KDQsZC5pVGFiSUQpLHQxKGQuc3RyUmVsSUQsXyksa2koZC5uYW1lLnNsaWNl'@; put 'KDAsMzEpLF8pLF8ubGVuZ3RoPl8ubD9fLnNsaWNlKDAsXy5sKTpffWZ1bmN0aW9uIF9lZShkLF8pe3ZhciBtPXt9O3JldHVybiBkLnJlYWRfc2hpZnQoNCksbS5BcmNoSUQ9ZC5yZWFkX3NoaWZ0KDQpLGQubCs9Xy04LG19ZnVuY3Rpb24gVEIoZCxfKXt2YXIgbT1NYygpO3JldHVybiBJaSht'@; put 'LCJCcnRCZWdpbkJvb2siKSxJaShtLCJCcnRGaWxlVmVyc2lvbiIsZnVuY3Rpb24gbFIoZCxfKXtffHwoXz1GcigxMjcpKTtmb3IodmFyIG09MDs0IT1tOysrbSlfLndyaXRlX3NoaWZ0KDQsMCk7cmV0dXJuIGtpKCJTaGVldEpTIixfKSxraSh2LnZlcnNpb24sXyksa2kodi52ZXJzaW9uLF8p'@; put 'LGtpKCI3MjYyIixfKSxfLmxlbmd0aD5fLmw/Xy5zbGljZSgwLF8ubCk6X30oKSksSWkobSwiQnJ0V2JQcm9wIixmdW5jdGlvbiB2ZWUoZCxfKXtffHwoXz1Gcig3MikpO3ZhciBtPTA7cmV0dXJuIGQmJmQuZmlsdGVyUHJpdmFjeSYmKG18PTgpLF8ud3JpdGVfc2hpZnQoNCxtKSxfLndyaXRl'@; put 'X3NoaWZ0KDQsMCksV2MoZCYmZC5Db2RlTmFtZXx8IlRoaXNXb3JrYm9vayIsXyksXy5zbGljZSgwLF8ubCl9KGQuV29ya2Jvb2smJmQuV29ya2Jvb2suV0JQcm9wc3x8bnVsbCkpLGZ1bmN0aW9uIGJlZShkLF8pe2lmKF8uV29ya2Jvb2smJl8uV29ya2Jvb2suU2hlZXRzKXtmb3IodmFyIG09'@; put 'Xy5Xb3JrYm9vay5TaGVldHMsVD0wLFA9LTEsUT0tMTtUPG0ubGVuZ3RoOysrVCkhbVtUXXx8IW1bVF0uSGlkZGVuJiYtMT09UD9QPVQ6MT09bVtUXS5IaWRkZW4mJi0xPT1RJiYoUT1UKTtRPlB8fChJaShkLCJCcnRCZWdpbkJvb2tWaWV3cyIpLElpKGQsIkJydEJvb2tWaWV3IixmdW5jdGlv'@; put 'biB5ZWUoZCxfKXtyZXR1cm4gX3x8KF89RnIoMjkpKSxfLndyaXRlX3NoaWZ0KC00LDApLF8ud3JpdGVfc2hpZnQoLTQsNDYwKSxfLndyaXRlX3NoaWZ0KDQsMjg4MDApLF8ud3JpdGVfc2hpZnQoNCwxNzYwMCksXy53cml0ZV9zaGlmdCg0LDUwMCksXy53cml0ZV9zaGlmdCg0LGQpLF8ud3Jp'@; put 'dGVfc2hpZnQoNCxkKSxfLndyaXRlX3NoaWZ0KDEsMTIwKSxfLmxlbmd0aD5fLmw/Xy5zbGljZSgwLF8ubCk6X30oUCkpLElpKGQsIkJydEVuZEJvb2tWaWV3cyIpKX19KG0sZCksZnVuY3Rpb24gTUIoZCxfKXtJaShkLCJCcnRCZWdpbkJ1bmRsZVNocyIpO2Zvcih2YXIgbT0wO20hPV8uU2hl'@; put 'ZXROYW1lcy5sZW5ndGg7KyttKUlpKGQsIkJydEJ1bmRsZVNoIixtZWUoe0hpZGRlbjpfLldvcmtib29rJiZfLldvcmtib29rLlNoZWV0cyYmXy5Xb3JrYm9vay5TaGVldHNbbV0mJl8uV29ya2Jvb2suU2hlZXRzW21dLkhpZGRlbnx8MCxpVGFiSUQ6bSsxLHN0clJlbElEOiJySWQiKyhtKzEp'@; put 'LG5hbWU6Xy5TaGVldE5hbWVzW21dfSkpO0lpKGQsIkJydEVuZEJ1bmRsZVNocyIpfShtLGQpLElpKG0sIkJydEVuZEJvb2siKSxtLmVuZCgpfWZ1bmN0aW9uIE1lZShkLF8sbSxULFApe3JldHVybigiLmJpbiI9PT1fLnNsaWNlKC00KT9XUzpqUykoZCxtLFQsUCl9ZnVuY3Rpb24gVGVlKGQs'@; put 'XyxtLFQsUCl7cmV0dXJuKCIuYmluIj09PV8uc2xpY2UoLTQpP3lCOlU5KShkLG0sVCxQKX1mdW5jdGlvbiBjUihkLF8sbSl7cmV0dXJuKCIuYmluIj09PV8uc2xpY2UoLTQpP2RTOmNIKShkLG0pfWZ1bmN0aW9uIERCKGQsXyxtKXtyZXR1cm4oIi5iaW4iPT09Xy5zbGljZSgtNCk/UlE6VFEp'@; put 'KGQsbSl9dmFyIFY4PS8oW1x3Ol0rKT0oKD86IikoW14iXSopKD86Iil8KD86JykoW14nXSopKD86JykpL2csdVI9LyhbXHc6XSspPSgoPzoiKSg/OlteIl0qKSg/OiIpfCg/OicpKD86W14nXSopKD86JykpLztmdW5jdGlvbiBSMihkLF8pe3ZhciBtPWQuc3BsaXQoL1xzKy8pLFQ9W107aWYo'@; put 'X3x8KFRbMF09bVswXSksMT09PW0ubGVuZ3RoKXJldHVybiBUO3ZhciBRLHNlLGRlLFA9ZC5tYXRjaChWOCk7aWYoUClmb3IoZGU9MDtkZSE9UC5sZW5ndGg7KytkZSktMT09PShzZT0oUT1QW2RlXS5tYXRjaCh1UikpWzFdLmluZGV4T2YoIjoiKSk/VFtRWzFdXT1RWzJdLnNsaWNlKDEsUVsy'@; put 'XS5sZW5ndGgtMSk6VFsieG1sbnM6Ij09PVFbMV0uc2xpY2UoMCw2KT8ieG1sbnMiK1FbMV0uc2xpY2UoNik6UVsxXS5zbGljZShzZSsxKV09UVsyXS5zbGljZSgxLFFbMl0ubGVuZ3RoLTEpO3JldHVybiBUfWZ1bmN0aW9uIGRSKGQpe3ZhciBtPXt9O2lmKDE9PT1kLnNwbGl0KC9ccysvKS5s'@; put 'ZW5ndGgpcmV0dXJuIG07dmFyIFAsUSxvZSxUPWQubWF0Y2goVjgpO2lmKFQpZm9yKG9lPTA7b2UhPVQubGVuZ3RoOysrb2UpLTE9PT0oUT0oUD1UW29lXS5tYXRjaCh1UikpWzFdLmluZGV4T2YoIjoiKSk/bVtQWzFdXT1QWzJdLnNsaWNlKDEsUFsyXS5sZW5ndGgtMSk6bVsieG1sbnM6Ij09'@; put 'PVBbMV0uc2xpY2UoMCw2KT8ieG1sbnMiK1BbMV0uc2xpY2UoNik6UFsxXS5zbGljZShRKzEpXT1QWzJdLnNsaWNlKDEsUFsyXS5sZW5ndGgtMSk7cmV0dXJuIG19ZnVuY3Rpb24geGVlKGQpe3ZhciBfPXt9O2lmKGQuRGVmYXVsdFJvd0hlaWdodCl7dmFyIG09e2hweDo0KnBhcnNlSW50KGQu'@; put 'RGVmYXVsdFJvd0hlaWdodCkvM307V0EobSksXy5yb3c9bX1pZihkLkRlZmF1bHRDb2xXaWR0aCl7dmFyIFQ9e3dweDo0KnBhcnNlSW50KGQuRGVmYXVsdENvbFdpZHRoKS8zfTtCMChUKSxfLmNvbD1UfXJldHVybiBffWZ1bmN0aW9uIEJ5KGQsXyxtLFQpe3ZhciBQPVQ7c3dpdGNoKChtWzBd'@; put 'Lm1hdGNoKC9kdDpkdD0iKFtcdy5dKykiLyl8fFsiIiwiIl0pWzFdKXtjYXNlImJvb2xlYW4iOlA9VGkoVCk7YnJlYWs7Y2FzZSJpMiI6Y2FzZSJpbnQiOlA9cGFyc2VJbnQoVCwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6UD1wYXJzZUZsb2F0KFQpO2JyZWFrO2Nhc2UiZGF0ZSI6'@; put 'Y2FzZSJkYXRlVGltZS50eiI6UD1sbihUKTticmVhaztjYXNlImk4IjpjYXNlInN0cmluZyI6Y2FzZSJmaXhlZCI6Y2FzZSJ1dWlkIjpjYXNlImJpbi5iYXNlNjQiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJiYWQgY3VzdHByb3A6IittWzBdKX1kW0NpKF8pXT1QfXZhciBwUj17'@; put 'MDoiTm9uZSIsMToiU2luZ2xlIiwyOiJEb3VibGUiLDMzOiJTaW5nbGVBY2NvdW50aW5nIiwzNDoiRG91YmxlQWNjb3VudGluZyJ9LEFlZT1oZShwUik7ZnVuY3Rpb24ga2VlKGQsXyxtLFQpe2lmKFQuY2VsbFN0eWxlcyl7aWYobT1tLnJlcGxhY2UoL1xzKy9nLCIgIiksXy5JbnRlcmlvcil7'@; put 'dmFyIFA9Xy5JbnRlcmlvcjtQLlBhdHRlcm4mJihQLnBhdHRlcm5UeXBlPW1IW1AuUGF0dGVybl18fFAuUGF0dGVybiksUC5Db2xvciYmUC5Db2xvci5tYXRjaCgvI1swLTlBLUZhLWZdKi8pJiYoUC5mZ0NvbG9yPXtyZ2I6UC5Db2xvci5zbGljZSgxKX0pfSFmdW5jdGlvbiBnUihkKXtkLkJv'@; put 'cmRlcnMmJihkLkJvcmRlcnMuZm9yRWFjaChmdW5jdGlvbihfKXt2YXIgbT1fLlBvc2l0aW9uLnRvTG93ZXJDYXNlKCk7ZFttXT17c3R5bGU6UmVlKF8uTGluZVN0eWxlLCtfLldlaWdodCksY29sb3I6e3JnYjooXy5Db2xvcnx8IiMwMDAwMDAiKS5zbGljZSgxKX19fSksZGVsZXRlIGQuQm9y'@; put 'ZGVycyl9KF8pO3ZhciBzZSxRPW0ubWF0Y2goLzwoPzpcdys6KT9Gb250XHNbXj5dKj4vKTtRJiYoVGkoKHNlPVhyKFFbMF0pKS5Cb2xkKSYmKF8uQm9sZD0hMCksVGkoc2UuSXRhbGljKSYmKF8uSXRhbGljPSEwKSxUaShzZS5TdHJpa2VUaHJvdWdoKSYmKF8uU3RyaWtlPSEwKSxzZS5TaXpl'@; put 'JiYoXy5TaXplPStzZS5TaXplKSxfLkZvbnROYW1lPXNlLkZvbnROYW1lP3NlLkZvbnROYW1lOiJBcmlhbCIsc2UuVW5kZXJsaW5lJiYoXy5VbmRlcmxpbmU9QWVlW3NlLlVuZGVybGluZV0pLHNlLkNvbG9yJiYoXy5SR0I9c2UuQ29sb3Iuc2xpY2UoLTYpKSksXy5BbGlnbm1lbnQmJihfLmFs'@; put 'aWdubWVudD17fSxfLkFsaWdubWVudC5WZXJ0aWNhbCYmKF8uYWxpZ25tZW50LnZlcnRpY2FsPV8uQWxpZ25tZW50LlZlcnRpY2FsLnRvTG93ZXJDYXNlKCkpLF8uQWxpZ25tZW50Lkhvcml6b250YWwmJihfLmFsaWdubWVudC5ob3Jpem9udGFsPV8uQWxpZ25tZW50Lkhvcml6b250YWwudG9M'@; put 'b3dlckNhc2UoKSksVGkoXy5BbGlnbm1lbnQuV3JhcFRleHR8fCIwIik/Xy5hbGlnbm1lbnQud3JhcFRleHQ9ITA6bnVsbD09Xy5BbGlnbm1lbnQuV3JhcFRleHQmJmRlbGV0ZSBfLmFsaWdubWVudC53cmFwVGV4dCxUaShfLkFsaWdubWVudC5TaHJpbmtUb0ZpdHx8IjAiKSYmKF8uYWxpZ25t'@; put 'ZW50LnNocmlua1RvRml0PSEwKSwrXy5BbGlnbm1lbnQuSW5kZW50JiYoXy5hbGlnbm1lbnQuaW5kZW50PStfLkFsaWdubWVudC5JbmRlbnR8fDApLCtfLkFsaWdubWVudC5Sb3RhdGUmJihfLmFsaWdubWVudC50ZXh0Um90YXRpb249K18uQWxpZ25tZW50LlJvdGF0ZXx8MCkpfWRbXy5JRF09'@; put 'XywoIkRlZmF1bHQiPT1fLklEfHwiTm9ybWFsIj09Xy5OYW1lKSYmJG0oXyl9ZnVuY3Rpb24gUmVlKGQsXyl7c3dpdGNoKGQpe2Nhc2UiTm9uZSI6cmV0dXJuIm5vbmUiO2Nhc2UiRGFzaCI6cmV0dXJuImRhc2hlZCI7Y2FzZSJEb3QiOnJldHVybiJkb3R0ZWQiO2Nhc2UiRGFzaERvdCI6cmV0'@; put 'dXJuImRhc2hEb3QiO2Nhc2UiRGFzaERvdERvdCI6cmV0dXJuImRhc2hEb3REb3QiO2Nhc2UiU2xhbnREYXNoRG90IjpyZXR1cm4ic2xhbnREYXNoRG90IjtjYXNlIkRvdWJsZSI6cmV0dXJuImRvdWJsZSI7Y2FzZSJDb250aW51b3VzIjpzd2l0Y2goK198fDApe2Nhc2UgMDpyZXR1cm4iaGFp'@; put 'ciI7Y2FzZSAxOnJldHVybiJ0aGluIjtjYXNlIDI6cmV0dXJuIm1lZGl1bSI7Y2FzZSAzOnJldHVybiJ0aGljayJ9cmV0dXJuInRoaW4ifXJldHVybiBkfWZ1bmN0aW9uIG1SKGQsXyxtLFQsUCxRLHNlLG9lLGRlLExlKXt2YXIgTmU9IkdlbmVyYWwiLEJlPVQuU3R5bGVJRCxaZT17fTtMZT1M'@; put 'ZXx8e307dmFyIG50PVtdLG10PTA7Zm9yKHZvaWQgMD09PUJlJiZvZSYmKEJlPW9lLlN0eWxlSUQpLHZvaWQgMD09PUJlJiZzZSYmKEJlPXNlLlN0eWxlSUQpO3ZvaWQgMCE9PVFbQmVdOyl7dmFyIFFlPVFbQmVdO2lmKCJHZW5lcmFsIj09TmUmJlFlLm5mJiYoTmU9UVtCZV0ubmYpLFFlLklu'@; put 'dGVyaW9yJiZudC5wdXNoKFFbQmVdLkludGVyaW9yKSxRZS5hbGlnbm1lbnQmJihaZS5hbGlnbm1lbnR8fChaZS5hbGlnbm1lbnQ9UXIoUWUuYWxpZ25tZW50KSkpLG51bGw9PVplLmJvbGQmJlFlLkJvbGQmJihaZS5ib2xkPSEwKSxudWxsPT1aZS5pdGFsaWMmJlFlLkl0YWxpYyYmKFplLml0'@; put 'YWxpYz0hMCksbnVsbD09WmUuc3RyaWtlJiZRZS5TdHJpa2UmJihaZS5zdHJpa2U9ITApLG51bGw9PVplLnN6JiZRZS5TaXplJiYoWmUuc3o9UWUuU2l6ZSksbnVsbD09WmUubmFtZSYmUWUuRm9udE5hbWUmJihaZS5uYW1lPVFlLkZvbnROYW1lKSxudWxsPT1aZS51bmRlcmxpbmUmJlFlLlVu'@; put 'ZGVybGluZSYmKFplLnVuZGVybGluZT1RZS5VbmRlcmxpbmUpLG51bGw9PVplLmNvbG9yJiZRZS5SR0ImJihaZS5jb2xvcj17cmdiOlFlLlJHQn0pLFsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbihFdCl7bnVsbD09WmVbRXRdJiZRZVtFdF0mJihaZVtF'@; put 'dF09UXIoUWVbRXRdKSl9KSwiRGVmYXVsdCI9PUJlKWJyZWFrO0JlPVFlLlBhcmVudHx8IkRlZmF1bHQifVplLm5hbWV8fChaZS5uYW1lPVEuRGVmYXVsdCYmUS5EZWZhdWx0LkZvbnROYW1lfHwiQXJpYWwiKSxaZS5zenx8KFplLnN6PVEuRGVmYXVsdCYmUS5EZWZhdWx0LlNpemV8fDEyKTt2'@; put 'YXIgZnQ9IiI7aWYoZHx8VC5Gb3JtdWxhfHwiU3RyaW5nIj09bS5UeXBlfHwiTnVtYmVyIj09bS5UeXBlKXN3aXRjaChtLlR5cGUpe2Nhc2UiQm9vbGVhbiI6VC50PSJiIixULnY9VGkoZCk7YnJlYWs7Y2FzZSJTdHJpbmciOlQudD0icyIsZnQ9anMoQ2koZCkpLFQudj1kLmluZGV4T2YoIjwi'@; put 'KT4tMT9DaShffHxkKS5yZXBsYWNlKC88W15dKj8+L2csIiIpOmZ0LGQuaW5kZXhPZigiPCIpPi0xJiYoVC5SPWtmLmh0bWxfdG9fcnMoQ2koZCkpKTticmVhaztjYXNlIkRhdGVUaW1lIjoiWiIhPWQuc2xpY2UoLTEpJiYoZCs9IloiKSxULnY9KGxuKGQpLW5ldyBEYXRlKERhdGUuVVRDKDE4'@; put 'OTksMTEsMzApKSkvODY0ZTUsVC52IT1ULnY/VC52PUNpKGQpOlQudjw2MCYmKFQudj1ULnYtMSksKCFOZXx8IkdlbmVyYWwiPT1OZSkmJihOZT0ieXl5eS1tbS1kZCIpO2Nhc2UiTnVtYmVyIjp2b2lkIDA9PT1ULnYmJihULnY9K2QpLFQudHx8KFQudD0ibiIpO2JyZWFrO2Nhc2UiRXJyb3Ii'@; put 'OlQudD0iZSIsVC52PUgxW2RdLCExIT09TGUuY2VsbFRleHQmJihULnc9ZCk7YnJlYWs7ZGVmYXVsdDoiIj09ZCYmIiI9PV8/VC50PSJ6IjooVC50PSJzIixmdD1qcyhDaShkKSksVC52PWQuaW5kZXhPZigiPCIpPi0xP0NpKF98fGQpLnJlcGxhY2UoLzxbXl0qPz4vZywiIik6ZnQsZC5pbmRl'@; put 'eE9mKCI8Iik+LTEmJihULlI9a2YuaHRtbF90b19ycyhDaShkKSkpKX1lbHNlIFQudD0ieiIsZGVsZXRlIFQudjtpZihmdW5jdGlvbiBmUihkLF8sbSl7aWYoInoiIT09ZC50KXtpZighbXx8ITEhPT1tLmNlbGxUZXh0KXRyeXtkLnc9ImUiPT09ZC50P2Qud3x8bmxbZC52XToiR2VuZXJhbCI9'@; put 'PT1fPyJuIj09PWQudD8oMHxkLnYpPT09ZC52P0kuX2dlbmVyYWxfaW50KGQudik6SS5fZ2VuZXJhbF9udW0oZC52KTpJLl9nZW5lcmFsKGQudik6ZnVuY3Rpb24gaFIoZCxfKXt2YXIgbT1uZVtkXXx8Q2koZCk7cmV0dXJuIkdlbmVyYWwiPT09bT9JLl9nZW5lcmFsKF8pOkkuZm9ybWF0KG0s'@; put 'Xyl9KF98fCJHZW5lcmFsIixkLnYpfWNhdGNoKFEpe2lmKG0uV1RGKXRocm93IFF9dHJ5e3ZhciBUPW5lW19dfHxffHwiR2VuZXJhbCI7aWYobS5jZWxsTkYmJihkLno9VCksbS5jZWxsRGF0ZXMmJiJuIj09ZC50JiZJLmlzX2RhdGUoVCkpe3ZhciBQPUkucGFyc2VfZGF0ZV9jb2RlKGQudik7'@; put 'UCYmKGQudD0iZCIsZC52PW5ldyBEYXRlKFAueSxQLm0tMSxQLmQsUC5ILFAuTSxQLlMsUC51KSl9fWNhdGNoKFEpe2lmKG0uV1RGKXRocm93IFF9fX0oVCxOZSxMZSksITEhPT1MZS5jZWxsRm9ybXVsYSlpZihULkZvcm11bGEpe3ZhciBrdD1DaShULkZvcm11bGEpOzYxPT1rdC5jaGFyQ29k'@; put 'ZUF0KDApJiYoa3Q9a3Quc2xpY2UoMSkpLFQuZj1SOChrdCxQKSxkZWxldGUgVC5Gb3JtdWxhLCJSQyI9PVQuQXJyYXlSYW5nZT9ULkY9UjgoIlJDOlJDIixQKTpULkFycmF5UmFuZ2UmJihULkY9UjgoVC5BcnJheVJhbmdlLFApLGRlLnB1c2goW3l0KFQuRiksVC5GXSkpfWVsc2UgZm9yKG10'@; put 'PTA7bXQ8ZGUubGVuZ3RoOysrbXQpUC5yPj1kZVttdF1bMF0ucy5yJiZQLnI8PWRlW210XVswXS5lLnImJlAuYz49ZGVbbXRdWzBdLnMuYyYmUC5jPD1kZVttdF1bMF0uZS5jJiYoVC5GPWRlW210XVsxXSk7aWYoTGUuY2VsbFN0eWxlcyYmKG50LmZvckVhY2goZnVuY3Rpb24oRXQpeyFaZS5w'@; put 'YXR0ZXJuVHlwZSYmRXQucGF0dGVyblR5cGUmJihaZS5wYXR0ZXJuVHlwZT1FdC5wYXR0ZXJuVHlwZSksIVplLmZnQ29sb3ImJkV0LmZnQ29sb3ImJihaZS5mZ0NvbG9yPUV0LmZnQ29sb3IpfSksVC5zPVplKSx2b2lkIDAhPT1ULlN0eWxlSUQmJihULml4ZmU9VC5TdHlsZUlEKSxULlImJlQu'@; put 'cyl7dmFyIGJ0PVFyKFQucyk7ZGVsZXRlIGJ0LmJvbGQsZGVsZXRlIGJ0Lml0YWxpYyxkZWxldGUgYnQudW5kZXJsaW5lLGRlbGV0ZSBidC5zdHJpa2UsVC5SLmZvckVhY2goZnVuY3Rpb24oRXQpe0V0LnM9SG4oUXIoYnQpLEV0LnMpfSl9fWZ1bmN0aW9uIExCKGQpe2QudD1kLnZ8fCIiLGQu'@; put 'dD1kLnQucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UoL1xyL2csIlxuIiksZC52PWQudz1kLml4ZmU9dm9pZCAwfWZ1bmN0aW9uIFFTKGQpe2lmKEllJiZCdWZmZXIuaXNCdWZmZXIoZCkpcmV0dXJuIGQudG9TdHJpbmcoInV0ZjgiKTtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJu'@; put 'IGQ7aWYodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZkIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gV24oTShLKGQpKSk7dGhyb3cgbmV3IEVycm9yKCJCYWQgaW5wdXQgZm9ybWF0OiBleHBlY3RlZCBCdWZmZXIgb3Igc3RyaW5nIil9dmFyIFc5PS88KFwvPykoW15ccz8+PCFcLzpdKjp8'@; put 'KShbXlxzPzw+OlwvXFtdKykoPzpbXHM/OjxcL11bXj5dKik/Pi9nbTtmdW5jdGlvbiBqeShkLF8pe3ZhciBtPV98fHt9LFQ9RihRUyhkKSk7KCJiaW5hcnkiPT1tLnR5cGV8fCJhcnJheSI9PW0udHlwZXx8ImJhc2U2NCI9PW0udHlwZSkmJihUPXR5cGVvZiBjcHRhYmxlPCJ1Ij9jcHRhYmxl'@; put 'LnV0aWxzLmRlY29kZSg2NTAwMSxOKFQpKTpXbihUKSk7dmFyIFA9VC5zbGljZSgwLDEwMjQpLnRvTG93ZXJDYXNlKCksUT0hMTtpZigoMTAyMyZQLmluZGV4T2YoIj4iKSk+TWF0aC5taW4oMTAyMyZQLmluZGV4T2YoIiwiKSwxMDIzJlAuaW5kZXhPZigiOyIpKSl7dmFyIHNlPVFyKG0pO3Jl'@; put 'dHVybiBzZS50eXBlPSJzdHJpbmciLHY4LnRvX3dvcmtib29rKFQsc2UpfWlmKC0xPT1QLmluZGV4T2YoIjw/eG1sIikmJlsiaHRtbCIsInRhYmxlIiwiaGVhZCIsIm1ldGEiLCJzY3JpcHQiLCJzdHlsZSIsImRpdiJdLmZvckVhY2goZnVuY3Rpb24oTGgpe1AuaW5kZXhPZigiPCIrTGgpPj0w'@; put 'JiYoUT0hMCl9KSxRKXJldHVybiBrZi50b193b3JrYm9vayhULG0pO3ZhciBvZSxMZSxrcixkZT1bXSxOZT17fSxCZT1bXSxaZT1tLmRlbnNlP1tdOnt9LG50PSIiLG10PXt9LFFlPXt9LGZ0PXt9LGt0PVIyKCc8RGF0YSBzczpUeXBlPSJTdHJpbmciPicpLGJ0PTAsRXQ9MCxWdD0wLHVuPXtz'@; put 'OntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LG5yPXt9LG5uPXt9LGFyPSIiLGpuPTAsa249W10sc3I9e30sZ3I9e30scW49MCxfaT1bXSxPaT17fSxzbz1bXSxtbz17fSxMaT1bXSxEbj0hMSxPcj1bXSxfcj1bXSxNbj17fSxOcj0wLGppPTAsYmk9e1NoZWV0czpbXSxXQlByb3BzOntkYXRl'@; put 'MTkwNDohMX19LE5vPXt9O1c5Lmxhc3RJbmRleD0wLFQ9VC5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwiIik7Zm9yKHZhciBZYT0iIjtvZT1XOS5leGVjKFQpOylzd2l0Y2gob2VbM109KFlhPW9lWzNdKS50b0xvd2VyQ2FzZSgpKXtjYXNlImRhdGEiOmlmKCJkYXRhIj09WWEpe2lm'@; put 'KCIvIj09PW9lWzFdKXtpZigoTGU9ZGUucG9wKCkpWzBdIT09b2VbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrTGUuam9pbigifCIpKX1lbHNlIi8iIT09b2VbMF0uY2hhckF0KG9lWzBdLmxlbmd0aC0yKSYmZGUucHVzaChbb2VbM10sITBdKTticmVha31pZihkZVtkZS5sZW5n'@; put 'dGgtMV1bMV0pYnJlYWs7Ii8iPT09b2VbMV0/bVIoVC5zbGljZShidCxvZS5pbmRleCksYXIsa3QsImNvbW1lbnQiPT1kZVtkZS5sZW5ndGgtMV1bMF0/bW86UWUse2M6RXQscjpWdH0sbnIsTGlbRXRdLGZ0LE9yLG0pOihhcj0iIixrdD1SMihvZVswXSksYnQ9b2UuaW5kZXgrb2VbMF0ubGVu'@; put 'Z3RoKTticmVhaztjYXNlImNlbGwiOmlmKCIvIj09PW9lWzFdfHwiLz4iPT09b2VbMF0uc2xpY2UoLTIpKXtpZigiLz4iPT09b2VbMF0uc2xpY2UoLTIpKXtpZigoUWU9ZFIob2VbMF0pKS5JbmRleCYmKEV0PStRZS5JbmRleC0xKSxFdDx1bi5zLmMmJih1bi5zLmM9RXQpLEV0PnVuLmUuYyYm'@; put 'KHVuLmUuYz1FdCksc289W10sIW0uc2hlZXRTdHVicyl7KytFdDticmVha31tUigiIiwiIix7fSwiY29tbWVudCI9PWRlW2RlLmxlbmd0aC0xXVswXT9tbzpRZSx7YzpFdCxyOlZ0fSxucixMaVtFdF0sZnQsT3IsbSl9aWYoc28ubGVuZ3RoPjAmJihRZS5jPXNvKSwoIW0uc2hlZXRSb3dzfHxt'@; put 'LnNoZWV0Um93cz5WdCkmJih2b2lkIDAhPT1RZS52fHxtLnNoZWV0U3R1YnMpJiYobS5kZW5zZT8oWmVbVnRdfHwoWmVbVnRdPVtdKSxaZVtWdF1bRXRdPVFlKTpaZVttcyhFdCkrem8oVnQpXT1RZSksUWUuSFJlZiYmKFFlLmw9e1RhcmdldDpDaShRZS5IUmVmKX0sUWUuSFJlZlNjcmVlblRp'@; put 'cCYmKFFlLmwuVG9vbHRpcD1RZS5IUmVmU2NyZWVuVGlwKSxkZWxldGUgUWUuSFJlZixkZWxldGUgUWUuSFJlZlNjcmVlblRpcCksKFFlLk1lcmdlQWNyb3NzfHxRZS5NZXJnZURvd24pJiYoTnI9RXQrKDB8cGFyc2VJbnQoUWUuTWVyZ2VBY3Jvc3MsMTApKSxqaT1WdCsoMHxwYXJzZUludChR'@; put 'ZS5NZXJnZURvd24sMTApKSwoTnI+RXR8fGppPlZ0KSYma24ucHVzaCh7czp7YzpFdCxyOlZ0fSxlOntjOk5yLHI6aml9fSkpLG0uc2hlZXRTdHVicylpZihRZS5NZXJnZUFjcm9zc3x8UWUuTWVyZ2VEb3duKXtmb3IodmFyIHVvPUV0O3VvPD1OcjsrK3VvKWZvcih2YXIgTXM9VnQ7TXM8PWpp'@; put 'OysrTXMpKHVvPkV0fHxNcz5WdCkmJihtLmRlbnNlPyhaZVtNc118fChaZVtNc109W10pLFplW01zXVt1b109e3Q6InoifSk6WmVbbXModW8pK3pvKE1zKV09e3Q6InoifSk7RXQ9TnIrMX1lbHNlKytFdDtlbHNlIFFlLk1lcmdlQWNyb3NzP0V0PU5yKzE6KytFdH1lbHNlKFFlPWRSKG9lWzBd'@; put 'KSkuSW5kZXgmJihFdD0rUWUuSW5kZXgtMSksRXQ8dW4ucy5jJiYodW4ucy5jPUV0KSxFdD51bi5lLmMmJih1bi5lLmM9RXQpLCIvPiI9PT1vZVswXS5zbGljZSgtMikmJisrRXQsc289W107YnJlYWs7Y2FzZSJyb3ciOiIvIj09PW9lWzFdfHwiLz4iPT09b2VbMF0uc2xpY2UoLTIpPyhWdDx1'@; put 'bi5zLnImJih1bi5zLnI9VnQpLFZ0PnVuLmUuciYmKHVuLmUucj1WdCksIi8+Ij09PW9lWzBdLnNsaWNlKC0yKSYmKGZ0PVIyKG9lWzBdKSkuSW5kZXgmJihWdD0rZnQuSW5kZXgtMSksRXQ9MCwrK1Z0KTooKGZ0PVIyKG9lWzBdKSkuSW5kZXgmJihWdD0rZnQuSW5kZXgtMSksTW49e30sKCIw'@; put 'Ij09ZnQuQXV0b0ZpdEhlaWdodHx8ZnQuSGVpZ2h0KSYmKE1uLmhwdD1wYXJzZUZsb2F0KGZ0LkhlaWdodCksTW4uaHB4PU5nKE1uLmhwdCksX3JbVnRdPU1uKSwiMSI9PWZ0LkhpZGRlbiYmKE1uLmhpZGRlbj0hMCxfcltWdF09TW4pKTticmVhaztjYXNlIndvcmtzaGVldCI6aWYoIi8iPT09'@; put 'b2VbMV0pe2lmKChMZT1kZS5wb3AoKSlbMF0hPT1vZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitMZS5qb2luKCJ8IikpO0JlLnB1c2gobnQpLHVuLnMucjw9dW4uZS5yJiZ1bi5zLmM8PXVuLmUuYyYmKFplWyIhcmVmIl09aHQodW4pLG0uc2hlZXRSb3dzJiZtLnNoZWV0Um93'@; put 'czw9dW4uZS5yJiYoWmVbIiFmdWxscmVmIl09WmVbIiFyZWYiXSx1bi5lLnI9bS5zaGVldFJvd3MtMSxaZVsiIXJlZiJdPWh0KHVuKSkpLGtuLmxlbmd0aCYmKFplWyIhbWVyZ2VzIl09a24pLExpLmxlbmd0aD4wJiYoWmVbIiFjb2xzIl09TGkpLF9yLmxlbmd0aD4wJiYoWmVbIiFyb3dzIl09'@; put 'X3IpLG10JiYoWmVbIiFzaGVldEZvcm1hdCJdPXhlZShtdCkpLE5lW250XT1aZX1lbHNlIHVuPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LFZ0PUV0PTAsZGUucHVzaChbb2VbM10sITFdKSxMZT1SMihvZVswXSksbnQ9Q2koTGUuTmFtZSksWmU9bS5kZW5zZT9bXTp7fSxrbj1bXSxP'@; put 'cj1bXSxfcj1bXSxiaS5TaGVldHMucHVzaChObz17bmFtZTpudCxIaWRkZW46MH0pO2JyZWFrO2Nhc2UidGFibGUiOmlmKCIvIj09PW9lWzFdKXtpZigoTGU9ZGUucG9wKCkpWzBdIT09b2VbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrTGUuam9pbigifCIpKX1lbHNle2lmKCIv'@; put 'PiI9PW9lWzBdLnNsaWNlKC0yKSlicmVhazttdD1SMihvZVswXSksZGUucHVzaChbb2VbM10sITFdKSxMaT1bXSxEbj0hMX1icmVhaztjYXNlInN0eWxlIjoiLyI9PT1vZVsxXT9rZWUobnIsbm4sYXIsbSk6KG5uPVIyKG9lWzBdKSxhcj0iIik7YnJlYWs7Y2FzZSJudW1iZXJmb3JtYXQiOm5u'@; put 'Lm5mPUNpKFIyKG9lWzBdKS5Gb3JtYXR8fCJHZW5lcmFsIiksbmVbbm4ubmZdJiYobm4ubmY9bmVbbm4ubmZdKTtmb3IodmFyIGRhPTA7MzkyIT1kYSYmSS5fdGFibGVbZGFdIT1ubi5uZjsrK2RhKTtpZigzOTI9PWRhKWZvcihkYT01NzszOTIhPWRhOysrZGEpaWYobnVsbD09SS5fdGFibGVb'@; put 'ZGFdKXtJLmxvYWQobm4ubmYsZGEpO2JyZWFrfWJyZWFrO2Nhc2UiY29sdW1uIjppZigidGFibGUiIT09ZGVbZGUubGVuZ3RoLTFdWzBdfHwiLyI9PT1vZVsxXSlicmVhaztpZigoa3I9UjIob2VbMF0pKS5IaWRkZW4mJihrci5oaWRkZW49ITAsZGVsZXRlIGtyLkhpZGRlbiksa3IuV2lkdGg/'@; put 'a3Iud3B4PTQqcGFyc2VJbnQoa3IuV2lkdGgsMTApLzM6K2tyLkF1dG9GaXRXaWR0aCYmKGtyLmF1dG89MSksIURuJiZrci53cHg+MTApe0RuPSEwLHNkPTY7Zm9yKHZhciAkYT0wOyRhPExpLmxlbmd0aDsrKyRhKUxpWyRhXSYmQjAoTGlbJGFdKX1EbiYmQjAoa3IpLExpW2tyLkluZGV4LTF8'@; put 'fExpLmxlbmd0aF09a3I7Zm9yKHZhciBTYT0wO1NhPCtrci5TcGFuOysrU2EpTGlbTGkubGVuZ3RoXT1Rcihrcik7YnJlYWs7Y2FzZSJuYW1lZHJhbmdlIjppZigiLyI9PT1vZVsxXSlicmVhaztiaS5OYW1lc3x8KGJpLk5hbWVzPVtdKTt2YXIgUGk9WHIob2VbMF0pLFBjPXtOYW1lOlBpLk5h'@; put 'bWUsUmVmOlI4KFBpLlJlZmVyc1RvLnNsaWNlKDEpLHtyOjAsYzowfSl9O2JpLlNoZWV0cy5sZW5ndGg+MCYmKFBjLlNoZWV0PWJpLlNoZWV0cy5sZW5ndGgtMSksYmkuTmFtZXMucHVzaChQYyk7YnJlYWs7Y2FzZSJuYW1lZGNlbGwiOmNhc2UiYiI6Y2FzZSJpIjpjYXNlInUiOmNhc2UicyI6'@; put 'Y2FzZSJlbSI6Y2FzZSJoMiI6Y2FzZSJoMyI6Y2FzZSJzdWIiOmNhc2Uic3VwIjpjYXNlInNwYW4iOmNhc2UicHJvdGVjdGlvbiI6Y2FzZSJwYXJhZ3JhcGhzIjpjYXNlIm5hbWUiOmJyZWFrO2Nhc2UiYWxpZ25tZW50IjppZighbS5jZWxsU3R5bGVzfHwiLyI9PT1vZVsxXSlicmVhaztubi5B'@; put 'bGlnbm1lbnQ9UjIob2VbMF0pO2JyZWFrO2Nhc2UiYm9yZGVycyI6Ii8iIT09b2VbMV0mJihubi5Cb3JkZXJzPVtdKTticmVhaztjYXNlImJvcmRlciI6aWYoIi8iPT09b2VbMV0pYnJlYWs7bm4uQm9yZGVyc3x8KG5uLkJvcmRlcnM9W10pLG5uLkJvcmRlcnMucHVzaChSMihvZVswXSkpO2Jy'@; put 'ZWFrO2Nhc2UiZm9udCI6aWYoIi8+Ij09PW9lWzBdLnNsaWNlKC0yKSl7YXIrPW9lWzBdO2JyZWFrfSIvIj09PW9lWzFdP2FyKz1ULnNsaWNlKGpuLG9lLmluZGV4K29lWzBdLmxlbmd0aCk6am49b2UuaW5kZXg7YnJlYWs7Y2FzZSJpbnRlcmlvciI6aWYoIW0uY2VsbFN0eWxlc3x8Ii8iPT09'@; put 'b2VbMV0pYnJlYWs7bm4uSW50ZXJpb3I9UjIob2VbMF0pO2JyZWFrO2Nhc2UiYXV0aG9yIjpjYXNlInRpdGxlIjpjYXNlImRlc2NyaXB0aW9uIjpjYXNlImNyZWF0ZWQiOmNhc2Uia2V5d29yZHMiOmNhc2Uic3ViamVjdCI6Y2FzZSJjYXRlZ29yeSI6Y2FzZSJjb21wYW55IjpjYXNlImxhc3Rh'@; put 'dXRob3IiOmNhc2UibGFzdHNhdmVkIjpjYXNlImxhc3RwcmludGVkIjpjYXNlInZlcnNpb24iOmNhc2UicmV2aXNpb24iOmNhc2UidG90YWx0aW1lIjpjYXNlImh5cGVybGlua2Jhc2UiOmNhc2UibWFuYWdlciI6Y2FzZSJjb250ZW50c3RhdHVzIjpjYXNlImlkZW50aWZpZXIiOmNhc2UibGFu'@; put 'Z3VhZ2UiOmNhc2UiYXBwbmFtZSI6aWYoIi8+Ij09PW9lWzBdLnNsaWNlKC0yKSlicmVhazsiLyI9PT1vZVsxXT9tYShzcixZYSxULnNsaWNlKHFuLG9lLmluZGV4KSk6cW49b2UuaW5kZXgrb2VbMF0ubGVuZ3RoO2JyZWFrO2Nhc2Uic3R5bGVzIjpjYXNlIndvcmtib29rIjppZigiLyI9PT1v'@; put 'ZVsxXSl7aWYoKExlPWRlLnBvcCgpKVswXSE9PW9lWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK0xlLmpvaW4oInwiKSl9ZWxzZSBkZS5wdXNoKFtvZVszXSwhMV0pO2JyZWFrO2Nhc2UiY29tbWVudCI6aWYoIi8iPT09b2VbMV0pe2lmKChMZT1kZS5wb3AoKSlbMF0hPT1vZVsz'@; put 'XSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitMZS5qb2luKCJ8IikpO0xCKG1vKSxzby5wdXNoKG1vKX1lbHNlIGRlLnB1c2goW29lWzNdLCExXSksbW89e2E6KExlPVIyKG9lWzBdKSkuQXV0aG9yfTticmVhaztjYXNlImF1dG9maWx0ZXIiOmlmKCIvIj09PW9lWzFdKXtpZigoTGU9'@; put 'ZGUucG9wKCkpWzBdIT09b2VbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrTGUuam9pbigifCIpKX1lbHNlIGlmKCIvIiE9PW9lWzBdLmNoYXJBdChvZVswXS5sZW5ndGgtMikpe3ZhciB4bj1SMihvZVswXSk7WmVbIiFhdXRvZmlsdGVyIl09e3JlZjpSOCh4bi5SYW5nZSkucmVw'@; put 'bGFjZSgvXCQvZywiIil9LGRlLnB1c2goW29lWzNdLCEwXSl9YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6aWYoWmVbIiF2YWxpZGF0aW9ucyJdfHwoWmVbIiF2YWxpZGF0aW9ucyJdPVtdKSwiLyI9PT1vZVsxXSl7aWYoKExlPWRlLnBvcCgpKVswXSE9PW9lWzNdKXRocm93IG5ldyBFcnJv'@; put 'cigiQmFkIHN0YXRlOiAiK0xlLmpvaW4oInwiKSl9ZWxzZSIvIiE9PW9lWzBdLmNoYXJBdChvZVswXS5sZW5ndGgtMikmJmRlLnB1c2goW29lWzNdLCEwXSksT2k9e307YnJlYWs7Y2FzZSJwaXhlbHNwZXJpbmNoIjppZigiLyI9PT1vZVsxXSl7dmFyIHhsPStULnNsaWNlKGJ0LG9lLmluZGV4'@; put 'KTsoNzI9PXhsfHw5Nj09eGwpJiZnUyh4bCl9ZWxzZSBidD1vZS5pbmRleCtvZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJjb21wb25lbnRvcHRpb25zIjpjYXNlImRvY3VtZW50cHJvcGVydGllcyI6Y2FzZSJjdXN0b21kb2N1bWVudHByb3BlcnRpZXMiOmNhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0'@; put 'aW5ncyI6Y2FzZSJwaXZvdHRhYmxlIjpjYXNlInBpdm90Y2FjaGUiOmNhc2UibmFtZXMiOmNhc2UibWFwaW5mbyI6Y2FzZSJwYWdlYnJlYWtzIjpjYXNlInF1ZXJ5dGFibGUiOmNhc2Uic29ydGluZyI6Y2FzZSJzY2hlbWEiOmNhc2UiY29uZGl0aW9uYWxmb3JtYXR0aW5nIjpjYXNlInNtYXJ0'@; put 'dGFndHlwZSI6Y2FzZSJzbWFydHRhZ3MiOmNhc2UiZXhjZWx3b3JrYm9vayI6Y2FzZSJ3b3JrYm9va29wdGlvbnMiOmNhc2Uid29ya3NoZWV0b3B0aW9ucyI6aWYoIi8iPT09b2VbMV0pe2lmKChMZT1kZS5wb3AoKSlbMF0hPT1vZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitM'@; put 'ZS5qb2luKCJ8IikpfWVsc2UiLyIhPT1vZVswXS5jaGFyQXQob2VbMF0ubGVuZ3RoLTIpJiZkZS5wdXNoKFtvZVszXSwhMF0pO2JyZWFrO2RlZmF1bHQ6aWYoMD09ZGUubGVuZ3RoJiYiZG9jdW1lbnQiPT1vZVszXXx8MD09ZGUubGVuZ3RoJiYidW9mIj09b2VbM10pcmV0dXJuIFd5KFQsbSk7'@; put 'dmFyIHFsPSEwO3N3aXRjaChkZVtkZS5sZW5ndGgtMV1bMF0pe2Nhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0aW5ncyI6c3dpdGNoKG9lWzNdKXtjYXNlImFsbG93cG5nIjpjYXNlInJlbW92ZXBlcnNvbmFsaW5mb3JtYXRpb24iOmNhc2UiZG93bmxvYWRjb21wb25lbnRzIjpjYXNlImxvY2F0aW9u'@; put 'b2Zjb21wb25lbnRzIjpjYXNlImNvbG9ycyI6Y2FzZSJjb2xvciI6Y2FzZSJpbmRleCI6Y2FzZSJyZ2IiOmNhc2UidGFyZ2V0c2NyZWVuc2l6ZSI6Y2FzZSJyZWFkb25seXJlY29tbWVuZGVkIjpicmVhaztkZWZhdWx0OnFsPSExfWJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6c3dpdGNo'@; put 'KG9lWzNdKXtjYXNlInRvb2xiYXIiOmNhc2UiaGlkZW9mZmljZWxvZ28iOmNhc2Uic3ByZWFkc2hlZXRhdXRvZml0IjpjYXNlImxhYmVsIjpjYXNlImNhcHRpb24iOmNhc2UibWF4aGVpZ2h0IjpjYXNlIm1heHdpZHRoIjpjYXNlIm5leHRzaGVldG51bWJlciI6YnJlYWs7ZGVmYXVsdDpxbD0h'@; put 'MX1icmVhaztjYXNlImV4Y2Vsd29ya2Jvb2siOnN3aXRjaChvZVszXSl7Y2FzZSJkYXRlMTkwNCI6YmkuV0JQcm9wcy5kYXRlMTkwND0hMDticmVhaztjYXNlIndpbmRvd2hlaWdodCI6Y2FzZSJ3aW5kb3d3aWR0aCI6Y2FzZSJ3aW5kb3d0b3B4IjpjYXNlIndpbmRvd3RvcHkiOmNhc2UidGFi'@; put 'cmF0aW8iOmNhc2UicHJvdGVjdHN0cnVjdHVyZSI6Y2FzZSJwcm90ZWN0d2luZG93IjpjYXNlInByb3RlY3R3aW5kb3dzIjpjYXNlImFjdGl2ZXNoZWV0IjpjYXNlImRpc3BsYXlpbmtub3RlcyI6Y2FzZSJmaXJzdHZpc2libGVzaGVldCI6Y2FzZSJzdXBib29rIjpjYXNlInNoZWV0bmFtZSI6'@; put 'Y2FzZSJzaGVldGluZGV4IjpjYXNlInNoZWV0aW5kZXhmaXJzdCI6Y2FzZSJzaGVldGluZGV4bGFzdCI6Y2FzZSJkbGwiOmNhc2UiYWNjZXB0bGFiZWxzaW5mb3JtdWxhcyI6Y2FzZSJkb25vdHNhdmVsaW5rdmFsdWVzIjpjYXNlIml0ZXJhdGlvbiI6Y2FzZSJtYXhpdGVyYXRpb25zIjpjYXNl'@; put 'Im1heGNoYW5nZSI6Y2FzZSJwYXRoIjpjYXNlInhjdCI6Y2FzZSJjb3VudCI6Y2FzZSJzZWxlY3RlZHNoZWV0cyI6Y2FzZSJjYWxjdWxhdGlvbiI6Y2FzZSJ1bmNhbGNlZCI6Y2FzZSJzdGFydHVwcHJvbXB0IjpjYXNlImNybiI6Y2FzZSJleHRlcm5uYW1lIjpjYXNlImZvcm11bGEiOmNhc2Ui'@; put 'Y29sZmlyc3QiOmNhc2UiY29sbGFzdCI6Y2FzZSJ3YW50YWR2aXNlIjpjYXNlImJvb2xlYW4iOmNhc2UiZXJyb3IiOmNhc2UidGV4dCI6Y2FzZSJvbGUiOmNhc2Uibm9hdXRvcmVjb3ZlciI6Y2FzZSJwdWJsaXNob2JqZWN0cyI6Y2FzZSJkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUiOmNhc2Ui'@; put 'bnVtYmVyIjpjYXNlInJlZm1vZGVyMWMxIjpjYXNlImVtYmVkc2F2ZXNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpxbD0hMX1icmVhaztjYXNlIndvcmtib29rb3B0aW9ucyI6c3dpdGNoKG9lWzNdKXtjYXNlIm93Y3ZlcnNpb24iOmNhc2UiaGVpZ2h0IjpjYXNlIndpZHRoIjpicmVhaztkZWZh'@; put 'dWx0OnFsPSExfWJyZWFrO2Nhc2Uid29ya3NoZWV0b3B0aW9ucyI6c3dpdGNoKG9lWzNdKXtjYXNlInZpc2libGUiOmlmKCIvPiIhPT1vZVswXS5zbGljZSgtMikpaWYoIi8iPT09b2VbMV0pc3dpdGNoKFQuc2xpY2UocW4sb2UuaW5kZXgpKXtjYXNlIlNoZWV0SGlkZGVuIjpOby5IaWRkZW49'@; put 'MTticmVhaztjYXNlIlNoZWV0VmVyeUhpZGRlbiI6Tm8uSGlkZGVuPTJ9ZWxzZSBxbj1vZS5pbmRleCtvZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJoZWFkZXIiOlplWyIhbWFyZ2lucyJdfHxMOChaZVsiIW1hcmdpbnMiXT17fSwieGxtbCIpLFplWyIhbWFyZ2lucyJdLmhlYWRlcj1YcihvZVsw'@; put 'XSkuTWFyZ2luO2JyZWFrO2Nhc2UiZm9vdGVyIjpaZVsiIW1hcmdpbnMiXXx8TDgoWmVbIiFtYXJnaW5zIl09e30sInhsbWwiKSxaZVsiIW1hcmdpbnMiXS5mb290ZXI9WHIob2VbMF0pLk1hcmdpbjticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgY2g9WHIob2VbMF0pO1plWyIhbWFyZ2lu'@; put 'cyJdfHxMOChaZVsiIW1hcmdpbnMiXT17fSwieGxtbCIpLGNoLlRvcCYmKFplWyIhbWFyZ2lucyJdLnRvcD1jaC5Ub3ApLGNoLkxlZnQmJihaZVsiIW1hcmdpbnMiXS5sZWZ0PWNoLkxlZnQpLGNoLlJpZ2h0JiYoWmVbIiFtYXJnaW5zIl0ucmlnaHQ9Y2guUmlnaHQpLGNoLkJvdHRvbSYmKFpl'@; put 'WyIhbWFyZ2lucyJdLmJvdHRvbT1jaC5Cb3R0b20pO2JyZWFrO2Nhc2UiZGlzcGxheXJpZ2h0dG9sZWZ0IjpiaS5WaWV3c3x8KGJpLlZpZXdzPVtdKSxiaS5WaWV3c1swXXx8KGJpLlZpZXdzWzBdPXt9KSxiaS5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5lcyI6Y2FzZSJm'@; put 'cm96ZW5ub3NwbGl0IjpjYXNlImFjdGl2ZXJvdyI6Y2FzZSJhY3RpdmVjb2wiOmNhc2UidG9wcm93Ym90dG9tcGFuZSI6Y2FzZSJsZWZ0Y29sdW1ucmlnaHRwYW5lIjpjYXNlInVuc3luY2VkIjpjYXNlInByaW50IjpjYXNlInByaW50ZXJyb3JzIjpjYXNlInBhbmVzIjpjYXNlInNjYWxlIjpj'@; put 'YXNlInBhbmUiOmNhc2UibnVtYmVyIjpjYXNlImxheW91dCI6Y2FzZSJwYWdlc2V0dXAiOmNhc2Uic2VsZWN0ZWQiOmNhc2UicHJvdGVjdG9iamVjdHMiOmNhc2UiZW5hYmxlc2VsZWN0aW9uIjpjYXNlInByb3RlY3RzY2VuYXJpb3MiOmNhc2UidmFsaWRwcmludGVyaW5mbyI6Y2FzZSJob3Jp'@; put 'em9udGFscmVzb2x1dGlvbiI6Y2FzZSJ2ZXJ0aWNhbHJlc29sdXRpb24iOmNhc2UibnVtYmVyb2Zjb3BpZXMiOmNhc2UiYWN0aXZlcGFuZSI6Y2FzZSJ0b3Byb3d2aXNpYmxlIjpjYXNlImxlZnRjb2x1bW52aXNpYmxlIjpjYXNlImZpdHRvcGFnZSI6Y2FzZSJyYW5nZXNlbGVjdGlvbiI6Y2Fz'@; put 'ZSJwYXBlcnNpemVpbmRleCI6Y2FzZSJwYWdlbGF5b3V0em9vbSI6Y2FzZSJwYWdlYnJlYWt6b29tIjpjYXNlImZpbHRlcm9uIjpjYXNlImZpdHdpZHRoIjpjYXNlImZpdGhlaWdodCI6Y2FzZSJjb21tZW50c2xheW91dCI6Y2FzZSJ6b29tIjpjYXNlImxlZnR0b3JpZ2h0IjpjYXNlImdyaWRs'@; put 'aW5lcyI6Y2FzZSJhbGxvd3NvcnQiOmNhc2UiYWxsb3dmaWx0ZXIiOmNhc2UiYWxsb3dpbnNlcnRyb3dzIjpjYXNlImFsbG93ZGVsZXRlcm93cyI6Y2FzZSJhbGxvd2luc2VydGNvbHMiOmNhc2UiYWxsb3dkZWxldGVjb2xzIjpjYXNlImFsbG93aW5zZXJ0aHlwZXJsaW5rcyI6Y2FzZSJhbGxv'@; put 'd2Zvcm1hdGNlbGxzIjpjYXNlImFsbG93c2l6ZWNvbHMiOmNhc2UiYWxsb3dzaXplcm93cyI6Y2FzZSJ0YWJjb2xvcmluZGV4IjpjYXNlImRvbm90ZGlzcGxheWhlYWRpbmdzIjpjYXNlInNob3dwYWdlbGF5b3V0em9vbSI6Y2FzZSJibGFja2FuZHdoaXRlIjpjYXNlImRvbm90ZGlzcGxheXpl'@; put 'cm9zIjpjYXNlImRpc3BsYXlwYWdlYnJlYWsiOmNhc2Uicm93Y29saGVhZGluZ3MiOmNhc2UiZG9ub3RkaXNwbGF5b3V0bGluZSI6Y2FzZSJub29yaWVudGF0aW9uIjpjYXNlImFsbG93dXNlcGl2b3R0YWJsZXMiOmNhc2UiemVyb2hlaWdodCI6Y2FzZSJ2aWV3YWJsZXJhbmdlIjpjYXNlInNl'@; put 'bGVjdGlvbiI6Y2FzZSJwcm90ZWN0Y29udGVudHMiOmJyZWFrO2Nhc2Uic3BsaXRob3Jpem9udGFsIjpjYXNlInNwbGl0dmVydGljYWwiOmlmKCIvPiIhPT1vZVswXS5zbGljZSgtMikpaWYoIi8iPT1vZVsxXSl7WmVbIiFmcmVlemUiXXx8KFplWyIhZnJlZXplIl09IkExIik7dmFyIEVkPUlz'@; put 'KFplWyIhZnJlZXplIl0pOyJzcGxpdGhvcml6b250YWwiPT1vZVszXT9FZC5yPStULnNsaWNlKHFuLG9lLmluZGV4KTpFZC5jPStULnNsaWNlKHFuLG9lLmluZGV4KSxaZVsiIWZyZWV6ZSJdPXFpKEVkKX1lbHNlIHFuPW9lLmluZGV4K29lWzBdLmxlbmd0aDticmVhaztjYXNlImRvbm90ZGlz'@; put 'cGxheWdyaWRsaW5lcyI6WmVbIiFncmlkbGluZXMiXT0hMTticmVhaztjYXNlIm5vc3VtbWFyeXJvd3NiZWxvd2RldGFpbCI6WmVbIiFvdXRsaW5lIl18fChaZVsiIW91dGxpbmUiXT17fSksWmVbIiFvdXRsaW5lIl0uYWJvdmU9ITA7YnJlYWs7Y2FzZSJub3N1bW1hcnljb2x1bW5zcmlnaHRk'@; put 'ZXRhaWwiOlplWyIhb3V0bGluZSJdfHwoWmVbIiFvdXRsaW5lIl09e30pLFplWyIhb3V0bGluZSJdLmxlZnQ9ITA7YnJlYWs7ZGVmYXVsdDpxbD0hMX1icmVhaztjYXNlInBpdm90dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6c3dpdGNoKG9lWzNdKXtjYXNlImltbWVkaWF0ZWl0ZW1zb25kcm9w'@; put 'IjpjYXNlInNob3dwYWdlbXVsdGlwbGVpdGVtbGFiZWwiOmNhc2UiY29tcGFjdHJvd2luZGVudCI6Y2FzZSJsb2NhdGlvbiI6Y2FzZSJwaXZvdGZpZWxkIjpjYXNlIm9yaWVudGF0aW9uIjpjYXNlImxheW91dGZvcm0iOmNhc2UibGF5b3V0c3VidG90YWxsb2NhdGlvbiI6Y2FzZSJsYXlvdXRj'@; put 'b21wYWN0cm93IjpjYXNlInBvc2l0aW9uIjpjYXNlInBpdm90aXRlbSI6Y2FzZSJkYXRhdHlwZSI6Y2FzZSJkYXRhZmllbGQiOmNhc2Uic291cmNlbmFtZSI6Y2FzZSJwYXJlbnRmaWVsZCI6Y2FzZSJwdGxpbmVpdGVtcyI6Y2FzZSJwdGxpbmVpdGVtIjpjYXNlImNvdW50b2ZzYW1laXRlbXMi'@; put 'OmNhc2UiaXRlbSI6Y2FzZSJpdGVtdHlwZSI6Y2FzZSJwdHNvdXJjZSI6Y2FzZSJjYWNoZWluZGV4IjpjYXNlImNvbnNvbGlkYXRpb25yZWZlcmVuY2UiOmNhc2UiZmlsZW5hbWUiOmNhc2UicmVmZXJlbmNlIjpjYXNlIm5vY29sdW1uZ3JhbmQiOmNhc2Uibm9yb3dncmFuZCI6Y2FzZSJibGFu'@; put 'a2xpbmVhZnRlcml0ZW1zIjpjYXNlImhpZGRlbiI6Y2FzZSJzdWJ0b3RhbCI6Y2FzZSJiYXNlZmllbGQiOmNhc2UibWFwY2hpbGRpdGVtcyI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJyZWZyZXNob25maWxlb3BlbiI6Y2FzZSJwcmludHNldHRpdGxlcyI6Y2FzZSJtZXJnZWxhYmVscyI6Y2FzZSJk'@; put 'ZWZhdWx0dmVyc2lvbiI6Y2FzZSJyZWZyZXNobmFtZSI6Y2FzZSJyZWZyZXNoZGF0ZSI6Y2FzZSJyZWZyZXNoZGF0ZWNvcHkiOmNhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpjYXNlInZlcnNpb25sYXN0dXBkYXRlIjpjYXNlInZlcnNpb251cGRhdGVhYmxlbWluIjpjYXNlInZlcnNpb25yZWZy'@; put 'ZXNoYWJsZW1pbiI6Y2FzZSJjYWxjdWxhdGlvbiI6YnJlYWs7ZGVmYXVsdDpxbD0hMX1icmVhaztjYXNlInBhZ2VicmVha3MiOnN3aXRjaChvZVszXSl7Y2FzZSJjb2xicmVha3MiOmNhc2UiY29sYnJlYWsiOmNhc2Uicm93YnJlYWtzIjpjYXNlInJvd2JyZWFrIjpjYXNlImNvbHN0YXJ0Ijpj'@; put 'YXNlImNvbGVuZCI6Y2FzZSJyb3dlbmQiOmJyZWFrO2RlZmF1bHQ6cWw9ITF9YnJlYWs7Y2FzZSJhdXRvZmlsdGVyIjpzd2l0Y2gob2VbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6Y2FzZSJhdXRvZmlsdGVyY29uZGl0aW9uIjpjYXNlImF1dG9maWx0ZXJhbmQiOmNhc2UiYXV0b2ZpbHRl'@; put 'cm9yIjpicmVhaztkZWZhdWx0OnFsPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKG9lWzNdKXtjYXNlImlkIjpjYXNlImF1dG9mb3JtYXRmb250IjpjYXNlImF1dG9mb3JtYXRwYXR0ZXJuIjpjYXNlInF1ZXJ5c291cmNlIjpjYXNlInF1ZXJ5dHlwZSI6Y2FzZSJlbmFibGVyZWRp'@; put 'cmVjdGlvbnMiOmNhc2UicmVmcmVzaGVkaW54bDkiOmNhc2UidXJsc3RyaW5nIjpjYXNlImh0bWx0YWJsZXMiOmNhc2UiY29ubmVjdGlvbiI6Y2FzZSJjb21tYW5kdGV4dCI6Y2FzZSJyZWZyZXNoaW5mbyI6Y2FzZSJub3RpdGxlcyI6Y2FzZSJuZXh0aWQiOmNhc2UiY29sdW1uaW5mbyI6Y2Fz'@; put 'ZSJvdmVyd3JpdGVjZWxscyI6Y2FzZSJkb25vdHByb21wdGZvcmZpbGUiOmNhc2UidGV4dHdpemFyZHNldHRpbmdzIjpjYXNlInNvdXJjZSI6Y2FzZSJudW1iZXIiOmNhc2UiZGVjaW1hbCI6Y2FzZSJ0aG91c2FuZHNlcGFyYXRvciI6Y2FzZSJ0cmFpbGluZ21pbnVzbnVtYmVycyI6Y2FzZSJm'@; put 'b3JtYXRzZXR0aW5ncyI6Y2FzZSJmaWVsZHR5cGUiOmNhc2UiZGVsaW1pdGVycyI6Y2FzZSJ0YWIiOmNhc2UiY29tbWEiOmNhc2UiYXV0b2Zvcm1hdG5hbWUiOmNhc2UidmVyc2lvbmxhc3RlZGl0IjpjYXNlInZlcnNpb25sYXN0cmVmcmVzaCI6YnJlYWs7ZGVmYXVsdDpxbD0hMX1icmVhaztj'@; put 'YXNlImRhdGF2YWxpZGF0aW9uIjpzd2l0Y2gob2VbM10pe2Nhc2UicmFuZ2UiOk9pLnJlZj1vZTticmVhaztjYXNlInR5cGUiOmNhc2UibWluIjpjYXNlIm1heCI6Y2FzZSJzb3J0IjpjYXNlImRlc2NlbmRpbmciOmNhc2Uib3JkZXIiOmNhc2UiY2FzZXNlbnNpdGl2ZSI6Y2FzZSJ2YWx1ZSI6'@; put 'Y2FzZSJlcnJvcnN0eWxlIjpjYXNlImVycm9ybWVzc2FnZSI6Y2FzZSJlcnJvcnRpdGxlIjpjYXNlImlucHV0bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJpbnB1dGhpZGUiOmNhc2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2VibGFu'@; put 'ayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6Y2FzZSJjZWxscmFuZ2VsaXN0IjpicmVhaztkZWZhdWx0OnFsPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25kaXRpb25hbGZvcm1hdHRpbmciOnN3aXRjaChvZVszXSl7Y2FzZSJyYW5nZSI6Y2FzZSJ0eXBl'@; put 'IjpjYXNlIm1pbiI6Y2FzZSJtYXgiOmNhc2Uic29ydCI6Y2FzZSJkZXNjZW5kaW5nIjpjYXNlIm9yZGVyIjpjYXNlImNhc2VzZW5zaXRpdmUiOmNhc2UidmFsdWUiOmNhc2UiZXJyb3JzdHlsZSI6Y2FzZSJlcnJvcm1lc3NhZ2UiOmNhc2UiZXJyb3J0aXRsZSI6Y2FzZSJjZWxscmFuZ2VsaXN0'@; put 'IjpjYXNlImlucHV0bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJpbnB1dGhpZGUiOmNhc2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2VibGFuayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6YnJlYWs7ZGVm'@; put 'YXVsdDpxbD0hMX1icmVhaztjYXNlIm1hcGluZm8iOmNhc2Uic2NoZW1hIjpjYXNlImRhdGEiOnN3aXRjaChvZVszXSl7Y2FzZSJtYXAiOmNhc2UiZW50cnkiOmNhc2UicmFuZ2UiOmNhc2UieHBhdGgiOmNhc2UiZmllbGQiOmNhc2UieHNkdHlwZSI6Y2FzZSJmaWx0ZXJvbiI6Y2FzZSJhZ2dy'@; put 'ZWdhdGUiOmNhc2UiZWxlbWVudHR5cGUiOmNhc2UiYXR0cmlidXRldHlwZSI6Y2FzZSJzY2hlbWEiOmNhc2UiZWxlbWVudCI6Y2FzZSJjb21wbGV4dHlwZSI6Y2FzZSJkYXRhdHlwZSI6Y2FzZSJhbGwiOmNhc2UiYXR0cmlidXRlIjpjYXNlImV4dGVuZHMiOmNhc2Uicm93IjpicmVhaztkZWZh'@; put 'dWx0OnFsPSExfWJyZWFrO2Nhc2Uic21hcnR0YWdzIjpicmVhaztkZWZhdWx0OnFsPSExfWlmKHFsfHxvZVszXS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZighZGVbZGUubGVuZ3RoLTFdWzFdKXRocm93IlVucmVjb2duaXplZCB0YWc6ICIrb2VbM10rInwiK2RlLmpvaW4oInwiKTtpZigi'@; put 'Y3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIj09PWRlW2RlLmxlbmd0aC0xXVswXSl7aWYoIi8+Ij09PW9lWzBdLnNsaWNlKC0yKSlicmVhazsiLyI9PT1vZVsxXT9CeShncixZYSxfaSxULnNsaWNlKHFuLG9lLmluZGV4KSk6KF9pPW9lLHFuPW9lLmluZGV4K29lWzBdLmxlbmd0aCk7YnJlYWt9'@; put 'aWYobS5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIitvZVszXSsifCIrZGUuam9pbigifCIpfXZhciB6ZD17fTtyZXR1cm4hbS5ib29rU2hlZXRzJiYhbS5ib29rUHJvcHMmJih6ZC5TaGVldHM9TmUpLHpkLlNoZWV0TmFtZXM9QmUsemQuV29ya2Jvb2s9YmksemQuU1NGPUkuZ2V0X3Rh'@; put 'YmxlKCksemQuUHJvcHM9c3IsemQuQ3VzdHByb3BzPWdyLHpkLlNoZWV0cyYmemQuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKExoKXt2YXIgZ2M9emQuU2hlZXRzW0xoXTtnY1siIW1lcmdlcyJdJiZnY1siIW1lcmdlcyJdLmZvckVhY2goZnVuY3Rpb24oTnQpeyJzdHJpbmciPT10eXBl'@; put 'b2YgTnQmJihOdD12LnV0aWxzLmRlY29kZV9yYW5nZShOdCkpO3ZhciBobj12LnV0aWxzLmVuY29kZV9jZWxsKE50LnMpLFBuPUFycmF5LmlzQXJyYXkoZ2MpPyhnY1tOdC5zLnJdfHxbXSlbTnQucy5jXTpnY1tobl07UG4mJlBuLnMmJihudWxsIT1Qbi5zLnRvcCYmVTEuc2hlZXRfc2V0X3Jh'@; put 'bmdlX3N0eWxlKGdjLE50LHt0b3A6UG4ucy50b3B9KSxudWxsIT1Qbi5zLmJvdHRvbSYmVTEuc2hlZXRfc2V0X3JhbmdlX3N0eWxlKGdjLE50LHtib3R0b206UG4ucy5ib3R0b219KSxudWxsIT1Qbi5zLmxlZnQmJlUxLnNoZWV0X3NldF9yYW5nZV9zdHlsZShnYyxOdCx7bGVmdDpQbi5zLmxl'@; put 'ZnR9KSxudWxsIT1Qbi5zLnJpZ2h0JiZVMS5zaGVldF9zZXRfcmFuZ2Vfc3R5bGUoZ2MsTnQse3JpZ2h0OlBuLnMucmlnaHR9KSl9KX0pLHpkfWZ1bmN0aW9uIEpTKGQsXyl7c3dpdGNoKElSKF89X3x8e30pLF8udHlwZXx8ImJhc2U2NCIpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gankoQ2UuZGVj'@; put 'b2RlKGQpLF8pO2Nhc2UiYmluYXJ5IjpjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjpyZXR1cm4gankoZCxfKTtjYXNlImFycmF5IjpyZXR1cm4gankoTShkKSxfKX19ZnVuY3Rpb24gVXkoZCl7cmV0dXJuIFZyKCJOYW1lZFJhbmdlIixudWxsLHsic3M6TmFtZSI6ZC5OYW1lLCJzczpSZWZlcnNU'@; put 'byI6Ij0iK2hrKGQuUmVmLHtyOjAsYzowfSl9KX1mdW5jdGlvbiBMZWUoZCxfLG0sVCxQLFEsc2Upe2lmKCFkfHxudWxsPT1kLnYmJm51bGw9PWQuZiYmIVQuc2hlZXRTdHVicylyZXR1cm4iIjt2YXIgb2U9e307aWYoZC5mJiYob2VbInNzOkZvcm11bGEiXT0iPSIrQmkoaGsoZC5mLHNlKSkp'@; put 'LGQuRiYmZC5GLnNsaWNlKDAsXy5sZW5ndGgpPT1fKXt2YXIgZGU9SXMoZC5GLnNsaWNlKF8ubGVuZ3RoKzEpKTtvZVsic3M6QXJyYXlSYW5nZSJdPSJSQzpSIisoZGUucj09c2Uucj8iIjoiWyIrKGRlLnItc2UucikrIl0iKSsiQyIrKGRlLmM9PXNlLmM/IiI6IlsiKyhkZS5jLXNlLmMpKyJd'@; put 'Iil9aWYoZC5sJiZkLmwuVGFyZ2V0JiYob2VbInNzOkhSZWYiXT1CaShkLmwuVGFyZ2V0KSxkLmwuVG9vbHRpcCYmKG9lWyJ4OkhSZWZTY3JlZW5UaXAiXT1CaShkLmwuVG9vbHRpcCkpKSxtWyIhbWVyZ2VzIl0pZm9yKHZhciBMZT1tWyIhbWVyZ2VzIl0sTmU9MDtOZSE9TGUubGVuZ3RoOysr'@; put 'TmUpTGVbTmVdLnMuYyE9c2UuY3x8TGVbTmVdLnMuciE9c2Uucnx8KExlW05lXS5lLmM+TGVbTmVdLnMuYyYmKG9lWyJzczpNZXJnZUFjcm9zcyJdPUxlW05lXS5lLmMtTGVbTmVdLnMuYyksTGVbTmVdLmUucj5MZVtOZV0ucy5yJiYob2VbInNzOk1lcmdlRG93biJdPUxlW05lXS5lLnItTGVb'@; put 'TmVdLnMucikpO3ZhciBCZT0iIixaZT0iIjtzd2l0Y2goZC50KXtjYXNlInoiOmlmKCFULnNoZWV0U3R1YnMpcmV0dXJuIiI7YnJlYWs7Y2FzZSJuIjpCZT0iTnVtYmVyIixaZT1TdHJpbmcoZC52KTticmVhaztjYXNlImIiOkJlPSJCb29sZWFuIixaZT1kLnY/IjEiOiIwIjticmVhaztjYXNl'@; put 'ImUiOkJlPSJFcnJvciIsWmU9bmxbZC52XTticmVhaztjYXNlImQiOkJlPSJEYXRlVGltZSIsWmU9bmV3IERhdGUoZC52KS50b0lTT1N0cmluZygpLG51bGw9PWQueiYmKGQuej1kLnp8fEkuX3RhYmxlWzE0XSk7YnJlYWs7Y2FzZSJzIjpCZT0iU3RyaW5nIixaZT1fcyhkLnZ8fCIiKX12YXIg'@; put 'bnQ9QTIoVC5jZWxsWGZzLG51bGwsZCxUKTtvZVsic3M6U3R5bGVJRCJdPSJzIisoMjErbnQpLG9lWyJzczpJbmRleCJdPXNlLmMrMTt2YXIgbXQ9bnVsbCE9ZC52P1plOiIiLFFlPSJ6Ij09ZC50PyIiOmQuUj9mdW5jdGlvbiBEZWUoZCl7cmV0dXJuJzxzczpEYXRhIHNzOlR5cGU9IlN0cmlu'@; put 'ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPicrZC5tYXAoZnVuY3Rpb24obSl7dmFyIFQ9X3MobS52KTtyZXR1cm4gbS5zJiYobS5zLmJvbGQmJihUPSI8Qj4iK1QrIjwvQj4iKSxtLnMuaXRhbGljJiYoVD0iPEk+IitUKyI8L0k+IiksbS5zLnN0cmlrZSYmKFQ9'@; put 'IjxTPiIrVCsiPC9TPiIpLG0ucy51bmRlcmxpbmUmJihUPSI8VT4iK1QrIjwvVT4iKSwic3VwZXIiPT1tLnMudmFsaWduJiYoVD0iPFN1cD4iK1QrIjwvU3VwPiIpLCJzdWIiPT1tLnMudmFsaWduJiYoVD0iPFN1Yj4iK1QrIjwvU3ViPiIpLChtLnMubmFtZXx8bS5zLnN6fHxtLnMuY29sb3Im'@; put 'Jm51bGwhPW0ucy5jb2xvci5yZ2IpJiYoVD1bIjxGb250IixtLnMubmFtZT8nIGh0bWw6RmFjZT0iJyttLnMubmFtZSsnIic6IiIsbS5zLnN6PycgaHRtbDpTaXplPSInK20ucy5zeisnIic6IiIsbS5zLmNvbG9yPycgaHRtbDpDb2xvcj0iIycrKCIwMDAwMDAiKygibnVtYmVyIj09dHlwZW9m'@; put 'IG0ucy5jb2xvci5yZ2I/bS5zLmNvbG9yLnJnYi50b1N0cmluZygxNik6bS5zLmNvbG9yLnJnYikpLnNsaWNlKC02KSsnIic6IiIsIj4iLFQsIjwvRm9udD4iXS5qb2luKCIiKSkpLFR9KS5qb2luKCIiKSsiPC9EYXRhPiJ9KGQuUik6JzxEYXRhIHNzOlR5cGU9IicrQmUrJyI+JyttdCsiPC9E'@; put 'YXRhPiI7cmV0dXJuKGQuY3x8W10pLmxlbmd0aD4wJiYoUWUrPWZ1bmN0aW9uIE5CKGQpe3JldHVybiBkLm1hcChmdW5jdGlvbihfKXt2YXIgVD1Wcigic3M6RGF0YSIsQ2woXy50fHwiIikse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIn0pO3JldHVybiBWcigiQ29t'@; put 'bWVudCIsVCx7InNzOkF1dGhvciI6Xy5hfSl9KS5qb2luKCIiKX0oZC5jKSksVnIoIkNlbGwiLFFlLG9lKX1mdW5jdGlvbiBGQihkLF8pe3ZhciBtPSc8Um93IHNzOkluZGV4PSInKyhkKzEpKyciJztyZXR1cm4gXyYmKF8uaHB4JiYhXy5ocHQmJihfLmhwdD1iOChfLmhweCkpLF8uaHB0JiYo'@; put 'bSs9JyBzczpBdXRvRml0SGVpZ2h0PSIwIiBzczpIZWlnaHQ9IicrXy5ocHQrJyInKSxfLmhpZGRlbiYmKG0rPScgc3M6SGlkZGVuPSIxIicpKSxtKyI+In1mdW5jdGlvbiBZOShkLF8sbSl7dmFyIFQ9W10sUT1tLlNoZWV0c1ttLlNoZWV0TmFtZXNbZF1dLHNlPVE/ZnVuY3Rpb24gZUUoZCxf'@; put 'LG0sVCl7aWYoIWR8fCEoKFR8fHt9KS5Xb3JrYm9va3x8e30pLk5hbWVzKXJldHVybiIiO2Zvcih2YXIgUD1ULldvcmtib29rLk5hbWVzLFE9W10sc2U9MDtzZTxQLmxlbmd0aDsrK3NlKXt2YXIgb2U9UFtzZV07b2UuU2hlZXQ9PW0mJihvZS5OYW1lLm1hdGNoKC9eX3hsZm5cLi8pfHxRLnB1'@; put 'c2goVXkob2UpKSl9cmV0dXJuIFEuam9pbigiIil9KFEsMCxkLG0pOiIiO3JldHVybiBzZS5sZW5ndGg+MCYmVC5wdXNoKCI8TmFtZXM+IitzZSsiPC9OYW1lcz4iKSxzZT1RP2Z1bmN0aW9uIHRFKGQsXyl7aWYoIWRbIiFyZWYiXSlyZXR1cm4iIjt2YXIgUD15dChkWyIhcmVmIl0pLFE9ZFsi'@; put 'IW1lcmdlcyJdfHxbXSxzZT0wLG9lPVtdO2RbIiFjb2xzIl0mJmRbIiFjb2xzIl0uZm9yRWFjaChmdW5jdGlvbihmdCxrdCl7QjAoZnQpO3ZhciBidD0hIWZ0LndpZHRoLEV0PU9rKGt0LGZ0KSxWdD17InNzOkluZGV4IjprdCsxfTtidCYmKFZ0WyJzczpXaWR0aCJdPWY1KEV0LndpZHRoKSks'@; put 'ZnQuaGlkZGVuJiYoVnRbInNzOkhpZGRlbiJdPSIxIiksb2UucHVzaChWcigiQ29sdW1uIixudWxsLFZ0KSl9KTtmb3IodmFyIGRlPUFycmF5LmlzQXJyYXkoZCksTGU9UC5zLnI7TGU8PVAuZS5yOysrTGUpe2Zvcih2YXIgTmU9W0ZCKExlLChkWyIhcm93cyJdfHxbXSlbTGVdKV0sQmU9UC5z'@; put 'LmM7QmU8PVAuZS5jOysrQmUpe3ZhciBaZT0hMTtmb3Ioc2U9MDtzZSE9US5sZW5ndGg7KytzZSlpZighKFFbc2VdLnMuYz5CZXx8UVtzZV0ucy5yPkxlfHxRW3NlXS5lLmM8QmV8fFFbc2VdLmUucjxMZSkpeyhRW3NlXS5zLmMhPUJlfHxRW3NlXS5zLnIhPUxlKSYmKFplPSEwKTticmVha31p'@; put 'ZighWmUpe3ZhciBudD17cjpMZSxjOkJlfSxtdD1xaShudCk7TmUucHVzaChMZWUoZGU/KGRbTGVdfHxbXSlbQmVdOmRbbXRdLG10LGQsXywwLDAsbnQpKX19TmUucHVzaCgiPC9Sb3c+IiksTmUubGVuZ3RoPjImJm9lLnB1c2goTmUuam9pbigiIikpfXJldHVybiBvZS5qb2luKCIiKX0oUSxf'@; put 'KToiIixzZS5sZW5ndGg+MCYmVC5wdXNoKCI8VGFibGU+IitzZSsiPC9UYWJsZT4iKSxULnB1c2goZnVuY3Rpb24gSWVlKGQsXyxtLFQpe2lmKCFkKXJldHVybiIiO3ZhciBQPVtdO2lmKGRbIiFtYXJnaW5zIl0mJihQLnB1c2goIjxQYWdlU2V0dXA+IiksZFsiIW1hcmdpbnMiXS5oZWFkZXIm'@; put 'JlAucHVzaChWcigiSGVhZGVyIixudWxsLHsieDpNYXJnaW4iOmRbIiFtYXJnaW5zIl0uaGVhZGVyfSkpLGRbIiFtYXJnaW5zIl0uZm9vdGVyJiZQLnB1c2goVnIoIkZvb3RlciIsbnVsbCx7Ing6TWFyZ2luIjpkWyIhbWFyZ2lucyJdLmZvb3Rlcn0pKSxQLnB1c2goVnIoIlBhZ2VNYXJnaW5z'@; put 'IixudWxsLHsieDpCb3R0b20iOmRbIiFtYXJnaW5zIl0uYm90dG9tfHwiMC43NSIsIng6TGVmdCI6ZFsiIW1hcmdpbnMiXS5sZWZ0fHwiMC43IiwieDpSaWdodCI6ZFsiIW1hcmdpbnMiXS5yaWdodHx8IjAuNyIsIng6VG9wIjpkWyIhbWFyZ2lucyJdLnRvcHx8IjAuNzUifSkpLFAucHVzaCgi'@; put 'PC9QYWdlU2V0dXA+IikpLFQmJlQuV29ya2Jvb2smJlQuV29ya2Jvb2suU2hlZXRzJiZULldvcmtib29rLlNoZWV0c1ttXSlpZihULldvcmtib29rLlNoZWV0c1ttXS5IaWRkZW4pUC5wdXNoKFZyKCJWaXNpYmxlIiwxPT1ULldvcmtib29rLlNoZWV0c1ttXS5IaWRkZW4/IlNoZWV0SGlkZGVu'@; put 'IjoiU2hlZXRWZXJ5SGlkZGVuIix7fSkpO2Vsc2V7Zm9yKHZhciBRPTA7UTxtJiYoIVQuV29ya2Jvb2suU2hlZXRzW1FdfHxULldvcmtib29rLlNoZWV0c1tRXS5IaWRkZW4pOysrUSk7UT09bSYmUC5wdXNoKCI8U2VsZWN0ZWQvPiIpfWlmKCgoKChUfHx7fSkuV29ya2Jvb2t8fHt9KS5WaWV3'@; put 'c3x8W10pWzBdfHx7fSkuUlRMJiZQLnB1c2goIjxEaXNwbGF5UmlnaHRUb0xlZnQvPiIpLF9uKGRbIiFncmlkbGluZXMiXSkmJlAucHVzaCgiPERvTm90RGlzcGxheUdyaWRsaW5lcy8+IiksZFsiIWZyZWV6ZSJdKXtQLnB1c2goIjxGcmVlemVQYW5lcy8+IiksUC5wdXNoKCI8RnJvemVuTm9T'@; put 'cGxpdC8+Iik7dmFyIHNlPUlzKGRbIiFmcmVlemUiXSk7c2Uucj4wJiYoUC5wdXNoKFVvKCJTcGxpdEhvcml6b250YWwiLCIiK3NlLnIpKSxQLnB1c2goVW8oIlRvcFJvd0JvdHRvbVBhbmUiLCIiK3NlLnIpKSksc2UuYz4wJiYoUC5wdXNoKFVvKCJTcGxpdFZlcnRpY2FsIiwiIitzZS5jKSks'@; put 'UC5wdXNoKFVvKCJMZWZ0Q29sdW1uUmlnaHRQYW5lIiwiIitzZS5jKSkpfXJldHVybiBkWyIhcHJvdGVjdCJdJiYoUC5wdXNoKFVvKCJQcm90ZWN0Q29udGVudHMiLCJUcnVlIikpLGRbIiFwcm90ZWN0Il0ub2JqZWN0cyYmUC5wdXNoKFVvKCJQcm90ZWN0T2JqZWN0cyIsIlRydWUiKSksZFsi'@; put 'IXByb3RlY3QiXS5zY2VuYXJpb3MmJlAucHVzaChVbygiUHJvdGVjdFNjZW5hcmlvcyIsIlRydWUiKSksbnVsbD09ZFsiIXByb3RlY3QiXS5zZWxlY3RMb2NrZWRDZWxsc3x8ZFsiIXByb3RlY3QiXS5zZWxlY3RMb2NrZWRDZWxscz9udWxsIT1kWyIhcHJvdGVjdCJdLnNlbGVjdFVubG9ja2Vk'@; put 'Q2VsbHMmJiFkWyIhcHJvdGVjdCJdLnNlbGVjdFVubG9ja2VkQ2VsbHMmJlAucHVzaChVbygiRW5hYmxlU2VsZWN0aW9uIiwiVW5sb2NrZWRDZWxscyIpKTpQLnB1c2goVW8oIkVuYWJsZVNlbGVjdGlvbiIsIk5vU2VsZWN0aW9uIikpLFtbImZvcm1hdENlbGxzIiwiQWxsb3dGb3JtYXRDZWxs'@; put 'cyJdLFsiZm9ybWF0Q29sdW1ucyIsIkFsbG93U2l6ZUNvbHMiXSxbImZvcm1hdFJvd3MiLCJBbGxvd1NpemVSb3dzIl0sWyJpbnNlcnRDb2x1bW5zIiwiQWxsb3dJbnNlcnRDb2xzIl0sWyJpbnNlcnRSb3dzIiwiQWxsb3dJbnNlcnRSb3dzIl0sWyJpbnNlcnRIeXBlcmxpbmtzIiwiQWxsb3dJ'@; put 'bnNlcnRIeXBlcmxpbmtzIl0sWyJkZWxldGVDb2x1bW5zIiwiQWxsb3dEZWxldGVDb2xzIl0sWyJkZWxldGVSb3dzIiwiQWxsb3dEZWxldGVSb3dzIl0sWyJzb3J0IiwiQWxsb3dTb3J0Il0sWyJhdXRvRmlsdGVyIiwiQWxsb3dGaWx0ZXIiXSxbInBpdm90VGFibGVzIiwiQWxsb3dVc2VQaXZv'@; put 'dFRhYmxlcyJdXS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXtkWyIhcHJvdGVjdCJdW29lWzBdXSYmUC5wdXNoKCI8IitvZVsxXSsiLz4iKX0pKSwwPT1QLmxlbmd0aD8iIjpWcigiV29ya3NoZWV0T3B0aW9ucyIsUC5qb2luKCIiKSx7eG1sbnM6VnVfeH0pfShRLDAsZCxtKSksVC5qb2luKCIiKX1m'@; put 'dW5jdGlvbiBPZWUoZCxfKXtffHwoXz17fSksZC5TU0Z8fChkLlNTRj1JLmdldF90YWJsZSgpKSxkLlNTRiYmKHVlKEkpLEkubG9hZF90YWJsZShkLlNTRiksXy5yZXZzc2Y9aGUoZC5TU0YpLF8ucmV2c3NmW2QuU1NGWzY1NTM1XV09MCxfLnNzZj1kLlNTRixkLlN0eWxlcz17Rm9udHM6Xy5G'@; put 'b250cz1be3N6OjEyLGNvbG9yOnt0aGVtZToxLHJnYjoiMDAwMDAwIn0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9XSxGaWxsczpfLkZpbGxzPVt7cGF0dGVyblR5cGU6Im5vbmUifSx7cGF0dGVyblR5cGU6ImdyYXkxMjUifV0sQm9yZGVyczpfLkJvcmRlcnM9W3t9'@; put 'XX0sXy5jZWxsWGZzPVtdLF8uY2VsbFN0eWxlWGZzPVt7bmFtZToiTm9ybWFsIn1dLEEyKF8uY2VsbFhmcyxudWxsLHt9LHtyZXZzc2Y6e0dlbmVyYWw6MH19KSk7dmFyIG09W107bS5wdXNoKGZ1bmN0aW9uIHZSKGQsXyl7dmFyIG09W107cmV0dXJuIGQuUHJvcHMmJm0ucHVzaChmdW5jdGlv'@; put 'biB1OChkLF8pe3ZhciBtPVtdO3JldHVybiBGZShnMykubWFwKGZ1bmN0aW9uKFQpe2Zvcih2YXIgUD0wO1A8WGEubGVuZ3RoOysrUClpZihYYVtQXVsxXT09VClyZXR1cm4gWGFbUF07Zm9yKFA9MDtQPGZjLmxlbmd0aDsrK1ApaWYoZmNbUF1bMV09PVQpcmV0dXJuIGZjW1BdO3Rocm93IFR9'@; put 'KS5mb3JFYWNoKGZ1bmN0aW9uKFQpe2lmKG51bGwhPWRbVFsxXV0pe3ZhciBQPV8mJl8uUHJvcHMmJm51bGwhPV8uUHJvcHNbVFsxXV0/Xy5Qcm9wc1tUWzFdXTpkW1RbMV1dOyJkYXRlIj09PVRbMl0mJihQPW5ldyBEYXRlKFApLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCpaLywiWiIp'@; put 'KSwibnVtYmVyIj09dHlwZW9mIFA/UD1TdHJpbmcoUCk6ITA9PT1QfHwhMT09PVA/UD1QPyIxIjoiMCI6UCBpbnN0YW5jZW9mIERhdGUmJihQPW5ldyBEYXRlKFApLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCpaLywiIikpLG0ucHVzaChVbyhnM1tUWzFdXXx8VFsxXSxQKSl9fSksVnIo'@; put 'IkRvY3VtZW50UHJvcGVydGllcyIsbS5qb2luKCIiKSx7eG1sbnM6VnVfb30pfShkLlByb3BzLF8pKSxkLkN1c3Rwcm9wcyYmbS5wdXNoKGZ1bmN0aW9uIGJmKGQsXyl7dmFyIG09WyJXb3Jrc2hlZXRzIiwiU2hlZXROYW1lcyJdLFQ9IkN1c3RvbURvY3VtZW50UHJvcGVydGllcyIsUD1bXTty'@; put 'ZXR1cm4gZCYmRmUoZCkuZm9yRWFjaChmdW5jdGlvbihRKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxRKSl7Zm9yKHZhciBzZT0wO3NlPFhhLmxlbmd0aDsrK3NlKWlmKFE9PVhhW3NlXVsxXSlyZXR1cm47Zm9yKHNlPTA7c2U8ZmMubGVuZ3RoOysrc2UpaWYo'@; put 'UT09ZmNbc2VdWzFdKXJldHVybjtmb3Ioc2U9MDtzZTxtLmxlbmd0aDsrK3NlKWlmKFE9PW1bc2VdKXJldHVybjt2YXIgb2U9ZFtRXSxkZT0ic3RyaW5nIjsibnVtYmVyIj09dHlwZW9mIG9lPyhkZT0iZmxvYXQiLG9lPVN0cmluZyhvZSkpOiEwPT09b2V8fCExPT09b2U/KGRlPSJib29sZWFu'@; put 'IixvZT1vZT8iMSI6IjAiKTpvZT1TdHJpbmcob2UpLFAucHVzaChWcihNcihRKSxvZSx7ImR0OmR0IjpkZX0pKX19KSxfJiZGZShfKS5mb3JFYWNoKGZ1bmN0aW9uKFEpe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfLFEpJiYoIWR8fCFPYmplY3QucHJvdG90eXBl'@; put 'Lmhhc093blByb3BlcnR5LmNhbGwoZCxRKSkpe3ZhciBzZT1fW1FdLG9lPSJzdHJpbmciOyJudW1iZXIiPT10eXBlb2Ygc2U/KG9lPSJmbG9hdCIsc2U9U3RyaW5nKHNlKSk6ITA9PT1zZXx8ITE9PT1zZT8ob2U9ImJvb2xlYW4iLHNlPXNlPyIxIjoiMCIpOnNlIGluc3RhbmNlb2YgRGF0ZT8o'@; put 'b2U9ImRhdGVUaW1lLnR6IixzZT1zZS50b0lTT1N0cmluZygpKTpzZT1TdHJpbmcoc2UpLFAucHVzaChWcihNcihRKSxzZSx7ImR0OmR0IjpvZX0pKX19KSwiPCIrVCsnIHhtbG5zPSInK1Z1X28rJyI+JytQLmpvaW4oIiIpKyI8LyIrVCsiPiJ9KGQuUHJvcHMsZC5DdXN0cHJvcHMpKSxtLmpv'@; put 'aW4oIiIpfShkLF8pKSxtLnB1c2goIiIpLG0ucHVzaCgiIiksbS5wdXNoKCIiKTtmb3IodmFyIFQ9MDtUPGQuU2hlZXROYW1lcy5sZW5ndGg7KytUKW0ucHVzaChWcigiV29ya3NoZWV0IixZOShULF8sZCkseyJzczpOYW1lIjpCaShkLlNoZWV0TmFtZXNbVF0pfSkpO3JldHVybiBtWzJdPWZ1'@; put 'bmN0aW9uIE9CKGQsXyl7dmFyIFQ9W1snPFN0eWxlIHNzOklEPSJEZWZhdWx0IiBzczpOYW1lPSJOb3JtYWwiPicsJzxBbGlnbm1lbnQgc3M6VmVydGljYWw9IkJvdHRvbSIvPicsIjxCb3JkZXJzLz4iLCc8Rm9udCBzczpGb250TmFtZT0iQ2FsaWJyaSIgeDpGYW1pbHk9IlN3aXNzIiBzczpT'@; put 'aXplPSIxMiIgc3M6Q29sb3I9IiMwMDAwMDAiLz4nLCI8SW50ZXJpb3IvPiIsIjxOdW1iZXJGb3JtYXQvPiIsIjxQcm90ZWN0aW9uLz4iLCI8L1N0eWxlPiJdLmpvaW4oIiIpXTtyZXR1cm4gXy5jZWxsWGZzLmZvckVhY2goZnVuY3Rpb24oUCxRKXt2YXIgc2U9W107aWYoUC5hbGlnbm1lbnQp'@; put 'e3ZhciBvZT17fTtQLmFsaWdubWVudC5zaHJpbmtUb0ZpdCYmKG9lWyJzczpTaHJpbmtUb0ZpdCJdPSIxIiksUC5hbGlnbm1lbnQud3JhcFRleHQmJihvZVsic3M6V3JhcFRleHQiXT0iMSIpLFAuYWxpZ25tZW50LnZlcnRpY2FsJiYob2VbInNzOlZlcnRpY2FsIl09WnQoUC5hbGlnbm1lbnQu'@; put 'dmVydGljYWwpKSxQLmFsaWdubWVudC5ob3Jpem9udGFsJiYob2VbInNzOkhvcml6b250YWwiXT1adChQLmFsaWdubWVudC5ob3Jpem9udGFsKSksUC5hbGlnbm1lbnQuaW5kZW50JiYob2VbInNzOkluZGVudCJdPVAuYWxpZ25tZW50LmluZGVudCksUC5hbGlnbm1lbnQudGV4dFJvdGF0aW9u'@; put 'JiYob2VbInNzOlJvdGF0ZSJdPVAuYWxpZ25tZW50LnRleHRSb3RhdGlvbiksc2UucHVzaChWcigiQWxpZ25tZW50IixudWxsLG9lKSl9ZTppZihudWxsIT1QLmZvbnRJZCl7dmFyIGRlPV8uRm9udHNbUC5mb250SWRdO2lmKCFkZSlicmVhayBlO3ZhciBMZT17InNzOkZvbnROYW1lIjoiQ2Fs'@; put 'aWJyaSIsInNzOlNpemUiOiIxMiJ9LE5lPSExO2RlLmJvbGQmJihOZT0hMCxMZVsic3M6Qm9sZCJdPSIxIiksZGUuaXRhbGljJiYoTmU9ITAsTGVbInNzOkl0YWxpYyJdPSIxIiksZGUuc3RyaWtlJiYoTmU9ITAsTGVbInNzOlN0cmlrZVRocm91Z2giXT0iMSIpLG51bGwhPWRlLnVuZGVybGlu'@; put 'ZSYmKE5lPSEwLExlWyJzczpVbmRlcmxpbmUiXT1wUltkZS51bmRlcmxpbmVdfHwoZGUudW5kZXJsaW5lPyJTaW5nbGUiOiJOb25lIikpLG51bGwhPWRlLnN6JiYoTmU9ITAsTGVbInNzOlNpemUiXT1kZS5zeiksbnVsbCE9ZGUubmFtZSYmKE5lPSEwLExlWyJzczpGb250TmFtZSJdPWRlLm5h'@; put 'bWUpLGRlLmNvbG9yJiZudWxsIT1kZS5jb2xvci5yZ2ImJihOZT0hMCxMZVsic3M6Q29sb3IiXT0iIyIrKCJudW1iZXIiPT10eXBlb2YgZGUuY29sb3IucmdiPyIwMDAwMDAiK2RlLmNvbG9yLnJnYi50b1N0cmluZygxNik6ZGUuY29sb3IucmdiKS5zbGljZSgtNikpLFsic3ViIiwic3VwZXIi'@; put 'XS5pbmRleE9mKGRlLnZhbGlnbik+LTEmJihMZVsic3M6VmVydGljYWxBbGlnbiJdPVp0KGRlLnZhbGlnbikrInNjcmlwdCIpLE5lJiZzZS5wdXNoKFZyKCJGb250IixudWxsLExlKSl9ZTppZihQLmZpbGxJZD4wKXt2YXIgQmU9Xy5GaWxsc1tQLmZpbGxJZF07aWYoIUJlfHwhQmUuZmdDb2xv'@; put 'cnx8bnVsbD09QmUuZmdDb2xvci5yZ2IpYnJlYWsgZTtzZS5wdXNoKFZyKCJJbnRlcmlvciIsbnVsbCx7InNzOlBhdHRlcm4iOldYW0JlLnBhdHRlcm5UeXBlXXx8IlNvbGlkIiwic3M6Q29sb3IiOiIjIisoIm51bWJlciI9PXR5cGVvZiBCZS5mZ0NvbG9yLnJnYj8iMDAiK0JlLmZnQ29sb3Iu'@; put 'cmdiLnRvU3RyaW5nKDE2KTpCZS5mZ0NvbG9yLnJnYikuc2xpY2UoLTYpfSkpfXNlLnB1c2goVnIoIk51bWJlckZvcm1hdCIsbnVsbCx7InNzOkZvcm1hdCI6QmkoSS5fdGFibGVbUC5udW1GbXRJZF0pfSkpO3ZhciBaZT17InNzOklEIjoicyIrKDIxK1EpfTtQLnN0eWxlJiYoWmVbInNzOk5h'@; put 'bWUiXT1QLnN0eWxlKSxULnB1c2goVnIoIlN0eWxlIixzZS5qb2luKCIiKSxaZSkpfSksVnIoIlN0eWxlcyIsVC5qb2luKCIiKSl9KDAsXyksbVszXT1mdW5jdGlvbiBfUihkKXtpZighKChkfHx7fSkuV29ya2Jvb2t8fHt9KS5OYW1lcylyZXR1cm4iIjtmb3IodmFyIF89ZC5Xb3JrYm9vay5O'@; put 'YW1lcyxtPVtdLFQ9MDtUPF8ubGVuZ3RoOysrVCl7dmFyIFA9X1tUXTtudWxsPT1QLlNoZWV0JiYoUC5OYW1lLm1hdGNoKC9eX3hsZm5cLi8pfHxtLnB1c2goVXkoUCkpKX1yZXR1cm4gVnIoIk5hbWVzIixtLmpvaW4oIiIpKX0oZCkscG8rVnIoIldvcmtib29rIixtLmpvaW4oIiIpLHt4bWxu'@; put 'czpWdV9zcywieG1sbnM6byI6VnVfbywieG1sbnM6eCI6VnVfeCwieG1sbnM6c3MiOlZ1X3NzLCJ4bWxuczpkdCI6InV1aWQ6QzJGNDEwMTAtNjVCMy0xMWQxLUEyOUYtMDBBQTAwQzE0ODgyIiwieG1sbnM6aHRtbCI6Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAifSl9ZnVuY3Rp'@; put 'b24gUEIoZCxfLG0sVCl7dmFyIFA9bSxRPVtdLHNlPV8uc2xpY2UoXy5sLF8ubCtQKTtpZihUJiZULmVuYyYmVC5lbmMuaW5zaXR1JiZzZS5sZW5ndGg+MClzd2l0Y2goZC5uKXtjYXNlIkJPRiI6Y2FzZSJGaWxlUGFzcyI6Y2FzZSJGaWxlTG9jayI6Y2FzZSJJbnRlcmZhY2VIZHIiOmNhc2Ui'@; put 'UlJESW5mbyI6Y2FzZSJSUkRIZWFkIjpjYXNlIlVzckV4Y2wiOmNhc2UiRU9GIjpULmVuYy5pbnNpdHUoa2Uoe2xlbmd0aDpzZS5sZW5ndGh9KSwic2tpcCIpO2JyZWFrO2Nhc2UiQm91bmRTaGVldDgiOlQuZW5jLmluc2l0dShrZSh7bGVuZ3RoOjR9KSwic2tpcCIpLHNlPUJ1ZmZlci5jb25j'@; put 'YXQoW0J1ZmZlci5mcm9tKHNlLnNsaWNlKDAsNCkpLEJ1ZmZlci5mcm9tKFQuZW5jLmluc2l0dShzZS5zbGljZSg0KSkpXSk7YnJlYWs7ZGVmYXVsdDpzZT1ULmVuYy5pbnNpdHUoc2UpfUFycmF5LmlzQXJyYXkoXykmJiFBcnJheS5pc0FycmF5KHNlKSYmKHNlPUFycmF5LmZyb20oc2UpKSxR'@; put 'LnB1c2goc2UpLF8ubCs9UDtmb3IodmFyIG9lPUc5W0VyKF8sXy5sKV0sZGU9MDtudWxsIT1vZSYmIkNvbnRpbnVlIj09PW9lLm4uc2xpY2UoMCw4KTspUD1FcihfLF8ubCsyKSxkZT1fLmwrNCxUJiZULmVuYyYmVC5lbmMuaW5zaXR1JiZULmVuYy5pbnNpdHUoa2Uoe2xlbmd0aDo0fSksInNr'@; put 'aXAiKSwiQ29udGludWVGcnQiPT1vZS5uP2RlKz00OiJDb250aW51ZUZydCI9PW9lLm4uc2xpY2UoMCwxMSkmJihkZSs9MTIsVCYmVC5lbmMmJlQuZW5jLmluc2l0dSYmVC5lbmMuaW5zaXR1KGtlKHtsZW5ndGg6OH0pLCJza2lwIikpLHNlPV8uc2xpY2UoZGUsXy5sKzQrUCksVCYmVC5lbmMm'@; put 'JlQuZW5jLmluc2l0dSYmc2UubGVuZ3RoPjAmJihzZT1ULmVuYy5pbnNpdHUoc2UpKSxRLnB1c2goc2UpLF8ubCs9NCtQLG9lPUc5W0VyKF8sXy5sKV07dmFyIExlPUcoUSk7T2woTGUsMCk7dmFyIE5lPTA7TGUubGVucz1bXTtmb3IodmFyIEJlPTA7QmU8US5sZW5ndGg7KytCZSlMZS5sZW5z'@; put 'LnB1c2goTmUpLE5lKz1RW0JlXS5sZW5ndGg7aWYoTGUubGVuZ3RoPG0pdGhyb3ciWExTIFJlY29yZCAiKyhkJiZkLm58fCI/PyIpKyIgVHJ1bmNhdGVkOiAiK0xlLmxlbmd0aCsiIDwgIittO3JldHVybiBkLmYoTGUsTGUubGVuZ3RoLFQpfWZ1bmN0aW9uIEJnKGQsXyxtKXtpZigieiIhPT1k'@; put 'LnQmJmQuWEYpe3ZhciBUPTA7dHJ5e1Q9ZC56fHxkLlhGLm51bUZtdElkfHwwLF8uY2VsbE5GJiYoZC56PUkuX3RhYmxlW1RdKX1jYXRjaChRKXtpZihfLldURil0aHJvdyBRfWlmKCFffHwhMSE9PV8uY2VsbFRleHQpdHJ5e2Qudz0iZSI9PT1kLnQ/ZC53fHxubFtkLnZdOjA9PT1UfHwiR2Vu'@; put 'ZXJhbCI9PVQ/Im4iPT09ZC50PygwfGQudik9PT1kLnY/SS5fZ2VuZXJhbF9pbnQoZC52KTpJLl9nZW5lcmFsX251bShkLnYpOkkuX2dlbmVyYWwoZC52KTpJLmZvcm1hdChULGQudix7ZGF0ZTE5MDQ6ISFtLGRhdGVORjpfJiZfLmRhdGVORn0pfWNhdGNoKFEpe2lmKF8uV1RGKXRocm93IFF9'@; put 'aWYoXy5jZWxsRGF0ZXMmJlQmJiJuIj09ZC50JiZJLmlzX2RhdGUoSS5fdGFibGVbVF18fFN0cmluZyhUKSkpe3ZhciBQPUkucGFyc2VfZGF0ZV9jb2RlKGQudik7UCYmKGQudD0iZCIsZC52PW5ldyBEYXRlKFAueSxQLm0tMSxQLmQsUC5ILFAuTSxQLlMsUC51KSl9fX1mdW5jdGlvbiB5Uihk'@; put 'LF8sbSl7cmV0dXJue3Y6ZCxpeGZlOl8sdDptfX12YXIgRmVlPWZ1bmN0aW9uKGQsXyxtKXtfWyIhb2JqZWN0cyJdPWR9LGo4X1NJPSJlMDg1OWZmMmY5NGY2ODEwYWI5MTA4MDAyYjI3YjNkOSIsajhfRFNJPSIwMmQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZSI7ZnVuY3Rpb24gd1Io'@; put 'ZCxfKXt2YXIgbSxULFAsUTtpZihffHwoXz17fSksSVIoXyksVigpLF8uY29kZXBhZ2UmJngoXy5jb2RlcGFnZSksZC5GdWxsUGF0aHMpe2lmKGFlLmZpbmQoZCwiL2VuY3J5cHRpb24iKSl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7bT1hZS5maW5kKGQs'@; put 'IiFDb21wT2JqIiksVD1hZS5maW5kKGQsIi9Xb3JrYm9vayIpfHxhZS5maW5kKGQsIi9Cb29rIil9ZWxzZXtzd2l0Y2goXy50eXBlKXtjYXNlImJhc2U2NCI6ZD1iKENlLmRlY29kZShkKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmQ9YihkKTticmVhaztjYXNlImJ1ZmZlciI6YnJlYWs7Y2FzZSJh'@; put 'cnJheSI6QXJyYXkuaXNBcnJheShkKXx8KGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZCkpfU9sKGQsMCksVD17Y29udGVudDpkfX1pZihtJiZmdW5jdGlvbiBOZWUoZCl7dmFyIF89e30sbT1kLmNvbnRlbnQ7aWYobS5sPTI4LF8uQW5zaVVzZXJUeXBlPW0ucmVhZF9zaGlmdCgwLCJs'@; put 'cHN0ci1hbnNpIiksXy5BbnNpQ2xpcGJvYXJkRm9ybWF0PWZ1bmN0aW9uIGhsKGQpe3JldHVybiByMShkLDEpfShtKSxtLmxlbmd0aC1tLmw8PTQpcmV0dXJuIF87dmFyIFQ9bS5yZWFkX3NoaWZ0KDQpO2lmKDA9PVR8fFQ+NDB8fChtLmwtPTQsXy5SZXNlcnZlZDE9bS5yZWFkX3NoaWZ0KDAs'@; put 'Imxwc3RyLWFuc2kiKSxtLmxlbmd0aC1tLmw8PTQpfHwxOTA3NTA1NjUyIT09KFQ9bS5yZWFkX3NoaWZ0KDQpKXx8KF8uVW5pY29kZUNsaXBib2FyZEZvcm1hdD1mdW5jdGlvbiBjcyhkKXtyZXR1cm4gcjEoZCwyKX0obSksMD09KFQ9bS5yZWFkX3NoaWZ0KDQpKXx8VD40MCkpcmV0dXJuIF87'@; put 'bS5sLT00LF8uUmVzZXJ2ZWQyPW0ucmVhZF9zaGlmdCgwLCJscHdzdHIiKX0obSksXy5ib29rUHJvcHMmJiFfLmJvb2tTaGVldHMpUD17fTtlbHNle3ZhciBzZT1JZT8iYnVmZmVyIjoiYXJyYXkiO2lmKFQmJlQuY29udGVudClQPWZ1bmN0aW9uIGJSKGQsXyl7dmFyIEJlLG50LFFlLGZ0LEV0'@; put 'LFZ0LG09e29wdHM6e319LFQ9e30sUD1fLmRlbnNlP1tdOnt9LFE9e30sc2U9e30sb2U9bnVsbCxkZT1bXSxMZT0iIixOZT17fSxaZT0iIixrdD17fSxidD1bXSx1bj1bXSxucj1bXSxubj17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfSxWaWV3czpbe31dfSxhcj17fSxqbj17Rm9u'@; put 'dHM6W119LGtuPWZ1bmN0aW9uKHdpKXtyZXR1cm4gd2k8OD93ZFt3aV06d2k8NjQmJm5yW3dpLThdfHx3ZFt3aV19LHNyPWZ1bmN0aW9uKHdpLEtzKXt2YXIgX3UsUXM9d2kuWEYuZGF0YTtRcyYmKFFzLnBhdHRlcm5UeXBlfHxudWxsIT1Rcy5pY3ZGb3JlKSYmS3MmJktzLmNlbGxTdHlsZXMm'@; put 'Jih3aS5zPXt9LHdpLnMucGF0dGVyblR5cGU9UXMucGF0dGVyblR5cGUsd2kuWEYuZm9udCYmSG4od2kucyx3aS5YRi5mb250KSxRcy5mV3JhcCYmKCh3aS5zLmFsaWdubWVudHx8KHdpLnMuYWxpZ25tZW50PXt9KSkud3JhcFRleHQ9ITApLFFzLmZTaHJpbmtUb0ZpdCYmKCh3aS5zLmFsaWdu'@; put 'bWVudHx8KHdpLnMuYWxpZ25tZW50PXt9KSkuc2hyaW5rVG9GaXQ9ITApLFFzLmhhbGlnbiYmKCh3aS5zLmFsaWdubWVudHx8KHdpLnMuYWxpZ25tZW50PXt9KSkuaG9yaXpvbnRhbD1Rcy5oYWxpZ24pLFFzLnZhbGlnbiYmKCh3aS5zLmFsaWdubWVudHx8KHdpLnMuYWxpZ25tZW50PXt9KSku'@; put 'dmVydGljYWw9UXMudmFsaWduKSxRcy5jSW5kZW50JiYoKHdpLnMuYWxpZ25tZW50fHwod2kucy5hbGlnbm1lbnQ9e30pKS5pbmRlbnQ9UXMuY0luZGVudCksNjQhPVFzLmljdkZvcmUmJjY1IT1Rcy5pY3ZCYWNrJiYoKF91PWIzKGtuKFFzLmljdkZvcmUpKSkmJih3aS5zLmZnQ29sb3I9e3Jn'@; put 'YjpfdX0pLChfdT1iMyhrbihRcy5pY3ZCYWNrKSkpJiYod2kucy5iZ0NvbG9yPXtyZ2I6X3V9KSksWyJMZWZ0IiwiUmlnaHQiLCJUb3AiLCJCb3R0b20iXS5mb3JFYWNoKGZ1bmN0aW9uKE1kKXtRc1siZGciK01kXSYmKHdpLnNbTWQudG9Mb3dlckNhc2UoKV09e3N0eWxlOkU4W1FzWyJkZyIr'@; put 'TWRdXSxjb2xvcjp7cmdiOmIzKGtuKFFzWyJpY3YiK01kXSkpfX0pfSkpfSxncj1mdW5jdGlvbih3aSxLcyxRcyl7aWYoIShqaT4xfHxRcy5zaGVldFJvd3MmJndpLnI+PVFzLnNoZWV0Um93cykpe2lmKFFzLmNlbGxTdHlsZXMmJktzLlhGJiZLcy5YRi5kYXRhJiZzcihLcyxRcyksZGVsZXRl'@; put 'IEtzLml4ZmUsZGVsZXRlIEtzLlhGLEJlPXdpLFplPXFpKHdpKSwoIXNlfHwhc2Uuc3x8IXNlLmUpJiYoc2U9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSksd2kucjxzZS5zLnImJihzZS5zLnI9d2kuciksd2kuYzxzZS5zLmMmJihzZS5zLmM9d2kuYyksd2kucisxPnNlLmUuciYmKHNlLmUu'@; put 'cj13aS5yKzEpLHdpLmMrMT5zZS5lLmMmJihzZS5lLmM9d2kuYysxKSxRcy5jZWxsRm9ybXVsYSYmS3MuZilmb3IodmFyIF91PTA7X3U8YnQubGVuZ3RoOysrX3UpaWYoIShidFtfdV1bMF0ucy5jPndpLmN8fGJ0W191XVswXS5zLnI+d2kucnx8YnRbX3VdWzBdLmUuYzx3aS5jfHxidFtfdV1b'@; put 'MF0uZS5yPHdpLnIpKXtLcy5GPWh0KGJ0W191XVswXSksKGJ0W191XVswXS5zLmMhPXdpLmN8fGJ0W191XVswXS5zLnIhPXdpLnIpJiZkZWxldGUgS3MuZixLcy5mJiYoS3MuZj0iIit1MShidFtfdV1bMV0sc2Usd2ksTW4scW4pKTticmVha31Rcy5kZW5zZT8oUFt3aS5yXXx8KFBbd2kucl09'@; put 'W10pLFBbd2kucl1bd2kuY109S3MpOlBbWmVdPUtzfX0scW49e2VuYzohMSxzYmNjaDowLHNuYW1lczpbXSxzaGFyZWRmOmt0LGFycmF5ZjpidCxycnRhYmlkOltdLGxhc3R1c2VyOiIiLGJpZmY6OCxjb2RlcGFnZTowLHdpbmxvY2tlZDowLGNlbGxTdHlsZXM6ISFfJiYhIV8uY2VsbFN0eWxl'@; put 'cyxXVEY6ISFfJiYhIV8ud3RmfTtxbi5wYXNzd29yZD1fLnBhc3N3b3JkP18ucGFzc3dvcmQ6IlZlbHZldFN3ZWF0c2hvcCI7dmFyIE9pLF9pPW51bGwsc289W10sbW89W10sTGk9W10sa3I9W10sX3I9ITEsTW49W107TW4uU2hlZXROYW1lcz1xbi5zbmFtZXMsTW4uc2hhcmVkZj1xbi5zaGFy'@; put 'ZWRmLE1uLmFycmF5Zj1xbi5hcnJheWYsTW4ubmFtZXM9W10sTW4uWFRJPVtdO3ZhciB1byxOcj0iIixqaT0wLGJpPTAsTm89W10sWWE9W107cW4uY29kZXBhZ2U9MTIwMCxIKDEyMDApO2Zvcih2YXIgTXM9ITE7ZC5sPGQubGVuZ3RoLTE7KXt2YXIgZGE9ZC5sLCRhPWQucmVhZF9zaGlmdCgy'@; put 'KTtpZihxbiYmcW4uZW5jJiZxbi5lbmMuaW5zaXR1JiZxbi5lbmMuaW5zaXR1KGtlKFswLDBdKSwiaGVhZGVyLTAiKSwwPT09JGEmJiJFT0YiPT09TnIpYnJlYWs7dmFyIFNhPWQubD09PWQubGVuZ3RoPzA6ZC5yZWFkX3NoaWZ0KDIpO3FuJiZxbi5lbmMmJnFuLmVuYy5pbnNpdHUmJnFuLmVu'@; put 'Yy5pbnNpdHUoa2UoWzAsMF0pLCJsZW5ndGgtMCIpO3ZhciBQaT1HOVskYV07aWYoUGkmJlBpLmYpe2lmKF8uYm9va1NoZWV0cyYmIkJvdW5kU2hlZXQ4Ij09PU5yJiYiQm91bmRTaGVldDgiIT09UGkubilicmVhaztpZihOcj1QaS5uLDI9PT1QaS5yfHwxMj09UGkucil7dmFyIFBjPWQucmVh'@; put 'ZF9zaGlmdCgyKTtpZihTYS09MixxbiYmcW4uZW5jJiZxbi5lbmMuaW5zaXR1JiZxbi5lbmMuaW5zaXR1KGtlKFswLDBdKSksIXFuLmVuYyYmUGMhPT0kYSYmKCgyNTUmUGMpPDw4fFBjPj44KSE9PSRhKXRocm93IG5ldyBFcnJvcigicnQgbWlzbWF0Y2g6ICIrUGMrIiE9IiskYSk7MTI9PVBp'@; put 'LnImJihkLmwrPTEwLFNhLT0xMCxxbiYmcW4uZW5jJiZxbi5lbmMuaW5zaXR1JiZxbi5lbmMuaW5zaXR1KGtlKFswLDAsMCwwLDAsMCwwLDAsMCwwXSkpKX12YXIgeG49UEIoUGksZCxTYSxxbikseGw9UGkubjtpZigwPT1qaSYmIkJPRiIhPXhsKWNvbnRpbnVlO3N3aXRjaCh4bCl7Y2FzZSJE'@; put 'YXRlMTkwNCI6bS5vcHRzLkRhdGUxOTA0PW5uLldCUHJvcHMuZGF0ZTE5MDQ9eG47YnJlYWs7Y2FzZSJXcml0ZVByb3RlY3QiOm0ub3B0cy5Xcml0ZVByb3RlY3Q9ITA7YnJlYWs7Y2FzZSJGaWxlUGFzcyI6aWYocW4uZW5jfHwoZC5sPTAsamk9MCkscW4uZW5jPXhuLCFfLnBhc3N3b3JkJiZu'@; put 'dWxsPT14bi52YWxpZCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7aWYobnVsbD09eG4udmFsaWQpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uIHNjaGVtZSB1bnN1cHBvcnRlZCIpO2lmKCF4bi52YWxpZCl0aHJvdyBuZXcgRXJyb3IoIlBhc3N3b3Jk'@; put 'IGlzIGluY29ycmVjdCIpO2JyZWFrO2Nhc2UiV3JpdGVBY2Nlc3MiOnFuLmxhc3R1c2VyPXhuO2JyZWFrO2Nhc2UiRmlsZVNoYXJpbmciOmNhc2UiVGVtcGxhdGUiOmNhc2UiQm9va0Jvb2wiOmNhc2UiVXNlc0VMRnMiOmNhc2UiTVRSU2V0dGluZ3MiOmNhc2UiVW5jYWxjZWQiOmNhc2UiRXh0'@; put 'U1NUIjpjYXNlIkJvb2tFeHQiOmNhc2UiUmljaFRleHRTdHJlYW0iOmNhc2UiQmtIaW0iOmNhc2UiSW5kZXgiOmNhc2UiUHJvdDRSZXYiOmNhc2UiUHJvdDRSZXZQYXNzIjpicmVhaztjYXNlIkNvZGVQYWdlIjp2YXIgcWw9TnVtYmVyKHhuKTtzd2l0Y2gocWwpe2Nhc2UgMjEwMTA6cWw9MTIw'@; put 'MDticmVhaztjYXNlIDMyNzY4OnFsPTFlNDticmVhaztjYXNlIDMyNzY5OnFsPTEyNTJ9SChxbi5jb2RlcGFnZT1xbCksTXM9ITA7YnJlYWs7Y2FzZSJSUlRhYklkIjpxbi5ycnRhYmlkPXhuO2JyZWFrO2Nhc2UiV2luUHJvdGVjdCI6cW4ud2lubG9ja2VkPXhuO2JyZWFrO2Nhc2UiUmVmcmVz'@; put 'aEFsbCI6Y2FzZSJDYWxjQ291bnQiOmNhc2UiQ2FsY0RlbHRhIjpjYXNlIkNhbGNJdGVyIjpjYXNlIkNhbGNNb2RlIjpjYXNlIkNhbGNQcmVjaXNpb24iOmNhc2UiQ2FsY1NhdmVSZWNhbGMiOm0ub3B0c1t4bF09eG47YnJlYWs7Y2FzZSJDYWxjUmVmTW9kZSI6cW4uQ2FsY1JlZk1vZGU9eG47'@; put 'YnJlYWs7Y2FzZSJGb3JjZUZ1bGxDYWxjdWxhdGlvbiI6bS5vcHRzLkZ1bGxDYWxjPXhuO2JyZWFrO2Nhc2UiV3NCb29sIjp4bi5mRGlhbG9nJiYoUFsiIXR5cGUiXT0iZGlhbG9nIikseG4uZkJlbG93fHwoKFBbIiFvdXRsaW5lIl18fChQWyIhb3V0bGluZSJdPXt9KSkuYWJvdmU9ITApLHhu'@; put 'LmZSaWdodHx8KChQWyIhb3V0bGluZSJdfHwoUFsiIW91dGxpbmUiXT17fSkpLmxlZnQ9ITApO2JyZWFrO2Nhc2UiWEYiOnhuLmZvbnQ9am4uRm9udHNbeG4uaWZudDw0P3huLmlmbnQ6eG4uaWZudC0xXSx1bi5wdXNoKHhuKTticmVhaztjYXNlIlN1cEJvb2siOk1uLnB1c2goW3huXSksTW5b'@; put 'TW4ubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIkV4dGVybk5hbWUiOk1uW01uLmxlbmd0aC0xXS5wdXNoKHhuKTticmVhaztjYXNlIkxibCI6dW89e05hbWU6eG4uTmFtZSxSZWY6dTEoeG4ucmdjZSxzZSxudWxsLE1uLHFuKX0seG4uaXRhYj4wJiYodW8uU2hlZXQ9eG4uaXRhYi0xKSxN'@; put 'bi5uYW1lcy5wdXNoKHVvKSxNblswXXx8KE1uWzBdPVtdLE1uWzBdLlhUST1bXSksTW5bTW4ubGVuZ3RoLTFdLnB1c2goeG4pLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiPT14bi5OYW1lJiZ4bi5pdGFiPjAmJnhuLnJnY2UmJnhuLnJnY2VbMF0mJnhuLnJnY2VbMF1bMF0mJiJQdGdBcmVhM2Qi'@; put 'PT14bi5yZ2NlWzBdWzBdWzBdJiYoWWFbeG4uaXRhYi0xXT17cmVmOmh0KHhuLnJnY2VbMF1bMF1bMV1bMl0pfSk7YnJlYWs7Y2FzZSJFeHRlcm5Db3VudCI6cW4uRXh0ZXJuQ291bnQ9eG47YnJlYWs7Y2FzZSJFeHRlcm5TaGVldCI6MD09TW4ubGVuZ3RoJiYoTW5bMF09W10sTW5bMF0uWFRJ'@; put 'PVtdKSxNbltNbi5sZW5ndGgtMV0uWFRJPU1uW01uLmxlbmd0aC0xXS5YVEkuY29uY2F0KHhuKSxNbi5YVEk9TW4uWFRJLmNvbmNhdCh4bik7YnJlYWs7Y2FzZSJOYW1lQ210IjppZihxbi5iaWZmPDgpYnJlYWs7bnVsbCE9dW8mJih1by5Db21tZW50PXhuWzFdKTticmVhaztjYXNlIlByb3Rl'@; put 'Y3QiOlBbIiFwcm90ZWN0Il09eG47YnJlYWs7Y2FzZSJQYXNzd29yZCI6MCE9PXhuJiZxbi5XVEYmJmNvbnNvbGUuZXJyb3IoIlBhc3N3b3JkIHZlcmlmaWVyOiAiK3huKTticmVhaztjYXNlIkJvdW5kU2hlZXQ4IjpRW3huLnBvc109eG4scW4uc25hbWVzLnB1c2goeG4ubmFtZSk7YnJlYWs7'@; put 'Y2FzZSJFT0YiOmlmKFBbIiFncmlkbGluZXMiXT0hX2l8fF9pLmdyaWQsX2k9bnVsbCwtLWppKWJyZWFrO2lmKHNlLmUpe2lmKHNlLmUucj4wJiZzZS5lLmM+MCl7aWYoc2UuZS5yLS0sc2UuZS5jLS0sUFsiIXJlZiJdPWh0KHNlKSxfLnNoZWV0Um93cyYmXy5zaGVldFJvd3M8PXNlLmUucil7'@; put 'dmFyIGNoPXNlLmUucjtzZS5lLnI9Xy5zaGVldFJvd3MtMSxQWyIhZnVsbHJlZiJdPVBbIiFyZWYiXSxQWyIhcmVmIl09aHQoc2UpLHNlLmUucj1jaH1zZS5lLnIrKyxzZS5lLmMrK31zby5sZW5ndGg+MCYmKFBbIiFtZXJnZXMiXT1zbyksbW8ubGVuZ3RoPjAmJkZlZShtbyxQKSxMaS5sZW5n'@; put 'dGg+MCYmKFBbIiFjb2xzIl09TGkpLGtyLmxlbmd0aD4wJiYoUFsiIXJvd3MiXT1rciksbm4uU2hlZXRzLnB1c2goYXIpfSIiPT09TGU/TmU9UDpUW0xlXT1QLFA9Xy5kZW5zZT9bXTp7fTticmVhaztjYXNlIkJPRiI6aWYoOD09PXFuLmJpZmYmJihxbi5iaWZmPXs5OjIsNTIxOjMsMTAzMzo0'@; put 'fVskYV18fHs1MTI6Miw3Njg6MywxMDI0OjQsMTI4MDo1LDE1MzY6OCwyOjIsNzoyfVt4bi5CSUZGVmVyXXx8OCkscW4uYmlmZmd1ZXNzPTA9PXhuLkJJRkZWZXIsMD09eG4uQklGRlZlciYmNDA5Nj09eG4uZHQmJihxbi5iaWZmPTUsTXM9ITAsSChxbi5jb2RlcGFnZT0yODU5MSkpLDg9PXFu'@; put 'LmJpZmYmJjA9PXhuLkJJRkZWZXImJjE2PT14bi5kdCYmKHFuLmJpZmY9MiksamkrKylicmVhaztpZihQPV8uZGVuc2U/W106e30scW4uYmlmZjw4JiYhTXMmJihNcz0hMCxIKHFuLmNvZGVwYWdlPV8uY29kZXBhZ2V8fDEyNTIpKSxxbi5iaWZmPDV8fDA9PXhuLkJJRkZWZXImJjQwOTY9PXhu'@; put 'LmR0KXsiIj09PUxlJiYoTGU9IlNoZWV0MSIpLHNlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX07dmFyIEVkPXtwb3M6ZC5sLVNhLG5hbWU6TGV9O1FbRWQucG9zXT1FZCxxbi5zbmFtZXMucHVzaChMZSl9ZWxzZSBMZT0oUVtkYV18fHtuYW1lOiIifSkubmFtZTszMj09eG4uZHQmJihQWyIh'@; put 'dHlwZSJdPSJjaGFydCIpLDY0PT14bi5kdCYmKFBbIiF0eXBlIl09Im1hY3JvIiksc289W10sbW89W10scW4uYXJyYXlmPWJ0PVtdLExpPVtdLGtyPVtdLF9yPSExLGFyPXtIaWRkZW46KFFbZGFdfHx7aHM6MH0pLmhzLG5hbWU6TGV9O2JyZWFrO2Nhc2UiTnVtYmVyIjpjYXNlIkJJRkYyTlVN'@; put 'IjpjYXNlIkJJRkYySU5UIjoiY2hhcnQiPT1QWyIhdHlwZSJdJiYoXy5kZW5zZT8oUFt4bi5yXXx8W10pW3huLmNdOlBbcWkoe2M6eG4uYyxyOnhuLnJ9KV0pJiYrK3huLmMsRXQ9e2l4ZmU6eG4uaXhmZSxYRjp1blt4bi5peGZlXXx8e30sdjp4bi52YWwsdDoibiJ9LGJpPjAmJihFdC56PU5v'@; put 'W0V0Lml4ZmU+PjgmNjNdKSxCZyhFdCxfLG0ub3B0cy5EYXRlMTkwNCksZ3Ioe2M6eG4uYyxyOnhuLnJ9LEV0LF8pO2JyZWFrO2Nhc2UiQm9vbEVyciI6RXQ9e2l4ZmU6eG4uaXhmZSxYRjp1blt4bi5peGZlXSx2OnhuLnZhbCx0OnhuLnR9LGJpPjAmJihFdC56PU5vW0V0Lml4ZmU+PjgmNjNd'@; put 'KSxCZyhFdCxfLG0ub3B0cy5EYXRlMTkwNCksZ3Ioe2M6eG4uYyxyOnhuLnJ9LEV0LF8pO2JyZWFrO2Nhc2UiUksiOkV0PXtpeGZlOnhuLml4ZmUsWEY6dW5beG4uaXhmZV0sdjp4bi5ya251bSx0OiJuIn0sYmk+MCYmKEV0Lno9Tm9bRXQuaXhmZT4+OCY2M10pLEJnKEV0LF8sbS5vcHRzLkRh'@; put 'dGUxOTA0KSxncih7Yzp4bi5jLHI6eG4ucn0sRXQsXyk7YnJlYWs7Y2FzZSJNdWxSayI6Zm9yKHZhciB6ZD14bi5jO3pkPD14bi5DOysremQpe3ZhciBMaD14bi5ya3JlY1t6ZC14bi5jXVswXTtFdD17aXhmZTpMaCxYRjp1bltMaF0sdjp4bi5ya3JlY1t6ZC14bi5jXVsxXSx0OiJuIn0sYmk+'@; put 'MCYmKEV0Lno9Tm9bRXQuaXhmZT4+OCY2M10pLEJnKEV0LF8sbS5vcHRzLkRhdGUxOTA0KSxncih7Yzp6ZCxyOnhuLnJ9LEV0LF8pfWJyZWFrO2Nhc2UiRm9ybXVsYSI6aWYoIlN0cmluZyI9PXhuLnZhbCl7b2U9eG47YnJlYWt9aWYoKEV0PXlSKHhuLnZhbCx4bi5jZWxsLml4ZmUseG4udHQp'@; put 'KS5YRj11bltFdC5peGZlXSxfLmNlbGxGb3JtdWxhKXt2YXIgZ2M9eG4uZm9ybXVsYTtpZihnYyYmZ2NbMF0mJmdjWzBdWzBdJiYiUHRnRXhwIj09Z2NbMF1bMF1bMF0pe3ZhciBOdD1nY1swXVswXVsxXVswXSxobj1nY1swXVswXVsxXVsxXSxQbj1xaSh7cjpOdCxjOmhufSk7a3RbUG5dP0V0'@; put 'LmY9IiIrdTEoeG4uZm9ybXVsYSxzZSx4bi5jZWxsLE1uLHFuKTpFdC5GPSgoXy5kZW5zZT8oUFtOdF18fFtdKVtobl06UFtQbl0pfHx7fSkuRn1lbHNlIEV0LmY9IiIrdTEoeG4uZm9ybXVsYSxzZSx4bi5jZWxsLE1uLHFuKX1iaT4wJiYoRXQuej1Ob1tFdC5peGZlPj44JjYzXSksQmcoRXQs'@; put 'XyxtLm9wdHMuRGF0ZTE5MDQpLGdyKHhuLmNlbGwsRXQsXyksb2U9eG47YnJlYWs7Y2FzZSJTdHJpbmciOmlmKCFvZSl0aHJvdyBuZXcgRXJyb3IoIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhIik7b2UudmFsPXhuLChFdD15Uih4bixvZS5jZWxsLml4ZmUsInMiKSkuWEY9dW5bRXQu'@; put 'aXhmZV0sXy5jZWxsRm9ybXVsYSYmKEV0LmY9IiIrdTEob2UuZm9ybXVsYSxzZSxvZS5jZWxsLE1uLHFuKSksYmk+MCYmKEV0Lno9Tm9bRXQuaXhmZT4+OCY2M10pLEJnKEV0LF8sbS5vcHRzLkRhdGUxOTA0KSxncihvZS5jZWxsLEV0LF8pLG9lPW51bGw7YnJlYWs7Y2FzZSJBcnJheSI6YnQu'@; put 'cHVzaCh4bik7dmFyIFNpPXFpKHhuWzBdLnMpO2lmKG50PV8uZGVuc2U/KFBbeG5bMF0ucy5yXXx8W10pW3huWzBdLnMuY106UFtTaV0sXy5jZWxsRm9ybXVsYSYmbnQpe2lmKCFvZXx8IVNpfHwhbnQpYnJlYWs7bnQuZj0iIit1MSh4blsxXSxzZSx4blswXSxNbixxbiksbnQuRj1odCh4blsw'@; put 'XSl9YnJlYWs7Y2FzZSJTaHJGbWxhIjppZighXy5jZWxsRm9ybXVsYSlicmVhaztpZihaZSl7aWYoIW9lKWJyZWFrO2t0W3FpKG9lLmNlbGwpXT14blswXSwoKG50PV8uZGVuc2U/KFBbb2UuY2VsbC5yXXx8W10pW29lLmNlbGwuY106UFtxaShvZS5jZWxsKV0pfHx7fSkuZj0iIit1MSh4blsw'@; put 'XSxzZSxCZSxNbixxbil9YnJlYWs7Y2FzZSJMYWJlbFNzdCI6RXQ9eVIoZGVbeG4uaXNzdF0udCx4bi5peGZlLCJzIiksZGVbeG4uaXNzdF0uaCYmKEV0Lmg9ZGVbeG4uaXNzdF0uaCksRXQuWEY9dW5bRXQuaXhmZV0sYmk+MCYmKEV0Lno9Tm9bRXQuaXhmZT4+OCY2M10pLEJnKEV0LF8sbS5v'@; put 'cHRzLkRhdGUxOTA0KSxncih7Yzp4bi5jLHI6eG4ucn0sRXQsXyksZGVbeG4uaXNzdF0uUiYmKEV0LlI9ZGVbeG4uaXNzdF0uUi5tYXAoZnVuY3Rpb24oRG8pe3ZhciB3aT1RcihEbyk7cmV0dXJuIERvLnM9PWpuLkZvbnRzWzBdJiYod2kucz1FdC5zKSx3aX0pKTticmVhaztjYXNlIkJsYW5r'@; put 'IjpfLnNoZWV0U3R1YnMmJihFdD17aXhmZTp4bi5peGZlLFhGOnVuW3huLml4ZmVdLHQ6InoifSxiaT4wJiYoRXQuej1Ob1tFdC5peGZlPj44JjYzXSksQmcoRXQsXyxtLm9wdHMuRGF0ZTE5MDQpLGdyKHtjOnhuLmMscjp4bi5yfSxFdCxfKSk7YnJlYWs7Y2FzZSJNdWxCbGFuayI6aWYoXy5z'@; put 'aGVldFN0dWJzKWZvcih2YXIgZXI9eG4uYztlcjw9eG4uQzsrK2VyKXt2YXIgRGk9eG4uaXhmZVtlci14bi5jXTtFdD17aXhmZTpEaSxYRjp1bltEaV0sdDoieiJ9LGJpPjAmJihFdC56PU5vW0V0Lml4ZmU+PjgmNjNdKSxCZyhFdCxfLG0ub3B0cy5EYXRlMTkwNCksZ3Ioe2M6ZXIscjp4bi5y'@; put 'fSxFdCxfKX1icmVhaztjYXNlIlJTdHJpbmciOmNhc2UiTGFiZWwiOmNhc2UiQklGRjJTVFIiOihFdD15Uih4bi52YWwseG4uaXhmZSwicyIpKS5YRj11bltFdC5peGZlXSxiaT4wJiYoRXQuej1Ob1tFdC5peGZlPj44JjYzXSksQmcoRXQsXyxtLm9wdHMuRGF0ZTE5MDQpLGdyKHtjOnhuLmMs'@; put 'cjp4bi5yfSxFdCxfKTticmVhaztjYXNlIkRpbWVuc2lvbnMiOjE9PT1qaSYmKHNlPXhuKTticmVhaztjYXNlIlNTVCI6KGRlPXhuKS5mb3JFYWNoKGZ1bmN0aW9uKERvKXtEby5fUj8oRG8uX1JbMF0mJkRvLl9SWzBdLmlkeD4wJiZEby5fUi51bnNoaWZ0KHtpZHg6MCxpZm50OjB9KSxEby5S'@; put 'PURvLl9SLm1hcChmdW5jdGlvbih3aSxLcyl7cmV0dXJue3Q6InMiLHY6RG8udC5zbGljZSh3aS5pZHgsKERvLl9SW0tzKzFdfHx7fSkuaWR4KSxzOmpuLkZvbnRzW3dpLmlmbnQ8ND93aS5pZm50OndpLmlmbnQtMV19fSksXy5jZWxsSFRNTCYmKERvLmg9dVMoRG8uUikpKTpfLmNlbGxIVE1M'@; put 'JiYoRG8uaD0kaShEby50KSksZGVsZXRlIERvLl9SfSk7YnJlYWs7Y2FzZSJGb3JtYXQiOmlmKDQ9PXFuLmJpZmYpe05vW2JpKytdPXhuWzFdO2Zvcih2YXIgYnI9MDticjxiaSsxNjMmJkkuX3RhYmxlW2JyXSE9eG5bMV07Kyticik7YnI+PTE2MyYmSS5sb2FkKHhuWzFdLGJpKzE2Myl9ZWxz'@; put 'ZSBJLmxvYWQoeG5bMV0seG5bMF0pO2JyZWFrO2Nhc2UiQklGRjJGT1JNQVQiOk5vW2JpKytdPXhuO2Zvcih2YXIgUmk9MDtSaTxiaSsxNjMmJkkuX3RhYmxlW1JpXSE9eG47KytSaSk7Umk+PTE2MyYmSS5sb2FkKHhuLGJpKzE2Myk7YnJlYWs7Y2FzZSJNZXJnZUNlbGxzIjpzbz1zby5jb25j'@; put 'YXQoeG4pO2JyZWFrO2Nhc2UiT2JqIjptb1t4bi5jbW9bMF1dPXFuLmxhc3RvYmo9eG47YnJlYWs7Y2FzZSJUeE8iOnFuLmxhc3RvYmouVHhPPXhuO2JyZWFrO2Nhc2UiSW1EYXRhIjpxbi5sYXN0b2JqLkltRGF0YT14bjticmVhaztjYXNlIkhMaW5rIjpmb3IoZnQ9eG5bMF0ucy5yO2Z0PD14'@; put 'blswXS5lLnI7KytmdClmb3IoUWU9eG5bMF0ucy5jO1FlPD14blswXS5lLmM7KytRZSkobnQ9Xy5kZW5zZT8oUFtmdF18fFtdKVtRZV06UFtxaSh7YzpRZSxyOmZ0fSldKSYmKG50Lmw9eG5bMV0pO2JyZWFrO2Nhc2UiSExpbmtUb29sdGlwIjpmb3IoZnQ9eG5bMF0ucy5yO2Z0PD14blswXS5l'@; put 'LnI7KytmdClmb3IoUWU9eG5bMF0ucy5jO1FlPD14blswXS5lLmM7KytRZSkobnQ9Xy5kZW5zZT8oUFtmdF18fFtdKVtRZV06UFtxaSh7YzpRZSxyOmZ0fSldKSYmbnQubCYmKG50LmwuVG9vbHRpcD14blsxXSk7YnJlYWs7Y2FzZSJOb3RlIjppZihxbi5iaWZmPD01JiZxbi5iaWZmPj0yKWJy'@; put 'ZWFrO250PV8uZGVuc2U/KFBbeG5bMF0ucl18fFtdKVt4blswXS5jXTpQW3FpKHhuWzBdKV07dmFyIHZhPW1vW3huWzJdXTtudHx8KF8uZGVuc2U/KFBbeG5bMF0ucl18fChQW3huWzBdLnJdPVtdKSxudD1QW3huWzBdLnJdW3huWzBdLmNdPXt0OiJ6In0pOm50PVBbcWkoeG5bMF0pXT17dDoi'@; put 'eiJ9LHNlLmUucj1NYXRoLm1heChzZS5lLnIseG5bMF0uciksc2Uucy5yPU1hdGgubWluKHNlLnMucix4blswXS5yKSxzZS5lLmM9TWF0aC5tYXgoc2UuZS5jLHhuWzBdLmMpLHNlLnMuYz1NYXRoLm1pbihzZS5zLmMseG5bMF0uYykpLG50LmN8fChudC5jPVtdKSxudC5jLnB1c2goe2E6eG5b'@; put 'MV0sdDp2YS5UeE8udH0pO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKFBpLm4pe2Nhc2UiQ2xydENsaWVudCI6Y2FzZSJIZWFkZXIiOmNhc2UiRm9vdGVyIjpjYXNlIkhDZW50ZXIiOmNhc2UiVkNlbnRlciI6Y2FzZSJQbHMiOmNhc2UiR0NXIjpjYXNlIkxIUmVjb3JkIjpjYXNlIkRCQ2VsbCI6Y2Fz'@; put 'ZSJFbnRFeFUyIjpjYXNlIlN4VmlldyI6Y2FzZSJTeHZkIjpjYXNlIlNYVkkiOmNhc2UiU1hWREV4IjpjYXNlIlN4SXZkIjpjYXNlIlNYU3RyaW5nIjpjYXNlIlN5bmMiOmNhc2UiQWRkaW4iOmNhc2UiU1hESSI6Y2FzZSJTWExJIjpjYXNlIlNYRXgiOmNhc2UiUXNpU1hUYWciOmNhc2UiRmVh'@; put 'dCI6Y2FzZSJGZWF0SGRyIjpjYXNlIkZlYXRIZHIxMSI6Y2FzZSJGZWF0dXJlMTEiOmNhc2UiRmVhdHVyZTEyIjpjYXNlIkxpc3QxMiI6Y2FzZSJSZWNhbGNJZCI6Y2FzZSJEeEdDb2wiOmNhc2UiRmJpIjpjYXNlIkZiaTIiOmNhc2UiR2VsRnJhbWUiOmNhc2UiWEZDUkMiOmNhc2UiU3R5bGUi'@; put 'OmNhc2UiU3R5bGVFeHQiOmNhc2UiU2NlbmFyaW9Qcm90ZWN0IjpjYXNlIk9ialByb3RlY3QiOmNhc2UiQ29uZEZtdDEyIjpjYXNlIlRhYmxlIjpjYXNlIlRhYmxlU3R5bGVzIjpjYXNlIlRhYmxlU3R5bGUiOmNhc2UiVGFibGVTdHlsZUVsZW1lbnQiOmNhc2UiU1hTdHJlYW1JRCI6Y2FzZSJT'@; put 'WFZTIjpjYXNlIkRDb25SZWYiOmNhc2UiU1hBZGRsIjpjYXNlIkRDb25CaW4iOmNhc2UiRENvbk5hbWUiOmNhc2UiU1hQSSI6Y2FzZSJTeEZvcm1hdCI6Y2FzZSJTeFNlbGVjdCI6Y2FzZSJTeFJ1bGUiOmNhc2UiU3hGaWx0IjpjYXNlIlN4SXRtIjpjYXNlIlN4RFhGIjpjYXNlIlNjZW5NYW4i'@; put 'OmNhc2UiRENvbiI6Y2FzZSJDZWxsV2F0Y2giOmNhc2UiUHJpbnRSb3dDb2wiOmNhc2UiUHJpbnRHcmlkIjpjYXNlIlByaW50U2l6ZSI6Y2FzZSJYQ1QiOmNhc2UiQ1JOIjpjYXNlIlNjbCI6Y2FzZSJTaGVldEV4dCI6Y2FzZSJTaGVldEV4dE9wdGlvbmFsIjpjYXNlIk9iTm9NYWNyb3MiOmNh'@; put 'c2UiT2JQcm9qIjpjYXNlIkdVSURUeXBlTGliIjpjYXNlIldPcHQiOmNhc2UiUGhvbmV0aWNJbmZvIjpjYXNlIk9sZU9iamVjdFNpemUiOmNhc2UiRFhGIjpjYXNlIkRYRk4iOmNhc2UiRFhGTjEyIjpjYXNlIkRYRk4xMkxpc3QiOmNhc2UiRFhGTjEyTm9DQiI6Y2FzZSJEdiI6Y2FzZSJEVmFs'@; put 'IjpjYXNlIkJSQUkiOmNhc2UiU2VyaWVzIjpjYXNlIlNlcmllc1RleHQiOmNhc2UiRENvbm4iOmNhc2UiRGJPclBhcmFtUXJ5IjpjYXNlIkRCUXVlcnlFeHQiOmNhc2UiT2xlRGJDb25uIjpjYXNlIkV4dFN0cmluZyI6Y2FzZSJJRm10UmVjb3JkIjpjYXNlIkNvbmRGbXQiOmNhc2UiQ0YiOmNh'@; put 'c2UiQ0YxMiI6Y2FzZSJDRkV4IjpjYXNlIkV4Y2VsOUZpbGUiOmNhc2UiVW5pdHMiOmNhc2UiSW50ZXJmYWNlSGRyIjpjYXNlIk1tcyI6Y2FzZSJJbnRlcmZhY2VFbmQiOmNhc2UiRFNGIjpjYXNlIkJ1aWx0SW5Gbkdyb3VwQ291bnQiOmNhc2UiV2luZG93MSI6Y2FzZSJIaWRlT2JqIjpjYXNl'@; put 'IkdyaWRTZXQiOmNhc2UiR3V0cyI6Y2FzZSJVc2VyQlZpZXciOmNhc2UiVXNlclNWaWV3QmVnaW4iOmNhc2UiVXNlclNWaWV3RW5kIjpjYXNlIkRlZkNvbFdpZHRoIjpjYXNlIkRlZmF1bHRSb3dIZWlnaHQiOmJyZWFrO2Nhc2UiWEZFeHQiOmhRKHVuW3huLml4ZmVdLHhuLmV4dCk7YnJlYWs7'@; put 'Y2FzZSJDb2xJbmZvIjppZighcW4uY2VsbFN0eWxlcylicmVhaztmb3IoO3huLmU+PXhuLnM7KUxpW3huLmUtLV09e3dpZHRoOnhuLncvMjU2LGxldmVsOnhuLmxldmVsfHwwLGhpZGRlbjohISgxJnhuLmZsYWdzKX0sX3J8fChfcj0hMCksQjAoTGlbeG4uZSsxXSk7YnJlYWs7Y2FzZSJSb3ci'@; put 'OnZhciBOaT17fTtudWxsIT14bi5sZXZlbCYmKGtyW3huLnJdPU5pLE5pLmxldmVsPXhuLmxldmVsKSx4bi5oaWRkZW4mJihrclt4bi5yXT1OaSxOaS5oaWRkZW49ITApLHhuLmhwdCYmKGtyW3huLnJdPU5pLE5pLmhwdD14bi5ocHQsTmkuaHB4PU5nKHhuLmhwdCkpLHhuLml4ZmUmJihrclt4'@; put 'bi5yXT1OaSxzcihFdD17aXhmZTp4bi5peGZlLFhGOnVuW3huLml4ZmVdfHx7fSx2OjAsdDoibiJ9LF8pLE5pLnM9RXQucyk7YnJlYWs7Y2FzZSJMZWZ0TWFyZ2luIjpjYXNlIlJpZ2h0TWFyZ2luIjpjYXNlIlRvcE1hcmdpbiI6Y2FzZSJCb3R0b21NYXJnaW4iOlBbIiFtYXJnaW5zIl18fEw4'@; put 'KFBbIiFtYXJnaW5zIl09e30pLFBbIiFtYXJnaW5zIl1beGwuc2xpY2UoMCwtNikudG9Mb3dlckNhc2UoKV09eG47YnJlYWs7Y2FzZSJTZWxlY3Rpb24iOlBbIiFzZWwiXT14bjticmVhaztjYXNlIlNldHVwIjpQWyIhbWFyZ2lucyJdfHxMOChQWyIhbWFyZ2lucyJdPXt9KSxQWyIhbWFyZ2lu'@; put 'cyJdLmhlYWRlcj14bi5oZWFkZXIsUFsiIW1hcmdpbnMiXS5mb290ZXI9eG4uZm9vdGVyO2JyZWFrO2Nhc2UiV2luZG93MiI6eG4uUlRMJiYobm4uVmlld3NbMF0uUlRMPSEwKSxfaT14bjticmVhaztjYXNlIkNvdW50cnkiOlZ0PXhuO2JyZWFrO2Nhc2UiRm9udCI6eG4uaWN2JiZrbih4bi5p'@; put 'Y3YpJiYoeG4uY29sb3I9e3JnYjpiMyhrbih4bi5pY3YpKX0pLGRlbGV0ZSB4bi5pY3YsMD09am4uRm9udHMubGVuZ3RoJiYkbSh4biksam4uRm9udHMucHVzaCh4bik7YnJlYWs7Y2FzZSJQYWxldHRlIjpucj14bjticmVhaztjYXNlIlRoZW1lIjpPaT14bjticmVhaztjYXNlIkNvZGVOYW1l'@; put 'IjpMZT9hci5Db2RlTmFtZT14bnx8YXIubmFtZTpubi5XQlByb3BzLkNvZGVOYW1lPXhufHwiVGhpc1dvcmtib29rIjticmVhaztjYXNlIlBhbmUiOihfaXx8e30pLmZyb3plbiYmKFBbIiFmcmVlemUiXT1xaSh7cjp4bi55fHwwLGM6eG4ueHx8MH0pKTticmVhaztkZWZhdWx0OnN3aXRjaChQ'@; put 'aS5uKXtjYXNlIkRhdCI6Y2FzZSJCZWdpbiI6Y2FzZSJFbmQiOmNhc2UiU3RhcnRCbG9jayI6Y2FzZSJFbmRCbG9jayI6Y2FzZSJGcmFtZSI6Y2FzZSJBcmVhIjpjYXNlIkF4aXMiOmNhc2UiQXhpc0xpbmUiOmNhc2UiVGljayI6Y2FzZSJBeGVzVXNlZCI6Y2FzZSJDcnRMYXlvdXQxMiI6Y2Fz'@; put 'ZSJDcnRMYXlvdXQxMkEiOmNhc2UiQ3J0TGluayI6Y2FzZSJDcnRMaW5lIjpjYXNlIkNydE1sRnJ0IjpjYXNlIkNydE1sRnJ0Q29udGludWUiOmNhc2UiTGluZUZvcm1hdCI6Y2FzZSJBcmVhRm9ybWF0IjpjYXNlIkNoYXJ0IjpjYXNlIkNoYXJ0M2QiOmNhc2UiQ2hhcnQzREJhclNoYXBlIjpj'@; put 'YXNlIkNoYXJ0Rm9ybWF0IjpjYXNlIkNoYXJ0RnJ0SW5mbyI6Y2FzZSJQbG90QXJlYSI6Y2FzZSJQbG90R3Jvd3RoIjpjYXNlIlNlcmllc0xpc3QiOmNhc2UiU2VyUGFyZW50IjpjYXNlIlNlckF1eFRyZW5kIjpjYXNlIkRhdGFGb3JtYXQiOmNhc2UiU2VyVG9DcnQiOmNhc2UiRm9udFgiOmNh'@; put 'c2UiQ2F0U2VyUmFuZ2UiOmNhc2UiQXhjRXh0IjpjYXNlIlNlckZtdCI6Y2FzZSJTaHRQcm9wcyI6Y2FzZSJEZWZhdWx0VGV4dCI6Y2FzZSJUZXh0IjpjYXNlIkNhdExhYiI6Y2FzZSJEYXRhTGFiRXh0Q29udGVudHMiOmNhc2UiTGVnZW5kIjpjYXNlIkxlZ2VuZEV4Y2VwdGlvbiI6Y2FzZSJQ'@; put 'aWUiOmNhc2UiU2NhdHRlciI6Y2FzZSJQaWVGb3JtYXQiOmNhc2UiTWFya2VyRm9ybWF0IjpjYXNlIlN0YXJ0T2JqZWN0IjpjYXNlIkVuZE9iamVjdCI6Y2FzZSJBbFJ1bnMiOmNhc2UiT2JqZWN0TGluayI6Y2FzZSJTSUluZGV4IjpjYXNlIkF0dGFjaGVkTGFiZWwiOmNhc2UiWU11bHQiOmNh'@; put 'c2UiTGluZSI6Y2FzZSJCYXIiOmNhc2UiU3VyZiI6Y2FzZSJBeGlzUGFyZW50IjpjYXNlIlBvcyI6Y2FzZSJWYWx1ZVJhbmdlIjpjYXNlIlNYVmlld0V4OSI6Y2FzZSJTWFZpZXdMaW5rIjpjYXNlIlBpdm90Q2hhcnRCaXRzIjpjYXNlIlNCYXNlUmVmIjpjYXNlIlRleHRQcm9wc1N0cmVhbSI6'@; put 'Y2FzZSJMbkV4dCI6Y2FzZSJNa3JFeHQiOmNhc2UiQ3J0Q29vcHQiOmNhc2UiUXNpIjpjYXNlIlFzaWYiOmNhc2UiUXNpciI6Y2FzZSJRc2lTWFRhZyI6Y2FzZSJUeHRRcnkiOmNhc2UiRmlsdGVyTW9kZSI6Y2FzZSJBdXRvRmlsdGVyIjpjYXNlIkF1dG9GaWx0ZXJJbmZvIjpjYXNlIkF1dG9G'@; put 'aWx0ZXIxMiI6Y2FzZSJEcm9wRG93bk9iaklkcyI6Y2FzZSJTb3J0IjpjYXNlIlNvcnREYXRhIjpjYXNlIlNoYXBlUHJvcHNTdHJlYW0iOmNhc2UiTXNvRHJhd2luZyI6Y2FzZSJNc29EcmF3aW5nR3JvdXAiOmNhc2UiTXNvRHJhd2luZ1NlbGVjdGlvbiI6Y2FzZSJXZWJQdWIiOmNhc2UiQXV0'@; put 'b1dlYlB1YiI6Y2FzZSJIZWFkZXJGb290ZXIiOmNhc2UiSEZQaWN0dXJlIjpjYXNlIlBMViI6Y2FzZSJIb3Jpem9udGFsUGFnZUJyZWFrcyI6Y2FzZSJWZXJ0aWNhbFBhZ2VCcmVha3MiOmNhc2UiQmFja3VwIjpjYXNlIkNvbXByZXNzUGljdHVyZXMiOmNhc2UiQ29tcGF0MTIiOmNhc2UiQ29u'@; put 'dGludWUiOmNhc2UiQ29udGludWVGcnQxMiI6Y2FzZSJGcnRGb250TGlzdCI6Y2FzZSJGcnRXcmFwcGVyIjpicmVhaztkZWZhdWx0OnN3aXRjaChQaS5uKXtjYXNlIlRhYklkQ29uZiI6Y2FzZSJSYWRhciI6Y2FzZSJSYWRhckFyZWEiOmNhc2UiRHJvcEJhciI6Y2FzZSJJbnRsIjpjYXNlIkNv'@; put 'b3JkTGlzdCI6Y2FzZSJTZXJBdXhFcnJCYXIiOmNhc2UiQklGRjJGT05UQ0xSIjpjYXNlIkJJRkYyRk1UQ05UIjpjYXNlIkJJRkYyRk9OVFhUUkEiOmNhc2UiQklGRjJYRiI6Y2FzZSJCSUZGM1hGIjpjYXNlIkJJRkY0WEYiOmNhc2UiQklGRjJYRklOREVYIjpjYXNlIkJJRkY0Rk1UQ05UIjpj'@; put 'YXNlIkJJRkYyUk9XIjpjYXNlIkJJRkYyV0lORE9XMiI6Y2FzZSJTQ0VOQVJJTyI6Y2FzZSJEQ29uQmluIjpjYXNlIlBpY0YiOmNhc2UiRGF0YUxhYkV4dCI6Y2FzZSJMZWwiOmNhc2UiQm9wUG9wIjpjYXNlIkJvcFBvcEN1c3RvbSI6Y2FzZSJSZWFsVGltZURhdGEiOmNhc2UiTmFtZSI6Y2Fz'@; put 'ZSJMSE5HcmFwaCI6Y2FzZSJGbkdyb3VwTmFtZSI6Y2FzZSJBZGRNZW51IjpjYXNlIkxQciI6Y2FzZSJMaXN0T2JqIjpjYXNlIkxpc3RGaWVsZCI6Y2FzZSJSUlNvcnQiOmNhc2UiQmlnTmFtZSI6Y2FzZSJUb29sYmFySGRyIjpjYXNlIlRvb2xiYXJFbmQiOmNhc2UiRERFT2JqTmFtZSI6Y2Fz'@; put 'ZSJGUlRBcmNoSWQkIjpicmVhaztkZWZhdWx0OmlmKF8uV1RGKXRocm93IlVucmVjb2duaXplZCBSZWNvcmQgIitQaS5ufX19fX1lbHNlIGQubCs9U2EscW4mJnFuLmVuYyYmcW4uZW5jLmluc2l0dSYmcW4uZW5jLmluc2l0dShrZSh7bGVuZ3RoOlNhfSkpfXJldHVybiBtLlNoZWV0TmFtZXM9'@; put 'RmUoUSkuc29ydChmdW5jdGlvbihEbyx3aSl7cmV0dXJuIE51bWJlcihEbyktTnVtYmVyKHdpKX0pLm1hcChmdW5jdGlvbihEbyl7cmV0dXJuIFFbRG9dLm5hbWV9KSxfLmJvb2tTaGVldHN8fChtLlNoZWV0cz1UKSwhbS5TaGVldE5hbWVzLmxlbmd0aCYmTmVbIiFyZWYiXT8obS5TaGVldE5h'@; put 'bWVzLnB1c2goIlNoZWV0MSIpLG0uU2hlZXRzJiYobS5TaGVldHMuU2hlZXQxPU5lKSk6bS5QcmVhbWJsZT1OZSxtLlNoZWV0cyYmWWEuZm9yRWFjaChmdW5jdGlvbihEbyx3aSl7bS5TaGVldHNbbS5TaGVldE5hbWVzW3dpXV1bIiFhdXRvZmlsdGVyIl09RG99KSxtLlN0cmluZ3M9ZGUsbS5T'@; put 'U0Y9SS5nZXRfdGFibGUoKSxxbi5lbmMmJihtLkVuY3J5cHRpb249cW4uZW5jKSxPaSYmKG0uVGhlbWVzPU9pKSxtLk1ldGFkYXRhPXt9LHZvaWQgMCE9PVZ0JiYobS5NZXRhZGF0YS5Db3VudHJ5PVZ0KSxNbi5uYW1lcy5sZW5ndGg+MCYmKG5uLk5hbWVzPU1uLm5hbWVzKSxtLldvcmtib29r'@; put 'PW5uLG19KFQuY29udGVudCxfKTtlbHNlIGlmKChRPWFlLmZpbmQoZCwiUGVyZmVjdE9mZmljZV9NQUlOIikpJiZRLmNvbnRlbnQpUD1jUy50b193b3JrYm9vayhRLmNvbnRlbnQsKF8udHlwZT1zZSxfKSk7ZWxzZXtpZighKFE9YWUuZmluZChkLCJOYXRpdmVDb250ZW50X01BSU4iKSl8fCFR'@; put 'LmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBXb3JrYm9vayBzdHJlYW0iKTtQPWNTLnRvX3dvcmtib29rKFEuY29udGVudCwoXy50eXBlPXNlLF8pKX1fLmJvb2tWQkEmJmQuRnVsbFBhdGhzJiZhZS5maW5kKGQsIi9fVkJBX1BST0pFQ1RfQ1VSL1ZCQS9kaXIiKSYmKFAu'@; put 'dmJhcmF3PWZ1bmN0aW9uIEtIKGQpe3ZhciBfPWFlLnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSk7cmV0dXJuIGQuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24obSxUKXtpZigiLyIhPT1tLnNsaWNlKC0xKSYmbS5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKXt2YXIgUD1tLnJlcGxhY2Uo'@; put 'L15bXlwvXSovLCJSIikucmVwbGFjZSgvXC9fVkJBX1BST0pFQ1RfQ1VSXHUwMDAwKi8sIiIpO2FlLnV0aWxzLmNmYl9hZGQoXyxQLGQuRmlsZUluZGV4W1RdLmNvbnRlbnQpfX0pLGFlLndyaXRlKF8pfShkKSl9dmFyIG9lPXt9O3JldHVybiBkLkZ1bGxQYXRocyYmZnVuY3Rpb24gSEIoZCxf'@; put 'LG0pe3ZhciBUPWFlLmZpbmQoZCwiIURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIik7aWYoVCYmVC5zaXplPjApdHJ5e3ZhciBQPWZ5KFQsdXAsajhfRFNJKTtmb3IodmFyIFEgaW4gUClfW1FdPVBbUV19Y2F0Y2goTGUpe2lmKG0uV1RGKXRocm93IExlfXZhciBzZT1hZS5maW5kKGQsIiFT'@; put 'dW1tYXJ5SW5mb3JtYXRpb24iKTtpZihzZSYmc2Uuc2l6ZT4wKXRyeXt2YXIgb2U9Znkoc2UsYzAsajhfU0kpO2Zvcih2YXIgZGUgaW4gb2UpbnVsbD09X1tkZV0mJihfW2RlXT1vZVtkZV0pfWNhdGNoKExlKXtpZihtLldURil0aHJvdyBMZX1fLkhlYWRpbmdQYWlycyYmXy5UaXRsZXNPZlBh'@; put 'cnRzJiYoZ3AoXy5IZWFkaW5nUGFpcnMsXy5UaXRsZXNPZlBhcnRzLF8sbSksZGVsZXRlIF8uSGVhZGluZ1BhaXJzLGRlbGV0ZSBfLlRpdGxlc09mUGFydHMpfShkLG9lLF8pLFAuUHJvcHM9UC5DdXN0cHJvcHM9b2UsXy5ib29rRmlsZXMmJihQLmNmYj1kKSxQfXZhciBaOT17MDp7bjoiQnJ0'@; put 'Um93SGRyIixmOmZ1bmN0aW9uIEdWKGQsXyl7dmFyIG09e30sVD1kLmwrXzttLnI9ZC5yZWFkX3NoaWZ0KDQpLGQubCs9NDt2YXIgUD1kLnJlYWRfc2hpZnQoMik7ZC5sKz0xO3ZhciBRPWQucmVhZF9zaGlmdCgxKTtyZXR1cm4gZC5sPVQsNyZRJiYobS5sZXZlbD03JlEpLDE2JlEmJihtLmhp'@; put 'ZGRlbj0hMCksMzImUSYmKG0uaHB0PVAvMjApLG19fSwxOntuOiJCcnRDZWxsQmxhbmsiLGY6ZnVuY3Rpb24gcVYoZCl7cmV0dXJuW3NuKGQpXX19LDI6e246IkJydENlbGxSayIsZjpmdW5jdGlvbiB6SihkKXtyZXR1cm5bc24oZCksYmQoZCksIm4iXX19LDM6e246IkJydENlbGxFcnJvciIs'@; put 'ZjpmdW5jdGlvbiBWSihkKXtyZXR1cm5bc24oZCksZC5yZWFkX3NoaWZ0KDEpLCJlIl19fSw0OntuOiJCcnRDZWxsQm9vbCIsZjpmdW5jdGlvbiBLVihkKXtyZXR1cm5bc24oZCksZC5yZWFkX3NoaWZ0KDEpLCJiIl19fSw1OntuOiJCcnRDZWxsUmVhbCIsZjpmdW5jdGlvbiBYayhkKXtyZXR1'@; put 'cm5bc24oZCkscXMoZCksIm4iXX19LDY6e246IkJydENlbGxTdCIsZjpmdW5jdGlvbiBpQihkKXtyZXR1cm5bc24oZCksaWkoZCksInN0ciJdfX0sNzp7bjoiQnJ0Q2VsbElzc3QiLGY6ZnVuY3Rpb24gcWsoZCl7cmV0dXJuW3NuKGQpLGQucmVhZF9zaGlmdCg0KSwicyJdfX0sODp7bjoiQnJ0'@; put 'Rm1sYVN0cmluZyIsZjpmdW5jdGlvbiBVNWUoZCxfLG0pe3ZhciBUPWQubCtfLFA9c24oZCk7UC5yPW1bIiFyb3ciXTt2YXIgc2U9W1AsaWkoZCksInN0ciJdO2lmKG0uY2VsbEZvcm11bGEpe2QubCs9Mjt2YXIgb2U9UDkoZCxULWQubCxtKTtzZVszXT11MShvZSxudWxsLFAsbS5zdXBib29r'@; put 'cyxtKX1lbHNlIGQubD1UO3JldHVybiBzZX19LDk6e246IkJydEZtbGFOdW0iLGY6ZnVuY3Rpb24gWkooZCxfLG0pe3ZhciBUPWQubCtfLFA9c24oZCk7UC5yPW1bIiFyb3ciXTt2YXIgc2U9W1AscXMoZCksIm4iXTtpZihtLmNlbGxGb3JtdWxhKXtkLmwrPTI7dmFyIG9lPVA5KGQsVC1kLmws'@; put 'bSk7c2VbM109dTEob2UsbnVsbCxQLG0uc3VwYm9va3MsbSl9ZWxzZSBkLmw9VDtyZXR1cm4gc2V9fSwxMDp7bjoiQnJ0Rm1sYUJvb2wiLGY6ZnVuY3Rpb24gYUIoZCxfLG0pe3ZhciBUPWQubCtfLFA9c24oZCk7UC5yPW1bIiFyb3ciXTt2YXIgc2U9W1AsZC5yZWFkX3NoaWZ0KDEpLCJiIl07'@; put 'aWYobS5jZWxsRm9ybXVsYSl7ZC5sKz0yO3ZhciBvZT1QOShkLFQtZC5sLG0pO3NlWzNdPXUxKG9lLG51bGwsUCxtLnN1cGJvb2tzLG0pfWVsc2UgZC5sPVQ7cmV0dXJuIHNlfX0sMTE6e246IkJydEZtbGFFcnJvciIsZjpmdW5jdGlvbiBZSihkLF8sbSl7dmFyIFQ9ZC5sK18sUD1zbihkKTtQ'@; put 'LnI9bVsiIXJvdyJdO3ZhciBzZT1bUCxkLnJlYWRfc2hpZnQoMSksImUiXTtpZihtLmNlbGxGb3JtdWxhKXtkLmwrPTI7dmFyIG9lPVA5KGQsVC1kLmwsbSk7c2VbM109dTEob2UsbnVsbCxQLG0uc3VwYm9va3MsbSl9ZWxzZSBkLmw9VDtyZXR1cm4gc2V9fSwxMjp7bjoiQnJ0U2hvcnRCbGFu'@; put 'ayIsZjpmdW5jdGlvbiBVUyhkKXtyZXR1cm5bRGEoZCldfX0sMTM6e246IkJydFNob3J0UmsiLGY6ZnVuY3Rpb24gajVlKGQpe3JldHVybltEYShkKSxiZChkKSwibiJdfX0sMTQ6e246IkJydFNob3J0RXJyb3IiLGY6ZnVuY3Rpb24gSlYoZCl7cmV0dXJuW0RhKGQpLGQucmVhZF9zaGlmdCgx'@; put 'KSwiZSJdfX0sMTU6e246IkJydFNob3J0Qm9vbCIsZjpmdW5jdGlvbiBOeShkKXtyZXR1cm5bRGEoZCksZC5yZWFkX3NoaWZ0KDEpLCJiIl19fSwxNjp7bjoiQnJ0U2hvcnRSZWFsIixmOm5CfSwxNzp7bjoiQnJ0U2hvcnRTdCIsZjpmdW5jdGlvbiB6UyhkKXtyZXR1cm5bRGEoZCksaWkoZCks'@; put 'InN0ciJdfX0sMTg6e246IkJydFNob3J0SXNzdCIsZjpmdW5jdGlvbiBlQihkKXtyZXR1cm5bRGEoZCksZC5yZWFkX3NoaWZ0KDQpLCJzIl19fSwxOTp7bjoiQnJ0U1NUSXRlbSIsZjpSb30sMjA6e246IkJydFBDRElNaXNzaW5nIn0sMjE6e246IkJydFBDRElOdW1iZXIifSwyMjp7bjoiQnJ0'@; put 'UENESUJvb2xlYW4ifSwyMzp7bjoiQnJ0UENESUVycm9yIn0sMjQ6e246IkJydFBDRElTdHJpbmcifSwyNTp7bjoiQnJ0UENESURhdGV0aW1lIn0sMjY6e246IkJydFBDRElJbmRleCJ9LDI3OntuOiJCcnRQQ0RJQU1pc3NpbmcifSwyODp7bjoiQnJ0UENESUFOdW1iZXIifSwyOTp7bjoiQnJ0'@; put 'UENESUFCb29sZWFuIn0sMzA6e246IkJydFBDRElBRXJyb3IifSwzMTp7bjoiQnJ0UENESUFTdHJpbmcifSwzMjp7bjoiQnJ0UENESUFEYXRldGltZSJ9LDMzOntuOiJCcnRQQ1JSZWNvcmQifSwzNDp7bjoiQnJ0UENSUmVjb3JkRHQifSwzNTp7bjoiQnJ0RlJUQmVnaW4ifSwzNjp7bjoiQnJ0'@; put 'RlJURW5kIn0sMzc6e246IkJydEFDQmVnaW4ifSwzODp7bjoiQnJ0QUNFbmQifSwzOTp7bjoiQnJ0TmFtZSIsZjpmdW5jdGlvbiBzUihkLF8sbSl7dmFyIFQ9ZC5sK187ZC5sKz00LGQubCs9MTt2YXIgUD1kLnJlYWRfc2hpZnQoNCksUT1EdShkKSxzZT1UNWUoZCwwLG0pLG9lPW5jKGQpO2Qu'@; put 'bD1UO3ZhciBkZT17TmFtZTpRLFB0ZzpzZX07cmV0dXJuIFA8MjY4NDM1NDU1JiYoZGUuU2hlZXQ9UCksb2UmJihkZS5Db21tZW50PW9lKSxkZX19LDQwOntuOiJCcnRJbmRleFJvd0Jsb2NrIn0sNDI6e246IkJydEluZGV4QmxvY2sifSw0Mzp7bjoiQnJ0Rm9udCIsZjpmdW5jdGlvbiBUSChk'@; put 'LF8sbSl7dmFyIFQ9e307VC5zej1kLnJlYWRfc2hpZnQoMikvMjA7dmFyIFA9amQoZCk7c3dpdGNoKFAuZkJvbGQmJihULmJvbGQ9MSksUC5mSXRhbGljJiYoVC5pdGFsaWM9MSksUC5mVW5kZXJsaW5lJiYoVC51bmRlcmxpbmU9MSksUC5mQ29uZGVuc2UmJihULmNvbmRlbnNlPTEpLFAuZkV4'@; put 'dGVuZCYmKFQuZXh0ZW5kPTEpLFAuZlNoYWRvdyYmKFQuc2hhZG93PTEpLFAuZk91dGxpbmUmJihULm91dGxpbmU9MSksUC5mU3RyaWtlb3V0JiYoVC5zdHJpa2U9MSksNzAwPT09ZC5yZWFkX3NoaWZ0KDIpJiYoVC5ib2xkPTEpLGQucmVhZF9zaGlmdCgyKSl7Y2FzZSAxOlQudmFsaWduPSJz'@; put 'dXBlciI7YnJlYWs7Y2FzZSAyOlQudmFsaWduPSJzdWIifXZhciBzZT1kLnJlYWRfc2hpZnQoMSk7MCE9c2UmJihULnVuZGVybGluZT1zZSk7dmFyIG9lPWQucmVhZF9zaGlmdCgxKTtvZT4wJiYoVC5mYW1pbHk9b2UpO3ZhciBkZT1kLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGRlPjAmJihULmNo'@; put 'YXJzZXQ9ZGUpLGQubCsrLFQuY29sb3I9TmwoZCksZC5yZWFkX3NoaWZ0KDEpKXtjYXNlIDE6VC5zY2hlbWU9Im1ham9yIjticmVhaztjYXNlIDI6VC5zY2hlbWU9Im1pbm9yIn1yZXR1cm4gVC5uYW1lPWlpKGQpLFR9fSw0NDp7bjoiQnJ0Rm10IixmOmZ1bmN0aW9uIHlTKGQsXyl7cmV0dXJu'@; put 'W2QucmVhZF9zaGlmdCgyKSxpaShkKV19fSw0NTp7bjoiQnJ0RmlsbCIsZjpmdW5jdGlvbiBxQShkLF8pe3ZhciBtPWQubCtfLFQ9e30sUD1kLnJlYWRfc2hpZnQoNCk7aWYoNDAhPVApe1QucGF0dGVyblR5cGU9UzhbUF07dmFyIFE9TmwoZCk7NjQhPVEuaW5kZXgmJihULmZnQ29sb3I9USk7'@; put 'dmFyIHNlPU5sKGQpOzY1IT1zZS5pbmRleCYmKFQuYmdDb2xvcj1zZSl9ZWxzZXtkLmwrPTE2LGQucmVhZF9zaGlmdCg0KSxxcyhkKSxxcyhkKSxxcyhkKSxxcyhkKSxxcyhkKTtmb3IodmFyIG9lPWQucmVhZF9zaGlmdCg0KSxkZT1bXSxMZT0wO0xlPG9lOysrTGUpZGUucHVzaChyUShkKSl9'@; put 'cmV0dXJuIGQubD1tLFR9fSw0Njp7bjoiQnJ0Qm9yZGVyIixmOmZ1bmN0aW9uIFJIKGQpe3ZhciBfPXt9O2QucmVhZF9zaGlmdCgxKTt2YXIgbT15eShkKTsibm9uZSIhPW0uc3R5bGUmJihfLnRvcD1tKTt2YXIgVD15eShkKTsibm9uZSIhPVQuc3R5bGUmJihfLmJvdHRvbT1UKTt2YXIgUD15'@; put 'eShkKTsibm9uZSIhPVAuc3R5bGUmJihfLmxlZnQ9UCk7dmFyIFE9eXkoZCk7Im5vbmUiIT1RLnN0eWxlJiYoXy5yaWdodD1RKTt2YXIgc2U9eXkoZCk7cmV0dXJuIm5vbmUiIT1zZS5zdHlsZSYmKF8uZGlhZz1zZSksX319LDQ3OntuOiJCcnRYRiIsZjpmdW5jdGlvbiBpUShkLF8pe3ZhciBt'@; put 'PWQubCtfLFQ9e30sUD1kLnJlYWRfc2hpZnQoMiksUT1kLnJlYWRfc2hpZnQoMiksc2U9ZC5yZWFkX3NoaWZ0KDIpLG9lPWQucmVhZF9zaGlmdCgyKSxkZT1kLnJlYWRfc2hpZnQoMiksTGU9ZC5yZWFkX3NoaWZ0KDEpO2QucmVhZF9zaGlmdCgxKTt2YXIgTmU9ZC5yZWFkX3NoaWZ0KDIpLEJl'@; put 'PWQucmVhZF9zaGlmdCgxKTtkLmw9bSxULnhmSWQ9UCxULm51bUZtdElkPVEsVC5mb250SWQ9c2UsVC5maWxsSWQ9b2UsVC5ib3JkZXJJZD1kZSwxJkJlJiYwIT1ULm51bUZtdElkJiYoVC5hcHBseU51bWJlckZvcm1hdD0hMCksVC5hbGlnbm1lbnQ9e30sTGU+MCYmKFQuYWxpZ25tZW50LnRl'@; put 'eHRSb3RhdGlvbj1MZSk7dmFyIFplPSExO3JldHVybiA3Jk5lJiYoWmU9ITAsVC5hbGlnbm1lbnQuaG9yaXpvbnRhbD1LQVs3Jk5lXSksVC5hbGlnbm1lbnQudmVydGljYWw9YlNbTmU+Pj4zJjddLFQuYWxpZ25tZW50LnZlcnRpY2FsJiYoWmU9ITApLE5lPj4+NiYxJiYoVC5hbGlnbm1lbnQu'@; put 'd3JhcFRleHQ9ITApLE5lPj4+OCYxJiYoVC5hbGlnbm1lbnQuc2hyaW5rVG9GaXQ9ITApLFplfHxkZWxldGUgVC5hbGlnbm1lbnQsNCZCZSYmWmUmJihULmFwcGx5QWxpZ25tZW50PSEwKSxUfX0sNDg6e246IkJydFN0eWxlIn0sNDk6e246IkJydENlbGxNZXRhIn0sNTA6e246IkJydFZhbHVl'@; put 'TWV0YSJ9LDUxOntuOiJCcnRNZGIifSw1Mjp7bjoiQnJ0QmVnaW5GbWQifSw1Mzp7bjoiQnJ0RW5kRm1kIn0sNTQ6e246IkJydEJlZ2luTWR4In0sNTU6e246IkJydEVuZE1keCJ9LDU2OntuOiJCcnRCZWdpbk1keFR1cGxlIn0sNTc6e246IkJydEVuZE1keFR1cGxlIn0sNTg6e246IkJydE1k'@; put 'eE1icklzdHIifSw1OTp7bjoiQnJ0U3RyIn0sNjA6e246IkJydENvbEluZm8iLGY6bTh9LDYyOntuOiJCcnRDZWxsUlN0cmluZyJ9LDYzOntuOiJCcnRDYWxjQ2hhaW5JdGVtJCIsZjpmdW5jdGlvbiBtUShkKXt2YXIgXz17fTtfLmk9ZC5yZWFkX3NoaWZ0KDQpO3ZhciBtPXt9O20ucj1kLnJl'@; put 'YWRfc2hpZnQoNCksbS5jPWQucmVhZF9zaGlmdCg0KSxfLnI9cWkobSk7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDEpO3JldHVybiAyJlQmJihfLmw9IjEiKSw4JlQmJihfLmE9IjEiKSxffX0sNjQ6e246IkJydERWYWwiLGY6ZnVuY3Rpb24gUUooZCxfLG0pe3ZhciBUPWQubCtfLFA9ZC5yZWFkX3No'@; put 'aWZ0KDQpLFE9dzIoZCksc2U9bmMoZCksb2U9bmMoZCksZGU9bmMoZCksTGU9bmMoZCksTmU9VFYoZCxfLG0pLEJlPWQubDxUP1RWKGQsXyxtKTpudWxsLFplPTE1JlAsbnQ9e3Q6SmtbWmVdLHNxcmZ4OlEsczpbc2Usb2UsZGUsTGVdfTtyZXR1cm4gTmUmJihudC5mMT1OZSksQmUmJihudC5m'@; put 'Mj1CZSksMD09WmV8fDM9PVplfHw3PT1aZXx8KG50Lm9wPVB5W1A+PjIwJjE1XSksbnR9fSw2NTp7bjoiQnJ0U3h2Y2VsbE51bSJ9LDY2OntuOiJCcnRTeHZjZWxsU3RyIn0sNjc6e246IkJydFN4dmNlbGxCb29sIn0sNjg6e246IkJydFN4dmNlbGxFcnIifSw2OTp7bjoiQnJ0U3h2Y2VsbERh'@; put 'dGUifSw3MDp7bjoiQnJ0U3h2Y2VsbE5pbCJ9LDEyODp7bjoiQnJ0RmlsZVZlcnNpb24ifSwxMjk6e246IkJydEJlZ2luU2hlZXQifSwxMzA6e246IkJydEVuZFNoZWV0In0sMTMxOntuOiJCcnRCZWdpbkJvb2siLGY6RWMscDowfSwxMzI6e246IkJydEVuZEJvb2sifSwxMzM6e246IkJydEJl'@; put 'Z2luV3NWaWV3cyJ9LDEzNDp7bjoiQnJ0RW5kV3NWaWV3cyJ9LDEzNTp7bjoiQnJ0QmVnaW5Cb29rVmlld3MifSwxMzY6e246IkJydEVuZEJvb2tWaWV3cyJ9LDEzNzp7bjoiQnJ0QmVnaW5Xc1ZpZXciLGY6ZnVuY3Rpb24gdUIoZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDIpO3JldHVybiBkLmwr'@; put 'PTI4LHtSVEw6MzImXyxncmlkOiEhKDQmXyl9fX0sMTM4OntuOiJCcnRFbmRXc1ZpZXcifSwxMzk6e246IkJydEJlZ2luQ3NWaWV3cyJ9LDE0MDp7bjoiQnJ0RW5kQ3NWaWV3cyJ9LDE0MTp7bjoiQnJ0QmVnaW5Dc1ZpZXcifSwxNDI6e246IkJydEVuZENzVmlldyJ9LDE0Mzp7bjoiQnJ0QmVn'@; put 'aW5CdW5kbGVTaHMifSwxNDQ6e246IkJydEVuZEJ1bmRsZVNocyJ9LDE0NTp7bjoiQnJ0QmVnaW5TaGVldERhdGEifSwxNDY6e246IkJydEVuZFNoZWV0RGF0YSJ9LDE0Nzp7bjoiQnJ0V3NQcm9wIixmOmZ1bmN0aW9uICRWKGQsXyl7dmFyIG09e30sVD1kW2QubF07cmV0dXJuKytkLmwsbS5h'@; put 'Ym92ZT0hKDY0JlQpLG0ubGVmdD0hKDEyOCZUKSxkLmwrPTE4LG0ubmFtZT1FbChkLF8tMTkpLG19fSwxNDg6e246IkJydFdzRGltIixmOkZKLHA6MTZ9LDE1MTp7bjoiQnJ0UGFuZSIsZjpmdW5jdGlvbiBRayhkLF8pe3ZhciBtPWQubCtfO3FzKGQpLHFzKGQpO3ZhciBUPWQucmVhZF9zaGlm'@; put 'dCg0LCJpIiksUD1kLnJlYWRfc2hpZnQoNCwiaSIpO2lmKGQucmVhZF9zaGlmdCg0KSxkLnJlYWRfc2hpZnQoMSksbSE9ZC5sKXRocm93IG5ldyBFcnJvcigiQmFkIEJydFBhbmU6ICIrbSsiICE9ICIrZC5sKTtyZXR1cm5bcWkoe3I6VCxjOlB9KV19fSwxNTI6e246IkJydFNlbCIsZjpmdW5j'@; put 'dGlvbiBzQihkLF8pe3JldHVybiBkLnJlYWRfc2hpZnQoNCkse2NlbGw6cWkoe3I6ZC5yZWFkX3NoaWZ0KDQpLGM6ZC5yZWFkX3NoaWZ0KDQpfSl9fX0sMTUzOntuOiJCcnRXYlByb3AiLGY6ZnVuY3Rpb24gYVIoZCxfKXt2YXIgbT17fSxUPWQucmVhZF9zaGlmdCg0KTttLmRlZmF1bHRUaGVt'@; put 'ZVZlcnNpb249ZC5yZWFkX3NoaWZ0KDQpO3ZhciBQPV8+OD9paShkKToiIjtyZXR1cm4gUC5sZW5ndGg+MCYmKG0uQ29kZU5hbWU9UCksbS5hdXRvQ29tcHJlc3NQaWN0dXJlcz0hISg2NTUzNiZUKSxtLmJhY2t1cEZpbGU9ISEoNjQmVCksbS5jaGVja0NvbXBhdGliaWxpdHk9ISEoNDA5NiZU'@; put 'KSxtLmRhdGUxOTA0PSEhKDEmVCksbS5maWx0ZXJQcml2YWN5PSEhKDgmVCksbS5oaWRlUGl2b3RGaWVsZExpc3Q9ISEoMTAyNCZUKSxtLnByb21wdGVkU29sdXRpb25zPSEhKDE2JlQpLG0ucHVibGlzaEl0ZW1zPSEhKDIwNDgmVCksbS5yZWZyZXNoQWxsQ29ubmVjdGlvbnM9ISEoMjYyMTQ0'@; put 'JlQpLG0uc2F2ZUV4dGVybmFsTGlua1ZhbHVlcz0hISgxMjgmVCksbS5zaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcz0hISg0JlQpLG0uc2hvd0lua0Fubm90YXRpb249ISEoMzImVCksbS5zaG93T2JqZWN0cz1bImFsbCIsInBsYWNlaG9sZGVycyIsIm5vbmUiXVtUPj4xMyYzXSxtLnNob3dQ'@; put 'aXZvdENoYXJ0RmlsdGVyPSEhKDMyNzY4JlQpLG0udXBkYXRlTGlua3M9WyJ1c2VyU2V0IiwibmV2ZXIiLCJhbHdheXMiXVtUPj44JjNdLG19fSwxNTQ6e246IkJydFdiRmFjdG9pZCJ9LDE1NTp7bjoiQnJ0RmlsZVJlY292ZXIifSwxNTY6e246IkJydEJ1bmRsZVNoIixmOmZ1bmN0aW9uIGdh'@; put 'KGQsXyl7dmFyIG09e307cmV0dXJuIG0uSGlkZGVuPWQucmVhZF9zaGlmdCg0KSxtLmlUYWJJRD1kLnJlYWRfc2hpZnQoNCksbS5zdHJSZWxJRD1lMShkLF8tOCksbS5uYW1lPWlpKGQpLG19fSwxNTc6e246IkJydENhbGNQcm9wIn0sMTU4OntuOiJCcnRCb29rVmlldyJ9LDE1OTp7bjoiQnJ0'@; put 'QmVnaW5Tc3QiLGY6ZnVuY3Rpb24gcDAoZCl7cmV0dXJuW2QucmVhZF9zaGlmdCg0KSxkLnJlYWRfc2hpZnQoNCldfX0sMTYwOntuOiJCcnRFbmRTc3QifSwxNjE6e246IkJydEJlZ2luQUZpbHRlciIsZjpqdX0sMTYyOntuOiJCcnRFbmRBRmlsdGVyIn0sMTYzOntuOiJCcnRCZWdpbkZpbHRl'@; put 'ckNvbHVtbiJ9LDE2NDp7bjoiQnJ0RW5kRmlsdGVyQ29sdW1uIn0sMTY1OntuOiJCcnRCZWdpbkZpbHRlcnMifSwxNjY6e246IkJydEVuZEZpbHRlcnMifSwxNjc6e246IkJydEZpbHRlciJ9LDE2ODp7bjoiQnJ0Q29sb3JGaWx0ZXIifSwxNjk6e246IkJydEljb25GaWx0ZXIifSwxNzA6e246'@; put 'IkJydFRvcDEwRmlsdGVyIn0sMTcxOntuOiJCcnREeW5hbWljRmlsdGVyIn0sMTcyOntuOiJCcnRCZWdpbkN1c3RvbUZpbHRlcnMifSwxNzM6e246IkJydEVuZEN1c3RvbUZpbHRlcnMifSwxNzQ6e246IkJydEN1c3RvbUZpbHRlciJ9LDE3NTp7bjoiQnJ0QUZpbHRlckRhdGVHcm91cEl0ZW0i'@; put 'fSwxNzY6e246IkJydE1lcmdlQ2VsbCIsZjp6NWV9LDE3Nzp7bjoiQnJ0QmVnaW5NZXJnZUNlbGxzIn0sMTc4OntuOiJCcnRFbmRNZXJnZUNlbGxzIn0sMTc5OntuOiJCcnRCZWdpblBpdm90Q2FjaGVEZWYifSwxODA6e246IkJydEVuZFBpdm90Q2FjaGVEZWYifSwxODE6e246IkJydEJlZ2lu'@; put 'UENERmllbGRzIn0sMTgyOntuOiJCcnRFbmRQQ0RGaWVsZHMifSwxODM6e246IkJydEJlZ2luUENERmllbGQifSwxODQ6e246IkJydEVuZFBDREZpZWxkIn0sMTg1OntuOiJCcnRCZWdpblBDRFNvdXJjZSJ9LDE4Njp7bjoiQnJ0RW5kUENEU291cmNlIn0sMTg3OntuOiJCcnRCZWdpblBDRFNS'@; put 'YW5nZSJ9LDE4ODp7bjoiQnJ0RW5kUENEU1JhbmdlIn0sMTg5OntuOiJCcnRCZWdpblBDREZBdGJsIn0sMTkwOntuOiJCcnRFbmRQQ0RGQXRibCJ9LDE5MTp7bjoiQnJ0QmVnaW5QQ0RJUnVuIn0sMTkyOntuOiJCcnRFbmRQQ0RJUnVuIn0sMTkzOntuOiJCcnRCZWdpblBpdm90Q2FjaGVSZWNv'@; put 'cmRzIn0sMTk0OntuOiJCcnRFbmRQaXZvdENhY2hlUmVjb3JkcyJ9LDE5NTp7bjoiQnJ0QmVnaW5QQ0RIaWVyYXJjaGllcyJ9LDE5Njp7bjoiQnJ0RW5kUENESGllcmFyY2hpZXMifSwxOTc6e246IkJydEJlZ2luUENESGllcmFyY2h5In0sMTk4OntuOiJCcnRFbmRQQ0RIaWVyYXJjaHkifSwx'@; put 'OTk6e246IkJydEJlZ2luUENESEZpZWxkc1VzYWdlIn0sMjAwOntuOiJCcnRFbmRQQ0RIRmllbGRzVXNhZ2UifSwyMDE6e246IkJydEJlZ2luRXh0Q29ubmVjdGlvbiJ9LDIwMjp7bjoiQnJ0RW5kRXh0Q29ubmVjdGlvbiJ9LDIwMzp7bjoiQnJ0QmVnaW5FQ0RiUHJvcHMifSwyMDQ6e246IkJy'@; put 'dEVuZEVDRGJQcm9wcyJ9LDIwNTp7bjoiQnJ0QmVnaW5FQ09sYXBQcm9wcyJ9LDIwNjp7bjoiQnJ0RW5kRUNPbGFwUHJvcHMifSwyMDc6e246IkJydEJlZ2luUENEU0NvbnNvbCJ9LDIwODp7bjoiQnJ0RW5kUENEU0NvbnNvbCJ9LDIwOTp7bjoiQnJ0QmVnaW5QQ0RTQ1BhZ2VzIn0sMjEwOntu'@; put 'OiJCcnRFbmRQQ0RTQ1BhZ2VzIn0sMjExOntuOiJCcnRCZWdpblBDRFNDUGFnZSJ9LDIxMjp7bjoiQnJ0RW5kUENEU0NQYWdlIn0sMjEzOntuOiJCcnRCZWdpblBDRFNDUEl0ZW0ifSwyMTQ6e246IkJydEVuZFBDRFNDUEl0ZW0ifSwyMTU6e246IkJydEJlZ2luUENEU0NTZXRzIn0sMjE2Ontu'@; put 'OiJCcnRFbmRQQ0RTQ1NldHMifSwyMTc6e246IkJydEJlZ2luUENEU0NTZXQifSwyMTg6e246IkJydEVuZFBDRFNDU2V0In0sMjE5OntuOiJCcnRCZWdpblBDREZHcm91cCJ9LDIyMDp7bjoiQnJ0RW5kUENERkdyb3VwIn0sMjIxOntuOiJCcnRCZWdpblBDREZHSXRlbXMifSwyMjI6e246IkJy'@; put 'dEVuZFBDREZHSXRlbXMifSwyMjM6e246IkJydEJlZ2luUENERkdSYW5nZSJ9LDIyNDp7bjoiQnJ0RW5kUENERkdSYW5nZSJ9LDIyNTp7bjoiQnJ0QmVnaW5QQ0RGR0Rpc2NyZXRlIn0sMjI2OntuOiJCcnRFbmRQQ0RGR0Rpc2NyZXRlIn0sMjI3OntuOiJCcnRCZWdpblBDRFNEVHVwbGVDYWNo'@; put 'ZSJ9LDIyODp7bjoiQnJ0RW5kUENEU0RUdXBsZUNhY2hlIn0sMjI5OntuOiJCcnRCZWdpblBDRFNEVENFbnRyaWVzIn0sMjMwOntuOiJCcnRFbmRQQ0RTRFRDRW50cmllcyJ9LDIzMTp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnMifSwyMzI6e246IkJydEVuZFBDRFNEVENFTWVtYmVycyJ9'@; put 'LDIzMzp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlciJ9LDIzNDp7bjoiQnJ0RW5kUENEU0RUQ0VNZW1iZXIifSwyMzU6e246IkJydEJlZ2luUENEU0RUQ1F1ZXJpZXMifSwyMzY6e246IkJydEVuZFBDRFNEVENRdWVyaWVzIn0sMjM3OntuOiJCcnRCZWdpblBDRFNEVENRdWVyeSJ9LDIzODp7'@; put 'bjoiQnJ0RW5kUENEU0RUQ1F1ZXJ5In0sMjM5OntuOiJCcnRCZWdpblBDRFNEVENTZXRzIn0sMjQwOntuOiJCcnRFbmRQQ0RTRFRDU2V0cyJ9LDI0MTp7bjoiQnJ0QmVnaW5QQ0RTRFRDU2V0In0sMjQyOntuOiJCcnRFbmRQQ0RTRFRDU2V0In0sMjQzOntuOiJCcnRCZWdpblBDRENhbGNJdGVt'@; put 'cyJ9LDI0NDp7bjoiQnJ0RW5kUENEQ2FsY0l0ZW1zIn0sMjQ1OntuOiJCcnRCZWdpblBDRENhbGNJdGVtIn0sMjQ2OntuOiJCcnRFbmRQQ0RDYWxjSXRlbSJ9LDI0Nzp7bjoiQnJ0QmVnaW5QUnVsZSJ9LDI0ODp7bjoiQnJ0RW5kUFJ1bGUifSwyNDk6e246IkJydEJlZ2luUFJGaWx0ZXJzIn0s'@; put 'MjUwOntuOiJCcnRFbmRQUkZpbHRlcnMifSwyNTE6e246IkJydEJlZ2luUFJGaWx0ZXIifSwyNTI6e246IkJydEVuZFBSRmlsdGVyIn0sMjUzOntuOiJCcnRCZWdpblBOYW1lcyJ9LDI1NDp7bjoiQnJ0RW5kUE5hbWVzIn0sMjU1OntuOiJCcnRCZWdpblBOYW1lIn0sMjU2OntuOiJCcnRFbmRQ'@; put 'TmFtZSJ9LDI1Nzp7bjoiQnJ0QmVnaW5QTlBhaXJzIn0sMjU4OntuOiJCcnRFbmRQTlBhaXJzIn0sMjU5OntuOiJCcnRCZWdpblBOUGFpciJ9LDI2MDp7bjoiQnJ0RW5kUE5QYWlyIn0sMjYxOntuOiJCcnRCZWdpbkVDV2ViUHJvcHMifSwyNjI6e246IkJydEVuZEVDV2ViUHJvcHMifSwyNjM6'@; put 'e246IkJydEJlZ2luRWNXcFRhYmxlcyJ9LDI2NDp7bjoiQnJ0RW5kRUNXUFRhYmxlcyJ9LDI2NTp7bjoiQnJ0QmVnaW5FQ1BhcmFtcyJ9LDI2Njp7bjoiQnJ0RW5kRUNQYXJhbXMifSwyNjc6e246IkJydEJlZ2luRUNQYXJhbSJ9LDI2ODp7bjoiQnJ0RW5kRUNQYXJhbSJ9LDI2OTp7bjoiQnJ0'@; put 'QmVnaW5QQ0RLUElzIn0sMjcwOntuOiJCcnRFbmRQQ0RLUElzIn0sMjcxOntuOiJCcnRCZWdpblBDREtQSSJ9LDI3Mjp7bjoiQnJ0RW5kUENES1BJIn0sMjczOntuOiJCcnRCZWdpbkRpbXMifSwyNzQ6e246IkJydEVuZERpbXMifSwyNzU6e246IkJydEJlZ2luRGltIn0sMjc2OntuOiJCcnRF'@; put 'bmREaW0ifSwyNzc6e246IkJydEluZGV4UGFydEVuZCJ9LDI3ODp7bjoiQnJ0QmVnaW5TdHlsZVNoZWV0In0sMjc5OntuOiJCcnRFbmRTdHlsZVNoZWV0In0sMjgwOntuOiJCcnRCZWdpblNYVmlldyJ9LDI4MTp7bjoiQnJ0RW5kU1hWSSJ9LDI4Mjp7bjoiQnJ0QmVnaW5TWFZJIn0sMjgzOntu'@; put 'OiJCcnRCZWdpblNYVklzIn0sMjg0OntuOiJCcnRFbmRTWFZJcyJ9LDI4NTp7bjoiQnJ0QmVnaW5TWFZEIn0sMjg2OntuOiJCcnRFbmRTWFZEIn0sMjg3OntuOiJCcnRCZWdpblNYVkRzIn0sMjg4OntuOiJCcnRFbmRTWFZEcyJ9LDI4OTp7bjoiQnJ0QmVnaW5TWFBJIn0sMjkwOntuOiJCcnRF'@; put 'bmRTWFBJIn0sMjkxOntuOiJCcnRCZWdpblNYUElzIn0sMjkyOntuOiJCcnRFbmRTWFBJcyJ9LDI5Mzp7bjoiQnJ0QmVnaW5TWERJIn0sMjk0OntuOiJCcnRFbmRTWERJIn0sMjk1OntuOiJCcnRCZWdpblNYRElzIn0sMjk2OntuOiJCcnRFbmRTWERJcyJ9LDI5Nzp7bjoiQnJ0QmVnaW5TWExJ'@; put 'In0sMjk4OntuOiJCcnRFbmRTWExJIn0sMjk5OntuOiJCcnRCZWdpblNYTElSd3MifSwzMDA6e246IkJydEVuZFNYTElSd3MifSwzMDE6e246IkJydEJlZ2luU1hMSUNvbHMifSwzMDI6e246IkJydEVuZFNYTElDb2xzIn0sMzAzOntuOiJCcnRCZWdpblNYRm9ybWF0In0sMzA0OntuOiJCcnRF'@; put 'bmRTWEZvcm1hdCJ9LDMwNTp7bjoiQnJ0QmVnaW5TWEZvcm1hdHMifSwzMDY6e246IkJydEVuZFN4Rm9ybWF0cyJ9LDMwNzp7bjoiQnJ0QmVnaW5TeFNlbGVjdCJ9LDMwODp7bjoiQnJ0RW5kU3hTZWxlY3QifSwzMDk6e246IkJydEJlZ2luSVNYVkRSd3MifSwzMTA6e246IkJydEVuZElTWFZE'@; put 'UndzIn0sMzExOntuOiJCcnRCZWdpbklTWFZEQ29scyJ9LDMxMjp7bjoiQnJ0RW5kSVNYVkRDb2xzIn0sMzEzOntuOiJCcnRFbmRTWExvY2F0aW9uIn0sMzE0OntuOiJCcnRCZWdpblNYTG9jYXRpb24ifSwzMTU6e246IkJydEVuZFNYVmlldyJ9LDMxNjp7bjoiQnJ0QmVnaW5TWFRIcyJ9LDMx'@; put 'Nzp7bjoiQnJ0RW5kU1hUSHMifSwzMTg6e246IkJydEJlZ2luU1hUSCJ9LDMxOTp7bjoiQnJ0RW5kU1hUSCJ9LDMyMDp7bjoiQnJ0QmVnaW5JU1hUSFJ3cyJ9LDMyMTp7bjoiQnJ0RW5kSVNYVEhSd3MifSwzMjI6e246IkJydEJlZ2luSVNYVEhDb2xzIn0sMzIzOntuOiJCcnRFbmRJU1hUSENv'@; put 'bHMifSwzMjQ6e246IkJydEJlZ2luU1hURE1QUyJ9LDMyNTp7bjoiQnJ0RW5kU1hURE1QcyJ9LDMyNjp7bjoiQnJ0QmVnaW5TWFRETVAifSwzMjc6e246IkJydEVuZFNYVERNUCJ9LDMyODp7bjoiQnJ0QmVnaW5TWFRISXRlbXMifSwzMjk6e246IkJydEVuZFNYVEhJdGVtcyJ9LDMzMDp7bjoi'@; put 'QnJ0QmVnaW5TWFRISXRlbSJ9LDMzMTp7bjoiQnJ0RW5kU1hUSEl0ZW0ifSwzMzI6e246IkJydEJlZ2luTWV0YWRhdGEifSwzMzM6e246IkJydEVuZE1ldGFkYXRhIn0sMzM0OntuOiJCcnRCZWdpbkVzbWR0aW5mbyJ9LDMzNTp7bjoiQnJ0TWR0aW5mbyJ9LDMzNjp7bjoiQnJ0RW5kRXNtZHRp'@; put 'bmZvIn0sMzM3OntuOiJCcnRCZWdpbkVzbWRiIn0sMzM4OntuOiJCcnRFbmRFc21kYiJ9LDMzOTp7bjoiQnJ0QmVnaW5Fc2ZtZCJ9LDM0MDp7bjoiQnJ0RW5kRXNmbWQifSwzNDE6e246IkJydEJlZ2luU2luZ2xlQ2VsbHMifSwzNDI6e246IkJydEVuZFNpbmdsZUNlbGxzIn0sMzQzOntuOiJC'@; put 'cnRCZWdpbkxpc3QifSwzNDQ6e246IkJydEVuZExpc3QifSwzNDU6e246IkJydEJlZ2luTGlzdENvbHMifSwzNDY6e246IkJydEVuZExpc3RDb2xzIn0sMzQ3OntuOiJCcnRCZWdpbkxpc3RDb2wifSwzNDg6e246IkJydEVuZExpc3RDb2wifSwzNDk6e246IkJydEJlZ2luTGlzdFhtbENQciJ9'@; put 'LDM1MDp7bjoiQnJ0RW5kTGlzdFhtbENQciJ9LDM1MTp7bjoiQnJ0TGlzdENDRm1sYSJ9LDM1Mjp7bjoiQnJ0TGlzdFRyRm1sYSJ9LDM1Mzp7bjoiQnJ0QmVnaW5FeHRlcm5hbHMifSwzNTQ6e246IkJydEVuZEV4dGVybmFscyJ9LDM1NTp7bjoiQnJ0U3VwQm9va1NyYyIsZjplMX0sMzU3Ontu'@; put 'OiJCcnRTdXBTZWxmIn0sMzU4OntuOiJCcnRTdXBTYW1lIn0sMzU5OntuOiJCcnRTdXBUYWJzIn0sMzYwOntuOiJCcnRCZWdpblN1cEJvb2sifSwzNjE6e246IkJydFBsYWNlaG9sZGVyTmFtZSJ9LDM2Mjp7bjoiQnJ0RXh0ZXJuU2hlZXQiLGY6SUF9LDM2Mzp7bjoiQnJ0RXh0ZXJuVGFibGVT'@; put 'dGFydCJ9LDM2NDp7bjoiQnJ0RXh0ZXJuVGFibGVFbmQifSwzNjY6e246IkJydEV4dGVyblJvd0hkciJ9LDM2Nzp7bjoiQnJ0RXh0ZXJuQ2VsbEJsYW5rIn0sMzY4OntuOiJCcnRFeHRlcm5DZWxsUmVhbCJ9LDM2OTp7bjoiQnJ0RXh0ZXJuQ2VsbEJvb2wifSwzNzA6e246IkJydEV4dGVybkNl'@; put 'bGxFcnJvciJ9LDM3MTp7bjoiQnJ0RXh0ZXJuQ2VsbFN0cmluZyJ9LDM3Mjp7bjoiQnJ0QmVnaW5Fc21keCJ9LDM3Mzp7bjoiQnJ0RW5kRXNtZHgifSwzNzQ6e246IkJydEJlZ2luTWR4U2V0In0sMzc1OntuOiJCcnRFbmRNZHhTZXQifSwzNzY6e246IkJydEJlZ2luTWR4TWJyUHJvcCJ9LDM3'@; put 'Nzp7bjoiQnJ0RW5kTWR4TWJyUHJvcCJ9LDM3ODp7bjoiQnJ0QmVnaW5NZHhLUEkifSwzNzk6e246IkJydEVuZE1keEtQSSJ9LDM4MDp7bjoiQnJ0QmVnaW5Fc3N0ciJ9LDM4MTp7bjoiQnJ0RW5kRXNzdHIifSwzODI6e246IkJydEJlZ2luUFJGSXRlbSJ9LDM4Mzp7bjoiQnJ0RW5kUFJGSXRl'@; put 'bSJ9LDM4NDp7bjoiQnJ0QmVnaW5QaXZvdENhY2hlSURzIn0sMzg1OntuOiJCcnRFbmRQaXZvdENhY2hlSURzIn0sMzg2OntuOiJCcnRCZWdpblBpdm90Q2FjaGVJRCJ9LDM4Nzp7bjoiQnJ0RW5kUGl2b3RDYWNoZUlEIn0sMzg4OntuOiJCcnRCZWdpbklTWFZJcyJ9LDM4OTp7bjoiQnJ0RW5k'@; put 'SVNYVklzIn0sMzkwOntuOiJCcnRCZWdpbkNvbEluZm9zIn0sMzkxOntuOiJCcnRFbmRDb2xJbmZvcyJ9LDM5Mjp7bjoiQnJ0QmVnaW5Sd0JyayJ9LDM5Mzp7bjoiQnJ0RW5kUndCcmsifSwzOTQ6e246IkJydEJlZ2luQ29sQnJrIn0sMzk1OntuOiJCcnRFbmRDb2xCcmsifSwzOTY6e246IkJy'@; put 'dEJyayJ9LDM5Nzp7bjoiQnJ0VXNlckJvb2tWaWV3In0sMzk4OntuOiJCcnRJbmZvIn0sMzk5OntuOiJCcnRDVXNyIn0sNDAwOntuOiJCcnRVc3IifSw0MDE6e246IkJydEJlZ2luVXNlcnMifSw0MDM6e246IkJydEVPRiJ9LDQwNDp7bjoiQnJ0VUNSIn0sNDA1OntuOiJCcnRSUkluc0RlbCJ9'@; put 'LDQwNjp7bjoiQnJ0UlJFbmRJbnNEZWwifSw0MDc6e246IkJydFJSTW92ZSJ9LDQwODp7bjoiQnJ0UlJFbmRNb3ZlIn0sNDA5OntuOiJCcnRSUkNoZ0NlbGwifSw0MTA6e246IkJydFJSRW5kQ2hnQ2VsbCJ9LDQxMTp7bjoiQnJ0UlJIZWFkZXIifSw0MTI6e246IkJydFJSVXNlclZpZXcifSw0'@; put 'MTM6e246IkJydFJSUmVuU2hlZXQifSw0MTQ6e246IkJydFJSSW5zZXJ0U2gifSw0MTU6e246IkJydFJSRGVmTmFtZSJ9LDQxNjp7bjoiQnJ0UlJOb3RlIn0sNDE3OntuOiJCcnRSUkNvbmZsaWN0In0sNDE4OntuOiJCcnRSUlRRU0lGIn0sNDE5OntuOiJCcnRSUkZvcm1hdCJ9LDQyMDp7bjoi'@; put 'QnJ0UlJFbmRGb3JtYXQifSw0MjE6e246IkJydFJSQXV0b0ZtdCJ9LDQyMjp7bjoiQnJ0QmVnaW5Vc2VyU2hWaWV3cyJ9LDQyMzp7bjoiQnJ0QmVnaW5Vc2VyU2hWaWV3In0sNDI0OntuOiJCcnRFbmRVc2VyU2hWaWV3In0sNDI1OntuOiJCcnRFbmRVc2VyU2hWaWV3cyJ9LDQyNjp7bjoiQnJ0'@; put 'QXJyRm1sYSIsZjpmdW5jdGlvbiBWZyhkLF8sbSl7dmFyIFQ9ZC5sK18sUD1iMihkKSxRPWQucmVhZF9zaGlmdCgxKSxzZT1bUF07aWYoc2VbMl09USxtLmNlbGxGb3JtdWxhKXt2YXIgb2U9TVYoZCxULWQubCxtKTtzZVsxXT1vZX1lbHNlIGQubD1UO3JldHVybiBzZX19LDQyNzp7bjoiQnJ0'@; put 'U2hyRm1sYSIsZjpmdW5jdGlvbiBsQihkLF8sbSl7dmFyIFQ9ZC5sK18sUT1banUoZCwxNildO2lmKG0uY2VsbEZvcm11bGEpe3ZhciBzZT14NWUoZCxULWQubCxtKTtRWzFdPXNlLGQubD1UfWVsc2UgZC5sPVQ7cmV0dXJuIFF9fSw0Mjg6e246IkJydFRhYmxlIn0sNDI5OntuOiJCcnRCZWdp'@; put 'bkV4dENvbm5lY3Rpb25zIn0sNDMwOntuOiJCcnRFbmRFeHRDb25uZWN0aW9ucyJ9LDQzMTp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtcyJ9LDQzMjp7bjoiQnJ0RW5kUENEQ2FsY01lbXMifSw0MzM6e246IkJydEJlZ2luUENEQ2FsY01lbSJ9LDQzNDp7bjoiQnJ0RW5kUENEQ2FsY01lbSJ9LDQz'@; put 'NTp7bjoiQnJ0QmVnaW5QQ0RIR0xldmVscyJ9LDQzNjp7bjoiQnJ0RW5kUENESEdMZXZlbHMifSw0Mzc6e246IkJydEJlZ2luUENESEdMZXZlbCJ9LDQzODp7bjoiQnJ0RW5kUENESEdMZXZlbCJ9LDQzOTp7bjoiQnJ0QmVnaW5QQ0RIR0xHcm91cHMifSw0NDA6e246IkJydEVuZFBDREhHTEdy'@; put 'b3VwcyJ9LDQ0MTp7bjoiQnJ0QmVnaW5QQ0RIR0xHcm91cCJ9LDQ0Mjp7bjoiQnJ0RW5kUENESEdMR3JvdXAifSw0NDM6e246IkJydEJlZ2luUENESEdMR01lbWJlcnMifSw0NDQ6e246IkJydEVuZFBDREhHTEdNZW1iZXJzIn0sNDQ1OntuOiJCcnRCZWdpblBDREhHTEdNZW1iZXIifSw0NDY6'@; put 'e246IkJydEVuZFBDREhHTEdNZW1iZXIifSw0NDc6e246IkJydEJlZ2luUVNJIn0sNDQ4OntuOiJCcnRFbmRRU0kifSw0NDk6e246IkJydEJlZ2luUVNJUiJ9LDQ1MDp7bjoiQnJ0RW5kUVNJUiJ9LDQ1MTp7bjoiQnJ0QmVnaW5EZWxldGVkTmFtZXMifSw0NTI6e246IkJydEVuZERlbGV0ZWRO'@; put 'YW1lcyJ9LDQ1Mzp7bjoiQnJ0QmVnaW5EZWxldGVkTmFtZSJ9LDQ1NDp7bjoiQnJ0RW5kRGVsZXRlZE5hbWUifSw0NTU6e246IkJydEJlZ2luUVNJRnMifSw0NTY6e246IkJydEVuZFFTSUZzIn0sNDU3OntuOiJCcnRCZWdpblFTSUYifSw0NTg6e246IkJydEVuZFFTSUYifSw0NTk6e246IkJy'@; put 'dEJlZ2luQXV0b1NvcnRTY29wZSJ9LDQ2MDp7bjoiQnJ0RW5kQXV0b1NvcnRTY29wZSJ9LDQ2MTp7bjoiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmcifSw0NjI6e246IkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZyJ9LDQ2Mzp7bjoiQnJ0QmVnaW5DRlJ1bGUifSw0NjQ6e246IkJy'@; put 'dEVuZENGUnVsZSJ9LDQ2NTp7bjoiQnJ0QmVnaW5JY29uU2V0In0sNDY2OntuOiJCcnRFbmRJY29uU2V0In0sNDY3OntuOiJCcnRCZWdpbkRhdGFiYXIifSw0Njg6e246IkJydEVuZERhdGFiYXIifSw0Njk6e246IkJydEJlZ2luQ29sb3JTY2FsZSJ9LDQ3MDp7bjoiQnJ0RW5kQ29sb3JTY2Fs'@; put 'ZSJ9LDQ3MTp7bjoiQnJ0Q0ZWTyJ9LDQ3Mjp7bjoiQnJ0RXh0ZXJuVmFsdWVNZXRhIn0sNDczOntuOiJCcnRCZWdpbkNvbG9yUGFsZXR0ZSJ9LDQ3NDp7bjoiQnJ0RW5kQ29sb3JQYWxldHRlIn0sNDc1OntuOiJCcnRJbmRleGVkQ29sb3IifSw0NzY6e246IkJydE1hcmdpbnMiLGY6ZnVuY3Rp'@; put 'b24gWTVlKGQpe3ZhciBfPXt9O3JldHVybiBjQi5mb3JFYWNoKGZ1bmN0aW9uKG0pe19bbV09cXMoZCl9KSxffX0sNDc3OntuOiJCcnRQcmludE9wdGlvbnMifSw0Nzg6e246IkJydFBhZ2VTZXR1cCJ9LDQ3OTp7bjoiQnJ0QmVnaW5IZWFkZXJGb290ZXIifSw0ODA6e246IkJydEVuZEhlYWRl'@; put 'ckZvb3RlciJ9LDQ4MTp7bjoiQnJ0QmVnaW5TWENydEZvcm1hdCJ9LDQ4Mjp7bjoiQnJ0RW5kU1hDcnRGb3JtYXQifSw0ODM6e246IkJydEJlZ2luU1hDcnRGb3JtYXRzIn0sNDg0OntuOiJCcnRFbmRTWENydEZvcm1hdHMifSw0ODU6e246IkJydFdzRm10SW5mbyIsZjpmdW5jdGlvbiBISihk'@; put 'KXt2YXIgXz17fSxtPXt9LFQ9e30sUD1kLnJlYWRfc2hpZnQoNCksUT1kLnJlYWRfc2hpZnQoMik7VC53Y2g9UDw9NjU1MzY/UC8yNTY6UTt2YXIgc2U9ZC5yZWFkX3NoaWZ0KDIpO20uaHB0PXNlLzIwO3ZhciBvZT1kLnJlYWRfc2hpZnQoMik7cmV0dXJuIDImb2UmJihtLmhpZGRlbj0hMCks'@; put 'NCZvZSYmKF8udG9wdGhpY2s9ITApLDgmb2UmJihfLmJvdHRoaWNrPSEwKSxfLnJvd291dGxpbmU9ZC5yZWFkX3NoaWZ0KDEpLF8uY29sb3V0bGluZT1kLnJlYWRfc2hpZnQoMSksV0EobSksXy5yb3c9bSxCMChUKSxfLmNvbD1ULF99fSw0ODY6e246IkJydEJlZ2luTWdzIn0sNDg3OntuOiJC'@; put 'cnRFbmRNR3MifSw0ODg6e246IkJydEJlZ2luTUdNYXBzIn0sNDg5OntuOiJCcnRFbmRNR01hcHMifSw0OTA6e246IkJydEJlZ2luTUcifSw0OTE6e246IkJydEVuZE1HIn0sNDkyOntuOiJCcnRCZWdpbk1hcCJ9LDQ5Mzp7bjoiQnJ0RW5kTWFwIn0sNDk0OntuOiJCcnRITGluayIsZjpmdW5j'@; put 'dGlvbiBxSihkLF8pe3ZhciBtPWQubCtfLFQ9anUoZCwxNiksUD1uYyhkKSxRPWlpKGQpLHNlPWlpKGQpLG9lPWlpKGQpO2QubD1tO3ZhciBkZT17cmZ4OlQscmVsSWQ6UCxsb2M6USxkaXNwbGF5Om9lfTtyZXR1cm4gc2UmJihkZS5Ub29sdGlwPXNlKSxkZX19LDQ5NTp7bjoiQnJ0QmVnaW5E'@; put 'Q29uIn0sNDk2OntuOiJCcnRFbmREQ29uIn0sNDk3OntuOiJCcnRCZWdpbkRSZWZzIn0sNDk4OntuOiJCcnRFbmREUmVmcyJ9LDQ5OTp7bjoiQnJ0RFJlZiJ9LDUwMDp7bjoiQnJ0QmVnaW5TY2VuTWFuIn0sNTAxOntuOiJCcnRFbmRTY2VuTWFuIn0sNTAyOntuOiJCcnRCZWdpblNjdCJ9LDUw'@; put 'Mzp7bjoiQnJ0RW5kU2N0In0sNTA0OntuOiJCcnRTbGMifSw1MDU6e246IkJydEJlZ2luRFhGcyJ9LDUwNjp7bjoiQnJ0RW5kRFhGcyJ9LDUwNzp7bjoiQnJ0RFhGIn0sNTA4OntuOiJCcnRCZWdpblRhYmxlU3R5bGVzIn0sNTA5OntuOiJCcnRFbmRUYWJsZVN0eWxlcyJ9LDUxMDp7bjoiQnJ0'@; put 'QmVnaW5UYWJsZVN0eWxlIn0sNTExOntuOiJCcnRFbmRUYWJsZVN0eWxlIn0sNTEyOntuOiJCcnRUYWJsZVN0eWxlRWxlbWVudCJ9LDUxMzp7bjoiQnJ0VGFibGVTdHlsZUNsaWVudCJ9LDUxNDp7bjoiQnJ0QmVnaW5Wb2xEZXBzIn0sNTE1OntuOiJCcnRFbmRWb2xEZXBzIn0sNTE2OntuOiJC'@; put 'cnRCZWdpblZvbFR5cGUifSw1MTc6e246IkJydEVuZFZvbFR5cGUifSw1MTg6e246IkJydEJlZ2luVm9sTWFpbiJ9LDUxOTp7bjoiQnJ0RW5kVm9sTWFpbiJ9LDUyMDp7bjoiQnJ0QmVnaW5Wb2xUb3BpYyJ9LDUyMTp7bjoiQnJ0RW5kVm9sVG9waWMifSw1MjI6e246IkJydFZvbFN1YnRvcGlj'@; put 'In0sNTIzOntuOiJCcnRWb2xSZWYifSw1MjQ6e246IkJydFZvbE51bSJ9LDUyNTp7bjoiQnJ0Vm9sRXJyIn0sNTI2OntuOiJCcnRWb2xTdHIifSw1Mjc6e246IkJydFZvbEJvb2wifSw1Mjg6e246IkJydEJlZ2luQ2FsY0NoYWluJCJ9LDUyOTp7bjoiQnJ0RW5kQ2FsY0NoYWluJCJ9LDUzMDp7'@; put 'bjoiQnJ0QmVnaW5Tb3J0U3RhdGUifSw1MzE6e246IkJydEVuZFNvcnRTdGF0ZSJ9LDUzMjp7bjoiQnJ0QmVnaW5Tb3J0Q29uZCJ9LDUzMzp7bjoiQnJ0RW5kU29ydENvbmQifSw1MzQ6e246IkJydEJvb2tQcm90ZWN0aW9uIn0sNTM1OntuOiJCcnRTaGVldFByb3RlY3Rpb24ifSw1MzY6e246'@; put 'IkJydFJhbmdlUHJvdGVjdGlvbiJ9LDUzNzp7bjoiQnJ0UGhvbmV0aWNJbmZvIn0sNTM4OntuOiJCcnRCZWdpbkVDVHh0V2l6In0sNTM5OntuOiJCcnRFbmRFQ1R4dFdpeiJ9LDU0MDp7bjoiQnJ0QmVnaW5FQ1RXRmxkSW5mb0xzdCJ9LDU0MTp7bjoiQnJ0RW5kRUNUV0ZsZEluZm9Mc3QifSw1'@; put 'NDI6e246IkJydEJlZ2luRUNUd0ZsZEluZm8ifSw1NDg6e246IkJydEZpbGVTaGFyaW5nIn0sNTQ5OntuOiJCcnRPbGVTaXplIn0sNTUwOntuOiJCcnREcmF3aW5nIixmOmUxfSw1NTE6e246IkJydExlZ2FjeURyYXdpbmcifSw1NTI6e246IkJydExlZ2FjeURyYXdpbmdIRiJ9LDU1Mzp7bjoi'@; put 'QnJ0V2ViT3B0In0sNTU0OntuOiJCcnRCZWdpbldlYlB1Ykl0ZW1zIn0sNTU1OntuOiJCcnRFbmRXZWJQdWJJdGVtcyJ9LDU1Njp7bjoiQnJ0QmVnaW5XZWJQdWJJdGVtIn0sNTU3OntuOiJCcnRFbmRXZWJQdWJJdGVtIn0sNTU4OntuOiJCcnRCZWdpblNYQ29uZEZtdCJ9LDU1OTp7bjoiQnJ0'@; put 'RW5kU1hDb25kRm10In0sNTYwOntuOiJCcnRCZWdpblNYQ29uZEZtdHMifSw1NjE6e246IkJydEVuZFNYQ29uZEZtdHMifSw1NjI6e246IkJydEJrSGltIn0sNTY0OntuOiJCcnRDb2xvciJ9LDU2NTp7bjoiQnJ0QmVnaW5JbmRleGVkQ29sb3JzIn0sNTY2OntuOiJCcnRFbmRJbmRleGVkQ29s'@; put 'b3JzIn0sNTY5OntuOiJCcnRCZWdpbk1SVUNvbG9ycyJ9LDU3MDp7bjoiQnJ0RW5kTVJVQ29sb3JzIn0sNTcyOntuOiJCcnRNUlVDb2xvciJ9LDU3Mzp7bjoiQnJ0QmVnaW5EVmFscyJ9LDU3NDp7bjoiQnJ0RW5kRFZhbHMifSw1Nzc6e246IkJydFN1cE5hbWVTdGFydCJ9LDU3ODp7bjoiQnJ0'@; put 'U3VwTmFtZVZhbHVlU3RhcnQifSw1Nzk6e246IkJydFN1cE5hbWVWYWx1ZUVuZCJ9LDU4MDp7bjoiQnJ0U3VwTmFtZU51bSJ9LDU4MTp7bjoiQnJ0U3VwTmFtZUVyciJ9LDU4Mjp7bjoiQnJ0U3VwTmFtZVN0In0sNTgzOntuOiJCcnRTdXBOYW1lTmlsIn0sNTg0OntuOiJCcnRTdXBOYW1lQm9v'@; put 'bCJ9LDU4NTp7bjoiQnJ0U3VwTmFtZUZtbGEifSw1ODY6e246IkJydFN1cE5hbWVCaXRzIn0sNTg3OntuOiJCcnRTdXBOYW1lRW5kIn0sNTg4OntuOiJCcnRFbmRTdXBCb29rIn0sNTg5OntuOiJCcnRDZWxsU21hcnRUYWdQcm9wZXJ0eSJ9LDU5MDp7bjoiQnJ0QmVnaW5DZWxsU21hcnRUYWci'@; put 'fSw1OTE6e246IkJydEVuZENlbGxTbWFydFRhZyJ9LDU5Mjp7bjoiQnJ0QmVnaW5DZWxsU21hcnRUYWdzIn0sNTkzOntuOiJCcnRFbmRDZWxsU21hcnRUYWdzIn0sNTk0OntuOiJCcnRCZWdpblNtYXJ0VGFncyJ9LDU5NTp7bjoiQnJ0RW5kU21hcnRUYWdzIn0sNTk2OntuOiJCcnRTbWFydFRh'@; put 'Z1R5cGUifSw1OTc6e246IkJydEJlZ2luU21hcnRUYWdUeXBlcyJ9LDU5ODp7bjoiQnJ0RW5kU21hcnRUYWdUeXBlcyJ9LDU5OTp7bjoiQnJ0QmVnaW5TWEZpbHRlcnMifSw2MDA6e246IkJydEVuZFNYRmlsdGVycyJ9LDYwMTp7bjoiQnJ0QmVnaW5TWEZJTFRFUiJ9LDYwMjp7bjoiQnJ0RW5k'@; put 'U1hGaWx0ZXIifSw2MDM6e246IkJydEJlZ2luRmlsbHMifSw2MDQ6e246IkJydEVuZEZpbGxzIn0sNjA1OntuOiJCcnRCZWdpbkNlbGxXYXRjaGVzIn0sNjA2OntuOiJCcnRFbmRDZWxsV2F0Y2hlcyJ9LDYwNzp7bjoiQnJ0Q2VsbFdhdGNoIn0sNjA4OntuOiJCcnRCZWdpbkNSRXJycyJ9LDYw'@; put 'OTp7bjoiQnJ0RW5kQ1JFcnJzIn0sNjEwOntuOiJCcnRDcmFzaFJlY0VyciJ9LDYxMTp7bjoiQnJ0QmVnaW5Gb250cyJ9LDYxMjp7bjoiQnJ0RW5kRm9udHMifSw2MTM6e246IkJydEJlZ2luQm9yZGVycyJ9LDYxNDp7bjoiQnJ0RW5kQm9yZGVycyJ9LDYxNTp7bjoiQnJ0QmVnaW5GbXRzIn0s'@; put 'NjE2OntuOiJCcnRFbmRGbXRzIn0sNjE3OntuOiJCcnRCZWdpbkNlbGxYRnMifSw2MTg6e246IkJydEVuZENlbGxYRnMifSw2MTk6e246IkJydEJlZ2luU3R5bGVzIn0sNjIwOntuOiJCcnRFbmRTdHlsZXMifSw2MjU6e246IkJydEJpZ05hbWUifSw2MjY6e246IkJydEJlZ2luQ2VsbFN0eWxl'@; put 'WEZzIn0sNjI3OntuOiJCcnRFbmRDZWxsU3R5bGVYRnMifSw2Mjg6e246IkJydEJlZ2luQ29tbWVudHMifSw2Mjk6e246IkJydEVuZENvbW1lbnRzIn0sNjMwOntuOiJCcnRCZWdpbkNvbW1lbnRBdXRob3JzIn0sNjMxOntuOiJCcnRFbmRDb21tZW50QXV0aG9ycyJ9LDYzMjp7bjoiQnJ0Q29t'@; put 'bWVudEF1dGhvciIsZjpxSH0sNjMzOntuOiJCcnRCZWdpbkNvbW1lbnRMaXN0In0sNjM0OntuOiJCcnRFbmRDb21tZW50TGlzdCJ9LDYzNTp7bjoiQnJ0QmVnaW5Db21tZW50IixmOmZ1bmN0aW9uICRIKGQpe3ZhciBfPXt9O18uaWF1dGhvcj1kLnJlYWRfc2hpZnQoNCk7dmFyIG09anUoZCwx'@; put 'Nik7cmV0dXJuIF8ucmZ4PW0ucyxfLnJlZj1xaShtLnMpLGQubCs9MTYsX319LDYzNjp7bjoiQnJ0RW5kQ29tbWVudCJ9LDYzNzp7bjoiQnJ0Q29tbWVudFRleHQiLGY6b3J9LDYzODp7bjoiQnJ0QmVnaW5PbGVPYmplY3RzIn0sNjM5OntuOiJCcnRPbGVPYmplY3QifSw2NDA6e246IkJydEVu'@; put 'ZE9sZU9iamVjdHMifSw2NDE6e246IkJydEJlZ2luU3hydWxlcyJ9LDY0Mjp7bjoiQnJ0RW5kU3hSdWxlcyJ9LDY0Mzp7bjoiQnJ0QmVnaW5BY3RpdmVYQ29udHJvbHMifSw2NDQ6e246IkJydEFjdGl2ZVgifSw2NDU6e246IkJydEVuZEFjdGl2ZVhDb250cm9scyJ9LDY0Njp7bjoiQnJ0QmVn'@; put 'aW5QQ0RTRFRDRU1lbWJlcnNTb3J0QnkifSw2NDg6e246IkJydEJlZ2luQ2VsbElnbm9yZUVDcyJ9LDY0OTp7bjoiQnJ0Q2VsbElnbm9yZUVDIn0sNjUwOntuOiJCcnRFbmRDZWxsSWdub3JlRUNzIn0sNjUxOntuOiJCcnRDc1Byb3AiLGY6ZnVuY3Rpb24gdWVlKGQsXyl7cmV0dXJuIGQubCs9'@; put 'MTAse25hbWU6aWkoZCl9fX0sNjUyOntuOiJCcnRDc1BhZ2VTZXR1cCJ9LDY1Mzp7bjoiQnJ0QmVnaW5Vc2VyQ3NWaWV3cyJ9LDY1NDp7bjoiQnJ0RW5kVXNlckNzVmlld3MifSw2NTU6e246IkJydEJlZ2luVXNlckNzVmlldyJ9LDY1Njp7bjoiQnJ0RW5kVXNlckNzVmlldyJ9LDY1Nzp7bjoi'@; put 'QnJ0QmVnaW5QY2RTRkNJRW50cmllcyJ9LDY1ODp7bjoiQnJ0RW5kUENEU0ZDSUVudHJpZXMifSw2NTk6e246IkJydFBDRFNGQ0lFbnRyeSJ9LDY2MDp7bjoiQnJ0QmVnaW5MaXN0UGFydHMifSw2NjE6e246IkJydExpc3RQYXJ0In0sNjYyOntuOiJCcnRFbmRMaXN0UGFydHMifSw2NjM6e246'@; put 'IkJydFNoZWV0Q2FsY1Byb3AifSw2NjQ6e246IkJydEJlZ2luRm5Hcm91cCJ9LDY2NTp7bjoiQnJ0Rm5Hcm91cCJ9LDY2Njp7bjoiQnJ0RW5kRm5Hcm91cCJ9LDY2Nzp7bjoiQnJ0U3VwQWRkaW4ifSw2Njg6e246IkJydFNYVERNUE9yZGVyIn0sNjY5OntuOiJCcnRDc1Byb3RlY3Rpb24ifSw2'@; put 'NzE6e246IkJydEJlZ2luV3NTb3J0TWFwIn0sNjcyOntuOiJCcnRFbmRXc1NvcnRNYXAifSw2NzM6e246IkJydEJlZ2luUlJTb3J0In0sNjc0OntuOiJCcnRFbmRSUlNvcnQifSw2NzU6e246IkJydFJSU29ydEl0ZW0ifSw2NzY6e246IkJydEZpbGVTaGFyaW5nSXNvIn0sNjc3OntuOiJCcnRC'@; put 'b29rUHJvdGVjdGlvbklzbyJ9LDY3ODp7bjoiQnJ0U2hlZXRQcm90ZWN0aW9uSXNvIn0sNjc5OntuOiJCcnRDc1Byb3RlY3Rpb25Jc28ifSw2ODA6e246IkJydFJhbmdlUHJvdGVjdGlvbklzbyJ9LDY4MTp7bjoiQnJ0RFZhbExpc3QifSwxMDI0OntuOiJCcnRSd0Rlc2NlbnQifSwxMDI1Ontu'@; put 'OiJCcnRLbm93bkZvbnRzIn0sMTAyNjp7bjoiQnJ0QmVnaW5TWFR1cGxlU2V0In0sMTAyNzp7bjoiQnJ0RW5kU1hUdXBsZVNldCJ9LDEwMjg6e246IkJydEJlZ2luU1hUdXBsZVNldEhlYWRlciJ9LDEwMjk6e246IkJydEVuZFNYVHVwbGVTZXRIZWFkZXIifSwxMDMwOntuOiJCcnRTWFR1cGxl'@; put 'U2V0SGVhZGVySXRlbSJ9LDEwMzE6e246IkJydEJlZ2luU1hUdXBsZVNldERhdGEifSwxMDMyOntuOiJCcnRFbmRTWFR1cGxlU2V0RGF0YSJ9LDEwMzM6e246IkJydEJlZ2luU1hUdXBsZVNldFJvdyJ9LDEwMzQ6e246IkJydEVuZFNYVHVwbGVTZXRSb3cifSwxMDM1OntuOiJCcnRTWFR1cGxl'@; put 'U2V0Um93SXRlbSJ9LDEwMzY6e246IkJydE5hbWVFeHQifSwxMDM3OntuOiJCcnRQQ0RIMTQifSwxMDM4OntuOiJCcnRCZWdpblBDRENhbGNNZW0xNCJ9LDEwMzk6e246IkJydEVuZFBDRENhbGNNZW0xNCJ9LDEwNDA6e246IkJydFNYVEgxNCJ9LDEwNDE6e246IkJydEJlZ2luU3BhcmtsaW5l'@; put 'R3JvdXAifSwxMDQyOntuOiJCcnRFbmRTcGFya2xpbmVHcm91cCJ9LDEwNDM6e246IkJydFNwYXJrbGluZSJ9LDEwNDQ6e246IkJydFNYREkxNCJ9LDEwNDU6e246IkJydFdzRm10SW5mb0V4MTQifSwxMDQ2OntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZzE0In0sMTA0Nzp7bjoi'@; put 'QnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nMTQifSwxMDQ4OntuOiJCcnRCZWdpbkNGUnVsZTE0In0sMTA0OTp7bjoiQnJ0RW5kQ0ZSdWxlMTQifSwxMDUwOntuOiJCcnRDRlZPMTQifSwxMDUxOntuOiJCcnRCZWdpbkRhdGFiYXIxNCJ9LDEwNTI6e246IkJydEJlZ2luSWNvblNldDE0In0s'@; put 'MTA1Mzp7bjoiQnJ0RFZhbDE0IixmOmZ1bmN0aW9uIEpKKGQsXyxtKXt2YXIgVD1mdW5jdGlvbiBGdChkLF8sbSl7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDQpLFA9e307cmV0dXJuIDEmVCYmKFAucmVmcz1mdW5jdGlvbiBZZShkKXtmb3IodmFyIF89ZC5yZWFkX3NoaWZ0KDQpLG09W107Xy0tID4w'@; put 'OyltLnB1c2goWGUoZCkpO3JldHVybiBtfShkKSksMiZUJiYoUC5zcXJlZnM9ZnVuY3Rpb24geWkoZCl7Zm9yKHZhciBfPWQucmVhZF9zaGlmdCg0KSxtPVtdO18tLSA+MDspbS5wdXNoKFdhKGQpKTtyZXR1cm4gbX0oZCkpLDQmVCYmKFAuZm9ybXVsYXM9ZnVuY3Rpb24gU3MoZCxfLG0pe2Zv'@; put 'cih2YXIgVD1kLnJlYWRfc2hpZnQoNCksUD1bXTtULS0gPjA7KVAucHVzaChXcyhkLDAsbSkpO3JldHVybiBQfShkLDAsbSkpLDgmVCYmKFAucmVsSUQ9ZnVuY3Rpb24gV2koZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDIpO3JldHVybiAwPT09Xz8iIjpkLnJlYWRfc2hpZnQoXywidXRmMTZsZSIp'@; put 'fShkKSksUH0oZCwwLG0pLFA9ZC5yZWFkX3NoaWZ0KDQpLFE9bmMoZCksc2U9bmMoZCksb2U9bmMoZCksZGU9bmMoZCksTGU9KFQuZm9ybXVsYXN8fFtdKVswXSxOZT0oVC5mb3JtdWxhc3x8W10pWzFdLEJlPTE1JlAsWmU9e3Q6SmtbQmVdLHNxcmZ4OlQuc3FyZWZzWzBdLHM6W1Esc2Usb2Us'@; put 'ZGVdfTtyZXR1cm4gTGUmJihaZS5mMT1MZSksTmUmJihaZS5mMj1OZSksMD09QmV8fDM9PUJlfHw3PT1CZXx8KFplLm9wPVB5W1A+PjIwJjE1XSksWmV9fSwxMDU0OntuOiJCcnRCZWdpbkRWYWxzMTQifSwxMDU1OntuOiJCcnRDb2xvcjE0In0sMTA1Njp7bjoiQnJ0QmVnaW5TcGFya2xpbmVz'@; put 'In0sMTA1Nzp7bjoiQnJ0RW5kU3BhcmtsaW5lcyJ9LDEwNTg6e246IkJydEJlZ2luU3BhcmtsaW5lR3JvdXBzIn0sMTA1OTp7bjoiQnJ0RW5kU3BhcmtsaW5lR3JvdXBzIn0sMTA2MTp7bjoiQnJ0U1hWRDE0In0sMTA2Mjp7bjoiQnJ0QmVnaW5TWFZpZXcxNCJ9LDEwNjM6e246IkJydEVuZFNY'@; put 'VmlldzE0In0sMTA2NDp7bjoiQnJ0QmVnaW5TWFZpZXcxNiJ9LDEwNjU6e246IkJydEVuZFNYVmlldzE2In0sMTA2Njp7bjoiQnJ0QmVnaW5QQ0QxNCJ9LDEwNjc6e246IkJydEVuZFBDRDE0In0sMTA2ODp7bjoiQnJ0QmVnaW5FeHRDb25uMTQifSwxMDY5OntuOiJCcnRFbmRFeHRDb25uMTQi'@; put 'fSwxMDcwOntuOiJCcnRCZWdpblNsaWNlckNhY2hlSURzIn0sMTA3MTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVJRHMifSwxMDcyOntuOiJCcnRCZWdpblNsaWNlckNhY2hlSUQifSwxMDczOntuOiJCcnRFbmRTbGljZXJDYWNoZUlEIn0sMTA3NTp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZSJ9LDEw'@; put 'NzY6e246IkJydEVuZFNsaWNlckNhY2hlIn0sMTA3Nzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZURlZiJ9LDEwNzg6e246IkJydEVuZFNsaWNlckNhY2hlRGVmIn0sMTA3OTp7bjoiQnJ0QmVnaW5TbGljZXJzRXgifSwxMDgwOntuOiJCcnRFbmRTbGljZXJzRXgifSwxMDgxOntuOiJCcnRCZWdp'@; put 'blNsaWNlckV4In0sMTA4Mjp7bjoiQnJ0RW5kU2xpY2VyRXgifSwxMDgzOntuOiJCcnRCZWdpblNsaWNlciJ9LDEwODQ6e246IkJydEVuZFNsaWNlciJ9LDEwODU6e246IkJydFNsaWNlckNhY2hlUGl2b3RUYWJsZXMifSwxMDg2OntuOiJCcnRCZWdpblNsaWNlckNhY2hlT2xhcEltcGwifSwx'@; put 'MDg3OntuOiJCcnRFbmRTbGljZXJDYWNoZU9sYXBJbXBsIn0sMTA4ODp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZUxldmVsc0RhdGEifSwxMDg5OntuOiJCcnRFbmRTbGljZXJDYWNoZUxldmVsc0RhdGEifSwxMDkwOntuOiJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxEYXRhIn0sMTA5MTp7bjoi'@; put 'QnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbERhdGEifSwxMDkyOntuOiJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZXMifSwxMDkzOntuOiJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2VzIn0sMTA5NDp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNpUmFuZ2UifSwxMDk1OntuOiJCcnRFbmRTbGljZXJD'@; put 'YWNoZVNpUmFuZ2UifSwxMDk2OntuOiJCcnRTbGljZXJDYWNoZU9sYXBJdGVtIn0sMTA5Nzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNlbGVjdGlvbnMifSwxMDk4OntuOiJCcnRTbGljZXJDYWNoZVNlbGVjdGlvbiJ9LDEwOTk6e246IkJydEVuZFNsaWNlckNhY2hlU2VsZWN0aW9ucyJ9LDEx'@; put 'MDA6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVOYXRpdmUifSwxMTAxOntuOiJCcnRFbmRTbGljZXJDYWNoZU5hdGl2ZSJ9LDExMDI6e246IkJydFNsaWNlckNhY2hlTmF0aXZlSXRlbSJ9LDExMDM6e246IkJydFJhbmdlUHJvdGVjdGlvbjE0In0sMTEwNDp7bjoiQnJ0UmFuZ2VQcm90ZWN0aW9u'@; put 'SXNvMTQifSwxMTA1OntuOiJCcnRDZWxsSWdub3JlRUMxNCJ9LDExMTE6e246IkJydExpc3QxNCJ9LDExMTI6e246IkJydENGSWNvbiJ9LDExMTM6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEcyJ9LDExMTQ6e246IkJydEVuZFNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHMi'@; put 'fSwxMTE1OntuOiJCcnRCZWdpblNsaWNlcnMifSwxMTE2OntuOiJCcnRFbmRTbGljZXJzIn0sMTExNzp7bjoiQnJ0V2JQcm9wMTQifSwxMTE4OntuOiJCcnRCZWdpblNYRWRpdCJ9LDExMTk6e246IkJydEVuZFNYRWRpdCJ9LDExMjA6e246IkJydEJlZ2luU1hFZGl0cyJ9LDExMjE6e246IkJy'@; put 'dEVuZFNYRWRpdHMifSwxMTIyOntuOiJCcnRCZWdpblNYQ2hhbmdlIn0sMTEyMzp7bjoiQnJ0RW5kU1hDaGFuZ2UifSwxMTI0OntuOiJCcnRCZWdpblNYQ2hhbmdlcyJ9LDExMjU6e246IkJydEVuZFNYQ2hhbmdlcyJ9LDExMjY6e246IkJydFNYVHVwbGVJdGVtcyJ9LDExMjg6e246IkJydEJl'@; put 'Z2luU2xpY2VyU3R5bGUifSwxMTI5OntuOiJCcnRFbmRTbGljZXJTdHlsZSJ9LDExMzA6e246IkJydFNsaWNlclN0eWxlRWxlbWVudCJ9LDExMzE6e246IkJydEJlZ2luU3R5bGVTaGVldEV4dDE0In0sMTEzMjp7bjoiQnJ0RW5kU3R5bGVTaGVldEV4dDE0In0sMTEzMzp7bjoiQnJ0QmVnaW5T'@; put 'bGljZXJDYWNoZXNQaXZvdENhY2hlSUQifSwxMTM0OntuOiJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSUQifSwxMTM1OntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZ3MifSwxMTM2OntuOiJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmdzIn0sMTEzNzp7bjoiQnJ0QmVn'@; put 'aW5QQ0RDYWxjTWVtRXh0In0sMTEzODp7bjoiQnJ0RW5kUENEQ2FsY01lbUV4dCJ9LDExMzk6e246IkJydEJlZ2luUENEQ2FsY01lbXNFeHQifSwxMTQwOntuOiJCcnRFbmRQQ0RDYWxjTWVtc0V4dCJ9LDExNDE6e246IkJydFBDREZpZWxkMTQifSwxMTQyOntuOiJCcnRCZWdpblNsaWNlclN0'@; put 'eWxlcyJ9LDExNDM6e246IkJydEVuZFNsaWNlclN0eWxlcyJ9LDExNDQ6e246IkJydEJlZ2luU2xpY2VyU3R5bGVFbGVtZW50cyJ9LDExNDU6e246IkJydEVuZFNsaWNlclN0eWxlRWxlbWVudHMifSwxMTQ2OntuOiJCcnRDRlJ1bGVFeHQifSwxMTQ3OntuOiJCcnRCZWdpblNYQ29uZEZtdDE0'@; put 'In0sMTE0ODp7bjoiQnJ0RW5kU1hDb25kRm10MTQifSwxMTQ5OntuOiJCcnRCZWdpblNYQ29uZEZtdHMxNCJ9LDExNTA6e246IkJydEVuZFNYQ29uZEZtdHMxNCJ9LDExNTI6e246IkJydEJlZ2luU29ydENvbmQxNCJ9LDExNTM6e246IkJydEVuZFNvcnRDb25kMTQifSwxMTU0OntuOiJCcnRF'@; put 'bmREVmFsczE0In0sMTE1NTp7bjoiQnJ0RW5kSWNvblNldDE0In0sMTE1Njp7bjoiQnJ0RW5kRGF0YWJhcjE0In0sMTE1Nzp7bjoiQnJ0QmVnaW5Db2xvclNjYWxlMTQifSwxMTU4OntuOiJCcnRFbmRDb2xvclNjYWxlMTQifSwxMTU5OntuOiJCcnRCZWdpblN4cnVsZXMxNCJ9LDExNjA6e246'@; put 'IkJydEVuZFN4cnVsZXMxNCJ9LDExNjE6e246IkJydEJlZ2luUFJ1bGUxNCJ9LDExNjI6e246IkJydEVuZFBSdWxlMTQifSwxMTYzOntuOiJCcnRCZWdpblBSRmlsdGVyczE0In0sMTE2NDp7bjoiQnJ0RW5kUFJGaWx0ZXJzMTQifSwxMTY1OntuOiJCcnRCZWdpblBSRmlsdGVyMTQifSwxMTY2'@; put 'OntuOiJCcnRFbmRQUkZpbHRlcjE0In0sMTE2Nzp7bjoiQnJ0QmVnaW5QUkZJdGVtMTQifSwxMTY4OntuOiJCcnRFbmRQUkZJdGVtMTQifSwxMTY5OntuOiJCcnRCZWdpbkNlbGxJZ25vcmVFQ3MxNCJ9LDExNzA6e246IkJydEVuZENlbGxJZ25vcmVFQ3MxNCJ9LDExNzE6e246IkJydER4ZjE0'@; put 'In0sMTE3Mjp7bjoiQnJ0QmVnaW5EeEYxNHMifSwxMTczOntuOiJCcnRFbmREeGYxNHMifSwxMTc3OntuOiJCcnRGaWx0ZXIxNCJ9LDExNzg6e246IkJydEJlZ2luQ3VzdG9tRmlsdGVyczE0In0sMTE4MDp7bjoiQnJ0Q3VzdG9tRmlsdGVyMTQifSwxMTgxOntuOiJCcnRJY29uRmlsdGVyMTQi'@; put 'fSwxMTgyOntuOiJCcnRQaXZvdENhY2hlQ29ubmVjdGlvbk5hbWUifSwyMDQ4OntuOiJCcnRCZWdpbkRlY291cGxlZFBpdm90Q2FjaGVJRHMifSwyMDQ5OntuOiJCcnRFbmREZWNvdXBsZWRQaXZvdENhY2hlSURzIn0sMjA1MDp7bjoiQnJ0RGVjb3VwbGVkUGl2b3RDYWNoZUlEIn0sMjA1MTp7'@; put 'bjoiQnJ0QmVnaW5QaXZvdFRhYmxlUmVmcyJ9LDIwNTI6e246IkJydEVuZFBpdm90VGFibGVSZWZzIn0sMjA1Mzp7bjoiQnJ0UGl2b3RUYWJsZVJlZiJ9LDIwNTQ6e246IkJydFNsaWNlckNhY2hlQm9va1Bpdm90VGFibGVzIn0sMjA1NTp7bjoiQnJ0QmVnaW5TeHZjZWxscyJ9LDIwNTY6e246'@; put 'IkJydEVuZFN4dmNlbGxzIn0sMjA1Nzp7bjoiQnJ0QmVnaW5TeFJvdyJ9LDIwNTg6e246IkJydEVuZFN4Um93In0sMjA2MDp7bjoiQnJ0UGNkQ2FsY01lbTE1In0sMjA2Nzp7bjoiQnJ0UXNpMTUifSwyMDY4OntuOiJCcnRCZWdpbldlYkV4dGVuc2lvbnMifSwyMDY5OntuOiJCcnRFbmRXZWJF'@; put 'eHRlbnNpb25zIn0sMjA3MDp7bjoiQnJ0V2ViRXh0ZW5zaW9uIn0sMjA3MTp7bjoiQnJ0QWJzUGF0aDE1In0sMjA3Mjp7bjoiQnJ0QmVnaW5QaXZvdFRhYmxlVUlTZXR0aW5ncyJ9LDIwNzM6e246IkJydEVuZFBpdm90VGFibGVVSVNldHRpbmdzIn0sMjA3NTp7bjoiQnJ0VGFibGVTbGljZXJD'@; put 'YWNoZUlEcyJ9LDIwNzY6e246IkJydFRhYmxlU2xpY2VyQ2FjaGVJRCJ9LDIwNzc6e246IkJydEJlZ2luVGFibGVTbGljZXJDYWNoZSJ9LDIwNzg6e246IkJydEVuZFRhYmxlU2xpY2VyQ2FjaGUifSwyMDc5OntuOiJCcnRTeEZpbHRlcjE1In0sMjA4MDp7bjoiQnJ0QmVnaW5UaW1lbGluZUNh'@; put 'Y2hlUGl2b3RDYWNoZUlEcyJ9LDIwODE6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURzIn0sMjA4Mjp7bjoiQnJ0VGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRCJ9LDIwODM6e246IkJydEJlZ2luVGltZWxpbmVDYWNoZUlEcyJ9LDIwODQ6e246IkJydEVuZFRpbWVsaW5lQ2Fj'@; put 'aGVJRHMifSwyMDg1OntuOiJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRCJ9LDIwODY6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVJRCJ9LDIwODc6e246IkJydEJlZ2luVGltZWxpbmVzRXgifSwyMDg4OntuOiJCcnRFbmRUaW1lbGluZXNFeCJ9LDIwODk6e246IkJydEJlZ2luVGltZWxpbmVFeCJ9'@; put 'LDIwOTA6e246IkJydEVuZFRpbWVsaW5lRXgifSwyMDkxOntuOiJCcnRXb3JrQm9va1ByMTUifSwyMDkyOntuOiJCcnRQQ0RIMTUifSwyMDkzOntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGUifSwyMDk0OntuOiJCcnRFbmRUaW1lbGluZVN0eWxlIn0sMjA5NTp7bjoiQnJ0VGltZWxpbmVTdHls'@; put 'ZUVsZW1lbnQifSwyMDk2OntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVzaGVldEV4dDE1In0sMjA5Nzp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZXNoZWV0RXh0MTUifSwyMDk4OntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVzIn0sMjA5OTp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZXMifSwyMTAw'@; put 'OntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVFbGVtZW50cyJ9LDIxMDE6e246IkJydEVuZFRpbWVsaW5lU3R5bGVFbGVtZW50cyJ9LDIxMDI6e246IkJydER4ZjE1In0sMjEwMzp7bjoiQnJ0QmVnaW5EeGZzMTUifSwyMTA0OntuOiJicnRFbmREeGZzMTUifSwyMTA1OntuOiJCcnRTbGljZXJD'@; put 'YWNoZUhpZGVJdGVtc1dpdGhOb0RhdGEifSwyMTA2OntuOiJCcnRCZWdpbkl0ZW1VbmlxdWVOYW1lcyJ9LDIxMDc6e246IkJydEVuZEl0ZW1VbmlxdWVOYW1lcyJ9LDIxMDg6e246IkJydEl0ZW1VbmlxdWVOYW1lIn0sMjEwOTp7bjoiQnJ0QmVnaW5FeHRDb25uMTUifSwyMTEwOntuOiJCcnRF'@; put 'bmRFeHRDb25uMTUifSwyMTExOntuOiJCcnRCZWdpbk9sZWRiUHIxNSJ9LDIxMTI6e246IkJydEVuZE9sZWRiUHIxNSJ9LDIxMTM6e246IkJydEJlZ2luRGF0YUZlZWRQcjE1In0sMjExNDp7bjoiQnJ0RW5kRGF0YUZlZWRQcjE1In0sMjExNTp7bjoiQnJ0VGV4dFByMTUifSwyMTE2OntuOiJC'@; put 'cnRSYW5nZVByMTUifSwyMTE3OntuOiJCcnREYkNvbW1hbmQxNSJ9LDIxMTg6e246IkJydEJlZ2luRGJUYWJsZXMxNSJ9LDIxMTk6e246IkJydEVuZERiVGFibGVzMTUifSwyMTIwOntuOiJCcnREYlRhYmxlMTUifSwyMTIxOntuOiJCcnRCZWdpbkRhdGFNb2RlbCJ9LDIxMjI6e246IkJydEVu'@; put 'ZERhdGFNb2RlbCJ9LDIxMjM6e246IkJydEJlZ2luTW9kZWxUYWJsZXMifSwyMTI0OntuOiJCcnRFbmRNb2RlbFRhYmxlcyJ9LDIxMjU6e246IkJydE1vZGVsVGFibGUifSwyMTI2OntuOiJCcnRCZWdpbk1vZGVsUmVsYXRpb25zaGlwcyJ9LDIxMjc6e246IkJydEVuZE1vZGVsUmVsYXRpb25z'@; put 'aGlwcyJ9LDIxMjg6e246IkJydE1vZGVsUmVsYXRpb25zaGlwIn0sMjEyOTp7bjoiQnJ0QmVnaW5FQ1R4dFdpejE1In0sMjEzMDp7bjoiQnJ0RW5kRUNUeHRXaXoxNSJ9LDIxMzE6e246IkJydEJlZ2luRUNUV0ZsZEluZm9Mc3QxNSJ9LDIxMzI6e246IkJydEVuZEVDVFdGbGRJbmZvTHN0MTUi'@; put 'fSwyMTMzOntuOiJCcnRCZWdpbkVDVFdGbGRJbmZvMTUifSwyMTM0OntuOiJCcnRGaWVsZExpc3RBY3RpdmVJdGVtIn0sMjEzNTp7bjoiQnJ0UGl2b3RDYWNoZUlkVmVyc2lvbiJ9LDIxMzY6e246IkJydFNYREkxNSJ9LDIxMzc6e246IkJydEJlZ2luTW9kZWxUaW1lR3JvdXBpbmdzIn0sMjEz'@; put 'ODp7bjoiQnJ0RW5kTW9kZWxUaW1lR3JvdXBpbmdzIn0sMjEzOTp7bjoiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZyJ9LDIxNDA6e246IkJydEVuZE1vZGVsVGltZUdyb3VwaW5nIn0sMjE0MTp7bjoiQnJ0TW9kZWxUaW1lR3JvdXBpbmdDYWxjQ29sIn0sMzA3Mjp7bjoiQnJ0VWlkIn0sMzA3'@; put 'Mzp7bjoiQnJ0UmV2aXNpb25QdHIifSw1MDk1OntuOiJCcnRCZWdpbkNhbGNGZWF0dXJlcyJ9LDUwOTY6e246IkJydEVuZENhbGNGZWF0dXJlcyJ9LDUwOTc6e246IkJydENhbGNGZWF0dXJlIn0sNjU1MzU6e246IiJ9fSxCQj1nZShaOSwibiIpO0JCLkJydEZSVEFyY2hJRCQ9MTY7dmFyIEc5'@; put 'PXs2OntuOiJGb3JtdWxhIixmOkFrfSwxMDp7bjoiRU9GIixmOm1wfSwxMjp7bjoiQ2FsY0NvdW50IixmOmlkfSwxMzp7bjoiQ2FsY01vZGUiLGY6aWR9LDE0OntuOiJDYWxjUHJlY2lzaW9uIixmOnhhfSwxNTp7bjoiQ2FsY1JlZk1vZGUiLGY6eGF9LDE2OntuOiJDYWxjRGVsdGEiLGY6cXN9'@; put 'LDE3OntuOiJDYWxjSXRlciIsZjp4YX0sMTg6e246IlByb3RlY3QiLGY6eGF9LDE5OntuOiJQYXNzd29yZCIsZjppZH0sMjA6e246IkhlYWRlciIsZjp5M30sMjE6e246IkZvb3RlciIsZjp5M30sMjM6e246IkV4dGVyblNoZWV0IixmOklBfSwyNDp7bjoiTGJsIixmOktQfSwyNTp7bjoiV2lu'@; put 'UHJvdGVjdCIsZjp4YX0sMjY6e246IlZlcnRpY2FsUGFnZUJyZWFrcyJ9LDI3OntuOiJIb3Jpem9udGFsUGFnZUJyZWFrcyJ9LDI4OntuOiJOb3RlIixmOmZ1bmN0aW9uIFRsKGQsXyxtKXtyZXR1cm4gZnVuY3Rpb24gTWwoZCxfLG0pe2lmKCEobS5iaWZmPDgpKXt2YXIgVD1kLnJlYWRfc2hp'@; put 'ZnQoMiksUD1kLnJlYWRfc2hpZnQoMiksUT1kLnJlYWRfc2hpZnQoMiksc2U9ZC5yZWFkX3NoaWZ0KDIpLG9lPUVuKGQsMCxtKTtyZXR1cm4gbS5iaWZmPDgmJmQucmVhZF9zaGlmdCgxKSxbe3I6VCxjOlB9LG9lLHNlLFFdfX0oZCwwLG0pfX0sMjk6e246IlNlbGVjdGlvbiIsZjpmdW5jdGlv'@; put 'biBFWChkLF8sbSl7cmV0dXJuIG0mJm0uYmlmZjw1PyhkLmwrPV8se2NlbGw6e3I6MCxjOjB9fSk6KGQucmVhZF9zaGlmdCgxKSx7Y2VsbDpxaSh7cjpkLnJlYWRfc2hpZnQoMiksYzpkLnJlYWRfc2hpZnQoMil9KX0pfX0sMzQ6e246IkRhdGUxOTA0IixmOnhhfSwzNTp7bjoiRXh0ZXJuTmFt'@; put 'ZSIsZjpxUH0sMzg6e246IkxlZnRNYXJnaW4iLGY6cXN9LDM5OntuOiJSaWdodE1hcmdpbiIsZjpxc30sNDA6e246IlRvcE1hcmdpbiIsZjpxc30sNDE6e246IkJvdHRvbU1hcmdpbiIsZjpxc30sNDI6e246IlByaW50Um93Q29sIixmOnhhfSw0Mzp7bjoiUHJpbnRHcmlkIixmOnhhfSw0Nzp7'@; put 'bjoiRmlsZVBhc3MiLGY6ZnVuY3Rpb24galgoZCxfLG0pe2lmKG0uZW5jKXJldHVybiBtLmVuYzt2YXIgVD17VHlwZTptLmJpZmY+PTg/ZC5yZWFkX3NoaWZ0KDIpOjB9O3JldHVybiBULlR5cGU/ZnVuY3Rpb24gcEgoZCxfLG0sVCl7dmFyIFA9VHx8e307aWYoUC5JbmZvPWQucmVhZF9zaGlm'@; put 'dCgyKSxkLmwtPTIsMT09PVAuSW5mbyl7aWYoUC5EYXRhPWZ1bmN0aW9uIGhIKGQpe3ZhciBfPXt9LG09Xy5FbmNyeXB0aW9uVmVyc2lvbkluZm89TGcoZCw0KTtpZigxIT1tLk1ham9yfHwxIT1tLk1pbm9yKXRocm93InVucmVjb2duaXplZCB2ZXJzaW9uIGNvZGUgIittLk1ham9yKyIgOiAi'@; put 'K20uTWlub3I7cmV0dXJuIF8uU2FsdD1kLnJlYWRfc2hpZnQoMTYpLF8uRW5jcnlwdGVkVmVyaWZpZXI9ZC5yZWFkX3NoaWZ0KDE2KSxfLkVuY3J5cHRlZFZlcmlmaWVySGFzaD1kLnJlYWRfc2hpZnQoMTYpLF99KGQpLG0ucGFzc3dvcmQmJnR5cGVvZiB6ODwidSIpe3ZhciBRPXo4KG0ucGFz'@; put 'c3dvcmQsUC5EYXRhLlNhbHQsIjAwMDAwMDAwIiksc2U9a2UoUC5EYXRhLkVuY3J5cHRlZFZlcmlmaWVyK1AuRGF0YS5FbmNyeXB0ZWRWZXJpZmllckhhc2gsImhleCIpLG9lPU8wLnJjNChrZShRLCJoZXgiKS50b1N0cmluZygiYmluYXJ5Iiksc2UpO1QudmFsaWQ9TzAubWQ1KG9lLnNsaWNl'@; put 'KDAsMTYpKT09QnVmZmVyLmZyb20ob2Uuc2xpY2UoMTYpKS50b1N0cmluZygiaGV4IiksUC5EYXRhLktleT1RLFQuaW5zaXR1PWZ1bmN0aW9uIFJSKGQsXyl7dmFyIG09bmV3IEFycmF5KDI1NiksVD0wLFA9MCxRPTAsc2U9MDtmdW5jdGlvbiBvZShaZSl7Zm9yKFQ9MCxQPTAsUT0wLHNlPTAs'@; put 'UD0wOzI1NiE9UDsrK1ApbVtQXT1QO2ZvcihRPTAsUD0wOzI1NiE9UDsrK1Ape3RyeXtRPVErbVtQXStaZVtQJVplLmxlbmd0aF0uY2hhckNvZGVBdCgwKSYyNTV9Y2F0Y2gobnQpe3Rocm93IGNvbnNvbGUubG9nKFAsWmVbUCVaZS5sZW5ndGhdKSxudH1zZT1tW1BdLG1bUF09bVtRXSxtW1Fd'@; put 'PXNlfVA9UT0wfWZ1bmN0aW9uIGRlKFplKXt2YXIgbnQ9WChaZS5sZW5ndGgpO2ZvcihUPTA7VCE9WmUubGVuZ3RoOysrVClzZT1tW1A9UCsxJjI1NV0sbVtQXT1tW1E9KFErbVtQXSklMjU2XSxtW1FdPXNlLG50W1RdPVplW1RdXm1bbVtQXSttW1FdJjI1NV07cmV0dXJuIEJ1ZmZlci5mcm9t'@; put 'KG50KX12YXIgTGU9ZC5LZXksTmU9MDtvZShrZShMZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKTt2YXIgQmU9MDtyZXR1cm4gZnVuY3Rpb24oWmUpe2lmKEJlK1plLmxlbmd0aDwxMDI0KXJldHVybiBCZSs9WmUubGVuZ3RoLGRlKFplKTt2YXIgUWU9MCxmdD1rZShaZS5zbGljZShRZSxR'@; put 'ZSsobXQ9MTAyNC1CZSkpKTtRZSs9bXQsQmU9MDt2YXIga3Q9ZGUoZnQpO2ZvcihRZT09WmUubGVuZ3RoJiYoKytOZSxMZT16OChfLGQuU2FsdCxvRShOZSkpLG9lKGtlKExlLCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpKTtRZTxaZS5sZW5ndGg7KXsrK05lLExlPXo4KF8sZC5TYWx0LG9F'@; put 'KE5lKSksb2UoQnVmZmVyLmZyb20oTGUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSk7dmFyIG10PU1hdGgubWluKDEwMjQsWmUubGVuZ3RoLVFlKTtmdD1rZShaZS5zbGljZShRZSxRZSttdCkpLFFlKz1tdCxCZT1tdCxrdD1CdWZmZXIuY29uY2F0KFtrdCxkZShmdCldKX1yZXR1cm4ga3R9'@; put 'fShQLkRhdGEsbS5wYXNzd29yZCl9fWVsc2UgaWYoUC5EYXRhPWZ1bmN0aW9uIEhYKGQsXyl7dmFyIG09e30sVD1tLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1MZyhkLDQpO2lmKF8tPTQsMiE9VC5NaW5vcil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtaW5vciB2ZXJzaW9uIGNvZGU6'@; put 'ICIrVC5NaW5vcik7aWYoVC5NYWpvcj40fHxULk1ham9yPDIpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgbWFqb3IgdmVyc2lvbiBjb2RlOiAiK1QuTWFqb3IpO20uRmxhZ3M9ZC5yZWFkX3NoaWZ0KDQpLF8tPTQ7dmFyIFA9ZC5yZWFkX3NoaWZ0KDQpO3JldHVybiBfLT00LG0uRW5j'@; put 'cnlwdGlvbkhlYWRlcj1kSChkLFApLG0uRW5jcnlwdGlvblZlcmlmaWVyPUZYKGQsXy09UCksbX0oZCxfKSxQLkRhdGEmJlAuRGF0YS5FbmNyeXB0aW9uSGVhZGVyJiYyNjYyNT09PVAuRGF0YS5FbmNyeXB0aW9uSGVhZGVyLkFsZ0lEJiZtLnBhc3N3b3JkJiZ0eXBlb2YgYUU8InUiKXt2YXIg'@; put 'ZGU9YUUobS5wYXNzd29yZCxQLkRhdGEuRW5jcnlwdGlvblZlcmlmaWVyLlNhbHQudG9TdHJpbmcoImhleCIpLCIwMDAwMDAwMCIpLExlPVAuRGF0YS5FbmNyeXB0aW9uSGVhZGVyLktleVNpemU+Pj4zOzU9PUxlfHxMZTxkZS5sZW5ndGgmJihkZT1kZS5zbGljZSgwLExlKSk7dmFyIE5lPWtl'@; put 'KFAuRGF0YS5FbmNyeXB0aW9uVmVyaWZpZXIuVmVyaWZpZXIudG9TdHJpbmcoImhleCIpK1AuRGF0YS5FbmNyeXB0aW9uVmVyaWZpZXIuVmVyaWZpZXJIYXNoLnRvU3RyaW5nKCJoZXgiKSwiaGV4IiksQmU9TzAucmM0KGRlLnRvU3RyaW5nKCJiaW5hcnkiKSxOZSk7VC52YWxpZD1TZChCZS5z'@; put 'bGljZSgwLExlKSwiU0hBMSIpLnRvU3RyaW5nKCJoZXgiKT09QmUuc2xpY2UoTGUpLnRvU3RyaW5nKCJoZXgiKSxQLkRhdGEuS2V5PWRlLFQudmFsaWQmJihULmluc2l0dT1mdW5jdGlvbiBlNmUoZCxfKXt2YXIgbT1uZXcgQXJyYXkoMjU2KSxUPTAsUD0wLFE9MCxzZT0wLG9lPWQuRW5jcnlw'@; put 'dGlvbkhlYWRlci5LZXlTaXplPj4+MztmdW5jdGlvbiBkZShudCl7Zm9yKG50PUJ1ZmZlci5mcm9tKG50LnNsaWNlKDAsb2UpKSxUPTAsUD0wLFE9MCxzZT0wLFA9MDsyNTYhPVA7KytQKW1bUF09UDtmb3IoUT0wLFA9MDsyNTYhPVA7KytQKXt2YXIgbXQ9bnRbUCVudC5sZW5ndGhdO1E9UStt'@; put 'W1BdKygic3RyaW5nIj09dHlwZW9mIG10P210LmNoYXJDb2RlQXQoMCk6bXQpJjI1NSxzZT1tW1BdLG1bUF09bVtRXSxtW1FdPXNlfVA9UT0wfWZ1bmN0aW9uIExlKG50KXt2YXIgbXQ9WChudC5sZW5ndGgpO2ZvcihUPTA7VCE9bnQubGVuZ3RoOysrVClzZT1tW1A9UCsxJjI1NV0sbVtQXT1t'@; put 'W1E9KFErbVtQXSklMjU2XSxtW1FdPXNlLG10W1RdPW50W1RdXm1bbVtQXSttW1FdJjI1NV07cmV0dXJuIEJ1ZmZlci5mcm9tKG10KX12YXIgTmU9ZC5LZXksQmU9MDtkZShrZShOZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKTt2YXIgWmU9MDtyZXR1cm4gZnVuY3Rpb24obnQpe2lmKFpl'@; put 'K250Lmxlbmd0aDwxMDI0KXJldHVybiBaZSs9bnQubGVuZ3RoLExlKG50KTt2YXIgUWU9MTAyNC1aZSxmdD0wLGt0PUJ1ZmZlci5mcm9tKG50LnNsaWNlKGZ0LGZ0K1FlKSk7ZnQrPVFlLFplPTA7dmFyIGJ0PUxlKGt0KTtmb3IoZnQ9PW50Lmxlbmd0aCYmKCsrQmUsTmU9YUUoXyxkLkVuY3J5'@; put 'cHRpb25WZXJpZmllci5TYWx0LG9FKEJlKSksZGUoQnVmZmVyLmZyb20oTmUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpO2Z0PG50Lmxlbmd0aDspKytCZSxOZT1hRShfLGQuRW5jcnlwdGlvblZlcmlmaWVyLlNhbHQsb0UoQmUpKSxkZShCdWZmZXIuZnJvbShOZSwiaGV4IikudG9TdHJp'@; put 'bmcoImJpbmFyeSIpKSxRZT1NYXRoLm1pbigxMDI0LG50Lmxlbmd0aC1mdCksa3Q9QnVmZmVyLmZyb20obnQuc2xpY2UoZnQsZnQrUWUpKSxmdCs9UWUsUWU8MTAyNCYmKFplPVFlKSxidD1CdWZmZXIuY29uY2F0KFtidCxMZShrdCldKTtyZXR1cm4gYnR9fShQLkRhdGEsbS5wYXNzd29yZCkp'@; put 'fXJldHVybiBQfShkLF8tMixtLFQpOmZ1bmN0aW9uIGM1ZShkLF8sbSxUKXt2YXIgUD17a2V5OmlkKGQpLHZlcmlmaWNhdGlvbkJ5dGVzOmlkKGQpfTttLnBhc3N3b3JkJiYoUC52ZXJpZmllcj1WQShtLnBhc3N3b3JkKSksVC52YWxpZD1QLnZlcmlmaWNhdGlvbkJ5dGVzPT09UC52ZXJpZmll'@; put 'cixULnZhbGlkJiYoVC5pbnNpdHU9ZnVuY3Rpb24oZCxfKXt2YXIgbT1ffHwwLFQ9ZkgoZCk7cmV0dXJuIGZ1bmN0aW9uKFApe3ZhciBRPWZ1bmN0aW9uKGQsXyxtLFQsUCl7dmFyIFEsc2U7Zm9yKFB8fChQPV8pLFR8fChUPWZIKCIiKSksUT0wO1EhPV8ubGVuZ3RoOysrUSlzZT0yNTUmKChz'@; put 'ZT1fW1FdKT4+NXxzZTw8MyksUFtRXT1zZV49VFttXSxtPW0rMSYxNTtyZXR1cm5bUCxtLFRdfSgwLFAsbSxUKTtyZXR1cm4gbT1RWzFdLFFbMF19fShtLnBhc3N3b3JkLDApKX0oZCwwLG0sVCksVH19LDQ5OntuOiJGb250IixmOmZ1bmN0aW9uIEgwKGQsXyxtKXt2YXIgVD17c3o6ZC5yZWFk'@; put 'X3NoaWZ0KDIpLzIwfSxQPWpkKGQpO1AuZkJvbGQmJihULmJvbGQ9MSksUC5mSXRhbGljJiYoVC5pdGFsaWM9MSksUC5mVW5kZXJsaW5lJiYoVC51bmRlcmxpbmU9MSksUC5mQ29uZGVuc2UmJihULmNvbmRlbnNlPTEpLFAuZkV4dGVuZCYmKFQuZXh0ZW5kPTEpLFAuZlNoYWRvdyYmKFQuc2hh'@; put 'ZG93PTEpLFAuZk91dGxpbmUmJihULm91dGxpbmU9MSksUC5mU3RyaWtlb3V0JiYoVC5zdHJpa2U9MSk7dmFyIFE9bSYmbS5iaWZmfHw4O2lmKDIhPVEmJihULmljdj1kLnJlYWRfc2hpZnQoMiksMyE9USYmNCE9USkpe3N3aXRjaCg3MDA9PT1kLnJlYWRfc2hpZnQoMikmJihULmJvbGQ9MSks'@; put 'ZC5yZWFkX3NoaWZ0KDIpKXtjYXNlIDE6VC52YWxpZ249InN1cGVyIjticmVhaztjYXNlIDI6VC52YWxpZ249InN1YiJ9dmFyIG9lPWQucmVhZF9zaGlmdCgxKTswIT1vZSYmKFQudW5kZXJsaW5lPW9lKTt2YXIgZGU9ZC5yZWFkX3NoaWZ0KDEpO2RlPjAmJihULmZhbWlseT1kZSk7dmFyIExl'@; put 'PWQucmVhZF9zaGlmdCgxKTtMZT4wJiYoVC5jaGFyc2V0PUxlKSxkLmwrPTF9cmV0dXJuIFQubmFtZT1iZShkLDAsbSksVH19LDUxOntuOiJQcmludFNpemUiLGY6aWR9LDYwOntuOiJDb250aW51ZSJ9LDYxOntuOiJXaW5kb3cxIixmOmZ1bmN0aW9uIGVTKGQpe3JldHVybntQb3M6W2QucmVh'@; put 'ZF9zaGlmdCgyKSxkLnJlYWRfc2hpZnQoMildLERpbTpbZC5yZWFkX3NoaWZ0KDIpLGQucmVhZF9zaGlmdCgyKV0sRmxhZ3M6ZC5yZWFkX3NoaWZ0KDIpLEN1clRhYjpkLnJlYWRfc2hpZnQoMiksRmlyc3RUYWI6ZC5yZWFkX3NoaWZ0KDIpLFNlbGVjdGVkOmQucmVhZF9zaGlmdCgyKSxUYWJS'@; put 'YXRpbzpkLnJlYWRfc2hpZnQoMil9fX0sNjQ6e246IkJhY2t1cCIsZjp4YX0sNjU6e246IlBhbmUiLGY6ZnVuY3Rpb24gVVAoZCxfLG0pe2lmKG0mJm0uYmlmZjw1KXJldHVybnt9O3ZhciBUPXt9O3JldHVybiBULng9ZC5yZWFkX3NoaWZ0KDIpLFQueT1kLnJlYWRfc2hpZnQoMiksVC5yd1Rv'@; put 'cD1kLnJlYWRfc2hpZnQoMiksVC5jb2xMZWZ0PWQucmVhZF9zaGlmdCgyKSxULnBubkFjY3Q9ZC5yZWFkX3NoaWZ0KDEpLGQucmVhZF9zaGlmdCgxKSxUfX0sNjY6e246IkNvZGVQYWdlIixmOmlkfSw3Nzp7bjoiUGxzIixmOkVjfSw4MDp7bjoiRENvbiJ9LDgxOntuOiJEQ29uUmVmIn0sODI6'@; put 'e246IkRDb25OYW1lIn0sODU6e246IkRlZkNvbFdpZHRoIixmOmlkfSw4OTp7bjoiWENUIn0sOTA6e246IkNSTiJ9LDkxOntuOiJGaWxlU2hhcmluZyJ9LDkyOntuOiJXcml0ZUFjY2VzcyIsZjpmdW5jdGlvbiBFOShkLF8sbSl7aWYobS5lbmMpcmV0dXJuIGQubCs9XywiIjt2YXIgVD1kLmws'@; put 'UD1FbihkLDAsbSk7cmV0dXJuIGQucmVhZF9zaGlmdChfK1QtZC5sKSxQfX0sOTM6e246Ik9iaiIsZjpmdW5jdGlvbiBiWChkLF8sbSl7aWYobSYmbS5iaWZmPDgpcmV0dXJuIGZ1bmN0aW9uIF9wKGQsXyxtKXtkLmwrPTQ7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDIpLFA9ZC5yZWFkX3NoaWZ0KDIp'@; put 'LFE9ZC5yZWFkX3NoaWZ0KDIpO2QubCs9MixkLmwrPTIsZC5sKz0yLGQubCs9MixkLmwrPTIsZC5sKz0yLGQubCs9MixkLmwrPTIsZC5sKz0yLGQubCs9Njt2YXIgc2U9W107cmV0dXJuIHNlLnB1c2goKGc4W1RdfHxFYykoZCxfLT0zNixtKSkse2NtbzpbUCxULFFdLGZ0OnNlfX0oZCxfLG0p'@; put 'O3ZhciBUPU1mKGQpLFA9ZnVuY3Rpb24gcGEoZCxfKXtmb3IodmFyIFQ9ZC5sK18sUD1bXTtkLmw8VDspe3ZhciBRPWQucmVhZF9zaGlmdCgyKTtkLmwtPTI7dHJ5e1BbUV09UzlbUV0oZCxULWQubCl9Y2F0Y2h7cmV0dXJuIGQubD1ULFB9fXJldHVybiBkLmwhPVQmJihkLmw9VCksUH0oZCxf'@; put 'LTIyKTtyZXR1cm57Y21vOlQsZnQ6UH19fSw5NDp7bjoiVW5jYWxjZWQifSw5NTp7bjoiQ2FsY1NhdmVSZWNhbGMiLGY6eGF9LDk2OntuOiJUZW1wbGF0ZSJ9LDk3OntuOiJJbnRsIn0sOTk6e246Ik9ialByb3RlY3QiLGY6eGF9LDEyNTp7bjoiQ29sSW5mbyIsZjptOH0sMTI4OntuOiJHdXRz'@; put 'IixmOmZ1bmN0aW9uIEdQKGQpe2QubCs9NDt2YXIgXz1bZC5yZWFkX3NoaWZ0KDIpLGQucmVhZF9zaGlmdCgyKV07aWYoMCE9PV9bMF0mJl9bMF0tLSwwIT09X1sxXSYmX1sxXS0tLF9bMF0+N3x8X1sxXT43KXRocm93IG5ldyBFcnJvcigiQmFkIEd1dHRlcnM6ICIrXy5qb2luKCJ8IikpO3Jl'@; put 'dHVybiBffX0sMTI5OntuOiJXc0Jvb2wiLGY6ZnVuY3Rpb24gcDgoZCxfLG0pe3ZhciBUPW0mJjg9PW0uYmlmZnx8Mj09Xz9kLnJlYWRfc2hpZnQoMik6KGQubCs9XywwKTtyZXR1cm57ZkRpYWxvZzoxNiZULGZCZWxvdzo2NCZULGZSaWdodDoxMjgmVH19fSwxMzA6e246IkdyaWRTZXQiLGY6'@; put 'aWR9LDEzMTp7bjoiSENlbnRlciIsZjp4YX0sMTMyOntuOiJWQ2VudGVyIixmOnhhfSwxMzM6e246IkJvdW5kU2hlZXQ4IixmOmZ1bmN0aW9uIElnKGQsXyxtKXt2YXIgVD1kLnJlYWRfc2hpZnQoNCksUD0zJmQucmVhZF9zaGlmdCgxKSxRPWQucmVhZF9zaGlmdCgxKTtzd2l0Y2goUSl7Y2Fz'@; put 'ZSAwOlE9IldvcmtzaGVldCI7YnJlYWs7Y2FzZSAxOlE9Ik1hY3Jvc2hlZXQiO2JyZWFrO2Nhc2UgMjpRPSJDaGFydHNoZWV0IjticmVhaztjYXNlIDY6UT0iVkJBTW9kdWxlIn12YXIgc2U9YmUoZCwwLG0pO3JldHVybiAwPT09c2UubGVuZ3RoJiYoc2U9IlNoZWV0MSIpLHtwb3M6VCxoczpQ'@; put 'LGR0OlEsbmFtZTpzZX19fSwxMzQ6e246IldyaXRlUHJvdGVjdCJ9LDE0MDp7bjoiQ291bnRyeSIsZjpmdW5jdGlvbiBCMShkKXt2YXIgbSxfPVswLDBdO3JldHVybiBtPWQucmVhZF9zaGlmdCgyKSxfWzBdPWk4W21dfHxtLG09ZC5yZWFkX3NoaWZ0KDIpLF9bMV09aThbbV18fG0sX319LDE0'@; put 'MTp7bjoiSGlkZU9iaiIsZjppZH0sMTQ0OntuOiJTb3J0In0sMTQ2OntuOiJQYWxldHRlIixmOmZ1bmN0aW9uIG41ZShkKXtmb3IodmFyIF89ZC5yZWFkX3NoaWZ0KDIpLG09W107Xy0tID4wOyltLnB1c2goSW8oZCkpO3JldHVybiBtfX0sMTUxOntuOiJTeW5jIn0sMTUyOntuOiJMUHIifSwx'@; put 'NTM6e246IkR4R0NvbCJ9LDE1NDp7bjoiRm5Hcm91cE5hbWUifSwxNTU6e246IkZpbHRlck1vZGUifSwxNTY6e246IkJ1aWx0SW5Gbkdyb3VwQ291bnQiLGY6aWR9LDE1Nzp7bjoiQXV0b0ZpbHRlckluZm8ifSwxNTg6e246IkF1dG9GaWx0ZXIifSwxNjA6e246IlNjbCIsZjpneX0sMTYxOntu'@; put 'OiJTZXR1cCIsZjpmdW5jdGlvbiByNWUoZCxfKXt2YXIgbT17fTtyZXR1cm4gXzwzMnx8KGQubCs9MTYsbS5oZWFkZXI9cXMoZCksbS5mb290ZXI9cXMoZCksZC5sKz0yKSxtfX0sMTc0OntuOiJTY2VuTWFuIn0sMTc1OntuOiJTQ0VOQVJJTyJ9LDE3Njp7bjoiU3hWaWV3In0sMTc3OntuOiJT'@; put 'eHZkIn0sMTc4OntuOiJTWFZJIn0sMTgwOntuOiJTeEl2ZCJ9LDE4MTp7bjoiU1hMSSJ9LDE4Mjp7bjoiU1hQSSJ9LDE4NDp7bjoiRG9jUm91dGUifSwxODU6e246IlJlY2lwTmFtZSJ9LDE4OTp7bjoiTXVsUmsiLGY6ZnVuY3Rpb24gclMoZCxfKXtmb3IodmFyIG09ZC5sK18tMixUPWQucmVh'@; put 'ZF9zaGlmdCgyKSxQPWQucmVhZF9zaGlmdCgyKSxRPVtdO2QubDxtOylRLnB1c2goVWQoZCkpO2lmKGQubCE9PW0pdGhyb3cgbmV3IEVycm9yKCJNdWxSSyByZWFkIGVycm9yIik7dmFyIHNlPWQucmVhZF9zaGlmdCgyKTtpZihRLmxlbmd0aCE9c2UtUCsxKXRocm93IG5ldyBFcnJvcigiTXVs'@; put 'UksgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6VCxjOlAsQzpzZSxya3JlYzpRfX19LDE5MDp7bjoiTXVsQmxhbmsiLGY6ZnVuY3Rpb24gbVgoZCxfKXtmb3IodmFyIG09ZC5sK18tMixUPWQucmVhZF9zaGlmdCgyKSxQPWQucmVhZF9zaGlmdCgyKSxRPVtdO2QubDxtOylRLnB1c2goZC5y'@; put 'ZWFkX3NoaWZ0KDIpKTtpZihkLmwhPT1tKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgcmVhZCBlcnJvciIpO3ZhciBzZT1kLnJlYWRfc2hpZnQoMik7aWYoUS5sZW5ndGghPXNlLVArMSl0aHJvdyBuZXcgRXJyb3IoIk11bEJsYW5rIGxlbmd0aCBtaXNtYXRjaCIpO3JldHVybntyOlQsYzpQ'@; put 'LEM6c2UsaXhmZTpRfX19LDE5Mzp7bjoiTW1zIixmOm1wfSwxOTc6e246IlNYREkifSwxOTg6e246IlNYREIifSwxOTk6e246IlNYRkRCIn0sMjAwOntuOiJTWERCQiJ9LDIwMTp7bjoiU1hOdW0ifSwyMDI6e246IlN4Qm9vbCIsZjp4YX0sMjAzOntuOiJTeEVyciJ9LDIwNDp7bjoiU1hJbnQi'@; put 'fSwyMDU6e246IlNYU3RyaW5nIn0sMjA2OntuOiJTWER0ciJ9LDIwNzp7bjoiU3hOaWwifSwyMDg6e246IlNYVGJsIn0sMjA5OntuOiJTWFRCUkdJSVRNIn0sMjEwOntuOiJTeFRicGcifSwyMTE6e246Ik9iUHJvaiJ9LDIxMzp7bjoiU1hTdHJlYW1JRCJ9LDIxNTp7bjoiREJDZWxsIn0sMjE2'@; put 'OntuOiJTWFJuZyJ9LDIxNzp7bjoiU3hJc3hvcGVyIn0sMjE4OntuOiJCb29rQm9vbCIsZjppZH0sMjIwOntuOiJEYk9yUGFyYW1RcnkifSwyMjE6e246IlNjZW5hcmlvUHJvdGVjdCIsZjp4YX0sMjIyOntuOiJPbGVPYmplY3RTaXplIn0sMjI0OntuOiJYRiIsZjpmdW5jdGlvbiBrQShkLF8s'@; put 'bSl7dmFyIFQ9e307cmV0dXJuIFQuaWZudD1kLnJlYWRfc2hpZnQoMiksVC5udW1GbXRJZD1kLnJlYWRfc2hpZnQoMiksVC5mbGFncz1kLnJlYWRfc2hpZnQoMiksVC5mU3R5bGU9VC5mbGFncz4+MiYxLFQuZGF0YT1mdW5jdGlvbiBZUChkLF8sbSxUKXt2YXIgUD17fSxRPWQucmVhZF9zaGlm'@; put 'dCg0KSxzZT1kLnJlYWRfc2hpZnQoNCksb2U9ZC5yZWFkX3NoaWZ0KDQpLGRlPWQucmVhZF9zaGlmdCgyKTtpZihQLnBhdHRlcm5UeXBlPW84W29lPj4yNl0sIVQuY2VsbFN0eWxlcylyZXR1cm4gUDt2YXIgTGU9NyZRO3N3aXRjaChMZSl7Y2FzZSAxOlAuaGFsaWduPSJsZWZ0IjticmVhaztj'@; put 'YXNlIDI6UC5oYWxpZ249ImNlbnRlciI7YnJlYWs7Y2FzZSAzOlAuaGFsaWduPSJyaWdodCJ9c3dpdGNoKFAuZldyYXA9UT4+MyYxLExlPVE+PjQmNyl7Y2FzZSAwOlAudmFsaWduPSJ0b3AiO2JyZWFrO2Nhc2UgMTpQLnZhbGlnbj0iY2VudGVyIjticmVhaztjYXNlIDI6UC52YWxpZ249ImJv'@; put 'dHRvbSJ9cmV0dXJuIFAuZkp1c3RMYXN0PVE+PjcmMSxQLnRyb3Q9UT4+OCYyNTUsUC5jSW5kZW50PVE+PjE2JjE1LFAuZlNocmlua1RvRml0PVE+PjIwJjEsUC5pUmVhZE9yZGVyPVE+PjIyJjIsUC5mQXRyTnVtPVE+PjI2JjEsUC5mQXRyRm50PVE+PjI3JjEsUC5mQXRyQWxjPVE+PjI4JjEs'@; put 'UC5mQXRyQmRyPVE+PjI5JjEsUC5mQXRyUGF0PVE+PjMwJjEsUC5mQXRyUHJvdD1RPj4zMSYxLFAuZGdMZWZ0PTE1JnNlLFAuZGdSaWdodD1zZT4+NCYxNSxQLmRnVG9wPXNlPj44JjE1LFAuZGdCb3R0b209c2U+PjEyJjE1LFAuaWN2TGVmdD1zZT4+MTYmMTI3LFAuaWN2UmlnaHQ9c2U+PjIz'@; put 'JjEyNyxQLmdyYml0RGlhZz1zZT4+MzAmMyxQLmljdlRvcD0xMjcmb2UsUC5pY3ZCb3R0b209b2U+PjcmMTI3LFAuaWN2RGlhZz1vZT4+MTQmMTI3LFAuZGdEaWFnPW9lPj4yMSYxNSxQLmljdkZvcmU9MTI3JmRlLFAuaWN2QmFjaz1kZT4+NyYxMjcsUC5mc3hCdXR0b249ZGU+PjE0JjEsUH0o'@; put 'ZCwwLDAsbSksVH19LDIyNTp7bjoiSW50ZXJmYWNlSGRyIixmOmZ1bmN0aW9uIGY4KGQsXyl7cmV0dXJuIDA9PT1ffHxkLnJlYWRfc2hpZnQoMiksMTIwMH19LDIyNjp7bjoiSW50ZXJmYWNlRW5kIixmOm1wfSwyMjc6e246IlNYVlMifSwyMjk6e246Ik1lcmdlQ2VsbHMiLGY6ZnVuY3Rpb24g'@; put 'TTIoZCxfKXtmb3IodmFyIG09W10sVD1kLnJlYWRfc2hpZnQoMik7VC0tOyltLnB1c2gob2QoZCkpO3JldHVybiBtfX0sMjMzOntuOiJCa0hpbSJ9LDIzNTp7bjoiTXNvRHJhd2luZ0dyb3VwIn0sMjM2OntuOiJNc29EcmF3aW5nIn0sMjM3OntuOiJNc29EcmF3aW5nU2VsZWN0aW9uIn0sMjM5'@; put 'OntuOiJQaG9uZXRpY0luZm8ifSwyNDA6e246IlN4UnVsZSJ9LDI0MTp7bjoiU1hFeCJ9LDI0Mjp7bjoiU3hGaWx0In0sMjQ0OntuOiJTeERYRiJ9LDI0NTp7bjoiU3hJdG0ifSwyNDY6e246IlN4TmFtZSJ9LDI0Nzp7bjoiU3hTZWxlY3QifSwyNDg6e246IlNYUGFpciJ9LDI0OTp7bjoiU3hG'@; put 'bWxhIn0sMjUxOntuOiJTeEZvcm1hdCJ9LDI1Mjp7bjoiU1NUIixmOmZ1bmN0aW9uIGYwKGQsXyl7Zm9yKHZhciBtPWQubCtfLFQ9ZC5yZWFkX3NoaWZ0KDQpLFA9ZC5yZWFkX3NoaWZ0KDQpLFE9W10sc2U9MDtzZSE9UCYmZC5sPG07KytzZSlRLnB1c2goT2UoZCkpO3JldHVybiBRLkNvdW50'@; put 'PVQsUS5VbmlxdWU9UCxRfX0sMjUzOntuOiJMYWJlbFNzdCIsZjpmdW5jdGlvbiB6UChkKXt2YXIgXz1aaShkKTtyZXR1cm4gXy5pc3N0PWQucmVhZF9zaGlmdCg0KSxffX0sMjU1OntuOiJFeHRTU1QiLGY6ZnVuY3Rpb24geWUoZCxfKXt2YXIgbT17fTtyZXR1cm4gbS5kc3N0PWQucmVhZF9z'@; put 'aGlmdCgyKSxkLmwrPV8tMixtfX0sMjU2OntuOiJTWFZERXgifSwyNTk6e246IlNYRm9ybXVsYSJ9LDI5MDp7bjoiU1hEQkV4In0sMzExOntuOiJSUkRJbnNEZWwifSwzMTI6e246IlJSREhlYWQifSwzMTU6e246IlJSRENoZ0NlbGwifSwzMTc6e246IlJSVGFiSWQiLGY6aDh9LDMxODp7bjoi'@; put 'UlJEUmVuU2hlZXQifSwzMTk6e246IlJSU29ydCJ9LDMyMDp7bjoiUlJETW92ZSJ9LDMzMDp7bjoiUlJGb3JtYXQifSwzMzE6e246IlJSQXV0b0ZtdCJ9LDMzMzp7bjoiUlJJbnNlcnRTaCJ9LDMzNDp7bjoiUlJETW92ZUJlZ2luIn0sMzM1OntuOiJSUkRNb3ZlRW5kIn0sMzM2OntuOiJSUkRJ'@; put 'bnNEZWxCZWdpbiJ9LDMzNzp7bjoiUlJESW5zRGVsRW5kIn0sMzM4OntuOiJSUkRDb25mbGljdCJ9LDMzOTp7bjoiUlJERGVmTmFtZSJ9LDM0MDp7bjoiUlJEUnN0RXR4cCJ9LDM1MTp7bjoiTFJuZyJ9LDM1Mjp7bjoiVXNlc0VMRnMiLGY6eGF9LDM1Mzp7bjoiRFNGIixmOm1wfSw0MDE6e246'@; put 'IkNVc3IifSw0MDI6e246IkNiVXNyIn0sNDAzOntuOiJVc3JJbmZvIn0sNDA0OntuOiJVc3JFeGNsIn0sNDA1OntuOiJGaWxlTG9jayJ9LDQwNjp7bjoiUlJESW5mbyJ9LDQwNzp7bjoiQkNVc3JzIn0sNDA4OntuOiJVc3JDaGsifSw0MjU6e246IlVzZXJCVmlldyJ9LDQyNjp7bjoiVXNlclNW'@; put 'aWV3QmVnaW4ifSw0Mjc6e246IlVzZXJTVmlld0VuZCJ9LDQyODp7bjoiUlJEVXNlclZpZXcifSw0Mjk6e246IlFzaSJ9LDQzMDp7bjoiU3VwQm9vayIsZjpmdW5jdGlvbiBfWChkLF8sbSl7dmFyIFQ9ZC5sK18sUD1kLnJlYWRfc2hpZnQoMiksUT1kLnJlYWRfc2hpZnQoMik7aWYobS5zYmNj'@; put 'aD1RLDEwMjU9PVF8fDE0ODQ5PT1RKXJldHVybltRLFBdO2lmKFE8MXx8UT4yNTUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFN1cEJvb2sgdHlwZTogIitRKTtmb3IodmFyIHNlPVN0KGQsUSksb2U9W107VD5kLmw7KW9lLnB1c2goUXQoZCkpO3JldHVybltRLFAsc2Usb2VdfX0sNDMx'@; put 'OntuOiJQcm90NFJldiIsZjp4YX0sNDMyOntuOiJDb25kRm10In0sNDMzOntuOiJDRiJ9LDQzNDp7bjoiRFZhbCJ9LDQzNzp7bjoiRENvbkJpbiJ9LDQzODp7bjoiVHhPIixmOmZ1bmN0aW9uIHdYKGQsXyxtKXt2YXIgVD1kLmwsUD0iIixRPS0xO3RyeXtkLmwrPTQsLTE9PVswLDUsNywxMSwx'@; put 'MiwxNF0uaW5kZXhPZigobS5sYXN0b2JqfHx7Y21vOlswLDBdfSkuY21vWzFdKT9kLmwrPTY6ZnVuY3Rpb24gVXIoZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDEpO2QubCsrO3ZhciBtPWQucmVhZF9zaGlmdCgyKTtkLmwrPTJ9KGQpO3ZhciBkZT1kLnJlYWRfc2hpZnQoMik7ZC5yZWFkX3NoaWZ0'@; put 'KDIpLFE9ZC5yZWFkX3NoaWZ0KDIpO3ZhciBOZT1kLnJlYWRfc2hpZnQoMik7ZC5sKz1OZTtmb3IodmFyIEJlPTE7QmU8ZC5sZW5zLmxlbmd0aC0xOysrQmUpe2lmKGQubC1UIT1kLmxlbnNbQmVdKXRocm93IG5ldyBFcnJvcigiVHhPOiBiYWQgY29udGludWUgcmVjb3JkIik7dmFyIFplPWRb'@; put 'ZC5sXTtpZigoUCs9U3QoZCxkLmxlbnNbQmUrMV0tZC5sZW5zW0JlXS0xKSkubGVuZ3RoPj0oWmU/ZGU6MipkZSkpYnJlYWt9aWYoUC5sZW5ndGghPT1kZSYmUC5sZW5ndGghPT0yKmRlKXRocm93IG5ldyBFcnJvcigiY2NoVGV4dDogIitkZSsiICE9ICIrUC5sZW5ndGgpO3JldHVybiBkLmw9'@; put 'VCtfLHt0OlAsaWZudDpRfX1jYXRjaHtyZXR1cm4gZC5sPVQrXyx7dDpQLGlmbnQ6UX19fX0sNDM5OntuOiJSZWZyZXNoQWxsIixmOnhhfSw0NDA6e246IkhMaW5rIixmOmZ1bmN0aW9uIENYKGQsXyl7dmFyIG09b2QoZCk7ZC5sKz0xNjt2YXIgVD1mdW5jdGlvbiBkcyhkLF8pe3ZhciBtPWQu'@; put 'bCtfLFQ9ZC5yZWFkX3NoaWZ0KDQpO2lmKDIhPT1UKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246ICIrVCk7dmFyIFA9ZC5yZWFkX3NoaWZ0KDIpO2QubCs9Mjt2YXIgUSxzZSxvZSxkZSxOZSxCZSxMZT0iIjsxNiZQJiYoUT14byhkKSksMTI4JlAmJihzZT14'@; put 'byhkKSksISgyNTcmflApJiYob2U9eG8oZCkpLDE9PSgyNTcmUCkmJihkZT1mdW5jdGlvbiBKaShkLF8pe3ZhciBtPWQucmVhZF9zaGlmdCgxNik7c3dpdGNoKG0pe2Nhc2UiZTBjOWVhNzlmOWJhY2UxMThjODIwMGFhMDA0YmE5MGIiOnJldHVybiBmdW5jdGlvbiBwaShkKXt2YXIgXz1kLnJl'@; put 'YWRfc2hpZnQoNCksbT1kLmwsVD0hMTtfPjI0JiYoZC5sKz1fLTI0LCI3OTU4ODFmNDNiMWQ3ZjQ4YWYyYzgyNWRjNDg1Mjc2MyI9PT1kLnJlYWRfc2hpZnQoMTYpJiYoVD0hMCksZC5sPW0pO3ZhciBQPWQucmVhZF9zaGlmdCgoVD9fLTI0Ol8pPj4xLCJ1dGYxNmxlIikucmVwbGFjZShELCIi'@; put 'KTtyZXR1cm4gVCYmKGQubCs9MjQpLFB9KGQpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiBmdW5jdGlvbiBEcihkKXtmb3IodmFyIF89ZC5yZWFkX3NoaWZ0KDIpLG09IiI7Xy0tID4wOyltKz0iLi4vIjt2YXIgVD1kLnJlYWRfc2hpZnQoMCwibHBzdHIt'@; put 'YW5zaSIpO2lmKGQubCs9Miw1NzAwNSE9ZC5yZWFkX3NoaWZ0KDIpKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7aWYoMD09PWQucmVhZF9zaGlmdCg0KSlyZXR1cm4gbStULnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgUT1kLnJlYWRfc2hpZnQoNCk7aWYoMyE9ZC5yZWFkX3No'@; put 'aWZ0KDIpKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7cmV0dXJuIG0rZC5yZWFkX3NoaWZ0KFE+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKEQsIiIpfShkKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTW9uaWtlciAiK20pfX0oZCkpLDgmUCYmKExlPXhv'@; put 'KGQpKSwzMiZQJiYoTmU9ZC5yZWFkX3NoaWZ0KDE2KSksNjQmUCYmKEJlPWExKGQpKSxkLmw9bTt2YXIgWmU9c2V8fG9lfHxkZXx8IiI7WmUmJkxlJiYoWmUrPSIjIitMZSksWmV8fChaZT0iIyIrTGUpLDImUCYmIi8iPT1aZS5jaGFyQXQoMCkmJiIvIiE9WmUuY2hhckF0KDEpJiYoWmU9ImZp'@; put 'bGU6Ly8iK1plKTt2YXIgbnQ9e1RhcmdldDpaZX07cmV0dXJuIE5lJiYobnQuZ3VpZD1OZSksQmUmJihudC50aW1lPUJlKSxRJiYobnQuVG9vbHRpcD1RKSxudH0oZCxfLTI0KTtyZXR1cm5bbSxUXX19LDQ0MTp7bjoiTGVsIn0sNDQyOntuOiJDb2RlTmFtZSIsZjpRdH0sNDQzOntuOiJTWEZE'@; put 'QlR5cGUifSw0NDQ6e246IlByb3Q0UmV2UGFzcyIsZjppZH0sNDQ1OntuOiJPYk5vTWFjcm9zIn0sNDQ2OntuOiJEdiJ9LDQ0ODp7bjoiRXhjZWw5RmlsZSIsZjptcH0sNDQ5OntuOiJSZWNhbGNJZCIsZjpmdW5jdGlvbiBjMShkKXtyZXR1cm4gZC5yZWFkX3NoaWZ0KDIpLGQucmVhZF9zaGlm'@; put 'dCg0KX0scjoyfSw0NTA6e246IkVudEV4VTIiLGY6bXB9LDUxMjp7bjoiRGltZW5zaW9ucyIsZjpuU30sNTEzOntuOiJCbGFuayIsZjphU30sNTE1OntuOiJOdW1iZXIiLGY6ZnVuY3Rpb24gb2goZCxfLG0pe20uYmlmZmd1ZXNzJiYyPT1tLmJpZmYmJihtLmJpZmY9NSk7dmFyIFQ9WmkoZCks'@; put 'UD1xcyhkKTtyZXR1cm4gVC52YWw9UCxUfX0sNTE2OntuOiJMYWJlbCIsZjpmdW5jdGlvbiBXbShkLF8sbSl7bS5iaWZmZ3Vlc3MmJjI9PW0uYmlmZiYmKG0uYmlmZj01KTt2YXIgUD1aaShkKTsyPT1tLmJpZmYmJmQubCsrO3ZhciBRPVF0KGQsMCxtKTtyZXR1cm4gUC52YWw9USxQfX0sNTE3'@; put 'OntuOiJCb29sRXJyIixmOmlTfSw1MTk6e246IlN0cmluZyIsZjpvSH0sNTIwOntuOiJSb3ciLGY6ZnVuY3Rpb24gVWUoZCl7dmFyIF89e307Xy5yPWQucmVhZF9zaGlmdCgyKSxfLmM9ZC5yZWFkX3NoaWZ0KDIpLF8uY250PWQucmVhZF9zaGlmdCgyKS1fLmM7dmFyIG09ZC5yZWFkX3NoaWZ0'@; put 'KDIpO2QubCs9NDt2YXIgVD1kLnJlYWRfc2hpZnQoMSk7ZC5sKz0xO3ZhciBQPWQucmVhZF9zaGlmdCgyKTtyZXR1cm4gXy5peGZlPTQwOTUmUCw3JlQmJihfLmxldmVsPTcmVCksMzImVCYmKF8uaGlkZGVuPSEwKSw2NCZUJiYoXy5ocHQ9bS8yMCksX319LDUyMzp7bjoiSW5kZXgifSw1NDU6'@; put 'e246IkFycmF5IixmOkRBfSw1NDk6e246IkRlZmF1bHRSb3dIZWlnaHQiLGY6RGh9LDU2Njp7bjoiVGFibGUifSw1NzQ6e246IldpbmRvdzIiLGY6ZnVuY3Rpb24gSjRlKGQsXyxtKXtpZihtJiZtLmJpZmY+PTImJm0uYmlmZjw1KXJldHVybnt9O3ZhciBUPWQucmVhZF9zaGlmdCgyKTtyZXR1'@; put 'cm57UlRMOjY0JlQsZ3JpZDohISgyJlQpLGZyb3plbjohISg4JlQpfX19LDYzODp7bjoiUksiLGY6ZnVuY3Rpb24gQUEoZCl7dmFyIF89ZC5yZWFkX3NoaWZ0KDIpLG09ZC5yZWFkX3NoaWZ0KDIpLFQ9VWQoZCk7cmV0dXJue3I6XyxjOm0saXhmZTpUWzBdLHJrbnVtOlRbMV19fX0sNjU5Ontu'@; put 'OiJTdHlsZSIsZjpmdW5jdGlvbiBaUChkLF8sbSl7cmV0dXJuIGQubCs9Xyx7fX19LDEwNDg6e246IkJpZ05hbWUifSwxMDU0OntuOiJGb3JtYXQiLGY6ZnVuY3Rpb24gV1AoZCxfLG0pe3JldHVybltkLnJlYWRfc2hpZnQoMiksRW4oZCwwLG0pXX19LDEwODQ6e246IkNvbnRpbnVlQmlnTmFt'@; put 'ZSJ9LDEyMTI6e246IlNockZtbGEiLGY6ZnVuY3Rpb24gcHkoZCxfLG0pe3ZhciBUPWgwKGQpO2QubCsrO3ZhciBQPWQucmVhZF9zaGlmdCgxKTtyZXR1cm5bbkooZCxfLT04LG0pLFAsVF19fSwyMDQ4OntuOiJITGlua1Rvb2x0aXAiLGY6ZnVuY3Rpb24gZUgoZCxfKXtkLnJlYWRfc2hpZnQo'@; put 'Mik7dmFyIG09b2QoZCksVD1kLnJlYWRfc2hpZnQoKF8tMTApLzIsImRiY3MtY29udCIpO3JldHVyblttLFQ9VC5yZXBsYWNlKEQsIiIpXX19LDIwNDk6e246IldlYlB1YiJ9LDIwNTA6e246IlFzaVNYVGFnIn0sMjA1MTp7bjoiREJRdWVyeUV4dCJ9LDIwNTI6e246IkV4dFN0cmluZyJ9LDIw'@; put 'NTM6e246IlR4dFFyeSJ9LDIwNTQ6e246IlFzaXIifSwyMDU1OntuOiJRc2lmIn0sMjA1Njp7bjoiUlJEVFFTSUYifSwyMDU3OntuOiJCT0YiLGY6SWh9LDIwNTg6e246Ik9sZURiQ29ubiJ9LDIwNTk6e246IldPcHQifSwyMDYwOntuOiJTWFZpZXdFeCJ9LDIwNjE6e246IlNYVEgifSwyMDYy'@; put 'OntuOiJTWFBJRXgifSwyMDYzOntuOiJTWFZEVEV4In0sMjA2NDp7bjoiU1hWaWV3RXg5In0sMjA2Njp7bjoiQ29udGludWVGcnQifSwyMDY3OntuOiJSZWFsVGltZURhdGEifSwyMTI4OntuOiJDaGFydEZydEluZm8ifSwyMTI5OntuOiJGcnRXcmFwcGVyIn0sMjEzMDp7bjoiU3RhcnRCbG9j'@; put 'ayJ9LDIxMzE6e246IkVuZEJsb2NrIn0sMjEzMjp7bjoiU3RhcnRPYmplY3QifSwyMTMzOntuOiJFbmRPYmplY3QifSwyMTM0OntuOiJDYXRMYWIifSwyMTM1OntuOiJZTXVsdCJ9LDIxMzY6e246IlNYVmlld0xpbmsifSwyMTM3OntuOiJQaXZvdENoYXJ0Qml0cyJ9LDIxMzg6e246IkZydEZv'@; put 'bnRMaXN0In0sMjE0Njp7bjoiU2hlZXRFeHQifSwyMTQ3OntuOiJCb29rRXh0IixyOjEyfSwyMTQ4OntuOiJTWEFkZGwifSwyMTQ5OntuOiJDckVyciJ9LDIxNTA6e246IkhGUGljdHVyZSJ9LDIxNTE6e246IkZlYXRIZHIiLGY6bXB9LDIxNTI6e246IkZlYXQifSwyMTU0OntuOiJEYXRhTGFi'@; put 'RXh0In0sMjE1NTp7bjoiRGF0YUxhYkV4dENvbnRlbnRzIn0sMjE1Njp7bjoiQ2VsbFdhdGNoIn0sMjE2MTp7bjoiRmVhdEhkcjExIn0sMjE2Mjp7bjoiRmVhdHVyZTExIn0sMjE2NDp7bjoiRHJvcERvd25PYmpJZHMifSwyMTY1OntuOiJDb250aW51ZUZydDExIn0sMjE2Njp7bjoiRENvbm4i'@; put 'fSwyMTY3OntuOiJMaXN0MTIifSwyMTY4OntuOiJGZWF0dXJlMTIifSwyMTY5OntuOiJDb25kRm10MTIifSwyMTcwOntuOiJDRjEyIn0sMjE3MTp7bjoiQ0ZFeCJ9LDIxNzI6e246IlhGQ1JDIixmOmZ1bmN0aW9uIFNYKGQpe2QubCs9Mjt2YXIgXz17Y3hmczowLGNyYzowfTtyZXR1cm4gXy5j'@; put 'eGZzPWQucmVhZF9zaGlmdCgyKSxfLmNyYz1kLnJlYWRfc2hpZnQoNCksX30scjoxMn0sMjE3Mzp7bjoiWEZFeHQiLGY6ZnVuY3Rpb24gQ2QoZCxfKXtkLmwrPTI7dmFyIFQ9ZC5yZWFkX3NoaWZ0KDIpO2QubCs9Mjtmb3IodmFyIFA9ZC5yZWFkX3NoaWZ0KDIpLFE9W107UC0tID4wOylRLnB1'@; put 'c2goTTgoZCkpO3JldHVybntpeGZlOlQsZXh0OlF9fSxyOjEyfSwyMTc0OntuOiJBdXRvRmlsdGVyMTIifSwyMTc1OntuOiJDb250aW51ZUZydDEyIn0sMjE4MDp7bjoiTURUSW5mbyJ9LDIxODE6e246Ik1EWFN0ciJ9LDIxODI6e246Ik1EWFR1cGxlIn0sMjE4Mzp7bjoiTURYU2V0In0sMjE4'@; put 'NDp7bjoiTURYUHJvcCJ9LDIxODU6e246Ik1EWEtQSSJ9LDIxODY6e246Ik1EQiJ9LDIxODc6e246IlBMViJ9LDIxODg6e246IkNvbXBhdDEyIixmOnhhLHI6MTJ9LDIxODk6e246IkRYRiJ9LDIxOTA6e246IlRhYmxlU3R5bGVzIixyOjEyfSwyMTkxOntuOiJUYWJsZVN0eWxlIn0sMjE5Mjp7'@; put 'bjoiVGFibGVTdHlsZUVsZW1lbnQifSwyMTk0OntuOiJTdHlsZUV4dCJ9LDIxOTU6e246Ik5hbWVQdWJsaXNoIn0sMjE5Njp7bjoiTmFtZUNtdCIsZjpmdW5jdGlvbiBvUyhkLF8sbSl7aWYoIShtLmJpZmY8OCkpe3ZhciBUPWQucmVhZF9zaGlmdCgyKSxQPWQucmVhZF9zaGlmdCgyKTtyZXR1'@; put 'cm5bU3QoZCxULG0pLFN0KGQsUCxtKV19ZC5sKz1ffSxyOjEyfSwyMTk3OntuOiJTb3J0RGF0YSJ9LDIxOTg6e246IlRoZW1lIixmOmZ1bmN0aW9uIHd5KGQsXyxtKXt2YXIgVD1kLmwrXztpZigxMjQyMjYhPT1kLnJlYWRfc2hpZnQoNCkpe2lmKCFtLmNlbGxTdHlsZXMpcmV0dXJuIHZvaWQo'@; put 'ZC5sPVQpO3ZhciBzZSxRPWQuc2xpY2UoZC5sKTtkLmw9VDt0cnl7c2U9cnIoUSx7dHlwZToiYXJyYXkifSl9Y2F0Y2h7cmV0dXJufXZhciBvZT12cihzZSwidGhlbWUvdGhlbWUvdGhlbWUxLnhtbCIsITApO2lmKG9lKXJldHVybiBJOShvZSxtKX19LHI6MTJ9LDIxOTk6e246IkdVSURUeXBl'@; put 'TGliIn0sMjIwMDp7bjoiRm5HcnAxMiJ9LDIyMDE6e246Ik5hbWVGbkdycDEyIn0sMjIwMjp7bjoiTVRSU2V0dGluZ3MiLGY6ZnVuY3Rpb24gUVAoZCl7cmV0dXJuWzAhPT1kLnJlYWRfc2hpZnQoNCksMCE9PWQucmVhZF9zaGlmdCg0KSxkLnJlYWRfc2hpZnQoNCldfSxyOjEyfSwyMjAzOntu'@; put 'OiJDb21wcmVzc1BpY3R1cmVzIixmOm1wfSwyMjA0OntuOiJIZWFkZXJGb290ZXIifSwyMjA1OntuOiJDcnRMYXlvdXQxMiJ9LDIyMDY6e246IkNydE1sRnJ0In0sMjIwNzp7bjoiQ3J0TWxGcnRDb250aW51ZSJ9LDIyMTE6e246IkZvcmNlRnVsbENhbGN1bGF0aW9uIixmOmZ1bmN0aW9uIGl0'@; put 'KGQpe3ZhciBfPWZ1bmN0aW9uIGpsKGQpe3ZhciBfPWQucmVhZF9zaGlmdCgyKSxtPWQucmVhZF9zaGlmdCgyKTtyZXR1cm4gZC5sKz04LHt0eXBlOl8sZmxhZ3M6bX19KGQpO2lmKDIyMTEhPV8udHlwZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRnV0dXJlIFJlY29yZCAiK18udHlwZSk7'@; put 'cmV0dXJuIDAhPT1kLnJlYWRfc2hpZnQoNCl9fSwyMjEyOntuOiJTaGFwZVByb3BzU3RyZWFtIn0sMjIxMzp7bjoiVGV4dFByb3BzU3RyZWFtIn0sMjIxNDp7bjoiUmljaFRleHRTdHJlYW0ifSwyMjE1OntuOiJDcnRMYXlvdXQxMkEifSw0MDk3OntuOiJVbml0cyJ9LDQwOTg6e246IkNoYXJ0'@; put 'In0sNDA5OTp7bjoiU2VyaWVzIn0sNDEwMjp7bjoiRGF0YUZvcm1hdCJ9LDQxMDM6e246IkxpbmVGb3JtYXQifSw0MTA1OntuOiJNYXJrZXJGb3JtYXQifSw0MTA2OntuOiJBcmVhRm9ybWF0In0sNDEwNzp7bjoiUGllRm9ybWF0In0sNDEwODp7bjoiQXR0YWNoZWRMYWJlbCJ9LDQxMDk6e246'@; put 'IlNlcmllc1RleHQifSw0MTE2OntuOiJDaGFydEZvcm1hdCJ9LDQxMTc6e246IkxlZ2VuZCJ9LDQxMTg6e246IlNlcmllc0xpc3QifSw0MTE5OntuOiJCYXIifSw0MTIwOntuOiJMaW5lIn0sNDEyMTp7bjoiUGllIn0sNDEyMjp7bjoiQXJlYSJ9LDQxMjM6e246IlNjYXR0ZXIifSw0MTI0Ontu'@; put 'OiJDcnRMaW5lIn0sNDEyNTp7bjoiQXhpcyJ9LDQxMjY6e246IlRpY2sifSw0MTI3OntuOiJWYWx1ZVJhbmdlIn0sNDEyODp7bjoiQ2F0U2VyUmFuZ2UifSw0MTI5OntuOiJBeGlzTGluZSJ9LDQxMzA6e246IkNydExpbmsifSw0MTMyOntuOiJEZWZhdWx0VGV4dCJ9LDQxMzM6e246IlRleHQi'@; put 'fSw0MTM0OntuOiJGb250WCIsZjppZH0sNDEzNTp7bjoiT2JqZWN0TGluayJ9LDQxNDY6e246IkZyYW1lIn0sNDE0Nzp7bjoiQmVnaW4ifSw0MTQ4OntuOiJFbmQifSw0MTQ5OntuOiJQbG90QXJlYSJ9LDQxNTQ6e246IkNoYXJ0M2QifSw0MTU2OntuOiJQaWNGIn0sNDE1Nzp7bjoiRHJvcEJh'@; put 'ciJ9LDQxNTg6e246IlJhZGFyIn0sNDE1OTp7bjoiU3VyZiJ9LDQxNjA6e246IlJhZGFyQXJlYSJ9LDQxNjE6e246IkF4aXNQYXJlbnQifSw0MTYzOntuOiJMZWdlbmRFeGNlcHRpb24ifSw0MTY0OntuOiJTaHRQcm9wcyIsZjpmdW5jdGlvbiBpSChkLF8sbSl7dmFyIFQ9e2FyZWE6ITF9O2lm'@; put 'KDUhPW0uYmlmZilyZXR1cm4gZC5sKz1fLFQ7dmFyIFA9ZC5yZWFkX3NoaWZ0KDEpO3JldHVybiBkLmwrPTMsMTYmUCYmKFQuYXJlYT0hMCksVH19LDQxNjU6e246IlNlclRvQ3J0In0sNDE2Njp7bjoiQXhlc1VzZWQifSw0MTY4OntuOiJTQmFzZVJlZiJ9LDQxNzA6e246IlNlclBhcmVudCJ9'@; put 'LDQxNzE6e246IlNlckF1eFRyZW5kIn0sNDE3NDp7bjoiSUZtdFJlY29yZCJ9LDQxNzU6e246IlBvcyJ9LDQxNzY6e246IkFsUnVucyJ9LDQxNzc6e246IkJSQUkifSw0MTg3OntuOiJTZXJBdXhFcnJCYXIifSw0MTg4OntuOiJDbHJ0Q2xpZW50IixmOmZ1bmN0aW9uIHRIKGQpe2Zvcih2YXIg'@; put 'Xz1kLnJlYWRfc2hpZnQoMiksbT1bXTtfLS0gPjA7KW0ucHVzaChJbyhkKSk7cmV0dXJuIG19fSw0MTg5OntuOiJTZXJGbXQifSw0MTkxOntuOiJDaGFydDNEQmFyU2hhcGUifSw0MTkyOntuOiJGYmkifSw0MTkzOntuOiJCb3BQb3AifSw0MTk0OntuOiJBeGNFeHQifSw0MTk1OntuOiJEYXQi'@; put 'fSw0MTk2OntuOiJQbG90R3Jvd3RoIn0sNDE5Nzp7bjoiU0lJbmRleCJ9LDQxOTg6e246IkdlbEZyYW1lIn0sNDE5OTp7bjoiQm9wUG9wQ3VzdG9tIn0sNDIwMDp7bjoiRmJpMiJ9LDA6e246IkRpbWVuc2lvbnMiLGY6blN9LDE6e246IkJJRkYyQkxBTksifSwyOntuOiJCSUZGMklOVCIsZjpm'@; put 'dW5jdGlvbiB4WChkKXt2YXIgXz1aaShkKTsrK2QubDt2YXIgbT1kLnJlYWRfc2hpZnQoMik7cmV0dXJuIF8udD0ibiIsXy52YWw9bSxffX0sMzp7bjoiQklGRjJOVU0iLGY6ZnVuY3Rpb24gVFgoZCl7dmFyIF89WmkoZCk7KytkLmw7dmFyIG09cXMoZCk7cmV0dXJuIF8udD0ibiIsXy52YWw9'@; put 'bSxffX0sNDp7bjoiQklGRjJTVFIiLGY6ZnVuY3Rpb24gTVgoZCxfLG0pe20uYmlmZmd1ZXNzJiY1PT1tLmJpZmYmJihtLmJpZmY9Mik7dmFyIFQ9WmkoZCk7KytkLmw7dmFyIFA9RW4oZCwwLG0pO3JldHVybiBULnQ9InN0ciIsVC52YWw9UCxUfX0sNTp7bjoiQm9vbEVyciIsZjppU30sNzp7'@; put 'bjoiU3RyaW5nIixmOmZ1bmN0aW9uIEZBKGQpe3ZhciBfPWQucmVhZF9zaGlmdCgxKTtyZXR1cm4gMD09PV8/KGQubCsrLCIiKTpkLnJlYWRfc2hpZnQoXywic2Jjcy1jb250Iil9fSw4OntuOiJCSUZGMlJPVyJ9LDk6e246IkJPRiIsZjpJaH0sMTE6e246IkluZGV4In0sMjI6e246IkV4dGVy'@; put 'bkNvdW50IixmOmlkfSwzMDp7bjoiQklGRjJGT1JNQVQiLGY6Z1h9LDMxOntuOiJCSUZGMkZNVENOVCJ9LDMyOntuOiJCSUZGMkNPTElORk8ifSwzMzp7bjoiQXJyYXkiLGY6REF9LDM2OntuOiJDT0xXSURUSCJ9LDM3OntuOiJEZWZhdWx0Um93SGVpZ2h0IixmOkRofSw1MDp7bjoiQklGRjJG'@; put 'T05UWFRSQSIsZjpmdW5jdGlvbiBzSChkLF8pe2QubCs9NixkLmwrPTIsZC5sKz0xLGQubCs9MyxkLmwrPTEsZC5sKz1fLTEzfX0sNjI6e246IkJJRkYyV0lORE9XMiJ9LDUyOntuOiJEREVPYmpOYW1lIn0sNjc6e246IkJJRkYyWEYifSw2ODp7bjoiQklGRjJYRklOREVYIixmOmlkfSw2OTp7'@; put 'bjoiQklGRjJGT05UQ0xSIn0sODY6e246IkJJRkY0Rk1UQ05UIn0sMTI2OntuOiJSSyJ9LDEyNzp7bjoiSW1EYXRhIixmOmZ1bmN0aW9uIGw1KGQpe3ZhciBfPWQucmVhZF9zaGlmdCgyKSxtPWQucmVhZF9zaGlmdCgyKSxUPWQucmVhZF9zaGlmdCg0KSxQPXtmbXQ6XyxlbnY6bSxsZW46VCxk'@; put 'YXRhOmQuc2xpY2UoZC5sLGQubCtUKX07cmV0dXJuIGQubCs9VCxQfX0sMTM1OntuOiJBZGRpbiJ9LDEzNjp7bjoiRWRnIn0sMTM3OntuOiJQdWIifSwxNDU6e246IlN1YiJ9LDE0ODp7bjoiTEhSZWNvcmQifSwxNDk6e246IkxITkdyYXBoIn0sMTUwOntuOiJTb3VuZCJ9LDE2OTp7bjoiQ29v'@; put 'cmRMaXN0In0sMTcxOntuOiJHQ1cifSwxODg6e246IlNockZtbGEifSwxOTE6e246IlRvb2xiYXJIZHIifSwxOTI6e246IlRvb2xiYXJFbmQifSwxOTQ6e246IkFkZE1lbnUifSwxOTU6e246IkRlbE1lbnUifSwyMTQ6e246IlJTdHJpbmciLGY6ZnVuY3Rpb24gWm0oZCxfLG0pe3ZhciBUPWQu'@; put 'bCtfLFA9WmkoZCksUT1kLnJlYWRfc2hpZnQoMiksc2U9U3QoZCxRLG0pO3JldHVybiBkLmw9VCxQLnQ9InN0ciIsUC52YWw9c2UsUH19LDIyMzp7bjoiVUREZXNjIn0sMjM0OntuOiJUYWJJZENvbmYifSwzNTQ6e246IlhMNU1vZGlmeSJ9LDQyMTp7bjoiRmlsZVNoYXJpbmcyIn0sNTE4Ontu'@; put 'OiJGb3JtdWxhIixmOkFrfSw1MjE6e246IkJPRiIsZjpJaH0sNTM2OntuOiJMYmwiLGY6S1B9LDU0Nzp7bjoiRXh0ZXJuTmFtZSIsZjpxUH0sNTYxOntuOiJGb250In0sNTc5OntuOiJCSUZGM1hGIn0sMTAzMDp7bjoiRm9ybXVsYSIsZjpBa30sMTAzMzp7bjoiQk9GIixmOklofSwxMDkxOntu'@; put 'OiJCSUZGNFhGIn0sMjE1Nzp7bjoiRmVhdEluZm8ifSwyMTYzOntuOiJGZWF0SW5mbzExIn0sMjE3Nzp7bjoiU1hBZGRsMTIifSwyMjQwOntuOiJBdXRvV2ViUHViIn0sMjI0MTp7bjoiTGlzdE9iaiJ9LDIyNDI6e246Ikxpc3RGaWVsZCJ9LDIyNDM6e246Ikxpc3REViJ9LDIyNDQ6e246Ikxp'@; put 'c3RDb25kRm10In0sMjI0NTp7bjoiTGlzdENGIn0sMjI0Njp7bjoiRk1RcnkifSwyMjQ3OntuOiJGTVNRcnkifSwyMjQ4OntuOiJQTFYifSwyMjQ5OntuOiJMbkV4dCJ9LDIyNTA6e246Ik1rckV4dCJ9LDIyNTE6e246IkNydENvb3B0In0sMjI2Mjp7bjoiRlJUQXJjaElkJCIscjoxMn0sMjky'@; put 'ODI6e319LGpCPWdlKEc5LCJuIik7ZnVuY3Rpb24gemkoZCxfLG0sVCl7dmFyIFA9K198fCtqQltfXTtpZighaXNOYU4oUCkpe3ZhciBRPVR8fChtfHxbXSkubGVuZ3RofHwwLHNlPWQubmV4dCg0KTtzZS53cml0ZV9zaGlmdCgyLFApLHNlLndyaXRlX3NoaWZ0KDIsUSksUT4wJiZ3byhtKSYm'@; put 'ZC5wdXNoKG0pfX1mdW5jdGlvbiBSNShkLF8sbSl7cmV0dXJuIGR8fChkPUZyKDcpKSxkLndyaXRlX3NoaWZ0KDIsXyksZC53cml0ZV9zaGlmdCgyLG0pLGQud3JpdGVfc2hpZnQoMiwwKSxkLndyaXRlX3NoaWZ0KDEsMCksZH1mdW5jdGlvbiBVQihkLF8sbSxUKXtpZihudWxsIT1fLnYpc3dp'@; put 'dGNoKF8udCl7Y2FzZSJkIjpjYXNlIm4iOnZhciBQPSJkIj09Xy50P0tlKGxuKF8udikpOl8udjtyZXR1cm4gdm9pZChQPT0oMHxQKSYmUD49MCYmUDw2NTUzNj96aShkLDIsZnVuY3Rpb24gQVgoZCxfLG0pe3ZhciBUPUZyKDkpO3JldHVybiBSNShULGQsXyksVC53cml0ZV9zaGlmdCgyLG0p'@; put 'LFR9KG0sVCxQKSk6emkoZCwzLGZ1bmN0aW9uIE5BKGQsXyxtKXt2YXIgVD1GcigxNSk7cmV0dXJuIFI1KFQsZCxfKSxULndyaXRlX3NoaWZ0KDgsbSwiZiIpLFR9KG0sVCxQKSkpO2Nhc2UiYiI6Y2FzZSJlIjpyZXR1cm4gdm9pZCB6aShkLDUsZnVuY3Rpb24gbkUoZCxfLG0sVCl7dmFyIFA9'@; put 'RnIoOSk7cmV0dXJuIFI1KFAsZCxfKSxsZShtLFR8fCJiIixQKSxQfShtLFQsXy52LF8udCkpO2Nhc2UicyI6Y2FzZSJzdHIiOnJldHVybiB2b2lkIHppKGQsNCxmdW5jdGlvbiBLNWUoZCxfLG0pe3ZhciBUPUZyKDgrMiptLmxlbmd0aCk7cmV0dXJuIFI1KFQsZCxfKSxULndyaXRlX3NoaWZ0'@; put 'KDEsbS5sZW5ndGgpLFQud3JpdGVfc2hpZnQobS5sZW5ndGgsbSwic2JjcyIpLFQubDxULmxlbmd0aD9ULnNsaWNlKDAsVC5sKTpUfShtLFQsKF8udnx8IiIpLnNsaWNlKDAsMjU1KSkpfXppKGQsMSxSNShudWxsLG0sVCkpfWZ1bmN0aW9uIFU4KGQsXyxtLFQsUCl7dmFyIFE9MTYrQTIoUC5j'@; put 'ZWxsWGZzLFAuY2VsbFN0eWxlWGZzLF8sUCk7aWYobnVsbCE9Xy52fHxfLmJmKWlmKF8uYmYpemkoZCwiRm9ybXVsYSIsZnVuY3Rpb24gckooZCxfLG0sVCxQKXt2YXIgUT1nbChfLG0sUCksc2U9ZnVuY3Rpb24gRVYoZCl7aWYobnVsbD09ZCl7dmFyIF89RnIoOCk7cmV0dXJuIF8ud3JpdGVf'@; put 'c2hpZnQoMSwzKSxfLndyaXRlX3NoaWZ0KDEsMCksXy53cml0ZV9zaGlmdCgyLDApLF8ud3JpdGVfc2hpZnQoMiwwKSxfLndyaXRlX3NoaWZ0KDIsNjU1MzUpLF99cmV0dXJuIEphKCJudW1iZXIiPT10eXBlb2YgZD9kOjApfShkLnYpLG9lPUZyKDYpO29lLndyaXRlX3NoaWZ0KDIsMzMpLG9l'@; put 'LndyaXRlX3NoaWZ0KDQsMCk7Zm9yKHZhciBMZT1GcihkLmJmLmxlbmd0aCksTmU9MDtOZTxkLmJmLmxlbmd0aDsrK05lKUxlW05lXT1kLmJmW05lXTtyZXR1cm4gRyhbUSxzZSxvZSxMZV0pfShfLG0sVCwwLFEpKTtlbHNlIHN3aXRjaChfLnQpe2Nhc2UiZCI6Y2FzZSJuIjp6aShkLCJOdW1i'@; put 'ZXIiLGZ1bmN0aW9uIFltKGQsXyxtLFQpe3ZhciBQPUZyKDE0KTtyZXR1cm4gZ2woZCxfLFQsUCksSmEobSxQKSxQfShtLFQsImQiPT1fLnQ/S2UobG4oXy52KSk6Xy52LFEpKTticmVhaztjYXNlImIiOmNhc2UiZSI6emkoZCw1MTcsZnVuY3Rpb24gdlgoZCxfLG0sVCxQLFEpe3ZhciBzZT1G'@; put 'cig4KTtyZXR1cm4gZ2woZCxfLFQsc2UpLGxlKG0sUSxzZSksc2V9KG0sVCxfLnYsUSwwLF8udCkpO2JyZWFrO2Nhc2UicyI6Y2FzZSJzdHIiOmlmKFAuYm9va1NTVCl7dmFyIG9lPUxrKFAuU3RyaW5ncyxfLnYsXy5SP18ucj1NOShfLlIpOm51bGwsUC5yZXZTdHJpbmdzKTtpZihfLlIpZm9y'@; put 'KHZhciBkZT0wO2RlPF8uUi5sZW5ndGg7KytkZSlfLlJbZGVdLnMmJkEyKFAuY2VsbFhmcyxQLmNlbGxTdHlsZVhmcyx7dDoibiIsdjowLHM6Xy5SW2RlXS5zfSxQKTt6aShkLCJMYWJlbFNzdCIsZnVuY3Rpb24gRTIoZCxfLG0sVCl7dmFyIFA9RnIoMTApO3JldHVybiBnbChkLF8sVCxQKSxQ'@; put 'LndyaXRlX3NoaWZ0KDQsbSksUH0obSxULG9lLFEpKX1lbHNlIHppKGQsIkxhYmVsIixmdW5jdGlvbiBmWChkLF8sbSxULFApe3ZhciBRPSFQfHw4PT1QLmJpZmYsc2U9RnIoK1ErOCsoMStRKSptLmxlbmd0aCk7cmV0dXJuIGdsKGQsXyxULHNlKSxzZS53cml0ZV9zaGlmdCgyLG0ubGVuZ3Ro'@; put 'KSxRJiZzZS53cml0ZV9zaGlmdCgxLDEpLHNlLndyaXRlX3NoaWZ0KCgxK1EpKm0ubGVuZ3RoLG0sUT8idXRmMTZsZSI6InNiY3MiKSxzZX0obSxULChfLnZ8fCIiKS5zbGljZSgwLDI1NSksUSxQKSk7YnJlYWs7ZGVmYXVsdDp6aShkLCJCbGFuayIsZ2wobSxULFEpKX1lbHNlIHppKGQsIkJs'@; put 'YW5rIixnbChtLFQsUSkpfWZ1bmN0aW9uIFg1ZShkLF8sbSl7dmFyIE5lLFQ9TWMoKSxQPW0uU2hlZXROYW1lc1tkXSxRPW0uU2hlZXRzW1BdfHx7fSxzZT0obXx8e30pLldvcmtib29rfHx7fSxvZT0oc2UuU2hlZXRzfHxbXSlbZF18fHt9LGRlPUFycmF5LmlzQXJyYXkoUSksTGU9OD09Xy5i'@; put 'aWZmLEJlPSIiLFplPVtdLG50PXl0KFFbIiFyZWYiXXx8IkExIiksbXQ9TGU/NjU1MzY6MTYzODQ7aWYobnQuZS5jPjI1NXx8bnQuZS5yPj1tdCl7aWYoXy5XVEYpdGhyb3cgbmV3IEVycm9yKCJSYW5nZSAiKyhRWyIhcmVmIl18fCJBMSIpKyIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6SVYx'@; put 'NjM4NCIpO250LmUuYz1NYXRoLm1pbihudC5lLmMsMjU1KSxudC5lLnI9TWF0aC5taW4obnQuZS5jLG10LTEpfXppKFQsMjA1NyxSZygwLDE2LF8pKSx6aShULCJDYWxjTW9kZSIsZDAoMSkpLHppKFQsIkNhbGNDb3VudCIsZDAoMTAwKSksemkoVCwiQ2FsY1JlZk1vZGUiLHBsKCEwKSksemko'@; put 'VCwiQ2FsY0l0ZXIiLHBsKCExKSksemkoVCwiQ2FsY0RlbHRhIixKYSguMDAxKSksemkoVCwiQ2FsY1NhdmVSZWNhbGMiLHBsKCEwKSksemkoVCwiUHJpbnRSb3dDb2wiLHBsKCExKSksemkoVCwiUHJpbnRHcmlkIixwbCghMSkpLHppKFQsIkdyaWRTZXQiLGQwKDEpKSx6aShULCJHdXRzIixm'@; put 'dW5jdGlvbiAkUChkKXt2YXIgXz1Gcig4KTtyZXR1cm4gXy53cml0ZV9zaGlmdCg0LDApLF8ud3JpdGVfc2hpZnQoMixkWzBdP2RbMF0rMTowKSxfLndyaXRlX3NoaWZ0KDIsZFsxXT9kWzFdKzE6MCksX30oWzAsMF0pKSx6aShULCJIQ2VudGVyIixwbCghMSkpLHppKFQsIlZDZW50ZXIiLHBs'@; put 'KCExKSk7dmFyIFFlPVFbIiFwcmludCJdJiZRWyIhcHJpbnQiXS5tYXJnaW5zfHxRWyIhbWFyZ2lucyJdO1FlJiYobnVsbCE9UWUubGVmdCYmemkoVCwiTGVmdE1hcmdpbiIsSmEoUWUubGVmdCkpLG51bGwhPVFlLnJpZ2h0JiZ6aShULCJSaWdodE1hcmdpbiIsSmEoUWUucmlnaHQpKSxudWxs'@; put 'IT1RZS50b3AmJnppKFQsIlRvcE1hcmdpbiIsSmEoUWUudG9wKSksbnVsbCE9UWUuYm90dG9tJiZ6aShULCJCb3R0b21NYXJnaW4iLEphKFFlLmJvdHRvbSkpLChudWxsIT1RZS5oZWFkZXJ8fG51bGwhPVFlLmZvb3RlcikmJnppKFQsIlNldHVwIixmdW5jdGlvbiBySChkLF8pe3ZhciBtPUZy'@; put 'KDM0KSxUPSExLFA9NzA7cmV0dXJuImxhbmRzY2FwZSI9PShfLnByb3BzfHx7fSkub3JpZW50YXRpb24mJihUPSEwLFAmPS02NyksVCYmKFAmPS01KSxtLndyaXRlX3NoaWZ0KDIsMSksbS53cml0ZV9zaGlmdCgyLDEwMCksbS53cml0ZV9zaGlmdCgyLDApLG0ud3JpdGVfc2hpZnQoMiwwKSxt'@; put 'LndyaXRlX3NoaWZ0KDIsMCksbS53cml0ZV9zaGlmdCgxLFApLG0ud3JpdGVfc2hpZnQoMSwwKSxtLndyaXRlX3NoaWZ0KDIsNjAwKSxtLndyaXRlX3NoaWZ0KDIsNjAwKSxKYShudWxsPT1kLmhlYWRlcj8uNTpkLmhlYWRlcixtKSxKYShudWxsPT1kLmZvb3Rlcj8uNTpkLmZvb3RlcixtKSxt'@; put 'LndyaXRlX3NoaWZ0KDIsMSksbX0oUWUsUVsiIXByaW50Il18fHt9KSkpLExlJiZmdW5jdGlvbiAkOShkLF8sbSl7aWYoXyl7dmFyIFQ9MDtfLmZvckVhY2goZnVuY3Rpb24oUCxRKXsrK1Q8PTI1NiYmUCYmKFAuYXV0byYmeFYobSxQLFEpLHppKGQsIkNvbEluZm8iLGZ1bmN0aW9uIG5IKGQs'@; put 'Xyl7dmFyIG09RnIoMTIpO20ud3JpdGVfc2hpZnQoMixfKSxtLndyaXRlX3NoaWZ0KDIsXyksbS53cml0ZV9zaGlmdCgyLDI1NipkLndpZHRoKSxtLndyaXRlX3NoaWZ0KDIsMCk7dmFyIFQ9MDtyZXR1cm4gZC5oaWRkZW4mJihUfD0xKSxtLndyaXRlX3NoaWZ0KDEsVCksbS53cml0ZV9zaGlm'@; put 'dCgxLFQ9ZC5sZXZlbHx8MCksbS53cml0ZV9zaGlmdCgyLDApLG19KE9rKFEsUCksUSkpKX0pfX0oVCxRWyIhY29scyJdLFEpLHppKFQsIkRpbWVuc2lvbnMiLGZ1bmN0aW9uIHhBKGQsXyl7dmFyIG09OCE9Xy5iaWZmJiZfLmJpZmY/Mjo0LFQ9RnIoMiptKzYpO3JldHVybiBULndyaXRlX3No'@; put 'aWZ0KG0sZC5zLnIpLFQud3JpdGVfc2hpZnQobSxkLmUucisxKSxULndyaXRlX3NoaWZ0KDIsZC5zLmMpLFQud3JpdGVfc2hpZnQoMixkLmUuYysxKSxULndyaXRlX3NoaWZ0KDIsMCksVH0obnQsXykpLExlJiYoUVsiIWxpbmtzIl09W10pLFFbIiFyb3dzIl0mJkxlJiZRWyIhcm93cyJdLmZv'@; put 'ckVhY2goZnVuY3Rpb24oVnQsdW4pe2Zvcih2YXIgbnI9em8odW4pLG5uPTI1Nixhcj0wLGpuPVZ0LnM/MTYrQTIoXy5jZWxsWGZzLF8uY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpWdC5zfSxfKTowLGtuPW50LnMuYztrbjw9bnQuZS5jOysra24pKGRlPyhRW3VuXXx8W10pW2tuXTpRW1pl'@; put 'W2tuXStucl0pJiYoa248bm4mJihubj1rbiksa24+YXImJihhcj1rbikpO2FyPG5uJiYobm49YXI9MCksemkoVCwiUm93IixmdW5jdGlvbiBjdChkLF8sbSl7dmFyIFQ9RnIoMTYpO1Qud3JpdGVfc2hpZnQoMixfKSxULndyaXRlX3NoaWZ0KDIsbVswXSksVC53cml0ZV9zaGlmdCgyLG1bMV0r'@; put 'MSksVC53cml0ZV9zaGlmdCgyLDIwKmQuaHB0fHwyMCpiOChkLmhweCl8fDMzMCksVC53cml0ZV9zaGlmdCg0LDApO3ZhciBQPTA7cmV0dXJuIFB8PTB8ZC5sZXZlbCxkLmhpZGRlbiYmKFB8PTMyKSxQfD02NCxtWzJdJiYoUHw9MTI4KSxULndyaXRlX3NoaWZ0KDEsUCksVC53cml0ZV9zaGlm'@; put 'dCgxLDEpLFQud3JpdGVfc2hpZnQoMixtWzJdfHwwKSxUfShWdCx1bixbbm4sYXIsam5dKSl9KTtmb3IodmFyIGZ0PW50LnMucjtmdDw9bnQuZS5yOysrZnQpe0JlPXpvKGZ0KTtmb3IodmFyIGt0PW50LnMuYztrdDw9bnQuZS5jOysra3Qpe2Z0PT09bnQucy5yJiYoWmVba3RdPW1zKGt0KSks'@; put 'TmU9WmVba3RdK0JlO3ZhciBidD1kZT8oUVtmdF18fFtdKVtrdF06UVtOZV07YnQmJihVOChULGJ0LGZ0LGt0LF8pLExlJiZidC5sJiZRWyIhbGlua3MiXS5wdXNoKFtOZSxidC5sXSkpfX12YXIgRXQ9b2UuQ29kZU5hbWV8fG9lLm5hbWV8fFA7cmV0dXJuKExlfHw1PT1fLmJpZmYmJlFbIiFm'@; put 'cmVlemUiXSkmJnppKFQsIldpbmRvdzIiLGZ1bmN0aW9uIGpQKGQsXyxtLFQpe3ZhciBQPVQmJlQuYmlmZnx8OCxRPUZyKDg9PVA/MTg6MTApLHNlPTE3MTg7cmV0dXJuIG0+MCYmKHNlJj0tNTEzKSxfbihfWyIhZ3JpZGxpbmVzIl0pJiYoc2UmPS0zKSxfWyIhZnJlZXplIl0mJihzZXw9OCks'@; put 'ZCYmZC5SVEwmJihzZXw9NjQpLDU9PVAmJihzZT00NDYpLFEud3JpdGVfc2hpZnQoMixzZSksOD09UD8oUS53cml0ZV9zaGlmdCg0LDApLFEud3JpdGVfc2hpZnQoNCw2NCksUS53cml0ZV9zaGlmdCg0LDApLFEud3JpdGVfc2hpZnQoNCwwKSk6KFEud3JpdGVfc2hpZnQoNCwwKSxRLndyaXRl'@; put 'X3NoaWZ0KDQsMCkpLFF9KChzZS5WaWV3c3x8W10pWzBdLFEsZCkpLChMZXx8NT09Xy5iaWZmKSYmUVsiIWZyZWV6ZSJdJiZ6aShULCJQYW5lIixmdW5jdGlvbiB0UyhkKXsic3RyaW5nIj09dHlwZW9mIGQmJihkPUlzKGQpKTt2YXIgXz1GcigxMCk7cmV0dXJuIF8ud3JpdGVfc2hpZnQoMixk'@; put 'LmMpLF8ud3JpdGVfc2hpZnQoMixkLnIpLF8ud3JpdGVfc2hpZnQoMixkLnIpLF8ud3JpdGVfc2hpZnQoMixkLmMpLF8ud3JpdGVfc2hpZnQoMSwzKSxfLndyaXRlX3NoaWZ0KDEsMCksX30oUVsiIWZyZWV6ZSJdKSksTGUmJlFbIiFzZWwiXSYmemkoVCwiU2VsZWN0aW9uIixmdW5jdGlvbiBh'@; put 'SChkLF8pe3ZhciBtPUZyKDE1KSxUPWQuY2VsbDtpZighVCl7aWYoIWQucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJNdXN0IHNwZWNpZnkgYSBzZWxlY3Rpb24gY2VsbCBvciByYW5nZSIpO1Q9cWkoemEoZC5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zKX12YXIgUD0ic3RyaW5nIj09dHlw'@; put 'ZW9mIFQ/SXMoVCk6VDtpZihfKXt2YXIgUT0ic3RyaW5nIj09dHlwZW9mIF8/SXMoXyk6XzttLndyaXRlX3NoaWZ0KDEsUC5yPj1RLnImJlAuYz49US5jPzA6UC5yPj1RLnImJlAuYzxRLmM/MjpQLnI8US5yJiZQLmM+PVEuYz8xOjMpfWVsc2UgbS53cml0ZV9zaGlmdCgxLDMpO3JldHVybiBt'@; put 'LndyaXRlX3NoaWZ0KDIsUC5yKSxtLndyaXRlX3NoaWZ0KDIsUC5jKSxtLndyaXRlX3NoaWZ0KDIsMCksbS53cml0ZV9zaGlmdCgyLDEpLGZ1bmN0aW9uIFMyKGQsXyl7X3x8KF89RnIoNikpLF8ud3JpdGVfc2hpZnQoMixkLnM/ZC5zLnI6ZC5yKSxfLndyaXRlX3NoaWZ0KDIsZC5lP2QuZS5y'@; put 'OmQuciksXy53cml0ZV9zaGlmdCgxLGQucz9kLnMuYzpkLmMpLF8ud3JpdGVfc2hpZnQoMSxkLmU/ZC5lLmM6ZC5jKX0oe3M6UCxlOlB9LG0pLG19KFFbIiFzZWwiXSxRWyIhZnJlZXplIl0pKSxMZSYmKFFbIiFtZXJnZXMiXXx8W10pLmxlbmd0aCYmemkoVCwiTWVyZ2VDZWxscyIsZnVuY3Rp'@; put 'b24gSlAoZCl7dmFyIF89RnIoMis4KmQubGVuZ3RoKTtfLndyaXRlX3NoaWZ0KDIsZC5sZW5ndGgpO2Zvcih2YXIgbT0wO208ZC5sZW5ndGg7KyttKVpjKGRbbV0sXyk7cmV0dXJuIF99KFFbIiFtZXJnZXMiXSkpLExlJiZmdW5jdGlvbiBVZWUoZCxfKXtmb3IodmFyIG09MDttPF9bIiFsaW5r'@; put 'cyJdLmxlbmd0aDsrK20pe3ZhciBUPV9bIiFsaW5rcyJdW21dO3ppKGQsIkhMaW5rIixlNWUoVCkpLFRbMV0uVG9vbHRpcCYmemkoZCwiSExpbmtUb29sdGlwIix0NWUoVCkpfWRlbGV0ZSBfWyIhbGlua3MiXX0oVCxRKSx6aShULCJDb2RlTmFtZSIsY3IoRXQpKSxMZSYmZnVuY3Rpb24gamVl'@; put 'KGQsXyl7dmFyIG09RnIoMTkpO20ud3JpdGVfc2hpZnQoNCwyMTUxKSxtLndyaXRlX3NoaWZ0KDQsMCksbS53cml0ZV9zaGlmdCg0LDApLG0ud3JpdGVfc2hpZnQoMiwzKSxtLndyaXRlX3NoaWZ0KDEsMSksbS53cml0ZV9zaGlmdCg0LDApLHppKGQsIkZlYXRIZHIiLG0pLChtPUZyKDM5KSku'@; put 'd3JpdGVfc2hpZnQoNCwyMTUyKSxtLndyaXRlX3NoaWZ0KDQsMCksbS53cml0ZV9zaGlmdCg0LDApLG0ud3JpdGVfc2hpZnQoMiwzKSxtLndyaXRlX3NoaWZ0KDEsMCksbS53cml0ZV9zaGlmdCg0LDApLG0ud3JpdGVfc2hpZnQoMiwxKSxtLndyaXRlX3NoaWZ0KDQsNCksbS53cml0ZV9zaGlm'@; put 'dCgyLDApLFpjKHl0KF9bIiFyZWYiXXx8IkExIiksbSksbS53cml0ZV9zaGlmdCg0LDQpLHppKGQsIkZlYXQiLG0pfShULFEpLHppKFQsIkVPRiIpLFQuZW5kKCl9ZnVuY3Rpb24gUTVlKGQsXyxtKXt2YXIgVD1NYygpLFA9KGR8fHt9KS5Xb3JrYm9va3x8e30sUT1QLlNoZWV0c3x8W10sc2U9'@; put 'UC5XQlByb3BzfHx7fSxvZT04PT1tLmJpZmYsZGU9NT09bS5iaWZmO3ppKFQsMjA1NyxSZygwLDUsbSkpLCJ4bGEiPT1tLmJvb2tUeXBlJiZ6aShULCJBZGRpbiIpLHppKFQsIkludGVyZmFjZUhkciIsb2U/ZDAoMTIwMCk6bnVsbCksemkoVCwiTW1zIixmdW5jdGlvbiBhNShkLF8pe198fChf'@; put 'PUZyKGQpKTtmb3IodmFyIG09MDttPGQ7KyttKV8ud3JpdGVfc2hpZnQoMSwwKTtyZXR1cm4gX30oMikpLGRlJiZ6aShULCJUb29sYmFySGRyIiksZGUmJnppKFQsIlRvb2xiYXJFbmQiKSx6aShULCJJbnRlcmZhY2VFbmQiKSx6aShULCJXcml0ZUFjY2VzcyIsZnVuY3Rpb24gUDAoZCxfKXt2'@; put 'YXIgbT0hX3x8OD09Xy5iaWZmLFQ9RnIobT8xMTI6NTQpO2ZvcihULndyaXRlX3NoaWZ0KDg9PV8uYmlmZj8yOjEsNyksbSYmVC53cml0ZV9zaGlmdCgxLDApLFQud3JpdGVfc2hpZnQoNCw4NTkwMDcwNTkpLFQud3JpdGVfc2hpZnQoNCw1NDU4NTQ4fChtPzA6NTM2ODcwOTEyKSk7VC5sPFQu'@; put 'bGVuZ3RoOylULndyaXRlX3NoaWZ0KDEsbT8wOjMyKTtyZXR1cm4gVH0oMCxtKSksemkoVCwiQ29kZVBhZ2UiLGQwKG9lPzEyMDA6MTI1MikpLG9lJiZ6aShULCJEU0YiLGQwKDApKSxvZSYmemkoVCwiRXhjZWw5RmlsZSIpLHppKFQsIlJSVGFiSWQiLGZ1bmN0aW9uIHM1KGQpe2Zvcih2YXIg'@; put 'Xz1GcigyKmQpLG09MDttPGQ7KyttKV8ud3JpdGVfc2hpZnQoMixtKzEpO3JldHVybiBffShkLlNoZWV0TmFtZXMubGVuZ3RoKSksb2UmJmQudmJhcmF3JiZ6aShULCJPYlByb2oiKSxvZSYmZC52YmFyYXcmJnppKFQsIkNvZGVOYW1lIixjcihzZS5Db2RlTmFtZXx8IlRoaXNXb3JrYm9vayIp'@; put 'KSx6aShULCJCdWlsdEluRm5Hcm91cENvdW50IixkMCgxNykpLHppKFQsIldpblByb3RlY3QiLHBsKCExKSksemkoVCwiUHJvdGVjdCIscGwoITEpKSx6aShULCJQYXNzd29yZCIsZDAoMCkpLG9lJiZ6aShULCJQcm90NFJldiIscGwoITEpKSxvZSYmemkoVCwiUHJvdDRSZXZQYXNzIixkMCgw'@; put 'KSksemkoVCwiV2luZG93MSIsZnVuY3Rpb24gUTRlKCl7dmFyIGQ9RnIoMTgpO3JldHVybiBkLndyaXRlX3NoaWZ0KDIsMCksZC53cml0ZV9zaGlmdCgyLDApLGQud3JpdGVfc2hpZnQoMiwyOTI4MCksZC53cml0ZV9zaGlmdCgyLDE3NjAwKSxkLndyaXRlX3NoaWZ0KDIsNTYpLGQud3JpdGVf'@; put 'c2hpZnQoMiwwKSxkLndyaXRlX3NoaWZ0KDIsMCksZC53cml0ZV9zaGlmdCgyLDEpLGQud3JpdGVfc2hpZnQoMiw1MDApLGR9KCkpLHppKFQsIkJhY2t1cCIscGwoITEpKSx6aShULCJIaWRlT2JqIixkMCgwKSksemkoVCwiRGF0ZTE5MDQiLHBsKCJ0cnVlIj09ZnVuY3Rpb24gd0IoZCl7cmV0'@; put 'dXJuIGQuV29ya2Jvb2smJmQuV29ya2Jvb2suV0JQcm9wcyYmVGkoZC5Xb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0KT8idHJ1ZSI6ImZhbHNlIn0oZCkpKSx6aShULCJDYWxjUHJlY2lzaW9uIixwbCghMCkpLG9lJiZ6aShULCJSZWZyZXNoQWxsIixwbCghMSkpLHppKFQsIkJvb2tCb29sIixk'@; put 'MCgwKSksd2Q9U2coWzAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1LDAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1XSksZnVuY3Rpb24gVmVlKGQsXyxtKXsoKChffHx7fSkuU3R5bGVzfHx7fSku'@; put 'Rm9udHN8fFt7c3o6MTIsY29sb3I6e3RoZW1lOjF9LG5hbWU6IkFyaWFsIixmYW1pbHk6MixzY2hlbWU6Im1pbm9yIn1dKS5mb3JFYWNoKGZ1bmN0aW9uKFQpe3ppKGQsIkZvbnQiLGZ1bmN0aW9uIHptKGQsXyl7dmFyIG09ZC5uYW1lfHwiQXJpYWwiLFQ9XyYmNT09Xy5iaWZmLFE9RnIoVD8x'@; put 'NSttLmxlbmd0aDoxNisyKm0ubGVuZ3RoKTtRLndyaXRlX3NoaWZ0KDIsMjAqKGQuc3p8fDEyKSk7dmFyIHNlPTA7cmV0dXJuIGQuYm9sZCYmKHNlfD0xKSxkLml0YWxpYyYmKHNlfD0yKSxkLnN0cmlrZSYmKHNlfD04KSxkLnNoYWRvdyYmKHNlfD0zMiksUS53cml0ZV9zaGlmdCgxLHNlKSxR'@; put 'LndyaXRlX3NoaWZ0KDEsMCksUS53cml0ZV9zaGlmdCgyLGQuY29sb3I/TVMoZC5jb2xvciw2NCk6NjQpLFEud3JpdGVfc2hpZnQoMixkLmJvbGQ/NzAwOjQwMCksUS53cml0ZV9zaGlmdCgyLCJzdXBlciI9PWQudmFsaWduPzE6InN1YiI9PWQudmFsaWduPzI6MCksUS53cml0ZV9zaGlmdCgx'@; put 'LGQudW5kZXJsaW5lfHwwKSxRLndyaXRlX3NoaWZ0KDEsUS5mYW1pbHl8fDApLFEud3JpdGVfc2hpZnQoMSxRLmNoYXJzZXR8fDApLFEud3JpdGVfc2hpZnQoMSwwKSxRLndyaXRlX3NoaWZ0KDEsbS5sZW5ndGgpLFR8fFEud3JpdGVfc2hpZnQoMSwxKSxRLndyaXRlX3NoaWZ0KChUPzE6Mikq'@; put 'bS5sZW5ndGgsbSxUPyJzYmNzIjoidXRmMTZsZSIpLFF9KFQsbSkpfSl9KFQsZCxtKSxmdW5jdGlvbiBCZWUoZCxfLG0pe18mJltbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWzUwLDM5Ml1dLmZvckVhY2goZnVuY3Rpb24oVCl7Zm9yKHZhciBQPVRbMF07UDw9VFsxXTsrK1ApbnVsbCE9X1tQXSYm'@; put 'emkoZCwiRm9ybWF0IixwWChQLF9bUF0sbSkpfSl9KFQsZC5TU0YsbSksZnVuY3Rpb24gaUUoZCxfKXtmb3IodmFyIG09MDttPDE2OysrbSl6aShkLCJYRiIsUkEoe251bUZtdElkOjAsc3R5bGU6ITB9LDAsXykpO18uY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKFQpe3ppKGQsIlhGIixSQShU'@; put 'LDAsXykpfSl9KFQsbSksemkoVCwiUGFsZXR0ZSIsZnVuY3Rpb24gT0EoZCl7dmFyIF89RnIoMjI2KTtfLndyaXRlX3NoaWZ0KDIsNTYpO2Zvcih2YXIgbT0wO208NTY7KyttKXt2YXIgVD1kW20rOF18fEhtW20rOF07Xy53cml0ZV9zaGlmdCgxLFRbMF0pLF8ud3JpdGVfc2hpZnQoMSxUWzFd'@; put 'KSxfLndyaXRlX3NoaWZ0KDEsVFsyXSksXy53cml0ZV9zaGlmdCgxLDApfXJldHVybiBffSh3ZCkpLHdkPVFyKEhtKSxvZSYmemkoVCwiVXNlc0VMRnMiLHBsKCExKSk7dmFyIE5lPVQuZW5kKCksQmU9TWMoKTtvZSYmemkoQmUsIkNvdW50cnkiLGZ1bmN0aW9uIExBKGQpe3JldHVybiBkfHwo'@; put 'ZD1Gcig0KSksZC53cml0ZV9zaGlmdCgyLDEpLGQud3JpdGVfc2hpZnQoMiwxKSxkfSgpKSxvZSYmbS5TdHJpbmdzJiZmdW5jdGlvbiBIZWUoZCxfLG0sVCl7dmFyIFA9VHx8KG18fFtdKS5sZW5ndGh8fDA7aWYoUDw9ODIyNClyZXR1cm4gemkoZCxfLG0sUCk7dmFyIFE9K198fCtqQltfXTtp'@; put 'ZighaXNOYU4oUSkpe2Zvcih2YXIgc2U9bS5wYXJ0c3x8W10sb2U9MCxkZT0wLExlPTA7TGUrKHNlW29lXXx8ODIyNCk8PTgyMjQ7KUxlKz1zZVtvZV18fDgyMjQsb2UrKzt2YXIgTmU9ZC5uZXh0KDQpO2ZvcihOZS53cml0ZV9zaGlmdCgyLFEpLE5lLndyaXRlX3NoaWZ0KDIsTGUpLGQucHVz'@; put 'aChtLnNsaWNlKGRlLGRlK0xlKSksZGUrPUxlO2RlPFA7KXtmb3IoKE5lPWQubmV4dCg0KSkud3JpdGVfc2hpZnQoMiw2MCksTGU9MDtMZSsoc2Vbb2VdfHw4MjI0KTw9ODIyNDspTGUrPXNlW29lXXx8ODIyNCxvZSsrO05lLndyaXRlX3NoaWZ0KDIsTGUpLGQucHVzaChtLnNsaWNlKGRlLGRl'@; put 'K0xlKSksZGUrPUxlfX19KEJlLCJTU1QiLGZ1bmN0aW9uIEhzKGQsXyl7dmFyIG09RnIoOCk7bS53cml0ZV9zaGlmdCg0LGQuQ291bnQpLG0ud3JpdGVfc2hpZnQoNCxkLlVuaXF1ZSk7Zm9yKHZhciBUPVtdLFA9MDtQPGQubGVuZ3RoOysrUClUW1BdPSRlKGRbUF0sXyk7dmFyIFE9RyhbbV0u'@; put 'Y29uY2F0KFQpKTtyZXR1cm4gUS5wYXJ0cz1bbS5sZW5ndGhdLmNvbmNhdChULm1hcChmdW5jdGlvbihzZSl7cmV0dXJuIHNlLmxlbmd0aH0pKSxRfShtLlN0cmluZ3MsbSkpLHppKEJlLCJFT0YiKTt2YXIgWmU9QmUuZW5kKCksbnQ9TWMoKSxtdD0wLFFlPTA7Zm9yKFFlPTA7UWU8ZC5TaGVl'@; put 'dE5hbWVzLmxlbmd0aDsrK1FlKW10Kz0ob2U/MTI6MTEpKyhvZT8yOjEpKmQuU2hlZXROYW1lc1tRZV0ubGVuZ3RoO3ZhciBmdD1OZS5sZW5ndGgrbXQrWmUubGVuZ3RoO2ZvcihRZT0wO1FlPGQuU2hlZXROYW1lcy5sZW5ndGg7KytRZSl6aShudCwiQm91bmRTaGVldDgiLHZwKHtwb3M6ZnQs'@; put 'aHM6KFFbUWVdfHx7fSkuSGlkZGVufHwwLGR0OjAsbmFtZTpkLlNoZWV0TmFtZXNbUWVdfSxtKSksZnQrPV9bUWVdLmxlbmd0aDt2YXIgYnQ9bnQuZW5kKCk7aWYobXQhPWJ0Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkJTOCAiK210KyIgIT0gIitidC5sZW5ndGgpO3ZhciBFdD1bXTtyZXR1'@; put 'cm4gTmUubGVuZ3RoJiZFdC5wdXNoKE5lKSxidC5sZW5ndGgmJkV0LnB1c2goYnQpLFplLmxlbmd0aCYmRXQucHVzaChaZSksbmgoW0V0XSl9ZnVuY3Rpb24gekIoZCxfKXt2YXIgbT1ffHx7fTtzd2l0Y2gobS5iaWZmfHwyKXtjYXNlIDg6Y2FzZSA1OnJldHVybiBmdW5jdGlvbiB6eShkLF8p'@; put 'e3ZhciBtPV98fHt9LFQ9W107Z1MoXyYmXy5QUEl8fDk2KSxkJiYhZC5TU0YmJihkLlNTRj1JLmdldF90YWJsZSgpKSxkJiZkLlNTRiYmKHVlKEkpLEkubG9hZF90YWJsZShkLlNTRiksbS5yZXZzc2Y9aGUoZC5TU0YpLG0ucmV2c3NmW2QuU1NGWzY1NTM1XV09MCxtLnNzZj1kLlNTRiksZC5T'@; put 'dHlsZXM9e0ZvbnRzOm0uRm9udHM9W3tzejoxMixjb2xvcjp7dGhlbWU6MSxyZ2I6IjAwMDAwMCJ9LG5hbWU6IkNhbGlicmkiLGZhbWlseToyLHNjaGVtZToibWlub3IifV0sRmlsbHM6bS5GaWxscz1be3BhdHRlcm5UeXBlOiJub25lIn0se3BhdHRlcm5UeXBlOiJncmF5MTI1In1dLEJvcmRl'@; put 'cnM6bS5Cb3JkZXJzPVt7fV0sRFhGOm0uRFhGPWQuU3R5bGVzJiZkLlN0eWxlcy5EWEZ8fFtdfSwkbShtLkZvbnRzWzBdKSxtLlN0cmluZ3M9W10sbS5TdHJpbmdzLkNvdW50PTAsbS5TdHJpbmdzLlVuaXF1ZT0wLE01P20ucmV2U3RyaW5ncz1uZXcgTWFwOihtLnJldlN0cmluZ3M9e30sbS5y'@; put 'ZXZTdHJpbmdzLmZvbz1bXSxkZWxldGUgbS5yZXZTdHJpbmdzLmZvbyksSmVlKG0pLG0uY2VsbFhmcz1bXSxtLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxBMihtLmNlbGxYZnMsbS5jZWxsU3R5bGVYZnMse30se3JldnNzZjp7R2VuZXJhbDowfX0pLGQuUHJvcHN8fChkLlByb3Bz'@; put 'PXt9KTtmb3IodmFyIFA9MDtQPGQuU2hlZXROYW1lcy5sZW5ndGg7KytQKVRbVC5sZW5ndGhdPVg1ZShQLG0sZCk7cmV0dXJuIFQudW5zaGlmdChRNWUoZCxULG0pKSxuaChbVF0pfShkLF8pO2Nhc2UgNDpjYXNlIDM6Y2FzZSAyOnJldHVybiBmdW5jdGlvbiByRShkLF8pe2Zvcih2YXIgbT1f'@; put 'fHx7fSxUPU1jKCksUD0wLFE9MDtRPGQuU2hlZXROYW1lcy5sZW5ndGg7KytRKWQuU2hlZXROYW1lc1tRXT09bS5zaGVldCYmKFA9USk7aWYoMD09UCYmbS5zaGVldCYmZC5TaGVldE5hbWVzWzBdIT1tLnNoZWV0KXRocm93IG5ldyBFcnJvcigiU2hlZXQgbm90IGZvdW5kOiAiK20uc2hlZXQp'@; put 'O3JldHVybiB6aShULDQ9PW0uYmlmZj8xMDMzOjM9PW0uYmlmZj81MjE6OSxSZygwLDE2LG0pKSxmdW5jdGlvbiBDUihkLF8sbSxUKXt2YXIgc2UsUD1BcnJheS5pc0FycmF5KF8pLFE9eXQoX1siIXJlZiJdfHwiQTEiKSxvZT0iIixkZT1bXTtpZihRLmUuYz4yNTV8fFEuZS5yPjE2MzgzKXtp'@; put 'ZihULldURil0aHJvdyBuZXcgRXJyb3IoIlJhbmdlICIrKF9bIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0Iik7US5lLmM9TWF0aC5taW4oUS5lLmMsMjU1KSxRLmUucj1NYXRoLm1pbihRLmUuYywxNjM4Myksc2U9aHQoUSl9Zm9yKHZhciBMZT1RLnMu'@; put 'cjtMZTw9US5lLnI7KytMZSl7b2U9em8oTGUpO2Zvcih2YXIgTmU9US5zLmM7TmU8PVEuZS5jOysrTmUpe0xlPT09US5zLnImJihkZVtOZV09bXMoTmUpKSxzZT1kZVtOZV0rb2U7dmFyIEJlPVA/KF9bTGVdfHxbXSlbTmVdOl9bc2VdO0JlJiZVQihkLEJlLExlLE5lKX19fShULGQuU2hlZXRz'@; put 'W2QuU2hlZXROYW1lc1tQXV0sMCxtKSx6aShULDEwKSxULmVuZCgpfShkLF8pfXRocm93IG5ldyBFcnJvcigiaW52YWxpZCB0eXBlICIrbS5ib29rVHlwZSsiIGZvciBCSUZGIil9dmFyIGtmPWZ1bmN0aW9uKCl7dmFyIGQ9e2NlbnRlckNvbnRpbnVvdXM6ImNlbnRlciIsanVzdGlmeToibGVm'@; put 'dCJ9O2Z1bmN0aW9uIG0oQmUsWmUpe3ZhciBudD1aZXx8e30sbXQ9bnQuZGVuc2U/W106e30sUWU9KEJlPUJlLnJlcGxhY2UoLzwhLS0uKj8tLT4vZywiIikpLm1hdGNoKC88dGFibGUvaSk7aWYoIVFlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFi'@; put 'bGU+Iik7dmFyIGZ0PUJlLm1hdGNoKC88XC90YWJsZS9pKSxrdD1RZS5pbmRleCxidD1mdCYmZnQuaW5kZXh8fEJlLmxlbmd0aCxFdD1mdW5jdGlvbiBUdChkLF8sbSl7aWYoeHJ8fCJzdHJpbmciPT10eXBlb2YgXylyZXR1cm4gZC5zcGxpdChfKTtmb3IodmFyIFQ9ZC5zcGxpdChfKSxQPVtU'@; put 'WzBdXSxRPTE7UTxULmxlbmd0aDsrK1EpUC5wdXNoKG0pLFAucHVzaChUW1FdKTtyZXR1cm4gUH0oQmUuc2xpY2Uoa3QsYnQpLC8oOj88dHJbXj5dKj4pL2ksIjx0cj4iKSxWdD0tMSx1bj0wLG5yPTAsbm49MCxhcj17czp7cjoxZTcsYzoxZTd9LGU6e3I6MCxjOjB9fSxqbj1bXTtmb3Ioa3Q9'@; put 'MDtrdDxFdC5sZW5ndGg7KytrdCl7dmFyIGtuPUV0W2t0XS50cmltKCksc3I9a24uc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO2lmKCI8dHIiIT1zcil7aWYoIjx0ZCI9PXNyfHwiPHRoIj09c3Ipe3ZhciBncj1rbi5zcGxpdCgvPFwvdFtkaF0+L2kpO2ZvcihidD0wO2J0PGdyLmxlbmd0aDsr'@; put 'K2J0KXt2YXIgcW49Z3JbYnRdLnRyaW0oKTtpZihxbi5tYXRjaCgvPHRbZGhdL2kpKXtmb3IodmFyIF9pPXFuLE9pPTA7IjwiPT1faS5jaGFyQXQoMCkmJihPaT1faS5pbmRleE9mKCI+IikpPi0xOylfaT1faS5zbGljZShPaSsxKTtmb3IodmFyIHNvPTA7c288am4ubGVuZ3RoOysrc28pe3Zh'@; put 'ciBtbz1qbltzb107bW8ucy5jPT11biYmbW8ucy5yPFZ0JiZWdDw9bW8uZS5yJiYodW49bW8uZS5jKzEsc289LTEpfXZhciBMaT1Ycihxbi5zbGljZSgwLHFuLmluZGV4T2YoIj4iKSkpO25uPUxpLmNvbHNwYW4/K0xpLmNvbHNwYW46MSwoKG5yPStMaS5yb3dzcGFuKT4xfHxubj4xKSYmam4u'@; put 'cHVzaCh7czp7cjpWdCxjOnVufSxlOntyOlZ0Kyhucnx8MSktMSxjOnVuK25uLTF9fSk7dmFyIGtyPUxpLnR8fExpWyJkYXRhLXQiXXx8IiI7aWYoIV9pLmxlbmd0aCl7dW4rPW5uO2NvbnRpbnVlfWlmKF9pPVVzKF9pKSxhci5zLnI+VnQmJihhci5zLnI9VnQpLGFyLmUucjxWdCYmKGFyLmUu'@; put 'cj1WdCksYXIucy5jPnVuJiYoYXIucy5jPXVuKSxhci5lLmM8dW4mJihhci5lLmM9dW4pLF9pLmxlbmd0aCl7dmFyIERuPXt0OiJzIix2Ol9pfTtudC5yYXd8fCFfaS50cmltKCkubGVuZ3RofHwicyI9PWtyfHwoRG49U24oX2ksbnQpKSxudC5kZW5zZT8obXRbVnRdfHwobXRbVnRdPVtdKSxt'@; put 'dFtWdF1bdW5dPURuKTptdFtxaSh7cjpWdCxjOnVufSldPURuLHVuKz1ubn19fX19ZWxzZXtpZigrK1Z0LG50LnNoZWV0Um93cyYmbnQuc2hlZXRSb3dzPD1WdCl7LS1WdDticmVha311bj0wfX1yZXR1cm4gbXRbIiFyZWYiXT1odChhciksam4ubGVuZ3RoJiYobXRbIiFtZXJnZXMiXT1qbiks'@; put 'bXR9ZnVuY3Rpb24gUChCZSxaZSxudCxtdCxRZSxmdCl7dmFyIEV0LGt0PUJlWyIhbWVyZ2VzIl18fFtdLGJ0PVtdLFZ0PXtzdHlsZTpbXX0sdW49ITE7ZnVuY3Rpb24gbnIodW8sTXMsZGEpe3ZhciAkYT0iIixTYT0wO2lmKEV0W3VvXSlzd2l0Y2goRXRbdW9dLnN0eWxlKXtjYXNlInRoaW4i'@; put 'OmNhc2UiaGFpciI6JGE9InNvbGlkIixTYT0xO2JyZWFrO2Nhc2UibWVkaXVtIjokYT0ic29saWQiLFNhPTI7YnJlYWs7Y2FzZSJ0aGljayI6JGE9InNvbGlkIixTYT0zO2JyZWFrO2Nhc2UiZG91YmxlIjokYT0iZG91YmxlIixTYT0zO2JyZWFrO2Nhc2UiZG90dGVkIjpjYXNlImRhc2hEb3RE'@; put 'b3QiOiRhPSJkb3R0ZWQiLFNhPTE7YnJlYWs7Y2FzZSJtZWRpdW1EYXNoRG90RG90IjokYT0iZG90dGVkIixTYT0yO2JyZWFrO2Nhc2UiZGFzaGVkIjpjYXNlImRhc2hEb3QiOmNhc2Uic2xhbnREYXNoRG90IjokYT0iZGFzaGVkIixTYT0xO2JyZWFrO2Nhc2UibWVkaXVtRGFzaGVkIjpjYXNl'@; put 'Im1lZGl1bURhc2hEb3QiOiRhPSJkYXNoZWQiLFNhPTJ9ZTppZigwPT1TYSl7c3dpdGNoKHVvKXtjYXNlInRvcCI6LS1NczticmVhaztjYXNlImxlZnQiOi0tZGE7YnJlYWs7Y2FzZSJib3R0b20iOisrTXM7YnJlYWs7Y2FzZSJyaWdodCI6KytkYX12YXIgUGk9TXM+PTAmJmRhPj0wP210LmRl'@; put 'bnNlPyhCZVtNc118fFtdKVtkYV06QmVbcWkoe3I6TXMsYzpkYX0pXTpudWxsO2lmKFBpKXtpZihQaS5zJiZQaS5zW3t0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3AiLGxlZnQ6InJpZ2h0IixyaWdodDoibGVmdCJ9W3VvXV0pYnJlYWsgZTtQaS5zJiZQaS5zLmZnQ29sb3ImJihTYT0xKX1FdC5m'@; put 'Z0NvbG9yJiYoU2E9MSksIVBpJiZ1biYmMD09U2EmJihTYT0xKX0wIT1TYSYmU2EmJihWdC5zdHlsZS5wdXNoKCJib3JkZXItIit1bysiLXN0eWxlOiIrKCRhfHwidHJhbnNwYXJlbnQiKSksVnQuc3R5bGUucHVzaCgiYm9yZGVyLSIrdW8rIi13aWR0aDoiK1NhKyJweCIpLCIiPT0kYT9WdC5z'@; put 'dHlsZS5wdXNoKCJib3JkZXItIit1bysiLWNvbG9yOiB0cmFuc3BhcmVudCIpOkV0W3VvXS5jb2xvciYmRXRbdW9dLmNvbG9yLnJnYiYmVnQuc3R5bGUucHVzaCgiYm9yZGVyLSIrdW8rIi1jb2xvcjojIitUMihFdFt1b10uY29sb3IucmdiKSkpfWZvcih2YXIgbm49WmUucy5jO25uPD1aZS5l'@; put 'LmM7Kytubil7Zm9yKHZhciBhcj0wLGpuPTAsa249MDtrbjxrdC5sZW5ndGg7KytrbilpZighKGt0W2tuXS5zLnI+bnR8fGt0W2tuXS5zLmM+bm58fGt0W2tuXS5lLnI8bnR8fGt0W2tuXS5lLmM8bm4pKXtpZihrdFtrbl0ucy5yPG50fHxrdFtrbl0ucy5jPG5uKXthcj0tMTticmVha31hcj1r'@; put 'dFtrbl0uZS5yLWt0W2tuXS5zLnIrMSxqbj1rdFtrbl0uZS5jLWt0W2tuXS5zLmMrMTticmVha31pZighKGFyPDApKXt2YXIgc3I9cWkoe3I6bnQsYzpubn0pLGdyPW10LmRlbnNlPyhCZVtudF18fFtdKVtubl06QmVbc3JdO2dyP3VuPSExOih1bj0hMCxncj17dDoieiIsczp7fX0pO3ZhciBx'@; put 'bj0ieiI9PWdyLnQ/IiI6Z3IuaHx8JGkoZ3Iud3x8KHp0KGdyKSxnci53KXx8IiIpO2lmKFZ0PXtzdHlsZTpbXX0sRXQ9Z3Iucyl7dmFyIF9pPTE7aWYoKCJzdXBlciI9PUV0LnZhbGlnbnx8InN1YiI9PUV0LnZhbGlnbikmJihfaT0uODMscW49VnIoInNwYW4iLHFuLHtzdHlsZToidmVydGlj'@; put 'YWwtYWxpZ246ICIrRXQudmFsaWdufSkpLFZ0LnN0eWxlLnB1c2goImZvbnQtd2VpZ2h0OiIrKEV0LmJvbGQ/NzAwOjQwMCkpLEV0Lml0YWxpYyYmVnQuc3R5bGUucHVzaCgiZm9udC1zdHlsZTogaXRhbGljIiksKEV0LnVuZGVybGluZXx8RXQuc3RyaWtlKSYmVnQuc3R5bGUucHVzaCgidGV4'@; put 'dC1kZWNvcmF0aW9uOiIrKEV0LnVuZGVybGluZT8iIHVuZGVybGluZSI6IiIpKyhFdC5zdHJpa2U/IiBsaW5lLXRocm91Z2giOiIiKSksRXQuY29sb3ImJkV0LmNvbG9yLnJnYiYmVnQuc3R5bGUucHVzaCgiY29sb3I6ICMiK1QyKEV0LmNvbG9yLnJnYikpLEV0Lm5hbWUmJlZ0LnN0eWxlLnB1'@; put 'c2goImZvbnQtZmFtaWx5OiIrRXQubmFtZSsiLCBzYW5zLXNlcmlmIiksRXQuc3omJlZ0LnN0eWxlLnB1c2goImZvbnQtc2l6ZToiK0V0LnN6Kl9pKyJwdCIpLG51bGwhPT1FdC5wYXR0ZXJuVHlwZSYmRXQuZmdDb2xvciYmRXQuZmdDb2xvci5yZ2ImJlZ0LnN0eWxlLnB1c2goImJhY2tncm91'@; put 'bmQtY29sb3I6ICMiK1QyKEV0LmZnQ29sb3IucmdiKSksWyJ0b3AiLCJsZWZ0Il0uZm9yRWFjaChmdW5jdGlvbih1byl7bnIodW8sbnQsbm4pfSksYXI+MXx8am4+MSl7dmFyIE9pPXFpKHtyOm50K2FyLTEsYzpubitqbi0xfSksc289bXQuZGVuc2U/KEJlW250K2FyLTFdfHxbXSlbbm4ram4t'@; put 'MV06QmVbT2ldLExpPUV0O0V0PXNvJiZzby5zfHxFdCxbImJvdHRvbSIsInJpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbih1byl7bnIodW8sbnQsbm4pfSksRXQ9TGl9ZWxzZVsiYm90dG9tIiwicmlnaHQiXS5mb3JFYWNoKGZ1bmN0aW9uKHVvKXtucih1byxudCxubil9KTtpZihFdC5hbGlnbm1l'@; put 'bnQpe2lmKEV0LmFsaWdubWVudC5ob3Jpem9udGFsP1Z0LnN0eWxlLnB1c2goInRleHQtYWxpZ246ICIrKGRbRXQuYWxpZ25tZW50Lmhvcml6b250YWxdfHxFdC5hbGlnbm1lbnQuaG9yaXpvbnRhbCkpOiJuIj09Z3IudCYmVnQuc3R5bGUucHVzaCgidGV4dC1hbGlnbjogcmlnaHQiKSxFdC5h'@; put 'bGlnbm1lbnQudmVydGljYWwpe3ZhciBrcj1FdC5hbGlnbm1lbnQudmVydGljYWw7VnQuc3R5bGUucHVzaCgidmVydGljYWwtYWxpZ246ICIrKCJjZW50ZXIiPT1rcj8ibWlkZGxlIjprcikpfWlmKEV0LmFsaWdubWVudC53cmFwVGV4dClWdC5zdHlsZS5wdXNoKCJ3aGl0ZS1zcGFjZTogcHJl'@; put 'LXdyYXAiKTtlbHNle3ZhciBEbj1tdC5kZW5zZT8oQmVbbnRdfHxbXSlbbm4rMV06QmVbcWkoe3I6bnQsYzpubisxfSldO0RuJiYieiIhPURuLnQmJlZ0LnN0eWxlLnB1c2goIndoaXRlLXNwYWNlOiBwcmUtd3JhcCIpfX1lbHNlIm4iPT1nci50JiZWdC5zdHlsZS5wdXNoKCJ0ZXh0LWFsaWdu'@; put 'OiByaWdodCIpO3ZhciBPcj0oKEJlWyIhY29scyJdfHxbXSlbbm5dfHx7fSkud3B4O251bGw9PU9yJiYoT3I9KChCZVsiIXNoZWV0Rm9ybWF0Il18fHt9KS5jb2x8fHt9KS53cHgpfXZhciBfcj0wO2lmKGpuPD0xJiZhcjw9MSYmKF9yPSgoQmVbIiFjb2xzIl18fFtdKVtubl18fHt9KS53cHgp'@; put 'JiZWdC5zdHlsZS5wdXNoKCJ3aWR0aDogIitfcisicHgiKSxCZVsiIWNvbmRmbXQiXSYmUShncixudCxubixCZVsiIWNvbmRmbXQiXSxWdC5zdHlsZSxCZSksMD09VnQuc3R5bGUubGVuZ3RoP2RlbGV0ZSBWdC5zdHlsZTpWdC5zdHlsZT1WdC5zdHlsZS5qb2luKCI7IiksbXQuY3NzKXt2YXIg'@; put 'TW49UWUuaW5kZXhPZihWdC5zdHlsZSk7LTE9PU1uJiYoUWUucHVzaChWdC5zdHlsZSksTW49UWUubGVuZ3RoLTEpLGRlbGV0ZSBWdC5zdHlsZSxWdC5jbGFzcz0ic2pzIisoZnR8fCIiKSsiLSIrTW59YXI+MSYmKFZ0LnJvd3NwYW49YXIpLGpuPjEmJihWdC5jb2xzcGFuPWpuKSxtdC5lZGl0'@; put 'YWJsZT9xbj0nPHNwYW4gY29udGVudGVkaXRhYmxlPSJ0cnVlIj4nK3FuKyI8L3NwYW4+IjpnciYmKFZ0WyJkYXRhLXQiXT1nciYmZ3IudHx8InoiLG51bGwhPWdyLnYmJihWdFsiZGF0YS12Il09Z3IudiksbnVsbCE9Z3IueiYmKFZ0WyJkYXRhLXoiXT1nci56KSksVnQuaWQ9KG10LmlkfHwi'@; put 'c2pzIikrIi0iK3NyLGJ0LnB1c2goVnIoInRkIixxbixWdCkpfX12YXIgamksTnI9e3N0eWxlOltdfTsoamk9QmVbIiFzaGVldEZvcm1hdCJdKSYmamkucm93JiYoV0Eoamkucm93KSxqaS5yb3cuaHB4JiYoTnIuc3R5bGUucHVzaChbImhlaWdodCIsamkucm93LmhweCsicHgiXSksTnIuaGVp'@; put 'Z2h0PU1hdGgucm91bmQoamkucm93LmhweCkpKTt2YXIgYmk9QmVbIiFyb3dzIl07aWYoYmkmJmJpW250XSl7dmFyIE5vPWJpW250XTtOby5ocHgmJihOci5zdHlsZS5wdXNoKFsiaGVpZ2h0IiwrTm8uaHB4KyJweCJdKSxOci5oZWlnaHQ9TWF0aC5yb3VuZChOby5ocHgpKSxOby5oaWRkZW4m'@; put 'Jk5yLnN0eWxlLnB1c2goWyJkaXNwbGF5Iiwibm9uZSJdKX12YXIgWWE9W107cmV0dXJuIE5yLnN0eWxlPU5yLnN0eWxlLnJldmVyc2UoKS5maWx0ZXIoZnVuY3Rpb24odW8pe3JldHVybiEoWWEuaW5kZXhPZih1b1swXSk+LTF8fChZYS5wdXNoKHVvWzBdKSwwKSl9KS5tYXAoZnVuY3Rpb24o'@; put 'dW8pe3JldHVybiB1b1swXSsiOiIrdW9bMV19KSwwPT1Oci5zdHlsZS5sZW5ndGg/ZGVsZXRlIE5yLnN0eWxlOk5yLnN0eWxlPU5yLnN0eWxlLmpvaW4oIjsiKSxWcigidHIiLGJ0LmpvaW4oIiIpLE5yKX1mdW5jdGlvbiBRKEJlLFplLG50LG10LFFlLGZ0KXttdC5mb3JFYWNoKGZ1bmN0aW9u'@; put 'KGt0KXtpZihrdC5fcmVmfHwoa3QuX3JlZj0ic3RyaW5nIj09dHlwZW9mIGt0LnJlZj96YShrdC5yZWYpOmt0LnJlZiksIShrdC5fcmVmLnMuYz5udHx8a3QuX3JlZi5lLmM8bnR8fGt0Ll9yZWYucy5yPlplfHxrdC5fcmVmLmUucjxaZXx8InNjYWxlIiE9PWt0LnQpKXtpZigibiIhPUJlLnQp'@; put 'cmV0dXJuO3ZhciBidDtpZihudWxsPT1rdC5fbWluKXtrdC5fdmFsdWVzPVtdO2Zvcih2YXIgRXQ9a3QuX3JlZi5zLnI7RXQ8PWt0Ll9yZWYuZS5yOysrRXQpZm9yKHZhciBWdD1rdC5fcmVmLnMuYztWdDw9a3QuX3JlZi5lLmM7KytWdCl7dmFyIHVuPUFycmF5LmlzQXJyYXkoZnQpPyhmdFtF'@; put 'dF18fFtdKVtWdF06ZnRbcWkoe3I6RXQsYzpWdH0pXTt1biYmIm4iPT11bi50JiZrdC5fdmFsdWVzLnB1c2godW4udil9aWYoa3QuX3ZhbHVlcy5zb3J0KGZ1bmN0aW9uKG5yLG5uKXtyZXR1cm4gbnItbm59KSxrdC5fbWluPWt0Ll92YWx1ZXNbMF0sa3QuX21heD1rdC5fdmFsdWVzLnNsaWNl'@; put 'KC0xKVswXSxrdC5fYmFuZD1rdC5fbWF4LWt0Ll9taW4sa3QuY21pZCl7c3dpdGNoKGt0LmNtaWQudCl7Y2FzZSJudW0iOmt0Ll9taWQ9a3QuY21pZC52O2JyZWFrO2Nhc2UicGVyY2VudCI6a3QuX21pZD1rdC5jbWlkLnYvMTAwKmt0Ll9iYW5kK2t0Ll9taW47YnJlYWs7Y2FzZSJwZXJjZW50'@; put 'aWxlIjprdC5fbWlkPWZ1bmN0aW9uIEFyKGQsXyl7aWYoMD09XylyZXR1cm4gZFswXTtpZigxMDA9PV8pcmV0dXJuIGRbZC5sZW5ndGgtMV07dmFyIFQ9Xy8xMDAqKGQubGVuZ3RoLTEpLFA9VC1NYXRoLmZsb29yKFQpO3JldHVybiBQKmRbTWF0aC5jZWlsKFQpXSsoMS1QKSpkW01hdGguZmxv'@; put 'b3IoVCldfShrdC5fdmFsdWVzLGt0LmNtaWQudil9a3QuX2JhbmRoPWt0Ll9tYXgta3QuX21pZCxrdC5fYmFuZGw9a3QuX21pZC1rdC5fbWlufX0oYnQ9a3QuY21pZD9CZS52Pj1rdC5fbWlkP3ZIKGt0LmNtaWQuY29sb3Isa3QuY21heC5jb2xvciwoQmUudi1rdC5fbWlkKS9rdC5fYmFuZGgp'@; put 'OnZIKGt0LmNtaW4uY29sb3Isa3QuY21pZC5jb2xvciwoQmUudi1rdC5fbWluKS9rdC5fYmFuZGwpOnZIKGt0LmNtaW4uY29sb3Isa3QuY21heC5jb2xvciwoQmUudi1rdC5fbWluKS9rdC5fYmFuZCkpJiZRZS5wdXNoKCJiYWNrZ3JvdW5kLWNvbG9yOiAjIitidCl9fSl9ZnVuY3Rpb24gc2Uo'@; put 'QmUsWmUpe3ZhciBudD17c3BhbjpaZXx8MSxzdHlsZToiIn0sbXQ9W107cmV0dXJuIEJlJiZCZS53cHgmJihudC53aWR0aD1NYXRoLnJvdW5kKDQqQmUud3B4LzMpLG10LnB1c2goIndpZHRoOiIrKEJlLndweHx8MCkrInB4IikpLG10Lmxlbmd0aD4wJiYobnQuc3R5bGU9bXQuam9pbigiOyIp'@; put 'KSxWcigiY29sIixudWxsLG50KX1mdW5jdGlvbiBvZShCZSxaZSxudCl7dmFyIG10PXtib3JkZXI6MCxjZWxscGFkZGluZzowLGNlbGxzcGFjaW5nOjAsc3R5bGU6WyJib3JkZXItY29sbGFwc2U6Y29sbGFwc2UiLCJ0YWJsZS1sYXlvdXQ6Zml4ZWQiXS5qb2luKCI7Iil9O250JiZudC5pZCYm'@; put 'KG10LmlkPW50LmlkKTt2YXIgUWU9QmVbIiFjb2xzIl0sZnQ9QmVbIiFzaGVldEZvcm1hdCJdO2lmKEJlJiZRZSl7Zm9yKHZhciBrdD0wLEV0PVplLnMuYztFdDw9WmUuZS5jOysrRXQpe3ZhciBWdD1RZVtFdF07a3QrPVZ0JiZWdC53cHg/VnQud3B4OmZ0JiZmdC5jb2wmJmZ0LmNvbC53cHg/'@; put 'ZnQuY29sLndweDo1M31tdC5zdHlsZSs9Ijt3aWR0aDoiK2t0KyJweCJ9dmFyIG5yLHVuPVsiPHRhYmxlIitmYShtdCkrIj4iXTtpZih1bi5wdXNoKCI8c3R5bGU+dGQgeyBwYWRkaW5nLXRvcDogMXB4OyBwYWRkaW5nLXJpZ2h0OjFweDsgcGFkZGluZy1sZWZ0OjFweDsgdGV4dC1hbGlnbjpn'@; put 'ZW5lcmFsOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IGJvcmRlcjoxcHggc29saWQ7IGJvcmRlci1jb2xvcjoiKyhudCYmbnQuZ3JpZGNvbG9yP250LmdyaWRjb2xvcjpfbihCZVsiIWdyaWRsaW5lcyJdKT8idHJhbnNwYXJlbnQiOiJibGFjayIpKyI7IHdoaXRlLXNwYWNlOm5vd3JhcDsgdGV4'@; put 'dC1vdmVyZmxvdzplbGxpcHNpc308L3N0eWxlPiIpLHVuLnB1c2goJzxjb2xncm91cCBzcGFuPSInKyhaZS5lLmMtWmUucy5jKzEpKyciPicpLFFlKXtmb3IodmFyIG5uPVplLnMuYztubjxNYXRoLm1pbihRZS5sZW5ndGgsWmUuZS5jKzEpOysrbm4pIShucj1RZVtubl0pJiZmdCYmZnQuY29s'@; put 'JiYobnI9ZnQuY29sKSxucnx8KG5yPXt3cHg6NTN9KSx1bi5wdXNoKHNlKG5yLDEpKTtaZS5lLmMtWmUucy5jKzE+UWUubGVuZ3RoJiYobnI9bnVsbCxmdCYmZnQuY29sJiYobnI9ZnQuY29sKSxucnx8KG5yPXt3cHg6NTN9KSx1bi5wdXNoKHNlKG5yLFplLmUuYy1aZS5zLmMrMS1RZS5sZW5n'@; put 'dGgpKSl9ZWxzZSBucj1udWxsLGZ0JiZmdC5jb2wmJihucj1mdC5jb2wpLG5yfHwobnI9e3dweDo1M30pLHVuLnB1c2goc2UobnIsWmUuZS5jLVplLnMuYysxKSk7cmV0dXJuIHVuLnB1c2goIjwvY29sZ3JvdXA+IiksdW4uam9pbigiIil9dmFyIGRlPSc8aHRtbD48aGVhZD48bWV0YSBjaGFy'@; put 'c2V0PSJ1dGYtOCIvPjx0aXRsZT5TaGVldEpTIFRhYmxlIEV4cG9ydDwvdGl0bGU+PC9oZWFkPjxib2R5PicsTGU9IjwvYm9keT48L2h0bWw+IjtyZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gVChCZSxaZSl7cmV0dXJuIG1uKG0oQmUsWmUpLFplKX0sdG9fc2hlZXQ6bSxfcm93OlAsQkVH'@; put 'SU46ZGUsRU5EOkxlLF9wcmVhbWJsZTpvZSxodG1sX3RvX3JzOmZ1bmN0aW9uIF8oQmUpe3ZhciBaZT1bXSxudD17fSxtdD0wO3JldHVybiBCZS5yZXBsYWNlKC88KFwvPykoW15ccz8+IVwvOl0qOnwpKFteXHM/PjpcL10rKVtePl0qPi9nbSxmdW5jdGlvbihRZSxmdCxrdCxidCxFdCl7dmFy'@; put 'IHVuPWVhKFhyKFFlKVswXSkucmVwbGFjZSgvWzxcLz5dL2csIiIpLG5yPUJlLnNsaWNlKG10LEV0KS5yZXBsYWNlKC9ccy9nLCIgIik7c3dpdGNoKG5yLmxlbmd0aD4wJiYoWmUucHVzaCh7dDoicyIsdjpucixzOm50fSksbnQ9UXIobnQpKSx1bi50b0xvd2VyQ2FzZSgpKXtjYXNlImIiOiIv'@; put 'IiE9ZnQ/bnQuYm9sZD0hMDpkZWxldGUgbnQuYm9sZDticmVhaztjYXNlImkiOiIvIiE9ZnQ/bnQuaXRhbGljPSEwOmRlbGV0ZSBudC5pdGFsaWM7YnJlYWs7Y2FzZSJ1IjoiLyIhPWZ0P250LnVuZGVybGluZT0xOmRlbGV0ZSBudC51bmRlcmxpbmU7YnJlYWs7Y2FzZSJzIjoiLyIhPWZ0P250'@; put 'LnN0cmlrZT0hMDpkZWxldGUgbnQuc3RyaWtlfXJldHVybiBtdD1FdCtRZS5sZW5ndGgsUWV9KSxaZX0sZnJvbV9zaGVldDpmdW5jdGlvbiBOZShCZSxaZSl7dmFyIG50PVplfHx7fSxRZT1udWxsIT1udC5mb290ZXI/bnQuZm9vdGVyOkxlLGZ0PVtudWxsIT1udC5oZWFkZXI/bnQuaGVhZGVy'@; put 'OmRlLCIiXSxrdD1bXSxidD0obmV3IERhdGUpLnZhbHVlT2YoKTtCZXx8KEJlPXt9KSxCZVsiIXJlZiJdfHwoQmVbIiFyZWYiXT0iQTE6QTEiKTt2YXIgRXQ9emEoQmVbIiFyZWYiXSk7aWYobnQuZGVuc2U9QXJyYXkuaXNBcnJheShCZSksbnQuc2tpcGVuZCl7dmFyIFZ0PUV0LmUucjtlOmZv'@; put 'cig7VnQ+PUV0LnMucjstLVZ0KWZvcih2YXIgdW49RXQuZS5jO3VuPj1FdC5zLmM7LS11bilpZihudWxsIT0oKG50LmRlbnNlPyhCZVtWdF18fFtdKVt1bl06QmVbcWkoe3I6VnQsYzp1bn0pXSl8fHt9KS52KWJyZWFrIGU7RXQuZS5yPVZ0O3ZhciBucj1FdC5lLmM7ZTpmb3IoO25yPj1FdC5z'@; put 'LmM7LS1ucilmb3IodmFyIG5uPUV0LmUucjtubj49RXQucy5yOy0tbm4paWYobnVsbCE9KChudC5kZW5zZT8oQmVbbm5dfHxbXSlbbnJdOkJlW3FpKHtyOm5uLGM6bnJ9KV0pfHx7fSkudilicmVhayBlO0V0LmUuYz1ucn1mdC5wdXNoKG9lKEJlLEV0LG50KSk7Zm9yKHZhciBhcj1FdC5zLnI7'@; put 'YXI8PUV0LmUucjsrK2FyKWZ0LnB1c2goUChCZSxFdCxhcixudCxrdCxidCkpO3JldHVybiBmdC5wdXNoKCI8L3RhYmxlPiIrUWUpLG50LmNzcyYmKGZ0WzFdPSI8c3R5bGU+XG4iK2t0Lm1hcChmdW5jdGlvbihqbixrbil7cmV0dXJuIi5zanMiK2J0KyItIitrbisiIHsiK2puKyJ9In0pLmpv'@; put 'aW4oIlxuIikrIjwvc3R5bGU+IiksZnQuam9pbigiIil9fX0oKTtmdW5jdGlvbiBTUihkLF8sbSl7dmFyIFQ9e307aWYodHlwZW9mIGdldENvbXB1dGVkU3R5bGU+InUiKXJldHVybiBUO3ZhciBQPWdldENvbXB1dGVkU3R5bGUoZCk7aWYoKDcwMD09UFsiZm9udC13ZWlnaHQiXXx8ImJvbGQi'@; put 'PT1QWyJmb250LXdlaWdodCJdKSYmKFQuYm9sZD0hMCksKFBbImZvbnQtc3R5bGUiXXx8IiIpLm1hdGNoKC9pdGFsaWMvKSYmKFQuaXRhbGljPSEwKSwoUFsidGV4dC1kZWNvcmF0aW9uIl18fCIiKS5tYXRjaCgvdW5kZXJsaW5lLykmJihULnVuZGVybGluZT0xKSwoUFsidGV4dC1kZWNvcmF0'@; put 'aW9uIl18fCIiKS5tYXRjaCgvbGluZS10aHJvdWdoLykmJihULnN0cmlrZT0xKSxwYXJzZUludChQWyJmb250LXNpemUiXSkmJihULnN6PXBhcnNlRmxvYXQoUFsiZm9udC1zaXplIl0pKihQWyJmb250LXNpemUiXS5tYXRjaCgvcHgvKT8zLzQ6MSkpLFBbImZvbnQtZmFtaWx5Il0mJihULm5h'@; put 'bWU9UFsiZm9udC1mYW1pbHkiXS5zcGxpdCgiLCIpWzBdLnJlcGxhY2UoL1xzKiJccyovZywiIikpLFAuY29sb3Ipe3ZhciBRPVRmKFAuY29sb3IudG9Mb3dlckNhc2UoKSwhMCk7UT49MCYmKFQuY29sb3I9e3JnYjpRfSl9c3dpdGNoKFBbInRleHQtdHJhbnNmb3JtIl0mJihULnRleHRfdHJh'@; put 'bnNmb3JtPVBbInRleHQtdHJhbnNmb3JtIl0udG9Mb3dlckNhc2UoKSksIm5vbmUiIT0oUFsidGV4dC1zaGFkb3ciXXx8Im5vbmUiKSYmKFQuc2hhZG93PSEwKSxQWyJ0ZXh0LWFsaWduIl0pe2Nhc2UiY2VudGVyIjpULmFsaWdubWVudD17aG9yaXpvbnRhbDoiY2VudGVyIn07YnJlYWs7Y2Fz'@; put 'ZSJyaWdodCI6VC5hbGlnbm1lbnQ9e2hvcml6b250YWw6InJpZ2h0In07YnJlYWs7Y2FzZSJsZWZ0IjpULmFsaWdubWVudD17aG9yaXpvbnRhbDoibGVmdCJ9O2JyZWFrO2Nhc2UianVzdGlmeSI6VC5hbGlnbm1lbnQ9e2hvcml6b250YWw6Imp1c3RpZnkifX1zd2l0Y2goUFsidmVydGljYWwt'@; put 'YWxpZ24iXSl7Y2FzZSJ0b3AiOmNhc2UibWlkZGxlIjpjYXNlImJvdHRvbSI6VC5hbGlnbm1lbnR8fChULmFsaWdubWVudD17fSksVC5hbGlnbm1lbnQudmVydGljYWw9UFsidmVydGljYWwtYWxpZ24iXSwibWlkZGxlIj09VC5hbGlnbm1lbnQudmVydGljYWwmJihULmFsaWdubWVudC52ZXJ0'@; put 'aWNhbD0iY2VudGVyIik7YnJlYWs7Y2FzZSJzdWIiOmNhc2Uic3VwZXIiOlQudmFsaWduPVBbInZlcnRpY2FsLWFsaWduIl0sVC5zeiYmKFQuc3ovPS44Myl9dmFyIHNlPV8mJmdldENvbXB1dGVkU3R5bGUoXyk7cmV0dXJuIHNlJiZtJiZfJiZbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRv'@; put 'bSJdLmZvckVhY2goZnVuY3Rpb24ob2Upe3ZhciBkZT1vZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStvZS5zbGljZSgxKSxMZT1zZVsiYm9yZGVyLSIrb2UrIi1zdHlsZSJdO2lmKCgibm9uZSI9PUxlfHwhTGUpJiYoTGU9c2VbImJvcmRlciIrZGUrIlN0eWxlIl0pLCJub25lIiE9TGUmJkxl'@; put 'KXt2YXIgTmU9cGFyc2VJbnQoc2VbImJvcmRlci0iK29lKyItd2lkdGgiXXx8c2VbImJvcmRlciIrZGUrIldpZHRoIl0sMTApLEJlPSJ0aGluIjtpZihOZT4wKXtzd2l0Y2goTGUpe2Nhc2UiZG91YmxlIjpCZT0iZG91YmxlIjticmVhaztjYXNlImRhc2hlZCI6QmU9TmU+PTI/Im1lZGl1bURh'@; put 'c2hlZCI6ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOkJlPU5lPj0yPyJtZWRpdW1EYXNoRG90RG90IjoiZG90dGVkIjticmVhaztjYXNlInNvbGlkIjpCZT1OZT49Mz8idGhpY2siOk5lPj0yPyJtZWRpdW0iOiJ0aGluIn1pZihUW29lXT17c3R5bGU6QmV9LHNlWyJib3JkZXItIitvZSsi'@; put 'LWNvbG9yIl18fHNlWyJib3JkZXIiK2RlKyJDb2xvciJdKXt2YXIgWmU9VGYoKHNlWyJib3JkZXItIitvZSsiLWNvbG9yIl18fHNlWyJib3JkZXIiK2RlKyJDb2xvciJdKS50b0xvd2VyQ2FzZSgpLCEwKTtaZT49MCYmKFRbb2VdLmNvbG9yPXtyZ2I6WmV9KX19fX0pLFR9ZnVuY3Rpb24gV0Io'@; put 'ZCxfLG0pe3ZhciBUPWQuY2hpbGROb2RlcztpZigxPT1kLm5vZGVUeXBlKXN3aXRjaChkLnRhZ05hbWUudG9Mb3dlckNhc2UoKSl7Y2FzZSJwIjpfLmxlbmd0aD4wJiZfLnB1c2goe3Q6InQiLHY6IlxuIixzOm19KTticmVhaztjYXNlInNlbGVjdCI6cmV0dXJuIGZ1bmN0aW9uIFdlZShkLF8s'@; put 'bSl7Xy5wdXNoKHt0OiJ0Iix2OmQuY2hpbGRyZW5bZC5zZWxlY3RlZEluZGV4XS5pbm5lclRleHQsczptfSl9KGQsXyxtKX1pZihULmxlbmd0aD4wKXt2YXIgUD1TUihkLG51bGwsITEpO20mJihtLnVuZGVybGluZSYmKFAudW5kZXJsaW5lPW0udW5kZXJsaW5lKSxtLnN0cmlrZSYmKFAuc3Ry'@; put 'aWtlPW0uc3RyaWtlKSk7Zm9yKHZhciBRPTA7UTxULmxlbmd0aDsrK1Epe3RyeXtpZihUW1FdLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSljb250aW51ZX1jYXRjaHt9V0IoVFtRXSxfLFApfWRlbGV0ZSBQLnRleHRfdHJhbnNmb3JtfWVsc2UgaWYoMz09ZC5ub2RlVHlwZSl7dmFyIHNl'@; put 'PXt0OiJ0Iix2OmQubm9kZVZhbHVlLnJlcGxhY2UoL15bXG4gXSsvLCIgIikucmVwbGFjZSgvW1xuIF0rJC8sIiAiKSxzOm19O3N3aXRjaChtLnRleHRfdHJhbnNmb3JtKXtjYXNlInVwcGVyY2FzZSI6c2Uudj1zZS52LnRvVXBwZXJDYXNlKCk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOnNlLnY9'@; put 'c2Uudi50b0xvd2VyQ2FzZSgpfShfLmxlbmd0aD4wfHxzZS52JiYiICIhPXNlLnYpJiZfLnB1c2goc2UpfWVsc2UgMT09ZC5ub2RlVHlwZSYmImJyIj09PWQudGFnTmFtZS50b0xvd2VyQ2FzZSgpJiZfLnB1c2goe3Q6InQiLHY6IlxuIixzOm19KX1mdW5jdGlvbiBFUihkLF8sbSxULFApe3Zh'@; put 'ciBzZSxRPWQuaW5uZXJIVE1MO2lmKHR5cGVvZiBnZXRDb21wdXRlZFN0eWxlPCJ1Iilzd2l0Y2goc2U9Z2V0Q29tcHV0ZWRTdHlsZShkKSwoc2VbIndoaXRlLXNwYWNlIl18fCIiKS5tYXRjaCgvcHJlLykmJihRPVEucmVwbGFjZSgvXG4vZywiPGJyLz4iKSksKHNlWyJ0ZXh0LXRyYW5zZm9y'@; put 'bSJdfHwiIikudG9Mb3dlckNhc2UoKSl7Y2FzZSJ1cHBlcmNhc2UiOlE9US50b1VwcGVyQ2FzZSgpO2JyZWFrO2Nhc2UibG93ZXJjYXNlIjpRPVEudG9Mb3dlckNhc2UoKX12YXIgb2U9ZnVuY3Rpb24gemVlKGQsXyxtLFQpe3ZhciBQPXt0OiJzIix2Ol99LFE9IiI7aWYoZCl7bT1kLmdldEF0'@; put 'dHJpYnV0ZSgiZGF0YS10Iil8fGQuZ2V0QXR0cmlidXRlKCJ0Iik7dmFyIHNlPWQuZ2V0QXR0cmlidXRlKCJkYXRhLXYiKXx8ZC5nZXRBdHRyaWJ1dGUoInYiKTtpZihudWxsIT0oUT1kLmdldEF0dHJpYnV0ZSgiZGF0YS16Iil8fGQuZ2V0QXR0cmlidXRlKCJ6IikpJiYoUC56PVEpLG51bGwh'@; put 'PW0mJm51bGwhPXNlKXJldHVybiBQLnQ9bSxQLnY9c2UsUH1yZXR1cm4gbnVsbCE9XyYmKDA9PV8ubGVuZ3RoP1AudD1tfHwieiI6VC5yYXd8fCFfLnRyaW0oKS5sZW5ndGh8fCJzIj09bXx8KFA9U24oXyxUKSkpLFEmJihQLno9USksUH0oZCxVcyhRKSxtLFApO2lmKHR5cGVvZiBnZXRDb21w'@; put 'dXRlZFN0eWxlPCJ1IiYmKG9lLnM9U1IoZCxfLFAuYm9yZGVycyksZGVsZXRlIG9lLnMudGV4dF90cmFuc2Zvcm0sZC5jaGlsZE5vZGVzLmxlbmd0aD4xfHwxPT1kLmNoaWxkTm9kZXMubGVuZ3RoJiYzIT1kLmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpKXN3aXRjaChXQihkLG9lLlI9W10sbnVs'@; put 'bCksb2UuUiYmb2UuUltvZS5SLmxlbmd0aC0xXSYmIlxuIj09b2UuUltvZS5SLmxlbmd0aC0xXS52JiZvZS5SLmxlbmd0aC0tLChzZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXBwZXJjYXNlIjpvZS5SLmZvckVhY2goZnVuY3Rpb24oWmUpe1plLnY9WmUu'@; put 'di50b1VwcGVyQ2FzZSgpfSk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOm9lLlIuZm9yRWFjaChmdW5jdGlvbihaZSl7WmUudj1aZS52LnRvTG93ZXJDYXNlKCl9KX1pZigicyI9PW9lLnQpe3ZhciBkZT1vZS52Lm1hdGNoKC9cbi8pOyFkZSYmb2UuUiYmb2UuUi5mb3JFYWNoKGZ1bmN0aW9uKFpl'@; put 'KXsic3RyaW5nIj09dHlwZW9mIFplLnYmJlplLnYubWF0Y2goL1xuLykmJihkZT0hMCl9KSwicyI9PW9lLnQmJmRlJiYob2Uuc3x8KG9lLnM9e30pLG9lLnMuYWxpZ25tZW50fHwob2Uucy5hbGlnbm1lbnQ9e30pLG9lLnMuYWxpZ25tZW50LndyYXBUZXh0PSEwKX1pZihfKXt2YXIgTGU9IiIs'@; put 'TmU9Xy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKE5lJiZOZS5sZW5ndGgpZm9yKHZhciBCZT0wO0JlPE5lLmxlbmd0aCYmKCFOZVtCZV0uaGFzQXR0cmlidXRlKCJocmVmIil8fCIjIj09KExlPU5lW0JlXS5nZXRBdHRyaWJ1dGUoImhyZWYiKSkuY2hhckF0KDApKTsrK0JlKTtMZSYm'@; put 'IiMiIT1MZS5jaGFyQXQoMCkmJihvZS5sPXtUYXJnZXQ6TGV9KX1yZXR1cm4gb2V9ZnVuY3Rpb24gTVIoZCxfLG0pe3ZhciBQLFQ9Xy5yb3dzO2lmKCFUKXtpZihtJiZudWxsIT1tLm9yaWdpbil0aHJvdyJVbnN1cHBvcnRlZCBvcmlnaW4gd2hlbiAiK18udGFnTmFtZSsiIGlzIG5vdCBhIFRB'@; put 'QkxFIjtyZXR1cm4gZnVuY3Rpb24gWWVlKGQsXyxtKXttPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobXx8e30pKTt2YXIgUT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19O2RbIiFtZXJnZXMiXXx8KGRbIiFtZXJnZXMiXT1bXSk7Zm9yKHZhciBvZSxzZT1fLmNoaWxkcmVuLGRlPTAsTGU9'@; put 'MDtMZTxzZS5sZW5ndGg7KytMZSl7dmFyIFplLE5lPXNlW0xlXSxCZT0iIjt0cnl7dHlwZW9mIGdldENvbXB1dGVkU3R5bGU8InUiP1plPWdldENvbXB1dGVkU3R5bGU6TmUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyYmImZ1bmN0aW9uIj09dHlwZW9mIE5lLm93bmVyRG9jdW1lbnQuZGVm'@; put 'YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKFplPU5lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl9Y2F0Y2h7fWlmKCFaZXx8Im5vbmUiIT1aZShOZSkuZGlzcGxheSlzd2l0Y2goTmUudGFnTmFtZS50b1VwcGVyQ2FzZSgpKXtjYXNlIlRBQkxFIjpkZT0t'@; put 'MSxkWyIhcmVmIl0mJihtLm9yaWdpbj0tMSksTVIoZCxOZSxtKTticmVhaztjYXNlIkJSIjpjYXNlIkhSIjpkZT0tMSxkWyIhcmVmIl0/KCsrKFE9emEoZFsiIXJlZiJdKSkuZS5yLGRbIiFyZWYiXT1odChRKSk6ZFsiIXJlZiJdPSJBMTpBMSI7YnJlYWs7Y2FzZSJESVYiOmNhc2UiUCI6Y2Fz'@; put 'ZSJIMSI6Y2FzZSJIMiI6Y2FzZSJIMyI6Y2FzZSJINCI6Y2FzZSJINSI6Y2FzZSJINiI6ZGU9LTEsb2U9RVIoTmUsbnVsbCwiIiwwLG0pLGRbIiFyZWYiXT8obS5vcmlnaW49LTEsRm4oZCxbW29lXV0sbSkpOihkWyIhcmVmIl09IkExIixBcnJheS5pc0FycmF5KGQpPyhkWzBdfHwoZFswXT1b'@; put 'XSksZFswXVswXT1vZSk6ZC5BMT1vZSksZFsiIXJvd3MiXXx8KGRbIiFyb3dzIl09W10pLFplJiYoUT16YShkWyIhcmVmIl0pLChCZT1aZShOZSkuaGVpZ2h0KSYmImF1dG8iIT1CZSYmKGRbIiFyb3dzIl1bUS5lLnJdPXtocHQ6cGFyc2VJbnQoQmUsMTApfSkpO2JyZWFrO2Nhc2UiU1BBTiI6'@; put 'Y2FzZSJBIjpjYXNlIkIiOmNhc2UiRU0iOmNhc2UiSSI6Y2FzZSJGT05UIjpjYXNlIlMiOmNhc2UiU1VCIjpjYXNlIlNVUCI6Y2FzZSJVIjpvZT1FUihOZSxudWxsLCIiLDAsbSksZFsiIXJlZiJdfHwoZFsiIXJlZiJdPSJBMTpBMSIpLEZuKGQsW1tvZV1dLHtvcmlnaW46cWkoe3I6KGRlPDA/'@; put 'MTowKSsoUT16YShkWyIhcmVmIl0pKS5lLnIsYzorK2RlfSl9KTticmVhaztjYXNlIkRMIjpjYXNlIlVMIjpjYXNlIk9MIjpkZT0tMSxjb25zb2xlLmVycm9yKCJIVE1MIENvbnZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCBsaXN0IGVsZW1lbnQgIitOZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkp'@; put 'O2JyZWFrO2RlZmF1bHQ6ZGU9LTEsY29uc29sZS5lcnJvcigiU2tpcHBpbmcgIitOZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpfX1yZXR1cm4gZH0oZCxfLG0pfXRyeXt0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZTwidSI/UD1nZXRDb21wdXRlZFN0eWxlOl8ub3duZXJEb2N1bWVudC5kZWZhdWx0'@; put 'VmlldyYmImZ1bmN0aW9uIj09dHlwZW9mIF8ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoUD1fLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl9Y2F0Y2h7fXZhciBRPW18fHt9LHNlPTAsb2U9MDtpZihudWxsIT1RLm9yaWdp'@; put 'bilpZigibnVtYmVyIj09dHlwZW9mIFEub3JpZ2luKXNlPVEub3JpZ2luO2Vsc2V7dmFyIGRlPSJzdHJpbmciPT10eXBlb2YgUS5vcmlnaW4/SXMoUS5vcmlnaW4pOlEub3JpZ2luO3NlPWRlLnIsb2U9ZGUuY312YXIgTGU9TWF0aC5taW4oUS5zaGVldFJvd3N8fDFlNyxULmxlbmd0aCksTmU9'@; put 'e3M6e3I6MCxjOjB9LGU6e3I6c2UsYzpvZX19O2lmKGRbIiFyZWYiXSl7dmFyIEJlPXphKGRbIiFyZWYiXSk7TmUucy5yPU1hdGgubWluKE5lLnMucixCZS5zLnIpLE5lLnMuYz1NYXRoLm1pbihOZS5zLmMsQmUucy5jKSxOZS5lLnI9TWF0aC5tYXgoTmUuZS5yLEJlLmUuciksTmUuZS5jPU1h'@; put 'dGgubWF4KE5lLmUuYyxCZS5lLmMpLC0xPT1zZSYmKE5lLmUucj1zZT1CZS5lLnIrMSl9dmFyIFplPVtdLG50PTAsbXQ9ZFsiIXJvd3MiXXx8KGRbIiFyb3dzIl09W10pLFFlPTAsZnQ9MCxrdD0wLGJ0PTAsRXQ9MCxWdD0wO2ZvcihkWyIhY29scyJdfHwoZFsiIWNvbHMiXT1bXSk7UWU8VC5s'@; put 'ZW5ndGgmJmZ0PExlOysrUWUpe2Zvcih2YXIgdW49VFtRZV0sbnI9dW4ucGFyZW50RWxlbWVudDsiVEFCTEUiIT1uci50YWdOYW1lLnRvVXBwZXJDYXNlKCk7KW5yPW5yLnBhcmVudEVsZW1lbnQ7aWYobnI9PV8pe2U6aWYodHlwZW9mIFA8InUiKXt2YXIgbm49UCh1bik7aWYobnVsbD09bm4p'@; put 'YnJlYWsgZTtpZihubi5zdHlsZXx8KG5uLnN0eWxlPXt9KSxRLmRpc3BsYXkmJiJub25lIj09KG5uLmRpc3BsYXl8fG5uLnN0eWxlLmRpc3BsYXkpKWNvbnRpbnVlOyJub25lIj09KG5uLmRpc3BsYXl8fG5uLnN0eWxlLmRpc3BsYXkpJiYoKG10W2Z0XXx8KG10W2Z0XT17fSkpLmhpZGRlbj0h'@; put 'MCl9dmFyIGFyPXVuLmNlbGxzO2ZvcihrdD1idD0wO2t0PGFyLmxlbmd0aDsrK2t0KXt2YXIgam49YXJba3RdLGtuPW51bGw7aWYoISh0eXBlb2YgUDwidSImJihudWxsPT1rbiYmKGtuPVAoam4pKSxrbi5zdHlsZXx8KGtuLnN0eWxlPXt9KSxRLmRpc3BsYXkmJm51bGwhPWtuJiYibm9uZSI9'@; put 'PShrbi5kaXNwbGF5fHxrbi5zdHlsZS5kaXNwbGF5KSkpKXtmb3IoVnQ9K2puLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpfHwxLG50PTA7bnQ8WmUubGVuZ3RoOysrbnQpe3ZhciBzcj1aZVtudF07c3Iucy5jPT1idCtvZSYmc3Iucy5yPGZ0K3NlJiZmdCtzZTw9c3IuZS5yJiYoYnQ9c3IuZS5j'@; put 'KzEtb2UsbnQ9LTEpfSgoRXQ9K2puLmdldEF0dHJpYnV0ZSgicm93c3BhbiIpfHwxKT4xfHxWdD4xKSYmWmUucHVzaCh7czp7cjpmdCtzZSxjOmJ0K29lfSxlOntyOmZ0K3NlKyhFdHx8MSktMSxjOmJ0K29lKyhWdHx8MSktMX19KTt2YXIgZ3I9am4uZ2V0QXR0cmlidXRlKCJ0Iil8fCIiLHFu'@; put 'PWpuLmdldEF0dHJpYnV0ZSgiYmdjb2xvciIpO2U6aWYodHlwZW9mIFA8InUiKXtpZihudWxsPT1rbiYmKGtuPVAoam4pKSxudWxsPT1rbilicmVhayBlO2lmKGtuLnN0eWxlfHwoa24uc3R5bGU9e30pLDE9PVZ0JiZrbi53aWR0aCYmKGRbIiFjb2xzIl1bYnQrb2VdPWRbIiFjb2xzIl1bYnQr'@; put 'b2VdfHx7fSxrbi53aWR0aC5tYXRjaCgvcHgvKT9kWyIhY29scyJdW2J0K29lXS53cHg9TWF0aC5tYXgocGFyc2VJbnQoa24ud2lkdGgsMTApKzUsZFsiIWNvbHMiXVtidCtvZV0ud3B4fHwwKTprbi53aWR0aC5tYXRjaCgvcHQvKSYmKGRbIiFjb2xzIl1bYnQrb2VdLndweD1NYXRoLm1heCg0'@; put 'KnBhcnNlSW50KGtuLndpZHRoLDEwKS8zKzUsZFsiIWNvbHMiXVtidCtvZV0ud3B4fHwwKSkpLEV0PD0xKXttdFtmdCtzZV18fChtdFtmdCtzZV09e30pO3ZhciBfaT1rbi5oZWlnaHQ7KF9pPV9pLm1hdGNoKC9wdC8pP05nKHBhcnNlSW50KF9pLDEwKSk6cGFyc2VJbnQoX2ksMTApKT4obXRb'@; put 'ZnQrc2VdLmhweHx8TmcobXRbZnQrc2VdLmhwdCl8fDApJiYoZGVsZXRlIG10W2Z0K3NlXS5ocHQsbXRbZnQrc2VdLmhweD1faSl9fXZhciBPaT1qbjtpZihqbi5maXJzdEVsZW1lbnRDaGlsZCYmMT09am4uY2hpbGRyZW4ubGVuZ3RoJiYic3BhbiI9PWpuLmZpcnN0RWxlbWVudENoaWxkLm5v'@; put 'ZGVOYW1lLnRvTG93ZXJDYXNlKCkpe2Zvcih2YXIgc289MCxtbz1qbi5jaGlsZE5vZGVzLExpPTA7TGk8bW8ubGVuZ3RoOysrTGkpMz09bW9bTGldLm5vZGVUeXBlJiYrK3NvOzA9PXNvJiYoam49am4uZmlyc3RFbGVtZW50Q2hpbGQpfXZhciBrcj1FUihqbixPaSxnciwwLFEpO2lmKGtuKXt2'@; put 'YXIgRG49UChqbik7aWYoRG4mJiFEbi5zdHlsZSYmKERuLnN0eWxlPXt9KSwoRG4mJkRuWyJiYWNrZ3JvdW5kLWNvbG9yIl18fGtuWyJiYWNrZ3JvdW5kLWNvbG9yIl0pJiYoa3Iuc3x8KGtyLnM9e30pLCFrci5zLmZnQ29sb3IpKXRyeXt2YXIgT3I9RG4mJkRuWyJiYWNrZ3JvdW5kLWNvbG9y'@; put 'Il18fGtuWyJiYWNrZ3JvdW5kLWNvbG9yIl07T3IubWF0Y2goL3JnYmFbKF1ccyowLipbKV0vaSkmJihPcj1rblsiYmFja2dyb3VuZC1jb2xvciJdKTt2YXIgX3I9VGYoT3IudG9Mb3dlckNhc2UoKSwhMCk7X3I+PTAmJihrci5zLmZnQ29sb3I9e3JnYjpfcn0pfWNhdGNoe31zd2l0Y2goa25b'@; put 'InZlcnRpY2FsLWFsaWduIl0pe2Nhc2UibWlkZGxlIjpjYXNlImJhc2VsaW5lIjprci5zfHwoa3Iucz17fSksa3Iucy5hbGlnbm1lbnR8fChrci5zLmFsaWdubWVudD17fSksa3Iucy5hbGlnbm1lbnQudmVydGljYWw9ImNlbnRlciJ9fWlmKHFuJiYoa3Iuc3x8KGtyLnM9e30pLCFrci5zLmZn'@; put 'Q29sb3IpKXRyeXt2YXIgTW49VGYocW4udG9Mb3dlckNhc2UoKSwhMCk7TW4+PTAmJihrci5zLmZnQ29sb3I9e3JnYjpNbn0pfWNhdGNoe31pZihRLmRlbnNlPyhkW2Z0K3NlXXx8KGRbZnQrc2VdPVtdKSxkW2Z0K3NlXVtidCtvZV09a3IpOmRbcWkoe2M6YnQrb2UscjpmdCtzZX0pXT1rcixF'@; put 'dD4xfHxWdD4xKWZvcih2YXIgTnI9ZnQ7TnI8ZnQrRXQ7KytOcilmb3IodmFyIGppPWJ0O2ppPGJ0K1Z0OysramkpZnQ9PU5yJiZidD09aml8fChRLmRlbnNlPyhkW05yK3NlXXx8KGRbTnIrc2VdPVtdKSxkW05yK3NlXVtqaStvZV09e3Q6InoiLHM6UXIoa3Iuc3x8e30pfSk6ZFtxaSh7Yzpq'@; put 'aStvZSxyOk5yK3NlfSldPXt0OiJ6IixzOlFyKGtyLnN8fHt9KX0pO05lLmUuYzxidCtvZSYmKE5lLmUuYz1idCtvZSksYnQrPVZ0fX0rK2Z0fX1pZihaZS5sZW5ndGgmJihkWyIhbWVyZ2VzIl09KGRbIiFtZXJnZXMiXXx8W10pLmNvbmNhdChaZSkpLE5lLmUucj1NYXRoLm1heChOZS5lLnIs'@; put 'ZnQtMStzZSksZFsiIXJlZiJdPWh0KE5lKSxmdD49TGUmJihkWyIhZnVsbHJlZiJdPWh0KChOZS5lLnI9VC5sZW5ndGgtUWUrZnQtMStzZSxOZSkpKSxRLmJvcmRlcnMpZm9yKGZ0PU5lLnMucjtmdDw9TmUuZS5yOysrZnQpZm9yKGJ0PU5lLnMuYztidDw9TmUuZS5jOysrYnQpaWYoIVEuZGVu'@; put 'c2Upe3ZhciBiaT1kW3FpKHtyOmZ0LGM6YnR9KV07aWYoIWJpfHwhYmkucyljb250aW51ZTtpZihmdD4wKXt2YXIgTm89ZFtxaSh7cjpmdC0xLGM6YnR9KV07Tm8mJk5vLnMmJk5vLnMuYm90dG9tJiZkZWxldGUgYmkucy50b3B9aWYoYnQ+MCl7dmFyIFlhPWRbcWkoe3I6ZnQsYzpidC0xfSld'@; put 'O1lhJiZZYS5zJiZZYS5zLmJvdHRvbSYmZGVsZXRlIGJpLnMubGVmdH19cmV0dXJuIGR9ZnVuY3Rpb24gVFIoZCxfKXtyZXR1cm4gTVIoKF98fHt9KS5kZW5zZT9bXTp7fSxkLF8pfXZhciB4Uj1mdW5jdGlvbigpe3ZhciBkPWZ1bmN0aW9uKFQsUCxRKXt2YXIgc2U9VC5yZXBsYWNlKC9bXHRc'@; put 'clxuXS9nLCIgIikudHJpbSgpLnJlcGxhY2UoLyArL2csIiAiKS5yZXBsYWNlKC88dGV4dDpzXC8+L2csIiAiKS5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz0iKFxkKykiXC8+L2csZnVuY3Rpb24oTmUsQmUpe3JldHVybiBBcnJheShwYXJzZUludChCZSwxMCkrMSkuam9pbigiICIpfSkucmVw'@; put 'bGFjZSgvPHRleHQ6dGFiW14+XSpcLz4vZywiXHQiKS5yZXBsYWNlKC88dGV4dDpsaW5lLWJyZWFrXC8+L2csIlxuIiksb2U9Q2koc2UucmVwbGFjZSgvPFtePl0qPi9nLCIiKSksZGU9W10sTGU9MDtyZXR1cm4gc2UucmVwbGFjZSgvKDx0ZXh0OnNwYW4uKj8+KSguKj8pPFtcL110ZXh0OnNw'@; put 'YW4+L2csZnVuY3Rpb24oTmUsQmUsWmUsbnQpe250IT1MZSYmZGUucHVzaCh7dDoicyIsdjpDaShzZS5zbGljZShMZSxudCkpfSk7dmFyIG10PXt0OiJzIix2OkNpKFplKX0sUWU9WHIoQmUpWyJzdHlsZS1uYW1lIl07cmV0dXJuIFFlJiZRW1FlXSYmKG10LnM9UXIoUVtRZV0pKSxkZS5wdXNo'@; put 'KG10KSxMZT1udCtOZS5sZW5ndGgsIiJ9KSxMZTxzZS5sZW5ndGgmJmRlLnB1c2goe3Q6InMiLHY6Q2koc2Uuc2xpY2UoTGUpKX0pLFtvZSxkZV19LF89e2RheTpbImQiLCJkZCJdLG1vbnRoOlsibSIsIm1tIl0seWVhcjpbInkiLCJ5eSJdLGhvdXJzOlsiaCIsImhoIl0sbWludXRlczpbIm0i'@; put 'LCJtbSJdLHNlY29uZHM6WyJzIiwic3MiXSwiYW0tcG0iOlsiQS9QIiwiQU0vUE0iXSwiZGF5LW9mLXdlZWsiOlsiZGRkIiwiZGRkZCJdLGVyYTpbImUiLCJlZSJdLHF1YXJ0ZXI6WyJcXFFtIiwnbVxcInRoIHF1YXJ0ZXIiJ119LG09ZnVuY3Rpb24oVCxQKXt2YXIgUT1YcihULnNsaWNlKDAs'@; put 'VC5pbmRleE9mKCI+IikpKSxzZT1ULnNsaWNlKFQuaW5kZXhPZigiPiIpKzEpLG9lPXtuYW1lOlEubmFtZSxmYW1pbHk6US5mYW1pbHl9O1tbInBhcmVudCIsInBhcmVudC1zdHlsZS1uYW1lIl0sWyJkYXRhbmFtZSIsImRhdGEtc3R5bGUtbmFtZSJdLFsibXBuYW1lIiwibWFzdGVyLXBhZ2Ut'@; put 'bmFtZSJdXS5mb3JFYWNoKGZ1bmN0aW9uKExlKXtRW0xlWzFdXSYmKG9lW0xlWzBdXT1RW0xlWzFdXSl9KTt2YXIgZGU9e307c2UucmVwbGFjZShCbixmdW5jdGlvbihMZSl7dmFyIE5lPVhyKExlKTtpZigiPHN0eWxlOnRleHQtcHJvcGVydGllcyI9PT1OZVswXSl7aWYoTmVbImZvbnQtd2Vp'@; put 'Z2h0Il0mJihkZS5ib2xkPSsoImJvbGQiPT1OZVsiZm9udC13ZWlnaHQiXXx8IjcwMCI9PU5lWyJmb250LXdlaWdodCJdKSksKCJpdGFsaWMiPT1OZVsiZm9udC1zdHlsZSJdfHwib2JsaXF1ZSI9PU5lWyJmb250LXN0eWxlIl0pJiYoZGUuaXRhbGljPTEpLCJub25lIiE9KE5lWyJ0ZXh0LXVu'@; put 'ZGVybGluZS1zdHlsZSJdfHwibm9uZSIpP2RlLnVuZGVybGluZT0iZG91YmxlIj09TmVbInRleHQtdW5kZXJsaW5lLXR5cGUiXT8yOjE6KE5lWyJ0ZXh0LXVuZGVybGluZS1zdHlsZSJdfHwibm9uZSI9PU5lWyJ0ZXh0LXVuZGVybGluZS10eXBlIl0pJiYoZGUudW5kZXJsaW5lPTApLChOZVsi'@; put 'Zm9udC1zaXplIl18fCIiKS5tYXRjaCgvcHQkLykmJihkZS5zej0rTmVbImZvbnQtc2l6ZSJdLnJlcGxhY2UoInB0IiwiIikpLCJub25lIiE9KE5lWyJ0ZXh0LWxpbmUtdGhyb3VnaC1zdHlsZSJdfHwibm9uZSIpJiYoZGUuc3RyaWtlPTEpLE5lWyJmb250LW5hbWUiXSYmKGRlLm5hbWU9TmVb'@; put 'ImZvbnQtbmFtZSJdKSxOZS5jb2xvcil7dmFyIEJlPVRmKE5lLmNvbG9yLCEwKTtCZT49MCYmKGRlLmNvbG9yPUJlKX1zd2l0Y2goTmVbInRleHQtcG9zaXRpb24iXSl7Y2FzZSJzdXBlciI6ZGUudmFsaWduPSJzdXBlciI7YnJlYWs7Y2FzZSJzdWIiOmRlLnZhbGlnbj0ic3ViIjticmVhaztk'@; put 'ZWZhdWx0OihOZVsidGV4dC1wb3NpdGlvbiJdfHwiIikubWF0Y2goLyUvKSYmKGRlLnZhbGlnbj0iLSI9PU5lWyJ0ZXh0LXBvc2l0aW9uIl0uY2hhckF0KDApPyJzdWIiOiJzdXBlciIpfSJub25lIiE9KE5lWyJ0ZXh0LXNoYWRvdyJdfHwibm9uZSIpJiYoZGUuc2hhZG93PTEpfXJldHVybiIi'@; put 'fSksUFtRLm5hbWVdPWRlfTtyZXR1cm4gZnVuY3Rpb24oUCxRKXt2YXIgTGUsTmUsbXQsUWUsRXQsVnQsc2U9UXx8e30sb2U9UVMoUCksZGU9W10sQmU9e25hbWU6IiJ9LFplPSIiLG50PTAsZnQ9e30sa3Q9W10sYnQ9c2UuZGVuc2U/W106e30sdW49e3ZhbHVlOiIifSxucj0iIixubj0wLGpu'@; put 'PVtdLGtuPS0xLHNyPS0xLGdyPXtzOntyOjFlNixjOjFlN30sZTp7cjowLGM6MH19LHFuPTAsX2k9e30sT2k9W10sc289e30sbW89MCxMaT0wLGtyPVtdLERuPTEsT3I9MSxfcj1bXSxNbj17TmFtZXM6W119LE5yPXt9LGppPVsiIiwiIl0sYmk9W10sTm89e30sWWE9e30sdW89MCxNcz0iIixk'@; put 'YT0wLCRhPSExLFNhPSExLFBpPTA7Zm9yKFc5Lmxhc3RJbmRleD0wLG9lPW9lLnJlcGxhY2UoLzwhLS0oW1xzXFNdKj8pLS0+L2dtLCIiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxbXSpcW1teXF1dKlxdPi9nbSwiIik7RXQ9VzkuZXhlYyhvZSk7KXN3aXRjaChFdFszXT1FdFszXS5yZXBsYWNl'@; put 'KC9fLiokLywiIikpe2Nhc2UidGFibGUiOmNhc2UiXHU1ZGU1XHU0ZjVjXHU4ODY4IjoiLyI9PT1FdFsxXT8oYnRbIiFyZWYiXT1nci5lLmM+PWdyLnMuYyYmZ3IuZS5yPj1nci5zLnI/aHQoZ3IpOiJBMTpBMSIsc2Uuc2hlZXRSb3dzPjAmJnNlLnNoZWV0Um93czw9Z3IuZS5yJiYoYnRbIiFm'@; put 'dWxscmVmIl09YnRbIiFyZWYiXSxnci5lLnI9c2Uuc2hlZXRSb3dzLTEsYnRbIiFyZWYiXT1odChncikpLE9pLmxlbmd0aCYmKGJ0WyIhbWVyZ2VzIl09T2kpLGtyLmxlbmd0aCYmKGJ0WyIhcm93cyJdPWtyKSxtdC5uYW1lPW10Llx1NTQwZFx1NzlmMHx8bXQubmFtZSx0eXBlb2YgSlNPTjwi'@; put 'dSImJkpTT04uc3RyaW5naWZ5KG10KSxrdC5wdXNoKG10Lm5hbWUpLGZ0W210Lm5hbWVdPWJ0LFNhPSExKToiLyIhPT1FdFswXS5jaGFyQXQoRXRbMF0ubGVuZ3RoLTIpJiYobXQ9WHIoRXRbMF0sITEpLGtuPXNyPS0xLGdyLnMucj1nci5zLmM9MWU3LGdyLmUucj1nci5lLmM9MCxidD1zZS5k'@; put 'ZW5zZT9bXTp7fSxPaT1bXSxrcj1bXSxTYT0hMCk7YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctZ3JvdXAiOiIvIj09PUV0WzFdPy0tcW46KytxbjticmVhaztjYXNlInRhYmxlLXJvdyI6Y2FzZSJcdTg4NGMiOmlmKCIvIj09PUV0WzFdKXtrbis9RG4sRG49MTticmVha31pZigoUWU9WHIoRXRbMF0s'@; put 'ITEpKS5cdTg4NGNcdTUzZjc/a249UWUuXHU4ODRjXHU1M2Y3LTE6LTE9PWtuJiYoa249MCksKERuPStRZVsibnVtYmVyLXJvd3MtcmVwZWF0ZWQiXXx8MSk8MTApZm9yKFBpPTA7UGk8RG47KytQaSlxbj4wJiYoa3Jba24rUGldPXtsZXZlbDpxbn0pO3NyPS0xO2JyZWFrO2Nhc2UiY292ZXJl'@; put 'ZC10YWJsZS1jZWxsIjoiLyIhPT1FdFsxXSYmKytzcixzZS5zaGVldFN0dWJzJiYoc2UuZGVuc2U/KGJ0W2tuXXx8KGJ0W2tuXT1bXSksYnRba25dW3NyXT17dDoieiJ9KTpidFtxaSh7cjprbixjOnNyfSldPXt0OiJ6In0pLG5yPSIiLGpuPVtdO2JyZWFrO2Nhc2UidGFibGUtY2VsbCI6Y2Fz'@; put 'ZSJcdTY1NzBcdTYzNmUiOmlmKCIvIj09PUV0WzBdLmNoYXJBdChFdFswXS5sZW5ndGgtMikpKytzcix1bj1YcihFdFswXSwhMSksT3I9cGFyc2VJbnQodW5bIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCksVnQ9e3Q6InoiLHY6bnVsbH0sdW4uZm9ybXVsYSYmMCE9c2UuY2Vs'@; put 'bEZvcm11bGEmJihWdC5mPUlrKENpKHVuLmZvcm11bGEpKSksInN0cmluZyI9PSh1bi5cdTY1NzBcdTYzNmVcdTdjN2JcdTU3OGJ8fHVuWyJ2YWx1ZS10eXBlIl0pJiYoVnQudD0icyIsVnQudj1DaSh1blsic3RyaW5nLXZhbHVlIl18fCIiKSxzZS5kZW5zZT8oYnRba25dfHwoYnRba25dPVtd'@; put 'KSxidFtrbl1bc3JdPVZ0KTpidFtxaSh7cjprbixjOnNyfSldPVZ0KSxzcis9T3ItMTtlbHNlIGlmKCIvIiE9PUV0WzFdKXtPcj0xO3ZhciBQYz1Ebj9rbitEbi0xOmtuO2lmKCsrc3I+Z3IuZS5jJiYoZ3IuZS5jPXNyKSxzcjxnci5zLmMmJihnci5zLmM9c3IpLGtuPGdyLnMuciYmKGdyLnMu'@; put 'cj1rbiksUGM+Z3IuZS5yJiYoZ3IuZS5yPVBjKSxiaT1bXSxObz17fSxWdD17dDoodW49WHIoRXRbMF0sITEpKS5cdTY1NzBcdTYzNmVcdTdjN2JcdTU3OGJ8fHVuWyJ2YWx1ZS10eXBlIl0sdjpudWxsfSxzZS5jZWxsRm9ybXVsYSlpZih1bi5mb3JtdWxhJiYodW4uZm9ybXVsYT1DaSh1bi5m'@; put 'b3JtdWxhKSksdW5bIm51bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkIl0mJnVuWyJudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdJiYobW89cGFyc2VJbnQodW5bIm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkIl0sMTApfHwwLExpPXBhcnNlSW50KHVuWyJudW1iZXItbWF0cml4LWNv'@; put 'bHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxWdC5GPWh0KHNvPXtzOntyOmtuLGM6c3J9LGU6e3I6a24rbW8tMSxjOnNyK0xpLTF9fSksX3IucHVzaChbc28sVnQuRl0pKSx1bi5mb3JtdWxhKVZ0LmY9SWsodW4uZm9ybXVsYSk7ZWxzZSBmb3IoUGk9MDtQaTxfci5sZW5ndGg7KytQaSlrbj49X3Jb'@; put 'UGldWzBdLnMuciYma248PV9yW1BpXVswXS5lLnImJnNyPj1fcltQaV1bMF0ucy5jJiZzcjw9X3JbUGldWzBdLmUuYyYmKFZ0LkY9X3JbUGldWzFdKTtzd2l0Y2goKHVuWyJudW1iZXItY29sdW1ucy1zcGFubmVkIl18fHVuWyJudW1iZXItcm93cy1zcGFubmVkIl0pJiYobW89cGFyc2VJbnQo'@; put 'dW5bIm51bWJlci1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsTGk9cGFyc2VJbnQodW5bIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXSwxMCl8fDAsT2kucHVzaChzbz17czp7cjprbixjOnNyfSxlOntyOmtuK21vLTEsYzpzcitMaS0xfX0pKSx1blsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXSYm'@; put 'KE9yPXBhcnNlSW50KHVuWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdLDEwKSksVnQudCl7Y2FzZSJib29sZWFuIjpWdC50PSJiIixWdC52PVRpKHVuWyJib29sZWFuLXZhbHVlIl0pO2JyZWFrO2Nhc2UiZmxvYXQiOmNhc2UicGVyY2VudGFnZSI6Y2FzZSJjdXJyZW5jeSI6VnQudD0ibiIs'@; put 'VnQudj1wYXJzZUZsb2F0KHVuLnZhbHVlKTticmVhaztjYXNlImRhdGUiOlZ0LnQ9ImQiLFZ0LnY9bG4odW5bImRhdGUtdmFsdWUiXSksc2UuY2VsbERhdGVzfHwoVnQudD0ibiIsVnQudj1LZShWdC52KSksVnQuej0ibS9kL3l5IjticmVhaztjYXNlInRpbWUiOlZ0LnQ9Im4iLFZ0LnY9Z3Qo'@; put 'dW5bInRpbWUtdmFsdWUiXSkvODY0MDAsc2UuY2VsbERhdGVzJiYoVnQudD0iZCIsVnQudj0kdChWdC52KSksVnQuej0iSEg6TU06U1MiO2JyZWFrO2Nhc2UibnVtYmVyIjpWdC50PSJuIixWdC52PXBhcnNlRmxvYXQodW4uXHU2NTcwXHU2MzZlXHU2NTcwXHU1MDNjKTticmVhaztkZWZhdWx0'@; put 'OmlmKCJzdHJpbmciIT09VnQudCYmInRleHQiIT09VnQudCYmVnQudCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHZhbHVlIHR5cGUgIitWdC50KTtWdC50PSJzIixudWxsIT11blsic3RyaW5nLXZhbHVlIl0mJihucj1DaSh1blsic3RyaW5nLXZhbHVlIl0pLGpuPVtdKX19ZWxzZXtp'@; put 'ZigkYT0hMSwicyI9PT1WdC50JiYoVnQudj1ucnx8IiIsam4ubGVuZ3RoJiYoVnQuUj1qbiksJGE9MD09bm4pLE5yLlRhcmdldCYmKFZ0Lmw9TnIpLGJpLmxlbmd0aD4wJiYoVnQuYz1iaSxiaT1bXSksbnImJiExIT09c2UuY2VsbFRleHQmJihWdC53PW5yKSwkYSYmKFZ0LnQ9InoiLGRlbGV0'@; put 'ZSBWdC52KSxzZS5jZWxsSFRNTCYmKFZ0Lmg9VnQuUj91UyhWdC5SKTokaSgiIitWdC52KSksKCEkYXx8c2Uuc2hlZXRTdHVicykmJiEoc2Uuc2hlZXRSb3dzJiZzZS5zaGVldFJvd3M8PWtuKSlmb3IodmFyIHhuPTA7eG48RG47Kyt4bil7aWYoT3I9cGFyc2VJbnQodW5bIm51bWJlci1jb2x1'@; put 'bW5zLXJlcGVhdGVkIl18fCIxIiwxMCksc2UuZGVuc2UpZm9yKGJ0W2tuK3huXXx8KGJ0W2tuK3huXT1bXSksYnRba24reG5dW3NyXT0wPT14bj9WdDpRcihWdCk7LS1Pcj4wOylidFtrbit4bl1bc3IrT3JdPVFyKFZ0KTtlbHNlIGZvcihidFtxaSh7cjprbit4bixjOnNyfSldPVZ0Oy0tT3I+'@; put 'MDspYnRbcWkoe3I6a24reG4sYzpzcitPcn0pXT1RcihWdCk7Z3IuZS5jPD1zciYmKGdyLmUuYz1zcil9c3IrPShPcj1wYXJzZUludCh1blsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSktMSxPcj0wLFZ0PXt9LG5yPSIiLGpuPVtdfU5yPXt9O2JyZWFrO2Nhc2UiZG9jdW1l'@; put 'bnQiOmNhc2UiZG9jdW1lbnQtY29udGVudCI6Y2FzZSJcdTc1MzVcdTViNTBcdTg4NjhcdTY4M2NcdTY1ODdcdTY4NjMiOmNhc2Uic3ByZWFkc2hlZXQiOmNhc2UiXHU0ZTNiXHU0ZjUzIjpjYXNlInNjcmlwdHMiOmNhc2Uic3R5bGVzIjpjYXNlImZvbnQtZmFjZS1kZWNscyI6Y2FzZSJtYXN0'@; put 'ZXItc3R5bGVzIjppZigiLyI9PT1FdFsxXSl7aWYoKExlPWRlLnBvcCgpKVswXSE9PUV0WzNdKXRocm93IkJhZCBzdGF0ZTogIitMZX1lbHNlIi8iIT09RXRbMF0uY2hhckF0KEV0WzBdLmxlbmd0aC0yKSYmZGUucHVzaChbRXRbM10sITBdKTticmVhaztjYXNlImFubm90YXRpb24iOmlmKCIv'@; put 'Ij09PUV0WzFdKXtpZigoTGU9ZGUucG9wKCkpWzBdIT09RXRbM10pdGhyb3ciQmFkIHN0YXRlOiAiK0xlO05vLnQ9bnIsam4ubGVuZ3RoJiYoTm8uUj1qbiksTm8uYT1NcyxiaS5wdXNoKE5vKX1lbHNlIi8iIT09RXRbMF0uY2hhckF0KEV0WzBdLmxlbmd0aC0yKSYmZGUucHVzaChbRXRbM10s'@; put 'ITFdKTtNcz0iIixkYT0wLG5yPSIiLG5uPTAsam49W107YnJlYWs7Y2FzZSJjcmVhdG9yIjoiLyI9PT1FdFsxXT9Ncz1vZS5zbGljZShkYSxFdC5pbmRleCk6ZGE9RXQuaW5kZXgrRXRbMF0ubGVuZ3RoO2JyZWFrO2Nhc2UibWV0YSI6Y2FzZSJcdTUxNDNcdTY1NzBcdTYzNmUiOmNhc2Uic2V0'@; put 'dGluZ3MiOmNhc2UiY29uZmlnLWl0ZW0tc2V0IjpjYXNlImNvbmZpZy1pdGVtLW1hcC1pbmRleGVkIjpjYXNlImNvbmZpZy1pdGVtLW1hcC1lbnRyeSI6Y2FzZSJjb25maWctaXRlbS1tYXAtbmFtZWQiOmNhc2Uic2hhcGVzIjpjYXNlImZyYW1lIjpjYXNlInRleHQtYm94IjpjYXNlImltYWdl'@; put 'IjpjYXNlImRhdGEtcGlsb3QtdGFibGVzIjpjYXNlImxpc3Qtc3R5bGUiOmNhc2UiZm9ybSI6Y2FzZSJkZGUtbGlua3MiOmNhc2UiZXZlbnQtbGlzdGVuZXJzIjpjYXNlImNoYXJ0IjppZigiLyI9PT1FdFsxXSl7aWYoKExlPWRlLnBvcCgpKVswXSE9PUV0WzNdKXRocm93IkJhZCBzdGF0ZTog'@; put 'IitMZX1lbHNlIi8iIT09RXRbMF0uY2hhckF0KEV0WzBdLmxlbmd0aC0yKSYmZGUucHVzaChbRXRbM10sITFdKTtucj0iIixubj0wLGpuPVtdO2JyZWFrO2Nhc2Uic2NpZW50aWZpYy1udW1iZXIiOmNhc2UiY3VycmVuY3ktc3ltYm9sIjpjYXNlImN1cnJlbmN5LXN0eWxlIjpjYXNlInNjcmlw'@; put 'dCI6Y2FzZSJsaWJyYXJpZXMiOmNhc2UiYXV0b21hdGljLXN0eWxlcyI6Y2FzZSJkZWZhdWx0LXN0eWxlIjpjYXNlInBhZ2UtbGF5b3V0IjpjYXNlIm1hcCI6Y2FzZSJmb250LWZhY2UiOmNhc2UicGFyYWdyYXBoLXByb3BlcnRpZXMiOmNhc2UidGFibGUtcHJvcGVydGllcyI6Y2FzZSJ0YWJs'@; put 'ZS1jb2x1bW4tcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1yb3ctcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiOmNhc2UiZnJhY3Rpb24iOmNhc2UiYm9vbGVhbi1zdHlsZSI6Y2FzZSJib29sZWFuIjpjYXNlInRleHQtc3R5bGUiOmNhc2UidGV4dC1jb250ZW50IjpjYXNl'@; put 'InRleHQtcHJvcGVydGllcyI6Y2FzZSJlbWJlZGRlZC10ZXh0IjpjYXNlImJvZHkiOmNhc2UiXHU3NTM1XHU1YjUwXHU4ODY4XHU2ODNjIjpjYXNlImZvcm1zIjpjYXNlInRhYmxlLWNvbHVtbiI6Y2FzZSJ0YWJsZS1oZWFkZXItcm93cyI6Y2FzZSJ0YWJsZS1yb3dzIjpjYXNlInRhYmxlLWNv'@; put 'bHVtbi1ncm91cCI6Y2FzZSJ0YWJsZS1oZWFkZXItY29sdW1ucyI6Y2FzZSJ0YWJsZS1jb2x1bW5zIjpjYXNlIm51bGwtZGF0ZSI6Y2FzZSJncmFwaGljLXByb3BlcnRpZXMiOmNhc2UiY2FsY3VsYXRpb24tc2V0dGluZ3MiOmNhc2UibmFtZWQtZXhwcmVzc2lvbnMiOmNhc2UibGFiZWwtcmFu'@; put 'Z2UiOmNhc2UibGFiZWwtcmFuZ2VzIjpjYXNlIm5hbWVkLWV4cHJlc3Npb24iOmNhc2Uic29ydCI6Y2FzZSJzb3J0LWJ5IjpjYXNlInNvcnQtZ3JvdXBzIjpjYXNlInRhYiI6Y2FzZSJsaW5lLWJyZWFrIjpjYXNlInNwYW4iOmNhc2UicyI6Y2FzZSJkYXRlIjpjYXNlIm9iamVjdCI6Y2FzZSJ0'@; put 'aXRsZSI6Y2FzZSJcdTY4MDdcdTk4OTgiOmNhc2UiZGVzYyI6Y2FzZSJiaW5hcnktZGF0YSI6Y2FzZSJ0YWJsZS1zb3VyY2UiOmNhc2Uic2NlbmFyaW8iOmNhc2UiaXRlcmF0aW9uIjpjYXNlImNvbnRlbnQtdmFsaWRhdGlvbnMiOmNhc2UiY29udGVudC12YWxpZGF0aW9uIjpjYXNlImhlbHAt'@; put 'bWVzc2FnZSI6Y2FzZSJlcnJvci1tZXNzYWdlIjpjYXNlImRhdGFiYXNlLXJhbmdlcyI6Y2FzZSJmaWx0ZXIiOmNhc2UiZmlsdGVyLWFuZCI6Y2FzZSJmaWx0ZXItb3IiOmNhc2UiZmlsdGVyLWNvbmRpdGlvbiI6Y2FzZSJsaXN0LWxldmVsLXN0eWxlLWJ1bGxldCI6Y2FzZSJsaXN0LWxldmVs'@; put 'LXN0eWxlLW51bWJlciI6Y2FzZSJsaXN0LWxldmVsLXByb3BlcnRpZXMiOmNhc2Uic2VuZGVyLWZpcnN0bmFtZSI6Y2FzZSJzZW5kZXItbGFzdG5hbWUiOmNhc2Uic2VuZGVyLWluaXRpYWxzIjpjYXNlInNlbmRlci10aXRsZSI6Y2FzZSJzZW5kZXItcG9zaXRpb24iOmNhc2Uic2VuZGVyLWVt'@; put 'YWlsIjpjYXNlInNlbmRlci1waG9uZS1wcml2YXRlIjpjYXNlInNlbmRlci1mYXgiOmNhc2Uic2VuZGVyLWNvbXBhbnkiOmNhc2Uic2VuZGVyLXBob25lLXdvcmsiOmNhc2Uic2VuZGVyLXN0cmVldCI6Y2FzZSJzZW5kZXItY2l0eSI6Y2FzZSJzZW5kZXItcG9zdGFsLWNvZGUiOmNhc2Uic2Vu'@; put 'ZGVyLWNvdW50cnkiOmNhc2Uic2VuZGVyLXN0YXRlLW9yLXByb3ZpbmNlIjpjYXNlImF1dGhvci1uYW1lIjpjYXNlImF1dGhvci1pbml0aWFscyI6Y2FzZSJjaGFwdGVyIjpjYXNlImZpbGUtbmFtZSI6Y2FzZSJ0ZW1wbGF0ZS1uYW1lIjpjYXNlInNoZWV0LW5hbWUiOmNhc2UiZXZlbnQtbGlz'@; put 'dGVuZXIiOmNhc2UiaW5pdGlhbC1jcmVhdG9yIjpjYXNlImNyZWF0aW9uLWRhdGUiOmNhc2UicHJpbnQtZGF0ZSI6Y2FzZSJnZW5lcmF0b3IiOmNhc2UiZG9jdW1lbnQtc3RhdGlzdGljIjpjYXNlInVzZXItZGVmaW5lZCI6Y2FzZSJlZGl0aW5nLWR1cmF0aW9uIjpjYXNlImVkaXRpbmctY3lj'@; put 'bGVzIjpjYXNlImNvbmZpZy1pdGVtIjpjYXNlInBhZ2UtbnVtYmVyIjpjYXNlInBhZ2UtY291bnQiOmNhc2UidGltZSI6Y2FzZSJjZWxsLXJhbmdlLXNvdXJjZSI6Y2FzZSJkZXRlY3RpdmUiOmNhc2Uib3BlcmF0aW9uIjpjYXNlImhpZ2hsaWdodGVkLXJhbmdlIjpjYXNlImRhdGEtcGlsb3Qt'@; put 'dGFibGUiOmNhc2Uic291cmNlLWNlbGwtcmFuZ2UiOmNhc2Uic291cmNlLXNlcnZpY2UiOmNhc2UiZGF0YS1waWxvdC1maWVsZCI6Y2FzZSJkYXRhLXBpbG90LWxldmVsIjpjYXNlImRhdGEtcGlsb3Qtc3VidG90YWxzIjpjYXNlImRhdGEtcGlsb3Qtc3VidG90YWwiOmNhc2UiZGF0YS1waWxv'@; put 'dC1tZW1iZXJzIjpjYXNlImRhdGEtcGlsb3QtbWVtYmVyIjpjYXNlImRhdGEtcGlsb3QtZGlzcGxheS1pbmZvIjpjYXNlImRhdGEtcGlsb3Qtc29ydC1pbmZvIjpjYXNlImRhdGEtcGlsb3QtbGF5b3V0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1maWVsZC1yZWZlcmVuY2UiOmNhc2UiZGF0YS1w'@; put 'aWxvdC1ncm91cHMiOmNhc2UiZGF0YS1waWxvdC1ncm91cCI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwLW1lbWJlciI6Y2FzZSJyZWN0IjpjYXNlImRkZS1jb25uZWN0aW9uLWRlY2xzIjpjYXNlImRkZS1jb25uZWN0aW9uLWRlY2wiOmNhc2UiZGRlLWxpbmsiOmNhc2UiZGRlLXNvdXJjZSI6Y2Fz'@; put 'ZSJwcm9wZXJ0aWVzIjpjYXNlInByb3BlcnR5IjpjYXNlInRhYmxlLXByb3RlY3Rpb24iOmNhc2UiZGF0YS1waWxvdC1ncmFuZC10b3RhbCI6Y2FzZSJvZmZpY2UtZG9jdW1lbnQtY29tbW9uLWF0dHJzIjpicmVhaztjYXNlIm51bWJlci1zdHlsZSI6Y2FzZSJwZXJjZW50YWdlLXN0eWxlIjpj'@; put 'YXNlImRhdGUtc3R5bGUiOmNhc2UidGltZS1zdHlsZSI6aWYoIi8iPT09RXRbMV0pe2lmKF9pW0JlLm5hbWVdPVplLChMZT1kZS5wb3AoKSlbMF0hPT1FdFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrTGV9ZWxzZSIvIiE9PUV0WzBdLmNoYXJBdChFdFswXS5sZW5ndGgtMikmJihaZT0iIixCZT1Y'@; put 'cihFdFswXSwhMSksZGUucHVzaChbRXRbM10sITBdKSk7YnJlYWs7Y2FzZSJzdHlsZSI6Ii8+Ij09PUV0WzBdLnNsaWNlKC0yKT9tKEV0WzBdLFlhKToiLyI9PUV0WzFdP20ob2Uuc2xpY2UodW8sRXQuaW5kZXgrRXRbMF0ubGVuZ3RoKSxZYSk6dW89RXQuaW5kZXg7YnJlYWs7Y2FzZSJudW1i'@; put 'ZXIiOmNhc2UiZGF5IjpjYXNlIm1vbnRoIjpjYXNlInllYXIiOmNhc2UiZXJhIjpjYXNlImRheS1vZi13ZWVrIjpjYXNlIndlZWstb2YteWVhciI6Y2FzZSJxdWFydGVyIjpjYXNlImhvdXJzIjpjYXNlIm1pbnV0ZXMiOmNhc2Uic2Vjb25kcyI6Y2FzZSJhbS1wbSI6c3dpdGNoKGRlW2RlLmxl'@; put 'bmd0aC0xXVswXSl7Y2FzZSJ0aW1lLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOk5lPVhyKEV0WzBdLCExKSxaZSs9X1tFdFszXV1bImxvbmciPT09TmUuc3R5bGU/MTowXX1icmVhaztjYXNlInRleHQiOmlmKCIvPiI9PT1FdFswXS5zbGljZSgtMikpYnJlYWs7aWYoIi8iPT09RXRbMV0pc3dp'@; put 'dGNoKGRlW2RlLmxlbmd0aC0xXVswXSl7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpaZSs9b2Uuc2xpY2UobnQsRXQuaW5kZXgpfWVsc2UgbnQ9RXQuaW5kZXgrRXRbMF0ubGVuZ3RoO2JyZWFrO2Nhc2UibmFtZWQtcmFuZ2UiOmppPURTKChO'@; put 'ZT1YcihFdFswXSwhMSkpWyJjZWxsLXJhbmdlLWFkZHJlc3MiXSk7dmFyIHhsPXtOYW1lOk5lLm5hbWUsUmVmOmppWzBdKyIhIitqaVsxXX07U2EmJih4bC5TaGVldD1rdC5sZW5ndGgpLE1uLk5hbWVzLnB1c2goeGwpO2JyZWFrO2Nhc2UicCI6Y2FzZSJcdTY1ODdcdTY3MmNcdTRlMzIiOmlm'@; put 'KFsibWFzdGVyLXN0eWxlcyJdLmluZGV4T2YoZGVbZGUubGVuZ3RoLTFdWzBdKT4tMSlicmVhaztpZigiLyIhPT1FdFsxXXx8dW4mJnVuWyJzdHJpbmctdmFsdWUiXSlYcihFdFswXSwhMSksbm49RXQuaW5kZXgrRXRbMF0ubGVuZ3RoO2Vsc2V7dmFyIHFsPWQob2Uuc2xpY2Uobm4sRXQuaW5k'@; put 'ZXgpLDAsWWEpO25yPShuci5sZW5ndGg+MD9ucisiXG4iOiIiKStxbFswXSxqbj1xbFsxXX1icmVhaztjYXNlImRhdGFiYXNlLXJhbmdlIjppZigiLyI9PT1FdFsxXSlicmVhazt0cnl7ZnRbKGppPURTKFhyKEV0WzBdKVsidGFyZ2V0LXJhbmdlLWFkZHJlc3MiXSkpWzBdXVsiIWF1dG9maWx0'@; put 'ZXIiXT17cmVmOmppWzFdfX1jYXRjaHt9YnJlYWs7Y2FzZSJhIjppZigiLyIhPT1FdFsxXSl7aWYoIShOcj1YcihFdFswXSwhMSkpLmhyZWYpYnJlYWs7TnIuVGFyZ2V0PUNpKE5yLmhyZWYpLGRlbGV0ZSBOci5ocmVmLCIjIj09TnIuVGFyZ2V0LmNoYXJBdCgwKSYmTnIuVGFyZ2V0LmluZGV4'@; put 'T2YoIi4iKT4tMT8oamk9RFMoTnIuVGFyZ2V0LnNsaWNlKDEpKSxOci5UYXJnZXQ9IiMiK2ppWzBdKyIhIitqaVsxXSk6TnIuVGFyZ2V0Lm1hdGNoKC9eXC5cLltcXFwvXS8pJiYoTnIuVGFyZ2V0PU5yLlRhcmdldC5zbGljZSgzKSl9YnJlYWs7ZGVmYXVsdDpzd2l0Y2goRXRbMl0pe2Nhc2Ui'@; put 'ZGM6IjpjYXNlImNhbGNleHQ6IjpjYXNlImxvZXh0OiI6Y2FzZSJvb286IjpjYXNlImNoYXJ0b29vOiI6Y2FzZSJkcmF3OiI6Y2FzZSJzdHlsZToiOmNhc2UiY2hhcnQ6IjpjYXNlImZvcm06IjpjYXNlInVvZjoiOmNhc2UiXHU4ODY4OiI6Y2FzZSJcdTViNTc6IjpicmVhaztkZWZhdWx0Omlm'@; put 'KHNlLldURil0aHJvdyBuZXcgRXJyb3IoRXQpfX12YXIgY2g9e1NoZWV0czpmdCxTaGVldE5hbWVzOmt0LFdvcmtib29rOk1ufTtyZXR1cm4gc2UuYm9va1NoZWV0cyYmZGVsZXRlIGNoLlNoZWV0cyxjaH19KCk7ZnVuY3Rpb24gV3koZCxfKXtyZXR1cm4geFIoZCxfKX12YXIgWmVlPWZ1bmN0'@; put 'aW9uKCl7dmFyIGQ9WyIgIDxvZmZpY2U6bWFzdGVyLXN0eWxlcz4iLCcgICAgPHN0eWxlOm1hc3Rlci1wYWdlIHN0eWxlOm5hbWU9Im1wMSIgc3R5bGU6cGFnZS1sYXlvdXQtbmFtZT0ibXAxIj4nLCIgICAgICA8c3R5bGU6aGVhZGVyLz4iLCcgICAgICA8c3R5bGU6aGVhZGVyLWxlZnQgc3R5'@; put 'bGU6ZGlzcGxheT0iZmFsc2UiLz4nLCIgICAgICA8c3R5bGU6Zm9vdGVyLz4iLCcgICAgICA8c3R5bGU6Zm9vdGVyLWxlZnQgc3R5bGU6ZGlzcGxheT0iZmFsc2UiLz4nLCIgICAgPC9zdHlsZTptYXN0ZXItcGFnZT4iLCIgIDwvb2ZmaWNlOm1hc3Rlci1zdHlsZXM+Il0uam9pbigiXG4iKSxf'@; put 'PSI8b2ZmaWNlOmRvY3VtZW50LXN0eWxlcyAiK2ZhKHsieG1sbnM6b2ZmaWNlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwieG1sbnM6dGFibGUiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIsInht'@; put 'bG5zOnN0eWxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdHlsZToxLjAiLCJ4bWxuczp0ZXh0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMCIsInhtbG5zOmRyYXciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3Vt'@; put 'ZW50OnhtbG5zOmRyYXdpbmc6MS4wIiwieG1sbnM6Zm8iOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCIsInhtbG5zOnhsaW5rIjoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhtbG5zOmRjIjoiaHR0cDovL3B1cmwu'@; put 'b3JnL2RjL2VsZW1lbnRzLzEuMS8iLCJ4bWxuczpudW1iZXIiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjAiLCJ4bWxuczpzdmciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMCIsInht'@; put 'bG5zOm9mIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZjoxLjIiLCJvZmZpY2U6dmVyc2lvbiI6IjEuMiJ9KSsiPlxuIitkKyJcbjwvb2ZmaWNlOmRvY3VtZW50LXN0eWxlcz4iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBwbytffX0oKSxHZWU9ZnVuY3Rpb24o'@; put 'KXt2YXIgZD1mdW5jdGlvbihvZSxkZSl7cmV0dXJuIEJpKG9lKS5yZXBsYWNlKC8gICsvZyxmdW5jdGlvbihMZSl7cmV0dXJuJzx0ZXh0OnMgdGV4dDpjPSInK0xlLmxlbmd0aCsnIi8+J30pLnJlcGxhY2UoL1x0L2csIjx0ZXh0OnRhYi8+IikucmVwbGFjZSgvXG4vZyxkZT8iPHRleHQ6bGlu'@; put 'ZS1icmVhay8+IjoiPC90ZXh0OnA+PHRleHQ6cD4iKS5yZXBsYWNlKC9eIC8sIjx0ZXh0OnMvPiIpLnJlcGxhY2UoLyAkLywiPHRleHQ6cy8+Iil9LF89ZnVuY3Rpb24ob2Upe3JldHVybiBvZS5tYXAoZnVuY3Rpb24oZGUpe3ZhciBMZT0iIjtyZXR1cm4gbnVsbCE9ZGUub2RzJiYoTGUrPScg'@; put 'dGV4dDpzdHlsZS1uYW1lPSJUJytkZS5vZHMrJyInKSxkZS52PyI8dGV4dDpzcGFuIitMZSsiPiIrZChkZS52LCEwKSsiPC90ZXh0OnNwYW4+IjoiIn0pLmpvaW4oIiIpfSxtPSIgICAgICAgICAgPHRhYmxlOnRhYmxlLWNlbGwgLz5cbiIsUD1mdW5jdGlvbihvZSxkZSxMZSl7dmFyIE5lPVtd'@; put 'O05lLnB1c2goJyAgICAgIDx0YWJsZTp0YWJsZSB0YWJsZTpuYW1lPSInK0JpKGRlLlNoZWV0TmFtZXNbTGVdKSsnIiB0YWJsZTpzdHlsZS1uYW1lPSJ0YTEiPlxuJyk7dmFyIEJlPTAsWmU9MCxudD16YShvZVsiIXJlZiJdfHwiQTEiKSxtdD1vZVsiIW1lcmdlcyJdfHxbXSxRZT0wLGZ0PUFy'@; put 'cmF5LmlzQXJyYXkob2UpO2lmKG9lWyIhY29scyJdKWZvcihaZT0wO1plPD1udC5lLmM7KytaZSlOZS5wdXNoKCIgICAgICAgIDx0YWJsZTp0YWJsZS1jb2x1bW4iKyhvZVsiIWNvbHMiXVtaZV0/JyB0YWJsZTpzdHlsZS1uYW1lPSJjbycrb2VbIiFjb2xzIl1bWmVdLm9kcysnIic6IiIpKyI+'@; put 'PC90YWJsZTp0YWJsZS1jb2x1bW4+XG4iKTt2YXIgYnQ9b2VbIiFyb3dzIl18fFtdO2ZvcihCZT0wO0JlPG50LnMucjsrK0JlKU5lLnB1c2goIiAgICAgICAgPHRhYmxlOnRhYmxlLXJvdyIrKGJ0W0JlXT8nIHRhYmxlOnN0eWxlLW5hbWU9InJvJytidFtCZV0ub2RzKyciJzoiIikrIj48L3Rh'@; put 'YmxlOnRhYmxlLXJvdz5cbiIpO2Zvcig7QmU8PW50LmUucjsrK0JlKXtmb3IoTmUucHVzaCgiICAgICAgICA8dGFibGU6dGFibGUtcm93IisoYnRbQmVdPycgdGFibGU6c3R5bGUtbmFtZT0icm8nK2J0W0JlXS5vZHMrJyInOiIiKSsiPlxuIiksWmU9MDtaZTxudC5zLmM7KytaZSlOZS5wdXNo'@; put 'KG0pO2Zvcig7WmU8PW50LmUuYzsrK1plKXt2YXIgRXQ9ITEsVnQ9e30sdW49IiI7Zm9yKFFlPTA7UWUhPW10Lmxlbmd0aDsrK1FlKWlmKCEobXRbUWVdLnMuYz5aZXx8bXRbUWVdLnMucj5CZXx8bXRbUWVdLmUuYzxaZXx8bXRbUWVdLmUucjxCZSkpeyhtdFtRZV0ucy5jIT1aZXx8bXRbUWVd'@; put 'LnMuciE9QmUpJiYoRXQ9ITApLFZ0WyJ0YWJsZTpudW1iZXItY29sdW1ucy1zcGFubmVkIl09bXRbUWVdLmUuYy1tdFtRZV0ucy5jKzEsVnRbInRhYmxlOm51bWJlci1yb3dzLXNwYW5uZWQiXT1tdFtRZV0uZS5yLW10W1FlXS5zLnIrMTticmVha31pZihFdClOZS5wdXNoKCIgICAgICAgICAg'@; put 'PHRhYmxlOmNvdmVyZWQtdGFibGUtY2VsbC8+XG4iKTtlbHNle3ZhciBucj1xaSh7cjpCZSxjOlplfSksbm49ZnQ/KG9lW0JlXXx8W10pW1plXTpvZVtucl07aWYobm4mJm5uLmYmJihWdFsidGFibGU6Zm9ybXVsYSJdPUJpKHNKKG5uLmYpKSxubi5GJiZubi5GLnNsaWNlKDAsbnIubGVuZ3Ro'@; put 'KT09bnIpKXt2YXIgYXI9emEobm4uRik7VnRbInRhYmxlOm51bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkIl09YXIuZS5jLWFyLnMuYysxLFZ0WyJ0YWJsZTpudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdPWFyLmUuci1hci5zLnIrMX1pZihubil7c3dpdGNoKG5uLnQpe2Nhc2UiYiI6'@; put 'dW49bm4udj8iVFJVRSI6IkZBTFNFIixWdFsib2ZmaWNlOnZhbHVlLXR5cGUiXT0iYm9vbGVhbiIsVnRbIm9mZmljZTpib29sZWFuLXZhbHVlIl09bm4udj8idHJ1ZSI6ImZhbHNlIjticmVhaztjYXNlIm4iOnVuPW5uLnd8fFN0cmluZyhubi52fHwwKSxWdFsib2ZmaWNlOnZhbHVlLXR5cGUi'@; put 'XT0iZmxvYXQiLFZ0WyJvZmZpY2U6dmFsdWUiXT1ubi52fHwwO2JyZWFrO2Nhc2UicyI6Y2FzZSJzdHIiOnVuPW5uLnYsVnRbIm9mZmljZTp2YWx1ZS10eXBlIl09InN0cmluZyI7YnJlYWs7Y2FzZSJkIjp1bj1ubi53fHxsbihubi52KS50b0lTT1N0cmluZygpLFZ0WyJvZmZpY2U6dmFsdWUt'@; put 'dHlwZSJdPSJkYXRlIixWdFsib2ZmaWNlOmRhdGUtdmFsdWUiXT1sbihubi52KS50b0lTT1N0cmluZygpLFZ0WyJ0YWJsZTpzdHlsZS1uYW1lIl09ImNlMSI7YnJlYWs7ZGVmYXVsdDpOZS5wdXNoKG0pO2NvbnRpbnVlfW51bGwhPW5uLm9kcyYmIVZ0WyJ0YWJsZTpzdHlsZS1uYW1lIl0mJihW'@; put 'dFsidGFibGU6c3R5bGUtbmFtZSJdPSJjZSIrbm4ub2RzKTt2YXIgam49IW5uLlJ8fG5uLmwmJm5uLmwuVGFyZ2V0P2QodW4pOl8obm4uUik7aWYobm4ubCYmbm4ubC5UYXJnZXQpe3ZhciBrbj1ubi5sLlRhcmdldDsiIyIhPShrbj0iIyI9PWtuLmNoYXJBdCgwKT8iIyIrRGsoa24uc2xpY2Uo'@; put 'MSkpOmtuKS5jaGFyQXQoMCkmJiFrbi5tYXRjaCgvXlx3KzovKSYmKGtuPSIuLi8iK2tuKSxqbj1WcigidGV4dDphIixqbix7InhsaW5rOmhyZWYiOmtuLnJlcGxhY2UoLyYvZywiJmFtcDsiKX0pfU5lLnB1c2goIiAgICAgICAgICAiK1ZyKCJ0YWJsZTp0YWJsZS1jZWxsIixWcigidGV4dDpw'@; put 'Iixqbix7fSksVnQpKyJcbiIpfWVsc2UgTmUucHVzaChtKX19TmUucHVzaCgiICAgICAgICA8L3RhYmxlOnRhYmxlLXJvdz5cbiIpfXJldHVybiBOZS5wdXNoKCIgICAgICA8L3RhYmxlOnRhYmxlPlxuIiksTmUuam9pbigiIil9LFE9e2NlbnRlcjoiY2VudGVyIixsZWZ0OiJzdGFydCIscmln'@; put 'aHQ6ImVuZCJ9O3JldHVybiBmdW5jdGlvbihkZSxMZSl7dmFyIE5lPVtwb10sQmU9ZmEoeyJ4bWxuczpvZmZpY2UiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJ4bWxuczp0YWJsZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6'@; put 'eG1sbnM6dGFibGU6MS4wIiwieG1sbnM6c3R5bGUiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN0eWxlOjEuMCIsInhtbG5zOnRleHQiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wIiwieG1sbnM6ZHJhdyI6InVybjpvYXNp'@; put 'czpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHJhd2luZzoxLjAiLCJ4bWxuczpmbyI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6eHNsLWZvLWNvbXBhdGlibGU6MS4wIiwieG1sbnM6eGxpbmsiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieG1s'@; put 'bnM6ZGMiOiJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIsInhtbG5zOm1ldGEiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wIiwieG1sbnM6bnVtYmVyIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5'@; put 'bGU6MS4wIiwieG1sbnM6cHJlc2VudGF0aW9uIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpwcmVzZW50YXRpb246MS4wIiwieG1sbnM6c3ZnIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjAiLCJ4bWxuczpj'@; put 'aGFydCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y2hhcnQ6MS4wIiwieG1sbnM6ZHIzZCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHIzZDoxLjAiLCJ4bWxuczptYXRoIjoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN'@; put 'TCIsInhtbG5zOmZvcm0iOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmZvcm06MS4wIiwieG1sbnM6c2NyaXB0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzY3JpcHQ6MS4wIiwieG1sbnM6b29vIjoiaHR0cDovL29wZW5vZmZpY2Uub3Jn'@; put 'LzIwMDQvb2ZmaWNlIiwieG1sbnM6b29vdyI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L3dyaXRlciIsInhtbG5zOm9vb2MiOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9jYWxjIiwieG1sbnM6ZG9tIjoiaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzIiwieG1sbnM6'@; put 'eGZvcm1zIjoiaHR0cDovL3d3dy53My5vcmcvMjAwMi94Zm9ybXMiLCJ4bWxuczp4c2QiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIsInhtbG5zOnhzaSI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiwieG1sbnM6c2hlZXQiOiJ1cm46b2Fz'@; put 'aXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnNoMzN0anM6MS4wIiwieG1sbnM6cnB0IjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDUvcmVwb3J0IiwieG1sbnM6b2YiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mOjEuMiIsInhtbG5zOnhodG1sIjoiaHR0cDov'@; put 'L3d3dy53My5vcmcvMTk5OS94aHRtbCIsInhtbG5zOmdyZGRsIjoiaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiLCJ4bWxuczp0YWJsZW9vbyI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA5L3RhYmxlIiwieG1sbnM6ZHJhd29vbyI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9y'@; put 'Zy8yMDEwL2RyYXciLCJ4bWxuczpjYWxjZXh0IjoidXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJpbWVudGFsOmNhbGM6eG1sbnM6Y2FsY2V4dDoxLjAiLCJ4bWxuczpsb2V4dCI6InVybjpvcmc6ZG9jdW1lbnRmb3VuZGF0aW9uOm5hbWVzOmV4cGVyaW1lbnRhbDpvZmZp'@; put 'Y2U6eG1sbnM6bG9leHQ6MS4wIiwieG1sbnM6ZmllbGQiOiJ1cm46b3Blbm9mZmljZTpuYW1lczpleHBlcmltZW50YWw6b29vLW1zLWludGVyb3A6eG1sbnM6ZmllbGQ6MS4wIiwieG1sbnM6Zm9ybXgiOiJ1cm46b3Blbm9mZmljZTpuYW1lczpleHBlcmltZW50YWw6b294bWwtb2RmLWludGVy'@; put 'b3A6eG1sbnM6Zm9ybToxLjAiLCJ4bWxuczpjc3MzdCI6Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8iLCJvZmZpY2U6dmVyc2lvbiI6IjEuMiJ9KSxaZT1mYSh7InhtbG5zOmNvbmZpZyI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y29uZmlnOjEuMCIs'@; put 'Im9mZmljZTptaW1ldHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQifSk7ImZvZHMiPT1MZS5ib29rVHlwZT8oTmUucHVzaCgiPG9mZmljZTpkb2N1bWVudCIrQmUrWmUrIj5cbiIpLE5lLnB1c2goZmwoKS5yZXBsYWNlKC9vZmZpY2U6ZG9jdW1l'@; put 'bnQtbWV0YS9nLCJvZmZpY2U6bWV0YSIpKSk6TmUucHVzaCgiPG9mZmljZTpkb2N1bWVudC1jb250ZW50IitCZSsiPlxuIiksZnVuY3Rpb24ob2UsZGUpe3ZhciBMZT1bXSxOZT17fTtMZS5wdXNoKCIgPG9mZmljZTphdXRvbWF0aWMtc3R5bGVzPlxuIiksTGUucHVzaCgnICA8bnVtYmVyOmRh'@; put 'dGUtc3R5bGUgc3R5bGU6bmFtZT0iTjM3IiBudW1iZXI6YXV0b21hdGljLW9yZGVyPSJ0cnVlIj5cbicpLExlLnB1c2goJyAgIDxudW1iZXI6bW9udGggbnVtYmVyOnN0eWxlPSJsb25nIi8+XG4nKSxMZS5wdXNoKCIgICA8bnVtYmVyOnRleHQ+LzwvbnVtYmVyOnRleHQ+XG4iKSxMZS5wdXNo'@; put 'KCcgICA8bnVtYmVyOmRheSBudW1iZXI6c3R5bGU9ImxvbmciLz5cbicpLExlLnB1c2goIiAgIDxudW1iZXI6dGV4dD4vPC9udW1iZXI6dGV4dD5cbiIpLExlLnB1c2goIiAgIDxudW1iZXI6eWVhci8+XG4iKSxMZS5wdXNoKCIgIDwvbnVtYmVyOmRhdGUtc3R5bGU+XG4iKTt2YXIgQmU9MDtk'@; put 'ZS5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihRZSl7cmV0dXJuIGRlLlNoZWV0c1tRZV19KS5mb3JFYWNoKGZ1bmN0aW9uKFFlKXtpZihRZSYmUWVbIiFjb2xzIl0pZm9yKHZhciBmdD0wO2Z0PFFlWyIhY29scyJdLmxlbmd0aDsrK2Z0KWlmKFFlWyIhY29scyJdW2Z0XSl7dmFyIGt0PVFlWyIh'@; put 'Y29scyJdW2Z0XTtpZihudWxsPT1rdC53aWR0aCYmbnVsbD09a3Qud3B4JiZudWxsPT1rdC53Y2gpY29udGludWU7QjAoa3QpLGt0Lm9kcz1CZTt2YXIgYnQ9UWVbIiFjb2xzIl1bZnRdLndweCsicHgiO0xlLnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9ImNvJytCZSsnIiBzdHls'@; put 'ZTpmYW1pbHk9InRhYmxlLWNvbHVtbiI+XG4nKSxMZS5wdXNoKCcgICA8c3R5bGU6dGFibGUtY29sdW1uLXByb3BlcnRpZXMgZm86YnJlYWstYmVmb3JlPSJhdXRvIiBzdHlsZTpjb2x1bW4td2lkdGg9IicrYnQrJyIvPlxuJyksTGUucHVzaCgiICA8L3N0eWxlOnN0eWxlPlxuIiksKytCZX19'@; put 'KTt2YXIgWmU9MDtkZS5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihRZSl7cmV0dXJuIGRlLlNoZWV0c1tRZV19KS5mb3JFYWNoKGZ1bmN0aW9uKFFlKXtpZihRZSYmUWVbIiFyb3dzIl0pZm9yKHZhciBmdD0wO2Z0PFFlWyIhcm93cyJdLmxlbmd0aDsrK2Z0KWlmKFFlWyIhcm93cyJdW2Z0XSl7'@; put 'UWVbIiFyb3dzIl1bZnRdLm9kcz1aZTt2YXIga3Q9UWVbIiFyb3dzIl1bZnRdLmhweCsicHgiO0xlLnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9InJvJytaZSsnIiBzdHlsZTpmYW1pbHk9InRhYmxlLXJvdyI+XG4nKSxMZS5wdXNoKCcgICA8c3R5bGU6dGFibGUtcm93LXByb3Bl'@; put 'cnRpZXMgZm86YnJlYWstYmVmb3JlPSJhdXRvIiBzdHlsZTpyb3ctaGVpZ2h0PSInK2t0KyciLz5cbicpLExlLnB1c2goIiAgPC9zdHlsZTpzdHlsZT5cbiIpLCsrWmV9fSksTGUucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0idGExIiBzdHlsZTpmYW1pbHk9InRhYmxlIiBzdHls'@; put 'ZTptYXN0ZXItcGFnZS1uYW1lPSJtcDEiPlxuJyksTGUucHVzaCgnICAgPHN0eWxlOnRhYmxlLXByb3BlcnRpZXMgdGFibGU6ZGlzcGxheT0idHJ1ZSIgc3R5bGU6d3JpdGluZy1tb2RlPSJsci10YiIvPlxuJyksTGUucHVzaCgiICA8L3N0eWxlOnN0eWxlPlxuIiksTGUucHVzaCgnICA8c3R5'@; put 'bGU6c3R5bGUgc3R5bGU6bmFtZT0iY2UxIiBzdHlsZTpmYW1pbHk9InRhYmxlLWNlbGwiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPSJEZWZhdWx0IiBzdHlsZTpkYXRhLXN0eWxlLW5hbWU9Ik4zNyIvPlxuJyk7dmFyIG50PTI7WmU9MCxkZS5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihRZSl7'@; put 'cmV0dXJuIGRlLlNoZWV0c1tRZV19KS5mb3JFYWNoKGZ1bmN0aW9uKFFlKXtpZihRZSlmb3IodmFyIGZ0PTAsa3Q9MCxidD16YShRZVsiIXJlZiJdKSxFdD1BcnJheS5pc0FycmF5KFFlKTtmdDw9YnQuZS5yOysrZnQpZm9yKGt0PTA7a3Q8PWJ0LmUuYzsrK2t0KXt2YXIgVnQ9cWkoe3I6ZnQs'@; put 'YzprdH0pLHVuPUV0PyhRZVtmdF18fFtdKVtrdF06UWVbVnRdO2lmKHVuJiYodW4uc3x8dW4uUikpe3ZhciBucj1bXTt1bi5zJiZuci5wdXNoKFt1biwhMF0pLHVuLlImJnVuLlIuZm9yRWFjaChmdW5jdGlvbihubil7bm4mJm5uLnMmJm5yLnB1c2goW25uLCExXSl9KSxuci5mb3JFYWNoKGZ1'@; put 'bmN0aW9uKG5uKXt2YXIgYXI9bm5bMF0sam49YXIucyxrbj0iIixzcj17InN0eWxlOm5hbWUiOihublsxXT8iY2UiOiJUIikrbnQsInN0eWxlOmZhbWlseSI6bm5bMV0/InRhYmxlLWNlbGwiOiJ0ZXh0In07bm5bMV0mJihzclsic3R5bGU6cGFyZW50LXN0eWxlLW5hbWUiXT0iRGVmYXVsdCIs'@; put 'c3JbInN0eWxlOmRhdGEtc3R5bGUtbmFtZSJdPSJOMCIpO3ZhciBncj17fSxxbj0hMSxfaT17fSxPaT0hMSxzbz17fSxtbz0hMTtpZihqbi5jb2xvciYmKF9pWyJmbzpjb2xvciJdPSIjIitUMihqbi5jb2xvci5yZ2IpLE9pPSEwKSxqbi5zeiYmKF9pWyJmbzpmb250LXNpemUiXT1qbi5zeisi'@; put 'cHQiLE9pPSEwKSxqbi5ib2xkJiYoX2lbImZvOmZvbnQtd2VpZ2h0Il09ImJvbGQiLE9pPSEwKSxqbi5pdGFsaWMmJihfaVsiZm86Zm9udC1zdHlsZSJdPSJpdGFsaWMiLE9pPSEwKSxqbi5uYW1lJiYoTmVbam4ubmFtZV18fChOZVtqbi5uYW1lXT1qbi5uYW1lLm1hdGNoKC8gLyk/IiZhcG9z'@; put 'OyIram4ubmFtZSsiJmFwb3M7Ijpqbi5uYW1lKSxfaVsic3R5bGU6Zm9udC1uYW1lIl09am4ubmFtZSxPaT0hMCksam4uc3RyaWtlJiYoX2lbInN0eWxlOnRleHQtbGluZS10aHJvdWdoLXN0eWxlIl09InNvbGlkIixfaVsic3R5bGU6dGV4dC1saW5lLXRocm91Z2gtdHlwZSJdPSJzaW5nbGUi'@; put 'LE9pPSEwKSxqbi51bmRlcmxpbmUmJihfaVsic3R5bGU6dGV4dC11bmRlcmxpbmUtc3R5bGUiXT0ic29saWQiLF9pWyJzdHlsZTp0ZXh0LXVuZGVybGluZS13aWR0aCJdPSJhdXRvIixfaVsic3R5bGU6dGV4dC11bmRlcmxpbmUtY29sb3IiXT0iZm9udC1jb2xvciIsT2k9ITApLG5uWzFdKXtp'@; put 'Zihqbi5hbGlnbm1lbnQpe3ZhciBMaT1qbi5hbGlnbm1lbnQ7TGkud3JhcFRleHQmJihnclsiZm86d3JhcC1vcHRpb24iXT0id3JhcCIscW49ITApLExpLnZlcnRpY2FsJiYoZ3JbInN0eWxlOnZlcnRpY2FsLWFsaWduIl09ImNlbnRlciI9PUxpLnZlcnRpY2FsPyJtaWRkbGUiOkxpLnZlcnRp'@; put 'Y2FsLHFuPSEwKSxRW0xpLmhvcml6b250YWxdJiYoc29bImZvOnRleHQtYWxpZ24iXT1RW0xpLmhvcml6b250YWxdLG1vPSEwKX1qbi5mZ0NvbG9yJiYoZ3JbImZvOmJhY2tncm91bmQtY29sb3IiXT0iIyIrVDIoam4uZmdDb2xvci5yZ2IpLHFuPSEwKX1xbiYmKGtuKz1Wcigic3R5bGU6dGFi'@; put 'bGUtY2VsbC1wcm9wZXJ0aWVzIixudWxsLGdyKSksT2kmJihrbis9VnIoInN0eWxlOnRleHQtcHJvcGVydGllcyIsbnVsbCxfaSkpLG1vJiYoa24rPVZyKCJzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyIsbnVsbCxzbykpLExlLnB1c2goIiAgIitWcigic3R5bGU6c3R5bGUiLGtuLHNyKSsi'@; put 'XG4iKSxhci5vZHM9bnQsKytudH0pfX19KSxMZS5wdXNoKCIgPC9vZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cbiIpO3ZhciBtdD0iIDxvZmZpY2U6Zm9udC1mYWNlLWRlY2xzPlxuIitGZShOZSkubWFwKGZ1bmN0aW9uKFFlKXtyZXR1cm4nICA8c3R5bGU6Zm9udC1mYWNlIHN0eWxlOm5hbWU9'@; put 'IicrUWUrJyIgc3ZnOmZvbnQtZmFtaWx5PSInK05lW1FlXSsnIi8+XG4nfSkuam9pbigiIikrIiA8L29mZmljZTpmb250LWZhY2UtZGVjbHM+XG4iO29lLnB1c2gobXQpLG9lLnB1c2goTGUuam9pbigiIikpfShOZSxkZSksTmUucHVzaCgiICA8b2ZmaWNlOmJvZHk+XG4iKSxOZS5wdXNoKCIg'@; put 'ICAgPG9mZmljZTpzcHJlYWRzaGVldD5cbiIpO2Zvcih2YXIgbnQ9MDtudCE9ZGUuU2hlZXROYW1lcy5sZW5ndGg7KytudClOZS5wdXNoKFAoZGUuU2hlZXRzW2RlLlNoZWV0TmFtZXNbbnRdXSxkZSxudCkpO3JldHVybiBOZS5wdXNoKCIgICAgPC9vZmZpY2U6c3ByZWFkc2hlZXQ+XG4iKSxO'@; put 'ZS5wdXNoKCIgIDwvb2ZmaWNlOmJvZHk+XG4iKSxOZS5wdXNoKCJmb2RzIj09TGUuYm9va1R5cGU/Ijwvb2ZmaWNlOmRvY3VtZW50PiI6Ijwvb2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQ+IiksTmUuam9pbigiIil9fSgpO2Z1bmN0aW9uIEFSKGQsXyl7aWYoImZvZHMiPT1fLmJvb2tUeXBlKXJl'@; put 'dHVybiBHZWUoZCxfKTt2YXIgbT12aSgpLFQ9IiIsUD1bXSxRPVtdO3JldHVybiB6bihtLFQ9Im1pbWV0eXBlIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCIpLHpuKG0sVD0iY29udGVudC54bWwiLEdlZShkLF8pKSxQLnB1c2goW1QsInRleHQveG1s'@; put 'Il0pLFEucHVzaChbVCwiQ29udGVudEZpbGUiXSksem4obSxUPSJzdHlsZXMueG1sIixaZWUoZCxfKSksUC5wdXNoKFtULCJ0ZXh0L3htbCJdKSxRLnB1c2goW1QsIlN0eWxlc0ZpbGUiXSksem4obSxUPSJtZXRhLnhtbCIscG8rZmwoKSksUC5wdXNoKFtULCJ0ZXh0L3htbCJdKSxRLnB1c2go'@; put 'W1QsIk1ldGFkYXRhRmlsZSJdKSx6bihtLFQ9Im1hbmlmZXN0LnJkZiIsZnVuY3Rpb24gVm0oZCl7dmFyIF89W3BvXTtfLnB1c2goJzxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+XG4nKTtmb3IodmFyIG09MDttIT1kLmxl'@; put 'bmd0aDsrK20pXy5wdXNoKFd1KGRbbV1bMF0sZFttXVsxXSkpLF8ucHVzaChmcCgiIixkW21dWzBdKSk7cmV0dXJuIF8ucHVzaChXdSgiIiwiRG9jdW1lbnQiLCJwa2ciKSksXy5wdXNoKCI8L3JkZjpSREY+IiksXy5qb2luKCIiKX0oUSkpLFAucHVzaChbVCwiYXBwbGljYXRpb24vcmRmK3ht'@; put 'bCJdKSx6bihtLFQ9Ik1FVEEtSU5GL21hbmlmZXN0LnhtbCIsZnVuY3Rpb24genUoZCl7dmFyIF89W3BvXTtfLnB1c2goJzxtYW5pZmVzdDptYW5pZmVzdCB4bWxuczptYW5pZmVzdD0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptYW5pZmVzdDoxLjAiIG1hbmlmZXN0'@; put 'OnZlcnNpb249IjEuMiI+XG4nKSxfLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPSIvIiBtYW5pZmVzdDp2ZXJzaW9uPSIxLjIiIG1hbmlmZXN0Om1lZGlhLXR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQi'@; put 'Lz5cbicpO2Zvcih2YXIgbT0wO208ZC5sZW5ndGg7KyttKV8ucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9IicrZFttXVswXSsnIiBtYW5pZmVzdDptZWRpYS10eXBlPSInK2RbbV1bMV0rJyIvPlxuJyk7cmV0dXJuIF8ucHVzaCgiPC9tYW5pZmVzdDpt'@; put 'YW5pZmVzdD4iKSxfLmpvaW4oIiIpfShQKSksbX1mdW5jdGlvbiBKbShkKXtyZXR1cm4gZnVuY3Rpb24obSxUKXt2YXIgUD1mdW5jdGlvbiBaQihkLF8pe2lmKCFfKXJldHVybiAwO3ZhciBtPWQuU2hlZXROYW1lcy5pbmRleE9mKF8pO2lmKC0xPT1tKXRocm93IG5ldyBFcnJvcigiU2hlZXQg'@; put 'bm90IGZvdW5kOiAiK18pO3JldHVybiBtfShtLFQuc2hlZXQpO3JldHVybiBkLmZyb21fc2hlZXQobS5TaGVldHNbbS5TaGVldE5hbWVzW1BdXSxULG0pfX12YXIgJGVlPUptKGtmKSxHQj1KbSh7ZnJvbV9zaGVldDpjRX0pLGtSPUptKHR5cGVvZiBzUzwidSI/c1M6e30pLCRCPUptKHR5cGVv'@; put 'ZiBsUzwidSI/bFM6e30pLHFlZT1KbSh0eXBlb2Ygdjg8InUiP3Y4Ont9KSxxOT1KbSh0eXBlb2YgZDU8InUiP2Q1Ont9KSxxQj1KbSh7ZnJvbV9zaGVldDphan0pLEtCPUptKHR5cGVvZiB5cDwidSI/eXA6e30pLEs5PUptKHR5cGVvZiBWMDwidSI/VjA6e30pLHNoPWgoMjgyNjcpfHx0eXBl'@; put 'b2Ygd2luZG93PCJ1IiYmd2luZG93LmNyeXB0b0Jyb3dzZXJpZnk7aWYoIXNoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgY3J5cHRvIGV4dGVuc2lvbnMhIik7dmFyIFg5PXtTSEE1MTI6InNoYTUxMiIsU0hBMjU2OiJzaGEyNTYiLFNIQTM4NDoic2hhMzg0IixTSEExOiJzaGExIixN'@; put 'RDU6Im1kNSIsTUQ0OiJtZDQiLE1EMjoibWQyIn07ZnVuY3Rpb24gU2QoZCxfKXtzd2l0Y2goXz0oX3x8IiIpLnJlcGxhY2UoLy0vZywiIikpe2Nhc2UiU0hBLTUxMiI6Y2FzZSJTSEE1MTIiOnJldHVybiBuZXcgc2guY3JlYXRlSGFzaCgic2hhNTEyIikudXBkYXRlKGQpLmRpZ2VzdCgpO2Nh'@; put 'c2UiU0hBLTEiOmNhc2UiU0hBMSI6cmV0dXJuIG5ldyBzaC5jcmVhdGVIYXNoKCJzaGExIikudXBkYXRlKGQpLmRpZ2VzdCgpO2Nhc2UiTUQyIjpyZXR1cm4gbmV3IHNoLmNyZWF0ZUhhc2goIm1kMiIpLnVwZGF0ZShkKS5kaWdlc3QoKTtkZWZhdWx0OmlmKFg5W19dKXJldHVybiBuZXcgc2gu'@; put 'Y3JlYXRlSGFzaChYOVtfXSkudXBkYXRlKGQpLmRpZ2VzdCgpO3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgaGFzaCBhbGdvcml0aG0gIitfKX19ZnVuY3Rpb24gSTUoZCxfLG0pe2lmKCJyYzIiPT1tKXRocm93IlVuc3VwcG9ydGVkIFJDMiI7dmFyIFQ9c2guY3JlYXRlRGVjaXBoZXJp'@; put 'dihtfHwiYWVzLTI1Ni1jYmMiLGQsXyk7cmV0dXJuIFQuc2V0QXV0b1BhZGRpbmcoITEpLFR9ZnVuY3Rpb24gb0UoZCl7cmV0dXJuWygiMDAiKygyNTUmZCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKGQ+Pj44JjI1NSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKGQ+'@; put 'Pj4xNiYyNTUpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLCgiMDAiKyhkPj4+MjQmMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKV0uam9pbigiIil9dmFyIHo4PWZ1bmN0aW9uKGQsXyxtKXtmb3IodmFyIFQ9InN0cmluZyI9PXR5cGVvZiBfP0J1ZmZlci5mcm9tKF8sImhleCIpOl8sUD0i'@; put 'c3RyaW5nIj09dHlwZW9mIGQ/QnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxkKSk6ZCxRPSJzdHJpbmciPT10eXBlb2YgbT9CdWZmZXIuZnJvbShtLCJoZXgiKTptLHNlPVNkKFAsIk1ENSIpLG9lPUJ1ZmZlci5jb25jYXQoW3NlLnNsaWNlKDAsNSksVF0pLGRlPTA7ZGU8'@; put 'NDsrK2RlKW9lPUJ1ZmZlci5jb25jYXQoW29lLG9lXSk7dmFyIExlPVNkKG9lLCJNRDUiKTtyZXR1cm4oU2QoQnVmZmVyLmNvbmNhdChbTGUuc2xpY2UoMCw1KSxRXSksIk1ENSIpLnRvU3RyaW5nKCJoZXgiKSsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKS5zbGljZSgwLDMy'@; put 'KX0sYUU9ZnVuY3Rpb24oZCxfLG0pe3ZhciBUPSJzdHJpbmciPT10eXBlb2YgXz9CdWZmZXIuZnJvbShfLCJoZXgiKTpfLFA9InN0cmluZyI9PXR5cGVvZiBkP0J1ZmZlci5mcm9tKGNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsZCkpOmQsUT0ic3RyaW5nIj09dHlwZW9mIG0/QnVmZmVyLmZy'@; put 'b20obSwiaGV4Iik6bSxzZT1TZChCdWZmZXIuY29uY2F0KFtULFBdKSwiU0hBMSIpO3JldHVybiBTZChCdWZmZXIuY29uY2F0KFtzZSxRXSksIlNIQTEiKX0sUWVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gXygpe31fLnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbihRZSl7dGhpcy5faT0wO3ZhciBm'@; put 'dD10aGlzLl9idWlsZChRZSwiIik7cmV0dXJuIiI9PT1mdD8iIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PicrZnR9LF8ucHJvdG90eXBlLl9idWlsZD1mdW5jdGlvbihRZSxmdCl7aWYodGhpcy5faSsrJTFlNj09MCYmKHRoaXMuX2M9'@; put 'ZnRbMF0pLG51bGw9PVFlfHwib2JqZWN0IiE9dHlwZW9mIFFlJiYiZnVuY3Rpb24iIT10eXBlb2YgUWUpbnVsbCE9UWUmJihmdCs9ZnVuY3Rpb24gZChRZSxmdCl7cmV0dXJuIG51bGw9PVFlfHwoUWU9UWUudG9TdHJpbmcoKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCIm'@; put 'bHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IiksZnQmJihRZT1RZS5yZXBsYWNlKC8iL2csIiZxdW90OyIpKSksUWV9KFFlKSk7ZWxzZXtpZighUWUubmFtZSl0aHJvdyBuZXcgRXJyb3IoIlhNTCBub2RlIGRvZXMgbm90IGhhdmUgbmFtZTogIitKU09OLnN0cmluZ2lmeShRZSkpO2Z0Kz0iPCIr'@; put 'UWUubmFtZTt2YXIga3Q9dGhpcztmdCs9UWUuYXR0cmlidXRlcyYmZmEoUWUuYXR0cmlidXRlcyl8fCIiLEFycmF5LmlzQXJyYXkoUWUuY2hpbGRyZW4pJiYwIT1RZS5jaGlsZHJlbi5sZW5ndGg/KGZ0Kz0iPiIsUWUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihidCl7ZnQ9a3QuX2J1aWxk'@; put 'KGJ0LGZ0KX0pLGZ0Kz0iPC8iK1FlLm5hbWUrIj4iKTpmdCs9Ii8+In1yZXR1cm4gZnR9O3ZhciBtPUJ1ZmZlci5mcm9tKFs0LDAsNCwwLDY0LDAsMCwwXSksUT17ZGF0YUludGVncml0eTp7aG1hY0tleTpCdWZmZXIuZnJvbShbOTUsMTc4LDE3MywxLDEyLDE4NSwyMjUsMjQ2XSksaG1hY1Zh'@; put 'bHVlOkJ1ZmZlci5mcm9tKFsxNjAsMTAzLDEyNywyLDE3OCw0NCwxMzIsNTFdKX0sa2V5OkJ1ZmZlci5mcm9tKFsyMCwxMTAsMTEsMjMxLDE3MSwxNzIsMjA4LDIxNF0pLHZlcmlmaWVySGFzaDp7aW5wdXQ6QnVmZmVyLmZyb20oWzI1NCwxNjcsMjEwLDExOCw1OSw3NSwxNTgsMTIxXSksdmFs'@; put 'dWU6QnVmZmVyLmZyb20oWzIxNSwxNzAsMTUsMTA5LDQ4LDk3LDUyLDc4XSl9fTtmdW5jdGlvbiBzZShRZSxmdCxrdCxidCxFdCxWdCl7dmFyIHVuPWZ0LnRvTG93ZXJDYXNlKCkrIi0iKzgqYnQubGVuZ3RoO2lmKCJDaGFpbmluZ01vZGVDQkMiIT09a3QpdGhyb3cgbmV3IEVycm9yKCJVbmtu'@; put 'b3duIGNpcGhlciBjaGFpbmluZzogIitrdCk7dmFyIG5yPXNoW1FlPyJjcmVhdGVDaXBoZXJpdiI6ImNyZWF0ZURlY2lwaGVyaXYiXSh1bis9Ii1jYmMiLGJ0LEV0KTtuci5zZXRBdXRvUGFkZGluZyghMSk7dmFyIG5uPW5yLnVwZGF0ZShWdCksYXI9W25uXTt0cnl7dmFyIGpuPW5yLmZpbmFs'@; put 'KCk7YXIucHVzaChqbil9Y2F0Y2h7fXJldHVybiBCdWZmZXIuY29uY2F0KGFyKX1mdW5jdGlvbiBvZShRZSl7UWU9UWUudG9Mb3dlckNhc2UoKTt2YXIgZnQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYoc2guZ2V0SGFzaGVzKCkuaW5kZXhPZihRZSk8MCl0aHJvdyBuZXcgRXJyb3Io'@; put 'IlVuc3VwcG9ydGVkIGhhc2ggYWxnb3JpdGhtICIrUWUpO3ZhciBidD1zaC5jcmVhdGVIYXNoKFFlKTtyZXR1cm4gYnQudXBkYXRlKEJ1ZmZlci5jb25jYXQoZnQpKSxidC5kaWdlc3QoKX1mdW5jdGlvbiBkZShRZSxmdCxrdCxidCl7Im51bWJlciI9PXR5cGVvZiBidCYmKGJ0PUxlKGJ0KSk7'@; put 'dmFyIEV0PW9lKFFlLGZ0LGJ0KTtpZihFdC5sZW5ndGg8a3Qpe3ZhciBWdD1CdWZmZXIuYWxsb2Moa3QsNTQpO0V0LmNvcHkoVnQpLEV0PVZ0fWVsc2UgRXQubGVuZ3RoPmt0JiYoRXQ9RXQuc2xpY2UoMCxrdCkpO3JldHVybiBFdH1mdW5jdGlvbiBMZShRZSxmdCl7dmFyIGt0PUJ1ZmZlci5h'@; put 'bGxvYyhmdHx8NCk7cmV0dXJuIGt0LndyaXRlVUludDMyTEUoUWUsMCksa3R9ZnVuY3Rpb24gTmUoUWUsZnQsa3QsYnQsRXQsVnQpe2Zvcih2YXIgbnI9b2UoZnQsa3QsQnVmZmVyLmZyb20oUWUsInV0ZjE2bGUiKSksbm49MDtubjxidDtubisrKW5yPW9lKGZ0LExlKG5uKSxucik7dmFyIGpu'@; put 'PUV0Lzg7aWYoKG5yPW9lKGZ0LG5yLFZ0KSkubGVuZ3RoPGpuKXt2YXIga249QnVmZmVyLmFsbG9jKGpuLDU0KTtuci5jb3B5KGtuKSxucj1rbn1lbHNlIG5yLmxlbmd0aD5qbiYmKG5yPW5yLnNsaWNlKDAsam4pKTtyZXR1cm4gbnJ9cmV0dXJuIHNoLnJhbmRvbUJ5dGVzfHwoc2gucmFuZG9t'@; put 'Qnl0ZXM9ZnVuY3Rpb24oUWUpe2Zvcih2YXIgZnQ9QnVmZmVyLmFsbG9jKFFlKSxrdD0wO2t0PFFlOysra3QpZnRba3RdPU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpO3JldHVybiBmdH0pLGZ1bmN0aW9uIG10KFFlLGZ0KXtpZigic3RyaW5nIj09dHlwZW9mIFFlKXJldHVybiBtdChC'@; put 'dWZmZXIuZnJvbShRZSwiYmluYXJ5IiksZnQpO3ZhciBrdD1zaC5yYW5kb21CeXRlcygzMiksYnQ9e3BhY2thZ2U6e2NpcGhlckFsZ29yaXRobToiQUVTIixjaXBoZXJDaGFpbmluZzoiQ2hhaW5pbmdNb2RlQ0JDIixzYWx0VmFsdWU6c2gucmFuZG9tQnl0ZXMoMTYpLGhhc2hBbGdvcml0aG06'@; put 'IlNIQTUxMiIsaGFzaFNpemU6NjQsYmxvY2tTaXplOjE2LGtleUJpdHM6OCprdC5sZW5ndGh9LGtleTp7Y2lwaGVyQWxnb3JpdGhtOiJBRVMiLGNpcGhlckNoYWluaW5nOiJDaGFpbmluZ01vZGVDQkMiLHNhbHRWYWx1ZTpzaC5yYW5kb21CeXRlcygxNiksaGFzaEFsZ29yaXRobToiU0hBNTEy'@; put 'IixoYXNoU2l6ZTo2NCxibG9ja1NpemU6MTYsc3BpbkNvdW50OjEsa2V5Qml0czoyNTZ9fSxFdD1mdW5jdGlvbiBCZShRZSxmdCxrdCxidCxFdCxWdCx1bixucil7Zm9yKHZhciBubj1bXSxhcj1RZT8wOjgsam49MCxrbj0wLHNyPTA7c3I8bnIubGVuZ3RoOyl7KHNyPShrbj1zcikrNDA5Nik+'@; put 'bnIubGVuZ3RoJiYoc3I9bnIubGVuZ3RoKTt2YXIgZ3I9bnIuc2xpY2Uoa24rYXIsc3IrYXIpLHFuPWdyLmxlbmd0aCVFdDtxbiYmKGdyPUJ1ZmZlci5jb25jYXQoW2dyLEJ1ZmZlci5hbGxvYyhFdC1xbildKSk7dmFyIE9pPXNlKFFlLGZ0LGt0LHVuLGRlKGJ0LFZ0LEV0LGpuKSxncik7bm4u'@; put 'cHVzaChPaSksam4rK312YXIgc289QnVmZmVyLmNvbmNhdChubik7aWYoUWUpc289QnVmZmVyLmNvbmNhdChbTGUobnIubGVuZ3RoLDgpLHNvXSk7ZWxzZXt2YXIgbW89bnIucmVhZFVJbnQzMkxFKDApO3NvPXNvLnNsaWNlKDAsbW8pfXJldHVybiBzb30oITAsYnQucGFja2FnZS5jaXBoZXJB'@; put 'bGdvcml0aG0sYnQucGFja2FnZS5jaXBoZXJDaGFpbmluZyxidC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sYnQucGFja2FnZS5ibG9ja1NpemUsYnQucGFja2FnZS5zYWx0VmFsdWUsa3QsUWUpLFZ0PXNoLnJhbmRvbUJ5dGVzKDY0KSx1bj1kZShidC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sYnQu'@; put 'cGFja2FnZS5zYWx0VmFsdWUsYnQucGFja2FnZS5ibG9ja1NpemUsUS5kYXRhSW50ZWdyaXR5LmhtYWNLZXkpLG5yPXNlKCEwLGJ0LnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLGJ0LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsa3QsdW4sVnQpLG5uPWZ1bmN0aW9uIFplKFFlLGZ0KXtRZT1RZS50'@; put 'b0xvd2VyQ2FzZSgpO3ZhciBrdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtpZihzaC5nZXRIYXNoZXMoKS5pbmRleE9mKFFlKTwwKXRocm93IG5ldyBFcnJvcigiSE1BQyBhbGdvcml0aG0gJyIrUWUrIicgbm90IHN1cHBvcnRlZCEiKTt2YXIgRXQ9c2guY3JlYXRlSG1hYyhRZSxmdCk7'@; put 'cmV0dXJuIEV0LnVwZGF0ZShCdWZmZXIuY29uY2F0KGt0KSksRXQuZGlnZXN0KCl9KGJ0LnBhY2thZ2UuaGFzaEFsZ29yaXRobSxWdCxFdCksYXI9ZGUoYnQucGFja2FnZS5oYXNoQWxnb3JpdGhtLGJ0LnBhY2thZ2Uuc2FsdFZhbHVlLGJ0LnBhY2thZ2UuYmxvY2tTaXplLFEuZGF0YUludGVn'@; put 'cml0eS5obWFjVmFsdWUpLGpuPXNlKCEwLGJ0LnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLGJ0LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsa3QsYXIsbm4pO2J0LmRhdGFJbnRlZ3JpdHk9e2VuY3J5cHRlZEhtYWNLZXk6bnIsZW5jcnlwdGVkSG1hY1ZhbHVlOmpufTt2YXIga249TmUoZnQsYnQu'@; put 'a2V5Lmhhc2hBbGdvcml0aG0sYnQua2V5LnNhbHRWYWx1ZSxidC5rZXkuc3BpbkNvdW50LGJ0LmtleS5rZXlCaXRzLFEua2V5KTtidC5rZXkuZW5jcnlwdGVkS2V5VmFsdWU9c2UoITAsYnQua2V5LmNpcGhlckFsZ29yaXRobSxidC5rZXkuY2lwaGVyQ2hhaW5pbmcsa24sYnQua2V5LnNhbHRW'@; put 'YWx1ZSxrdCk7dmFyIHNyPXNoLnJhbmRvbUJ5dGVzKDE2KSxncj1OZShmdCxidC5rZXkuaGFzaEFsZ29yaXRobSxidC5rZXkuc2FsdFZhbHVlLGJ0LmtleS5zcGluQ291bnQsYnQua2V5LmtleUJpdHMsUS52ZXJpZmllckhhc2guaW5wdXQpO2J0LmtleS5lbmNyeXB0ZWRWZXJpZmllckhhc2hJ'@; put 'bnB1dD1zZSghMCxidC5rZXkuY2lwaGVyQWxnb3JpdGhtLGJ0LmtleS5jaXBoZXJDaGFpbmluZyxncixidC5rZXkuc2FsdFZhbHVlLHNyKTt2YXIgcW49b2UoYnQua2V5Lmhhc2hBbGdvcml0aG0sc3IpLF9pPU5lKGZ0LGJ0LmtleS5oYXNoQWxnb3JpdGhtLGJ0LmtleS5zYWx0VmFsdWUsYnQu'@; put 'a2V5LnNwaW5Db3VudCxidC5rZXkua2V5Qml0cyxRLnZlcmlmaWVySGFzaC52YWx1ZSk7YnQua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlPXNlKCEwLGJ0LmtleS5jaXBoZXJBbGdvcml0aG0sYnQua2V5LmNpcGhlckNoYWluaW5nLF9pLGJ0LmtleS5zYWx0VmFsdWUscW4pO3ZhciBP'@; put 'aT1mdW5jdGlvbiBudChRZSl7dmFyIGZ0PXtuYW1lOiJlbmNyeXB0aW9uIixhdHRyaWJ1dGVzOnt4bWxuczoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9lbmNyeXB0aW9uIiwieG1sbnM6cCI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIw'@; put 'MDYva2V5RW5jcnlwdG9yL3Bhc3N3b3JkIiwieG1sbnM6YyI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL2NlcnRpZmljYXRlIn0sY2hpbGRyZW46W3tuYW1lOiJrZXlEYXRhIixhdHRyaWJ1dGVzOntzYWx0U2l6ZTpRZS5wYWNrYWdlLnNh'@; put 'bHRWYWx1ZS5sZW5ndGgsYmxvY2tTaXplOlFlLnBhY2thZ2UuYmxvY2tTaXplLGtleUJpdHM6UWUucGFja2FnZS5rZXlCaXRzLGhhc2hTaXplOlFlLnBhY2thZ2UuaGFzaFNpemUsY2lwaGVyQWxnb3JpdGhtOlFlLnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLGNpcGhlckNoYWluaW5nOlFlLnBh'@; put 'Y2thZ2UuY2lwaGVyQ2hhaW5pbmcsaGFzaEFsZ29yaXRobTpRZS5wYWNrYWdlLmhhc2hBbGdvcml0aG0sc2FsdFZhbHVlOlFlLnBhY2thZ2Uuc2FsdFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19LHtuYW1lOiJkYXRhSW50ZWdyaXR5IixhdHRyaWJ1dGVzOntlbmNyeXB0ZWRIbWFjS2V5OlFl'@; put 'LmRhdGFJbnRlZ3JpdHkuZW5jcnlwdGVkSG1hY0tleS50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkSG1hY1ZhbHVlOlFlLmRhdGFJbnRlZ3JpdHkuZW5jcnlwdGVkSG1hY1ZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19LHtuYW1lOiJrZXlFbmNyeXB0b3JzIixjaGlsZHJlbjpbe25hbWU6'@; put 'ImtleUVuY3J5cHRvciIsYXR0cmlidXRlczp7dXJpOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L2tleUVuY3J5cHRvci9wYXNzd29yZCJ9LGNoaWxkcmVuOlt7bmFtZToicDplbmNyeXB0ZWRLZXkiLGF0dHJpYnV0ZXM6e3NwaW5Db3VudDpRZS5rZXkuc3BpbkNv'@; put 'dW50LHNhbHRTaXplOlFlLmtleS5zYWx0VmFsdWUubGVuZ3RoLGJsb2NrU2l6ZTpRZS5rZXkuYmxvY2tTaXplLGtleUJpdHM6UWUua2V5LmtleUJpdHMsaGFzaFNpemU6UWUua2V5Lmhhc2hTaXplLGNpcGhlckFsZ29yaXRobTpRZS5rZXkuY2lwaGVyQWxnb3JpdGhtLGNpcGhlckNoYWluaW5n'@; put 'OlFlLmtleS5jaXBoZXJDaGFpbmluZyxoYXNoQWxnb3JpdGhtOlFlLmtleS5oYXNoQWxnb3JpdGhtLHNhbHRWYWx1ZTpRZS5rZXkuc2FsdFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKSxlbmNyeXB0ZWRWZXJpZmllckhhc2hJbnB1dDpRZS5rZXkuZW5jcnlwdGVkVmVyaWZpZXJIYXNoSW5wdXQu'@; put 'dG9TdHJpbmcoImJhc2U2NCIpLGVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlOlFlLmtleS5lbmNyeXB0ZWRWZXJpZmllckhhc2hWYWx1ZS50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkS2V5VmFsdWU6UWUua2V5LmVuY3J5cHRlZEtleVZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19XX1d'@; put 'fV19LGJ0PShuZXcgXykuYnVpbGQoZnQpO3JldHVybiBCdWZmZXIuY29uY2F0KFttLEJ1ZmZlci5mcm9tKGJ0LCJ1dGY4IildKX0oYnQpLHNvPWFlLnV0aWxzLmNmYl9uZXcoKTtyZXR1cm4gYWUudXRpbHMuY2ZiX2FkZChzbywiRW5jcnlwdGlvbkluZm8iLE9pKSxhZS51dGlscy5jZmJfYWRk'@; put 'KHNvLCJFbmNyeXB0ZWRQYWNrYWdlIixFdCksc299fSgpO2Z1bmN0aW9uIFhCKGQpe3JldHVybiBmdW5jdGlvbihtKXtmb3IodmFyIFQ9MDtUIT1kLmxlbmd0aDsrK1Qpe3ZhciBQPWRbVF07dm9pZCAwPT09bVtQWzBdXSYmKG1bUFswXV09UFsxXSksIm4iPT09UFsyXSYmKG1bUFswXV09TnVt'@; put 'YmVyKG1bUFswXV0pKX19fXZhciBJUj1mdW5jdGlvbihkKXtYQihbWyJjZWxsTkYiLCExXSxbImNlbGxIVE1MIiwhMF0sWyJjZWxsRm9ybXVsYSIsITBdLFsiY2VsbFN0eWxlcyIsITFdLFsiY2VsbFRleHQiLCEwXSxbImNlbGxEYXRlcyIsITFdLFsic2hlZXRTdHVicyIsITFdLFsic2hlZXRS'@; put 'b3dzIiwwLCJuIl0sWyJib29rRGVwcyIsITFdLFsiYm9va1NoZWV0cyIsITFdLFsiYm9va1Byb3BzIiwhMV0sWyJib29rRmlsZXMiLCExXSxbImJvb2tWQkEiLCExXSxbInBhc3N3b3JkIiwiIl0sWyJXVEYiLCExXV0pKGQpLGQuYm9va0ltYWdlcyYmKGQuY2VsbFN0eWxlcz0hMCl9LEplZT1Y'@; put 'QihbWyJjZWxsRGF0ZXMiLCExXSxbImJvb2tTU1QiLCExXSxbImJvb2tUeXBlIiwieGxzeCJdLFsiY29tcHJlc3Npb24iLCExXSxbIldURiIsITFdXSk7ZnVuY3Rpb24gdDZlKGQpe3JldHVybiB1YS5XUy5pbmRleE9mKGQpPi0xPyJzaGVldCI6dWEuQ1MmJmQ9PXVhLkNTPyJjaGFydCI6dWEu'@; put 'RFMmJmQ9PXVhLkRTPyJkaWFsb2ciOnVhLk1TJiZkPT11YS5NUz8ibWFjcm8iOmQmJmQubGVuZ3RoP2Q6InNoZWV0In12YXIgSjk9W107ZnVuY3Rpb24gWXkoZCxfLG0sVCxQLFEsc2Usb2UsZGUsTGUsTmUsQmUpe3RyeXtRW1RdPUx1KHZyKGQsbSwhMCksXyk7dmFyIG50LFplPVV0KGQsXyk7'@; put 'c3dpdGNoKG9lKXtjYXNlInNoZWV0IjpudD1mdW5jdGlvbiB4QihkLF8sbSxULFAsUSxzZSxvZSl7cmV0dXJuIi5iaW4iPT09Xy5zbGljZSgtNCk/ZnVuY3Rpb24gZkIoZCxfLG0sVCxQLFEsc2Upe2lmKCFkKXJldHVybiBkO3ZhciBvZT1ffHx7fTtUfHwoVD17IiFpZCI6e319KTt2YXIgTGUs'@; put 'bXQsUWUsZnQsa3QsYnQsRXQsVnQsdW4sbnIsZGU9b2UuZGVuc2U/W106e30sTmU9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sQmU9W10sWmU9ITEsbnQ9ITEsbm49W107b2UuYmlmZj0xMixvZVsiIXJvdyJdPTA7dmFyIGFyPTAsam49ITEsa249W10sc3I9e30sZ3I9b2Uuc3VwYm9v'@; put 'a3N8fFAuc3VwYm9va3N8fFtbXV07aWYoZ3Iuc2hhcmVkZj1zcixnci5hcnJheWY9a24sZ3IuU2hlZXROYW1lcz1QLlNoZWV0TmFtZXN8fFAuU2hlZXRzLm1hcChmdW5jdGlvbihMaSl7cmV0dXJuIExpLm5hbWV9KSwhb2Uuc3VwYm9va3MmJihvZS5zdXBib29rcz1ncixQLk5hbWVzKSlmb3Io'@; put 'dmFyIHFuPTA7cW48UC5OYW1lcy5sZW5ndGg7KytxbilnclswXVtxbisxXT1QLk5hbWVzW3FuXTt2YXIgX2k9W10sT2k9W10sc289ITE7aWYoWjlbMTZdPXtuOiJCcnRTaG9ydFJlYWwiLGY6bkJ9LEl1KGQsZnVuY3Rpb24oa3IsRG4sT3Ipe2lmKCFudClzd2l0Y2goT3Ipe2Nhc2UgMTQ4Okxl'@; put 'PWtyO2JyZWFrO2Nhc2UgMDptdD1rcixvZS5zaGVldFJvd3MmJm9lLnNoZWV0Um93czw9bXQuciYmKG50PSEwKSx1bj16byhrdD1tdC5yKSxvZVsiIXJvdyJdPW10LnIsKGtyLmhpZGRlbnx8a3IuaHB0fHxudWxsIT1rci5sZXZlbCkmJihrci5ocHQmJihrci5ocHg9Tmcoa3IuaHB0KSksT2lb'@; put 'a3Iucl09a3IpO2JyZWFrO2Nhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OnN3aXRjaChRZT17dDprclsyXX0sa3JbMl0pe2Nh'@; put 'c2UibiI6UWUudj1rclsxXTticmVhaztjYXNlInMiOlFlLnY9KFZ0PUg5W2tyWzFdXSkudCxvZS5jZWxsU3R5bGVzJiYoUWUuUj1mdW5jdGlvbiBhNWUoZCxfKXtpZihkLlIpcmV0dXJuIGQuUjtpZihfJiZfLkZvbnRzJiYoMSE9ZC5yLmxlbmd0aHx8MCE9ZC5yWzBdLmljaCkpe2QuUj1bXTt2'@; put 'YXIgbT0wLFQ9ZC5yW21dLFA9ZC5yW20rMV07Zm9yKFQuaWNoPjAmJmQuUi5wdXNoKHt0OiJzIix2OmQudC5zbGljZSgwLFQuaWNoKX0pO208ZC5yLmxlbmd0aC0xOysrbSlkLlIucHVzaCh7dDoicyIsdjpkLnQuc2xpY2UoKFQ9ZC5yW21dKS5pY2gsKFA9ZC5yW20rMV0pLmljaCksczpfLkZv'@; put 'bnRzW1QuaWZudF19KTtyZXR1cm4gZC5SLnB1c2goe3Q6InMiLHY6ZC50LnNsaWNlKChQfHxUKS5pY2gpLHM6Xy5Gb250c1soUHx8VCkuaWZudF19KSxkLlJ9fShWdCxzZSkpO2JyZWFrO2Nhc2UiYiI6UWUudj0hIWtyWzFdO2JyZWFrO2Nhc2UiZSI6UWUudj1rclsxXSwhMSE9PW9lLmNlbGxU'@; put 'ZXh0JiYoUWUudz1ubFtRZS52XSk7YnJlYWs7Y2FzZSJzdHIiOlFlLnQ9InMiLFFlLnY9a3JbMV19aWYoKGZ0PXNlLkNlbGxYZltrclswXS5pU3R5bGVSZWZdKSYmRmsoUWUsZnQubnVtRm10SWQsZnQuZmlsbElkLGZ0LmZvbnRJZCxmdC5ib3JkZXJJZCxvZSwwLHNlKSxvZS5jZWxsU3R5bGVz'@; put 'JiZRZS5zJiZmdC5hbGlnbm1lbnQmJihRZS5zLmFsaWdubWVudD1RcihmdC5hbGlnbm1lbnQpKSxidD0tMT09a3JbMF0uYz9idCsxOmtyWzBdLmMsb2UuZGVuc2U/KGRlW2t0XXx8KGRlW2t0XT1bXSksZGVba3RdW2J0XT1RZSk6ZGVbbXMoYnQpK3VuXT1RZSxvZS5jZWxsRm9ybXVsYSl7Zm9y'@; put 'KGpuPSExLGFyPTA7YXI8a24ubGVuZ3RoOysrYXIpe3ZhciBfcj1rblthcl07bXQucj49X3JbMF0ucy5yJiZtdC5yPD1fclswXS5lLnImJmJ0Pj1fclswXS5zLmMmJmJ0PD1fclswXS5lLmMmJihRZS5GPWh0KF9yWzBdKSxqbj0hMCl9IWpuJiZrci5sZW5ndGg+MyYmKFFlLmY9a3JbM10pfWlm'@; put 'KE5lLnMucj5tdC5yJiYoTmUucy5yPW10LnIpLE5lLnMuYz5idCYmKE5lLnMuYz1idCksTmUuZS5yPG10LnImJihOZS5lLnI9bXQuciksTmUuZS5jPGJ0JiYoTmUuZS5jPWJ0KSxvZS5jZWxsRGF0ZXMmJmZ0JiYibiI9PVFlLnQmJkkuaXNfZGF0ZShJLl90YWJsZVtmdC5udW1GbXRJZF0pKXt2'@; put 'YXIgTW49SS5wYXJzZV9kYXRlX2NvZGUoUWUudik7TW4mJihRZS50PSJkIixRZS52PW5ldyBEYXRlKE1uLnksTW4ubS0xLE1uLmQsTW4uSCxNbi5NLE1uLlMsTW4udSkpfWJyZWFrO2Nhc2UgMTpjYXNlIDEyOmlmKCFvZS5zaGVldFN0dWJzfHxaZSlicmVhaztRZT17dDoieiIsdjp2b2lkIDB9'@; put 'LGJ0PS0xPT1rclswXS5jP2J0KzE6a3JbMF0uYywoZnQ9c2UuQ2VsbFhmW2tyWzBdLmlTdHlsZVJlZl0pJiZGayhRZSxmdC5udW1GbXRJZCxmdC5maWxsSWQsZnQuZm9udElkLGZ0LmJvcmRlcklkLG9lLDAsc2UpLG9lLmNlbGxTdHlsZXMmJlFlLnMmJmZ0LmFsaWdubWVudCYmKFFlLnMuYWxp'@; put 'Z25tZW50PVFyKGZ0LmFsaWdubWVudCkpLG9lLmRlbnNlPyhkZVtrdF18fChkZVtrdF09W10pLGRlW2t0XVtidF09UWUpOmRlW21zKGJ0KSt1bl09UWUsTmUucy5yPm10LnImJihOZS5zLnI9bXQuciksTmUucy5jPmJ0JiYoTmUucy5jPWJ0KSxOZS5lLnI8bXQuciYmKE5lLmUucj1tdC5yKSxO'@; put 'ZS5lLmM8YnQmJihOZS5lLmM9YnQpO2JyZWFrO2Nhc2UgMTc2Om5uLnB1c2goa3IpO2JyZWFrO2Nhc2UgNDk0OnZhciBOcj1UWyIhaWQiXVtrci5yZWxJZF07Zm9yKE5yPyhrci5UYXJnZXQ9TnIuVGFyZ2V0LGtyLmxvYyYmKGtyLlRhcmdldCs9IiMiK2tyLmxvYyksa3IuUmVsPU5yKToiIj09'@; put 'a3IucmVsSWQmJihrci5UYXJnZXQ9IiMiK2tyLmxvYyksa3Q9a3IucmZ4LnMucjtrdDw9a3IucmZ4LmUucjsrK2t0KWZvcihidD1rci5yZngucy5jO2J0PD1rci5yZnguZS5jOysrYnQpb2UuZGVuc2U/KGRlW2t0XXx8KGRlW2t0XT1bXSksZGVba3RdW2J0XXx8KGRlW2t0XVtidF09e3Q6Inoi'@; put 'LHY6dm9pZCAwfSksZGVba3RdW2J0XS5sPWtyKTooRXQ9cWkoe2M6YnQscjprdH0pLGRlW0V0XXx8KGRlW0V0XT17dDoieiIsdjp2b2lkIDB9KSxkZVtFdF0ubD1rcik7YnJlYWs7Y2FzZSA0MjY6aWYoIW9lLmNlbGxGb3JtdWxhKWJyZWFrO2tuLnB1c2goa3IpLChucj1vZS5kZW5zZT9kZVtr'@; put 'dF1bYnRdOmRlW21zKGJ0KSt1bl0pLmY9dTEoa3JbMV0sTmUse3I6bXQucixjOmJ0fSxncixvZSksbnIuRj1odChrclswXSk7YnJlYWs7Y2FzZSA0Mjc6aWYoIW9lLmNlbGxGb3JtdWxhKWJyZWFrO3NyW3FpKGtyWzBdLnMpXT1rclsxXSwobnI9b2UuZGVuc2U/ZGVba3RdW2J0XTpkZVttcyhi'@; put 'dCkrdW5dKS5mPXUxKGtyWzFdLE5lLHtyOm10LnIsYzpidH0sZ3Isb2UpO2JyZWFrO2Nhc2UgNjA6aWYoIW9lLmNlbGxTdHlsZXMpYnJlYWs7Zm9yKDtrci5lPj1rci5zOylfaVtrci5lLS1dPXt3aWR0aDprci53LzI1NixoaWRkZW46ISEoMSZrci5mbGFncyksbGV2ZWw6a3IubGV2ZWx9LHNv'@; put 'fHwoc289ITApLEIwKF9pW2tyLmUrMV0pO2JyZWFrO2Nhc2UgMTYxOmRlWyIhYXV0b2ZpbHRlciJdPXtyZWY6aHQoa3IpfTticmVhaztjYXNlIDQ3NjpkZVsiIW1hcmdpbnMiXT1rcjticmVhaztjYXNlIDE0NzpQLlNoZWV0c1ttXXx8KFAuU2hlZXRzW21dPXt9KSxrci5uYW1lJiYoUC5TaGVl'@; put 'dHNbbV0uQ29kZU5hbWU9a3IubmFtZSksKGtyLmFib3ZlfHxrci5sZWZ0KSYmKGRlWyIhb3V0bGluZSJdPXthYm92ZTprci5hYm92ZSxsZWZ0OmtyLmxlZnR9KTticmVhaztjYXNlIDEzNzpQLlZpZXdzfHwoUC5WaWV3cz1be31dKSxQLlZpZXdzWzBdfHwoUC5WaWV3c1swXT17fSksa3IuUlRM'@; put 'JiYoUC5WaWV3c1swXS5SVEw9ITApLGtyLmdyaWR8fChQLlZpZXdzWzBdLmdyaWQ9ITEsZGVbIiFncmlkbGluZXMiXT0hMSk7YnJlYWs7Y2FzZSA0ODU6ZGVbIiFzaGVldEZvcm1hdCJdPWtyO2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMDUzOiFmdW5jdGlvbiB3cChkLF8sbSxUKXtpZihfKXt2YXIg'@; put 'UD17cmVmOl8uc3FyZngsdDpfLnR9O18ub3AmJihQLm9wPV8ub3ApO3ZhciBRPSIiLHNlPSIiLG9lPV8uc3FyZng/InN0cmluZyI9PXR5cGVvZiBfLnNxcmZ4P3l0KF8uc3FyZnguc3BsaXQoIiwiKVswXSk6Xy5zcXJmeDpudWxsO2lmKF8uZjEmJihRPXUxKF8uZjEsb2UsbnVsbCxtLFQsITAp'@; put 'KSxfLmYyJiYoc2U9dTEoXy5mMixvZSxudWxsLG0sVCwhMCkpLF8ub3AmJlsiSU4iLCJPVCJdLmluZGV4T2YoXy5vcCk+PS0xKVAubWluPVEsUC5tYXg9c2U7ZWxzZSBpZihfLm9wKVAudj1RO2Vsc2UgdHJ5e3N3aXRjaChfLnQpe2Nhc2UiTGlzdCI6aWYoIlB0Z1N0ciI9PT1fLmYxWzBdWzBd'@; put 'WzBdJiYxPT1fLmYxWzBdLmxlbmd0aCl7UC5sPV8uZjFbMF1bMF1bMV0uc3BsaXQoIiwiKTticmVha31jYXNlIkN1c3RvbSI6UC5mPVF9fWNhdGNoe31kWyIhdmFsaWRhdGlvbnMiXXx8KGRbIiF2YWxpZGF0aW9ucyJdPVtdKSxkWyIhdmFsaWRhdGlvbnMiXS5wdXNoKFApfX0oZGUsa3IsZ3Is'@; put 'b2UpO2JyZWFrO2Nhc2UgMTUxOmRlWyIhZnJlZXplIl09a3JbMF07YnJlYWs7Y2FzZSAxNTI6ZGVbIiFzZWwiXT1rcjticmVhaztjYXNlIDE3NTpjYXNlIDY0NDpjYXNlIDYyNTpjYXNlIDU2MjpjYXNlIDM5NjpjYXNlIDExMTI6Y2FzZSAxMTQ2OmNhc2UgNDcxOmNhc2UgMTA1MDpjYXNlIDY0'@; put 'OTpjYXNlIDExMDU6Y2FzZSA0OTpjYXNlIDU4OTpjYXNlIDYwNzpjYXNlIDU2NDpjYXNlIDEwNTU6Y2FzZSAxNjg6Y2FzZSAxNzQ6Y2FzZSAxMTgwOmNhc2UgNDk5OmNhc2UgNTA3OmNhc2UgNTUwOmNhc2UgMTcxOmNhc2UgMTY3OmNhc2UgMTE3NzpjYXNlIDE2OTpjYXNlIDExODE6Y2FzZSA1'@; put 'NTE6Y2FzZSA1NTI6Y2FzZSA2NjE6Y2FzZSA2Mzk6Y2FzZSA0Nzg6Y2FzZSA1Mzc6Y2FzZSA0Nzc6Y2FzZSA1MzY6Y2FzZSAxMTAzOmNhc2UgNjgwOmNhc2UgMTEwNDpjYXNlIDEwMjQ6Y2FzZSA2NjM6Y2FzZSA1MzU6Y2FzZSA2Nzg6Y2FzZSA1MDQ6Y2FzZSAxMDQzOmNhc2UgNDI4OmNhc2Ug'@; put 'MTcwOmNhc2UgMzA3MjpjYXNlIDUwOmNhc2UgMjA3MDpjYXNlIDEwNDU6YnJlYWs7Y2FzZSAzNTpaZT0hMDticmVhaztjYXNlIDM2OlplPSExO2JyZWFrO2Nhc2UgMzc6QmUucHVzaChEbiksWmU9ITA7YnJlYWs7Y2FzZSAzODpCZS5wb3AoKSxaZT0hMTticmVhaztkZWZhdWx0OmlmKCEoKERu'@; put 'fHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKSYmISgoRG58fCIiKS5pbmRleE9mKCJFbmQiKT4wKSYmKCFaZXx8b2UuV1RGJiYiQnJ0QUNCZWdpbiIhPUJlW0JlLmxlbmd0aC0xXSkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK09yKyIgIitEbil9fSxvZSksZGVsZXRlIG9l'@; put 'LnN1cGJvb2tzLGRlbGV0ZSBvZVsiIXJvdyJdLCFkZVsiIXJlZiJdJiYoTmUucy5yPDJlNnx8TGUmJihMZS5lLnI+MHx8TGUuZS5jPjB8fExlLnMucj4wfHxMZS5zLmM+MCkpJiYoZGVbIiFyZWYiXT1odChMZXx8TmUpKSxvZS5zaGVldFJvd3MmJmRlWyIhcmVmIl0pe3ZhciBtbz15dChkZVsi'@; put 'IXJlZiJdKTtvZS5zaGVldFJvd3M8PSttby5lLnImJihtby5lLnI9b2Uuc2hlZXRSb3dzLTEsbW8uZS5yPk5lLmUuciYmKG1vLmUucj1OZS5lLnIpLG1vLmUucjxtby5zLnImJihtby5zLnI9bW8uZS5yKSxtby5lLmM+TmUuZS5jJiYobW8uZS5jPU5lLmUuYyksbW8uZS5jPG1vLnMuYyYmKG1v'@; put 'LnMuYz1tby5lLmMpLGRlWyIhZnVsbHJlZiJdPWRlWyIhcmVmIl0sZGVbIiFyZWYiXT1odChtbykpfXJldHVybiBubi5sZW5ndGg+MCYmKGRlWyIhbWVyZ2VzIl09bm4pLF9pLmxlbmd0aD4wJiYoZGVbIiFjb2xzIl09X2kpLE9pLmxlbmd0aD4wJiYoZGVbIiFyb3dzIl09T2kpLGRlfShkLFQs'@; put 'bSxQLFEsMCxvZSk6ZnVuY3Rpb24gSDVlKGQsXyxtLFQsUCxRLHNlKXtpZighZClyZXR1cm4gZDtUfHwoVD17IiFpZCI6e319KTt2YXIgb2U9Xy5kZW5zZT9bXTp7fSxkZT17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxMZT0iIixOZT0iIixCZT1kLm1hdGNoKFBrKTtCZT8oTGU9ZC5z'@; put 'bGljZSgwLEJlLmluZGV4KSxOZT1kLnNsaWNlKEJlLmluZGV4K0JlWzBdLmxlbmd0aCkpOkxlPU5lPWQ7dmFyIFplPU5lLmxhc3RJbmRleE9mKCJleHRMc3QiKSxtdD0oLTE9PVplfHxOZS5zbGljZShaZSksTGUubWF0Y2goTFMpKTttdD9QUyhtdFswXSwwLFAsbSk6KG10PUxlLm1hdGNoKFFt'@; put 'KSkmJmZ1bmN0aW9uIE9WKGQsXyxtLFQsUCxRLHNlKXtQUyhkLnNsaWNlKDAsZC5pbmRleE9mKCI+IikpLDAsVCxQKTt2YXIgb2U9Xy5tYXRjaChJVik7aWYob2Upe3ZhciBMZT13OChYcihvZVswXSksUSxzZSk7bVsiIXRhYmNvbG9yIl09TGV9aWYoKG9lPV8ubWF0Y2goRFYpKSYmWHIob2Vb'@; put 'MF0pLmZpdFRvUGFnZSYmKG1bIiFwcmludCJdfHwobVsiIXByaW50Il09e30pLG1bIiFwcmludCJdLnByb3BzfHwobVsiIXByaW50Il0ucHJvcHM9e30pLG1bIiFwcmludCJdLnByb3BzLmZpdHx8KG1bIiFwcmludCJdLnByb3BzLmZpdD17fSksbnVsbD09bVsiIXByaW50Il0ucHJvcHMuZml0'@; put 'LmhlaWdodCYmKG1bIiFwcmludCJdLnByb3BzLmZpdC5oZWlnaHQ9MSksbnVsbD09bVsiIXByaW50Il0ucHJvcHMuZml0LndpZHRoJiYobVsiIXByaW50Il0ucHJvcHMuZml0LndpZHRoPTEpKSxvZT1fLm1hdGNoKExWKSl7bVsiIW91dGxpbmUiXT17fTt2YXIgQmU9WHIob2VbMF0pO0JlLnN1'@; put 'bW1hcnlCZWxvdyYmKG1bIiFvdXRsaW5lIl0uYWJvdmU9IVRpKEJlLnN1bW1hcnlCZWxvdykpLEJlLnN1bW1hcnlSaWdodCYmKG1bIiFvdXRsaW5lIl0ubGVmdD0hVGkoQmUuc3VtbWFyeVJpZ2h0KSl9fShtdFswXSxtdFsxXXx8IiIsb2UsUCxtLHNlLFEpO3ZhciBRZT0oTGUubWF0Y2goLzwo'@; put 'Pzpcdyo6KT9kaW1lbnNpb24vKXx8e2luZGV4Oi0xfSkuaW5kZXg7aWYoUWU+MCl7dmFyIGZ0PUxlLnNsaWNlKFFlLFFlKzUwKS5tYXRjaChSNWUpO2Z0JiYoIV98fCFfLm5vZGltKSYmZnVuY3Rpb24gY0ooZCxfKXt2YXIgbT15dChfKTttLnMucjw9bS5lLnImJm0ucy5jPD1tLmUuYyYmbS5z'@; put 'LnI+PTAmJm0ucy5jPj0wJiYoZFsiIXJlZiJdPWh0KG0pKX0ob2UsZnRbMV0pfXZhciBrdD1MZS5tYXRjaChoSik7a3QmJmt0WzFdJiZmdW5jdGlvbiBJSihkLF8sbSxUKXttLlZpZXdzfHwobS5WaWV3cz1be31dKTt2YXIgUD0wO2QucmVwbGFjZShSSixmdW5jdGlvbihRLHNlKXt2YXIgb2U9'@; put 'WHIoUSk7aWYobS5WaWV3c1tUXXx8KG0uVmlld3NbVF09e30pLFRpKG9lLnJpZ2h0VG9MZWZ0KSYmKG0uVmlld3NbVF0uUlRMPSEwKSxvZS5zaG93R3JpZExpbmVzJiYobS5WaWV3c1tUXS5ncmlkPVRpKG9lLnNob3dHcmlkTGluZXMpLG51bGw9PV9bIiFncmlkbGluZXMiXSYmKF9bIiFncmlk'@; put 'bGluZXMiXT1UaShvZS5zaG93R3JpZExpbmVzKSkpLCtvZS56b29tU2NhbGUmJihtLlZpZXdzW1RdLnpvb209K29lLnpvb21TY2FsZSksb2UudmlldyYmKG0uVmlld3NbVF0udmlldz1vZS52aWV3KSwxPT0rK1AmJiIvPiIhPVEuc2xpY2UoLTIpKXt2YXIgZGU9ZC5zbGljZShzZStRLmxlbmd0'@; put 'aCksTGU9ZGUubWF0Y2goLzxcLyg/Olx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9cLz8+Lyk7aWYoIUxlKXJldHVybiIiO3ZhciBOZT0oZGU9ZGUuc2xpY2UoMCxMZS5pbmRleCkpLm1hdGNoKC88KD86XHc6KT9wYW5lKD86W14+YS16XVtePl0qKT9cLz8+Lyk7aWYoTmUpe3ZhciBC'@; put 'ZT1YcihOZVswXSk7ImZyb3plbiI9PUJlLnN0YXRlP19bIiFmcmVlemUiXT1tcygrQmUueFNwbGl0fHwwKSt6bygrQmUueVNwbGl0fHwwKTpCZS50b3BMZWZ0Q2VsbCYmKF9bIiFmcmVlemUiXT1CZS50b3BMZWZ0Q2VsbCl9dmFyIFplPWRlLm1hdGNoKC88KD86XHc6KT9zZWxlY3Rpb24oPzpb'@; put 'Xj5hLXpdW14+XSopP1wvPz4vKTtpZihaZSl7dmFyIG50PVhyKFplWzBdKTtpZihudC5hY3RpdmVDZWxsJiYoX1siIXNlbCJdPXtjZWxsOm50LmFjdGl2ZUNlbGx9KSxudC5zcXJlZil7dmFyIG10PW50LnNxcmVmLnJlcGxhY2UoL1xzLiokLywiIik7X1siIXNlbCJdfHwoX1siIXNlbCJdPXtj'@; put 'ZWxsOnFpKHphKG10KS5zKX0pLF9bIiFzZWwiXS5yYW5nZT1udC5zcXJlZn19fXJldHVybiIifSl9KGt0WzFdLG9lLFAsbSk7dmFyIGJ0PUxlLm1hdGNoKEQ1ZSksRXQ9W107aWYoXy5jZWxsU3R5bGVzKXt2YXIgVnQ9TGUubWF0Y2goSGspO1Z0JiZmdW5jdGlvbiB3SihkLF8sbSl7Zm9yKHZh'@; put 'ciBUPSExLFA9MDtQIT1fLmxlbmd0aDsrK1Ape3ZhciBRPVhyKF9bUF0sITApO1EuaGlkZGVuJiYoUS5oaWRkZW49VGkoUS5oaWRkZW4pKTt2YXIgc2U9cGFyc2VJbnQoUS5taW4sMTApLTEsb2U9cGFyc2VJbnQoUS5tYXgsMTApLTE7Zm9yKFEub3V0bGluZUxldmVsJiYoUS5sZXZlbD0rUS5v'@; put 'dXRsaW5lTGV2ZWx8fDApLGRlbGV0ZSBRLm1pbixkZWxldGUgUS5tYXgsUS53aWR0aD0rUS53aWR0aCwhVCYmUS53aWR0aCYmKFQ9ITApLEIwKFEpLFEuc3R5bGUmJihRLnM9T3koUS5zdHlsZSxtKSk7c2U8PW9lOylkW3NlKytdPVFyKFEpfX0oRXQsVnQsc2UpfWlmKEJlJiZMSihCZVsxXSxt'@; put 'LG9lLF8sZGUsUSxzZSksXy5jYWxsYmFjaylyZXR1cm4gb2U7dmFyIHVuPU5lLm1hdGNoKEJrKTt1biYmKG9lWyIhcHJvdGVjdCJdPWZ1bmN0aW9uIF9KKGQpe3ZhciBfPVhyKGQsITAsITApLG09e307aWYoVGkoXy5zaGVldCkpcmV0dXJuIFZWLmZvckVhY2goZnVuY3Rpb24oVCl7bVtUXT1u'@; put 'dWxsIT1fW1RdJiZUaShfW1RdKX0pLGsyLmZvckVhY2goZnVuY3Rpb24oVCl7bVtUXT1udWxsPT1fW1RdfHxUaShfW1RdKX0pLF8uYWxnb3JpdGhtTmFtZSYmKG0uZW5jcnlwdGlvbj17YWxnbzpfLmFsZ29yaXRobU5hbWUsaGFzaDpfLmhhc2hWYWx1ZSxzYWx0Ol8uc2FsdFZhbHVlLHNwaW46'@; put 'K18uc3BpbkNvdW50fHwxZTV9KSxtfSh1blswXSkpO3ZhciBucj1OZS5tYXRjaChJNWUpO25yJiYob2VbIiFhdXRvZmlsdGVyIl09ZnVuY3Rpb24galYoZCl7cmV0dXJue3JlZjooZC5tYXRjaCgvcmVmPSIoW14iXSopIi8pfHxbXSlbMV19fShuclswXSkpO3ZhciBubj1bXSxhcj1OZS5tYXRj'@; put 'aCh1Sik7aWYoYXIpZm9yKFFlPTA7UWUhPWFyLmxlbmd0aDsrK1FlKW5uW1FlXT15dChhcltRZV0uc2xpY2UoYXJbUWVdLmluZGV4T2YoJyInKSsxKSk7dmFyIGpuPSgtMT09WmU/TmU6TmUuc2xpY2UoMCxaZSkpLm1hdGNoKE9TKTtqbiYmKG9lWyIhY29uZGZtdCJdPVtdLmNvbmNhdC5hcHBs'@; put 'eShbXSxqbi5tYXAoZnVuY3Rpb24oRG4pe3JldHVybiBCUyhEbixfLFEsc2UpfSkpKSxaZT4tMSYmKGpuPU5lLnNsaWNlKFplKS5tYXRjaChPUykpJiYob2VbIiFjb25kZm10Il18fChvZVsiIWNvbmRmbXQiXT1bXSksb2VbIiFjb25kZm10Il09b2VbIiFjb25kZm10Il0uY29uY2F0LmFwcGx5'@; put 'KG9lWyIhY29uZGZtdCJdLGpuLm1hcChmdW5jdGlvbihEbil7cmV0dXJuIEJTKERuLF8sUSxzZSwhMCl9KSkpO3ZhciBrbj0oLTE9PVplP05lOk5lLnNsaWNlKDAsWmUpKS5tYXRjaChrVik7a24mJihvZVsiIXZhbGlkYXRpb25zIl09V2soa25bMF0sXykpLFplPi0xJiYoa249TmUuc2xpY2Uo'@; put 'WmUpLm1hdGNoKGtWKSkmJihvZVsiIXZhbGlkYXRpb25zIl18fChvZVsiIXZhbGlkYXRpb25zIl09W10pLG9lWyIhdmFsaWRhdGlvbnMiXT1vZVsiIXZhbGlkYXRpb25zIl0uY29uY2F0KFdrKGtuWzBdLF8sITApKSk7dmFyIHNyPU5lLm1hdGNoKGRKKTtzciYmZnVuY3Rpb24geUooZCxfLG0p'@; put 'e2Zvcih2YXIgVD1BcnJheS5pc0FycmF5KGQpLFA9MDtQIT1fLmxlbmd0aDsrK1Ape3ZhciBRPVhyKFduKF9bUF0pLCEwKTtpZighUS5yZWYpcmV0dXJuO3ZhciBzZT0oKG18fHt9KVsiIWlkIl18fFtdKVtRLmlkXTtzZT8oUS5UYXJnZXQ9c2UuVGFyZ2V0LFEubG9jYXRpb24mJihRLlRhcmdl'@; put 'dCs9IiMiK0NpKFEubG9jYXRpb24pKSk6KFEuVGFyZ2V0PSIjIitDaShRLmxvY2F0aW9uKSxzZT17VGFyZ2V0OlEuVGFyZ2V0LFRhcmdldE1vZGU6IkludGVybmFsIn0pLFEuUmVsPXNlLFEudG9vbHRpcCYmKFEuVG9vbHRpcD1RLnRvb2x0aXAsZGVsZXRlIFEudG9vbHRpcCk7Zm9yKHZhciBv'@; put 'ZT15dChRLnJlZiksZGU9b2Uucy5yO2RlPD1vZS5lLnI7KytkZSlmb3IodmFyIExlPW9lLnMuYztMZTw9b2UuZS5jOysrTGUpe3ZhciBOZT1xaSh7YzpMZSxyOmRlfSk7VD8oZFtkZV18fChkW2RlXT1bXSksZFtkZV1bTGVdfHwoZFtkZV1bTGVdPXt0OiJ6Iix2OnZvaWQgMH0pLGRbZGVdW0xl'@; put 'XS5sPVEpOihkW05lXXx8KGRbTmVdPXt0OiJ6Iix2OnZvaWQgMH0pLGRbTmVdLmw9USl9fX0ob2Usc3IsVCk7dmFyIGdyPU5lLm1hdGNoKFA1ZSk7Z3ImJmZ1bmN0aW9uIFBWKGQsXyl7dmFyIG09WHIoZCwhMSwhMCk7X1siIXByaW50Il18fChfWyIhcHJpbnQiXT17fSksX1siIXByaW50Il0u'@; put 'cHJvcHN8fChfWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIFQ9X1siIXByaW50Il0ucHJvcHM7bS5ncmlkTGluZXMmJihULmdyaWRsaW5lcz1UaShtLmdyaWRMaW5lcykpLG51bGwhPW0uaG9yaXpvbnRhbENlbnRlcmVkJiYoVC5jZW50ZXJYPVRpKG0uaG9yaXpvbnRhbENlbnRlcmVkKSksbnVs'@; put 'bCE9bS52ZXJ0aWNhbENlbnRlcmVkJiYoVC5jZW50ZXJZPVRpKG0udmVydGljYWxDZW50ZXJlZCkpfShnclswXSxvZSk7dmFyIHFuPU5lLm1hdGNoKFZrKTtxbiYmKChvZVsiIXByaW50Il18fChvZVsiIXByaW50Il09e30pKS5tYXJnaW5zPW9lWyIhbWFyZ2lucyJdPUJWKFhyKHFuWzBdKSkp'@; put 'O3ZhciBfaT1OZS5tYXRjaChqayk7X2kmJmZ1bmN0aW9uIHprKGQsXyl7dmFyIG09WHIoZCwhMSwhMCk7ZGVsZXRlIG0uaWQsZGVsZXRlIG1bMF0sX1siIXByaW50Il18fChfWyIhcHJpbnQiXT17fSksX1siIXByaW50Il0ucHJvcHN8fChfWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIFQ9X1si'@; put 'IXByaW50Il0ucHJvcHM7bS5vcmllbnRhdGlvbiYmKFQub3JpZW50YXRpb249bS5vcmllbnRhdGlvbiksbS5zY2FsZSYmKFQuc2NhbGU9K20uc2NhbGUpLCttLmZpdFRvSGVpZ2h0Pj0wJiYoKFQuZml0fHwoVC5maXQ9e30pKS5oZWlnaHQ9K20uZml0VG9IZWlnaHQpLCttLmZpdFRvV2lkdGg+'@; put 'PTAmJigoVC5maXR8fChULmZpdD17fSkpLndpZHRoPSttLmZpdFRvV2lkdGgpLG0ucGFwZXJIZWlnaHQmJm0ucGFwZXJXaWR0aD9ULnBhcGVyPXt3aWR0aDptLnBhcGVyV2lkdGgsaGVpZ2h0Om0ucGFwZXJIZWlnaHR9Om0ucGFwZXJTaXplJiYoVC5wYXBlcj1BOFtULnBhcGVyPSttLnBhcGVy'@; put 'U2l6ZV18fFQucGFwZXIpLG0uaG9yaXpvbnRhbERwaT9ULmRwaT0rbS5ob3Jpem9udGFsRHBpOm0udmVydGljYWxEcGkmJihULmRwaT0rbS52ZXJ0aWNhbERwaSksImF1dG9tYXRpYyIhPShtLmZpcnN0UGFnZU51bWJlcnx8ImF1dG9tYXRpYyIpJiYoVC5maXJzdD0rbS5maXJzdFBhZ2VOdW1i'@; put 'ZXIpLFRpKG0uYmxhY2tBbmRXaGl0ZSkmJihULmJ3PSEwKSxUaShtLmRyYWZ0KSYmKFQuZHJhZnQ9ITApLCJvdmVyVGhlbkRvd24iPT1tLnBhZ2VPcmRlciYmKFQub3JkZXI9Im92ZXIiKSxPOFttLmNlbGxDb21tZW50c10mJihULmNvbW1lbnRzPU84W20uY2VsbENvbW1lbnRzXSksTHlbbS5l'@; put 'cnJvcnNdJiYoVC5lcnJvcnM9THlbbS5lcnJvcnNdKX0oX2lbMF0sb2UpO3ZhciBPaT1OZS5tYXRjaChGNWUpO09pJiZmdW5jdGlvbiBFSihkLF8pe2lmKF9bIiFwcmludCJdfHwoX1siIXByaW50Il09e30pLGRbMV0pe3ZhciBtPSIiLFQ9MDtkWzFdLnJlcGxhY2UoQm4sZnVuY3Rpb24oUCxR'@; put 'KXtpZigiLyIhPVAuY2hhckF0KDEpKW09UC5zbGljZSgxLC0xKSxUPVErUC5sZW5ndGg7ZWxzZSBpZihtKXt2YXIgc2U9bS5tYXRjaCgvSGVhZGVyLyk/ImhlYWRlciI6ImZvb3RlciIsb2U9bS5yZXBsYWNlKC9IZWFkZXJ8Rm9vdGVyLywiIik7bT0iIixfWyIhcHJpbnQiXVtzZV18fChfWyIh'@; put 'cHJpbnQiXVtzZV09e30pLF9bIiFwcmludCJdW3NlXVtvZV09Q2koV24oZFsxXS5zbGljZShULFEpKSl9fSl9fShPaSxvZSk7dmFyIHNvPU5lLm1hdGNoKE81ZSk7c28mJigob2VbIiFwcmludCJdfHwob2VbIiFwcmludCJdPXt9KSkucm93QnJlYWtzPW9lWyIhcm93QnJlYWtzIl09ZnVuY3Rp'@; put 'b24gcEooZCl7dmFyIF89W107cmV0dXJuKGQubWF0Y2goVDUpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihtKXt2YXIgVD1YcihtKTtfLnB1c2goe1I6K1QuaWR9KX0pLF99KHNvWzBdKSk7dmFyIG1vPU5lLm1hdGNoKE41ZSk7bW8mJigob2VbIiFwcmludCJdfHwob2VbIiFwcmludCJdPXt9KSku'@; put 'Y29sQnJlYWtzPW9lWyIhY29sQnJlYWtzIl09ZnVuY3Rpb24gbUooZCl7dmFyIF89W107cmV0dXJuKGQubWF0Y2goVDUpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihtKXt2YXIgVD1YcihtKTtfLnB1c2goe0M6K1QuaWR9KX0pLF99KG1vWzBdKSk7dmFyIExpPVtdO2lmKChMaT1OZS5tYXRjaCgv'@; put 'ZHJhd2luZyByOmlkPSIoLio/KSIvKSkmJihvZVsiIXJlbCJdPUxpWzFdKSwoTGk9TmUubWF0Y2goL2xlZ2FjeURyYXdpbmcgcjppZD0iKC4qPykiLykpJiYob2VbIiFsZWdyZWwiXT1MaVsxXSksKExpPU5lLm1hdGNoKEFWKSkmJihvZVsiIWN0cmxpZCJdPUxpLm1hcChmdW5jdGlvbihEbil7'@; put 'cmV0dXJuIFhyKERuKX0pKSwoTGk9TmUubWF0Y2goTDVlKSkmJmZ1bmN0aW9uIEZTKGQsXyl7ZFsiIXRhYmxlcmVmcyJdfHwoZFsiIXRhYmxlcmVmcyJdPVtdKSwoXy5tYXRjaChOUyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG0pe2RbIiF0YWJsZXJlZnMiXS5wdXNoKFhyKG0pLmlkKX0pfShv'@; put 'ZSxMaVsxXSksXyYmXy5ub2RpbSYmKGRlLnMuYz1kZS5zLnI9MCksIW9lWyIhcmVmIl0mJmRlLmUuYz49ZGUucy5jJiZkZS5lLnI+PWRlLnMuciYmKG9lWyIhcmVmIl09aHQoZGUpKSxfLnNoZWV0Um93cz4wJiZvZVsiIXJlZiJdKXt2YXIga3I9eXQob2VbIiFyZWYiXSk7Xy5zaGVldFJvd3M8'@; put 'PStrci5lLnImJihrci5lLnI9Xy5zaGVldFJvd3MtMSxrci5lLnI+ZGUuZS5yJiYoa3IuZS5yPWRlLmUuciksa3IuZS5yPGtyLnMuciYmKGtyLnMucj1rci5lLnIpLGtyLmUuYz5kZS5lLmMmJihrci5lLmM9ZGUuZS5jKSxrci5lLmM8a3Iucy5jJiYoa3Iucy5jPWtyLmUuYyksb2VbIiFmdWxs'@; put 'cmVmIl09b2VbIiFyZWYiXSxvZVsiIXJlZiJdPWh0KGtyKSl9cmV0dXJuIGJ0JiYob2VbIiFzaGVldEZvcm1hdCJdPWZ1bmN0aW9uIGZKKGQpe3ZhciBfPXt9LG09e30sVD0hMSxQPXt9LFE9ITE7cmV0dXJuIGQuZGVmYXVsdFJvd0hlaWdodCYmKFQ9ITAsbS5ocHQ9cGFyc2VGbG9hdChkLmRl'@; put 'ZmF1bHRSb3dIZWlnaHQpKSxkLnplcm9IZWlnaHQmJihUPSEwLG0uaGlkZGVuPVRpKGQuemVyb0hlaWdodCkpLGQuYmFzZUNvbFdpZHRoPyhRPSEwLFAud2NoPXBhcnNlRmxvYXQoZC5iYXNlQ29sV2lkdGgpKTpkLmRlZmF1bHRDb2xXaWR0aCYmKFE9ITAsUC53Y2g9cGFyc2VGbG9hdChkLmRl'@; put 'ZmF1bHRDb2xXaWR0aCktNS9zZCksZC5vdXRsaW5lTGV2ZWxDb2wmJihfLmNvbG91dGxpbmU9cGFyc2VJbnQoZC5vdXRsaW5lTGV2ZWxDb2wpKSxkLm91dGxpbmVMZXZlbFJvdyYmKF8ucm93b3V0bGluZT1wYXJzZUludChkLm91dGxpbmVMZXZlbFJvdykpLGQudGhpY2tCb3R0b20mJihfLmJv'@; put 'dHRoaWNrPVRpKGQudGhpY2tCb3R0b20pKSxkLnRoaWNrVG9wJiYoXy50b3B0aGljaz1UaShkLnRoaWNrVG9wKSksZC5keURlc2NlbnQmJihfLmR5RGVzY2VudD1wYXJzZUZsb2F0KGQuZHlEZXNjZW50KSksVCYmKFdBKG0pLF8ucm93PW0pLFEmJihCMChQKSxfLmNvbD1QKSxffShYcihidFsw'@; put 'XSkpKSxFdC5sZW5ndGg+MCYmKG9lWyIhY29scyJdPUV0KSxubi5sZW5ndGg+MCYmKG9lWyIhbWVyZ2VzIl09bm4pLFRbIiFpZCJdW29lWyIhcmVsIl1dJiYob2VbIiFkcmF3ZWwiXT1UWyIhaWQiXVtvZVsiIXJlbCJdXSksVFsiIWlkIl1bb2VbIiFsZWdyZWwiXV0mJihvZVsiIWxlZ2RyYXdl'@; put 'bCJdPVRbIiFpZCJdW29lWyIhbGVncmVsIl1dKSwob2VbIiFjdHJsaWQiXXx8W10pLmZvckVhY2goZnVuY3Rpb24oRG4pe0RuLnJlbD1UWyIhaWQiXVtEbi5pZF19KSxudWxsPT1vZVsiIWdyaWRsaW5lcyJdJiYob2VbIiFncmlkbGluZXMiXT0hMCksb2V9KGQsVCxtLFAsUSxzZSxvZSl9KFpl'@; put 'LF8sUCxkZSxRW1RdLExlLE5lLEJlKTticmVhaztjYXNlImNoYXJ0IjpudD1mdW5jdGlvbiBBQihkLF8sbSxULFAsUSxzZSxvZSl7cmV0dXJuIi5iaW4iPT09Xy5zbGljZSgtNCk/ZnVuY3Rpb24gZGVlKGQsXyxtLFQsUCl7aWYoIWQpcmV0dXJuIGQ7VHx8KFQ9eyIhaWQiOnt9fSk7dmFyIFE9'@; put 'eyIhdHlwZSI6ImNoYXJ0IiwiIWRyYXdlbCI6bnVsbCwiIXJlbCI6IiJ9LHNlPVtdLG9lPSExO3JldHVybiBJdShkLGZ1bmN0aW9uKExlLE5lLEJlKXtzd2l0Y2goQmUpe2Nhc2UgNTUwOlFbIiFyZWwiXT1MZTticmVhaztjYXNlIDY1MTpQLlNoZWV0c1ttXXx8KFAuU2hlZXRzW21dPXt9KSxM'@; put 'ZS5uYW1lJiYoUC5TaGVldHNbbV0uQ29kZU5hbWU9TGUubmFtZSk7YnJlYWs7Y2FzZSA1NjI6Y2FzZSA2NTI6Y2FzZSA2Njk6Y2FzZSA2Nzk6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA0NzY6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6b2U9ITA7YnJlYWs7Y2FzZSAzNjpvZT0hMTticmVhaztj'@; put 'YXNlIDM3OnNlLnB1c2goTmUpO2JyZWFrO2Nhc2UgMzg6c2UucG9wKCk7YnJlYWs7ZGVmYXVsdDppZigoTmV8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApc2UucHVzaChOZSk7ZWxzZSBpZigoTmV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKXNlLnBvcCgpO2Vsc2UgaWYoIW9lfHxfLldURil0aHJv'@; put 'dyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrQmUrIiAiK05lKX19LF8pLFRbIiFpZCJdW1FbIiFyZWwiXV0mJihRWyIhZHJhd2VsIl09VFsiIWlkIl1bUVsiIXJlbCJdXSksUX0oZCxULG0sUCxRKTpmdW5jdGlvbiBaUyhkLF8sbSxULFApe2lmKCFkKXJldHVybiBkO1R8fChUPXsi'@; put 'IWlkIjp7fX0pO3ZhciBzZSxRPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwiOm51bGwsIiFyZWwiOiIifSxvZT1kLm1hdGNoKExTKTtvZSYmUFMob2VbMF0sMCxQLG0pO3ZhciBkZT1kLm1hdGNoKFZrKTtyZXR1cm4gZGUmJihRWyIhbWFyZ2lucyJdPUJWKFhyKGRlWzBdKSkpLChzZT1kLm1h'@; put 'dGNoKC9kcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKFFbIiFyZWwiXT1zZVsxXSksVFsiIWlkIl1bUVsiIXJlbCJdXSYmKFFbIiFkcmF3ZWwiXT1UWyIhaWQiXVtRWyIhcmVsIl1dKSxRfShkLDAsbSxQLFEpfShaZSxfLFAsZGUsUVtUXSxMZSk7YnJlYWs7Y2FzZSJtYWNybyI6bnQ9ZnVuY3Rp'@; put 'b24gQ2VlKGQsXyl7cmV0dXJuIF8uc2xpY2UoLTQpLHsiIXR5cGUiOiJtYWNybyJ9fSgwLF8pO2JyZWFrO2Nhc2UiZGlhbG9nIjpudD1mdW5jdGlvbiBrQihkLF8pe3JldHVybiBfLnNsaWNlKC00KSx7IiF0eXBlIjoiZGlhbG9nIn19KDAsXyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJy'@; put 'b3IoIlVucmVjb2duaXplZCBzaGVldCB0eXBlICIrb2UpfWlmKGRlLmNhbGxiYWNrKXJldHVybjtzZVtUXT1udCxmdW5jdGlvbiBldGUoZCxfLG0sVCxQLFEsc2Usb2Upe2lmKGQmJmRbIiFkcmF3ZWwiXSl7dmFyIGRlPWhyKGRbIiFkcmF3ZWwiXS5UYXJnZXQsVCksTGU9dmYoZGUpLE5lPWZ1'@; put 'bmN0aW9uIGJRKGQsXyxtLFQsUCl7dmFyIFE9e2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdfTtpZighZClyZXR1cm4gUTt2YXIgc2U9UHx8e307cmV0dXJuKGQubWF0Y2goLzxbXjxdKj8oYWJzb2x1dGVBbmNob3J8b25lQ2VsbEFuY2hvcnx0d29DZWxsQW5jaG9yKS4qPyhhYnNvbHV0'@; put 'ZUFuY2hvcnxvbmVDZWxsQW5jaG9yfHR3b0NlbGxBbmNob3IpLio/Pi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24ob2Upe3ZhciBkZT0iIixMZT17dHlwZToiIn0sTmU9e30sQmU9ITAsWmU9ITEsbnQ9ITEsbXQ9ITEsUWU9e3M6e319LGZ0PS0xLGt0PVtdLGJ0PVtdLEV0PXtzOnthbGlnbm1l'@; put 'bnQ6e2hvcml6b250YWw6ImNlbnRlciIsdmVydGljYWw6ImNlbnRlciJ9fX0sVnQ9IiIsdW49LTEsbm49e307b2UucmVwbGFjZShCbixmdW5jdGlvbihhcixqbil7a3Q9bnVsbDt2YXIga249WHIoYXIpLHNyPWVhKGtuWzBdKS5yZXBsYWNlKC9bXC9dPz4kLywiIik7c3dpdGNoKHNyKXtjYXNl'@; put 'IjxjbGllbnREYXRhIjpicmVhaztjYXNlIjxhYnNvbHV0ZUFuY2hvciI6Y2FzZSI8b25lQ2VsbEFuY2hvciI6Y2FzZSI8dHdvQ2VsbEFuY2hvciI6TGUudHlwZT1lYShrblswXSkucmVwbGFjZSgvWzw+XS9nLCIiKTticmVhaztjYXNlIjwvYWJzb2x1dGVBbmNob3IiOmNhc2UiPC9vbmVDZWxs'@; put 'QW5jaG9yIjpjYXNlIjwvdHdvQ2VsbEFuY2hvciI6YnJlYWs7Y2FzZSI8cG9zIjpMZS5wb3M9e3g6K2tuLngseTora24ueX07YnJlYWs7Y2FzZSI8ZXh0IjpCZSYmKExlLmV4dD17eDora24uY3gseTora24uY3l9KTticmVhaztjYXNlIjxmcm9tIjpjYXNlIjx0byI6TmU9e307YnJlYWs7Y2Fz'@; put 'ZSI8L2Zyb20iOkJlJiYoTGUuZnJvbT1OZSk7YnJlYWs7Y2FzZSI8L3RvIjpCZSYmKExlLnRvPU5lKTticmVhaztjYXNlIjxjb2wiOmNhc2UiPGNvbE9mZiI6Y2FzZSI8cm93IjpjYXNlIjxyb3dPZmYiOmZ0PWpuK2FyLmxlbmd0aDticmVhaztjYXNlIjwvY29sIjpOZS5jPStvZS5zbGljZShm'@; put 'dCxqbik7YnJlYWs7Y2FzZSI8L2NvbE9mZiI6TmUuY09mZj0rb2Uuc2xpY2UoZnQsam4pO2JyZWFrO2Nhc2UiPC9yb3ciOk5lLnI9K29lLnNsaWNlKGZ0LGpuKTticmVhaztjYXNlIjwvcm93T2ZmIjpOZS5yT2ZmPStvZS5zbGljZShmdCxqbik7YnJlYWs7Y2FzZSI8c3AiOmRlPSJzaGFwZSIs'@; put 'RXQuQW5jaG9yPUxlLFEuc2hhcGVzLnB1c2goRXQpLEJlPSExO2JyZWFrO2Nhc2UiPC9zcCI6QmU9ITA7YnJlYWs7Y2FzZSI8Z3JhcGhpY0ZyYW1lIjpkZT0iZ3JhcGhpYyIsQmU9ITE7YnJlYWs7Y2FzZSI8L2dyYXBoaWNGcmFtZSI6QmU9ITA7YnJlYWs7Y2FzZSI8cGljIjpkZT0icGljdHVy'@; put 'ZSIsQmU9ITE7YnJlYWs7Y2FzZSI8L3BpYyI6QmU9ITA7YnJlYWs7Y2FzZSI8Z3JwU3AiOmRlPSJncm91cHNoYXBlIixCZT0hMTticmVhaztjYXNlIjwvZ3JwU3AiOkJlPSEwO2JyZWFrO2Nhc2UiPGdyYXBoaWMiOmNhc2UiPC9ncmFwaGljIjpjYXNlIjx4ZnJtIjpjYXNlIjwveGZybSI6Y2Fz'@; put 'ZSI8b2ZmIjpicmVhaztjYXNlIjxncmFwaGljRGF0YSI6WmU9ITA7YnJlYWs7Y2FzZSI8L2dyYXBoaWNEYXRhIjpaZT0hMTticmVhaztjYXNlIjxibGlwRmlsbCI6WmU9ITA7YnJlYWs7Y2FzZSI8L2JsaXBGaWxsIjpaZT0hMTticmVhaztjYXNlIjwvYmxpcCI6YnJlYWs7Y2FzZSI8c3JjUmVj'@; put 'dCI6WmU9ITA7YnJlYWs7Y2FzZSI8L3NyY1JlY3QiOlplPSExO2JyZWFrO2Nhc2UiPG5vRmlsbCI6aWYobnQpYnJlYWs7IjxzcFByIj09YnQuc2xpY2UoLTEpWzBdJiYoRXQucy5mZ0NvbG9yPW51bGwpO2JyZWFrO2Nhc2UiPC9zb2xpZEZpbGwiOmlmKG50fHxtdClicmVhazsiPHNwUHIiPT1i'@; put 'dC5zbGljZSgtMilbMF0/RXQucy5mZ0NvbG9yPW5uOiI8clByIj09YnQuc2xpY2UoLTIpWzBdJiZidC5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihRZS5zLmNvbG9yPW5uKSxubj17fSxtdD0hMTticmVhaztjYXNlIjxwcnN0R2VvbSI6InNoYXBlIj09ZGUmJihFdFsiIXNoYXBlIl09a24ucHJz'@; put 'dCk7YnJlYWs7Y2FzZSI8L3Byc3RHZW9tIjpjYXNlIjxhdkxzdCI6YnJlYWs7Y2FzZSI8dHhCb2R5IjpaZT0hMCxFdC5SPVtdO2JyZWFrO2Nhc2UiPC90eEJvZHkiOlplPSExO2JyZWFrO2Nhc2UiPGJvZHlQciI6RXQucy5hbGlnbm1lbnQudmVydGljYWw9V0hba24uYW5jaG9yfHwidCJdfHwi'@; put 'dG9wIjticmVhaztjYXNlIjxsc3RTdHlsZSI6YnJlYWs7Y2FzZSI8dCI6dW49am4rYXIubGVuZ3RoO2JyZWFrO2Nhc2UiPGJyIjpjYXNlIjxici8+IjpWdCs9IlxuIjticmVhaztjYXNlIjwvdCI6VnQrPW9lLnNsaWNlKHVuLGpuKTticmVhaztjYXNlIjxwUHIiOkV0LnMuYWxpZ25tZW50Lmhv'@; put 'cml6b250YWx8fChFdC5zLmFsaWdubWVudC5ob3Jpem9udGFsPUV5W2tuLmFsZ258fCJsIl18fCJsZWZ0IiksYnQuaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYoUWUucy5hbGlnbm1lbnQuaG9yaXpvbnRhbD1FeVtrbi5hbGdufHwibCJdfHwibGVmdCIpO2JyZWFrO2Nhc2UiPHJQciI6a24uc3om'@; put 'JmJ0LmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKEV0LnMuc3o9UWUucy5zej0ra24uc3ovMTAwKTticmVhaztjYXNlIjxwIjpWdD0iIixRZT17dDoicyIsdjoiIixzOnthbGlnbm1lbnQ6e319fTticmVhaztjYXNlIjwvcCI6InNoYXBlIj09ZGUmJmJ0LmluZGV4T2YoIjx0eEJvZHkiKT4tMSYm'@; put 'KEV0LnY9KEV0LnZ8fCIiKStWdCxRZS52PVZ0LEV0LlIucHVzaChRZSkpO2JyZWFrO2Nhc2UiPGxhdGluIjprbi50eXBlZmFjZSYmYnQuaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYoUWUucy5uYW1lPWtuLnR5cGVmYWNlKTticmVhaztjYXNlIjxzdHlsZSI6WmU9ITAsbnQ9ITA7YnJlYWs7Y2Fz'@; put 'ZSI8L3N0eWxlIjpaZT0hMSxudD0hMTticmVhaztjYXNlIjxsblJlZiI6Y2FzZSI8ZmlsbFJlZiI6Y2FzZSI8ZWZmZWN0UmVmIjpjYXNlIjxmb250UmVmIjpicmVhaztjYXNlIjwvZmlsbFJlZiI6IW50JiYic2hhcGUiPT1kZSYmKEV0LnMuZmdDb2xvcj1ubiksbm49e307YnJlYWs7Y2FzZSI8'@; put 'L2ZvbnRSZWYiOiFudCYmInNoYXBlIj09ZGUmJihFdC5zLmNvbG9yPW5uKSxubj17fTticmVhaztjYXNlIjxzY2hlbWVDbHIiOnZhciBncj17YmcxOiJsdDEiLGJnMjoibHQyIix0eDE6ImRrMSIsdHgyOiJkazIifVtrbi52YWxdfHxrbi52YWwscW49KChULnRoZW1lRWxlbWVudHN8fHt9KS5j'@; put 'bHJTY2hlbWV8fFtdKS5maW5kKGZ1bmN0aW9uKE9pKXtyZXR1cm4gT2kubmFtZT09Z3J9KTtxbj9ubi5yZ2I9cW4ucmdiOm10PSEwO2JyZWFrO2Nhc2UiPHNjcmdiQ2xyIjptdD0hMDticmVhaztjYXNlIjxzcmdiQ2xyIjpubi5yZ2I9a24udmFsLnNsaWNlKC02KTticmVhaztjYXNlIjxoc2xD'@; put 'bHIiOmNhc2UiPHN5c0NsciI6Y2FzZSI8cHJzdENsciI6bXQ9ITA7YnJlYWs7Y2FzZSI8Y2hhcnQiOmt0PVEuY2hhcnRzO3ZhciBfaT1rbi5pZDtjYXNlIjxibGlwIjprdHx8KGt0PVEuaW1hZ2VzLF9pPWtuLmVtYmVkKSxrdC5wdXNoKHtBbmNob3I6TGUsVGFyZ2V0OihfWyIhaWQiXVtfaV18'@; put 'fHt9KS5UYXJnZXR9KSxrbi5saW5rJiYoa3Rba3QubGVuZ3RoLTFdLkxpbms9KF9bIiFpZCJdW2tuLmxpbmtdfHx7fSkuVGFyZ2V0KTticmVhaztjYXNlIjxncnBTcFByIjpaZT0hMDticmVhaztjYXNlIjwvZ3JwU3BQciI6WmU9ITE7YnJlYWs7Y2FzZSI8bnZHcnBTcFByIjpaZT0hMDticmVh'@; put 'aztjYXNlIjwvbnZHcnBTcFByIjpaZT0hMTticmVhaztjYXNlIjxzcFByIjpaZT0hMDticmVhaztjYXNlIjwvc3BQciI6WmU9ITE7YnJlYWs7Y2FzZSI8c3RyZXRjaCI6Y2FzZSI8L3N0cmV0Y2giOmNhc2UiPGZpbGxSZWN0IjpjYXNlIjxudkdyYXBoaWNGcmFtZVByIjpjYXNlIjwvbnZHcmFw'@; put 'aGljRnJhbWVQciI6Y2FzZSI8Y052R3JhcGhpY0ZyYW1lUHIiOmNhc2UiPC9jTnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8Z3JhcGhpY0ZyYW1lTG9ja3MiOmNhc2UiPG52UGljUHIiOmNhc2UiPC9udlBpY1ByIjpjYXNlIjxjTnZQaWNQciI6Y2FzZSI8L2NOdlBpY1ByIjpjYXNlIjxwaWNMb2Nr'@; put 'cyI6Y2FzZSI8Y052R3JwU3BQciI6Y2FzZSI8L2NOdkdycFNwUHIiOmNhc2UiPGdycFNwTG9ja3MiOmNhc2UiPG52U3BQciI6Y2FzZSI8L252U3BQciI6Y2FzZSI8Y052U3BQciI6Y2FzZSI8L2NOdlNwUHIiOmNhc2UiPHNwTG9ja3MiOmJyZWFrO2Nhc2UiPGNOdlByIjpaZT0hMDticmVhaztj'@; put 'YXNlIjwvY052UHIiOlplPSExO2JyZWFrO2Nhc2UiPGN4blNwIjpaZT0hMDticmVhaztjYXNlIjwvY3huU3AiOlplPSExO2JyZWFrO2Nhc2UiPGNOdkN4blNwUHIiOlplPSEwO2JyZWFrO2Nhc2UiPC9jTnZDeG5TcFByIjpaZT0hMTticmVhaztjYXNlIjxudkN4blNwUHIiOmNhc2UiPC9udkN4'@; put 'blNwUHIiOmJyZWFrO2Nhc2UiPGV4dExzdCI6WmU9ITAsbnQ9ITA7YnJlYWs7Y2FzZSI8L2V4dExzdCI6WmU9ITEsbnQ9ITE7YnJlYWs7Y2FzZSI8L2V4dCI6YnJlYWs7ZGVmYXVsdDppZihzZSYmc2UuV1RGJiYhWmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitrblswXSsiIGlu'@; put 'IGRyYXdpbmciKX1yZXR1cm4iPC8iPT1zci5zbGljZSgwLDIpP2J0LnBvcCgpOiIvPiIhPWFyLnNsaWNlKGFyLmxlbmd0aC0yKSYmYnQucHVzaChzciksIiJ9KX0pLFF9KHZyKG0sZGUsITApLEx1KHZyKG0sTGUsITApLGRlKSwwLG9lLFApO2lmKE5lKXtpZihOZS5jaGFydHMpZm9yKHZhciBC'@; put 'ZT0wO0JlPE5lLmNoYXJ0cy5sZW5ndGg7KytCZSl7dmFyIFplPU5lLmNoYXJ0c1tCZV0sbnQ9aHIoWmUuVGFyZ2V0LGRlKSxtdD12ZihudCksUWU9ImNoYXJ0Ij09XyYmMD09QmUsZnQ9VnkodnIobSxudCwhMCksMCwwLEx1KHZyKG0sbXQsITApLG50KSwwLFFlP2Q6bnVsbCxaZSxRZT9udWxs'@; put 'OmQpO1FlfHwoZFsiIWNoYXJ0cyJdfHwoZFsiIWNoYXJ0cyJdPVtdKSxkWyIhY2hhcnRzIl0ucHVzaChmdCkpfWlmKFAuYm9va0ltYWdlcyYmTmUuaW1hZ2VzKWZvcih2YXIga3Q9MDtrdDxOZS5pbWFnZXMubGVuZ3RoOysra3Qpe3ZhciBidD1OZS5pbWFnZXNba3RdLEV0PXsiIXR5cGUiOiJp'@; put 'bWFnZSIsIiFwb3MiOmZRKGJ0LkFuY2hvciksIiFwb3NUeXBlIjpidC5BbmNob3IudHlwZS5yZXBsYWNlKC9BbmNob3IvLCIiKSwiIWFic3BvcyI6RDkoYnQuQW5jaG9yLGQpLCIhcmVscG9zIjp3NShidC5BbmNob3IsZCl9O2lmKGJ0LlRhcmdldCYmKEV0WyIhcGF0aCJdPWhyKGJ0LlRhcmdl'@; put 'dCxkZSksRXRbIiFkYXRhIl09VXQobSxFdFsiIXBhdGgiXSksRXRbIiFkYXRhdHlwZSJdPSJzdHJpbmciPT10eXBlb2YgRXRbIiFkYXRhIl0/ImJpbmFyeSI6ImJ1ZmZlciIpLGJ0LkxpbmsmJihFdFsiIWRhdGF0eXBlIl18fChFdFsiIWRhdGF0eXBlIl09InJlbW90ZSIpLEV0WyIhbGluayJd'@; put 'PWJ0LkxpbmspLCFFdFsiIWRhdGF0eXBlIl0pdGhyb3ciSW1hZ2UgZGF0YSBjYW5ub3QgYmUgZm91bmQiO2RbIiFpbWFnZXMiXXx8KGRbIiFpbWFnZXMiXT1bXSksZFsiIWltYWdlcyJdLnB1c2goRXQpfXZhciBWdCx1bjtpZihOZS5zaGFwZXMpZm9yKHZhciBubj0wO25uPE5lLnNoYXBlcy5s'@; put 'ZW5ndGg7Kytubil1bj17IiF0eXBlIjoic2hhcGUiLCIhcG9zIjpEOSgoVnQ9TmUuc2hhcGVzW25uXSkuQW5jaG9yLGQpLCIhcG9zVHlwZSI6VnQuQW5jaG9yLnR5cGUucmVwbGFjZSgvQW5jaG9yLywiIiksIiFhYnNwb3MiOkQ5KFZ0LkFuY2hvcixkKSwiIXJlbHBvcyI6dzUoVnQuQW5jaG9y'@; put 'LGQpfSxbInYiLCIhc2hhcGUiLCJzIiwiUiJdLmZvckVhY2gobnIpLGRbIiFzaGFwZXMiXXx8KGRbIiFzaGFwZXMiXT1bXSksZFsiIXNoYXBlcyJdLnB1c2godW4pfX1mdW5jdGlvbiBucihhcil7VnRbYXJdJiYodW5bYXJdPVZ0W2FyXSl9fShudCxvZSxkLF8sZGUsMCwwLE5lKTt2YXIgbXQ9'@; put 'W107cmV0dXJuIFEmJlFbVF0mJkZlKFFbVF0pLmZvckVhY2goZnVuY3Rpb24oUWUpe2lmKFFbVF1bUWVdLlR5cGU9PXVhLkNNTlQpe3ZhciBmdD1ocihRW1RdW1FlXS5UYXJnZXQsXyk7aWYoIShtdD1mdW5jdGlvbiBSQihkLF8sbSl7cmV0dXJuIi5iaW4iPT09Xy5zbGljZSgtNCk/ZnVuY3Rp'@; put 'b24ga1EoZCxfKXt2YXIgbT1bXSxUPVtdLFA9e30sUT0hMTtyZXR1cm4gSXUoZCxmdW5jdGlvbihvZSxkZSxMZSl7c3dpdGNoKExlKXtjYXNlIDYzMjpULnB1c2gob2UpO2JyZWFrO2Nhc2UgNjM1OlA9b2U7YnJlYWs7Y2FzZSA2Mzc6UC50PW9lLnQsUC5oPW9lLmgsUC5yPW9lLnI7YnJlYWs7'@; put 'Y2FzZSA2MzY6aWYoUC5hdXRob3I9VFtQLmlhdXRob3JdLGRlbGV0ZSBQLmlhdXRob3IsXy5zaGVldFJvd3MmJlAucmZ4JiZfLnNoZWV0Um93czw9UC5yZngucilicmVhaztQLnR8fChQLnQ9IiIpLGRlbGV0ZSBQLnJmeCxtLnB1c2goUCk7YnJlYWs7Y2FzZSAzMDcyOmNhc2UgMzc6Y2FzZSAz'@; put 'ODpicmVhaztjYXNlIDM1OlE9ITA7YnJlYWs7Y2FzZSAzNjpRPSExO2JyZWFrO2RlZmF1bHQ6aWYoISgoZGV8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApJiYhKChkZXx8IiIpLmluZGV4T2YoIkVuZCIpPjApJiYoIVF8fF8uV1RGKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3Jk'@; put 'ICIrTGUrIiAiK2RlKX19KSxtfShkLG0pOmZ1bmN0aW9uIE1RKGQsXyl7aWYoZC5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRzICpcLz4vKSlyZXR1cm5bXTt2YXIgbT1bXSxUPVtdLFA9ZC5tYXRjaCgvPCg/Olx3KzopP2F1dGhvcnM+KFtcc1xTXSopPFwvKD86XHcrOik/YXV0aG9ycz4vKTtQ'@; put 'JiZQWzFdJiZQWzFdLnNwbGl0KC88XC9cdyo6P2F1dGhvcj4vKS5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtpZigiIiE9PXNlJiYiIiE9PXNlLnRyaW0oKSl7dmFyIG9lPXNlLm1hdGNoKC88KD86XHcrOik/YXV0aG9yW14+XSo+KC4qKS8pO29lJiZtLnB1c2gob2VbMV0pfX0pO3ZhciBRPWQubWF0'@; put 'Y2goLzwoPzpcdys6KT9jb21tZW50TGlzdD4oW1xzXFNdKik8XC8oPzpcdys6KT9jb21tZW50TGlzdD4vKTtyZXR1cm4gUSYmUVsxXSYmUVsxXS5zcGxpdCgvPFwvXHcqOj9jb21tZW50Pi8pLmZvckVhY2goZnVuY3Rpb24oc2Upe2lmKCIiIT09c2UmJiIiIT09c2UudHJpbSgpKXt2YXIgb2U9'@; put 'c2UubWF0Y2goLzwoPzpcdys6KT9jb21tZW50W14+XSo+Lyk7aWYob2Upe3ZhciBkZT1YcihvZVswXSksTGU9e2F1dGhvcjpkZS5hdXRob3JJZCYmbVtkZS5hdXRob3JJZF18fCJzaGVldGpzZ2hvc3QiLHJlZjpkZS5yZWYsZ3VpZDpkZS5ndWlkfSxOZT1JcyhkZS5yZWYpO2lmKCEoXy5zaGVl'@; put 'dFJvd3MmJl8uc2hlZXRSb3dzPD1OZS5yKSl7dmFyIEJlPXNlLm1hdGNoKC88KD86XHcrOik/dGV4dD4oW1xzXFNdKik8XC8oPzpcdys6KT90ZXh0Pi8pLFplPSEhQmUmJiEhQmVbMV0mJkVzKEJlWzFdKXx8e3I6IiIsdDoiIixoOiIifTtMZS5yPVplLnIsIjx0PjwvdD4iPT1aZS5yJiYoWmUu'@; put 'dD1aZS5oPSIiKSxMZS50PShaZS50fHwiIikucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UoL1xyL2csIlxuIiksXy5jZWxsSFRNTCYmKExlLmg9WmUuaCksVC5wdXNoKExlKX19fX0pLFR9KGQsbSl9KFV0KGQsZnQsITApLGZ0LGRlKSl8fCFtdC5sZW5ndGgpcmV0dXJuOyFmdW5jdGlv'@; put 'biBaSChkLF8pe3ZhciBULG09QXJyYXkuaXNBcnJheShkKTtfLmZvckVhY2goZnVuY3Rpb24oUCl7dmFyIFE9SXMoUC5yZWYpO2lmKG0/KGRbUS5yXXx8KGRbUS5yXT1bXSksVD1kW1Eucl1bUS5jXSk6VD1kW1AucmVmXSwhVCl7VD17dDoieiJ9LG0/ZFtRLnJdW1EuY109VDpkW1AucmVmXT1U'@; put 'O3ZhciBzZT15dChkWyIhcmVmIl18fCJCRFdHTzEwMDAwMDE6QTEiKTtzZS5zLnI+US5yJiYoc2Uucy5yPVEuciksc2UuZS5yPFEuciYmKHNlLmUucj1RLnIpLHNlLnMuYz5RLmMmJihzZS5zLmM9US5jKSxzZS5lLmM8US5jJiYoc2UuZS5jPVEuYyk7dmFyIG9lPWh0KHNlKTtvZSE9PWRbIiFy'@; put 'ZWYiXSYmKGRbIiFyZWYiXT1vZSl9VC5jfHwoVC5jPVtdKTt2YXIgZGU9e2E6UC5hdXRob3IsdDpQLnQscjpQLnJ9O2RlLnImJiJzdHJpbmciPT10eXBlb2YgZGUuciYmKGRlLlI9bXkoZGUucikpLFAuaCYmKGRlLmg9UC5oKSxULmMucHVzaChkZSl9KX0obnQsbXQpfX0pLGZ1bmN0aW9uIG50'@; put 'ZShkLF8sbSxULFAsUSxzZSl7IWR8fCFkWyIhdGFibGVyZWZzIl18fCFtfHwhbVsiIWlkIl18fChkWyIhdGFibGVzIl09W10sZFsiIXRhYmxlcmVmcyJdLmZvckVhY2goZnVuY3Rpb24ob2Upe3ZhciBkZT1tWyIhaWQiXVtvZV07aWYoZGUmJmRlLlRhcmdldCl7dmFyIExlPWhyKGRlLlRhcmdl'@; put 'dCxUKTshZnVuY3Rpb24gc2soZCxfLG0sVCxQKXt2YXIgUT17c3R5bGU6e30saGVhZGVyOjB9LHNlPSExO2QucmVwbGFjZShCbixmdW5jdGlvbihvZSl7dmFyIGRlPVhyKG9lKTtzd2l0Y2goZWEoZGVbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjwvdGFibGU+IjpjYXNlIjwvYXV0b0ZpbHRlcj4i'@; put 'OmNhc2UiPHNvcnRTdGF0ZSI6Y2FzZSI8c29ydFN0YXRlPiI6Y2FzZSI8L3NvcnRTdGF0ZT4iOmNhc2UiPC90YWJsZUNvbHVtbnMiOmNhc2UiPC90YWJsZUNvbHVtbnM+IjpjYXNlIjwvdGFibGVDb2x1bW4+IjpjYXNlIjxjYWxjdWxhdGVkQ29sdW1uRm9ybXVsYT4iOmNhc2UiPGNhbGN1bGF0'@; put 'ZWRDb2x1bW5Gb3JtdWxhIjpjYXNlIjwvY2FsY3VsYXRlZENvbHVtbkZvcm11bGE+IjpjYXNlIjx0b3RhbHNSb3dGb3JtdWxhPiI6Y2FzZSI8dG90YWxzUm93Rm9ybXVsYSI6Y2FzZSI8L3RvdGFsc1Jvd0Zvcm11bGE+IjpjYXNlIjx4bWxDb2x1bW5Qcj4iOmNhc2UiPHhtbENvbHVtblByIjpj'@; put 'YXNlIjwveG1sQ29sdW1uUHI+IjpjYXNlIjxzb3J0Q29uZGl0aW9uPiI6Y2FzZSI8c29ydENvbmRpdGlvbiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmJyZWFrO2Nhc2UiPHRhYmxlIjpkZS5yZWYmJihRLnJlZj1kZS5yZWYp'@; put 'LGRlLm5hbWU/US5uYW1lPWRlLm5hbWU6ZGUuZGlzcGxheU5hbWUmJihRLm5hbWU9ZGUuZGlzcGxheU5hbWUpLG51bGwhPWRlLmhlYWRlcnJvd2NvdW50JiYxIT0rZGUuaGVhZGVycm93Y291bnQ/US5oZWFkZXI9K2RlLmhlYWRlcnJvd2NvdW50Om51bGw9PWRlLmhlYWRlcnJvd2NvdW50JiYo'@; put 'US5oZWFkZXI9MSk7YnJlYWs7Y2FzZSI8YXV0b0ZpbHRlciI6Y2FzZSI8YXV0b0ZpbHRlcj4iOlEuZmlsdGVyPSEwO2JyZWFrO2Nhc2UiPHRhYmxlQ29sdW1ucyI6Y2FzZSI8dGFibGVDb2x1bW5zPiI6US5jb2xzPVtdO2JyZWFrO2Nhc2UiPHRhYmxlU3R5bGVJbmZvIjpkZS5zaG93Um93U3Ry'@; put 'aXBlcyYmKFEuc3R5bGUucm93c3RyaXBlPVRpKGRlLnNob3dSb3dTdHJpcGVzKSksZGUuc2hvd0NvbHVtblN0cmlwZXMmJihRLnN0eWxlLmNvbHN0cmlwZT1UaShkZS5zaG93Q29sdW1uU3RyaXBlcykpLGRlLnNob3dGaXJzdENvbHVtbiYmKFEuc3R5bGUuY29sZmlyc3Q9VGkoZGUuc2hvd0Zp'@; put 'cnN0Q29sdW1uKSksZGUuc2hvd0xhc3RDb2x1bW4mJihRLnN0eWxlLmNvbGxhc3Q9VGkoZGUuc2hvd0xhc3RDb2x1bW4pKSxkZS5uYW1lJiYoUS5zdHlsZS5uYW1lPWRlLm5hbWUucmVwbGFjZSgvXlRhYmxlU3R5bGUvLCIiKSk7YnJlYWs7Y2FzZSI8dGFibGVDb2x1bW4iOmNhc2UiPHRhYmxl'@; put 'Q29sdW1uPiI6US5jb2xzLnB1c2goe2lkOitkZS5pZCxuYW1lOmRlLm5hbWV9KTticmVhaztjYXNlIjxmaWx0ZXJDb2x1bW4+IjpjYXNlIjxmaWx0ZXJDb2x1bW4iOmNhc2UiPGN1c3RvbUZpbHRlcnMiOmNhc2UiPGN1c3RvbUZpbHRlcnM+IjpjYXNlIjxleHQiOnNlPSEwO2JyZWFrO2Nhc2Ui'@; put 'PC9maWx0ZXJDb2x1bW4+IjpjYXNlIjwvY3VzdG9tRmlsdGVycz4iOmNhc2UiPC9leHQ+IjpzZT0hMTticmVhaztkZWZhdWx0OmlmKCFzZSYmUC5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitkZVswXSsiIGluIHRhYmxlIil9cmV0dXJuIG9lfSksUS5maWx0ZXJ8fChRLmZp'@; put 'bHRlcj0hMSksUS5zdHlsZS5uYW1lJiYhUS5zdHlsZS5uYW1lLm1hdGNoKC9eKExpZ2h0fE1lZGl1bXxEYXJrKVxkKyQvKSYmbS5UYWJsZSYmbS5UYWJsZS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXsob2UubmFtZT09US5zdHlsZS5uYW1lfHxvZS5yYXduYW1lPT1RLnN0eWxlLm5hbWUpJiYoUS5z'@; put 'dHlsZS5yYXc9UXIob2UpKX0pLF9bIiF0YWJsZXMiXS5wdXNoKFEpfShVdChfLExlLCEwKSxkLFAsMCxzZSl9fSksZGVsZXRlIGRbIiF0YWJsZXJlZnMiXSl9KG50LGQsUVtUXSxfLEJlLDAsZGUpLHR5cGVvZiBwYXJzZV9zaGVldF9waXZvdDwidSImJko5LnB1c2goW250LGQsUVtUXSxfLHtT'@; put 'aGVldHM6c2V9LEJlLGRlXSksZnVuY3Rpb24gdHRlKGQsXyxtLFQsUCxRLHNlLG9lKXtpZihkJiZkWyIhbGVnZHJhd2VsIl0pe3ZhciBkZT1ocihkWyIhbGVnZHJhd2VsIl0uVGFyZ2V0LFQpLExlPXZyKG0sZGUsITApO0xlJiZmdW5jdGlvbiBFUShkLF8sbSl7dmFyIFQ9MDsoZC5tYXRjaChT'@; put 'USl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFApe3ZhciBrdCxidCxFdCxWdCx1bixucixubixhcixRPSIiLHNlPSEwLG9lPSIiLGRlPS0xLExlPXt9LE5lPXt9LEJlPXt9LFplPS0xLG50PS0xLG10PSIiLFFlPSIiLGZ0PSIiLGpuPSExLGtuPSExO3N3aXRjaChQLnJlcGxhY2UoQm4sZnVuY3Rp'@; put 'b24ocW4sX2kpe3ZhciBPaT1Ycihxbik7c3dpdGNoKGVhKE9pWzBdKSl7Y2FzZSI8c2hhcGUiOk9pLmZpbGxjb2xvciYmKExlLmNvbG9yMT1PaS5maWxsY29sb3IpLE9pLnN0cm9rZWNvbG9yJiYoQmUuY29sb3I9T2kuc3Ryb2tlY29sb3IpO2JyZWFrO2Nhc2UiPGZpbGwiOmNhc2UiPGZpbGw+'@; put 'IjoiPHY6ZmlsbCI9PU9pWzBdJiYoT2kuY29sb3IyJiYoTGUuY29sb3IyPU9pLmNvbG9yMiksT2kudHlwZSYmKExlLnR5cGU9T2kudHlwZSkpO2JyZWFrO2Nhc2UiPC9maWxsPiI6Y2FzZSI8bG9jayI6Y2FzZSI8bG9jay8+IjpicmVhaztjYXNlIjxzaGFkb3ciOk9pLmNvbG9yJiYoTmUuY29s'@; put 'b3I9T2kuY29sb3IpLE9pLm9uJiYoTmUub249T2kub24pO2JyZWFrO2Nhc2UiPENsaWVudERhdGEiOk9pLk9iamVjdFR5cGUmJihRPU9pLk9iamVjdFR5cGUpO2JyZWFrO2Nhc2UiPFZpc2libGUiOmNhc2UiPFZpc2libGUvPiI6c2U9ITE7YnJlYWs7Y2FzZSI8QW5jaG9yIjpjYXNlIjxBbmNo'@; put 'b3I+IjpjYXNlIjxSb3ciOmNhc2UiPFJvdz4iOmNhc2UiPENvbHVtbiI6Y2FzZSI8Q29sdW1uPiI6Y2FzZSI8Rm1sYU1hY3JvIjpjYXNlIjxGbWxhTWFjcm8+IjpjYXNlIjxGbWxhTGluayI6Y2FzZSI8Rm1sYUxpbms+IjpjYXNlIjxGbWxhUmFuZ2UiOmNhc2UiPEZtbGFSYW5nZT4iOmNhc2Ui'@; put 'PFNlbFR5cGUiOmNhc2UiPFNlbFR5cGU+IjpjYXNlIjxWYWwiOmNhc2UiPFZhbD4iOmNhc2UiPE1pbiI6Y2FzZSI8TWluPiI6Y2FzZSI8TWF4IjpjYXNlIjxNYXg+IjpjYXNlIjxJbmMiOmNhc2UiPEluYz4iOmNhc2UiPFBhZ2UiOmNhc2UiPFBhZ2U+IjpjYXNlIjxDaGVja2VkIjpjYXNlIjxD'@; put 'aGVja2VkPiI6Y2FzZSI8dGV4dGJveCI6Y2FzZSI8dGV4dGJveD4iOmRlPV9pK3FuLmxlbmd0aDticmVhaztjYXNlIjwvQW5jaG9yPiI6b2U9UC5zbGljZShkZSxfaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9Sb3c+IjpaZT0rUC5zbGljZShkZSxfaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9Db2x1'@; put 'bW4+IjpudD0rUC5zbGljZShkZSxfaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9GbWxhTWFjcm8+IjptdD1QLnNsaWNlKGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8L0ZtbGFMaW5rPiI6UWU9UC5zbGljZShkZSxfaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9GbWxhUmFuZ2U+Ijpubj1QLnNsaWNl'@; put 'KGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8L1NlbFR5cGU+Ijphcj1QLnNsaWNlKGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8L1ZhbD4iOmt0PStQLnNsaWNlKGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8L01pbj4iOmJ0PStQLnNsaWNlKGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8'@; put 'L01heD4iOkV0PStQLnNsaWNlKGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8L0luYz4iOlZ0PStQLnNsaWNlKGRlLF9pKS50cmltKCk7YnJlYWs7Y2FzZSI8L1BhZ2U+Ijp1bj0rUC5zbGljZShkZSxfaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9DaGVja2VkPiI6bnI9K1Auc2xpY2UoZGUsX2kp'@; put 'LnRyaW0oKTticmVhaztjYXNlIjwvdGV4dGJveD4iOmZ0PVAuc2xpY2UoZGUsX2kpLnRyaW0oKTticmVhaztjYXNlIjxNb3ZlV2l0aENlbGxzLz4iOmNhc2UiPE1vdmVXaXRoQ2VsbHM+Ijpqbj0hMDticmVhaztjYXNlIjxTaXplV2l0aENlbGxzLz4iOmNhc2UiPFNpemVXaXRoQ2VsbHM+Ijpr'@; put 'bj0hMH1yZXR1cm4iIn0pLFEpe2Nhc2UiTm90ZSI6dmFyIHNyPVUxLnNoZWV0X2dldF9jZWxsKF8sWmU+PTAmJm50Pj0wP3FpKHtyOlplLGM6bnR9KTptW1RdLnJlZik7c3IuYyYmKHNyLmMuaGlkZGVuPXNlLG9lJiYoc3IuYy5yYXdhbmNob3I9b2Usakgob2Usc3IuYykscmsoc3IuY1siIXBv'@; put 'cyJdLDIqISFqbishIWtuLF8pKSxMZS5jb2xvcjEmJihzci5jLmZpbGw9TGUpLE5lLmNvbG9yJiYoc3IuYy5zaGFkb3c9TmUpLEJlLmNvbG9yJiYoc3IuYy5zdHJva2U9QmUpKSwrK1Q7YnJlYWs7Y2FzZSJCdXR0b24iOmNhc2UiR0JveCI6Y2FzZSJEcm9wIjpjYXNlIkxhYmVsIjpjYXNlIkNo'@; put 'ZWNrYm94IjpjYXNlIlNjcm9sbCI6Y2FzZSJMaXN0IjpjYXNlIlJhZGlvIjpjYXNlIlNwaW4iOmNhc2UiRWRpdCI6X1siIWNvbnRyb2xzIl18fChfWyIhY29udHJvbHMiXT1bXSk7dmFyIGdyPXsiIXR5cGUiOlF9O29lJiZqSChvZSxnciksbXQmJihnci5tYWNybz1tdC5yZXBsYWNlKCJbMF0h'@; put 'IiwiIikpLFFlJiYoZ3IubGluaz1RZSksIlNjcm9sbCI9PVF8fCJTcGluIj09UT8obnVsbD09a3QmJihrdD0wKSxudWxsPT1idCYmKGJ0PTApLG51bGw9PUV0JiYoRXQ9M2U0KSxudWxsPT1WdCYmKFZ0PTEpLCJTY3JvbGwiPT1RJiZudWxsPT11biYmKHVuPTEwKSk6IlJhZGlvIj09UXx8IkNo'@; put 'ZWNrYm94Ij09UT8obnVsbD09bnImJihucj0wKSxrdD1ucik6KCJMaXN0Ij09UXx8IkRyb3AiPT1RKSYmKG51bGwhPW5uJiYoZ3IucmVmPW5uKSxudWxsPT1hciYmKGFyPSJTaW5nbGUiKSwiTGlzdCI9PVEmJihnci5zZWw9YXIpKSxudWxsIT1rdCYmKGdyLnZhbD1rdCksbnVsbCE9YnQmJihn'@; put 'ci5taW49YnQpLG51bGwhPUV0JiYoZ3IubWF4PUV0KSxudWxsIT1WdCYmKGdyLnN0ZXA9VnQpLG51bGwhPXVuJiYoZ3IucGFnZT11biksZnQmJihnci50PWZ0LnJlcGxhY2UoL1xzKjxbXHNcU10qPz5ccyovZywiIikpLF9bIiFjb250cm9scyJdLnB1c2goZ3IpfX0pfShXbihMZSksZCxvZXx8'@; put 'W10pLGRbIiFMRFAiXT1kZSxkWyIhY3RybGlkIl0mJmRbIiFjdHJsaWQiXS5mb3JFYWNoKGZ1bmN0aW9uKE5lKXtpZihOZS5yZWwmJk5lLnJlbC5UYXJnZXQpe3ZhciBCZT1ocihOZS5yZWwuVGFyZ2V0LFQpO05lLnBhdGg9QmUsZGVsZXRlIE5lLnJlbH19KX19KG50LDAsZCxfLDAsMCwwLG10'@; put 'KSxudH1jYXRjaChRZSl7aWYoZGUuV1RGKXRocm93IFFlfX1mdW5jdGlvbiBsaChkKXtyZXR1cm4iLyI9PWQuY2hhckF0KDApP2Quc2xpY2UoMSk6ZH12YXIgc0U9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIERSKGQsXyl7aWYoSjk9W10sSVIoXz1ffHx7fSksTWkoZCwiTUVUQS1JTkYvbWFuaWZl'@; put 'c3QueG1sIil8fE1pKGQsIm9iamVjdGRhdGEueG1sIikpcmV0dXJuIGZ1bmN0aW9uIFlCKGQsXyl7Xz1ffHx7fSxNaShkLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSYmZnVuY3Rpb24gWWMoZCxfKXtmb3IodmFyIFQsUCxtPVFTKGQpO1Q9VzkuZXhlYyhtKTspc3dpdGNoKFRbM10pe2Nhc2Ui'@; put 'bWFuaWZlc3QiOmJyZWFrO2Nhc2UiZmlsZS1lbnRyeSI6aWYoIi8iPT0oUD1YcihUWzBdLCExKSkucGF0aCYmImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQiIT09UC50eXBlKXRocm93IG5ldyBFcnJvcigiVGhpcyBPcGVuRG9jdW1lbnQgaXMgbm90IGEg'@; put 'c3ByZWFkc2hlZXQiKTticmVhaztjYXNlImVuY3J5cHRpb24tZGF0YSI6Y2FzZSJhbGdvcml0aG0iOmNhc2Uic3RhcnQta2V5LWdlbmVyYXRpb24iOmNhc2Uia2V5LWRlcml2YXRpb24iOnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgT0RTIEVuY3J5cHRpb24iKTtkZWZhdWx0OmlmKF8m'@; put 'Jl8uV1RGKXRocm93IFR9fShVdChkLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSxfKTt2YXIgbT12cihkLCJjb250ZW50LnhtbCIpO2lmKCFtKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBjb250ZW50LnhtbCBpbiBPRFMgLyBVT0YgZmlsZSIpO3ZhciBUPXhSKFduKG0pLF8pO3JldHVybiBN'@; put 'aShkLCJtZXRhLnhtbCIpJiYoVC5Qcm9wcz1ycyhVdChkLCJtZXRhLnhtbCIpKSksVH0oZCxfKTtpZihNaShkLCJJbmRleC9Eb2N1bWVudC5pd2EiKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMgZmlsZSIpO3ZhciBRLHNlLG09ZnVuY3Rpb24gQnQoZCl7Zm9yKHZhciBf'@; put 'PWQuRnVsbFBhdGhzfHxGZShkLmZpbGVzKSxtPVtdLFQ9MDtUPF8ubGVuZ3RoOysrVCkiLyIhPV9bVF0uc2xpY2UoLTEpJiZtLnB1c2goX1tUXSk7cmV0dXJuIG0uc29ydCgpfShkKSxUPWZ1bmN0aW9uIGQzKGQpe3ZhciBfPXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFs'@; put 'b2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sbGlua3M6W10sY29yZXByb3BzOltdLGV4dHByb3BzOltdLGN1c3Rwcm9wczpbXSx0aGVtZXM6W10sc3R5bGVzOltdLGNhbGNjaGFpbnM6W10sdmJhOltdLGRyYXdpbmdzOltdLHBpdm90czpbXSxwaXZvdGNhY2hl'@; put 'czpbXSxwaXZvdHJlY29yZHM6W10sZGF0YW1vZGVsczpbXSxjaGFydG9ianM6W10sY2hhcnRzdHlsZXM6W10sY2hhcnRjb2xvcnM6W10sY2hhcnRleHM6W10sdGFibGVzOltdLGNvbm5zOltdLGN0cmxwcm9wczpbXSxjdXN0b214bWxwcm9wczpbXSxUT0RPOltdLHhtbG5zOiIifTtpZighZHx8'@; put 'IWQubWF0Y2gpcmV0dXJuIF87dmFyIG09e307aWYoKGQubWF0Y2goQm4pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihUKXt2YXIgUD1YcihUKTtzd2l0Y2goUFswXS5yZXBsYWNlKGphLCI8Iikpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPFR5cGVzIjpfLnhtbG5zPVBbInhtbG5zIisoUFswXS5t'@; put 'YXRjaCgvPChcdyspOi8pfHxbIiIsIiJdKVsxXV07YnJlYWs7Y2FzZSI8RGVmYXVsdCI6bVtQLkV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpXT1QLkNvbnRlbnRUeXBlO2JyZWFrO2Nhc2UiPE92ZXJyaWRlIjp2b2lkIDAhPT1fW2RwW1AuQ29udGVudFR5cGVdXSYmX1tkcFtQLkNvbnRlbnRUeXBl'@; put 'XV0ucHVzaChQLlBhcnROYW1lKX19KSxfLnhtbG5zIT09VWEuQ1QpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIitfLnhtbG5zKTtyZXR1cm4gXy5jYWxjY2hhaW49Xy5jYWxjY2hhaW5zLmxlbmd0aD4wP18uY2FsY2NoYWluc1swXToiIixfLnNzdD1fLnN0cnMubGVuZ3Ro'@; put 'PjA/Xy5zdHJzWzBdOiIiLF8uc3R5bGU9Xy5zdHlsZXMubGVuZ3RoPjA/Xy5zdHlsZXNbMF06IiIsXy5jb25uPV8uY29ubnMubGVuZ3RoPjA/Xy5jb25uc1swXToiIixfLmRlZmF1bHRzPW0sZGVsZXRlIF8uY2FsY2NoYWlucyxffSh2cihkLCJbQ29udGVudF9UeXBlc10ueG1sIikpLFA9ITE7'@; put 'aWYoMD09PVQud29ya2Jvb2tzLmxlbmd0aCYmVXQoZCxzZT0ieGwvd29ya2Jvb2sueG1sIiwhMCkmJlQud29ya2Jvb2tzLnB1c2goc2UpLDA9PT1ULndvcmtib29rcy5sZW5ndGgpe2lmKCFVdChkLHNlPSJ4bC93b3JrYm9vay5iaW4iLCEwKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBm'@; put 'aW5kIHdvcmtib29rIik7VC53b3JrYm9va3MucHVzaChzZSksUD0hMH0iYmluIj09VC53b3JrYm9va3NbMF0uc2xpY2UoLTMpJiYoUD0hMCk7dmFyIG9lPXt9LGRlPXt9O2lmKCFfLmJvb2tTaGVldHMmJiFfLmJvb2tQcm9wcyl7aWYoSDk9W10sVC5zc3QpdHJ5e0g5PWZ1bmN0aW9uIEVlZShk'@; put 'LF8sbSl7cmV0dXJuIi5iaW4iPT09Xy5zbGljZSgtNCk/ZnVuY3Rpb24gYzUoZCxfKXt2YXIgbT1bXSxUPSExO3JldHVybiBJdShkLGZ1bmN0aW9uKFEsc2Usb2Upe3N3aXRjaChvZSl7Y2FzZSAxNTk6bS5Db3VudD1RWzBdLG0uVW5pcXVlPVFbMV07YnJlYWs7Y2FzZSAxOTptLnB1c2goUSk7'@; put 'YnJlYWs7Y2FzZSAxNjA6cmV0dXJuITA7Y2FzZSAzNTpUPSEwO2JyZWFrO2Nhc2UgMzY6VD0hMTticmVhaztkZWZhdWx0OmlmKHNlLmluZGV4T2YoIkJlZ2luIik+MHx8c2UuaW5kZXhPZigiRW5kIiksIVR8fF8uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitvZSsi'@; put 'ICIrc2UpfX0pLG19KGQsbSk6ZnVuY3Rpb24gbzVlKGQsXyl7dmFyIG09W10sVD0iIjtpZighZClyZXR1cm4gbTt2YXIgUD1kLm1hdGNoKERYKTtpZihQKXtUPVBbMl0ucmVwbGFjZShMWCwiIikuc3BsaXQoaTVlKTtmb3IodmFyIFE9MDtRIT1ULmxlbmd0aDsrK1Epe3ZhciBzZT1FcyhUW1Fd'@; put 'LnRyaW0oKSxfKTtudWxsIT1zZSYmKG1bbS5sZW5ndGhdPXNlKX1QPVhyKFBbMV0pLG0uQ291bnQ9UC5jb3VudCxtLlVuaXF1ZT1QLnVuaXF1ZUNvdW50fXJldHVybiBtfShkLG0pfShVdChkLGxoKFQuc3N0KSksVC5zc3QsXyl9Y2F0Y2goX3Ipe2lmKF8uV1RGKXRocm93IF9yfV8uY2VsbFN0'@; put 'eWxlcyYmVC50aGVtZXMubGVuZ3RoJiYob2U9ZnVuY3Rpb24gSDgoZCxfLG0pe3JldHVybiBJOShkLG0pfSh2cihkLFQudGhlbWVzWzBdLnJlcGxhY2UoL15cLy8sIiIpLCEwKXx8IiIsMCxfKSksVC5zdHlsZSYmKGRlPWZ1bmN0aW9uIFNlZShkLF8sbSxUKXtyZXR1cm4iLmJpbiI9PT1fLnNs'@; put 'aWNlKC00KT9mdW5jdGlvbiBvUShkLF8sbSl7dmFyIFQ9e051bWJlckZtdDpbXX07Zm9yKHZhciBQIGluIEkuX3RhYmxlKVQuTnVtYmVyRm10W1BdPUkuX3RhYmxlW1BdO1QuQ2VsbFhmPVtdLFQuRm9udHM9W10sVC5GaWxscz1bXSxULkJvcmRlcnM9W107dmFyIFE9W10sc2U9ITE7cmV0dXJu'@; put 'IEl1KGQsZnVuY3Rpb24oZGUsTGUsTmUpe3N3aXRjaChOZSl7Y2FzZSA0NDpULk51bWJlckZtdFtkZVswXV09ZGVbMV0sSS5sb2FkKGRlWzFdLGRlWzBdKTticmVhaztjYXNlIDQzOnk1KGRlLmNvbG9yLF8pLFQuRm9udHMucHVzaChkZSk7YnJlYWs7Y2FzZSAxMDI1OmNhc2UgNDg6Y2FzZSA1'@; put 'MDc6Y2FzZSA1NzI6Y2FzZSA0NzU6Y2FzZSAxMTcxOmNhc2UgMjEwMjpjYXNlIDExMzA6Y2FzZSA1MTI6Y2FzZSAyMDk1OmNhc2UgMzA3MjpicmVhaztjYXNlIDQ1OmRlLmZnQ29sb3ImJnk1KGRlLmZnQ29sb3IsXyksZGUuYmdDb2xvciYmeTUoZGUuYmdDb2xvcixfKSxULkZpbGxzLnB1c2go'@; put 'ZGUpO2JyZWFrO2Nhc2UgNDY6WyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJkaWFnIl0uZm9yRWFjaChmdW5jdGlvbihCZSl7ZGVbQmVdJiZkZVtCZV0uY29sb3ImJnk1KGRlW0JlXS5jb2xvcixfKX0pLFQuQm9yZGVycy5wdXNoKGRlKTticmVhaztjYXNlIDQ3OiJCcnRCZWdpbkNl'@; put 'bGxYRnMiPT1RW1EubGVuZ3RoLTFdJiZULkNlbGxYZi5wdXNoKGRlKTticmVhaztjYXNlIDM1OnNlPSEwO2JyZWFrO2Nhc2UgMzY6c2U9ITE7YnJlYWs7Y2FzZSAzNzpRLnB1c2goTGUpLHNlPSEwO2JyZWFrO2Nhc2UgMzg6US5wb3AoKSxzZT0hMTticmVhaztkZWZhdWx0OmlmKChMZXx8IiIp'@; put 'LmluZGV4T2YoIkJlZ2luIik+MClRLnB1c2goTGUpO2Vsc2UgaWYoKExlfHwiIikuaW5kZXhPZigiRW5kIik+MClRLnBvcCgpO2Vsc2UgaWYoIXNlfHxtLldURiYmIkJydEFDQmVnaW4iIT1RW1EubGVuZ3RoLTFdKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitOZSsiICIr'@; put 'TGUpfX0pLChULkZvbnRzfHxbXSlbMF0mJiRtKFQuRm9udHNbMF0pLFR9KGQsbSxUKTpuUShkLG0sVCl9KFV0KGQsbGgoVC5zdHlsZSkpLFQuc3R5bGUsb2UsXykpfXZhciBMZT1ULmxpbmtzLm1hcChmdW5jdGlvbihfcil7dHJ5e3ZhciBNbj1MdSh2cihkLHZmKGxoKF9yKSkpLF9yKTtyZXR1'@; put 'cm4gZnVuY3Rpb24gS1MoZCxfLG0sVCl7cmV0dXJuIi5iaW4iPT09bS5zbGljZSgtNCk/ZnVuY3Rpb24gU3koZCxfLG0sVCl7aWYoIWQpcmV0dXJuIGQ7dmFyIFA9VHx8e30sUT0hMTtJdShkLGZ1bmN0aW9uKGRlLExlLE5lKXtzd2l0Y2goTmUpe2Nhc2UgMzU5OmNhc2UgMzYzOmNhc2UgMzY0'@; put 'OmNhc2UgMzY2OmNhc2UgMzY3OmNhc2UgMzY4OmNhc2UgMzY5OmNhc2UgMzcwOmNhc2UgMzcxOmNhc2UgNDcyOmNhc2UgNTc3OmNhc2UgNTc4OmNhc2UgNTc5OmNhc2UgNTgwOmNhc2UgNTgxOmNhc2UgNTgyOmNhc2UgNTgzOmNhc2UgNTg0OmNhc2UgNTg1OmNhc2UgNTg2OmNhc2UgNTg3OmJy'@; put 'ZWFrO2Nhc2UgMzU6UT0hMDticmVhaztjYXNlIDM2OlE9ITE7YnJlYWs7ZGVmYXVsdDppZighKChMZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+MCkmJiEoKExlfHwiIikuaW5kZXhPZigiRW5kIik+MCkmJighUXx8UC5XVEYpKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitO'@; put 'ZS50b1N0cmluZygxNikrIiAiK0xlKX19LFApfShkLDAsMCxUKTpmdW5jdGlvbiB2UShkLF8sbSxUKXt2YXIgUD1UfHx7fSxRPXtTaGVldE5hbWVzOltdLFNoZWV0czp7fX0sb2U9ITEsZGU9e30sTGU9LTEsTmU9LTEsQmU9e3M6e3I6MCxjOjB9LGU6e3I6LTEsYzotMX19LFplPXt9LG50PTA7'@; put 'cmV0dXJuKGR8fCIiKS5yZXBsYWNlKEJuLGZ1bmN0aW9uKG10LFFlKXt2YXIgZnQ9WHIobXQpO3N3aXRjaChlYShmdFswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPGV4dGVybmFsTGluayI6Y2FzZSI8L2V4dGVybmFsTGluaz4iOmNhc2UiPC9leHRlcm5hbEJvb2s+IjpjYXNlIjxzaGVldE5hbWVz'@; put 'IjpjYXNlIjxzaGVldE5hbWVzPiI6Y2FzZSI8L3NoZWV0TmFtZXM+IjpjYXNlIjxzaGVldERhdGFTZXQ+IjpjYXNlIjxzaGVldERhdGFTZXQvPiI6Y2FzZSI8L3NoZWV0RGF0YVNldD4iOmNhc2UiPC9yb3c+IjpicmVhaztjYXNlIjxleHRlcm5hbEJvb2siOmNhc2UiPGV4dGVybmFsQm9vaz4i'@; put 'OlEuVGFyZ2V0PV9bIiFpZCJdW2Z0LmlkXS5UYXJnZXQsUS5NaXNzaW5nPV9bIiFpZCJdW2Z0LmlkXS5UeXBlPT11YS5YTUlTUzticmVhaztjYXNlIjxzaGVldE5hbWUiOlEuU2hlZXROYW1lcy5wdXNoKENpKFduKGZ0LnZhbCkpKTticmVhaztjYXNlIjxzaGVldERhdGEiOmRlPXt9LFEuU2hl'@; put 'ZXRzW1EuU2hlZXROYW1lc1tmdC5zaGVldElkXV09VGkoZnQucmVmcmVzaEVycm9yfHwiMCIpP251bGw6ZGU7YnJlYWs7Y2FzZSI8L3NoZWV0RGF0YT4iOkJlLmUuYz49MCYmKGRlWyIhcmVmIl09aHQoQmUpKTticmVhaztjYXNlIjxyb3ciOmNhc2UiPHJvdz4iOmZ0LnI/TGU9cGFyc2VJbnQo'@; put 'ZnQuciwxMCktMTpMZSsrLE5lPS0xO2JyZWFrO2Nhc2UiPGNlbGwiOmNhc2UiPGNlbGw+IjpmdC5yP05lPUlzKGZ0LnIpLmM6KytOZSxaZS50PWZ0LnR8fCJuIiwic3RyIj09WmUudCYmKFplLnQ9InMiKTticmVhaztjYXNlIjwvY2VsbD4iOkJlLmUucjxMZSYmKEJlLmUucj1MZSksQmUuZS5j'@; put 'PE5lJiYoQmUuZS5jPU5lKSxkZVtxaSh7cjpMZSxjOk5lfSldPVplLFplPXt9O2JyZWFrO2Nhc2UiPHYiOmNhc2UiPHY+IjpudD1tdC5sZW5ndGgrUWU7YnJlYWs7Y2FzZSI8L3Y+Ijp2YXIga3Q9Q2koZC5zbGljZShudCxRZSkpO1plLnY9Im4iPT1aZS50P3BhcnNlRmxvYXQoa3QpOmt0O2Jy'@; put 'ZWFrO2Nhc2UiPHYvPiI6WmUudj0iIjticmVhaztjYXNlIjxkZWZpbmVkTmFtZXM+IjpvZT0hMDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWVzPiI6b2U9ITE7YnJlYWs7ZGVmYXVsdDppZighb2UmJlAuV1RGKXRocm93InVucmVjb2duaXplZCAiK2Z0WzBdKyIgaW4gZXh0ZXJuYWwgbGluayJ9'@; put 'fSksUX0oZCxfLDAsVCl9KFV0KGQsbGgoX3IpKSxNbixfcixfKX1jYXRjaHt9fSksTmU9ZnVuY3Rpb24gd2VlKGQsXyxtKXtyZXR1cm4iLmJpbiI9PT1fLnNsaWNlKC00KT9mdW5jdGlvbiBFQihkLF8pe3ZhciBtPXtBcHBWZXJzaW9uOnt9LFdCUHJvcHM6e30sV0JWaWV3OltdLFNoZWV0czpb'@; put 'XSxDYWxjUHI6e30seG1sbnM6IiJ9LFQ9W10sUD0hMTtffHwoXz17fSksXy5iaWZmPTEyO3ZhciBRPVtdLHNlPVtbXV07cmV0dXJuIHNlLlNoZWV0TmFtZXM9W10sc2UuWFRJPVtdLFo5WzE2XT17bjoiQnJ0RlJUQXJjaElEJCIsZjpfZWV9LEl1KGQsZnVuY3Rpb24oZGUsTGUsTmUpe3N3aXRj'@; put 'aChOZSl7Y2FzZSAxNTY6c2UuU2hlZXROYW1lcy5wdXNoKGRlLm5hbWUpLG0uU2hlZXRzLnB1c2goZGUpO2JyZWFrO2Nhc2UgMTUzOm0uV0JQcm9wcz1kZTticmVhaztjYXNlIDM5Om51bGwhPWRlLlNoZWV0JiYoXy5TSUQ9ZGUuU2hlZXQpLGRlLlJlZj11MShkZS5QdGcsbnVsbCxudWxsLHNl'@; put 'LF8pLGRlbGV0ZSBfLlNJRCxkZWxldGUgZGUuUHRnLFEucHVzaChkZSk7YnJlYWs7Y2FzZSAxMDM2OmNhc2UgMzYxOmNhc2UgMjA3MTpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDY2NDpjYXNlIDM1MzpjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgNTM0OmNhc2UgNjc3OmNhc2UgMTU3OmNhc2Ug'@; put 'NjEwOmNhc2UgMjA1MDpjYXNlIDE1NTpjYXNlIDU0ODpjYXNlIDY3NjpjYXNlIDEyODpjYXNlIDY2NTpjYXNlIDIxMjg6Y2FzZSAyMTI1OmNhc2UgNTQ5OmNhc2UgMjA1MzpjYXNlIDU5NjpjYXNlIDIwNzY6Y2FzZSAyMDc1OmNhc2UgMjA4MjpjYXNlIDM5NzpjYXNlIDE1NDpjYXNlIDExMTc6'@; put 'Y2FzZSA1NTM6Y2FzZSAyMDkxOmNhc2UgMTY6YnJlYWs7Y2FzZSAzNTc6Y2FzZSAzNTg6Y2FzZSAzNTU6Y2FzZSA2Njc6c2VbMF0ubGVuZ3RoP3NlLnB1c2goW05lLGRlXSk6c2VbMF09W05lLGRlXSxzZVtzZS5sZW5ndGgtMV0uWFRJPVtdO2JyZWFrO2Nhc2UgMzYyOjA9PT1zZS5sZW5ndGgm'@; put 'JihzZVswXT1bXSxzZVswXS5YVEk9W10pLHNlW3NlLmxlbmd0aC0xXS5YVEk9c2Vbc2UubGVuZ3RoLTFdLlhUSS5jb25jYXQoZGUpLHNlLlhUST1zZS5YVEkuY29uY2F0KGRlKTticmVhaztjYXNlIDM1OmNhc2UgMzc6VC5wdXNoKExlKSxQPSEwO2JyZWFrO2Nhc2UgMzY6Y2FzZSAzODpULnBv'@; put 'cCgpLFA9ITE7YnJlYWs7ZGVmYXVsdDppZighKChMZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+MCkmJiEoKExlfHwiIikuaW5kZXhPZigiRW5kIik+MCkmJighUHx8Xy5XVEYmJiJCcnRBQ0JlZ2luIiE9VFtULmxlbmd0aC0xXSYmIkJydEZSVEJlZ2luIiE9VFtULmxlbmd0aC0xXSkpdGhyb3cg'@; put 'bmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK05lKyIgIitMZSl9fSxfKSx6OShtKSxtLk5hbWVzPVEsbS5zdXBib29rcz1zZSxtfShkLG0pOmZ1bmN0aW9uIFNCKGQsXyl7aWYoIWQpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBmaWxlIik7dmFyIG09e0FwcFZlcnNpb246'@; put 'e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSxOYW1lczpbXSxFeHRlcm46W10seG1sbnM6IiJ9LFQ9ITEsUD0ieG1sbnMiLFE9e30sc2U9MDtpZihkLnJlcGxhY2UoQm4sZnVuY3Rpb24oZGUsTGUpe3ZhciBOZT1YcihkZSk7c3dpdGNoKGVhKE5lWzBdKSl7Y2Fz'@; put 'ZSI8P3htbCI6Y2FzZSI8L3dvcmtib29rPiI6Y2FzZSI8ZmlsZVZlcnNpb24vPiI6Y2FzZSI8L2ZpbGVWZXJzaW9uPiI6Y2FzZSI8ZmlsZVNoYXJpbmcvPiI6Y2FzZSI8L3dvcmtib29rUHI+IjpjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24vPiI6Y2FzZSI8Ym9va1ZpZXdzIjpjYXNlIjxib29r'@; put 'Vmlld3M+IjpjYXNlIjwvYm9va1ZpZXdzPiI6Y2FzZSI8L3dvcmtib29rVmlldz4iOmNhc2UiPHNoZWV0cyI6Y2FzZSI8c2hlZXRzPiI6Y2FzZSI8L3NoZWV0cz4iOmNhc2UiPC9zaGVldD4iOmNhc2UiPGZ1bmN0aW9uR3JvdXBzIjpjYXNlIjxmdW5jdGlvbkdyb3Vwcy8+IjpjYXNlIjxmdW5j'@; put 'dGlvbkdyb3VwIjpjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXMiOmNhc2UiPC9leHRlcm5hbFJlZmVyZW5jZXM+IjpjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXM+IjpjYXNlIjxkZWZpbmVkTmFtZXMvPiI6Y2FzZSI8ZGVmaW5lZE5hbWUvPiI6Y2FzZSI8L2NhbGNQcj4iOmNhc2UiPG9sZVNpemUi'@; put 'OmNhc2UiPGN1c3RvbVdvcmtib29rVmlld3M+IjpjYXNlIjwvY3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPGN1c3RvbVdvcmtib29rVmlld3MiOmNhc2UiPGN1c3RvbVdvcmtib29rVmlldyI6Y2FzZSI8L2N1c3RvbVdvcmtib29rVmlldz4iOmNhc2UiPHBpdm90Q2FjaGVzPiI6Y2FzZSI8'@; put 'L3Bpdm90Q2FjaGVzPiI6Y2FzZSI8cGl2b3RDYWNoZXMiOmNhc2UiPHBpdm90Q2FjaGUiOmNhc2UiPHNtYXJ0VGFnUHIiOmNhc2UiPHNtYXJ0VGFnUHIvPiI6Y2FzZSI8c21hcnRUYWdUeXBlcyI6Y2FzZSI8c21hcnRUYWdUeXBlcz4iOmNhc2UiPC9zbWFydFRhZ1R5cGVzPiI6Y2FzZSI8c21h'@; put 'cnRUYWdUeXBlIjpjYXNlIjx3ZWJQdWJsaXNoaW5nIjpjYXNlIjx3ZWJQdWJsaXNoaW5nLz4iOmNhc2UiPGZpbGVSZWNvdmVyeVByIjpjYXNlIjxmaWxlUmVjb3ZlcnlQci8+IjpjYXNlIjx3ZWJQdWJsaXNoT2JqZWN0cz4iOmNhc2UiPHdlYlB1Ymxpc2hPYmplY3RzIjpjYXNlIjwvd2ViUHVi'@; put 'bGlzaE9iamVjdHM+IjpjYXNlIjx3ZWJQdWJsaXNoT2JqZWN0IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6Y2FzZSI8QXJjaElEIjpjYXNlIjxyZXZpc2lvblB0ciI6YnJlYWs7Y2FzZSI8d29ya2Jvb2siOmRlLm1hdGNoKENC'@; put 'KSYmKFA9InhtbG5zIitkZS5tYXRjaCgvPChcdyspOi8pWzFdKSxtLnhtbG5zPU5lW1BdO2JyZWFrO2Nhc2UiPGZpbGVWZXJzaW9uIjpkZWxldGUgTmVbMF0sbS5BcHBWZXJzaW9uPU5lO2JyZWFrO2Nhc2UiPGZpbGVTaGFyaW5nIjptLk1vZGlmeT17dXNlcjpOZS51c2VyTmFtZSx3YXJuOlRp'@; put 'KE5lLnJlYWRPbmx5UmVjb21tZW5kZWR8fCJmYWxzZSIpfSwoTmUuYWxnb3JpdGhtTmFtZXx8TmUuaGFzaFZhbHVlfHxOZS5zYWx0VmFsdWV8fE5lLnNwaW5Db3VudCkmJihtLk1vZGlmeS5lbmNyeXB0aW9uPXthbGdvOk5lLmFsZ29yaXRobU5hbWUsaGFzaDpOZS5oYXNoVmFsdWUsc2FsdDpO'@; put 'ZS5zYWx0VmFsdWUsc3BpbjorTmUuc3BpbkNvdW50fHwxZTV9KTticmVhaztjYXNlIjx3b3JrYm9va1ByIjpjYXNlIjx3b3JrYm9va1ByLz4iOkdTLmZvckVhY2goZnVuY3Rpb24oWmUpe2lmKG51bGwhPU5lW1plWzBdXSlzd2l0Y2goWmVbMl0pe2Nhc2UiYm9vbCI6bS5XQlByb3BzW1plWzBd'@; put 'XT1UaShOZVtaZVswXV0pO2JyZWFrO2Nhc2UiaW50IjptLldCUHJvcHNbWmVbMF1dPXBhcnNlSW50KE5lW1plWzBdXSwxMCk7YnJlYWs7ZGVmYXVsdDptLldCUHJvcHNbWmVbMF1dPU5lW1plWzBdXX19KSxOZS5jb2RlTmFtZSYmKG0uV0JQcm9wcy5Db2RlTmFtZT1XbihOZS5jb2RlTmFtZSkp'@; put 'O2JyZWFrO2Nhc2UiPHdvcmtib29rUHJvdGVjdGlvbiI6dmFyIEJlPW0uUHJvdGVjdGlvbnx8e307QmUubG9ja1N0cnVjdHVyZT1UaShOZS5sb2NrU3RydWN0dXJlfHwiZmFsc2UiKSxCZS5sb2NrV2luZG93cz1UaShOZS5sb2NrV2luZG93c3x8ImZhbHNlIiksTmUud29ya2Jvb2tBbGdvcml0'@; put 'aG1OYW1lJiYoQmUuZW5jcnlwdGlvbj17YWxnbzpOZS53b3JrYm9va0FsZ29yaXRobU5hbWUsaGFzaDpOZS53b3JrYm9va0hhc2hWYWx1ZSxzYWx0Ok5lLndvcmtib29rU2FsdFZhbHVlLHNwaW46K05lLndvcmtib29rU3BpbkNvdW50fHwxZTV9KSxtLlByb3RlY3Rpb249QmU7YnJlYWs7Y2Fz'@; put 'ZSI8d29ya2Jvb2tWaWV3IjpjYXNlIjx3b3JrYm9va1ZpZXcvPiI6ZGVsZXRlIE5lWzBdLG0uV0JWaWV3LnB1c2goTmUpO2JyZWFrO2Nhc2UiPHNoZWV0Ijpzd2l0Y2goTmUuc3RhdGUpe2Nhc2UiaGlkZGVuIjpOZS5IaWRkZW49MTticmVhaztjYXNlInZlcnlIaWRkZW4iOk5lLkhpZGRlbj0y'@; put 'O2JyZWFrO2RlZmF1bHQ6TmUuSGlkZGVuPTB9ZGVsZXRlIE5lLnN0YXRlLE5lLm5hbWU9Q2koV24oTmUubmFtZSkpLGRlbGV0ZSBOZVswXSxtLlNoZWV0cy5wdXNoKE5lKTticmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZSI6bS5FeHRlcm4ucHVzaChOZS5pZCk7YnJlYWs7Y2FzZSI8ZGVm'@; put 'aW5lZE5hbWVzPiI6Y2FzZSI8ZGVmaW5lZE5hbWVzIjpjYXNlIjxleHQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQ+IjpUPSEwO2JyZWFrO2Nhc2UiPC9kZWZpbmVkTmFtZXM+IjpjYXNlIjwvZXh0PiI6Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjpU'@; put 'PSExO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lIjooUT17fSkuTmFtZT1XbihOZS5uYW1lKSxOZS5jb21tZW50JiYoUS5Db21tZW50PU5lLmNvbW1lbnQpLE5lLmxvY2FsU2hlZXRJZCYmKFEuU2hlZXQ9K05lLmxvY2FsU2hlZXRJZCksVGkoTmUuaGlkZGVufHwiMCIpJiYoUS5IaWRkZW49ITAp'@; put 'LHNlPUxlK2RlLmxlbmd0aDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWU+IjpRLlJlZj1DaShXbihkLnNsaWNlKHNlLExlKSkpLG0uTmFtZXMucHVzaChRKTticmVhaztjYXNlIjxjYWxjUHIiOmNhc2UiPGNhbGNQci8+IjpkZWxldGUgTmVbMF0sbS5DYWxjUHI9TmU7YnJlYWs7ZGVmYXVsdDpp'@; put 'ZighVCYmXy5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitOZVswXSsiIGluIHdvcmtib29rIil9cmV0dXJuIGRlfSksLTE9PT1VYS5tYWluLmluZGV4T2YobS54bWxucykpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIittLnhtbG5zKTtyZXR1cm4gejko'@; put 'bSksbX0oZCxtKX0oVXQoZCxsaChULndvcmtib29rc1swXSkpLFQud29ya2Jvb2tzWzBdLF8pLEJlPXt9LFplPSIiO1QuY29yZXByb3BzLmxlbmd0aCYmKChaZT1VdChkLGxoKFQuY29yZXByb3BzWzBdKSwhMCkpJiYoQmU9cnMoWmUpKSwwIT09VC5leHRwcm9wcy5sZW5ndGgmJihaZT1VdChk'@; put 'LGxoKFQuZXh0cHJvcHNbMF0pLCEwKSkmJmZ1bmN0aW9uIF9mKGQsXyxtKXt2YXIgVD17fTtffHwoXz17fSksZD1XbihkKSxmYy5mb3JFYWNoKGZ1bmN0aW9uKFApe3ZhciBRPShkLm1hdGNoKExjKFBbMF0pKXx8W10pWzFdO3N3aXRjaChQWzJdKXtjYXNlInN0cmluZyI6USYmKF9bUFsxXV09'@; put 'Q2koUSkpO2JyZWFrO2Nhc2UiYm9vbCI6X1tQWzFdXT0idHJ1ZSI9PT1RO2JyZWFrO2Nhc2UicmF3Ijp2YXIgc2U9ZC5tYXRjaChuZXcgUmVnRXhwKCI8IitQWzBdKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrUFswXSsiPiIpKTtzZSYmc2UubGVuZ3RoPjAmJihUW1BbMV1dPXNlWzFdKX19KSxU'@; put 'LkhlYWRpbmdQYWlycyYmVC5UaXRsZXNPZlBhcnRzJiZncChULkhlYWRpbmdQYWlycyxULlRpdGxlc09mUGFydHMsXyxtKX0oWmUsQmUsXykpO3ZhciBudD17fTsoIV8uYm9va1NoZWV0c3x8Xy5ib29rUHJvcHMpJiYwIT09VC5jdXN0cHJvcHMubGVuZ3RoJiYoWmU9dnIoZCxsaChULmN1c3Rw'@; put 'cm9wc1swXSksITApKSYmKG50PWZ1bmN0aW9uIG81KGQsXyl7dmFyIG09e30sVD0iIixQPWQubWF0Y2goeWYpO2lmKFApZm9yKHZhciBRPTA7USE9UC5sZW5ndGg7KytRKXt2YXIgc2U9UFtRXSxvZT1YcihzZSk7c3dpdGNoKG9lWzBdKXtjYXNlIjw/eG1sIjpjYXNlIjxQcm9wZXJ0aWVzIjpi'@; put 'cmVhaztjYXNlIjxwcm9wZXJ0eSI6VD1DaShvZS5uYW1lKTticmVhaztjYXNlIjwvcHJvcGVydHk+IjpUPW51bGw7YnJlYWs7ZGVmYXVsdDppZigwPT09c2UuaW5kZXhPZigiPHZ0OiIpKXt2YXIgZGU9c2Uuc3BsaXQoIj4iKSxMZT1kZVswXS5zbGljZSg0KSxOZT1kZVsxXTtzd2l0Y2goTGUp'@; put 'e2Nhc2UibHBzdHIiOmNhc2UiYnN0ciI6Y2FzZSJscHdzdHIiOmNhc2UiY3kiOmNhc2UiZXJyb3IiOm1bVF09Q2koTmUpO2JyZWFrO2Nhc2UiYm9vbCI6bVtUXT1UaShOZSk7YnJlYWs7Y2FzZSJpMSI6Y2FzZSJpMiI6Y2FzZSJpNCI6Y2FzZSJpOCI6Y2FzZSJpbnQiOmNhc2UidWludCI6bVtU'@; put 'XT1wYXJzZUludChOZSwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJyOCI6Y2FzZSJkZWNpbWFsIjptW1RdPXBhcnNlRmxvYXQoTmUpO2JyZWFrO2Nhc2UiZmlsZXRpbWUiOmNhc2UiZGF0ZSI6bVtUXT1sbihOZSk7YnJlYWs7ZGVmYXVsdDppZigiLyI9PUxlLnNsaWNlKC0xKSlicmVhaztfLldU'@; put 'RiYmdHlwZW9mIGNvbnNvbGU8InUiJiZjb25zb2xlLndhcm4oIlVuZXhwZWN0ZWQiLHNlLExlLGRlKX19ZWxzZSBpZigiPC8iIT09c2Uuc2xpY2UoMCwyKSYmXy5XVEYpdGhyb3cgbmV3IEVycm9yKHNlKX19cmV0dXJuIG19KFplLF8pKTt2YXIgbXQ9e307aWYoKF8uYm9va1NoZWV0c3x8Xy5i'@; put 'b29rUHJvcHMpJiYoTmUuU2hlZXRzP1E9TmUuU2hlZXRzLm1hcChmdW5jdGlvbihNbil7cmV0dXJuIE1uLm5hbWV9KTpCZS5Xb3Jrc2hlZXRzJiZCZS5TaGVldE5hbWVzLmxlbmd0aD4wJiYoUT1CZS5TaGVldE5hbWVzKSxfLmJvb2tQcm9wcyYmKG10LlByb3BzPUJlLG10LkN1c3Rwcm9wcz1u'@; put 'dCksXy5ib29rU2hlZXRzJiZ0eXBlb2YgUTwidSImJihtdC5TaGVldE5hbWVzPVEpLF8uYm9va1NoZWV0cz9tdC5TaGVldE5hbWVzOl8uYm9va1Byb3BzKSlyZXR1cm4gbXQ7UT17fTt2YXIgUWU9e307Xy5ib29rRGVwcyYmVC5jYWxjY2hhaW4mJihRZT1mdW5jdGlvbiBxNWUoZCxfLG0pe3Jl'@; put 'dHVybiIuYmluIj09PV8uc2xpY2UoLTQpP2Z1bmN0aW9uIGs4KGQpe3ZhciBUPVtdO3JldHVybiBJdShkLGZ1bmN0aW9uKHNlLG9lLGRlKXtpZig2Mz09PWRlKVQucHVzaChzZSk7ZWxzZSBpZighKChvZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+MHx8KG9lfHwiIikuaW5kZXhPZigiRW5kIik+'@; put 'MCkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK2RlKyIgIitvZSl9KSxUfShkKTpmdW5jdGlvbiBVSChkKXt2YXIgXz1bXTtpZighZClyZXR1cm4gXzt2YXIgbT0xO3JldHVybihkLm1hdGNoKEJuKXx8W10pLmZvckVhY2goZnVuY3Rpb24oVCl7dmFyIFA9WHIoVCk7c3dp'@; put 'dGNoKFBbMF0pe2Nhc2UiPD94bWwiOmNhc2UiPGNhbGNDaGFpbiI6Y2FzZSI8Y2FsY0NoYWluPiI6Y2FzZSI8L2NhbGNDaGFpbj4iOmJyZWFrO2Nhc2UiPGMiOmRlbGV0ZSBQWzBdLFAuaT9tPVAuaTpQLmk9bSxfLnB1c2goUCl9fSksX30oZCl9KFV0KGQsbGgoVC5jYWxjY2hhaW4pKSxULmNh'@; put 'bGNjaGFpbikpO3ZhciBidCxFdCxmdD0wLGt0PXt9LFZ0PU5lLlNoZWV0cztCZS5Xb3Jrc2hlZXRzPVZ0Lmxlbmd0aCxCZS5TaGVldE5hbWVzPVtdO2Zvcih2YXIgdW49MDt1biE9VnQubGVuZ3RoOysrdW4pQmUuU2hlZXROYW1lc1t1bl09VnRbdW5dLm5hbWU7dmFyIG5yPVA/ImJpbiI6Inht'@; put 'bCIsbm49VC53b3JrYm9va3NbMF0ubGFzdEluZGV4T2YoIi8iKSxhcj0oVC53b3JrYm9va3NbMF0uc2xpY2UoMCxubisxKSsiX3JlbHMvIitULndvcmtib29rc1swXS5zbGljZShubisxKSsiLnJlbHMiKS5yZXBsYWNlKC9eXC8vLCIiKTtNaShkLGFyKXx8KGFyPSJ4bC9fcmVscy93b3JrYm9v'@; put 'ay4iK25yKyIucmVscyIpO3ZhciBqbj1MdSh2cihkLGFyLCEwKSxhciksa249am4sc3I9W107am4mJihOZSYmTmUuRXh0ZXJuJiZOZS5FeHRlcm4ubGVuZ3RoJiZOZS5FeHRlcm4uZm9yRWFjaChmdW5jdGlvbihfcixNbil7dmFyIGppPSgiL3hsLyIram5bIiFpZCJdW19yXS5UYXJnZXQpLnJl'@; put 'cGxhY2UoL1tcL11bXC9dL2csIi8iKSxiaT1ULmxpbmtzLmluZGV4T2YoamkpO2JpPi0xJiYoc3JbTW5dPUxlW2JpXSl9KSxOZSYmZGVsZXRlIE5lLkV4dGVybiksam4mJihqbj1mdW5jdGlvbiBuNmUoZCxfKXtpZighZClyZXR1cm4gMDt0cnl7ZD1fLm1hcChmdW5jdGlvbihUKXtyZXR1cm4g'@; put 'VC5pZHx8KFQuaWQ9VC5zdHJSZWxJRCksW1QubmFtZSxkWyIhaWQiXVtULmlkXS5UYXJnZXQsdDZlKGRbIiFpZCJdW1QuaWRdLlR5cGUpXX0pfWNhdGNoe3JldHVybiBudWxsfXJldHVybiBkJiYwIT09ZC5sZW5ndGg/ZDpudWxsfShqbixOZS5TaGVldHMpKTt2YXIgZ3I9TWkoZCwieGwvd29y'@; put 'a3NoZWV0cy9zaGVldC54bWwiKT8xOjAscW49W10sX2k9W107ZTpmb3IoZnQ9MDtmdCE9QmUuV29ya3NoZWV0czsrK2Z0KXt2YXIgT2k9InNoZWV0IjtpZihqbiYmam5bZnRdPyhidD0ieGwvIitqbltmdF1bMV0ucmVwbGFjZSgvW1wvXT94bFwvLywiIiksTWkoZCxidCl8fChidD1qbltmdF1b'@; put 'MV0pLE1pKGQsYnQpfHwoYnQ9YXIucmVwbGFjZSgvX3JlbHNcLy4qJC8sIiIpK2puW2Z0XVsxXSksT2k9am5bZnRdWzJdKTpidD0oYnQ9InhsL3dvcmtzaGVldHMvc2hlZXQiKyhmdCsxLWdyKSsiLiIrbnIpLnJlcGxhY2UoL3NoZWV0MFwuLywic2hlZXQuIiksRXQ9YnQucmVwbGFjZSgvXigu'@; put 'KikoXC8pKFteXC9dKikkLywiJDEvX3JlbHMvJDMucmVscyIpLHFuLnB1c2goYnQpLF8mJm51bGwhPV8uc2hlZXRzKXN3aXRjaCh0eXBlb2YgXy5zaGVldHMpe2Nhc2UibnVtYmVyIjppZihmdCE9Xy5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoQmUuU2hlZXROYW1l'@; put 'c1tmdF0udG9Mb3dlckNhc2UoKSE9Xy5zaGVldHMudG9Mb3dlckNhc2UoKSljb250aW51ZSBlO2JyZWFrO2RlZmF1bHQ6aWYoQXJyYXkuaXNBcnJheSYmQXJyYXkuaXNBcnJheShfLnNoZWV0cykpe2Zvcih2YXIgc289MCxtbz0wO21vIT1fLnNoZWV0cy5sZW5ndGg7KyttbykibnVtYmVyIj09'@; put 'dHlwZW9mIF8uc2hlZXRzW21vXSYmXy5zaGVldHNbbW9dPT1mdCYmKHNvPTEpLCJzdHJpbmciPT10eXBlb2YgXy5zaGVldHNbbW9dJiZfLnNoZWV0c1ttb10udG9Mb3dlckNhc2UoKT09QmUuU2hlZXROYW1lc1tmdF0udG9Mb3dlckNhc2UoKSYmKHNvPTEpO2lmKCFzbyljb250aW51ZSBlfX1p'@; put 'ZighXy5za2lwUGFyc2Upe3ZhciBMaT1ZeShkLGJ0LEV0LEJlLlNoZWV0TmFtZXNbZnRdLGZ0LGt0LFEsT2ksXyxOZSxvZSxkZSk7TGkmJkxpWyIhTERQIl0mJihfaVtmdF09TGlbIiFMRFAiXSxkZWxldGUgTGlbIiFMRFAiXSl9fWlmKHR5cGVvZiBwYXJzZV9zaGVldF9waXZvdDwidSIpZm9y'@; put 'KGZ0PTA7ZnQ8SjkubGVuZ3RoOysrZnQpcGFyc2Vfc2hlZXRfcGl2b3QuYXBwbHkobnVsbCxKOVtmdF0pO2lmKG10PXtEaXJlY3Rvcnk6VCxXb3JrYm9vazpOZSxQcm9wczpCZSxDdXN0cHJvcHM6bnQsRGVwczpRZSxTaGVldHM6USxTaGVldE5hbWVzOkJlLlNoZWV0TmFtZXMsU3RyaW5nczpI'@; put 'OSxTdHlsZXM6ZGUsVGhlbWVzOm9lLFNTRjpJLmdldF90YWJsZSgpfSwhXy5za2lwUGFyc2Upe2lmKGZ1bmN0aW9uIGg1ZShkKXshZHx8IWQuV29ya2Jvb2t8fCFkLldvcmtib29rLk5hbWVzfHxkLldvcmtib29rLk5hbWVzLmZvckVhY2goZnVuY3Rpb24oXyl7aWYoXy5OYW1lJiYiX3hsbm0u'@; put 'Ij09Xy5OYW1lLnNsaWNlKDAsNikmJigiX3hsbm0uUHJpbnRfQXJlYSI9PV8uTmFtZXx8Il94bG5tLlByaW50X1RpdGxlcyI9PV8uTmFtZSkpe3ZhciBtPWQuU2hlZXRzW2QuU2hlZXROYW1lc1tfLlNoZWV0XV07aWYobSl7bVsiIXByaW50Il18fChtWyIhcHJpbnQiXT17fSksbVsiIXByaW50'@; put 'Il0ucHJvcHN8fChtWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIFQ9bVsiIXByaW50Il0sUD1fLlJlZjtpZigiX3hsbm0uUHJpbnRfQXJlYSI9PV8uTmFtZSl7UC5pbmRleE9mKCIhIik+LTEmJihQPVAuc2xpY2UoUC5pbmRleE9mKCIhIikrMSkpO3ZhciBRPXl0KFA9UC5yZXBsYWNlKC9bJF0v'@; put 'ZywiIikpO1QuYXJlYT1RfWVsc2UiX3hsbm0uUHJpbnRfVGl0bGVzIj09Xy5OYW1lJiYoVC50aXRsZXM9e3M6e3I6LTEsYzotMX0sZTp7cjotMSxjOi0xfX0sUC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24oc2Upe3ZhciBkZT16YShzZS5zbGljZShzZS5pbmRleE9mKCIhIikrMSkucmVw'@; put 'bGFjZSgvWyRdL2csIiIpKTtkZS5zLmM+LTEmJihULnRpdGxlcy5zLmM9ZGUucy5jKSxkZS5lLmM+LTEmJihULnRpdGxlcy5lLmM9ZGUuZS5jKSxkZS5zLnI+LTEmJihULnRpdGxlcy5zLnI9ZGUucy5yKSxkZS5lLnI+LTEmJihULnRpdGxlcy5lLnI9ZGUuZS5yKX0pKX19fSl9KG10KSxfJiZf'@; put 'LmJvb2tGaWxlcyYmKG10LmtleXM9bSxtdC5maWxlcz1kLmZpbGVzKSxfJiZfLmJvb2tWQkEmJihULnZiYS5sZW5ndGg+MD9tdC52YmFyYXc9VXQoZCxsaChULnZiYVswXSksITApOlQuZGVmYXVsdHMmJiJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiPT09VC5kZWZhdWx0'@; put 'cy5iaW4mJihtdC52YmFyYXc9VXQoZCwieGwvdmJhUHJvamVjdC5iaW4iLCEwKSkpLGtuJiZrblsiIWlkIl0pe2Zvcih2YXIga3I9W10sRG49MTtEbjw9MTAyNDsrK0RuKWtuWyIhaWQiXVsicklkIitEbl0mJmtuWyIhaWQiXVsicklkIitEbl0uVHlwZSYmL2N1c3RvbVhtbCQvLnRlc3Qoa25b'@; put 'IiFpZCJdWyJySWQiK0RuXS5UeXBlKSYma3IucHVzaChocihrblsiIWlkIl1bInJJZCIrRG5dLlRhcmdldCxULndvcmtib29rc1swXSkpO2tyLmxlbmd0aD4wJiYobXQuQ3VzdG9tWE1MPVtdLGtyLmZvckVhY2goZnVuY3Rpb24oX3Ipe3ZhciBNbj17ZGF0YTp2cihkLGxoKF9yKSl9LE5yPXZm'@; put 'KF9yKTt0cnl7dmFyIGppPUx1KHZyKGQsbGgoTnIpLCEwKSxOcik7aWYoamkpZm9yKHZhciBiaT0xO2JpPD0xMDI0OysrYmkpamlbIiFpZCJdWyJySWQiK2JpXSYmamlbIiFpZCJdWyJySWQiK2JpXS5UeXBlJiYvY3VzdG9tWG1sUHJvcHMkLy50ZXN0KGppWyIhaWQiXVsicklkIitiaV0uVHlw'@; put 'ZSkmJihNbi5wcm9wcz12cihkLGxoKGhyKGppWyIhaWQiXVsicklkIitiaV0uVGFyZ2V0LF9yKSkpKX1jYXRjaHt9bXQuQ3VzdG9tWE1MLnB1c2goTW4pfSkpfXZhciBPcj14dChkLCJ4bC9tb2RlbC9pdGVtLmRhdGEiLCEwKTtPciYmKG10Lm1vZGVsPU9yKSxULmNvbm4mJihtdC5jb25uPVV0'@; put 'KGQsbGgoVC5jb25uKSwhMCkpLHNyLmxlbmd0aCYmKG10LkV4dGVybmFsV0I9c3IpLE5lJiYoTmUuUFBJPXA1KX1yZXR1cm4gXy50ZW1wbGF0ZSYmKG10Ll93c3BhdGhzPXFuLG10Ll9zdHlwYXRoPWxoKFQuc3R5bGV8fCIiKSxtdC5fd2JwYXRoPWxoKFQud29ya2Jvb2tzWzBdfHwieGwvd29y'@; put 'a2Jvb2sueG1sIiksbXQuX3ZtbHBhdGhzPV9pLG10Ll93YnJlbHNwYXRoPWFyLG10Ll9jdD12cihkLCJbQ29udGVudF9UeXBlc10ueG1sIiksbXQuZmlsZXM9ZC5maWxlcyxzRShtdCxkLF8pKSxtdH1mdW5jdGlvbiBaeShkLF8pe3ZhciBtPV98fHt9O20ucGFzc3dvcmR8fChtLnBhc3N3b3Jk'@; put 'PSJWZWx2ZXRTd2VhdHNob3AiKTt2YXIgVD0iV29ya2Jvb2siLFA9YWUuZmluZChkLFQpO3RyeXtpZighKFA9YWUuZmluZChkLFQ9Ii8hRGF0YVNwYWNlcy9WZXJzaW9uIikpfHwhUC5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK1Qp'@; put 'O2lmKGZ1bmN0aW9uIE9YKGQpe3ZhciBfPXt9O18uaWQ9ZC5yZWFkX3NoaWZ0KDAsImxwcDQiKSxfLlI9TGcoZCw0KSxfLlU9TGcoZCw0KSxfLlc9TGcoZCw0KX0oUC5jb250ZW50KSwhKFA9YWUuZmluZChkLFQ9Ii8hRGF0YVNwYWNlcy9EYXRhU3BhY2VNYXAiKSl8fCFQLmNvbnRlbnQpdGhy'@; put 'b3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrVCk7dmFyIFE9ZnVuY3Rpb24gaFMoZCl7dmFyIF89W107ZC5sKz00O2Zvcih2YXIgbT1kLnJlYWRfc2hpZnQoNCk7bS0tID4wOylfLnB1c2godTUoZCkpO3JldHVybiBffShQLmNvbnRlbnQpO2lmKDEhPT1R'@; put 'Lmxlbmd0aHx8MSE9PVFbMF0uY29tcHMubGVuZ3RofHwwIT09UVswXS5jb21wc1swXS50fHwiU3Ryb25nRW5jcnlwdGlvbkRhdGFTcGFjZSIhPT1RWzBdLm5hbWV8fCJFbmNyeXB0ZWRQYWNrYWdlIiE9PVFbMF0uY29tcHNbMF0udil0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRl'@; put 'ZCBmaWxlIGJhZCAiK1QpO2lmKCEoUD1hZS5maW5kKGQsVD0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZUluZm8vU3Ryb25nRW5jcnlwdGlvbkRhdGFTcGFjZSIpKXx8IVAuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitUKTt2YXIgc2U9'@; put 'ZnVuY3Rpb24gczVlKGQpe3ZhciBfPVtdO2QubCs9NDtmb3IodmFyIG09ZC5yZWFkX3NoaWZ0KDQpO20tLSA+MDspXy5wdXNoKGQucmVhZF9zaGlmdCgwLCJscHA0IikpO3JldHVybiBffShQLmNvbnRlbnQpO2lmKDEhPXNlLmxlbmd0aHx8IlN0cm9uZ0VuY3J5cHRpb25UcmFuc2Zvcm0iIT1z'@; put 'ZVswXSl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCAiK1QpO2lmKCEoUD1hZS5maW5kKGQsVD0iLyFEYXRhU3BhY2VzL1RyYW5zZm9ybUluZm8vU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybS8hUHJpbWFyeSIpKXx8IVAuY29udGVudCl0aHJvdyBuZXcgRXJy'@; put 'b3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitUKTshZnVuY3Rpb24gSEEoZCl7dmFyIF89ZnVuY3Rpb24gTlgoZCl7dmFyIF89e307cmV0dXJuIGQucmVhZF9zaGlmdCg0KSxkLmwrPTQsXy5pZD1kLnJlYWRfc2hpZnQoMCwibHBwNCIpLF8ubmFtZT1kLnJlYWRfc2hpZnQo'@; put 'MCwibHBwNCIpLF8uUj1MZyhkLDQpLF8uVT1MZyhkLDQpLF8uVz1MZyhkLDQpLF99KGQpO2lmKF8uZW5hbWU9ZC5yZWFkX3NoaWZ0KDAsIjhscHA0IiksXy5ibGtzej1kLnJlYWRfc2hpZnQoNCksXy5jbW9kZT1kLnJlYWRfc2hpZnQoNCksNCE9ZC5yZWFkX3NoaWZ0KDQpKXRocm93IG5ldyBF'@; put 'cnJvcigiQmFkICFQcmltYXJ5IHJlY29yZCIpO3JldHVybiBffShQLmNvbnRlbnQpfWNhdGNoe31pZighKFA9YWUuZmluZChkLFQ9Ii9FbmNyeXB0aW9uSW5mbyIpKXx8IVAuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitUKTt2YXIg'@; put 'b2U9ZnVuY3Rpb24gUFgoZCl7dmFyIF89TGcoZCk7c3dpdGNoKF8uTWlub3Ipe2Nhc2UgMjpyZXR1cm5bXy5NaW5vcix4OShkKV07Y2FzZSAzOnJldHVybltfLk1pbm9yLGw1ZSgpXTtjYXNlIDQ6cmV0dXJuW18uTWlub3IsZlMoZCldfXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlw'@; put 'dGVkIGZpbGUgdW5yZWNvZ25pemVkIFZlcnNpb246ICIrXy5NaW5vcil9KFAuY29udGVudCk7aWYoIShQPWFlLmZpbmQoZCxUPSIvRW5jcnlwdGVkUGFja2FnZSIpKXx8IVAuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitUKTtpZig0'@; put 'PT1vZVswXSlyZXR1cm4gZnVuY3Rpb24gWGVlKGQsXyxtLFQpe3ZhciBQPWFlLnV0aWxzLnByZXBfYmxvYjtpZigiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9rZXlFbmNyeXB0b3IvcGFzc3dvcmQiIT1kLnVyaSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVk'@; put 'IEVDTUEtMzc2IEFnaWxlIFVSSSAiK2QudXJpKTt2YXIgUT1kLmVuY3NbMF0sc2U9US5oYXNoQWxnb3JpdGhtLG9lPSJhZXMtMjU2LWNiYyIsZGU9QnVmZmVyLmZyb20oUS5zYWx0VmFsdWUsImJhc2U2NCIpLExlPUJ1ZmZlci5mcm9tKGQuc2FsdFZhbHVlLCJiYXNlNjQiKSxOZT0rUS5ibG9j'@; put 'a1NpemUsQmU9K1Eua2V5Qml0cz4+MyxaZT1TZChCdWZmZXIuY29uY2F0KFtkZSxCdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLG0pKV0pLHNlKSxudD1CdWZmZXIuYWxsb2MoNCk7UChudCwwKTtmb3IodmFyIG10PTA7bXQ8US5zcGluQ291bnQ7KyttdCludC5sPTAsbnQu'@; put 'd3JpdGVfc2hpZnQoNCxtdCksWmU9U2QoQnVmZmVyLmNvbmNhdChbbnQsWmVdKSxzZSk7dmFyIFFlPWZ1bmN0aW9uKGdyLHFuLF9pLE9pKXt2YXIgc289U2QoQnVmZmVyLmNvbmNhdChbZ3IsQnVmZmVyLmZyb20oWzIwLDExMCwxMSwyMzEsMTcxLDE3MiwyMDgsMjE0XSldKSxPaSksbW89c28u'@; put 'bGVuZ3RoPj1faT9zby5zbGljZSgwLF9pKTpCdWZmZXIuYWxsb2MoX2kpO2lmKHNvLmxlbmd0aDxfaSl7Zm9yKHZhciBMaT0wO0xpPHNvLmxlbmd0aDsrK0xpKW1vW0xpXT1zb1tMaV07Zm9yKDtMaTxfaTsrK0xpKW1vW0xpXT01NH1yZXR1cm4gbW99KFplLDAsQmUsc2UpO3N3aXRjaChRLmNp'@; put 'cGhlckFsZ29yaXRobSl7Y2FzZSJBRVMiOmlmKCJDaGFpbmluZ01vZGVDQkMiIT1RLmNpcGhlckNoYWluaW5nKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2lwaGVyIGNoYWluaW5nICIrUS5jaXBoZXJDaGFpbmluZyk7b2U9ImFlcy0iK1Eua2V5Qml0cysiLWNiYyI7YnJlYWs7Y2Fz'@; put 'ZSJSQzIiOm9lPSJyYzIiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjaXBoZXIgYWxnbyAiK1EuY2lwaGVyQWxnb3JpdGhtKX1kZT1mdW5jdGlvbihzcil7Zm9yKHZhciBncj1CdWZmZXIuYWxsb2MoTmUpLHFuPTA7cW48TmU7Kytxbilncltxbl09cW48c3Iu'@; put 'bGVuZ3RoP3NyW3FuXTo1NDtyZXR1cm4gZ3J9KGRlKTt2YXIgZnQ9QnVmZmVyLmZyb20oUS5lbmNyeXB0ZWRLZXlWYWx1ZSwiYmFzZTY0Iiksa3Q9STUoUWUsZGUsb2UpLnVwZGF0ZShmdCksYnQ9STUoU2QoQnVmZmVyLmNvbmNhdChbWmUsQnVmZmVyLmZyb20oWzIxNSwxNzAsMTUsMTA5LDQ4'@; put 'LDk3LDUyLDc4XSldKSxzZSkuc2xpY2UoMCxCZSksZGUsb2UpLnVwZGF0ZShCdWZmZXIuZnJvbShRLmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlLCJiYXNlNjQiKSksRXQ9U2QoSTUoU2QoQnVmZmVyLmNvbmNhdChbWmUsQnVmZmVyLmZyb20oWzI1NCwxNjcsMjEwLDExOCw1OSw3NSwxNTgs'@; put 'MTIxXSldKSxzZSkuc2xpY2UoMCxCZSksZGUsb2UpLnVwZGF0ZShCdWZmZXIuZnJvbShRLmVuY3J5cHRlZFZlcmlmaWVySGFzaElucHV0LCJiYXNlNjQiKSksc2UpLFZ0PStRLmhhc2hTaXplfHxNYXRoLm1pbihidC5sZW5ndGgsRXQubGVuZ3RoKTtpZigwIT1idC5zbGljZSgwLFZ0KS5jb21w'@; put 'YXJlKEV0LnNsaWNlKDAsVnQpKSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBQYXNzd29yZCIpO1AoXywwKTt2YXIgdW49Xy5yZWFkX3NoaWZ0KDQpO18ubCs9NDt2YXIgbnI9W10sbm49QnVmZmVyLmNvbmNhdChbTGUsQnVmZmVyLmFsbG9jKDQpXSk7Zm9yKFAobm4pLG10PTA7Xy5sPF8u'@; put 'bGVuZ3RoOylubi5sPWRlLmxlbmd0aCxubi53cml0ZV9zaGlmdCg0LG10KSxuci5wdXNoKEk1KGt0LFNkKEJ1ZmZlci5mcm9tKG5uKSxzZSkuc2xpY2UoMCwxNiksb2UpLnVwZGF0ZShCdWZmZXIuZnJvbShfLnNsaWNlKF8ubCxfLmwrNDA5NikpKSksXy5sKz00MDk2LCsrbXQ7dmFyIGpuPUJ1'@; put 'ZmZlci5jb25jYXQobnIpLnNsaWNlKDAsdW4pLGtuPVFyKFQpO3JldHVybiBrbi50eXBlPSJidWZmZXIiLFk4KGpuLGtuKX0ob2VbMV0sUC5jb250ZW50LG0ucGFzc3dvcmR8fCIiLG0pO2lmKDI9PW9lWzBdKXJldHVybiBmdW5jdGlvbiBGYyhkLF8sbSxUKXt2YXIgUD1hZS51dGlscy5wcmVw'@; put 'X2Jsb2I7aWYoIlN0ZCIhPT1kLnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBCYWQgU3RhbmRhcmQgRW5jcnlwdGlvbiIpO3ZhciBRPWQudi5TYWx0LHNlPWQudi5WZXJpZmllcixvZT1kLnYuVmVyaWZpZXJIYXNoO2lmKDM2IT1kLmguRmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3'@; put 'NiBTdGFuZGFyZCBFbmNyeXB0aW9uIGJhZCBGbGFncyIpO3ZhciBkZT0wLExlPSIiO3N3aXRjaChkLmguQWxnSUQpe2Nhc2UgMjYxMjY6ZGU9MTI4LExlPSJhZXMtMTI4LWVjYiI7YnJlYWs7Y2FzZSAyNjEyNzpkZT0xOTYsTGU9ImFlcy0xOTItZWNiIjticmVhaztjYXNlIDI2MTI4OmRlPTI1'@; put 'NixMZT0iYWVzLTI1Ni1lY2IiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBCYWQgU3RhbmRhcmQgRW5jcnlwdGlvbiIpfWlmKDMyNzcyIT1kLmguQWxnSURIYXNoKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgQmFkIFN0YW5kYXJkIEVuY3J5cHRpb24iKTtpZihk'@; put 'LmguS2V5U2l6ZSE9ZGUpdGhyb3cgbmV3IEVycm9yKCJBbGdJRC9LZXlTaXplIG1pc21hdGNoIik7aWYoMjQhPWQuaC5Qcm92aWRlclR5cGUpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiB1bnN1cHBvcnRlZCBQcm92aWRlclR5cGUgIitkLmguUHJvdmlkZXJUeXBlKTtpZigiTWljcm9zb2Z0'@; put 'IEVuaGFuY2VkIFJTQSBhbmQgQUVTIENyeXB0b2dyYXBoaWMgUHJvdmlkZXIiIT09ZC5oLkNTUE5hbWUuc2xpY2UoMCw1MykpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDcnlwdG8gUHJvdmlkZXIgIitkLmguQ1NQTmFtZSk7dmFyIEJlPSJTSEEtMSIsWmU9ZGU+PjMsbnQ9U2QoQnVm'@; put 'ZmVyLmNvbmNhdChbUSxjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLG0pXSksQmUpLG10PUJ1ZmZlci5hbGxvYyg0KTtQKG10LDApO2Zvcih2YXIgUWU9MDtRZTw1ZTQ7KytRZSltdC5sPTAsbXQud3JpdGVfc2hpZnQoNCxRZSksbnQ9U2QoQnVmZmVyLmNvbmNhdChbbXQsbnRdKSxCZSk7bXQu'@; put 'bD0wLG10LndyaXRlX3NoaWZ0KDQsMCk7dmFyIG5yLG5uLGFyLGpuLGtuLGt0PShqbj0oYXI9ZnVuY3Rpb24oZ3IscW4sX2kpe2Zvcih2YXIgT2k9QnVmZmVyLmFsbG9jKDY0KSxzbz0wO3NvPE9pLmxlbmd0aDsrK3NvKU9pW3NvXT1ncjtmb3Ioc289MDtzbzxxbi5sZW5ndGg7KytzbylPaVtz'@; put 'b11ePXFuW3NvXTtyZXR1cm4gU2QoT2ksX2kpfSkoNTQsbnI9U2QoQnVmZmVyLmNvbmNhdChbbnQsbXRdKSxCZSksbm49QmUpLGtuPWFyKDkyLG5yLG5uKSxCdWZmZXIuY29uY2F0KFtqbixrbl0pLnNsaWNlKDAsWmUpKTtpZihJNShrdCxCdWZmZXIuYWxsb2MoMCksTGUpLnVwZGF0ZShvZSku'@; put 'c2xpY2UoMCwyMCkuY29tcGFyZShTZChJNShrdCxCdWZmZXIuYWxsb2MoMCksTGUpLnVwZGF0ZShzZSksQmUpKSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBQYXNzd29yZCIpO1AoXywwKTt2YXIgYnQ9Xy5yZWFkX3NoaWZ0KDQpO18ubCs9NDt2YXIgRXQ9W107Zm9yKFFlPTA7Xy5sPF8u'@; put 'bGVuZ3RoOylFdC5wdXNoKEk1KGt0LEJ1ZmZlci5hbGxvYygwKSxMZSkudXBkYXRlKF8uc2xpY2UoXy5sLF8ubCs0MDk2KSkpLF8ubCs9NDA5NiwrK1FlO3JldHVybiBZOChCdWZmZXIuY29uY2F0KEV0KS5zbGljZSgwLGJ0KSxUKX0ob2VbMV0sUC5jb250ZW50LG0ucGFzc3dvcmR8fCIiLG0p'@; put 'O3Rocm93IG5ldyBFcnJvcigiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQiKX1mdW5jdGlvbiBydGUoZCxfKXtpZighXy50ZW1wbGF0ZSl7aWYoIm9kcyI9PV8uYm9va1R5cGUpcmV0dXJuIEFSKGQsXyk7Z1MoXyYmXy5QUEl8fDk2KSxkJiYhZC5TU0YmJihkLlNTRj1JLmdldF90YWJsZSgp'@; put 'KSxkJiZkLlNTRiYmKHVlKEkpLEkubG9hZF90YWJsZShkLlNTRiksXy5yZXZzc2Y9aGUoZC5TU0YpLF8ucmV2c3NmW2QuU1NGWzY1NTM1XV09MCxfLnNzZj1kLlNTRiksZC5TdHlsZXM9e0ZvbnRzOl8uRm9udHM9W3tzejoxMixjb2xvcjp7dGhlbWU6MSxyZ2I6IjAwMDAwMCJ9LG5hbWU6IkNh'@; put 'bGlicmkiLGZhbWlseToyLHNjaGVtZToibWlub3IifV0sRmlsbHM6Xy5GaWxscz1be3BhdHRlcm5UeXBlOiJub25lIn0se3BhdHRlcm5UeXBlOiJncmF5MTI1In1dLEJvcmRlcnM6Xy5Cb3JkZXJzPVt7fV0sRFhGOl8uRFhGPWQuU3R5bGVzJiZkLlN0eWxlcy5EWEZ8fFtdLFRhYmxlOl8uVGFi'@; put 'bGU9ZC5TdHlsZXMmJmQuU3R5bGVzLlRhYmxlfHxbXX0sXy5vdmVycmlkZU1EVz9zZD1fLm92ZXJyaWRlTURXOiRtKF8uRm9udHNbMF0pLF8ucmVscz17fSxfLndicmVscz17fSxfLlN0cmluZ3M9W10sXy5TdHJpbmdzLkNvdW50PTAsXy5TdHJpbmdzLlVuaXF1ZT0wLE01P18ucmV2U3RyaW5n'@; put 'cz1uZXcgTWFwOihfLnJldlN0cmluZ3M9e30sXy5yZXZTdHJpbmdzLmZvbz1bXSxkZWxldGUgXy5yZXZTdHJpbmdzLmZvbyk7dmFyIG09Inhsc2IiPT1fLmJvb2tUeXBlPyJiaW4iOiJ4bWwiLFQ9UUguaW5kZXhPZihfLmJvb2tUeXBlKT4tMSxQPXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNo'@; put 'YXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sbGlua3M6W10sY29yZXByb3BzOltdLGV4dHByb3BzOltdLGN1c3Rwcm9wczpbXSx0aGVtZXM6W10sc3R5bGVzOltdLGNhbGNjaGFpbnM6W10sdmJhOltdLGRyYXdpbmdzOltdLHBpdm90czpb'@; put 'XSxwaXZvdGNhY2hlczpbXSxwaXZvdHJlY29yZHM6W10sZGF0YW1vZGVsczpbXSxjaGFydG9ianM6W10sY2hhcnRzdHlsZXM6W10sY2hhcnRjb2xvcnM6W10sY2hhcnRleHM6W10sdGFibGVzOltdLGNvbm5zOltdLGN0cmxwcm9wczpbXSxjdXN0b214bWxwcm9wczpbXSxUT0RPOltdLHhtbG5z'@; put 'OiIifTtKZWUoXz1ffHx7fSk7dmFyIFE9dmkoKSxzZT0iIixvZT0wO2lmKF8uY2VsbFhmcz1bXSxfLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxBMihfLmNlbGxYZnMsXy5jZWxsU3R5bGVYZnMse30se3JldnNzZjp7R2VuZXJhbDowfX0pLGQuUHJvcHN8fChkLlByb3BzPXt9KSx6'@; put 'bihRLHNlPSJkb2NQcm9wcy9jb3JlLnhtbCIsZnVuY3Rpb24gVGcoZCxfKXt2YXIgbT1ffHx7fSxUPVtwbyxwcF0sUD17fTtpZighZCYmIW0uUHJvcHMpcmV0dXJuIFQuam9pbigiIik7ZCYmKG51bGwhPWQuQ3JlYXRlZERhdGUmJk1nKCJkY3Rlcm1zOmNyZWF0ZWQiLCJzdHJpbmciPT10eXBl'@; put 'b2YgZC5DcmVhdGVkRGF0ZT9kLkNyZWF0ZWREYXRlOmEwKGQuQ3JlYXRlZERhdGUsbS5XVEYpLHsieHNpOnR5cGUiOiJkY3Rlcm1zOlczQ0RURiJ9LFQsUCksbnVsbCE9ZC5Nb2RpZmllZERhdGUmJk1nKCJkY3Rlcm1zOm1vZGlmaWVkIiwic3RyaW5nIj09dHlwZW9mIGQuTW9kaWZpZWREYXRl'@; put 'P2QuTW9kaWZpZWREYXRlOmEwKGQuTW9kaWZpZWREYXRlLG0uV1RGKSx7InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSxULFApKTtmb3IodmFyIFE9MDtRIT1YYS5sZW5ndGg7KytRKXt2YXIgc2U9WGFbUV0sb2U9bS5Qcm9wcyYmbnVsbCE9bS5Qcm9wc1tzZVsxXV0/bS5Qcm9wc1tzZVsx'@; put 'XV06ZD9kW3NlWzFdXTpudWxsOyEwPT09b2U/b2U9IjEiOiExPT09b2U/b2U9IjAiOiJudW1iZXIiPT10eXBlb2Ygb2UmJihvZT1TdHJpbmcob2UpKSxudWxsIT1vZSYmTWcoc2VbMF0sb2UsbnVsbCxULFApfXJldHVybiBULmxlbmd0aD4yJiYoVFtULmxlbmd0aF09IjwvY3A6Y29yZVByb3Bl'@; put 'cnRpZXM+IixUWzFdPVRbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFQuam9pbigiIil9KGQuUHJvcHMsXykpLFAuY29yZXByb3BzLnB1c2goc2UpLGFpKF8ucmVscywyLHNlLHVhLkNPUkVfUFJPUFMpLHNlPSJkb2NQcm9wcy9hcHAueG1sIiwhZC5Qcm9wc3x8IWQuUHJvcHMuU2hlZXROYW1lcylp'@; put 'ZihkLldvcmtib29rJiZkLldvcmtib29rLlNoZWV0cyl7Zm9yKHZhciBkZT1bXSxMZT0wO0xlPGQuU2hlZXROYW1lcy5sZW5ndGg7KytMZSkyIT0oZC5Xb3JrYm9vay5TaGVldHNbTGVdfHx7fSkuSGlkZGVuJiZkZS5wdXNoKGQuU2hlZXROYW1lc1tMZV0pO2QuUHJvcHMuU2hlZXROYW1lcz1k'@; put 'ZX1lbHNlIGQuUHJvcHMuU2hlZXROYW1lcz1kLlNoZWV0TmFtZXM7ZC5Qcm9wcy5Xb3Jrc2hlZXRzPWQuUHJvcHMuU2hlZXROYW1lcy5sZW5ndGgsem4oUSxzZSxmdW5jdGlvbiBqbShkKXt2YXIgXz1bXSxtPVZyO3JldHVybiBkfHwoZD17fSksZC5BcHBsaWNhdGlvbj0iU2hlZXRKUyIsX1tf'@; put 'Lmxlbmd0aF09cG8sX1tfLmxlbmd0aF09Qm0sZmMuZm9yRWFjaChmdW5jdGlvbihUKXtpZih2b2lkIDAhPT1kW1RbMV1dKXt2YXIgUDtzd2l0Y2goVFsyXSl7Y2FzZSJzdHJpbmciOlA9QmkoU3RyaW5nKGRbVFsxXV0pKTticmVhaztjYXNlImJvb2wiOlA9ZFtUWzFdXT8idHJ1ZSI6ImZhbHNl'@; put 'In12b2lkIDAhPT1QJiYoX1tfLmxlbmd0aF09bShUWzBdLFApKX19KSxfW18ubGVuZ3RoXT1tKCJIZWFkaW5nUGFpcnMiLG0oInZ0OnZlY3RvciIsbSgidnQ6dmFyaWFudCIsIjx2dDpscHN0cj5Xb3Jrc2hlZXRzPC92dDpscHN0cj4iKSttKCJ2dDp2YXJpYW50IixtKCJ2dDppNCIsU3RyaW5n'@; put 'KGQuV29ya3NoZWV0cykpKSx7c2l6ZToyLGJhc2VUeXBlOiJ2YXJpYW50In0pKSxfW18ubGVuZ3RoXT1tKCJUaXRsZXNPZlBhcnRzIixtKCJ2dDp2ZWN0b3IiLGQuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24oVCl7cmV0dXJuIjx2dDpscHN0cj4iK0JpKFQpKyI8L3Z0Omxwc3RyPiJ9KS5qb2lu'@; put 'KCIiKSx7c2l6ZTpkLldvcmtzaGVldHMsYmFzZVR5cGU6Imxwc3RyIn0pKSxfLmxlbmd0aD4yJiYoX1tfLmxlbmd0aF09IjwvUHJvcGVydGllcz4iLF9bMV09X1sxXS5yZXBsYWNlKCIvPiIsIj4iKSksXy5qb2luKCIiKX0oZC5Qcm9wcykpLFAuZXh0cHJvcHMucHVzaChzZSksYWkoXy5yZWxz'@; put 'LDMsc2UsdWEuRVhUX1BST1BTKSxkLkN1c3Rwcm9wcyE9PWQuUHJvcHMmJkZlKGQuQ3VzdHByb3BzfHx7fSkubGVuZ3RoPjAmJih6bihRLHNlPSJkb2NQcm9wcy9jdXN0b20ueG1sIixmdW5jdGlvbiBvMShkKXt2YXIgXz1bcG8scDNdO2lmKCFkKXJldHVybiBfLmpvaW4oIiIpO3ZhciBtPTE7'@; put 'cmV0dXJuIEZlKGQpLmZvckVhY2goZnVuY3Rpb24oUCl7KyttLF9bXy5sZW5ndGhdPVZyKCJwcm9wZXJ0eSIsZnVuY3Rpb24gYmcoZCxfKXtzd2l0Y2godHlwZW9mIGQpe2Nhc2Uic3RyaW5nIjp2YXIgbT1WcigidnQ6bHB3c3RyIixCaShkKSk7cmV0dXJuIF8mJihtPW0ucmVwbGFjZSgvJnF1'@; put 'b3Q7L2csIl94MDAyMl8iKSksbTtjYXNlIm51bWJlciI6cmV0dXJuIFZyKCgwfGQpPT1kPyJ2dDppNCI6InZ0OnI4IixCaShTdHJpbmcoZCkpKTtjYXNlImJvb2xlYW4iOnJldHVybiBWcigidnQ6Ym9vbCIsZD8idHJ1ZSI6ImZhbHNlIil9aWYoZCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIFZy'@; put 'KCJ2dDpmaWxldGltZSIsYTAoZCkpO3Rocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIHNlcmlhbGl6ZSAiK2QpfShkW1BdLCEwKSx7Zm10aWQ6IntENUNERDUwNS0yRTlDLTEwMUItOTM5Ny0wODAwMkIyQ0Y5QUV9IixwaWQ6bSxuYW1lOkJpKFApfSl9KSxfLmxlbmd0aD4yJiYoX1tfLmxlbmd0'@; put 'aF09IjwvUHJvcGVydGllcz4iLF9bMV09X1sxXS5yZXBsYWNlKCIvPiIsIj4iKSksXy5qb2luKCIiKX0oZC5DdXN0cHJvcHMpKSxQLmN1c3Rwcm9wcy5wdXNoKHNlKSxhaShfLnJlbHMsNCxzZSx1YS5DVVNUX1BST1BTKSk7dmFyIE5lPVtdLEJlPVtdO2ZvcihvZT0xO29lPD1kLlNoZWV0TmFt'@; put 'ZXMubGVuZ3RoOysrb2Upe3ZhciBtdD17IiFpZCI6e319LFFlPWQuU2hlZXRzW2QuU2hlZXROYW1lc1tvZS0xXV0sZnQ9KFFlfHx7fSlbIiF0eXBlIl18fCJzaGVldCI7c3dpdGNoKGZ0KXtjYXNlImNoYXJ0IjppZih0eXBlb2Ygd3JpdGVfZHJhd2luZ188InUiKXt6bihRLHNlPSJ4bC9jaGFy'@; put 'dHNoZWV0cy9zaGVldCIrb2UrIi4iK20sVGVlKG9lLTEsc2UsXyxkLG10KSksUC5jaGFydHMucHVzaChzZSksYWkoXy53YnJlbHMsLTEsImNoYXJ0c2hlZXRzL3NoZWV0IitvZSsiLiIrbSx1YS5DUyk7YnJlYWt9ZGVmYXVsdDp6bihRLHNlPSJ4bC93b3Jrc2hlZXRzL3NoZWV0IitvZSsiLiIr'@; put 'bSxNZWUob2UtMSxzZSxfLGQsbXQpKSxQLnNoZWV0cy5wdXNoKHNlKSxhaShfLndicmVscywtMSwid29ya3NoZWV0cy9zaGVldCIrb2UrIi4iK20sdWEuV1NbMF0pfWlmKFFlKXsiY2hhcnQiPT1mdCYmIVFlWyIhcG9zIl0mJihRZVsiIXBvcyJdPXt4OjAseTowLHc6OTAwLGg6NjAwfSk7dmFy'@; put 'IGt0PVFlWyIhY29tbWVudHMiXSxidD0hMTtpZihrdCYma3QubGVuZ3RoPjApe3ZhciBFdD0ieGwvY29tbWVudHMiK29lKyIuIittO3puKFEsRXQsREIoa3QsRXQsXykpLFAuY29tbWVudHMucHVzaChFdCksYWkobXQsLTEsIi4uL2NvbW1lbnRzIitvZSsiLiIrbSx1YS5DTU5UKSxidD0hMH0o'@; put 'UWVbIiFjb250cm9scyJdfHxbXSkubGVuZ3RoPjAmJihidD0hMCksUWVbIiFsZWdhY3kiXSYmYnQmJnpuKFEsInhsL2RyYXdpbmdzL3ZtbERyYXdpbmciK29lKyIudm1sIix4MihvZSxRZVsiIWNvbW1lbnRzIl0sUWVbIiFjb250cm9scyJdLFFlKSksUWVbIiFsZWdhY3lIRiJdJiZZSChRLDAs'@; put 'b2UsUWVbIiFwcmludCJdLmltYWdlcyk7dmFyIFZ0PSgiY2hhcnQiPT1RZVsiIXR5cGUiXT9bUWVdOlFlWyIhY2hhcnRzIl18fFtdKS5jb25jYXQoKFFlWyIhaW1hZ2VzIl18fFtdKS5tYXAoZnVuY3Rpb24odW4pe3JldHVybiB1blsiIXR5cGUiXXx8KHVuWyIhdHlwZSJdPSJpbWFnZSIpLHVu'@; put 'fSkpLmNvbmNhdCgoUWVbIiFzaGFwZXMiXXx8W10pLm1hcChmdW5jdGlvbih1bil7cmV0dXJuIHVuWyIhdHlwZSJdfHwodW5bIiF0eXBlIl09InNoYXBlIiksdW59KSk7VnQmJlZ0Lmxlbmd0aCYmKHR5cGVvZiB3cml0ZV9kcmF3aW5nXzwidSI/d3JpdGVfZHJhd2luZ18oUSxQLG9lLFFlLFZ0'@; put 'KTooem4oUSwieGwvZHJhd2luZ3MvZHJhd2luZyIrb2UrIi54bWwiLHdRKCkpLFAuZHJhd2luZ3MucHVzaCgieGwvZHJhd2luZ3MvZHJhd2luZyIrb2UrIi54bWwiKSkpLGRlbGV0ZSBRZVsiIWNvbW1lbnRzIl0sZGVsZXRlIFFlWyIhbGVnYWN5Il0sZGVsZXRlIFFlWyIhbGVnYWN5SEYiXX1R'@; put 'ZSYmUWVbIiFwaXZvdHMiXSYmInhtbCI9PW0mJnR5cGVvZiB3cml0ZV9waXZvdF94bWw8InUiJiZRZVsiIXBpdm90cyJdLmZvckVhY2gobnQpLG10WyIhaWQiXS5ySWQxJiZ6bihRLHZmKHNlKSxDMihtdCkpLFFlJiZRZVsiIXRhYmxlcyJdJiYieG1sIj09bSYmUWVbIiF0YWJsZXMiXS5mb3JF'@; put 'YWNoKFplKX1yZXR1cm4gbnVsbCE9Xy5TdHJpbmdzJiZfLlN0cmluZ3MubGVuZ3RoPjAmJih6bihRLHNlPSJ4bC9zaGFyZWRTdHJpbmdzLiIrbSxjUihfLlN0cmluZ3Msc2UsXykpLFAuc3Rycy5wdXNoKHNlKSxhaShfLndicmVscywtMSwic2hhcmVkU3RyaW5ncy4iK20sdWEuU1NUKSksInht'@; put 'bCI9PW0mJnR5cGVvZiB3cml0ZV9waXZvdF94bWw8InUiJiZ3cml0ZV9waXZvdF94bWwoTmUsZCxRLFAsXyksInhtbCI9PW0mJmZ1bmN0aW9uIE15KGQsXyxtLFQpe2QuZm9yRWFjaChmdW5jdGlvbihQLFEpe3ZhciBzZT1fLlNoZWV0c1tfLlNoZWV0TmFtZXNbUFswXV1dLG9lPSJ4bC90YWJs'@; put 'ZXMvdGFibGUiKyhQWzBdKzEpKyJfIitQWzFdKyIueG1sIjtULnRhYmxlcy5wdXNoKG9lKTt2YXIgZGU9UFsyXS5yZWZ8fHNlWyIhcmVmIl07InN0cmluZyIhPXR5cGVvZiBkZSYmKGRlPWh0KGRlKSk7dmFyIExlPXl0KGRlKSxOZT1QWzJdLm5hbWV8fCJzanN0YmxfIitQWzBdKyJfIitQWzFd'@; put 'LEJlPVtwb10sWmU9IV9uKFBbMl0uaGVhZGVyKSxudD1aZSYmIV9uKFBbMl0uZmlsdGVyKTtCZS5wdXNoKCc8dGFibGUgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgaWQ9IicrKFErMSkrJyIgbmFtZT0iJytCaShOZSkr'@; put 'JyIgZGlzcGxheU5hbWU9IicrQmkoTmUpKyciIHJlZj0iJytkZSsnIiAnKyhudWxsIT1QWzJdLmhlYWRlciYmMSE9UFsyXS5oZWFkZXI/J2hlYWRlclJvd0NvdW50PSInKyhQWzJdLmhlYWRlcnx8MCkrJyIgJzoiIikrIj4iKSxudCYmQmUucHVzaCgnPGF1dG9GaWx0ZXIgcmVmPSInK2RlKyci'@; put 'Lz4nKSxCZS5wdXNoKCc8dGFibGVDb2x1bW5zIGNvdW50PSInKyhMZS5lLmMtTGUucy5jKzEpKyciPicpO2Zvcih2YXIgbXQ9W10sUWU9TGUucy5jO1FlPD1MZS5lLmM7KytRZSlpZihaZSl7Zm9yKHZhciBmdD1xaSh7cjpMZS5zLnIsYzpRZX0pLGt0PXNlW2Z0XSxidD1QWzJdLmNvbHMmJlBb'@; put 'Ml0uY29sc1tRZS1MZS5zLmNdJiZQWzJdLmNvbHNbUWUtTGUucy5jXS5uYW1lfHxrdCYmKGt0Lnd8fGt0LnYpfHwiQ29sdW1uICIrKFFlLUxlLnMuYysxKSxFdD1idCxWdD0xO210LmluZGV4T2YoRXQpPi0xJiYrK1Z0PDE2Mzg0OylFdD1idCtWdDtpZihFdCE9YnQpdGhyb3cidGFibGUgY29s'@; put 'dW1ucyAiK1FlKyIgYW5kICIrKG10LmluZGV4T2YoYnQpK0xlLnMuYykrIiBoYXZlIHRoZSBzYW1lIGhlYWRlciAnIitidCsiJzsgdHJ5IHNldHRpbmcgY2VsbCAiK2Z0KyIgdG8gJyIrRXQrIiciO210LnB1c2goRXQpLEJlLnB1c2goJzx0YWJsZUNvbHVtbiBpZD0iJysoUFsyXS5jb2xzJiZQ'@; put 'WzJdLmNvbHNbUWUtTGUucy5jXSYmbnVsbCE9UFsyXS5jb2xzW1FlLUxlLnMuY10uaWQ/UFsyXS5jb2xzW1FlLUxlLnMuY10uaWQ6UWUtTGUucy5jKzEpKyciIG5hbWU9IicrQmkoRXQpKyciLz4nKX1lbHNlIEJlLnB1c2goUFsyXS5jb2xzJiZQWzJdLmNvbHNbUWUtTGUucy5jXT8nPHRhYmxl'@; put 'Q29sdW1uIGlkPSInK1BbMl0uY29sc1tRZS1MZS5zLmNdLmlkKyciIG5hbWU9IicrUFsyXS5jb2xzW1FlLUxlLnMuY10ubmFtZSsnIi8+JzonPHRhYmxlQ29sdW1uIGlkPSInKyhRZS1MZS5zLmMrMSkrJyIgdW5pcXVlTmFtZT0iJysoUWUtTGUucy5jKzEpKyciIG5hbWU9IicrKFFlLUxlLnMu'@; put 'YysxKSsnIi8+Jyk7QmUucHVzaCgiPC90YWJsZUNvbHVtbnM+Iik7dmFyIG5yPSsoITEhPT0oUFsyXS5zdHlsZXx8e30pLnJvd3N0cmlwZSksbm49KyEhKFBbMl0uc3R5bGV8fHt9KS5jb2xzdHJpcGUsYXI9KyEhKFBbMl0uc3R5bGV8fHt9KS5jb2xmaXJzdCxqbj0rISEoUFsyXS5zdHlsZXx8'@; put 'e30pLmNvbGxhc3Qsa249KFBbMl0uc3R5bGV8fHt9KS5uYW1lfHwiTWVkaXVtOSI7a249a24ubWF0Y2goL14oTGlnaHR8TWVkaXVtfERhcmspXGQrJC8pPyJUYWJsZVN0eWxlIitrbjprbixCZS5wdXNoKCc8dGFibGVTdHlsZUluZm8gbmFtZT0iJytrbisnIiBzaG93Rmlyc3RDb2x1bW49Iicr'@; put 'YXIrJyIgc2hvd0xhc3RDb2x1bW49Iicram4rJyIgc2hvd1Jvd1N0cmlwZXM9IicrbnIrJyIgc2hvd0NvbHVtblN0cmlwZXM9Iicrbm4rJyIvPicpLEJlLnB1c2goIjwvdGFibGU+Iiksem4obSxvZSxCZS5qb2luKCIiKSl9KX0oQmUsZCxRLFApLCJ4bWwiPT1tJiYoZC5FeHRlcm5hbFdCfHxb'@; put 'XSkubGVuZ3RoJiZmdW5jdGlvbiB6SChkLF8sbSl7bS5saW5rc3x8KG0ubGlua3M9W10pLGQuRXh0ZXJuYWxXQiYmZC5FeHRlcm5hbFdCLmZvckVhY2goZnVuY3Rpb24oVCxQKXt2YXIgUT0iL3hsL2V4dGVybmFsTGlua3MvX3JlbHMvZXh0ZXJuYWxMaW5rIisoUCsxKSsiLnhtbC5yZWxzIixz'@; put 'ZT17fTthaShzZSwtMSxULlRhcmdldCxULk1pc3Npbmc/dWEuWE1JU1M6dWEuWFBBVEgpLHpuKF8sbGgoUSksQzIoc2UpKTt2YXIgb2U9Ii94bC9leHRlcm5hbExpbmtzL2V4dGVybmFsTGluayIrKFArMSkrIi54bWwiO20ubGlua3MucHVzaChvZSksem4oXyxsaChvZSksZnVuY3Rpb24gb2so'@; put 'ZCl7dmFyIF89W3BvLF9RXTtyZXR1cm4oZC5TaGVldE5hbWVzfHxbXSkubGVuZ3RoJiYoXy5wdXNoKCc8ZXh0ZXJuYWxCb29rIHhtbG5zOnI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiIHI6aWQ9InJJZDEiPicp'@; put 'LF8ucHVzaCgiPHNoZWV0TmFtZXM+IiksZC5TaGVldE5hbWVzLmZvckVhY2goZnVuY3Rpb24obSl7Xy5wdXNoKCc8c2hlZXROYW1lIHZhbD0iJytCaShtKSsnIi8+Jyl9KSxfLnB1c2goIjwvc2hlZXROYW1lcz4iKSxfLnB1c2goIjxzaGVldERhdGFTZXQ+IiksZC5TaGVldE5hbWVzLmZvckVh'@; put 'Y2goZnVuY3Rpb24obSxUKXt2YXIgUD1kLlNoZWV0c1ttXSxRPXtzaGVldElkOlR9LHNlPW51bGw7aWYobnVsbD09UClRLnJlZnJlc2hFcnJvcj0xO2Vsc2UgaWYoUFsiIXJlZiJdKXt2YXIgb2U9emEoUFsiIXJlZiJdKTtzZT0iIjtmb3IodmFyIGRlPW9lLnMucjtkZTw9b2UuZS5yOysrZGUp'@; put 'e2Zvcih2YXIgTGU9IiIsTmU9b2Uucy5jO05lPD1vZS5lLmM7KytOZSl7dmFyIEJlPXFpKHtyOmRlLGM6TmV9KTtQW0JlXSYmKExlfHwoTGU9Jzxyb3cgcj0iJysoZGUrMSkrJyI+JyksTGUrPSc8Y2VsbCByPSInK0JlKyciJysoUFtCZV0udD8nIHQ9IicrUFtCZV0udCsnIic6IiIpKyI+PHY+'@; put 'IitCaShQW0JlXS52KSsiPC92PjwvY2VsbD4iKX1MZSYmKHNlKz1MZSsiPC9yb3c+Iil9fV8ucHVzaChWcigic2hlZXREYXRhIixzZSxRKSl9KSxfLnB1c2goIjwvc2hlZXREYXRhU2V0PiIpLF8ucHVzaCgiPC9leHRlcm5hbEJvb2s+IikpLF8ubGVuZ3RoPjImJihfW18ubGVuZ3RoXT0iPC9l'@; put 'eHRlcm5hbExpbms+IixfWzFdPV9bMV0ucmVwbGFjZSgiLz4iLCI+IikpLF8uam9pbigiIil9KFQpKX0pfShkLFEsUCksInhtbCI9PW0mJmZ1bmN0aW9uIGdRKGQpe3ZhciBfLG07ZC5Xb3JrYm9va3x8KGQuV29ya2Jvb2s9e05hbWVzOltdfSksZC5Xb3JrYm9vay5OYW1lc3x8KGQuV29ya2Jv'@; put 'b2suTmFtZXM9W10pO2Zvcih2YXIgVD1kLldvcmtib29rLk5hbWVzLFA9MDtQPGQuU2hlZXROYW1lcy5sZW5ndGg7KytQKXt2YXIgUT1kLlNoZWV0TmFtZXNbUF0sc2U9ZC5TaGVldHNbUV07aWYoc2UmJnNlWyIhcHJpbnQiXSl7dmFyIG9lPSInIitRKyInISIsZGU9c2VbIiFwcmludCJdO2lm'@; put 'KGRlKXt2YXIgTGU9IShfPWRlLmFyZWEpLE5lPSEobT1kZS50aXRsZXMpLEJlPV8/InN0cmluZyI9PXR5cGVvZiBfP186aHQoXyk6IiI7aWYoXyYmKFQuZm9yRWFjaChmdW5jdGlvbihudCl7bnQuU2hlZXQ9PVAmJiFMZSYmIl94bG5tLlByaW50X0FyZWEiPT1udC5OYW1lJiYoTGU9ITAsbnQu'@; put 'UmVmPW9lK0JlKX0pLExlfHxULnB1c2goe05hbWU6Il94bG5tLlByaW50X0FyZWEiLFJlZjpvZStCZSxTaGVldDpQfSkpLG0pe3ZhciBaZT0iIjttLnMuYz4tMSYmbS5lLmM+LTEmJihaZSs9b2UrbXMobS5zLmMpKyI6IittcyhtLmUuYykrIiwiKSxtLnMucj4tMSYmbS5lLnI+LTEmJihaZSs9'@; put 'b2Urem8obS5zLnIpKyI6Iit6byhtLmUucikrIiwiKSxaZT1aZS5zbGljZSgwLC0xKSxULmZvckVhY2goZnVuY3Rpb24obnQpe250LlNoZWV0PT1QJiYhTmUmJiJfeGxubS5QcmludF9UaXRsZXMiPT1udC5OYW1lJiYoTGU9ITAsbnQuUmVmPVplKX0pLE5lfHxULnB1c2goe05hbWU6Il94bG5t'@; put 'LlByaW50X1RpdGxlcyIsUmVmOlplLFNoZWV0OlB9KX19fX19KGQpLHpuKFEsc2U9InhsL3dvcmtib29rLiIrbSxmdW5jdGlvbiBJQihkLF8sbSl7cmV0dXJuKCIuYmluIj09PV8uc2xpY2UoLTQpP1RCOmdlZSkoZCxtKX0oZCxzZSxfKSksUC53b3JrYm9va3MucHVzaChzZSksYWkoXy5yZWxz'@; put 'LDEsc2UsdWEuV0IpLHpuKFEsc2U9InhsL3RoZW1lL3RoZW1lMS54bWwiLHVRKGQuVGhlbWVzLF8pKSxQLnRoZW1lcy5wdXNoKHNlKSxhaShfLndicmVscywtMSwidGhlbWUvdGhlbWUxLnhtbCIsdWEuVEhFTUUpLHpuKFEsc2U9InhsL3N0eWxlcy4iK20sZnVuY3Rpb24gWFMoZCxfLG0pe3Jl'@; put 'dHVybigiLmJpbiI9PT1fLnNsaWNlKC00KT90azpfUykoZCxtKX0oZCxzZSxfKSksUC5zdHlsZXMucHVzaChzZSksYWkoXy53YnJlbHMsLTEsInN0eWxlcy4iK20sdWEuU1RZKSxkLnZiYXJhdyYmVCYmKHpuKFEsc2U9InhsL3ZiYVByb2plY3QuYmluIixkLnZiYXJhdyksUC52YmEucHVzaChz'@; put 'ZSksYWkoXy53YnJlbHMsLTEsInZiYVByb2plY3QuYmluIix1YS5WQkEpKSxkLm1vZGVsJiZkLm1vZGVsLmxlbmd0aCYmKHpuKFEsInhsL21vZGVsL2l0ZW0uZGF0YSIsZC5tb2RlbCksYWkoXy53YnJlbHMsLTEsIm1vZGVsL2l0ZW0uZGF0YSIsdWEuUFdSUEQpKSxkLmNvbm4mJih6bihRLCJ4'@; put 'bC9jb25uZWN0aW9ucy54bWwiLGQuY29ubiksUC5jb25ucy5wdXNoKCIveGwvY29ubmVjdGlvbnMueG1sIiksYWkoXy53YnJlbHMsLTEsImNvbm5lY3Rpb25zLnhtbCIsdWEuQ09OTikpLGQuQ3VzdG9tWE1MJiZkLkN1c3RvbVhNTC5mb3JFYWNoKGZ1bmN0aW9uKHVuLG5yKXtpZih6bihRLCJj'@; put 'dXN0b21YbWwvaXRlbSIrKG5yKzEpKyIueG1sIix1bi5kYXRhKSxhaShfLndicmVscywtMSwiLi4vY3VzdG9tWG1sL2l0ZW0iKyhucisxKSsiLnhtbCIsdWEuQ1hNTCksdW4ucHJvcHMpe3puKFEsImN1c3RvbVhtbC9pdGVtUHJvcHMiKyhucisxKSsiLnhtbCIsdW4ucHJvcHMpLFAuY3VzdG9t'@; put 'eG1scHJvcHMucHVzaCgiL2N1c3RvbVhtbC9pdGVtUHJvcHMiKyhucisxKSsiLnhtbCIpO3ZhciBubj17fTthaShubiwtMSwiaXRlbVByb3BzIisobnIrMSkrIi54bWwiLHVhLkNYTUxQKSx6bihRLCJjdXN0b21YbWwvX3JlbHMvaXRlbSIrKG5yKzEpKyIueG1sLnJlbHMiLEMyKG5uKSl9fSks'@; put 'em4oUSwiW0NvbnRlbnRfVHlwZXNdLnhtbCIsZnVuY3Rpb24gYzgoZCxfLG0pe3ZhciBQLFQ9W107bXx8KFRbVC5sZW5ndGhdPXBvLFRbVC5sZW5ndGhdPWgzLFQ9VC5jb25jYXQobDgpKTt2YXIgUT1mdW5jdGlvbihkZSl7ZFtkZV0mJmRbZGVdLmxlbmd0aD4wJiYoVFtULmxlbmd0aF09VnIo'@; put 'Ik92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT0oUD1kW2RlXVswXSlbMF0/IiI6Ii8iKStQLENvbnRlbnRUeXBlOmE4W2RlXVtfLmJvb2tUeXBlfHwieGxzeCJdfSkpfSxzZT1mdW5jdGlvbihkZSl7KGRbZGVdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihMZSl7VFtULmxlbmd0aF09VnIo'@; put 'Ik92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT1MZVswXT8iIjoiLyIpK0xlLENvbnRlbnRUeXBlOmE4W2RlXVtfLmJvb2tUeXBlfHwieGxzeCJdfSl9KX0sb2U9ZnVuY3Rpb24oZGUpeyhkW2RlXXx8W10pLmZvckVhY2goZnVuY3Rpb24oTGUpe1RbVC5sZW5ndGhdPVZyKCJPdmVycmlk'@; put 'ZSIsbnVsbCx7UGFydE5hbWU6KCIvIj09TGVbMF0/IiI6Ii8iKStMZSxDb250ZW50VHlwZTpzOFtkZV1bMF19KX0pfTtyZXR1cm4gUSgid29ya2Jvb2tzIiksc2UoInNoZWV0cyIpLHNlKCJjaGFydHMiKSxvZSgidGhlbWVzIiksWyJzdHJzIiwic3R5bGVzIiwiY29ubnMiXS5mb3JFYWNoKFEp'@; put 'LFsiY29yZXByb3BzIiwiZXh0cHJvcHMiLCJjdXN0cHJvcHMiXS5mb3JFYWNoKG9lKSxvZSgidmJhIiksb2UoImNvbW1lbnRzIiksb2UoImRyYXdpbmdzIiksc2UoInRhYmxlcyIpLHNlKCJwaXZvdHMiKSxzZSgicGl2b3RjYWNoZXMiKSxzZSgicGl2b3RyZWNvcmRzIiksb2UoImRhdGFtb2Rl'@; put 'bHMiKSxvZSgiY3RybHByb3BzIiksb2UoImNoYXJ0b2JqcyIpLG9lKCJjaGFydHN0eWxlcyIpLG9lKCJjaGFydGNvbG9ycyIpLG9lKCJjaGFydGV4cyIpLHNlKCJsaW5rcyIpLG9lKCJjdXN0b214bWxwcm9wcyIpLCFtJiZULmxlbmd0aD4yJiYoVFtULmxlbmd0aF09IjwvVHlwZXM+IixUWzFd'@; put 'PVRbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFQuam9pbigiIil9KFAsXykpLHpuKFEsIl9yZWxzLy5yZWxzIixDMihfLnJlbHMpKSx6bihRLCJ4bC9fcmVscy93b3JrYm9vay4iK20rIi5yZWxzIixDMihfLndicmVscykpLGRlbGV0ZSBfLkZvbnRzLGRlbGV0ZSBfLkZpbGxzLGRlbGV0ZSBfLkJv'@; put 'cmRlcnMsZGVsZXRlIF8ucmV2c3NmLGRlbGV0ZSBfLnNzZixRfWZ1bmN0aW9uIFplKHVuLG5yKXtCZS5wdXNoKFtvZS0xLG5yLHVuXSl9ZnVuY3Rpb24gbnQodW4pe05lLnB1c2goW29lLTEsdW5dKSxhaShtdCwtMSwiLi4vcGl2b3RUYWJsZXMvcGl2b3RUYWJsZSIrTmUubGVuZ3RoKyIuIitt'@; put 'LHVhLlBJVk9UKX19ZnVuY3Rpb24gVzgoZCxfKXt2YXIgbT0iIjtzd2l0Y2goKF98fHt9KS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVybltkWzBdLGRbMV0sZFsyXSxkWzNdLGRbNF0sZFs1XSxkWzZdLGRbN11dO2Nhc2UiYmFzZTY0IjptPUNlLmRlY29k'@; put 'ZShkLnNsaWNlKDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6bT1kO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyhfJiZfLnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW20uY2hhckNvZGVBdCgwKSxtLmNoYXJDb2RlQXQoMSksbS5jaGFyQ29k'@; put 'ZUF0KDIpLG0uY2hhckNvZGVBdCgzKSxtLmNoYXJDb2RlQXQoNCksbS5jaGFyQ29kZUF0KDUpLG0uY2hhckNvZGVBdCg2KSxtLmNoYXJDb2RlQXQoNyldfWZ1bmN0aW9uIEQ1KGQsXyl7dmFyIG09MDtlOmZvcig7bTxkLmxlbmd0aDspc3dpdGNoKGQuY2hhckNvZGVBdChtKSl7Y2FzZSAxMDpj'@; put 'YXNlIDEzOmNhc2UgMzI6KyttO2JyZWFrO2Nhc2UgNjA6cmV0dXJuIEpTKGQuc2xpY2UobSksXyk7ZGVmYXVsdDpicmVhayBlfXJldHVybiB2OC50b193b3JrYm9vayhkLF8pfWZ1bmN0aW9uIGxFKGQsXyxtLFQpe3JldHVybiBUPyhtLnR5cGU9InN0cmluZyIsdjgudG9fd29ya2Jvb2soZCxt'@; put 'KSk6djgudG9fd29ya2Jvb2soXyxtKX1mdW5jdGlvbiBZOChkLF8pe3ZhciBtPUkuZ2V0bG9jYWxlKCk7dWUoSSksSS5zZXRsb2NhbGUobSksVigpO3ZhciBUPV98fHt9O2lmKHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJmQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gWTgobmV3IFVp'@; put 'bnQ4QXJyYXkoZCksKChUPVFyKFQpKS50eXBlPSJhcnJheSIsVCkpO3ZhciBRLFA9ZCxzZT0hMTtpZihnUyhwNT1ULlBQSXx8OTYpLFQuY2VsbFN0eWxlcyYmKFQuY2VsbE5GPSEwLFQuc2hlZXRTdHVicz0hMCksWG09e30sVC5kYXRlTkYmJihYbS5kYXRlTkY9VC5kYXRlTkYpLFQudHlwZXx8'@; put 'KFQudHlwZT1JZSYmQnVmZmVyLmlzQnVmZmVyKGQpPyJidWZmZXIiOiJiYXNlNjQiKSwiZmlsZSI9PVQudHlwZSYmKFQudHlwZT1JZT8iYnVmZmVyIjoiYmluYXJ5IixQPWZ1bmN0aW9uIERlKGQpe2lmKHR5cGVvZiB4ZTwidSIpcmV0dXJuIHhlLnJlYWRGaWxlU3luYyhkKTtpZih0eXBlb2Yg'@; put 'JDwidSImJnR5cGVvZiBGaWxlPCJ1IiYmdHlwZW9mIEZvbGRlcjwidSIpdHJ5e3ZhciBfPUZpbGUoZCk7Xy5vcGVuKCJyIiksXy5lbmNvZGluZz0iYmluYXJ5Ijt2YXIgbT1fLnJlYWQoKTtyZXR1cm4gXy5jbG9zZSgpLG19Y2F0Y2goVCl7aWYoIVQubWVzc2FnZXx8IVQubWVzc2FnZS5tYXRj'@; put 'aCgvb25zdHJ1Y3QvKSl0aHJvdyBUfXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGFjY2VzcyBmaWxlICIrZCl9KGQpKSwic3RyaW5nIj09VC50eXBlJiYoc2U9ITAsVC50eXBlPSJiaW5hcnkiLFQuY29kZXBhZ2U9NjUwMDEsUD1mdW5jdGlvbiBvdGUoZCl7cmV0dXJuIGQubWF0Y2goL1teXHgw'@; put 'MC1ceDdGXS8pP1FoKGQpOmR9KGQpKSwiYXJyYXkiPT1ULnR5cGUmJnR5cGVvZiBVaW50OEFycmF5PCJ1IiYmZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJnR5cGVvZiBBcnJheUJ1ZmZlcjwidSIpe3ZhciBvZT1uZXcgQXJyYXlCdWZmZXIoMyksZGU9bmV3IFVpbnQ4QXJyYXkob2UpO2lmKGRl'@; put 'LmZvbz0iYmFyIiwhZGUuZm9vKXJldHVybihUPVFyKFQpKS50eXBlPSJhcnJheSIsWTgoSyhQKSxUKX1zd2l0Y2goKFE9VzgoUCxUKSlbMF0pe2Nhc2UgMjA4OmlmKDIwNz09PVFbMV0mJjE3PT09UVsyXSYmMjI0PT09UVszXSYmMTYxPT09UVs0XSYmMTc3PT09UVs1XSYmMjY9PT1RWzZdJiYy'@; put 'MjU9PT1RWzddKXJldHVybiBmdW5jdGlvbiBKQihkLF8pe3JldHVybiBhZS5maW5kKGQsIkVuY3J5cHRlZFBhY2thZ2UiKT9aeShkLF8pOndSKGQsXyl9KGFlLnJlYWQoUCxUKSxUKTticmVhaztjYXNlIDk6aWYoUVsxXTw9OClyZXR1cm4gd1IoUCxUKTticmVhaztjYXNlIDYwOnJldHVybiBK'@; put 'UyhQLFQpO2Nhc2UgNzM6aWYoNzM9PT1RWzFdJiY0Mj09PVFbMl0mJjA9PT1RWzNdKXRocm93IG5ldyBFcnJvcigiVElGRiBJbWFnZSBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7aWYoNjg9PT1RWzFdKXJldHVybiBmdW5jdGlvbiBrWChkLF8pe3ZhciBtPV98fHt9LFQ9ISFtLldURjtt'@; put 'LldURj0hMDt0cnl7dmFyIFA9c1MudG9fd29ya2Jvb2soZCxtKTtyZXR1cm4gbS5XVEY9VCxQfWNhdGNoKFEpe2lmKG0uV1RGPVQsIVEubWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykmJlQpdGhyb3cgUTtyZXR1cm4gdjgudG9fd29ya2Jvb2soZCxfKX19KFAsVCk7YnJlYWs7'@; put 'Y2FzZSA4NDppZig2NT09PVFbMV0mJjY2PT09UVsyXSYmNzY9PT1RWzNdKXJldHVybiBsUy50b193b3JrYm9vayhQLFQpO2JyZWFrO2Nhc2UgODA6cmV0dXJuIDc1PT09UVsxXSYmUVsyXTw5JiZRWzNdPDk/ZnVuY3Rpb24gZWooZCxfKXt2YXIgVD1kLFA9X3x8e307cmV0dXJuIFAudHlwZXx8'@; put 'KFAudHlwZT1JZSYmQnVmZmVyLmlzQnVmZmVyKGQpPyJidWZmZXIiOiJiYXNlNjQiKSxEUihycihULFApLFApfShQLFQpOmxFKGQsUCxULHNlKTtjYXNlIDIzOTpyZXR1cm4gNjA9PT1RWzNdP0pTKFAsVCk6bEUoZCxQLFQsc2UpO2Nhc2UgMjU1OmlmKDI1ND09PVFbMV0pcmV0dXJuIGZ1bmN0'@; put 'aW9uIGl0ZShkLF8pe3ZhciBtPWQ7cmV0dXJuImJhc2U2NCI9PV8udHlwZSYmKG09Q2UuZGVjb2RlKG0pKSxtPWNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsbS5zbGljZSgyKSwic3RyIiksXy50eXBlPSJiaW5hcnkiLEQ1KG0sXyl9KFAsVCk7YnJlYWs7Y2FzZSAwOmlmKDA9PT1RWzFdJiZR'@; put 'WzJdPj0yJiYwPT09UVszXSlyZXR1cm4gY1MudG9fd29ya2Jvb2soUCxUKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAxNDA6cmV0dXJuIHlwLnRvX3dvcmtib29rKFAsVCk7Y2FzZSAxMjM6aWYoOTI9PT1RWzFdJiYxMTQ9PT1RWzJdJiYxMTY9PT1RWzNdKXJldHVybiBk'@; put 'NS50b193b3JrYm9vayhQLFQpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBmdW5jdGlvbiBMUihkLF8pe3ZhciBtPSIiLFQ9VzgoZCxfKTtzd2l0Y2goXy50eXBlKXtjYXNlImJhc2U2NCI6bT1DZS5kZWNvZGUoZCk7YnJlYWs7Y2FzZSJiaW5hcnkiOm09ZDticmVhaztj'@; put 'YXNlImJ1ZmZlciI6bT1kLnRvU3RyaW5nKCJiaW5hcnkiKTticmVhaztjYXNlImFycmF5IjptPU9uKGQpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK18udHlwZSl9cmV0dXJuIDIzOT09VFswXSYmMTg3PT1UWzFdJiYxOTE9PVRbMl0mJihtPVdu'@; put 'KG0pKSxENShtLF8pfShQLFQpfXJldHVybiB5cC52ZXJzaW9ucy5pbmRleE9mKFFbMF0pPi0xJiZRWzJdPD0xMiYmUVszXTw9MzE/eXAudG9fd29ya2Jvb2soUCxUKTpsRShkLFAsVCxzZSl9ZnVuY3Rpb24gdGooZCxfKXt2YXIgbT1ffHx7fTtyZXR1cm4gbS50eXBlPSJmaWxlIixZOChkLG0p'@; put 'fWZ1bmN0aW9uIG5qKGQsXyl7c3dpdGNoKF8udHlwZSl7Y2FzZSJiYXNlNjQiOmNhc2UiYmluYXJ5IjpicmVhaztjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6Xy50eXBlPSIiO2JyZWFrO2Nhc2UiZmlsZSI6cmV0dXJuIEFlKF8uZmlsZSxhZS53cml0ZShkLHt0eXBlOkllPyJidWZmZXIiOiIi'@; put 'fSkpO2Nhc2Uic3RyaW5nIjp0aHJvdyBuZXcgRXJyb3IoIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICciK18uYm9va1R5cGUrIicgZmlsZXMiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitfLnR5cGUpfXJldHVybiBhZS53cml0ZShkLF8p'@; put 'fWZ1bmN0aW9uIGpnKGQsXyxtKXttfHwobT0iIik7dmFyIFQ9bStkO3N3aXRjaChfLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gQ2UuZW5jb2RlKFFoKFQpKTtjYXNlImJpbmFyeSI6cmV0dXJuIFFoKFQpO2Nhc2Uic3RyaW5nIjpyZXR1cm4gZDtjYXNlImZpbGUiOnJldHVybiBBZShfLmZp'@; put 'bGUsVCwidXRmOCIpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gSWU/a2UoVCwidXRmOCIpOmpnKFQse3R5cGU6ImJpbmFyeSJ9KS5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKFApe3JldHVybiBQLmNoYXJDb2RlQXQoMCl9KX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrXy50eXBl'@; put 'KX1mdW5jdGlvbiByaihkLF8pe3N3aXRjaChfLnR5cGUpe2Nhc2Uic3RyaW5nIjpjYXNlImJhc2U2NCI6Y2FzZSJiaW5hcnkiOmZvcih2YXIgbT0iIixUPTA7VDxkLmxlbmd0aDsrK1QpbSs9U3RyaW5nLmZyb21DaGFyQ29kZShkW1RdKTtyZXR1cm4iYmFzZTY0Ij09Xy50eXBlP0NlLmVuY29k'@; put 'ZShtKToic3RyaW5nIj09Xy50eXBlP1duKG0pOm07Y2FzZSJmaWxlIjpyZXR1cm4gQWUoXy5maWxlLGQpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gZDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitfLnR5cGUpfX1mdW5jdGlvbiBaOChkLF8pe1YoKSxmdW5jdGlv'@; put 'biBLcihkKXtpZighZHx8IWQuU2hlZXROYW1lc3x8IWQuU2hlZXRzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBXb3JrYm9vayIpO2lmKCFkLlNoZWV0TmFtZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV29ya2Jvb2sgaXMgZW1wdHkiKTshZnVuY3Rpb24gcGVlKGQsXyxtKXtkLmZvckVh'@; put 'Y2goZnVuY3Rpb24oVCxQKXtpUihUKTtmb3IodmFyIFE9MDtRPFA7KytRKWlmKFQ9PWRbUV0pdGhyb3cgbmV3IEVycm9yKCJEdXBsaWNhdGUgU2hlZXQgTmFtZTogIitUKTtpZihtKXt2YXIgc2U9XyYmX1tQXSYmX1tQXS5Db2RlTmFtZXx8VDtpZig5NT09c2UuY2hhckNvZGVBdCgwKSYmc2Uu'@; put 'bGVuZ3RoPjIyKXRocm93IG5ldyBFcnJvcigiQmFkIENvZGUgTmFtZTogV29ya3NoZWV0IitzZSl9fSl9KGQuU2hlZXROYW1lcyxkLldvcmtib29rJiZkLldvcmtib29rLlNoZWV0c3x8W10sISFkLnZiYXJhdyk7Zm9yKHZhciBtPTA7bTxkLlNoZWV0TmFtZXMubGVuZ3RoOysrbSlsSihkLlNo'@; put 'ZWV0c1tkLlNoZWV0TmFtZXNbbV1dLDAsbSl9KGQpO3ZhciBtPV98fHt9O2lmKG0uY2VsbFN0eWxlcyYmKG0uY2VsbE5GPSEwLG0uc2hlZXRTdHVicz0hMCksImFycmF5Ij09bS50eXBlKXttLnR5cGU9ImJpbmFyeSI7dmFyIFQ9WjgoZCxtKTtyZXR1cm4gbS50eXBlPSJhcnJheSIsayhUKX1z'@; put 'd2l0Y2gobS5ib29rVHlwZXx8Inhsc2IiKXtjYXNlInhtbCI6Y2FzZSJ4bG1sIjpyZXR1cm4gamcoT2VlKGQsbSksbSk7Y2FzZSJzbGsiOmNhc2Uic3lsayI6cmV0dXJuIGpnKGtSKGQsbSksbSk7Y2FzZSJodG0iOmNhc2UiaHRtbCI6cmV0dXJuIGpnKCRlZShkLG0pLG0pO2Nhc2UidHh0Ijpy'@; put 'ZXR1cm4gZnVuY3Rpb24gc3RlKGQsXyl7c3dpdGNoKF8udHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBDZS5lbmNvZGUoZCk7Y2FzZSJiaW5hcnkiOmNhc2Uic3RyaW5nIjpyZXR1cm4gZDtjYXNlImZpbGUiOnJldHVybiBBZShfLmZpbGUsZCwiYmluYXJ5Iik7Y2FzZSJidWZmZXIiOnJldHVy'@; put 'biBJZT9rZShkLCJiaW5hcnkiKTpkLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIG0uY2hhckNvZGVBdCgwKX0pfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitfLnR5cGUpfShxQihkLG0pLG0pO2Nhc2UiY3N2IjpyZXR1cm4gamcoR0IoZCxtKSxtLCJcdWZl'@; put 'ZmYiKTtjYXNlImRpZiI6cmV0dXJuIGpnKCRCKGQsbSksbSk7Y2FzZSJkYmYiOnJldHVybiByaihLQihkLG0pLG0pO2Nhc2UicHJuIjpyZXR1cm4gamcocWVlKGQsbSksbSk7Y2FzZSJydGYiOnJldHVybiBqZyhxOShkLG0pLG0pO2Nhc2UiZXRoIjpyZXR1cm4gamcoSzkoZCxtKSxtKTtjYXNl'@; put 'ImZvZHMiOnJldHVybiBqZyhBUihkLG0pLG0pO2Nhc2UiYmlmZjIiOm0uYmlmZnx8KG0uYmlmZj0yKTtjYXNlImJpZmYzIjptLmJpZmZ8fChtLmJpZmY9Myk7Y2FzZSJiaWZmNCI6cmV0dXJuIG0uYmlmZnx8KG0uYmlmZj00KSxyaih6QihkLG0pLG0pO2Nhc2UiYmlmZjUiOm0uYmlmZnx8KG0u'@; put 'YmlmZj01KTtjYXNlImJpZmY4IjpjYXNlInhsYSI6Y2FzZSJ4bHMiOnJldHVybiBtLmJpZmZ8fChtLmJpZmY9OCksZnVuY3Rpb24gR3koZCxfKXt2YXIgbT1ffHx7fTtyZXR1cm4gbmooZnVuY3Rpb24gUGVlKGQsXyl7dmFyIG09X3x8e30sVD1hZS51dGlscy5jZmJfbmV3KHtyb290OiJSIn0p'@; put 'LFA9Ii9Xb3JrYm9vayI7c3dpdGNoKG0uYm9va1R5cGV8fCJ4bHMiKXtjYXNlInhscyI6bS5ib29rVHlwZT0iYmlmZjgiO2Nhc2UieGxhIjptLmJvb2tUeXBlfHwobS5ib29rVHlwZT0ieGxhIik7Y2FzZSJiaWZmOCI6UD0iL1dvcmtib29rIixtLmJpZmY9ODticmVhaztjYXNlImJpZmY1IjpQ'@; put 'PSIvQm9vayIsbS5iaWZmPTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdHlwZSAiK20uYm9va1R5cGUrIiBmb3IgWExTIENGQiIpfXJldHVybiBhZS51dGlscy5jZmJfYWRkKFQsUCx6QihkLG0pKSw4PT1tLmJpZmYmJihkLlByb3BzfHxkLkN1c3Rwcm9wcykmJmZ1'@; put 'bmN0aW9uIFZCKGQsXyl7dmFyIHNlLG09W10sVD1bXSxQPVtdLFE9MDtpZihkLlByb3BzKWZvcihzZT1GZShkLlByb3BzKSxRPTA7UTxzZS5sZW5ndGg7KytRKShPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUG0sc2VbUV0pP206T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q'@; put 'cm9wZXJ0eS5jYWxsKGkxLHNlW1FdKT9UOlApLnB1c2goW3NlW1FdLGQuUHJvcHNbc2VbUV1dXSk7aWYoZC5DdXN0cHJvcHMpZm9yKHNlPUZlKGQuQ3VzdHByb3BzKSxRPTA7UTxzZS5sZW5ndGg7KytRKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLlByb3BzfHx7fSxz'@; put 'ZVtRXSl8fChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUG0sc2VbUV0pP206T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkxLHNlW1FdKT9UOlApLnB1c2goW3NlW1FdLGQuQ3VzdHByb3BzW3NlW1FdXV0pO3ZhciBvZT1bXTtmb3IoUT0wO1E8UC5s'@; put 'ZW5ndGg7KytRKUFnLmluZGV4T2YoUFtRXVswXSk+LTF8fG51bGwhPVBbUV1bMV0mJm9lLnB1c2goUFtRXSk7VC5sZW5ndGgmJmFlLnV0aWxzLmNmYl9hZGQoXywiL1x4MDVTdW1tYXJ5SW5mb3JtYXRpb24iLFVpKFQsajhfU0ksaTEsYzApKSwobS5sZW5ndGh8fG9lLmxlbmd0aCkmJmFlLnV0'@; put 'aWxzLmNmYl9hZGQoXywiL1x4MDVEb2N1bWVudFN1bW1hcnlJbmZvcm1hdGlvbiIsVWkobSxqOF9EU0ksUG0sdXAsb2UubGVuZ3RoP29lOm51bGwsIjA1ZDVjZGQ1OWMyZTFiMTA5Mzk3MDgwMDJiMmNmOWFlIikpfShkLFQpLDg9PW0uYmlmZiYmZC52YmFyYXcmJmZ1bmN0aW9uIFhIKGQsXyl7'@; put 'Xy5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihtLFQpe2lmKDAhPVQpe3ZhciBQPW0ucmVwbGFjZSgvW15cL10qW1wvXS8sIi9fVkJBX1BST0pFQ1RfQ1VSLyIpOyIvIiE9PVAuc2xpY2UoLTEpJiZhZS51dGlscy5jZmJfYWRkKGQsUCxfLkZpbGVJbmRleFtUXS5jb250ZW50KX19KX0oVCxh'@; put 'ZS5yZWFkKGQudmJhcmF3LHt0eXBlOiJzdHJpbmciPT10eXBlb2YgZC52YmFyYXc/ImJpbmFyeSI6ImJ1ZmZlciJ9KSksVH0oZCxtKSxtKX0oZCxtKTtjYXNlInhsc3giOmNhc2UieGxzbSI6Y2FzZSJ4bGFtIjpjYXNlInhsc2IiOmNhc2Uib2RzIjpyZXR1cm4gZnVuY3Rpb24gYXRlKGQsXyl7'@; put 'dmFyIG09X3x8e30sVD1ydGUoZCxtKSxQPXt9O2lmKG0uY29tcHJlc3Npb24mJihQLmNvbXByZXNzaW9uPSJERUZMQVRFIiksbS5wYXNzd29yZClQLnR5cGU9SWU/Im5vZGVidWZmZXIiOiJzdHJpbmciO2Vsc2Ugc3dpdGNoKG0udHlwZSl7Y2FzZSJiYXNlNjQiOlAudHlwZT0iYmFzZTY0Ijti'@; put 'cmVhaztjYXNlImJpbmFyeSI6UC50eXBlPSJzdHJpbmciO2JyZWFrO2Nhc2Uic3RyaW5nIjp0aHJvdyBuZXcgRXJyb3IoIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICciK20uYm9va1R5cGUrIicgZmlsZXMiKTtjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjpQLnR5cGU9SWU/Im5v'@; put 'ZGVidWZmZXIiOiJzdHJpbmciO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK20udHlwZSl9dmFyIFE9VC5GdWxsUGF0aHM/YWUud3JpdGUoVCx7ZmlsZVR5cGU6InppcCIsdHlwZTp7bm9kZWJ1ZmZlcjoiYnVmZmVyIixzdHJpbmc6ImJpbmFyeSJ9'@; put 'W1AudHlwZV18fFAudHlwZX0pOlQuZ2VuZXJhdGUoUCk7cmV0dXJuIG0ucGFzc3dvcmQmJnR5cGVvZiBRZWU8InUiP25qKFFlZShRLG0ucGFzc3dvcmQpLG0pOiJmaWxlIj09PW0udHlwZT9BZShtLmZpbGUsUSk6InN0cmluZyI9PW0udHlwZT9XbihRKTpRfShkLG0pO2RlZmF1bHQ6dGhyb3cg'@; put 'bmV3IEVycm9yKCJVbnJlY29nbml6ZWQgYm9va1R5cGUgfCIrbS5ib29rVHlwZSsifCIpfX1mdW5jdGlvbiBPUihkKXtpZighZC5ib29rVHlwZSl7dmFyIG09ZC5maWxlLnNsaWNlKGQuZmlsZS5sYXN0SW5kZXhPZigiLiIpKS50b0xvd2VyQ2FzZSgpO20ubWF0Y2goL15cLlthLXpdKyQvKSYm'@; put 'KGQuYm9va1R5cGU9bS5zbGljZSgxKSksZC5ib29rVHlwZT17eGxzOiJiaWZmOCIsaHRtOiJodG1sIixzbGs6InN5bGsiLHNvY2lhbGNhbGM6ImV0aCIsU2gzM3RKUzoiV1RGIn1bZC5ib29rVHlwZV18fGQuYm9va1R5cGV9fWZ1bmN0aW9uIE5SKGQsXyxtKXt2YXIgVD1tfHx7fTtyZXR1cm4g'@; put 'VC50eXBlPSJmaWxlIixULmZpbGU9XyxPUihUKSxaOChkLFQpfWZ1bmN0aW9uIG9qKGQsXyxtLFQsUCxRLHNlLG9lKXt2YXIgZGU9em8obSksTGU9b2UuZGVmdmFsLE5lPW9lLnJhdyxCZT0hMCxaZT0xPT09UD9bXTp7fTtpZigxIT09UClpZihPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5e09i'@; put 'amVjdC5kZWZpbmVQcm9wZXJ0eShaZSwiX19yb3dOdW1fXyIse3ZhbHVlOm0sZW51bWVyYWJsZTohMX0pfWNhdGNoe1plLl9fcm93TnVtX189bX1lbHNlIFplLl9fcm93TnVtX189bTtpZighc2V8fGRbbV0pZm9yKHZhciBudD1fLnMuYztudDw9Xy5lLmM7KytudCl7dmFyIG10PXNlP2RbbV1b'@; put 'bnRdOmRbVFtudF0rZGVdO2lmKHZvaWQgMCE9PW10JiZ2b2lkIDAhPT1tdC50KXt2YXIgUWU9bXQudjtzd2l0Y2gobXQudCl7Y2FzZSJ6IjppZihudWxsPT1RZSlicmVhaztjb250aW51ZTtjYXNlImUiOlFlPTA9PVFlP251bGw6dm9pZCAwO2JyZWFrO2Nhc2UicyI6Y2FzZSJkIjpjYXNlImIi'@; put 'OmNhc2UibiI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCB0eXBlICIrbXQudCl9aWYobnVsbCE9UVtudF0pe2lmKG51bGw9PVFlKWlmKCJlIj09bXQudCYmbnVsbD09PVFlKVplW1FbbnRdXT1udWxsO2Vsc2UgaWYodm9pZCAwIT09TGUpWmVbUVtudF1dPUxl'@; put 'O2Vsc2V7aWYoIU5lfHxudWxsIT09UWUpY29udGludWU7WmVbUVtudF1dPW51bGx9ZWxzZSBaZVtRW250XV09TmU/UWU6enQobXQsUWUsb2UpO251bGwhPVFlJiYoQmU9ITEpfX1lbHNle2lmKHZvaWQgMD09PUxlKWNvbnRpbnVlO251bGwhPVFbbnRdJiYoWmVbUVtudF1dPUxlKX19cmV0dXJu'@; put 'e3JvdzpaZSxpc2VtcHR5OkJlfX1mdW5jdGlvbiAkeShkLF8pe2lmKG51bGw9PWR8fG51bGw9PWRbIiFyZWYiXSlyZXR1cm5bXTt2YXIgbT17dDoibiIsdjowfSxUPTAsUD0xLFE9W10sc2U9MCxvZT0iIixkZT1KU09OLnBhcnNlKCd7InMiOnsiciI6MCwiYyI6MH0sImUiOnsiciI6MCwiYyI6'@; put 'MH19JyksTGU9X3x8e30sTmU9bnVsbCE9TGUucmFuZ2U/TGUucmFuZ2U6ZFsiIXJlZiJdO3N3aXRjaCgxPT09TGUuaGVhZGVyP1Q9MToiQSI9PT1MZS5oZWFkZXI/VD0yOkFycmF5LmlzQXJyYXkoTGUuaGVhZGVyKT9UPTM6bnVsbD09TGUuaGVhZGVyJiYoVD0wKSx0eXBlb2YgTmUpe2Nhc2Ui'@; put 'c3RyaW5nIjpkZT15dChOZSk7YnJlYWs7Y2FzZSJudW1iZXIiOihkZT15dChkWyIhcmVmIl0pKS5zLnI9TmU7YnJlYWs7ZGVmYXVsdDpkZT1OZX1UPjAmJihQPTApO3ZhciBCZT16byhkZS5zLnIpLFplPVtdLG50PVtdLG10PTAsUWU9MCxmdD1BcnJheS5pc0FycmF5KGQpLGt0PWRlLnMucixi'@; put 'dD0wLEV0PTA7Zm9yKGZ0JiYhZFtrdF0mJihkW2t0XT1bXSksYnQ9ZGUucy5jO2J0PD1kZS5lLmM7KytidClzd2l0Y2goWmVbYnRdPW1zKGJ0KSxtPWZ0P2Rba3RdW2J0XTpkW1plW2J0XStCZV0sVCl7Y2FzZSAxOlFbYnRdPWJ0LWRlLnMuYzticmVhaztjYXNlIDI6UVtidF09WmVbYnRdO2Jy'@; put 'ZWFrO2Nhc2UgMzpRW2J0XT1MZS5oZWFkZXJbYnQtZGUucy5jXTticmVhaztkZWZhdWx0OmZvcihudWxsPT1tJiYobT1KU09OLnBhcnNlKCd7InciOiAiX19FTVBUWSIsICJ0IjogInMifScpKSxvZT1zZT16dChtLG51bGwsTGUpLFFlPTAsRXQ9MDtFdDxRLmxlbmd0aDsrK0V0KVFbRXRdPT1v'@; put 'ZSYmKG9lPXNlKyJfIisgKytRZSk7UVtidF09b2V9Zm9yKGt0PWRlLnMucitQO2t0PD1kZS5lLnI7KytrdCl7dmFyIFZ0PW9qKGQsZGUsa3QsWmUsVCxRLGZ0LExlKTsoITE9PT1WdC5pc2VtcHR5fHwoMT09PVQ/ITEhPT1MZS5ibGFua3Jvd3M6TGUuYmxhbmtyb3dzKSkmJihudFttdCsrXT1W'@; put 'dC5yb3cpfXJldHVybiBudC5sZW5ndGg9bXQsbnR9dmFyIGV2PS8iL2c7ZnVuY3Rpb24gcXkoZCxfLG0sVCxQLFEsc2Usb2Upe2Zvcih2YXIgZGU9ITAsTGU9W10sTmU9IiIsQmU9em8obSksWmU9Xy5zLmM7WmU8PV8uZS5jOysrWmUpaWYoVFtaZV0pe3ZhciBudD1vZS5kZW5zZT8oZFttXXx8'@; put 'W10pW1plXTpkW1RbWmVdK0JlXTtpZihudWxsPT1udClOZT0iIjtlbHNlIGlmKG51bGwhPW50LnYpe2RlPSExLE5lPSIiK3p0KG50LG51bGwsb2UpO2Zvcih2YXIgbXQ9MCxRZT0wO210IT09TmUubGVuZ3RoOysrbXQpaWYoKFFlPU5lLmNoYXJDb2RlQXQobXQpKT09PVB8fFFlPT09UXx8MzQ9'@; put 'PT1RZSl7TmU9JyInK05lLnJlcGxhY2UoZXYsJyIiJykrJyInO2JyZWFrfSJJRCI9PU5lJiYoTmU9JyJJRCInKX1lbHNlIG51bGw9PW50LmZ8fG50LkY/TmU9IiI6KGRlPSExLChOZT0iPSIrbnQuZikuaW5kZXhPZigiLCIpPj0wJiYoTmU9JyInK05lLnJlcGxhY2UoZXYsJyIiJykrJyInKSk7'@; put 'TGUucHVzaChOZSl9cmV0dXJuITE9PT1vZS5ibGFua3Jvd3MmJmRlP251bGw6TGUuam9pbihzZSl9ZnVuY3Rpb24gY0UoZCxfKXt2YXIgbT1bXSxUPV8/P3t9O2lmKG51bGw9PWR8fG51bGw9PWRbIiFyZWYiXSlyZXR1cm4iIjt2YXIgUD15dChkWyIhcmVmIl0pLFE9dm9pZCAwIT09VC5GUz9U'@; put 'LkZTOiIsIixzZT1RLmNoYXJDb2RlQXQoMCksb2U9dm9pZCAwIT09VC5SUz9ULlJTOiJcbiIsZGU9b2UuY2hhckNvZGVBdCgwKSxMZT1uZXcgUmVnRXhwKCgifCI9PVE/IlxcfCI6USkrIiskIiksTmU9IiIsQmU9W107VC5kZW5zZT1BcnJheS5pc0FycmF5KGQpO2Zvcih2YXIgWmU9VC5za2lw'@; put 'SGlkZGVuJiZkWyIhY29scyJdfHxbXSxudD1ULnNraXBIaWRkZW4mJmRbIiFyb3dzIl18fFtdLG10PVAucy5jO210PD1QLmUuYzsrK210KShaZVttdF18fHt9KS5oaWRkZW58fChCZVttdF09bXMobXQpKTtmb3IodmFyIFFlPVAucy5yO1FlPD1QLmUucjsrK1FlKShudFtRZV18fHt9KS5oaWRk'@; put 'ZW58fG51bGwhPShOZT1xeShkLFAsUWUsQmUsc2UsZGUsUSxUKSkmJihULnN0cmlwJiYoTmU9TmUucmVwbGFjZShMZSwiIikpLG0ucHVzaChOZStvZSkpO3JldHVybiBkZWxldGUgVC5kZW5zZSxtLmpvaW4oIiIpfWZ1bmN0aW9uIGFqKGQsXyl7X3x8KF89e30pLF8uRlM9Ilx0IixfLlJTPSJc'@; put 'biI7dmFyIG09Y0UoZCxfKTtyZXR1cm4gdHlwZW9mIGNwdGFibGU+InUifHwic3RyaW5nIj09Xy50eXBlP206Ilx4ZmZceGZlIitjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLG0sInN0ciIpfWZ1bmN0aW9uIEZSKGQpe3ZhciBtLF89IiIsVD0iIjtpZihudWxsPT1kfHxudWxsPT1kWyIhcmVm'@; put 'Il0pcmV0dXJuW107dmFyIG9lLFA9eXQoZFsiIXJlZiJdKSxRPSIiLHNlPVtdLGRlPVtdLExlPUFycmF5LmlzQXJyYXkoZCk7Zm9yKG9lPVAucy5jO29lPD1QLmUuYzsrK29lKXNlW29lXT1tcyhvZSk7Zm9yKHZhciBOZT1QLnMucjtOZTw9UC5lLnI7KytOZSlmb3IoUT16byhOZSksb2U9UC5z'@; put 'LmM7b2U8PVAuZS5jOysrb2UpaWYoXz1zZVtvZV0rUSxUPSIiLHZvaWQgMCE9PShtPUxlPyhkW05lXXx8W10pW29lXTpkW19dKSl7aWYobnVsbCE9bS5GKXtpZihfPW0uRiwhbS5mKWNvbnRpbnVlO1Q9bS5mLC0xPT1fLmluZGV4T2YoIjoiKSYmKF89XysiOiIrXyl9aWYobnVsbCE9bS5mKVQ9'@; put 'bS5mO2Vsc2V7aWYoInoiPT1tLnQpY29udGludWU7aWYoIm4iPT1tLnQmJm51bGwhPW0udilUPSIiK20udjtlbHNlIGlmKCJiIj09bS50KVQ9bS52PyJUUlVFIjoiRkFMU0UiO2Vsc2UgaWYodm9pZCAwIT09bS53KVQ9IiciK20udztlbHNle2lmKHZvaWQgMD09PW0udiljb250aW51ZTtUPSJz'@; put 'Ij09bS50PyInIittLnY6IiIrbS52fX1kZVtkZS5sZW5ndGhdPV8rIj0iK1R9cmV0dXJuIGRlfWZ1bmN0aW9uIHNqKGQsXyxtKXt2YXIgVD1tfHx7fSxQPSshVC5za2lwSGVhZGVyLFE9ZHx8e30sc2U9MCxvZT0wO2lmKFEmJm51bGwhPVQub3JpZ2luKWlmKCJudW1iZXIiPT10eXBlb2YgVC5v'@; put 'cmlnaW4pc2U9VC5vcmlnaW47ZWxzZXt2YXIgZGU9InN0cmluZyI9PXR5cGVvZiBULm9yaWdpbj9JcyhULm9yaWdpbik6VC5vcmlnaW47c2U9ZGUucixvZT1kZS5jfXZhciBMZSxOZT1KU09OLnBhcnNlKCd7InMiOiB7ImMiOjAsICJyIjowfSwgImUiOiB7ImMiOjAsICJyIjowfX0nKTtpZihO'@; put 'ZS5lLmM9b2UsTmUuZS5yPXNlK18ubGVuZ3RoLTErUCxRWyIhcmVmIl0pe3ZhciBCZT15dChRWyIhcmVmIl0pO05lLmUuYz1NYXRoLm1heChOZS5lLmMsQmUuZS5jKSxOZS5lLnI9TWF0aC5tYXgoTmUuZS5yLEJlLmUuciksLTE9PXNlJiYoTmUuZS5yPShzZT1CZS5lLnIrMSkrXy5sZW5ndGgt'@; put 'MStQKX1lbHNlLTE9PXNlJiYoc2U9MCxOZS5lLnI9Xy5sZW5ndGgtMStQKTt2YXIgWmU9VC5oZWFkZXJ8fFtdLG50PTA7Xy5mb3JFYWNoKGZ1bmN0aW9uKFFlLGZ0KXtGZShRZSkuZm9yRWFjaChmdW5jdGlvbihrdCl7LTE9PShudD1aZS5pbmRleE9mKGt0KSkmJihaZVtudD1aZS5sZW5ndGhd'@; put 'PWt0KTt2YXIgYnQ9UWVba3RdLEV0PSJ6IixWdD0iIix1bj1xaSh7YzpvZStudCxyOnNlK2Z0K1B9KTtpZihMZT1VMS5zaGVldF9nZXRfY2VsbChRLHVuKSwhYnR8fCJvYmplY3QiIT10eXBlb2YgYnR8fGJ0IGluc3RhbmNlb2YgRGF0ZSl7aWYoIm51bWJlciI9PXR5cGVvZiBidD9FdD0ibiI6'@; put 'ImJvb2xlYW4iPT10eXBlb2YgYnQ/RXQ9ImIiOiJzdHJpbmciPT10eXBlb2YgYnQ/RXQ9InMiOmJ0IGluc3RhbmNlb2YgRGF0ZT8oRXQ9ImQiLFQuY2VsbERhdGVzfHwoRXQ9Im4iLGJ0PUtlKGJ0KSksVnQ9TGUueiYmSS5pc19kYXRlKExlLnopP0xlLno6VC5kYXRlTkZ8fEkuX3RhYmxlWzE0'@; put 'XSk6bnVsbD09PWJ0JiZULm51bGxFcnJvciYmKEV0PSJlIixidD0wKSxMZT8oTGUudD1FdCxMZS52PWJ0LGRlbGV0ZSBMZS53LGRlbGV0ZSBMZS5SLFZ0JiYoTGUuej1WdCkpOlFbdW5dPUxlPXt0OkV0LHY6YnR9LFZ0JiYoTGUuej1WdCksTGUmJkxlLmgpdHJ5e2lmKExlLlI9a2YuaHRtbF90'@; put 'b19ycyhMZS5oKSwhTGUudil7TGUudj0iIjtmb3IodmFyIG5yPTA7bnI8TGUuUi5sZW5ndGg7KytucilMZS52Kz1MZS5SW25yXS52fHwiIn19Y2F0Y2h7fX1lbHNlIFFbdW5dPWJ0fSl9KSxOZS5lLmM9TWF0aC5tYXgoTmUuZS5jLG9lK1plLmxlbmd0aC0xKTt2YXIgbXQ9em8oc2UpO2lmKFAp'@; put 'Zm9yKG50PTA7bnQ8WmUubGVuZ3RoOysrbnQpUVttcyhudCtvZSkrbXRdPXt0OiJzIix2OlplW250XX07cmV0dXJuIFFbIiFyZWYiXT1odChOZSksUX12YXIgVTE9e2VuY29kZV9jb2w6bXMsZW5jb2RlX3Jvdzp6byxlbmNvZGVfY2VsbDpxaSxlbmNvZGVfcmFuZ2U6aHQsZGVjb2RlX2NvbDpU'@; put 'YyxkZWNvZGVfcm93OmlhLHNwbGl0X2NlbGw6ZnVuY3Rpb24gbjgoZCl7cmV0dXJuIGQucmVwbGFjZSgvKFwkP1tBLVpdKikoXCQ/XGQqKS8sIiQxLCQyIikuc3BsaXQoIiwiKX0sZGVjb2RlX2NlbGw6SXMsZGVjb2RlX3JhbmdlOnphLGZvcm1hdF9jZWxsOnp0LGdldF9mb3JtdWxhZTpGUixt'@; put 'YWtlX2NzdjpjRSxtYWtlX2pzb246JHksbWFrZV9mb3JtdWxhZTpGUixodG1sX3RvX3JzOmtmLmh0bWxfdG9fcnMsc2hlZXRfYWRkX2FvYTpGbixzaGVldF9hZGRfanNvbjpzaixzaGVldF9hZGRfZG9tOk1SLGFvYV90b19zaGVldDpRbixqc29uX3RvX3NoZWV0OmZ1bmN0aW9uIGx0ZShkLF8p'@; put 'e3JldHVybiBzaihudWxsLGQsXyl9LHRhYmxlX3RvX3NoZWV0OlRSLHRhYmxlX3RvX2Jvb2s6ZnVuY3Rpb24gSjVlKGQsXyl7cmV0dXJuIG1uKFRSKGQsXyksXyl9LHNoZWV0X3RvX2NzdjpjRSxzaGVldF90b190eHQ6YWosc2hlZXRfdG9fanNvbjokeSxzaGVldF90b19odG1sOmtmLmZyb21f'@; put 'c2hlZXQsc2hlZXRfdG9fZm9ybXVsYWU6RlIsc2hlZXRfdG9fcm93X29iamVjdF9hcnJheTokeX07ZnVuY3Rpb24gSFIoZCxfLG0sVCxQKXt2YXIgUTtpZihkLnN0eWxlJiYhKGQuX3JhbmdlJiYoUT0ic3RyaW5nIj09dHlwZW9mIGQuX3JhbmdlP3YudXRpbHMuZGVjb2RlX3JhbmdlKGQuX3Jh'@; put 'bmdlKTpkLl9yYW5nZSxtLmM+US5lLmN8fG0uYzxRLnMuY3x8bS5yPlEuZS5yfHxtLnI8US5zLnIpKSYmUSl7dmFyIHNlPWQuc3R5bGUuc3R5bGU7aWYoc2Upe3NlLndob2xlVGFibGUmJlUxLmFwcGx5X3N0eWxlX2RlbHRhKFQsc2Uud2hvbGVUYWJsZSk7ZTppZihzZS5oZWFkZXJSb3cpaWYo'@; put 'UCl7aWYobS5yIT1RLnMucilicmVhayBlO19uKGQuc3R5bGUuY29saGVhZCl8fFUxLmFwcGx5X3N0eWxlX2RlbHRhKFQsc2UuaGVhZGVyUm93KX1lbHNle2lmKG0uciE9US5zLnIpYnJlYWsgZTtfbihkLmhlYWRlcil8fFUxLmFwcGx5X3N0eWxlX2RlbHRhKFQsc2UuaGVhZGVyUm93KX19fX1V'@; put 'MS50ZXN0X3Bhc3N3b3JkPWZ1bmN0aW9uIFE5KGQsXyl7dmFyIG09QnVmZmVyLmZyb20oZC5zYWx0LCJiYXNlNjQiKSxUPWQuYWxnbyxQPVNkKEJ1ZmZlci5jb25jYXQoW20sQnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxfKSldKSxUKSxRPUJ1ZmZlci5hbGxvYyg0KTtP'@; put 'bChRLDApO2Zvcih2YXIgc2U9MDtzZTxkLnNwaW47KytzZSlRLmw9MCxRLndyaXRlX3NoaWZ0KDQsc2UpLFA9U2QoQnVmZmVyLmNvbmNhdChbUCxRXSksVCk7dmFyIG9lPUJ1ZmZlci5mcm9tKGQuaGFzaCwiYmFzZTY0Iik7cmV0dXJuIDA9PVAuY29tcGFyZShvZSl9LFUxLmhhc2hfcGFzc3dv'@; put 'cmQ9ZnVuY3Rpb24gS2VlKGQpe3ZhciBfPXthbGdvOiJTSEEtNTEyIixzYWx0OiJVMmhsWlhSS1V5NWpiMjB2ZUd4emVBPT0iLHNwaW46MWUzfSxtPUJ1ZmZlci5mcm9tKF8uc2FsdCwiYmFzZTY0IiksVD1fLmFsZ28sUD1TZChCdWZmZXIuY29uY2F0KFttLEJ1ZmZlci5mcm9tKGNwdGFibGUu'@; put 'dXRpbHMuZW5jb2RlKDEyMDAsZCkpXSksVCksUT1CdWZmZXIuYWxsb2MoNCk7T2woUSwwKTtmb3IodmFyIHNlPTA7c2U8Xy5zcGluOysrc2UpUS5sPTAsUS53cml0ZV9zaGlmdCg0LHNlKSxQPVNkKEJ1ZmZlci5jb25jYXQoW1AsUV0pLFQpO3JldHVybiBfLmhhc2g9UC50b1N0cmluZygiYmFz'@; put 'ZTY0IiksX30sVTEuc2hlZXRfc2V0X3JhbmdlX3N0eWxlPWZ1bmN0aW9uKGQsXyxtKXtpZihtKXt2YXIgVD0ic3RyaW5nIj09dHlwZW9mIF8/eXQoXyk6XztudWxsIT1ULnImJm51bGwhPVQuYyYmKFQ9e3M6VCxlOlR9KTt2YXIgb2UsUD1ULnMucixRPTAsc2U9IiIsZGU9emEoZFsiIXJlZiJd'@; put 'fHwiQTEiKTtkZS5zLnI+VC5zLnImJihkZS5zLnI9VC5zLnIpLGRlLnMuYz5ULnMuYyYmKGRlLnMuYz1ULnMuYyksZGUuZS5yPFQuZS5yJiYoZGUuZS5yPVQuZS5yKSxkZS5lLmM8VC5lLmMmJihkZS5lLmM9VC5lLmMpLGRbIiFyZWYiXT1odChkZSk7Zm9yKHZhciBOZT1BcnJheS5pc0FycmF5'@; put 'KGQpO1A8PVQuZS5yOysrUClmb3IoUT1ULnMuYztRPD1ULmUuYzsrK1EpTmU/KGRbUF18fChkW1BdPVtdKSxkW1BdW1FdfHwoZFtQXVtRXT17dDoieiJ9KSxvZT1kW1BdW1FdKTooZFtzZT1xaSh7cjpQLGM6UX0pXXx8KGRbc2VdPXt0OiJ6In0pLG9lPWRbc2VdKSxvZS5zfHwob2Uucz17fSks'@; put 'T2JqZWN0LmtleXMobSkuZm9yRWFjaChMZSksb2Uucy5wYXR0ZXJuVHlwZSYmIW9lLnMuZmdDb2xvciYmKGRlbGV0ZSBvZS5zLnBhdHRlcm5UeXBlLGRlbGV0ZSBvZS5zLmJnQ29sb3IpLChvZS5zLmZnQ29sb3J8fG9lLnMuYmdDb2xvcikmJiJub25lIj09KG9lLnMucGF0dGVyblR5cGV8fCJu'@; put 'b25lIikmJihvZS5zLnBhdHRlcm5UeXBlPSJzb2xpZCIpO2lmKFA9VC5zLnIsbS50b3B8fG51bGw9PT1tLnRvcClmb3IoUT1ULnMuYztRPD1ULmUuYzsrK1Epe2lmKE5lKXtpZighZFtQXSljb250aW51ZTtvZT1kW1BdW1FdfWVsc2Ugc2U9cWkoe3I6UCxjOlF9KSxvZT1kW3NlXTtvZSYmKG51'@; put 'bGw9PT1tLnRvcD9kZWxldGUgb2Uucy50b3A6b2Uucy50b3A9UXIobS50b3ApKX1pZihQPVQuZS5yLG0uYm90dG9tfHxudWxsPT09bS5ib3R0b20pZm9yKFE9VC5zLmM7UTw9VC5lLmM7KytRKXtpZihOZSl7aWYoIWRbUF0pY29udGludWU7b2U9ZFtQXVtRXX1lbHNlIHNlPXFpKHtyOlAsYzpR'@; put 'fSksb2U9ZFtzZV07b2UmJihudWxsPT09bS5ib3R0b20/ZGVsZXRlIG9lLnMuYm90dG9tOm9lLnMuYm90dG9tPVFyKG0uYm90dG9tKSl9aWYoUT1ULnMuYyxtLmxlZnR8fG51bGw9PT1tLmxlZnQpZm9yKFA9VC5zLnI7UDw9VC5lLnI7KytQKXtpZihOZSl7aWYoIWRbUF0pY29udGludWU7b2U9'@; put 'ZFtQXVtRXX1lbHNlIHNlPXFpKHtyOlAsYzpRfSksb2U9ZFtzZV07b2UmJihudWxsPT09bS5sZWZ0P2RlbGV0ZSBvZS5zLmxlZnQ6b2Uucy5sZWZ0PVFyKG0ubGVmdCkpfWlmKFE9VC5lLmMsbS5yaWdodHx8bnVsbD09PW0ucmlnaHQpZm9yKFA9VC5zLnI7UDw9VC5lLnI7KytQKXtpZihOZSl7'@; put 'aWYoIWRbUF0pY29udGludWU7b2U9ZFtQXVtRXX1lbHNlIHNlPXFpKHtyOlAsYzpRfSksb2U9ZFtzZV07b2UmJihudWxsPT09bS5yaWdodD9kZWxldGUgb2Uucy5yaWdodDpvZS5zLnJpZ2h0PVFyKG0ucmlnaHQpKX19ZnVuY3Rpb24gTGUoQmUpe2lmKCJ0b3AiIT1CZSYmImJvdHRvbSIhPUJl'@; put 'JiYibGVmdCIhPUJlJiYicmlnaHQiIT1CZSl7aWYoInoiPT1CZSlyZXR1cm4gdm9pZChvZS56PW0ueik7aWYoImFsaWdubWVudCI9PUJlKXJldHVybiB2b2lkKG9lLnNbQmVdP09iamVjdC5rZXlzKG1bQmVdKS5mb3JFYWNoKGZ1bmN0aW9uKFplKXtvZS5zW0JlXVtaZV09bVtCZV1bWmVdfSk6'@; put 'b2Uuc1tCZV09UXIobVtCZV0pKTtpZigiaW5jb2wiPT1CZSlyZXR1cm4gUT5ULnMuYyYmKG51bGw9PT1tLmxlZnQ/ZGVsZXRlIG9lLnMubGVmdDpvZS5zLmxlZnQ9Im9iamVjdCI9PXR5cGVvZiBtW0JlXT9RcihtW0JlXSk6bVtCZV0pLHZvaWQoUTxULmUuYyYmKG51bGw9PT1tLnJpZ2h0P2Rl'@; put 'bGV0ZSBvZS5zLnJpZ2h0Om9lLnMucmlnaHQ9Im9iamVjdCI9PXR5cGVvZiBtW0JlXT9RcihtW0JlXSk6bVtCZV0pKTtpZigiaW5yb3ciPT1CZSlyZXR1cm4gUD5ULnMuciYmKG51bGw9PT1tLnRvcD9kZWxldGUgb2Uucy50b3A6b2Uucy50b3A9Im9iamVjdCI9PXR5cGVvZiBtW0JlXT9Rciht'@; put 'W0JlXSk6bVtCZV0pLHZvaWQoUDxULmUuciYmKG51bGw9PT1tLmJvdHRvbT9kZWxldGUgb2Uucy5ib3R0b206b2Uucy5ib3R0b209Im9iamVjdCI9PXR5cGVvZiBtW0JlXT9RcihtW0JlXSk6bVtCZV0pKTtudWxsPT09bVtCZV0/ZGVsZXRlIG9lLnNbQmVdOm9lLnNbQmVdPW1bQmVdJiZBcnJh'@; put 'eS5pc0FycmF5KG1bQmVdKT9tW0JlXS5zbGljZSgpLm1hcChmdW5jdGlvbihaZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBaZT9RcihaZSk6WmV9KToib2JqZWN0Ij09dHlwZW9mIG1bQmVdP1FyKG1bQmVdKTptW0JlXX19fSxVMS5hcHBseV9zdHlsZV9kZWx0YT1mdW5jdGlvbihkLF8pe1si'@; put 'c3oiLCJib2xkIiwiaXRhbGljIiwidW5kZXJsaW5lIiwic3RyaWtlIiwibmFtZSIsInZhbGlnbiJdLmZvckVhY2goZnVuY3Rpb24obSl7dmFyIFQ9bTsiYmdDb2xvciI9PW0/VD0iZmdDb2xvciI6ImZnQ29sb3IiPT1tJiYoVD0iYmdDb2xvciIpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv'@; put 'cGVydHkuY2FsbChfLG0pJiYobnVsbD09PV9bbV0/ZGVsZXRlIGRbVF06bnVsbCE9X1ttXSYmKGRbVF09X1ttXSkpfSksWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJhbGlnbm1lbnQiLCJwcm90ZWN0aW9uIiwiY29sb3IiLCJmZ0NvbG9yIiwiYmdDb2xvciJdLmZvckVhY2goZnVu'@; put 'Y3Rpb24obSl7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF8sbSkmJihudWxsPT09X1ttXT9kZWxldGUgZFttXTpudWxsIT1fW21dJiYoZFttXT1RcihfW21dKSkpfSl9LFUxLmdldF9jb21wdXRlZF9zdHlsZT1mdW5jdGlvbihkLF8peyJzdHJpbmciPT10eXBlb2YgXyYm'@; put 'KF89di51dGlscy5kZWNvZGVfY2VsbChfKSk7dmFyIG09QXJyYXkuaXNBcnJheShkKT8oZFtfLnJdfHxbXSlbXy5jXTpkW3YudXRpbHMuZW5jb2RlX2NlbGwoXyldLFQ9UXIobSYmbS5zfHx7fSk7cmV0dXJuIGRbIiF0YWJsZXMiXSYmZFsiIXRhYmxlcyJdLmZvckVhY2goZnVuY3Rpb24oUCl7'@; put 'SFIoUCwwLF8sVCl9KSxkWyIhcGl2b3RzIl0mJmRbIiFwaXZvdHMiXS5mb3JFYWNoKGZ1bmN0aW9uKFApe0hSKFAsMCxfLFQsITApfSksVH07dmFyIGNqPXt9O1UxLmNlbGxfYXJyYXlfdG9fY3N2X3Jvdz1mdW5jdGlvbihkLF8pe3ZhciBtPV8/P3t9LFQ9dm9pZCAwIT09bS5GUz9tLkZTOiIs'@; put 'IixQPVQuY2hhckNvZGVBdCgwKSxRPXZvaWQgMCE9PW0uUlM/bS5SUzoiXG4iLHNlPVEuY2hhckNvZGVBdCgwKSxvZT1jaltUXXx8KGNqW1RdPW5ldyBSZWdFeHAoKCJ8Ij09VD8iXFx8IjpUKSsiKyQiKSksZGU9ZnVuY3Rpb24gbGooZCxfLG0sVCxQKXtmb3IodmFyIFE9ITAsc2U9W10sb2U9'@; put 'IiIsZGU9MDtkZTw9ZC5sZW5ndGgtMTsrK2RlKXt2YXIgTGU9ZFtkZV07aWYobnVsbD09TGUpb2U9IiI7ZWxzZSBpZihudWxsIT1MZS52KXtRPSExLG9lPSIiK3p0KExlLG51bGwsUCk7Zm9yKHZhciBOZT0wLEJlPTA7TmUhPT1vZS5sZW5ndGg7KytOZSlpZigoQmU9b2UuY2hhckNvZGVBdChO'@; put 'ZSkpPT09X3x8QmU9PT1tfHwzND09PUJlKXtvZT0nIicrb2UucmVwbGFjZShldiwnIiInKSsnIic7YnJlYWt9IklEIj09b2UmJihvZT0nIklEIicpfWVsc2UgbnVsbD09TGUuZnx8TGUuRj9vZT0iIjooUT0hMSwob2U9Ij0iK0xlLmYpLmluZGV4T2YoIiwiKT49MCYmKG9lPSciJytvZS5yZXBs'@; put 'YWNlKGV2LCciIicpKyciJykpO3NlLnB1c2gob2UpfXJldHVybiExPT09UC5ibGFua3Jvd3MmJlE/bnVsbDpzZS5qb2luKFQpfShkLFAsc2UsVCxtKTtyZXR1cm4gbS5zdHJpcCYmKGRlPWRlLnJlcGxhY2Uob2UsIiIpKSxkZStRfSxmdW5jdGlvbihkKXtmdW5jdGlvbiBtKFEsc2Usb2Upe3Jl'@; put 'dHVybiBudWxsIT1RW3NlXT9RW3NlXTpRW3NlXT1vZX1mdW5jdGlvbiBUKFEsc2Usb2Upe2lmKCJzdHJpbmciPT10eXBlb2Ygc2Upe2lmKEFycmF5LmlzQXJyYXkoUSkpe3ZhciBkZT1JcyhzZSk7cmV0dXJuIFFbZGUucl18fChRW2RlLnJdPVtdKSxRW2RlLnJdW2RlLmNdfHwoUVtkZS5yXVtk'@; put 'ZS5jXT17dDoieiJ9KX1yZXR1cm4gUVtzZV18fChRW3NlXT17dDoieiJ9KX1yZXR1cm4gVChRLHFpKCJudW1iZXIiIT10eXBlb2Ygc2U/c2U6e3I6c2UsYzpvZXx8MH0pKX1kLmNvbnN0cz1kLmNvbnN0c3x8e30sZC5zaGVldF9nZXRfY2VsbD1ULGQuYm9va19uZXc9ZnVuY3Rpb24oKXtyZXR1'@; put 'cm57U2hlZXROYW1lczpbXSxTaGVldHM6e319fSxkLmJvb2tfYXBwZW5kX3NoZWV0PWZ1bmN0aW9uKFEsc2Usb2Upe2lmKCFvZSlmb3IodmFyIGRlPTE7ZGU8PTY1NTM1JiYtMSE9US5TaGVldE5hbWVzLmluZGV4T2Yob2U9IlNoZWV0IitkZSk7KytkZSk7aWYoaVIob2UpLFEuU2hlZXROYW1l'@; put 'cy5pbmRleE9mKG9lKT49MCl0aHJvdyBuZXcgRXJyb3IoIldvcmtzaGVldCB3aXRoIG5hbWUgfCIrb2UrInwgYWxyZWFkeSBleGlzdHMhIik7US5TaGVldE5hbWVzLnB1c2gob2UpLFEuU2hlZXRzW29lXT1zZX0sZC5ib29rX3NldF9zaGVldF92aXNpYmlsaXR5PWZ1bmN0aW9uKFEsc2Usb2Up'@; put 'e20oUSwiV29ya2Jvb2siLHt9KSxtKFEuV29ya2Jvb2ssIlNoZWV0cyIsW10pO3ZhciBkZT1mdW5jdGlvbiBQKFEsc2Upe2lmKCJudW1iZXIiPT10eXBlb2Ygc2Upe2lmKHNlPj0wJiZRLlNoZWV0TmFtZXMubGVuZ3RoPnNlKXJldHVybiBzZTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5k'@; put 'IHNoZWV0ICMgIitzZSl9aWYoInN0cmluZyI9PXR5cGVvZiBzZSl7dmFyIG9lPVEuU2hlZXROYW1lcy5pbmRleE9mKHNlKTtpZihvZT4tMSlyZXR1cm4gb2U7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzaGVldCBuYW1lIHwiK3NlKyJ8Iil9dGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qg'@; put 'ZmluZCBzaGVldCB8IitzZSsifCIpfShRLHNlKTtzd2l0Y2gobShRLldvcmtib29rLlNoZWV0cyxkZSx7fSksb2Upe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJCYWQgc2hlZXQgdmlzaWJpbGl0eSBzZXR0aW5nICIrb2UpfVEuV29ya2Jvb2su'@; put 'U2hlZXRzW2RlXS5IaWRkZW49b2V9LGZ1bmN0aW9uIF8oUSl7US5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtkLmNvbnN0c1tzZVswXV09c2VbMV19KX0oW1siU0hFRVRfVklTSUJMRSIsMF0sWyJTSEVFVF9ISURERU4iLDFdLFsiU0hFRVRfVkVSWV9ISURERU4iLDJdXSksZC5jZWxsX3NldF9udW1i'@; put 'ZXJfZm9ybWF0PWZ1bmN0aW9uKFEsc2Upe3JldHVybiBRLno9c2UsUX0sZC5jZWxsX3NldF9oeXBlcmxpbms9ZnVuY3Rpb24oUSxzZSxvZSl7cmV0dXJuIHNlPyhRLmw9e1RhcmdldDpzZX0sb2UmJihRLmwuVG9vbHRpcD1vZSksUS5zfHwoUS5zPXt9KSxRLnMuY29sb3I9e3RoZW1lOjEwfSk6'@; put 'KGRlbGV0ZSBRLmwsUS5zJiZRLnMuY29sb3ImJjEwPT1RLnMuY29sb3IudGhlbWUmJmRlbGV0ZSBRLnMuY29sb3IpLFF9LGQuY2VsbF9zZXRfaW50ZXJuYWxfbGluaz1mdW5jdGlvbihRLHNlLG9lKXtyZXR1cm4gZC5jZWxsX3NldF9oeXBlcmxpbmsoUSwiIyIrc2Usb2UpfSxkLmNlbGxfYWRk'@; put 'X2NvbW1lbnQ9ZnVuY3Rpb24oUSxzZSxvZSl7US5jfHwoUS5jPVtdKSxRLmMucHVzaCh7dDpzZSxhOm9lfHwiU2hlZXRKUyJ9KX0sZC5zaGVldF9zZXRfYXJyYXlfZm9ybXVsYT1mdW5jdGlvbihRLHNlLG9lKXtmb3IodmFyIGRlPSJzdHJpbmciIT10eXBlb2Ygc2U/c2U6eXQoc2UpLExlPSJz'@; put 'dHJpbmciPT10eXBlb2Ygc2U/c2U6aHQoc2UpLE5lPWRlLnMucjtOZTw9ZGUuZS5yOysrTmUpZm9yKHZhciBCZT1kZS5zLmM7QmU8PWRlLmUuYzsrK0JlKXt2YXIgWmU9VChRLE5lLEJlKTtaZS50PSJuIixaZS5GPUxlLGRlbGV0ZSBaZS52LE5lPT1kZS5zLnImJkJlPT1kZS5zLmMmJihaZS5m'@; put 'PW9lKX1yZXR1cm4gUX19KFUxKSxJZSYmZnVuY3Rpb24oKXt2YXIgZD1oKDcwNDUpLlJlYWRhYmxlO3Yuc3RyZWFtPXt0b19qc29uOmZ1bmN0aW9uKFAsUSl7dmFyIHNlPWQoe29iamVjdE1vZGU6ITB9KTtpZihudWxsPT1QfHxudWxsPT1QWyIhcmVmIl0pcmV0dXJuIHNlLnB1c2gobnVsbCks'@; put 'c2U7dmFyIG9lPXt0OiJuIix2OjB9LGRlPTAsTGU9MSxOZT1bXSxCZT0wLFplPSIiLG50PXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sbXQ9UXx8e30sUWU9bnVsbCE9bXQucmFuZ2U/bXQucmFuZ2U6UFsiIXJlZiJdO3N3aXRjaCgxPT09bXQuaGVhZGVyP2RlPTE6IkEiPT09bXQuaGVhZGVy'@; put 'P2RlPTI6QXJyYXkuaXNBcnJheShtdC5oZWFkZXIpJiYoZGU9MyksdHlwZW9mIFFlKXtjYXNlInN0cmluZyI6bnQ9eXQoUWUpO2JyZWFrO2Nhc2UibnVtYmVyIjoobnQ9eXQoUFsiIXJlZiJdKSkucy5yPVFlO2JyZWFrO2RlZmF1bHQ6bnQ9UWV9ZGU+MCYmKExlPTApO3ZhciBmdD16byhudC5z'@; put 'LnIpLGt0PVtdLGJ0PTAsRXQ9QXJyYXkuaXNBcnJheShQKSxWdD1udC5zLnIsdW49MCxucj0wO2ZvcihFdCYmIVBbVnRdJiYoUFtWdF09W10pLHVuPW50LnMuYzt1bjw9bnQuZS5jOysrdW4pc3dpdGNoKGt0W3VuXT1tcyh1biksb2U9RXQ/UFtWdF1bdW5dOlBba3RbdW5dK2Z0XSxkZSl7Y2Fz'@; put 'ZSAxOk5lW3VuXT11bi1udC5zLmM7YnJlYWs7Y2FzZSAyOk5lW3VuXT1rdFt1bl07YnJlYWs7Y2FzZSAzOk5lW3VuXT1tdC5oZWFkZXJbdW4tbnQucy5jXTticmVhaztkZWZhdWx0OmZvcihudWxsPT1vZSYmKG9lPXt3OiJfX0VNUFRZIix0OiJzIn0pLFplPUJlPXp0KG9lLG51bGwsbXQpLGJ0'@; put 'PTAsbnI9MDtucjxOZS5sZW5ndGg7KytucilOZVtucl09PVplJiYoWmU9QmUrIl8iKyArK2J0KTtOZVt1bl09WmV9cmV0dXJuIFZ0PW50LnMucitMZSxzZS5fcmVhZD1mdW5jdGlvbigpe2lmKFZ0Pm50LmUucilyZXR1cm4gc2UucHVzaChudWxsKTtmb3IoO1Z0PD1udC5lLnI7KXt2YXIgbm49'@; put 'b2ooUCxudCxWdCxrdCxkZSxOZSxFdCxtdCk7aWYoKytWdCwhMT09PW5uLmlzZW1wdHl8fCgxPT09ZGU/ITEhPT1tdC5ibGFua3Jvd3M6bXQuYmxhbmtyb3dzKSl7c2UucHVzaChubi5yb3cpO2JyZWFrfX19LHNlfSx0b19odG1sOmZ1bmN0aW9uKFAsUSl7dmFyIHNlPWQoKSxvZT1RfHx7fSxM'@; put 'ZT1udWxsIT1vZS5mb290ZXI/b2UuZm9vdGVyOmtmLkVORDtzZS5wdXNoKG51bGwhPW9lLmhlYWRlcj9vZS5oZWFkZXI6a2YuQkVHSU4pO3ZhciBOZT16YShQWyIhcmVmIl0pO29lLmRlbnNlPUFycmF5LmlzQXJyYXkoUCksc2UucHVzaChrZi5fcHJlYW1ibGUoUCxOZSxvZSkpO3ZhciBCZT1O'@; put 'ZS5zLnIsWmU9ITEsbnQ9W107cmV0dXJuIHNlLl9yZWFkPWZ1bmN0aW9uKCl7aWYoQmU+TmUuZS5yKXJldHVybiBaZXx8KFplPSEwLHNlLnB1c2goIjwvdGFibGU+IitMZSkpLHNlLnB1c2gobnVsbCk7Zm9yKDtCZTw9TmUuZS5yOyl7c2UucHVzaChrZi5fcm93KFAsTmUsQmUsb2UsbnQsIiIp'@; put 'KSwrK0JlO2JyZWFrfX0sc2V9LHRvX2NzdjpmdW5jdGlvbihQLFEpe3ZhciBzZT1kKCksb2U9UT8/e307aWYobnVsbD09UHx8bnVsbD09UFsiIXJlZiJdKXJldHVybiBzZS5wdXNoKG51bGwpLHNlO3ZhciBkZT15dChQWyIhcmVmIl0pLExlPXZvaWQgMCE9PW9lLkZTP29lLkZTOiIsIixOZT1M'@; put 'ZS5jaGFyQ29kZUF0KDApLEJlPXZvaWQgMCE9PW9lLlJTP29lLlJTOiJcbiIsWmU9QmUuY2hhckNvZGVBdCgwKSxudD1uZXcgUmVnRXhwKCgifCI9PUxlPyJcXHwiOkxlKSsiKyQiKSxtdD0iIixRZT1bXTtvZS5kZW5zZT1BcnJheS5pc0FycmF5KFApO2Zvcih2YXIgZnQ9b2Uuc2tpcEhpZGRl'@; put 'biYmUFsiIWNvbHMiXXx8W10sa3Q9b2Uuc2tpcEhpZGRlbiYmUFsiIXJvd3MiXXx8W10sYnQ9ZGUucy5jO2J0PD1kZS5lLmM7KytidCkoZnRbYnRdfHx7fSkuaGlkZGVufHwoUWVbYnRdPW1zKGJ0KSk7dmFyIEV0PWRlLnMucixWdD0hMTtyZXR1cm4gc2UuX3JlYWQ9ZnVuY3Rpb24oKXtpZigh'@; put 'VnQpcmV0dXJuIFZ0PSEwLHNlLnB1c2goIlx1ZmVmZiIpO2Zvcig7RXQ8PWRlLmUucjspaWYoKytFdCwhKGt0W0V0LTFdfHx7fSkuaGlkZGVuJiZudWxsIT0obXQ9cXkoUCxkZSxFdC0xLFFlLE5lLFplLExlLG9lKSkpe29lLnN0cmlwJiYobXQ9bXQucmVwbGFjZShudCwiIikpLHNlLnB1c2go'@; put 'bXQrQmUpO2JyZWFrfXJldHVybiBFdD5kZS5lLnI/c2UucHVzaChudWxsKTp2b2lkIDB9LHNlfX19KCksdi5wYXJzZV94bHNjZmI9d1Isdi5wYXJzZV96aXA9RFIsdi5yZWFkPVk4LHYucmVhZEZpbGU9dGosdi5yZWFkRmlsZVN5bmM9dGosdi53cml0ZT1aOCx2LndyaXRlRmlsZT1OUix2Lndy'@; put 'aXRlRmlsZVN5bmM9TlIsdi53cml0ZUZpbGVBc3luYz1mdW5jdGlvbiBpaihkLF8sbSxUKXt2YXIgUD1tfHx7fTtQLnR5cGU9ImZpbGUiLFAuZmlsZT1kLE9SKFApLFAudHlwZT0iYnVmZmVyIjt2YXIgUT1UO3JldHVybiBRIGluc3RhbmNlb2YgRnVuY3Rpb258fChRPW0pLHhlLndyaXRlRmls'@; put 'ZShkLFo4KF8sUCksUSl9LHYuc2V0X2RhdGVfc3R5bGU9ZnVuY3Rpb24gR3QoZCl7c3dpdGNoKGQpe2Nhc2UgMDpSdCgpO2JyZWFrO2Nhc2UgMTohZnVuY3Rpb24gTHQoKXt2YXIgZD1uZXcgRGF0ZTt0dD1KZS5nZXRUaW1lKCkrNmU0KihkLmdldFRpbWV6b25lT2Zmc2V0KCktSmUuZ2V0VGlt'@; put 'ZXpvbmVPZmZzZXQoKSk7dmFyIF89ZC5nZXRUaW1lem9uZU9mZnNldCgpO0tlPWZ1bmN0aW9uKFQsUCl7dmFyIFE9VC5nZXRUaW1lKCk7cmV0dXJuIFAmJihRLT0xMjYzMTY4ZTUpLChRLShKZS5nZXRUaW1lKCkrNmU0KihULmdldFRpbWV6b25lT2Zmc2V0KCktSmUuZ2V0VGltZXpvbmVPZmZz'@; put 'ZXQoKSkpKS84NjRlNX0sJHQ9ZnVuY3Rpb24oVCl7dmFyIFA9bmV3IERhdGU7cmV0dXJuIFAuc2V0VGltZSgyNCpUKjYwKjYwKjFlMyt0dCksUC5nZXRUaW1lem9uZU9mZnNldCgpIT09XyYmUC5zZXRUaW1lKFAuZ2V0VGltZSgpKzZlNCooUC5nZXRUaW1lem9uZU9mZnNldCgpLV8pKSxQfX0o'@; put 'KX19LHYudXRpbHM9VTEsdi5TU0Y9SSx0eXBlb2YgYWU8InUiJiYodi5DRkI9YWUpfShqKX0sNTUxODgoZmUsail7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Zvcih2YXIgaD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkr'@; put 'LyIseT1uZXcgVWludDhBcnJheSgyNTYpLGM9MDtjPDY0O2MrKyl5W2guY2hhckNvZGVBdChjKV09YztqLmw9ZnVuY3Rpb24ocyl7dmFyIHYsQT1uZXcgVWludDhBcnJheShzKSxDPUEubGVuZ3RoLHc9IiI7Zm9yKHY9MDt2PEM7dis9Myl3Kz1oW0Fbdl0+PjJdLHcrPWhbKDMmQVt2XSk8PDR8'@; put 'QVt2KzFdPj40XSx3Kz1oWygxNSZBW3YrMV0pPDwyfEFbdisyXT4+Nl0sdys9aFs2MyZBW3YrMl1dO3JldHVybiBDJTM9PTI/dz13LnN1YnN0cmluZygwLHcubGVuZ3RoLTEpKyI9IjpDJTM9PTEmJih3PXcuc3Vic3RyaW5nKDAsdy5sZW5ndGgtMikrIj09Iiksd30sai5EPWZ1bmN0aW9uKHMp'@; put 'e3ZhciBDLFMsTCxSLHgsQT0uNzUqcy5sZW5ndGgsdj1zLmxlbmd0aCx3PTA7Ij0iPT09c1tzLmxlbmd0aC0xXSYmKEEtLSwiPSI9PT1zW3MubGVuZ3RoLTJdJiZBLS0pO3ZhciBVPW5ldyBBcnJheUJ1ZmZlcihBKSxIPW5ldyBVaW50OEFycmF5KFUpO2ZvcihDPTA7Qzx2O0MrPTQpUz15W3Mu'@; put 'Y2hhckNvZGVBdChDKV0sTD15W3MuY2hhckNvZGVBdChDKzEpXSxSPXlbcy5jaGFyQ29kZUF0KEMrMildLHg9eVtzLmNoYXJDb2RlQXQoQyszKV0sSFt3KytdPVM8PDJ8TD4+NCxIW3crK109KDE1JkwpPDw0fFI+PjIsSFt3KytdPSgzJlIpPDw2fDYzJng7cmV0dXJuIFV9fSgpfSwxMzk4MShm'@; put 'ZSxqKXsidXNlIHN0cmljdCI7ai5ieXRlTGVuZ3RoPWZ1bmN0aW9uIHcoSCl7dmFyIFY9QyhIKSx6PVZbMV07cmV0dXJuIDMqKFZbMF0reikvNC16fSxqLnRvQnl0ZUFycmF5PWZ1bmN0aW9uIEwoSCl7dmFyIFYscmUsTj1DKEgpLHo9TlswXSxZPU5bMV0sRj1uZXcgYyhmdW5jdGlvbiBTKEgs'@; put 'VixOKXtyZXR1cm4gMyooVitOKS80LU59KDAseixZKSksVz0wLHE9WT4wP3otNDp6O2ZvcihyZT0wO3JlPHE7cmUrPTQpVj15W0guY2hhckNvZGVBdChyZSldPDwxOHx5W0guY2hhckNvZGVBdChyZSsxKV08PDEyfHlbSC5jaGFyQ29kZUF0KHJlKzIpXTw8Nnx5W0guY2hhckNvZGVBdChyZSsz'@; put 'KV0sRltXKytdPVY+PjE2JjI1NSxGW1crK109Vj4+OCYyNTUsRltXKytdPTI1NSZWO3JldHVybiAyPT09WSYmKFY9eVtILmNoYXJDb2RlQXQocmUpXTw8Mnx5W0guY2hhckNvZGVBdChyZSsxKV0+PjQsRltXKytdPTI1NSZWKSwxPT09WSYmKFY9eVtILmNoYXJDb2RlQXQocmUpXTw8MTB8eVtI'@; put 'LmNoYXJDb2RlQXQocmUrMSldPDw0fHlbSC5jaGFyQ29kZUF0KHJlKzIpXT4+MixGW1crK109Vj4+OCYyNTUsRltXKytdPTI1NSZWKSxGfSxqLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24gVShIKXtmb3IodmFyIFYsTj1ILmxlbmd0aCx6PU4lMyxZPVtdLEY9MTYzODMsVz0wLHE9Ti16O1c8cTtX'@; put 'Kz1GKVkucHVzaCh4KEgsVyxXK0Y+cT9xOlcrRikpO3JldHVybiAxPT09ej9ZLnB1c2goaFsoVj1IW04tMV0pPj4yXStoW1Y8PDQmNjNdKyI9PSIpOjI9PT16JiZZLnB1c2goaFsoVj0oSFtOLTJdPDw4KStIW04tMV0pPj4xMF0raFtWPj40JjYzXStoW1Y8PDImNjNdKyI9IiksWS5qb2luKCIi'@; put 'KX07Zm9yKHZhciBoPVtdLHk9W10sYz10eXBlb2YgVWludDhBcnJheTwidSI/VWludDhBcnJheTpBcnJheSxzPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixBPTA7QTw2NDsrK0EpaFtBXT1zW0FdLHlbcy5jaGFyQ29k'@; put 'ZUF0KEEpXT1BO2Z1bmN0aW9uIEMoSCl7dmFyIFY9SC5sZW5ndGg7aWYoViU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIE49SC5pbmRleE9mKCI9Iik7cmV0dXJuLTE9PT1OJiYoTj1WKSxbTixOPT09Vj8w'@; put 'OjQtTiU0XX1mdW5jdGlvbiBSKEgpe3JldHVybiBoW0g+PjE4JjYzXStoW0g+PjEyJjYzXStoW0g+PjYmNjNdK2hbNjMmSF19ZnVuY3Rpb24geChILFYsTil7Zm9yKHZhciBZPVtdLEY9VjtGPE47Ris9MylZLnB1c2goUigoSFtGXTw8MTYmMTY3MTE2ODApKyhIW0YrMV08PDgmNjUyODApKygy'@; put 'NTUmSFtGKzJdKSkpO3JldHVybiBZLmpvaW4oIiIpfXlbNDVdPTYyLHlbOTVdPTYzfSwxMjM3NShmZSxqLGgpe3ZhciB5PWgoMjcwNTQpLkJ1ZmZlcjtmdW5jdGlvbiBjKFMpe3kuaXNCdWZmZXIoUyl8fChTPXkuZnJvbShTKSk7Zm9yKHZhciBMPVMubGVuZ3RoLzR8MCxSPW5ldyBBcnJheShM'@; put 'KSx4PTA7eDxMO3grKylSW3hdPVMucmVhZFVJbnQzMkJFKDQqeCk7cmV0dXJuIFJ9ZnVuY3Rpb24gcyhTKXtmb3IoOzA8Uy5sZW5ndGg7UysrKVNbMF09MH1mdW5jdGlvbiBBKFMsTCxSLHgsVSl7Zm9yKHZhciByZSxtZSxDZSxJZSxIPVJbMF0sVj1SWzFdLE49UlsyXSx6PVJbM10sWT1TWzBd'@; put 'XkxbMF0sRj1TWzFdXkxbMV0sVz1TWzJdXkxbMl0scT1TWzNdXkxbM10sa2U9NCxxZT0xO3FlPFU7cWUrKylyZT1IW1k+Pj4yNF1eVltGPj4+MTYmMjU1XV5OW1c+Pj44JjI1NV1eelsyNTUmcV1eTFtrZSsrXSxtZT1IW0Y+Pj4yNF1eVltXPj4+MTYmMjU1XV5OW3E+Pj44JjI1NV1eelsyNTUm'@; put 'WV1eTFtrZSsrXSxDZT1IW1c+Pj4yNF1eVltxPj4+MTYmMjU1XV5OW1k+Pj44JjI1NV1eelsyNTUmRl1eTFtrZSsrXSxJZT1IW3E+Pj4yNF1eVltZPj4+MTYmMjU1XV5OW0Y+Pj44JjI1NV1eelsyNTUmV11eTFtrZSsrXSxZPXJlLEY9bWUsVz1DZSxxPUllO3JldHVybiByZT0oeFtZPj4+MjRd'@; put 'PDwyNHx4W0Y+Pj4xNiYyNTVdPDwxNnx4W1c+Pj44JjI1NV08PDh8eFsyNTUmcV0pXkxba2UrK10sbWU9KHhbRj4+PjI0XTw8MjR8eFtXPj4+MTYmMjU1XTw8MTZ8eFtxPj4+OCYyNTVdPDw4fHhbMjU1JlldKV5MW2tlKytdLENlPSh4W1c+Pj4yNF08PDI0fHhbcT4+PjE2JjI1NV08PDE2fHhb'@; put 'WT4+PjgmMjU1XTw8OHx4WzI1NSZGXSleTFtrZSsrXSxJZT0oeFtxPj4+MjRdPDwyNHx4W1k+Pj4xNiYyNTVdPDwxNnx4W0Y+Pj44JjI1NV08PDh8eFsyNTUmV10pXkxba2UrK10sW3JlPj4+PTAsbWU+Pj49MCxDZT4+Pj0wLEllPj4+PTBdfXZhciB2PVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4'@; put 'LDI3LDU0XSxDPWZ1bmN0aW9uKCl7Zm9yKHZhciBTPW5ldyBBcnJheSgyNTYpLEw9MDtMPDI1NjtMKyspU1tMXT1MPDEyOD9MPDwxOkw8PDFeMjgzO2Zvcih2YXIgUj1bXSx4PVtdLFU9W1tdLFtdLFtdLFtdXSxIPVtbXSxbXSxbXSxbXV0sVj0wLE49MCx6PTA7ejwyNTY7Kyt6KXt2YXIgWT1O'@; put 'Xk48PDFeTjw8Ml5OPDwzXk48PDQ7UltWXT1ZPVk+Pj44XjI1NSZZXjk5LHhbWV09Vjt2YXIgRj1TW1ZdLFc9U1tGXSxxPVNbV10scmU9MjU3KlNbWV1eMTY4NDMwMDgqWTtVWzBdW1ZdPXJlPDwyNHxyZT4+PjgsVVsxXVtWXT1yZTw8MTZ8cmU+Pj4xNixVWzJdW1ZdPXJlPDw4fHJlPj4+MjQs'@; put 'VVszXVtWXT1yZSxIWzBdW1ldPShyZT0xNjg0MzAwOSpxXjY1NTM3KldeMjU3KkZeMTY4NDMwMDgqVik8PDI0fHJlPj4+OCxIWzFdW1ldPXJlPDwxNnxyZT4+PjE2LEhbMl1bWV09cmU8PDh8cmU+Pj4yNCxIWzNdW1ldPXJlLDA9PT1WP1Y9Tj0xOihWPUZeU1tTW1NbcV5GXV1dLE5ePVNbU1tO'@; put 'XV0pfXJldHVybntTQk9YOlIsSU5WX1NCT1g6eCxTVUJfTUlYOlUsSU5WX1NVQl9NSVg6SH19KCk7ZnVuY3Rpb24gdyhTKXt0aGlzLl9rZXk9YyhTKSx0aGlzLl9yZXNldCgpfXcuYmxvY2tTaXplPTE2LHcua2V5U2l6ZT0zMix3LnByb3RvdHlwZS5ibG9ja1NpemU9dy5ibG9ja1NpemUsdy5w'@; put 'cm90b3R5cGUua2V5U2l6ZT13LmtleVNpemUsdy5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciBTPXRoaXMuX2tleSxMPVMubGVuZ3RoLFI9TCs2LHg9NCooUisxKSxVPVtdLEg9MDtIPEw7SCsrKVVbSF09U1tIXTtmb3IoSD1MO0g8eDtIKyspe3ZhciBWPVVbSC0xXTtIJUw9'@; put 'PT0wPyhWPUMuU0JPWFsoVj1WPDw4fFY+Pj4yNCk+Pj4yNF08PDI0fEMuU0JPWFtWPj4+MTYmMjU1XTw8MTZ8Qy5TQk9YW1Y+Pj44JjI1NV08PDh8Qy5TQk9YWzI1NSZWXSxWXj12W0gvTHwwXTw8MjQpOkw+NiYmSCVMPT09NCYmKFY9Qy5TQk9YW1Y+Pj4yNF08PDI0fEMuU0JPWFtWPj4+MTYm'@; put 'MjU1XTw8MTZ8Qy5TQk9YW1Y+Pj44JjI1NV08PDh8Qy5TQk9YWzI1NSZWXSksVVtIXT1VW0gtTF1eVn1mb3IodmFyIE49W10sej0wO3o8eDt6Kyspe3ZhciBZPXgteixGPVVbWS0oeiU0PzA6NCldO05bel09ejw0fHxZPD00P0Y6Qy5JTlZfU1VCX01JWFswXVtDLlNCT1hbRj4+PjI0XV1eQy5J'@; put 'TlZfU1VCX01JWFsxXVtDLlNCT1hbRj4+PjE2JjI1NV1dXkMuSU5WX1NVQl9NSVhbMl1bQy5TQk9YW0Y+Pj44JjI1NV1dXkMuSU5WX1NVQl9NSVhbM11bQy5TQk9YWzI1NSZGXV19dGhpcy5fblJvdW5kcz1SLHRoaXMuX2tleVNjaGVkdWxlPVUsdGhpcy5faW52S2V5U2NoZWR1bGU9Tn0sdy5w'@; put 'cm90b3R5cGUuZW5jcnlwdEJsb2NrUmF3PWZ1bmN0aW9uKFMpe3JldHVybiBBKFM9YyhTKSx0aGlzLl9rZXlTY2hlZHVsZSxDLlNVQl9NSVgsQy5TQk9YLHRoaXMuX25Sb3VuZHMpfSx3LnByb3RvdHlwZS5lbmNyeXB0QmxvY2s9ZnVuY3Rpb24oUyl7dmFyIEw9dGhpcy5lbmNyeXB0QmxvY2tS'@; put 'YXcoUyksUj15LmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gUi53cml0ZVVJbnQzMkJFKExbMF0sMCksUi53cml0ZVVJbnQzMkJFKExbMV0sNCksUi53cml0ZVVJbnQzMkJFKExbMl0sOCksUi53cml0ZVVJbnQzMkJFKExbM10sMTIpLFJ9LHcucHJvdG90eXBlLmRlY3J5cHRCbG9jaz1mdW5jdGlv'@; put 'bihTKXt2YXIgTD0oUz1jKFMpKVsxXTtTWzFdPVNbM10sU1szXT1MO3ZhciBSPUEoUyx0aGlzLl9pbnZLZXlTY2hlZHVsZSxDLklOVl9TVUJfTUlYLEMuSU5WX1NCT1gsdGhpcy5fblJvdW5kcykseD15LmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4geC53cml0ZVVJbnQzMkJFKFJbMF0sMCkseC53'@; put 'cml0ZVVJbnQzMkJFKFJbM10sNCkseC53cml0ZVVJbnQzMkJFKFJbMl0sOCkseC53cml0ZVVJbnQzMkJFKFJbMV0sMTIpLHh9LHcucHJvdG90eXBlLnNjcnViPWZ1bmN0aW9uKCl7cyh0aGlzLl9rZXlTY2hlZHVsZSkscyh0aGlzLl9pbnZLZXlTY2hlZHVsZSkscyh0aGlzLl9rZXkpfSxmZS5l'@; put 'eHBvcnRzLkFFUz13fSwxOTMwNyhmZSxqLGgpe3ZhciB5PWgoMTIzNzUpLGM9aCgyNzA1NCkuQnVmZmVyLHM9aCgzMjQ3KSxBPWgoNzE5OTMpLHY9aCg4NTkxNyksQz1oKDEzNTQ2KSx3PWgoOTU3MjUpO2Z1bmN0aW9uIFIoeCxVLEgsVil7cy5jYWxsKHRoaXMpO3ZhciBOPWMuYWxsb2MoNCww'@; put 'KTt0aGlzLl9jaXBoZXI9bmV3IHkuQUVTKFUpO3ZhciB6PXRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2soTik7dGhpcy5fZ2hhc2g9bmV3IHYoeiksSD1mdW5jdGlvbiBMKHgsVSxIKXtpZigxMj09PVUubGVuZ3RoKXJldHVybiB4Ll9maW5JRD1jLmNvbmNhdChbVSxjLmZyb20oWzAsMCwwLDFd'@; put 'KV0pLGMuY29uY2F0KFtVLGMuZnJvbShbMCwwLDAsMl0pXSk7dmFyIFY9bmV3IHYoSCksTj1VLmxlbmd0aCx6PU4lMTY7Vi51cGRhdGUoVSkseiYmVi51cGRhdGUoYy5hbGxvYyh6PTE2LXosMCkpLFYudXBkYXRlKGMuYWxsb2MoOCwwKSk7dmFyIFk9OCpOLEY9Yy5hbGxvYyg4KTtGLndyaXRl'@; put 'VUludEJFKFksMCw4KSxWLnVwZGF0ZShGKSx4Ll9maW5JRD1WLnN0YXRlO3ZhciBXPWMuZnJvbSh4Ll9maW5JRCk7cmV0dXJuIHcoVyksV30odGhpcyxILHopLHRoaXMuX3ByZXY9Yy5mcm9tKEgpLHRoaXMuX2NhY2hlPWMuYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9Yy5hbGxvY1Vu'@; put 'c2FmZSgwKSx0aGlzLl9kZWNyeXB0PVYsdGhpcy5fYWxlbj0wLHRoaXMuX2xlbj0wLHRoaXMuX21vZGU9eCx0aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfUEoUixzKSxSLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHgpe2lmKCF0aGlzLl9jYWxsZWQmJnRoaXMuX2FsZW4p'@; put 'e3ZhciBVPTE2LXRoaXMuX2FsZW4lMTY7VTwxNiYmKFU9Yy5hbGxvYyhVLDApLHRoaXMuX2doYXNoLnVwZGF0ZShVKSl9dGhpcy5fY2FsbGVkPSEwO3ZhciBIPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHgpO3JldHVybiB0aGlzLl9naGFzaC51cGRhdGUodGhpcy5fZGVjcnlwdD94OkgpLHRo'@; put 'aXMuX2xlbis9eC5sZW5ndGgsSH0sUi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdCYmIXRoaXMuX2F1dGhUYWcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEiKTt2YXIgeD1DKHRoaXMu'@; put 'X2doYXNoLmZpbmFsKDgqdGhpcy5fYWxlbiw4KnRoaXMuX2xlbiksdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpO2lmKHRoaXMuX2RlY3J5cHQmJmZ1bmN0aW9uIFMoeCxVKXt2YXIgSD0wO3gubGVuZ3RoIT09VS5sZW5ndGgmJkgrKztmb3IodmFyIFY9TWF0aC5taW4o'@; put 'eC5sZW5ndGgsVS5sZW5ndGgpLE49MDtOPFY7KytOKUgrPXhbTl1eVVtOXTtyZXR1cm4gSH0oeCx0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3RoaXMuX2F1dGhUYWc9eCx0aGlzLl9jaXBo'@; put 'ZXIuc2NydWIoKX0sUi5wcm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHR8fCFjLmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTtyZXR1cm4g'@; put 'dGhpcy5fYXV0aFRhZ30sUi5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbihVKXtpZighdGhpcy5fZGVjcnlwdCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fYXV0aFRhZz1VfSxSLnByb3RvdHlwZS5z'@; put 'ZXRBQUQ9ZnVuY3Rpb24oVSl7aWYodGhpcy5fY2FsbGVkKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fZ2hhc2gudXBkYXRlKFUpLHRoaXMuX2FsZW4rPVUubGVuZ3RofSxmZS5leHBvcnRzPVJ9LDQzMzg4KGZlLGos'@; put 'aCl7dmFyIHk9aCgzNTApLGM9aCg2MDEwMikscz1oKDMyMTkpO2ouY3JlYXRlQ2lwaGVyPWouQ2lwaGVyPXkuY3JlYXRlQ2lwaGVyLGouY3JlYXRlQ2lwaGVyaXY9ai5DaXBoZXJpdj15LmNyZWF0ZUNpcGhlcml2LGouY3JlYXRlRGVjaXBoZXI9ai5EZWNpcGhlcj1jLmNyZWF0ZURlY2lwaGVy'@; put 'LGouY3JlYXRlRGVjaXBoZXJpdj1qLkRlY2lwaGVyaXY9Yy5jcmVhdGVEZWNpcGhlcml2LGoubGlzdENpcGhlcnM9ai5nZXRDaXBoZXJzPWZ1bmN0aW9uIEEoKXtyZXR1cm4gT2JqZWN0LmtleXMocyl9fSw2MDEwMihmZSxqLGgpe3ZhciB5PWgoMTkzMDcpLGM9aCgyNzA1NCkuQnVmZmVyLHM9'@; put 'aCg2MDUwMyksQT1oKDkxODIxKSx2PWgoMzI0NyksQz1oKDEyMzc1KSx3PWgoMTgyMTEpO2Z1bmN0aW9uIEwoVixOLHope3YuY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgUix0aGlzLl9sYXN0PXZvaWQgMCx0aGlzLl9jaXBoZXI9bmV3IEMuQUVTKE4pLHRoaXMuX3ByZXY9Yy5mcm9tKHop'@; put 'LHRoaXMuX21vZGU9Vix0aGlzLl9hdXRvcGFkZGluZz0hMH1mdW5jdGlvbiBSKCl7dGhpcy5jYWNoZT1jLmFsbG9jVW5zYWZlKDApfWZ1bmN0aW9uIFUoVixOLHope3ZhciBZPXNbVi50b0xvd2VyQ2FzZSgpXTtpZighWSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUi'@; put 'KTtpZigic3RyaW5nIj09dHlwZW9mIHomJih6PWMuZnJvbSh6KSksIkdDTSIhPT1ZLm1vZGUmJnoubGVuZ3RoIT09WS5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK3oubGVuZ3RoKTtpZigic3RyaW5nIj09dHlwZW9mIE4mJihOPWMuZnJvbShOKSksTi5sZW5n'@; put 'dGghPT1ZLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxlbmd0aCAiK04ubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PVkudHlwZT9uZXcgQShZLm1vZHVsZSxOLHosITApOiJhdXRoIj09PVkudHlwZT9uZXcgeShZLm1vZHVsZSxOLHosITApOm5ldyBMKFkubW9kdWxl'@; put 'LE4seil9aCg3MTk5MykoTCx2KSxMLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFYpe3RoaXMuX2NhY2hlLmFkZChWKTtmb3IodmFyIE4seixZPVtdO049dGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKTspej10aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxOKSxZLnB1c2goeik7'@; put 'cmV0dXJuIGMuY29uY2F0KFkpfSxMLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgVj10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBmdW5jdGlvbiB4KFYpe3ZhciBOPVZbMTVdO2lmKE48MXx8Tj4xNil0aHJvdyBuZXcgRXJyb3IoInVuYWJs'@; put 'ZSB0byBkZWNyeXB0IGRhdGEiKTtmb3IodmFyIHo9LTE7Kyt6PE47KWlmKFZbeisoMTYtTildIT09Til0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBkZWNyeXB0IGRhdGEiKTtpZigxNiE9PU4pcmV0dXJuIFYuc2xpY2UoMCwxNi1OKX0odGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsVikpO2lm'@; put 'KFYpdGhyb3cgbmV3IEVycm9yKCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sTC5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oVil7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhVix0aGlzfSxSLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oVil7dGhpcy5j'@; put 'YWNoZT1jLmNvbmNhdChbdGhpcy5jYWNoZSxWXSl9LFIucHJvdG90eXBlLmdldD1mdW5jdGlvbihWKXt2YXIgTjtpZihWKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNilyZXR1cm4gTj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksTn1lbHNl'@; put 'IGlmKHRoaXMuY2FjaGUubGVuZ3RoPj0xNilyZXR1cm4gTj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksTjtyZXR1cm4gbnVsbH0sUi5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aClyZXR1cm4gdGhp'@; put 'cy5jYWNoZX0sai5jcmVhdGVEZWNpcGhlcj1mdW5jdGlvbiBIKFYsTil7dmFyIHo9c1tWLnRvTG93ZXJDYXNlKCldO2lmKCF6KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBZPXcoTiwhMSx6LmtleSx6Lml2KTtyZXR1cm4gVShWLFkua2V5LFkuaXYpfSxq'@; put 'LmNyZWF0ZURlY2lwaGVyaXY9VX0sMzUwKGZlLGosaCl7dmFyIHk9aCg2MDUwMyksYz1oKDE5MzA3KSxzPWgoMjcwNTQpLkJ1ZmZlcixBPWgoOTE4MjEpLHY9aCgzMjQ3KSxDPWgoMTIzNzUpLHc9aCgxODIxMSk7ZnVuY3Rpb24gTChWLE4seil7di5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5l'@; put 'dyB4LHRoaXMuX2NpcGhlcj1uZXcgQy5BRVMoTiksdGhpcy5fcHJldj1zLmZyb20oeiksdGhpcy5fbW9kZT1WLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWgoNzE5OTMpKEwsdiksTC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihWKXt0aGlzLl9jYWNoZS5hZGQoVik7Zm9yKHZhciBOLHosWT1b'@; put 'XTtOPXRoaXMuX2NhY2hlLmdldCgpOyl6PXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLE4pLFkucHVzaCh6KTtyZXR1cm4gcy5jb25jYXQoWSl9O3ZhciBSPXMuYWxsb2MoMTYsMTYpO2Z1bmN0aW9uIHgoKXt0aGlzLmNhY2hlPXMuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gVShWLE4seil7dmFy'@; put 'IFk9eVtWLnRvTG93ZXJDYXNlKCldO2lmKCFZKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgTiYmKE49cy5mcm9tKE4pKSxOLmxlbmd0aCE9PVkua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3Ro'@; put 'ICIrTi5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgeiYmKHo9cy5mcm9tKHopKSwiR0NNIiE9PVkubW9kZSYmei5sZW5ndGghPT1ZLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrei5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09WS50eXBlP25ldyBBKFku'@; put 'bW9kdWxlLE4seik6ImF1dGgiPT09WS50eXBlP25ldyBjKFkubW9kdWxlLE4seik6bmV3IEwoWS5tb2R1bGUsTix6KX1MLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgVj10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBWPXRoaXMuX21vZGUu'@; put 'ZW5jcnlwdCh0aGlzLFYpLHRoaXMuX2NpcGhlci5zY3J1YigpLFY7aWYoIVYuZXF1YWxzKFIpKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LEwucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9u'@; put 'KFYpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIVYsdGhpc30seC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFYpe3RoaXMuY2FjaGU9cy5jb25jYXQoW3RoaXMuY2FjaGUsVl0pfSx4LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIFY9dGhp'@; put 'cy5jYWNoZS5zbGljZSgwLDE2KTtyZXR1cm4gdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxWfXJldHVybiBudWxsfSx4LnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgVj0xNi10aGlzLmNhY2hlLmxlbmd0aCxOPXMuYWxsb2NVbnNhZmUoViksej0tMTsrK3o8Vjsp'@; put 'Ti53cml0ZVVJbnQ4KFYseik7cmV0dXJuIHMuY29uY2F0KFt0aGlzLmNhY2hlLE5dKX0sai5jcmVhdGVDaXBoZXJpdj1VLGouY3JlYXRlQ2lwaGVyPWZ1bmN0aW9uIEgoVixOKXt2YXIgej15W1YudG9Mb3dlckNhc2UoKV07aWYoIXopdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0'@; put 'ZSB0eXBlIik7dmFyIFk9dyhOLCExLHoua2V5LHouaXYpO3JldHVybiBVKFYsWS5rZXksWS5pdil9fSw4NTkxNyhmZSxqLGgpe3ZhciB5PWgoMjcwNTQpLkJ1ZmZlcixjPXkuYWxsb2MoMTYsMCk7ZnVuY3Rpb24gQShDKXt2YXIgdz15LmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gdy53cml0ZVVJ'@; put 'bnQzMkJFKENbMF0+Pj4wLDApLHcud3JpdGVVSW50MzJCRShDWzFdPj4+MCw0KSx3LndyaXRlVUludDMyQkUoQ1syXT4+PjAsOCksdy53cml0ZVVJbnQzMkJFKENbM10+Pj4wLDEyKSx3fWZ1bmN0aW9uIHYoQyl7dGhpcy5oPUMsdGhpcy5zdGF0ZT15LmFsbG9jKDE2LDApLHRoaXMuY2FjaGU9'@; put 'eS5hbGxvY1Vuc2FmZSgwKX12LnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihDKXtmb3IodmFyIHc9LTE7Kyt3PEMubGVuZ3RoOyl0aGlzLnN0YXRlW3ddXj1DW3ddO3RoaXMuX211bHRpcGx5KCl9LHYucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgUyxSLEM9ZnVuY3Rp'@; put 'b24gcyhDKXtyZXR1cm5bQy5yZWFkVUludDMyQkUoMCksQy5yZWFkVUludDMyQkUoNCksQy5yZWFkVUludDMyQkUoOCksQy5yZWFkVUludDMyQkUoMTIpXX0odGhpcy5oKSx3PVswLDAsMCwwXSx4PS0xOysreDwxMjg7KXtmb3IoISEodGhpcy5zdGF0ZVt+fih4LzgpXSYxPDw3LXglOCkmJih3'@; put 'WzBdXj1DWzBdLHdbMV1ePUNbMV0sd1syXV49Q1syXSx3WzNdXj1DWzNdKSxSPSEhKDEmQ1szXSksUz0zO1M+MDtTLS0pQ1tTXT1DW1NdPj4+MXwoMSZDW1MtMV0pPDwzMTtDWzBdPUNbMF0+Pj4xLFImJihDWzBdPUNbMF1eMjI1PDwyNCl9dGhpcy5zdGF0ZT1BKHcpfSx2LnByb3RvdHlwZS51'@; put 'cGRhdGU9ZnVuY3Rpb24oQyl7dGhpcy5jYWNoZT15LmNvbmNhdChbdGhpcy5jYWNoZSxDXSk7Zm9yKHZhciB3O3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspdz10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksdGhpcy5naGFzaCh3KX0sdi5wcm90'@; put 'b3R5cGUuZmluYWw9ZnVuY3Rpb24oQyx3KXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2goeS5jb25jYXQoW3RoaXMuY2FjaGUsY10sMTYpKSx0aGlzLmdoYXNoKEEoWzAsQywwLHddKSksdGhpcy5zdGF0ZX0sZmUuZXhwb3J0cz12fSw5NTcyNShmZSl7ZmUuZXhwb3J0cz1m'@; put 'dW5jdGlvbiBqKGgpe2Zvcih2YXIgYyx5PWgubGVuZ3RoO3ktLTspe2lmKDI1NSE9PShjPWgucmVhZFVJbnQ4KHkpKSl7YysrLGgud3JpdGVVSW50OChjLHkpO2JyZWFrfWgud3JpdGVVSW50OCgwLHkpfX19LDM0MTMzKGZlLGosaCl7dmFyIHk9aCgxMzU0Nik7ai5lbmNyeXB0PWZ1bmN0aW9u'@; put 'KGMscyl7dmFyIEE9eShzLGMuX3ByZXYpO3JldHVybiBjLl9wcmV2PWMuX2NpcGhlci5lbmNyeXB0QmxvY2soQSksYy5fcHJldn0sai5kZWNyeXB0PWZ1bmN0aW9uKGMscyl7dmFyIEE9Yy5fcHJldjtjLl9wcmV2PXM7dmFyIHY9Yy5fY2lwaGVyLmRlY3J5cHRCbG9jayhzKTtyZXR1cm4geSh2'@; put 'LEEpfX0sMTcwOTAoZmUsaixoKXt2YXIgeT1oKDI3MDU0KS5CdWZmZXIsYz1oKDEzNTQ2KTtmdW5jdGlvbiBzKEEsdixDKXt2YXIgdz12Lmxlbmd0aCxTPWModixBLl9jYWNoZSk7cmV0dXJuIEEuX2NhY2hlPUEuX2NhY2hlLnNsaWNlKHcpLEEuX3ByZXY9eS5jb25jYXQoW0EuX3ByZXYsQz92'@; put 'OlNdKSxTfWouZW5jcnlwdD1mdW5jdGlvbihBLHYsQyl7Zm9yKHZhciBTLHc9eS5hbGxvY1Vuc2FmZSgwKTt2Lmxlbmd0aDspe2lmKDA9PT1BLl9jYWNoZS5sZW5ndGgmJihBLl9jYWNoZT1BLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEEuX3ByZXYpLEEuX3ByZXY9eS5hbGxvY1Vuc2FmZSgwKSks'@; put 'IShBLl9jYWNoZS5sZW5ndGg8PXYubGVuZ3RoKSl7dz15LmNvbmNhdChbdyxzKEEsdixDKV0pO2JyZWFrfXc9eS5jb25jYXQoW3cscyhBLHYuc2xpY2UoMCxTPUEuX2NhY2hlLmxlbmd0aCksQyldKSx2PXYuc2xpY2UoUyl9cmV0dXJuIHd9fSw3MTAzOShmZSxqLGgpe3ZhciB5PWgoMjcwNTQp'@; put 'LkJ1ZmZlcjtmdW5jdGlvbiBjKEEsdixDKXtmb3IodmFyIHgsVSxTPS0xLFI9MDsrK1M8ODspUis9KDEyOCYoVT1BLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEEuX3ByZXYpWzBdXih4PXYmMTw8Ny1TPzEyODowKSkpPj5TJTgsQS5fcHJldj1zKEEuX3ByZXYsQz94OlUpO3JldHVybiBSfWZ1bmN0'@; put 'aW9uIHMoQSx2KXt2YXIgQz1BLmxlbmd0aCx3PS0xLFM9eS5hbGxvY1Vuc2FmZShBLmxlbmd0aCk7Zm9yKEE9eS5jb25jYXQoW0EseS5mcm9tKFt2XSldKTsrK3c8QzspU1t3XT1BW3ddPDwxfEFbdysxXT4+NztyZXR1cm4gU31qLmVuY3J5cHQ9ZnVuY3Rpb24oQSx2LEMpe2Zvcih2YXIgdz12'@; put 'Lmxlbmd0aCxTPXkuYWxsb2NVbnNhZmUodyksTD0tMTsrK0w8dzspU1tMXT1jKEEsdltMXSxDKTtyZXR1cm4gU319LDcyNTc2KGZlLGosaCl7dmFyIHk9aCgyNzA1NCkuQnVmZmVyO2Z1bmN0aW9uIGMocyxBLHYpe3ZhciB3PXMuX2NpcGhlci5lbmNyeXB0QmxvY2socy5fcHJldilbMF1eQTty'@; put 'ZXR1cm4gcy5fcHJldj15LmNvbmNhdChbcy5fcHJldi5zbGljZSgxKSx5LmZyb20oW3Y/QTp3XSldKSx3fWouZW5jcnlwdD1mdW5jdGlvbihzLEEsdil7Zm9yKHZhciBDPUEubGVuZ3RoLHc9eS5hbGxvY1Vuc2FmZShDKSxTPS0xOysrUzxDOyl3W1NdPWMocyxBW1NdLHYpO3JldHVybiB3fX0s'@; put 'NzAzMzYoZmUsaixoKXt2YXIgeT1oKDEzNTQ2KSxjPWgoMjcwNTQpLkJ1ZmZlcixzPWgoOTU3MjUpO2Z1bmN0aW9uIEEoQyl7dmFyIHc9Qy5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhDLl9wcmV2KTtyZXR1cm4gcyhDLl9wcmV2KSx3fWouZW5jcnlwdD1mdW5jdGlvbihDLHcpe3ZhciBTPU1h'@; put 'dGguY2VpbCh3Lmxlbmd0aC8xNiksTD1DLl9jYWNoZS5sZW5ndGg7Qy5fY2FjaGU9Yy5jb25jYXQoW0MuX2NhY2hlLGMuYWxsb2NVbnNhZmUoMTYqUyldKTtmb3IodmFyIFI9MDtSPFM7UisrKXt2YXIgeD1BKEMpLFU9TCsxNipSO0MuX2NhY2hlLndyaXRlVUludDMyQkUoeFswXSxVKzApLEMu'@; put 'X2NhY2hlLndyaXRlVUludDMyQkUoeFsxXSxVKzQpLEMuX2NhY2hlLndyaXRlVUludDMyQkUoeFsyXSxVKzgpLEMuX2NhY2hlLndyaXRlVUludDMyQkUoeFszXSxVKzEyKX12YXIgSD1DLl9jYWNoZS5zbGljZSgwLHcubGVuZ3RoKTtyZXR1cm4gQy5fY2FjaGU9Qy5fY2FjaGUuc2xpY2Uody5s'@; put 'ZW5ndGgpLHkodyxIKX19LDM3NTEzKGZlLGope2ouZW5jcnlwdD1mdW5jdGlvbihoLHkpe3JldHVybiBoLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHkpfSxqLmRlY3J5cHQ9ZnVuY3Rpb24oaCx5KXtyZXR1cm4gaC5fY2lwaGVyLmRlY3J5cHRCbG9jayh5KX19LDYwNTAzKGZlLGosaCl7dmFyIHk9'@; put 'e0VDQjpoKDM3NTEzKSxDQkM6aCgzNDEzMyksQ0ZCOmgoMTcwOTApLENGQjg6aCg3MjU3NiksQ0ZCMTpoKDcxMDM5KSxPRkI6aCg0Njg1NCksQ1RSOmgoNzAzMzYpLEdDTTpoKDcwMzM2KX0sYz1oKDMyMTkpO2Zvcih2YXIgcyBpbiBjKWNbc10ubW9kdWxlPXlbY1tzXS5tb2RlXTtmZS5leHBv'@; put 'cnRzPWN9LDQ2ODU0KGZlLGosaCl7dmFyIHk9aCgxMzU0Nik7ZnVuY3Rpb24gYyhzKXtyZXR1cm4gcy5fcHJldj1zLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHMuX3ByZXYpLHMuX3ByZXZ9ai5lbmNyeXB0PWZ1bmN0aW9uKHMsQSl7Zm9yKDtzLl9jYWNoZS5sZW5ndGg8QS5sZW5ndGg7KXMuX2Nh'@; put 'Y2hlPUJ1ZmZlci5jb25jYXQoW3MuX2NhY2hlLGMocyldKTt2YXIgdj1zLl9jYWNoZS5zbGljZSgwLEEubGVuZ3RoKTtyZXR1cm4gcy5fY2FjaGU9cy5fY2FjaGUuc2xpY2UoQS5sZW5ndGgpLHkoQSx2KX19LDkxODIxKGZlLGosaCl7dmFyIHk9aCgxMjM3NSksYz1oKDI3MDU0KS5CdWZmZXIs'@; put 'cz1oKDMyNDcpO2Z1bmN0aW9uIHYoQyx3LFMsTCl7cy5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgeS5BRVModyksdGhpcy5fcHJldj1jLmZyb20oUyksdGhpcy5fY2FjaGU9Yy5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9zZWNDYWNoZT1jLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9'@; put 'TCx0aGlzLl9tb2RlPUN9aCg3MTk5MykodixzKSx2LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEMpe3JldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxDLHRoaXMuX2RlY3J5cHQpfSx2LnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt0aGlzLl9jaXBoZXIuc2NydWIoKX0sZmUu'@; put 'ZXhwb3J0cz12fSw4ODg2MihmZSxqLGgpe3ZhciBjPWgoMzk3OTkpLHM9aCg0MzM4OCksQT1oKDYwNTAzKSx2PWgoNTk1NzEpO2goMTgyMTEpO2ouVHQ9ZnVuY3Rpb24gTChVLEgsVil7aWYoVT1VLnRvTG93ZXJDYXNlKCksQVtVXSlyZXR1cm4gcy5jcmVhdGVDaXBoZXJpdihVLEgsVik7aWYo'@; put 'dltVXSlyZXR1cm4gbmV3IGMoe2tleTpILGl2OlYsbW9kZTpVfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9LGouXzc9ZnVuY3Rpb24gUihVLEgsVil7aWYoVT1VLnRvTG93ZXJDYXNlKCksQVtVXSlyZXR1cm4gcy5jcmVhdGVEZWNpcGhlcml2KFUsSCxWKTtp'@; put 'Zih2W1VdKXJldHVybiBuZXcgYyh7a2V5OkgsaXY6Vixtb2RlOlUsZGVjcnlwdDohMH0pO3Rocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpfX0sMzk3OTkoZmUsaixoKXt2YXIgeT1oKDMyNDcpLGM9aCg3MTU0OSkscz1oKDcxOTkzKSxBPWgoMjcwNTQpLkJ1ZmZlcix2'@; put 'PXsiZGVzLWVkZTMtY2JjIjpjLkNCQy5pbnN0YW50aWF0ZShjLkVERSksImRlcy1lZGUzIjpjLkVERSwiZGVzLWVkZS1jYmMiOmMuQ0JDLmluc3RhbnRpYXRlKGMuRURFKSwiZGVzLWVkZSI6Yy5FREUsImRlcy1jYmMiOmMuQ0JDLmluc3RhbnRpYXRlKGMuREVTKSwiZGVzLWVjYiI6Yy5ERVN9'@; put 'O2Z1bmN0aW9uIEModyl7eS5jYWxsKHRoaXMpO3ZhciBSLFM9dy5tb2RlLnRvTG93ZXJDYXNlKCksTD12W1NdO1I9dy5kZWNyeXB0PyJkZWNyeXB0IjoiZW5jcnlwdCI7dmFyIHg9dy5rZXk7QS5pc0J1ZmZlcih4KXx8KHg9QS5mcm9tKHgpKSwoImRlcy1lZGUiPT09U3x8ImRlcy1lZGUtY2Jj'@; put 'Ij09PVMpJiYoeD1BLmNvbmNhdChbeCx4LnNsaWNlKDAsOCldKSk7dmFyIFU9dy5pdjtBLmlzQnVmZmVyKFUpfHwoVT1BLmZyb20oVSkpLHRoaXMuX2Rlcz1MLmNyZWF0ZSh7a2V5OngsaXY6VSx0eXBlOlJ9KX12LmRlcz12WyJkZXMtY2JjIl0sdi5kZXMzPXZbImRlcy1lZGUzLWNiYyJdLGZl'@; put 'LmV4cG9ydHM9QyxzKEMseSksQy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih3KXtyZXR1cm4gQS5mcm9tKHRoaXMuX2Rlcy51cGRhdGUodykpfSxDLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gQS5mcm9tKHRoaXMuX2Rlcy5maW5hbCgpKX19LDU5NTcxKGZlLGope2pb'@; put 'ImRlcy1lY2IiXT17a2V5OjgsaXY6MH0salsiZGVzLWNiYyJdPWouZGVzPXtrZXk6OCxpdjo4fSxqWyJkZXMtZWRlMy1jYmMiXT1qLmRlczM9e2tleToyNCxpdjo4fSxqWyJkZXMtZWRlMyJdPXtrZXk6MjQsaXY6MH0salsiZGVzLWVkZS1jYmMiXT17a2V5OjE2LGl2Ojh9LGpbImRlcy1lZGUi'@; put 'XT17a2V5OjE2LGl2OjB9fSwxMzU0NihmZSl7ZmUuZXhwb3J0cz1mdW5jdGlvbihoLHkpe2Zvcih2YXIgYz1NYXRoLm1pbihoLmxlbmd0aCx5Lmxlbmd0aCkscz1uZXcgQnVmZmVyKGMpLEE9MDtBPGM7KytBKXNbQV09aFtBXV55W0FdO3JldHVybiBzfX0sODM4MzgoZmUsaixoKXsidXNlIHN0'@; put 'cmljdCI7dmFyIHk9aCgxMzk4MSksYz1oKDIyMDIwKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6bnVsbDtqLkJ1ZmZlcj13LGouU2xvd0J1ZmZlcj1mdW5j'@; put 'dGlvbiBGKGdlKXtyZXR1cm4rZ2UhPWdlJiYoZ2U9MCksdy5hbGxvYygrZ2UpfSxqLklOU1BFQ1RfTUFYX0JZVEVTPTUwO3ZhciBBPTIxNDc0ODM2NDc7ZnVuY3Rpb24gQyhnZSl7aWYoZ2U+QSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK2dlKyciIGlzIGludmFsaWQgZm9y'@; put 'IG9wdGlvbiAic2l6ZSInKTt2YXIgY2U9bmV3IFVpbnQ4QXJyYXkoZ2UpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoY2Usdy5wcm90b3R5cGUpLGNlfWZ1bmN0aW9uIHcoZ2UsY2UsaGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZ2Upe2lmKCJzdHJpbmciPT10eXBlb2YgY2UpdGhyb3cg'@; put 'bmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIHgoZ2UpfXJldHVybiBTKGdlLGNlLGhlKX1mdW5jdGlvbiBTKGdlLGNlLGhlKXtpZigic3RyaW5nIj09dHlwZW9mIGdlKXJldHVy'@; put 'biBmdW5jdGlvbiBVKGdlLGNlKXtpZigoInN0cmluZyIhPXR5cGVvZiBjZXx8IiI9PT1jZSkmJihjZT0idXRmOCIpLCF3LmlzRW5jb2RpbmcoY2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrY2UpO3ZhciBoZT0wfFcoZ2UsY2UpLHdlPUMoaGUpLEplPXdlLndy'@; put 'aXRlKGdlLGNlKTtyZXR1cm4gSmUhPT1oZSYmKHdlPXdlLnNsaWNlKDAsSmUpKSx3ZX0oZ2UsY2UpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhnZSkpcmV0dXJuIGZ1bmN0aW9uIFYoZ2Upe2lmKEFlKGdlLFVpbnQ4QXJyYXkpKXt2YXIgY2U9bmV3IFVpbnQ4QXJyYXkoZ2UpO3JldHVybiBOKGNl'@; put 'LmJ1ZmZlcixjZS5ieXRlT2Zmc2V0LGNlLmJ5dGVMZW5ndGgpfXJldHVybiBIKGdlKX0oZ2UpO2lmKG51bGw9PWdlKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9y'@; put 'IEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIGdlKTtpZihBZShnZSxBcnJheUJ1ZmZlcil8fGdlJiZBZShnZS5idWZmZXIsQXJyYXlCdWZmZXIpfHx0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiJiYoQWUoZ2UsU2hhcmVkQXJyYXlCdWZmZXIpfHxnZSYmQWUo'@; put 'Z2UuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIE4oZ2UsY2UsaGUpO2lmKCJudW1iZXIiPT10eXBlb2YgZ2UpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7'@; put 'dmFyIHdlPWdlLnZhbHVlT2YmJmdlLnZhbHVlT2YoKTtpZihudWxsIT13ZSYmd2UhPT1nZSlyZXR1cm4gdy5mcm9tKHdlLGNlLGhlKTt2YXIgSmU9ZnVuY3Rpb24geihnZSl7aWYody5pc0J1ZmZlcihnZSkpe3ZhciBjZT0wfFkoZ2UubGVuZ3RoKSxoZT1DKGNlKTtyZXR1cm4gMD09PWhlLmxl'@; put 'bmd0aHx8Z2UuY29weShoZSwwLDAsY2UpLGhlfXJldHVybiB2b2lkIDAhPT1nZS5sZW5ndGg/Im51bWJlciIhPXR5cGVvZiBnZS5sZW5ndGh8fERlKGdlLmxlbmd0aCk/QygwKTpIKGdlKToiQnVmZmVyIj09PWdlLnR5cGUmJkFycmF5LmlzQXJyYXkoZ2UuZGF0YSk/SChnZS5kYXRhKTp2b2lk'@; put 'IDB9KGdlKTtpZihKZSlyZXR1cm4gSmU7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPVN5bWJvbC50b1ByaW1pdGl2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGdlW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIHcuZnJvbShnZVtTeW1ib2wudG9QcmltaXRpdmVdKCJzdHJpbmciKSxjZSxo'@; put 'ZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgZ2UpfWZ1bmN0aW9uIEwoZ2Upe2lm'@; put 'KCJudW1iZXIiIT10eXBlb2YgZ2UpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihnZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicrZ2UrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpfWZ1'@; put 'bmN0aW9uIHgoZ2Upe3JldHVybiBMKGdlKSxDKGdlPDA/MDowfFkoZ2UpKX1mdW5jdGlvbiBIKGdlKXtmb3IodmFyIGNlPWdlLmxlbmd0aDwwPzA6MHxZKGdlLmxlbmd0aCksaGU9QyhjZSksd2U9MDt3ZTxjZTt3ZSs9MSloZVt3ZV09MjU1JmdlW3dlXTtyZXR1cm4gaGV9ZnVuY3Rpb24gTihn'@; put 'ZSxjZSxoZSl7aWYoY2U8MHx8Z2UuYnl0ZUxlbmd0aDxjZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7aWYoZ2UuYnl0ZUxlbmd0aDxjZSsoaGV8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRl'@; put 'IG9mIGJ1ZmZlciBib3VuZHMnKTt2YXIgd2U7cmV0dXJuIHdlPXZvaWQgMD09PWNlJiZ2b2lkIDA9PT1oZT9uZXcgVWludDhBcnJheShnZSk6dm9pZCAwPT09aGU/bmV3IFVpbnQ4QXJyYXkoZ2UsY2UpOm5ldyBVaW50OEFycmF5KGdlLGNlLGhlKSxPYmplY3Quc2V0UHJvdG90eXBlT2Yod2Us'@; put 'dy5wcm90b3R5cGUpLHdlfWZ1bmN0aW9uIFkoZ2Upe2lmKGdlPj1BKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitBLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8Z2V9ZnVuY3Rpb24g'@; put 'VyhnZSxjZSl7aWYody5pc0J1ZmZlcihnZSkpcmV0dXJuIGdlLmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZ2UpfHxBZShnZSxBcnJheUJ1ZmZlcikpcmV0dXJuIGdlLmJ5dGVMZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBnZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmlu'@; put 'ZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZ2UpO3ZhciBoZT1nZS5sZW5ndGgsd2U9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighd2UmJjA9PT1oZSly'@; put 'ZXR1cm4gMDtmb3IodmFyIEplPSExOzspc3dpdGNoKGNlKXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBoZTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBkdChnZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpj'@; put 'YXNlInV0Zi0xNmxlIjpyZXR1cm4gMipoZTtjYXNlImhleCI6cmV0dXJuIGhlPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIHhlKGdlKS5sZW5ndGg7ZGVmYXVsdDppZihKZSlyZXR1cm4gd2U/LTE6ZHQoZ2UpLmxlbmd0aDtjZT0oIiIrY2UpLnRvTG93ZXJDYXNlKCksSmU9ITB9fWZ1bmN0aW9u'@; put 'IHEoZ2UsY2UsaGUpe3ZhciB3ZT0hMTtpZigodm9pZCAwPT09Y2V8fGNlPDApJiYoY2U9MCksY2U+dGhpcy5sZW5ndGh8fCgodm9pZCAwPT09aGV8fGhlPnRoaXMubGVuZ3RoKSYmKGhlPXRoaXMubGVuZ3RoKSxoZTw9MCl8fChoZT4+Pj0wKTw9KGNlPj4+PTApKXJldHVybiIiO2ZvcihnZXx8'@; put 'KGdlPSJ1dGY4Iik7Oylzd2l0Y2goZ2Upe2Nhc2UiaGV4IjpyZXR1cm4gRCh0aGlzLGNlLGhlKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBrKHRoaXMsY2UsaGUpO2Nhc2UiYXNjaWkiOnJldHVybiBLKHRoaXMsY2UsaGUpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJu'@; put 'IEcodGhpcyxjZSxoZSk7Y2FzZSJiYXNlNjQiOnJldHVybiBiKHRoaXMsY2UsaGUpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gcCh0aGlzLGNlLGhlKTtkZWZhdWx0OmlmKHdlKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24g'@; put 'ZW5jb2Rpbmc6ICIrZ2UpO2dlPShnZSsiIikudG9Mb3dlckNhc2UoKSx3ZT0hMH19ZnVuY3Rpb24gcmUoZ2UsY2UsaGUpe3ZhciB3ZT1nZVtjZV07Z2VbY2VdPWdlW2hlXSxnZVtoZV09d2V9ZnVuY3Rpb24gbWUoZ2UsY2UsaGUsd2UsSmUpe2lmKDA9PT1nZS5sZW5ndGgpcmV0dXJuLTE7aWYo'@; put 'InN0cmluZyI9PXR5cGVvZiBoZT8od2U9aGUsaGU9MCk6aGU+MjE0NzQ4MzY0Nz9oZT0yMTQ3NDgzNjQ3OmhlPC0yMTQ3NDgzNjQ4JiYoaGU9LTIxNDc0ODM2NDgpLERlKGhlPStoZSkmJihoZT1KZT8wOmdlLmxlbmd0aC0xKSxoZTwwJiYoaGU9Z2UubGVuZ3RoK2hlKSxoZT49Z2UubGVuZ3Ro'@; put 'KXtpZihKZSlyZXR1cm4tMTtoZT1nZS5sZW5ndGgtMX1lbHNlIGlmKGhlPDApe2lmKCFKZSlyZXR1cm4tMTtoZT0wfWlmKCJzdHJpbmciPT10eXBlb2YgY2UmJihjZT13LmZyb20oY2Usd2UpKSx3LmlzQnVmZmVyKGNlKSlyZXR1cm4gMD09PWNlLmxlbmd0aD8tMTpDZShnZSxjZSxoZSx3ZSxK'@; put 'ZSk7aWYoIm51bWJlciI9PXR5cGVvZiBjZSlyZXR1cm4gY2UmPTI1NSwiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9KZT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZ2UsY2UsaGUpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRl'@; put 'eE9mLmNhbGwoZ2UsY2UsaGUpOkNlKGdlLFtjZV0saGUsd2UsSmUpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIENlKGdlLGNlLGhlLHdlLEplKXt2YXIgTHQsdHQ9MSxLZT1nZS5sZW5ndGgsJHQ9Y2UubGVuZ3Ro'@; put 'O2lmKHZvaWQgMCE9PXdlJiYoInVjczIiPT09KHdlPVN0cmluZyh3ZSkudG9Mb3dlckNhc2UoKSl8fCJ1Y3MtMiI9PT13ZXx8InV0ZjE2bGUiPT09d2V8fCJ1dGYtMTZsZSI9PT13ZSkpe2lmKGdlLmxlbmd0aDwyfHxjZS5sZW5ndGg8MilyZXR1cm4tMTt0dD0yLEtlLz0yLCR0Lz0yLGhlLz0y'@; put 'fWZ1bmN0aW9uIFJ0KExyLGxuKXtyZXR1cm4gMT09PXR0P0xyW2xuXTpMci5yZWFkVUludDE2QkUobG4qdHQpfWlmKEplKXt2YXIgR3Q9LTE7Zm9yKEx0PWhlO0x0PEtlO0x0KyspaWYoUnQoZ2UsTHQpPT09UnQoY2UsLTE9PT1HdD8wOkx0LUd0KSl7aWYoLTE9PT1HdCYmKEd0PUx0KSxMdC1H'@; put 'dCsxPT09JHQpcmV0dXJuIEd0KnR0fWVsc2UtMSE9PUd0JiYoTHQtPUx0LUd0KSxHdD0tMX1lbHNlIGZvcihoZSskdD5LZSYmKGhlPUtlLSR0KSxMdD1oZTtMdD49MDtMdC0tKXtmb3IodmFyIGd0PSEwLFh0PTA7WHQ8JHQ7WHQrKylpZihSdChnZSxMdCtYdCkhPT1SdChjZSxYdCkpe2d0PSEx'@; put 'O2JyZWFrfWlmKGd0KXJldHVybiBMdH1yZXR1cm4tMX1mdW5jdGlvbiBJZShnZSxjZSxoZSx3ZSl7aGU9TnVtYmVyKGhlKXx8MDt2YXIgSmU9Z2UubGVuZ3RoLWhlO3dlPyh3ZT1OdW1iZXIod2UpKT5KZSYmKHdlPUplKTp3ZT1KZTt2YXIgdHQ9Y2UubGVuZ3RoO3dlPnR0LzImJih3ZT10dC8y'@; put 'KTtmb3IodmFyIEtlPTA7S2U8d2U7KytLZSl7dmFyICR0PXBhcnNlSW50KGNlLnN1YnN0cigyKktlLDIpLDE2KTtpZihEZSgkdCkpcmV0dXJuIEtlO2dlW2hlK0tlXT0kdH1yZXR1cm4gS2V9ZnVuY3Rpb24ga2UoZ2UsY2UsaGUsd2Upe3JldHVybiBqZShkdChjZSxnZS5sZW5ndGgtaGUpLGdl'@; put 'LGhlLHdlKX1mdW5jdGlvbiBxZShnZSxjZSxoZSx3ZSl7cmV0dXJuIGplKGZ1bmN0aW9uIFJlKGdlKXtmb3IodmFyIGNlPVtdLGhlPTA7aGU8Z2UubGVuZ3RoOysraGUpY2UucHVzaCgyNTUmZ2UuY2hhckNvZGVBdChoZSkpO3JldHVybiBjZX0oY2UpLGdlLGhlLHdlKX1mdW5jdGlvbiBYKGdl'@; put 'LGNlLGhlLHdlKXtyZXR1cm4gamUoeGUoY2UpLGdlLGhlLHdlKX1mdW5jdGlvbiBmKGdlLGNlLGhlLHdlKXtyZXR1cm4gamUoZnVuY3Rpb24gYWUoZ2UsY2Upe2Zvcih2YXIgaGUsd2UsdHQ9W10sS2U9MDtLZTxnZS5sZW5ndGgmJiEoKGNlLT0yKTwwKTsrK0tlKXdlPShoZT1nZS5jaGFyQ29k'@; put 'ZUF0KEtlKSk+PjgsdHQucHVzaChoZSUyNTYpLHR0LnB1c2god2UpO3JldHVybiB0dH0oY2UsZ2UubGVuZ3RoLWhlKSxnZSxoZSx3ZSl9ZnVuY3Rpb24gYihnZSxjZSxoZSl7cmV0dXJuIHkuZnJvbUJ5dGVBcnJheSgwPT09Y2UmJmhlPT09Z2UubGVuZ3RoP2dlOmdlLnNsaWNlKGNlLGhlKSl9'@; put 'ZnVuY3Rpb24gayhnZSxjZSxoZSl7aGU9TWF0aC5taW4oZ2UubGVuZ3RoLGhlKTtmb3IodmFyIHdlPVtdLEplPWNlO0plPGhlOyl7dmFyIFJ0LEx0LEd0LGd0LHR0PWdlW0plXSxLZT1udWxsLCR0PXR0PjIzOT80OnR0PjIyMz8zOnR0PjE5MT8yOjE7aWYoSmUrJHQ8PWhlKXN3aXRjaCgkdCl7'@; put 'Y2FzZSAxOnR0PDEyOCYmKEtlPXR0KTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihSdD1nZVtKZSsxXSkpJiYoZ3Q9KDMxJnR0KTw8Nnw2MyZSdCk+MTI3JiYoS2U9Z3QpO2JyZWFrO2Nhc2UgMzpMdD1nZVtKZSsyXSwxMjg9PSgxOTImKFJ0PWdlW0plKzFdKSkmJjEyOD09KDE5MiZMdCkmJihn'@; put 'dD0oMTUmdHQpPDwxMnwoNjMmUnQpPDw2fDYzJkx0KT4yMDQ3JiYoZ3Q8NTUyOTZ8fGd0PjU3MzQzKSYmKEtlPWd0KTticmVhaztjYXNlIDQ6THQ9Z2VbSmUrMl0sR3Q9Z2VbSmUrM10sMTI4PT0oMTkyJihSdD1nZVtKZSsxXSkpJiYxMjg9PSgxOTImTHQpJiYxMjg9PSgxOTImR3QpJiYoZ3Q9'@; put 'KDE1JnR0KTw8MTh8KDYzJlJ0KTw8MTJ8KDYzJkx0KTw8Nnw2MyZHdCk+NjU1MzUmJmd0PDExMTQxMTImJihLZT1ndCl9bnVsbD09PUtlPyhLZT02NTUzMywkdD0xKTpLZT42NTUzNSYmKHdlLnB1c2goKEtlLT02NTUzNik+Pj4xMCYxMDIzfDU1Mjk2KSxLZT01NjMyMHwxMDIzJktlKSx3ZS5w'@; put 'dXNoKEtlKSxKZSs9JHR9cmV0dXJuIGZ1bmN0aW9uIEIoZ2Upe3ZhciBjZT1nZS5sZW5ndGg7aWYoY2U8PU0pcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGdlKTtmb3IodmFyIGhlPSIiLHdlPTA7d2U8Y2U7KWhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0'@; put 'cmluZyxnZS5zbGljZSh3ZSx3ZSs9TSkpO3JldHVybiBoZX0od2UpfWoua01heExlbmd0aD1BLCEody5UWVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uIHYoKXt0cnl7dmFyIGdlPW5ldyBVaW50OEFycmF5KDEpLGNlPXtmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fTtyZXR1cm4gT2JqZWN0'@; put 'LnNldFByb3RvdHlwZU9mKGNlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2UsY2UpLDQyPT09Z2UuZm9vKCl9Y2F0Y2h7cmV0dXJuITF9fSgpKSYmdHlwZW9mIGNvbnNvbGU8InUiJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5lcnJvciYmY29uc29s'@; put 'ZS5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuIiksT2JqZWN0LmRlZmlu'@; put 'ZVByb3BlcnR5KHcucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHcuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LnByb3RvdHlwZSwib2Zmc2V0Iix7ZW51bWVyYWJsZTohMCxnZXQ6'@; put 'ZnVuY3Rpb24oKXtpZih3LmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ5dGVPZmZzZXR9fSksdy5wb29sU2l6ZT04MTkyLHcuZnJvbT1mdW5jdGlvbihnZSxjZSxoZSl7cmV0dXJuIFMoZ2UsY2UsaGUpfSxPYmplY3Quc2V0UHJvdG90eXBlT2Yody5wcm90b3R5cGUsVWludDhBcnJheS5w'@; put 'cm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZih3LFVpbnQ4QXJyYXkpLHcuYWxsb2M9ZnVuY3Rpb24oZ2UsY2UsaGUpe3JldHVybiBmdW5jdGlvbiBSKGdlLGNlLGhlKXtyZXR1cm4gTChnZSksZ2U8PTA/QyhnZSk6dm9pZCAwIT09Y2U/InN0cmluZyI9PXR5cGVvZiBoZT9DKGdlKS5m'@; put 'aWxsKGNlLGhlKTpDKGdlKS5maWxsKGNlKTpDKGdlKX0oZ2UsY2UsaGUpfSx3LmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGdlKXtyZXR1cm4geChnZSl9LHcuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGdlKXtyZXR1cm4geChnZSl9LHcuaXNCdWZmZXI9ZnVuY3Rpb24oY2Upe3JldHVybiBudWxs'@; put 'IT1jZSYmITA9PT1jZS5faXNCdWZmZXImJmNlIT09dy5wcm90b3R5cGV9LHcuY29tcGFyZT1mdW5jdGlvbihjZSxoZSl7aWYoQWUoY2UsVWludDhBcnJheSkmJihjZT13LmZyb20oY2UsY2Uub2Zmc2V0LGNlLmJ5dGVMZW5ndGgpKSxBZShoZSxVaW50OEFycmF5KSYmKGhlPXcuZnJvbShoZSxo'@; put 'ZS5vZmZzZXQsaGUuYnl0ZUxlbmd0aCkpLCF3LmlzQnVmZmVyKGNlKXx8IXcuaXNCdWZmZXIoaGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiYnVmMSIsICJidWYyIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKGNlPT09aGUpcmV0'@; put 'dXJuIDA7Zm9yKHZhciB3ZT1jZS5sZW5ndGgsSmU9aGUubGVuZ3RoLHR0PTAsS2U9TWF0aC5taW4od2UsSmUpO3R0PEtlOysrdHQpaWYoY2VbdHRdIT09aGVbdHRdKXt3ZT1jZVt0dF0sSmU9aGVbdHRdO2JyZWFrfXJldHVybiB3ZTxKZT8tMTpKZTx3ZT8xOjB9LHcuaXNFbmNvZGluZz1mdW5j'@; put 'dGlvbihjZSl7c3dpdGNoKFN0cmluZyhjZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNh'@; put 'c2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSx3LmNvbmNhdD1mdW5jdGlvbihjZSxoZSl7aWYoIUFycmF5LmlzQXJyYXkoY2UpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09Y2Uu'@; put 'bGVuZ3RoKXJldHVybiB3LmFsbG9jKDApO3ZhciB3ZTtpZih2b2lkIDA9PT1oZSlmb3IoaGU9MCx3ZT0wO3dlPGNlLmxlbmd0aDsrK3dlKWhlKz1jZVt3ZV0ubGVuZ3RoO3ZhciBKZT13LmFsbG9jVW5zYWZlKGhlKSx0dD0wO2Zvcih3ZT0wO3dlPGNlLmxlbmd0aDsrK3dlKXt2YXIgS2U9Y2Vb'@; put 'd2VdO2lmKEFlKEtlLFVpbnQ4QXJyYXkpKXR0K0tlLmxlbmd0aD5KZS5sZW5ndGg/dy5mcm9tKEtlKS5jb3B5KEplLHR0KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChKZSxLZSx0dCk7ZWxzZXtpZighdy5pc0J1ZmZlcihLZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFy'@; put 'Z3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO0tlLmNvcHkoSmUsdHQpfXR0Kz1LZS5sZW5ndGh9cmV0dXJuIEplfSx3LmJ5dGVMZW5ndGg9Vyx3LnByb3RvdHlwZS5faXNCdWZmZXI9ITAsdy5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGNlPXRoaXMubGVuZ3Ro'@; put 'O2lmKGNlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciBoZT0wO2hlPGNlO2hlKz0yKXJlKHRoaXMsaGUsaGUrMSk7cmV0dXJuIHRoaXN9LHcucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3Zh'@; put 'ciBjZT10aGlzLmxlbmd0aDtpZihjZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgaGU9MDtoZTxjZTtoZSs9NClyZSh0aGlzLGhlLGhlKzMpLHJlKHRoaXMsaGUrMSxoZSsyKTtyZXR1cm4gdGhp'@; put 'c30sdy5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGNlPXRoaXMubGVuZ3RoO2lmKGNlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciBoZT0wO2hlPGNlO2hlKz04KXJlKHRoaXMsaGUs'@; put 'aGUrNykscmUodGhpcyxoZSsxLGhlKzYpLHJlKHRoaXMsaGUrMixoZSs1KSxyZSh0aGlzLGhlKzMsaGUrNCk7cmV0dXJuIHRoaXN9LHcucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGNlPXRoaXMubGVuZ3RoO3JldHVybiAwPT09Y2U/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/'@; put 'ayh0aGlzLDAsY2UpOnEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx3LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz13LnByb3RvdHlwZS50b1N0cmluZyx3LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oY2Upe2lmKCF3LmlzQnVmZmVyKGNlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVu'@; put 'dCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1jZXx8MD09PXcuY29tcGFyZSh0aGlzLGNlKX0sdy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBjZT0iIixoZT1qLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiBjZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsaGUpLnJl'@; put 'cGxhY2UoLyguezJ9KS9nLCIkMSAiKS50cmltKCksdGhpcy5sZW5ndGg+aGUmJihjZSs9IiAuLi4gIiksIjxCdWZmZXIgIitjZSsiPiJ9LHMmJih3LnByb3RvdHlwZVtzXT13LnByb3RvdHlwZS5pbnNwZWN0KSx3LnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGNlLGhlLHdlLEplLHR0KXtp'@; put 'ZihBZShjZSxVaW50OEFycmF5KSYmKGNlPXcuZnJvbShjZSxjZS5vZmZzZXQsY2UuYnl0ZUxlbmd0aCkpLCF3LmlzQnVmZmVyKGNlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVj'@; put 'ZWl2ZWQgdHlwZSAnK3R5cGVvZiBjZSk7aWYodm9pZCAwPT09aGUmJihoZT0wKSx2b2lkIDA9PT13ZSYmKHdlPWNlP2NlLmxlbmd0aDowKSx2b2lkIDA9PT1KZSYmKEplPTApLHZvaWQgMD09PXR0JiYodHQ9dGhpcy5sZW5ndGgpLGhlPDB8fHdlPmNlLmxlbmd0aHx8SmU8MHx8dHQ+dGhpcy5s'@; put 'ZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKEplPj10dCYmaGU+PXdlKXJldHVybiAwO2lmKEplPj10dClyZXR1cm4tMTtpZihoZT49d2UpcmV0dXJuIDE7aWYodGhpcz09PWNlKXJldHVybiAwO2Zvcih2YXIgS2U9KHR0Pj4+PTApLShKZT4+Pj0w'@; put 'KSwkdD0od2U+Pj49MCktKGhlPj4+PTApLFJ0PU1hdGgubWluKEtlLCR0KSxMdD10aGlzLnNsaWNlKEplLHR0KSxHdD1jZS5zbGljZShoZSx3ZSksZ3Q9MDtndDxSdDsrK2d0KWlmKEx0W2d0XSE9PUd0W2d0XSl7S2U9THRbZ3RdLCR0PUd0W2d0XTticmVha31yZXR1cm4gS2U8JHQ/LTE6JHQ8'@; put 'S2U/MTowfSx3LnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoY2UsaGUsd2UpfSx3LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gbWUodGhpcyxjZSxoZSx3ZSwhMCl9LHcucHJvdG90eXBlLmxh'@; put 'c3RJbmRleE9mPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gbWUodGhpcyxjZSxoZSx3ZSwhMSl9LHcucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGNlLGhlLHdlLEplKXtpZih2b2lkIDA9PT1oZSlKZT0idXRmOCIsd2U9dGhpcy5sZW5ndGgsaGU9MDtlbHNlIGlmKHZvaWQgMD09PXdlJiYi'@; put 'c3RyaW5nIj09dHlwZW9mIGhlKUplPWhlLHdlPXRoaXMubGVuZ3RoLGhlPTA7ZWxzZXtpZighaXNGaW5pdGUoaGUpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtoZT4+Pj0w'@; put 'LGlzRmluaXRlKHdlKT8od2U+Pj49MCx2b2lkIDA9PT1KZSYmKEplPSJ1dGY4IikpOihKZT13ZSx3ZT12b2lkIDApfXZhciB0dD10aGlzLmxlbmd0aC1oZTtpZigodm9pZCAwPT09d2V8fHdlPnR0KSYmKHdlPXR0KSxjZS5sZW5ndGg+MCYmKHdlPDB8fGhlPDApfHxoZT50aGlzLmxlbmd0aCl0'@; put 'aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtKZXx8KEplPSJ1dGY4Iik7Zm9yKHZhciBLZT0hMTs7KXN3aXRjaChKZSl7Y2FzZSJoZXgiOnJldHVybiBJZSh0aGlzLGNlLGhlLHdlKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJl'@; put 'dHVybiBrZSh0aGlzLGNlLGhlLHdlKTtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBxZSh0aGlzLGNlLGhlLHdlKTtjYXNlImJhc2U2NCI6cmV0dXJuIFgodGhpcyxjZSxoZSx3ZSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2Ui'@; put 'dXRmLTE2bGUiOnJldHVybiBmKHRoaXMsY2UsaGUsd2UpO2RlZmF1bHQ6aWYoS2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitKZSk7SmU9KCIiK0plKS50b0xvd2VyQ2FzZSgpLEtlPSEwfX0sdy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5'@; put 'cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgTT00MDk2O2Z1bmN0aW9uIEsoZ2UsY2UsaGUpe3ZhciB3ZT0iIjtoZT1NYXRoLm1pbihnZS5sZW5ndGgsaGUpO2Zvcih2YXIgSmU9Y2U7SmU8aGU7KytKZSl3ZSs9U3Ry'@; put 'aW5nLmZyb21DaGFyQ29kZSgxMjcmZ2VbSmVdKTtyZXR1cm4gd2V9ZnVuY3Rpb24gRyhnZSxjZSxoZSl7dmFyIHdlPSIiO2hlPU1hdGgubWluKGdlLmxlbmd0aCxoZSk7Zm9yKHZhciBKZT1jZTtKZTxoZTsrK0plKXdlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGdlW0plXSk7cmV0dXJuIHdlfWZ1'@; put 'bmN0aW9uIEQoZ2UsY2UsaGUpe3ZhciB3ZT1nZS5sZW5ndGg7KCFjZXx8Y2U8MCkmJihjZT0wKSwoIWhlfHxoZTwwfHxoZT53ZSkmJihoZT13ZSk7Zm9yKHZhciBKZT0iIix0dD1jZTt0dDxoZTsrK3R0KUplKz1GZVtnZVt0dF1dO3JldHVybiBKZX1mdW5jdGlvbiBwKGdlLGNlLGhlKXtmb3Io'@; put 'dmFyIHdlPWdlLnNsaWNlKGNlLGhlKSxKZT0iIix0dD0wO3R0PHdlLmxlbmd0aC0xO3R0Kz0yKUplKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHdlW3R0XSsyNTYqd2VbdHQrMV0pO3JldHVybiBKZX1mdW5jdGlvbiBJKGdlLGNlLGhlKXtpZihnZSUxIT0wfHxnZTwwKXRocm93IG5ldyBSYW5nZUVy'@; put 'cm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihnZStjZT5oZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIHVlKGdlLGNlLGhlLHdlLEplLHR0KXtpZighdy5pc0J1ZmZlcihnZSkpdGhyb3cgbmV3IFR5cGVF'@; put 'cnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKGNlPkplfHxjZTx0dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYoaGUrd2U+Z2UubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9y'@; put 'KCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBuZShnZSxjZSxoZSx3ZSxKZSx0dCl7aWYoaGUrd2U+Z2UubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2Ui'@; put 'KX1mdW5jdGlvbiBfZShnZSxjZSxoZSx3ZSxKZSl7cmV0dXJuIGNlPStjZSxoZT4+Pj0wLEplfHxuZShnZSwwLGhlLDQpLGMud3JpdGUoZ2UsY2UsaGUsd2UsMjMsNCksaGUrNH1mdW5jdGlvbiBQZShnZSxjZSxoZSx3ZSxKZSl7cmV0dXJuIGNlPStjZSxoZT4+Pj0wLEplfHxuZShnZSwwLGhl'@; put 'LDgpLGMud3JpdGUoZ2UsY2UsaGUsd2UsNTIsOCksaGUrOH13LnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihjZSxoZSl7dmFyIHdlPXRoaXMubGVuZ3RoOyhjZT1+fmNlKTwwPyhjZSs9d2UpPDAmJihjZT0wKTpjZT53ZSYmKGNlPXdlKSwoaGU9dm9pZCAwPT09aGU/d2U6fn5oZSk8MD8oaGUr'@; put 'PXdlKTwwJiYoaGU9MCk6aGU+d2UmJihoZT13ZSksaGU8Y2UmJihoZT1jZSk7dmFyIEplPXRoaXMuc3ViYXJyYXkoY2UsaGUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoSmUsdy5wcm90b3R5cGUpLEplfSx3LnByb3RvdHlwZS5yZWFkVWludExFPXcucHJvdG90eXBlLnJlYWRVSW50'@; put 'TEU9ZnVuY3Rpb24oY2UsaGUsd2Upe2NlPj4+PTAsaGU+Pj49MCx3ZXx8SShjZSxoZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBKZT10aGlzW2NlXSx0dD0xLEtlPTA7KytLZTxoZSYmKHR0Kj0yNTYpOylKZSs9dGhpc1tjZStLZV0qdHQ7cmV0dXJuIEplfSx3LnByb3RvdHlwZS5yZWFkVWludEJF'@; put 'PXcucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oY2UsaGUsd2Upe2NlPj4+PTAsaGU+Pj49MCx3ZXx8SShjZSxoZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBKZT10aGlzW2NlKy0taGVdLHR0PTE7aGU+MCYmKHR0Kj0yNTYpOylKZSs9dGhpc1tjZSstLWhlXSp0dDtyZXR1cm4gSmV9LHcu'@; put 'cHJvdG90eXBlLnJlYWRVaW50OD13LnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDEsdGhpcy5sZW5ndGgpLHRoaXNbY2VdfSx3LnByb3RvdHlwZS5yZWFkVWludDE2TEU9dy5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9u'@; put 'KGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2NlXXx0aGlzW2NlKzFdPDw4fSx3LnByb3RvdHlwZS5yZWFkVWludDE2QkU9dy5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSwyLHRo'@; put 'aXMubGVuZ3RoKSx0aGlzW2NlXTw8OHx0aGlzW2NlKzFdfSx3LnByb3RvdHlwZS5yZWFkVWludDMyTEU9dy5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxoZXx8SShjZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tjZV18dGhpc1tjZSsxXTw8OHx0'@; put 'aGlzW2NlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tjZSszXX0sdy5wcm90b3R5cGUucmVhZFVpbnQzMkJFPXcucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihjZSxoZSl7cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tjZV0rKHRoaXNb'@; put 'Y2UrMV08PDE2fHRoaXNbY2UrMl08PDh8dGhpc1tjZSszXSl9LHcucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihjZSxoZSx3ZSl7Y2U+Pj49MCxoZT4+Pj0wLHdlfHxJKGNlLGhlLHRoaXMubGVuZ3RoKTtmb3IodmFyIEplPXRoaXNbY2VdLHR0PTEsS2U9MDsrK0tlPGhlJiYodHQqPTI1'@; put 'Nik7KUplKz10aGlzW2NlK0tlXSp0dDtyZXR1cm4gSmU+PSh0dCo9MTI4KSYmKEplLT1NYXRoLnBvdygyLDgqaGUpKSxKZX0sdy5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGNlLGhlLHdlKXtjZT4+Pj0wLGhlPj4+PTAsd2V8fEkoY2UsaGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgSmU9'@; put 'aGUsdHQ9MSxLZT10aGlzW2NlKy0tSmVdO0plPjAmJih0dCo9MjU2KTspS2UrPXRoaXNbY2UrLS1KZV0qdHQ7cmV0dXJuIEtlPj0odHQqPTEyOCkmJihLZS09TWF0aC5wb3coMiw4KmhlKSksS2V9LHcucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxo'@; put 'ZXx8SShjZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tjZV0/LTEqKDI1NS10aGlzW2NlXSsxKTp0aGlzW2NlXX0sdy5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oY2UsaGUpe2NlPj4+PTAsaGV8fEkoY2UsMix0aGlzLmxlbmd0aCk7dmFyIHdlPXRoaXNbY2VdfHRoaXNbY2UrMV08'@; put 'PDg7cmV0dXJuIDMyNzY4JndlPzQyOTQ5MDE3NjB8d2U6d2V9LHcucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGNlLGhlKXtjZT4+Pj0wLGhlfHxJKGNlLDIsdGhpcy5sZW5ndGgpO3ZhciB3ZT10aGlzW2NlKzFdfHRoaXNbY2VdPDw4O3JldHVybiAzMjc2OCZ3ZT80Mjk0OTAxNzYw'@; put 'fHdlOndlfSx3LnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihjZSxoZSl7cmV0dXJuIGNlPj4+PTAsaGV8fEkoY2UsNCx0aGlzLmxlbmd0aCksdGhpc1tjZV18dGhpc1tjZSsxXTw8OHx0aGlzW2NlKzJdPDwxNnx0aGlzW2NlKzNdPDwyNH0sdy5wcm90b3R5cGUucmVhZEludDMyQkU9'@; put 'ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDQsdGhpcy5sZW5ndGgpLHRoaXNbY2VdPDwyNHx0aGlzW2NlKzFdPDwxNnx0aGlzW2NlKzJdPDw4fHRoaXNbY2UrM119LHcucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGNlLGhlKXtyZXR1cm4gY2U+Pj49MCxo'@; put 'ZXx8SShjZSw0LHRoaXMubGVuZ3RoKSxjLnJlYWQodGhpcyxjZSwhMCwyMyw0KX0sdy5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDQsdGhpcy5sZW5ndGgpLGMucmVhZCh0aGlzLGNlLCExLDIzLDQpfSx3LnByb3RvdHlwZS5y'@; put 'ZWFkRG91YmxlTEU9ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDgsdGhpcy5sZW5ndGgpLGMucmVhZCh0aGlzLGNlLCEwLDUyLDgpfSx3LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZT4+Pj0wLGhlfHxJKGNlLDgsdGhpcy5s'@; put 'ZW5ndGgpLGMucmVhZCh0aGlzLGNlLCExLDUyLDgpfSx3LnByb3RvdHlwZS53cml0ZVVpbnRMRT13LnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihjZSxoZSx3ZSxKZSl7Y2U9K2NlLGhlPj4+PTAsd2U+Pj49MCxKZXx8dWUodGhpcyxjZSxoZSx3ZSxNYXRoLnBvdygyLDgqd2UpLTEs'@; put 'MCk7dmFyIEtlPTEsJHQ9MDtmb3IodGhpc1toZV09MjU1JmNlOysrJHQ8d2UmJihLZSo9MjU2KTspdGhpc1toZSskdF09Y2UvS2UmMjU1O3JldHVybiBoZSt3ZX0sdy5wcm90b3R5cGUud3JpdGVVaW50QkU9dy5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oY2UsaGUsd2UsSmUpe2Nl'@; put 'PStjZSxoZT4+Pj0wLHdlPj4+PTAsSmV8fHVlKHRoaXMsY2UsaGUsd2UsTWF0aC5wb3coMiw4KndlKS0xLDApO3ZhciBLZT13ZS0xLCR0PTE7Zm9yKHRoaXNbaGUrS2VdPTI1NSZjZTstLUtlPj0wJiYoJHQqPTI1Nik7KXRoaXNbaGUrS2VdPWNlLyR0JjI1NTtyZXR1cm4gaGUrd2V9LHcucHJv'@; put 'dG90eXBlLndyaXRlVWludDg9dy5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIGNlPStjZSxoZT4+Pj0wLHdlfHx1ZSh0aGlzLGNlLGhlLDEsMjU1LDApLHRoaXNbaGVdPTI1NSZjZSxoZSsxfSx3LnByb3RvdHlwZS53cml0ZVVpbnQxNkxFPXcucHJvdG90'@; put 'eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSwyLDY1NTM1LDApLHRoaXNbaGVdPTI1NSZjZSx0aGlzW2hlKzFdPWNlPj4+OCxoZSsyfSx3LnByb3RvdHlwZS53cml0ZVVpbnQxNkJFPXcucHJvdG90eXBl'@; put 'LndyaXRlVUludDE2QkU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSwyLDY1NTM1LDApLHRoaXNbaGVdPWNlPj4+OCx0aGlzW2hlKzFdPTI1NSZjZSxoZSsyfSx3LnByb3RvdHlwZS53cml0ZVVpbnQzMkxFPXcucHJvdG90eXBlLndy'@; put 'aXRlVUludDMyTEU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1toZSszXT1jZT4+PjI0LHRoaXNbaGUrMl09Y2U+Pj4xNix0aGlzW2hlKzFdPWNlPj4+OCx0aGlzW2hlXT0yNTUmY2UsaGUrNH0s'@; put 'dy5wcm90b3R5cGUud3JpdGVVaW50MzJCRT13LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbaGVdPWNlPj4+MjQsdGhpc1toZSsxXT1jZT4+PjE2LHRo'@; put 'aXNbaGUrMl09Y2U+Pj44LHRoaXNbaGUrM109MjU1JmNlLGhlKzR9LHcucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oY2UsaGUsd2UsSmUpe2lmKGNlPStjZSxoZT4+Pj0wLCFKZSl7dmFyIHR0PU1hdGgucG93KDIsOCp3ZS0xKTt1ZSh0aGlzLGNlLGhlLHdlLHR0LTEsLXR0KX12YXIg'@; put 'S2U9MCwkdD0xLFJ0PTA7Zm9yKHRoaXNbaGVdPTI1NSZjZTsrK0tlPHdlJiYoJHQqPTI1Nik7KWNlPDAmJjA9PT1SdCYmMCE9PXRoaXNbaGUrS2UtMV0mJihSdD0xKSx0aGlzW2hlK0tlXT0oY2UvJHR8MCktUnQmMjU1O3JldHVybiBoZSt3ZX0sdy5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5j'@; put 'dGlvbihjZSxoZSx3ZSxKZSl7aWYoY2U9K2NlLGhlPj4+PTAsIUplKXt2YXIgdHQ9TWF0aC5wb3coMiw4KndlLTEpO3VlKHRoaXMsY2UsaGUsd2UsdHQtMSwtdHQpfXZhciBLZT13ZS0xLCR0PTEsUnQ9MDtmb3IodGhpc1toZStLZV09MjU1JmNlOy0tS2U+PTAmJigkdCo9MjU2KTspY2U8MCYm'@; put 'MD09PVJ0JiYwIT09dGhpc1toZStLZSsxXSYmKFJ0PTEpLHRoaXNbaGUrS2VdPShjZS8kdHwwKS1SdCYyNTU7cmV0dXJuIGhlK3dlfSx3LnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSwxLDEyNywt'@; put 'MTI4KSxjZTwwJiYoY2U9MjU1K2NlKzEpLHRoaXNbaGVdPTI1NSZjZSxoZSsxfSx3LnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSwyLDMyNzY3LC0zMjc2OCksdGhpc1toZV09MjU1JmNlLHRo'@; put 'aXNbaGUrMV09Y2U+Pj44LGhlKzJ9LHcucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIGNlPStjZSxoZT4+Pj0wLHdlfHx1ZSh0aGlzLGNlLGhlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2hlXT1jZT4+PjgsdGhpc1toZSsxXT0yNTUmY2UsaGUrMn0sdy5w'@; put 'cm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGNlLGhlLHdlKXtyZXR1cm4gY2U9K2NlLGhlPj4+PTAsd2V8fHVlKHRoaXMsY2UsaGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2hlXT0yNTUmY2UsdGhpc1toZSsxXT1jZT4+PjgsdGhpc1toZSsyXT1jZT4+PjE2LHRoaXNb'@; put 'aGUrM109Y2U+Pj4yNCxoZSs0fSx3LnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBjZT0rY2UsaGU+Pj49MCx3ZXx8dWUodGhpcyxjZSxoZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGNlPDAmJihjZT00Mjk0OTY3Mjk1K2NlKzEpLHRoaXNbaGVd'@; put 'PWNlPj4+MjQsdGhpc1toZSsxXT1jZT4+PjE2LHRoaXNbaGUrMl09Y2U+Pj44LHRoaXNbaGUrM109MjU1JmNlLGhlKzR9LHcucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIF9lKHRoaXMsY2UsaGUsITAsd2UpfSx3LnByb3RvdHlwZS53cml0ZUZsb2F0'@; put 'QkU9ZnVuY3Rpb24oY2UsaGUsd2Upe3JldHVybiBfZSh0aGlzLGNlLGhlLCExLHdlKX0sdy5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihjZSxoZSx3ZSl7cmV0dXJuIFBlKHRoaXMsY2UsaGUsITAsd2UpfSx3LnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGNlLGhl'@; put 'LHdlKXtyZXR1cm4gUGUodGhpcyxjZSxoZSwhMSx3ZSl9LHcucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oY2UsaGUsd2UsSmUpe2lmKCF3LmlzQnVmZmVyKGNlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXIiKTtpZih3ZXx8KHdlPTApLCFKZSYmMCE9'@; put 'PUplJiYoSmU9dGhpcy5sZW5ndGgpLGhlPj1jZS5sZW5ndGgmJihoZT1jZS5sZW5ndGgpLGhlfHwoaGU9MCksSmU+MCYmSmU8d2UmJihKZT13ZSksSmU9PT13ZXx8MD09PWNlLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKGhlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRh'@; put 'cmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZih3ZTwwfHx3ZT49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKEplPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7SmU+dGhpcy5sZW5ndGgm'@; put 'JihKZT10aGlzLmxlbmd0aCksY2UubGVuZ3RoLWhlPEplLXdlJiYoSmU9Y2UubGVuZ3RoLWhlK3dlKTt2YXIgdHQ9SmUtd2U7cmV0dXJuIHRoaXM9PT1jZSYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4/dGhpcy5jb3B5V2l0aGluKGhlLHdlLEpl'@; put 'KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChjZSx0aGlzLnN1YmFycmF5KHdlLEplKSxoZSksdHR9LHcucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oY2UsaGUsd2UsSmUpe2lmKCJzdHJpbmciPT10eXBlb2YgY2Upe2lmKCJzdHJpbmciPT10eXBlb2YgaGU/KEplPWhlLGhlPTAsd2U9'@; put 'dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2Ygd2UmJihKZT13ZSx3ZT10aGlzLmxlbmd0aCksdm9pZCAwIT09SmUmJiJzdHJpbmciIT10eXBlb2YgSmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgSmUmJiF3'@; put 'LmlzRW5jb2RpbmcoSmUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrSmUpO2lmKDE9PT1jZS5sZW5ndGgpe3ZhciB0dD1jZS5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1KZSYmdHQ8MTI4fHwibGF0aW4xIj09PUplKSYmKGNlPXR0KX19ZWxzZSJudW1iZXIiPT10'@; put 'eXBlb2YgY2U/Y2UmPTI1NToiYm9vbGVhbiI9PXR5cGVvZiBjZSYmKGNlPU51bWJlcihjZSkpO2lmKGhlPDB8fHRoaXMubGVuZ3RoPGhlfHx0aGlzLmxlbmd0aDx3ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYod2U8PWhlKXJldHVybiB0aGlzO3ZhciBL'@; put 'ZTtpZihoZT4+Pj0wLHdlPXZvaWQgMD09PXdlP3RoaXMubGVuZ3RoOndlPj4+MCxjZXx8KGNlPTApLCJudW1iZXIiPT10eXBlb2YgY2UpZm9yKEtlPWhlO0tlPHdlOysrS2UpdGhpc1tLZV09Y2U7ZWxzZXt2YXIgJHQ9dy5pc0J1ZmZlcihjZSk/Y2U6dy5mcm9tKGNlLEplKSxSdD0kdC5sZW5n'@; put 'dGg7aWYoMD09PVJ0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSAiJytjZSsnIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCAidmFsdWUiJyk7Zm9yKEtlPTA7S2U8d2UtaGU7KytLZSl0aGlzW0tlK2hlXT0kdFtLZSVSdF19cmV0dXJuIHRoaXN9O3ZhciBvdD0vW14rLzAtOUEtWmEt'@; put 'ei1fXS9nO2Z1bmN0aW9uIGR0KGdlLGNlKXtjZT1jZXx8MS8wO2Zvcih2YXIgaGUsd2U9Z2UubGVuZ3RoLEplPW51bGwsdHQ9W10sS2U9MDtLZTx3ZTsrK0tlKXtpZigoaGU9Z2UuY2hhckNvZGVBdChLZSkpPjU1Mjk1JiZoZTw1NzM0NCl7aWYoIUplKXtpZihoZT41NjMxOSl7KGNlLT0zKT4t'@; put 'MSYmdHQucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoS2UrMT09PXdlKXsoY2UtPTMpPi0xJiZ0dC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1KZT1oZTtjb250aW51ZX1pZihoZTw1NjMyMCl7KGNlLT0zKT4tMSYmdHQucHVzaCgyMzksMTkxLDE4OSksSmU9aGU7Y29udGludWV9'@; put 'aGU9NjU1MzYrKEplLTU1Mjk2PDwxMHxoZS01NjMyMCl9ZWxzZSBKZSYmKGNlLT0zKT4tMSYmdHQucHVzaCgyMzksMTkxLDE4OSk7aWYoSmU9bnVsbCxoZTwxMjgpe2lmKChjZS09MSk8MClicmVhazt0dC5wdXNoKGhlKX1lbHNlIGlmKGhlPDIwNDgpe2lmKChjZS09Mik8MClicmVhazt0dC5w'@; put 'dXNoKGhlPj42fDE5Miw2MyZoZXwxMjgpfWVsc2UgaWYoaGU8NjU1MzYpe2lmKChjZS09Myk8MClicmVhazt0dC5wdXNoKGhlPj4xMnwyMjQsaGU+PjYmNjN8MTI4LDYzJmhlfDEyOCl9ZWxzZXtpZighKGhlPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7'@; put 'aWYoKGNlLT00KTwwKWJyZWFrO3R0LnB1c2goaGU+PjE4fDI0MCxoZT4+MTImNjN8MTI4LGhlPj42JjYzfDEyOCw2MyZoZXwxMjgpfX1yZXR1cm4gdHR9ZnVuY3Rpb24geGUoZ2Upe3JldHVybiB5LnRvQnl0ZUFycmF5KGZ1bmN0aW9uIGx0KGdlKXtpZigoZ2U9KGdlPWdlLnNwbGl0KCI9Iilb'@; put 'MF0pLnRyaW0oKS5yZXBsYWNlKG90LCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtnZS5sZW5ndGglNCE9MDspZ2UrPSI9IjtyZXR1cm4gZ2V9KGdlKSl9ZnVuY3Rpb24gamUoZ2UsY2UsaGUsd2Upe2Zvcih2YXIgSmU9MDtKZTx3ZSYmIShKZStoZT49Y2UubGVuZ3RofHxKZT49Z2UubGVu'@; put 'Z3RoKTsrK0plKWNlW0plK2hlXT1nZVtKZV07cmV0dXJuIEplfWZ1bmN0aW9uIEFlKGdlLGNlKXtyZXR1cm4gZ2UgaW5zdGFuY2VvZiBjZXx8bnVsbCE9Z2UmJm51bGwhPWdlLmNvbnN0cnVjdG9yJiZudWxsIT1nZS5jb25zdHJ1Y3Rvci5uYW1lJiZnZS5jb25zdHJ1Y3Rvci5uYW1lPT09Y2Uu'@; put 'bmFtZX1mdW5jdGlvbiBEZShnZSl7cmV0dXJuIGdlIT1nZX12YXIgRmU9ZnVuY3Rpb24oKXtmb3IodmFyIGdlPSIwMTIzNDU2Nzg5YWJjZGVmIixjZT1uZXcgQXJyYXkoMjU2KSxoZT0wO2hlPDE2OysraGUpZm9yKHZhciB3ZT0xNipoZSxKZT0wO0plPDE2OysrSmUpY2Vbd2UrSmVdPWdlW2hl'@; put 'XStnZVtKZV07cmV0dXJuIGNlfSgpfSw5NTczMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1OTkyKSxjPWgoNzk0NzcpLHM9aCg1OTcwNSksQT1oKDUyOTEwKTtmZS5leHBvcnRzPUF8fHkuY2FsbChzLGMpfSw5ODkxMChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1OTky'@; put 'KSxjPWgoNzk0NzcpLHM9aCg5NTczMSk7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBzKHksYyxhcmd1bWVudHMpfX0sNzk0NzcoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseX0sNTk3MDUoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRz'@; put 'PUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsfSw2MTg4NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDY1OTkyKSxjPWgoNDY3NTgpLHM9aCg1OTcwNSksQT1oKDk1NzMxKTtmZS5leHBvcnRzPWZ1bmN0aW9uKEMpe2lmKEMubGVuZ3RoPDF8fCJmdW5jdGlvbiIhPXR5cGVvZiBDWzBdKXRo'@; put 'cm93IG5ldyBjKCJhIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIik7cmV0dXJuIEEoeSxzLEMpfX0sNTI5MTAoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdCYmUmVmbGVjdC5hcHBseX0sNDgxMjgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9'@; put 'aCgzMTM1OCksYz1oKDQ1NzApLHM9aCg2MTg4NSksQT1oKDk4OTEwKTtmZS5leHBvcnRzPWZ1bmN0aW9uKEMpe3ZhciB3PXMoYXJndW1lbnRzKSxTPTErQy5sZW5ndGgtKGFyZ3VtZW50cy5sZW5ndGgtMSk7cmV0dXJuIHkodyxTPjA/UzowLCEwKX0sYz9jKGZlLmV4cG9ydHMsImFwcGx5Iix7'@; put 'dmFsdWU6QX0pOmZlLmV4cG9ydHMuYXBwbHk9QX0sMTI3NzMoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg5MDI1OCksYz1oKDYxODg1KSxzPWMoW3koIiVTdHJpbmcucHJvdG90eXBlLmluZGV4T2YlIildKTtmZS5leHBvcnRzPWZ1bmN0aW9uKHYsQyl7dmFyIHc9eSh2LCEhQyk7cmV0'@; put 'dXJuImZ1bmN0aW9uIj09dHlwZW9mIHcmJnModiwiLnByb3RvdHlwZS4iKT4tMT9jKFt3XSk6d319LDMzNjE0KGZlLGosaCl7InVzZSBzdHJpY3QiO2gucihqKSxoLmQoaix7QWx0ZXJuYXRpb246KCk9PmV1LENzdFBhcnNlcjooKT0+czEsRU1QVFlfQUxUOigpPT53ZixFT0Y6KCk9PkpjLEVh'@; put 'cmx5RXhpdEV4Y2VwdGlvbjooKT0+YzgsRW1iZWRkZWRBY3Rpb25zUGFyc2VyOigpPT52MyxGbGF0OigpPT5SdSxHQXN0VmlzaXRvcjooKT0+bHMsTGV4ZXI6KCk9Pkp1LExleGVyRGVmaW5pdGlvbkVycm9yVHlwZTooKT0+UnMsTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uOigpPT5kMyxOb1Zp'@; put 'YWJsZUFsdEV4Y2VwdGlvbjooKT0+aDMsTm9uVGVybWluYWw6KCk9PkJ1LE5vdEFsbElucHV0UGFyc2VkRXhjZXB0aW9uOigpPT5sOCxPcHRpb246KCk9PmhjLFBhcnNlcjooKT0+Q2YsUGFyc2VyRGVmaW5pdGlvbkVycm9yVHlwZTooKT0+cmQsUmVwZXRpdGlvbjooKT0+Y2wsUmVwZXRpdGlv'@; put 'bk1hbmRhdG9yeTooKT0+ZWQsUmVwZXRpdGlvbk1hbmRhdG9yeVdpdGhTZXBhcmF0b3I6KCk9PkpuLFJlcGV0aXRpb25XaXRoU2VwYXJhdG9yOigpPT5taSxSdWxlOigpPT5OMSxUZXJtaW5hbDooKT0+U2wsVkVSU0lPTjooKT0+eSxhc3NpZ25PY2N1cnJlbmNlSW5kaWNlczooKT0+aTUsY2xl'@; put 'YXJDYWNoZTooKT0+aDgsY3JlYXRlU3ludGF4RGlhZ3JhbXNDb2RlOigpPT5keSxjcmVhdGVUb2tlbjooKT0+bmgsY3JlYXRlVG9rZW5JbnN0YW5jZTooKT0+Z2YsZGVmYXVsdEdyYW1tYXJSZXNvbHZlckVycm9yUHJvdmlkZXI6KCk9PlBtLGRlZmF1bHRHcmFtbWFyVmFsaWRhdG9yRXJyb3JQ'@; put 'cm92aWRlcjooKT0+aTEsZGVmYXVsdExleGVyRXJyb3JQcm92aWRlcjooKT0+c3AsZGVmYXVsdFBhcnNlckVycm9yUHJvdmlkZXI6KCk9PmMwLGdlbmVyYXRlUGFyc2VyRmFjdG9yeTooKT0+aWQsZ2VuZXJhdGVQYXJzZXJNb2R1bGU6KCk9PmQwLGlzUmVjb2duaXRpb25FeGNlcHRpb246KCk9'@; put 'PmhwLHJlc29sdmVHcmFtbWFyOigpPT5IbSxzZXJpYWxpemVHcmFtbWFyOigpPT5jbixzZXJpYWxpemVQcm9kdWN0aW9uOigpPT5pcix0b2tlbkxhYmVsOigpPT55ZCx0b2tlbk1hdGNoZXI6KCk9PmxwLHRva2VuTmFtZTooKT0+VW8sdmFsaWRhdGVHcmFtbWFyOigpPT53ZH0pO3ZhciB5PSI2'@; put 'LjUuMCI7ZnVuY3Rpb24gYyhwZSl7cmV0dXJuIHBlJiYwPT09cGUubGVuZ3RofWZ1bmN0aW9uIHMocGUpe3JldHVybiBudWxsPT1wZT9bXTpPYmplY3Qua2V5cyhwZSl9ZnVuY3Rpb24gQShwZSl7Zm9yKHZhciBsZT1bXSxiZT1PYmplY3Qua2V5cyhwZSksT2U9MDtPZTxiZS5sZW5ndGg7T2Ur'@; put 'KylsZS5wdXNoKHBlW2JlW09lXV0pO3JldHVybiBsZX1mdW5jdGlvbiBDKHBlLGxlKXtmb3IodmFyIGJlPVtdLE9lPTA7T2U8cGUubGVuZ3RoO09lKyspYmUucHVzaChsZS5jYWxsKG51bGwscGVbT2VdLE9lKSk7cmV0dXJuIGJlfWZ1bmN0aW9uIHcocGUpe2Zvcih2YXIgbGU9W10sYmU9MDti'@; put 'ZTxwZS5sZW5ndGg7YmUrKyl7dmFyIE9lPXBlW2JlXTtBcnJheS5pc0FycmF5KE9lKT9sZT1sZS5jb25jYXQodyhPZSkpOmxlLnB1c2goT2UpfXJldHVybiBsZX1mdW5jdGlvbiBTKHBlKXtyZXR1cm4gYyhwZSk/dm9pZCAwOnBlWzBdfWZ1bmN0aW9uIEwocGUpe3ZhciBsZT1wZSYmcGUubGVu'@; put 'Z3RoO3JldHVybiBsZT9wZVtsZS0xXTp2b2lkIDB9ZnVuY3Rpb24gUihwZSxsZSl7aWYoQXJyYXkuaXNBcnJheShwZSkpZm9yKHZhciBiZT0wO2JlPHBlLmxlbmd0aDtiZSsrKWxlLmNhbGwobnVsbCxwZVtiZV0sYmUpO2Vsc2V7aWYoIU0ocGUpKXRocm93IEVycm9yKCJub24gZXhoYXVzdGl2'@; put 'ZSBtYXRjaCIpO3ZhciBPZT1zKHBlKTtmb3IoYmU9MDtiZTxPZS5sZW5ndGg7YmUrKyl7dmFyICRlPU9lW2JlXTtsZS5jYWxsKG51bGwscGVbJGVdLCRlKX19fWZ1bmN0aW9uIHgocGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgcGV9ZnVuY3Rpb24gVShwZSl7cmV0dXJuIHZvaWQgMD09PXBl'@; put 'fWZ1bmN0aW9uIEgocGUpe3JldHVybiBwZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufWZ1bmN0aW9uIFYocGUsbGUpe3JldHVybiB2b2lkIDA9PT1sZSYmKGxlPTEpLHBlLnNsaWNlKGxlLHBlLmxlbmd0aCl9ZnVuY3Rpb24gTihwZSxsZSl7cmV0dXJuIHZvaWQgMD09PWxlJiYobGU9MSkscGUuc2xp'@; put 'Y2UoMCxwZS5sZW5ndGgtbGUpfWZ1bmN0aW9uIHoocGUsbGUpe3ZhciBiZT1bXTtpZihBcnJheS5pc0FycmF5KHBlKSlmb3IodmFyIE9lPTA7T2U8cGUubGVuZ3RoO09lKyspe3ZhciAkZT1wZVtPZV07bGUuY2FsbChudWxsLCRlKSYmYmUucHVzaCgkZSl9cmV0dXJuIGJlfWZ1bmN0aW9uIFko'@; put 'cGUsbGUpe3JldHVybiB6KHBlLGZ1bmN0aW9uKGJlKXtyZXR1cm4hbGUoYmUpfSl9ZnVuY3Rpb24gRihwZSxsZSl7Zm9yKHZhciBiZT1PYmplY3Qua2V5cyhwZSksT2U9e30sJGU9MDskZTxiZS5sZW5ndGg7JGUrKyl7dmFyIFN0PWJlWyRlXSxRdD1wZVtTdF07bGUoUXQpJiYoT2VbU3RdPVF0'@; put 'KX1yZXR1cm4gT2V9ZnVuY3Rpb24gVyhwZSxsZSl7cmV0dXJuISFNKHBlKSYmcGUuaGFzT3duUHJvcGVydHkobGUpfWZ1bmN0aW9uIHEocGUsbGUpe3JldHVybiB2b2lkIDAhPT1DZShwZSxmdW5jdGlvbihiZSl7cmV0dXJuIGJlPT09bGV9KX1mdW5jdGlvbiByZShwZSl7Zm9yKHZhciBsZT1b'@; put 'XSxiZT0wO2JlPHBlLmxlbmd0aDtiZSsrKWxlLnB1c2gocGVbYmVdKTtyZXR1cm4gbGV9ZnVuY3Rpb24gbWUocGUpe3ZhciBsZT17fTtmb3IodmFyIGJlIGluIHBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwZSxiZSkmJihsZVtiZV09cGVbYmVdKTtyZXR1cm4gbGV9'@; put 'ZnVuY3Rpb24gQ2UocGUsbGUpe2Zvcih2YXIgYmU9MDtiZTxwZS5sZW5ndGg7YmUrKyl7dmFyIE9lPXBlW2JlXTtpZihsZS5jYWxsKG51bGwsT2UpKXJldHVybiBPZX19ZnVuY3Rpb24ga2UocGUsbGUsYmUpe2Zvcih2YXIgT2U9QXJyYXkuaXNBcnJheShwZSksJGU9T2U/cGU6QShwZSksU3Q9'@; put 'T2U/W106cyhwZSksUXQ9YmUsRW49MDtFbjwkZS5sZW5ndGg7RW4rKylRdD1sZS5jYWxsKG51bGwsUXQsJGVbRW5dLE9lP0VuOlN0W0VuXSk7cmV0dXJuIFF0fWZ1bmN0aW9uIHFlKHBlKXtyZXR1cm4gWShwZSxmdW5jdGlvbihsZSl7cmV0dXJuIG51bGw9PWxlfSl9ZnVuY3Rpb24gWChwZSxs'@; put 'ZSl7dm9pZCAwPT09bGUmJihsZT1mdW5jdGlvbihPZSl7cmV0dXJuIE9lfSk7dmFyIGJlPVtdO3JldHVybiBrZShwZSxmdW5jdGlvbihPZSwkZSl7dmFyIFN0PWxlKCRlKTtyZXR1cm4gcShiZSxTdCk/T2U6KGJlLnB1c2goU3QpLE9lLmNvbmNhdCgkZSkpfSxbXSl9ZnVuY3Rpb24gYihwZSl7'@; put 'cmV0dXJuIEFycmF5LmlzQXJyYXkocGUpfWZ1bmN0aW9uIGsocGUpe3JldHVybiBwZSBpbnN0YW5jZW9mIFJlZ0V4cH1mdW5jdGlvbiBNKHBlKXtyZXR1cm4gcGUgaW5zdGFuY2VvZiBPYmplY3R9ZnVuY3Rpb24gQihwZSxsZSl7Zm9yKHZhciBiZT0wO2JlPHBlLmxlbmd0aDtiZSsrKWlmKCFs'@; put 'ZShwZVtiZV0sYmUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEsocGUsbGUpe3JldHVybiBZKHBlLGZ1bmN0aW9uKGJlKXtyZXR1cm4gcShsZSxiZSl9KX1mdW5jdGlvbiBHKHBlLGxlKXtmb3IodmFyIGJlPTA7YmU8cGUubGVuZ3RoO2JlKyspaWYobGUocGVbYmVdKSlyZXR1cm4hMDty'@; put 'ZXR1cm4hMX1mdW5jdGlvbiB1ZShwZSl7Zm9yKHZhciBsZT1bXSxiZT0xO2JlPGFyZ3VtZW50cy5sZW5ndGg7YmUrKylsZVtiZS0xXT1hcmd1bWVudHNbYmVdO2Zvcih2YXIgT2U9MDtPZTxsZS5sZW5ndGg7T2UrKylmb3IodmFyICRlPWxlW09lXSxTdD1zKCRlKSxRdD0wO1F0PFN0Lmxlbmd0'@; put 'aDtRdCsrKXt2YXIgRW49U3RbUXRdO3BlW0VuXT0kZVtFbl19cmV0dXJuIHBlfWZ1bmN0aW9uIG5lKHBlKXtmb3IodmFyIGxlPVtdLGJlPTE7YmU8YXJndW1lbnRzLmxlbmd0aDtiZSsrKWxlW2JlLTFdPWFyZ3VtZW50c1tiZV07Zm9yKHZhciBPZT0wO09lPGxlLmxlbmd0aDtPZSsrKXt2YXIg'@; put 'JGU9bGVbT2VdO2lmKCFVKCRlKSlmb3IodmFyIFN0PXMoJGUpLFF0PTA7UXQ8U3QubGVuZ3RoO1F0Kyspe3ZhciBFbj1TdFtRdF07VyhwZSxFbil8fChwZVtFbl09JGVbRW5dKX19cmV0dXJuIHBlfWZ1bmN0aW9uIF9lKCl7Zm9yKHZhciBwZT1bXSxsZT0wO2xlPGFyZ3VtZW50cy5sZW5ndGg7'@; put 'bGUrKylwZVtsZV09YXJndW1lbnRzW2xlXTtyZXR1cm4gbmUuYXBwbHkobnVsbCxbe31dLmNvbmNhdChwZSkpfWZ1bmN0aW9uIFBlKHBlLGxlKXt2YXIgYmU9e307cmV0dXJuIFIocGUsZnVuY3Rpb24oT2Upe3ZhciAkZT1sZShPZSksU3Q9YmVbJGVdO1N0P1N0LnB1c2goT2UpOmJlWyRlXT1b'@; put 'T2VdfSksYmV9ZnVuY3Rpb24gb3QocGUsbGUpe2Zvcih2YXIgYmU9bWUocGUpLE9lPXMobGUpLCRlPTA7JGU8T2UubGVuZ3RoOyRlKyspe3ZhciBTdD1PZVskZV07YmVbU3RdPWxlW1N0XX1yZXR1cm4gYmV9ZnVuY3Rpb24gbHQoKXt9ZnVuY3Rpb24gZHQocGUpe3JldHVybiBwZX1mdW5jdGlv'@; put 'biBhZShwZSl7Y29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcigiRXJyb3I6ICIrcGUpfWZ1bmN0aW9uIHhlKHBlKXtjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiV2FybmluZzogIitwZSl9ZnVuY3Rpb24gamUoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl'@; put 'b2YgTWFwfWZ1bmN0aW9uIERlKHBlKXtmdW5jdGlvbiBsZSgpe31sZS5wcm90b3R5cGU9cGU7dmFyIGJlPW5ldyBsZTtmdW5jdGlvbiBPZSgpe3JldHVybiB0eXBlb2YgYmUuYmFyfXJldHVybiBPZSgpLE9lKCkscGV9ZnVuY3Rpb24gRmUocGUpe3JldHVybiBwZVtwZS5sZW5ndGgtMV19ZnVu'@; put 'Y3Rpb24gZ2UocGUpe3ZhciBsZT0obmV3IERhdGUpLmdldFRpbWUoKSxiZT1wZSgpO3JldHVybnt0aW1lOihuZXcgRGF0ZSkuZ2V0VGltZSgpLWxlLHZhbHVlOmJlfX12YXIgY2U9aCg1MzkxNiksaGU9e30sd2U9bmV3IGNlLlJlZ0V4cFBhcnNlcjtmdW5jdGlvbiBKZShwZSl7dmFyIGxlPXBl'@; put 'LnRvU3RyaW5nKCk7aWYoaGUuaGFzT3duUHJvcGVydHkobGUpKXJldHVybiBoZVtsZV07dmFyIGJlPXdlLnBhdHRlcm4obGUpO3JldHVybiBoZVtsZV09YmUsYmV9dmFyIEtlPWZ1bmN0aW9uKCl7dmFyIHBlPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4ocGU9T2JqZWN0LnNldFByb3RvdHlwZU9m'@; put 'fHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE9lLCRlKXtPZS5fX3Byb3RvX189JGV9fHxmdW5jdGlvbihPZSwkZSl7Zm9yKHZhciBTdCBpbiAkZSkkZS5oYXNPd25Qcm9wZXJ0eShTdCkmJihPZVtTdF09JGVbU3RdKX0pKGxlLGJlKX07cmV0dXJuIGZ1bmN0aW9u'@; put 'KGxlLGJlKXtmdW5jdGlvbiBPZSgpe3RoaXMuY29uc3RydWN0b3I9bGV9cGUobGUsYmUpLGxlLnByb3RvdHlwZT1udWxsPT09YmU/T2JqZWN0LmNyZWF0ZShiZSk6KE9lLnByb3RvdHlwZT1iZS5wcm90b3R5cGUsbmV3IE9lKX19KCksJHQ9IkNvbXBsZW1lbnQgU2V0cyBhcmUgbm90IHN1cHBv'@; put 'cnRlZCBmb3IgZmlyc3QgY2hhciBvcHRpbWl6YXRpb24iLFJ0PSdVbmFibGUgdG8gdXNlICJmaXJzdCBjaGFyIiBsZXhlciBvcHRpbWl6YXRpb25zOlxuJztmdW5jdGlvbiBMdChwZSxsZSl7dm9pZCAwPT09bGUmJihsZT0hMSk7dHJ5e3ZhciBiZT1KZShwZSk7cmV0dXJuIEd0KGJlLnZhbHVl'@; put 'LHt9LGJlLmZsYWdzLmlnbm9yZUNhc2UpfWNhdGNoKFN0KXtpZihTdC5tZXNzYWdlPT09JHQpbGUmJnhlKFJ0KyJcdFVuYWJsZSB0byBvcHRpbWl6ZTogPCAiK3BlLnRvU3RyaW5nKCkrIiA+XG5cdENvbXBsZW1lbnQgU2V0cyBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBvcHRpbWl6ZWQuXG5c'@; put 'dFRoaXMgd2lsbCBkaXNhYmxlIHRoZSBsZXhlcidzIGZpcnN0IGNoYXIgb3B0aW1pemF0aW9ucy5cblx0U2VlOiBodHRwczovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL3Jlc29sdmluZ19sZXhlcl9lcnJvcnMuaHRtbCNDT01QTEVNRU5UIGZvciBkZXRhaWxzLiIpO2Vs'@; put 'c2V7dmFyICRlPSIiO2xlJiYoJGU9IlxuXHRUaGlzIHdpbGwgZGlzYWJsZSB0aGUgbGV4ZXIncyBmaXJzdCBjaGFyIG9wdGltaXphdGlvbnMuXG5cdFNlZTogaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2NoZXZyb3RhaW4vZG9jcy9ndWlkZS9yZXNvbHZpbmdfbGV4ZXJfZXJyb3JzLmh0bWwjUkVH'@; put 'RVhQX1BBUlNJTkcgZm9yIGRldGFpbHMuIiksYWUoUnQrIlxuXHRGYWlsZWQgcGFyc2luZzogPCAiK3BlLnRvU3RyaW5nKCkrIiA+XG5cdFVzaW5nIHRoZSByZWdleHAtdG8tYXN0IGxpYnJhcnkgdmVyc2lvbjogIitjZS5WRVJTSU9OKyJcblx0UGxlYXNlIG9wZW4gYW4gaXNzdWUgYXQ6IGh0'@; put 'dHBzOi8vZ2l0aHViLmNvbS9iZDgyL3JlZ2V4cC10by1hc3QvaXNzdWVzIiskZSl9fXJldHVybltdfWZ1bmN0aW9uIEd0KHBlLGxlLGJlKXtzd2l0Y2gocGUudHlwZSl7Y2FzZSJEaXNqdW5jdGlvbiI6Zm9yKHZhciBPZT0wO09lPHBlLnZhbHVlLmxlbmd0aDtPZSsrKUd0KHBlLnZhbHVlW09l'@; put 'XSxsZSxiZSk7YnJlYWs7Y2FzZSJBbHRlcm5hdGl2ZSI6dmFyICRlPXBlLnZhbHVlO2ZvcihPZT0wO09lPCRlLmxlbmd0aDtPZSsrKXt2YXIgU3Q9JGVbT2VdO3N3aXRjaChTdC50eXBlKXtjYXNlIkVuZEFuY2hvciI6Y2FzZSJHcm91cEJhY2tSZWZlcmVuY2UiOmNhc2UiTG9va2FoZWFkIjpj'@; put 'YXNlIk5lZ2F0aXZlTG9va2FoZWFkIjpjYXNlIlN0YXJ0QW5jaG9yIjpjYXNlIldvcmRCb3VuZGFyeSI6Y2FzZSJOb25Xb3JkQm91bmRhcnkiOmNvbnRpbnVlfXZhciBRdD1TdDtzd2l0Y2goUXQudHlwZSl7Y2FzZSJDaGFyYWN0ZXIiOmd0KFF0LnZhbHVlLGxlLGJlKTticmVhaztjYXNlIlNl'@; put 'dCI6aWYoITA9PT1RdC5jb21wbGVtZW50KXRocm93IEVycm9yKCR0KTtSKFF0LnZhbHVlLGZ1bmN0aW9uKFVyKXtpZigibnVtYmVyIj09dHlwZW9mIFVyKWd0KFVyLGxlLGJlKTtlbHNle3ZhciBwaT1VcjtpZighMD09PWJlKWZvcih2YXIgRHI9cGkuZnJvbTtEcjw9cGkudG87RHIrKylndChE'@; put 'cixsZSxiZSk7ZWxzZXtmb3IoRHI9cGkuZnJvbTtEcjw9cGkudG8mJkRyPGhvO0RyKyspZ3QoRHIsbGUsYmUpO2lmKHBpLnRvPj1obylmb3IodmFyIHhvPXBpLnRvLFlpPU1hKHBpLmZyb20+PWhvP3BpLmZyb206aG8pLGRzPU1hKHhvKSxQcz1ZaTtQczw9ZHM7UHMrKylsZVtQc109UHN9fX0p'@; put 'O2JyZWFrO2Nhc2UiR3JvdXAiOkd0KFF0LnZhbHVlLGxlLGJlKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJOb24gRXhoYXVzdGl2ZSBNYXRjaCIpfXZhciBFbj12b2lkIDAhPT1RdC5xdWFudGlmaWVyJiYwPT09UXQucXVhbnRpZmllci5hdExlYXN0O2lmKCJHcm91cCI9PT1RdC50eXBl'@; put 'JiYhMT09PWxuKFF0KXx8Ikdyb3VwIiE9PVF0LnR5cGUmJiExPT09RW4pYnJlYWt9YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2ghIil9cmV0dXJuIEEobGUpfWZ1bmN0aW9uIGd0KHBlLGxlLGJlKXt2YXIgT2U9TWEocGUpO2xlW09lXT1PZSwhMD09PWJl'@; put 'JiZmdW5jdGlvbiBYdChwZSxsZSl7dmFyIGJlPVN0cmluZy5mcm9tQ2hhckNvZGUocGUpLE9lPWJlLnRvVXBwZXJDYXNlKCk7aWYoT2UhPT1iZSlsZVskZT1NYShPZS5jaGFyQ29kZUF0KDApKV09JGU7ZWxzZXt2YXIgJGUsU3Q9YmUudG9Mb3dlckNhc2UoKTtTdCE9PWJlJiYobGVbJGU9TWEo'@; put 'U3QuY2hhckNvZGVBdCgwKSldPSRlKX19KHBlLGxlKX1mdW5jdGlvbiBMcihwZSxsZSl7cmV0dXJuIENlKHBlLnZhbHVlLGZ1bmN0aW9uKGJlKXtpZigibnVtYmVyIj09dHlwZW9mIGJlKXJldHVybiBxKGxlLGJlKTt2YXIgT2U9YmU7cmV0dXJuIHZvaWQgMCE9PUNlKGxlLGZ1bmN0aW9uKCRl'@; put 'KXtyZXR1cm4gT2UuZnJvbTw9JGUmJiRlPD1PZS50b30pfSl9ZnVuY3Rpb24gbG4ocGUpe3JldHVybiEoIXBlLnF1YW50aWZpZXJ8fDAhPT1wZS5xdWFudGlmaWVyLmF0TGVhc3QpfHwhIXBlLnZhbHVlJiYoYihwZS52YWx1ZSk/QihwZS52YWx1ZSxsbik6bG4ocGUudmFsdWUpKX12YXIgT249'@; put 'ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKGJlKXt2YXIgT2U9cGUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gT2UudGFyZ2V0Q2hhckNvZGVzPWJlLE9lLmZvdW5kPSExLE9lfXJldHVybiBLZShsZSxwZSksbGUucHJvdG90eXBlLnZpc2l0Q2hpbGRyZW49ZnVuY3Rpb24oYmUpe2lmKCEwIT09'@; put 'dGhpcy5mb3VuZCl7c3dpdGNoKGJlLnR5cGUpe2Nhc2UiTG9va2FoZWFkIjpyZXR1cm4gdm9pZCB0aGlzLnZpc2l0TG9va2FoZWFkKGJlKTtjYXNlIk5lZ2F0aXZlTG9va2FoZWFkIjpyZXR1cm4gdm9pZCB0aGlzLnZpc2l0TmVnYXRpdmVMb29rYWhlYWQoYmUpfXBlLnByb3RvdHlwZS52aXNp'@; put 'dENoaWxkcmVuLmNhbGwodGhpcyxiZSl9fSxsZS5wcm90b3R5cGUudmlzaXRDaGFyYWN0ZXI9ZnVuY3Rpb24oYmUpe3EodGhpcy50YXJnZXRDaGFyQ29kZXMsYmUudmFsdWUpJiYodGhpcy5mb3VuZD0hMCl9LGxlLnByb3RvdHlwZS52aXNpdFNldD1mdW5jdGlvbihiZSl7YmUuY29tcGxlbWVu'@; put 'dD92b2lkIDA9PT1McihiZSx0aGlzLnRhcmdldENoYXJDb2RlcykmJih0aGlzLmZvdW5kPSEwKTp2b2lkIDAhPT1McihiZSx0aGlzLnRhcmdldENoYXJDb2RlcykmJih0aGlzLmZvdW5kPSEwKX0sbGV9KGNlLkJhc2VSZWdFeHBWaXNpdG9yKTtmdW5jdGlvbiBRcihwZSxsZSl7aWYobGUgaW5z'@; put 'dGFuY2VvZiBSZWdFeHApe3ZhciBiZT1KZShsZSksT2U9bmV3IE9uKHBlKTtyZXR1cm4gT2UudmlzaXQoYmUpLE9lLmZvdW5kfXJldHVybiB2b2lkIDAhPT1DZShsZSxmdW5jdGlvbigkZSl7cmV0dXJuIHEocGUsJGUuY2hhckNvZGVBdCgwKSl9KX12YXIgdHI9ZnVuY3Rpb24oKXt2YXIgcGU9'@; put 'ZnVuY3Rpb24obGUsYmUpe3JldHVybihwZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oT2UsJGUpe09lLl9fcHJvdG9fXz0kZX18fGZ1bmN0aW9uKE9lLCRlKXtmb3IodmFyIFN0IGluICRlKSRlLmhhc093blByb3BlcnR5'@; put 'KFN0KSYmKE9lW1N0XT0kZVtTdF0pfSkobGUsYmUpfTtyZXR1cm4gZnVuY3Rpb24obGUsYmUpe2Z1bmN0aW9uIE9lKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sZX1wZShsZSxiZSksbGUucHJvdG90eXBlPW51bGw9PT1iZT9PYmplY3QuY3JlYXRlKGJlKTooT2UucHJvdG90eXBlPWJlLnByb3RvdHlw'@; put 'ZSxuZXcgT2UpfX0oKSxIbj0iUEFUVEVSTiIsT289ImRlZmF1bHRNb2RlIix1cj0ibW9kZXMiLFpuPSJib29sZWFuIj09dHlwZW9mIG5ldyBSZWdFeHAoIig/OikiKS5zdGlja3k7dmFyIHB0PS9bXlxcXVtcJF0vLEdlPS9bXlxcW11bXF5dfF5cXi87ZnVuY3Rpb24gcnIocGUpe3JldHVybiBu'@; put 'ZXcgUmVnRXhwKCJeKD86IitwZS5zb3VyY2UrIikiLHBlLmlnbm9yZUNhc2U/ImkiOiIiKX1mdW5jdGlvbiBocihwZSl7cmV0dXJuIG5ldyBSZWdFeHAoIiIrcGUuc291cmNlLHBlLmlnbm9yZUNhc2U/Iml5IjoieSIpfWZ1bmN0aW9uIGphKHBlKXt2YXIgbGU9cGUuUEFUVEVSTjtpZihrKGxl'@; put 'KSlyZXR1cm4hMTtpZihIKGxlKSlyZXR1cm4hMDtpZihXKGxlLCJleGVjIikpcmV0dXJuITA7aWYoeChsZSkpcmV0dXJuITE7dGhyb3cgRXJyb3IoIm5vbiBleGhhdXN0aXZlIG1hdGNoIil9ZnVuY3Rpb24gam8ocGUpe3JldHVybiEoIXgocGUpfHwxIT09cGUubGVuZ3RoKSYmcGUuY2hhckNv'@; put 'ZGVBdCgwKX12YXIgWHI9e3Rlc3Q6ZnVuY3Rpb24ocGUpe2Zvcih2YXIgbGU9cGUubGVuZ3RoLGJlPXRoaXMubGFzdEluZGV4O2JlPGxlO2JlKyspe3ZhciBPZT1wZS5jaGFyQ29kZUF0KGJlKTtpZigxMD09PU9lKXJldHVybiB0aGlzLmxhc3RJbmRleD1iZSsxLCEwO2lmKDEzPT09T2UpcmV0'@; put 'dXJuIHRoaXMubGFzdEluZGV4PTEwPT09cGUuY2hhckNvZGVBdChiZSsxKT9iZSsyOmJlKzEsITB9cmV0dXJuITF9LGxhc3RJbmRleDowfTtmdW5jdGlvbiBlYShwZSxsZSl7aWYoVyhwZSwiTElORV9CUkVBS1MiKSlyZXR1cm4hMTtpZihrKHBlLlBBVFRFUk4pKXt0cnl7UXIobGUscGUuUEFU'@; put 'VEVSTil9Y2F0Y2goYmUpe3JldHVybntpc3N1ZTpScy5JREVOVElGWV9URVJNSU5BVE9SLGVyck1zZzpiZS5tZXNzYWdlfX1yZXR1cm4hMX1pZih4KHBlLlBBVFRFUk4pKXJldHVybiExO2lmKGphKHBlKSlyZXR1cm57aXNzdWU6UnMuQ1VTVE9NX0xJTkVfQlJFQUt9O3Rocm93IEVycm9yKCJu'@; put 'b24gZXhoYXVzdGl2ZSBtYXRjaCIpfWZ1bmN0aW9uIGNhKHBlKXtyZXR1cm4gQyhwZSxmdW5jdGlvbihiZSl7cmV0dXJuIHgoYmUpJiZiZS5sZW5ndGg+MD9iZS5jaGFyQ29kZUF0KDApOmJlfSl9ZnVuY3Rpb24gQ2kocGUsbGUsYmUpe3ZvaWQgMD09PXBlW2xlXT9wZVtsZV09W2JlXTpwZVts'@; put 'ZV0ucHVzaChiZSl9dmFyIGhvPTI1NjtmdW5jdGlvbiBNYShwZSl7cmV0dXJuIHBlPGhvP3BlOmtzW3BlXX12YXIga3M9W107ZnVuY3Rpb24gdGEocGUsbGUpe3ZhciBiZT1wZS50b2tlblR5cGVJZHg7cmV0dXJuIGJlPT09bGUudG9rZW5UeXBlSWR4fHwhMD09PWxlLmlzUGFyZW50JiYhMD09'@; put 'PWxlLmNhdGVnb3J5TWF0Y2hlc01hcFtiZV19ZnVuY3Rpb24gTXIocGUsbGUpe3JldHVybiBwZS50b2tlblR5cGVJZHg9PT1sZS50b2tlblR5cGVJZHh9dmFyIEZzPTEsJGk9e307ZnVuY3Rpb24gX3MocGUpe3ZhciBsZT1mdW5jdGlvbiBqcyhwZSl7Zm9yKHZhciBsZT1yZShwZSksYmU9cGUs'@; put 'T2U9ITA7T2U7KXt2YXIgJGU9SyhiZT1xZSh3KEMoYmUsZnVuY3Rpb24oU3Qpe3JldHVybiBTdC5DQVRFR09SSUVTfSkpKSxsZSk7bGU9bGUuY29uY2F0KCRlKSxjKCRlKT9PZT0hMTpiZT0kZX1yZXR1cm4gbGV9KHBlKTsoZnVuY3Rpb24gQ2wocGUpe1IocGUsZnVuY3Rpb24obGUpe2RjKGxl'@; put 'KXx8KCRpW0ZzXT1sZSxsZS50b2tlblR5cGVJZHg9RnMrKyksSWwobGUpJiYhYihsZS5DQVRFR09SSUVTKSYmKGxlLkNBVEVHT1JJRVM9W2xlLkNBVEVHT1JJRVNdKSxJbChsZSl8fChsZS5DQVRFR09SSUVTPVtdKSxmdW5jdGlvbiBnMihwZSl7cmV0dXJuIFcocGUsImNhdGVnb3J5TWF0Y2hl'@; put 'cyIpfShsZSl8fChsZS5jYXRlZ29yeU1hdGNoZXM9W10pLGZ1bmN0aW9uIExjKHBlKXtyZXR1cm4gVyhwZSwiY2F0ZWdvcnlNYXRjaGVzTWFwIil9KGxlKXx8KGxlLmNhdGVnb3J5TWF0Y2hlc01hcD17fSl9KX0pKGxlKSxmdW5jdGlvbiBXbihwZSl7UihwZSxmdW5jdGlvbihsZSl7UWgoW10s'@; put 'bGUpfSl9KGxlKSxmdW5jdGlvbiBUaShwZSl7UihwZSxmdW5jdGlvbihsZSl7bGUuY2F0ZWdvcnlNYXRjaGVzPVtdLFIobGUuY2F0ZWdvcnlNYXRjaGVzTWFwLGZ1bmN0aW9uKGJlLE9lKXtsZS5jYXRlZ29yeU1hdGNoZXMucHVzaCgkaVtPZV0udG9rZW5UeXBlSWR4KX0pfSl9KGxlKSxSKGxl'@; put 'LGZ1bmN0aW9uKGJlKXtiZS5pc1BhcmVudD1iZS5jYXRlZ29yeU1hdGNoZXMubGVuZ3RoPjB9KX1mdW5jdGlvbiBRaChwZSxsZSl7UihwZSxmdW5jdGlvbihiZSl7bGUuY2F0ZWdvcnlNYXRjaGVzTWFwW2JlLnRva2VuVHlwZUlkeF09ITB9KSxSKGxlLkNBVEVHT1JJRVMsZnVuY3Rpb24oYmUp'@; put 'e3ZhciBPZT1wZS5jb25jYXQobGUpO3EoT2UsYmUpfHxRaChPZSxiZSl9KX1mdW5jdGlvbiBkYyhwZSl7cmV0dXJuIFcocGUsInRva2VuVHlwZUlkeCIpfWZ1bmN0aW9uIElsKHBlKXtyZXR1cm4gVyhwZSwiQ0FURUdPUklFUyIpfWZ1bmN0aW9uIFVzKHBlKXtyZXR1cm4gVyhwZSwidG9rZW5U'@; put 'eXBlSWR4Iil9dmFyIHNwPXtidWlsZFVuYWJsZVRvUG9wTGV4ZXJNb2RlTWVzc2FnZTpmdW5jdGlvbihwZSl7cmV0dXJuIlVuYWJsZSB0byBwb3AgTGV4ZXIgTW9kZSBhZnRlciBlbmNvdW50ZXJpbmcgVG9rZW4gLT4iK3BlLmltYWdlKyI8LSBUaGUgTW9kZSBTdGFjayBpcyBlbXB0eSJ9LGJ1'@; put 'aWxkVW5leHBlY3RlZENoYXJhY3RlcnNNZXNzYWdlOmZ1bmN0aW9uKHBlLGxlLGJlLE9lLCRlKXtyZXR1cm4idW5leHBlY3RlZCBjaGFyYWN0ZXI6IC0+IitwZS5jaGFyQXQobGUpKyI8LSBhdCBvZmZzZXQ6ICIrbGUrIiwgc2tpcHBlZCAiK2JlKyIgY2hhcmFjdGVycy4ifX0sUnM9ZnVuY3Rp'@; put 'b24ocGUpe3JldHVybiBwZVtwZS5NSVNTSU5HX1BBVFRFUk49MF09Ik1JU1NJTkdfUEFUVEVSTiIscGVbcGUuSU5WQUxJRF9QQVRURVJOPTFdPSJJTlZBTElEX1BBVFRFUk4iLHBlW3BlLkVPSV9BTkNIT1JfRk9VTkQ9Ml09IkVPSV9BTkNIT1JfRk9VTkQiLHBlW3BlLlVOU1VQUE9SVEVEX0ZM'@; put 'QUdTX0ZPVU5EPTNdPSJVTlNVUFBPUlRFRF9GTEFHU19GT1VORCIscGVbcGUuRFVQTElDQVRFX1BBVFRFUk5TX0ZPVU5EPTRdPSJEVVBMSUNBVEVfUEFUVEVSTlNfRk9VTkQiLHBlW3BlLklOVkFMSURfR1JPVVBfVFlQRV9GT1VORD01XT0iSU5WQUxJRF9HUk9VUF9UWVBFX0ZPVU5EIixwZVtw'@; put 'ZS5QVVNIX01PREVfRE9FU19OT1RfRVhJU1Q9Nl09IlBVU0hfTU9ERV9ET0VTX05PVF9FWElTVCIscGVbcGUuTVVMVElfTU9ERV9MRVhFUl9XSVRIT1VUX0RFRkFVTFRfTU9ERT03XT0iTVVMVElfTU9ERV9MRVhFUl9XSVRIT1VUX0RFRkFVTFRfTU9ERSIscGVbcGUuTVVMVElfTU9ERV9MRVhF'@; put 'Ul9XSVRIT1VUX01PREVTX1BST1BFUlRZPThdPSJNVUxUSV9NT0RFX0xFWEVSX1dJVEhPVVRfTU9ERVNfUFJPUEVSVFkiLHBlW3BlLk1VTFRJX01PREVfTEVYRVJfREVGQVVMVF9NT0RFX1ZBTFVFX0RPRVNfTk9UX0VYSVNUPTldPSJNVUxUSV9NT0RFX0xFWEVSX0RFRkFVTFRfTU9ERV9WQUxV'@; put 'RV9ET0VTX05PVF9FWElTVCIscGVbcGUuTEVYRVJfREVGSU5JVElPTl9DQU5OT1RfQ09OVEFJTl9VTkRFRklORUQ9MTBdPSJMRVhFUl9ERUZJTklUSU9OX0NBTk5PVF9DT05UQUlOX1VOREVGSU5FRCIscGVbcGUuU09JX0FOQ0hPUl9GT1VORD0xMV09IlNPSV9BTkNIT1JfRk9VTkQiLHBlW3Bl'@; put 'LkVNUFRZX01BVENIX1BBVFRFUk49MTJdPSJFTVBUWV9NQVRDSF9QQVRURVJOIixwZVtwZS5OT19MSU5FX0JSRUFLU19GTEFHUz0xM109Ik5PX0xJTkVfQlJFQUtTX0ZMQUdTIixwZVtwZS5VTlJFQUNIQUJMRV9QQVRURVJOPTE0XT0iVU5SRUFDSEFCTEVfUEFUVEVSTiIscGVbcGUuSURFTlRJ'@; put 'RllfVEVSTUlOQVRPUj0xNV09IklERU5USUZZX1RFUk1JTkFUT1IiLHBlW3BlLkNVU1RPTV9MSU5FX0JSRUFLPTE2XT0iQ1VTVE9NX0xJTkVfQlJFQUsiLHBlfShSc3x8e30pLEwwPXtkZWZlckRlZmluaXRpb25FcnJvcnNIYW5kbGluZzohMSxwb3NpdGlvblRyYWNraW5nOiJmdWxsIixsaW5l'@; put 'VGVybWluYXRvcnNQYXR0ZXJuOi9cbnxcclxuPy9nLGxpbmVUZXJtaW5hdG9yQ2hhcmFjdGVyczpbIlxuIiwiXHIiXSxlbnN1cmVPcHRpbWl6YXRpb25zOiExLHNhZmVNb2RlOiExLGVycm9yTWVzc2FnZVByb3ZpZGVyOnNwLHRyYWNlSW5pdFBlcmY6ITEsc2tpcFZhbGlkYXRpb25zOiExfTtP'@; put 'YmplY3QuZnJlZXplKEwwKTt2YXIgSnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZShsZSxiZSl7dmFyIE9lPXRoaXM7aWYodm9pZCAwPT09YmUmJihiZT1MMCksdGhpcy5sZXhlckRlZmluaXRpb249bGUsdGhpcy5sZXhlckRlZmluaXRpb25FcnJvcnM9W10sdGhpcy5sZXhlckRlZmluaXRpb25X'@; put 'YXJuaW5nPVtdLHRoaXMucGF0dGVybklkeFRvQ29uZmlnPXt9LHRoaXMuY2hhckNvZGVUb1BhdHRlcm5JZHhUb0NvbmZpZz17fSx0aGlzLm1vZGVzPVtdLHRoaXMuZW1wdHlHcm91cHM9e30sdGhpcy5jb25maWc9dm9pZCAwLHRoaXMudHJhY2tTdGFydExpbmVzPSEwLHRoaXMudHJhY2tFbmRM'@; put 'aW5lcz0hMCx0aGlzLmhhc0N1c3RvbT0hMSx0aGlzLmNhbk1vZGVCZU9wdGltaXplZD17fSwiYm9vbGVhbiI9PXR5cGVvZiBiZSl0aHJvdyBFcnJvcigiVGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgTGV4ZXIgY29uc3RydWN0b3IgaXMgbm93IGFuIElMZXhlckNvbmZpZyBPYmplY3QuXG5h'@; put 'IGJvb2xlYW4gMm5kIGFyZ3VtZW50IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0aGlzLmNvbmZpZz1vdChMMCxiZSk7dmFyICRlPXRoaXMuY29uZmlnLnRyYWNlSW5pdFBlcmY7ITA9PT0kZT8odGhpcy50cmFjZUluaXRNYXhJZGVudD0xLzAsdGhpcy50cmFjZUluaXRQZXJmPSEwKToibnVt'@; put 'YmVyIj09dHlwZW9mICRlJiYodGhpcy50cmFjZUluaXRNYXhJZGVudD0kZSx0aGlzLnRyYWNlSW5pdFBlcmY9ITApLHRoaXMudHJhY2VJbml0SW5kZW50PS0xLHRoaXMuVFJBQ0VfSU5JVCgiTGV4ZXIgQ29uc3RydWN0b3IiLGZ1bmN0aW9uKCl7dmFyIFN0LFF0PSEwO09lLlRSQUNFX0lOSVQo'@; put 'IkxleGVyIENvbmZpZyBoYW5kbGluZyIsZnVuY3Rpb24oKXtpZihPZS5jb25maWcubGluZVRlcm1pbmF0b3JzUGF0dGVybj09PUwwLmxpbmVUZXJtaW5hdG9yc1BhdHRlcm4pT2UuY29uZmlnLmxpbmVUZXJtaW5hdG9yc1BhdHRlcm49WHI7ZWxzZSBpZihPZS5jb25maWcubGluZVRlcm1pbmF0'@; put 'b3JDaGFyYWN0ZXJzPT09TDAubGluZVRlcm1pbmF0b3JDaGFyYWN0ZXJzKXRocm93IEVycm9yKCJFcnJvcjogTWlzc2luZyA8bGluZVRlcm1pbmF0b3JDaGFyYWN0ZXJzPiBwcm9wZXJ0eSBvbiB0aGUgTGV4ZXIgY29uZmlnLlxuXHRGb3IgZGV0YWlscyBTZWU6IGh0dHBzOi8vc2FwLmdpdGh1'@; put 'Yi5pby9jaGV2cm90YWluL2RvY3MvZ3VpZGUvcmVzb2x2aW5nX2xleGVyX2Vycm9ycy5odG1sI01JU1NJTkdfTElORV9URVJNX0NIQVJTIik7aWYoYmUuc2FmZU1vZGUmJmJlLmVuc3VyZU9wdGltaXphdGlvbnMpdGhyb3cgRXJyb3IoJyJzYWZlTW9kZSIgYW5kICJlbnN1cmVPcHRpbWl6YXRp'@; put 'b25zIiBmbGFncyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLicpO09lLnRyYWNrU3RhcnRMaW5lcz0vZnVsbHxvbmx5U3RhcnQvaS50ZXN0KE9lLmNvbmZpZy5wb3NpdGlvblRyYWNraW5nKSxPZS50cmFja0VuZExpbmVzPS9mdWxsL2kudGVzdChPZS5jb25maWcucG9zaXRpb25UcmFja2luZyks'@; put 'YihsZSk/KChTdD17bW9kZXM6e319KS5tb2Rlc1tPb109cmUobGUpLFN0W09vXT1Pbyk6KFF0PSExLFN0PW1lKGxlKSl9KSwhMT09PU9lLmNvbmZpZy5za2lwVmFsaWRhdGlvbnMmJihPZS5UUkFDRV9JTklUKCJwZXJmb3JtUnVudGltZUNoZWNrcyIsZnVuY3Rpb24oKXtPZS5sZXhlckRlZmlu'@; put 'aXRpb25FcnJvcnM9T2UubGV4ZXJEZWZpbml0aW9uRXJyb3JzLmNvbmNhdChmdW5jdGlvbiBwbyhwZSl7dmFyIE9lPVtdO3JldHVybiBXKHBlLE9vKXx8T2UucHVzaCh7bWVzc2FnZToiQSBNdWx0aU1vZGUgTGV4ZXIgY2Fubm90IGJlIGluaXRpYWxpemVkIHdpdGhvdXQgYSA8IitPbysiPiBw'@; put 'cm9wZXJ0eSBpbiBpdHMgZGVmaW5pdGlvblxuIix0eXBlOlJzLk1VTFRJX01PREVfTEVYRVJfV0lUSE9VVF9ERUZBVUxUX01PREV9KSxXKHBlLHVyKXx8T2UucHVzaCh7bWVzc2FnZToiQSBNdWx0aU1vZGUgTGV4ZXIgY2Fubm90IGJlIGluaXRpYWxpemVkIHdpdGhvdXQgYSA8bW9kZXM+IHBy'@; put 'b3BlcnR5IGluIGl0cyBkZWZpbml0aW9uXG4iLHR5cGU6UnMuTVVMVElfTU9ERV9MRVhFUl9XSVRIT1VUX01PREVTX1BST1BFUlRZfSksVyhwZSx1cikmJlcocGUsT28pJiYhVyhwZS5tb2RlcyxwZS5kZWZhdWx0TW9kZSkmJk9lLnB1c2goe21lc3NhZ2U6IkEgTXVsdGlNb2RlIExleGVyIGNh'@; put 'bm5vdCBiZSBpbml0aWFsaXplZCB3aXRoIGEgIitPbysiOiA8IitwZS5kZWZhdWx0TW9kZSsiPndoaWNoIGRvZXMgbm90IGV4aXN0XG4iLHR5cGU6UnMuTVVMVElfTU9ERV9MRVhFUl9ERUZBVUxUX01PREVfVkFMVUVfRE9FU19OT1RfRVhJU1R9KSxXKHBlLHVyKSYmUihwZS5tb2RlcyxmdW5j'@; put 'dGlvbigkZSxTdCl7UigkZSxmdW5jdGlvbihRdCxFbil7VShRdCkmJk9lLnB1c2goe21lc3NhZ2U6IkEgTGV4ZXIgY2Fubm90IGJlIGluaXRpYWxpemVkIHVzaW5nIGFuIHVuZGVmaW5lZCBUb2tlbiBUeXBlLiBNb2RlOjwiK1N0KyI+IGF0IGluZGV4OiA8IitFbisiPlxuIix0eXBlOlJzLkxF'@; put 'WEVSX0RFRklOSVRJT05fQ0FOTk9UX0NPTlRBSU5fVU5ERUZJTkVEfSl9KX0pLE9lfShTdCkpfSksT2UuVFJBQ0VfSU5JVCgicGVyZm9ybVdhcm5pbmdSdW50aW1lQ2hlY2tzIixmdW5jdGlvbigpe09lLmxleGVyRGVmaW5pdGlvbldhcm5pbmc9T2UubGV4ZXJEZWZpbml0aW9uV2FybmluZy5j'@; put 'b25jYXQoZnVuY3Rpb24gdm4ocGUsbGUsYmUpe3ZhciBPZT1bXSwkZT0hMSxTdD1xZSh3KGZ1bmN0aW9uIHYocGUsbGUpe2Zvcih2YXIgYmU9W10sT2U9cyhwZSksJGU9MDskZTxPZS5sZW5ndGg7JGUrKyl7dmFyIFN0PU9lWyRlXTtiZS5wdXNoKGxlLmNhbGwobnVsbCxwZVtTdF0sU3QpKX1y'@; put 'ZXR1cm4gYmV9KHBlLm1vZGVzLGZ1bmN0aW9uKGNyKXtyZXR1cm4gY3J9KSkpLFF0PVkoU3QsZnVuY3Rpb24oY3Ipe3JldHVybiBjcltIbl09PT1KdS5OQX0pLEVuPWNhKGJlKTtyZXR1cm4gbGUmJlIoUXQsZnVuY3Rpb24oY3Ipe3ZhciBVcj1lYShjcixFbik7aWYoITEhPT1Vcil7dmFyIHBp'@; put 'PWZ1bmN0aW9uIHJhKHBlLGxlKXtpZihsZS5pc3N1ZT09PVJzLklERU5USUZZX1RFUk1JTkFUT1IpcmV0dXJuIldhcm5pbmc6IHVuYWJsZSB0byBpZGVudGlmeSBsaW5lIHRlcm1pbmF0b3IgdXNhZ2UgaW4gcGF0dGVybi5cblx0VGhlIHByb2JsZW0gaXMgaW4gdGhlIDwiK3BlLm5hbWUrIj4g'@; put 'VG9rZW4gVHlwZVxuXHQgUm9vdCBjYXVzZTogIitsZS5lcnJNc2crIi5cblx0Rm9yIGRldGFpbHMgU2VlOiBodHRwczovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL3Jlc29sdmluZ19sZXhlcl9lcnJvcnMuaHRtbCNJREVOVElGWV9URVJNSU5BVE9SIjtpZihsZS5pc3N1'@; put 'ZT09PVJzLkNVU1RPTV9MSU5FX0JSRUFLKXJldHVybiJXYXJuaW5nOiBBIEN1c3RvbSBUb2tlbiBQYXR0ZXJuIHNob3VsZCBzcGVjaWZ5IHRoZSA8bGluZV9icmVha3M+IG9wdGlvbi5cblx0VGhlIHByb2JsZW0gaXMgaW4gdGhlIDwiK3BlLm5hbWUrIj4gVG9rZW4gVHlwZVxuXHRGb3IgZGV0'@; put 'YWlscyBTZWU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9jaGV2cm90YWluL2RvY3MvZ3VpZGUvcmVzb2x2aW5nX2xleGVyX2Vycm9ycy5odG1sI0NVU1RPTV9MSU5FX0JSRUFLIjt0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKX0oY3IsVXIpO09lLnB1c2goe21lc3NhZ2U6cGks'@; put 'dHlwZTpVci5pc3N1ZSx0b2tlblR5cGU6Y3J9KX1lbHNlIFcoY3IsIkxJTkVfQlJFQUtTIik/ITA9PT1jci5MSU5FX0JSRUFLUyYmKCRlPSEwKTpRcihFbixjci5QQVRURVJOKSYmKCRlPSEwKX0pLGxlJiYhJGUmJk9lLnB1c2goe21lc3NhZ2U6Ildhcm5pbmc6IE5vIExJTkVfQlJFQUtTIEZv'@; put 'dW5kLlxuXHRUaGlzIExleGVyIGhhcyBiZWVuIGRlZmluZWQgdG8gdHJhY2sgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uLFxuXHRCdXQgbm9uZSBvZiB0aGUgVG9rZW4gVHlwZXMgY2FuIGJlIGlkZW50aWZpZWQgYXMgbWF0Y2hpbmcgYSBsaW5lIHRlcm1pbmF0b3IuXG5cdFNlZSBodHRw'@; put 'czovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL3Jlc29sdmluZ19sZXhlcl9lcnJvcnMuaHRtbCNMSU5FX0JSRUFLUyBcblx0Zm9yIGRldGFpbHMuIix0eXBlOlJzLk5PX0xJTkVfQlJFQUtTX0ZMQUdTfSksT2V9KFN0LE9lLnRyYWNrU3RhcnRMaW5lcyxPZS5jb25maWcu'@; put 'bGluZVRlcm1pbmF0b3JDaGFyYWN0ZXJzKSl9KSksU3QubW9kZXM9U3QubW9kZXM/U3QubW9kZXM6e30sUihTdC5tb2RlcyxmdW5jdGlvbihwaSxEcil7U3QubW9kZXNbRHJdPVkocGksZnVuY3Rpb24oSmkpe3JldHVybiBVKEppKX0pfSk7dmFyIEVuPXMoU3QubW9kZXMpO2lmKFIoU3QubW9k'@; put 'ZXMsZnVuY3Rpb24ocGksRHIpe09lLlRSQUNFX0lOSVQoIk1vZGU6IDwiK0RyKyI+IHByb2Nlc3NpbmciLGZ1bmN0aW9uKCl7dmFyIEppO09lLm1vZGVzLnB1c2goRHIpLCExPT09T2UuY29uZmlnLnNraXBWYWxpZGF0aW9ucyYmT2UuVFJBQ0VfSU5JVCgidmFsaWRhdGVQYXR0ZXJucyIsZnVu'@; put 'Y3Rpb24oKXtPZS5sZXhlckRlZmluaXRpb25FcnJvcnM9T2UubGV4ZXJEZWZpbml0aW9uRXJyb3JzLmNvbmNhdChmdW5jdGlvbiBBcihwZSxsZSl7dmFyIGJlPVtdLE9lPWZ1bmN0aW9uIFp0KHBlKXt2YXIgbGU9eihwZSxmdW5jdGlvbigkZSl7cmV0dXJuIVcoJGUsSG4pfSksYmU9QyhsZSxm'@; put 'dW5jdGlvbigkZSl7cmV0dXJue21lc3NhZ2U6IlRva2VuIFR5cGU6IC0+IiskZS5uYW1lKyI8LSBtaXNzaW5nIHN0YXRpYyAnUEFUVEVSTicgcHJvcGVydHkiLHR5cGU6UnMuTUlTU0lOR19QQVRURVJOLHRva2VuVHlwZXM6WyRlXX19KTtyZXR1cm57ZXJyb3JzOmJlLHZhbGlkOksocGUsbGUp'@; put 'fX0ocGUpO2JlPWJlLmNvbmNhdChPZS5lcnJvcnMpO3ZhciAkZT1mdW5jdGlvbiBObihwZSl7dmFyIGxlPXoocGUsZnVuY3Rpb24oJGUpe3ZhciBTdD0kZVtIbl07cmV0dXJuIShrKFN0KXx8SChTdCl8fFcoU3QsImV4ZWMiKXx8eChTdCkpfSksYmU9QyhsZSxmdW5jdGlvbigkZSl7cmV0dXJu'@; put 'e21lc3NhZ2U6IlRva2VuIFR5cGU6IC0+IiskZS5uYW1lKyI8LSBzdGF0aWMgJ1BBVFRFUk4nIGNhbiBvbmx5IGJlIGEgUmVnRXhwLCBhIEZ1bmN0aW9uIG1hdGNoaW5nIHRoZSB7Q3VzdG9tUGF0dGVybk1hdGNoZXJGdW5jfSB0eXBlIG9yIGFuIE9iamVjdCBtYXRjaGluZyB0aGUge0lDdXN0'@; put 'b21QYXR0ZXJufSBpbnRlcmZhY2UuIix0eXBlOlJzLklOVkFMSURfUEFUVEVSTix0b2tlblR5cGVzOlskZV19fSk7cmV0dXJue2Vycm9yczpiZSx2YWxpZDpLKHBlLGxlKX19KE9lLnZhbGlkKSxTdD0kZS52YWxpZDtyZXR1cm4gYmU9KGJlPWJlLmNvbmNhdCgkZS5lcnJvcnMpKS5jb25jYXQo'@; put 'ZnVuY3Rpb24gX24ocGUpe3ZhciBsZT1bXSxiZT16KHBlLGZ1bmN0aW9uKE9lKXtyZXR1cm4gayhPZVtIbl0pfSk7cmV0dXJuIGxlPWxlLmNvbmNhdChmdW5jdGlvbiBwbihwZSl7dmFyIGxlPWZ1bmN0aW9uKCRlKXtmdW5jdGlvbiBTdCgpe3ZhciBRdD1udWxsIT09JGUmJiRlLmFwcGx5KHRo'@; put 'aXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gUXQuZm91bmQ9ITEsUXR9cmV0dXJuIHRyKFN0LCRlKSxTdC5wcm90b3R5cGUudmlzaXRFbmRBbmNob3I9ZnVuY3Rpb24oUXQpe3RoaXMuZm91bmQ9ITB9LFN0fShjZS5CYXNlUmVnRXhwVmlzaXRvciksYmU9eihwZSxmdW5jdGlvbigkZSl7dmFy'@; put 'IFN0PSRlW0huXTt0cnl7dmFyIFF0PUplKFN0KSxFbj1uZXcgbGU7cmV0dXJuIEVuLnZpc2l0KFF0KSxFbi5mb3VuZH1jYXRjaHtyZXR1cm4gcHQudGVzdChTdC5zb3VyY2UpfX0pLE9lPUMoYmUsZnVuY3Rpb24oJGUpe3JldHVybnttZXNzYWdlOiJVbmV4cGVjdGVkIFJlZ0V4cCBBbmNob3Ig'@; put 'RXJyb3I6XG5cdFRva2VuIFR5cGU6IC0+IiskZS5uYW1lKyI8LSBzdGF0aWMgJ1BBVFRFUk4nIGNhbm5vdCBjb250YWluIGVuZCBvZiBpbnB1dCBhbmNob3IgJyQnXG5cdFNlZSBzYXAuZ2l0aHViLmlvL2NoZXZyb3RhaW4vZG9jcy9ndWlkZS9yZXNvbHZpbmdfbGV4ZXJfZXJyb3JzLmh0bWwj'@; put 'QU5DSE9SU1x0Zm9yIGRldGFpbHMuIix0eXBlOlJzLkVPSV9BTkNIT1JfRk9VTkQsdG9rZW5UeXBlczpbJGVdfX0pO3JldHVybiBPZX0oYmUpKSxsZT1sZS5jb25jYXQoZnVuY3Rpb24gVXQocGUpe3ZhciBsZT1mdW5jdGlvbigkZSl7ZnVuY3Rpb24gU3QoKXt2YXIgUXQ9bnVsbCE9PSRlJiYk'@; put 'ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIFF0LmZvdW5kPSExLFF0fXJldHVybiB0cihTdCwkZSksU3QucHJvdG90eXBlLnZpc2l0U3RhcnRBbmNob3I9ZnVuY3Rpb24oUXQpe3RoaXMuZm91bmQ9ITB9LFN0fShjZS5CYXNlUmVnRXhwVmlzaXRvciksYmU9eihwZSxmdW5j'@; put 'dGlvbigkZSl7dmFyIFN0PSRlW0huXTt0cnl7dmFyIFF0PUplKFN0KSxFbj1uZXcgbGU7cmV0dXJuIEVuLnZpc2l0KFF0KSxFbi5mb3VuZH1jYXRjaHtyZXR1cm4gR2UudGVzdChTdC5zb3VyY2UpfX0pLE9lPUMoYmUsZnVuY3Rpb24oJGUpe3JldHVybnttZXNzYWdlOiJVbmV4cGVjdGVkIFJl'@; put 'Z0V4cCBBbmNob3IgRXJyb3I6XG5cdFRva2VuIFR5cGU6IC0+IiskZS5uYW1lKyI8LSBzdGF0aWMgJ1BBVFRFUk4nIGNhbm5vdCBjb250YWluIHN0YXJ0IG9mIGlucHV0IGFuY2hvciAnXidcblx0U2VlIGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9jaGV2cm90YWluL2RvY3MvZ3VpZGUvcmVzb2x2'@; put 'aW5nX2xleGVyX2Vycm9ycy5odG1sI0FOQ0hPUlNcdGZvciBkZXRhaWxzLiIsdHlwZTpScy5TT0lfQU5DSE9SX0ZPVU5ELHRva2VuVHlwZXM6WyRlXX19KTtyZXR1cm4gT2V9KGJlKSksbGU9bGUuY29uY2F0KGZ1bmN0aW9uIHZyKHBlKXt2YXIgbGU9eihwZSxmdW5jdGlvbihPZSl7dmFyICRl'@; put 'PU9lW0huXTtyZXR1cm4gJGUgaW5zdGFuY2VvZiBSZWdFeHAmJigkZS5tdWx0aWxpbmV8fCRlLmdsb2JhbCl9KSxiZT1DKGxlLGZ1bmN0aW9uKE9lKXtyZXR1cm57bWVzc2FnZToiVG9rZW4gVHlwZTogLT4iK09lLm5hbWUrIjwtIHN0YXRpYyAnUEFUVEVSTicgbWF5IE5PVCBjb250YWluIGds'@; put 'b2JhbCgnZycpIG9yIG11bHRpbGluZSgnbScpIix0eXBlOlJzLlVOU1VQUE9SVEVEX0ZMQUdTX0ZPVU5ELHRva2VuVHlwZXM6W09lXX19KTtyZXR1cm4gYmV9KGJlKSksbGU9bGUuY29uY2F0KGZ1bmN0aW9uIHh0KHBlKXt2YXIgbGU9W10sYmU9QyhwZSxmdW5jdGlvbihTdCl7cmV0dXJuIGtl'@; put 'KHBlLGZ1bmN0aW9uKFF0LEVuKXtyZXR1cm4gU3QuUEFUVEVSTi5zb3VyY2U9PT1Fbi5QQVRURVJOLnNvdXJjZSYmIXEobGUsRW4pJiZFbi5QQVRURVJOIT09SnUuTkEmJihsZS5wdXNoKEVuKSxRdC5wdXNoKEVuKSksUXR9LFtdKX0pLE9lPXooYmU9cWUoYmUpLGZ1bmN0aW9uKFN0KXtyZXR1'@; put 'cm4gU3QubGVuZ3RoPjF9KSwkZT1DKE9lLGZ1bmN0aW9uKFN0KXt2YXIgUXQ9QyhTdCxmdW5jdGlvbihjcil7cmV0dXJuIGNyLm5hbWV9KTtyZXR1cm57bWVzc2FnZToiVGhlIHNhbWUgUmVnRXhwIHBhdHRlcm4gLT4iK1MoU3QpLlBBVFRFUk4rIjwtaGFzIGJlZW4gdXNlZCBpbiBhbGwgb2Yg'@; put 'dGhlIGZvbGxvd2luZyBUb2tlbiBUeXBlczogIitRdC5qb2luKCIsICIpKyIgPC0iLHR5cGU6UnMuRFVQTElDQVRFX1BBVFRFUk5TX0ZPVU5ELHRva2VuVHlwZXM6U3R9fSk7cmV0dXJuICRlfShiZSkpLGxlPWxlLmNvbmNhdChmdW5jdGlvbiBNaShwZSl7dmFyIGxlPXoocGUsZnVuY3Rpb24o'@; put 'T2Upe3JldHVybiBPZVtIbl0udGVzdCgiIil9KSxiZT1DKGxlLGZ1bmN0aW9uKE9lKXtyZXR1cm57bWVzc2FnZToiVG9rZW4gVHlwZTogLT4iK09lLm5hbWUrIjwtIHN0YXRpYyAnUEFUVEVSTicgbXVzdCBub3QgbWF0Y2ggYW4gZW1wdHkgc3RyaW5nIix0eXBlOlJzLkVNUFRZX01BVENIX1BB'@; put 'VFRFUk4sdG9rZW5UeXBlczpbT2VdfX0pO3JldHVybiBiZX0oYmUpKSxsZX0oU3QpKSxiZT1iZS5jb25jYXQoZnVuY3Rpb24gQnQocGUpe3ZhciBsZT16KHBlLGZ1bmN0aW9uKE9lKXtpZighVyhPZSwiR1JPVVAiKSlyZXR1cm4hMTt2YXIgJGU9T2UuR1JPVVA7cmV0dXJuICRlIT09SnUuU0tJ'@; put 'UFBFRCYmJGUhPT1KdS5OQSYmIXgoJGUpfSksYmU9QyhsZSxmdW5jdGlvbihPZSl7cmV0dXJue21lc3NhZ2U6IlRva2VuIFR5cGU6IC0+IitPZS5uYW1lKyI8LSBzdGF0aWMgJ0dST1VQJyBjYW4gb25seSBiZSBMZXhlci5TS0lQUEVEL0xleGVyLk5BL0EgU3RyaW5nIix0eXBlOlJzLklOVkFM'@; put 'SURfR1JPVVBfVFlQRV9GT1VORCx0b2tlblR5cGVzOltPZV19fSk7cmV0dXJuIGJlfShTdCkpLGJlPWJlLmNvbmNhdChmdW5jdGlvbiB6bihwZSxsZSl7dmFyIGJlPXoocGUsZnVuY3Rpb24oJGUpe3JldHVybiB2b2lkIDAhPT0kZS5QVVNIX01PREUmJiFxKGxlLCRlLlBVU0hfTU9ERSl9KSxP'@; put 'ZT1DKGJlLGZ1bmN0aW9uKCRlKXtyZXR1cm57bWVzc2FnZToiVG9rZW4gVHlwZTogLT4iKyRlLm5hbWUrIjwtIHN0YXRpYyAnUFVTSF9NT0RFJyB2YWx1ZSBjYW5ub3QgcmVmZXIgdG8gYSBMZXhlciBNb2RlIC0+IiskZS5QVVNIX01PREUrIjwtd2hpY2ggZG9lcyBub3QgZXhpc3QiLHR5cGU6'@; put 'UnMuUFVTSF9NT0RFX0RPRVNfTk9UX0VYSVNULHRva2VuVHlwZXM6WyRlXX19KTtyZXR1cm4gT2V9KFN0LGxlKSksYmU9YmUuY29uY2F0KGZ1bmN0aW9uIEduKHBlKXt2YXIgbGU9W10sYmU9a2UocGUsZnVuY3Rpb24oT2UsJGUsU3Qpe3ZhciBRdD0kZS5QQVRURVJOO3JldHVybiBRdD09PUp1'@; put 'Lk5BfHwoeChRdCk/T2UucHVzaCh7c3RyOlF0LGlkeDpTdCx0b2tlblR5cGU6JGV9KTprKFF0KSYmZnVuY3Rpb24gdmkocGUpe3JldHVybiB2b2lkIDA9PT1DZShbIi4iLCJcXCIsIlsiLCJdIiwifCIsIl4iLCIkIiwiKCIsIikiLCI/IiwiKiIsIisiLCJ7Il0sZnVuY3Rpb24oYmUpe3JldHVy'@; put 'bi0xIT09cGUuc291cmNlLmluZGV4T2YoYmUpfSl9KFF0KSYmT2UucHVzaCh7c3RyOlF0LnNvdXJjZSxpZHg6U3QsdG9rZW5UeXBlOiRlfSkpLE9lfSxbXSk7cmV0dXJuIFIocGUsZnVuY3Rpb24oT2UsJGUpe1IoYmUsZnVuY3Rpb24oU3Qpe3ZhciBjcj1TdC50b2tlblR5cGU7JGU8U3QuaWR4'@; put 'JiZmdW5jdGlvbiB5bihwZSxsZSl7aWYoayhsZSkpe3ZhciBiZT1sZS5leGVjKHBlKTtyZXR1cm4gbnVsbCE9PWJlJiYwPT09YmUuaW5kZXh9aWYoSChsZSkpcmV0dXJuIGxlKHBlLDAsW10se30pO2lmKFcobGUsImV4ZWMiKSlyZXR1cm4gbGUuZXhlYyhwZSwwLFtdLHt9KTtpZigic3RyaW5n'@; put 'Ij09dHlwZW9mIGxlKXJldHVybiBsZT09PXBlO3Rocm93IEVycm9yKCJub24gZXhoYXVzdGl2ZSBtYXRjaCIpfShTdC5zdHIsT2UuUEFUVEVSTikmJmxlLnB1c2goe21lc3NhZ2U6IlRva2VuOiAtPiIrY3IubmFtZSsiPC0gY2FuIG5ldmVyIGJlIG1hdGNoZWQuXG5CZWNhdXNlIGl0IGFwcGVh'@; put 'cnMgQUZURVIgdGhlIFRva2VuIFR5cGUgLT4iK09lLm5hbWUrIjwtaW4gdGhlIGxleGVyJ3MgZGVmaW5pdGlvbi5cblNlZSBodHRwczovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL3Jlc29sdmluZ19sZXhlcl9lcnJvcnMuaHRtbCNVTlJFQUNIQUJMRSIsdHlwZTpScy5V'@; put 'TlJFQUNIQUJMRV9QQVRURVJOLHRva2VuVHlwZXM6W09lLGNyXX0pfSl9KSxsZX0oU3QpKSxiZX0ocGksRW4pKX0pLGMoT2UubGV4ZXJEZWZpbml0aW9uRXJyb3JzKSYmKF9zKHBpKSxPZS5UUkFDRV9JTklUKCJhbmFseXplVG9rZW5UeXBlcyIsZnVuY3Rpb24oKXtKaT1mdW5jdGlvbiBUdChw'@; put 'ZSxsZSl7dmFyIE9lLGJlPShsZT1fZShsZSx7dXNlU3RpY2t5OlpuLGRlYnVnOiExLHNhZmVNb2RlOiExLHBvc2l0aW9uVHJhY2tpbmc6ImZ1bGwiLGxpbmVUZXJtaW5hdG9yQ2hhcmFjdGVyczpbIlxyIiwiXG4iXSx0cmFjZXI6ZnVuY3Rpb24oSW8sWmkpe3JldHVybiBaaSgpfX0pKS50cmFj'@; put 'ZXI7YmUoImluaXRDaGFyQ29kZVRvT3B0aW1pemVkSW5kZXhNYXAiLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uIEJpKCl7aWYoYyhrcykpe2tzPW5ldyBBcnJheSg2NTUzNik7Zm9yKHZhciBwZT0wO3BlPDY1NTM2O3BlKyspa3NbcGVdPXBlPjI1NT8yNTUrfn4ocGUvMjU1KTpwZX19KCl9KSxiZSgi'@; put 'UmVqZWN0IExleGVyLk5BIixmdW5jdGlvbigpe09lPVkocGUsZnVuY3Rpb24oSW8pe3JldHVybiBJb1tIbl09PT1KdS5OQX0pfSk7dmFyIFN0LFF0LEVuLGNyLFVyLHBpLERyLEppLHhvLFlpLGRzLCRlPSExO2JlKCJUcmFuc2Zvcm0gUGF0dGVybnMiLGZ1bmN0aW9uKCl7JGU9ITEsU3Q9QyhP'@; put 'ZSxmdW5jdGlvbihJbyl7dmFyIFppPUlvW0huXTtpZihrKFppKSl7dmFyIGdsPVppLnNvdXJjZTtyZXR1cm4gMT09PWdsLmxlbmd0aCYmIl4iIT09Z2wmJiIkIiE9PWdsJiYiLiIhPT1nbD9nbDoyIT09Z2wubGVuZ3RofHwiXFwiIT09Z2xbMF18fHEoWyJkIiwiRCIsInMiLCJTIiwidCIsInIi'@; put 'LCJuIiwidCIsIjAiLCJjIiwiYiIsIkIiLCJmIiwidiIsInciLCJXIl0sZ2xbMV0pP2xlLnVzZVN0aWNreT9ocihaaSk6cnIoWmkpOmdsWzFdfWlmKEgoWmkpKXJldHVybiAkZT0hMCx7ZXhlYzpaaX07aWYoVyhaaSwiZXhlYyIpKXJldHVybiAkZT0hMCxaaTtpZigic3RyaW5nIj09dHlwZW9m'@; put 'IFppKXtpZigxPT09WmkubGVuZ3RoKXJldHVybiBaaTt2YXIgamw9WmkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKSxWMT1uZXcgUmVnRXhwKGpsKTtyZXR1cm4gbGUudXNlU3RpY2t5P2hyKFYxKTpycihWMSl9dGhyb3cgRXJyb3IoIm5vbiBleGhhdXN0aXZlIG1hdGNo'@; put 'Iil9KX0pLGJlKCJtaXNjIG1hcHBpbmciLGZ1bmN0aW9uKCl7UXQ9QyhPZSxmdW5jdGlvbihJbyl7cmV0dXJuIElvLnRva2VuVHlwZUlkeH0pLEVuPUMoT2UsZnVuY3Rpb24oSW8pe3ZhciBaaT1Jby5HUk9VUDtpZihaaSE9PUp1LlNLSVBQRUQpe2lmKHgoWmkpKXJldHVybiBaaTtpZihVKFpp'@; put 'KSlyZXR1cm4hMTt0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKX19KSxjcj1DKE9lLGZ1bmN0aW9uKElvKXt2YXIgWmk9SW8uTE9OR0VSX0FMVDtpZihaaSl7dmFyIGdsPWZ1bmN0aW9uIEQocGUsbGUpe2Zvcih2YXIgYmU9MDtiZTxwZS5sZW5ndGg7YmUrKylpZihwZVtiZV09'@; put 'PT1sZSlyZXR1cm4gYmU7cmV0dXJuLTF9KE9lLFppKTtyZXR1cm4gZ2x9fSksVXI9QyhPZSxmdW5jdGlvbihJbyl7cmV0dXJuIElvLlBVU0hfTU9ERX0pLHBpPUMoT2UsZnVuY3Rpb24oSW8pe3JldHVybiBXKElvLCJQT1BfTU9ERSIpfSl9KSxiZSgiTGluZSBUZXJtaW5hdG9yIEhhbmRsaW5n'@; put 'IixmdW5jdGlvbigpe3ZhciBJbz1jYShsZS5saW5lVGVybWluYXRvckNoYXJhY3RlcnMpO0RyPUMoT2UsZnVuY3Rpb24oWmkpe3JldHVybiExfSksIm9ubHlPZmZzZXQiIT09bGUucG9zaXRpb25UcmFja2luZyYmKERyPUMoT2UsZnVuY3Rpb24oWmkpe3JldHVybiBXKFppLCJMSU5FX0JSRUFL'@; put 'UyIpP1ppLkxJTkVfQlJFQUtTOiExPT09ZWEoWmksSW8pP1FyKElvLFppLlBBVFRFUk4pOnZvaWQgMH0pKX0pLGJlKCJNaXNjIE1hcHBpbmcgIzIiLGZ1bmN0aW9uKCl7Smk9QyhPZSxqYSkseG89QyhTdCxqbyksWWk9a2UoT2UsZnVuY3Rpb24oSW8sWmkpe3ZhciBnbD1aaS5HUk9VUDtyZXR1'@; put 'cm4geChnbCkmJmdsIT09SnUuU0tJUFBFRCYmKElvW2dsXT1bXSksSW99LHt9KSxkcz1DKFN0LGZ1bmN0aW9uKElvLFppKXtyZXR1cm57cGF0dGVybjpTdFtaaV0sbG9uZ2VyQWx0OmNyW1ppXSxjYW5MaW5lVGVybWluYXRvcjpEcltaaV0saXNDdXN0b206SmlbWmldLHNob3J0OnhvW1ppXSxn'@; put 'cm91cDpFbltaaV0scHVzaDpVcltaaV0scG9wOnBpW1ppXSx0b2tlblR5cGVJZHg6UXRbWmldLHRva2VuVHlwZTpPZVtaaV19fSl9KTt2YXIgUHM9ITAsYWE9W107cmV0dXJuIGxlLnNhZmVNb2RlfHxiZSgiRmlyc3QgQ2hhciBPcHRpbWl6YXRpb24iLGZ1bmN0aW9uKCl7YWE9a2UoT2UsZnVu'@; put 'Y3Rpb24oSW8sWmksZ2wpe2lmKCJzdHJpbmciPT10eXBlb2YgWmkuUEFUVEVSTil7dmFyIFYxPU1hKFppLlBBVFRFUk4uY2hhckNvZGVBdCgwKSk7Q2koSW8sVjEsZHNbZ2xdKX1lbHNlIGlmKGIoWmkuU1RBUlRfQ0hBUlNfSElOVCkpe3ZhciBwYztSKFppLlNUQVJUX0NIQVJTX0hJTlQsZnVu'@; put 'Y3Rpb24obDEpe3ZhciBaYz1NYSgic3RyaW5nIj09dHlwZW9mIGwxP2wxLmNoYXJDb2RlQXQoMCk6bDEpO3BjIT09WmMmJihwYz1aYyxDaShJbyxaYyxkc1tnbF0pKX0pfWVsc2UgaWYoayhaaS5QQVRURVJOKSlpZihaaS5QQVRURVJOLnVuaWNvZGUpUHM9ITEsbGUuZW5zdXJlT3B0aW1pemF0'@; put 'aW9ucyYmYWUoUnQrIlx0VW5hYmxlIHRvIGFuYWx5emUgPCAiK1ppLlBBVFRFUk4udG9TdHJpbmcoKSsiID4gcGF0dGVybi5cblx0VGhlIHJlZ2V4cCB1bmljb2RlIGZsYWcgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIHJlZ2V4cC10by1hc3QgbGlicmFyeS5cblx0VGhpcyB3'@; put 'aWxsIGRpc2FibGUgdGhlIGxleGVyJ3MgZmlyc3QgY2hhciBvcHRpbWl6YXRpb25zLlxuXHRGb3IgZGV0YWlscyBTZWU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9jaGV2cm90YWluL2RvY3MvZ3VpZGUvcmVzb2x2aW5nX2xleGVyX2Vycm9ycy5odG1sI1VOSUNPREVfT1BUSU1JWkUiKTtlbHNl'@; put 'e3ZhciBVZD1MdChaaS5QQVRURVJOLGxlLmVuc3VyZU9wdGltaXphdGlvbnMpO2MoVWQpJiYoUHM9ITEpLFIoVWQsZnVuY3Rpb24obDEpe0NpKElvLGwxLGRzW2dsXSl9KX1lbHNlIGxlLmVuc3VyZU9wdGltaXphdGlvbnMmJmFlKFJ0KyJcdFRva2VuVHlwZTogPCIrWmkubmFtZSsiPiBpcyB1'@; put 'c2luZyBhIGN1c3RvbSB0b2tlbiBwYXR0ZXJuIHdpdGhvdXQgcHJvdmlkaW5nIDxzdGFydF9jaGFyc19oaW50PiBwYXJhbWV0ZXIuXG5cdFRoaXMgd2lsbCBkaXNhYmxlIHRoZSBsZXhlcidzIGZpcnN0IGNoYXIgb3B0aW1pemF0aW9ucy5cblx0Rm9yIGRldGFpbHMgU2VlOiBodHRwczovL3Nh'@; put 'cC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL3Jlc29sdmluZ19sZXhlcl9lcnJvcnMuaHRtbCNDVVNUT01fT1BUSU1JWkUiKSxQcz0hMTtyZXR1cm4gSW99LFtdKX0pLGJlKCJBcnJheVBhY2tpbmciLGZ1bmN0aW9uKCl7YWE9ZnVuY3Rpb24gUmUocGUpe2Zvcih2YXIgbGU9W10s'@; put 'YmU9MDtiZTxwZS5sZW5ndGg7YmUrKyl7dmFyIE9lPXBlW2JlXTtsZS5wdXNoKHZvaWQgMCE9PU9lP09lOnZvaWQgMCl9cmV0dXJuIGxlfShhYSl9KSx7ZW1wdHlHcm91cHM6WWkscGF0dGVybklkeFRvQ29uZmlnOmRzLGNoYXJDb2RlVG9QYXR0ZXJuSWR4VG9Db25maWc6YWEsaGFzQ3VzdG9t'@; put 'OiRlLGNhbkJlT3B0aW1pemVkOlBzfX0ocGkse2xpbmVUZXJtaW5hdG9yQ2hhcmFjdGVyczpPZS5jb25maWcubGluZVRlcm1pbmF0b3JDaGFyYWN0ZXJzLHBvc2l0aW9uVHJhY2tpbmc6YmUucG9zaXRpb25UcmFja2luZyxlbnN1cmVPcHRpbWl6YXRpb25zOmJlLmVuc3VyZU9wdGltaXphdGlv'@; put 'bnMsc2FmZU1vZGU6YmUuc2FmZU1vZGUsdHJhY2VyOk9lLlRSQUNFX0lOSVQuYmluZChPZSl9KX0pLE9lLnBhdHRlcm5JZHhUb0NvbmZpZ1tEcl09SmkucGF0dGVybklkeFRvQ29uZmlnLE9lLmNoYXJDb2RlVG9QYXR0ZXJuSWR4VG9Db25maWdbRHJdPUppLmNoYXJDb2RlVG9QYXR0ZXJuSWR4'@; put 'VG9Db25maWcsT2UuZW1wdHlHcm91cHM9b3QoT2UuZW1wdHlHcm91cHMsSmkuZW1wdHlHcm91cHMpLE9lLmhhc0N1c3RvbT1KaS5oYXNDdXN0b218fE9lLmhhc0N1c3RvbSxPZS5jYW5Nb2RlQmVPcHRpbWl6ZWRbRHJdPUppLmNhbkJlT3B0aW1pemVkKX0pfSksT2UuZGVmYXVsdE1vZGU9U3Qu'@; put 'ZGVmYXVsdE1vZGUsIWMoT2UubGV4ZXJEZWZpbml0aW9uRXJyb3JzKSYmIU9lLmNvbmZpZy5kZWZlckRlZmluaXRpb25FcnJvcnNIYW5kbGluZyl7dmFyIFVyPUMoT2UubGV4ZXJEZWZpbml0aW9uRXJyb3JzLGZ1bmN0aW9uKHBpKXtyZXR1cm4gcGkubWVzc2FnZX0pLmpvaW4oIi0tLS0tLS0t'@; put 'LS0tLS0tLS0tLS0tLS0tXG4iKTt0aHJvdyBuZXcgRXJyb3IoIkVycm9ycyBkZXRlY3RlZCBpbiBkZWZpbml0aW9uIG9mIExleGVyOlxuIitVcil9UihPZS5sZXhlckRlZmluaXRpb25XYXJuaW5nLGZ1bmN0aW9uKHBpKXt4ZShwaS5tZXNzYWdlKX0pLE9lLlRSQUNFX0lOSVQoIkNob29zaW5n'@; put 'IHN1Yi1tZXRob2RzIGltcGxlbWVudGF0aW9ucyIsZnVuY3Rpb24oKXtpZihabj8oT2UuY2hvcElucHV0PWR0LE9lLm1hdGNoPU9lLm1hdGNoV2l0aFRlc3QpOihPZS51cGRhdGVMYXN0SW5kZXg9bHQsT2UubWF0Y2g9T2UubWF0Y2hXaXRoRXhlYyksUXQmJihPZS5oYW5kbGVNb2Rlcz1sdCks'@; put 'ITE9PT1PZS50cmFja1N0YXJ0TGluZXMmJihPZS5jb21wdXRlTmV3Q29sdW1uPWR0KSwhMT09PU9lLnRyYWNrRW5kTGluZXMmJihPZS51cGRhdGVUb2tlbkVuZExpbmVDb2x1bW5Mb2NhdGlvbj1sdCksL2Z1bGwvaS50ZXN0KE9lLmNvbmZpZy5wb3NpdGlvblRyYWNraW5nKSlPZS5jcmVhdGVU'@; put 'b2tlbkluc3RhbmNlPU9lLmNyZWF0ZUZ1bGxUb2tlbjtlbHNlIGlmKC9vbmx5U3RhcnQvaS50ZXN0KE9lLmNvbmZpZy5wb3NpdGlvblRyYWNraW5nKSlPZS5jcmVhdGVUb2tlbkluc3RhbmNlPU9lLmNyZWF0ZVN0YXJ0T25seVRva2VuO2Vsc2V7aWYoIS9vbmx5T2Zmc2V0L2kudGVzdChPZS5j'@; put 'b25maWcucG9zaXRpb25UcmFja2luZykpdGhyb3cgRXJyb3IoJ0ludmFsaWQgPHBvc2l0aW9uVHJhY2tpbmc+IGNvbmZpZyBvcHRpb246ICInK09lLmNvbmZpZy5wb3NpdGlvblRyYWNraW5nKyciJyk7T2UuY3JlYXRlVG9rZW5JbnN0YW5jZT1PZS5jcmVhdGVPZmZzZXRPbmx5VG9rZW59T2Uu'@; put 'aGFzQ3VzdG9tPyhPZS5hZGRUb2tlbj1PZS5hZGRUb2tlblVzaW5nUHVzaCxPZS5oYW5kbGVQYXlsb2FkPU9lLmhhbmRsZVBheWxvYWRXaXRoQ3VzdG9tKTooT2UuYWRkVG9rZW49T2UuYWRkVG9rZW5Vc2luZ01lbWJlckFjY2VzcyxPZS5oYW5kbGVQYXlsb2FkPU9lLmhhbmRsZVBheWxvYWRO'@; put 'b0N1c3RvbSl9KSxPZS5UUkFDRV9JTklUKCJGYWlsZWQgT3B0aW1pemF0aW9uIFdhcm5pbmdzIixmdW5jdGlvbigpe3ZhciBwaT1rZShPZS5jYW5Nb2RlQmVPcHRpbWl6ZWQsZnVuY3Rpb24oRHIsSmkseG8pe3JldHVybiExPT09SmkmJkRyLnB1c2goeG8pLERyfSxbXSk7aWYoYmUuZW5zdXJl'@; put 'T3B0aW1pemF0aW9ucyYmIWMocGkpKXRocm93IEVycm9yKCJMZXhlciBNb2RlczogPCAiK3BpLmpvaW4oIiwgIikrJyA+IGNhbm5vdCBiZSBvcHRpbWl6ZWQuXG5cdCBEaXNhYmxlIHRoZSAiZW5zdXJlT3B0aW1pemF0aW9ucyIgbGV4ZXIgY29uZmlnIGZsYWcgdG8gc2lsZW50bHkgaWdub3Jl'@; put 'IHRoaXMgYW5kIHJ1biB0aGUgbGV4ZXIgaW4gYW4gdW4tb3B0aW1pemVkIG1vZGUuXG5cdCBPciBpbnNwZWN0IHRoZSBjb25zb2xlIGxvZyBmb3IgZGV0YWlscyBvbiBob3cgdG8gcmVzb2x2ZSB0aGVzZSBpc3N1ZXMuJyl9KSxPZS5UUkFDRV9JTklUKCJjbGVhclJlZ0V4cFBhcnNlckNhY2hl'@; put 'IixmdW5jdGlvbigpeyFmdW5jdGlvbiB0dCgpe2hlPXt9fSgpfSksT2UuVFJBQ0VfSU5JVCgidG9GYXN0UHJvcGVydGllcyIsZnVuY3Rpb24oKXtEZShPZSl9KX0pfXJldHVybiBwZS5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24obGUsYmUpe2lmKHZvaWQgMD09PWJlJiYoYmU9dGhpcy5k'@; put 'ZWZhdWx0TW9kZSksIWModGhpcy5sZXhlckRlZmluaXRpb25FcnJvcnMpKXt2YXIgJGU9Qyh0aGlzLmxleGVyRGVmaW5pdGlvbkVycm9ycyxmdW5jdGlvbihRdCl7cmV0dXJuIFF0Lm1lc3NhZ2V9KS5qb2luKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7dGhyb3cgbmV3IEVycm9yKCJV'@; put 'bmFibGUgdG8gVG9rZW5pemUgYmVjYXVzZSBFcnJvcnMgZGV0ZWN0ZWQgaW4gZGVmaW5pdGlvbiBvZiBMZXhlcjpcbiIrJGUpfXJldHVybiB0aGlzLnRva2VuaXplSW50ZXJuYWwobGUsYmUpfSxwZS5wcm90b3R5cGUudG9rZW5pemVJbnRlcm5hbD1mdW5jdGlvbihsZSxiZSl7dmFyICRlLFN0'@; put 'LFF0LEVuLGNyLFVyLHBpLERyLEppLFlpLGRzLGFhLElvLE9lPXRoaXMsWmk9bGUsZ2w9WmkubGVuZ3RoLGpsPTAsVjE9MCxwYz10aGlzLmhhc0N1c3RvbT8wOk1hdGguZmxvb3IobGUubGVuZ3RoLzEwKSxVZD1uZXcgQXJyYXkocGMpLGwxPVtdLG9kPXRoaXMudHJhY2tTdGFydExpbmVzPzE6'@; put 'dm9pZCAwLFpjPXRoaXMudHJhY2tTdGFydExpbmVzPzE6dm9pZCAwLGgwPWZ1bmN0aW9uIEJuKHBlKXt2YXIgbGU9e307cmV0dXJuIFIocyhwZSksZnVuY3Rpb24oT2Upe2lmKCFiKHBlW09lXSkpdGhyb3cgRXJyb3IoIm5vbiBleGhhdXN0aXZlIG1hdGNoIik7bGVbT2VdPVtdfSksbGV9KHRo'@; put 'aXMuZW1wdHlHcm91cHMpLFMyPXRoaXMudHJhY2tTdGFydExpbmVzLF8zPXRoaXMuY29uZmlnLmxpbmVUZXJtaW5hdG9yc1BhdHRlcm4sTWY9MCxpaD1bXSxrZz1bXSxadT1bXSxTOT1bXTtPYmplY3QuZnJlZXplKFM5KTt2YXIgcGE9dm9pZCAwO2Z1bmN0aW9uIEloKCl7cmV0dXJuIGlofWZ1'@; put 'bmN0aW9uIFJnKFdzKXt2YXIgYzE9TWEoV3MpLERoPWtnW2MxXTtyZXR1cm4gdm9pZCAwPT09RGg/Uzk6RGh9dmFyIFAwLGY4PWZ1bmN0aW9uKFdzKXtpZigxPT09WnUubGVuZ3RoJiZ2b2lkIDA9PT1Xcy50b2tlblR5cGUuUFVTSF9NT0RFKXt2YXIgYzE9T2UuY29uZmlnLmVycm9yTWVzc2Fn'@; put 'ZVByb3ZpZGVyLmJ1aWxkVW5hYmxlVG9Qb3BMZXhlck1vZGVNZXNzYWdlKFdzKTtsMS5wdXNoKHtvZmZzZXQ6V3Muc3RhcnRPZmZzZXQsbGluZTp2b2lkIDAhPT1Xcy5zdGFydExpbmU/V3Muc3RhcnRMaW5lOnZvaWQgMCxjb2x1bW46dm9pZCAwIT09V3Muc3RhcnRDb2x1bW4/V3Muc3RhcnRD'@; put 'b2x1bW46dm9pZCAwLGxlbmd0aDpXcy5pbWFnZS5sZW5ndGgsbWVzc2FnZTpjMX0pfWVsc2V7WnUucG9wKCk7dmFyIERoPUwoWnUpO01mPShpaD1PZS5wYXR0ZXJuSWR4VG9Db25maWdbRGhdKS5sZW5ndGgscGE9KGtnPU9lLmNoYXJDb2RlVG9QYXR0ZXJuSWR4VG9Db25maWdbRGhdKSYmT2Uu'@; put 'Y2FuTW9kZUJlT3B0aW1pemVkW0RoXSYmITE9PT1PZS5jb25maWcuc2FmZU1vZGU/Umc6SWh9fTtmdW5jdGlvbiBFOShXcyl7WnUucHVzaChXcyksTWY9KGloPXRoaXMucGF0dGVybklkeFRvQ29uZmlnW1dzXSkubGVuZ3RoLE1mPWloLmxlbmd0aCxwYT0oa2c9dGhpcy5jaGFyQ29kZVRvUGF0'@; put 'dGVybklkeFRvQ29uZmlnW1dzXSkmJnRoaXMuY2FuTW9kZUJlT3B0aW1pemVkW1dzXSYmITE9PT10aGlzLmNvbmZpZy5zYWZlTW9kZT9SZzpJaH1mb3IoRTkuY2FsbCh0aGlzLGJlKTtqbDxnbDspe2NyPW51bGw7dmFyIHA4PVppLmNoYXJDb2RlQXQoamwpLElnPXBhKHA4KSx2cD1JZy5sZW5n'@; put 'dGg7Zm9yKCRlPTA7JGU8dnA7JGUrKyl7dmFyIGYwPShQMD1JZ1skZV0pLnBhdHRlcm47aWYoVXI9bnVsbCwhMSE9PShIcz1QMC5zaG9ydCk/cDg9PT1IcyYmKGNyPWYwKTohMD09PVAwLmlzQ3VzdG9tP251bGwhPT0oSW89ZjAuZXhlYyhaaSxqbCxVZCxoMCkpPyhjcj1Jb1swXSx2b2lkIDAh'@; put 'PT1Jby5wYXlsb2FkJiYoVXI9SW8ucGF5bG9hZCkpOmNyPW51bGw6KHRoaXMudXBkYXRlTGFzdEluZGV4KGYwLGpsKSxjcj10aGlzLm1hdGNoKGYwLGxlLGpsKSksbnVsbCE9PWNyKXtpZih2b2lkIDAhPT0oRW49UDAubG9uZ2VyQWx0KSl7dmFyIHllPWloW0VuXSxVZT15ZS5wYXR0ZXJuO3Bp'@; put 'PW51bGwsITA9PT15ZS5pc0N1c3RvbT9udWxsIT09KElvPVVlLmV4ZWMoWmksamwsVWQsaDApKT8oUXQ9SW9bMF0sdm9pZCAwIT09SW8ucGF5bG9hZCYmKHBpPUlvLnBheWxvYWQpKTpRdD1udWxsOih0aGlzLnVwZGF0ZUxhc3RJbmRleChVZSxqbCksUXQ9dGhpcy5tYXRjaChVZSxsZSxqbCkp'@; put 'LFF0JiZRdC5sZW5ndGg+Y3IubGVuZ3RoJiYoY3I9UXQsVXI9cGksUDA9eWUpfWJyZWFrfX1pZihudWxsIT09Y3Ipe2lmKERyPWNyLmxlbmd0aCx2b2lkIDAhPT0oSmk9UDAuZ3JvdXApJiYoWWk9dGhpcy5jcmVhdGVUb2tlbkluc3RhbmNlKGNyLGpsLFAwLnRva2VuVHlwZUlkeCxQMC50b2tl'@; put 'blR5cGUsb2QsWmMsRHIpLHRoaXMuaGFuZGxlUGF5bG9hZChZaSxVciksITE9PT1KaT9WMT10aGlzLmFkZFRva2VuKFVkLFYxLFlpKTpoMFtKaV0ucHVzaChZaSkpLGxlPXRoaXMuY2hvcElucHV0KGxlLERyKSxqbCs9RHIsWmM9dGhpcy5jb21wdXRlTmV3Q29sdW1uKFpjLERyKSwhMD09PVMy'@; put 'JiYhMD09PVAwLmNhbkxpbmVUZXJtaW5hdG9yKXt2YXIgY3Q9MCxpdD12b2lkIDAsRnQ9dm9pZCAwO18zLmxhc3RJbmRleD0wO2RveyEwPT09KGl0PV8zLnRlc3QoY3IpKSYmKEZ0PV8zLmxhc3RJbmRleC0xLGN0KyspfXdoaWxlKCEwPT09aXQpOzAhPT1jdCYmdGhpcy51cGRhdGVUb2tlbkVu'@; put 'ZExpbmVDb2x1bW5Mb2NhdGlvbihZaSxKaSxGdCxjdCxvZCs9Y3QsWmM9RHItRnQsRHIpfXRoaXMuaGFuZGxlTW9kZXMoUDAsZjgsRTksWWkpfWVsc2V7Zm9yKHZhciBZZT1qbCxYZT1vZCx5aT1aYyxXYT0hMTshV2EmJmpsPGdsOylmb3IoWmkuY2hhckNvZGVBdChqbCksbGU9dGhpcy5jaG9w'@; put 'SW5wdXQobGUsMSksamwrKyxTdD0wO1N0PE1mO1N0Kyspe3ZhciBIcyxTcz1paFtTdF07aWYoZjA9U3MucGF0dGVybiwhMSE9PShIcz1Tcy5zaG9ydCk/WmkuY2hhckNvZGVBdChqbCk9PT1IcyYmKFdhPSEwKTohMD09PVNzLmlzQ3VzdG9tP1dhPW51bGwhPT1mMC5leGVjKFppLGpsLFVkLGgw'@; put 'KToodGhpcy51cGRhdGVMYXN0SW5kZXgoZjAsamwpLFdhPW51bGwhPT1mMC5leGVjKGxlKSksITA9PT1XYSlicmVha31hYT10aGlzLmNvbmZpZy5lcnJvck1lc3NhZ2VQcm92aWRlci5idWlsZFVuZXhwZWN0ZWRDaGFyYWN0ZXJzTWVzc2FnZShaaSxZZSxkcz1qbC1ZZSxYZSx5aSksbDEucHVz'@; put 'aCh7b2Zmc2V0OlllLGxpbmU6WGUsY29sdW1uOnlpLGxlbmd0aDpkcyxtZXNzYWdlOmFhfSl9fXJldHVybiB0aGlzLmhhc0N1c3RvbXx8KFVkLmxlbmd0aD1WMSkse3Rva2VuczpVZCxncm91cHM6aDAsZXJyb3JzOmwxfX0scGUucHJvdG90eXBlLmhhbmRsZU1vZGVzPWZ1bmN0aW9uKGxlLGJl'@; put 'LE9lLCRlKXtpZighMD09PWxlLnBvcCl7dmFyIFN0PWxlLnB1c2g7YmUoJGUpLHZvaWQgMCE9PVN0JiZPZS5jYWxsKHRoaXMsU3QpfWVsc2Ugdm9pZCAwIT09bGUucHVzaCYmT2UuY2FsbCh0aGlzLGxlLnB1c2gpfSxwZS5wcm90b3R5cGUuY2hvcElucHV0PWZ1bmN0aW9uKGxlLGJlKXtyZXR1'@; put 'cm4gbGUuc3Vic3RyaW5nKGJlKX0scGUucHJvdG90eXBlLnVwZGF0ZUxhc3RJbmRleD1mdW5jdGlvbihsZSxiZSl7bGUubGFzdEluZGV4PWJlfSxwZS5wcm90b3R5cGUudXBkYXRlVG9rZW5FbmRMaW5lQ29sdW1uTG9jYXRpb249ZnVuY3Rpb24obGUsYmUsT2UsJGUsU3QsUXQsRW4pe3ZhciBj'@; put 'cixVcjt2b2lkIDAhPT1iZSYmKFVyPShjcj1PZT09PUVuLTEpPy0xOjAsMT09PSRlJiYhMD09PWNyfHwobGUuZW5kTGluZT1TdCtVcixsZS5lbmRDb2x1bW49UXQtMS1VcikpfSxwZS5wcm90b3R5cGUuY29tcHV0ZU5ld0NvbHVtbj1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIGxlK2JlfSxwZS5w'@; put 'cm90b3R5cGUuY3JlYXRlVG9rZW5JbnN0YW5jZT1mdW5jdGlvbigpe2Zvcih2YXIgbGU9W10sYmU9MDtiZTxhcmd1bWVudHMubGVuZ3RoO2JlKyspbGVbYmVdPWFyZ3VtZW50c1tiZV07cmV0dXJuIG51bGx9LHBlLnByb3RvdHlwZS5jcmVhdGVPZmZzZXRPbmx5VG9rZW49ZnVuY3Rpb24obGUs'@; put 'YmUsT2UsJGUpe3JldHVybntpbWFnZTpsZSxzdGFydE9mZnNldDpiZSx0b2tlblR5cGVJZHg6T2UsdG9rZW5UeXBlOiRlfX0scGUucHJvdG90eXBlLmNyZWF0ZVN0YXJ0T25seVRva2VuPWZ1bmN0aW9uKGxlLGJlLE9lLCRlLFN0LFF0KXtyZXR1cm57aW1hZ2U6bGUsc3RhcnRPZmZzZXQ6YmUs'@; put 'c3RhcnRMaW5lOlN0LHN0YXJ0Q29sdW1uOlF0LHRva2VuVHlwZUlkeDpPZSx0b2tlblR5cGU6JGV9fSxwZS5wcm90b3R5cGUuY3JlYXRlRnVsbFRva2VuPWZ1bmN0aW9uKGxlLGJlLE9lLCRlLFN0LFF0LEVuKXtyZXR1cm57aW1hZ2U6bGUsc3RhcnRPZmZzZXQ6YmUsZW5kT2Zmc2V0OmJlK0Vu'@; put 'LTEsc3RhcnRMaW5lOlN0LGVuZExpbmU6U3Qsc3RhcnRDb2x1bW46UXQsZW5kQ29sdW1uOlF0K0VuLTEsdG9rZW5UeXBlSWR4Ok9lLHRva2VuVHlwZTokZX19LHBlLnByb3RvdHlwZS5hZGRUb2tlbj1mdW5jdGlvbihsZSxiZSxPZSl7cmV0dXJuIDY2Nn0scGUucHJvdG90eXBlLmFkZFRva2Vu'@; put 'VXNpbmdQdXNoPWZ1bmN0aW9uKGxlLGJlLE9lKXtyZXR1cm4gbGUucHVzaChPZSksYmV9LHBlLnByb3RvdHlwZS5hZGRUb2tlblVzaW5nTWVtYmVyQWNjZXNzPWZ1bmN0aW9uKGxlLGJlLE9lKXtyZXR1cm4gbGVbYmVdPU9lLCsrYmV9LHBlLnByb3RvdHlwZS5oYW5kbGVQYXlsb2FkPWZ1bmN0'@; put 'aW9uKGxlLGJlKXt9LHBlLnByb3RvdHlwZS5oYW5kbGVQYXlsb2FkTm9DdXN0b209ZnVuY3Rpb24obGUsYmUpe30scGUucHJvdG90eXBlLmhhbmRsZVBheWxvYWRXaXRoQ3VzdG9tPWZ1bmN0aW9uKGxlLGJlKXtudWxsIT09YmUmJihsZS5wYXlsb2FkPWJlKX0scGUucHJvdG90eXBlLm1hdGNo'@; put 'PWZ1bmN0aW9uKGxlLGJlLE9lKXtyZXR1cm4gbnVsbH0scGUucHJvdG90eXBlLm1hdGNoV2l0aFRlc3Q9ZnVuY3Rpb24obGUsYmUsT2Upe3JldHVybiEwPT09bGUudGVzdChiZSk/YmUuc3Vic3RyaW5nKE9lLGxlLmxhc3RJbmRleCk6bnVsbH0scGUucHJvdG90eXBlLm1hdGNoV2l0aEV4ZWM9'@; put 'ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT1sZS5leGVjKGJlKTtyZXR1cm4gbnVsbCE9PU9lP09lWzBdOk9lfSxwZS5wcm90b3R5cGUuVFJBQ0VfSU5JVD1mdW5jdGlvbihsZSxiZSl7aWYoITA9PT10aGlzLnRyYWNlSW5pdFBlcmYpe3RoaXMudHJhY2VJbml0SW5kZW50Kys7dmFyIE9lPW5ldyBB'@; put 'cnJheSh0aGlzLnRyYWNlSW5pdEluZGVudCsxKS5qb2luKCJcdCIpO3RoaXMudHJhY2VJbml0SW5kZW50PHRoaXMudHJhY2VJbml0TWF4SWRlbnQmJmNvbnNvbGUubG9nKE9lKyItLVx4M2UgPCIrbGUrIj4iKTt2YXIgJGU9Z2UoYmUpLFN0PSRlLnRpbWUsUXQ9JGUudmFsdWUsRW49U3Q+MTA/'@; put 'Y29uc29sZS53YXJuOmNvbnNvbGUubG9nO3JldHVybiB0aGlzLnRyYWNlSW5pdEluZGVudDx0aGlzLnRyYWNlSW5pdE1heElkZW50JiZFbihPZSsiPC0tIDwiK2xlKyI+IHRpbWU6ICIrU3QrIm1zIiksdGhpcy50cmFjZUluaXRJbmRlbnQtLSxRdH1yZXR1cm4gYmUoKX0scGUuU0tJUFBFRD0i'@; put 'VGhpcyBtYXJrcyBhIHNraXBwZWQgVG9rZW4gcGF0dGVybiwgdGhpcyBtZWFucyBlYWNoIHRva2VuIGlkZW50aWZpZWQgYnkgaXQgd2lsbGJlIGNvbnN1bWVkIGFuZCB0aGVuIHRocm93biBpbnRvIG9ibGl2aW9uLCB0aGlzIGNhbiBiZSB1c2VkIHRvIGZvciBleGFtcGxlIHRvIGNvbXBsZXRl'@; put 'bHkgaWdub3JlIHdoaXRlc3BhY2UuIixwZS5OQT0vTk9UX0FQUExJQ0FCTEUvLHBlfSgpO2Z1bmN0aW9uIHlkKHBlKXtyZXR1cm4gZmEocGUpP3BlLkxBQkVMOnBlLm5hbWV9ZnVuY3Rpb24gVW8ocGUpe3JldHVybiBwZS5uYW1lfWZ1bmN0aW9uIGZhKHBlKXtyZXR1cm4geChwZS5MQUJFTCkm'@; put 'JiIiIT09cGUuTEFCRUx9dmFyIFFjPSJjYXRlZ29yaWVzIixiZz0icHVzaF9tb2RlIixVYT0icG9wX21vZGUiLFZ1PSJsb25nZXJfYWx0IixMbT0ibGluZV9icmVha3MiLHUzPSJzdGFydF9jaGFyc19oaW50IjtmdW5jdGlvbiBuaChwZSl7cmV0dXJuIGZ1bmN0aW9uIHdnKHBlKXt2YXIgbGU9'@; put 'cGUucGF0dGVybixiZT17fTtpZihiZS5uYW1lPXBlLm5hbWUsVShsZSl8fChiZS5QQVRURVJOPWxlKSxXKHBlLCJwYXJlbnQiKSl0aHJvdyJUaGUgcGFyZW50IHByb3BlcnR5IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuXG5TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9TQVAvY2hldnJvdGFpbi9p'@; put 'c3N1ZXMvNTY0I2lzc3VlY29tbWVudC0zNDkwNjIzNDYgZm9yIGRldGFpbHMuIjtyZXR1cm4gVyhwZSxRYykmJihiZS5DQVRFR09SSUVTPXBlW1FjXSksX3MoW2JlXSksVyhwZSwibGFiZWwiKSYmKGJlLkxBQkVMPXBlLmxhYmVsKSxXKHBlLCJncm91cCIpJiYoYmUuR1JPVVA9cGUuZ3JvdXAp'@; put 'LFcocGUsVWEpJiYoYmUuUE9QX01PREU9cGVbVWFdKSxXKHBlLGJnKSYmKGJlLlBVU0hfTU9ERT1wZVtiZ10pLFcocGUsVnUpJiYoYmUuTE9OR0VSX0FMVD1wZVtWdV0pLFcocGUsTG0pJiYoYmUuTElORV9CUkVBS1M9cGVbTG1dKSxXKHBlLHUzKSYmKGJlLlNUQVJUX0NIQVJTX0hJTlQ9cGVb'@; put 'dTNdKSxiZX0ocGUpfXZhciBKYz1uaCh7bmFtZToiRU9GIixwYXR0ZXJuOkp1Lk5BfSk7ZnVuY3Rpb24gZ2YocGUsbGUsYmUsT2UsJGUsU3QsUXQsRW4pe3JldHVybntpbWFnZTpsZSxzdGFydE9mZnNldDpiZSxlbmRPZmZzZXQ6T2Usc3RhcnRMaW5lOiRlLGVuZExpbmU6U3Qsc3RhcnRDb2x1'@; put 'bW46UXQsZW5kQ29sdW1uOkVuLHRva2VuVHlwZUlkeDpwZS50b2tlblR5cGVJZHgsdG9rZW5UeXBlOnBlfX1mdW5jdGlvbiBscChwZSxsZSl7cmV0dXJuIHRhKHBlLGxlKX1fcyhbSmNdKTt2YXIgRGw9ZnVuY3Rpb24oKXt2YXIgcGU9ZnVuY3Rpb24obGUsYmUpe3JldHVybihwZT1PYmplY3Qu'@; put 'c2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oT2UsJGUpe09lLl9fcHJvdG9fXz0kZX18fGZ1bmN0aW9uKE9lLCRlKXtmb3IodmFyIFN0IGluICRlKSRlLmhhc093blByb3BlcnR5KFN0KSYmKE9lW1N0XT0kZVtTdF0pfSkobGUsYmUpfTty'@; put 'ZXR1cm4gZnVuY3Rpb24obGUsYmUpe2Z1bmN0aW9uIE9lKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sZX1wZShsZSxiZSksbGUucHJvdG90eXBlPW51bGw9PT1iZT9PYmplY3QuY3JlYXRlKGJlKTooT2UucHJvdG90eXBlPWJlLnByb3RvdHlwZSxuZXcgT2UpfX0oKSxFbz1mdW5jdGlvbigpe2Z1bmN0'@; put 'aW9uIHBlKGxlKXt0aGlzLmRlZmluaXRpb249bGV9cmV0dXJuIHBlLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24obGUpe2xlLnZpc2l0KHRoaXMpLFIodGhpcy5kZWZpbml0aW9uLGZ1bmN0aW9uKGJlKXtiZS5hY2NlcHQobGUpfSl9LHBlfSgpLEJ1PWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBs'@; put 'ZShiZSl7dmFyIE9lPXBlLmNhbGwodGhpcyxbXSl8fHRoaXM7cmV0dXJuIE9lLmlkeD0xLHVlKE9lLEYoYmUsZnVuY3Rpb24oJGUpe3JldHVybiB2b2lkIDAhPT0kZX0pKSxPZX1yZXR1cm4gRGwobGUscGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsZS5wcm90b3R5cGUsImRlZmluaXRpb24i'@; put 'LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5yZWZlcmVuY2VkUnVsZT90aGlzLnJlZmVyZW5jZWRSdWxlLmRlZmluaXRpb246W119LHNldDpmdW5jdGlvbihiZSl7fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGxlLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rp'@; put 'b24oYmUpe2JlLnZpc2l0KHRoaXMpfSxsZX0oRW8pLE4xPWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZShiZSl7dmFyIE9lPXBlLmNhbGwodGhpcyxiZS5kZWZpbml0aW9uKXx8dGhpcztyZXR1cm4gT2Uub3JnVGV4dD0iIix1ZShPZSxGKGJlLGZ1bmN0aW9uKCRlKXtyZXR1cm4gdm9pZCAwIT09'@; put 'JGV9KSksT2V9cmV0dXJuIERsKGxlLHBlKSxsZX0oRW8pLFJ1PWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZShiZSl7dmFyIE9lPXBlLmNhbGwodGhpcyxiZS5kZWZpbml0aW9uKXx8dGhpcztyZXR1cm4gT2UuaWdub3JlQW1iaWd1aXRpZXM9ITEsdWUoT2UsRihiZSxmdW5jdGlvbigkZSl7cmV0'@; put 'dXJuIHZvaWQgMCE9PSRlfSkpLE9lfXJldHVybiBEbChsZSxwZSksbGV9KEVvKSxoYz1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoYmUpe3ZhciBPZT1wZS5jYWxsKHRoaXMsYmUuZGVmaW5pdGlvbil8fHRoaXM7cmV0dXJuIE9lLmlkeD0xLHVlKE9lLEYoYmUsZnVuY3Rpb24oJGUpe3JldHVy'@; put 'biB2b2lkIDAhPT0kZX0pKSxPZX1yZXR1cm4gRGwobGUscGUpLGxlfShFbyksZWQ9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKGJlKXt2YXIgT2U9cGUuY2FsbCh0aGlzLGJlLmRlZmluaXRpb24pfHx0aGlzO3JldHVybiBPZS5pZHg9MSx1ZShPZSxGKGJlLGZ1bmN0aW9uKCRlKXtyZXR1cm4g'@; put 'dm9pZCAwIT09JGV9KSksT2V9cmV0dXJuIERsKGxlLHBlKSxsZX0oRW8pLEpuPWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZShiZSl7dmFyIE9lPXBlLmNhbGwodGhpcyxiZS5kZWZpbml0aW9uKXx8dGhpcztyZXR1cm4gT2UuaWR4PTEsdWUoT2UsRihiZSxmdW5jdGlvbigkZSl7cmV0dXJuIHZv'@; put 'aWQgMCE9PSRlfSkpLE9lfXJldHVybiBEbChsZSxwZSksbGV9KEVvKSxjbD1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoYmUpe3ZhciBPZT1wZS5jYWxsKHRoaXMsYmUuZGVmaW5pdGlvbil8fHRoaXM7cmV0dXJuIE9lLmlkeD0xLHVlKE9lLEYoYmUsZnVuY3Rpb24oJGUpe3JldHVybiB2b2lk'@; put 'IDAhPT0kZX0pKSxPZX1yZXR1cm4gRGwobGUscGUpLGxlfShFbyksbWk9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKGJlKXt2YXIgT2U9cGUuY2FsbCh0aGlzLGJlLmRlZmluaXRpb24pfHx0aGlzO3JldHVybiBPZS5pZHg9MSx1ZShPZSxGKGJlLGZ1bmN0aW9uKCRlKXtyZXR1cm4gdm9pZCAw'@; put 'IT09JGV9KSksT2V9cmV0dXJuIERsKGxlLHBlKSxsZX0oRW8pLGV1PWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZShiZSl7dmFyIE9lPXBlLmNhbGwodGhpcyxiZS5kZWZpbml0aW9uKXx8dGhpcztyZXR1cm4gT2UuaWR4PTEsT2UuaWdub3JlQW1iaWd1aXRpZXM9ITEsT2UuaGFzUHJlZGljYXRl'@; put 'cz0hMSx1ZShPZSxGKGJlLGZ1bmN0aW9uKCRlKXtyZXR1cm4gdm9pZCAwIT09JGV9KSksT2V9cmV0dXJuIERsKGxlLHBlKSxsZX0oRW8pLFNsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcGUobGUpe3RoaXMuaWR4PTEsdWUodGhpcyxGKGxlLGZ1bmN0aW9uKGJlKXtyZXR1cm4gdm9pZCAwIT09YmV9'@; put 'KSl9cmV0dXJuIHBlLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24obGUpe2xlLnZpc2l0KHRoaXMpfSxwZX0oKTtmdW5jdGlvbiBjbihwZSl7cmV0dXJuIEMocGUsaXIpfWZ1bmN0aW9uIGlyKHBlKXtmdW5jdGlvbiBsZSgkZSl7cmV0dXJuIEMoJGUsaXIpfWlmKHBlIGluc3RhbmNlb2YgQnUp'@; put 'cmV0dXJue3R5cGU6Ik5vblRlcm1pbmFsIixuYW1lOnBlLm5vblRlcm1pbmFsTmFtZSxpZHg6cGUuaWR4fTtpZihwZSBpbnN0YW5jZW9mIFJ1KXJldHVybnt0eXBlOiJGbGF0IixkZWZpbml0aW9uOmxlKHBlLmRlZmluaXRpb24pfTtpZihwZSBpbnN0YW5jZW9mIGhjKXJldHVybnt0eXBlOiJP'@; put 'cHRpb24iLGlkeDpwZS5pZHgsZGVmaW5pdGlvbjpsZShwZS5kZWZpbml0aW9uKX07aWYocGUgaW5zdGFuY2VvZiBlZClyZXR1cm57dHlwZToiUmVwZXRpdGlvbk1hbmRhdG9yeSIsbmFtZTpwZS5uYW1lLGlkeDpwZS5pZHgsZGVmaW5pdGlvbjpsZShwZS5kZWZpbml0aW9uKX07aWYocGUgaW5z'@; put 'dGFuY2VvZiBKbilyZXR1cm57dHlwZToiUmVwZXRpdGlvbk1hbmRhdG9yeVdpdGhTZXBhcmF0b3IiLG5hbWU6cGUubmFtZSxpZHg6cGUuaWR4LHNlcGFyYXRvcjppcihuZXcgU2woe3Rlcm1pbmFsVHlwZTpwZS5zZXBhcmF0b3J9KSksZGVmaW5pdGlvbjpsZShwZS5kZWZpbml0aW9uKX07aWYo'@; put 'cGUgaW5zdGFuY2VvZiBtaSlyZXR1cm57dHlwZToiUmVwZXRpdGlvbldpdGhTZXBhcmF0b3IiLG5hbWU6cGUubmFtZSxpZHg6cGUuaWR4LHNlcGFyYXRvcjppcihuZXcgU2woe3Rlcm1pbmFsVHlwZTpwZS5zZXBhcmF0b3J9KSksZGVmaW5pdGlvbjpsZShwZS5kZWZpbml0aW9uKX07aWYocGUg'@; put 'aW5zdGFuY2VvZiBjbClyZXR1cm57dHlwZToiUmVwZXRpdGlvbiIsbmFtZTpwZS5uYW1lLGlkeDpwZS5pZHgsZGVmaW5pdGlvbjpsZShwZS5kZWZpbml0aW9uKX07aWYocGUgaW5zdGFuY2VvZiBldSlyZXR1cm57dHlwZToiQWx0ZXJuYXRpb24iLG5hbWU6cGUubmFtZSxpZHg6cGUuaWR4LGRl'@; put 'ZmluaXRpb246bGUocGUuZGVmaW5pdGlvbil9O2lmKHBlIGluc3RhbmNlb2YgU2wpe3ZhciBiZT17dHlwZToiVGVybWluYWwiLG5hbWU6cGUudGVybWluYWxUeXBlLm5hbWUsbGFiZWw6eWQocGUudGVybWluYWxUeXBlKSxpZHg6cGUuaWR4fSxPZT1wZS50ZXJtaW5hbFR5cGUuUEFUVEVSTjty'@; put 'ZXR1cm4gcGUudGVybWluYWxUeXBlLlBBVFRFUk4mJihiZS5wYXR0ZXJuPWsoT2UpP09lLnNvdXJjZTpPZSksYmV9aWYocGUgaW5zdGFuY2VvZiBOMSlyZXR1cm57dHlwZToiUnVsZSIsbmFtZTpwZS5uYW1lLG9yZ1RleHQ6cGUub3JnVGV4dCxkZWZpbml0aW9uOmxlKHBlLmRlZmluaXRpb24p'@; put 'fTt0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKX12YXIgZ2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLndhbGs9ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT10aGlzO3ZvaWQgMD09PWJlJiYoYmU9W10pLFIobGUuZGVmaW5pdGlvbixmdW5j'@; put 'dGlvbigkZSxTdCl7dmFyIFF0PVYobGUuZGVmaW5pdGlvbixTdCsxKTtpZigkZSBpbnN0YW5jZW9mIEJ1KU9lLndhbGtQcm9kUmVmKCRlLFF0LGJlKTtlbHNlIGlmKCRlIGluc3RhbmNlb2YgU2wpT2Uud2Fsa1Rlcm1pbmFsKCRlLFF0LGJlKTtlbHNlIGlmKCRlIGluc3RhbmNlb2YgUnUpT2Uu'@; put 'd2Fsa0ZsYXQoJGUsUXQsYmUpO2Vsc2UgaWYoJGUgaW5zdGFuY2VvZiBoYylPZS53YWxrT3B0aW9uKCRlLFF0LGJlKTtlbHNlIGlmKCRlIGluc3RhbmNlb2YgZWQpT2Uud2Fsa0F0TGVhc3RPbmUoJGUsUXQsYmUpO2Vsc2UgaWYoJGUgaW5zdGFuY2VvZiBKbilPZS53YWxrQXRMZWFzdE9uZVNl'@; put 'cCgkZSxRdCxiZSk7ZWxzZSBpZigkZSBpbnN0YW5jZW9mIG1pKU9lLndhbGtNYW55U2VwKCRlLFF0LGJlKTtlbHNlIGlmKCRlIGluc3RhbmNlb2YgY2wpT2Uud2Fsa01hbnkoJGUsUXQsYmUpO2Vsc2V7aWYoISgkZSBpbnN0YW5jZW9mIGV1KSl0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUg'@; put 'bWF0Y2giKTtPZS53YWxrT3IoJGUsUXQsYmUpfX0pfSxwZS5wcm90b3R5cGUud2Fsa1Rlcm1pbmFsPWZ1bmN0aW9uKGxlLGJlLE9lKXt9LHBlLnByb3RvdHlwZS53YWxrUHJvZFJlZj1mdW5jdGlvbihsZSxiZSxPZSl7fSxwZS5wcm90b3R5cGUud2Fsa0ZsYXQ9ZnVuY3Rpb24obGUsYmUsT2Up'@; put 'e3ZhciAkZT1iZS5jb25jYXQoT2UpO3RoaXMud2FsayhsZSwkZSl9LHBlLnByb3RvdHlwZS53YWxrT3B0aW9uPWZ1bmN0aW9uKGxlLGJlLE9lKXt2YXIgJGU9YmUuY29uY2F0KE9lKTt0aGlzLndhbGsobGUsJGUpfSxwZS5wcm90b3R5cGUud2Fsa0F0TGVhc3RPbmU9ZnVuY3Rpb24obGUsYmUs'@; put 'T2Upe3ZhciAkZT1bbmV3IGhjKHtkZWZpbml0aW9uOmxlLmRlZmluaXRpb259KV0uY29uY2F0KGJlLE9lKTt0aGlzLndhbGsobGUsJGUpfSxwZS5wcm90b3R5cGUud2Fsa0F0TGVhc3RPbmVTZXA9ZnVuY3Rpb24obGUsYmUsT2Upe3ZhciAkZT13byhsZSxiZSxPZSk7dGhpcy53YWxrKGxlLCRl'@; put 'KX0scGUucHJvdG90eXBlLndhbGtNYW55PWZ1bmN0aW9uKGxlLGJlLE9lKXt2YXIgJGU9W25ldyBoYyh7ZGVmaW5pdGlvbjpsZS5kZWZpbml0aW9ufSldLmNvbmNhdChiZSxPZSk7dGhpcy53YWxrKGxlLCRlKX0scGUucHJvdG90eXBlLndhbGtNYW55U2VwPWZ1bmN0aW9uKGxlLGJlLE9lKXt2'@; put 'YXIgJGU9d28obGUsYmUsT2UpO3RoaXMud2FsayhsZSwkZSl9LHBlLnByb3RvdHlwZS53YWxrT3I9ZnVuY3Rpb24obGUsYmUsT2Upe3ZhciAkZT10aGlzLFN0PWJlLmNvbmNhdChPZSk7UihsZS5kZWZpbml0aW9uLGZ1bmN0aW9uKFF0KXt2YXIgRW49bmV3IFJ1KHtkZWZpbml0aW9uOltRdF19'@; put 'KTskZS53YWxrKEVuLFN0KX0pfSxwZX0oKTtmdW5jdGlvbiB3byhwZSxsZSxiZSl7cmV0dXJuW25ldyBoYyh7ZGVmaW5pdGlvbjpbbmV3IFNsKHt0ZXJtaW5hbFR5cGU6cGUuc2VwYXJhdG9yfSldLmNvbmNhdChwZS5kZWZpbml0aW9uKX0pXS5jb25jYXQobGUsYmUpfXZhciBscz1mdW5jdGlv'@; put 'bigpe2Z1bmN0aW9uIHBlKCl7fXJldHVybiBwZS5wcm90b3R5cGUudmlzaXQ9ZnVuY3Rpb24obGUpe3ZhciBiZT1sZTtzd2l0Y2goYmUuY29uc3RydWN0b3Ipe2Nhc2UgQnU6cmV0dXJuIHRoaXMudmlzaXROb25UZXJtaW5hbChiZSk7Y2FzZSBSdTpyZXR1cm4gdGhpcy52aXNpdEZsYXQoYmUp'@; put 'O2Nhc2UgaGM6cmV0dXJuIHRoaXMudmlzaXRPcHRpb24oYmUpO2Nhc2UgZWQ6cmV0dXJuIHRoaXMudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5KGJlKTtjYXNlIEpuOnJldHVybiB0aGlzLnZpc2l0UmVwZXRpdGlvbk1hbmRhdG9yeVdpdGhTZXBhcmF0b3IoYmUpO2Nhc2UgbWk6cmV0dXJuIHRo'@; put 'aXMudmlzaXRSZXBldGl0aW9uV2l0aFNlcGFyYXRvcihiZSk7Y2FzZSBjbDpyZXR1cm4gdGhpcy52aXNpdFJlcGV0aXRpb24oYmUpO2Nhc2UgZXU6cmV0dXJuIHRoaXMudmlzaXRBbHRlcm5hdGlvbihiZSk7Y2FzZSBTbDpyZXR1cm4gdGhpcy52aXNpdFRlcm1pbmFsKGJlKTtjYXNlIE4xOnJl'@; put 'dHVybiB0aGlzLnZpc2l0UnVsZShiZSk7ZGVmYXVsdDp0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKX19LHBlLnByb3RvdHlwZS52aXNpdE5vblRlcm1pbmFsPWZ1bmN0aW9uKGxlKXt9LHBlLnByb3RvdHlwZS52aXNpdEZsYXQ9ZnVuY3Rpb24obGUpe30scGUucHJvdG90eXBl'@; put 'LnZpc2l0T3B0aW9uPWZ1bmN0aW9uKGxlKXt9LHBlLnByb3RvdHlwZS52aXNpdFJlcGV0aXRpb249ZnVuY3Rpb24obGUpe30scGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbk1hbmRhdG9yeT1mdW5jdGlvbihsZSl7fSxwZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5V2l0'@; put 'aFNlcGFyYXRvcj1mdW5jdGlvbihsZSl7fSxwZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uV2l0aFNlcGFyYXRvcj1mdW5jdGlvbihsZSl7fSxwZS5wcm90b3R5cGUudmlzaXRBbHRlcm5hdGlvbj1mdW5jdGlvbihsZSl7fSxwZS5wcm90b3R5cGUudmlzaXRUZXJtaW5hbD1mdW5jdGlvbihs'@; put 'ZSl7fSxwZS5wcm90b3R5cGUudmlzaXRSdWxlPWZ1bmN0aW9uKGxlKXt9LHBlfSgpLEVyPWZ1bmN0aW9uKCl7dmFyIHBlPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4ocGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE9lLCRl'@; put 'KXtPZS5fX3Byb3RvX189JGV9fHxmdW5jdGlvbihPZSwkZSl7Zm9yKHZhciBTdCBpbiAkZSkkZS5oYXNPd25Qcm9wZXJ0eShTdCkmJihPZVtTdF09JGVbU3RdKX0pKGxlLGJlKX07cmV0dXJuIGZ1bmN0aW9uKGxlLGJlKXtmdW5jdGlvbiBPZSgpe3RoaXMuY29uc3RydWN0b3I9bGV9cGUobGUs'@; put 'YmUpLGxlLnByb3RvdHlwZT1udWxsPT09YmU/T2JqZWN0LmNyZWF0ZShiZSk6KE9lLnByb3RvdHlwZT1iZS5wcm90b3R5cGUsbmV3IE9lKX19KCk7ZnVuY3Rpb24gUWEocGUsbGUpe3JldHVybiB2b2lkIDA9PT1sZSYmKGxlPVtdKSwhIShwZSBpbnN0YW5jZW9mIGhjfHxwZSBpbnN0YW5jZW9m'@; put 'IGNsfHxwZSBpbnN0YW5jZW9mIG1pKXx8KHBlIGluc3RhbmNlb2YgZXU/RyhwZS5kZWZpbml0aW9uLGZ1bmN0aW9uKE9lKXtyZXR1cm4gUWEoT2UsbGUpfSk6IShwZSBpbnN0YW5jZW9mIEJ1JiZxKGxlLHBlKSkmJnBlIGluc3RhbmNlb2YgRW8mJihwZSBpbnN0YW5jZW9mIEJ1JiZsZS5wdXNo'@; put 'KHBlKSxCKHBlLmRlZmluaXRpb24sZnVuY3Rpb24oT2Upe3JldHVybiBRYShPZSxsZSl9KSkpfWZ1bmN0aW9uIHBzKHBlKXtpZihwZSBpbnN0YW5jZW9mIEJ1KXJldHVybiJTVUJSVUxFIjtpZihwZSBpbnN0YW5jZW9mIGhjKXJldHVybiJPUFRJT04iO2lmKHBlIGluc3RhbmNlb2YgZXUpcmV0'@; put 'dXJuIk9SIjtpZihwZSBpbnN0YW5jZW9mIGVkKXJldHVybiJBVF9MRUFTVF9PTkUiO2lmKHBlIGluc3RhbmNlb2YgSm4pcmV0dXJuIkFUX0xFQVNUX09ORV9TRVAiO2lmKHBlIGluc3RhbmNlb2YgbWkpcmV0dXJuIk1BTllfU0VQIjtpZihwZSBpbnN0YW5jZW9mIGNsKXJldHVybiJNQU5ZIjtp'@; put 'ZihwZSBpbnN0YW5jZW9mIFNsKXJldHVybiJDT05TVU1FIjt0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKX12YXIgdHU9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKCl7dmFyIGJlPW51bGwhPT1wZSYmcGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBiZS5z'@; put 'ZXBhcmF0b3I9Ii0iLGJlLmRzbE1ldGhvZHM9e29wdGlvbjpbXSxhbHRlcm5hdGlvbjpbXSxyZXBldGl0aW9uOltdLHJlcGV0aXRpb25XaXRoU2VwYXJhdG9yOltdLHJlcGV0aXRpb25NYW5kYXRvcnk6W10scmVwZXRpdGlvbk1hbmRhdG9yeVdpdGhTZXBhcmF0b3I6W119LGJlfXJldHVybiBF'@; put 'cihsZSxwZSksbGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5kc2xNZXRob2RzPXtvcHRpb246W10sYWx0ZXJuYXRpb246W10scmVwZXRpdGlvbjpbXSxyZXBldGl0aW9uV2l0aFNlcGFyYXRvcjpbXSxyZXBldGl0aW9uTWFuZGF0b3J5OltdLHJlcGV0aXRpb25NYW5kYXRvcnlX'@; put 'aXRoU2VwYXJhdG9yOltdfX0sbGUucHJvdG90eXBlLnZpc2l0VGVybWluYWw9ZnVuY3Rpb24oYmUpe3ZhciBPZT1iZS50ZXJtaW5hbFR5cGUubmFtZSt0aGlzLnNlcGFyYXRvcisiVGVybWluYWwiO1codGhpcy5kc2xNZXRob2RzLE9lKXx8KHRoaXMuZHNsTWV0aG9kc1tPZV09W10pLHRoaXMu'@; put 'ZHNsTWV0aG9kc1tPZV0ucHVzaChiZSl9LGxlLnByb3RvdHlwZS52aXNpdE5vblRlcm1pbmFsPWZ1bmN0aW9uKGJlKXt2YXIgT2U9YmUubm9uVGVybWluYWxOYW1lK3RoaXMuc2VwYXJhdG9yKyJUZXJtaW5hbCI7Vyh0aGlzLmRzbE1ldGhvZHMsT2UpfHwodGhpcy5kc2xNZXRob2RzW09lXT1b'@; put 'XSksdGhpcy5kc2xNZXRob2RzW09lXS5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0T3B0aW9uPWZ1bmN0aW9uKGJlKXt0aGlzLmRzbE1ldGhvZHMub3B0aW9uLnB1c2goYmUpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uV2l0aFNlcGFyYXRvcj1mdW5jdGlvbihiZSl7dGhpcy5k'@; put 'c2xNZXRob2RzLnJlcGV0aXRpb25XaXRoU2VwYXJhdG9yLnB1c2goYmUpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5PWZ1bmN0aW9uKGJlKXt0aGlzLmRzbE1ldGhvZHMucmVwZXRpdGlvbk1hbmRhdG9yeS5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRp'@; put 'dGlvbk1hbmRhdG9yeVdpdGhTZXBhcmF0b3I9ZnVuY3Rpb24oYmUpe3RoaXMuZHNsTWV0aG9kcy5yZXBldGl0aW9uTWFuZGF0b3J5V2l0aFNlcGFyYXRvci5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbj1mdW5jdGlvbihiZSl7dGhpcy5kc2xNZXRob2RzLnJlcGV0aXRp'@; put 'b24ucHVzaChiZSl9LGxlLnByb3RvdHlwZS52aXNpdEFsdGVybmF0aW9uPWZ1bmN0aW9uKGJlKXt0aGlzLmRzbE1ldGhvZHMuYWx0ZXJuYXRpb24ucHVzaChiZSl9LGxlfShscyksZ3M9bmV3IHR1O2Z1bmN0aW9uIExsKHBlKXtpZihwZSBpbnN0YW5jZW9mIEJ1KXJldHVybiBMbChwZS5yZWZl'@; put 'cmVuY2VkUnVsZSk7aWYocGUgaW5zdGFuY2VvZiBTbClyZXR1cm4gZnVuY3Rpb24gT2wocGUpe3JldHVybltwZS50ZXJtaW5hbFR5cGVdfShwZSk7aWYoZnVuY3Rpb24gdGMocGUpe3JldHVybiBwZSBpbnN0YW5jZW9mIFJ1fHxwZSBpbnN0YW5jZW9mIGhjfHxwZSBpbnN0YW5jZW9mIGNsfHxw'@; put 'ZSBpbnN0YW5jZW9mIGVkfHxwZSBpbnN0YW5jZW9mIEpufHxwZSBpbnN0YW5jZW9mIG1pfHxwZSBpbnN0YW5jZW9mIFNsfHxwZSBpbnN0YW5jZW9mIE4xfShwZSkpcmV0dXJuIGZ1bmN0aW9uIEFoKHBlKXtmb3IodmFyIFN0LGxlPVtdLGJlPXBlLmRlZmluaXRpb24sT2U9MCwkZT1iZS5sZW5n'@; put 'dGg+T2UsUXQ9ITA7JGUmJlF0OylRdD1RYShTdD1iZVtPZV0pLGxlPWxlLmNvbmNhdChMbChTdCkpLCRlPWJlLmxlbmd0aD4oT2UrPTEpO3JldHVybiBYKGxlKX0ocGUpO2lmKGZ1bmN0aW9uIHVsKHBlKXtyZXR1cm4gcGUgaW5zdGFuY2VvZiBldX0ocGUpKXJldHVybiBmdW5jdGlvbiBKaChw'@; put 'ZSl7cmV0dXJuIFgodyhDKHBlLmRlZmluaXRpb24sZnVuY3Rpb24oYmUpe3JldHVybiBMbChiZSl9KSkpfShwZSk7dGhyb3cgRXJyb3IoIm5vbiBleGhhdXN0aXZlIG1hdGNoIil9dmFyIEl1PWZ1bmN0aW9uKCl7dmFyIHBlPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4ocGU9T2JqZWN0LnNldFBy'@; put 'b3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE9lLCRlKXtPZS5fX3Byb3RvX189JGV9fHxmdW5jdGlvbihPZSwkZSl7Zm9yKHZhciBTdCBpbiAkZSkkZS5oYXNPd25Qcm9wZXJ0eShTdCkmJihPZVtTdF09JGVbU3RdKX0pKGxlLGJlKX07cmV0dXJu'@; put 'IGZ1bmN0aW9uKGxlLGJlKXtmdW5jdGlvbiBPZSgpe3RoaXMuY29uc3RydWN0b3I9bGV9cGUobGUsYmUpLGxlLnByb3RvdHlwZT1udWxsPT09YmU/T2JqZWN0LmNyZWF0ZShiZSk6KE9lLnByb3RvdHlwZT1iZS5wcm90b3R5cGUsbmV3IE9lKX19KCksTWM9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9u'@; put 'IGxlKGJlKXt2YXIgT2U9cGUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gT2UudG9wUHJvZD1iZSxPZS5mb2xsb3dzPXt9LE9lfXJldHVybiBJdShsZSxwZSksbGUucHJvdG90eXBlLnN0YXJ0V2Fsa2luZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndhbGsodGhpcy50b3BQcm9kKSx0aGlzLmZv'@; put 'bGxvd3N9LGxlLnByb3RvdHlwZS53YWxrVGVybWluYWw9ZnVuY3Rpb24oYmUsT2UsJGUpe30sbGUucHJvdG90eXBlLndhbGtQcm9kUmVmPWZ1bmN0aW9uKGJlLE9lLCRlKXt2YXIgU3Q9ZnVuY3Rpb24gcmgocGUsbGUpe3JldHVybiBwZS5uYW1lK2xlKyJffklOfl8ifShiZS5yZWZlcmVuY2Vk'@; put 'UnVsZSxiZS5pZHgpK3RoaXMudG9wUHJvZC5uYW1lLFF0PU9lLmNvbmNhdCgkZSksY3I9TGwobmV3IFJ1KHtkZWZpbml0aW9uOlF0fSkpO3RoaXMuZm9sbG93c1tTdF09Y3J9LGxlfShnaSksXzI9MTAyNCxUYz0xMjgwLG1zPTE1MzY7ZnVuY3Rpb24gRjEocGUsbGUsYmUpe3JldHVybiBiZXxs'@; put 'ZXxwZX1mdW5jdGlvbiBuOChwZSxsZSxiZSxPZSl7dmFyICRlPU9lKzE8PDI0O3JldHVybiBGMShwZSxsZSxiZSl8JGV9dmFyIElzPWZ1bmN0aW9uKCl7dmFyIHBlPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4ocGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNl'@; put 'b2YgQXJyYXkmJmZ1bmN0aW9uKE9lLCRlKXtPZS5fX3Byb3RvX189JGV9fHxmdW5jdGlvbihPZSwkZSl7Zm9yKHZhciBTdCBpbiAkZSkkZS5oYXNPd25Qcm9wZXJ0eShTdCkmJihPZVtTdF09JGVbU3RdKX0pKGxlLGJlKX07cmV0dXJuIGZ1bmN0aW9uKGxlLGJlKXtmdW5jdGlvbiBPZSgpe3Ro'@; put 'aXMuY29uc3RydWN0b3I9bGV9cGUobGUsYmUpLGxlLnByb3RvdHlwZT1udWxsPT09YmU/T2JqZWN0LmNyZWF0ZShiZSk6KE9lLnByb3RvdHlwZT1iZS5wcm90b3R5cGUsbmV3IE9lKX19KCk7ZnVuY3Rpb24gcWkocGUsbGUpeyEwPT09aXNOYU4ocGUuc3RhcnRPZmZzZXQpPyhwZS5zdGFydE9m'@; put 'ZnNldD1sZS5zdGFydE9mZnNldCxwZS5lbmRPZmZzZXQ9bGUuZW5kT2Zmc2V0KTpwZS5lbmRPZmZzZXQ8bGUuZW5kT2Zmc2V0JiYocGUuZW5kT2Zmc2V0PWxlLmVuZE9mZnNldCl9ZnVuY3Rpb24gemEocGUsbGUpeyEwPT09aXNOYU4ocGUuc3RhcnRPZmZzZXQpPyhwZS5zdGFydE9mZnNldD1s'@; put 'ZS5zdGFydE9mZnNldCxwZS5zdGFydENvbHVtbj1sZS5zdGFydENvbHVtbixwZS5zdGFydExpbmU9bGUuc3RhcnRMaW5lLHBlLmVuZE9mZnNldD1sZS5lbmRPZmZzZXQscGUuZW5kQ29sdW1uPWxlLmVuZENvbHVtbixwZS5lbmRMaW5lPWxlLmVuZExpbmUpOnBlLmVuZE9mZnNldDxsZS5lbmRP'@; put 'ZmZzZXQmJihwZS5lbmRPZmZzZXQ9bGUuZW5kT2Zmc2V0LHBlLmVuZENvbHVtbj1sZS5lbmRDb2x1bW4scGUuZW5kTGluZT1sZS5lbmRMaW5lKX1mdW5jdGlvbiB5dChwZSxsZSxiZSl7dm9pZCAwPT09cGUuY2hpbGRyZW5bbGVdP3BlLmNoaWxkcmVuW2xlXT1bYmVdOnBlLmNoaWxkcmVuW2xl'@; put 'XS5wdXNoKGJlKX12YXIganQ9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKGJlKXt2YXIgT2U9cGUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gT2UucmVzdWx0PVtdLE9lLnJ1bGVJZHg9YmUsT2V9cmV0dXJuIElzKGxlLHBlKSxsZS5wcm90b3R5cGUuY29sbGVjdE5hbWVkRFNMTWV0aG9kPWZ1'@; put 'bmN0aW9uKGJlLE9lLCRlKXtpZighVShiZS5uYW1lKSl7dmFyIFN0PXZvaWQgMDtpZihiZSBpbnN0YW5jZW9mIGhjfHxiZSBpbnN0YW5jZW9mIGNsfHxiZSBpbnN0YW5jZW9mIGVkfHxiZSBpbnN0YW5jZW9mIGV1KVN0PW5ldyBPZSh7ZGVmaW5pdGlvbjpiZS5kZWZpbml0aW9uLGlkeDpiZS5p'@; put 'ZHh9KTtlbHNle2lmKCEoYmUgaW5zdGFuY2VvZiBKbnx8YmUgaW5zdGFuY2VvZiBtaSkpdGhyb3cgRXJyb3IoIm5vbiBleGhhdXN0aXZlIG1hdGNoIik7U3Q9bmV3IE9lKHtkZWZpbml0aW9uOmJlLmRlZmluaXRpb24saWR4OmJlLmlkeCxzZXBhcmF0b3I6YmUuc2VwYXJhdG9yfSl9dmFyIFF0'@; put 'PVtTdF0sRW49RjEodGhpcy5ydWxlSWR4LCRlLGJlLmlkeCk7dGhpcy5yZXN1bHQucHVzaCh7ZGVmOlF0LGtleTpFbixuYW1lOmJlLm5hbWUsb3JnUHJvZDpiZX0pfX0sbGUucHJvdG90eXBlLnZpc2l0T3B0aW9uPWZ1bmN0aW9uKGJlKXt0aGlzLmNvbGxlY3ROYW1lZERTTE1ldGhvZChiZSxo'@; put 'Yyw1MTIpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uPWZ1bmN0aW9uKGJlKXt0aGlzLmNvbGxlY3ROYW1lZERTTE1ldGhvZChiZSxjbCw3NjgpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5PWZ1bmN0aW9uKGJlKXt0aGlzLmNvbGxlY3ROYW1lZERTTE1ldGhv'@; put 'ZChiZSxlZCxfMil9LGxlLnByb3RvdHlwZS52aXNpdFJlcGV0aXRpb25NYW5kYXRvcnlXaXRoU2VwYXJhdG9yPWZ1bmN0aW9uKGJlKXt0aGlzLmNvbGxlY3ROYW1lZERTTE1ldGhvZChiZSxKbixtcyl9LGxlLnByb3RvdHlwZS52aXNpdFJlcGV0aXRpb25XaXRoU2VwYXJhdG9yPWZ1bmN0aW9u'@; put 'KGJlKXt0aGlzLmNvbGxlY3ROYW1lZERTTE1ldGhvZChiZSxtaSxUYyl9LGxlLnByb3RvdHlwZS52aXNpdEFsdGVybmF0aW9uPWZ1bmN0aW9uKGJlKXt2YXIgT2U9dGhpczt0aGlzLmNvbGxlY3ROYW1lZERTTE1ldGhvZChiZSxldSwyNTYpO3ZhciAkZT1iZS5kZWZpbml0aW9uLmxlbmd0aD4x'@; put 'O1IoYmUuZGVmaW5pdGlvbixmdW5jdGlvbihTdCxRdCl7aWYoIVUoU3QubmFtZSkpe3ZhciBFbjtFbj0kZT9bbmV3IGhjKHtkZWZpbml0aW9uOlN0LmRlZmluaXRpb259KV06U3QuZGVmaW5pdGlvbjt2YXIgY3I9bjgoT2UucnVsZUlkeCwyNTYsYmUuaWR4LFF0KTtPZS5yZXN1bHQucHVzaCh7'@; put 'ZGVmOkVuLGtleTpjcixuYW1lOlN0Lm5hbWUsb3JnUHJvZDpTdH0pfX0pfSxsZX0obHMpLG1uPWZ1bmN0aW9uKCl7dmFyIHBlPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4ocGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE9l'@; put 'LCRlKXtPZS5fX3Byb3RvX189JGV9fHxmdW5jdGlvbihPZSwkZSl7Zm9yKHZhciBTdCBpbiAkZSkkZS5oYXNPd25Qcm9wZXJ0eShTdCkmJihPZVtTdF09JGVbU3RdKX0pKGxlLGJlKX07cmV0dXJuIGZ1bmN0aW9uKGxlLGJlKXtmdW5jdGlvbiBPZSgpe3RoaXMuY29uc3RydWN0b3I9bGV9cGUo'@; put 'bGUsYmUpLGxlLnByb3RvdHlwZT1udWxsPT09YmU/T2JqZWN0LmNyZWF0ZShiZSk6KE9lLnByb3RvdHlwZT1iZS5wcm90b3R5cGUsbmV3IE9lKX19KCksUW49ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKGJlLE9lKXt2YXIgJGU9cGUuY2FsbCh0aGlzLGJlLE9lKXx8dGhpcztyZXR1cm4gJGUu'@; put 'cGF0aD1PZSwkZS5uZXh0VGVybWluYWxOYW1lPSIiLCRlLm5leHRUZXJtaW5hbE9jY3VycmVuY2U9MCwkZS5uZXh0VGVybWluYWxOYW1lPSRlLnBhdGgubGFzdFRvay5uYW1lLCRlLm5leHRUZXJtaW5hbE9jY3VycmVuY2U9JGUucGF0aC5sYXN0VG9rT2NjdXJyZW5jZSwkZX1yZXR1cm4gbW4o'@; put 'bGUscGUpLGxlLnByb3RvdHlwZS53YWxrVGVybWluYWw9ZnVuY3Rpb24oYmUsT2UsJGUpe2lmKHRoaXMuaXNBdEVuZE9mUGF0aCYmYmUudGVybWluYWxUeXBlLm5hbWU9PT10aGlzLm5leHRUZXJtaW5hbE5hbWUmJmJlLmlkeD09PXRoaXMubmV4dFRlcm1pbmFsT2NjdXJyZW5jZSYmIXRoaXMu'@; put 'Zm91bmQpe3ZhciBTdD1PZS5jb25jYXQoJGUpLFF0PW5ldyBSdSh7ZGVmaW5pdGlvbjpTdH0pO3RoaXMucG9zc2libGVUb2tUeXBlcz1MbChRdCksdGhpcy5mb3VuZD0hMH19LGxlfShmdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoYmUsT2Upe3ZhciAkZT1wZS5jYWxsKHRoaXMpfHx0aGlzO3Jl'@; put 'dHVybiAkZS50b3BQcm9kPWJlLCRlLnBhdGg9T2UsJGUucG9zc2libGVUb2tUeXBlcz1bXSwkZS5uZXh0UHJvZHVjdGlvbk5hbWU9IiIsJGUubmV4dFByb2R1Y3Rpb25PY2N1cnJlbmNlPTAsJGUuZm91bmQ9ITEsJGUuaXNBdEVuZE9mUGF0aD0hMSwkZX1yZXR1cm4gbW4obGUscGUpLGxlLnBy'@; put 'b3RvdHlwZS5zdGFydFdhbGtpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLmZvdW5kPSExLHRoaXMucGF0aC5ydWxlU3RhY2tbMF0hPT10aGlzLnRvcFByb2QubmFtZSl0aHJvdyBFcnJvcigiVGhlIHBhdGggZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgd2Fsa2VyJ3MgdG9wIFJ1bGUhIik7cmV0dXJu'@; put 'IHRoaXMucnVsZVN0YWNrPXJlKHRoaXMucGF0aC5ydWxlU3RhY2spLnJldmVyc2UoKSx0aGlzLm9jY3VycmVuY2VTdGFjaz1yZSh0aGlzLnBhdGgub2NjdXJyZW5jZVN0YWNrKS5yZXZlcnNlKCksdGhpcy5ydWxlU3RhY2sucG9wKCksdGhpcy5vY2N1cnJlbmNlU3RhY2sucG9wKCksdGhpcy51'@; put 'cGRhdGVFeHBlY3RlZE5leHQoKSx0aGlzLndhbGsodGhpcy50b3BQcm9kKSx0aGlzLnBvc3NpYmxlVG9rVHlwZXN9LGxlLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKGJlLE9lKXt2b2lkIDA9PT1PZSYmKE9lPVtdKSx0aGlzLmZvdW5kfHxwZS5wcm90b3R5cGUud2Fsay5jYWxsKHRoaXMsYmUs'@; put 'T2UpfSxsZS5wcm90b3R5cGUud2Fsa1Byb2RSZWY9ZnVuY3Rpb24oYmUsT2UsJGUpe2lmKGJlLnJlZmVyZW5jZWRSdWxlLm5hbWU9PT10aGlzLm5leHRQcm9kdWN0aW9uTmFtZSYmYmUuaWR4PT09dGhpcy5uZXh0UHJvZHVjdGlvbk9jY3VycmVuY2Upe3ZhciBTdD1PZS5jb25jYXQoJGUpO3Ro'@; put 'aXMudXBkYXRlRXhwZWN0ZWROZXh0KCksdGhpcy53YWxrKGJlLnJlZmVyZW5jZWRSdWxlLFN0KX19LGxlLnByb3RvdHlwZS51cGRhdGVFeHBlY3RlZE5leHQ9ZnVuY3Rpb24oKXtjKHRoaXMucnVsZVN0YWNrKT8odGhpcy5uZXh0UHJvZHVjdGlvbk5hbWU9IiIsdGhpcy5uZXh0UHJvZHVjdGlv'@; put 'bk9jY3VycmVuY2U9MCx0aGlzLmlzQXRFbmRPZlBhdGg9ITApOih0aGlzLm5leHRQcm9kdWN0aW9uTmFtZT10aGlzLnJ1bGVTdGFjay5wb3AoKSx0aGlzLm5leHRQcm9kdWN0aW9uT2NjdXJyZW5jZT10aGlzLm9jY3VycmVuY2VTdGFjay5wb3AoKSl9LGxlfShnaSkpLGxyPWZ1bmN0aW9uKHBl'@; put 'KXtmdW5jdGlvbiBsZShiZSxPZSl7dmFyICRlPXBlLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuICRlLnRvcFJ1bGU9YmUsJGUub2NjdXJyZW5jZT1PZSwkZS5yZXN1bHQ9e3Rva2VuOnZvaWQgMCxvY2N1cnJlbmNlOnZvaWQgMCxpc0VuZE9mUnVsZTp2b2lkIDB9LCRlfXJldHVybiBtbihsZSxw'@; put 'ZSksbGUucHJvdG90eXBlLnN0YXJ0V2Fsa2luZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndhbGsodGhpcy50b3BSdWxlKSx0aGlzLnJlc3VsdH0sbGV9KGdpKSxpaT1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoKXtyZXR1cm4gbnVsbCE9PXBlJiZwZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8'@; put 'fHRoaXN9cmV0dXJuIG1uKGxlLHBlKSxsZS5wcm90b3R5cGUud2Fsa01hbnk9ZnVuY3Rpb24oYmUsT2UsJGUpe2lmKGJlLmlkeD09PXRoaXMub2NjdXJyZW5jZSl7dmFyIFN0PVMoT2UuY29uY2F0KCRlKSk7dGhpcy5yZXN1bHQuaXNFbmRPZlJ1bGU9dm9pZCAwPT09U3QsU3QgaW5zdGFuY2Vv'@; put 'ZiBTbCYmKHRoaXMucmVzdWx0LnRva2VuPVN0LnRlcm1pbmFsVHlwZSx0aGlzLnJlc3VsdC5vY2N1cnJlbmNlPVN0LmlkeCl9ZWxzZSBwZS5wcm90b3R5cGUud2Fsa01hbnkuY2FsbCh0aGlzLGJlLE9lLCRlKX0sbGV9KGxyKSxraT1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoKXtyZXR1cm4g'@; put 'bnVsbCE9PXBlJiZwZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG1uKGxlLHBlKSxsZS5wcm90b3R5cGUud2Fsa01hbnlTZXA9ZnVuY3Rpb24oYmUsT2UsJGUpe2lmKGJlLmlkeD09PXRoaXMub2NjdXJyZW5jZSl7dmFyIFN0PVMoT2UuY29uY2F0KCRlKSk7dGhpcy5yZXN1'@; put 'bHQuaXNFbmRPZlJ1bGU9dm9pZCAwPT09U3QsU3QgaW5zdGFuY2VvZiBTbCYmKHRoaXMucmVzdWx0LnRva2VuPVN0LnRlcm1pbmFsVHlwZSx0aGlzLnJlc3VsdC5vY2N1cnJlbmNlPVN0LmlkeCl9ZWxzZSBwZS5wcm90b3R5cGUud2Fsa01hbnlTZXAuY2FsbCh0aGlzLGJlLE9lLCRlKX0sbGV9'@; put 'KGxyKSxXaT1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoKXtyZXR1cm4gbnVsbCE9PXBlJiZwZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG1uKGxlLHBlKSxsZS5wcm90b3R5cGUud2Fsa0F0TGVhc3RPbmU9ZnVuY3Rpb24oYmUsT2UsJGUpe2lmKGJlLmlkeD09PXRoaXMu'@; put 'b2NjdXJyZW5jZSl7dmFyIFN0PVMoT2UuY29uY2F0KCRlKSk7dGhpcy5yZXN1bHQuaXNFbmRPZlJ1bGU9dm9pZCAwPT09U3QsU3QgaW5zdGFuY2VvZiBTbCYmKHRoaXMucmVzdWx0LnRva2VuPVN0LnRlcm1pbmFsVHlwZSx0aGlzLnJlc3VsdC5vY2N1cnJlbmNlPVN0LmlkeCl9ZWxzZSBwZS5w'@; put 'cm90b3R5cGUud2Fsa0F0TGVhc3RPbmUuY2FsbCh0aGlzLGJlLE9lLCRlKX0sbGV9KGxyKSxLaT1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoKXtyZXR1cm4gbnVsbCE9PXBlJiZwZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG1uKGxlLHBlKSxsZS5wcm90b3R5cGUud2Fs'@; put 'a0F0TGVhc3RPbmVTZXA9ZnVuY3Rpb24oYmUsT2UsJGUpe2lmKGJlLmlkeD09PXRoaXMub2NjdXJyZW5jZSl7dmFyIFN0PVMoT2UuY29uY2F0KCRlKSk7dGhpcy5yZXN1bHQuaXNFbmRPZlJ1bGU9dm9pZCAwPT09U3QsU3QgaW5zdGFuY2VvZiBTbCYmKHRoaXMucmVzdWx0LnRva2VuPVN0LnRl'@; put 'cm1pbmFsVHlwZSx0aGlzLnJlc3VsdC5vY2N1cnJlbmNlPVN0LmlkeCl9ZWxzZSBwZS5wcm90b3R5cGUud2Fsa0F0TGVhc3RPbmVTZXAuY2FsbCh0aGlzLGJlLE9lLCRlKX0sbGV9KGxyKTtmdW5jdGlvbiBOYShwZSxsZSxiZSl7dm9pZCAwPT09YmUmJihiZT1bXSksYmU9cmUoYmUpO3ZhciBP'@; put 'ZT1bXSwkZT0wO2Z1bmN0aW9uIFF0KFVyKXt2YXIgcGk9TmEoZnVuY3Rpb24gU3QoVXIpe3JldHVybiBVci5jb25jYXQoVihwZSwkZSsxKSl9KFVyKSxsZSxiZSk7cmV0dXJuIE9lLmNvbmNhdChwaSl9Zm9yKDtiZS5sZW5ndGg8bGUmJiRlPHBlLmxlbmd0aDspe3ZhciBFbj1wZVskZV07aWYo'@; put 'RW4gaW5zdGFuY2VvZiBSdSlyZXR1cm4gUXQoRW4uZGVmaW5pdGlvbik7aWYoRW4gaW5zdGFuY2VvZiBCdSlyZXR1cm4gUXQoRW4uZGVmaW5pdGlvbik7aWYoRW4gaW5zdGFuY2VvZiBoYylPZT1RdChFbi5kZWZpbml0aW9uKTtlbHNle2lmKEVuIGluc3RhbmNlb2YgZWQpcmV0dXJuIFF0KGNy'@; put 'PUVuLmRlZmluaXRpb24uY29uY2F0KFtuZXcgY2woe2RlZmluaXRpb246RW4uZGVmaW5pdGlvbn0pXSkpO2lmKEVuIGluc3RhbmNlb2YgSm4pcmV0dXJuIFF0KGNyPVtuZXcgUnUoe2RlZmluaXRpb246RW4uZGVmaW5pdGlvbn0pLG5ldyBjbCh7ZGVmaW5pdGlvbjpbbmV3IFNsKHt0ZXJtaW5h'@; put 'bFR5cGU6RW4uc2VwYXJhdG9yfSldLmNvbmNhdChFbi5kZWZpbml0aW9uKX0pXSk7aWYoRW4gaW5zdGFuY2VvZiBtaSl7dmFyIGNyPUVuLmRlZmluaXRpb24uY29uY2F0KFtuZXcgY2woe2RlZmluaXRpb246W25ldyBTbCh7dGVybWluYWxUeXBlOkVuLnNlcGFyYXRvcn0pXS5jb25jYXQoRW4u'@; put 'ZGVmaW5pdGlvbil9KV0pO09lPVF0KGNyKX1lbHNlIGlmKEVuIGluc3RhbmNlb2YgY2wpY3I9RW4uZGVmaW5pdGlvbi5jb25jYXQoW25ldyBjbCh7ZGVmaW5pdGlvbjpFbi5kZWZpbml0aW9ufSldKSxPZT1RdChjcik7ZWxzZXtpZihFbiBpbnN0YW5jZW9mIGV1KXJldHVybiBSKEVuLmRlZmlu'@; put 'aXRpb24sZnVuY3Rpb24oVXIpe09lPVF0KFVyLmRlZmluaXRpb24pfSksT2U7aWYoIShFbiBpbnN0YW5jZW9mIFNsKSl0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKTtiZS5wdXNoKEVuLnRlcm1pbmFsVHlwZSl9fSRlKyt9cmV0dXJuIE9lLnB1c2goe3BhcnRpYWxQYXRoOmJl'@; put 'LHN1ZmZpeERlZjpWKHBlLCRlKX0pLE9lfWZ1bmN0aW9uIFJvKHBlLGxlLGJlLE9lKXt2YXIgJGU9IkVYSVRfTk9ORV9URVJNSU5BTCIsU3Q9WyRlXSxRdD0iRVhJVF9BTFRFUk5BVElWRSIsRW49ITEsY3I9bGUubGVuZ3RoLFVyPWNyLU9lLTEscGk9W10sRHI9W107Zm9yKERyLnB1c2goe2lk'@; put 'eDotMSxkZWY6cGUscnVsZVN0YWNrOltdLG9jY3VycmVuY2VTdGFjazpbXX0pOyFjKERyKTspe3ZhciBKaT1Eci5wb3AoKTtpZihKaSE9PVF0KXt2YXIgeG89SmkuZGVmLFlpPUppLmlkeCxkcz1KaS5ydWxlU3RhY2ssUHM9Smkub2NjdXJyZW5jZVN0YWNrO2lmKCFjKHhvKSl7dmFyIGFhPXhv'@; put 'WzBdO2lmKGFhPT09JGUpe3ZhciBJbz17aWR4OllpLGRlZjpWKHhvKSxydWxlU3RhY2s6Tihkcyksb2NjdXJyZW5jZVN0YWNrOk4oUHMpfTtEci5wdXNoKElvKX1lbHNlIGlmKGFhIGluc3RhbmNlb2YgU2wpaWYoWWk8Y3ItMSl7dmFyIFppPVlpKzE7YmUobGVbWmldLGFhLnRlcm1pbmFsVHlw'@; put 'ZSkmJihJbz17aWR4OlppLGRlZjpWKHhvKSxydWxlU3RhY2s6ZHMsb2NjdXJyZW5jZVN0YWNrOlBzfSxEci5wdXNoKElvKSl9ZWxzZXtpZihZaSE9PWNyLTEpdGhyb3cgRXJyb3IoIm5vbiBleGhhdXN0aXZlIG1hdGNoIik7cGkucHVzaCh7bmV4dFRva2VuVHlwZTphYS50ZXJtaW5hbFR5cGUs'@; put 'bmV4dFRva2VuT2NjdXJyZW5jZTphYS5pZHgscnVsZVN0YWNrOmRzLG9jY3VycmVuY2VTdGFjazpQc30pLEVuPSEwfWVsc2UgaWYoYWEgaW5zdGFuY2VvZiBCdSl7dmFyIGpsPXJlKGRzKTtqbC5wdXNoKGFhLm5vblRlcm1pbmFsTmFtZSk7dmFyIFYxPXJlKFBzKTtWMS5wdXNoKGFhLmlkeCks'@; put 'SW89e2lkeDpZaSxkZWY6YWEuZGVmaW5pdGlvbi5jb25jYXQoU3QsVih4bykpLHJ1bGVTdGFjazpqbCxvY2N1cnJlbmNlU3RhY2s6VjF9LERyLnB1c2goSW8pfWVsc2UgaWYoYWEgaW5zdGFuY2VvZiBoYyl7dmFyIHBjPXtpZHg6WWksZGVmOlYoeG8pLHJ1bGVTdGFjazpkcyxvY2N1cnJlbmNl'@; put 'U3RhY2s6UHN9O0RyLnB1c2gocGMpLERyLnB1c2goUXQpO3ZhciBVZD17aWR4OllpLGRlZjphYS5kZWZpbml0aW9uLmNvbmNhdChWKHhvKSkscnVsZVN0YWNrOmRzLG9jY3VycmVuY2VTdGFjazpQc307RHIucHVzaChVZCl9ZWxzZSBpZihhYSBpbnN0YW5jZW9mIGVkKXt2YXIgbDE9bmV3IGNs'@; put 'KHtkZWZpbml0aW9uOmFhLmRlZmluaXRpb24saWR4OmFhLmlkeH0pLG9kPWFhLmRlZmluaXRpb24uY29uY2F0KFtsMV0sVih4bykpO0RyLnB1c2goSW89e2lkeDpZaSxkZWY6b2QscnVsZVN0YWNrOmRzLG9jY3VycmVuY2VTdGFjazpQc30pfWVsc2UgaWYoYWEgaW5zdGFuY2VvZiBKbil7dmFy'@; put 'IFpjPW5ldyBTbCh7dGVybWluYWxUeXBlOmFhLnNlcGFyYXRvcn0pO2wxPW5ldyBjbCh7ZGVmaW5pdGlvbjpbWmNdLmNvbmNhdChhYS5kZWZpbml0aW9uKSxpZHg6YWEuaWR4fSksb2Q9YWEuZGVmaW5pdGlvbi5jb25jYXQoW2wxXSxWKHhvKSksRHIucHVzaChJbz17aWR4OllpLGRlZjpvZCxy'@; put 'dWxlU3RhY2s6ZHMsb2NjdXJyZW5jZVN0YWNrOlBzfSl9ZWxzZSBpZihhYSBpbnN0YW5jZW9mIG1pKXtwYz17aWR4OllpLGRlZjpWKHhvKSxydWxlU3RhY2s6ZHMsb2NjdXJyZW5jZVN0YWNrOlBzfSxEci5wdXNoKHBjKSxEci5wdXNoKFF0KSxaYz1uZXcgU2woe3Rlcm1pbmFsVHlwZTphYS5z'@; put 'ZXBhcmF0b3J9KTt2YXIgaDA9bmV3IGNsKHtkZWZpbml0aW9uOltaY10uY29uY2F0KGFhLmRlZmluaXRpb24pLGlkeDphYS5pZHh9KTtvZD1hYS5kZWZpbml0aW9uLmNvbmNhdChbaDBdLFYoeG8pKSxEci5wdXNoKFVkPXtpZHg6WWksZGVmOm9kLHJ1bGVTdGFjazpkcyxvY2N1cnJlbmNlU3Rh'@; put 'Y2s6UHN9KX1lbHNlIGlmKGFhIGluc3RhbmNlb2YgY2wpcGM9e2lkeDpZaSxkZWY6Vih4bykscnVsZVN0YWNrOmRzLG9jY3VycmVuY2VTdGFjazpQc30sRHIucHVzaChwYyksRHIucHVzaChRdCksaDA9bmV3IGNsKHtkZWZpbml0aW9uOmFhLmRlZmluaXRpb24saWR4OmFhLmlkeH0pLG9kPWFh'@; put 'LmRlZmluaXRpb24uY29uY2F0KFtoMF0sVih4bykpLERyLnB1c2goVWQ9e2lkeDpZaSxkZWY6b2QscnVsZVN0YWNrOmRzLG9jY3VycmVuY2VTdGFjazpQc30pO2Vsc2UgaWYoYWEgaW5zdGFuY2VvZiBldSlmb3IodmFyIFMyPWFhLmRlZmluaXRpb24ubGVuZ3RoLTE7UzI+PTA7UzItLSl7dmFy'@; put 'IE1mPXtpZHg6WWksZGVmOmFhLmRlZmluaXRpb25bUzJdLmRlZmluaXRpb24uY29uY2F0KFYoeG8pKSxydWxlU3RhY2s6ZHMsb2NjdXJyZW5jZVN0YWNrOlBzfTtEci5wdXNoKE1mKSxEci5wdXNoKFF0KX1lbHNlIGlmKGFhIGluc3RhbmNlb2YgUnUpRHIucHVzaCh7aWR4OllpLGRlZjphYS5k'@; put 'ZWZpbml0aW9uLmNvbmNhdChWKHhvKSkscnVsZVN0YWNrOmRzLG9jY3VycmVuY2VTdGFjazpQc30pO2Vsc2V7aWYoIShhYSBpbnN0YW5jZW9mIE4xKSl0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKTtEci5wdXNoKGRsKGFhLFlpLGRzLFBzKSl9fX1lbHNlIEVuJiZMKERyKS5p'@; put 'ZHg8PVVyJiZEci5wb3AoKX1yZXR1cm4gcGl9ZnVuY3Rpb24gZGwocGUsbGUsYmUsT2Upe3ZhciAkZT1yZShiZSk7JGUucHVzaChwZS5uYW1lKTt2YXIgU3Q9cmUoT2UpO3JldHVybiBTdC5wdXNoKDEpLHtpZHg6bGUsZGVmOnBlLmRlZmluaXRpb24scnVsZVN0YWNrOiRlLG9jY3VycmVuY2VT'@; put 'dGFjazpTdH19dmFyIG9yPWZ1bmN0aW9uKCl7dmFyIHBlPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4ocGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE9lLCRlKXtPZS5fX3Byb3RvX189JGV9fHxmdW5jdGlvbihPZSwkZSl7'@; put 'Zm9yKHZhciBTdCBpbiAkZSkkZS5oYXNPd25Qcm9wZXJ0eShTdCkmJihPZVtTdF09JGVbU3RdKX0pKGxlLGJlKX07cmV0dXJuIGZ1bmN0aW9uKGxlLGJlKXtmdW5jdGlvbiBPZSgpe3RoaXMuY29uc3RydWN0b3I9bGV9cGUobGUsYmUpLGxlLnByb3RvdHlwZT1udWxsPT09YmU/T2JqZWN0LmNy'@; put 'ZWF0ZShiZSk6KE9lLnByb3RvdHlwZT1iZS5wcm90b3R5cGUsbmV3IE9lKX19KCksY289ZnVuY3Rpb24ocGUpe3JldHVybiBwZVtwZS5PUFRJT049MF09Ik9QVElPTiIscGVbcGUuUkVQRVRJVElPTj0xXT0iUkVQRVRJVElPTiIscGVbcGUuUkVQRVRJVElPTl9NQU5EQVRPUlk9Ml09IlJFUEVU'@; put 'SVRJT05fTUFOREFUT1JZIixwZVtwZS5SRVBFVElUSU9OX01BTkRBVE9SWV9XSVRIX1NFUEFSQVRPUj0zXT0iUkVQRVRJVElPTl9NQU5EQVRPUllfV0lUSF9TRVBBUkFUT1IiLHBlW3BlLlJFUEVUSVRJT05fV0lUSF9TRVBBUkFUT1I9NF09IlJFUEVUSVRJT05fV0lUSF9TRVBBUkFUT1IiLHBl'@; put 'W3BlLkFMVEVSTkFUSU9OPTVdPSJBTFRFUk5BVElPTiIscGV9KGNvfHx7fSksV2M9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKGJlLE9lLCRlKXt2YXIgU3Q9cGUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gU3QudG9wUHJvZD1iZSxTdC50YXJnZXRPY2N1cnJlbmNlPU9lLFN0LnRhcmdldFBy'@; put 'b2RUeXBlPSRlLFN0fXJldHVybiBvcihsZSxwZSksbGUucHJvdG90eXBlLnN0YXJ0V2Fsa2luZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndhbGsodGhpcy50b3BQcm9kKSx0aGlzLnJlc3REZWZ9LGxlLnByb3RvdHlwZS5jaGVja0lzVGFyZ2V0PWZ1bmN0aW9uKGJlLE9lLCRlLFN0KXtyZXR1'@; put 'cm4gYmUuaWR4PT09dGhpcy50YXJnZXRPY2N1cnJlbmNlJiZ0aGlzLnRhcmdldFByb2RUeXBlPT09T2UmJih0aGlzLnJlc3REZWY9JGUuY29uY2F0KFN0KSwhMCl9LGxlLnByb3RvdHlwZS53YWxrT3B0aW9uPWZ1bmN0aW9uKGJlLE9lLCRlKXt0aGlzLmNoZWNrSXNUYXJnZXQoYmUsY28uT1BU'@; put 'SU9OLE9lLCRlKXx8cGUucHJvdG90eXBlLndhbGtPcHRpb24uY2FsbCh0aGlzLGJlLE9lLCRlKX0sbGUucHJvdG90eXBlLndhbGtBdExlYXN0T25lPWZ1bmN0aW9uKGJlLE9lLCRlKXt0aGlzLmNoZWNrSXNUYXJnZXQoYmUsY28uUkVQRVRJVElPTl9NQU5EQVRPUlksT2UsJGUpfHxwZS5wcm90'@; put 'b3R5cGUud2Fsa09wdGlvbi5jYWxsKHRoaXMsYmUsT2UsJGUpfSxsZS5wcm90b3R5cGUud2Fsa0F0TGVhc3RPbmVTZXA9ZnVuY3Rpb24oYmUsT2UsJGUpe3RoaXMuY2hlY2tJc1RhcmdldChiZSxjby5SRVBFVElUSU9OX01BTkRBVE9SWV9XSVRIX1NFUEFSQVRPUixPZSwkZSl8fHBlLnByb3Rv'@; put 'dHlwZS53YWxrT3B0aW9uLmNhbGwodGhpcyxiZSxPZSwkZSl9LGxlLnByb3RvdHlwZS53YWxrTWFueT1mdW5jdGlvbihiZSxPZSwkZSl7dGhpcy5jaGVja0lzVGFyZ2V0KGJlLGNvLlJFUEVUSVRJT04sT2UsJGUpfHxwZS5wcm90b3R5cGUud2Fsa09wdGlvbi5jYWxsKHRoaXMsYmUsT2UsJGUp'@; put 'fSxsZS5wcm90b3R5cGUud2Fsa01hbnlTZXA9ZnVuY3Rpb24oYmUsT2UsJGUpe3RoaXMuY2hlY2tJc1RhcmdldChiZSxjby5SRVBFVElUSU9OX1dJVEhfU0VQQVJBVE9SLE9lLCRlKXx8cGUucHJvdG90eXBlLndhbGtPcHRpb24uY2FsbCh0aGlzLGJlLE9lLCRlKX0sbGV9KGdpKSxuYz1mdW5j'@; put 'dGlvbihwZSl7ZnVuY3Rpb24gbGUoYmUsT2UsJGUpe3ZhciBTdD1wZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBTdC50YXJnZXRPY2N1cnJlbmNlPWJlLFN0LnRhcmdldFByb2RUeXBlPU9lLFN0LnRhcmdldFJlZj0kZSxTdC5yZXN1bHQ9W10sU3R9cmV0dXJuIG9yKGxlLHBlKSxsZS5wcm90'@; put 'b3R5cGUuY2hlY2tJc1RhcmdldD1mdW5jdGlvbihiZSxPZSl7YmUuaWR4PT09dGhpcy50YXJnZXRPY2N1cnJlbmNlJiZ0aGlzLnRhcmdldFByb2RUeXBlPT09T2UmJih2b2lkIDA9PT10aGlzLnRhcmdldFJlZnx8YmU9PT10aGlzLnRhcmdldFJlZikmJih0aGlzLnJlc3VsdD1iZS5kZWZpbml0'@; put 'aW9uKX0sbGUucHJvdG90eXBlLnZpc2l0T3B0aW9uPWZ1bmN0aW9uKGJlKXt0aGlzLmNoZWNrSXNUYXJnZXQoYmUsY28uT1BUSU9OKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbj1mdW5jdGlvbihiZSl7dGhpcy5jaGVja0lzVGFyZ2V0KGJlLGNvLlJFUEVUSVRJT04pfSxsZS5wcm90'@; put 'b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5PWZ1bmN0aW9uKGJlKXt0aGlzLmNoZWNrSXNUYXJnZXQoYmUsY28uUkVQRVRJVElPTl9NQU5EQVRPUlkpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5V2l0aFNlcGFyYXRvcj1mdW5jdGlvbihiZSl7dGhpcy5jaGVj'@; put 'a0lzVGFyZ2V0KGJlLGNvLlJFUEVUSVRJT05fTUFOREFUT1JZX1dJVEhfU0VQQVJBVE9SKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbldpdGhTZXBhcmF0b3I9ZnVuY3Rpb24oYmUpe3RoaXMuY2hlY2tJc1RhcmdldChiZSxjby5SRVBFVElUSU9OX1dJVEhfU0VQQVJBVE9SKX0sbGUu'@; put 'cHJvdG90eXBlLnZpc2l0QWx0ZXJuYXRpb249ZnVuY3Rpb24oYmUpe3RoaXMuY2hlY2tJc1RhcmdldChiZSxjby5BTFRFUk5BVElPTil9LGxlfShscyk7ZnVuY3Rpb24geTIocGUpe2Zvcih2YXIgbGU9bmV3IEFycmF5KHBlKSxiZT0wO2JlPHBlO2JlKyspbGVbYmVdPVtdO3JldHVybiBsZX1m'@; put 'dW5jdGlvbiBEdShwZSl7Zm9yKHZhciBsZT1bIiJdLGJlPTA7YmU8cGUubGVuZ3RoO2JlKyspe2Zvcih2YXIgT2U9cGVbYmVdLCRlPVtdLFN0PTA7U3Q8bGUubGVuZ3RoO1N0Kyspe3ZhciBRdD1sZVtTdF07JGUucHVzaChRdCsiXyIrT2UudG9rZW5UeXBlSWR4KTtmb3IodmFyIEVuPTA7RW48'@; put 'T2UuY2F0ZWdvcnlNYXRjaGVzLmxlbmd0aDtFbisrKSRlLnB1c2goUXQrIl8iK09lLmNhdGVnb3J5TWF0Y2hlc1tFbl0pfWxlPSRlfXJldHVybiBsZX1mdW5jdGlvbiBlMShwZSxsZSxiZSl7Zm9yKHZhciBPZT0wO09lPHBlLmxlbmd0aDtPZSsrKWlmKE9lIT09YmUpZm9yKHZhciAkZT1wZVtP'@; put 'ZV0sU3Q9MDtTdDxsZS5sZW5ndGg7U3QrKylpZighMD09PSRlW2xlW1N0XV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gdDEocGUsbGUpe2Zvcih2YXIgYmU9QyhwZSxmdW5jdGlvbihwaSl7cmV0dXJuIE5hKFtwaV0sMSl9KSxPZT15MihiZS5sZW5ndGgpLCRlPUMoYmUsZnVuY3Rpb24o'@; put 'cGkpe3ZhciBEcj17fTtyZXR1cm4gUihwaSxmdW5jdGlvbihKaSl7UihEdShKaS5wYXJ0aWFsUGF0aCksZnVuY3Rpb24oWWkpe0RyW1lpXT0hMH0pfSksRHJ9KSxTdD1iZSxRdD0xO1F0PD1sZTtRdCsrKXt2YXIgRW49U3Q7U3Q9eTIoRW4ubGVuZ3RoKTtmb3IodmFyIGNyPWZ1bmN0aW9uKHBp'@; put 'KXtmb3IodmFyIERyPUVuW3BpXSxKaT0wO0ppPERyLmxlbmd0aDtKaSsrKXt2YXIgeG89RHJbSmldLnBhcnRpYWxQYXRoLFlpPURyW0ppXS5zdWZmaXhEZWYsZHM9RHUoeG8pO2lmKGUxKCRlLGRzLHBpKXx8YyhZaSl8fHhvLmxlbmd0aD09PWxlKXt2YXIgYWE9T2VbcGldO2lmKCExPT09YjIo'@; put 'YWEseG8pKXthYS5wdXNoKHhvKTtmb3IodmFyIElvPTA7SW88ZHMubGVuZ3RoO0lvKyspJGVbcGldW2RzW0lvXV09ITB9fWVsc2V7dmFyIGdsPU5hKFlpLFF0KzEseG8pO1N0W3BpXT1TdFtwaV0uY29uY2F0KGdsKSxSKGdsLGZ1bmN0aW9uKGpsKXtSKER1KGpsLnBhcnRpYWxQYXRoKSxmdW5j'@; put 'dGlvbihwYyl7JGVbcGldW3BjXT0hMH0pfSl9fX0sVXI9MDtVcjxFbi5sZW5ndGg7VXIrKyljcihVcil9cmV0dXJuIE9lfWZ1bmN0aW9uIGJkKHBlLGxlLGJlLE9lKXt2YXIgJGU9bmV3IG5jKHBlLGNvLkFMVEVSTkFUSU9OLE9lKTtyZXR1cm4gbGUuYWNjZXB0KCRlKSx0MSgkZS5yZXN1bHQs'@; put 'YmUpfWZ1bmN0aW9uIHMwKHBlLGxlLGJlLE9lKXt2YXIgJGU9bmV3IG5jKHBlLGJlKTtsZS5hY2NlcHQoJGUpO3ZhciBTdD0kZS5yZXN1bHQsRW49bmV3IFdjKGxlLHBlLGJlKS5zdGFydFdhbGtpbmcoKTtyZXR1cm4gdDEoW25ldyBSdSh7ZGVmaW5pdGlvbjpTdH0pLG5ldyBSdSh7ZGVmaW5p'@; put 'dGlvbjpFbn0pXSxPZSl9ZnVuY3Rpb24gYjIocGUsbGUpe2U6Zm9yKHZhciBiZT0wO2JlPHBlLmxlbmd0aDtiZSsrKXt2YXIgT2U9cGVbYmVdO2lmKE9lLmxlbmd0aD09PWxlLmxlbmd0aCl7Zm9yKHZhciAkZT0wOyRlPE9lLmxlbmd0aDskZSsrKXt2YXIgU3Q9bGVbJGVdLFF0PU9lWyRlXTtp'@; put 'ZighMT09KFN0PT09UXR8fHZvaWQgMCE9PVF0LmNhdGVnb3J5TWF0Y2hlc01hcFtTdC50b2tlblR5cGVJZHhdKSljb250aW51ZSBlfXJldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBqdShwZSl7cmV0dXJuIEIocGUsZnVuY3Rpb24obGUpe3JldHVybiBCKGxlLGZ1bmN0aW9uKGJlKXtyZXR1'@; put 'cm4gQihiZSxmdW5jdGlvbihPZSl7cmV0dXJuIGMoT2UuY2F0ZWdvcnlNYXRjaGVzKX0pfSl9KX12YXIgQmQ9ZnVuY3Rpb24oKXt2YXIgcGU9ZnVuY3Rpb24obGUsYmUpe3JldHVybihwZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVu'@; put 'Y3Rpb24oT2UsJGUpe09lLl9fcHJvdG9fXz0kZX18fGZ1bmN0aW9uKE9lLCRlKXtmb3IodmFyIFN0IGluICRlKSRlLmhhc093blByb3BlcnR5KFN0KSYmKE9lW1N0XT0kZVtTdF0pfSkobGUsYmUpfTtyZXR1cm4gZnVuY3Rpb24obGUsYmUpe2Z1bmN0aW9uIE9lKCl7dGhpcy5jb25zdHJ1Y3Rv'@; put 'cj1sZX1wZShsZSxiZSksbGUucHJvdG90eXBlPW51bGw9PT1iZT9PYmplY3QuY3JlYXRlKGJlKTooT2UucHJvdG90eXBlPWJlLnByb3RvdHlwZSxuZXcgT2UpfX0oKTtmdW5jdGlvbiB3MihwZSxsZSxiZSxPZSwkZSxTdCl7dmFyIFF0PUMocGUsZnVuY3Rpb24oSW8pe3JldHVybiBmdW5jdGlv'@; put 'biBxcyhwZSxsZSl7dmFyIGJlPW5ldyBuMTtwZS5hY2NlcHQoYmUpO3ZhciBTdD1GKFBlKGJlLmFsbFByb2R1Y3Rpb25zLEphKSxmdW5jdGlvbihFbil7cmV0dXJuIEVuLmxlbmd0aD4xfSksUXQ9QyhBKFN0KSxmdW5jdGlvbihFbil7dmFyIGNyPVMoRW4pLFVyPWxlLmJ1aWxkRHVwbGljYXRl'@; put 'Rm91bmRFcnJvcihwZSxFbikscGk9cHMoY3IpLERyPXttZXNzYWdlOlVyLHR5cGU6cmQuRFVQTElDQVRFX1BST0RVQ1RJT05TLHJ1bGVOYW1lOnBlLm5hbWUsZHNsTmFtZTpwaSxvY2N1cnJlbmNlOmNyLmlkeH0sSmk9TmwoY3IpO3JldHVybiBKaSYmKERyLnBhcmFtZXRlcj1KaSksRHJ9KTty'@; put 'ZXR1cm4gUXR9KElvLCRlKX0pLEVuPUMocGUsZnVuY3Rpb24oSW8pe3JldHVybiBudShJbyxJbywkZSl9KSxjcj1bXSxVcj1bXSxwaT1bXTtCKEVuLGMpJiYoY3I9QyhwZSxmdW5jdGlvbihJbyl7cmV0dXJuIGZ1bmN0aW9uIEZtKHBlLGxlKXt2YXIgYmU9bmV3IG5kO3BlLmFjY2VwdChiZSk7'@; put 'dmFyICRlPWtlKGJlLmFsdGVybmF0aW9ucyxmdW5jdGlvbihTdCxRdCl7dmFyIGNyPUMoTihRdC5kZWZpbml0aW9uKSxmdW5jdGlvbihVcixwaSl7cmV0dXJuIGMoUm8oW1VyXSxbXSxudWxsLDEpKT97bWVzc2FnZTpsZS5idWlsZEVtcHR5QWx0ZXJuYXRpb25FcnJvcih7dG9wTGV2ZWxSdWxl'@; put 'OnBlLGFsdGVybmF0aW9uOlF0LGVtcHR5Q2hvaWNlSWR4OnBpfSksdHlwZTpyZC5OT05FX0xBU1RfRU1QVFlfQUxULHJ1bGVOYW1lOnBlLm5hbWUsb2NjdXJyZW5jZTpRdC5pZHgsYWx0ZXJuYXRpdmU6cGkrMX06bnVsbH0pO3JldHVybiBTdC5jb25jYXQocWUoY3IpKX0sW10pO3JldHVybiAk'@; put 'ZX0oSW8sJGUpfSksVXI9QyhwZSxmdW5jdGlvbihJbyl7cmV0dXJuIGZ1bmN0aW9uIG1mKHBlLGxlLGJlLE9lKXt2YXIgJGU9bmV3IG5kO3BlLmFjY2VwdCgkZSk7dmFyIFN0PSRlLmFsdGVybmF0aW9ucyxRdD1iZVtwZS5uYW1lXTtRdCYmKFN0PVkoU3QsZnVuY3Rpb24oY3Ipe3JldHVybiBR'@; put 'dFtwcyhjcikrKDA9PT1jci5pZHg/IiI6Y3IuaWR4KV19KSksU3Q9WShTdCxmdW5jdGlvbihjcil7cmV0dXJuITA9PT1jci5pZ25vcmVBbWJpZ3VpdGllc30pO3ZhciBFbj1rZShTdCxmdW5jdGlvbihjcixVcil7dmFyIEppPWJkKFVyLmlkeCxwZSxVci5tYXhMb29rYWhlYWR8fGxlLFVyKSx4'@; put 'bz1mdW5jdGlvbiB4YyhwZSxsZSxiZSxPZSl7dmFyICRlPVtdLFN0PWtlKHBlLGZ1bmN0aW9uKEVuLGNyLFVyKXtyZXR1cm4hMD09PWxlLmRlZmluaXRpb25bVXJdLmlnbm9yZUFtYmlndWl0aWVzfHxSKGNyLGZ1bmN0aW9uKHBpKXt2YXIgRHI9W1VyXTtSKHBlLGZ1bmN0aW9uKEppLHhvKXtV'@; put 'ciE9PXhvJiZiMihKaSxwaSkmJiEwIT09bGUuZGVmaW5pdGlvblt4b10uaWdub3JlQW1iaWd1aXRpZXMmJkRyLnB1c2goeG8pfSksRHIubGVuZ3RoPjEmJiFiMigkZSxwaSkmJigkZS5wdXNoKHBpKSxFbi5wdXNoKHthbHRzOkRyLHBhdGg6cGl9KSl9KSxFbn0sW10pLFF0PUMoU3QsZnVuY3Rp'@; put 'b24oRW4pe3ZhciBjcj1DKEVuLmFsdHMsZnVuY3Rpb24ocGkpe3JldHVybiBwaSsxfSk7cmV0dXJue21lc3NhZ2U6T2UuYnVpbGRBbHRlcm5hdGlvbkFtYmlndWl0eUVycm9yKHt0b3BMZXZlbFJ1bGU6YmUsYWx0ZXJuYXRpb246bGUsYW1iaWd1aXR5SW5kaWNlczpjcixwcmVmaXhQYXRoOkVu'@; put 'LnBhdGh9KSx0eXBlOnJkLkFNQklHVU9VU19BTFRTLHJ1bGVOYW1lOmJlLm5hbWUsb2NjdXJyZW5jZTpsZS5pZHgsYWx0ZXJuYXRpdmVzOltFbi5hbHRzXX19KTtyZXR1cm4gUXR9KEppLFVyLHBlLE9lKSxZaT1mdW5jdGlvbiBsMChwZSxsZSxiZSxPZSl7dmFyICRlPVtdLFN0PWtlKHBlLGZ1'@; put 'bmN0aW9uKFF0LEVuLGNyKXt2YXIgVXI9QyhFbixmdW5jdGlvbihwaSl7cmV0dXJue2lkeDpjcixwYXRoOnBpfX0pO3JldHVybiBRdC5jb25jYXQoVXIpfSxbXSk7cmV0dXJuIFIoU3QsZnVuY3Rpb24oUXQpe2lmKCEwIT09bGUuZGVmaW5pdGlvbltRdC5pZHhdLmlnbm9yZUFtYmlndWl0aWVz'@; put 'KXt2YXIgY3I9UXQuaWR4LFVyPVF0LnBhdGgscGk9ZnVuY3Rpb24gSWUocGUsbGUpe2Zvcih2YXIgYmU9W10sT2U9MDtPZTxwZS5sZW5ndGg7T2UrKyl7dmFyICRlPXBlW09lXTtsZS5jYWxsKG51bGwsJGUpJiZiZS5wdXNoKCRlKX1yZXR1cm4gYmV9KFN0LGZ1bmN0aW9uKEppKXtyZXR1cm4h'@; put 'MCE9PWxlLmRlZmluaXRpb25bSmkuaWR4XS5pZ25vcmVBbWJpZ3VpdGllcyYmSmkuaWR4PGNyJiZmdW5jdGlvbiBraChwZSxsZSl7cmV0dXJuIHBlLmxlbmd0aDxsZS5sZW5ndGgmJkIocGUsZnVuY3Rpb24oYmUsT2Upe3ZhciAkZT1sZVtPZV07cmV0dXJuIGJlPT09JGV8fCRlLmNhdGVnb3J5'@; put 'TWF0Y2hlc01hcFtiZS50b2tlblR5cGVJZHhdfSl9KEppLnBhdGgsVXIpfSksRHI9QyhwaSxmdW5jdGlvbihKaSl7dmFyIHhvPVtKaS5pZHgrMSxjcisxXSxZaT0wPT09bGUuaWR4PyIiOmxlLmlkeDtyZXR1cm57bWVzc2FnZTpPZS5idWlsZEFsdGVybmF0aW9uUHJlZml4QW1iaWd1aXR5RXJy'@; put 'b3Ioe3RvcExldmVsUnVsZTpiZSxhbHRlcm5hdGlvbjpsZSxhbWJpZ3VpdHlJbmRpY2VzOnhvLHByZWZpeFBhdGg6SmkucGF0aH0pLHR5cGU6cmQuQU1CSUdVT1VTX1BSRUZJWF9BTFRTLHJ1bGVOYW1lOmJlLm5hbWUsb2NjdXJyZW5jZTpZaSxhbHRlcm5hdGl2ZXM6eG99fSk7JGU9JGUuY29u'@; put 'Y2F0KERyKX19KSwkZX0oSmksVXIscGUsT2UpO3JldHVybiBjci5jb25jYXQoeG8sWWkpfSxbXSk7cmV0dXJuIEVufShJbyxsZSxPZSwkZSl9KSxwaT1mdW5jdGlvbiBVdShwZSxsZSxiZSl7dmFyIE9lPVtdO3JldHVybiBSKHBlLGZ1bmN0aW9uKCRlKXt2YXIgU3Q9bmV3IFAxOyRlLmFjY2Vw'@; put 'dChTdCksUihTdC5hbGxQcm9kdWN0aW9ucyxmdW5jdGlvbihFbil7dmFyIGNyPWZ1bmN0aW9uIHNuKHBlKXtpZihwZSBpbnN0YW5jZW9mIGhjKXJldHVybiBjby5PUFRJT047aWYocGUgaW5zdGFuY2VvZiBjbClyZXR1cm4gY28uUkVQRVRJVElPTjtpZihwZSBpbnN0YW5jZW9mIGVkKXJldHVy'@; put 'biBjby5SRVBFVElUSU9OX01BTkRBVE9SWTtpZihwZSBpbnN0YW5jZW9mIEpuKXJldHVybiBjby5SRVBFVElUSU9OX01BTkRBVE9SWV9XSVRIX1NFUEFSQVRPUjtpZihwZSBpbnN0YW5jZW9mIG1pKXJldHVybiBjby5SRVBFVElUSU9OX1dJVEhfU0VQQVJBVE9SO2lmKHBlIGluc3RhbmNlb2Yg'@; put 'ZXUpcmV0dXJuIGNvLkFMVEVSTkFUSU9OO3Rocm93IEVycm9yKCJub24gZXhoYXVzdGl2ZSBtYXRjaCIpfShFbik7aWYoYyh3KHMwKEVuLmlkeCwkZSxjcixFbi5tYXhMb29rYWhlYWR8fGxlKVswXSkpKXt2YXIgeG89YmUuYnVpbGRFbXB0eVJlcGV0aXRpb25FcnJvcih7dG9wTGV2ZWxSdWxl'@; put 'OiRlLHJlcGV0aXRpb246RW59KTtPZS5wdXNoKHttZXNzYWdlOnhvLHR5cGU6cmQuTk9fTk9OX0VNUFRZX0xPT0tBSEVBRCxydWxlTmFtZTokZS5uYW1lfSl9fSl9KSxPZX0ocGUsbGUsJGUpKTt2YXIgRHI9ZnVuY3Rpb24gcjUocGUsbGUsYmUpe3ZhciBPZT1bXSwkZT1DKGxlLGZ1bmN0aW9u'@; put 'KFN0KXtyZXR1cm4gU3QubmFtZX0pO3JldHVybiBSKHBlLGZ1bmN0aW9uKFN0KXt2YXIgUXQ9U3QubmFtZTtpZihxKCRlLFF0KSl7dmFyIEVuPWJlLmJ1aWxkTmFtZXNwYWNlQ29uZmxpY3RFcnJvcihTdCk7T2UucHVzaCh7bWVzc2FnZTpFbix0eXBlOnJkLkNPTkZMSUNUX1RPS0VOU19SVUxF'@; put 'U19OQU1FU1BBQ0UscnVsZU5hbWU6UXR9KX19KSxPZX0ocGUsYmUsJGUpLEppPUMoYmUsZnVuY3Rpb24oSW8pe3JldHVybiBmdW5jdGlvbiBjcyhwZSxsZSl7dmFyIGJlPVtdO3JldHVybiBwZS5uYW1lLm1hdGNoKGpkKXx8YmUucHVzaCh7bWVzc2FnZTpsZS5idWlsZFRva2VuTmFtZUVycm9y'@; put 'KHt0b2tlblR5cGU6cGUsZXhwZWN0ZWRQYXR0ZXJuOmpkfSksdHlwZTpyZC5JTlZBTElEX1RPS0VOX05BTUV9KSxiZX0oSW8sJGUpfSkseG89ZnVuY3Rpb24gcjgocGUsbGUpe3ZhciBiZT1bXTtyZXR1cm4gUihwZSxmdW5jdGlvbihPZSl7dmFyICRlPW5ldyBqdCgiIik7T2UuYWNjZXB0KCRl'@; put 'KTt2YXIgU3Q9QygkZS5yZXN1bHQsZnVuY3Rpb24oUXQpe3JldHVybiBRdC5vcmdQcm9kfSk7YmUucHVzaChDKFN0LGZ1bmN0aW9uKFF0KXtyZXR1cm4gZnVuY3Rpb24gaGwocGUsbGUsYmUpe3ZhciAkZSxPZT1bXTtyZXR1cm4gbGUubmFtZS5tYXRjaChOMCl8fCgkZT1iZS5idWlsZEludmFs'@; put 'aWROZXN0ZWRSdWxlTmFtZUVycm9yKHBlLGxlKSxPZS5wdXNoKHttZXNzYWdlOiRlLHR5cGU6cmQuSU5WQUxJRF9ORVNURURfUlVMRV9OQU1FLHJ1bGVOYW1lOnBlLm5hbWV9KSksT2V9KE9lLFF0LGxlKX0pKX0pLHcoYmUpfShwZSwkZSksWWk9ZnVuY3Rpb24gdXAocGUsbGUpe3ZhciBiZT1b'@; put 'XTtyZXR1cm4gUihwZSxmdW5jdGlvbihPZSl7dmFyICRlPW5ldyBqdCgiIik7T2UuYWNjZXB0KCRlKTt2YXIgU3Q9UGUoJGUucmVzdWx0LGZ1bmN0aW9uKEVuKXtyZXR1cm4gRW4ubmFtZX0pLFF0PUYoU3QsZnVuY3Rpb24oRW4pe3JldHVybiBFbi5sZW5ndGg+MX0pO1IoQShRdCksZnVuY3Rp'@; put 'b24oRW4pe3ZhciBjcj1DKEVuLGZ1bmN0aW9uKHBpKXtyZXR1cm4gcGkub3JnUHJvZH0pLFVyPWxlLmJ1aWxkRHVwbGljYXRlTmVzdGVkUnVsZU5hbWVFcnJvcihPZSxjcik7YmUucHVzaCh7bWVzc2FnZTpVcix0eXBlOnJkLkRVUExJQ0FURV9ORVNURURfTkFNRSxydWxlTmFtZTpPZS5uYW1l'@; put 'fSl9KX0pLGJlfShwZSwkZSksZHM9QyhwZSxmdW5jdGlvbihJbyl7cmV0dXJuIGZ1bmN0aW9uIHVzKHBlLGxlKXt2YXIgYmU9bmV3IG5kO3BlLmFjY2VwdChiZSk7dmFyICRlPWtlKGJlLmFsdGVybmF0aW9ucyxmdW5jdGlvbihTdCxRdCl7cmV0dXJuIFF0LmRlZmluaXRpb24ubGVuZ3RoPjI1'@; put 'NSYmU3QucHVzaCh7bWVzc2FnZTpsZS5idWlsZFRvb01hbnlBbHRlcm5hdGl2ZXNFcnJvcih7dG9wTGV2ZWxSdWxlOnBlLGFsdGVybmF0aW9uOlF0fSksdHlwZTpyZC5UT09fTUFOWV9BTFRTLHJ1bGVOYW1lOnBlLm5hbWUsb2NjdXJyZW5jZTpRdC5pZHh9KSxTdH0sW10pO3JldHVybiAkZX0o'@; put 'SW8sJGUpfSksUHM9QyhwZSxmdW5jdGlvbihJbyl7cmV0dXJuIGZ1bmN0aW9uIHIxKHBlLGxlKXt2YXIgYmU9W10sT2U9cGUubmFtZTtyZXR1cm4gT2UubWF0Y2goamQpfHxiZS5wdXNoKHttZXNzYWdlOmxlLmJ1aWxkSW52YWxpZFJ1bGVOYW1lRXJyb3Ioe3RvcExldmVsUnVsZTpwZSxleHBl'@; put 'Y3RlZFBhdHRlcm46amR9KSx0eXBlOnJkLklOVkFMSURfUlVMRV9OQU1FLHJ1bGVOYW1lOk9lfSksYmV9KElvLCRlKX0pLGFhPUMocGUsZnVuY3Rpb24oSW8pe3JldHVybiBmdW5jdGlvbiBjcChwZSxsZSxiZSxPZSl7dmFyICRlPVtdLFN0PWtlKGxlLGZ1bmN0aW9uKEVuLGNyKXtyZXR1cm4g'@; put 'Y3IubmFtZT09PXBlLm5hbWU/RW4rMTpFbn0sMCk7aWYoU3Q+MSl7dmFyIFF0PU9lLmJ1aWxkRHVwbGljYXRlUnVsZU5hbWVFcnJvcih7dG9wTGV2ZWxSdWxlOnBlLGdyYW1tYXJOYW1lOmJlfSk7JGUucHVzaCh7bWVzc2FnZTpRdCx0eXBlOnJkLkRVUExJQ0FURV9SVUxFX05BTUUscnVsZU5h'@; put 'bWU6cGUubmFtZX0pfXJldHVybiAkZX0oSW8scGUsU3QsJGUpfSk7cmV0dXJuIHcoUXQuY29uY2F0KEppLHhvLFlpLHBpLEVuLGNyLFVyLERyLGRzLFBzLGFhKSl9ZnVuY3Rpb24gSmEocGUpe3JldHVybiBwcyhwZSkrIl8jXyIrcGUuaWR4KyJfI18iK05sKHBlKX1mdW5jdGlvbiBObChwZSl7'@; put 'cmV0dXJuIHBlIGluc3RhbmNlb2YgU2w/cGUudGVybWluYWxUeXBlLm5hbWU6cGUgaW5zdGFuY2VvZiBCdT9wZS5ub25UZXJtaW5hbE5hbWU6IiJ9dmFyIG4xPWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZSgpe3ZhciBiZT1udWxsIT09cGUmJnBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhp'@; put 'cztyZXR1cm4gYmUuYWxsUHJvZHVjdGlvbnM9W10sYmV9cmV0dXJuIEJkKGxlLHBlKSxsZS5wcm90b3R5cGUudmlzaXROb25UZXJtaW5hbD1mdW5jdGlvbihiZSl7dGhpcy5hbGxQcm9kdWN0aW9ucy5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0T3B0aW9uPWZ1bmN0aW9uKGJlKXt0aGlz'@; put 'LmFsbFByb2R1Y3Rpb25zLnB1c2goYmUpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uV2l0aFNlcGFyYXRvcj1mdW5jdGlvbihiZSl7dGhpcy5hbGxQcm9kdWN0aW9ucy5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbk1hbmRhdG9yeT1mdW5jdGlvbihiZSl7dGhp'@; put 'cy5hbGxQcm9kdWN0aW9ucy5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbk1hbmRhdG9yeVdpdGhTZXBhcmF0b3I9ZnVuY3Rpb24oYmUpe3RoaXMuYWxsUHJvZHVjdGlvbnMucHVzaChiZSl9LGxlLnByb3RvdHlwZS52aXNpdFJlcGV0aXRpb249ZnVuY3Rpb24oYmUpe3Ro'@; put 'aXMuYWxsUHJvZHVjdGlvbnMucHVzaChiZSl9LGxlLnByb3RvdHlwZS52aXNpdEFsdGVybmF0aW9uPWZ1bmN0aW9uKGJlKXt0aGlzLmFsbFByb2R1Y3Rpb25zLnB1c2goYmUpfSxsZS5wcm90b3R5cGUudmlzaXRUZXJtaW5hbD1mdW5jdGlvbihiZSl7dGhpcy5hbGxQcm9kdWN0aW9ucy5wdXNo'@; put 'KGJlKX0sbGV9KGxzKSxqZD0vXlthLXpBLVpfXVx3KiQvLE4wPW5ldyBSZWdFeHAoamQuc291cmNlLnJlcGxhY2UoIl4iLCJeXFwkIikpO2Z1bmN0aW9uIG51KHBlLGxlLGJlLE9lKXt2b2lkIDA9PT1PZSYmKE9lPVtdKTt2YXIgJGU9W10sU3Q9UmgobGUuZGVmaW5pdGlvbik7aWYoYyhTdCkp'@; put 'cmV0dXJuW107dmFyIFF0PXBlLm5hbWU7cShTdCxwZSkmJiRlLnB1c2goe21lc3NhZ2U6YmUuYnVpbGRMZWZ0UmVjdXJzaW9uRXJyb3Ioe3RvcExldmVsUnVsZTpwZSxsZWZ0UmVjdXJzaW9uUGF0aDpPZX0pLHR5cGU6cmQuTEVGVF9SRUNVUlNJT04scnVsZU5hbWU6UXR9KTt2YXIgVXI9QyhL'@; put 'KFN0LE9lLmNvbmNhdChbcGVdKSksZnVuY3Rpb24ocGkpe3ZhciBEcj1yZShPZSk7cmV0dXJuIERyLnB1c2gocGkpLG51KHBlLHBpLGJlLERyKX0pO3JldHVybiAkZS5jb25jYXQodyhVcikpfWZ1bmN0aW9uIFJoKHBlKXt2YXIgbGU9W107aWYoYyhwZSkpcmV0dXJuIGxlO3ZhciBiZT1TKHBl'@; put 'KTtpZihiZSBpbnN0YW5jZW9mIEJ1KWxlLnB1c2goYmUucmVmZXJlbmNlZFJ1bGUpO2Vsc2UgaWYoYmUgaW5zdGFuY2VvZiBSdXx8YmUgaW5zdGFuY2VvZiBoY3x8YmUgaW5zdGFuY2VvZiBlZHx8YmUgaW5zdGFuY2VvZiBKbnx8YmUgaW5zdGFuY2VvZiBtaXx8YmUgaW5zdGFuY2VvZiBjbCls'@; put 'ZT1sZS5jb25jYXQoUmgoYmUuZGVmaW5pdGlvbikpO2Vsc2UgaWYoYmUgaW5zdGFuY2VvZiBldSlsZT13KEMoYmUuZGVmaW5pdGlvbixmdW5jdGlvbihRdCl7cmV0dXJuIFJoKFF0LmRlZmluaXRpb24pfSkpO2Vsc2UgaWYoIShiZSBpbnN0YW5jZW9mIFNsKSl0aHJvdyBFcnJvcigibm9uIGV4'@; put 'aGF1c3RpdmUgbWF0Y2giKTtpZihRYShiZSkmJnBlLmxlbmd0aD4xKXt2YXIgU3Q9VihwZSk7cmV0dXJuIGxlLmNvbmNhdChSaChTdCkpfXJldHVybiBsZX12YXIgbmQ9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKCl7dmFyIGJlPW51bGwhPT1wZSYmcGUuYXBwbHkodGhpcyxhcmd1bWVudHMp'@; put 'fHx0aGlzO3JldHVybiBiZS5hbHRlcm5hdGlvbnM9W10sYmV9cmV0dXJuIEJkKGxlLHBlKSxsZS5wcm90b3R5cGUudmlzaXRBbHRlcm5hdGlvbj1mdW5jdGlvbihiZSl7dGhpcy5hbHRlcm5hdGlvbnMucHVzaChiZSl9LGxlfShscyksUDE9ZnVuY3Rpb24ocGUpe2Z1bmN0aW9uIGxlKCl7dmFy'@; put 'IGJlPW51bGwhPT1wZSYmcGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBiZS5hbGxQcm9kdWN0aW9ucz1bXSxiZX1yZXR1cm4gQmQobGUscGUpLGxlLnByb3RvdHlwZS52aXNpdFJlcGV0aXRpb25XaXRoU2VwYXJhdG9yPWZ1bmN0aW9uKGJlKXt0aGlzLmFsbFByb2R1Y3Rp'@; put 'b25zLnB1c2goYmUpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5PWZ1bmN0aW9uKGJlKXt0aGlzLmFsbFByb2R1Y3Rpb25zLnB1c2goYmUpfSxsZS5wcm90b3R5cGUudmlzaXRSZXBldGl0aW9uTWFuZGF0b3J5V2l0aFNlcGFyYXRvcj1mdW5jdGlvbihiZSl7dGhpcy5h'@; put 'bGxQcm9kdWN0aW9ucy5wdXNoKGJlKX0sbGUucHJvdG90eXBlLnZpc2l0UmVwZXRpdGlvbj1mdW5jdGlvbihiZSl7dGhpcy5hbGxQcm9kdWN0aW9ucy5wdXNoKGJlKX0sbGV9KGxzKSxjMD17YnVpbGRNaXNtYXRjaFRva2VuTWVzc2FnZTpmdW5jdGlvbihwZSl7dmFyIGxlPXBlLmV4cGVjdGVk'@; put 'LGJlPXBlLmFjdHVhbDtyZXR1cm4iRXhwZWN0aW5nICIrKGZhKGxlKT8iLS1ceDNlICIreWQobGUpKyIgPC0tIjoidG9rZW4gb2YgdHlwZSAtLVx4M2UgIitsZS5uYW1lKyIgPC0tIikrIiBidXQgZm91bmQgLS1ceDNlICciK2JlLmltYWdlKyInIDwtLSJ9LGJ1aWxkTm90QWxsSW5wdXRQYXJz'@; put 'ZWRNZXNzYWdlOmZ1bmN0aW9uKHBlKXtyZXR1cm4iUmVkdW5kYW50IGlucHV0LCBleHBlY3RpbmcgRU9GIGJ1dCBmb3VuZDogIitwZS5maXJzdFJlZHVuZGFudC5pbWFnZX0sYnVpbGROb1ZpYWJsZUFsdE1lc3NhZ2U6ZnVuY3Rpb24ocGUpe3ZhciBsZT1wZS5leHBlY3RlZFBhdGhzUGVyQWx0'@; put 'LCRlPXBlLmN1c3RvbVVzZXJEZXNjcmlwdGlvbixRdD0iRXhwZWN0aW5nOiAiLGNyPSJcbmJ1dCBmb3VuZDogJyIrUyhwZS5hY3R1YWwpLmltYWdlKyInIjtpZigkZSlyZXR1cm4gUXQrJGUrY3I7dmFyIHBpPUMoa2UobGUsZnVuY3Rpb24oeG8sWWkpe3JldHVybiB4by5jb25jYXQoWWkpfSxb'@; put 'XSksZnVuY3Rpb24oeG8pe3JldHVybiJbIitDKHhvLGZ1bmN0aW9uKFlpKXtyZXR1cm4geWQoWWkpfSkuam9pbigiLCAiKSsiXSJ9KTtyZXR1cm4gUXQrIm9uZSBvZiB0aGVzZSBwb3NzaWJsZSBUb2tlbiBzZXF1ZW5jZXM6XG4iK0MocGksZnVuY3Rpb24oeG8sWWkpe3JldHVybiIgICIrKFlp'@; put 'KzEpKyIuICIreG99KS5qb2luKCJcbiIpK2NyfSxidWlsZEVhcmx5RXhpdE1lc3NhZ2U6ZnVuY3Rpb24ocGUpe3ZhciBsZT1wZS5leHBlY3RlZEl0ZXJhdGlvblBhdGhzLE9lPXBlLmN1c3RvbVVzZXJEZXNjcmlwdGlvbixTdD0iRXhwZWN0aW5nOiAiLEVuPSJcbmJ1dCBmb3VuZDogJyIrUyhw'@; put 'ZS5hY3R1YWwpLmltYWdlKyInIjtyZXR1cm4gT2U/U3QrT2UrRW46U3QrImV4cGVjdGluZyBhdCBsZWFzdCBvbmUgaXRlcmF0aW9uIHdoaWNoIHN0YXJ0cyB3aXRoIG9uZSBvZiB0aGVzZSBwb3NzaWJsZSBUb2tlbiBzZXF1ZW5jZXM6OlxuICA8IitDKGxlLGZ1bmN0aW9uKHBpKXtyZXR1cm4i'@; put 'WyIrQyhwaSxmdW5jdGlvbihEcil7cmV0dXJuIHlkKERyKX0pLmpvaW4oIiwiKSsiXSJ9KS5qb2luKCIgLCIpKyI+IitFbn19O09iamVjdC5mcmVlemUoYzApO3ZhciBQbT17YnVpbGRSdWxlTm90Rm91bmRFcnJvcjpmdW5jdGlvbihwZSxsZSl7cmV0dXJuIkludmFsaWQgZ3JhbW1hciwgcmVm'@; put 'ZXJlbmNlIHRvIGEgcnVsZSB3aGljaCBpcyBub3QgZGVmaW5lZDogLT4iK2xlLm5vblRlcm1pbmFsTmFtZSsiPC1cbmluc2lkZSB0b3AgbGV2ZWwgcnVsZTogLT4iK3BlLm5hbWUrIjwtIn19LGkxPXtidWlsZER1cGxpY2F0ZUZvdW5kRXJyb3I6ZnVuY3Rpb24ocGUsbGUpe3ZhciBPZT1wZS5u'@; put 'YW1lLCRlPVMobGUpLFN0PSRlLmlkeCxRdD1wcygkZSksRW49ZnVuY3Rpb24gYmUocGkpe3JldHVybiBwaSBpbnN0YW5jZW9mIFNsP3BpLnRlcm1pbmFsVHlwZS5uYW1lOnBpIGluc3RhbmNlb2YgQnU/cGkubm9uVGVybWluYWxOYW1lOiIifSgkZSksVXI9Ii0+IitRdCsoU3Q+MD9TdDoiIikr'@; put 'IjwtICIrKEVuPyJ3aXRoIGFyZ3VtZW50OiAtPiIrRW4rIjwtIjoiIikrIlxuICAgICAgICAgICAgICAgICAgYXBwZWFycyBtb3JlIHRoYW4gb25jZSAoIitsZS5sZW5ndGgrIiB0aW1lcykgaW4gdGhlIHRvcCBsZXZlbCBydWxlOiAtPiIrT2UrIjwtLiAgICAgICAgICAgICAgICAgIFxuICAg'@; put 'ICAgICAgICAgICAgICAgRm9yIGZ1cnRoZXIgZGV0YWlscyBzZWU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9jaGV2cm90YWluL2RvY3MvRkFRLmh0bWwjTlVNRVJJQ0FMX1NVRkZJWEVTIFxuICAgICAgICAgICAgICAgICAgIjtyZXR1cm4oVXI9VXIucmVwbGFjZSgvWyBcdF0rL2csIiAiKSku'@; put 'cmVwbGFjZSgvXHNccysvZywiXG4iKX0sYnVpbGRJbnZhbGlkTmVzdGVkUnVsZU5hbWVFcnJvcjpmdW5jdGlvbihwZSxsZSl7cmV0dXJuIkludmFsaWQgbmVzdGVkIHJ1bGUgbmFtZTogLT4iK2xlLm5hbWUrIjwtIGluc2lkZSBydWxlOiAtPiIrcGUubmFtZSsiPC1cbml0IG11c3QgbWF0Y2gg'@; put 'dGhlIHBhdHRlcm46IC0+IitOMC50b1N0cmluZygpKyI8LS5cbk5vdGUgdGhhdCB0aGlzIG1lYW5zIGEgbmVzdGVkIHJ1bGUgbmFtZSBtdXN0IHN0YXJ0IHdpdGggdGhlICckJyhkb2xsYXIpIHNpZ24uIn0sYnVpbGREdXBsaWNhdGVOZXN0ZWRSdWxlTmFtZUVycm9yOmZ1bmN0aW9uKHBlLGxl'@; put 'KXtyZXR1cm4iRHVwbGljYXRlIG5lc3RlZCBydWxlIG5hbWU6IC0+IitTKGxlKS5uYW1lKyI8LSBpbnNpZGUgcnVsZTogLT4iK3BlLm5hbWUrIjwtXG5BIG5lc3RlZCBuYW1lIG11c3QgYmUgdW5pcXVlIGluIHRoZSBzY29wZSBvZiBhIHRvcCBsZXZlbCBncmFtbWFyIHJ1bGUuIn0sYnVpbGRO'@; put 'YW1lc3BhY2VDb25mbGljdEVycm9yOmZ1bmN0aW9uKHBlKXtyZXR1cm4iTmFtZXNwYWNlIGNvbmZsaWN0IGZvdW5kIGluIGdyYW1tYXIuXG5UaGUgZ3JhbW1hciBoYXMgYm90aCBhIFRlcm1pbmFsKFRva2VuKSBhbmQgYSBOb24tVGVybWluYWwoUnVsZSkgbmFtZWQ6IDwiK3BlLm5hbWUrIj4u'@; put 'XG5UbyByZXNvbHZlIHRoaXMgbWFrZSBzdXJlIGVhY2ggVGVybWluYWwgYW5kIE5vbi1UZXJtaW5hbCBuYW1lcyBhcmUgdW5pcXVlXG5UaGlzIGlzIGVhc3kgdG8gYWNjb21wbGlzaCBieSB1c2luZyB0aGUgY29udmVudGlvbiB0aGF0IFRlcm1pbmFsIG5hbWVzIHN0YXJ0IHdpdGggYW4gdXBw'@; put 'ZXJjYXNlIGxldHRlclxuYW5kIE5vbi1UZXJtaW5hbCBuYW1lcyBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIuIn0sYnVpbGRBbHRlcm5hdGlvblByZWZpeEFtYmlndWl0eUVycm9yOmZ1bmN0aW9uKHBlKXt2YXIgbGU9QyhwZS5wcmVmaXhQYXRoLGZ1bmN0aW9uKCRlKXtyZXR1cm4g'@; put 'eWQoJGUpfSkuam9pbigiLCAiKSxiZT0wPT09cGUuYWx0ZXJuYXRpb24uaWR4PyIiOnBlLmFsdGVybmF0aW9uLmlkeDtyZXR1cm4iQW1iaWd1b3VzIGFsdGVybmF0aXZlczogPCIrcGUuYW1iaWd1aXR5SW5kaWNlcy5qb2luKCIgLCIpKyI+IGR1ZSB0byBjb21tb24gbG9va2FoZWFkIHByZWZp'@; put 'eFxuaW4gPE9SIitiZSsiPiBpbnNpZGUgPCIrcGUudG9wTGV2ZWxSdWxlLm5hbWUrIj4gUnVsZSxcbjwiK2xlKyI+IG1heSBhcHBlYXJzIGFzIGEgcHJlZml4IHBhdGggaW4gYWxsIHRoZXNlIGFsdGVybmF0aXZlcy5cblNlZTogaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2NoZXZyb3RhaW4vZG9j'@; put 'cy9ndWlkZS9yZXNvbHZpbmdfZ3JhbW1hcl9lcnJvcnMuaHRtbCNDT01NT05fUFJFRklYXG5Gb3IgRnVydGhlciBkZXRhaWxzLiJ9LGJ1aWxkQWx0ZXJuYXRpb25BbWJpZ3VpdHlFcnJvcjpmdW5jdGlvbihwZSl7dmFyIGxlPUMocGUucHJlZml4UGF0aCxmdW5jdGlvbigkZSl7cmV0dXJuIHlk'@; put 'KCRlKX0pLmpvaW4oIiwgIiksYmU9MD09PXBlLmFsdGVybmF0aW9uLmlkeD8iIjpwZS5hbHRlcm5hdGlvbi5pZHg7cmV0dXJuIkFtYmlndW91cyBBbHRlcm5hdGl2ZXMgRGV0ZWN0ZWQ6IDwiK3BlLmFtYmlndWl0eUluZGljZXMuam9pbigiICwiKSsiPiBpbiA8T1IiK2JlKyI+IGluc2lkZSA8'@; put 'IitwZS50b3BMZXZlbFJ1bGUubmFtZSsiPiBSdWxlLFxuPCIrbGUrIj4gbWF5IGFwcGVhcnMgYXMgYSBwcmVmaXggcGF0aCBpbiBhbGwgdGhlc2UgYWx0ZXJuYXRpdmVzLlxuIisiU2VlOiBodHRwczovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL3Jlc29sdmluZ19ncmFt'@; put 'bWFyX2Vycm9ycy5odG1sI0FNQklHVU9VU19BTFRFUk5BVElWRVNcbkZvciBGdXJ0aGVyIGRldGFpbHMuIn0sYnVpbGRFbXB0eVJlcGV0aXRpb25FcnJvcjpmdW5jdGlvbihwZSl7dmFyIGxlPXBzKHBlLnJlcGV0aXRpb24pO3JldHVybiAwIT09cGUucmVwZXRpdGlvbi5pZHgmJihsZSs9cGUu'@; put 'cmVwZXRpdGlvbi5pZHgpLCJUaGUgcmVwZXRpdGlvbiA8IitsZSsiPiB3aXRoaW4gUnVsZSA8IitwZS50b3BMZXZlbFJ1bGUubmFtZSsiPiBjYW4gbmV2ZXIgY29uc3VtZSBhbnkgdG9rZW5zLlxuVGhpcyBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AuIn0sYnVpbGRUb2tlbk5hbWVF'@; put 'cnJvcjpmdW5jdGlvbihwZSl7cmV0dXJuIkludmFsaWQgR3JhbW1hciBUb2tlbiBuYW1lOiAtPiIrcGUudG9rZW5UeXBlLm5hbWUrIjwtIGl0IG11c3QgbWF0Y2ggdGhlIHBhdHRlcm46IC0+IitwZS5leHBlY3RlZFBhdHRlcm4udG9TdHJpbmcoKSsiPC0ifSxidWlsZEVtcHR5QWx0ZXJuYXRp'@; put 'b25FcnJvcjpmdW5jdGlvbihwZSl7cmV0dXJuIkFtYmlndW91cyBlbXB0eSBhbHRlcm5hdGl2ZTogPCIrKHBlLmVtcHR5Q2hvaWNlSWR4KzEpKyI+IGluIDxPUiIrcGUuYWx0ZXJuYXRpb24uaWR4KyI+IGluc2lkZSA8IitwZS50b3BMZXZlbFJ1bGUubmFtZSsiPiBSdWxlLlxuT25seSB0aGUg'@; put 'bGFzdCBhbHRlcm5hdGl2ZSBtYXkgYmUgYW4gZW1wdHkgYWx0ZXJuYXRpdmUuIn0sYnVpbGRUb29NYW55QWx0ZXJuYXRpdmVzRXJyb3I6ZnVuY3Rpb24ocGUpe3JldHVybiJBbiBBbHRlcm5hdGlvbiBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMjU2IGFsdGVybmF0aXZlczpcbjxPUiIrcGUuYWx0'@; put 'ZXJuYXRpb24uaWR4KyI+IGluc2lkZSA8IitwZS50b3BMZXZlbFJ1bGUubmFtZSsiPiBSdWxlLlxuIGhhcyAiKyhwZS5hbHRlcm5hdGlvbi5kZWZpbml0aW9uLmxlbmd0aCsxKSsiIGFsdGVybmF0aXZlcy4ifSxidWlsZExlZnRSZWN1cnNpb25FcnJvcjpmdW5jdGlvbihwZSl7dmFyIGxlPXBl'@; put 'LnRvcExldmVsUnVsZS5uYW1lO3JldHVybiJMZWZ0IFJlY3Vyc2lvbiBmb3VuZCBpbiBncmFtbWFyLlxucnVsZTogPCIrbGUrIj4gY2FuIGJlIGludm9rZWQgZnJvbSBpdHNlbGYgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpXG53aXRob3V0IGNvbnN1bWluZyBhbnkgVG9rZW5zLiBUaGUgZ3Jh'@; put 'bW1hciBwYXRoIHRoYXQgY2F1c2VzIHRoaXMgaXM6IFxuICIrbGUrIiAtLVx4M2UgIitDKHBlLmxlZnRSZWN1cnNpb25QYXRoLGZ1bmN0aW9uKFN0KXtyZXR1cm4gU3QubmFtZX0pLmNvbmNhdChbbGVdKS5qb2luKCIgLS1ceDNlICIpKyJcbiBUbyBmaXggdGhpcyByZWZhY3RvciB5b3VyIGdy'@; put 'YW1tYXIgdG8gcmVtb3ZlIHRoZSBsZWZ0IHJlY3Vyc2lvbi5cbnNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTExfcGFyc2VyI0xlZnRfRmFjdG9yaW5nLiJ9LGJ1aWxkSW52YWxpZFJ1bGVOYW1lRXJyb3I6ZnVuY3Rpb24ocGUpe3JldHVybiJJbnZhbGlkIGdyYW1tYXIgcnVs'@; put 'ZSBuYW1lOiAtPiIrcGUudG9wTGV2ZWxSdWxlLm5hbWUrIjwtIGl0IG11c3QgbWF0Y2ggdGhlIHBhdHRlcm46IC0+IitwZS5leHBlY3RlZFBhdHRlcm4udG9TdHJpbmcoKSsiPC0ifSxidWlsZER1cGxpY2F0ZVJ1bGVOYW1lRXJyb3I6ZnVuY3Rpb24ocGUpe3JldHVybiJEdXBsaWNhdGUgZGVm'@; put 'aW5pdGlvbiwgcnVsZTogLT4iKyhwZS50b3BMZXZlbFJ1bGUgaW5zdGFuY2VvZiBOMT9wZS50b3BMZXZlbFJ1bGUubmFtZTpwZS50b3BMZXZlbFJ1bGUpKyI8LSBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIGdyYW1tYXI6IC0+IitwZS5ncmFtbWFyTmFtZSsiPC0ifX0saTg9ZnVuY3Rpb24o'@; put 'KXt2YXIgcGU9ZnVuY3Rpb24obGUsYmUpe3JldHVybihwZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oT2UsJGUpe09lLl9fcHJvdG9fXz0kZX18fGZ1bmN0aW9uKE9lLCRlKXtmb3IodmFyIFN0IGluICRlKSRlLmhhc093'@; put 'blByb3BlcnR5KFN0KSYmKE9lW1N0XT0kZVtTdF0pfSkobGUsYmUpfTtyZXR1cm4gZnVuY3Rpb24obGUsYmUpe2Z1bmN0aW9uIE9lKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sZX1wZShsZSxiZSksbGUucHJvdG90eXBlPW51bGw9PT1iZT9PYmplY3QuY3JlYXRlKGJlKTooT2UucHJvdG90eXBlPWJl'@; put 'LnByb3RvdHlwZSxuZXcgT2UpfX0oKSxTZz1mdW5jdGlvbihwZSl7ZnVuY3Rpb24gbGUoYmUsT2Upe3ZhciAkZT1wZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiAkZS5uYW1lVG9Ub3BSdWxlPWJlLCRlLmVyck1zZ1Byb3ZpZGVyPU9lLCRlLmVycm9ycz1bXSwkZX1yZXR1cm4gaTgobGUscGUp'@; put 'LGxlLnByb3RvdHlwZS5yZXNvbHZlUmVmcz1mdW5jdGlvbigpe3ZhciBiZT10aGlzO1IoQSh0aGlzLm5hbWVUb1RvcFJ1bGUpLGZ1bmN0aW9uKE9lKXtiZS5jdXJyVG9wTGV2ZWw9T2UsT2UuYWNjZXB0KGJlKX0pfSxsZS5wcm90b3R5cGUudmlzaXROb25UZXJtaW5hbD1mdW5jdGlvbihiZSl7'@; put 'dmFyIE9lPXRoaXMubmFtZVRvVG9wUnVsZVtiZS5ub25UZXJtaW5hbE5hbWVdO2lmKE9lKWJlLnJlZmVyZW5jZWRSdWxlPU9lO2Vsc2V7dmFyICRlPXRoaXMuZXJyTXNnUHJvdmlkZXIuYnVpbGRSdWxlTm90Rm91bmRFcnJvcih0aGlzLmN1cnJUb3BMZXZlbCxiZSk7dGhpcy5lcnJvcnMucHVz'@; put 'aCh7bWVzc2FnZTokZSx0eXBlOnJkLlVOUkVTT0xWRURfU1VCUlVMRV9SRUYscnVsZU5hbWU6dGhpcy5jdXJyVG9wTGV2ZWwubmFtZSx1bnJlc29sdmVkUmVmTmFtZTpiZS5ub25UZXJtaW5hbE5hbWV9KX19LGxlfShscyk7ZnVuY3Rpb24gSG0ocGUpe3BlPV9lKHBlLHtlcnJNc2dQcm92aWRl'@; put 'cjpQbX0pO3ZhciBsZT17fTtyZXR1cm4gUihwZS5ydWxlcyxmdW5jdGlvbihiZSl7bGVbYmUubmFtZV09YmV9KSxmdW5jdGlvbiBvOChwZSxsZSl7dmFyIGJlPW5ldyBTZyhwZSxsZSk7cmV0dXJuIGJlLnJlc29sdmVSZWZzKCksYmUuZXJyb3JzfShsZSxwZS5lcnJNc2dQcm92aWRlcil9ZnVu'@; put 'Y3Rpb24gd2QocGUpe3JldHVybiB3MigocGU9X2UocGUse2Vyck1zZ1Byb3ZpZGVyOmkxLGlnbm9yZWRJc3N1ZXM6e319KSkucnVsZXMscGUubWF4TG9va2FoZWFkLHBlLnRva2VuVHlwZXMscGUuaWdub3JlZElzc3VlcyxwZS5lcnJNc2dQcm92aWRlcixwZS5ncmFtbWFyTmFtZSl9ZnVuY3Rp'@; put 'b24gaTUocGUpe1IocGUucnVsZXMsZnVuY3Rpb24obGUpe3ZhciBiZT1uZXcgdHU7bGUuYWNjZXB0KGJlKSxSKGJlLmRzbE1ldGhvZHMsZnVuY3Rpb24oT2Upe1IoT2UsZnVuY3Rpb24oJGUsU3QpeyRlLmlkeD1TdCsxfSl9KX0pfXZhciBubD0iTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uIixI'@; put 'MT0iTm9WaWFibGVBbHRFeGNlcHRpb24iLGRwPSJFYXJseUV4aXRFeGNlcHRpb24iLGE4PSJOb3RBbGxJbnB1dFBhcnNlZEV4Y2VwdGlvbiIsczg9W25sLEgxLGRwLGE4XTtmdW5jdGlvbiBocChwZSl7cmV0dXJuIHEoczgscGUubmFtZSl9ZnVuY3Rpb24gZDMocGUsbGUsYmUpe3RoaXMubmFt'@; put 'ZT1ubCx0aGlzLm1lc3NhZ2U9cGUsdGhpcy50b2tlbj1sZSx0aGlzLnByZXZpb3VzVG9rZW49YmUsdGhpcy5yZXN5bmNlZFRva2Vucz1bXX1mdW5jdGlvbiBoMyhwZSxsZSxiZSl7dGhpcy5uYW1lPUgxLHRoaXMubWVzc2FnZT1wZSx0aGlzLnRva2VuPWxlLHRoaXMucHJldmlvdXNUb2tlbj1i'@; put 'ZSx0aGlzLnJlc3luY2VkVG9rZW5zPVtdfWZ1bmN0aW9uIGw4KHBlLGxlKXt0aGlzLm5hbWU9YTgsdGhpcy5tZXNzYWdlPXBlLHRoaXMudG9rZW49bGUsdGhpcy5yZXN5bmNlZFRva2Vucz1bXX1mdW5jdGlvbiBjOChwZSxsZSxiZSl7dGhpcy5uYW1lPWRwLHRoaXMubWVzc2FnZT1wZSx0aGlz'@; put 'LnRva2VuPWxlLHRoaXMucHJldmlvdXNUb2tlbj1iZSx0aGlzLnJlc3luY2VkVG9rZW5zPVtdfU9iamVjdC5mcmVlemUoczgpLGQzLnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUsaDMucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZSxsOC5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLGM4LnBy'@; put 'b3RvdHlwZT1FcnJvci5wcm90b3R5cGU7dmFyIHVhPXt9LHZmPSJJblJ1bGVSZWNvdmVyeUV4Y2VwdGlvbiI7ZnVuY3Rpb24gTHUocGUpe3RoaXMubmFtZT12Zix0aGlzLm1lc3NhZ2U9cGV9THUucHJvdG90eXBlPUVycm9yLnByb3RvdHlwZTt2YXIgRWc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBw'@; put 'ZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLmluaXRSZWNvdmVyYWJsZT1mdW5jdGlvbihsZSl7dGhpcy5maXJzdEFmdGVyUmVwTWFwPXt9LHRoaXMucmVzeW5jRm9sbG93cz17fSx0aGlzLnJlY292ZXJ5RW5hYmxlZD1XKGxlLCJyZWNvdmVyeUVuYWJsZWQiKT9sZS5yZWNvdmVyeUVuYWJsZWQ6'@; put 'enMucmVjb3ZlcnlFbmFibGVkLHRoaXMucmVjb3ZlcnlFbmFibGVkJiYodGhpcy5hdHRlbXB0SW5SZXBldGl0aW9uUmVjb3Zlcnk9QzIpfSxwZS5wcm90b3R5cGUuZ2V0VG9rZW5Ub0luc2VydD1mdW5jdGlvbihsZSl7dmFyIGJlPWdmKGxlLCIiLE5hTixOYU4sTmFOLE5hTixOYU4sTmFOKTty'@; put 'ZXR1cm4gYmUuaXNJbnNlcnRlZEluUmVjb3Zlcnk9ITAsYmV9LHBlLnByb3RvdHlwZS5jYW5Ub2tlblR5cGVCZUluc2VydGVkSW5SZWNvdmVyeT1mdW5jdGlvbihsZSl7cmV0dXJuITB9LHBlLnByb3RvdHlwZS50cnlJblJlcGV0aXRpb25SZWNvdmVyeT1mdW5jdGlvbihsZSxiZSxPZSwkZSl7'@; put 'Zm9yKHZhciBTdD10aGlzLFF0PXRoaXMuZmluZFJlU3luY1Rva2VuVHlwZSgpLEVuPXRoaXMuZXhwb3J0TGV4ZXJTdGF0ZSgpLGNyPVtdLFVyPSExLHBpPXRoaXMuTEEoMSksRHI9dGhpcy5MQSgxKSxKaT1mdW5jdGlvbigpe3ZhciB4bz1TdC5MQSgwKSxkcz1uZXcgZDMoU3QuZXJyb3JNZXNz'@; put 'YWdlUHJvdmlkZXIuYnVpbGRNaXNtYXRjaFRva2VuTWVzc2FnZSh7ZXhwZWN0ZWQ6JGUsYWN0dWFsOnBpLHByZXZpb3VzOnhvLHJ1bGVOYW1lOlN0LmdldEN1cnJSdWxlRnVsbE5hbWUoKX0pLHBpLFN0LkxBKDApKTtkcy5yZXN5bmNlZFRva2Vucz1OKGNyKSxTdC5TQVZFX0VSUk9SKGRzKX07'@; put 'IVVyOyl7aWYodGhpcy50b2tlbk1hdGNoZXIoRHIsJGUpKXJldHVybiB2b2lkIEppKCk7aWYoT2UuY2FsbCh0aGlzKSlyZXR1cm4gSmkoKSx2b2lkIGxlLmFwcGx5KHRoaXMsYmUpO3RoaXMudG9rZW5NYXRjaGVyKERyLFF0KT9Vcj0hMDooRHI9dGhpcy5TS0lQX1RPS0VOKCksdGhpcy5hZGRU'@; put 'b1Jlc3luY1Rva2VucyhEcixjcikpfXRoaXMuaW1wb3J0TGV4ZXJTdGF0ZShFbil9LHBlLnByb3RvdHlwZS5zaG91bGRJblJlcGV0aXRpb25SZWNvdmVyeUJlVHJpZWQ9ZnVuY3Rpb24obGUsYmUsT2Upe3JldHVybiEoITE9PT1PZXx8dm9pZCAwPT09bGV8fHZvaWQgMD09PWJlfHx0aGlzLnRv'@; put 'a2VuTWF0Y2hlcih0aGlzLkxBKDEpLGxlKXx8dGhpcy5pc0JhY2tUcmFja2luZygpfHx0aGlzLmNhblBlcmZvcm1JblJ1bGVSZWNvdmVyeShsZSx0aGlzLmdldEZvbGxvd3NGb3JJblJ1bGVSZWNvdmVyeShsZSxiZSkpKX0scGUucHJvdG90eXBlLmdldEZvbGxvd3NGb3JJblJ1bGVSZWNvdmVy'@; put 'eT1mdW5jdGlvbihsZSxiZSl7dmFyIE9lPXRoaXMuZ2V0Q3VycmVudEdyYW1tYXJQYXRoKGxlLGJlKTtyZXR1cm4gdGhpcy5nZXROZXh0UG9zc2libGVUb2tlblR5cGVzKE9lKX0scGUucHJvdG90eXBlLnRyeUluUnVsZVJlY292ZXJ5PWZ1bmN0aW9uKGxlLGJlKXtpZih0aGlzLmNhblJlY292'@; put 'ZXJXaXRoU2luZ2xlVG9rZW5JbnNlcnRpb24obGUsYmUpKXJldHVybiB0aGlzLmdldFRva2VuVG9JbnNlcnQobGUpO2lmKHRoaXMuY2FuUmVjb3ZlcldpdGhTaW5nbGVUb2tlbkRlbGV0aW9uKGxlKSl7dmFyICRlPXRoaXMuU0tJUF9UT0tFTigpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigp'@; put 'LCRlfXRocm93IG5ldyBMdSgic2FkIHNhZCBwYW5kYSIpfSxwZS5wcm90b3R5cGUuY2FuUGVyZm9ybUluUnVsZVJlY292ZXJ5PWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5jYW5SZWNvdmVyV2l0aFNpbmdsZVRva2VuSW5zZXJ0aW9uKGxlLGJlKXx8dGhpcy5jYW5SZWNvdmVyV2l0aFNp'@; put 'bmdsZVRva2VuRGVsZXRpb24obGUpfSxwZS5wcm90b3R5cGUuY2FuUmVjb3ZlcldpdGhTaW5nbGVUb2tlbkluc2VydGlvbj1mdW5jdGlvbihsZSxiZSl7dmFyIE9lPXRoaXM7aWYoIXRoaXMuY2FuVG9rZW5UeXBlQmVJbnNlcnRlZEluUmVjb3ZlcnkobGUpfHxjKGJlKSlyZXR1cm4hMTt2YXIg'@; put 'JGU9dGhpcy5MQSgxKTtyZXR1cm4gdm9pZCAwIT09Q2UoYmUsZnVuY3Rpb24oUXQpe3JldHVybiBPZS50b2tlbk1hdGNoZXIoJGUsUXQpfSl9LHBlLnByb3RvdHlwZS5jYW5SZWNvdmVyV2l0aFNpbmdsZVRva2VuRGVsZXRpb249ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLnRva2VuTWF0Y2hl'@; put 'cih0aGlzLkxBKDIpLGxlKX0scGUucHJvdG90eXBlLmlzSW5DdXJyZW50UnVsZVJlU3luY1NldD1mdW5jdGlvbihsZSl7dmFyIGJlPXRoaXMuZ2V0Q3VyckZvbGxvd0tleSgpO3JldHVybiBxKHRoaXMuZ2V0Rm9sbG93U2V0RnJvbUZvbGxvd0tleShiZSksbGUpfSxwZS5wcm90b3R5cGUuZmlu'@; put 'ZFJlU3luY1Rva2VuVHlwZT1mdW5jdGlvbigpe2Zvcih2YXIgbGU9dGhpcy5mbGF0dGVuRm9sbG93U2V0KCksYmU9dGhpcy5MQSgxKSxPZT0yOzspe3ZhciAkZT1iZS50b2tlblR5cGU7aWYocShsZSwkZSkpcmV0dXJuICRlO2JlPXRoaXMuTEEoT2UpLE9lKyt9fSxwZS5wcm90b3R5cGUuZ2V0'@; put 'Q3VyckZvbGxvd0tleT1mdW5jdGlvbigpe2lmKDE9PT10aGlzLlJVTEVfU1RBQ0subGVuZ3RoKXJldHVybiB1YTt2YXIgbGU9dGhpcy5nZXRMYXN0RXhwbGljaXRSdWxlU2hvcnROYW1lKCksYmU9dGhpcy5nZXRMYXN0RXhwbGljaXRSdWxlT2NjdXJyZW5jZUluZGV4KCksT2U9dGhpcy5nZXRQ'@; put 'cmV2aW91c0V4cGxpY2l0UnVsZVNob3J0TmFtZSgpO3JldHVybntydWxlTmFtZTp0aGlzLnNob3J0UnVsZU5hbWVUb0Z1bGxOYW1lKGxlKSxpZHhJbkNhbGxpbmdSdWxlOmJlLGluUnVsZTp0aGlzLnNob3J0UnVsZU5hbWVUb0Z1bGxOYW1lKE9lKX19LHBlLnByb3RvdHlwZS5idWlsZEZ1bGxG'@; put 'b2xsb3dLZXlTdGFjaz1mdW5jdGlvbigpe3ZhciBsZT10aGlzLGJlPXRoaXMuUlVMRV9TVEFDSyxPZT10aGlzLlJVTEVfT0NDVVJSRU5DRV9TVEFDSztyZXR1cm4gYyh0aGlzLkxBU1RfRVhQTElDSVRfUlVMRV9TVEFDSyl8fChiZT1DKHRoaXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLLGZ1'@; put 'bmN0aW9uKCRlKXtyZXR1cm4gbGUuUlVMRV9TVEFDS1skZV19KSxPZT1DKHRoaXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLLGZ1bmN0aW9uKCRlKXtyZXR1cm4gbGUuUlVMRV9PQ0NVUlJFTkNFX1NUQUNLWyRlXX0pKSxDKGJlLGZ1bmN0aW9uKCRlLFN0KXtyZXR1cm4gMD09PVN0P3VhOnty'@; put 'dWxlTmFtZTpsZS5zaG9ydFJ1bGVOYW1lVG9GdWxsTmFtZSgkZSksaWR4SW5DYWxsaW5nUnVsZTpPZVtTdF0saW5SdWxlOmxlLnNob3J0UnVsZU5hbWVUb0Z1bGxOYW1lKGJlW1N0LTFdKX19KX0scGUucHJvdG90eXBlLmZsYXR0ZW5Gb2xsb3dTZXQ9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpczty'@; put 'ZXR1cm4gdyhDKHRoaXMuYnVpbGRGdWxsRm9sbG93S2V5U3RhY2soKSxmdW5jdGlvbihPZSl7cmV0dXJuIGxlLmdldEZvbGxvd1NldEZyb21Gb2xsb3dLZXkoT2UpfSkpfSxwZS5wcm90b3R5cGUuZ2V0Rm9sbG93U2V0RnJvbUZvbGxvd0tleT1mdW5jdGlvbihsZSl7cmV0dXJuIGxlPT09dWE/'@; put 'W0pjXTp0aGlzLnJlc3luY0ZvbGxvd3NbbGUucnVsZU5hbWUrbGUuaWR4SW5DYWxsaW5nUnVsZSsiX35JTn5fIitsZS5pblJ1bGVdfSxwZS5wcm90b3R5cGUuYWRkVG9SZXN5bmNUb2tlbnM9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLnRva2VuTWF0Y2hlcihsZSxKYyl8fGJlLnB1c2go'@; put 'bGUpLGJlfSxwZS5wcm90b3R5cGUucmVTeW5jVG89ZnVuY3Rpb24obGUpe2Zvcih2YXIgYmU9W10sT2U9dGhpcy5MQSgxKTshMT09PXRoaXMudG9rZW5NYXRjaGVyKE9lLGxlKTspT2U9dGhpcy5TS0lQX1RPS0VOKCksdGhpcy5hZGRUb1Jlc3luY1Rva2VucyhPZSxiZSk7cmV0dXJuIE4oYmUp'@; put 'fSxwZS5wcm90b3R5cGUuYXR0ZW1wdEluUmVwZXRpdGlvblJlY292ZXJ5PWZ1bmN0aW9uKGxlLGJlLE9lLCRlLFN0LFF0LEVuKXt9LHBlLnByb3RvdHlwZS5nZXRDdXJyZW50R3JhbW1hclBhdGg9ZnVuY3Rpb24obGUsYmUpe3JldHVybntydWxlU3RhY2s6dGhpcy5nZXRIdW1hblJlYWRhYmxl'@; put 'UnVsZVN0YWNrKCksb2NjdXJyZW5jZVN0YWNrOnJlKHRoaXMuUlVMRV9PQ0NVUlJFTkNFX1NUQUNLKSxsYXN0VG9rOmxlLGxhc3RUb2tPY2N1cnJlbmNlOmJlfX0scGUucHJvdG90eXBlLmdldEh1bWFuUmVhZGFibGVSdWxlU3RhY2s9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpcztyZXR1cm4gYyh0'@; put 'aGlzLkxBU1RfRVhQTElDSVRfUlVMRV9TVEFDSyk/Qyh0aGlzLlJVTEVfU1RBQ0ssZnVuY3Rpb24oYmUpe3JldHVybiBsZS5zaG9ydFJ1bGVOYW1lVG9GdWxsTmFtZShiZSl9KTpDKHRoaXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLLGZ1bmN0aW9uKGJlKXtyZXR1cm4gbGUuc2hvcnRSdWxl'@; put 'TmFtZVRvRnVsbE5hbWUobGUuUlVMRV9TVEFDS1tiZV0pfSl9LHBlfSgpO2Z1bmN0aW9uIEMyKHBlLGxlLGJlLE9lLCRlLFN0LFF0KXt2YXIgRW49dGhpcy5nZXRLZXlGb3JBdXRvbWF0aWNMb29rYWhlYWQoT2UsJGUpLGNyPXRoaXMuZmlyc3RBZnRlclJlcE1hcFtFbl07aWYodm9pZCAwPT09'@; put 'Y3Ipe3ZhciBVcj10aGlzLmdldEN1cnJSdWxlRnVsbE5hbWUoKTtjcj1uZXcgU3QodGhpcy5nZXRHQXN0UHJvZHVjdGlvbnMoKVtVcl0sJGUpLnN0YXJ0V2Fsa2luZygpLHRoaXMuZmlyc3RBZnRlclJlcE1hcFtFbl09Y3J9dmFyIEppPWNyLnRva2VuLHhvPWNyLm9jY3VycmVuY2U7MT09PXRo'@; put 'aXMuUlVMRV9TVEFDSy5sZW5ndGgmJmNyLmlzRW5kT2ZSdWxlJiZ2b2lkIDA9PT1KaSYmKEppPUpjLHhvPTEpLHRoaXMuc2hvdWxkSW5SZXBldGl0aW9uUmVjb3ZlcnlCZVRyaWVkKEppLHhvLFF0KSYmdGhpcy50cnlJblJlcGV0aXRpb25SZWNvdmVyeShwZSxsZSxiZSxKaSl9dmFyIHJ1PWZ1'@; put 'bmN0aW9uKCl7ZnVuY3Rpb24gcGUoKXt9cmV0dXJuIHBlLnByb3RvdHlwZS5pbml0TG9va3NBaGVhZD1mdW5jdGlvbihsZSl7dGhpcy5keW5hbWljVG9rZW5zRW5hYmxlZD1XKGxlLCJkeW5hbWljVG9rZW5zRW5hYmxlZCIpP2xlLmR5bmFtaWNUb2tlbnNFbmFibGVkOnpzLmR5bmFtaWNUb2tl'@; put 'bnNFbmFibGVkLHRoaXMubWF4TG9va2FoZWFkPVcobGUsIm1heExvb2thaGVhZCIpP2xlLm1heExvb2thaGVhZDp6cy5tYXhMb29rYWhlYWQsdGhpcy5sb29rQWhlYWRGdW5jc0NhY2hlPWplKCk/bmV3IE1hcDpbXSxqZSgpPyh0aGlzLmdldExhRnVuY0Zyb21DYWNoZT10aGlzLmdldExhRnVu'@; put 'Y0Zyb21NYXAsdGhpcy5zZXRMYUZ1bmNDYWNoZT10aGlzLnNldExhRnVuY0NhY2hlVXNpbmdNYXApOih0aGlzLmdldExhRnVuY0Zyb21DYWNoZT10aGlzLmdldExhRnVuY0Zyb21PYmosdGhpcy5zZXRMYUZ1bmNDYWNoZT10aGlzLnNldExhRnVuY1VzaW5nT2JqKX0scGUucHJvdG90eXBlLnBy'@; put 'ZUNvbXB1dGVMb29rYWhlYWRGdW5jdGlvbnM9ZnVuY3Rpb24obGUpe3ZhciBiZT10aGlzO1IobGUsZnVuY3Rpb24oT2Upe2JlLlRSQUNFX0lOSVQoT2UubmFtZSsiIFJ1bGUgTG9va2FoZWFkIixmdW5jdGlvbigpe3ZhciAkZT1mdW5jdGlvbiBPYyhwZSl7Z3MucmVzZXQoKSxwZS5hY2NlcHQo'@; put 'Z3MpO3ZhciBsZT1ncy5kc2xNZXRob2RzO3JldHVybiBncy5yZXNldCgpLGxlfShPZSksUXQ9JGUucmVwZXRpdGlvbixFbj0kZS5vcHRpb24sY3I9JGUucmVwZXRpdGlvbk1hbmRhdG9yeSxVcj0kZS5yZXBldGl0aW9uTWFuZGF0b3J5V2l0aFNlcGFyYXRvcixwaT0kZS5yZXBldGl0aW9uV2l0'@; put 'aFNlcGFyYXRvcjtSKCRlLmFsdGVybmF0aW9uLGZ1bmN0aW9uKERyKXt2YXIgSmk9MD09PURyLmlkeD8iIjpEci5pZHg7YmUuVFJBQ0VfSU5JVCgiIitwcyhEcikrSmksZnVuY3Rpb24oKXt2YXIgeG89ZnVuY3Rpb24gaW8ocGUsbGUsYmUsT2UsJGUsU3Qpe3ZhciBRdD1iZChwZSxsZSxiZSk7'@; put 'cmV0dXJuIFN0KFF0LE9lLGp1KFF0KT9Ncjp0YSwkZSl9KERyLmlkeCxPZSxEci5tYXhMb29rYWhlYWR8fGJlLm1heExvb2thaGVhZCxEci5oYXNQcmVkaWNhdGVzLGJlLmR5bmFtaWNUb2tlbnNFbmFibGVkLGJlLmxvb2tBaGVhZEJ1aWxkZXJGb3JBbHRlcm5hdGl2ZXMpLFlpPUYxKGJlLmZ1'@; put 'bGxSdWxlTmFtZVRvU2hvcnRbT2UubmFtZV0sMjU2LERyLmlkeCk7YmUuc2V0TGFGdW5jQ2FjaGUoWWkseG8pfSl9KSxSKFF0LGZ1bmN0aW9uKERyKXtiZS5jb21wdXRlTG9va2FoZWFkRnVuYyhPZSxEci5pZHgsNzY4LGNvLlJFUEVUSVRJT04sRHIubWF4TG9va2FoZWFkLHBzKERyKSl9KSxS'@; put 'KEVuLGZ1bmN0aW9uKERyKXtiZS5jb21wdXRlTG9va2FoZWFkRnVuYyhPZSxEci5pZHgsNTEyLGNvLk9QVElPTixEci5tYXhMb29rYWhlYWQscHMoRHIpKX0pLFIoY3IsZnVuY3Rpb24oRHIpe2JlLmNvbXB1dGVMb29rYWhlYWRGdW5jKE9lLERyLmlkeCxfMixjby5SRVBFVElUSU9OX01BTkRB'@; put 'VE9SWSxEci5tYXhMb29rYWhlYWQscHMoRHIpKX0pLFIoVXIsZnVuY3Rpb24oRHIpe2JlLmNvbXB1dGVMb29rYWhlYWRGdW5jKE9lLERyLmlkeCxtcyxjby5SRVBFVElUSU9OX01BTkRBVE9SWV9XSVRIX1NFUEFSQVRPUixEci5tYXhMb29rYWhlYWQscHMoRHIpKX0pLFIocGksZnVuY3Rpb24o'@; put 'RHIpe2JlLmNvbXB1dGVMb29rYWhlYWRGdW5jKE9lLERyLmlkeCxUYyxjby5SRVBFVElUSU9OX1dJVEhfU0VQQVJBVE9SLERyLm1heExvb2thaGVhZCxwcyhEcikpfSl9KX0pfSxwZS5wcm90b3R5cGUuY29tcHV0ZUxvb2thaGVhZEZ1bmM9ZnVuY3Rpb24obGUsYmUsT2UsJGUsU3QsUXQpe3Zh'@; put 'ciBFbj10aGlzO3RoaXMuVFJBQ0VfSU5JVCgiIitRdCsoMD09PWJlPyIiOmJlKSxmdW5jdGlvbigpe3ZhciBjcj1mdW5jdGlvbiBEYShwZSxsZSxiZSxPZSwkZSxTdCl7dmFyIFF0PXMwKHBlLGxlLCRlLGJlKSxFbj1qdShRdCk/TXI6dGE7cmV0dXJuIFN0KFF0WzBdLEVuLE9lKX0oYmUsbGUs'@; put 'U3R8fEVuLm1heExvb2thaGVhZCxFbi5keW5hbWljVG9rZW5zRW5hYmxlZCwkZSxFbi5sb29rQWhlYWRCdWlsZGVyRm9yT3B0aW9uYWwpLFVyPUYxKEVuLmZ1bGxSdWxlTmFtZVRvU2hvcnRbbGUubmFtZV0sT2UsYmUpO0VuLnNldExhRnVuY0NhY2hlKFVyLGNyKX0pfSxwZS5wcm90b3R5cGUu'@; put 'bG9va0FoZWFkQnVpbGRlckZvck9wdGlvbmFsPWZ1bmN0aW9uKGxlLGJlLE9lKXtyZXR1cm4gZnVuY3Rpb24gRWwocGUsbGUsYmUpe3ZhciBPZT1CKHBlLGZ1bmN0aW9uKFVyKXtyZXR1cm4gMT09PVVyLmxlbmd0aH0pLCRlPXBlLmxlbmd0aDtpZihPZSYmIWJlKXt2YXIgU3Q9dyhwZSk7aWYo'@; put 'MT09PVN0Lmxlbmd0aCYmYyhTdFswXS5jYXRlZ29yeU1hdGNoZXMpKXt2YXIgRW49U3RbMF0udG9rZW5UeXBlSWR4O3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLkxBKDEpLnRva2VuVHlwZUlkeD09PUVufX12YXIgY3I9a2UoU3QsZnVuY3Rpb24oVXIscGksRHIpe3JldHVybiBVcltw'@; put 'aS50b2tlblR5cGVJZHhdPSEwLFIocGkuY2F0ZWdvcnlNYXRjaGVzLGZ1bmN0aW9uKEppKXtVcltKaV09ITB9KSxVcn0sW10pO3JldHVybiBmdW5jdGlvbigpe3ZhciBVcj10aGlzLkxBKDEpO3JldHVybiEwPT09Y3JbVXIudG9rZW5UeXBlSWR4XX19cmV0dXJuIGZ1bmN0aW9uKCl7ZTpmb3Io'@; put 'dmFyIFVyPTA7VXI8JGU7VXIrKyl7Zm9yKHZhciBwaT1wZVtVcl0sRHI9cGkubGVuZ3RoLEppPTA7Smk8RHI7SmkrKyl7dmFyIHhvPXRoaXMuTEEoSmkrMSk7aWYoITE9PT1sZSh4byxwaVtKaV0pKWNvbnRpbnVlIGV9cmV0dXJuITB9cmV0dXJuITF9fShsZSxiZSxPZSl9LHBlLnByb3RvdHlw'@; put 'ZS5sb29rQWhlYWRCdWlsZGVyRm9yQWx0ZXJuYXRpdmVzPWZ1bmN0aW9uKGxlLGJlLE9lLCRlKXtyZXR1cm4gZnVuY3Rpb24gbnMocGUsbGUsYmUsT2Upe3ZhciAkZT1wZS5sZW5ndGgsU3Q9QihwZSxmdW5jdGlvbihjcil7cmV0dXJuIEIoY3IsZnVuY3Rpb24oVXIpe3JldHVybiAxPT09VXIu'@; put 'bGVuZ3RofSl9KTtpZihsZSlyZXR1cm4gZnVuY3Rpb24oY3Ipe2Zvcih2YXIgVXI9QyhjcixmdW5jdGlvbihaaSl7cmV0dXJuIFppLkdBVEV9KSxwaT0wO3BpPCRlO3BpKyspe3ZhciBEcj1wZVtwaV0sSmk9RHIubGVuZ3RoLHhvPVVyW3BpXTtpZih2b2lkIDA9PT14b3x8ITEhPT14by5jYWxs'@; put 'KHRoaXMpKWU6Zm9yKHZhciBZaT0wO1lpPEppO1lpKyspe2Zvcih2YXIgZHM9RHJbWWldLFBzPWRzLmxlbmd0aCxhYT0wO2FhPFBzO2FhKyspe3ZhciBJbz10aGlzLkxBKGFhKzEpO2lmKCExPT09YmUoSW8sZHNbYWFdKSljb250aW51ZSBlfXJldHVybiBwaX19fTtpZihTdCYmIU9lKXt2YXIg'@; put 'RW49a2UoQyhwZSxmdW5jdGlvbihjcil7cmV0dXJuIHcoY3IpfSksZnVuY3Rpb24oY3IsVXIscGkpe3JldHVybiBSKFVyLGZ1bmN0aW9uKERyKXtXKGNyLERyLnRva2VuVHlwZUlkeCl8fChjcltEci50b2tlblR5cGVJZHhdPXBpKSxSKERyLmNhdGVnb3J5TWF0Y2hlcyxmdW5jdGlvbihKaSl7'@; put 'VyhjcixKaSl8fChjcltKaV09cGkpfSl9KSxjcn0sW10pO3JldHVybiBmdW5jdGlvbigpe3ZhciBjcj10aGlzLkxBKDEpO3JldHVybiBFbltjci50b2tlblR5cGVJZHhdfX1yZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGNyPTA7Y3I8JGU7Y3IrKyl7dmFyIFVyPXBlW2NyXSxwaT1Vci5sZW5n'@; put 'dGg7ZTpmb3IodmFyIERyPTA7RHI8cGk7RHIrKyl7Zm9yKHZhciBKaT1VcltEcl0seG89SmkubGVuZ3RoLFlpPTA7WWk8eG87WWkrKyl7dmFyIGRzPXRoaXMuTEEoWWkrMSk7aWYoITE9PT1iZShkcyxKaVtZaV0pKWNvbnRpbnVlIGV9cmV0dXJuIGNyfX19fShsZSxiZSxPZSwkZSl9LHBlLnBy'@; put 'b3RvdHlwZS5nZXRLZXlGb3JBdXRvbWF0aWNMb29rYWhlYWQ9ZnVuY3Rpb24obGUsYmUpe3JldHVybiBGMSh0aGlzLmdldExhc3RFeHBsaWNpdFJ1bGVTaG9ydE5hbWUoKSxsZSxiZSl9LHBlLnByb3RvdHlwZS5nZXRMYUZ1bmNGcm9tQ2FjaGU9ZnVuY3Rpb24obGUpe30scGUucHJvdG90eXBl'@; put 'LmdldExhRnVuY0Zyb21NYXA9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLmxvb2tBaGVhZEZ1bmNzQ2FjaGUuZ2V0KGxlKX0scGUucHJvdG90eXBlLmdldExhRnVuY0Zyb21PYmo9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLmxvb2tBaGVhZEZ1bmNzQ2FjaGVbbGVdfSxwZS5wcm90b3R5cGUu'@; put 'c2V0TGFGdW5jQ2FjaGU9ZnVuY3Rpb24obGUsYmUpe30scGUucHJvdG90eXBlLnNldExhRnVuY0NhY2hlVXNpbmdNYXA9ZnVuY3Rpb24obGUsYmUpe3RoaXMubG9va0FoZWFkRnVuY3NDYWNoZS5zZXQobGUsYmUpfSxwZS5wcm90b3R5cGUuc2V0TGFGdW5jVXNpbmdPYmo9ZnVuY3Rpb24obGUs'@; put 'YmUpe3RoaXMubG9va0FoZWFkRnVuY3NDYWNoZVtsZV09YmV9LHBlfSgpLFRhPS9eXHMqZnVuY3Rpb25ccyooXFMqKVxzKlwoLztmdW5jdGlvbiB6dShwZSl7cmV0dXJuIHBlLm5hbWV8fHBlLnRvU3RyaW5nKCkubWF0Y2goVGEpWzFdfWZ1bmN0aW9uIFd1KHBlLGxlKXt2YXIgYmU9T2JqZWN0'@; put 'LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwZSwibmFtZSIpO3JldHVybiEoIVUoYmUpJiYhYmUuY29uZmlndXJhYmxlfHwoT2JqZWN0LmRlZmluZVByb3BlcnR5KHBlLCJuYW1lIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITEsdmFsdWU6bGV9KSwwKSl9ZnVu'@; put 'Y3Rpb24gZnAocGUsbGUpe2Zvcih2YXIgYmU9cyhwZSksT2U9YmUubGVuZ3RoLCRlPTA7JGU8T2U7JGUrKylmb3IodmFyIFF0PXBlW2JlWyRlXV0sRW49UXQubGVuZ3RoLGNyPTA7Y3I8RW47Y3IrKyl7dmFyIFVyPVF0W2NyXTt2b2lkIDA9PT1Vci50b2tlblR5cGVJZHgmJih2b2lkIDAhPT1V'@; put 'ci5mdWxsTmFtZT90aGlzW1VyLmZ1bGxOYW1lXShVci5jaGlsZHJlbixsZSk6dGhpc1tVci5uYW1lXShVci5jaGlsZHJlbixsZSkpfX12YXIgWGE9ZnVuY3Rpb24ocGUpe3JldHVybiBwZVtwZS5SRURVTkRBTlRfTUVUSE9EPTBdPSJSRURVTkRBTlRfTUVUSE9EIixwZVtwZS5NSVNTSU5HX01F'@; put 'VEhPRD0xXT0iTUlTU0lOR19NRVRIT0QiLHBlfShYYXx8e30pLHBwPVsiY29uc3RydWN0b3IiLCJ2aXNpdCIsInZhbGlkYXRlVmlzaXRvciJdLFRnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcGUoKXt9cmV0dXJuIHBlLnByb3RvdHlwZS5pbml0VHJlZUJ1aWxkZXI9ZnVuY3Rpb24obGUpe2lmKHRo'@; put 'aXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLPVtdLHRoaXMuQ1NUX1NUQUNLPVtdLHRoaXMub3V0cHV0Q3N0PVcobGUsIm91dHB1dENzdCIpP2xlLm91dHB1dENzdDp6cy5vdXRwdXRDc3QsdGhpcy5ub2RlTG9jYXRpb25UcmFja2luZz1XKGxlLCJub2RlTG9jYXRpb25UcmFja2luZyIpP2xl'@; put 'Lm5vZGVMb2NhdGlvblRyYWNraW5nOnpzLm5vZGVMb2NhdGlvblRyYWNraW5nLHRoaXMub3V0cHV0Q3N0KWlmKC9mdWxsL2kudGVzdCh0aGlzLm5vZGVMb2NhdGlvblRyYWNraW5nKSl0aGlzLnJlY292ZXJ5RW5hYmxlZD8odGhpcy5zZXROb2RlTG9jYXRpb25Gcm9tVG9rZW49emEsdGhpcy5z'@; put 'ZXROb2RlTG9jYXRpb25Gcm9tTm9kZT16YSx0aGlzLmNzdFBvc3RSdWxlPWx0LHRoaXMuc2V0SW5pdGlhbE5vZGVMb2NhdGlvbj10aGlzLnNldEluaXRpYWxOb2RlTG9jYXRpb25GdWxsUmVjb3ZlcnkpOih0aGlzLnNldE5vZGVMb2NhdGlvbkZyb21Ub2tlbj1sdCx0aGlzLnNldE5vZGVMb2Nh'@; put 'dGlvbkZyb21Ob2RlPWx0LHRoaXMuY3N0UG9zdFJ1bGU9dGhpcy5jc3RQb3N0UnVsZUZ1bGwsdGhpcy5zZXRJbml0aWFsTm9kZUxvY2F0aW9uPXRoaXMuc2V0SW5pdGlhbE5vZGVMb2NhdGlvbkZ1bGxSZWd1bGFyKTtlbHNlIGlmKC9vbmx5T2Zmc2V0L2kudGVzdCh0aGlzLm5vZGVMb2NhdGlv'@; put 'blRyYWNraW5nKSl0aGlzLnJlY292ZXJ5RW5hYmxlZD8odGhpcy5zZXROb2RlTG9jYXRpb25Gcm9tVG9rZW49cWksdGhpcy5zZXROb2RlTG9jYXRpb25Gcm9tTm9kZT1xaSx0aGlzLmNzdFBvc3RSdWxlPWx0LHRoaXMuc2V0SW5pdGlhbE5vZGVMb2NhdGlvbj10aGlzLnNldEluaXRpYWxOb2Rl'@; put 'TG9jYXRpb25Pbmx5T2Zmc2V0UmVjb3ZlcnkpOih0aGlzLnNldE5vZGVMb2NhdGlvbkZyb21Ub2tlbj1sdCx0aGlzLnNldE5vZGVMb2NhdGlvbkZyb21Ob2RlPWx0LHRoaXMuY3N0UG9zdFJ1bGU9dGhpcy5jc3RQb3N0UnVsZU9ubHlPZmZzZXQsdGhpcy5zZXRJbml0aWFsTm9kZUxvY2F0aW9u'@; put 'PXRoaXMuc2V0SW5pdGlhbE5vZGVMb2NhdGlvbk9ubHlPZmZzZXRSZWd1bGFyKTtlbHNle2lmKCEvbm9uZS9pLnRlc3QodGhpcy5ub2RlTG9jYXRpb25UcmFja2luZykpdGhyb3cgRXJyb3IoJ0ludmFsaWQgPG5vZGVMb2NhdGlvblRyYWNraW5nPiBjb25maWcgb3B0aW9uOiAiJytsZS5ub2Rl'@; put 'TG9jYXRpb25UcmFja2luZysnIicpO3RoaXMuc2V0Tm9kZUxvY2F0aW9uRnJvbVRva2VuPWx0LHRoaXMuc2V0Tm9kZUxvY2F0aW9uRnJvbU5vZGU9bHQsdGhpcy5jc3RQb3N0UnVsZT1sdCx0aGlzLnNldEluaXRpYWxOb2RlTG9jYXRpb249bHR9ZWxzZSB0aGlzLmNzdEludm9jYXRpb25TdGF0'@; put 'ZVVwZGF0ZT1sdCx0aGlzLmNzdEZpbmFsbHlTdGF0ZVVwZGF0ZT1sdCx0aGlzLmNzdFBvc3RUZXJtaW5hbD1sdCx0aGlzLmNzdFBvc3ROb25UZXJtaW5hbD1sdCx0aGlzLmNzdFBvc3RSdWxlPWx0LHRoaXMuZ2V0TGFzdEV4cGxpY2l0UnVsZVNob3J0TmFtZT10aGlzLmdldExhc3RFeHBsaWNp'@; put 'dFJ1bGVTaG9ydE5hbWVOb0NzdCx0aGlzLmdldFByZXZpb3VzRXhwbGljaXRSdWxlU2hvcnROYW1lPXRoaXMuZ2V0UHJldmlvdXNFeHBsaWNpdFJ1bGVTaG9ydE5hbWVOb0NzdCx0aGlzLmdldExhc3RFeHBsaWNpdFJ1bGVPY2N1cnJlbmNlSW5kZXg9dGhpcy5nZXRMYXN0RXhwbGljaXRSdWxl'@; put 'T2NjdXJyZW5jZUluZGV4Tm9Dc3QsdGhpcy5tYW55SW50ZXJuYWw9dGhpcy5tYW55SW50ZXJuYWxOb0NzdCx0aGlzLm9ySW50ZXJuYWw9dGhpcy5vckludGVybmFsTm9Dc3QsdGhpcy5vcHRpb25JbnRlcm5hbD10aGlzLm9wdGlvbkludGVybmFsTm9Dc3QsdGhpcy5hdExlYXN0T25lSW50ZXJu'@; put 'YWw9dGhpcy5hdExlYXN0T25lSW50ZXJuYWxOb0NzdCx0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsPXRoaXMubWFueVNlcEZpcnN0SW50ZXJuYWxOb0NzdCx0aGlzLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsPXRoaXMuYXRMZWFzdE9uZVNlcEZpcnN0SW50ZXJuYWxOb0NzdH0scGUucHJv'@; put 'dG90eXBlLnNldEluaXRpYWxOb2RlTG9jYXRpb25Pbmx5T2Zmc2V0UmVjb3Zlcnk9ZnVuY3Rpb24obGUpe2xlLmxvY2F0aW9uPXtzdGFydE9mZnNldDpOYU4sZW5kT2Zmc2V0Ok5hTn19LHBlLnByb3RvdHlwZS5zZXRJbml0aWFsTm9kZUxvY2F0aW9uT25seU9mZnNldFJlZ3VsYXI9ZnVuY3Rp'@; put 'b24obGUpe2xlLmxvY2F0aW9uPXtzdGFydE9mZnNldDp0aGlzLkxBKDEpLnN0YXJ0T2Zmc2V0LGVuZE9mZnNldDpOYU59fSxwZS5wcm90b3R5cGUuc2V0SW5pdGlhbE5vZGVMb2NhdGlvbkZ1bGxSZWNvdmVyeT1mdW5jdGlvbihsZSl7bGUubG9jYXRpb249e3N0YXJ0T2Zmc2V0Ok5hTixzdGFy'@; put 'dExpbmU6TmFOLHN0YXJ0Q29sdW1uOk5hTixlbmRPZmZzZXQ6TmFOLGVuZExpbmU6TmFOLGVuZENvbHVtbjpOYU59fSxwZS5wcm90b3R5cGUuc2V0SW5pdGlhbE5vZGVMb2NhdGlvbkZ1bGxSZWd1bGFyPWZ1bmN0aW9uKGxlKXt2YXIgYmU9dGhpcy5MQSgxKTtsZS5sb2NhdGlvbj17c3RhcnRP'@; put 'ZmZzZXQ6YmUuc3RhcnRPZmZzZXQsc3RhcnRMaW5lOmJlLnN0YXJ0TGluZSxzdGFydENvbHVtbjpiZS5zdGFydENvbHVtbixlbmRPZmZzZXQ6TmFOLGVuZExpbmU6TmFOLGVuZENvbHVtbjpOYU59fSxwZS5wcm90b3R5cGUuY3N0TmVzdGVkSW52b2NhdGlvblN0YXRlVXBkYXRlPWZ1bmN0aW9u'@; put 'KGxlLGJlKXt2YXIgT2U9e25hbWU6bGUsZnVsbE5hbWU6dGhpcy5zaG9ydFJ1bGVOYW1lVG9GdWxsW3RoaXMuZ2V0TGFzdEV4cGxpY2l0UnVsZVNob3J0TmFtZSgpXStsZSxjaGlsZHJlbjp7fX07dGhpcy5zZXRJbml0aWFsTm9kZUxvY2F0aW9uKE9lKSx0aGlzLkNTVF9TVEFDSy5wdXNoKE9l'@; put 'KX0scGUucHJvdG90eXBlLmNzdEludm9jYXRpb25TdGF0ZVVwZGF0ZT1mdW5jdGlvbihsZSxiZSl7dGhpcy5MQVNUX0VYUExJQ0lUX1JVTEVfU1RBQ0sucHVzaCh0aGlzLlJVTEVfU1RBQ0subGVuZ3RoLTEpO3ZhciBPZT17bmFtZTpsZSxjaGlsZHJlbjp7fX07dGhpcy5zZXRJbml0aWFsTm9k'@; put 'ZUxvY2F0aW9uKE9lKSx0aGlzLkNTVF9TVEFDSy5wdXNoKE9lKX0scGUucHJvdG90eXBlLmNzdEZpbmFsbHlTdGF0ZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLLnBvcCgpLHRoaXMuQ1NUX1NUQUNLLnBvcCgpfSxwZS5wcm90b3R5cGUuY3N0TmVzdGVk'@; put 'RmluYWxseVN0YXRlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGxlPXRoaXMuQ1NUX1NUQUNLLnBvcCgpO3RoaXMuY3N0UG9zdFJ1bGUobGUpfSxwZS5wcm90b3R5cGUuY3N0UG9zdFJ1bGVGdWxsPWZ1bmN0aW9uKGxlKXt2YXIgYmU9dGhpcy5MQSgwKSxPZT1sZS5sb2NhdGlvbjtPZS5zdGFydE9m'@; put 'ZnNldDw9YmUuc3RhcnRPZmZzZXQ/KE9lLmVuZE9mZnNldD1iZS5lbmRPZmZzZXQsT2UuZW5kTGluZT1iZS5lbmRMaW5lLE9lLmVuZENvbHVtbj1iZS5lbmRDb2x1bW4pOihPZS5zdGFydE9mZnNldD1OYU4sT2Uuc3RhcnRMaW5lPU5hTixPZS5zdGFydENvbHVtbj1OYU4pfSxwZS5wcm90b3R5'@; put 'cGUuY3N0UG9zdFJ1bGVPbmx5T2Zmc2V0PWZ1bmN0aW9uKGxlKXt2YXIgYmU9dGhpcy5MQSgwKSxPZT1sZS5sb2NhdGlvbjtPZS5zdGFydE9mZnNldDw9YmUuc3RhcnRPZmZzZXQ/T2UuZW5kT2Zmc2V0PWJlLmVuZE9mZnNldDpPZS5zdGFydE9mZnNldD1OYU59LHBlLnByb3RvdHlwZS5jc3RQ'@; put 'b3N0VGVybWluYWw9ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT10aGlzLkNTVF9TVEFDS1t0aGlzLkNTVF9TVEFDSy5sZW5ndGgtMV07KGZ1bmN0aW9uIGh0KHBlLGxlLGJlKXt2b2lkIDA9PT1wZS5jaGlsZHJlbltiZV0/cGUuY2hpbGRyZW5bYmVdPVtsZV06cGUuY2hpbGRyZW5bYmVdLnB1c2go'@; put 'bGUpfSkoT2UsYmUsbGUpLHRoaXMuc2V0Tm9kZUxvY2F0aW9uRnJvbVRva2VuKE9lLmxvY2F0aW9uLGJlKX0scGUucHJvdG90eXBlLmNzdFBvc3ROb25UZXJtaW5hbD1mdW5jdGlvbihsZSxiZSl7aWYoITAhPT10aGlzLmlzQmFja1RyYWNraW5nKCkpe3ZhciBPZT10aGlzLkNTVF9TVEFDS1t0'@; put 'aGlzLkNTVF9TVEFDSy5sZW5ndGgtMV07eXQoT2UsYmUsbGUpLHRoaXMuc2V0Tm9kZUxvY2F0aW9uRnJvbU5vZGUoT2UubG9jYXRpb24sbGUubG9jYXRpb24pfX0scGUucHJvdG90eXBlLmdldEJhc2VDc3RWaXNpdG9yQ29uc3RydWN0b3I9ZnVuY3Rpb24oKXtpZihVKHRoaXMuYmFzZUNzdFZp'@; put 'c2l0b3JDb25zdHJ1Y3Rvcikpe3ZhciBsZT1mdW5jdGlvbiBWbShwZSxsZSl7dmFyIGJlPWZ1bmN0aW9uKCl7fTtXdShiZSxwZSsiQmFzZVNlbWFudGljcyIpO3ZhciBPZT17dmlzaXQ6ZnVuY3Rpb24oJGUsU3Qpe2lmKGIoJGUpJiYoJGU9JGVbMF0pLCFVKCRlKSlyZXR1cm4gdm9pZCAwIT09'@; put 'JGUuZnVsbE5hbWU/dGhpc1skZS5mdWxsTmFtZV0oJGUuY2hpbGRyZW4sU3QpOnRoaXNbJGUubmFtZV0oJGUuY2hpbGRyZW4sU3QpfSx2YWxpZGF0ZVZpc2l0b3I6ZnVuY3Rpb24oKXt2YXIgJGU9ZnVuY3Rpb24gdTAocGUsbGUpe3ZhciBiZT1mdW5jdGlvbiBycyhwZSxsZSl7dmFyIGJlPUMo'@; put 'bGUsZnVuY3Rpb24oT2Upe2lmKCFIKHBlW09lXSkpcmV0dXJue21zZzoiTWlzc2luZyB2aXNpdG9yIG1ldGhvZDogPCIrT2UrIj4gb24gIit6dShwZS5jb25zdHJ1Y3RvcikrIiBDU1QgVmlzaXRvci4iLHR5cGU6WGEuTUlTU0lOR19NRVRIT0QsbWV0aG9kTmFtZTpPZX19KTtyZXR1cm4gcWUo'@; put 'YmUpfShwZSxsZSksT2U9ZnVuY3Rpb24gTWcocGUsbGUpe3ZhciBiZT1bXTtmb3IodmFyIE9lIGluIHBlKWpkLnRlc3QoT2UpJiZIKHBlW09lXSkmJiFxKHBwLE9lKSYmIXEobGUsT2UpJiZiZS5wdXNoKHttc2c6IlJlZHVuZGFudCB2aXNpdG9yIG1ldGhvZDogPCIrT2UrIj4gb24gIit6dShw'@; put 'ZS5jb25zdHJ1Y3RvcikrIiBDU1QgVmlzaXRvclxuVGhlcmUgaXMgbm8gR3JhbW1hciBSdWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBtZXRob2QncyBuYW1lLlxuRm9yIHV0aWxpdHkgbWV0aG9kcyBvbiB2aXNpdG9yIGNsYXNzZXMgdXNlIG1ldGhvZHMgbmFtZXMgdGhhdCBkbyBub3QgbWF0'@; put 'Y2ggLyIramQuc291cmNlKyIvLiIsdHlwZTpYYS5SRURVTkRBTlRfTUVUSE9ELG1ldGhvZE5hbWU6T2V9KTtyZXR1cm4gYmV9KHBlLGxlKTtyZXR1cm4gYmUuY29uY2F0KE9lKX0odGhpcyxsZSk7aWYoIWMoJGUpKXt2YXIgU3Q9QygkZSxmdW5jdGlvbihRdCl7cmV0dXJuIFF0Lm1zZ30pO3Ro'@; put 'cm93IEVycm9yKCJFcnJvcnMgRGV0ZWN0ZWQgaW4gQ1NUIFZpc2l0b3IgPCIrenUodGhpcy5jb25zdHJ1Y3RvcikrIj46XG5cdCIrU3Quam9pbigiXG5cbiIpLnJlcGxhY2UoL1xuL2csIlxuXHQiKSl9fX07cmV0dXJuKGJlLnByb3RvdHlwZT1PZSkuY29uc3RydWN0b3I9YmUsYmUuX1JVTEVf'@; put 'TkFNRVM9bGUsYmV9KHRoaXMuY2xhc3NOYW1lLHRoaXMuYWxsUnVsZU5hbWVzKTtyZXR1cm4gdGhpcy5iYXNlQ3N0VmlzaXRvckNvbnN0cnVjdG9yPWxlLGxlfXJldHVybiB0aGlzLmJhc2VDc3RWaXNpdG9yQ29uc3RydWN0b3J9LHBlLnByb3RvdHlwZS5nZXRCYXNlQ3N0VmlzaXRvckNvbnN0'@; put 'cnVjdG9yV2l0aERlZmF1bHRzPWZ1bmN0aW9uKCl7aWYoVSh0aGlzLmJhc2VDc3RWaXNpdG9yV2l0aERlZmF1bHRzQ29uc3RydWN0b3IpKXt2YXIgbGU9ZnVuY3Rpb24gZmwocGUsbGUsYmUpe3ZhciBPZT1mdW5jdGlvbigpe307V3UoT2UscGUrIkJhc2VTZW1hbnRpY3NXaXRoRGVmYXVsdHMi'@; put 'KTt2YXIgJGU9T2JqZWN0LmNyZWF0ZShiZS5wcm90b3R5cGUpO3JldHVybiBSKGxlLGZ1bmN0aW9uKFN0KXskZVtTdF09ZnB9KSwoT2UucHJvdG90eXBlPSRlKS5jb25zdHJ1Y3Rvcj1PZSxPZX0odGhpcy5jbGFzc05hbWUsdGhpcy5hbGxSdWxlTmFtZXMsdGhpcy5nZXRCYXNlQ3N0VmlzaXRv'@; put 'ckNvbnN0cnVjdG9yKCkpO3JldHVybiB0aGlzLmJhc2VDc3RWaXNpdG9yV2l0aERlZmF1bHRzQ29uc3RydWN0b3I9bGUsbGV9cmV0dXJuIHRoaXMuYmFzZUNzdFZpc2l0b3JXaXRoRGVmYXVsdHNDb25zdHJ1Y3Rvcn0scGUucHJvdG90eXBlLm5lc3RlZFJ1bGVCZWZvcmVDbGF1c2U9ZnVuY3Rp'@; put 'b24obGUsYmUpe3ZhciBPZTtpZih2b2lkIDAhPT1sZS5OQU1FKXJldHVybiB0aGlzLm5lc3RlZFJ1bGVJbnZvY2F0aW9uU3RhdGVVcGRhdGUoT2U9bGUuTkFNRSxiZSksT2V9LHBlLnByb3RvdHlwZS5uZXN0ZWRBbHRCZWZvcmVDbGF1c2U9ZnVuY3Rpb24obGUsYmUsT2UsJGUpe3ZhciBFbixR'@; put 'dD1uOCh0aGlzLmdldExhc3RFeHBsaWNpdFJ1bGVTaG9ydE5hbWUoKSxPZSxiZSwkZSk7aWYodm9pZCAwIT09bGUuTkFNRSlyZXR1cm4gdGhpcy5uZXN0ZWRSdWxlSW52b2NhdGlvblN0YXRlVXBkYXRlKEVuPWxlLk5BTUUsUXQpLHtzaG9ydE5hbWU6UXQsbmVzdGVkTmFtZTpFbn19LHBlLnBy'@; put 'b3RvdHlwZS5uZXN0ZWRSdWxlRmluYWxseUNsYXVzZT1mdW5jdGlvbihsZSxiZSl7dmFyIE9lPXRoaXMuQ1NUX1NUQUNLLCRlPU9lW09lLmxlbmd0aC0xXTt0aGlzLm5lc3RlZFJ1bGVGaW5hbGx5U3RhdGVVcGRhdGUoKTt2YXIgU3Q9T2VbT2UubGVuZ3RoLTFdO3l0KFN0LGJlLCRlKSx0aGlz'@; put 'LnNldE5vZGVMb2NhdGlvbkZyb21Ob2RlKFN0LmxvY2F0aW9uLCRlLmxvY2F0aW9uKX0scGUucHJvdG90eXBlLmdldExhc3RFeHBsaWNpdFJ1bGVTaG9ydE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SVUxFX1NUQUNLW3RoaXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLW3RoaXMuTEFT'@; put 'VF9FWFBMSUNJVF9SVUxFX1NUQUNLLmxlbmd0aC0xXV19LHBlLnByb3RvdHlwZS5nZXRMYXN0RXhwbGljaXRSdWxlU2hvcnROYW1lTm9Dc3Q9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpcy5SVUxFX1NUQUNLO3JldHVybiBsZVtsZS5sZW5ndGgtMV19LHBlLnByb3RvdHlwZS5nZXRQcmV2aW91c0V4'@; put 'cGxpY2l0UnVsZVNob3J0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJVTEVfU1RBQ0tbdGhpcy5MQVNUX0VYUExJQ0lUX1JVTEVfU1RBQ0tbdGhpcy5MQVNUX0VYUExJQ0lUX1JVTEVfU1RBQ0subGVuZ3RoLTJdXX0scGUucHJvdG90eXBlLmdldFByZXZpb3VzRXhwbGljaXRSdWxlU2hv'@; put 'cnROYW1lTm9Dc3Q9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpcy5SVUxFX1NUQUNLO3JldHVybiBsZVtsZS5sZW5ndGgtMl19LHBlLnByb3RvdHlwZS5nZXRMYXN0RXhwbGljaXRSdWxlT2NjdXJyZW5jZUluZGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUlVMRV9PQ0NVUlJFTkNFX1NUQUNLW3Ro'@; put 'aXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLW3RoaXMuTEFTVF9FWFBMSUNJVF9SVUxFX1NUQUNLLmxlbmd0aC0xXV19LHBlLnByb3RvdHlwZS5nZXRMYXN0RXhwbGljaXRSdWxlT2NjdXJyZW5jZUluZGV4Tm9Dc3Q9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpcy5SVUxFX09DQ1VSUkVOQ0VfU1RB'@; put 'Q0s7cmV0dXJuIGxlW2xlLmxlbmd0aC0xXX0scGUucHJvdG90eXBlLm5lc3RlZFJ1bGVJbnZvY2F0aW9uU3RhdGVVcGRhdGU9ZnVuY3Rpb24obGUsYmUpe3RoaXMuUlVMRV9PQ0NVUlJFTkNFX1NUQUNLLnB1c2goMSksdGhpcy5SVUxFX1NUQUNLLnB1c2goYmUpLHRoaXMuY3N0TmVzdGVkSW52'@; put 'b2NhdGlvblN0YXRlVXBkYXRlKGxlLGJlKX0scGUucHJvdG90eXBlLm5lc3RlZFJ1bGVGaW5hbGx5U3RhdGVVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLlJVTEVfU1RBQ0sucG9wKCksdGhpcy5SVUxFX09DQ1VSUkVOQ0VfU1RBQ0sucG9wKCksdGhpcy5jc3ROZXN0ZWRGaW5hbGx5U3RhdGVVcGRh'@; put 'dGUoKX0scGV9KCksZmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLmluaXRMZXhlckFkYXB0ZXI9ZnVuY3Rpb24oKXt0aGlzLnRva1ZlY3Rvcj1bXSx0aGlzLnRva1ZlY3Rvckxlbmd0aD0wLHRoaXMuY3VycklkeD0tMX0sT2JqZWN0LmRlZmluZVByb3Bl'@; put 'cnR5KHBlLnByb3RvdHlwZSwiaW5wdXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tWZWN0b3J9LHNldDpmdW5jdGlvbihsZSl7aWYoITAhPT10aGlzLnNlbGZBbmFseXNpc0RvbmUpdGhyb3cgRXJyb3IoIk1pc3NpbmcgPHBlcmZvcm1TZWxmQW5hbHlzaXM+IGludm9jYXRpb24g'@; put 'YXQgdGhlIGVuZCBvZiB0aGUgUGFyc2VyJ3MgY29uc3RydWN0b3IuIik7dGhpcy5yZXNldCgpLHRoaXMudG9rVmVjdG9yPWxlLHRoaXMudG9rVmVjdG9yTGVuZ3RoPWxlLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxwZS5wcm90b3R5cGUuU0tJUF9UT0tFTj1mdW5j'@; put 'dGlvbigpe3JldHVybiB0aGlzLmN1cnJJZHg8PXRoaXMudG9rVmVjdG9yLmxlbmd0aC0yPyh0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuTEEoMSkpOkZsfSxwZS5wcm90b3R5cGUuTEE9ZnVuY3Rpb24obGUpe3ZhciBiZT10aGlzLmN1cnJJZHgrbGU7cmV0dXJuIGJlPDB8fHRoaXMudG9rVmVj'@; put 'dG9yTGVuZ3RoPD1iZT9GbDp0aGlzLnRva1ZlY3RvcltiZV19LHBlLnByb3RvdHlwZS5jb25zdW1lVG9rZW49ZnVuY3Rpb24oKXt0aGlzLmN1cnJJZHgrK30scGUucHJvdG90eXBlLmV4cG9ydExleGVyU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJySWR4fSxwZS5wcm90b3R5cGUu'@; put 'aW1wb3J0TGV4ZXJTdGF0ZT1mdW5jdGlvbihsZSl7dGhpcy5jdXJySWR4PWxlfSxwZS5wcm90b3R5cGUucmVzZXRMZXhlclN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5jdXJySWR4PS0xfSxwZS5wcm90b3R5cGUubW92ZVRvVGVybWluYXRlZFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5jdXJySWR4PXRo'@; put 'aXMudG9rVmVjdG9yLmxlbmd0aC0xfSxwZS5wcm90b3R5cGUuZ2V0TGV4ZXJQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmV4cG9ydExleGVyU3RhdGUoKX0scGV9KCksZjM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLkFDVElPTj1mdW5jdGlv'@; put 'bihsZSl7cmV0dXJuIGxlLmNhbGwodGhpcyl9LHBlLnByb3RvdHlwZS5jb25zdW1lPWZ1bmN0aW9uKGxlLGJlLE9lKXtyZXR1cm4gdGhpcy5jb25zdW1lSW50ZXJuYWwoYmUsbGUsT2UpfSxwZS5wcm90b3R5cGUuc3VicnVsZT1mdW5jdGlvbihsZSxiZSxPZSl7cmV0dXJuIHRoaXMuc3VicnVs'@; put 'ZUludGVybmFsKGJlLGxlLE9lKX0scGUucHJvdG90eXBlLm9wdGlvbj1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMub3B0aW9uSW50ZXJuYWwoYmUsbGUpfSxwZS5wcm90b3R5cGUub3I9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwoYmUsbGUpfSxwZS5wcm90b3R5'@; put 'cGUubWFueT1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMubWFueUludGVybmFsKGxlLGJlKX0scGUucHJvdG90eXBlLmF0TGVhc3RPbmU9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLmF0TGVhc3RPbmVJbnRlcm5hbChsZSxiZSl9LHBlLnByb3RvdHlwZS5DT05TVU1FPWZ1bmN0aW9u'@; put 'KGxlLGJlKXtyZXR1cm4gdGhpcy5jb25zdW1lSW50ZXJuYWwobGUsMCxiZSl9LHBlLnByb3RvdHlwZS5DT05TVU1FMT1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMuY29uc3VtZUludGVybmFsKGxlLDEsYmUpfSxwZS5wcm90b3R5cGUuQ09OU1VNRTI9ZnVuY3Rpb24obGUsYmUpe3JldHVy'@; put 'biB0aGlzLmNvbnN1bWVJbnRlcm5hbChsZSwyLGJlKX0scGUucHJvdG90eXBlLkNPTlNVTUUzPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5jb25zdW1lSW50ZXJuYWwobGUsMyxiZSl9LHBlLnByb3RvdHlwZS5DT05TVU1FND1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMuY29uc3Vt'@; put 'ZUludGVybmFsKGxlLDQsYmUpfSxwZS5wcm90b3R5cGUuQ09OU1VNRTU9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLmNvbnN1bWVJbnRlcm5hbChsZSw1LGJlKX0scGUucHJvdG90eXBlLkNPTlNVTUU2PWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5jb25zdW1lSW50ZXJuYWwobGUs'@; put 'NixiZSl9LHBlLnByb3RvdHlwZS5DT05TVU1FNz1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMuY29uc3VtZUludGVybmFsKGxlLDcsYmUpfSxwZS5wcm90b3R5cGUuQ09OU1VNRTg9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLmNvbnN1bWVJbnRlcm5hbChsZSw4LGJlKX0scGUucHJv'@; put 'dG90eXBlLkNPTlNVTUU5PWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5jb25zdW1lSW50ZXJuYWwobGUsOSxiZSl9LHBlLnByb3RvdHlwZS5TVUJSVUxFPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5zdWJydWxlSW50ZXJuYWwobGUsMCxiZSl9LHBlLnByb3RvdHlwZS5TVUJSVUxF'@; put 'MT1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMuc3VicnVsZUludGVybmFsKGxlLDEsYmUpfSxwZS5wcm90b3R5cGUuU1VCUlVMRTI9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLnN1YnJ1bGVJbnRlcm5hbChsZSwyLGJlKX0scGUucHJvdG90eXBlLlNVQlJVTEUzPWZ1bmN0aW9uKGxl'@; put 'LGJlKXtyZXR1cm4gdGhpcy5zdWJydWxlSW50ZXJuYWwobGUsMyxiZSl9LHBlLnByb3RvdHlwZS5TVUJSVUxFND1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMuc3VicnVsZUludGVybmFsKGxlLDQsYmUpfSxwZS5wcm90b3R5cGUuU1VCUlVMRTU9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0'@; put 'aGlzLnN1YnJ1bGVJbnRlcm5hbChsZSw1LGJlKX0scGUucHJvdG90eXBlLlNVQlJVTEU2PWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5zdWJydWxlSW50ZXJuYWwobGUsNixiZSl9LHBlLnByb3RvdHlwZS5TVUJSVUxFNz1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIHRoaXMuc3VicnVsZUlu'@; put 'dGVybmFsKGxlLDcsYmUpfSxwZS5wcm90b3R5cGUuU1VCUlVMRTg9ZnVuY3Rpb24obGUsYmUpe3JldHVybiB0aGlzLnN1YnJ1bGVJbnRlcm5hbChsZSw4LGJlKX0scGUucHJvdG90eXBlLlNVQlJVTEU5PWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gdGhpcy5zdWJydWxlSW50ZXJuYWwobGUsOSxi'@; put 'ZSl9LHBlLnByb3RvdHlwZS5PUFRJT049ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9wdGlvbkludGVybmFsKGxlLDApfSxwZS5wcm90b3R5cGUuT1BUSU9OMT1mdW5jdGlvbihsZSl7cmV0dXJuIHRoaXMub3B0aW9uSW50ZXJuYWwobGUsMSl9LHBlLnByb3RvdHlwZS5PUFRJT04yPWZ1bmN0'@; put 'aW9uKGxlKXtyZXR1cm4gdGhpcy5vcHRpb25JbnRlcm5hbChsZSwyKX0scGUucHJvdG90eXBlLk9QVElPTjM9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9wdGlvbkludGVybmFsKGxlLDMpfSxwZS5wcm90b3R5cGUuT1BUSU9OND1mdW5jdGlvbihsZSl7cmV0dXJuIHRoaXMub3B0aW9uSW50'@; put 'ZXJuYWwobGUsNCl9LHBlLnByb3RvdHlwZS5PUFRJT041PWZ1bmN0aW9uKGxlKXtyZXR1cm4gdGhpcy5vcHRpb25JbnRlcm5hbChsZSw1KX0scGUucHJvdG90eXBlLk9QVElPTjY9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9wdGlvbkludGVybmFsKGxlLDYpfSxwZS5wcm90b3R5cGUuT1BU'@; put 'SU9ONz1mdW5jdGlvbihsZSl7cmV0dXJuIHRoaXMub3B0aW9uSW50ZXJuYWwobGUsNyl9LHBlLnByb3RvdHlwZS5PUFRJT044PWZ1bmN0aW9uKGxlKXtyZXR1cm4gdGhpcy5vcHRpb25JbnRlcm5hbChsZSw4KX0scGUucHJvdG90eXBlLk9QVElPTjk9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlz'@; put 'Lm9wdGlvbkludGVybmFsKGxlLDkpfSxwZS5wcm90b3R5cGUuT1I9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsMCl9LHBlLnByb3RvdHlwZS5PUjE9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsMSl9LHBlLnByb3RvdHlwZS5PUjI9ZnVuY3Rp'@; put 'b24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsMil9LHBlLnByb3RvdHlwZS5PUjM9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsMyl9LHBlLnByb3RvdHlwZS5PUjQ9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsNCl9LHBlLnByb3Rv'@; put 'dHlwZS5PUjU9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsNSl9LHBlLnByb3RvdHlwZS5PUjY9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsNil9LHBlLnByb3RvdHlwZS5PUjc9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwo'@; put 'bGUsNyl9LHBlLnByb3RvdHlwZS5PUjg9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsOCl9LHBlLnByb3RvdHlwZS5PUjk9ZnVuY3Rpb24obGUpe3JldHVybiB0aGlzLm9ySW50ZXJuYWwobGUsOSl9LHBlLnByb3RvdHlwZS5NQU5ZPWZ1bmN0aW9uKGxlKXt0aGlzLm1h'@; put 'bnlJbnRlcm5hbCgwLGxlKX0scGUucHJvdG90eXBlLk1BTlkxPWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCgxLGxlKX0scGUucHJvdG90eXBlLk1BTlkyPWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCgyLGxlKX0scGUucHJvdG90eXBlLk1BTlkzPWZ1bmN0aW9uKGxlKXt0'@; put 'aGlzLm1hbnlJbnRlcm5hbCgzLGxlKX0scGUucHJvdG90eXBlLk1BTlk0PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCg0LGxlKX0scGUucHJvdG90eXBlLk1BTlk1PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCg1LGxlKX0scGUucHJvdG90eXBlLk1BTlk2PWZ1bmN0aW9u'@; put 'KGxlKXt0aGlzLm1hbnlJbnRlcm5hbCg2LGxlKX0scGUucHJvdG90eXBlLk1BTlk3PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCg3LGxlKX0scGUucHJvdG90eXBlLk1BTlk4PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCg4LGxlKX0scGUucHJvdG90eXBlLk1BTlk5PWZ1'@; put 'bmN0aW9uKGxlKXt0aGlzLm1hbnlJbnRlcm5hbCg5LGxlKX0scGUucHJvdG90eXBlLk1BTllfU0VQPWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDAsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVAxPWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFs'@; put 'KDEsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVAyPWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDIsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVAzPWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDMsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9T'@; put 'RVA0PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDQsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVA1PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDUsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVA2PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlT'@; put 'ZXBGaXJzdEludGVybmFsKDYsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVA3PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDcsbGUpfSxwZS5wcm90b3R5cGUuTUFOWV9TRVA4PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDgsbGUpfSxwZS5w'@; put 'cm90b3R5cGUuTUFOWV9TRVA5PWZ1bmN0aW9uKGxlKXt0aGlzLm1hbnlTZXBGaXJzdEludGVybmFsKDksbGUpfSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FPWZ1bmN0aW9uKGxlKXt0aGlzLmF0TGVhc3RPbmVJbnRlcm5hbCgwLGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNUX09ORTE9ZnVu'@; put 'Y3Rpb24obGUpe3JldHVybiB0aGlzLmF0TGVhc3RPbmVJbnRlcm5hbCgxLGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNUX09ORTI9ZnVuY3Rpb24obGUpe3RoaXMuYXRMZWFzdE9uZUludGVybmFsKDIsbGUpfSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FMz1mdW5jdGlvbihsZSl7dGhpcy5h'@; put 'dExlYXN0T25lSW50ZXJuYWwoMyxsZSl9LHBlLnByb3RvdHlwZS5BVF9MRUFTVF9PTkU0PWZ1bmN0aW9uKGxlKXt0aGlzLmF0TGVhc3RPbmVJbnRlcm5hbCg0LGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNUX09ORTU9ZnVuY3Rpb24obGUpe3RoaXMuYXRMZWFzdE9uZUludGVybmFsKDUsbGUp'@; put 'fSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FNj1mdW5jdGlvbihsZSl7dGhpcy5hdExlYXN0T25lSW50ZXJuYWwoNixsZSl9LHBlLnByb3RvdHlwZS5BVF9MRUFTVF9PTkU3PWZ1bmN0aW9uKGxlKXt0aGlzLmF0TGVhc3RPbmVJbnRlcm5hbCg3LGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNU'@; put 'X09ORTg9ZnVuY3Rpb24obGUpe3RoaXMuYXRMZWFzdE9uZUludGVybmFsKDgsbGUpfSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FOT1mdW5jdGlvbihsZSl7dGhpcy5hdExlYXN0T25lSW50ZXJuYWwoOSxsZSl9LHBlLnByb3RvdHlwZS5BVF9MRUFTVF9PTkVfU0VQPWZ1bmN0aW9uKGxlKXt0'@; put 'aGlzLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsKDAsbGUpfSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FX1NFUDE9ZnVuY3Rpb24obGUpe3RoaXMuYXRMZWFzdE9uZVNlcEZpcnN0SW50ZXJuYWwoMSxsZSl9LHBlLnByb3RvdHlwZS5BVF9MRUFTVF9PTkVfU0VQMj1mdW5jdGlvbihsZSl7'@; put 'dGhpcy5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbCgyLGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNUX09ORV9TRVAzPWZ1bmN0aW9uKGxlKXt0aGlzLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsKDMsbGUpfSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FX1NFUDQ9ZnVuY3Rpb24obGUp'@; put 'e3RoaXMuYXRMZWFzdE9uZVNlcEZpcnN0SW50ZXJuYWwoNCxsZSl9LHBlLnByb3RvdHlwZS5BVF9MRUFTVF9PTkVfU0VQNT1mdW5jdGlvbihsZSl7dGhpcy5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbCg1LGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNUX09ORV9TRVA2PWZ1bmN0aW9uKGxl'@; put 'KXt0aGlzLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsKDYsbGUpfSxwZS5wcm90b3R5cGUuQVRfTEVBU1RfT05FX1NFUDc9ZnVuY3Rpb24obGUpe3RoaXMuYXRMZWFzdE9uZVNlcEZpcnN0SW50ZXJuYWwoNyxsZSl9LHBlLnByb3RvdHlwZS5BVF9MRUFTVF9PTkVfU0VQOD1mdW5jdGlvbihs'@; put 'ZSl7dGhpcy5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbCg4LGxlKX0scGUucHJvdG90eXBlLkFUX0xFQVNUX09ORV9TRVA5PWZ1bmN0aW9uKGxlKXt0aGlzLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsKDksbGUpfSxwZS5wcm90b3R5cGUuUlVMRT1mdW5jdGlvbihsZSxiZSxPZSl7aWYo'@; put 'dm9pZCAwPT09T2UmJihPZT1ZdSkscSh0aGlzLmRlZmluZWRSdWxlc05hbWVzLGxlKSl7dmFyICRlPWkxLmJ1aWxkRHVwbGljYXRlUnVsZU5hbWVFcnJvcih7dG9wTGV2ZWxSdWxlOmxlLGdyYW1tYXJOYW1lOnRoaXMuY2xhc3NOYW1lfSk7dGhpcy5kZWZpbml0aW9uRXJyb3JzLnB1c2goe21l'@; put 'c3NhZ2U6JGUsdHlwZTpyZC5EVVBMSUNBVEVfUlVMRV9OQU1FLHJ1bGVOYW1lOmxlfSl9dGhpcy5kZWZpbmVkUnVsZXNOYW1lcy5wdXNoKGxlKTt2YXIgUXQ9dGhpcy5kZWZpbmVSdWxlKGxlLGJlLE9lKTtyZXR1cm4gdGhpc1tsZV09UXQsUXR9LHBlLnByb3RvdHlwZS5PVkVSUklERV9SVUxF'@; put 'PWZ1bmN0aW9uKGxlLGJlLE9lKXt2b2lkIDA9PT1PZSYmKE9lPVl1KTt2YXIgJGU9W107JGU9JGUuY29uY2F0KGZ1bmN0aW9uIENzKHBlLGxlLGJlKXt2YXIgT2U9W107cmV0dXJuIHEobGUscGUpfHxPZS5wdXNoKHttZXNzYWdlOiJJbnZhbGlkIHJ1bGUgb3ZlcnJpZGUsIHJ1bGU6IC0+Iitw'@; put 'ZSsiPC0gY2Fubm90IGJlIG92ZXJyaWRkZW4gaW4gdGhlIGdyYW1tYXI6IC0+IitiZSsiPC1hcyBpdCBpcyBub3QgZGVmaW5lZCBpbiBhbnkgb2YgdGhlIHN1cGVyIGdyYW1tYXJzICIsdHlwZTpyZC5JTlZBTElEX1JVTEVfT1ZFUlJJREUscnVsZU5hbWU6cGV9KSxPZX0obGUsdGhpcy5kZWZp'@; put 'bmVkUnVsZXNOYW1lcyx0aGlzLmNsYXNzTmFtZSkpLHRoaXMuZGVmaW5pdGlvbkVycm9ycy5wdXNoLmFwcGx5KHRoaXMuZGVmaW5pdGlvbkVycm9ycywkZSk7dmFyIFN0PXRoaXMuZGVmaW5lUnVsZShsZSxiZSxPZSk7cmV0dXJuIHRoaXNbbGVdPVN0LFN0fSxwZS5wcm90b3R5cGUuQkFDS1RS'@; put 'QUNLPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlzQmFja1RyYWNraW5nU3RhY2sucHVzaCgxKTt2YXIgT2U9dGhpcy5zYXZlUmVjb2dTdGF0ZSgpO3RyeXtyZXR1cm4gbGUuYXBwbHkodGhpcyxiZSksITB9Y2F0Y2goJGUpe2lmKGhwKCRlKSlyZXR1cm4hMTt0aHJv'@; put 'dyAkZX1maW5hbGx5e3RoaXMucmVsb2FkUmVjb2dTdGF0ZShPZSksdGhpcy5pc0JhY2tUcmFja2luZ1N0YWNrLnBvcCgpfX19LHBlLnByb3RvdHlwZS5nZXRHQXN0UHJvZHVjdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nYXN0UHJvZHVjdGlvbnNDYWNoZX0scGUucHJvdG90eXBlLmdl'@; put 'dFNlcmlhbGl6ZWRHYXN0UHJvZHVjdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gY24oQSh0aGlzLmdhc3RQcm9kdWN0aW9uc0NhY2hlKSl9LHBlfSgpLGdwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcGUoKXt9cmV0dXJuIHBlLnByb3RvdHlwZS5pbml0UmVjb2duaXplckVuZ2luZT1mdW5jdGlvbihs'@; put 'ZSxiZSl7aWYodGhpcy5jbGFzc05hbWU9ZnVuY3Rpb24gYWkocGUpe3JldHVybiB6dShwZS5jb25zdHJ1Y3Rvcil9KHRoaXMpLHRoaXMuc2hvcnRSdWxlTmFtZVRvRnVsbD17fSx0aGlzLmZ1bGxSdWxlTmFtZVRvU2hvcnQ9e30sdGhpcy5ydWxlU2hvcnROYW1lSWR4PTI1Nix0aGlzLnRva2Vu'@; put 'TWF0Y2hlcj1Ncix0aGlzLmRlZmluZWRSdWxlc05hbWVzPVtdLHRoaXMudG9rZW5zTWFwPXt9LHRoaXMuYWxsUnVsZU5hbWVzPVtdLHRoaXMuaXNCYWNrVHJhY2tpbmdTdGFjaz1bXSx0aGlzLlJVTEVfU1RBQ0s9W10sdGhpcy5SVUxFX09DQ1VSUkVOQ0VfU1RBQ0s9W10sdGhpcy5nYXN0UHJv'@; put 'ZHVjdGlvbnNDYWNoZT17fSxXKGJlLCJzZXJpYWxpemVkR3JhbW1hciIpKXRocm93IEVycm9yKCJUaGUgUGFyc2VyJ3MgY29uZmlndXJhdGlvbiBjYW4gbm8gbG9uZ2VyIGNvbnRhaW4gYSA8c2VyaWFsaXplZEdyYW1tYXI+IHByb3BlcnR5LlxuXHRTZWU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5p'@; put 'by9jaGV2cm90YWluL2RvY3MvY2hhbmdlcy9CUkVBS0lOR19DSEFOR0VTLmh0bWwjXzYtMC0wXG5cdEZvciBGdXJ0aGVyIGRldGFpbHMuIik7aWYoYihsZSkpe2lmKGMobGUpKXRocm93IEVycm9yKCJBIFRva2VuIFZvY2FidWxhcnkgY2Fubm90IGJlIGVtcHR5LlxuXHROb3RlIHRoYXQgdGhl'@; put 'IGZpcnN0IGFyZ3VtZW50IGZvciB0aGUgcGFyc2VyIGNvbnN0cnVjdG9yXG5cdGlzIG5vIGxvbmdlciBhIFRva2VuIHZlY3RvciAoc2luY2UgdjQuMCkuIik7aWYoIm51bWJlciI9PXR5cGVvZiBsZVswXS5zdGFydE9mZnNldCl0aHJvdyBFcnJvcigiVGhlIFBhcnNlciBjb25zdHJ1Y3RvciBu'@; put 'byBsb25nZXIgYWNjZXB0cyBhIHRva2VuIHZlY3RvciBhcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cdFNlZTogaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2NoZXZyb3RhaW4vZG9jcy9jaGFuZ2VzL0JSRUFLSU5HX0NIQU5HRVMuaHRtbCNfNC0wLTBcblx0Rm9yIEZ1cnRoZXIgZGV0YWlscy4iKX1p'@; put 'ZihiKGxlKSl0aGlzLnRva2Vuc01hcD1rZShsZSxmdW5jdGlvbihRdCxFbil7cmV0dXJuIFF0W0VuLm5hbWVdPUVuLFF0fSx7fSk7ZWxzZSBpZihXKGxlLCJtb2RlcyIpJiZCKHcoQShsZS5tb2RlcykpLFVzKSl7dmFyICRlPVgodyhBKGxlLm1vZGVzKSkpO3RoaXMudG9rZW5zTWFwPWtlKCRl'@; put 'LGZ1bmN0aW9uKFF0LEVuKXtyZXR1cm4gUXRbRW4ubmFtZV09RW4sUXR9LHt9KX1lbHNle2lmKCFNKGxlKSl0aHJvdyBuZXcgRXJyb3IoIjx0b2tlbnNEaWN0aW9uYXJ5PiBhcmd1bWVudCBtdXN0IGJlIEFuIEFycmF5IG9mIFRva2VuIGNvbnN0cnVjdG9ycywgQSBkaWN0aW9uYXJ5IG9mIFRv'@; put 'a2VuIGNvbnN0cnVjdG9ycyBvciBhbiBJTXVsdGlNb2RlTGV4ZXJEZWZpbml0aW9uIik7dGhpcy50b2tlbnNNYXA9bWUobGUpfXRoaXMudG9rZW5zTWFwLkVPRj1KYzt2YXIgU3Q9QihBKGxlKSxmdW5jdGlvbihRdCl7cmV0dXJuIGMoUXQuY2F0ZWdvcnlNYXRjaGVzKX0pO3RoaXMudG9rZW5N'@; put 'YXRjaGVyPVN0P01yOnRhLF9zKEEodGhpcy50b2tlbnNNYXApKX0scGUucHJvdG90eXBlLmRlZmluZVJ1bGU9ZnVuY3Rpb24obGUsYmUsT2Upe2lmKHRoaXMuc2VsZkFuYWx5c2lzRG9uZSl0aHJvdyBFcnJvcigiR3JhbW1hciBydWxlIDwiK2xlKyI+IG1heSBub3QgYmUgZGVmaW5lZCBhZnRl'@; put 'ciB0aGUgJ3BlcmZvcm1TZWxmQW5hbHlzaXMnIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQnXG5NYWtlIHN1cmUgdGhhdCBhbGwgZ3JhbW1hciBydWxlIGRlZmluaXRpb25zIGFyZSBkb25lIGJlZm9yZSAncGVyZm9ybVNlbGZBbmFseXNpcycgaXMgY2FsbGVkLiIpO3ZhciBjciwkZT1XKE9lLCJy'@; put 'ZXN5bmNFbmFibGVkIik/T2UucmVzeW5jRW5hYmxlZDpZdS5yZXN5bmNFbmFibGVkLFN0PVcoT2UsInJlY292ZXJ5VmFsdWVGdW5jIik/T2UucmVjb3ZlcnlWYWx1ZUZ1bmM6WXUucmVjb3ZlcnlWYWx1ZUZ1bmMsUXQ9dGhpcy5ydWxlU2hvcnROYW1lSWR4PDwxMjtmdW5jdGlvbiBFbihwaSl7'@; put 'dHJ5e2lmKCEwPT09dGhpcy5vdXRwdXRDc3Qpe2JlLmFwcGx5KHRoaXMscGkpO3ZhciBEcj10aGlzLkNTVF9TVEFDS1t0aGlzLkNTVF9TVEFDSy5sZW5ndGgtMV07cmV0dXJuIHRoaXMuY3N0UG9zdFJ1bGUoRHIpLERyfXJldHVybiBiZS5hcHBseSh0aGlzLHBpKX1jYXRjaChKaSl7cmV0dXJu'@; put 'IHRoaXMuaW52b2tlUnVsZUNhdGNoKEppLCRlLFN0KX1maW5hbGx5e3RoaXMucnVsZUZpbmFsbHlTdGF0ZVVwZGF0ZSgpfX1yZXR1cm4gdGhpcy5ydWxlU2hvcnROYW1lSWR4KyssdGhpcy5zaG9ydFJ1bGVOYW1lVG9GdWxsW1F0XT1sZSx0aGlzLmZ1bGxSdWxlTmFtZVRvU2hvcnRbbGVdPVF0'@; put 'LChjcj1mdW5jdGlvbihwaSxEcil7cmV0dXJuIHZvaWQgMD09PXBpJiYocGk9MCksdGhpcy5ydWxlSW52b2NhdGlvblN0YXRlVXBkYXRlKFF0LGxlLHBpKSxFbi5jYWxsKHRoaXMsRHIpfSkucnVsZU5hbWU9bGUsY3Iub3JpZ2luYWxHcmFtbWFyQWN0aW9uPWJlLGNyfSxwZS5wcm90b3R5cGUu'@; put 'aW52b2tlUnVsZUNhdGNoPWZ1bmN0aW9uKGxlLGJlLE9lKXt2YXIgJGU9MT09PXRoaXMuUlVMRV9TVEFDSy5sZW5ndGgsU3Q9YmUmJiF0aGlzLmlzQmFja1RyYWNraW5nKCkmJnRoaXMucmVjb3ZlcnlFbmFibGVkO2lmKGhwKGxlKSl7dmFyIFF0PWxlO2lmKFN0KXt2YXIgY3IsRW49dGhpcy5m'@; put 'aW5kUmVTeW5jVG9rZW5UeXBlKCk7aWYodGhpcy5pc0luQ3VycmVudFJ1bGVSZVN5bmNTZXQoRW4pKXJldHVybiBRdC5yZXN5bmNlZFRva2Vucz10aGlzLnJlU3luY1RvKEVuKSx0aGlzLm91dHB1dENzdD8oKGNyPXRoaXMuQ1NUX1NUQUNLW3RoaXMuQ1NUX1NUQUNLLmxlbmd0aC0xXSkucmVj'@; put 'b3ZlcmVkTm9kZT0hMCxjcik6T2UoKTt0aHJvdyB0aGlzLm91dHB1dENzdCYmKChjcj10aGlzLkNTVF9TVEFDS1t0aGlzLkNTVF9TVEFDSy5sZW5ndGgtMV0pLnJlY292ZXJlZE5vZGU9ITAsUXQucGFydGlhbENzdFJlc3VsdD1jciksUXR9aWYoJGUpcmV0dXJuIHRoaXMubW92ZVRvVGVybWlu'@; put 'YXRlZFN0YXRlKCksT2UoKTt0aHJvdyBRdH10aHJvdyBsZX0scGUucHJvdG90eXBlLm9wdGlvbkludGVybmFsPWZ1bmN0aW9uKGxlLGJlKXt2YXIgT2U9dGhpcy5nZXRLZXlGb3JBdXRvbWF0aWNMb29rYWhlYWQoNTEyLGJlKSwkZT10aGlzLm5lc3RlZFJ1bGVCZWZvcmVDbGF1c2UobGUsT2Up'@; put 'O3RyeXtyZXR1cm4gdGhpcy5vcHRpb25JbnRlcm5hbExvZ2ljKGxlLGJlLE9lKX1maW5hbGx5e3ZvaWQgMCE9PSRlJiZ0aGlzLm5lc3RlZFJ1bGVGaW5hbGx5Q2xhdXNlKE9lLCRlKX19LHBlLnByb3RvdHlwZS5vcHRpb25JbnRlcm5hbE5vQ3N0PWZ1bmN0aW9uKGxlLGJlKXt2YXIgT2U9dGhp'@; put 'cy5nZXRLZXlGb3JBdXRvbWF0aWNMb29rYWhlYWQoNTEyLGJlKTtyZXR1cm4gdGhpcy5vcHRpb25JbnRlcm5hbExvZ2ljKGxlLGJlLE9lKX0scGUucHJvdG90eXBlLm9wdGlvbkludGVybmFsTG9naWM9ZnVuY3Rpb24obGUsYmUsT2Upe3ZhciBRdCxFbiwkZT10aGlzLFN0PXRoaXMuZ2V0TGFG'@; put 'dW5jRnJvbUNhY2hlKE9lKTtpZih2b2lkIDAhPT1sZS5ERUYpe2lmKFF0PWxlLkRFRix2b2lkIDAhPT0oRW49bGUuR0FURSkpe3ZhciBjcj1TdDtTdD1mdW5jdGlvbigpe3JldHVybiBFbi5jYWxsKCRlKSYmY3IuY2FsbCgkZSl9fX1lbHNlIFF0PWxlO2lmKCEwPT09U3QuY2FsbCh0aGlzKSly'@; put 'ZXR1cm4gUXQuY2FsbCh0aGlzKX0scGUucHJvdG90eXBlLmF0TGVhc3RPbmVJbnRlcm5hbD1mdW5jdGlvbihsZSxiZSl7dmFyIE9lPXRoaXMuZ2V0S2V5Rm9yQXV0b21hdGljTG9va2FoZWFkKF8yLGxlKSwkZT10aGlzLm5lc3RlZFJ1bGVCZWZvcmVDbGF1c2UoYmUsT2UpO3RyeXtyZXR1cm4g'@; put 'dGhpcy5hdExlYXN0T25lSW50ZXJuYWxMb2dpYyhsZSxiZSxPZSl9ZmluYWxseXt2b2lkIDAhPT0kZSYmdGhpcy5uZXN0ZWRSdWxlRmluYWxseUNsYXVzZShPZSwkZSl9fSxwZS5wcm90b3R5cGUuYXRMZWFzdE9uZUludGVybmFsTm9Dc3Q9ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT10aGlzLmdl'@; put 'dEtleUZvckF1dG9tYXRpY0xvb2thaGVhZChfMixsZSk7dGhpcy5hdExlYXN0T25lSW50ZXJuYWxMb2dpYyhsZSxiZSxPZSl9LHBlLnByb3RvdHlwZS5hdExlYXN0T25lSW50ZXJuYWxMb2dpYz1mdW5jdGlvbihsZSxiZSxPZSl7dmFyIFF0LEVuLCRlPXRoaXMsU3Q9dGhpcy5nZXRMYUZ1bmNG'@; put 'cm9tQ2FjaGUoT2UpO2lmKHZvaWQgMCE9PWJlLkRFRil7aWYoUXQ9YmUuREVGLHZvaWQgMCE9PShFbj1iZS5HQVRFKSl7dmFyIGNyPVN0O1N0PWZ1bmN0aW9uKCl7cmV0dXJuIEVuLmNhbGwoJGUpJiZjci5jYWxsKCRlKX19fWVsc2UgUXQ9YmU7aWYoITAhPT1TdC5jYWxsKHRoaXMpKXRocm93'@; put 'IHRoaXMucmFpc2VFYXJseUV4aXRFeGNlcHRpb24obGUsY28uUkVQRVRJVElPTl9NQU5EQVRPUlksYmUuRVJSX01TRyk7Zm9yKHZhciBVcj10aGlzLmRvU2luZ2xlUmVwZXRpdGlvbihRdCk7ITA9PT1TdC5jYWxsKHRoaXMpJiYhMD09PVVyOylVcj10aGlzLmRvU2luZ2xlUmVwZXRpdGlvbihR'@; put 'dCk7dGhpcy5hdHRlbXB0SW5SZXBldGl0aW9uUmVjb3ZlcnkodGhpcy5hdExlYXN0T25lSW50ZXJuYWwsW2xlLGJlXSxTdCxfMixsZSxXaSl9LHBlLnByb3RvdHlwZS5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbD1mdW5jdGlvbihsZSxiZSl7dmFyIE9lPXRoaXMuZ2V0S2V5Rm9yQXV0b21h'@; put 'dGljTG9va2FoZWFkKG1zLGxlKSwkZT10aGlzLm5lc3RlZFJ1bGVCZWZvcmVDbGF1c2UoYmUsT2UpO3RyeXt0aGlzLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsTG9naWMobGUsYmUsT2UpfWZpbmFsbHl7dm9pZCAwIT09JGUmJnRoaXMubmVzdGVkUnVsZUZpbmFsbHlDbGF1c2UoT2UsJGUp'@; put 'fX0scGUucHJvdG90eXBlLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsTm9Dc3Q9ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT10aGlzLmdldEtleUZvckF1dG9tYXRpY0xvb2thaGVhZChtcyxsZSk7dGhpcy5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbExvZ2ljKGxlLGJlLE9lKX0scGUucHJv'@; put 'dG90eXBlLmF0TGVhc3RPbmVTZXBGaXJzdEludGVybmFsTG9naWM9ZnVuY3Rpb24obGUsYmUsT2Upe3ZhciAkZT10aGlzLFN0PWJlLkRFRixRdD1iZS5TRVA7aWYoITAhPT10aGlzLmdldExhRnVuY0Zyb21DYWNoZShPZSkuY2FsbCh0aGlzKSl0aHJvdyB0aGlzLnJhaXNlRWFybHlFeGl0RXhj'@; put 'ZXB0aW9uKGxlLGNvLlJFUEVUSVRJT05fTUFOREFUT1JZX1dJVEhfU0VQQVJBVE9SLGJlLkVSUl9NU0cpO1N0LmNhbGwodGhpcyk7Zm9yKHZhciBjcj1mdW5jdGlvbigpe3JldHVybiAkZS50b2tlbk1hdGNoZXIoJGUuTEEoMSksUXQpfTshMD09PXRoaXMudG9rZW5NYXRjaGVyKHRoaXMuTEEo'@; put 'MSksUXQpOyl0aGlzLkNPTlNVTUUoUXQpLFN0LmNhbGwodGhpcyk7dGhpcy5hdHRlbXB0SW5SZXBldGl0aW9uUmVjb3ZlcnkodGhpcy5yZXBldGl0aW9uU2VwU2Vjb25kSW50ZXJuYWwsW2xlLFF0LGNyLFN0LEtpXSxjcixtcyxsZSxLaSl9LHBlLnByb3RvdHlwZS5tYW55SW50ZXJuYWw9ZnVu'@; put 'Y3Rpb24obGUsYmUpe3ZhciBPZT10aGlzLmdldEtleUZvckF1dG9tYXRpY0xvb2thaGVhZCg3NjgsbGUpLCRlPXRoaXMubmVzdGVkUnVsZUJlZm9yZUNsYXVzZShiZSxPZSk7dHJ5e3JldHVybiB0aGlzLm1hbnlJbnRlcm5hbExvZ2ljKGxlLGJlLE9lKX1maW5hbGx5e3ZvaWQgMCE9PSRlJiZ0'@; put 'aGlzLm5lc3RlZFJ1bGVGaW5hbGx5Q2xhdXNlKE9lLCRlKX19LHBlLnByb3RvdHlwZS5tYW55SW50ZXJuYWxOb0NzdD1mdW5jdGlvbihsZSxiZSl7dmFyIE9lPXRoaXMuZ2V0S2V5Rm9yQXV0b21hdGljTG9va2FoZWFkKDc2OCxsZSk7cmV0dXJuIHRoaXMubWFueUludGVybmFsTG9naWMobGUs'@; put 'YmUsT2UpfSxwZS5wcm90b3R5cGUubWFueUludGVybmFsTG9naWM9ZnVuY3Rpb24obGUsYmUsT2Upe3ZhciBRdCxFbiwkZT10aGlzLFN0PXRoaXMuZ2V0TGFGdW5jRnJvbUNhY2hlKE9lKTtpZih2b2lkIDAhPT1iZS5ERUYpe2lmKFF0PWJlLkRFRix2b2lkIDAhPT0oRW49YmUuR0FURSkpe3Zh'@; put 'ciBjcj1TdDtTdD1mdW5jdGlvbigpe3JldHVybiBFbi5jYWxsKCRlKSYmY3IuY2FsbCgkZSl9fX1lbHNlIFF0PWJlO2Zvcih2YXIgVXI9ITA7ITA9PT1TdC5jYWxsKHRoaXMpJiYhMD09PVVyOylVcj10aGlzLmRvU2luZ2xlUmVwZXRpdGlvbihRdCk7dGhpcy5hdHRlbXB0SW5SZXBldGl0aW9u'@; put 'UmVjb3ZlcnkodGhpcy5tYW55SW50ZXJuYWwsW2xlLGJlXSxTdCw3NjgsbGUsaWksVXIpfSxwZS5wcm90b3R5cGUubWFueVNlcEZpcnN0SW50ZXJuYWw9ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT10aGlzLmdldEtleUZvckF1dG9tYXRpY0xvb2thaGVhZChUYyxsZSksJGU9dGhpcy5uZXN0ZWRS'@; put 'dWxlQmVmb3JlQ2xhdXNlKGJlLE9lKTt0cnl7dGhpcy5tYW55U2VwRmlyc3RJbnRlcm5hbExvZ2ljKGxlLGJlLE9lKX1maW5hbGx5e3ZvaWQgMCE9PSRlJiZ0aGlzLm5lc3RlZFJ1bGVGaW5hbGx5Q2xhdXNlKE9lLCRlKX19LHBlLnByb3RvdHlwZS5tYW55U2VwRmlyc3RJbnRlcm5hbE5vQ3N0'@; put 'PWZ1bmN0aW9uKGxlLGJlKXt2YXIgT2U9dGhpcy5nZXRLZXlGb3JBdXRvbWF0aWNMb29rYWhlYWQoVGMsbGUpO3RoaXMubWFueVNlcEZpcnN0SW50ZXJuYWxMb2dpYyhsZSxiZSxPZSl9LHBlLnByb3RvdHlwZS5tYW55U2VwRmlyc3RJbnRlcm5hbExvZ2ljPWZ1bmN0aW9uKGxlLGJlLE9lKXt2'@; put 'YXIgJGU9dGhpcyxTdD1iZS5ERUYsUXQ9YmUuU0VQO2lmKCEwPT09dGhpcy5nZXRMYUZ1bmNGcm9tQ2FjaGUoT2UpLmNhbGwodGhpcykpe1N0LmNhbGwodGhpcyk7Zm9yKHZhciBjcj1mdW5jdGlvbigpe3JldHVybiAkZS50b2tlbk1hdGNoZXIoJGUuTEEoMSksUXQpfTshMD09PXRoaXMudG9r'@; put 'ZW5NYXRjaGVyKHRoaXMuTEEoMSksUXQpOyl0aGlzLkNPTlNVTUUoUXQpLFN0LmNhbGwodGhpcyk7dGhpcy5hdHRlbXB0SW5SZXBldGl0aW9uUmVjb3ZlcnkodGhpcy5yZXBldGl0aW9uU2VwU2Vjb25kSW50ZXJuYWwsW2xlLFF0LGNyLFN0LGtpXSxjcixUYyxsZSxraSl9fSxwZS5wcm90b3R5'@; put 'cGUucmVwZXRpdGlvblNlcFNlY29uZEludGVybmFsPWZ1bmN0aW9uKGxlLGJlLE9lLCRlLFN0KXtmb3IoO09lKCk7KXRoaXMuQ09OU1VNRShiZSksJGUuY2FsbCh0aGlzKTt0aGlzLmF0dGVtcHRJblJlcGV0aXRpb25SZWNvdmVyeSh0aGlzLnJlcGV0aXRpb25TZXBTZWNvbmRJbnRlcm5hbCxb'@; put 'bGUsYmUsT2UsJGUsU3RdLE9lLG1zLGxlLFN0KX0scGUucHJvdG90eXBlLmRvU2luZ2xlUmVwZXRpdGlvbj1mdW5jdGlvbihsZSl7dmFyIGJlPXRoaXMuZ2V0TGV4ZXJQb3NpdGlvbigpO3JldHVybiBsZS5jYWxsKHRoaXMpLHRoaXMuZ2V0TGV4ZXJQb3NpdGlvbigpPmJlfSxwZS5wcm90b3R5'@; put 'cGUub3JJbnRlcm5hbE5vQ3N0PWZ1bmN0aW9uKGxlLGJlKXt2YXIgT2U9YihsZSk/bGU6bGUuREVGLCRlPXRoaXMuZ2V0S2V5Rm9yQXV0b21hdGljTG9va2FoZWFkKDI1NixiZSksUXQ9dGhpcy5nZXRMYUZ1bmNGcm9tQ2FjaGUoJGUpLmNhbGwodGhpcyxPZSk7aWYodm9pZCAwIT09UXQpcmV0'@; put 'dXJuIE9lW1F0XS5BTFQuY2FsbCh0aGlzKTt0aGlzLnJhaXNlTm9BbHRFeGNlcHRpb24oYmUsbGUuRVJSX01TRyl9LHBlLnByb3RvdHlwZS5vckludGVybmFsPWZ1bmN0aW9uKGxlLGJlKXt2YXIgT2U9dGhpcy5nZXRLZXlGb3JBdXRvbWF0aWNMb29rYWhlYWQoMjU2LGJlKSwkZT10aGlzLm5l'@; put 'c3RlZFJ1bGVCZWZvcmVDbGF1c2UobGUsT2UpO3RyeXt2YXIgU3Q9YihsZSk/bGU6bGUuREVGLEVuPXRoaXMuZ2V0TGFGdW5jRnJvbUNhY2hlKE9lKS5jYWxsKHRoaXMsU3QpO2lmKHZvaWQgMCE9PUVuKXt2YXIgY3I9U3RbRW5dLFVyPXRoaXMubmVzdGVkQWx0QmVmb3JlQ2xhdXNlKGNyLGJl'@; put 'LDI1NixFbik7dHJ5e3JldHVybiBjci5BTFQuY2FsbCh0aGlzKX1maW5hbGx5e3ZvaWQgMCE9PVVyJiZ0aGlzLm5lc3RlZFJ1bGVGaW5hbGx5Q2xhdXNlKFVyLnNob3J0TmFtZSxVci5uZXN0ZWROYW1lKX19dGhpcy5yYWlzZU5vQWx0RXhjZXB0aW9uKGJlLGxlLkVSUl9NU0cpfWZpbmFsbHl7'@; put 'dm9pZCAwIT09JGUmJnRoaXMubmVzdGVkUnVsZUZpbmFsbHlDbGF1c2UoT2UsJGUpfX0scGUucHJvdG90eXBlLnJ1bGVGaW5hbGx5U3RhdGVVcGRhdGU9ZnVuY3Rpb24oKXtpZih0aGlzLlJVTEVfU1RBQ0sucG9wKCksdGhpcy5SVUxFX09DQ1VSUkVOQ0VfU1RBQ0sucG9wKCksdGhpcy5jc3RG'@; put 'aW5hbGx5U3RhdGVVcGRhdGUoKSwwPT09dGhpcy5SVUxFX1NUQUNLLmxlbmd0aCYmITE9PT10aGlzLmlzQXRFbmRPZklucHV0KCkpe3ZhciBsZT10aGlzLkxBKDEpLGJlPXRoaXMuZXJyb3JNZXNzYWdlUHJvdmlkZXIuYnVpbGROb3RBbGxJbnB1dFBhcnNlZE1lc3NhZ2Uoe2ZpcnN0UmVkdW5k'@; put 'YW50OmxlLHJ1bGVOYW1lOnRoaXMuZ2V0Q3VyclJ1bGVGdWxsTmFtZSgpfSk7dGhpcy5TQVZFX0VSUk9SKG5ldyBsOChiZSxsZSkpfX0scGUucHJvdG90eXBlLnN1YnJ1bGVJbnRlcm5hbD1mdW5jdGlvbihsZSxiZSxPZSl7dmFyICRlO3RyeXtyZXR1cm4gJGU9bGUuY2FsbCh0aGlzLGJlLHZv'@; put 'aWQgMCE9PU9lP09lLkFSR1M6dm9pZCAwKSx0aGlzLmNzdFBvc3ROb25UZXJtaW5hbCgkZSx2b2lkIDAhPT1PZSYmdm9pZCAwIT09T2UuTEFCRUw/T2UuTEFCRUw6bGUucnVsZU5hbWUpLCRlfWNhdGNoKFF0KXt0aGlzLnN1YnJ1bGVJbnRlcm5hbEVycm9yKFF0LE9lLGxlLnJ1bGVOYW1lKX19'@; put 'LHBlLnByb3RvdHlwZS5zdWJydWxlSW50ZXJuYWxFcnJvcj1mdW5jdGlvbihsZSxiZSxPZSl7dGhyb3cgaHAobGUpJiZ2b2lkIDAhPT1sZS5wYXJ0aWFsQ3N0UmVzdWx0JiYodGhpcy5jc3RQb3N0Tm9uVGVybWluYWwobGUucGFydGlhbENzdFJlc3VsdCx2b2lkIDAhPT1iZSYmdm9pZCAwIT09'@; put 'YmUuTEFCRUw/YmUuTEFCRUw6T2UpLGRlbGV0ZSBsZS5wYXJ0aWFsQ3N0UmVzdWx0KSxsZX0scGUucHJvdG90eXBlLmNvbnN1bWVJbnRlcm5hbD1mdW5jdGlvbihsZSxiZSxPZSl7dmFyICRlO3RyeXt2YXIgU3Q9dGhpcy5MQSgxKTshMD09PXRoaXMudG9rZW5NYXRjaGVyKFN0LGxlKT8odGhp'@; put 'cy5jb25zdW1lVG9rZW4oKSwkZT1TdCk6dGhpcy5jb25zdW1lSW50ZXJuYWxFcnJvcihsZSxTdCxPZSl9Y2F0Y2goUXQpeyRlPXRoaXMuY29uc3VtZUludGVybmFsUmVjb3ZlcnkobGUsYmUsUXQpfXJldHVybiB0aGlzLmNzdFBvc3RUZXJtaW5hbCh2b2lkIDAhPT1PZSYmdm9pZCAwIT09T2Uu'@; put 'TEFCRUw/T2UuTEFCRUw6bGUubmFtZSwkZSksJGV9LHBlLnByb3RvdHlwZS5jb25zdW1lSW50ZXJuYWxFcnJvcj1mdW5jdGlvbihsZSxiZSxPZSl7dmFyICRlLFN0PXRoaXMuTEEoMCk7dGhyb3cgJGU9dm9pZCAwIT09T2UmJk9lLkVSUl9NU0c/T2UuRVJSX01TRzp0aGlzLmVycm9yTWVzc2Fn'@; put 'ZVByb3ZpZGVyLmJ1aWxkTWlzbWF0Y2hUb2tlbk1lc3NhZ2Uoe2V4cGVjdGVkOmxlLGFjdHVhbDpiZSxwcmV2aW91czpTdCxydWxlTmFtZTp0aGlzLmdldEN1cnJSdWxlRnVsbE5hbWUoKX0pLHRoaXMuU0FWRV9FUlJPUihuZXcgZDMoJGUsYmUsU3QpKX0scGUucHJvdG90eXBlLmNvbnN1bWVJ'@; put 'bnRlcm5hbFJlY292ZXJ5PWZ1bmN0aW9uKGxlLGJlLE9lKXtpZighdGhpcy5yZWNvdmVyeUVuYWJsZWR8fCJNaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24iIT09T2UubmFtZXx8dGhpcy5pc0JhY2tUcmFja2luZygpKXRocm93IE9lO3ZhciAkZT10aGlzLmdldEZvbGxvd3NGb3JJblJ1bGVSZWNv'@; put 'dmVyeShsZSxiZSk7dHJ5e3JldHVybiB0aGlzLnRyeUluUnVsZVJlY292ZXJ5KGxlLCRlKX1jYXRjaChTdCl7dGhyb3cgU3QubmFtZT09PXZmP09lOlN0fX0scGUucHJvdG90eXBlLnNhdmVSZWNvZ1N0YXRlPWZ1bmN0aW9uKCl7dmFyIGxlPXRoaXMuZXJyb3JzLGJlPXJlKHRoaXMuUlVMRV9T'@; put 'VEFDSyk7cmV0dXJue2Vycm9yczpsZSxsZXhlclN0YXRlOnRoaXMuZXhwb3J0TGV4ZXJTdGF0ZSgpLFJVTEVfU1RBQ0s6YmUsQ1NUX1NUQUNLOnRoaXMuQ1NUX1NUQUNLLExBU1RfRVhQTElDSVRfUlVMRV9TVEFDSzp0aGlzLkxBU1RfRVhQTElDSVRfUlVMRV9TVEFDS319LHBlLnByb3RvdHlw'@; put 'ZS5yZWxvYWRSZWNvZ1N0YXRlPWZ1bmN0aW9uKGxlKXt0aGlzLmVycm9ycz1sZS5lcnJvcnMsdGhpcy5pbXBvcnRMZXhlclN0YXRlKGxlLmxleGVyU3RhdGUpLHRoaXMuUlVMRV9TVEFDSz1sZS5SVUxFX1NUQUNLfSxwZS5wcm90b3R5cGUucnVsZUludm9jYXRpb25TdGF0ZVVwZGF0ZT1mdW5j'@; put 'dGlvbihsZSxiZSxPZSl7dGhpcy5SVUxFX09DQ1VSUkVOQ0VfU1RBQ0sucHVzaChPZSksdGhpcy5SVUxFX1NUQUNLLnB1c2gobGUpLHRoaXMuY3N0SW52b2NhdGlvblN0YXRlVXBkYXRlKGJlLGxlKX0scGUucHJvdG90eXBlLmlzQmFja1RyYWNraW5nPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10'@; put 'aGlzLmlzQmFja1RyYWNraW5nU3RhY2subGVuZ3RofSxwZS5wcm90b3R5cGUuZ2V0Q3VyclJ1bGVGdWxsTmFtZT1mdW5jdGlvbigpe3ZhciBsZT10aGlzLmdldExhc3RFeHBsaWNpdFJ1bGVTaG9ydE5hbWUoKTtyZXR1cm4gdGhpcy5zaG9ydFJ1bGVOYW1lVG9GdWxsW2xlXX0scGUucHJvdG90'@; put 'eXBlLnNob3J0UnVsZU5hbWVUb0Z1bGxOYW1lPWZ1bmN0aW9uKGxlKXtyZXR1cm4gdGhpcy5zaG9ydFJ1bGVOYW1lVG9GdWxsW2xlXX0scGUucHJvdG90eXBlLmlzQXRFbmRPZklucHV0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5NYXRjaGVyKHRoaXMuTEEoMSksSmMpfSxwZS5wcm90'@; put 'b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0TGV4ZXJTdGF0ZSgpLHRoaXMuaXNCYWNrVHJhY2tpbmdTdGFjaz1bXSx0aGlzLmVycm9ycz1bXSx0aGlzLlJVTEVfU1RBQ0s9W10sdGhpcy5MQVNUX0VYUExJQ0lUX1JVTEVfU1RBQ0s9W10sdGhpcy5DU1RfU1RBQ0s9W10sdGhpcy5S'@; put 'VUxFX09DQ1VSUkVOQ0VfU1RBQ0s9W119LHBlfSgpLF9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcGUoKXt9cmV0dXJuIHBlLnByb3RvdHlwZS5pbml0RXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGxlKXt0aGlzLl9lcnJvcnM9W10sdGhpcy5lcnJvck1lc3NhZ2VQcm92aWRlcj1fZShsZS5lcnJvck1l'@; put 'c3NhZ2VQcm92aWRlcix6cy5lcnJvck1lc3NhZ2VQcm92aWRlcil9LHBlLnByb3RvdHlwZS5TQVZFX0VSUk9SPWZ1bmN0aW9uKGxlKXtpZihocChsZSkpcmV0dXJuIGxlLmNvbnRleHQ9e3J1bGVTdGFjazp0aGlzLmdldEh1bWFuUmVhZGFibGVSdWxlU3RhY2soKSxydWxlT2NjdXJyZW5jZVN0'@; put 'YWNrOnJlKHRoaXMuUlVMRV9PQ0NVUlJFTkNFX1NUQUNLKX0sdGhpcy5fZXJyb3JzLnB1c2gobGUpLGxlO3Rocm93IEVycm9yKCJUcnlpbmcgdG8gc2F2ZSBhbiBFcnJvciB3aGljaCBpcyBub3QgYSBSZWNvZ25pdGlvbkV4Y2VwdGlvbiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkocGUucHJv'@; put 'dG90eXBlLCJlcnJvcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcmUodGhpcy5fZXJyb3JzKX0sc2V0OmZ1bmN0aW9uKGxlKXt0aGlzLl9lcnJvcnM9bGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSkscGUucHJvdG90eXBlLnJhaXNlRWFybHlFeGl0RXhjZXB0aW9uPWZ1bmN0'@; put 'aW9uKGxlLGJlLE9lKXtmb3IodmFyICRlPXRoaXMuZ2V0Q3VyclJ1bGVGdWxsTmFtZSgpLEVuPXMwKGxlLHRoaXMuZ2V0R0FzdFByb2R1Y3Rpb25zKClbJGVdLGJlLHRoaXMubWF4TG9va2FoZWFkKVswXSxjcj1bXSxVcj0xO1VyPD10aGlzLm1heExvb2thaGVhZDtVcisrKWNyLnB1c2godGhp'@; put 'cy5MQShVcikpO3ZhciBwaT10aGlzLmVycm9yTWVzc2FnZVByb3ZpZGVyLmJ1aWxkRWFybHlFeGl0TWVzc2FnZSh7ZXhwZWN0ZWRJdGVyYXRpb25QYXRoczpFbixhY3R1YWw6Y3IscHJldmlvdXM6dGhpcy5MQSgwKSxjdXN0b21Vc2VyRGVzY3JpcHRpb246T2UscnVsZU5hbWU6JGV9KTt0aHJv'@; put 'dyB0aGlzLlNBVkVfRVJST1IobmV3IGM4KHBpLHRoaXMuTEEoMSksdGhpcy5MQSgwKSkpfSxwZS5wcm90b3R5cGUucmFpc2VOb0FsdEV4Y2VwdGlvbj1mdW5jdGlvbihsZSxiZSl7Zm9yKHZhciBPZT10aGlzLmdldEN1cnJSdWxlRnVsbE5hbWUoKSxTdD1iZChsZSx0aGlzLmdldEdBc3RQcm9k'@; put 'dWN0aW9ucygpW09lXSx0aGlzLm1heExvb2thaGVhZCksUXQ9W10sRW49MTtFbjw9dGhpcy5tYXhMb29rYWhlYWQ7RW4rKylRdC5wdXNoKHRoaXMuTEEoRW4pKTt2YXIgY3I9dGhpcy5MQSgwKSxVcj10aGlzLmVycm9yTWVzc2FnZVByb3ZpZGVyLmJ1aWxkTm9WaWFibGVBbHRNZXNzYWdlKHtl'@; put 'eHBlY3RlZFBhdGhzUGVyQWx0OlN0LGFjdHVhbDpRdCxwcmV2aW91czpjcixjdXN0b21Vc2VyRGVzY3JpcHRpb246YmUscnVsZU5hbWU6dGhpcy5nZXRDdXJyUnVsZUZ1bGxOYW1lKCl9KTt0aHJvdyB0aGlzLlNBVkVfRVJST1IobmV3IGgzKFVyLHRoaXMuTEEoMSksY3IpKX0scGV9KCksQm09'@; put 'ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLmluaXRDb250ZW50QXNzaXN0PWZ1bmN0aW9uKCl7fSxwZS5wcm90b3R5cGUuY29tcHV0ZUNvbnRlbnRBc3Npc3Q9ZnVuY3Rpb24obGUsYmUpe3ZhciBPZT10aGlzLmdhc3RQcm9kdWN0aW9uc0NhY2hlW2xlXTtp'@; put 'ZihVKE9lKSl0aHJvdyBFcnJvcigiUnVsZSAtPiIrbGUrIjwtIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZ3JhbW1hci4iKTtyZXR1cm4gUm8oW09lXSxiZSx0aGlzLnRva2VuTWF0Y2hlcix0aGlzLm1heExvb2thaGVhZCl9LHBlLnByb3RvdHlwZS5nZXROZXh0UG9zc2libGVUb2tlblR5cGVz'@; put 'PWZ1bmN0aW9uKGxlKXt2YXIgYmU9UyhsZS5ydWxlU3RhY2spLE9lPXRoaXMuZ2V0R0FzdFByb2R1Y3Rpb25zKCk7cmV0dXJuIG5ldyBRbihPZVtiZV0sbGUpLnN0YXJ0V2Fsa2luZygpfSxwZX0oKSxqbT17ZGVzY3JpcHRpb246IlRoaXMgT2JqZWN0IGluZGljYXRlcyB0aGUgUGFyc2VyIGlz'@; put 'IGR1cmluZyBSZWNvcmRpbmcgUGhhc2UifTtPYmplY3QuZnJlZXplKGptKTt2YXIgbzU9TWF0aC5wb3coMiw4KS0xLHAzPW5oKHtuYW1lOiJSRUNPUkRJTkdfUEhBU0VfVE9LRU4iLHBhdHRlcm46SnUuTkF9KTtfcyhbcDNdKTt2YXIgbzE9Z2YocDMsIlRoaXMgSVRva2VuIGluZGljYXRlcyB0'@; put 'aGUgUGFyc2VyIGlzIGluIFJlY29yZGluZyBQaGFzZVxuXHRTZWU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9jaGV2cm90YWluL2RvY3MvZ3VpZGUvaW50ZXJuYWxzLmh0bWwjZ3JhbW1hci1yZWNvcmRpbmcgZm9yIGRldGFpbHMiLC0xLC0xLC0xLC0xLC0xLC0xKTtPYmplY3QuZnJlZXplKG8x'@; put 'KTt2YXIgZzM9e25hbWU6IlRoaXMgQ1NUTm9kZSBpbmRpY2F0ZXMgdGhlIFBhcnNlciBpcyBpbiBSZWNvcmRpbmcgUGhhc2Vcblx0U2VlOiBodHRwczovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRlL2ludGVybmFscy5odG1sI2dyYW1tYXItcmVjb3JkaW5nIGZvciBkZXRh'@; put 'aWxzIixjaGlsZHJlbjp7fX0sbTM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLmluaXRHYXN0UmVjb3JkZXI9ZnVuY3Rpb24obGUpe3RoaXMucmVjb3JkaW5nUHJvZFN0YWNrPVtdLHRoaXMuUkVDT1JESU5HX1BIQVNFPSExfSxwZS5wcm90b3R5cGUuZW5h'@; put 'YmxlUmVjb3JkaW5nPWZ1bmN0aW9uKCl7dmFyIGxlPXRoaXM7dGhpcy5SRUNPUkRJTkdfUEhBU0U9ITAsdGhpcy5UUkFDRV9JTklUKCJFbmFibGUgUmVjb3JkaW5nIixmdW5jdGlvbigpe2Zvcih2YXIgYmU9ZnVuY3Rpb24oJGUpe3ZhciBTdD0kZT4wPyRlOiIiO2xlWyJDT05TVU1FIitTdF09'@; put 'ZnVuY3Rpb24oUXQsRW4pe3JldHVybiB0aGlzLmNvbnN1bWVJbnRlcm5hbFJlY29yZChRdCwkZSxFbil9LGxlWyJTVUJSVUxFIitTdF09ZnVuY3Rpb24oUXQsRW4pe3JldHVybiB0aGlzLnN1YnJ1bGVJbnRlcm5hbFJlY29yZChRdCwkZSxFbil9LGxlWyJPUFRJT04iK1N0XT1mdW5jdGlvbihR'@; put 'dCl7cmV0dXJuIHRoaXMub3B0aW9uSW50ZXJuYWxSZWNvcmQoUXQsJGUpfSxsZVsiT1IiK1N0XT1mdW5jdGlvbihRdCl7cmV0dXJuIHRoaXMub3JJbnRlcm5hbFJlY29yZChRdCwkZSl9LGxlWyJNQU5ZIitTdF09ZnVuY3Rpb24oUXQpe3RoaXMubWFueUludGVybmFsUmVjb3JkKCRlLFF0KX0s'@; put 'bGVbIk1BTllfU0VQIitTdF09ZnVuY3Rpb24oUXQpe3RoaXMubWFueVNlcEZpcnN0SW50ZXJuYWxSZWNvcmQoJGUsUXQpfSxsZVsiQVRfTEVBU1RfT05FIitTdF09ZnVuY3Rpb24oUXQpe3RoaXMuYXRMZWFzdE9uZUludGVybmFsUmVjb3JkKCRlLFF0KX0sbGVbIkFUX0xFQVNUX09ORV9TRVAi'@; put 'K1N0XT1mdW5jdGlvbihRdCl7dGhpcy5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbFJlY29yZCgkZSxRdCl9fSxPZT0wO09lPDEwO09lKyspYmUoT2UpO2xlLmNvbnN1bWU9ZnVuY3Rpb24oJGUsU3QsUXQpe3JldHVybiB0aGlzLmNvbnN1bWVJbnRlcm5hbFJlY29yZChTdCwkZSxRdCl9LGxl'@; put 'LnN1YnJ1bGU9ZnVuY3Rpb24oJGUsU3QsUXQpe3JldHVybiB0aGlzLnN1YnJ1bGVJbnRlcm5hbFJlY29yZChTdCwkZSxRdCl9LGxlLm9wdGlvbj1mdW5jdGlvbigkZSxTdCl7cmV0dXJuIHRoaXMub3B0aW9uSW50ZXJuYWxSZWNvcmQoU3QsJGUpfSxsZS5vcj1mdW5jdGlvbigkZSxTdCl7cmV0'@; put 'dXJuIHRoaXMub3JJbnRlcm5hbFJlY29yZChTdCwkZSl9LGxlLm1hbnk9ZnVuY3Rpb24oJGUsU3Qpe3RoaXMubWFueUludGVybmFsUmVjb3JkKCRlLFN0KX0sbGUuYXRMZWFzdE9uZT1mdW5jdGlvbigkZSxTdCl7dGhpcy5hdExlYXN0T25lSW50ZXJuYWxSZWNvcmQoJGUsU3QpfSxsZS5BQ1RJ'@; put 'T049bGUuQUNUSU9OX1JFQ09SRCxsZS5CQUNLVFJBQ0s9bGUuQkFDS1RSQUNLX1JFQ09SRCxsZS5MQT1sZS5MQV9SRUNPUkR9KX0scGUucHJvdG90eXBlLmRpc2FibGVSZWNvcmRpbmc9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpczt0aGlzLlJFQ09SRElOR19QSEFTRT0hMSx0aGlzLlRSQUNFX0lO'@; put 'SVQoIkRlbGV0aW5nIFJlY29yZGluZyBtZXRob2RzIixmdW5jdGlvbigpe2Zvcih2YXIgYmU9MDtiZTwxMDtiZSsrKXt2YXIgT2U9YmU+MD9iZToiIjtkZWxldGUgbGVbIkNPTlNVTUUiK09lXSxkZWxldGUgbGVbIlNVQlJVTEUiK09lXSxkZWxldGUgbGVbIk9QVElPTiIrT2VdLGRlbGV0ZSBs'@; put 'ZVsiT1IiK09lXSxkZWxldGUgbGVbIk1BTlkiK09lXSxkZWxldGUgbGVbIk1BTllfU0VQIitPZV0sZGVsZXRlIGxlWyJBVF9MRUFTVF9PTkUiK09lXSxkZWxldGUgbGVbIkFUX0xFQVNUX09ORV9TRVAiK09lXX1kZWxldGUgbGUuY29uc3VtZSxkZWxldGUgbGUuc3VicnVsZSxkZWxldGUgbGUu'@; put 'b3B0aW9uLGRlbGV0ZSBsZS5vcixkZWxldGUgbGUubWFueSxkZWxldGUgbGUuYXRMZWFzdE9uZSxkZWxldGUgbGUuQUNUSU9OLGRlbGV0ZSBsZS5CQUNLVFJBQ0ssZGVsZXRlIGxlLkxBfSl9LHBlLnByb3RvdHlwZS5BQ1RJT05fUkVDT1JEPWZ1bmN0aW9uKGxlKXt9LHBlLnByb3RvdHlwZS5C'@; put 'QUNLVFJBQ0tfUkVDT1JEPWZ1bmN0aW9uKGxlLGJlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19LHBlLnByb3RvdHlwZS5MQV9SRUNPUkQ9ZnVuY3Rpb24obGUpe3JldHVybiBGbH0scGUucHJvdG90eXBlLnRvcExldmVsUnVsZVJlY29yZD1mdW5jdGlvbihsZSxiZSl7dHJ5e3ZhciBP'@; put 'ZT1uZXcgTjEoe2RlZmluaXRpb246W10sbmFtZTpsZX0pO3JldHVybiBPZS5uYW1lPWxlLHRoaXMucmVjb3JkaW5nUHJvZFN0YWNrLnB1c2goT2UpLGJlLmNhbGwodGhpcyksdGhpcy5yZWNvcmRpbmdQcm9kU3RhY2sucG9wKCksT2V9Y2F0Y2goJGUpe2lmKCEwIT09JGUuS05PV05fUkVDT1JE'@; put 'RVJfRVJST1IpdHJ5eyRlLm1lc3NhZ2U9JGUubWVzc2FnZSsnXG5cdCBUaGlzIGVycm9yIHdhcyB0aHJvd24gZHVyaW5nIHRoZSAiZ3JhbW1hciByZWNvcmRpbmcgcGhhc2UiIEZvciBtb3JlIGluZm8gc2VlOlxuXHRodHRwczovL3NhcC5naXRodWIuaW8vY2hldnJvdGFpbi9kb2NzL2d1aWRl'@; put 'L2ludGVybmFscy5odG1sI2dyYW1tYXItcmVjb3JkaW5nJ31jYXRjaHt0aHJvdyAkZX10aHJvdyAkZX19LHBlLnByb3RvdHlwZS5vcHRpb25JbnRlcm5hbFJlY29yZD1mdW5jdGlvbihsZSxiZSl7cmV0dXJuIG1hLmNhbGwodGhpcyxoYyxsZSxiZSl9LHBlLnByb3RvdHlwZS5hdExlYXN0T25l'@; put 'SW50ZXJuYWxSZWNvcmQ9ZnVuY3Rpb24obGUsYmUpe21hLmNhbGwodGhpcyxlZCxiZSxsZSl9LHBlLnByb3RvdHlwZS5hdExlYXN0T25lU2VwRmlyc3RJbnRlcm5hbFJlY29yZD1mdW5jdGlvbihsZSxiZSl7bWEuY2FsbCh0aGlzLEpuLGJlLGxlLCEwKX0scGUucHJvdG90eXBlLm1hbnlJbnRl'@; put 'cm5hbFJlY29yZD1mdW5jdGlvbihsZSxiZSl7bWEuY2FsbCh0aGlzLGNsLGJlLGxlKX0scGUucHJvdG90eXBlLm1hbnlTZXBGaXJzdEludGVybmFsUmVjb3JkPWZ1bmN0aW9uKGxlLGJlKXttYS5jYWxsKHRoaXMsbWksYmUsbGUsITApfSxwZS5wcm90b3R5cGUub3JJbnRlcm5hbFJlY29yZD1m'@; put 'dW5jdGlvbihsZSxiZSl7cmV0dXJuIHU4LmNhbGwodGhpcyxsZSxiZSl9LHBlLnByb3RvdHlwZS5zdWJydWxlSW50ZXJuYWxSZWNvcmQ9ZnVuY3Rpb24obGUsYmUsT2Upe2lmKGExKGJlKSwhbGV8fCExPT09VyhsZSwicnVsZU5hbWUiKSl7dmFyICRlPW5ldyBFcnJvcigiPFNVQlJVTEUiK2Jm'@; put 'KGJlKSsiPiBhcmd1bWVudCBpcyBpbnZhbGlkIGV4cGVjdGluZyBhIFBhcnNlciBtZXRob2QgcmVmZXJlbmNlIGJ1dCBnb3Q6IDwiK0pTT04uc3RyaW5naWZ5KGxlKSsiPlxuIGluc2lkZSB0b3AgbGV2ZWwgcnVsZTogPCIrdGhpcy5yZWNvcmRpbmdQcm9kU3RhY2tbMF0ubmFtZSsiPiIpO3Ro'@; put 'cm93ICRlLktOT1dOX1JFQ09SREVSX0VSUk9SPSEwLCRlfXZhciBTdD1GZSh0aGlzLnJlY29yZGluZ1Byb2RTdGFjayksRW49bmV3IEJ1KHtpZHg6YmUsbm9uVGVybWluYWxOYW1lOmxlLnJ1bGVOYW1lLHJlZmVyZW5jZWRSdWxlOnZvaWQgMH0pO3JldHVybiBTdC5kZWZpbml0aW9uLnB1c2go'@; put 'RW4pLHRoaXMub3V0cHV0Q3N0P2czOmptfSxwZS5wcm90b3R5cGUuY29uc3VtZUludGVybmFsUmVjb3JkPWZ1bmN0aW9uKGxlLGJlLE9lKXtpZihhMShiZSksIWRjKGxlKSl7dmFyICRlPW5ldyBFcnJvcigiPENPTlNVTUUiK2JmKGJlKSsiPiBhcmd1bWVudCBpcyBpbnZhbGlkIGV4cGVjdGlu'@; put 'ZyBhIFRva2VuVHlwZSByZWZlcmVuY2UgYnV0IGdvdDogPCIrSlNPTi5zdHJpbmdpZnkobGUpKyI+XG4gaW5zaWRlIHRvcCBsZXZlbCBydWxlOiA8Iit0aGlzLnJlY29yZGluZ1Byb2RTdGFja1swXS5uYW1lKyI+Iik7dGhyb3cgJGUuS05PV05fUkVDT1JERVJfRVJST1I9ITAsJGV9dmFyIFN0'@; put 'PUZlKHRoaXMucmVjb3JkaW5nUHJvZFN0YWNrKSxRdD1uZXcgU2woe2lkeDpiZSx0ZXJtaW5hbFR5cGU6bGV9KTtyZXR1cm4gU3QuZGVmaW5pdGlvbi5wdXNoKFF0KSxvMX0scGV9KCk7ZnVuY3Rpb24gbWEocGUsbGUsYmUsT2Upe3ZvaWQgMD09PU9lJiYoT2U9ITEpLGExKGJlKTt2YXIgJGU9'@; put 'RmUodGhpcy5yZWNvcmRpbmdQcm9kU3RhY2spLFN0PUgobGUpP2xlOmxlLkRFRixRdD1uZXcgcGUoe2RlZmluaXRpb246W10saWR4OmJlfSk7cmV0dXJuIFcobGUsIk5BTUUiKSYmKFF0Lm5hbWU9bGUuTkFNRSksT2UmJihRdC5zZXBhcmF0b3I9bGUuU0VQKSxXKGxlLCJNQVhfTE9PS0FIRUFE'@; put 'IikmJihRdC5tYXhMb29rYWhlYWQ9bGUuTUFYX0xPT0tBSEVBRCksdGhpcy5yZWNvcmRpbmdQcm9kU3RhY2sucHVzaChRdCksU3QuY2FsbCh0aGlzKSwkZS5kZWZpbml0aW9uLnB1c2goUXQpLHRoaXMucmVjb3JkaW5nUHJvZFN0YWNrLnBvcCgpLGptfWZ1bmN0aW9uIHU4KHBlLGxlKXt2YXIg'@; put 'YmU9dGhpczthMShsZSk7dmFyIE9lPUZlKHRoaXMucmVjb3JkaW5nUHJvZFN0YWNrKSwkZT0hMT09PWIocGUpLFN0PSExPT09JGU/cGU6cGUuREVGLFF0PW5ldyBldSh7ZGVmaW5pdGlvbjpbXSxpZHg6bGUsaWdub3JlQW1iaWd1aXRpZXM6JGUmJiEwPT09cGUuSUdOT1JFX0FNQklHVUlUSUVT'@; put 'fSk7VyhwZSwiTkFNRSIpJiYoUXQubmFtZT1wZS5OQU1FKSxXKHBlLCJNQVhfTE9PS0FIRUFEIikmJihRdC5tYXhMb29rYWhlYWQ9cGUuTUFYX0xPT0tBSEVBRCk7dmFyIEVuPUcoU3QsZnVuY3Rpb24oY3Ipe3JldHVybiBIKGNyLkdBVEUpfSk7cmV0dXJuIFF0Lmhhc1ByZWRpY2F0ZXM9RW4s'@; put 'T2UuZGVmaW5pdGlvbi5wdXNoKFF0KSxSKFN0LGZ1bmN0aW9uKGNyKXt2YXIgVXI9bmV3IFJ1KHtkZWZpbml0aW9uOltdfSk7UXQuZGVmaW5pdGlvbi5wdXNoKFVyKSxXKGNyLCJOQU1FIikmJihVci5uYW1lPWNyLk5BTUUpLFcoY3IsIklHTk9SRV9BTUJJR1VJVElFUyIpP1VyLmlnbm9yZUFt'@; put 'YmlndWl0aWVzPWNyLklHTk9SRV9BTUJJR1VJVElFUzpXKGNyLCJHQVRFIikmJihVci5pZ25vcmVBbWJpZ3VpdGllcz0hMCksYmUucmVjb3JkaW5nUHJvZFN0YWNrLnB1c2goVXIpLGNyLkFMVC5jYWxsKGJlKSxiZS5yZWNvcmRpbmdQcm9kU3RhY2sucG9wKCl9KSxqbX1mdW5jdGlvbiBiZihw'@; put 'ZSl7cmV0dXJuIDA9PT1wZT8iIjoiIitwZX1mdW5jdGlvbiBhMShwZSl7aWYocGU8MHx8cGU+bzUpe3ZhciBsZT1uZXcgRXJyb3IoIkludmFsaWQgRFNMIE1ldGhvZCBpZHggdmFsdWU6IDwiK3BlKyI+XG5cdElkeCB2YWx1ZSBtdXN0IGJlIGEgbm9uZSBuZWdhdGl2ZSB2YWx1ZSBzbWFsbGVy'@; put 'IHRoYW4gIisobzUrMSkpO3Rocm93IGxlLktOT1dOX1JFQ09SREVSX0VSUk9SPSEwLGxlfX12YXIgeGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwZSgpe31yZXR1cm4gcGUucHJvdG90eXBlLmluaXRQZXJmb3JtYW5jZVRyYWNlcj1mdW5jdGlvbihsZSl7aWYoVyhsZSwidHJhY2VJbml0UGVyZiIp'@; put 'KXt2YXIgYmU9bGUudHJhY2VJbml0UGVyZixPZT0ibnVtYmVyIj09dHlwZW9mIGJlO3RoaXMudHJhY2VJbml0TWF4SWRlbnQ9T2U/YmU6MS8wLHRoaXMudHJhY2VJbml0UGVyZj1PZT9iZT4wOmJlfWVsc2UgdGhpcy50cmFjZUluaXRNYXhJZGVudD0wLHRoaXMudHJhY2VJbml0UGVyZj16cy50'@; put 'cmFjZUluaXRQZXJmO3RoaXMudHJhY2VJbml0SW5kZW50PS0xfSxwZS5wcm90b3R5cGUuVFJBQ0VfSU5JVD1mdW5jdGlvbihsZSxiZSl7aWYoITA9PT10aGlzLnRyYWNlSW5pdFBlcmYpe3RoaXMudHJhY2VJbml0SW5kZW50Kys7dmFyIE9lPW5ldyBBcnJheSh0aGlzLnRyYWNlSW5pdEluZGVu'@; put 'dCsxKS5qb2luKCJcdCIpO3RoaXMudHJhY2VJbml0SW5kZW50PHRoaXMudHJhY2VJbml0TWF4SWRlbnQmJmNvbnNvbGUubG9nKE9lKyItLVx4M2UgPCIrbGUrIj4iKTt2YXIgJGU9Z2UoYmUpLFN0PSRlLnRpbWUsUXQ9JGUudmFsdWUsRW49U3Q+MTA/Y29uc29sZS53YXJuOmNvbnNvbGUubG9n'@; put 'O3JldHVybiB0aGlzLnRyYWNlSW5pdEluZGVudDx0aGlzLnRyYWNlSW5pdE1heElkZW50JiZFbihPZSsiPC0tIDwiK2xlKyI+IHRpbWU6ICIrU3QrIm1zIiksdGhpcy50cmFjZUluaXRJbmRlbnQtLSxRdH1yZXR1cm4gYmUoKX0scGV9KCksRjA9ZnVuY3Rpb24oKXt2YXIgcGU9ZnVuY3Rpb24o'@; put 'bGUsYmUpe3JldHVybihwZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oT2UsJGUpe09lLl9fcHJvdG9fXz0kZX18fGZ1bmN0aW9uKE9lLCRlKXtmb3IodmFyIFN0IGluICRlKSRlLmhhc093blByb3BlcnR5KFN0KSYmKE9l'@; put 'W1N0XT0kZVtTdF0pfSkobGUsYmUpfTtyZXR1cm4gZnVuY3Rpb24obGUsYmUpe2Z1bmN0aW9uIE9lKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sZX1wZShsZSxiZSksbGUucHJvdG90eXBlPW51bGw9PT1iZT9PYmplY3QuY3JlYXRlKGJlKTooT2UucHJvdG90eXBlPWJlLnByb3RvdHlwZSxuZXcgT2Up'@; put 'fX0oKSxGbD1nZihKYywiIixOYU4sTmFOLE5hTixOYU4sTmFOLE5hTik7T2JqZWN0LmZyZWV6ZShGbCk7dmFyIHpzPU9iamVjdC5mcmVlemUoe3JlY292ZXJ5RW5hYmxlZDohMSxtYXhMb29rYWhlYWQ6NCxpZ25vcmVkSXNzdWVzOnt9LGR5bmFtaWNUb2tlbnNFbmFibGVkOiExLG91dHB1dENz'@; put 'dDohMCxlcnJvck1lc3NhZ2VQcm92aWRlcjpjMCxub2RlTG9jYXRpb25UcmFja2luZzoibm9uZSIsdHJhY2VJbml0UGVyZjohMSxza2lwVmFsaWRhdGlvbnM6ITF9KSxZdT1PYmplY3QuZnJlZXplKHtyZWNvdmVyeVZhbHVlRnVuYzpmdW5jdGlvbigpe30scmVzeW5jRW5hYmxlZDohMH0pLHJk'@; put 'PWZ1bmN0aW9uKHBlKXtyZXR1cm4gcGVbcGUuSU5WQUxJRF9SVUxFX05BTUU9MF09IklOVkFMSURfUlVMRV9OQU1FIixwZVtwZS5EVVBMSUNBVEVfUlVMRV9OQU1FPTFdPSJEVVBMSUNBVEVfUlVMRV9OQU1FIixwZVtwZS5JTlZBTElEX1JVTEVfT1ZFUlJJREU9Ml09IklOVkFMSURfUlVMRV9P'@; put 'VkVSUklERSIscGVbcGUuRFVQTElDQVRFX1BST0RVQ1RJT05TPTNdPSJEVVBMSUNBVEVfUFJPRFVDVElPTlMiLHBlW3BlLlVOUkVTT0xWRURfU1VCUlVMRV9SRUY9NF09IlVOUkVTT0xWRURfU1VCUlVMRV9SRUYiLHBlW3BlLkxFRlRfUkVDVVJTSU9OPTVdPSJMRUZUX1JFQ1VSU0lPTiIscGVb'@; put 'cGUuTk9ORV9MQVNUX0VNUFRZX0FMVD02XT0iTk9ORV9MQVNUX0VNUFRZX0FMVCIscGVbcGUuQU1CSUdVT1VTX0FMVFM9N109IkFNQklHVU9VU19BTFRTIixwZVtwZS5DT05GTElDVF9UT0tFTlNfUlVMRVNfTkFNRVNQQUNFPThdPSJDT05GTElDVF9UT0tFTlNfUlVMRVNfTkFNRVNQQUNFIixw'@; put 'ZVtwZS5JTlZBTElEX1RPS0VOX05BTUU9OV09IklOVkFMSURfVE9LRU5fTkFNRSIscGVbcGUuSU5WQUxJRF9ORVNURURfUlVMRV9OQU1FPTEwXT0iSU5WQUxJRF9ORVNURURfUlVMRV9OQU1FIixwZVtwZS5EVVBMSUNBVEVfTkVTVEVEX05BTUU9MTFdPSJEVVBMSUNBVEVfTkVTVEVEX05BTUUi'@; put 'LHBlW3BlLk5PX05PTl9FTVBUWV9MT09LQUhFQUQ9MTJdPSJOT19OT05fRU1QVFlfTE9PS0FIRUFEIixwZVtwZS5BTUJJR1VPVVNfUFJFRklYX0FMVFM9MTNdPSJBTUJJR1VPVVNfUFJFRklYX0FMVFMiLHBlW3BlLlRPT19NQU5ZX0FMVFM9MTRdPSJUT09fTUFOWV9BTFRTIixwZX0ocmR8fHt9'@; put 'KTtmdW5jdGlvbiB3ZihwZSl7cmV0dXJuIHZvaWQgMD09PXBlJiYocGU9dm9pZCAwKSxmdW5jdGlvbigpe3JldHVybiBwZX19dmFyIENmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcGUobGUsYmUpe3ZvaWQgMD09PWJlJiYoYmU9enMpLHRoaXMuaWdub3JlZElzc3Vlcz16cy5pZ25vcmVkSXNzdWVz'@; put 'LHRoaXMuZGVmaW5pdGlvbkVycm9ycz1bXSx0aGlzLnNlbGZBbmFseXNpc0RvbmU9ITE7dmFyIE9lPXRoaXM7T2UuaW5pdEVycm9ySGFuZGxlcihiZSksT2UuaW5pdExleGVyQWRhcHRlcigpLE9lLmluaXRMb29rc0FoZWFkKGJlKSxPZS5pbml0UmVjb2duaXplckVuZ2luZShsZSxiZSksT2Uu'@; put 'aW5pdFJlY292ZXJhYmxlKGJlKSxPZS5pbml0VHJlZUJ1aWxkZXIoYmUpLE9lLmluaXRDb250ZW50QXNzaXN0KCksT2UuaW5pdEdhc3RSZWNvcmRlcihiZSksT2UuaW5pdFBlcmZvcm1hbmNlVHJhY2VyKGJlKSxXKGJlLCJpZ25vcmVkSXNzdWVzIikmJmJlLmlnbm9yZWRJc3N1ZXMhPT16cy5p'@; put 'Z25vcmVkSXNzdWVzJiZ4ZSgiVGhlIDxpZ25vcmVkSXNzdWVzPiBJUGFyc2VyQ29uZmlnIHByb3BlcnR5IGlzIHNvZnQtZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy5cblx0UGxlYXNlIHVzZSB0aGUgPElHTk9SRV9BTUJJR1VJVElFUz4gZmxhZyBv'@; put 'biB0aGUgcmVsZXZhbnQgRFNMIG1ldGhvZCBpbnN0ZWFkLiIpLHRoaXMuaWdub3JlZElzc3Vlcz1XKGJlLCJpZ25vcmVkSXNzdWVzIik/YmUuaWdub3JlZElzc3Vlczp6cy5pZ25vcmVkSXNzdWVzLHRoaXMuc2tpcFZhbGlkYXRpb25zPVcoYmUsInNraXBWYWxpZGF0aW9ucyIpP2JlLnNraXBW'@; put 'YWxpZGF0aW9uczp6cy5za2lwVmFsaWRhdGlvbnN9cmV0dXJuIHBlLnBlcmZvcm1TZWxmQW5hbHlzaXM9ZnVuY3Rpb24obGUpe2xlLnBlcmZvcm1TZWxmQW5hbHlzaXMoKX0scGUucHJvdG90eXBlLnBlcmZvcm1TZWxmQW5hbHlzaXM9ZnVuY3Rpb24oKXt2YXIgbGU9dGhpczt0aGlzLlRSQUNF'@; put 'X0lOSVQoInBlcmZvcm1TZWxmQW5hbHlzaXMiLGZ1bmN0aW9uKCl7dmFyIGJlO2xlLnNlbGZBbmFseXNpc0RvbmU9ITA7dmFyIE9lPWxlLmNsYXNzTmFtZTtsZS5UUkFDRV9JTklUKCJ0b0Zhc3RQcm9wcyIsZnVuY3Rpb24oKXtEZShsZSl9KSxsZS5UUkFDRV9JTklUKCJHcmFtbWFyIFJlY29y'@; put 'ZGluZyIsZnVuY3Rpb24oKXt0cnl7bGUuZW5hYmxlUmVjb3JkaW5nKCksUihsZS5kZWZpbmVkUnVsZXNOYW1lcyxmdW5jdGlvbihTdCl7dmFyIEVuPWxlW1N0XS5vcmlnaW5hbEdyYW1tYXJBY3Rpb24sY3I9dm9pZCAwO2xlLlRSQUNFX0lOSVQoU3QrIiBSdWxlIixmdW5jdGlvbigpe2NyPWxl'@; put 'LnRvcExldmVsUnVsZVJlY29yZChTdCxFbil9KSxsZS5nYXN0UHJvZHVjdGlvbnNDYWNoZVtTdF09Y3J9KX1maW5hbGx5e2xlLmRpc2FibGVSZWNvcmRpbmcoKX19KTt2YXIgJGU9W107aWYobGUuVFJBQ0VfSU5JVCgiR3JhbW1hciBSZXNvbHZpbmciLGZ1bmN0aW9uKCl7JGU9SG0oe3J1bGVz'@; put 'OkEobGUuZ2FzdFByb2R1Y3Rpb25zQ2FjaGUpfSksbGUuZGVmaW5pdGlvbkVycm9ycy5wdXNoLmFwcGx5KGxlLmRlZmluaXRpb25FcnJvcnMsJGUpfSksbGUuVFJBQ0VfSU5JVCgiR3JhbW1hciBWYWxpZGF0aW9ucyIsZnVuY3Rpb24oKXtpZihjKCRlKSYmITE9PT1sZS5za2lwVmFsaWRhdGlv'@; put 'bnMpe3ZhciBTdD13ZCh7cnVsZXM6QShsZS5nYXN0UHJvZHVjdGlvbnNDYWNoZSksbWF4TG9va2FoZWFkOmxlLm1heExvb2thaGVhZCx0b2tlblR5cGVzOkEobGUudG9rZW5zTWFwKSxpZ25vcmVkSXNzdWVzOmxlLmlnbm9yZWRJc3N1ZXMsZXJyTXNnUHJvdmlkZXI6aTEsZ3JhbW1hck5hbWU6'@; put 'T2V9KTtsZS5kZWZpbml0aW9uRXJyb3JzLnB1c2guYXBwbHkobGUuZGVmaW5pdGlvbkVycm9ycyxTdCl9fSksYyhsZS5kZWZpbml0aW9uRXJyb3JzKSYmKGxlLnJlY292ZXJ5RW5hYmxlZCYmbGUuVFJBQ0VfSU5JVCgiY29tcHV0ZUFsbFByb2RzRm9sbG93cyIsZnVuY3Rpb24oKXt2YXIgU3Q9'@; put 'ZnVuY3Rpb24gSWkocGUpe3ZhciBsZT17fTtyZXR1cm4gUihwZSxmdW5jdGlvbihiZSl7dmFyIE9lPW5ldyBNYyhiZSkuc3RhcnRXYWxraW5nKCk7dWUobGUsT2UpfSksbGV9KEEobGUuZ2FzdFByb2R1Y3Rpb25zQ2FjaGUpKTtsZS5yZXN5bmNGb2xsb3dzPVN0fSksbGUuVFJBQ0VfSU5JVCgi'@; put 'Q29tcHV0ZUxvb2thaGVhZEZ1bmN0aW9ucyIsZnVuY3Rpb24oKXtsZS5wcmVDb21wdXRlTG9va2FoZWFkRnVuY3Rpb25zKEEobGUuZ2FzdFByb2R1Y3Rpb25zQ2FjaGUpKX0pKSxsZS5UUkFDRV9JTklUKCJleHBhbmRBbGxOZXN0ZWRSdWxlTmFtZXMiLGZ1bmN0aW9uKCl7dmFyIFN0PWZ1bmN0'@; put 'aW9uIHp0KHBlLGxlKXt2YXIgYmU9e2FsbFJ1bGVOYW1lczpbXX07cmV0dXJuIFIocGUsZnVuY3Rpb24oT2Upe3ZhciAkZT1sZVtPZS5uYW1lXTtiZS5hbGxSdWxlTmFtZXMucHVzaChPZS5uYW1lKTt2YXIgU3Q9bmV3IGp0KCRlKTtPZS5hY2NlcHQoU3QpLFIoU3QucmVzdWx0LGZ1bmN0aW9u'@; put 'KFF0KXtiZS5hbGxSdWxlTmFtZXMucHVzaChPZS5uYW1lK1F0Lm5hbWUpfSl9KSxiZX0oQShsZS5nYXN0UHJvZHVjdGlvbnNDYWNoZSksbGUuZnVsbFJ1bGVOYW1lVG9TaG9ydCk7bGUuYWxsUnVsZU5hbWVzPVN0LmFsbFJ1bGVOYW1lc30pLCFwZS5ERUZFUl9ERUZJTklUSU9OX0VSUk9SU19I'@; put 'QU5ETElORyYmIWMobGUuZGVmaW5pdGlvbkVycm9ycykpdGhyb3cgYmU9QyhsZS5kZWZpbml0aW9uRXJyb3JzLGZ1bmN0aW9uKFN0KXtyZXR1cm4gU3QubWVzc2FnZX0pLG5ldyBFcnJvcigiUGFyc2VyIERlZmluaXRpb24gRXJyb3JzIGRldGVjdGVkOlxuICIrYmUuam9pbigiXG4tLS0tLS0t'@; put 'LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKSl9KX0scGUuREVGRVJfREVGSU5JVElPTl9FUlJPUlNfSEFORExJTkc9ITEscGV9KCk7IWZ1bmN0aW9uIEFlKHBlLGxlKXtsZS5mb3JFYWNoKGZ1bmN0aW9uKGJlKXt2YXIgT2U9YmUucHJvdG90eXBlO09iamVjdC5nZXRPd25Qcm9wZXJ0eU5h'@; put 'bWVzKE9lKS5mb3JFYWNoKGZ1bmN0aW9uKCRlKXtpZigiY29uc3RydWN0b3IiIT09JGUpe3ZhciBTdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9lLCRlKTtTdCYmKFN0LmdldHx8U3Quc2V0KT9PYmplY3QuZGVmaW5lUHJvcGVydHkocGUucHJvdG90eXBlLCRlLFN0KTpwZS5w'@; put 'cm90b3R5cGVbJGVdPWJlLnByb3RvdHlwZVskZV19fSl9KX0oQ2YsW0VnLHJ1LFRnLGZjLGdwLGYzLF9mLEJtLG0zLHhnXSk7dmFyIHMxPWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZShiZSxPZSl7dm9pZCAwPT09T2UmJihPZT16cyk7dmFyIFN0PW1lKE9lKTtyZXR1cm4gU3Qub3V0cHV0Q3N0'@; put 'PSEwLHBlLmNhbGwodGhpcyxiZSxTdCl8fHRoaXN9cmV0dXJuIEYwKGxlLHBlKSxsZX0oQ2YpLHYzPWZ1bmN0aW9uKHBlKXtmdW5jdGlvbiBsZShiZSxPZSl7dm9pZCAwPT09T2UmJihPZT16cyk7dmFyIFN0PW1lKE9lKTtyZXR1cm4gU3Qub3V0cHV0Q3N0PSExLHBlLmNhbGwodGhpcyxiZSxT'@; put 'dCl8fHRoaXN9cmV0dXJuIEYwKGxlLHBlKSxsZX0oQ2YpO2Z1bmN0aW9uIGR5KHBlLGxlKXt2YXIgYmU9dm9pZCAwPT09bGU/e306bGUsT2U9YmUucmVzb3VyY2VCYXNlLCRlPXZvaWQgMD09PU9lPyJodHRwczovL3VucGtnLmNvbS9jaGV2cm90YWluQCIreSsiL2RpYWdyYW1zLyI6T2UsU3Q9'@; put 'YmUuY3NzO3JldHVybiJcblx4M2MhLS0gVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlIC0tXHgzZVxuPCFET0NUWVBFIGh0bWw+XG48bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cbjxzdHlsZT5cbiAgYm9keSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDMwLCAyMCUsIDk1JSlcbiAgfVxu'@; put 'PC9zdHlsZT5cblxuXG48bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyIrKHZvaWQgMD09PVN0PyJodHRwczovL3VucGtnLmNvbS9jaGV2cm90YWluQCIreSsiL2RpYWdyYW1zL2RpYWdyYW1zLmNzcyI6U3QpKyInPlxuXG48c2NyaXB0IHNyYz0nIiskZSsidmVuZG9yL3JhaWxyb2FkLWRp'@; put 'YWdyYW1zLmpzJz48XC9zY3JpcHQ+XG48c2NyaXB0IHNyYz0nIiskZSsic3JjL2RpYWdyYW1zX2J1aWxkZXIuanMnPjxcL3NjcmlwdD5cbjxzY3JpcHQgc3JjPSciKyRlKyJzcmMvZGlhZ3JhbXNfYmVoYXZpb3IuanMnPjxcL3NjcmlwdD5cbjxzY3JpcHQgc3JjPSciKyRlKydzcmMvbWFpbi5q'@; put 'c1wnPjxcL3NjcmlwdD5cblxuPGRpdiBpZD0iZGlhZ3JhbXMiIGFsaWduPSJjZW50ZXIiPjwvZGl2PiAgICBcblxuPHNjcmlwdD5cbiAgICB3aW5kb3cuc2VyaWFsaXplZEdyYW1tYXIgPSAnK0pTT04uc3RyaW5naWZ5KHBlLG51bGwsIiAgIikrJztcbjxcL3NjcmlwdD5cblxuPHNjcmlwdD5c'@; put 'biAgICB2YXIgZGlhZ3JhbXNEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhZ3JhbXMiKTtcbiAgICBtYWluLmRyYXdEaWFncmFtc0Zyb21TZXJpYWxpemVkR3JhbW1hcihzZXJpYWxpemVkR3JhbW1hciwgZGlhZ3JhbXNEaXYpO1xuPFwvc2NyaXB0PlxuJ312YXIgT3U9IlxuIjtm'@; put 'dW5jdGlvbiBDOShwZSl7cmV0dXJuIlxuZnVuY3Rpb24gIitwZS5uYW1lKyIodG9rZW5Wb2NhYnVsYXJ5LCBjb25maWcpIHtcbiAgICAvLyBpbnZva2Ugc3VwZXIgY29uc3RydWN0b3JcbiAgICAvLyBObyBzdXBwb3J0IGZvciBlbWJlZGRlZCBhY3Rpb25zIGN1cnJlbnRseSwgc28gd2UgY2Fu'@; put 'ICdoYXJkY29kZSdcbiAgICAvLyBUaGUgdXNlIG9mIENzdFBhcnNlci5cbiAgICBjaGV2cm90YWluLkNzdFBhcnNlci5jYWxsKHRoaXMsIHRva2VuVm9jYWJ1bGFyeSwgY29uZmlnKVxuXG4gICAgY29uc3QgJCA9IHRoaXNcblxuICAgICIrZnVuY3Rpb24gRWYocGUpe3ZhciBsZT1DKHBlLGZ1'@; put 'bmN0aW9uKGJlKXtyZXR1cm4gZnVuY3Rpb24gQWcocGUsbGUpe3ZhciBiZT1wbChsZSwnJC5SVUxFKCInK3BlLm5hbWUrJyIsIGZ1bmN0aW9uKCkgeycpK091O3JldHVybiBiZSs9eGEocGUuZGVmaW5pdGlvbixsZSsxKSxiZSs9cGwobGUrMSwifSkiKStPdX0oYmUsMSl9KTtyZXR1cm4gbGUu'@; put 'am9pbigiXG4iKX0ocGUucnVsZXMpKyJcblxuICAgIC8vIHZlcnkgaW1wb3J0YW50IHRvIGNhbGwgdGhpcyBhZnRlciBhbGwgdGhlIHJ1bGVzIGhhdmUgYmVlbiBkZWZpbmVkLlxuICAgIC8vIG90aGVyd2lzZSB0aGUgcGFyc2VyIG1heSBub3Qgd29yayBjb3JyZWN0bHkgYXMgaXQgd2lsbCBs'@; put 'YWNrIGluZm9ybWF0aW9uXG4gICAgLy8gZGVyaXZlZCBkdXJpbmcgdGhlIHNlbGYgYW5hbHlzaXMgcGhhc2UuXG4gICAgdGhpcy5wZXJmb3JtU2VsZkFuYWx5c2lzKHRoaXMpXG59XG5cbi8vIGluaGVyaXRhbmNlIGFzIGltcGxlbWVudGVkIGluIGphdmFzY3JpcHQgaW4gdGhlIHByZXZpb3Vz'@; put 'IGRlY2FkZS4uLiA6KFxuIitwZS5uYW1lKyIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShjaGV2cm90YWluLkNzdFBhcnNlci5wcm90b3R5cGUpXG4iK3BlLm5hbWUrIi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAiK3BlLm5hbWUrIiAgICBcbiAgICAifWZ1bmN0aW9uIG1wKHBlLGxlKXtp'@; put 'ZihwZSBpbnN0YW5jZW9mIEJ1KXJldHVybiBmdW5jdGlvbiBoeShwZSxsZSl7cmV0dXJuIHBsKGxlLCIkLlNVQlJVTEUiK3BlLmlkeCsiKCQuIitwZS5ub25UZXJtaW5hbE5hbWUrIikiK091KX0ocGUsbGUpO2lmKHBlIGluc3RhbmNlb2YgaGMpcmV0dXJuIGE1KCJPUFRJT04iLHBlLGxlKTtp'@; put 'ZihwZSBpbnN0YW5jZW9mIGVkKXJldHVybiBhNSgiQVRfTEVBU1RfT05FIixwZSxsZSk7aWYocGUgaW5zdGFuY2VvZiBKbilyZXR1cm4gYTUoIkFUX0xFQVNUX09ORV9TRVAiLHBlLGxlKTtpZihwZSBpbnN0YW5jZW9mIG1pKXJldHVybiBhNSgiTUFOWV9TRVAiLHBlLGxlKTtpZihwZSBpbnN0'@; put 'YW5jZW9mIGNsKXJldHVybiBhNSgiTUFOWSIscGUsbGUpO2lmKHBlIGluc3RhbmNlb2YgZXUpcmV0dXJuIGZ1bmN0aW9uIGZ5KHBlLGxlKXt2YXIgYmU9cGwobGUsIiQuT1IiK3BlLmlkeCsiKFsiKStPdSxPZT1DKHBlLmRlZmluaXRpb24sZnVuY3Rpb24oJGUpe3JldHVybiBmdW5jdGlvbiBV'@; put 'aShwZSxsZSl7dmFyIGJlPXBsKGxlLCJ7IikrT3U7cmV0dXJuIHBlLm5hbWUmJihiZSs9cGwobGUrMSwnTkFNRTogIicrcGUubmFtZSsnIiwnKStPdSksYmUrPXBsKGxlKzEsIkFMVDogZnVuY3Rpb24oKSB7IikrT3UsYmUrPXhhKHBlLmRlZmluaXRpb24sbGUrMSksKGJlKz1wbChsZSsxLCJ9'@; put 'IikrT3UpK3BsKGxlLCJ9Iil9KCRlLGxlKzEpfSk7cmV0dXJuKGJlKz1PZS5qb2luKCIsXG4iKSkrKE91K3BsKGxlLCJdKVxuIikpfShwZSxsZSk7aWYocGUgaW5zdGFuY2VvZiBTbClyZXR1cm4gZnVuY3Rpb24gSkMocGUsbGUpe3JldHVybiBwbChsZSwiJC5DT05TVU1FIitwZS5pZHgrIih0'@; put 'aGlzLnRva2Vuc01hcC4iK3BlLnRlcm1pbmFsVHlwZS5uYW1lKyIpIitPdSl9KHBlLGxlKTtpZihwZSBpbnN0YW5jZW9mIFJ1KXJldHVybiB4YShwZS5kZWZpbml0aW9uLGxlKTt0aHJvdyBFcnJvcigibm9uIGV4aGF1c3RpdmUgbWF0Y2giKX1mdW5jdGlvbiBhNShwZSxsZSxiZSl7dmFyIE9l'@; put 'PXBsKGJlLCIkLiIrKHBlK2xlLmlkeCkrIigiKTtyZXR1cm4gbGUubmFtZXx8bGUuc2VwYXJhdG9yPyhPZSs9IntcbiIsbGUubmFtZSYmKE9lKz1wbChiZSsxLCdOQU1FOiAiJytsZS5uYW1lKyciJykrIiwiK091KSxsZS5zZXBhcmF0b3ImJihPZSs9cGwoYmUrMSwiU0VQOiB0aGlzLnRva2Vu'@; put 'c01hcC4iK2xlLnNlcGFyYXRvci5uYW1lKSsiLCIrT3UpLE9lKz0iREVGOiAiK2Q4KGxlLmRlZmluaXRpb24sYmUrMikrT3UsT2UrPXBsKGJlLCJ9IikrT3UpOk9lKz1kOChsZS5kZWZpbml0aW9uLGJlKzEpLE9lKyhwbChiZSwiKSIpK091KX1mdW5jdGlvbiBkOChwZSxsZSl7dmFyIGJlPSJm'@; put 'dW5jdGlvbigpIHtcbiI7cmV0dXJuKGJlKz14YShwZSxsZSkpKyhwbChsZSwifSIpK091KX1mdW5jdGlvbiB4YShwZSxsZSl7dmFyIGJlPSIiO3JldHVybiBSKHBlLGZ1bmN0aW9uKE9lKXtiZSs9bXAoT2UsbGUrMSl9KSxiZX1mdW5jdGlvbiBwbChwZSxsZSl7cmV0dXJuIEFycmF5KDQqcGUr'@; put 'MSkuam9pbigiICIpK2xlfWZ1bmN0aW9uIGlkKHBlKXt2YXIgbGU9ZnVuY3Rpb24gVW0ocGUpe3JldHVybiIgICAgXG4iK0M5KHBlKSsiXG5yZXR1cm4gbmV3ICIrcGUubmFtZSsiKHRva2VuVm9jYWJ1bGFyeSwgY29uZmlnKSAgICBcbiJ9KHtuYW1lOnBlLm5hbWUscnVsZXM6cGUucnVsZXN9'@; put 'KSxiZT1uZXcgRnVuY3Rpb24oInRva2VuVm9jYWJ1bGFyeSIsImNvbmZpZyIsImNoZXZyb3RhaW4iLGxlKTtyZXR1cm4gZnVuY3Rpb24oT2Upe3JldHVybiBiZShwZS50b2tlblZvY2FidWxhcnksT2UsaCgzMzYxNCkpfX1mdW5jdGlvbiBkMChwZSl7cmV0dXJuIGZ1bmN0aW9uIFNmKHBlKXty'@; put 'ZXR1cm4iXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICAgICAgZGVmaW5lKFsnY2hldnJv'@; put 'dGFpbiddLCBmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgIC8vIE5vZGUuIERvZXMgbm90IHdvcmsgd2l0aCBzdHJpY3QgQ29tbW9uSlMsIGJ1dFxuICAgICAgICAvLyBvbmx5IENvbW1vbkpT'@; put 'LWxpa2UgZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCBtb2R1bGUuZXhwb3J0cyxcbiAgICAgICAgLy8gbGlrZSBOb2RlLlxuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnY2hldnJvdGFpbicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBCcm93c2VyIGds'@; put 'b2JhbHMgKHJvb3QgaXMgd2luZG93KVxuICAgICAgICByb290LnJldHVybkV4cG9ydHMgPSBmYWN0b3J5KHJvb3QuYik7XG4gICAgfVxufSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24gKGNoZXZyb3RhaW4pIHtcblxuIitDOShwZSkrIlxuICAg'@; put 'IFxucmV0dXJuIHtcbiAgICAiK3BlLm5hbWUrIjogIitwZS5uYW1lKyIgXG59XG59KSk7XG4ifSh7bmFtZTpwZS5uYW1lLHJ1bGVzOnBlLnJ1bGVzfSl9ZnVuY3Rpb24gaDgoKXtjb25zb2xlLndhcm4oIlRoZSBjbGVhckNhY2hlIGZ1bmN0aW9uIHdhcyAnc29mdCcgcmVtb3ZlZCBmcm9tIHRo'@; put 'ZSBDaGV2cm90YWluIEFQSS5cblx0IEl0IHBlcmZvcm1zIG5vIGFjdGlvbiBvdGhlciB0aGFuIHByaW50aW5nIHRoaXMgbWVzc2FnZS5cblx0IFBsZWFzZSBhdm9pZCB1c2luZyBpdCBhcyBpdCB3aWxsIGJlIGNvbXBsZXRlbHkgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlIil9fSwzMjQ3KGZlLGos'@; put 'aCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjcwNTQpLkJ1ZmZlcixjPWgoNzA0NSkuVHJhbnNmb3JtLHM9aCg3ODQ1NCkuSSxBPWgoNzE5OTMpLHY9aCg0MTA5MCk7ZnVuY3Rpb24gQyh3KXtjLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT0ic3RyaW5nIj09dHlwZW9mIHcsdGhpcy5oYXNoTW9k'@; put 'ZT90aGlzW3ddPXRoaXMuX2ZpbmFsT3JEaWdlc3Q6dGhpcy5maW5hbD10aGlzLl9maW5hbE9yRGlnZXN0LHRoaXMuX2ZpbmFsJiYodGhpcy5fX2ZpbmFsPXRoaXMuX2ZpbmFsLHRoaXMuX2ZpbmFsPW51bGwpLHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9lbmNvZGluZz1udWxsfUEoQyxjKSxD'@; put 'LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odyxTLEwpe3ZhciBSPXYodyxTKSx4PXRoaXMuX3VwZGF0ZShSKTtyZXR1cm4gdGhpcy5oYXNoTW9kZT90aGlzOihMJiYoeD10aGlzLl90b1N0cmluZyh4LEwpKSx4KX0sQy5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oKXt9LEMu'@; put 'cHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sQy5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIHNldCBhdXRo'@; put 'IHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxDLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LEMucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odyxTLEwpe3ZhciBSO3Ry'@; put 'eXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZSh3KTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKHcpKX1jYXRjaCh4KXtSPXh9ZmluYWxseXtMKFIpfX0sQy5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKHcpe3ZhciBTO3RyeXt0aGlzLnB1c2godGhpcy5fX2ZpbmFsKCkpfWNhdGNoKEwpe1M9'@; put 'TH13KFMpfSxDLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdD1mdW5jdGlvbih3KXt2YXIgUz10aGlzLl9fZmluYWwoKXx8eS5hbGxvYygwKTtyZXR1cm4gdyYmKFM9dGhpcy5fdG9TdHJpbmcoUyx3LCEwKSksU30sQy5wcm90b3R5cGUuX3RvU3RyaW5nPWZ1bmN0aW9uKHcsUyxMKXtpZih0aGlz'@; put 'Ll9kZWNvZGVyfHwodGhpcy5fZGVjb2Rlcj1uZXcgcyhTKSx0aGlzLl9lbmNvZGluZz1TKSx0aGlzLl9lbmNvZGluZyE9PVMpdGhyb3cgbmV3IEVycm9yKCJjYW5cdTIwMTl0IHN3aXRjaCBlbmNvZGluZ3MiKTt2YXIgUj10aGlzLl9kZWNvZGVyLndyaXRlKHcpO3JldHVybiBMJiYoUis9dGhp'@; put 'cy5fZGVjb2Rlci5lbmQoKSksUn0sZmUuZXhwb3J0cz1DfSwyNzYzNyhmZSxqKXtmdW5jdGlvbiBWKE4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTil9ai5pc0FycmF5PWZ1bmN0aW9uIGgoTil7cmV0dXJuIEFycmF5LmlzQXJyYXk/QXJyYXkuaXNBcnJheShOKToi'@; put 'W29iamVjdCBBcnJheV0iPT09VihOKX0sai5pc0Jvb2xlYW49ZnVuY3Rpb24geShOKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBOfSxqLmlzTnVsbD1mdW5jdGlvbiBjKE4pe3JldHVybiBudWxsPT09Tn0sai5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbiBzKE4pe3JldHVybiBudWxsPT1O'@; put 'fSxqLmlzTnVtYmVyPWZ1bmN0aW9uIEEoTil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBOfSxqLmlzU3RyaW5nPWZ1bmN0aW9uIHYoTil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBOfSxqLmlzU3ltYm9sPWZ1bmN0aW9uIEMoTil7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBOfSxqLmlzVW5kZWZp'@; put 'bmVkPWZ1bmN0aW9uIHcoTil7cmV0dXJuIHZvaWQgMD09PU59LGouaXNSZWdFeHA9ZnVuY3Rpb24gUyhOKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PVYoTil9LGouaXNPYmplY3Q9ZnVuY3Rpb24gTChOKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIE4mJm51bGwhPT1OfSxqLmlzRGF0ZT1m'@; put 'dW5jdGlvbiBSKE4pe3JldHVybiJbb2JqZWN0IERhdGVdIj09PVYoTil9LGouaXNFcnJvcj1mdW5jdGlvbiB4KE4pe3JldHVybiJbb2JqZWN0IEVycm9yXSI9PT1WKE4pfHxOIGluc3RhbmNlb2YgRXJyb3J9LGouaXNGdW5jdGlvbj1mdW5jdGlvbiBVKE4pe3JldHVybiJmdW5jdGlvbiI9PXR5'@; put 'cGVvZiBOfSxqLmlzUHJpbWl0aXZlPWZ1bmN0aW9uIEgoTil7cmV0dXJuIG51bGw9PT1OfHwiYm9vbGVhbiI9PXR5cGVvZiBOfHwibnVtYmVyIj09dHlwZW9mIE58fCJzdHJpbmciPT10eXBlb2YgTnx8InN5bWJvbCI9PXR5cGVvZiBOfHx0eXBlb2YgTj4idSJ9LGouaXNCdWZmZXI9QnVmZmVy'@; put 'LmlzQnVmZmVyfSw2NzIxMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDcxOTkzKSxjPWgoMzQ3MjUpLHM9aCgzNjYzNiksQT1oKDI1NDQzKSx2PWgoMzI0Nyk7ZnVuY3Rpb24gQyh3KXt2LmNhbGwodGhpcywiZGlnZXN0IiksdGhpcy5faGFzaD13fXkoQyx2KSxDLnByb3RvdHlwZS5f'@; put 'dXBkYXRlPWZ1bmN0aW9uKHcpe3RoaXMuX2hhc2gudXBkYXRlKHcpfSxDLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzaC5kaWdlc3QoKX0sZmUuZXhwb3J0cz1mdW5jdGlvbihTKXtyZXR1cm4ibWQ1Ij09PShTPVMudG9Mb3dlckNhc2UoKSk/bmV3IGM6InJt'@; put 'ZDE2MCI9PT1TfHwicmlwZW1kMTYwIj09PVM/bmV3IHM6bmV3IEMoQShTKSl9fSw4MzQwNyhmZSxqLGgpe3ZhciB5PWgoMzQ3MjUpO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oYyl7cmV0dXJuKG5ldyB5KS51cGRhdGUoYykuZGlnZXN0KCl9fSw1NjQzMihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'eT1oKDcxOTkzKSxjPWgoOTA1MDkpLHM9aCgzMjQ3KSxBPWgoMjcwNTQpLkJ1ZmZlcix2PWgoODM0MDcpLEM9aCgzNjYzNiksdz1oKDI1NDQzKSxTPUEuYWxsb2MoMTI4KTtmdW5jdGlvbiBMKFIseCl7cy5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgeCYmKHg9QS5mcm9t'@; put 'KHgpKTt2YXIgVT0ic2hhNTEyIj09PVJ8fCJzaGEzODQiPT09Uj8xMjg6NjQ7dGhpcy5fYWxnPVIsdGhpcy5fa2V5PXgseC5sZW5ndGg+VT94PSgicm1kMTYwIj09PVI/bmV3IEM6dyhSKSkudXBkYXRlKHgpLmRpZ2VzdCgpOngubGVuZ3RoPFUmJih4PUEuY29uY2F0KFt4LFNdLFUpKTtmb3Io'@; put 'dmFyIFY9dGhpcy5faXBhZD1BLmFsbG9jVW5zYWZlKFUpLE49dGhpcy5fb3BhZD1BLmFsbG9jVW5zYWZlKFUpLHo9MDt6PFU7eisrKVZbel09NTReeFt6XSxOW3pdPTkyXnhbel07dGhpcy5faGFzaD0icm1kMTYwIj09PVI/bmV3IEM6dyhSKSx0aGlzLl9oYXNoLnVwZGF0ZShWKX15KEwscyks'@; put 'TC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihSKXt0aGlzLl9oYXNoLnVwZGF0ZShSKX0sTC5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIFI9dGhpcy5faGFzaC5kaWdlc3QoKTtyZXR1cm4oInJtZDE2MCI9PT10aGlzLl9hbGc/bmV3IEM6dyh0aGlzLl9hbGcpKS51cGRhdGUo'@; put 'dGhpcy5fb3BhZCkudXBkYXRlKFIpLmRpZ2VzdCgpfSxmZS5leHBvcnRzPWZ1bmN0aW9uKHgsVSl7cmV0dXJuInJtZDE2MCI9PT0oeD14LnRvTG93ZXJDYXNlKCkpfHwicmlwZW1kMTYwIj09PXg/bmV3IEwoInJtZDE2MCIsVSk6Im1kNSI9PT14P25ldyBjKHYsVSk6bmV3IEwoeCxVKX19LDkw'@; put 'NTA5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNzE5OTMpLGM9aCgyNzA1NCkuQnVmZmVyLHM9aCgzMjQ3KSxBPWMuYWxsb2MoMTI4KSx2PTY0O2Z1bmN0aW9uIEModyxTKXtzLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBTJiYoUz1jLmZyb20oUykpLHRoaXMu'@; put 'X2FsZz13LHRoaXMuX2tleT1TLFMubGVuZ3RoPnY/Uz13KFMpOlMubGVuZ3RoPHYmJihTPWMuY29uY2F0KFtTLEFdLHYpKTtmb3IodmFyIEw9dGhpcy5faXBhZD1jLmFsbG9jVW5zYWZlKHYpLFI9dGhpcy5fb3BhZD1jLmFsbG9jVW5zYWZlKHYpLHg9MDt4PHY7eCsrKUxbeF09NTReU1t4XSxS'@; put 'W3hdPTkyXlNbeF07dGhpcy5faGFzaD1bTF19eShDLHMpLEMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odyl7dGhpcy5faGFzaC5wdXNoKHcpfSxDLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgdz10aGlzLl9hbGcoYy5jb25jYXQodGhpcy5faGFzaCkpO3JldHVybiB0aGlz'@; put 'Ll9hbGcoYy5jb25jYXQoW3RoaXMuX29wYWQsd10pKX0sZmUuZXhwb3J0cz1DfSwxNzY1NihmZSxqLGgpe3ZhciB5O2ZlLmV4cG9ydHM9KHk9eXx8ZnVuY3Rpb24oYyl7dmFyIEE7aWYodHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5jcnlwdG8mJihBPXdpbmRvdy5jcnlwdG8pLHR5cGVvZiBz'@; put 'ZWxmPCJ1IiYmc2VsZi5jcnlwdG8mJihBPXNlbGYuY3J5cHRvKSx0eXBlb2YgZ2xvYmFsVGhpczwidSImJmdsb2JhbFRoaXMuY3J5cHRvJiYoQT1nbG9iYWxUaGlzLmNyeXB0byksIUEmJnR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubXNDcnlwdG8mJihBPXdpbmRvdy5tc0NyeXB0byksIUEm'@; put 'JnR5cGVvZiBnbG9iYWw8InUiJiZnbG9iYWwuY3J5cHRvJiYoQT1nbG9iYWwuY3J5cHRvKSwhQSl0cnl7QT1oKDI4MjY3KX1jYXRjaHt9dmFyIHY9ZnVuY3Rpb24oKXtpZihBKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQS5nZXRSYW5kb21WYWx1ZXMpdHJ5e3JldHVybiBBLmdldFJhbmRvbVZh'@; put 'bHVlcyhuZXcgVWludDMyQXJyYXkoMSkpWzBdfWNhdGNoe31pZigiZnVuY3Rpb24iPT10eXBlb2YgQS5yYW5kb21CeXRlcyl0cnl7cmV0dXJuIEEucmFuZG9tQnl0ZXMoNCkucmVhZEludDMyTEUoKX1jYXRjaHt9fXRocm93IG5ldyBFcnJvcigiTmF0aXZlIGNyeXB0byBtb2R1bGUgY291bGQg'@; put 'bm90IGJlIHVzZWQgdG8gZ2V0IHNlY3VyZSByYW5kb20gbnVtYmVyLiIpfSxDPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe31yZXR1cm4gZnVuY3Rpb24oVyl7dmFyIHE7cmV0dXJuIEYucHJvdG90eXBlPVcscT1uZXcgRixGLnByb3RvdHlwZT1udWxsLHF9fSgpLHc9'@; put 'e30sUz13LmxpYj17fSxMPVMuQmFzZT1mdW5jdGlvbigpe3JldHVybntleHRlbmQ6ZnVuY3Rpb24oRil7dmFyIFc9Qyh0aGlzKTtyZXR1cm4gRiYmVy5taXhJbihGKSwoIVcuaGFzT3duUHJvcGVydHkoImluaXQiKXx8dGhpcy5pbml0PT09Vy5pbml0KSYmKFcuaW5pdD1mdW5jdGlvbigpe1cu'@; put 'JHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksVy5pbml0LnByb3RvdHlwZT1XLFcuJHN1cGVyPXRoaXMsV30sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIEY9dGhpcy5leHRlbmQoKTtyZXR1cm4gRi5pbml0LmFwcGx5KEYsYXJndW1lbnRzKSxGfSxpbml0OmZ1bmN0aW9uKCl7fSxt'@; put 'aXhJbjpmdW5jdGlvbihGKXtmb3IodmFyIFcgaW4gRilGLmhhc093blByb3BlcnR5KFcpJiYodGhpc1tXXT1GW1ddKTtGLmhhc093blByb3BlcnR5KCJ0b1N0cmluZyIpJiYodGhpcy50b1N0cmluZz1GLnRvU3RyaW5nKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0LnByb3Rv'@; put 'dHlwZS5leHRlbmQodGhpcyl9fX0oKSxSPVMuV29yZEFycmF5PUwuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKEYsVyl7Rj10aGlzLndvcmRzPUZ8fFtdLHRoaXMuc2lnQnl0ZXM9bnVsbCE9Vz9XOjQqRi5sZW5ndGh9LHRvU3RyaW5nOmZ1bmN0aW9uKEYpe3JldHVybihGfHxVKS5zdHJpbmdpZnko'@; put 'dGhpcyl9LGNvbmNhdDpmdW5jdGlvbihGKXt2YXIgVz10aGlzLndvcmRzLHE9Ri53b3JkcyxyZT10aGlzLnNpZ0J5dGVzLG1lPUYuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLHJlJTQpZm9yKHZhciBDZT0wO0NlPG1lO0NlKyspV1tyZStDZT4+PjJdfD0ocVtDZT4+PjJdPj4+MjQtQ2UlNCo4'@; put 'JjI1NSk8PDI0LShyZStDZSklNCo4O2Vsc2UgZm9yKHZhciBrZT0wO2tlPG1lO2tlKz00KVdbcmUra2U+Pj4yXT1xW2tlPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPW1lLHRoaXN9LGNsYW1wOmZ1bmN0aW9uKCl7dmFyIEY9dGhpcy53b3JkcyxXPXRoaXMuc2lnQnl0ZXM7RltXPj4+Ml0m'@; put 'PTQyOTQ5NjcyOTU8PDMyLVclNCo4LEYubGVuZ3RoPWMuY2VpbChXLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBGPUwuY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gRi53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLEZ9LHJhbmRvbTpmdW5jdGlvbihGKXtmb3IodmFyIFc9W10scT0wO3E8Rjtx'@; put 'Kz00KVcucHVzaCh2KCkpO3JldHVybiBuZXcgUi5pbml0KFcsRil9fSkseD13LmVuYz17fSxVPXguSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24oRil7Zm9yKHZhciBXPUYud29yZHMscT1GLnNpZ0J5dGVzLHJlPVtdLG1lPTA7bWU8cTttZSsrKXt2YXIgQ2U9V1ttZT4+PjJdPj4+MjQtbWUlNCo4'@; put 'JjI1NTtyZS5wdXNoKChDZT4+PjQpLnRvU3RyaW5nKDE2KSkscmUucHVzaCgoMTUmQ2UpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHJlLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihGKXtmb3IodmFyIFc9Ri5sZW5ndGgscT1bXSxyZT0wO3JlPFc7cmUrPTIpcVtyZT4+PjNdfD1wYXJzZUludChG'@; put 'LnN1YnN0cihyZSwyKSwxNik8PDI0LXJlJTgqNDtyZXR1cm4gbmV3IFIuaW5pdChxLFcvMil9fSxIPXguTGF0aW4xPXtzdHJpbmdpZnk6ZnVuY3Rpb24oRil7Zm9yKHZhciBXPUYud29yZHMscT1GLnNpZ0J5dGVzLHJlPVtdLG1lPTA7bWU8cTttZSsrKXJlLnB1c2goU3RyaW5nLmZyb21DaGFy'@; put 'Q29kZShXW21lPj4+Ml0+Pj4yNC1tZSU0KjgmMjU1KSk7cmV0dXJuIHJlLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihGKXtmb3IodmFyIFc9Ri5sZW5ndGgscT1bXSxyZT0wO3JlPFc7cmUrKylxW3JlPj4+Ml18PSgyNTUmRi5jaGFyQ29kZUF0KHJlKSk8PDI0LXJlJTQqODtyZXR1cm4gbmV3'@; put 'IFIuaW5pdChxLFcpfX0sVj14LlV0Zjg9e3N0cmluZ2lmeTpmdW5jdGlvbihGKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoSC5zdHJpbmdpZnkoRikpKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBVVEYtOCBkYXRhIil9fSxwYXJzZTpmdW5jdGlvbihG'@; put 'KXtyZXR1cm4gSC5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoRikpKX19LE49Uy5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPUwuZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IFIuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24o'@; put 'Ril7InN0cmluZyI9PXR5cGVvZiBGJiYoRj1WLnBhcnNlKEYpKSx0aGlzLl9kYXRhLmNvbmNhdChGKSx0aGlzLl9uRGF0YUJ5dGVzKz1GLnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihGKXt2YXIgVyxxPXRoaXMuX2RhdGEscmU9cS53b3JkcyxtZT1xLnNpZ0J5dGVzLENlPXRoaXMuYmxv'@; put 'Y2tTaXplLGtlPW1lLyg0KkNlKSxxZT0oa2U9Rj9jLmNlaWwoa2UpOmMubWF4KCgwfGtlKS10aGlzLl9taW5CdWZmZXJTaXplLDApKSpDZSxYPWMubWluKDQqcWUsbWUpO2lmKHFlKXtmb3IodmFyIGY9MDtmPHFlO2YrPUNlKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHJlLGYpO1c9cmUuc3BsaWNl'@; put 'KDAscWUpLHEuc2lnQnl0ZXMtPVh9cmV0dXJuIG5ldyBSLmluaXQoVyxYKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgRj1MLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIEYuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLEZ9LF9taW5CdWZmZXJTaXplOjB9KSxZPShTLkhhc2hlcj1OLmV4dGVuZCh7'@; put 'Y2ZnOkwuZXh0ZW5kKCksaW5pdDpmdW5jdGlvbihGKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoRiksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe04ucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5fYXBwZW5k'@; put 'KEYpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbihGKXtyZXR1cm4gRiYmdGhpcy5fYXBwZW5kKEYpLHRoaXMuX2RvRmluYWxpemUoKX0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oRil7cmV0dXJuIGZ1bmN0aW9uKFcscSl7cmV0dXJuIG5ldyBG'@; put 'LmluaXQocSkuZmluYWxpemUoVyl9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbihGKXtyZXR1cm4gZnVuY3Rpb24oVyxxKXtyZXR1cm4gbmV3IFkuSE1BQy5pbml0KEYscSkuZmluYWxpemUoVyl9fX0pLHcuYWxnbz17fSk7cmV0dXJuIHd9KE1hdGgpLHkpfSw3ODg1NShmZSxqLGgpe3Zh'@; put 'ciB5O2ZlLmV4cG9ydHM9KHk9aCgxNzY1NiksZnVuY3Rpb24oYyl7dmFyIHM9eSxBPXMubGliLHY9QS5Xb3JkQXJyYXksQz1BLkhhc2hlcix3PXMuYWxnbyxTPVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgVj0wO1Y8NjQ7VisrKVNbVl09NDI5NDk2NzI5NipjLmFicyhjLnNpbihWKzEpKXwwfSgp'@; put 'O3ZhciBMPXcuTUQ1PUMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IHYuaW5pdChbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4XSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbihWLE4pe2Zvcih2YXIgej0wO3o8MTY7eisrKXt2'@; put 'YXIgWT1OK3osRj1WW1ldO1ZbWV09MTY3MTE5MzUmKEY8PDh8Rj4+PjI0KXw0Mjc4MjU1MzYwJihGPDwyNHxGPj4+OCl9dmFyIFc9dGhpcy5faGFzaC53b3JkcyxxPVZbTiswXSxyZT1WW04rMV0sbWU9VltOKzJdLENlPVZbTiszXSxJZT1WW04rNF0sa2U9VltOKzVdLHFlPVZbTis2XSxYPVZb'@; put 'Tis3XSxmPVZbTis4XSxiPVZbTis5XSxrPVZbTisxMF0sTT1WW04rMTFdLEI9VltOKzEyXSxLPVZbTisxM10sRz1WW04rMTRdLEQ9VltOKzE1XSxwPVdbMF0sST1XWzFdLHVlPVdbMl0sbmU9V1szXTtwPVIocCxJLHVlLG5lLHEsNyxTWzBdKSxuZT1SKG5lLHAsSSx1ZSxyZSwxMixTWzFdKSx1'@; put 'ZT1SKHVlLG5lLHAsSSxtZSwxNyxTWzJdKSxJPVIoSSx1ZSxuZSxwLENlLDIyLFNbM10pLHA9UihwLEksdWUsbmUsSWUsNyxTWzRdKSxuZT1SKG5lLHAsSSx1ZSxrZSwxMixTWzVdKSx1ZT1SKHVlLG5lLHAsSSxxZSwxNyxTWzZdKSxJPVIoSSx1ZSxuZSxwLFgsMjIsU1s3XSkscD1SKHAsSSx1'@; put 'ZSxuZSxmLDcsU1s4XSksbmU9UihuZSxwLEksdWUsYiwxMixTWzldKSx1ZT1SKHVlLG5lLHAsSSxrLDE3LFNbMTBdKSxJPVIoSSx1ZSxuZSxwLE0sMjIsU1sxMV0pLHA9UihwLEksdWUsbmUsQiw3LFNbMTJdKSxuZT1SKG5lLHAsSSx1ZSxLLDEyLFNbMTNdKSx1ZT1SKHVlLG5lLHAsSSxHLDE3'@; put 'LFNbMTRdKSxwPXgocCxJPVIoSSx1ZSxuZSxwLEQsMjIsU1sxNV0pLHVlLG5lLHJlLDUsU1sxNl0pLG5lPXgobmUscCxJLHVlLHFlLDksU1sxN10pLHVlPXgodWUsbmUscCxJLE0sMTQsU1sxOF0pLEk9eChJLHVlLG5lLHAscSwyMCxTWzE5XSkscD14KHAsSSx1ZSxuZSxrZSw1LFNbMjBdKSxu'@; put 'ZT14KG5lLHAsSSx1ZSxrLDksU1syMV0pLHVlPXgodWUsbmUscCxJLEQsMTQsU1syMl0pLEk9eChJLHVlLG5lLHAsSWUsMjAsU1syM10pLHA9eChwLEksdWUsbmUsYiw1LFNbMjRdKSxuZT14KG5lLHAsSSx1ZSxHLDksU1syNV0pLHVlPXgodWUsbmUscCxJLENlLDE0LFNbMjZdKSxJPXgoSSx1'@; put 'ZSxuZSxwLGYsMjAsU1syN10pLHA9eChwLEksdWUsbmUsSyw1LFNbMjhdKSxuZT14KG5lLHAsSSx1ZSxtZSw5LFNbMjldKSx1ZT14KHVlLG5lLHAsSSxYLDE0LFNbMzBdKSxwPVUocCxJPXgoSSx1ZSxuZSxwLEIsMjAsU1szMV0pLHVlLG5lLGtlLDQsU1szMl0pLG5lPVUobmUscCxJLHVlLGYs'@; put 'MTEsU1szM10pLHVlPVUodWUsbmUscCxJLE0sMTYsU1szNF0pLEk9VShJLHVlLG5lLHAsRywyMyxTWzM1XSkscD1VKHAsSSx1ZSxuZSxyZSw0LFNbMzZdKSxuZT1VKG5lLHAsSSx1ZSxJZSwxMSxTWzM3XSksdWU9VSh1ZSxuZSxwLEksWCwxNixTWzM4XSksST1VKEksdWUsbmUscCxrLDIzLFNb'@; put 'MzldKSxwPVUocCxJLHVlLG5lLEssNCxTWzQwXSksbmU9VShuZSxwLEksdWUscSwxMSxTWzQxXSksdWU9VSh1ZSxuZSxwLEksQ2UsMTYsU1s0Ml0pLEk9VShJLHVlLG5lLHAscWUsMjMsU1s0M10pLHA9VShwLEksdWUsbmUsYiw0LFNbNDRdKSxuZT1VKG5lLHAsSSx1ZSxCLDExLFNbNDVdKSx1'@; put 'ZT1VKHVlLG5lLHAsSSxELDE2LFNbNDZdKSxwPUgocCxJPVUoSSx1ZSxuZSxwLG1lLDIzLFNbNDddKSx1ZSxuZSxxLDYsU1s0OF0pLG5lPUgobmUscCxJLHVlLFgsMTAsU1s0OV0pLHVlPUgodWUsbmUscCxJLEcsMTUsU1s1MF0pLEk9SChJLHVlLG5lLHAsa2UsMjEsU1s1MV0pLHA9SChwLEks'@; put 'dWUsbmUsQiw2LFNbNTJdKSxuZT1IKG5lLHAsSSx1ZSxDZSwxMCxTWzUzXSksdWU9SCh1ZSxuZSxwLEksaywxNSxTWzU0XSksST1IKEksdWUsbmUscCxyZSwyMSxTWzU1XSkscD1IKHAsSSx1ZSxuZSxmLDYsU1s1Nl0pLG5lPUgobmUscCxJLHVlLEQsMTAsU1s1N10pLHVlPUgodWUsbmUscCxJ'@; put 'LHFlLDE1LFNbNThdKSxJPUgoSSx1ZSxuZSxwLEssMjEsU1s1OV0pLHA9SChwLEksdWUsbmUsSWUsNixTWzYwXSksbmU9SChuZSxwLEksdWUsTSwxMCxTWzYxXSksdWU9SCh1ZSxuZSxwLEksbWUsMTUsU1s2Ml0pLEk9SChJLHVlLG5lLHAsYiwyMSxTWzYzXSksV1swXT1XWzBdK3B8MCxXWzFd'@; put 'PVdbMV0rSXwwLFdbMl09V1syXSt1ZXwwLFdbM109V1szXStuZXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBWPXRoaXMuX2RhdGEsTj1WLndvcmRzLHo9OCp0aGlzLl9uRGF0YUJ5dGVzLFk9OCpWLnNpZ0J5dGVzO05bWT4+PjVdfD0xMjg8PDI0LVklMzI7dmFyIEY9Yy5mbG9vcih6'@; put 'LzQyOTQ5NjcyOTYpLFc9ejtOWzE1KyhZKzY0Pj4+OTw8NCldPTE2NzExOTM1JihGPDw4fEY+Pj4yNCl8NDI3ODI1NTM2MCYoRjw8MjR8Rj4+PjgpLE5bMTQrKFkrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKFc8PDh8Vz4+PjI0KXw0Mjc4MjU1MzYwJihXPDwyNHxXPj4+OCksVi5zaWdCeXRlcz00'@; put 'KihOLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBxPXRoaXMuX2hhc2gscmU9cS53b3JkcyxtZT0wO21lPDQ7bWUrKyl7dmFyIENlPXJlW21lXTtyZVttZV09MTY3MTE5MzUmKENlPDw4fENlPj4+MjQpfDQyNzgyNTUzNjAmKENlPDwyNHxDZT4+PjgpfXJldHVybiBxfSxjbG9u'@; put 'ZTpmdW5jdGlvbigpe3ZhciBWPUMuY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gVi5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksVn19KTtmdW5jdGlvbiBSKFYsTix6LFksRixXLHEpe3ZhciByZT1WKyhOJnp8fk4mWSkrRitxO3JldHVybihyZTw8V3xyZT4+PjMyLVcpK059ZnVuY3Rpb24geChW'@; put 'LE4seixZLEYsVyxxKXt2YXIgcmU9VisoTiZZfHomflkpK0YrcTtyZXR1cm4ocmU8PFd8cmU+Pj4zMi1XKStOfWZ1bmN0aW9uIFUoVixOLHosWSxGLFcscSl7dmFyIHJlPVYrKE5eel5ZKStGK3E7cmV0dXJuKHJlPDxXfHJlPj4+MzItVykrTn1mdW5jdGlvbiBIKFYsTix6LFksRixXLHEpe3Zh'@; put 'ciByZT1WKyh6XihOfH5ZKSkrRitxO3JldHVybihyZTw8V3xyZT4+PjMyLVcpK059cy5NRDU9Qy5fY3JlYXRlSGVscGVyKEwpLHMuSG1hY01ENT1DLl9jcmVhdGVIbWFjSGVscGVyKEwpfShNYXRoKSx5Lk1ENSl9LDkyNzM2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNDU3MCksYz1o'@; put 'KDU4NDEzKSxzPWgoNDY3NTgpLEE9aCg4Mzc5OCk7ZmUuZXhwb3J0cz1mdW5jdGlvbihDLHcsUyl7aWYoIUN8fCJvYmplY3QiIT10eXBlb2YgQyYmImZ1bmN0aW9uIiE9dHlwZW9mIEMpdGhyb3cgbmV3IHMoImBvYmpgIG11c3QgYmUgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb25gIik7aWYoInN0'@; put 'cmluZyIhPXR5cGVvZiB3JiYic3ltYm9sIiE9dHlwZW9mIHcpdGhyb3cgbmV3IHMoImBwcm9wZXJ0eWAgbXVzdCBiZSBhIHN0cmluZyBvciBhIHN5bWJvbGAiKTtpZihhcmd1bWVudHMubGVuZ3RoPjMmJiJib29sZWFuIiE9dHlwZW9mIGFyZ3VtZW50c1szXSYmbnVsbCE9PWFyZ3VtZW50c1sz'@; put 'XSl0aHJvdyBuZXcgcygiYG5vbkVudW1lcmFibGVgLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIGJvb2xlYW4gb3IgbnVsbCIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+NCYmImJvb2xlYW4iIT10eXBlb2YgYXJndW1lbnRzWzRdJiZudWxsIT09YXJndW1lbnRzWzRdKXRocm93IG5ldyBzKCJgbm9u'@; put 'V3JpdGFibGVgLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIGJvb2xlYW4gb3IgbnVsbCIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+NSYmImJvb2xlYW4iIT10eXBlb2YgYXJndW1lbnRzWzVdJiZudWxsIT09YXJndW1lbnRzWzVdKXRocm93IG5ldyBzKCJgbm9uQ29uZmlndXJhYmxlYCwgaWYgcHJv'@; put 'dmlkZWQsIG11c3QgYmUgYSBib29sZWFuIG9yIG51bGwiKTtpZihhcmd1bWVudHMubGVuZ3RoPjYmJiJib29sZWFuIiE9dHlwZW9mIGFyZ3VtZW50c1s2XSl0aHJvdyBuZXcgcygiYGxvb3NlYCwgaWYgcHJvdmlkZWQsIG11c3QgYmUgYSBib29sZWFuIik7dmFyIEw9YXJndW1lbnRzLmxlbmd0'@; put 'aD4zP2FyZ3VtZW50c1szXTpudWxsLFI9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTpudWxsLHg9YXJndW1lbnRzLmxlbmd0aD41P2FyZ3VtZW50c1s1XTpudWxsLFU9YXJndW1lbnRzLmxlbmd0aD42JiZhcmd1bWVudHNbNl0sSD0hIUEmJkEoQyx3KTtpZih5KXkoQyx3LHtjb25m'@; put 'aWd1cmFibGU6bnVsbD09PXgmJkg/SC5jb25maWd1cmFibGU6IXgsZW51bWVyYWJsZTpudWxsPT09TCYmSD9ILmVudW1lcmFibGU6IUwsdmFsdWU6Uyx3cml0YWJsZTpudWxsPT09UiYmSD9ILndyaXRhYmxlOiFSfSk7ZWxzZXtpZighVSYmKEx8fFJ8fHgpKXRocm93IG5ldyBjKCJUaGlzIGVu'@; put 'dmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgZGVmaW5pbmcgYSBwcm9wZXJ0eSBhcyBub24tY29uZmlndXJhYmxlLCBub24td3JpdGFibGUsIG9yIG5vbi1lbnVtZXJhYmxlLiIpO0Nbd109U319fSw3MTU0OShmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtqLnV0aWxzPWgoODU2NzEpLGouQ2lwaGVy'@; put 'PWgoMTAyMTkpLGouREVTPWgoNjQxNjYpLGouQ0JDPWgoODg4MDApLGouRURFPWgoNjIxMjIpfSw4ODgwMChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDM5MjEwKSxjPWgoNzE5OTMpLHM9e307ZnVuY3Rpb24gQShDKXt5LmVxdWFsKEMubGVuZ3RoLDgsIkludmFsaWQgSVYgbGVuZ3Ro'@; put 'IiksdGhpcy5pdj1uZXcgQXJyYXkoOCk7Zm9yKHZhciB3PTA7dzx0aGlzLml2Lmxlbmd0aDt3KyspdGhpcy5pdlt3XT1DW3ddfWouaW5zdGFudGlhdGU9ZnVuY3Rpb24gdihDKXtmdW5jdGlvbiB3KHgpe0MuY2FsbCh0aGlzLHgpLHRoaXMuX2NiY0luaXQoKX1jKHcsQyk7Zm9yKHZhciBTPU9i'@; put 'amVjdC5rZXlzKHMpLEw9MDtMPFMubGVuZ3RoO0wrKyl7dmFyIFI9U1tMXTt3LnByb3RvdHlwZVtSXT1zW1JdfXJldHVybiB3LmNyZWF0ZT1mdW5jdGlvbihVKXtyZXR1cm4gbmV3IHcoVSl9LHd9LHMuX2NiY0luaXQ9ZnVuY3Rpb24oKXt2YXIgdz1uZXcgQSh0aGlzLm9wdGlvbnMuaXYpO3Ro'@; put 'aXMuX2NiY1N0YXRlPXd9LHMuX3VwZGF0ZT1mdW5jdGlvbih3LFMsTCxSKXt2YXIgVT10aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGUsSD10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2YXIgVj0wO1Y8dGhpcy5ibG9ja1NpemU7VisrKUhb'@; put 'Vl1ePXdbUytWXTtmb3IoVS5fdXBkYXRlLmNhbGwodGhpcyxILDAsTCxSKSxWPTA7Vjx0aGlzLmJsb2NrU2l6ZTtWKyspSFtWXT1MW1IrVl19ZWxzZXtmb3IoVS5fdXBkYXRlLmNhbGwodGhpcyx3LFMsTCxSKSxWPTA7Vjx0aGlzLmJsb2NrU2l6ZTtWKyspTFtSK1ZdXj1IW1ZdO2ZvcihWPTA7'@; put 'Vjx0aGlzLmJsb2NrU2l6ZTtWKyspSFtWXT13W1MrVl19fX0sMTAyMTkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgzOTIxMCk7ZnVuY3Rpb24gYyhzKXt0aGlzLm9wdGlvbnM9cyx0aGlzLnR5cGU9dGhpcy5vcHRpb25zLnR5cGUsdGhpcy5ibG9ja1NpemU9OCx0aGlzLl9pbml0KCks'@; put 'dGhpcy5idWZmZXI9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKSx0aGlzLmJ1ZmZlck9mZj0wLHRoaXMucGFkZGluZz0hMSE9PXMucGFkZGluZ31mZS5leHBvcnRzPWMsYy5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oKXt9LGMucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihBKXtyZXR1cm4g'@; put 'MD09PUEubGVuZ3RoP1tdOiJkZWNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl91cGRhdGVEZWNyeXB0KEEpOnRoaXMuX3VwZGF0ZUVuY3J5cHQoQSl9LGMucHJvdG90eXBlLl9idWZmZXI9ZnVuY3Rpb24oQSx2KXtmb3IodmFyIEM9TWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoLXRoaXMuYnVm'@; put 'ZmVyT2ZmLEEubGVuZ3RoLXYpLHc9MDt3PEM7dysrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmK3ddPUFbdit3XTtyZXR1cm4gdGhpcy5idWZmZXJPZmYrPUMsQ30sYy5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyPWZ1bmN0aW9uKEEsdil7cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZl'@; put 'ciwwLEEsdiksdGhpcy5idWZmZXJPZmY9MCx0aGlzLmJsb2NrU2l6ZX0sYy5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQ9ZnVuY3Rpb24oQSl7dmFyIHY9MCxDPTAsUz1uZXcgQXJyYXkoKCh0aGlzLmJ1ZmZlck9mZitBLmxlbmd0aCkvdGhpcy5ibG9ja1NpemV8MCkqdGhpcy5ibG9ja1NpemUp'@; put 'OzAhPT10aGlzLmJ1ZmZlck9mZiYmKHYrPXRoaXMuX2J1ZmZlcihBLHYpLHRoaXMuYnVmZmVyT2ZmPT09dGhpcy5idWZmZXIubGVuZ3RoJiYoQys9dGhpcy5fZmx1c2hCdWZmZXIoUyxDKSkpO2Zvcih2YXIgTD1BLmxlbmd0aC0oQS5sZW5ndGgtdikldGhpcy5ibG9ja1NpemU7djxMO3YrPXRo'@; put 'aXMuYmxvY2tTaXplKXRoaXMuX3VwZGF0ZShBLHYsUyxDKSxDKz10aGlzLmJsb2NrU2l6ZTtmb3IoO3Y8QS5sZW5ndGg7disrLHRoaXMuYnVmZmVyT2ZmKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdPUFbdl07cmV0dXJuIFN9LGMucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0PWZ1bmN0'@; put 'aW9uKEEpe2Zvcih2YXIgdj0wLEM9MCx3PU1hdGguY2VpbCgodGhpcy5idWZmZXJPZmYrQS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplKS0xLFM9bmV3IEFycmF5KHcqdGhpcy5ibG9ja1NpemUpO3c+MDt3LS0pdis9dGhpcy5fYnVmZmVyKEEsdiksQys9dGhpcy5fZmx1c2hCdWZmZXIoUyxDKTty'@; put 'ZXR1cm4gdis9dGhpcy5fYnVmZmVyKEEsdiksU30sYy5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oQSl7dmFyIHYsQztyZXR1cm4gQSYmKHY9dGhpcy51cGRhdGUoQSkpLEM9ImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2ZpbmFsRW5jcnlwdCgpOnRoaXMuX2ZpbmFsRGVjcnlwdCgpLHY/'@; put 'di5jb25jYXQoQyk6Q30sYy5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbihBLHYpe2lmKDA9PT12KXJldHVybiExO2Zvcig7djxBLmxlbmd0aDspQVt2KytdPTA7cmV0dXJuITB9LGMucHJvdG90eXBlLl9maW5hbEVuY3J5cHQ9ZnVuY3Rpb24oKXtpZighdGhpcy5fcGFkKHRoaXMuYnVmZmVyLHRo'@; put 'aXMuYnVmZmVyT2ZmKSlyZXR1cm5bXTt2YXIgQT1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxBLDApLEF9LGMucHJvdG90eXBlLl91bnBhZD1mdW5jdGlvbihBKXtyZXR1cm4gQX0sYy5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdD1m'@; put 'dW5jdGlvbigpe3kuZXF1YWwodGhpcy5idWZmZXJPZmYsdGhpcy5ibG9ja1NpemUsIk5vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Iik7dmFyIEE9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fZmx1c2hCdWZmZXIoQSwwKSx0aGlzLl91bnBhZChBKX19LDY0MTY2KGZl'@; put 'LGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMzkyMTApLGM9aCg3MTk5Mykscz1oKDg1NjcxKSxBPWgoMTAyMTkpO2Z1bmN0aW9uIHYoKXt0aGlzLnRtcD1uZXcgQXJyYXkoMiksdGhpcy5rZXlzPW51bGx9ZnVuY3Rpb24gQyhTKXtBLmNhbGwodGhpcyxTKTt2YXIgTD1uZXcgdjt0aGlzLl9k'@; put 'ZXNTdGF0ZT1MLHRoaXMuZGVyaXZlS2V5cyhMLFMua2V5KX1jKEMsQSksZmUuZXhwb3J0cz1DLEMuY3JlYXRlPWZ1bmN0aW9uKEwpe3JldHVybiBuZXcgQyhMKX07dmFyIHc9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO0MucHJvdG90eXBlLmRlcml2ZUtleXM9ZnVuY3Rpb24o'@; put 'TCxSKXtMLmtleXM9bmV3IEFycmF5KDMyKSx5LmVxdWFsKFIubGVuZ3RoLHRoaXMuYmxvY2tTaXplLCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgeD1zLnJlYWRVSW50MzJCRShSLDApLFU9cy5yZWFkVUludDMyQkUoUiw0KTtzLnBjMSh4LFUsTC50bXAsMCkseD1MLnRtcFswXSxVPUwudG1w'@; put 'WzFdO2Zvcih2YXIgSD0wO0g8TC5rZXlzLmxlbmd0aDtIKz0yKXt2YXIgVj13W0g+Pj4xXTt4PXMucjI4c2hsKHgsViksVT1zLnIyOHNobChVLFYpLHMucGMyKHgsVSxMLmtleXMsSCl9fSxDLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEwsUix4LFUpe3ZhciBIPXRoaXMuX2Rlc1N0YXRl'@; put 'LFY9cy5yZWFkVUludDMyQkUoTCxSKSxOPXMucmVhZFVJbnQzMkJFKEwsUis0KTtzLmlwKFYsTixILnRtcCwwKSxWPUgudG1wWzBdLE49SC50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQoSCxWLE4sSC50bXAsMCk6dGhpcy5fZGVjcnlwdChILFYsTixILnRtcCww'@; put 'KSxOPUgudG1wWzFdLHMud3JpdGVVSW50MzJCRSh4LFY9SC50bXBbMF0sVSkscy53cml0ZVVJbnQzMkJFKHgsTixVKzQpfSxDLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKEwsUil7aWYoITE9PT10aGlzLnBhZGRpbmcpcmV0dXJuITE7Zm9yKHZhciB4PUwubGVuZ3RoLVIsVT1SO1U8TC5sZW5n'@; put 'dGg7VSsrKUxbVV09eDtyZXR1cm4hMH0sQy5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKEwpe2lmKCExPT09dGhpcy5wYWRkaW5nKXJldHVybiBMO2Zvcih2YXIgUj1MW0wubGVuZ3RoLTFdLHg9TC5sZW5ndGgtUjt4PEwubGVuZ3RoO3grKyl5LmVxdWFsKExbeF0sUik7cmV0dXJuIEwuc2xp'@; put 'Y2UoMCxMLmxlbmd0aC1SKX0sQy5wcm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24oTCxSLHgsVSxIKXtmb3IodmFyIFY9UixOPXgsej0wO3o8TC5rZXlzLmxlbmd0aDt6Kz0yKXt2YXIgWT1MLmtleXNbel0sRj1MLmtleXNbeisxXTtzLmV4cGFuZChOLEwudG1wLDApO3ZhciBXPXMuc3Vic3Rp'@; put 'dHV0ZShZXj1MLnRtcFswXSxGXj1MLnRtcFsxXSkscmU9TjtOPShWXnMucGVybXV0ZShXKSk+Pj4wLFY9cmV9cy5yaXAoTixWLFUsSCl9LEMucHJvdG90eXBlLl9kZWNyeXB0PWZ1bmN0aW9uKEwsUix4LFUsSCl7Zm9yKHZhciBWPXgsTj1SLHo9TC5rZXlzLmxlbmd0aC0yO3o+PTA7ei09Mil7'@; put 'dmFyIFk9TC5rZXlzW3pdLEY9TC5rZXlzW3orMV07cy5leHBhbmQoVixMLnRtcCwwKTt2YXIgVz1zLnN1YnN0aXR1dGUoWV49TC50bXBbMF0sRl49TC50bXBbMV0pLHJlPVY7Vj0oTl5zLnBlcm11dGUoVykpPj4+MCxOPXJlfXMucmlwKFYsTixVLEgpfX0sNjIxMjIoZmUsaixoKXsidXNlIHN0'@; put 'cmljdCI7dmFyIHk9aCgzOTIxMCksYz1oKDcxOTkzKSxzPWgoMTAyMTkpLEE9aCg2NDE2Nik7ZnVuY3Rpb24gdih3LFMpe3kuZXF1YWwoUy5sZW5ndGgsMjQsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBMPVMuc2xpY2UoMCw4KSxSPVMuc2xpY2UoOCwxNikseD1TLnNsaWNlKDE2LDI0KTt0'@; put 'aGlzLmNpcGhlcnM9ImVuY3J5cHQiPT09dz9bQS5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpMfSksQS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpSfSksQS5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTp4fSldOltBLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Onh9KSxBLmNy'@; put 'ZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5OlJ9KSxBLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Okx9KV19ZnVuY3Rpb24gQyh3KXtzLmNhbGwodGhpcyx3KTt2YXIgUz1uZXcgdih0aGlzLnR5cGUsdGhpcy5vcHRpb25zLmtleSk7dGhpcy5fZWRlU3RhdGU9U31jKEMscyksZmUuZXhwb3J0'@; put 'cz1DLEMuY3JlYXRlPWZ1bmN0aW9uKFMpe3JldHVybiBuZXcgQyhTKX0sQy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihTLEwsUix4KXt2YXIgVT10aGlzLl9lZGVTdGF0ZTtVLmNpcGhlcnNbMF0uX3VwZGF0ZShTLEwsUix4KSxVLmNpcGhlcnNbMV0uX3VwZGF0ZShSLHgsUix4KSxVLmNp'@; put 'cGhlcnNbMl0uX3VwZGF0ZShSLHgsUix4KX0sQy5wcm90b3R5cGUuX3BhZD1BLnByb3RvdHlwZS5fcGFkLEMucHJvdG90eXBlLl91bnBhZD1BLnByb3RvdHlwZS5fdW5wYWR9LDg1NjcxKGZlLGopeyJ1c2Ugc3RyaWN0IjtqLnJlYWRVSW50MzJCRT1mdW5jdGlvbihBLHYpe3JldHVybihBWzAr'@; put 'dl08PDI0fEFbMSt2XTw8MTZ8QVsyK3ZdPDw4fEFbMyt2XSk+Pj4wfSxqLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oQSx2LEMpe0FbMCtDXT12Pj4+MjQsQVsxK0NdPXY+Pj4xNiYyNTUsQVsyK0NdPXY+Pj44JjI1NSxBWzMrQ109MjU1JnZ9LGouaXA9ZnVuY3Rpb24oQSx2LEMsdyl7Zm9yKHZh'@; put 'ciBTPTAsTD0wLFI9NjtSPj0wO1ItPTIpe2Zvcih2YXIgeD0wO3g8PTI0O3grPTgpUzw8PTEsU3w9dj4+PngrUiYxO2Zvcih4PTA7eDw9MjQ7eCs9OClTPDw9MSxTfD1BPj4+eCtSJjF9Zm9yKFI9NjtSPj0wO1ItPTIpe2Zvcih4PTE7eDw9MjU7eCs9OClMPDw9MSxMfD12Pj4+eCtSJjE7Zm9y'@; put 'KHg9MTt4PD0yNTt4Kz04KUw8PD0xLEx8PUE+Pj54K1ImMX1DW3crMF09Uz4+PjAsQ1t3KzFdPUw+Pj4wfSxqLnJpcD1mdW5jdGlvbihBLHYsQyx3KXtmb3IodmFyIFM9MCxMPTAsUj0wO1I8NDtSKyspZm9yKHZhciB4PTI0O3g+PTA7eC09OClTPDw9MSxTfD12Pj4+eCtSJjEsUzw8PTEsU3w9'@; put 'QT4+PngrUiYxO2ZvcihSPTQ7Ujw4O1IrKylmb3IoeD0yNDt4Pj0wO3gtPTgpTDw8PTEsTHw9dj4+PngrUiYxLEw8PD0xLEx8PUE+Pj54K1ImMTtDW3crMF09Uz4+PjAsQ1t3KzFdPUw+Pj4wfSxqLnBjMT1mdW5jdGlvbihBLHYsQyx3KXtmb3IodmFyIFM9MCxMPTAsUj03O1I+PTU7Ui0tKXtm'@; put 'b3IodmFyIHg9MDt4PD0yNDt4Kz04KVM8PD0xLFN8PXY+PngrUiYxO2Zvcih4PTA7eDw9MjQ7eCs9OClTPDw9MSxTfD1BPj54K1ImMX1mb3IoeD0wO3g8PTI0O3grPTgpUzw8PTEsU3w9dj4+eCtSJjE7Zm9yKFI9MTtSPD0zO1IrKyl7Zm9yKHg9MDt4PD0yNDt4Kz04KUw8PD0xLEx8PXY+Pngr'@; put 'UiYxO2Zvcih4PTA7eDw9MjQ7eCs9OClMPDw9MSxMfD1BPj54K1ImMX1mb3IoeD0wO3g8PTI0O3grPTgpTDw8PTEsTHw9QT4+eCtSJjE7Q1t3KzBdPVM+Pj4wLENbdysxXT1MPj4+MH0sai5yMjhzaGw9ZnVuY3Rpb24oQSx2KXtyZXR1cm4gQTw8diYyNjg0MzU0NTV8QT4+PjI4LXZ9O3ZhciBo'@; put 'PVsxNCwxMSwxNyw0LDI3LDIzLDI1LDAsMTMsMjIsNywxOCw1LDksMTYsMjQsMiwyMCwxMiwyMSwxLDgsMTUsMjYsMTUsNCwyNSwxOSw5LDEsMjYsMTYsNSwxMSwyMyw4LDEyLDcsMTcsMCwyMiwzLDEwLDE0LDYsMjAsMjcsMjRdO2oucGMyPWZ1bmN0aW9uKEEsdixDLHcpe2Zvcih2YXIgUz0w'@; put 'LEw9MCxSPWgubGVuZ3RoPj4+MSx4PTA7eDxSO3grKylTPDw9MSxTfD1BPj4+aFt4XSYxO2Zvcih4PVI7eDxoLmxlbmd0aDt4KyspTDw8PTEsTHw9dj4+PmhbeF0mMTtDW3crMF09Uz4+PjAsQ1t3KzFdPUw+Pj4wfSxqLmV4cGFuZD1mdW5jdGlvbihBLHYsQyl7dmFyIHc9MCxTPTA7dz0oMSZB'@; put 'KTw8NXxBPj4+Mjc7Zm9yKHZhciBMPTIzO0w+PTE1O0wtPTQpdzw8PTYsd3w9QT4+PkwmNjM7Zm9yKEw9MTE7TD49MztMLT00KVN8PUE+Pj5MJjYzLFM8PD02O1N8PSgzMSZBKTw8MXxBPj4+MzEsdltDKzBdPXc+Pj4wLHZbQysxXT1TPj4+MH07dmFyIHk9WzE0LDAsNCwxNSwxMyw3LDEsNCwy'@; put 'LDE0LDE1LDIsMTEsMTMsOCwxLDMsMTAsMTAsNiw2LDEyLDEyLDExLDUsOSw5LDUsMCwzLDcsOCw0LDE1LDEsMTIsMTQsOCw4LDIsMTMsNCw2LDksMiwxLDExLDcsMTUsNSwxMiwxMSw5LDMsNywxNCwzLDEwLDEwLDAsNSw2LDAsMTMsMTUsMywxLDEzLDgsNCwxNCw3LDYsMTUsMTEsMiwzLDgs'@; put 'NCwxNCw5LDEyLDcsMCwyLDEsMTMsMTAsMTIsNiwwLDksNSwxMSwxMCw1LDAsMTMsMTQsOCw3LDEwLDExLDEsMTAsMyw0LDE1LDEzLDQsMSwyLDUsMTEsOCw2LDEyLDcsNiwxMiw5LDAsMyw1LDIsMTQsMTUsOSwxMCwxMywwLDcsOSwwLDE0LDksNiwzLDMsNCwxNSw2LDUsMTAsMSwyLDEzLDgs'@; put 'MTIsNSw3LDE0LDExLDEyLDQsMTEsMiwxNSw4LDEsMTMsMSw2LDEwLDQsMTMsOSwwLDgsNiwxNSw5LDMsOCwwLDcsMTEsNCwxLDE1LDIsMTQsMTIsMyw1LDExLDEwLDUsMTQsMiw3LDEyLDcsMTMsMTMsOCwxNCwxMSwzLDUsMCw2LDYsMTUsOSwwLDEwLDMsMSw0LDIsNyw4LDIsNSwxMiwxMSwx'@; put 'LDEyLDEwLDQsMTQsMTUsOSwxMCwzLDYsMTUsOSwwLDAsNiwxMiwxMCwxMSwxLDcsMTMsMTMsOCwxNSw5LDEsNCwzLDUsMTQsMTEsNSwxMiwyLDcsOCwyLDQsMTQsMiwxNCwxMiwxMSw0LDIsMSwxMiw3LDQsMTAsNywxMSwxMyw2LDEsOCw1LDUsMCwzLDE1LDE1LDEwLDEzLDMsMCw5LDE0LDgs'@; put 'OSw2LDQsMTEsMiw4LDEsMTIsMTEsNywxMCwxLDEzLDE0LDcsMiw4LDEzLDE1LDYsOSwxNSwxMiwwLDUsOSw2LDEwLDMsNCwwLDUsMTQsMywxMiwxMCwxLDE1LDEwLDQsMTUsMiw5LDcsMiwxMiw2LDksOCw1LDAsNiwxMywxLDMsMTMsNCwxNCwxNCwwLDcsMTEsNSwzLDExLDgsOSw0LDE0LDMs'@; put 'MTUsMiw1LDEyLDIsOSw4LDUsMTIsMTUsMywxMCw3LDExLDAsMTQsNCwxLDEwLDcsMSw2LDEzLDAsMTEsOCw2LDEzLDQsMTMsMTEsMCwyLDExLDE0LDcsMTUsNCwwLDksOCwxLDEzLDEwLDMsMTQsMTIsMyw5LDUsNywxMiw1LDIsMTAsMTUsNiw4LDEsNiwxLDYsNCwxMSwxMSwxMywxMyw4LDEy'@; put 'LDEsMyw0LDcsMTAsMTQsNywxMCw5LDE1LDUsNiwwLDgsMTUsMCwxNCw1LDIsOSwzLDIsMTIsMTMsMSwyLDE1LDgsMTMsNCw4LDYsMTAsMTUsMywxMSw3LDEsNCwxMCwxMiw5LDUsMyw2LDE0LDExLDUsMCwwLDE0LDEyLDksNywyLDcsMiwxMSwxLDQsMTQsMSw3LDksNCwxMiwxMCwxNCw4LDIs'@; put 'MTMsMCwxNSw2LDEyLDEwLDksMTMsMCwxNSwzLDMsNSw1LDYsOCwxMV07ai5zdWJzdGl0dXRlPWZ1bmN0aW9uKEEsdil7Zm9yKHZhciBDPTAsdz0wO3c8NDt3KyspQzw8PTQsQ3w9eVs2NCp3KyhBPj4+MTgtNip3JjYzKV07Zm9yKHc9MDt3PDQ7dysrKUM8PD00LEN8PXlbMjU2KzY0KncrKHY+'@; put 'Pj4xOC02KncmNjMpXTtyZXR1cm4gQz4+PjB9O3ZhciBjPVsxNiwyNSwxMiwxMSwzLDIwLDQsMTUsMzEsMTcsOSw2LDI3LDE0LDEsMjIsMzAsMjQsOCwxOCwwLDUsMjksMjMsMTMsMTksMiwyNiwxMCwyMSwyOCw3XTtqLnBlcm11dGU9ZnVuY3Rpb24oQSl7Zm9yKHZhciB2PTAsQz0wO0M8Yy5s'@; put 'ZW5ndGg7QysrKXY8PD0xLHZ8PUE+Pj5jW0NdJjE7cmV0dXJuIHY+Pj4wfSxqLnBhZFNwbGl0PWZ1bmN0aW9uKEEsdixDKXtmb3IodmFyIHc9QS50b1N0cmluZygyKTt3Lmxlbmd0aDx2Oyl3PSIwIit3O2Zvcih2YXIgUz1bXSxMPTA7TDx2O0wrPUMpUy5wdXNoKHcuc2xpY2UoTCxMK0MpKTty'@; put 'ZXR1cm4gUy5qb2luKCIgIil9fSw2MzM2MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgcyx5PWgoNjE4ODUpLGM9aCg4Mzc5OCk7dHJ5e3M9W10uX19wcm90b19fPT09QXJyYXkucHJvdG90eXBlfWNhdGNoKHcpe2lmKCF3fHwib2JqZWN0IiE9dHlwZW9mIHd8fCEoImNvZGUiaW4gdyl8fCJF'@; put 'UlJfUFJPVE9fQUNDRVNTIiE9PXcuY29kZSl0aHJvdyB3fXZhciBBPSEhcyYmYyYmYyhPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKSx2PU9iamVjdCxDPXYuZ2V0UHJvdG90eXBlT2Y7ZmUuZXhwb3J0cz1BJiYiZnVuY3Rpb24iPT10eXBlb2YgQS5nZXQ/eShbQS5nZXRdKToiZnVuY3Rp'@; put 'b24iPT10eXBlb2YgQyYmZnVuY3Rpb24oUyl7cmV0dXJuIEMobnVsbD09Uz9TOnYoUykpfX0sNDU3MChmZSl7InVzZSBzdHJpY3QiO3ZhciBqPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ITE7aWYoail0cnl7aih7fSwiYSIse3ZhbHVlOjF9KX1jYXRjaHtqPSExfWZlLmV4cG9ydHM9an0sMTc1'@; put 'NihmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9RXZhbEVycm9yfSwzNzY0MChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9RXJyb3J9LDc3OTMzKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1SYW5nZUVycm9yfSw2NjEzKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1SZWZl'@; put 'cmVuY2VFcnJvcn0sNTg0MTMoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPVN5bnRheEVycm9yfSw0Njc1OChmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9VHlwZUVycm9yfSw1Mjg2KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1VUklFcnJvcn0sNjU4OTEoZmUpeyJ1c2Ugc3Ry'@; put 'aWN0IjtmZS5leHBvcnRzPU9iamVjdH0sNDQzNTYoZmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgeSxqPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsaD1qJiYiZnVuY3Rpb24iPT10eXBlb2Ygai5hcHBseT9qLmFwcGx5OmZ1bmN0aW9uKHEscmUsbWUpe3JldHVybiBGdW5jdGlv'@; put 'bi5wcm90b3R5cGUuYXBwbHkuY2FsbChxLHJlLG1lKX07eT1qJiYiZnVuY3Rpb24iPT10eXBlb2Ygai5vd25LZXlzP2oub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhxKS5jb25jYXQoT2Jq'@; put 'ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhxKSl9OmZ1bmN0aW9uKHEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhxKX07dmFyIHM9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihxKXtyZXR1cm4gcSE9cX07ZnVuY3Rpb24gQSgpe0EuaW5pdC5jYWxsKHRoaXMpfWZlLmV4cG9y'@; put 'dHM9QSxmZS5leHBvcnRzLm9uY2U9ZnVuY3Rpb24geihXLHEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZSxtZSl7ZnVuY3Rpb24gQ2Uoa2Upe1cucmVtb3ZlTGlzdGVuZXIocSxJZSksbWUoa2UpfWZ1bmN0aW9uIEllKCl7ImZ1bmN0aW9uIj09dHlwZW9mIFcucmVtb3ZlTGlzdGVu'@; put 'ZXImJlcucmVtb3ZlTGlzdGVuZXIoImVycm9yIixDZSkscmUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX1GKFcscSxJZSx7b25jZTohMH0pLCJlcnJvciIhPT1xJiZmdW5jdGlvbiBZKFcscSxyZSl7ImZ1bmN0aW9uIj09dHlwZW9mIFcub24mJkYoVywiZXJyb3IiLHEscmUpfShXLENlLHtv'@; put 'bmNlOiEwfSl9KX0sQS5FdmVudEVtaXR0ZXI9QSxBLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxBLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxBLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgdj0xMDtmdW5jdGlvbiBDKFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXKXRo'@; put 'cm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBXKX1mdW5jdGlvbiB3KFcpe3JldHVybiB2b2lkIDA9PT1XLl9tYXhMaXN0ZW5lcnM/QS5kZWZhdWx0TWF4TGlzdGVuZXJzOlcu'@; put 'X21heExpc3RlbmVyc31mdW5jdGlvbiBTKFcscSxyZSxtZSl7dmFyIENlLEllLGtlO2lmKEMocmUpLHZvaWQgMD09PShJZT1XLl9ldmVudHMpPyhJZT1XLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxXLl9ldmVudHNDb3VudD0wKToodm9pZCAwIT09SWUubmV3TGlzdGVuZXImJihXLmVt'@; put 'aXQoIm5ld0xpc3RlbmVyIixxLHJlLmxpc3RlbmVyP3JlLmxpc3RlbmVyOnJlKSxJZT1XLl9ldmVudHMpLGtlPUllW3FdKSx2b2lkIDA9PT1rZSlrZT1JZVtxXT1yZSwrK1cuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGtlP2tlPUllW3FdPW1lP1tyZSxrZV06W2tl'@; put 'LHJlXTptZT9rZS51bnNoaWZ0KHJlKTprZS5wdXNoKHJlKSwoQ2U9dyhXKSk+MCYma2UubGVuZ3RoPkNlJiYha2Uud2FybmVkKXtrZS53YXJuZWQ9ITA7dmFyIHFlPW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK2tlLmxlbmd0aCsiICIr'@; put 'U3RyaW5nKHEpKyIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdCIpO3FlLm5hbWU9Ik1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyIscWUuZW1pdHRlcj1XLHFlLnR5cGU9cSxxZS5jb3VudD1rZS5sZW5ndGgsZnVuY3Rp'@; put 'b24gYyhXKXtjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihXKX0ocWUpfXJldHVybiBXfWZ1bmN0aW9uIEwoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1h'@; put 'cmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIFIoVyxxLHJlKXt2YXIgbWU9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OlcsdHlwZTpxLGxpc3RlbmVy'@; put 'OnJlfSxDZT1MLmJpbmQobWUpO3JldHVybiBDZS5saXN0ZW5lcj1yZSxtZS53cmFwRm49Q2UsQ2V9ZnVuY3Rpb24geChXLHEscmUpe3ZhciBtZT1XLl9ldmVudHM7aWYodm9pZCAwPT09bWUpcmV0dXJuW107dmFyIENlPW1lW3FdO3JldHVybiB2b2lkIDA9PT1DZT9bXToiZnVuY3Rpb24iPT10'@; put 'eXBlb2YgQ2U/cmU/W0NlLmxpc3RlbmVyfHxDZV06W0NlXTpyZT9mdW5jdGlvbiBOKFcpe2Zvcih2YXIgcT1uZXcgQXJyYXkoVy5sZW5ndGgpLHJlPTA7cmU8cS5sZW5ndGg7KytyZSlxW3JlXT1XW3JlXS5saXN0ZW5lcnx8V1tyZV07cmV0dXJuIHF9KENlKTpIKENlLENlLmxlbmd0aCl9ZnVu'@; put 'Y3Rpb24gVShXKXt2YXIgcT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09cSl7dmFyIHJlPXFbV107aWYoImZ1bmN0aW9uIj09dHlwZW9mIHJlKXJldHVybiAxO2lmKHZvaWQgMCE9PXJlKXJldHVybiByZS5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gSChXLHEpe2Zvcih2YXIgcmU9bmV3IEFy'@; put 'cmF5KHEpLG1lPTA7bWU8cTsrK21lKXJlW21lXT1XW21lXTtyZXR1cm4gcmV9ZnVuY3Rpb24gRihXLHEscmUsbWUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBXLm9uKW1lLm9uY2U/Vy5vbmNlKHEscmUpOlcub24ocSxyZSk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVy5hZGRFdmVudExp'@; put 'c3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZW1pdHRlciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBXKTtXLmFkZEV2ZW50TGlzdGVuZXIocSxmdW5jdGlvbiBDZShJZSl7bWUub25jZSYmVy5yZW1vdmVFdmVu'@; put 'dExpc3RlbmVyKHEsQ2UpLHJlKEllKX0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LHNldDpmdW5jdGlvbihXKXtpZigibnVtYmVyIiE9dHlwZW9mIFd8fFc8MHx8cyhXKSl0aHJv'@; put 'dyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mICJkZWZhdWx0TWF4TGlzdGVuZXJzIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK1crIi4iKTt2PVd9fSksQS5pbml0PWZ1bmN0aW9uKCl7KHZvaWQgMD09PXRoaXMuX2V2'@; put 'ZW50c3x8dGhpcy5fZXZlbnRzPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpJiYodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxBLnBy'@; put 'b3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24ocSl7aWYoIm51bWJlciIhPXR5cGVvZiBxfHxxPDB8fHMocSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2'@; put 'ZWQgJytxKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1xLHRoaXN9LEEucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiB3KHRoaXMpfSxBLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHEpe2Zvcih2YXIgcmU9W10sbWU9MTttZTxhcmd1bWVudHMubGVu'@; put 'Z3RoO21lKyspcmUucHVzaChhcmd1bWVudHNbbWVdKTt2YXIgQ2U9ImVycm9yIj09PXEsSWU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PUllKUNlPUNlJiZ2b2lkIDA9PT1JZS5lcnJvcjtlbHNlIGlmKCFDZSlyZXR1cm4hMTtpZihDZSl7dmFyIGtlO2lmKHJlLmxlbmd0aD4wJiYoa2U9cmVb'@; put 'MF0pLGtlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cga2U7dmFyIHFlPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKGtlPyIgKCIra2UubWVzc2FnZSsiKSI6IiIpKTt0aHJvdyBxZS5jb250ZXh0PWtlLHFlfXZhciBYPUllW3FdO2lmKHZvaWQgMD09PVgpcmV0dXJuITE7aWYoImZ1bmN0'@; put 'aW9uIj09dHlwZW9mIFgpaChYLHRoaXMscmUpO2Vsc2V7dmFyIGY9WC5sZW5ndGgsYj1IKFgsZik7Zm9yKG1lPTA7bWU8ZjsrK21lKWgoYlttZV0sdGhpcyxyZSl9cmV0dXJuITB9LEEucHJvdG90eXBlLm9uPUEucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKHEscmUpe3JldHVybiBT'@; put 'KHRoaXMscSxyZSwhMSl9LEEucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbihxLHJlKXtyZXR1cm4gUyh0aGlzLHEscmUsITApfSxBLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHEscmUpe3JldHVybiBDKHJlKSx0aGlzLm9uKHEsUih0aGlzLHEscmUpKSx0aGlzfSxBLnByb3Rv'@; put 'dHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHEscmUpe3JldHVybiBDKHJlKSx0aGlzLnByZXBlbmRMaXN0ZW5lcihxLFIodGhpcyxxLHJlKSksdGhpc30sQS5wcm90b3R5cGUub2ZmPUEucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHEscmUpe3ZhciBtZSxDZSxJ'@; put 'ZSxrZSxxZTtpZihDKHJlKSx2b2lkIDA9PT0oQ2U9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0obWU9Q2VbcV0pKXJldHVybiB0aGlzO2lmKG1lPT09cmV8fG1lLmxpc3RlbmVyPT09cmUpMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5j'@; put 'cmVhdGUobnVsbCk6KGRlbGV0ZSBDZVtxXSxDZS5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIscSxtZS5saXN0ZW5lcnx8cmUpKTtlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiBtZSl7Zm9yKEllPS0xLGtlPW1lLmxlbmd0aC0xO2tlPj0wO2tlLS0paWYobWVb'@; put 'a2VdPT09cmV8fG1lW2tlXS5saXN0ZW5lcj09PXJlKXtxZT1tZVtrZV0ubGlzdGVuZXIsSWU9a2U7YnJlYWt9aWYoSWU8MClyZXR1cm4gdGhpczswPT09SWU/bWUuc2hpZnQoKTpmdW5jdGlvbiBWKFcscSl7Zm9yKDtxKzE8Vy5sZW5ndGg7cSsrKVdbcV09V1txKzFdO1cucG9wKCl9KG1lLEll'@; put 'KSwxPT09bWUubGVuZ3RoJiYoQ2VbcV09bWVbMF0pLHZvaWQgMCE9PUNlLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixxLHFlfHxyZSl9cmV0dXJuIHRoaXN9LEEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihxKXt2YXIgcmUsbWUsQ2U7'@; put 'aWYodm9pZCAwPT09KG1lPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09bWUucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1t'@; put 'ZVtxXSYmKDA9PT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBtZVtxXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGtlLEllPU9iamVjdC5rZXlzKG1lKTtmb3IoQ2U9MDtDZTxJZS5sZW5ndGg7KytDZSkicmVt'@; put 'b3ZlTGlzdGVuZXIiIT09KGtlPUllW0NlXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtlKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlm'@; put 'KCJmdW5jdGlvbiI9PXR5cGVvZihyZT1tZVtxXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihxLHJlKTtlbHNlIGlmKHZvaWQgMCE9PXJlKWZvcihDZT1yZS5sZW5ndGgtMTtDZT49MDtDZS0tKXRoaXMucmVtb3ZlTGlzdGVuZXIocSxyZVtDZV0pO3JldHVybiB0aGlzfSxBLnByb3RvdHlwZS5saXN0'@; put 'ZW5lcnM9ZnVuY3Rpb24ocSl7cmV0dXJuIHgodGhpcyxxLCEwKX0sQS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKHEpe3JldHVybiB4KHRoaXMscSwhMSl9LEEubGlzdGVuZXJDb3VudD1mdW5jdGlvbihXLHEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXLmxpc3RlbmVyQ291'@; put 'bnQ/Vy5saXN0ZW5lckNvdW50KHEpOlUuY2FsbChXLHEpfSxBLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PVUsQS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP3kodGhpcy5fZXZlbnRzKTpbXX19LDE4MjExKGZlLGosaCl7dmFyIHk9'@; put 'aCgyNzA1NCkuQnVmZmVyLGM9aCgzNDcyNSk7ZmUuZXhwb3J0cz1mdW5jdGlvbiBzKEEsdixDLHcpe2lmKHkuaXNCdWZmZXIoQSl8fChBPXkuZnJvbShBLCJiaW5hcnkiKSksdiYmKHkuaXNCdWZmZXIodil8fCh2PXkuZnJvbSh2LCJiaW5hcnkiKSksOCE9PXYubGVuZ3RoKSl0aHJvdyBuZXcg'@; put 'UmFuZ2VFcnJvcigic2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGggOCBieXRlIGxlbmd0aCIpO2Zvcih2YXIgUz1DLzgsTD15LmFsbG9jKFMpLFI9eS5hbGxvYyh3fHwwKSx4PXkuYWxsb2MoMCk7Uz4wfHx3PjA7KXt2YXIgVT1uZXcgYztVLnVwZGF0ZSh4KSxVLnVwZGF0ZShBKSx2JiZVLnVw'@; put 'ZGF0ZSh2KSx4PVUuZGlnZXN0KCk7dmFyIEg9MDtpZihTPjApe3ZhciBWPUwubGVuZ3RoLVM7SD1NYXRoLm1pbihTLHgubGVuZ3RoKSx4LmNvcHkoTCxWLDAsSCksUy09SH1pZihIPHgubGVuZ3RoJiZ3PjApe3ZhciBOPVIubGVuZ3RoLXcsej1NYXRoLm1pbih3LHgubGVuZ3RoLUgpO3guY29w'@; put 'eShSLE4sSCxIK3opLHctPXp9fXJldHVybiB4LmZpbGwoMCkse2tleTpMLGl2OlJ9fX0sODk5OTkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg1ODIzOSksYz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmZS5leHBvcnRz'@; put 'PWZ1bmN0aW9uKEwsUix4KXtpZigheShSKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgVTthcmd1bWVudHMubGVuZ3RoPj0zJiYoVT14KSxmdW5jdGlvbiB3KFMpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1jLmNhbGwoUyl9KEwpP2Z1'@; put 'bmN0aW9uKEwsUix4KXtmb3IodmFyIFU9MCxIPUwubGVuZ3RoO1U8SDtVKyspcy5jYWxsKEwsVSkmJihudWxsPT14P1IoTFtVXSxVLEwpOlIuY2FsbCh4LExbVV0sVSxMKSl9KEwsUixVKToic3RyaW5nIj09dHlwZW9mIEw/ZnVuY3Rpb24oTCxSLHgpe2Zvcih2YXIgVT0wLEg9TC5sZW5ndGg7'@; put 'VTxIO1UrKyludWxsPT14P1IoTC5jaGFyQXQoVSksVSxMKTpSLmNhbGwoeCxMLmNoYXJBdChVKSxVLEwpfShMLFIsVSk6ZnVuY3Rpb24oTCxSLHgpe2Zvcih2YXIgVSBpbiBMKXMuY2FsbChMLFUpJiYobnVsbD09eD9SKExbVV0sVSxMKTpSLmNhbGwoeCxMW1VdLFUsTCkpfShMLFIsVSl9fSw0'@; put 'OTEzMihmZSl7InVzZSBzdHJpY3QiO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcseT1NYXRoLm1heCxzPWZ1bmN0aW9uKHcsUyl7Zm9yKHZhciBMPVtdLFI9MDtSPHcubGVuZ3RoO1IrPTEpTFtSXT13W1JdO2Zvcih2YXIgeD0wO3g8Uy5sZW5ndGg7eCs9MSlMW3grdy5sZW5ndGhd'@; put 'PVNbeF07cmV0dXJuIEx9O2ZlLmV4cG9ydHM9ZnVuY3Rpb24odyl7dmFyIFM9dGhpcztpZigiZnVuY3Rpb24iIT10eXBlb2YgU3x8IltvYmplY3QgRnVuY3Rpb25dIiE9PWguYXBwbHkoUykpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGlu'@; put 'Y29tcGF0aWJsZSAiK1MpO2Zvcih2YXIgUixMPWZ1bmN0aW9uKHcpe2Zvcih2YXIgTD1bXSxSPTEseD0wO1I8dy5sZW5ndGg7Uis9MSx4Kz0xKUxbeF09d1tSXTtyZXR1cm4gTH0oYXJndW1lbnRzKSxVPXkoMCxTLmxlbmd0aC1MLmxlbmd0aCksSD1bXSxWPTA7VjxVO1YrKylIW1ZdPSIkIitW'@; put 'O2lmKFI9RnVuY3Rpb24oImJpbmRlciIsInJldHVybiBmdW5jdGlvbiAoIitmdW5jdGlvbihDKXtmb3IodmFyIFM9IiIsTD0wO0w8Qy5sZW5ndGg7TCs9MSlTKz1DW0xdLEwrMTxDLmxlbmd0aCYmKFMrPSIsIik7cmV0dXJuIFN9KEgpKyIpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJn'@; put 'dW1lbnRzKTsgfSIpKGZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIFIpe3ZhciB6PVMuYXBwbHkodGhpcyxzKEwsYXJndW1lbnRzKSk7cmV0dXJuIE9iamVjdCh6KT09PXo/ejp0aGlzfXJldHVybiBTLmFwcGx5KHcscyhMLGFyZ3VtZW50cykpfSksUy5wcm90b3R5cGUpe3ZhciBOPWZ1'@; put 'bmN0aW9uKCl7fTtOLnByb3RvdHlwZT1TLnByb3RvdHlwZSxSLnByb3RvdHlwZT1uZXcgTixOLnByb3RvdHlwZT1udWxsfXJldHVybiBSfX0sNjU5OTIoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0OTEzMik7ZmUuZXhwb3J0cz1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8eX0sOTAy'@; put 'NTgoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHksYz1oKDY1ODkxKSxzPWgoMzc2NDApLEE9aCgxNzU2KSx2PWgoNzc5MzMpLEM9aCg2NjEzKSx3PWgoNTg0MTMpLFM9aCg0Njc1OCksTD1oKDUyODYpLFI9aCg3MDgzNykseD1oKDMzODMpLFU9aCg3OTAzOSksSD1oKDE0OTgxKSxWPWgoODA5'@; put 'NzUpLE49aCg1MzM3KSx6PWgoNDkxMiksWT1GdW5jdGlvbixGPWZ1bmN0aW9uKGFlKXt0cnl7cmV0dXJuIFkoJyJ1c2Ugc3RyaWN0IjsgcmV0dXJuICgnK2FlKyIpLmNvbnN0cnVjdG9yOyIpKCl9Y2F0Y2h7fX0sVz1oKDgzNzk4KSxxPWgoNDU3MCkscmU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcg'@; put 'U30sbWU9Vz9mdW5jdGlvbigpe3RyeXtyZXR1cm4gcmV9Y2F0Y2h7dHJ5e3JldHVybiBXKGFyZ3VtZW50cywiY2FsbGVlIikuZ2V0fWNhdGNoe3JldHVybiByZX19fSgpOnJlLENlPWgoMTk5MDApKCksSWU9aCg5MTYyNyksa2U9aCgyNzIwMykscWU9aCg5NzY2OSksWD1oKDc5NDc3KSxmPWgo'@; put 'NTk3MDUpLGI9e30saz10eXBlb2YgVWludDhBcnJheT4idSJ8fCFJZT95OkllKFVpbnQ4QXJyYXkpLE09e19fcHJvdG9fXzpudWxsLCIlQWdncmVnYXRlRXJyb3IlIjp0eXBlb2YgQWdncmVnYXRlRXJyb3I+InUiP3k6QWdncmVnYXRlRXJyb3IsIiVBcnJheSUiOkFycmF5LCIlQXJyYXlCdWZm'@; put 'ZXIlIjp0eXBlb2YgQXJyYXlCdWZmZXI+InUiP3k6QXJyYXlCdWZmZXIsIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSI6Q2UmJkllP0llKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSk6eSwiJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUiOnksIiVBc3luY0Z1bmN0aW9uJSI6YiwiJUFz'@; put 'eW5jR2VuZXJhdG9yJSI6YiwiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIjpiLCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiOmIsIiVBdG9taWNzJSI6dHlwZW9mIEF0b21pY3M+InUiP3k6QXRvbWljcywiJUJpZ0ludCUiOnR5cGVvZiBCaWdJbnQ+InUiP3k6QmlnSW50LCIlQmlnSW50NjRB'@; put 'cnJheSUiOnR5cGVvZiBCaWdJbnQ2NEFycmF5PiJ1Ij95OkJpZ0ludDY0QXJyYXksIiVCaWdVaW50NjRBcnJheSUiOnR5cGVvZiBCaWdVaW50NjRBcnJheT4idSI/eTpCaWdVaW50NjRBcnJheSwiJUJvb2xlYW4lIjpCb29sZWFuLCIlRGF0YVZpZXclIjp0eXBlb2YgRGF0YVZpZXc+InUiP3k6'@; put 'RGF0YVZpZXcsIiVEYXRlJSI6RGF0ZSwiJWRlY29kZVVSSSUiOmRlY29kZVVSSSwiJWRlY29kZVVSSUNvbXBvbmVudCUiOmRlY29kZVVSSUNvbXBvbmVudCwiJWVuY29kZVVSSSUiOmVuY29kZVVSSSwiJWVuY29kZVVSSUNvbXBvbmVudCUiOmVuY29kZVVSSUNvbXBvbmVudCwiJUVycm9yJSI6'@; put 'cywiJWV2YWwlIjpldmFsLCIlRXZhbEVycm9yJSI6QSwiJUZsb2F0MTZBcnJheSUiOnR5cGVvZiBGbG9hdDE2QXJyYXk+InUiP3k6RmxvYXQxNkFycmF5LCIlRmxvYXQzMkFycmF5JSI6dHlwZW9mIEZsb2F0MzJBcnJheT4idSI/eTpGbG9hdDMyQXJyYXksIiVGbG9hdDY0QXJyYXklIjp0eXBl'@; put 'b2YgRmxvYXQ2NEFycmF5PiJ1Ij95OkZsb2F0NjRBcnJheSwiJUZpbmFsaXphdGlvblJlZ2lzdHJ5JSI6dHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5PiJ1Ij95OkZpbmFsaXphdGlvblJlZ2lzdHJ5LCIlRnVuY3Rpb24lIjpZLCIlR2VuZXJhdG9yRnVuY3Rpb24lIjpiLCIlSW50OEFycmF5'@; put 'JSI6dHlwZW9mIEludDhBcnJheT4idSI/eTpJbnQ4QXJyYXksIiVJbnQxNkFycmF5JSI6dHlwZW9mIEludDE2QXJyYXk+InUiP3k6SW50MTZBcnJheSwiJUludDMyQXJyYXklIjp0eXBlb2YgSW50MzJBcnJheT4idSI/eTpJbnQzMkFycmF5LCIlaXNGaW5pdGUlIjppc0Zpbml0ZSwiJWlzTmFO'@; put 'JSI6aXNOYU4sIiVJdGVyYXRvclByb3RvdHlwZSUiOkNlJiZJZT9JZShJZShbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKTp5LCIlSlNPTiUiOiJvYmplY3QiPT10eXBlb2YgSlNPTj9KU09OOnksIiVNYXAlIjp0eXBlb2YgTWFwPiJ1Ij95Ok1hcCwiJU1hcEl0ZXJhdG9yUHJvdG90eXBlJSI6dHlw'@; put 'ZW9mIE1hcD4idSJ8fCFDZXx8IUllP3k6SWUoKG5ldyBNYXApW1N5bWJvbC5pdGVyYXRvcl0oKSksIiVNYXRoJSI6TWF0aCwiJU51bWJlciUiOk51bWJlciwiJU9iamVjdCUiOmMsIiVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJSI6VywiJXBhcnNlRmxvYXQlIjpwYXJzZUZsb2F0'@; put 'LCIlcGFyc2VJbnQlIjpwYXJzZUludCwiJVByb21pc2UlIjp0eXBlb2YgUHJvbWlzZT4idSI/eTpQcm9taXNlLCIlUHJveHklIjp0eXBlb2YgUHJveHk+InUiP3k6UHJveHksIiVSYW5nZUVycm9yJSI6diwiJVJlZmVyZW5jZUVycm9yJSI6QywiJVJlZmxlY3QlIjp0eXBlb2YgUmVmbGVjdD4i'@; put 'dSI/eTpSZWZsZWN0LCIlUmVnRXhwJSI6UmVnRXhwLCIlU2V0JSI6dHlwZW9mIFNldD4idSI/eTpTZXQsIiVTZXRJdGVyYXRvclByb3RvdHlwZSUiOnR5cGVvZiBTZXQ+InUifHwhQ2V8fCFJZT95OkllKChuZXcgU2V0KVtTeW1ib2wuaXRlcmF0b3JdKCkpLCIlU2hhcmVkQXJyYXlCdWZmZXIl'@; put 'Ijp0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI+InUiP3k6U2hhcmVkQXJyYXlCdWZmZXIsIiVTdHJpbmclIjpTdHJpbmcsIiVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUiOkNlJiZJZT9JZSgiIltTeW1ib2wuaXRlcmF0b3JdKCkpOnksIiVTeW1ib2wlIjpDZT9TeW1ib2w6eSwiJVN5bnRheEVy'@; put 'cm9yJSI6dywiJVRocm93VHlwZUVycm9yJSI6bWUsIiVUeXBlZEFycmF5JSI6aywiJVR5cGVFcnJvciUiOlMsIiVVaW50OEFycmF5JSI6dHlwZW9mIFVpbnQ4QXJyYXk+InUiP3k6VWludDhBcnJheSwiJVVpbnQ4Q2xhbXBlZEFycmF5JSI6dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5PiJ1Ij95'@; put 'OlVpbnQ4Q2xhbXBlZEFycmF5LCIlVWludDE2QXJyYXklIjp0eXBlb2YgVWludDE2QXJyYXk+InUiP3k6VWludDE2QXJyYXksIiVVaW50MzJBcnJheSUiOnR5cGVvZiBVaW50MzJBcnJheT4idSI/eTpVaW50MzJBcnJheSwiJVVSSUVycm9yJSI6TCwiJVdlYWtNYXAlIjp0eXBlb2YgV2Vha01h'@; put 'cD4idSI/eTpXZWFrTWFwLCIlV2Vha1JlZiUiOnR5cGVvZiBXZWFrUmVmPiJ1Ij95OldlYWtSZWYsIiVXZWFrU2V0JSI6dHlwZW9mIFdlYWtTZXQ+InUiP3k6V2Vha1NldCwiJUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsJSI6ZiwiJUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSUiOlgsIiVPYmpl'@; put 'Y3QuZGVmaW5lUHJvcGVydHklIjpxLCIlT2JqZWN0LmdldFByb3RvdHlwZU9mJSI6a2UsIiVNYXRoLmFicyUiOlIsIiVNYXRoLmZsb29yJSI6eCwiJU1hdGgubWF4JSI6VSwiJU1hdGgubWluJSI6SCwiJU1hdGgucG93JSI6ViwiJU1hdGgucm91bmQlIjpOLCIlTWF0aC5zaWduJSI6eiwiJVJl'@; put 'ZmxlY3QuZ2V0UHJvdG90eXBlT2YlIjpxZX07aWYoSWUpdHJ5e251bGwuZXJyb3J9Y2F0Y2goYWUpe3ZhciBCPUllKEllKGFlKSk7TVsiJUVycm9yLnByb3RvdHlwZSUiXT1CfXZhciBLPWZ1bmN0aW9uIGFlKHhlKXt2YXIgamU7aWYoIiVBc3luY0Z1bmN0aW9uJSI9PT14ZSlqZT1GKCJhc3lu'@; put 'YyBmdW5jdGlvbiAoKSB7fSIpO2Vsc2UgaWYoIiVHZW5lcmF0b3JGdW5jdGlvbiUiPT09eGUpamU9RigiZnVuY3Rpb24qICgpIHt9Iik7ZWxzZSBpZigiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIj09PXhlKWplPUYoImFzeW5jIGZ1bmN0aW9uKiAoKSB7fSIpO2Vsc2UgaWYoIiVBc3luY0dl'@; put 'bmVyYXRvciUiPT09eGUpe3ZhciBBZT1hZSgiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIik7QWUmJihqZT1BZS5wcm90b3R5cGUpfWVsc2UgaWYoIiVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSI9PT14ZSl7dmFyIERlPWFlKCIlQXN5bmNHZW5lcmF0b3IlIik7RGUmJkllJiYoamU9SWUoRGUu'@; put 'cHJvdG90eXBlKSl9cmV0dXJuIE1beGVdPWplLGplfSxHPXtfX3Byb3RvX186bnVsbCwiJUFycmF5QnVmZmVyUHJvdG90eXBlJSI6WyJBcnJheUJ1ZmZlciIsInByb3RvdHlwZSJdLCIlQXJyYXlQcm90b3R5cGUlIjpbIkFycmF5IiwicHJvdG90eXBlIl0sIiVBcnJheVByb3RvX2VudHJpZXMl'@; put 'IjpbIkFycmF5IiwicHJvdG90eXBlIiwiZW50cmllcyJdLCIlQXJyYXlQcm90b19mb3JFYWNoJSI6WyJBcnJheSIsInByb3RvdHlwZSIsImZvckVhY2giXSwiJUFycmF5UHJvdG9fa2V5cyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJrZXlzIl0sIiVBcnJheVByb3RvX3ZhbHVlcyUiOlsiQXJy'@; put 'YXkiLCJwcm90b3R5cGUiLCJ2YWx1ZXMiXSwiJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlIjpbIkFzeW5jRnVuY3Rpb24iLCJwcm90b3R5cGUiXSwiJUFzeW5jR2VuZXJhdG9yJSI6WyJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIl0sIiVBc3luY0dlbmVyYXRvclByb3RvdHlw'@; put 'ZSUiOlsiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSIsInByb3RvdHlwZSJdLCIlQm9vbGVhblByb3RvdHlwZSUiOlsiQm9vbGVhbiIsInByb3RvdHlwZSJdLCIlRGF0YVZpZXdQcm90b3R5cGUlIjpbIkRhdGFWaWV3IiwicHJvdG90eXBlIl0sIiVEYXRlUHJvdG90eXBlJSI6'@; put 'WyJEYXRlIiwicHJvdG90eXBlIl0sIiVFcnJvclByb3RvdHlwZSUiOlsiRXJyb3IiLCJwcm90b3R5cGUiXSwiJUV2YWxFcnJvclByb3RvdHlwZSUiOlsiRXZhbEVycm9yIiwicHJvdG90eXBlIl0sIiVGbG9hdDMyQXJyYXlQcm90b3R5cGUlIjpbIkZsb2F0MzJBcnJheSIsInByb3RvdHlwZSJd'@; put 'LCIlRmxvYXQ2NEFycmF5UHJvdG90eXBlJSI6WyJGbG9hdDY0QXJyYXkiLCJwcm90b3R5cGUiXSwiJUZ1bmN0aW9uUHJvdG90eXBlJSI6WyJGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlR2VuZXJhdG9yJSI6WyJHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlR2VuZXJhdG9yUHJv'@; put 'dG90eXBlJSI6WyJHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSIsInByb3RvdHlwZSJdLCIlSW50OEFycmF5UHJvdG90eXBlJSI6WyJJbnQ4QXJyYXkiLCJwcm90b3R5cGUiXSwiJUludDE2QXJyYXlQcm90b3R5cGUlIjpbIkludDE2QXJyYXkiLCJwcm90b3R5cGUiXSwiJUludDMyQXJy'@; put 'YXlQcm90b3R5cGUlIjpbIkludDMyQXJyYXkiLCJwcm90b3R5cGUiXSwiJUpTT05QYXJzZSUiOlsiSlNPTiIsInBhcnNlIl0sIiVKU09OU3RyaW5naWZ5JSI6WyJKU09OIiwic3RyaW5naWZ5Il0sIiVNYXBQcm90b3R5cGUlIjpbIk1hcCIsInByb3RvdHlwZSJdLCIlTnVtYmVyUHJvdG90eXBl'@; put 'JSI6WyJOdW1iZXIiLCJwcm90b3R5cGUiXSwiJU9iamVjdFByb3RvdHlwZSUiOlsiT2JqZWN0IiwicHJvdG90eXBlIl0sIiVPYmpQcm90b190b1N0cmluZyUiOlsiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciXSwiJU9ialByb3RvX3ZhbHVlT2YlIjpbIk9iamVjdCIsInByb3RvdHlw'@; put 'ZSIsInZhbHVlT2YiXSwiJVByb21pc2VQcm90b3R5cGUlIjpbIlByb21pc2UiLCJwcm90b3R5cGUiXSwiJVByb21pc2VQcm90b190aGVuJSI6WyJQcm9taXNlIiwicHJvdG90eXBlIiwidGhlbiJdLCIlUHJvbWlzZV9hbGwlIjpbIlByb21pc2UiLCJhbGwiXSwiJVByb21pc2VfcmVqZWN0JSI6'@; put 'WyJQcm9taXNlIiwicmVqZWN0Il0sIiVQcm9taXNlX3Jlc29sdmUlIjpbIlByb21pc2UiLCJyZXNvbHZlIl0sIiVSYW5nZUVycm9yUHJvdG90eXBlJSI6WyJSYW5nZUVycm9yIiwicHJvdG90eXBlIl0sIiVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUiOlsiUmVmZXJlbmNlRXJyb3IiLCJwcm90'@; put 'b3R5cGUiXSwiJVJlZ0V4cFByb3RvdHlwZSUiOlsiUmVnRXhwIiwicHJvdG90eXBlIl0sIiVTZXRQcm90b3R5cGUlIjpbIlNldCIsInByb3RvdHlwZSJdLCIlU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlIjpbIlNoYXJlZEFycmF5QnVmZmVyIiwicHJvdG90eXBlIl0sIiVTdHJpbmdQcm90'@; put 'b3R5cGUlIjpbIlN0cmluZyIsInByb3RvdHlwZSJdLCIlU3ltYm9sUHJvdG90eXBlJSI6WyJTeW1ib2wiLCJwcm90b3R5cGUiXSwiJVN5bnRheEVycm9yUHJvdG90eXBlJSI6WyJTeW50YXhFcnJvciIsInByb3RvdHlwZSJdLCIlVHlwZWRBcnJheVByb3RvdHlwZSUiOlsiVHlwZWRBcnJheSIs'@; put 'InByb3RvdHlwZSJdLCIlVHlwZUVycm9yUHJvdG90eXBlJSI6WyJUeXBlRXJyb3IiLCJwcm90b3R5cGUiXSwiJVVpbnQ4QXJyYXlQcm90b3R5cGUlIjpbIlVpbnQ4QXJyYXkiLCJwcm90b3R5cGUiXSwiJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSI6WyJVaW50OENsYW1wZWRBcnJheSIs'@; put 'InByb3RvdHlwZSJdLCIlVWludDE2QXJyYXlQcm90b3R5cGUlIjpbIlVpbnQxNkFycmF5IiwicHJvdG90eXBlIl0sIiVVaW50MzJBcnJheVByb3RvdHlwZSUiOlsiVWludDMyQXJyYXkiLCJwcm90b3R5cGUiXSwiJVVSSUVycm9yUHJvdG90eXBlJSI6WyJVUklFcnJvciIsInByb3RvdHlwZSJd'@; put 'LCIlV2Vha01hcFByb3RvdHlwZSUiOlsiV2Vha01hcCIsInByb3RvdHlwZSJdLCIlV2Vha1NldFByb3RvdHlwZSUiOlsiV2Vha1NldCIsInByb3RvdHlwZSJdfSxEPWgoNjU5OTIpLHA9aCg3ODM2OCksST1ELmNhbGwoZixBcnJheS5wcm90b3R5cGUuY29uY2F0KSx1ZT1ELmNhbGwoWCxBcnJh'@; put 'eS5wcm90b3R5cGUuc3BsaWNlKSxuZT1ELmNhbGwoZixTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLF9lPUQuY2FsbChmLFN0cmluZy5wcm90b3R5cGUuc2xpY2UpLFBlPUQuY2FsbChmLFJlZ0V4cC5wcm90b3R5cGUuZXhlYyksb3Q9L1teJS5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8p'@; put 'fChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCUkKSkvZyxsdD0vXFwoXFwpPy9nLFJlPWZ1bmN0aW9uKHhlLGplKXt2YXIgRGUsQWU9eGU7aWYocChHLEFlKSYmKEFlPSIlIisoRGU9R1tBZV0pWzBdKyIlIikscChNLEFlKSl7dmFy'@; put 'IEZlPU1bQWVdO2lmKEZlPT09YiYmKEZlPUsoQWUpKSx0eXBlb2YgRmU+InUiJiYhamUpdGhyb3cgbmV3IFMoImludHJpbnNpYyAiK3hlKyIgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhIik7cmV0dXJue2FsaWFzOkRlLG5hbWU6QWUsdmFsdWU6'@; put 'RmV9fXRocm93IG5ldyB3KCJpbnRyaW5zaWMgIit4ZSsiIGRvZXMgbm90IGV4aXN0ISIpfTtmZS5leHBvcnRzPWZ1bmN0aW9uKHhlLGplKXtpZigic3RyaW5nIiE9dHlwZW9mIHhlfHwwPT09eGUubGVuZ3RoKXRocm93IG5ldyBTKCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5'@; put 'IHN0cmluZyIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmImJvb2xlYW4iIT10eXBlb2YgamUpdGhyb3cgbmV3IFMoJyJhbGxvd01pc3NpbmciIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7aWYobnVsbD09PVBlKC9eJT9bXiVdKiU/JC8seGUpKXRocm93IG5ldyB3KCJgJWAgbWF5IG5v'@; put 'dCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lIik7dmFyIEFlPWZ1bmN0aW9uKHhlKXt2YXIgamU9X2UoeGUsMCwxKSxBZT1fZSh4ZSwtMSk7aWYoIiUiPT09amUmJiIlIiE9PUFlKXRocm93IG5ldyB3KCJpbnZh'@; put 'bGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIGNsb3NpbmcgYCVgIik7aWYoIiUiPT09QWUmJiIlIiE9PWplKXRocm93IG5ldyB3KCJpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIG9wZW5pbmcgYCVgIik7dmFyIERlPVtdO3JldHVybiBuZSh4ZSxvdCxmdW5jdGlvbihG'@; put 'ZSxnZSxjZSxoZSl7RGVbRGUubGVuZ3RoXT1jZT9uZShoZSxsdCwiJDEiKTpnZXx8RmV9KSxEZX0oeGUpLERlPUFlLmxlbmd0aD4wP0FlWzBdOiIiLEZlPVJlKCIlIitEZSsiJSIsamUpLGdlPUZlLm5hbWUsY2U9RmUudmFsdWUsaGU9ITEsd2U9RmUuYWxpYXM7d2UmJihEZT13ZVswXSx1ZShB'@; put 'ZSxJKFswLDFdLHdlKSkpO2Zvcih2YXIgSmU9MSx0dD0hMDtKZTxBZS5sZW5ndGg7SmUrPTEpe3ZhciBLZT1BZVtKZV0sJHQ9X2UoS2UsMCwxKSxSdD1fZShLZSwtMSk7aWYoKCciJz09PSR0fHwiJyI9PT0kdHx8ImAiPT09JHR8fCciJz09PVJ0fHwiJyI9PT1SdHx8ImAiPT09UnQpJiYkdCE9'@; put 'PVJ0KXRocm93IG5ldyB3KCJwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzIik7aWYoKCJjb25zdHJ1Y3RvciI9PT1LZXx8IXR0KSYmKGhlPSEwKSxwKE0sZ2U9IiUiKyhEZSs9Ii4iK0tlKSsiJSIpKWNlPU1bZ2VdO2Vsc2UgaWYobnVsbCE9Y2Up'@; put 'e2lmKCEoS2UgaW4gY2UpKXtpZighamUpdGhyb3cgbmV3IFMoImJhc2UgaW50cmluc2ljIGZvciAiK3hlKyIgZXhpc3RzLCBidXQgdGhlIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUuIik7cmV0dXJufWlmKFcmJkplKzE+PUFlLmxlbmd0aCl7dmFyIEx0PVcoY2UsS2UpO2NlPSh0dD0hIUx0'@; put 'KSYmImdldCJpbiBMdCYmISgib3JpZ2luYWxWYWx1ZSJpbiBMdC5nZXQpP0x0LmdldDpjZVtLZV19ZWxzZSB0dD1wKGNlLEtlKSxjZT1jZVtLZV07dHQmJiFoZSYmKE1bZ2VdPWNlKX19cmV0dXJuIGNlfX0sMjcyMDMoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg2NTg5MSk7ZmUuZXhw'@; put 'b3J0cz15LmdldFByb3RvdHlwZU9mfHxudWxsfSw5NzY2OShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldFByb3RvdHlwZU9mfHxudWxsfSw5MTYyNyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDk3NjY5KSxjPWgoMjcyMDMp'@; put 'LHM9aCg2MzM2MSk7ZmUuZXhwb3J0cz15P2Z1bmN0aW9uKHYpe3JldHVybiB5KHYpfTpjP2Z1bmN0aW9uKHYpe2lmKCF2fHwib2JqZWN0IiE9dHlwZW9mIHYmJiJmdW5jdGlvbiIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoImdldFByb3RvOiBub3QgYW4gb2JqZWN0Iik7cmV0dXJu'@; put 'IGModil9OnM/ZnVuY3Rpb24odil7cmV0dXJuIHModil9Om51bGx9LDUyNzg2KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yfSw4Mzc5OChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDUyNzg2KTtpZih5KXRyeXt5KFtdLCJs'@; put 'ZW5ndGgiKX1jYXRjaHt5PW51bGx9ZmUuZXhwb3J0cz15fSwzNTg2MShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQ1NzApLGM9ZnVuY3Rpb24oKXtyZXR1cm4hIXl9O2MuaGFzQXJyYXlMZW5ndGhEZWZpbmVCdWc9ZnVuY3Rpb24oKXtpZigheSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJu'@; put 'IDEhPT15KFtdLCJsZW5ndGgiLHt2YWx1ZToxfSkubGVuZ3RofWNhdGNoe3JldHVybiEwfX0sZmUuZXhwb3J0cz1jfSwxOTkwMChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLGM9aCg0NTMxMCk7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVy'@; put 'biJmdW5jdGlvbiI9PXR5cGVvZiB5JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIHkoImZvbyIpJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbCgiYmFyIikmJmMoKX19LDQ1MzEwKGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJm'@; put 'dW5jdGlvbiIhPXR5cGVvZiBTeW1ib2x8fCJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVybiExO2lmKCJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yKXJldHVybiEwO3ZhciBoPXt9LHk9U3ltYm9sKCJ0ZXN0IiksYz1PYmplY3QoeSk7'@; put 'aWYoInN0cmluZyI9PXR5cGVvZiB5fHwiW29iamVjdCBTeW1ib2xdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5KXx8IltvYmplY3QgU3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYykpcmV0dXJuITE7Zm9yKHZhciBBIGluIGhbeV09NDIsaCly'@; put 'ZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXMmJjAhPT1PYmplY3Qua2V5cyhoKS5sZW5ndGh8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyYmMCE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGgpLmxlbmd0aClyZXR1cm4h'@; put 'MTt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGgpO2lmKDEhPT12Lmxlbmd0aHx8dlswXSE9PXl8fCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoaCx5KSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3Bl'@; put 'cnR5RGVzY3JpcHRvcil7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHkpO2lmKDQyIT09Qy52YWx1ZXx8ITAhPT1DLmVudW1lcmFibGUpcmV0dXJuITF9cmV0dXJuITB9fSw4ODc3OShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDQ1MzEwKTtmZS5leHBvcnRz'@; put 'PWZ1bmN0aW9uKCl7cmV0dXJuIHkoKSYmISFTeW1ib2wudG9TdHJpbmdUYWd9fSwxMzY4NihmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDI3MDU0KS5CdWZmZXIsYz1oKDE3NTY4KSxzPWgoMjMyMjQpLlRyYW5zZm9ybTtmdW5jdGlvbiB2KEMpe3MuY2FsbCh0aGlzKSx0aGlzLl9ibG9j'@; put 'az15LmFsbG9jVW5zYWZlKEMpLHRoaXMuX2Jsb2NrU2l6ZT1DLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9aCg3MTk5MykodixzKSx2LnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKEMsdyxTKXt2YXIgTD1udWxsO3Ry'@; put 'eXt0aGlzLnVwZGF0ZShDLHcpfWNhdGNoKFIpe0w9Un1TKEwpfSx2LnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oQyl7dmFyIHc9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKFMpe3c9U31DKHcpfSx2LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oQyx3KXtpZih0'@; put 'aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTtmb3IodmFyIFM9YyhDLHcpLEw9dGhpcy5fYmxvY2ssUj0wO3RoaXMuX2Jsb2NrT2Zmc2V0K1MubGVuZ3RoLVI+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgeD10aGlzLl9ibG9ja09mZnNl'@; put 'dDt4PHRoaXMuX2Jsb2NrU2l6ZTspTFt4XT1TW1JdLHgrPTEsUis9MTt0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wfWZvcig7UjxTLmxlbmd0aDspTFt0aGlzLl9ibG9ja09mZnNldF09U1tSXSx0aGlzLl9ibG9ja09mZnNldCs9MSxSKz0xO2Zvcih2YXIgVT0wLEg9OCpTLmxl'@; put 'bmd0aDtIPjA7KytVKXRoaXMuX2xlbmd0aFtVXSs9SCwoSD10aGlzLl9sZW5ndGhbVV0vNDI5NDk2NzI5NnwwKT4wJiYodGhpcy5fbGVuZ3RoW1VdLT00Mjk0OTY3Mjk2KkgpO3JldHVybiB0aGlzfSx2LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBk'@; put 'YXRlIGlzIG5vdCBpbXBsZW1lbnRlZCIpfSx2LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oQyl7aWYodGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcigiRGlnZXN0IGFscmVhZHkgY2FsbGVkIik7dGhpcy5fZmluYWxpemVkPSEwO3ZhciB3PXRoaXMuX2RpZ2VzdCgpO3ZvaWQgMCE9'@; put 'PUMmJih3PXcudG9TdHJpbmcoQykpLHRoaXMuX2Jsb2NrLmZpbGwoMCksdGhpcy5fYmxvY2tPZmZzZXQ9MDtmb3IodmFyIFM9MDtTPDQ7KytTKXRoaXMuX2xlbmd0aFtTXT0wO3JldHVybiB3fSx2LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfZGlnZXN0'@; put 'IGlzIG5vdCBpbXBsZW1lbnRlZCIpfSxmZS5leHBvcnRzPXZ9LDEwNTcxKGZlKXt2YXIgaj17fS50b1N0cmluZztmZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGgpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PWouY2FsbChoKX19LDU2Njc3KGZlLGosaCl7InVzZSBzdHJpY3Qi'@; put 'O3ZhciB5PWgoOTY1NiksYz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oVSl7dmFyIEg9W107Zm9yKHZhciBWIGluIFUpSC5wdXNoKFYpO3JldHVybiBIfTtmZS5leHBvcnRzPUw7dmFyIHM9T2JqZWN0LmNyZWF0ZShoKDI3NjM3KSk7cy5pbmhlcml0cz1oKDcxOTkzKTt2YXIgQT1oKDMzNjExKSx2'@; put 'PWgoMjM2MTIpO3MuaW5oZXJpdHMoTCxBKTtmb3IodmFyIEM9Yyh2LnByb3RvdHlwZSksdz0wO3c8Qy5sZW5ndGg7dysrKXt2YXIgUz1DW3ddO0wucHJvdG90eXBlW1NdfHwoTC5wcm90b3R5cGVbU109di5wcm90b3R5cGVbU10pfWZ1bmN0aW9uIEwoVSl7aWYoISh0aGlzIGluc3RhbmNlb2Yg'@; put 'TCkpcmV0dXJuIG5ldyBMKFUpO0EuY2FsbCh0aGlzLFUpLHYuY2FsbCh0aGlzLFUpLFUmJiExPT09VS5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLFUmJiExPT09VS53cml0YWJsZSYmKHRoaXMud3JpdGFibGU9ITEpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCxVJiYhMT09PVUuYWxsb3dI'@; put 'YWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSksdGhpcy5vbmNlKCJlbmQiLFIpfWZ1bmN0aW9uIFIoKXt0aGlzLmFsbG93SGFsZk9wZW58fHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fHkubmV4dFRpY2soeCx0aGlzKX1mdW5jdGlvbiB4KFUpe1UuZW5kKCl9T2JqZWN0LmRlZmlu'@; put 'ZVByb3BlcnR5KEwucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCJkZXN0cm95ZWQi'@; put 'LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oVSl7dm9p'@; put 'ZCAwPT09dGhpcy5fcmVhZGFibGVTdGF0ZXx8dm9pZCAwPT09dGhpcy5fd3JpdGFibGVTdGF0ZXx8KHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPVUsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9VSl9fSksTC5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oVSxIKXt0aGlz'@; put 'LnB1c2gobnVsbCksdGhpcy5lbmQoKSx5Lm5leHRUaWNrKEgsVSl9fSw3MTQ4OShmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPXM7dmFyIHk9aCg2MjEyMyksYz1PYmplY3QuY3JlYXRlKGgoMjc2MzcpKTtmdW5jdGlvbiBzKEEpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHMpKXJldHVy'@; put 'biBuZXcgcyhBKTt5LmNhbGwodGhpcyxBKX1jLmluaGVyaXRzPWgoNzE5OTMpLGMuaW5oZXJpdHMocyx5KSxzLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKEEsdixDKXtDKG51bGwsQSl9fSwzMzYxMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDk2NTYpO2ZlLmV4cG9ydHM9'@; put 'cTt2YXIgcyxjPWgoMTA1NzEpO3EuUmVhZGFibGVTdGF0ZT1XLGgoNDQzNTYpO3ZhciB2PWZ1bmN0aW9uKFJlLGFlKXtyZXR1cm4gUmUubGlzdGVuZXJzKGFlKS5sZW5ndGh9LEM9aCg4MTY1Miksdz1oKDM4MDY1KS5CdWZmZXIsUz0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3'@; put 'aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LHg9T2JqZWN0LmNyZWF0ZShoKDI3NjM3KSk7eC5pbmhlcml0cz1oKDcxOTkzKTt2YXIgVT1oKDkyMzgyKSxIPXZvaWQgMDtIPVUmJlUuZGVidWdsb2c/VS5kZWJ1Z2xvZygi'@; put 'c3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciB6LFY9aCgxNDMzMSksTj1oKDgyOTkpO3guaW5oZXJpdHMocSxDKTt2YXIgWT1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiBXKFJlLGFlKXt2YXIgeGU9YWUgaW5zdGFuY2VvZihzPXN8fGgoNTY2'@; put 'NzcpKTt0aGlzLm9iamVjdE1vZGU9ISEoUmU9UmV8fHt9KS5vYmplY3RNb2RlLHhlJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFSZS5yZWFkYWJsZU9iamVjdE1vZGUpO3ZhciBqZT1SZS5oaWdoV2F0ZXJNYXJrLEFlPVJlLnJlYWRhYmxlSGlnaFdhdGVyTWFyazt0aGlz'@; put 'LmhpZ2hXYXRlck1hcms9amV8fDA9PT1qZT9qZTp4ZSYmKEFlfHwwPT09QWUpP0FlOnRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NCx0aGlzLmhpZ2hXYXRlck1hcms9TWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspLHRoaXMuYnVmZmVyPW5ldyBWLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBl'@; put 'cz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxp'@; put 'c3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1SZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5j'@; put 'b2Rpbmc9bnVsbCxSZS5lbmNvZGluZyYmKHp8fCh6PWgoNTkxNjQpLkkpLHRoaXMuZGVjb2Rlcj1uZXcgeihSZS5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1SZS5lbmNvZGluZyl9ZnVuY3Rpb24gcShSZSl7aWYocz1zfHxoKDU2Njc3KSwhKHRoaXMgaW5zdGFuY2VvZiBxKSlyZXR1cm4gbmV3'@; put 'IHEoUmUpO3RoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IFcoUmUsdGhpcyksdGhpcy5yZWFkYWJsZT0hMCxSZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBSZS5yZWFkJiYodGhpcy5fcmVhZD1SZS5yZWFkKSwiZnVuY3Rpb24iPT10eXBlb2YgUmUuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9UmUuZGVz'@; put 'dHJveSkpLEMuY2FsbCh0aGlzKX1mdW5jdGlvbiByZShSZSxhZSx4ZSxqZSxBZSl7dmFyIEZlLERlPVJlLl9yZWFkYWJsZVN0YXRlO3JldHVybiBudWxsPT09YWU/KERlLnJlYWRpbmc9ITEsZnVuY3Rpb24gZihSZSxhZSl7aWYoIWFlLmVuZGVkKXtpZihhZS5kZWNvZGVyKXt2YXIgeGU9YWUu'@; put 'ZGVjb2Rlci5lbmQoKTt4ZSYmeGUubGVuZ3RoJiYoYWUuYnVmZmVyLnB1c2goeGUpLGFlLmxlbmd0aCs9YWUub2JqZWN0TW9kZT8xOnhlLmxlbmd0aCl9YWUuZW5kZWQ9ITAsYihSZSl9fShSZSxEZSkpOihBZXx8KEZlPWZ1bmN0aW9uIENlKFJlLGFlKXt2YXIgeGU7cmV0dXJuIWZ1bmN0aW9u'@; put 'IFIoUmUpe3JldHVybiB3LmlzQnVmZmVyKFJlKXx8UmUgaW5zdGFuY2VvZiBTfShhZSkmJiJzdHJpbmciIT10eXBlb2YgYWUmJnZvaWQgMCE9PWFlJiYhUmUub2JqZWN0TW9kZSYmKHhlPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSkseGV9KERlLGFl'@; put 'KSksRmU/UmUuZW1pdCgiZXJyb3IiLEZlKTpEZS5vYmplY3RNb2RlfHxhZSYmYWUubGVuZ3RoPjA/KCJzdHJpbmciIT10eXBlb2YgYWUmJiFEZS5vYmplY3RNb2RlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoYWUpIT09dy5wcm90b3R5cGUmJihhZT1mdW5jdGlvbiBMKFJlKXtyZXR1cm4gdy5m'@; put 'cm9tKFJlKX0oYWUpKSxqZT9EZS5lbmRFbWl0dGVkP1JlLmVtaXQoImVycm9yIixuZXcgRXJyb3IoInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50IikpOm1lKFJlLERlLGFlLCEwKTpEZS5lbmRlZD9SZS5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJzdHJlYW0ucHVzaCgpIGFmdGVy'@; put 'IEVPRiIpKTooRGUucmVhZGluZz0hMSxEZS5kZWNvZGVyJiYheGU/KGFlPURlLmRlY29kZXIud3JpdGUoYWUpLERlLm9iamVjdE1vZGV8fDAhPT1hZS5sZW5ndGg/bWUoUmUsRGUsYWUsITEpOk0oUmUsRGUpKTptZShSZSxEZSxhZSwhMSkpKTpqZXx8KERlLnJlYWRpbmc9ITEpKSxmdW5jdGlv'@; put 'biBJZShSZSl7cmV0dXJuIVJlLmVuZGVkJiYoUmUubmVlZFJlYWRhYmxlfHxSZS5sZW5ndGg8UmUuaGlnaFdhdGVyTWFya3x8MD09PVJlLmxlbmd0aCl9KERlKX1mdW5jdGlvbiBtZShSZSxhZSx4ZSxqZSl7YWUuZmxvd2luZyYmMD09PWFlLmxlbmd0aCYmIWFlLnN5bmM/KFJlLmVtaXQoImRh'@; put 'dGEiLHhlKSxSZS5yZWFkKDApKTooYWUubGVuZ3RoKz1hZS5vYmplY3RNb2RlPzE6eGUubGVuZ3RoLGplP2FlLmJ1ZmZlci51bnNoaWZ0KHhlKTphZS5idWZmZXIucHVzaCh4ZSksYWUubmVlZFJlYWRhYmxlJiZiKFJlKSksTShSZSxhZSl9ZnVuY3Rpb24gWChSZSxhZSl7cmV0dXJuIFJlPD0w'@; put 'fHwwPT09YWUubGVuZ3RoJiZhZS5lbmRlZD8wOmFlLm9iamVjdE1vZGU/MTpSZSE9UmU/YWUuZmxvd2luZyYmYWUubGVuZ3RoP2FlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOmFlLmxlbmd0aDooUmU+YWUuaGlnaFdhdGVyTWFyayYmKGFlLmhpZ2hXYXRlck1hcms9ZnVuY3Rpb24gcWUoUmUp'@; put 'e3JldHVybiBSZT49ODM4ODYwOD9SZT04Mzg4NjA4OihSZS0tLFJlfD1SZT4+PjEsUmV8PVJlPj4+MixSZXw9UmU+Pj40LFJlfD1SZT4+PjgsUmV8PVJlPj4+MTYsUmUrKyksUmV9KFJlKSksUmU8PWFlLmxlbmd0aD9SZTphZS5lbmRlZD9hZS5sZW5ndGg6KGFlLm5lZWRSZWFkYWJsZT0hMCww'@; put 'KSl9ZnVuY3Rpb24gYihSZSl7dmFyIGFlPVJlLl9yZWFkYWJsZVN0YXRlO2FlLm5lZWRSZWFkYWJsZT0hMSxhZS5lbWl0dGVkUmVhZGFibGV8fChIKCJlbWl0UmVhZGFibGUiLGFlLmZsb3dpbmcpLGFlLmVtaXR0ZWRSZWFkYWJsZT0hMCxhZS5zeW5jP3kubmV4dFRpY2soayxSZSk6ayhSZSkp'@; put 'fWZ1bmN0aW9uIGsoUmUpe0goImVtaXQgcmVhZGFibGUiKSxSZS5lbWl0KCJyZWFkYWJsZSIpLEkoUmUpfWZ1bmN0aW9uIE0oUmUsYWUpe2FlLnJlYWRpbmdNb3JlfHwoYWUucmVhZGluZ01vcmU9ITAseS5uZXh0VGljayhCLFJlLGFlKSl9ZnVuY3Rpb24gQihSZSxhZSl7Zm9yKHZhciB4ZT1h'@; put 'ZS5sZW5ndGg7IWFlLnJlYWRpbmcmJiFhZS5mbG93aW5nJiYhYWUuZW5kZWQmJmFlLmxlbmd0aDxhZS5oaWdoV2F0ZXJNYXJrJiYoSCgibWF5YmVSZWFkTW9yZSByZWFkIDAiKSxSZS5yZWFkKDApLHhlIT09YWUubGVuZ3RoKTspeGU9YWUubGVuZ3RoO2FlLnJlYWRpbmdNb3JlPSExfWZ1bmN0'@; put 'aW9uIEcoUmUpe0goInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCIpLFJlLnJlYWQoMCl9ZnVuY3Rpb24gcChSZSxhZSl7YWUucmVhZGluZ3x8KEgoInJlc3VtZSByZWFkIDAiKSxSZS5yZWFkKDApKSxhZS5yZXN1bWVTY2hlZHVsZWQ9ITEsYWUuYXdhaXREcmFpbj0wLFJlLmVtaXQoInJlc3Vt'@; put 'ZSIpLEkoUmUpLGFlLmZsb3dpbmcmJiFhZS5yZWFkaW5nJiZSZS5yZWFkKDApfWZ1bmN0aW9uIEkoUmUpe3ZhciBhZT1SZS5fcmVhZGFibGVTdGF0ZTtmb3IoSCgiZmxvdyIsYWUuZmxvd2luZyk7YWUuZmxvd2luZyYmbnVsbCE9PVJlLnJlYWQoKTspO31mdW5jdGlvbiB1ZShSZSxhZSl7cmV0'@; put 'dXJuIDA9PT1hZS5sZW5ndGg/bnVsbDooYWUub2JqZWN0TW9kZT94ZT1hZS5idWZmZXIuc2hpZnQoKTohUmV8fFJlPj1hZS5sZW5ndGg/KHhlPWFlLmRlY29kZXI/YWUuYnVmZmVyLmpvaW4oIiIpOjE9PT1hZS5idWZmZXIubGVuZ3RoP2FlLmJ1ZmZlci5oZWFkLmRhdGE6YWUuYnVmZmVyLmNv'@; put 'bmNhdChhZS5sZW5ndGgpLGFlLmJ1ZmZlci5jbGVhcigpKTp4ZT1mdW5jdGlvbiBuZShSZSxhZSx4ZSl7dmFyIGplO3JldHVybiBSZTxhZS5oZWFkLmRhdGEubGVuZ3RoPyhqZT1hZS5oZWFkLmRhdGEuc2xpY2UoMCxSZSksYWUuaGVhZC5kYXRhPWFlLmhlYWQuZGF0YS5zbGljZShSZSkpOmpl'@; put 'PVJlPT09YWUuaGVhZC5kYXRhLmxlbmd0aD9hZS5zaGlmdCgpOnhlP2Z1bmN0aW9uIF9lKFJlLGFlKXt2YXIgeGU9YWUuaGVhZCxqZT0xLEFlPXhlLmRhdGE7Zm9yKFJlLT1BZS5sZW5ndGg7eGU9eGUubmV4dDspe3ZhciBEZT14ZS5kYXRhLEZlPVJlPkRlLmxlbmd0aD9EZS5sZW5ndGg6UmU7'@; put 'aWYoQWUrPUZlPT09RGUubGVuZ3RoP0RlOkRlLnNsaWNlKDAsUmUpLDA9PT0oUmUtPUZlKSl7RmU9PT1EZS5sZW5ndGg/KCsramUsYWUuaGVhZD14ZS5uZXh0P3hlLm5leHQ6YWUudGFpbD1udWxsKTooYWUuaGVhZD14ZSx4ZS5kYXRhPURlLnNsaWNlKEZlKSk7YnJlYWt9KytqZX1yZXR1cm4g'@; put 'YWUubGVuZ3RoLT1qZSxBZX0oUmUsYWUpOmZ1bmN0aW9uIFBlKFJlLGFlKXt2YXIgeGU9dy5hbGxvY1Vuc2FmZShSZSksamU9YWUuaGVhZCxBZT0xO2ZvcihqZS5kYXRhLmNvcHkoeGUpLFJlLT1qZS5kYXRhLmxlbmd0aDtqZT1qZS5uZXh0Oyl7dmFyIERlPWplLmRhdGEsRmU9UmU+RGUubGVu'@; put 'Z3RoP0RlLmxlbmd0aDpSZTtpZihEZS5jb3B5KHhlLHhlLmxlbmd0aC1SZSwwLEZlKSwwPT09KFJlLT1GZSkpe0ZlPT09RGUubGVuZ3RoPygrK0FlLGFlLmhlYWQ9amUubmV4dD9qZS5uZXh0OmFlLnRhaWw9bnVsbCk6KGFlLmhlYWQ9amUsamUuZGF0YT1EZS5zbGljZShGZSkpO2JyZWFrfSsr'@; put 'QWV9cmV0dXJuIGFlLmxlbmd0aC09QWUseGV9KFJlLGFlKSxqZX0oUmUsYWUuYnVmZmVyLGFlLmRlY29kZXIpLHhlKTt2YXIgeGV9ZnVuY3Rpb24gb3QoUmUpe3ZhciBhZT1SZS5fcmVhZGFibGVTdGF0ZTtpZihhZS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoJyJlbmRSZWFkYWJsZSgpIiBj'@; put 'YWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO2FlLmVuZEVtaXR0ZWR8fChhZS5lbmRlZD0hMCx5Lm5leHRUaWNrKGx0LGFlLFJlKSl9ZnVuY3Rpb24gbHQoUmUsYWUpeyFSZS5lbmRFbWl0dGVkJiYwPT09UmUubGVuZ3RoJiYoUmUuZW5kRW1pdHRlZD0hMCxhZS5yZWFkYWJsZT0hMSxhZS5l'@; put 'bWl0KCJlbmQiKSl9ZnVuY3Rpb24gZHQoUmUsYWUpe2Zvcih2YXIgeGU9MCxqZT1SZS5sZW5ndGg7eGU8amU7eGUrKylpZihSZVt4ZV09PT1hZSlyZXR1cm4geGU7cmV0dXJuLTF9T2JqZWN0LmRlZmluZVByb3BlcnR5KHEucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihSZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPVJlKX19KSxxLnByb3RvdHlwZS5kZXN0cm95PU4u'@; put 'ZGVzdHJveSxxLnByb3RvdHlwZS5fdW5kZXN0cm95PU4udW5kZXN0cm95LHEucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKFJlLGFlKXt0aGlzLnB1c2gobnVsbCksYWUoUmUpfSxxLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKFJlLGFlKXt2YXIgamUseGU9dGhpcy5fcmVhZGFibGVTdGF0'@; put 'ZTtyZXR1cm4geGUub2JqZWN0TW9kZT9qZT0hMDoic3RyaW5nIj09dHlwZW9mIFJlJiYoKGFlPWFlfHx4ZS5kZWZhdWx0RW5jb2RpbmcpIT09eGUuZW5jb2RpbmcmJihSZT13LmZyb20oUmUsYWUpLGFlPSIiKSxqZT0hMCkscmUodGhpcyxSZSxhZSwhMSxqZSl9LHEucHJvdG90eXBlLnVuc2hp'@; put 'ZnQ9ZnVuY3Rpb24oUmUpe3JldHVybiByZSh0aGlzLFJlLG51bGwsITAsITEpfSxxLnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxxLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihSZSl7cmV0dXJuIHp8'@; put 'fCh6PWgoNTkxNjQpLkkpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj1uZXcgeihSZSksdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz1SZSx0aGlzfSxxLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKFJlKXtIKCJyZWFkIixSZSksUmU9cGFyc2VJbnQoUmUsMTApO3ZhciBhZT10aGlz'@; put 'Ll9yZWFkYWJsZVN0YXRlLHhlPVJlO2lmKDAhPT1SZSYmKGFlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PVJlJiZhZS5uZWVkUmVhZGFibGUmJihhZS5sZW5ndGg+PWFlLmhpZ2hXYXRlck1hcmt8fGFlLmVuZGVkKSlyZXR1cm4gSCgicmVhZDogZW1pdFJlYWRhYmxlIixhZS5sZW5ndGgsYWUu'@; put 'ZW5kZWQpLDA9PT1hZS5sZW5ndGgmJmFlLmVuZGVkP290KHRoaXMpOmIodGhpcyksbnVsbDtpZigwPT09KFJlPVgoUmUsYWUpKSYmYWUuZW5kZWQpcmV0dXJuIDA9PT1hZS5sZW5ndGgmJm90KHRoaXMpLG51bGw7dmFyIEFlLGplPWFlLm5lZWRSZWFkYWJsZTtyZXR1cm4gSCgibmVlZCByZWFk'@; put 'YWJsZSIsamUpLCgwPT09YWUubGVuZ3RofHxhZS5sZW5ndGgtUmU8YWUuaGlnaFdhdGVyTWFyaykmJkgoImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrIixqZT0hMCksYWUuZW5kZWR8fGFlLnJlYWRpbmc/SCgicmVhZGluZyBvciBlbmRlZCIsamU9ITEpOmplJiYoSCgiZG8gcmVhZCIpLGFl'@; put 'LnJlYWRpbmc9ITAsYWUuc3luYz0hMCwwPT09YWUubGVuZ3RoJiYoYWUubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKGFlLmhpZ2hXYXRlck1hcmspLGFlLnN5bmM9ITEsYWUucmVhZGluZ3x8KFJlPVgoeGUsYWUpKSksbnVsbD09PShBZT1SZT4wP3VlKFJlLGFlKTpudWxsKT8oYWUubmVl'@; put 'ZFJlYWRhYmxlPSEwLFJlPTApOmFlLmxlbmd0aC09UmUsMD09PWFlLmxlbmd0aCYmKGFlLmVuZGVkfHwoYWUubmVlZFJlYWRhYmxlPSEwKSx4ZSE9PVJlJiZhZS5lbmRlZCYmb3QodGhpcykpLG51bGwhPT1BZSYmdGhpcy5lbWl0KCJkYXRhIixBZSksQWV9LHEucHJvdG90eXBlLl9yZWFkPWZ1'@; put 'bmN0aW9uKFJlKXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIl9yZWFkKCkgaXMgbm90IGltcGxlbWVudGVkIikpfSxxLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKFJlLGFlKXt2YXIgeGU9dGhpcyxqZT10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChqZS5waXBlc0NvdW50KXtjYXNl'@; put 'IDA6amUucGlwZXM9UmU7YnJlYWs7Y2FzZSAxOmplLnBpcGVzPVtqZS5waXBlcyxSZV07YnJlYWs7ZGVmYXVsdDpqZS5waXBlcy5wdXNoKFJlKX1qZS5waXBlc0NvdW50Kz0xLEgoInBpcGUgY291bnQ9JWQgb3B0cz0laiIsamUucGlwZXNDb3VudCxhZSk7dmFyIERlPWFlJiYhMT09PWFlLmVu'@; put 'ZHx8UmU9PT1wcm9jZXNzLnN0ZG91dHx8UmU9PT1wcm9jZXNzLnN0ZGVycj9MdDpnZTtmdW5jdGlvbiBnZSgpe0goIm9uZW5kIiksUmUuZW5kKCl9amUuZW5kRW1pdHRlZD95Lm5leHRUaWNrKERlKTp4ZS5vbmNlKCJlbmQiLERlKSxSZS5vbigidW5waXBlIixmdW5jdGlvbiBGZShHdCxndCl7'@; put 'SCgib251bnBpcGUiKSxHdD09PXhlJiZndCYmITE9PT1ndC5oYXNVbnBpcGVkJiYoZ3QuaGFzVW5waXBlZD0hMCxmdW5jdGlvbiB3ZSgpe0goImNsZWFudXAiKSxSZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLCR0KSxSZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixSdCksUmUucmVtb3ZlTGlz'@; put 'dGVuZXIoImRyYWluIixjZSksUmUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixLZSksUmUucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsRmUpLHhlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLGdlKSx4ZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixMdCkseGUucmVtb3ZlTGlzdGVuZXIoImRhdGEiLHR0KSxo'@; put 'ZT0hMCxqZS5hd2FpdERyYWluJiYoIVJlLl93cml0YWJsZVN0YXRlfHxSZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pJiZjZSgpfSgpKX0pO3ZhciBjZT1mdW5jdGlvbiBLKFJlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYWU9UmUuX3JlYWRhYmxlU3RhdGU7SCgicGlwZU9uRHJhaW4iLGFl'@; put 'LmF3YWl0RHJhaW4pLGFlLmF3YWl0RHJhaW4mJmFlLmF3YWl0RHJhaW4tLSwwPT09YWUuYXdhaXREcmFpbiYmdihSZSwiZGF0YSIpJiYoYWUuZmxvd2luZz0hMCxJKFJlKSl9fSh4ZSk7UmUub24oImRyYWluIixjZSk7dmFyIGhlPSExLEplPSExO2Z1bmN0aW9uIHR0KEd0KXtIKCJvbmRhdGEi'@; put 'KSxKZT0hMSwhMT09PVJlLndyaXRlKEd0KSYmIUplJiYoKDE9PT1qZS5waXBlc0NvdW50JiZqZS5waXBlcz09PVJlfHxqZS5waXBlc0NvdW50PjEmJi0xIT09ZHQoamUucGlwZXMsUmUpKSYmIWhlJiYoSCgiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixqZS5hd2FpdERyYWluKSxqZS5h'@; put 'd2FpdERyYWluKyssSmU9ITApLHhlLnBhdXNlKCkpfWZ1bmN0aW9uIEtlKEd0KXtIKCJvbmVycm9yIixHdCksTHQoKSxSZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLEtlKSwwPT09dihSZSwiZXJyb3IiKSYmUmUuZW1pdCgiZXJyb3IiLEd0KX1mdW5jdGlvbiAkdCgpe1JlLnJlbW92ZUxpc3Rl'@; put 'bmVyKCJmaW5pc2giLFJ0KSxMdCgpfWZ1bmN0aW9uIFJ0KCl7SCgib25maW5pc2giKSxSZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLCR0KSxMdCgpfWZ1bmN0aW9uIEx0KCl7SCgidW5waXBlIikseGUudW5waXBlKFJlKX1yZXR1cm4geGUub24oImRhdGEiLHR0KSxmdW5jdGlvbiBGKFJlLGFl'@; put 'LHhlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgUmUucHJlcGVuZExpc3RlbmVyKXJldHVybiBSZS5wcmVwZW5kTGlzdGVuZXIoYWUseGUpO1JlLl9ldmVudHMmJlJlLl9ldmVudHNbYWVdP2MoUmUuX2V2ZW50c1thZV0pP1JlLl9ldmVudHNbYWVdLnVuc2hpZnQoeGUpOlJlLl9ldmVudHNbYWVd'@; put 'PVt4ZSxSZS5fZXZlbnRzW2FlXV06UmUub24oYWUseGUpfShSZSwiZXJyb3IiLEtlKSxSZS5vbmNlKCJjbG9zZSIsJHQpLFJlLm9uY2UoImZpbmlzaCIsUnQpLFJlLmVtaXQoInBpcGUiLHhlKSxqZS5mbG93aW5nfHwoSCgicGlwZSByZXN1bWUiKSx4ZS5yZXN1bWUoKSksUmV9LHEucHJvdG90'@; put 'eXBlLnVucGlwZT1mdW5jdGlvbihSZSl7dmFyIGFlPXRoaXMuX3JlYWRhYmxlU3RhdGUseGU9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1hZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1hZS5waXBlc0NvdW50KXJldHVybiBSZSYmUmUhPT1hZS5waXBlc3x8KFJlfHwoUmU9YWUucGlw'@; put 'ZXMpLGFlLnBpcGVzPW51bGwsYWUucGlwZXNDb3VudD0wLGFlLmZsb3dpbmc9ITEsUmUmJlJlLmVtaXQoInVucGlwZSIsdGhpcyx4ZSkpLHRoaXM7aWYoIVJlKXt2YXIgamU9YWUucGlwZXMsQWU9YWUucGlwZXNDb3VudDthZS5waXBlcz1udWxsLGFlLnBpcGVzQ291bnQ9MCxhZS5mbG93aW5n'@; put 'PSExO2Zvcih2YXIgRGU9MDtEZTxBZTtEZSsrKWplW0RlXS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4gdGhpc312YXIgRmU9ZHQoYWUucGlwZXMsUmUpO3JldHVybi0xPT09RmV8fChhZS5waXBlcy5zcGxpY2UoRmUsMSksYWUucGlwZXNDb3VudC09MSwxPT09'@; put 'YWUucGlwZXNDb3VudCYmKGFlLnBpcGVzPWFlLnBpcGVzWzBdKSxSZS5lbWl0KCJ1bnBpcGUiLHRoaXMseGUpKSx0aGlzfSxxLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1xLnByb3RvdHlwZS5vbj1mdW5jdGlvbihSZSxhZSl7dmFyIHhlPUMucHJvdG90eXBlLm9uLmNhbGwodGhpcyxSZSxhZSk7'@; put 'aWYoImRhdGEiPT09UmUpITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJnRoaXMucmVzdW1lKCk7ZWxzZSBpZigicmVhZGFibGUiPT09UmUpe3ZhciBqZT10aGlzLl9yZWFkYWJsZVN0YXRlOyFqZS5lbmRFbWl0dGVkJiYhamUucmVhZGFibGVMaXN0ZW5pbmcmJihqZS5yZWFkYWJs'@; put 'ZUxpc3RlbmluZz1qZS5uZWVkUmVhZGFibGU9ITAsamUuZW1pdHRlZFJlYWRhYmxlPSExLGplLnJlYWRpbmc/amUubGVuZ3RoJiZiKHRoaXMpOnkubmV4dFRpY2soRyx0aGlzKSl9cmV0dXJuIHhlfSxxLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgUmU9dGhpcy5fcmVhZGFibGVT'@; put 'dGF0ZTtyZXR1cm4gUmUuZmxvd2luZ3x8KEgoInJlc3VtZSIpLFJlLmZsb3dpbmc9ITAsZnVuY3Rpb24gRChSZSxhZSl7YWUucmVzdW1lU2NoZWR1bGVkfHwoYWUucmVzdW1lU2NoZWR1bGVkPSEwLHkubmV4dFRpY2socCxSZSxhZSkpfSh0aGlzLFJlKSksdGhpc30scS5wcm90b3R5cGUucGF1'@; put 'c2U9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoSCgicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJw'@; put 'YXVzZSIpKSx0aGlzfSxxLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKFJlKXt2YXIgYWU9dGhpcyx4ZT10aGlzLl9yZWFkYWJsZVN0YXRlLGplPSExO2Zvcih2YXIgQWUgaW4gUmUub24oImVuZCIsZnVuY3Rpb24oKXtpZihIKCJ3cmFwcGVkIGVuZCIpLHhlLmRlY29kZXImJiF4ZS5lbmRlZCl7'@; put 'dmFyIEZlPXhlLmRlY29kZXIuZW5kKCk7RmUmJkZlLmxlbmd0aCYmYWUucHVzaChGZSl9YWUucHVzaChudWxsKX0pLFJlLm9uKCJkYXRhIixmdW5jdGlvbihGZSl7SCgid3JhcHBlZCBkYXRhIikseGUuZGVjb2RlciYmKEZlPXhlLmRlY29kZXIud3JpdGUoRmUpKSx4ZS5vYmplY3RNb2RlJiZu'@; put 'dWxsPT1GZXx8ISh4ZS5vYmplY3RNb2RlfHxGZSYmRmUubGVuZ3RoKXx8YWUucHVzaChGZSl8fChqZT0hMCxSZS5wYXVzZSgpKX0pLFJlKXZvaWQgMD09PXRoaXNbQWVdJiYiZnVuY3Rpb24iPT10eXBlb2YgUmVbQWVdJiYodGhpc1tBZV09ZnVuY3Rpb24oRmUpe3JldHVybiBmdW5jdGlvbigp'@; put 'e3JldHVybiBSZVtGZV0uYXBwbHkoUmUsYXJndW1lbnRzKX19KEFlKSk7Zm9yKHZhciBEZT0wO0RlPFkubGVuZ3RoO0RlKyspUmUub24oWVtEZV0sdGhpcy5lbWl0LmJpbmQodGhpcyxZW0RlXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKEZlKXtIKCJ3cmFwcGVkIF9yZWFkIixGZSks'@; put 'amUmJihqZT0hMSxSZS5yZXN1bWUoKSl9LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxLnByb3RvdHlwZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLHEu'@; put 'X2Zyb21MaXN0PXVlfSw2MjEyMyhmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUE7dmFyIHk9aCg1NjY3NyksYz1PYmplY3QuY3JlYXRlKGgoMjc2MzcpKTtmdW5jdGlvbiBzKHcsUyl7dmFyIEw9dGhpcy5fdHJhbnNmb3JtU3RhdGU7TC50cmFuc2Zvcm1pbmc9ITE7dmFyIFI9TC53'@; put 'cml0ZWNiO2lmKCFSKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIndyaXRlIGNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyIpKTtMLndyaXRlY2h1bms9bnVsbCxMLndyaXRlY2I9bnVsbCxudWxsIT1TJiZ0aGlzLnB1c2goUyksUih3KTt2YXIgeD10aGlzLl9yZWFk'@; put 'YWJsZVN0YXRlO3gucmVhZGluZz0hMSwoeC5uZWVkUmVhZGFibGV8fHgubGVuZ3RoPHguaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoeC5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBBKHcpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEEpKXJldHVybiBuZXcgQSh3KTt5LmNhbGwodGhpcyx3KSx0'@; put 'aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06cy5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0h'@; put 'MCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsdyYmKCJmdW5jdGlvbiI9PXR5cGVvZiB3LnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT13LnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIHcuZmx1c2gmJih0aGlzLl9mbHVzaD13LmZsdXNoKSksdGhpcy5vbigicHJlZmluaXNo'@; put 'Iix2KX1mdW5jdGlvbiB2KCl7dmFyIHc9dGhpczsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fZmx1c2g/dGhpcy5fZmx1c2goZnVuY3Rpb24oUyxMKXtDKHcsUyxMKX0pOkModGhpcyxudWxsLG51bGwpfWZ1bmN0aW9uIEModyxTLEwpe2lmKFMpcmV0dXJuIHcuZW1pdCgiZXJyb3IiLFMpO2lm'@; put 'KG51bGwhPUwmJncucHVzaChMKSx3Ll93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCIpO2lmKHcuX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZyl0aHJvdyBuZXcgRXJyb3IoIkNhbGxpbmcg'@; put 'dHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmciKTtyZXR1cm4gdy5wdXNoKG51bGwpfWMuaW5oZXJpdHM9aCg3MTk5MyksYy5pbmhlcml0cyhBLHkpLEEucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odyxTKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5z'@; put 'Zm9ybT0hMSx5LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyx3LFMpfSxBLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHcsUyxMKXt0aHJvdyBuZXcgRXJyb3IoIl90cmFuc2Zvcm0oKSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sQS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHcsUyxM'@; put 'KXt2YXIgUj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZihSLndyaXRlY2I9TCxSLndyaXRlY2h1bms9dyxSLndyaXRlZW5jb2Rpbmc9UywhUi50cmFuc2Zvcm1pbmcpe3ZhciB4PXRoaXMuX3JlYWRhYmxlU3RhdGU7KFIubmVlZFRyYW5zZm9ybXx8eC5uZWVkUmVhZGFibGV8fHgubGVuZ3RoPHgu'@; put 'aGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoeC5oaWdoV2F0ZXJNYXJrKX19LEEucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHcpe3ZhciBTPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGwhPT1TLndyaXRlY2h1bmsmJlMud3JpdGVjYiYmIVMudHJhbnNmb3JtaW5nPyhTLnRyYW5zZm9ybWlu'@; put 'Zz0hMCx0aGlzLl90cmFuc2Zvcm0oUy53cml0ZWNodW5rLFMud3JpdGVlbmNvZGluZyxTLmFmdGVyVHJhbnNmb3JtKSk6Uy5uZWVkVHJhbnNmb3JtPSEwfSxBLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbih3LFMpe3ZhciBMPXRoaXM7eS5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlz'@; put 'LHcsZnVuY3Rpb24oUil7UyhSKSxMLmVtaXQoImNsb3NlIil9KX19LDIzNjEyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTY1Nik7ZnVuY3Rpb24gcyhEKXt2YXIgcD10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbigpeyFmdW5j'@; put 'dGlvbiBHKEQscCxJKXt2YXIgdWU9RC5lbnRyeTtmb3IoRC5lbnRyeT1udWxsO3VlOyl7dmFyIG5lPXVlLmNhbGxiYWNrO3AucGVuZGluZ2NiLS0sbmUoSSksdWU9dWUubmV4dH1wLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PUR9KHAsRCl9fWZlLmV4cG9ydHM9WTt2YXIgdixBPSFwcm9jZXNz'@; put 'LmJyb3dzZXImJlsidjAuMTAiLCJ2MC45LiJdLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsNSkpPi0xP3NldEltbWVkaWF0ZTp5Lm5leHRUaWNrO1kuV3JpdGFibGVTdGF0ZT1OO3ZhciBDPU9iamVjdC5jcmVhdGUoaCgyNzYzNykpO0MuaW5oZXJpdHM9aCg3MTk5Myk7dmFyIHos'@; put 'dz17ZGVwcmVjYXRlOmgoMzM5OCl9LFM9aCg4MTY1MiksTD1oKDM4MDY1KS5CdWZmZXIsUj0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LEg9aCg4Mjk5KTtm'@; put 'dW5jdGlvbiBWKCl7fWZ1bmN0aW9uIE4oRCxwKXt2PXZ8fGgoNTY2NzcpO3ZhciBJPXAgaW5zdGFuY2VvZiB2O3RoaXMub2JqZWN0TW9kZT0hIShEPUR8fHt9KS5vYmplY3RNb2RlLEkmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIUQud3JpdGFibGVPYmplY3RNb2RlKTt2'@; put 'YXIgdWU9RC5oaWdoV2F0ZXJNYXJrLG5lPUQud3JpdGFibGVIaWdoV2F0ZXJNYXJrO3RoaXMuaGlnaFdhdGVyTWFyaz11ZXx8MD09PXVlP3VlOkkmJihuZXx8MD09PW5lKT9uZTp0aGlzLm9iamVjdE1vZGU/MTY6MTYzODQsdGhpcy5oaWdoV2F0ZXJNYXJrPU1hdGguZmxvb3IodGhpcy5oaWdo'@; put 'V2F0ZXJNYXJrKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29kZVN0cmluZ3M9ISghMT09PUQuZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZh'@; put 'dWx0RW5jb2Rpbmc9RC5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKG90KXshZnVuY3Rpb24ga2UoRCxwKXt2'@; put 'YXIgST1ELl93cml0YWJsZVN0YXRlLHVlPUkuc3luYyxuZT1JLndyaXRlY2I7aWYoZnVuY3Rpb24gSWUoRCl7RC53cml0aW5nPSExLEQud3JpdGVjYj1udWxsLEQubGVuZ3RoLT1ELndyaXRlbGVuLEQud3JpdGVsZW49MH0oSSkscCkhZnVuY3Rpb24gQ2UoRCxwLEksdWUsbmUpey0tcC5wZW5k'@; put 'aW5nY2IsST8oeS5uZXh0VGljayhuZSx1ZSkseS5uZXh0VGljayhCLEQscCksRC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsRC5lbWl0KCJlcnJvciIsdWUpKToobmUodWUpLEQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLEQuZW1pdCgiZXJyb3IiLHVlKSxCKEQscCkp'@; put 'fShELEksdWUscCxuZSk7ZWxzZXt2YXIgX2U9YihJKTshX2UmJiFJLmNvcmtlZCYmIUkuYnVmZmVyUHJvY2Vzc2luZyYmSS5idWZmZXJlZFJlcXVlc3QmJmYoRCxJKSx1ZT9BKHFlLEQsSSxfZSxuZSk6cWUoRCxJLF9lLG5lKX19KHAsb3QpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRl'@; put 'bGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVz'@; put 'dHNGcmVlPW5ldyBzKHRoaXMpfWZ1bmN0aW9uIFkoRCl7aWYodj12fHxoKDU2Njc3KSwhKHouY2FsbChZLHRoaXMpfHx0aGlzIGluc3RhbmNlb2YgdikpcmV0dXJuIG5ldyBZKEQpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IE4oRCx0aGlzKSx0aGlzLndyaXRhYmxlPSEwLEQmJigiZnVuY3Rp'@; put 'b24iPT10eXBlb2YgRC53cml0ZSYmKHRoaXMuX3dyaXRlPUQud3JpdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBELndyaXRldiYmKHRoaXMuX3dyaXRldj1ELndyaXRldiksImZ1bmN0aW9uIj09dHlwZW9mIEQuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9RC5kZXN0cm95KSwiZnVuY3Rpb24iPT10'@; put 'eXBlb2YgRC5maW5hbCYmKHRoaXMuX2ZpbmFsPUQuZmluYWwpKSxTLmNhbGwodGhpcyl9ZnVuY3Rpb24gbWUoRCxwLEksdWUsbmUsX2UsUGUpe3Aud3JpdGVsZW49dWUscC53cml0ZWNiPVBlLHAud3JpdGluZz0hMCxwLnN5bmM9ITAsST9ELl93cml0ZXYobmUscC5vbndyaXRlKTpELl93cml0'@; put 'ZShuZSxfZSxwLm9ud3JpdGUpLHAuc3luYz0hMX1mdW5jdGlvbiBxZShELHAsSSx1ZSl7SXx8ZnVuY3Rpb24gWChELHApezA9PT1wLmxlbmd0aCYmcC5uZWVkRHJhaW4mJihwLm5lZWREcmFpbj0hMSxELmVtaXQoImRyYWluIikpfShELHApLHAucGVuZGluZ2NiLS0sdWUoKSxCKEQscCl9ZnVu'@; put 'Y3Rpb24gZihELHApe3AuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgST1wLmJ1ZmZlcmVkUmVxdWVzdDtpZihELl93cml0ZXYmJkkmJkkubmV4dCl7dmFyIG5lPW5ldyBBcnJheShwLmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxfZT1wLmNvcmtlZFJlcXVlc3RzRnJlZTtfZS5lbnRyeT1JO2Zvcih2'@; put 'YXIgUGU9MCxvdD0hMDtJOyluZVtQZV09SSxJLmlzQnVmfHwob3Q9ITEpLEk9SS5uZXh0LFBlKz0xO25lLmFsbEJ1ZmZlcnM9b3QsbWUoRCxwLCEwLHAubGVuZ3RoLG5lLCIiLF9lLmZpbmlzaCkscC5wZW5kaW5nY2IrKyxwLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxfZS5uZXh0PyhwLmNv'@; put 'cmtlZFJlcXVlc3RzRnJlZT1fZS5uZXh0LF9lLm5leHQ9bnVsbCk6cC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IHMocCkscC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDtJOyl7dmFyIGx0PUkuY2h1bms7aWYobWUoRCxwLCExLHAub2JqZWN0TW9kZT8xOmx0Lmxlbmd0aCxsdCxJ'@; put 'LmVuY29kaW5nLEkuY2FsbGJhY2spLEk9SS5uZXh0LHAuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxwLndyaXRpbmcpYnJlYWt9bnVsbD09PUkmJihwLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9cC5idWZmZXJlZFJlcXVlc3Q9SSxwLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gYihE'@; put 'KXtyZXR1cm4gRC5lbmRpbmcmJjA9PT1ELmxlbmd0aCYmbnVsbD09PUQuYnVmZmVyZWRSZXF1ZXN0JiYhRC5maW5pc2hlZCYmIUQud3JpdGluZ31mdW5jdGlvbiBrKEQscCl7RC5fZmluYWwoZnVuY3Rpb24oSSl7cC5wZW5kaW5nY2ItLSxJJiZELmVtaXQoImVycm9yIixJKSxwLnByZWZpbmlz'@; put 'aGVkPSEwLEQuZW1pdCgicHJlZmluaXNoIiksQihELHApfSl9ZnVuY3Rpb24gQihELHApe3ZhciBJPWIocCk7cmV0dXJuIEkmJihmdW5jdGlvbiBNKEQscCl7IXAucHJlZmluaXNoZWQmJiFwLmZpbmFsQ2FsbGVkJiYoImZ1bmN0aW9uIj09dHlwZW9mIEQuX2ZpbmFsPyhwLnBlbmRpbmdjYisr'@; put 'LHAuZmluYWxDYWxsZWQ9ITAseS5uZXh0VGljayhrLEQscCkpOihwLnByZWZpbmlzaGVkPSEwLEQuZW1pdCgicHJlZmluaXNoIikpKX0oRCxwKSwwPT09cC5wZW5kaW5nY2ImJihwLmZpbmlzaGVkPSEwLEQuZW1pdCgiZmluaXNoIikpKSxJfUMuaW5oZXJpdHMoWSxTKSxOLnByb3RvdHlwZS5n'@; put 'ZXRCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHA9dGhpcy5idWZmZXJlZFJlcXVlc3QsST1bXTtwOylJLnB1c2gocCkscD1wLm5leHQ7cmV0dXJuIEl9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShOLnByb3RvdHlwZSwiYnVmZmVyIix7Z2V0OncuZGVwcmVjYXRlKGZ1'@; put 'bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCl9LCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBpbnN0ZWFkLiIsIkRFUDAwMDMiKX0pfWNhdGNoe319KCksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3lt'@; put 'Ym9sLmhhc0luc3RhbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0/KHo9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFksU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1'@; put 'ZTpmdW5jdGlvbihEKXtyZXR1cm4hIXouY2FsbCh0aGlzLEQpfHx0aGlzPT09WSYmRCYmRC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIE59fSkpOno9ZnVuY3Rpb24oRCl7cmV0dXJuIEQgaW5zdGFuY2VvZiB0aGlzfSxZLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7dGhpcy5lbWl0KCJl'@; put 'cnJvciIsbmV3IEVycm9yKCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIikpfSxZLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihELHAsSSl7dmFyIHVlPXRoaXMuX3dyaXRhYmxlU3RhdGUsbmU9ITEsX2U9IXVlLm9iamVjdE1vZGUmJmZ1bmN0aW9uIFUoRCl7cmV0dXJuIEwuaXNCdWZmZXIo'@; put 'RCl8fEQgaW5zdGFuY2VvZiBSfShEKTtyZXR1cm4gX2UmJiFMLmlzQnVmZmVyKEQpJiYoRD1mdW5jdGlvbiB4KEQpe3JldHVybiBMLmZyb20oRCl9KEQpKSwiZnVuY3Rpb24iPT10eXBlb2YgcCYmKEk9cCxwPW51bGwpLF9lP3A9ImJ1ZmZlciI6cHx8KHA9dWUuZGVmYXVsdEVuY29kaW5nKSwi'@; put 'ZnVuY3Rpb24iIT10eXBlb2YgSSYmKEk9ViksdWUuZW5kZWQ/ZnVuY3Rpb24gRihELHApe3ZhciBJPW5ldyBFcnJvcigid3JpdGUgYWZ0ZXIgZW5kIik7RC5lbWl0KCJlcnJvciIsSSkseS5uZXh0VGljayhwLEkpfSh0aGlzLEkpOihfZXx8ZnVuY3Rpb24gVyhELHAsSSx1ZSl7dmFyIG5lPSEw'@; put 'LF9lPSExO3JldHVybiBudWxsPT09ST9fZT1uZXcgVHlwZUVycm9yKCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbSIpOiJzdHJpbmciIT10eXBlb2YgSSYmdm9pZCAwIT09SSYmIXAub2JqZWN0TW9kZSYmKF9lPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9i'@; put 'dWZmZXIgY2h1bmsiKSksX2UmJihELmVtaXQoImVycm9yIixfZSkseS5uZXh0VGljayh1ZSxfZSksbmU9ITEpLG5lfSh0aGlzLHVlLEQsSSkpJiYodWUucGVuZGluZ2NiKyssbmU9ZnVuY3Rpb24gcmUoRCxwLEksdWUsbmUsX2Upe2lmKCFJKXt2YXIgUGU9ZnVuY3Rpb24gcShELHAsSSl7cmV0'@; put 'dXJuIUQub2JqZWN0TW9kZSYmITEhPT1ELmRlY29kZVN0cmluZ3MmJiJzdHJpbmciPT10eXBlb2YgcCYmKHA9TC5mcm9tKHAsSSkpLHB9KHAsdWUsbmUpO3VlIT09UGUmJihJPSEwLG5lPSJidWZmZXIiLHVlPVBlKX12YXIgb3Q9cC5vYmplY3RNb2RlPzE6dWUubGVuZ3RoO3AubGVuZ3RoKz1v'@; put 'dDt2YXIgbHQ9cC5sZW5ndGg8cC5oaWdoV2F0ZXJNYXJrO2lmKGx0fHwocC5uZWVkRHJhaW49ITApLHAud3JpdGluZ3x8cC5jb3JrZWQpe3ZhciBkdD1wLmxhc3RCdWZmZXJlZFJlcXVlc3Q7cC5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazp1ZSxlbmNvZGluZzpuZSxpc0J1ZjpJLGNhbGxi'@; put 'YWNrOl9lLG5leHQ6bnVsbH0sZHQ/ZHQubmV4dD1wLmxhc3RCdWZmZXJlZFJlcXVlc3Q6cC5idWZmZXJlZFJlcXVlc3Q9cC5sYXN0QnVmZmVyZWRSZXF1ZXN0LHAuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZSBtZShELHAsITEsb3QsdWUsbmUsX2UpO3JldHVybiBsdH0odGhpcyx1ZSxf'@; put 'ZSxELHAsSSkpLG5lfSxZLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sWS5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIEQ9dGhpcy5fd3JpdGFibGVTdGF0ZTtELmNvcmtlZCYmKEQuY29ya2VkLS0sIUQud3JpdGluZyYmIUQu'@; put 'Y29ya2VkJiYhRC5idWZmZXJQcm9jZXNzaW5nJiZELmJ1ZmZlcmVkUmVxdWVzdCYmZih0aGlzLEQpKX0sWS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKHApe2lmKCJzdHJpbmciPT10eXBlb2YgcCYmKHA9cC50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0'@; put 'Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5pbmRleE9mKChwKyIiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitwKTtyZXR1cm4gdGhpcy5f'@; put 'd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9cCx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWS5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFy'@; put 'a319KSxZLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oRCxwLEkpe0kobmV3IEVycm9yKCJfd3JpdGUoKSBpcyBub3QgaW1wbGVtZW50ZWQiKSl9LFkucHJvdG90eXBlLl93cml0ZXY9bnVsbCxZLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oRCxwLEkpe3ZhciB1ZT10aGlzLl93cml0YWJsZVN0'@; put 'YXRlOyJmdW5jdGlvbiI9PXR5cGVvZiBEPyhJPUQsRD1udWxsLHA9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIHAmJihJPXAscD1udWxsKSxudWxsIT1EJiZ0aGlzLndyaXRlKEQscCksdWUuY29ya2VkJiYodWUuY29ya2VkPTEsdGhpcy51bmNvcmsoKSksdWUuZW5kaW5nfHxmdW5jdGlvbiBL'@; put 'KEQscCxJKXtwLmVuZGluZz0hMCxCKEQscCksSSYmKHAuZmluaXNoZWQ/eS5uZXh0VGljayhJKTpELm9uY2UoImZpbmlzaCIsSSkpLHAuZW5kZWQ9ITAsRC53cml0YWJsZT0hMX0odGhpcyx1ZSxJKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihEKXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9RCl9fSksWS5wcm90b3R5cGUu'@; put 'ZGVzdHJveT1ILmRlc3Ryb3ksWS5wcm90b3R5cGUuX3VuZGVzdHJveT1ILnVuZGVzdHJveSxZLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihELHApe3RoaXMuZW5kKCkscChEKX19LDE0MzMxKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciBjPWgoMzgwNjUpLkJ1ZmZlcixzPWgoODQ2MCk7'@; put 'ZnVuY3Rpb24gQSh2LEMsdyl7di5jb3B5KEMsdyl9ZmUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYoKXsoZnVuY3Rpb24geSh2LEMpe2lmKCEodiBpbnN0YW5jZW9mIEMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhp'@; put 'cyx2KSx0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiB2LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHcpe3ZhciBTPXtkYXRhOncsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PVM6dGhpcy5oZWFkPVMsdGhpcy50YWlsPVMs'@; put 'Kyt0aGlzLmxlbmd0aH0sdi5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbih3KXt2YXIgUz17ZGF0YTp3LG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9UyksdGhpcy5oZWFkPVMsKyt0aGlzLmxlbmd0aH0sdi5wcm90b3R5cGUuc2hpZnQ9ZnVuY3Rpb24oKXtp'@; put 'ZigwIT09dGhpcy5sZW5ndGgpe3ZhciB3PXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsd319LHYucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5oZWFkPXRoaXMu'@; put 'dGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9LHYucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24odyl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgUz10aGlzLmhlYWQsTD0iIitTLmRhdGE7Uz1TLm5leHQ7KUwrPXcrUy5kYXRhO3JldHVybiBMfSx2LnByb3RvdHlwZS5jb25jYXQ9'@; put 'ZnVuY3Rpb24odyl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBjLmFsbG9jKDApO2Zvcih2YXIgUz1jLmFsbG9jVW5zYWZlKHc+Pj4wKSxMPXRoaXMuaGVhZCxSPTA7TDspQShMLmRhdGEsUyxSKSxSKz1MLmRhdGEubGVuZ3RoLEw9TC5uZXh0O3JldHVybiBTfSx2fSgpLHMmJnMuaW5zcGVj'@; put 'dCYmcy5pbnNwZWN0LmN1c3RvbSYmKGZlLmV4cG9ydHMucHJvdG90eXBlW3MuaW5zcGVjdC5jdXN0b21dPWZ1bmN0aW9uKCl7dmFyIHY9cy5pbnNwZWN0KHtsZW5ndGg6dGhpcy5sZW5ndGh9KTtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lKyIgIit2fSl9LDgyOTkoZmUsaixoKXsidXNl'@; put 'IHN0cmljdCI7dmFyIHk9aCg5NjU2KTtmdW5jdGlvbiBBKHYsQyl7di5lbWl0KCJlcnJvciIsQyl9ZmUuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbiBjKHYsQyl7dmFyIHc9dGhpcztyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR8fHRo'@; put 'aXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPyhDP0Modik6diYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx5Lm5leHRUaWNrKEEs'@; put 'dGhpcyx2KSk6eS5uZXh0VGljayhBLHRoaXMsdikpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveSh2'@; put 'fHxudWxsLGZ1bmN0aW9uKFIpeyFDJiZSP3cuX3dyaXRhYmxlU3RhdGU/dy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh3Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx5Lm5leHRUaWNrKEEsdyxSKSk6eS5uZXh0VGljayhBLHcsUik6QyYmQyhSKX0pLHRoaXMpfSx1bmRl'@; put 'c3Ryb3k6ZnVuY3Rpb24gcygpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9'@; put 'ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFi'@; put 'bGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX19fSw4MTY1MihmZSxqLGgpe2ZlLmV4cG9ydHM9aCg0NDM1NikuRXZlbnRFbWl0dGVyfSwzODA2NShmZSxqLGgpe3ZhciB5PWgo'@; put 'ODM4MzgpLGM9eS5CdWZmZXI7ZnVuY3Rpb24gcyh2LEMpe2Zvcih2YXIgdyBpbiB2KUNbd109dlt3XX1mdW5jdGlvbiBBKHYsQyx3KXtyZXR1cm4gYyh2LEMsdyl9Yy5mcm9tJiZjLmFsbG9jJiZjLmFsbG9jVW5zYWZlJiZjLmFsbG9jVW5zYWZlU2xvdz9mZS5leHBvcnRzPXk6KHMoeSxqKSxq'@; put 'LkJ1ZmZlcj1BKSxzKGMsQSksQS5mcm9tPWZ1bmN0aW9uKHYsQyx3KXtpZigibnVtYmVyIj09dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYyh2LEMsdyl9LEEuYWxsb2M9ZnVuY3Rpb24odixDLHcpe2lmKCJudW1i'@; put 'ZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIFM9Yyh2KTtyZXR1cm4gdm9pZCAwIT09Qz8ic3RyaW5nIj09dHlwZW9mIHc/Uy5maWxsKEMsdyk6Uy5maWxsKEMpOlMuZmlsbCgwKSxTfSxBLmFsbG9jVW5zYWZlPWZ1bmN0'@; put 'aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGModil9LEEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJB'@; put 'cmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHkuU2xvd0J1ZmZlcih2KX19LDIzMjI0KGZlLGosaCl7KGo9ZmUuZXhwb3J0cz1oKDMzNjExKSkuU3RyZWFtPWosai5SZWFkYWJsZT1qLGouV3JpdGFibGU9aCgyMzYxMiksai5EdXBsZXg9aCg1NjY3Nyksai5UcmFuc2Zvcm09aCg2'@; put 'MjEyMyksai5QYXNzVGhyb3VnaD1oKDcxNDg5KX0sNTkxNjQoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg5NjU5OCkuQnVmZmVyLGM9eS5pc0VuY29kaW5nfHxmdW5jdGlvbihGKXtzd2l0Y2goKEY9IiIrRikmJkYudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2Fz'@; put 'ZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiB2KEYpe3ZhciBXO3N3aXRjaCh0'@; put 'aGlzLmVuY29kaW5nPWZ1bmN0aW9uIEEoRil7dmFyIFc9ZnVuY3Rpb24gcyhGKXtpZighRilyZXR1cm4idXRmOCI7Zm9yKHZhciBXOzspc3dpdGNoKEYpe2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuInV0ZjgiO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNl'@; put 'InV0Zi0xNmxlIjpyZXR1cm4idXRmMTZsZSI7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ibGF0aW4xIjtjYXNlImJhc2U2NCI6Y2FzZSJhc2NpaSI6Y2FzZSJoZXgiOnJldHVybiBGO2RlZmF1bHQ6aWYoVylyZXR1cm47Rj0oIiIrRikudG9Mb3dlckNhc2UoKSxXPSEwfX0oRik7'@; put 'aWYoInN0cmluZyIhPXR5cGVvZiBXJiYoeS5pc0VuY29kaW5nPT09Y3x8IWMoRikpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitGKTtyZXR1cm4gV3x8Rn0oRiksdGhpcy5lbmNvZGluZyl7Y2FzZSJ1dGYxNmxlIjp0aGlzLnRleHQ9VSx0aGlzLmVuZD1ILFc9NDticmVh'@; put 'aztjYXNlInV0ZjgiOnRoaXMuZmlsbExhc3Q9TCxXPTQ7YnJlYWs7Y2FzZSJiYXNlNjQiOnRoaXMudGV4dD1WLHRoaXMuZW5kPU4sVz0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9eix2b2lkKHRoaXMuZW5kPVkpfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRo'@; put 'aXMubGFzdENoYXI9eS5hbGxvY1Vuc2FmZShXKX1mdW5jdGlvbiBDKEYpe3JldHVybiBGPD0xMjc/MDpGPj41PT02PzI6Rj4+ND09MTQ/MzpGPj4zPT0zMD80OkY+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gTChGKXt2YXIgVz10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLHE9ZnVuY3Rpb24g'@; put 'UyhGLFcpe2lmKDEyOCE9KDE5MiZXWzBdKSlyZXR1cm4gRi5sYXN0TmVlZD0wLCJcdWZmZmQiO2lmKEYubGFzdE5lZWQ+MSYmVy5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJldbMV0pKXJldHVybiBGLmxhc3ROZWVkPTEsIlx1ZmZmZCI7aWYoRi5sYXN0TmVlZD4yJiZXLmxlbmd0aD4yJiYxMjgh'@; put 'PSgxOTImV1syXSkpcmV0dXJuIEYubGFzdE5lZWQ9MiwiXHVmZmZkIn19KHRoaXMsRik7cmV0dXJuIHZvaWQgMCE9PXE/cTp0aGlzLmxhc3ROZWVkPD1GLmxlbmd0aD8oRi5jb3B5KHRoaXMubGFzdENoYXIsVywwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5l'@; put 'bmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KEYuY29weSh0aGlzLmxhc3RDaGFyLFcsMCxGLmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT1GLmxlbmd0aCkpfWZ1bmN0aW9uIFUoRixXKXtpZigoRi5sZW5ndGgtVyklMj09MCl7dmFyIHE9Ri50b1N0cmluZygidXRmMTZsZSIsVyk7aWYo'@; put 'cSl7dmFyIHJlPXEuY2hhckNvZGVBdChxLmxlbmd0aC0xKTtpZihyZT49NTUyOTYmJnJlPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhpcy5sYXN0Q2hhclswXT1GW0YubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09RltGLmxlbmd0aC0xXSxxLnNs'@; put 'aWNlKDAsLTEpfXJldHVybiBxfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMV0sRi50b1N0cmluZygidXRmMTZsZSIsVyxGLmxlbmd0aC0xKX1mdW5jdGlvbiBIKEYpe3ZhciBXPUYmJkYubGVuZ3RoP3RoaXMud3Jp'@; put 'dGUoRik6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/Vyt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJ1dGYxNmxlIiwwLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQpOld9ZnVuY3Rpb24gVihGLFcpe3ZhciBxPShGLmxlbmd0aC1XKSUzO3JldHVybiAwPT09cT9GLnRvU3RyaW5nKCJiYXNl'@; put 'NjQiLFcpOih0aGlzLmxhc3ROZWVkPTMtcSx0aGlzLmxhc3RUb3RhbD0zLDE9PT1xP3RoaXMubGFzdENoYXJbMF09RltGLmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT1GW0YubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09RltGLmxlbmd0aC0xXSksRi50b1N0cmluZygiYmFzZTY0IixX'@; put 'LEYubGVuZ3RoLXEpKX1mdW5jdGlvbiBOKEYpe3ZhciBXPUYmJkYubGVuZ3RoP3RoaXMud3JpdGUoRik6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/Vyt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJiYXNlNjQiLDAsMy10aGlzLmxhc3ROZWVkKTpXfWZ1bmN0aW9uIHooRil7cmV0dXJuIEYudG9T'@; put 'dHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gWShGKXtyZXR1cm4gRiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIn1qLkk9dix2LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihGKXtpZigwPT09Ri5sZW5ndGgpcmV0dXJuIiI7dmFyIFcscTtpZih0aGlzLmxhc3ROZWVkKXtpZih2b2lk'@; put 'IDA9PT0oVz10aGlzLmZpbGxMYXN0KEYpKSlyZXR1cm4iIjtxPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2UgcT0wO3JldHVybiBxPEYubGVuZ3RoP1c/Vyt0aGlzLnRleHQoRixxKTp0aGlzLnRleHQoRixxKTpXfHwiIn0sdi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uIHgoRil7'@; put 'dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9XKyJcdWZmZmQiOld9LHYucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24gUihGLFcpe3ZhciBxPWZ1bmN0aW9uIHcoRixXLHEpe3ZhciByZT1XLmxlbmd0aC0xO2lmKHJlPHEpcmV0dXJuIDA7dmFy'@; put 'IG1lPUMoV1tyZV0pO3JldHVybiBtZT49MD8obWU+MCYmKEYubGFzdE5lZWQ9bWUtMSksbWUpOi0tcmU8cXx8LTI9PT1tZT8wOihtZT1DKFdbcmVdKSk+PTA/KG1lPjAmJihGLmxhc3ROZWVkPW1lLTIpLG1lKTotLXJlPHF8fC0yPT09bWU/MDoobWU9QyhXW3JlXSkpPj0wPyhtZT4wJiYoMj09'@; put 'PW1lP21lPTA6Ri5sYXN0TmVlZD1tZS0zKSxtZSk6MH0odGhpcyxGLFcpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiBGLnRvU3RyaW5nKCJ1dGY4IixXKTt0aGlzLmxhc3RUb3RhbD1xO3ZhciByZT1GLmxlbmd0aC0ocS10aGlzLmxhc3ROZWVkKTtyZXR1cm4gRi5jb3B5KHRoaXMubGFzdENo'@; put 'YXIsMCxyZSksRi50b1N0cmluZygidXRmOCIsVyxyZSl9LHYucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKEYpe2lmKHRoaXMubGFzdE5lZWQ8PUYubGVuZ3RoKXJldHVybiBGLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVl'@; put 'ZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO0YuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCxGLmxlbmd0aCksdGhpcy5sYXN0TmVlZC09Ri5sZW5ndGh9fSw5NjU5OChmZSxqLGgpe3ZhciB5'@; put 'PWgoODM4MzgpLGM9eS5CdWZmZXI7ZnVuY3Rpb24gcyh2LEMpe2Zvcih2YXIgdyBpbiB2KUNbd109dlt3XX1mdW5jdGlvbiBBKHYsQyx3KXtyZXR1cm4gYyh2LEMsdyl9Yy5mcm9tJiZjLmFsbG9jJiZjLmFsbG9jVW5zYWZlJiZjLmFsbG9jVW5zYWZlU2xvdz9mZS5leHBvcnRzPXk6KHMoeSxq'@; put 'KSxqLkJ1ZmZlcj1BKSxzKGMsQSksQS5mcm9tPWZ1bmN0aW9uKHYsQyx3KXtpZigibnVtYmVyIj09dHlwZW9mIHYpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYyh2LEMsdyl9LEEuYWxsb2M9ZnVuY3Rpb24odixDLHcpe2lmKCJu'@; put 'dW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIFM9Yyh2KTtyZXR1cm4gdm9pZCAwIT09Qz8ic3RyaW5nIj09dHlwZW9mIHc/Uy5maWxsKEMsdyk6Uy5maWxsKEMpOlMuZmlsbCgwKSxTfSxBLmFsbG9jVW5zYWZlPWZ1'@; put 'bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGModil9LEEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHYpe2lmKCJudW1iZXIiIT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVycm9y'@; put 'KCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHkuU2xvd0J1ZmZlcih2KX19LDE3NTY4KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjcwNTQpLkJ1ZmZlcixjPWgoNDEwOTApLHM9dHlwZW9mIFVpbnQ4QXJyYXk8InUiLHY9cyYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1'@; put 'IiYmQXJyYXlCdWZmZXIuaXNWaWV3O2ZlLmV4cG9ydHM9ZnVuY3Rpb24oQyx3KXtpZigic3RyaW5nIj09dHlwZW9mIEN8fHkuaXNCdWZmZXIoQyl8fHMmJkMgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx2JiZ2KEMpKXJldHVybiBjKEMsdyk7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJkYXRh'@; put 'IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSBVaW50OEFycmF5LCBvciBhIERhdGFWaWV3Jyl9fSw3ODM2OChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbCxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscz1o'@; put 'KDY1OTkyKTtmZS5leHBvcnRzPXMuY2FsbCh5LGMpfSw5MzY5NChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkzODA3KS5CdWZmZXI7ai5fZGJjcz1MO2Zvcih2YXIgYz0tMSxBPS0xMCx2PS0xZTMsQz1uZXcgQXJyYXkoMjU2KSxTPTA7UzwyNTY7UysrKUNbU109YztmdW5jdGlvbiBM'@; put 'KEgsVil7aWYodGhpcy5lbmNvZGluZ05hbWU9SC5lbmNvZGluZ05hbWUsIUgpdGhyb3cgbmV3IEVycm9yKCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLiIpO2lmKCFILnRhYmxlKXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgJyIrdGhpcy5lbmNvZGluZ05hbWUrIicg'@; put 'aGFzIG5vIGRhdGEuIik7dmFyIE49SC50YWJsZSgpO3RoaXMuZGVjb2RlVGFibGVzPVtdLHRoaXMuZGVjb2RlVGFibGVzWzBdPUMuc2xpY2UoMCksdGhpcy5kZWNvZGVUYWJsZVNlcT1bXTtmb3IodmFyIHo9MDt6PE4ubGVuZ3RoO3orKyl0aGlzLl9hZGREZWNvZGVDaHVuayhOW3pdKTt0aGlz'@; put 'LmRlZmF1bHRDaGFyVW5pY29kZT1WLmRlZmF1bHRDaGFyVW5pY29kZSx0aGlzLmVuY29kZVRhYmxlPVtdLHRoaXMuZW5jb2RlVGFibGVTZXE9W107dmFyIFk9e307aWYoSC5lbmNvZGVTa2lwVmFscylmb3Ioej0wO3o8SC5lbmNvZGVTa2lwVmFscy5sZW5ndGg7eisrKXt2YXIgRj1ILmVuY29k'@; put 'ZVNraXBWYWxzW3pdO2lmKCJudW1iZXIiPT10eXBlb2YgRilZW0ZdPSEwO2Vsc2UgZm9yKHZhciBXPUYuZnJvbTtXPD1GLnRvO1crKylZW1ddPSEwfWlmKHRoaXMuX2ZpbGxFbmNvZGVUYWJsZSgwLDAsWSksSC5lbmNvZGVBZGQpZm9yKHZhciBxIGluIEguZW5jb2RlQWRkKU9iamVjdC5wcm90'@; put 'b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChILmVuY29kZUFkZCxxKSYmdGhpcy5fc2V0RW5jb2RlQ2hhcihxLmNoYXJDb2RlQXQoMCksSC5lbmNvZGVBZGRbcV0pO2lmKHRoaXMuZGVmQ2hhclNCPXRoaXMuZW5jb2RlVGFibGVbMF1bVi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVB'@; put 'dCgwKV0sdGhpcy5kZWZDaGFyU0I9PT1jJiYodGhpcy5kZWZDaGFyU0I9dGhpcy5lbmNvZGVUYWJsZVswXVsiPyJdKSx0aGlzLmRlZkNoYXJTQj09PWMmJih0aGlzLmRlZkNoYXJTQj02MyksImZ1bmN0aW9uIj09dHlwZW9mIEguZ2IxODAzMCl7dGhpcy5nYjE4MDMwPUguZ2IxODAzMCgpO3Zh'@; put 'ciByZT10aGlzLmRlY29kZVRhYmxlcy5sZW5ndGgsbWU9dGhpcy5kZWNvZGVUYWJsZXNbcmVdPUMuc2xpY2UoMCksQ2U9dGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoLEllPXRoaXMuZGVjb2RlVGFibGVzW0NlXT1DLnNsaWNlKDApO2Zvcih6PTEyOTt6PD0yNTQ7eisrKXt2YXIgcWU9dGhpcy5k'@; put 'ZWNvZGVUYWJsZXNbdi10aGlzLmRlY29kZVRhYmxlc1swXVt6XV07Zm9yKFc9NDg7Vzw9NTc7VysrKXFlW1ddPXYtcmV9Zm9yKHo9MTI5O3o8PTI1NDt6KyspbWVbel09di1DZTtmb3Ioej00ODt6PD01Nzt6KyspSWVbel09LTJ9fWZ1bmN0aW9uIFIoSCxWKXt0aGlzLmxlYWRTdXJyb2dhdGU9'@; put 'LTEsdGhpcy5zZXFPYmo9dm9pZCAwLHRoaXMuZW5jb2RlVGFibGU9Vi5lbmNvZGVUYWJsZSx0aGlzLmVuY29kZVRhYmxlU2VxPVYuZW5jb2RlVGFibGVTZXEsdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGU9Vi5kZWZDaGFyU0IsdGhpcy5nYjE4MDMwPVYuZ2IxODAzMH1mdW5jdGlvbiB4KEgs'@; put 'Vil7dGhpcy5ub2RlSWR4PTAsdGhpcy5wcmV2QnVmPXkuYWxsb2MoMCksdGhpcy5kZWNvZGVUYWJsZXM9Vi5kZWNvZGVUYWJsZXMsdGhpcy5kZWNvZGVUYWJsZVNlcT1WLmRlY29kZVRhYmxlU2VxLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPVYuZGVmYXVsdENoYXJVbmljb2RlLHRoaXMuZ2Ix'@; put 'ODAzMD1WLmdiMTgwMzB9ZnVuY3Rpb24gVShILFYpe2lmKEhbMF0+VilyZXR1cm4tMTtmb3IodmFyIE49MCx6PUgubGVuZ3RoO048ei0xOyl7dmFyIFk9TitNYXRoLmZsb29yKCh6LU4rMSkvMik7SFtZXTw9Vj9OPVk6ej1ZfXJldHVybiBOfUwucHJvdG90eXBlLmVuY29kZXI9UixMLnByb3Rv'@; put 'dHlwZS5kZWNvZGVyPXgsTC5wcm90b3R5cGUuX2dldERlY29kZVRyaWVOb2RlPWZ1bmN0aW9uKEgpe2Zvcih2YXIgVj1bXTtIPjA7SD4+PTgpVi5wdXNoKDI1NSZIKTswPT1WLmxlbmd0aCYmVi5wdXNoKDApO2Zvcih2YXIgTj10aGlzLmRlY29kZVRhYmxlc1swXSx6PVYubGVuZ3RoLTE7ej4w'@; put 'O3otLSl7dmFyIFk9TltWW3pdXTtpZihZPT1jKU5bVlt6XV09di10aGlzLmRlY29kZVRhYmxlcy5sZW5ndGgsdGhpcy5kZWNvZGVUYWJsZXMucHVzaChOPUMuc2xpY2UoMCkpO2Vsc2V7aWYoIShZPD12KSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJ3cml0ZSBieXRlIGluICIrdGhpcy5lbmNvZGlu'@; put 'Z05hbWUrIiwgYWRkcjogIitILnRvU3RyaW5nKDE2KSk7Tj10aGlzLmRlY29kZVRhYmxlc1t2LVldfX1yZXR1cm4gTn0sTC5wcm90b3R5cGUuX2FkZERlY29kZUNodW5rPWZ1bmN0aW9uKEgpe3ZhciBWPXBhcnNlSW50KEhbMF0sMTYpLE49dGhpcy5fZ2V0RGVjb2RlVHJpZU5vZGUoVik7ViY9'@; put 'MjU1O2Zvcih2YXIgej0xO3o8SC5sZW5ndGg7eisrKXt2YXIgWT1IW3pdO2lmKCJzdHJpbmciPT10eXBlb2YgWSlmb3IodmFyIEY9MDtGPFkubGVuZ3RoOyl7dmFyIFc9WS5jaGFyQ29kZUF0KEYrKyk7aWYoNTUyOTY8PVcmJlc8NTYzMjApe3ZhciBxPVkuY2hhckNvZGVBdChGKyspO2lmKCEo'@; put 'NTYzMjA8PXEmJnE8NTczNDQpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHN1cnJvZ2F0ZSBwYWlyIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBjaHVuayAiK0hbMF0pO05bVisrXT02NTUzNisxMDI0KihXLTU1Mjk2KSsocS01NjMyMCl9ZWxzZSBpZig0MDgwPFcmJlc8PTQwOTUp'@; put 'e2Zvcih2YXIgcmU9NDA5NS1XKzIsbWU9W10sQ2U9MDtDZTxyZTtDZSsrKW1lLnB1c2goWS5jaGFyQ29kZUF0KEYrKykpO05bVisrXT1BLXRoaXMuZGVjb2RlVGFibGVTZXEubGVuZ3RoLHRoaXMuZGVjb2RlVGFibGVTZXEucHVzaChtZSl9ZWxzZSBOW1YrK109V31lbHNle2lmKCJudW1iZXIi'@; put 'IT10eXBlb2YgWSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB0eXBlICciK3R5cGVvZiBZKyInIGdpdmVuIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBjaHVuayAiK0hbMF0pO3ZhciBJZT1OW1YtMV0rMTtmb3IoRj0wO0Y8WTtGKyspTltWKytdPUllKyt9fWlmKFY+MjU1KXRocm93'@; put 'IG5ldyBFcnJvcigiSW5jb3JyZWN0IGNodW5rIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBhZGRyICIrSFswXSsiOiB0b28gbG9uZyIrVil9LEwucHJvdG90eXBlLl9nZXRFbmNvZGVCdWNrZXQ9ZnVuY3Rpb24oSCl7dmFyIFY9SD4+ODtyZXR1cm4gdm9pZCAwPT09dGhpcy5lbmNvZGVU'@; put 'YWJsZVtWXSYmKHRoaXMuZW5jb2RlVGFibGVbVl09Qy5zbGljZSgwKSksdGhpcy5lbmNvZGVUYWJsZVtWXX0sTC5wcm90b3R5cGUuX3NldEVuY29kZUNoYXI9ZnVuY3Rpb24oSCxWKXt2YXIgTj10aGlzLl9nZXRFbmNvZGVCdWNrZXQoSCksej0yNTUmSDtOW3pdPD1BP3RoaXMuZW5jb2RlVGFi'@; put 'bGVTZXFbQS1OW3pdXVstMV09VjpOW3pdPT1jJiYoTlt6XT1WKX0sTC5wcm90b3R5cGUuX3NldEVuY29kZVNlcXVlbmNlPWZ1bmN0aW9uKEgsVil7dmFyIEYsTj1IWzBdLHo9dGhpcy5fZ2V0RW5jb2RlQnVja2V0KE4pLFk9MjU1Jk47eltZXTw9QT9GPXRoaXMuZW5jb2RlVGFibGVTZXFbQS16'@; put 'W1ldXTooRj17fSx6W1ldIT09YyYmKEZbLTFdPXpbWV0pLHpbWV09QS10aGlzLmVuY29kZVRhYmxlU2VxLmxlbmd0aCx0aGlzLmVuY29kZVRhYmxlU2VxLnB1c2goRikpO2Zvcih2YXIgVz0xO1c8SC5sZW5ndGgtMTtXKyspe3ZhciBxPUZbTl07Im9iamVjdCI9PXR5cGVvZiBxP0Y9cTooRj1G'@; put 'W05dPXt9LHZvaWQgMCE9PXEmJihGWy0xXT1xKSl9RltOPUhbSC5sZW5ndGgtMV1dPVZ9LEwucHJvdG90eXBlLl9maWxsRW5jb2RlVGFibGU9ZnVuY3Rpb24oSCxWLE4pe2Zvcih2YXIgej10aGlzLmRlY29kZVRhYmxlc1tIXSxZPTA7WTwyNTY7WSsrKXt2YXIgRj16W1ldLFc9VitZO05bV118'@; put 'fChGPj0wP3RoaXMuX3NldEVuY29kZUNoYXIoRixXKTpGPD12P3RoaXMuX2ZpbGxFbmNvZGVUYWJsZSh2LUYsVzw8OCxOKTpGPD1BJiZ0aGlzLl9zZXRFbmNvZGVTZXF1ZW5jZSh0aGlzLmRlY29kZVRhYmxlU2VxW0EtRl0sVykpfX0sUi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oSCl7Zm9y'@; put 'KHZhciBWPXkuYWxsb2MoSC5sZW5ndGgqKHRoaXMuZ2IxODAzMD80OjMpKSxOPXRoaXMubGVhZFN1cnJvZ2F0ZSx6PXRoaXMuc2VxT2JqLFk9LTEsRj0wLFc9MDs7KXtpZigtMT09PVkpe2lmKEY9PUgubGVuZ3RoKWJyZWFrO3ZhciBxPUguY2hhckNvZGVBdChGKyspfWVsc2UgcT1ZLFk9LTE7'@; put 'aWYoNTUyOTY8PXEmJnE8NTczNDQpaWYocTw1NjMyMCl7aWYoLTE9PT1OKXtOPXE7Y29udGludWV9Tj1xLHE9Y31lbHNlLTEhPT1OPyhxPTY1NTM2KzEwMjQqKE4tNTUyOTYpKyhxLTU2MzIwKSxOPS0xKTpxPWM7ZWxzZS0xIT09TiYmKFk9cSxxPWMsTj0tMSk7dmFyIHJlPWM7aWYodm9pZCAw'@; put 'IT09eiYmcSE9Yyl7dmFyIG1lPXpbcV07aWYoIm9iamVjdCI9PXR5cGVvZiBtZSl7ej1tZTtjb250aW51ZX0ibnVtYmVyIj09dHlwZW9mIG1lP3JlPW1lOm51bGw9PW1lJiZ2b2lkIDAhPT0obWU9elstMV0pJiYocmU9bWUsWT1xKSx6PXZvaWQgMH1lbHNlIGlmKHE+PTApe3ZhciBDZT10aGlz'@; put 'LmVuY29kZVRhYmxlW3E+PjhdO2lmKHZvaWQgMCE9PUNlJiYocmU9Q2VbMjU1JnFdKSxyZTw9QSl7ej10aGlzLmVuY29kZVRhYmxlU2VxW0EtcmVdO2NvbnRpbnVlfWlmKHJlPT1jJiZ0aGlzLmdiMTgwMzApe3ZhciBJZT1VKHRoaXMuZ2IxODAzMC51Q2hhcnMscSk7aWYoLTEhPUllKXtyZT10'@; put 'aGlzLmdiMTgwMzAuZ2JDaGFyc1tJZV0rKHEtdGhpcy5nYjE4MDMwLnVDaGFyc1tJZV0pLFZbVysrXT0xMjkrTWF0aC5mbG9vcihyZS8xMjYwMCkscmUlPTEyNjAwLFZbVysrXT00OCtNYXRoLmZsb29yKHJlLzEyNjApLHJlJT0xMjYwLFZbVysrXT0xMjkrTWF0aC5mbG9vcihyZS8xMCksVltX'@; put 'KytdPTQ4KyhyZSU9MTApO2NvbnRpbnVlfX19cmU9PT1jJiYocmU9dGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUpLHJlPDI1Nj9WW1crK109cmU6cmU8NjU1MzY/KFZbVysrXT1yZT4+OCxWW1crK109MjU1JnJlKTooVltXKytdPXJlPj4xNixWW1crK109cmU+PjgmMjU1LFZbVysrXT0yNTUm'@; put 'cmUpfXJldHVybiB0aGlzLnNlcU9iaj16LHRoaXMubGVhZFN1cnJvZ2F0ZT1OLFYuc2xpY2UoMCxXKX0sUi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYoLTEhPT10aGlzLmxlYWRTdXJyb2dhdGV8fHZvaWQgMCE9PXRoaXMuc2VxT2JqKXt2YXIgSD15LmFsbG9jKDEwKSxWPTA7aWYodGhp'@; put 'cy5zZXFPYmope3ZhciBOPXRoaXMuc2VxT2JqWy0xXTt2b2lkIDAhPT1OJiYoTjwyNTY/SFtWKytdPU46KEhbVisrXT1OPj44LEhbVisrXT0yNTUmTikpLHRoaXMuc2VxT2JqPXZvaWQgMH1yZXR1cm4tMSE9PXRoaXMubGVhZFN1cnJvZ2F0ZSYmKEhbVisrXT10aGlzLmRlZmF1bHRDaGFyU2lu'@; put 'Z2xlQnl0ZSx0aGlzLmxlYWRTdXJyb2dhdGU9LTEpLEguc2xpY2UoMCxWKX19LFIucHJvdG90eXBlLmZpbmRJZHg9VSx4LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihIKXt2YXIgVj15LmFsbG9jKDIqSC5sZW5ndGgpLE49dGhpcy5ub2RlSWR4LHo9dGhpcy5wcmV2QnVmLFk9dGhpcy5wcmV2'@; put 'QnVmLmxlbmd0aCxGPS10aGlzLnByZXZCdWYubGVuZ3RoO1k+MCYmKHo9eS5jb25jYXQoW3osSC5zbGljZSgwLDEwKV0pKTtmb3IodmFyIHE9MCxyZT0wO3E8SC5sZW5ndGg7cSsrKXt2YXIgVyxtZT1xPj0wP0hbcV06eltxK1ldO2lmKCEoKFc9dGhpcy5kZWNvZGVUYWJsZXNbTl1bbWVdKT49'@; put 'MCkpaWYoVz09PWMpcT1GLFc9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUuY2hhckNvZGVBdCgwKTtlbHNlIGlmKC0yPT09Vyl7dmFyIENlPUY+PTA/SC5zbGljZShGLHErMSk6ei5zbGljZShGK1kscSsxK1kpLEllPTEyNjAwKihDZVswXS0xMjkpKzEyNjAqKENlWzFdLTQ4KSsxMCooQ2VbMl0t'@; put 'MTI5KSsoQ2VbM10tNDgpLGtlPVUodGhpcy5nYjE4MDMwLmdiQ2hhcnMsSWUpO1c9dGhpcy5nYjE4MDMwLnVDaGFyc1trZV0rSWUtdGhpcy5nYjE4MDMwLmdiQ2hhcnNba2VdfWVsc2V7aWYoVzw9dil7Tj12LVc7Y29udGludWV9aWYoIShXPD1BKSl0aHJvdyBuZXcgRXJyb3IoImljb252LWxp'@; put 'dGUgaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgZGVjb2RpbmcgdGFibGUgdmFsdWUgIitXKyIgYXQgIitOKyIvIittZSk7Zm9yKHZhciBxZT10aGlzLmRlY29kZVRhYmxlU2VxW0EtV10sWD0wO1g8cWUubGVuZ3RoLTE7WCsrKVZbcmUrK109MjU1JihXPXFlW1hdKSxWW3JlKytdPVc+Pjg7Vz1x'@; put 'ZVtxZS5sZW5ndGgtMV19aWYoVz42NTUzNSl7Vy09NjU1MzY7dmFyIGY9NTUyOTYrTWF0aC5mbG9vcihXLzEwMjQpO1ZbcmUrK109MjU1JmYsVltyZSsrXT1mPj44LFc9NTYzMjArVyUxMDI0fVZbcmUrK109MjU1JlcsVltyZSsrXT1XPj44LE49MCxGPXErMX1yZXR1cm4gdGhpcy5ub2RlSWR4'@; put 'PU4sdGhpcy5wcmV2QnVmPUY+PTA/SC5zbGljZShGKTp6LnNsaWNlKEYrWSksVi5zbGljZSgwLHJlKS50b1N0cmluZygidWNzMiIpfSx4LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIEg9IiI7dGhpcy5wcmV2QnVmLmxlbmd0aD4wOyl7SCs9dGhpcy5kZWZhdWx0Q2hhclVuaWNv'@; put 'ZGU7dmFyIFY9dGhpcy5wcmV2QnVmLnNsaWNlKDEpO3RoaXMucHJldkJ1Zj15LmFsbG9jKDApLHRoaXMubm9kZUlkeD0wLFYubGVuZ3RoPjAmJihIKz10aGlzLndyaXRlKFYpKX1yZXR1cm4gdGhpcy5ub2RlSWR4PTAsSH19LDQ1Mjc4KGZlLGosaCl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9'@; put 'e3NoaWZ0amlzOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gaCg0MDY3OSl9LGVuY29kZUFkZDp7Ilx4YTUiOjkyLCJcdTIwM2UiOjEyNn0sZW5jb2RlU2tpcFZhbHM6W3tmcm9tOjYwNzM2LHRvOjYzODA4fV19LGNzc2hpZnRqaXM6InNoaWZ0amlzIixtc2thbmppOiJz'@; put 'aGlmdGppcyIsc2ppczoic2hpZnRqaXMiLHdpbmRvd3MzMWo6InNoaWZ0amlzIixtczMxajoic2hpZnRqaXMiLHhzamlzOiJzaGlmdGppcyIsd2luZG93czkzMjoic2hpZnRqaXMiLG1zOTMyOiJzaGlmdGppcyIsOTMyOiJzaGlmdGppcyIsY3A5MzI6InNoaWZ0amlzIixldWNqcDp7dHlwZToi'@; put 'X2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGgoNTY0MDYpfSxlbmNvZGVBZGQ6eyJceGE1Ijo5MiwiXHUyMDNlIjoxMjZ9fSxnYjIzMTI6ImNwOTM2IixnYjIzMTI4MDoiY3A5MzYiLGdiMjMxMjE5ODA6ImNwOTM2Iixjc2diMjMxMjoiY3A5MzYiLGNzaXNvNThnYjIzMTI4MDoiY3A5'@; put 'MzYiLGV1Y2NuOiJjcDkzNiIsd2luZG93czkzNjoiY3A5MzYiLG1zOTM2OiJjcDkzNiIsOTM2OiJjcDkzNiIsY3A5MzY6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBoKDc0NDg4KX19LGdiazp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGgoNzQ0'@; put 'ODgpLmNvbmNhdChoKDU1OTE0KSl9fSx4Z2JrOiJnYmsiLGlzb2lyNTg6ImdiayIsZ2IxODAzMDp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGgoNzQ0ODgpLmNvbmNhdChoKDU1OTE0KSl9LGdiMTgwMzA6ZnVuY3Rpb24oKXtyZXR1cm4gaCg5OTEyOSl9LGVuY29kZVNr'@; put 'aXBWYWxzOlsxMjhdLGVuY29kZUFkZDp7Ilx1MjBhYyI6NDE2OTl9fSxjaGluZXNlOiJnYjE4MDMwIix3aW5kb3dzOTQ5OiJjcDk0OSIsbXM5NDk6ImNwOTQ5Iiw5NDk6ImNwOTQ5IixjcDk0OTp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGgoMjExNjYpfX0sY3NldWNr'@; put 'cjoiY3A5NDkiLGNza3NjNTYwMTE5ODc6ImNwOTQ5IixldWNrcjoiY3A5NDkiLGlzb2lyMTQ5OiJjcDk0OSIsa29yZWFuOiJjcDk0OSIsa3NjNTYwMTE5ODc6ImNwOTQ5Iixrc2M1NjAxMTk4OToiY3A5NDkiLGtzYzU2MDE6ImNwOTQ5Iix3aW5kb3dzOTUwOiJjcDk1MCIsbXM5NTA6ImNwOTUw'@; put 'Iiw5NTA6ImNwOTUwIixjcDk1MDp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGgoNzIzMjQpfX0sYmlnNToiYmlnNWhrc2NzIixiaWc1aGtzY3M6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBoKDcyMzI0KS5jb25jYXQoaCg0MzI2NykpfSxlbmNv'@; put 'ZGVTa2lwVmFsczpbNDE2NzZdfSxjbmJpZzU6ImJpZzVoa3NjcyIsY3NiaWc1OiJiaWc1aGtzY3MiLHh4YmlnNToiYmlnNWhrc2NzIn19LDcyODkzKGZlLGosaCl7InVzZSBzdHJpY3QiO2Zvcih2YXIgeT1baCgxNTI1OSksaCgzNTA4OSksaCg3MTc1KSxoKDk3NDcpLGgoNTg2NzcpLGgoNzYy'@; put 'MyksaCgzMDE4NyksaCg5MzY5NCksaCg0NTI3OCldLGM9MDtjPHkubGVuZ3RoO2MrKyl7dmFyIHM9eVtjXTtmb3IodmFyIEEgaW4gcylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocyxBKSYmKGpbQV09c1tBXSl9fSwxNTI1OShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'eT1oKDkzODA3KS5CdWZmZXI7ZnVuY3Rpb24gYyhMLFIpe3RoaXMuZW5jPUwuZW5jb2RpbmdOYW1lLHRoaXMuYm9tQXdhcmU9TC5ib21Bd2FyZSwiYmFzZTY0Ij09PXRoaXMuZW5jP3RoaXMuZW5jb2Rlcj1DOiJjZXN1OCI9PT10aGlzLmVuYyYmKHRoaXMuZW5jPSJ1dGY4Iix0aGlzLmVuY29k'@; put 'ZXI9dywiXHV7MWY0YTl9IiE9PXkuZnJvbSgiZWRhMGJkZWRiMmE5IiwiaGV4IikudG9TdHJpbmcoKSYmKHRoaXMuZGVjb2Rlcj1TLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPVIuZGVmYXVsdENoYXJVbmljb2RlKSl9ZmUuZXhwb3J0cz17dXRmODp7dHlwZToiX2ludGVybmFsIixib21Bd2Fy'@; put 'ZTohMH0sY2VzdTg6e3R5cGU6Il9pbnRlcm5hbCIsYm9tQXdhcmU6ITB9LHVuaWNvZGUxMXV0Zjg6InV0ZjgiLHVjczI6e3R5cGU6Il9pbnRlcm5hbCIsYm9tQXdhcmU6ITB9LHV0ZjE2bGU6InVjczIiLGJpbmFyeTp7dHlwZToiX2ludGVybmFsIn0sYmFzZTY0Ont0eXBlOiJfaW50ZXJuYWwi'@; put 'fSxoZXg6e3R5cGU6Il9pbnRlcm5hbCJ9LF9pbnRlcm5hbDpjfSxjLnByb3RvdHlwZS5lbmNvZGVyPXYsYy5wcm90b3R5cGUuZGVjb2Rlcj1BO3ZhciBzPWgoNzg0NTQpLkk7ZnVuY3Rpb24gQShMLFIpe3MuY2FsbCh0aGlzLFIuZW5jKX1mdW5jdGlvbiB2KEwsUil7dGhpcy5lbmM9Ui5lbmN9'@; put 'ZnVuY3Rpb24gQyhMLFIpe3RoaXMucHJldlN0cj0iIn1mdW5jdGlvbiB3KEwsUil7fWZ1bmN0aW9uIFMoTCxSKXt0aGlzLmFjYz0wLHRoaXMuY29udEJ5dGVzPTAsdGhpcy5hY2NCeXRlcz0wLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPVIuZGVmYXVsdENoYXJVbmljb2RlfXMucHJvdG90eXBl'@; put 'LmVuZHx8KHMucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30pLEEucHJvdG90eXBlPXMucHJvdG90eXBlLHYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEwpe3JldHVybiB5LmZyb20oTCx0aGlzLmVuYyl9LHYucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sQy5wcm90b3R5cGUud3JpdGU9'@; put 'ZnVuY3Rpb24oTCl7dmFyIFI9KEw9dGhpcy5wcmV2U3RyK0wpLmxlbmd0aC1MLmxlbmd0aCU0O3JldHVybiB0aGlzLnByZXZTdHI9TC5zbGljZShSKSxMPUwuc2xpY2UoMCxSKSx5LmZyb20oTCwiYmFzZTY0Iil9LEMucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB5LmZyb20odGhp'@; put 'cy5wcmV2U3RyLCJiYXNlNjQiKX0sdy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTCl7Zm9yKHZhciBSPXkuYWxsb2MoMypMLmxlbmd0aCkseD0wLFU9MDtVPEwubGVuZ3RoO1UrKyl7dmFyIEg9TC5jaGFyQ29kZUF0KFUpO0g8MTI4P1JbeCsrXT1IOkg8MjA0OD8oUlt4KytdPTE5MisoSD4+'@; put 'PjYpLFJbeCsrXT0xMjgrKDYzJkgpKTooUlt4KytdPTIyNCsoSD4+PjEyKSxSW3grK109MTI4KyhIPj4+NiY2MyksUlt4KytdPTEyOCsoNjMmSCkpfXJldHVybiBSLnNsaWNlKDAseCl9LHcucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sUy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTCl7'@; put 'Zm9yKHZhciBSPXRoaXMuYWNjLHg9dGhpcy5jb250Qnl0ZXMsVT10aGlzLmFjY0J5dGVzLEg9IiIsVj0wO1Y8TC5sZW5ndGg7VisrKXt2YXIgTj1MW1ZdOzEyOCE9KDE5MiZOKT8oeD4wJiYoSCs9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUseD0wKSxOPDEyOD9IKz1TdHJpbmcuZnJvbUNoYXJD'@; put 'b2RlKE4pOk48MjI0PyhSPTMxJk4seD0xLFU9MSk6TjwyNDA/KFI9MTUmTix4PTIsVT0xKTpIKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZSk6eD4wPyhSPVI8PDZ8NjMmTixVKyssMD09PS0teCYmKEgrPTI9PT1VJiZSPDEyOCYmUj4wfHwzPT09VSYmUjwyMDQ4P3RoaXMuZGVmYXVsdENoYXJV'@; put 'bmljb2RlOlN0cmluZy5mcm9tQ2hhckNvZGUoUikpKTpIKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZX1yZXR1cm4gdGhpcy5hY2M9Uix0aGlzLmNvbnRCeXRlcz14LHRoaXMuYWNjQnl0ZXM9VSxIfSxTLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt2YXIgTD0wO3JldHVybiB0aGlzLmNvbnRC'@; put 'eXRlcz4wJiYoTCs9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUpLEx9fSw1ODY3NyhmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkzODA3KS5CdWZmZXI7ZnVuY3Rpb24gYyh2LEMpe2lmKCF2KXRocm93IG5ldyBFcnJvcigiU0JDUyBjb2RlYyBpcyBjYWxsZWQgd2l0aG91dCB0aGUgZGF0'@; put 'YS4iKTtpZighdi5jaGFyc3x8MTI4IT09di5jaGFycy5sZW5ndGgmJjI1NiE9PXYuY2hhcnMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgJyIrdi50eXBlKyInIGhhcyBpbmNvcnJlY3QgJ2NoYXJzJyAobXVzdCBiZSBvZiBsZW4gMTI4IG9yIDI1NikiKTtpZigxMjg9PT12LmNo'@; put 'YXJzLmxlbmd0aCl7Zm9yKHZhciB3PSIiLFM9MDtTPDEyODtTKyspdys9U3RyaW5nLmZyb21DaGFyQ29kZShTKTt2LmNoYXJzPXcrdi5jaGFyc310aGlzLmRlY29kZUJ1Zj15LmZyb20odi5jaGFycywidWNzMiIpO3ZhciBMPXkuYWxsb2MoNjU1MzYsQy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUu'@; put 'Y2hhckNvZGVBdCgwKSk7Zm9yKFM9MDtTPHYuY2hhcnMubGVuZ3RoO1MrKylMW3YuY2hhcnMuY2hhckNvZGVBdChTKV09Uzt0aGlzLmVuY29kZUJ1Zj1MfWZ1bmN0aW9uIHModixDKXt0aGlzLmVuY29kZUJ1Zj1DLmVuY29kZUJ1Zn1mdW5jdGlvbiBBKHYsQyl7dGhpcy5kZWNvZGVCdWY9Qy5k'@; put 'ZWNvZGVCdWZ9ai5fc2Jjcz1jLGMucHJvdG90eXBlLmVuY29kZXI9cyxjLnByb3RvdHlwZS5kZWNvZGVyPUEscy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odil7Zm9yKHZhciBDPXkuYWxsb2Modi5sZW5ndGgpLHc9MDt3PHYubGVuZ3RoO3crKylDW3ddPXRoaXMuZW5jb2RlQnVmW3YuY2hh'@; put 'ckNvZGVBdCh3KV07cmV0dXJuIEN9LHMucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sQS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odil7Zm9yKHZhciBDPXRoaXMuZGVjb2RlQnVmLHc9eS5hbGxvYygyKnYubGVuZ3RoKSxTPTAsTD0wLFI9MDtSPHYubGVuZ3RoO1IrKyl3W0w9MipSXT1D'@; put 'W1M9Mip2W1JdXSx3W0wrMV09Q1tTKzFdO3JldHVybiB3LnRvU3RyaW5nKCJ1Y3MyIil9LEEucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe319LDMwMTg3KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz17NDM3OiJjcDQzNyIsNzM3OiJjcDczNyIsNzc1OiJjcDc3NSIsODUwOiJjcDg1MCIs'@; put 'ODUyOiJjcDg1MiIsODU1OiJjcDg1NSIsODU2OiJjcDg1NiIsODU3OiJjcDg1NyIsODU4OiJjcDg1OCIsODYwOiJjcDg2MCIsODYxOiJjcDg2MSIsODYyOiJjcDg2MiIsODYzOiJjcDg2MyIsODY0OiJjcDg2NCIsODY1OiJjcDg2NSIsODY2OiJjcDg2NiIsODY5OiJjcDg2OSIsODc0OiJ3aW5k'@; put 'b3dzODc0Iiw5MjI6ImNwOTIyIiwxMDQ2OiJjcDEwNDYiLDExMjQ6ImNwMTEyNCIsMTEyNToiY3AxMTI1IiwxMTI5OiJjcDExMjkiLDExMzM6ImNwMTEzMyIsMTE2MToiY3AxMTYxIiwxMTYyOiJjcDExNjIiLDExNjM6ImNwMTE2MyIsMTI1MDoid2luZG93czEyNTAiLDEyNTE6IndpbmRvd3Mx'@; put 'MjUxIiwxMjUyOiJ3aW5kb3dzMTI1MiIsMTI1Mzoid2luZG93czEyNTMiLDEyNTQ6IndpbmRvd3MxMjU0IiwxMjU1OiJ3aW5kb3dzMTI1NSIsMTI1Njoid2luZG93czEyNTYiLDEyNTc6IndpbmRvd3MxMjU3IiwxMjU4OiJ3aW5kb3dzMTI1OCIsMjg1OTE6Imlzbzg4NTkxIiwyODU5MjoiaXNv'@; put 'ODg1OTIiLDI4NTkzOiJpc284ODU5MyIsMjg1OTQ6Imlzbzg4NTk0IiwyODU5NToiaXNvODg1OTUiLDI4NTk2OiJpc284ODU5NiIsMjg1OTc6Imlzbzg4NTk3IiwyODU5ODoiaXNvODg1OTgiLDI4NTk5OiJpc284ODU5OSIsMjg2MDA6Imlzbzg4NTkxMCIsMjg2MDE6Imlzbzg4NTkxMSIsMjg2'@; put 'MDM6Imlzbzg4NTkxMyIsMjg2MDQ6Imlzbzg4NTkxNCIsMjg2MDU6Imlzbzg4NTkxNSIsMjg2MDY6Imlzbzg4NTkxNiIsd2luZG93czg3NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUw'@; put 'ZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIx'@; put 'XHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4'@; put 'XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sd2luODc0OiJ3aW5kb3dzODc0IixjcDg3NDoid2luZG93czg3NCIsd2luZG93czEyNTA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHVmZmZkXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIx'@; put 'XHVmZmZkXHUyMDMwXHUwMTYwXHUyMDM5XHUwMTVhXHUwMTY0XHUwMTdkXHUwMTc5XHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTViXHUwMTY1XHUwMTdlXHUwMTdhXHhhMFx1MDJjN1x1MDJkOFx1MDE0'@; put 'MVx4YTRcdTAxMDRceGE2XHhhN1x4YThceGE5XHUwMTVlXHhhYlx4YWNceGFkXHhhZVx1MDE3Ylx4YjBceGIxXHUwMmRiXHUwMTQyXHhiNFx4YjVceGI2XHhiN1x4YjhcdTAxMDVcdTAxNWZceGJiXHUwMTNkXHUwMmRkXHUwMTNlXHUwMTdjXHUwMTU0XHhjMVx4YzJcdTAxMDJceGM0XHUwMTM5'@; put 'XHUwMTA2XHhjN1x1MDEwY1x4YzlcdTAxMThceGNiXHUwMTFhXHhjZFx4Y2VcdTAxMGVcdTAxMTBcdTAxNDNcdTAxNDdceGQzXHhkNFx1MDE1MFx4ZDZceGQ3XHUwMTU4XHUwMTZlXHhkYVx1MDE3MFx4ZGNceGRkXHUwMTYyXHhkZlx1MDE1NVx4ZTFceGUyXHUwMTAzXHhlNFx1MDEzYVx1MDEw'@; put 'N1x4ZTdcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExYlx4ZWRceGVlXHUwMTBmXHUwMTExXHUwMTQ0XHUwMTQ4XHhmM1x4ZjRcdTAxNTFceGY2XHhmN1x1MDE1OVx1MDE2Zlx4ZmFcdTAxNzFceGZjXHhmZFx1MDE2M1x1MDJkOSJ9LHdpbjEyNTA6IndpbmRvd3MxMjUwIixjcDEyNTA6IndpbmRv'@; put 'd3MxMjUwIix3aW5kb3dzMTI1MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MDJcdTA0MDNcdTIwMWFcdTA0NTNcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTIwYWNcdTIwMzBcdTA0MDlcdTIwMzlcdTA0MGFcdTA0MGNcdTA0MGJcdTA0MGZcdTA0NTJcdTIwMThcdTIwMTlcdTIwMWNcdTIw'@; put 'MWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTA0NTlcdTIwM2FcdTA0NWFcdTA0NWNcdTA0NWJcdTA0NWZceGEwXHUwNDBlXHUwNDVlXHUwNDA4XHhhNFx1MDQ5MFx4YTZceGE3XHUwNDAxXHhhOVx1MDQwNFx4YWJceGFjXHhhZFx4YWVcdTA0MDdceGIwXHhiMVx1MDQwNlx1MDQ1'@; put 'Nlx1MDQ5MVx4YjVceGI2XHhiN1x1MDQ1MVx1MjExNlx1MDQ1NFx4YmJcdTA0NThcdTA0MDVcdTA0NTVcdTA0NTdcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0'@; put 'MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2Jc'@; put 'dTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGYifSx3aW4xMjUxOiJ3aW5kb3dzMTI1MSIsY3AxMjUxOiJ3aW5kb3dzMTI1MSIs'@; put 'd2luZG93czEyNTI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHUwMTdkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIy'@; put 'XHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHUwMTdlXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4Yjlc'@; put 'eGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4'@; put 'ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0sd2luMTI1Mjoid2luZG93czEyNTIiLGNwMTI1Mjoid2luZG93czEyNTIiLHdpbmRv'@; put 'd3MxMjUzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAx'@; put 'M1x1MjAxNFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTBcdTAzODVcdTAzODZceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHVmZmZkXHhhYlx4YWNceGFkXHhhZVx1MjAxNVx4YjBceGIxXHhiMlx4YjNcdTAzODRceGI1XHhiNlx4YjdcdTAz'@; put 'ODhcdTAzODlcdTAzOGFceGJiXHUwMzhjXHhiZFx1MDM4ZVx1MDM4Zlx1MDM5MFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1ZmZmZFx1MDNhM1x1MDNh'@; put 'NFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNhYVx1MDNhYlx1MDNhY1x1MDNhZFx1MDNhZVx1MDNhZlx1MDNiMFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1'@; put 'MDNjMFx1MDNjMVx1MDNjMlx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1MDNjYVx1MDNjYlx1MDNjY1x1MDNjZFx1MDNjZVx1ZmZmZCJ9LHdpbjEyNTM6IndpbmRvd3MxMjUzIixjcDEyNTM6IndpbmRvd3MxMjUzIix3aW5kb3dzMTI1NDp7dHlwZToiX3NiY3Mi'@; put 'LGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJc'@; put 'dTAxNjFcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4'@; put 'YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxMWVceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxMzBcdTAxNWVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdc'@; put 'eGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDExZlx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDEzMVx1MDE1Zlx4ZmYifSx3aW4xMjU0OiJ3aW5kb3dzMTI1NCIsY3AxMjU0OiJ3aW5kb3dzMTI1NCIsd2luZG93czEyNTU6e3R5cGU6'@; put 'Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRj'@; put 'XHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx4YTFceGEyXHhhM1x1MjBhYVx4YTVceGE2XHhhN1x4YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhiY1x4YmRc'@; put 'eGJlXHhiZlx1MDViMFx1MDViMVx1MDViMlx1MDViM1x1MDViNFx1MDViNVx1MDViNlx1MDViN1x1MDViOFx1MDViOVx1MDViYVx1MDViYlx1MDViY1x1MDViZFx1MDViZVx1MDViZlx1MDVjMFx1MDVjMVx1MDVjMlx1MDVjM1x1MDVmMFx1MDVmMVx1MDVmMlx1MDVmM1x1MDVmNFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVl'@; put 'NVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCJ9LHdpbjEyNTU6IndpbmRvd3MxMjU1IixjcDEyNTU6IndpbmRvd3MxMjU1Iix3aW5kb3dzMTI1Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdTA2N2VcdTIwMWFcdTAxOTJc'@; put 'dTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTA2NzlcdTIwMzlcdTAxNTJcdTA2ODZcdTA2OThcdTA2ODhcdTA2YWZcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTA2YTlcdTIxMjJcdTA2OTFcdTIwM2FcdTAxNTNcdTIwMGNcdTIwMGRcdTA2'@; put 'YmFceGEwXHUwNjBjXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdTA2YmVceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlcdTA2MWJceGJiXHhiY1x4YmRceGJlXHUwNjFmXHUwNmMxXHUwNjIxXHUwNjIyXHUwNjIzXHUw'@; put 'NjI0XHUwNjI1XHUwNjI2XHUwNjI3XHUwNjI4XHUwNjI5XHUwNjJhXHUwNjJiXHUwNjJjXHUwNjJkXHUwNjJlXHUwNjJmXHUwNjMwXHUwNjMxXHUwNjMyXHUwNjMzXHUwNjM0XHUwNjM1XHUwNjM2XHhkN1x1MDYzN1x1MDYzOFx1MDYzOVx1MDYzYVx1MDY0MFx1MDY0MVx1MDY0Mlx1MDY0M1x4'@; put 'ZTBcdTA2NDRceGUyXHUwNjQ1XHUwNjQ2XHUwNjQ3XHUwNjQ4XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTA2NDlcdTA2NGFceGVlXHhlZlx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx4ZjRcdTA2NGZcdTA2NTBceGY3XHUwNjUxXHhmOVx1MDY1Mlx4ZmJceGZjXHUyMDBlXHUyMDBmXHUwNmQyIn0s'@; put 'd2luMTI1Njoid2luZG93czEyNTYiLGNwMTI1Njoid2luZG93czEyNTYiLHdpbmRvd3MxMjU3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1ZmZmZFx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx4YThcdTAyYzdc'@; put 'eGI4XHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHhhZlx1MDJkYlx1ZmZmZFx4YTBcdWZmZmRceGEyXHhhM1x4YTRcdWZmZmRceGE2XHhhN1x4ZDhceGE5XHUwMTU2XHhhYlx4YWNceGFkXHhhZVx4'@; put 'YzZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4ZjhceGI5XHUwMTU3XHhiYlx4YmNceGJkXHhiZVx4ZTZcdTAxMDRcdTAxMmVcdTAxMDBcdTAxMDZceGM0XHhjNVx1MDExOFx1MDExMlx1MDEwY1x4YzlcdTAxNzlcdTAxMTZcdTAxMjJcdTAxMzZcdTAxMmFcdTAxM2JcdTAxNjBc'@; put 'dTAxNDNcdTAxNDVceGQzXHUwMTRjXHhkNVx4ZDZceGQ3XHUwMTcyXHUwMTQxXHUwMTVhXHUwMTZhXHhkY1x1MDE3Ylx1MDE3ZFx4ZGZcdTAxMDVcdTAxMmZcdTAxMDFcdTAxMDdceGU0XHhlNVx1MDExOVx1MDExM1x1MDEwZFx4ZTlcdTAxN2FcdTAxMTdcdTAxMjNcdTAxMzdcdTAxMmJcdTAx'@; put 'M2NcdTAxNjFcdTAxNDRcdTAxNDZceGYzXHUwMTRkXHhmNVx4ZjZceGY3XHUwMTczXHUwMTQyXHUwMTViXHUwMTZiXHhmY1x1MDE3Y1x1MDE3ZVx1MDJkOSJ9LHdpbjEyNTc6IndpbmRvd3MxMjU3IixjcDEyNTc6IndpbmRvd3MxMjU3Iix3aW5kb3dzMTI1ODp7dHlwZToiX3NiY3MiLGNoYXJz'@; put 'OiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdWZmZmRcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRc'@; put 'dTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMx'@; put 'XHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZc'@; put 'eGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIn0sd2luMTI1ODoid2luZG93czEyNTgiLGNwMTI1ODoid2luZG93czEyNTgiLGlzbzg4NTkx'@; put 'Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhh'@; put 'M1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNj'@; put 'XHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVc'@; put 'eGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0sY3AyODU5MToiaXNvODg1OTEiLGlzbzg4NTkyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4'@; put 'OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDJkOFx1MDE0MVx4YTRcdTAxM2RcdTAxNWFceGE3XHhhOFx1MDE2MFx1MDE1ZVx1MDE2NFx1MDE3OVx4YWRcdTAxN2RcdTAxN2JceGIwXHUwMTA1XHUwMmRiXHUwMTQyXHhi'@; put 'NFx1MDEzZVx1MDE1Ylx1MDJjN1x4YjhcdTAxNjFcdTAxNWZcdTAxNjVcdTAxN2FcdTAyZGRcdTAxN2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEwMlx4YzRcdTAxMzlcdTAxMDZceGM3XHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1MDE0N1x4'@; put 'ZDNceGQ0XHUwMTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTFiXHhlZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhceGYzXHhm'@; put 'NFx1MDE1MVx4ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5In0sY3AyODU5MjoiaXNvODg1OTIiLGlzbzg4NTkzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhk'@; put 'XHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEyNlx1MDJkOFx4YTNceGE0XHVmZmZkXHUwMTI0XHhhN1x4YThcdTAxMzBcdTAxNWVcdTAxMWVcdTAxMzRceGFkXHVmZmZkXHUwMTdiXHhiMFx1MDEy'@; put 'N1x4YjJceGIzXHhiNFx4YjVcdTAxMjVceGI3XHhiOFx1MDEzMVx1MDE1Zlx1MDExZlx1MDEzNVx4YmRcdWZmZmRcdTAxN2NceGMwXHhjMVx4YzJcdWZmZmRceGM0XHUwMTBhXHUwMTA4XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHVmZmZkXHhkMVx4ZDJceGQzXHhkNFx1'@; put 'MDEyMFx4ZDZceGQ3XHUwMTFjXHhkOVx4ZGFceGRiXHhkY1x1MDE2Y1x1MDE1Y1x4ZGZceGUwXHhlMVx4ZTJcdWZmZmRceGU0XHUwMTBiXHUwMTA5XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHVmZmZkXHhmMVx4ZjJceGYzXHhmNFx1MDEyMVx4ZjZceGY3XHUwMTFkXHhm'@; put 'OVx4ZmFceGZiXHhmY1x1MDE2ZFx1MDE1ZFx1MDJkOSJ9LGNwMjg1OTM6Imlzbzg4NTkzIixpc284ODU5NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4'@; put 'OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAxMzhcdTAxNTZceGE0XHUwMTI4XHUwMTNiXHhhN1x4YThcdTAxNjBcdTAxMTJcdTAxMjJcdTAxNjZceGFkXHUwMTdkXHhhZlx4YjBcdTAxMDVcdTAyZGJcdTAxNTdceGI0XHUwMTI5XHUw'@; put 'MTNjXHUwMmM3XHhiOFx1MDE2MVx1MDExM1x1MDEyM1x1MDE2N1x1MDE0YVx1MDE3ZVx1MDE0Ylx1MDEwMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx1MDEyZVx1MDEwY1x4YzlcdTAxMThceGNiXHUwMTE2XHhjZFx4Y2VcdTAxMmFcdTAxMTBcdTAxNDVcdTAxNGNcdTAxMzZceGQ0XHhkNVx4'@; put 'ZDZceGQ3XHhkOFx1MDE3Mlx4ZGFceGRiXHhkY1x1MDE2OFx1MDE2YVx4ZGZcdTAxMDFceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZcdTAxMmZcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExN1x4ZWRceGVlXHUwMTJiXHUwMTExXHUwMTQ2XHUwMTRkXHUwMTM3XHhmNFx4ZjVceGY2XHhmN1x4Zjhc'@; put 'dTAxNzNceGZhXHhmYlx4ZmNcdTAxNjlcdTAxNmJcdTAyZDkifSxjcDI4NTk0OiJpc284ODU5NCIsaXNvODg1OTU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4'@; put 'OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwNDAxXHUwNDAyXHUwNDAzXHUwNDA0XHUwNDA1XHUwNDA2XHUwNDA3XHUwNDA4XHUwNDA5XHUwNDBhXHUwNDBiXHUwNDBjXHhhZFx1MDQwZVx1MDQwZlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQx'@; put 'M1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1'@; put 'MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0'@; put 'YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MjExNlx1MDQ1MVx1MDQ1Mlx1MDQ1M1x1MDQ1NFx1MDQ1NVx1MDQ1Nlx1MDQ1N1x1MDQ1OFx1MDQ1OVx1MDQ1YVx1MDQ1Ylx1MDQ1Y1x4YTdcdTA0NWVcdTA0NWYifSxjcDI4NTk1OiJpc284ODU5NSIsaXNvODg1OTY6e3R5cGU6Il9z'@; put 'YmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHVmZmZkXHVmZmZkXHVmZmZkXHhh'@; put 'NFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDYwY1x4YWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA2MWJcdWZmZmRcdWZmZmRcdWZmZmRcdTA2MWZcdWZm'@; put 'ZmRcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZcdTA2MzdcdTA2MzhcdTA2MzlcdTA2M2FcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA2NDBcdTA2NDFcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVcdTA2NGZcdTA2NTBcdTA2NTFcdTA2NTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxjcDI4NTk2OiJpc284ODU5NiIsaXNvODg1OTc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4'@; put 'Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUyMDE4XHUyMDE5XHhhM1x1MjBhY1x1MjBhZlx4YTZceGE3XHhhOFx4YTlcdTAzN2FceGFiXHhhY1x4YWRcdWZmZmRcdTIwMTVceGIwXHhiMVx4YjJceGIzXHUwMzg0'@; put 'XHUwMzg1XHUwMzg2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhlXHUwMzhmXHUwMzkwXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUw'@; put 'M2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2FhXHUwM2FiXHUwM2FjXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2Jj'@; put 'XHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUwM2NhXHUwM2NiXHUwM2NjXHUwM2NkXHUwM2NlXHVmZmZkIn0sY3AyODU5NzoiaXNvODg1OTciLGlzbzg4NTk4Ont0eXBlOiJfc2JjcyIsY2hhcnM6'@; put 'Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1ZmZmZFx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4'@; put 'YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhiY1x4YmRceGJlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE3XHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1XHUwNWQ2'@; put 'XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4XHUwNWU5XHUwNWVhXHVmZmZkXHVmZmZkXHUyMDBlXHUyMDBmXHVmZmZkIn0sY3AyODU5ODoiaXNv'@; put 'ODg1OTgiLGlzbzg4NTk5Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlm'@; put 'XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4Yzhc'@; put 'eGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTFlXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMTMwXHUwMTVlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAx'@; put 'MWZceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxMzFcdTAxNWZceGZmIn0sY3AyODU5OToiaXNvODg1OTkiLGlzbzg4NTkxMDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4'@; put 'OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAxMTJcdTAxMjJcdTAxMmFcdTAxMjhcdTAxMzZceGE3XHUwMTNiXHUwMTEwXHUwMTYwXHUwMTY2XHUwMTdkXHhhZFx1MDE2'@; put 'YVx1MDE0YVx4YjBcdTAxMDVcdTAxMTNcdTAxMjNcdTAxMmJcdTAxMjlcdTAxMzdceGI3XHUwMTNjXHUwMTExXHUwMTYxXHUwMTY3XHUwMTdlXHUyMDE1XHUwMTZiXHUwMTRiXHUwMTAwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHUwMTJlXHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMTZceGNk'@; put 'XHhjZVx4Y2ZceGQwXHUwMTQ1XHUwMTRjXHhkM1x4ZDRceGQ1XHhkNlx1MDE2OFx4ZDhcdTAxNzJceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZcdTAxMDFceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZcdTAxMmZcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExN1x4ZWRceGVlXHhlZlx4ZjBcdTAxNDZc'@; put 'dTAxNGRceGYzXHhmNFx4ZjVceGY2XHUwMTY5XHhmOFx1MDE3M1x4ZmFceGZiXHhmY1x4ZmRceGZlXHUwMTM4In0sY3AyODYwMDoiaXNvODg1OTEwIixpc284ODU5MTE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhi'@; put 'XHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUw'@; put 'ZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5'@; put 'XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUw'@; put 'ZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sY3Ay'@; put 'ODYwMToiaXNvODg1OTExIixpc284ODU5MTM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNc'@; put 'eDlkXHg5ZVx4OWZceGEwXHUyMDFkXHhhMlx4YTNceGE0XHUyMDFlXHhhNlx4YTdceGQ4XHhhOVx1MDE1Nlx4YWJceGFjXHhhZFx4YWVceGM2XHhiMFx4YjFceGIyXHhiM1x1MjAxY1x4YjVceGI2XHhiN1x4ZjhceGI5XHUwMTU3XHhiYlx4YmNceGJkXHhiZVx4ZTZcdTAxMDRcdTAxMmVcdTAx'@; put 'MDBcdTAxMDZceGM0XHhjNVx1MDExOFx1MDExMlx1MDEwY1x4YzlcdTAxNzlcdTAxMTZcdTAxMjJcdTAxMzZcdTAxMmFcdTAxM2JcdTAxNjBcdTAxNDNcdTAxNDVceGQzXHUwMTRjXHhkNVx4ZDZceGQ3XHUwMTcyXHUwMTQxXHUwMTVhXHUwMTZhXHhkY1x1MDE3Ylx1MDE3ZFx4ZGZcdTAxMDVc'@; put 'dTAxMmZcdTAxMDFcdTAxMDdceGU0XHhlNVx1MDExOVx1MDExM1x1MDEwZFx4ZTlcdTAxN2FcdTAxMTdcdTAxMjNcdTAxMzdcdTAxMmJcdTAxM2NcdTAxNjFcdTAxNDRcdTAxNDZceGYzXHUwMTRkXHhmNVx4ZjZceGY3XHUwMTczXHUwMTQyXHUwMTViXHUwMTZiXHhmY1x1MDE3Y1x1MDE3ZVx1'@; put 'MjAxOSJ9LGNwMjg2MDM6Imlzbzg4NTkxMyIsaXNvODg1OTE0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5'@; put 'YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MWUwMlx1MWUwM1x4YTNcdTAxMGFcdTAxMGJcdTFlMGFceGE3XHUxZTgwXHhhOVx1MWU4Mlx1MWUwYlx1MWVmMlx4YWRceGFlXHUwMTc4XHUxZTFlXHUxZTFmXHUwMTIwXHUwMTIxXHUxZTQwXHUxZTQxXHhiNlx1MWU1Nlx1MWU4MVx1MWU1N1x1'@; put 'MWU4M1x1MWU2MFx1MWVmM1x1MWU4NFx1MWU4NVx1MWU2MVx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxNzRceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZcdTFlNmFceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRcdTAxNzZc'@; put 'eGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDE3NVx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx1MWU2Ylx4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx1MDE3N1x4ZmYifSxjcDI4NjA0OiJpc284ODU5MTQiLGlzbzg4'@; put 'NTkxNTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhh'@; put 'Mlx4YTNcdTIwYWNceGE1XHUwMTYwXHhhN1x1MDE2MVx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHUwMTdkXHhiNVx4YjZceGI3XHUwMTdlXHhiOVx4YmFceGJiXHUwMTUyXHUwMTUzXHUwMTc4XHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3'@; put 'XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBc'@; put 'eGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSxjcDI4NjA1OiJpc284ODU5MTUiLGlzbzg4NTkxNjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhj'@; put 'XHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAxMDVcdTAxNDFcdTIwYWNcdTIwMWVcdTAxNjBceGE3XHUwMTYxXHhhOVx1MDIxOFx4YWJcdTAxNzlceGFkXHUwMTdhXHUwMTdiXHhi'@; put 'MFx4YjFcdTAxMGNcdTAxNDJcdTAxN2RcdTIwMWRceGI2XHhiN1x1MDE3ZVx1MDEwZFx1MDIxOVx4YmJcdTAxNTJcdTAxNTNcdTAxNzhcdTAxN2NceGMwXHhjMVx4YzJcdTAxMDJceGM0XHUwMTA2XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDExMFx1MDE0M1x4'@; put 'ZDJceGQzXHhkNFx1MDE1MFx4ZDZcdTAxNWFcdTAxNzBceGQ5XHhkYVx4ZGJceGRjXHUwMTE4XHUwMjFhXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRcdTAxMDdceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTExXHUwMTQ0XHhmMlx4ZjNceGY0XHUwMTUxXHhm'@; put 'Nlx1MDE1Ylx1MDE3MVx4ZjlceGZhXHhmYlx4ZmNcdTAxMTlcdTAyMWJceGZmIn0sY3AyODYwNjoiaXNvODg1OTE2IixjcDQzNzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4'@; put 'ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGEyXHhhM1x4YTVcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFc'@; put 'dTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1'@; put 'NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNj'@; put 'Nlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTQzNzoiY3A0MzciLGNzaWJtNDM3OiJjcDQzNyIsY3A3Mzc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwMzkx'@; put 'XHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUw'@; put 'M2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2MyXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2'@; put 'XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUy'@; put 'NTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2M5XHUwM2FjXHUwM2FkXHUwM2FlXHUwM2NhXHUwM2FmXHUwM2NjXHUwM2NkXHUwM2NiXHUwM2NlXHUwMzg2XHUwMzg4XHUwMzg5XHUwMzhhXHUwMzhj'@; put 'XHUwMzhlXHUwMzhmXHhiMVx1MjI2NVx1MjI2NFx1MDNhYVx1MDNhYlx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtNzM3OiJjcDczNyIsY3NpYm03Mzc6ImNwNzM3IixjcDc3NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTAxMDZceGZjXHhl'@; put 'OVx1MDEwMVx4ZTRcdTAxMjNceGU1XHUwMTA3XHUwMTQyXHUwMTEzXHUwMTU2XHUwMTU3XHUwMTJiXHUwMTc5XHhjNFx4YzVceGM5XHhlNlx4YzZcdTAxNGRceGY2XHUwMTIyXHhhMlx1MDE1YVx1MDE1Ylx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x4YTRcdTAxMDBcdTAxMmFceGYzXHUwMTdi'@; put 'XHUwMTdjXHUwMTdhXHUyMDFkXHhhNlx4YTlceGFlXHhhY1x4YmRceGJjXHUwMTQxXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTAxMDRcdTAxMGNcdTAxMThcdTAxMTZcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxMmVcdTAxNjBcdTI1MTBcdTI1MTRcdTI1MzRc'@; put 'dTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxNzJcdTAxNmFcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTAxN2RcdTAxMDVcdTAxMGRcdTAxMTlcdTAxMTdcdTAxMmZcdTAxNjFcdTAxNzNcdTAxNmJcdTAxN2VcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1'@; put 'OGNcdTI1OTBcdTI1ODBceGQzXHhkZlx1MDE0Y1x1MDE0M1x4ZjVceGQ1XHhiNVx1MDE0NFx1MDEzNlx1MDEzN1x1MDEzYlx1MDEzY1x1MDE0Nlx1MDExMlx1MDE0NVx1MjAxOVx4YWRceGIxXHUyMDFjXHhiZVx4YjZceGE3XHhmN1x1MjAxZVx4YjBcdTIyMTlceGI3XHhiOVx4YjNceGIyXHUy'@; put 'NWEwXHhhMCJ9LGlibTc3NToiY3A3NzUiLGNzaWJtNzc1OiJjcDc3NSIsY3A4NTA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5'@; put 'XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUy'@; put 'NTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRceGYwXHhkMFx4Y2FceGNiXHhjOFx1MDEzMVx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1'@; put 'MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5XHhmZFx4ZGRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtODUwOiJjcDg1'@; put 'MCIsY3NpYm04NTA6ImNwODUwIixjcDg1Mjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx1MDE2Zlx1MDEwN1x4ZTdcdTAxNDJceGViXHUwMTUwXHUwMTUxXHhlZVx1MDE3OVx4YzRcdTAxMDZceGM5XHUwMTM5XHUwMTNhXHhmNFx4ZjZcdTAxM2RcdTAxM2VcdTAx'@; put 'NWFcdTAxNWJceGQ2XHhkY1x1MDE2NFx1MDE2NVx1MDE0MVx4ZDdcdTAxMGRceGUxXHhlZFx4ZjNceGZhXHUwMTA0XHUwMTA1XHUwMTdkXHUwMTdlXHUwMTE4XHUwMTE5XHhhY1x1MDE3YVx1MDEwY1x1MDE1Zlx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJc'@; put 'dTAxMWFcdTAxNWVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxN2JcdTAxN2NcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxMDJcdTAxMDNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHUwMTExXHUwMTEwXHUwMTBl'@; put 'XHhjYlx1MDEwZlx1MDE0N1x4Y2RceGNlXHUwMTFiXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwMTYyXHUwMTZlXHUyNTgwXHhkM1x4ZGZceGQ0XHUwMTQzXHUwMTQ0XHUwMTQ4XHUwMTYwXHUwMTYxXHUwMTU0XHhkYVx1MDE1NVx1MDE3MFx4ZmRceGRkXHUwMTYzXHhiNFx4YWRcdTAyZGRc'@; put 'dTAyZGJcdTAyYzdcdTAyZDhceGE3XHhmN1x4YjhceGIwXHhhOFx1MDJkOVx1MDE3MVx1MDE1OFx1MDE1OVx1MjVhMFx4YTAifSxpYm04NTI6ImNwODUyIixjc2libTg1MjoiY3A4NTIiLGNwODU1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQ1Mlx1MDQwMlx1MDQ1M1x1MDQwM1x1MDQ1MVx1'@; put 'MDQwMVx1MDQ1NFx1MDQwNFx1MDQ1NVx1MDQwNVx1MDQ1Nlx1MDQwNlx1MDQ1N1x1MDQwN1x1MDQ1OFx1MDQwOFx1MDQ1OVx1MDQwOVx1MDQ1YVx1MDQwYVx1MDQ1Ylx1MDQwYlx1MDQ1Y1x1MDQwY1x1MDQ1ZVx1MDQwZVx1MDQ1Zlx1MDQwZlx1MDQ0ZVx1MDQyZVx1MDQ0YVx1MDQyYVx1MDQz'@; put 'MFx1MDQxMFx1MDQzMVx1MDQxMVx1MDQ0Nlx1MDQyNlx1MDQzNFx1MDQxNFx1MDQzNVx1MDQxNVx1MDQ0NFx1MDQyNFx1MDQzM1x1MDQxM1x4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUwNDQ1XHUwNDI1XHUwNDM4XHUwNDE4XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVk'@; put 'XHUwNDM5XHUwNDE5XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUwNDNhXHUwNDFhXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx1MDQzYlx1MDQxYlx1MDQzY1x1MDQxY1x1MDQzZFx1MDQxZFx1MDQzZVx1MDQxZVx1MDQz'@; put 'Zlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MDQxZlx1MDQ0Zlx1MjU4MFx1MDQyZlx1MDQ0MFx1MDQyMFx1MDQ0MVx1MDQyMVx1MDQ0Mlx1MDQyMlx1MDQ0M1x1MDQyM1x1MDQzNlx1MDQxNlx1MDQzMlx1MDQxMlx1MDQ0Y1x1MDQyY1x1MjExNlx4YWRcdTA0NGJcdTA0MmJcdTA0MzdcdTA0'@; put 'MTdcdTA0NDhcdTA0MjhcdTA0NGRcdTA0MmRcdTA0NDlcdTA0MjlcdTA0NDdcdTA0MjdceGE3XHUyNWEwXHhhMCJ9LGlibTg1NToiY3A4NTUiLGNzaWJtODU1OiJjcDg1NSIsY3A4NTY6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1XHUw'@; put 'NWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4XHUwNWU5XHUwNWVhXHVmZmZkXHhhM1x1ZmZmZFx4ZDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGFlXHhhY1x4YmRceGJjXHVmZmZkXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdWZmZmRcdWZmZmRcdWZmZmRceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRc'@; put 'dTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdWZmZmRcdWZmZmRcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0'@; put 'XHhhNlx1ZmZmZFx1MjU4MFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YjVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJc'@; put 'dTI1YTBceGEwIn0saWJtODU2OiJjcDg1NiIsY3NpYm04NTY6ImNwODU2IixjcDg1Nzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHUwMTMxXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZi'@; put 'XHhmOVx1MDEzMFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUwMTVlXHUwMTVmXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHUwMTFlXHUwMTFmXHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUy'@; put 'NTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRceGJhXHhhYVx4Y2FceGNiXHhjOFx1ZmZmZFx4Y2RceGNlXHhjZlx1MjUxOFx1'@; put 'MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx1ZmZmZFx4ZDdceGRhXHhkYlx4ZDlceGVjXHhmZlx4YWZceGI0XHhhZFx4YjFcdWZmZmRceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAi'@; put 'fSxpYm04NTc6ImNwODU3Iixjc2libTg1NzoiY3A4NTciLGNwODU4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2'@; put 'XHhkY1x4ZjhceGEzXHhkOFx4ZDdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZceGFlXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJceGMwXHhhOVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx4YTJc'@; put 'eGE1XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHhlM1x4YzNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHhmMFx4ZDBceGNhXHhjYlx4YzhcdTIwYWNceGNkXHhjZVx4Y2ZcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2'@; put 'XHhjY1x1MjU4MFx4ZDNceGRmXHhkNFx4ZDJceGY1XHhkNVx4YjVceGZlXHhkZVx4ZGFceGRiXHhkOVx4ZmRceGRkXHhhZlx4YjRceGFkXHhiMVx1MjAxN1x4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCJ9LGlibTg1ODoiY3A4NTgiLGNzaWJt'@; put 'ODU4OiJjcDg1OCIsY3A4NjA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTNceGUwXHhjMVx4ZTdceGVhXHhjYVx4ZThceGNkXHhkNFx4ZWNceGMzXHhjMlx4YzlceGMwXHhjOFx4ZjRceGY1XHhmMlx4ZGFceGY5XHhjY1x4ZDVceGRjXHhhMlx4YTNceGQ5XHUyMGE3'@; put 'XHhkM1x4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4ZDJceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBc'@; put 'dTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1'@; put 'ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhi'@; put 'MFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2MDoiY3A4NjAiLGNzaWJtODYwOiJjcDg2MCIsY3A4NjE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGQwXHhmMFx4ZGVceGM0XHhjNVx4'@; put 'YzlceGU2XHhjNlx4ZjRceGY2XHhmZVx4ZmJceGRkXHhmZFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4YzFceGNkXHhkM1x4ZGFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUy'@; put 'NTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4'@; put 'XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVc'@; put 'dTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04NjE6ImNwODYxIixjc2libTg2MToiY3A4NjEiLGNwODYyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1'@; put 'MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx4YTJc'@; put 'eGEzXHhhNVx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1'@; put 'MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2'@; put 'YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1'@; put 'MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODYyOiJjcDg2MiIsY3NpYm04NjI6ImNwODYyIixjcDg2Mzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhjMlx4ZTBceGI2XHhlN1x4ZWFceGViXHhlOFx4ZWZc'@; put 'eGVlXHUyMDE3XHhjMFx4YTdceGM5XHhjOFx4Y2FceGY0XHhjYlx4Y2ZceGZiXHhmOVx4YTRceGQ0XHhkY1x4YTJceGEzXHhkOVx4ZGJcdTAxOTJceGE2XHhiNFx4ZjNceGZhXHhhOFx4YjhceGIzXHhhZlx4Y2VcdTIzMTBceGFjXHhiZFx4YmNceGJlXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1'@; put 'OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBc'@; put 'dTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1'@; put 'MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2MzoiY3A4NjMiLGNzaWJtODYzOiJjcDg2MyIsY3A4NjQ6e3R5cGU6'@; put 'Il9zYmNzIixjaGFyczoiXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkXHUwNjZhJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9'@; put 'Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YjBceGI3XHUyMjE5XHUyMjFhXHUyNTkyXHUyNTAwXHUyNTAyXHUyNTNjXHUyNTI0XHUyNTJjXHUyNTFjXHUyNTM0XHUyNTEwXHUyNTBjXHUyNTE0XHUyNTE4XHUw'@; put 'M2IyXHUyMjFlXHUwM2M2XHhiMVx4YmRceGJjXHUyMjQ4XHhhYlx4YmJcdWZlZjdcdWZlZjhcdWZmZmRcdWZmZmRcdWZlZmJcdWZlZmNcdWZmZmRceGEwXHhhZFx1ZmU4Mlx4YTNceGE0XHVmZTg0XHVmZmZkXHVmZmZkXHVmZThlXHVmZThmXHVmZTk1XHVmZTk5XHUwNjBjXHVmZTlkXHVmZWEx'@; put 'XHVmZWE1XHUwNjYwXHUwNjYxXHUwNjYyXHUwNjYzXHUwNjY0XHUwNjY1XHUwNjY2XHUwNjY3XHUwNjY4XHUwNjY5XHVmZWQxXHUwNjFiXHVmZWIxXHVmZWI1XHVmZWI5XHUwNjFmXHhhMlx1ZmU4MFx1ZmU4MVx1ZmU4M1x1ZmU4NVx1ZmVjYVx1ZmU4Ylx1ZmU4ZFx1ZmU5MVx1ZmU5M1x1ZmU5'@; put 'N1x1ZmU5Ylx1ZmU5Zlx1ZmVhM1x1ZmVhN1x1ZmVhOVx1ZmVhYlx1ZmVhZFx1ZmVhZlx1ZmViM1x1ZmViN1x1ZmViYlx1ZmViZlx1ZmVjMVx1ZmVjNVx1ZmVjYlx1ZmVjZlx4YTZceGFjXHhmN1x4ZDdcdWZlYzlcdTA2NDBcdWZlZDNcdWZlZDdcdWZlZGJcdWZlZGZcdWZlZTNcdWZlZTdcdWZl'@; put 'ZWJcdWZlZWRcdWZlZWZcdWZlZjNcdWZlYmRcdWZlY2NcdWZlY2VcdWZlY2RcdWZlZTFcdWZlN2RcdTA2NTFcdWZlZTVcdWZlZTlcdWZlZWNcdWZlZjBcdWZlZjJcdWZlZDBcdWZlZDVcdWZlZjVcdWZlZjZcdWZlZGRcdWZlZDlcdWZlZjFcdTI1YTBcdWZmZmQifSxpYm04NjQ6ImNwODY0Iixj'@; put 'c2libTg2NDoiY3A4NjQiLGNwODY1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx1'@; put 'MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhhNFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1'@; put 'Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1'@; put 'MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4Zjdc'@; put 'dTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODY1OiJjcDg2NSIsY3NpYm04NjU6ImNwODY1IixjcDg2Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0'@; put 'MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRc'@; put 'dTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1'@; put 'MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhc'@; put 'dTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MGVcdTA0'@; put 'NWVceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIn0saWJtODY2OiJjcDg2NiIsY3NpYm04NjY6ImNwODY2IixjcDg2OTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzODZcdWZmZmRceGI3XHhhY1x4YTZc'@; put 'dTIwMThcdTIwMTlcdTAzODhcdTIwMTVcdTAzODlcdTAzOGFcdTAzYWFcdTAzOGNcdWZmZmRcdWZmZmRcdTAzOGVcdTAzYWJceGE5XHUwMzhmXHhiMlx4YjNcdTAzYWNceGEzXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2NhXHUwMzkwXHUwM2NjXHUwM2NkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0'@; put 'XHUwMzk1XHUwMzk2XHUwMzk3XHhiZFx1MDM5OFx1MDM5OVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUwMzllXHUwMzlmXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUy'@; put 'NTAwXHUyNTNjXHUwM2EwXHUwM2ExXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2IxXHUwM2IyXHUwM2IzXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwM2I0XHUwM2I1XHUyNTgw'@; put 'XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2MyXHUwM2M0XHUwMzg0XHhhZFx4YjFcdTAzYzVcdTAzYzZcdTAzYzdceGE3XHUwM2M4XHUwMzg1XHhiMFx4YThcdTAzYzlcdTAzY2JcdTAzYjBc'@; put 'dTAzY2VcdTI1YTBceGEwIn0saWJtODY5OiJjcDg2OSIsY3NpYm04Njk6ImNwODY5IixjcDkyMjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1'@; put 'XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx1MjAzZVx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhi'@; put 'ZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTYwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx1MDE3ZFx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2'@; put 'XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTYxXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx1MDE3ZVx4ZmYifSxpYm05MjI6ImNwOTIyIixjc2libTkyMjoiY3A5MjIiLGNwMTA0Njp7dHlwZToiX3NiY3MiLGNoYXJz'@; put 'OiJcdWZlODhceGQ3XHhmN1x1ZjhmNlx1ZjhmNVx1ZjhmNFx1ZjhmN1x1ZmU3MVx4ODhcdTI1YTBcdTI1MDJcdTI1MDBcdTI1MTBcdTI1MGNcdTI1MTRcdTI1MThcdWZlNzlcdWZlN2JcdWZlN2RcdWZlN2ZcdWZlNzdcdWZlOGFcdWZlZjBcdWZlZjNcdWZlZjJcdWZlY2VcdWZlY2ZcdWZlZDBc'@; put 'dWZlZjZcdWZlZjhcdWZlZmFcdWZlZmNceGEwXHVmOGZhXHVmOGY5XHVmOGY4XHhhNFx1ZjhmYlx1ZmU4Ylx1ZmU5MVx1ZmU5N1x1ZmU5Ylx1ZmU5Zlx1ZmVhM1x1MDYwY1x4YWRcdWZlYTdcdWZlYjNcdTA2NjBcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2'@; put 'NjhcdTA2NjlcdWZlYjdcdTA2MWJcdWZlYmJcdWZlYmZcdWZlY2FcdTA2MWZcdWZlY2JcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNc'@; put 'dTA2MzRcdTA2MzVcdTA2MzZcdTA2MzdcdWZlYzdcdTA2MzlcdTA2M2FcdWZlY2NcdWZlODJcdWZlODRcdWZlOGVcdWZlZDNcdTA2NDBcdTA2NDFcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVcdTA2'@; put 'NGZcdTA2NTBcdTA2NTFcdTA2NTJcdWZlZDdcdWZlZGJcdWZlZGZcdWY4ZmNcdWZlZjVcdWZlZjdcdWZlZjlcdWZlZmJcdWZlZTNcdWZlZTdcdWZlZWNcdWZlZTlcdWZmZmQifSxpYm0xMDQ2OiJjcDEwNDYiLGNzaWJtMTA0NjoiY3AxMDQ2IixjcDExMjQ6e3R5cGU6Il9zYmNzIixjaGFyczoi'@; put 'XHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwNDAxXHUwNDAyXHUwNDkwXHUwNDA0XHUwNDA1XHUw'@; put 'NDA2XHUwNDA3XHUwNDA4XHUwNDA5XHUwNDBhXHUwNDBiXHUwNDBjXHhhZFx1MDQwZVx1MDQwZlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1'@; put 'MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQz'@; put 'ZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MjExNlx1MDQ1MVx1MDQ1Mlx1MDQ5MVx1MDQ1NFx1MDQ1NVx1MDQ1Nlx1MDQ1N1x1MDQ1OFx1'@; put 'MDQ1OVx1MDQ1YVx1MDQ1Ylx1MDQ1Y1x4YTdcdTA0NWVcdTA0NWYifSxpYm0xMTI0OiJjcDExMjQiLGNzaWJtMTEyNDoiY3AxMTI0IixjcDExMjU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5'@; put 'XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUw'@; put 'NDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0'@; put 'XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUy'@; put 'NTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDkwXHUwNDkxXHUwNDA0XHUwNDU0XHUwNDA2XHUwNDU2'@; put 'XHUwNDA3XHUwNDU3XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIn0saWJtMTEyNToiY3AxMTI1Iixjc2libTExMjU6ImNwMTEyNSIsY3AxMTI5Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhk'@; put 'XHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdcdTAxNTNceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x1MDE3OFx4YjVc'@; put 'eGI2XHhiN1x1MDE1Mlx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJcdTAxMDJceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx1MDMwMFx4Y2RceGNlXHhjZlx1MDExMFx4ZDFcdTAzMDlceGQzXHhkNFx1MDFhMFx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4'@; put 'ZGNcdTAxYWZcdTAzMDNceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTAzMDFceGVkXHhlZVx4ZWZcdTAxMTFceGYxXHUwMzIzXHhmM1x4ZjRcdTAxYTFceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMWIwXHUyMGFiXHhmZiJ9LGli'@; put 'bTExMjk6ImNwMTEyOSIsY3NpYm0xMTI5OiJjcDExMjkiLGNwMTEzMzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5'@; put 'OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTBlODFcdTBlODJcdTBlODRcdTBlODdcdTBlODhcdTBlYWFcdTBlOGFcdTBlOGRcdTBlOTRcdTBlOTVcdTBlOTZcdTBlOTdcdTBlOTlcdTBlOWFcdTBlOWJcdTBlOWNcdTBlOWRcdTBlOWVcdTBlOWZcdTBlYTFcdTBlYTJcdTBlYTNcdTBl'@; put 'YTVcdTBlYTdcdTBlYWJcdTBlYWRcdTBlYWVcdWZmZmRcdWZmZmRcdWZmZmRcdTBlYWZcdTBlYjBcdTBlYjJcdTBlYjNcdTBlYjRcdTBlYjVcdTBlYjZcdTBlYjdcdTBlYjhcdTBlYjlcdTBlYmNcdTBlYjFcdTBlYmJcdTBlYmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlYzBcdTBlYzFcdTBlYzJc'@; put 'dTBlYzNcdTBlYzRcdTBlYzhcdTBlYzlcdTBlY2FcdTBlY2JcdTBlY2NcdTBlY2RcdTBlYzZcdWZmZmRcdTBlZGNcdTBlZGRcdTIwYWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdWZmZmRcdTBlZDBcdTBlZDFcdTBlZDJcdTBlZDNcdTBlZDRcdTBlZDVcdTBlZDZcdTBlZDdcdTBlZDhcdTBlZDlcdWZmZmRcdWZmZmRceGEyXHhhY1x4YTZcdWZmZmQifSxpYm0xMTMzOiJjcDExMzMiLGNzaWJtMTEzMzoiY3AxMTMzIixjcDExNjE6e3R5cGU6Il9zYmNzIixjaGFyczoi'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTQ4XHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2'@; put 'XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUw'@; put 'ZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHUwZTQ5XHUwZTRhXHUwZTRiXHUyMGFjXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRk'@; put 'XHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHhhMlx4YWNceGE2XHhhMCJ9LGlibTExNjE6ImNwMTE2MSIsY3NpYm0xMTYxOiJjcDExNjEiLGNwMTE2Mjp7dHlwZToiX3NiY3MiLGNoYXJz'@; put 'OiJcdTIwYWNceDgxXHg4Mlx4ODNceDg0XHUyMDI2XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTBlMDFcdTBlMDJc'@; put 'dTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBl'@; put 'MWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlc'@; put 'dTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBl'@; put 'NTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxpYm0xMTYyOiJjcDExNjIiLGNzaWJtMTE2MjoiY3AxMTYyIixjcDExNjM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4'@; put 'XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHUyMGFjXHhhNVx4YTZceGE3XHUwMTUzXHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBc'@; put 'eGIxXHhiMlx4YjNcdTAxNzhceGI1XHhiNlx4YjdcdTAxNTJceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHUwMTAyXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JcdTAzMDBceGNkXHhjZVx4Y2ZcdTAxMTBceGQxXHUwMzA5XHhkM1x4ZDRcdTAxYTBceGQ2'@; put 'XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMWFmXHUwMzAzXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHUwMzAxXHhlZFx4ZWVceGVmXHUwMTExXHhmMVx1MDMyM1x4ZjNceGY0XHUwMWExXHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhm'@; put 'Y1x1MDFiMFx1MjBhYlx4ZmYifSxpYm0xMTYzOiJjcDExNjMiLGNzaWJtMTE2MzoiY3AxMTYzIixtYWNjcm9hdGlhbjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVk'@; put 'XHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVcdTAxNjBcdTIxMjJceGI0XHhhOFx1MjI2MFx1MDE3ZFx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHUyMjA2XHhiNVx1MjIw'@; put 'Mlx1MjIxMVx1MjIwZlx1MDE2MVx1MjIyYlx4YWFceGJhXHUyMTI2XHUwMTdlXHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MDEwNlx4YWJcdTAxMGNcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUwMTEwXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5'@; put 'XHhmN1x1MjVjYVx1ZmZmZFx4YTlcdTIwNDRceGE0XHUyMDM5XHUyMDNhXHhjNlx4YmJcdTIwMTNceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx1MDEwN1x4YzFcdTAxMGRceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHUwMTExXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJk'@; put 'Y1x4YWZcdTAzYzBceGNiXHUwMmRhXHhiOFx4Y2FceGU2XHUwMmM3In0sbWFjY3lyaWxsaWM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFl'@; put 'XHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZcdTA0MDZceGFlXHhhOVx1MjEyMlx1MDQwMlx1MDQ1'@; put 'Mlx1MjI2MFx1MDQwM1x1MDQ1M1x1MjIxZVx4YjFcdTIyNjRcdTIyNjVcdTA0NTZceGI1XHUyMjAyXHUwNDA4XHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDA5XHUwNDU5XHUwNDBhXHUwNDVhXHUwNDU4XHUwNDA1XHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2'@; put 'XHhhMFx1MDQwYlx1MDQ1Ylx1MDQwY1x1MDQ1Y1x1MDQ1NVx1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTIwMWVcdTA0MGVcdTA0NWVcdTA0MGZcdTA0NWZcdTIxMTZcdTA0MDFcdTA0NTFcdTA0NGZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVc'@; put 'dTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVceGE0In0sbWFjZ3JlZWs6'@; put 'e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YjlceGIyXHhjOVx4YjNceGQ2XHhkY1x1MDM4NVx4ZTBceGUyXHhlNFx1MDM4NFx4YThceGU3XHhlOVx4ZThceGVhXHhlYlx4YTNcdTIxMjJceGVlXHhlZlx1MjAyMlx4YmRcdTIwMzBceGY0XHhmNlx4YTZceGFkXHhmOVx4ZmJceGZjXHUyMDIw'@; put 'XHUwMzkzXHUwMzk0XHUwMzk4XHUwMzliXHUwMzllXHUwM2EwXHhkZlx4YWVceGE5XHUwM2EzXHUwM2FhXHhhN1x1MjI2MFx4YjBcdTAzODdcdTAzOTFceGIxXHUyMjY0XHUyMjY1XHhhNVx1MDM5Mlx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OVx1MDM5YVx1MDM5Y1x1MDNhNlx1MDNhYlx1MDNh'@; put 'OFx1MDNhOVx1MDNhY1x1MDM5ZFx4YWNcdTAzOWZcdTAzYTFcdTIyNDhcdTAzYTRceGFiXHhiYlx1MjAyNlx4YTBcdTAzYTVcdTAzYTdcdTAzODZcdTAzODhcdTAxNTNcdTIwMTNcdTIwMTVcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUwMzg5XHUwMzhhXHUwMzhjXHUwMzhlXHUwM2Fk'@; put 'XHUwM2FlXHUwM2FmXHUwM2NjXHUwMzhmXHUwM2NkXHUwM2IxXHUwM2IyXHUwM2M4XHUwM2I0XHUwM2I1XHUwM2M2XHUwM2IzXHUwM2I3XHUwM2I5XHUwM2JlXHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JmXHUwM2MwXHUwM2NlXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2I4XHUwM2M5XHUw'@; put 'M2MyXHUwM2M3XHUwM2M1XHUwM2I2XHUwM2NhXHUwM2NiXHUwMzkwXHUwM2IwXHVmZmZkIn0sbWFjaWNlbGFuZDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhl'@; put 'Y1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x4ZGRceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIy'@; put 'MGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZc'@; put 'dTAxNzhcdTIwNDRceGE0XHhkMFx4ZjBceGRlXHhmZVx4ZmRceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4'@; put 'YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWNyb21hbjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1'@; put 'XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhl'@; put 'Nlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdWZi'@; put 'MDFcdWZiMDJcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzci'@; put 'fSxtYWNyb21hbmlhOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUy'@; put 'MDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx1MDEwMlx1MDE1ZVx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHUwMTAzXHUwMTVmXHhiZlx4'@; put 'YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIwNDRceGE0XHUyMDM5XHUyMDNhXHUwMTYyXHUwMTYzXHUy'@; put 'MDIxXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3In0sbWFjdGhhaTp7'@; put 'dHlwZToiX3NiY3MiLGNoYXJzOiJceGFiXHhiYlx1MjAyNlx1Zjg4Y1x1Zjg4Zlx1Zjg5Mlx1Zjg5NVx1Zjg5OFx1Zjg4Ylx1Zjg4ZVx1Zjg5MVx1Zjg5NFx1Zjg5N1x1MjAxY1x1MjAxZFx1Zjg5OVx1ZmZmZFx1MjAyMlx1Zjg4NFx1Zjg4OVx1Zjg4NVx1Zjg4Nlx1Zjg4N1x1Zjg4OFx1Zjg4'@; put 'YVx1Zjg4ZFx1Zjg5MFx1Zjg5M1x1Zjg5Nlx1MjAxOFx1MjAxOVx1ZmZmZFx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBl'@; put 'MTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZc'@; put 'dTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZlZmZcdTIwMGJcdTIwMTNcdTIwMTRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBl'@; put 'NGJcdTBlNGNcdTBlNGRcdTIxMjJcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlceGFlXHhhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LG1hY3R1cmtpc2g6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3'@; put 'XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEy'@; put 'Mlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4'@; put 'YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTAxMWVcdTAxMWZcdTAxMzBcdTAxMzFcdTAxNWVcdTAxNWZcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhj'@; put 'ZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHVmZmZkXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWN1a3JhaW5lOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQx'@; put 'NFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1'@; put 'MjAyMFx4YjBcdTA0OTBceGEzXHhhN1x1MjAyMlx4YjZcdTA0MDZceGFlXHhhOVx1MjEyMlx1MDQwMlx1MDQ1Mlx1MjI2MFx1MDQwM1x1MDQ1M1x1MjIxZVx4YjFcdTIyNjRcdTIyNjVcdTA0NTZceGI1XHUwNDkxXHUwNDA4XHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDA5XHUwNDU5XHUw'@; put 'NDBhXHUwNDVhXHUwNDU4XHUwNDA1XHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDQwYlx1MDQ1Ylx1MDQwY1x1MDQ1Y1x1MDQ1NVx1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTIwMWVcdTA0MGVcdTA0NWVcdTA0MGZcdTA0'@; put 'NWZcdTIxMTZcdTA0MDFcdTA0NTFcdTA0NGZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZc'@; put 'dTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVceGE0In0sa29pOHI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTFjXHUyNTI0XHUyNTJjXHUyNTM0XHUyNTNjXHUyNTgwXHUyNTg0XHUyNTg4'@; put 'XHUyNThjXHUyNTkwXHUyNTkxXHUyNTkyXHUyNTkzXHUyMzIwXHUyNWEwXHUyMjE5XHUyMjFhXHUyMjQ4XHUyMjY0XHUyMjY1XHhhMFx1MjMyMVx4YjBceGIyXHhiN1x4ZjdcdTI1NTBcdTI1NTFcdTI1NTJcdTA0NTFcdTI1NTNcdTI1NTRcdTI1NTVcdTI1NTZcdTI1NTdcdTI1NThcdTI1NTlc'@; put 'dTI1NWFcdTI1NWJcdTI1NWNcdTI1NWRcdTI1NWVcdTI1NWZcdTI1NjBcdTI1NjFcdTA0MDFcdTI1NjJcdTI1NjNcdTI1NjRcdTI1NjVcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFcdTI1NmJcdTI1NmNceGE5XHUwNDRlXHUwNDMwXHUwNDMxXHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0'@; put 'XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUwNDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUw'@; put 'NDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJiXHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5'@; put 'XHUwNDI3XHUwNDJhIn0sa29pOHU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTFjXHUyNTI0XHUyNTJjXHUyNTM0XHUyNTNjXHUyNTgwXHUyNTg0XHUyNTg4XHUyNThjXHUyNTkwXHUyNTkxXHUyNTkyXHUyNTkzXHUyMzIwXHUy'@; put 'NWEwXHUyMjE5XHUyMjFhXHUyMjQ4XHUyMjY0XHUyMjY1XHhhMFx1MjMyMVx4YjBceGIyXHhiN1x4ZjdcdTI1NTBcdTI1NTFcdTI1NTJcdTA0NTFcdTA0NTRcdTI1NTRcdTA0NTZcdTA0NTdcdTI1NTdcdTI1NThcdTI1NTlcdTI1NWFcdTI1NWJcdTA0OTFcdTI1NWRcdTI1NWVcdTI1NWZcdTI1'@; put 'NjBcdTI1NjFcdTA0MDFcdTA0MDRcdTI1NjNcdTA0MDZcdTA0MDdcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFcdTA0OTBcdTI1NmNceGE5XHUwNDRlXHUwNDMwXHUwNDMxXHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUw'@; put 'NDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUwNDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1'@; put 'XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJiXHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sa29pOHJ1Ont0eXBlOiJfc2JjcyIsY2hh'@; put 'cnM6Ilx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxNFx1MjUxOFx1MjUxY1x1MjUyNFx1MjUyY1x1MjUzNFx1MjUzY1x1MjU4MFx1MjU4NFx1MjU4OFx1MjU4Y1x1MjU5MFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjMyMFx1MjVhMFx1MjIxOVx1MjIxYVx1MjI0OFx1MjI2NFx1MjI2NVx4YTBc'@; put 'dTIzMjFceGIwXHhiMlx4YjdceGY3XHUyNTUwXHUyNTUxXHUyNTUyXHUwNDUxXHUwNDU0XHUyNTU0XHUwNDU2XHUwNDU3XHUyNTU3XHUyNTU4XHUyNTU5XHUyNTVhXHUyNTViXHUwNDkxXHUwNDVlXHUyNTVlXHUyNTVmXHUyNTYwXHUyNTYxXHUwNDAxXHUwNDA0XHUyNTYzXHUwNDA2XHUwNDA3'@; put 'XHUyNTY2XHUyNTY3XHUyNTY4XHUyNTY5XHUyNTZhXHUwNDkwXHUwNDBlXHhhOVx1MDQ0ZVx1MDQzMFx1MDQzMVx1MDQ0Nlx1MDQzNFx1MDQzNVx1MDQ0NFx1MDQzM1x1MDQ0NVx1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0Zlx1MDQ0MFx1MDQ0'@; put 'MVx1MDQ0Mlx1MDQ0M1x1MDQzNlx1MDQzMlx1MDQ0Y1x1MDQ0Ylx1MDQzN1x1MDQ0OFx1MDQ0ZFx1MDQ0OVx1MDQ0N1x1MDQ0YVx1MDQyZVx1MDQxMFx1MDQxMVx1MDQyNlx1MDQxNFx1MDQxNVx1MDQyNFx1MDQxM1x1MDQyNVx1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1'@; put 'MDQxZVx1MDQxZlx1MDQyZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQxNlx1MDQxMlx1MDQyY1x1MDQyYlx1MDQxN1x1MDQyOFx1MDQyZFx1MDQyOVx1MDQyN1x1MDQyYSJ9LGtvaTh0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQ5Ylx1MDQ5M1x1MjAxYVx1MDQ5Mlx1MjAxZVx1MjAy'@; put 'Nlx1MjAyMFx1MjAyMVx1ZmZmZFx1MjAzMFx1MDRiM1x1MjAzOVx1MDRiMlx1MDRiN1x1MDRiNlx1ZmZmZFx1MDQ5YVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'MDRlZlx1MDRlZVx1MDQ1MVx4YTRcdTA0ZTNceGE2XHhhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx4YWJceGFjXHhhZFx4YWVcdWZmZmRceGIwXHhiMVx4YjJcdTA0MDFcdWZmZmRcdTA0ZTJceGI2XHhiN1x1ZmZmZFx1MjExNlx1ZmZmZFx4YmJcdWZmZmRcdWZmZmRcdWZmZmRceGE5XHUwNDRlXHUw'@; put 'NDMwXHUwNDMxXHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRk'@; put 'XHUwNDQ5XHUwNDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUw'@; put 'NDJjXHUwNDJiXHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sYXJtc2NpaTg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5'@; put 'NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHVmZmZkXHUwNTg3XHUwNTg5KShceGJiXHhhYlx1MjAxNC5cdTA1NWQsLVx1MDU4YVx1MjAyNlx1MDU1Y1x1MDU1Ylx1MDU1ZVx1MDUzMVx1MDU2MVx1MDUzMlx1MDU2Mlx1MDUzM1x1MDU2M1x1MDUzNFx1MDU2'@; put 'NFx1MDUzNVx1MDU2NVx1MDUzNlx1MDU2Nlx1MDUzN1x1MDU2N1x1MDUzOFx1MDU2OFx1MDUzOVx1MDU2OVx1MDUzYVx1MDU2YVx1MDUzYlx1MDU2Ylx1MDUzY1x1MDU2Y1x1MDUzZFx1MDU2ZFx1MDUzZVx1MDU2ZVx1MDUzZlx1MDU2Zlx1MDU0MFx1MDU3MFx1MDU0MVx1MDU3MVx1MDU0Mlx1'@; put 'MDU3Mlx1MDU0M1x1MDU3M1x1MDU0NFx1MDU3NFx1MDU0NVx1MDU3NVx1MDU0Nlx1MDU3Nlx1MDU0N1x1MDU3N1x1MDU0OFx1MDU3OFx1MDU0OVx1MDU3OVx1MDU0YVx1MDU3YVx1MDU0Ylx1MDU3Ylx1MDU0Y1x1MDU3Y1x1MDU0ZFx1MDU3ZFx1MDU0ZVx1MDU3ZVx1MDU0Zlx1MDU3Zlx1MDU1'@; put 'MFx1MDU4MFx1MDU1MVx1MDU4MVx1MDU1Mlx1MDU4Mlx1MDU1M1x1MDU4M1x1MDU1NFx1MDU4NFx1MDU1NVx1MDU4NVx1MDU1Nlx1MDU4Nlx1MDU1YVx1ZmZmZCJ9LHJrMTA0ODp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MDJcdTA0MDNcdTIwMWFcdTA0NTNcdTIwMWVcdTIwMjZcdTIwMjBc'@; put 'dTIwMjFcdTIwYWNcdTIwMzBcdTA0MDlcdTIwMzlcdTA0MGFcdTA0OWFcdTA0YmFcdTA0MGZcdTA0NTJcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTA0NTlcdTIwM2FcdTA0NWFcdTA0OWJcdTA0YmJcdTA0NWZceGEwXHUwNGIwXHUwNGIx'@; put 'XHUwNGQ4XHhhNFx1MDRlOFx4YTZceGE3XHUwNDAxXHhhOVx1MDQ5Mlx4YWJceGFjXHhhZFx4YWVcdTA0YWVceGIwXHhiMVx1MDQwNlx1MDQ1Nlx1MDRlOVx4YjVceGI2XHhiN1x1MDQ1MVx1MjExNlx1MDQ5M1x4YmJcdTA0ZDlcdTA0YTJcdTA0YTNcdTA0YWZcdTA0MTBcdTA0MTFcdTA0MTJc'@; put 'dTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0'@; put 'MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlc'@; put 'dTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGYifSx0Y3ZuOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHhkYVx1MWVlNFx4MDNcdTFlZWFcdTFlZWNcdTFlZWVceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHUxZWU4XHUxZWYwXHUxZWYyXHUxZWY2XHUxZWY4XHhkZFx1MWVm'@; put 'NFx4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGMwXHUxZWEyXHhjM1x4YzFcdTFlYTBcdTFlYjZc'@; put 'dTFlYWNceGM4XHUxZWJhXHUxZWJjXHhjOVx1MWViOFx1MWVjNlx4Y2NcdTFlYzhcdTAxMjhceGNkXHUxZWNhXHhkMlx1MWVjZVx4ZDVceGQzXHUxZWNjXHUxZWQ4XHUxZWRjXHUxZWRlXHUxZWUwXHUxZWRhXHUxZWUyXHhkOVx1MWVlNlx1MDE2OFx4YTBcdTAxMDJceGMyXHhjYVx4ZDRcdTAx'@; put 'YTBcdTAxYWZcdTAxMTBcdTAxMDNceGUyXHhlYVx4ZjRcdTAxYTFcdTAxYjBcdTAxMTFcdTFlYjBcdTAzMDBcdTAzMDlcdTAzMDNcdTAzMDFcdTAzMjNceGUwXHUxZWEzXHhlM1x4ZTFcdTFlYTFcdTFlYjJcdTFlYjFcdTFlYjNcdTFlYjVcdTFlYWZcdTFlYjRcdTFlYWVcdTFlYTZcdTFlYThc'@; put 'dTFlYWFcdTFlYTRcdTFlYzBcdTFlYjdcdTFlYTdcdTFlYTlcdTFlYWJcdTFlYTVcdTFlYWRceGU4XHUxZWMyXHUxZWJiXHUxZWJkXHhlOVx1MWViOVx1MWVjMVx1MWVjM1x1MWVjNVx1MWViZlx1MWVjN1x4ZWNcdTFlYzlcdTFlYzRcdTFlYmVcdTFlZDJcdTAxMjlceGVkXHUxZWNiXHhmMlx1'@; put 'MWVkNFx1MWVjZlx4ZjVceGYzXHUxZWNkXHUxZWQzXHUxZWQ1XHUxZWQ3XHUxZWQxXHUxZWQ5XHUxZWRkXHUxZWRmXHUxZWUxXHUxZWRiXHUxZWUzXHhmOVx1MWVkNlx1MWVlN1x1MDE2OVx4ZmFcdTFlZTVcdTFlZWJcdTFlZWRcdTFlZWZcdTFlZTlcdTFlZjFcdTFlZjNcdTFlZjdcdTFlZjlc'@; put 'eGZkXHUxZWY1XHUxZWQwIn0sZ2VvcmdpYW5hY2FkZW15Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHg4ZFx4OGVceDhmXHg5MFx1MjAxOFx1MjAxOVx1MjAxY1x1'@; put 'MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x4OWRceDllXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhi'@; put 'OFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZcdTEwZDBcdTEwZDFcdTEwZDJcdTEwZDNcdTEwZDRcdTEwZDVcdTEwZDZcdTEwZDdcdTEwZDhcdTEwZDlcdTEwZGFcdTEwZGJcdTEwZGNcdTEwZGRcdTEwZGVcdTEwZGZcdTEwZTBcdTEwZTFcdTEwZTJcdTEwZTNcdTEwZTRcdTEwZTVcdTEw'@; put 'ZTZcdTEwZTdcdTEwZThcdTEwZTlcdTEwZWFcdTEwZWJcdTEwZWNcdTEwZWRcdTEwZWVcdTEwZWZcdTEwZjBcdTEwZjFcdTEwZjJcdTEwZjNcdTEwZjRcdTEwZjVcdTEwZjZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhm'@; put 'N1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0sZ2VvcmdpYW5wczp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx4OGRceDhlXHg4Zlx4OTBcdTIwMThc'@; put 'dTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNTNceDlkXHg5ZVx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4'@; put 'YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHUxMGQwXHUxMGQxXHUxMGQyXHUxMGQzXHUxMGQ0XHUxMGQ1XHUxMGQ2XHUxMGYxXHUxMGQ3XHUxMGQ4XHUxMGQ5XHUxMGRhXHUxMGRiXHUxMGRjXHUxMGYyXHUxMGRkXHUxMGRlXHUxMGRmXHUxMGUwXHUxMGUxXHUx'@; put 'MGUyXHUxMGYzXHUxMGUzXHUxMGU0XHUxMGU1XHUxMGU2XHUxMGU3XHUxMGU4XHUxMGU5XHUxMGVhXHUxMGViXHUxMGVjXHUxMGVkXHUxMGVlXHUxMGY0XHUxMGVmXHUxMGYwXHUxMGY1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0'@; put 'XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSxwdDE1NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0OTZcdTA0OTJcdTA0ZWVcdTA0OTNcdTIwMWVcdTIwMjZcdTA0YjZcdTA0YWVcdTA0YjJcdTA0YWZcdTA0YTBcdTA0ZTJcdTA0YTJcdTA0OWFcdTA0YmFc'@; put 'dTA0YjhcdTA0OTdcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTA0YjNcdTA0YjdcdTA0YTFcdTA0ZTNcdTA0YTNcdTA0OWJcdTA0YmJcdTA0YjlceGEwXHUwNDBlXHUwNDVlXHUwNDA4XHUwNGU4XHUwNDk4XHUwNGIwXHhhN1x1MDQwMVx4YTlcdTA0ZDhceGFi'@; put 'XHhhY1x1MDRlZlx4YWVcdTA0OWNceGIwXHUwNGIxXHUwNDA2XHUwNDU2XHUwNDk5XHUwNGU5XHhiNlx4YjdcdTA0NTFcdTIxMTZcdTA0ZDlceGJiXHUwNDU4XHUwNGFhXHUwNGFiXHUwNDlkXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUw'@; put 'NDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0'@; put 'XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmIn0s'@; put 'dmlzY2lpOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHgwMVx1MWViMlx4MDNceDA0XHUxZWI0XHUxZWFhXHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x1MWVmNlx4MTVceDE2XHgxN1x4MThcdTFlZjhceDFhXHgxYlx4MWNceDFkXHUxZWY0XHgxZiAhXCIjJCUmJygp'@; put 'KissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUxZWEwXHUxZWFlXHUxZWIwXHUxZWI2XHUxZWE0XHUxZWE2XHUxZWE4XHUxZWFjXHUxZWJjXHUxZWI4XHUxZWJlXHUxZWMwXHUx'@; put 'ZWMyXHUxZWM0XHUxZWM2XHUxZWQwXHUxZWQyXHUxZWQ0XHUxZWQ2XHUxZWQ4XHUxZWUyXHUxZWRhXHUxZWRjXHUxZWRlXHUxZWNhXHUxZWNlXHUxZWNjXHUxZWM4XHUxZWU2XHUwMTY4XHUxZWU0XHUxZWYyXHhkNVx1MWVhZlx1MWViMVx1MWViN1x1MWVhNVx1MWVhN1x1MWVhOVx1MWVhZFx1'@; put 'MWViZFx1MWViOVx1MWViZlx1MWVjMVx1MWVjM1x1MWVjNVx1MWVjN1x1MWVkMVx1MWVkM1x1MWVkNVx1MWVkN1x1MWVlMFx1MDFhMFx1MWVkOVx1MWVkZFx1MWVkZlx1MWVjYlx1MWVmMFx1MWVlOFx1MWVlYVx1MWVlY1x1MDFhMVx1MWVkYlx1MDFhZlx4YzBceGMxXHhjMlx4YzNcdTFlYTJc'@; put 'dTAxMDJcdTFlYjNcdTFlYjVceGM4XHhjOVx4Y2FcdTFlYmFceGNjXHhjZFx1MDEyOFx1MWVmM1x1MDExMFx1MWVlOVx4ZDJceGQzXHhkNFx1MWVhMVx1MWVmN1x1MWVlYlx1MWVlZFx4ZDlceGRhXHUxZWY5XHUxZWY1XHhkZFx1MWVlMVx1MDFiMFx4ZTBceGUxXHhlMlx4ZTNcdTFlYTNcdTAx'@; put 'MDNcdTFlZWZcdTFlYWJceGU4XHhlOVx4ZWFcdTFlYmJceGVjXHhlZFx1MDEyOVx1MWVjOVx1MDExMVx1MWVmMVx4ZjJceGYzXHhmNFx4ZjVcdTFlY2ZcdTFlY2RcdTFlZTVceGY5XHhmYVx1MDE2OVx1MWVlN1x4ZmRcdTFlZTNcdTFlZWUifSxpc282NDZjbjp7dHlwZToiX3NiY3MiLGNoYXJz'@; put 'OiJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiI1x4YTUlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktM'@; put 'TU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1cdTIwM2VceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkIn0saXNvNjQ2anA6e3R5cGU6Il9zYmNzIixjaGFyczoiXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywt'@; put 'Li8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1x4YTVdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1cdTIwM2VceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm'@; put 'ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk'@; put 'XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0saHByb21hbjg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3'@; put 'XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhjMFx4YzJceGM4XHhjYVx4Y2JceGNlXHhjZlx4YjRcdTAyY2JcdTAyYzZceGE4XHUwMmRjXHhkOVx4ZGJcdTIwYTRceGFmXHhkZFx4ZmRceGIwXHhjN1x4ZTdceGQxXHhmMVx4YTFceGJmXHhhNFx4YTNceGE1XHhhN1x1MDE5'@; put 'Mlx4YTJceGUyXHhlYVx4ZjRceGZiXHhlMVx4ZTlceGYzXHhmYVx4ZTBceGU4XHhmMlx4ZjlceGU0XHhlYlx4ZjZceGZjXHhjNVx4ZWVceGQ4XHhjNlx4ZTVceGVkXHhmOFx4ZTZceGM0XHhlY1x4ZDZceGRjXHhjOVx4ZWZceGRmXHhkNFx4YzFceGMzXHhlM1x4ZDBceGYwXHhjZFx4Y2NceGQz'@; put 'XHhkMlx4ZDVceGY1XHUwMTYwXHUwMTYxXHhkYVx1MDE3OFx4ZmZceGRlXHhmZVx4YjdceGI1XHhiNlx4YmVcdTIwMTRceGJjXHhiZFx4YWFceGJhXHhhYlx1MjVhMFx4YmJceGIxXHVmZmZkIn0sbWFjaW50b3NoOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhk'@; put 'Nlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1'@; put 'MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1'@; put 'Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx1ZmIwMVx1ZmIwMlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQz'@; put 'XHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LGFzY2lpOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1'@; put 'ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm'@; put 'ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LHRpczYyMDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc'@; put 'dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBl'@; put 'MDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJc'@; put 'dTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZm'@; put 'ZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlc'@; put 'dTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifX19LDc2MjMoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPXsxMDAyOToibWFjY2VudGV1cm8iLG1hY2NlbnRldXJvOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRcdTAxMDBcdTAxMDFceGM5XHUwMTA0XHhkNlx4ZGNceGUx'@; put 'XHUwMTA1XHUwMTBjXHhlNFx1MDEwZFx1MDEwNlx1MDEwN1x4ZTlcdTAxNzlcdTAxN2FcdTAxMGVceGVkXHUwMTBmXHUwMTEyXHUwMTEzXHUwMTE2XHhmM1x1MDExN1x4ZjRceGY2XHhmNVx4ZmFcdTAxMWFcdTAxMWJceGZjXHUyMDIwXHhiMFx1MDExOFx4YTNceGE3XHUyMDIyXHhiNlx4ZGZc'@; put 'eGFlXHhhOVx1MjEyMlx1MDExOVx4YThcdTIyNjBcdTAxMjNcdTAxMmVcdTAxMmZcdTAxMmFcdTIyNjRcdTIyNjVcdTAxMmJcdTAxMzZcdTIyMDJcdTIyMTFcdTAxNDJcdTAxM2JcdTAxM2NcdTAxM2RcdTAxM2VcdTAxMzlcdTAxM2FcdTAxNDVcdTAxNDZcdTAxNDNceGFjXHUyMjFhXHUwMTQ0'@; put 'XHUwMTQ3XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUwMTQ4XHUwMTUwXHhkNVx1MDE1MVx1MDE0Y1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FcdTAxNGRcdTAxNTRcdTAxNTVcdTAxNThcdTIwMzlcdTIwM2FcdTAxNTlcdTAxNTZcdTAxNTdcdTAxNjBc'@; put 'dTIwMWFcdTIwMWVcdTAxNjFcdTAxNWFcdTAxNWJceGMxXHUwMTY0XHUwMTY1XHhjZFx1MDE3ZFx1MDE3ZVx1MDE2YVx4ZDNceGQ0XHUwMTZiXHUwMTZlXHhkYVx1MDE2Zlx1MDE3MFx1MDE3MVx1MDE3Mlx1MDE3M1x4ZGRceGZkXHUwMTM3XHUwMTdiXHUwMTQxXHUwMTdjXHUwMTIyXHUwMmM3'@; put 'In0sODA4OiJjcDgwOCIsaWJtODA4OiJjcDgwOCIsY3A4MDg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIx'@; put 'XHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUw'@; put 'NDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVh'@; put 'XHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUw'@; put 'NDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDBlXHUwNDVlXHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIxMTZcdTIwYWNcdTI1YTBceGEwIn0sbWlr'@; put 'Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQy'@; put 'N1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1'@; put 'MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU2M1x1MjU1MVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2'@; put 'Y1x1MjUxMFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjExNlx4YTdcdTI1NTdcdTI1NWRcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1'@; put 'MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGNwNzIwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHhlOVx4ZTJceDg0XHhl'@; put 'MFx4ODZceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceDhkXHg4ZVx4OGZceDkwXHUwNjUxXHUwNjUyXHhmNFx4YTRcdTA2NDBceGZiXHhmOVx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx4YTNcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2'@; put 'MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUy'@; put 'Y1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1'@; put 'MjU5MFx1MjU4MFx1MDYzNlx1MDYzN1x1MDYzOFx1MDYzOVx1MDYzYVx1MDY0MVx4YjVcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTIyNjFcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVcdTA2NGZcdTA2NTBcdTIyNDhceGIwXHUyMjE5XHhi'@; put 'N1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0sYXNjaWk4Yml0OiJhc2NpaSIsdXNhc2NpaToiYXNjaWkiLGFuc2l4MzQ6ImFzY2lpIixhbnNpeDM0MTk2ODoiYXNjaWkiLGFuc2l4MzQxOTg2OiJhc2NpaSIsY3Nhc2NpaToiYXNjaWkiLGNwMzY3OiJhc2NpaSIsaWJtMzY3OiJhc2NpaSIs'@; put 'aXNvaXI2OiJhc2NpaSIsaXNvNjQ2dXM6ImFzY2lpIixpc282NDZpcnY6ImFzY2lpIix1czoiYXNjaWkiLGxhdGluMToiaXNvODg1OTEiLGxhdGluMjoiaXNvODg1OTIiLGxhdGluMzoiaXNvODg1OTMiLGxhdGluNDoiaXNvODg1OTQiLGxhdGluNToiaXNvODg1OTkiLGxhdGluNjoiaXNvODg1'@; put 'OTEwIixsYXRpbjc6Imlzbzg4NTkxMyIsbGF0aW44OiJpc284ODU5MTQiLGxhdGluOToiaXNvODg1OTE1IixsYXRpbjEwOiJpc284ODU5MTYiLGNzaXNvbGF0aW4xOiJpc284ODU5MSIsY3Npc29sYXRpbjI6Imlzbzg4NTkyIixjc2lzb2xhdGluMzoiaXNvODg1OTMiLGNzaXNvbGF0aW40OiJp'@; put 'c284ODU5NCIsY3Npc29sYXRpbmN5cmlsbGljOiJpc284ODU5NSIsY3Npc29sYXRpbmFyYWJpYzoiaXNvODg1OTYiLGNzaXNvbGF0aW5ncmVlazoiaXNvODg1OTciLGNzaXNvbGF0aW5oZWJyZXc6Imlzbzg4NTk4Iixjc2lzb2xhdGluNToiaXNvODg1OTkiLGNzaXNvbGF0aW42OiJpc284ODU5'@; put 'MTAiLGwxOiJpc284ODU5MSIsbDI6Imlzbzg4NTkyIixsMzoiaXNvODg1OTMiLGw0OiJpc284ODU5NCIsbDU6Imlzbzg4NTk5IixsNjoiaXNvODg1OTEwIixsNzoiaXNvODg1OTEzIixsODoiaXNvODg1OTE0IixsOToiaXNvODg1OTE1IixsMTA6Imlzbzg4NTkxNiIsaXNvaXIxNDoiaXNvNjQ2'@; put 'anAiLGlzb2lyNTc6ImlzbzY0NmNuIixpc29pcjEwMDoiaXNvODg1OTEiLGlzb2lyMTAxOiJpc284ODU5MiIsaXNvaXIxMDk6Imlzbzg4NTkzIixpc29pcjExMDoiaXNvODg1OTQiLGlzb2lyMTQ0OiJpc284ODU5NSIsaXNvaXIxMjc6Imlzbzg4NTk2Iixpc29pcjEyNjoiaXNvODg1OTciLGlz'@; put 'b2lyMTM4OiJpc284ODU5OCIsaXNvaXIxNDg6Imlzbzg4NTk5Iixpc29pcjE1NzoiaXNvODg1OTEwIixpc29pcjE2NjoidGlzNjIwIixpc29pcjE3OToiaXNvODg1OTEzIixpc29pcjE5OToiaXNvODg1OTE0Iixpc29pcjIwMzoiaXNvODg1OTE1Iixpc29pcjIyNjoiaXNvODg1OTE2IixjcDgx'@; put 'OToiaXNvODg1OTEiLGlibTgxOToiaXNvODg1OTEiLGN5cmlsbGljOiJpc284ODU5NSIsYXJhYmljOiJpc284ODU5NiIsYXJhYmljODoiaXNvODg1OTYiLGVjbWExMTQ6Imlzbzg4NTk2Iixhc21vNzA4OiJpc284ODU5NiIsZ3JlZWs6Imlzbzg4NTk3IixncmVlazg6Imlzbzg4NTk3IixlY21h'@; put 'MTE4OiJpc284ODU5NyIsZWxvdDkyODoiaXNvODg1OTciLGhlYnJldzoiaXNvODg1OTgiLGhlYnJldzg6Imlzbzg4NTk4Iix0dXJraXNoOiJpc284ODU5OSIsdHVya2lzaDg6Imlzbzg4NTk5Iix0aGFpOiJpc284ODU5MTEiLHRoYWk4OiJpc284ODU5MTEiLGNlbHRpYzoiaXNvODg1OTE0Iixj'@; put 'ZWx0aWM4OiJpc284ODU5MTQiLGlzb2NlbHRpYzoiaXNvODg1OTE0Iix0aXM2MjAwOiJ0aXM2MjAiLHRpczYyMDI1MjkxOiJ0aXM2MjAiLHRpczYyMDI1MzMwOiJ0aXM2MjAiLDFlNDoibWFjcm9tYW4iLDEwMDA2OiJtYWNncmVlayIsMTAwMDc6Im1hY2N5cmlsbGljIiwxMDA3OToibWFjaWNl'@; put 'bGFuZCIsMTAwODE6Im1hY3R1cmtpc2giLGNzcGM4Y29kZXBhZ2U0Mzc6ImNwNDM3Iixjc3BjNzc1YmFsdGljOiJjcDc3NSIsY3NwYzg1MG11bHRpbGluZ3VhbDoiY3A4NTAiLGNzcGNwODUyOiJjcDg1MiIsY3NwYzg2MmxhdGluaGVicmV3OiJjcDg2MiIsY3BncjoiY3A4NjkiLG1zZWU6ImNw'@; put 'MTI1MCIsbXNjeXJsOiJjcDEyNTEiLG1zYW5zaToiY3AxMjUyIixtc2dyZWVrOiJjcDEyNTMiLG1zdHVyazoiY3AxMjU0Iixtc2hlYnI6ImNwMTI1NSIsbXNhcmFiOiJjcDEyNTYiLHdpbmJhbHRyaW06ImNwMTI1NyIsY3AyMDg2Njoia29pOHIiLDIwODY2OiJrb2k4ciIsaWJtODc4OiJrb2k4'@; put 'ciIsY3Nrb2k4cjoia29pOHIiLGNwMjE4NjY6ImtvaTh1IiwyMTg2Njoia29pOHUiLGlibTExNjg6ImtvaTh1IixzdHJrMTA0ODIwMDI6InJrMTA0OCIsdGN2bjU3MTI6InRjdm4iLHRjdm41NzEyMToidGN2biIsZ2IxOTg4ODA6ImlzbzY0NmNuIixjbjoiaXNvNjQ2Y24iLGNzaXNvMTRqaXNj'@; put 'NjIyMHJvOiJpc282NDZqcCIsamlzYzYyMjAxOTY5cm86ImlzbzY0NmpwIixqcDoiaXNvNjQ2anAiLGNzaHByb21hbjg6Imhwcm9tYW44IixyODoiaHByb21hbjgiLHJvbWFuODoiaHByb21hbjgiLHhyb21hbjg6Imhwcm9tYW44IixpYm0xMDUxOiJocHJvbWFuOCIsbWFjOiJtYWNpbnRvc2gi'@; put 'LGNzbWFjaW50b3NoOiJtYWNpbnRvc2gifX0sNzE3NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkzODA3KS5CdWZmZXI7ZnVuY3Rpb24gYygpe31mdW5jdGlvbiBzKCl7fWZ1bmN0aW9uIEEoKXt0aGlzLm92ZXJmbG93Qnl0ZT0tMX1mdW5jdGlvbiB2KEwsUil7dGhpcy5pY29udj1S'@; put 'fWZ1bmN0aW9uIEMoTCxSKXt2b2lkIDA9PT0oTD1MfHx7fSkuYWRkQk9NJiYoTC5hZGRCT009ITApLHRoaXMuZW5jb2Rlcj1SLmljb252LmdldEVuY29kZXIoInV0Zi0xNmxlIixMKX1mdW5jdGlvbiB3KEwsUil7dGhpcy5kZWNvZGVyPW51bGwsdGhpcy5pbml0aWFsQnl0ZXM9W10sdGhpcy5p'@; put 'bml0aWFsQnl0ZXNMZW49MCx0aGlzLm9wdGlvbnM9THx8e30sdGhpcy5pY29udj1SLmljb252fWZ1bmN0aW9uIFMoTCxSKXt2YXIgeD1SfHwidXRmLTE2bGUiO2lmKEwubGVuZ3RoPj0yKWlmKDI1ND09TFswXSYmMjU1PT1MWzFdKXg9InV0Zi0xNmJlIjtlbHNlIGlmKDI1NT09TFswXSYmMjU0'@; put 'PT1MWzFdKXg9InV0Zi0xNmxlIjtlbHNle2Zvcih2YXIgVT0wLEg9MCxWPU1hdGgubWluKEwubGVuZ3RoLUwubGVuZ3RoJTIsNjQpLE49MDtOPFY7Tis9MikwPT09TFtOXSYmMCE9PUxbTisxXSYmSCsrLDAhPT1MW05dJiYwPT09TFtOKzFdJiZVKys7SD5VP3g9InV0Zi0xNmJlIjpIPFUmJih4'@; put 'PSJ1dGYtMTZsZSIpfXJldHVybiB4fWoudXRmMTZiZT1jLGMucHJvdG90eXBlLmVuY29kZXI9cyxjLnByb3RvdHlwZS5kZWNvZGVyPUEsYy5wcm90b3R5cGUuYm9tQXdhcmU9ITAscy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTCl7Zm9yKHZhciBSPXkuZnJvbShMLCJ1Y3MyIikseD0wO3g8'@; put 'Ui5sZW5ndGg7eCs9Mil7dmFyIFU9Ult4XTtSW3hdPVJbeCsxXSxSW3grMV09VX1yZXR1cm4gUn0scy5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fSxBLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihMKXtpZigwPT1MLmxlbmd0aClyZXR1cm4iIjt2YXIgUj15LmFsbG9jKEwubGVuZ3RoKzEp'@; put 'LHg9MCxVPTA7Zm9yKC0xIT09dGhpcy5vdmVyZmxvd0J5dGUmJihSWzBdPUxbMF0sUlsxXT10aGlzLm92ZXJmbG93Qnl0ZSx4PTEsVT0yKTt4PEwubGVuZ3RoLTE7eCs9MixVKz0yKVJbVV09TFt4KzFdLFJbVSsxXT1MW3hdO3JldHVybiB0aGlzLm92ZXJmbG93Qnl0ZT14PT1MLmxlbmd0aC0x'@; put 'P0xbTC5sZW5ndGgtMV06LTEsUi5zbGljZSgwLFUpLnRvU3RyaW5nKCJ1Y3MyIil9LEEucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sai51dGYxNj12LHYucHJvdG90eXBlLmVuY29kZXI9Qyx2LnByb3RvdHlwZS5kZWNvZGVyPXcsQy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTCl7cmV0'@; put 'dXJuIHRoaXMuZW5jb2Rlci53cml0ZShMKX0sQy5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKX0sdy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTCl7aWYoIXRoaXMuZGVjb2Rlcil7aWYodGhpcy5pbml0aWFsQnl0ZXMucHVzaChMKSx0aGlzLmlu'@; put 'aXRpYWxCeXRlc0xlbis9TC5sZW5ndGgsdGhpcy5pbml0aWFsQnl0ZXNMZW48MTYpcmV0dXJuIiI7dmFyIFI9UyhMPXkuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKFIsdGhp'@; put 'cy5vcHRpb25zKSx0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGg9dGhpcy5pbml0aWFsQnl0ZXNMZW49MH1yZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKEwpfSx3LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtpZighdGhpcy5kZWNvZGVyKXt2YXIgTD15LmNvbmNhdCh0aGlzLmluaXRpYWxCeXRl'@; put 'cyksUj1TKEwsdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihSLHRoaXMub3B0aW9ucyk7dmFyIHg9dGhpcy5kZWNvZGVyLndyaXRlKEwpLFU9dGhpcy5kZWNvZGVyLmVuZCgpO3JldHVybiBVP3grVTp4fXJldHVybiB0aGlz'@; put 'LmRlY29kZXIuZW5kKCl9fSwzNTA4OShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkzODA3KS5CdWZmZXI7ZnVuY3Rpb24gYyhMLFIpe3RoaXMuaWNvbnY9Uix0aGlzLmJvbUF3YXJlPSEwLHRoaXMuaXNMRT1MLmlzTEV9ZnVuY3Rpb24gcyhMLFIpe3RoaXMuaXNMRT1SLmlzTEUsdGhp'@; put 'cy5oaWdoU3Vycm9nYXRlPTB9ZnVuY3Rpb24gQShMLFIpe3RoaXMuaXNMRT1SLmlzTEUsdGhpcy5iYWRDaGFyPVIuaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlLmNoYXJDb2RlQXQoMCksdGhpcy5vdmVyZmxvdz1udWxsfWZ1bmN0aW9uIHYoTCxSKXt0aGlzLmljb252PVJ9ZnVuY3Rpb24gQyhM'@; put 'LFIpe3ZvaWQgMD09PShMPUx8fHt9KS5hZGRCT00mJihMLmFkZEJPTT0hMCksdGhpcy5lbmNvZGVyPVIuaWNvbnYuZ2V0RW5jb2RlcihMLmRlZmF1bHRFbmNvZGluZ3x8InV0Zi0zMmxlIixMKX1mdW5jdGlvbiB3KEwsUil7dGhpcy5kZWNvZGVyPW51bGwsdGhpcy5pbml0aWFsQnl0ZXM9W10s'@; put 'dGhpcy5pbml0aWFsQnl0ZXNMZW49MCx0aGlzLm9wdGlvbnM9THx8e30sdGhpcy5pY29udj1SLmljb252fWZ1bmN0aW9uIFMoTCxSKXt2YXIgeD1SfHwidXRmLTMybGUiO2lmKEwubGVuZ3RoPj00KWlmKDY1Mjc5PT09TC5yZWFkVUludDMyQkUoMCkpeD0idXRmLTMyYmUiO2Vsc2UgaWYoNjUy'@; put 'Nzk9PT1MLnJlYWRVSW50MzJMRSgwKSl4PSJ1dGYtMzJsZSI7ZWxzZXtmb3IodmFyIFU9MCxIPTAsVj0wLE49MCx6PU1hdGgubWluKEwubGVuZ3RoLUwubGVuZ3RoJTQsMTI4KSxZPTA7WTx6O1krPTQpe3ZhciBGPUxbWV0sVz1MW1krMV0scT1MW1krMl0scmU9TFtZKzNdOygwIT09Rnx8Vz4x'@; put 'NikmJisrSCwoMCE9PXJlfHxxPjE2KSYmKytVLDA9PT1GJiYwPT09VyYmMD09PXEmJjAhPT1yZSYmTisrLDAhPT1GJiYwPT09VyYmMD09PXEmJjA9PT1yZSYmVisrfUg8VT94PSJ1dGYtMzJiZSI6VTxIJiYoeD0idXRmLTMybGUiKSxOPlY/eD0idXRmLTMyYmUiOk48ViYmKHg9InV0Zi0zMmxl'@; put 'Iil9cmV0dXJuIHh9ai5fdXRmMzI9YyxqLnV0ZjMybGU9e3R5cGU6Il91dGYzMiIsaXNMRTohMH0sai51dGYzMmJlPXt0eXBlOiJfdXRmMzIiLGlzTEU6ITF9LGoudWNzNGxlPSJ1dGYzMmxlIixqLnVjczRiZT0idXRmMzJiZSIsYy5wcm90b3R5cGUuZW5jb2Rlcj1zLGMucHJvdG90eXBlLmRl'@; put 'Y29kZXI9QSxzLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihMKXtmb3IodmFyIFI9eS5mcm9tKEwsInVjczIiKSx4PXkuYWxsb2MoMipSLmxlbmd0aCksVT10aGlzLmlzTEU/eC53cml0ZVVJbnQzMkxFOngud3JpdGVVSW50MzJCRSxIPTAsVj0wO1Y8Ui5sZW5ndGg7Vis9Mil7dmFyIE49Ui5y'@; put 'ZWFkVUludDE2TEUoViksej01NTI5Njw9TiYmTjw1NjMyMDtpZih0aGlzLmhpZ2hTdXJyb2dhdGUpe2lmKCF6JiY1NjMyMDw9TiYmTjw1NzM0NCl7VS5jYWxsKHgsNjU1MzYrKHRoaXMuaGlnaFN1cnJvZ2F0ZS01NTI5Njw8MTB8Ti01NjMyMCksSCksSCs9NCx0aGlzLmhpZ2hTdXJyb2dhdGU9'@; put 'MDtjb250aW51ZX1VLmNhbGwoeCx0aGlzLmhpZ2hTdXJyb2dhdGUsSCksSCs9NH16P3RoaXMuaGlnaFN1cnJvZ2F0ZT1OOihVLmNhbGwoeCxOLEgpLEgrPTQsdGhpcy5oaWdoU3Vycm9nYXRlPTApfXJldHVybiBIPHgubGVuZ3RoJiYoeD14LnNsaWNlKDAsSCkpLHh9LHMucHJvdG90eXBlLmVu'@; put 'ZD1mdW5jdGlvbigpe2lmKHRoaXMuaGlnaFN1cnJvZ2F0ZSl7dmFyIEw9eS5hbGxvYyg0KTtyZXR1cm4gdGhpcy5pc0xFP0wud3JpdGVVSW50MzJMRSh0aGlzLmhpZ2hTdXJyb2dhdGUsMCk6TC53cml0ZVVJbnQzMkJFKHRoaXMuaGlnaFN1cnJvZ2F0ZSwwKSx0aGlzLmhpZ2hTdXJyb2dhdGU9'@; put 'MCxMfX0sQS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTCl7aWYoMD09PUwubGVuZ3RoKXJldHVybiIiO3RoaXMub3ZlcmZsb3cmJihMPXkuY29uY2F0KFt0aGlzLm92ZXJmbG93LExdKSk7dmFyIFI9TC5sZW5ndGgtTC5sZW5ndGglNDtMLmxlbmd0aCE9PVI/KHRoaXMub3ZlcmZsb3c9TC5z'@; put 'bGljZShSKSxMPUwuc2xpY2UoMCxSKSk6dGhpcy5vdmVyZmxvdz1udWxsO2Zvcih2YXIgeD15LmFsbG9jKFIpLFU9MCxIPTA7SDxSO0grPTQpe3ZhciBWPXRoaXMuaXNMRT9MLnJlYWRVSW50MzJMRShIKTpMLnJlYWRVSW50MzJCRShIKTtpZihWPDY1NTM2KXgud3JpdGVVSW50MTZMRShWLFUp'@; put 'LFUrPTI7ZWxzZSBpZihWPjExMTQxMTEpeC53cml0ZVVJbnQxNkxFKHRoaXMuYmFkQ2hhcixVKSxVKz0yO2Vsc2V7dmFyIHo9NTYzMjArKDEwMjMmKFYtPTY1NTM2KSk7eC53cml0ZVVJbnQxNkxFKDU1Mjk2fFY+PjEwLFUpLHgud3JpdGVVSW50MTZMRSh6LFUrPTIpLFUrPTJ9fXJldHVybiB4'@; put 'LnNsaWNlKDAsVSkudG9TdHJpbmcoInVjczIiKX0sQS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5vdmVyZmxvdz1udWxsfSxqLnV0ZjMyPXYsai51Y3M0PXYsdi5wcm90b3R5cGUuZW5jb2Rlcj1DLHYucHJvdG90eXBlLmRlY29kZXI9dyxDLnByb3RvdHlwZS53cml0ZT1mdW5jdGlv'@; put 'bihMKXtyZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKEwpfSxDLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpfSx3LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihMKXtpZighdGhpcy5kZWNvZGVyKXtpZih0aGlzLmluaXRpYWxCeXRlcy5wdXNoKEwp'@; put 'LHRoaXMuaW5pdGlhbEJ5dGVzTGVuKz1MLmxlbmd0aCx0aGlzLmluaXRpYWxCeXRlc0xlbjwzMilyZXR1cm4iIjt2YXIgeD1TKHkuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVy'@; put 'KHgsdGhpcy5vcHRpb25zKSx0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGg9dGhpcy5pbml0aWFsQnl0ZXNMZW49MH1yZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKEwpfSx3LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtpZighdGhpcy5kZWNvZGVyKXt2YXIgTD15LmNvbmNhdCh0aGlzLmluaXRp'@; put 'YWxCeXRlcyksUj1TKEwsdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihSLHRoaXMub3B0aW9ucyk7dmFyIHg9dGhpcy5kZWNvZGVyLndyaXRlKEwpLFU9dGhpcy5kZWNvZGVyLmVuZCgpO3JldHVybiBVP3grVTp4fXJldHVy'@; put 'biB0aGlzLmRlY29kZXIuZW5kKCl9fSw5NzQ3KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoOTM4MDcpLkJ1ZmZlcjtmdW5jdGlvbiBjKHosWSl7dGhpcy5pY29udj1ZfWoudXRmNz1jLGoudW5pY29kZTExdXRmNz0idXRmNyIsYy5wcm90b3R5cGUuZW5jb2Rlcj1BLGMucHJvdG90eXBl'@; put 'LmRlY29kZXI9dixjLnByb3RvdHlwZS5ib21Bd2FyZT0hMDt2YXIgcz0vW15BLVphLXowLTknXChcKSwtXC5cLzpcPyBcblxyXHRdKy9nO2Z1bmN0aW9uIEEoeixZKXt0aGlzLmljb252PVkuaWNvbnZ9ZnVuY3Rpb24gdih6LFkpe3RoaXMuaWNvbnY9WS5pY29udix0aGlzLmluQmFzZTY0PSEx'@; put 'LHRoaXMuYmFzZTY0QWNjdW09IiJ9QS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oeil7cmV0dXJuIHkuZnJvbSh6LnJlcGxhY2UocyxmdW5jdGlvbihZKXtyZXR1cm4iKyIrKCIrIj09PVk/IiI6dGhpcy5pY29udi5lbmNvZGUoWSwidXRmMTYtYmUiKS50b1N0cmluZygiYmFzZTY0IikucmVw'@; put 'bGFjZSgvPSskLywiIikpKyItIn0uYmluZCh0aGlzKSkpfSxBLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9O2Zvcih2YXIgQz0vW0EtWmEtejAtOVwvK10vLHc9W10sUz0wO1M8MjU2O1MrKyl3W1NdPUMudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKFMpKTt2YXIgUj00NTtmdW5jdGlvbiBV'@; put 'KHosWSl7dGhpcy5pY29udj1ZfWZ1bmN0aW9uIEgoeixZKXt0aGlzLmljb252PVkuaWNvbnYsdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPXkuYWxsb2MoNiksdGhpcy5iYXNlNjRBY2N1bUlkeD0wfWZ1bmN0aW9uIFYoeixZKXt0aGlzLmljb252PVkuaWNvbnYsdGhpcy5pbkJh'@; put 'c2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIifXYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHope2Zvcih2YXIgWT0iIixGPTAsVz10aGlzLmluQmFzZTY0LHE9dGhpcy5iYXNlNjRBY2N1bSxyZT0wO3JlPHoubGVuZ3RoO3JlKyspaWYoVyl7aWYoIXdbeltyZV1dKXtpZihyZT09RiYmelty'@; put 'ZV09PVIpWSs9IisiO2Vsc2V7dmFyIG1lPXErei5zbGljZShGLHJlKS50b1N0cmluZygpO1krPXRoaXMuaWNvbnYuZGVjb2RlKHkuZnJvbShtZSwiYmFzZTY0IiksInV0ZjE2LWJlIil9eltyZV0hPVImJnJlLS0sRj1yZSsxLFc9ITEscT0iIn19ZWxzZSA0Mz09eltyZV0mJihZKz10aGlzLmlj'@; put 'b252LmRlY29kZSh6LnNsaWNlKEYscmUpLCJhc2NpaSIpLEY9cmUrMSxXPSEwKTtpZihXKXt2YXIgQ2U9KG1lPXErei5zbGljZShGKS50b1N0cmluZygpKS5sZW5ndGgtbWUubGVuZ3RoJTg7cT1tZS5zbGljZShDZSksbWU9bWUuc2xpY2UoMCxDZSksWSs9dGhpcy5pY29udi5kZWNvZGUoeS5m'@; put 'cm9tKG1lLCJiYXNlNjQiKSwidXRmMTYtYmUiKX1lbHNlIFkrPXRoaXMuaWNvbnYuZGVjb2RlKHouc2xpY2UoRiksImFzY2lpIik7cmV0dXJuIHRoaXMuaW5CYXNlNjQ9Vyx0aGlzLmJhc2U2NEFjY3VtPXEsWX0sdi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHo9IiI7cmV0dXJuIHRo'@; put 'aXMuaW5CYXNlNjQmJnRoaXMuYmFzZTY0QWNjdW0ubGVuZ3RoPjAmJih6PXRoaXMuaWNvbnYuZGVjb2RlKHkuZnJvbSh0aGlzLmJhc2U2NEFjY3VtLCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIiLHp9LGoudXRmN2ltYXA9VSxVLnBy'@; put 'b3RvdHlwZS5lbmNvZGVyPUgsVS5wcm90b3R5cGUuZGVjb2Rlcj1WLFUucHJvdG90eXBlLmJvbUF3YXJlPSEwLEgucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHope2Zvcih2YXIgWT10aGlzLmluQmFzZTY0LEY9dGhpcy5iYXNlNjRBY2N1bSxXPXRoaXMuYmFzZTY0QWNjdW1JZHgscT15LmFs'@; put 'bG9jKDUqei5sZW5ndGgrMTApLHJlPTAsbWU9MDttZTx6Lmxlbmd0aDttZSsrKXt2YXIgQ2U9ei5jaGFyQ29kZUF0KG1lKTszMjw9Q2UmJkNlPD0xMjY/KFkmJihXPjAmJihyZSs9cS53cml0ZShGLnNsaWNlKDAsVykudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKS5yZXBs'@; put 'YWNlKC89KyQvLCIiKSxyZSksVz0wKSxxW3JlKytdPVIsWT0hMSksWXx8KHFbcmUrK109Q2UsMzg9PT1DZSYmKHFbcmUrK109UikpKTooWXx8KHFbcmUrK109MzgsWT0hMCksWSYmKEZbVysrXT1DZT4+OCxGW1crK109MjU1JkNlLFc9PUYubGVuZ3RoJiYocmUrPXEud3JpdGUoRi50b1N0cmlu'@; put 'ZygiYmFzZTY0IikucmVwbGFjZSgvXC8vZywiLCIpLHJlKSxXPTApKSl9cmV0dXJuIHRoaXMuaW5CYXNlNjQ9WSx0aGlzLmJhc2U2NEFjY3VtSWR4PVcscS5zbGljZSgwLHJlKX0sSC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHo9eS5hbGxvYygxMCksWT0wO3JldHVybiB0aGlzLmlu'@; put 'QmFzZTY0JiYodGhpcy5iYXNlNjRBY2N1bUlkeD4wJiYoWSs9ei53cml0ZSh0aGlzLmJhc2U2NEFjY3VtLnNsaWNlKDAsdGhpcy5iYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKS5yZXBsYWNlKC89KyQvLCIiKSxZKSx0aGlzLmJhc2U2NEFjY3Vt'@; put 'SWR4PTApLHpbWSsrXT1SLHRoaXMuaW5CYXNlNjQ9ITEpLHouc2xpY2UoMCxZKX07dmFyIE49dy5zbGljZSgpO05bNDRdPSEwLFYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHope2Zvcih2YXIgWT0iIixGPTAsVz10aGlzLmluQmFzZTY0LHE9dGhpcy5iYXNlNjRBY2N1bSxyZT0wO3JlPHou'@; put 'bGVuZ3RoO3JlKyspaWYoVyl7aWYoIU5beltyZV1dKXtpZihyZT09RiYmeltyZV09PVIpWSs9IiYiO2Vsc2V7dmFyIG1lPXErei5zbGljZShGLHJlKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywiLyIpO1krPXRoaXMuaWNvbnYuZGVjb2RlKHkuZnJvbShtZSwiYmFzZTY0IiksInV0ZjE2LWJl'@; put 'Iil9eltyZV0hPVImJnJlLS0sRj1yZSsxLFc9ITEscT0iIn19ZWxzZSAzOD09eltyZV0mJihZKz10aGlzLmljb252LmRlY29kZSh6LnNsaWNlKEYscmUpLCJhc2NpaSIpLEY9cmUrMSxXPSEwKTtpZihXKXt2YXIgQ2U9KG1lPXErei5zbGljZShGKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywi'@; put 'LyIpKS5sZW5ndGgtbWUubGVuZ3RoJTg7cT1tZS5zbGljZShDZSksbWU9bWUuc2xpY2UoMCxDZSksWSs9dGhpcy5pY29udi5kZWNvZGUoeS5mcm9tKG1lLCJiYXNlNjQiKSwidXRmMTYtYmUiKX1lbHNlIFkrPXRoaXMuaWNvbnYuZGVjb2RlKHouc2xpY2UoRiksImFzY2lpIik7cmV0dXJuIHRo'@; put 'aXMuaW5CYXNlNjQ9Vyx0aGlzLmJhc2U2NEFjY3VtPXEsWX0sVi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHo9IiI7cmV0dXJuIHRoaXMuaW5CYXNlNjQmJnRoaXMuYmFzZTY0QWNjdW0ubGVuZ3RoPjAmJih6PXRoaXMuaWNvbnYuZGVjb2RlKHkuZnJvbSh0aGlzLmJhc2U2NEFjY3Vt'@; put 'LCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIiLHp9fSwyOTQyMihmZSxqKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24geShzLEEpe3RoaXMuZW5jb2Rlcj1zLHRoaXMuYWRkQk9NPSEwfWZ1bmN0aW9uIGMocyxBKXt0aGlzLmRlY29kZXI9'@; put 'cyx0aGlzLnBhc3M9ITEsdGhpcy5vcHRpb25zPUF8fHt9fWouUHJlcGVuZEJPTT15LHkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHMpe3JldHVybiB0aGlzLmFkZEJPTSYmKHM9Ilx1ZmVmZiIrcyx0aGlzLmFkZEJPTT0hMSksdGhpcy5lbmNvZGVyLndyaXRlKHMpfSx5LnByb3RvdHlwZS5l'@; put 'bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpfSxqLlN0cmlwQk9NPWMsYy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24ocyl7dmFyIEE9dGhpcy5kZWNvZGVyLndyaXRlKHMpO3JldHVybiB0aGlzLnBhc3N8fCFBfHwoIlx1ZmVmZiI9PT1BWzBdJiYoQT1BLnNsaWNlKDEp'@; put 'LCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc3RyaXBCT00mJnRoaXMub3B0aW9ucy5zdHJpcEJPTSgpKSx0aGlzLnBhc3M9ITApLEF9LGMucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY29kZXIuZW5kKCl9fSw5NDI0OChmZSxqLGgpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgeT1oKDkzODA3KS5CdWZmZXIsYz1oKDI5NDIyKSxzPWZlLmV4cG9ydHM7cy5lbmNvZGluZ3M9bnVsbCxzLmRlZmF1bHRDaGFyVW5pY29kZT0iXHVmZmZkIixzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZT0iPyIscy5lbmNvZGU9ZnVuY3Rpb24odyxTLEwpe3c9IiIrKHd8fCIiKTt2YXIg'@; put 'Uj1zLmdldEVuY29kZXIoUyxMKSx4PVIud3JpdGUodyksVT1SLmVuZCgpO3JldHVybiBVJiZVLmxlbmd0aD4wP3kuY29uY2F0KFt4LFVdKTp4fSxzLmRlY29kZT1mdW5jdGlvbih3LFMsTCl7InN0cmluZyI9PXR5cGVvZiB3JiYocy5za2lwRGVjb2RlV2FybmluZ3x8KGNvbnNvbGUuZXJyb3Io'@; put 'Ikljb252LWxpdGUgd2FybmluZzogZGVjb2RlKCktaW5nIHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gUmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL2FzaHR1Y2hraW4vaWNvbnYtbGl0ZS93aWtpL1VzZS1CdWZmZXJzLXdoZW4tZGVjb2RpbmciKSxzLnNraXBEZWNvZGVXYXJuaW5nPSEwKSx3'@; put 'PXkuZnJvbSgiIisod3x8IiIpLCJiaW5hcnkiKSk7dmFyIFI9cy5nZXREZWNvZGVyKFMsTCkseD1SLndyaXRlKHcpLFU9Ui5lbmQoKTtyZXR1cm4gVT94K1U6eH0scy5lbmNvZGluZ0V4aXN0cz1mdW5jdGlvbih3KXt0cnl7cmV0dXJuIHMuZ2V0Q29kZWModyksITB9Y2F0Y2h7cmV0dXJuITF9'@; put 'fSxzLnRvRW5jb2Rpbmc9cy5lbmNvZGUscy5mcm9tRW5jb2Rpbmc9cy5kZWNvZGUscy5fY29kZWNEYXRhQ2FjaGU9e30scy5nZXRDb2RlYz1mdW5jdGlvbih3KXtzLmVuY29kaW5nc3x8KHMuZW5jb2RpbmdzPWgoNzI4OTMpKTtmb3IodmFyIFM9cy5fY2Fub25pY2FsaXplRW5jb2Rpbmcodyks'@; put 'TD17fTs7KXt2YXIgUj1zLl9jb2RlY0RhdGFDYWNoZVtTXTtpZihSKXJldHVybiBSO3ZhciB4PXMuZW5jb2RpbmdzW1NdO3N3aXRjaCh0eXBlb2YgeCl7Y2FzZSJzdHJpbmciOlM9eDticmVhaztjYXNlIm9iamVjdCI6Zm9yKHZhciBVIGluIHgpTFtVXT14W1VdO0wuZW5jb2RpbmdOYW1lfHwo'@; put 'TC5lbmNvZGluZ05hbWU9UyksUz14LnR5cGU7YnJlYWs7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIEwuZW5jb2RpbmdOYW1lfHwoTC5lbmNvZGluZ05hbWU9UyksUj1uZXcgeChMLHMpLHMuX2NvZGVjRGF0YUNhY2hlW0wuZW5jb2RpbmdOYW1lXT1SLFI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3Io'@; put 'IkVuY29kaW5nIG5vdCByZWNvZ25pemVkOiAnIit3KyInIChzZWFyY2hlZCBhczogJyIrUysiJykiKX19fSxzLl9jYW5vbmljYWxpemVFbmNvZGluZz1mdW5jdGlvbihDKXtyZXR1cm4oIiIrQykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC86XGR7NH0kfFteMC05YS16XS9nLCIiKX0scy5nZXRF'@; put 'bmNvZGVyPWZ1bmN0aW9uKHcsUyl7dmFyIEw9cy5nZXRDb2RlYyh3KSxSPW5ldyBMLmVuY29kZXIoUyxMKTtyZXR1cm4gTC5ib21Bd2FyZSYmUyYmUy5hZGRCT00mJihSPW5ldyBjLlByZXBlbmRCT00oUixTKSksUn0scy5nZXREZWNvZGVyPWZ1bmN0aW9uKHcsUyl7dmFyIEw9cy5nZXRDb2Rl'@; put 'Yyh3KSxSPW5ldyBMLmRlY29kZXIoUyxMKTtyZXR1cm4gTC5ib21Bd2FyZSYmIShTJiYhMT09PVMuc3RyaXBCT00pJiYoUj1uZXcgYy5TdHJpcEJPTShSLFMpKSxSfTt2YXIgQT10eXBlb2YgcHJvY2VzczwidSImJnByb2Nlc3MudmVyc2lvbnMmJnByb2Nlc3MudmVyc2lvbnMubm9kZTtpZihB'@; put 'KXt2YXIgdj1BLnNwbGl0KCIuIikubWFwKE51bWJlcik7KHZbMF0+MHx8dlsxXT49MTApJiZoKDYxMDkzKShzKSxoKDE1NzkxKShzKX19LDIyMDIwKGZlLGope2oucmVhZD1mdW5jdGlvbihoLHksYyxzLEEpe3ZhciB2LEMsdz04KkEtcy0xLFM9KDE8PHcpLTEsTD1TPj4xLFI9LTcseD1jP0Et'@; put 'MTowLFU9Yz8tMToxLEg9aFt5K3hdO2Zvcih4Kz1VLHY9SCYoMTw8LVIpLTEsSD4+PS1SLFIrPXc7Uj4wO3Y9MjU2KnYraFt5K3hdLHgrPVUsUi09OCk7Zm9yKEM9diYoMTw8LVIpLTEsdj4+PS1SLFIrPXM7Uj4wO0M9MjU2KkMraFt5K3hdLHgrPVUsUi09OCk7aWYoMD09PXYpdj0xLUw7ZWxz'@; put 'ZXtpZih2PT09UylyZXR1cm4gQz9OYU46MS8wKihIPy0xOjEpO0MrPU1hdGgucG93KDIscyksdi09TH1yZXR1cm4oSD8tMToxKSpDKk1hdGgucG93KDIsdi1zKX0sai53cml0ZT1mdW5jdGlvbihoLHksYyxzLEEsdil7dmFyIEMsdyxTLEw9OCp2LUEtMSxSPSgxPDxMKS0xLHg9Uj4+MSxVPTIz'@; put 'PT09QT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAsSD1zPzA6di0xLFY9cz8xOi0xLE49eTwwfHwwPT09eSYmMS95PDA/MTowO2Zvcih5PU1hdGguYWJzKHkpLGlzTmFOKHkpfHx5PT09MS8wPyh3PWlzTmFOKHkpPzE6MCxDPVIpOihDPU1hdGguZmxvb3IoTWF0aC5sb2coeSkv'@; put 'TWF0aC5MTjIpLHkqKFM9TWF0aC5wb3coMiwtQykpPDEmJihDLS0sUyo9MiksKHkrPUMreD49MT9VL1M6VSpNYXRoLnBvdygyLDEteCkpKlM+PTImJihDKyssUy89MiksQyt4Pj1SPyh3PTAsQz1SKTpDK3g+PTE/KHc9KHkqUy0xKSpNYXRoLnBvdygyLEEpLEMrPXgpOih3PXkqTWF0aC5wb3co'@; put 'Mix4LTEpKk1hdGgucG93KDIsQSksQz0wKSk7QT49ODtoW2MrSF09MjU1JncsSCs9Vix3Lz0yNTYsQS09OCk7Zm9yKEM9Qzw8QXx3LEwrPUE7TD4wO2hbYytIXT0yNTUmQyxIKz1WLEMvPTI1NixMLT04KTtoW2MrSC1WXXw9MTI4Kk59fSw3MTk5MyhmZSl7ZmUuZXhwb3J0cz0iZnVuY3Rpb24i'@; put 'PT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihoLHkpe3kmJihoLnN1cGVyXz15LGgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpoLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pKX06ZnVuY3Rp'@; put 'b24oaCx5KXtpZih5KXtoLnN1cGVyXz15O3ZhciBjPWZ1bmN0aW9uKCl7fTtjLnByb3RvdHlwZT15LnByb3RvdHlwZSxoLnByb3RvdHlwZT1uZXcgYyxoLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ofX19LDU4MjM5KGZlKXsidXNlIHN0cmljdCI7dmFyIHksYyxqPUZ1bmN0aW9uLnByb3RvdHlw'@; put 'ZS50b1N0cmluZyxoPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmbnVsbCE9PVJlZmxlY3QmJlJlZmxlY3QuYXBwbHk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5e3k9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9'@; put 'LCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXt0aHJvdyBjfX0pLGM9e30saChmdW5jdGlvbigpe3Rocm93IDQyfSxudWxsLHkpfWNhdGNoKFkpe1khPT1jJiYoaD1udWxsKX1lbHNlIGg9bnVsbDt2YXIgcz0vXlxzKmNsYXNzXGIvLEE9ZnVuY3Rpb24oRil7dHJ5e3ZhciBXPWouY2FsbChGKTty'@; put 'ZXR1cm4gcy50ZXN0KFcpfWNhdGNoe3JldHVybiExfX0sdj1mdW5jdGlvbihGKXt0cnl7cmV0dXJuIUEoRikmJihqLmNhbGwoRiksITApfWNhdGNoe3JldHVybiExfX0sQz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEg9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmISFTeW1ib2wudG9T'@; put 'dHJpbmdUYWcsVj0hKDAgaW5bLF0pLE49ZnVuY3Rpb24oKXtyZXR1cm4hMX07aWYoIm9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCl7dmFyIHo9ZG9jdW1lbnQuYWxsO0MuY2FsbCh6KT09PUMuY2FsbChkb2N1bWVudC5hbGwpJiYoTj1mdW5jdGlvbihGKXtpZigoVnx8IUYpJiYodHlwZW9mIEY+'@; put 'InUifHwib2JqZWN0Ij09dHlwZW9mIEYpKXRyeXt2YXIgVz1DLmNhbGwoRik7cmV0dXJuKCJbb2JqZWN0IEhUTUxBbGxDb2xsZWN0aW9uXSI9PT1XfHwiW29iamVjdCBIVE1MIGRvY3VtZW50LmFsbCBjbGFzc10iPT09V3x8IltvYmplY3QgSFRNTENvbGxlY3Rpb25dIj09PVd8fCJbb2JqZWN0'@; put 'IE9iamVjdF0iPT09VykmJm51bGw9PUYoIiIpfWNhdGNoe31yZXR1cm4hMX0pfWZlLmV4cG9ydHM9aD9mdW5jdGlvbihGKXtpZihOKEYpKXJldHVybiEwO2lmKCFGfHwiZnVuY3Rpb24iIT10eXBlb2YgRiYmIm9iamVjdCIhPXR5cGVvZiBGKXJldHVybiExO3RyeXtoKEYsbnVsbCx5KX1jYXRj'@; put 'aChXKXtpZihXIT09YylyZXR1cm4hMX1yZXR1cm4hQShGKSYmdihGKX06ZnVuY3Rpb24oRil7aWYoTihGKSlyZXR1cm4hMDtpZighRnx8ImZ1bmN0aW9uIiE9dHlwZW9mIEYmJiJvYmplY3QiIT10eXBlb2YgRilyZXR1cm4hMTtpZihIKXJldHVybiB2KEYpO2lmKEEoRikpcmV0dXJuITE7dmFy'@; put 'IFc9Qy5jYWxsKEYpO3JldHVybiEoIltvYmplY3QgRnVuY3Rpb25dIiE9PVcmJiJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIhPT1XJiYhL15cW29iamVjdCBIVE1MLy50ZXN0KFcpKSYmdihGKX19LDQ3MjkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0NDA2OCk7ZmUuZXhwb3J0'@; put 'cz1mdW5jdGlvbihzKXtyZXR1cm4hIXkocyl9fSwyMDA1MyhmZSl7dmFyIGo9e30udG9TdHJpbmc7ZmUuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihoKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1qLmNhbGwoaCl9fSw3MDgzNyhmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9'@; put 'TWF0aC5hYnN9LDMzODMoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPU1hdGguZmxvb3J9LDg1NDg4KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGgpe3JldHVybiBoIT1ofX0sNzkwMzkoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPU1h'@; put 'dGgubWF4fSwxNDk4MShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9TWF0aC5taW59LDgwOTc1KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1NYXRoLnBvd30sNTMzNyhmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9TWF0aC5yb3VuZH0sNDkxMihmZSxqLGgpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgeT1oKDg1NDg4KTtmZS5leHBvcnRzPWZ1bmN0aW9uKHMpe3JldHVybiB5KHMpfHwwPT09cz9zOnM8MD8tMToxfX0sMzQ3MjUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg3MTk5MyksYz1oKDEzNjg2KSxzPWgoMjcwNTQpLkJ1ZmZlcixBPW5ldyBBcnJheSgxNik7ZnVuY3Rp'@; put 'b24gdigpe2MuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OH1mdW5jdGlvbiBDKHgsVSl7cmV0dXJuIHg8PFV8eD4+PjMyLVV9ZnVuY3Rpb24gdyh4LFUsSCxWLE4seixZKXtyZXR1'@; put 'cm4gQyh4KyhVJkh8flUmVikrTit6fDAsWSkrVXwwfWZ1bmN0aW9uIFMoeCxVLEgsVixOLHosWSl7cmV0dXJuIEMoeCsoVSZWfEgmflYpK04renwwLFkpK1V8MH1mdW5jdGlvbiBMKHgsVSxILFYsTix6LFkpe3JldHVybiBDKHgrKFVeSF5WKStOK3p8MCxZKStVfDB9ZnVuY3Rpb24gUih4LFUs'@; put 'SCxWLE4seixZKXtyZXR1cm4gQyh4KyhIXihVfH5WKSkrTit6fDAsWSkrVXwwfXkodixjKSx2LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB4PUEsVT0wO1U8MTY7KytVKXhbVV09dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCpVKTt2YXIgSD10aGlzLl9hLFY9dGhpcy5f'@; put 'YixOPXRoaXMuX2Msej10aGlzLl9kO0g9dyhILFYsTix6LHhbMF0sMzYxNDA5MDM2MCw3KSx6PXcoeixILFYsTix4WzFdLDM5MDU0MDI3MTAsMTIpLE49dyhOLHosSCxWLHhbMl0sNjA2MTA1ODE5LDE3KSxWPXcoVixOLHosSCx4WzNdLDMyNTA0NDE5NjYsMjIpLEg9dyhILFYsTix6LHhbNF0s'@; put 'NDExODU0ODM5OSw3KSx6PXcoeixILFYsTix4WzVdLDEyMDAwODA0MjYsMTIpLE49dyhOLHosSCxWLHhbNl0sMjgyMTczNTk1NSwxNyksVj13KFYsTix6LEgseFs3XSw0MjQ5MjYxMzEzLDIyKSxIPXcoSCxWLE4seix4WzhdLDE3NzAwMzU0MTYsNyksej13KHosSCxWLE4seFs5XSwyMzM2NTUy'@; put 'ODc5LDEyKSxOPXcoTix6LEgsVix4WzEwXSw0Mjk0OTI1MjMzLDE3KSxWPXcoVixOLHosSCx4WzExXSwyMzA0NTYzMTM0LDIyKSxIPXcoSCxWLE4seix4WzEyXSwxODA0NjAzNjgyLDcpLHo9dyh6LEgsVixOLHhbMTNdLDQyNTQ2MjYxOTUsMTIpLE49dyhOLHosSCxWLHhbMTRdLDI3OTI5NjUw'@; put 'MDYsMTcpLEg9UyhILFY9dyhWLE4seixILHhbMTVdLDEyMzY1MzUzMjksMjIpLE4seix4WzFdLDQxMjkxNzA3ODYsNSksej1TKHosSCxWLE4seFs2XSwzMjI1NDY1NjY0LDkpLE49UyhOLHosSCxWLHhbMTFdLDY0MzcxNzcxMywxNCksVj1TKFYsTix6LEgseFswXSwzOTIxMDY5OTk0LDIwKSxI'@; put 'PVMoSCxWLE4seix4WzVdLDM1OTM0MDg2MDUsNSksej1TKHosSCxWLE4seFsxMF0sMzgwMTYwODMsOSksTj1TKE4seixILFYseFsxNV0sMzYzNDQ4ODk2MSwxNCksVj1TKFYsTix6LEgseFs0XSwzODg5NDI5NDQ4LDIwKSxIPVMoSCxWLE4seix4WzldLDU2ODQ0NjQzOCw1KSx6PVMoeixILFYs'@; put 'Tix4WzE0XSwzMjc1MTYzNjA2LDkpLE49UyhOLHosSCxWLHhbM10sNDEwNzYwMzMzNSwxNCksVj1TKFYsTix6LEgseFs4XSwxMTYzNTMxNTAxLDIwKSxIPVMoSCxWLE4seix4WzEzXSwyODUwMjg1ODI5LDUpLHo9Uyh6LEgsVixOLHhbMl0sNDI0MzU2MzUxMiw5KSxOPVMoTix6LEgsVix4Wzdd'@; put 'LDE3MzUzMjg0NzMsMTQpLEg9TChILFY9UyhWLE4seixILHhbMTJdLDIzNjgzNTk1NjIsMjApLE4seix4WzVdLDQyOTQ1ODg3MzgsNCksej1MKHosSCxWLE4seFs4XSwyMjcyMzkyODMzLDExKSxOPUwoTix6LEgsVix4WzExXSwxODM5MDMwNTYyLDE2KSxWPUwoVixOLHosSCx4WzE0XSw0MjU5'@; put 'NjU3NzQwLDIzKSxIPUwoSCxWLE4seix4WzFdLDI3NjM5NzUyMzYsNCksej1MKHosSCxWLE4seFs0XSwxMjcyODkzMzUzLDExKSxOPUwoTix6LEgsVix4WzddLDQxMzk0Njk2NjQsMTYpLFY9TChWLE4seixILHhbMTBdLDMyMDAyMzY2NTYsMjMpLEg9TChILFYsTix6LHhbMTNdLDY4MTI3OTE3'@; put 'NCw0KSx6PUwoeixILFYsTix4WzBdLDM5MzY0MzAwNzQsMTEpLE49TChOLHosSCxWLHhbM10sMzU3MjQ0NTMxNywxNiksVj1MKFYsTix6LEgseFs2XSw3NjAyOTE4OSwyMyksSD1MKEgsVixOLHoseFs5XSwzNjU0NjAyODA5LDQpLHo9TCh6LEgsVixOLHhbMTJdLDM4NzMxNTE0NjEsMTEpLE49'@; put 'TChOLHosSCxWLHhbMTVdLDUzMDc0MjUyMCwxNiksSD1SKEgsVj1MKFYsTix6LEgseFsyXSwzMjk5NjI4NjQ1LDIzKSxOLHoseFswXSw0MDk2MzM2NDUyLDYpLHo9Uih6LEgsVixOLHhbN10sMTEyNjg5MTQxNSwxMCksTj1SKE4seixILFYseFsxNF0sMjg3ODYxMjM5MSwxNSksVj1SKFYsTix6'@; put 'LEgseFs1XSw0MjM3NTMzMjQxLDIxKSxIPVIoSCxWLE4seix4WzEyXSwxNzAwNDg1NTcxLDYpLHo9Uih6LEgsVixOLHhbM10sMjM5OTk4MDY5MCwxMCksTj1SKE4seixILFYseFsxMF0sNDI5MzkxNTc3MywxNSksVj1SKFYsTix6LEgseFsxXSwyMjQwMDQ0NDk3LDIxKSxIPVIoSCxWLE4seix4'@; put 'WzhdLDE4NzMzMTMzNTksNiksej1SKHosSCxWLE4seFsxNV0sNDI2NDM1NTU1MiwxMCksTj1SKE4seixILFYseFs2XSwyNzM0NzY4OTE2LDE1KSxWPVIoVixOLHosSCx4WzEzXSwxMzA5MTUxNjQ5LDIxKSxIPVIoSCxWLE4seix4WzRdLDQxNDk0NDQyMjYsNiksej1SKHosSCxWLE4seFsxMV0s'@; put 'MzE3NDc1NjkxNywxMCksTj1SKE4seixILFYseFsyXSw3MTg3ODcyNTksMTUpLFY9UihWLE4seixILHhbOV0sMzk1MTQ4MTc0NSwyMSksdGhpcy5fYT10aGlzLl9hK0h8MCx0aGlzLl9iPXRoaXMuX2IrVnwwLHRoaXMuX2M9dGhpcy5fYytOfDAsdGhpcy5fZD10aGlzLl9kK3p8MH0sdi5wcm90'@; put 'b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9ja09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhp'@; put 'cy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciB4PXMuYWxsb2NVbnNhZmUo'@; put 'MTYpO3JldHVybiB4LndyaXRlSW50MzJMRSh0aGlzLl9hLDApLHgud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCkseC53cml0ZUludDMyTEUodGhpcy5fYyw4KSx4LndyaXRlSW50MzJMRSh0aGlzLl9kLDEyKSx4fSxmZS5leHBvcnRzPXZ9LDM5MjEwKGZlKXtmdW5jdGlvbiBqKGgseSl7aWYoIWgp'@; put 'dGhyb3cgbmV3IEVycm9yKHl8fCJBc3NlcnRpb24gZmFpbGVkIil9ZmUuZXhwb3J0cz1qLGouZXF1YWw9ZnVuY3Rpb24oeSxjLHMpe2lmKHkhPWMpdGhyb3cgbmV3IEVycm9yKHN8fCJBc3NlcnRpb24gZmFpbGVkOiAiK3krIiAhPSAiK2MpfX0sMTE1NDQoZmUsaixoKXshZnVuY3Rpb24oeSl7'@; put 'InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJhZiIse21vbnRoczoiSmFudWFyaWVfRmVicnVhcmllX01hYXJ0X0FwcmlsX01laV9KdW5pZV9KdWxpZV9BdWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zl'@; put 'Yl9NcnRfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlNvbmRhZ19NYWFuZGFnX0RpbnNkYWdfV29lbnNkYWdfRG9uZGVyZGFnX1ZyeWRhZ19TYXRlcmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTb25fTWFhX0Rpbl9Xb2Vf'@; put 'RG9uX1ZyeV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01hX0RpX1dvX0RvX1ZyX1NhIi5zcGxpdCgiXyIpLG1lcmlkaWVtUGFyc2U6L3ZtfG5tL2ksaXNQTTpmdW5jdGlvbihzKXtyZXR1cm4vXm5tJC9pLnRlc3Qocyl9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4g'@; put 'czwxMj92PyJ2bSI6IlZNIjp2PyJubSI6Ik5NIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVu'@; put 'ZGFyOntzYW1lRGF5OiJbVmFuZGFnIG9tXSBMVCIsbmV4dERheToiW01ceGY0cmUgb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbR2lzdGVyIG9tXSBMVCIsbGFzdFdlZWs6IltMYWFzXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm'@; put 'dXR1cmU6Im9vciAlcyIscGFzdDoiJXMgZ2VsZWRlIixzOiInbiBwYWFyIHNla29uZGVzIixzczoiJWQgc2Vrb25kZXMiLG06IiduIG1pbnV1dCIsbW06IiVkIG1pbnV0ZSIsaDoiJ24gdXVyIixoaDoiJWQgdXJlIixkOiInbiBkYWciLGRkOiIlZCBkYWUiLE06IiduIG1hYW5kIixNTToiJWQg'@; put 'bWFhbmRlIix5OiInbiBqYWFyIix5eToiJWQgamFhciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihzKXtyZXR1cm4gcysoMT09PXN8fDg9PT1zfHxzPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1'@; put 'ODYpKX0sNTIxNTUoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPWZ1bmN0aW9uKHcpe3JldHVybiAwPT09dz8wOjE9PT13PzE6Mj09PXc/Mjp3JTEwMD49MyYmdyUxMDA8PTEwPzM6dyUxMDA+PTExPzQ6NX0scz17czpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVc'@; put 'dTA2NDYgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmJcdTA2MjdcdTA2'@; put 'NDZcdTA2NGFcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5Il0sbTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2'@; put 'NDYgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmZcdTA2NDJcdTA2NGFc'@; put 'dTA2NDJcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5Il0saDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVc'@; put 'dTA2NDYgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2NGFcdTA2'@; put 'NDYiXSwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5Il0sZDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjRhXHUwNjQ4XHUwNjQ1IiwiXHUwNjRh'@; put 'XHUwNjQ4XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRi'@; put 'XHUwNjI3IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1Il0sTTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM0XHUwNjQ3XHUwNjMxIiwiXHUwNjM0XHUwNjQ3XHUwNjMxIFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjdcdTA2'@; put 'NDYiLCJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3IiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxIl0seTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM5'@; put 'XHUwNjI3XHUwNjQ1IiwiXHUwNjM5XHUwNjI3XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM5XHUwNjQ4XHUwNjI3XHUwNjQ1Iiwi'@; put 'JWQgXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1Il19LEE9ZnVuY3Rpb24odyl7cmV0dXJuIGZ1bmN0aW9uKFMsTCxSLHgpe3ZhciBVPWMoUyksSD1zW3ddW2MoUyldO3JldHVybiAyPT09VSYmKEg9SFtMPzA6MV0pLEgucmVwbGFjZSgvJWQv'@; put 'aSxTKX19LHY9WyJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGEiLCJcdTA2NDFcdTA2NGFcdTA2NDFcdTA2MzFcdTA2NGEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzMiLCJcdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjdcdTA2NGEiLCJcdTA2MmNc'@; put 'dTA2NDhcdTA2MjdcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjkiLCJcdTA2MjNcdTA2NDhcdTA2MmEiLCJcdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZc'@; put 'dTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXTt5LmRlZmluZUxvY2FsZSgiYXItZHoiLHttb250aHM6dixtb250aHNTaG9ydDp2LHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3'@; put 'XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRh'@; put 'XHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRc'@; put 'dTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUw'@; put 'NjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBN'@; put 'TU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKHcpe3JldHVybiJcdTA2NDUiPT09d30sbWVyaWRpZW06ZnVuY3Rpb24odyxTLEwpe3JldHVybiB3PDEyPyJcdTA2MzUiOiJcdTA2'@; put 'NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBcdTA2MzlcdTA2NDZc'@; put 'dTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0'@; put 'Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1'@; put 'MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOkEoInMiKSxzczpBKCJzIiksbTpBKCJtIiksbW06QSgibSIpLGg6QSgiaCIpLGhoOkEoImgiKSxkOkEoImQiKSxkZDpBKCJkIiksTTpBKCJNIiksTU06QSgiTSIpLHk6QSgieSIpLHl5OkEoInkiKX0s'@; put 'cG9zdGZvcm1hdDpmdW5jdGlvbih3KXtyZXR1cm4gdy5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MCxkb3k6NH19KX0oaCg5NzU4NikpfSw1MzU4MyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImFyLWt3Iix7bW9udGhzOiJcdTA2'@; put 'NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1'@; put 'MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhcdTA2MzJfXHUwNjNhXHUwNjM0XHUwNjJhX1x1MDYzNFx1MDYyYVx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYy'@; put 'Zlx1MDYyY1x1MDY0Nlx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUw'@; put 'NjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJh'@; put 'XHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmFcdTA2NDZc'@; put 'dTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJj'@; put 'XHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjdcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjJhXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9c'@; put 'dTA2MjdcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVf'@; put 'XHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZ'@; put 'WVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0'@; put 'XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2'@; put 'NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJc'@; put 'dTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2'@; put 'NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2'@; put 'MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHdlZWs6e2RvdzowLGRveToxMn19KX0oaCg5NzU4NikpfSw0MTYzOChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNl'@; put 'IHN0cmljdCI7dmFyIGM9ezE6IjEiLDI6IjIiLDM6IjMiLDQ6IjQiLDU6IjUiLDY6IjYiLDc6IjciLDg6IjgiLDk6IjkiLDA6IjAifSxzPWZ1bmN0aW9uKFMpe3JldHVybiAwPT09Uz8wOjE9PT1TPzE6Mj09PVM/MjpTJTEwMD49MyYmUyUxMDA8PTEwPzM6UyUxMDA+PTExPzQ6NX0sQT17czpb'@; put 'Ilx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2'@; put 'MjdcdTA2NDYiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5Il0sbTpbIlx1'@; put 'MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2Mjdc'@; put 'dTA2NDYiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5Il0saDpb'@; put 'Ilx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MzNc'@; put 'dTA2MjdcdTA2MzlcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5Il0sZDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYg'@; put 'XHUwNjRhXHUwNjQ4XHUwNjQ1IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1Iiwi'@; put 'JWQgXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1Il0sTTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM0XHUwNjQ3XHUwNjMxIiwiXHUwNjM0XHUwNjQ3XHUwNjMxIFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJc'@; put 'dTA2MzRcdTA2NDdcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3IiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxIl0seTpbIlx1MDYyM1x1MDY0'@; put 'Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM5XHUwNjI3XHUwNjQ1IiwiXHUwNjM5XHUwNjI3XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIz'@; put 'XHUwNjM5XHUwNjQ4XHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1Il19LHY9ZnVuY3Rpb24oUyl7cmV0dXJuIGZ1bmN0aW9uKEwsUix4LFUpe3ZhciBIPXMoTCksVj1BW1NdW3MoTCldO3JldHVybiAyPT09SCYm'@; put 'KFY9VltSPzA6MV0pLFYucmVwbGFjZSgvJWQvaSxMKX19LEM9WyJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzEiLCJcdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzMiLCJcdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2'@; put 'NDQiLCJcdTA2NDVcdTA2MjdcdTA2NGFcdTA2NDgiLCJcdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDgiLCJcdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDgiLCJcdTA2MjNcdTA2M2FcdTA2MzNcdTA2MzdcdTA2MzMiLCJcdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2'@; put 'MzEiLCJcdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXTt5LmRlZmluZUxvY2FsZSgiYXItbHkiLHttb250aHM6Qyxtb250aHNTaG9y'@; put 'dDpDLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2'@; put 'MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJk'@; put 'XHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUw'@; put 'NjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi'@; put 'LEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKFMpe3JldHVybiJcdTA2NDUiPT09U30s'@; put 'bWVyaWRpZW06ZnVuY3Rpb24oUyxMLFIpe3JldHVybiBTPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBM'@; put 'VCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2Mzlc'@; put 'dTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYz'@; put 'OVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOnYoInMiKSxzczp2KCJzIiksbTp2KCJtIiksbW06digibSIpLGg6digiaCIpLGhoOnYoImgiKSxkOnYoImQi'@; put 'KSxkZDp2KCJkIiksTTp2KCJNIiksTU06digiTSIpLHk6digieSIpLHl5OnYoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oUyl7cmV0dXJuIFMucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihTKXtyZXR1cm4gUy5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEwpe3Jl'@; put 'dHVybiBjW0xdfSkucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pfShoKDk3NTg2KSl9LDg3ODIzKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiYXItbWEiLHttb250aHM6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0'@; put 'YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1'@; put 'MDY0NFx1MDY0YVx1MDY0OFx1MDYzMl9cdTA2M2FcdTA2MzRcdTA2MmFfXHUwNjM0XHUwNjJhXHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjJjXHUwNjQ2XHUwNjI4'@; put 'XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUw'@; put 'NjI3XHUwNjRhX1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhcdTA2MzJfXHUwNjNhXHUwNjM0XHUwNjJhX1x1MDYzNFx1MDYyYVx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFf'@; put 'XHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYyY1x1MDY0Nlx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2Mjdc'@; put 'dTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2Mjlf'@; put 'XHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyN1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDYzMVx1MDYyOFx1'@; put 'MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxp'@; put 'dCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRh'@; put 'cjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDYyNyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0'@; put 'XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2'@; put 'NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDY0MVx1MDY0YSAlcyIscGFz'@; put 'dDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOiJcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLG06Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0'@; put 'MiIsaDoiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IixoaDoiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIixkOiJcdTA2NGFcdTA2NDhcdTA2NDUiLGRkOiIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLE06Ilx1MDYzNFx1MDY0N1x1MDYzMSIsTU06IiVkIFx1MDYyM1x1'@; put 'MDYzNFx1MDY0N1x1MDYzMSIseToiXHUwNjMzXHUwNjQ2XHUwNjI5Iix5eToiJWQgXHUwNjMzXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJhIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNzcxMihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9ezE6Ilx1'@; put 'MDY2MSIsMjoiXHUwNjYyIiwzOiJcdTA2NjMiLDQ6Ilx1MDY2NCIsNToiXHUwNjY1Iiw2OiJcdTA2NjYiLDc6Ilx1MDY2NyIsODoiXHUwNjY4Iiw5OiJcdTA2NjkiLDA6Ilx1MDY2MCJ9LHM9eyJcdTA2NjEiOiIxIiwiXHUwNjYyIjoiMiIsIlx1MDY2MyI6IjMiLCJcdTA2NjQiOiI0IiwiXHUw'@; put 'NjY1IjoiNSIsIlx1MDY2NiI6IjYiLCJcdTA2NjciOiI3IiwiXHUwNjY4IjoiOCIsIlx1MDY2OSI6IjkiLCJcdTA2NjAiOiIwIn07eS5kZWZpbmVMb2NhbGUoImFyLXBzIix7bW9udGhzOiJcdTA2NDNcdTA2MjdcdTA2NDZcdTA2NDhcdTA2NDYgXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjI3XHUw'@; put 'NjQ2XHUwNjRhX1x1MDYzNFx1MDYyOFx1MDYyN1x1MDYzN19cdTA2MjJcdTA2MzBcdTA2MjdcdTA2MzFfXHUwNjQ2XHUwNjRhXHUwNjMzXHUwNjI3XHUwNjQ2X1x1MDYyM1x1MDY0YVx1MDY1MVx1MDYyN1x1MDYzMV9cdTA2MmRcdTA2MzJcdTA2NGFcdTA2MzFcdTA2MjdcdTA2NDZfXHUwNjJh'@; put 'XHUwNjQ1XHUwNjUxXHUwNjQ4XHUwNjMyX1x1MDYyMlx1MDYyOF9cdTA2MjNcdTA2NGFcdTA2NDRcdTA2NDhcdTA2NDRfXHUwNjJhXHUwNjM0XHUwNjMxXHUwNjRhIFx1MDYyN1x1MDY0NFx1MDYyM1x1MDY0OFx1MDY1MVx1MDY0NF9cdTA2MmFcdTA2MzRcdTA2MzFcdTA2NGFcdTA2NDYgXHUw'@; put 'NjI3XHUwNjQ0XHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhX1x1MDY0M1x1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0NiBcdTA2MjdcdTA2NDRcdTA2MjNcdTA2NDhcdTA2NTFcdTA2NDQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY0M1x1MDY2Ml9cdTA2MzRcdTA2MjhcdTA2MjdcdTA2Mzdf'@; put 'XHUwNjIyXHUwNjMwXHUwNjI3XHUwNjMxX1x1MDY0Nlx1MDY0YVx1MDYzM1x1MDYyN1x1MDY0Nl9cdTA2MjNcdTA2NGFcdTA2NTFcdTA2MjdcdTA2MzFfXHUwNjJkXHUwNjMyXHUwNjRhXHUwNjMxXHUwNjI3XHUwNjQ2X1x1MDYyYVx1MDY0NVx1MDY1MVx1MDY0OFx1MDYzMl9cdTA2MjJcdTA2'@; put 'MjhfXHUwNjIzXHUwNjRhXHUwNjQ0XHUwNjQ4XHUwNjQ0X1x1MDYyYVx1MDY2MV9cdTA2MmFcdTA2NjJfXHUwNjQzXHUwNjYxIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUw'@; put 'NjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1'@; put 'MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUw'@; put 'NjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19c'@; put 'dTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDpt'@; put 'bSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNXxcdTA2NDUvLGlzUE06ZnVuY3Rpb24odil7cmV0dXJuIlx1MDY0NSI9PT12fSxtZXJpZGllbTpmdW5jdGlvbih2LEMsdyl7cmV0dXJuIHY8MTI/Ilx1MDYzNSI6Ilx1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRh'@; put 'XHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjI3IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixu'@; put 'ZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQi'@; put 'LGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjQxXHUwNjRhICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6Ilx1'@; put 'MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsbToiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IixtbToiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIixoOiJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2Mjki'@; put 'LGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLGQ6Ilx1MDY0YVx1MDY0OFx1MDY0NSIsZGQ6IiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsTToiXHUwNjM0XHUwNjQ3XHUwNjMxIixNTToiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIix5OiJcdTA2MzNcdTA2'@; put 'NDZcdTA2MjkiLHl5OiIlZCBcdTA2MzNcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmEifSxwcmVwYXJzZTpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9bXHUwNjYzXHUwNjY0XHUwNjY1XHUwNjY2XHUwNjY3XHUwNjY4XHUwNjY5XHUwNjYwXS9nLGZ1bmN0aW9uKEMpe3JldHVybiBzW0Nd'@; put 'fSkuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKS5yZXBsYWNlKC9bXHUwNjYxXHUwNjYyXSg/IVtcdTA2MmFcdTA2NDNdKS9nLGZ1bmN0aW9uKEMpe3JldHVybiBzW0NdfSkuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0'@; put 'OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQyl7cmV0dXJuIGNbQ119KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oaCg5NzU4NikpfSw3ODI2MShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9'@; put 'ezE6Ilx1MDY2MSIsMjoiXHUwNjYyIiwzOiJcdTA2NjMiLDQ6Ilx1MDY2NCIsNToiXHUwNjY1Iiw2OiJcdTA2NjYiLDc6Ilx1MDY2NyIsODoiXHUwNjY4Iiw5OiJcdTA2NjkiLDA6Ilx1MDY2MCJ9LHM9eyJcdTA2NjEiOiIxIiwiXHUwNjYyIjoiMiIsIlx1MDY2MyI6IjMiLCJcdTA2NjQiOiI0'@; put 'IiwiXHUwNjY1IjoiNSIsIlx1MDY2NiI6IjYiLCJcdTA2NjciOiI3IiwiXHUwNjY4IjoiOCIsIlx1MDY2OSI6IjkiLCJcdTA2NjAiOiIwIn07eS5kZWZpbmVMb2NhbGUoImFyLXNhIix7bW9udGhzOiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUw'@; put 'NjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhfXHUwNjIz'@; put 'XHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYy'@; put 'OFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1'@; put 'MDYyN1x1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4X1x1MDYyM1x1MDYzYVx1MDYzM1x1MDYzN1x1MDYzM19cdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJh'@; put 'XHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVc'@; put 'dTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3'@; put 'XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1'@; put 'MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1'@; put 'MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJk'@; put 'ZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbih2KXtyZXR1cm4iXHUwNjQ1Ij09PXZ9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsQyx3KXtyZXR1cm4gdjwxMj8iXHUwNjM1IjoiXHUwNjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6'@; put 'IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYy'@; put 'N1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUw'@; put 'NjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1'@; put 'MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYz'@; put 'M1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdc'@; put 'dTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHByZXBhcnNlOmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2Njlc'@; put 'dTA2NjBdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQyl7cmV0dXJuIGNbQ119KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6'@; put 'MCxkb3k6Nn19KX0oaCg5NzU4NikpfSw1NjcwMyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImFyLXRuIix7bW9udGhzOiJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGFfXHUwNjQxXHUwNjRhXHUwNjQxXHUwNjMxXHUwNjRhX1x1MDY0NVx1'@; put 'MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyY1x1MDY0OFx1MDYyN1x1MDY0Nl9cdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjlfXHUwNjIzXHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDYyOFx1MDYy'@; put 'YVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjJjXHUw'@; put 'NjI3XHUwNjQ2XHUwNjQxXHUwNjRhX1x1MDY0MVx1MDY0YVx1MDY0MVx1MDYzMVx1MDY0YV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjQxXHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MmNcdTA2NDhcdTA2MjdcdTA2NDZfXHUwNjJjXHUwNjQ4'@; put 'XHUwNjRhXHUwNjQ0XHUwNjRhXHUwNjI5X1x1MDYyM1x1MDY0OFx1MDYyYV9cdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2'@; put 'NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3'@; put 'XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3Bs'@; put 'aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRh'@; put 'XHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0Rh'@; put 'dGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2'@; put 'NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRX'@; put 'ZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFz'@; put 'dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJi'@; put 'XHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6'@; put 'IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1'@; put 'MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDMzMTA4KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17MToiXHUwNjYxIiwyOiJcdTA2NjIiLDM6Ilx1MDY2MyIsNDoiXHUw'@; put 'NjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIsNzoiXHUwNjY3Iiw4OiJcdTA2NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0scz17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJcdTA2NjUiOiI1IiwiXHUwNjY2IjoiNiIsIlx1MDY2NyI6Ijci'@; put 'LCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIsIlx1MDY2MCI6IjAifSxBPWZ1bmN0aW9uKEwpe3JldHVybiAwPT09TD8wOjE9PT1MPzE6Mj09PUw/MjpMJTEwMD49MyYmTCUxMDA8PTEwPzM6TCUxMDA+PTExPzQ6NX0sdj17czpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUw'@; put 'NjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFc'@; put 'dTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5Il0sbTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJm'@; put 'XHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2'@; put 'MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5Il0saDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUw'@; put 'NjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQg'@; put 'XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5Il0sZDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjRhXHUwNjQ4XHUwNjQ1IiwiXHUwNjRhXHUwNjQ4XHUw'@; put 'NjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRiXHUwNjI3Iiwi'@; put 'JWQgXHUwNjRhXHUwNjQ4XHUwNjQ1Il0sTTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM0XHUwNjQ3XHUwNjMxIiwiXHUwNjM0XHUwNjQ3XHUwNjMxIFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2'@; put 'MzRcdTA2NDdcdTA2MzFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3IiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxIl0seTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM5XHUwNjI3XHUw'@; put 'NjQ1IiwiXHUwNjM5XHUwNjI3XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM5XHUwNjQ4XHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjM5'@; put 'XHUwNjI3XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1Il19LEM9ZnVuY3Rpb24oTCl7cmV0dXJuIGZ1bmN0aW9uKFIseCxVLEgpe3ZhciBWPUEoUiksTj12W0xdW0EoUildO3JldHVybiAyPT09ViYmKE49Tlt4PzA6MV0pLE4ucmVwbGFjZSgvJWQvaSxSKX19LHc9'@; put 'WyJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzEiLCJcdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzMiLCJcdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjdcdTA2NGFcdTA2NDgiLCJcdTA2'@; put 'NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDgiLCJcdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDgiLCJcdTA2MjNcdTA2M2FcdTA2MzNcdTA2MzdcdTA2MzMiLCJcdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2Mjhc'@; put 'dTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXTt5LmRlZmluZUxvY2FsZSgiYXIiLHttb250aHM6dyxtb250aHNTaG9ydDp3LHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRc'@; put 'dTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJl'@; put 'XHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9c'@; put 'dTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWlu'@; put 'OiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZ'@; put 'WVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKEwpe3JldHVybiJcdTA2NDUiPT09TH0sbWVyaWRpZW06ZnVuY3Rpb24oTCxSLHgpe3JldHVybiBMPDEyPyJc'@; put 'dTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBc'@; put 'dTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMz'@; put 'IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1l'@; put 'OntmdXR1cmU6Ilx1MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOkMoInMiKSxzczpDKCJzIiksbTpDKCJtIiksbW06QygibSIpLGg6QygiaCIpLGhoOkMoImgiKSxkOkMoImQiKSxkZDpDKCJkIiksTTpDKCJNIiksTU06QygiTSIpLHk6QygieSIp'@; put 'LHl5OkMoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oTCl7cmV0dXJuIEwucmVwbGFjZSgvW1x1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbihSKXtyZXR1cm4gc1tSXX0pLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9'@; put 'LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTCl7cmV0dXJuIEwucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihSKXtyZXR1cm4gY1tSXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oaCg5NzU4NikpfSw0NjUwOChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0'@; put 'cmljdCI7dmFyIGM9ezE6Ii1pbmNpIiw1OiItaW5jaSIsODoiLWluY2kiLDcwOiItaW5jaSIsODA6Ii1pbmNpIiwyOiItbmNpIiw3OiItbmNpIiwyMDoiLW5jaSIsNTA6Ii1uY2kiLDM6Ii1ceGZjbmNceGZjIiw0OiItXHhmY25jXHhmYyIsMTAwOiItXHhmY25jXHhmYyIsNjoiLW5jXHUwMTMx'@; put 'Iiw5OiItdW5jdSIsMTA6Ii11bmN1IiwzMDoiLXVuY3UiLDYwOiItXHUwMTMxbmNcdTAxMzEiLDkwOiItXHUwMTMxbmNcdTAxMzEifTt5LmRlZmluZUxvY2FsZSgiYXoiLHttb250aHM6InlhbnZhcl9mZXZyYWxfbWFydF9hcHJlbF9tYXlfaXl1bl9peXVsX2F2cXVzdF9zZW50eWFicl9va3R5'@; put 'YWJyX25veWFicl9kZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Inlhbl9mZXZfbWFyX2Fwcl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJCYXphcl9CYXphciBlcnRcdTAyNTlzaV9ceGM3XHUwMjU5clx1MDE1Zlx1MDI1OW5iXHUw'@; put 'MjU5IGF4XHUwMTVmYW1cdTAxMzFfXHhjN1x1MDI1OXJcdTAxNWZcdTAyNTluYlx1MDI1OV9DXHhmY21cdTAyNTkgYXhcdTAxNWZhbVx1MDEzMV9DXHhmY21cdTAyNTlfXHUwMTVlXHUwMjU5bmJcdTAyNTkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQmF6X0J6RV9ceGM3QXhfXHhjN1x1'@; put 'MDI1OXJfQ0F4X0NceGZjbV9cdTAxNWVcdTAyNTluIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJCel9CRV9ceGM3QV9ceGM3XHUwMjU5X0NBX0NceGZjX1x1MDE1ZVx1MDI1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRT'@; put 'OiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnXHhmY24gc2FhdF0gTFQiLG5leHREYXk6IltzYWJhaCBzYWF0XSBMVCIs'@; put 'bmV4dFdlZWs6IltnXHUwMjU5bFx1MDI1OW4gaFx1MDI1OWZ0XHUwMjU5XSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2RceGZjblx1MDI1OW5dIExUIixsYXN0V2VlazoiW2tlXHhlN1x1MDI1OW4gaFx1MDI1OWZ0XHUwMjU5XSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxh'@; put 'dGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVzIFx1MDI1OXZ2XHUwMjU5bCIsczoiYmlyIG5lXHhlN1x1MDI1OSBzYW5peVx1MDI1OSIsc3M6IiVkIHNhbml5XHUwMjU5IixtOiJiaXIgZFx1MDI1OXFpcVx1MDI1OSIsbW06IiVkIGRcdTAyNTlxaXFcdTAyNTkiLGg6ImJpciBz'@; put 'YWF0IixoaDoiJWQgc2FhdCIsZDoiYmlyIGdceGZjbiIsZGQ6IiVkIGdceGZjbiIsTToiYmlyIGF5IixNTToiJWQgYXkiLHk6ImJpciBpbCIseXk6IiVkIGlsIn0sbWVyaWRpZW1QYXJzZTovZ2VjXHUwMjU5fHNcdTAyNTloXHUwMjU5cnxnXHhmY25kXHhmY3p8YXhcdTAxNWZhbS8saXNQTTpm'@; put 'dW5jdGlvbihBKXtyZXR1cm4vXihnXHhmY25kXHhmY3p8YXhcdTAxNWZhbSkkLy50ZXN0KEEpfSxtZXJpZGllbTpmdW5jdGlvbihBLHYsQyl7cmV0dXJuIEE8ND8iZ2VjXHUwMjU5IjpBPDEyPyJzXHUwMjU5aFx1MDI1OXIiOkE8MTc/ImdceGZjbmRceGZjeiI6ImF4XHUwMTVmYW0ifSxkYXlP'@; put 'Zk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTAxMzFuY1x1MDEzMXxpbmNpfG5jaXxceGZjbmNceGZjfG5jXHUwMTMxfHVuY3UpLyxvcmRpbmFsOmZ1bmN0aW9uKEEpe2lmKDA9PT1BKXJldHVybiBBKyItXHUwMTMxbmNcdTAxMzEiO3ZhciB2PUElMTA7cmV0dXJuIEErKGNbdl18fGNb'@; put 'QSUxMDAtdl18fGNbQT49MTAwPzEwMDpudWxsXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDE2NzY2KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKHYsQyx3KXtyZXR1cm4ibSI9PT13P0M/Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1'@; put 'MDQ1Nlx1MDQzZFx1MDQzMCI6Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0MyI6ImgiPT09dz9DPyJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0MzAiOiJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0NDMiOnYr'@; put 'IiAiK2Z1bmN0aW9uIGModixDKXt2YXIgdz12LnNwbGl0KCJfIik7cmV0dXJuIEMlMTA9PTEmJkMlMTAwIT0xMT93WzBdOkMlMTA+PTImJkMlMTA8PTQmJihDJTEwMDwxMHx8QyUxMDA+PTIwKT93WzFdOndbMl19KHtzczpDPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRc'@; put 'dTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0'@; put 'MzRcdTA0NGJfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTpDPyJcdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0MzBfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDRiX1x1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1'@; put 'MDQ1Nlx1MDQzZCI6Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0M19cdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkIixoaDpDPyJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0'@; put 'MzdcdTA0NTZcdTA0M2RcdTA0MzBfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkXHUwNDRiX1x1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZCI6Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0MzBcdTA0MzRc'@; put 'dTA0MzdcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkIixkZDoiXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0MzdcdTA0NTFcdTA0M2QiLE1NOiJcdTA0M2NcdTA0MzVcdTA0NDFc'@; put 'dTA0NGZcdTA0NDZfXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDRiX1x1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQzMFx1MDQ1ZSIseXk6Ilx1MDQzM1x1MDQzZVx1MDQzNF9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDNl'@; put 'XHUwNDVlIn1bd10sK3YpfXkuZGVmaW5lTG9jYWxlKCJiZSIse21vbnRoczp7Zm9ybWF0OiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDMwXHUwNDMzXHUwNDMwX1x1MDQ0MVx1MDQzMFx1MDQzYVx1MDQzMFx1'@; put 'MDQzMlx1MDQ1Nlx1MDQzYVx1MDQzMF9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FcdTA0MzBfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDVlXHUwNDNkXHUwNDRmX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Zl9cdTA0M2Jc'@; put 'dTA0NTZcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDM2XHUwNDNkXHUwNDU2XHUwNDVlXHUwNDNkXHUwNDRmX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQzZFx1MDQ0Zl9cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0NGJcdTA0NDdcdTA0M2RcdTA0NTZc'@; put 'dTA0M2FcdTA0MzBfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDMwXHUwNDNmXHUwNDMwXHUwNDM0XHUwNDMwX1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNlx1MDQzZFx1MDQ0ZiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRcdTA0MzdcdTA0MzVc'@; put 'dTA0M2RcdTA0NGNfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDRiX1x1MDQ0MVx1MDQzMFx1MDQzYVx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzYV9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM1XHUwNDNk'@; put 'XHUwNDRjX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2JcdTA0NTZcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM2XHUwNDNkXHUwNDU2XHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQz'@; put 'NVx1MDQzZFx1MDQ0Y19cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0NGJcdTA0NDdcdTA0M2RcdTA0NTZcdTA0M2FfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDMwXHUwNDNmXHUwNDMwXHUwNDM0X1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNlx1MDQzMFx1MDQzZFx1MDQ0'@; put 'YyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzNF9cdTA0M2JcdTA0NGVcdTA0NDJfXHUwNDQxXHUwNDMwXHUwNDNhX1x1MDQzYVx1MDQ0MFx1MDQzMFx1MDQ0MV9cdTA0NDJcdTA0NDBcdTA0MzBcdTA0MzJfXHUwNDQ3XHUwNDRkXHUwNDQwXHUwNDMy'@; put 'X1x1MDQzYlx1MDQ1Nlx1MDQzZl9cdTA0MzZcdTA0M2RcdTA0NTZcdTA0MzJfXHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzYVx1MDQzMFx1MDQ0MVx1MDQ0Ml9cdTA0M2JcdTA0NTZcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDNkXHUwNDM1XHUwNDM2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3Jt'@; put 'YXQ6Ilx1MDQzZFx1MDQ0Zlx1MDQzNFx1MDQzN1x1MDQzNVx1MDQzYlx1MDQ0ZV9cdTA0M2ZcdTA0MzBcdTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0MzBcdTA0M2FfXHUwNDMwXHUwNDVlXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDMwXHUwNDNhX1x1MDQ0MVx1MDQzNVx1'@; put 'MDQ0MFx1MDQzMFx1MDQzNFx1MDQ0M19cdTA0NDdcdTA0MzBcdTA0NDZcdTA0MzJcdTA0MzVcdTA0NDBfXHUwNDNmXHUwNDRmXHUwNDQyXHUwNDNkXHUwNDU2XHUwNDQ2XHUwNDQzX1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQ0MyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJc'@; put 'dTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDMwXHUwNDNkXHUwNDRmXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNiXHUwNDMwXHUwNDNhX1x1MDQzMFx1MDQ1ZVx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBc'@; put 'dTA0MzBcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDMwXHUwNDQ2XHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQzMF9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9bXHUw'@; put 'NDIzXHUwNDQzXHUwNDVlXSA/KD86XHUwNDNjXHUwNDU2XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDQzXHUwNDRlfFx1MDQzZFx1MDQzMFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzZlx1MDQzZFx1MDQ0M1x1MDQ0ZSk/ID9cXSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNF9cdTA0'@; put 'M2ZcdTA0M2RfXHUwNDMwXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDZfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM0X1x1MDQzZlx1MDQzZF9cdTA0MzBcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Nl9c'@; put 'dTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDQzMy4sIEhIOm1tIixMTExMOiJkZGRkLCBE'@; put 'IE1NTU0gWVlZWSBcdTA0MzMuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDIxXHUwNDUxXHUwNDNkXHUwNDNkXHUwNDRmIFx1MDQ1ZV0gTFQiLG5leHREYXk6IltcdTA0MTdcdTA0MzBcdTA0NWVcdTA0NDJcdTA0NDBcdTA0MzAgXHUwNDVlXSBMVCIsbGFzdERheToiW1x1MDQy'@; put 'M1x1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCBcdTA0NWVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJbXHUwNDIzXSBkZGRkIFtcdTA0NWVdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVy'@; put 'biJbXHUwNDIzIFx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0M1x1MDQ0ZV0gZGRkZCBbXHUwNDVlXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIltcdTA0MjMgXHUwNDNjXHUwNDU2XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDRiXSBkZGRkIFtcdTA0NWVdIExUIn19'@; put 'LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzZlx1MDQ0MFx1MDQzMFx1MDQzNyAlcyIscGFzdDoiJXMgXHUwNDQyXHUwNDMwXHUwNDNjXHUwNDQzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0MzBcdTA0M2JcdTA0NGNcdTA0M2FcdTA0NTYgXHUwNDQxXHUwNDM1'@; put 'XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtOnMsbW06cyxoOnMsaGg6cyxkOiJcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGMiLGRkOnMsTToiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2IixNTTpzLHk6Ilx1MDQzM1x1MDQzZVx1MDQzNCIseXk6c30sbWVyaWRpZW1QYXJz'@; put 'ZTovXHUwNDNkXHUwNDNlXHUwNDQ3XHUwNDRifFx1MDQ0MFx1MDQzMFx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0YnxcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUwNDMwLyxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybi9eKFx1MDQzNFx1MDQzZFx1MDQ0'@; put 'ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzBcdTA0NDBcdTA0MzApJC8udGVzdCh2KX0sbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDQ/Ilx1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ0YiI6djwxMj8iXHUwNDQwXHUwNDMwXHUwNDNkXHUwNDU2XHUwNDQ2XHUwNDRiIjp2PDE3PyJc'@; put 'dTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzBcdTA0NDBcdTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NTZ8XHUwNDRifFx1MDQzM1x1MDQzMCkvLG9yZGluYWw6ZnVuY3Rpb24odixDKXtzd2l0Y2goQyl7Y2FzZSJNIjpjYXNl'@; put 'ImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIHYlMTAhPTImJnYlMTAhPTN8fHYlMTAwPT0xMnx8diUxMDA9PTEzP3YrIi1cdTA0NGIiOnYrIi1cdTA0NTYiO2Nhc2UiRCI6cmV0dXJuIHYrIi1cdTA0MzNcdTA0MzAiO2RlZmF1bHQ6cmV0dXJuIHZ9fSx3ZWVrOntkb3c6MSxk'@; put 'b3k6N319KX0oaCg5NzU4NikpfSwyODU2NChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImJnIix7bW9udGhzOiJcdTA0NGZcdTA0M2RcdTA0NDNcdTA0MzBcdTA0NDBcdTA0MzhfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDQzXHUwNDMwXHUw'@; put 'NDQwXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzhcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQ0ZVx1MDQzZFx1MDQzOF9cdTA0NGVcdTA0M2JcdTA0MzhfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0'@; put 'MVx1MDQzNVx1MDQzZlx1MDQ0Mlx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0M2VcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDNkXHUwNDNlXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQz'@; put 'NVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDRmXHUwNDNkXHUwNDQzX1x1MDQ0NFx1MDQzNVx1MDQzMl9cdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDMwXHUwNDNmXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0NGVcdTA0M2RcdTA0Mzhf'@; put 'XHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM19cdTA0NDFcdTA0MzVcdTA0M2ZfXHUwNDNlXHUwNDNhXHUwNDQyX1x1MDQzZFx1MDQzZVx1MDQzNV9cdTA0MzRcdTA0MzVcdTA0M2EiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQz'@; put 'Ylx1MDQ0Zl9cdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQ0MVx1MDQ0MFx1MDQ0Zlx1MDQzNFx1MDQzMF9cdTA0NDdcdTA0MzVcdTA0NDJcdTA0'@; put 'MzJcdTA0NGFcdTA0NDBcdTA0NDJcdTA0NGFcdTA0M2FfXHUwNDNmXHUwNDM1XHUwNDQyXHUwNDRhXHUwNDNhX1x1MDQ0MVx1MDQ0YVx1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzVcdTA0MzRfXHUwNDNmXHUwNDNlXHUwNDNk'@; put 'X1x1MDQzMlx1MDQ0Mlx1MDQzZV9cdTA0NDFcdTA0NDBcdTA0NGZfXHUwNDQ3XHUwNDM1XHUwNDQyX1x1MDQzZlx1MDQzNVx1MDQ0Ml9cdTA0NDFcdTA0NGFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0'@; put 'MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwg'@; put 'RCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDE0XHUwNDNkXHUwNDM1XHUwNDQxIFx1MDQzMl0gTFQiLG5leHREYXk6IltcdTA0MjNcdTA0NDJcdTA0NDBcdTA0MzUgXHUwNDMyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDQzMl0gTFQiLGxhc3REYXk6IltcdTA0'@; put 'MTJcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAgXHUwNDMyXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0MzBcdTA0M2JcdTA0MzBcdTA0NDJcdTA0MzBdIGRkZGQgW1x1'@; put 'MDQzMl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW1x1MDQxY1x1MDQzOFx1MDQzZFx1MDQzMFx1MDQzYlx1MDQzOFx1MDQ0Zl0gZGRkZCBbXHUwNDMyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0NDFcdTA0M2JcdTA0MzVc'@; put 'dTA0MzQgJXMiLHBhc3Q6Ilx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzOCAlcyIsczoiXHUwNDNkXHUwNDRmXHUwNDNhXHUwNDNlXHUwNDNiXHUwNDNhXHUwNDNlIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIsc3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQz'@; put 'YVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIsbToiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDM4IixoOiJcdTA0NDdcdTA0MzBcdTA0NDEiLGhoOiIlZCBcdTA0NDdcdTA0MzBcdTA0NDFcdTA0'@; put 'MzAiLGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZCIsZGQ6IiVkIFx1MDQzNFx1MDQzNVx1MDQzZFx1MDQzMCIsdzoiXHUwNDQxXHUwNDM1XHUwNDM0XHUwNDNjXHUwNDM4XHUwNDQ2XHUwNDMwIix3dzoiJWQgXHUwNDQxXHUwNDM1XHUwNDM0XHUwNDNjXHUwNDM4XHUwNDQ2XHUwNDM4IixNOiJcdTA0'@; put 'M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDYiLE1NOiIlZCBcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDZcdTA0MzAiLHk6Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCIseXk6IiVkIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzOCJ9LGRheU9m'@; put 'TW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQzNVx1MDQzMnxcdTA0MzVcdTA0M2R8XHUwNDQyXHUwNDM4fFx1MDQzMlx1MDQzOHxcdTA0NDBcdTA0Mzh8XHUwNDNjXHUwNDM4KS8sb3JkaW5hbDpmdW5jdGlvbihzKXt2YXIgQT1zJTEwLHY9cyUxMDA7cmV0dXJuIDA9PT1zP3MrIi1c'@; put 'dTA0MzVcdTA0MzIiOjA9PT12P3MrIi1cdTA0MzVcdTA0M2QiOnY+MTAmJnY8MjA/cysiLVx1MDQ0Mlx1MDQzOCI6MT09PUE/cysiLVx1MDQzMlx1MDQzOCI6Mj09PUE/cysiLVx1MDQ0MFx1MDQzOCI6Nz09PUF8fDg9PT1BP3MrIi1cdTA0M2NcdTA0MzgiOnMrIi1cdTA0NDJcdTA0MzgifSx3'@; put 'ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw5NzQ2MihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImJtIix7bW9udGhzOiJaYW53dXlla2Fsb19GZXd1cnV5ZWthbG9fTWFyaXNpa2Fsb19Bd2lyaWxpa2Fsb19NXHUwMjVia2Fsb19adXdc'@; put 'dTAyNWJua2Fsb19adWx1eWVrYWxvX1V0aWthbG9fU1x1MDI1YnRhbmJ1cnVrYWxvX1x1MDI1NGt1dFx1MDI1NGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2FsbyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiWmFuX0Zld19NYXJfQXdpX01cdTAyNWJfWnV3X1p1bF9VdGlfU1x1'@; put 'MDI1YnRfXHUwMjU0a3VfTm93X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiS2FyaV9OdFx1MDI1Ym5cdTAyNWJuX1RhcmF0YV9BcmFiYV9BbGFtaXNhX0p1bWFfU2liaXJpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikthcl9OdFx1MDI1Yl9UYXJfQXJhX0FsYV9KdW1fU2liIi5zcGxp'@; put 'dCgiXyIpLHdlZWtkYXlzTWluOiJLYV9OdF9UYV9Bcl9BbF9KdV9TaSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIixMTEw6Ik1NTU0gW3RpbGVdIEQgW3Nhbl0g'@; put 'WVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIixMTExMOiJkZGRkIE1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltCaSBsXHUwMjViclx1MDI1Yl0gTFQiLG5leHREYXk6IltTaW5pIGxcdTAyNWJyXHUwMjViXSBM'@; put 'VCIsbmV4dFdlZWs6ImRkZGQgW2RvbiBsXHUwMjViclx1MDI1Yl0gTFQiLGxhc3REYXk6IltLdW51IGxcdTAyNWJyXHUwMjViXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3RcdTAyNWJtXHUwMjVibmVuIGxcdTAyNWJyXHUwMjViXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVy'@; put 'ZToiJXMga1x1MDI1NG5cdTAyNTQiLHBhc3Q6ImEgYlx1MDI1YiAlcyBiXHUwMjU0IixzOiJzYW5nYSBkYW1hIGRhbWEiLHNzOiJzZWtvbmRpICVkIixtOiJtaW5pdGkga2VsZW4iLG1tOiJtaW5pdGkgJWQiLGg6ImxcdTAyNWJyXHUwMjViIGtlbGVuIixoaDoibFx1MDI1YnJcdTAyNWIgJWQi'@; put 'LGQ6InRpbGUga2VsZW4iLGRkOiJ0aWxlICVkIixNOiJrYWxvIGtlbGVuIixNTToia2FsbyAlZCIseToic2FuIGtlbGVuIix5eToic2FuICVkIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNDM0MzgoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXsx'@; put 'OiJcdTA5ZTciLDI6Ilx1MDllOCIsMzoiXHUwOWU5Iiw0OiJcdTA5ZWEiLDU6Ilx1MDllYiIsNjoiXHUwOWVjIiw3OiJcdTA5ZWQiLDg6Ilx1MDllZSIsOToiXHUwOWVmIiwwOiJcdTA5ZTYifSxzPXsiXHUwOWU3IjoiMSIsIlx1MDllOCI6IjIiLCJcdTA5ZTkiOiIzIiwiXHUwOWVhIjoiNCIs'@; put 'Ilx1MDllYiI6IjUiLCJcdTA5ZWMiOiI2IiwiXHUwOWVkIjoiNyIsIlx1MDllZSI6IjgiLCJcdTA5ZWYiOiI5IiwiXHUwOWU2IjoiMCJ9O3kuZGVmaW5lTG9jYWxlKCJibi1iZCIse21vbnRoczoiXHUwOTljXHUwOWJlXHUwOWE4XHUwOWMxXHUwOWRmXHUwOWJlXHUwOWIwXHUwOWJmX1x1MDlh'@; put 'Ylx1MDljN1x1MDlhY1x1MDljZFx1MDliMFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWVcdTA5YmVcdTA5YjBcdTA5Y2RcdTA5OWFfXHUwOThmXHUwOWFhXHUwOWNkXHUwOWIwXHUwOWJmXHUwOWIyX1x1MDlhZVx1MDljN19cdTA5OWNcdTA5YzFcdTA5YThfXHUwOTljXHUw'@; put 'OWMxXHUwOWIyXHUwOWJlXHUwOTg3X1x1MDk4Nlx1MDk5N1x1MDliOFx1MDljZFx1MDk5Zl9cdTA5YjhcdTA5YzdcdTA5YWFcdTA5Y2RcdTA5OWZcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOTg1XHUwOTk1XHUwOWNkXHUwOTlmXHUwOWNiXHUwOWFjXHUwOWIwX1x1MDlhOFx1'@; put 'MDlhZFx1MDljN1x1MDlhZVx1MDljZFx1MDlhY1x1MDliMF9cdTA5YTFcdTA5YmZcdTA5YjhcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMV9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBc'@; put 'dTA5YzFfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5YjhcdTA5Y2RcdTA5'@; put 'OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYl9cdTA5YThcdTA5YWRcdTA5YzdfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5YjBcdTA5YWNcdTA5YmZcdTA5YWNcdTA5YmVcdTA5'@; put 'YjBfXHUwOWI4XHUwOWNiXHUwOWFlXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWNcdTA5YzFcdTA5YTdcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFjXHUwOWMzXHUwOWI5XHUwOWI4XHUwOWNkXHUwOWFhXHUw'@; put 'OWE0XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMFx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOWIwXHUwOWFjXHUwOWJmX1x1MDli'@; put 'OFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZl9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5z'@; put 'cGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5YjBcdTA5YWNcdTA5YmZfXHUwOWI4XHUwOWNiXHUwOWFlX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMl9cdTA5YWNcdTA5YzFcdTA5YTdfXHUwOWFjXHUwOWMzXHUwOWI5X1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMF9cdTA5'@; put 'YjZcdTA5YThcdTA5YmYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIixMVFM6IkEgaDptbTpzcyBcdTA5YjhcdTA5YWVcdTA5ZGYiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1t'@; put 'IFx1MDliOFx1MDlhZVx1MDlkZiIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDk4Nlx1MDk5Y10gTFQiLG5leHREYXk6IltcdTA5ODZcdTA5OTdcdTA5YmVcdTA5YWVcdTA5YzBcdTA5OTVcdTA5YmVc'@; put 'dTA5YjJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5OTdcdTA5YTRcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixsYXN0V2VlazoiW1x1MDk5N1x1MDlhNF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDlhYVx1MDliMFx1'@; put 'MDljNyIscGFzdDoiJXMgXHUwOTg2XHUwOTk3XHUwOWM3IixzOiJcdTA5OTVcdTA5ZGZcdTA5YzdcdTA5OTUgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixzczoiJWQgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixtOiJcdTA5'@; put 'OGZcdTA5OTUgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixtbToiJWQgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixoOiJcdTA5OGZcdTA5OTUgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJlIixoaDoiJWQgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJl'@; put 'IixkOiJcdTA5OGZcdTA5OTUgXHUwOWE2XHUwOWJmXHUwOWE4IixkZDoiJWQgXHUwOWE2XHUwOWJmXHUwOWE4IixNOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJlXHUwOWI4IixNTToiJWQgXHUwOWFlXHUwOWJlXHUwOWI4Iix5OiJcdTA5OGZcdTA5OTUgXHUwOWFjXHUwOTliXHUwOWIwIix5'@; put 'eToiJWQgXHUwOWFjXHUwOTliXHUwOWIwIn0scHJlcGFyc2U6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvW1x1MDllN1x1MDllOFx1MDllOVx1MDllYVx1MDllYlx1MDllY1x1MDllZFx1MDllZVx1MDllZlx1MDllNl0vZyxmdW5jdGlvbihDKXtyZXR1cm4gc1tDXX0pfSxwb3N0Zm9y'@; put 'bWF0OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQyl7cmV0dXJuIGNbQ119KX0sbWVyaWRpZW1QYXJzZTovXHUwOWIwXHUwOWJlXHUwOWE0fFx1MDlhZFx1MDljYlx1MDliMHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUw'@; put 'OWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmV8XHUwOWIwXHUwOWJlXHUwOWE0LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24odixDKXtyZXR1cm4gMTI9PT12JiYodj0wKSwiXHUwOWIwXHUwOWJl'@; put 'XHUwOWE0Ij09PUM/djw0P3Y6disxMjoiXHUwOWFkXHUwOWNiXHUwOWIwIj09PUN8fCJcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjIiPT09Qz92OiJcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjAiPT09Qz92Pj0zP3Y6disxMjoiXHUwOWFjXHUwOWJmXHUwOTk1XHUwOWJlXHUwOWIyIj09'@; put 'PUN8fCJcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmUiPT09Qz92KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDQ/Ilx1MDliMFx1MDliZVx1MDlhNCI6djw2PyJcdTA5YWRcdTA5Y2JcdTA5YjAiOnY8MTI/Ilx1MDliOFx1MDk5'@; put 'NVx1MDliZVx1MDliMiI6djwxNT8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjp2PDE4PyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOnY8MjA/Ilx1MDliOFx1MDlhOFx1MDljZFx1MDlhN1x1MDljZFx1MDlhZlx1MDliZSI6Ilx1MDliMFx1MDliZVx1MDlhNCJ9LHdl'@; put 'ZWs6e2RvdzowLGRveTo2fX0pfShoKDk3NTg2KSl9LDE3MTA3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17MToiXHUwOWU3IiwyOiJcdTA5ZTgiLDM6Ilx1MDllOSIsNDoiXHUwOWVhIiw1OiJcdTA5ZWIiLDY6Ilx1MDllYyIsNzoiXHUwOWVkIiw4OiJcdTA5ZWUi'@; put 'LDk6Ilx1MDllZiIsMDoiXHUwOWU2In0scz17Ilx1MDllNyI6IjEiLCJcdTA5ZTgiOiIyIiwiXHUwOWU5IjoiMyIsIlx1MDllYSI6IjQiLCJcdTA5ZWIiOiI1IiwiXHUwOWVjIjoiNiIsIlx1MDllZCI6IjciLCJcdTA5ZWUiOiI4IiwiXHUwOWVmIjoiOSIsIlx1MDllNiI6IjAifTt5LmRlZmlu'@; put 'ZUxvY2FsZSgiYm4iLHttb250aHM6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFcdTA5ZGZcdTA5YmVcdTA5YjBcdTA5YmZfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1'@; put 'MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5YjhcdTA5Y2RcdTA5OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmXHUwOWM3'@; put 'XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYlx1MDlhY1x1MDliMF9cdTA5YThcdTA5YWRcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwIi5zcGxp'@; put 'dCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5OWNcdTA5YmVcdTA5YThcdTA5YzFfXHUwOWFiXHUwOWM3XHUwOWFjXHUwOWNkXHUwOWIwXHUwOWMxX1x1MDlhZVx1MDliZVx1MDliMFx1MDljZFx1MDk5YV9cdTA5OGZcdTA5YWFcdTA5Y2RcdTA5YjBcdTA5YmZcdTA5YjJfXHUwOWFlXHUwOWM3X1x1'@; put 'MDk5Y1x1MDljMVx1MDlhOF9cdTA5OWNcdTA5YzFcdTA5YjJcdTA5YmVcdTA5ODdfXHUwOTg2XHUwOTk3XHUwOWI4XHUwOWNkXHUwOTlmX1x1MDliOFx1MDljN1x1MDlhYVx1MDljZFx1MDk5Zl9cdTA5ODVcdTA5OTVcdTA5Y2RcdTA5OWZcdTA5Y2JfXHUwOWE4XHUwOWFkXHUwOWM3X1x1MDlh'@; put 'MVx1MDliZlx1MDliOFx1MDljNyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwOWIwXHUwOWFjXHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliOFx1MDljYlx1MDlhZVx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJcdTA5YWNcdTA5YmVcdTA5YjBf'@; put 'XHUwOWFjXHUwOWMxXHUwOWE3XHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI2XHUwOWE4'@; put 'XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDliMFx1MDlhY1x1MDliZl9cdTA5YjhcdTA5Y2JcdTA5YWVfXHUwOWFlXHUwOTk5XHUwOWNkXHUwOTk3XHUwOWIyX1x1MDlhY1x1MDljMVx1MDlhN19cdTA5YWNcdTA5YzNcdTA5YjlcdTA5Yjhc'@; put 'dTA5Y2RcdTA5YWFcdTA5YTRcdTA5YmZfXHUwOWI2XHUwOWMxXHUwOTk1XHUwOWNkXHUwOWIwX1x1MDliNlx1MDlhOFx1MDliZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOWIwXHUwOWFjXHUwOWJmX1x1MDliOFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5'@; put 'YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOV9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiIsTFRTOiJBIGg6bW06c3Mg'@; put 'XHUwOWI4XHUwOWFlXHUwOWRmIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIn0sY2FsZW5kYXI6e3NhbWVE'@; put 'YXk6IltcdTA5ODZcdTA5OWNdIExUIixuZXh0RGF5OiJbXHUwOTg2XHUwOTk3XHUwOWJlXHUwOWFlXHUwOWMwXHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwOTk3XHUwOWE0XHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbGFzdFdlZWs6Iltc'@; put 'dTA5OTdcdTA5YTRdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA5YWFcdTA5YjBcdTA5YzciLHBhc3Q6IiVzIFx1MDk4Nlx1MDk5N1x1MDljNyIsczoiXHUwOTk1XHUwOWRmXHUwOWM3XHUwOTk1IFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1'@; put 'MDlhOFx1MDljZFx1MDlhMSIsc3M6IiVkIFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1MDlhOFx1MDljZFx1MDlhMSIsbToiXHUwOThmXHUwOTk1IFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsbW06IiVkIFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsaDoiXHUwOThm'@; put 'XHUwOTk1IFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsaGg6IiVkIFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsZDoiXHUwOThmXHUwOTk1IFx1MDlhNlx1MDliZlx1MDlhOCIsZGQ6IiVkIFx1MDlhNlx1MDliZlx1MDlhOCIsTToiXHUwOThmXHUwOTk1IFx1MDlhZVx1'@; put 'MDliZVx1MDliOCIsTU06IiVkIFx1MDlhZVx1MDliZVx1MDliOCIseToiXHUwOThmXHUwOTk1IFx1MDlhY1x1MDk5Ylx1MDliMCIseXk6IiVkIFx1MDlhY1x1MDk5Ylx1MDliMCJ9LHByZXBhcnNlOmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1tcdTA5ZTdcdTA5ZThcdTA5ZTlcdTA5'@; put 'ZWFcdTA5ZWJcdTA5ZWNcdTA5ZWRcdTA5ZWVcdTA5ZWZcdTA5ZTZdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEMpe3JldHVybiBjW0NdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDliMFx1'@; put 'MDliZVx1MDlhNHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjBcdTA5YmVcdTA5YTQvLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LEMpe3JldHVybiAxMj09PXYmJih2PTAp'@; put 'LCJcdTA5YjBcdTA5YmVcdTA5YTQiPT09QyYmdj49NHx8Ilx1MDlhNlx1MDljMVx1MDlhYVx1MDljMVx1MDliMCI9PT1DJiZ2PDV8fCJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiPT09Qz92KzEyOnZ9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsQyx3KXtyZXR1cm4gdjw0PyJcdTA5YjBc'@; put 'dTA5YmVcdTA5YTQiOnY8MTA/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI6djwxNz8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjp2PDIwPyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOiJcdTA5YjBcdTA5YmVcdTA5YTQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0o'@; put 'aCg5NzU4NikpfSw5MDA0KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17MToiXHUwZjIxIiwyOiJcdTBmMjIiLDM6Ilx1MGYyMyIsNDoiXHUwZjI0Iiw1OiJcdTBmMjUiLDY6Ilx1MGYyNiIsNzoiXHUwZjI3Iiw4OiJcdTBmMjgiLDk6Ilx1MGYyOSIsMDoiXHUwZjIw'@; put 'In0scz17Ilx1MGYyMSI6IjEiLCJcdTBmMjIiOiIyIiwiXHUwZjIzIjoiMyIsIlx1MGYyNCI6IjQiLCJcdTBmMjUiOiI1IiwiXHUwZjI2IjoiNiIsIlx1MGYyNyI6IjciLCJcdTBmMjgiOiI4IiwiXHUwZjI5IjoiOSIsIlx1MGYyMCI6IjAifTt5LmRlZmluZUxvY2FsZSgiYm8iLHttb250aHM6'@; put 'Ilx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGY0NFx1MGYwYlx1MGY1NFx1MGY3Y19cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNDJcdTBmNDlcdTBmNzJcdTBmNjZcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjQy'@; put 'XHUwZjY2XHUwZjc0XHUwZjU4XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY1ZVx1MGY3Mlx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNjNcdTBmOTRcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBi'@; put 'XHUwZjU2XHUwZjBiXHUwZjUxXHUwZmIyXHUwZjc0XHUwZjQyXHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNjJcdTBmOTJc'@; put 'dTBmYjFcdTBmNTFcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjUxXHUwZjQyXHUwZjc0XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY0NVx1MGY3NFx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJc'@; put 'dTBmNTZcdTBmMGJcdTBmNTZcdTBmNDVcdTBmNzRcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjQ1XHUwZjc0XHUwZjBiXHUwZjQyXHUwZjQ5XHUwZjcyXHUwZjY2XHUwZjBiXHUwZjU0Ii5z'@; put 'cGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBmNWZcdTBmYjNcdTBmMGIxX1x1MGY1Zlx1MGZiM1x1MGYwYjJfXHUwZjVmXHUwZmIzXHUwZjBiM19cdTBmNWZcdTBmYjNcdTBmMGI0X1x1MGY1Zlx1MGZiM1x1MGYwYjVfXHUwZjVmXHUwZmIzXHUwZjBiNl9cdTBmNWZcdTBmYjNcdTBmMGI3X1x1'@; put 'MGY1Zlx1MGZiM1x1MGYwYjhfXHUwZjVmXHUwZmIzXHUwZjBiOV9cdTBmNWZcdTBmYjNcdTBmMGIxMF9cdTBmNWZcdTBmYjNcdTBmMGIxMV9cdTBmNWZcdTBmYjNcdTBmMGIxMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MGY1Zlx1MGZiM1x1MGYwYlxkezEsMn0pLyxtb250'@; put 'aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNDlcdTBmNzJcdTBmMGJcdTBmNThcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1'@; put 'OFx1MGY3Mlx1MGY0Mlx1MGYwYlx1MGY1MVx1MGY1OFx1MGY2Mlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNjNcdTBmYjdcdTBmNDJcdTBmMGJcdTBmNTRcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjU1XHUwZjc0XHUwZjYyXHUwZjBiXHUwZjU2XHUwZjc0'@; put 'X1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1NFx1MGYwYlx1MGY2Nlx1MGY0NFx1MGY2Nlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNjZcdTBmYTRcdTBmN2FcdTBmNTNcdTBmMGJcdTBmNTRcdTBmMGIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZjQ5XHUw'@; put 'ZjcyXHUwZjBiXHUwZjU4XHUwZjBiX1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYl9cdTBmNThcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTFcdTBmNThcdTBmNjJcdTBmMGJfXHUwZjYzXHUwZmI3XHUwZjQyXHUwZjBiXHUwZjU0XHUwZjBiX1x1MGY1NVx1MGY3NFx1MGY2Mlx1MGYwYlx1'@; put 'MGY1Nlx1MGY3NF9cdTBmNTRcdTBmMGJcdTBmNjZcdTBmNDRcdTBmNjZcdTBmMGJfXHUwZjY2XHUwZmE0XHUwZjdhXHUwZjUzXHUwZjBiXHUwZjU0XHUwZjBiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBmNDlcdTBmNzJfXHUwZjVmXHUwZmIzX1x1MGY1OFx1MGY3Mlx1MGY0Ml9cdTBm'@; put 'NjNcdTBmYjdcdTBmNDJfXHUwZjU1XHUwZjc0XHUwZjYyX1x1MGY2Nlx1MGY0NFx1MGY2Nl9cdTBmNjZcdTBmYTRcdTBmN2FcdTBmNTMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVki'@; put 'LExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZjUxXHUwZjcyXHUwZjBiXHUwZjYyXHUwZjcyXHUwZjQ0XSBMVCIsbmV4dERheToiW1x1MGY2Nlx1MGY0NFx1MGYwYlx1MGY0OVx1MGY3Mlx1'@; put 'MGY1M10gTFQiLG5leHRXZWVrOiJbXHUwZjU2XHUwZjUxXHUwZjc0XHUwZjUzXHUwZjBiXHUwZjU1XHUwZmIyXHUwZjQyXHUwZjBiXHUwZjYyXHUwZjk3XHUwZjdhXHUwZjY2XHUwZjBiXHUwZjU4XSwgTFQiLGxhc3REYXk6IltcdTBmNDFcdTBmMGJcdTBmNjZcdTBmNDRdIExUIixsYXN0V2Vl'@; put 'azoiW1x1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NVx1MGZiMlx1MGY0Mlx1MGYwYlx1MGY1OFx1MGY1MFx1MGY2MFx1MGYwYlx1MGY1OF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGY2M1x1MGYwYiIscGFzdDoiJXMgXHUw'@; put 'ZjY2XHUwZjk0XHUwZjUzXHUwZjBiXHUwZjYzIixzOiJcdTBmNjNcdTBmNThcdTBmMGJcdTBmNjZcdTBmNDQiLHNzOiIlZCBcdTBmNjZcdTBmOTBcdTBmNjJcdTBmMGJcdTBmNDZcdTBmMGQiLG06Ilx1MGY2Nlx1MGY5MFx1MGY2Mlx1MGYwYlx1MGY1OFx1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3'@; put 'Mlx1MGY0MiIsbW06IiVkIFx1MGY2Nlx1MGY5MFx1MGY2Mlx1MGYwYlx1MGY1OCIsaDoiXHUwZjQ2XHUwZjc0XHUwZjBiXHUwZjVhXHUwZjdjXHUwZjUxXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIixoaDoiJWQgXHUwZjQ2XHUwZjc0XHUwZjBiXHUwZjVhXHUwZjdjXHUwZjUxIixk'@; put 'OiJcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLGRkOiIlZCBcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGIiLE06Ilx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIsTU06IiVkIFx1MGY1Zlx1MGZiM1x1'@; put 'MGYwYlx1MGY1NiIseToiXHUwZjYzXHUwZjdjXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIix5eToiJWQgXHUwZjYzXHUwZjdjIn0scHJlcGFyc2U6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvW1x1MGYyMVx1MGYyMlx1MGYyM1x1MGYyNFx1MGYyNVx1MGYyNlx1MGYyN1x1'@; put 'MGYyOFx1MGYyOVx1MGYyMF0vZyxmdW5jdGlvbihDKXtyZXR1cm4gc1tDXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQyl7cmV0dXJuIGNbQ119KX0sbWVyaWRpZW1QYXJzZTovXHUwZjU4XHUwZjVhXHUwZjUzXHUwZjBiXHUwZjU4'@; put 'XHUwZjdjfFx1MGY1ZVx1MGY3Y1x1MGY0Mlx1MGY2Nlx1MGYwYlx1MGY0MFx1MGY2NnxcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNzRcdTBmNDR8XHUwZjUxXHUwZjQyXHUwZjdjXHUwZjQ0XHUwZjBiXHUwZjUxXHUwZjQyfFx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1'@; put 'OFx1MGY3Yy8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHYsQyl7cmV0dXJuIDEyPT09diYmKHY9MCksIlx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyI9PT1DJiZ2Pj00fHwiXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0Ij09PUMmJnY8NXx8Ilx1'@; put 'MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MiI9PT1DP3YrMTI6dn0sbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDQ/Ilx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyI6djwxMD8iXHUwZjVlXHUwZjdjXHUwZjQyXHUwZjY2XHUwZjBi'@; put 'XHUwZjQwXHUwZjY2Ijp2PDE3PyJcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNzRcdTBmNDQiOnY8MjA/Ilx1MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MiI6Ilx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyJ9LHdlZWs6e2Rvdzow'@; put 'LGRveTo2fX0pfShoKDk3NTg2KSl9LDUwOTI3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKE4seixZKXtyZXR1cm4gTisiICIrZnVuY3Rpb24gdihOLHope3JldHVybiAyPT09ej9mdW5jdGlvbiBDKE4pe3ZhciB6PXttOiJ2IixiOiJ2IixkOiJ6In07cmV0'@; put 'dXJuIHZvaWQgMD09PXpbTi5jaGFyQXQoMCldP046eltOLmNoYXJBdCgwKV0rTi5zdWJzdHJpbmcoMSl9KE4pOk59KHttbToibXVudXRlbm4iLE1NOiJtaXoiLGRkOiJkZXZlemgifVtZXSxOKX1mdW5jdGlvbiBBKE4pe3JldHVybiBOPjk/QShOJTEwKTpOfXZhciB3PVsvXmdlbi9pLC9eY1tc'@; put 'dTAyYmNcJ11od2UvaSwvXm1ldS9pLC9eZWJyL2ksL15tYWUvaSwvXihtZXp8ZXZlKS9pLC9eZ291L2ksL15lb3MvaSwvXmd3ZS9pLC9eaGVyL2ksL15kdS9pLC9ea2VyL2ldLFM9L14oZ2VudmVyfGNbXHUwMmJjXCddaHdldnJlcnxtZXVyemh8ZWJyZWx8bWFlfG1lemhldmVufGdvdWVyZXxl'@; put 'b3N0fGd3ZW5nb2xvfGhlcmV8ZHV8a2VyenV8Z2VufGNbXHUwMmJjXCddaHdlfG1ldXxlYnJ8bWFlfGV2ZXxnb3V8ZW9zfGd3ZXxoZXJ8ZHV8a2VyKS9pLEg9Wy9eU3UvaSwvXkx1L2ksL15NZShbXnJdfCQpL2ksL15NZXIvaSwvXllhL2ksL15Hdy9pLC9eU2EvaV07eS5kZWZpbmVMb2NhbGUo'@; put 'ImJyIix7bW9udGhzOiJHZW52ZXJfQ1x1MDJiY2h3ZXZyZXJfTWV1cnpoX0VicmVsX01hZV9NZXpoZXZlbl9Hb3VlcmVfRW9zdF9Hd2VuZ29sb19IZXJlX0R1X0tlcnp1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJHZW5fQ1x1MDJiY2h3ZV9NZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2Vf'@; put 'SGVyX0R1X0tlciIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VsX0x1bl9NZXVyemhfTWVyY1x1MDJiY2hlcl9ZYW91X0d3ZW5lcl9TYWRvcm4iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2FkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9M'@; put 'dV9NZV9NZXJfWWFfR3dfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZTpILGZ1bGxXZWVrZGF5c1BhcnNlOlsvXnN1bC9pLC9ebHVuL2ksL15tZXVyemgvaSwvXm1lcmNbXHUwMmJjXCddaGVyL2ksL155YW91L2ksL15nd2VuZXIvaSwvXnNhZG9ybi9pXSxzaG9ydFdlZWtkYXlzUGFyc2U6'@; put 'Wy9eU3VsL2ksL15MdW4vaSwvXk1ldS9pLC9eTWVyL2ksL15ZYW8vaSwvXkd3ZS9pLC9eU2FkL2ldLG1pbldlZWtkYXlzUGFyc2U6SCxtb250aHNSZWdleDpTLG1vbnRoc1Nob3J0UmVnZXg6Uyxtb250aHNTdHJpY3RSZWdleDovXihnZW52ZXJ8Y1tcdTAyYmNcJ11od2V2cmVyfG1ldXJ6aHxl'@; put 'YnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGdlbnxjW1x1MDJiY1wnXWh3ZXxtZXV8ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSxtb250aHNQYXJzZTp3LGxvbmdNb250'@; put 'aHNQYXJzZTp3LHNob3J0TW9udGhzUGFyc2U6dyxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbYSB2aXpdIE1NTU0gWVlZWSIsTExMOiJEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFthIHZpel0g'@; put 'TU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIaXppdiBkYV0gTFQiLG5leHREYXk6IltXYXJjXHUwMmJjaG9hemggZGFdIExUIixuZXh0V2VlazoiZGRkZCBbZGFdIExUIixsYXN0RGF5OiJbRGVjXHUwMmJjaCBkYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtwYXNldCBkYV0g'@; put 'TFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImEtYmVubiAlcyIscGFzdDoiJXMgXHUwMmJjem8iLHM6InVuIG5lYmV1ZCBzZWdvbmRlbm5vXHhmOSIsc3M6IiVkIGVpbGVubiIsbToidXIgdnVudXRlbm4iLG1tOmMsaDoidW4gZXVyIixoaDoiJWQgZXVyIixkOiJ1biBk'@; put 'ZXZlemgiLGRkOmMsTToidXIgbWl6IixNTTpjLHk6InVyIGJsb2F6Iix5eTpmdW5jdGlvbiBzKE4pe3N3aXRjaChBKE4pKXtjYXNlIDE6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA5OnJldHVybiBOKyIgYmxvYXoiO2RlZmF1bHQ6cmV0dXJuIE4rIiB2bG9heiJ9fX0sZGF5T2ZNb250aE9y'@; put 'ZGluYWxQYXJzZTovXGR7MSwyfShhXHhmMXx2ZXQpLyxvcmRpbmFsOmZ1bmN0aW9uKE4pe3JldHVybiBOKygxPT09Tj8iYVx4ZjEiOiJ2ZXQiKX0sd2Vlazp7ZG93OjEsZG95OjR9LG1lcmlkaWVtUGFyc2U6L2EubS58Zy5tLi8saXNQTTpmdW5jdGlvbihOKXtyZXR1cm4iZy5tLiI9PT1OfSxt'@; put 'ZXJpZGllbTpmdW5jdGlvbihOLHosWSl7cmV0dXJuIE48MTI/ImEubS4iOiJnLm0uIn19KX0oaCg5NzU4NikpfSw4Nzc2OChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyh2LEMsdyl7dmFyIFM9disiICI7c3dpdGNoKHcpe2Nhc2Uic3MiOnJldHVybiBTKygx'@; put 'PT09dj8ic2VrdW5kYSI6Mj09PXZ8fDM9PT12fHw0PT09dj8ic2VrdW5kZSI6InNla3VuZGkiKTtjYXNlIm1tIjpyZXR1cm4gUysoMT09PXY/Im1pbnV0YSI6Mj09PXZ8fDM9PT12fHw0PT09dj8ibWludXRlIjoibWludXRhIik7Y2FzZSJoIjpyZXR1cm4iamVkYW4gc2F0IjtjYXNlImhoIjpy'@; put 'ZXR1cm4gUysoMT09PXY/InNhdCI6Mj09PXZ8fDM9PT12fHw0PT09dj8ic2F0YSI6InNhdGkiKTtjYXNlImRkIjpyZXR1cm4gUysoMT09PXY/ImRhbiI6ImRhbmEiKTtjYXNlIk1NIjpyZXR1cm4gUysoMT09PXY/Im1qZXNlYyI6Mj09PXZ8fDM9PT12fHw0PT09dj8ibWplc2VjYSI6Im1qZXNl'@; put 'Y2kiKTtjYXNlInl5IjpyZXR1cm4gUysoMT09PXY/ImdvZGluYSI6Mj09PXZ8fDM9PT12fHw0PT09dj8iZ29kaW5lIjoiZ29kaW5hIil9fXkuZGVmaW5lTG9jYWxlKCJicyIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iYXJf'@; put 'b2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9u'@; put 'ZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAxMGRlX3Bl'@; put 'X3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0i'@; put 'fSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3Vd'@; put 'IExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdVx1MDEwZGVyIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNl'@; put 'IDA6Y2FzZSAzOnJldHVybiJbcHJvXHUwMTYxbHVdIGRkZGQgW3VdIExUIjtjYXNlIDY6cmV0dXJuIltwcm9cdTAxNjFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm9cdTAxNjFsaV0gZGRkZCBbdV0gTFQifX0sc2FtZUVsc2U6Ikwi'@; put 'fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJwYXIgc2VrdW5kaSIsc3M6cyxtOmZ1bmN0aW9uIGModixDLHcsUyl7aWYoIm0iPT09dylyZXR1cm4gQz8iamVkbmEgbWludXRhIjpTPyJqZWRudSBtaW51dHUiOiJqZWRuZSBtaW51dGUifSxtbTpzLGg6'@; put 'cyxoaDpzLGQ6ImRhbiIsZGQ6cyxNOiJtamVzZWMiLE1NOnMseToiZ29kaW51Iix5eTpzfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sNTYyOTEoZmUsaixoKXshZnVuY3Rpb24oeSl7InVz'@; put 'ZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJjYSIse21vbnRoczp7c3RhbmRhbG9uZToiZ2VuZXJfZmVicmVyX21hclx4ZTdfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1YnJlX25vdmVtYnJlX2Rlc2VtYnJlIi5zcGxpdCgiXyIpLGZvcm1hdDoiZGUgZ2VuZXJf'@; put 'ZGUgZmVicmVyX2RlIG1hclx4ZTdfZCdhYnJpbF9kZSBtYWlnX2RlIGp1bnlfZGUganVsaW9sX2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9EW29EXT8oXHMpK01NTU0vfSxtb250aHNTaG9ydDoiZ2Vu'@; put 'Ll9mZWJyLl9tYXJceGU3X2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGl1bWVuZ2VfZGlsbHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19kaXZlbmRyZXNfZGlzc2FidGUiLnNw'@; put 'bGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGcuX2RsLl9kdC5fZGMuX2RqLl9kdi5fZHMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkZ19kbF9kdF9kY19kal9kdl9kcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6'@; put 'bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW2RlXSBZWVlZIixsbDoiRCBNTU0gWVlZWSIsTExMOiJEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbSIsbGxsOiJEIE1NTSBZWVlZLCBIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tIixsbGxs'@; put 'OiJkZGQgRCBNTU0gWVlZWSwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthdnVpIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2RlbVx4ZTAgYSAiKygxIT09dGhpcy5ob3Vycygp'@; put 'PyJsZXMiOiJsYSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYWhpciBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0g'@; put 'TFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc3NhdCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkJ2FxdVx4ZWQgJXMiLHBhc3Q6ImZhICVzIixzOiJ1bnMgc2Vn'@; put 'b25zIixzczoiJWQgc2Vnb25zIixtOiJ1biBtaW51dCIsbW06IiVkIG1pbnV0cyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JlcyIsZDoidW4gZGlhIixkZDoiJWQgZGllcyIsTToidW4gbWVzIixNTToiJWQgbWVzb3MiLHk6InVuIGFueSIseXk6IiVkIGFueXMifSxkYXlPZk1vbnRoT3JkaW5h'@; put 'bFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fFx4ZTh8YSkvLG9yZGluYWw6ZnVuY3Rpb24ocyxBKXt2YXIgdj0xPT09cz8iciI6Mj09PXM/Im4iOjM9PT1zPyJyIjo0PT09cz8idCI6Ilx4ZTgiO3JldHVybigidyI9PT1BfHwiVyI9PT1BKSYmKHY9ImEiKSxzK3Z9LHdlZWs6e2RvdzoxLGRveTo0fX0p'@; put 'fShoKDk3NTg2KSl9LDg1MzAxKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17c3RhbmRhbG9uZToibGVkZW5fXHhmYW5vcl9iXHUwMTU5ZXplbl9kdWJlbl9rdlx1MDExYnRlbl9cdTAxMGRlcnZlbl9cdTAxMGRlcnZlbmVjX3NycGVuX3pceGUxXHUwMTU5XHhlZF9c'@; put 'dTAxNTlceGVkamVuX2xpc3RvcGFkX3Byb3NpbmVjIi5zcGxpdCgiXyIpLGZvcm1hdDoibGVkbmFfXHhmYW5vcmFfYlx1MDE1OWV6bmFfZHVibmFfa3ZcdTAxMWJ0bmFfXHUwMTBkZXJ2bmFfXHUwMTBkZXJ2ZW5jZV9zcnBuYV96XHhlMVx1MDE1OVx4ZWRfXHUwMTU5XHhlZGpuYV9saXN0b3Bh'@; put 'ZHVfcHJvc2luY2UiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0REP1tvLl0/KFxbW15cW1xdXSpcXXxccykrTU1NTS99LHM9ImxlZF9ceGZhbm9fYlx1MDE1OWVfZHViX2t2XHUwMTFiX1x1MDEwZHZuX1x1MDEwZHZjX3NycF96XHhlMVx1MDE1OV9cdTAxNTlceGVkal9saXNfcHJvIi5zcGxpdCgi'@; put 'XyIpLEE9Wy9ebGVkL2ksL15ceGZhbm8vaSwvXmJcdTAxNTllL2ksL15kdWIvaSwvXmt2XHUwMTFiL2ksL14oXHUwMTBkdm58XHUwMTBkZXJ2ZW4kfFx1MDEwZGVydm5hKS9pLC9eKFx1MDEwZHZjfFx1MDEwZGVydmVuZWN8XHUwMTBkZXJ2ZW5jZSkvaSwvXnNycC9pLC9eelx4ZTFcdTAxNTkv'@; put 'aSwvXlx1MDE1OVx4ZWRqL2ksL15saXMvaSwvXnByby9pXSx2PS9eKGxlZGVufFx4ZmFub3J8Ylx1MDE1OWV6ZW58ZHViZW58a3ZcdTAxMWJ0ZW58XHUwMTBkZXJ2ZW5lY3xcdTAxMGRlcnZlbmNlfFx1MDEwZGVydmVufFx1MDEwZGVydm5hfHNycGVufHpceGUxXHUwMTU5XHhlZHxcdTAxNTlc'@; put 'eGVkamVufGxpc3RvcGFkfHByb3NpbmVjfGxlZHxceGZhbm98Ylx1MDE1OWV8ZHVifGt2XHUwMTFifFx1MDEwZHZufFx1MDEwZHZjfHNycHx6XHhlMVx1MDE1OXxcdTAxNTlceGVkanxsaXN8cHJvKS9pO2Z1bmN0aW9uIEMoTCl7cmV0dXJuIEw+MSYmTDw1JiYxIT1+fihMLzEwKX1mdW5jdGlv'@; put 'biB3KEwsUix4LFUpe3ZhciBIPUwrIiAiO3N3aXRjaCh4KXtjYXNlInMiOnJldHVybiBSfHxVPyJwXHhlMXIgc2VrdW5kIjoicFx4ZTFyIHNla3VuZGFtaSI7Y2FzZSJzcyI6cmV0dXJuIFJ8fFU/SCsoQyhMKT8ic2VrdW5keSI6InNla3VuZCIpOkgrInNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1'@; put 'cm4gUj8ibWludXRhIjpVPyJtaW51dHUiOiJtaW51dG91IjtjYXNlIm1tIjpyZXR1cm4gUnx8VT9IKyhDKEwpPyJtaW51dHkiOiJtaW51dCIpOkgrIm1pbnV0YW1pIjtjYXNlImgiOnJldHVybiBSPyJob2RpbmEiOlU/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBSfHxVP0gr'@; put 'KEMoTCk/ImhvZGlueSI6ImhvZGluIik6SCsiaG9kaW5hbWkiO2Nhc2UiZCI6cmV0dXJuIFJ8fFU/ImRlbiI6ImRuZW0iO2Nhc2UiZGQiOnJldHVybiBSfHxVP0grKEMoTCk/ImRueSI6ImRuXHhlZCIpOkgrImRueSI7Y2FzZSJNIjpyZXR1cm4gUnx8VT8ibVx1MDExYnNceGVkYyI6Im1cdTAx'@; put 'MWJzXHhlZGNlbSI7Y2FzZSJNTSI6cmV0dXJuIFJ8fFU/SCsoQyhMKT8ibVx1MDExYnNceGVkY2UiOiJtXHUwMTFic1x4ZWRjXHUwMTZmIik6SCsibVx1MDExYnNceGVkY2kiO2Nhc2UieSI6cmV0dXJuIFJ8fFU/InJvayI6InJva2VtIjtjYXNlInl5IjpyZXR1cm4gUnx8VT9IKyhDKEwpPyJy'@; put 'b2t5IjoibGV0Iik6SCsibGV0eSJ9fXkuZGVmaW5lTG9jYWxlKCJjcyIse21vbnRoczpjLG1vbnRoc1Nob3J0OnMsbW9udGhzUmVnZXg6dixtb250aHNTaG9ydFJlZ2V4OnYsbW9udGhzU3RyaWN0UmVnZXg6L14obGVkZW58bGVkbmF8XHhmYW5vcmF8XHhmYW5vcnxiXHUwMTU5ZXplbnxiXHUw'@; put 'MTU5ZXpuYXxkdWJlbnxkdWJuYXxrdlx1MDExYnRlbnxrdlx1MDExYnRuYXxcdTAxMGRlcnZlbmVjfFx1MDEwZGVydmVuY2V8XHUwMTBkZXJ2ZW58XHUwMTBkZXJ2bmF8c3JwZW58c3JwbmF8elx4ZTFcdTAxNTlceGVkfFx1MDE1OVx4ZWRqZW58XHUwMTU5XHhlZGpuYXxsaXN0b3BhZHV8bGlz'@; put 'dG9wYWR8cHJvc2luZWN8cHJvc2luY2UpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihsZWR8XHhmYW5vfGJcdTAxNTllfGR1Ynxrdlx1MDExYnxcdTAxMGR2bnxcdTAxMGR2Y3xzcnB8elx4ZTFcdTAxNTl8XHUwMTU5XHhlZGp8bGlzfHBybykvaSxtb250aHNQYXJzZTpBLGxvbmdNb250'@; put 'aHNQYXJzZTpBLHNob3J0TW9udGhzUGFyc2U6QSx3ZWVrZGF5czoibmVkXHUwMTFibGVfcG9uZFx1MDExYmxceGVkX1x4ZmF0ZXJceGZkX3N0XHUwMTU5ZWRhX1x1MDEwZHR2cnRla19wXHhlMXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVfcG9fXHhmYXRfc3RfXHUw'@; put 'MTBkdF9wXHhlMV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fXHhmYXRfc3RfXHUwMTBkdF9wXHhlMV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBN'@; put 'TU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgSDptbSIsbDoiRC4gTS4gWVlZWSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyB2XSBMVCIsbmV4dERheToiW3pceGVkdHJhIHZdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6'@; put 'cmV0dXJuIlt2IG5lZFx1MDExYmxpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZlIHN0XHUwMTU5ZWR1IHZdIExUIjtjYXNlIDQ6cmV0dXJuIlt2ZSBcdTAxMGR0dnJ0ZWsgdl0gTFQiO2Nhc2UgNTpyZXR1cm4iW3YgcFx4ZTF0'@; put 'ZWsgdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IHZdIExUIn19LGxhc3REYXk6Ilt2XHUwMTBkZXJhIHZdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlttaW51bG91IG5lZFx1MDExYmxpIHZdIExUIjtjYXNlIDE6Y2FzZSAy'@; put 'OnJldHVybiJbbWludWxceGU5XSBkZGRkIFt2XSBMVCI7Y2FzZSAzOnJldHVybiJbbWludWxvdSBzdFx1MDE1OWVkdSB2XSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsXHhmZF0gZGRkZCBbdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsb3Ugc29ib3R1IHZdIExUIn19LHNhbWVF'@; put 'bHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwXHUwMTU5ZWQgJXMiLHM6dyxzczp3LG06dyxtbTp3LGg6dyxoaDp3LGQ6dyxkZDp3LE06dyxNTTp3LHk6dyx5eTp3fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vl'@; put 'azp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNjY2NjYoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJjdiIse21vbnRoczoiXHUwNDNhXHUwNGQxXHUwNDQwXHUwNDNiXHUwNDMwXHUwNDQ3X1x1MDQzZFx1MDQzMFx1MDQ0MFx1MDRkMVx1MDQ0'@; put 'MV9cdTA0M2ZcdTA0NDNcdTA0NDhfXHUwNDMwXHUwNDNhXHUwNDMwX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0YWJcdTA0ZDdcdTA0NDBcdTA0NDJcdTA0M2NcdTA0MzVfXHUwNDQzXHUwNDQyXHUwNGQxX1x1MDRhYlx1MDQ0M1x1MDQ0MFx1MDQzYlx1MDQzMF9cdTA0MzBcdTA0MzJcdTA0ZDFc'@; put 'dTA0M2RfXHUwNDRlXHUwNDNmXHUwNDMwX1x1MDQ0N1x1MDRmM1x1MDQzYV9cdTA0NDBcdTA0MzBcdTA0NDhcdTA0NDJcdTA0MzBcdTA0MzIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQzYVx1MDRkMVx1MDQ0MF9cdTA0M2RcdTA0MzBcdTA0NDBfXHUwNDNmXHUwNDQzXHUwNDQ4X1x1'@; put 'MDQzMFx1MDQzYVx1MDQzMF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNGFiXHUwNGQ3XHUwNDQwX1x1MDQ0M1x1MDQ0Mlx1MDRkMV9cdTA0YWJcdTA0NDNcdTA0NDBfXHUwNDMwXHUwNDMyXHUwNDNkX1x1MDQ0ZVx1MDQzZlx1MDQzMF9cdTA0NDdcdTA0ZjNcdTA0M2FfXHUwNDQwXHUwNDMwXHUw'@; put 'NDQ4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MzJcdTA0NGJcdTA0NDBcdTA0NDFcdTA0MzBcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDQyXHUwNDQzXHUwNDNkXHUwNDQyXHUwNDM4XHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQ0Ylx1MDQ0Mlx1MDQzYlx1MDQz'@; put 'MFx1MDQ0MFx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NGVcdTA0M2RcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDNhXHUwNGQ3XHUwNGFiXHUwNDNkXHUwNDM1XHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQ0ZFx1MDQ0MFx1MDQzZFx1MDQzNVx1MDQzYVx1MDQ0'@; put 'M1x1MDQzZF9cdTA0NDhcdTA0ZDFcdTA0M2NcdTA0MzBcdTA0NDJcdTA0M2FcdTA0NDNcdTA0M2QiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDMyXHUwNDRiXHUwNDQwX1x1MDQ0Mlx1MDQ0M1x1MDQzZF9cdTA0NGJcdTA0NDJcdTA0M2JfXHUwNDRlXHUwNDNkX1x1MDQzYVx1MDRk'@; put 'N1x1MDRhYl9cdTA0NGRcdTA0NDBcdTA0M2RfXHUwNDQ4XHUwNGQxXHUwNDNjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MzJcdTA0NDBfXHUwNDQyXHUwNDNkX1x1MDQ0Ylx1MDQ0Ml9cdTA0NGVcdTA0M2RfXHUwNDNhXHUwNGFiX1x1MDQ0ZFx1MDQ0MF9cdTA0NDhcdTA0M2MiLnNw'@; put 'bGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IllZWVkgW1x1MDRhYlx1MDQ0M1x1MDQzYlx1MDQ0NVx1MDQzOF0gTU1NTSBbXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1XHUwNGQ3XHUwNDNkXSBEWy1cdTA0M2NcdTA0'@; put 'ZDdcdTA0NDhcdTA0ZDddIixMTEw6IllZWVkgW1x1MDRhYlx1MDQ0M1x1MDQzYlx1MDQ0NVx1MDQzOF0gTU1NTSBbXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1XHUwNGQ3XHUwNDNkXSBEWy1cdTA0M2NcdTA0ZDdcdTA0NDhcdTA0ZDddLCBISDptbSIsTExMTDoiZGRkZCwgWVlZWSBbXHUwNGFi'@; put 'XHUwNDQzXHUwNDNiXHUwNDQ1XHUwNDM4XSBNTU1NIFtcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDVcdTA0ZDdcdTA0M2RdIERbLVx1MDQzY1x1MDRkN1x1MDQ0OFx1MDRkN10sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MWZcdTA0MzBcdTA0NGZcdTA0M2RdIExUIFtcdTA0NDFc'@; put 'dTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixuZXh0RGF5OiJbXHUwNDJiXHUwNDQwXHUwNDMwXHUwNDNkXSBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsbGFzdERheToiW1x1MDRkNlx1MDQzZFx1MDQzNVx1MDQ0MF0gTFQgW1x1'@; put 'MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLG5leHRXZWVrOiJbXHUwNGFhXHUwNDM4XHUwNDQyXHUwNDM1XHUwNDQxXSBkZGRkIExUIFtcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixsYXN0V2VlazoiW1x1MDQxOFx1MDQ0MFx1'@; put 'MDQ0Mlx1MDQzZFx1MDRkN10gZGRkZCBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihzKXtyZXR1cm4gcysoL1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0MiQvaS5l'@; put 'eGVjKHMpPyJcdTA0NDBcdTA0MzVcdTA0M2QiOi9cdTA0YWJcdTA0NDNcdTA0M2IkL2kuZXhlYyhzKT8iXHUwNDQyXHUwNDMwXHUwNDNkIjoiXHUwNDQwXHUwNDMwXHUwNDNkIil9LHBhc3Q6IiVzIFx1MDQzYVx1MDQzMFx1MDQ0Zlx1MDQzYlx1MDQzYlx1MDQzMCIsczoiXHUwNDNmXHUwNGQ3'@; put 'XHUwNDQwLVx1MDQzOFx1MDQzYSBcdTA0YWJcdTA0MzVcdTA0M2FcdTA0M2FcdTA0NDNcdTA0M2RcdTA0NDIiLHNzOiIlZCBcdTA0YWJcdTA0MzVcdTA0M2FcdTA0M2FcdTA0NDNcdTA0M2RcdTA0NDIiLG06Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0'@; put 'NDIiLG1tOiIlZCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLGg6Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDIiLGQ6Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0M2Fc'@; put 'dTA0NDNcdTA0M2QiLGRkOiIlZCBcdTA0M2FcdTA0NDNcdTA0M2QiLE06Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDUiLE1NOiIlZCBcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDUiLHk6Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0YWJcdTA0NDNcdTA0M2IiLHl5'@; put 'OiIlZCBcdTA0YWJcdTA0NDNcdTA0M2IifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LVx1MDQzY1x1MDRkN1x1MDQ0OC8sb3JkaW5hbDoiJWQtXHUwNDNjXHUwNGQ3XHUwNDQ4Iix3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw1NTE2MyhmZSxqLGgpeyFmdW5jdGlv'@; put 'bih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImN5Iix7bW9udGhzOiJJb25hd3JfQ2h3ZWZyb3JfTWF3cnRoX0VicmlsbF9NYWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRyZWZfVGFjaHdlZGRfUmhhZ2Z5ciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSW9uX0No'@; put 'd2VfTWF3X0Vicl9NYWlfTWVoX0dvcl9Bd3NfTWVkX0h5ZF9UYWNoX1JoYWciLnNwbGl0KCJfIiksd2Vla2RheXM6IkR5ZGQgU3VsX0R5ZGQgTGx1bl9EeWRkIE1hd3J0aF9EeWRkIE1lcmNoZXJfRHlkZCBJYXVfRHlkZCBHd2VuZXJfRHlkZCBTYWR3cm4iLnNwbGl0KCJfIiksd2Vla2RheXNT'@; put 'aG9ydDoiU3VsX0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTGxfTWFfTWVfSWFfR3dfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01N'@; put 'L1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hlZGRpdyBhbV0gTFQiLG5leHREYXk6IltZZm9yeSBhbV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbV0gTFQiLGxh'@; put 'c3REYXk6IltEZG9lIGFtXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rpd2V0aGFmIGFtXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToibWV3biAlcyIscGFzdDoiJXMgeW4gXHhmNGwiLHM6InljaHlkaWcgZWlsaWFkYXUiLHNzOiIlZCBlaWxpYWQiLG06Im11bnVkIixt'@; put 'bToiJWQgbXVudWQiLGg6ImF3ciIsaGg6IiVkIGF3ciIsZDoiZGl3cm5vZCIsZGQ6IiVkIGRpd3Jub2QiLE06Im1pcyIsTU06IiVkIG1pcyIseToiYmx3eWRkeW4iLHl5OiIlZCBmbHluZWRkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxl'@; put 'ZykvLG9yZGluYWw6ZnVuY3Rpb24ocyl7dmFyIHY9IiI7cmV0dXJuIHM+MjA/dj00MD09PXN8fDUwPT09c3x8NjA9PT1zfHw4MD09PXN8fDEwMD09PXM/ImZlZCI6ImFpbiI6cz4wJiYodj1bIiIsImFmIiwiaWwiLCJ5ZGQiLCJ5ZGQiLCJlZCIsImVkIiwiZWQiLCJmZWQiLCJmZWQiLCJmZWQi'@; put 'LCJlZyIsImZlZCIsImVnIiwiZWciLCJmZWQiLCJlZyIsImVnIiwiZmVkIiwiZWciLCJmZWQiXVtzXSkscyt2fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw4NzM2MChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImRhIix7bW9udGhz'@; put 'OiJqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0'@; put 'KCJfIiksd2Vla2RheXM6InNceGY4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbFx4ZjhyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InNceGY4bl9tYW5fdGlyX29uc190b3JfZnJlX2xceGY4ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic1x4Zjhf'@; put 'bWFfdGlfb25fdG9fZnJfbFx4ZjgiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgW2QuXSBELiBNTU1NIFlZWVkgW2ts'@; put 'Ll0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltpIG1vcmdlbiBrbC5dIExUIixuZXh0V2VlazoicFx4ZTUgZGRkZCBba2wuXSBMVCIsbGFzdERheToiW2kgZ1x4ZTVyIGtsLl0gTFQiLGxhc3RXZWVrOiJbaV0gZGRkZFtzIGtsLl0gTFQiLHNh'@; put 'bWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRlbiIsczoiZlx4ZTUgc2VrdW5kZXIiLHNzOiIlZCBzZWt1bmRlciIsbToiZXQgbWludXQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIl'@; put 'ZCBkYWdlIixNOiJlbiBtXHhlNW5lZCIsTU06IiVkIG1ceGU1bmVkZXIiLHk6ImV0IFx4ZTVyIix5eToiJWQgXHhlNXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNDMyNDgoZmUsaixo'@; put 'KXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoQSx2LEMsdyl7dmFyIFM9e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVpbmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFnIiwiZWluZW0gVGFnIl0sZGQ6W0ErIiBUYWdlIixBKyIg'@; put 'VGFnZW4iXSx3OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W0ErIiBNb25hdGUiLEErIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OltBKyIgSmFocmUiLEErIiBKYWhyZW4iXX07cmV0dXJuIHY/'@; put 'U1tDXVswXTpTW0NdWzFdfXkuZGVmaW5lTG9jYWxlKCJkZS1hdCIse21vbnRoczoiSlx4ZTRubmVyX0ZlYnJ1YXJfTVx4ZTRyel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSlx4'@; put 'ZTRuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIu'@; put 'c3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6'@; put 'IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltoZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJb'@; put 'bW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW2dlc3Rlcm4gdW1dIExUIFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVz'@; put 'IixzOiJlaW4gcGFhciBTZWt1bmRlbiIsc3M6IiVkIFNla3VuZGVuIixtOmMsbW06IiVkIE1pbnV0ZW4iLGg6YyxoaDoiJWQgU3R1bmRlbiIsZDpjLGRkOmMsdzpjLHd3OiIlZCBXb2NoZW4iLE06YyxNTTpjLHk6Yyx5eTpjfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9y'@; put 'ZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sODMyMjIoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoQSx2LEMsdyl7dmFyIFM9e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVp'@; put 'bmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFnIiwiZWluZW0gVGFnIl0sZGQ6W0ErIiBUYWdlIixBKyIgVGFnZW4iXSx3OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W0ErIiBNb25hdGUiLEErIiBNb25hdGVuIl0seTpbImVpbiBK'@; put 'YWhyIiwiZWluZW0gSmFociJdLHl5OltBKyIgSmFocmUiLEErIiBKYWhyZW4iXX07cmV0dXJuIHY/U1tDXVswXTpTW0NdWzFdfXkuZGVmaW5lTG9jYWxlKCJkZS1jaCIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRyel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJf'@; put 'T2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01v'@; put 'bnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQ'@; put 'YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToi'@; put 'W2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJd'@; put 'In0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06YyxtbToiJWQgTWludXRlbiIsaDpjLGhoOiIlZCBTdHVuZGVuIixkOmMsZGQ6Yyx3OmMsd3c6IiVkIFdvY2hlbiIsTTpjLE1NOmMseTpj'@; put 'LHl5OmN9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw0NTkzMihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhBLHYsQyx3KXt2YXIgUz17bTpbImVpbmUg'@; put 'TWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbQSsiIFRhZ2UiLEErIiBUYWdlbiJdLHc6WyJlaW5lIFdvY2hlIiwiZWluZXIgV29jaGUiXSxNOlsiZWluIE1vbmF0IiwiZWluZW0gTW9u'@; put 'YXQiXSxNTTpbQSsiIE1vbmF0ZSIsQSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W0ErIiBKYWhyZSIsQSsiIEphaHJlbiJdfTtyZXR1cm4gdj9TW0NdWzBdOlNbQ11bMV19eS5kZWZpbmVMb2NhbGUoImRlIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9NXHhl'@; put 'NHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYi5fTVx4ZTRyel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIp'@; put 'LG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5'@; put 'c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExM'@; put 'OiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0g'@; put 'TFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06YyxtbToiJWQgTWludXRlbiIsaDpjLGhoOiIlZCBT'@; put 'dHVuZGVuIixkOmMsZGQ6Yyx3OmMsd3c6IiVkIFdvY2hlbiIsTTpjLE1NOmMseTpjLHl5OmN9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw2NDA1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgYz1bIlx1MDc5Nlx1MDdhY1x1MDc4Mlx1MDdhYVx1MDc4N1x1MDdhNlx1MDc4M1x1MDdhOSIsIlx1MDc4YVx1MDdhY1x1MDc4NFx1MDdiMFx1MDc4M1x1MDdhYVx1MDc4N1x1MDdhNlx1MDc4M1x1MDdhOSIsIlx1MDc4OVx1MDdhN1x1MDc4M1x1MDdhOFx1MDc5N1x1'@; put 'MDdhYSIsIlx1MDc4N1x1MDdhZFx1MDc5NVx1MDdiMFx1MDc4M1x1MDdhOVx1MDc4ZFx1MDdhYSIsIlx1MDc4OVx1MDdhZCIsIlx1MDc5Nlx1MDdhYlx1MDc4Mlx1MDdiMCIsIlx1MDc5Nlx1MDdhYVx1MDc4ZFx1MDdhNlx1MDc4N1x1MDdhOCIsIlx1MDc4N1x1MDdhZlx1MDc4ZVx1MDdhNlx1'@; put 'MDc5MFx1MDdiMFx1MDc5M1x1MDdhYSIsIlx1MDc5MFx1MDdhY1x1MDc5NVx1MDdiMFx1MDc5M1x1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1MDc4N1x1MDdhZVx1MDc4Nlx1MDdiMFx1MDc5M1x1MDdhZlx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1'@; put 'MDc4Mlx1MDdhZVx1MDc4OFx1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1MDc5MVx1MDdhOFx1MDc5MFx1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSJdLHM9WyJcdTA3ODdcdTA3YTdcdTA3OGJcdTA3YThcdTA3ODdcdTA3YjBc'@; put 'dTA3OGNcdTA3YTYiLCJcdTA3ODBcdTA3YWZcdTA3ODlcdTA3YTYiLCJcdTA3ODdcdTA3YTZcdTA3ODJcdTA3YjBcdTA3OGVcdTA3YTdcdTA3ODNcdTA3YTYiLCJcdTA3ODRcdTA3YWFcdTA3OGJcdTA3YTYiLCJcdTA3ODRcdTA3YWFcdTA3ODNcdTA3YTdcdTA3OTBcdTA3YjBcdTA3OGFcdTA3'@; put 'YTZcdTA3OGNcdTA3YTgiLCJcdTA3ODBcdTA3YWFcdTA3ODZcdTA3YWFcdTA3ODNcdTA3YWEiLCJcdTA3ODBcdTA3YWVcdTA3ODJcdTA3YThcdTA3ODBcdTA3YThcdTA3ODNcdTA3YWEiXTt5LmRlZmluZUxvY2FsZSgiZHYiLHttb250aHM6Yyxtb250aHNTaG9ydDpjLHdlZWtkYXlzOnMsd2Vl'@; put 'a2RheXNTaG9ydDpzLHdlZWtkYXlzTWluOiJcdTA3ODdcdTA3YTdcdTA3OGJcdTA3YThfXHUwNzgwXHUwN2FmXHUwNzg5XHUwN2E2X1x1MDc4N1x1MDdhNlx1MDc4Mlx1MDdiMF9cdTA3ODRcdTA3YWFcdTA3OGJcdTA3YTZfXHUwNzg0XHUwN2FhXHUwNzgzXHUwN2E3X1x1MDc4MFx1MDdhYVx1'@; put 'MDc4Nlx1MDdhYV9cdTA3ODBcdTA3YWVcdTA3ODJcdTA3YTgiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiRC9NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZ'@; put 'WSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDc4OVx1MDc4NnxcdTA3ODlcdTA3OGEvLGlzUE06ZnVuY3Rpb24odil7cmV0dXJuIlx1MDc4OVx1MDc4YSI9PT12fSxtZXJpZGllbTpmdW5jdGlvbih2LEMsdyl7cmV0dXJuIHY8MTI/Ilx1MDc4OVx1MDc4NiI6Ilx1MDc4OVx1MDc4YSJ9LGNh'@; put 'bGVuZGFyOntzYW1lRGF5OiJbXHUwNzg5XHUwN2E4XHUwNzg3XHUwN2E2XHUwNzhiXHUwN2FhXSBMVCIsbmV4dERheToiW1x1MDc4OVx1MDdhN1x1MDc4Ylx1MDdhNlx1MDc4OVx1MDdhN10gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbXHUwNzg3XHUwN2E4XHUwNzg3XHUwN2Iw'@; put 'XHUwNzk0XHUwN2FjXSBMVCIsbGFzdFdlZWs6IltcdTA3OGFcdTA3YTdcdTA3ODdcdTA3YThcdTA3OGNcdTA3YWFcdTA3ODhcdTA3YThdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDc4Y1x1MDdhY1x1MDc4M1x1MDdhZFx1MDc4ZVx1MDdhNlx1MDc4'@; put 'N1x1MDdhOCAlcyIscGFzdDoiXHUwNzg2XHUwN2FhXHUwNzgzXHUwN2E4XHUwNzgyXHUwN2IwICVzIixzOiJcdTA3OTBcdTA3YThcdTA3ODZcdTA3YWFcdTA3ODJcdTA3YjBcdTA3OGNcdTA3YWFcdTA3ODZcdTA3YWVcdTA3ODVcdTA3YWNcdTA3ODdcdTA3YjAiLHNzOiJkJSBcdTA3OTBcdTA3'@; put 'YThcdTA3ODZcdTA3YWFcdTA3ODJcdTA3YjBcdTA3OGNcdTA3YWEiLG06Ilx1MDc4OVx1MDdhOFx1MDc4Mlx1MDdhOFx1MDc5M1x1MDdhY1x1MDc4N1x1MDdiMCIsbW06Ilx1MDc4OVx1MDdhOFx1MDc4Mlx1MDdhOFx1MDc5M1x1MDdhYSAlZCIsaDoiXHUwNzhlXHUwN2E2XHUwNzkxXHUwN2E4'@; put 'XHUwNzg3XHUwN2E4XHUwNzgzXHUwN2FjXHUwNzg3XHUwN2IwIixoaDoiXHUwNzhlXHUwN2E2XHUwNzkxXHUwN2E4XHUwNzg3XHUwN2E4XHUwNzgzXHUwN2FhICVkIixkOiJcdTA3OGJcdTA3YWFcdTA3ODhcdTA3YTZcdTA3ODBcdTA3YWNcdTA3ODdcdTA3YjAiLGRkOiJcdTA3OGJcdTA3YWFc'@; put 'dTA3ODhcdTA3YTZcdTA3OTBcdTA3YjAgJWQiLE06Ilx1MDc4OVx1MDdhNlx1MDc4MFx1MDdhY1x1MDc4N1x1MDdiMCIsTU06Ilx1MDc4OVx1MDdhNlx1MDc5MFx1MDdiMCAlZCIseToiXHUwNzg3XHUwN2E2XHUwNzgwXHUwN2E2XHUwNzgzXHUwN2FjXHUwNzg3XHUwN2IwIix5eToiXHUwNzg3'@; put 'XHUwN2E2XHUwNzgwXHUwN2E2XHUwNzgzXHUwN2FhICVkIn0scHJlcGFyc2U6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6Nyxkb3k6MTJ9'@; put 'fSl9KGgoOTc1ODYpKX0sNjA3MTgoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJlbCIse21vbnRoc05vbWluYXRpdmVFbDoiXHUwMzk5XHUwM2IxXHUwM2JkXHUwM2JmXHUwM2M1XHUwM2FjXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDNhNlx1'@; put 'MDNiNVx1MDNiMlx1MDNjMVx1MDNiZlx1MDNjNVx1MDNhY1x1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOWNcdTAzYWNcdTAzYzFcdTAzYzRcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzkxXHUwM2MwXHUwM2MxXHUwM2FmXHUwM2JiXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5Y1x1MDNhY1x1'@; put 'MDNiOVx1MDNiZlx1MDNjMl9cdTAzOTlcdTAzYmZcdTAzY2RcdTAzYmRcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk5XHUwM2JmXHUwM2NkXHUwM2JiXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5MVx1MDNjZFx1MDNiM1x1MDNiZlx1MDNjNVx1MDNjM1x1MDNjNFx1MDNiZlx1MDNjMl9cdTAzYTNc'@; put 'dTAzYjVcdTAzYzBcdTAzYzRcdTAzYWRcdTAzYmNcdTAzYjJcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzlmXHUwM2JhXHUwM2M0XHUwM2NlXHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5ZFx1MDNiZlx1MDNhZFx1MDNiY1x1MDNiMlx1MDNjMVx1MDNiOVx1MDNiZlx1'@; put 'MDNjMl9cdTAzOTRcdTAzYjVcdTAzYmFcdTAzYWRcdTAzYmNcdTAzYjJcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzIiLnNwbGl0KCJfIiksbW9udGhzR2VuaXRpdmVFbDoiXHUwMzk5XHUwM2IxXHUwM2JkXHUwM2JmXHUwM2M1XHUwM2IxXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDNhNlx1'@; put 'MDNiNVx1MDNiMlx1MDNjMVx1MDNiZlx1MDNjNVx1MDNiMVx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOWNcdTAzYjFcdTAzYzFcdTAzYzRcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzkxXHUwM2MwXHUwM2MxXHUwM2I5XHUwM2JiXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5Y1x1MDNiMVx1'@; put 'MDM5MFx1MDNiZlx1MDNjNV9cdTAzOTlcdTAzYmZcdTAzYzVcdTAzYmRcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JiXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5MVx1MDNjNVx1MDNiM1x1MDNiZlx1MDNjZFx1MDNjM1x1MDNjNFx1MDNiZlx1MDNjNV9cdTAzYTNc'@; put 'dTAzYjVcdTAzYzBcdTAzYzRcdTAzYjVcdTAzYmNcdTAzYjJcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzlmXHUwM2JhXHUwM2M0XHUwM2M5XHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5ZFx1MDNiZlx1MDNiNVx1MDNiY1x1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1'@; put 'MDNjNV9cdTAzOTRcdTAzYjVcdTAzYmFcdTAzYjVcdTAzYmNcdTAzYjJcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzUiLnNwbGl0KCJfIiksbW9udGhzOmZ1bmN0aW9uKEEsdil7cmV0dXJuIEE/InN0cmluZyI9PXR5cGVvZiB2JiYvRC8udGVzdCh2LnN1YnN0cmluZygwLHYuaW5kZXhPZigiTU1N'@; put 'TSIpKSk/dGhpcy5fbW9udGhzR2VuaXRpdmVFbFtBLm1vbnRoKCldOnRoaXMuX21vbnRoc05vbWluYXRpdmVFbFtBLm1vbnRoKCldOnRoaXMuX21vbnRoc05vbWluYXRpdmVFbH0sbW9udGhzU2hvcnQ6Ilx1MDM5OVx1MDNiMVx1MDNiZF9cdTAzYTZcdTAzYjVcdTAzYjJfXHUwMzljXHUwM2Ix'@; put 'XHUwM2MxX1x1MDM5MVx1MDNjMFx1MDNjMV9cdTAzOWNcdTAzYjFcdTAzY2FfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JkX1x1MDM5OVx1MDNiZlx1MDNjNVx1MDNiYl9cdTAzOTFcdTAzYzVcdTAzYjNfXHUwM2EzXHUwM2I1XHUwM2MwX1x1MDM5Zlx1MDNiYVx1MDNjNF9cdTAzOWRcdTAzYmZc'@; put 'dTAzYjVfXHUwMzk0XHUwM2I1XHUwM2JhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTAzOWFcdTAzYzVcdTAzYzFcdTAzYjlcdTAzYjFcdTAzYmFcdTAzYWVfXHUwMzk0XHUwM2I1XHUwM2M1XHUwM2M0XHUwM2FkXHUwM2MxXHUwM2IxX1x1MDNhNFx1MDNjMVx1MDNhZlx1MDNjNFx1MDNiN19c'@; put 'dTAzYTRcdTAzYjVcdTAzYzRcdTAzYWNcdTAzYzFcdTAzYzRcdTAzYjdfXHUwM2EwXHUwM2FkXHUwM2JjXHUwM2MwXHUwM2M0XHUwM2I3X1x1MDNhMFx1MDNiMVx1MDNjMVx1MDNiMVx1MDNjM1x1MDNiYVx1MDNiNVx1MDNjNVx1MDNhZV9cdTAzYTNcdTAzYWNcdTAzYjJcdTAzYjJcdTAzYjFc'@; put 'dTAzYzRcdTAzYmYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwMzlhXHUwM2M1XHUwM2MxX1x1MDM5NFx1MDNiNVx1MDNjNV9cdTAzYTRcdTAzYzFcdTAzYjlfXHUwM2E0XHUwM2I1XHUwM2M0X1x1MDNhMFx1MDNiNVx1MDNiY19cdTAzYTBcdTAzYjFcdTAzYzFfXHUwM2EzXHUwM2Ix'@; put 'XHUwM2IyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTAzOWFcdTAzYzVfXHUwMzk0XHUwM2I1X1x1MDNhNFx1MDNjMV9cdTAzYTRcdTAzYjVfXHUwM2EwXHUwM2I1X1x1MDNhMFx1MDNiMV9cdTAzYTNcdTAzYjEiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oQSx2LEMpe3JldHVy'@; put 'biBBPjExP0M/Ilx1MDNiY1x1MDNiYyI6Ilx1MDM5Y1x1MDM5YyI6Qz8iXHUwM2MwXHUwM2JjIjoiXHUwM2EwXHUwMzljIn0saXNQTTpmdW5jdGlvbihBKXtyZXR1cm4iXHUwM2JjIj09PShBKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBhcnNlOi9bXHUwM2EwXHUwMzljXVwuP1x1'@; put 'MDM5Yz9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6'@; put 'IltcdTAzYTNcdTAzYWVcdTAzYmNcdTAzYjVcdTAzYzFcdTAzYjEge31dIExUIixuZXh0RGF5OiJbXHUwMzkxXHUwM2NkXHUwM2MxXHUwM2I5XHUwM2JmIHt9XSBMVCIsbmV4dFdlZWs6ImRkZGQgW3t9XSBMVCIsbGFzdERheToiW1x1MDNhN1x1MDNiOFx1MDNiNVx1MDNjMiB7fV0gTFQiLGxh'@; put 'c3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDY9PT10aGlzLmRheSgpPyJbXHUwM2M0XHUwM2JmIFx1MDNjMFx1MDNjMVx1MDNiZlx1MDNiN1x1MDNiM1x1MDNiZlx1MDNjZFx1MDNiY1x1MDNiNVx1MDNiZFx1MDNiZl0gZGRkZCBbe31dIExUIjoiW1x1MDNjNFx1MDNiN1x1MDNiZCBcdTAzYzBc'@; put 'dTAzYzFcdTAzYmZcdTAzYjdcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYmNcdTAzYjVcdTAzYmRcdTAzYjddIGRkZGQgW3t9XSBMVCJ9LHNhbWVFbHNlOiJMIn0sY2FsZW5kYXI6ZnVuY3Rpb24oQSx2KXt2YXIgQz10aGlzLl9jYWxlbmRhckVsW0FdLHc9diYmdi5ob3VycygpO3JldHVybiBmdW5j'@; put 'dGlvbiBjKEEpe3JldHVybiB0eXBlb2YgRnVuY3Rpb248InUiJiZBIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQSl9KEMpJiYoQz1DLmFwcGx5KHYpKSxDLnJlcGxhY2UoInt9Iix3JTEyPT0xPyJcdTAz'@; put 'YzNcdTAzYzRcdTAzYjciOiJcdTAzYzNcdTAzYzRcdTAzYjlcdTAzYzIiKX0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDNjM1x1MDNiNSAlcyIscGFzdDoiJXMgXHUwM2MwXHUwM2MxXHUwM2I5XHUwM2JkIixzOiJcdTAzYmJcdTAzYWZcdTAzYjNcdTAzYjEgXHUwM2I0XHUwM2I1XHUwM2M1'@; put 'XHUwM2M0XHUwM2I1XHUwM2MxXHUwM2NjXHUwM2JiXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2IxIixzczoiJWQgXHUwM2I0XHUwM2I1XHUwM2M1XHUwM2M0XHUwM2I1XHUwM2MxXHUwM2NjXHUwM2JiXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2IxIixtOiJcdTAzYWRcdTAzYmRcdTAzYjEgXHUwM2Ji'@; put 'XHUwM2I1XHUwM2MwXHUwM2M0XHUwM2NjIixtbToiJWQgXHUwM2JiXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2FjIixoOiJcdTAzYmNcdTAzYWZcdTAzYjEgXHUwM2NlXHUwM2MxXHUwM2IxIixoaDoiJWQgXHUwM2NlXHUwM2MxXHUwM2I1XHUwM2MyIixkOiJcdTAzYmNcdTAzYWZcdTAzYjEgXHUw'@; put 'M2JjXHUwM2FkXHUwM2MxXHUwM2IxIixkZDoiJWQgXHUwM2JjXHUwM2FkXHUwM2MxXHUwM2I1XHUwM2MyIixNOiJcdTAzYWRcdTAzYmRcdTAzYjFcdTAzYzIgXHUwM2JjXHUwM2FlXHUwM2JkXHUwM2IxXHUwM2MyIixNTToiJWQgXHUwM2JjXHUwM2FlXHUwM2JkXHUwM2I1XHUwM2MyIix5OiJc'@; put 'dTAzYWRcdTAzYmRcdTAzYjFcdTAzYzIgXHUwM2M3XHUwM2MxXHUwM2NjXHUwM2JkXHUwM2JmXHUwM2MyIix5eToiJWQgXHUwM2M3XHUwM2MxXHUwM2NjXHUwM2JkXHUwM2I5XHUwM2IxIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1MDNiNy8sb3JkaW5hbDoiJWRcdTAzYjci'@; put 'LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDM2MzE5KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZW4tYXUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVy'@; put 'X09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0Zy'@; put 'aWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06'@; put 'c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVr'@; put 'OiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMi'@; put 'LG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShz'@; put 'dHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24ocyl7dmFyIEE9cyUxMDtyZXR1cm4gcysoMT09fn4ocyUxMDAvMTApPyJ0aCI6MT09PUE/InN0IjoyPT09QT8ibmQiOjM9PT1BPyJyZCI6InRoIil9LHdlZWs6e2RvdzowLGRveTo0fX0pfShoKDk3NTg2KSl9LDgwNTk3KGZlLGosaCl7IWZ1'@; put 'bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6'@; put 'Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1'@; put 'ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQs'@; put 'IFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0'@; put 'V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVk'@; put 'IGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24ocyl7dmFyIEE9cyUxMDtyZXR1'@; put 'cm4gcysoMT09fn4ocyUxMDAvMTApPyJ0aCI6MT09PUE/InN0IjoyPT09QT8ibmQiOjM9PT1BPyJyZCI6InRoIil9fSl9KGgoOTc1ODYpKX0sNTE4MDAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJlbi1nYiIse21vbnRoczoiSmFudWFyeV9GZWJy'@; put 'dWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2Rh'@; put 'eXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNw'@; put 'bGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkg'@; put 'YXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0'@; put 'OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIl'@; put 'ZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHMpe3ZhciBBPXMlMTA7cmV0dXJuIHMrKDE9PX5+KHMlMTAwLzEwKT8idGgiOjE9PT1BPyJzdCI6Mj09PUE/Im5kIjozPT09QT8icmQiOiJ0aCIpfSx3ZWVrOntk'@; put 'b3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw4MDcoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJlbi1pZSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9O'@; put 'b3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVy'@; put 'ZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQv'@; put 'TU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQi'@; put 'LGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixt'@; put 'bToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9y'@; put 'ZGluYWw6ZnVuY3Rpb24ocyl7dmFyIEE9cyUxMDtyZXR1cm4gcysoMT09fn4ocyUxMDAvMTApPyJ0aCI6MT09PUE/InN0IjoyPT09QT8ibmQiOjM9PT1BPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDk1OTYwKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ug'@; put 'c3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZW4taWwiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fw'@; put 'cl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9T'@; put 'YXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoi'@; put 'ZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRd'@; put 'IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoi'@; put 'JWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihzKXt2YXIgQT1zJTEwO3JldHVybiBzKygxPT1+fihzJTEwMC8xMCk/'@; put 'InRoIjoxPT09QT8ic3QiOjI9PT1BPyJuZCI6Mz09PUE/InJkIjoidGgiKX19KX0oaCg5NzU4NikpfSw4NDQxOChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImVuLWluIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9K'@; put 'dW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVz'@; put 'ZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1h'@; put 'dDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJb'@; put 'VG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3'@; put 'IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9u'@; put 'dGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHMpe3ZhciBBPXMlMTA7cmV0dXJuIHMrKDE9PX5+KHMlMTAwLzEwKT8idGgiOjE9PT1BPyJzdCI6Mj09PUE/Im5kIjozPT09QT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oaCg5'@; put 'NzU4NikpfSw0Njg2NShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImVuLW56Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVy'@; put 'Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiks'@; put 'd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJE'@; put 'IE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJb'@; put 'WWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0'@; put 'ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0'@; put 'aW9uKHMpe3ZhciBBPXMlMTA7cmV0dXJuIHMrKDE9PX5+KHMlMTAwLzEwKT8idGgiOjE9PT1BPyJzdCI6Mj09PUE/Im5kIjozPT09QT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSwzMjY0NyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5k'@; put 'ZWZpbmVMb2NhbGUoImVuLXNnIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9K'@; put 'dWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgi'@; put 'XyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1N'@; put 'TSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVs'@; put 'c2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06'@; put 'ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24ocyl7dmFyIEE9cyUxMDtyZXR1cm4gcysoMT09fn4ocyUxMDAvMTApPyJ0aCI6MT09PUE/'@; put 'InN0IjoyPT09QT8ibmQiOjM9PT1BPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDYxOTMxKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZW8iLHttb250aHM6ImphbnVhcm9fZmVicnVhcm9fbWFydG9fYXByaWxv'@; put 'X21ham9fanVuaW9fanVsaW9fYVx1MDE2ZGd1c3RvX3NlcHRlbWJyb19va3RvYnJvX25vdmVtYnJvX2RlY2VtYnJvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcnRfYXByX21hal9qdW5fanVsX2FcdTAxNmRnX3NlcHRfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2Rh'@; put 'eXM6ImRpbWFuXHUwMTA5b19sdW5kb19tYXJkb19tZXJrcmVkb19cdTAxMzVhXHUwMTZkZG9fdmVuZHJlZG9fc2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbV9sdW5fbWFyZF9tZXJrX1x1MDEzNWFcdTAxNmRfdmVuX3NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlf'@; put 'bHVfbWFfbWVfXHUwMTM1YV92ZV9zYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSIsTExMOiJbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZIEhIOm1tIixMTExM'@; put 'OiJkZGRkW25dLCBbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZIEhIOm1tIixsbGxsOiJkZGQsIFtsYV0gRFstYW4gZGVdIE1NTSwgWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1thcF1cLnRcLm0vaSxpc1BNOmZ1bmN0aW9uKHMpe3JldHVybiJwIj09PXMuY2hhckF0KDApLnRvTG93ZXJD'@; put 'YXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4gcz4xMT92PyJwLnQubS4iOiJQLlQuTS4iOnY/ImEudC5tLiI6IkEuVC5NLiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9kaWFcdTAxNmQgamVdIExUIixuZXh0RGF5OiJbTW9yZ2FcdTAxNmQgamVdIExUIixuZXh0V2Vlazoi'@; put 'ZGRkZFtuIGplXSBMVCIsbGFzdERheToiW0hpZXJhXHUwMTZkIGplXSBMVCIsbGFzdFdlZWs6IltwYXNpbnRhbl0gZGRkZFtuIGplXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicG9zdCAlcyIscGFzdDoiYW50YVx1MDE2ZCAlcyIsczoia2Vsa2FqIHNla3VuZG9q'@; put 'IixzczoiJWQgc2VrdW5kb2oiLG06InVudSBtaW51dG8iLG1tOiIlZCBtaW51dG9qIixoOiJ1bnUgaG9ybyIsaGg6IiVkIGhvcm9qIixkOiJ1bnUgdGFnbyIsZGQ6IiVkIHRhZ29qIixNOiJ1bnUgbW9uYXRvIixNTToiJWQgbW9uYXRvaiIseToidW51IGphcm8iLHl5OiIlZCBqYXJvaiJ9LGRh'@; put 'eU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1hLyxvcmRpbmFsOiIlZGEiLHdlZWs6e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDQxODA1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28u'@; put 'X3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIikscz0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIiksQT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9e'@; put 'c2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLHY9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwu'@; put 'P3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTt5LmRlZmluZUxvY2FsZSgiZXMtZG8iLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1i'@; put 'cmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24odyxTKXtyZXR1cm4gdz8vLU1NTS0vLnRlc3QoUyk/c1t3Lm1vbnRoKCldOmNbdy5tb250aCgpXTpjfSxtb250aHNSZWdleDp2LG1vbnRoc1Nob3J0UmVnZXg6dixtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1h'@; put 'cnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98'@; put 'b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6QSxsb25nTW9udGhzUGFyc2U6QSxzaG9ydE1vbnRoc1BhcnNlOkEsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNT'@; put 'aG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6'@; put 'bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4i'@; put 'W2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9'@; put 'PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhv'@; put 'dXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQg'@; put 'aG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRp'@; put 'bmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDgzNDQ1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiks'@; put 'cz0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIiksQT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLHY9'@; put 'L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92'@; put 'XC4/fGRpY1wuPykvaTt5LmRlZmluZUxvY2FsZSgiZXMtbXgiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rp'@; put 'b24odyxTKXtyZXR1cm4gdz8vLU1NTS0vLnRlc3QoUyk/c1t3Lm1vbnRoKCldOmNbdy5tb250aCgpXTpjfSxtb250aHNSZWdleDp2LG1vbnRoc1Nob3J0UmVnZXg6dixtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3Rv'@; put 'fHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFy'@; put 'c2U6QSxsb25nTW9udGhzUGFyc2U6QSxzaG9ydE1vbnRoc1BhcnNlOkEsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUu'@; put 'X3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1N'@; put 'TU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBM'@; put 'VCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hXHhmMWFuYSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVu'@; put 'Y3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0'@; put 'aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkXHhlZGEiLGRkOiIlZCBkXHhlZGFzIix3OiJ1'@; put 'bmEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFceGYxbyIseXk6IiVkIGFceGYxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MCxkb3k6NH0saW52YWxpZERh'@; put 'dGU6IkZlY2hhIGludlx4ZTFsaWRhIn0pfShoKDk3NTg2KSl9LDgxNTE2KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIikscz0iZW5lX2Zl'@; put 'Yl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIiksQT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLHY9L14oZW5lcm98'@; put 'ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wu'@; put 'PykvaTt5LmRlZmluZUxvY2FsZSgiZXMtdXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24odyxTKXty'@; put 'ZXR1cm4gdz8vLU1NTS0vLnRlc3QoUyk/c1t3Lm1vbnRoKCldOmNbdy5tb250aCgpXTpjfSxtb250aHNSZWdleDp2LG1vbnRoc1Nob3J0UmVnZXg6dixtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1i'@; put 'cmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6QSxsb25n'@; put 'TW9udGhzUGFyc2U6QSxzaG9ydE1vbnRoc1BhcnNlOkEsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4'@; put 'ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiTU0vREQvWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtk'@; put 'ZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExU'@; put 'In0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5j'@; put 'dGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRp'@; put 'dmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVu'@; put 'YSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzowLGRveTo2fX0pfShoKDk3NTg2'@; put 'KSl9LDQ2Njc5KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIikscz0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0'@; put 'X25vdl9kaWMiLnNwbGl0KCJfIiksQT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLHY9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1'@; put 'bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTt5LmRlZmluZUxvY2FsZSgiZXMiLHttb250aHM6'@; put 'ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24odyxTKXtyZXR1cm4gdz8vLU1NTS0vLnRlc3QoUyk/c1t3Lm1vbnRoKCld'@; put 'OmNbdy5tb250aCgpXTpjfSxtb250aHNSZWdleDp2LG1vbnRoc1Nob3J0UmVnZXg6dixtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1v'@; put 'bnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6QSxsb25nTW9udGhzUGFyc2U6QSxzaG9ydE1vbnRoc1BhcnNlOkEsd2Vl'@; put 'a2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVf'@; put 'bWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1t'@; put 'IixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hXHhmMWFuYSBhIGxh'@; put 'IisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/'@; put 'InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5v'@; put 'cyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkXHhlZGEiLGRkOiIlZCBkXHhlZGFzIix3OiJ1bmEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW4gbWVzIixNTToiJWQg'@; put 'bWVzZXMiLHk6InVuIGFceGYxbyIseXk6IiVkIGFceGYxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH0saW52YWxpZERhdGU6IkZlY2hhIGludlx4ZTFsaWRhIn0pfShoKDk3NTg2KSl9LDg4MTUwKGZl'@; put 'LGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKEEsdixDLHcpe3ZhciBTPXtzOlsibVx4ZjVuZSBzZWt1bmRpIiwibVx4ZjVuaSBzZWt1bmQiLCJwYWFyIHNla3VuZGl0Il0sc3M6W0ErInNla3VuZGkiLEErInNla3VuZGl0Il0sbTpbIlx4ZmNoZSBtaW51dGkiLCJc'@; put 'eGZja3MgbWludXQiXSxtbTpbQSsiIG1pbnV0aSIsQSsiIG1pbnV0aXQiXSxoOlsiXHhmY2hlIHR1bm5pIiwidHVuZCBhZWdhIiwiXHhmY2tzIHR1bmQiXSxoaDpbQSsiIHR1bm5pIixBKyIgdHVuZGkiXSxkOlsiXHhmY2hlIHBceGU0ZXZhIiwiXHhmY2tzIHBceGU0ZXYiXSxNOlsia3V1IGFq'@; put 'YSIsImt1dSBhZWdhIiwiXHhmY2tzIGt1dSJdLE1NOltBKyIga3V1IixBKyIga3V1ZCJdLHk6WyJceGZjaGUgYWFzdGEiLCJhYXN0YSIsIlx4ZmNrcyBhYXN0YSJdLHl5OltBKyIgYWFzdGEiLEErIiBhYXN0YXQiXX07cmV0dXJuIHY/U1tDXVsyXT9TW0NdWzJdOlNbQ11bMV06dz9TW0NdWzBd'@; put 'OlNbQ11bMV19eS5kZWZpbmVMb2NhbGUoImV0Iix7bW9udGhzOiJqYWFudWFyX3ZlZWJydWFyX21ceGU0cnRzX2FwcmlsbF9tYWlfanV1bmlfanV1bGlfYXVndXN0X3NlcHRlbWJlcl9va3Rvb2Jlcl9ub3ZlbWJlcl9kZXRzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphYW5fdmVl'@; put 'YnJfbVx4ZTRydHNfYXByX21haV9qdXVuaV9qdXVsaV9hdWdfc2VwdF9va3Rfbm92X2RldHMiLnNwbGl0KCJfIiksd2Vla2RheXM6InBceGZjaGFwXHhlNGV2X2VzbWFzcFx4ZTRldl90ZWlzaXBceGU0ZXZfa29sbWFwXHhlNGV2X25lbGphcFx4ZTRldl9yZWVkZV9sYXVwXHhlNGV2Ii5zcGxp'@; put 'dCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBfRV9UX0tfTl9SX0wiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlBfRV9UX0tfTl9SX0wiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoi'@; put 'RC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUXHhlNG5hLF0gTFQiLG5leHREYXk6IltIb21tZSxdIExUIixuZXh0V2VlazoiW0pceGU0cmdtaW5lXSBkZGRkIExUIixsYXN0RGF5OiJbRWlsZSxdIExUIixsYXN0'@; put 'V2VlazoiW0VlbG1pbmVdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHBceGU0cmFzdCIscGFzdDoiJXMgdGFnYXNpIixzOmMsc3M6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6IiVkIHBceGU0ZXZhIixNOmMsTU06Yyx5OmMseXk6Y30sZGF5T2ZN'@; put 'b250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDgwNzU3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZXUiLHttb250aHM6InVydGFycmlsYV9vdHNhaWxhX21h'@; put 'cnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLiIuc3BsaXQo'@; put 'Il8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJpZ2FuZGVhX2FzdGVsZWhlbmFfYXN0ZWFydGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5iYXRhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImlnLl9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLiIuc3BsaXQo'@; put 'Il8iKSx3ZWVrZGF5c01pbjoiaWdfYWxfYXJfYXpfb2dfb2xfbHIiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSIsTExMOiJZ'@; put 'WVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbSIsTExMTDoiZGRkZCwgWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0iLGw6IllZWVktTS1EIixsbDoiWVlZWVtrb10gTU1NIERbYV0iLGxsbDoiWVlZWVtrb10gTU1NIERbYV0gSEg6bW0iLGxsbGw6ImRkZCwgWVlZWVtrb10gTU1NIERb'@; put 'YV0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2dhdXJdIExUW2V0YW5dIixuZXh0RGF5OiJbYmloYXJdIExUW2V0YW5dIixuZXh0V2VlazoiZGRkZCBMVFtldGFuXSIsbGFzdERheToiW2F0em9dIExUW2V0YW5dIixsYXN0V2VlazoiW2F1cnJla29dIGRkZGQgTFRbZXRhbl0iLHNhbWVF'@; put 'bHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGJhcnJ1IixwYXN0OiJkdWVsYSAlcyIsczoic2VndW5kbyBiYXR6dWsiLHNzOiIlZCBzZWd1bmRvIixtOiJtaW51dHUgYmF0IixtbToiJWQgbWludXR1IixoOiJvcmR1IGJhdCIsaGg6IiVkIG9yZHUiLGQ6ImVndW4gYmF0IixkZDoi'@; put 'JWQgZWd1biIsTToiaGlsYWJldGUgYmF0IixNTToiJWQgaGlsYWJldGUiLHk6InVydGUgYmF0Iix5eToiJWQgdXJ0ZSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw2NTc0MihmZSxqLGgp'@; put 'eyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9ezE6Ilx1MDZmMSIsMjoiXHUwNmYyIiwzOiJcdTA2ZjMiLDQ6Ilx1MDZmNCIsNToiXHUwNmY1Iiw2OiJcdTA2ZjYiLDc6Ilx1MDZmNyIsODoiXHUwNmY4Iiw5OiJcdTA2ZjkiLDA6Ilx1MDZmMCJ9LHM9eyJcdTA2ZjEiOiIxIiwiXHUw'@; put 'NmYyIjoiMiIsIlx1MDZmMyI6IjMiLCJcdTA2ZjQiOiI0IiwiXHUwNmY1IjoiNSIsIlx1MDZmNiI6IjYiLCJcdTA2ZjciOiI3IiwiXHUwNmY4IjoiOCIsIlx1MDZmOSI6IjkiLCJcdTA2ZjAiOiIwIn07eS5kZWZpbmVMb2NhbGUoImZhIix7bW9udGhzOiJcdTA2OThcdTA2MjdcdTA2NDZcdTA2'@; put 'NDhcdTA2Y2NcdTA2NDdfXHUwNjQxXHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ3X1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjJcdTA2NDhcdTA2MzFcdTA2Y2NcdTA2NDRfXHUwNjQ1XHUwNjQ3X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDY0Nl9cdTA2OThcdTA2NDhcdTA2MjZcdTA2Y2Nc'@; put 'dTA2NDdfXHUwNjI3XHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDY3ZVx1MDYyYVx1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjdcdTA2YTlcdTA2MmFcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYzM1x1MDYyN1x1MDY0NVx1MDYy'@; put 'OFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjk4XHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNmNjXHUwNjQ3X1x1MDY0MVx1MDY0OFx1MDYzMVx1MDZjY1x1MDY0N19cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIyXHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ0X1x1MDY0NVx1'@; put 'MDY0N19cdTA2OThcdTA2NDhcdTA2MjZcdTA2NDZfXHUwNjk4XHUwNjQ4XHUwNjI2XHUwNmNjXHUwNjQ3X1x1MDYyN1x1MDY0OFx1MDYyYV9cdTA2MzNcdTA2N2VcdTA2MmFcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjI3XHUwNmE5XHUwNjJhXHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0'@; put 'OFx1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MzNcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDZjY1x1MDZhOVx1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmZcdTA2NDhcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdf'@; put 'XHUwNjMzXHUwNjQ3XHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY4Nlx1MDY0N1x1MDYyN1x1MDYzMVx1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2N2VcdTA2NDZcdTA2MmNcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjQ3'@; put 'X1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0NyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2Y2NcdTA2YTlcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJmXHUwNjQ4XHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYzM1x1MDY0N1x1MjAwY1x1MDYzNFx1MDY0Nlx1'@; put 'MDYyOFx1MDY0N19cdTA2ODZcdTA2NDdcdTA2MjdcdTA2MzFcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjdlXHUwNjQ2XHUwNjJjXHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYyY1x1MDY0NVx1MDYzOVx1MDY0N19cdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDciLnNwbGl0'@; put 'KCJfIiksd2Vla2RheXNNaW46Ilx1MDZjY19cdTA2MmZfXHUwNjMzX1x1MDY4Nl9cdTA2N2VfXHUwNjJjX1x1MDYzNCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQg'@; put 'TU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDY0Mlx1MDYyOFx1MDY0NCBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxfFx1MDYyOFx1MDYzOVx1MDYyZiBcdTA2MjdcdTA2MzIg'@; put 'XHUwNjM4XHUwNjQ3XHUwNjMxLyxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybi9cdTA2MjhcdTA2MzlcdTA2MmYgXHUwNjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1MDYzMS8udGVzdCh2KX0sbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDEyPyJcdTA2NDJcdTA2MjhcdTA2NDQgXHUw'@; put 'NjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1MDYzMSI6Ilx1MDYyOFx1MDYzOVx1MDYyZiBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDVcdTA2MzFcdTA2NDhcdTA2MzIgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIs'@; put 'bmV4dERheToiW1x1MDY0MVx1MDYzMVx1MDYyZlx1MDYyNyBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsbGFzdERheToiW1x1MDYyZlx1MDZjY1x1MDYzMVx1MDY0OFx1MDYzMiBcdTA2MzNcdTA2Mjdc'@; put 'dTA2MzlcdTA2MmFdIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjdlXHUwNmNjXHUwNjM0XSBbXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjJmXHUwNjMxICVzIixwYXN0OiIlcyBcdTA2N2VcdTA2Y2NcdTA2MzQi'@; put 'LHM6Ilx1MDY4Nlx1MDY0Nlx1MDYyZiBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2Y2NcdTA2NDciLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2Y2NcdTA2NDciLG06Ilx1MDZjY1x1MDZhOSBcdTA2MmZcdTA2NDJcdTA2Y2NcdTA2NDJcdTA2NDciLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2'@; put 'Y2NcdTA2NDJcdTA2NDciLGg6Ilx1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmEiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmEiLGQ6Ilx1MDZjY1x1MDZhOSBcdTA2MzFcdTA2NDhcdTA2MzIiLGRkOiIlZCBcdTA2MzFcdTA2NDhcdTA2MzIiLE06Ilx1MDZjY1x1'@; put 'MDZhOSBcdTA2NDVcdTA2MjdcdTA2NDciLE1NOiIlZCBcdTA2NDVcdTA2MjdcdTA2NDciLHk6Ilx1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2NDQiLHl5OiIlZCBcdTA2MzNcdTA2MjdcdTA2NDQifSxwcmVwYXJzZTpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9bXHUwNmYwLVx1'@; put 'MDZmOV0vZyxmdW5jdGlvbihDKXtyZXR1cm4gc1tDXX0pLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihDKXtyZXR1cm4gY1tDXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LGRheU9mTW9udGhP'@; put 'cmRpbmFsUGFyc2U6L1xkezEsMn1cdTA2NDUvLG9yZGluYWw6IiVkXHUwNjQ1Iix3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KGgoOTc1ODYpKX0sMzM5NTgoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPSJub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGpceGU0IHZpaXNp'@; put 'IGt1dXNpIHNlaXRzZW1ceGU0biBrYWhkZWtzYW4geWhkZWtzXHhlNG4iLnNwbGl0KCIgIikscz1bIm5vbGxhIiwieWhkZW4iLCJrYWhkZW4iLCJrb2xtZW4iLCJuZWxqXHhlNG4iLCJ2aWlkZW4iLCJrdXVkZW4iLGNbN10sY1s4XSxjWzldXTtmdW5jdGlvbiBBKHcsUyxMLFIpe3ZhciB4PSIi'@; put 'O3N3aXRjaChMKXtjYXNlInMiOnJldHVybiBSPyJtdXV0YW1hbiBzZWt1bm5pbiI6Im11dXRhbWEgc2VrdW50aSI7Y2FzZSJzcyI6eD1SPyJzZWt1bm5pbiI6InNla3VudGlhIjticmVhaztjYXNlIm0iOnJldHVybiBSPyJtaW51dXRpbiI6Im1pbnV1dHRpIjtjYXNlIm1tIjp4PVI/Im1pbnV1'@; put 'dGluIjoibWludXV0dGlhIjticmVhaztjYXNlImgiOnJldHVybiBSPyJ0dW5uaW4iOiJ0dW50aSI7Y2FzZSJoaCI6eD1SPyJ0dW5uaW4iOiJ0dW50aWEiO2JyZWFrO2Nhc2UiZCI6cmV0dXJuIFI/InBceGU0aXZceGU0biI6InBceGU0aXZceGU0IjtjYXNlImRkIjp4PVI/InBceGU0aXZceGU0'@; put 'biI6InBceGU0aXZceGU0XHhlNCI7YnJlYWs7Y2FzZSJNIjpyZXR1cm4gUj8ia3V1a2F1ZGVuIjoia3V1a2F1c2kiO2Nhc2UiTU0iOng9Uj8ia3V1a2F1ZGVuIjoia3V1a2F1dHRhIjticmVhaztjYXNlInkiOnJldHVybiBSPyJ2dW9kZW4iOiJ2dW9zaSI7Y2FzZSJ5eSI6eD1SPyJ2dW9kZW4i'@; put 'OiJ2dW90dGEifXJldHVybiBmdW5jdGlvbiB2KHcsUyl7cmV0dXJuIHc8MTA/Uz9zW3ddOmNbd106d30odyxSKSsiICIreH15LmRlZmluZUxvY2FsZSgiZmkiLHttb250aHM6InRhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXNceGU0a3V1X2hlaW5ceGU0'@; put 'a3V1X2Vsb2t1dV9zeXlza3V1X2xva2FrdXVfbWFycmFza3V1X2pvdWx1a3V1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ0YW1taV9oZWxtaV9tYWFsaXNfaHVodGlfdG91a29fa2VzXHhlNF9oZWluXHhlNF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdSIuc3BsaXQoIl8iKSx3ZWVrZGF5'@; put 'czoic3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1X21hX3RpX2tlX3RvX3BlX2xhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tYV90aV9rZV90b19wZV9sYSIu'@; put 'c3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRG8gTU1NTVt0YV0gWVlZWSIsTExMOiJEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbSIsTExMTDoiZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgu'@; put 'bW0iLGw6IkQuTS5ZWVlZIixsbDoiRG8gTU1NIFlZWVkiLGxsbDoiRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tIixsbGxsOiJkZGQsIERvIE1NTSBZWVlZLCBba2xvXSBISC5tbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdFx4ZTRuXHhlNFx4ZTRuXSBba2xvXSBMVCIsbmV4dERheToiW2h1b21l'@; put 'bm5hXSBba2xvXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsb10gTFQiLGxhc3REYXk6IltlaWxlbl0gW2tsb10gTFQiLGxhc3RXZWVrOiJbdmlpbWVdIGRkZGRbbmFdIFtrbG9dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBwXHhlNFx4ZTRzdFx4ZTQiLHBhc3Q6'@; put 'IiVzIHNpdHRlbiIsczpBLHNzOkEsbTpBLG1tOkEsaDpBLGhoOkEsZDpBLGRkOkEsTTpBLE1NOkEseTpBLHl5OkF9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw0NjcyMChmZSxqLGgpeyFm'@; put 'dW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImZpbCIse21vbnRoczoiRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0'@; put 'OiJFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikxpbl9MdW5fTWFy'@; put 'X01peV9IdXdfQml5X1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTGlfTHVfTWFfTWlfSHVfQmlfU2FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6Ik1NL0QvWVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZ'@; put 'WVkgSEg6bW0iLExMTEw6ImRkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiTFQgW25nYXlvbmcgYXJhd10iLG5leHREYXk6IltCdWthcyBuZ10gTFQiLG5leHRXZWVrOiJMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCIsbGFzdERheToiTFQgW2thaGFwb25dIixs'@; put 'YXN0V2VlazoiTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToic2EgbG9vYiBuZyAlcyIscGFzdDoiJXMgYW5nIG5ha2FsaXBhcyIsczoiaWxhbmcgc2VndW5kbyIsc3M6IiVkIHNlZ3VuZG8iLG06ImlzYW5nIG1pbnV0byIsbW06'@; put 'IiVkIG1pbnV0byIsaDoiaXNhbmcgb3JhcyIsaGg6IiVkIG9yYXMiLGQ6ImlzYW5nIGFyYXciLGRkOiIlZCBhcmF3IixNOiJpc2FuZyBidXdhbiIsTU06IiVkIGJ1d2FuIix5OiJpc2FuZyB0YW9uIix5eToiJWQgdGFvbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGlu'@; put 'YWw6ZnVuY3Rpb24ocyl7cmV0dXJuIHN9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDk4MzUyKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZm8iLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByXHhlZGxfbWFpX2p1bmlf'@; put 'anVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5udWRhZ3VyX21ceGUxbmFkYWd1'@; put 'cl90XHhmZHNkYWd1cl9taWt1ZGFndXJfaFx4ZjNzZGFndXJfZnJceGVkZ2dqYWRhZ3VyX2xleWdhcmRhZ3VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1bl9tXHhlMW5fdFx4ZmRzX21pa19oXHhmM3NfZnJceGVkX2xleSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbVx4ZTFf'@; put 'dFx4ZmRfbWlfaFx4ZjNfZnJfbGUiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0sIFlZWVkgSEg6bW0ifSxj'@; put 'YWxlbmRhcjp7c2FtZURheToiW1x4Y2QgZGFnIGtsLl0gTFQiLG5leHREYXk6IltceGNkIG1vcmdpbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW1x4Y2QgZ2pceGUxciBrbC5dIExUIixsYXN0V2VlazoiW3NceGVkXHhmMHN0dV0gZGRkZCBba2xdIExUIixz'@; put 'YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ1bSAlcyIscGFzdDoiJXMgc1x4ZWRceGYwYW5pIixzOiJmXHhlMSBzZWt1bmQiLHNzOiIlZCBzZWt1bmRpciIsbToiZWluIG1pbnV0dHVyIixtbToiJWQgbWludXR0aXIiLGg6ImVpbiB0XHhlZG1pIixoaDoiJWQgdFx4ZWRtYXIi'@; put 'LGQ6ImVpbiBkYWd1ciIsZGQ6IiVkIGRhZ2FyIixNOiJlaW4gbVx4ZTFuYVx4ZjB1ciIsTU06IiVkIG1ceGUxbmFceGYwaXIiLHk6ImVpdHQgXHhlMXIiLHl5OiIlZCBceGUxciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxk'@; put 'b3k6NH19KX0oaCg5NzU4NikpfSw0MjA5NihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImZyLWNhIix7bW9udGhzOiJqYW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRfc2VwdGVtYnJlX29jdG9icmVf'@; put 'bm92ZW1icmVfZFx4ZTljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4ZmJ0X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFu'@; put 'Y2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9qZV92ZV9zYSIuc3BsaXQoIl8i'@; put 'KSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3Nh'@; put 'bWVEYXk6IltBdWpvdXJkXHUyMDE5aHVpIFx4ZTBdIExUIixuZXh0RGF5OiJbRGVtYWluIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltIaWVyIFx4ZTBdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxh'@; put 'dGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsc3M6IiVkIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91'@; put 'cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24ocyxBKXtzd2l0Y2goQSl7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEIjpjYXNlIkRERCI6'@; put 'Y2FzZSJkIjpyZXR1cm4gcysoMT09PXM/ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gcysoMT09PXM/InJlIjoiZSIpfX19KX0oaCg5NzU4NikpfSw5NTc1OShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImZyLWNoIix7bW9udGhzOiJq'@; put 'YW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZFx4ZTljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4ZmJ0'@; put 'X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIu'@; put 'X2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9qZV92ZV9zYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZ'@; put 'WVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkXHUyMDE5aHVpIFx4ZTBdIExUIixuZXh0RGF5OiJbRGVtYWluIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3RE'@; put 'YXk6IltIaWVyIFx4ZTBdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsc3M6IiVkIHNlY29uZGVzIixtOiJ1bmUgbWlu'@; put 'dXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9y'@; put 'ZGluYWw6ZnVuY3Rpb24ocyxBKXtzd2l0Y2goQSl7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEIjpjYXNlIkRERCI6Y2FzZSJkIjpyZXR1cm4gcysoMT09PXM/ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gcysoMT09PXM/InJlIjoiZSIpfX0sd2Vlazp7ZG93OjEsZG95'@; put 'OjR9fSl9KGgoOTc1ODYpKX0sNDA1OShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIEE9LyhqYW52XC4/fGZceGU5dnJcLj98bWFyc3xhdnJcLj98bWFpfGp1aW58anVpbFwuP3xhb1x4ZmJ0fHNlcHRcLj98b2N0XC4/fG5vdlwuP3xkXHhlOWNcLj98amFudmllcnxmXHhl'@; put 'OXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58anVpbGxldHxhb1x4ZmJ0fHNlcHRlbWJyZXxvY3RvYnJlfG5vdmVtYnJlfGRceGU5Y2VtYnJlKS9pLHY9Wy9eamFudi9pLC9eZlx4ZTl2ci9pLC9ebWFycy9pLC9eYXZyL2ksL15tYWkvaSwvXmp1aW4vaSwvXmp1aWwvaSwvXmFvXHhmYnQvaSwv'@; put 'XnNlcHQvaSwvXm9jdC9pLC9ebm92L2ksL15kXHhlOWMvaV07eS5kZWZpbmVMb2NhbGUoImZyIix7bW9udGhzOiJqYW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZFx4ZTljZW1icmUiLnNwbGl0'@; put 'KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4ZmJ0X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1JlZ2V4OkEsbW9udGhzU2hvcnRSZWdleDpBLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnZpZXJ8'@; put 'Zlx4ZTl2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW9ceGZidHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkXHhlOWNlbWJyZSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi8oamFudlwuP3xmXHhlOXZyXC4/fG1hcnN8YXZyXC4/fG1haXxqdWlufGp1aWxcLj98YW9c'@; put 'eGZidHxzZXB0XC4/fG9jdFwuP3xub3ZcLj98ZFx4ZTljXC4/KS9pLG1vbnRoc1BhcnNlOnYsbG9uZ01vbnRoc1BhcnNlOnYsc2hvcnRNb250aHNQYXJzZTp2LHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiks'@; put 'd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlfbHVfbWFfbWVfamVfdmVfc2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6'@; put 'bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZFx1MjAxOWh1aSBceGUwXSBMVCIsbmV4dERheToiW0RlbWFpbiBceGUwXSBM'@; put 'VCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbSGllciBceGUwXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vj'@; put 'b25kZXMiLHNzOiIlZCBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIix3OiJ1bmUgc2VtYWluZSIsd3c6IiVkIHNlbWFpbmVzIixNOiJ1biBtb2lzIixNTToiJWQgbW9p'@; put 'cyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24odyxTKXtzd2l0Y2goUyl7Y2FzZSJEIjpyZXR1cm4gdysoMT09PXc/ImVyIjoiIik7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEREQiOmNh'@; put 'c2UiZCI6cmV0dXJuIHcrKDE9PT13PyJlciI6ImUiKTtjYXNlInciOmNhc2UiVyI6cmV0dXJuIHcrKDE9PT13PyJyZSI6ImUiKX19LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDE1OTU4KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz0iamFuLl9mZWIu'@; put 'X21ydC5fYXByLl9tYWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxzPSJqYW5fZmViX21ydF9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKTt5LmRlZmluZUxvY2FsZSgiZnkiLHttb250aHM6Imphbm5ld2FyaXNf'@; put 'ZmVicmV3YXJpc19tYWFydF9hcHJpbF9tYWFpZV9qdW55X2p1bHlfYXVndXN0dXNfc2VwdGltYmVyX29rdG9iZXJfbm92aW1iZXJfZGVzaW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24odixDKXtyZXR1cm4gdj8vLU1NTS0vLnRlc3QoQyk/c1t2Lm1vbnRoKCldOmNbdi5t'@; put 'b250aCgpXTpjfSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vyc2RlaV9mcmVlZF9zbmVvbiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzaS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4iLnNwbGl0KCJfIiksd2Vl'@; put 'a2RheXNNaW46IlNpX01vX1RpX1dvX1RvX0ZyX1NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExM'@; put 'TEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hqb2VkIG9tXSBMVCIsbmV4dERheToiW21vYXJuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2p1c3RlciBvbV0gTFQiLGxhc3RXZWVrOiJbXHhmNGZyXHhmYm5lXSBkZGRk'@; put 'IFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9lciAlcyIscGFzdDoiJXMgbHluIixzOiJpbiBwZWFyIHNla29uZGVuIixzczoiJWQgc2Vrb25kZW4iLG06ImllbiBtaW5ceGZhdCIsbW06IiVkIG1pbnV0ZW4iLGg6ImllbiBvZXJlIixoaDoiJWQgb2VyZW4i'@; put 'LGQ6ImllbiBkZWkiLGRkOiIlZCBkYWdlbiIsTToiaWVuIG1vYW5uZSIsTU06IiVkIG1vYW5uZW4iLHk6ImllbiBqaWVyIix5eToiJWQgamllcnJlbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbih2KXtyZXR1cm4gdisoMT09PXZ8'@; put 'fDg9PT12fHx2Pj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sOTQxNDMoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJnYSIse21vbnRoczpbIkVhblx4ZTFpciIsIkZlYWJocmEiLCJNXHhlMXJ0YSIsIkFp'@; put 'YnJlXHhlMW4iLCJCZWFsdGFpbmUiLCJNZWl0aGVhbWgiLCJJXHhmYWlsIiwiTFx4ZmFuYXNhIiwiTWVceGUxbiBGXHhmM21oYWlyIiwiRGVpcmVhZGggRlx4ZjNtaGFpciIsIlNhbWhhaW4iLCJOb2xsYWlnIl0sbW9udGhzU2hvcnQ6WyJFYW4iLCJGZWFiaCIsIk1ceGUxcnQiLCJBaWIiLCJC'@; put 'ZWFsIiwiTWVpdGgiLCJJXHhmYWlsIiwiTFx4ZmFuIiwiTS5GLiIsIkQuRi4iLCJTYW1oIiwiTm9sbCJdLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6WyJEXHhlOSBEb21obmFpZ2giLCJEXHhlOSBMdWFpbiIsIkRceGU5IE1ceGUxaXJ0IiwiRFx4ZTkgQ1x4ZTlhZGFvaW4iLCJEXHhl'@; put 'OWFyZGFvaW4iLCJEXHhlOSBoQW9pbmUiLCJEXHhlOSBTYXRoYWlybiJdLHdlZWtkYXlzU2hvcnQ6WyJEb21oIiwiTHVhbiIsIk1ceGUxaXJ0IiwiQ1x4ZTlhZCIsIkRceGU5YXIiLCJBb2luZSIsIlNhdGgiXSx3ZWVrZGF5c01pbjpbIkRvIiwiTHUiLCJNXHhlMSIsIkNceGU5IiwiRFx4ZTki'@; put 'LCJBIiwiU2EiXSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJbm5p'@; put 'dSBhZ10gTFQiLG5leHREYXk6IltBbVx4ZTFyYWNoIGFnXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FnXSBMVCIsbGFzdERheToiW0lublx4ZTkgYWddIExUIixsYXN0V2VlazoiZGRkZCBbc2VvIGNhaXRlXSBbYWddIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpICVz'@; put 'IixwYXN0OiIlcyBceGYzIHNoaW4iLHM6ImNceGZhcGxhIHNvaWNpbmQiLHNzOiIlZCBzb2ljaW5kIixtOiJuXHhmM2ltXHhlOWFkIixtbToiJWQgblx4ZjNpbVx4ZTlhZCIsaDoidWFpciBhbiBjaGxvaWciLGhoOiIlZCB1YWlyIGFuIGNobG9pZyIsZDoibFx4ZTEiLGRkOiIlZCBsXHhlMSIs'@; put 'TToibVx4ZWQiLE1NOiIlZCBtXHhlZG9ubmEiLHk6ImJsaWFpbiIseXk6IiVkIGJsaWFpbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZHxuYXxtaCkvLG9yZGluYWw6ZnVuY3Rpb24oUyl7cmV0dXJuIFMrKDE9PT1TPyJkIjpTJTEwPT0yPyJuYSI6Im1oIil9LHdlZWs6e2Rv'@; put 'dzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDY3MDI4KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiZ2QiLHttb250aHM6WyJBbSBGYW9pbGxlYWNoIiwiQW4gR2VhcnJhbiIsIkFtIE1ceGUwcnQiLCJBbiBHaWJsZWFuIiwiQW4gQ1x4ZThpdGVhbiIs'@; put 'IkFuIHQtXHhkMmdtaGlvcyIsIkFuIHQtSXVjaGFyIiwiQW4gTFx4ZjluYXN0YWwiLCJBbiB0LVN1bHRhaW4iLCJBbiBEXHhlMG1oYWlyIiwiQW4gdC1TYW1oYWluIiwiQW4gRFx4ZjliaGxhY2hkIl0sbW9udGhzU2hvcnQ6WyJGYW9pIiwiR2VhciIsIk1ceGUwcnQiLCJHaWJsIiwiQ1x4ZThp'@; put 'dCIsIlx4ZDJnbWgiLCJJdWNoIiwiTFx4ZjluIiwiU3VsdCIsIkRceGUwbWgiLCJTYW1oIiwiRFx4ZjliaCJdLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6WyJEaWRceGYybWhuYWljaCIsIkRpbHVhaW4iLCJEaW1ceGUwaXJ0IiwiRGljaWFkYWluIiwiRGlhcmRhb2luIiwiRGloYW9p'@; put 'bmUiLCJEaXNhdGhhaXJuZSJdLHdlZWtkYXlzU2hvcnQ6WyJEaWQiLCJEaWwiLCJEaW0iLCJEaWMiLCJEaWEiLCJEaWgiLCJEaXMiXSx3ZWVrZGF5c01pbjpbIkRceGYyIiwiTHUiLCJNXHhlMCIsIkNpIiwiQXIiLCJIYSIsIlNhIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJI'@; put 'SDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQW4tZGl1Z2ggYWlnXSBMVCIsbmV4dERheToiW0EtbVx4ZTBpcmVhY2ggYWlnXSBM'@; put 'VCIsbmV4dFdlZWs6ImRkZGQgW2FpZ10gTFQiLGxhc3REYXk6IltBbi1kXHhlOCBhaWddIExUIixsYXN0V2VlazoiZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImFubiBhbiAlcyIscGFzdDoiYmhvIGNoaW9ubiAlcyIsczoi'@; put 'YmVhZ2FuIGRpb2dhbiIsc3M6IiVkIGRpb2dhbiIsbToibWlvbmFpZCIsbW06IiVkIG1pb25haWRlYW4iLGg6InVhaXIiLGhoOiIlZCB1YWlyZWFuIixkOiJsYXRoYSIsZGQ6IiVkIGxhdGhhIixNOiJtXHhlY29zIixNTToiJWQgbVx4ZWNvc2FuIix5OiJibGlhZGhuYSIseXk6IiVkIGJsaWFk'@; put 'aG5hIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShkfG5hfG1oKS8sb3JkaW5hbDpmdW5jdGlvbihTKXtyZXR1cm4gUysoMT09PVM/ImQiOlMlMTA9PTI/Im5hIjoibWgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sODA0MjgoZmUsaixoKXshZnVuY3Rpb24o'@; put 'eSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJnbCIse21vbnRoczoieGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJpbF9tYWlvX3h1XHhmMW9feHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Inhhbi5f'@; put 'ZmViLl9tYXIuX2Fici5fbWFpLl94dVx4ZjEuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRvbWluZ29fbHVuc19tYXJ0ZXNfbVx4ZTlyY29yZXNfeG92ZXNfdmVucmVzX3NceGUxYmFkbyIuc3BsaXQoIl8i'@; put 'KSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tXHhlOXIuX3hvdi5fdmVuLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9tXHhlOV94b192ZV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI'@; put 'Om1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXty'@; put 'ZXR1cm4iW2hveGUgIisoMSE9PXRoaXMuaG91cnMoKT8iXHhlMXMiOiJceGUxIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4ZjFceGUxICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiXHhlMSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4i'@; put 'ZGRkZCBbIisoMSE9PXRoaXMuaG91cnMoKT8iXHhlMXMiOiJhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltvbnRlICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTEiOiJhIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbb10gZGRkZCBbcGFzYWRvICIr'@; put 'KDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiYSIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihzKXtyZXR1cm4gMD09PXMuaW5kZXhPZigidW4iKT8ibiIrczoiZW4gIitzfSxwYXN0OiJoYWkgJXMiLHM6InVucyBzZWd1bmRvcyIsc3M6IiVk'@; put 'IHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmhhIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZFx4ZWRhIixkZDoiJWQgZFx4ZWRhcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5h'@; put 'bFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw3Njg2MShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhBLHYsQyx3KXt2YXIgUz17czpbIlx1MDkyNVx1MDk0Ylx1MDkyMVx1MDky'@; put 'Zlx1MDkzZSBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5MjFcdTA5M2VcdTA5MDJcdTA5MjhcdTA5NDAiLCJcdTA5MjVcdTA5NGJcdTA5MjFcdTA5NDcgXHUwOTM4XHUwOTQ1XHUwOTE1XHUwOTAyXHUwOTIxIl0sc3M6W0ErIiBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5MjFcdTA5'@; put 'M2VcdTA5MDJcdTA5MjhcdTA5NDAiLEErIiBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5MjEiXSxtOlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5NDJcdTA5MWYi'@; put 'XSxtbTpbQSsiIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0MCIsQSsiIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkwMiJdLGg6WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1'@; put 'IFx1MDkzNVx1MDkzMCJdLGhoOltBKyIgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIixBKyIgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTAyIl0sZDpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5M2VcdTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUw'@; put 'OTI2XHUwOTQwXHUwOTM4Il0sZGQ6W0ErIiBcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MjhcdTA5NDAiLEErIiBcdTA5MjZcdTA5NDBcdTA5MzgiXSxNOlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkz'@; put 'ZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZcdTA5MjhcdTA5NGIiXSxNTTpbQSsiIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkyOFx1MDk0MCIsQSsiIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDky'@; put 'OFx1MDk0NyJdLHk6WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzOCJdLHl5OltBKyIgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTAyXHUwOTI4XHUw'@; put 'OTQwIixBKyIgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTAyIl19O3JldHVybiB3P1NbQ11bMF06U1tDXVsxXX15LmRlZmluZUxvY2FsZSgiZ29tLWRldmEiLHttb250aHM6e3N0YW5kYWxvbmU6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0N1x1MDkzNVx1MDkzZVx1MDkzMFx1'@; put 'MDk0MF9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0MFx1MDkzMl9cdTA5MmVcdTA5NDdfXHUwOTFjXHUwOTQyXHUwOTI4'@; put 'X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkyZl9cdTA5MTFcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MWZfXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Ylx1MDkyY1x1MDkzMF9cdTA5MjhcdTA5NGJcdTA5'@; put 'MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpLGZvcm1hdDoiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3XHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwXHUwOTFhXHUwOTRkXHUw'@; put 'OTJmXHUwOTNlX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MFx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTBmXHUw'@; put 'OTJhXHUwOTRkXHUwOTMwXHUwOTQwXHUwOTMyXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkyZVx1MDk0N1x1MDkyZlx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MWNcdTA5NDJcdTA5MjhcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTFjXHUw'@; put 'OTQxXHUwOTMyXHUwOTJmXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkxMVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkxZlx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBcdTA5M2VcdTA5'@; put 'MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTExXHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMFx1MDkzZVx1MDkxYVx1MDk0'@; put 'ZFx1MDkyZlx1MDkzZV9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2UiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L01NTU0oXHMpK0Rbb0RdPy99LG1vbnRoc1Nob3J0OiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDcu'@; put 'X1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MS5fXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0MC5fXHUwOTJlXHUwOTQ3X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzIuX1x1MDkxMVx1MDkx'@; put 'Ny5fXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyLl9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGIuX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMi5fXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyLiIuc3BsaXQoIl8iKSxtb250'@; put 'aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTA5MDZcdTA5MmZcdTA5MjRcdTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzM1x1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MzVcdTA5M2VcdTA5MzBfXHUw'@; put 'OTJjXHUwOTNmXHUwOTMwXHUwOTQ3XHUwOTM4XHUwOTRkXHUwOTI0XHUwOTNlXHUwOTMwX1x1MDkzOFx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5NDdcdTA5MjhcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTA2'@; put 'XHUwOTJmXHUwOTI0Ll9cdTA5MzhcdTA5NGJcdTA5MmUuX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzMy5fXHUwOTJjXHUwOTQxXHUwOTI3Ll9cdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDdcdTA5MzhcdTA5NGRcdTA5MjQuX1x1MDkzOFx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMC5fXHUwOTM2XHUw'@; put 'OTQ3XHUwOTI4LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOTA2X1x1MDkzOFx1MDk0Yl9cdTA5MmVcdTA5MDJfXHUwOTJjXHUwOTQxX1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0N19cdTA5MzhcdTA5NDFfXHUwOTM2XHUwOTQ3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDoh'@; put 'MCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlXHUwOTAyXSIsTFRTOiJBIGg6bW06c3MgW1x1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZVx1MDkwMl0iLEw6IkRELU1NLVlZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1N'@; put 'TU0gWVlZWSBBIGg6bW0gW1x1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZVx1MDkwMl0iLExMTEw6ImRkZGQsIE1NTU0gRG8sIFlZWVksIEEgaDptbSBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlXHUwOTAyXSIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW1x1MDkz'@; put 'NVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZVx1MDkwMl0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkyZlx1MDkxY10gTFQiLG5leHREYXk6IltcdTA5MmJcdTA5M2VcdTA5MzJcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MDJdIExUIixuZXh0V2VlazoiW1x1MDkyYlx1MDk0MVx1MDky'@; put 'MVx1MDkzMlx1MDk0Yl0gZGRkZFssXSBMVCIsbGFzdERheToiW1x1MDkxNVx1MDkzZVx1MDkzMl0gTFQiLGxhc3RXZWVrOiJbXHUwOTJiXHUwOTNlXHUwOTFmXHUwOTMyXHUwOTRiXSBkZGRkWyxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyIscGFzdDoiJXMg'@; put 'XHUwOTA2XHUwOTI2XHUwOTQwXHUwOTAyIixzOmMsc3M6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdTA5MzVcdTA5NDdcdTA5MzApLyxvcmRpbmFsOmZ1bmN0aW9uKEEsdil7cmV0dXJuIkQi'@; put 'PT09dj9BKyJcdTA5MzVcdTA5NDdcdTA5MzAiOkF9LHdlZWs6e2RvdzowLGRveTozfSxtZXJpZGllbVBhcnNlOi9cdTA5MzBcdTA5M2VcdTA5MjRcdTA5NDB8XHUwOTM4XHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwXHUwOTAyfFx1MDkyNlx1MDkyOFx1MDkyYVx1MDkzZVx1MDkzMFx1MDkzZVx1'@; put 'MDkwMnxcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MWNcdTA5NDcvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihBLHYpe3JldHVybiAxMj09PUEmJihBPTApLCJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NDAiPT09dj9BPDQ/QTpBKzEyOiJcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDBcdTA5MDIi'@; put 'PT09dj9BOiJcdTA5MjZcdTA5MjhcdTA5MmFcdTA5M2VcdTA5MzBcdTA5M2VcdTA5MDIiPT09dj9BPjEyP0E6QSsxMjoiXHUwOTM4XHUwOTNlXHUwOTAyXHUwOTFjXHUwOTQ3Ij09PXY/QSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEEsdixDKXtyZXR1cm4gQTw0PyJcdTA5MzBcdTA5'@; put 'M2VcdTA5MjRcdTA5NDAiOkE8MTI/Ilx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MFx1MDkwMiI6QTwxNj8iXHUwOTI2XHUwOTI4XHUwOTJhXHUwOTNlXHUwOTMwXHUwOTNlXHUwOTAyIjpBPDIwPyJcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MWNcdTA5NDciOiJcdTA5MzBcdTA5M2VcdTA5'@; put 'MjRcdTA5NDAifX0pfShoKDk3NTg2KSl9LDU3NzE4KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKEEsdixDLHcpe3ZhciBTPXtzOlsidGhvZGRlYSBzZWtvbmRhbW5pIiwidGhvZGRlIHNla29uZCJdLHNzOltBKyIgc2Vrb25kYW1uaSIsQSsiIHNla29uZCJd'@; put 'LG06WyJla2EgbWludGFuIiwiZWsgbWludXQiXSxtbTpbQSsiIG1pbnRhbW5pIixBKyIgbWludGFtIl0saDpbImVrYSB2b3JhbiIsImVrIHZvciJdLGhoOltBKyIgdm9yYW1uaSIsQSsiIHZvcmFtIl0sZDpbImVrYSBkaXNhbiIsImVrIGRpcyJdLGRkOltBKyIgZGlzYW1uaSIsQSsiIGRpcyJd'@; put 'LE06WyJla2EgbWhvaW5lYW4iLCJlayBtaG9pbm8iXSxNTTpbQSsiIG1ob2luZWFtbmkiLEErIiBtaG9pbmUiXSx5OlsiZWthIHZvcnNhbiIsImVrIHZvcm9zIl0seXk6W0ErIiB2b3JzYW1uaSIsQSsiIHZvcnNhbSJdfTtyZXR1cm4gdz9TW0NdWzBdOlNbQ11bMV19eS5kZWZpbmVMb2NhbGUo'@; put 'ImdvbS1sYXRuIix7bW9udGhzOntzdGFuZGFsb25lOiJKYW5lcl9GZWJyZXJfTWFyc19BYnJpbF9NYWlfSnVuX0p1bGFpX0Fnb3N0X1NldGVtYnJfT3R1YnJfTm92ZW1icl9EZXplbWJyIi5zcGxpdCgiXyIpLGZvcm1hdDoiSmFuZXJhY2hlYV9GZWJyZXJhY2hlYV9NYXJzYWNoZWFfQWJyaWxh'@; put 'Y2hlYV9NYWlhY2hlYV9KdW5hY2hlYV9KdWxhaWFjaGVhX0Fnb3N0YWNoZWFfU2V0ZW1icmFjaGVhX090dWJyYWNoZWFfTm92ZW1icmFjaGVhX0RlemVtYnJhY2hlYSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovTU1NTShccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6Ikphbi5fRmViLl9NYXJzX0Fi'@; put 'ci5fTWFpX0p1bl9KdWwuX0Fnby5fU2V0Ll9PdHUuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJBaXRhcl9Tb21hcl9Nb25nbGxhcl9CdWRodmFyX0JpcmVzdGFyX1N1a3Jhcl9Tb24ndmFyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFp'@; put 'dC5fU29tLl9Nb24uX0J1ZC5fQnJlLl9TdWsuX1Nvbi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFpX1NtX01vX0J1X0JyX1N1X1NuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBbdmF6dGFdIixMVFM6IkEgaDptbTpzcyBb'@; put 'dmF6dGFdIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgQSBoOm1tIFt2YXp0YV0iLExMTEw6ImRkZGQsIE1NTU0gRG8sIFlZWVksIEEgaDptbSBbdmF6dGFdIixsbGxsOiJkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbdmF6dGFdIn0sY2FsZW5kYXI6'@; put 'e3NhbWVEYXk6IltBaXpdIExUIixuZXh0RGF5OiJbRmFsZWFtXSBMVCIsbmV4dFdlZWs6IltGdWRkbG9dIGRkZGRbLF0gTFQiLGxhc3REYXk6IltLYWxdIExUIixsYXN0V2VlazoiW0ZhdHRsb10gZGRkZFssXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMiLHBh'@; put 'c3Q6IiVzIGFkaW0iLHM6YyxzczpjLG06YyxtbTpjLGg6YyxoaDpjLGQ6YyxkZDpjLE06YyxNTTpjLHk6Yyx5eTpjfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyKS8sb3JkaW5hbDpmdW5jdGlvbihBLHYpe3JldHVybiJEIj09PXY/QSsiZXIiOkF9LHdlZWs6e2RvdzowLGRv'@; put 'eTozfSxtZXJpZGllbVBhcnNlOi9yYXRpfHNva2FsbGltfGRvbnBhcmFtfHNhbmplLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oQSx2KXtyZXR1cm4gMTI9PT1BJiYoQT0wKSwicmF0aSI9PT12P0E8ND9BOkErMTI6InNva2FsbGltIj09PXY/QToiZG9ucGFyYW0iPT09dj9BPjEyP0E6QSsxMjoi'@; put 'c2FuamUiPT09dj9BKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oQSx2LEMpe3JldHVybiBBPDQ/InJhdGkiOkE8MTI/InNva2FsbGltIjpBPDE2PyJkb25wYXJhbSI6QTwyMD8ic2FuamUiOiJyYXRpIn19KX0oaCg5NzU4NikpfSwyNjgyNyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNl'@; put 'IHN0cmljdCI7dmFyIGM9ezE6Ilx1MGFlNyIsMjoiXHUwYWU4IiwzOiJcdTBhZTkiLDQ6Ilx1MGFlYSIsNToiXHUwYWViIiw2OiJcdTBhZWMiLDc6Ilx1MGFlZCIsODoiXHUwYWVlIiw5OiJcdTBhZWYiLDA6Ilx1MGFlNiJ9LHM9eyJcdTBhZTciOiIxIiwiXHUwYWU4IjoiMiIsIlx1MGFlOSI6'@; put 'IjMiLCJcdTBhZWEiOiI0IiwiXHUwYWViIjoiNSIsIlx1MGFlYyI6IjYiLCJcdTBhZWQiOiI3IiwiXHUwYWVlIjoiOCIsIlx1MGFlZiI6IjkiLCJcdTBhZTYiOiIwIn07eS5kZWZpbmVMb2NhbGUoImd1Iix7bW9udGhzOiJcdTBhOWNcdTBhYmVcdTBhYThcdTBhY2RcdTBhYWZcdTBhYzFcdTBh'@; put 'ODZcdTBhYjBcdTBhYzBfXHUwYWFiXHUwYWM3XHUwYWFjXHUwYWNkXHUwYWIwXHUwYWMxXHUwYTg2XHUwYWIwXHUwYWMwX1x1MGFhZVx1MGFiZVx1MGFiMFx1MGFjZFx1MGE5YV9cdTBhOGZcdTBhYWFcdTBhY2RcdTBhYjBcdTBhYmZcdTBhYjJfXHUwYWFlXHUwYWM3X1x1MGE5Y1x1MGFjMlx1'@; put 'MGFhOF9cdTBhOWNcdTBhYzFcdTBhYjJcdTBhYmVcdTBhODhfXHUwYTkxXHUwYTk3XHUwYWI4XHUwYWNkXHUwYTlmX1x1MGFiOFx1MGFhYVx1MGFjZFx1MGE5Zlx1MGFjN1x1MGFhZVx1MGFjZFx1MGFhY1x1MGFiMF9cdTBhOTFcdTBhOTVcdTBhY2RcdTBhOWZcdTBhY2RcdTBhYWNcdTBhYjBf'@; put 'XHUwYWE4XHUwYWI1XHUwYWM3XHUwYWFlXHUwYWNkXHUwYWFjXHUwYWIwX1x1MGFhMVx1MGFiZlx1MGFiOFx1MGFjN1x1MGFhZVx1MGFjZFx1MGFhY1x1MGFiMCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwYTljXHUwYWJlXHUwYWE4XHUwYWNkXHUwYWFmXHUwYWMxLl9cdTBhYWJcdTBh'@; put 'YzdcdTBhYWNcdTBhY2RcdTBhYjBcdTBhYzEuX1x1MGFhZVx1MGFiZVx1MGFiMFx1MGFjZFx1MGE5YV9cdTBhOGZcdTBhYWFcdTBhY2RcdTBhYjBcdTBhYmYuX1x1MGFhZVx1MGFjN19cdTBhOWNcdTBhYzJcdTBhYThfXHUwYTljXHUwYWMxXHUwYWIyXHUwYWJlLl9cdTBhOTFcdTBhOTcuX1x1'@; put 'MGFiOFx1MGFhYVx1MGFjZFx1MGE5Zlx1MGFjNy5fXHUwYTkxXHUwYTk1XHUwYWNkXHUwYTlmXHUwYWNkLl9cdTBhYThcdTBhYjVcdTBhYzcuX1x1MGFhMVx1MGFiZlx1MGFiOFx1MGFjNy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwYWIwXHUwYWI1XHUw'@; put 'YWJmXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFiOFx1MGFjYlx1MGFhZVx1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYWVcdTBhODJcdTBhOTdcdTBhYjNcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWFjXHUwYWMxXHUwYWE3XHUwYWNkXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGE5N1x1MGFjMVx1MGFiMFx1'@; put 'MGFjMVx1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYjZcdTBhYzFcdTBhOTVcdTBhY2RcdTBhYjBcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWI2XHUwYWE4XHUwYWJmXHUwYWI1XHUwYWJlXHUwYWIwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGFiMFx1MGFiNVx1MGFiZl9cdTBhYjhcdTBh'@; put 'Y2JcdTBhYWVfXHUwYWFlXHUwYTgyXHUwYTk3XHUwYWIzX1x1MGFhY1x1MGFjMVx1MGFhN1x1MGFjZF9cdTBhOTdcdTBhYzFcdTBhYjBcdTBhYzFfXHUwYWI2XHUwYWMxXHUwYTk1XHUwYWNkXHUwYWIwX1x1MGFiNlx1MGFhOFx1MGFiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwYWIw'@; put 'X1x1MGFiOFx1MGFjYl9cdTBhYWVcdTBhODJfXHUwYWFjXHUwYWMxX1x1MGE5N1x1MGFjMV9cdTBhYjZcdTBhYzFfXHUwYWI2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyIsTFRTOiJBIGg6bW06c3Mg'@; put 'XHUwYWI1XHUwYWJlXHUwYTk3XHUwYWNkXHUwYWFmXHUwYWM3IixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2RcdTBhYWZcdTBhYzciLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g'@; put 'XHUwYWI1XHUwYWJlXHUwYTk3XHUwYWNkXHUwYWFmXHUwYWM3In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBhODZcdTBhOWNdIExUIixuZXh0RGF5OiJbXHUwYTk1XHUwYWJlXHUwYWIyXHUwYWM3XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwYTk3XHUwYTg3XHUwYTk1'@; put 'XHUwYWJlXHUwYWIyXHUwYWM3XSBMVCIsbGFzdFdlZWs6IltcdTBhYWFcdTBhYmVcdTBhOWJcdTBhYjJcdTBhYmVdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBhYWVcdTBhYmUiLHBhc3Q6IiVzIFx1MGFhYVx1MGFiOVx1MGFjN1x1MGFiMlx1'@; put 'MGFiZSIsczoiXHUwYTg1XHUwYWFlXHUwYWMxXHUwYTk1IFx1MGFhYVx1MGFiM1x1MGFjYiIsc3M6IiVkIFx1MGFiOFx1MGFjN1x1MGE5NVx1MGE4Mlx1MGFhMSIsbToiXHUwYThmXHUwYTk1IFx1MGFhZVx1MGFiZlx1MGFhOFx1MGFiZlx1MGE5ZiIsbW06IiVkIFx1MGFhZVx1MGFiZlx1MGFh'@; put 'OFx1MGFiZlx1MGE5ZiIsaDoiXHUwYThmXHUwYTk1IFx1MGE5NVx1MGFiMlx1MGFiZVx1MGE5NSIsaGg6IiVkIFx1MGE5NVx1MGFiMlx1MGFiZVx1MGE5NSIsZDoiXHUwYThmXHUwYTk1IFx1MGFhNlx1MGFiZlx1MGFiNVx1MGFiOCIsZGQ6IiVkIFx1MGFhNlx1MGFiZlx1MGFiNVx1MGFiOCIs'@; put 'TToiXHUwYThmXHUwYTk1IFx1MGFhZVx1MGFiOVx1MGFiZlx1MGFhOFx1MGFjYiIsTU06IiVkIFx1MGFhZVx1MGFiOVx1MGFiZlx1MGFhOFx1MGFjYiIseToiXHUwYThmXHUwYTk1IFx1MGFiNVx1MGFiMFx1MGFjZFx1MGFiNyIseXk6IiVkIFx1MGFiNVx1MGFiMFx1MGFjZFx1MGFiNyJ9LHBy'@; put 'ZXBhcnNlOmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1tcdTBhZTdcdTBhZThcdTBhZTlcdTBhZWFcdTBhZWJcdTBhZWNcdTBhZWRcdTBhZWVcdTBhZWZcdTBhZTZdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBs'@; put 'YWNlKC9cZC9nLGZ1bmN0aW9uKEMpe3JldHVybiBjW0NdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGFiMFx1MGFiZVx1MGFhNHxcdTBhYWNcdTBhYWFcdTBhY2JcdTBhYjB8XHUwYWI4XHUwYWI1XHUwYWJlXHUwYWIwfFx1MGFiOFx1MGFiZVx1MGE4Mlx1MGE5Yy8sbWVyaWRpZW1Ib3VyOmZ1bmN0'@; put 'aW9uKHYsQyl7cmV0dXJuIDEyPT09diYmKHY9MCksIlx1MGFiMFx1MGFiZVx1MGFhNCI9PT1DP3Y8ND92OnYrMTI6Ilx1MGFiOFx1MGFiNVx1MGFiZVx1MGFiMCI9PT1DP3Y6Ilx1MGFhY1x1MGFhYVx1MGFjYlx1MGFiMCI9PT1DP3Y+PTEwP3Y6disxMjoiXHUwYWI4XHUwYWJlXHUwYTgyXHUw'@; put 'YTljIj09PUM/disxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsQyx3KXtyZXR1cm4gdjw0PyJcdTBhYjBcdTBhYmVcdTBhYTQiOnY8MTA/Ilx1MGFiOFx1MGFiNVx1MGFiZVx1MGFiMCI6djwxNz8iXHUwYWFjXHUwYWFhXHUwYWNiXHUwYWIwIjp2PDIwPyJcdTBhYjhcdTBhYmVcdTBh'@; put 'ODJcdTBhOWMiOiJcdTBhYjBcdTBhYmVcdTBhYTQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oaCg5NzU4NikpfSwyMTkzNihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImhlIix7bW9udGhzOiJcdTA1ZDlcdTA1ZTBcdTA1ZDVcdTA1ZDBcdTA1ZThf'@; put 'XHUwNWU0XHUwNWQxXHUwNWU4XHUwNWQ1XHUwNWQwXHUwNWU4X1x1MDVkZVx1MDVlOFx1MDVlNV9cdTA1ZDBcdTA1ZTRcdTA1ZThcdTA1ZDlcdTA1ZGNfXHUwNWRlXHUwNWQwXHUwNWQ5X1x1MDVkOVx1MDVkNVx1MDVlMFx1MDVkOV9cdTA1ZDlcdTA1ZDVcdTA1ZGNcdTA1ZDlfXHUwNWQwXHUw'@; put 'NWQ1XHUwNWQyXHUwNWQ1XHUwNWUxXHUwNWQ4X1x1MDVlMVx1MDVlNFx1MDVkOFx1MDVkZVx1MDVkMVx1MDVlOF9cdTA1ZDBcdTA1ZDVcdTA1ZTdcdTA1ZDhcdTA1ZDVcdTA1ZDFcdTA1ZThfXHUwNWUwXHUwNWQ1XHUwNWQxXHUwNWRlXHUwNWQxXHUwNWU4X1x1MDVkM1x1MDVlNlx1MDVkZVx1'@; put 'MDVkMVx1MDVlOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNWQ5XHUwNWUwXHUwNWQ1XHUwNWYzX1x1MDVlNFx1MDVkMVx1MDVlOFx1MDVmM19cdTA1ZGVcdTA1ZThcdTA1ZTVfXHUwNWQwXHUwNWU0XHUwNWU4XHUwNWYzX1x1MDVkZVx1MDVkMFx1MDVkOV9cdTA1ZDlcdTA1ZDVcdTA1'@; put 'ZTBcdTA1ZDlfXHUwNWQ5XHUwNWQ1XHUwNWRjXHUwNWQ5X1x1MDVkMFx1MDVkNVx1MDVkMlx1MDVmM19cdTA1ZTFcdTA1ZTRcdTA1ZDhcdTA1ZjNfXHUwNWQwXHUwNWQ1XHUwNWU3XHUwNWYzX1x1MDVlMFx1MDVkNVx1MDVkMVx1MDVmM19cdTA1ZDNcdTA1ZTZcdTA1ZGVcdTA1ZjMiLnNwbGl0'@; put 'KCJfIiksd2Vla2RheXM6Ilx1MDVlOFx1MDVkMFx1MDVlOVx1MDVkNVx1MDVkZl9cdTA1ZTlcdTA1ZTBcdTA1ZDlfXHUwNWU5XHUwNWRjXHUwNWQ5XHUwNWU5XHUwNWQ5X1x1MDVlOFx1MDVkMVx1MDVkOVx1MDVlMlx1MDVkOV9cdTA1ZDdcdTA1ZGVcdTA1ZDlcdTA1ZTlcdTA1ZDlfXHUwNWU5'@; put 'XHUwNWQ5XHUwNWU5XHUwNWQ5X1x1MDVlOVx1MDVkMVx1MDVlYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA1ZDBcdTA1ZjNfXHUwNWQxXHUwNWYzX1x1MDVkMlx1MDVmM19cdTA1ZDNcdTA1ZjNfXHUwNWQ0XHUwNWYzX1x1MDVkNVx1MDVmM19cdTA1ZTlcdTA1ZjMiLnNwbGl0KCJf'@; put 'Iiksd2Vla2RheXNNaW46Ilx1MDVkMF9cdTA1ZDFfXHUwNWQyX1x1MDVkM19cdTA1ZDRfXHUwNWQ1X1x1MDVlOSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbXHUwNWQxXU1NTU0gWVlZWSIsTExMOiJE'@; put 'IFtcdTA1ZDFdTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFtcdTA1ZDFdTU1NTSBZWVlZIEhIOm1tIixsOiJEL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6'@; put 'IltcdTA1ZDRcdTA1ZDlcdTA1ZDVcdTA1ZGQgXHUwNWQxXHUwNWJlXUxUIixuZXh0RGF5OiJbXHUwNWRlXHUwNWQ3XHUwNWU4IFx1MDVkMVx1MDViZV1MVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDVkMVx1MDVlOVx1MDVlMlx1MDVkNF0gTFQiLGxhc3REYXk6IltcdTA1ZDBcdTA1ZWFcdTA1ZGVc'@; put 'dTA1ZDVcdTA1ZGMgXHUwNWQxXHUwNWJlXUxUIixsYXN0V2VlazoiW1x1MDVkMVx1MDVkOVx1MDVkNVx1MDVkZF0gZGRkZCBbXHUwNWQ0XHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ1XHUwNWRmIFx1MDVkMVx1MDVlOVx1MDVlMlx1MDVkNF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1l'@; put 'OntmdXR1cmU6Ilx1MDVkMVx1MDVlMlx1MDVkNVx1MDVkMyAlcyIscGFzdDoiXHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ5ICVzIixzOiJcdTA1ZGVcdTA1ZTFcdTA1ZTRcdTA1ZTggXHUwNWU5XHUwNWUwXHUwNWQ5XHUwNWQ1XHUwNWVhIixzczoiJWQgXHUwNWU5XHUwNWUwXHUwNWQ5XHUwNWQ1'@; put 'XHUwNWVhIixtOiJcdTA1ZDNcdTA1ZTdcdTA1ZDQiLG1tOiIlZCBcdTA1ZDNcdTA1ZTdcdTA1ZDVcdTA1ZWEiLGg6Ilx1MDVlOVx1MDVlMlx1MDVkNCIsaGg6ZnVuY3Rpb24ocyl7cmV0dXJuIDI9PT1zPyJcdTA1ZTlcdTA1ZTJcdTA1ZWFcdTA1ZDlcdTA1ZDlcdTA1ZGQiOnMrIiBcdTA1ZTlc'@; put 'dTA1ZTJcdTA1ZDVcdTA1ZWEifSxkOiJcdTA1ZDlcdTA1ZDVcdTA1ZGQiLGRkOmZ1bmN0aW9uKHMpe3JldHVybiAyPT09cz8iXHUwNWQ5XHUwNWQ1XHUwNWRlXHUwNWQ5XHUwNWQ5XHUwNWRkIjpzKyIgXHUwNWQ5XHUwNWRlXHUwNWQ5XHUwNWRkIn0sTToiXHUwNWQ3XHUwNWQ1XHUwNWQzXHUw'@; put 'NWU5IixNTTpmdW5jdGlvbihzKXtyZXR1cm4gMj09PXM/Ilx1MDVkN1x1MDVkNVx1MDVkM1x1MDVlOVx1MDVkOVx1MDVkOVx1MDVkZCI6cysiIFx1MDVkN1x1MDVkNVx1MDVkM1x1MDVlOVx1MDVkOVx1MDVkZCJ9LHk6Ilx1MDVlOVx1MDVlMFx1MDVkNCIseXk6ZnVuY3Rpb24ocyl7cmV0dXJu'@; put 'IDI9PT1zPyJcdTA1ZTlcdTA1ZTBcdTA1ZWFcdTA1ZDlcdTA1ZDlcdTA1ZGQiOnMlMTA9PTAmJjEwIT09cz9zKyIgXHUwNWU5XHUwNWUwXHUwNWQ0IjpzKyIgXHUwNWU5XHUwNWUwXHUwNWQ5XHUwNWRkIn19LG1lcmlkaWVtUGFyc2U6L1x1MDVkMFx1MDVkN1x1MDVkNCJcdTA1ZTZ8XHUwNWRj'@; put 'XHUwNWU0XHUwNWUwXHUwNWQ0Ilx1MDVlNnxcdTA1ZDBcdTA1ZDdcdTA1ZThcdTA1ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkfFx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGR8XHUw'@; put 'NWRjXHUwNWU0XHUwNWUwXHUwNWQ1XHUwNWVhIFx1MDVkMVx1MDVkNVx1MDVlN1x1MDVlOHxcdTA1ZDFcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTh8XHUwNWQxXHUwNWUyXHUwNWU4XHUwNWQxL2ksaXNQTTpmdW5jdGlvbihzKXtyZXR1cm4vXihcdTA1ZDBcdTA1ZDdcdTA1ZDQiXHUwNWU2fFx1'@; put 'MDVkMFx1MDVkN1x1MDVlOFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGR8XHUwNWQxXHUwNWUyXHUwNWU4XHUwNWQxKSQvLnRlc3Qocyl9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4gczw1PyJcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDVc'@; put 'dTA1ZWEgXHUwNWQxXHUwNWQ1XHUwNWU3XHUwNWU4IjpzPDEwPyJcdTA1ZDFcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTgiOnM8MTI/dj8nXHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ0Ilx1MDVlNic6Ilx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1'@; put 'ZDlcdTA1ZDlcdTA1ZGQiOnM8MTg/dj8nXHUwNWQwXHUwNWQ3XHUwNWQ0Ilx1MDVlNic6Ilx1MDVkMFx1MDVkN1x1MDVlOFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGQiOiJcdTA1ZDFcdTA1ZTJcdTA1ZThcdTA1ZDEifX0pfShoKDk3NTg2KSl9LDMx'@; put 'MzMyKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17MToiXHUwOTY3IiwyOiJcdTA5NjgiLDM6Ilx1MDk2OSIsNDoiXHUwOTZhIiw1OiJcdTA5NmIiLDY6Ilx1MDk2YyIsNzoiXHUwOTZkIiw4OiJcdTA5NmUiLDk6Ilx1MDk2ZiIsMDoiXHUwOTY2In0scz17Ilx1MDk2'@; put 'NyI6IjEiLCJcdTA5NjgiOiIyIiwiXHUwOTY5IjoiMyIsIlx1MDk2YSI6IjQiLCJcdTA5NmIiOiI1IiwiXHUwOTZjIjoiNiIsIlx1MDk2ZCI6IjciLCJcdTA5NmUiOiI4IiwiXHUwOTZmIjoiOSIsIlx1MDk2NiI6IjAifSxBPVsvXlx1MDkxY1x1MDkyOC9pLC9eXHUwOTJiXHUwOTNjXHUwOTMw'@; put 'fFx1MDkyYlx1MDkzMC9pLC9eXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhL2ksL15cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDgvaSwvXlx1MDkyZVx1MDkwOC9pLC9eXHUwOTFjXHUwOTQyXHUwOTI4L2ksL15cdTA5MWNcdTA5NDFcdTA5MzIvaSwvXlx1MDkwNVx1MDkxNy9p'@; put 'LC9eXHUwOTM4XHUwOTNmXHUwOTI0XHUwOTAyfFx1MDkzOFx1MDkzZlx1MDkyNC9pLC9eXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyL2ksL15cdTA5MjhcdTA5MzV8XHUwOTI4XHUwOTM1XHUwOTAyL2ksL15cdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJ8XHUwOTI2XHUwOTNmXHUwOTM4'@; put 'L2ldO3kuZGVmaW5lTG9jYWxlKCJoaSIse21vbnRoczp7Zm9ybWF0OiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBc'@; put 'dTA5NDhcdTA5MzJfXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDhfXHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0X1x1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5'@; put 'NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwX1x1MDkyNlx1MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMCIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUw'@; put 'OTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzJfXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDhfXHUwOTA1'@; put 'XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0X1x1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMlx1MDky'@; put 'Y1x1MDkzMCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkyOC5fXHUwOTJiXHUwOTNjXHUwOTMwLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4Ll9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQyXHUwOTI4X1x1'@; put 'MDkxY1x1MDk0MVx1MDkzMi5fXHUwOTA1XHUwOTE3Ll9cdTA5MzhcdTA5M2ZcdTA5MjQuX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mi5fXHUwOTI4XHUwOTM1Ll9cdTA5MjZcdTA5M2ZcdTA5MzguIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5MzBcdTA5MzVcdTA5M2ZcdTA5MzVc'@; put 'dTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzMlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyXHUwOTM1XHUwOTNl'@; put 'XHUwOTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTMwXHUwOTM1XHUwOTNmX1x1MDkzOFx1MDk0Ylx1MDkyZV9cdTA5MmVc'@; put 'dTA5MDJcdTA5MTdcdTA5MzJfXHUwOTJjXHUwOTQxXHUwOTI3X1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Ml9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MzBfXHUwOTM4XHUwOTRiX1x1MDkyZVx1'@; put 'MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTE3XHUwOTQxX1x1MDkzNlx1MDk0MV9cdTA5MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixMVFM6IkEgaDptbTpzcyBcdTA5MmNcdTA5MWNcdTA5NDciLEw6IkREL01NL1lZWVkiLExMOiJE'@; put 'IE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDcifSxtb250aHNQYXJzZTpBLGxvbmdNb250aHNQYXJzZTpBLHNob3J0TW9udGhzUGFyc2U6Wy9eXHUw'@; put 'OTFjXHUwOTI4L2ksL15cdTA5MmJcdTA5M2NcdTA5MzAvaSwvXlx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYS9pLC9eXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4L2ksL15cdTA5MmVcdTA5MDgvaSwvXlx1MDkxY1x1MDk0Mlx1MDkyOC9pLC9eXHUwOTFjXHUwOTQxXHUwOTMy'@; put 'L2ksL15cdTA5MDVcdTA5MTcvaSwvXlx1MDkzOFx1MDkzZlx1MDkyNC9pLC9eXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyL2ksL15cdTA5MjhcdTA5MzUvaSwvXlx1MDkyNlx1MDkzZlx1MDkzOC9pXSxtb250aHNSZWdleDovXihcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDB8'@; put 'XHUwOTFjXHUwOTI4XC4/fFx1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTNjXHUwOTMwXC4/fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUw'@; put 'OTQ4XHUwOTMyfFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFwuP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4fFx1MDkxY1x1MDk0MVx1MDkzMlwuP3xcdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjR8XHUw'@; put 'OTA1XHUwOTE3XC4/fFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMHxcdTA5MDVc'@; put 'dTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcLj98XHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5MzVcLj98XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkz'@; put 'Zlx1MDkzOFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcLj8pL2ksbW9udGhzU2hvcnRSZWdleDovXihcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTFjXHUwOTI4XC4/fFx1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5'@; put 'MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTNjXHUwOTMwXC4/fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XHUwOTMyfFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFwuP3xcdTA5MmVcdTA5MDg/fFx1MDkx'@; put 'Y1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4fFx1MDkxY1x1MDk0MVx1MDkzMlwuP3xcdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjR8XHUwOTA1XHUwOTE3XC4/fFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5Mzhc'@; put 'dTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMHxcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcLj98XHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMw'@; put 'fFx1MDkyOFx1MDkzNVx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5MzVcLj98XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcLj8pL2ksbW9udGhzU3RyaWN0'@; put 'UmVnZXg6L14oXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwP3xcdTA5MmJcdTA5M2NcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwP3xcdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWE/fFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkz'@; put 'MFx1MDk0OFx1MDkzMj98XHUwOTJlXHUwOTA4P3xcdTA5MWNcdTA5NDJcdTA5Mjg/fFx1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOD98XHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0P3xcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTM4XHUw'@; put 'OTNmXHUwOTI0XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyND9cLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwfFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8'@; put 'XHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwP3xcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTAyXHUwOTJjXHUwOTMwPykvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKFx1MDkxY1x1MDkyOFwuP3xcdTA5MmJc'@; put 'dTA5M2NcdTA5MzBcLj98XHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcLj98XHUwOTJlXHUwOTA4P3xcdTA5MWNcdTA5NDJcdTA5Mjg/fFx1MDkxY1x1MDk0MVx1MDkzMlwuP3xcdTA5MDVcdTA5MTdcLj98XHUwOTM4XHUwOTNm'@; put 'XHUwOTI0XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcLj98XHUwOTI2XHUwOTNmXHUwOTM4XC4/KS9pLGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwOTA2XHUwOTFjXSBMVCIsbmV4dERheToiW1x1MDkxNVx1MDkzMl0gTFQiLG5leHRXZWVrOiJkZGRk'@; put 'LCBMVCIsbGFzdERheToiW1x1MDkxNVx1MDkzMl0gTFQiLGxhc3RXZWVrOiJbXHUwOTJhXHUwOTNmXHUwOTFiXHUwOTMyXHUwOTQ3XSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwOTJlXHUwOTQ3XHUwOTAyIixwYXN0OiIlcyBcdTA5MmFcdTA5'@; put 'MzlcdTA5MzJcdTA5NDciLHM6Ilx1MDkxNVx1MDk0MVx1MDkxYiBcdTA5MzlcdTA5NDAgXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTIzIixzczoiJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTIxIixtOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTFmIixtbToiJWQg'@; put 'XHUwOTJlXHUwOTNmXHUwOTI4XHUwOTFmIixoOiJcdTA5MGZcdTA5MTUgXHUwOTE4XHUwOTAyXHUwOTFmXHUwOTNlIixoaDoiJWQgXHUwOTE4XHUwOTAyXHUwOTFmXHUwOTQ3IixkOiJcdTA5MGZcdTA5MTUgXHUwOTI2XHUwOTNmXHUwOTI4IixkZDoiJWQgXHUwOTI2XHUwOTNmXHUwOTI4IixN'@; put 'OiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTM5XHUwOTQwXHUwOTI4XHUwOTQ3IixNTToiJWQgXHUwOTJlXHUwOTM5XHUwOTQwXHUwOTI4XHUwOTQ3Iix5OiJcdTA5MGZcdTA5MTUgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3Iix5eToiJWQgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3In0scHJl'@; put 'cGFyc2U6ZnVuY3Rpb24odyl7cmV0dXJuIHcucmVwbGFjZSgvW1x1MDk2N1x1MDk2OFx1MDk2OVx1MDk2YVx1MDk2Ylx1MDk2Y1x1MDk2ZFx1MDk2ZVx1MDk2Zlx1MDk2Nl0vZyxmdW5jdGlvbihTKXtyZXR1cm4gc1tTXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKHcpe3JldHVybiB3LnJlcGxh'@; put 'Y2UoL1xkL2csZnVuY3Rpb24oUyl7cmV0dXJuIGNbU119KX0sbWVyaWRpZW1QYXJzZTovXHUwOTMwXHUwOTNlXHUwOTI0fFx1MDkzOFx1MDk0MVx1MDkyY1x1MDkzOXxcdTA5MjZcdTA5NGJcdTA5MmFcdTA5MzlcdTA5MzB8XHUwOTM2XHUwOTNlXHUwOTJlLyxtZXJpZGllbUhvdXI6ZnVuY3Rp'@; put 'b24odyxTKXtyZXR1cm4gMTI9PT13JiYodz0wKSwiXHUwOTMwXHUwOTNlXHUwOTI0Ij09PVM/dzw0P3c6dysxMjoiXHUwOTM4XHUwOTQxXHUwOTJjXHUwOTM5Ij09PVM/dzoiXHUwOTI2XHUwOTRiXHUwOTJhXHUwOTM5XHUwOTMwIj09PVM/dz49MTA/dzp3KzEyOiJcdTA5MzZcdTA5M2VcdTA5'@; put 'MmUiPT09Uz93KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24odyxTLEwpe3JldHVybiB3PDQ/Ilx1MDkzMFx1MDkzZVx1MDkyNCI6dzwxMD8iXHUwOTM4XHUwOTQxXHUwOTJjXHUwOTM5Ijp3PDE3PyJcdTA5MjZcdTA5NGJcdTA5MmFcdTA5MzlcdTA5MzAiOnc8MjA/Ilx1MDkzNlx1MDkz'@; put 'ZVx1MDkyZSI6Ilx1MDkzMFx1MDkzZVx1MDkyNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShoKDk3NTg2KSl9LDkxOTU3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKEEsdixDKXt2YXIgdz1BKyIgIjtzd2l0Y2goQyl7Y2FzZSJzcyI6cmV0dXJuIHcrKDE9'@; put 'PT1BPyJzZWt1bmRhIjoyPT09QXx8Mz09PUF8fDQ9PT1BPyJzZWt1bmRlIjoic2VrdW5kaSIpO2Nhc2UibSI6cmV0dXJuIHY/ImplZG5hIG1pbnV0YSI6ImplZG5lIG1pbnV0ZSI7Y2FzZSJtbSI6cmV0dXJuIHcrKDE9PT1BPyJtaW51dGEiOjI9PT1BfHwzPT09QXx8ND09PUE/Im1pbnV0ZSI6'@; put 'Im1pbnV0YSIpO2Nhc2UiaCI6cmV0dXJuIHY/ImplZGFuIHNhdCI6ImplZG5vZyBzYXRhIjtjYXNlImhoIjpyZXR1cm4gdysoMT09PUE/InNhdCI6Mj09PUF8fDM9PT1BfHw0PT09QT8ic2F0YSI6InNhdGkiKTtjYXNlImRkIjpyZXR1cm4gdysoMT09PUE/ImRhbiI6ImRhbmEiKTtjYXNlIk1N'@; put 'IjpyZXR1cm4gdysoMT09PUE/Im1qZXNlYyI6Mj09PUF8fDM9PT1BfHw0PT09QT8ibWplc2VjYSI6Im1qZXNlY2kiKTtjYXNlInl5IjpyZXR1cm4gdysoMT09PUE/ImdvZGluYSI6Mj09PUF8fDM9PT1BfHw0PT09QT8iZ29kaW5lIjoiZ29kaW5hIil9fXkuZGVmaW5lTG9jYWxlKCJociIse21v'@; put 'bnRoczp7Zm9ybWF0OiJzaWplXHUwMTBkbmphX3ZlbGphXHUwMTBkZV9vXHUwMTdldWprYV90cmF2bmphX3N2aWJuamFfbGlwbmphX3NycG5qYV9rb2xvdm96YV9ydWpuYV9saXN0b3BhZGFfc3R1ZGVub2dhX3Byb3NpbmNhIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNpamVcdTAxMGRhbmpf'@; put 'dmVsamFcdTAxMGRhX29cdTAxN2V1amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6InNpai5fdmVsai5fb1x1MDE3ZXUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29s'@; put 'Ll9ydWouX2xpcy5fc3R1Ll9wcm8uIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX1x1MDEwZGV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91'@; put 'dG8uX3NyaS5fXHUwMTBkZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfXHUwMTBkZV9wZV9zdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZ'@; put 'WVkiLExMOiJEbyBNTU1NIFlZWVkiLExMTDoiRG8gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIERvIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5hcyB1XSBMVCIsbmV4dERheToiW3N1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlz'@; put 'LmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyaWplZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBM'@; put 'VCJ9fSxsYXN0RGF5OiJbanVcdTAxMGRlciB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbcHJvXHUwMTYxbHVdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIltwcm9cdTAxNjFsdV0gW3NyaWplZHVdIFt1XSBMVCI7'@; put 'Y2FzZSA2OnJldHVybiJbcHJvXHUwMTYxbGVdIFtzdWJvdGVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbcHJvXHUwMTYxbGldIGRkZGQgW3VdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmlqZSAl'@; put 'cyIsczoicGFyIHNla3VuZGkiLHNzOmMsbTpjLG1tOmMsaDpjLGhoOmMsZDoiZGFuIixkZDpjLE06Im1qZXNlYyIsTU06Yyx5OiJnb2RpbnUiLHl5OmN9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4'@; put 'NikpfSw0ODkyOChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9InZhc1x4ZTFybmFwIGhceGU5dGZcdTAxNTFuIGtlZGRlbiBzemVyZFx4ZTFuIGNzXHhmY3RceGY2cnRceGY2a1x4ZjZuIHBceGU5bnRla2VuIHN6b21iYXRvbiIuc3BsaXQoIiAiKTtmdW5jdGlvbiBz'@; put 'KEMsdyxTLEwpe3ZhciBSPUM7c3dpdGNoKFMpe2Nhc2UicyI6cmV0dXJuIEx8fHc/Im5ceGU5aFx4ZTFueSBtXHhlMXNvZHBlcmMiOiJuXHhlOWhceGUxbnkgbVx4ZTFzb2RwZXJjZSI7Y2FzZSJzcyI6cmV0dXJuIFIrKEx8fHcpPyIgbVx4ZTFzb2RwZXJjIjoiIG1ceGUxc29kcGVyY2UiO2Nh'@; put 'c2UibSI6cmV0dXJuImVneSIrKEx8fHc/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJtbSI6cmV0dXJuIFIrKEx8fHc/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJoIjpyZXR1cm4iZWd5IisoTHx8dz8iIFx4ZjNyYSI6IiBceGYzclx4ZTFqYSIpO2Nhc2UiaGgiOnJldHVybiBSKyhMfHx3PyIgXHhm'@; put 'M3JhIjoiIFx4ZjNyXHhlMWphIik7Y2FzZSJkIjpyZXR1cm4iZWd5IisoTHx8dz8iIG5hcCI6IiBuYXBqYSIpO2Nhc2UiZGQiOnJldHVybiBSKyhMfHx3PyIgbmFwIjoiIG5hcGphIik7Y2FzZSJNIjpyZXR1cm4iZWd5IisoTHx8dz8iIGhceGYzbmFwIjoiIGhceGYzbmFwamEiKTtjYXNlIk1N'@; put 'IjpyZXR1cm4gUisoTHx8dz8iIGhceGYzbmFwIjoiIGhceGYzbmFwamEiKTtjYXNlInkiOnJldHVybiJlZ3kiKyhMfHx3PyIgXHhlOXYiOiIgXHhlOXZlIik7Y2FzZSJ5eSI6cmV0dXJuIFIrKEx8fHc/IiBceGU5diI6IiBceGU5dmUiKX1yZXR1cm4iIn1mdW5jdGlvbiBBKEMpe3JldHVybihD'@; put 'PyIiOiJbbVx4ZmFsdF0gIikrIlsiK2NbdGhpcy5kYXkoKV0rIl0gTFRbLWtvcl0ifXkuZGVmaW5lTG9jYWxlKCJodSIse21vbnRoczoiamFudVx4ZTFyX2ZlYnJ1XHhlMXJfbVx4ZTFyY2l1c19ceGUxcHJpbGlzX21ceGUxanVzX2pceGZhbml1c19qXHhmYWxpdXNfYXVndXN6dHVzX3N6ZXB0'@; put 'ZW1iZXJfb2t0XHhmM2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21ceGUxcmMuX1x4ZTFwci5fbVx4ZTFqLl9qXHhmYW4uX2pceGZhbC5fYXVnLl9zemVwdC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFj'@; put 'dDohMCx3ZWVrZGF5czoidmFzXHhlMXJuYXBfaFx4ZTl0Zlx1MDE1MV9rZWRkX3N6ZXJkYV9jc1x4ZmN0XHhmNnJ0XHhmNmtfcFx4ZTludGVrX3N6b21iYXQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoidmFzX2hceGU5dF9rZWRkX3N6ZV9jc1x4ZmN0X3BceGU5bl9zem8iLnNwbGl0KCJf'@; put 'Iiksd2Vla2RheXNNaW46InZfaF9rX3N6ZV9jc19wX3N6byIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4gSDptbSIsTExMTDoiWVlZWS4gTU1NTSBE'@; put 'LiwgZGRkZCBIOm1tIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKEMpe3JldHVybiJ1Ij09PUMuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKEMsdyxTKXtyZXR1cm4gQzwxMj8hMD09PVM/ImRlIjoiREUiOiEwPT09Uz8iZHUiOiJEVSJ9'@; put 'LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gQS5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gQS5j'@; put 'YWxsKHRoaXMsITEpfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBtXHhmYWx2YSIscGFzdDoiJXMiLHMsc3M6cyxtOnMsbW06cyxoOnMsaGg6cyxkOnMsZGQ6cyxNOnMsTU06cyx5OnMseXk6c30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRp'@; put 'bmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDU2MjE1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiaHktYW0iLHttb250aHM6e2Zvcm1hdDoiXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTc2XHUwNTdlXHUwNTYxXHUwNTgw'@; put 'XHUwNTZiX1x1MDU4M1x1MDU2NVx1MDU3Zlx1MDU4MFx1MDU3ZVx1MDU2MVx1MDU4MFx1MDU2Yl9cdTA1NzRcdTA1NjFcdTA1ODBcdTA1N2ZcdTA1NmJfXHUwNTYxXHUwNTdhXHUwNTgwXHUwNTZiXHUwNTZjXHUwNTZiX1x1MDU3NFx1MDU2MVx1MDU3NVx1MDU2Ylx1MDU3ZFx1MDU2Yl9cdTA1'@; put 'NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1NmJcdTA1N2RcdTA1NmJfXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTZjXHUwNTZiXHUwNTdkXHUwNTZiX1x1MDU4NVx1MDU2M1x1MDU3OFx1MDU3ZFx1MDU3Zlx1MDU3OFx1MDU3ZFx1MDU2Yl9cdTA1N2RcdTA1NjVcdTA1N2FcdTA1N2ZcdTA1NjVcdTA1'@; put 'NzRcdTA1NjJcdTA1NjVcdTA1ODBcdTA1NmJfXHUwNTcwXHUwNTc4XHUwNTZmXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwXHUwNTZiX1x1MDU3Nlx1MDU3OFx1MDU3NVx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MFx1MDU2Yl9cdTA1NjRcdTA1NjVcdTA1NmZcdTA1'@; put 'N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBcdTA1NmIiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTc2XHUwNTdlXHUwNTYxXHUwNTgwX1x1MDU4M1x1MDU2NVx1MDU3Zlx1MDU4MFx1MDU3ZVx1MDU2MVx1MDU4MF9cdTA1NzRcdTA1NjFcdTA1'@; put 'ODBcdTA1N2ZfXHUwNTYxXHUwNTdhXHUwNTgwXHUwNTZiXHUwNTZjX1x1MDU3NFx1MDU2MVx1MDU3NVx1MDU2Ylx1MDU3ZF9cdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1NmJcdTA1N2RfXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTZjXHUwNTZiXHUwNTdkX1x1MDU4NVx1MDU2M1x1MDU3OFx1'@; put 'MDU3ZFx1MDU3Zlx1MDU3OFx1MDU3ZF9cdTA1N2RcdTA1NjVcdTA1N2FcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBfXHUwNTcwXHUwNTc4XHUwNTZmXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwX1x1MDU3Nlx1MDU3OFx1MDU3NVx1MDU2NVx1MDU3NFx1'@; put 'MDU2Mlx1MDU2NVx1MDU4MF9cdTA1NjRcdTA1NjVcdTA1NmZcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODAiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA1NzBcdTA1NzZcdTA1N2VfXHUwNTgzXHUwNTdmXHUwNTgwX1x1MDU3NFx1MDU4MFx1MDU3Zl9cdTA1NjFcdTA1'@; put 'N2FcdTA1ODBfXHUwNTc0XHUwNTc1XHUwNTdkX1x1MDU3MFx1MDU3Nlx1MDU3ZF9cdTA1NzBcdTA1NmNcdTA1N2RfXHUwNTg1XHUwNTYzXHUwNTdkX1x1MDU3ZFx1MDU3YVx1MDU3Zl9cdTA1NzBcdTA1NmZcdTA1N2ZfXHUwNTc2XHUwNTc0XHUwNTYyX1x1MDU2NFx1MDU2Zlx1MDU3ZiIuc3Bs'@; put 'aXQoIl8iKSx3ZWVrZGF5czoiXHUwNTZmXHUwNTZiXHUwNTgwXHUwNTYxXHUwNTZmXHUwNTZiX1x1MDU2NVx1MDU4MFx1MDU2Zlx1MDU3OFx1MDU4Mlx1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1NjVcdTA1ODBcdTA1NjVcdTA1ODRcdTA1NzdcdTA1NjFcdTA1NjJcdTA1Njlc'@; put 'dTA1NmJfXHUwNTc5XHUwNTc4XHUwNTgwXHUwNTY1XHUwNTg0XHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU3MFx1MDU2Ylx1MDU3Nlx1MDU2M1x1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1NzhcdTA1ODJcdTA1ODBcdTA1NjJcdTA1NjFcdTA1NjlfXHUwNTc3'@; put 'XHUwNTYxXHUwNTYyXHUwNTYxXHUwNTY5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDU2Zlx1MDU4MFx1MDU2Zl9cdTA1NjVcdTA1ODBcdTA1NmZfXHUwNTY1XHUwNTgwXHUwNTg0X1x1MDU3OVx1MDU4MFx1MDU4NF9cdTA1NzBcdTA1NzZcdTA1NjNfXHUwNTc4XHUwNTgyXHUwNTgw'@; put 'XHUwNTYyX1x1MDU3N1x1MDU2Mlx1MDU2OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNTZmXHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU2Zl9cdTA1NjVcdTA1ODBcdTA1ODRfXHUwNTc5XHUwNTgwXHUwNTg0X1x1MDU3MFx1MDU3Nlx1MDU2M19cdTA1NzhcdTA1ODJcdTA1ODBc'@; put 'dTA1NjJfXHUwNTc3XHUwNTYyXHUwNTY5Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA1NjkuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDU2OS4sIEhIOm1tIixMTExMOiJkZGRkLCBE'@; put 'IE1NTU0gWVlZWSBcdTA1NjkuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNTYxXHUwNTc1XHUwNTdkXHUwNTg1XHUwNTgwXSBMVCIsbmV4dERheToiW1x1MDU3ZVx1MDU2MVx1MDU3Mlx1MDU2OF0gTFQiLGxhc3REYXk6IltcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZdIExUIixu'@; put 'ZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFtcdTA1ODVcdTA1ODBcdTA1NjggXHUwNTZhXHUwNTYxXHUwNTc0XHUwNTY4XSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltcdTA1NjFcdTA1NzZcdTA1ODFcdTA1NjFcdTA1NmVdIGRkZGQgW1x1MDU4NVx1MDU4MFx1MDU2'@; put 'OCBcdTA1NmFcdTA1NjFcdTA1NzRcdTA1NjhdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNTcwXHUwNTY1XHUwNTdmXHUwNTc4IixwYXN0OiIlcyBcdTA1NjFcdTA1N2NcdTA1NjFcdTA1N2IiLHM6Ilx1MDU3NFx1MDU2YiBcdTA1ODRcdTA1NjFcdTA1'@; put 'NzZcdTA1NmIgXHUwNTdlXHUwNTYxXHUwNTc1XHUwNTgwXHUwNTZmXHUwNTc1XHUwNTYxXHUwNTc2IixzczoiJWQgXHUwNTdlXHUwNTYxXHUwNTc1XHUwNTgwXHUwNTZmXHUwNTc1XHUwNTYxXHUwNTc2IixtOiJcdTA1ODBcdTA1NzhcdTA1N2FcdTA1NjUiLG1tOiIlZCBcdTA1ODBcdTA1Nzhc'@; put 'dTA1N2FcdTA1NjUiLGg6Ilx1MDU2YVx1MDU2MVx1MDU3NCIsaGg6IiVkIFx1MDU2YVx1MDU2MVx1MDU3NCIsZDoiXHUwNTg1XHUwNTgwIixkZDoiJWQgXHUwNTg1XHUwNTgwIixNOiJcdTA1NjFcdTA1NzRcdTA1NmJcdTA1N2QiLE1NOiIlZCBcdTA1NjFcdTA1NzRcdTA1NmJcdTA1N2QiLHk6'@; put 'Ilx1MDU3Zlx1MDU2MVx1MDU4MFx1MDU2YiIseXk6IiVkIFx1MDU3Zlx1MDU2MVx1MDU4MFx1MDU2YiJ9LG1lcmlkaWVtUGFyc2U6L1x1MDU2M1x1MDU2Ylx1MDU3N1x1MDU2NVx1MDU4MFx1MDU3ZVx1MDU2MXxcdTA1NjFcdTA1N2NcdTA1NjFcdTA1N2VcdTA1NzhcdTA1N2ZcdTA1N2VcdTA1'@; put 'NjF8XHUwNTgxXHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTdlXHUwNTYxfFx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3OFx1MDU3NVx1MDU2MVx1MDU3Ni8saXNQTTpmdW5jdGlvbihzKXtyZXR1cm4vXihcdTA1ODFcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1N2VcdTA1NjF8'@; put 'XHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTc4XHUwNTc1XHUwNTYxXHUwNTc2KSQvLnRlc3Qocyl9LG1lcmlkaWVtOmZ1bmN0aW9uKHMpe3JldHVybiBzPDQ/Ilx1MDU2M1x1MDU2Ylx1MDU3N1x1MDU2NVx1MDU4MFx1MDU3ZVx1MDU2MSI6czwxMj8iXHUwNTYxXHUwNTdjXHUwNTYxXHUw'@; put 'NTdlXHUwNTc4XHUwNTdmXHUwNTdlXHUwNTYxIjpzPDE3PyJcdTA1ODFcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1N2VcdTA1NjEiOiJcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1NzhcdTA1NzVcdTA1NjFcdTA1NzYifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9fFxk'@; put 'ezEsMn0tKFx1MDU2Ylx1MDU3NnxcdTA1ODBcdTA1NjQpLyxvcmRpbmFsOmZ1bmN0aW9uKHMsQSl7c3dpdGNoKEEpe2Nhc2UiREREIjpjYXNlInciOmNhc2UiVyI6Y2FzZSJERERvIjpyZXR1cm4gMT09PXM/cysiLVx1MDU2Ylx1MDU3NiI6cysiLVx1MDU4MFx1MDU2NCI7ZGVmYXVsdDpyZXR1'@; put 'cm4gc319LHdlZWs6e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDU4NihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImlkIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1i'@; put 'ZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0FndF9TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0'@; put 'dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01N'@; put 'L1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24ocyxBKXtyZXR1'@; put 'cm4gMTI9PT1zJiYocz0wKSwicGFnaSI9PT1BP3M6InNpYW5nIj09PUE/cz49MTE/czpzKzEyOiJzb3JlIj09PUF8fCJtYWxhbSI9PT1BP3MrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihzLEEsdil7cmV0dXJuIHM8MTE/InBhZ2kiOnM8MTU/InNpYW5nIjpzPDE5PyJzb3JlIjoibWFs'@; put 'YW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Jlc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGFsdSBwdWt1bF0gTFQiLHNhbWVF'@; put 'bHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxhbHUiLHM6ImJlYmVyYXBhIGRldGlrIixzczoiJWQgZGV0aWsiLG06InNlbWVuaXQiLG1tOiIlZCBtZW5pdCIsaDoic2VqYW0iLGhoOiIlZCBqYW0iLGQ6InNlaGFyaSIsZGQ6IiVkIGhhcmki'@; put 'LE06InNlYnVsYW4iLE1NOiIlZCBidWxhbiIseToic2V0YWh1biIseXk6IiVkIHRhaHVuIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KGgoOTc1ODYpKX0sOTAyMTEoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGModil7cmV0dXJuIHYlMTAwPT0xMXx8diUxMCE9'@; put 'MX1mdW5jdGlvbiBzKHYsQyx3LFMpe3ZhciBMPXYrIiAiO3N3aXRjaCh3KXtjYXNlInMiOnJldHVybiBDfHxTPyJub2trcmFyIHNla1x4ZmFuZHVyIjoibm9ra3J1bSBzZWtceGZhbmR1bSI7Y2FzZSJzcyI6cmV0dXJuIGModik/TCsoQ3x8Uz8ic2VrXHhmYW5kdXIiOiJzZWtceGZhbmR1bSIp'@; put 'OkwrInNla1x4ZmFuZGEiO2Nhc2UibSI6cmV0dXJuIEM/Im1ceGVkblx4ZmF0YSI6Im1ceGVkblx4ZmF0dSI7Y2FzZSJtbSI6cmV0dXJuIGModik/TCsoQ3x8Uz8ibVx4ZWRuXHhmYXR1ciI6Im1ceGVkblx4ZmF0dW0iKTpDP0wrIm1ceGVkblx4ZmF0YSI6TCsibVx4ZWRuXHhmYXR1IjtjYXNl'@; put 'ImhoIjpyZXR1cm4gYyh2KT9MKyhDfHxTPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOkwrImtsdWtrdXN0dW5kIjtjYXNlImQiOnJldHVybiBDPyJkYWd1ciI6Uz8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIGModik/Qz9MKyJkYWdhciI6TCsoUz8iZGFnYSI6ImRceGY2'@; put 'Z3VtIik6Qz9MKyJkYWd1ciI6TCsoUz8iZGFnIjoiZGVnaSIpO2Nhc2UiTSI6cmV0dXJuIEM/Im1ceGUxbnVceGYwdXIiOlM/Im1ceGUxbnVceGYwIjoibVx4ZTFudVx4ZjBpIjtjYXNlIk1NIjpyZXR1cm4gYyh2KT9DP0wrIm1ceGUxbnVceGYwaXIiOkwrKFM/Im1ceGUxbnVceGYwaSI6Im1c'@; put 'eGUxbnVceGYwdW0iKTpDP0wrIm1ceGUxbnVceGYwdXIiOkwrKFM/Im1ceGUxbnVceGYwIjoibVx4ZTFudVx4ZjBpIik7Y2FzZSJ5IjpyZXR1cm4gQ3x8Uz8iXHhlMXIiOiJceGUxcmkiO2Nhc2UieXkiOnJldHVybiBjKHYpP0wrKEN8fFM/Ilx4ZTFyIjoiXHhlMXJ1bSIpOkwrKEN8fFM/Ilx4'@; put 'ZTFyIjoiXHhlMXJpIil9fXkuZGVmaW5lTG9jYWxlKCJpcyIse21vbnRoczoiamFuXHhmYWFyX2ZlYnJceGZhYXJfbWFyc19hcHJceGVkbF9tYVx4ZWRfalx4ZmFuXHhlZF9qXHhmYWxceGVkX1x4ZTFnXHhmYXN0X3NlcHRlbWJlcl9va3RceGYzYmVyX25ceGYzdmVtYmVyX2Rlc2VtYmVyIi5z'@; put 'cGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFceGVkX2pceGZhbl9qXHhmYWxfXHhlMWdceGZhX3NlcF9va3Rfblx4ZjN2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tXHhlMW51ZGFndXJfXHhmZXJpXHhmMGp1ZGFndXJfbWlceGYwdmlrdWRh'@; put 'Z3VyX2ZpbW10dWRhZ3VyX2ZceGY2c3R1ZGFndXJfbGF1Z2FyZGFndXIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX21ceGUxbl9ceGZlcmlfbWlceGYwX2ZpbV9mXHhmNnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9NXHhlMV9ceGRlcl9NaV9GaV9GXHhmNl9MYSIu'@; put 'c3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0ifSxjYWxlbmRhcjp7c2Ft'@; put 'ZURheToiW1x4ZWQgZGFnIGtsLl0gTFQiLG5leHREYXk6IltceGUxIG1vcmd1biBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW1x4ZWQgZ1x4ZTZyIGtsLl0gTFQiLGxhc3RXZWVrOiJbc1x4ZWRceGYwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6Ikwi'@; put 'fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHNceGVkXHhmMGFuIixzLHNzOnMsbTpzLG1tOnMsaDoia2x1a2t1c3R1bmQiLGhoOnMsZDpzLGRkOnMsTTpzLE1NOnMseTpzLHl5OnN9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3Jk'@; put 'aW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSwyMjM0MChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoIml0LWNoIix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xp'@; put 'b19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21lbmljYV9sdW5lZFx4ZWNfbWFydGVk'@; put 'XHhlY19tZXJjb2xlZFx4ZWNfZ2lvdmVkXHhlY192ZW5lcmRceGVjX3NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21lX2dpX3ZlX3NhIi5zcGxpdCgiXyIpLGxvbmdE'@; put 'YXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbT2dnaSBhbGxlXSBMVCIsbmV4dERh'@; put 'eToiW0RvbWFuaSBhbGxlXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FsbGVdIExUIixsYXN0RGF5OiJbSWVyaSBhbGxlXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCk/IltsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUIjoiW2xvIHNjb3Jzb10gZGRkZCBbYWxs'@; put 'ZV0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uKHMpe3JldHVybigvXlswLTldLiskLy50ZXN0KHMpPyJ0cmEiOiJpbiIpKyIgIitzfSxwYXN0OiIlcyBmYSIsczoiYWxjdW5pIHNlY29uZGkiLHNzOiIlZCBzZWNvbmRpIixtOiJ1biBtaW51dG8iLG1t'@; put 'OiIlZCBtaW51dGkiLGg6InVuJ29yYSIsaGg6IiVkIG9yZSIsZDoidW4gZ2lvcm5vIixkZDoiJWQgZ2lvcm5pIixNOiJ1biBtZXNlIixNTToiJWQgbWVzaSIseToidW4gYW5ubyIseXk6IiVkIGFubmkifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRc'@; put 'eGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw3MDE3MChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoIml0Iix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9f'@; put 'c2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21lbmljYV9sdW5lZFx4ZWNfbWFydGVkXHhlY19tZXJj'@; put 'b2xlZFx4ZWNfZ2lvdmVkXHhlY192ZW5lcmRceGVjX3NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21lX2dpX3ZlX3NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0'@; put 'OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltPZ2dpIGEiKyh0aGlz'@; put 'LmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltEb21hbmkgYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LG5leHRXZWVrOmZ1bmN0aW9u'@; put 'KCl7cmV0dXJuImRkZGQgW2EiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltJZXJpIGEiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJd'@; put 'TFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKT8iW0xhIHNjb3JzYV0gZGRkZCBbYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCI6IltMbyBzY29yc29dIGRkZGQgW2EiKyh0aGlzLmhvdXJzKCk+MT8i'@; put 'bGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ0cmEgJXMiLHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsc3M6IiVkIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoi'@; put 'dW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLHc6InVuYSBzZXR0aW1hbmEiLHd3OiIlZCBzZXR0aW1hbmUiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEs'@; put 'Mn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDM5NzcwKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgiamEiLHtlcmFzOlt7c2luY2U6IjIwMTktMDUtMDEiLG9mZnNldDoxLG5hbWU6Ilx1NGVl'@; put 'NFx1NTQ4YyIsbmFycm93OiJcdTMyZmYiLGFiYnI6IlIifSx7c2luY2U6IjE5ODktMDEtMDgiLHVudGlsOiIyMDE5LTA0LTMwIixvZmZzZXQ6MSxuYW1lOiJcdTVlNzNcdTYyMTAiLG5hcnJvdzoiXHUzMzdiIixhYmJyOiJIIn0se3NpbmNlOiIxOTI2LTEyLTI1Iix1bnRpbDoiMTk4OS0wMS0w'@; put 'NyIsb2Zmc2V0OjEsbmFtZToiXHU2NjJkXHU1NDhjIixuYXJyb3c6Ilx1MzM3YyIsYWJicjoiUyJ9LHtzaW5jZToiMTkxMi0wNy0zMCIsdW50aWw6IjE5MjYtMTItMjQiLG9mZnNldDoxLG5hbWU6Ilx1NTkyN1x1NmI2MyIsbmFycm93OiJcdTMzN2QiLGFiYnI6IlQifSx7c2luY2U6IjE4NzMt'@; put 'MDEtMDEiLHVudGlsOiIxOTEyLTA3LTI5IixvZmZzZXQ6NixuYW1lOiJcdTY2MGVcdTZjYmIiLG5hcnJvdzoiXHUzMzdlIixhYmJyOiJNIn0se3NpbmNlOiIwMDAxLTAxLTAxIix1bnRpbDoiMTg3My0xMi0zMSIsb2Zmc2V0OjEsbmFtZToiXHU4OTdmXHU2NmE2IixuYXJyb3c6IkFEIixhYmJy'@; put 'OiJBRCJ9LHtzaW5jZToiMDAwMC0xMi0zMSIsdW50aWw6LTEvMCxvZmZzZXQ6MSxuYW1lOiJcdTdkMDBcdTUxNDNcdTUyNGQiLG5hcnJvdzoiQkMiLGFiYnI6IkJDIn1dLGVyYVllYXJPcmRpbmFsUmVnZXg6LyhcdTUxNDN8XGQrKVx1NWU3NC8sZXJhWWVhck9yZGluYWxQYXJzZTpmdW5jdGlv'@; put 'bihzLEEpe3JldHVybiJcdTUxNDMiPT09QVsxXT8xOnBhcnNlSW50KEFbMV18fHMsMTApfSxtb250aHM6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxp'@; put 'dCgiXyIpLG1vbnRoc1Nob3J0OiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2NzA4XzVcdTY3MDhfNlx1NjcwOF83XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHU2NWU1XHU2NmRjXHU2NWU1X1x1Njcw'@; put 'OFx1NjZkY1x1NjVlNV9cdTcwNmJcdTY2ZGNcdTY1ZTVfXHU2YzM0XHU2NmRjXHU2NWU1X1x1NjcyOFx1NjZkY1x1NjVlNV9cdTkxZDFcdTY2ZGNcdTY1ZTVfXHU1NzFmXHU2NmRjXHU2NWU1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1NjVlNV9cdTY3MDhfXHU3MDZiX1x1NmMzNF9c'@; put 'dTY3MjhfXHU5MWQxX1x1NTcxZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHU2NWU1X1x1NjcwOF9cdTcwNmJfXHU2YzM0X1x1NjcyOF9cdTkxZDFfXHU1NzFmIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExM'@; put 'OiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixMTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgZGRkZCBISDptbSIsbDoiWVlZWS9NTS9ERCIsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsbGxsOiJZWVlZXHU1'@; put 'ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLGxsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNShkZGQpIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MzQ4XHU1MjRkfFx1NTM0OFx1NWY4Yy9pLGlzUE06ZnVuY3Rpb24ocyl7cmV0dXJuIlx1NTM0OFx1NWY4YyI9PT1zfSxtZXJpZGllbTpm'@; put 'dW5jdGlvbihzLEEsdil7cmV0dXJuIHM8MTI/Ilx1NTM0OFx1NTI0ZCI6Ilx1NTM0OFx1NWY4YyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU2NWU1XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NjVlNV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKHMpe3JldHVybiBzLndlZWsoKSE9PXRo'@; put 'aXMud2VlaygpPyJbXHU2NzY1XHU5MDMxXWRkZGQgTFQiOiJkZGRkIExUIn0sbGFzdERheToiW1x1NjYyOFx1NjVlNV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKHMpe3JldHVybiB0aGlzLndlZWsoKSE9PXMud2VlaygpPyJbXHU1MTQ4XHU5MDMxXWRkZGQgTFQiOiJkZGRkIExUIn0sc2FtZUVs'@; put 'c2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHU2NWU1LyxvcmRpbmFsOmZ1bmN0aW9uKHMsQSl7c3dpdGNoKEEpe2Nhc2UieSI6cmV0dXJuIDE9PT1zPyJcdTUxNDNcdTVlNzQiOnMrIlx1NWU3NCI7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gcysiXHU2'@; put 'NWU1IjtkZWZhdWx0OnJldHVybiBzfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1ZjhjIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU2NTcwXHU3OWQyIixzczoiJWRcdTc5ZDIiLG06IjFcdTUyMDYiLG1tOiIlZFx1NTIwNiIsaDoiMVx1NjY0Mlx1OTU5MyIsaGg6IiVkXHU2NjQyXHU5NTkz'@; put 'IixkOiIxXHU2NWU1IixkZDoiJWRcdTY1ZTUiLE06IjFcdTMwZjZcdTY3MDgiLE1NOiIlZFx1MzBmNlx1NjcwOCIseToiMVx1NWU3NCIseXk6IiVkXHU1ZTc0In19KX0oaCg5NzU4NikpfSw3Mzg3NShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImp2'@; put 'Iix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3BlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05v'@; put 'cF9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5lbl9TZWxvc29fUmVidV9LZW1pc19KZW11d2FoX1NlcHR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ik1pbl9TZW5fU2VsX1JlYl9LZW1fSmVtX1NlcCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTWdfU25fU2xfUmJf'@; put 'S21fSm1fU3AiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0i'@; put 'fSxtZXJpZGllbVBhcnNlOi9lbmppbmd8c2l5YW5nfHNvbnRlbnxuZGFsdS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHMsQSl7cmV0dXJuIDEyPT09cyYmKHM9MCksImVuamluZyI9PT1BP3M6InNpeWFuZyI9PT1BP3M+PTExP3M6cysxMjoic29udGVuIj09PUF8fCJuZGFsdSI9PT1BP3MrMTI6'@; put 'dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihzLEEsdil7cmV0dXJuIHM8MTE/ImVuamluZyI6czwxNT8ic2l5YW5nIjpzPDE5PyJzb250ZW4iOiJuZGFsdSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRGludGVuIHB1bmlrbyBwdWt1bF0gTFQiLG5leHREYXk6IltNYmVuamFuZyBwdWt1bF0gTFQi'@; put 'LG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLYWxhIHdpbmdpIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2tlcGVuZ2tlciBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IndvbnRlbiBpbmcgJXMiLHBhc3Q6IiVzIGluZ2thbmcg'@; put 'a2VwZW5na2VyIixzOiJzYXdldGF3aXMgZGV0aWsiLHNzOiIlZCBkZXRpayIsbToic2V0dW5nZ2FsIG1lbml0IixtbToiJWQgbWVuaXQiLGg6InNldHVuZ2dhbCBqYW0iLGhoOiIlZCBqYW0iLGQ6InNlZGludGVuIixkZDoiJWQgZGludGVuIixNOiJzZXd1bGFuIixNTToiJWQgd3VsYW4iLHk6'@; put 'InNldGF1biIseXk6IiVkIHRhdW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw3OTQ5OShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImthIix7bW9udGhzOiJcdTEwZDhcdTEwZDBcdTEwZGNcdTEwZDVcdTEwZDBcdTEwZTBcdTEw'@; put 'ZDhfXHUxMGQ3XHUxMGQ0XHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ1XHUxMGQwXHUxMGRhXHUxMGQ4X1x1MTBkYlx1MTBkMFx1MTBlMFx1MTBlMlx1MTBkOF9cdTEwZDBcdTEwZGVcdTEwZTBcdTEwZDhcdTEwZGFcdTEwZDhfXHUxMGRiXHUxMGQwXHUxMGQ4XHUxMGUxXHUxMGQ4X1x1MTBkOFx1'@; put 'MTBkNVx1MTBkY1x1MTBkOFx1MTBlMVx1MTBkOF9cdTEwZDhcdTEwZDVcdTEwZGFcdTEwZDhcdTEwZTFcdTEwZDhfXHUxMGQwXHUxMGQyXHUxMGQ1XHUxMGQ4XHUxMGUxXHUxMGUyXHUxMGRkX1x1MTBlMVx1MTBkNFx1MTBlNVx1MTBlMlx1MTBkNFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBlMFx1'@; put 'MTBkOF9cdTEwZGRcdTEwZTVcdTEwZTJcdTEwZGRcdTEwZGJcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDhfXHUxMGRjXHUxMGRkXHUxMGQ0XHUxMGRiXHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ4X1x1MTBkM1x1MTBkNFx1MTBkOVx1MTBkNFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBlMFx1MTBkOCIu'@; put 'c3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUxMGQ4XHUxMGQwXHUxMGRjX1x1MTBkN1x1MTBkNFx1MTBkMV9cdTEwZGJcdTEwZDBcdTEwZTBfXHUxMGQwXHUxMGRlXHUxMGUwX1x1MTBkYlx1MTBkMFx1MTBkOF9cdTEwZDhcdTEwZDVcdTEwZGNfXHUxMGQ4XHUxMGQ1XHUxMGRhX1x1MTBkMFx1'@; put 'MTBkMlx1MTBkNV9cdTEwZTFcdTEwZDRcdTEwZTVfXHUxMGRkXHUxMGU1XHUxMGUyX1x1MTBkY1x1MTBkZFx1MTBkNF9cdTEwZDNcdTEwZDRcdTEwZDkiLnNwbGl0KCJfIiksd2Vla2RheXM6e3N0YW5kYWxvbmU6Ilx1MTBkOVx1MTBkNVx1MTBkOFx1MTBlMFx1MTBkMF9cdTEwZGRcdTEwZTBc'@; put 'dTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGUxXHUxMGQwXHUxMGRiXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4X1x1MTBkZFx1MTBkN1x1MTBlZVx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZWVcdTEwZTNcdTEwZDdc'@; put 'dTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGRlXHUxMGQwXHUxMGUwXHUxMGQwXHUxMGUxXHUxMGQ5XHUxMGQ0XHUxMGQ1XHUxMGQ4X1x1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOCIuc3BsaXQoIl8iKSxmb3JtYXQ6Ilx1MTBkOVx1MTBkNVx1MTBk'@; put 'OFx1MTBlMFx1MTBkMFx1MTBlMV9cdTEwZGRcdTEwZTBcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGUxXHUxMGQwXHUxMGRiXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxX1x1MTBkZFx1MTBkN1x1MTBlZVx1MTBlOFx1MTBkMFx1MTBkMVx1MTBk'@; put 'MFx1MTBkN1x1MTBlMV9cdTEwZWVcdTEwZTNcdTEwZDdcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGRlXHUxMGQwXHUxMGUwXHUxMGQwXHUxMGUxXHUxMGQ5XHUxMGQ0XHUxMGQ1XHUxMGUxX1x1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBlMSIuc3Bs'@; put 'aXQoIl8iKSxpc0Zvcm1hdDovKFx1MTBlY1x1MTBkOFx1MTBkY1x1MTBkMHxcdTEwZThcdTEwZDRcdTEwZGJcdTEwZDNcdTEwZDRcdTEwZDIpL30sd2Vla2RheXNTaG9ydDoiXHUxMGQ5XHUxMGQ1XHUxMGQ4X1x1MTBkZFx1MTBlMFx1MTBlOF9cdTEwZTFcdTEwZDBcdTEwZGJfXHUxMGRkXHUx'@; put 'MGQ3XHUxMGVlX1x1MTBlZVx1MTBlM1x1MTBkN19cdTEwZGVcdTEwZDBcdTEwZTBfXHUxMGU4XHUxMGQwXHUxMGQxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTEwZDlcdTEwZDVfXHUxMGRkXHUxMGUwX1x1MTBlMVx1MTBkMF9cdTEwZGRcdTEwZDdfXHUxMGVlXHUxMGUzX1x1MTBkZVx1'@; put 'MTBkMF9cdTEwZThcdTEwZDAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVu'@; put 'ZGFyOntzYW1lRGF5OiJbXHUxMGQzXHUxMGU2XHUxMGQ0XHUxMGUxXSBMVFstXHUxMGQ2XHUxMGQ0XSIsbmV4dERheToiW1x1MTBlZVx1MTBkNVx1MTBkMFx1MTBkYV0gTFRbLVx1MTBkNlx1MTBkNF0iLGxhc3REYXk6IltcdTEwZDJcdTEwZTNcdTEwZThcdTEwZDhcdTEwZGNdIExUWy1cdTEw'@; put 'ZDZcdTEwZDRdIixuZXh0V2VlazoiW1x1MTBlOFx1MTBkNFx1MTBkYlx1MTBkM1x1MTBkNFx1MTBkMl0gZGRkZCBMVFstXHUxMGQ2XHUxMGQ0XSIsbGFzdFdlZWs6IltcdTEwZWNcdTEwZDhcdTEwZGNcdTEwZDBdIGRkZGQgTFQtXHUxMGQ2XHUxMGQ0IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl'@; put 'VGltZTp7ZnV0dXJlOmZ1bmN0aW9uKHMpe3JldHVybiBzLnJlcGxhY2UoLyhcdTEwZWNcdTEwZDBcdTEwZGJ8XHUxMGVjXHUxMGUzXHUxMGQ3fFx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN3xcdTEwZWNcdTEwZDRcdTEwZGF8XHUxMGQzXHUxMGU2fFx1MTBkN1x1MTBkNSkoXHUxMGQ4fFx1MTBk'@; put 'NCkvLGZ1bmN0aW9uKEEsdixDKXtyZXR1cm4iXHUxMGQ4Ij09PUM/disiXHUxMGU4XHUxMGQ4Ijp2K0MrIlx1MTBlOFx1MTBkOCJ9KX0scGFzdDpmdW5jdGlvbihzKXtyZXR1cm4vKFx1MTBlY1x1MTBkMFx1MTBkYlx1MTBkOHxcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDh8XHUxMGUxXHUxMGQw'@; put 'XHUxMGQwXHUxMGQ3XHUxMGQ4fFx1MTBkM1x1MTBlNlx1MTBkNHxcdTEwZDdcdTEwZDVcdTEwZDQpLy50ZXN0KHMpP3MucmVwbGFjZSgvKFx1MTBkOHxcdTEwZDQpJC8sIlx1MTBkOFx1MTBlMSBcdTEwZWNcdTEwZDhcdTEwZGMiKTovXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4Ly50ZXN0KHMp'@; put 'P3MucmVwbGFjZSgvXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4JC8sIlx1MTBlY1x1MTBkYVx1MTBkOFx1MTBlMSBcdTEwZWNcdTEwZDhcdTEwZGMiKTpzfSxzOiJcdTEwZTBcdTEwZDBcdTEwZGJcdTEwZDNcdTEwZDRcdTEwZGNcdTEwZDhcdTEwZGJcdTEwZDQgXHUxMGVjXHUxMGQwXHUxMGRi'@; put 'XHUxMGQ4IixzczoiJWQgXHUxMGVjXHUxMGQwXHUxMGRiXHUxMGQ4IixtOiJcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDgiLG1tOiIlZCBcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDgiLGg6Ilx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN1x1MTBkOCIsaGg6IiVkIFx1MTBlMVx1MTBkMFx1MTBkMFx1'@; put 'MTBkN1x1MTBkOCIsZDoiXHUxMGQzXHUxMGU2XHUxMGQ0IixkZDoiJWQgXHUxMGQzXHUxMGU2XHUxMGQ0IixNOiJcdTEwZDdcdTEwZDVcdTEwZDQiLE1NOiIlZCBcdTEwZDdcdTEwZDVcdTEwZDQiLHk6Ilx1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOCIseXk6IiVkIFx1MTBlY1x1MTBkNFx1MTBk'@; put 'YVx1MTBkOCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6LzB8MS1cdTEwZGFcdTEwZDh8XHUxMGRiXHUxMGQ0LVxkezEsMn18XGR7MSwyfS1cdTEwZDQvLG9yZGluYWw6ZnVuY3Rpb24ocyl7cmV0dXJuIDA9PT1zP3M6MT09PXM/cysiLVx1MTBkYVx1MTBkOCI6czwyMHx8czw9MTAwJiZzJTIw'@; put 'PT0wfHxzJTEwMD09MD8iXHUxMGRiXHUxMGQ0LSIrczpzKyItXHUxMGQ0In0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sOTM1NzMoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXswOiItXHUwNDQ4XHUwNDU2IiwxOiItXHUwNDQ4XHUwNDU2IiwyOiIt'@; put 'XHUwNDQ4XHUwNDU2IiwzOiItXHUwNDQ4XHUwNDU2Iiw0OiItXHUwNDQ4XHUwNDU2Iiw1OiItXHUwNDQ4XHUwNDU2Iiw2OiItXHUwNDQ4XHUwNDRiIiw3OiItXHUwNDQ4XHUwNDU2Iiw4OiItXHUwNDQ4XHUwNDU2Iiw5OiItXHUwNDQ4XHUwNDRiIiwxMDoiLVx1MDQ0OFx1MDQ0YiIsMjA6Ii1c'@; put 'dTA0NDhcdTA0NGIiLDMwOiItXHUwNDQ4XHUwNDRiIiw0MDoiLVx1MDQ0OFx1MDQ0YiIsNTA6Ii1cdTA0NDhcdTA0NTYiLDYwOiItXHUwNDQ4XHUwNDRiIiw3MDoiLVx1MDQ0OFx1MDQ1NiIsODA6Ii1cdTA0NDhcdTA0NTYiLDkwOiItXHUwNDQ4XHUwNDRiIiwxMDA6Ii1cdTA0NDhcdTA0NTYi'@; put 'fTt5LmRlZmluZUxvY2FsZSgia2siLHttb250aHM6Ilx1MDQ5Ylx1MDQzMFx1MDRhM1x1MDQ0Mlx1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0OWJcdTA0M2ZcdTA0MzBcdTA0M2RfXHUwNDNkXHUwNDMwXHUwNDQzXHUwNDQwXHUwNDRiXHUwNDM3X1x1MDQ0MVx1MDRkOVx1MDQ0M1x1MDQ1Nlx1MDQ0'@; put 'MF9cdTA0M2NcdTA0MzBcdTA0M2NcdTA0NGJcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDQzXHUwNDQxXHUwNDRiXHUwNDNjX1x1MDQ0OFx1MDQ1Nlx1MDQzYlx1MDQzNFx1MDQzNV9cdTA0NDJcdTA0MzBcdTA0M2NcdTA0NGJcdTA0MzdfXHUwNDliXHUwNDRiXHUwNDQwXHUwNDNhXHUwNGFmXHUw'@; put 'NDM5XHUwNDM1XHUwNDNhX1x1MDQ5Ylx1MDQzMFx1MDQzN1x1MDQzMFx1MDQzZF9cdTA0OWJcdTA0MzBcdTA0NDBcdTA0MzBcdTA0NDhcdTA0MzBfXHUwNDM2XHUwNDM1XHUwNDNiXHUwNDQyXHUwNDNlXHUwNDliXHUwNDQxXHUwNDMwXHUwNDNkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJc'@; put 'dTA0OWJcdTA0MzBcdTA0YTNfXHUwNDMwXHUwNDliXHUwNDNmX1x1MDQzZFx1MDQzMFx1MDQ0M19cdTA0NDFcdTA0ZDlcdTA0NDNfXHUwNDNjXHUwNDMwXHUwNDNjX1x1MDQzY1x1MDQzMFx1MDQ0M19cdTA0NDhcdTA0NTZcdTA0M2JfXHUwNDQyXHUwNDMwXHUwNDNjX1x1MDQ5Ylx1MDQ0Ylx1'@; put 'MDQ0MF9cdTA0OWJcdTA0MzBcdTA0MzdfXHUwNDliXHUwNDMwXHUwNDQwX1x1MDQzNlx1MDQzNVx1MDQzYiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDM2XHUwNDM1XHUwNDNhXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzNFx1MDRhZlx1MDQzOVx1MDQ0MVx1MDQzNVx1'@; put 'MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0NDFcdTA0MzVcdTA0MzlcdTA0NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDQxXHUwNGQ5XHUwNDQwXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzMVx1MDQzNVx1MDQzOVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9c'@; put 'dTA0MzZcdTA0YjFcdTA0M2NcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzNlx1MDQzNVx1MDQzYV9cdTA0MzRcdTA0YWZcdTA0MzlfXHUwNDQxXHUwNDM1XHUwNDM5X1x1MDQ0MVx1MDRkOVx1MDQ0MF9cdTA0MzFc'@; put 'dTA0MzVcdTA0MzlfXHUwNDM2XHUwNGIxXHUwNDNjX1x1MDQ0MVx1MDQzNVx1MDQzZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDM2XHUwNDNhX1x1MDQzNFx1MDQzOV9cdTA0NDFcdTA0MzlfXHUwNDQxXHUwNDQwX1x1MDQzMVx1MDQzOV9cdTA0MzZcdTA0M2NfXHUwNDQxXHUwNDNk'@; put 'Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1'@; put 'MDQxMVx1MDRhZlx1MDQzM1x1MDQ1Nlx1MDQzZCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixuZXh0RGF5OiJbXHUwNDE1XHUwNDQwXHUwNDQyXHUwNDM1XHUwNGEzIFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0NDFc'@; put 'dTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixsYXN0RGF5OiJbXHUwNDFhXHUwNDM1XHUwNDQ4XHUwNDM1IFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLGxhc3RXZWVrOiJbXHUwNGU4XHUwNDQyXHUwNDNhXHUwNDM1XHUwNDNkIFx1MDQzMFx1MDQzZlx1MDQ0Mlx1MDQz'@; put 'MFx1MDQzZFx1MDQ0Ylx1MDRhM10gZGRkZCBbXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNDU2XHUwNDQ4XHUwNDU2XHUwNDNkXHUwNDM0XHUwNDM1IixwYXN0OiIlcyBcdTA0MzFcdTA0YjFcdTA0'@; put 'NDBcdTA0NGJcdTA0M2QiLHM6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MFx1MDQzZFx1MDQzNVx1MDQ0OFx1MDQzNSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG06Ilx1MDQzMVx1MDQ1Nlx1MDQ0'@; put 'MCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLG1tOiIlZCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLGg6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDIi'@; put 'LGQ6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0M2FcdTA0YWZcdTA0M2QiLGRkOiIlZCBcdTA0M2FcdTA0YWZcdTA0M2QiLE06Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0MzBcdTA0MzkiLE1NOiIlZCBcdTA0MzBcdTA0MzkiLHk6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0MzZcdTA0NGJcdTA0'@; put 'M2IiLHl5OiIlZCBcdTA0MzZcdTA0NGJcdTA0M2IifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NDhcdTA0NTZ8XHUwNDQ4XHUwNDRiKS8sb3JkaW5hbDpmdW5jdGlvbihBKXtyZXR1cm4gQSsoY1tBXXx8Y1tBJTEwXXx8Y1tBPj0xMDA/MTAwOm51bGxdKX0sd2Vlazp7'@; put 'ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sNjg4MDcoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXsxOiJcdTE3ZTEiLDI6Ilx1MTdlMiIsMzoiXHUxN2UzIiw0OiJcdTE3ZTQiLDU6Ilx1MTdlNSIsNjoiXHUxN2U2Iiw3OiJcdTE3ZTciLDg6Ilx1MTdlOCIsOToi'@; put 'XHUxN2U5IiwwOiJcdTE3ZTAifSxzPXsiXHUxN2UxIjoiMSIsIlx1MTdlMiI6IjIiLCJcdTE3ZTMiOiIzIiwiXHUxN2U0IjoiNCIsIlx1MTdlNSI6IjUiLCJcdTE3ZTYiOiI2IiwiXHUxN2U3IjoiNyIsIlx1MTdlOCI6IjgiLCJcdTE3ZTkiOiI5IiwiXHUxN2UwIjoiMCJ9O3kuZGVmaW5lTG9j'@; put 'YWxlKCJrbSIse21vbnRoczoiXHUxNzk4XHUxNzgwXHUxNzlhXHUxN2I2X1x1MTc4MFx1MTdiYlx1MTc5OFx1MTdkMlx1MTc5N1x1MTdjOF9cdTE3OThcdTE3YjhcdTE3OTNcdTE3YjZfXHUxNzk4XHUxN2MxXHUxNzlmXHUxN2I2X1x1MTdhN1x1MTc5Zlx1MTc5N1x1MTdiNl9cdTE3OThcdTE3'@; put 'YjdcdTE3OTBcdTE3YmJcdTE3OTNcdTE3YjZfXHUxNzgwXHUxNzgwXHUxN2QyXHUxNzgwXHUxNzhhXHUxN2I2X1x1MTc5Zlx1MTdiOFx1MTdhMFx1MTdiNl9cdTE3ODBcdTE3ODlcdTE3ZDJcdTE3ODlcdTE3YjZfXHUxNzhmXHUxN2JiXHUxNzliXHUxN2I2X1x1MTc5Y1x1MTdiN1x1MTc4NVx1'@; put 'MTdkMlx1MTc4Nlx1MTdiN1x1MTc4MFx1MTdiNl9cdTE3OTJcdTE3ZDJcdTE3OTNcdTE3YmMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MTc5OFx1MTc4MFx1MTc5YVx1MTdiNl9cdTE3ODBcdTE3YmJcdTE3OThcdTE3ZDJcdTE3OTdcdTE3YzhfXHUxNzk4XHUxN2I4XHUxNzkzXHUxN2I2'@; put 'X1x1MTc5OFx1MTdjMVx1MTc5Zlx1MTdiNl9cdTE3YTdcdTE3OWZcdTE3OTdcdTE3YjZfXHUxNzk4XHUxN2I3XHUxNzkwXHUxN2JiXHUxNzkzXHUxN2I2X1x1MTc4MFx1MTc4MFx1MTdkMlx1MTc4MFx1MTc4YVx1MTdiNl9cdTE3OWZcdTE3YjhcdTE3YTBcdTE3YjZfXHUxNzgwXHUxNzg5XHUx'@; put 'N2QyXHUxNzg5XHUxN2I2X1x1MTc4Zlx1MTdiYlx1MTc5Ylx1MTdiNl9cdTE3OWNcdTE3YjdcdTE3ODVcdTE3ZDJcdTE3ODZcdTE3YjdcdTE3ODBcdTE3YjZfXHUxNzkyXHUxN2QyXHUxNzkzXHUxN2JjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTE3YTJcdTE3YjZcdTE3OTFcdTE3YjdcdTE3'@; put 'OGZcdTE3ZDJcdTE3OTlfXHUxNzg1XHUxN2QwXHUxNzkzXHUxN2QyXHUxNzkxX1x1MTdhMlx1MTc4NFx1MTdkMlx1MTc4Mlx1MTdiNlx1MTc5YV9cdTE3OTZcdTE3YmJcdTE3OTJfXHUxNzk2XHUxN2QyXHUxNzlhXHUxN2EwXHUxNzlmXHUxN2QyXHUxNzk0XHUxNzhmXHUxN2I3XHUxN2NkX1x1'@; put 'MTc5Zlx1MTdiYlx1MTc4MFx1MTdkMlx1MTc5YV9cdTE3OWZcdTE3YzVcdTE3OWFcdTE3Y2QiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUxN2EyXHUxN2I2X1x1MTc4NV9cdTE3YTJfXHUxNzk2X1x1MTc5Nlx1MTdkMlx1MTc5YV9cdTE3OWZcdTE3YmJfXHUxNzlmIi5zcGxpdCgiXyIp'@; put 'LHdlZWtkYXlzTWluOiJcdTE3YTJcdTE3YjZfXHUxNzg1X1x1MTdhMl9cdTE3OTZfXHUxNzk2XHUxN2QyXHUxNzlhX1x1MTc5Zlx1MTdiYl9cdTE3OWYiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6'@; put 'IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTE3OTZcdTE3ZDJcdTE3OWFcdTE3YjlcdTE3ODB8XHUxNzliXHUxN2QyXHUxNzg0XHUxN2I2XHUxNzg1Lyxp'@; put 'c1BNOmZ1bmN0aW9uKHYpe3JldHVybiJcdTE3OWJcdTE3ZDJcdTE3ODRcdTE3YjZcdTE3ODUiPT09dn0sbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDEyPyJcdTE3OTZcdTE3ZDJcdTE3OWFcdTE3YjlcdTE3ODAiOiJcdTE3OWJcdTE3ZDJcdTE3ODRcdTE3YjZcdTE3ODUifSxj'@; put 'YWxlbmRhcjp7c2FtZURheToiW1x1MTc5MFx1MTdkMlx1MTc4NFx1MTdjM1x1MTc5M1x1MTdjMVx1MTdjNyBcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixuZXh0RGF5OiJbXHUxNzlmXHUxN2QyXHUxN2EyXHUxN2MyXHUxNzgwIFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLG5l'@; put 'eHRXZWVrOiJkZGRkIFtcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixsYXN0RGF5OiJbXHUxNzk4XHUxN2QyXHUxNzlmXHUxN2I3XHUxNzliXHUxNzk4XHUxN2I3XHUxNzg5IFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTE3OWZcdTE3OTRcdTE3'@; put 'ZDJcdTE3OGZcdTE3YjZcdTE3YTBcdTE3Y2RcdTE3OThcdTE3YmJcdTE3OTNdIFtcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MTc5MVx1MTdjMFx1MTc4ZiIscGFzdDoiJXNcdTE3OThcdTE3YmJcdTE3OTMiLHM6'@; put 'Ilx1MTc5NFx1MTdjOVx1MTdiYlx1MTc5M1x1MTdkMlx1MTc5OFx1MTdiNlx1MTc5M1x1MTc5Y1x1MTdiN1x1MTc5M1x1MTdiNlx1MTc5MVx1MTdiOCIsc3M6IiVkIFx1MTc5Y1x1MTdiN1x1MTc5M1x1MTdiNlx1MTc5MVx1MTdiOCIsbToiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzkzXHUxN2I2'@; put 'XHUxNzkxXHUxN2I4IixtbToiJWQgXHUxNzkzXHUxN2I2XHUxNzkxXHUxN2I4IixoOiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODQiLGhoOiIlZCBcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODQiLGQ6Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc5MFx1MTdkMlx1MTc4'@; put 'NFx1MTdjMyIsZGQ6IiVkIFx1MTc5MFx1MTdkMlx1MTc4NFx1MTdjMyIsTToiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzgxXHUxN2MyIixNTToiJWQgXHUxNzgxXHUxN2MyIix5OiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3ODZcdTE3ZDJcdTE3OTNcdTE3YjZcdTE3YzYiLHl5OiIlZCBcdTE3ODZc'@; put 'dTE3ZDJcdTE3OTNcdTE3YjZcdTE3YzYifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cdTE3OTFcdTE3YjhcZHsxLDJ9LyxvcmRpbmFsOiJcdTE3OTFcdTE3YjglZCIscHJlcGFyc2U6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvW1x1MTdlMVx1MTdlMlx1MTdlM1x1MTdlNFx1MTdl'@; put 'NVx1MTdlNlx1MTdlN1x1MTdlOFx1MTdlOVx1MTdlMF0vZyxmdW5jdGlvbihDKXtyZXR1cm4gc1tDXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQyl7cmV0dXJuIGNbQ119KX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYp'@; put 'KX0sNjUwODIoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXsxOiJcdTBjZTciLDI6Ilx1MGNlOCIsMzoiXHUwY2U5Iiw0OiJcdTBjZWEiLDU6Ilx1MGNlYiIsNjoiXHUwY2VjIiw3OiJcdTBjZWQiLDg6Ilx1MGNlZSIsOToiXHUwY2VmIiwwOiJcdTBjZTYifSxzPXsi'@; put 'XHUwY2U3IjoiMSIsIlx1MGNlOCI6IjIiLCJcdTBjZTkiOiIzIiwiXHUwY2VhIjoiNCIsIlx1MGNlYiI6IjUiLCJcdTBjZWMiOiI2IiwiXHUwY2VkIjoiNyIsIlx1MGNlZSI6IjgiLCJcdTBjZWYiOiI5IiwiXHUwY2U2IjoiMCJ9O3kuZGVmaW5lTG9jYWxlKCJrbiIse21vbnRoczoiXHUwYzlj'@; put 'XHUwY2E4XHUwY2I1XHUwY2IwXHUwY2JmX1x1MGNhYlx1MGNjNlx1MGNhY1x1MGNjZFx1MGNiMFx1MGNiNVx1MGNiMFx1MGNiZl9cdTBjYWVcdTBjYmVcdTBjYjBcdTBjY2RcdTBjOWFcdTBjY2RfXHUwYzhmXHUwY2FhXHUwY2NkXHUwY2IwXHUwY2JmXHUwY2IyXHUwY2NkX1x1MGNhZVx1MGNj'@; put 'Nlx1MGNkNV9cdTBjOWNcdTBjYzJcdTBjYThcdTBjY2RfXHUwYzljXHUwY2MxXHUwY2IyXHUwY2M2XHUwY2Q2X1x1MGM4Nlx1MGM5N1x1MGNiOFx1MGNjZFx1MGM5Zlx1MGNjZF9cdTBjYjhcdTBjYzZcdTBjYWFcdTBjY2RcdTBjOWZcdTBjYzZcdTBjODJcdTBjYWNcdTBjYjBcdTBjY2RfXHUw'@; put 'Yzg1XHUwYzk1XHUwY2NkXHUwYzlmXHUwY2M2XHUwY2MyXHUwY2Q1XHUwY2FjXHUwY2IwXHUwY2NkX1x1MGNhOFx1MGNiNVx1MGNjNlx1MGM4Mlx1MGNhY1x1MGNiMFx1MGNjZF9cdTBjYTFcdTBjYmZcdTBjYjhcdTBjYzZcdTBjODJcdTBjYWNcdTBjYjBcdTBjY2QiLnNwbGl0KCJfIiksbW9u'@; put 'dGhzU2hvcnQ6Ilx1MGM5Y1x1MGNhOF9cdTBjYWJcdTBjYzZcdTBjYWNcdTBjY2RcdTBjYjBfXHUwY2FlXHUwY2JlXHUwY2IwXHUwY2NkXHUwYzlhXHUwY2NkX1x1MGM4Zlx1MGNhYVx1MGNjZFx1MGNiMFx1MGNiZlx1MGNiMlx1MGNjZF9cdTBjYWVcdTBjYzZcdTBjZDVfXHUwYzljXHUwY2My'@; put 'XHUwY2E4XHUwY2NkX1x1MGM5Y1x1MGNjMVx1MGNiMlx1MGNjNlx1MGNkNl9cdTBjODZcdTBjOTdcdTBjYjhcdTBjY2RcdTBjOWZcdTBjY2RfXHUwY2I4XHUwY2M2XHUwY2FhXHUwY2NkXHUwYzlmXHUwY2M2XHUwYzgyX1x1MGM4NVx1MGM5NVx1MGNjZFx1MGM5Zlx1MGNjNlx1MGNjMlx1MGNk'@; put 'NV9cdTBjYThcdTBjYjVcdTBjYzZcdTBjODJfXHUwY2ExXHUwY2JmXHUwY2I4XHUwY2M2XHUwYzgyIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MGNhZFx1MGNiZVx1MGNhOFx1MGNjMVx1MGNiNVx1MGNiZVx1MGNiMF9cdTBjYjhcdTBjYzZcdTBjYzJcdTBj'@; put 'ZDVcdTBjYWVcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2FlXHUwYzgyXHUwYzk3XHUwY2IzXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNhY1x1MGNjMVx1MGNhN1x1MGNiNVx1MGNiZVx1MGNiMF9cdTBjOTdcdTBjYzFcdTBjYjBcdTBjYzFcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2I2XHUwY2MxXHUw'@; put 'Yzk1XHUwY2NkXHUwY2IwXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNiNlx1MGNhOFx1MGNiZlx1MGNiNVx1MGNiZVx1MGNiMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBjYWRcdTBjYmVcdTBjYThcdTBjYzFfXHUwY2I4XHUwY2M2XHUwY2MyXHUwY2Q1XHUwY2FlX1x1MGNhZVx1MGM4'@; put 'Mlx1MGM5N1x1MGNiM19cdTBjYWNcdTBjYzFcdTBjYTdfXHUwYzk3XHUwY2MxXHUwY2IwXHUwY2MxX1x1MGNiNlx1MGNjMVx1MGM5NVx1MGNjZFx1MGNiMF9cdTBjYjZcdTBjYThcdTBjYmYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGNhZFx1MGNiZV9cdTBjYjhcdTBjYzZcdTBjYzJc'@; put 'dTBjZDVfXHUwY2FlXHUwYzgyX1x1MGNhY1x1MGNjMV9cdTBjOTdcdTBjYzFfXHUwY2I2XHUwY2MxX1x1MGNiNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSIsTFRTOiJBIGg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0g'@; put 'WVlZWSwgQSBoOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBjODdcdTBjODJcdTBjYTZcdTBjYzFdIExUIixuZXh0RGF5OiJbXHUwY2E4XHUwY2JlXHUwY2IzXHUwY2M2XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5'@; put 'OiJbXHUwY2E4XHUwY2JmXHUwY2E4XHUwY2NkXHUwY2E4XHUwY2M2XSBMVCIsbGFzdFdlZWs6IltcdTBjOTVcdTBjYzZcdTBjYzJcdTBjYThcdTBjYzZcdTBjYWZdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBjYThcdTBjODJcdTBjYTRcdTBj'@; put 'YjAiLHBhc3Q6IiVzIFx1MGNiOVx1MGNiZlx1MGM4Mlx1MGNhNlx1MGNjNiIsczoiXHUwYzk1XHUwY2M2XHUwY2IyXHUwY2I1XHUwY2MxIFx1MGM5NVx1MGNjZFx1MGNiN1x1MGNhM1x1MGM5N1x1MGNiM1x1MGNjMSIsc3M6IiVkIFx1MGNiOFx1MGNjNlx1MGM5NVx1MGNjNlx1MGM4Mlx1MGNh'@; put 'MVx1MGNjMVx1MGM5N1x1MGNiM1x1MGNjMSIsbToiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNhOFx1MGNiZlx1MGNhZVx1MGNiZlx1MGNiNyIsbW06IiVkIFx1MGNhOFx1MGNiZlx1MGNhZVx1MGNiZlx1MGNiNyIsaDoiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGM5N1x1MGM4'@; put 'Mlx1MGM5Zlx1MGNjNiIsaGg6IiVkIFx1MGM5N1x1MGM4Mlx1MGM5Zlx1MGNjNiIsZDoiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNhNlx1MGNiZlx1MGNhOCIsZGQ6IiVkIFx1MGNhNlx1MGNiZlx1MGNhOCIsTToiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNhNFx1MGNiZlx1'@; put 'MGM4Mlx1MGM5N1x1MGNiM1x1MGNjMSIsTU06IiVkIFx1MGNhNFx1MGNiZlx1MGM4Mlx1MGM5N1x1MGNiM1x1MGNjMSIseToiXHUwYzkyXHUwYzgyXHUwY2E2XHUwY2MxIFx1MGNiNVx1MGNiMFx1MGNjZFx1MGNiNyIseXk6IiVkIFx1MGNiNVx1MGNiMFx1MGNjZFx1MGNiNyJ9LHByZXBhcnNl'@; put 'OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1tcdTBjZTdcdTBjZThcdTBjZTlcdTBjZWFcdTBjZWJcdTBjZWNcdTBjZWRcdTBjZWVcdTBjZWZcdTBjZTZdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9c'@; put 'ZC9nLGZ1bmN0aW9uKEMpe3JldHVybiBjW0NdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGNiMFx1MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZnxcdTBjYWNcdTBjYzZcdTBjYjNcdTBjYmZcdTBjOTdcdTBjY2RcdTBjOTdcdTBjYzZ8XHUwY2FlXHUwY2E3XHUwY2NkXHUwY2FmXHUwY2JlXHUw'@; put 'Y2I5XHUwY2NkXHUwY2E4fFx1MGNiOFx1MGM4Mlx1MGM5Y1x1MGNjNi8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHYsQyl7cmV0dXJuIDEyPT09diYmKHY9MCksIlx1MGNiMFx1MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZiI9PT1DP3Y8ND92OnYrMTI6Ilx1MGNhY1x1MGNjNlx1MGNiM1x1'@; put 'MGNiZlx1MGM5N1x1MGNjZFx1MGM5N1x1MGNjNiI9PT1DP3Y6Ilx1MGNhZVx1MGNhN1x1MGNjZFx1MGNhZlx1MGNiZVx1MGNiOVx1MGNjZFx1MGNhOCI9PT1DP3Y+PTEwP3Y6disxMjoiXHUwY2I4XHUwYzgyXHUwYzljXHUwY2M2Ij09PUM/disxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9u'@; put 'KHYsQyx3KXtyZXR1cm4gdjw0PyJcdTBjYjBcdTBjYmVcdTBjYTRcdTBjY2RcdTBjYjBcdTBjYmYiOnY8MTA/Ilx1MGNhY1x1MGNjNlx1MGNiM1x1MGNiZlx1MGM5N1x1MGNjZFx1MGM5N1x1MGNjNiI6djwxNz8iXHUwY2FlXHUwY2E3XHUwY2NkXHUwY2FmXHUwY2JlXHUwY2I5XHUwY2NkXHUw'@; put 'Y2E4Ijp2PDIwPyJcdTBjYjhcdTBjODJcdTBjOWNcdTBjYzYiOiJcdTBjYjBcdTBjYmVcdTBjYTRcdTBjY2RcdTBjYjBcdTBjYmYifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1MGNhOFx1MGNjNlx1MGNkNSkvLG9yZGluYWw6ZnVuY3Rpb24odil7cmV0dXJuIHYrIlx1MGNh'@; put 'OFx1MGNjNlx1MGNkNSJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShoKDk3NTg2KSl9LDIwMTM3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgia28iLHttb250aHM6IjFcdWM2ZDRfMlx1YzZkNF8zXHVjNmQ0XzRcdWM2ZDRfNVx1YzZkNF82XHVjNmQ0'@; put 'XzdcdWM2ZDRfOFx1YzZkNF85XHVjNmQ0XzEwXHVjNmQ0XzExXHVjNmQ0XzEyXHVjNmQ0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxXHVjNmQ0XzJcdWM2ZDRfM1x1YzZkNF80XHVjNmQ0XzVcdWM2ZDRfNlx1YzZkNF83XHVjNmQ0XzhcdWM2ZDRfOVx1YzZkNF8xMFx1YzZkNF8xMVx1YzZk'@; put 'NF8xMlx1YzZkNCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHVjNzdjXHVjNjk0XHVjNzdjX1x1YzZkNFx1YzY5NFx1Yzc3Y19cdWQ2NTRcdWM2OTRcdWM3N2NfXHVjMjE4XHVjNjk0XHVjNzdjX1x1YmFhOVx1YzY5NFx1Yzc3Y19cdWFlMDhcdWM2OTRcdWM3N2NfXHVkMWEwXHVjNjk0XHVjNzdj'@; put 'Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1Yzc3Y19cdWM2ZDRfXHVkNjU0X1x1YzIxOF9cdWJhYTlfXHVhZTA4X1x1ZDFhMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHVjNzdjX1x1YzZkNF9cdWQ2NTRfXHVjMjE4X1x1YmFhOV9cdWFlMDhfXHVkMWEwIi5zcGxpdCgiXyIpLGxv'@; put 'bmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEgaDptbTpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyIsTExMOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyBBIGg6bW0iLExMTEw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIGRkZGQgQSBoOm1t'@; put 'IixsOiJZWVlZLk1NLkRELiIsbGw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIixsbGw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIEEgaDptbSIsbGxsbDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgZGRkZCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiXHVjNjI0XHViMjk4IExUIixu'@; put 'ZXh0RGF5OiJcdWIwYjRcdWM3N2MgTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJcdWM1YjRcdWM4MWMgTFQiLGxhc3RXZWVrOiJcdWM5YzBcdWIwOWNcdWM4ZmMgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHVkNmM0IixwYXN0OiIlcyBc'@; put 'dWM4MDQiLHM6Ilx1YmE4NyBcdWNkMDgiLHNzOiIlZFx1Y2QwOCIsbToiMVx1YmQ4NCIsbW06IiVkXHViZDg0IixoOiJcdWQ1NWMgXHVjMmRjXHVhYzA0IixoaDoiJWRcdWMyZGNcdWFjMDQiLGQ6Ilx1ZDU1OFx1YjhlOCIsZGQ6IiVkXHVjNzdjIixNOiJcdWQ1NWMgXHViMmVjIixNTToiJWRc'@; put 'dWIyZWMiLHk6Ilx1Yzc3YyBcdWIxNDQiLHl5OiIlZFx1YjE0NCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHVjNzdjfFx1YzZkNHxcdWM4ZmMpLyxvcmRpbmFsOmZ1bmN0aW9uKHMsQSl7c3dpdGNoKEEpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIHMrIlx1'@; put 'Yzc3YyI7Y2FzZSJNIjpyZXR1cm4gcysiXHVjNmQ0IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIHMrIlx1YzhmYyI7ZGVmYXVsdDpyZXR1cm4gc319LG1lcmlkaWVtUGFyc2U6L1x1YzYyNFx1YzgwNHxcdWM2MjRcdWQ2YzQvLGlzUE06ZnVuY3Rpb24ocyl7cmV0dXJuIlx1YzYyNFx1ZDZjNCI9'@; put 'PT1zfSxtZXJpZGllbTpmdW5jdGlvbihzLEEsdil7cmV0dXJuIHM8MTI/Ilx1YzYyNFx1YzgwNCI6Ilx1YzYyNFx1ZDZjNCJ9fSl9KGgoOTc1ODYpKX0sNjM3NDQoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGModixDLHcsUyl7dmFyIEw9e3M6WyJceGU3ZW5k'@; put 'IHNhblx4ZWV5ZSIsIlx4ZTdlbmQgc2FuXHhlZXlleWFuIl0sc3M6W3YrIiBzYW5ceGVleWUiLHYrIiBzYW5ceGVleWV5YW4iXSxtOlsiZGVxXHhlZXFleWVrIiwiZGVxXHhlZXFleWVrXHhlYSJdLG1tOlt2KyIgZGVxXHhlZXFlIix2KyIgZGVxXHhlZXFleWFuIl0saDpbInNhZXRlayIsInNh'@; put 'ZXRla1x4ZWEiXSxoaDpbdisiIHNhZXQiLHYrIiBzYWV0YW4iXSxkOlsicm9qZWsiLCJyb2pla1x4ZWEiXSxkZDpbdisiIHJvaiIsdisiIHJvamFuIl0sdzpbImhlZnRleWVrIiwiaGVmdGV5ZWtceGVhIl0sd3c6W3YrIiBoZWZ0ZSIsdisiIGhlZnRleWFuIl0sTTpbIm1laGVrIiwibWVoZWtc'@; put 'eGVhIl0sTU06W3YrIiBtZWgiLHYrIiBtZWhhbiJdLHk6WyJzYWxlayIsInNhbGVrXHhlYSJdLHl5Olt2KyIgc2FsIix2KyIgc2FsYW4iXX07cmV0dXJuIEM/TFt3XVswXTpMW3ddWzFdfXkuZGVmaW5lTG9jYWxlKCJrdS1rbXIiLHttb250aHM6IlJceGVhYmVuZGFuX1NpYmF0X0FkYXJfTlx4'@; put 'ZWVzYW5fR3VsYW5fSGV6XHhlZXJhbl9UXHhlZXJtZWhfVGViYXhfXHhjZWxvbl9Db3RtZWhfTWlqZGFyX0JlcmZhbmJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiUlx4ZWFiX1NpYl9BZGFfTlx4ZWVzX0d1bF9IZXpfVFx4ZWVyX1RlYl9ceGNlbG9fQ290X01pal9CZXIiLnNwbGl0KCJf'@; put 'IiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiWWVrXHUwMTVmZW1fRHVcdTAxNWZlbV9TXHhlYVx1MDE1ZmVtX1x4Yzdhclx1MDE1ZmVtX1BceGVhbmNcdTAxNWZlbV9ceGNlbl9cdTAxNWVlbVx4ZWUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiWWVrX0R1X1NceGVhX1x4Yzdh'@; put 'cl9QXHhlYW5fXHhjZW5fXHUwMTVlZW0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlllX0R1X1NceGVhX1x4YzdhX1BceGVhX1x4Y2VuX1x1MDE1ZWUiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDEyP3c/ImJuIjoiQk4iOnc/InBuIjoiUE4ifSxtZXJp'@; put 'ZGllbVBhcnNlOi9ibnxCTnxwbnxQTi8sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU1bYV0gWVlZWVthbl0iLExMTDoiRG8gTU1NTVthXSBZWVlZW2FuXSBISDptbSIsTExMTDoiZGRkZCwgRG8gTU1NTVthXSBZWVlZ'@; put 'W2FuXSBISDptbSIsbGw6IkRvIE1NTVsuXSBZWVlZW2FuXSIsbGxsOiJEbyBNTU1bLl0gWVlZWVthbl0gSEg6bW0iLGxsbGw6ImRkZFsuXSwgRG8gTU1NWy5dIFlZWVlbYW5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltceGNlcm8gZGkgc2FldF0gTFQgW2RlXSIsbmV4dERheToiW1Np'@; put 'Ylx4ZWEgZGkgc2FldF0gTFQgW2RlXSIsbmV4dFdlZWs6ImRkZGQgW2RpIHNhZXRdIExUIFtkZV0iLGxhc3REYXk6IltEdWggZGkgc2FldF0gTFQgW2RlXSIsbGFzdFdlZWs6ImRkZGRbYSBib3JceGVlIGRpIHNhZXRdIExUIFtkZV0iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1'@; put 'cmU6ImRpICVzIGRlIixwYXN0OiJiZXJceGVlICVzIixzOmMsc3M6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6Yyx3OmMsd3c6YyxNOmMsTU06Yyx5OmMseXk6Y30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSg/OnlceGVhfFx4ZWF8XC4pLyxvcmRpbmFsOmZ1bmN0aW9uKHYs'@; put 'Qyl7dmFyIHc9Qy50b0xvd2VyQ2FzZSgpO3JldHVybiB3LmluY2x1ZGVzKCJ3Iil8fHcuaW5jbHVkZXMoIm0iKT92KyIuIjp2K2Z1bmN0aW9uIHModil7dmFyIEM9KHY9IiIrdikuc3Vic3RyaW5nKHYubGVuZ3RoLTEpLHc9di5sZW5ndGg+MT92LnN1YnN0cmluZyh2Lmxlbmd0aC0yKToiIjty'@; put 'ZXR1cm4gMTI9PXd8fDEzPT13fHwiMiIhPUMmJiIzIiE9QyYmIjUwIiE9dyYmIjcwIiE9QyYmIjgwIiE9Qz8iXHhlYSI6InlceGVhIn0odil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDcwMTExKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17MToi'@; put 'XHUwNjYxIiwyOiJcdTA2NjIiLDM6Ilx1MDY2MyIsNDoiXHUwNjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIsNzoiXHUwNjY3Iiw4OiJcdTA2NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0scz17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJc'@; put 'dTA2NjUiOiI1IiwiXHUwNjY2IjoiNiIsIlx1MDY2NyI6IjciLCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIsIlx1MDY2MCI6IjAifSxBPVsiXHUwNmE5XHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNmNjIFx1MDYyZlx1MDY0OFx1MDY0OFx1MDZkNVx1MDY0NSIsIlx1MDYzNFx1MDY0OFx1'@; put 'MDYyOFx1MDYyN1x1MDYyYSIsIlx1MDYyNlx1MDYyN1x1MDYzMlx1MDYyN1x1MDYzMSIsIlx1MDY0Nlx1MDZjY1x1MDYzM1x1MDYyN1x1MDY0NiIsIlx1MDYyNlx1MDYyN1x1MDZjY1x1MDYyN1x1MDYzMSIsIlx1MDYyZFx1MDY0OFx1MDYzMlx1MDZkNVx1MDZjY1x1MDYzMVx1MDYyN1x1MDY0'@; put 'NiIsIlx1MDYyYVx1MDZkNVx1MDY0NVx1MDY0NVx1MDY0OFx1MDYzMiIsIlx1MDYyNlx1MDYyN1x1MDYyOCIsIlx1MDYyNlx1MDZkNVx1MDZjY1x1MDY0NFx1MDY0OFx1MDY0OFx1MDY0NCIsIlx1MDYyYVx1MDYzNFx1MDYzMVx1MDZjY1x1MDY0Nlx1MDZjYyBcdTA2Y2NcdTA2ZDVcdTA2NDNc'@; put 'dTA2ZDVcdTA2NDUiLCJcdTA2MmFcdTA2MzRcdTA2MzFcdTA2Y2NcdTA2NDZcdTA2Y2MgXHUwNjJmXHUwNjQ4XHUwNjQ4XHUwNmQ1XHUwNjQ1IiwiXHUwNjQzXHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNmNjIFx1MDZjY1x1MDZkNVx1MDZhOVx1MDZkNVx1MDY0NSJdO3kuZGVmaW5lTG9j'@; put 'YWxlKCJrdSIse21vbnRoczpBLG1vbnRoc1Nob3J0OkEsd2Vla2RheXM6Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0M1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwY19cdTA2MmZcdTA2NDhcdTA2NDhcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdc'@; put 'dTIwMGNfXHUwNjMzXHUwNmNlXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDY4Nlx1MDY0OFx1MDYyN1x1MDYzMVx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwY19cdTA2N2VcdTA2Y2VcdTA2NDZcdTA2MmNcdTA2MzRcdTA2NDdc'@; put 'dTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjQ3XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjQ2XHUwNmNjX1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDNcdTA2'@; put 'MzRcdTA2NDdcdTIwMGNcdTA2NDVfXHUwNjJmXHUwNjQ4XHUwNjQ4XHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDYzM1x1MDZjZVx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2ODZcdTA2NDhcdTA2MjdcdTA2MzFcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVfXHUwNjdlXHUwNmNlXHUw'@; put 'NjQ2XHUwNjJjXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDY0N1x1MDY0N1x1MjAwY1x1MDZjY1x1MDY0Nlx1MDZjY19cdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDZjY19cdTA2MmZfXHUwNjMzX1x1MDY4'@; put 'Nl9cdTA2N2VfXHUwNjQ3X1x1MDYzNCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRk'@; put 'LCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYyNlx1MDZjZVx1MDY0OFx1MDYyN1x1MDYzMVx1MDY0N1x1MjAwY3xcdTA2MjhcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2MjdcdTA2NDZcdTA2Y2MvLGlzUE06ZnVuY3Rpb24oQyl7cmV0dXJuL1x1MDYyNlx1MDZjZVx1MDY0'@; put 'OFx1MDYyN1x1MDYzMVx1MDY0N1x1MjAwYy8udGVzdChDKX0sbWVyaWRpZW06ZnVuY3Rpb24oQyx3LFMpe3JldHVybiBDPDEyPyJcdTA2MjhcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2MjdcdTA2NDZcdTA2Y2MiOiJcdTA2MjZcdTA2Y2VcdTA2NDhcdTA2MjdcdTA2MzFcdTA2NDdcdTIwMGMifSxj'@; put 'YWxlbmRhcjp7c2FtZURheToiW1x1MDYyNlx1MDY0N1x1MjAwY1x1MDY0NVx1MDYzMVx1MDZjNiBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixuZXh0RGF5OiJbXHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjIFx1MDY0M1x1'@; put 'MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixsYXN0RGF5OiJbXHUwNjJmXHUwNjQ4XHUwNmNlXHUwNjQ2XHUwNmNlIFx1MDY0M1x1MDYyN1x1MDYyYVx1'@; put 'MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDRcdTA2NDdcdTIwMGMgJXMiLHBhc3Q6IiVzIixzOiJc'@; put 'dTA2ODZcdTA2NDdcdTIwMGNcdTA2NDZcdTA2MmYgXHUwNjg2XHUwNjMxXHUwNjQzXHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIixzczoiXHUwNjg2XHUwNjMxXHUwNjQzXHUwNjQ3XHUyMDBjICVkIixtOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjJlXHUwNjQ4'@; put 'XHUwNjQ0XHUwNjQ3XHUyMDBjXHUwNjQzIixtbToiJWQgXHUwNjJlXHUwNjQ4XHUwNjQ0XHUwNjQ3XHUyMDBjXHUwNjQzIixoOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxIixoaDoiJWQgXHUwNjQzXHUwNjI3XHUw'@; put 'NjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxIixkOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjk1XHUwNmM2XHUwNjk4IixkZDoiJWQgXHUwNjk1XHUwNmM2XHUwNjk4IixNOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjQ1XHUwNjI3XHUwNjQ2XHUwNmFmIixNTToiJWQg'@; put 'XHUwNjQ1XHUwNjI3XHUwNjQ2XHUwNmFmIix5OiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMgXHUwNjMzXHUwNjI3XHUwNmI1Iix5eToiJWQgXHUwNjMzXHUwNjI3XHUwNmI1In0scHJlcGFyc2U6ZnVuY3Rpb24oQyl7cmV0dXJuIEMucmVwbGFjZSgvW1x1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2'@; put 'NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbih3KXtyZXR1cm4gc1t3XX0pLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oQyl7cmV0dXJuIEMucmVwbGFjZSgvXGQvZyxmdW5jdGlvbih3KXtyZXR1cm4gY1t3XX0pLnJl'@; put 'cGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oaCg5NzU4NikpfSw5OTE4NyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9ezA6Ii1cdTA0NDdcdTA0YWYiLDE6Ii1cdTA0NDdcdTA0MzgiLDI6Ii1cdTA0NDdcdTA0MzgiLDM6Ii1cdTA0'@; put 'NDdcdTA0YWYiLDQ6Ii1cdTA0NDdcdTA0YWYiLDU6Ii1cdTA0NDdcdTA0MzgiLDY6Ii1cdTA0NDdcdTA0NGIiLDc6Ii1cdTA0NDdcdTA0MzgiLDg6Ii1cdTA0NDdcdTA0MzgiLDk6Ii1cdTA0NDdcdTA0NDMiLDEwOiItXHUwNDQ3XHUwNDQzIiwyMDoiLVx1MDQ0N1x1MDQ0YiIsMzA6Ii1cdTA0'@; put 'NDdcdTA0NDMiLDQwOiItXHUwNDQ3XHUwNDRiIiw1MDoiLVx1MDQ0N1x1MDRhZiIsNjA6Ii1cdTA0NDdcdTA0NGIiLDcwOiItXHUwNDQ3XHUwNDM4Iiw4MDoiLVx1MDQ0N1x1MDQzOCIsOTA6Ii1cdTA0NDdcdTA0NDMiLDEwMDoiLVx1MDQ0N1x1MDRhZiJ9O3kuZGVmaW5lTG9jYWxlKCJreSIs'@; put 'e21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRjX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Y19cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1'@; put 'MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRjX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRm'@; put 'XHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0NGMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMl9cdTA0NDRcdTA0MzVcdTA0MzJfXHUw'@; put 'NDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQzZVx1MDQzYVx1MDQ0'@; put 'Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MTZcdTA0MzVcdTA0M2FcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDE0XHUwNGFmXHUwNDM5XHUwNDQ4XHUwNGU5XHUwNDNjXHUwNDMxXHUwNGFmX1x1MDQy'@; put 'OFx1MDQzNVx1MDQzOVx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzOF9cdTA0MjhcdTA0MzBcdTA0NDBcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDExXHUwNDM1XHUwNDM5XHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4X1x1MDQxNlx1MDQ0M1x1MDQzY1x1MDQz'@; put 'MF9cdTA0MThcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzgiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDE2XHUwNDM1XHUwNDNhX1x1MDQxNFx1MDRhZlx1MDQzOV9cdTA0MjhcdTA0MzVcdTA0MzlfXHUwNDI4XHUwNDMwXHUwNDQwX1x1MDQxMVx1MDQzNVx1MDQzOV9cdTA0'@; put 'MTZcdTA0NDNcdTA0M2NfXHUwNDE4XHUwNDQ4XHUwNDM1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MTZcdTA0M2FfXHUwNDE0XHUwNDM5X1x1MDQyOFx1MDQzOV9cdTA0MjhcdTA0NDBfXHUwNDExXHUwNDM5X1x1MDQxNlx1MDQzY19cdTA0MThcdTA0NDgiLnNwbGl0KCJfIiksbG9u'@; put 'Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNGFmXHUwNDMz'@; put 'XHUwNGFmXHUwNDNkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLG5leHREYXk6IltcdTA0MmRcdTA0NDBcdTA0NDJcdTA0MzVcdTA0YTMgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLGxhc3RE'@; put 'YXk6IltcdTA0MWFcdTA0MzVcdTA0NDdcdTA0NGRcdTA0NGQgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsbGFzdFdlZWs6IltcdTA0ZThcdTA0NDJcdTA0M2FcdTA0ZTlcdTA0M2QgXHUwNDMwXHUwNDNmXHUwNDQyXHUwNDMwXHUwNDNkXHUwNDRiXHUwNDNkXSBkZGRkIFtcdTA0M2Fc'@; put 'dTA0YWZcdTA0M2RcdTA0YWZdIFtcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA0MzhcdTA0NDdcdTA0MzhcdTA0M2RcdTA0MzRcdTA0MzUiLHBhc3Q6IiVzIFx1MDQzY1x1MDQ0M1x1MDQ0MFx1MDQ0M1x1MDQz'@; put 'ZCIsczoiXHUwNDMxXHUwNDM4XHUwNDQwXHUwNDNkXHUwNDM1XHUwNDQ3XHUwNDM1IFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsbToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzY1x1MDRh'@; put 'Zlx1MDQzZFx1MDRlOVx1MDQ0MiIsbW06IiVkIFx1MDQzY1x1MDRhZlx1MDQzZFx1MDRlOVx1MDQ0MiIsaDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0MiIsZDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1'@; put 'MDQzYVx1MDRhZlx1MDQzZCIsZGQ6IiVkIFx1MDQzYVx1MDRhZlx1MDQzZCIsTToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzMFx1MDQzOSIsTU06IiVkIFx1MDQzMFx1MDQzOSIseToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzNlx1MDQ0Ylx1MDQzYiIseXk6IiVkIFx1MDQzNlx1MDQ0Ylx1'@; put 'MDQzYiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQ0N1x1MDQzOHxcdTA0NDdcdTA0NGJ8XHUwNDQ3XHUwNGFmfFx1MDQ0N1x1MDQ0MykvLG9yZGluYWw6ZnVuY3Rpb24oQSl7cmV0dXJuIEErKGNbQV18fGNbQSUxMF18fGNbQT49MTAwPzEwMDpudWxsXSl9LHdlZWs6'@; put 'e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDM1OTY5KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKHcsUyxMLFIpe3ZhciB4PXttOlsiZW5nIE1pbnV0dCIsImVuZ2VyIE1pbnV0dCJdLGg6WyJlbmcgU3Rvbm4iLCJlbmdlciBTdG9ubiJdLGQ6WyJlZW4g'@; put 'RGFnIiwiZW5nZW0gRGFnIl0sTTpbImVlIE1vdW50IiwiZW5nZW0gTW91bnQiXSx5OlsiZWUgSm9lciIsImVuZ2VtIEpvZXIiXX07cmV0dXJuIFM/eFtMXVswXTp4W0xdWzFdfWZ1bmN0aW9uIHYodyl7aWYodz1wYXJzZUludCh3LDEwKSxpc05hTih3KSlyZXR1cm4hMTtpZih3PDApcmV0dXJu'@; put 'ITA7aWYodzwxMClyZXR1cm4gNDw9dyYmdzw9NztpZih3PDEwMCl7dmFyIFM9dyUxMDtyZXR1cm4gdigwPT09Uz93LzEwOlMpfWlmKHc8MWU0KXtmb3IoO3c+PTEwOyl3Lz0xMDtyZXR1cm4gdih3KX1yZXR1cm4gdih3Lz0xZTMpfXkuZGVmaW5lTG9jYWxlKCJsYiIse21vbnRoczoiSmFudWFy'@; put 'X0ZlYnJ1YXJfTVx4ZTRlcnpfQWJyXHhlYmxsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYnIuX01yei5fQWJyLl9NZWVfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3Yu'@; put 'X0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubmRlZ19NXHhlOWluZGVnX0RceGVibnNjaGRlZ19NXHhlYnR0d29jaF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTVx4ZTkuX0RceGVi'@; put 'Ll9NXHhlYi5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01ceGU5X0RceGViX01ceGViX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0gW0F1ZXJdIixMVFM6Ikg6bW06c3MgW0F1ZXJdIixM'@; put 'OiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXV0IHVtXSBMVCIsc2FtZUVsc2U6IkwiLG5leHREYXk6IltNdWVyIHVt'@; put 'XSBMVCIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCIsbGFzdERheToiW0dceGVic2NodGVyIHVtXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW0xlc2NodGVuXSBkZGRkIFt1bV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltMZXNj'@; put 'aHRlXSBkZGRkIFt1bV0gTFQifX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uIHModyl7cmV0dXJuIHYody5zdWJzdHIoMCx3LmluZGV4T2YoIiAiKSkpPyJhICIrdzoiYW4gIit3fSxwYXN0OmZ1bmN0aW9uIEEodyl7cmV0dXJuIHYody5zdWJzdHIoMCx3LmluZGV4T2YoIiAiKSkp'@; put 'PyJ2aXJ1ICIrdzoidmlydW4gIit3fSxzOiJlIHB1ZXIgU2Vrb25uZW4iLHNzOiIlZCBTZWtvbm5lbiIsbTpjLG1tOiIlZCBNaW51dHRlbiIsaDpjLGhoOiIlZCBTdG9ubmVuIixkOmMsZGQ6IiVkIERlZWciLE06YyxNTToiJWQgTVx4ZTlpbnQiLHk6Yyx5eToiJWQgSm9lciJ9LGRheU9mTW9u'@; put 'dGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSwzMzUyNihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoImxvIix7bW9udGhzOiJcdTBlYTFcdTBlYjFcdTBlODdcdTBl'@; put 'ODFcdTBlYWRcdTBlOTlfXHUwZTgxXHUwZWI4XHUwZWExXHUwZTllXHUwZWIyX1x1MGVhMVx1MGViNVx1MGU5OVx1MGViMl9cdTBlYzBcdTBlYTFcdTBlYWFcdTBlYjJfXHUwZTllXHUwZWI2XHUwZTk0XHUwZWFhXHUwZWIwXHUwZTllXHUwZWIyX1x1MGVhMVx1MGViNFx1MGU5Nlx1MGViOFx1'@; put 'MGU5OVx1MGViMl9cdTBlODFcdTBlY2RcdTBlYTVcdTBlYjBcdTBlODFcdTBlYmJcdTBlOTRfXHUwZWFhXHUwZWI0XHUwZTg3XHUwZWFiXHUwZWIyX1x1MGU4MVx1MGViMVx1MGU5OVx1MGU4ZFx1MGViMl9cdTBlOTVcdTBlYjhcdTBlYTVcdTBlYjJfXHUwZTllXHUwZWIwXHUwZTg4XHUwZWI0'@; put 'XHUwZTgxX1x1MGU5N1x1MGViMVx1MGU5OVx1MGVhN1x1MGViMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZWExXHUwZWIxXHUwZTg3XHUwZTgxXHUwZWFkXHUwZTk5X1x1MGU4MVx1MGViOFx1MGVhMVx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjVcdTBlOTlcdTBlYjJfXHUwZWMwXHUw'@; put 'ZWExXHUwZWFhXHUwZWIyX1x1MGU5ZVx1MGViNlx1MGU5NFx1MGVhYVx1MGViMFx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjRcdTBlOTZcdTBlYjhcdTBlOTlcdTBlYjJfXHUwZTgxXHUwZWNkXHUwZWE1XHUwZWIwXHUwZTgxXHUwZWJiXHUwZTk0X1x1MGVhYVx1MGViNFx1MGU4N1x1MGVhYlx1'@; put 'MGViMl9cdTBlODFcdTBlYjFcdTBlOTlcdTBlOGRcdTBlYjJfXHUwZTk1XHUwZWI4XHUwZWE1XHUwZWIyX1x1MGU5ZVx1MGViMFx1MGU4OFx1MGViNFx1MGU4MV9cdTBlOTdcdTBlYjFcdTBlOTlcdTBlYTdcdTBlYjIiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MGVhZFx1MGViMlx1MGU5N1x1'@; put 'MGViNFx1MGU5NF9cdTBlODhcdTBlYjFcdTBlOTlfXHUwZWFkXHUwZWIxXHUwZTg3XHUwZTg0XHUwZWIyXHUwZTk5X1x1MGU5ZVx1MGViOFx1MGU5NF9cdTBlOWVcdTBlYjBcdTBlYWJcdTBlYjFcdTBlOTRfXHUwZWFhXHUwZWI4XHUwZTgxX1x1MGVjMFx1MGVhYVx1MGViYlx1MGViMiIuc3Bs'@; put 'aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBlOTdcdTBlYjRcdTBlOTRfXHUwZTg4XHUwZWIxXHUwZTk5X1x1MGVhZFx1MGViMVx1MGU4N1x1MGU4NFx1MGViMlx1MGU5OV9cdTBlOWVcdTBlYjhcdTBlOTRfXHUwZTllXHUwZWIwXHUwZWFiXHUwZWIxXHUwZTk0X1x1MGVhYVx1MGViOFx1MGU4'@; put 'MV9cdTBlYzBcdTBlYWFcdTBlYmJcdTBlYjIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGU5N19cdTBlODhfXHUwZWFkXHUwZTg0X1x1MGU5ZV9cdTBlOWVcdTBlYWJfXHUwZWFhXHUwZTgxX1x1MGVhYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3Jt'@; put 'YXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJcdTBlYTdcdTBlYjFcdTBlOTlkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwZTk1XHUwZWFkXHUw'@; put 'ZTk5XHUwZWMwXHUwZThhXHUwZWJiXHUwZWM5XHUwZWIyfFx1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMVx1MGVhNVx1MGU4Ny8saXNQTTpmdW5jdGlvbihzKXtyZXR1cm4iXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMxXHUwZWE1XHUwZTg3Ij09PXN9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXty'@; put 'ZXR1cm4gczwxMj8iXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMwXHUwZThhXHUwZWJiXHUwZWM5XHUwZWIyIjoiXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMxXHUwZWE1XHUwZTg3In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBlYTFcdTBlYjdcdTBlYzlcdTBlOTlcdTBlYjVcdTBlYzlcdTBlYzBc'@; put 'dTBlYTdcdTBlYTVcdTBlYjJdIExUIixuZXh0RGF5OiJbXHUwZWExXHUwZWI3XHUwZWM5XHUwZWFkXHUwZWI3XHUwZWM4XHUwZTk5XHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIyXSBMVCIsbmV4dFdlZWs6IltcdTBlYTdcdTBlYjFcdTBlOTldZGRkZFtcdTBlZGNcdTBlYzlcdTBlYjJcdTBlYzBc'@; put 'dTBlYTdcdTBlYTVcdTBlYjJdIExUIixsYXN0RGF5OiJbXHUwZWExXHUwZWI3XHUwZWM5XHUwZWE3XHUwZWIyXHUwZTk5XHUwZTk5XHUwZWI1XHUwZWM5XHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIyXSBMVCIsbGFzdFdlZWs6IltcdTBlYTdcdTBlYjFcdTBlOTldZGRkZFtcdTBlYzFcdTBlYTVc'@; put 'dTBlYzlcdTBlYTdcdTBlOTlcdTBlYjVcdTBlYzlcdTBlYzBcdTBlYTdcdTBlYTVcdTBlYjJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTBlYWRcdTBlYjVcdTBlODEgJXMiLHBhc3Q6IiVzXHUwZTljXHUwZWM4XHUwZWIyXHUwZTk5XHUwZWExXHUwZWIyIixz'@; put 'OiJcdTBlOWFcdTBlY2RcdTBlYzhcdTBlYzBcdTBlOTdcdTBlYmJcdTBlYzhcdTBlYjJcdTBlYzNcdTBlOTRcdTBlYTdcdTBlYjRcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLHNzOiIlZCBcdTBlYTdcdTBlYjRcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLG06IjEgXHUwZTk5XHUwZWIyXHUw'@; put 'ZTk3XHUwZWI1IixtbToiJWQgXHUwZTk5XHUwZWIyXHUwZTk3XHUwZWI1IixoOiIxIFx1MGU4YVx1MGViYlx1MGVjOFx1MGVhN1x1MGVjMlx1MGVhMVx1MGU4NyIsaGg6IiVkIFx1MGU4YVx1MGViYlx1MGVjOFx1MGVhN1x1MGVjMlx1MGVhMVx1MGU4NyIsZDoiMSBcdTBlYTFcdTBlYjdcdTBl'@; put 'YzkiLGRkOiIlZCBcdTBlYTFcdTBlYjdcdTBlYzkiLE06IjEgXHUwZWMwXHUwZTk0XHUwZWI3XHUwZWFkXHUwZTk5IixNTToiJWQgXHUwZWMwXHUwZTk0XHUwZWI3XHUwZWFkXHUwZTk5Iix5OiIxIFx1MGU5Ylx1MGViNSIseXk6IiVkIFx1MGU5Ylx1MGViNSJ9LGRheU9mTW9udGhPcmRpbmFs'@; put 'UGFyc2U6LyhcdTBlOTdcdTBlYjVcdTBlYzgpXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihzKXtyZXR1cm4iXHUwZTk3XHUwZWI1XHUwZWM4IitzfX0pfShoKDk3NTg2KSl9LDkwNDExKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17c3M6InNla3VuZFx1MDExN19z'@; put 'ZWt1bmRcdTAxN2VpXHUwMTczX3Nla3VuZGVzIixtOiJtaW51dFx1MDExN19taW51dFx1MDExN3NfbWludXRcdTAxMTkiLG1tOiJtaW51dFx1MDExN3NfbWludVx1MDEwZGlcdTAxNzNfbWludXRlcyIsaDoidmFsYW5kYV92YWxhbmRvc192YWxhbmRcdTAxMDUiLGhoOiJ2YWxhbmRvc192YWxh'@; put 'bmRcdTAxNzNfdmFsYW5kYXMiLGQ6ImRpZW5hX2RpZW5vc19kaWVuXHUwMTA1IixkZDoiZGllbm9zX2RpZW5cdTAxNzNfZGllbmFzIixNOiJtXHUwMTE3bnVvX21cdTAxMTduZXNpb19tXHUwMTE3bmVzXHUwMTJmIixNTToibVx1MDExN25lc2lhaV9tXHUwMTE3bmVzaVx1MDE3M19tXHUwMTE3'@; put 'bmVzaXVzIix5OiJtZXRhaV9tZXRcdTAxNzNfbWV0dXMiLHl5OiJtZXRhaV9tZXRcdTAxNzNfbWV0dXMifTtmdW5jdGlvbiBBKEwsUix4LFUpe3JldHVybiBSP0MoeClbMF06VT9DKHgpWzFdOkMoeClbMl19ZnVuY3Rpb24gdihMKXtyZXR1cm4gTCUxMD09MHx8TD4xMCYmTDwyMH1mdW5jdGlv'@; put 'biBDKEwpe3JldHVybiBjW0xdLnNwbGl0KCJfIil9ZnVuY3Rpb24gdyhMLFIseCxVKXt2YXIgSD1MKyIgIjtyZXR1cm4gMT09PUw/SCtBKDAsUix4WzBdLFUpOlI/SCsodihMKT9DKHgpWzFdOkMoeClbMF0pOlU/SCtDKHgpWzFdOkgrKHYoTCk/Qyh4KVsxXTpDKHgpWzJdKX15LmRlZmluZUxv'@; put 'Y2FsZSgibHQiLHttb250aHM6e2Zvcm1hdDoic2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmRcdTAxN2Vpb19nZWd1XHUwMTdlXHUwMTE3c19iaXJcdTAxN2VlbGlvX2xpZXBvc19ydWdwalx1MDE2Ylx1MDEwZGlvX3J1Z3NcdTAxMTdqb19zcGFsaW9fbGFwa3JpXHUwMTBkaW9fZ3J1b2RcdTAx'@; put 'N2VpbyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzYXVzaXNfdmFzYXJpc19rb3Zhc19iYWxhbmRpc19nZWd1XHUwMTdlXHUwMTE3X2Jpclx1MDE3ZWVsaXNfbGllcGFfcnVncGpcdTAxNmJ0aXNfcnVnc1x1MDExN2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMiLnNwbGl0KCJfIiksaXNG'@; put 'b3JtYXQ6L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/fE1NTU0/KFxbW15cW1xdXSpcXXxccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6InNhdV92YXNfa292X2JhbF9nZWdfYmlyX2xpZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6InNla21h'@; put 'ZGllblx1MDEyZl9waXJtYWRpZW5cdTAxMmZfYW50cmFkaWVuXHUwMTJmX3RyZVx1MDEwZGlhZGllblx1MDEyZl9rZXR2aXJ0YWRpZW5cdTAxMmZfcGVua3RhZGllblx1MDEyZl9cdTAxNjFlXHUwMTYxdGFkaWVuXHUwMTJmIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNla21hZGllbmlzX3Bp'@; put 'cm1hZGllbmlzX2FudHJhZGllbmlzX3RyZVx1MDEwZGlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc19cdTAxNjFlXHUwMTYxdGFkaWVuaXMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L2RkZGQgSEg6bW0vfSx3ZWVrZGF5c1Nob3J0OiJTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl9c'@; put 'dTAxNjBlXHUwMTYxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fXHUwMTYwIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWSBbbS5dIE1N'@; put 'TU0gRCBbZC5dIixMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dIixMTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZGQsIEhIOm1tIFt2YWwuXSIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsbGxsOiJZWVlZIFttLl0gTU1NTSBE'@; put 'IFtkLl0sIEhIOm1tIFt2YWwuXSIsbGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGQsIEhIOm1tIFt2YWwuXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwMTYwaWFuZGllbl0gTFQiLG5leHREYXk6IltSeXRval0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbVmFrYXJd'@; put 'IExUIixsYXN0V2VlazoiW1ByYVx1MDExN2p1c1x1MDEyZl0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicG8gJXMiLHBhc3Q6InByaWVcdTAxNjEgJXMiLHM6ZnVuY3Rpb24gcyhMLFIseCxVKXtyZXR1cm4gUj8ia2VsaW9zIHNla3VuZFx1MDExN3MiOlU/'@; put 'ImtlbGlcdTAxNzMgc2VrdW5kXHUwMTdlaVx1MDE3MyI6ImtlbGlhcyBzZWt1bmRlcyJ9LHNzOncsbTpBLG1tOncsaDpBLGhoOncsZDpBLGRkOncsTTpBLE1NOncseTpBLHl5Ond9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tb2ppLyxvcmRpbmFsOmZ1bmN0aW9uKEwpe3JldHVy'@; put 'biBMKyItb2ppIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sMzI2MjEoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXtzczoic2VrdW5kZXNfc2VrdW5kXHUwMTEzbV9zZWt1bmRlX3Nla3VuZGVzIi5zcGxpdCgiXyIpLG06Im1pblx1MDE2YnRlc19t'@; put 'aW5cdTAxNmJ0XHUwMTEzbV9taW5cdTAxNmJ0ZV9taW5cdTAxNmJ0ZXMiLnNwbGl0KCJfIiksbW06Im1pblx1MDE2YnRlc19taW5cdTAxNmJ0XHUwMTEzbV9taW5cdTAxNmJ0ZV9taW5cdTAxNmJ0ZXMiLnNwbGl0KCJfIiksaDoic3R1bmRhc19zdHVuZFx1MDEwMW1fc3R1bmRhX3N0dW5kYXMi'@; put 'LnNwbGl0KCJfIiksaGg6InN0dW5kYXNfc3R1bmRcdTAxMDFtX3N0dW5kYV9zdHVuZGFzIi5zcGxpdCgiXyIpLGQ6ImRpZW5hc19kaWVuXHUwMTAxbV9kaWVuYV9kaWVuYXMiLnNwbGl0KCJfIiksZGQ6ImRpZW5hc19kaWVuXHUwMTAxbV9kaWVuYV9kaWVuYXMiLnNwbGl0KCJfIiksTToibVx1'@; put 'MDExM25lXHUwMTYxYV9tXHUwMTEzbmVcdTAxNjFpZW1fbVx1MDExM25lc2lzX21cdTAxMTNuZVx1MDE2MWkiLnNwbGl0KCJfIiksTU06Im1cdTAxMTNuZVx1MDE2MWFfbVx1MDExM25lXHUwMTYxaWVtX21cdTAxMTNuZXNpc19tXHUwMTEzbmVcdTAxNjFpIi5zcGxpdCgiXyIpLHk6ImdhZGFf'@; put 'Z2FkaWVtX2dhZHNfZ2FkaSIuc3BsaXQoIl8iKSx5eToiZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpIi5zcGxpdCgiXyIpfTtmdW5jdGlvbiBzKFMsTCxSKXtyZXR1cm4gUj9MJTEwPT0xJiZMJTEwMCE9MTE/U1syXTpTWzNdOkwlMTA9PTEmJkwlMTAwIT0xMT9TWzBdOlNbMV19ZnVuY3Rpb24gQShT'@; put 'LEwsUil7cmV0dXJuIFMrIiAiK3MoY1tSXSxTLEwpfWZ1bmN0aW9uIHYoUyxMLFIpe3JldHVybiBzKGNbUl0sUyxMKX15LmRlZmluZUxvY2FsZSgibHYiLHttb250aHM6ImphbnZcdTAxMDFyaXNfZmVicnVcdTAxMDFyaXNfbWFydHNfYXByXHUwMTJibGlzX21haWpzX2pcdTAxNmJuaWpzX2pc'@; put 'dTAxNmJsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2pcdTAxNmJuX2pcdTAxNmJsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InN2'@; put 'XHUwMTEzdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmVcdTAxNjFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN2X1BfT19UX0NfUGtfUyIu'@; put 'c3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWS4iLExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSIsTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgSEg6bW0iLExMTEw6IllZWVkuIFtn'@; put 'YWRhXSBELiBNTU1NLCBkZGRkLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwMTYwb2RpZW4gcHVsa3N0ZW5dIExUIixuZXh0RGF5OiJbUlx1MDEyYnQgcHVsa3N0ZW5dIExUIixuZXh0V2VlazoiZGRkZCBbcHVsa3N0ZW5dIExUIixsYXN0RGF5OiJbVmFrYXIgcHVsa3N0ZW5dIExU'@; put 'IixsYXN0V2VlazoiW1BhZ1x1MDEwMWp1XHUwMTYxXHUwMTAxXSBkZGRkIFtwdWxrc3Rlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBcdTAxMTNjICVzIixwYXN0OiJwaXJtcyAlcyIsczpmdW5jdGlvbiBDKFMsTCl7cmV0dXJuIEw/ImRhXHUwMTdlYXMgc2Vr'@; put 'dW5kZXMiOiJkYVx1MDE3ZVx1MDEwMW0gc2VrdW5kXHUwMTEzbSJ9LHNzOkEsbTp2LG1tOkEsaDp2LGhoOkEsZDp2LGRkOkEsTTp2LE1NOkEseTp2LHl5OkF9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5'@; put 'NzU4NikpfSw4NTg2OShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9e3dvcmRzOntzczpbInNla3VuZCIsInNla3VuZGEiLCJzZWt1bmRpIl0sbTpbImplZGFuIG1pbnV0IiwiamVkbm9nIG1pbnV0YSJdLG1tOlsibWludXQiLCJtaW51dGEiLCJtaW51dGEiXSxoOlsi'@; put 'amVkYW4gc2F0IiwiamVkbm9nIHNhdGEiXSxoaDpbInNhdCIsInNhdGEiLCJzYXRpIl0sZGQ6WyJkYW4iLCJkYW5hIiwiZGFuYSJdLE1NOlsibWplc2VjIiwibWplc2VjYSIsIm1qZXNlY2kiXSx5eTpbImdvZGluYSIsImdvZGluZSIsImdvZGluYSJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNl'@; put 'OmZ1bmN0aW9uKEEsdil7cmV0dXJuIDE9PT1BP3ZbMF06QT49MiYmQTw9ND92WzFdOnZbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihBLHYsQyl7dmFyIHc9Yy53b3Jkc1tDXTtyZXR1cm4gMT09PUMubGVuZ3RoP3Y/d1swXTp3WzFdOkErIiAiK2MuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShBLHcp'@; put 'fX07eS5kZWZpbmVMb2NhbGUoIm1lIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVu'@; put 'X2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVk'@; put 'Ll9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAxMGRlX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoi'@; put 'REQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc2p1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3'@; put 'aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyaWplZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBk'@; put 'ZGRkIFt1XSBMVCJ9fSxsYXN0RGF5OiJbanVcdTAxMGRlIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVyblsiW3Byb1x1MDE2MWxlXSBbbmVkamVsamVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3V0b3JrYV0g'@; put 'W3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3JpamVkZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW1x1MDEwZGV0dnJ0a2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwZXRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiXVt0aGlzLmRheSgpXX0sc2FtZUVs'@; put 'c2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJuZWtvbGlrbyBzZWt1bmRpIixzczpjLnRyYW5zbGF0ZSxtOmMudHJhbnNsYXRlLG1tOmMudHJhbnNsYXRlLGg6Yy50cmFuc2xhdGUsaGg6Yy50cmFuc2xhdGUsZDoiZGFuIixkZDpjLnRyYW5z'@; put 'bGF0ZSxNOiJtamVzZWMiLE1NOmMudHJhbnNsYXRlLHk6ImdvZGludSIseXk6Yy50cmFuc2xhdGV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSwzNTg4MShmZSxqLGgpeyFmdW5jdGlvbih5'@; put 'KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoIm1pIix7bW9udGhzOiJLb2hpLXRcdTAxMDF0ZV9IdWktdGFuZ3VydV9Qb3V0XHUwMTZiLXRlLXJhbmdpX1BhZW5nYS13aFx1MDEwMXdoXHUwMTAxX0hhcmF0dWFfUGlwaXJpX0hcdTAxNGRuZ29pbmdvaV9IZXJlLXR1cmkta1x1MDE0ZGtc'@; put 'dTAxMDFfTWFodXJ1X1doaXJpbmdhLVx1MDEwMS1udWt1X1doaXJpbmdhLVx1MDEwMS1yYW5naV9IYWtpaGVhIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IXHUwMTRkbmdvaV9IZXJlX01haHVfV2hpLW51X1doaS1yYV9IYWtpIi5zcGxpdCgi'@; put 'XyIpLG1vbnRoc1JlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ksbW9udGhzU3RyaWN0UmVnZXg6Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStcLT8pezEsM30vaSxtb250aHNTaG9ydFJlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/'@; put 'KXsxLDN9L2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wtPyl7MSwyfS9pLHdlZWtkYXlzOiJSXHUwMTAxdGFwdV9NYW5lX1RcdTAxNmJyZWlfV2VuZXJlaV9UXHUwMTAxaXRlX1BhcmFpcmVfSFx1MDEwMXRhcmVpIi5zcGxpdCgiXyIpLHdl'@; put 'ZWtkYXlzU2hvcnQ6IlRhX01hX1RcdTAxNmJfV2VfVFx1MDEwMWlfUGFfSFx1MDEwMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiVGFfTWFfVFx1MDE2Yl9XZV9UXHUwMTAxaV9QYV9IXHUwMTAxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi'@; put 'LEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbaV0gSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtpXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSB0ZWllIG1haGFuYSwgaV0gTFQiLG5leHREYXk6IlthcG9wbyBpXSBMVCIsbmV4'@; put 'dFdlZWs6ImRkZGQgW2ldIExUIixsYXN0RGF5OiJbaW5hbmFoaSBpXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3doYWthbXV0dW5nYSBpXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaSByb3RvIGkgJXMiLHBhc3Q6IiVzIGkgbXVhIixzOiJ0ZSBoXHUwMTEza29uYSBy'@; put 'dWFydWEiLHNzOiIlZCBoXHUwMTEza29uYSIsbToiaGUgbWVuZXRpIixtbToiJWQgbWVuZXRpIixoOiJ0ZSBoYW9yYSIsaGg6IiVkIGhhb3JhIixkOiJoZSByYSIsZGQ6IiVkIHJhIixNOiJoZSBtYXJhbWEiLE1NOiIlZCBtYXJhbWEiLHk6ImhlIHRhdSIseXk6IiVkIHRhdSJ9LGRheU9mTW9u'@; put 'dGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDkyMzkxKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgibWsiLHttb250aHM6Ilx1MDQ1OFx1MDQzMFx1MDQz'@; put 'ZFx1MDQ0M1x1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0NDNcdTA0MzBcdTA0NDBcdTA0MzhfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzOFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUw'@; put 'NDNkXHUwNDM4X1x1MDQ1OFx1MDQ0M1x1MDQzYlx1MDQzOF9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNmXHUwNDQyXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQzZVx1MDQzY1x1MDQzMlx1'@; put 'MDQ0MFx1MDQzOF9cdTA0M2RcdTA0M2VcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0NThcdTA0MzBcdTA0M2RfXHUwNDQ0XHUwNDM1XHUwNDMy'@; put 'X1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZF9cdTA0NThcdTA0NDNcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZl9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNl'@; put 'XHUwNDM1X1x1MDQzNFx1MDQzNVx1MDQzYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDMwX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2Vc'@; put 'dTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzZVx1MDQzYV9cdTA0M2ZcdTA0MzVcdTA0NDJcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDMwXHUwNDMxXHUwNDNlXHUwNDQy'@; put 'XHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNVx1MDQzNF9cdTA0M2ZcdTA0M2VcdTA0M2RfXHUwNDMyXHUwNDQyXHUwNDNlX1x1MDQ0MVx1MDQ0MFx1MDQzNV9cdTA0NDdcdTA0MzVcdTA0NDJfXHUwNDNmXHUwNDM1XHUwNDQyX1x1MDQ0MVx1MDQzMFx1MDQz'@; put 'MSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkZV9cdTA0M2ZvX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDM1X1x1MDQzZlx1MDQzNV9cdTA0NDFhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELk1NLllZ'@; put 'WVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MTRcdTA0MzVcdTA0M2RcdTA0MzVcdTA0NDEgXHUwNDMyXHUwNDNlXSBMVCIsbmV4dERheToiW1x1MDQyM1x1MDQ0'@; put 'Mlx1MDQ0MFx1MDQzNSBcdTA0MzJcdTA0M2VdIExUIixuZXh0V2VlazoiW1x1MDQxMlx1MDQzZV0gZGRkZCBbXHUwNDMyXHUwNDNlXSBMVCIsbGFzdERheToiW1x1MDQxMlx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMCBcdTA0MzJcdTA0M2VdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRj'@; put 'aCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNjpyZXR1cm4iW1x1MDQxOFx1MDQzN1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQzMFx1MDQ0Mlx1MDQzMFx1MDQ0Mlx1MDQzMF0gZGRkZCBbXHUwNDMyXHUwNDNlXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJb'@; put 'XHUwNDE4XHUwNDM3XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDNlXHUwNDQyXSBkZGRkIFtcdTA0MzJcdTA0M2VdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzN1x1MDQzMCAlcyIscGFzdDoiXHUwNDNmXHUwNDQwXHUwNDM1'@; put 'XHUwNDM0ICVzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0M2VcdTA0M2JcdTA0M2FcdTA0NDMgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixzczoiJWQgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixtOiJcdTA0MzVcdTA0'@; put 'MzRcdTA0M2RcdTA0MzAgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDM4IixoOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDoiJWQgXHUwNDQ3XHUwNDMw'@; put 'XHUwNDQxXHUwNDMwIixkOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDM0XHUwNDM1XHUwNDNkIixkZDoiJWQgXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDMwIixNOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IixNTToiJWQgXHUw'@; put 'NDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDM4Iix5OiJcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzAgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIix5eToiJWQgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4In0sZGF5T2ZNb250aE9yZGluYWxQ'@; put 'YXJzZTovXGR7MSwyfS0oXHUwNDM1XHUwNDMyfFx1MDQzNVx1MDQzZHxcdTA0NDJcdTA0Mzh8XHUwNDMyXHUwNDM4fFx1MDQ0MFx1MDQzOHxcdTA0M2NcdTA0MzgpLyxvcmRpbmFsOmZ1bmN0aW9uKHMpe3ZhciBBPXMlMTAsdj1zJTEwMDtyZXR1cm4gMD09PXM/cysiLVx1MDQzNVx1MDQzMiI6'@; put 'MD09PXY/cysiLVx1MDQzNVx1MDQzZCI6dj4xMCYmdjwyMD9zKyItXHUwNDQyXHUwNDM4IjoxPT09QT9zKyItXHUwNDMyXHUwNDM4IjoyPT09QT9zKyItXHUwNDQwXHUwNDM4Ijo3PT09QXx8OD09PUE/cysiLVx1MDQzY1x1MDQzOCI6cysiLVx1MDQ0Mlx1MDQzOCJ9LHdlZWs6e2RvdzoxLGRv'@; put 'eTo3fX0pfShoKDk3NTg2KSl9LDIxMTI2KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgibWwiLHttb250aHM6Ilx1MGQxY1x1MGQyOFx1MGQ0MVx1MGQzNVx1MGQzMFx1MGQzZl9cdTBkMmJcdTBkNDZcdTBkMmNcdTBkNGRcdTBkMzBcdTBkNDFcdTBk'@; put 'MzVcdTBkMzBcdTBkM2ZfXHUwZDJlXHUwZDNlXHUwZDdjXHUwZDFhXHUwZDRkXHUwZDFhXHUwZDRkX1x1MGQwZlx1MGQyYVx1MGQ0ZFx1MGQzMFx1MGQzZlx1MGQ3ZF9cdTBkMmVcdTBkNDdcdTBkMmZcdTBkNGRfXHUwZDFjXHUwZDQyXHUwZDdhX1x1MGQxY1x1MGQ0Mlx1MGQzMlx1MGQ0OF9c'@; put 'dTBkMTNcdTBkMTdcdTBkMzhcdTBkNGRcdTBkMzFcdTBkNGRcdTBkMzFcdTBkNGRfXHUwZDM4XHUwZDQ2XHUwZDJhXHUwZDRkXHUwZDMxXHUwZDRkXHUwZDMxXHUwZDAyXHUwZDJjXHUwZDdjX1x1MGQxMlx1MGQxNVx1MGQ0ZFx1MGQxZlx1MGQ0Ylx1MGQyY1x1MGQ3Y19cdTBkMjhcdTBkMzVc'@; put 'dTBkMDJcdTBkMmNcdTBkN2NfXHUwZDIxXHUwZDNmXHUwZDM4XHUwZDAyXHUwZDJjXHUwZDdjIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBkMWNcdTBkMjhcdTBkNDEuX1x1MGQyYlx1MGQ0Nlx1MGQyY1x1MGQ0ZFx1MGQzMFx1MGQ0MS5fXHUwZDJlXHUwZDNlXHUwZDdjLl9cdTBkMGZc'@; put 'dTBkMmFcdTBkNGRcdTBkMzBcdTBkM2YuX1x1MGQyZVx1MGQ0N1x1MGQyZlx1MGQ0ZF9cdTBkMWNcdTBkNDJcdTBkN2FfXHUwZDFjXHUwZDQyXHUwZDMyXHUwZDQ4Ll9cdTBkMTNcdTBkMTcuX1x1MGQzOFx1MGQ0Nlx1MGQyYVx1MGQ0ZFx1MGQzMVx1MGQ0ZFx1MGQzMS5fXHUwZDEyXHUwZDE1'@; put 'XHUwZDRkXHUwZDFmXHUwZDRiLl9cdTBkMjhcdTBkMzVcdTBkMDIuX1x1MGQyMVx1MGQzZlx1MGQzOFx1MGQwMi4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwZDFlXHUwZDNlXHUwZDJmXHUwZDMxXHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQyNFx1'@; put 'MGQzZlx1MGQxOVx1MGQ0ZFx1MGQxNVx1MGQzM1x1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMWFcdTBkNGFcdTBkMzVcdTBkNGRcdTBkMzVcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDJjXHUwZDQxXHUwZDI3XHUwZDI4XHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQzNVx1'@; put 'MGQ0ZFx1MGQyZlx1MGQzZVx1MGQzNFx1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMzVcdTBkNDZcdTBkMzNcdTBkNGRcdTBkMzNcdTBkM2ZcdTBkMmZcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDM2XHUwZDI4XHUwZDNmXHUwZDJmXHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhIi5z'@; put 'cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGQxZVx1MGQzZVx1MGQyZlx1MGQ3Y19cdTBkMjRcdTBkM2ZcdTBkMTlcdTBkNGRcdTBkMTVcdTBkN2VfXHUwZDFhXHUwZDRhXHUwZDM1XHUwZDRkXHUwZDM1X1x1MGQyY1x1MGQ0MVx1MGQyN1x1MGQ3Yl9cdTBkMzVcdTBkNGRcdTBkMmZcdTBk'@; put 'M2VcdTBkMzRcdTBkMDJfXHUwZDM1XHUwZDQ2XHUwZDMzXHUwZDRkXHUwZDMzXHUwZDNmX1x1MGQzNlx1MGQyOFx1MGQzZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwZDFlXHUwZDNlX1x1MGQyNFx1MGQzZl9cdTBkMWFcdTBkNGFfXHUwZDJjXHUwZDQxX1x1MGQzNVx1MGQ0ZFx1MGQy'@; put 'Zlx1MGQzZV9cdTBkMzVcdTBkNDZfXHUwZDM2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIC1cdTBkMjhcdTBkNDEiLExUUzoiQSBoOm1tOnNzIC1cdTBkMjhcdTBkNDEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBo'@; put 'Om1tIC1cdTBkMjhcdTBkNDEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gLVx1MGQyOFx1MGQ0MSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZDA3XHUwZDI4XHUwZDRkXHUwZDI4XHUwZDRkXSBMVCIsbmV4dERheToiW1x1MGQyOFx1MGQzZVx1MGQzM1x1MGQ0Nl0gTFQiLG5l'@; put 'eHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MGQwN1x1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQzMlx1MGQ0Nl0gTFQiLGxhc3RXZWVrOiJbXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi'@; put 'JXMgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkIixwYXN0OiIlcyBcdTBkMmVcdTBkNDFcdTBkN2JcdTBkMmFcdTBkNGQiLHM6Ilx1MGQwNVx1MGQ3ZFx1MGQyYSBcdTBkMjhcdTBkM2ZcdTBkMmVcdTBkM2ZcdTBkMzdcdTBkMTlcdTBkNGRcdTBkMTlcdTBkN2Ui'@; put 'LHNzOiIlZCBcdTBkMzhcdTBkNDZcdTBkMTVcdTBkNGRcdTBkMTVcdTBkN2JcdTBkMjFcdTBkNGQiLG06Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMmVcdTBkM2ZcdTBkMjhcdTBkM2ZcdTBkMzFcdTBkNGRcdTBkMzFcdTBkNGQiLG1tOiIlZCBcdTBkMmVcdTBkM2ZcdTBkMjhcdTBkM2ZcdTBk'@; put 'MzFcdTBkNGRcdTBkMzFcdTBkNGQiLGg6Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMmVcdTBkMjNcdTBkM2ZcdTBkMTVcdTBkNGRcdTBkMTVcdTBkNDJcdTBkN2MiLGhoOiIlZCBcdTBkMmVcdTBkMjNcdTBkM2ZcdTBkMTVcdTBkNGRcdTBkMTVcdTBkNDJcdTBkN2MiLGQ6Ilx1MGQxMlx1MGQz'@; put 'MFx1MGQ0MSBcdTBkMjZcdTBkM2ZcdTBkMzVcdTBkMzhcdTBkMDIiLGRkOiIlZCBcdTBkMjZcdTBkM2ZcdTBkMzVcdTBkMzhcdTBkMDIiLE06Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMmVcdTBkM2VcdTBkMzhcdTBkMDIiLE1NOiIlZCBcdTBkMmVcdTBkM2VcdTBkMzhcdTBkMDIiLHk6Ilx1'@; put 'MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMzVcdTBkN2NcdTBkMzdcdTBkMDIiLHl5OiIlZCBcdTBkMzVcdTBkN2NcdTBkMzdcdTBkMDIifSxtZXJpZGllbVBhcnNlOi9cdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2Z8XHUwZDMwXHUwZDNlXHUwZDM1XHUwZDNmXHUwZDMyXHUwZDQ2'@; put 'fFx1MGQwOVx1MGQxYVx1MGQ0ZFx1MGQxYSBcdTBkMTVcdTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVcdTBkNGR8XHUwZDM1XHUwZDQ4XHUwZDE1XHUwZDQxXHUwZDI4XHUwZDRkXHUwZDI4XHUwZDQ3XHUwZDMwXHUwZDAyfFx1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQz'@; put 'Zi9pLG1lcmlkaWVtSG91cjpmdW5jdGlvbihzLEEpe3JldHVybiAxMj09PXMmJihzPTApLCJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YiPT09QSYmcz49NHx8Ilx1MGQwOVx1MGQxYVx1MGQ0ZFx1MGQxYSBcdTBkMTVcdTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVc'@; put 'dTBkNGQiPT09QXx8Ilx1MGQzNVx1MGQ0OFx1MGQxNVx1MGQ0MVx1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQ0N1x1MGQzMFx1MGQwMiI9PT1BP3MrMTI6c30sbWVyaWRpZW06ZnVuY3Rpb24ocyxBLHYpe3JldHVybiBzPDQ/Ilx1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQzZiI6czwx'@; put 'Mj8iXHUwZDMwXHUwZDNlXHUwZDM1XHUwZDNmXHUwZDMyXHUwZDQ2IjpzPDE3PyJcdTBkMDlcdTBkMWFcdTBkNGRcdTBkMWEgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkIjpzPDIwPyJcdTBkMzVcdTBkNDhcdTBkMTVcdTBkNDFcdTBkMjhcdTBkNGRcdTBkMjhc'@; put 'dTBkNDdcdTBkMzBcdTBkMDIiOiJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YifX0pfShoKDk3NTg2KSl9LDQ0ODkyKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKEEsdixDLHcpe3N3aXRjaChDKXtjYXNlInMiOnJldHVybiB2PyJcdTA0'@; put 'NDVcdTA0NGRcdTA0MzRcdTA0NDVcdTA0NGRcdTA0M2QgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IjoiXHUwNDQ1XHUwNDRkXHUwNDM0XHUwNDQ1XHUwNDRkXHUwNDNkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Ylx1MDQzZCI7Y2FzZSJz'@; put 'cyI6cmV0dXJuIEErKHY/IiBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiOiIgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiXHUwNDNkIik7Y2FzZSJtIjpjYXNlIm1tIjpyZXR1cm4gQSsodj8iIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1'@; put 'MDQ0MiI6IiBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NGJcdTA0M2QiKTtjYXNlImgiOmNhc2UiaGgiOnJldHVybiBBKyh2PyIgXHUwNDQ2XHUwNDMwXHUwNDMzIjoiIFx1MDQ0Nlx1MDQzMFx1MDQzM1x1MDQzOFx1MDQzOVx1MDQzZCIpO2Nhc2UiZCI6Y2FzZSJkZCI6cmV0'@; put 'dXJuIEErKHY/IiBcdTA0ZTlcdTA0MzRcdTA0ZTlcdTA0NDAiOiIgXHUwNGU5XHUwNDM0XHUwNDQwXHUwNDM4XHUwNDM5XHUwNDNkIik7Y2FzZSJNIjpjYXNlIk1NIjpyZXR1cm4gQSsodj8iIFx1MDQ0MVx1MDQzMFx1MDQ0MCI6IiBcdTA0NDFcdTA0MzBcdTA0NDBcdTA0NGJcdTA0M2QiKTtj'@; put 'YXNlInkiOmNhc2UieXkiOnJldHVybiBBKyh2PyIgXHUwNDM2XHUwNDM4XHUwNDNiIjoiIFx1MDQzNlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzOVx1MDQzZCIpO2RlZmF1bHQ6cmV0dXJuIEF9fXkuZGVmaW5lTG9jYWxlKCJtbiIse21vbnRoczoiXHUwNDFkXHUwNDRkXHUwNDMzXHUwNDM0XHUw'@; put 'NGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MjVcdTA0M2VcdTA0NTFcdTA0NDBcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxM1x1MDQ0M1x1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNFx1'@; put 'MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE0XHUwNGU5XHUwNDQwXHUwNGU5XHUwNDMyXHUwNDM0XHUwNGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MjJcdTA0MzBcdTA0MzJcdTA0MzRcdTA0NDNc'@; put 'dTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxN1x1MDQ0M1x1MDQ0MFx1MDQzM1x1MDQzMFx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE0XHUwNDNlXHUwNDNiXHUwNDM0XHUwNDQzXHUwNDMz'@; put 'XHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MWRcdTA0MzBcdTA0MzlcdTA0M2NcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxNVx1MDQ0MVx1MDQzNFx1MDRhZlx1MDQzM1x1MDQ0ZFx1MDQ0ZFx1MDQ0'@; put 'MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDEwXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzJcdTA0MzBcdTA0M2QgXHUwNDNkXHUwNDRkXHUwNDMzXHUwNDM0XHUwNGFmXHUw'@; put 'NDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzJcdTA0MzBcdTA0M2QgXHUwNDQ1XHUwNDNlXHUwNDUxXHUwNDQwXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxt'@; put 'b250aHNTaG9ydDoiMSBcdTA0NDFcdTA0MzBcdTA0NDBfMiBcdTA0NDFcdTA0MzBcdTA0NDBfMyBcdTA0NDFcdTA0MzBcdTA0NDBfNCBcdTA0NDFcdTA0MzBcdTA0NDBfNSBcdTA0NDFcdTA0MzBcdTA0NDBfNiBcdTA0NDFcdTA0MzBcdTA0NDBfNyBcdTA0NDFcdTA0MzBcdTA0NDBfOCBcdTA0'@; put 'NDFcdTA0MzBcdTA0NDBfOSBcdTA0NDFcdTA0MzBcdTA0NDBfMTAgXHUwNDQxXHUwNDMwXHUwNDQwXzExIFx1MDQ0MVx1MDQzMFx1MDQ0MF8xMiBcdTA0NDFcdTA0MzBcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwNDFkXHUwNDRmXHUwNDNjX1x1'@; put 'MDQxNFx1MDQzMFx1MDQzMlx1MDQzMFx1MDQzMF9cdTA0MWNcdTA0NGZcdTA0MzNcdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDFiXHUwNDQ1XHUwNDMwXHUwNDMzXHUwNDMyXHUwNDMwX1x1MDQxZlx1MDRhZlx1MDQ0MFx1MDQ0ZFx1MDQzMl9cdTA0MTFcdTA0MzBcdTA0MzBcdTA0NDFcdTA0MzBc'@; put 'dTA0M2RfXHUwNDExXHUwNDRmXHUwNDNjXHUwNDMxXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQxZFx1MDQ0Zlx1MDQzY19cdTA0MTRcdTA0MzBcdTA0MzJfXHUwNDFjXHUwNDRmXHUwNDMzX1x1MDQxYlx1MDQ0NVx1MDQzMF9cdTA0MWZcdTA0YWZcdTA0NDBfXHUwNDEx'@; put 'XHUwNDMwXHUwNDMwX1x1MDQxMVx1MDQ0Zlx1MDQzYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDFkXHUwNDRmX1x1MDQxNFx1MDQzMF9cdTA0MWNcdTA0NGZfXHUwNDFiXHUwNDQ1X1x1MDQxZlx1MDRhZl9cdTA0MTFcdTA0MzBfXHUwNDExXHUwNDRmIi5zcGxpdCgiXyIpLHdlZWtk'@; put 'YXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIixMTEw6IllZWVkgXHUwNDNlXHUwNDNkXHUwNDRiIE1NTU1cdTA0NGJcdTA0'@; put 'M2QgRCBISDptbSIsTExMTDoiZGRkZCwgWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNGFlXHUwNGU4fFx1MDRhZVx1MDQyNS9pLGlzUE06ZnVuY3Rpb24oQSl7cmV0dXJuIlx1MDRhZVx1MDQyNSI9PT1BfSxtZXJp'@; put 'ZGllbTpmdW5jdGlvbihBLHYsQyl7cmV0dXJuIEE8MTI/Ilx1MDRhZVx1MDRlOCI6Ilx1MDRhZVx1MDQyNSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNGU4XHUwNDNkXHUwNGU5XHUwNGU5XHUwNDM0XHUwNGU5XHUwNDQwXSBMVCIsbmV4dERheToiW1x1MDQxY1x1MDQzMFx1MDQ0MFx1MDQz'@; put 'M1x1MDQzMFx1MDQzMFx1MDQ0OF0gTFQiLG5leHRXZWVrOiJbXHUwNDE4XHUwNDQwXHUwNDRkXHUwNDQ1XSBkZGRkIExUIixsYXN0RGF5OiJbXHUwNGU4XHUwNDQ3XHUwNDM4XHUwNDMzXHUwNDM0XHUwNGU5XHUwNDQwXSBMVCIsbGFzdFdlZWs6IltcdTA0ZThcdTA0M2RcdTA0MzNcdTA0ZTlc'@; put 'dTA0NDBcdTA0NDFcdTA0ZTlcdTA0M2RdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDQzNFx1MDQzMFx1MDQ0MFx1MDQzMFx1MDQzMCIscGFzdDoiJXMgXHUwNGU5XHUwNDNjXHUwNDNkXHUwNGU5IixzOmMsc3M6YyxtOmMsbW06YyxoOmMsaGg6'@; put 'YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSBcdTA0ZTlcdTA0MzRcdTA0ZTlcdTA0NDAvLG9yZGluYWw6ZnVuY3Rpb24oQSx2KXtzd2l0Y2godil7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gQSsiIFx1MDRlOVx1'@; put 'MDQzNFx1MDRlOVx1MDQ0MCI7ZGVmYXVsdDpyZXR1cm4gQX19fSl9KGgoOTc1ODYpKX0sNTkwODAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXsxOiJcdTA5NjciLDI6Ilx1MDk2OCIsMzoiXHUwOTY5Iiw0OiJcdTA5NmEiLDU6Ilx1MDk2YiIsNjoiXHUwOTZjIiw3'@; put 'OiJcdTA5NmQiLDg6Ilx1MDk2ZSIsOToiXHUwOTZmIiwwOiJcdTA5NjYifSxzPXsiXHUwOTY3IjoiMSIsIlx1MDk2OCI6IjIiLCJcdTA5NjkiOiIzIiwiXHUwOTZhIjoiNCIsIlx1MDk2YiI6IjUiLCJcdTA5NmMiOiI2IiwiXHUwOTZkIjoiNyIsIlx1MDk2ZSI6IjgiLCJcdTA5NmYiOiI5Iiwi'@; put 'XHUwOTY2IjoiMCJ9O2Z1bmN0aW9uIEEoQyx3LFMsTCl7dmFyIFI9IiI7aWYodylzd2l0Y2goUyl7Y2FzZSJzIjpSPSJcdTA5MTVcdTA5M2VcdTA5MzlcdTA5NDAgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTI2IjticmVhaztjYXNlInNzIjpSPSIlZCBcdTA5MzhcdTA5NDdcdTA5MTVc'@; put 'dTA5MDJcdTA5MjYiO2JyZWFrO2Nhc2UibSI6Uj0iXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkzZlx1MDkxZiI7YnJlYWs7Y2FzZSJtbSI6Uj0iJWQgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTNmXHUwOTFmXHUwOTQ3IjticmVhaztjYXNlImgiOlI9Ilx1MDkwZlx1MDkxNSBc'@; put 'dTA5MjRcdTA5M2VcdTA5MzgiO2JyZWFrO2Nhc2UiaGgiOlI9IiVkIFx1MDkyNFx1MDkzZVx1MDkzOCI7YnJlYWs7Y2FzZSJkIjpSPSJcdTA5MGZcdTA5MTUgXHUwOTI2XHUwOTNmXHUwOTM1XHUwOTM4IjticmVhaztjYXNlImRkIjpSPSIlZCBcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5MzgiO2Jy'@; put 'ZWFrO2Nhc2UiTSI6Uj0iXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDkzZSI7YnJlYWs7Y2FzZSJNTSI6Uj0iJWQgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTQ3IjticmVhaztjYXNlInkiOlI9Ilx1MDkwZlx1MDkxNSBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5'@; put 'MzciO2JyZWFrO2Nhc2UieXkiOlI9IiVkIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzN1x1MDk0NyJ9ZWxzZSBzd2l0Y2goUyl7Y2FzZSJzIjpSPSJcdTA5MTVcdTA5M2VcdTA5MzlcdTA5NDAgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTI2XHUwOTNlXHUwOTAyIjticmVhaztjYXNlInNz'@; put 'IjpSPSIlZCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJcdTA5MjZcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UibSI6Uj0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkzZlx1MDkxZlx1MDkzZSI7YnJlYWs7Y2FzZSJtbSI6Uj0iJWQgXHUwOTJlXHUwOTNmXHUwOTI4'@; put 'XHUwOTNmXHUwOTFmXHUwOTNlXHUwOTAyIjticmVhaztjYXNlImgiOlI9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MjRcdTA5M2VcdTA5MzhcdTA5M2UiO2JyZWFrO2Nhc2UiaGgiOlI9IiVkIFx1MDkyNFx1MDkzZVx1MDkzOFx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJkIjpSPSJcdTA5MGZc'@; put 'dTA5MTVcdTA5M2UgXHUwOTI2XHUwOTNmXHUwOTM1XHUwOTM4XHUwOTNlIjticmVhaztjYXNlImRkIjpSPSIlZCBcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5MzhcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UiTSI6Uj0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1'@; put 'MDk0ZFx1MDkyZlx1MDkzZSI7YnJlYWs7Y2FzZSJNTSI6Uj0iJWQgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTRkXHUwOTJmXHUwOTNlXHUwOTAyIjticmVhaztjYXNlInkiOlI9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzdcdTA5M2UiO2JyZWFrO2Nh'@; put 'c2UieXkiOlI9IiVkIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzN1x1MDkzZVx1MDkwMiJ9cmV0dXJuIFIucmVwbGFjZSgvJWQvaSxDKX15LmRlZmluZUxvY2FsZSgibXIiLHttb250aHM6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0N1x1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MF9cdTA5MmJcdTA5'@; put 'NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZlx1MDkzMl9cdTA5MmVcdTA5NDdfXHUwOTFjXHUwOTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1'@; put 'MDkzMlx1MDk0OF9cdTA5MTFcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MWZfXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Ylx1MDkyY1x1MDkzMF9cdTA5MjhcdTA5NGJcdTA5MzVcdTA5NGRcdTA5Mzlc'@; put 'dTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDcuX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MS5fXHUwOTJlXHUw'@; put 'OTNlXHUwOTMwXHUwOTRkXHUwOTFhLl9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5M2YuX1x1MDkyZVx1MDk0Ny5fXHUwOTFjXHUwOTQyXHUwOTI4Ll9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5NDguX1x1MDkxMVx1MDkxNy5fXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAy'@; put 'Ll9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGIuX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMi5fXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTA5MzBcdTA5MzVc'@; put 'dTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzM1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQy'@; put 'XHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTMwXHUwOTM1XHUwOTNmX1x1MDkzOFx1MDk0Ylx1'@; put 'MDkyZV9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzNfXHUwOTJjXHUwOTQxXHUwOTI3X1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Ml9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MzBfXHUwOTM4XHUw'@; put 'OTRiX1x1MDkyZVx1MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTE3XHUwOTQxX1x1MDkzNlx1MDk0MV9cdTA5MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlIixMVFM6IkEgaDptbTpzcyBcdTA5MzVcdTA5M2VcdTA5'@; put 'MWNcdTA5MjRcdTA5M2UiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5'@; put 'M2UifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10gTFQiLG5leHREYXk6IltcdTA5MDlcdTA5MjZcdTA5NGRcdTA5MmZcdTA5M2VdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5MTVcdTA5M2VcdTA5MzJdIExUIixsYXN0V2VlazoiW1x1MDkyZVx1MDkz'@; put 'ZVx1MDkxN1x1MDk0MFx1MDkzMl0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUwOTJlXHUwOTI3XHUwOTRkXHUwOTJmXHUwOTQ3IixwYXN0OiIlc1x1MDkyYVx1MDk0Mlx1MDkzMFx1MDk0ZFx1MDkzNVx1MDk0MCIsczpBLHNzOkEsbTpBLG1tOkEs'@; put 'aDpBLGhoOkEsZDpBLGRkOkEsTTpBLE1NOkEseTpBLHl5OkF9LHByZXBhcnNlOmZ1bmN0aW9uKEMpe3JldHVybiBDLnJlcGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNcdTA5NmRcdTA5NmVcdTA5NmZcdTA5NjZdL2csZnVuY3Rpb24odyl7cmV0dXJuIHNbd119'@; put 'KX0scG9zdGZvcm1hdDpmdW5jdGlvbihDKXtyZXR1cm4gQy5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKHcpe3JldHVybiBjW3ddfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDkyYVx1MDkzOVx1MDkzZVx1MDkxZlx1MDk0N3xcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDB8XHUwOTI2XHUwOTQx'@; put 'XHUwOTJhXHUwOTNlXHUwOTMwXHUwOTQwfFx1MDkzOFx1MDkzZVx1MDkyZlx1MDkwMlx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MHxcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDAvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihDLHcpe3JldHVybiAxMj09PUMmJihDPTApLCJcdTA5'@; put 'MmFcdTA5MzlcdTA5M2VcdTA5MWZcdTA5NDciPT09d3x8Ilx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MCI9PT13P0M6Ilx1MDkyNlx1MDk0MVx1MDkyYVx1MDkzZVx1MDkzMFx1MDk0MCI9PT13fHwiXHUwOTM4XHUwOTNlXHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQw'@; put 'Ij09PXd8fCJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDAiPT09dz9DPj0xMj9DOkMrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihDLHcsUyl7cmV0dXJuIEM+PTAmJkM8Nj8iXHUwOTJhXHUwOTM5XHUwOTNlXHUwOTFmXHUwOTQ3IjpDPDEyPyJcdTA5MzhcdTA5MTVc'@; put 'dTA5M2VcdTA5MzNcdTA5NDAiOkM8MTc/Ilx1MDkyNlx1MDk0MVx1MDkyYVx1MDkzZVx1MDkzMFx1MDk0MCI6QzwyMD8iXHUwOTM4XHUwOTNlXHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIjoiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTRkXHUwOTMwXHUwOTQwIn0sd2Vlazp7'@; put 'ZG93OjAsZG95OjZ9fSl9KGgoOTc1ODYpKX0sMjU5NTAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJtcy1teSIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05v'@; put 'dmVtYmVyX0Rpc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Ii5zcGxpdCgiXyIp'@; put 'LHdlZWtkYXlzU2hvcnQ6IkFoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQWhfSXNfU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQg'@; put 'TU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihzLEEpe3JldHVybiAxMj09'@; put 'PXMmJihzPTApLCJwYWdpIj09PUE/czoidGVuZ2FoYXJpIj09PUE/cz49MTE/czpzKzEyOiJwZXRhbmciPT09QXx8Im1hbGFtIj09PUE/cysxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4gczwxMT8icGFnaSI6czwxNT8idGVuZ2FoYXJpIjpzPDE5PyJwZXRhbmci'@; put 'OiJtYWxhbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGFyaSBpbmkgcHVrdWxdIExUIixuZXh0RGF5OiJbRXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZWxtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsZXBhcyBwdWt1bF0gTFQi'@; put 'LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxlcGFzIixzOiJiZWJlcmFwYSBzYWF0IixzczoiJWQgc2FhdCIsbToic2VtaW5pdCIsbW06IiVkIG1pbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQg'@; put 'aGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw3MDM5OShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoIm1zIix7bW9udGhzOiJKYW51'@; put 'YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzIi5zcGxpdCgiXyIpLHdl'@; put 'ZWtkYXlzOiJBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaF9Jc19TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxs'@; put 'b25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8'@; put 'dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHMsQSl7cmV0dXJuIDEyPT09cyYmKHM9MCksInBhZ2kiPT09QT9zOiJ0ZW5nYWhhcmkiPT09QT9zPj0xMT9zOnMrMTI6InBldGFuZyI9PT1BfHwibWFsYW0iPT09QT9zKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVu'@; put 'Y3Rpb24ocyxBLHYpe3JldHVybiBzPDExPyJwYWdpIjpzPDE1PyJ0ZW5nYWhhcmkiOnM8MTk/InBldGFuZyI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltFc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIs'@; put 'bGFzdERheToiW0tlbG1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xlcGFzIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVzIHlhbmcgbGVwYXMiLHM6ImJlYmVyYXBhIHNhYXQiLHNzOiIlZCBzYWF0IixtOiJz'@; put 'ZW1pbml0IixtbToiJWQgbWluaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDc5OTAyKGZlLGos'@; put 'aCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgibXQiLHttb250aHM6Ikphbm5hcl9GcmFyX01hcnp1X0FwcmlsX01lamp1X1x1MDEyMHVuanVfTHVsanVfQXd3aXNzdV9TZXR0ZW1icnVfT3R0dWJydV9Ob3ZlbWJydV9EaVx1MDEwYmVtYnJ1Ii5zcGxpdCgiXyIp'@; put 'LG1vbnRoc1Nob3J0OiJKYW5fRnJhX01hcl9BcHJfTWVqX1x1MDEyMHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGlcdTAxMGIiLnNwbGl0KCJfIiksd2Vla2RheXM6IklsLVx1MDEyNmFkZF9JdC1UbmVqbl9JdC1UbGlldGFfTC1FcmJnXHUwMTI3YV9JbC1cdTAxMjZhbWlzX0lsLVx1MDEyMGlt'@; put 'Z1x1MDEyN2FfSXMtU2lidCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTAxMjZhZF9UbmVfVGxpX0VyYl9cdTAxMjZhbV9cdTAxMjBpbV9TaWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDEyNmFfVG5fVGxfRXJfXHUwMTI2YV9cdTAxMjBpX1NpIi5zcGxpdCgiXyIpLGxvbmdE'@; put 'YXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0lsbHVtIGZpbC1dTFQiLG5leHRE'@; put 'YXk6IltHXHUwMTI3YWRhIGZpbC1dTFQiLG5leHRXZWVrOiJkZGRkIFtmaWwtXUxUIixsYXN0RGF5OiJbSWwtYmllcmFcdTAxMjcgZmlsLV1MVCIsbGFzdFdlZWs6ImRkZGQgW2xpIGdcdTAxMjdhZGRhXSBbZmlsLV1MVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZlx1'@; put 'MjAxOSAlcyIscGFzdDoiJXMgaWx1IixzOiJmdGl0IHNla29uZGkiLHNzOiIlZCBzZWtvbmRpIixtOiJtaW51dGEiLG1tOiIlZCBtaW51dGkiLGg6InNpZWdcdTAxMjdhIixoaDoiJWQgc2llZ1x1MDEyN2F0IixkOiJcdTAxMjF1cm5hdGEiLGRkOiIlZCBcdTAxMjFyYW5ldCIsTToieGFoYXIi'@; put 'LE1NOiIlZCB4aHVyIix5OiJzZW5hIix5eToiJWQgc25pIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNzI5ODUoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3Zh'@; put 'ciBjPXsxOiJcdTEwNDEiLDI6Ilx1MTA0MiIsMzoiXHUxMDQzIiw0OiJcdTEwNDQiLDU6Ilx1MTA0NSIsNjoiXHUxMDQ2Iiw3OiJcdTEwNDciLDg6Ilx1MTA0OCIsOToiXHUxMDQ5IiwwOiJcdTEwNDAifSxzPXsiXHUxMDQxIjoiMSIsIlx1MTA0MiI6IjIiLCJcdTEwNDMiOiIzIiwiXHUxMDQ0'@; put 'IjoiNCIsIlx1MTA0NSI6IjUiLCJcdTEwNDYiOiI2IiwiXHUxMDQ3IjoiNyIsIlx1MTA0OCI6IjgiLCJcdTEwNDkiOiI5IiwiXHUxMDQwIjoiMCJ9O3kuZGVmaW5lTG9jYWxlKCJteSIse21vbnRoczoiXHUxMDA3XHUxMDE0XHUxMDNhXHUxMDE0XHUxMDFkXHUxMDJiXHUxMDFiXHUxMDJlX1x1'@; put 'MTAxNlx1MTAzMVx1MTAxNlx1MTAzMVx1MTAyY1x1MTAzYVx1MTAxZFx1MTAyYlx1MTAxYlx1MTAyZV9cdTEwMTlcdTEwMTBcdTEwM2FfXHUxMDI3XHUxMDE1XHUxMDNjXHUxMDJlX1x1MTAxOVx1MTAzMV9cdTEwMDdcdTEwM2RcdTEwMTRcdTEwM2FfXHUxMDA3XHUxMDMwXHUxMDFjXHUxMDJk'@; put 'XHUxMDJmXHUxMDA0XHUxMDNhX1x1MTAxZVx1MTAzY1x1MTAwMlx1MTAyZlx1MTAxMFx1MTAzYV9cdTEwMDVcdTEwMDBcdTEwM2FcdTEwMTBcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmNfXHUxMDIxXHUxMDMxXHUxMDJjXHUxMDAwXHUxMDNhXHUxMDEwXHUxMDJkXHUxMDJmXHUxMDE4XHUxMDJj'@; put 'X1x1MTAxNFx1MTAyZFx1MTAyZlx1MTAxZFx1MTAwNFx1MTAzYVx1MTAxOFx1MTAyY19cdTEwMTJcdTEwMmVcdTEwMDdcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MTAwN1x1MTAxNFx1MTAzYV9cdTEwMTZcdTEwMzFfXHUxMDE5XHUxMDEwXHUx'@; put 'MDNhX1x1MTAxNVx1MTAzY1x1MTAyZV9cdTEwMTlcdTEwMzFfXHUxMDA3XHUxMDNkXHUxMDE0XHUxMDNhX1x1MTAxY1x1MTAyZFx1MTAyZlx1MTAwNFx1MTAzYV9cdTEwMWVcdTEwM2NfXHUxMDA1XHUxMDAwXHUxMDNhX1x1MTAyMVx1MTAzMVx1MTAyY1x1MTAwMFx1MTAzYV9cdTEwMTRcdTEw'@; put 'MmRcdTEwMmZfXHUxMDEyXHUxMDJlIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTEwMTBcdTEwMTRcdTEwMDRcdTEwM2FcdTEwMzlcdTEwMDJcdTEwMTRcdTEwM2RcdTEwMzFfXHUxMDEwXHUxMDE0XHUxMDA0XHUxMDNhXHUxMDM5XHUxMDFjXHUxMDJjX1x1MTAyMVx1MTAwNFx1MTAzYVx1MTAz'@; put 'OVx1MTAwMlx1MTAyYl9cdTEwMTdcdTEwMmZcdTEwMTJcdTEwMzlcdTEwMTNcdTEwMWZcdTEwMzBcdTEwMzhfXHUxMDAwXHUxMDNjXHUxMDJjXHUxMDFlXHUxMDE1XHUxMDEwXHUxMDMxXHUxMDM4X1x1MTAxZVx1MTAzMVx1MTAyY1x1MTAwMFx1MTAzY1x1MTAyY19cdTEwMDVcdTEwMTRcdTEw'@; put 'MzEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUxMDE0XHUxMDNkXHUxMDMxX1x1MTAxY1x1MTAyY19cdTEwMDJcdTEwMmJfXHUxMDFmXHUxMDMwXHUxMDM4X1x1MTAwMFx1MTAzY1x1MTAyY19cdTEwMWVcdTEwMzFcdTEwMmNfXHUxMDE0XHUxMDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlz'@; put 'TWluOiJcdTEwMTRcdTEwM2RcdTEwMzFfXHUxMDFjXHUxMDJjX1x1MTAwMlx1MTAyYl9cdTEwMWZcdTEwMzBcdTEwMzhfXHUxMDAwXHUxMDNjXHUxMDJjX1x1MTAxZVx1MTAzMVx1MTAyY19cdTEwMTRcdTEwMzEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJI'@; put 'SDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTEwMWFcdTEwMTRcdTEwMzEuXSBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsbmV4'@; put 'dERheToiW1x1MTAxOVx1MTAxNFx1MTAwMFx1MTAzYVx1MTAxNlx1MTAzY1x1MTAxNFx1MTAzYV0gTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLG5leHRXZWVrOiJkZGRkIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixsYXN0RGF5OiJbXHUxMDE5XHUxMDE0XHUxMDMxLlx1MTAwMF0gTFQgW1x1'@; put 'MTAxOVx1MTAzZVx1MTAyY10iLGxhc3RXZWVrOiJbXHUxMDE1XHUxMDNjXHUxMDJlXHUxMDM4XHUxMDAxXHUxMDMyXHUxMDM3XHUxMDFlXHUxMDMxXHUxMDJjXSBkZGRkIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTEwMWNc'@; put 'dTEwMmNcdTEwMTlcdTEwMGFcdTEwM2FcdTEwMzcgJXMgXHUxMDE5XHUxMDNlXHUxMDJjIixwYXN0OiJcdTEwMWNcdTEwM2RcdTEwMTRcdTEwM2FcdTEwMDFcdTEwMzJcdTEwMzdcdTEwMWVcdTEwMzFcdTEwMmMgJXMgXHUxMDAwIixzOiJcdTEwMDVcdTEwMDBcdTEwMzlcdTEwMDBcdTEwMTRc'@; put 'dTEwM2EuXHUxMDIxXHUxMDE0XHUxMDBhXHUxMDNhXHUxMDM4XHUxMDA0XHUxMDFhXHUxMDNhIixzczoiJWQgXHUxMDA1XHUxMDAwXHUxMDM5XHUxMDAwXHUxMDE0XHUxMDM3XHUxMDNhIixtOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEwMTlcdTEwMmRcdTEwMTRcdTEwMDVcdTEwM2EiLG1tOiIl'@; put 'ZCBcdTEwMTlcdTEwMmRcdTEwMTRcdTEwMDVcdTEwM2EiLGg6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxNFx1MTAyY1x1MTAxYlx1MTAyZSIsaGg6IiVkIFx1MTAxNFx1MTAyY1x1MTAxYlx1MTAyZSIsZDoiXHUxMDEwXHUxMDA1XHUxMDNhXHUxMDFiXHUxMDAwXHUxMDNhIixkZDoiJWQgXHUx'@; put 'MDFiXHUxMDAwXHUxMDNhIixNOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEwMWMiLE1NOiIlZCBcdTEwMWMiLHk6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxNFx1MTAzZVx1MTAwNVx1MTAzYSIseXk6IiVkIFx1MTAxNFx1MTAzZVx1MTAwNVx1MTAzYSJ9LHByZXBhcnNlOmZ1bmN0aW9uKHYpe3Jl'@; put 'dHVybiB2LnJlcGxhY2UoL1tcdTEwNDFcdTEwNDJcdTEwNDNcdTEwNDRcdTEwNDVcdTEwNDZcdTEwNDdcdTEwNDhcdTEwNDlcdTEwNDBdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEMp'@; put 'e3JldHVybiBjW0NdfSl9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDY3ODU5KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgibmIiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rf'@; put 'c2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXJzX2Fwci5fbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic1x4'@; put 'ZjhuZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sXHhmOHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic1x4ZjguX21hLl90aS5fb24uX3RvLl9mci5fbFx4ZjguIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzXHhmOF9tYV90aV9vbl90b19mcl9sXHhm'@; put 'OCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZ'@; put 'IFtrbC5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGdceGU1ciBrbC5dIExUIixsYXN0V2VlazoiW2ZvcnJpZ2VdIGRkZGQgW2tsLl0gTFQi'@; put 'LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRlbiIsczoibm9lbiBzZWt1bmRlciIsc3M6IiVkIHNla3VuZGVyIixtOiJldHQgbWludXR0IixtbToiJWQgbWludXR0ZXIiLGg6Ilx4ZTluIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiXHhlOW4g'@; put 'ZGFnIixkZDoiJWQgZGFnZXIiLHc6Ilx4ZTluIHVrZSIsd3c6IiVkIHVrZXIiLE06Ilx4ZTluIG1ceGU1bmVkIixNTToiJWQgbVx4ZTVuZWRlciIseToiZXR0IFx4ZTVyIix5eToiJWQgXHhlNXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vl'@; put 'azp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sMTM2NDIoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPXsxOiJcdTA5NjciLDI6Ilx1MDk2OCIsMzoiXHUwOTY5Iiw0OiJcdTA5NmEiLDU6Ilx1MDk2YiIsNjoiXHUwOTZjIiw3OiJcdTA5NmQiLDg6Ilx1MDk2ZSIs'@; put 'OToiXHUwOTZmIiwwOiJcdTA5NjYifSxzPXsiXHUwOTY3IjoiMSIsIlx1MDk2OCI6IjIiLCJcdTA5NjkiOiIzIiwiXHUwOTZhIjoiNCIsIlx1MDk2YiI6IjUiLCJcdTA5NmMiOiI2IiwiXHUwOTZkIjoiNyIsIlx1MDk2ZSI6IjgiLCJcdTA5NmYiOiI5IiwiXHUwOTY2IjoiMCJ9O3kuZGVmaW5l'@; put 'TG9jYWxlKCJuZSIse21vbnRoczoiXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUw'@; put 'OTNmXHUwOTMyX1x1MDkyZVx1MDkwOF9cdTA5MWNcdTA5NDFcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4X1x1MDkwNVx1MDkxN1x1MDkzN1x1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5NDdcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzBf'@; put 'XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkyZFx1MDk0N1x1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6'@; put 'Ilx1MDkxY1x1MDkyOC5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTNmLl9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQxXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkz'@; put 'Mlx1MDkzZVx1MDkwOC5fXHUwOTA1XHUwOTE3Ll9cdTA5MzhcdTA5NDdcdTA5MmFcdTA5NGRcdTA5MWYuX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTJkXHUwOTQ3Ll9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDcuIi5zcGxpdCgiXyIpLG1vbnRoc1Bh'@; put 'cnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDkwNlx1MDkwN1x1MDkyNFx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTE5XHUwOTRkXHUwOTE3XHUwOTMyXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1'@; put 'MDkyY1x1MDkzZVx1MDkzMF9cdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2ZcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkzNlx1MDkyOFx1MDkzZlx1MDkyY1x1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5'@; put 'c1Nob3J0OiJcdTA5MDZcdTA5MDdcdTA5MjQuX1x1MDkzOFx1MDk0Ylx1MDkyZS5fXHUwOTJlXHUwOTE5XHUwOTRkXHUwOTE3XHUwOTMyLl9cdTA5MmNcdTA5NDFcdTA5MjcuX1x1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZi5fXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwLl9cdTA5MzZc'@; put 'dTA5MjhcdTA5M2YuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MDYuX1x1MDkzOFx1MDk0Yi5fXHUwOTJlXHUwOTAyLl9cdTA5MmNcdTA5NDEuX1x1MDkyY1x1MDkzZi5fXHUwOTM2XHUwOTQxLl9cdTA5MzYuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0'@; put 'ZUZvcm1hdDp7TFQ6IkFcdTA5MTVcdTA5NGIgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDciLExUUzoiQVx1MDkxNVx1MDk0YiBoOm1tOnNzIFx1MDkyY1x1MDkxY1x1MDk0NyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBXHUwOTE1XHUwOTRiIGg6'@; put 'bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQVx1MDkxNVx1MDk0YiBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyJ9LHByZXBhcnNlOmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNc'@; put 'dTA5NmRcdTA5NmVcdTA5NmZcdTA5NjZdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEMpe3JldHVybiBjW0NdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDkzMFx1MDkzZVx1MDkyNFx1MDkz'@; put 'ZnxcdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2VcdTA5Mjh8XHUwOTI2XHUwOTNmXHUwOTA5XHUwOTAxXHUwOTM4XHUwOTRifFx1MDkzOFx1MDkzZVx1MDkwMVx1MDkxZC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHYsQyl7cmV0dXJuIDEyPT09diYmKHY9MCksIlx1MDkzMFx1MDkzZVx1MDkyNFx1'@; put 'MDkzZiI9PT1DP3Y8ND92OnYrMTI6Ilx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOCI9PT1DP3Y6Ilx1MDkyNlx1MDkzZlx1MDkwOVx1MDkwMVx1MDkzOFx1MDk0YiI9PT1DP3Y+PTEwP3Y6disxMjoiXHUwOTM4XHUwOTNlXHUwOTAxXHUwOTFkIj09PUM/disxMjp2b2lkIDB9LG1lcmlk'@; put 'aWVtOmZ1bmN0aW9uKHYsQyx3KXtyZXR1cm4gdjwzPyJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2YiOnY8MTI/Ilx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOCI6djwxNj8iXHUwOTI2XHUwOTNmXHUwOTA5XHUwOTAxXHUwOTM4XHUwOTRiIjp2PDIwPyJcdTA5MzhcdTA5M2VcdTA5MDFc'@; put 'dTA5MWQiOiJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2YifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10gTFQiLG5leHREYXk6IltcdTA5MmRcdTA5NGJcdTA5MzJcdTA5M2ZdIExUIixuZXh0V2VlazoiW1x1MDkwNlx1MDkwOVx1MDkwMVx1MDkyNlx1MDk0Yl0gZGRkZFssXSBM'@; put 'VCIsbGFzdERheToiW1x1MDkzOVx1MDkzZlx1MDkxY1x1MDk0Yl0gTFQiLGxhc3RXZWVrOiJbXHUwOTE3XHUwOTBmXHUwOTE1XHUwOTRiXSBkZGRkWyxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MDkyZVx1MDkzZSIscGFzdDoiJXMgXHUwOTA1XHUwOTE3'@; put 'XHUwOTNlXHUwOTIxXHUwOTNmIixzOiJcdTA5MTVcdTA5NDdcdTA5MzlcdTA5NDAgXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTIzIixzczoiJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTQ3XHUwOTIzXHUwOTRkXHUwOTIxIixtOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQ3'@; put 'XHUwOTFmIixtbToiJWQgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQ3XHUwOTFmIixoOiJcdTA5MGZcdTA5MTUgXHUwOTE4XHUwOTIzXHUwOTRkXHUwOTFmXHUwOTNlIixoaDoiJWQgXHUwOTE4XHUwOTIzXHUwOTRkXHUwOTFmXHUwOTNlIixkOiJcdTA5MGZcdTA5MTUgXHUwOTI2XHUwOTNmXHUw'@; put 'OTI4IixkZDoiJWQgXHUwOTI2XHUwOTNmXHUwOTI4IixNOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTNlIixNTToiJWQgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTNlIix5OiJcdTA5MGZcdTA5MTUgXHUwOTJjXHUwOTMwXHUwOTRkXHUwOTM3Iix5eToi'@; put 'JWQgXHUwOTJjXHUwOTMwXHUwOTRkXHUwOTM3In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KGgoOTc1ODYpKX0sOTk4NzUoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9k'@; put 'ZWMuIi5zcGxpdCgiXyIpLHM9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLEE9Wy9eamFuL2ksL15mZWIvaSwvXihtYWFydHxtcnRcLj8pJC9pLC9eYXByL2ksL15tZWkkL2ksL15qdW5baS5dPyQvaSwvXmp1bFtpLl0/JC9pLC9e'@; put 'YXVnL2ksL15zZXAvaSwvXm9rdC9pLC9ebm92L2ksL15kZWMvaV0sdj0vXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xqdVtubF1c'@; put 'Lj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaTt5LmRlZmluZUxvY2FsZSgibmwtYmUiLHttb250aHM6ImphbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3Bs'@; put 'aXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbih3LFMpe3JldHVybiB3Py8tTU1NLS8udGVzdChTKT9zW3cubW9udGgoKV06Y1t3Lm1vbnRoKCldOmN9LG1vbnRoc1JlZ2V4OnYsbW9udGhzU2hvcnRSZWdleDp2LG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8'@; put 'YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98bWVpfGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVj'@; put 'XC4/KS9pLG1vbnRoc1BhcnNlOkEsbG9uZ01vbnRoc1BhcnNlOkEsc2hvcnRNb250aHNQYXJzZTpBLHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5fZGku'@; put 'X3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiem9fbWFfZGlfd29fZG9fdnJfemEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0g'@; put 'WVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdmFuZGFhZyBvbV0gTFQiLG5leHREYXk6Ilttb3JnZW4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbZ2lzdGVyZW4g'@; put 'b21dIExUIixsYXN0V2VlazoiW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvdmVyICVzIixwYXN0OiIlcyBnZWxlZGVuIixzOiJlZW4gcGFhciBzZWNvbmRlbiIsc3M6IiVkIHNlY29uZGVuIixtOiJceGU5XHhlOW4gbWludXV0'@; put 'IixtbToiJWQgbWludXRlbiIsaDoiXHhlOVx4ZTluIHV1ciIsaGg6IiVkIHV1ciIsZDoiXHhlOVx4ZTluIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiJceGU5XHhlOW4gbWFhbmQiLE1NOiIlZCBtYWFuZGVuIix5OiJceGU5XHhlOW4gamFhciIseXk6IiVkIGphYXIifSxkYXlPZk1vbnRoT3JkaW5h'@; put 'bFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24odyl7cmV0dXJuIHcrKDE9PT13fHw4PT09d3x8dz49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDY1NDQxKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'Yz0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxzPSJqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSxBPVsvXmphbi9pLC9eZmViL2ksL14obWFhcnR8'@; put 'bXJ0XC4/KSQvaSwvXmFwci9pLC9ebWVpJC9pLC9eanVuW2kuXT8kL2ksL15qdWxbaS5dPyQvaSwvXmF1Zy9pLC9ec2VwL2ksL15va3QvaSwvXm5vdi9pLC9eZGVjL2ldLHY9L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0'@; put 'b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2k7eS5kZWZpbmVMb2NhbGUoIm5sIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5p'@; put 'X2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24odyxTKXtyZXR1cm4gdz8vLU1NTS0vLnRlc3QoUyk/c1t3Lm1vbnRoKCldOmNbdy5tb250aCgpXTpjfSxtb250aHNSZWdleDp2LG1vbnRoc1No'@; put 'b3J0UmVnZXg6dixtb250aHNTdHJpY3RSZWdleDovXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oamFuXC4/fGZlYlwuP3xtcnRc'@; put 'Lj98YXByXC4/fG1laXxqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaSxtb250aHNQYXJzZTpBLGxvbmdNb250aHNQYXJzZTpBLHNob3J0TW9udGhzUGFyc2U6QSx3ZWVrZGF5czoiem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdf'@; put 'dnJpamRhZ196YXRlcmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InpvX21hX2RpX3dvX2RvX3ZyX3phIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1h'@; put 'dDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21dIExUIixuZXh0RGF5OiJbbW9y'@; put 'Z2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIsczoi'@; put 'ZWVuIHBhYXIgc2Vjb25kZW4iLHNzOiIlZCBzZWNvbmRlbiIsbToiXHhlOVx4ZTluIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6Ilx4ZTlceGU5biB1dXIiLGhoOiIlZCB1dXIiLGQ6Ilx4ZTlceGU5biBkYWciLGRkOiIlZCBkYWdlbiIsdzoiXHhlOVx4ZTluIHdlZWsiLHd3OiIlZCB3ZWtl'@; put 'biIsTToiXHhlOVx4ZTluIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiXHhlOVx4ZTluIGphYXIiLHl5OiIlZCBqYWFyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKHcpe3JldHVybiB3KygxPT09d3x8OD09PXd8fHc+PTIwPyJz'@; put 'dGUiOiJkZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw4MTMxMShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoIm5uIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRl'@; put 'bWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyc19hcHIuX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6InN1bmRhZ19t'@; put 'XHhlNW5kYWdfdHlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sYXVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1Ll9tXHhlNS5fdHkuX29uLl90by5fZnIuX2xhdS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X21ceGU1X3R5X29uX3RvX2ZyX2xhIi5zcGxpdCgiXyIp'@; put 'LHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSJ9'@; put 'LGNhbGVuZGFyOntzYW1lRGF5OiJbSSBkYWcga2xva2thXSBMVCIsbmV4dERheToiW0kgbW9yZ29uIGtsb2trYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9ra2FdIExUIixsYXN0RGF5OiJbSSBnXHhlNXIga2xva2thXSBMVCIsbGFzdFdlZWs6IltGXHhmOHJlZ1x4ZTVhbmRlXSBkZGRkIFtr'@; put 'bG9ra2FdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkYW4iLHM6Im5va3JlIHNla3VuZCIsc3M6IiVkIHNla3VuZCIsbToiZWl0IG1pbnV0dCIsbW06IiVkIG1pbnV0dCIsaDoiZWluIHRpbWUiLGhoOiIlZCB0aW1hciIsZDoiZWlu'@; put 'IGRhZyIsZGQ6IiVkIGRhZ2FyIix3OiJlaSB2ZWtlIix3dzoiJWQgdmVrZXIiLE06ImVpbiBtXHhlNW5hZCIsTU06IiVkIG1ceGU1bmFkZXIiLHk6ImVpdCBceGU1ciIseXk6IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6'@; put 'e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDcyNTY3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgib2MtbG5jIix7bW9udGhzOntzdGFuZGFsb25lOiJnZW5pXHhlOHJfZmVicmlceGU4cl9tYXJceGU3X2FicmlsX21haV9qdW5oX2p1bGhldF9h'@; put 'Z29zdF9zZXRlbWJyZV9vY3RceGYyYnJlX25vdmVtYnJlX2RlY2VtYnJlIi5zcGxpdCgiXyIpLGZvcm1hdDoiZGUgZ2VuaVx4ZThyX2RlIGZlYnJpXHhlOHJfZGUgbWFyXHhlN19kJ2FicmlsX2RlIG1haV9kZSBqdW5oX2RlIGp1bGhldF9kJ2Fnb3N0X2RlIHNldGVtYnJlX2Qnb2N0XHhmMmJy'@; put 'ZV9kZSBub3ZlbWJyZV9kZSBkZWNlbWJyZSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovRFtvRF0/KFxzKStNTU1NL30sbW9udGhzU2hvcnQ6Imdlbi5fZmVici5fbWFyXHhlN19hYnIuX21haV9qdW5oX2p1bGguX2Fnby5fc2V0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJz'@; put 'ZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1lbmdlX2RpbHVuc19kaW1hcnNfZGltXHhlOGNyZXNfZGlqXHhmMnVzX2RpdmVuZHJlc19kaXNzYWJ0ZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkZy5fZGwuX2RtLl9kYy5fZGouX2R2Ll9kcy4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRn'@; put 'X2RsX2RtX2RjX2RqX2R2X2RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBbZGVdIFlZWVkiLGxsOiJEIE1NTSBZWVlZIixMTEw6IkQgTU1NTSBbZGVdIFlZ'@; put 'WVkgW2FdIEg6bW0iLGxsbDoiRCBNTU0gWVlZWSwgSDptbSIsTExMTDoiZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdVx4ZThpIGFdIExUIixuZXh0RGF5OiJbZGVtYW4gYV0gTFQiLG5leHRX'@; put 'ZWVrOiJkZGRkIFthXSBMVCIsbGFzdERheToiW2lceGU4ciBhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3Bhc3NhdCBhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZCdhcXVceGVkICVzIixwYXN0OiJmYSAlcyIsczoidW5hcyBzZWdvbmRhcyIsc3M6IiVkIHNlZ29u'@; put 'ZGFzIixtOiJ1bmEgbWludXRhIixtbToiJWQgbWludXRhcyIsaDoidW5hIG9yYSIsaGg6IiVkIG9yYXMiLGQ6InVuIGpvcm4iLGRkOiIlZCBqb3JucyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwy'@; put 'fShyfG58dHxceGU4fGEpLyxvcmRpbmFsOmZ1bmN0aW9uKHMsQSl7dmFyIHY9MT09PXM/InIiOjI9PT1zPyJuIjozPT09cz8iciI6ND09PXM/InQiOiJceGU4IjtyZXR1cm4oInciPT09QXx8IlciPT09QSkmJih2PSJhIikscyt2fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw1'@; put 'Njk2MihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9ezE6Ilx1MGE2NyIsMjoiXHUwYTY4IiwzOiJcdTBhNjkiLDQ6Ilx1MGE2YSIsNToiXHUwYTZiIiw2OiJcdTBhNmMiLDc6Ilx1MGE2ZCIsODoiXHUwYTZlIiw5OiJcdTBhNmYiLDA6Ilx1MGE2NiJ9LHM9eyJcdTBh'@; put 'NjciOiIxIiwiXHUwYTY4IjoiMiIsIlx1MGE2OSI6IjMiLCJcdTBhNmEiOiI0IiwiXHUwYTZiIjoiNSIsIlx1MGE2YyI6IjYiLCJcdTBhNmQiOiI3IiwiXHUwYTZlIjoiOCIsIlx1MGE2ZiI6IjkiLCJcdTBhNjYiOiIwIn07eS5kZWZpbmVMb2NhbGUoInBhLWluIix7bW9udGhzOiJcdTBhMWNc'@; put 'dTBhMjhcdTBhMzVcdTBhMzBcdTBhNDBfXHUwYTJiXHUwYTNjXHUwYTMwXHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyZVx1MGEzZVx1MGEzMFx1MGExYV9cdTBhMDVcdTBhMmFcdTBhNGRcdTBhMzBcdTBhNDhcdTBhMzJfXHUwYTJlXHUwYTA4X1x1MGExY1x1MGE0Mlx1MGEyOF9cdTBhMWNcdTBh'@; put 'NDFcdTBhMzJcdTBhM2VcdTBhMDhfXHUwYTA1XHUwYTE3XHUwYTM4XHUwYTI0X1x1MGEzOFx1MGEyNFx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMDVcdTBhMTVcdTBhMjRcdTBhNDJcdTBhMmNcdTBhMzBfXHUwYTI4XHUwYTM1XHUwYTcwXHUwYTJjXHUwYTMwX1x1MGEyNlx1MGEzOFx1MGE3MFx1'@; put 'MGEyY1x1MGEzMCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwYTFjXHUwYTI4XHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyYlx1MGEzY1x1MGEzMFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBhMmVcdTBhM2VcdTBhMzBcdTBhMWFfXHUwYTA1XHUwYTJhXHUwYTRkXHUwYTMwXHUwYTQ4XHUwYTMy'@; put 'X1x1MGEyZVx1MGEwOF9cdTBhMWNcdTBhNDJcdTBhMjhfXHUwYTFjXHUwYTQxXHUwYTMyXHUwYTNlXHUwYTA4X1x1MGEwNVx1MGExN1x1MGEzOFx1MGEyNF9cdTBhMzhcdTBhMjRcdTBhNzBcdTBhMmNcdTBhMzBfXHUwYTA1XHUwYTE1XHUwYTI0XHUwYTQyXHUwYTJjXHUwYTMwX1x1MGEyOFx1'@; put 'MGEzNVx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMjZcdTBhMzhcdTBhNzBcdTBhMmNcdTBhMzAiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MGExMFx1MGEyNFx1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMzhcdTBhNGJcdTBhMmVcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTJlXHUwYTcwXHUwYTE3XHUw'@; put 'YTMyXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEyY1x1MGE0MVx1MGEyN1x1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMzVcdTBhNDBcdTBhMzBcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTQxXHUwYTcxXHUwYTE1XHUwYTMwXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEzOFx1MGEzY1x1'@; put 'MGEyOFx1MGE0MFx1MGExYVx1MGEzMFx1MGEzNVx1MGEzZVx1MGEzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBhMTBcdTBhMjRfXHUwYTM4XHUwYTRiXHUwYTJlX1x1MGEyZVx1MGE3MFx1MGExN1x1MGEzMl9cdTBhMmNcdTBhNDFcdTBhMjdfXHUwYTM1XHUwYTQwXHUwYTMwX1x1'@; put 'MGEzOFx1MGEzY1x1MGE0MVx1MGExNVx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhMjhcdTBhNDAiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGExMFx1MGEyNF9cdTBhMzhcdTBhNGJcdTBhMmVfXHUwYTJlXHUwYTcwXHUwYTE3XHUwYTMyX1x1MGEyY1x1MGE0MVx1MGEyN19cdTBhMzVcdTBh'@; put 'NDBcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTQxXHUwYTE1XHUwYTMwX1x1MGEzOFx1MGEzY1x1MGEyOFx1MGE0MCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTBhMzVcdTBhMWNcdTBhNDciLExUUzoiQSBoOm1tOnNzIFx1MGEzNVx1MGExY1x1MGE0NyIsTDoiREQv'@; put 'TU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwYTM1XHUwYTFjXHUwYTQ3IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGEzNVx1MGExY1x1MGE0NyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwYTA1XHUwYTFjXSBMVCIsbmV4'@; put 'dERheToiW1x1MGExNVx1MGEzMl0gTFQiLG5leHRXZWVrOiJbXHUwYTA1XHUwYTE3XHUwYTMyXHUwYTNlXSBkZGRkLCBMVCIsbGFzdERheToiW1x1MGExNVx1MGEzMl0gTFQiLGxhc3RXZWVrOiJbXHUwYTJhXHUwYTNmXHUwYTFiXHUwYTMyXHUwYTQ3XSBkZGRkLCBMVCIsc2FtZUVsc2U6Ikwi'@; put 'fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYTM1XHUwYTNmXHUwYTcxXHUwYTFhIixwYXN0OiIlcyBcdTBhMmFcdTBhM2ZcdTBhMWJcdTBhMzJcdTBhNDciLHM6Ilx1MGExNVx1MGE0MVx1MGExZCBcdTBhMzhcdTBhMTVcdTBhM2ZcdTBhNzBcdTBhMWYiLHNzOiIlZCBcdTBhMzhcdTBh'@; put 'MTVcdTBhM2ZcdTBhNzBcdTBhMWYiLG06Ilx1MGEwN1x1MGExNSBcdTBhMmVcdTBhM2ZcdTBhNzBcdTBhMWYiLG1tOiIlZCBcdTBhMmVcdTBhM2ZcdTBhNzBcdTBhMWYiLGg6Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBhMThcdTBhNzBcdTBhMWZcdTBhM2UiLGhoOiIlZCBcdTBhMThcdTBhNzBc'@; put 'dTBhMWZcdTBhNDciLGQ6Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBhMjZcdTBhM2ZcdTBhMjgiLGRkOiIlZCBcdTBhMjZcdTBhM2ZcdTBhMjgiLE06Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBhMmVcdTBhMzlcdTBhNDBcdTBhMjhcdTBhM2UiLE1NOiIlZCBcdTBhMmVcdTBhMzlcdTBhNDBcdTBh'@; put 'MjhcdTBhNDciLHk6Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBhMzhcdTBhM2VcdTBhMzIiLHl5OiIlZCBcdTBhMzhcdTBhM2VcdTBhMzIifSxwcmVwYXJzZTpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9bXHUwYTY3XHUwYTY4XHUwYTY5XHUwYTZhXHUwYTZiXHUwYTZjXHUwYTZkXHUw'@; put 'YTZlXHUwYTZmXHUwYTY2XS9nLGZ1bmN0aW9uKEMpe3JldHVybiBzW0NdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihDKXtyZXR1cm4gY1tDXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBhMzBcdTBhM2VcdTBhMjR8XHUwYTM4XHUwYTM1'@; put 'XHUwYTQ3XHUwYTMwfFx1MGEyNlx1MGE0MVx1MGEyYVx1MGEzOVx1MGEzZlx1MGEzMHxcdTBhMzhcdTBhM2NcdTBhM2VcdTBhMmUvLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LEMpe3JldHVybiAxMj09PXYmJih2PTApLCJcdTBhMzBcdTBhM2VcdTBhMjQiPT09Qz92PDQ/djp2KzEyOiJcdTBh'@; put 'MzhcdTBhMzVcdTBhNDdcdTBhMzAiPT09Qz92OiJcdTBhMjZcdTBhNDFcdTBhMmFcdTBhMzlcdTBhM2ZcdTBhMzAiPT09Qz92Pj0xMD92OnYrMTI6Ilx1MGEzOFx1MGEzY1x1MGEzZVx1MGEyZSI9PT1DP3YrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbih2LEMsdyl7cmV0dXJuIHY8ND8i'@; put 'XHUwYTMwXHUwYTNlXHUwYTI0Ijp2PDEwPyJcdTBhMzhcdTBhMzVcdTBhNDdcdTBhMzAiOnY8MTc/Ilx1MGEyNlx1MGE0MVx1MGEyYVx1MGEzOVx1MGEzZlx1MGEzMCI6djwyMD8iXHUwYTM4XHUwYTNjXHUwYTNlXHUwYTJlIjoiXHUwYTMwXHUwYTNlXHUwYTI0In0sd2Vlazp7ZG93OjAsZG95'@; put 'OjZ9fSl9KGgoOTc1ODYpKX0sNjEwNjMoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPSJzdHljemVcdTAxNDRfbHV0eV9tYXJ6ZWNfa3dpZWNpZVx1MDE0NF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWVcdTAxNDRfd3J6ZXNpZVx1MDE0NF9wYVx1MDE3YWR6aWVy'@; put 'bmlrX2xpc3RvcGFkX2dydWR6aWVcdTAxNDQiLnNwbGl0KCJfIikscz0ic3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplXHUwMTVibmlhX3BhXHUwMTdhZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlhIi5zcGxpdCgiXyIpLEE9'@; put 'Wy9ec3R5L2ksL15sdXQvaSwvXm1hci9pLC9ea3dpL2ksL15tYWovaSwvXmN6ZS9pLC9ebGlwL2ksL15zaWUvaSwvXndyei9pLC9ecGFcdTAxN2EvaSwvXmxpcy9pLC9eZ3J1L2ldO2Z1bmN0aW9uIHYoUyl7cmV0dXJuIFMlMTA8NSYmUyUxMD4xJiZ+fihTLzEwKSUxMCE9MX1mdW5jdGlvbiBD'@; put 'KFMsTCxSKXt2YXIgeD1TKyIgIjtzd2l0Y2goUil7Y2FzZSJzcyI6cmV0dXJuIHgrKHYoUyk/InNla3VuZHkiOiJzZWt1bmQiKTtjYXNlIm0iOnJldHVybiBMPyJtaW51dGEiOiJtaW51dFx1MDExOSI7Y2FzZSJtbSI6cmV0dXJuIHgrKHYoUyk/Im1pbnV0eSI6Im1pbnV0Iik7Y2FzZSJoIjpy'@; put 'ZXR1cm4gTD8iZ29kemluYSI6ImdvZHppblx1MDExOSI7Y2FzZSJoaCI6cmV0dXJuIHgrKHYoUyk/ImdvZHppbnkiOiJnb2R6aW4iKTtjYXNlInd3IjpyZXR1cm4geCsodihTKT8idHlnb2RuaWUiOiJ0eWdvZG5pIik7Y2FzZSJNTSI6cmV0dXJuIHgrKHYoUyk/Im1pZXNpXHUwMTA1Y2UiOiJt'@; put 'aWVzaVx1MDExOWN5Iik7Y2FzZSJ5eSI6cmV0dXJuIHgrKHYoUyk/ImxhdGEiOiJsYXQiKX19eS5kZWZpbmVMb2NhbGUoInBsIix7bW9udGhzOmZ1bmN0aW9uKFMsTCl7cmV0dXJuIFM/L0QgTU1NTS8udGVzdChMKT9zW1MubW9udGgoKV06Y1tTLm1vbnRoKCldOmN9LG1vbnRoc1Nob3J0OiJz'@; put 'dHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYVx1MDE3YV9saXNfZ3J1Ii5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlOkEsbG9uZ01vbnRoc1BhcnNlOkEsc2hvcnRNb250aHNQYXJzZTpBLHdlZWtkYXlzOiJuaWVkemllbGFfcG9uaWVkemlhXHUwMTQyZWtfd3RvcmVrX1x1MDE1'@; put 'YnJvZGFfY3p3YXJ0ZWtfcGlcdTAxMDV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5kel9wb25fd3RfXHUwMTVicl9jendfcHRfc29iIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJOZF9Qbl9XdF9cdTAxNWFyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9y'@; put 'bWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0R6aVx1MDE1YiBvXSBMVCIsbmV4dERheToi'@; put 'W0p1dHJvIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIG5pZWR6aWVsXHUwMTE5IG9dIExUIjtjYXNlIDI6cmV0dXJuIltXZSB3dG9yZWsgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgXHUwMTVicm9kXHUwMTE5IG9dIExUIjtj'@; put 'YXNlIDY6cmV0dXJuIltXIHNvYm90XHUwMTE5IG9dIExUIjtkZWZhdWx0OnJldHVybiJbV10gZGRkZCBbb10gTFQifX0sbGFzdERheToiW1djem9yYWogb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1cgemVzelx1MDE0Mlx1MDEw'@; put 'NSBuaWVkemllbFx1MDExOSBvXSBMVCI7Y2FzZSAzOnJldHVybiJbVyB6ZXN6XHUwMTQyXHUwMTA1IFx1MDE1YnJvZFx1MDExOSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6XHUwMTQyXHUwMTA1IHNvYm90XHUwMTE5IG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6XHUwMTQyeV0g'@; put 'ZGRkZCBbb10gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6IiVzIHRlbXUiLHM6ImtpbGthIHNla3VuZCIsc3M6QyxtOkMsbW06QyxoOkMsaGg6QyxkOiIxIGR6aWVcdTAxNDQiLGRkOiIlZCBkbmkiLHc6InR5ZHppZVx1MDE0NCIsd3c6QyxN'@; put 'OiJtaWVzaVx1MDEwNWMiLE1NOkMseToicm9rIix5eTpDfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sOTc0NzYoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5l'@; put 'TG9jYWxlKCJwdC1iciIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyXHhlN29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5f'@; put 'anVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5kYS1mZWlyYV90ZXJceGU3YS1mZWlyYV9xdWFydGEtZmVpcmFfcXVpbnRhLWZlaXJhX3NleHRhLWZlaXJhX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2Vn'@; put 'X3Rlcl9xdWFfcXVpX3NleF9zXHhlMWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvXzJceGFhXzNceGFhXzRceGFhXzVceGFhXzZceGFhX3NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixM'@; put 'OiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbXHhlMHNdIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW1x4ZTBzXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSBceGUwc10g'@; put 'TFQiLG5leHREYXk6IltBbWFuaFx4ZTMgXHhlMHNdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMHNdIExUIixsYXN0RGF5OiJbT250ZW0gXHhlMHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IltceGRhbHRpbW9dIGRkZGQg'@; put 'W1x4ZTBzXSBMVCI6IltceGRhbHRpbWFdIGRkZGQgW1x4ZTBzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJoXHhlMSAlcyIsczoicG91Y29zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVtIG1pbnV0byIsbW06IiVkIG1pbnV0'@; put 'b3MiLGg6InVtYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVtIGRpYSIsZGQ6IiVkIGRpYXMiLE06InVtIG1ceGVhcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsaW52'@; put 'YWxpZERhdGU6IkRhdGEgaW52XHhlMWxpZGEifSl9KGgoOTc1ODYpKX0sNzg3MTkoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJwdCIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyXHhlN29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29z'@; put 'dG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ29fU2VndW5kYS1mZWlyYV9UZXJceGU3YS1m'@; put 'ZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9TXHhlMWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvXzJceGFhXzNceGFhXzRceGFhXzVceGFhXzZc'@; put 'eGFhX1NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSIsTExM'@; put 'TDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2plIFx4ZTBzXSBMVCIsbmV4dERheToiW0FtYW5oXHhlMyBceGUwc10gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUwc10gTFQiLGxhc3REYXk6IltPbnRlbSBceGUwc10gTFQiLGxhc3RX'@; put 'ZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW1x4ZGFsdGltb10gZGRkZCBbXHhlMHNdIExUIjoiW1x4ZGFsdGltYV0gZGRkZCBbXHhlMHNdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW0gJXMiLHBhc3Q6Imhc'@; put 'eGUxICVzIixzOiJzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIix3OiJ1bWEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW0gbVx4ZWFzIixN'@; put 'TToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw1MTAwNChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7'@; put 'ZnVuY3Rpb24gYyhBLHYsQyl7dmFyIFM9IiAiO3JldHVybihBJTEwMD49MjB8fEE+PTEwMCYmQSUxMDA9PTApJiYoUz0iIGRlICIpLEErUyt7c3M6InNlY3VuZGUiLG1tOiJtaW51dGUiLGhoOiJvcmUiLGRkOiJ6aWxlIix3dzoic1x1MDEwM3B0XHUwMTAzbVx4ZTJuaSIsTU06Imx1bmkiLHl5'@; put 'OiJhbmkifVtDXX15LmRlZmluZUxvY2FsZSgicm8iLHttb250aHM6ImlhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imlh'@; put 'bi5fZmViLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkdW1pbmljXHUwMTAzX2x1bmlfbWFyXHUwMjFiaV9taWVyY3VyaV9qb2lfdmluZXJpX3NceGUybWJcdTAxMDN0'@; put 'XHUwMTAzIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkR1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1NceGUybSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRHVfTHVfTWFfTWlfSm9fVmlfU1x4ZTIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3Mi'@; put 'LEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlthemkgbGFdIExUIixuZXh0RGF5OiJbbVx4ZTJpbmUgbGFdIExUIixuZXh0V2VlazoiZGRkZCBbbGFd'@; put 'IExUIixsYXN0RGF5OiJbaWVyaSBsYV0gTFQiLGxhc3RXZWVrOiJbZm9zdGFdIGRkZGQgW2xhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicGVzdGUgJXMiLHBhc3Q6IiVzIFx4ZWVuIHVybVx1MDEwMyIsczoiY1x4ZTJ0ZXZhIHNlY3VuZGUiLHNzOmMsbToidW4g'@; put 'bWludXQiLG1tOmMsaDoibyBvclx1MDEwMyIsaGg6YyxkOiJvIHppIixkZDpjLHc6Im8gc1x1MDEwM3B0XHUwMTAzbVx4ZTJuXHUwMTAzIix3dzpjLE06Im8gbHVuXHUwMTAzIixNTTpjLHk6InVuIGFuIix5eTpjfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw1MTMyNihmZSxq'@; put 'LGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyhDLHcsUyl7cmV0dXJuIm0iPT09Uz93PyJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzAiOiJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NDMiOkMrIiAiK2Z1bmN0aW9uIGMoQyx3KXt2'@; put 'YXIgUz1DLnNwbGl0KCJfIik7cmV0dXJuIHclMTA9PTEmJnclMTAwIT0xMT9TWzBdOnclMTA+PTImJnclMTA8PTQmJih3JTEwMDwxMHx8dyUxMDA+PTIwKT9TWzFdOlNbMl19KHtzczp3PyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzBfXHUwNDQxXHUwNDM1XHUw'@; put 'NDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJfXHUwNDQxXHUwNDM1'@; put 'XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTp3PyJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzBfXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDRiX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiI6Ilx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1'@; put 'MDQ0Mlx1MDQ0M19cdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NGJfXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixoaDoiXHUwNDQ3XHUwNDMwXHUwNDQxX1x1MDQ0N1x1MDQzMFx1MDQ0MVx1MDQzMF9cdTA0NDdcdTA0MzBcdTA0NDFcdTA0M2VcdTA0MzIiLGRkOiJc'@; put 'dTA0MzRcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM0XHUwNDNkXHUwNDRmX1x1MDQzNFx1MDQzZFx1MDQzNVx1MDQzOSIsd3c6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0Zl9cdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0MzhfXHUwNDNkXHUwNDM1XHUwNDM0'@; put 'XHUwNDM1XHUwNDNiXHUwNDRjIixNTToiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2X1x1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQzMF9cdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZcdTA0MzVcdTA0MzIiLHl5OiJcdTA0MzNcdTA0M2VcdTA0MzRfXHUwNDMz'@; put 'XHUwNDNlXHUwNDM0XHUwNDMwX1x1MDQzYlx1MDQzNVx1MDQ0MiJ9W1NdLCtDKX12YXIgQT1bL15cdTA0NGZcdTA0M2RcdTA0MzIvaSwvXlx1MDQ0NFx1MDQzNVx1MDQzMi9pLC9eXHUwNDNjXHUwNDMwXHUwNDQwL2ksL15cdTA0MzBcdTA0M2ZcdTA0NDAvaSwvXlx1MDQzY1x1MDQzMFtcdTA0'@; put 'MzlcdTA0NGZdL2ksL15cdTA0MzhcdTA0NGVcdTA0M2QvaSwvXlx1MDQzOFx1MDQ0ZVx1MDQzYi9pLC9eXHUwNDMwXHUwNDMyXHUwNDMzL2ksL15cdTA0NDFcdTA0MzVcdTA0M2QvaSwvXlx1MDQzZVx1MDQzYVx1MDQ0Mi9pLC9eXHUwNDNkXHUwNDNlXHUwNDRmL2ksL15cdTA0MzRcdTA0MzVc'@; put 'dTA0M2EvaV07eS5kZWZpbmVMb2NhbGUoInJ1Iix7bW9udGhzOntmb3JtYXQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQ0Zl9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JcdTA0NGZfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyXHUwNDMwX1x1MDQzMFx1'@; put 'MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYlx1MDQ0Zl9cdTA0M2NcdTA0MzBcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRmX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Zl9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQy'@; put 'XHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRmX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Zl9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwXHUwNDRmIi5zcGxpdCgiXyIpLHN0YW5k'@; put 'YWxvbmU6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQ0Y19cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JcdTA0NGNfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYlx1MDQ0Y19cdTA0M2NcdTA0MzBcdTA0'@; put 'MzlfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1'@; put 'MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwXHUwNDRjIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDp7Zm9ybWF0OiJcdTA0NGZcdTA0M2RcdTA0MzIuX1x1MDQ0NFx1MDQzNVx1'@; put 'MDQzMlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDQwLl9cdTA0MzBcdTA0M2ZcdTA0NDAuX1x1MDQzY1x1MDQzMFx1MDQ0Zl9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRmX1x1MDQzMFx1MDQzMlx1MDQzMy5fXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQy'@; put 'Ll9cdTA0M2VcdTA0M2FcdTA0NDIuX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMS5fXHUwNDM0XHUwNDM1XHUwNDNhLiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NGZcdTA0M2RcdTA0MzIuX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1'@; put 'MDQzMFx1MDQzZlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0Y19cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGNfXHUwNDMwXHUwNDMyXHUwNDMzLl9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDIuX1x1MDQzZVx1MDQzYVx1MDQ0Mi5fXHUwNDNkXHUwNDNl'@; put 'XHUwNDRmXHUwNDMxLl9cdTA0MzRcdTA0MzVcdTA0M2EuIi5zcGxpdCgiXyIpfSx3ZWVrZGF5czp7c3RhbmRhbG9uZToiXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDNhXHUwNDQwXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDRjXHUwNDM1X1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQz'@; put 'NFx1MDQzNVx1MDQzYlx1MDQ0Y1x1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzM19cdTA0M2ZcdTA0'@; put 'NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0MzBfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLGZvcm1hdDoiXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDNhXHUwNDQwXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDRjXHUwNDM1X1x1'@; put 'MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0Y1x1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1'@; put 'MDQzNVx1MDQ0MFx1MDQzM19cdTA0M2ZcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0NDNfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9cWyA/W1x1MDQxMlx1MDQzMl0gPyg/Olx1MDQzZlx1MDQ0MFx1MDQz'@; put 'ZVx1MDQ0OFx1MDQzYlx1MDQ0M1x1MDQ0ZXxcdTA0NDFcdTA0M2JcdTA0MzVcdTA0MzRcdTA0NDNcdTA0NGVcdTA0NDlcdTA0NDNcdTA0NGV8XHUwNDRkXHUwNDQyXHUwNDQzKT8gP10gP2RkZGQvfSx3ZWVrZGF5c1Nob3J0OiJcdTA0MzJcdTA0NDFfXHUwNDNmXHUwNDNkX1x1MDQzMlx1MDQ0'@; put 'Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzMlx1MDQ0MV9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1'@; put 'MDQzMSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZTpBLGxvbmdNb250aHNQYXJzZTpBLHNob3J0TW9udGhzUGFyc2U6QSxtb250aHNSZWdleDovXihcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0NGZcdTA0M2RcdTA0MzJcLj98XHUwNDQ0XHUwNDM1XHUw'@; put 'NDMyXHUwNDQwXHUwNDMwXHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwP1wuP3xcdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzA/fFx1MDQzY1x1MDQzMFx1MDQ0MFwuP3xcdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JbXHUwNDRjXHUwNDRmXXxc'@; put 'dTA0MzBcdTA0M2ZcdTA0NDBcLj98XHUwNDNjXHUwNDMwW1x1MDQzOVx1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNkXC4/fFx1MDQzOFx1MDQ0ZVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzYlwuP3xcdTA0MzBc'@; put 'dTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzA/fFx1MDQzMFx1MDQzMlx1MDQzM1wuP3xcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDI/XC4/fFx1MDQzZVx1MDQzYVx1MDQ0Mlx1'@; put 'MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzZVx1MDQzYVx1MDQ0MlwuP3xcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzE/XC4/fFx1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFtc'@; put 'dTA0NGNcdTA0NGZdfFx1MDQzNFx1MDQzNVx1MDQzYVwuPykvaSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0Zlx1MDQzZFx1MDQzMlwuP3xcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JbXHUw'@; put 'NDRjXHUwNDRmXXxcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDA/XC4/fFx1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1MDQzMD98XHUwNDNjXHUwNDMwXHUwNDQwXC4/fFx1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzMFx1MDQzZlx1MDQ0MFwuP3xcdTA0'@; put 'M2NcdTA0MzBbXHUwNDM5XHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2RbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2RcLj98XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNiXC4/fFx1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1'@; put 'MDQ0Mlx1MDQzMD98XHUwNDMwXHUwNDMyXHUwNDMzXC4/fFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mj9cLj98XHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1'@; put 'MDQ0Zl18XHUwNDNlXHUwNDNhXHUwNDQyXC4/fFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMT9cLj98XHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM0XHUwNDM1'@; put 'XHUwNDNhXC4/KS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYltcdTA0NGZcdTA0NGNdfFx1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1MDQzMD98XHUw'@; put 'NDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiW1x1MDQ0Zlx1MDQ0Y118XHUwNDNjXHUwNDMwW1x1MDQ0Zlx1MDQzOV18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Zlx1MDQ0Y118XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Zlx1MDQ0Y118XHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQx'@; put 'XHUwNDQyXHUwNDMwP3xcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRjXXxcdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRjXXxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRj'@; put 'XXxcdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRjXSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlwufFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MD9cLnxcdTA0M2NcdTA0MzBcdTA0NDBbXHUwNDQyLl18XHUwNDMw'@; put 'XHUwNDNmXHUwNDQwXC58XHUwNDNjXHUwNDMwW1x1MDQ0Zlx1MDQzOV18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Y1x1MDQ0Zi5dfFx1MDQzOFx1MDQ0ZVx1MDQzYltcdTA0NGNcdTA0NGYuXXxcdTA0MzBcdTA0MzJcdTA0MzNcLnxcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDI/XC58XHUwNDNl'@; put 'XHUwNDNhXHUwNDQyXC58XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxP1wufFx1MDQzNFx1MDQzNVx1MDQzYVwuKS9pLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkgXHUwNDMzLiIsTExMOiJEIE1NTU0gWVlZWSBc'@; put 'dTA0MzMuLCBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0MzMuLCBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MjFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0MzRcdTA0M2RcdTA0NGYsIFx1MDQzMl0gTFQiLG5leHREYXk6IltcdTA0MTdcdTA0MzBcdTA0MzJcdTA0NDJc'@; put 'dTA0NDBcdTA0MzAsIFx1MDQzMl0gTFQiLGxhc3REYXk6IltcdTA0MTJcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAsIFx1MDQzMl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKEMpe2lmKEMud2VlaygpPT09dGhpcy53ZWVrKCkpcmV0dXJuIDI9PT10aGlzLmRheSgpPyJbXHUwNDEyXHUwNDNlXSBk'@; put 'ZGRkLCBbXHUwNDMyXSBMVCI6IltcdTA0MTJdIGRkZGQsIFtcdTA0MzJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbXHUwNDEyIFx1MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQzNVx1MDQzNV0gZGRkZCwgW1x1MDQzMl0gTFQiO2Nh'@; put 'c2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJbXHUwNDEyIFx1MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQzOFx1MDQzOV0gZGRkZCwgW1x1MDQzMl0gTFQiO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJbXHUwNDEyIFx1MDQ0MVx1MDQzYlx1MDQzNVx1'@; put 'MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQ0M1x1MDQ0ZV0gZGRkZCwgW1x1MDQzMl0gTFQifX0sbGFzdFdlZWs6ZnVuY3Rpb24oQyl7aWYoQy53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IltcdTA0MTJcdTA0M2VdIGRkZGQsIFtcdTA0MzJdIExUIjoiW1x1'@; put 'MDQxMl0gZGRkZCwgW1x1MDQzMl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltcdTA0MTIgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDM1XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIltcdTA0MTIg'@; put 'XHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDRiXHUwNDM5XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIltcdTA0MTIgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDQzXHUwNDRlXSBkZGRkLCBbXHUwNDMyXSBMVCJ9fSxz'@; put 'YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzcgJXMiLHBhc3Q6IiVzIFx1MDQzZFx1MDQzMFx1MDQzN1x1MDQzMFx1MDQzNCIsczoiXHUwNDNkXHUwNDM1XHUwNDQxXHUwNDNhXHUwNDNlXHUwNDNiXHUwNDRjXHUwNDNhXHUw'@; put 'NDNlIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6cyxtOnMsbW06cyxoOiJcdTA0NDdcdTA0MzBcdTA0NDEiLGhoOnMsZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjIixkZDpzLHc6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0ZiIsd3c6cyxN'@; put 'OiJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDYiLE1NOnMseToiXHUwNDMzXHUwNDNlXHUwNDM0Iix5eTpzfSxtZXJpZGllbVBhcnNlOi9cdTA0M2RcdTA0M2VcdTA0NDdcdTA0Mzh8XHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwfFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJcdTA0MzVc'@; put 'dTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAvaSxpc1BNOmZ1bmN0aW9uKEMpe3JldHVybi9eKFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzApJC8udGVzdChDKX0sbWVyaWRpZW06ZnVuY3Rpb24oQyx3LFMpe3JldHVybiBDPDQ/Ilx1MDQzZFx1'@; put 'MDQzZVx1MDQ0N1x1MDQzOCI6QzwxMj8iXHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwIjpDPDE3PyJcdTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0Mzl8XHUwNDMzXHUw'@; put 'NDNlfFx1MDQ0ZikvLG9yZGluYWw6ZnVuY3Rpb24oQyx3KXtzd2l0Y2godyl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gQysiLVx1MDQzOSI7Y2FzZSJEIjpyZXR1cm4gQysiLVx1MDQzM1x1MDQzZSI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBDKyItXHUwNDRmIjtkZWZhdWx0'@; put 'OnJldHVybiBDfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNzI2MDgoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPVsiXHUwNjJjXHUwNjQ2XHUwNjQ4XHUwNjMxXHUwNjRhIiwiXHUwNjQxXHUwNjRhXHUwNjI4XHUwNjMxXHUwNjQ4XHUwNjMxXHUw'@; put 'NjRhIiwiXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjg2IiwiXHUwNjI3XHUwNjdlXHUwNjMxXHUwNjRhXHUwNjQ0IiwiXHUwNjQ1XHUwNjI2XHUwNjRhIiwiXHUwNjJjXHUwNjQ4XHUwNjQ2IiwiXHUwNjJjXHUwNjQ4XHUwNjQ0XHUwNjI3XHUwNjIxXHUwNjUwIiwiXHUwNjIyXHUwNmFmXHUwNjMz'@; put 'XHUwNjdkIiwiXHUwNjMzXHUwNjRhXHUwNjdlXHUwNjdkXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjIyXHUwNmFhXHUwNjdkXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUwNjQ4XHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjhhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl0scz1bIlx1'@; put 'MDYyMlx1MDY4Nlx1MDYzMSIsIlx1MDYzM1x1MDY0OFx1MDY0NVx1MDYzMSIsIlx1MDYyN1x1MDZiMVx1MDYyN1x1MDYzMVx1MDY0OCIsIlx1MDYyN1x1MDYzMVx1MDYyOFx1MDYzOSIsIlx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzMyIsIlx1MDYyY1x1MDY0NVx1MDYzOSIsIlx1MDY4N1x1MDY0'@; put 'Nlx1MDY4N1x1MDYzMSJdO3kuZGVmaW5lTG9jYWxlKCJzZCIse21vbnRoczpjLG1vbnRoc1Nob3J0OmMsd2Vla2RheXM6cyx3ZWVrZGF5c1Nob3J0OnMsd2Vla2RheXNNaW46cyxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBN'@; put 'TU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2'@; put 'NDUiPT09dn0sbWVyaWRpZW06ZnVuY3Rpb24odixDLHcpe3JldHVybiB2PDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2MjdcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY4NF0gTFQiLG5leHREYXk6IltcdTA2MzNcdTA2ODBcdTA2MjdcdTA2YmJcdTA2'@; put 'NGFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjI3XHUwNmIzXHUwNjRhXHUwNjQ2IFx1MDY0N1x1MDY0MVx1MDYyYVx1MDY0YSBcdTA2MmFcdTA2NGFdIExUIixsYXN0RGF5OiJbXHUwNmFhXHUwNjI3XHUwNjQ0XHUwNjQ3XHUwNjQ3XSBMVCIsbGFzdFdlZWs6IltcdTA2YWZcdTA2MzJcdTA2'@; put 'MzFcdTA2NGFcdTA2NDQgXHUwNjQ3XHUwNjQxXHUwNjJhXHUwNjRhXSBkZGRkIFtcdTA2MmFcdTA2NGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2N2VcdTA2NDhcdTA2MjEiLHBhc3Q6IiVzIFx1MDYyN1x1MDZiMyIsczoiXHUwNjg2XHUwNjQ2XHUw'@; put 'NjJmIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsc3M6IiVkIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsbToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsbW06IiVkIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsaDoiXHUwNjQ3XHUwNmFhIFx1MDZhYVx1MDY0'@; put 'NFx1MDYyN1x1MDZhYSIsaGg6IiVkIFx1MDZhYVx1MDY0NFx1MDYyN1x1MDZhYSIsZDoiXHUwNjQ3XHUwNmFhIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIsZGQ6IiVkIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIsTToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0N1x1'@; put 'MDY0YVx1MDY0Nlx1MDY0OCIsTU06IiVkIFx1MDY0NVx1MDY0N1x1MDY0YVx1MDY0Nlx1MDYyNyIseToiXHUwNjQ3XHUwNmFhIFx1MDYzM1x1MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBhcnNlOmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1x1MDYw'@; put 'Yy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sMTM5MTEoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJzZSIse21vbnRo'@; put 'czoib1x1MDExMVx1MDExMWFqYWdlbVx4ZTFubnVfZ3VvdnZhbVx4ZTFubnVfbmp1a1x1MDEwZGFtXHhlMW5udV9jdW9cdTAxNGJvbVx4ZTFubnVfbWllc3NlbVx4ZTFubnVfZ2Vhc3NlbVx4ZTFubnVfc3VvaWRuZW1ceGUxbm51X2JvcmdlbVx4ZTFubnVfXHUwMTBkYWtcdTAxMGRhbVx4ZTFu'@; put 'bnVfZ29sZ2dvdG1ceGUxbm51X3NrXHhlMWJtYW1ceGUxbm51X2p1b3ZsYW1ceGUxbm51Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJvXHUwMTExXHUwMTExal9ndW92X25qdWtfY3VvX21pZXNfZ2Vhc19zdW9pX2JvcmdfXHUwMTBkYWtcdTAxMGRfZ29sZ19za1x4ZTFiX2p1b3YiLnNwbGl0'@; put 'KCJfIiksd2Vla2RheXM6InNvdG5hYmVhaXZpX3Z1b3NzXHhlMXJnYV9tYVx1MDE0Ylx1MDE0YmViXHhlMXJnYV9nYXNrYXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2xceGUxdnZhcmRhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzb3RuX3Z1b3NfbWFcdTAxNGJfZ2Fza19kdW9y'@; put 'X2JlYXJfbFx4ZTF2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzX3ZfbV9nX2RfYl9MIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJNTU1NIEQuIFtiLl0gWVlZWSIsTExMOiJNTU1NIEQuIFtiLl0gWVlZ'@; put 'WSBbdGkuXSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW290bmUgdGldIExUIixuZXh0RGF5OiJbaWh0dGluIHRpXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3RpXSBMVCIsbGFzdERheToiW2lrdGUgdGldIExUIixs'@; put 'YXN0V2VlazoiW292ZGRpdF0gZGRkZCBbdGldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBnZWFcdTAxN2VlcyIscGFzdDoibWFcdTAxNGJpdCAlcyIsczoibW9hZGRlIHNla3VuZGRhdCIsc3M6IiVkIHNla3VuZGRhdCIsbToib2t0YSBtaW51aHRhIixtbToi'@; put 'JWQgbWludWh0YXQiLGg6Im9rdGEgZGlpbW11IixoaDoiJWQgZGlpbW11dCIsZDoib2t0YSBiZWFpdmkiLGRkOiIlZCBiZWFpdnZpdCIsTToib2t0YSBtXHhlMW5udSIsTU06IiVkIG1ceGUxbnV0Iix5OiJva3RhIGphaGtpIix5eToiJWQgamFnaXQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNl'@; put 'Oi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sMjUxNDcoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJzaSIse21vbnRoczoiXHUwZGEyXHUwZGIxXHUwZGMwXHUwZGNmXHUwZGJiXHUwZGQy'@; put 'X1x1MGRiNFx1MGRkOVx1MGRiNlx1MGRiYlx1MGRjMFx1MGRjZlx1MGRiYlx1MGRkMl9cdTBkYjhcdTBkY2ZcdTBkYmJcdTBkY2FcdTBkYWRcdTBkZDRfXHUwZDg1XHUwZGI0XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGRhXHUwZGJkXHUwZGNhX1x1MGRiOFx1MGRkMFx1MGRiYVx1MGRkMl9cdTBk'@; put 'YTJcdTBkZDZcdTBkYjFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGJkXHUwZGQyX1x1MGQ4NVx1MGQ5Y1x1MGRkZFx1MGRjM1x1MGRjYVx1MGRhZFx1MGRkNF9cdTBkYzNcdTBkZDBcdTBkYjRcdTBkY2FcdTBkYWRcdTBkZDBcdTBkYjhcdTBkY2FcdTBkYjZcdTBkYmJcdTBkY2FfXHUwZDk0XHUw'@; put 'ZDlhXHUwZGNhXHUwZGFkXHUwZGRkXHUwZGI2XHUwZGJiXHUwZGNhX1x1MGRiMVx1MGRkY1x1MGRjMFx1MGRkMFx1MGRiOFx1MGRjYVx1MGRiNlx1MGRiYlx1MGRjYV9cdTBkYWZcdTBkZDlcdTBkYzNcdTBkZDBcdTBkYjhcdTBkY2FcdTBkYjZcdTBkYmJcdTBkY2EiLnNwbGl0KCJfIiksbW9u'@; put 'dGhzU2hvcnQ6Ilx1MGRhMlx1MGRiMV9cdTBkYjRcdTBkZDlcdTBkYjZfXHUwZGI4XHUwZGNmXHUwZGJiXHUwZGNhX1x1MGQ4NVx1MGRiNFx1MGRjYV9cdTBkYjhcdTBkZDBcdTBkYmFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGIxXHUwZGQyX1x1MGRhMlx1MGRkNlx1MGRiZFx1MGRkMl9cdTBk'@; put 'ODVcdTBkOWNcdTBkZGRfXHUwZGMzXHUwZGQwXHUwZGI0XHUwZGNhX1x1MGQ5NFx1MGQ5YVx1MGRjYV9cdTBkYjFcdTBkZGNcdTBkYzBcdTBkZDBfXHUwZGFmXHUwZGQ5XHUwZGMzXHUwZGQwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBkODlcdTBkYmJcdTBkZDJcdTBkYWZcdTBkY2ZfXHUw'@; put 'ZGMzXHUwZGIzXHUwZGQ0XHUwZGFmXHUwZGNmX1x1MGQ4NVx1MGQ5Zlx1MGRjNFx1MGRiYlx1MGRkNFx1MGRjMFx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYjZcdTBkYWZcdTBkY2ZcdTBkYWZcdTBkY2ZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGM0XHUwZGMzXHUwZGNhXHUwZGI0XHUw'@; put 'ZGFkXHUwZGQyXHUwZGIxXHUwZGNhXHUwZGFmXHUwZGNmX1x1MGRjM1x1MGRkMlx1MGQ5YVx1MGRkNFx1MGRiYlx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYzNcdTBkZDlcdTBkYjFcdTBkYzNcdTBkZDRcdTBkYmJcdTBkY2ZcdTBkYWZcdTBkY2YiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi'@; put 'XHUwZDg5XHUwZGJiXHUwZGQyX1x1MGRjM1x1MGRiM1x1MGRkNF9cdTBkODVcdTBkOWZfXHUwZGI2XHUwZGFmXHUwZGNmX1x1MGRiNlx1MGRjYVx1MjAwZFx1MGRiYlx1MGRjNF9cdTBkYzNcdTBkZDJcdTBkOWFcdTBkZDRfXHUwZGMzXHUwZGQ5XHUwZGIxIi5zcGxpdCgiXyIpLHdlZWtkYXlz'@; put 'TWluOiJcdTBkODlfXHUwZGMzX1x1MGQ4NV9cdTBkYjZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiX1x1MGRjM1x1MGRkMl9cdTBkYzNcdTBkZDkiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiYSBoOm1tIixMVFM6ImEgaDptbTpzcyIsTDoi'@; put 'WVlZWS9NTS9ERCIsTEw6IllZWVkgTU1NTSBEIixMTEw6IllZWVkgTU1NTSBELCBhIGg6bW0iLExMTEw6IllZWVkgTU1NTSBEIFtcdTBkYzBcdTBkZDBcdTBkYjFcdTBkZDJdIGRkZGQsIGEgaDptbTpzcyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZDg1XHUwZGFmXSBMVFtcdTBkYTddIixu'@; put 'ZXh0RGF5OiJbXHUwZGM0XHUwZGQ5XHUwZGE3XSBMVFtcdTBkYTddIixuZXh0V2VlazoiZGRkZCBMVFtcdTBkYTddIixsYXN0RGF5OiJbXHUwZDhhXHUwZGJhXHUwZGRhXSBMVFtcdTBkYTddIixsYXN0V2VlazoiW1x1MGRiNFx1MGRjM1x1MGRkNFx1MGQ5Y1x1MGRkMlx1MGRiYV0gZGRkZCBM'@; put 'VFtcdTBkYTddIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MGQ5YVx1MGRkMlx1MGRiMVx1MGRjYSIscGFzdDoiJXNcdTBkOWFcdTBkYTcgXHUwZGI0XHUwZGQ5XHUwZGJiIixzOiJcdTBkYWRcdTBkYWRcdTBkY2FcdTBkYjRcdTBkYmIgXHUwZDlhXHUwZGQyXHUw'@; put 'ZGM0XHUwZGQyXHUwZGI0XHUwZGJhIixzczoiXHUwZGFkXHUwZGFkXHUwZGNhXHUwZGI0XHUwZGJiICVkIixtOiJcdTBkYjhcdTBkZDJcdTBkYjFcdTBkZDJcdTBkYWRcdTBkY2FcdTBkYWRcdTBkZDRcdTBkYzAiLG1tOiJcdTBkYjhcdTBkZDJcdTBkYjFcdTBkZDJcdTBkYWRcdTBkY2FcdTBk'@; put 'YWRcdTBkZDQgJWQiLGg6Ilx1MGRiNFx1MGRkMFx1MGRiYSIsaGg6Ilx1MGRiNFx1MGRkMFx1MGRiYSAlZCIsZDoiXHUwZGFmXHUwZGQyXHUwZGIxXHUwZGJhIixkZDoiXHUwZGFmXHUwZGQyXHUwZGIxICVkIixNOiJcdTBkYjhcdTBkY2ZcdTBkYzNcdTBkYmEiLE1NOiJcdTBkYjhcdTBkY2Zc'@; put 'dTBkYzMgJWQiLHk6Ilx1MGRjMFx1MGRjM1x1MGRiYiIseXk6Ilx1MGRjMFx1MGRjM1x1MGRiYiAlZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0gXHUwZGMwXHUwZGQwXHUwZGIxXHUwZGQyLyxvcmRpbmFsOmZ1bmN0aW9uKHMpe3JldHVybiBzKyIgXHUwZGMwXHUwZGQwXHUw'@; put 'ZGIxXHUwZGQyIn0sbWVyaWRpZW1QYXJzZTovXHUwZGI0XHUwZGQ5XHUwZGJiIFx1MGRjMFx1MGRiYlx1MGRkNHxcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0fFx1MGRiNFx1MGRkOS5cdTBkYzB8XHUwZGI0Llx1MGRjMC4vLGlzUE06ZnVuY3Rpb24ocyl7cmV0dXJuIlx1'@; put 'MGRiNC5cdTBkYzAuIj09PXN8fCJcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0Ij09PXN9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4gcz4xMT92PyJcdTBkYjQuXHUwZGMwLiI6Ilx1MGRiNFx1MGRjM1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDQiOnY/Ilx1'@; put 'MGRiNFx1MGRkOS5cdTBkYzAuIjoiXHUwZGI0XHUwZGQ5XHUwZGJiIFx1MGRjMFx1MGRiYlx1MGRkNCJ9fSl9KGgoOTc1ODYpKX0sMjM3NDEoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPSJqYW51XHhlMXJfZmVicnVceGUxcl9tYXJlY19hcHJceGVkbF9tXHhlMWpf'@; put 'alx4ZmFuX2pceGZhbF9hdWd1c3Rfc2VwdGVtYmVyX29rdFx4ZjNiZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIikscz0iamFuX2ZlYl9tYXJfYXByX21ceGUxal9qXHhmYW5falx4ZmFsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIik7ZnVuY3Rpb24gQSh3KXtyZXR1cm4g'@; put 'dz4xJiZ3PDV9ZnVuY3Rpb24gdih3LFMsTCxSKXt2YXIgeD13KyIgIjtzd2l0Y2goTCl7Y2FzZSJzIjpyZXR1cm4gU3x8Uj8icFx4ZTFyIHNla1x4ZmFuZCI6InBceGUxciBzZWt1bmRhbWkiO2Nhc2Uic3MiOnJldHVybiBTfHxSP3grKEEodyk/InNla3VuZHkiOiJzZWtceGZhbmQiKTp4KyJz'@; put 'ZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIFM/Im1pblx4ZmF0YSI6Uj8ibWluXHhmYXR1IjoibWluXHhmYXRvdSI7Y2FzZSJtbSI6cmV0dXJuIFN8fFI/eCsoQSh3KT8ibWluXHhmYXR5IjoibWluXHhmYXQiKTp4KyJtaW5ceGZhdGFtaSI7Y2FzZSJoIjpyZXR1cm4gUz8iaG9kaW5hIjpSPyJo'@; put 'b2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4gU3x8Uj94KyhBKHcpPyJob2RpbnkiOiJob2RceGVkbiIpOngrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBTfHxSPyJkZVx1MDE0OCI6ImRcdTAxNDhvbSI7Y2FzZSJkZCI6cmV0dXJuIFN8fFI/eCsoQSh3KT8iZG5pIjoiZG5ceGVk'@; put 'Iik6eCsiZFx1MDE0OGFtaSI7Y2FzZSJNIjpyZXR1cm4gU3x8Uj8ibWVzaWFjIjoibWVzaWFjb20iO2Nhc2UiTU0iOnJldHVybiBTfHxSP3grKEEodyk/Im1lc2lhY2UiOiJtZXNpYWNvdiIpOngrIm1lc2lhY21pIjtjYXNlInkiOnJldHVybiBTfHxSPyJyb2siOiJyb2tvbSI7Y2FzZSJ5eSI6'@; put 'cmV0dXJuIFN8fFI/eCsoQSh3KT8icm9reSI6InJva292Iik6eCsicm9rbWkifX15LmRlZmluZUxvY2FsZSgic2siLHttb250aHM6Yyxtb250aHNTaG9ydDpzLHdlZWtkYXlzOiJuZWRlXHUwMTNlYV9wb25kZWxva191dG9yb2tfc3RyZWRhX1x1MDE2MXR2cnRva19waWF0b2tfc29ib3RhIi5z'@; put 'cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX3V0X3N0X1x1MDE2MXRfcGlfc28iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3N0X1x1MDE2MXRfcGlfc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZ'@; put 'WVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgb10gTFQiLG5leHREYXk6Ilt6YWp0cmEgb10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMu'@; put 'ZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3YgbmVkZVx1MDEzZXUgb10gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlt2XSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbdiBzdHJlZHUgb10gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZvIFx1MDE2MXR2cnRvayBvXSBMVCI7Y2FzZSA1OnJldHVybiJb'@; put 'diBwaWF0b2sgb10gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IG9dIExUIn19LGxhc3REYXk6Ilt2XHUwMTBkZXJhIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlttaW51bFx4ZmEgbmVkZVx1MDEzZXUgb10gTFQiO2Nhc2Ug'@; put 'MTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsXHhmZF0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsXHhmYSBzdHJlZHUgb10gTFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsXHhmYSBzb2JvdHUgb10gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1'@; put 'dHVyZToiemEgJXMiLHBhc3Q6InByZWQgJXMiLHM6dixzczp2LG06dixtbTp2LGg6dixoaDp2LGQ6dixkZDp2LE06dixNTTp2LHk6dix5eTp2fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0s'@; put 'OTNlMyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhBLHYsQyx3KXt2YXIgUz1BKyIgIjtzd2l0Y2goQyl7Y2FzZSJzIjpyZXR1cm4gdnx8dz8ibmVrYWogc2VrdW5kIjoibmVrYWogc2VrdW5kYW1pIjtjYXNlInNzIjpyZXR1cm4gUysoMT09PUE/dj8ic2Vr'@; put 'dW5kbyI6InNla3VuZGkiOjI9PT1BP3Z8fHc/InNla3VuZGkiOiJzZWt1bmRhaCI6QTw1P3Z8fHc/InNla3VuZGUiOiJzZWt1bmRhaCI6InNla3VuZCIpO2Nhc2UibSI6cmV0dXJuIHY/ImVuYSBtaW51dGEiOiJlbm8gbWludXRvIjtjYXNlIm1tIjpyZXR1cm4gUysoMT09PUE/dj8ibWludXRh'@; put 'IjoibWludXRvIjoyPT09QT92fHx3PyJtaW51dGkiOiJtaW51dGFtYSI6QTw1P3Z8fHc/Im1pbnV0ZSI6Im1pbnV0YW1pIjp2fHx3PyJtaW51dCI6Im1pbnV0YW1pIik7Y2FzZSJoIjpyZXR1cm4gdj8iZW5hIHVyYSI6ImVubyB1cm8iO2Nhc2UiaGgiOnJldHVybiBTKygxPT09QT92PyJ1cmEi'@; put 'OiJ1cm8iOjI9PT1BP3Z8fHc/InVyaSI6InVyYW1hIjpBPDU/dnx8dz8idXJlIjoidXJhbWkiOnZ8fHc/InVyIjoidXJhbWkiKTtjYXNlImQiOnJldHVybiB2fHx3PyJlbiBkYW4iOiJlbmltIGRuZW0iO2Nhc2UiZGQiOnJldHVybiBTKygxPT09QT92fHx3PyJkYW4iOiJkbmVtIjoyPT09QT92'@; put 'fHx3PyJkbmkiOiJkbmV2b21hIjp2fHx3PyJkbmkiOiJkbmV2aSIpO2Nhc2UiTSI6cmV0dXJuIHZ8fHc/ImVuIG1lc2VjIjoiZW5pbSBtZXNlY2VtIjtjYXNlIk1NIjpyZXR1cm4gUysoMT09PUE/dnx8dz8ibWVzZWMiOiJtZXNlY2VtIjoyPT09QT92fHx3PyJtZXNlY2EiOiJtZXNlY2VtYSI6'@; put 'QTw1P3Z8fHc/Im1lc2VjZSI6Im1lc2VjaSI6dnx8dz8ibWVzZWNldiI6Im1lc2VjaSIpO2Nhc2UieSI6cmV0dXJuIHZ8fHc/ImVubyBsZXRvIjoiZW5pbSBsZXRvbSI7Y2FzZSJ5eSI6cmV0dXJuIFMrKDE9PT1BP3Z8fHc/ImxldG8iOiJsZXRvbSI6Mj09PUE/dnx8dz8ibGV0aSI6ImxldG9t'@; put 'YSI6QTw1P3Z8fHc/ImxldGEiOiJsZXRpIjp2fHx3PyJsZXQiOiJsZXRpIil9fXkuZGVmaW5lTG9jYWxlKCJzbCIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyZWNfYXByaWxfbWFqX2p1bmlqX2p1bGlqX2F2Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3Bs'@; put 'aXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX1x1MDEwZGV0cnRl'@; put 'a19wZXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3Rvci5fc3JlLl9cdTAxMGRldC5fcGV0Ll9zb2IuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb190b19zcl9cdTAxMGRlX3BlX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDoh'@; put 'MCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuIE1NLiBZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuZXMgb2JdIExU'@; put 'IixuZXh0RGF5OiJbanV0cmkgb2JdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2XSBbbmVkZWxqb10gW29iXSBMVCI7Y2FzZSAzOnJldHVybiJbdl0gW3NyZWRvXSBbb2JdIExUIjtjYXNlIDY6cmV0dXJuIlt2XSBbc29ib3RvXSBb'@; put 'b2JdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt2XSBkZGRkIFtvYl0gTFQifX0sbGFzdERheToiW3ZcdTAxMGRlcmFqIG9iXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbcHJlalx1MDE2MW5qb10gW25l'@; put 'ZGVsam9dIFtvYl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ByZWpcdTAxNjFuam9dIFtzcmVkb10gW29iXSBMVCI7Y2FzZSA2OnJldHVybiJbcHJlalx1MDE2MW5qb10gW3NvYm90b10gW29iXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbcHJlalx1MDE2MW5qaV0gZGRk'@; put 'ZCBbb2JdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDEwZGV6ICVzIixwYXN0OiJwcmVkICVzIixzOmMsc3M6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwu'@; put 'LyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDYwNDUxKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgic3EiLHttb250aHM6IkphbmFyX1Noa3VydF9NYXJzX1ByaWxsX01hal9RZXJzaG9yX0tvcnJpa19HdXNo'@; put 'dF9TaHRhdG9yX1RldG9yX05ceGVibnRvcl9EaGpldG9yIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fU2hrX01hcl9QcmlfTWFqX1Flcl9Lb3JfR3VzX1NodF9UZXRfTlx4ZWJuX0RoaiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRSBEaWVsX0UgSFx4ZWJuXHhlYl9FIE1hcnRceGViX0Ug'@; put 'TVx4ZWJya3VyXHhlYl9FIEVuanRlX0UgUHJlbXRlX0UgU2h0dW5ceGViIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRpZV9IXHhlYm5fTWFyX01ceGVicl9FbmpfUHJlX1NodCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRF9IX01hX01ceGViX0VfUF9TaCIuc3BsaXQoIl8iKSx3ZWVr'@; put 'ZGF5c1BhcnNlRXhhY3Q6ITAsbWVyaWRpZW1QYXJzZTovUER8TUQvLGlzUE06ZnVuY3Rpb24ocyl7cmV0dXJuIk0iPT09cy5jaGFyQXQoMCl9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4gczwxMj8iUEQiOiJNRCJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6'@; put 'bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1NvdCBuXHhlYl0gTFQiLG5leHREYXk6IltOZXNceGViciBuXHhlYl0gTFQiLG5leHRX'@; put 'ZWVrOiJkZGRkIFtuXHhlYl0gTFQiLGxhc3REYXk6IltEamUgblx4ZWJdIExUIixsYXN0V2VlazoiZGRkZCBbZSBrYWx1YXIgblx4ZWJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuXHhlYiAlcyIscGFzdDoiJXMgbVx4ZWIgcGFyXHhlYiIsczoiZGlzYSBzZWtv'@; put 'bmRhIixzczoiJWQgc2Vrb25kYSIsbToibmpceGViIG1pbnV0XHhlYiIsbW06IiVkIG1pbnV0YSIsaDoibmpceGViIG9yXHhlYiIsaGg6IiVkIG9yXHhlYiIsZDoibmpceGViIGRpdFx4ZWIiLGRkOiIlZCBkaXRceGViIixNOiJualx4ZWIgbXVhaiIsTU06IiVkIG11YWoiLHk6Im5qXHhlYiB2'@; put 'aXQiLHl5OiIlZCB2aXRlIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDQwOTA1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz17d29yZHM6e3NzOlsiXHUwNDQx'@; put 'XHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDMwIiwiXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM1IiwiXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4Il0sbTpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzMFx1MDQzZCBc'@; put 'dTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0M2VcdTA0MzMgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIl0sbW06WyJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLCJcdTA0M2NcdTA0MzhcdTA0M2Rc'@; put 'dTA0NDNcdTA0NDJcdTA0MzAiLCJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzAiXSxoOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQ0MVx1MDQzMFx1MDQ0MiIsIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0NDFcdTA0MzBc'@; put 'dTA0NDJcdTA0MzAiXSxoaDpbIlx1MDQ0MVx1MDQzMFx1MDQ0MiIsIlx1MDQ0MVx1MDQzMFx1MDQ0Mlx1MDQzMCIsIlx1MDQ0MVx1MDQzMFx1MDQ0Mlx1MDQzOCJdLGQ6WyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0MzBcdTA0M2QgXHUwNDM0XHUwNDMwXHUwNDNkIiwiXHUwNDU4XHUwNDM1XHUw'@; put 'NDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQzNFx1MDQzMFx1MDQzZFx1MDQzMCJdLGRkOlsiXHUwNDM0XHUwNDMwXHUwNDNkIiwiXHUwNDM0XHUwNDMwXHUwNDNkXHUwNDMwIiwiXHUwNDM0XHUwNDMwXHUwNDNkXHUwNDMwIl0sTTpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzMFx1MDQzZCBc'@; put 'dTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDYiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0M2VcdTA0MzMgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDMwIl0sTU06WyJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDYiLCJcdTA0M2NcdTA0MzVcdTA0NDFc'@; put 'dTA0MzVcdTA0NDZcdTA0MzAiLCJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDZcdTA0MzgiXSx5OlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDQzIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0MyIsIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzNSBc'@; put 'dTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzUiXSx5eTpbIlx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0MyIsIlx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzNSIsIlx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCJdfSxjb3Jy'@; put 'ZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9uKEEsdil7cmV0dXJuIEElMTA+PTEmJkElMTA8PTQmJihBJTEwMDwxMHx8QSUxMDA+PTIwKT9BJTEwPT0xP3ZbMF06dlsxXTp2WzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oQSx2LEMsdyl7dmFyIEwsUz1jLndvcmRzW0NdO3JldHVybiAxPT09Qy5s'@; put 'ZW5ndGg/InkiPT09QyYmdj8iXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDMwIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCI6d3x8dj9TWzBdOlNbMV06KEw9Yy5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKEEsUyksInl5Ij09PUMmJnYmJiJcdTA0MzNcdTA0M2VcdTA0'@; put 'MzRcdTA0MzhcdTA0M2RcdTA0NDMiPT09TD9BKyIgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIjpBKyIgIitMKX19O3kuZGVmaW5lTG9jYWxlKCJzci1jeXJsIix7bW9udGhzOiJcdTA0NThcdTA0MzBcdTA0M2RcdTA0NDNcdTA0MzBcdTA0NDBfXHUwNDQ0XHUwNDM1XHUw'@; put 'NDMxXHUwNDQwXHUwNDQzXHUwNDMwXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzhcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZF9cdTA0NThcdTA0NDNcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQz'@; put 'XHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZlx1MDQ0Mlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzMFx1MDQ0MF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0M2VcdTA0MzFcdTA0MzBcdTA0NDBfXHUwNDNkXHUwNDNlXHUwNDMyXHUwNDM1XHUwNDNjXHUwNDMxXHUwNDMwXHUwNDQwX1x1MDQz'@; put 'NFx1MDQzNVx1MDQ0Nlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDU4XHUwNDMwXHUwNDNkLl9cdTA0NDRcdTA0MzVcdTA0MzEuX1x1MDQzY1x1MDQzMFx1MDQ0MC5fXHUwNDMwXHUwNDNmXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0'@; put 'NThfXHUwNDU4XHUwNDQzXHUwNDNkX1x1MDQ1OFx1MDQ0M1x1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzMuX1x1MDQ0MVx1MDQzNVx1MDQzZi5fXHUwNDNlXHUwNDNhXHUwNDQyLl9cdTA0M2RcdTA0M2VcdTA0MzIuX1x1MDQzNFx1MDQzNVx1MDQ0Ni4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VF'@; put 'eGFjdDohMCx3ZWVrZGF5czoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDMwX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzMFx1MDQzYV9cdTA0NDNcdTA0NDJcdTA0M2VcdTA0NDBcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1'@; put 'XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzMFx1MDQzYV9cdTA0M2ZcdTA0MzVcdTA0NDJcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1'@; put 'MDQzNVx1MDQzNC5fXHUwNDNmXHUwNDNlXHUwNDNkLl9cdTA0NDNcdTA0NDJcdTA0M2UuX1x1MDQ0MVx1MDQ0MFx1MDQzNS5fXHUwNDQ3XHUwNDM1XHUwNDQyLl9cdTA0M2ZcdTA0MzVcdTA0NDIuX1x1MDQ0MVx1MDQ0M1x1MDQzMS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZFx1'@; put 'MDQzNV9cdTA0M2ZcdTA0M2VfXHUwNDQzXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0MzVfXHUwNDNmXHUwNDM1X1x1MDQ0MVx1MDQ0MyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuIE0u'@; put 'IFlZWVkuIixMTDoiRC4gTU1NTSBZWVlZLiIsTExMOiJELiBNTU1NIFlZWVkuIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWS4gSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDM0XHUwNDMwXHUwNDNkXHUwNDMwXHUwNDQxIFx1MDQ0M10gTFQiLG5leHREYXk6IltcdTA0NDFc'@; put 'dTA0NDNcdTA0NDJcdTA0NDBcdTA0MzAgXHUwNDQzXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbXHUwNDQzXSBbXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSAzOnJldHVybiJb'@; put 'XHUwNDQzXSBbXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSA2OnJldHVybiJbXHUwNDQzXSBbXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJb'@; put 'XHUwNDQzXSBkZGRkIFtcdTA0NDNdIExUIn19LGxhc3REYXk6IltcdTA0NThcdTA0NDNcdTA0NDdcdTA0MzUgXHUwNDQzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm5bIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0M2RcdTA0MzVcdTA0MzRcdTA0'@; put 'MzVcdTA0NTlcdTA0MzVdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10gW1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzYVx1MDQzMF0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNl'@; put 'XHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDQzXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzVdIFtcdTA0NDNdIExUIiwi'@; put 'W1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10gW1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzYVx1MDQzMF0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDNmXHUw'@; put 'NDM1XHUwNDQyXHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzVdIFtcdTA0NDNdIExUIl1bdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVU'@; put 'aW1lOntmdXR1cmU6Ilx1MDQzN1x1MDQzMCAlcyIscGFzdDoiXHUwNDNmXHUwNDQwXHUwNDM1ICVzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0M2VcdTA0M2JcdTA0MzhcdTA0M2FcdTA0M2UgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixzczpjLnRyYW5z'@; put 'bGF0ZSxtOmMudHJhbnNsYXRlLG1tOmMudHJhbnNsYXRlLGg6Yy50cmFuc2xhdGUsaGg6Yy50cmFuc2xhdGUsZDpjLnRyYW5zbGF0ZSxkZDpjLnRyYW5zbGF0ZSxNOmMudHJhbnNsYXRlLE1NOmMudHJhbnNsYXRlLHk6Yy50cmFuc2xhdGUseXk6Yy50cmFuc2xhdGV9LGRheU9mTW9udGhPcmRp'@; put 'bmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5NzU4NikpfSw1NTA0NihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9e3dvcmRzOntzczpbInNla3VuZGEiLCJzZWt1bmRlIiwic2VrdW5kaSJdLG06WyJqZWRh'@; put 'biBtaW51dCIsImplZG5vZyBtaW51dGEiXSxtbTpbIm1pbnV0IiwibWludXRhIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGQ6WyJqZWRhbiBkYW4iLCJqZWRub2cgZGFuYSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEi'@; put 'XSxNOlsiamVkYW4gbWVzZWMiLCJqZWRub2cgbWVzZWNhIl0sTU06WyJtZXNlYyIsIm1lc2VjYSIsIm1lc2VjaSJdLHk6WyJqZWRudSBnb2RpbnUiLCJqZWRuZSBnb2RpbmUiXSx5eTpbImdvZGludSIsImdvZGluZSIsImdvZGluYSJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9u'@; put 'KEEsdil7cmV0dXJuIEElMTA+PTEmJkElMTA8PTQmJihBJTEwMDwxMHx8QSUxMDA+PTIwKT9BJTEwPT0xP3ZbMF06dlsxXTp2WzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oQSx2LEMsdyl7dmFyIEwsUz1jLndvcmRzW0NdO3JldHVybiAxPT09Qy5sZW5ndGg/InkiPT09QyYmdj8iamVkbmEgZ29k'@; put 'aW5hIjp3fHx2P1NbMF06U1sxXTooTD1jLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoQSxTKSwieXkiPT09QyYmdiYmImdvZGludSI9PT1MP0ErIiBnb2RpbmEiOkErIiAiK0wpfX07eS5kZWZpbmVMb2NhbGUoInNyIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5f'@; put 'anVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVr'@; put 'ZGF5czoibmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV9cdTAxMGRldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmUuX1x1MDEwZGV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0'@; put 'X3NyX1x1MDEwZGVfcGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELiBNLiBZWVlZLiIsTEw6IkQuIE1NTU0gWVlZWS4iLExMTDoiRC4gTU1NTSBZWVlZLiBIOm1tIixMTExMOiJkZGRkLCBE'@; put 'LiBNTU1NIFlZWVkuIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRlbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4i'@; put 'W3VdIFtzcmVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdVx1MDEwZGUgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuWyJb'@; put 'cHJvXHUwMTYxbGVdIFtuZWRlbGplXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3V0b3JrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3JlZGVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtcdTAxMGRldHZydGthXSBb'@; put 'dV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsZV0gW3N1Ym90ZV0gW3VdIExUIl1bdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmUgJXMiLHM6Im5la29saWtvIHNla3VuZGkiLHNz'@; put 'OmMudHJhbnNsYXRlLG06Yy50cmFuc2xhdGUsbW06Yy50cmFuc2xhdGUsaDpjLnRyYW5zbGF0ZSxoaDpjLnRyYW5zbGF0ZSxkOmMudHJhbnNsYXRlLGRkOmMudHJhbnNsYXRlLE06Yy50cmFuc2xhdGUsTU06Yy50cmFuc2xhdGUseTpjLnRyYW5zbGF0ZSx5eTpjLnRyYW5zbGF0ZX0sZGF5T2ZN'@; put 'b250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShoKDk3NTg2KSl9LDg1NzY1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgic3MiLHttb250aHM6IkJoaW1iaWR2d2FuZV9JbmRsb3Zh'@; put 'bmFfSW5kbG92J2xlbmtodWx1X01hYmFzYV9Jbmtod2VraHdldGlfSW5obGFiYV9LaG9sd2FuZV9JbmdjaV9JbnlvbmlfSW1waGFsYV9Md2V0aV9JbmdvbmdvbmkiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkJoaV9JbmFfSW51X01hYl9JbmtfSW5oX0tob19JZ2NfSW55X0ltcF9Md2VfSWdv'@; put 'Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJMaXNvbnRmb19VbXNvbWJ1bHVrb19MZXNpYmlsaV9MZXNpdHNhdGZ1X0xlc2luZV9MZXNpaGxhbnVfVW1nY2liZWxvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikxpc19VbWJfTHNiX0xlc19Mc2lfTHNoX1VtZyIuc3BsaXQoIl8iKSx3ZWVrZGF5'@; put 'c01pbjoiTGlfVXNfTGJfTHRfTHNfTGhfVWciLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExM'@; put 'TDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltOYW11aGxhIG5nYV0gTFQiLG5leHREYXk6IltLdXNhc2EgbmdhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW25nYV0gTFQiLGxhc3REYXk6IltJdG9sbyBuZ2FdIExUIixsYXN0V2VlazoiZGRkZCBbbGVsaXBo'@; put 'ZWxpbGVdIFtuZ2FdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuZ2EgJXMiLHBhc3Q6IndlbnRla2EgbmdhICVzIixzOiJlbWl6dXp3YW5hIGxvbWNhbmUiLHNzOiIlZCBtenV6d2FuYSIsbToidW16dXp1IixtbToiJWQgZW1penV6dSIsaDoibGlob3JhIixoaDoi'@; put 'JWQgZW1haG9yYSIsZDoibGlsYW5nYSIsZGQ6IiVkIGVtYWxhbmdhIixNOiJpbnlhbmdhIixNTToiJWQgdGlueWFuZ2EiLHk6InVtbnlha2EiLHl5OiIlZCBpbWlueWFrYSJ9LG1lcmlkaWVtUGFyc2U6L2VrdXNlbml8ZW1pbml8ZW50c2FtYmFtYXxlYnVzdWt1LyxtZXJpZGllbTpmdW5jdGlv'@; put 'bihzLEEsdil7cmV0dXJuIHM8MTE/ImVrdXNlbmkiOnM8MTU/ImVtaW5pIjpzPDE5PyJlbnRzYW1iYW1hIjoiZWJ1c3VrdSJ9LG1lcmlkaWVtSG91cjpmdW5jdGlvbihzLEEpe3JldHVybiAxMj09PXMmJihzPTApLCJla3VzZW5pIj09PUE/czoiZW1pbmkiPT09QT9zPj0xMT9zOnMrMTI6ImVu'@; put 'dHNhbWJhbWEiPT09QXx8ImVidXN1a3UiPT09QT8wPT09cz8wOnMrMTI6dm9pZCAwfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOiIlZCIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sOTkyOTAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJp'@; put 'Y3QiO3kuZGVmaW5lTG9jYWxlKCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9q'@; put 'dW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InNceGY2bmRhZ19tXHhlNW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sXHhmNnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic1x4ZjZuX21ceGU1bl90aXNfb25zX3Rvcl9mcmVf'@; put 'bFx4ZjZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzXHhmNl9tXHhlNV90aV9vbl90b19mcl9sXHhmNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg'@; put 'W2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJ'@; put 'Z1x4ZTVyXSBMVCIsbmV4dFdlZWs6IltQXHhlNV0gZGRkZCBMVCIsbGFzdFdlZWs6IltJXSBkZGRkW3NdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiZlx4ZjZyICVzIHNlZGFuIixzOiJuXHhlNWdyYSBzZWt1bmRlciIsc3M6IiVkIHNla3Vu'@; put 'ZGVyIixtOiJlbiBtaW51dCIsbW06IiVkIG1pbnV0ZXIiLGg6ImVuIHRpbW1lIixoaDoiJWQgdGltbWFyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdhciIsTToiZW4gbVx4ZTVuYWQiLE1NOiIlZCBtXHhlNW5hZGVyIix5OiJldHQgXHhlNXIiLHl5OiIlZCBceGU1ciJ9LGRheU9mTW9udGhPcmRp'@; put 'bmFsUGFyc2U6L1xkezEsMn0oXDplfFw6YSkvLG9yZGluYWw6ZnVuY3Rpb24ocyl7dmFyIEE9cyUxMDtyZXR1cm4gcysoMT09fn4ocyUxMDAvMTApPyI6ZSI6MT09PUF8fDI9PT1BPyI6YSI6IjplIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDUzNDQ5KGZlLGosaCl7IWZ1'@; put 'bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgic3ciLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFjaGlfQXByaWxpX01laV9KdW5pX0p1bGFpX0Fnb3N0aV9TZXB0ZW1iYV9Pa3RvYmFfTm92ZW1iYV9EZXNlbWJhIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5f'@; put 'RmViX01hY19BcHJfTWVpX0p1bl9KdWxfQWdvX1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlzaV9JanVtYWFfSnVtYW1vc2kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiSnBsX0p0YXRfSm5u'@; put 'ZV9KdGFuX0FsaF9Jam1fSm1vcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiSjJfSjNfSjRfSjVfQWxfSWpfSjEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaGg6bW0gQSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQg'@; put 'TU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbGVvIHNhYV0gTFQiLG5leHREYXk6IltrZXNobyBzYWFdIExUIixuZXh0V2VlazoiW3dpa2kgaWpheW9dIGRkZGQgW3NhYXRdIExUIixs'@; put 'YXN0RGF5OiJbamFuYV0gTFQiLGxhc3RXZWVrOiJbd2lraSBpbGl5b3BpdGFdIGRkZGQgW3NhYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBiYWFkYXllIixwYXN0OiJ0b2tlYSAlcyIsczoiaGl2aSBwdW5kZSIsc3M6InNla3VuZGUgJWQiLG06ImRha2lr'@; put 'YSBtb2phIixtbToiZGFraWthICVkIixoOiJzYWEgbGltb2phIixoaDoibWFzYWEgJWQiLGQ6InNpa3UgbW9qYSIsZGQ6InNpa3UgJWQiLE06Im13ZXppIG1tb2phIixNTToibWllemkgJWQiLHk6Im13YWthIG1tb2phIix5eToibWlha2EgJWQifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oaCg5'@; put 'NzU4NikpfSw3MjY4OChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7dmFyIGM9ezE6Ilx1MGJlNyIsMjoiXHUwYmU4IiwzOiJcdTBiZTkiLDQ6Ilx1MGJlYSIsNToiXHUwYmViIiw2OiJcdTBiZWMiLDc6Ilx1MGJlZCIsODoiXHUwYmVlIiw5OiJcdTBiZWYiLDA6Ilx1MGJlNiJ9'@; put 'LHM9eyJcdTBiZTciOiIxIiwiXHUwYmU4IjoiMiIsIlx1MGJlOSI6IjMiLCJcdTBiZWEiOiI0IiwiXHUwYmViIjoiNSIsIlx1MGJlYyI6IjYiLCJcdTBiZWQiOiI3IiwiXHUwYmVlIjoiOCIsIlx1MGJlZiI6IjkiLCJcdTBiZTYiOiIwIn07eS5kZWZpbmVMb2NhbGUoInRhIix7bW9udGhzOiJc'@; put 'dTBiOWNcdTBiYTlcdTBiYjVcdTBiYjBcdTBiYmZfXHUwYmFhXHUwYmJmXHUwYmFhXHUwYmNkXHUwYmIwXHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhZVx1MGJiZVx1MGJiMFx1MGJjZFx1MGI5YVx1MGJjZF9cdTBiOGZcdTBiYWFcdTBiY2RcdTBiYjBcdTBiYjJcdTBiY2RfXHUwYmFlXHUwYmM3'@; put 'X1x1MGI5Y1x1MGJjMlx1MGJhOVx1MGJjZF9cdTBiOWNcdTBiYzJcdTBiYjJcdTBiYzhfXHUwYjg2XHUwYjk1XHUwYmI4XHUwYmNkXHUwYjlmXHUwYmNkX1x1MGI5YVx1MGJjNlx1MGJhYVx1MGJjZFx1MGI5Zlx1MGJjNlx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiODVcdTBi'@; put 'OTVcdTBiY2RcdTBiOWZcdTBiYzdcdTBiYmVcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYmE4XHUwYmI1XHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGI5Zlx1MGJiZlx1MGI5YVx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUw'@; put 'YjljXHUwYmE5XHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhYVx1MGJiZlx1MGJhYVx1MGJjZFx1MGJiMFx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWVcdTBiYmVcdTBiYjBcdTBiY2RcdTBiOWFcdTBiY2RfXHUwYjhmXHUwYmFhXHUwYmNkXHUwYmIwXHUwYmIyXHUwYmNkX1x1MGJhZVx1MGJjN19c'@; put 'dTBiOWNcdTBiYzJcdTBiYTlcdTBiY2RfXHUwYjljXHUwYmMyXHUwYmIyXHUwYmM4X1x1MGI4Nlx1MGI5NVx1MGJiOFx1MGJjZFx1MGI5Zlx1MGJjZF9cdTBiOWFcdTBiYzZcdTBiYWFcdTBiY2RcdTBiOWZcdTBiYzZcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYjg1XHUwYjk1'@; put 'XHUwYmNkXHUwYjlmXHUwYmM3XHUwYmJlXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGJhOFx1MGJiNVx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiOWZcdTBiYmZcdTBiOWFcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2QiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MGI5ZVx1'@; put 'MGJiZVx1MGJhZlx1MGJiZlx1MGJiMVx1MGJjZFx1MGJiMVx1MGJjMVx1MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiYTRcdTBiYmZcdTBiOTlcdTBiY2RcdTBiOTVcdTBiOWZcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYjlhXHUw'@; put 'YmM2XHUwYmI1XHUwYmNkXHUwYmI1XHUwYmJlXHUwYmFmXHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGJhYVx1MGJjMVx1MGJhNFx1MGJhOVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiYjVcdTBiYmZcdTBiYWZcdTBiYmVcdTBiYjRcdTBi'@; put 'OTVcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYmI1XHUwYmM2XHUwYmIzXHUwYmNkXHUwYmIzXHUwYmJmXHUwYjk1XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGI5YVx1MGJhOVx1MGJiZlx1MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJi'@; put 'NFx1MGJhZVx1MGJjOCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBiOWVcdTBiYmVcdTBiYWZcdTBiYmZcdTBiYjFcdTBiYzFfXHUwYmE0XHUwYmJmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmIzXHUwYmNkX1x1MGI5YVx1MGJjNlx1MGJiNVx1MGJjZFx1MGJiNVx1MGJiZVx1MGJhZlx1'@; put 'MGJjZF9cdTBiYWFcdTBiYzFcdTBiYTRcdTBiYTlcdTBiY2RfXHUwYmI1XHUwYmJmXHUwYmFmXHUwYmJlXHUwYmI0XHUwYmE5XHUwYmNkX1x1MGJiNVx1MGJjNlx1MGJiM1x1MGJjZFx1MGJiM1x1MGJiZl9cdTBiOWFcdTBiYTlcdTBiYmYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGI5'@; put 'ZVx1MGJiZV9cdTBiYTRcdTBiYmZfXHUwYjlhXHUwYmM2X1x1MGJhYVx1MGJjMV9cdTBiYjVcdTBiYmZfXHUwYmI1XHUwYmM2X1x1MGI5YSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVki'@; put 'LExMTDoiRCBNTU1NIFlZWVksIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGI4N1x1MGJhOVx1MGJjZFx1MGJiMVx1MGJjMV0gTFQiLG5leHREYXk6IltcdTBiYThcdTBiYmVcdTBiYjNcdTBiYzhdIExUIixuZXh0V2Vlazoi'@; put 'ZGRkZCwgTFQiLGxhc3REYXk6IltcdTBiYThcdTBiYzdcdTBiYjFcdTBiY2RcdTBiYjFcdTBiYzFdIExUIixsYXN0V2VlazoiW1x1MGI5NVx1MGI5Zlx1MGJhOFx1MGJjZFx1MGJhNCBcdTBiYjVcdTBiYmVcdTBiYjBcdTBiYWVcdTBiY2RdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0'@; put 'aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBiODdcdTBiYjJcdTBiY2QiLHBhc3Q6IiVzIFx1MGJhZVx1MGJjMVx1MGJhOVx1MGJjZCIsczoiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGI5YVx1MGJiZlx1MGJiMiBcdTBiYjVcdTBiYmZcdTBiYThcdTBiYmVcdTBiOWZcdTBiYmZcdTBiOTVcdTBiYjNc'@; put 'dTBiY2QiLHNzOiIlZCBcdTBiYjVcdTBiYmZcdTBiYThcdTBiYmVcdTBiOWZcdTBiYmZcdTBiOTVcdTBiYjNcdTBiY2QiLG06Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYThcdTBiYmZcdTBiYWVcdTBiYmZcdTBiOWZcdTBiYWVcdTBiY2QiLG1tOiIlZCBcdTBiYThcdTBiYmZcdTBiYWVcdTBi'@; put 'YmZcdTBiOWZcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2QiLGg6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYWVcdTBiYTNcdTBiYmYgXHUwYmE4XHUwYmM3XHUwYmIwXHUwYmFlXHUwYmNkIixoaDoiJWQgXHUwYmFlXHUwYmEzXHUwYmJmIFx1MGJhOFx1MGJjN1x1MGJiMFx1MGJhZVx1'@; put 'MGJjZCIsZDoiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJhOFx1MGJiZVx1MGJiM1x1MGJjZCIsZGQ6IiVkIFx1MGJhOFx1MGJiZVx1MGI5Zlx1MGJjZFx1MGI5NVx1MGJiM1x1MGJjZCIsTToiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJhZVx1MGJiZVx1MGJhNFx1MGJhZVx1MGJjZCIsTU06IiVk'@; put 'IFx1MGJhZVx1MGJiZVx1MGJhNFx1MGI5OVx1MGJjZFx1MGI5NVx1MGJiM1x1MGJjZCIseToiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJiNVx1MGJiMFx1MGJjMVx1MGI5Zlx1MGJhZVx1MGJjZCIseXk6IiVkIFx1MGI4Nlx1MGJhM1x1MGJjZFx1MGI5Zlx1MGJjMVx1MGI5NVx1MGJiM1x1MGJj'@; put 'ZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cdTBiYjVcdTBiYTRcdTBiYzEvLG9yZGluYWw6ZnVuY3Rpb24odil7cmV0dXJuIHYrIlx1MGJiNVx1MGJhNFx1MGJjMSJ9LHByZXBhcnNlOmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoL1tcdTBiZTdcdTBiZThcdTBiZTlc'@; put 'dTBiZWFcdTBiZWJcdTBiZWNcdTBiZWRcdTBiZWVcdTBiZWZcdTBiZTZdL2csZnVuY3Rpb24oQyl7cmV0dXJuIHNbQ119KX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEMpe3JldHVybiBjW0NdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGJh'@; put 'Zlx1MGJiZVx1MGJhZVx1MGJhZVx1MGJjZHxcdTBiYjVcdTBiYzhcdTBiOTVcdTBiYjFcdTBiYzh8XHUwYjk1XHUwYmJlXHUwYmIyXHUwYmM4fFx1MGJhOFx1MGJhM1x1MGJjZFx1MGJhYVx1MGI5NVx1MGJiMlx1MGJjZHxcdTBiOGVcdTBiYjFcdTBiY2RcdTBiYWFcdTBiYmVcdTBiOWZcdTBi'@; put 'YzF8XHUwYmFlXHUwYmJlXHUwYmIyXHUwYmM4LyxtZXJpZGllbTpmdW5jdGlvbih2LEMsdyl7cmV0dXJuIHY8Mj8iIFx1MGJhZlx1MGJiZVx1MGJhZVx1MGJhZVx1MGJjZCI6djw2PyIgXHUwYmI1XHUwYmM4XHUwYjk1XHUwYmIxXHUwYmM4Ijp2PDEwPyIgXHUwYjk1XHUwYmJlXHUwYmIyXHUw'@; put 'YmM4Ijp2PDE0PyIgXHUwYmE4XHUwYmEzXHUwYmNkXHUwYmFhXHUwYjk1XHUwYmIyXHUwYmNkIjp2PDE4PyIgXHUwYjhlXHUwYmIxXHUwYmNkXHUwYmFhXHUwYmJlXHUwYjlmXHUwYmMxIjp2PDIyPyIgXHUwYmFlXHUwYmJlXHUwYmIyXHUwYmM4IjoiIFx1MGJhZlx1MGJiZVx1MGJhZVx1MGJh'@; put 'ZVx1MGJjZCJ9LG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LEMpe3JldHVybiAxMj09PXYmJih2PTApLCJcdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2QiPT09Qz92PDI/djp2KzEyOiJcdTBiYjVcdTBiYzhcdTBiOTVcdTBiYjFcdTBiYzgiPT09Q3x8Ilx1MGI5NVx1MGJiZVx1MGJiMlx1'@; put 'MGJjOCI9PT1DfHwiXHUwYmE4XHUwYmEzXHUwYmNkXHUwYmFhXHUwYjk1XHUwYmIyXHUwYmNkIj09PUMmJnY+PTEwP3Y6disxMn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KGgoOTc1ODYpKX0sMzIwNjAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ0'@; put 'ZSIse21vbnRoczoiXHUwYzFjXHUwYzI4XHUwYzM1XHUwYzMwXHUwYzNmX1x1MGMyYlx1MGMzZlx1MGMyY1x1MGM0ZFx1MGMzMFx1MGMzNVx1MGMzMFx1MGMzZl9cdTBjMmVcdTBjM2VcdTBjMzBcdTBjNGRcdTBjMWFcdTBjM2ZfXHUwYzBmXHUwYzJhXHUwYzRkXHUwYzMwXHUwYzNmXHUwYzMy'@; put 'XHUwYzRkX1x1MGMyZVx1MGM0N19cdTBjMWNcdTBjNDJcdTBjMjhcdTBjNGRfXHUwYzFjXHUwYzQxXHUwYzMyXHUwYzQ4X1x1MGMwNlx1MGMxN1x1MGMzOFx1MGM0ZFx1MGMxZlx1MGM0MV9cdTBjMzhcdTBjNDZcdTBjMmFcdTBjNGRcdTBjMWZcdTBjNDZcdTBjMDJcdTBjMmNcdTBjMzBcdTBj'@; put 'NGRfXHUwYzA1XHUwYzE1XHUwYzRkXHUwYzFmXHUwYzRiXHUwYzJjXHUwYzMwXHUwYzRkX1x1MGMyOFx1MGMzNVx1MGMwMlx1MGMyY1x1MGMzMFx1MGM0ZF9cdTBjMjFcdTBjM2ZcdTBjMzhcdTBjNDZcdTBjMDJcdTBjMmNcdTBjMzBcdTBjNGQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1'@; put 'MGMxY1x1MGMyOC5fXHUwYzJiXHUwYzNmXHUwYzJjXHUwYzRkXHUwYzMwLl9cdTBjMmVcdTBjM2VcdTBjMzBcdTBjNGRcdTBjMWFcdTBjM2ZfXHUwYzBmXHUwYzJhXHUwYzRkXHUwYzMwXHUwYzNmLl9cdTBjMmVcdTBjNDdfXHUwYzFjXHUwYzQyXHUwYzI4XHUwYzRkX1x1MGMxY1x1MGM0MVx1'@; put 'MGMzMlx1MGM0OF9cdTBjMDZcdTBjMTcuX1x1MGMzOFx1MGM0Nlx1MGMyYVx1MGM0ZC5fXHUwYzA1XHUwYzE1XHUwYzRkXHUwYzFmXHUwYzRiLl9cdTBjMjhcdTBjMzUuX1x1MGMyMVx1MGMzZlx1MGMzOFx1MGM0Ni4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoi'@; put 'XHUwYzA2XHUwYzI2XHUwYzNmXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMzOFx1MGM0Ylx1MGMyZVx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMmVcdTBjMDJcdTBjMTdcdTBjMzNcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzJjXHUwYzQxXHUwYzI3XHUwYzM1XHUwYzNl'@; put 'XHUwYzMwXHUwYzAyX1x1MGMxN1x1MGM0MVx1MGMzMFx1MGM0MVx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMzZcdTBjNDFcdTBjMTVcdTBjNGRcdTBjMzBcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzM2XHUwYzI4XHUwYzNmXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyIi5zcGxp'@; put 'dCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGMwNlx1MGMyNlx1MGMzZl9cdTBjMzhcdTBjNGJcdTBjMmVfXHUwYzJlXHUwYzAyXHUwYzE3XHUwYzMzX1x1MGMyY1x1MGM0MVx1MGMyN19cdTBjMTdcdTBjNDFcdTBjMzBcdTBjNDFfXHUwYzM2XHUwYzQxXHUwYzE1XHUwYzRkXHUwYzMwX1x1MGMz'@; put 'Nlx1MGMyOFx1MGMzZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwYzA2X1x1MGMzOFx1MGM0Yl9cdTBjMmVcdTBjMDJfXHUwYzJjXHUwYzQxX1x1MGMxN1x1MGM0MV9cdTBjMzZcdTBjNDFfXHUwYzM2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEg'@; put 'aDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGMyOFx1MGM0N1x1MGMyMVx1MGM0MV0gTFQiLG5leHREYXk6IltcdTBj'@; put 'MzBcdTBjNDdcdTBjMmFcdTBjNDFdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBjMjhcdTBjM2ZcdTBjMjhcdTBjNGRcdTBjMjhdIExUIixsYXN0V2VlazoiW1x1MGMxN1x1MGMyNF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz'@; put 'IFx1MGMzMlx1MGM0YiIscGFzdDoiJXMgXHUwYzE1XHUwYzRkXHUwYzMwXHUwYzNmXHUwYzI0XHUwYzAyIixzOiJcdTBjMTVcdTBjNGFcdTBjMjhcdTBjNGRcdTBjMjhcdTBjM2YgXHUwYzE1XHUwYzRkXHUwYzM3XHUwYzIzXHUwYzNlXHUwYzMyXHUwYzQxIixzczoiJWQgXHUwYzM4XHUwYzQ2'@; put 'XHUwYzE1XHUwYzI4XHUwYzRkXHUwYzMyXHUwYzQxIixtOiJcdTBjMTJcdTBjMTUgXHUwYzI4XHUwYzNmXHUwYzJlXHUwYzNmXHUwYzM3XHUwYzAyIixtbToiJWQgXHUwYzI4XHUwYzNmXHUwYzJlXHUwYzNmXHUwYzM3XHUwYzNlXHUwYzMyXHUwYzQxIixoOiJcdTBjMTJcdTBjMTUgXHUwYzE3'@; put 'XHUwYzAyXHUwYzFmIixoaDoiJWQgXHUwYzE3XHUwYzAyXHUwYzFmXHUwYzMyXHUwYzQxIixkOiJcdTBjMTJcdTBjMTUgXHUwYzMwXHUwYzRiXHUwYzFjXHUwYzQxIixkZDoiJWQgXHUwYzMwXHUwYzRiXHUwYzFjXHUwYzQxXHUwYzMyXHUwYzQxIixNOiJcdTBjMTJcdTBjMTUgXHUwYzI4XHUw'@; put 'YzQ2XHUwYzMyIixNTToiJWQgXHUwYzI4XHUwYzQ2XHUwYzMyXHUwYzMyXHUwYzQxIix5OiJcdTBjMTJcdTBjMTUgXHUwYzM4XHUwYzAyXHUwYzM1XHUwYzI0XHUwYzRkXHUwYzM4XHUwYzMwXHUwYzAyIix5eToiJWQgXHUwYzM4XHUwYzAyXHUwYzM1XHUwYzI0XHUwYzRkXHUwYzM4XHUwYzMw'@; put 'XHUwYzNlXHUwYzMyXHUwYzQxIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1MGMzNS8sb3JkaW5hbDoiJWRcdTBjMzUiLG1lcmlkaWVtUGFyc2U6L1x1MGMzMFx1MGMzZVx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMzZnxcdTBjMDlcdTBjMjZcdTBjMmZcdTBjMDJ8XHUwYzJlXHUw'@; put 'YzI3XHUwYzRkXHUwYzJmXHUwYzNlXHUwYzM5XHUwYzRkXHUwYzI4XHUwYzAyfFx1MGMzOFx1MGMzZVx1MGMyZlx1MGMwMlx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMwMi8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHMsQSl7cmV0dXJuIDEyPT09cyYmKHM9MCksIlx1MGMzMFx1MGMzZVx1MGMyNFx1'@; put 'MGM0ZFx1MGMzMFx1MGMzZiI9PT1BP3M8ND9zOnMrMTI6Ilx1MGMwOVx1MGMyNlx1MGMyZlx1MGMwMiI9PT1BP3M6Ilx1MGMyZVx1MGMyN1x1MGM0ZFx1MGMyZlx1MGMzZVx1MGMzOVx1MGM0ZFx1MGMyOFx1MGMwMiI9PT1BP3M+PTEwP3M6cysxMjoiXHUwYzM4XHUwYzNlXHUwYzJmXHUwYzAy'@; put 'XHUwYzI0XHUwYzRkXHUwYzMwXHUwYzAyIj09PUE/cysxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1cm4gczw0PyJcdTBjMzBcdTBjM2VcdTBjMjRcdTBjNGRcdTBjMzBcdTBjM2YiOnM8MTA/Ilx1MGMwOVx1MGMyNlx1MGMyZlx1MGMwMiI6czwxNz8iXHUwYzJlXHUw'@; put 'YzI3XHUwYzRkXHUwYzJmXHUwYzNlXHUwYzM5XHUwYzRkXHUwYzI4XHUwYzAyIjpzPDIwPyJcdTBjMzhcdTBjM2VcdTBjMmZcdTBjMDJcdTBjMjRcdTBjNGRcdTBjMzBcdTBjMDIiOiJcdTBjMzBcdTBjM2VcdTBjMjRcdTBjNGRcdTBjMzBcdTBjM2YifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0o'@; put 'aCg5NzU4NikpfSw5MzI5MChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoInRldCIse21vbnRoczoiSmFuZWlydV9GZXZlcmVpcnVfTWFyc3VfQWJyaWxfTWFpdV9KdVx4ZjF1X0p1bGx1X0FndXN0dV9TZXRlbWJydV9PdXR1YnJ1X05vdmVtYnJ1X0Rl'@; put 'emVtYnJ1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0RleiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRG9taW5ndV9TZWd1bmRhX1RlcnNhX0t1YXJ0YV9LaW50YV9TZXN0YV9TYWJhZHUiLnNwbGl0KCJfIiksd2Vl'@; put 'a2RheXNTaG9ydDoiRG9tX1NlZ19UZXJzX0t1YV9LaW50X1Nlc3RfU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEb19TZWdfVGVfS3VfS2lfU2VzX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJE'@; put 'IE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW09oaW4gaWhhXSBMVCIsbmV4dERheToiW0FiYW4gaWhhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2loYV0gTFQiLGxhc3REYXk6IltIb3Jp'@; put 'c2VpayBpaGFdIExUIixsYXN0V2VlazoiZGRkZCBbc2VtYW5hIGtvdHVrXSBbaWhhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaWhhICVzIixwYXN0OiIlcyBsaXViYSIsczoic2VndW5kdSBiYWx1biIsc3M6InNlZ3VuZHUgJWQiLG06Im1pbnV0dSBpZGEiLG1t'@; put 'OiJtaW51dHUgJWQiLGg6Im9yYXMgaWRhIixoaDoib3JhcyAlZCIsZDoibG9yb24gaWRhIixkZDoibG9yb24gJWQiLE06ImZ1bGFuIGlkYSIsTU06ImZ1bGFuICVkIix5OiJ0aW5hbiBpZGEiLHl5OiJ0aW5hbiAlZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8'@; put 'dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHMpe3ZhciBBPXMlMTA7cmV0dXJuIHMrKDE9PX5+KHMlMTAwLzEwKT8idGgiOjE9PT1BPyJzdCI6Mj09PUE/Im5kIjozPT09QT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw4Mjk0KGZlLGosaCl7IWZ1bmN0aW9uKHkp'@; put 'eyJ1c2Ugc3RyaWN0Ijt2YXIgYz17MDoiLVx1MDQ0M1x1MDQzYyIsMToiLVx1MDQ0M1x1MDQzYyIsMjoiLVx1MDQ0ZVx1MDQzYyIsMzoiLVx1MDQ0ZVx1MDQzYyIsNDoiLVx1MDQ0M1x1MDQzYyIsNToiLVx1MDQ0M1x1MDQzYyIsNjoiLVx1MDQ0M1x1MDQzYyIsNzoiLVx1MDQ0M1x1MDQzYyIs'@; put 'ODoiLVx1MDQ0M1x1MDQzYyIsOToiLVx1MDQ0M1x1MDQzYyIsMTA6Ii1cdTA0NDNcdTA0M2MiLDEyOiItXHUwNDQzXHUwNDNjIiwxMzoiLVx1MDQ0M1x1MDQzYyIsMjA6Ii1cdTA0NDNcdTA0M2MiLDMwOiItXHUwNDRlXHUwNDNjIiw0MDoiLVx1MDQ0M1x1MDQzYyIsNTA6Ii1cdTA0NDNcdTA0'@; put 'M2MiLDYwOiItXHUwNDQzXHUwNDNjIiw3MDoiLVx1MDQ0M1x1MDQzYyIsODA6Ii1cdTA0NDNcdTA0M2MiLDkwOiItXHUwNDQzXHUwNDNjIiwxMDA6Ii1cdTA0NDNcdTA0M2MifTt5LmRlZmluZUxvY2FsZSgidGciLHttb250aHM6e2Zvcm1hdDoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUw'@; put 'NDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQzOF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzhfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQzOVx1MDQzOF9cdTA0MzhcdTA0NGVcdTA0M2Rc'@; put 'dTA0MzhfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzOF9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDM4'@; put 'X1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQz'@; put 'MFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFc'@; put 'dTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDAiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0'@; put 'OiJcdTA0NGZcdTA0M2RcdTA0MzJfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZF9cdTA0MzhcdTA0NGVcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQz'@; put 'NVx1MDQzZF9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNlXHUwNDRmX1x1MDQzNFx1MDQzNVx1MDQzYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDRmXHUwNDNhXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQzNFx1MDQ0M1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQz'@; put 'MVx1MDQzNV9cdTA0NDFcdTA0MzVcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzVfXHUwNDQ3XHUwNDNlXHUwNDQwXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQzZlx1MDQzMFx1MDQzZFx1MDRiN1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0YjdcdTA0'@; put 'NDNcdTA0M2NcdTA0NGFcdTA0MzBfXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQ0Zlx1MDQ0OFx1MDQzMV9cdTA0MzRcdTA0NDhcdTA0MzFfXHUwNDQxXHUwNDQ4XHUwNDMxX1x1MDQ0N1x1MDQ0OFx1MDQzMV9cdTA0M2ZcdTA0'@; put 'NDhcdTA0MzFfXHUwNGI3XHUwNDQzXHUwNDNjX1x1MDQ0OFx1MDQzZFx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDRmXHUwNDQ4X1x1MDQzNFx1MDQ0OF9cdTA0NDFcdTA0NDhfXHUwNDQ3XHUwNDQ4X1x1MDQzZlx1MDQ0OF9cdTA0YjdcdTA0M2NfXHUwNDQ4XHUwNDMxIi5z'@; put 'cGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQx'@; put 'OFx1MDQzY1x1MDQ0MFx1MDRlZlx1MDQzNyBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixuZXh0RGF5OiJbXHUwNDI0XHUwNDMwXHUwNDQwXHUwNDM0XHUwNDNlIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLGxhc3REYXk6IltcdTA0MTRcdTA0MzhcdTA0'@; put 'NDBcdTA0ZWZcdTA0MzcgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBMVCIsbmV4dFdlZWs6ImRkZGRbXHUwNDM4XSBbXHUwNGIzXHUwNDMwXHUwNDQ0XHUwNDQyXHUwNDMwXHUwNDM4IFx1MDQzZVx1MDQ0Zlx1MDQzZFx1MDQzNFx1MDQzMCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0'@; put 'NDJcdTA0MzhdIExUIixsYXN0V2VlazoiZGRkZFtcdTA0MzhdIFtcdTA0YjNcdTA0MzBcdTA0NDRcdTA0NDJcdTA0MzBcdTA0MzggXHUwNDMzXHUwNDQzXHUwNDM3XHUwNDMwXHUwNDQ4XHUwNDQyXHUwNDMwIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLHNhbWVFbHNlOiJM'@; put 'In0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzMVx1MDQzMFx1MDQ0YVx1MDQzNFx1MDQzOCAlcyIscGFzdDoiJXMgXHUwNDNmXHUwNDM1XHUwNDQ4IixzOiJcdTA0NGZcdTA0M2FcdTA0NDdcdTA0MzBcdTA0M2RcdTA0MzQgXHUwNDQxXHUwNDNlXHUwNDNkXHUwNDM4XHUwNDRmIixtOiJc'@; put 'dTA0NGZcdTA0M2EgXHUwNDM0XHUwNDMwXHUwNDliXHUwNDM4XHUwNDliXHUwNDMwIixtbToiJWQgXHUwNDM0XHUwNDMwXHUwNDliXHUwNDM4XHUwNDliXHUwNDMwIixoOiJcdTA0NGZcdTA0M2EgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDNlXHUwNDMwXHUw'@; put 'NDQyIixkOiJcdTA0NGZcdTA0M2EgXHUwNDQwXHUwNGVmXHUwNDM3IixkZDoiJWQgXHUwNDQwXHUwNGVmXHUwNDM3IixNOiJcdTA0NGZcdTA0M2EgXHUwNDNjXHUwNDNlXHUwNGIzIixNTToiJWQgXHUwNDNjXHUwNDNlXHUwNGIzIix5OiJcdTA0NGZcdTA0M2EgXHUwNDQxXHUwNDNlXHUwNDNi'@; put 'Iix5eToiJWQgXHUwNDQxXHUwNDNlXHUwNDNiIn0sbWVyaWRpZW1QYXJzZTovXHUwNDQ4XHUwNDMwXHUwNDMxfFx1MDQ0MVx1MDQ0M1x1MDQzMVx1MDRiM3xcdTA0NDBcdTA0ZWZcdTA0Mzd8XHUwNDMxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNGIzLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oQSx2'@; put 'KXtyZXR1cm4gMTI9PT1BJiYoQT0wKSwiXHUwNDQ4XHUwNDMwXHUwNDMxIj09PXY/QTw0P0E6QSsxMjoiXHUwNDQxXHUwNDQzXHUwNDMxXHUwNGIzIj09PXY/QToiXHUwNDQwXHUwNGVmXHUwNDM3Ij09PXY/QT49MTE/QTpBKzEyOiJcdTA0MzFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0YjMiPT09'@; put 'dj9BKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oQSx2LEMpe3JldHVybiBBPDQ/Ilx1MDQ0OFx1MDQzMFx1MDQzMSI6QTwxMT8iXHUwNDQxXHUwNDQzXHUwNDMxXHUwNGIzIjpBPDE2PyJcdTA0NDBcdTA0ZWZcdTA0MzciOkE8MTk/Ilx1MDQzMVx1MDQzNVx1MDQzM1x1MDQzZVx1MDRi'@; put 'MyI6Ilx1MDQ0OFx1MDQzMFx1MDQzMSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQ0M1x1MDQzY3xcdTA0NGVcdTA0M2MpLyxvcmRpbmFsOmZ1bmN0aW9uKEEpe3JldHVybiBBKyhjW0FdfHxjW0ElMTBdfHxjW0E+PTEwMD8xMDA6bnVsbF0pfSx3ZWVrOntkb3c6MSxk'@; put 'b3k6N319KX0oaCg5NzU4NikpfSwxMjMxKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgidGgiLHttb250aHM6Ilx1MGUyMVx1MGUwMVx1MGUyM1x1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMDFcdTBlMzhcdTBlMjFcdTBlMjBcdTBlMzJcdTBlMWVcdTBl'@; put 'MzFcdTBlMTlcdTBlMThcdTBlNGNfXHUwZTIxXHUwZTM1XHUwZTE5XHUwZTMyXHUwZTA0XHUwZTIxX1x1MGU0MFx1MGUyMVx1MGUyOVx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMWVcdTBlMjRcdTBlMjlcdTBlMjBcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTIxXHUwZTM0XHUwZTE2XHUwZTM4XHUw'@; put 'ZTE5XHUwZTMyXHUwZTIyXHUwZTE5X1x1MGUwMVx1MGUyM1x1MGUwMVx1MGUwZVx1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMmFcdTBlMzRcdTBlMDdcdTBlMmJcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTAxXHUwZTMxXHUwZTE5XHUwZTIyXHUwZTMyXHUwZTIyXHUwZTE5X1x1MGUxNVx1MGUzOFx1'@; put 'MGUyNVx1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMWVcdTBlMjRcdTBlMjhcdTBlMDhcdTBlMzRcdTBlMDFcdTBlMzJcdTBlMjJcdTBlMTlfXHUwZTE4XHUwZTMxXHUwZTE5XHUwZTI3XHUwZTMyXHUwZTA0XHUwZTIxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBlMjEuXHUwZTA0Ll9cdTBl'@; put 'MDEuXHUwZTFlLl9cdTBlMjFcdTBlMzUuXHUwZTA0Ll9cdTBlNDBcdTBlMjEuXHUwZTIyLl9cdTBlMWUuXHUwZTA0Ll9cdTBlMjFcdTBlMzQuXHUwZTIyLl9cdTBlMDEuXHUwZTA0Ll9cdTBlMmEuXHUwZTA0Ll9cdTBlMDEuXHUwZTIyLl9cdTBlMTUuXHUwZTA0Ll9cdTBlMWUuXHUwZTIyLl9c'@; put 'dTBlMTguXHUwZTA0LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBlMmRcdTBlMzJcdTBlMTdcdTBlMzRcdTBlMTVcdTBlMjJcdTBlNGNfXHUwZTA4XHUwZTMxXHUwZTE5XHUwZTE3XHUwZTIzXHUwZTRjX1x1MGUyZFx1MGUzMVx1MGUwN1x1MGUwNFx1MGUz'@; put 'Mlx1MGUyM19cdTBlMWVcdTBlMzhcdTBlMThfXHUwZTFlXHUwZTI0XHUwZTJiXHUwZTMxXHUwZTJhXHUwZTFhXHUwZTE0XHUwZTM1X1x1MGUyOFx1MGUzOFx1MGUwMVx1MGUyM1x1MGU0Y19cdTBlNDBcdTBlMmFcdTBlMzJcdTBlMjNcdTBlNGMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi'@; put 'XHUwZTJkXHUwZTMyXHUwZTE3XHUwZTM0XHUwZTE1XHUwZTIyXHUwZTRjX1x1MGUwOFx1MGUzMVx1MGUxOVx1MGUxN1x1MGUyM1x1MGU0Y19cdTBlMmRcdTBlMzFcdTBlMDdcdTBlMDRcdTBlMzJcdTBlMjNfXHUwZTFlXHUwZTM4XHUwZTE4X1x1MGUxZVx1MGUyNFx1MGUyYlx1MGUzMVx1MGUy'@; put 'YV9cdTBlMjhcdTBlMzhcdTBlMDFcdTBlMjNcdTBlNGNfXHUwZTQwXHUwZTJhXHUwZTMyXHUwZTIzXHUwZTRjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBlMmRcdTBlMzIuX1x1MGUwOC5fXHUwZTJkLl9cdTBlMWUuX1x1MGUxZVx1MGUyNC5fXHUwZTI4Ll9cdTBlMmEuIi5zcGxpdCgi'@; put 'XyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMiBIOm1tIixMTExMOiJcdTBlMjdcdTBlMzFc'@; put 'dTBlMTlkZGRkXHUwZTE3XHUwZTM1XHUwZTQ4IEQgTU1NTSBZWVlZIFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMiBIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwZTAxXHUwZTQ4XHUwZTJkXHUwZTE5XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3fFx1MGUyYlx1MGUyNVx1MGUz'@; put 'MVx1MGUwN1x1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwNy8saXNQTTpmdW5jdGlvbihzKXtyZXR1cm4iXHUwZTJiXHUwZTI1XHUwZTMxXHUwZTA3XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3Ij09PXN9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXtyZXR1'@; put 'cm4gczwxMj8iXHUwZTAxXHUwZTQ4XHUwZTJkXHUwZTE5XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3IjoiXHUwZTJiXHUwZTI1XHUwZTMxXHUwZTA3XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBlMjdcdTBl'@; put 'MzFcdTBlMTlcdTBlMTlcdTBlMzVcdTBlNDkgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsbmV4dERheToiW1x1MGUxZVx1MGUyM1x1MGUzOFx1MGU0OFx1MGUwN1x1MGUxOVx1MGUzNVx1MGU0OSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixuZXh0V2VlazoiZGRkZFtcdTBl'@; put 'MmJcdTBlMTlcdTBlNDlcdTBlMzIgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsbGFzdERheToiW1x1MGU0MFx1MGUyMVx1MGUzN1x1MGU0OFx1MGUyZFx1MGUyN1x1MGUzMlx1MGUxOVx1MGUxOVx1MGUzNVx1MGU0OSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixsYXN0V2Vl'@; put 'azoiW1x1MGUyN1x1MGUzMVx1MGUxOV1kZGRkW1x1MGUxN1x1MGUzNVx1MGU0OFx1MGU0MVx1MGUyNVx1MGU0OVx1MGUyNyBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTBlMmRcdTBlMzVcdTBlMDEgJXMiLHBhc3Q6'@; put 'IiVzXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTQxXHUwZTI1XHUwZTQ5XHUwZTI3IixzOiJcdTBlNDRcdTBlMjFcdTBlNDhcdTBlMDFcdTBlMzVcdTBlNDhcdTBlMjdcdTBlMzRcdTBlMTlcdTBlMzJcdTBlMTdcdTBlMzUiLHNzOiIlZCBcdTBlMjdcdTBlMzRcdTBlMTlcdTBlMzJcdTBlMTdcdTBl'@; put 'MzUiLG06IjEgXHUwZTE5XHUwZTMyXHUwZTE3XHUwZTM1IixtbToiJWQgXHUwZTE5XHUwZTMyXHUwZTE3XHUwZTM1IixoOiIxIFx1MGUwYVx1MGUzMVx1MGU0OFx1MGUyN1x1MGU0Mlx1MGUyMVx1MGUwNyIsaGg6IiVkIFx1MGUwYVx1MGUzMVx1MGU0OFx1MGUyN1x1MGU0Mlx1MGUyMVx1MGUw'@; put 'NyIsZDoiMSBcdTBlMjdcdTBlMzFcdTBlMTkiLGRkOiIlZCBcdTBlMjdcdTBlMzFcdTBlMTkiLHc6IjEgXHUwZTJhXHUwZTMxXHUwZTFiXHUwZTE0XHUwZTMyXHUwZTJiXHUwZTRjIix3dzoiJWQgXHUwZTJhXHUwZTMxXHUwZTFiXHUwZTE0XHUwZTMyXHUwZTJiXHUwZTRjIixNOiIxIFx1MGU0'@; put 'MFx1MGUxNFx1MGUzN1x1MGUyZFx1MGUxOSIsTU06IiVkIFx1MGU0MFx1MGUxNFx1MGUzN1x1MGUyZFx1MGUxOSIseToiMSBcdTBlMWJcdTBlMzUiLHl5OiIlZCBcdTBlMWJcdTBlMzUifX0pfShoKDk3NTg2KSl9LDM3NDYoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBj'@; put 'PXsxOiInaW5qaSIsNToiJ2luamkiLDg6IidpbmppIiw3MDoiJ2luamkiLDgwOiInaW5qaSIsMjoiJ25qaSIsNzoiJ25qaSIsMjA6IiduamkiLDUwOiInbmppIiwzOiInXHhmY25qaSIsNDoiJ1x4ZmNuamkiLDEwMDoiJ1x4ZmNuamkiLDY6IiduankiLDk6Iid1bmp5IiwxMDoiJ3VuankiLDMw'@; put 'OiIndW5qeSIsNjA6Iid5bmp5Iiw5MDoiJ3luankifTt5LmRlZmluZUxvY2FsZSgidGsiLHttb250aHM6Ilx4ZGRhbndhcl9GZXdyYWxfTWFydF9BcHJlbF9NYVx4ZmRfSVx4ZmR1bl9JXHhmZHVsX0F3Z3VzdF9TZW50XHhmZGFicl9Pa3RceGZkYWJyX05vXHhmZGFicl9EZWthYnIiLnNwbGl0'@; put 'KCJfIiksbW9udGhzU2hvcnQ6Ilx4ZGRhbl9GZXdfTWFyX0Fwcl9NYVx4ZmRfSVx4ZmRuX0lceGZkbF9Bd2dfU2VuX09rdF9Ob1x4ZmRfRGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJceGRkZWtcdTAxNWZlbmJlX0R1XHUwMTVmZW5iZV9TaVx1MDE1ZmVuYmVfXHhjN2FyXHUwMTVmZW5iZV9Q'@; put 'ZW5cdTAxNWZlbmJlX0FubmFfXHUwMTVlZW5iZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJceGRkZWtfRHVcdTAxNWZfU2lcdTAxNWZfXHhjN2FyX1Blbl9Bbm5fXHUwMTVlZW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx4ZGRrX0RcdTAxNWZfU1x1MDE1Zl9ceGM3cl9Qbl9Bbl9c'@; put 'dTAxNWVuIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh'@; put 'eToiW2J1Z1x4ZmNuIHNhZ2F0XSBMVCIsbmV4dERheToiW2VydGlyIHNhZ2F0XSBMVCIsbmV4dFdlZWs6IltpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCIsbGFzdERheToiW2RceGZjXHhmZG5dIExUIixsYXN0V2VlazoiW2dlXHhlN2VuXSBkZGRkIFtzYWdhdF0gTFQiLHNhbWVFbHNlOiJMIn0s'@; put 'cmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvXHUwMTQ4IixwYXN0OiIlcyBceGY2XHUwMTQ4IixzOiJiaXJuXHhlNFx4ZTdlIHNla3VudCIsbToiYmlyIG1pbnV0IixtbToiJWQgbWludXQiLGg6ImJpciBzYWdhdCIsaGg6IiVkIHNhZ2F0IixkOiJiaXIgZ1x4ZmNuIixkZDoiJWQgZ1x4ZmNu'@; put 'IixNOiJiaXIgYVx4ZmQiLE1NOiIlZCBhXHhmZCIseToiYmlyIFx4ZmR5bCIseXk6IiVkIFx4ZmR5bCJ9LG9yZGluYWw6ZnVuY3Rpb24oQSx2KXtzd2l0Y2godil7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiRG8iOmNhc2UiREQiOnJldHVybiBBO2RlZmF1bHQ6aWYoMD09PUEpcmV0dXJuIEErIid1'@; put 'bmp5Ijt2YXIgQz1BJTEwO3JldHVybiBBKyhjW0NdfHxjW0ElMTAwLUNdfHxjW0E+PTEwMD8xMDA6bnVsbF0pfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sNDkwNDAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ0bC1waCIse21v'@; put 'bnRoczoiRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJFbmVfUGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0Rp'@; put 'cyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikxpbl9MdW5fTWFyX01peV9IdXdfQml5X1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTGlfTHVf'@; put 'TWFfTWlfSHVfQmlfU2FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6Ik1NL0QvWVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0ifSxjYWxl'@; put 'bmRhcjp7c2FtZURheToiTFQgW25nYXlvbmcgYXJhd10iLG5leHREYXk6IltCdWthcyBuZ10gTFQiLG5leHRXZWVrOiJMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCIsbGFzdERheToiTFQgW2thaGFwb25dIixsYXN0V2VlazoiTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCIsc2FtZUVsc2U6Ikwi'@; put 'fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToic2EgbG9vYiBuZyAlcyIscGFzdDoiJXMgYW5nIG5ha2FsaXBhcyIsczoiaWxhbmcgc2VndW5kbyIsc3M6IiVkIHNlZ3VuZG8iLG06ImlzYW5nIG1pbnV0byIsbW06IiVkIG1pbnV0byIsaDoiaXNhbmcgb3JhcyIsaGg6IiVkIG9yYXMiLGQ6ImlzYW5n'@; put 'IGFyYXciLGRkOiIlZCBhcmF3IixNOiJpc2FuZyBidXdhbiIsTU06IiVkIGJ1d2FuIix5OiJpc2FuZyB0YW9uIix5eToiJWQgdGFvbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6ZnVuY3Rpb24ocyl7cmV0dXJuIHN9LHdlZWs6e2RvdzoxLGRveTo0fX0pfSho'@; put 'KDk3NTg2KSl9LDE3MTg3KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz0icGFnaF93YVx1MjAxOV9jaGFcdTIwMTlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQiLnNwbGl0KCJfIik7ZnVuY3Rpb24gdihTLEwsUix4KXt2YXIgVT1mdW5jdGlvbiBDKFMp'@; put 'e3ZhciBMPU1hdGguZmxvb3IoUyUxZTMvMTAwKSxSPU1hdGguZmxvb3IoUyUxMDAvMTApLHg9UyUxMCxVPSIiO3JldHVybiBMPjAmJihVKz1jW0xdKyJ2YXRsaCIpLFI+MCYmKFUrPSgiIiE9PVU/IiAiOiIiKStjW1JdKyJtYUgiKSx4PjAmJihVKz0oIiIhPT1VPyIgIjoiIikrY1t4XSksIiI9'@; put 'PT1VPyJwYWdoIjpVfShTKTtzd2l0Y2goUil7Y2FzZSJzcyI6cmV0dXJuIFUrIiBsdXAiO2Nhc2UibW0iOnJldHVybiBVKyIgdHVwIjtjYXNlImhoIjpyZXR1cm4gVSsiIHJlcCI7Y2FzZSJkZCI6cmV0dXJuIFUrIiBqYWoiO2Nhc2UiTU0iOnJldHVybiBVKyIgamFyIjtjYXNlInl5IjpyZXR1'@; put 'cm4gVSsiIERJUyJ9fXkuZGVmaW5lTG9jYWxlKCJ0bGgiLHttb250aHM6InRlcmFcdTIwMTkgamFyIHdhXHUyMDE5X3RlcmFcdTIwMTkgamFyIGNoYVx1MjAxOV90ZXJhXHUyMDE5IGphciB3ZWpfdGVyYVx1MjAxOSBqYXIgbG9TX3RlcmFcdTIwMTkgamFyIHZhZ2hfdGVyYVx1MjAxOSBqYXIg'@; put 'amF2X3RlcmFcdTIwMTkgamFyIFNvY2hfdGVyYVx1MjAxOSBqYXIgY2hvcmdoX3RlcmFcdTIwMTkgamFyIEh1dF90ZXJhXHUyMDE5IGphciB3YVx1MjAxOW1hSF90ZXJhXHUyMDE5IGphciB3YVx1MjAxOW1hSCB3YVx1MjAxOV90ZXJhXHUyMDE5IGphciB3YVx1MjAxOW1hSCBjaGFcdTIwMTki'@; put 'LnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphciB3YVx1MjAxOV9qYXIgY2hhXHUyMDE5X2phciB3ZWpfamFyIGxvU19qYXIgdmFnaF9qYXIgamF2X2phciBTb2NoX2phciBjaG9yZ2hfamFyIEh1dF9qYXIgd2FcdTIwMTltYUhfamFyIHdhXHUyMDE5bWFIIHdhXHUyMDE5X2phciB3YVx1MjAx'@; put 'OW1hSCBjaGFcdTIwMTkiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpf'@; put 'Z2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Imxvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06'@; put 'c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0RhSGphal0gTFQiLG5leHREYXk6Ilt3YVx1MjAxOWxlU10gTFQiLG5leHRXZWVrOiJMTEwi'@; put 'LGxhc3REYXk6Ilt3YVx1MjAxOUh1XHUyMDE5XSBMVCIsbGFzdFdlZWs6IkxMTCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbiBzKFMpe3ZhciBMPVM7cmV0dXJuLTEhPT1TLmluZGV4T2YoImphaiIpP0wuc2xpY2UoMCwtMykrImxlUyI6LTEhPT1TLmluZGV4'@; put 'T2YoImphciIpP0wuc2xpY2UoMCwtMykrIndhUSI6LTEhPT1TLmluZGV4T2YoIkRJUyIpP0wuc2xpY2UoMCwtMykrIm5lbSI6TCsiIHBJcSJ9LHBhc3Q6ZnVuY3Rpb24gQShTKXt2YXIgTD1TO3JldHVybi0xIT09Uy5pbmRleE9mKCJqYWoiKT9MLnNsaWNlKDAsLTMpKyJIdVx1MjAxOSI6LTEh'@; put 'PT1TLmluZGV4T2YoImphciIpP0wuc2xpY2UoMCwtMykrIndlbiI6LTEhPT1TLmluZGV4T2YoIkRJUyIpP0wuc2xpY2UoMCwtMykrImJlbiI6TCsiIHJldCJ9LHM6InB1UyBsdXAiLHNzOnYsbToid2FcdTIwMTkgdHVwIixtbTp2LGg6IndhXHUyMDE5IHJlcCIsaGg6dixkOiJ3YVx1MjAxOSBq'@; put 'YWoiLGRkOnYsTToid2FcdTIwMTkgamFyIixNTTp2LHk6IndhXHUyMDE5IERJUyIseXk6dn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDYwMTUzKGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgYz17MToiJ2luY2kiLDU6IidpbmNpIiw4OiInaW5jaSIsNzA6IidpbmNpIiw4MDoiJ2luY2kiLDI6IiduY2kiLDc6IiduY2kiLDIwOiInbmNpIiw1MDoiJ25jaSIsMzoiJ1x4ZmNuY1x4ZmMiLDQ6IidceGZjbmNceGZjIiwxMDA6IidceGZjbmNceGZjIiw2OiInbmNc'@; put 'dTAxMzEiLDk6Iid1bmN1IiwxMDoiJ3VuY3UiLDMwOiIndW5jdSIsNjA6IidcdTAxMzFuY1x1MDEzMSIsOTA6IidcdTAxMzFuY1x1MDEzMSJ9O3kuZGVmaW5lTG9jYWxlKCJ0ciIse21vbnRoczoiT2Nha19cdTAxNWV1YmF0X01hcnRfTmlzYW5fTWF5XHUwMTMxc19IYXppcmFuX1RlbW11el9B'@; put 'XHUwMTFmdXN0b3NfRXlsXHhmY2xfRWtpbV9LYXNcdTAxMzFtX0FyYWxcdTAxMzFrIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJPY2FfXHUwMTVldWJfTWFyX05pc19NYXlfSGF6X1RlbV9BXHUwMTFmdV9FeWxfRWtpX0thc19BcmEiLnNwbGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFy'@; put 'dGVzaV9TYWxcdTAxMzFfXHhjN2FyXHUwMTVmYW1iYV9QZXJcdTAxNWZlbWJlX0N1bWFfQ3VtYXJ0ZXNpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBhel9QenRfU2FsX1x4Yzdhcl9QZXJfQ3VtX0NtdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiUHpfUHRfU2FfXHhjN2FfUGVfQ3Vf'@; put 'Q3QiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oQSx2LEMpe3JldHVybiBBPDEyP0M/Ilx4ZjZceGY2IjoiXHhkNlx4ZDYiOkM/Ilx4ZjZzIjoiXHhkNlMifSxtZXJpZGllbVBhcnNlOi9ceGY2XHhmNnxceGQ2XHhkNnxceGY2c3xceGQ2Uy8saXNQTTpmdW5jdGlvbihBKXtyZXR1cm4i'@; put 'XHhmNnMiPT09QXx8Ilx4ZDZTIj09PUF9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7'@; put 'c2FtZURheToiW2J1Z1x4ZmNuIHNhYXRdIExUIixuZXh0RGF5OiJbeWFyXHUwMTMxbiBzYWF0XSBMVCIsbmV4dFdlZWs6IltnZWxlY2VrXSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2RceGZjbl0gTFQiLGxhc3RXZWVrOiJbZ2VceGU3ZW5dIGRkZGQgW3NhYXRdIExUIixzYW1lRWxzZToi'@; put 'TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBzb25yYSIscGFzdDoiJXMgXHhmNm5jZSIsczoiYmlya2FceGU3IHNhbml5ZSIsc3M6IiVkIHNhbml5ZSIsbToiYmlyIGRha2lrYSIsbW06IiVkIGRha2lrYSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIgZ1x4ZmNuIixkZDoi'@; put 'JWQgZ1x4ZmNuIix3OiJiaXIgaGFmdGEiLHd3OiIlZCBoYWZ0YSIsTToiYmlyIGF5IixNTToiJWQgYXkiLHk6ImJpciB5XHUwMTMxbCIseXk6IiVkIHlcdTAxMzFsIn0sb3JkaW5hbDpmdW5jdGlvbihBLHYpe3N3aXRjaCh2KXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEbyI6Y2FzZSJERCI6cmV0'@; put 'dXJuIEE7ZGVmYXVsdDppZigwPT09QSlyZXR1cm4gQSsiJ1x1MDEzMW5jXHUwMTMxIjt2YXIgQz1BJTEwO3JldHVybiBBKyhjW0NdfHxjW0ElMTAwLUNdfHxjW0E+PTEwMD8xMDA6bnVsbF0pfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sODg1MjEoZmUsaixoKXshZnVuY3Rp'@; put 'b24oeSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHMoQSx2LEMsdyl7dmFyIFM9e3M6WyJ2aWVuc2FzIHNlY3VuZHMiLCInaWVuc2FzIHNlY3VuZHMiXSxzczpbQSsiIHNlY3VuZHMiLEErIiBzZWN1bmRzIl0sbTpbIiduIG1ceGVkdXQiLCInaWVucyBtXHhlZHV0Il0sbW06W0ErIiBtXHhlZHV0'@; put 'cyIsQSsiIG1ceGVkdXRzIl0saDpbIiduIFx4ZmVvcmEiLCInaWVuc2EgXHhmZW9yYSJdLGhoOltBKyIgXHhmZW9yYXMiLEErIiBceGZlb3JhcyJdLGQ6WyInbiB6aXVhIiwiJ2llbnNhIHppdWEiXSxkZDpbQSsiIHppdWFzIixBKyIgeml1YXMiXSxNOlsiJ24gbWVzIiwiJ2llbnMgbWVzIl0s'@; put 'TU06W0ErIiBtZXNlbiIsQSsiIG1lc2VuIl0seTpbIiduIGFyIiwiJ2llbnMgYXIiXSx5eTpbQSsiIGFycyIsQSsiIGFycyJdfTtyZXR1cm4gd3x8dj9TW0NdWzBdOlNbQ11bMV19eS5kZWZpbmVMb2NhbGUoInR6bCIse21vbnRoczoiSmFudWFyX0ZldnJhZ2xoX01hclx4ZTdfQXZyXHhlZnVf'@; put 'TWFpX0dceGZjbl9KdWxpYV9HdXNjaHRfU2V0ZW12YXJfTGlzdG9wXHhlNHRzX05vZW12YXJfWmVjZW12YXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZXZfTWFyX0F2cl9NYWlfR1x4ZmNuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTXHhm'@; put 'YWxhZGlfTFx4ZmFuZVx4ZTdpX01haXR6aV9NXHhlMXJjdXJpX1hoXHhmYWFkaV9WaVx4ZTluZXJceGU3aV9TXHhlMXR1cmkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU1x4ZmFsX0xceGZhbl9NYWlfTVx4ZTFyX1hoXHhmYV9WaVx4ZTlfU1x4ZTF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlz'@; put 'TWluOiJTXHhmYV9MXHhmYV9NYV9NXHhlMV9YaF9WaV9TXHhlMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBbZGFsbGFzXSBZWVlZIixMTEw6IkQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5t'@; put 'bSIsTExMTDoiZGRkZCwgW2xpXSBELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0ifSxtZXJpZGllbVBhcnNlOi9kXCdvfGRcJ2EvaSxpc1BNOmZ1bmN0aW9uKEEpe3JldHVybiJkJ28iPT09QS50b0xvd2VyQ2FzZSgpfSxtZXJpZGllbTpmdW5jdGlvbihBLHYsQyl7cmV0dXJuIEE+MTE/Qz8i'@; put 'ZCdvIjoiRCdPIjpDPyJkJ2EiOiJEJ0EifSxjYWxlbmRhcjp7c2FtZURheToiW294aGkgXHhlMF0gTFQiLG5leHREYXk6IltkZW1ceGUwIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltpZWlyaSBceGUwXSBMVCIsbGFzdFdlZWs6IltzXHhmY3IgZWxdIGRk'@; put 'ZGQgW2xhc3RldSBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3NwcmVpICVzIixwYXN0OiJqYSVzIixzLHNzOnMsbTpzLG1tOnMsaDpzLGhoOnMsZDpzLGRkOnMsTTpzLE1NOnMseTpzLHl5OnN9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1c'@; put 'Li8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSwyMjIzNChmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoInR6bS1sYXRuIix7bW9udGhzOiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJl'@; put 'NF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9kd2puYmlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9t'@; put 'YXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9kd2puYmlyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNpXHUxZTBkeWFzIi5zcGxpdCgi'@; put 'XyIpLHdlZWtkYXlzU2hvcnQ6ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksbG9u'@; put 'Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilthc2RraCBnXSBMVCIsbmV4dERh'@; put 'eToiW2Fza2EgZ10gTFQiLG5leHRXZWVrOiJkZGRkIFtnXSBMVCIsbGFzdERheToiW2Fzc2FudCBnXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2ddIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWRraCBzIHlhbiAlcyIscGFzdDoieWFuICVzIixzOiJpbWlrIixzczoi'@; put 'JWQgaW1payIsbToibWludVx1MWUwZCIsbW06IiVkIG1pbnVcdTFlMGQiLGg6InNhXHUwMjViYSIsaGg6IiVkIHRhc3NhXHUwMjViaW4iLGQ6ImFzcyIsZGQ6IiVkIG9zc2FuIixNOiJheW93ciIsTU06IiVkIGl5eWlybiIseToiYXNnYXMiLHl5OiIlZCBpc2dhc24ifSx3ZWVrOntkb3c6Nixk'@; put 'b3k6MTJ9fSl9KGgoOTc1ODYpKX0sMTgwMTAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ0em0iLHttb250aHM6Ilx1MmQ0OVx1MmQ0Zlx1MmQ0Zlx1MmQzMFx1MmQ2Mlx1MmQ1NF9cdTJkMzFcdTJkNTVcdTJkMzBcdTJkNjJcdTJkNTVfXHUyZDRl'@; put 'XHUyZDMwXHUyZDU1XHUyZDVhX1x1MmQ0OVx1MmQzMVx1MmQ1NFx1MmQ0OVx1MmQ1NF9cdTJkNGVcdTJkMzBcdTJkNjJcdTJkNjJcdTJkNTNfXHUyZDYyXHUyZDUzXHUyZDRmXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0ZFx1MmQ2Mlx1MmQ1M1x1MmQ2M19cdTJkNTZcdTJkNTNcdTJk'@; put 'NWJcdTJkNWNfXHUyZDViXHUyZDUzXHUyZDVjXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzZFx1MmQ1Zlx1MmQ1M1x1MmQzMVx1MmQ1NV9cdTJkNGZcdTJkNTNcdTJkNjFcdTJkMzBcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTRfXHUyZDM3XHUyZDUzXHUyZDRhXHUyZDRmXHUy'@; put 'ZDMxXHUyZDQ5XHUyZDU0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTJkNDlcdTJkNGZcdTJkNGZcdTJkMzBcdTJkNjJcdTJkNTRfXHUyZDMxXHUyZDU1XHUyZDMwXHUyZDYyXHUyZDU1X1x1MmQ0ZVx1MmQzMFx1MmQ1NVx1MmQ1YV9cdTJkNDlcdTJkMzFcdTJkNTRcdTJkNDlcdTJkNTRf'@; put 'XHUyZDRlXHUyZDMwXHUyZDYyXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0Zlx1MmQ2Mlx1MmQ1M19cdTJkNjJcdTJkNTNcdTJkNGRcdTJkNjJcdTJkNTNcdTJkNjNfXHUyZDU2XHUyZDUzXHUyZDViXHUyZDVjX1x1MmQ1Ylx1MmQ1M1x1MmQ1Y1x1MmQzMFx1MmQ0Zlx1MmQzMVx1MmQ0'@; put 'OVx1MmQ1NF9cdTJkM2RcdTJkNWZcdTJkNTNcdTJkMzFcdTJkNTVfXHUyZDRmXHUyZDUzXHUyZDYxXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzN1x1MmQ1M1x1MmQ0YVx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUyZDMwXHUyZDU5'@; put 'XHUyZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJk'@; put 'NTlcdTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MmQzMFx1MmQ1OVx1MmQzMFx1MmQ0ZVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNjJcdTJkNGZcdTJkMzBc'@; put 'dTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRmXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ1NFx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkM2RcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRlXHUyZDYxXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0'@; put 'OVx1MmQzOVx1MmQ2Mlx1MmQzMFx1MmQ1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUyZDMwXHUyZDU5XHUyZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUy'@; put 'ZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0'@; put 'OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUyZDMwXHUyZDU5XHUyZDM3XHUyZDQ1IFx1MmQz'@; put 'NF0gTFQiLG5leHREYXk6IltcdTJkMzBcdTJkNTlcdTJkM2RcdTJkMzAgXHUyZDM0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MmQzNF0gTFQiLGxhc3REYXk6IltcdTJkMzBcdTJkNWFcdTJkMzBcdTJkNGZcdTJkNWMgXHUyZDM0XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MmQzNF0gTFQiLHNh'@; put 'bWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MmQzN1x1MmQzMFx1MmQzN1x1MmQ0NSBcdTJkNTkgXHUyZDYyXHUyZDMwXHUyZDRmICVzIixwYXN0OiJcdTJkNjJcdTJkMzBcdTJkNGYgJXMiLHM6Ilx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsc3M6IiVkIFx1MmQ0OVx1MmQ0'@; put 'ZVx1MmQ0OVx1MmQzZCIsbToiXHUyZDRlXHUyZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixtbToiJWQgXHUyZDRlXHUyZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixoOiJcdTJkNTlcdTJkMzBcdTJkNDRcdTJkMzAiLGhoOiIlZCBcdTJkNWNcdTJkMzBcdTJkNTlcdTJkNTlcdTJkMzBcdTJkNDRcdTJk'@; put 'NDlcdTJkNGYiLGQ6Ilx1MmQzMFx1MmQ1OVx1MmQ1OSIsZGQ6IiVkIG9cdTJkNTlcdTJkNTlcdTJkMzBcdTJkNGYiLE06Ilx1MmQzMFx1MmQ2Mm9cdTJkNTNcdTJkNTQiLE1NOiIlZCBcdTJkNDlcdTJkNjJcdTJkNjJcdTJkNDlcdTJkNTRcdTJkNGYiLHk6Ilx1MmQzMFx1MmQ1OVx1MmQzM1x1'@; put 'MmQzMFx1MmQ1OSIseXk6IiVkIFx1MmQ0OVx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OVx1MmQ0ZiJ9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oaCg5NzU4NikpfSw2MzM0OShmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoInVnLWNuIix7bW9udGhzOiJc'@; put 'dTA2NGFcdTA2MjdcdTA2NDZcdTA2Y2JcdTA2MjdcdTA2MzFfXHUwNjQxXHUwNmQwXHUwNmNiXHUwNjMxXHUwNjI3XHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYyYV9cdTA2MjZcdTA2MjdcdTA2N2VcdTA2MzFcdTA2ZDBcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyNlx1MDY0'@; put 'OVx1MDY0YVx1MDZjN1x1MDY0Nl9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDRfXHUwNjI2XHUwNjI3XHUwNmNiXHUwNjNhXHUwNmM3XHUwNjMzXHUwNjJhX1x1MDYzM1x1MDZkMFx1MDY0Nlx1MDYyYVx1MDZkNVx1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MjZcdTA2YzZcdTA2NDNcdTA2'@; put 'MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjRhXHUwNjI3XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDYyZlx1MDZkMFx1MDY0M1x1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjI3XHUwNjQ2XHUwNmNiXHUw'@; put 'NjI3XHUwNjMxX1x1MDY0MVx1MDZkMFx1MDZjYlx1MDYzMVx1MDYyN1x1MDY0NF9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MmFfXHUwNjI2XHUwNjI3XHUwNjdlXHUwNjMxXHUwNmQwXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDZfXHUwNjI2'@; put 'XHUwNjQ5XHUwNjRhXHUwNmM3XHUwNjQ0X1x1MDYyNlx1MDYyN1x1MDZjYlx1MDYzYVx1MDZjN1x1MDYzM1x1MDYyYV9cdTA2MzNcdTA2ZDBcdTA2NDZcdTA2MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjI2XHUwNmM2XHUwNjQzXHUwNjJhXHUwNmQ1XHUwNjI4XHUwNjQ5XHUwNjMx'@; put 'X1x1MDY0Nlx1MDY0OFx1MDY0YVx1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MmZcdTA2ZDBcdTA2NDNcdTA2MjdcdTA2MjhcdTA2NDlcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDY0YVx1MDZkNVx1MDY0M1x1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2MmZc'@; put 'dTA2YzhcdTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjMzXHUwNmQ1XHUwNjRhXHUwNjM0XHUwNmQ1XHUwNjQ2XHUwNjI4XHUwNmQ1X1x1MDY4Nlx1MDYyN1x1MDYzMVx1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2N2VcdTA2ZDVcdTA2NGFcdTA2MzRcdTA2ZDVc'@; put 'dTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjJjXHUwNmM4XHUwNjQ1XHUwNmQ1X1x1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2NGFcdTA2ZDVfXHUwNjJmXHUwNmM4X1x1MDYzM1x1MDZkNV9cdTA2ODZcdTA2MjdfXHUwNjdlXHUwNmQ1'@; put 'X1x1MDYyY1x1MDZjOF9cdTA2MzRcdTA2ZDUiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDY0YVx1MDZkNV9cdTA2MmZcdTA2YzhfXHUwNjMzXHUwNmQ1X1x1MDY4Nlx1MDYyN19cdTA2N2VcdTA2ZDVfXHUwNjJjXHUwNmM4X1x1MDYzNFx1MDZkNSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZv'@; put 'cm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWS1cdTA2NGFcdTA2NDlcdTA2NDRcdTA2NDlNLVx1MDYyNlx1MDYyN1x1MDY0YVx1MDY0Nlx1MDY0OVx1MDZhZEQtXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5IixMTEw6IllZWVktXHUwNjRhXHUw'@; put 'NjQ5XHUwNjQ0XHUwNjQ5TS1cdTA2MjZcdTA2MjdcdTA2NGFcdTA2NDZcdTA2NDlcdTA2YWRELVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OVx1MDYwYyBISDptbSIsTExMTDoiZGRkZFx1MDYwYyBZWVlZLVx1MDY0YVx1MDY0OVx1MDY0NFx1MDY0OU0tXHUwNjI2XHUwNjI3XHUwNjRhXHUwNjQ2'@; put 'XHUwNjQ5XHUwNmFkRC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDlcdTA2MGMgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2NGFcdTA2ZDBcdTA2MzFcdTA2NDlcdTA2NDUgXHUwNjQzXHUwNmQwXHUwNjg2XHUwNmQ1fFx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMXxcdTA2ODZcdTA2'@; put 'YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjI4XHUwNmM3XHUwNjMxXHUwNmM3XHUwNjQ2fFx1MDY4Nlx1MDZjOFx1MDYzNHxcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2fFx1MDY0M1x1MDZkNVx1MDY4Ni8s'@; put 'bWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHMsQSl7cmV0dXJuIDEyPT09cyYmKHM9MCksIlx1MDY0YVx1MDZkMFx1MDYzMVx1MDY0OVx1MDY0NSBcdTA2NDNcdTA2ZDBcdTA2ODZcdTA2ZDUiPT09QXx8Ilx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMSI9PT1BfHwiXHUwNjg2XHUwNmM4XHUw'@; put 'NjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NiI9PT1BP3M6Ilx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYyYVx1MDY0OVx1MDY0NiBcdTA2NDNcdTA2ZDBcdTA2NGFcdTA2NDlcdTA2NDYiPT09QXx8Ilx1MDY0M1x1MDZkNVx1MDY4NiI9PT1BP3MrMTI6'@; put 'cz49MTE/czpzKzEyfSxtZXJpZGllbTpmdW5jdGlvbihzLEEsdil7dmFyIEM9MTAwKnMrQTtyZXR1cm4gQzw2MDA/Ilx1MDY0YVx1MDZkMFx1MDYzMVx1MDY0OVx1MDY0NSBcdTA2NDNcdTA2ZDBcdTA2ODZcdTA2ZDUiOkM8OTAwPyJcdTA2MzNcdTA2ZDVcdTA2YmVcdTA2ZDVcdTA2MzEiOkM8'@; put 'MTEzMD8iXHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NiI6QzwxMjMwPyJcdTA2ODZcdTA2YzhcdTA2MzQiOkM8MTgwMD8iXHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDY0M1x1MDZkMFx1MDY0'@; put 'YVx1MDY0OVx1MDY0NiI6Ilx1MDY0M1x1MDZkNVx1MDY4NiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI4XHUwNmM4XHUwNmFmXHUwNmM4XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYV0gTFQiLG5leHREYXk6IltcdTA2MjZcdTA2ZDVcdTA2MmFcdTA2ZDUgXHUwNjMz'@; put 'XHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsbmV4dFdlZWs6IltcdTA2NDNcdTA2ZDBcdTA2NDRcdTA2ZDVcdTA2MzFcdTA2NDNcdTA2NDldIGRkZGQgW1x1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYV0gTFQiLGxhc3REYXk6IltcdTA2MmFcdTA2YzZcdTA2NDZcdTA2YzhcdTA2'@; put 'YWZcdTA2YzhcdTA2NDZdIExUIixsYXN0V2VlazoiW1x1MDYyNlx1MDYyN1x1MDY0NFx1MDYyZlx1MDY0OVx1MDY0Nlx1MDY0Mlx1MDY0OV0gZGRkZCBbXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUw'@; put 'NjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2IixwYXN0OiIlcyBcdTA2MjhcdTA2YzdcdTA2MzFcdTA2YzdcdTA2NDYiLHM6Ilx1MDY0Nlx1MDZkNVx1MDY4Nlx1MDY4Nlx1MDZkNSBcdTA2MzNcdTA2ZDBcdTA2NDNcdTA2NDhcdTA2NDZcdTA2MmEiLHNzOiIlZCBcdTA2MzNcdTA2ZDBcdTA2'@; put 'NDNcdTA2NDhcdTA2NDZcdTA2MmEiLG06Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2NDVcdTA2NDlcdTA2NDZcdTA2YzdcdTA2MmEiLG1tOiIlZCBcdTA2NDVcdTA2NDlcdTA2NDZcdTA2YzdcdTA2MmEiLGg6Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2'@; put 'MmEiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmEiLGQ6Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2NDNcdTA2YzhcdTA2NDYiLGRkOiIlZCBcdTA2NDNcdTA2YzhcdTA2NDYiLE06Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2MjZcdTA2MjdcdTA2NGEiLE1NOiIlZCBcdTA2'@; put 'MjZcdTA2MjdcdTA2NGEiLHk6Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2NGFcdTA2NDlcdTA2NDQiLHl5OiIlZCBcdTA2NGFcdTA2NDlcdTA2NDQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDl8LVx1MDYyNlx1MDYyN1x1MDY0YXwt'@; put 'XHUwNmJlXHUwNmQ1XHUwNjdlXHUwNjJhXHUwNmQ1KS8sb3JkaW5hbDpmdW5jdGlvbihzLEEpe3N3aXRjaChBKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBzKyItXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIHMrIi1cdTA2YmVcdTA2'@; put 'ZDVcdTA2N2VcdTA2MmFcdTA2ZDUiO2RlZmF1bHQ6cmV0dXJuIHN9fSxwcmVwYXJzZTpmdW5jdGlvbihzKXtyZXR1cm4gcy5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKHMpe3JldHVybiBzLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzoxLGRv'@; put 'eTo3fX0pfShoKDk3NTg2KSl9LDY4NDc5KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKHcsUyxMKXtyZXR1cm4ibSI9PT1MP1M/Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQzMCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1'@; put 'MDQzOFx1MDQzZFx1MDQ0MyI6ImgiPT09TD9TPyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiOiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiOncrIiAiK2Z1bmN0aW9uIGModyxTKXt2YXIgTD13LnNwbGl0KCJfIik7cmV0dXJuIFMlMTA9PTEmJlMl'@; put 'MTAwIT0xMT9MWzBdOlMlMTA+PTImJlMlMTA8PTQmJihTJTEwMDwxMHx8UyUxMDA+PTIwKT9MWzFdOkxbMl19KHtzczpTPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4X1x1MDQ0MVx1'@; put 'MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzhfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTpTPyJcdTA0'@; put 'NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQ0M19c'@; put 'dTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkIixoaDpTPyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQz'@; put 'M1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZCI6Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkIixkZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjX1x1'@; put 'MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0M2RcdTA0NTZcdTA0MzIiLE1NOiJcdTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGNfXHUwNDNjXHUwNDU2XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDU2X1x1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQ1Nlx1MDQzMiIs'@; put 'eXk6Ilx1MDQ0MFx1MDQ1Nlx1MDQzYV9cdTA0NDBcdTA0M2VcdTA0M2FcdTA0MzhfXHUwNDQwXHUwNDNlXHUwNDNhXHUwNDU2XHUwNDMyIn1bTF0sK3cpfWZ1bmN0aW9uIHYodyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHcrIlx1MDQzZSIrKDExPT09dGhpcy5ob3VycygpPyJcdTA0MzEi'@; put 'OiIiKSsiXSBMVCJ9fXkuZGVmaW5lTG9jYWxlKCJ1ayIse21vbnRoczp7Zm9ybWF0OiJcdTA0NDFcdTA0NTZcdTA0NDdcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDNlXHUwNDMzXHUwNDNlX1x1MDQzMVx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzN1x1MDQzZFx1MDQ0Zl9cdTA0'@; put 'M2FcdTA0MzJcdTA0NTZcdTA0NDJcdTA0M2RcdTA0NGZfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDNkXHUwNDRmX1x1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMlx1MDQzZFx1MDQ0Zl9cdTA0M2JcdTA0MzhcdTA0M2ZcdTA0M2RcdTA0NGZfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDNmXHUw'@; put 'NDNkXHUwNDRmX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzZFx1MDQ0Zl9cdTA0MzZcdTA0M2VcdTA0MzJcdTA0NDJcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDNlXHUwNDNmXHUwNDMwXHUwNDM0XHUwNDMwX1x1MDQzM1x1MDQ0MFx1MDQ0M1x1'@; put 'MDQzNFx1MDQzZFx1MDQ0ZiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NDFcdTA0NTZcdTA0NDdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDM4XHUwNDM5X1x1MDQzMVx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzN1x1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2Fc'@; put 'dTA0MzJcdTA0NTZcdTA0NDJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2JcdTA0MzhcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDQx'@; put 'XHUwNDM1XHUwNDQwXHUwNDNmXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzZcdTA0M2VcdTA0MzJcdTA0NDJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDNlXHUwNDNm'@; put 'XHUwNDMwXHUwNDM0X1x1MDQzM1x1MDQ0MFx1MDQ0M1x1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0YyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDQ0MVx1MDQ1Nlx1MDQ0N19cdTA0M2JcdTA0NGVcdTA0NDJfXHUwNDMxXHUwNDM1XHUwNDQwX1x1MDQzYVx1MDQzMlx1MDQ1Nlx1MDQ0Ml9c'@; put 'dTA0NDJcdTA0NDBcdTA0MzBcdTA0MzJfXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMyX1x1MDQzYlx1MDQzOFx1MDQzZl9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0M2ZfXHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzNlx1MDQzZVx1MDQzMlx1MDQ0Ml9cdTA0M2JcdTA0MzhcdTA0NDFcdTA0NDJfXHUw'@; put 'NDMzXHUwNDQwXHUwNDQzXHUwNDM0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOmZ1bmN0aW9uIEEodyxTKXt2YXIgTD17bm9taW5hdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDRmX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQzZVx1'@; put 'MDQzYV9cdTA0MzJcdTA0NTZcdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2ZcdTIwMTlcdTA0NGZcdTA0NDJcdTA0M2RcdTA0Mzhc'@; put 'dTA0NDZcdTA0NGZfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQ0ZV9cdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0M2VcdTA0M2Ff'@; put 'XHUwNDMyXHUwNDU2XHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNlXHUwNDNhX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQ0M19cdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0MzVcdTA0NDBfXHUwNDNmXHUyMDE5XHUwNDRmXHUwNDQyXHUwNDNkXHUwNDM4XHUwNDQ2'@; put 'XHUwNDRlX1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQ0MyIuc3BsaXQoIl8iKSxnZW5pdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDU2X1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQzYVx1MDQzMF9cdTA0MzJc'@; put 'dTA0NTZcdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2FcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDM4X1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzM1x1MDQzMF9cdTA0M2ZcdTIwMTlcdTA0NGZcdTA0NDJcdTA0M2RcdTA0Mzhc'@; put 'dTA0NDZcdTA0NTZfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDM4Ii5zcGxpdCgiXyIpfTtyZXR1cm4hMD09PXc/TC5ub21pbmF0aXZlLnNsaWNlKDEsNykuY29uY2F0KEwubm9taW5hdGl2ZS5zbGljZSgwLDEpKTp3P0xbLyhcW1tcdTA0MTJcdTA0MzJcdTA0MjNcdTA0NDNd'@; put 'XF0pID9kZGRkLy50ZXN0KFMpPyJhY2N1c2F0aXZlIjovXFs/KD86XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDNlXHUwNDU3fFx1MDQzZFx1MDQzMFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzZlx1MDQzZFx1MDQzZVx1MDQ1Nyk/ID9cXSA/ZGRkZC8udGVzdChTKT8iZ2VuaXRp'@; put 'dmUiOiJub21pbmF0aXZlIl1bdy5kYXkoKV06TC5ub21pbmF0aXZlfSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzRfXHUwNDNmXHUwNDNkX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2Rh'@; put 'eXNNaW46Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZ'@; put 'IixMTDoiRCBNTU1NIFlZWVkgXHUwNDQwLiIsTExMOiJEIE1NTU0gWVlZWSBcdTA0NDAuLCBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgXHUwNDQwLiwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTp2KCJbXHUwNDIxXHUwNDRjXHUwNDNlXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDNk'@; put 'XHUwNDU2ICIpLG5leHREYXk6digiW1x1MDQxN1x1MDQzMFx1MDQzMlx1MDQ0Mlx1MDQ0MFx1MDQzMCAiKSxsYXN0RGF5OnYoIltcdTA0MTJcdTA0NDdcdTA0M2VcdTA0NDBcdTA0MzAgIiksbmV4dFdlZWs6digiW1x1MDQyM10gZGRkZCBbIiksbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2go'@; put 'dGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiB2KCJbXHUwNDFjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDNlXHUwNDU3XSBkZGRkIFsiKS5jYWxsKHRoaXMpO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiB2KCJbXHUwNDFjXHUwNDM4XHUwNDNk'@; put 'XHUwNDQzXHUwNDNiXHUwNDNlXHUwNDMzXHUwNDNlXSBkZGRkIFsiKS5jYWxsKHRoaXMpfX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDM3XHUwNDMwICVzIixwYXN0OiIlcyBcdTA0NDJcdTA0M2VcdTA0M2NcdTA0NDMiLHM6Ilx1MDQzNFx1MDQzNVx1MDQzYVx1'@; put 'MDQ1Nlx1MDQzYlx1MDQ0Y1x1MDQzYVx1MDQzMCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLHNzOnMsbTpzLG1tOnMsaDoiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIixoaDpzLGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0YyIsZGQ6cyxNOiJc'@; put 'dTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGMiLE1NOnMseToiXHUwNDQwXHUwNDU2XHUwNDNhIix5eTpzfSxtZXJpZGllbVBhcnNlOi9cdTA0M2RcdTA0M2VcdTA0NDdcdTA0NTZ8XHUwNDQwXHUwNDMwXHUwNDNkXHUwNDNhXHUwNDQzfFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0'@; put 'MzJcdTA0MzVcdTA0NDdcdTA0M2VcdTA0NDBcdTA0MzAvLGlzUE06ZnVuY3Rpb24odyl7cmV0dXJuL14oXHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCkkLy50ZXN0KHcpfSxtZXJpZGllbTpmdW5jdGlvbih3LFMsTCl7cmV0dXJuIHc8ND8i'@; put 'XHUwNDNkXHUwNDNlXHUwNDQ3XHUwNDU2Ijp3PDEyPyJcdTA0NDBcdTA0MzBcdTA0M2RcdTA0M2FcdTA0NDMiOnc8MTc/Ilx1MDQzNFx1MDQzZFx1MDQ0ZiI6Ilx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1'@; put 'MDQzOXxcdTA0MzNcdTA0M2UpLyxvcmRpbmFsOmZ1bmN0aW9uKHcsUyl7c3dpdGNoKFMpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiB3KyItXHUwNDM5IjtjYXNlIkQiOnJldHVybiB3KyItXHUwNDMzXHUwNDNlIjtkZWZhdWx0OnJldHVybiB3fX0s'@; put 'd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sNDMwMjQoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBjPVsiXHUwNjJjXHUwNjQ2XHUwNjQ4XHUwNjMxXHUwNmNjIiwiXHUwNjQxXHUwNjMxXHUwNjQ4XHUwNjMxXHUwNmNjIiwiXHUwNjQ1XHUwNjI3XHUwNjMx'@; put 'XHUwNjg2IiwiXHUwNjI3XHUwNjdlXHUwNjMxXHUwNmNjXHUwNjQ0IiwiXHUwNjQ1XHUwNjI2XHUwNmNjIiwiXHUwNjJjXHUwNjQ4XHUwNjQ2IiwiXHUwNjJjXHUwNjQ4XHUwNjQ0XHUwNjI3XHUwNjI2XHUwNmNjIiwiXHUwNjI3XHUwNmFmXHUwNjMzXHUwNjJhIiwiXHUwNjMzXHUwNjJhXHUw'@; put 'NjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjI3XHUwNmE5XHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUwNjQ4XHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjJmXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl0scz1bIlx1MDYyN1x1MDYyYVx1MDY0OFx1MDYyN1x1MDYzMSIsIlx1MDY3'@; put 'ZVx1MDZjY1x1MDYzMSIsIlx1MDY0NVx1MDY0Nlx1MDZhZlx1MDY0NCIsIlx1MDYyOFx1MDYyZlx1MDZiZSIsIlx1MDYyY1x1MDY0NVx1MDYzOVx1MDYzMVx1MDYyN1x1MDYyYSIsIlx1MDYyY1x1MDY0NVx1MDYzOVx1MDZjMSIsIlx1MDZjMVx1MDY0MVx1MDYyYVx1MDZjMSJdO3kuZGVmaW5l'@; put 'TG9jYWxlKCJ1ciIse21vbnRoczpjLG1vbnRoc1Nob3J0OmMsd2Vla2RheXM6cyx3ZWVrZGF5c1Nob3J0OnMsd2Vla2RheXNNaW46cyxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZ'@; put 'WVkgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2NDUiPT09dn0sbWVyaWRpZW06ZnVuY3Rp'@; put 'b24odixDLHcpe3JldHVybiB2PDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2MjdcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyMlx1MDYyYyBcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixuZXh0RGF5OiJbXHUwNmE5XHUwNjQ0IFx1MDYyOFx1MDY0OFx1'@; put 'MDY0Mlx1MDYyYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixsYXN0RGF5OiJbXHUwNmFmXHUwNjMwXHUwNjM0XHUwNjJhXHUwNmMxIFx1MDYzMVx1MDY0OFx1MDYzMiBcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixsYXN0V2VlazoiW1x1'@; put 'MDZhZlx1MDYzMFx1MDYzNFx1MDYyYVx1MDZjMV0gZGRkZCBbXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNjI4XHUwNjM5XHUwNjJmIixwYXN0OiIlcyBcdTA2NDJcdTA2MjhcdTA2NDQiLHM6Ilx1MDY4Nlx1'@; put 'MDY0Nlx1MDYyZiBcdTA2MzNcdTA2Y2NcdTA2YTlcdTA2NDZcdTA2ODgiLHNzOiIlZCBcdTA2MzNcdTA2Y2NcdTA2YTlcdTA2NDZcdTA2ODgiLG06Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2NDVcdTA2NDZcdTA2NzkiLG1tOiIlZCBcdTA2NDVcdTA2NDZcdTA2NzkiLGg6Ilx1MDYyN1x1MDZj'@; put 'Y1x1MDZhOSBcdTA2YWZcdTA2YmVcdTA2NDZcdTA2NzlcdTA2YzEiLGhoOiIlZCBcdTA2YWZcdTA2YmVcdTA2NDZcdTA2NzlcdTA2ZDIiLGQ6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2MmZcdTA2NDYiLGRkOiIlZCBcdTA2MmZcdTA2NDYiLE06Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2NDVc'@; put 'dTA2MjdcdTA2YzEiLE1NOiIlZCBcdTA2NDVcdTA2MjdcdTA2YzEiLHk6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2NDQiLHl5OiIlZCBcdTA2MzNcdTA2MjdcdTA2NDQifSxwcmVwYXJzZTpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxw'@; put 'b3N0Zm9ybWF0OmZ1bmN0aW9uKHYpe3JldHVybiB2LnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9LDcyMzc2KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgidXotbGF0biIse21vbnRoczoiWWFu'@; put 'dmFyX0ZldnJhbF9NYXJ0X0FwcmVsX01heV9JeXVuX0l5dWxfQXZndXN0X1NlbnRhYnJfT2t0YWJyX05veWFicl9EZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Illhbl9GZXZfTWFyX0Fwcl9NYXlfSXl1bl9JeXVsX0F2Z19TZW5fT2t0X05veV9EZWsiLnNwbGl0KCJfIiksd2Vla2Rh'@; put 'eXM6Illha3NoYW5iYV9EdXNoYW5iYV9TZXNoYW5iYV9DaG9yc2hhbmJhX1BheXNoYW5iYV9KdW1hX1NoYW5iYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJZYWtfRHVzaF9TZXNoX0Nob3JfUGF5X0p1bV9TaGFuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJZYV9EdV9TZV9DaG9fUGFf'@; put 'SnVfU2hhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh'@; put 'eToiW0J1Z3VuIHNvYXRdIExUIFtkYV0iLG5leHREYXk6IltFcnRhZ2FdIExUIFtkYV0iLG5leHRXZWVrOiJkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0iLGxhc3REYXk6IltLZWNoYSBzb2F0XSBMVCBbZGFdIixsYXN0V2VlazoiW08ndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdIixz'@; put 'YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJZYXFpbiAlcyBpY2hpZGEiLHBhc3Q6IkJpciBuZWNoYSAlcyBvbGRpbiIsczoic29uaXlhIixzczoiJWQgc29uaXlhIixtOiJiaXIgZGFxaXFhIixtbToiJWQgZGFxaXFhIixoOiJiaXIgc29hdCIsaGg6IiVkIHNvYXQiLGQ6ImJp'@; put 'ciBrdW4iLGRkOiIlZCBrdW4iLE06ImJpciBveSIsTU06IiVkIG95Iix5OiJiaXIgeWlsIix5eToiJWQgeWlsIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0sMTk4MDAoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ1eiIse21vbnRo'@; put 'czoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2Rf'@; put 'XHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0'@; put 'MF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMl9cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4'@; put 'XHUwNDRlXHUwNDNkX1x1MDQzOFx1MDQ0ZVx1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MmZcdTA0M2FcdTA0'@; put 'NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDE0XHUwNDQzXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQyMVx1MDQzNVx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0MjdcdTA0M2VcdTA0NDBcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUw'@; put 'NDFmXHUwNDMwXHUwNDM5XHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQxNlx1MDQ0M1x1MDQzY1x1MDQzMF9cdTA0MjhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDJmXHUwNDNhXHUwNDQ4X1x1MDQxNFx1MDQ0M1x1MDQ0'@; put 'OF9cdTA0MjFcdTA0MzVcdTA0NDhfXHUwNDI3XHUwNDNlXHUwNDQwX1x1MDQxZlx1MDQzMFx1MDQzOV9cdTA0MTZcdTA0NDNcdTA0M2NfXHUwNDI4XHUwNDMwXHUwNDNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MmZcdTA0M2FfXHUwNDE0XHUwNDQzX1x1MDQyMVx1MDQzNV9cdTA0'@; put 'MjdcdTA0M2VfXHUwNDFmXHUwNDMwX1x1MDQxNlx1MDQ0M19cdTA0MjhcdTA0MzAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJE'@; put 'IE1NTU0gWVlZWSwgZGRkZCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNDQzXHUwNDMzXHUwNDQzXHUwNDNkIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLG5leHREYXk6IltcdTA0MmRcdTA0NDBcdTA0NDJcdTA0MzBcdTA0MzNcdTA0'@; put 'MzBdIExUIFtcdTA0MzRcdTA0MzBdIixuZXh0V2VlazoiZGRkZCBbXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM4IFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLGxhc3REYXk6IltcdTA0MWFcdTA0MzVcdTA0NDdcdTA0MzAgXHUwNDQxXHUwNDNlXHUwNDMwXHUw'@; put 'NDQyXSBMVCBbXHUwNDM0XHUwNDMwXSIsbGFzdFdlZWs6IltcdTA0MjNcdTA0NDJcdTA0MzNcdTA0MzBcdTA0M2RdIGRkZGQgW1x1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzOCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJdIExUIFtcdTA0MzRcdTA0MzBdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl'@; put 'VGltZTp7ZnV0dXJlOiJcdTA0MmZcdTA0M2FcdTA0MzhcdTA0M2QgJXMgXHUwNDM4XHUwNDQ3XHUwNDM4XHUwNDM0XHUwNDMwIixwYXN0OiJcdTA0MTFcdTA0MzhcdTA0NDAgXHUwNDNkXHUwNDM1XHUwNDQ3XHUwNDMwICVzIFx1MDQzZVx1MDQzYlx1MDQzNFx1MDQzOFx1MDQzZCIsczoiXHUw'@; put 'NDQ0XHUwNDQzXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQyIixzczoiJWQgXHUwNDQ0XHUwNDQzXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQyIixtOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDM0XHUwNDMwXHUwNDNhXHUwNDM4XHUwNDNhXHUwNDMwIixtbToiJWQgXHUwNDM0XHUwNDMwXHUwNDNh'@; put 'XHUwNDM4XHUwNDNhXHUwNDMwIixoOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixkOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDNhXHUwNDQzXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNDQzXHUw'@; put 'NDNkIixNOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDNlXHUwNDM5IixNTToiJWQgXHUwNDNlXHUwNDM5Iix5OiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDM5XHUwNDM4XHUwNDNiIix5eToiJWQgXHUwNDM5XHUwNDM4XHUwNDNiIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KGgoOTc1ODYpKX0s'@; put 'ODkzNjYoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ2aSIse21vbnRoczoidGhceGUxbmcgMV90aFx4ZTFuZyAyX3RoXHhlMW5nIDNfdGhceGUxbmcgNF90aFx4ZTFuZyA1X3RoXHhlMW5nIDZfdGhceGUxbmcgN190aFx4ZTFuZyA4X3RoXHhlMW5n'@; put 'IDlfdGhceGUxbmcgMTBfdGhceGUxbmcgMTFfdGhceGUxbmcgMTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoZyAwMV9UaGcgMDJfVGhnIDAzX1RoZyAwNF9UaGcgMDVfVGhnIDA2X1RoZyAwN19UaGcgMDhfVGhnIDA5X1RoZyAxMF9UaGcgMTFfVGhnIDEyIi5zcGxpdCgiXyIpLG1vbnRo'@; put 'c1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImNoXHUxZWU3IG5oXHUxZWFkdF90aFx1MWVlOSBoYWlfdGhcdTFlZTkgYmFfdGhcdTFlZTkgdFx1MDFiMF90aFx1MWVlOSBuXHUwMTAzbV90aFx1MWVlOSBzXHhlMXVfdGhcdTFlZTkgYlx1MWVhM3kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi'@; put 'Q05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxtZXJpZGllbVBhcnNlOi9zYXxjaC9pLGlzUE06ZnVuY3Rpb24ocyl7cmV0dXJuL15jaCQvaS50ZXN0KHMpfSxt'@; put 'ZXJpZGllbTpmdW5jdGlvbihzLEEsdil7cmV0dXJuIHM8MTI/dj8ic2EiOiJTQSI6dj8iY2giOiJDSCJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW25cdTAxMDNtXSBZWVlZIixMTEw6IkQgTU1NTSBbblx1MDEw'@; put 'M21dIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBbblx1MDEwM21dIFlZWVkgSEg6bW0iLGw6IkREL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIXHhm'@; put 'NG0gbmF5IGxceGZhY10gTFQiLG5leHREYXk6IltOZ1x4ZTB5IG1haSBsXHhmYWNdIExUIixuZXh0V2VlazoiZGRkZCBbdHVcdTFlYTduIHRcdTFlZGJpIGxceGZhY10gTFQiLGxhc3REYXk6IltIXHhmNG0gcXVhIGxceGZhY10gTFQiLGxhc3RXZWVrOiJkZGRkIFt0dVx1MWVhN24gdHJcdTAx'@; put 'YjBcdTFlZGJjIGxceGZhY10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHRcdTFlZGJpIixwYXN0OiIlcyB0clx1MDFiMFx1MWVkYmMiLHM6InZceGUwaSBnaVx4ZTJ5IixzczoiJWQgZ2lceGUyeSIsbToibVx1MWVkOXQgcGhceGZhdCIsbW06IiVkIHBoXHhm'@; put 'YXQiLGg6Im1cdTFlZDl0IGdpXHUxZWRkIixoaDoiJWQgZ2lcdTFlZGQiLGQ6Im1cdTFlZDl0IG5nXHhlMHkiLGRkOiIlZCBuZ1x4ZTB5Iix3OiJtXHUxZWQ5dCB0dVx1MWVhN24iLHd3OiIlZCB0dVx1MWVhN24iLE06Im1cdTFlZDl0IHRoXHhlMW5nIixNTToiJWQgdGhceGUxbmciLHk6Im1c'@; put 'dTFlZDl0IG5cdTAxMDNtIix5eToiJWQgblx1MDEwM20ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKHMpe3JldHVybiBzfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oaCg5NzU4NikpfSw2OTcwMihmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0'@; put 'cmljdCI7eS5kZWZpbmVMb2NhbGUoIngtcHNldWRvIix7bW9udGhzOiJKflx4ZTFceGYxXHhmYVx4ZTF+clx4ZmRfRn5ceGU5YnJceGZhflx4ZTFyXHhmZF9+TVx4ZTFyY35oX1x4YzFwfnJceGVkbF9+TVx4ZTFceGZkX35KXHhmYVx4ZjFceGU5fl9KXHhmYWx+XHhmZF9ceGMxXHhmYX5nXHhm'@; put 'YXN0fl9TXHhlOXB+dFx4ZTltYn5ceGU5cl9ceGQzfmN0XHhmM2J+XHhlOXJfXHhkMX5ceGYzdlx4ZTltfmJceGU5cl9+RFx4ZTljXHhlOX5tYlx4ZTlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKflx4ZTFceGYxX35GXHhlOWJffk1ceGUxcl9+XHhjMXByX35NXHhlMVx4ZmRffkpceGZh'@; put 'XHhmMV9+Slx4ZmFsX35ceGMxXHhmYWdfflNceGU5cF9+XHhkM2N0X35ceGQxXHhmM3ZffkRceGU5YyIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTflx4ZmFceGYxZFx4ZTF+XHhmZF9NXHhmM35ceGYxZFx4ZTFceGZkfl9UXHhmYVx4ZTl+c2RceGUxXHhmZH5f'@; put 'V1x4ZTlkflx4ZjFceGU5c2R+XHhlMVx4ZmRfVH5oXHhmYXJzfmRceGUxXHhmZF9+RnJceGVkZH5ceGUxXHhmZF9Tflx4ZTF0XHhmYXJ+ZFx4ZTFceGZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN+XHhmYVx4ZjFffk1ceGYzXHhmMV9+VFx4ZmFceGU5X35XXHhlOWRfflRoXHhmYV9+'@; put 'RnJceGVkX35TXHhlMXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN+XHhmYV9NXHhmM35fVFx4ZmFffldceGU5X1R+aF9Gcn5fU1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLEw6IkREL01NL1lZWVkiLExMOiJEIE1N'@; put 'TU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1R+XHhmM2RceGUxflx4ZmQgXHhlMXRdIExUIixuZXh0RGF5OiJbVH5ceGYzbVx4ZjN+cnJceGYzfncgXHhlMXRdIExUIixuZXh0V2Vlazoi'@; put 'ZGRkZCBbXHhlMXRdIExUIixsYXN0RGF5OiJbXHhkZH5ceGU5c3R+XHhlOXJkXHhlMX5ceGZkIFx4ZTF0XSBMVCIsbGFzdFdlZWs6IltMflx4ZTFzdF0gZGRkZCBbXHhlMXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJceGVkflx4ZjEgJXMiLHBhc3Q6IiVzIFx4'@; put 'ZTF+Z1x4ZjMiLHM6Ilx4ZTEgfmZceGU5dyB+c1x4ZTljXHhmM35ceGYxZHMiLHNzOiIlZCBzflx4ZTljXHhmM1x4ZjF+ZHMiLG06Ilx4ZTEgfm1ceGVkXHhmMX5ceGZhdFx4ZTkiLG1tOiIlZCBtflx4ZWRceGYxXHhmYX50XHhlOXMiLGg6Ilx4ZTF+XHhmMSBoXHhmM35ceGZhciIsaGg6IiVk'@; put 'IGh+XHhmM1x4ZmFycyIsZDoiXHhlMSB+ZFx4ZTFceGZkIixkZDoiJWQgZH5ceGUxXHhmZHMiLE06Ilx4ZTEgfm1ceGYzXHhmMX50aCIsTU06IiVkIG1+XHhmM1x4ZjF0fmhzIix5OiJceGUxIH5ceGZkXHhlOVx4ZTFyIix5eToiJWQgXHhmZH5ceGU5XHhlMXJzIn0sZGF5T2ZNb250aE9yZGlu'@; put 'YWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24ocyl7dmFyIEE9cyUxMDtyZXR1cm4gcysoMT09fn4ocyUxMDAvMTApPyJ0aCI6MT09PUE/InN0IjoyPT09QT8ibmQiOjM9PT1BPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShoKDk3NTg2KSl9'@; put 'LDcyNjU1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxvY2FsZSgieW8iLHttb250aHM6IlNcdTFlYjlcdTAzMDFyXHUxZWI5XHUwMzAxX0VcdTAzMDByZVx1MDMwMGxlXHUwMzAwX1x1MWViOHJcdTFlYjlcdTAzMDBuYVx1MDMwMF9JXHUwMzAwZ2JlXHUwMzAx'@; put 'X0VcdTAzMDBiaWJpX09cdTAzMDBrdVx1MDMwMGR1X0FnXHUxZWI5bW9fT1x1MDMwMGd1XHUwMzAxbl9Pd2V3ZV9cdTFlY2NcdTAzMDB3YVx1MDMwMHJhXHUwMzAwX0JlXHUwMzAxbHVcdTAzMDFfXHUxZWNjXHUwMzAwcFx1MWViOVx1MDMwMFx1MDMwMCIuc3BsaXQoIl8iKSxtb250aHNTaG9y'@; put 'dDoiU1x1MWViOVx1MDMwMXJfRVx1MDMwMHJsX1x1MWViOHJuX0lcdTAzMDBnYl9FXHUwMzAwYmlfT1x1MDMwMGt1XHUwMzAwX0FnXHUxZWI5X09cdTAzMDBndVx1MDMwMV9Pd2VfXHUxZWNjXHUwMzAwd2FcdTAzMDBfQmVcdTAzMDFsX1x1MWVjY1x1MDMwMHBcdTFlYjlcdTAzMDBcdTAzMDAi'@; put 'LnNwbGl0KCJfIiksd2Vla2RheXM6IkFcdTAzMDBpXHUwMzAwa3VcdTAzMDFfQWplXHUwMzAxX0lcdTAzMDBzXHUxZWI5XHUwMzAxZ3VuX1x1MWVjY2pcdTFlY2RcdTAzMDFydVx1MDMwMV9cdTFlY2NqXHUxZWNkXHUwMzAxYlx1MWVjZF9cdTFlYjh0aVx1MDMwMF9BXHUwMzAwYmFcdTAzMDFt'@; put 'XHUxZWI5XHUwMzAxdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQVx1MDMwMGlcdTAzMDBrX0FqZVx1MDMwMV9JXHUwMzAwc1x1MWViOVx1MDMwMV9cdTFlY2Nqcl9cdTFlY2NqYl9cdTFlYjh0aVx1MDMwMF9BXHUwMzAwYmFcdTAzMDEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFc'@; put 'dTAzMDBpXHUwMzAwX0FqX0lcdTAzMDBzX1x1MWVjY3JfXHUxZWNjYl9cdTFlYjh0X0FcdTAzMDBiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6'@; put 'bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPXHUwMzAwbmlcdTAzMDAgbmldIExUIixuZXh0RGF5OiJbXHUxZWNjXHUwMzAwbGEgbmldIExUIixuZXh0V2VlazoiZGRkZCBbXHUxZWNjc1x1MWViOVx1MDMwMCB0b1x1MDMwMW4nYlx1'@; put 'MWVjZF0gW25pXSBMVCIsbGFzdERheToiW0FcdTAzMDBuYSBuaV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTFlY2NzXHUxZWI5XHUwMzAwIHRvXHUwMzAxbFx1MWVjZFx1MDMwMV0gW25pXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToibmlcdTAzMDEgJXMiLHBhc3Q6'@; put 'IiVzIGtcdTFlY2RqYVx1MDMwMSIsczoiaVx1MDMwMHNcdTFlYjlqdVx1MDMwMSBhYXlhXHUwMzAxIGRpZSIsc3M6ImFheWFcdTAzMDEgJWQiLG06ImlcdTAzMDBzXHUxZWI5anVcdTAzMDEga2FuIixtbToiaVx1MDMwMHNcdTFlYjlqdVx1MDMwMSAlZCIsaDoid2FcdTAzMDFrYXRpIGthbiIs'@; put 'aGg6IndhXHUwMzAxa2F0aSAlZCIsZDoiXHUxZWNkalx1MWVjZFx1MDMwMSBrYW4iLGRkOiJcdTFlY2RqXHUxZWNkXHUwMzAxICVkIixNOiJvc3VcdTAzMDAga2FuIixNTToib3N1XHUwMzAwICVkIix5OiJcdTFlY2RkdVx1MDMwMW4ga2FuIix5eToiXHUxZWNkZHVcdTAzMDFuICVkIn0sZGF5'@; put 'T2ZNb250aE9yZGluYWxQYXJzZTovXHUxZWNkalx1MWVjZFx1MDMwMVxzXGR7MSwyfS8sb3JkaW5hbDoiXHUxZWNkalx1MWVjZFx1MDMwMSAlZCIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sNTc1KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0Ijt5LmRlZmluZUxv'@; put 'Y2FsZSgiemgtY24iLHttb250aHM6Ilx1NGUwMFx1NjcwOF9cdTRlOGNcdTY3MDhfXHU0ZTA5XHU2NzA4X1x1NTZkYlx1NjcwOF9cdTRlOTRcdTY3MDhfXHU1MTZkXHU2NzA4X1x1NGUwM1x1NjcwOF9cdTUxNmJcdTY3MDhfXHU0ZTVkXHU2NzA4X1x1NTM0MVx1NjcwOF9cdTUzNDFcdTRlMDBc'@; put 'dTY3MDhfXHU1MzQxXHU0ZThjXHU2NzA4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2NzA4XzVcdTY3MDhfNlx1NjcwOF83XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8iKSx3ZWVr'@; put 'ZGF5czoiXHU2NjFmXHU2NzFmXHU2NWU1X1x1NjYxZlx1NjcxZlx1NGUwMF9cdTY2MWZcdTY3MWZcdTRlOGNfXHU2NjFmXHU2NzFmXHU0ZTA5X1x1NjYxZlx1NjcxZlx1NTZkYl9cdTY2MWZcdTY3MWZcdTRlOTRfXHU2NjFmXHU2NzFmXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6'@; put 'Ilx1NTQ2OFx1NjVlNV9cdTU0NjhcdTRlMDBfXHU1NDY4XHU0ZThjX1x1NTQ2OFx1NGUwOV9cdTU0NjhcdTU2ZGJfXHU1NDY4XHU0ZTk0X1x1NTQ2OFx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHU2NWU1X1x1NGUwMF9cdTRlOGNfXHU0ZTA5X1x1NTZkYl9cdTRlOTRfXHU1MTZk'@; put 'Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1QWhcdTcwYjltbVx1NTIwNiIsTExMTDoiWVlZWVx1NWU3NE1c'@; put 'dTY3MDhEXHU2NWU1ZGRkZEFoXHU3MGI5bW1cdTUyMDYiLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVt'@; put 'UGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24ocyxBKXtyZXR1cm4gMTI9PT1zJiYocz0wKSwiXHU1MWNjXHU2NjY4Ij09PUF8fCJcdTY1ZTlcdTRl'@; put 'MGEiPT09QXx8Ilx1NGUwYVx1NTM0OCI9PT1BP3M6Ilx1NGUwYlx1NTM0OCI9PT1BfHwiXHU2NjVhXHU0ZTBhIj09PUE/cysxMjpzPj0xMT9zOnMrMTJ9LG1lcmlkaWVtOmZ1bmN0aW9uKHMsQSx2KXt2YXIgQz0xMDAqcytBO3JldHVybiBDPDYwMD8iXHU1MWNjXHU2NjY4IjpDPDkwMD8iXHU2'@; put 'NWU5XHU0ZTBhIjpDPDExMzA/Ilx1NGUwYVx1NTM0OCI6QzwxMjMwPyJcdTRlMmRcdTUzNDgiOkM8MTgwMD8iXHU0ZTBiXHU1MzQ4IjoiXHU2NjVhXHU0ZTBhIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTRlY2FcdTU5MjldTFQiLG5leHREYXk6IltcdTY2MGVcdTU5MjldTFQiLG5leHRXZWVr'@; put 'OmZ1bmN0aW9uKHMpe3JldHVybiBzLndlZWsoKSE9PXRoaXMud2VlaygpPyJbXHU0ZTBiXWRkZExUIjoiW1x1NjcyY11kZGRMVCJ9LGxhc3REYXk6IltcdTY2MjhcdTU5MjldTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKHMpe3JldHVybiB0aGlzLndlZWsoKSE9PXMud2VlaygpPyJbXHU0ZTBhXWRk'@; put 'ZExUIjoiW1x1NjcyY11kZGRMVCJ9LHNhbWVFbHNlOiJMIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdTY1ZTV8XHU2NzA4fFx1NTQ2OCkvLG9yZGluYWw6ZnVuY3Rpb24ocyxBKXtzd2l0Y2goQSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gcysiXHU2NWU1'@; put 'IjtjYXNlIk0iOnJldHVybiBzKyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gcysiXHU1NDY4IjtkZWZhdWx0OnJldHVybiBzfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1NDBlIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1MWUwXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIx'@; put 'IFx1NTIwNlx1OTQ5ZiIsbW06IiVkIFx1NTIwNlx1OTQ5ZiIsaDoiMSBcdTVjMGZcdTY1ZjYiLGhoOiIlZCBcdTVjMGZcdTY1ZjYiLGQ6IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5Iix3OiIxIFx1NTQ2OCIsd3c6IiVkIFx1NTQ2OCIsTToiMSBcdTRlMmFcdTY3MDgiLE1NOiIlZCBcdTRlMmFc'@; put 'dTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KGgoOTc1ODYpKX0sMTgzNTEoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ6aC1oayIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1Njcw'@; put 'OF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hv'@; put 'cnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1'@; put 'NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1NjcxZlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMx'@; put 'XHU0ZTA5X1x1OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5MDMxXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJI'@; put 'SDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3'@; put 'MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJc'@; put 'dTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24ocyxBKXtyZXR1cm4gMTI9PT1zJiYocz0wKSwiXHU1MWNjXHU2NjY4Ij09PUF8fCJcdTY1ZTlcdTRlMGEiPT09QXx8Ilx1NGUwYVx1NTM0OCI9PT1BP3M6Ilx1NGUyZFx1NTM0OCI9PT1BP3M+PTExP3M6cysxMjoiXHU0'@; put 'ZTBiXHU1MzQ4Ij09PUF8fCJcdTY2NWFcdTRlMGEiPT09QT9zKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24ocyxBLHYpe3ZhciBDPTEwMCpzK0E7cmV0dXJuIEM8NjAwPyJcdTUxY2NcdTY2NjgiOkM8OTAwPyJcdTY1ZTlcdTRlMGEiOkM8MTIwMD8iXHU0ZTBhXHU1MzQ4IjoxMjAwPT09'@; put 'Qz8iXHU0ZTJkXHU1MzQ4IjpDPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XUxUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XUxUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5'@; put 'MjldTFQiLGxhc3RXZWVrOiJbXHU0ZTBhXWRkZGRMVCIsc2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbihzLEEpe3N3aXRjaChBKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVy'@; put 'biBzKyJcdTY1ZTUiO2Nhc2UiTSI6cmV0dXJuIHMrIlx1NjcwOCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBzKyJcdTkwMzEiO2RlZmF1bHQ6cmV0dXJuIHN9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTVmOGMiLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTVlN2VcdTc5ZDIiLHNzOiIlZCBc'@; put 'dTc5ZDIiLG06IjEgXHU1MjA2XHU5NDE4IixtbToiJWQgXHU1MjA2XHU5NDE4IixoOiIxIFx1NWMwZlx1NjY0MiIsaGg6IiVkIFx1NWMwZlx1NjY0MiIsZDoiMSBcdTU5MjkiLGRkOiIlZCBcdTU5MjkiLE06IjEgXHU1MDBiXHU2NzA4IixNTToiJWQgXHU1MDBiXHU2NzA4Iix5OiIxIFx1NWU3'@; put 'NCIseXk6IiVkIFx1NWU3NCJ9fSl9KGgoOTc1ODYpKX0sNTE2MjYoZmUsaixoKXshZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3kuZGVmaW5lTG9jYWxlKCJ6aC1tbyIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1'@; put 'NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhf'@; put 'NVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlf'@; put 'XHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1NjcxZlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMxXHU0ZTA5X1x1OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5'@; put 'MDMxXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IllZWVlcdTVl'@; put 'NzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IkQvTS9ZWVlZIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1'@; put 'NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVu'@; put 'Y3Rpb24ocyxBKXtyZXR1cm4gMTI9PT1zJiYocz0wKSwiXHU1MWNjXHU2NjY4Ij09PUF8fCJcdTY1ZTlcdTRlMGEiPT09QXx8Ilx1NGUwYVx1NTM0OCI9PT1BP3M6Ilx1NGUyZFx1NTM0OCI9PT1BP3M+PTExP3M6cysxMjoiXHU0ZTBiXHU1MzQ4Ij09PUF8fCJcdTY2NWFcdTRlMGEiPT09QT9z'@; put 'KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24ocyxBLHYpe3ZhciBDPTEwMCpzK0E7cmV0dXJuIEM8NjAwPyJcdTUxY2NcdTY2NjgiOkM8OTAwPyJcdTY1ZTlcdTRlMGEiOkM8MTEzMD8iXHU0ZTBhXHU1MzQ4IjpDPDEyMzA/Ilx1NGUyZFx1NTM0OCI6QzwxODAwPyJcdTRlMGJcdTUzNDgi'@; put 'OiJcdTY2NWFcdTRlMGEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1NGVjYVx1NTkyOV0gTFQiLG5leHREYXk6IltcdTY2MGVcdTU5MjldIExUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkIExUIixsYXN0RGF5OiJbXHU2NjI4XHU1OTI5XSBMVCIsbGFzdFdlZWs6IltcdTRlMGFdZGRkZCBMVCIs'@; put 'c2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbihzLEEpe3N3aXRjaChBKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBzKyJcdTY1ZTUiO2Nhc2UiTSI6cmV0dXJuIHMrIlx1'@; put 'NjcwOCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBzKyJcdTkwMzEiO2RlZmF1bHQ6cmV0dXJuIHN9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTUxNjciLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTVlN2VcdTc5ZDIiLHNzOiIlZCBcdTc5ZDIiLG06IjEgXHU1MjA2XHU5NDE4IixtbToiJWQg'@; put 'XHU1MjA2XHU5NDE4IixoOiIxIFx1NWMwZlx1NjY0MiIsaGg6IiVkIFx1NWMwZlx1NjY0MiIsZDoiMSBcdTU5MjkiLGRkOiIlZCBcdTU5MjkiLE06IjEgXHU1MDBiXHU2NzA4IixNTToiJWQgXHU1MDBiXHU2NzA4Iix5OiIxIFx1NWU3NCIseXk6IiVkIFx1NWU3NCJ9fSl9KGgoOTc1ODYpKX0s'@; put 'ODg4NyhmZSxqLGgpeyFmdW5jdGlvbih5KXsidXNlIHN0cmljdCI7eS5kZWZpbmVMb2NhbGUoInpoLXR3Iix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJcdTY3MDhfXHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9cdTRlMDNcdTY3MDhfXHU1'@; put 'MTZiXHU2NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3MDhfXHU1MzQxXHU0ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4Xzlc'@; put 'dTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYxZlx1NjcxZlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJfXHU2NjFmXHU2NzFmXHU0'@; put 'ZTk0X1x1NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTkwMzFcdTY1ZTVfXHU5MDMxXHU0ZTAwX1x1OTAzMVx1NGU4Y19cdTkwMzFcdTRlMDlfXHU5MDMxXHU1NmRiX1x1OTAzMVx1NGU5NF9cdTkwMzFcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46'@; put 'Ilx1NjVlNV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2ZGJfXHU0ZTk0X1x1NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRN'@; put 'XHU2NzA4RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSIsbDoiWVlZWS9NL0QiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1Njcw'@; put 'OERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihzLEEpe3JldHVybiAxMj09PXMmJihzPTApLCJc'@; put 'dTUxY2NcdTY2NjgiPT09QXx8Ilx1NjVlOVx1NGUwYSI9PT1BfHwiXHU0ZTBhXHU1MzQ4Ij09PUE/czoiXHU0ZTJkXHU1MzQ4Ij09PUE/cz49MTE/czpzKzEyOiJcdTRlMGJcdTUzNDgiPT09QXx8Ilx1NjY1YVx1NGUwYSI9PT1BP3MrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihzLEEs'@; put 'dil7dmFyIEM9MTAwKnMrQTtyZXR1cm4gQzw2MDA/Ilx1NTFjY1x1NjY2OCI6Qzw5MDA/Ilx1NjVlOVx1NGUwYSI6QzwxMTMwPyJcdTRlMGFcdTUzNDgiOkM8MTIzMD8iXHU0ZTJkXHU1MzQ4IjpDPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5'@; put 'OiJbXHU0ZWNhXHU1OTI5XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NTkyOV0gTFQiLG5leHRXZWVrOiJbXHU0ZTBiXWRkZGQgTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldIExUIixsYXN0V2VlazoiW1x1NGUwYV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFy'@; put 'c2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTkwMzEpLyxvcmRpbmFsOmZ1bmN0aW9uKHMsQSl7c3dpdGNoKEEpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIHMrIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gcysiXHU2NzA4IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIHMrIlx1'@; put 'OTAzMSI7ZGVmYXVsdDpyZXR1cm4gc319LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NWY4YyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NWU3ZVx1NzlkMiIsc3M6IiVkIFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0MTgiLG1tOiIlZCBcdTUyMDZcdTk0MTgiLGg6IjEgXHU1YzBmXHU2NjQyIixo'@; put 'aDoiJWQgXHU1YzBmXHU2NjQyIixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsTToiMSBcdTUwMGJcdTY3MDgiLE1NOiIlZCBcdTUwMGJcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In19KX0oaCg5NzU4NikpfSw5NzU4NihmZSxqLGgpeyhmZT1oLm5tZChmZSkpLmV4cG9y'@; put 'dHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHksejtmdW5jdGlvbiBjKCl7cmV0dXJuIHkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIEEoeWUpe3JldHVybiB5ZSBpbnN0YW5jZW9mIEFycmF5fHwiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu'@; put 'Zy5jYWxsKHllKX1mdW5jdGlvbiB2KHllKXtyZXR1cm4gbnVsbCE9eWUmJiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHllKX1mdW5jdGlvbiBDKHllLFVlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHllLFVl'@; put 'KX1mdW5jdGlvbiB3KHllKXtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcylyZXR1cm4gMD09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHllKS5sZW5ndGg7dmFyIFVlO2ZvcihVZSBpbiB5ZSlpZihDKHllLFVlKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBTKHllKXtyZXR1'@; put 'cm4gdm9pZCAwPT09eWV9ZnVuY3Rpb24gTCh5ZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB5ZXx8IltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeWUpfWZ1bmN0aW9uIFIoeWUpe3JldHVybiB5ZSBpbnN0YW5jZW9mIERhdGV8fCJbb2JqZWN0IERh'@; put 'dGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5ZSl9ZnVuY3Rpb24geCh5ZSxVZSl7dmFyIGl0LGN0PVtdLEZ0PXllLmxlbmd0aDtmb3IoaXQ9MDtpdDxGdDsrK2l0KWN0LnB1c2goVWUoeWVbaXRdLGl0KSk7cmV0dXJuIGN0fWZ1bmN0aW9uIFUoeWUsVWUpe2Zvcih2YXIg'@; put 'Y3QgaW4gVWUpQyhVZSxjdCkmJih5ZVtjdF09VWVbY3RdKTtyZXR1cm4gQyhVZSwidG9TdHJpbmciKSYmKHllLnRvU3RyaW5nPVVlLnRvU3RyaW5nKSxDKFVlLCJ2YWx1ZU9mIikmJih5ZS52YWx1ZU9mPVVlLnZhbHVlT2YpLHllfWZ1bmN0aW9uIEgoeWUsVWUsY3QsaXQpe3JldHVybiBOYSh5'@; put 'ZSxVZSxjdCxpdCwhMCkudXRjKCl9ZnVuY3Rpb24gTih5ZSl7cmV0dXJuIG51bGw9PXllLl9wZiYmKHllLl9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZEVyYTpudWxsLGlu'@; put 'dmFsaWRNb250aDpudWxsLGludmFsaWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFydHM6W10sZXJhOm51bGwsbWVyaWRpZW06bnVsbCxyZmMyODIyOiExLHdlZWtkYXlNaXNtYXRjaDohMX0pLHllLl9wZn1mdW5jdGlvbiBZKHllKXt2YXIgVWU9bnVs'@; put 'bCxjdD0hMSxpdD15ZS5fZCYmIWlzTmFOKHllLl9kLmdldFRpbWUoKSk7cmV0dXJuIGl0JiYoVWU9Tih5ZSksY3Q9ei5jYWxsKFVlLnBhcnNlZERhdGVQYXJ0cyxmdW5jdGlvbihGdCl7cmV0dXJuIG51bGwhPUZ0fSksaXQ9VWUub3ZlcmZsb3c8MCYmIVVlLmVtcHR5JiYhVWUuaW52YWxpZEVy'@; put 'YSYmIVVlLmludmFsaWRNb250aCYmIVVlLmludmFsaWRXZWVrZGF5JiYhVWUud2Vla2RheU1pc21hdGNoJiYhVWUubnVsbElucHV0JiYhVWUuaW52YWxpZEZvcm1hdCYmIVVlLnVzZXJJbnZhbGlkYXRlZCYmKCFVZS5tZXJpZGllbXx8VWUubWVyaWRpZW0mJmN0KSx5ZS5fc3RyaWN0JiYoaXQ9'@; put 'aXQmJjA9PT1VZS5jaGFyc0xlZnRPdmVyJiYwPT09VWUudW51c2VkVG9rZW5zLmxlbmd0aCYmdm9pZCAwPT09VWUuYmlnSG91cikpLG51bGwhPU9iamVjdC5pc0Zyb3plbiYmT2JqZWN0LmlzRnJvemVuKHllKT9pdDooeWUuX2lzVmFsaWQ9aXQseWUuX2lzVmFsaWQpfWZ1bmN0aW9uIEYoeWUp'@; put 'e3ZhciBVZT1IKE5hTik7cmV0dXJuIG51bGwhPXllP1UoTihVZSkseWUpOk4oVWUpLnVzZXJJbnZhbGlkYXRlZD0hMCxVZX16PUFycmF5LnByb3RvdHlwZS5zb21lP0FycmF5LnByb3RvdHlwZS5zb21lOmZ1bmN0aW9uKHllKXt2YXIgaXQsVWU9T2JqZWN0KHRoaXMpLGN0PVVlLmxlbmd0aD4+'@; put 'PjA7Zm9yKGl0PTA7aXQ8Y3Q7aXQrKylpZihpdCBpbiBVZSYmeWUuY2FsbCh0aGlzLFVlW2l0XSxpdCxVZSkpcmV0dXJuITA7cmV0dXJuITF9O3ZhciBXPWMubW9tZW50UHJvcGVydGllcz1bXSxxPSExO2Z1bmN0aW9uIHJlKHllLFVlKXt2YXIgY3QsaXQsRnQsWWU9Vy5sZW5ndGg7aWYoUyhV'@; put 'ZS5faXNBTW9tZW50T2JqZWN0KXx8KHllLl9pc0FNb21lbnRPYmplY3Q9VWUuX2lzQU1vbWVudE9iamVjdCksUyhVZS5faSl8fCh5ZS5faT1VZS5faSksUyhVZS5fZil8fCh5ZS5fZj1VZS5fZiksUyhVZS5fbCl8fCh5ZS5fbD1VZS5fbCksUyhVZS5fc3RyaWN0KXx8KHllLl9zdHJpY3Q9VWUu'@; put 'X3N0cmljdCksUyhVZS5fdHptKXx8KHllLl90em09VWUuX3R6bSksUyhVZS5faXNVVEMpfHwoeWUuX2lzVVRDPVVlLl9pc1VUQyksUyhVZS5fb2Zmc2V0KXx8KHllLl9vZmZzZXQ9VWUuX29mZnNldCksUyhVZS5fcGYpfHwoeWUuX3BmPU4oVWUpKSxTKFVlLl9sb2NhbGUpfHwoeWUuX2xvY2Fs'@; put 'ZT1VZS5fbG9jYWxlKSxZZT4wKWZvcihjdD0wO2N0PFllO2N0KyspUyhGdD1VZVtpdD1XW2N0XV0pfHwoeWVbaXRdPUZ0KTtyZXR1cm4geWV9ZnVuY3Rpb24gbWUoeWUpe3JlKHRoaXMseWUpLHRoaXMuX2Q9bmV3IERhdGUobnVsbCE9eWUuX2Q/eWUuX2QuZ2V0VGltZSgpOk5hTiksdGhpcy5p'@; put 'c1ZhbGlkKCl8fCh0aGlzLl9kPW5ldyBEYXRlKE5hTikpLCExPT09cSYmKHE9ITAsYy51cGRhdGVPZmZzZXQodGhpcykscT0hMSl9ZnVuY3Rpb24gQ2UoeWUpe3JldHVybiB5ZSBpbnN0YW5jZW9mIG1lfHxudWxsIT15ZSYmbnVsbCE9eWUuX2lzQU1vbWVudE9iamVjdH1mdW5jdGlvbiBJZSh5'@; put 'ZSl7ITE9PT1jLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyYmdHlwZW9mIGNvbnNvbGU8InUiJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiRGVwcmVjYXRpb24gd2FybmluZzogIit5ZSl9ZnVuY3Rpb24ga2UoeWUsVWUpe3ZhciBjdD0hMDtyZXR1cm4gVShmdW5jdGlvbigpe2lm'@; put 'KG51bGwhPWMuZGVwcmVjYXRpb25IYW5kbGVyJiZjLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLHllKSxjdCl7dmFyIEZ0LFllLFhlLGl0PVtdLHlpPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKFllPTA7WWU8eWk7WWUrKyl7aWYoRnQ9IiIsIm9iamVjdCI9PXR5cGVvZiBhcmd1bWVudHNbWWVdKXtm'@; put 'b3IoWGUgaW4gRnQrPSJcblsiK1llKyJdICIsYXJndW1lbnRzWzBdKUMoYXJndW1lbnRzWzBdLFhlKSYmKEZ0Kz1YZSsiOiAiK2FyZ3VtZW50c1swXVtYZV0rIiwgIik7RnQ9RnQuc2xpY2UoMCwtMil9ZWxzZSBGdD1hcmd1bWVudHNbWWVdO2l0LnB1c2goRnQpfUllKHllKyJcbkFyZ3VtZW50'@; put 'czogIitBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpdCkuam9pbigiIikrIlxuIisobmV3IEVycm9yKS5zdGFjayksY3Q9ITF9cmV0dXJuIFVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVWUpfXZhciBCLHFlPXt9O2Z1bmN0aW9uIFgoeWUsVWUpe251bGwhPWMuZGVwcmVjYXRpb25IYW5k'@; put 'bGVyJiZjLmRlcHJlY2F0aW9uSGFuZGxlcih5ZSxVZSkscWVbeWVdfHwoSWUoVWUpLHFlW3llXT0hMCl9ZnVuY3Rpb24gZih5ZSl7cmV0dXJuIHR5cGVvZiBGdW5jdGlvbjwidSImJnllIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBl'@; put 'LnRvU3RyaW5nLmNhbGwoeWUpfWZ1bmN0aW9uIGsoeWUsVWUpe3ZhciBpdCxjdD1VKHt9LHllKTtmb3IoaXQgaW4gVWUpQyhVZSxpdCkmJih2KHllW2l0XSkmJnYoVWVbaXRdKT8oY3RbaXRdPXt9LFUoY3RbaXRdLHllW2l0XSksVShjdFtpdF0sVWVbaXRdKSk6bnVsbCE9VWVbaXRdP2N0W2l0'@; put 'XT1VZVtpdF06ZGVsZXRlIGN0W2l0XSk7Zm9yKGl0IGluIHllKUMoeWUsaXQpJiYhQyhVZSxpdCkmJnYoeWVbaXRdKSYmKGN0W2l0XT1VKHt9LGN0W2l0XSkpO3JldHVybiBjdH1mdW5jdGlvbiBNKHllKXtudWxsIT15ZSYmdGhpcy5zZXQoeWUpfWMuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5p'@; put 'bmdzPSExLGMuZGVwcmVjYXRpb25IYW5kbGVyPW51bGwsQj1PYmplY3Qua2V5cz9PYmplY3Qua2V5czpmdW5jdGlvbih5ZSl7dmFyIFVlLGN0PVtdO2ZvcihVZSBpbiB5ZSlDKHllLFVlKSYmY3QucHVzaChVZSk7cmV0dXJuIGN0fTtmdW5jdGlvbiBEKHllLFVlLGN0KXt2YXIgaXQ9IiIrTWF0'@; put 'aC5hYnMoeWUpO3JldHVybih5ZT49MD9jdD8iKyI6IiI6Ii0iKStNYXRoLnBvdygxMCxNYXRoLm1heCgwLFVlLWl0Lmxlbmd0aCkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpK2l0fXZhciBwPS8oXFtbXlxbXSpcXSl8KFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98'@; put 'ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fE57MSw1fXxZWVlZWVl8WVlZWVl8WVlZWXxZWXx5ezIsNH18eW8/fGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nLEk9LyhcW1teXFtdKlxdKXwoXFwpPyhM'@; put 'VFN8TFR8TEw/TD9MP3xsezEsNH0pL2csdWU9e30sbmU9e307ZnVuY3Rpb24gX2UoeWUsVWUsY3QsaXQpe3ZhciBGdD1pdDsic3RyaW5nIj09dHlwZW9mIGl0JiYoRnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tpdF0oKX0pLHllJiYobmVbeWVdPUZ0KSxVZSYmKG5lW1VlWzBdXT1mdW5jdGlv'@; put 'bigpe3JldHVybiBEKEZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxVZVsxXSxVZVsyXSl9KSxjdCYmKG5lW2N0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKEZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx5ZSl9KX1mdW5jdGlvbiBQZSh5ZSl7cmV0dXJuIHll'@; put 'Lm1hdGNoKC9cW1tcc1xTXS8pP3llLnJlcGxhY2UoL15cW3xcXSQvZywiIik6eWUucmVwbGFjZSgvXFwvZywiIil9ZnVuY3Rpb24gbHQoeWUsVWUpe3JldHVybiB5ZS5pc1ZhbGlkKCk/KFVlPWR0KFVlLHllLmxvY2FsZURhdGEoKSksdWVbVWVdPXVlW1VlXXx8ZnVuY3Rpb24gb3QoeWUpe3Zh'@; put 'ciBjdCxpdCxVZT15ZS5tYXRjaChwKTtmb3IoY3Q9MCxpdD1VZS5sZW5ndGg7Y3Q8aXQ7Y3QrKylVZVtjdF09bmVbVWVbY3RdXT9uZVtVZVtjdF1dOlBlKFVlW2N0XSk7cmV0dXJuIGZ1bmN0aW9uKEZ0KXt2YXIgWGUsWWU9IiI7Zm9yKFhlPTA7WGU8aXQ7WGUrKylZZSs9ZihVZVtYZV0pP1Vl'@; put 'W1hlXS5jYWxsKEZ0LHllKTpVZVtYZV07cmV0dXJuIFllfX0oVWUpLHVlW1VlXSh5ZSkpOnllLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIGR0KHllLFVlKXt2YXIgY3Q9NTtmdW5jdGlvbiBpdChGdCl7cmV0dXJuIFVlLmxvbmdEYXRlRm9ybWF0KEZ0KXx8RnR9Zm9yKEku'@; put 'bGFzdEluZGV4PTA7Y3Q+PTAmJkkudGVzdCh5ZSk7KXllPXllLnJlcGxhY2UoSSxpdCksSS5sYXN0SW5kZXg9MCxjdC09MTtyZXR1cm4geWV9dmFyIHdlPXtEOiJkYXRlIixkYXRlczoiZGF0ZSIsZGF0ZToiZGF0ZSIsZDoiZGF5IixkYXlzOiJkYXkiLGRheToiZGF5IixlOiJ3ZWVrZGF5Iix3'@; put 'ZWVrZGF5czoid2Vla2RheSIsd2Vla2RheToid2Vla2RheSIsRToiaXNvV2Vla2RheSIsaXNvd2Vla2RheXM6Imlzb1dlZWtkYXkiLGlzb3dlZWtkYXk6Imlzb1dlZWtkYXkiLERERDoiZGF5T2ZZZWFyIixkYXlvZnllYXJzOiJkYXlPZlllYXIiLGRheW9meWVhcjoiZGF5T2ZZZWFyIixoOiJo'@; put 'b3VyIixob3VyczoiaG91ciIsaG91cjoiaG91ciIsbXM6Im1pbGxpc2Vjb25kIixtaWxsaXNlY29uZHM6Im1pbGxpc2Vjb25kIixtaWxsaXNlY29uZDoibWlsbGlzZWNvbmQiLG06Im1pbnV0ZSIsbWludXRlczoibWludXRlIixtaW51dGU6Im1pbnV0ZSIsTToibW9udGgiLG1vbnRoczoibW9u'@; put 'dGgiLG1vbnRoOiJtb250aCIsUToicXVhcnRlciIscXVhcnRlcnM6InF1YXJ0ZXIiLHF1YXJ0ZXI6InF1YXJ0ZXIiLHM6InNlY29uZCIsc2Vjb25kczoic2Vjb25kIixzZWNvbmQ6InNlY29uZCIsZ2c6IndlZWtZZWFyIix3ZWVreWVhcnM6IndlZWtZZWFyIix3ZWVreWVhcjoid2Vla1llYXIi'@; put 'LEdHOiJpc29XZWVrWWVhciIsaXNvd2Vla3llYXJzOiJpc29XZWVrWWVhciIsaXNvd2Vla3llYXI6Imlzb1dlZWtZZWFyIix3OiJ3ZWVrIix3ZWVrczoid2VlayIsd2Vlazoid2VlayIsVzoiaXNvV2VlayIsaXNvd2Vla3M6Imlzb1dlZWsiLGlzb3dlZWs6Imlzb1dlZWsiLHk6InllYXIiLHll'@; put 'YXJzOiJ5ZWFyIix5ZWFyOiJ5ZWFyIn07ZnVuY3Rpb24gSmUoeWUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeWU/d2VbeWVdfHx3ZVt5ZS50b0xvd2VyQ2FzZSgpXTp2b2lkIDB9ZnVuY3Rpb24gdHQoeWUpe3ZhciBjdCxpdCxVZT17fTtmb3IoaXQgaW4geWUpQyh5ZSxpdCkmJihjdD1KZShp'@; put 'dCkpJiYoVWVbY3RdPXllW2l0XSk7cmV0dXJuIFVlfXZhciBLZT17ZGF0ZTo5LGRheToxMSx3ZWVrZGF5OjExLGlzb1dlZWtkYXk6MTEsZGF5T2ZZZWFyOjQsaG91cjoxMyxtaWxsaXNlY29uZDoxNixtaW51dGU6MTQsbW9udGg6OCxxdWFydGVyOjcsc2Vjb25kOjE1LHdlZWtZZWFyOjEsaXNv'@; put 'V2Vla1llYXI6MSx3ZWVrOjUsaXNvV2Vlazo1LHllYXI6MX07dmFyIFp0LFJ0PS9cZC8sTHQ9L1xkXGQvLEd0PS9cZHszfS8sZ3Q9L1xkezR9LyxYdD0vWystXT9cZHs2fS8sTHI9L1xkXGQ/Lyxsbj0vXGRcZFxkXGQ/LyxPbj0vXGRcZFxkXGRcZFxkPy8sUXI9L1xkezEsM30vLHRyPS9cZHsx'@; put 'LDR9LyxIbj0vWystXT9cZHsxLDZ9LyxPbz0vXGQrLyx1cj0vWystXT9cZCsvLFpuPS9afFsrLV1cZFxkOj9cZFxkL2dpLFNuPS9afFsrLV1cZFxkKD86Oj9cZFxkKT8vZ2ksVHQ9L1swLTldezAsMjU2fVsnYS16XHUwMEEwLVx1MDVGRlx1MDcwMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYw'@; put 'LVx1RkYwN1x1RkYxMC1cdUZGRUZdezEsMjU2fXxbXHUwNjAwLVx1MDZGRlwvXXsxLDI1Nn0oXHMqP1tcdTA2MDAtXHUwNkZGXXsxLDI1Nn0pezEsMn0vaSxBcj0vXlsxLTldXGQ/Lyxfbj0vXihbMS05XVxkfFxkKS87ZnVuY3Rpb24gTm4oeWUsVWUsY3Qpe1p0W3llXT1mKFVlKT9VZTpmdW5j'@; put 'dGlvbihpdCxGdCl7cmV0dXJuIGl0JiZjdD9jdDpVZX19ZnVuY3Rpb24gcHQoeWUsVWUpe3JldHVybiBDKFp0LHllKT9adFt5ZV0oVWUuX3N0cmljdCxVZS5fbG9jYWxlKTpuZXcgUmVnRXhwKGZ1bmN0aW9uIHBuKHllKXtyZXR1cm4gTWkoeWUucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9c'@; put 'XChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csZnVuY3Rpb24oVWUsY3QsaXQsRnQsWWUpe3JldHVybiBjdHx8aXR8fEZ0fHxZZX0pKX0oeWUpKX1mdW5jdGlvbiBNaSh5ZSl7cmV0dXJuIHllLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9ZnVuY3Rp'@; put 'b24gR2UoeWUpe3JldHVybiB5ZTwwP01hdGguY2VpbCh5ZSl8fDA6TWF0aC5mbG9vcih5ZSl9ZnVuY3Rpb24gVXQoeWUpe3ZhciBVZT0reWUsY3Q9MDtyZXR1cm4gMCE9PVVlJiZpc0Zpbml0ZShVZSkmJihjdD1HZShVZSkpLGN0fVp0PXt9O3ZhciB2cj17fTtmdW5jdGlvbiB4dCh5ZSxVZSl7'@; put 'dmFyIGN0LEZ0LGl0PVVlO2Zvcigic3RyaW5nIj09dHlwZW9mIHllJiYoeWU9W3llXSksTChVZSkmJihpdD1mdW5jdGlvbihZZSxYZSl7WGVbVWVdPVV0KFllKX0pLEZ0PXllLmxlbmd0aCxjdD0wO2N0PEZ0O2N0KyspdnJbeWVbY3RdXT1pdH1mdW5jdGlvbiBCdCh5ZSxVZSl7eHQoeWUsZnVu'@; put 'Y3Rpb24oY3QsaXQsRnQsWWUpe0Z0Ll93PUZ0Ll93fHx7fSxVZShjdCxGdC5fdyxGdCxZZSl9KX1mdW5jdGlvbiB6bih5ZSxVZSxjdCl7bnVsbCE9VWUmJkModnIseWUpJiZ2clt5ZV0oVWUsY3QuX2EsY3QseWUpfWZ1bmN0aW9uIEduKHllKXtyZXR1cm4geWUlND09MCYmeWUlMTAwIT0wfHx5'@; put 'ZSU0MDA9PTB9dmFyIHluPTAsdmk9MSxycj0yLGhyPTMscG89NCx2bj01LEJuPTYsamE9Nyxqbz04O2Z1bmN0aW9uIFhyKHllKXtyZXR1cm4gR24oeWUpPzM2NjozNjV9X2UoIlkiLDAsMCxmdW5jdGlvbigpe3ZhciB5ZT10aGlzLnllYXIoKTtyZXR1cm4geWU8PTk5OTk/RCh5ZSw0KToiKyIr'@; put 'eWV9KSxfZSgwLFsiWVkiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSksX2UoMCxbIllZWVkiLDRdLDAsInllYXIiKSxfZSgwLFsiWVlZWVkiLDVdLDAsInllYXIiKSxfZSgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksTm4oIlkiLHVyKSxObigiWVkiLExyLEx0'@; put 'KSxObigiWVlZWSIsdHIsZ3QpLE5uKCJZWVlZWSIsSG4sWHQpLE5uKCJZWVlZWVkiLEhuLFh0KSx4dChbIllZWVlZIiwiWVlZWVlZIl0seW4pLHh0KCJZWVlZIixmdW5jdGlvbih5ZSxVZSl7VWVbeW5dPTI9PT15ZS5sZW5ndGg/Yy5wYXJzZVR3b0RpZ2l0WWVhcih5ZSk6VXQoeWUpfSkseHQo'@; put 'IllZIixmdW5jdGlvbih5ZSxVZSl7VWVbeW5dPWMucGFyc2VUd29EaWdpdFllYXIoeWUpfSkseHQoIlkiLGZ1bmN0aW9uKHllLFVlKXtVZVt5bl09cGFyc2VJbnQoeWUsMTApfSksYy5wYXJzZVR3b0RpZ2l0WWVhcj1mdW5jdGlvbih5ZSl7cmV0dXJuIFV0KHllKSsoVXQoeWUpPjY4PzE5MDA6'@; put 'MmUzKX07dmFyIHRhLGVhPWNhKCJGdWxsWWVhciIsITApO2Z1bmN0aW9uIGNhKHllLFVlKXtyZXR1cm4gZnVuY3Rpb24oY3Qpe3JldHVybiBudWxsIT1jdD8oaG8odGhpcyx5ZSxjdCksYy51cGRhdGVPZmZzZXQodGhpcyxVZSksdGhpcyk6Q2kodGhpcyx5ZSl9fWZ1bmN0aW9uIENpKHllLFVl'@; put 'KXtpZigheWUuaXNWYWxpZCgpKXJldHVybiBOYU47dmFyIGN0PXllLl9kLGl0PXllLl9pc1VUQztzd2l0Y2goVWUpe2Nhc2UiTWlsbGlzZWNvbmRzIjpyZXR1cm4gaXQ/Y3QuZ2V0VVRDTWlsbGlzZWNvbmRzKCk6Y3QuZ2V0TWlsbGlzZWNvbmRzKCk7Y2FzZSJTZWNvbmRzIjpyZXR1cm4gaXQ/'@; put 'Y3QuZ2V0VVRDU2Vjb25kcygpOmN0LmdldFNlY29uZHMoKTtjYXNlIk1pbnV0ZXMiOnJldHVybiBpdD9jdC5nZXRVVENNaW51dGVzKCk6Y3QuZ2V0TWludXRlcygpO2Nhc2UiSG91cnMiOnJldHVybiBpdD9jdC5nZXRVVENIb3VycygpOmN0LmdldEhvdXJzKCk7Y2FzZSJEYXRlIjpyZXR1cm4g'@; put 'aXQ/Y3QuZ2V0VVRDRGF0ZSgpOmN0LmdldERhdGUoKTtjYXNlIkRheSI6cmV0dXJuIGl0P2N0LmdldFVUQ0RheSgpOmN0LmdldERheSgpO2Nhc2UiTW9udGgiOnJldHVybiBpdD9jdC5nZXRVVENNb250aCgpOmN0LmdldE1vbnRoKCk7Y2FzZSJGdWxsWWVhciI6cmV0dXJuIGl0P2N0LmdldFVU'@; put 'Q0Z1bGxZZWFyKCk6Y3QuZ2V0RnVsbFllYXIoKTtkZWZhdWx0OnJldHVybiBOYU59fWZ1bmN0aW9uIGhvKHllLFVlLGN0KXt2YXIgaXQsRnQsWWUsWGUseWk7aWYoeWUuaXNWYWxpZCgpJiYhaXNOYU4oY3QpKXtzd2l0Y2goaXQ9eWUuX2QsRnQ9eWUuX2lzVVRDLFVlKXtjYXNlIk1pbGxpc2Vj'@; put 'b25kcyI6cmV0dXJuIHZvaWQoRnQ/aXQuc2V0VVRDTWlsbGlzZWNvbmRzKGN0KTppdC5zZXRNaWxsaXNlY29uZHMoY3QpKTtjYXNlIlNlY29uZHMiOnJldHVybiB2b2lkKEZ0P2l0LnNldFVUQ1NlY29uZHMoY3QpOml0LnNldFNlY29uZHMoY3QpKTtjYXNlIk1pbnV0ZXMiOnJldHVybiB2b2lk'@; put 'KEZ0P2l0LnNldFVUQ01pbnV0ZXMoY3QpOml0LnNldE1pbnV0ZXMoY3QpKTtjYXNlIkhvdXJzIjpyZXR1cm4gdm9pZChGdD9pdC5zZXRVVENIb3VycyhjdCk6aXQuc2V0SG91cnMoY3QpKTtjYXNlIkRhdGUiOnJldHVybiB2b2lkKEZ0P2l0LnNldFVUQ0RhdGUoY3QpOml0LnNldERhdGUoY3Qp'@; put 'KTtjYXNlIkZ1bGxZZWFyIjpicmVhaztkZWZhdWx0OnJldHVybn1ZZT1jdCxYZT15ZS5tb250aCgpLHlpPTI5IT09KHlpPXllLmRhdGUoKSl8fDEhPT1YZXx8R24oWWUpP3lpOjI4LEZ0P2l0LnNldFVUQ0Z1bGxZZWFyKFllLFhlLHlpKTppdC5zZXRGdWxsWWVhcihZZSxYZSx5aSl9fWZ1bmN0'@; put 'aW9uIE1yKHllLFVlKXtpZihpc05hTih5ZSl8fGlzTmFOKFVlKSlyZXR1cm4gTmFOO3ZhciBjdD1mdW5jdGlvbiBCaSh5ZSxVZSl7cmV0dXJuKHllJVVlK1VlKSVVZX0oVWUsMTIpO3JldHVybiB5ZSs9KFVlLWN0KS8xMiwxPT09Y3Q/R24oeWUpPzI5OjI4OjMxLWN0JTclMn10YT1BcnJheS5w'@; put 'cm90b3R5cGUuaW5kZXhPZj9BcnJheS5wcm90b3R5cGUuaW5kZXhPZjpmdW5jdGlvbih5ZSl7dmFyIFVlO2ZvcihVZT0wO1VlPHRoaXMubGVuZ3RoOysrVWUpaWYodGhpc1tVZV09PT15ZSlyZXR1cm4gVWU7cmV0dXJuLTF9LF9lKCJNIixbIk1NIiwyXSwiTW8iLGZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IHRoaXMubW9udGgoKSsxfSksX2UoIk1NTSIsMCwwLGZ1bmN0aW9uKHllKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyx5ZSl9KSxfZSgiTU1NTSIsMCwwLGZ1bmN0aW9uKHllKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMseWUpfSksTm4o'@; put 'Ik0iLExyLEFyKSxObigiTU0iLExyLEx0KSxObigiTU1NIixmdW5jdGlvbih5ZSxVZSl7cmV0dXJuIFVlLm1vbnRoc1Nob3J0UmVnZXgoeWUpfSksTm4oIk1NTU0iLGZ1bmN0aW9uKHllLFVlKXtyZXR1cm4gVWUubW9udGhzUmVnZXgoeWUpfSkseHQoWyJNIiwiTU0iXSxmdW5jdGlvbih5ZSxV'@; put 'ZSl7VWVbdmldPVV0KHllKS0xfSkseHQoWyJNTU0iLCJNTU1NIl0sZnVuY3Rpb24oeWUsVWUsY3QsaXQpe3ZhciBGdD1jdC5fbG9jYWxlLm1vbnRoc1BhcnNlKHllLGl0LGN0Ll9zdHJpY3QpO251bGwhPUZ0P1VlW3ZpXT1GdDpOKGN0KS5pbnZhbGlkTW9udGg9eWV9KTt2YXIgRnM9IkphbnVh'@; put 'cnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksJGk9Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLF9zPS9EW29E'@; put 'XT8oXFtbXlxbXF1dKlxdfFxzKStNTU1NPy8sanM9VHQsQ2w9VHQ7ZnVuY3Rpb24gUWgoeWUsVWUsY3Qpe3ZhciBpdCxGdCxZZSxYZT15ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl9tb250aHNQYXJzZSlmb3IodGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1Bh'@; put 'cnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10saXQ9MDtpdDwxMjsrK2l0KVllPUgoWzJlMyxpdF0pLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaXRdPXRoaXMubW9udGhzU2hvcnQoWWUsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2l0XT10aGlz'@; put 'Lm1vbnRocyhZZSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gY3Q/Ik1NTSI9PT1VZT8tMSE9PShGdD10YS5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsWGUpKT9GdDpudWxsOi0xIT09KEZ0PXRhLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLFhlKSk/RnQ6bnVsbDoiTU1N'@; put 'Ij09PVVlPy0xIT09KEZ0PXRhLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxYZSkpfHwtMSE9PShGdD10YS5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxYZSkpP0Z0Om51bGw6LTEhPT0oRnQ9dGEuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsWGUpKXx8LTEhPT0oRnQ9dGEuY2Fs'@; put 'bCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLFhlKSk/RnQ6bnVsbH1mdW5jdGlvbiBJbCh5ZSxVZSl7aWYoIXllLmlzVmFsaWQoKSlyZXR1cm4geWU7aWYoInN0cmluZyI9PXR5cGVvZiBVZSlpZigvXlxkKyQvLnRlc3QoVWUpKVVlPVV0KFVlKTtlbHNlIGlmKCFMKFVlPXllLmxvY2FsZURhdGEo'@; put 'KS5tb250aHNQYXJzZShVZSkpKXJldHVybiB5ZTt2YXIgY3Q9VWUsaXQ9eWUuZGF0ZSgpO3JldHVybiBpdD1pdDwyOT9pdDpNYXRoLm1pbihpdCxNcih5ZS55ZWFyKCksY3QpKSx5ZS5faXNVVEM/eWUuX2Quc2V0VVRDTW9udGgoY3QsaXQpOnllLl9kLnNldE1vbnRoKGN0LGl0KSx5ZX1mdW5j'@; put 'dGlvbiBnMih5ZSl7cmV0dXJuIG51bGwhPXllPyhJbCh0aGlzLHllKSxjLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTpDaSh0aGlzLCJNb250aCIpfWZ1bmN0aW9uIFJzKCl7ZnVuY3Rpb24geWUoV2EsU3Mpe3JldHVybiBTcy5sZW5ndGgtV2EubGVuZ3RofXZhciBGdCxZZSxYZSx5aSxV'@; put 'ZT1bXSxjdD1bXSxpdD1bXTtmb3IoRnQ9MDtGdDwxMjtGdCsrKVllPUgoWzJlMyxGdF0pLFhlPU1pKHRoaXMubW9udGhzU2hvcnQoWWUsIiIpKSx5aT1NaSh0aGlzLm1vbnRocyhZZSwiIikpLFVlLnB1c2goWGUpLGN0LnB1c2goeWkpLGl0LnB1c2goeWkpLGl0LnB1c2goWGUpO1VlLnNvcnQo'@; put 'eWUpLGN0LnNvcnQoeWUpLGl0LnNvcnQoeWUpLHRoaXMuX21vbnRoc1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitpdC5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRSZWdleD10aGlzLl9tb250aHNSZWdleCx0aGlzLl9tb250aHNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIr'@; put 'Y3Quam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK1VlLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBMMCh5ZSxVZSxjdCxpdCxGdCxZZSxYZSl7dmFyIHlpO3JldHVybiB5ZTwxMDAmJnllPj0wPyh5aT1uZXcgRGF0ZSh5'@; put 'ZSs0MDAsVWUsY3QsaXQsRnQsWWUsWGUpLGlzRmluaXRlKHlpLmdldEZ1bGxZZWFyKCkpJiZ5aS5zZXRGdWxsWWVhcih5ZSkpOnlpPW5ldyBEYXRlKHllLFVlLGN0LGl0LEZ0LFllLFhlKSx5aX1mdW5jdGlvbiBKdSh5ZSl7dmFyIFVlLGN0O3JldHVybiB5ZTwxMDAmJnllPj0wPygoY3Q9QXJy'@; put 'YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSlbMF09eWUrNDAwLFVlPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsY3QpKSxpc0Zpbml0ZShVZS5nZXRVVENGdWxsWWVhcigpKSYmVWUuc2V0VVRDRnVsbFllYXIoeWUpKTpVZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShu'@; put 'dWxsLGFyZ3VtZW50cykpLFVlfWZ1bmN0aW9uIHlkKHllLFVlLGN0KXt2YXIgaXQ9NytVZS1jdDtyZXR1cm4tKDcrSnUoeWUsMCxpdCkuZ2V0VVRDRGF5KCktVWUpJTcraXQtMX1mdW5jdGlvbiBVbyh5ZSxVZSxjdCxpdCxGdCl7dmFyIFdhLFNzLHlpPTErNyooVWUtMSkrKDcrY3QtaXQpJTcr'@; put 'eWQoeWUsaXQsRnQpO3JldHVybiB5aTw9MD9Tcz1YcihXYT15ZS0xKSt5aTp5aT5Ycih5ZSk/KFdhPXllKzEsU3M9eWktWHIoeWUpKTooV2E9eWUsU3M9eWkpLHt5ZWFyOldhLGRheU9mWWVhcjpTc319ZnVuY3Rpb24gZmEoeWUsVWUsY3Qpe3ZhciBZZSxYZSxpdD15ZCh5ZS55ZWFyKCksVWUs'@; put 'Y3QpLEZ0PU1hdGguZmxvb3IoKHllLmRheU9mWWVhcigpLWl0LTEpLzcpKzE7cmV0dXJuIEZ0PDE/WWU9RnQrVnIoWGU9eWUueWVhcigpLTEsVWUsY3QpOkZ0PlZyKHllLnllYXIoKSxVZSxjdCk/KFllPUZ0LVZyKHllLnllYXIoKSxVZSxjdCksWGU9eWUueWVhcigpKzEpOihYZT15ZS55ZWFy'@; put 'KCksWWU9RnQpLHt3ZWVrOlllLHllYXI6WGV9fWZ1bmN0aW9uIFZyKHllLFVlLGN0KXt2YXIgaXQ9eWQoeWUsVWUsY3QpLEZ0PXlkKHllKzEsVWUsY3QpO3JldHVybihYcih5ZSktaXQrRnQpLzd9X2UoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSxfZSgiVyIsWyJXVyIsMl0sIldvIiwiaXNv'@; put 'V2VlayIpLE5uKCJ3IixMcixBciksTm4oInd3IixMcixMdCksTm4oIlciLExyLEFyKSxObigiV1ciLExyLEx0KSxCdChbInciLCJ3dyIsIlciLCJXVyJdLGZ1bmN0aW9uKHllLFVlLGN0LGl0KXtVZVtpdC5zdWJzdHIoMCwxKV09VXQoeWUpfSk7ZnVuY3Rpb24gbmgoeWUsVWUpe3JldHVybiB5'@; put 'ZS5zbGljZShVZSw3KS5jb25jYXQoeWUuc2xpY2UoMCxVZSkpfV9lKCJkIiwwLCJkbyIsImRheSIpLF9lKCJkZCIsMCwwLGZ1bmN0aW9uKHllKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcyx5ZSl9KSxfZSgiZGRkIiwwLDAsZnVuY3Rpb24oeWUpe3JldHVybiB0'@; put 'aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMseWUpfSksX2UoImRkZGQiLDAsMCxmdW5jdGlvbih5ZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMseWUpfSksX2UoImUiLDAsMCwid2Vla2RheSIpLF9lKCJFIiwwLDAsImlzb1dlZWtkYXkiKSxObigi'@; put 'ZCIsTHIpLE5uKCJlIixMciksTm4oIkUiLExyKSxObigiZGQiLGZ1bmN0aW9uKHllLFVlKXtyZXR1cm4gVWUud2Vla2RheXNNaW5SZWdleCh5ZSl9KSxObigiZGRkIixmdW5jdGlvbih5ZSxVZSl7cmV0dXJuIFVlLndlZWtkYXlzU2hvcnRSZWdleCh5ZSl9KSxObigiZGRkZCIsZnVuY3Rpb24o'@; put 'eWUsVWUpe3JldHVybiBVZS53ZWVrZGF5c1JlZ2V4KHllKX0pLEJ0KFsiZGQiLCJkZGQiLCJkZGRkIl0sZnVuY3Rpb24oeWUsVWUsY3QsaXQpe3ZhciBGdD1jdC5fbG9jYWxlLndlZWtkYXlzUGFyc2UoeWUsaXQsY3QuX3N0cmljdCk7bnVsbCE9RnQ/VWUuZD1GdDpOKGN0KS5pbnZhbGlkV2Vl'@; put 'a2RheT15ZX0pLEJ0KFsiZCIsImUiLCJFIl0sZnVuY3Rpb24oeWUsVWUsY3QsaXQpe1VlW2l0XT1VdCh5ZSl9KTt2YXIgd2c9IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLEpjPSJTdW5fTW9uX1R1ZV9XZWRfVGh1'@; put 'X0ZyaV9TYXQiLnNwbGl0KCJfIiksZ2Y9IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxwPVR0LERsPVR0LEVvPVR0O2Z1bmN0aW9uIGhjKHllLFVlLGN0KXt2YXIgaXQsRnQsWWUsWGU9eWUudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fd2Vla2RheXNQYXJzZSlmb3Io'@; put 'dGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQYXJzZT1bXSxpdD0wO2l0PDc7KytpdClZZT1IKFsyZTMsMV0pLmRheShpdCksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpdF09dGhpcy53ZWVrZGF5c01pbihZZSwiIiku'@; put 'dG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaXRdPXRoaXMud2Vla2RheXNTaG9ydChZZSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2l0XT10aGlzLndlZWtkYXlzKFllLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVy'@; put 'biBjdD8iZGRkZCI9PT1VZT8tMSE9PShGdD10YS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsWGUpKT9GdDpudWxsOiJkZGQiPT09VWU/LTEhPT0oRnQ9dGEuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsWGUpKT9GdDpudWxsOi0xIT09KEZ0PXRhLmNhbGwodGhpcy5fbWluV2Vla2Rh'@; put 'eXNQYXJzZSxYZSkpP0Z0Om51bGw6ImRkZGQiPT09VWU/LTEhPT0oRnQ9dGEuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFhlKSl8fC0xIT09KEZ0PXRhLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFhlKSl8fC0xIT09KEZ0PXRhLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxY'@; put 'ZSkpP0Z0Om51bGw6ImRkZCI9PT1VZT8tMSE9PShGdD10YS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxYZSkpfHwtMSE9PShGdD10YS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsWGUpKXx8LTEhPT0oRnQ9dGEuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLFhlKSk/RnQ6bnVs'@; put 'bDotMSE9PShGdD10YS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsWGUpKXx8LTEhPT0oRnQ9dGEuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFhlKSl8fC0xIT09KEZ0PXRhLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFhlKSk/RnQ6bnVsbH1mdW5jdGlvbiBpcigpe2Z1bmN0'@; put 'aW9uIHllKFdzLGMxKXtyZXR1cm4gYzEubGVuZ3RoLVdzLmxlbmd0aH12YXIgWWUsWGUseWksV2EsU3MsVWU9W10sY3Q9W10saXQ9W10sRnQ9W107Zm9yKFllPTA7WWU8NztZZSsrKVhlPUgoWzJlMywxXSkuZGF5KFllKSx5aT1NaSh0aGlzLndlZWtkYXlzTWluKFhlLCIiKSksV2E9TWkodGhp'@; put 'cy53ZWVrZGF5c1Nob3J0KFhlLCIiKSksU3M9TWkodGhpcy53ZWVrZGF5cyhYZSwiIikpLFVlLnB1c2goeWkpLGN0LnB1c2goV2EpLGl0LnB1c2goU3MpLEZ0LnB1c2goeWkpLEZ0LnB1c2goV2EpLEZ0LnB1c2goU3MpO1VlLnNvcnQoeWUpLGN0LnNvcnQoeWUpLGl0LnNvcnQoeWUpLEZ0LnNv'@; put 'cnQoeWUpLHRoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK0Z0LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c01pblJlZ2V4PXRoaXMuX3dlZWtkYXlzUmVnZXgsdGhpcy5fd2Vla2Rh'@; put 'eXNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIraXQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrY3Quam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigi'@; put 'K1VlLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBnaSgpe3JldHVybiB0aGlzLmhvdXJzKCklMTJ8fDEyfWZ1bmN0aW9uIGxzKHllLFVlKXtfZSh5ZSwwLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygp'@; put 'LFVlKX0pfWZ1bmN0aW9uIEVyKHllLFVlKXtyZXR1cm4gVWUuX21lcmlkaWVtUGFyc2V9X2UoIkgiLFsiSEgiLDJdLDAsImhvdXIiKSxfZSgiaCIsWyJoaCIsMl0sMCxnaSksX2UoImsiLFsia2siLDJdLDAsZnVuY3Rpb24gd28oKXtyZXR1cm4gdGhpcy5ob3VycygpfHwyNH0pLF9lKCJobW0i'@; put 'LDAsMCxmdW5jdGlvbigpe3JldHVybiIiK2dpLmFwcGx5KHRoaXMpK0QodGhpcy5taW51dGVzKCksMil9KSxfZSgiaG1tc3MiLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK2dpLmFwcGx5KHRoaXMpK0QodGhpcy5taW51dGVzKCksMikrRCh0aGlzLnNlY29uZHMoKSwyKX0pLF9lKCJIbW0iLDAs'@; put 'MCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStEKHRoaXMubWludXRlcygpLDIpfSksX2UoIkhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0aGlzLmhvdXJzKCkrRCh0aGlzLm1pbnV0ZXMoKSwyKStEKHRoaXMuc2Vjb25kcygpLDIpfSksbHMoImEiLCEwKSxscygiQSIs'@; put 'ITEpLE5uKCJhIixFciksTm4oIkEiLEVyKSxObigiSCIsTHIsX24pLE5uKCJoIixMcixBciksTm4oImsiLExyLEFyKSxObigiSEgiLExyLEx0KSxObigiaGgiLExyLEx0KSxObigia2siLExyLEx0KSxObigiaG1tIixsbiksTm4oImhtbXNzIixPbiksTm4oIkhtbSIsbG4pLE5uKCJIbW1zcyIs'@; put 'T24pLHh0KFsiSCIsIkhIIl0saHIpLHh0KFsiayIsImtrIl0sZnVuY3Rpb24oeWUsVWUsY3Qpe3ZhciBpdD1VdCh5ZSk7VWVbaHJdPTI0PT09aXQ/MDppdH0pLHh0KFsiYSIsIkEiXSxmdW5jdGlvbih5ZSxVZSxjdCl7Y3QuX2lzUG09Y3QuX2xvY2FsZS5pc1BNKHllKSxjdC5fbWVyaWRpZW09'@; put 'eWV9KSx4dChbImgiLCJoaCJdLGZ1bmN0aW9uKHllLFVlLGN0KXtVZVtocl09VXQoeWUpLE4oY3QpLmJpZ0hvdXI9ITB9KSx4dCgiaG1tIixmdW5jdGlvbih5ZSxVZSxjdCl7dmFyIGl0PXllLmxlbmd0aC0yO1VlW2hyXT1VdCh5ZS5zdWJzdHIoMCxpdCkpLFVlW3BvXT1VdCh5ZS5zdWJzdHIo'@; put 'aXQpKSxOKGN0KS5iaWdIb3VyPSEwfSkseHQoImhtbXNzIixmdW5jdGlvbih5ZSxVZSxjdCl7dmFyIGl0PXllLmxlbmd0aC00LEZ0PXllLmxlbmd0aC0yO1VlW2hyXT1VdCh5ZS5zdWJzdHIoMCxpdCkpLFVlW3BvXT1VdCh5ZS5zdWJzdHIoaXQsMikpLFVlW3ZuXT1VdCh5ZS5zdWJzdHIoRnQp'@; put 'KSxOKGN0KS5iaWdIb3VyPSEwfSkseHQoIkhtbSIsZnVuY3Rpb24oeWUsVWUsY3Qpe3ZhciBpdD15ZS5sZW5ndGgtMjtVZVtocl09VXQoeWUuc3Vic3RyKDAsaXQpKSxVZVtwb109VXQoeWUuc3Vic3RyKGl0KSl9KSx4dCgiSG1tc3MiLGZ1bmN0aW9uKHllLFVlLGN0KXt2YXIgaXQ9eWUubGVu'@; put 'Z3RoLTQsRnQ9eWUubGVuZ3RoLTI7VWVbaHJdPVV0KHllLnN1YnN0cigwLGl0KSksVWVbcG9dPVV0KHllLnN1YnN0cihpdCwyKSksVWVbdm5dPVV0KHllLnN1YnN0cihGdCkpfSk7dmFyIHVsPWNhKCJIb3VycyIsITApO3ZhciBMbCx0dT17Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0g'@; put 'TFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJo'@; put 'Om1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9c'@; put 'ZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLHc6'@; put 'ImEgd2VlayIsd3c6IiVkIHdlZWtzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG1vbnRoczpGcyxtb250aHNTaG9ydDokaSx3ZWVrOntkb3c6MCxkb3k6Nn0sd2Vla2RheXM6d2csd2Vla2RheXNNaW46Z2Ysd2Vla2RheXNTaG9ydDpKYyxt'@; put 'ZXJpZGllbVBhcnNlOi9bYXBdXC4/bT9cLj8vaX0sZ3M9e30sT2M9e307ZnVuY3Rpb24gQWgoeWUsVWUpe3ZhciBjdCxpdD1NYXRoLm1pbih5ZS5sZW5ndGgsVWUubGVuZ3RoKTtmb3IoY3Q9MDtjdDxpdDtjdCs9MSlpZih5ZVtjdF0hPT1VZVtjdF0pcmV0dXJuIGN0O3JldHVybiBpdH1mdW5j'@; put 'dGlvbiBKaCh5ZSl7cmV0dXJuIHllJiZ5ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIil9ZnVuY3Rpb24gRnIoeWUpe3ZhciBVZT1udWxsO2lmKHZvaWQgMD09PWdzW3llXSYmZmUmJmZlLmV4cG9ydHMmJmZ1bmN0aW9uIEVjKHllKXtyZXR1cm4hKCF5ZXx8IXllLm1hdGNoKCJeW14v'@; put 'XFxcXF0qJCIpKX0oeWUpKXRyeXtVZT1MbC5fYWJicixoKDM1MzU4KSgiLi8iK3llKSxJdShVZSl9Y2F0Y2h7Z3NbeWVdPW51bGx9cmV0dXJuIGdzW3llXX1mdW5jdGlvbiBJdSh5ZSxVZSl7dmFyIGN0O3JldHVybiB5ZSYmKChjdD1TKFVlKT9yaCh5ZSk6TWMoeWUsVWUpKT9MbD1jdDp0eXBl'@; put 'b2YgY29uc29sZTwidSImJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJMb2NhbGUgIit5ZSsiIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8iKSksTGwuX2FiYnJ9ZnVuY3Rpb24gTWMoeWUsVWUpe2lmKG51bGwhPT1VZSl7dmFyIGN0LGl0PXR1O2lmKFVlLmFiYnI9'@; put 'eWUsbnVsbCE9Z3NbeWVdKVgoImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9u'@; put 'bHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIiksaXQ9Z3NbeWVdLl9jb25maWc7ZWxzZSBpZihudWxsIT1VZS5wYXJlbnRMb2NhbGUpaWYobnVs'@; put 'bCE9Z3NbVWUucGFyZW50TG9jYWxlXSlpdD1nc1tVZS5wYXJlbnRMb2NhbGVdLl9jb25maWc7ZWxzZXtpZihudWxsPT0oY3Q9RnIoVWUucGFyZW50TG9jYWxlKSkpcmV0dXJuIE9jW1VlLnBhcmVudExvY2FsZV18fChPY1tVZS5wYXJlbnRMb2NhbGVdPVtdKSxPY1tVZS5wYXJlbnRMb2NhbGVd'@; put 'LnB1c2goe25hbWU6eWUsY29uZmlnOlVlfSksbnVsbDtpdD1jdC5fY29uZmlnfXJldHVybiBnc1t5ZV09bmV3IE0oayhpdCxVZSkpLE9jW3llXSYmT2NbeWVdLmZvckVhY2goZnVuY3Rpb24oRnQpe01jKEZ0Lm5hbWUsRnQuY29uZmlnKX0pLEl1KHllKSxnc1t5ZV19cmV0dXJuIGRlbGV0ZSBn'@; put 'c1t5ZV0sbnVsbH1mdW5jdGlvbiByaCh5ZSl7dmFyIFVlO2lmKHllJiZ5ZS5fbG9jYWxlJiZ5ZS5fbG9jYWxlLl9hYmJyJiYoeWU9eWUuX2xvY2FsZS5fYWJiciksIXllKXJldHVybiBMbDtpZighQSh5ZSkpe2lmKFVlPUZyKHllKSlyZXR1cm4gVWU7eWU9W3llXX1yZXR1cm4gZnVuY3Rpb24g'@; put 'T2woeWUpe2Zvcih2YXIgY3QsaXQsRnQsWWUsVWU9MDtVZTx5ZS5sZW5ndGg7KXtmb3IoY3Q9KFllPUpoKHllW1VlXSkuc3BsaXQoIi0iKSkubGVuZ3RoLGl0PShpdD1KaCh5ZVtVZSsxXSkpP2l0LnNwbGl0KCItIik6bnVsbDtjdD4wOyl7aWYoRnQ9RnIoWWUuc2xpY2UoMCxjdCkuam9pbigi'@; put 'LSIpKSlyZXR1cm4gRnQ7aWYoaXQmJml0Lmxlbmd0aD49Y3QmJkFoKFllLGl0KT49Y3QtMSlicmVhaztjdC0tfVVlKyt9cmV0dXJuIExsfSh5ZSl9ZnVuY3Rpb24gdjIoeWUpe3ZhciBVZSxjdD15ZS5fYTtyZXR1cm4gY3QmJi0yPT09Tih5ZSkub3ZlcmZsb3cmJihVZT1jdFt2aV08MHx8Y3Rb'@; put 'dmldPjExP3ZpOmN0W3JyXTwxfHxjdFtycl0+TXIoY3RbeW5dLGN0W3ZpXSk/cnI6Y3RbaHJdPDB8fGN0W2hyXT4yNHx8MjQ9PT1jdFtocl0mJigwIT09Y3RbcG9dfHwwIT09Y3Rbdm5dfHwwIT09Y3RbQm5dKT9ocjpjdFtwb108MHx8Y3RbcG9dPjU5P3BvOmN0W3ZuXTwwfHxjdFt2bl0+NTk/'@; put 'dm46Y3RbQm5dPDB8fGN0W0JuXT45OTk/Qm46LTEsTih5ZSkuX292ZXJmbG93RGF5T2ZZZWFyJiYoVWU8eW58fFVlPnJyKSYmKFVlPXJyKSxOKHllKS5fb3ZlcmZsb3dXZWVrcyYmLTE9PT1VZSYmKFVlPWphKSxOKHllKS5fb3ZlcmZsb3dXZWVrZGF5JiYtMT09PVVlJiYoVWU9am8pLE4oeWUp'@; put 'Lm92ZXJmbG93PVVlKSx5ZX12YXIgdGQ9L15ccyooKD86WystXVxkezZ9fFxkezR9KS0oPzpcZFxkLVxkXGR8V1xkXGQtXGR8V1xkXGR8XGRcZFxkfFxkXGQpKSg/OihUfCApKFxkXGQoPzo6XGRcZCg/OjpcZFxkKD86Wy4sXVxkKyk/KT8pPykoWystXVxkXGQoPzo6P1xkXGQpP3xccypaKT8p'@; put 'PyQvLE8wPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkoPzpcZFxkXGRcZHxXXGRcZFxkfFdcZFxkfFxkXGRcZHxcZFxkfCkpKD86KFR8ICkoXGRcZCg/OlxkXGQoPzpcZFxkKD86Wy4sXVxkKyk/KT8pPykoWystXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLE9tPS9afFsrLV1cZFxkKD86'@; put 'Oj9cZFxkKT8vLGlhPVtbIllZWVlZWS1NTS1ERCIsL1srLV1cZHs2fS1cZFxkLVxkXGQvXSxbIllZWVktTU0tREQiLC9cZHs0fS1cZFxkLVxkXGQvXSxbIkdHR0ctW1ddV1ctRSIsL1xkezR9LVdcZFxkLVxkL10sWyJHR0dHLVtXXVdXIiwvXGR7NH0tV1xkXGQvLCExXSxbIllZWVktREREIiwv'@; put 'XGR7NH0tXGR7M30vXSxbIllZWVktTU0iLC9cZHs0fS1cZFxkLywhMV0sWyJZWVlZWVlNTUREIiwvWystXVxkezEwfS9dLFsiWVlZWU1NREQiLC9cZHs4fS9dLFsiR0dHR1tXXVdXRSIsL1xkezR9V1xkezN9L10sWyJHR0dHW1ddV1ciLC9cZHs0fVdcZHsyfS8sITFdLFsiWVlZWURERCIsL1xk'@; put 'ezd9L10sWyJZWVlZTU0iLC9cZHs2fS8sITFdLFsiWVlZWSIsL1xkezR9LywhMV1dLHpvPVtbIkhIOm1tOnNzLlNTU1MiLC9cZFxkOlxkXGQ6XGRcZFwuXGQrL10sWyJISDptbTpzcyxTU1NTIiwvXGRcZDpcZFxkOlxkXGQsXGQrL10sWyJISDptbTpzcyIsL1xkXGQ6XGRcZDpcZFxkL10sWyJI'@; put 'SDptbSIsL1xkXGQ6XGRcZC9dLFsiSEhtbXNzLlNTU1MiLC9cZFxkXGRcZFxkXGRcLlxkKy9dLFsiSEhtbXNzLFNTU1MiLC9cZFxkXGRcZFxkXGQsXGQrL10sWyJISG1tc3MiLC9cZFxkXGRcZFxkXGQvXSxbIkhIbW0iLC9cZFxkXGRcZC9dLFsiSEgiLC9cZFxkL11dLENnPS9eXC8/RGF0ZVwo'@; put 'KC0/XGQrKS9pLF8yPS9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksP1xzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxb'@; put 'RUNNUF1bU0RdVCl8KFtael0pfChbKy1dXGR7NH0pKSQvLFRjPXtVVDowLEdNVDowLEVEVDotMjQwLEVTVDotMzAwLENEVDotMzAwLENTVDotMzYwLE1EVDotMzYwLE1TVDotNDIwLFBEVDotNDIwLFBTVDotNDgwfTtmdW5jdGlvbiBtcyh5ZSl7dmFyIFVlLGN0LFllLFhlLHlpLFdhLGl0PXll'@; put 'Ll9pLEZ0PXRkLmV4ZWMoaXQpfHxPMC5leGVjKGl0KSxTcz1pYS5sZW5ndGgsV3M9em8ubGVuZ3RoO2lmKEZ0KXtmb3IoTih5ZSkuaXNvPSEwLFVlPTAsY3Q9U3M7VWU8Y3Q7VWUrKylpZihpYVtVZV1bMV0uZXhlYyhGdFsxXSkpe1hlPWlhW1VlXVswXSxZZT0hMSE9PWlhW1VlXVsyXTticmVh'@; put 'a31pZihudWxsPT1YZSlyZXR1cm4gdm9pZCh5ZS5faXNWYWxpZD0hMSk7aWYoRnRbM10pe2ZvcihVZT0wLGN0PVdzO1VlPGN0O1VlKyspaWYoem9bVWVdWzFdLmV4ZWMoRnRbM10pKXt5aT0oRnRbMl18fCIgIikrem9bVWVdWzBdO2JyZWFrfWlmKG51bGw9PXlpKXJldHVybiB2b2lkKHllLl9p'@; put 'c1ZhbGlkPSExKX1pZighWWUmJm51bGwhPXlpKXJldHVybiB2b2lkKHllLl9pc1ZhbGlkPSExKTtpZihGdFs0XSl7aWYoIU9tLmV4ZWMoRnRbNF0pKXJldHVybiB2b2lkKHllLl9pc1ZhbGlkPSExKTtXYT0iWiJ9eWUuX2Y9WGUrKHlpfHwiIikrKFdhfHwiIiksRm4oeWUpfWVsc2UgeWUuX2lz'@; put 'VmFsaWQ9ITF9ZnVuY3Rpb24gTm0oeWUpe3ZhciBVZT1wYXJzZUludCh5ZSwxMCk7cmV0dXJuIFVlPD00OT8yZTMrVWU6VWU8PTk5OT8xOTAwK1VlOlVlfWZ1bmN0aW9uIHphKHllKXt2YXIgY3QsVWU9XzIuZXhlYyhmdW5jdGlvbiBuOCh5ZSl7cmV0dXJuIHllLnJlcGxhY2UoL1woW14oKV0q'@; put 'XCl8W1xuXHRdL2csIiAiKS5yZXBsYWNlKC8oXHNccyspL2csIiAiKS5yZXBsYWNlKC9eXHNccyovLCIiKS5yZXBsYWNlKC9cc1xzKiQvLCIiKX0oeWUuX2kpKTtpZihVZSl7aWYoY3Q9ZnVuY3Rpb24gRjEoeWUsVWUsY3QsaXQsRnQsWWUpe3ZhciBYZT1bTm0oeWUpLCRpLmluZGV4T2YoVWUp'@; put 'LHBhcnNlSW50KGN0LDEwKSxwYXJzZUludChpdCwxMCkscGFyc2VJbnQoRnQsMTApXTtyZXR1cm4gWWUmJlhlLnB1c2gocGFyc2VJbnQoWWUsMTApKSxYZX0oVWVbNF0sVWVbM10sVWVbMl0sVWVbNV0sVWVbNl0sVWVbN10pLCFmdW5jdGlvbiBJcyh5ZSxVZSxjdCl7cmV0dXJuIXllfHxKYy5p'@; put 'bmRleE9mKHllKT09PW5ldyBEYXRlKFVlWzBdLFVlWzFdLFVlWzJdKS5nZXREYXkoKXx8KE4oY3QpLndlZWtkYXlNaXNtYXRjaD0hMCxjdC5faXNWYWxpZD0hMSwhMSl9KFVlWzFdLGN0LHllKSlyZXR1cm47eWUuX2E9Y3QseWUuX3R6bT1mdW5jdGlvbiBxaSh5ZSxVZSxjdCl7aWYoeWUpcmV0'@; put 'dXJuIFRjW3llXTtpZihVZSlyZXR1cm4gMDt2YXIgaXQ9cGFyc2VJbnQoY3QsMTApLEZ0PWl0JTEwMDtyZXR1cm4oaXQtRnQpLzEwMCo2MCtGdH0oVWVbOF0sVWVbOV0sVWVbMTBdKSx5ZS5fZD1KdS5hcHBseShudWxsLHllLl9hKSx5ZS5fZC5zZXRVVENNaW51dGVzKHllLl9kLmdldFVUQ01p'@; put 'bnV0ZXMoKS15ZS5fdHptKSxOKHllKS5yZmMyODIyPSEwfWVsc2UgeWUuX2lzVmFsaWQ9ITF9ZnVuY3Rpb24geXQoeWUsVWUsY3Qpe3JldHVybiB5ZT8/VWU/P2N0fWZ1bmN0aW9uIHp0KHllKXt2YXIgVWUsY3QsRnQsWWUsWGUsaXQ9W107aWYoIXllLl9kKXtmb3IoRnQ9ZnVuY3Rpb24ganQo'@; put 'eWUpe3ZhciBVZT1uZXcgRGF0ZShjLm5vdygpKTtyZXR1cm4geWUuX3VzZVVUQz9bVWUuZ2V0VVRDRnVsbFllYXIoKSxVZS5nZXRVVENNb250aCgpLFVlLmdldFVUQ0RhdGUoKV06W1VlLmdldEZ1bGxZZWFyKCksVWUuZ2V0TW9udGgoKSxVZS5nZXREYXRlKCldfSh5ZSkseWUuX3cmJm51bGw9'@; put 'PXllLl9hW3JyXSYmbnVsbD09eWUuX2FbdmldJiZmdW5jdGlvbiBtbih5ZSl7dmFyIFVlLGN0LGl0LEZ0LFllLFhlLHlpLFdhLFNzO251bGwhPShVZT15ZS5fdykuR0d8fG51bGwhPVVlLld8fG51bGwhPVVlLkU/KFllPTEsWGU9NCxjdD15dChVZS5HRyx5ZS5fYVt5bl0sZmEoUm8oKSwxLDQp'@; put 'LnllYXIpLGl0PXl0KFVlLlcsMSksKChGdD15dChVZS5FLDEpKTwxfHxGdD43KSYmKFdhPSEwKSk6KFllPXllLl9sb2NhbGUuX3dlZWsuZG93LFhlPXllLl9sb2NhbGUuX3dlZWsuZG95LFNzPWZhKFJvKCksWWUsWGUpLGN0PXl0KFVlLmdnLHllLl9hW3luXSxTcy55ZWFyKSxpdD15dChVZS53'@; put 'LFNzLndlZWspLG51bGwhPVVlLmQ/KChGdD1VZS5kKTwwfHxGdD42KSYmKFdhPSEwKTpudWxsIT1VZS5lPyhGdD1VZS5lK1llLChVZS5lPDB8fFVlLmU+NikmJihXYT0hMCkpOkZ0PVllKSxpdDwxfHxpdD5WcihjdCxZZSxYZSk/Tih5ZSkuX292ZXJmbG93V2Vla3M9ITA6bnVsbCE9V2E/Tih5'@; put 'ZSkuX292ZXJmbG93V2Vla2RheT0hMDooeWk9VW8oY3QsaXQsRnQsWWUsWGUpLHllLl9hW3luXT15aS55ZWFyLHllLl9kYXlPZlllYXI9eWkuZGF5T2ZZZWFyKX0oeWUpLG51bGwhPXllLl9kYXlPZlllYXImJihYZT15dCh5ZS5fYVt5bl0sRnRbeW5dKSwoeWUuX2RheU9mWWVhcj5YcihYZSl8'@; put 'fDA9PT15ZS5fZGF5T2ZZZWFyKSYmKE4oeWUpLl9vdmVyZmxvd0RheU9mWWVhcj0hMCksY3Q9SnUoWGUsMCx5ZS5fZGF5T2ZZZWFyKSx5ZS5fYVt2aV09Y3QuZ2V0VVRDTW9udGgoKSx5ZS5fYVtycl09Y3QuZ2V0VVRDRGF0ZSgpKSxVZT0wO1VlPDMmJm51bGw9PXllLl9hW1VlXTsrK1VlKXll'@; put 'Ll9hW1VlXT1pdFtVZV09RnRbVWVdO2Zvcig7VWU8NztVZSsrKXllLl9hW1VlXT1pdFtVZV09bnVsbD09eWUuX2FbVWVdPzI9PT1VZT8xOjA6eWUuX2FbVWVdOzI0PT09eWUuX2FbaHJdJiYwPT09eWUuX2FbcG9dJiYwPT09eWUuX2Fbdm5dJiYwPT09eWUuX2FbQm5dJiYoeWUuX25leHREYXk9'@; put 'ITAseWUuX2FbaHJdPTApLHllLl9kPSh5ZS5fdXNlVVRDP0p1OkwwKS5hcHBseShudWxsLGl0KSxZZT15ZS5fdXNlVVRDP3llLl9kLmdldFVUQ0RheSgpOnllLl9kLmdldERheSgpLG51bGwhPXllLl90em0mJnllLl9kLnNldFVUQ01pbnV0ZXMoeWUuX2QuZ2V0VVRDTWludXRlcygpLXllLl90'@; put 'em0pLHllLl9uZXh0RGF5JiYoeWUuX2FbaHJdPTI0KSx5ZS5fdyYmdHlwZW9mIHllLl93LmQ8InUiJiZ5ZS5fdy5kIT09WWUmJihOKHllKS53ZWVrZGF5TWlzbWF0Y2g9ITApfX1mdW5jdGlvbiBGbih5ZSl7aWYoeWUuX2YhPT1jLklTT184NjAxKWlmKHllLl9mIT09Yy5SRkNfMjgyMil7eWUu'@; put 'X2E9W10sTih5ZSkuZW1wdHk9ITA7dmFyIGN0LGl0LEZ0LFllLFhlLFNzLFdzLFVlPSIiK3llLl9pLHlpPVVlLmxlbmd0aCxXYT0wO2ZvcihXcz0oRnQ9ZHQoeWUuX2YseWUuX2xvY2FsZSkubWF0Y2gocCl8fFtdKS5sZW5ndGgsY3Q9MDtjdDxXcztjdCsrKShpdD0oVWUubWF0Y2gocHQoWWU9'@; put 'RnRbY3RdLHllKSl8fFtdKVswXSkmJigoWGU9VWUuc3Vic3RyKDAsVWUuaW5kZXhPZihpdCkpKS5sZW5ndGg+MCYmTih5ZSkudW51c2VkSW5wdXQucHVzaChYZSksVWU9VWUuc2xpY2UoVWUuaW5kZXhPZihpdCkraXQubGVuZ3RoKSxXYSs9aXQubGVuZ3RoKSxuZVtZZV0/KGl0P04oeWUpLmVt'@; put 'cHR5PSExOk4oeWUpLnVudXNlZFRva2Vucy5wdXNoKFllKSx6bihZZSxpdCx5ZSkpOnllLl9zdHJpY3QmJiFpdCYmTih5ZSkudW51c2VkVG9rZW5zLnB1c2goWWUpO04oeWUpLmNoYXJzTGVmdE92ZXI9eWktV2EsVWUubGVuZ3RoPjAmJk4oeWUpLnVudXNlZElucHV0LnB1c2goVWUpLHllLl9h'@; put 'W2hyXTw9MTImJiEwPT09Tih5ZSkuYmlnSG91ciYmeWUuX2FbaHJdPjAmJihOKHllKS5iaWdIb3VyPXZvaWQgMCksTih5ZSkucGFyc2VkRGF0ZVBhcnRzPXllLl9hLnNsaWNlKDApLE4oeWUpLm1lcmlkaWVtPXllLl9tZXJpZGllbSx5ZS5fYVtocl09ZnVuY3Rpb24gUW4oeWUsVWUsY3Qpe3Zh'@; put 'ciBpdDtyZXR1cm4gbnVsbD09Y3Q/VWU6bnVsbCE9eWUubWVyaWRpZW1Ib3VyP3llLm1lcmlkaWVtSG91cihVZSxjdCk6KG51bGwhPXllLmlzUE0mJigoaXQ9eWUuaXNQTShjdCkpJiZVZTwxMiYmKFVlKz0xMiksIWl0JiYxMj09PVVlJiYoVWU9MCkpLFVlKX0oeWUuX2xvY2FsZSx5ZS5fYVto'@; put 'cl0seWUuX21lcmlkaWVtKSxudWxsIT09KFNzPU4oeWUpLmVyYSkmJih5ZS5fYVt5bl09eWUuX2xvY2FsZS5lcmFzQ29udmVydFllYXIoU3MseWUuX2FbeW5dKSksenQoeWUpLHYyKHllKX1lbHNlIHphKHllKTtlbHNlIG1zKHllKX1mdW5jdGlvbiBXaSh5ZSl7dmFyIFVlPXllLl9pLGN0PXll'@; put 'Ll9mO3JldHVybiB5ZS5fbG9jYWxlPXllLl9sb2NhbGV8fHJoKHllLl9sKSxudWxsPT09VWV8fHZvaWQgMD09PWN0JiYiIj09PVVlP0Yoe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIFVlJiYoeWUuX2k9VWU9eWUuX2xvY2FsZS5wcmVwYXJzZShVZSkpLENlKFVlKT9uZXcgbWUo'@; put 'djIoVWUpKTooUihVZSk/eWUuX2Q9VWU6QShjdCk/ZnVuY3Rpb24gbHIoeWUpe3ZhciBVZSxjdCxpdCxGdCxZZSxYZSx5aT0hMSxXYT15ZS5fZi5sZW5ndGg7aWYoMD09PVdhKXJldHVybiBOKHllKS5pbnZhbGlkRm9ybWF0PSEwLHZvaWQoeWUuX2Q9bmV3IERhdGUoTmFOKSk7Zm9yKEZ0PTA7'@; put 'RnQ8V2E7RnQrKylZZT0wLFhlPSExLFVlPXJlKHt9LHllKSxudWxsIT15ZS5fdXNlVVRDJiYoVWUuX3VzZVVUQz15ZS5fdXNlVVRDKSxVZS5fZj15ZS5fZltGdF0sRm4oVWUpLFkoVWUpJiYoWGU9ITApLFllKz1OKFVlKS5jaGFyc0xlZnRPdmVyLFllKz0xMCpOKFVlKS51bnVzZWRUb2tlbnMu'@; put 'bGVuZ3RoLE4oVWUpLnNjb3JlPVllLHlpP1llPGl0JiYoaXQ9WWUsY3Q9VWUpOihudWxsPT1pdHx8WWU8aXR8fFhlKSYmKGl0PVllLGN0PVVlLFhlJiYoeWk9ITApKTtVKHllLGN0fHxVZSl9KHllKTpjdD9Gbih5ZSk6ZnVuY3Rpb24gS2koeWUpe3ZhciBVZT15ZS5faTtTKFVlKT95ZS5fZD1u'@; put 'ZXcgRGF0ZShjLm5vdygpKTpSKFVlKT95ZS5fZD1uZXcgRGF0ZShVZS52YWx1ZU9mKCkpOiJzdHJpbmciPT10eXBlb2YgVWU/ZnVuY3Rpb24gaHQoeWUpe3ZhciBVZT1DZy5leGVjKHllLl9pKTtudWxsPT09VWU/KG1zKHllKSwhMT09PXllLl9pc1ZhbGlkJiYoZGVsZXRlIHllLl9pc1ZhbGlk'@; put 'LHphKHllKSwhMT09PXllLl9pc1ZhbGlkJiYoZGVsZXRlIHllLl9pc1ZhbGlkLHllLl9zdHJpY3Q/eWUuX2lzVmFsaWQ9ITE6Yy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayh5ZSkpKSk6eWUuX2Q9bmV3IERhdGUoK1VlWzFdKX0oeWUpOkEoVWUpPyh5ZS5fYT14KFVlLnNsaWNlKDApLGZ1bmN0'@; put 'aW9uKGN0KXtyZXR1cm4gcGFyc2VJbnQoY3QsMTApfSksenQoeWUpKTp2KFVlKT9mdW5jdGlvbiBpaSh5ZSl7aWYoIXllLl9kKXt2YXIgVWU9dHQoeWUuX2kpO3llLl9hPXgoW1VlLnllYXIsVWUubW9udGgsdm9pZCAwPT09VWUuZGF5P1VlLmRhdGU6VWUuZGF5LFVlLmhvdXIsVWUubWludXRl'@; put 'LFVlLnNlY29uZCxVZS5taWxsaXNlY29uZF0sZnVuY3Rpb24oaXQpe3JldHVybiBpdCYmcGFyc2VJbnQoaXQsMTApfSksenQoeWUpfX0oeWUpOkwoVWUpP3llLl9kPW5ldyBEYXRlKFVlKTpjLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKHllKX0oeWUpLFkoeWUpfHwoeWUuX2Q9bnVsbCkseWUp'@; put 'KX1mdW5jdGlvbiBOYSh5ZSxVZSxjdCxpdCxGdCl7dmFyIFllPXt9O3JldHVybighMD09PVVlfHwhMT09PVVlKSYmKGl0PVVlLFVlPXZvaWQgMCksKCEwPT09Y3R8fCExPT09Y3QpJiYoaXQ9Y3QsY3Q9dm9pZCAwKSwodih5ZSkmJncoeWUpfHxBKHllKSYmMD09PXllLmxlbmd0aCkmJih5ZT12'@; put 'b2lkIDApLFllLl9pc0FNb21lbnRPYmplY3Q9ITAsWWUuX3VzZVVUQz1ZZS5faXNVVEM9RnQsWWUuX2w9Y3QsWWUuX2k9eWUsWWUuX2Y9VWUsWWUuX3N0cmljdD1pdCxmdW5jdGlvbiBraSh5ZSl7dmFyIFVlPW5ldyBtZSh2MihXaSh5ZSkpKTtyZXR1cm4gVWUuX25leHREYXkmJihVZS5hZGQo'@; put 'MSwiZCIpLFVlLl9uZXh0RGF5PXZvaWQgMCksVWV9KFllKX1mdW5jdGlvbiBSbyh5ZSxVZSxjdCxpdCl7cmV0dXJuIE5hKHllLFVlLGN0LGl0LCExKX1jLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrPWtlKCJ2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3Ig'@; put 'SVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgd2hpY2ggaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBhbGwgYnJvd3NlcnMgYW5kIHZlcnNpb25zLiBOb24gUkZDMjgyMi9JU08gZGF0ZSBmb3JtYXRzIGFyZSBkaXNjb3VyYWdlZC4gUGxlYXNl'@; put 'IHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4iLGZ1bmN0aW9uKHllKXt5ZS5fZD1uZXcgRGF0ZSh5ZS5faSsoeWUuX3VzZVVUQz8iIFVUQyI6IiIpKX0pLGMuSVNPXzg2MDE9ZnVuY3Rpb24oKXt9LGMuUkZDXzI4'@; put 'MjI9ZnVuY3Rpb24oKXt9O3ZhciBkbD1rZSgibW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8iLGZ1bmN0aW9uKCl7dmFyIHllPVJvLmFwcGx5KG51bGwsYXJndW1l'@; put 'bnRzKTtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJnllLmlzVmFsaWQoKT95ZTx0aGlzP3RoaXM6eWU6RigpfSksb3I9a2UoIm1vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1t'@; put 'YXgvIixmdW5jdGlvbigpe3ZhciB5ZT1Sby5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZ5ZS5pc1ZhbGlkKCk/eWU+dGhpcz90aGlzOnllOkYoKX0pO2Z1bmN0aW9uIGNvKHllLFVlKXt2YXIgY3QsaXQ7aWYoMT09PVVlLmxlbmd0aCYmQShVZVswXSkmJihV'@; put 'ZT1VZVswXSksIVVlLmxlbmd0aClyZXR1cm4gUm8oKTtmb3IoY3Q9VWVbMF0saXQ9MTtpdDxVZS5sZW5ndGg7KytpdCkoIVVlW2l0XS5pc1ZhbGlkKCl8fFVlW2l0XVt5ZV0oY3QpKSYmKGN0PVVlW2l0XSk7cmV0dXJuIGN0fXZhciBucz1bInllYXIiLCJxdWFydGVyIiwibW9udGgiLCJ3ZWVr'@; put 'IiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIl07ZnVuY3Rpb24geTIoeWUpe3ZhciBVZT10dCh5ZSksY3Q9VWUueWVhcnx8MCxpdD1VZS5xdWFydGVyfHwwLEZ0PVVlLm1vbnRofHwwLFllPVVlLndlZWt8fFVlLmlzb1dlZWt8fDAsWGU9VWUuZGF5fHwwLHlp'@; put 'PVVlLmhvdXJ8fDAsV2E9VWUubWludXRlfHwwLFNzPVVlLnNlY29uZHx8MCxXcz1VZS5taWxsaXNlY29uZHx8MDt0aGlzLl9pc1ZhbGlkPWZ1bmN0aW9uIEVsKHllKXt2YXIgVWUsaXQsY3Q9ITEsRnQ9bnMubGVuZ3RoO2ZvcihVZSBpbiB5ZSlpZihDKHllLFVlKSYmKC0xPT09dGEuY2FsbChu'@; put 'cyxVZSl8fG51bGwhPXllW1VlXSYmaXNOYU4oeWVbVWVdKSkpcmV0dXJuITE7Zm9yKGl0PTA7aXQ8RnQ7KytpdClpZih5ZVtuc1tpdF1dKXtpZihjdClyZXR1cm4hMTtwYXJzZUZsb2F0KHllW25zW2l0XV0pIT09VXQoeWVbbnNbaXRdXSkmJihjdD0hMCl9cmV0dXJuITB9KFVlKSx0aGlzLl9t'@; put 'aWxsaXNlY29uZHM9K1dzKzFlMypTcys2ZTQqV2ErMWUzKnlpKjYwKjYwLHRoaXMuX2RheXM9K1hlKzcqWWUsdGhpcy5fbW9udGhzPStGdCszKml0KzEyKmN0LHRoaXMuX2RhdGE9e30sdGhpcy5fbG9jYWxlPXJoKCksdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gRHUoeWUpe3JldHVybiB5ZSBp'@; put 'bnN0YW5jZW9mIHkyfWZ1bmN0aW9uIGUxKHllKXtyZXR1cm4geWU8MD8tMSpNYXRoLnJvdW5kKC0xKnllKTpNYXRoLnJvdW5kKHllKX1mdW5jdGlvbiBiZCh5ZSxVZSl7X2UoeWUsMCwwLGZ1bmN0aW9uKCl7dmFyIGN0PXRoaXMudXRjT2Zmc2V0KCksaXQ9IisiO3JldHVybiBjdDwwJiYoY3Q9'@; put 'LWN0LGl0PSItIiksaXQrRCh+fihjdC82MCksMikrVWUrRCh+fmN0JTYwLDIpfSl9YmQoIloiLCI6IiksYmQoIlpaIiwiIiksTm4oIloiLFNuKSxObigiWloiLFNuKSx4dChbIloiLCJaWiJdLGZ1bmN0aW9uKHllLFVlLGN0KXtjdC5fdXNlVVRDPSEwLGN0Ll90em09YjIoU24seWUpfSk7dmFy'@; put 'IHMwPS8oW1wrXC1dfFxkXGQpL2dpO2Z1bmN0aW9uIGIyKHllLFVlKXt2YXIgRnQsWWUsY3Q9KFVlfHwiIikubWF0Y2goeWUpO3JldHVybiBudWxsPT09Y3Q/bnVsbDowPT09KFllPTYwKihGdD0oKGN0W2N0Lmxlbmd0aC0xXXx8W10pKyIiKS5tYXRjaChzMCl8fFsiLSIsMCwwXSlbMV0rVXQo'@; put 'RnRbMl0pKT8wOiIrIj09PUZ0WzBdP1llOi1ZZX1mdW5jdGlvbiBraCh5ZSxVZSl7dmFyIGN0LGl0O3JldHVybiBVZS5faXNVVEM/KGN0PVVlLmNsb25lKCksaXQ9KENlKHllKXx8Uih5ZSk/eWUudmFsdWVPZigpOlJvKHllKS52YWx1ZU9mKCkpLWN0LnZhbHVlT2YoKSxjdC5fZC5zZXRUaW1l'@; put 'KGN0Ll9kLnZhbHVlT2YoKStpdCksYy51cGRhdGVPZmZzZXQoY3QsITEpLGN0KTpSbyh5ZSkubG9jYWwoKX1mdW5jdGlvbiBqdSh5ZSl7cmV0dXJuLU1hdGgucm91bmQoeWUuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSl9ZnVuY3Rpb24gaGwoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiZ0aGlz'@; put 'Ll9pc1VUQyYmMD09PXRoaXMuX29mZnNldH1jLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe307dmFyIGNzPS9eKC18XCspPyg/OihcZCopWy4gXSk/KFxkKyk6KFxkKykoPzo6KFxkKykoXC5cZCopPyk/JC8sY3A9L14oLXxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTks'@; put 'Ll0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO2Z1bmN0aW9uIENzKHllLFVlKXt2YXIgRnQsWWUsWGUsY3Q9eWUsaXQ9bnVs'@; put 'bDtyZXR1cm4gRHUoeWUpP2N0PXttczp5ZS5fbWlsbGlzZWNvbmRzLGQ6eWUuX2RheXMsTTp5ZS5fbW9udGhzfTpMKHllKXx8IWlzTmFOKCt5ZSk/KGN0PXt9LFVlP2N0W1VlXT0reWU6Y3QubWlsbGlzZWNvbmRzPSt5ZSk6KGl0PWNzLmV4ZWMoeWUpKT8oRnQ9Ii0iPT09aXRbMV0/LTE6MSxj'@; put 'dD17eTowLGQ6VXQoaXRbcnJdKSpGdCxoOlV0KGl0W2hyXSkqRnQsbTpVdChpdFtwb10pKkZ0LHM6VXQoaXRbdm5dKSpGdCxtczpVdChlMSgxZTMqaXRbQm5dKSkqRnR9KTooaXQ9Y3AuZXhlYyh5ZSkpP2N0PXt5Om51KGl0WzJdLEZ0PSItIj09PWl0WzFdPy0xOjEpLE06bnUoaXRbM10sRnQp'@; put 'LHc6bnUoaXRbNF0sRnQpLGQ6bnUoaXRbNV0sRnQpLGg6bnUoaXRbNl0sRnQpLG06bnUoaXRbN10sRnQpLHM6bnUoaXRbOF0sRnQpfTpudWxsPT1jdD9jdD17fToib2JqZWN0Ij09dHlwZW9mIGN0JiYoImZyb20iaW4gY3R8fCJ0byJpbiBjdCkmJihYZT1mdW5jdGlvbiBuZCh5ZSxVZSl7dmFy'@; put 'IGN0O3JldHVybiB5ZS5pc1ZhbGlkKCkmJlVlLmlzVmFsaWQoKT8oVWU9a2goVWUseWUpLHllLmlzQmVmb3JlKFVlKT9jdD1SaCh5ZSxVZSk6KChjdD1SaChVZSx5ZSkpLm1pbGxpc2Vjb25kcz0tY3QubWlsbGlzZWNvbmRzLGN0Lm1vbnRocz0tY3QubW9udGhzKSxjdCk6e21pbGxpc2Vjb25k'@; put 'czowLG1vbnRoczowfX0oUm8oY3QuZnJvbSksUm8oY3QudG8pKSwoY3Q9e30pLm1zPVhlLm1pbGxpc2Vjb25kcyxjdC5NPVhlLm1vbnRocyksWWU9bmV3IHkyKGN0KSxEdSh5ZSkmJkMoeWUsIl9sb2NhbGUiKSYmKFllLl9sb2NhbGU9eWUuX2xvY2FsZSksRHUoeWUpJiZDKHllLCJfaXNWYWxp'@; put 'ZCIpJiYoWWUuX2lzVmFsaWQ9eWUuX2lzVmFsaWQpLFllfWZ1bmN0aW9uIG51KHllLFVlKXt2YXIgY3Q9eWUmJnBhcnNlRmxvYXQoeWUucmVwbGFjZSgiLCIsIi4iKSk7cmV0dXJuKGlzTmFOKGN0KT8wOmN0KSpVZX1mdW5jdGlvbiBSaCh5ZSxVZSl7dmFyIGN0PXt9O3JldHVybiBjdC5tb250'@; put 'aHM9VWUubW9udGgoKS15ZS5tb250aCgpKzEyKihVZS55ZWFyKCkteWUueWVhcigpKSx5ZS5jbG9uZSgpLmFkZChjdC5tb250aHMsIk0iKS5pc0FmdGVyKFVlKSYmLS1jdC5tb250aHMsY3QubWlsbGlzZWNvbmRzPStVZS0reWUuY2xvbmUoKS5hZGQoY3QubW9udGhzLCJNIiksY3R9ZnVuY3Rp'@; put 'b24gRm0oeWUsVWUpe3JldHVybiBmdW5jdGlvbihjdCxpdCl7dmFyIFllO3JldHVybiBudWxsIT09aXQmJiFpc05hTigraXQpJiYoWChVZSwibW9tZW50KCkuIitVZSsiKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLiIrVWUrIihudW1iZXIsIHBl'@; put 'cmlvZCkuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4iKSxZZT1jdCxjdD1pdCxpdD1ZZSksbWYodGhpcyxDcyhjdCxpdCkseWUpLHRoaXN9fWZ1bmN0aW9uIG1mKHllLFVlLGN0LGl0KXt2YXIgRnQ9'@; put 'VWUuX21pbGxpc2Vjb25kcyxZZT1lMShVZS5fZGF5cyksWGU9ZTEoVWUuX21vbnRocyk7eWUuaXNWYWxpZCgpJiYoaXQ9aXQ/PyEwLFhlJiZJbCh5ZSxDaSh5ZSwiTW9udGgiKStYZSpjdCksWWUmJmhvKHllLCJEYXRlIixDaSh5ZSwiRGF0ZSIpK1llKmN0KSxGdCYmeWUuX2Quc2V0VGltZSh5'@; put 'ZS5fZC52YWx1ZU9mKCkrRnQqY3QpLGl0JiZjLnVwZGF0ZU9mZnNldCh5ZSxZZXx8WGUpKX1Dcy5mbj15Mi5wcm90b3R5cGUsQ3MuaW52YWxpZD1mdW5jdGlvbiBuYygpe3JldHVybiBDcyhOYU4pfTt2YXIgUDE9Rm0oMSwiYWRkIiksdXM9Rm0oLTEsInN1YnRyYWN0Iik7ZnVuY3Rpb24gVXUo'@; put 'eWUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeWV8fHllIGluc3RhbmNlb2YgU3RyaW5nfWZ1bmN0aW9uIHhjKHllKXtyZXR1cm4gQ2UoeWUpfHxSKHllKXx8VXUoeWUpfHxMKHllKXx8ZnVuY3Rpb24gcjUoeWUpe3ZhciBVZT1BKHllKSxjdD0hMTtyZXR1cm4gVWUmJihjdD0wPT09eWUuZmls'@; put 'dGVyKGZ1bmN0aW9uKGl0KXtyZXR1cm4hTChpdCkmJlV1KHllKX0pLmxlbmd0aCksVWUmJmN0fSh5ZSl8fGZ1bmN0aW9uIGwwKHllKXt2YXIgRnQsVWU9dih5ZSkmJiF3KHllKSxjdD0hMSxpdD1bInllYXJzIiwieWVhciIsInkiLCJtb250aHMiLCJtb250aCIsIk0iLCJkYXlzIiwiZGF5Iiwi'@; put 'ZCIsImRhdGVzIiwiZGF0ZSIsIkQiLCJob3VycyIsImhvdXIiLCJoIiwibWludXRlcyIsIm1pbnV0ZSIsIm0iLCJzZWNvbmRzIiwic2Vjb25kIiwicyIsIm1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kIiwibXMiXSxYZT1pdC5sZW5ndGg7Zm9yKEZ0PTA7RnQ8WGU7RnQrPTEpY3Q9Y3R8fEMo'@; put 'eWUsaXRbRnRdKTtyZXR1cm4gVWUmJmN0fSh5ZSl8fG51bGw9PXllfWZ1bmN0aW9uIEgxKHllLFVlKXtpZih5ZS5kYXRlKCk8VWUuZGF0ZSgpKXJldHVybi1IMShVZSx5ZSk7dmFyIGN0PTEyKihVZS55ZWFyKCkteWUueWVhcigpKSsoVWUubW9udGgoKS15ZS5tb250aCgpKSxpdD15ZS5jbG9u'@; put 'ZSgpLmFkZChjdCwibW9udGhzIik7cmV0dXJuLShjdCsoVWUtaXQ8MD8oVWUtaXQpLyhpdC15ZS5jbG9uZSgpLmFkZChjdC0xLCJtb250aHMiKSk6KFVlLWl0KS8oeWUuY2xvbmUoKS5hZGQoY3QrMSwibW9udGhzIiktaXQpKSl8fDB9ZnVuY3Rpb24gdWEoeWUpe3ZhciBVZTtyZXR1cm4gdm9p'@; put 'ZCAwPT09eWU/dGhpcy5fbG9jYWxlLl9hYmJyOihudWxsIT0oVWU9cmgoeWUpKSYmKHRoaXMuX2xvY2FsZT1VZSksdGhpcyl9Yy5kZWZhdWx0Rm9ybWF0PSJZWVlZLU1NLUREVEhIOm1tOnNzWiIsYy5kZWZhdWx0Rm9ybWF0VXRjPSJZWVlZLU1NLUREVEhIOm1tOnNzW1pdIjt2YXIgdmY9a2Uo'@; put 'Im1vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuIixmdW5jdGlvbih5ZSl7cmV0dXJu'@; put 'IHZvaWQgMD09PXllP3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKHllKX0pO2Z1bmN0aW9uIEx1KCl7cmV0dXJuIHRoaXMuX2xvY2FsZX12YXIgQzI9NmU0LHJ1PTYwKkMyLGFpPTM1MDYzMjgqcnU7ZnVuY3Rpb24gVGEoeWUsVWUpe3JldHVybih5ZSVVZStVZSklVWV9ZnVuY3Rpb24g'@; put 'WWMoeWUsVWUsY3Qpe3JldHVybiB5ZTwxMDAmJnllPj0wP25ldyBEYXRlKHllKzQwMCxVZSxjdCktYWk6bmV3IERhdGUoeWUsVWUsY3QpLnZhbHVlT2YoKX1mdW5jdGlvbiB6dSh5ZSxVZSxjdCl7cmV0dXJuIHllPDEwMCYmeWU+PTA/RGF0ZS5VVEMoeWUrNDAwLFVlLGN0KS1haTpEYXRlLlVU'@; put 'Qyh5ZSxVZSxjdCl9ZnVuY3Rpb24gbWEoeWUsVWUpe3JldHVybiBVZS5lcmFzQWJiclJlZ2V4KHllKX1mdW5jdGlvbiB4Zygpe3ZhciBGdCxZZSxYZSx5aSxXYSx5ZT1bXSxVZT1bXSxjdD1bXSxpdD1bXSxTcz10aGlzLmVyYXMoKTtmb3IoRnQ9MCxZZT1Tcy5sZW5ndGg7RnQ8WWU7KytGdClY'@; put 'ZT1NaShTc1tGdF0ubmFtZSkseWk9TWkoU3NbRnRdLmFiYnIpLFdhPU1pKFNzW0Z0XS5uYXJyb3cpLFVlLnB1c2goWGUpLHllLnB1c2goeWkpLGN0LnB1c2goV2EpLGl0LnB1c2goWGUpLGl0LnB1c2goeWkpLGl0LnB1c2goV2EpO3RoaXMuX2VyYXNSZWdleD1uZXcgUmVnRXhwKCJeKCIraXQu'@; put 'am9pbigifCIpKyIpIiwiaSIpLHRoaXMuX2VyYXNOYW1lUmVnZXg9bmV3IFJlZ0V4cCgiXigiK1VlLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzQWJiclJlZ2V4PW5ldyBSZWdFeHAoIl4oIit5ZS5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fZXJhc05hcnJvd1JlZ2V4PW5ldyBSZWdF'@; put 'eHAoIl4oIitjdC5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gRjAoeWUsVWUpe19lKDAsW3llLHllLmxlbmd0aF0sMCxVZSl9ZnVuY3Rpb24gczEoeWUsVWUsY3QsaXQsRnQpe3ZhciBZZTtyZXR1cm4gbnVsbD09eWU/ZmEodGhpcyxpdCxGdCkueWVhcjooVWU+KFllPVZyKHllLGl0LEZ0'@; put 'KSkmJihVZT1ZZSksdjMuY2FsbCh0aGlzLHllLFVlLGN0LGl0LEZ0KSl9ZnVuY3Rpb24gdjMoeWUsVWUsY3QsaXQsRnQpe3ZhciBZZT1Vbyh5ZSxVZSxjdCxpdCxGdCksWGU9SnUoWWUueWVhciwwLFllLmRheU9mWWVhcik7cmV0dXJuIHRoaXMueWVhcihYZS5nZXRVVENGdWxsWWVhcigpKSx0'@; put 'aGlzLm1vbnRoKFhlLmdldFVUQ01vbnRoKCkpLHRoaXMuZGF0ZShYZS5nZXRVVENEYXRlKCkpLHRoaXN9X2UoIk4iLDAsMCwiZXJhQWJiciIpLF9lKCJOTiIsMCwwLCJlcmFBYmJyIiksX2UoIk5OTiIsMCwwLCJlcmFBYmJyIiksX2UoIk5OTk4iLDAsMCwiZXJhTmFtZSIpLF9lKCJOTk5OTiIs'@; put 'MCwwLCJlcmFOYXJyb3ciKSxfZSgieSIsWyJ5IiwxXSwieW8iLCJlcmFZZWFyIiksX2UoInkiLFsieXkiLDJdLDAsImVyYVllYXIiKSxfZSgieSIsWyJ5eXkiLDNdLDAsImVyYVllYXIiKSxfZSgieSIsWyJ5eXl5Iiw0XSwwLCJlcmFZZWFyIiksTm4oIk4iLG1hKSxObigiTk4iLG1hKSxObigi'@; put 'Tk5OIixtYSksTm4oIk5OTk4iLGZ1bmN0aW9uIHU4KHllLFVlKXtyZXR1cm4gVWUuZXJhc05hbWVSZWdleCh5ZSl9KSxObigiTk5OTk4iLGZ1bmN0aW9uIGJmKHllLFVlKXtyZXR1cm4gVWUuZXJhc05hcnJvd1JlZ2V4KHllKX0pLHh0KFsiTiIsIk5OIiwiTk5OIiwiTk5OTiIsIk5OTk5OIl0s'@; put 'ZnVuY3Rpb24oeWUsVWUsY3QsaXQpe3ZhciBGdD1jdC5fbG9jYWxlLmVyYXNQYXJzZSh5ZSxpdCxjdC5fc3RyaWN0KTtGdD9OKGN0KS5lcmE9RnQ6TihjdCkuaW52YWxpZEVyYT15ZX0pLE5uKCJ5IixPbyksTm4oInl5IixPbyksTm4oInl5eSIsT28pLE5uKCJ5eXl5IixPbyksTm4oInlvIixm'@; put 'dW5jdGlvbiBhMSh5ZSxVZSl7cmV0dXJuIFVlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4fHxPb30pLHh0KFsieSIsInl5IiwieXl5IiwieXl5eSJdLHluKSx4dChbInlvIl0sZnVuY3Rpb24oeWUsVWUsY3QsaXQpe3ZhciBGdDtjdC5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4JiYoRnQ9eWUu'@; put 'bWF0Y2goY3QuX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCkpLFVlW3luXT1jdC5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2U/Y3QuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKHllLEZ0KTpwYXJzZUludCh5ZSwxMCl9KSxfZSgwLFsiZ2ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1'@; put 'cm4gdGhpcy53ZWVrWWVhcigpJTEwMH0pLF9lKDAsWyJHRyIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzb1dlZWtZZWFyKCklMTAwfSksRjAoImdnZ2ciLCJ3ZWVrWWVhciIpLEYwKCJnZ2dnZyIsIndlZWtZZWFyIiksRjAoIkdHR0ciLCJpc29XZWVrWWVhciIpLEYwKCJHR0dHRyIs'@; put 'Imlzb1dlZWtZZWFyIiksTm4oIkciLHVyKSxObigiZyIsdXIpLE5uKCJHRyIsTHIsTHQpLE5uKCJnZyIsTHIsTHQpLE5uKCJHR0dHIix0cixndCksTm4oImdnZ2ciLHRyLGd0KSxObigiR0dHR0ciLEhuLFh0KSxObigiZ2dnZ2ciLEhuLFh0KSxCdChbImdnZ2ciLCJnZ2dnZyIsIkdHR0ciLCJH'@; put 'R0dHRyJdLGZ1bmN0aW9uKHllLFVlLGN0LGl0KXtVZVtpdC5zdWJzdHIoMCwyKV09VXQoeWUpfSksQnQoWyJnZyIsIkdHIl0sZnVuY3Rpb24oeWUsVWUsY3QsaXQpe1VlW2l0XT1jLnBhcnNlVHdvRGlnaXRZZWFyKHllKX0pLF9lKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSxObigiUSIsUnQpLHh0'@; put 'KCJRIixmdW5jdGlvbih5ZSxVZSl7VWVbdmldPTMqKFV0KHllKS0xKX0pLF9lKCJEIixbIkREIiwyXSwiRG8iLCJkYXRlIiksTm4oIkQiLExyLEFyKSxObigiREQiLExyLEx0KSxObigiRG8iLGZ1bmN0aW9uKHllLFVlKXtyZXR1cm4geWU/VWUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2V8fFVl'@; put 'Ll9vcmRpbmFsUGFyc2U6VWUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50fSkseHQoWyJEIiwiREQiXSxycikseHQoIkRvIixmdW5jdGlvbih5ZSxVZSl7VWVbcnJdPVV0KHllLm1hdGNoKExyKVswXSl9KTt2YXIgT3U9Y2EoIkRhdGUiLCEwKTtfZSgiREREIixbIkREREQiLDNdLCJE'@; put 'RERvIiwiZGF5T2ZZZWFyIiksTm4oIkRERCIsUXIpLE5uKCJEREREIixHdCkseHQoWyJEREQiLCJEREREIl0sZnVuY3Rpb24oeWUsVWUsY3Qpe2N0Ll9kYXlPZlllYXI9VXQoeWUpfSksX2UoIm0iLFsibW0iLDJdLDAsIm1pbnV0ZSIpLE5uKCJtIixMcixfbiksTm4oIm1tIixMcixMdCkseHQo'@; put 'WyJtIiwibW0iXSxwbyk7dmFyIFVtPWNhKCJNaW51dGVzIiwhMSk7X2UoInMiLFsic3MiLDJdLDAsInNlY29uZCIpLE5uKCJzIixMcixfbiksTm4oInNzIixMcixMdCkseHQoWyJzIiwic3MiXSx2bik7dmFyIEVmLEFnLEM5PWNhKCJTZWNvbmRzIiwhMSk7Zm9yKF9lKCJTIiwwLDAsZnVuY3Rp'@; put 'b24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pLF9lKDAsWyJTUyIsMl0sMCxmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMCl9KSxfZSgwLFsiU1NTIiwzXSwwLCJtaWxsaXNlY29uZCIpLF9lKDAsWyJTU1NTIiw0XSwwLGZ1bmN0aW9uKCl7cmV0'@; put 'dXJuIDEwKnRoaXMubWlsbGlzZWNvbmQoKX0pLF9lKDAsWyJTU1NTUyIsNV0sMCxmdW5jdGlvbigpe3JldHVybiAxMDAqdGhpcy5taWxsaXNlY29uZCgpfSksX2UoMCxbIlNTU1NTUyIsNl0sMCxmdW5jdGlvbigpe3JldHVybiAxZTMqdGhpcy5taWxsaXNlY29uZCgpfSksX2UoMCxbIlNTU1NT'@; put 'U1MiLDddLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU0KnRoaXMubWlsbGlzZWNvbmQoKX0pLF9lKDAsWyJTU1NTU1NTUyIsOF0sMCxmdW5jdGlvbigpe3JldHVybiAxZTUqdGhpcy5taWxsaXNlY29uZCgpfSksX2UoMCxbIlNTU1NTU1NTUyIsOV0sMCxmdW5jdGlvbigpe3JldHVybiAxZTYqdGhp'@; put 'cy5taWxsaXNlY29uZCgpfSksTm4oIlMiLFFyLFJ0KSxObigiU1MiLFFyLEx0KSxObigiU1NTIixRcixHdCksRWY9IlNTU1MiO0VmLmxlbmd0aDw9OTtFZis9IlMiKU5uKEVmLE9vKTtmdW5jdGlvbiBKQyh5ZSxVZSl7VWVbQm5dPVV0KDFlMyooIjAuIit5ZSkpfWZvcihFZj0iUyI7RWYubGVu'@; put 'Z3RoPD05O0VmKz0iUyIpeHQoRWYsSkMpO0FnPWNhKCJNaWxsaXNlY29uZHMiLCExKSxfZSgieiIsMCwwLCJ6b25lQWJiciIpLF9lKCJ6eiIsMCwwLCJ6b25lTmFtZSIpO3ZhciBVaT1tZS5wcm90b3R5cGU7ZnVuY3Rpb24gZDgoeWUpe3JldHVybiB5ZX1VaS5hZGQ9UDEsVWkuY2FsZW5kYXI9'@; put 'ZnVuY3Rpb24gUG0oeWUsVWUpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYoYXJndW1lbnRzWzBdP3hjKGFyZ3VtZW50c1swXSk/KHllPWFyZ3VtZW50c1swXSxVZT12b2lkIDApOmZ1bmN0aW9uIHVwKHllKXt2YXIgRnQsVWU9dih5ZSkmJiF3KHllKSxjdD0hMSxpdD1bInNhbWVEYXkiLCJuZXh0'@; put 'RGF5IiwibGFzdERheSIsIm5leHRXZWVrIiwibGFzdFdlZWsiLCJzYW1lRWxzZSJdO2ZvcihGdD0wO0Z0PGl0Lmxlbmd0aDtGdCs9MSljdD1jdHx8Qyh5ZSxpdFtGdF0pO3JldHVybiBVZSYmY3R9KGFyZ3VtZW50c1swXSkmJihVZT1hcmd1bWVudHNbMF0seWU9dm9pZCAwKTooeWU9dm9pZCAw'@; put 'LFVlPXZvaWQgMCkpO3ZhciBjdD15ZXx8Um8oKSxpdD1raChjdCx0aGlzKS5zdGFydE9mKCJkYXkiKSxGdD1jLmNhbGVuZGFyRm9ybWF0KHRoaXMsaXQpfHwic2FtZUVsc2UiLFllPVVlJiYoZihVZVtGdF0pP1VlW0Z0XS5jYWxsKHRoaXMsY3QpOlVlW0Z0XSk7cmV0dXJuIHRoaXMuZm9ybWF0'@; put 'KFllfHx0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihGdCx0aGlzLFJvKGN0KSkpfSxVaS5jbG9uZT1mdW5jdGlvbiBpMSgpe3JldHVybiBuZXcgbWUodGhpcyl9LFVpLmRpZmY9ZnVuY3Rpb24gbmwoeWUsVWUsY3Qpe3ZhciBpdCxGdCxZZTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5h'@; put 'TjtpZighKGl0PWtoKHllLHRoaXMpKS5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtzd2l0Y2goRnQ9NmU0KihpdC51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSxVZT1KZShVZSkpe2Nhc2UieWVhciI6WWU9SDEodGhpcyxpdCkvMTI7YnJlYWs7Y2FzZSJtb250aCI6WWU9SDEodGhpcyxpdCk7'@; put 'YnJlYWs7Y2FzZSJxdWFydGVyIjpZZT1IMSh0aGlzLGl0KS8zO2JyZWFrO2Nhc2Uic2Vjb25kIjpZZT0odGhpcy1pdCkvMWUzO2JyZWFrO2Nhc2UibWludXRlIjpZZT0odGhpcy1pdCkvNmU0O2JyZWFrO2Nhc2UiaG91ciI6WWU9KHRoaXMtaXQpLzM2ZTU7YnJlYWs7Y2FzZSJkYXkiOlllPSh0'@; put 'aGlzLWl0LUZ0KS84NjRlNTticmVhaztjYXNlIndlZWsiOlllPSh0aGlzLWl0LUZ0KS82MDQ4ZTU7YnJlYWs7ZGVmYXVsdDpZZT10aGlzLWl0fXJldHVybiBjdD9ZZTpHZShZZSl9LFVpLmVuZE9mPWZ1bmN0aW9uIGZwKHllKXt2YXIgVWUsY3Q7aWYodm9pZCAwPT09KHllPUplKHllKSl8fCJt'@; put 'aWxsaXNlY29uZCI9PT15ZXx8IXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzO3N3aXRjaChjdD10aGlzLl9pc1VUQz96dTpZYyx5ZSl7Y2FzZSJ5ZWFyIjpVZT1jdCh0aGlzLnllYXIoKSsxLDAsMSktMTticmVhaztjYXNlInF1YXJ0ZXIiOlVlPWN0KHRoaXMueWVhcigpLHRoaXMubW9udGgo'@; put 'KS10aGlzLm1vbnRoKCklMyszLDEpLTE7YnJlYWs7Y2FzZSJtb250aCI6VWU9Y3QodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKzEsMSktMTticmVhaztjYXNlIndlZWsiOlVlPWN0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS10aGlzLndlZWtkYXkoKSs3KS0xO2JyZWFr'@; put 'O2Nhc2UiaXNvV2VlayI6VWU9Y3QodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSs3KS0xO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOlVlPWN0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSsxKS0xO2JyZWFr'@; put 'O2Nhc2UiaG91ciI6VWU9dGhpcy5fZC52YWx1ZU9mKCksVWUrPXJ1LVRhKFVlKyh0aGlzLl9pc1VUQz8wOnRoaXMudXRjT2Zmc2V0KCkqQzIpLHJ1KS0xO2JyZWFrO2Nhc2UibWludXRlIjpVZT10aGlzLl9kLnZhbHVlT2YoKSxVZSs9QzItVGEoVWUsQzIpLTE7YnJlYWs7Y2FzZSJzZWNvbmQi'@; put 'OlVlPXRoaXMuX2QudmFsdWVPZigpLFVlKz0xZTMtVGEoVWUsMWUzKS0xfXJldHVybiB0aGlzLl9kLnNldFRpbWUoVWUpLGMudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXN9LFVpLmZvcm1hdD1mdW5jdGlvbiBocCh5ZSl7eWV8fCh5ZT10aGlzLmlzVXRjKCk/Yy5kZWZhdWx0Rm9ybWF0VXRj'@; put 'OmMuZGVmYXVsdEZvcm1hdCk7dmFyIFVlPWx0KHRoaXMseWUpO3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KFVlKX0sVWkuZnJvbT1mdW5jdGlvbiBkMyh5ZSxVZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoQ2UoeWUpJiZ5ZS5pc1ZhbGlkKCl8fFJvKHllKS5pc1ZhbGlk'@; put 'KCkpP0NzKHt0bzp0aGlzLGZyb206eWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIVVlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxVaS5mcm9tTm93PWZ1bmN0aW9uIGgzKHllKXtyZXR1cm4gdGhpcy5mcm9tKFJvKCkseWUpfSxVaS50bz1mdW5jdGlvbiBs'@; put 'OCh5ZSxVZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoQ2UoeWUpJiZ5ZS5pc1ZhbGlkKCl8fFJvKHllKS5pc1ZhbGlkKCkpP0NzKHtmcm9tOnRoaXMsdG86eWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIVVlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxV'@; put 'aS50b05vdz1mdW5jdGlvbiBjOCh5ZSl7cmV0dXJuIHRoaXMudG8oUm8oKSx5ZSl9LFVpLmdldD1mdW5jdGlvbiBNYSh5ZSl7cmV0dXJuIGYodGhpc1t5ZT1KZSh5ZSldKT90aGlzW3llXSgpOnRoaXN9LFVpLmludmFsaWRBdD1mdW5jdGlvbiBmYygpe3JldHVybiBOKHRoaXMpLm92ZXJmbG93'@; put 'fSxVaS5pc0FmdGVyPWZ1bmN0aW9uIGk4KHllLFVlKXt2YXIgY3Q9Q2UoeWUpP3llOlJvKHllKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWN0LmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KFVlPUplKFVlKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk+Y3QudmFsdWVP'@; put 'ZigpOmN0LnZhbHVlT2YoKTx0aGlzLmNsb25lKCkuc3RhcnRPZihVZSkudmFsdWVPZigpKX0sVWkuaXNCZWZvcmU9ZnVuY3Rpb24gbzgoeWUsVWUpe3ZhciBjdD1DZSh5ZSk/eWU6Um8oeWUpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhY3QuaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9'@; put 'PT0oVWU9SmUoVWUpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKTxjdC52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKFVlKS52YWx1ZU9mKCk8Y3QudmFsdWVPZigpKX0sVWkuaXNCZXR3ZWVuPWZ1bmN0aW9uIFNnKHllLFVlLGN0LGl0KXt2YXIgRnQ9Q2UoeWUpP3llOlJvKHll'@; put 'KSxZZT1DZShVZSk/VWU6Um8oVWUpO3JldHVybiEhKHRoaXMuaXNWYWxpZCgpJiZGdC5pc1ZhbGlkKCkmJlllLmlzVmFsaWQoKSkmJigiKCI9PT0oaXQ9aXR8fCIoKSIpWzBdP3RoaXMuaXNBZnRlcihGdCxjdCk6IXRoaXMuaXNCZWZvcmUoRnQsY3QpKSYmKCIpIj09PWl0WzFdP3RoaXMuaXNC'@; put 'ZWZvcmUoWWUsY3QpOiF0aGlzLmlzQWZ0ZXIoWWUsY3QpKX0sVWkuaXNTYW1lPWZ1bmN0aW9uIEhtKHllLFVlKXt2YXIgaXQsY3Q9Q2UoeWUpP3llOlJvKHllKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWN0LmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KFVlPUplKFVlKXx8Im1p'@; put 'bGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk9PT1jdC52YWx1ZU9mKCk6KGl0PWN0LnZhbHVlT2YoKSx0aGlzLmNsb25lKCkuc3RhcnRPZihVZSkudmFsdWVPZigpPD1pdCYmaXQ8PXRoaXMuY2xvbmUoKS5lbmRPZihVZSkudmFsdWVPZigpKSl9LFVpLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24g'@; put 'd2QoeWUsVWUpe3JldHVybiB0aGlzLmlzU2FtZSh5ZSxVZSl8fHRoaXMuaXNBZnRlcih5ZSxVZSl9LFVpLmlzU2FtZU9yQmVmb3JlPWZ1bmN0aW9uIGk1KHllLFVlKXtyZXR1cm4gdGhpcy5pc1NhbWUoeWUsVWUpfHx0aGlzLmlzQmVmb3JlKHllLFVlKX0sVWkuaXNWYWxpZD1mdW5jdGlvbiBN'@; put 'Zygpe3JldHVybiBZKHRoaXMpfSxVaS5sYW5nPXZmLFVpLmxvY2FsZT11YSxVaS5sb2NhbGVEYXRhPUx1LFVpLm1heD1vcixVaS5taW49ZGwsVWkucGFyc2luZ0ZsYWdzPWZ1bmN0aW9uIFRnKCl7cmV0dXJuIFUoe30sTih0aGlzKSl9LFVpLnNldD1mdW5jdGlvbiBrcyh5ZSxVZSl7aWYoIm9i'@; put 'amVjdCI9PXR5cGVvZiB5ZSl7dmFyIGl0LGN0PWZ1bmN0aW9uICR0KHllKXt2YXIgY3QsVWU9W107Zm9yKGN0IGluIHllKUMoeWUsY3QpJiZVZS5wdXNoKHt1bml0OmN0LHByaW9yaXR5OktlW2N0XX0pO3JldHVybiBVZS5zb3J0KGZ1bmN0aW9uKGl0LEZ0KXtyZXR1cm4gaXQucHJpb3JpdHkt'@; put 'RnQucHJpb3JpdHl9KSxVZX0oeWU9dHQoeWUpKSxGdD1jdC5sZW5ndGg7Zm9yKGl0PTA7aXQ8RnQ7aXQrKyl0aGlzW2N0W2l0XS51bml0XSh5ZVtjdFtpdF0udW5pdF0pfWVsc2UgaWYoZih0aGlzW3llPUplKHllKV0pKXJldHVybiB0aGlzW3llXShVZSk7cmV0dXJuIHRoaXN9LFVpLnN0YXJ0'@; put 'T2Y9ZnVuY3Rpb24gV3UoeWUpe3ZhciBVZSxjdDtpZih2b2lkIDA9PT0oeWU9SmUoeWUpKXx8Im1pbGxpc2Vjb25kIj09PXllfHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dpdGNoKGN0PXRoaXMuX2lzVVRDP3p1OlljLHllKXtjYXNlInllYXIiOlVlPWN0KHRoaXMueWVhcigpLDAs'@; put 'MSk7YnJlYWs7Y2FzZSJxdWFydGVyIjpVZT1jdCh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6VWU9Y3QodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLDEpO2JyZWFrO2Nhc2Uid2VlayI6VWU9Y3QodGhpcy55ZWFyKCksdGhpcy5t'@; put 'b250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKTticmVhaztjYXNlImlzb1dlZWsiOlVlPWN0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5pc29XZWVrZGF5KCktMSkpO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOlVlPWN0KHRoaXMueWVhcigp'@; put 'LHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSk7YnJlYWs7Y2FzZSJob3VyIjpVZT10aGlzLl9kLnZhbHVlT2YoKSxVZS09VGEoVWUrKHRoaXMuX2lzVVRDPzA6dGhpcy51dGNPZmZzZXQoKSpDMikscnUpO2JyZWFrO2Nhc2UibWludXRlIjpVZT10aGlzLl9kLnZhbHVlT2YoKSxVZS09VGEoVWUs'@; put 'QzIpO2JyZWFrO2Nhc2Uic2Vjb25kIjpVZT10aGlzLl9kLnZhbHVlT2YoKSxVZS09VGEoVWUsMWUzKX1yZXR1cm4gdGhpcy5fZC5zZXRUaW1lKFVlKSxjLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzfSxVaS5zdWJ0cmFjdD11cyxVaS50b0FycmF5PWZ1bmN0aW9uIHUwKCl7dmFyIHllPXRo'@; put 'aXM7cmV0dXJuW3llLnllYXIoKSx5ZS5tb250aCgpLHllLmRhdGUoKSx5ZS5ob3VyKCkseWUubWludXRlKCkseWUuc2Vjb25kKCkseWUubWlsbGlzZWNvbmQoKV19LFVpLnRvT2JqZWN0PWZ1bmN0aW9uIHJzKCl7dmFyIHllPXRoaXM7cmV0dXJue3llYXJzOnllLnllYXIoKSxtb250aHM6eWUu'@; put 'bW9udGgoKSxkYXRlOnllLmRhdGUoKSxob3Vyczp5ZS5ob3VycygpLG1pbnV0ZXM6eWUubWludXRlcygpLHNlY29uZHM6eWUuc2Vjb25kcygpLG1pbGxpc2Vjb25kczp5ZS5taWxsaXNlY29uZHMoKX19LFVpLnRvRGF0ZT1mdW5jdGlvbiBYYSgpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVl'@; put 'T2YoKSl9LFVpLnRvSVNPU3RyaW5nPWZ1bmN0aW9uIGE4KHllKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGw7dmFyIFVlPSEwIT09eWUsY3Q9VWU/dGhpcy5jbG9uZSgpLnV0YygpOnRoaXM7cmV0dXJuIGN0LnllYXIoKTwwfHxjdC55ZWFyKCk+OTk5OT9sdChjdCxVZT8iWVlZWVlZ'@; put 'LU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpOmYoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpP1VlP3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTpuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSs2MCp0aGlzLnV0Y09mZnNldCgpKjFl'@; put 'MykudG9JU09TdHJpbmcoKS5yZXBsYWNlKCJaIixsdChjdCwiWiIpKTpsdChjdCxVZT8iWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSI6IllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIil9LFVpLmluc3BlY3Q9ZnVuY3Rpb24gczgoKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIm1v'@; put 'bWVudC5pbnZhbGlkKC8qICIrdGhpcy5faSsiICovKSI7dmFyIGN0LGl0LHllPSJtb21lbnQiLFVlPSIiO3JldHVybiB0aGlzLmlzTG9jYWwoKXx8KHllPTA9PT10aGlzLnV0Y09mZnNldCgpPyJtb21lbnQudXRjIjoibW9tZW50LnBhcnNlWm9uZSIsVWU9IloiKSxjdD0iWyIreWUrJygiXScs'@; put 'aXQ9MDw9dGhpcy55ZWFyKCkmJnRoaXMueWVhcigpPD05OTk5PyJZWVlZIjoiWVlZWVlZIix0aGlzLmZvcm1hdChjdCtpdCsiLU1NLUREW1RdSEg6bW06c3MuU1NTIitVZSsnWyIpXScpfSx0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9U3ltYm9sLmZvciYmKFVpW1N5bWJvbC5mb3IoIm5vZGVq'@; put 'cy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uKCl7cmV0dXJuIk1vbWVudDwiK3RoaXMuZm9ybWF0KCkrIj4ifSksVWkudG9KU09OPWZ1bmN0aW9uIHBwKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMudG9JU09TdHJpbmcoKTpudWxsfSxVaS50b1N0cmluZz1mdW5jdGlvbiBk'@; put 'cCgpe3JldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX0sVWkudW5peD1mdW5jdGlvbiBmbCgpe3JldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpLzFlMyl9LFVpLnZhbHVlT2Y9ZnVuY3Rpb24gVm0o'@; put 'KXtyZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCktNmU0Kih0aGlzLl9vZmZzZXR8fDApfSxVaS5jcmVhdGlvbkRhdGE9ZnVuY3Rpb24gZjMoKXtyZXR1cm57aW5wdXQ6dGhpcy5faSxmb3JtYXQ6dGhpcy5fZixsb2NhbGU6dGhpcy5fbG9jYWxlLGlzVVRDOnRoaXMuX2lzVVRDLHN0cmljdDp0aGlz'@; put 'Ll9zdHJpY3R9fSxVaS5lcmFOYW1lPWZ1bmN0aW9uIGptKCl7dmFyIHllLFVlLGN0LGl0PXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtmb3IoeWU9MCxVZT1pdC5sZW5ndGg7eWU8VWU7Kyt5ZSlpZihjdD10aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLGl0W3llXS5zaW5j'@; put 'ZTw9Y3QmJmN0PD1pdFt5ZV0udW50aWx8fGl0W3llXS51bnRpbDw9Y3QmJmN0PD1pdFt5ZV0uc2luY2UpcmV0dXJuIGl0W3llXS5uYW1lO3JldHVybiIifSxVaS5lcmFOYXJyb3c9ZnVuY3Rpb24geWYoKXt2YXIgeWUsVWUsY3QsaXQ9dGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO2Zvcih5ZT0w'@; put 'LFVlPWl0Lmxlbmd0aDt5ZTxVZTsrK3llKWlmKGN0PXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksaXRbeWVdLnNpbmNlPD1jdCYmY3Q8PWl0W3llXS51bnRpbHx8aXRbeWVdLnVudGlsPD1jdCYmY3Q8PWl0W3llXS5zaW5jZSlyZXR1cm4gaXRbeWVdLm5hcnJvdztyZXR1'@; put 'cm4iIn0sVWkuZXJhQWJicj1mdW5jdGlvbiBvNSgpe3ZhciB5ZSxVZSxjdCxpdD10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKHllPTAsVWU9aXQubGVuZ3RoO3llPFVlOysreWUpaWYoY3Q9dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxpdFt5ZV0uc2luY2U8PWN0'@; put 'JiZjdDw9aXRbeWVdLnVudGlsfHxpdFt5ZV0udW50aWw8PWN0JiZjdDw9aXRbeWVdLnNpbmNlKXJldHVybiBpdFt5ZV0uYWJicjtyZXR1cm4iIn0sVWkuZXJhWWVhcj1mdW5jdGlvbiBwMygpe3ZhciB5ZSxVZSxjdCxpdCxGdD10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKHllPTAsVWU9'@; put 'RnQubGVuZ3RoO3llPFVlOysreWUpaWYoY3Q9RnRbeWVdLnNpbmNlPD1GdFt5ZV0udW50aWw/MTotMSxpdD10aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLEZ0W3llXS5zaW5jZTw9aXQmJml0PD1GdFt5ZV0udW50aWx8fEZ0W3llXS51bnRpbDw9aXQmJml0PD1GdFt5ZV0u'@; put 'c2luY2UpcmV0dXJuKHRoaXMueWVhcigpLWMoRnRbeWVdLnNpbmNlKS55ZWFyKCkpKmN0K0Z0W3llXS5vZmZzZXQ7cmV0dXJuIHRoaXMueWVhcigpfSxVaS55ZWFyPWVhLFVpLmlzTGVhcFllYXI9ZnVuY3Rpb24gcmEoKXtyZXR1cm4gR24odGhpcy55ZWFyKCkpfSxVaS53ZWVrWWVhcj1mdW5j'@; put 'dGlvbiBGbCh5ZSl7cmV0dXJuIHMxLmNhbGwodGhpcyx5ZSx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSt0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveSl9LFVpLmlzb1dlZWtZZWFyPWZ1'@; put 'bmN0aW9uIHpzKHllKXtyZXR1cm4gczEuY2FsbCh0aGlzLHllLHRoaXMuaXNvV2VlaygpLHRoaXMuaXNvV2Vla2RheSgpLDEsNCl9LFVpLnF1YXJ0ZXI9VWkucXVhcnRlcnM9ZnVuY3Rpb24gZHkoeWUpe3JldHVybiBudWxsPT15ZT9NYXRoLmNlaWwoKHRoaXMubW9udGgoKSsxKS8zKTp0aGlz'@; put 'Lm1vbnRoKDMqKHllLTEpK3RoaXMubW9udGgoKSUzKX0sVWkubW9udGg9ZzIsVWkuZGF5c0luTW9udGg9ZnVuY3Rpb24gTGMoKXtyZXR1cm4gTXIodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sVWkud2Vlaz1VaS53ZWVrcz1mdW5jdGlvbiBVYSh5ZSl7dmFyIFVlPXRoaXMubG9jYWxlRGF0'@; put 'YSgpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PXllP1VlOnRoaXMuYWRkKDcqKHllLVVlKSwiZCIpfSxVaS5pc29XZWVrPVVpLmlzb1dlZWtzPWZ1bmN0aW9uIFZ1KHllKXt2YXIgVWU9ZmEodGhpcywxLDQpLndlZWs7cmV0dXJuIG51bGw9PXllP1VlOnRoaXMuYWRkKDcqKHllLVVlKSwiZCIp'@; put 'fSxVaS53ZWVrc0luWWVhcj1mdW5jdGlvbiB3Zigpe3ZhciB5ZT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gVnIodGhpcy55ZWFyKCkseWUuZG93LHllLmRveSl9LFVpLndlZWtzSW5XZWVrWWVhcj1mdW5jdGlvbiBDZigpe3ZhciB5ZT10aGlzLmxvY2FsZURhdGEoKS5fd2Vlazty'@; put 'ZXR1cm4gVnIodGhpcy53ZWVrWWVhcigpLHllLmRvdyx5ZS5kb3kpfSxVaS5pc29XZWVrc0luWWVhcj1mdW5jdGlvbiBZdSgpe3JldHVybiBWcih0aGlzLnllYXIoKSwxLDQpfSxVaS5pc29XZWVrc0luSVNPV2Vla1llYXI9ZnVuY3Rpb24gcmQoKXtyZXR1cm4gVnIodGhpcy5pc29XZWVrWWVh'@; put 'cigpLDEsNCl9LFVpLmRhdGU9T3UsVWkuZGF5PVVpLmRheXM9ZnVuY3Rpb24gSm4oeWUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9eWU/dGhpczpOYU47dmFyIFVlPUNpKHRoaXMsIkRheSIpO3JldHVybiBudWxsIT15ZT8oeWU9ZnVuY3Rpb24gTG0oeWUsVWUpe3JldHVybiJz'@; put 'dHJpbmciIT10eXBlb2YgeWU/eWU6aXNOYU4oeWUpPyJudW1iZXIiPT10eXBlb2YoeWU9VWUud2Vla2RheXNQYXJzZSh5ZSkpP3llOm51bGw6cGFyc2VJbnQoeWUsMTApfSh5ZSx0aGlzLmxvY2FsZURhdGEoKSksdGhpcy5hZGQoeWUtVWUsImQiKSk6VWV9LFVpLndlZWtkYXk9ZnVuY3Rpb24g'@; put 'Y2woeWUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9eWU/dGhpczpOYU47dmFyIFVlPSh0aGlzLmRheSgpKzctdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSU3O3JldHVybiBudWxsPT15ZT9VZTp0aGlzLmFkZCh5ZS1VZSwiZCIpfSxVaS5pc29XZWVrZGF5PWZ1bmN0aW9u'@; put 'IG1pKHllKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPXllP3RoaXM6TmFOO2lmKG51bGwhPXllKXt2YXIgVWU9ZnVuY3Rpb24gdTMoeWUsVWUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeWU/VWUud2Vla2RheXNQYXJzZSh5ZSklN3x8Nzppc05hTih5ZSk/bnVsbDp5ZX0oeWUs'@; put 'dGhpcy5sb2NhbGVEYXRhKCkpO3JldHVybiB0aGlzLmRheSh0aGlzLmRheSgpJTc/VWU6VWUtNyl9cmV0dXJuIHRoaXMuZGF5KCl8fDd9LFVpLmRheU9mWWVhcj1mdW5jdGlvbiBTZih5ZSl7dmFyIFVlPU1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS10aGlzLmNsb25l'@; put 'KCkuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09eWU/VWU6dGhpcy5hZGQoeWUtVWUsImQiKX0sVWkuaG91cj1VaS5ob3Vycz11bCxVaS5taW51dGU9VWkubWludXRlcz1VbSxVaS5zZWNvbmQ9VWkuc2Vjb25kcz1DOSxVaS5taWxsaXNlY29uZD1VaS5taWxsaXNlY29u'@; put 'ZHM9QWcsVWkudXRjT2Zmc2V0PWZ1bmN0aW9uIEJkKHllLFVlLGN0KXt2YXIgRnQsaXQ9dGhpcy5fb2Zmc2V0fHwwO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9eWU/dGhpczpOYU47aWYobnVsbCE9eWUpe2lmKCJzdHJpbmciPT10eXBlb2YgeWUpe2lmKG51bGw9PT0oeWU9YjIo'@; put 'U24seWUpKSlyZXR1cm4gdGhpc31lbHNlIE1hdGguYWJzKHllKTwxNiYmIWN0JiYoeWUqPTYwKTtyZXR1cm4hdGhpcy5faXNVVEMmJlVlJiYoRnQ9anUodGhpcykpLHRoaXMuX29mZnNldD15ZSx0aGlzLl9pc1VUQz0hMCxudWxsIT1GdCYmdGhpcy5hZGQoRnQsIm0iKSxpdCE9PXllJiYoIVVl'@; put 'fHx0aGlzLl9jaGFuZ2VJblByb2dyZXNzP21mKHRoaXMsQ3MoeWUtaXQsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxjLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfXJl'@; put 'dHVybiB0aGlzLl9pc1VUQz9pdDpqdSh0aGlzKX0sVWkudXRjPWZ1bmN0aW9uIHI4KHllKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoMCx5ZSl9LFVpLmxvY2FsPWZ1bmN0aW9uIHFzKHllKXtyZXR1cm4gdGhpcy5faXNVVEMmJih0aGlzLnV0Y09mZnNldCgwLHllKSx0aGlzLl9pc1VUQz0hMSx5'@; put 'ZSYmdGhpcy5zdWJ0cmFjdChqdSh0aGlzKSwibSIpKSx0aGlzfSxVaS5wYXJzZVpvbmU9ZnVuY3Rpb24gSmEoKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCExLCEwKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5faSl7dmFyIHllPWIyKFpuLHRo'@; put 'aXMuX2kpO251bGwhPXllP3RoaXMudXRjT2Zmc2V0KHllKTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc30sVWkuaGFzQWxpZ25lZEhvdXJPZmZzZXQ9ZnVuY3Rpb24gTmwoeWUpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJih5ZT15ZT9Sbyh5ZSkudXRjT2Zmc2V0KCk6MCwodGhp'@; put 'cy51dGNPZmZzZXQoKS15ZSklNjA9PTApfSxVaS5pc0RTVD1mdW5jdGlvbiBuMSgpe3JldHVybiB0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKXx8dGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KCl9LFVpLmlz'@; put 'TG9jYWw9ZnVuY3Rpb24gTjAoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYhdGhpcy5faXNVVEN9LFVpLmlzVXRjT2Zmc2V0PWZ1bmN0aW9uIHIxKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmdGhpcy5faXNVVEN9LFVpLmlzVXRjPWhsLFVpLmlzVVRDPWhsLFVpLnpvbmVBYmJyPWZ1bmN0'@; put 'aW9uIGh5KCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifSxVaS56b25lTmFtZT1mdW5jdGlvbiBmeSgpe3JldHVybiB0aGlzLl9pc1VUQz8iQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiOiIifSxVaS5kYXRlcz1rZSgiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRh'@; put 'dGUgaW5zdGVhZC4iLE91KSxVaS5tb250aHM9a2UoIm1vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCIsZzIpLFVpLnllYXJzPWtlKCJ5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkIixlYSksVWkuem9uZT1rZSgibW9t'@; put 'ZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLGZ1bmN0aW9uIHcyKHllLFVlKXtyZXR1cm4gbnVsbCE9eWU/KCJzdHJpbmciIT10eXBlb2YgeWUmJih5ZT0t'@; put 'eWUpLHRoaXMudXRjT2Zmc2V0KHllLFVlKSx0aGlzKTotdGhpcy51dGNPZmZzZXQoKX0pLFVpLmlzRFNUU2hpZnRlZD1rZSgiaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBp'@; put 'bmZvcm1hdGlvbiIsZnVuY3Rpb24gamQoKXtpZighUyh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIFVlLHllPXt9O3JldHVybiByZSh5ZSx0aGlzKSwoeWU9V2koeWUpKS5fYT8oVWU9eWUuX2lzVVRDP0goeWUuX2EpOlJvKHllLl9hKSx0aGlzLl9p'@; put 'c0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJmZ1bmN0aW9uIHQxKHllLFVlLGN0KXt2YXIgWGUsaXQ9TWF0aC5taW4oeWUubGVuZ3RoLFVlLmxlbmd0aCksRnQ9TWF0aC5hYnMoeWUubGVuZ3RoLVVlLmxlbmd0aCksWWU9MDtmb3IoWGU9MDtYZTxpdDtYZSsrKShjdCYmeWVbWGVdIT09VWVb'@; put 'WGVdfHwhY3QmJlV0KHllW1hlXSkhPT1VdChVZVtYZV0pKSYmWWUrKztyZXR1cm4gWWUrRnR9KHllLl9hLFVlLnRvQXJyYXkoKSk+MCk6dGhpcy5faXNEU1RTaGlmdGVkPSExLHRoaXMuX2lzRFNUU2hpZnRlZH0pO3ZhciB4YT1NLnByb3RvdHlwZTtmdW5jdGlvbiBwbCh5ZSxVZSxjdCxpdCl7'@; put 'dmFyIEZ0PXJoKCksWWU9SCgpLnNldChpdCxVZSk7cmV0dXJuIEZ0W2N0XShZZSx5ZSl9ZnVuY3Rpb24gaWQoeWUsVWUsY3Qpe2lmKEwoeWUpJiYoVWU9eWUseWU9dm9pZCAwKSx5ZT15ZXx8IiIsbnVsbCE9VWUpcmV0dXJuIHBsKHllLFVlLGN0LCJtb250aCIpO3ZhciBpdCxGdD1bXTtmb3Io'@; put 'aXQ9MDtpdDwxMjtpdCsrKUZ0W2l0XT1wbCh5ZSxpdCxjdCwibW9udGgiKTtyZXR1cm4gRnR9ZnVuY3Rpb24gZDAoeWUsVWUsY3QsaXQpeyJib29sZWFuIj09dHlwZW9mIHllPyhMKFVlKSYmKGN0PVVlLFVlPXZvaWQgMCksVWU9VWV8fCIiKTooY3Q9VWU9eWUseWU9ITEsTChVZSkmJihjdD1V'@; put 'ZSxVZT12b2lkIDApLFVlPVVlfHwiIik7dmFyIFhlLEZ0PXJoKCksWWU9eWU/RnQuX3dlZWsuZG93OjAseWk9W107aWYobnVsbCE9Y3QpcmV0dXJuIHBsKFVlLChjdCtZZSklNyxpdCwiZGF5Iik7Zm9yKFhlPTA7WGU8NztYZSsrKXlpW1hlXT1wbChVZSwoWGUrWWUpJTcsaXQsImRheSIpO3Jl'@; put 'dHVybiB5aX14YS5jYWxlbmRhcj1mdW5jdGlvbiBHKHllLFVlLGN0KXt2YXIgaXQ9dGhpcy5fY2FsZW5kYXJbeWVdfHx0aGlzLl9jYWxlbmRhci5zYW1lRWxzZTtyZXR1cm4gZihpdCk/aXQuY2FsbChVZSxjdCk6aXR9LHhhLmxvbmdEYXRlRm9ybWF0PWZ1bmN0aW9uIGFlKHllKXt2YXIgVWU9'@; put 'dGhpcy5fbG9uZ0RhdGVGb3JtYXRbeWVdLGN0PXRoaXMuX2xvbmdEYXRlRm9ybWF0W3llLnRvVXBwZXJDYXNlKCldO3JldHVybiBVZXx8IWN0P1VlOih0aGlzLl9sb25nRGF0ZUZvcm1hdFt5ZV09Y3QubWF0Y2gocCkubWFwKGZ1bmN0aW9uKGl0KXtyZXR1cm4iTU1NTSI9PT1pdHx8Ik1NIj09'@; put 'PWl0fHwiREQiPT09aXR8fCJkZGRkIj09PWl0P2l0LnNsaWNlKDEpOml0fSkuam9pbigiIiksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbeWVdKX0seGEuaW52YWxpZERhdGU9ZnVuY3Rpb24gamUoKXtyZXR1cm4gdGhpcy5faW52YWxpZERhdGV9LHhhLm9yZGluYWw9ZnVuY3Rpb24gRmUoeWUpe3Jl'@; put 'dHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoIiVkIix5ZSl9LHhhLnByZXBhcnNlPWQ4LHhhLnBvc3Rmb3JtYXQ9ZDgseGEucmVsYXRpdmVUaW1lPWZ1bmN0aW9uIGNlKHllLFVlLGN0LGl0KXt2YXIgRnQ9dGhpcy5fcmVsYXRpdmVUaW1lW2N0XTtyZXR1cm4gZihGdCk/RnQoeWUsVWUsY3Qs'@; put 'aXQpOkZ0LnJlcGxhY2UoLyVkL2kseWUpfSx4YS5wYXN0RnV0dXJlPWZ1bmN0aW9uIGhlKHllLFVlKXt2YXIgY3Q9dGhpcy5fcmVsYXRpdmVUaW1lW3llPjA/ImZ1dHVyZSI6InBhc3QiXTtyZXR1cm4gZihjdCk/Y3QoVWUpOmN0LnJlcGxhY2UoLyVzL2ksVWUpfSx4YS5zZXQ9ZnVuY3Rpb24g'@; put 'Yih5ZSl7dmFyIFVlLGN0O2ZvcihjdCBpbiB5ZSlDKHllLGN0KSYmKGYoVWU9eWVbY3RdKT90aGlzW2N0XT1VZTp0aGlzWyJfIitjdF09VWUpO3RoaXMuX2NvbmZpZz15ZSx0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3Jk'@; put 'aW5hbFBhcnNlLnNvdXJjZXx8dGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfSx4YS5lcmFzPWZ1bmN0aW9uIGdwKHllLFVlKXt2YXIgY3QsaXQsRnQsWWU9dGhpcy5fZXJhc3x8cmgoImVuIikuX2VyYXM7Zm9yKGN0PTAsaXQ9WWUubGVuZ3RoO2N0PGl0'@; put 'OysrY3Qpc3dpdGNoKCJzdHJpbmciPT10eXBlb2YgWWVbY3RdLnNpbmNlJiYoRnQ9YyhZZVtjdF0uc2luY2UpLnN0YXJ0T2YoImRheSIpLFllW2N0XS5zaW5jZT1GdC52YWx1ZU9mKCkpLHR5cGVvZiBZZVtjdF0udW50aWwpe2Nhc2UidW5kZWZpbmVkIjpZZVtjdF0udW50aWw9MS8wO2JyZWFr'@; put 'O2Nhc2Uic3RyaW5nIjpGdD1jKFllW2N0XS51bnRpbCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLFllW2N0XS51bnRpbD1GdC52YWx1ZU9mKCl9cmV0dXJuIFllfSx4YS5lcmFzUGFyc2U9ZnVuY3Rpb24gX2YoeWUsVWUsY3Qpe3ZhciBpdCxGdCxYZSx5aSxXYSxZZT10aGlzLmVyYXMoKTtm'@; put 'b3IoeWU9eWUudG9VcHBlckNhc2UoKSxpdD0wLEZ0PVllLmxlbmd0aDtpdDxGdDsrK2l0KWlmKFhlPVllW2l0XS5uYW1lLnRvVXBwZXJDYXNlKCkseWk9WWVbaXRdLmFiYnIudG9VcHBlckNhc2UoKSxXYT1ZZVtpdF0ubmFycm93LnRvVXBwZXJDYXNlKCksY3Qpc3dpdGNoKFVlKXtjYXNlIk4i'@; put 'OmNhc2UiTk4iOmNhc2UiTk5OIjppZih5aT09PXllKXJldHVybiBZZVtpdF07YnJlYWs7Y2FzZSJOTk5OIjppZihYZT09PXllKXJldHVybiBZZVtpdF07YnJlYWs7Y2FzZSJOTk5OTiI6aWYoV2E9PT15ZSlyZXR1cm4gWWVbaXRdfWVsc2UgaWYoW1hlLHlpLFdhXS5pbmRleE9mKHllKT49MCly'@; put 'ZXR1cm4gWWVbaXRdfSx4YS5lcmFzQ29udmVydFllYXI9ZnVuY3Rpb24gQm0oeWUsVWUpe3ZhciBjdD15ZS5zaW5jZTw9eWUudW50aWw/MTotMTtyZXR1cm4gdm9pZCAwPT09VWU/Yyh5ZS5zaW5jZSkueWVhcigpOmMoeWUuc2luY2UpLnllYXIoKSsoVWUteWUub2Zmc2V0KSpjdH0seGEuZXJh'@; put 'c0FiYnJSZWdleD1mdW5jdGlvbiBnMyh5ZSl7cmV0dXJuIEModGhpcywiX2VyYXNBYmJyUmVnZXgiKXx8eGcuY2FsbCh0aGlzKSx5ZT90aGlzLl9lcmFzQWJiclJlZ2V4OnRoaXMuX2VyYXNSZWdleH0seGEuZXJhc05hbWVSZWdleD1mdW5jdGlvbiBvMSh5ZSl7cmV0dXJuIEModGhpcywiX2Vy'@; put 'YXNOYW1lUmVnZXgiKXx8eGcuY2FsbCh0aGlzKSx5ZT90aGlzLl9lcmFzTmFtZVJlZ2V4OnRoaXMuX2VyYXNSZWdleH0seGEuZXJhc05hcnJvd1JlZ2V4PWZ1bmN0aW9uIG0zKHllKXtyZXR1cm4gQyh0aGlzLCJfZXJhc05hcnJvd1JlZ2V4Iil8fHhnLmNhbGwodGhpcykseWU/dGhpcy5fZXJh'@; put 'c05hcnJvd1JlZ2V4OnRoaXMuX2VyYXNSZWdleH0seGEubW9udGhzPWZ1bmN0aW9uIFRpKHllLFVlKXtyZXR1cm4geWU/QSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoc1t5ZS5tb250aCgpXTp0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdHx8X3MpLnRlc3QoVWUpPyJmb3Jt'@; put 'YXQiOiJzdGFuZGFsb25lIl1beWUubW9udGgoKV06QSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoczp0aGlzLl9tb250aHMuc3RhbmRhbG9uZX0seGEubW9udGhzU2hvcnQ9ZnVuY3Rpb24gV24oeWUsVWUpe3JldHVybiB5ZT9BKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9y'@; put 'dFt5ZS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydFtfcy50ZXN0KFVlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW3llLm1vbnRoKCldOkEodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0OnRoaXMuX21vbnRoc1Nob3J0LnN0YW5kYWxvbmV9LHhhLm1vbnRoc1BhcnNlPWZ1'@; put 'bmN0aW9uIGRjKHllLFVlLGN0KXt2YXIgaXQsRnQsWWU7aWYodGhpcy5fbW9udGhzUGFyc2VFeGFjdClyZXR1cm4gUWguY2FsbCh0aGlzLHllLFVlLGN0KTtmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5f'@; put 'c2hvcnRNb250aHNQYXJzZT1bXSksaXQ9MDtpdDwxMjtpdCsrKXtpZihGdD1IKFsyZTMsaXRdKSxjdCYmIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpdF0mJih0aGlzLl9sb25nTW9udGhzUGFyc2VbaXRdPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzKEZ0LCIiKS5yZXBsYWNlKCIuIiwiIikr'@; put 'IiQiLCJpIiksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpdF09bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHNTaG9ydChGdCwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpKSwhY3QmJiF0aGlzLl9tb250aHNQYXJzZVtpdF0mJihZZT0iXiIrdGhpcy5tb250aHMoRnQsIiIpKyJ8XiIrdGhp'@; put 'cy5tb250aHNTaG9ydChGdCwiIiksdGhpcy5fbW9udGhzUGFyc2VbaXRdPW5ldyBSZWdFeHAoWWUucmVwbGFjZSgiLiIsIiIpLCJpIikpLGN0JiYiTU1NTSI9PT1VZSYmdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2l0XS50ZXN0KHllKSlyZXR1cm4gaXQ7aWYoY3QmJiJNTU0iPT09VWUmJnRoaXMu'@; put 'X3Nob3J0TW9udGhzUGFyc2VbaXRdLnRlc3QoeWUpKXJldHVybiBpdDtpZighY3QmJnRoaXMuX21vbnRoc1BhcnNlW2l0XS50ZXN0KHllKSlyZXR1cm4gaXR9fSx4YS5tb250aHNSZWdleD1mdW5jdGlvbiBzcCh5ZSl7cmV0dXJuIHRoaXMuX21vbnRoc1BhcnNlRXhhY3Q/KEModGhpcywiX21v'@; put 'bnRoc1JlZ2V4Iil8fFJzLmNhbGwodGhpcykseWU/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpOihDKHRoaXMsIl9tb250aHNSZWdleCIpfHwodGhpcy5fbW9udGhzUmVnZXg9Q2wpLHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4JiZ5ZT90aGlzLl9tb250aHNTdHJp'@; put 'Y3RSZWdleDp0aGlzLl9tb250aHNSZWdleCl9LHhhLm1vbnRoc1Nob3J0UmVnZXg9ZnVuY3Rpb24gVXMoeWUpe3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhDKHRoaXMsIl9tb250aHNSZWdleCIpfHxScy5jYWxsKHRoaXMpLHllP3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6'@; put 'dGhpcy5fbW9udGhzU2hvcnRSZWdleCk6KEModGhpcywiX21vbnRoc1Nob3J0UmVnZXgiKXx8KHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9anMpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXgmJnllP3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzU2hvcnRSZWdl'@; put 'eCl9LHhhLndlZWs9ZnVuY3Rpb24gUWMoeWUpe3JldHVybiBmYSh5ZSx0aGlzLl93ZWVrLmRvdyx0aGlzLl93ZWVrLmRveSkud2Vla30seGEuZmlyc3REYXlPZlllYXI9ZnVuY3Rpb24gYmcoKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3l9LHhhLmZpcnN0RGF5T2ZXZWVrPWZ1bmN0aW9uIGEwKCl7'@; put 'cmV0dXJuIHRoaXMuX3dlZWsuZG93fSx4YS53ZWVrZGF5cz1mdW5jdGlvbiBCdSh5ZSxVZSl7dmFyIGN0PUEodGhpcy5fd2Vla2RheXMpP3RoaXMuX3dlZWtkYXlzOnRoaXMuX3dlZWtkYXlzW3llJiYhMCE9PXllJiZ0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KFVlKT8iZm9ybWF0Ijoi'@; put 'c3RhbmRhbG9uZSJdO3JldHVybiEwPT09eWU/bmgoY3QsdGhpcy5fd2Vlay5kb3cpOnllP2N0W3llLmRheSgpXTpjdH0seGEud2Vla2RheXNNaW49ZnVuY3Rpb24gUnUoeWUpe3JldHVybiEwPT09eWU/bmgodGhpcy5fd2Vla2RheXNNaW4sdGhpcy5fd2Vlay5kb3cpOnllP3RoaXMuX3dlZWtk'@; put 'YXlzTWluW3llLmRheSgpXTp0aGlzLl93ZWVrZGF5c01pbn0seGEud2Vla2RheXNTaG9ydD1mdW5jdGlvbiBOMSh5ZSl7cmV0dXJuITA9PT15ZT9uaCh0aGlzLl93ZWVrZGF5c1Nob3J0LHRoaXMuX3dlZWsuZG93KTp5ZT90aGlzLl93ZWVrZGF5c1Nob3J0W3llLmRheSgpXTp0aGlzLl93ZWVr'@; put 'ZGF5c1Nob3J0fSx4YS53ZWVrZGF5c1BhcnNlPWZ1bmN0aW9uIGVkKHllLFVlLGN0KXt2YXIgaXQsRnQsWWU7aWYodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KXJldHVybiBoYy5jYWxsKHRoaXMseWUsVWUsY3QpO2Zvcih0aGlzLl93ZWVrZGF5c1BhcnNlfHwodGhpcy5fd2Vla2RheXNQYXJz'@; put 'ZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9mdWxsV2Vla2RheXNQYXJzZT1bXSksaXQ9MDtpdDw3O2l0Kyspe2lmKEZ0PUgoWzJlMywxXSkuZGF5KGl0KSxjdCYmIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2l0XSYmKHRo'@; put 'aXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2l0XT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzKEZ0LCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtpdF09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c1Nob3J0KEZ0LCIiKS5yZXBs'@; put 'YWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaXRdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNNaW4oRnQsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIikpLHRoaXMuX3dlZWtkYXlzUGFyc2VbaXRdfHwoWWU9Il4iK3RoaXMud2Vla2Rh'@; put 'eXMoRnQsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KEZ0LCIiKSsifF4iK3RoaXMud2Vla2RheXNNaW4oRnQsIiIpLHRoaXMuX3dlZWtkYXlzUGFyc2VbaXRdPW5ldyBSZWdFeHAoWWUucmVwbGFjZSgiLiIsIiIpLCJpIikpLGN0JiYiZGRkZCI9PT1VZSYmdGhpcy5fZnVsbFdlZWtkYXlz'@; put 'UGFyc2VbaXRdLnRlc3QoeWUpKXJldHVybiBpdDtpZihjdCYmImRkZCI9PT1VZSYmdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2l0XS50ZXN0KHllKSlyZXR1cm4gaXQ7aWYoY3QmJiJkZCI9PT1VZSYmdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpdF0udGVzdCh5ZSkpcmV0dXJuIGl0O2lmKCFj'@; put 'dCYmdGhpcy5fd2Vla2RheXNQYXJzZVtpdF0udGVzdCh5ZSkpcmV0dXJuIGl0fX0seGEud2Vla2RheXNSZWdleD1mdW5jdGlvbiBldSh5ZSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oQyh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxpci5jYWxsKHRoaXMpLHllP3RoaXMuX3dl'@; put 'ZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCk6KEModGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzUmVnZXg9bHApLHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXgmJnllP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdl'@; put 'eCl9LHhhLndlZWtkYXlzU2hvcnRSZWdleD1mdW5jdGlvbiBTbCh5ZSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oQyh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxpci5jYWxsKHRoaXMpLHllP3RoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1No'@; put 'b3J0UmVnZXgpOihDKHRoaXMsIl93ZWVrZGF5c1Nob3J0UmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD1EbCksdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4JiZ5ZT90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX0s'@; put 'eGEud2Vla2RheXNNaW5SZWdleD1mdW5jdGlvbiBjbih5ZSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oQyh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxpci5jYWxsKHRoaXMpLHllP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCk6'@; put 'KEModGhpcywiX3dlZWtkYXlzTWluUmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9RW8pLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXgmJnllP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCl9LHhhLmlzUE09ZnVuY3Rpb24gdGMo'@; put 'eWUpe3JldHVybiJwIj09PSh5ZSsiIikudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCl9LHhhLm1lcmlkaWVtPWZ1bmN0aW9uIHBzKHllLFVlLGN0KXtyZXR1cm4geWU+MTE/Y3Q/InBtIjoiUE0iOmN0PyJhbSI6IkFNIn0sSXUoImVuIix7ZXJhczpbe3NpbmNlOiIwMDAxLTAxLTAxIix1bnRpbDox'@; put 'LzAsb2Zmc2V0OjEsbmFtZToiQW5ubyBEb21pbmkiLG5hcnJvdzoiQUQiLGFiYnI6IkFEIn0se3NpbmNlOiIwMDAwLTEyLTMxIix1bnRpbDotMS8wLG9mZnNldDoxLG5hbWU6IkJlZm9yZSBDaHJpc3QiLG5hcnJvdzoiQkMiLGFiYnI6IkJDIn1dLGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xk'@; put 'ezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKHllKXt2YXIgVWU9eWUlMTA7cmV0dXJuIHllKygxPT09VXQoeWUlMTAwLzEwKT8idGgiOjE9PT1VZT8ic3QiOjI9PT1VZT8ibmQiOjM9PT1VZT8icmQiOiJ0aCIpfX0pLGMubGFuZz1rZSgibW9tZW50LmxhbmcgaXMgZGVwcmVj'@; put 'YXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4iLEl1KSxjLmxhbmdEYXRhPWtlKCJtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuIixyaCk7dmFyICRlPU1hdGguYWJzO2Z1bmN0aW9uIFF0KHllLFVlLGN0LGl0KXt2YXIg'@; put 'RnQ9Q3MoVWUsY3QpO3JldHVybiB5ZS5fbWlsbGlzZWNvbmRzKz1pdCpGdC5fbWlsbGlzZWNvbmRzLHllLl9kYXlzKz1pdCpGdC5fZGF5cyx5ZS5fbW9udGhzKz1pdCpGdC5fbW9udGhzLHllLl9idWJibGUoKX1mdW5jdGlvbiBVcih5ZSl7cmV0dXJuIHllPDA/TWF0aC5mbG9vcih5ZSk6TWF0'@; put 'aC5jZWlsKHllKX1mdW5jdGlvbiBEcih5ZSl7cmV0dXJuIDQ4MDAqeWUvMTQ2MDk3fWZ1bmN0aW9uIEppKHllKXtyZXR1cm4gMTQ2MDk3KnllLzQ4MDB9ZnVuY3Rpb24gWWkoeWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKHllKX19dmFyIGRzPVlpKCJtcyIpLFBzPVlpKCJz'@; put 'IiksYWE9WWkoIm0iKSxJbz1ZaSgiaCIpLFppPVlpKCJkIiksZ2w9WWkoInciKSxqbD1ZaSgiTSIpLFYxPVlpKCJRIikscGM9WWkoInkiKSxVZD1kcztmdW5jdGlvbiBaYyh5ZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX2RhdGFbeWVdOk5hTn19dmFy'@; put 'IGgwPVpjKCJtaWxsaXNlY29uZHMiKSxTMj1aYygic2Vjb25kcyIpLF8zPVpjKCJtaW51dGVzIiksTWY9WmMoImhvdXJzIiksaWg9WmMoImRheXMiKSxrZz1aYygibW9udGhzIiksWnU9WmMoInllYXJzIik7dmFyIHBhPU1hdGgucm91bmQsSWg9e3NzOjQ0LHM6NDUsbTo0NSxoOjIyLGQ6MjYs'@; put 'dzpudWxsLE06MTF9O2Z1bmN0aW9uIFJnKHllLFVlLGN0LGl0LEZ0KXtyZXR1cm4gRnQucmVsYXRpdmVUaW1lKFVlfHwxLCEhY3QseWUsaXQpfXZhciBJZz1NYXRoLmFicztmdW5jdGlvbiB2cCh5ZSl7cmV0dXJuKHllPjApLSh5ZTwwKXx8K3llfWZ1bmN0aW9uIGYwKCl7aWYoIXRoaXMuaXNW'@; put 'YWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO3ZhciBpdCxGdCxZZSxYZSxXYSxTcyxXcyxjMSx5ZT1JZyh0aGlzLl9taWxsaXNlY29uZHMpLzFlMyxVZT1JZyh0aGlzLl9kYXlzKSxjdD1JZyh0aGlzLl9tb250aHMpLHlpPXRoaXMuYXNTZWNvbmRzKCk7cmV0'@; put 'dXJuIHlpPyhpdD1HZSh5ZS82MCksRnQ9R2UoaXQvNjApLHllJT02MCxpdCU9NjAsWWU9R2UoY3QvMTIpLGN0JT0xMixYZT15ZT95ZS50b0ZpeGVkKDMpLnJlcGxhY2UoL1wuPzArJC8sIiIpOiIiLFdhPXlpPDA/Ii0iOiIiLFNzPXZwKHRoaXMuX21vbnRocykhPT12cCh5aSk/Ii0iOiIiLFdz'@; put 'PXZwKHRoaXMuX2RheXMpIT09dnAoeWkpPyItIjoiIixjMT12cCh0aGlzLl9taWxsaXNlY29uZHMpIT09dnAoeWkpPyItIjoiIixXYSsiUCIrKFllP1NzK1llKyJZIjoiIikrKGN0P1NzK2N0KyJNIjoiIikrKFVlP1dzK1VlKyJEIjoiIikrKEZ0fHxpdHx8eWU/IlQiOiIiKSsoRnQ/YzErRnQr'@; put 'IkgiOiIiKSsoaXQ/YzEraXQrIk0iOiIiKSsoeWU/YzErWGUrIlMiOiIiKSk6IlAwRCJ9dmFyIEhzPXkyLnByb3RvdHlwZTtyZXR1cm4gSHMuaXNWYWxpZD1mdW5jdGlvbiBXYygpe3JldHVybiB0aGlzLl9pc1ZhbGlkfSxIcy5hYnM9ZnVuY3Rpb24gU3QoKXt2YXIgeWU9dGhpcy5fZGF0YTty'@; put 'ZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzPSRlKHRoaXMuX21pbGxpc2Vjb25kcyksdGhpcy5fZGF5cz0kZSh0aGlzLl9kYXlzKSx0aGlzLl9tb250aHM9JGUodGhpcy5fbW9udGhzKSx5ZS5taWxsaXNlY29uZHM9JGUoeWUubWlsbGlzZWNvbmRzKSx5ZS5zZWNvbmRzPSRlKHllLnNlY29uZHMp'@; put 'LHllLm1pbnV0ZXM9JGUoeWUubWludXRlcykseWUuaG91cnM9JGUoeWUuaG91cnMpLHllLm1vbnRocz0kZSh5ZS5tb250aHMpLHllLnllYXJzPSRlKHllLnllYXJzKSx0aGlzfSxIcy5hZGQ9ZnVuY3Rpb24gRW4oeWUsVWUpe3JldHVybiBRdCh0aGlzLHllLFVlLDEpfSxIcy5zdWJ0cmFjdD1m'@; put 'dW5jdGlvbiBjcih5ZSxVZSl7cmV0dXJuIFF0KHRoaXMseWUsVWUsLTEpfSxIcy5hcz1mdW5jdGlvbiB4byh5ZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBOYU47dmFyIFVlLGN0LGl0PXRoaXMuX21pbGxpc2Vjb25kcztpZigibW9udGgiPT09KHllPUplKHllKSl8fCJxdWFydGVyIj09'@; put 'PXllfHwieWVhciI9PT15ZSlzd2l0Y2goVWU9dGhpcy5fZGF5cytpdC84NjRlNSxjdD10aGlzLl9tb250aHMrRHIoVWUpLHllKXtjYXNlIm1vbnRoIjpyZXR1cm4gY3Q7Y2FzZSJxdWFydGVyIjpyZXR1cm4gY3QvMztjYXNlInllYXIiOnJldHVybiBjdC8xMn1lbHNlIHN3aXRjaChVZT10aGlz'@; put 'Ll9kYXlzK01hdGgucm91bmQoSmkodGhpcy5fbW9udGhzKSkseWUpe2Nhc2Uid2VlayI6cmV0dXJuIFVlLzcraXQvNjA0OGU1O2Nhc2UiZGF5IjpyZXR1cm4gVWUraXQvODY0ZTU7Y2FzZSJob3VyIjpyZXR1cm4gMjQqVWUraXQvMzZlNTtjYXNlIm1pbnV0ZSI6cmV0dXJuIDE0NDAqVWUraXQv'@; put 'NmU0O2Nhc2Uic2Vjb25kIjpyZXR1cm4gODY0MDAqVWUraXQvMWUzO2Nhc2UibWlsbGlzZWNvbmQiOnJldHVybiBNYXRoLmZsb29yKDg2NGU1KlVlKStpdDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIreWUpfX0sSHMuYXNNaWxsaXNlY29uZHM9ZHMsSHMuYXNTZWNv'@; put 'bmRzPVBzLEhzLmFzTWludXRlcz1hYSxIcy5hc0hvdXJzPUlvLEhzLmFzRGF5cz1aaSxIcy5hc1dlZWtzPWdsLEhzLmFzTW9udGhzPWpsLEhzLmFzUXVhcnRlcnM9VjEsSHMuYXNZZWFycz1wYyxIcy52YWx1ZU9mPVVkLEhzLl9idWJibGU9ZnVuY3Rpb24gcGkoKXt2YXIgRnQsWWUsWGUseWks'@; put 'V2EseWU9dGhpcy5fbWlsbGlzZWNvbmRzLFVlPXRoaXMuX2RheXMsY3Q9dGhpcy5fbW9udGhzLGl0PXRoaXMuX2RhdGE7cmV0dXJuIHllPj0wJiZVZT49MCYmY3Q+PTB8fHllPD0wJiZVZTw9MCYmY3Q8PTB8fCh5ZSs9ODY0ZTUqVXIoSmkoY3QpK1VlKSxVZT0wLGN0PTApLGl0Lm1pbGxpc2Vj'@; put 'b25kcz15ZSUxZTMsRnQ9R2UoeWUvMWUzKSxpdC5zZWNvbmRzPUZ0JTYwLFllPUdlKEZ0LzYwKSxpdC5taW51dGVzPVllJTYwLFhlPUdlKFllLzYwKSxpdC5ob3Vycz1YZSUyNCxVZSs9R2UoWGUvMjQpLGN0Kz1XYT1HZShEcihVZSkpLFVlLT1VcihKaShXYSkpLHlpPUdlKGN0LzEyKSxjdCU9'@; put 'MTIsaXQuZGF5cz1VZSxpdC5tb250aHM9Y3QsaXQueWVhcnM9eWksdGhpc30sSHMuY2xvbmU9ZnVuY3Rpb24gbDEoKXtyZXR1cm4gQ3ModGhpcyl9LEhzLmdldD1mdW5jdGlvbiBvZCh5ZSl7cmV0dXJuIHllPUplKHllKSx0aGlzLmlzVmFsaWQoKT90aGlzW3llKyJzIl0oKTpOYU59LEhzLm1p'@; put 'bGxpc2Vjb25kcz1oMCxIcy5zZWNvbmRzPVMyLEhzLm1pbnV0ZXM9XzMsSHMuaG91cnM9TWYsSHMuZGF5cz1paCxIcy53ZWVrcz1mdW5jdGlvbiBTOSgpe3JldHVybiBHZSh0aGlzLmRheXMoKS83KX0sSHMubW9udGhzPWtnLEhzLnllYXJzPVp1LEhzLmh1bWFuaXplPWZ1bmN0aW9uIHA4KHll'@; put 'LFVlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIEZ0LFllLGN0PSExLGl0PUloO3JldHVybiJvYmplY3QiPT10eXBlb2YgeWUmJihVZT15ZSx5ZT0hMSksImJvb2xlYW4iPT10eXBlb2YgeWUmJihjdD15ZSksIm9iamVjdCI9'@; put 'PXR5cGVvZiBVZSYmKGl0PU9iamVjdC5hc3NpZ24oe30sSWgsVWUpLG51bGwhPVVlLnMmJm51bGw9PVVlLnNzJiYoaXQuc3M9VWUucy0xKSksWWU9ZnVuY3Rpb24gZjgoeWUsVWUsY3QsaXQpe3ZhciBGdD1Dcyh5ZSkuYWJzKCksWWU9cGEoRnQuYXMoInMiKSksWGU9cGEoRnQuYXMoIm0iKSks'@; put 'eWk9cGEoRnQuYXMoImgiKSksV2E9cGEoRnQuYXMoImQiKSksU3M9cGEoRnQuYXMoIk0iKSksV3M9cGEoRnQuYXMoInciKSksYzE9cGEoRnQuYXMoInkiKSksRGg9WWU8PWN0LnNzJiZbInMiLFllXXx8WWU8Y3QucyYmWyJzcyIsWWVdfHxYZTw9MSYmWyJtIl18fFhlPGN0Lm0mJlsibW0iLFhl'@; put 'XXx8eWk8PTEmJlsiaCJdfHx5aTxjdC5oJiZbImhoIix5aV18fFdhPD0xJiZbImQiXXx8V2E8Y3QuZCYmWyJkZCIsV2FdO3JldHVybiBudWxsIT1jdC53JiYoRGg9RGh8fFdzPD0xJiZbInciXXx8V3M8Y3QudyYmWyJ3dyIsV3NdKSwoRGg9RGh8fFNzPD0xJiZbIk0iXXx8U3M8Y3QuTSYmWyJN'@; put 'TSIsU3NdfHxjMTw9MSYmWyJ5Il18fFsieXkiLGMxXSlbMl09VWUsRGhbM109K3llPjAsRGhbNF09aXQsUmcuYXBwbHkobnVsbCxEaCl9KHRoaXMsIWN0LGl0LEZ0PXRoaXMubG9jYWxlRGF0YSgpKSxjdCYmKFllPUZ0LnBhc3RGdXR1cmUoK3RoaXMsWWUpKSxGdC5wb3N0Zm9ybWF0KFllKX0s'@; put 'SHMudG9JU09TdHJpbmc9ZjAsSHMudG9TdHJpbmc9ZjAsSHMudG9KU09OPWYwLEhzLmxvY2FsZT11YSxIcy5sb2NhbGVEYXRhPUx1LEhzLnRvSXNvU3RyaW5nPWtlKCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2Ug'@; put 'dGhlIGNhcGl0YWxzKSIsZjApLEhzLmxhbmc9dmYsX2UoIlgiLDAsMCwidW5peCIpLF9lKCJ4IiwwLDAsInZhbHVlT2YiKSxObigieCIsdXIpLE5uKCJYIiwvWystXT9cZCsoXC5cZHsxLDN9KT8vKSx4dCgiWCIsZnVuY3Rpb24oeWUsVWUsY3Qpe2N0Ll9kPW5ldyBEYXRlKDFlMypwYXJzZUZs'@; put 'b2F0KHllKSl9KSx4dCgieCIsZnVuY3Rpb24oeWUsVWUsY3Qpe2N0Ll9kPW5ldyBEYXRlKFV0KHllKSl9KSxjLnZlcnNpb249IjIuMzAuMSIsZnVuY3Rpb24gcyh5ZSl7eT15ZX0oUm8pLGMuZm49VWksYy5taW49ZnVuY3Rpb24gc24oKXtyZXR1cm4gY28oImlzQmVmb3JlIixbXS5zbGljZS5j'@; put 'YWxsKGFyZ3VtZW50cywwKSl9LGMubWF4PWZ1bmN0aW9uIGlvKCl7cmV0dXJuIGNvKCJpc0FmdGVyIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LGMubm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93P0RhdGUubm93KCk6K25ldyBEYXRlfSxjLnV0Yz1ILGMudW5peD1mdW5jdGlv'@; put 'biBtcCh5ZSl7cmV0dXJuIFJvKDFlMyp5ZSl9LGMubW9udGhzPWZ1bmN0aW9uIGg4KHllLFVlKXtyZXR1cm4gaWQoeWUsVWUsIm1vbnRocyIpfSxjLmlzRGF0ZT1SLGMubG9jYWxlPUl1LGMuaW52YWxpZD1GLGMuZHVyYXRpb249Q3MsYy5pc01vbWVudD1DZSxjLndlZWtkYXlzPWZ1bmN0aW9u'@; put 'IGxlKHllLFVlLGN0KXtyZXR1cm4gZDAoeWUsVWUsY3QsIndlZWtkYXlzIil9LGMucGFyc2Vab25lPWZ1bmN0aW9uIGE1KCl7cmV0dXJuIFJvLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYXJzZVpvbmUoKX0sYy5sb2NhbGVEYXRhPXJoLGMuaXNEdXJhdGlvbj1EdSxjLm1vbnRoc1Nob3J0PWZ1'@; put 'bmN0aW9uIHBlKHllLFVlKXtyZXR1cm4gaWQoeWUsVWUsIm1vbnRoc1Nob3J0Iil9LGMud2Vla2RheXNNaW49ZnVuY3Rpb24gT2UoeWUsVWUsY3Qpe3JldHVybiBkMCh5ZSxVZSxjdCwid2Vla2RheXNNaW4iKX0sYy5kZWZpbmVMb2NhbGU9TWMsYy51cGRhdGVMb2NhbGU9ZnVuY3Rpb24gSWko'@; put 'eWUsVWUpe2lmKG51bGwhPVVlKXt2YXIgY3QsaXQsRnQ9dHU7bnVsbCE9Z3NbeWVdJiZudWxsIT1nc1t5ZV0ucGFyZW50TG9jYWxlP2dzW3llXS5zZXQoayhnc1t5ZV0uX2NvbmZpZyxVZSkpOihudWxsIT0oaXQ9RnIoeWUpKSYmKEZ0PWl0Ll9jb25maWcpLFVlPWsoRnQsVWUpLG51bGw9PWl0'@; put 'JiYoVWUuYWJicj15ZSksKGN0PW5ldyBNKFVlKSkucGFyZW50TG9jYWxlPWdzW3llXSxnc1t5ZV09Y3QpLEl1KHllKX1lbHNlIG51bGwhPWdzW3llXSYmKG51bGwhPWdzW3llXS5wYXJlbnRMb2NhbGU/KGdzW3llXT1nc1t5ZV0ucGFyZW50TG9jYWxlLHllPT09SXUoKSYmSXUoeWUpKTpudWxs'@; put 'IT1nc1t5ZV0mJmRlbGV0ZSBnc1t5ZV0pO3JldHVybiBnc1t5ZV19LGMubG9jYWxlcz1mdW5jdGlvbiBuNSgpe3JldHVybiBCKGdzKX0sYy53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uIGJlKHllLFVlLGN0KXtyZXR1cm4gZDAoeWUsVWUsY3QsIndlZWtkYXlzU2hvcnQiKX0sYy5ub3JtYWxpemVV'@; put 'bml0cz1KZSxjLnJlbGF0aXZlVGltZVJvdW5kaW5nPWZ1bmN0aW9uIEU5KHllKXtyZXR1cm4gdm9pZCAwPT09eWU/cGE6ImZ1bmN0aW9uIj09dHlwZW9mIHllJiYocGE9eWUsITApfSxjLnJlbGF0aXZlVGltZVRocmVzaG9sZD1mdW5jdGlvbiBQMCh5ZSxVZSl7cmV0dXJuIHZvaWQgMCE9PUlo'@; put 'W3llXSYmKHZvaWQgMD09PVVlP0loW3llXTooSWhbeWVdPVVlLCJzIj09PXllJiYoSWguc3M9VWUtMSksITApKX0sYy5jYWxlbmRhckZvcm1hdD1mdW5jdGlvbiBjMCh5ZSxVZSl7dmFyIGN0PXllLmRpZmYoVWUsImRheXMiLCEwKTtyZXR1cm4gY3Q8LTY/InNhbWVFbHNlIjpjdDwtMT8ibGFz'@; put 'dFdlZWsiOmN0PDA/Imxhc3REYXkiOmN0PDE/InNhbWVEYXkiOmN0PDI/Im5leHREYXkiOmN0PDc/Im5leHRXZWVrIjoic2FtZUVsc2UifSxjLnByb3RvdHlwZT1VaSxjLkhUTUw1X0ZNVD17REFURVRJTUVfTE9DQUw6IllZWVktTU0tRERUSEg6bW0iLERBVEVUSU1FX0xPQ0FMX1NFQ09ORFM6'@; put 'IllZWVktTU0tRERUSEg6bW06c3MiLERBVEVUSU1FX0xPQ0FMX01TOiJZWVlZLU1NLUREVEhIOm1tOnNzLlNTUyIsREFURToiWVlZWS1NTS1ERCIsVElNRToiSEg6bW0iLFRJTUVfU0VDT05EUzoiSEg6bW06c3MiLFRJTUVfTVM6IkhIOm1tOnNzLlNTUyIsV0VFSzoiR0dHRy1bV11XVyIsTU9O'@; put 'VEg6IllZWVktTU0ifSxjfSgpfSw1MDE5KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1bIkZsb2F0MTZBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFy'@; put 'cmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIkJpZ0ludDY0QXJyYXkiLCJCaWdVaW50NjRBcnJheSJdfSw5NjU2KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz10eXBlb2YgcHJvY2Vzcz4idSJ8fCFwcm9jZXNzLnZlcnNpb258fDA9PT1wcm9jZXNzLnZlcnNpb24uaW5kZXhP'@; put 'ZigidjAuIil8fDA9PT1wcm9jZXNzLnZlcnNpb24uaW5kZXhPZigidjEuIikmJjAhPT1wcm9jZXNzLnZlcnNpb24uaW5kZXhPZigidjEuOC4iKT97bmV4dFRpY2s6ZnVuY3Rpb24gaihoLHksYyxzKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCciY2FsbGJh'@; put 'Y2siIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3ZhciB2LEMsQT1hcmd1bWVudHMubGVuZ3RoO3N3aXRjaChBKXtjYXNlIDA6Y2FzZSAxOnJldHVybiBwcm9jZXNzLm5leHRUaWNrKGgpO2Nhc2UgMjpyZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe2guY2FsbChudWxs'@; put 'LHkpfSk7Y2FzZSAzOnJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7aC5jYWxsKG51bGwseSxjKX0pO2Nhc2UgNDpyZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe2guY2FsbChudWxsLHksYyxzKX0pO2RlZmF1bHQ6Zm9yKHY9bmV3IEFycmF5KEEtMSksQz0wO0M8'@; put 'di5sZW5ndGg7KXZbQysrXT1hcmd1bWVudHNbQ107cmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKXtoLmFwcGx5KG51bGwsdil9KX19fTpwcm9jZXNzfSwzMzQyKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PTY1NTM2LEE9aCgyNzA1NCkuQnVmZmVyLHY9Z2xvYmFsLmNyeXB0'@; put 'b3x8Z2xvYmFsLm1zQ3J5cHRvO2ZlLmV4cG9ydHM9diYmdi5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24gQyh3LFMpe2lmKHc+NDI5NDk2NzI5NSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBMPUEuYWxsb2NVbnNhZmUodyk7aWYo'@; put 'dz4wKWlmKHc+eSlmb3IodmFyIFI9MDtSPHc7Uis9eSl2LmdldFJhbmRvbVZhbHVlcyhMLnNsaWNlKFIsUit5KSk7ZWxzZSB2LmdldFJhbmRvbVZhbHVlcyhMKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUz9wcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7UyhudWxsLEwpfSk6TH06ZnVu'@; put 'Y3Rpb24gcygpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19LDI2MTEzKGZlKXsidXNlIHN0cmljdCI7'@; put 'dmFyIGg9e307ZnVuY3Rpb24geShDLHcsUyl7U3x8KFM9RXJyb3IpO3ZhciBSPWZ1bmN0aW9uKHgpe2Z1bmN0aW9uIFUoSCxWLE4pe3JldHVybiB4LmNhbGwodGhpcyxmdW5jdGlvbiBMKHgsVSxIKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHc/dzp3KHgsVSxIKX0oSCxWLE4pKXx8dGhpc31y'@; put 'ZXR1cm4gZnVuY3Rpb24gaihDLHcpe0MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUody5wcm90b3R5cGUpLEMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUMsQy5fX3Byb3RvX189d30oVSx4KSxVfShTKTtSLnByb3RvdHlwZS5uYW1lPVMubmFtZSxSLnByb3RvdHlwZS5jb2RlPUMsaFtDXT1SfWZ1'@; put 'bmN0aW9uIGMoQyx3KXtpZihBcnJheS5pc0FycmF5KEMpKXt2YXIgUz1DLmxlbmd0aDtyZXR1cm4gQz1DLm1hcChmdW5jdGlvbihMKXtyZXR1cm4gU3RyaW5nKEwpfSksUz4yPyJvbmUgb2YgIi5jb25jYXQodywiICIpLmNvbmNhdChDLnNsaWNlKDAsUy0xKS5qb2luKCIsICIpLCIsIG9yICIp'@; put 'K0NbUy0xXToyPT09Uz8ib25lIG9mICIuY29uY2F0KHcsIiAiKS5jb25jYXQoQ1swXSwiIG9yICIpLmNvbmNhdChDWzFdKToib2YgIi5jb25jYXQodywiICIpLmNvbmNhdChDWzBdKX1yZXR1cm4ib2YgIi5jb25jYXQodywiICIpLmNvbmNhdChTdHJpbmcoQykpfXkoIkVSUl9JTlZBTElEX09Q'@; put 'VF9WQUxVRSIsZnVuY3Rpb24oQyx3KXtyZXR1cm4nVGhlIHZhbHVlICInK3crJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICInK0MrJyInfSxUeXBlRXJyb3IpLHkoIkVSUl9JTlZBTElEX0FSR19UWVBFIixmdW5jdGlvbihDLHcsUyl7dmFyIEwsUjtpZigic3RyaW5nIj09dHlwZW9mIHcmJmZ1'@; put 'bmN0aW9uIHMoQyx3LFMpe3JldHVybiBDLnN1YnN0cighU3x8UzwwPzA6K1Msdy5sZW5ndGgpPT09d30odywibm90ICIpPyhMPSJtdXN0IG5vdCBiZSIsdz13LnJlcGxhY2UoL15ub3QgLywiIikpOkw9Im11c3QgYmUiLGZ1bmN0aW9uIEEoQyx3LFMpe3JldHVybih2b2lkIDA9PT1TfHxTPkMu'@; put 'bGVuZ3RoKSYmKFM9Qy5sZW5ndGgpLEMuc3Vic3RyaW5nKFMtdy5sZW5ndGgsUyk9PT13fShDLCIgYXJndW1lbnQiKSlSPSJUaGUgIi5jb25jYXQoQywiICIpLmNvbmNhdChMLCIgIikuY29uY2F0KGModywidHlwZSIpKTtlbHNle3ZhciB4PWZ1bmN0aW9uIHYoQyx3LFMpe3JldHVybiJudW1i'@; put 'ZXIiIT10eXBlb2YgUyYmKFM9MCksIShTK3cubGVuZ3RoPkMubGVuZ3RoKSYmLTEhPT1DLmluZGV4T2YodyxTKX0oQywiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtSPSdUaGUgIicuY29uY2F0KEMsJyIgJykuY29uY2F0KHgsIiAiKS5jb25jYXQoTCwiICIpLmNvbmNhdChjKHcsInR5cGUi'@; put 'KSl9cmV0dXJuIFIrIi4gUmVjZWl2ZWQgdHlwZSAiLmNvbmNhdCh0eXBlb2YgUyl9LFR5cGVFcnJvcikseSgiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIikseSgiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQiLGZ1bmN0aW9uKEMpe3JldHVy'@; put 'biJUaGUgIitDKyIgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCJ9KSx5KCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIsIlByZW1hdHVyZSBjbG9zZSIpLHkoIkVSUl9TVFJFQU1fREVTVFJPWUVEIixmdW5jdGlvbihDKXtyZXR1cm4iQ2Fubm90IGNhbGwgIitDKyIgYWZ0ZXIgYSBzdHJl'@; put 'YW0gd2FzIGRlc3Ryb3llZCJ9KSx5KCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0siLCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMiKSx5KCJFUlJfU1RSRUFNX0NBTk5PVF9QSVBFIiwiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZSIpLHkoIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5E'@; put 'Iiwid3JpdGUgYWZ0ZXIgZW5kIikseSgiRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyIsIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtIixUeXBlRXJyb3IpLHkoIkVSUl9VTktOT1dOX0VOQ09ESU5HIixmdW5jdGlvbihDKXtyZXR1cm4iVW5rbm93biBlbmNvZGluZzogIitDfSxU'@; put 'eXBlRXJyb3IpLHkoIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQiLCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpLGZlLmV4cG9ydHMuRj1ofSw3NDA3NShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oUil7dmFyIHg9'@; put 'W107Zm9yKHZhciBVIGluIFIpeC5wdXNoKFUpO3JldHVybiB4fTtmZS5leHBvcnRzPXc7dmFyIGM9aCgxOTYwOSkscz1oKDQ3ODQ5KTtoKDcxOTkzKSh3LGMpO2Zvcih2YXIgQT15KHMucHJvdG90eXBlKSx2PTA7djxBLmxlbmd0aDt2Kyspe3ZhciBDPUFbdl07dy5wcm90b3R5cGVbQ118fCh3'@; put 'LnByb3RvdHlwZVtDXT1zLnByb3RvdHlwZVtDXSl9ZnVuY3Rpb24gdyhSKXtpZighKHRoaXMgaW5zdGFuY2VvZiB3KSlyZXR1cm4gbmV3IHcoUik7Yy5jYWxsKHRoaXMsUikscy5jYWxsKHRoaXMsUiksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLFImJighMT09PVIucmVhZGFibGUmJih0aGlzLnJl'@; put 'YWRhYmxlPSExKSwhMT09PVIud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PVIuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoImVuZCIsUykpKX1mdW5jdGlvbiBTKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8cHJvY2Vzcy5uZXh0'@; put 'VGljayhMLHRoaXMpfWZ1bmN0aW9uIEwoUil7Ui5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkody5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319'@; put 'KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVy'@; put 'dHkody5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpm'@; put 'dW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbih4KXt2b2lkIDA9PT10'@; put 'aGlzLl9yZWFkYWJsZVN0YXRlfHx2b2lkIDA9PT10aGlzLl93cml0YWJsZVN0YXRlfHwodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9eCx0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD14KX19KX0sMTg4MjMoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1jO3ZhciB5'@; put 'PWgoMjkwOSk7ZnVuY3Rpb24gYyhzKXtpZighKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGMocyk7eS5jYWxsKHRoaXMscyl9aCg3MTk5MykoYyx5KSxjLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHMsQSx2KXt2KG51bGwscyl9fSwxOTYwOShmZSxqLGgpeyJ1c2Ugc3Ry'@; put 'aWN0Ijt2YXIgeTtmZS5leHBvcnRzPVgsWC5SZWFkYWJsZVN0YXRlPXFlLGgoNDQzNTYpO3ZhciBSLHM9ZnVuY3Rpb24oRGUsRmUpe3JldHVybiBEZS5saXN0ZW5lcnMoRmUpLmxlbmd0aH0sQT1oKDE4MzQyKSx2PWgoODM4MzgpLkJ1ZmZlcixDPSh0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6'@; put 'dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnt9KS5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sTD1oKDc5ODM4KTtSPUwmJkwuZGVidWdsb2c/TC5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBxLHJlLG1lLHg9aCgxOTU4OCksVT1oKDIx'@; put 'NTA5KSxWPWgoNDI5MzQpLmdldEhpZ2hXYXRlck1hcmssTj1oKDI2MTEzKS5GLHo9Ti5FUlJfSU5WQUxJRF9BUkdfVFlQRSxZPU4uRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixGPU4uRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsVz1OLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRf'@; put 'RVZFTlQ7aCg3MTk5MykoWCxBKTt2YXIgQ2U9VS5lcnJvck9yRGVzdHJveSxJZT1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiBxZShBZSxEZSxGZSl7eT15fHxoKDc0MDc1KSwiYm9vbGVhbiIhPXR5cGVvZiBGZSYmKEZlPURlIGluc3RhbmNl'@; put 'b2YgeSksdGhpcy5vYmplY3RNb2RlPSEhKEFlPUFlfHx7fSkub2JqZWN0TW9kZSxGZSYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhQWUucmVhZGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9Vih0aGlzLEFlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLEZl'@; put 'KSx0aGlzLmJ1ZmZlcj1uZXcgeCx0aGlzLmxlbmd0aD0wLHRoaXMucGlwZXM9bnVsbCx0aGlzLnBpcGVzQ291bnQ9MCx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5zeW5jPSEwLHRoaXMubmVlZFJlYWRhYmxl'@; put 'PSExLHRoaXMuZW1pdHRlZFJlYWRhYmxlPSExLHRoaXMucmVhZGFibGVMaXN0ZW5pbmc9ITEsdGhpcy5yZXN1bWVTY2hlZHVsZWQ9ITEsdGhpcy5wYXVzZWQ9ITAsdGhpcy5lbWl0Q2xvc2U9ITEhPT1BZS5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIUFlLmF1dG9EZXN0cm95LHRoaXMu'@; put 'ZGVzdHJveWVkPSExLHRoaXMuZGVmYXVsdEVuY29kaW5nPUFlLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLEFlLmVuY29kaW5nJiYocXx8KHE9aCg3ODQ1NCku'@; put 'SSksdGhpcy5kZWNvZGVyPW5ldyBxKEFlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPUFlLmVuY29kaW5nKX1mdW5jdGlvbiBYKEFlKXtpZih5PXl8fGgoNzQwNzUpLCEodGhpcyBpbnN0YW5jZW9mIFgpKXJldHVybiBuZXcgWChBZSk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgcWUoQWUsdGhp'@; put 'cyx0aGlzIGluc3RhbmNlb2YgeSksdGhpcy5yZWFkYWJsZT0hMCxBZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBBZS5yZWFkJiYodGhpcy5fcmVhZD1BZS5yZWFkKSwiZnVuY3Rpb24iPT10eXBlb2YgQWUuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9QWUuZGVzdHJveSkpLEEuY2FsbCh0aGlzKX1m'@; put 'dW5jdGlvbiBmKEFlLERlLEZlLGdlLGNlKXtSKCJyZWFkYWJsZUFkZENodW5rIixEZSk7dmFyIHdlLGhlPUFlLl9yZWFkYWJsZVN0YXRlO2lmKG51bGw9PT1EZSloZS5yZWFkaW5nPSExLGZ1bmN0aW9uIEcoQWUsRGUpe2lmKFIoIm9uRW9mQ2h1bmsiKSwhRGUuZW5kZWQpe2lmKERlLmRlY29k'@; put 'ZXIpe3ZhciBGZT1EZS5kZWNvZGVyLmVuZCgpO0ZlJiZGZS5sZW5ndGgmJihEZS5idWZmZXIucHVzaChGZSksRGUubGVuZ3RoKz1EZS5vYmplY3RNb2RlPzE6RmUubGVuZ3RoKX1EZS5lbmRlZD0hMCxEZS5zeW5jP0QoQWUpOihEZS5uZWVkUmVhZGFibGU9ITEsRGUuZW1pdHRlZFJlYWRhYmxl'@; put 'fHwoRGUuZW1pdHRlZFJlYWRhYmxlPSEwLHAoQWUpKSl9fShBZSxoZSk7ZWxzZSBpZihjZXx8KHdlPWZ1bmN0aW9uIGsoQWUsRGUpe3ZhciBGZTtyZXR1cm4hZnVuY3Rpb24gUyhBZSl7cmV0dXJuIHYuaXNCdWZmZXIoQWUpfHxBZSBpbnN0YW5jZW9mIEN9KERlKSYmInN0cmluZyIhPXR5cGVv'@; put 'ZiBEZSYmdm9pZCAwIT09RGUmJiFBZS5vYmplY3RNb2RlJiYoRmU9bmV3IHooImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciIsIlVpbnQ4QXJyYXkiXSxEZSkpLEZlfShoZSxEZSkpLHdlKUNlKEFlLHdlKTtlbHNlIGlmKGhlLm9iamVjdE1vZGV8fERlJiZEZS5sZW5ndGg+MClpZigic3RyaW5n'@; put 'IiE9dHlwZW9mIERlJiYhaGUub2JqZWN0TW9kZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKERlKSE9PXYucHJvdG90eXBlJiYoRGU9ZnVuY3Rpb24gdyhBZSl7cmV0dXJuIHYuZnJvbShBZSl9KERlKSksZ2UpaGUuZW5kRW1pdHRlZD9DZShBZSxuZXcgVyk6YihBZSxoZSxEZSwhMCk7ZWxzZSBp'@; put 'ZihoZS5lbmRlZClDZShBZSxuZXcgWSk7ZWxzZXtpZihoZS5kZXN0cm95ZWQpcmV0dXJuITE7aGUucmVhZGluZz0hMSxoZS5kZWNvZGVyJiYhRmU/KERlPWhlLmRlY29kZXIud3JpdGUoRGUpLGhlLm9iamVjdE1vZGV8fDAhPT1EZS5sZW5ndGg/YihBZSxoZSxEZSwhMSk6SShBZSxoZSkpOmIo'@; put 'QWUsaGUsRGUsITEpfWVsc2UgZ2V8fChoZS5yZWFkaW5nPSExLEkoQWUsaGUpKTtyZXR1cm4haGUuZW5kZWQmJihoZS5sZW5ndGg8aGUuaGlnaFdhdGVyTWFya3x8MD09PWhlLmxlbmd0aCl9ZnVuY3Rpb24gYihBZSxEZSxGZSxnZSl7RGUuZmxvd2luZyYmMD09PURlLmxlbmd0aCYmIURlLnN5'@; put 'bmM/KERlLmF3YWl0RHJhaW49MCxBZS5lbWl0KCJkYXRhIixGZSkpOihEZS5sZW5ndGgrPURlLm9iamVjdE1vZGU/MTpGZS5sZW5ndGgsZ2U/RGUuYnVmZmVyLnVuc2hpZnQoRmUpOkRlLmJ1ZmZlci5wdXNoKEZlKSxEZS5uZWVkUmVhZGFibGUmJkQoQWUpKSxJKEFlLERlKX1PYmplY3QuZGVm'@; put 'aW5lUHJvcGVydHkoWC5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oRGUpe3RoaXMuX3JlYWRhYmxl'@; put 'U3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1EZSl9fSksWC5wcm90b3R5cGUuZGVzdHJveT1VLmRlc3Ryb3ksWC5wcm90b3R5cGUuX3VuZGVzdHJveT1VLnVuZGVzdHJveSxYLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihBZSxEZSl7RGUoQWUpfSxYLnByb3RvdHlw'@; put 'ZS5wdXNoPWZ1bmN0aW9uKEFlLERlKXt2YXIgZ2UsRmU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gRmUub2JqZWN0TW9kZT9nZT0hMDoic3RyaW5nIj09dHlwZW9mIEFlJiYoKERlPURlfHxGZS5kZWZhdWx0RW5jb2RpbmcpIT09RmUuZW5jb2RpbmcmJihBZT12LmZyb20oQWUsRGUpLERl'@; put 'PSIiKSxnZT0hMCksZih0aGlzLEFlLERlLCExLGdlKX0sWC5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihBZSl7cmV0dXJuIGYodGhpcyxBZSxudWxsLCEwLCExKX0sWC5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2lu'@; put 'Z30sWC5wcm90b3R5cGUuc2V0RW5jb2Rpbmc9ZnVuY3Rpb24oQWUpe3F8fChxPWgoNzg0NTQpLkkpO3ZhciBEZT1uZXcgcShBZSk7dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPURlLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyLmVu'@; put 'Y29kaW5nO2Zvcih2YXIgRmU9dGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuaGVhZCxnZT0iIjtudWxsIT09RmU7KWdlKz1EZS53cml0ZShGZS5kYXRhKSxGZT1GZS5uZXh0O3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5jbGVhcigpLCIiIT09Z2UmJnRoaXMuX3JlYWRhYmxl'@; put 'U3RhdGUuYnVmZmVyLnB1c2goZ2UpLHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoPWdlLmxlbmd0aCx0aGlzfTt2YXIgTT0xMDczNzQxODI0O2Z1bmN0aW9uIEsoQWUsRGUpe3JldHVybiBBZTw9MHx8MD09PURlLmxlbmd0aCYmRGUuZW5kZWQ/MDpEZS5vYmplY3RNb2RlPzE6QWUhPUFlP0Rl'@; put 'LmZsb3dpbmcmJkRlLmxlbmd0aD9EZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDpEZS5sZW5ndGg6KEFlPkRlLmhpZ2hXYXRlck1hcmsmJihEZS5oaWdoV2F0ZXJNYXJrPWZ1bmN0aW9uIEIoQWUpe3JldHVybiBBZT49TT9BZT1NOihBZS0tLEFlfD1BZT4+PjEsQWV8PUFlPj4+MixBZXw9QWU+'@; put 'Pj40LEFlfD1BZT4+PjgsQWV8PUFlPj4+MTYsQWUrKyksQWV9KEFlKSksQWU8PURlLmxlbmd0aD9BZTpEZS5lbmRlZD9EZS5sZW5ndGg6KERlLm5lZWRSZWFkYWJsZT0hMCwwKSl9ZnVuY3Rpb24gRChBZSl7dmFyIERlPUFlLl9yZWFkYWJsZVN0YXRlO1IoImVtaXRSZWFkYWJsZSIsRGUubmVl'@; put 'ZFJlYWRhYmxlLERlLmVtaXR0ZWRSZWFkYWJsZSksRGUubmVlZFJlYWRhYmxlPSExLERlLmVtaXR0ZWRSZWFkYWJsZXx8KFIoImVtaXRSZWFkYWJsZSIsRGUuZmxvd2luZyksRGUuZW1pdHRlZFJlYWRhYmxlPSEwLHByb2Nlc3MubmV4dFRpY2socCxBZSkpfWZ1bmN0aW9uIHAoQWUpe3ZhciBE'@; put 'ZT1BZS5fcmVhZGFibGVTdGF0ZTtSKCJlbWl0UmVhZGFibGVfIixEZS5kZXN0cm95ZWQsRGUubGVuZ3RoLERlLmVuZGVkKSwhRGUuZGVzdHJveWVkJiYoRGUubGVuZ3RofHxEZS5lbmRlZCkmJihBZS5lbWl0KCJyZWFkYWJsZSIpLERlLmVtaXR0ZWRSZWFkYWJsZT0hMSksRGUubmVlZFJlYWRh'@; put 'YmxlPSFEZS5mbG93aW5nJiYhRGUuZW5kZWQmJkRlLmxlbmd0aDw9RGUuaGlnaFdhdGVyTWFyayxkdChBZSl9ZnVuY3Rpb24gSShBZSxEZSl7RGUucmVhZGluZ01vcmV8fChEZS5yZWFkaW5nTW9yZT0hMCxwcm9jZXNzLm5leHRUaWNrKHVlLEFlLERlKSl9ZnVuY3Rpb24gdWUoQWUsRGUpe2Zv'@; put 'cig7IURlLnJlYWRpbmcmJiFEZS5lbmRlZCYmKERlLmxlbmd0aDxEZS5oaWdoV2F0ZXJNYXJrfHxEZS5mbG93aW5nJiYwPT09RGUubGVuZ3RoKTspe3ZhciBGZT1EZS5sZW5ndGg7aWYoUigibWF5YmVSZWFkTW9yZSByZWFkIDAiKSxBZS5yZWFkKDApLEZlPT09RGUubGVuZ3RoKWJyZWFrfURl'@; put 'LnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIF9lKEFlKXt2YXIgRGU9QWUuX3JlYWRhYmxlU3RhdGU7RGUucmVhZGFibGVMaXN0ZW5pbmc9QWUubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLERlLnJlc3VtZVNjaGVkdWxlZCYmIURlLnBhdXNlZD9EZS5mbG93aW5nPSEwOkFlLmxpc3RlbmVy'@; put 'Q291bnQoImRhdGEiKT4wJiZBZS5yZXN1bWUoKX1mdW5jdGlvbiBQZShBZSl7UigicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIiksQWUucmVhZCgwKX1mdW5jdGlvbiBsdChBZSxEZSl7UigicmVzdW1lIixEZS5yZWFkaW5nKSxEZS5yZWFkaW5nfHxBZS5yZWFkKDApLERlLnJlc3VtZVNjaGVk'@; put 'dWxlZD0hMSxBZS5lbWl0KCJyZXN1bWUiKSxkdChBZSksRGUuZmxvd2luZyYmIURlLnJlYWRpbmcmJkFlLnJlYWQoMCl9ZnVuY3Rpb24gZHQoQWUpe3ZhciBEZT1BZS5fcmVhZGFibGVTdGF0ZTtmb3IoUigiZmxvdyIsRGUuZmxvd2luZyk7RGUuZmxvd2luZyYmbnVsbCE9PUFlLnJlYWQoKTsp'@; put 'O31mdW5jdGlvbiBSZShBZSxEZSl7cmV0dXJuIDA9PT1EZS5sZW5ndGg/bnVsbDooRGUub2JqZWN0TW9kZT9GZT1EZS5idWZmZXIuc2hpZnQoKTohQWV8fEFlPj1EZS5sZW5ndGg/KEZlPURlLmRlY29kZXI/RGUuYnVmZmVyLmpvaW4oIiIpOjE9PT1EZS5idWZmZXIubGVuZ3RoP0RlLmJ1ZmZl'@; put 'ci5maXJzdCgpOkRlLmJ1ZmZlci5jb25jYXQoRGUubGVuZ3RoKSxEZS5idWZmZXIuY2xlYXIoKSk6RmU9RGUuYnVmZmVyLmNvbnN1bWUoQWUsRGUuZGVjb2RlciksRmUpO3ZhciBGZX1mdW5jdGlvbiBhZShBZSl7dmFyIERlPUFlLl9yZWFkYWJsZVN0YXRlO1IoImVuZFJlYWRhYmxlIixEZS5l'@; put 'bmRFbWl0dGVkKSxEZS5lbmRFbWl0dGVkfHwoRGUuZW5kZWQ9ITAscHJvY2Vzcy5uZXh0VGljayh4ZSxEZSxBZSkpfWZ1bmN0aW9uIHhlKEFlLERlKXtpZihSKCJlbmRSZWFkYWJsZU5UIixBZS5lbmRFbWl0dGVkLEFlLmxlbmd0aCksIUFlLmVuZEVtaXR0ZWQmJjA9PT1BZS5sZW5ndGgmJihB'@; put 'ZS5lbmRFbWl0dGVkPSEwLERlLnJlYWRhYmxlPSExLERlLmVtaXQoImVuZCIpLEFlLmF1dG9EZXN0cm95KSl7dmFyIEZlPURlLl93cml0YWJsZVN0YXRlOyghRmV8fEZlLmF1dG9EZXN0cm95JiZGZS5maW5pc2hlZCkmJkRlLmRlc3Ryb3koKX19ZnVuY3Rpb24gamUoQWUsRGUpe2Zvcih2YXIg'@; put 'RmU9MCxnZT1BZS5sZW5ndGg7RmU8Z2U7RmUrKylpZihBZVtGZV09PT1EZSlyZXR1cm4gRmU7cmV0dXJuLTF9WC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihBZSl7UigicmVhZCIsQWUpLEFlPXBhcnNlSW50KEFlLDEwKTt2YXIgRGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxGZT1BZTtpZigwIT09'@; put 'QWUmJihEZS5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT1BZSYmRGUubmVlZFJlYWRhYmxlJiYoKDAhPT1EZS5oaWdoV2F0ZXJNYXJrP0RlLmxlbmd0aD49RGUuaGlnaFdhdGVyTWFyazpEZS5sZW5ndGg+MCl8fERlLmVuZGVkKSlyZXR1cm4gUigicmVhZDogZW1pdFJlYWRhYmxlIixEZS5sZW5n'@; put 'dGgsRGUuZW5kZWQpLDA9PT1EZS5sZW5ndGgmJkRlLmVuZGVkP2FlKHRoaXMpOkQodGhpcyksbnVsbDtpZigwPT09KEFlPUsoQWUsRGUpKSYmRGUuZW5kZWQpcmV0dXJuIDA9PT1EZS5sZW5ndGgmJmFlKHRoaXMpLG51bGw7dmFyIGNlLGdlPURlLm5lZWRSZWFkYWJsZTtyZXR1cm4gUigibmVl'@; put 'ZCByZWFkYWJsZSIsZ2UpLCgwPT09RGUubGVuZ3RofHxEZS5sZW5ndGgtQWU8RGUuaGlnaFdhdGVyTWFyaykmJlIoImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrIixnZT0hMCksRGUuZW5kZWR8fERlLnJlYWRpbmc/UigicmVhZGluZyBvciBlbmRlZCIsZ2U9ITEpOmdlJiYoUigiZG8gcmVh'@; put 'ZCIpLERlLnJlYWRpbmc9ITAsRGUuc3luYz0hMCwwPT09RGUubGVuZ3RoJiYoRGUubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKERlLmhpZ2hXYXRlck1hcmspLERlLnN5bmM9ITEsRGUucmVhZGluZ3x8KEFlPUsoRmUsRGUpKSksbnVsbD09PShjZT1BZT4wP1JlKEFlLERlKTpudWxsKT8o'@; put 'RGUubmVlZFJlYWRhYmxlPURlLmxlbmd0aDw9RGUuaGlnaFdhdGVyTWFyayxBZT0wKTooRGUubGVuZ3RoLT1BZSxEZS5hd2FpdERyYWluPTApLDA9PT1EZS5sZW5ndGgmJihEZS5lbmRlZHx8KERlLm5lZWRSZWFkYWJsZT0hMCksRmUhPT1BZSYmRGUuZW5kZWQmJmFlKHRoaXMpKSxudWxsIT09'@; put 'Y2UmJnRoaXMuZW1pdCgiZGF0YSIsY2UpLGNlfSxYLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihBZSl7Q2UodGhpcyxuZXcgRigiX3JlYWQoKSIpKX0sWC5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihBZSxEZSl7dmFyIEZlPXRoaXMsZ2U9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2goZ2Uu'@; put 'cGlwZXNDb3VudCl7Y2FzZSAwOmdlLnBpcGVzPUFlO2JyZWFrO2Nhc2UgMTpnZS5waXBlcz1bZ2UucGlwZXMsQWVdO2JyZWFrO2RlZmF1bHQ6Z2UucGlwZXMucHVzaChBZSl9Z2UucGlwZXNDb3VudCs9MSxSKCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLGdlLnBpcGVzQ291bnQsRGUpO3ZhciBo'@; put 'ZT1EZSYmITE9PT1EZS5lbmR8fEFlPT09cHJvY2Vzcy5zdGRvdXR8fEFlPT09cHJvY2Vzcy5zdGRlcnI/WHQ6SmU7ZnVuY3Rpb24gSmUoKXtSKCJvbmVuZCIpLEFlLmVuZCgpfWdlLmVuZEVtaXR0ZWQ/cHJvY2Vzcy5uZXh0VGljayhoZSk6RmUub25jZSgiZW5kIixoZSksQWUub24oInVucGlw'@; put 'ZSIsZnVuY3Rpb24gd2UoTHIsbG4pe1IoIm9udW5waXBlIiksTHI9PT1GZSYmbG4mJiExPT09bG4uaGFzVW5waXBlZCYmKGxuLmhhc1VucGlwZWQ9ITAsZnVuY3Rpb24gJHQoKXtSKCJjbGVhbnVwIiksQWUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixHdCksQWUucmVtb3ZlTGlzdGVuZXIoImZp'@; put 'bmlzaCIsZ3QpLEFlLnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsdHQpLEFlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsTHQpLEFlLnJlbW92ZUxpc3RlbmVyKCJ1bnBpcGUiLHdlKSxGZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixKZSksRmUucmVtb3ZlTGlzdGVuZXIoImVuZCIsWHQpLEZlLnJlbW92'@; put 'ZUxpc3RlbmVyKCJkYXRhIixSdCksS2U9ITAsZ2UuYXdhaXREcmFpbiYmKCFBZS5fd3JpdGFibGVTdGF0ZXx8QWUuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSYmdHQoKX0oKSl9KTt2YXIgdHQ9ZnVuY3Rpb24gbmUoQWUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBGZT1BZS5fcmVhZGFibGVT'@; put 'dGF0ZTtSKCJwaXBlT25EcmFpbiIsRmUuYXdhaXREcmFpbiksRmUuYXdhaXREcmFpbiYmRmUuYXdhaXREcmFpbi0tLDA9PT1GZS5hd2FpdERyYWluJiZzKEFlLCJkYXRhIikmJihGZS5mbG93aW5nPSEwLGR0KEFlKSl9fShGZSk7QWUub24oImRyYWluIix0dCk7dmFyIEtlPSExO2Z1bmN0aW9u'@; put 'IFJ0KExyKXtSKCJvbmRhdGEiKTt2YXIgbG49QWUud3JpdGUoTHIpO1IoImRlc3Qud3JpdGUiLGxuKSwhMT09PWxuJiYoKDE9PT1nZS5waXBlc0NvdW50JiZnZS5waXBlcz09PUFlfHxnZS5waXBlc0NvdW50PjEmJi0xIT09amUoZ2UucGlwZXMsQWUpKSYmIUtlJiYoUigiZmFsc2Ugd3JpdGUg'@; put 'cmVzcG9uc2UsIHBhdXNlIixnZS5hd2FpdERyYWluKSxnZS5hd2FpdERyYWluKyspLEZlLnBhdXNlKCkpfWZ1bmN0aW9uIEx0KExyKXtSKCJvbmVycm9yIixMciksWHQoKSxBZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLEx0KSwwPT09cyhBZSwiZXJyb3IiKSYmQ2UoQWUsTHIpfWZ1bmN0aW9u'@; put 'IEd0KCl7QWUucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsZ3QpLFh0KCl9ZnVuY3Rpb24gZ3QoKXtSKCJvbmZpbmlzaCIpLEFlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsR3QpLFh0KCl9ZnVuY3Rpb24gWHQoKXtSKCJ1bnBpcGUiKSxGZS51bnBpcGUoQWUpfXJldHVybiBGZS5vbigiZGF0YSIs'@; put 'UnQpLGZ1bmN0aW9uIGtlKEFlLERlLEZlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQWUucHJlcGVuZExpc3RlbmVyKXJldHVybiBBZS5wcmVwZW5kTGlzdGVuZXIoRGUsRmUpO0FlLl9ldmVudHMmJkFlLl9ldmVudHNbRGVdP0FycmF5LmlzQXJyYXkoQWUuX2V2ZW50c1tEZV0pP0FlLl9ldmVu'@; put 'dHNbRGVdLnVuc2hpZnQoRmUpOkFlLl9ldmVudHNbRGVdPVtGZSxBZS5fZXZlbnRzW0RlXV06QWUub24oRGUsRmUpfShBZSwiZXJyb3IiLEx0KSxBZS5vbmNlKCJjbG9zZSIsR3QpLEFlLm9uY2UoImZpbmlzaCIsZ3QpLEFlLmVtaXQoInBpcGUiLEZlKSxnZS5mbG93aW5nfHwoUigicGlwZSBy'@; put 'ZXN1bWUiKSxGZS5yZXN1bWUoKSksQWV9LFgucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihBZSl7dmFyIERlPXRoaXMuX3JlYWRhYmxlU3RhdGUsRmU9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1EZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1EZS5waXBlc0NvdW50KXJldHVybiBB'@; put 'ZSYmQWUhPT1EZS5waXBlc3x8KEFlfHwoQWU9RGUucGlwZXMpLERlLnBpcGVzPW51bGwsRGUucGlwZXNDb3VudD0wLERlLmZsb3dpbmc9ITEsQWUmJkFlLmVtaXQoInVucGlwZSIsdGhpcyxGZSkpLHRoaXM7aWYoIUFlKXt2YXIgZ2U9RGUucGlwZXMsY2U9RGUucGlwZXNDb3VudDtEZS5waXBl'@; put 'cz1udWxsLERlLnBpcGVzQ291bnQ9MCxEZS5mbG93aW5nPSExO2Zvcih2YXIgaGU9MDtoZTxjZTtoZSsrKWdlW2hlXS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4gdGhpc312YXIgd2U9amUoRGUucGlwZXMsQWUpO3JldHVybi0xPT09d2V8fChEZS5waXBlcy5z'@; put 'cGxpY2Uod2UsMSksRGUucGlwZXNDb3VudC09MSwxPT09RGUucGlwZXNDb3VudCYmKERlLnBpcGVzPURlLnBpcGVzWzBdKSxBZS5lbWl0KCJ1bnBpcGUiLHRoaXMsRmUpKSx0aGlzfSxYLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1YLnByb3RvdHlwZS5vbj1mdW5jdGlvbihBZSxEZSl7dmFyIEZl'@; put 'PUEucHJvdG90eXBlLm9uLmNhbGwodGhpcyxBZSxEZSksZ2U9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4iZGF0YSI9PT1BZT8oZ2UucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsITEhPT1nZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKToicmVh'@; put 'ZGFibGUiPT09QWUmJiFnZS5lbmRFbWl0dGVkJiYhZ2UucmVhZGFibGVMaXN0ZW5pbmcmJihnZS5yZWFkYWJsZUxpc3RlbmluZz1nZS5uZWVkUmVhZGFibGU9ITAsZ2UuZmxvd2luZz0hMSxnZS5lbWl0dGVkUmVhZGFibGU9ITEsUigib24gcmVhZGFibGUiLGdlLmxlbmd0aCxnZS5yZWFkaW5n'@; put 'KSxnZS5sZW5ndGg/RCh0aGlzKTpnZS5yZWFkaW5nfHxwcm9jZXNzLm5leHRUaWNrKFBlLHRoaXMpKSxGZX0sWC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oQWUsRGUpe3ZhciBGZT1BLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsQWUsRGUpO3JldHVybiJy'@; put 'ZWFkYWJsZSI9PT1BZSYmcHJvY2Vzcy5uZXh0VGljayhfZSx0aGlzKSxGZX0sWC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKEFlKXt2YXIgRGU9QS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4oInJlYWRhYmxl'@; put 'Ij09PUFlfHx2b2lkIDA9PT1BZSkmJnByb2Nlc3MubmV4dFRpY2soX2UsdGhpcyksRGV9LFgucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciBBZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBBZS5mbG93aW5nfHwoUigicmVzdW1lIiksQWUuZmxvd2luZz0hQWUucmVhZGFibGVM'@; put 'aXN0ZW5pbmcsZnVuY3Rpb24gb3QoQWUsRGUpe0RlLnJlc3VtZVNjaGVkdWxlZHx8KERlLnJlc3VtZVNjaGVkdWxlZD0hMCxwcm9jZXNzLm5leHRUaWNrKGx0LEFlLERlKSl9KHRoaXMsQWUpKSxBZS5wYXVzZWQ9ITEsdGhpc30sWC5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4g'@; put 'UigiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoUigicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzLl9yZWFkYWJs'@; put 'ZVN0YXRlLnBhdXNlZD0hMCx0aGlzfSxYLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKEFlKXt2YXIgRGU9dGhpcyxGZT10aGlzLl9yZWFkYWJsZVN0YXRlLGdlPSExO2Zvcih2YXIgY2UgaW4gQWUub24oImVuZCIsZnVuY3Rpb24oKXtpZihSKCJ3cmFwcGVkIGVuZCIpLEZlLmRlY29kZXImJiFG'@; put 'ZS5lbmRlZCl7dmFyIHdlPUZlLmRlY29kZXIuZW5kKCk7d2UmJndlLmxlbmd0aCYmRGUucHVzaCh3ZSl9RGUucHVzaChudWxsKX0pLEFlLm9uKCJkYXRhIixmdW5jdGlvbih3ZSl7Uigid3JhcHBlZCBkYXRhIiksRmUuZGVjb2RlciYmKHdlPUZlLmRlY29kZXIud3JpdGUod2UpKSxGZS5vYmpl'@; put 'Y3RNb2RlJiZudWxsPT13ZXx8IShGZS5vYmplY3RNb2RlfHx3ZSYmd2UubGVuZ3RoKXx8RGUucHVzaCh3ZSl8fChnZT0hMCxBZS5wYXVzZSgpKX0pLEFlKXZvaWQgMD09PXRoaXNbY2VdJiYiZnVuY3Rpb24iPT10eXBlb2YgQWVbY2VdJiYodGhpc1tjZV09ZnVuY3Rpb24oSmUpe3JldHVybiBm'@; put 'dW5jdGlvbigpe3JldHVybiBBZVtKZV0uYXBwbHkoQWUsYXJndW1lbnRzKX19KGNlKSk7Zm9yKHZhciBoZT0wO2hlPEllLmxlbmd0aDtoZSsrKUFlLm9uKEllW2hlXSx0aGlzLmVtaXQuYmluZCh0aGlzLEllW2hlXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKHdlKXtSKCJ3cmFwcGVk'@; put 'IF9yZWFkIix3ZSksZ2UmJihnZT0hMSxBZS5yZXN1bWUoKSl9LHRoaXN9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihYLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09cmUmJihyZT1oKDYzMjApKSxyZSh0aGlzKX0pLE9iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlwZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlwZSwicmVh'@; put 'ZGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsInJlYWRhYmxlRmxvd2luZyIse2VudW1lcmFibGU6'@; put 'ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sc2V0OmZ1bmN0aW9uKERlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPURlKX19KSxYLl9mcm9tTGlzdD1SZSxPYmplY3QuZGVmaW5lUHJvcGVydHko'@; put 'WC5wcm90b3R5cGUsInJlYWRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFguZnJvbT1mdW5jdGlvbihBZSxEZSl7cmV0dXJuIHZvaWQgMD09PW1l'@; put 'JiYobWU9aCg4NzY1NCkpLG1lKFgsQWUsRGUpfSl9LDI5MDkoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1TO3ZhciB5PWgoMjYxMTMpLkYsYz15LkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELHM9eS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssQT15LkVSUl9UUkFOU0ZPUk1fQUxS'@; put 'RUFEWV9UUkFOU0ZPUk1JTkcsdj15LkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCxDPWgoNzQwNzUpO2Z1bmN0aW9uIHcoeCxVKXt2YXIgSD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtILnRyYW5zZm9ybWluZz0hMTt2YXIgVj1ILndyaXRlY2I7aWYobnVsbD09PVYpcmV0dXJuIHRoaXMuZW1p'@; put 'dCgiZXJyb3IiLG5ldyBzKTtILndyaXRlY2h1bms9bnVsbCxILndyaXRlY2I9bnVsbCxudWxsIT1VJiZ0aGlzLnB1c2goVSksVih4KTt2YXIgTj10aGlzLl9yZWFkYWJsZVN0YXRlO04ucmVhZGluZz0hMSwoTi5uZWVkUmVhZGFibGV8fE4ubGVuZ3RoPE4uaGlnaFdhdGVyTWFyaykmJnRoaXMu'@; put 'X3JlYWQoTi5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBTKHgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFMpKXJldHVybiBuZXcgUyh4KTtDLmNhbGwodGhpcyx4KSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06dy5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNm'@; put 'b3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEseCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB4LnRyYW5zZm9ybSYmKHRoaXMu'@; put 'X3RyYW5zZm9ybT14LnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIHguZmx1c2gmJih0aGlzLl9mbHVzaD14LmZsdXNoKSksdGhpcy5vbigicHJlZmluaXNoIixMKX1mdW5jdGlvbiBMKCl7dmFyIHg9dGhpczsiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZmx1c2h8fHRoaXMuX3JlYWRh'@; put 'YmxlU3RhdGUuZGVzdHJveWVkP1IodGhpcyxudWxsLG51bGwpOnRoaXMuX2ZsdXNoKGZ1bmN0aW9uKFUsSCl7Uih4LFUsSCl9KX1mdW5jdGlvbiBSKHgsVSxIKXtpZihVKXJldHVybiB4LmVtaXQoImVycm9yIixVKTtpZihudWxsIT1IJiZ4LnB1c2goSCkseC5fd3JpdGFibGVTdGF0ZS5sZW5n'@; put 'dGgpdGhyb3cgbmV3IHY7aWYoeC5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBBO3JldHVybiB4LnB1c2gobnVsbCl9aCg3MTk5MykoUyxDKSxTLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHgsVSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zv'@; put 'cm09ITEsQy5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMseCxVKX0sUy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih4LFUsSCl7SChuZXcgYygiX3RyYW5zZm9ybSgpIikpfSxTLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oeCxVLEgpe3ZhciBWPXRoaXMuX3RyYW5zZm9ybVN0YXRl'@; put 'O2lmKFYud3JpdGVjYj1ILFYud3JpdGVjaHVuaz14LFYud3JpdGVlbmNvZGluZz1VLCFWLnRyYW5zZm9ybWluZyl7dmFyIE49dGhpcy5fcmVhZGFibGVTdGF0ZTsoVi5uZWVkVHJhbnNmb3JtfHxOLm5lZWRSZWFkYWJsZXx8Ti5sZW5ndGg8Ti5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChO'@; put 'LmhpZ2hXYXRlck1hcmspfX0sUy5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oeCl7dmFyIFU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PVUud3JpdGVjaHVua3x8VS50cmFuc2Zvcm1pbmc/VS5uZWVkVHJhbnNmb3JtPSEwOihVLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0o'@; put 'VS53cml0ZWNodW5rLFUud3JpdGVlbmNvZGluZyxVLmFmdGVyVHJhbnNmb3JtKSl9LFMucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHgsVSl7Qy5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLHgsZnVuY3Rpb24oSCl7VShIKX0pfX0sNDc4NDkoZmUsaixoKXsidXNlIHN0cmljdCI7'@; put 'ZnVuY3Rpb24gYyhkdCl7dmFyIFJlPXRoaXM7dGhpcy5uZXh0PW51bGwsdGhpcy5lbnRyeT1udWxsLHRoaXMuZmluaXNoPWZ1bmN0aW9uKCl7IWZ1bmN0aW9uIGx0KGR0LFJlLGFlKXt2YXIgeGU9ZHQuZW50cnk7Zm9yKGR0LmVudHJ5PW51bGw7eGU7KXt2YXIgamU9eGUuY2FsbGJhY2s7UmUu'@; put 'cGVuZGluZ2NiLS0samUoYWUpLHhlPXhlLm5leHR9UmUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9ZHR9KFJlLGR0KX19dmFyIHM7ZmUuZXhwb3J0cz1xZSxxZS5Xcml0YWJsZVN0YXRlPUllO3ZhciBrZSxBPXtkZXByZWNhdGU6aCgzMzk4KX0sdj1oKDE4MzQyKSxDPWgoODM4MzgpLkJ1ZmZl'@; put 'cix3PSh0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnt9KS5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sUj1oKDIxNTA5KSxVPWgoNDI5MzQpLmdldEhpZ2hXYXRlck1hcmssSD1oKDI2MTEzKS5GLFY9SC5FUlJf'@; put 'SU5WQUxJRF9BUkdfVFlQRSxOPUguRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsej1ILkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxZPUguRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxGPUguRVJSX1NUUkVBTV9ERVNUUk9ZRUQsVz1ILkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMscT1ILkVSUl9TVFJF'@; put 'QU1fV1JJVEVfQUZURVJfRU5ELHJlPUguRVJSX1VOS05PV05fRU5DT0RJTkcsbWU9Ui5lcnJvck9yRGVzdHJveTtmdW5jdGlvbiBDZSgpe31mdW5jdGlvbiBJZShkdCxSZSxhZSl7cz1zfHxoKDc0MDc1KSwiYm9vbGVhbiIhPXR5cGVvZiBhZSYmKGFlPVJlIGluc3RhbmNlb2YgcyksdGhpcy5v'@; put 'YmplY3RNb2RlPSEhKGR0PWR0fHx7fSkub2JqZWN0TW9kZSxhZSYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhZHQud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9VSh0aGlzLGR0LCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLGFlKSx0aGlzLmZpbmFs'@; put 'Q2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29kZVN0cmluZ3M9ISghMT09PWR0LmRlY29kZVN0cmluZ3MpLHRoaXMuZGVmYXVsdEVuY29kaW5nPWR0LmRlZmF1'@; put 'bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24oamUpeyFmdW5jdGlvbiBHKGR0LFJlKXt2YXIgYWU9ZHQuX3dyaXRhYmxl'@; put 'U3RhdGUseGU9YWUuc3luYyxqZT1hZS53cml0ZWNiO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBqZSl0aHJvdyBuZXcgejtpZihmdW5jdGlvbiBLKGR0KXtkdC53cml0aW5nPSExLGR0LndyaXRlY2I9bnVsbCxkdC5sZW5ndGgtPWR0LndyaXRlbGVuLGR0LndyaXRlbGVuPTB9KGFlKSxSZSkhZnVu'@; put 'Y3Rpb24gQihkdCxSZSxhZSx4ZSxqZSl7LS1SZS5wZW5kaW5nY2IsYWU/KHByb2Nlc3MubmV4dFRpY2soamUseGUpLHByb2Nlc3MubmV4dFRpY2soUGUsZHQsUmUpLGR0Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxtZShkdCx4ZSkpOihqZSh4ZSksZHQuX3dyaXRhYmxlU3RhdGUu'@; put 'ZXJyb3JFbWl0dGVkPSEwLG1lKGR0LHhlKSxQZShkdCxSZSkpfShkdCxhZSx4ZSxSZSxqZSk7ZWxzZXt2YXIgQWU9dWUoYWUpfHxkdC5kZXN0cm95ZWQ7IUFlJiYhYWUuY29ya2VkJiYhYWUuYnVmZmVyUHJvY2Vzc2luZyYmYWUuYnVmZmVyZWRSZXF1ZXN0JiZJKGR0LGFlKSx4ZT9wcm9jZXNz'@; put 'Lm5leHRUaWNrKEQsZHQsYWUsQWUsamUpOkQoZHQsYWUsQWUsamUpfX0oUmUsamUpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJl'@; put 'ZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9ITEhPT1kdC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIWR0LmF1dG9EZXN0cm95LHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgYyh0aGlzKX1m'@; put 'dW5jdGlvbiBxZShkdCl7dmFyIFJlPXRoaXMgaW5zdGFuY2VvZihzPXN8fGgoNzQwNzUpKTtpZighUmUmJiFrZS5jYWxsKHFlLHRoaXMpKXJldHVybiBuZXcgcWUoZHQpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IEllKGR0LHRoaXMsUmUpLHRoaXMud3JpdGFibGU9ITAsZHQmJigiZnVuY3Rp'@; put 'b24iPT10eXBlb2YgZHQud3JpdGUmJih0aGlzLl93cml0ZT1kdC53cml0ZSksImZ1bmN0aW9uIj09dHlwZW9mIGR0LndyaXRldiYmKHRoaXMuX3dyaXRldj1kdC53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiBkdC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1kdC5kZXN0cm95KSwiZnVuY3Rp'@; put 'b24iPT10eXBlb2YgZHQuZmluYWwmJih0aGlzLl9maW5hbD1kdC5maW5hbCkpLHYuY2FsbCh0aGlzKX1mdW5jdGlvbiBNKGR0LFJlLGFlLHhlLGplLEFlLERlKXtSZS53cml0ZWxlbj14ZSxSZS53cml0ZWNiPURlLFJlLndyaXRpbmc9ITAsUmUuc3luYz0hMCxSZS5kZXN0cm95ZWQ/UmUub253'@; put 'cml0ZShuZXcgRigid3JpdGUiKSk6YWU/ZHQuX3dyaXRldihqZSxSZS5vbndyaXRlKTpkdC5fd3JpdGUoamUsQWUsUmUub253cml0ZSksUmUuc3luYz0hMX1mdW5jdGlvbiBEKGR0LFJlLGFlLHhlKXthZXx8ZnVuY3Rpb24gcChkdCxSZSl7MD09PVJlLmxlbmd0aCYmUmUubmVlZERyYWluJiYo'@; put 'UmUubmVlZERyYWluPSExLGR0LmVtaXQoImRyYWluIikpfShkdCxSZSksUmUucGVuZGluZ2NiLS0seGUoKSxQZShkdCxSZSl9ZnVuY3Rpb24gSShkdCxSZSl7UmUuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgYWU9UmUuYnVmZmVyZWRSZXF1ZXN0O2lmKGR0Ll93cml0ZXYmJmFlJiZhZS5uZXh0'@; put 'KXt2YXIgamU9bmV3IEFycmF5KFJlLmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxBZT1SZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7QWUuZW50cnk9YWU7Zm9yKHZhciBEZT0wLEZlPSEwO2FlOylqZVtEZV09YWUsYWUuaXNCdWZ8fChGZT0hMSksYWU9YWUubmV4dCxEZSs9MTtqZS5hbGxCdWZmZXJzPUZl'@; put 'LE0oZHQsUmUsITAsUmUubGVuZ3RoLGplLCIiLEFlLmZpbmlzaCksUmUucGVuZGluZ2NiKyssUmUubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLEFlLm5leHQ/KFJlLmNvcmtlZFJlcXVlc3RzRnJlZT1BZS5uZXh0LEFlLm5leHQ9bnVsbCk6UmUuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBjKFJl'@; put 'KSxSZS5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDthZTspe3ZhciBnZT1hZS5jaHVuaztpZihNKGR0LFJlLCExLFJlLm9iamVjdE1vZGU/MTpnZS5sZW5ndGgsZ2UsYWUuZW5jb2RpbmcsYWUuY2FsbGJhY2spLGFlPWFlLm5leHQsUmUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxS'@; put 'ZS53cml0aW5nKWJyZWFrfW51bGw9PT1hZSYmKFJlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9UmUuYnVmZmVyZWRSZXF1ZXN0PWFlLFJlLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gdWUoZHQpe3JldHVybiBkdC5lbmRpbmcmJjA9PT1kdC5sZW5ndGgmJm51bGw9PT1kdC5idWZm'@; put 'ZXJlZFJlcXVlc3QmJiFkdC5maW5pc2hlZCYmIWR0LndyaXRpbmd9ZnVuY3Rpb24gbmUoZHQsUmUpe2R0Ll9maW5hbChmdW5jdGlvbihhZSl7UmUucGVuZGluZ2NiLS0sYWUmJm1lKGR0LGFlKSxSZS5wcmVmaW5pc2hlZD0hMCxkdC5lbWl0KCJwcmVmaW5pc2giKSxQZShkdCxSZSl9KX1mdW5j'@; put 'dGlvbiBQZShkdCxSZSl7dmFyIGFlPXVlKFJlKTtpZihhZSYmKGZ1bmN0aW9uIF9lKGR0LFJlKXshUmUucHJlZmluaXNoZWQmJiFSZS5maW5hbENhbGxlZCYmKCJmdW5jdGlvbiIhPXR5cGVvZiBkdC5fZmluYWx8fFJlLmRlc3Ryb3llZD8oUmUucHJlZmluaXNoZWQ9ITAsZHQuZW1pdCgicHJl'@; put 'ZmluaXNoIikpOihSZS5wZW5kaW5nY2IrKyxSZS5maW5hbENhbGxlZD0hMCxwcm9jZXNzLm5leHRUaWNrKG5lLGR0LFJlKSkpfShkdCxSZSksMD09PVJlLnBlbmRpbmdjYiYmKFJlLmZpbmlzaGVkPSEwLGR0LmVtaXQoImZpbmlzaCIpLFJlLmF1dG9EZXN0cm95KSkpe3ZhciB4ZT1kdC5fcmVh'@; put 'ZGFibGVTdGF0ZTsoIXhlfHx4ZS5hdXRvRGVzdHJveSYmeGUuZW5kRW1pdHRlZCkmJmR0LmRlc3Ryb3koKX1yZXR1cm4gYWV9aCg3MTk5MykocWUsdiksSWUucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgUmU9dGhpcy5idWZmZXJlZFJlcXVlc3QsYWU9W107UmU7KWFl'@; put 'LnB1c2goUmUpLFJlPVJlLm5leHQ7cmV0dXJuIGFlfSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoSWUucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6QS5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZl'@; put 'ciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVb'@; put 'U3ltYm9sLmhhc0luc3RhbmNlXT8oa2U9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHFlLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24oUmUpe3JldHVybiEha2UuY2FsbCh0aGlzLFJlKXx8dGhpcz09PXFlJiZS'@; put 'ZSYmUmUuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBJZX19KSk6a2U9ZnVuY3Rpb24oUmUpe3JldHVybiBSZSBpbnN0YW5jZW9mIHRoaXN9LHFlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7bWUodGhpcyxuZXcgWSl9LHFlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihkdCxSZSxhZSl7'@; put 'dmFyIHhlPXRoaXMuX3dyaXRhYmxlU3RhdGUsamU9ITEsQWU9IXhlLm9iamVjdE1vZGUmJmZ1bmN0aW9uIEwoZHQpe3JldHVybiBDLmlzQnVmZmVyKGR0KXx8ZHQgaW5zdGFuY2VvZiB3fShkdCk7cmV0dXJuIEFlJiYhQy5pc0J1ZmZlcihkdCkmJihkdD1mdW5jdGlvbiBTKGR0KXtyZXR1cm4g'@; put 'Qy5mcm9tKGR0KX0oZHQpKSwiZnVuY3Rpb24iPT10eXBlb2YgUmUmJihhZT1SZSxSZT1udWxsKSxBZT9SZT0iYnVmZmVyIjpSZXx8KFJlPXhlLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIGFlJiYoYWU9Q2UpLHhlLmVuZGluZz9mdW5jdGlvbiBYKGR0LFJlKXt2YXIgYWU9'@; put 'bmV3IHE7bWUoZHQsYWUpLHByb2Nlc3MubmV4dFRpY2soUmUsYWUpfSh0aGlzLGFlKTooQWV8fGZ1bmN0aW9uIGYoZHQsUmUsYWUseGUpe3ZhciBqZTtyZXR1cm4gbnVsbD09PWFlP2plPW5ldyBXOiJzdHJpbmciIT10eXBlb2YgYWUmJiFSZS5vYmplY3RNb2RlJiYoamU9bmV3IFYoImNodW5r'@; put 'IixbInN0cmluZyIsIkJ1ZmZlciJdLGFlKSksIWplfHwobWUoZHQsamUpLHByb2Nlc3MubmV4dFRpY2soeGUsamUpLCExKX0odGhpcyx4ZSxkdCxhZSkpJiYoeGUucGVuZGluZ2NiKyssamU9ZnVuY3Rpb24gayhkdCxSZSxhZSx4ZSxqZSxBZSl7aWYoIWFlKXt2YXIgRGU9ZnVuY3Rpb24gYihk'@; put 'dCxSZSxhZSl7cmV0dXJuIWR0Lm9iamVjdE1vZGUmJiExIT09ZHQuZGVjb2RlU3RyaW5ncyYmInN0cmluZyI9PXR5cGVvZiBSZSYmKFJlPUMuZnJvbShSZSxhZSkpLFJlfShSZSx4ZSxqZSk7eGUhPT1EZSYmKGFlPSEwLGplPSJidWZmZXIiLHhlPURlKX12YXIgRmU9UmUub2JqZWN0TW9kZT8x'@; put 'OnhlLmxlbmd0aDtSZS5sZW5ndGgrPUZlO3ZhciBnZT1SZS5sZW5ndGg8UmUuaGlnaFdhdGVyTWFyaztpZihnZXx8KFJlLm5lZWREcmFpbj0hMCksUmUud3JpdGluZ3x8UmUuY29ya2VkKXt2YXIgY2U9UmUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtSZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVu'@; put 'azp4ZSxlbmNvZGluZzpqZSxpc0J1ZjphZSxjYWxsYmFjazpBZSxuZXh0Om51bGx9LGNlP2NlLm5leHQ9UmUubGFzdEJ1ZmZlcmVkUmVxdWVzdDpSZS5idWZmZXJlZFJlcXVlc3Q9UmUubGFzdEJ1ZmZlcmVkUmVxdWVzdCxSZS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIE0oZHQsUmUs'@; put 'ITEsRmUseGUsamUsQWUpO3JldHVybiBnZX0odGhpcyx4ZSxBZSxkdCxSZSxhZSkpLGplfSxxZS5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LHFlLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgZHQ9dGhpcy5fd3JpdGFibGVT'@; put 'dGF0ZTtkdC5jb3JrZWQmJihkdC5jb3JrZWQtLSwhZHQud3JpdGluZyYmIWR0LmNvcmtlZCYmIWR0LmJ1ZmZlclByb2Nlc3NpbmcmJmR0LmJ1ZmZlcmVkUmVxdWVzdCYmSSh0aGlzLGR0KSl9LHFlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oUmUpe2lmKCJzdHJpbmci'@; put 'PT10eXBlb2YgUmUmJihSZT1SZS50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5pbmRleE9mKChSZSsiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRo'@; put 'cm93IG5ldyByZShSZSk7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPVJlLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShxZS5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3Jp'@; put 'dGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocWUucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhp'@; put 'Z2hXYXRlck1hcmt9fSkscWUucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihkdCxSZSxhZSl7YWUobmV3IE4oIl93cml0ZSgpIikpfSxxZS5wcm90b3R5cGUuX3dyaXRldj1udWxsLHFlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZHQsUmUsYWUpe3ZhciB4ZT10aGlzLl93cml0YWJsZVN0YXRl'@; put 'O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkdD8oYWU9ZHQsZHQ9bnVsbCxSZT1udWxsKToiZnVuY3Rpb24iPT10eXBlb2YgUmUmJihhZT1SZSxSZT1udWxsKSxudWxsIT1kdCYmdGhpcy53cml0ZShkdCxSZSkseGUuY29ya2VkJiYoeGUuY29ya2VkPTEsdGhpcy51bmNvcmsoKSkseGUuZW5k'@; put 'aW5nfHxmdW5jdGlvbiBvdChkdCxSZSxhZSl7UmUuZW5kaW5nPSEwLFBlKGR0LFJlKSxhZSYmKFJlLmZpbmlzaGVkP3Byb2Nlc3MubmV4dFRpY2soYWUpOmR0Lm9uY2UoImZpbmlzaCIsYWUpKSxSZS5lbmRlZD0hMCxkdC53cml0YWJsZT0hMX0odGhpcyx4ZSxhZSksdGhpc30sT2JqZWN0LmRl'@; put 'ZmluZVByb3BlcnR5KHFlLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocWUucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJh'@; put 'YmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKFJlKXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9UmUpfX0p'@; put 'LHFlLnByb3RvdHlwZS5kZXN0cm95PVIuZGVzdHJveSxxZS5wcm90b3R5cGUuX3VuZGVzdHJveT1SLnVuZGVzdHJveSxxZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZHQsUmUpe1JlKGR0KX19LDYzMjAoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk7ZnVuY3Rpb24gYyhxLHJlLG1l'@; put 'KXtyZXR1cm4gcmU9ZnVuY3Rpb24gcyhxKXt2YXIgcmU9ZnVuY3Rpb24gQShxLHJlKXtpZigib2JqZWN0IiE9dHlwZW9mIHF8fG51bGw9PT1xKXJldHVybiBxO3ZhciBtZT1xW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09bWUpe3ZhciBDZT1tZS5jYWxsKHEscmV8fCJkZWZhdWx0'@; put 'Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBDZSlyZXR1cm4gQ2U7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1yZT9TdHJpbmc6TnVtYmVyKShxKX0ocSwic3RyaW5nIik7cmV0dXJuInN5'@; put 'bWJvbCI9PXR5cGVvZiByZT9yZTpTdHJpbmcocmUpfShyZSkscmUgaW4gcT9PYmplY3QuZGVmaW5lUHJvcGVydHkocSxyZSx7dmFsdWU6bWUsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpxW3JlXT1tZSxxfXZhciB2PWgoMzMxMzkpLEM9U3ltYm9sKCJsYXN0'@; put 'UmVzb2x2ZSIpLHc9U3ltYm9sKCJsYXN0UmVqZWN0IiksUz1TeW1ib2woImVycm9yIiksTD1TeW1ib2woImVuZGVkIiksUj1TeW1ib2woImxhc3RQcm9taXNlIikseD1TeW1ib2woImhhbmRsZVByb21pc2UiKSxVPVN5bWJvbCgic3RyZWFtIik7ZnVuY3Rpb24gSChxLHJlKXtyZXR1cm57dmFs'@; put 'dWU6cSxkb25lOnJlfX1mdW5jdGlvbiBWKHEpe3ZhciByZT1xW0NdO2lmKG51bGwhPT1yZSl7dmFyIG1lPXFbVV0ucmVhZCgpO251bGwhPT1tZSYmKHFbUl09bnVsbCxxW0NdPW51bGwscVt3XT1udWxsLHJlKEgobWUsITEpKSl9fWZ1bmN0aW9uIE4ocSl7cHJvY2Vzcy5uZXh0VGljayhWLHEp'@; put 'fXZhciBZPU9iamVjdC5nZXRQcm90b3R5cGVPZihmdW5jdGlvbigpe30pLEY9T2JqZWN0LnNldFByb3RvdHlwZU9mKChjKHk9e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1tVXX0sbmV4dDpmdW5jdGlvbigpe3ZhciByZT10aGlzLG1lPXRoaXNbU107aWYobnVsbCE9PW1lKXJldHVybiBQcm9t'@; put 'aXNlLnJlamVjdChtZSk7aWYodGhpc1tMXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEgodm9pZCAwLCEwKSk7aWYodGhpc1tVXS5kZXN0cm95ZWQpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHFlLFgpe3Byb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKXtyZVtTXT9YKHJlW1NdKTpxZShI'@; put 'KHZvaWQgMCwhMCkpfSl9KTt2YXIgSWUsQ2U9dGhpc1tSXTtpZihDZSlJZT1uZXcgUHJvbWlzZShmdW5jdGlvbiB6KHEscmUpe3JldHVybiBmdW5jdGlvbihtZSxDZSl7cS50aGVuKGZ1bmN0aW9uKCl7cmVbTF0/bWUoSCh2b2lkIDAsITApKTpyZVt4XShtZSxDZSl9LENlKX19KENlLHRoaXMp'@; put 'KTtlbHNle3ZhciBrZT10aGlzW1VdLnJlYWQoKTtpZihudWxsIT09a2UpcmV0dXJuIFByb21pc2UucmVzb2x2ZShIKGtlLCExKSk7SWU9bmV3IFByb21pc2UodGhpc1t4XSl9cmV0dXJuIHRoaXNbUl09SWUsSWV9fSxTeW1ib2wuYXN5bmNJdGVyYXRvcixmdW5jdGlvbigpe3JldHVybiB0aGlz'@; put 'fSksYyh5LCJyZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIHJlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG1lLENlKXtyZVtVXS5kZXN0cm95KG51bGwsZnVuY3Rpb24oSWUpe0llP0NlKEllKTptZShIKHZvaWQgMCwhMCkpfSl9KX0pLHkpLFkpO2ZlLmV4cG9ydHM9ZnVuY3Rpb24o'@; put 'cmUpe3ZhciBtZSxDZT1PYmplY3QuY3JlYXRlKEYsKGMobWU9e30sVSx7dmFsdWU6cmUsd3JpdGFibGU6ITB9KSxjKG1lLEMse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxjKG1lLHcse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxjKG1lLFMse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxj'@; put 'KG1lLEwse3ZhbHVlOnJlLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsd3JpdGFibGU6ITB9KSxjKG1lLHgse3ZhbHVlOmZ1bmN0aW9uKGtlLHFlKXt2YXIgWD1DZVtVXS5yZWFkKCk7WD8oQ2VbUl09bnVsbCxDZVtDXT1udWxsLENlW3ddPW51bGwsa2UoSChYLCExKSkpOihDZVtDXT1rZSxD'@; put 'ZVt3XT1xZSl9LHdyaXRhYmxlOiEwfSksbWUpKTtyZXR1cm4gQ2VbUl09bnVsbCx2KHJlLGZ1bmN0aW9uKEllKXtpZihJZSYmIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiE9PUllLmNvZGUpe3ZhciBrZT1DZVt3XTtyZXR1cm4gbnVsbCE9PWtlJiYoQ2VbUl09bnVsbCxDZVtDXT1udWxs'@; put 'LENlW3ddPW51bGwsa2UoSWUpKSx2b2lkKENlW1NdPUllKX12YXIgcWU9Q2VbQ107bnVsbCE9PXFlJiYoQ2VbUl09bnVsbCxDZVtDXT1udWxsLENlW3ddPW51bGwscWUoSCh2b2lkIDAsITApKSksQ2VbTF09ITB9KSxyZS5vbigicmVhZGFibGUiLE4uYmluZChudWxsLENlKSksQ2V9fSwxOTU4'@; put 'OChmZSxqLGgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB5KE4seil7dmFyIFk9T2JqZWN0LmtleXMoTik7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhOKTt6JiYoRj1GLmZpbHRlcihmdW5jdGlvbihXKXtyZXR1cm4g'@; put 'T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOLFcpLmVudW1lcmFibGV9KSksWS5wdXNoLmFwcGx5KFksRil9cmV0dXJuIFl9ZnVuY3Rpb24gYyhOKXtmb3IodmFyIHo9MTt6PGFyZ3VtZW50cy5sZW5ndGg7eisrKXt2YXIgWT1udWxsIT1hcmd1bWVudHNbel0/YXJndW1lbnRzW3pd'@; put 'Ont9O3olMj95KE9iamVjdChZKSwhMCkuZm9yRWFjaChmdW5jdGlvbihGKXtzKE4sRixZW0ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoWSkpOnkoT2JqZWN0KFkp'@; put 'KS5mb3JFYWNoKGZ1bmN0aW9uKEYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShOLEYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihZLEYpKX0pfXJldHVybiBOfWZ1bmN0aW9uIHMoTix6LFkpe3JldHVybih6PXcoeikpaW4gTj9PYmplY3QuZGVmaW5lUHJvcGVydHkoTix6LHt2YWx1'@; put 'ZTpZLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6Tlt6XT1ZLE59ZnVuY3Rpb24gdihOLHope2Zvcih2YXIgWT0wO1k8ei5sZW5ndGg7WSsrKXt2YXIgRj16W1ldO0YuZW51bWVyYWJsZT1GLmVudW1lcmFibGV8fCExLEYuY29uZmlndXJhYmxlPSEwLCJ2YWx1'@; put 'ZSJpbiBGJiYoRi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4sdyhGLmtleSksRil9fWZ1bmN0aW9uIHcoTil7dmFyIHo9ZnVuY3Rpb24gUyhOLHope2lmKCJvYmplY3QiIT10eXBlb2YgTnx8bnVsbD09PU4pcmV0dXJuIE47dmFyIFk9TltTeW1ib2wudG9QcmltaXRpdmVd'@; put 'O2lmKHZvaWQgMCE9PVkpe3ZhciBGPVkuY2FsbChOLHp8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBGKXJldHVybiBGO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ej9T'@; put 'dHJpbmc6TnVtYmVyKShOKX0oTiwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB6P3o6U3RyaW5nKHopfXZhciBSPWgoODM4MzgpLkJ1ZmZlcixVPWgoMTUzNDApLmluc3BlY3QsSD1VJiZVLmN1c3RvbXx8Imluc3BlY3QiO2Z1bmN0aW9uIFYoTix6LFkpe1IucHJvdG90eXBlLmNv'@; put 'cHkuY2FsbChOLHosWSl9ZmUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIE4oKXsoZnVuY3Rpb24gQShOLHope2lmKCEoTiBpbnN0YW5jZW9mIHopKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxOKSx0aGlzLmhlYWQ9'@; put 'bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiBmdW5jdGlvbiBDKE4seixZKXt6JiZ2KE4ucHJvdG90eXBlLHopLFkmJnYoTixZKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTiwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oTixbe2tleToicHVzaCIsdmFsdWU6ZnVu'@; put 'Y3Rpb24oWSl7dmFyIEY9e2RhdGE6WSxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9Rjp0aGlzLmhlYWQ9Rix0aGlzLnRhaWw9RiwrK3RoaXMubGVuZ3RofX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIEY9e2RhdGE6WSxuZXh0OnRoaXMuaGVh'@; put 'ZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPUYpLHRoaXMuaGVhZD1GLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciBZPXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3Ro'@; put 'P3RoaXMudGFpbD1udWxsOnRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsWX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH19LHtrZXk6ImpvaW4iLHZhbHVlOmZ1bmN0aW9uKFkpe2lmKDA9PT10aGlzLmxl'@; put 'bmd0aClyZXR1cm4iIjtmb3IodmFyIEY9dGhpcy5oZWFkLFc9IiIrRi5kYXRhO0Y9Ri5uZXh0OylXKz1ZK0YuZGF0YTtyZXR1cm4gV319LHtrZXk6ImNvbmNhdCIsdmFsdWU6ZnVuY3Rpb24oWSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBSLmFsbG9jKDApO2Zvcih2YXIgRj1SLmFsbG9j'@; put 'VW5zYWZlKFk+Pj4wKSxXPXRoaXMuaGVhZCxxPTA7VzspVihXLmRhdGEsRixxKSxxKz1XLmRhdGEubGVuZ3RoLFc9Vy5uZXh0O3JldHVybiBGfX0se2tleToiY29uc3VtZSIsdmFsdWU6ZnVuY3Rpb24oWSxGKXt2YXIgVztyZXR1cm4gWTx0aGlzLmhlYWQuZGF0YS5sZW5ndGg/KFc9dGhpcy5o'@; put 'ZWFkLmRhdGEuc2xpY2UoMCxZKSx0aGlzLmhlYWQuZGF0YT10aGlzLmhlYWQuZGF0YS5zbGljZShZKSk6Vz1ZPT09dGhpcy5oZWFkLmRhdGEubGVuZ3RoP3RoaXMuc2hpZnQoKTpGP3RoaXMuX2dldFN0cmluZyhZKTp0aGlzLl9nZXRCdWZmZXIoWSksV319LHtrZXk6ImZpcnN0Iix2YWx1ZTpm'@; put 'dW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6Il9nZXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKFkpe3ZhciBGPXRoaXMuaGVhZCxXPTEscT1GLmRhdGE7Zm9yKFktPXEubGVuZ3RoO0Y9Ri5uZXh0Oyl7dmFyIHJlPUYuZGF0YSxtZT1ZPnJlLmxlbmd0aD9yZS5sZW5ndGg6'@; put 'WTtpZihxKz1tZT09PXJlLmxlbmd0aD9yZTpyZS5zbGljZSgwLFkpLDA9PT0oWS09bWUpKXttZT09PXJlLmxlbmd0aD8oKytXLHRoaXMuaGVhZD1GLm5leHQ/Ri5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPUYsRi5kYXRhPXJlLnNsaWNlKG1lKSk7YnJlYWt9KytXfXJldHVybiB0'@; put 'aGlzLmxlbmd0aC09VyxxfX0se2tleToiX2dldEJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIEY9Ui5hbGxvY1Vuc2FmZShZKSxXPXRoaXMuaGVhZCxxPTE7Zm9yKFcuZGF0YS5jb3B5KEYpLFktPVcuZGF0YS5sZW5ndGg7Vz1XLm5leHQ7KXt2YXIgcmU9Vy5kYXRhLG1lPVk+cmUubGVu'@; put 'Z3RoP3JlLmxlbmd0aDpZO2lmKHJlLmNvcHkoRixGLmxlbmd0aC1ZLDAsbWUpLDA9PT0oWS09bWUpKXttZT09PXJlLmxlbmd0aD8oKytxLHRoaXMuaGVhZD1XLm5leHQ/Vy5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPVcsVy5kYXRhPXJlLnNsaWNlKG1lKSk7YnJlYWt9KytxfXJl'@; put 'dHVybiB0aGlzLmxlbmd0aC09cSxGfX0se2tleTpILHZhbHVlOmZ1bmN0aW9uKFksRil7cmV0dXJuIFUodGhpcyxjKGMoe30sRikse30se2RlcHRoOjAsY3VzdG9tSW5zcGVjdDohMX0pKX19XSksTn0oKX0sMjE1MDkoZmUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBoKHYsQyl7cyh2LEMpLHko'@; put 'dil9ZnVuY3Rpb24geSh2KXt2Ll93cml0YWJsZVN0YXRlJiYhdi5fd3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2V8fHYuX3JlYWRhYmxlU3RhdGUmJiF2Ll9yZWFkYWJsZVN0YXRlLmVtaXRDbG9zZXx8di5lbWl0KCJjbG9zZSIpfWZ1bmN0aW9uIHModixDKXt2LmVtaXQoImVycm9yIixDKX1mZS5l'@; put 'eHBvcnRzPXtkZXN0cm95OmZ1bmN0aW9uIGoodixDKXt2YXIgdz10aGlzO3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZHx8dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ/KEM/Qyh2KTp2JiYo'@; put 'dGhpcy5fd3JpdGFibGVTdGF0ZT90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZHx8KHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHByb2Nlc3MubmV4dFRpY2socyx0aGlzLHYpKTpwcm9jZXNzLm5leHRUaWNrKHMsdGhpcyx2KSksdGhpcyk6KHRoaXMuX3JlYWRh'@; put 'YmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl9kZXN0cm95KHZ8fG51bGwsZnVuY3Rpb24oUil7IUMmJlI/dy5fd3JpdGFibGVTdGF0ZT93Ll93cml0'@; put 'YWJsZVN0YXRlLmVycm9yRW1pdHRlZD9wcm9jZXNzLm5leHRUaWNrKHksdyk6KHcuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHByb2Nlc3MubmV4dFRpY2soaCx3LFIpKTpwcm9jZXNzLm5leHRUaWNrKGgsdyxSKTpDPyhwcm9jZXNzLm5leHRUaWNrKHksdyksQyhSKSk6cHJvY2Vz'@; put 'cy5uZXh0VGljayh5LHcpfSksdGhpcyl9LHVuZGVzdHJveTpmdW5jdGlvbiBjKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRo'@; put 'aXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0'@; put 'ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfSxlcnJvck9yRGVzdHJveTpmdW5jdGlvbiBBKHYsQyl7dmFyIHc9di5fcmVh'@; put 'ZGFibGVTdGF0ZSxTPXYuX3dyaXRhYmxlU3RhdGU7dyYmdy5hdXRvRGVzdHJveXx8UyYmUy5hdXRvRGVzdHJveT92LmRlc3Ryb3koQyk6di5lbWl0KCJlcnJvciIsQyl9fX0sMzMxMzkoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCgyNjExMykuRi5FUlJfU1RSRUFNX1BSRU1BVFVSRV9D'@; put 'TE9TRTtmdW5jdGlvbiBzKCl7fWZlLmV4cG9ydHM9ZnVuY3Rpb24gdihDLHcsUyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHcpcmV0dXJuIHYoQyxudWxsLHcpO3d8fCh3PXt9KSxTPWZ1bmN0aW9uIGMoQyl7dmFyIHc9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXcpe3c9ITA7Zm9yKHZhciBT'@; put 'PWFyZ3VtZW50cy5sZW5ndGgsTD1uZXcgQXJyYXkoUyksUj0wO1I8UztSKyspTFtSXT1hcmd1bWVudHNbUl07Qy5hcHBseSh0aGlzLEwpfX19KFN8fHMpO3ZhciBMPXcucmVhZGFibGV8fCExIT09dy5yZWFkYWJsZSYmQy5yZWFkYWJsZSxSPXcud3JpdGFibGV8fCExIT09dy53cml0YWJsZSYm'@; put 'Qy53cml0YWJsZSx4PWZ1bmN0aW9uKCl7Qy53cml0YWJsZXx8SCgpfSxVPUMuX3dyaXRhYmxlU3RhdGUmJkMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsSD1mdW5jdGlvbigpe1I9ITEsVT0hMCxMfHxTLmNhbGwoQyl9LFY9Qy5fcmVhZGFibGVTdGF0ZSYmQy5fcmVhZGFibGVTdGF0ZS5lbmRF'@; put 'bWl0dGVkLE49ZnVuY3Rpb24oKXtMPSExLFY9ITAsUnx8Uy5jYWxsKEMpfSx6PWZ1bmN0aW9uKHEpe1MuY2FsbChDLHEpfSxZPWZ1bmN0aW9uKCl7dmFyIHE7cmV0dXJuIEwmJiFWPygoIUMuX3JlYWRhYmxlU3RhdGV8fCFDLl9yZWFkYWJsZVN0YXRlLmVuZGVkKSYmKHE9bmV3IHkpLFMuY2Fs'@; put 'bChDLHEpKTpSJiYhVT8oKCFDLl93cml0YWJsZVN0YXRlfHwhQy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkmJihxPW5ldyB5KSxTLmNhbGwoQyxxKSk6dm9pZCAwfSxGPWZ1bmN0aW9uKCl7Qy5yZXEub24oImZpbmlzaCIsSCl9O3JldHVybiBmdW5jdGlvbiBBKEMpe3JldHVybiBDLnNldEhlYWRl'@; put 'ciYmImZ1bmN0aW9uIj09dHlwZW9mIEMuYWJvcnR9KEMpPyhDLm9uKCJjb21wbGV0ZSIsSCksQy5vbigiYWJvcnQiLFkpLEMucmVxP0YoKTpDLm9uKCJyZXF1ZXN0IixGKSk6UiYmIUMuX3dyaXRhYmxlU3RhdGUmJihDLm9uKCJlbmQiLHgpLEMub24oImNsb3NlIix4KSksQy5vbigiZW5kIixO'@; put 'KSxDLm9uKCJmaW5pc2giLEgpLCExIT09dy5lcnJvciYmQy5vbigiZXJyb3IiLHopLEMub24oImNsb3NlIixZKSxmdW5jdGlvbigpe0MucmVtb3ZlTGlzdGVuZXIoImNvbXBsZXRlIixIKSxDLnJlbW92ZUxpc3RlbmVyKCJhYm9ydCIsWSksQy5yZW1vdmVMaXN0ZW5lcigicmVxdWVzdCIsRiks'@; put 'Qy5yZXEmJkMucmVxLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLEgpLEMucmVtb3ZlTGlzdGVuZXIoImVuZCIseCksQy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHgpLEMucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsSCksQy5yZW1vdmVMaXN0ZW5lcigiZW5kIixOKSxDLnJlbW92ZUxpc3RlbmVy'@; put 'KCJlcnJvciIseiksQy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFkpfX19LDg3NjU0KGZlKXtmZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXIiKX19LDk2MjQ5KGZlLGosaCl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciB5LHM9aCgyNjExMykuRixBPXMuRVJSX01JU1NJTkdfQVJHUyx2PXMuRVJSX1NUUkVBTV9ERVNUUk9ZRUQ7ZnVuY3Rpb24gQyhIKXtpZihIKXRocm93IEh9ZnVuY3Rpb24gTChIKXtIKCl9ZnVuY3Rpb24gUihILFYpe3JldHVybiBILnBpcGUoVil9ZmUuZXhwb3J0cz1mdW5jdGlv'@; put 'biBVKCl7Zm9yKHZhciBIPWFyZ3VtZW50cy5sZW5ndGgsVj1uZXcgQXJyYXkoSCksTj0wO048SDtOKyspVltOXT1hcmd1bWVudHNbTl07dmFyIHo9ZnVuY3Rpb24geChIKXtyZXR1cm4gSC5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBIW0gubGVuZ3RoLTFdP0gucG9wKCk6Q30oVik7aWYo'@; put 'QXJyYXkuaXNBcnJheShWWzBdKSYmKFY9VlswXSksVi5sZW5ndGg8Mil0aHJvdyBuZXcgQSgic3RyZWFtcyIpO3ZhciBZLEY9Vi5tYXAoZnVuY3Rpb24oVyxxKXt2YXIgcmU9cTxWLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbiBTKEgsVixOLHope3o9ZnVuY3Rpb24gYyhIKXt2YXIgVj0hMTty'@; put 'ZXR1cm4gZnVuY3Rpb24oKXtWfHwoVj0hMCxILmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KHopO3ZhciBZPSExO0gub24oImNsb3NlIixmdW5jdGlvbigpe1k9ITB9KSx2b2lkIDA9PT15JiYoeT1oKDMzMTM5KSkseShILHtyZWFkYWJsZTpWLHdyaXRhYmxlOk59LGZ1bmN0aW9uKFcpe2lm'@; put 'KFcpcmV0dXJuIHooVyk7WT0hMCx6KCl9KTt2YXIgRj0hMTtyZXR1cm4gZnVuY3Rpb24oVyl7aWYoIVkmJiFGKXtpZihGPSEwLGZ1bmN0aW9uIHcoSCl7cmV0dXJuIEguc2V0SGVhZGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgSC5hYm9ydH0oSCkpcmV0dXJuIEguYWJvcnQoKTtpZigiZnVuY3Rp'@; put 'b24iPT10eXBlb2YgSC5kZXN0cm95KXJldHVybiBILmRlc3Ryb3koKTt6KFd8fG5ldyB2KCJwaXBlIikpfX19KFcscmUscT4wLGZ1bmN0aW9uKENlKXtZfHwoWT1DZSksQ2UmJkYuZm9yRWFjaChMKSwhcmUmJihGLmZvckVhY2goTCkseihZKSl9KX0pO3JldHVybiBWLnJlZHVjZShSKX19LDQy'@; put 'OTM0KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjYxMTMpLkYuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO2ZlLmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24gcyhBLHYsQyx3KXt2YXIgUz1mdW5jdGlvbiBjKEEsdixDKXtyZXR1cm4gbnVsbCE9QS5oaWdoV2F0ZXJNYXJr'@; put 'P0EuaGlnaFdhdGVyTWFyazp2P0FbQ106bnVsbH0odix3LEMpO2lmKG51bGwhPVMpe2lmKCFpc0Zpbml0ZShTKXx8TWF0aC5mbG9vcihTKSE9PVN8fFM8MCl0aHJvdyBuZXcgeSh3P0M6ImhpZ2hXYXRlck1hcmsiLFMpO3JldHVybiBNYXRoLmZsb29yKFMpfXJldHVybiBBLm9iamVjdE1vZGU/'@; put 'MTY6MTYzODR9fX0sMTgzNDIoZmUsaixoKXtmZS5leHBvcnRzPWgoNDQzNTYpLkV2ZW50RW1pdHRlcn0sNTM5MTYoZmUsail7dmFyIGgsYzt0eXBlb2Ygc2VsZjwidSImJnNlbGYsdm9pZCAwIT09KGM9ImZ1bmN0aW9uIj09dHlwZW9mKGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKCl7fXMucHJv'@; put 'dG90eXBlLnNhdmVTdGF0ZT1mdW5jdGlvbigpe3JldHVybntpZHg6dGhpcy5pZHgsaW5wdXQ6dGhpcy5pbnB1dCxncm91cElkeDp0aGlzLmdyb3VwSWR4fX0scy5wcm90b3R5cGUucmVzdG9yZVN0YXRlPWZ1bmN0aW9uKFkpe3RoaXMuaWR4PVkuaWR4LHRoaXMuaW5wdXQ9WS5pbnB1dCx0aGlz'@; put 'Lmdyb3VwSWR4PVkuZ3JvdXBJZHh9LHMucHJvdG90eXBlLnBhdHRlcm49ZnVuY3Rpb24oWSl7dGhpcy5pZHg9MCx0aGlzLmlucHV0PVksdGhpcy5ncm91cElkeD0wLHRoaXMuY29uc3VtZUNoYXIoIi8iKTt2YXIgRj10aGlzLmRpc2p1bmN0aW9uKCk7dGhpcy5jb25zdW1lQ2hhcigiLyIpO2Zv'@; put 'cih2YXIgVz17dHlwZToiRmxhZ3MiLGdsb2JhbDohMSxpZ25vcmVDYXNlOiExLG11bHRpTGluZTohMSx1bmljb2RlOiExLHN0aWNreTohMX07dGhpcy5pc1JlZ0V4cEZsYWcoKTspc3dpdGNoKHRoaXMucG9wQ2hhcigpKXtjYXNlImciOkwoVywiZ2xvYmFsIik7YnJlYWs7Y2FzZSJpIjpMKFcs'@; put 'Imlnbm9yZUNhc2UiKTticmVhaztjYXNlIm0iOkwoVywibXVsdGlMaW5lIik7YnJlYWs7Y2FzZSJ1IjpMKFcsInVuaWNvZGUiKTticmVhaztjYXNlInkiOkwoVywic3RpY2t5Iil9aWYodGhpcy5pZHghPT10aGlzLmlucHV0Lmxlbmd0aCl0aHJvdyBFcnJvcigiUmVkdW5kYW50IGlucHV0OiAi'@; put 'K3RoaXMuaW5wdXQuc3Vic3RyaW5nKHRoaXMuaWR4KSk7cmV0dXJue3R5cGU6IlBhdHRlcm4iLGZsYWdzOlcsdmFsdWU6Rn19LHMucHJvdG90eXBlLmRpc2p1bmN0aW9uPWZ1bmN0aW9uKCl7dmFyIFk9W107Zm9yKFkucHVzaCh0aGlzLmFsdGVybmF0aXZlKCkpOyJ8Ij09PXRoaXMucGVla0No'@; put 'YXIoKTspdGhpcy5jb25zdW1lQ2hhcigifCIpLFkucHVzaCh0aGlzLmFsdGVybmF0aXZlKCkpO3JldHVybnt0eXBlOiJEaXNqdW5jdGlvbiIsdmFsdWU6WX19LHMucHJvdG90eXBlLmFsdGVybmF0aXZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBZPVtdO3RoaXMuaXNUZXJtKCk7KVkucHVzaCh0aGlz'@; put 'LnRlcm0oKSk7cmV0dXJue3R5cGU6IkFsdGVybmF0aXZlIix2YWx1ZTpZfX0scy5wcm90b3R5cGUudGVybT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQXNzZXJ0aW9uKCk/dGhpcy5hc3NlcnRpb24oKTp0aGlzLmF0b20oKX0scy5wcm90b3R5cGUuYXNzZXJ0aW9uPWZ1bmN0aW9uKCl7c3dp'@; put 'dGNoKHRoaXMucG9wQ2hhcigpKXtjYXNlIl4iOnJldHVybnt0eXBlOiJTdGFydEFuY2hvciJ9O2Nhc2UiJCI6cmV0dXJue3R5cGU6IkVuZEFuY2hvciJ9O2Nhc2UiXFwiOnN3aXRjaCh0aGlzLnBvcENoYXIoKSl7Y2FzZSJiIjpyZXR1cm57dHlwZToiV29yZEJvdW5kYXJ5In07Y2FzZSJCIjpy'@; put 'ZXR1cm57dHlwZToiTm9uV29yZEJvdW5kYXJ5In19dGhyb3cgRXJyb3IoIkludmFsaWQgQXNzZXJ0aW9uIEVzY2FwZSIpO2Nhc2UiKCI6dmFyIFk7c3dpdGNoKHRoaXMuY29uc3VtZUNoYXIoIj8iKSx0aGlzLnBvcENoYXIoKSl7Y2FzZSI9IjpZPSJMb29rYWhlYWQiO2JyZWFrO2Nhc2UiISI6'@; put 'WT0iTmVnYXRpdmVMb29rYWhlYWQifVIoWSk7dmFyIEY9dGhpcy5kaXNqdW5jdGlvbigpO3JldHVybiB0aGlzLmNvbnN1bWVDaGFyKCIpIikse3R5cGU6WSx2YWx1ZTpGfX0hZnVuY3Rpb24geCgpe3Rocm93IEVycm9yKCJJbnRlcm5hbCBFcnJvciAtIFNob3VsZCBuZXZlciBnZXQgaGVyZSEi'@; put 'KX0oKX0scy5wcm90b3R5cGUucXVhbnRpZmllcj1mdW5jdGlvbihZKXt2YXIgRjtzd2l0Y2godGhpcy5wb3BDaGFyKCkpe2Nhc2UiKiI6Rj17YXRMZWFzdDowLGF0TW9zdDoxLzB9O2JyZWFrO2Nhc2UiKyI6Rj17YXRMZWFzdDoxLGF0TW9zdDoxLzB9O2JyZWFrO2Nhc2UiPyI6Rj17YXRMZWFz'@; put 'dDowLGF0TW9zdDoxfTticmVhaztjYXNlInsiOnZhciBXPXRoaXMuaW50ZWdlckluY2x1ZGluZ1plcm8oKTtzd2l0Y2godGhpcy5wb3BDaGFyKCkpe2Nhc2UifSI6Rj17YXRMZWFzdDpXLGF0TW9zdDpXfTticmVhaztjYXNlIiwiOkY9dGhpcy5pc0RpZ2l0KCk/e2F0TGVhc3Q6VyxhdE1vc3Q6'@; put 'dGhpcy5pbnRlZ2VySW5jbHVkaW5nWmVybygpfTp7YXRMZWFzdDpXLGF0TW9zdDoxLzB9LHRoaXMuY29uc3VtZUNoYXIoIn0iKX1pZighMD09PVkmJnZvaWQgMD09PUYpcmV0dXJuO1IoRil9aWYoITAhPT1ZfHx2b2lkIDAhPT1GKXJldHVybiBSKEYpLCI/Ij09PXRoaXMucGVla0NoYXIoMCk/'@; put 'KHRoaXMuY29uc3VtZUNoYXIoIj8iKSxGLmdyZWVkeT0hMSk6Ri5ncmVlZHk9ITAsRi50eXBlPSJRdWFudGlmaWVyIixGfSxzLnByb3RvdHlwZS5hdG9tPWZ1bmN0aW9uKCl7dmFyIFk7c3dpdGNoKHRoaXMucGVla0NoYXIoKSl7Y2FzZSIuIjpZPXRoaXMuZG90QWxsKCk7YnJlYWs7Y2FzZSJc'@; put 'XCI6WT10aGlzLmF0b21Fc2NhcGUoKTticmVhaztjYXNlIlsiOlk9dGhpcy5jaGFyYWN0ZXJDbGFzcygpO2JyZWFrO2Nhc2UiKCI6WT10aGlzLmdyb3VwKCl9cmV0dXJuIHZvaWQgMD09PVkmJnRoaXMuaXNQYXR0ZXJuQ2hhcmFjdGVyKCkmJihZPXRoaXMucGF0dGVybkNoYXJhY3RlcigpKSxS'@; put 'KFkpLHRoaXMuaXNRdWFudGlmaWVyKCkmJihZLnF1YW50aWZpZXI9dGhpcy5xdWFudGlmaWVyKCkpLFl9LHMucHJvdG90eXBlLmRvdEFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN1bWVDaGFyKCIuIikse3R5cGU6IlNldCIsY29tcGxlbWVudDohMCx2YWx1ZTpbdygiXG4iKSx3KCJc'@; put 'ciIpLHcoIlx1MjAyOCIpLHcoIlx1MjAyOSIpXX19LHMucHJvdG90eXBlLmF0b21Fc2NhcGU9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jb25zdW1lQ2hhcigiXFwiKSx0aGlzLnBlZWtDaGFyKCkpe2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2Ui'@; put 'NyI6Y2FzZSI4IjpjYXNlIjkiOnJldHVybiB0aGlzLmRlY2ltYWxFc2NhcGVBdG9tKCk7Y2FzZSJkIjpjYXNlIkQiOmNhc2UicyI6Y2FzZSJTIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIHRoaXMuY2hhcmFjdGVyQ2xhc3NFc2NhcGUoKTtjYXNlImYiOmNhc2UibiI6Y2FzZSJyIjpjYXNlInQi'@; put 'OmNhc2UidiI6cmV0dXJuIHRoaXMuY29udHJvbEVzY2FwZUF0b20oKTtjYXNlImMiOnJldHVybiB0aGlzLmNvbnRyb2xMZXR0ZXJFc2NhcGVBdG9tKCk7Y2FzZSIwIjpyZXR1cm4gdGhpcy5udWxDaGFyYWN0ZXJBdG9tKCk7Y2FzZSJ4IjpyZXR1cm4gdGhpcy5oZXhFc2NhcGVTZXF1ZW5jZUF0'@; put 'b20oKTtjYXNlInUiOnJldHVybiB0aGlzLnJlZ0V4cFVuaWNvZGVFc2NhcGVTZXF1ZW5jZUF0b20oKTtkZWZhdWx0OnJldHVybiB0aGlzLmlkZW50aXR5RXNjYXBlQXRvbSgpfX0scy5wcm90b3R5cGUuZGVjaW1hbEVzY2FwZUF0b209ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiR3JvdXBCYWNr'@; put 'UmVmZXJlbmNlIix2YWx1ZTp0aGlzLnBvc2l0aXZlSW50ZWdlcigpfX0scy5wcm90b3R5cGUuY2hhcmFjdGVyQ2xhc3NFc2NhcGU9ZnVuY3Rpb24oKXt2YXIgWSxGPSExO3N3aXRjaCh0aGlzLnBvcENoYXIoKSl7Y2FzZSJkIjpZPUg7YnJlYWs7Y2FzZSJEIjpZPUgsRj0hMDticmVhaztjYXNl'@; put 'InMiOlk9TjticmVhaztjYXNlIlMiOlk9TixGPSEwO2JyZWFrO2Nhc2UidyI6WT1WO2JyZWFrO2Nhc2UiVyI6WT1WLEY9ITB9cmV0dXJuIFIoWSkse3R5cGU6IlNldCIsdmFsdWU6WSxjb21wbGVtZW50OkZ9fSxzLnByb3RvdHlwZS5jb250cm9sRXNjYXBlQXRvbT1mdW5jdGlvbigpe3ZhciBZ'@; put 'O3N3aXRjaCh0aGlzLnBvcENoYXIoKSl7Y2FzZSJmIjpZPXcoIlxmIik7YnJlYWs7Y2FzZSJuIjpZPXcoIlxuIik7YnJlYWs7Y2FzZSJyIjpZPXcoIlxyIik7YnJlYWs7Y2FzZSJ0IjpZPXcoIlx0Iik7YnJlYWs7Y2FzZSJ2IjpZPXcoIlx2Iil9cmV0dXJuIFIoWSkse3R5cGU6IkNoYXJhY3Rl'@; put 'ciIsdmFsdWU6WX19LHMucHJvdG90eXBlLmNvbnRyb2xMZXR0ZXJFc2NhcGVBdG9tPWZ1bmN0aW9uKCl7dGhpcy5jb25zdW1lQ2hhcigiYyIpO3ZhciBZPXRoaXMucG9wQ2hhcigpO2lmKCExPT09L1thLXpBLVpdLy50ZXN0KFkpKXRocm93IEVycm9yKCJJbnZhbGlkICIpO3JldHVybnt0eXBl'@; put 'OiJDaGFyYWN0ZXIiLHZhbHVlOlkudG9VcHBlckNhc2UoKS5jaGFyQ29kZUF0KDApLTY0fX0scy5wcm90b3R5cGUubnVsQ2hhcmFjdGVyQXRvbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN1bWVDaGFyKCIwIikse3R5cGU6IkNoYXJhY3RlciIsdmFsdWU6dygiXDAiKX19LHMucHJvdG90'@; put 'eXBlLmhleEVzY2FwZVNlcXVlbmNlQXRvbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN1bWVDaGFyKCJ4IiksdGhpcy5wYXJzZUhleERpZ2l0cygyKX0scy5wcm90b3R5cGUucmVnRXhwVW5pY29kZUVzY2FwZVNlcXVlbmNlQXRvbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN1bWVD'@; put 'aGFyKCJ1IiksdGhpcy5wYXJzZUhleERpZ2l0cyg0KX0scy5wcm90b3R5cGUuaWRlbnRpdHlFc2NhcGVBdG9tPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkNoYXJhY3RlciIsdmFsdWU6dyh0aGlzLnBvcENoYXIoKSl9fSxzLnByb3RvdHlwZS5jbGFzc1BhdHRlcm5DaGFyYWN0ZXJBdG9tPWZ1'@; put 'bmN0aW9uKCl7c3dpdGNoKHRoaXMucGVla0NoYXIoKSl7Y2FzZSJcbiI6Y2FzZSJcciI6Y2FzZSJcdTIwMjgiOmNhc2UiXHUyMDI5IjpjYXNlIlxcIjpjYXNlIl0iOnRocm93IEVycm9yKCJUQkQiKTtkZWZhdWx0OnJldHVybnt0eXBlOiJDaGFyYWN0ZXIiLHZhbHVlOncodGhpcy5wb3BDaGFy'@; put 'KCkpfX19LHMucHJvdG90eXBlLmNoYXJhY3RlckNsYXNzPWZ1bmN0aW9uKCl7dmFyIFk9W10sRj0hMTtmb3IodGhpcy5jb25zdW1lQ2hhcigiWyIpLCJeIj09PXRoaXMucGVla0NoYXIoMCkmJih0aGlzLmNvbnN1bWVDaGFyKCJeIiksRj0hMCk7dGhpcy5pc0NsYXNzQXRvbSgpOyl7dmFyIFc9'@; put 'dGhpcy5jbGFzc0F0b20oKTtpZigiQ2hhcmFjdGVyIj09PVcudHlwZSYmdGhpcy5pc1JhbmdlRGFzaCgpKXt0aGlzLmNvbnN1bWVDaGFyKCItIik7dmFyIHJlPXRoaXMuY2xhc3NBdG9tKCk7aWYoIkNoYXJhY3RlciI9PT1yZS50eXBlKXtpZihyZS52YWx1ZTxXLnZhbHVlKXRocm93IEVycm9y'@; put 'KCJSYW5nZSBvdXQgb2Ygb3JkZXIgaW4gY2hhcmFjdGVyIGNsYXNzIik7WS5wdXNoKHtmcm9tOlcudmFsdWUsdG86cmUudmFsdWV9KX1lbHNlIFMoVy52YWx1ZSxZKSxZLnB1c2godygiLSIpKSxTKHJlLnZhbHVlLFkpfWVsc2UgUyhXLnZhbHVlLFkpfXJldHVybiB0aGlzLmNvbnN1bWVDaGFy'@; put 'KCJdIikse3R5cGU6IlNldCIsY29tcGxlbWVudDpGLHZhbHVlOll9fSxzLnByb3RvdHlwZS5jbGFzc0F0b209ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5wZWVrQ2hhcigpKXtjYXNlIl0iOmNhc2UiXG4iOmNhc2UiXHIiOmNhc2UiXHUyMDI4IjpjYXNlIlx1MjAyOSI6dGhyb3cgRXJyb3IoIlRC'@; put 'RCIpO2Nhc2UiXFwiOnJldHVybiB0aGlzLmNsYXNzRXNjYXBlKCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbGFzc1BhdHRlcm5DaGFyYWN0ZXJBdG9tKCl9fSxzLnByb3RvdHlwZS5jbGFzc0VzY2FwZT1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLmNvbnN1bWVDaGFyKCJcXCIpLHRoaXMucGVla0No'@; put 'YXIoKSl7Y2FzZSJiIjpyZXR1cm4gdGhpcy5jb25zdW1lQ2hhcigiYiIpLHt0eXBlOiJDaGFyYWN0ZXIiLHZhbHVlOncoIlxiIil9O2Nhc2UiZCI6Y2FzZSJEIjpjYXNlInMiOmNhc2UiUyI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiB0aGlzLmNoYXJhY3RlckNsYXNzRXNjYXBlKCk7Y2FzZSJm'@; put 'IjpjYXNlIm4iOmNhc2UiciI6Y2FzZSJ0IjpjYXNlInYiOnJldHVybiB0aGlzLmNvbnRyb2xFc2NhcGVBdG9tKCk7Y2FzZSJjIjpyZXR1cm4gdGhpcy5jb250cm9sTGV0dGVyRXNjYXBlQXRvbSgpO2Nhc2UiMCI6cmV0dXJuIHRoaXMubnVsQ2hhcmFjdGVyQXRvbSgpO2Nhc2UieCI6cmV0dXJu'@; put 'IHRoaXMuaGV4RXNjYXBlU2VxdWVuY2VBdG9tKCk7Y2FzZSJ1IjpyZXR1cm4gdGhpcy5yZWdFeHBVbmljb2RlRXNjYXBlU2VxdWVuY2VBdG9tKCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5pZGVudGl0eUVzY2FwZUF0b20oKX19LHMucHJvdG90eXBlLmdyb3VwPWZ1bmN0aW9uKCl7dmFyIFk9ITA7'@; put 'dGhpcy5jb25zdW1lQ2hhcigiKCIpLCI/Ij09PXRoaXMucGVla0NoYXIoMCk/KHRoaXMuY29uc3VtZUNoYXIoIj8iKSx0aGlzLmNvbnN1bWVDaGFyKCI6IiksWT0hMSk6dGhpcy5ncm91cElkeCsrO3ZhciBGPXRoaXMuZGlzanVuY3Rpb24oKTt0aGlzLmNvbnN1bWVDaGFyKCIpIik7dmFyIFc9'@; put 'e3R5cGU6Ikdyb3VwIixjYXB0dXJpbmc6WSx2YWx1ZTpGfTtyZXR1cm4gWSYmKFcuaWR4PXRoaXMuZ3JvdXBJZHgpLFd9LHMucHJvdG90eXBlLnBvc2l0aXZlSW50ZWdlcj1mdW5jdGlvbigpe3ZhciBZPXRoaXMucG9wQ2hhcigpO2lmKCExPT09Qy50ZXN0KFkpKXRocm93IEVycm9yKCJFeHBl'@; put 'Y3RpbmcgYSBwb3NpdGl2ZSBpbnRlZ2VyIik7Zm9yKDt2LnRlc3QodGhpcy5wZWVrQ2hhcigwKSk7KVkrPXRoaXMucG9wQ2hhcigpO3JldHVybiBwYXJzZUludChZLDEwKX0scy5wcm90b3R5cGUuaW50ZWdlckluY2x1ZGluZ1plcm89ZnVuY3Rpb24oKXt2YXIgWT10aGlzLnBvcENoYXIoKTtp'@; put 'ZighMT09PXYudGVzdChZKSl0aHJvdyBFcnJvcigiRXhwZWN0aW5nIGFuIGludGVnZXIiKTtmb3IoO3YudGVzdCh0aGlzLnBlZWtDaGFyKDApKTspWSs9dGhpcy5wb3BDaGFyKCk7cmV0dXJuIHBhcnNlSW50KFksMTApfSxzLnByb3RvdHlwZS5wYXR0ZXJuQ2hhcmFjdGVyPWZ1bmN0aW9uKCl7'@; put 'dmFyIFk9dGhpcy5wb3BDaGFyKCk7c3dpdGNoKFkpe2Nhc2UiXG4iOmNhc2UiXHIiOmNhc2UiXHUyMDI4IjpjYXNlIlx1MjAyOSI6Y2FzZSJeIjpjYXNlIiQiOmNhc2UiXFwiOmNhc2UiLiI6Y2FzZSIqIjpjYXNlIisiOmNhc2UiPyI6Y2FzZSIoIjpjYXNlIikiOmNhc2UiWyI6Y2FzZSJ8Ijp0'@; put 'aHJvdyBFcnJvcigiVEJEIik7ZGVmYXVsdDpyZXR1cm57dHlwZToiQ2hhcmFjdGVyIix2YWx1ZTp3KFkpfX19LHMucHJvdG90eXBlLmlzUmVnRXhwRmxhZz1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLnBlZWtDaGFyKDApKXtjYXNlImciOmNhc2UiaSI6Y2FzZSJtIjpjYXNlInUiOmNhc2UieSI6'@; put 'cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LHMucHJvdG90eXBlLmlzUmFuZ2VEYXNoPWZ1bmN0aW9uKCl7cmV0dXJuIi0iPT09dGhpcy5wZWVrQ2hhcigpJiZ0aGlzLmlzQ2xhc3NBdG9tKDEpfSxzLnByb3RvdHlwZS5pc0RpZ2l0PWZ1bmN0aW9uKCl7cmV0dXJuIHYudGVzdCh0aGlzLnBl'@; put 'ZWtDaGFyKDApKX0scy5wcm90b3R5cGUuaXNDbGFzc0F0b209ZnVuY3Rpb24oWSl7c3dpdGNoKHZvaWQgMD09PVkmJihZPTApLHRoaXMucGVla0NoYXIoWSkpe2Nhc2UiXSI6Y2FzZSJcbiI6Y2FzZSJcciI6Y2FzZSJcdTIwMjgiOmNhc2UiXHUyMDI5IjpyZXR1cm4hMTtkZWZhdWx0OnJldHVy'@; put 'biEwfX0scy5wcm90b3R5cGUuaXNUZXJtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNBdG9tKCl8fHRoaXMuaXNBc3NlcnRpb24oKX0scy5wcm90b3R5cGUuaXNBdG9tPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1BhdHRlcm5DaGFyYWN0ZXIoKSlyZXR1cm4hMDtzd2l0Y2godGhpcy5wZWVrQ2hh'@; put 'cigwKSl7Y2FzZSIuIjpjYXNlIlxcIjpjYXNlIlsiOmNhc2UiKCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LHMucHJvdG90eXBlLmlzQXNzZXJ0aW9uPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMucGVla0NoYXIoMCkpe2Nhc2UiXiI6Y2FzZSIkIjpyZXR1cm4hMDtjYXNlIlxcIjpzd2l0'@; put 'Y2godGhpcy5wZWVrQ2hhcigxKSl7Y2FzZSJiIjpjYXNlIkIiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9Y2FzZSIoIjpyZXR1cm4iPyI9PT10aGlzLnBlZWtDaGFyKDEpJiYoIj0iPT09dGhpcy5wZWVrQ2hhcigyKXx8IiEiPT09dGhpcy5wZWVrQ2hhcigyKSk7ZGVmYXVsdDpyZXR1cm4h'@; put 'MX19LHMucHJvdG90eXBlLmlzUXVhbnRpZmllcj1mdW5jdGlvbigpe3ZhciBZPXRoaXMuc2F2ZVN0YXRlKCk7dHJ5e3JldHVybiB2b2lkIDAhPT10aGlzLnF1YW50aWZpZXIoITApfWNhdGNoe3JldHVybiExfWZpbmFsbHl7dGhpcy5yZXN0b3JlU3RhdGUoWSl9fSxzLnByb3RvdHlwZS5pc1Bh'@; put 'dHRlcm5DaGFyYWN0ZXI9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5wZWVrQ2hhcigpKXtjYXNlIl4iOmNhc2UiJCI6Y2FzZSJcXCI6Y2FzZSIuIjpjYXNlIioiOmNhc2UiKyI6Y2FzZSI/IjpjYXNlIigiOmNhc2UiKSI6Y2FzZSJbIjpjYXNlInwiOmNhc2UiLyI6Y2FzZSJcbiI6Y2FzZSJcciI6'@; put 'Y2FzZSJcdTIwMjgiOmNhc2UiXHUyMDI5IjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0scy5wcm90b3R5cGUucGFyc2VIZXhEaWdpdHM9ZnVuY3Rpb24oWSl7Zm9yKHZhciBGPSIiLFc9MDtXPFk7VysrKXt2YXIgcT10aGlzLnBvcENoYXIoKTtpZighMT09PUEudGVzdChxKSl0aHJvdyBF'@; put 'cnJvcigiRXhwZWN0aW5nIGEgSGV4RGVjaW1hbCBkaWdpdHMiKTtGKz1xfXJldHVybnt0eXBlOiJDaGFyYWN0ZXIiLHZhbHVlOnBhcnNlSW50KEYsMTYpfX0scy5wcm90b3R5cGUucGVla0NoYXI9ZnVuY3Rpb24oWSl7cmV0dXJuIHZvaWQgMD09PVkmJihZPTApLHRoaXMuaW5wdXRbdGhpcy5p'@; put 'ZHgrWV19LHMucHJvdG90eXBlLnBvcENoYXI9ZnVuY3Rpb24oKXt2YXIgWT10aGlzLnBlZWtDaGFyKDApO3JldHVybiB0aGlzLmNvbnN1bWVDaGFyKCksWX0scy5wcm90b3R5cGUuY29uc3VtZUNoYXI9ZnVuY3Rpb24oWSl7aWYodm9pZCAwIT09WSYmdGhpcy5pbnB1dFt0aGlzLmlkeF0hPT1Z'@; put 'KXRocm93IEVycm9yKCJFeHBlY3RlZDogJyIrWSsiJyBidXQgZm91bmQ6ICciK3RoaXMuaW5wdXRbdGhpcy5pZHhdKyInIGF0IG9mZnNldDogIit0aGlzLmlkeCk7aWYodGhpcy5pZHg+PXRoaXMuaW5wdXQubGVuZ3RoKXRocm93IEVycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpO3Ro'@; put 'aXMuaWR4Kyt9O3ZhciBBPS9bMC05YS1mQS1GXS8sdj0vWzAtOV0vLEM9L1sxLTldLztmdW5jdGlvbiB3KFkpe3JldHVybiBZLmNoYXJDb2RlQXQoMCl9ZnVuY3Rpb24gUyhZLEYpe3ZvaWQgMCE9PVkubGVuZ3RoP1kuZm9yRWFjaChmdW5jdGlvbihXKXtGLnB1c2goVyl9KTpGLnB1c2goWSl9'@; put 'ZnVuY3Rpb24gTChZLEYpe2lmKCEwPT09WVtGXSl0aHJvdyJkdXBsaWNhdGUgZmxhZyAiK0Y7WVtGXT0hMH1mdW5jdGlvbiBSKFkpe2lmKHZvaWQgMD09PVkpdGhyb3cgRXJyb3IoIkludGVybmFsIEVycm9yIC0gU2hvdWxkIG5ldmVyIGdldCBoZXJlISIpfXZhciBVLEg9W107Zm9yKFU9dygi'@; put 'MCIpO1U8PXcoIjkiKTtVKyspSC5wdXNoKFUpO3ZhciBWPVt3KCJfIildLmNvbmNhdChIKTtmb3IoVT13KCJhIik7VTw9dygieiIpO1UrKylWLnB1c2goVSk7Zm9yKFU9dygiQSIpO1U8PXcoIloiKTtVKyspVi5wdXNoKFUpO3ZhciBOPVt3KCIgIiksdygiXGYiKSx3KCJcbiIpLHcoIlxyIiks'@; put 'dygiXHQiKSx3KCJcdiIpLHcoIlx0IiksdygiXHhhMCIpLHcoIlx1MTY4MCIpLHcoIlx1MjAwMCIpLHcoIlx1MjAwMSIpLHcoIlx1MjAwMiIpLHcoIlx1MjAwMyIpLHcoIlx1MjAwNCIpLHcoIlx1MjAwNSIpLHcoIlx1MjAwNiIpLHcoIlx1MjAwNyIpLHcoIlx1MjAwOCIpLHcoIlx1MjAwOSIp'@; put 'LHcoIlx1MjAwYSIpLHcoIlx1MjAyOCIpLHcoIlx1MjAyOSIpLHcoIlx1MjAyZiIpLHcoIlx1MjA1ZiIpLHcoIlx1MzAwMCIpLHcoIlx1ZmVmZiIpXTtmdW5jdGlvbiB6KCl7fXJldHVybiB6LnByb3RvdHlwZS52aXNpdENoaWxkcmVuPWZ1bmN0aW9uKFkpe2Zvcih2YXIgRiBpbiBZKXt2YXIg'@; put 'Vz1ZW0ZdO1kuaGFzT3duUHJvcGVydHkoRikmJih2b2lkIDAhPT1XLnR5cGU/dGhpcy52aXNpdChXKTpBcnJheS5pc0FycmF5KFcpJiZXLmZvckVhY2goZnVuY3Rpb24ocSl7dGhpcy52aXNpdChxKX0sdGhpcykpfX0sei5wcm90b3R5cGUudmlzaXQ9ZnVuY3Rpb24oWSl7c3dpdGNoKFkudHlw'@; put 'ZSl7Y2FzZSJQYXR0ZXJuIjp0aGlzLnZpc2l0UGF0dGVybihZKTticmVhaztjYXNlIkZsYWdzIjp0aGlzLnZpc2l0RmxhZ3MoWSk7YnJlYWs7Y2FzZSJEaXNqdW5jdGlvbiI6dGhpcy52aXNpdERpc2p1bmN0aW9uKFkpO2JyZWFrO2Nhc2UiQWx0ZXJuYXRpdmUiOnRoaXMudmlzaXRBbHRlcm5h'@; put 'dGl2ZShZKTticmVhaztjYXNlIlN0YXJ0QW5jaG9yIjp0aGlzLnZpc2l0U3RhcnRBbmNob3IoWSk7YnJlYWs7Y2FzZSJFbmRBbmNob3IiOnRoaXMudmlzaXRFbmRBbmNob3IoWSk7YnJlYWs7Y2FzZSJXb3JkQm91bmRhcnkiOnRoaXMudmlzaXRXb3JkQm91bmRhcnkoWSk7YnJlYWs7Y2FzZSJO'@; put 'b25Xb3JkQm91bmRhcnkiOnRoaXMudmlzaXROb25Xb3JkQm91bmRhcnkoWSk7YnJlYWs7Y2FzZSJMb29rYWhlYWQiOnRoaXMudmlzaXRMb29rYWhlYWQoWSk7YnJlYWs7Y2FzZSJOZWdhdGl2ZUxvb2thaGVhZCI6dGhpcy52aXNpdE5lZ2F0aXZlTG9va2FoZWFkKFkpO2JyZWFrO2Nhc2UiQ2hh'@; put 'cmFjdGVyIjp0aGlzLnZpc2l0Q2hhcmFjdGVyKFkpO2JyZWFrO2Nhc2UiU2V0Ijp0aGlzLnZpc2l0U2V0KFkpO2JyZWFrO2Nhc2UiR3JvdXAiOnRoaXMudmlzaXRHcm91cChZKTticmVhaztjYXNlIkdyb3VwQmFja1JlZmVyZW5jZSI6dGhpcy52aXNpdEdyb3VwQmFja1JlZmVyZW5jZShZKTti'@; put 'cmVhaztjYXNlIlF1YW50aWZpZXIiOnRoaXMudmlzaXRRdWFudGlmaWVyKFkpfXRoaXMudmlzaXRDaGlsZHJlbihZKX0sei5wcm90b3R5cGUudmlzaXRQYXR0ZXJuPWZ1bmN0aW9uKFkpe30sei5wcm90b3R5cGUudmlzaXRGbGFncz1mdW5jdGlvbihZKXt9LHoucHJvdG90eXBlLnZpc2l0RGlz'@; put 'anVuY3Rpb249ZnVuY3Rpb24oWSl7fSx6LnByb3RvdHlwZS52aXNpdEFsdGVybmF0aXZlPWZ1bmN0aW9uKFkpe30sei5wcm90b3R5cGUudmlzaXRTdGFydEFuY2hvcj1mdW5jdGlvbihZKXt9LHoucHJvdG90eXBlLnZpc2l0RW5kQW5jaG9yPWZ1bmN0aW9uKFkpe30sei5wcm90b3R5cGUudmlz'@; put 'aXRXb3JkQm91bmRhcnk9ZnVuY3Rpb24oWSl7fSx6LnByb3RvdHlwZS52aXNpdE5vbldvcmRCb3VuZGFyeT1mdW5jdGlvbihZKXt9LHoucHJvdG90eXBlLnZpc2l0TG9va2FoZWFkPWZ1bmN0aW9uKFkpe30sei5wcm90b3R5cGUudmlzaXROZWdhdGl2ZUxvb2thaGVhZD1mdW5jdGlvbihZKXt9'@; put 'LHoucHJvdG90eXBlLnZpc2l0Q2hhcmFjdGVyPWZ1bmN0aW9uKFkpe30sei5wcm90b3R5cGUudmlzaXRTZXQ9ZnVuY3Rpb24oWSl7fSx6LnByb3RvdHlwZS52aXNpdEdyb3VwPWZ1bmN0aW9uKFkpe30sei5wcm90b3R5cGUudmlzaXRHcm91cEJhY2tSZWZlcmVuY2U9ZnVuY3Rpb24oWSl7fSx6'@; put 'LnByb3RvdHlwZS52aXNpdFF1YW50aWZpZXI9ZnVuY3Rpb24oWSl7fSx7UmVnRXhwUGFyc2VyOnMsQmFzZVJlZ0V4cFZpc2l0b3I6eixWRVJTSU9OOiIwLjQuMCJ9fSk/aC5hcHBseShqLFtdKTpoKSYmKGZlLmV4cG9ydHM9Yyl9LDM2NjM2KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgo'@; put 'ODM4MzgpLkJ1ZmZlcixjPWgoNzE5OTMpLHM9aCgxMzY4NiksQT1uZXcgQXJyYXkoMTYpLHY9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1'@; put 'LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10sQz1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUs'@; put 'MSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSx3PVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEs'@; put 'OSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxTPVs4LDksOSwxMSwxMywx'@; put 'NSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2'@; put 'LDgsMTMsNiw1LDE1LDEzLDExLDExXSxMPVswLDE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDI4NDA4NTM4MzhdLFI9WzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF07ZnVuY3Rpb24geChGLFcpe3JldHVybiBGPDxXfEY+Pj4zMi1XfWZ1bmN0'@; put 'aW9uIFUoRixXLHEscmUsbWUsQ2UsSWUsa2Upe3JldHVybiB4KEYrKFdecV5yZSkrQ2UrSWV8MCxrZSkrbWV8MH1mdW5jdGlvbiBIKEYsVyxxLHJlLG1lLENlLEllLGtlKXtyZXR1cm4geChGKyhXJnF8flcmcmUpK0NlK0llfDAsa2UpK21lfDB9ZnVuY3Rpb24gVihGLFcscSxyZSxtZSxDZSxJ'@; put 'ZSxrZSl7cmV0dXJuIHgoRisoKFd8fnEpXnJlKStDZStJZXwwLGtlKSttZXwwfWZ1bmN0aW9uIE4oRixXLHEscmUsbWUsQ2UsSWUsa2Upe3JldHVybiB4KEYrKFcmcmV8cSZ+cmUpK0NlK0llfDAsa2UpK21lfDB9ZnVuY3Rpb24geihGLFcscSxyZSxtZSxDZSxJZSxrZSl7cmV0dXJuIHgoRiso'@; put 'V14ocXx+cmUpKStDZStJZXwwLGtlKSttZXwwfWZ1bmN0aW9uIFkoKXtzLmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwfWMoWSxzKSxZLnByb3Rv'@; put 'dHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBGPUEsVz0wO1c8MTY7KytXKUZbV109dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCpXKTtmb3IodmFyIHE9MHx0aGlzLl9hLHJlPTB8dGhpcy5fYixtZT0wfHRoaXMuX2MsQ2U9MHx0aGlzLl9kLEllPTB8dGhpcy5fZSxrZT0wfHRoaXMu'@; put 'X2EscWU9MHx0aGlzLl9iLFg9MHx0aGlzLl9jLGY9MHx0aGlzLl9kLGI9MHx0aGlzLl9lLGs9MDtrPDgwO2srPTEpe3ZhciBNLEI7azwxNj8oTT1VKHEscmUsbWUsQ2UsSWUsRlt2W2tdXSxMWzBdLHdba10pLEI9eihrZSxxZSxYLGYsYixGW0Nba11dLFJbMF0sU1trXSkpOms8MzI/KE09SChx'@; put 'LHJlLG1lLENlLEllLEZbdltrXV0sTFsxXSx3W2tdKSxCPU4oa2UscWUsWCxmLGIsRltDW2tdXSxSWzFdLFNba10pKTprPDQ4PyhNPVYocSxyZSxtZSxDZSxJZSxGW3Zba11dLExbMl0sd1trXSksQj1WKGtlLHFlLFgsZixiLEZbQ1trXV0sUlsyXSxTW2tdKSk6azw2ND8oTT1OKHEscmUsbWUs'@; put 'Q2UsSWUsRlt2W2tdXSxMWzNdLHdba10pLEI9SChrZSxxZSxYLGYsYixGW0Nba11dLFJbM10sU1trXSkpOihNPXoocSxyZSxtZSxDZSxJZSxGW3Zba11dLExbNF0sd1trXSksQj1VKGtlLHFlLFgsZixiLEZbQ1trXV0sUls0XSxTW2tdKSkscT1JZSxJZT1DZSxDZT14KG1lLDEwKSxtZT1yZSxy'@; put 'ZT1NLGtlPWIsYj1mLGY9eChYLDEwKSxYPXFlLHFlPUJ9dmFyIEs9dGhpcy5fYittZStmfDA7dGhpcy5fYj10aGlzLl9jK0NlK2J8MCx0aGlzLl9jPXRoaXMuX2QrSWUra2V8MCx0aGlzLl9kPXRoaXMuX2UrcStxZXwwLHRoaXMuX2U9dGhpcy5fYStyZStYfDAsdGhpcy5fYT1LfSxZLnByb3Rv'@; put 'dHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXRdPTEyOCx0aGlzLl9ibG9ja09mZnNldCs9MSx0aGlzLl9ibG9ja09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5f'@; put 'YmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3Zh'@; put 'ciBGPXkuYWxsb2M/eS5hbGxvYygyMCk6bmV3IHkoMjApO3JldHVybiBGLndyaXRlSW50MzJMRSh0aGlzLl9hLDApLEYud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCksRi53cml0ZUludDMyTEUodGhpcy5fYyw4KSxGLndyaXRlSW50MzJMRSh0aGlzLl9kLDEyKSxGLndyaXRlSW50MzJMRSh0aGlz'@; put 'Ll9lLDE2KSxGfSxmZS5leHBvcnRzPVl9LDI3MDU0KGZlLGosaCl7dmFyIHk9aCg4MzgzOCksYz15LkJ1ZmZlcjtmdW5jdGlvbiBzKHYsQyl7Zm9yKHZhciB3IGluIHYpQ1t3XT12W3ddfWZ1bmN0aW9uIEEodixDLHcpe3JldHVybiBjKHYsQyx3KX1jLmZyb20mJmMuYWxsb2MmJmMuYWxsb2NV'@; put 'bnNhZmUmJmMuYWxsb2NVbnNhZmVTbG93P2ZlLmV4cG9ydHM9eToocyh5LGopLGouQnVmZmVyPUEpLEEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpLHMoYyxBKSxBLmZyb209ZnVuY3Rpb24odixDLHcpe2lmKCJudW1iZXIiPT10eXBlb2Ygdil0aHJvdyBuZXcgVHlwZUVy'@; put 'cm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBjKHYsQyx3KX0sQS5hbGxvYz1mdW5jdGlvbih2LEMsdyl7aWYoIm51bWJlciIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgUz1jKHYpO3JldHVy'@; put 'biB2b2lkIDAhPT1DPyJzdHJpbmciPT10eXBlb2Ygdz9TLmZpbGwoQyx3KTpTLmZpbGwoQyk6Uy5maWxsKDApLFN9LEEuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odil7aWYoIm51bWJlciIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTty'@; put 'ZXR1cm4gYyh2KX0sQS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odil7aWYoIm51bWJlciIhPXR5cGVvZiB2KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4geS5TbG93QnVmZmVyKHYpfX0sOTM4MDcoZmUsaixoKXsidXNlIHN0cmljdCI7'@; put 'dmFyIEEseT1oKDgzODM4KSxjPXkuQnVmZmVyLHM9e307Zm9yKEEgaW4geSl5Lmhhc093blByb3BlcnR5KEEpJiYoIlNsb3dCdWZmZXIiPT09QXx8IkJ1ZmZlciI9PT1BfHwoc1tBXT15W0FdKSk7dmFyIHY9cy5CdWZmZXI9e307Zm9yKEEgaW4gYyljLmhhc093blByb3BlcnR5KEEpJiYoImFs'@; put 'bG9jVW5zYWZlIj09PUF8fCJhbGxvY1Vuc2FmZVNsb3ciPT09QXx8KHZbQV09Y1tBXSkpO2lmKHMuQnVmZmVyLnByb3RvdHlwZT1jLnByb3RvdHlwZSwoIXYuZnJvbXx8di5mcm9tPT09VWludDhBcnJheS5mcm9tKSYmKHYuZnJvbT1mdW5jdGlvbihDLHcsUyl7aWYoIm51bWJlciI9PXR5cGVv'@; put 'ZiBDKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIEMpO2lmKEMmJnR5cGVvZiBDLmxlbmd0aD4idSIpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50'@; put 'IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgQyk7cmV0dXJuIGMoQyx3LFMpfSksdi5hbGxvY3x8KHYuYWxsb2M9ZnVuY3Rpb24oQyx3LFMpe2lmKCJudW1i'@; put 'ZXIiIT10eXBlb2YgQyl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgQyk7aWYoQzwwfHxDPj0yKigxPDwzMCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytDKyci'@; put 'IGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgTD1jKEMpO3JldHVybiB3JiYwIT09dy5sZW5ndGg/InN0cmluZyI9PXR5cGVvZiBTP0wuZmlsbCh3LFMpOkwuZmlsbCh3KTpMLmZpbGwoMCksTH0pLCFzLmtTdHJpbmdNYXhMZW5ndGgpdHJ5e3Mua1N0cmluZ01heExlbmd0aD1w'@; put 'cm9jZXNzLmJpbmRpbmcoImJ1ZmZlciIpLmtTdHJpbmdNYXhMZW5ndGh9Y2F0Y2h7fXMuY29uc3RhbnRzfHwocy5jb25zdGFudHM9e01BWF9MRU5HVEg6cy5rTWF4TGVuZ3RofSxzLmtTdHJpbmdNYXhMZW5ndGgmJihzLmNvbnN0YW50cy5NQVhfU1RSSU5HX0xFTkdUSD1zLmtTdHJpbmdNYXhM'@; put 'ZW5ndGgpKSxmZS5leHBvcnRzPXN9LDk4MDgzKGZlLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgeTshZnVuY3Rpb24oKXt2YXIgYz1qfHx7fTt2b2lkIDAhPT0oeT1mdW5jdGlvbigpe3JldHVybiBjfS5hcHBseShqLFtdKSkmJihmZS5leHBvcnRzPXkpLGMuZGVmYXVsdD1jO3ZhciBzPSJodHRwOi8v'@; put 'd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsdj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHc9L3VybFwoWyInXT8oLis/KVsiJ10/XCkvLFM9e3dvZmYyOiJmb250L3dvZmYyIix3b2ZmOiJmb250L3dvZmYiLG90ZjoiYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlIix0dGY6ImFwcGxp'@; put 'Y2F0aW9uL3gtZm9udC10dGYiLGVvdDoiYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QiLHNmbnQ6ImFwcGxpY2F0aW9uL2ZvbnQtc2ZudCIsc3ZnOiJpbWFnZS9zdmcreG1sIn0sTD1mdW5jdGlvbihiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxiIGluc3RhbmNlb2Yg'@; put 'U1ZHRWxlbWVudH0sUj1mdW5jdGlvbihiKXtpZighTChiKSl0aHJvdyBuZXcgRXJyb3IoImFuIEhUTUxFbGVtZW50IG9yIFNWR0VsZW1lbnQgaXMgcmVxdWlyZWQ7IGdvdCAiK2IpfSx4PWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihrLE0pe0woYik/ayhiKTpNKG5l'@; put 'dyBFcnJvcigiYW4gSFRNTEVsZW1lbnQgb3IgU1ZHRWxlbWVudCBpcyByZXF1aXJlZDsgZ290ICIrYikpfSl9LEg9ZnVuY3Rpb24oYil7dmFyIGs9T2JqZWN0LmtleXMoUykuZmlsdGVyKGZ1bmN0aW9uKE0pe3JldHVybiBiLmluZGV4T2YoIi4iK00pPjB9KS5tYXAoZnVuY3Rpb24oTSl7cmV0'@; put 'dXJuIFNbTV19KTtyZXR1cm4gaz9rWzBdOihjb25zb2xlLmVycm9yKCJVbmtub3duIGZvbnQgZm9ybWF0IGZvciAiK2IrIi4gRm9udHMgbWF5IG5vdCBiZSB3b3JraW5nIGNvcnJlY3RseS4iKSwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIil9LE49ZnVuY3Rpb24oYixrLE0pe3ZhciBCPWIu'@; put 'dmlld0JveCYmYi52aWV3Qm94LmJhc2VWYWwmJmIudmlld0JveC5iYXNlVmFsW01dfHxudWxsIT09ay5nZXRBdHRyaWJ1dGUoTSkmJiFrLmdldEF0dHJpYnV0ZShNKS5tYXRjaCgvJSQvKSYmcGFyc2VJbnQoay5nZXRBdHRyaWJ1dGUoTSkpfHxiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW01d'@; put 'fHxwYXJzZUludChrLnN0eWxlW01dKXx8cGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoYikuZ2V0UHJvcGVydHlWYWx1ZShNKSk7cmV0dXJuIHR5cGVvZiBCPiJ1Inx8bnVsbD09PUJ8fGlzTmFOKHBhcnNlRmxvYXQoQikpPzA6Qn0sRj1mdW5jdGlvbihiKXtmb3IodmFyIGs9d2lu'@; put 'ZG93LmF0b2IoYi5zcGxpdCgiLCIpWzFdKSxNPWIuc3BsaXQoIiwiKVswXS5zcGxpdCgiOiIpWzFdLnNwbGl0KCI7IilbMF0sQj1uZXcgQXJyYXlCdWZmZXIoay5sZW5ndGgpLEs9bmV3IFVpbnQ4QXJyYXkoQiksRz0wO0c8ay5sZW5ndGg7RysrKUtbR109ay5jaGFyQ29kZUF0KEcpO3JldHVy'@; put 'biBuZXcgQmxvYihbQl0se3R5cGU6TX0pfSxtZT17fSxJZT1udWxsLHFlPWZ1bmN0aW9uKGIsayl7dmFyIE09a3x8e30sQj1NLnNlbGVjdG9yUmVtYXAsSz1NLm1vZGlmeVN0eWxlLEQ9TS5mb250cyxwPU0uZXhjbHVkZVVudXNlZENzcyxJPU0ubW9kaWZ5Q3NzfHxmdW5jdGlvbihQZSxvdCl7'@; put 'cmV0dXJuKEI/QihQZSk6UGUpKyJ7IisoSz9LKG90KTpvdCkrIn1cbiJ9LHVlPVtdLG5lPXR5cGVvZiBEPiJ1IixfZT1EfHxbXTtyZXR1cm4oSWV8fChJZT1BcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKS5tYXAoZnVuY3Rpb24oYil7dHJ5e3JldHVybntydWxlczpiLmNzc1J1bGVz'@; put 'LGhyZWY6Yi5ocmVmfX1jYXRjaChrKXtyZXR1cm4gY29uc29sZS53YXJuKCJTdHlsZXNoZWV0IGNvdWxkIG5vdCBiZSBsb2FkZWQ6ICIrYi5ocmVmLGspLHt9fX0pKSkuZm9yRWFjaChmdW5jdGlvbihQZSl7dmFyIG90PVBlLnJ1bGVzLGx0PVBlLmhyZWY7b3QmJkFycmF5LmZyb20ob3QpLmZv'@; put 'ckVhY2goZnVuY3Rpb24oZHQpe2lmKHR5cGVvZiBkdC5zdHlsZTwidSIpaWYoZnVuY3Rpb24oYixrKXtpZihrKXRyeXtyZXR1cm4gYi5xdWVyeVNlbGVjdG9yKGspfHxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKGspfWNhdGNoKE0pe2NvbnNvbGUud2FybignSW52'@; put 'YWxpZCBDU1Mgc2VsZWN0b3IgIicraysnIicsTSl9fShiLGR0LnNlbGVjdG9yVGV4dCkpdWUucHVzaChJKGR0LnNlbGVjdG9yVGV4dCxkdC5zdHlsZS5jc3NUZXh0KSk7ZWxzZSBpZihuZSYmZHQuY3NzVGV4dC5tYXRjaCgvXkBmb250LWZhY2UvKSl7dmFyIFJlPWZ1bmN0aW9uKGIsayl7dmFy'@; put 'IE09Yi5jc3NUZXh0Lm1hdGNoKHcpLEI9TSYmTVsxXXx8IiI7aWYoQiYmIUIubWF0Y2goL15kYXRhOi8pJiYiYWJvdXQ6YmxhbmsiIT09Qil7dmFyIEs9Qi5zdGFydHNXaXRoKCIuLi8iKT9rKyIvLi4vIitCOkIuc3RhcnRzV2l0aCgiLi8iKT9rKyIvLiIrQjpCO3JldHVybnt0ZXh0OmIuY3Nz'@; put 'VGV4dCxmb3JtYXQ6SChLKSx1cmw6S319fShkdCxsdCk7UmUmJl9lLnB1c2goUmUpfWVsc2UgcHx8dWUucHVzaChkdC5jc3NUZXh0KX0pfSksZnVuY3Rpb24oYil7cmV0dXJuIFByb21pc2UuYWxsKGIubWFwKGZ1bmN0aW9uKGspe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihNLEIpe2lm'@; put 'KG1lW2sudXJsXSlyZXR1cm4gTShtZVtrLnVybF0pO3ZhciBLPW5ldyBYTUxIdHRwUmVxdWVzdDtLLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7dmFyIEc9ZnVuY3Rpb24oYil7Zm9yKHZhciBrPSIiLE09bmV3IFVpbnQ4QXJyYXkoYiksQj0wO0I8TS5ieXRlTGVuZ3RoO0Ir'@; put 'KylrKz1TdHJpbmcuZnJvbUNoYXJDb2RlKE1bQl0pO3JldHVybiB3aW5kb3cuYnRvYShrKX0oSy5yZXNwb25zZSksRD1rLnRleHQucmVwbGFjZSh3LCd1cmwoImRhdGE6JytrLmZvcm1hdCsiO2Jhc2U2NCwiK0crJyIpJykrIlxuIjttZVtrLnVybF09RCxNKEQpfSksSy5hZGRFdmVudExpc3Rl'@; put 'bmVyKCJlcnJvciIsZnVuY3Rpb24oRyl7Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gbG9hZCBmb250IGZyb206ICIray51cmwsRyksbWVbay51cmxdPW51bGwsTShudWxsKX0pLEsuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGZ1bmN0aW9uKEcpe2NvbnNvbGUud2FybigiQWJvcnRlZCBsb2Fk'@; put 'aW5nIGZvbnQgZnJvbTogIitrLnVybCxHKSxNKG51bGwpfSksSy5vcGVuKCJHRVQiLGsudXJsKSxLLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLEsuc2VuZCgpfSl9KSkudGhlbihmdW5jdGlvbihrKXtyZXR1cm4gay5maWx0ZXIoZnVuY3Rpb24oTSl7cmV0dXJuIE19KS5qb2luKCIiKX0p'@; put 'fShfZSkudGhlbihmdW5jdGlvbihQZSl7cmV0dXJuIHVlLmpvaW4oIlxuIikrUGV9KX0sWD1mdW5jdGlvbigpe2lmKCFuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYiYmISgiZG93bmxvYWQiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKSlyZXR1cm57cG9wdXA6d2luZG93Lm9wZW4o'@; put 'KX19O2MucHJlcGFyZVN2Zz1mdW5jdGlvbihmLGIsayl7UihmKTt2YXIgTT1ifHx7fSxCPU0ubGVmdCxLPXZvaWQgMD09PUI/MDpCLEc9TS50b3AsRD12b2lkIDA9PT1HPzA6RyxwPU0ud2lkdGgsST1NLmhlaWdodCx1ZT1NLnNjYWxlLG5lPXZvaWQgMD09PXVlPzE6dWUsX2U9TS5yZXNwb25z'@; put 'aXZlLFBlPXZvaWQgMCE9PV9lJiZfZSxvdD1NLmV4Y2x1ZGVDc3MsbHQ9dm9pZCAwIT09b3QmJm90O3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShiLnF1ZXJ5U2VsZWN0b3JBbGwoImltYWdlIikpLm1hcChmdW5jdGlvbihrKXt2YXIgTT1rLmdldEF0'@; put 'dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiaHJlZiIpfHxrLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiBNPyhmdW5jdGlvbihiKXtyZXR1cm4gYiYmMD09PWIubGFzdEluZGV4T2YoImh0dHAiLDApJiYtMT09PWIubGFzdEluZGV4T2Yod2luZG93LmxvY2F0'@; put 'aW9uLmhvc3QpfShNKSYmKE0rPSgtMT09PU0uaW5kZXhPZigiPyIpPyI/IjoiJiIpKyJ0PSIrKG5ldyBEYXRlKS52YWx1ZU9mKCkpLG5ldyBQcm9taXNlKGZ1bmN0aW9uKEIsSyl7dmFyIEc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksRD1uZXcgSW1hZ2U7RC5jcm9zc09yaWdp'@; put 'bj0iYW5vbnltb3VzIixELnNyYz1NLEQub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiBLKG5ldyBFcnJvcigiQ291bGQgbm90IGxvYWQgIitNKSl9LEQub25sb2FkPWZ1bmN0aW9uKCl7Ry53aWR0aD1ELndpZHRoLEcuaGVpZ2h0PUQuaGVpZ2h0LEcuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1h'@; put 'Z2UoRCwwLDApLGsuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixHLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIikpLEIoITApfX0pKTpQcm9taXNlLnJlc29sdmUobnVsbCl9KSl9KGYpLnRoZW4oZnVuY3Rpb24oKXt2YXIgZHQ9Zi5jbG9uZU5vZGUo'@; put 'ITApO2R0LnN0eWxlLmJhY2tncm91bmRDb2xvcj0oYnx8e30pLmJhY2tncm91bmRDb2xvcnx8Zi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I7dmFyIFJlPWZ1bmN0aW9uKGIsayxNLEIpe2lmKCJzdmciPT09Yi50YWdOYW1lKXJldHVybnt3aWR0aDpNfHxOKGIsaywid2lkdGgiKSxoZWlnaHQ6Qnx8'@; put 'TihiLGssImhlaWdodCIpfTtpZihiLmdldEJCb3gpe3ZhciBLPWIuZ2V0QkJveCgpO3JldHVybnt3aWR0aDpLLngrSy53aWR0aCxoZWlnaHQ6Sy55K0suaGVpZ2h0fX19KGYsZHQscCxJKSxhZT1SZS53aWR0aCx4ZT1SZS5oZWlnaHQ7aWYoInN2ZyIhPT1mLnRhZ05hbWUpe2lmKCFmLmdldEJC'@; put 'b3gpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiQXR0ZW1wdGVkIHRvIHJlbmRlciBub24tU1ZHIGVsZW1lbnQiLGYpO251bGwhPWR0LmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIikmJmR0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixkdC5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLnJl'@; put 'cGxhY2UoL3RyYW5zbGF0ZVwoLio/XCkvLCIiKSk7dmFyIGplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTtqZS5hcHBlbmRDaGlsZChkdCksZHQ9amV9aWYoZHQuc2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiwiMS4xIiksZHQuc2V0'@; put 'QXR0cmlidXRlKCJ2aWV3Qm94IixbSyxELGFlLHhlXS5qb2luKCIgIikpLGR0LmdldEF0dHJpYnV0ZSgieG1sbnMiKXx8ZHQuc2V0QXR0cmlidXRlTlMocywieG1sbnMiLHYpLGR0LmdldEF0dHJpYnV0ZSgieG1sbnM6eGxpbmsiKXx8ZHQuc2V0QXR0cmlidXRlTlMocywieG1sbnM6eGxpbmsi'@; put 'LCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiksUGU/KGR0LnJlbW92ZUF0dHJpYnV0ZSgid2lkdGgiKSxkdC5yZW1vdmVBdHRyaWJ1dGUoImhlaWdodCIpLGR0LnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaW5ZTWluIG1lZXQiKSk6KGR0LnNldEF0dHJpYnV0'@; put 'ZSgid2lkdGgiLGFlKm5lKSxkdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIseGUqbmUpKSxBcnJheS5mcm9tKGR0LnF1ZXJ5U2VsZWN0b3JBbGwoImZvcmVpZ25PYmplY3QgPiAqIikpLmZvckVhY2goZnVuY3Rpb24oRmUpe0ZlLnNldEF0dHJpYnV0ZU5TKHMsInhtbG5zIiwic3ZnIj09PUZlLnRh'@; put 'Z05hbWU/djoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpfSksIWx0KXJldHVybiBxZShmLGIpLnRoZW4oZnVuY3Rpb24oRmUpe3ZhciBnZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2dlLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIiksZ2UuaW5uZXJIVE1M'@; put 'PSI8IVtDREFUQVtcbiIrRmUrIlxuXV0+Ijt2YXIgY2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGVmcyIpO2NlLmFwcGVuZENoaWxkKGdlKSxkdC5pbnNlcnRCZWZvcmUoY2UsZHQuZmlyc3RDaGlsZCk7dmFyIGhlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2hlLmFwcGVuZENo'@; put 'aWxkKGR0KTt2YXIgd2U9aGUuaW5uZXJIVE1MLnJlcGxhY2UoL05TXGQrOmhyZWYvZ2ksJ3htbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmJyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGspcmV0dXJue3NyYzp3ZSx3aWR0aDphZSxoZWlnaHQ6eGV9'@; put 'O2sod2UsYWUseGUpfSk7dmFyIEFlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0FlLmFwcGVuZENoaWxkKGR0KTt2YXIgRGU9QWUuaW5uZXJIVE1MO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBrKXJldHVybntzcmM6RGUsd2lkdGg6YWUsaGVpZ2h0OnhlfTtrKERlLGFlLHhlKX0pfSxj'@; put 'LnN2Z0FzRGF0YVVyaT1mdW5jdGlvbihmLGIsayl7cmV0dXJuIFIoZiksYy5wcmVwYXJlU3ZnKGYsYikudGhlbihmdW5jdGlvbihNKXt2YXIgSz1NLndpZHRoLEc9TS5oZWlnaHQsRD0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwiK3dpbmRvdy5idG9hKGZ1bmN0aW9uKGIpe3JldHVybiBk'@; put 'ZWNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KGIpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csZnVuY3Rpb24oayxNKXt2YXIgQj1TdHJpbmcuZnJvbUNoYXJDb2RlKCIweCIrTSk7cmV0dXJuIiUiPT09Qj8iJTI1IjpCfSkpfSgnPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFu'@; put 'ZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgWzwhRU5USVRZIG5ic3AgIiYjMTYwOyI+XT4nK00uc3JjKSk7cmV0dXJuImZ1bmN0aW9uIj09'@; put 'dHlwZW9mIGsmJmsoRCxLLEcpLER9KX0sYy5zdmdBc1BuZ1VyaT1mdW5jdGlvbihmLGIsayl7UihmKTt2YXIgTT1ifHx7fSxCPU0uZW5jb2RlclR5cGUsSz12b2lkIDA9PT1CPyJpbWFnZS9wbmciOkIsRz1NLmVuY29kZXJPcHRpb25zLEQ9dm9pZCAwPT09Rz8uODpHLHA9TS5jYW52ZyxJPWZ1'@; put 'bmN0aW9uKG5lKXt2YXIgX2U9bmUuc3JjLFBlPW5lLndpZHRoLG90PW5lLmhlaWdodCxsdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxkdD1sdC5nZXRDb250ZXh0KCIyZCIpLFJlPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxO2x0LndpZHRoPVBlKlJlLGx0LmhlaWdodD1v'@; put 'dCpSZSxsdC5zdHlsZS53aWR0aD1sdC53aWR0aCsicHgiLGx0LnN0eWxlLmhlaWdodD1sdC5oZWlnaHQrInB4IixkdC5zZXRUcmFuc2Zvcm0oUmUsMCwwLFJlLDAsMCkscD9wKGx0LF9lKTpkdC5kcmF3SW1hZ2UoX2UsMCwwKTt2YXIgYWU9dm9pZCAwO3RyeXthZT1sdC50b0RhdGFVUkwoSyxE'@; put 'KX1jYXRjaCh4ZSl7aWYodHlwZW9mIFNlY3VyaXR5RXJyb3I8InUiJiZ4ZSBpbnN0YW5jZW9mIFNlY3VyaXR5RXJyb3J8fCJTZWN1cml0eUVycm9yIj09PXhlLm5hbWUpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiUmVuZGVyZWQgU1ZHIGltYWdlcyBjYW5ub3QgYmUgZG93bmxvYWRlZCBp'@; put 'biB0aGlzIGJyb3dzZXIuIik7dGhyb3cgeGV9cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGsmJmsoYWUsbHQud2lkdGgsbHQuaGVpZ2h0KSxQcm9taXNlLnJlc29sdmUoYWUpfTtyZXR1cm4gcD9jLnByZXBhcmVTdmcoZixiKS50aGVuKEkpOmMuc3ZnQXNEYXRhVXJpKGYsYikudGhlbihmdW5j'@; put 'dGlvbih1ZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG5lLF9lKXt2YXIgUGU9bmV3IEltYWdlO1BlLm9ubG9hZD1mdW5jdGlvbigpe3JldHVybiBuZShJKHtzcmM6UGUsd2lkdGg6UGUud2lkdGgsaGVpZ2h0OlBlLmhlaWdodH0pKX0sUGUub25lcnJvcj1mdW5jdGlvbigpe19lKCJU'@; put 'aGVyZSB3YXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgZGF0YSBVUkkgYXMgYW4gaW1hZ2Ugb24gdGhlIGZvbGxvd2luZyBTVkdcbiIrd2luZG93LmF0b2IodWUuc2xpY2UoMjYpKSsiT3BlbiB0aGUgZm9sbG93aW5nIGxpbmsgdG8gc2VlIGJyb3dzZXIncyBkaWFnbm9zaXNcbiIrdWUpfSxQZS5z'@; put 'cmM9dWV9KX0pfSxjLmRvd25sb2FkPWZ1bmN0aW9uKGYsYixrKXtpZihuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYiluYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihGKGIpLGYpO2Vsc2V7dmFyIE09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2lmKCJkb3dubG9hZCJpbiBNKXtNLmRv'@; put 'd25sb2FkPWYsTS5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKE0pO3RyeXt2YXIgQj1GKGIpLEs9VVJMLmNyZWF0ZU9iamVjdFVSTChCKTtNLmhyZWY9SyxNLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0'@; put 'aW9uKCl7cmV0dXJuIFVSTC5yZXZva2VPYmplY3RVUkwoSyl9KX19Y2F0Y2goRyl7Y29uc29sZS5lcnJvcihHKSxjb25zb2xlLndhcm4oIkVycm9yIHdoaWxlIGdldHRpbmcgb2JqZWN0IFVSTC4gRmFsbGluZyBiYWNrIHRvIHN0cmluZyBVUkwuIiksTS5ocmVmPWJ9TS5jbGljaygpLGRvY3Vt'@; put 'ZW50LmJvZHkucmVtb3ZlQ2hpbGQoTSl9ZWxzZSBrJiZrLnBvcHVwJiYoay5wb3B1cC5kb2N1bWVudC50aXRsZT1mLGsucG9wdXAubG9jYXRpb24ucmVwbGFjZShiKSl9fSxjLnNhdmVTdmc9ZnVuY3Rpb24oZixiLGspe3ZhciBNPVgoKTtyZXR1cm4geChmKS50aGVuKGZ1bmN0aW9uKEIpe3Jl'@; put 'dHVybiBjLnN2Z0FzRGF0YVVyaShCLGt8fHt9KX0pLnRoZW4oZnVuY3Rpb24oQil7cmV0dXJuIGMuZG93bmxvYWQoYixCLE0pfSl9LGMuc2F2ZVN2Z0FzUG5nPWZ1bmN0aW9uKGYsYixrKXt2YXIgTT1YKCk7cmV0dXJuIHgoZikudGhlbihmdW5jdGlvbihCKXtyZXR1cm4gYy5zdmdBc1BuZ1Vy'@; put 'aShCLGt8fHt9KX0pLnRoZW4oZnVuY3Rpb24oQil7cmV0dXJuIGMuZG93bmxvYWQoYixCLE0pfSl9fSgpfSwzMTM1OChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDkwMjU4KSxjPWgoOTI3MzYpLHM9aCgzNTg2MSkoKSxBPWgoODM3OTgpLHY9aCg0Njc1OCksQz15KCIlTWF0aC5mbG9v'@; put 'ciUiKTtmZS5leHBvcnRzPWZ1bmN0aW9uKFMsTCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFMpdGhyb3cgbmV3IHYoImBmbmAgaXMgbm90IGEgZnVuY3Rpb24iKTtpZigibnVtYmVyIiE9dHlwZW9mIEx8fEw8MHx8TD40Mjk0OTY3Mjk1fHxDKEwpIT09TCl0aHJvdyBuZXcgdigiYGxlbmd0aGAg'@; put 'bXVzdCBiZSBhIHBvc2l0aXZlIDMyLWJpdCBpbnRlZ2VyIik7dmFyIFI9YXJndW1lbnRzLmxlbmd0aD4yJiYhIWFyZ3VtZW50c1syXSx4PSEwLFU9ITA7aWYoImxlbmd0aCJpbiBTJiZBKXt2YXIgSD1BKFMsImxlbmd0aCIpO0gmJiFILmNvbmZpZ3VyYWJsZSYmKHg9ITEpLEgmJiFILndyaXRh'@; put 'YmxlJiYoVT0hMSl9cmV0dXJuKHh8fFV8fCFSKSYmKHM/YyhTLCJsZW5ndGgiLEwsITAsITApOmMoUywibGVuZ3RoIixMKSksU319LDcwNDYzKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjcwNTQpLkJ1ZmZlcixjPWgoNDEwOTApO2Z1bmN0aW9uIHMoQSx2KXt0aGlzLl9ibG9jaz15'@; put 'LmFsbG9jKEEpLHRoaXMuX2ZpbmFsU2l6ZT12LHRoaXMuX2Jsb2NrU2l6ZT1BLHRoaXMuX2xlbj0wfXMucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihBLHYpe0E9YyhBLHZ8fCJ1dGY4Iik7Zm9yKHZhciBDPXRoaXMuX2Jsb2NrLHc9dGhpcy5fYmxvY2tTaXplLFM9QS5sZW5ndGgsTD10aGlz'@; put 'Ll9sZW4sUj0wO1I8Uzspe2Zvcih2YXIgeD1MJXcsVT1NYXRoLm1pbihTLVIsdy14KSxIPTA7SDxVO0grKylDW3grSF09QVtSK0hdO1IrPVUsKEwrPVUpJXc9PT0wJiZ0aGlzLl91cGRhdGUoQyl9cmV0dXJuIHRoaXMuX2xlbis9Uyx0aGlzfSxzLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24o'@; put 'QSl7dmFyIHY9dGhpcy5fbGVuJXRoaXMuX2Jsb2NrU2l6ZTt0aGlzLl9ibG9ja1t2XT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLHYrMSksdj49dGhpcy5fZmluYWxTaXplJiYodGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSx0aGlzLl9ibG9jay5maWxsKDApKTt2YXIgQz04KnRoaXMuX2xlbjtp'@; put 'ZihDPD00Mjk0OTY3Mjk1KXRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoQyx0aGlzLl9ibG9ja1NpemUtNCk7ZWxzZXt2YXIgdz0oNDI5NDk2NzI5NSZDKT4+PjA7dGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRSgoQy13KS80Mjk0OTY3Mjk2LHRoaXMuX2Jsb2NrU2l6ZS04KSx0aGlzLl9ibG9j'@; put 'ay53cml0ZVVJbnQzMkJFKHcsdGhpcy5fYmxvY2tTaXplLTQpfXRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayk7dmFyIEw9dGhpcy5faGFzaCgpO3JldHVybiBBP0wudG9TdHJpbmcoQSk6TH0scy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBt'@; put 'dXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzIil9LGZlLmV4cG9ydHM9c30sMjU0NDMoZmUsaixoKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1mdW5jdGlvbihjKXt2YXIgcz1jLnRvTG93ZXJDYXNlKCksQT1mZS5leHBvcnRzW3NdO2lmKCFBKXRocm93IG5ldyBFcnJvcihzKyIgaXMg'@; put 'bm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpIik7cmV0dXJuIG5ldyBBfSxmZS5leHBvcnRzLnNoYT1oKDQ4NTg1KSxmZS5leHBvcnRzLnNoYTE9aCgyMTI3MCksZmUuZXhwb3J0cy5zaGEyMjQ9aCg0MjcwOSksZmUuZXhwb3J0cy5zaGEyNTY9aCgzMjE0OCksZmUuZXhw'@; put 'b3J0cy5zaGEzODQ9aCg1MTg1NiksZmUuZXhwb3J0cy5zaGE1MTI9aCgzMTIxKX0sNDg1ODUoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg3MTk5MyksYz1oKDcwNDYzKSxzPWgoMjcwNTQpLkJ1ZmZlcixBPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUx'@; put 'NF0sdj1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIEMoKXt0aGlzLmluaXQoKSx0aGlzLl93PXYsYy5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIHcoUil7cmV0dXJuIFI8PDV8Uj4+PjI3fWZ1bmN0aW9uIFMoUil7cmV0dXJuIFI8PDMwfFI+Pj4yfWZ1bmN0aW9uIEwoUix4LFUsSCl7cmV0dXJu'@; put 'IDA9PT1SP3gmVXx+eCZIOjI9PT1SP3gmVXx4Jkh8VSZIOnheVV5IfXkoQyxjKSxDLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9'@; put 'MzI4NTM3NzUyMCx0aGlzfSxDLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFIpe2Zvcih2YXIgeD10aGlzLl93LFU9MHx0aGlzLl9hLEg9MHx0aGlzLl9iLFY9MHx0aGlzLl9jLE49MHx0aGlzLl9kLHo9MHx0aGlzLl9lLFk9MDtZPDE2OysrWSl4W1ldPVIucmVhZEludDMyQkUoNCpZKTtm'@; put 'b3IoO1k8ODA7KytZKXhbWV09eFtZLTNdXnhbWS04XV54W1ktMTRdXnhbWS0xNl07Zm9yKHZhciBGPTA7Rjw4MDsrK0Ype3ZhciBXPX5+KEYvMjApLHE9dyhVKStMKFcsSCxWLE4pK3oreFtGXStBW1ddfDA7ej1OLE49VixWPVMoSCksSD1VLFU9cX10aGlzLl9hPVUrdGhpcy5fYXwwLHRoaXMu'@; put 'X2I9SCt0aGlzLl9ifDAsdGhpcy5fYz1WK3RoaXMuX2N8MCx0aGlzLl9kPU4rdGhpcy5fZHwwLHRoaXMuX2U9eit0aGlzLl9lfDB9LEMucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIFI9cy5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIFIud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxS'@; put 'LndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksUi53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLFIud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksUi53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxSfSxmZS5leHBvcnRzPUN9LDIxMjcwKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgo'@; put 'NzE5OTMpLGM9aCg3MDQ2Mykscz1oKDI3MDU0KS5CdWZmZXIsQT1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLC0xODk0MDA3NTg4LC04OTk0OTc1MTRdLHY9bmV3IEFycmF5KDgwKTtmdW5jdGlvbiBDKCl7dGhpcy5pbml0KCksdGhpcy5fdz12LGMuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiB3'@; put 'KHgpe3JldHVybiB4PDwxfHg+Pj4zMX1mdW5jdGlvbiBTKHgpe3JldHVybiB4PDw1fHg+Pj4yN31mdW5jdGlvbiBMKHgpe3JldHVybiB4PDwzMHx4Pj4+Mn1mdW5jdGlvbiBSKHgsVSxILFYpe3JldHVybiAwPT09eD9VJkh8flUmVjoyPT09eD9VJkh8VSZWfEgmVjpVXkheVn15KEMsYyksQy5w'@; put 'cm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30sQy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih4KXtm'@; put 'b3IodmFyIFU9dGhpcy5fdyxIPTB8dGhpcy5fYSxWPTB8dGhpcy5fYixOPTB8dGhpcy5fYyx6PTB8dGhpcy5fZCxZPTB8dGhpcy5fZSxGPTA7RjwxNjsrK0YpVVtGXT14LnJlYWRJbnQzMkJFKDQqRik7Zm9yKDtGPDgwOysrRilVW0ZdPXcoVVtGLTNdXlVbRi04XV5VW0YtMTRdXlVbRi0xNl0p'@; put 'O2Zvcih2YXIgVz0wO1c8ODA7KytXKXt2YXIgcT1+fihXLzIwKSxyZT1TKEgpK1IocSxWLE4seikrWStVW1ddK0FbcV18MDtZPXosej1OLE49TChWKSxWPUgsSD1yZX10aGlzLl9hPUgrdGhpcy5fYXwwLHRoaXMuX2I9Vit0aGlzLl9ifDAsdGhpcy5fYz1OK3RoaXMuX2N8MCx0aGlzLl9kPXor'@; put 'dGhpcy5fZHwwLHRoaXMuX2U9WSt0aGlzLl9lfDB9LEMucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIHg9cy5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIHgud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSx4LndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCkseC53cml0ZUludDMyQkUoMHx0'@; put 'aGlzLl9jLDgpLHgud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMikseC53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSx4fSxmZS5leHBvcnRzPUN9LDQyNzA5KGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoNzE5OTMpLGM9aCgzMjE0OCkscz1oKDcwNDYzKSxBPWgoMjcwNTQpLkJ1ZmZl'@; put 'cix2PW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24gQygpe3RoaXMuaW5pdCgpLHRoaXMuX3c9dixzLmNhbGwodGhpcyw2NCw1Nil9eShDLGMpLEMucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0zMjM4MzcxMDMyLHRoaXMuX2I9OTE0MTUwNjYzLHRoaXMuX2M9ODEyNzAy'@; put 'OTk5LHRoaXMuX2Q9NDE0NDkxMjY5Nyx0aGlzLl9lPTQyOTA3NzU4NTcsdGhpcy5fZj0xNzUwNjAzMDI1LHRoaXMuX2c9MTY5NDA3NjgzOSx0aGlzLl9oPTMyMDQwNzU0MjgsdGhpc30sQy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgdz1BLmFsbG9jVW5zYWZlKDI4KTtyZXR1cm4g'@; put 'dy53cml0ZUludDMyQkUodGhpcy5fYSwwKSx3LndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLHcud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksdy53cml0ZUludDMyQkUodGhpcy5fZCwxMiksdy53cml0ZUludDMyQkUodGhpcy5fZSwxNiksdy53cml0ZUludDMyQkUodGhpcy5fZiwyMCksdy53cml0'@; put 'ZUludDMyQkUodGhpcy5fZywyNCksd30sZmUuZXhwb3J0cz1DfSwzMjE0OChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDcxOTkzKSxjPWgoNzA0NjMpLHM9aCgyNzA1NCkuQnVmZmVyLEE9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYz'@; put 'LDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcw'@; put 'MjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIy'@; put 'OTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4'@; put 'ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sdj1uZXcgQXJyYXkoNjQpO2Z1bmN0aW9u'@; put 'IEMoKXt0aGlzLmluaXQoKSx0aGlzLl93PXYsYy5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIHcoSCxWLE4pe3JldHVybiBOXkgmKFZeTil9ZnVuY3Rpb24gUyhILFYsTil7cmV0dXJuIEgmVnxOJihIfFYpfWZ1bmN0aW9uIEwoSCl7cmV0dXJuKEg+Pj4yfEg8PDMwKV4oSD4+PjEzfEg8PDE5'@; put 'KV4oSD4+PjIyfEg8PDEwKX1mdW5jdGlvbiBSKEgpe3JldHVybihIPj4+NnxIPDwyNileKEg+Pj4xMXxIPDwyMSleKEg+Pj4yNXxIPDw3KX1mdW5jdGlvbiB4KEgpe3JldHVybihIPj4+N3xIPDwyNSleKEg+Pj4xOHxIPDwxNCleSD4+PjN9ZnVuY3Rpb24gVShIKXtyZXR1cm4oSD4+PjE3fEg8'@; put 'PDE1KV4oSD4+PjE5fEg8PDEzKV5IPj4+MTB9eShDLGMpLEMucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzc5MDMzNzAzLHRoaXMuX2I9MzE0NDEzNDI3Nyx0aGlzLl9jPTEwMTM5MDQyNDIsdGhpcy5fZD0yNzczNDgwNzYyLHRoaXMuX2U9MTM1OTg5MzExOSx0'@; put 'aGlzLl9mPTI2MDA4MjI5MjQsdGhpcy5fZz01Mjg3MzQ2MzUsdGhpcy5faD0xNTQxNDU5MjI1LHRoaXN9LEMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oSCl7Zm9yKHZhciBWPXRoaXMuX3csTj0wfHRoaXMuX2Esej0wfHRoaXMuX2IsWT0wfHRoaXMuX2MsRj0wfHRoaXMuX2QsVz0wfHRo'@; put 'aXMuX2UscT0wfHRoaXMuX2YscmU9MHx0aGlzLl9nLG1lPTB8dGhpcy5faCxDZT0wO0NlPDE2OysrQ2UpVltDZV09SC5yZWFkSW50MzJCRSg0KkNlKTtmb3IoO0NlPDY0OysrQ2UpVltDZV09VShWW0NlLTJdKStWW0NlLTddK3goVltDZS0xNV0pK1ZbQ2UtMTZdfDA7Zm9yKHZhciBJZT0wO0ll'@; put 'PDY0OysrSWUpe3ZhciBrZT1tZStSKFcpK3coVyxxLHJlKStBW0llXStWW0llXXwwLHFlPUwoTikrUyhOLHosWSl8MDttZT1yZSxyZT1xLHE9VyxXPUYra2V8MCxGPVksWT16LHo9TixOPWtlK3FlfDB9dGhpcy5fYT1OK3RoaXMuX2F8MCx0aGlzLl9iPXordGhpcy5fYnwwLHRoaXMuX2M9WSt0'@; put 'aGlzLl9jfDAsdGhpcy5fZD1GK3RoaXMuX2R8MCx0aGlzLl9lPVcrdGhpcy5fZXwwLHRoaXMuX2Y9cSt0aGlzLl9mfDAsdGhpcy5fZz1yZSt0aGlzLl9nfDAsdGhpcy5faD1tZSt0aGlzLl9ofDB9LEMucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIEg9cy5hbGxvY1Vuc2FmZSgzMik7'@; put 'cmV0dXJuIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCksSC53cml0ZUludDMyQkUodGhpcy5fYiw0KSxILndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIpLEgud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsMjAp'@; put 'LEgud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLEgud3JpdGVJbnQzMkJFKHRoaXMuX2gsMjgpLEh9LGZlLmV4cG9ydHM9Q30sNTE4NTYoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg3MTk5MyksYz1oKDMxMjEpLHM9aCg3MDQ2MyksQT1oKDI3MDU0KS5CdWZmZXIsdj1uZXcgQXJyYXko'@; put 'MTYwKTtmdW5jdGlvbiBDKCl7dGhpcy5pbml0KCksdGhpcy5fdz12LHMuY2FsbCh0aGlzLDEyOCwxMTIpfXkoQyxjKSxDLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTM0MTgwNzAzNjUsdGhpcy5fYmg9MTY1NDI3MDI1MCx0aGlzLl9jaD0yNDM4NTI5MzcwLHRo'@; put 'aXMuX2RoPTM1NTQ2MjM2MCx0aGlzLl9laD0xNzMxNDA1NDE1LHRoaXMuX2ZoPTIzOTQxODAyMzEsdGhpcy5fZ2g9MzY3NTAwODUyNSx0aGlzLl9oaD0xMjAzMDYyODEzLHRoaXMuX2FsPTMyMzgzNzEwMzIsdGhpcy5fYmw9OTE0MTUwNjYzLHRoaXMuX2NsPTgxMjcwMjk5OSx0aGlzLl9kbD00'@; put 'MTQ0OTEyNjk3LHRoaXMuX2VsPTQyOTA3NzU4NTcsdGhpcy5fZmw9MTc1MDYwMzAyNSx0aGlzLl9nbD0xNjk0MDc2ODM5LHRoaXMuX2hsPTMyMDQwNzU0MjgsdGhpc30sQy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgdz1BLmFsbG9jVW5zYWZlKDQ4KTtmdW5jdGlvbiBTKEwsUix4'@; put 'KXt3LndyaXRlSW50MzJCRShMLHgpLHcud3JpdGVJbnQzMkJFKFIseCs0KX1yZXR1cm4gUyh0aGlzLl9haCx0aGlzLl9hbCwwKSxTKHRoaXMuX2JoLHRoaXMuX2JsLDgpLFModGhpcy5fY2gsdGhpcy5fY2wsMTYpLFModGhpcy5fZGgsdGhpcy5fZGwsMjQpLFModGhpcy5fZWgsdGhpcy5fZWws'@; put 'MzIpLFModGhpcy5fZmgsdGhpcy5fZmwsNDApLHd9LGZlLmV4cG9ydHM9Q30sMzEyMShmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDcxOTkzKSxjPWgoNzA0NjMpLHM9aCgyNzA1NCkuQnVmZmVyLEE9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5'@; put 'MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5'@; put 'NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3'@; put 'NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4'@; put 'MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5'@; put 'OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTky'@; put 'MSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0'@; put 'MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAz'@; put 'Njg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUy'@; put 'OTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0'@; put 'NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0'@; put 'NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSx2PW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIEMoKXt0aGlzLmluaXQoKSx0aGlzLl93PXYsYy5jYWxsKHRoaXMsMTI4LDExMil9ZnVuY3Rpb24gdyh6LFksRil7cmV0dXJuIEZeeiYoWV5GKX1mdW5jdGlvbiBTKHosWSxGKXtyZXR1cm4geiZZfEYm'@; put 'KHp8WSl9ZnVuY3Rpb24gTCh6LFkpe3JldHVybih6Pj4+Mjh8WTw8NCleKFk+Pj4yfHo8PDMwKV4oWT4+Pjd8ejw8MjUpfWZ1bmN0aW9uIFIoeixZKXtyZXR1cm4oej4+PjE0fFk8PDE4KV4oej4+PjE4fFk8PDE0KV4oWT4+Pjl8ejw8MjMpfWZ1bmN0aW9uIHgoeixZKXtyZXR1cm4oej4+PjF8'@; put 'WTw8MzEpXih6Pj4+OHxZPDwyNCleej4+Pjd9ZnVuY3Rpb24gVSh6LFkpe3JldHVybih6Pj4+MXxZPDwzMSleKHo+Pj44fFk8PDI0KV4oej4+Pjd8WTw8MjUpfWZ1bmN0aW9uIEgoeixZKXtyZXR1cm4oej4+PjE5fFk8PDEzKV4oWT4+PjI5fHo8PDMpXno+Pj42fWZ1bmN0aW9uIFYoeixZKXty'@; put 'ZXR1cm4oej4+PjE5fFk8PDEzKV4oWT4+PjI5fHo8PDMpXih6Pj4+NnxZPDwyNil9ZnVuY3Rpb24gTih6LFkpe3JldHVybiB6Pj4+MDxZPj4+MD8xOjB9eShDLGMpLEMucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MTc3OTAzMzcwMyx0aGlzLl9iaD0zMTQ0MTM0'@; put 'Mjc3LHRoaXMuX2NoPTEwMTM5MDQyNDIsdGhpcy5fZGg9Mjc3MzQ4MDc2Mix0aGlzLl9laD0xMzU5ODkzMTE5LHRoaXMuX2ZoPTI2MDA4MjI5MjQsdGhpcy5fZ2g9NTI4NzM0NjM1LHRoaXMuX2hoPTE1NDE0NTkyMjUsdGhpcy5fYWw9NDA4OTIzNTcyMCx0aGlzLl9ibD0yMjI3ODczNTk1LHRo'@; put 'aXMuX2NsPTQyNzExNzU3MjMsdGhpcy5fZGw9MTU5NTc1MDEyOSx0aGlzLl9lbD0yOTE3NTY1MTM3LHRoaXMuX2ZsPTcyNTUxMTE5OSx0aGlzLl9nbD00MjE1Mzg5NTQ3LHRoaXMuX2hsPTMyNzAzMzIwOSx0aGlzfSxDLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHope2Zvcih2YXIgWT10'@; put 'aGlzLl93LEY9MHx0aGlzLl9haCxXPTB8dGhpcy5fYmgscT0wfHRoaXMuX2NoLHJlPTB8dGhpcy5fZGgsbWU9MHx0aGlzLl9laCxDZT0wfHRoaXMuX2ZoLEllPTB8dGhpcy5fZ2gsa2U9MHx0aGlzLl9oaCxxZT0wfHRoaXMuX2FsLFg9MHx0aGlzLl9ibCxmPTB8dGhpcy5fY2wsYj0wfHRoaXMu'@; put 'X2RsLGs9MHx0aGlzLl9lbCxNPTB8dGhpcy5fZmwsQj0wfHRoaXMuX2dsLEs9MHx0aGlzLl9obCxHPTA7RzwzMjtHKz0yKVlbR109ei5yZWFkSW50MzJCRSg0KkcpLFlbRysxXT16LnJlYWRJbnQzMkJFKDQqRys0KTtmb3IoO0c8MTYwO0crPTIpe3ZhciBEPVlbRy0zMF0scD1ZW0ctMzArMV0s'@; put 'ST14KEQscCksdWU9VShwLEQpLG5lPUgoRD1ZW0ctNF0scD1ZW0ctNCsxXSksX2U9VihwLEQpLGx0PVlbRy0zMl0sZHQ9WVtHLTMyKzFdLFJlPXVlK1lbRy0xNCsxXXwwLGFlPUkrWVtHLTE0XStOKFJlLHVlKXwwO2FlPShhZT1hZStuZStOKFJlPVJlK19lfDAsX2UpfDApK2x0K04oUmU9UmUr'@; put 'ZHR8MCxkdCl8MCxZW0ddPWFlLFlbRysxXT1SZX1mb3IodmFyIHhlPTA7eGU8MTYwO3hlKz0yKXthZT1ZW3hlXSxSZT1ZW3hlKzFdO3ZhciBqZT1TKEYsVyxxKSxBZT1TKHFlLFgsZiksRGU9TChGLHFlKSxGZT1MKHFlLEYpLGdlPVIobWUsayksY2U9UihrLG1lKSxoZT1BW3hlXSx3ZT1BW3hl'@; put 'KzFdLEplPXcobWUsQ2UsSWUpLHR0PXcoayxNLEIpLEtlPUsrY2V8MCwkdD1rZStnZStOKEtlLEspfDA7JHQ9KCR0PSgkdD0kdCtKZStOKEtlPUtlK3R0fDAsdHQpfDApK2hlK04oS2U9S2Urd2V8MCx3ZSl8MCkrYWUrTihLZT1LZStSZXwwLFJlKXwwO3ZhciBSdD1GZStBZXwwLEx0PURlK2pl'@; put 'K04oUnQsRmUpfDA7a2U9SWUsSz1CLEllPUNlLEI9TSxDZT1tZSxNPWssbWU9cmUrJHQrTihrPWIrS2V8MCxiKXwwLHJlPXEsYj1mLHE9VyxmPVgsVz1GLFg9cWUsRj0kdCtMdCtOKHFlPUtlK1J0fDAsS2UpfDB9dGhpcy5fYWw9dGhpcy5fYWwrcWV8MCx0aGlzLl9ibD10aGlzLl9ibCtYfDAs'@; put 'dGhpcy5fY2w9dGhpcy5fY2wrZnwwLHRoaXMuX2RsPXRoaXMuX2RsK2J8MCx0aGlzLl9lbD10aGlzLl9lbCtrfDAsdGhpcy5fZmw9dGhpcy5fZmwrTXwwLHRoaXMuX2dsPXRoaXMuX2dsK0J8MCx0aGlzLl9obD10aGlzLl9obCtLfDAsdGhpcy5fYWg9dGhpcy5fYWgrRitOKHRoaXMuX2FsLHFl'@; put 'KXwwLHRoaXMuX2JoPXRoaXMuX2JoK1crTih0aGlzLl9ibCxYKXwwLHRoaXMuX2NoPXRoaXMuX2NoK3ErTih0aGlzLl9jbCxmKXwwLHRoaXMuX2RoPXRoaXMuX2RoK3JlK04odGhpcy5fZGwsYil8MCx0aGlzLl9laD10aGlzLl9laCttZStOKHRoaXMuX2VsLGspfDAsdGhpcy5fZmg9dGhpcy5f'@; put 'ZmgrQ2UrTih0aGlzLl9mbCxNKXwwLHRoaXMuX2doPXRoaXMuX2doK0llK04odGhpcy5fZ2wsQil8MCx0aGlzLl9oaD10aGlzLl9oaCtrZStOKHRoaXMuX2hsLEspfDB9LEMucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIHo9cy5hbGxvY1Vuc2FmZSg2NCk7ZnVuY3Rpb24gWShGLFcs'@; put 'cSl7ei53cml0ZUludDMyQkUoRixxKSx6LndyaXRlSW50MzJCRShXLHErNCl9cmV0dXJuIFkodGhpcy5fYWgsdGhpcy5fYWwsMCksWSh0aGlzLl9iaCx0aGlzLl9ibCw4KSxZKHRoaXMuX2NoLHRoaXMuX2NsLDE2KSxZKHRoaXMuX2RoLHRoaXMuX2RsLDI0KSxZKHRoaXMuX2VoLHRoaXMuX2Vs'@; put 'LDMyKSxZKHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKSxZKHRoaXMuX2doLHRoaXMuX2dsLDQ4KSxZKHRoaXMuX2hoLHRoaXMuX2hsLDU2KSx6fSxmZS5leHBvcnRzPUN9LDcwNDUoZmUsaixoKXtmZS5leHBvcnRzPXM7dmFyIHk9aCg0NDM1NikuRXZlbnRFbWl0dGVyO2Z1bmN0aW9uIHMoKXt5LmNh'@; put 'bGwodGhpcyl9aCg3MTk5Mykocyx5KSxzLlJlYWRhYmxlPWgoMTk2MDkpLHMuV3JpdGFibGU9aCg0Nzg0OSkscy5EdXBsZXg9aCg3NDA3NSkscy5UcmFuc2Zvcm09aCgyOTA5KSxzLlBhc3NUaHJvdWdoPWgoMTg4MjMpLHMuZmluaXNoZWQ9aCgzMzEzOSkscy5waXBlbGluZT1oKDk2MjQ5KSxz'@; put 'LlN0cmVhbT1zLHMucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oQSx2KXt2YXIgQz10aGlzO2Z1bmN0aW9uIHcoVil7QS53cml0YWJsZSYmITE9PT1BLndyaXRlKFYpJiZDLnBhdXNlJiZDLnBhdXNlKCl9ZnVuY3Rpb24gUygpe0MucmVhZGFibGUmJkMucmVzdW1lJiZDLnJlc3VtZSgpfUMub24o'@; put 'ImRhdGEiLHcpLEEub24oImRyYWluIixTKSwhQS5faXNTdGRpbyYmKCF2fHwhMSE9PXYuZW5kKSYmKEMub24oImVuZCIsUiksQy5vbigiY2xvc2UiLHgpKTt2YXIgTD0hMTtmdW5jdGlvbiBSKCl7THx8KEw9ITAsQS5lbmQoKSl9ZnVuY3Rpb24geCgpe0x8fChMPSEwLCJmdW5jdGlvbiI9PXR5'@; put 'cGVvZiBBLmRlc3Ryb3kmJkEuZGVzdHJveSgpKX1mdW5jdGlvbiBVKFYpe2lmKEgoKSwwPT09eS5saXN0ZW5lckNvdW50KHRoaXMsImVycm9yIikpdGhyb3cgVn1mdW5jdGlvbiBIKCl7Qy5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsdyksQS5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLFMpLEMucmVt'@; put 'b3ZlTGlzdGVuZXIoImVuZCIsUiksQy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHgpLEMucmVtb3ZlTGlzdGVuZXIoImVycm9yIixVKSxBLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsVSksQy5yZW1vdmVMaXN0ZW5lcigiZW5kIixIKSxDLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsSCksQS5yZW1v'@; put 'dmVMaXN0ZW5lcigiY2xvc2UiLEgpfXJldHVybiBDLm9uKCJlcnJvciIsVSksQS5vbigiZXJyb3IiLFUpLEMub24oImVuZCIsSCksQy5vbigiY2xvc2UiLEgpLEEub24oImNsb3NlIixIKSxBLmVtaXQoInBpcGUiLEMpLEF9fSw3ODQ1NChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDI3'@; put 'MDU0KS5CdWZmZXIsYz15LmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKEYpe3N3aXRjaCgoRj0iIitGKSYmRi50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3Mt'@; put 'MiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIHYoRil7dmFyIFc7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24gQShGKXt2YXIgVz1mdW5jdGlvbiBzKEYpe2lmKCFGKXJldHVybiJ1dGY4Ijtm'@; put 'b3IodmFyIFc7Oylzd2l0Y2goRil7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4idXRmOCI7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiJ1dGYxNmxlIjtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiJsYXRpbjEi'@; put 'O2Nhc2UiYmFzZTY0IjpjYXNlImFzY2lpIjpjYXNlImhleCI6cmV0dXJuIEY7ZGVmYXVsdDppZihXKXJldHVybjtGPSgiIitGKS50b0xvd2VyQ2FzZSgpLFc9ITB9fShGKTtpZigic3RyaW5nIiE9dHlwZW9mIFcmJih5LmlzRW5jb2Rpbmc9PT1jfHwhYyhGKSkpdGhyb3cgbmV3IEVycm9yKCJV'@; put 'bmtub3duIGVuY29kaW5nOiAiK0YpO3JldHVybiBXfHxGfShGKSx0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjE2bGUiOnRoaXMudGV4dD1VLHRoaXMuZW5kPUgsVz00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD1MLFc9NDticmVhaztjYXNlImJhc2U2NCI6dGhpcy50ZXh0PVYsdGhp'@; put 'cy5lbmQ9TixXPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT16LHZvaWQodGhpcy5lbmQ9WSl9dGhpcy5sYXN0TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj15LmFsbG9jVW5zYWZlKFcpfWZ1bmN0aW9uIEMoRil7cmV0dXJuIEY8PTEyNz8wOkY+PjU9PTY/'@; put 'MjpGPj40PT0xND8zOkY+PjM9PTMwPzQ6Rj4+Nj09Mj8tMTotMn1mdW5jdGlvbiBMKEYpe3ZhciBXPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQscT1mdW5jdGlvbiBTKEYsVyl7aWYoMTI4IT0oMTkyJldbMF0pKXJldHVybiBGLmxhc3ROZWVkPTAsIlx1ZmZmZCI7aWYoRi5sYXN0TmVl'@; put 'ZD4xJiZXLmxlbmd0aD4xKXtpZigxMjghPSgxOTImV1sxXSkpcmV0dXJuIEYubGFzdE5lZWQ9MSwiXHVmZmZkIjtpZihGLmxhc3ROZWVkPjImJlcubGVuZ3RoPjImJjEyOCE9KDE5MiZXWzJdKSlyZXR1cm4gRi5sYXN0TmVlZD0yLCJcdWZmZmQifX0odGhpcyxGKTtyZXR1cm4gdm9pZCAwIT09'@; put 'cT9xOnRoaXMubGFzdE5lZWQ8PUYubGVuZ3RoPyhGLmNvcHkodGhpcy5sYXN0Q2hhcixXLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpKTooRi5jb3B5KHRoaXMubGFzdENoYXIsVywwLEYubGVuZ3RoKSx2b2lk'@; put 'KHRoaXMubGFzdE5lZWQtPUYubGVuZ3RoKSl9ZnVuY3Rpb24gVShGLFcpe2lmKChGLmxlbmd0aC1XKSUyPT0wKXt2YXIgcT1GLnRvU3RyaW5nKCJ1dGYxNmxlIixXKTtpZihxKXt2YXIgcmU9cS5jaGFyQ29kZUF0KHEubGVuZ3RoLTEpO2lmKHJlPj01NTI5NiYmcmU8PTU2MzE5KXJldHVybiB0'@; put 'aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1GW0YubGVuZ3RoLTFdLHEuc2xpY2UoMCwtMSl9cmV0dXJuIHF9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFz'@; put 'dENoYXJbMF09RltGLmxlbmd0aC0xXSxGLnRvU3RyaW5nKCJ1dGYxNmxlIixXLEYubGVuZ3RoLTEpfWZ1bmN0aW9uIEgoRil7dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9XK3RoaXMubGFzdENoYXIudG9TdHJpbmcoInV0ZjE2bGUiLDAs'@; put 'dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCk6V31mdW5jdGlvbiBWKEYsVyl7dmFyIHE9KEYubGVuZ3RoLVcpJTM7cmV0dXJuIDA9PT1xP0YudG9TdHJpbmcoImJhc2U2NCIsVyk6KHRoaXMubGFzdE5lZWQ9My1xLHRoaXMubGFzdFRvdGFsPTMsMT09PXE/dGhpcy5sYXN0Q2hhclswXT1G'@; put 'W0YubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPUZbRi5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1GW0YubGVuZ3RoLTFdKSxGLnRvU3RyaW5nKCJiYXNlNjQiLFcsRi5sZW5ndGgtcSkpfWZ1bmN0aW9uIE4oRil7dmFyIFc9RiYmRi5sZW5ndGg/dGhpcy53cml0ZShGKToiIjtyZXR1'@; put 'cm4gdGhpcy5sYXN0TmVlZD9XK3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQpOld9ZnVuY3Rpb24geihGKXtyZXR1cm4gRi50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBZKEYpe3JldHVybiBGJiZGLmxlbmd0aD90aGlzLndyaXRlKEYp'@; put 'OiIifWouST12LHYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEYpe2lmKDA9PT1GLmxlbmd0aClyZXR1cm4iIjt2YXIgVyxxO2lmKHRoaXMubGFzdE5lZWQpe2lmKHZvaWQgMD09PShXPXRoaXMuZmlsbExhc3QoRikpKXJldHVybiIiO3E9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9'@; put 'ZWxzZSBxPTA7cmV0dXJuIHE8Ri5sZW5ndGg/Vz9XK3RoaXMudGV4dChGLHEpOnRoaXMudGV4dChGLHEpOld8fCIifSx2LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24geChGKXt2YXIgVz1GJiZGLmxlbmd0aD90aGlzLndyaXRlKEYpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP1crIlx1ZmZmZCI6'@; put 'V30sdi5wcm90b3R5cGUudGV4dD1mdW5jdGlvbiBSKEYsVyl7dmFyIHE9ZnVuY3Rpb24gdyhGLFcscSl7dmFyIHJlPVcubGVuZ3RoLTE7aWYocmU8cSlyZXR1cm4gMDt2YXIgbWU9QyhXW3JlXSk7cmV0dXJuIG1lPj0wPyhtZT4wJiYoRi5sYXN0TmVlZD1tZS0xKSxtZSk6LS1yZTxxfHwtMj09'@; put 'PW1lPzA6KG1lPUMoV1tyZV0pKT49MD8obWU+MCYmKEYubGFzdE5lZWQ9bWUtMiksbWUpOi0tcmU8cXx8LTI9PT1tZT8wOihtZT1DKFdbcmVdKSk+PTA/KG1lPjAmJigyPT09bWU/bWU9MDpGLmxhc3ROZWVkPW1lLTMpLG1lKTowfSh0aGlzLEYsVyk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJu'@; put 'IEYudG9TdHJpbmcoInV0ZjgiLFcpO3RoaXMubGFzdFRvdGFsPXE7dmFyIHJlPUYubGVuZ3RoLShxLXRoaXMubGFzdE5lZWQpO3JldHVybiBGLmNvcHkodGhpcy5sYXN0Q2hhciwwLHJlKSxGLnRvU3RyaW5nKCJ1dGY4IixXLHJlKX0sdi5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24oRil7'@; put 'aWYodGhpcy5sYXN0TmVlZDw9Ri5sZW5ndGgpcmV0dXJuIEYuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7Ri5jb3B5KHRo'@; put 'aXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLEYubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT1GLmxlbmd0aH19LDc4NzU1KGZlLGosaCl7dmFyIHk9aCg2NDMxOCk7ZmUuZXhwb3J0cz17VGV4dEVuY29kZXI6eS5UZXh0RW5jb2RlcixUZXh0RGVjb2Rlcjp5LlRleHRE'@; put 'ZWNvZGVyfX0sNjc5NTEoZmUpeyFmdW5jdGlvbihqKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cyYmKGZlLmV4cG9ydHM9aiksalsiZW5jb2RpbmctaW5kZXhlcyJdPXtiaWc1OltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzM5MiwxOTUwNiwxNzkyMywxNzgzMCwxNzc4NCwxNjAzNTksMTk4MzEsMTc4NDMsMTYyOTkzLDE5NjgyLDE2MzAxMywxNTI1MywxODIzMCwxODI0NCwxOTUyNywxOTUyMCwxNDgxNTksMTQ0OTE5LDE2MDU5NCwxNTkzNzEsMTU5OTU0LDE5NTQz'@; put 'LDE3Mjg4MSwxODI1NSwxNzg4MiwxOTU4OSwxNjI5MjQsMTk3MTksMTkxMDgsMTgwODEsMTU4NDk5LDI5MjIxLDE1NDE5NiwxMzc4MjcsMTQ2OTUwLDE0NzI5NywyNjE4OSwyMjI2NyxudWxsLDMyMTQ5LDIyODEzLDE2Njg0MSwxNTg2MCwzODcwOCwxNjI3OTksMjM1MTUsMTM4NTkwLDIzMjA0'@; put 'LDEzODYxLDE3MTY5NiwyMzI0OSwyMzQ3OSwyMzgwNCwyNjQ3OCwzNDE5NSwxNzAzMDksMjk3OTMsMjk4NTMsMTQ0NTMsMTM4NTc5LDE0NTA1NCwxNTU2ODEsMTYxMDgsMTUzODIyLDE1MDkzLDMxNDg0LDQwODU1LDE0NzgwOSwxNjYxNTcsMTQzODUwLDEzMzc3MCwxNDM5NjYsMTcxNjIsMzM5'@; put 'MjQsNDA4NTQsMzc5MzUsMTg3MzYsMzQzMjMsMjI2NzgsMzg3MzAsMzc0MDAsMzExODQsMzEyODIsMjYyMDgsMjcxNzcsMzQ5NzMsMjk3NzIsMzE2ODUsMjY0OTgsMzEyNzYsMjEwNzEsMzY5MzQsMTM1NDIsMjk2MzYsMTU1MDY1LDI5ODk0LDQwOTAzLDIyNDUxLDE4NzM1LDIxNTgwLDE2Njg5'@; put 'LDE0NTAzOCwyMjU1MiwzMTM0NiwxNjI2NjEsMzU3MjcsMTgwOTQsMTU5MzY4LDE2NzY5LDE1NTAzMywzMTY2MiwxNDA0NzYsNDA5MDQsMTQwNDgxLDE0MDQ4OSwxNDA0OTIsNDA5MDUsMzQwNTIsMTQ0ODI3LDE2NTY0LDQwOTA2LDE3NjMzLDE3NTYxNSwyNTI4MSwyODc4Miw0MDkwNyxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNzM2LDEyNzM3LDEy'@; put 'NzM4LDEyNzM5LDEyNzQwLDEzMTM0MCwxMjc0MSwxMzEyODEsMTMxMjc3LDEyNzQyLDEyNzQzLDEzMTI3NSwxMzkyNDAsMTI3NDQsMTMxMjc0LDEyNzQ1LDEyNzQ2LDEyNzQ3LDEyNzQ4LDEzMTM0MiwxMjc0OSwxMjc1MCwyNTYsMTkzLDQ2MSwxOTIsMjc0LDIwMSwyODIsMjAwLDMzMiwyMTEs'@; put 'NDY1LDIxMCxudWxsLDc4NzAsbnVsbCw3ODcyLDIwMiwyNTcsMjI1LDQ2MiwyMjQsNTkzLDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLG51bGwsNzg3MSxudWxsLDc4NzMsMjM0LDYwOSw5'@; put 'MTc4LDkxNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTcyOTY5LDEzNTQ5MyxudWxsLDI1ODY2LG51bGwsbnVsbCwyMDAyOSwyODM4MSw0MDI3MCwzNzM0MyxudWxsLG51'@; put 'bGwsMTYxNTg5LDI1NzQ1LDIwMjUwLDIwMjY0LDIwMzkyLDIwODIyLDIwODUyLDIwODkyLDIwOTY0LDIxMTUzLDIxMTYwLDIxMzA3LDIxMzI2LDIxNDU3LDIxNDY0LDIyMjQyLDIyNzY4LDIyNzg4LDIyNzkxLDIyODM0LDIyODM2LDIzMzk4LDIzNDU0LDIzNDU1LDIzNzA2LDI0MTk4LDI0NjM1'@; put 'LDI1OTkzLDI2NjIyLDI2NjI4LDI2NzI1LDI3OTgyLDI4ODYwLDMwMDA1LDMyNDIwLDMyNDI4LDMyNDQyLDMyNDU1LDMyNDYzLDMyNDc5LDMyNTE4LDMyNTY3LDMzNDAyLDMzNDg3LDMzNjQ3LDM1MjcwLDM1Nzc0LDM1ODEwLDM2NzEwLDM2NzExLDM2NzE4LDI5NzEzLDMxOTk2LDMyMjA1LDI2'@; put 'OTUwLDMxNDMzLDIxMDMxLG51bGwsbnVsbCxudWxsLG51bGwsMzcyNjAsMzA5MDQsMzcyMTQsMzI5NTYsbnVsbCwzNjEwNywzMzAxNCwxMzM2MDcsbnVsbCxudWxsLDMyOTI3LDQwNjQ3LDE5NjYxLDQwMzkzLDQwNDYwLDE5NTE4LDE3MTUxMCwxNTk3NTgsNDA0NTgsMTcyMzM5LDEzNzYxLG51'@; put 'bGwsMjgzMTQsMzMzNDIsMjk5NzcsbnVsbCwxODcwNSwzOTUzMiwzOTU2Nyw0MDg1NywzMTExMSwxNjQ5NzIsMTM4Njk4LDEzMjU2MCwxNDIwNTQsMjAwMDQsMjAwOTcsMjAwOTYsMjAxMDMsMjAxNTksMjAyMDMsMjAyNzksMTMzODgsMjA0MTMsMTU5NDQsMjA0ODMsMjA2MTYsMTM0MzcsMTM0'@; put 'NTksMTM0NzcsMjA4NzAsMjI3ODksMjA5NTUsMjA5ODgsMjA5OTcsMjAxMDUsMjExMTMsMjExMzYsMjEyODcsMTM3NjcsMjE0MTcsMTM2NDksMjE0MjQsMTM2NTEsMjE0NDIsMjE1MzksMTM2NzcsMTM2ODIsMTM5NTMsMjE2NTEsMjE2NjcsMjE2ODQsMjE2ODksMjE3MTIsMjE3NDMsMjE3ODQs'@; put 'MjE3OTUsMjE4MDAsMTM3MjAsMjE4MjMsMTM3MzMsMTM3NTksMjE5NzUsMTM3NjUsMTYzMjA0LDIxNzk3LG51bGwsMTM0MjEwLDEzNDQyMSwxNTE4NTEsMjE5MDQsMTQyNTM0LDE0ODI4LDEzMTkwNSwzNjQyMiwxNTA5NjgsMTY5MTg5LDE2NDY3LDE2NDAzMCwzMDU4NiwxNDIzOTIsMTQ5MDAs'@; put 'MTgzODksMTY0MTg5LDE1ODE5NCwxNTEwMTgsMjU4MjEsMTM0NTI0LDEzNTA5MiwxMzQzNTcsMTM1NDEyLDI1NzQxLDM2NDc4LDEzNDgwNiwxMzQxNTUsMTM1MDEyLDE0MjUwNSwxNjQ0MzgsMTQ4NjkxLG51bGwsMTM0NDcwLDE3MDU3MywxNjQwNzMsMTg0MjAsMTUxMjA3LDE0MjUzMCwzOTYw'@; put 'MiwxNDk1MSwxNjk0NjAsMTYzNjUsMTM1NzQsMTUyMjYzLDE2OTk0MCwxNjE5OTIsMTQyNjYwLDQwMzAyLDM4OTMzLG51bGwsMTczNjksMTU1ODEzLDI1NzgwLDIxNzMxLDE0MjY2OCwxNDIyODIsMTM1Mjg3LDE0ODQzLDEzNTI3OSwxNTc0MDIsMTU3NDYyLDE2MjIwOCwyNTgzNCwxNTE2MzQs'@; put 'MTM0MjExLDM2NDU2LDEzOTY4MSwxNjY3MzIsMTMyOTEzLG51bGwsMTg0NDMsMTMxNDk3LDE2Mzc4LDIyNjQzLDE0MjczMyxudWxsLDE0ODkzNiwxMzIzNDgsMTU1Nzk5LDEzNDk4OCwxMzQ1NTAsMjE4ODEsMTY1NzEsMTczMzgsbnVsbCwxOTEyNCwxNDE5MjYsMTM1MzI1LDMzMTk0LDM5MTU3'@; put 'LDEzNDU1NiwyNTQ2NSwxNDg0NiwxNDExNzMsMzYyODgsMjIxNzcsMjU3MjQsMTU5MzksbnVsbCwxNzM1NjksMTM0NjY1LDE0MjAzMSwxNDI1MzcsbnVsbCwxMzUzNjgsMTQ1ODU4LDE0NzM4LDE0ODU0LDE2NDUwNywxMzY4OCwxNTUyMDksMTM5NDYzLDIyMDk4LDEzNDk2MSwxNDI1MTQsMTY5'@; put 'NzYwLDEzNTAwLDI3NzA5LDE1MTA5OSxudWxsLG51bGwsMTYxMTQwLDE0Mjk4NywxMzk3ODQsMTczNjU5LDE2NzExNywxMzQ3NzgsMTM0MTk2LDE1NzcyNCwzMjY1OSwxMzUzNzUsMTQxMzE1LDE0MTYyNSwxMzgxOSwxNTIwMzUsMTM0Nzk2LDEzNTA1MywxMzQ4MjYsMTYyNzUsMTM0OTYwLDEz'@; put 'NDQ3MSwxMzU1MDMsMTM0NzMyLG51bGwsMTM0ODI3LDEzNDA1NywxMzQ0NzIsMTM1MzYwLDEzNTQ4NSwxNjM3NywxNDA5NTAsMjU2NTAsMTM1MDg1LDE0NDM3MiwxNjEzMzcsMTQyMjg2LDEzNDUyNiwxMzQ1MjcsMTQyNDE3LDE0MjQyMSwxNDg3MiwxMzQ4MDgsMTM1MzY3LDEzNDk1OCwxNzM2'@; put 'MTgsMTU4NTQ0LDE2NzEyMiwxNjczMjEsMTY3MTE0LDM4MzE0LDIxNzA4LDMzNDc2LDIxOTQ1LG51bGwsMTcxNzE1LDM5OTc0LDM5NjA2LDE2MTYzMCwxNDI4MzAsMjg5OTIsMzMxMzMsMzMwMDQsMjM1ODAsMTU3MDQyLDMzMDc2LDE0MjMxLDIxMzQzLDE2NDAyOSwzNzMwMiwxMzQ5MDYsMTM0'@; put 'NjcxLDEzNDc3NSwxMzQ5MDcsMTM3ODksMTUxMDE5LDEzODMzLDEzNDM1OCwyMjE5MSwxNDEyMzcsMTM1MzY5LDEzNDY3MiwxMzQ3NzYsMTM1Mjg4LDEzNTQ5NiwxNjQzNTksMTM2Mjc3LDEzNDc3NywxNTExMjAsMTQyNzU2LDIzMTI0LDEzNTE5NywxMzUxOTgsMTM1NDEzLDEzNTQxNCwyMjQy'@; put 'OCwxMzQ2NzMsMTYxNDI4LDE2NDU1NywxMzUwOTMsMTM0Nzc5LDE1MTkzNCwxNDA4MywxMzUwOTQsMTM1NTUyLDE1MjI4MCwxNzI3MzMsMTQ5OTc4LDEzNzI3NCwxNDc4MzEsMTY0NDc2LDIyNjgxLDIxMDk2LDEzODUwLDE1MzQwNSwzMTY2NiwyMzQwMCwxODQzMiwxOTI0NCw0MDc0MywxODkx'@; put 'OSwzOTk2NywzOTgyMSwxNTQ0ODQsMTQzNjc3LDIyMDExLDEzODEwLDIyMTUzLDIwMDA4LDIyNzg2LDEzODE3NywxOTQ2ODAsMzg3MzcsMTMxMjA2LDIwMDU5LDIwMTU1LDEzNjMwLDIzNTg3LDI0NDAxLDI0NTE2LDE0NTg2LDI1MTY0LDI1OTA5LDI3NTE0LDI3NzAxLDI3NzA2LDI4NzgwLDI5'@; put 'MjI3LDIwMDEyLDI5MzU3LDE0OTczNywzMjU5NCwzMTAzNSwzMTk5MywzMjU5NSwxNTYyNjYsMTM1MDUsbnVsbCwxNTY0OTEsMzI3NzAsMzI4OTYsMTU3MjAyLDE1ODAzMywyMTM0MSwzNDkxNiwzNTI2NSwxNjE5NzAsMzU3NDQsMzYxMjUsMzgwMjEsMzgyNjQsMzgyNzEsMzgzNzYsMTY3NDM5'@; put 'LDM4ODg2LDM5MDI5LDM5MTE4LDM5MTM0LDM5MjY3LDE3ZTQsNDAwNjAsNDA0NzksNDA2NDQsMjc1MDMsNjM3NTEsMjAwMjMsMTMxMjA3LDM4NDI5LDI1MTQzLDM4MDUwLG51bGwsMjA1MzksMjgxNTgsMTcxMTIzLDQwODcwLDE1ODE3LDM0OTU5LDE0Nzc5MCwyODc5MSwyMzc5NywxOTIzMiwx'@; put 'NTIwMTMsMTM2NTcsMTU0OTI4LDI0ODY2LDE2NjQ1MCwzNjc3NSwzNzM2NiwyOTA3MywyNjM5MywyOTYyNiwxNDQwMDEsMTcyMjk1LDE1NDk5LDEzNzYwMCwxOTIxNiwzMDk0OCwyOTY5OCwyMDkxMCwxNjU2NDcsMTYzOTMsMjcyMzUsMTcyNzMwLDE2OTMxLDM0MzE5LDEzMzc0MywzMTI3NCwx'@; put 'NzAzMTEsMTY2NjM0LDM4NzQxLDI4NzQ5LDIxMjg0LDEzOTM5MCwzNzg3NiwzMDQyNSwxNjYzNzEsNDA4NzEsMzA2ODUsMjAxMzEsMjA0NjQsMjA2NjgsMjAwMTUsMjAyNDcsNDA4NzIsMjE1NTYsMzIxMzksMjI2NzQsMjI3MzYsMTM4Njc4LDI0MjEwLDI0MjE3LDI0NTE0LDE0MTA3NCwyNTk5'@; put 'NSwxNDQzNzcsMjY5MDUsMjcyMDMsMTQ2NTMxLDI3OTAzLG51bGwsMjkxODQsMTQ4NzQxLDI5NTgwLDE2MDkxLDE1MDAzNSwyMzMxNywyOTg4MSwzNTcxNSwxNTQ3ODgsMTUzMjM3LDMxMzc5LDMxNzI0LDMxOTM5LDMyMzY0LDMzNTI4LDM0MTk5LDQwODczLDM0OTYwLDQwODc0LDM2NTM3LDQw'@; put 'ODc1LDM2ODE1LDM0MTQzLDM5MzkyLDM3NDA5LDQwODc2LDE2NzM1MywxMzYyNTUsMTY0OTcsMTcwNTgsMjMwNjYsbnVsbCxudWxsLG51bGwsMzkwMTYsMjY0NzUsMTcwMTQsMjIzMzMsbnVsbCwzNDI2MiwxNDk4ODMsMzM0NzEsMTYwMDEzLDE5NTg1LDE1OTA5MiwyMzkzMSwxNTg0ODUsMTU5'@; put 'Njc4LDQwODc3LDQwODc4LDIzNDQ2LDQwODc5LDI2MzQzLDMyMzQ3LDI4MjQ3LDMxMTc4LDE1NzUyLDE3NjAzLDE0Mzk1OCwxNDEyMDYsMTczMDYsMTc3MTgsbnVsbCwyMzc2NSwxNDYyMDIsMzU1NzcsMjM2NzIsMTU2MzQsMTQ0NzIxLDIzOTI4LDQwODgyLDI5MDE1LDE3NzUyLDE0NzY5Miwx'@; put 'Mzg3ODcsMTk1NzUsMTQ3MTIsMTMzODYsMTMxNDkyLDE1ODc4NSwzNTUzMiwyMDQwNCwxMzE2NDEsMjI5NzUsMzMxMzIsMzg5OTgsMTcwMjM0LDI0Mzc5LDEzNDA0NyxudWxsLDEzOTcxMywxNjYyNTMsMTY2NDIsMTgxMDcsMTY4MDU3LDE2MTM1LDQwODgzLDE3MjQ2OSwxNjYzMiwxNDI5NCwx'@; put 'ODE2NywxNTg3OTAsMTY3NjQsMTY1NTU0LDE2MDc2NywxNzc3MywxNDU0OCwxNTI3MzAsMTc3NjEsMTc2OTEsMTk4NDksMTk1NzksMTk4MzAsMTc4OTgsMTYzMjgsMTUwMjg3LDEzOTIxLDE3NjMwLDE3NTk3LDE2ODc3LDIzODcwLDIzODgwLDIzODk0LDE1ODY4LDE0MzUxLDIzOTcyLDIzOTkz'@; put 'LDE0MzY4LDE0MzkyLDI0MTMwLDI0MjUzLDI0MzU3LDI0NDUxLDE0NjAwLDE0NjEyLDE0NjU1LDE0NjY5LDI0NzkxLDI0ODkzLDIzNzgxLDE0NzI5LDI1MDE1LDI1MDE3LDI1MDM5LDE0Nzc2LDI1MTMyLDI1MjMyLDI1MzE3LDI1MzY4LDE0ODQwLDIyMTkzLDE0ODUxLDI1NTcwLDI1NTk1LDI1'@; put 'NjA3LDI1NjkwLDE0OTIzLDI1NzkyLDIzODI5LDIyMDQ5LDQwODYzLDE0OTk5LDI1OTkwLDE1MDM3LDI2MTExLDI2MTk1LDE1MDkwLDI2MjU4LDE1MTM4LDI2MzkwLDE1MTcwLDI2NTMyLDI2NjI0LDE1MTkyLDI2Njk4LDI2NzU2LDE1MjE4LDE1MjE3LDE1MjI3LDI2ODg5LDI2OTQ3LDI5Mjc2'@; put 'LDI2OTgwLDI3MDM5LDI3MDEzLDE1MjkyLDI3MDk0LDE1MzI1LDI3MjM3LDI3MjUyLDI3MjQ5LDI3MjY2LDE1MzQwLDI3Mjg5LDE1MzQ2LDI3MzA3LDI3MzE3LDI3MzQ4LDI3MzgyLDI3NTIxLDI3NTg1LDI3NjI2LDI3NzY1LDI3ODE4LDE1NTYzLDI3OTA2LDI3OTEwLDI3OTQyLDI4MDMzLDE1'@; put 'NTk5LDI4MDY4LDI4MDgxLDI4MTgxLDI4MTg0LDI4MjAxLDI4Mjk0LDE2NjMzNiwyODM0NywyODM4NiwyODM3OCw0MDgzMSwyODM5MiwyODM5MywyODQ1MiwyODQ2OCwxNTY4NiwxNDcyNjUsMjg1NDUsMjg2MDYsMTU3MjIsMTU3MzMsMjkxMTEsMjM3MDUsMTU3NTQsMjg3MTYsMTU3NjEsMjg3'@; put 'NTIsMjg3NTYsMjg3ODMsMjg3OTksMjg4MDksMTMxODc3LDE3MzQ1LDEzODA5LDEzNDg3MiwxNDcxNTksMjI0NjIsMTU5NDQzLDI4OTkwLDE1MzU2OCwxMzkwMiwyNzA0MiwxNjY4ODksMjM0MTIsMzEzMDUsMTUzODI1LDE2OTE3NywzMTMzMywzMTM1NywxNTQwMjgsMzE0MTksMzE0MDgsMzE0'@; put 'MjYsMzE0MjcsMjkxMzcsMTU2ODEzLDE2ODQyLDMxNDUwLDMxNDUzLDMxNDY2LDE2ODc5LDIxNjgyLDE1NDYyNSwzMTQ5OSwzMTU3MywzMTUyOSwxNTIzMzQsMTU0ODc4LDMxNjUwLDMxNTk5LDMzNjkyLDE1NDU0OCwxNTg4NDcsMzE2OTYsMzM4MjUsMzE2MzQsMzE2NzIsMTU0OTEyLDE1Nzg5'@; put 'LDE1NDcyNSwzMzkzOCwzMTczOCwzMTc1MCwzMTc5NywxNTQ4MTcsMzE4MTIsMzE4NzUsMTQ5NjM0LDMxOTEwLDI2MjM3LDE0ODg1NiwzMTk0NSwzMTk0MywzMTk3NCwzMTg2MCwzMTk4NywzMTk4OSwzMTk1MCwzMjM1OSwxNzY5MywxNTkzMDAsMzIwOTMsMTU5NDQ2LDI5ODM3LDMyMTM3LDMy'@; put 'MTcxLDI4OTgxLDMyMTc5LDMyMjEwLDE0NzU0MywxNTU2ODksMzIyMjgsMTU2MzUsMzIyNDUsMTM3MjA5LDMyMjI5LDE2NDcxNywzMjI4NSwxNTU5MzcsMTU1OTk0LDMyMzY2LDMyNDAyLDE3MTk1LDM3OTk2LDMyMjk1LDMyNTc2LDMyNTc3LDMyNTgzLDMxMDMwLDE1NjM2OCwzOTM5MywzMjY2'@; put 'MywxNTY0OTcsMzI2NzUsMTM2ODAxLDEzMTE3NiwxNzc1NiwxNDUyNTQsMTc2NjcsMTY0NjY2LDMyNzYyLDE1NjgwOSwzMjc3MywzMjc3NiwzMjc5NywzMjgwOCwzMjgxNSwxNzIxNjcsMTU4OTE1LDMyODI3LDMyODI4LDMyODY1LDE0MTA3NiwxODgyNSwxNTcyMjIsMTQ2OTE1LDE1NzQxNiwy'@; put 'NjQwNSwzMjkzNSwxNjY0NzIsMzMwMzEsMzMwNTAsMjI3MDQsMTQxMDQ2LDI3Nzc1LDE1NjgyNCwxNTE0ODAsMjU4MzEsMTM2MzMwLDMzMzA0LDEzNzMxMCwyNzIxOSwxNTAxMTcsMTUwMTY1LDE3NTMwLDMzMzIxLDEzMzkwMSwxNTgyOTAsMTQ2ODE0LDIwNDczLDEzNjQ0NSwzNDAxOCwzMzYz'@; put 'NCwxNTg0NzQsMTQ5OTI3LDE0NDY4OCwxMzcwNzUsMTQ2OTM2LDMzNDUwLDI2OTA3LDE5NDk2NCwxNjg1OSwzNDEyMywzMzQ4OCwzMzU2MiwxMzQ2NzgsMTM3MTQwLDE0MDE3LDE0Mzc0MSwxNDQ3MzAsMzM0MDMsMzM1MDYsMzM1NjAsMTQ3MDgzLDE1OTEzOSwxNTg0NjksMTU4NjE1LDE0NDg0'@; put 'NiwxNTgwNywzMzU2NSwyMTk5NiwzMzY2OSwxNzY3NSwxNTkxNDEsMzM3MDgsMzM3MjksMzM3NDcsMTM0MzgsMTU5NDQ0LDI3MjIzLDM0MTM4LDEzNDYyLDE1OTI5OCwxNDMwODcsMzM4ODAsMTU0NTk2LDMzOTA1LDE1ODI3LDE3NjM2LDI3MzAzLDMzODY2LDE0NjYxMywzMTA2NCwzMzk2MCwx'@; put 'NTg2MTQsMTU5MzUxLDE1OTI5OSwzNDAxNCwzMzgwNywzMzY4MSwxNzU2OCwzMzkzOSwzNDAyMCwxNTQ3NjksMTY5NjAsMTU0ODE2LDE3NzMxLDM0MTAwLDIzMjgyLDE1OTM4NSwxNzcwMywzNDE2MywxNzY4NiwyNjU1OSwzNDMyNiwxNjU0MTMsMTY1NDM1LDM0MjQxLDE1OTg4MCwzNDMwNiwx'@; put 'MzY1NzgsMTU5OTQ5LDE5NDk5NCwxNzc3MCwzNDM0NCwxMzg5NiwxMzczNzgsMjE0OTUsMTYwNjY2LDM0NDMwLDM0NjczLDE3MjI4MCwzNDc5OCwxNDIzNzUsMzQ3MzcsMzQ3NzgsMzQ4MzEsMjIxMTMsMzQ0MTIsMjY3MTAsMTc5MzUsMzQ4ODUsMzQ4ODYsMTYxMjQ4LDE0Njg3MywxNjEyNTIs'@; put 'MzQ5MTAsMzQ5NzIsMTgwMTEsMzQ5OTYsMzQ5OTcsMjU1MzcsMzUwMTMsMzA1ODMsMTYxNTUxLDM1MjA3LDM1MjEwLDM1MjM4LDM1MjQxLDM1MjM5LDM1MjYwLDE2NjQzNywzNTMwMywxNjIwODQsMTYyNDkzLDM1NDg0LDMwNjExLDM3Mzc0LDM1NDcyLDE2MjM5MywzMTQ2NSwxNjI2MTgsMTQ3'@; put 'MzQzLDE4MTk1LDE2MjYxNiwyOTA1MiwzNTU5NiwzNTYxNSwxNTI2MjQsMTUyOTMzLDM1NjQ3LDM1NjYwLDM1NjYxLDM1NDk3LDE1MDEzOCwzNTcyOCwzNTczOSwzNTUwMywxMzY5MjcsMTc5NDEsMzQ4OTUsMzU5OTUsMTYzMTU2LDE2MzIxNSwxOTUwMjgsMTQxMTcsMTYzMTU1LDM2MDU0LDE2'@; put 'MzIyNCwxNjMyNjEsMzYxMTQsMzYwOTksMTM3NDg4LDM2MDU5LDI4NzY0LDM2MTEzLDE1MDcyOSwxNjA4MCwzNjIxNSwzNjI2NSwxNjM4NDIsMTM1MTg4LDE0OTg5OCwxNTIyOCwxNjQyODQsMTYwMDEyLDMxNDYzLDM2NTI1LDM2NTM0LDM2NTQ3LDM3NTg4LDM2NjMzLDM2NjUzLDE2NDcwOSwx'@; put 'NjQ4ODIsMzY3NzMsMzc2MzUsMTcyNzAzLDEzMzcxMiwzNjc4NywxODczMCwxNjYzNjYsMTY1MTgxLDE0Njg3NSwyNDMxMiwxNDM5NzAsMzY4NTcsMTcyMDUyLDE2NTU2NCwxNjUxMjEsMTQwMDY5LDE0NzIwLDE1OTQ0NywzNjkxOSwxNjUxODAsMTYyNDk0LDM2OTYxLDE2NTIyOCwxNjUzODcs'@; put 'MzcwMzIsMTY1NjUxLDM3MDYwLDE2NTYwNiwzNzAzOCwzNzExNywzNzIyMywxNTA4OCwzNzI4OSwzNzMxNiwzMTkxNiwxNjYxOTUsMTM4ODg5LDM3MzkwLDI3ODA3LDM3NDQxLDM3NDc0LDE1MzAxNywzNzU2MSwxNjY1OTgsMTQ2NTg3LDE2NjY2OCwxNTMwNTEsMTM0NDQ5LDM3Njc2LDM3NzM5'@; put 'LDE2NjYyNSwxNjY4OTEsMjg4MTUsMjMyMzUsMTY2NjI2LDE2NjYyOSwxODc4OSwzNzQ0NCwxNjY4OTIsMTY2OTY5LDE2NjkxMSwzNzc0NywzNzk3OSwzNjU0MCwzODI3NywzODMxMCwzNzkyNiwzODMwNCwyODY2MiwxNzA4MSwxNDA5MjIsMTY1NTkyLDEzNTgwNCwxNDY5OTAsMTg5MTEsMjc2'@; put 'NzYsMzg1MjMsMzg1NTAsMTY3NDgsMzg1NjMsMTU5NDQ1LDI1MDUwLDM4NTgyLDMwOTY1LDE2NjYyNCwzODU4OSwyMTQ1MiwxODg0OSwxNTg5MDQsMTMxNzAwLDE1NjY4OCwxNjgxMTEsMTY4MTY1LDE1MDIyNSwxMzc0OTMsMTQ0MTM4LDM4NzA1LDM0MzcwLDM4NzEwLDE4OTU5LDE3NzI1LDE3'@; put 'Nzk3LDE1MDI0OSwyODc4OSwyMzM2MSwzODY4MywzODc0OCwxNjg0MDUsMzg3NDMsMjMzNzAsMTY4NDI3LDM4NzUxLDM3OTI1LDIwNjg4LDE0MzU0MywxNDM1NDgsMzg3OTMsMzg4MTUsMzg4MzMsMzg4NDYsMzg4NDgsMzg4NjYsMzg4ODAsMTUyNjg0LDM4ODk0LDI5NzI0LDE2OTAxMSwzODkx'@; put 'MSwzODkwMSwxNjg5ODksMTYyMTcwLDE5MTUzLDM4OTY0LDM4OTYzLDM4OTg3LDM5MDE0LDE1MTE4LDE2MDExNywxNTY5NywxMzI2NTYsMTQ3ODA0LDE1MzM1MCwzOTExNCwzOTA5NSwzOTExMiwzOTExMSwxOTE5OSwxNTkwMTUsMTM2OTE1LDIxOTM2LDM5MTM3LDM5MTQyLDM5MTQ4LDM3NzUy'@; put 'LDM5MjI1LDE1MDA1NywxOTMxNCwxNzAwNzEsMTcwMjQ1LDM5NDEzLDM5NDM2LDM5NDgzLDM5NDQwLDM5NTEyLDE1MzM4MSwxNDAyMCwxNjgxMTMsMTcwOTY1LDM5NjQ4LDM5NjUwLDE3MDc1NywzOTY2OCwxOTQ3MCwzOTcwMCwzOTcyNSwxNjUzNzYsMjA1MzIsMzk3MzIsMTU4MTIwLDE0NTMx'@; put 'LDE0MzQ4NSwzOTc2MCwzOTc0NCwxNzEzMjYsMjMxMDksMTM3MzE1LDM5ODIyLDE0ODA0MywzOTkzOCwzOTkzNSwzOTk0OCwxNzE2MjQsNDA0MDQsMTcxOTU5LDE3MjQzNCwxNzI0NTksMTcyMjU3LDE3MjMyMywxNzI1MTEsNDAzMTgsNDAzMjMsMTcyMzQwLDQwNDYyLDI2NzYwLDQwMzg4LDEz'@; put 'OTYxMSwxNzI0MzUsMTcyNTc2LDEzNzUzMSwxNzI1OTUsNDAyNDksMTcyMjE3LDE3MjcyNCw0MDU5Miw0MDU5Nyw0MDYwNiw0MDYxMCwxOTc2NCw0MDYxOCw0MDYyMywxNDgzMjQsNDA2NDEsMTUyMDAsMTQ4MjEsMTU2NDUsMjAyNzQsMTQyNzAsMTY2OTU1LDQwNzA2LDQwNzEyLDE5MzUwLDM3'@; put 'OTI0LDE1OTEzOCw0MDcyNyw0MDcyNiw0MDc2MSwyMjE3NSwyMjE1NCw0MDc3MywzOTM1MiwxNjgwNzUsMzg4OTgsMzM5MTksNDA4MDIsNDA4MDksMzE0NTIsNDA4NDYsMjkyMDYsMTkzOTAsMTQ5ODc3LDE0OTk0NywyOTA0NywxNTAwMDgsMTQ4Mjk2LDE1MDA5NywyOTU5OCwxNjY4NzQsMTM3'@; put 'NDY2LDMxMTM1LDE2NjI3MCwxNjc0NzgsMzc3MzcsMzc4NzUsMTY2NDY4LDM3NjEyLDM3NzYxLDM3ODM1LDE2NjI1MiwxNDg2NjUsMjkyMDcsMTYxMDcsMzA1NzgsMzEyOTksMjg4ODAsMTQ4NTk1LDE0ODQ3MiwyOTA1NCwxMzcxOTksMjg4MzUsMTM3NDA2LDE0NDc5MywxNjA3MSwxMzczNDks'@; put 'MTUyNjIzLDEzNzIwOCwxNDExNCwxMzY5NTUsMTM3MjczLDE0MDQ5LDEzNzA3NiwxMzc0MjUsMTU1NDY3LDE0MTE1LDEzNjg5NiwyMjM2MywxNTAwNTMsMTM2MTkwLDEzNTg0OCwxMzYxMzQsMTM2Mzc0LDM0MDUxLDE0NTA2MiwzNDA1MSwzMzg3NywxNDk5MDgsMTYwMTAxLDE0Njk5MywxNTI5'@; put 'MjQsMTQ3MTk1LDE1OTgyNiwxNzY1MiwxNDUxMzQsMTcwMzk3LDE1OTUyNiwyNjYxNywxNDEzMSwxNTM4MSwxNTg0NywyMjYzNiwxMzc1MDYsMjY2NDAsMTY0NzEsMTQ1MjE1LDE0NzY4MSwxNDc1OTUsMTQ3NzI3LDE1ODc1MywyMTcwNywyMjE3NCwxNTczNjEsMjIxNjIsMTM1MTM1LDEzNDA1'@; put 'NiwxMzQ2NjksMzc4MzAsMTY2Njc1LDM3Nzg4LDIwMjE2LDIwNzc5LDE0MzYxLDE0ODUzNCwyMDE1NiwxMzIxOTcsMTMxOTY3LDIwMjk5LDIwMzYyLDE1MzE2OSwyMzE0NCwxMzE0OTksMTMyMDQzLDE0NzQ1LDEzMTg1MCwxMzIxMTYsMTMzNjUsMjAyNjUsMTMxNzc2LDE2NzYwMywxMzE3MDEs'@; put 'MzU1NDYsMTMxNTk2LDIwMTIwLDIwNjg1LDIwNzQ5LDIwMzg2LDIwMjI3LDE1MDAzMCwxNDcwODIsMjAyOTAsMjA1MjYsMjA1ODgsMjA2MDksMjA0MjgsMjA0NTMsMjA1NjgsMjA3MzIsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjgyNzgsMTQ0Nzg5LDE0NzAwMSwxNDcxMzUsMjgwMTgsMTM3'@; put 'MzQ4LDE0NzA4MSwyMDkwNCwyMDkzMSwxMzI1NzYsMTc2MjksMTMyMjU5LDEzMjI0MiwxMzIyNDEsMzYyMTgsMTY2NTU2LDEzMjg3OCwyMTA4MSwyMTE1NiwxMzMyMzUsMjEyMTcsMzc3NDIsMTgwNDIsMjkwNjgsMTQ4MzY0LDEzNDE3NiwxNDk5MzIsMTM1Mzk2LDI3MDg5LDEzNDY4NSwyOTgx'@; put 'NywxNjA5NCwyOTg0OSwyOTcxNiwyOTc4MiwyOTU5MiwxOTM0MiwxNTAyMDQsMTQ3NTk3LDIxNDU2LDEzNzAwLDI5MTk5LDE0NzY1NywyMTk0MCwxMzE5MDksMjE3MDksMTM0MDg2LDIyMzAxLDM3NDY5LDM4NjQ0LDM3NzM0LDIyNDkzLDIyNDEzLDIyMzk5LDEzODg2LDIyNzMxLDIzMTkzLDE2'@; put 'NjQ3MCwxMzY5NTQsMTM3MDcxLDEzNjk3NiwyMzA4NCwyMjk2OCwzNzUxOSwyMzE2NiwyMzI0NywyMzA1OCwxNTM5MjYsMTM3NzE1LDEzNzMxMywxNDgxMTcsMTQwNjksMjc5MDksMjk3NjMsMjMwNzMsMTU1MjY3LDIzMTY5LDE2Njg3MSwxMzIxMTUsMzc4NTYsMjk4MzYsMTM1OTM5LDI4OTMz'@; put 'LDE4ODAyLDM3ODk2LDE2NjM5NSwzNzgyMSwxNDI0MCwyMzU4MiwyMzcxMCwyNDE1OCwyNDEzNiwxMzc2MjIsMTM3NTk2LDE0NjE1OCwyNDI2OSwyMzM3NSwxMzc0NzUsMTM3NDc2LDE0MDgxLDEzNzM3NiwxNDA0NSwxMzY5NTgsMTQwMzUsMzMwNjYsMTY2NDcxLDEzODY4MiwxNDQ0OTgsMTY2'@; put 'MzEyLDI0MzMyLDI0MzM0LDEzNzUxMSwxMzcxMzEsMjMxNDcsMTM3MDE5LDIzMzY0LDM0MzI0LDE2MTI3NywzNDkxMiwyNDcwMiwxNDE0MDgsMTQwODQzLDI0NTM5LDE2MDU2LDE0MDcxOSwxNDA3MzQsMTY4MDcyLDE1OTYwMywyNTAyNCwxMzExMzQsMTMxMTQyLDE0MDgyNywyNDk4NSwyNDk4'@; put 'NCwyNDY5MywxNDI0OTEsMTQyNTk5LDE0OTIwNCwxNjgyNjksMjU3MTMsMTQ5MDkzLDE0MjE4NiwxNDg4OSwxNDIxMTQsMTQ0NDY0LDE3MDIxOCwxNDI5NjgsMjUzOTksMTczMTQ3LDI1NzgyLDI1MzkzLDI1NTUzLDE0OTk4NywxNDI2OTUsMjUyNTIsMTQyNDk3LDI1NjU5LDI1OTYzLDI2OTk0'@; put 'LDE1MzQ4LDE0MzUwMiwxNDQwNDUsMTQ5ODk3LDE0NDA0MywyMTc3MywxNDQwOTYsMTM3NDMzLDE2OTAyMywyNjMxOCwxNDQwMDksMTQzNzk1LDE1MDcyLDE2Nzg0LDE1Mjk2NCwxNjY2OTAsMTUyOTc1LDEzNjk1NiwxNTI5MjMsMTUyNjEzLDMwOTU4LDE0MzYxOSwxMzcyNTgsMTQzOTI0LDEz'@; put 'NDEyLDE0Mzg4NywxNDM3NDYsMTQ4MTY5LDI2MjU0LDE1OTAxMiwyNjIxOSwxOTM0NywyNjE2MCwxNjE5MDQsMTM4NzMxLDI2MjExLDE0NDA4MiwxNDQwOTcsMjYxNDIsMTUzNzE0LDE0NTQ1LDE0NTQ2NiwxNDUzNDAsMTUyNTcsMTQ1MzE0LDE0NDM4MiwyOTkwNCwxNTI1NCwyNjUxMSwxNDkw'@; put 'MzQsMjY4MDYsMjY2NTQsMTUzMDAsMjczMjYsMTQ0MzUsMTQ1MzY1LDE0ODYxNSwyNzE4NywyNzIxOCwyNzMzNywyNzM5NywxMzc0OTAsMjU4NzMsMjY3NzYsMjcyMTIsMTUzMTksMjcyNTgsMjc0NzksMTQ3MzkyLDE0NjU4NiwzNzc5MiwzNzYxOCwxNjY4OTAsMTY2NjAzLDM3NTEzLDE2Mzg3'@; put 'MCwxNjYzNjQsMzc5OTEsMjgwNjksMjg0MjcsMTQ5OTk2LDI4MDA3LDE0NzMyNywxNTc1OSwyODE2NCwxNDc1MTYsMjMxMDEsMjgxNzAsMjI1OTksMjc5NDAsMzA3ODYsMjg5ODcsMTQ4MjUwLDE0ODA4NiwyODkxMywyOTI2NCwyOTMxOSwyOTMzMiwxNDkzOTEsMTQ5Mjg1LDIwODU3LDE1MDE4'@; put 'MCwxMzI1ODcsMjk4MTgsMTQ3MTkyLDE0NDk5MSwxNTAwOTAsMTQ5NzgzLDE1NTYxNywxNjEzNCwxNjA0OSwxNTAyMzksMTY2OTQ3LDE0NzI1MywyNDc0MywxNjExNSwyOTkwMCwyOTc1NiwzNzc2NywyOTc1MSwxNzU2NywxNTkyMTAsMTc3NDUsMzAwODMsMTYyMjcsMTUwNzQ1LDE1MDc5MCwx'@; put 'NjIxNiwzMDAzNywzMDMyMywxNzM1MTAsMTUxMjksMjk4MDAsMTY2NjA0LDE0OTkzMSwxNDk5MDIsMTUwOTksMTU4MjEsMTUwMDk0LDE2MTI3LDE0OTk1NywxNDk3NDcsMzczNzAsMjIzMjIsMzc2OTgsMTY2NjI3LDEzNzMxNiwyMDcwMywxNTIwOTcsMTUyMDM5LDMwNTg0LDE0MzkyMiwzMDQ3'@; put 'OCwzMDQ3OSwzMDU4NywxNDkxNDMsMTQ1MjgxLDE0OTQyLDE0OTc0NCwyOTc1MiwyOTg1MSwxNjA2MywxNTAyMDIsMTUwMjE1LDE2NTg0LDE1MDE2NiwxNTYwNzgsMzc2MzksMTUyOTYxLDMwNzUwLDMwODYxLDMwODU2LDMwOTMwLDI5NjQ4LDMxMDY1LDE2MTYwMSwxNTMzMTUsMTY2NTQsMzEx'@; put 'MzEsMzM5NDIsMzExNDEsMjcxODEsMTQ3MTk0LDMxMjkwLDMxMjIwLDE2NzUwLDEzNjkzNCwxNjY5MCwzNzQyOSwzMTIxNywxMzQ0NzYsMTQ5OTAwLDEzMTczNywxNDY4NzQsMTM3MDcwLDEzNzE5LDIxODY3LDEzNjgwLDEzOTk0LDEzMTU0MCwxMzQxNTcsMzE0NTgsMjMxMjksMTQxMDQ1LDE1'@; put 'NDI4NywxNTQyNjgsMjMwNTMsMTMxNjc1LDMwOTYwLDIzMDgyLDE1NDU2NiwzMTQ4NiwxNjg4OSwzMTgzNywzMTg1MywxNjkxMywxNTQ1NDcsMTU1MzI0LDE1NTMwMiwzMTk0OSwxNTAwMDksMTM3MTM2LDMxODg2LDMxODY4LDMxOTE4LDI3MzE0LDMyMjIwLDMyMjYzLDMyMjExLDMyNTkwLDE1'@; put 'NjI1NywxNTU5OTYsMTYyNjMyLDMyMTUxLDE1NTI2NiwxNzAwMiwxNTg1ODEsMTMzMzk4LDI2NTgyLDEzMTE1MCwxNDQ4NDcsMjI0NjgsMTU2NjkwLDE1NjY2NCwxNDk4NTgsMzI3MzMsMzE1MjcsMTMzMTY0LDE1NDM0NSwxNTQ5NDcsMzE1MDAsMTU1MTUwLDM5Mzk4LDM0MzczLDM5NTIzLDI3'@; put 'MTY0LDE0NDQ0NywxNDgxOCwxNTAwMDcsMTU3MTAxLDM5NDU1LDE1NzA4OCwzMzkyMCwxNjAwMzksMTU4OTI5LDE3NjQyLDMzMDc5LDE3NDEwLDMyOTY2LDMzMDMzLDMzMDkwLDE1NzYyMCwzOTEwNywxNTgyNzQsMzMzNzgsMzMzODEsMTU4Mjg5LDMzODc1LDE1OTE0MywzNDMyMCwxNjAyODMs'@; put 'MjMxNzQsMTY3NjcsMTM3MjgwLDIzMzM5LDEzNzM3NywyMzI2OCwxMzc0MzIsMzQ0NjQsMTk1MDA0LDE0NjgzMSwzNDg2MSwxNjA4MDIsMjMwNDIsMzQ5MjYsMjAyOTMsMzQ5NTEsMzUwMDcsMzUwNDYsMzUxNzMsMzUxNDksMTUzMjE5LDM1MTU2LDE2MTY2OSwxNjE2NjgsMTY2OTAxLDE2Njg3'@; put 'MywxNjY4MTIsMTY2MzkzLDE2MDQ1LDMzOTU1LDE4MTY1LDE4MTI3LDE0MzIyLDM1Mzg5LDM1MzU2LDE2OTAzMiwyNDM5NywzNzQxOSwxNDgxMDAsMjYwNjgsMjg5NjksMjg4NjgsMTM3Mjg1LDQwMzAxLDM1OTk5LDM2MDczLDE2MzI5MiwyMjkzOCwzMDY1OSwyMzAyNCwxNzI2MiwxNDAzNiwz'@; put 'NjM5NCwzNjUxOSwxNTA1MzcsMzY2NTYsMzY2ODIsMTcxNDAsMjc3MzYsMjg2MDMsMTQwMDY1LDE4NTg3LDI4NTM3LDI4Mjk5LDEzNzE3OCwzOTkxMywxNDAwNSwxNDk4MDcsMzcwNTEsMzcwMTUsMjE4NzMsMTg2OTQsMzczMDcsMzc4OTIsMTY2NDc1LDE2NDgyLDE2NjY1MiwzNzkyNywxNjY5'@; put 'NDEsMTY2OTcxLDM0MDIxLDM1MzcxLDM4Mjk3LDM4MzExLDM4Mjk1LDM4Mjk0LDE2NzIyMCwyOTc2NSwxNjA2NiwxNDk3NTksMTUwMDgyLDE0ODQ1OCwxNjEwMywxNDM5MDksMzg1NDMsMTY3NjU1LDE2NzUyNiwxNjc1MjUsMTYwNzYsMTQ5OTk3LDE1MDEzNiwxNDc0MzgsMjk3MTQsMjk4MDMs'@; put 'MTYxMjQsMzg3MjEsMTY4MTEyLDI2Njk1LDE4OTczLDE2ODA4MywxNTM1NjcsMzg3NDksMzc3MzYsMTY2MjgxLDE2Njk1MCwxNjY3MDMsMTU2NjA2LDM3NTYyLDIzMzEzLDM1Njg5LDE4NzQ4LDI5Njg5LDE0Nzk5NSwzODgxMSwzODc2OSwzOTIyNCwxMzQ5NTAsMjQwMDEsMTY2ODUzLDE1MDE5'@; put 'NCwzODk0MywxNjkxNzgsMzc2MjIsMTY5NDMxLDM3MzQ5LDE3NjAwLDE2NjczNiwxNTAxMTksMTY2NzU2LDM5MTMyLDE2NjQ2OSwxNjEyOCwzNzQxOCwxODcyNSwzMzgxMiwzOTIyNywzOTI0NSwxNjI1NjYsMTU4NjksMzkzMjMsMTkzMTEsMzkzMzgsMzk1MTYsMTY2NzU3LDE1MzgwMCwyNzI3'@; put 'OSwzOTQ1NywyMzI5NCwzOTQ3MSwxNzAyMjUsMTkzNDQsMTcwMzEyLDM5MzU2LDE5Mzg5LDE5MzUxLDM3NzU3LDIyNjQyLDEzNTkzOCwyMjU2MiwxNDk5NDQsMTM2NDI0LDMwNzg4LDE0MTA4NywxNDY4NzIsMjY4MjEsMTU3NDEsMzc5NzYsMTQ2MzEsMjQ5MTIsMTQxMTg1LDE0MTY3NSwyNDgz'@; put 'OSw0MDAxNSw0MDAxOSw0MDA1OSwzOTk4OSwzOTk1MiwzOTgwNywzOTg4NywxNzE1NjUsMzk4MzksMTcyNTMzLDE3MjI4Niw0MDIyNSwxOTYzMCwxNDc3MTYsNDA0NzIsMTk2MzIsNDAyMDQsMTcyNDY4LDE3MjI2OSwxNzIyNzUsMTcwMjg3LDQwMzU3LDMzOTgxLDE1OTI1MCwxNTk3MTEsMTU4'@; put 'NTk0LDM0MzAwLDE3NzE1LDE1OTE0MCwxNTkzNjQsMTU5MjE2LDMzODI0LDM0Mjg2LDE1OTIzMiwxNDUzNjcsMTU1NzQ4LDMxMjAyLDE0NDc5NiwxNDQ5NjAsMTg3MzMsMTQ5OTgyLDE1NzE0LDM3ODUxLDM3NTY2LDM3NzA0LDEzMTc3NSwzMDkwNSwzNzQ5NSwzNzk2NSwyMDQ1MiwxMzM3Niwz'@; put 'Njk2NCwxNTI5MjUsMzA3ODEsMzA4MDQsMzA5MDIsMzA3OTUsMTM3MDQ3LDE0MzgxNywxNDk4MjUsMTM5NzgsMjAzMzgsMjg2MzQsMjg2MzMsMjg3MDIsMjg3MDIsMjE1MjQsMTQ3ODkzLDIyNDU5LDIyNzcxLDIyNDEwLDQwMjE0LDIyNDg3LDI4OTgwLDEzNDg3LDE0Nzg4NCwyOTE2MywxNTg3'@; put 'ODQsMTUxNDQ3LDIzMzM2LDEzNzE0MSwxNjY0NzMsMjQ4NDQsMjMyNDYsMjMwNTEsMTcwODQsMTQ4NjE2LDE0MTI0LDE5MzIzLDE2NjM5NiwzNzgxOSwzNzgxNiwxMzc0MzAsMTM0OTQxLDMzOTA2LDE1ODkxMiwxMzYyMTEsMTQ4MjE4LDE0MjM3NCwxNDg0MTcsMjI5MzIsMTQ2ODcxLDE1NzUw'@; put 'NSwzMjE2OCwxNTU5OTUsMTU1ODEyLDE0OTk0NSwxNDk4OTksMTY2Mzk0LDM3NjA1LDI5NjY2LDE2MTA1LDI5ODc2LDE2Njc1NSwxMzczNzUsMTYwOTcsMTUwMTk1LDI3MzUyLDI5NjgzLDI5NjkxLDE2MDg2LDE1MDA3OCwxNTAxNjQsMTM3MTc3LDE1MDExOCwxMzIwMDcsMTM2MjI4LDE0OTk4'@; put 'OSwyOTc2OCwxNDk3ODIsMjg4MzcsMTQ5ODc4LDM3NTA4LDI5NjcwLDM3NzI3LDEzMjM1MCwzNzY4MSwxNjY2MDYsMTY2NDIyLDM3NzY2LDE2Njg4NywxNTMwNDUsMTg3NDEsMTY2NTMwLDI5MDM1LDE0OTgyNywxMzQzOTksMjIxODAsMTMyNjM0LDEzNDEyMywxMzQzMjgsMjE3NjIsMzExNzIs'@; put 'MTM3MjEwLDMyMjU0LDEzNjg5OCwxNTAwOTYsMTM3Mjk4LDE3NzEwLDM3ODg5LDE0MDkwLDE2NjU5MiwxNDk5MzMsMjI5NjAsMTM3NDA3LDEzNzM0NywxNjA5MDAsMjMyMDEsMTQwNTAsMTQ2Nzc5LDE0ZTMsMzc0NzEsMjMxNjEsMTY2NTI5LDEzNzMxNCwzNzc0OCwxNTU2NSwxMzM4MTIsMTkw'@; put 'OTQsMTQ3MzAsMjA3MjQsMTU3MjEsMTU2OTIsMTM2MDkyLDI5MDQ1LDE3MTQ3LDE2NDM3NiwyODE3NSwxNjgxNjQsMTc2NDMsMjc5OTEsMTYzNDA3LDI4Nzc1LDI3ODIzLDE1NTc0LDE0NzQzNywxNDY5ODksMjgxNjIsMjg0MjgsMTU3MjcsMTMyMDg1LDMwMDMzLDE0MDEyLDEzNTEyLDE4MDQ4'@; put 'LDE2MDkwLDE4NTQ1LDIyOTgwLDM3NDg2LDE4NzUwLDM2NjczLDE2Njk0MCwxNTg2NTYsMjI1NDYsMjI0NzIsMTQwMzgsMTM2Mjc0LDI4OTI2LDE0ODMyMiwxNTAxMjksMTQzMzMxLDEzNTg1NiwxNDAyMjEsMjY4MDksMjY5ODMsMTM2MDg4LDE0NDYxMywxNjI4MDQsMTQ1MTE5LDE2NjUzMSwx'@; put 'NDUzNjYsMTQ0Mzc4LDE1MDY4NywyNzE2MiwxNDUwNjksMTU4OTAzLDMzODU0LDE3NjMxLDE3NjE0LDE1OTAxNCwxNTkwNTcsMTU4ODUwLDE1OTcxMCwyODQzOSwxNjAwMDksMzM1OTcsMTM3MDE4LDMzNzczLDE1ODg0OCwxNTk4MjcsMTM3MTc5LDIyOTIxLDIzMTcwLDEzNzEzOSwyMzEzNywy'@; put 'MzE1MywxMzc0NzcsMTQ3OTY0LDE0MTI1LDIzMDIzLDEzNzAyMCwxNDAyMywyOTA3MCwzNzc3NiwyNjI2NiwxNDgxMzMsMjMxNTAsMjMwODMsMTQ4MTE1LDI3MTc5LDE0NzE5MywxNjE1OTAsMTQ4NTcxLDE0ODE3MCwyODk1NywxNDgwNTcsMTY2MzY5LDIwNDAwLDE1OTAxNiwyMzc0NiwxNDg2'@; put 'ODYsMTYzNDA1LDE0ODQxMywyNzE0OCwxNDgwNTQsMTM1OTQwLDI4ODM4LDI4OTc5LDE0ODQ1NywxNTc4MSwyNzg3MSwxOTQ1OTcsMTUwMDk1LDMyMzU3LDIzMDE5LDIzODU1LDE1ODU5LDI0NDEyLDE1MDEwOSwxMzcxODMsMzIxNjQsMzM4MzAsMjE2MzcsMTQ2MTcwLDE0NDEyOCwxMzE2MDQs'@; put 'MjIzOTgsMTMzMzMzLDEzMjYzMywxNjM1NywxMzkxNjYsMTcyNzI2LDI4Njc1LDE2ODI4MywyMzkyMCwyOTU4MywzMTk1NSwxNjY0ODksMTY4OTkyLDIwNDI0LDMyNzQzLDI5Mzg5LDI5NDU2LDE2MjU0OCwyOTQ5NiwyOTQ5NywxNTMzMzQsMjk1MDUsMjk1MTIsMTYwNDEsMTYyNTg0LDM2OTcy'@; put 'LDI5MTczLDE0OTc0NiwyOTY2NSwzMzI3MCwxNjA3NCwzMDQ3NiwxNjA4MSwyNzgxMCwyMjI2OSwyOTcyMSwyOTcyNiwyOTcyNywxNjA5OCwxNjExMiwxNjExNiwxNjEyMiwyOTkwNywxNjE0MiwxNjIxMSwzMDAxOCwzMDA2MSwzMDA2NiwzMDA5MywxNjI1MiwzMDE1MiwzMDE3MiwxNjMyMCwz'@; put 'MDI4NSwxNjM0MywzMDMyNCwxNjM0OCwzMDMzMCwxNTEzODgsMjkwNjQsMjIwNTEsMzUyMDAsMjI2MzMsMTY0MTMsMzA1MzEsMTY0NDEsMjY0NjUsMTY0NTMsMTM3ODcsMzA2MTYsMTY0OTAsMTY0OTUsMjM2NDYsMzA2NTQsMzA2NjcsMjI3NzAsMzA3NDQsMjg4NTcsMzA3NDgsMTY1NTIsMzA3'@; put 'NzcsMzA3OTEsMzA4MDEsMzA4MjIsMzM4NjQsMTUyODg1LDMxMDI3LDI2NjI3LDMxMDI2LDE2NjQzLDE2NjQ5LDMxMTIxLDMxMTI5LDM2Nzk1LDMxMjM4LDM2Nzk2LDE2NzQzLDMxMzc3LDE2ODE4LDMxNDIwLDMzNDAxLDE2ODM2LDMxNDM5LDMxNDUxLDE2ODQ3LDIwMDAxLDMxNTg2LDMxNTk2'@; put 'LDMxNjExLDMxNzYyLDMxNzcxLDE2OTkyLDE3MDE4LDMxODY3LDMxOTAwLDE3MDM2LDMxOTI4LDE3MDQ0LDMxOTgxLDM2NzU1LDI4ODY0LDEzNDM1MSwzMjIwNywzMjIxMiwzMjIwOCwzMjI1MywzMjY4NiwzMjY5MiwyOTM0MywxNzMwMywzMjgwMCwzMjgwNSwzMTU0NSwzMjgxNCwzMjgxNywz'@; put 'Mjg1MiwxNTgyMCwyMjQ1MiwyODgzMiwzMjk1MSwzMzAwMSwxNzM4OSwzMzAzNiwyOTQ4MiwzMzAzOCwzMzA0MiwzMDA0OCwzMzA0NCwxNzQwOSwxNTE2MSwzMzExMCwzMzExMywzMzExNCwxNzQyNywyMjU4NiwzMzE0OCwzMzE1NiwxNzQ0NSwzMzE3MSwxNzQ1MywzMzE4OSwyMjUxMSwzMzIx'@; put 'NywzMzI1MiwzMzM2NCwxNzU1MSwzMzQ0NiwzMzM5OCwzMzQ4MiwzMzQ5NiwzMzUzNSwxNzU4NCwzMzYyMywzODUwNSwyNzAxOCwzMzc5NywyODkxNywzMzg5MiwyNDgwMywzMzkyOCwxNzY2OCwzMzk4MiwzNDAxNywzNDA0MCwzNDA2NCwzNDEwNCwzNDEzMCwxNzcyMywzNDE1OSwzNDE2MCwz'@; put 'NDI3MiwxNzc4MywzNDQxOCwzNDQ1MCwzNDQ4MiwzNDU0MywzODQ2OSwzNDY5OSwxNzkyNiwxNzk0MywzNDk5MCwzNTA3MSwzNTEwOCwzNTE0MywzNTIxNywxNjIxNTEsMzUzNjksMzUzODQsMzU0NzYsMzU1MDgsMzU5MjEsMzYwNTIsMzYwODIsMzYxMjQsMTgzMjgsMjI2MjMsMzYyOTEsMTg0'@; put 'MTMsMjAyMDYsMzY0MTAsMjE5NzYsMjIzNTYsMzY0NjUsMjIwMDUsMzY1MjgsMTg0ODcsMzY1NTgsMzY1NzgsMzY1ODAsMzY1ODksMzY1OTQsMzY3OTEsMzY4MDEsMzY4MTAsMzY4MTIsMzY5MTUsMzkzNjQsMTg2MDUsMzkxMzYsMzczOTUsMTg3MTgsMzc0MTYsMzc0NjQsMzc0ODMsMzc1NTMs'@; put 'Mzc1NTAsMzc1NjcsMzc2MDMsMzc2MTEsMzc2MTksMzc2MjAsMzc2MjksMzc2OTksMzc3NjQsMzc4MDUsMTg3NTcsMTg3NjksNDA2MzksMzc5MTEsMjEyNDksMzc5MTcsMzc5MzMsMzc5NTAsMTg3OTQsMzc5NzIsMzgwMDksMzgxODksMzgzMDYsMTg4NTUsMzgzODgsMzg0NTEsMTg5MTcsMjY1'@; put 'MjgsMTg5ODAsMzg3MjAsMTg5OTcsMzg4MzQsMzg4NTAsMjIxMDAsMTkxNzIsMjQ4MDgsMzkwOTcsMTkyMjUsMzkxNTMsMjI1OTYsMzkxODIsMzkxOTMsMjA5MTYsMzkxOTYsMzkyMjMsMzkyMzQsMzkyNjEsMzkyNjYsMTkzMTIsMzkzNjUsMTkzNTcsMzk0ODQsMzk2OTUsMzEzNjMsMzk3ODUs'@; put 'Mzk4MDksMzk5MDEsMzk5MjEsMzk5MjQsMTk1NjUsMzk5NjgsMTQxOTEsMTM4MTc4LDQwMjY1LDM5OTk0LDQwNzAyLDIyMDk2LDQwMzM5LDQwMzgxLDQwMzg0LDQwNDQ0LDM4MTM0LDM2NzkwLDQwNTcxLDQwNjIwLDQwNjI1LDQwNjM3LDQwNjQ2LDM4MTA4LDQwNjc0LDQwNjg5LDQwNjk2LDMx'@; put 'NDMyLDQwNzcyLDEzMTIyMCwxMzE3NjcsMTMyZTMsMjY5MDYsMzgwODMsMjI5NTYsMTMyMzExLDIyNTkyLDM4MDgxLDE0MjY1LDEzMjU2NSwxMzI2MjksMTMyNzI2LDEzNjg5MCwyMjM1OSwyOTA0MywxMzM4MjYsMTMzODM3LDEzNDA3OSwyMTYxMCwxOTQ2MTksMTM0MDkxLDIxNjYyLDEzNDEz'@; put 'OSwxMzQyMDMsMTM0MjI3LDEzNDI0NSwxMzQyNjgsMjQ4MDcsMTM0Mjg1LDIyMTM4LDEzNDMyNSwxMzQzNjUsMTM0MzgxLDEzNDUxMSwxMzQ1NzgsMTM0NjAwLDI2OTY1LDM5OTgzLDM0NzI1LDEzNDY2MCwxMzQ2NzAsMTM0ODcxLDEzNTA1NiwxMzQ5NTcsMTM0NzcxLDIzNTg0LDEzNTEwMCwy'@; put 'NDA3NSwxMzUyNjAsMTM1MjQ3LDEzNTI4NiwyNjM5OCwxMzUyOTEsMTM1MzA0LDEzNTMxOCwxMzg5NSwxMzUzNTksMTM1Mzc5LDEzNTQ3MSwxMzU0ODMsMjEzNDgsMzM5NjUsMTM1OTA3LDEzNjA1MywxMzU5OTAsMzU3MTMsMTM2NTY3LDEzNjcyOSwxMzcxNTUsMTM3MTU5LDIwMDg4LDI4ODU5'@; put 'LDEzNzI2MSwxMzc1NzgsMTM3NzczLDEzNzc5NywxMzgyODIsMTM4MzUyLDEzODQxMiwxMzg5NTIsMjUyODMsMTM4OTY1LDEzOTAyOSwyOTA4MCwyNjcwOSwxMzkzMzMsMjcxMTMsMTQwMjQsMTM5OTAwLDE0MDI0NywxNDAyODIsMTQxMDk4LDE0MTQyNSwxNDE2NDcsMzM1MzMsMTQxNjcxLDE0'@; put 'MTcxNSwxNDIwMzcsMzUyMzcsMTQyMDU2LDM2NzY4LDE0MjA5NCwzODg0MCwxNDIxNDMsMzg5ODMsMzk2MTMsMTQyNDEyLG51bGwsMTQyNDcyLDE0MjUxOSwxNTQ2MDAsMTQyNjAwLDE0MjYxMCwxNDI3NzUsMTQyNzQxLDE0MjkxNCwxNDMyMjAsMTQzMzA4LDE0MzQxMSwxNDM0NjIsMTQ0MTU5'@; put 'LDE0NDM1MCwyNDQ5NywyNjE4NCwyNjMwMywxNjI0MjUsMTQ0NzQzLDE0NDg4MywyOTE4NSwxNDk5NDYsMzA2NzksMTQ0OTIyLDE0NTE3NCwzMjM5MSwxMzE5MTAsMjI3MDksMjYzODIsMjY5MDQsMTQ2MDg3LDE2MTM2NywxNTU2MTgsMTQ2OTYxLDE0NzEyOSwxNjEyNzgsMTM5NDE4LDE4NjQw'@; put 'LDE5MTI4LDE0NzczNywxNjY1NTQsMTQ4MjA2LDE0ODIzNywxNDc1MTUsMTQ4Mjc2LDE0ODM3NCwxNTAwODUsMTMyNTU0LDIwOTQ2LDEzMjYyNSwyMjk0MywxMzg5MjAsMTUyOTQsMTQ2Njg3LDE0ODQ4NCwxNDg2OTQsMjI0MDgsMTQ5MTA4LDE0NzQ3LDE0OTI5NSwxNjUzNTIsMTcwNDQxLDE0'@; put 'MTc4LDEzOTcxNSwzNTY3OCwxNjY3MzQsMzkzODIsMTQ5NTIyLDE0OTc1NSwxNTAwMzcsMjkxOTMsMTUwMjA4LDEzNDI2NCwyMjg4NSwxNTEyMDUsMTUxNDMwLDEzMjk4NSwzNjU3MCwxNTE1OTYsMjExMzUsMjIzMzUsMjkwNDEsMTUyMjE3LDE1MjYwMSwxNDcyNzQsMTUwMTgzLDIxOTQ4LDE1'@; put 'MjY0NiwxNTI2ODYsMTU4NTQ2LDM3MzMyLDEzNDI3LDE1Mjg5NSwxNjEzMzAsMTUyOTI2LDE4MjAwLDE1MjkzMCwxNTI5MzQsMTUzNTQzLDE0OTgyMywxNTM2OTMsMjA1ODIsMTM1NjMsMTQ0MzMyLDI0Nzk4LDE1Mzg1OSwxODMwMCwxNjYyMTYsMTU0Mjg2LDE1NDUwNSwxNTQ2MzAsMTM4NjQw'@; put 'LDIyNDMzLDI5MDA5LDI4NTk4LDE1NTkwNiwxNjI4MzQsMzY5NTAsMTU2MDgyLDE1MTQ1MCwzNTY4MiwxNTY2NzQsMTU2NzQ2LDIzODk5LDE1ODcxMSwzNjY2MiwxNTY4MDQsMTM3NTAwLDM1NTYyLDE1MDAwNiwxNTY4MDgsMTQ3NDM5LDE1Njk0NiwxOTM5MiwxNTcxMTksMTU3MzY1LDE0MTA4'@; put 'MywzNzk4OSwxNTM1NjksMjQ5ODEsMjMwNzksMTk0NzY1LDIwNDExLDIyMjAxLDE0ODc2OSwxNTc0MzYsMjAwNzQsMTQ5ODEyLDM4NDg2LDI4MDQ3LDE1ODkwOSwxMzg0OCwzNTE5MSwxNTc1OTMsMTU3ODA2LDE1NjY4OSwxNTc3OTAsMjkxNTEsMTU3ODk1LDMxNTU0LDE2ODEyOCwxMzM2NDks'@; put 'MTU3OTkwLDM3MTI0LDE1ODAwOSwzMTMwMSw0MDQzMiwxNTgyMDIsMzk0NjIsMTU4MjUzLDEzOTE5LDE1Njc3NywxMzExMDUsMzExMDcsMTU4MjYwLDE1ODU1NSwyMzg1MiwxNDQ2NjUsMzM3NDMsMTU4NjIxLDE4MTI4LDE1ODg4NCwzMDAxMSwzNDkxNywxNTkxNTAsMjI3MTAsMTQxMDgsMTQw'@; put 'Njg1LDE1OTgxOSwxNjAyMDUsMTU0NDQsMTYwMzg0LDE2MDM4OSwzNzUwNSwxMzk2NDIsMTYwMzk1LDM3NjgwLDE2MDQ4NiwxNDk5NjgsMjc3MDUsMzgwNDcsMTYwODQ4LDEzNDkwNCwzNDg1NSwzNTA2MSwxNDE2MDYsMTY0OTc5LDEzNzEzNywyODM0NCwxNTAwNTgsMTM3MjQ4LDE0NzU2LDE0'@; put 'MDA5LDIzNTY4LDMxMjAzLDE3NzI3LDI2Mjk0LDE3MTE4MSwxNzAxNDgsMzUxMzksMTYxNzQwLDE2MTg4MCwyMjIzMCwxNjYwNywxMzY3MTQsMTQ3NTMsMTQ1MTk5LDE2NDA3MiwxMzYxMzMsMjkxMDEsMzM2MzgsMTYyMjY5LDE2ODM2MCwyMzE0MywxOTYzOSwxNTk5MTksMTY2MzE1LDE2MjMw'@; put 'MSwxNjIzMTQsMTYyNTcxLDE2MzE3NCwxNDc4MzQsMzE1NTUsMzExMDIsMTYzODQ5LDI4NTk3LDE3Mjc2NywyNzEzOSwxNjQ2MzIsMjE0MTAsMTU5MjM5LDM3ODIzLDI2Njc4LDM4NzQ5LDE2NDIwNywxNjM4NzUsMTU4MTMzLDEzNjE3MywxNDM5MTksMTYzOTEyLDIzOTQxLDE2Njk2MCwxNjM5'@; put 'NzEsMjIyOTMsMzg5NDcsMTY2MjE3LDIzOTc5LDE0OTg5NiwyNjA0NiwyNzA5MywyMTQ1OCwxNTAxODEsMTQ3MzI5LDE1Mzc3LDI2NDIyLDE2Mzk4NCwxNjQwODQsMTY0MTQyLDEzOTE2OSwxNjQxNzUsMTY0MjMzLDE2NDI3MSwxNjQzNzgsMTY0NjE0LDE2NDY1NSwxNjQ3NDYsMTM3NzAsMTY0'@; put 'OTY4LDE2NTU0NiwxODY4MiwyNTU3NCwxNjYyMzAsMzA3MjgsMzc0NjEsMTY2MzI4LDE3Mzk0LDE2NjM3NSwxNzM3NSwxNjYzNzYsMTY2NzI2LDE2Njg2OCwyMzAzMiwxNjY5MjEsMzY2MTksMTY3ODc3LDE2ODE3MiwzMTU2OSwxNjgyMDgsMTY4MjUyLDE1ODYzLDE2ODI4NiwxNTAyMTgsMzY4'@; put 'MTYsMjkzMjcsMjIxNTUsMTY5MTkxLDE2OTQ0OSwxNjkzOTIsMTY5NDAwLDE2OTc3OCwxNzAxOTMsMTcwMzEzLDE3MDM0NiwxNzA0MzUsMTcwNTM2LDE3MDc2NiwxNzEzNTQsMTcxNDE5LDMyNDE1LDE3MTc2OCwxNzE4MTEsMTk2MjAsMzgyMTUsMTcyNjkxLDI5MDkwLDE3Mjc5OSwxOTg1Nywz'@; put 'Njg4MiwxNzM1MTUsMTk4NjgsMTM0MzAwLDM2Nzk4LDIxOTUzLDM2Nzk0LDE0MDQ2NCwzNjc5MywxNTAxNjMsMTc2NzMsMzIzODMsMjg1MDIsMjczMTMsMjAyMDIsMTM1NDAsMTY2NzAwLDE2MTk0OSwxNDEzOCwzNjQ4MCwxMzcyMDUsMTYzODc2LDE2Njc2NCwxNjY4MDksMTYyMzY2LDE1NzM1'@; put 'OSwxNTg1MSwxNjEzNjUsMTQ2NjE1LDE1MzE0MSwxNTM5NDIsMjAxMjIsMTU1MjY1LDE1NjI0OCwyMjIwNywxMzQ3NjUsMzYzNjYsMjM0MDUsMTQ3MDgwLDE1MDY4NiwyNTU2NiwyNTI5NiwxMzcyMDYsMTM3MzM5LDI1OTA0LDIyMDYxLDE1NDY5OCwyMTUzMCwxNTIzMzcsMTU4MTQsMTcxNDE2'@; put 'LDE5NTgxLDIyMDUwLDIyMDQ2LDMyNTg1LDE1NTM1MiwyMjkwMSwxNDY3NTIsMzQ2NzIsMTk5OTYsMTM1MTQ2LDEzNDQ3MywxNDUwODIsMzMwNDcsNDAyODYsMzYxMjAsMzAyNjcsNDAwMDUsMzAyODYsMzA2NDksMzc3MDEsMjE1NTQsMzMwOTYsMzM1MjcsMjIwNTMsMzMwNzQsMzM4MTYsMzI5'@; put 'NTcsMjE5OTQsMzEwNzQsMjIwODMsMjE1MjYsMTM0ODEzLDEzNzc0LDIyMDIxLDIyMDAxLDI2MzUzLDE2NDU3OCwxMzg2OSwzMDAwNCwyMmUzLDIxOTQ2LDIxNjU1LDIxODc0LDEzNDIwOSwxMzQyOTQsMjQyNzIsMTUxODgwLDEzNDc3NCwxNDI0MzQsMTM0ODE4LDQwNjE5LDMyMDkwLDIxOTgy'@; put 'LDEzNTI4NSwyNTI0NSwzODc2NSwyMTY1MiwzNjA0NSwyOTE3NCwzNzIzOCwyNTU5NiwyNTUyOSwyNTU5OCwyMTg2NSwxNDIxNDcsNDAwNTAsMTQzMDI3LDIwODkwLDEzNTM1LDEzNDU2NywyMDkwMywyMTU4MSwyMTc5MCwyMTc3OSwzMDMxMCwzNjM5NywxNTc4MzQsMzAxMjksMzI5NTAsMzQ4'@; put 'MjAsMzQ2OTQsMzUwMTUsMzMyMDYsMzM4MjAsMTM1MzYxLDE3NjQ0LDI5NDQ0LDE0OTI1NCwyMzQ0MCwzMzU0NywxNTc4NDMsMjIxMzksMTQxMDQ0LDE2MzExOSwxNDc4NzUsMTYzMTg3LDE1OTQ0MCwxNjA0MzgsMzcyMzIsMTM1NjQxLDM3Mzg0LDE0NjY4NCwxNzM3MzcsMTM0ODI4LDEzNDkw'@; put 'NSwyOTI4NiwxMzg0MDIsMTgyNTQsMTUxNDkwLDE2MzgzMywxMzUxNDcsMTY2MzQsNDAwMjksMjU4ODcsMTQyNzUyLDE4Njc1LDE0OTQ3MiwxNzEzODgsMTM1MTQ4LDEzNDY2NiwyNDY3NCwxNjExODcsMTM1MTQ5LG51bGwsMTU1NzIwLDEzNTU1OSwyOTA5MSwzMjM5OCw0MDI3MiwxOTk5NCwx'@; put 'OTk3MiwxMzY4NywyMzMwOSwyNzgyNiwyMTM1MSwxMzk5NiwxNDgxMiwyMTM3MywxMzk4OSwxNDkwMTYsMjI2ODIsMTUwMzgyLDMzMzI1LDIxNTc5LDIyNDQyLDE1NDI2MSwxMzM0OTcsbnVsbCwxNDkzMCwxNDAzODksMjk1NTYsMTcxNjkyLDE5NzIxLDM5OTE3LDE0NjY4NiwxNzE4MjQsMTk1'@; put 'NDcsMTUxNDY1LDE2OTM3NCwxNzE5OTgsMzM4ODQsMTQ2ODcwLDE2MDQzNCwxNTc2MTksMTQ1MTg0LDI1MzkwLDMyMDM3LDE0NzE5MSwxNDY5ODgsMTQ4OTAsMzY4NzIsMjExOTYsMTU5ODgsMTM5NDYsMTc4OTcsMTMyMjM4LDMwMjcyLDIzMjgwLDEzNDgzOCwzMDg0MiwxNjM2MzAsMjI2OTUs'@; put 'MTY1NzUsMjIxNDAsMzk4MTksMjM5MjQsMzAyOTIsMTczMTA4LDQwNTgxLDE5NjgxLDMwMjAxLDE0MzMxLDI0ODU3LDE0MzU3OCwxNDg0NjYsbnVsbCwyMjEwOSwxMzU4NDksMjI0MzksMTQ5ODU5LDE3MTUyNiwyMTA0NCwxNTk5MTgsMTM3NDEsMjc3MjIsNDAzMTYsMzE4MzAsMzk3MzcsMjI0'@; put 'OTQsMTM3MDY4LDIzNjM1LDI1ODExLDE2OTE2OCwxNTY0NjksMTYwMTAwLDM0NDc3LDEzNDQ0MCwxNTkwMTAsMTUwMjQyLDEzNDUxMyxudWxsLDIwOTkwLDEzOTAyMywyMzk1MCwzODY1OSwxMzg3MDUsNDA1NzcsMzY5NDAsMzE1MTksMzk2ODIsMjM3NjEsMzE2NTEsMjUxOTIsMjUzOTcsMzk2'@; put 'NzksMzE2OTUsMzk3MjIsMzE4NzAsMzk3MjYsMzE4MTAsMzE4NzgsMzk5NTcsMzE3NDAsMzk2ODksNDA3MjcsMzk5NjMsMTQ5ODIyLDQwNzk0LDIxODc1LDIzNDkxLDIwNDc3LDQwNjAwLDIwNDY2LDIxMDg4LDE1ODc4LDIxMjAxLDIyMzc1LDIwNTY2LDIyOTY3LDI0MDgyLDM4ODU2LDQwMzYz'@; put 'LDM2NzAwLDIxNjA5LDM4ODM2LDM5MjMyLDM4ODQyLDIxMjkyLDI0ODgwLDI2OTI0LDIxNDY2LDM5OTQ2LDQwMTk0LDE5NTE1LDM4NDY1LDI3MDA4LDIwNjQ2LDMwMDIyLDEzNzA2OSwzOTM4NiwyMTEwNyxudWxsLDM3MjA5LDM4NTI5LDM3MjEyLG51bGwsMzcyMDEsMTY3NTc1LDI1NDcxLDE1'@; put 'OTAxMSwyNzMzOCwyMjAzMywzNzI2MiwzMDA3NCwyNTIyMSwxMzIwOTIsMjk1MTksMzE4NTYsMTU0NjU3LDE0NjY4NSxudWxsLDE0OTc4NSwzMDQyMiwzOTgzNywyMDAxMCwxMzQzNTYsMzM3MjYsMzQ4ODIsbnVsbCwyMzYyNiwyNzA3MiwyMDcxNywyMjM5NCwyMTAyMywyNDA1MywyMDE3NCwy'@; put 'NzY5NywxMzE1NzAsMjAyODEsMjE2NjAsMjE3MjIsMjExNDYsMzYyMjYsMTM4MjIsMjQzMzIsMTM4MTEsbnVsbCwyNzQ3NCwzNzI0NCw0MDg2OSwzOTgzMSwzODk1OCwzOTA5MiwzOTYxMCw0MDYxNiw0MDU4MCwyOTA1MCwzMTUwOCxudWxsLDI3NjQyLDM0ODQwLDMyNjMyLG51bGwsMjIwNDgs'@; put 'MTczNjQyLDM2NDcxLDQwNzg3LG51bGwsMzYzMDgsMzY0MzEsNDA0NzYsMzYzNTMsMjUyMTgsMTY0NzMzLDM2MzkyLDM2NDY5LDMxNDQzLDE1MDEzNSwzMTI5NCwzMDkzNiwyNzg4MiwzNTQzMSwzMDIxNSwxNjY0OTAsNDA3NDIsMjc4NTQsMzQ3NzQsMzAxNDcsMTcyNzIyLDMwODAzLDE5NDYy'@; put 'NCwzNjEwOCwyOTQxMCwyOTU1MywzNTYyOSwyOTQ0MiwyOTkzNywzNjA3NSwxNTAyMDMsMzQzNTEsMjQ1MDYsMzQ5NzYsMTc1OTEsbnVsbCwxMzcyNzUsMTU5MjM3LG51bGwsMzU0NTQsMTQwNTcxLG51bGwsMjQ4MjksMzAzMTEsMzk2MzksNDAyNjAsMzc3NDIsMzk4MjMsMzQ4MDUsbnVsbCwz'@; put 'NDgzMSwzNjA4NywyOTQ4NCwzODY4OSwzOTg1NiwxMzc4MiwyOTM2MiwxOTQ2MywzMTgyNSwzOTI0MiwxNTU5OTMsMjQ5MjEsMTk0NjAsNDA1OTgsMjQ5NTcsbnVsbCwyMjM2NywyNDk0MywyNTI1NCwyNTE0NSwyNTI5NCwxNDk0MCwyNTA1OCwyMTQxOCwxNDQzNzMsMjU0NDQsMjY2MjYsMTM3'@; put 'NzgsMjM4OTUsMTY2ODUwLDM2ODI2LDE2NzQ4MSxudWxsLDIwNjk3LDEzODU2NiwzMDk4MiwyMTI5OCwzODQ1NiwxMzQ5NzEsMTY0ODUsbnVsbCwzMDcxOCxudWxsLDMxOTM4LDE1NTQxOCwzMTk2MiwzMTI3NywzMjg3MCwzMjg2NywzMjA3NywyOTk1NywyOTkzOCwzNTIyMCwzMzMwNiwyNjM4'@; put 'MCwzMjg2NiwxNjA5MDIsMzI4NTksMjk5MzYsMzMwMjcsMzA1MDAsMzUyMDksMTU3NjQ0LDMwMDM1LDE1OTQ0MSwzNDcyOSwzNDc2NiwzMzIyNCwzNDcwMCwzNTQwMSwzNjAxMywzNTY1MSwzMDUwNywyOTk0NCwzNDAxMCwxMzg3NywyNzA1OCwzNjI2MixudWxsLDM1MjQxLDI5ODAwLDI4MDg5'@; put 'LDM0NzUzLDE0NzQ3MywyOTkyNywxNTgzNSwyOTA0NiwyNDc0MCwyNDk4OCwxNTU2OSwyOTAyNiwyNDY5NSxudWxsLDMyNjI1LDE2NjcwMSwyOTI2NCwyNDgwOSwxOTMyNiwyMTAyNCwxNTM4NCwxNDY2MzEsMTU1MzUxLDE2MTM2NiwxNTI4ODEsMTM3NTQwLDEzNTkzNCwxNzAyNDMsMTU5MTk2'@; put 'LDE1OTkxNywyMzc0NSwxNTYwNzcsMTY2NDE1LDE0NTAxNSwxMzEzMTAsMTU3NzY2LDE1MTMxMCwxNzc2MiwyMzMyNywxNTY0OTIsNDA3ODQsNDA2MTQsMTU2MjY3LDEyMjg4LDY1MjkyLDEyMjg5LDEyMjkwLDY1Mjk0LDgyMzEsNjUzMDcsNjUzMDYsNjUzMTEsNjUyODEsNjUwNzIsODIzMCw4'@; put 'MjI5LDY1MTA0LDY1MTA1LDY1MTA2LDE4Myw2NTEwOCw2NTEwOSw2NTExMCw2NTExMSw2NTM3Miw4MjExLDY1MDczLDgyMTIsNjUwNzUsOTU4OCw2NTA3Niw2NTEwMyw2NTI4OCw2NTI4OSw2NTA3Nyw2NTA3OCw2NTM3MSw2NTM3Myw2NTA3OSw2NTA4MCwxMjMwOCwxMjMwOSw2NTA4MSw2NTA4'@; put 'MiwxMjMwNCwxMjMwNSw2NTA4Myw2NTA4NCwxMjI5OCwxMjI5OSw2NTA4NSw2NTA4NiwxMjI5NiwxMjI5Nyw2NTA4Nyw2NTA4OCwxMjMwMCwxMjMwMSw2NTA4OSw2NTA5MCwxMjMwMiwxMjMwMyw2NTA5MSw2NTA5Miw2NTExMyw2NTExNCw2NTExNSw2NTExNiw2NTExNyw2NTExOCw4MjE2LDgy'@; put 'MTcsODIyMCw4MjIxLDEyMzE3LDEyMzE4LDgyNDUsODI0Miw2NTI4Myw2NTI4Niw2NTI5MCw4MjUxLDE2NywxMjI5MSw5Njc1LDk2NzksOTY1MSw5NjUwLDk2NzgsOTczNCw5NzMzLDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY2MSw5NjYwLDEyOTYzLDg0NTMsMTc1LDY1NTA3LDY1MzQzLDcxNyw2'@; put 'NTA5Nyw2NTA5OCw2NTEwMSw2NTEwMiw2NTA5OSw2NTEwMCw2NTExOSw2NTEyMCw2NTEyMSw2NTI5MSw2NTI5MywyMTUsMjQ3LDE3Nyw4NzMwLDY1MzA4LDY1MzEwLDY1MzA5LDg4MDYsODgwNyw4ODAwLDg3MzQsODc4Niw4ODAxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1Mzc0'@; put 'LDg3NDUsODc0Niw4ODY5LDg3MzYsODczNSw4ODk1LDEzMjY2LDEzMjY1LDg3NDcsODc1MCw4NzU3LDg3NTYsOTc5Miw5Nzk0LDg4NTMsODg1Nyw4NTkzLDg1OTUsODU5Miw4NTk0LDg1OTgsODU5OSw4NjAxLDg2MDAsODc0MSw4NzM5LDY1Mjk1LDY1MzQwLDg3MjUsNjUxMjgsNjUyODQsNjU1'@; put 'MDksMTIzMDYsNjU1MDQsNjU1MDUsNjUyODUsNjUzMTIsODQ1MSw4NDU3LDY1MTI5LDY1MTMwLDY1MTMxLDEzMjY5LDEzMjEyLDEzMjEzLDEzMjE0LDEzMjYyLDEzMjE3LDEzMTk4LDEzMTk5LDEzMjUyLDE3NiwyMDgyNSwyMDgyNywyMDgzMCwyMDgyOSwyMDgzMywyMDgzNSwyMTk5MSwyOTky'@; put 'OSwzMTk1MCw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYxNSw5NjE0LDk2MTMsOTYxMiw5NjExLDk2MTAsOTYwOSw5NTMyLDk1MjQsOTUxNiw5NTA4LDk1MDAsOTYyMCw5NDcyLDk0NzQsOTYyMSw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1ODEsOTU4Miw5NTg0LDk1'@; put 'ODMsOTU1Miw5NTY2LDk1NzgsOTU2OSw5Njk4LDk2OTksOTcwMSw5NzAwLDk1ODUsOTU4Niw5NTg3LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1'@; put 'NTMsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMjEzMTMsMjEzMTYsMjEzMTcsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcs'@; put 'NjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUz'@; put 'NjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTQ1LDk0Niw5NDcs'@; put 'OTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1'@; put 'NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNzI5LDcxMyw3MTQsNzExLDcxNSw5MjE2'@; put 'LDkyMTcsOTIxOCw5MjE5LDkyMjAsOTIyMSw5MjIyLDkyMjMsOTIyNCw5MjI1LDkyMjYsOTIyNyw5MjI4LDkyMjksOTIzMCw5MjMxLDkyMzIsOTIzMyw5MjM0LDkyMzUsOTIzNiw5MjM3LDkyMzgsOTIzOSw5MjQwLDkyNDEsOTI0Miw5MjQzLDkyNDQsOTI0NSw5MjQ2LDkyNDcsOTI0OSw4MzY0'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTk2OCwyMDA1NywxOTk2OSwx'@; put 'OTk3MSwyMDAzNSwyMDA2MSwyMDEwMiwyMDEwOCwyMDE1NCwyMDc5OSwyMDgzNywyMDg0MywyMDk2MCwyMDk5MiwyMDk5MywyMTE0NywyMTI2OSwyMTMxMywyMTM0MCwyMTQ0OCwxOTk3NywxOTk3OSwxOTk3NiwxOTk3OCwyMDAxMSwyMDAyNCwyMDk2MSwyMDAzNywyMDA0MCwyMDA2MywyMDA2'@; put 'MiwyMDExMCwyMDEyOSwyMDgwMCwyMDk5NSwyMTI0MiwyMTMxNSwyMTQ0OSwyMTQ3NSwyMjMwMywyMjc2MywyMjgwNSwyMjgyMywyMjg5OSwyMzM3NiwyMzM3NywyMzM3OSwyMzU0NCwyMzU2NywyMzU4NiwyMzYwOCwyMzY2NSwyNDAyOSwyNDAzNywyNDA0OSwyNDA1MCwyNDA1MSwyNDA2Miwy'@; put 'NDE3OCwyNDMxOCwyNDMzMSwyNDMzOSwyNTE2NSwxOTk4NSwxOTk4NCwxOTk4MSwyMDAxMywyMDAxNiwyMDAyNSwyMDA0MywyMzYwOSwyMDEwNCwyMDExMywyMDExNywyMDExNCwyMDExNiwyMDEzMCwyMDE2MSwyMDE2MCwyMDE2MywyMDE2NiwyMDE2NywyMDE3MywyMDE3MCwyMDE3MSwyMDE2'@; put 'NCwyMDgwMywyMDgwMSwyMDgzOSwyMDg0NSwyMDg0NiwyMDg0NCwyMDg4NywyMDk4MiwyMDk5OCwyMDk5OSwyMWUzLDIxMjQzLDIxMjQ2LDIxMjQ3LDIxMjcwLDIxMzA1LDIxMzIwLDIxMzE5LDIxMzE3LDIxMzQyLDIxMzgwLDIxNDUxLDIxNDUwLDIxNDUzLDIyNzY0LDIyODI1LDIyODI3LDIy'@; put 'ODI2LDIyODI5LDIzMzgwLDIzNTY5LDIzNTg4LDIzNjEwLDIzNjYzLDI0MDUyLDI0MTg3LDI0MzE5LDI0MzQwLDI0MzQxLDI0NTE1LDI1MDk2LDI1MTQyLDI1MTYzLDI1MTY2LDI1OTAzLDI1OTkxLDI2MDA3LDI2MDIwLDI2MDQxLDI2MDg1LDI2MzUyLDI2Mzc2LDI2NDA4LDI3NDI0LDI3NDkw'@; put 'LDI3NTEzLDI3NTk1LDI3NjA0LDI3NjExLDI3NjYzLDI3NzAwLDI4Nzc5LDI5MjI2LDI5MjM4LDI5MjQzLDI5MjU1LDI5MjczLDI5Mjc1LDI5MzU2LDI5NTc5LDE5OTkzLDE5OTkwLDE5OTg5LDE5OTg4LDE5OTkyLDIwMDI3LDIwMDQ1LDIwMDQ3LDIwMDQ2LDIwMTk3LDIwMTg0LDIwMTgwLDIw'@; put 'MTgxLDIwMTgyLDIwMTgzLDIwMTk1LDIwMTk2LDIwMTg1LDIwMTkwLDIwODA1LDIwODA0LDIwODczLDIwODc0LDIwOTA4LDIwOTg1LDIwOTg2LDIwOTg0LDIxMDAyLDIxMTUyLDIxMTUxLDIxMjUzLDIxMjU0LDIxMjcxLDIxMjc3LDIwMTkxLDIxMzIyLDIxMzIxLDIxMzQ1LDIxMzQ0LDIxMzU5'@; put 'LDIxMzU4LDIxNDM1LDIxNDg3LDIxNDc2LDIxNDkxLDIxNDg0LDIxNDg2LDIxNDgxLDIxNDgwLDIxNTAwLDIxNDk2LDIxNDkzLDIxNDgzLDIxNDc4LDIxNDgyLDIxNDkwLDIxNDg5LDIxNDg4LDIxNDc3LDIxNDg1LDIxNDk5LDIyMjM1LDIyMjM0LDIyODA2LDIyODMwLDIyODMzLDIyOTAwLDIy'@; put 'OTAyLDIzMzgxLDIzNDI3LDIzNjEyLDI0MDQwLDI0MDM5LDI0MDM4LDI0MDY2LDI0MDY3LDI0MTc5LDI0MTg4LDI0MzIxLDI0MzQ0LDI0MzQzLDI0NTE3LDI1MDk4LDI1MTcxLDI1MTcyLDI1MTcwLDI1MTY5LDI2MDIxLDI2MDg2LDI2NDE0LDI2NDEyLDI2NDEwLDI2NDExLDI2NDEzLDI3NDkx'@; put 'LDI3NTk3LDI3NjY1LDI3NjY0LDI3NzA0LDI3NzEzLDI3NzEyLDI3NzEwLDI5MzU5LDI5NTcyLDI5NTc3LDI5OTE2LDI5OTI2LDI5OTc2LDI5OTgzLDI5OTkyLDI5OTkzLDNlNCwzMDAwMSwzMDAwMiwzMDAwMywzMDA5MSwzMDMzMywzMDM4MiwzMDM5OSwzMDQ0NiwzMDY4MywzMDY5MCwzMDcw'@; put 'NywzMTAzNCwzMTE2NiwzMTM0OCwzMTQzNSwxOTk5OCwxOTk5OSwyMDA1MCwyMDA1MSwyMDA3MywyMDEyMSwyMDEzMiwyMDEzNCwyMDEzMywyMDIyMywyMDIzMywyMDI0OSwyMDIzNCwyMDI0NSwyMDIzNywyMDI0MCwyMDI0MSwyMDIzOSwyMDIxMCwyMDIxNCwyMDIxOSwyMDIwOCwyMDIxMSwy'@; put 'MDIyMSwyMDIyNSwyMDIzNSwyMDgwOSwyMDgwNywyMDgwNiwyMDgwOCwyMDg0MCwyMDg0OSwyMDg3NywyMDkxMiwyMTAxNSwyMTAwOSwyMTAxMCwyMTAwNiwyMTAxNCwyMTE1NSwyMTI1NiwyMTI4MSwyMTI4MCwyMTM2MCwyMTM2MSwyMTUxMywyMTUxOSwyMTUxNiwyMTUxNCwyMTUyMCwyMTUw'@; put 'NSwyMTUxNSwyMTUwOCwyMTUyMSwyMTUxNywyMTUxMiwyMTUwNywyMTUxOCwyMTUxMCwyMTUyMiwyMjI0MCwyMjIzOCwyMjIzNywyMjMyMywyMjMyMCwyMjMxMiwyMjMxNywyMjMxNiwyMjMxOSwyMjMxMywyMjgwOSwyMjgxMCwyMjgzOSwyMjg0MCwyMjkxNiwyMjkwNCwyMjkxNSwyMjkwOSwy'@; put 'MjkwNSwyMjkxNCwyMjkxMywyMzM4MywyMzM4NCwyMzQzMSwyMzQzMiwyMzQyOSwyMzQzMywyMzU0NiwyMzU3NCwyMzY3MywyNDAzMCwyNDA3MCwyNDE4MiwyNDE4MCwyNDMzNSwyNDM0NywyNDUzNywyNDUzNCwyNTEwMiwyNTEwMCwyNTEwMSwyNTEwNCwyNTE4NywyNTE3OSwyNTE3NiwyNTkx'@; put 'MCwyNjA4OSwyNjA4OCwyNjA5MiwyNjA5MywyNjM1NCwyNjM1NSwyNjM3NywyNjQyOSwyNjQyMCwyNjQxNywyNjQyMSwyNzQyNSwyNzQ5MiwyNzUxNSwyNzY3MCwyNzc0MSwyNzczNSwyNzczNywyNzc0MywyNzc0NCwyNzcyOCwyNzczMywyNzc0NSwyNzczOSwyNzcyNSwyNzcyNiwyODc4NCwy'@; put 'OTI3OSwyOTI3NywzMDMzNCwzMTQ4MSwzMTg1OSwzMTk5MiwzMjU2NiwzMjY1MCwzMjcwMSwzMjc2OSwzMjc3MSwzMjc4MCwzMjc4NiwzMjgxOSwzMjg5NSwzMjkwNSwzMjkwNywzMjkwOCwzMzI1MSwzMzI1OCwzMzI2NywzMzI3NiwzMzI5MiwzMzMwNywzMzMxMSwzMzM5MCwzMzM5NCwzMzQw'@; put 'NiwzNDQxMSwzNDg4MCwzNDg5MiwzNDkxNSwzNTE5OSwzODQzMywyMDAxOCwyMDEzNiwyMDMwMSwyMDMwMywyMDI5NSwyMDMxMSwyMDMxOCwyMDI3NiwyMDMxNSwyMDMwOSwyMDI3MiwyMDMwNCwyMDMwNSwyMDI4NSwyMDI4MiwyMDI4MCwyMDI5MSwyMDMwOCwyMDI4NCwyMDI5NCwyMDMyMywy'@; put 'MDMxNiwyMDMyMCwyMDI3MSwyMDMwMiwyMDI3OCwyMDMxMywyMDMxNywyMDI5NiwyMDMxNCwyMDgxMiwyMDgxMSwyMDgxMywyMDg1MywyMDkxOCwyMDkxOSwyMTAyOSwyMTAyOCwyMTAzMywyMTAzNCwyMTAzMiwyMTE2MywyMTE2MSwyMTE2MiwyMTE2NCwyMTI4MywyMTM2MywyMTM2NSwyMTUz'@; put 'MywyMTU0OSwyMTUzNCwyMTU2NiwyMTU0MiwyMTU4MiwyMTU0MywyMTU3NCwyMTU3MSwyMTU1NSwyMTU3NiwyMTU3MCwyMTUzMSwyMTU0NSwyMTU3OCwyMTU2MSwyMTU2MywyMTU2MCwyMTU1MCwyMTU1NywyMTU1OCwyMTUzNiwyMTU2NCwyMTU2OCwyMTU1MywyMTU0NywyMTUzNSwyMTU0OCwy'@; put 'MjI1MCwyMjI1NiwyMjI0NCwyMjI1MSwyMjM0NiwyMjM1MywyMjMzNiwyMjM0OSwyMjM0MywyMjM1MCwyMjMzNCwyMjM1MiwyMjM1MSwyMjMzMSwyMjc2NywyMjg0NiwyMjk0MSwyMjkzMCwyMjk1MiwyMjk0MiwyMjk0NywyMjkzNywyMjkzNCwyMjkyNSwyMjk0OCwyMjkzMSwyMjkyMiwyMjk0'@; put 'OSwyMzM4OSwyMzM4OCwyMzM4NiwyMzM4NywyMzQzNiwyMzQzNSwyMzQzOSwyMzU5NiwyMzYxNiwyMzYxNywyMzYxNSwyMzYxNCwyMzY5NiwyMzY5NywyMzcwMCwyMzY5MiwyNDA0MywyNDA3NiwyNDIwNywyNDE5OSwyNDIwMiwyNDMxMSwyNDMyNCwyNDM1MSwyNDQyMCwyNDQxOCwyNDQzOSwy'@; put 'NDQ0MSwyNDUzNiwyNDUyNCwyNDUzNSwyNDUyNSwyNDU2MSwyNDU1NSwyNDU2OCwyNDU1NCwyNTEwNiwyNTEwNSwyNTIyMCwyNTIzOSwyNTIzOCwyNTIxNiwyNTIwNiwyNTIyNSwyNTE5NywyNTIyNiwyNTIxMiwyNTIxNCwyNTIwOSwyNTIwMywyNTIzNCwyNTE5OSwyNTI0MCwyNTE5OCwyNTIz'@; put 'NywyNTIzNSwyNTIzMywyNTIyMiwyNTkxMywyNTkxNSwyNTkxMiwyNjA5NywyNjM1NiwyNjQ2MywyNjQ0NiwyNjQ0NywyNjQ0OCwyNjQ0OSwyNjQ2MCwyNjQ1NCwyNjQ2MiwyNjQ0MSwyNjQzOCwyNjQ2NCwyNjQ1MSwyNjQ1NSwyNzQ5MywyNzU5OSwyNzcxNCwyNzc0MiwyNzgwMSwyNzc3Nywy'@; put 'Nzc4NCwyNzc4NSwyNzc4MSwyNzgwMywyNzc1NCwyNzc3MCwyNzc5MiwyNzc2MCwyNzc4OCwyNzc1MiwyNzc5OCwyNzc5NCwyNzc3MywyNzc3OSwyNzc2MiwyNzc3NCwyNzc2NCwyNzc4MiwyNzc2NiwyNzc4OSwyNzc5NiwyNzgwMCwyNzc3OCwyODc5MCwyODc5NiwyODc5NywyODc5MiwyOTI4'@; put 'MiwyOTI4MSwyOTI4MCwyOTM4MCwyOTM3OCwyOTU5MCwyOTk5NiwyOTk5NSwzMDAwNywzMDAwOCwzMDMzOCwzMDQ0NywzMDY5MSwzMTE2OSwzMTE2OCwzMTE2NywzMTM1MCwzMTk5NSwzMjU5NywzMjkxOCwzMjkxNSwzMjkyNSwzMjkyMCwzMjkyMywzMjkyMiwzMjk0NiwzMzM5MSwzMzQyNiwz'@; put 'MzQxOSwzMzQyMSwzNTIxMSwzNTI4MiwzNTMyOCwzNTg5NSwzNTkxMCwzNTkyNSwzNTk5NywzNjE5NiwzNjIwOCwzNjI3NSwzNjUyMywzNjU1NCwzNjc2MywzNjc4NCwzNjgwMiwzNjgwNiwzNjgwNSwzNjgwNCwyNDAzMywzNzAwOSwzNzAyNiwzNzAzNCwzNzAzMCwzNzAyNywzNzE5MywzNzMx'@; put 'OCwzNzMyNCwzODQ1MCwzODQ0NiwzODQ0OSwzODQ0MiwzODQ0NCwyMDAwNiwyMDA1NCwyMDA4MywyMDEwNywyMDEyMywyMDEyNiwyMDEzOSwyMDE0MCwyMDMzNSwyMDM4MSwyMDM2NSwyMDMzOSwyMDM1MSwyMDMzMiwyMDM3OSwyMDM2MywyMDM1OCwyMDM1NSwyMDMzNiwyMDM0MSwyMDM2MCwy'@; put 'MDMyOSwyMDM0NywyMDM3NCwyMDM1MCwyMDM2NywyMDM2OSwyMDM0NiwyMDgyMCwyMDgxOCwyMDgyMSwyMDg0MSwyMDg1NSwyMDg1NCwyMDg1NiwyMDkyNSwyMDk4OSwyMTA1MSwyMTA0OCwyMTA0NywyMTA1MCwyMTA0MCwyMTAzOCwyMTA0NiwyMTA1NywyMTE4MiwyMTE3OSwyMTMzMCwyMTMz'@; put 'MiwyMTMzMSwyMTMyOSwyMTM1MCwyMTM2NywyMTM2OCwyMTM2OSwyMTQ2MiwyMTQ2MCwyMTQ2MywyMTYxOSwyMTYyMSwyMTY1NCwyMTYyNCwyMTY1MywyMTYzMiwyMTYyNywyMTYyMywyMTYzNiwyMTY1MCwyMTYzOCwyMTYyOCwyMTY0OCwyMTYxNywyMTYyMiwyMTY0NCwyMTY1OCwyMTYwMiwy'@; put 'MTYwOCwyMTY0MywyMTYyOSwyMTY0NiwyMjI2NiwyMjQwMywyMjM5MSwyMjM3OCwyMjM3NywyMjM2OSwyMjM3NCwyMjM3MiwyMjM5NiwyMjgxMiwyMjg1NywyMjg1NSwyMjg1NiwyMjg1MiwyMjg2OCwyMjk3NCwyMjk3MSwyMjk5NiwyMjk2OSwyMjk1OCwyMjk5MywyMjk4MiwyMjk5MiwyMjk4'@; put 'OSwyMjk4NywyMjk5NSwyMjk4NiwyMjk1OSwyMjk2MywyMjk5NCwyMjk4MSwyMzM5MSwyMzM5NiwyMzM5NSwyMzQ0NywyMzQ1MCwyMzQ0OCwyMzQ1MiwyMzQ0OSwyMzQ1MSwyMzU3OCwyMzYyNCwyMzYyMSwyMzYyMiwyMzczNSwyMzcxMywyMzczNiwyMzcyMSwyMzcyMywyMzcyOSwyMzczMSwy'@; put 'NDA4OCwyNDA5MCwyNDA4NiwyNDA4NSwyNDA5MSwyNDA4MSwyNDE4NCwyNDIxOCwyNDIxNSwyNDIyMCwyNDIxMywyNDIxNCwyNDMxMCwyNDM1OCwyNDM1OSwyNDM2MSwyNDQ0OCwyNDQ0OSwyNDQ0NywyNDQ0NCwyNDU0MSwyNDU0NCwyNDU3MywyNDU2NSwyNDU3NSwyNDU5MSwyNDU5NiwyNDYy'@; put 'MywyNDYyOSwyNDU5OCwyNDYxOCwyNDU5NywyNDYwOSwyNDYxNSwyNDYxNywyNDYxOSwyNDYwMywyNTExMCwyNTEwOSwyNTE1MSwyNTE1MCwyNTE1MiwyNTIxNSwyNTI4OSwyNTI5MiwyNTI4NCwyNTI3OSwyNTI4MiwyNTI3MywyNTI5OCwyNTMwNywyNTI1OSwyNTI5OSwyNTMwMCwyNTI5MSwy'@; put 'NTI4OCwyNTI1NiwyNTI3NywyNTI3NiwyNTI5NiwyNTMwNSwyNTI4NywyNTI5MywyNTI2OSwyNTMwNiwyNTI2NSwyNTMwNCwyNTMwMiwyNTMwMywyNTI4NiwyNTI2MCwyNTI5NCwyNTkxOCwyNjAyMywyNjA0NCwyNjEwNiwyNjEzMiwyNjEzMSwyNjEyNCwyNjExOCwyNjExNCwyNjEyNiwyNjEx'@; put 'MiwyNjEyNywyNjEzMywyNjEyMiwyNjExOSwyNjM4MSwyNjM3OSwyNjQ3NywyNjUwNywyNjUxNywyNjQ4MSwyNjUyNCwyNjQ4MywyNjQ4NywyNjUwMywyNjUyNSwyNjUxOSwyNjQ3OSwyNjQ4MCwyNjQ5NSwyNjUwNSwyNjQ5NCwyNjUxMiwyNjQ4NSwyNjUyMiwyNjUxNSwyNjQ5MiwyNjQ3NCwy'@; put 'NjQ4MiwyNzQyNywyNzQ5NCwyNzQ5NSwyNzUxOSwyNzY2NywyNzY3NSwyNzg3NSwyNzg4MCwyNzg5MSwyNzgyNSwyNzg1MiwyNzg3NywyNzgyNywyNzgzNywyNzgzOCwyNzgzNiwyNzg3NCwyNzgxOSwyNzg2MSwyNzg1OSwyNzgzMiwyNzg0NCwyNzgzMywyNzg0MSwyNzgyMiwyNzg2MywyNzg0'@; put 'NSwyNzg4OSwyNzgzOSwyNzgzNSwyNzg3MywyNzg2NywyNzg1MCwyNzgyMCwyNzg4NywyNzg2OCwyNzg2MiwyNzg3MiwyODgyMSwyODgxNCwyODgxOCwyODgxMCwyODgyNSwyOTIyOCwyOTIyOSwyOTI0MCwyOTI1NiwyOTI4NywyOTI4OSwyOTM3NiwyOTM5MCwyOTQwMSwyOTM5OSwyOTM5Miwy'@; put 'OTYwOSwyOTYwOCwyOTU5OSwyOTYxMSwyOTYwNSwzMDAxMywzMDEwOSwzMDEwNSwzMDEwNiwzMDM0MCwzMDQwMiwzMDQ1MCwzMDQ1MiwzMDY5MywzMDcxNywzMTAzOCwzMTA0MCwzMTA0MSwzMTE3NywzMTE3NiwzMTM1NCwzMTM1MywzMTQ4MiwzMTk5OCwzMjU5NiwzMjY1MiwzMjY1MSwzMjc3'@; put 'MywzMjk1NCwzMjkzMywzMjkzMCwzMjk0NSwzMjkyOSwzMjkzOSwzMjkzNywzMjk0OCwzMjkzOCwzMjk0MywzMzI1MywzMzI3OCwzMzI5MywzMzQ1OSwzMzQzNywzMzQzMywzMzQ1MywzMzQ2OSwzMzQzOSwzMzQ2NSwzMzQ1NywzMzQ1MiwzMzQ0NSwzMzQ1NSwzMzQ2NCwzMzQ0MywzMzQ1Niwz'@; put 'MzQ3MCwzMzQ2MywzNDM4MiwzNDQxNywyMTAyMSwzNDkyMCwzNjU1NSwzNjgxNCwzNjgyMCwzNjgxNywzNzA0NSwzNzA0OCwzNzA0MSwzNzA0NiwzNzMxOSwzNzMyOSwzODI2MywzODI3MiwzODQyOCwzODQ2NCwzODQ2MywzODQ1OSwzODQ2OCwzODQ2NiwzODU4NSwzODYzMiwzODczOCwzODc1'@; put 'MCwyMDEyNywyMDE0MSwyMDE0MiwyMDQ0OSwyMDQwNSwyMDM5OSwyMDQxNSwyMDQ0OCwyMDQzMywyMDQzMSwyMDQ0NSwyMDQxOSwyMDQwNiwyMDQ0MCwyMDQ0NywyMDQyNiwyMDQzOSwyMDM5OCwyMDQzMiwyMDQyMCwyMDQxOCwyMDQ0MiwyMDQzMCwyMDQ0NiwyMDQwNywyMDgyMywyMDg4Miwy'@; put 'MDg4MSwyMDg5NiwyMTA3MCwyMTA1OSwyMTA2NiwyMTA2OSwyMTA2OCwyMTA2NywyMTA2MywyMTE5MSwyMTE5MywyMTE4NywyMTE4NSwyMTI2MSwyMTMzNSwyMTM3MSwyMTQwMiwyMTQ2NywyMTY3NiwyMTY5NiwyMTY3MiwyMTcxMCwyMTcwNSwyMTY4OCwyMTY3MCwyMTY4MywyMTcwMywyMTY5'@; put 'OCwyMTY5MywyMTY3NCwyMTY5NywyMTcwMCwyMTcwNCwyMTY3OSwyMTY3NSwyMTY4MSwyMTY5MSwyMTY3MywyMTY3MSwyMTY5NSwyMjI3MSwyMjQwMiwyMjQxMSwyMjQzMiwyMjQzNSwyMjQzNCwyMjQ3OCwyMjQ0NiwyMjQxOSwyMjg2OSwyMjg2NSwyMjg2MywyMjg2MiwyMjg2NCwyMzAwNCwy'@; put 'M2UzLDIzMDM5LDIzMDExLDIzMDE2LDIzMDQzLDIzMDEzLDIzMDE4LDIzMDAyLDIzMDE0LDIzMDQxLDIzMDM1LDIzNDAxLDIzNDU5LDIzNDYyLDIzNDYwLDIzNDU4LDIzNDYxLDIzNTUzLDIzNjMwLDIzNjMxLDIzNjI5LDIzNjI3LDIzNzY5LDIzNzYyLDI0MDU1LDI0MDkzLDI0MTAxLDI0MDk1'@; put 'LDI0MTg5LDI0MjI0LDI0MjMwLDI0MzE0LDI0MzI4LDI0MzY1LDI0NDIxLDI0NDU2LDI0NDUzLDI0NDU4LDI0NDU5LDI0NDU1LDI0NDYwLDI0NDU3LDI0NTk0LDI0NjA1LDI0NjA4LDI0NjEzLDI0NTkwLDI0NjE2LDI0NjUzLDI0Njg4LDI0NjgwLDI0Njc0LDI0NjQ2LDI0NjQzLDI0Njg0LDI0'@; put 'NjgzLDI0NjgyLDI0Njc2LDI1MTUzLDI1MzA4LDI1MzY2LDI1MzUzLDI1MzQwLDI1MzI1LDI1MzQ1LDI1MzI2LDI1MzQxLDI1MzUxLDI1MzI5LDI1MzM1LDI1MzI3LDI1MzI0LDI1MzQyLDI1MzMyLDI1MzYxLDI1MzQ2LDI1OTE5LDI1OTI1LDI2MDI3LDI2MDQ1LDI2MDgyLDI2MTQ5LDI2MTU3'@; put 'LDI2MTQ0LDI2MTUxLDI2MTU5LDI2MTQzLDI2MTUyLDI2MTYxLDI2MTQ4LDI2MzU5LDI2NjIzLDI2NTc5LDI2NjA5LDI2NTgwLDI2NTc2LDI2NjA0LDI2NTUwLDI2NTQzLDI2NjEzLDI2NjAxLDI2NjA3LDI2NTY0LDI2NTc3LDI2NTQ4LDI2NTg2LDI2NTk3LDI2NTUyLDI2NTc1LDI2NTkwLDI2'@; put 'NjExLDI2NTQ0LDI2NTg1LDI2NTk0LDI2NTg5LDI2NTc4LDI3NDk4LDI3NTIzLDI3NTI2LDI3NTczLDI3NjAyLDI3NjA3LDI3Njc5LDI3ODQ5LDI3OTE1LDI3OTU0LDI3OTQ2LDI3OTY5LDI3OTQxLDI3OTE2LDI3OTUzLDI3OTM0LDI3OTI3LDI3OTYzLDI3OTY1LDI3OTY2LDI3OTU4LDI3OTMx'@; put 'LDI3ODkzLDI3OTYxLDI3OTQzLDI3OTYwLDI3OTQ1LDI3OTUwLDI3OTU3LDI3OTE4LDI3OTQ3LDI4ODQzLDI4ODU4LDI4ODUxLDI4ODQ0LDI4ODQ3LDI4ODQ1LDI4ODU2LDI4ODQ2LDI4ODM2LDI5MjMyLDI5Mjk4LDI5Mjk1LDI5MzAwLDI5NDE3LDI5NDA4LDI5NDA5LDI5NjIzLDI5NjQyLDI5'@; put 'NjI3LDI5NjE4LDI5NjQ1LDI5NjMyLDI5NjE5LDI5OTc4LDI5OTk3LDMwMDMxLDMwMDI4LDMwMDMwLDMwMDI3LDMwMTIzLDMwMTE2LDMwMTE3LDMwMTE0LDMwMTE1LDMwMzI4LDMwMzQyLDMwMzQzLDMwMzQ0LDMwNDA4LDMwNDA2LDMwNDAzLDMwNDA1LDMwNDY1LDMwNDU3LDMwNDU2LDMwNDcz'@; put 'LDMwNDc1LDMwNDYyLDMwNDYwLDMwNDcxLDMwNjg0LDMwNzIyLDMwNzQwLDMwNzMyLDMwNzMzLDMxMDQ2LDMxMDQ5LDMxMDQ4LDMxMDQ3LDMxMTYxLDMxMTYyLDMxMTg1LDMxMTg2LDMxMTc5LDMxMzU5LDMxMzYxLDMxNDg3LDMxNDg1LDMxODY5LDMyMDAyLDMyMDA1LDMyZTMsMzIwMDksMzIw'@; put 'MDcsMzIwMDQsMzIwMDYsMzI1NjgsMzI2NTQsMzI3MDMsMzI3NzIsMzI3ODQsMzI3ODEsMzI3ODUsMzI4MjIsMzI5ODIsMzI5OTcsMzI5ODYsMzI5NjMsMzI5NjQsMzI5NzIsMzI5OTMsMzI5ODcsMzI5NzQsMzI5OTAsMzI5OTYsMzI5ODksMzMyNjgsMzMzMTQsMzM1MTEsMzM1MzksMzM1NDEs'@; put 'MzM1MDcsMzM0OTksMzM1MTAsMzM1NDAsMzM1MDksMzM1MzgsMzM1NDUsMzM0OTAsMzM0OTUsMzM1MjEsMzM1MzcsMzM1MDAsMzM0OTIsMzM0ODksMzM1MDIsMzM0OTEsMzM1MDMsMzM1MTksMzM1NDIsMzQzODQsMzQ0MjUsMzQ0MjcsMzQ0MjYsMzQ4OTMsMzQ5MjMsMzUyMDEsMzUyODQsMzUz'@; put 'MzYsMzUzMzAsMzUzMzEsMzU5OTgsMzZlMywzNjIxMiwzNjIxMSwzNjI3NiwzNjU1NywzNjU1NiwzNjg0OCwzNjgzOCwzNjgzNCwzNjg0MiwzNjgzNywzNjg0NSwzNjg0MywzNjgzNiwzNjg0MCwzNzA2NiwzNzA3MCwzNzA1NywzNzA1OSwzNzE5NSwzNzE5NCwzNzMyNSwzODI3NCwzODQ4MCwz'@; put 'ODQ3NSwzODQ3NiwzODQ3NywzODc1NCwzODc2MSwzODg1OSwzODg5MywzODg5OSwzODkxMywzOTA4MCwzOTEzMSwzOTEzNSwzOTMxOCwzOTMyMSwyMDA1NiwyMDE0NywyMDQ5MiwyMDQ5MywyMDUxNSwyMDQ2MywyMDUxOCwyMDUxNywyMDQ3MiwyMDUyMSwyMDUwMiwyMDQ4NiwyMDU0MCwyMDUx'@; put 'MSwyMDUwNiwyMDQ5OCwyMDQ5NywyMDQ3NCwyMDQ4MCwyMDUwMCwyMDUyMCwyMDQ2NSwyMDUxMywyMDQ5MSwyMDUwNSwyMDUwNCwyMDQ2NywyMDQ2MiwyMDUyNSwyMDUyMiwyMDQ3OCwyMDUyMywyMDQ4OSwyMDg2MCwyMDkwMCwyMDkwMSwyMDg5OCwyMDk0MSwyMDk0MCwyMDkzNCwyMDkzOSwy'@; put 'MTA3OCwyMTA4NCwyMTA3NiwyMTA4MywyMTA4NSwyMTI5MCwyMTM3NSwyMTQwNywyMTQwNSwyMTQ3MSwyMTczNiwyMTc3NiwyMTc2MSwyMTgxNSwyMTc1NiwyMTczMywyMTc0NiwyMTc2NiwyMTc1NCwyMTc4MCwyMTczNywyMTc0MSwyMTcyOSwyMTc2OSwyMTc0MiwyMTczOCwyMTczNCwyMTc5'@; put 'OSwyMTc2NywyMTc1NywyMTc3NSwyMjI3NSwyMjI3NiwyMjQ2NiwyMjQ4NCwyMjQ3NSwyMjQ2NywyMjUzNywyMjc5OSwyMjg3MSwyMjg3MiwyMjg3NCwyMzA1NywyMzA2NCwyMzA2OCwyMzA3MSwyMzA2NywyMzA1OSwyMzAyMCwyMzA3MiwyMzA3NSwyMzA4MSwyMzA3NywyMzA1MiwyMzA0OSwy'@; put 'MzQwMywyMzY0MCwyMzQ3MiwyMzQ3NSwyMzQ3OCwyMzQ3NiwyMzQ3MCwyMzQ3NywyMzQ4MSwyMzQ4MCwyMzU1NiwyMzYzMywyMzYzNywyMzYzMiwyMzc4OSwyMzgwNSwyMzgwMywyMzc4NiwyMzc4NCwyMzc5MiwyMzc5OCwyMzgwOSwyMzc5NiwyNDA0NiwyNDEwOSwyNDEwNywyNDIzNSwyNDIz'@; put 'NywyNDIzMSwyNDM2OSwyNDQ2NiwyNDQ2NSwyNDQ2NCwyNDY2NSwyNDY3NSwyNDY3NywyNDY1NiwyNDY2MSwyNDY4NSwyNDY4MSwyNDY4NywyNDcwOCwyNDczNSwyNDczMCwyNDcxNywyNDcyNCwyNDcxNiwyNDcwOSwyNDcyNiwyNTE1OSwyNTMzMSwyNTM1MiwyNTM0MywyNTQyMiwyNTQwNiwy'@; put 'NTM5MSwyNTQyOSwyNTQxMCwyNTQxNCwyNTQyMywyNTQxNywyNTQwMiwyNTQyNCwyNTQwNSwyNTM4NiwyNTM4NywyNTM4NCwyNTQyMSwyNTQyMCwyNTkyOCwyNTkyOSwyNjAwOSwyNjA0OSwyNjA1MywyNjE3OCwyNjE4NSwyNjE5MSwyNjE3OSwyNjE5NCwyNjE4OCwyNjE4MSwyNjE3NywyNjM2'@; put 'MCwyNjM4OCwyNjM4OSwyNjM5MSwyNjY1NywyNjY4MCwyNjY5NiwyNjY5NCwyNjcwNywyNjY4MSwyNjY5MCwyNjcwOCwyNjY2NSwyNjgwMywyNjY0NywyNjcwMCwyNjcwNSwyNjY4NSwyNjYxMiwyNjcwNCwyNjY4OCwyNjY4NCwyNjY5MSwyNjY2NiwyNjY5MywyNjY0MywyNjY0OCwyNjY4OSwy'@; put 'NzUzMCwyNzUyOSwyNzU3NSwyNzY4MywyNzY4NywyNzY4OCwyNzY4NiwyNzY4NCwyNzg4OCwyODAxMCwyODA1MywyODA0MCwyODAzOSwyODAwNiwyODAyNCwyODAyMywyNzk5MywyODA1MSwyODAxMiwyODA0MSwyODAxNCwyNzk5NCwyODAyMCwyODAwOSwyODA0NCwyODA0MiwyODAyNSwyODAz'@; put 'NywyODAwNSwyODA1MiwyODg3NCwyODg4OCwyODkwMCwyODg4OSwyODg3MiwyODg3OSwyOTI0MSwyOTMwNSwyOTQzNiwyOTQzMywyOTQzNywyOTQzMiwyOTQzMSwyOTU3NCwyOTY3NywyOTcwNSwyOTY3OCwyOTY2NCwyOTY3NCwyOTY2MiwzMDAzNiwzMDA0NSwzMDA0NCwzMDA0MiwzMDA0MSwz'@; put 'MDE0MiwzMDE0OSwzMDE1MSwzMDEzMCwzMDEzMSwzMDE0MSwzMDE0MCwzMDEzNywzMDE0NiwzMDEzNiwzMDM0NywzMDM4NCwzMDQxMCwzMDQxMywzMDQxNCwzMDUwNSwzMDQ5NSwzMDQ5NiwzMDUwNCwzMDY5NywzMDc2OCwzMDc1OSwzMDc3NiwzMDc0OSwzMDc3MiwzMDc3NSwzMDc1NywzMDc2'@; put 'NSwzMDc1MiwzMDc1MSwzMDc3MCwzMTA2MSwzMTA1NiwzMTA3MiwzMTA3MSwzMTA2MiwzMTA3MCwzMTA2OSwzMTA2MywzMTA2NiwzMTIwNCwzMTIwMywzMTIwNywzMTE5OSwzMTIwNiwzMTIwOSwzMTE5MiwzMTM2NCwzMTM2OCwzMTQ0OSwzMTQ5NCwzMTUwNSwzMTg4MSwzMjAzMywzMjAyMywz'@; put 'MjAxMSwzMjAxMCwzMjAzMiwzMjAzNCwzMjAyMCwzMjAxNiwzMjAyMSwzMjAyNiwzMjAyOCwzMjAxMywzMjAyNSwzMjAyNywzMjU3MCwzMjYwNywzMjY2MCwzMjcwOSwzMjcwNSwzMjc3NCwzMjc5MiwzMjc4OSwzMjc5MywzMjc5MSwzMjgyOSwzMjgzMSwzMzAwOSwzMzAyNiwzMzAwOCwzMzAy'@; put 'OSwzMzAwNSwzMzAxMiwzMzAzMCwzMzAxNiwzMzAxMSwzMzAzMiwzMzAyMSwzMzAzNCwzMzAyMCwzMzAwNywzMzI2MSwzMzI2MCwzMzI4MCwzMzI5NiwzMzMyMiwzMzMyMywzMzMyMCwzMzMyNCwzMzQ2NywzMzU3OSwzMzYxOCwzMzYyMCwzMzYxMCwzMzU5MiwzMzYxNiwzMzYwOSwzMzU4OSwz'@; put 'MzU4OCwzMzYxNSwzMzU4NiwzMzU5MywzMzU5MCwzMzU1OSwzMzYwMCwzMzU4NSwzMzU3NiwzMzYwMywzNDM4OCwzNDQ0MiwzNDQ3NCwzNDQ1MSwzNDQ2OCwzNDQ3MywzNDQ0NCwzNDQ2NywzNDQ2MCwzNDkyOCwzNDkzNSwzNDk0NSwzNDk0NiwzNDk0MSwzNDkzNywzNTM1MiwzNTM0NCwzNTM0'@; put 'MiwzNTM0MCwzNTM0OSwzNTMzOCwzNTM1MSwzNTM0NywzNTM1MCwzNTM0MywzNTM0NSwzNTkxMiwzNTk2MiwzNTk2MSwzNjAwMSwzNjAwMiwzNjIxNSwzNjUyNCwzNjU2MiwzNjU2NCwzNjU1OSwzNjc4NSwzNjg2NSwzNjg3MCwzNjg1NSwzNjg2NCwzNjg1OCwzNjg1MiwzNjg2NywzNjg2MSwz'@; put 'Njg2OSwzNjg1NiwzNzAxMywzNzA4OSwzNzA4NSwzNzA5MCwzNzIwMiwzNzE5NywzNzE5NiwzNzMzNiwzNzM0MSwzNzMzNSwzNzM0MCwzNzMzNywzODI3NSwzODQ5OCwzODQ5OSwzODQ5NywzODQ5MSwzODQ5MywzODUwMCwzODQ4OCwzODQ5NCwzODU4NywzOTEzOCwzOTM0MCwzOTU5MiwzOTY0'@; put 'MCwzOTcxNywzOTczMCwzOTc0MCwyMDA5NCwyMDYwMiwyMDYwNSwyMDU3MiwyMDU1MSwyMDU0NywyMDU1NiwyMDU3MCwyMDU1MywyMDU4MSwyMDU5OCwyMDU1OCwyMDU2NSwyMDU5NywyMDU5NiwyMDU5OSwyMDU1OSwyMDQ5NSwyMDU5MSwyMDU4OSwyMDgyOCwyMDg4NSwyMDk3NiwyMTA5OCwy'@; put 'MTEwMywyMTIwMiwyMTIwOSwyMTIwOCwyMTIwNSwyMTI2NCwyMTI2MywyMTI3MywyMTMxMSwyMTMxMiwyMTMxMCwyMTQ0MywyNjM2NCwyMTgzMCwyMTg2NiwyMTg2MiwyMTgyOCwyMTg1NCwyMTg1NywyMTgyNywyMTgzNCwyMTgwOSwyMTg0NiwyMTgzOSwyMTg0NSwyMTgwNywyMTg2MCwyMTgx'@; put 'NiwyMTgwNiwyMTg1MiwyMTgwNCwyMTg1OSwyMTgxMSwyMTgyNSwyMTg0NywyMjI4MCwyMjI4MywyMjI4MSwyMjQ5NSwyMjUzMywyMjUzOCwyMjUzNCwyMjQ5NiwyMjUwMCwyMjUyMiwyMjUzMCwyMjU4MSwyMjUxOSwyMjUyMSwyMjgxNiwyMjg4MiwyMzA5NCwyMzEwNSwyMzExMywyMzE0Miwy'@; put 'MzE0NiwyMzEwNCwyMzEwMCwyMzEzOCwyMzEzMCwyMzExMCwyMzExNCwyMzQwOCwyMzQ5NSwyMzQ5MywyMzQ5MiwyMzQ5MCwyMzQ4NywyMzQ5NCwyMzU2MSwyMzU2MCwyMzU1OSwyMzY0OCwyMzY0NCwyMzY0NSwyMzgxNSwyMzgxNCwyMzgyMiwyMzgzNSwyMzgzMCwyMzg0MiwyMzgyNSwyMzg0'@; put 'OSwyMzgyOCwyMzgzMywyMzg0NCwyMzg0NywyMzgzMSwyNDAzNCwyNDEyMCwyNDExOCwyNDExNSwyNDExOSwyNDI0NywyNDI0OCwyNDI0NiwyNDI0NSwyNDI1NCwyNDM3MywyNDM3NSwyNDQwNywyNDQyOCwyNDQyNSwyNDQyNywyNDQ3MSwyNDQ3MywyNDQ3OCwyNDQ3MiwyNDQ4MSwyNDQ4MCwy'@; put 'NDQ3NiwyNDcwMywyNDczOSwyNDcxMywyNDczNiwyNDc0NCwyNDc3OSwyNDc1NiwyNDgwNiwyNDc2NSwyNDc3MywyNDc2MywyNDc1NywyNDc5NiwyNDc2NCwyNDc5MiwyNDc4OSwyNDc3NCwyNDc5OSwyNDc2MCwyNDc5NCwyNDc3NSwyNTExNCwyNTExNSwyNTE2MCwyNTUwNCwyNTUxMSwyNTQ1'@; put 'OCwyNTQ5NCwyNTUwNiwyNTUwOSwyNTQ2MywyNTQ0NywyNTQ5NiwyNTUxNCwyNTQ1NywyNTUxMywyNTQ4MSwyNTQ3NSwyNTQ5OSwyNTQ1MSwyNTUxMiwyNTQ3NiwyNTQ4MCwyNTQ5NywyNTUwNSwyNTUxNiwyNTQ5MCwyNTQ4NywyNTQ3MiwyNTQ2NywyNTQ0OSwyNTQ0OCwyNTQ2NiwyNTk0OSwy'@; put 'NTk0MiwyNTkzNywyNTk0NSwyNTk0MywyMTg1NSwyNTkzNSwyNTk0NCwyNTk0MSwyNTk0MCwyNjAxMiwyNjAxMSwyNjAyOCwyNjA2MywyNjA1OSwyNjA2MCwyNjA2MiwyNjIwNSwyNjIwMiwyNjIxMiwyNjIxNiwyNjIxNCwyNjIwNiwyNjM2MSwyMTIwNywyNjM5NSwyNjc1MywyNjc5OSwyNjc4'@; put 'NiwyNjc3MSwyNjgwNSwyNjc1MSwyNjc0MiwyNjgwMSwyNjc5MSwyNjc3NSwyNjgwMCwyNjc1NSwyNjgyMCwyNjc5NywyNjc1OCwyNjc1NywyNjc3MiwyNjc4MSwyNjc5MiwyNjc4MywyNjc4NSwyNjc1NCwyNzQ0MiwyNzU3OCwyNzYyNywyNzYyOCwyNzY5MSwyODA0NiwyODA5MiwyODE0Nywy'@; put 'ODEyMSwyODA4MiwyODEyOSwyODEwOCwyODEzMiwyODE1NSwyODE1NCwyODE2NSwyODEwMywyODEwNywyODA3OSwyODExMywyODA3OCwyODEyNiwyODE1MywyODA4OCwyODE1MSwyODE0OSwyODEwMSwyODExNCwyODE4NiwyODA4NSwyODEyMiwyODEzOSwyODEyMCwyODEzOCwyODE0NSwyODE0'@; put 'MiwyODEzNiwyODEwMiwyODEwMCwyODA3NCwyODE0MCwyODA5NSwyODEzNCwyODkyMSwyODkzNywyODkzOCwyODkyNSwyODkxMSwyOTI0NSwyOTMwOSwyOTMxMywyOTQ2OCwyOTQ2NywyOTQ2MiwyOTQ1OSwyOTQ2NSwyOTU3NSwyOTcwMSwyOTcwNiwyOTY5OSwyOTcwMiwyOTY5NCwyOTcwOSwy'@; put 'OTkyMCwyOTk0MiwyOTk0MywyOTk4MCwyOTk4NiwzMDA1MywzMDA1NCwzMDA1MCwzMDA2NCwzMDA5NSwzMDE2NCwzMDE2NSwzMDEzMywzMDE1NCwzMDE1NywzMDM1MCwzMDQyMCwzMDQxOCwzMDQyNywzMDUxOSwzMDUyNiwzMDUyNCwzMDUxOCwzMDUyMCwzMDUyMiwzMDgyNywzMDc4NywzMDc5'@; put 'OCwzMTA3NywzMTA4MCwzMTA4NSwzMTIyNywzMTM3OCwzMTM4MSwzMTUyMCwzMTUyOCwzMTUxNSwzMTUzMiwzMTUyNiwzMTUxMywzMTUxOCwzMTUzNCwzMTg5MCwzMTg5NSwzMTg5MywzMjA3MCwzMjA2NywzMjExMywzMjA0NiwzMjA1NywzMjA2MCwzMjA2NCwzMjA0OCwzMjA1MSwzMjA2OCwz'@; put 'MjA0NywzMjA2NiwzMjA1MCwzMjA0OSwzMjU3MywzMjY3MCwzMjY2NiwzMjcxNiwzMjcxOCwzMjcyMiwzMjc5NiwzMjg0MiwzMjgzOCwzMzA3MSwzMzA0NiwzMzA1OSwzMzA2NywzMzA2NSwzMzA3MiwzMzA2MCwzMzI4MiwzMzMzMywzMzMzNSwzMzMzNCwzMzMzNywzMzY3OCwzMzY5NCwzMzY4'@; put 'OCwzMzY1NiwzMzY5OCwzMzY4NiwzMzcyNSwzMzcwNywzMzY4MiwzMzY3NCwzMzY4MywzMzY3MywzMzY5NiwzMzY1NSwzMzY1OSwzMzY2MCwzMzY3MCwzMzcwMywzNDM4OSwyNDQyNiwzNDUwMywzNDQ5NiwzNDQ4NiwzNDUwMCwzNDQ4NSwzNDUwMiwzNDUwNywzNDQ4MSwzNDQ3OSwzNDUwNSwz'@; put 'NDg5OSwzNDk3NCwzNDk1MiwzNDk4NywzNDk2MiwzNDk2NiwzNDk1NywzNDk1NSwzNTIxOSwzNTIxNSwzNTM3MCwzNTM1NywzNTM2MywzNTM2NSwzNTM3NywzNTM3MywzNTM1OSwzNTM1NSwzNTM2MiwzNTkxMywzNTkzMCwzNjAwOSwzNjAxMiwzNjAxMSwzNjAwOCwzNjAxMCwzNjAwNywzNjE5'@; put 'OSwzNjE5OCwzNjI4NiwzNjI4MiwzNjU3MSwzNjU3NSwzNjg4OSwzNjg3NywzNjg5MCwzNjg4NywzNjg5OSwzNjg5NSwzNjg5MywzNjg4MCwzNjg4NSwzNjg5NCwzNjg5NiwzNjg3OSwzNjg5OCwzNjg4NiwzNjg5MSwzNjg4NCwzNzA5NiwzNzEwMSwzNzExNywzNzIwNywzNzMyNiwzNzM2NSwz'@; put 'NzM1MCwzNzM0NywzNzM1MSwzNzM1NywzNzM1MywzODI4MSwzODUwNiwzODUxNywzODUxNSwzODUyMCwzODUxMiwzODUxNiwzODUxOCwzODUxOSwzODUwOCwzODU5MiwzODYzNCwzODYzMywzMTQ1NiwzMTQ1NSwzODkxNCwzODkxNSwzOTc3MCw0MDE2NSw0MDU2NSw0MDU3NSw0MDYxMyw0MDYz'@; put 'NSwyMDY0MiwyMDYyMSwyMDYxMywyMDYzMywyMDYyNSwyMDYwOCwyMDYzMCwyMDYzMiwyMDYzNCwyNjM2OCwyMDk3NywyMTEwNiwyMTEwOCwyMTEwOSwyMTA5NywyMTIxNCwyMTIxMywyMTIxMSwyMTMzOCwyMTQxMywyMTg4MywyMTg4OCwyMTkyNywyMTg4NCwyMTg5OCwyMTkxNywyMTkxMiwy'@; put 'MTg5MCwyMTkxNiwyMTkzMCwyMTkwOCwyMTg5NSwyMTg5OSwyMTg5MSwyMTkzOSwyMTkzNCwyMTkxOSwyMTgyMiwyMTkzOCwyMTkxNCwyMTk0NywyMTkzMiwyMTkzNywyMTg4NiwyMTg5NywyMTkzMSwyMTkxMywyMjI4NSwyMjU3NSwyMjU3MCwyMjU4MCwyMjU2NCwyMjU3NiwyMjU3NywyMjU2'@; put 'MSwyMjU1NywyMjU2MCwyMjc3NywyMjc3OCwyMjg4MCwyMzE1OSwyMzE5NCwyMzE2NywyMzE4NiwyMzE5NSwyMzIwNywyMzQxMSwyMzQwOSwyMzUwNiwyMzUwMCwyMzUwNywyMzUwNCwyMzU2MiwyMzU2MywyMzYwMSwyMzg4NCwyMzg4OCwyMzg2MCwyMzg3OSwyNDA2MSwyNDEzMywyNDEyNSwy'@; put 'NDEyOCwyNDEzMSwyNDE5MCwyNDI2NiwyNDI1NywyNDI1OCwyNDI2MCwyNDM4MCwyNDQyOSwyNDQ4OSwyNDQ5MCwyNDQ4OCwyNDc4NSwyNDgwMSwyNDc1NCwyNDc1OCwyNDgwMCwyNDg2MCwyNDg2NywyNDgyNiwyNDg1MywyNDgxNiwyNDgyNywyNDgyMCwyNDkzNiwyNDgxNywyNDg0NiwyNDgy'@; put 'MiwyNDg0MSwyNDgzMiwyNDg1MCwyNTExOSwyNTE2MSwyNTUwNywyNTQ4NCwyNTU1MSwyNTUzNiwyNTU3NywyNTU0NSwyNTU0MiwyNTU0OSwyNTU1NCwyNTU3MSwyNTU1MiwyNTU2OSwyNTU1OCwyNTU4MSwyNTU4MiwyNTQ2MiwyNTU4OCwyNTU3OCwyNTU2MywyNTY4MiwyNTU2MiwyNTU5Mywy'@; put 'NTk1MCwyNTk1OCwyNTk1NCwyNTk1NSwyNjAwMSwyNmUzLDI2MDMxLDI2MjIyLDI2MjI0LDI2MjI4LDI2MjMwLDI2MjIzLDI2MjU3LDI2MjM0LDI2MjM4LDI2MjMxLDI2MzY2LDI2MzY3LDI2Mzk5LDI2Mzk3LDI2ODc0LDI2ODM3LDI2ODQ4LDI2ODQwLDI2ODM5LDI2ODg1LDI2ODQ3LDI2ODY5'@; put 'LDI2ODYyLDI2ODU1LDI2ODczLDI2ODM0LDI2ODY2LDI2ODUxLDI2ODI3LDI2ODI5LDI2ODkzLDI2ODk4LDI2ODk0LDI2ODI1LDI2ODQyLDI2OTkwLDI2ODc1LDI3NDU0LDI3NDUwLDI3NDUzLDI3NTQ0LDI3NTQyLDI3NTgwLDI3NjMxLDI3Njk0LDI3Njk1LDI3NjkyLDI4MjA3LDI4MjE2LDI4'@; put 'MjQ0LDI4MTkzLDI4MjEwLDI4MjYzLDI4MjM0LDI4MTkyLDI4MTk3LDI4MTk1LDI4MTg3LDI4MjUxLDI4MjQ4LDI4MTk2LDI4MjQ2LDI4MjcwLDI4MjA1LDI4MTk4LDI4MjcxLDI4MjEyLDI4MjM3LDI4MjE4LDI4MjA0LDI4MjI3LDI4MTg5LDI4MjIyLDI4MzYzLDI4Mjk3LDI4MTg1LDI4MjM4'@; put 'LDI4MjU5LDI4MjI4LDI4Mjc0LDI4MjY1LDI4MjU1LDI4OTUzLDI4OTU0LDI4OTY2LDI4OTc2LDI4OTYxLDI4OTgyLDI5MDM4LDI4OTU2LDI5MjYwLDI5MzE2LDI5MzEyLDI5NDk0LDI5NDc3LDI5NDkyLDI5NDgxLDI5NzU0LDI5NzM4LDI5NzQ3LDI5NzMwLDI5NzMzLDI5NzQ5LDI5NzUwLDI5'@; put 'NzQ4LDI5NzQzLDI5NzIzLDI5NzM0LDI5NzM2LDI5OTg5LDI5OTkwLDMwMDU5LDMwMDU4LDMwMTc4LDMwMTcxLDMwMTc5LDMwMTY5LDMwMTY4LDMwMTc0LDMwMTc2LDMwMzMxLDMwMzMyLDMwMzU4LDMwMzU1LDMwMzg4LDMwNDI4LDMwNTQzLDMwNzAxLDMwODEzLDMwODI4LDMwODMxLDMxMjQ1'@; put 'LDMxMjQwLDMxMjQzLDMxMjM3LDMxMjMyLDMxMzg0LDMxMzgzLDMxMzgyLDMxNDYxLDMxNDU5LDMxNTYxLDMxNTc0LDMxNTU4LDMxNTY4LDMxNTcwLDMxNTcyLDMxNTY1LDMxNTYzLDMxNTY3LDMxNTY5LDMxOTAzLDMxOTA5LDMyMDk0LDMyMDgwLDMyMTA0LDMyMDg1LDMyMDQzLDMyMTEwLDMy'@; put 'MTE0LDMyMDk3LDMyMTAyLDMyMDk4LDMyMTEyLDMyMTE1LDIxODkyLDMyNzI0LDMyNzI1LDMyNzc5LDMyODUwLDMyOTAxLDMzMTA5LDMzMTA4LDMzMDk5LDMzMTA1LDMzMTAyLDMzMDgxLDMzMDk0LDMzMDg2LDMzMTAwLDMzMTA3LDMzMTQwLDMzMjk4LDMzMzA4LDMzNzY5LDMzNzk1LDMzNzg0'@; put 'LDMzODA1LDMzNzYwLDMzNzMzLDMzODAzLDMzNzI5LDMzNzc1LDMzNzc3LDMzNzgwLDMzODc5LDMzODAyLDMzNzc2LDMzODA0LDMzNzQwLDMzNzg5LDMzNzc4LDMzNzM4LDMzODQ4LDMzODA2LDMzNzk2LDMzNzU2LDMzNzk5LDMzNzQ4LDMzNzU5LDM0Mzk1LDM0NTI3LDM0NTIxLDM0NTQxLDM0'@; put 'NTE2LDM0NTIzLDM0NTMyLDM0NTEyLDM0NTI2LDM0OTAzLDM1MDA5LDM1MDEwLDM0OTkzLDM1MjAzLDM1MjIyLDM1Mzg3LDM1NDI0LDM1NDEzLDM1NDIyLDM1Mzg4LDM1MzkzLDM1NDEyLDM1NDE5LDM1NDA4LDM1Mzk4LDM1MzgwLDM1Mzg2LDM1MzgyLDM1NDE0LDM1OTM3LDM1OTcwLDM2MDE1'@; put 'LDM2MDI4LDM2MDE5LDM2MDI5LDM2MDMzLDM2MDI3LDM2MDMyLDM2MDIwLDM2MDIzLDM2MDIyLDM2MDMxLDM2MDI0LDM2MjM0LDM2MjI5LDM2MjI1LDM2MzAyLDM2MzE3LDM2Mjk5LDM2MzE0LDM2MzA1LDM2MzAwLDM2MzE1LDM2Mjk0LDM2NjAzLDM2NjAwLDM2NjA0LDM2NzY0LDM2OTEwLDM2'@; put 'OTE3LDM2OTEzLDM2OTIwLDM2OTE0LDM2OTE4LDM3MTIyLDM3MTA5LDM3MTI5LDM3MTE4LDM3MjE5LDM3MjIxLDM3MzI3LDM3Mzk2LDM3Mzk3LDM3NDExLDM3Mzg1LDM3NDA2LDM3Mzg5LDM3MzkyLDM3MzgzLDM3MzkzLDM4MjkyLDM4Mjg3LDM4MjgzLDM4Mjg5LDM4MjkxLDM4MjkwLDM4Mjg2'@; put 'LDM4NTM4LDM4NTQyLDM4NTM5LDM4NTI1LDM4NTMzLDM4NTM0LDM4NTQxLDM4NTE0LDM4NTMyLDM4NTkzLDM4NTk3LDM4NTk2LDM4NTk4LDM4NTk5LDM4NjM5LDM4NjQyLDM4ODYwLDM4OTE3LDM4OTE4LDM4OTIwLDM5MTQzLDM5MTQ2LDM5MTUxLDM5MTQ1LDM5MTU0LDM5MTQ5LDM5MzQyLDM5'@; put 'MzQxLDQwNjQzLDQwNjUzLDQwNjU3LDIwMDk4LDIwNjUzLDIwNjYxLDIwNjU4LDIwNjU5LDIwNjc3LDIwNjcwLDIwNjUyLDIwNjYzLDIwNjY3LDIwNjU1LDIwNjc5LDIxMTE5LDIxMTExLDIxMTE3LDIxMjE1LDIxMjIyLDIxMjIwLDIxMjE4LDIxMjE5LDIxMjk1LDIxOTgzLDIxOTkyLDIxOTcx'@; put 'LDIxOTkwLDIxOTY2LDIxOTgwLDIxOTU5LDIxOTY5LDIxOTg3LDIxOTg4LDIxOTk5LDIxOTc4LDIxOTg1LDIxOTU3LDIxOTU4LDIxOTg5LDIxOTYxLDIyMjkwLDIyMjkxLDIyNjIyLDIyNjA5LDIyNjE2LDIyNjE1LDIyNjE4LDIyNjEyLDIyNjM1LDIyNjA0LDIyNjM3LDIyNjAyLDIyNjI2LDIy'@; put 'NjEwLDIyNjAzLDIyODg3LDIzMjMzLDIzMjQxLDIzMjQ0LDIzMjMwLDIzMjI5LDIzMjI4LDIzMjE5LDIzMjM0LDIzMjE4LDIzOTEzLDIzOTE5LDI0MTQwLDI0MTg1LDI0MjY1LDI0MjY0LDI0MzM4LDI0NDA5LDI0NDkyLDI0NDk0LDI0ODU4LDI0ODQ3LDI0OTA0LDI0ODYzLDI0ODE5LDI0ODU5'@; put 'LDI0ODI1LDI0ODMzLDI0ODQwLDI0OTEwLDI0OTA4LDI0OTAwLDI0OTA5LDI0ODk0LDI0ODg0LDI0ODcxLDI0ODQ1LDI0ODM4LDI0ODg3LDI1MTIxLDI1MTIyLDI1NjE5LDI1NjYyLDI1NjMwLDI1NjQyLDI1NjQ1LDI1NjYxLDI1NjQ0LDI1NjE1LDI1NjI4LDI1NjIwLDI1NjEzLDI1NjU0LDI1'@; put 'NjIyLDI1NjIzLDI1NjA2LDI1OTY0LDI2MDE1LDI2MDMyLDI2MjYzLDI2MjQ5LDI2MjQ3LDI2MjQ4LDI2MjYyLDI2MjQ0LDI2MjY0LDI2MjUzLDI2MzcxLDI3MDI4LDI2OTg5LDI2OTcwLDI2OTk5LDI2OTc2LDI2OTY0LDI2OTk3LDI2OTI4LDI3MDEwLDI2OTU0LDI2OTg0LDI2OTg3LDI2OTc0'@; put 'LDI2OTYzLDI3MDAxLDI3MDE0LDI2OTczLDI2OTc5LDI2OTcxLDI3NDYzLDI3NTA2LDI3NTg0LDI3NTgzLDI3NjAzLDI3NjQ1LDI4MzIyLDI4MzM1LDI4MzcxLDI4MzQyLDI4MzU0LDI4MzA0LDI4MzE3LDI4MzU5LDI4MzU3LDI4MzI1LDI4MzEyLDI4MzQ4LDI4MzQ2LDI4MzMxLDI4MzY5LDI4'@; put 'MzEwLDI4MzE2LDI4MzU2LDI4MzcyLDI4MzMwLDI4MzI3LDI4MzQwLDI5MDA2LDI5MDE3LDI5MDMzLDI5MDI4LDI5MDAxLDI5MDMxLDI5MDIwLDI5MDM2LDI5MDMwLDI5MDA0LDI5MDI5LDI5MDIyLDI4OTk4LDI5MDMyLDI5MDE0LDI5MjQyLDI5MjY2LDI5NDk1LDI5NTA5LDI5NTAzLDI5NTAy'@; put 'LDI5ODA3LDI5Nzg2LDI5NzgxLDI5NzkxLDI5NzkwLDI5NzYxLDI5NzU5LDI5Nzg1LDI5Nzg3LDI5Nzg4LDMwMDcwLDMwMDcyLDMwMjA4LDMwMTkyLDMwMjA5LDMwMTk0LDMwMTkzLDMwMjAyLDMwMjA3LDMwMTk2LDMwMTk1LDMwNDMwLDMwNDMxLDMwNTU1LDMwNTcxLDMwNTY2LDMwNTU4LDMw'@; put 'NTYzLDMwNTg1LDMwNTcwLDMwNTcyLDMwNTU2LDMwNTY1LDMwNTY4LDMwNTYyLDMwNzAyLDMwODYyLDMwODk2LDMwODcxLDMwODcyLDMwODYwLDMwODU3LDMwODQ0LDMwODY1LDMwODY3LDMwODQ3LDMxMDk4LDMxMTAzLDMxMTA1LDMzODM2LDMxMTY1LDMxMjYwLDMxMjU4LDMxMjY0LDMxMjUy'@; put 'LDMxMjYzLDMxMjYyLDMxMzkxLDMxMzkyLDMxNjA3LDMxNjgwLDMxNTg0LDMxNTk4LDMxNTkxLDMxOTIxLDMxOTIzLDMxOTI1LDMyMTQ3LDMyMTIxLDMyMTQ1LDMyMTI5LDMyMTQzLDMyMDkxLDMyNjIyLDMyNjE3LDMyNjE4LDMyNjI2LDMyNjgxLDMyNjgwLDMyNjc2LDMyODU0LDMyODU2LDMy'@; put 'OTAyLDMyOTAwLDMzMTM3LDMzMTM2LDMzMTQ0LDMzMTI1LDMzMTM0LDMzMTM5LDMzMTMxLDMzMTQ1LDMzMTQ2LDMzMTI2LDMzMjg1LDMzMzUxLDMzOTIyLDMzOTExLDMzODUzLDMzODQxLDMzOTA5LDMzODk0LDMzODk5LDMzODY1LDMzOTAwLDMzODgzLDMzODUyLDMzODQ1LDMzODg5LDMzODkx'@; put 'LDMzODk3LDMzOTAxLDMzODYyLDM0Mzk4LDM0Mzk2LDM0Mzk5LDM0NTUzLDM0NTc5LDM0NTY4LDM0NTY3LDM0NTYwLDM0NTU4LDM0NTU1LDM0NTYyLDM0NTYzLDM0NTY2LDM0NTcwLDM0OTA1LDM1MDM5LDM1MDI4LDM1MDMzLDM1MDM2LDM1MDMyLDM1MDM3LDM1MDQxLDM1MDE4LDM1MDI5LDM1'@; put 'MDI2LDM1MjI4LDM1Mjk5LDM1NDM1LDM1NDQyLDM1NDQzLDM1NDMwLDM1NDMzLDM1NDQwLDM1NDYzLDM1NDUyLDM1NDI3LDM1NDg4LDM1NDQxLDM1NDYxLDM1NDM3LDM1NDI2LDM1NDM4LDM1NDM2LDM1NDQ5LDM1NDUxLDM1MzkwLDM1NDMyLDM1OTM4LDM1OTc4LDM1OTc3LDM2MDQyLDM2MDM5'@; put 'LDM2MDQwLDM2MDM2LDM2MDE4LDM2MDM1LDM2MDM0LDM2MDM3LDM2MzIxLDM2MzE5LDM2MzI4LDM2MzM1LDM2MzM5LDM2MzQ2LDM2MzMwLDM2MzI0LDM2MzI2LDM2NTMwLDM2NjExLDM2NjE3LDM2NjA2LDM2NjE4LDM2NzY3LDM2Nzg2LDM2OTM5LDM2OTM4LDM2OTQ3LDM2OTMwLDM2OTQ4LDM2'@; put 'OTI0LDM2OTQ5LDM2OTQ0LDM2OTM1LDM2OTQzLDM2OTQyLDM2OTQxLDM2OTQ1LDM2OTI2LDM2OTI5LDM3MTM4LDM3MTQzLDM3MjI4LDM3MjI2LDM3MjI1LDM3MzIxLDM3NDMxLDM3NDYzLDM3NDMyLDM3NDM3LDM3NDQwLDM3NDM4LDM3NDY3LDM3NDUxLDM3NDc2LDM3NDU3LDM3NDI4LDM3NDQ5'@; put 'LDM3NDUzLDM3NDQ1LDM3NDMzLDM3NDM5LDM3NDY2LDM4Mjk2LDM4NTUyLDM4NTQ4LDM4NTQ5LDM4NjA1LDM4NjAzLDM4NjAxLDM4NjAyLDM4NjQ3LDM4NjUxLDM4NjQ5LDM4NjQ2LDM4NzQyLDM4NzcyLDM4Nzc0LDM4OTI4LDM4OTI5LDM4OTMxLDM4OTIyLDM4OTMwLDM4OTI0LDM5MTY0LDM5'@; put 'MTU2LDM5MTY1LDM5MTY2LDM5MzQ3LDM5MzQ1LDM5MzQ4LDM5NjQ5LDQwMTY5LDQwNTc4LDQwNzE4LDQwNzIzLDQwNzM2LDIwNzExLDIwNzE4LDIwNzA5LDIwNjk0LDIwNzE3LDIwNjk4LDIwNjkzLDIwNjg3LDIwNjg5LDIwNzIxLDIwNjg2LDIwNzEzLDIwODM0LDIwOTc5LDIxMTIzLDIxMTIy'@; put 'LDIxMjk3LDIxNDIxLDIyMDE0LDIyMDE2LDIyMDQzLDIyMDM5LDIyMDEzLDIyMDM2LDIyMDIyLDIyMDI1LDIyMDI5LDIyMDMwLDIyMDA3LDIyMDM4LDIyMDQ3LDIyMDI0LDIyMDMyLDIyMDA2LDIyMjk2LDIyMjk0LDIyNjQ1LDIyNjU0LDIyNjU5LDIyNjc1LDIyNjY2LDIyNjQ5LDIyNjYxLDIy'@; put 'NjUzLDIyNzgxLDIyODIxLDIyODE4LDIyODIwLDIyODkwLDIyODg5LDIzMjY1LDIzMjcwLDIzMjczLDIzMjU1LDIzMjU0LDIzMjU2LDIzMjY3LDIzNDEzLDIzNTE4LDIzNTI3LDIzNTIxLDIzNTI1LDIzNTI2LDIzNTI4LDIzNTIyLDIzNTI0LDIzNTE5LDIzNTY1LDIzNjUwLDIzOTQwLDIzOTQz'@; put 'LDI0MTU1LDI0MTYzLDI0MTQ5LDI0MTUxLDI0MTQ4LDI0Mjc1LDI0Mjc4LDI0MzMwLDI0MzkwLDI0NDMyLDI0NTA1LDI0OTAzLDI0ODk1LDI0OTA3LDI0OTUxLDI0OTMwLDI0OTMxLDI0OTI3LDI0OTIyLDI0OTIwLDI0OTQ5LDI1MTMwLDI1NzM1LDI1Njg4LDI1Njg0LDI1NzY0LDI1NzIwLDI1'@; put 'Njk1LDI1NzIyLDI1NjgxLDI1NzAzLDI1NjUyLDI1NzA5LDI1NzIzLDI1OTcwLDI2MDE3LDI2MDcxLDI2MDcwLDI2Mjc0LDI2MjgwLDI2MjY5LDI3MDM2LDI3MDQ4LDI3MDI5LDI3MDczLDI3MDU0LDI3MDkxLDI3MDgzLDI3MDM1LDI3MDYzLDI3MDY3LDI3MDUxLDI3MDYwLDI3MDg4LDI3MDg1'@; put 'LDI3MDUzLDI3MDg0LDI3MDQ2LDI3MDc1LDI3MDQzLDI3NDY1LDI3NDY4LDI3Njk5LDI4NDY3LDI4NDM2LDI4NDE0LDI4NDM1LDI4NDA0LDI4NDU3LDI4NDc4LDI4NDQ4LDI4NDYwLDI4NDMxLDI4NDE4LDI4NDUwLDI4NDE1LDI4Mzk5LDI4NDIyLDI4NDY1LDI4NDcyLDI4NDY2LDI4NDUxLDI4'@; put 'NDM3LDI4NDU5LDI4NDYzLDI4NTUyLDI4NDU4LDI4Mzk2LDI4NDE3LDI4NDAyLDI4MzY0LDI4NDA3LDI5MDc2LDI5MDgxLDI5MDUzLDI5MDY2LDI5MDYwLDI5MDc0LDI5MjQ2LDI5MzMwLDI5MzM0LDI5NTA4LDI5NTIwLDI5Nzk2LDI5Nzk1LDI5ODAyLDI5ODA4LDI5ODA1LDI5OTU2LDMwMDk3'@; put 'LDMwMjQ3LDMwMjIxLDMwMjE5LDMwMjE3LDMwMjI3LDMwNDMzLDMwNDM1LDMwNTk2LDMwNTg5LDMwNTkxLDMwNTYxLDMwOTEzLDMwODc5LDMwODg3LDMwODk5LDMwODg5LDMwODgzLDMxMTE4LDMxMTE5LDMxMTE3LDMxMjc4LDMxMjgxLDMxNDAyLDMxNDAxLDMxNDY5LDMxNDcxLDMxNjQ5LDMx'@; put 'NjM3LDMxNjI3LDMxNjA1LDMxNjM5LDMxNjQ1LDMxNjM2LDMxNjMxLDMxNjcyLDMxNjIzLDMxNjIwLDMxOTI5LDMxOTMzLDMxOTM0LDMyMTg3LDMyMTc2LDMyMTU2LDMyMTg5LDMyMTkwLDMyMTYwLDMyMjAyLDMyMTgwLDMyMTc4LDMyMTc3LDMyMTg2LDMyMTYyLDMyMTkxLDMyMTgxLDMyMTg0'@; put 'LDMyMTczLDMyMjEwLDMyMTk5LDMyMTcyLDMyNjI0LDMyNzM2LDMyNzM3LDMyNzM1LDMyODYyLDMyODU4LDMyOTAzLDMzMTA0LDMzMTUyLDMzMTY3LDMzMTYwLDMzMTYyLDMzMTUxLDMzMTU0LDMzMjU1LDMzMjc0LDMzMjg3LDMzMzAwLDMzMzEwLDMzMzU1LDMzOTkzLDMzOTgzLDMzOTkwLDMz'@; put 'OTg4LDMzOTQ1LDMzOTUwLDMzOTcwLDMzOTQ4LDMzOTk1LDMzOTc2LDMzOTg0LDM0MDAzLDMzOTM2LDMzOTgwLDM0MDAxLDMzOTk0LDM0NjIzLDM0NTg4LDM0NjE5LDM0NTk0LDM0NTk3LDM0NjEyLDM0NTg0LDM0NjQ1LDM0NjE1LDM0NjAxLDM1MDU5LDM1MDc0LDM1MDYwLDM1MDY1LDM1MDY0'@; put 'LDM1MDY5LDM1MDQ4LDM1MDk4LDM1MDU1LDM1NDk0LDM1NDY4LDM1NDg2LDM1NDkxLDM1NDY5LDM1NDg5LDM1NDc1LDM1NDkyLDM1NDk4LDM1NDkzLDM1NDk2LDM1NDgwLDM1NDczLDM1NDgyLDM1NDk1LDM1OTQ2LDM1OTgxLDM1OTgwLDM2MDUxLDM2MDQ5LDM2MDUwLDM2MjAzLDM2MjQ5LDM2'@; put 'MjQ1LDM2MzQ4LDM2NjI4LDM2NjI2LDM2NjI5LDM2NjI3LDM2NzcxLDM2OTYwLDM2OTUyLDM2OTU2LDM2OTYzLDM2OTUzLDM2OTU4LDM2OTYyLDM2OTU3LDM2OTU1LDM3MTQ1LDM3MTQ0LDM3MTUwLDM3MjM3LDM3MjQwLDM3MjM5LDM3MjM2LDM3NDk2LDM3NTA0LDM3NTA5LDM3NTI4LDM3NTI2'@; put 'LDM3NDk5LDM3NTIzLDM3NTMyLDM3NTQ0LDM3NTAwLDM3NTIxLDM4MzA1LDM4MzEyLDM4MzEzLDM4MzA3LDM4MzA5LDM4MzA4LDM4NTUzLDM4NTU2LDM4NTU1LDM4NjA0LDM4NjEwLDM4NjU2LDM4NzgwLDM4Nzg5LDM4OTAyLDM4OTM1LDM4OTM2LDM5MDg3LDM5MDg5LDM5MTcxLDM5MTczLDM5'@; put 'MTgwLDM5MTc3LDM5MzYxLDM5NTk5LDM5NjAwLDM5NjU0LDM5NzQ1LDM5NzQ2LDQwMTgwLDQwMTgyLDQwMTc5LDQwNjM2LDQwNzYzLDQwNzc4LDIwNzQwLDIwNzM2LDIwNzMxLDIwNzI1LDIwNzI5LDIwNzM4LDIwNzQ0LDIwNzQ1LDIwNzQxLDIwOTU2LDIxMTI3LDIxMTI4LDIxMTI5LDIxMTMz'@; put 'LDIxMTMwLDIxMjMyLDIxNDI2LDIyMDYyLDIyMDc1LDIyMDczLDIyMDY2LDIyMDc5LDIyMDY4LDIyMDU3LDIyMDk5LDIyMDk0LDIyMTAzLDIyMTMyLDIyMDcwLDIyMDYzLDIyMDY0LDIyNjU2LDIyNjg3LDIyNjg2LDIyNzA3LDIyNjg0LDIyNzAyLDIyNjk3LDIyNjk0LDIyODkzLDIzMzA1LDIz'@; put 'MjkxLDIzMzA3LDIzMjg1LDIzMzA4LDIzMzA0LDIzNTM0LDIzNTMyLDIzNTI5LDIzNTMxLDIzNjUyLDIzNjUzLDIzOTY1LDIzOTU2LDI0MTYyLDI0MTU5LDI0MTYxLDI0MjkwLDI0MjgyLDI0Mjg3LDI0Mjg1LDI0MjkxLDI0Mjg4LDI0MzkyLDI0NDMzLDI0NTAzLDI0NTAxLDI0OTUwLDI0OTM1'@; put 'LDI0OTQyLDI0OTI1LDI0OTE3LDI0OTYyLDI0OTU2LDI0OTQ0LDI0OTM5LDI0OTU4LDI0OTk5LDI0OTc2LDI1MDAzLDI0OTc0LDI1MDA0LDI0OTg2LDI0OTk2LDI0OTgwLDI1MDA2LDI1MTM0LDI1NzA1LDI1NzExLDI1NzIxLDI1NzU4LDI1Nzc4LDI1NzM2LDI1NzQ0LDI1Nzc2LDI1NzY1LDI1'@; put 'NzQ3LDI1NzQ5LDI1NzY5LDI1NzQ2LDI1Nzc0LDI1NzczLDI1NzcxLDI1NzU0LDI1NzcyLDI1NzUzLDI1NzYyLDI1Nzc5LDI1OTczLDI1OTc1LDI1OTc2LDI2Mjg2LDI2MjgzLDI2MjkyLDI2Mjg5LDI3MTcxLDI3MTY3LDI3MTEyLDI3MTM3LDI3MTY2LDI3MTYxLDI3MTMzLDI3MTY5LDI3MTU1'@; put 'LDI3MTQ2LDI3MTIzLDI3MTM4LDI3MTQxLDI3MTE3LDI3MTUzLDI3NDcyLDI3NDcwLDI3NTU2LDI3NTg5LDI3NTkwLDI4NDc5LDI4NTQwLDI4NTQ4LDI4NDk3LDI4NTE4LDI4NTAwLDI4NTUwLDI4NTI1LDI4NTA3LDI4NTM2LDI4NTI2LDI4NTU4LDI4NTM4LDI4NTI4LDI4NTE2LDI4NTY3LDI4'@; put 'NTA0LDI4MzczLDI4NTI3LDI4NTEyLDI4NTExLDI5MDg3LDI5MTAwLDI5MTA1LDI5MDk2LDI5MjcwLDI5MzM5LDI5NTE4LDI5NTI3LDI5ODAxLDI5ODM1LDI5ODI3LDI5ODIyLDI5ODI0LDMwMDc5LDMwMjQwLDMwMjQ5LDMwMjM5LDMwMjQ0LDMwMjQ2LDMwMjQxLDMwMjQyLDMwMzYyLDMwMzk0'@; put 'LDMwNDM2LDMwNjA2LDMwNTk5LDMwNjA0LDMwNjA5LDMwNjAzLDMwOTIzLDMwOTE3LDMwOTA2LDMwOTIyLDMwOTEwLDMwOTMzLDMwOTA4LDMwOTI4LDMxMjk1LDMxMjkyLDMxMjk2LDMxMjkzLDMxMjg3LDMxMjkxLDMxNDA3LDMxNDA2LDMxNjYxLDMxNjY1LDMxNjg0LDMxNjY4LDMxNjg2LDMx'@; put 'Njg3LDMxNjgxLDMxNjQ4LDMxNjkyLDMxOTQ2LDMyMjI0LDMyMjQ0LDMyMjM5LDMyMjUxLDMyMjE2LDMyMjM2LDMyMjIxLDMyMjMyLDMyMjI3LDMyMjE4LDMyMjIyLDMyMjMzLDMyMTU4LDMyMjE3LDMyMjQyLDMyMjQ5LDMyNjI5LDMyNjMxLDMyNjg3LDMyNzQ1LDMyODA2LDMzMTc5LDMzMTgw'@; put 'LDMzMTgxLDMzMTg0LDMzMTc4LDMzMTc2LDM0MDcxLDM0MTA5LDM0MDc0LDM0MDMwLDM0MDkyLDM0MDkzLDM0MDY3LDM0MDY1LDM0MDgzLDM0MDgxLDM0MDY4LDM0MDI4LDM0MDg1LDM0MDQ3LDM0MDU0LDM0NjkwLDM0Njc2LDM0Njc4LDM0NjU2LDM0NjYyLDM0NjgwLDM0NjY0LDM0NjQ5LDM0'@; put 'NjQ3LDM0NjM2LDM0NjQzLDM0OTA3LDM0OTA5LDM1MDg4LDM1MDc5LDM1MDkwLDM1MDkxLDM1MDkzLDM1MDgyLDM1NTE2LDM1NTM4LDM1NTI3LDM1NTI0LDM1NDc3LDM1NTMxLDM1NTc2LDM1NTA2LDM1NTI5LDM1NTIyLDM1NTE5LDM1NTA0LDM1NTQyLDM1NTMzLDM1NTEwLDM1NTEzLDM1NTQ3'@; put 'LDM1OTE2LDM1OTE4LDM1OTQ4LDM2MDY0LDM2MDYyLDM2MDcwLDM2MDY4LDM2MDc2LDM2MDc3LDM2MDY2LDM2MDY3LDM2MDYwLDM2MDc0LDM2MDY1LDM2MjA1LDM2MjU1LDM2MjU5LDM2Mzk1LDM2MzY4LDM2MzgxLDM2Mzg2LDM2MzY3LDM2MzkzLDM2MzgzLDM2Mzg1LDM2MzgyLDM2NTM4LDM2'@; put 'NjM3LDM2NjM1LDM2NjM5LDM2NjQ5LDM2NjQ2LDM2NjUwLDM2NjM2LDM2NjM4LDM2NjQ1LDM2OTY5LDM2OTc0LDM2OTY4LDM2OTczLDM2OTgzLDM3MTY4LDM3MTY1LDM3MTU5LDM3MTY5LDM3MjU1LDM3MjU3LDM3MjU5LDM3MjUxLDM3NTczLDM3NTYzLDM3NTU5LDM3NjEwLDM3NTQ4LDM3NjA0'@; put 'LDM3NTY5LDM3NTU1LDM3NTY0LDM3NTg2LDM3NTc1LDM3NjE2LDM3NTU0LDM4MzE3LDM4MzIxLDM4NjYwLDM4NjYyLDM4NjYzLDM4NjY1LDM4NzUyLDM4Nzk3LDM4Nzk1LDM4Nzk5LDM4OTQ1LDM4OTU1LDM4OTQwLDM5MDkxLDM5MTc4LDM5MTg3LDM5MTg2LDM5MTkyLDM5Mzg5LDM5Mzc2LDM5'@; put 'MzkxLDM5Mzg3LDM5Mzc3LDM5MzgxLDM5Mzc4LDM5Mzg1LDM5NjA3LDM5NjYyLDM5NjYzLDM5NzE5LDM5NzQ5LDM5NzQ4LDM5Nzk5LDM5NzkxLDQwMTk4LDQwMjAxLDQwMTk1LDQwNjE3LDQwNjM4LDQwNjU0LDIyNjk2LDQwNzg2LDIwNzU0LDIwNzYwLDIwNzU2LDIwNzUyLDIwNzU3LDIwODY0'@; put 'LDIwOTA2LDIwOTU3LDIxMTM3LDIxMTM5LDIxMjM1LDIyMTA1LDIyMTIzLDIyMTM3LDIyMTIxLDIyMTE2LDIyMTM2LDIyMTIyLDIyMTIwLDIyMTE3LDIyMTI5LDIyMTI3LDIyMTI0LDIyMTE0LDIyMTM0LDIyNzIxLDIyNzE4LDIyNzI3LDIyNzI1LDIyODk0LDIzMzI1LDIzMzQ4LDIzNDE2LDIz'@; put 'NTM2LDIzNTY2LDI0Mzk0LDI1MDEwLDI0OTc3LDI1MDAxLDI0OTcwLDI1MDM3LDI1MDE0LDI1MDIyLDI1MDM0LDI1MDMyLDI1MTM2LDI1Nzk3LDI1NzkzLDI1ODAzLDI1Nzg3LDI1Nzg4LDI1ODE4LDI1Nzk2LDI1Nzk5LDI1Nzk0LDI1ODA1LDI1NzkxLDI1ODEwLDI1ODEyLDI1NzkwLDI1OTcy'@; put 'LDI2MzEwLDI2MzEzLDI2Mjk3LDI2MzA4LDI2MzExLDI2Mjk2LDI3MTk3LDI3MTkyLDI3MTk0LDI3MjI1LDI3MjQzLDI3MjI0LDI3MTkzLDI3MjA0LDI3MjM0LDI3MjMzLDI3MjExLDI3MjA3LDI3MTg5LDI3MjMxLDI3MjA4LDI3NDgxLDI3NTExLDI3NjUzLDI4NjEwLDI4NTkzLDI4NTc3LDI4'@; put 'NjExLDI4NTgwLDI4NjA5LDI4NTgzLDI4NTk1LDI4NjA4LDI4NjAxLDI4NTk4LDI4NTgyLDI4NTc2LDI4NTk2LDI5MTE4LDI5MTI5LDI5MTM2LDI5MTM4LDI5MTI4LDI5MTQxLDI5MTEzLDI5MTM0LDI5MTQ1LDI5MTQ4LDI5MTIzLDI5MTI0LDI5NTQ0LDI5ODUyLDI5ODU5LDI5ODQ4LDI5ODU1'@; put 'LDI5ODU0LDI5OTIyLDI5OTY0LDI5OTY1LDMwMjYwLDMwMjY0LDMwMjY2LDMwNDM5LDMwNDM3LDMwNjI0LDMwNjIyLDMwNjIzLDMwNjI5LDMwOTUyLDMwOTM4LDMwOTU2LDMwOTUxLDMxMTQyLDMxMzA5LDMxMzEwLDMxMzAyLDMxMzA4LDMxMzA3LDMxNDE4LDMxNzA1LDMxNzYxLDMxNjg5LDMx'@; put 'NzE2LDMxNzA3LDMxNzEzLDMxNzIxLDMxNzE4LDMxOTU3LDMxOTU4LDMyMjY2LDMyMjczLDMyMjY0LDMyMjgzLDMyMjkxLDMyMjg2LDMyMjg1LDMyMjY1LDMyMjcyLDMyNjMzLDMyNjkwLDMyNzUyLDMyNzUzLDMyNzUwLDMyODA4LDMzMjAzLDMzMTkzLDMzMTkyLDMzMjc1LDMzMjg4LDMzMzY4'@; put 'LDMzMzY5LDM0MTIyLDM0MTM3LDM0MTIwLDM0MTUyLDM0MTUzLDM0MTE1LDM0MTIxLDM0MTU3LDM0MTU0LDM0MTQyLDM0NjkxLDM0NzE5LDM0NzE4LDM0NzIyLDM0NzAxLDM0OTEzLDM1MTE0LDM1MTIyLDM1MTA5LDM1MTE1LDM1MTA1LDM1MjQyLDM1MjM4LDM1NTU4LDM1NTc4LDM1NTYzLDM1'@; put 'NTY5LDM1NTg0LDM1NTQ4LDM1NTU5LDM1NTY2LDM1NTgyLDM1NTg1LDM1NTg2LDM1NTc1LDM1NTY1LDM1NTcxLDM1NTc0LDM1NTgwLDM1OTQ3LDM1OTQ5LDM1OTg3LDM2MDg0LDM2NDIwLDM2NDAxLDM2NDA0LDM2NDE4LDM2NDA5LDM2NDA1LDM2NjY3LDM2NjU1LDM2NjY0LDM2NjU5LDM2Nzc2'@; put 'LDM2Nzc0LDM2OTgxLDM2OTgwLDM2OTg0LDM2OTc4LDM2OTg4LDM2OTg2LDM3MTcyLDM3MjY2LDM3NjY0LDM3Njg2LDM3NjI0LDM3NjgzLDM3Njc5LDM3NjY2LDM3NjI4LDM3Njc1LDM3NjM2LDM3NjU4LDM3NjQ4LDM3NjcwLDM3NjY1LDM3NjUzLDM3Njc4LDM3NjU3LDM4MzMxLDM4NTY3LDM4'@; put 'NTY4LDM4NTcwLDM4NjEzLDM4NjcwLDM4NjczLDM4Njc4LDM4NjY5LDM4Njc1LDM4NjcxLDM4NzQ3LDM4NzQ4LDM4NzU4LDM4ODA4LDM4OTYwLDM4OTY4LDM4OTcxLDM4OTY3LDM4OTU3LDM4OTY5LDM4OTQ4LDM5MTg0LDM5MjA4LDM5MTk4LDM5MTk1LDM5MjAxLDM5MTk0LDM5NDA1LDM5Mzk0'@; put 'LDM5NDA5LDM5NjA4LDM5NjEyLDM5Njc1LDM5NjYxLDM5NzIwLDM5ODI1LDQwMjEzLDQwMjI3LDQwMjMwLDQwMjMyLDQwMjEwLDQwMjE5LDQwNjY0LDQwNjYwLDQwODQ1LDQwODYwLDIwNzc4LDIwNzY3LDIwNzY5LDIwNzg2LDIxMjM3LDIyMTU4LDIyMTQ0LDIyMTYwLDIyMTQ5LDIyMTUxLDIy'@; put 'MTU5LDIyNzQxLDIyNzM5LDIyNzM3LDIyNzM0LDIzMzQ0LDIzMzM4LDIzMzMyLDIzNDE4LDIzNjA3LDIzNjU2LDIzOTk2LDIzOTk0LDIzOTk3LDIzOTkyLDI0MTcxLDI0Mzk2LDI0NTA5LDI1MDMzLDI1MDI2LDI1MDMxLDI1MDYyLDI1MDM1LDI1MTM4LDI1MTQwLDI1ODA2LDI1ODAyLDI1ODE2'@; put 'LDI1ODI0LDI1ODQwLDI1ODMwLDI1ODM2LDI1ODQxLDI1ODI2LDI1ODM3LDI1OTg2LDI1OTg3LDI2MzI5LDI2MzI2LDI3MjY0LDI3Mjg0LDI3MjY4LDI3Mjk4LDI3MjkyLDI3MzU1LDI3Mjk5LDI3MjYyLDI3Mjg3LDI3MjgwLDI3Mjk2LDI3NDg0LDI3NTY2LDI3NjEwLDI3NjU2LDI4NjMyLDI4'@; put 'NjU3LDI4NjM5LDI4NjQwLDI4NjM1LDI4NjQ0LDI4NjUxLDI4NjU1LDI4NTQ0LDI4NjUyLDI4NjQxLDI4NjQ5LDI4NjI5LDI4NjU0LDI4NjU2LDI5MTU5LDI5MTUxLDI5MTY2LDI5MTU4LDI5MTU3LDI5MTY1LDI5MTY0LDI5MTcyLDI5MTUyLDI5MjM3LDI5MjU0LDI5NTUyLDI5NTU0LDI5ODY1'@; put 'LDI5ODcyLDI5ODYyLDI5ODY0LDMwMjc4LDMwMjc0LDMwMjg0LDMwNDQyLDMwNjQzLDMwNjM0LDMwNjQwLDMwNjM2LDMwNjMxLDMwNjM3LDMwNzAzLDMwOTY3LDMwOTcwLDMwOTY0LDMwOTU5LDMwOTc3LDMxMTQzLDMxMTQ2LDMxMzE5LDMxNDIzLDMxNzUxLDMxNzU3LDMxNzQyLDMxNzM1LDMx'@; put 'NzU2LDMxNzEyLDMxOTY4LDMxOTY0LDMxOTY2LDMxOTcwLDMxOTY3LDMxOTYxLDMxOTY1LDMyMzAyLDMyMzE4LDMyMzI2LDMyMzExLDMyMzA2LDMyMzIzLDMyMjk5LDMyMzE3LDMyMzA1LDMyMzI1LDMyMzIxLDMyMzA4LDMyMzEzLDMyMzI4LDMyMzA5LDMyMzE5LDMyMzAzLDMyNTgwLDMyNzU1'@; put 'LDMyNzY0LDMyODgxLDMyODgyLDMyODgwLDMyODc5LDMyODgzLDMzMjIyLDMzMjE5LDMzMjEwLDMzMjE4LDMzMjE2LDMzMjE1LDMzMjEzLDMzMjI1LDMzMjE0LDMzMjU2LDMzMjg5LDMzMzkzLDM0MjE4LDM0MTgwLDM0MTc0LDM0MjA0LDM0MTkzLDM0MTk2LDM0MjIzLDM0MjAzLDM0MTgzLDM0'@; put 'MjE2LDM0MTg2LDM0NDA3LDM0NzUyLDM0NzY5LDM0NzM5LDM0NzcwLDM0NzU4LDM0NzMxLDM0NzQ3LDM0NzQ2LDM0NzYwLDM0NzYzLDM1MTMxLDM1MTI2LDM1MTQwLDM1MTI4LDM1MTMzLDM1MjQ0LDM1NTk4LDM1NjA3LDM1NjA5LDM1NjExLDM1NTk0LDM1NjE2LDM1NjEzLDM1NTg4LDM1NjAw'@; put 'LDM1OTA1LDM1OTAzLDM1OTU1LDM2MDkwLDM2MDkzLDM2MDkyLDM2MDg4LDM2MDkxLDM2MjY0LDM2NDI1LDM2NDI3LDM2NDI0LDM2NDI2LDM2Njc2LDM2NjcwLDM2Njc0LDM2Njc3LDM2NjcxLDM2OTkxLDM2OTg5LDM2OTk2LDM2OTkzLDM2OTk0LDM2OTkyLDM3MTc3LDM3MjgzLDM3Mjc4LDM3'@; put 'Mjc2LDM3NzA5LDM3NzYyLDM3NjcyLDM3NzQ5LDM3NzA2LDM3NzMzLDM3NzA3LDM3NjU2LDM3NzU4LDM3NzQwLDM3NzIzLDM3NzQ0LDM3NzIyLDM3NzE2LDM4MzQ2LDM4MzQ3LDM4MzQ4LDM4MzQ0LDM4MzQyLDM4NTc3LDM4NTg0LDM4NjE0LDM4Njg0LDM4Njg2LDM4ODE2LDM4ODY3LDM4OTgy'@; put 'LDM5MDk0LDM5MjIxLDM5NDI1LDM5NDIzLDM5ODU0LDM5ODUxLDM5ODUwLDM5ODUzLDQwMjUxLDQwMjU1LDQwNTg3LDQwNjU1LDQwNjcwLDQwNjY4LDQwNjY5LDQwNjY3LDQwNzY2LDQwNzc5LDIxNDc0LDIyMTY1LDIyMTkwLDIyNzQ1LDIyNzQ0LDIzMzUyLDI0NDEzLDI1MDU5LDI1MTM5LDI1'@; put 'ODQ0LDI1ODQyLDI1ODU0LDI1ODYyLDI1ODUwLDI1ODUxLDI1ODQ3LDI2MDM5LDI2MzMyLDI2NDA2LDI3MzE1LDI3MzA4LDI3MzMxLDI3MzIzLDI3MzIwLDI3MzMwLDI3MzEwLDI3MzExLDI3NDg3LDI3NTEyLDI3NTY3LDI4NjgxLDI4NjgzLDI4NjcwLDI4Njc4LDI4NjY2LDI4Njg5LDI4Njg3'@; put 'LDI5MTc5LDI5MTgwLDI5MTgyLDI5MTc2LDI5NTU5LDI5NTU3LDI5ODYzLDI5ODg3LDI5OTczLDMwMjk0LDMwMjk2LDMwMjkwLDMwNjUzLDMwNjU1LDMwNjUxLDMwNjUyLDMwOTkwLDMxMTUwLDMxMzI5LDMxMzMwLDMxMzI4LDMxNDI4LDMxNDI5LDMxNzg3LDMxNzgzLDMxNzg2LDMxNzc0LDMx'@; put 'Nzc5LDMxNzc3LDMxOTc1LDMyMzQwLDMyMzQxLDMyMzUwLDMyMzQ2LDMyMzUzLDMyMzM4LDMyMzQ1LDMyNTg0LDMyNzYxLDMyNzYzLDMyODg3LDMyODg2LDMzMjI5LDMzMjMxLDMzMjkwLDM0MjU1LDM0MjE3LDM0MjUzLDM0MjU2LDM0MjQ5LDM0MjI0LDM0MjM0LDM0MjMzLDM0MjE0LDM0Nzk5'@; put 'LDM0Nzk2LDM0ODAyLDM0Nzg0LDM1MjA2LDM1MjUwLDM1MzE2LDM1NjI0LDM1NjQxLDM1NjI4LDM1NjI3LDM1OTIwLDM2MTAxLDM2NDQxLDM2NDUxLDM2NDU0LDM2NDUyLDM2NDQ3LDM2NDM3LDM2NTQ0LDM2NjgxLDM2Njg1LDM2OTk5LDM2OTk1LDM3ZTMsMzcyOTEsMzcyOTIsMzczMjgsMzc3'@; put 'ODAsMzc3NzAsMzc3ODIsMzc3OTQsMzc4MTEsMzc4MDYsMzc4MDQsMzc4MDgsMzc3ODQsMzc3ODYsMzc3ODMsMzgzNTYsMzgzNTgsMzgzNTIsMzgzNTcsMzg2MjYsMzg2MjAsMzg2MTcsMzg2MTksMzg2MjIsMzg2OTIsMzg4MTksMzg4MjIsMzg4MjksMzg5MDUsMzg5ODksMzg5OTEsMzg5ODgs'@; put 'Mzg5OTAsMzg5OTUsMzkwOTgsMzkyMzAsMzkyMzEsMzkyMjksMzkyMTQsMzkzMzMsMzk0MzgsMzk2MTcsMzk2ODMsMzk2ODYsMzk3NTksMzk3NTgsMzk3NTcsMzk4ODIsMzk4ODEsMzk5MzMsMzk4ODAsMzk4NzIsNDAyNzMsNDAyODUsNDAyODgsNDA2NzIsNDA3MjUsNDA3NDgsMjA3ODcsMjIx'@; put 'ODEsMjI3NTAsMjI3NTEsMjI3NTQsMjM1NDEsNDA4NDgsMjQzMDAsMjUwNzQsMjUwNzksMjUwNzgsMjUwNzcsMjU4NTYsMjU4NzEsMjYzMzYsMjYzMzMsMjczNjUsMjczNTcsMjczNTQsMjczNDcsMjg2OTksMjg3MDMsMjg3MTIsMjg2OTgsMjg3MDEsMjg2OTMsMjg2OTYsMjkxOTAsMjkxOTcs'@; put 'MjkyNzIsMjkzNDYsMjk1NjAsMjk1NjIsMjk4ODUsMjk4OTgsMjk5MjMsMzAwODcsMzAwODYsMzAzMDMsMzAzMDUsMzA2NjMsMzEwMDEsMzExNTMsMzEzMzksMzEzMzcsMzE4MDYsMzE4MDcsMzE4MDAsMzE4MDUsMzE3OTksMzE4MDgsMzIzNjMsMzIzNjUsMzIzNzcsMzIzNjEsMzIzNjIsMzI2'@; put 'NDUsMzIzNzEsMzI2OTQsMzI2OTcsMzI2OTYsMzMyNDAsMzQyODEsMzQyNjksMzQyODIsMzQyNjEsMzQyNzYsMzQyNzcsMzQyOTUsMzQ4MTEsMzQ4MjEsMzQ4MjksMzQ4MDksMzQ4MTQsMzUxNjgsMzUxNjcsMzUxNTgsMzUxNjYsMzU2NDksMzU2NzYsMzU2NzIsMzU2NTcsMzU2NzQsMzU2NjIs'@; put 'MzU2NjMsMzU2NTQsMzU2NzMsMzYxMDQsMzYxMDYsMzY0NzYsMzY0NjYsMzY0ODcsMzY0NzAsMzY0NjAsMzY0NzQsMzY0NjgsMzY2OTIsMzY2ODYsMzY3ODEsMzcwMDIsMzcwMDMsMzcyOTcsMzcyOTQsMzc4NTcsMzc4NDEsMzc4NTUsMzc4MjcsMzc4MzIsMzc4NTIsMzc4NTMsMzc4NDYsMzc4'@; put 'NTgsMzc4MzcsMzc4NDgsMzc4NjAsMzc4NDcsMzc4NjQsMzgzNjQsMzg1ODAsMzg2MjcsMzg2OTgsMzg2OTUsMzg3NTMsMzg4NzYsMzg5MDcsMzkwMDYsMzllMywzOTAwMywzOTEwMCwzOTIzNywzOTI0MSwzOTQ0NiwzOTQ0OSwzOTY5MywzOTkxMiwzOTkxMSwzOTg5NCwzOTg5OSw0MDMyOSw0'@; put 'MDI4OSw0MDMwNiw0MDI5OCw0MDMwMCw0MDU5NCw0MDU5OSw0MDU5NSw0MDYyOCwyMTI0MCwyMjE4NCwyMjE5OSwyMjE5OCwyMjE5NiwyMjIwNCwyMjc1NiwyMzM2MCwyMzM2MywyMzQyMSwyMzU0MiwyNDAwOSwyNTA4MCwyNTA4MiwyNTg4MCwyNTg3NiwyNTg4MSwyNjM0MiwyNjQwNywyNzM3'@; put 'MiwyODczNCwyODcyMCwyODcyMiwyOTIwMCwyOTU2MywyOTkwMywzMDMwNiwzMDMwOSwzMTAxNCwzMTAxOCwzMTAyMCwzMTAxOSwzMTQzMSwzMTQ3OCwzMTgyMCwzMTgxMSwzMTgyMSwzMTk4MywzMTk4NCwzNjc4MiwzMjM4MSwzMjM4MCwzMjM4NiwzMjU4OCwzMjc2OCwzMzI0MiwzMzM4Miwz'@; put 'NDI5OSwzNDI5NywzNDMyMSwzNDI5OCwzNDMxMCwzNDMxNSwzNDMxMSwzNDMxNCwzNDgzNiwzNDgzNywzNTE3MiwzNTI1OCwzNTMyMCwzNTY5NiwzNTY5MiwzNTY4NiwzNTY5NSwzNTY3OSwzNTY5MSwzNjExMSwzNjEwOSwzNjQ4OSwzNjQ4MSwzNjQ4NSwzNjQ4MiwzNzMwMCwzNzMyMywzNzkx'@; put 'MiwzNzg5MSwzNzg4NSwzODM2OSwzODcwNCwzOTEwOCwzOTI1MCwzOTI0OSwzOTMzNiwzOTQ2NywzOTQ3MiwzOTQ3OSwzOTQ3NywzOTk1NSwzOTk0OSw0MDU2OSw0MDYyOSw0MDY4MCw0MDc1MSw0MDc5OSw0MDgwMyw0MDgwMSwyMDc5MSwyMDc5MiwyMjIwOSwyMjIwOCwyMjIxMCwyMjgwNCwy'@; put 'MzY2MCwyNDAxMywyNTA4NCwyNTA4NiwyNTg4NSwyNTg4NCwyNjAwNSwyNjM0NSwyNzM4NywyNzM5NiwyNzM4NiwyNzU3MCwyODc0OCwyOTIxMSwyOTM1MSwyOTkxMCwyOTkwOCwzMDMxMywzMDY3NSwzMTgyNCwzMjM5OSwzMjM5NiwzMjcwMCwzNDMyNywzNDM0OSwzNDMzMCwzNDg1MSwzNDg1'@; put 'MCwzNDg0OSwzNDg0NywzNTE3OCwzNTE4MCwzNTI2MSwzNTcwMCwzNTcwMywzNTcwOSwzNjExNSwzNjQ5MCwzNjQ5MywzNjQ5MSwzNjcwMywzNjc4MywzNzMwNiwzNzkzNCwzNzkzOSwzNzk0MSwzNzk0NiwzNzk0NCwzNzkzOCwzNzkzMSwzODM3MCwzODcxMiwzODcxMywzODcwNiwzODkxMSwz'@; put 'OTAxNSwzOTAxMywzOTI1NSwzOTQ5MywzOTQ5MSwzOTQ4OCwzOTQ4NiwzOTYzMSwzOTc2NCwzOTc2MSwzOTk4MSwzOTk3Myw0MDM2Nyw0MDM3Miw0MDM4Niw0MDM3Niw0MDYwNSw0MDY4Nyw0MDcyOSw0MDc5Niw0MDgwNiw0MDgwNywyMDc5NiwyMDc5NSwyMjIxNiwyMjIxOCwyMjIxNywyMzQy'@; put 'MywyNDAyMCwyNDAxOCwyNDM5OCwyNTA4NywyNTg5MiwyNzQwMiwyNzQ4OSwyODc1MywyODc2MCwyOTU2OCwyOTkyNCwzMDA5MCwzMDMxOCwzMDMxNiwzMTE1NSwzMTg0MCwzMTgzOSwzMjg5NCwzMjg5MywzMzI0NywzNTE4NiwzNTE4MywzNTMyNCwzNTcxMiwzNjExOCwzNjExOSwzNjQ5Nywz'@; put 'NjQ5OSwzNjcwNSwzNzE5MiwzNzk1NiwzNzk2OSwzNzk3MCwzODcxNywzODcxOCwzODg1MSwzODg0OSwzOTAxOSwzOTI1MywzOTUwOSwzOTUwMSwzOTYzNCwzOTcwNiw0MDAwOSwzOTk4NSwzOTk5OCwzOTk5NSw0MDQwMyw0MDQwNyw0MDc1Niw0MDgxMiw0MDgxMCw0MDg1MiwyMjIyMCwyNDAy'@; put 'MiwyNTA4OCwyNTg5MSwyNTg5OSwyNTg5OCwyNjM0OCwyNzQwOCwyOTkxNCwzMTQzNCwzMTg0NCwzMTg0MywzMTg0NSwzMjQwMywzMjQwNiwzMjQwNCwzMzI1MCwzNDM2MCwzNDM2NywzNDg2NSwzNTcyMiwzNzAwOCwzNzAwNywzNzk4NywzNzk4NCwzNzk4OCwzODc2MCwzOTAyMywzOTI2MCwz'@; put 'OTUxNCwzOTUxNSwzOTUxMSwzOTYzNSwzOTYzNiwzOTYzMyw0MDAyMCw0MDAyMyw0MDAyMiw0MDQyMSw0MDYwNyw0MDY5MiwyMjIyNSwyMjc2MSwyNTkwMCwyODc2NiwzMDMyMSwzMDMyMiwzMDY3OSwzMjU5MiwzMjY0OCwzNDg3MCwzNDg3MywzNDkxNCwzNTczMSwzNTczMCwzNTczNCwzMzM5'@; put 'OSwzNjEyMywzNzMxMiwzNzk5NCwzODcyMiwzODcyOCwzODcyNCwzODg1NCwzOTAyNCwzOTUxOSwzOTcxNCwzOTc2OCw0MDAzMSw0MDQ0MSw0MDQ0Miw0MDU3Miw0MDU3Myw0MDcxMSw0MDgyMyw0MDgxOCwyNDMwNywyNzQxNCwyODc3MSwzMTg1MiwzMTg1NCwzNDg3NSwzNTI2NCwzNjUxMywz'@; put 'NzMxMywzODAwMiwzOGUzLDM5MDI1LDM5MjYyLDM5NjM4LDM5NzE1LDQwNjUyLDI4NzcyLDMwNjgyLDM1NzM4LDM4MDA3LDM4ODU3LDM5NTIyLDM5NTI1LDMyNDEyLDM1NzQwLDM2NTIyLDM3MzE3LDM4MDEzLDM4MDE0LDM4MDEyLDQwMDU1LDQwMDU2LDQwNjk1LDM1OTI0LDM4MDE1LDQwNDc0'@; put 'LDI5MjI0LDM5NTMwLDM5NzI5LDQwNDc1LDQwNDc4LDMxODU4LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2'@; put 'NSw4NTY2LDg1NjcsODU2OCw4NTY5LDIwMDIyLDIwMDMxLDIwMTAxLDIwMTI4LDIwODY2LDIwODg2LDIwOTA3LDIxMjQxLDIxMzA0LDIxMzUzLDIxNDMwLDIyNzk0LDIzNDI0LDI0MDI3LDEyMDgzLDI0MTkxLDI0MzA4LDI0NDAwLDI0NDE3LDI1OTA4LDI2MDgwLDMwMDk4LDMwMzI2LDM2Nzg5'@; put 'LDM4NTgyLDE2OCw3MTAsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsNjUzMzksNjUzNDEsMTAwNDUsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQs'@; put 'MTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIz'@; put 'OTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTks'@; put 'MTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0'@; put 'NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcs'@; put 'MTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1'@; put 'MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0'@; put 'OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4'@; put 'MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODY3OSw4NjMyLDg2MzMsMTI3NTEsMTMxMjc2LDIwMDU4LDEzMTIxMCwyMDk5NCwx'@; put 'NzU1Myw0MDg4MCwyMDg3Miw0MDg4MSwxNjEyODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsMTI0NDMsMTI0NDQsMTE5MDQsMTE5MDgsMTE5MTAsMTE5MTEsMTE5MTIsMTE5MTQsMTE5MTYsMTE5MTcs'@; put 'MTE5MjUsMTE5MzIsMTE5MzMsMTE5NDEsMTE5NDMsMTE5NDYsMTE5NDgsMTE5NTAsMTE5NTgsMTE5NjQsMTE5NjYsMTE5NzQsMTE5NzgsMTE5ODAsMTE5ODEsMTE5ODMsMTE5OTAsMTE5OTEsMTE5OTgsMTIwMDMsbnVsbCxudWxsLG51bGwsNjQzLDU5Miw2MDMsNTk2LDYyOSwzMzksMjQ4LDMz'@; put 'MSw2NTAsNjE4LDIwMDM0LDIwMDYwLDIwOTgxLDIxMjc0LDIxMzc4LDE5OTc1LDE5OTgwLDIwMDM5LDIwMTA5LDIyMjMxLDY0MDEyLDIzNjYyLDI0NDM1LDE5OTgzLDIwODcxLDE5OTgyLDIwMDE0LDIwMTE1LDIwMTYyLDIwMTY5LDIwMTY4LDIwODg4LDIxMjQ0LDIxMzU2LDIxNDMzLDIyMzA0'@; put 'LDIyNzg3LDIyODI4LDIzNTY4LDI0MDYzLDI2MDgxLDI3NTcxLDI3NTk2LDI3NjY4LDI5MjQ3LDIwMDE3LDIwMDI4LDIwMjAwLDIwMTg4LDIwMjAxLDIwMTkzLDIwMTg5LDIwMTg2LDIxMDA0LDIxMjc2LDIxMzI0LDIyMzA2LDIyMzA3LDIyODA3LDIyODMxLDIzNDI1LDIzNDI4LDIzNTcwLDIz'@; put 'NjExLDIzNjY4LDIzNjY3LDI0MDY4LDI0MTkyLDI0MTk0LDI0NTIxLDI1MDk3LDI1MTY4LDI3NjY5LDI3NzAyLDI3NzE1LDI3NzExLDI3NzA3LDI5MzU4LDI5MzYwLDI5NTc4LDMxMTYwLDMyOTA2LDM4NDMwLDIwMjM4LDIwMjQ4LDIwMjY4LDIwMjEzLDIwMjQ0LDIwMjA5LDIwMjI0LDIwMjE1'@; put 'LDIwMjMyLDIwMjUzLDIwMjI2LDIwMjI5LDIwMjU4LDIwMjQzLDIwMjI4LDIwMjEyLDIwMjQyLDIwOTEzLDIxMDExLDIxMDAxLDIxMDA4LDIxMTU4LDIxMjgyLDIxMjc5LDIxMzI1LDIxMzg2LDIxNTExLDIyMjQxLDIyMjM5LDIyMzE4LDIyMzE0LDIyMzI0LDIyODQ0LDIyOTEyLDIyOTA4LDIy'@; put 'OTE3LDIyOTA3LDIyOTEwLDIyOTAzLDIyOTExLDIzMzgyLDIzNTczLDIzNTg5LDIzNjc2LDIzNjc0LDIzNjc1LDIzNjc4LDI0MDMxLDI0MTgxLDI0MTk2LDI0MzIyLDI0MzQ2LDI0NDM2LDI0NTMzLDI0NTMyLDI0NTI3LDI1MTgwLDI1MTgyLDI1MTg4LDI1MTg1LDI1MTkwLDI1MTg2LDI1MTc3'@; put 'LDI1MTg0LDI1MTc4LDI1MTg5LDI2MDk1LDI2MDk0LDI2NDMwLDI2NDI1LDI2NDI0LDI2NDI3LDI2NDI2LDI2NDMxLDI2NDI4LDI2NDE5LDI3NjcyLDI3NzE4LDI3NzMwLDI3NzQwLDI3NzI3LDI3NzIyLDI3NzMyLDI3NzIzLDI3NzI0LDI4Nzg1LDI5Mjc4LDI5MzY0LDI5MzY1LDI5NTgyLDI5'@; put 'OTk0LDMwMzM1LDMxMzQ5LDMyNTkzLDMzNDAwLDMzNDA0LDMzNDA4LDMzNDA1LDMzNDA3LDM0MzgxLDM1MTk4LDM3MDE3LDM3MDE1LDM3MDE2LDM3MDE5LDM3MDEyLDM4NDM0LDM4NDM2LDM4NDMyLDM4NDM1LDIwMzEwLDIwMjgzLDIwMzIyLDIwMjk3LDIwMzA3LDIwMzI0LDIwMjg2LDIwMzI3'@; put 'LDIwMzA2LDIwMzE5LDIwMjg5LDIwMzEyLDIwMjY5LDIwMjc1LDIwMjg3LDIwMzIxLDIwODc5LDIwOTIxLDIxMDIwLDIxMDIyLDIxMDI1LDIxMTY1LDIxMTY2LDIxMjU3LDIxMzQ3LDIxMzYyLDIxMzkwLDIxMzkxLDIxNTUyLDIxNTU5LDIxNTQ2LDIxNTg4LDIxNTczLDIxNTI5LDIxNTMyLDIx'@; put 'NTQxLDIxNTI4LDIxNTY1LDIxNTgzLDIxNTY5LDIxNTQ0LDIxNTQwLDIxNTc1LDIyMjU0LDIyMjQ3LDIyMjQ1LDIyMzM3LDIyMzQxLDIyMzQ4LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyNzkwLDIyODQ4LDIyOTUwLDIyOTM2LDIyOTQ0LDIyOTM1LDIyOTI2LDIyOTQ2LDIyOTI4LDIyOTI3LDIyOTUx'@; put 'LDIyOTQ1LDIzNDM4LDIzNDQyLDIzNTkyLDIzNTk0LDIzNjkzLDIzNjk1LDIzNjg4LDIzNjkxLDIzNjg5LDIzNjk4LDIzNjkwLDIzNjg2LDIzNjk5LDIzNzAxLDI0MDMyLDI0MDc0LDI0MDc4LDI0MjAzLDI0MjAxLDI0MjA0LDI0MjAwLDI0MjA1LDI0MzI1LDI0MzQ5LDI0NDQwLDI0NDM4LDI0'@; put 'NTMwLDI0NTI5LDI0NTI4LDI0NTU3LDI0NTUyLDI0NTU4LDI0NTYzLDI0NTQ1LDI0NTQ4LDI0NTQ3LDI0NTcwLDI0NTU5LDI0NTY3LDI0NTcxLDI0NTc2LDI0NTY0LDI1MTQ2LDI1MjE5LDI1MjI4LDI1MjMwLDI1MjMxLDI1MjM2LDI1MjIzLDI1MjAxLDI1MjExLDI1MjEwLDI1MjAwLDI1MjE3'@; put 'LDI1MjI0LDI1MjA3LDI1MjEzLDI1MjAyLDI1MjA0LDI1OTExLDI2MDk2LDI2MTAwLDI2MDk5LDI2MDk4LDI2MTAxLDI2NDM3LDI2NDM5LDI2NDU3LDI2NDUzLDI2NDQ0LDI2NDQwLDI2NDYxLDI2NDQ1LDI2NDU4LDI2NDQzLDI3NjAwLDI3NjczLDI3Njc0LDI3NzY4LDI3NzUxLDI3NzU1LDI3'@; put 'NzgwLDI3Nzg3LDI3NzkxLDI3NzYxLDI3NzU5LDI3NzUzLDI3ODAyLDI3NzU3LDI3NzgzLDI3Nzk3LDI3ODA0LDI3NzUwLDI3NzYzLDI3NzQ5LDI3NzcxLDI3NzkwLDI4Nzg4LDI4Nzk0LDI5MjgzLDI5Mzc1LDI5MzczLDI5Mzc5LDI5MzgyLDI5Mzc3LDI5MzcwLDI5MzgxLDI5NTg5LDI5NTkx'@; put 'LDI5NTg3LDI5NTg4LDI5NTg2LDMwMDEwLDMwMDA5LDMwMTAwLDMwMTAxLDMwMzM3LDMxMDM3LDMyODIwLDMyOTE3LDMyOTIxLDMyOTEyLDMyOTE0LDMyOTI0LDMzNDI0LDMzNDIzLDMzNDEzLDMzNDIyLDMzNDI1LDMzNDI3LDMzNDE4LDMzNDExLDMzNDEyLDM1OTYwLDM2ODA5LDM2Nzk5LDM3'@; put 'MDIzLDM3MDI1LDM3MDI5LDM3MDIyLDM3MDMxLDM3MDI0LDM4NDQ4LDM4NDQwLDM4NDQ3LDM4NDQ1LDIwMDE5LDIwMzc2LDIwMzQ4LDIwMzU3LDIwMzQ5LDIwMzUyLDIwMzU5LDIwMzQyLDIwMzQwLDIwMzYxLDIwMzU2LDIwMzQzLDIwMzAwLDIwMzc1LDIwMzMwLDIwMzc4LDIwMzQ1LDIwMzUz'@; put 'LDIwMzQ0LDIwMzY4LDIwMzgwLDIwMzcyLDIwMzgyLDIwMzcwLDIwMzU0LDIwMzczLDIwMzMxLDIwMzM0LDIwODk0LDIwOTI0LDIwOTI2LDIxMDQ1LDIxMDQyLDIxMDQzLDIxMDYyLDIxMDQxLDIxMTgwLDIxMjU4LDIxMjU5LDIxMzA4LDIxMzk0LDIxMzk2LDIxNjM5LDIxNjMxLDIxNjMzLDIx'@; put 'NjQ5LDIxNjM0LDIxNjQwLDIxNjExLDIxNjI2LDIxNjMwLDIxNjA1LDIxNjEyLDIxNjIwLDIxNjA2LDIxNjQ1LDIxNjE1LDIxNjAxLDIxNjAwLDIxNjU2LDIxNjAzLDIxNjA3LDIxNjA0LDIyMjYzLDIyMjY1LDIyMzgzLDIyMzg2LDIyMzgxLDIyMzc5LDIyMzg1LDIyMzg0LDIyMzkwLDIyNDAw'@; put 'LDIyMzg5LDIyMzk1LDIyMzg3LDIyMzg4LDIyMzcwLDIyMzc2LDIyMzk3LDIyNzk2LDIyODUzLDIyOTY1LDIyOTcwLDIyOTkxLDIyOTkwLDIyOTYyLDIyOTg4LDIyOTc3LDIyOTY2LDIyOTcyLDIyOTc5LDIyOTk4LDIyOTYxLDIyOTczLDIyOTc2LDIyOTg0LDIyOTY0LDIyOTgzLDIzMzk0LDIz'@; put 'Mzk3LDIzNDQzLDIzNDQ1LDIzNjIwLDIzNjIzLDIzNzI2LDIzNzE2LDIzNzEyLDIzNzMzLDIzNzI3LDIzNzIwLDIzNzI0LDIzNzExLDIzNzE1LDIzNzI1LDIzNzE0LDIzNzIyLDIzNzE5LDIzNzA5LDIzNzE3LDIzNzM0LDIzNzI4LDIzNzE4LDI0MDg3LDI0MDg0LDI0MDg5LDI0MzYwLDI0MzU0'@; put 'LDI0MzU1LDI0MzU2LDI0NDA0LDI0NDUwLDI0NDQ2LDI0NDQ1LDI0NTQyLDI0NTQ5LDI0NjIxLDI0NjE0LDI0NjAxLDI0NjI2LDI0NTg3LDI0NjI4LDI0NTg2LDI0NTk5LDI0NjI3LDI0NjAyLDI0NjA2LDI0NjIwLDI0NjEwLDI0NTg5LDI0NTkyLDI0NjIyLDI0NTk1LDI0NTkzLDI0NTg4LDI0'@; put 'NTg1LDI0NjA0LDI1MTA4LDI1MTQ5LDI1MjYxLDI1MjY4LDI1Mjk3LDI1Mjc4LDI1MjU4LDI1MjcwLDI1MjkwLDI1MjYyLDI1MjY3LDI1MjYzLDI1Mjc1LDI1MjU3LDI1MjY0LDI1MjcyLDI1OTE3LDI2MDI0LDI2MDQzLDI2MTIxLDI2MTA4LDI2MTE2LDI2MTMwLDI2MTIwLDI2MTA3LDI2MTE1'@; put 'LDI2MTIzLDI2MTI1LDI2MTE3LDI2MTA5LDI2MTI5LDI2MTI4LDI2MzU4LDI2Mzc4LDI2NTAxLDI2NDc2LDI2NTEwLDI2NTE0LDI2NDg2LDI2NDkxLDI2NTIwLDI2NTAyLDI2NTAwLDI2NDg0LDI2NTA5LDI2NTA4LDI2NDkwLDI2NTI3LDI2NTEzLDI2NTIxLDI2NDk5LDI2NDkzLDI2NDk3LDI2'@; put 'NDg4LDI2NDg5LDI2NTE2LDI3NDI5LDI3NTIwLDI3NTE4LDI3NjE0LDI3Njc3LDI3Nzk1LDI3ODg0LDI3ODgzLDI3ODg2LDI3ODY1LDI3ODMwLDI3ODYwLDI3ODIxLDI3ODc5LDI3ODMxLDI3ODU2LDI3ODQyLDI3ODM0LDI3ODQzLDI3ODQ2LDI3ODg1LDI3ODkwLDI3ODU4LDI3ODY5LDI3ODI4'@; put 'LDI3Nzg2LDI3ODA1LDI3Nzc2LDI3ODcwLDI3ODQwLDI3OTUyLDI3ODUzLDI3ODQ3LDI3ODI0LDI3ODk3LDI3ODU1LDI3ODgxLDI3ODU3LDI4ODIwLDI4ODI0LDI4ODA1LDI4ODE5LDI4ODA2LDI4ODA0LDI4ODE3LDI4ODIyLDI4ODAyLDI4ODI2LDI4ODAzLDI5MjkwLDI5Mzk4LDI5Mzg3LDI5'@; put 'NDAwLDI5Mzg1LDI5NDA0LDI5Mzk0LDI5Mzk2LDI5NDAyLDI5Mzg4LDI5MzkzLDI5NjA0LDI5NjAxLDI5NjEzLDI5NjA2LDI5NjAyLDI5NjAwLDI5NjEyLDI5NTk3LDI5OTE3LDI5OTI4LDMwMDE1LDMwMDE2LDMwMDE0LDMwMDkyLDMwMTA0LDMwMzgzLDMwNDUxLDMwNDQ5LDMwNDQ4LDMwNDUz'@; put 'LDMwNzEyLDMwNzE2LDMwNzEzLDMwNzE1LDMwNzE0LDMwNzExLDMxMDQyLDMxMDM5LDMxMTczLDMxMzUyLDMxMzU1LDMxNDgzLDMxODYxLDMxOTk3LDMyODIxLDMyOTExLDMyOTQyLDMyOTMxLDMyOTUyLDMyOTQ5LDMyOTQxLDMzMzEyLDMzNDQwLDMzNDcyLDMzNDUxLDMzNDM0LDMzNDMyLDMz'@; put 'NDM1LDMzNDYxLDMzNDQ3LDMzNDU0LDMzNDY4LDMzNDM4LDMzNDY2LDMzNDYwLDMzNDQ4LDMzNDQxLDMzNDQ5LDMzNDc0LDMzNDQ0LDMzNDc1LDMzNDYyLDMzNDQyLDM0NDE2LDM0NDE1LDM0NDEzLDM0NDE0LDM1OTI2LDM2ODE4LDM2ODExLDM2ODE5LDM2ODEzLDM2ODIyLDM2ODIxLDM2ODIz'@; put 'LDM3MDQyLDM3MDQ0LDM3MDM5LDM3MDQzLDM3MDQwLDM4NDU3LDM4NDYxLDM4NDYwLDM4NDU4LDM4NDY3LDIwNDI5LDIwNDIxLDIwNDM1LDIwNDAyLDIwNDI1LDIwNDI3LDIwNDE3LDIwNDM2LDIwNDQ0LDIwNDQxLDIwNDExLDIwNDAzLDIwNDQzLDIwNDIzLDIwNDM4LDIwNDEwLDIwNDE2LDIw'@; put 'NDA5LDIwNDYwLDIxMDYwLDIxMDY1LDIxMTg0LDIxMTg2LDIxMzA5LDIxMzcyLDIxMzk5LDIxMzk4LDIxNDAxLDIxNDAwLDIxNjkwLDIxNjY1LDIxNjc3LDIxNjY5LDIxNzExLDIxNjk5LDMzNTQ5LDIxNjg3LDIxNjc4LDIxNzE4LDIxNjg2LDIxNzAxLDIxNzAyLDIxNjY0LDIxNjE2LDIxNjky'@; put 'LDIxNjY2LDIxNjk0LDIxNjE4LDIxNzI2LDIxNjgwLDIyNDUzLDIyNDMwLDIyNDMxLDIyNDM2LDIyNDEyLDIyNDIzLDIyNDI5LDIyNDI3LDIyNDIwLDIyNDI0LDIyNDE1LDIyNDI1LDIyNDM3LDIyNDI2LDIyNDIxLDIyNzcyLDIyNzk3LDIyODY3LDIzMDA5LDIzMDA2LDIzMDIyLDIzMDQwLDIz'@; put 'MDI1LDIzMDA1LDIzMDM0LDIzMDM3LDIzMDM2LDIzMDMwLDIzMDEyLDIzMDI2LDIzMDMxLDIzMDAzLDIzMDE3LDIzMDI3LDIzMDI5LDIzMDA4LDIzMDM4LDIzMDI4LDIzMDIxLDIzNDY0LDIzNjI4LDIzNzYwLDIzNzY4LDIzNzU2LDIzNzY3LDIzNzU1LDIzNzcxLDIzNzc0LDIzNzcwLDIzNzUz'@; put 'LDIzNzUxLDIzNzU0LDIzNzY2LDIzNzYzLDIzNzY0LDIzNzU5LDIzNzUyLDIzNzUwLDIzNzU4LDIzNzc1LDIzODAwLDI0MDU3LDI0MDk3LDI0MDk4LDI0MDk5LDI0MDk2LDI0MTAwLDI0MjQwLDI0MjI4LDI0MjI2LDI0MjE5LDI0MjI3LDI0MjI5LDI0MzI3LDI0MzY2LDI0NDA2LDI0NDU0LDI0'@; put 'NjMxLDI0NjMzLDI0NjYwLDI0NjkwLDI0NjcwLDI0NjQ1LDI0NjU5LDI0NjQ3LDI0NjQ5LDI0NjY3LDI0NjUyLDI0NjQwLDI0NjQyLDI0NjcxLDI0NjEyLDI0NjQ0LDI0NjY0LDI0Njc4LDI0Njg2LDI1MTU0LDI1MTU1LDI1Mjk1LDI1MzU3LDI1MzU1LDI1MzMzLDI1MzU4LDI1MzQ3LDI1MzIz'@; put 'LDI1MzM3LDI1MzU5LDI1MzU2LDI1MzM2LDI1MzM0LDI1MzQ0LDI1MzYzLDI1MzY0LDI1MzM4LDI1MzY1LDI1MzM5LDI1MzI4LDI1OTIxLDI1OTIzLDI2MDI2LDI2MDQ3LDI2MTY2LDI2MTQ1LDI2MTYyLDI2MTY1LDI2MTQwLDI2MTUwLDI2MTQ2LDI2MTYzLDI2MTU1LDI2MTcwLDI2MTQxLDI2'@; put 'MTY0LDI2MTY5LDI2MTU4LDI2MzgzLDI2Mzg0LDI2NTYxLDI2NjEwLDI2NTY4LDI2NTU0LDI2NTg4LDI2NTU1LDI2NjE2LDI2NTg0LDI2NTYwLDI2NTUxLDI2NTY1LDI2NjAzLDI2NTk2LDI2NTkxLDI2NTQ5LDI2NTczLDI2NTQ3LDI2NjE1LDI2NjE0LDI2NjA2LDI2NTk1LDI2NTYyLDI2NTUz'@; put 'LDI2NTc0LDI2NTk5LDI2NjA4LDI2NTQ2LDI2NjIwLDI2NTY2LDI2NjA1LDI2NTcyLDI2NTQyLDI2NTk4LDI2NTg3LDI2NjE4LDI2NTY5LDI2NTcwLDI2NTYzLDI2NjAyLDI2NTcxLDI3NDMyLDI3NTIyLDI3NTI0LDI3NTc0LDI3NjA2LDI3NjA4LDI3NjE2LDI3NjgwLDI3NjgxLDI3OTQ0LDI3'@; put 'OTU2LDI3OTQ5LDI3OTM1LDI3OTY0LDI3OTY3LDI3OTIyLDI3OTE0LDI3ODY2LDI3OTU1LDI3OTA4LDI3OTI5LDI3OTYyLDI3OTMwLDI3OTIxLDI3OTA0LDI3OTMzLDI3OTcwLDI3OTA1LDI3OTI4LDI3OTU5LDI3OTA3LDI3OTE5LDI3OTY4LDI3OTExLDI3OTM2LDI3OTQ4LDI3OTEyLDI3OTM4'@; put 'LDI3OTEzLDI3OTIwLDI4ODU1LDI4ODMxLDI4ODYyLDI4ODQ5LDI4ODQ4LDI4ODMzLDI4ODUyLDI4ODUzLDI4ODQxLDI5MjQ5LDI5MjU3LDI5MjU4LDI5MjkyLDI5Mjk2LDI5Mjk5LDI5Mjk0LDI5Mzg2LDI5NDEyLDI5NDE2LDI5NDE5LDI5NDA3LDI5NDE4LDI5NDE0LDI5NDExLDI5NTczLDI5'@; put 'NjQ0LDI5NjM0LDI5NjQwLDI5NjM3LDI5NjI1LDI5NjIyLDI5NjIxLDI5NjIwLDI5Njc1LDI5NjMxLDI5NjM5LDI5NjMwLDI5NjM1LDI5NjM4LDI5NjI0LDI5NjQzLDI5OTMyLDI5OTM0LDI5OTk4LDMwMDIzLDMwMDI0LDMwMTE5LDMwMTIyLDMwMzI5LDMwNDA0LDMwNDcyLDMwNDY3LDMwNDY4'@; put 'LDMwNDY5LDMwNDc0LDMwNDU1LDMwNDU5LDMwNDU4LDMwNjk1LDMwNjk2LDMwNzI2LDMwNzM3LDMwNzM4LDMwNzI1LDMwNzM2LDMwNzM1LDMwNzM0LDMwNzI5LDMwNzIzLDMwNzM5LDMxMDUwLDMxMDUyLDMxMDUxLDMxMDQ1LDMxMDQ0LDMxMTg5LDMxMTgxLDMxMTgzLDMxMTkwLDMxMTgyLDMx'@; put 'MzYwLDMxMzU4LDMxNDQxLDMxNDg4LDMxNDg5LDMxODY2LDMxODY0LDMxODY1LDMxODcxLDMxODcyLDMxODczLDMyMDAzLDMyMDA4LDMyMDAxLDMyNjAwLDMyNjU3LDMyNjUzLDMyNzAyLDMyNzc1LDMyNzgyLDMyNzgzLDMyNzg4LDMyODIzLDMyOTg0LDMyOTY3LDMyOTkyLDMyOTc3LDMyOTY4'@; put 'LDMyOTYyLDMyOTc2LDMyOTY1LDMyOTk1LDMyOTg1LDMyOTg4LDMyOTcwLDMyOTgxLDMyOTY5LDMyOTc1LDMyOTgzLDMyOTk4LDMyOTczLDMzMjc5LDMzMzEzLDMzNDI4LDMzNDk3LDMzNTM0LDMzNTI5LDMzNTQzLDMzNTEyLDMzNTM2LDMzNDkzLDMzNTk0LDMzNTE1LDMzNDk0LDMzNTI0LDMz'@; put 'NTE2LDMzNTA1LDMzNTIyLDMzNTI1LDMzNTQ4LDMzNTMxLDMzNTI2LDMzNTIwLDMzNTE0LDMzNTA4LDMzNTA0LDMzNTMwLDMzNTIzLDMzNTE3LDM0NDIzLDM0NDIwLDM0NDI4LDM0NDE5LDM0ODgxLDM0ODk0LDM0OTE5LDM0OTIyLDM0OTIxLDM1MjgzLDM1MzMyLDM1MzM1LDM2MjEwLDM2ODM1'@; put 'LDM2ODMzLDM2ODQ2LDM2ODMyLDM3MTA1LDM3MDUzLDM3MDU1LDM3MDc3LDM3MDYxLDM3MDU0LDM3MDYzLDM3MDY3LDM3MDY0LDM3MzMyLDM3MzMxLDM4NDg0LDM4NDc5LDM4NDgxLDM4NDgzLDM4NDc0LDM4NDc4LDIwNTEwLDIwNDg1LDIwNDg3LDIwNDk5LDIwNTE0LDIwNTI4LDIwNTA3LDIw'@; put 'NDY5LDIwNDY4LDIwNTMxLDIwNTM1LDIwNTI0LDIwNDcwLDIwNDcxLDIwNTAzLDIwNTA4LDIwNTEyLDIwNTE5LDIwNTMzLDIwNTI3LDIwNTI5LDIwNDk0LDIwODI2LDIwODg0LDIwODgzLDIwOTM4LDIwOTMyLDIwOTMzLDIwOTM2LDIwOTQyLDIxMDg5LDIxMDgyLDIxMDc0LDIxMDg2LDIxMDg3'@; put 'LDIxMDc3LDIxMDkwLDIxMTk3LDIxMjYyLDIxNDA2LDIxNzk4LDIxNzMwLDIxNzgzLDIxNzc4LDIxNzM1LDIxNzQ3LDIxNzMyLDIxNzg2LDIxNzU5LDIxNzY0LDIxNzY4LDIxNzM5LDIxNzc3LDIxNzY1LDIxNzQ1LDIxNzcwLDIxNzU1LDIxNzUxLDIxNzUyLDIxNzI4LDIxNzc0LDIxNzYzLDIx'@; put 'NzcxLDIyMjczLDIyMjc0LDIyNDc2LDIyNTc4LDIyNDg1LDIyNDgyLDIyNDU4LDIyNDcwLDIyNDYxLDIyNDYwLDIyNDU2LDIyNDU0LDIyNDYzLDIyNDcxLDIyNDgwLDIyNDU3LDIyNDY1LDIyNzk4LDIyODU4LDIzMDY1LDIzMDYyLDIzMDg1LDIzMDg2LDIzMDYxLDIzMDU1LDIzMDYzLDIzMDUw'@; put 'LDIzMDcwLDIzMDkxLDIzNDA0LDIzNDYzLDIzNDY5LDIzNDY4LDIzNTU1LDIzNjM4LDIzNjM2LDIzNzg4LDIzODA3LDIzNzkwLDIzNzkzLDIzNzk5LDIzODA4LDIzODAxLDI0MTA1LDI0MTA0LDI0MjMyLDI0MjM4LDI0MjM0LDI0MjM2LDI0MzcxLDI0MzY4LDI0NDIzLDI0NjY5LDI0NjY2LDI0'@; put 'Njc5LDI0NjQxLDI0NzM4LDI0NzEyLDI0NzA0LDI0NzIyLDI0NzA1LDI0NzMzLDI0NzA3LDI0NzI1LDI0NzMxLDI0NzI3LDI0NzExLDI0NzMyLDI0NzE4LDI1MTEzLDI1MTU4LDI1MzMwLDI1MzYwLDI1NDMwLDI1Mzg4LDI1NDEyLDI1NDEzLDI1Mzk4LDI1NDExLDI1NTcyLDI1NDAxLDI1NDE5'@; put 'LDI1NDE4LDI1NDA0LDI1Mzg1LDI1NDA5LDI1Mzk2LDI1NDMyLDI1NDI4LDI1NDMzLDI1Mzg5LDI1NDE1LDI1Mzk1LDI1NDM0LDI1NDI1LDI1NDAwLDI1NDMxLDI1NDA4LDI1NDE2LDI1OTMwLDI1OTI2LDI2MDU0LDI2MDUxLDI2MDUyLDI2MDUwLDI2MTg2LDI2MjA3LDI2MTgzLDI2MTkzLDI2'@; put 'Mzg2LDI2Mzg3LDI2NjU1LDI2NjUwLDI2Njk3LDI2Njc0LDI2Njc1LDI2NjgzLDI2Njk5LDI2NzAzLDI2NjQ2LDI2NjczLDI2NjUyLDI2Njc3LDI2NjY3LDI2NjY5LDI2NjcxLDI2NzAyLDI2NjkyLDI2Njc2LDI2NjUzLDI2NjQyLDI2NjQ0LDI2NjYyLDI2NjY0LDI2NjcwLDI2NzAxLDI2Njgy'@; put 'LDI2NjYxLDI2NjU2LDI3NDM2LDI3NDM5LDI3NDM3LDI3NDQxLDI3NDQ0LDI3NTAxLDMyODk4LDI3NTI4LDI3NjIyLDI3NjIwLDI3NjI0LDI3NjE5LDI3NjE4LDI3NjIzLDI3Njg1LDI4MDI2LDI4MDAzLDI4MDA0LDI4MDIyLDI3OTE3LDI4MDAxLDI4MDUwLDI3OTkyLDI4MDAyLDI4MDEzLDI4'@; put 'MDE1LDI4MDQ5LDI4MDQ1LDI4MTQzLDI4MDMxLDI4MDM4LDI3OTk4LDI4MDA3LDI4ZTMsMjgwNTUsMjgwMTYsMjgwMjgsMjc5OTksMjgwMzQsMjgwNTYsMjc5NTEsMjgwMDgsMjgwNDMsMjgwMzAsMjgwMzIsMjgwMzYsMjc5MjYsMjgwMzUsMjgwMjcsMjgwMjksMjgwMjEsMjgwNDgsMjg4OTIs'@; put 'Mjg4ODMsMjg4ODEsMjg4OTMsMjg4NzUsMzI1NjksMjg4OTgsMjg4ODcsMjg4ODIsMjg4OTQsMjg4OTYsMjg4ODQsMjg4NzcsMjg4NjksMjg4NzAsMjg4NzEsMjg4OTAsMjg4NzgsMjg4OTcsMjkyNTAsMjkzMDQsMjkzMDMsMjkzMDIsMjk0NDAsMjk0MzQsMjk0MjgsMjk0MzgsMjk0MzAsMjk0'@; put 'MjcsMjk0MzUsMjk0NDEsMjk2NTEsMjk2NTcsMjk2NjksMjk2NTQsMjk2MjgsMjk2NzEsMjk2NjcsMjk2NzMsMjk2NjAsMjk2NTAsMjk2NTksMjk2NTIsMjk2NjEsMjk2NTgsMjk2NTUsMjk2NTYsMjk2NzIsMjk5MTgsMjk5MTksMjk5NDAsMjk5NDEsMjk5ODUsMzAwNDMsMzAwNDcsMzAxMjgs'@; put 'MzAxNDUsMzAxMzksMzAxNDgsMzAxNDQsMzAxNDMsMzAxMzQsMzAxMzgsMzAzNDYsMzA0MDksMzA0OTMsMzA0OTEsMzA0ODAsMzA0ODMsMzA0ODIsMzA0OTksMzA0ODEsMzA0ODUsMzA0ODksMzA0OTAsMzA0OTgsMzA1MDMsMzA3NTUsMzA3NjQsMzA3NTQsMzA3NzMsMzA3NjcsMzA3NjAsMzA3'@; put 'NjYsMzA3NjMsMzA3NTMsMzA3NjEsMzA3NzEsMzA3NjIsMzA3NjksMzEwNjAsMzEwNjcsMzEwNTUsMzEwNjgsMzEwNTksMzEwNTgsMzEwNTcsMzEyMTEsMzEyMTIsMzEyMDAsMzEyMTQsMzEyMTMsMzEyMTAsMzExOTYsMzExOTgsMzExOTcsMzEzNjYsMzEzNjksMzEzNjUsMzEzNzEsMzEzNzIs'@; put 'MzEzNzAsMzEzNjcsMzE0NDgsMzE1MDQsMzE0OTIsMzE1MDcsMzE0OTMsMzE1MDMsMzE0OTYsMzE0OTgsMzE1MDIsMzE0OTcsMzE1MDYsMzE4NzYsMzE4ODksMzE4ODIsMzE4ODQsMzE4ODAsMzE4ODUsMzE4NzcsMzIwMzAsMzIwMjksMzIwMTcsMzIwMTQsMzIwMjQsMzIwMjIsMzIwMTksMzIw'@; put 'MzEsMzIwMTgsMzIwMTUsMzIwMTIsMzI2MDQsMzI2MDksMzI2MDYsMzI2MDgsMzI2MDUsMzI2MDMsMzI2NjIsMzI2NTgsMzI3MDcsMzI3MDYsMzI3MDQsMzI3OTAsMzI4MzAsMzI4MjUsMzMwMTgsMzMwMTAsMzMwMTcsMzMwMTMsMzMwMjUsMzMwMTksMzMwMjQsMzMyODEsMzMzMjcsMzMzMTcs'@; put 'MzM1ODcsMzM1ODEsMzM2MDQsMzM1NjEsMzM2MTcsMzM1NzMsMzM2MjIsMzM1OTksMzM2MDEsMzM1NzQsMzM1NjQsMzM1NzAsMzM2MDIsMzM2MTQsMzM1NjMsMzM1NzgsMzM1NDQsMzM1OTYsMzM2MTMsMzM1NTgsMzM1NzIsMzM1NjgsMzM1OTEsMzM1ODMsMzM1NzcsMzM2MDcsMzM2MDUsMzM2'@; put 'MTIsMzM2MTksMzM1NjYsMzM1ODAsMzM2MTEsMzM1NzUsMzM2MDgsMzQzODcsMzQzODYsMzQ0NjYsMzQ0NzIsMzQ0NTQsMzQ0NDUsMzQ0NDksMzQ0NjIsMzQ0MzksMzQ0NTUsMzQ0MzgsMzQ0NDMsMzQ0NTgsMzQ0MzcsMzQ0NjksMzQ0NTcsMzQ0NjUsMzQ0NzEsMzQ0NTMsMzQ0NTYsMzQ0NDYs'@; put 'MzQ0NjEsMzQ0NDgsMzQ0NTIsMzQ4ODMsMzQ4ODQsMzQ5MjUsMzQ5MzMsMzQ5MzQsMzQ5MzAsMzQ5NDQsMzQ5MjksMzQ5NDMsMzQ5MjcsMzQ5NDcsMzQ5NDIsMzQ5MzIsMzQ5NDAsMzUzNDYsMzU5MTEsMzU5MjcsMzU5NjMsMzYwMDQsMzYwMDMsMzYyMTQsMzYyMTYsMzYyNzcsMzYyNzksMzYy'@; put 'NzgsMzY1NjEsMzY1NjMsMzY4NjIsMzY4NTMsMzY4NjYsMzY4NjMsMzY4NTksMzY4NjgsMzY4NjAsMzY4NTQsMzcwNzgsMzcwODgsMzcwODEsMzcwODIsMzcwOTEsMzcwODcsMzcwOTMsMzcwODAsMzcwODMsMzcwNzksMzcwODQsMzcwOTIsMzcyMDAsMzcxOTgsMzcxOTksMzczMzMsMzczNDYs'@; put 'MzczMzgsMzg0OTIsMzg0OTUsMzg1ODgsMzkxMzksMzk2NDcsMzk3MjcsMjAwOTUsMjA1OTIsMjA1ODYsMjA1NzcsMjA1NzQsMjA1NzYsMjA1NjMsMjA1NTUsMjA1NzMsMjA1OTQsMjA1NTIsMjA1NTcsMjA1NDUsMjA1NzEsMjA1NTQsMjA1NzgsMjA1MDEsMjA1NDksMjA1NzUsMjA1ODUsMjA1'@; put 'ODcsMjA1NzksMjA1ODAsMjA1NTAsMjA1NDQsMjA1OTAsMjA1OTUsMjA1NjcsMjA1NjEsMjA5NDQsMjEwOTksMjExMDEsMjExMDAsMjExMDIsMjEyMDYsMjEyMDMsMjEyOTMsMjE0MDQsMjE4NzcsMjE4NzgsMjE4MjAsMjE4MzcsMjE4NDAsMjE4MTIsMjE4MDIsMjE4NDEsMjE4NTgsMjE4MTQs'@; put 'MjE4MTMsMjE4MDgsMjE4NDIsMjE4MjksMjE3NzIsMjE4MTAsMjE4NjEsMjE4MzgsMjE4MTcsMjE4MzIsMjE4MDUsMjE4MTksMjE4MjQsMjE4MzUsMjIyODIsMjIyNzksMjI1MjMsMjI1NDgsMjI0OTgsMjI1MTgsMjI0OTIsMjI1MTYsMjI1MjgsMjI1MDksMjI1MjUsMjI1MzYsMjI1MjAsMjI1'@; put 'MzksMjI1MTUsMjI0NzksMjI1MzUsMjI1MTAsMjI0OTksMjI1MTQsMjI1MDEsMjI1MDgsMjI0OTcsMjI1NDIsMjI1MjQsMjI1NDQsMjI1MDMsMjI1MjksMjI1NDAsMjI1MTMsMjI1MDUsMjI1MTIsMjI1NDEsMjI1MzIsMjI4NzYsMjMxMzYsMjMxMjgsMjMxMjUsMjMxNDMsMjMxMzQsMjMwOTYs'@; put 'MjMwOTMsMjMxNDksMjMxMjAsMjMxMzUsMjMxNDEsMjMxNDgsMjMxMjMsMjMxNDAsMjMxMjcsMjMxMDcsMjMxMzMsMjMxMjIsMjMxMDgsMjMxMzEsMjMxMTIsMjMxODIsMjMxMDIsMjMxMTcsMjMwOTcsMjMxMTYsMjMxNTIsMjMxNDUsMjMxMTEsMjMxMjEsMjMxMjYsMjMxMDYsMjMxMzIsMjM0'@; put 'MTAsMjM0MDYsMjM0ODksMjM0ODgsMjM2NDEsMjM4MzgsMjM4MTksMjM4MzcsMjM4MzQsMjM4NDAsMjM4MjAsMjM4NDgsMjM4MjEsMjM4NDYsMjM4NDUsMjM4MjMsMjM4NTYsMjM4MjYsMjM4NDMsMjM4MzksMjM4NTQsMjQxMjYsMjQxMTYsMjQyNDEsMjQyNDQsMjQyNDksMjQyNDIsMjQyNDMs'@; put 'MjQzNzQsMjQzNzYsMjQ0NzUsMjQ0NzAsMjQ0NzksMjQ3MTQsMjQ3MjAsMjQ3MTAsMjQ3NjYsMjQ3NTIsMjQ3NjIsMjQ3ODcsMjQ3ODgsMjQ3ODMsMjQ4MDQsMjQ3OTMsMjQ3OTcsMjQ3NzYsMjQ3NTMsMjQ3OTUsMjQ3NTksMjQ3NzgsMjQ3NjcsMjQ3NzEsMjQ3ODEsMjQ3NjgsMjUzOTQsMjU0'@; put 'NDUsMjU0ODIsMjU0NzQsMjU0NjksMjU1MzMsMjU1MDIsMjU1MTcsMjU1MDEsMjU0OTUsMjU1MTUsMjU0ODYsMjU0NTUsMjU0NzksMjU0ODgsMjU0NTQsMjU1MTksMjU0NjEsMjU1MDAsMjU0NTMsMjU1MTgsMjU0NjgsMjU1MDgsMjU0MDMsMjU1MDMsMjU0NjQsMjU0NzcsMjU0NzMsMjU0ODks'@; put 'MjU0ODUsMjU0NTYsMjU5MzksMjYwNjEsMjYyMTMsMjYyMDksMjYyMDMsMjYyMDEsMjYyMDQsMjYyMTAsMjYzOTIsMjY3NDUsMjY3NTksMjY3NjgsMjY3ODAsMjY3MzMsMjY3MzQsMjY3OTgsMjY3OTUsMjY5NjYsMjY3MzUsMjY3ODcsMjY3OTYsMjY3OTMsMjY3NDEsMjY3NDAsMjY4MDIsMjY3'@; put 'NjcsMjY3NDMsMjY3NzAsMjY3NDgsMjY3MzEsMjY3MzgsMjY3OTQsMjY3NTIsMjY3MzcsMjY3NTAsMjY3NzksMjY3NzQsMjY3NjMsMjY3ODQsMjY3NjEsMjY3ODgsMjY3NDQsMjY3NDcsMjY3NjksMjY3NjQsMjY3NjIsMjY3NDksMjc0NDYsMjc0NDMsMjc0NDcsMjc0NDgsMjc1MzcsMjc1MzUs'@; put 'Mjc1MzMsMjc1MzQsMjc1MzIsMjc2OTAsMjgwOTYsMjgwNzUsMjgwODQsMjgwODMsMjgyNzYsMjgwNzYsMjgxMzcsMjgxMzAsMjgwODcsMjgxNTAsMjgxMTYsMjgxNjAsMjgxMDQsMjgxMjgsMjgxMjcsMjgxMTgsMjgwOTQsMjgxMzMsMjgxMjQsMjgxMjUsMjgxMjMsMjgxNDgsMjgxMDYsMjgw'@; put 'OTMsMjgxNDEsMjgxNDQsMjgwOTAsMjgxMTcsMjgwOTgsMjgxMTEsMjgxMDUsMjgxMTIsMjgxNDYsMjgxMTUsMjgxNTcsMjgxMTksMjgxMDksMjgxMzEsMjgwOTEsMjg5MjIsMjg5NDEsMjg5MTksMjg5NTEsMjg5MTYsMjg5NDAsMjg5MTIsMjg5MzIsMjg5MTUsMjg5NDQsMjg5MjQsMjg5Mjcs'@; put 'Mjg5MzQsMjg5NDcsMjg5MjgsMjg5MjAsMjg5MTgsMjg5MzksMjg5MzAsMjg5NDIsMjkzMTAsMjkzMDcsMjkzMDgsMjkzMTEsMjk0NjksMjk0NjMsMjk0NDcsMjk0NTcsMjk0NjQsMjk0NTAsMjk0NDgsMjk0MzksMjk0NTUsMjk0NzAsMjk1NzYsMjk2ODYsMjk2ODgsMjk2ODUsMjk3MDAsMjk2'@; put 'OTcsMjk2OTMsMjk3MDMsMjk2OTYsMjk2OTAsMjk2OTIsMjk2OTUsMjk3MDgsMjk3MDcsMjk2ODQsMjk3MDQsMzAwNTIsMzAwNTEsMzAxNTgsMzAxNjIsMzAxNTksMzAxNTUsMzAxNTYsMzAxNjEsMzAxNjAsMzAzNTEsMzAzNDUsMzA0MTksMzA1MjEsMzA1MTEsMzA1MDksMzA1MTMsMzA1MTQs'@; put 'MzA1MTYsMzA1MTUsMzA1MjUsMzA1MDEsMzA1MjMsMzA1MTcsMzA3OTIsMzA4MDIsMzA3OTMsMzA3OTcsMzA3OTQsMzA3OTYsMzA3NTgsMzA3ODksMzA4MDAsMzEwNzYsMzEwNzksMzEwODEsMzEwODIsMzEwNzUsMzEwODMsMzEwNzMsMzExNjMsMzEyMjYsMzEyMjQsMzEyMjIsMzEyMjMsMzEz'@; put 'NzUsMzEzODAsMzEzNzYsMzE1NDEsMzE1NTksMzE1NDAsMzE1MjUsMzE1MzYsMzE1MjIsMzE1MjQsMzE1MzksMzE1MTIsMzE1MzAsMzE1MTcsMzE1MzcsMzE1MzEsMzE1MzMsMzE1MzUsMzE1MzgsMzE1NDQsMzE1MTQsMzE1MjMsMzE4OTIsMzE4OTYsMzE4OTQsMzE5MDcsMzIwNTMsMzIwNjEs'@; put 'MzIwNTYsMzIwNTQsMzIwNTgsMzIwNjksMzIwNDQsMzIwNDEsMzIwNjUsMzIwNzEsMzIwNjIsMzIwNjMsMzIwNzQsMzIwNTksMzIwNDAsMzI2MTEsMzI2NjEsMzI2NjgsMzI2NjksMzI2NjcsMzI3MTQsMzI3MTUsMzI3MTcsMzI3MjAsMzI3MjEsMzI3MTEsMzI3MTksMzI3MTMsMzI3OTksMzI3'@; put 'OTgsMzI3OTUsMzI4MzksMzI4MzUsMzI4NDAsMzMwNDgsMzMwNjEsMzMwNDksMzMwNTEsMzMwNjksMzMwNTUsMzMwNjgsMzMwNTQsMzMwNTcsMzMwNDUsMzMwNjMsMzMwNTMsMzMwNTgsMzMyOTcsMzMzMzYsMzMzMzEsMzMzMzgsMzMzMzIsMzMzMzAsMzMzOTYsMzM2ODAsMzM2OTksMzM3MDQs'@; put 'MzM2NzcsMzM2NTgsMzM2NTEsMzM3MDAsMzM2NTIsMzM2NzksMzM2NjUsMzM2ODUsMzM2ODksMzM2NTMsMzM2ODQsMzM3MDUsMzM2NjEsMzM2NjcsMzM2NzYsMzM2OTMsMzM2OTEsMzM3MDYsMzM2NzUsMzM2NjIsMzM3MDEsMzM3MTEsMzM2NzIsMzM2ODcsMzM3MTIsMzM2NjMsMzM3MDIsMzM2'@; put 'NzEsMzM3MTAsMzM2NTQsMzM2OTAsMzQzOTMsMzQzOTAsMzQ0OTUsMzQ0ODcsMzQ0OTgsMzQ0OTcsMzQ1MDEsMzQ0OTAsMzQ0ODAsMzQ1MDQsMzQ0ODksMzQ0ODMsMzQ0ODgsMzQ1MDgsMzQ0ODQsMzQ0OTEsMzQ0OTIsMzQ0OTksMzQ0OTMsMzQ0OTQsMzQ4OTgsMzQ5NTMsMzQ5NjUsMzQ5ODQs'@; put 'MzQ5NzgsMzQ5ODYsMzQ5NzAsMzQ5NjEsMzQ5NzcsMzQ5NzUsMzQ5NjgsMzQ5ODMsMzQ5NjksMzQ5NzEsMzQ5NjcsMzQ5ODAsMzQ5ODgsMzQ5NTYsMzQ5NjMsMzQ5NTgsMzUyMDIsMzUyODYsMzUyODksMzUyODUsMzUzNzYsMzUzNjcsMzUzNzIsMzUzNTgsMzU4OTcsMzU4OTksMzU5MzIsMzU5'@; put 'MzMsMzU5NjUsMzYwMDUsMzYyMjEsMzYyMTksMzYyMTcsMzYyODQsMzYyOTAsMzYyODEsMzYyODcsMzYyODksMzY1NjgsMzY1NzQsMzY1NzMsMzY1NzIsMzY1NjcsMzY1NzYsMzY1NzcsMzY5MDAsMzY4NzUsMzY4ODEsMzY4OTIsMzY4NzYsMzY4OTcsMzcxMDMsMzcwOTgsMzcxMDQsMzcxMDgs'@; put 'MzcxMDYsMzcxMDcsMzcwNzYsMzcwOTksMzcxMDAsMzcwOTcsMzcyMDYsMzcyMDgsMzcyMTAsMzcyMDMsMzcyMDUsMzczNTYsMzczNjQsMzczNjEsMzczNjMsMzczNjgsMzczNDgsMzczNjksMzczNTQsMzczNTUsMzczNjcsMzczNTIsMzczNTgsMzgyNjYsMzgyNzgsMzgyODAsMzg1MjQsMzg1'@; put 'MDksMzg1MDcsMzg1MTMsMzg1MTEsMzg1OTEsMzg3NjIsMzg5MTYsMzkxNDEsMzkzMTksMjA2MzUsMjA2MjksMjA2MjgsMjA2MzgsMjA2MTksMjA2NDMsMjA2MTEsMjA2MjAsMjA2MjIsMjA2MzcsMjA1ODQsMjA2MzYsMjA2MjYsMjA2MTAsMjA2MTUsMjA4MzEsMjA5NDgsMjEyNjYsMjEyNjUs'@; put 'MjE0MTIsMjE0MTUsMjE5MDUsMjE5MjgsMjE5MjUsMjE5MzMsMjE4NzksMjIwODUsMjE5MjIsMjE5MDcsMjE4OTYsMjE5MDMsMjE5NDEsMjE4ODksMjE5MjMsMjE5MDYsMjE5MjQsMjE4ODUsMjE5MDAsMjE5MjYsMjE4ODcsMjE5MDksMjE5MjEsMjE5MDIsMjIyODQsMjI1NjksMjI1ODMsMjI1'@; put 'NTMsMjI1NTgsMjI1NjcsMjI1NjMsMjI1NjgsMjI1MTcsMjI2MDAsMjI1NjUsMjI1NTYsMjI1NTUsMjI1NzksMjI1OTEsMjI1ODIsMjI1NzQsMjI1ODUsMjI1ODQsMjI1NzMsMjI1NzIsMjI1ODcsMjI4ODEsMjMyMTUsMjMxODgsMjMxOTksMjMxNjIsMjMyMDIsMjMxOTgsMjMxNjAsMjMyMDYs'@; put 'MjMxNjQsMjMyMDUsMjMyMTIsMjMxODksMjMyMTQsMjMwOTUsMjMxNzIsMjMxNzgsMjMxOTEsMjMxNzEsMjMxNzksMjMyMDksMjMxNjMsMjMxNjUsMjMxODAsMjMxOTYsMjMxODMsMjMxODcsMjMxOTcsMjM1MzAsMjM1MDEsMjM0OTksMjM1MDgsMjM1MDUsMjM0OTgsMjM1MDIsMjM1NjQsMjM2'@; put 'MDAsMjM4NjMsMjM4NzUsMjM5MTUsMjM4NzMsMjM4ODMsMjM4NzEsMjM4NjEsMjM4ODksMjM4ODYsMjM4OTMsMjM4NTksMjM4NjYsMjM4OTAsMjM4NjksMjM4NTcsMjM4OTcsMjM4NzQsMjM4NjUsMjM4ODEsMjM4NjQsMjM4NjgsMjM4NTgsMjM4NjIsMjM4NzIsMjM4NzcsMjQxMzIsMjQxMjks'@; put 'MjQ0MDgsMjQ0ODYsMjQ0ODUsMjQ0OTEsMjQ3NzcsMjQ3NjEsMjQ3ODAsMjQ4MDIsMjQ3ODIsMjQ3NzIsMjQ4NTIsMjQ4MTgsMjQ4NDIsMjQ4NTQsMjQ4MzcsMjQ4MjEsMjQ4NTEsMjQ4MjQsMjQ4MjgsMjQ4MzAsMjQ3NjksMjQ4MzUsMjQ4NTYsMjQ4NjEsMjQ4NDgsMjQ4MzEsMjQ4MzYsMjQ4'@; put 'NDMsMjUxNjIsMjU0OTIsMjU1MjEsMjU1MjAsMjU1NTAsMjU1NzMsMjU1NzYsMjU1ODMsMjU1MzksMjU3NTcsMjU1ODcsMjU1NDYsMjU1NjgsMjU1OTAsMjU1NTcsMjU1ODYsMjU1ODksMjU2OTcsMjU1NjcsMjU1MzQsMjU1NjUsMjU1NjQsMjU1NDAsMjU1NjAsMjU1NTUsMjU1MzgsMjU1NDMs'@; put 'MjU1NDgsMjU1NDcsMjU1NDQsMjU1ODQsMjU1NTksMjU1NjEsMjU5MDYsMjU5NTksMjU5NjIsMjU5NTYsMjU5NDgsMjU5NjAsMjU5NTcsMjU5OTYsMjYwMTMsMjYwMTQsMjYwMzAsMjYwNjQsMjYwNjYsMjYyMzYsMjYyMjAsMjYyMzUsMjYyNDAsMjYyMjUsMjYyMzMsMjYyMTgsMjYyMjYsMjYz'@; put 'NjksMjY4OTIsMjY4MzUsMjY4ODQsMjY4NDQsMjY5MjIsMjY4NjAsMjY4NTgsMjY4NjUsMjY4OTUsMjY4MzgsMjY4NzEsMjY4NTksMjY4NTIsMjY4NzAsMjY4OTksMjY4OTYsMjY4NjcsMjY4NDksMjY4ODcsMjY4MjgsMjY4ODgsMjY5OTIsMjY4MDQsMjY4OTcsMjY4NjMsMjY4MjIsMjY5MDAs'@; put 'MjY4NzIsMjY4MzIsMjY4NzcsMjY4NzYsMjY4NTYsMjY4OTEsMjY4OTAsMjY5MDMsMjY4MzAsMjY4MjQsMjY4NDUsMjY4NDYsMjY4NTQsMjY4NjgsMjY4MzMsMjY4ODYsMjY4MzYsMjY4NTcsMjY5MDEsMjY5MTcsMjY4MjMsMjc0NDksMjc0NTEsMjc0NTUsMjc0NTIsMjc1NDAsMjc1NDMsMjc1'@; put 'NDUsMjc1NDEsMjc1ODEsMjc2MzIsMjc2MzQsMjc2MzUsMjc2OTYsMjgxNTYsMjgyMzAsMjgyMzEsMjgxOTEsMjgyMzMsMjgyOTYsMjgyMjAsMjgyMjEsMjgyMjksMjgyNTgsMjgyMDMsMjgyMjMsMjgyMjUsMjgyNTMsMjgyNzUsMjgxODgsMjgyMTEsMjgyMzUsMjgyMjQsMjgyNDEsMjgyMTks'@; put 'MjgxNjMsMjgyMDYsMjgyNTQsMjgyNjQsMjgyNTIsMjgyNTcsMjgyMDksMjgyMDAsMjgyNTYsMjgyNzMsMjgyNjcsMjgyMTcsMjgxOTQsMjgyMDgsMjgyNDMsMjgyNjEsMjgxOTksMjgyODAsMjgyNjAsMjgyNzksMjgyNDUsMjgyODEsMjgyNDIsMjgyNjIsMjgyMTMsMjgyMTQsMjgyNTAsMjg5'@; put 'NjAsMjg5NTgsMjg5NzUsMjg5MjMsMjg5NzQsMjg5NzcsMjg5NjMsMjg5NjUsMjg5NjIsMjg5NzgsMjg5NTksMjg5NjgsMjg5ODYsMjg5NTUsMjkyNTksMjkyNzQsMjkzMjAsMjkzMjEsMjkzMTgsMjkzMTcsMjkzMjMsMjk0NTgsMjk0NTEsMjk0ODgsMjk0NzQsMjk0ODksMjk0OTEsMjk0Nzks'@; put 'Mjk0OTAsMjk0ODUsMjk0NzgsMjk0NzUsMjk0OTMsMjk0NTIsMjk3NDIsMjk3NDAsMjk3NDQsMjk3MzksMjk3MTgsMjk3MjIsMjk3MjksMjk3NDEsMjk3NDUsMjk3MzIsMjk3MzEsMjk3MjUsMjk3MzcsMjk3MjgsMjk3NDYsMjk5NDcsMjk5OTksMzAwNjMsMzAwNjAsMzAxODMsMzAxNzAsMzAx'@; put 'NzcsMzAxODIsMzAxNzMsMzAxNzUsMzAxODAsMzAxNjcsMzAzNTcsMzAzNTQsMzA0MjYsMzA1MzQsMzA1MzUsMzA1MzIsMzA1NDEsMzA1MzMsMzA1MzgsMzA1NDIsMzA1MzksMzA1NDAsMzA2ODYsMzA3MDAsMzA4MTYsMzA4MjAsMzA4MjEsMzA4MTIsMzA4MjksMzA4MzMsMzA4MjYsMzA4MzAs'@; put 'MzA4MzIsMzA4MjUsMzA4MjQsMzA4MTQsMzA4MTgsMzEwOTIsMzEwOTEsMzEwOTAsMzEwODgsMzEyMzQsMzEyNDIsMzEyMzUsMzEyNDQsMzEyMzYsMzEzODUsMzE0NjIsMzE0NjAsMzE1NjIsMzE1NDcsMzE1NTYsMzE1NjAsMzE1NjQsMzE1NjYsMzE1NTIsMzE1NzYsMzE1NTcsMzE5MDYsMzE5'@; put 'MDIsMzE5MTIsMzE5MDUsMzIwODgsMzIxMTEsMzIwOTksMzIwODMsMzIwODYsMzIxMDMsMzIxMDYsMzIwNzksMzIxMDksMzIwOTIsMzIxMDcsMzIwODIsMzIwODQsMzIxMDUsMzIwODEsMzIwOTUsMzIwNzgsMzI1NzQsMzI1NzUsMzI2MTMsMzI2MTQsMzI2NzQsMzI2NzIsMzI2NzMsMzI3Mjcs'@; put 'MzI4NDksMzI4NDcsMzI4NDgsMzMwMjIsMzI5ODAsMzMwOTEsMzMwOTgsMzMxMDYsMzMxMDMsMzMwOTUsMzMwODUsMzMxMDEsMzMwODIsMzMyNTQsMzMyNjIsMzMyNzEsMzMyNzIsMzMyNzMsMzMyODQsMzMzNDAsMzMzNDEsMzMzNDMsMzMzOTcsMzM1OTUsMzM3NDMsMzM3ODUsMzM4MjcsMzM3'@; put 'MjgsMzM3NjgsMzM4MTAsMzM3NjcsMzM3NjQsMzM3ODgsMzM3ODIsMzM4MDgsMzM3MzQsMzM3MzYsMzM3NzEsMzM3NjMsMzM3MjcsMzM3OTMsMzM3NTcsMzM3NjUsMzM3NTIsMzM3OTEsMzM3NjEsMzM3MzksMzM3NDIsMzM3NTAsMzM3ODEsMzM3MzcsMzM4MDEsMzM4MDcsMzM3NTgsMzM4MDks'@; put 'MzM3OTgsMzM3MzAsMzM3NzksMzM3NDksMzM3ODYsMzM3MzUsMzM3NDUsMzM3NzAsMzM4MTEsMzM3MzEsMzM3NzIsMzM3NzQsMzM3MzIsMzM3ODcsMzM3NTEsMzM3NjIsMzM4MTksMzM3NTUsMzM3OTAsMzQ1MjAsMzQ1MzAsMzQ1MzQsMzQ1MTUsMzQ1MzEsMzQ1MjIsMzQ1MzgsMzQ1MjUsMzQ1'@; put 'MzksMzQ1MjQsMzQ1NDAsMzQ1MzcsMzQ1MTksMzQ1MzYsMzQ1MTMsMzQ4ODgsMzQ5MDIsMzQ5MDEsMzUwMDIsMzUwMzEsMzUwMDEsMzVlMywzNTAwOCwzNTAwNiwzNDk5OCwzNTAwNCwzNDk5OSwzNTAwNSwzNDk5NCwzNTA3MywzNTAxNywzNTIyMSwzNTIyNCwzNTIyMywzNTI5MywzNTI5MCwz'@; put 'NTI5MSwzNTQwNiwzNTQwNSwzNTM4NSwzNTQxNywzNTM5MiwzNTQxNSwzNTQxNiwzNTM5NiwzNTM5NywzNTQxMCwzNTQwMCwzNTQwOSwzNTQwMiwzNTQwNCwzNTQwNywzNTkzNSwzNTk2OSwzNTk2OCwzNjAyNiwzNjAzMCwzNjAxNiwzNjAyNSwzNjAyMSwzNjIyOCwzNjIyNCwzNjIzMywzNjMx'@; put 'MiwzNjMwNywzNjMwMSwzNjI5NSwzNjMxMCwzNjMxNiwzNjMwMywzNjMwOSwzNjMxMywzNjI5NiwzNjMxMSwzNjI5MywzNjU5MSwzNjU5OSwzNjYwMiwzNjYwMSwzNjU4MiwzNjU5MCwzNjU4MSwzNjU5NywzNjU4MywzNjU4NCwzNjU5OCwzNjU4NywzNjU5MywzNjU4OCwzNjU5NiwzNjU4NSwz'@; put 'NjkwOSwzNjkxNiwzNjkxMSwzNzEyNiwzNzE2NCwzNzEyNCwzNzExOSwzNzExNiwzNzEyOCwzNzExMywzNzExNSwzNzEyMSwzNzEyMCwzNzEyNywzNzEyNSwzNzEyMywzNzIxNywzNzIyMCwzNzIxNSwzNzIxOCwzNzIxNiwzNzM3NywzNzM4NiwzNzQxMywzNzM3OSwzNzQwMiwzNzQxNCwzNzM5'@; put 'MSwzNzM4OCwzNzM3NiwzNzM5NCwzNzM3NSwzNzM3MywzNzM4MiwzNzM4MCwzNzQxNSwzNzM3OCwzNzQwNCwzNzQxMiwzNzQwMSwzNzM5OSwzNzM4MSwzNzM5OCwzODI2NywzODI4NSwzODI4NCwzODI4OCwzODUzNSwzODUyNiwzODUzNiwzODUzNywzODUzMSwzODUyOCwzODU5NCwzODYwMCwz'@; put 'ODU5NSwzODY0MSwzODY0MCwzODc2NCwzODc2OCwzODc2NiwzODkxOSwzOTA4MSwzOTE0Nyw0MDE2Niw0MDY5NywyMDA5OSwyMDEwMCwyMDE1MCwyMDY2OSwyMDY3MSwyMDY3OCwyMDY1NCwyMDY3NiwyMDY4MiwyMDY2MCwyMDY4MCwyMDY3NCwyMDY1NiwyMDY3MywyMDY2NiwyMDY1NywyMDY4'@; put 'MywyMDY4MSwyMDY2MiwyMDY2NCwyMDk1MSwyMTExNCwyMTExMiwyMTExNSwyMTExNiwyMTk1NSwyMTk3OSwyMTk2NCwyMTk2OCwyMTk2MywyMTk2MiwyMTk4MSwyMTk1MiwyMTk3MiwyMTk1NiwyMTk5MywyMTk1MSwyMTk3MCwyMTkwMSwyMTk2NywyMTk3MywyMTk4NiwyMTk3NCwyMTk2MCwy'@; put 'MjAwMiwyMTk2NSwyMTk3NywyMTk1NCwyMjI5MiwyMjYxMSwyMjYzMiwyMjYyOCwyMjYwNywyMjYwNSwyMjYwMSwyMjYzOSwyMjYxMywyMjYwNiwyMjYyMSwyMjYxNywyMjYyOSwyMjYxOSwyMjU4OSwyMjYyNywyMjY0MSwyMjc4MCwyMzIzOSwyMzIzNiwyMzI0MywyMzIyNiwyMzIyNCwyMzIx'@; put 'NywyMzIyMSwyMzIxNiwyMzIzMSwyMzI0MCwyMzIyNywyMzIzOCwyMzIyMywyMzIzMiwyMzI0MiwyMzIyMCwyMzIyMiwyMzI0NSwyMzIyNSwyMzE4NCwyMzUxMCwyMzUxMiwyMzUxMywyMzU4MywyMzYwMywyMzkyMSwyMzkwNywyMzg4MiwyMzkwOSwyMzkyMiwyMzkxNiwyMzkwMiwyMzkxMiwy'@; put 'MzkxMSwyMzkwNiwyNDA0OCwyNDE0MywyNDE0MiwyNDEzOCwyNDE0MSwyNDEzOSwyNDI2MSwyNDI2OCwyNDI2MiwyNDI2NywyNDI2MywyNDM4NCwyNDQ5NSwyNDQ5MywyNDgyMywyNDkwNSwyNDkwNiwyNDg3NSwyNDkwMSwyNDg4NiwyNDg4MiwyNDg3OCwyNDkwMiwyNDg3OSwyNDkxMSwyNDg3'@; put 'MywyNDg5NiwyNTEyMCwzNzIyNCwyNTEyMywyNTEyNSwyNTEyNCwyNTU0MSwyNTU4NSwyNTU3OSwyNTYxNiwyNTYxOCwyNTYwOSwyNTYzMiwyNTYzNiwyNTY1MSwyNTY2NywyNTYzMSwyNTYyMSwyNTYyNCwyNTY1NywyNTY1NSwyNTYzNCwyNTYzNSwyNTYxMiwyNTYzOCwyNTY0OCwyNTY0MCwy'@; put 'NTY2NSwyNTY1MywyNTY0NywyNTYxMCwyNTYyNiwyNTY2NCwyNTYzNywyNTYzOSwyNTYxMSwyNTU3NSwyNTYyNywyNTY0NiwyNTYzMywyNTYxNCwyNTk2NywyNjAwMiwyNjA2NywyNjI0NiwyNjI1MiwyNjI2MSwyNjI1NiwyNjI1MSwyNjI1MCwyNjI2NSwyNjI2MCwyNjIzMiwyNjQwMCwyNjk4'@; put 'MiwyNjk3NSwyNjkzNiwyNjk1OCwyNjk3OCwyNjk5MywyNjk0MywyNjk0OSwyNjk4NiwyNjkzNywyNjk0NiwyNjk2NywyNjk2OSwyNzAwMiwyNjk1MiwyNjk1MywyNjkzMywyNjk4OCwyNjkzMSwyNjk0MSwyNjk4MSwyNjg2NCwyN2UzLDI2OTMyLDI2OTg1LDI2OTQ0LDI2OTkxLDI2OTQ4LDI2'@; put 'OTk4LDI2OTY4LDI2OTQ1LDI2OTk2LDI2OTU2LDI2OTM5LDI2OTU1LDI2OTM1LDI2OTcyLDI2OTU5LDI2OTYxLDI2OTMwLDI2OTYyLDI2OTI3LDI3MDAzLDI2OTQwLDI3NDYyLDI3NDYxLDI3NDU5LDI3NDU4LDI3NDY0LDI3NDU3LDI3NTQ3LDY0MDEzLDI3NjQzLDI3NjQ0LDI3NjQxLDI3NjM5'@; put 'LDI3NjQwLDI4MzE1LDI4Mzc0LDI4MzYwLDI4MzAzLDI4MzUyLDI4MzE5LDI4MzA3LDI4MzA4LDI4MzIwLDI4MzM3LDI4MzQ1LDI4MzU4LDI4MzcwLDI4MzQ5LDI4MzUzLDI4MzE4LDI4MzYxLDI4MzQzLDI4MzM2LDI4MzY1LDI4MzI2LDI4MzY3LDI4MzM4LDI4MzUwLDI4MzU1LDI4MzgwLDI4'@; put 'Mzc2LDI4MzEzLDI4MzA2LDI4MzAyLDI4MzAxLDI4MzI0LDI4MzIxLDI4MzUxLDI4MzM5LDI4MzY4LDI4MzYyLDI4MzExLDI4MzM0LDI4MzIzLDI4OTk5LDI5MDEyLDI5MDEwLDI5MDI3LDI5MDI0LDI4OTkzLDI5MDIxLDI5MDI2LDI5MDQyLDI5MDQ4LDI5MDM0LDI5MDI1LDI4OTk0LDI5MDE2'@; put 'LDI4OTk1LDI5MDAzLDI5MDQwLDI5MDIzLDI5MDA4LDI5MDExLDI4OTk2LDI5MDA1LDI5MDE4LDI5MjYzLDI5MzI1LDI5MzI0LDI5MzI5LDI5MzI4LDI5MzI2LDI5NTAwLDI5NTA2LDI5NDk5LDI5NDk4LDI5NTA0LDI5NTE0LDI5NTEzLDI5NzY0LDI5NzcwLDI5NzcxLDI5Nzc4LDI5Nzc3LDI5'@; put 'NzgzLDI5NzYwLDI5Nzc1LDI5Nzc2LDI5Nzc0LDI5NzYyLDI5NzY2LDI5NzczLDI5NzgwLDI5OTIxLDI5OTUxLDI5OTUwLDI5OTQ5LDI5OTgxLDMwMDczLDMwMDcxLDI3MDExLDMwMTkxLDMwMjIzLDMwMjExLDMwMTk5LDMwMjA2LDMwMjA0LDMwMjAxLDMwMjAwLDMwMjI0LDMwMjAzLDMwMTk4'@; put 'LDMwMTg5LDMwMTk3LDMwMjA1LDMwMzYxLDMwMzg5LDMwNDI5LDMwNTQ5LDMwNTU5LDMwNTYwLDMwNTQ2LDMwNTUwLDMwNTU0LDMwNTY5LDMwNTY3LDMwNTQ4LDMwNTUzLDMwNTczLDMwNjg4LDMwODU1LDMwODc0LDMwODY4LDMwODYzLDMwODUyLDMwODY5LDMwODUzLDMwODU0LDMwODgxLDMw'@; put 'ODUxLDMwODQxLDMwODczLDMwODQ4LDMwODcwLDMwODQzLDMxMTAwLDMxMTA2LDMxMTAxLDMxMDk3LDMxMjQ5LDMxMjU2LDMxMjU3LDMxMjUwLDMxMjU1LDMxMjUzLDMxMjY2LDMxMjUxLDMxMjU5LDMxMjQ4LDMxMzk1LDMxMzk0LDMxMzkwLDMxNDY3LDMxNTkwLDMxNTg4LDMxNTk3LDMxNjA0'@; put 'LDMxNTkzLDMxNjAyLDMxNTg5LDMxNjAzLDMxNjAxLDMxNjAwLDMxNTg1LDMxNjA4LDMxNjA2LDMxNTg3LDMxOTIyLDMxOTI0LDMxOTE5LDMyMTM2LDMyMTM0LDMyMTI4LDMyMTQxLDMyMTI3LDMyMTMzLDMyMTIyLDMyMTQyLDMyMTIzLDMyMTMxLDMyMTI0LDMyMTQwLDMyMTQ4LDMyMTMyLDMy'@; put 'MTI1LDMyMTQ2LDMyNjIxLDMyNjE5LDMyNjE1LDMyNjE2LDMyNjIwLDMyNjc4LDMyNjc3LDMyNjc5LDMyNzMxLDMyNzMyLDMyODAxLDMzMTI0LDMzMTIwLDMzMTQzLDMzMTE2LDMzMTI5LDMzMTE1LDMzMTIyLDMzMTM4LDI2NDAxLDMzMTE4LDMzMTQyLDMzMTI3LDMzMTM1LDMzMDkyLDMzMTIx'@; put 'LDMzMzA5LDMzMzUzLDMzMzQ4LDMzMzQ0LDMzMzQ2LDMzMzQ5LDM0MDMzLDMzODU1LDMzODc4LDMzOTEwLDMzOTEzLDMzOTM1LDMzOTMzLDMzODkzLDMzODczLDMzODU2LDMzOTI2LDMzODk1LDMzODQwLDMzODY5LDMzOTE3LDMzODgyLDMzODgxLDMzOTA4LDMzOTA3LDMzODg1LDM0MDU1LDMz'@; put 'ODg2LDMzODQ3LDMzODUwLDMzODQ0LDMzOTE0LDMzODU5LDMzOTEyLDMzODQyLDMzODYxLDMzODMzLDMzNzUzLDMzODY3LDMzODM5LDMzODU4LDMzODM3LDMzODg3LDMzOTA0LDMzODQ5LDMzODcwLDMzODY4LDMzODc0LDMzOTAzLDMzOTg5LDMzOTM0LDMzODUxLDMzODYzLDMzODQ2LDMzODQz'@; put 'LDMzODk2LDMzOTE4LDMzODYwLDMzODM1LDMzODg4LDMzODc2LDMzOTAyLDMzODcyLDM0NTcxLDM0NTY0LDM0NTUxLDM0NTcyLDM0NTU0LDM0NTE4LDM0NTQ5LDM0NjM3LDM0NTUyLDM0NTc0LDM0NTY5LDM0NTYxLDM0NTUwLDM0NTczLDM0NTY1LDM1MDMwLDM1MDE5LDM1MDIxLDM1MDIyLDM1'@; put 'MDM4LDM1MDM1LDM1MDM0LDM1MDIwLDM1MDI0LDM1MjA1LDM1MjI3LDM1Mjk1LDM1MzAxLDM1MzAwLDM1Mjk3LDM1Mjk2LDM1Mjk4LDM1MjkyLDM1MzAyLDM1NDQ2LDM1NDYyLDM1NDU1LDM1NDI1LDM1MzkxLDM1NDQ3LDM1NDU4LDM1NDYwLDM1NDQ1LDM1NDU5LDM1NDU3LDM1NDQ0LDM1NDUw'@; put 'LDM1OTAwLDM1OTE1LDM1OTE0LDM1OTQxLDM1OTQwLDM1OTQyLDM1OTc0LDM1OTcyLDM1OTczLDM2MDQ0LDM2MjAwLDM2MjAxLDM2MjQxLDM2MjM2LDM2MjM4LDM2MjM5LDM2MjM3LDM2MjQzLDM2MjQ0LDM2MjQwLDM2MjQyLDM2MzM2LDM2MzIwLDM2MzMyLDM2MzM3LDM2MzM0LDM2MzA0LDM2'@; put 'MzI5LDM2MzIzLDM2MzIyLDM2MzI3LDM2MzM4LDM2MzMxLDM2MzQwLDM2NjE0LDM2NjA3LDM2NjA5LDM2NjA4LDM2NjEzLDM2NjE1LDM2NjE2LDM2NjEwLDM2NjE5LDM2OTQ2LDM2OTI3LDM2OTMyLDM2OTM3LDM2OTI1LDM3MTM2LDM3MTMzLDM3MTM1LDM3MTM3LDM3MTQyLDM3MTQwLDM3MTMx'@; put 'LDM3MTM0LDM3MjMwLDM3MjMxLDM3NDQ4LDM3NDU4LDM3NDI0LDM3NDM0LDM3NDc4LDM3NDI3LDM3NDc3LDM3NDcwLDM3NTA3LDM3NDIyLDM3NDUwLDM3NDQ2LDM3NDg1LDM3NDg0LDM3NDU1LDM3NDcyLDM3NDc5LDM3NDg3LDM3NDMwLDM3NDczLDM3NDg4LDM3NDI1LDM3NDYwLDM3NDc1LDM3'@; put 'NDU2LDM3NDkwLDM3NDU0LDM3NDU5LDM3NDUyLDM3NDYyLDM3NDI2LDM4MzAzLDM4MzAwLDM4MzAyLDM4Mjk5LDM4NTQ2LDM4NTQ3LDM4NTQ1LDM4NTUxLDM4NjA2LDM4NjUwLDM4NjUzLDM4NjQ4LDM4NjQ1LDM4NzcxLDM4Nzc1LDM4Nzc2LDM4NzcwLDM4OTI3LDM4OTI1LDM4OTI2LDM5MDg0'@; put 'LDM5MTU4LDM5MTYxLDM5MzQzLDM5MzQ2LDM5MzQ0LDM5MzQ5LDM5NTk3LDM5NTk1LDM5NzcxLDQwMTcwLDQwMTczLDQwMTY3LDQwNTc2LDQwNzAxLDIwNzEwLDIwNjkyLDIwNjk1LDIwNzEyLDIwNzIzLDIwNjk5LDIwNzE0LDIwNzAxLDIwNzA4LDIwNjkxLDIwNzE2LDIwNzIwLDIwNzE5LDIw'@; put 'NzA3LDIwNzA0LDIwOTUyLDIxMTIwLDIxMTIxLDIxMjI1LDIxMjI3LDIxMjk2LDIxNDIwLDIyMDU1LDIyMDM3LDIyMDI4LDIyMDM0LDIyMDEyLDIyMDMxLDIyMDQ0LDIyMDE3LDIyMDM1LDIyMDE4LDIyMDEwLDIyMDQ1LDIyMDIwLDIyMDE1LDIyMDA5LDIyNjY1LDIyNjUyLDIyNjcyLDIyNjgw'@; put 'LDIyNjYyLDIyNjU3LDIyNjU1LDIyNjQ0LDIyNjY3LDIyNjUwLDIyNjYzLDIyNjczLDIyNjcwLDIyNjQ2LDIyNjU4LDIyNjY0LDIyNjUxLDIyNjc2LDIyNjcxLDIyNzgyLDIyODkxLDIzMjYwLDIzMjc4LDIzMjY5LDIzMjUzLDIzMjc0LDIzMjU4LDIzMjc3LDIzMjc1LDIzMjgzLDIzMjY2LDIz'@; put 'MjY0LDIzMjU5LDIzMjc2LDIzMjYyLDIzMjYxLDIzMjU3LDIzMjcyLDIzMjYzLDIzNDE1LDIzNTIwLDIzNTIzLDIzNjUxLDIzOTM4LDIzOTM2LDIzOTMzLDIzOTQyLDIzOTMwLDIzOTM3LDIzOTI3LDIzOTQ2LDIzOTQ1LDIzOTQ0LDIzOTM0LDIzOTMyLDIzOTQ5LDIzOTI5LDIzOTM1LDI0MTUy'@; put 'LDI0MTUzLDI0MTQ3LDI0MjgwLDI0MjczLDI0Mjc5LDI0MjcwLDI0Mjg0LDI0Mjc3LDI0MjgxLDI0Mjc0LDI0Mjc2LDI0Mzg4LDI0Mzg3LDI0NDMxLDI0NTAyLDI0ODc2LDI0ODcyLDI0ODk3LDI0OTI2LDI0OTQ1LDI0OTQ3LDI0OTE0LDI0OTE1LDI0OTQ2LDI0OTQwLDI0OTYwLDI0OTQ4LDI0'@; put 'OTE2LDI0OTU0LDI0OTIzLDI0OTMzLDI0ODkxLDI0OTM4LDI0OTI5LDI0OTE4LDI1MTI5LDI1MTI3LDI1MTMxLDI1NjQzLDI1Njc3LDI1NjkxLDI1NjkzLDI1NzE2LDI1NzE4LDI1NzE0LDI1NzE1LDI1NzI1LDI1NzE3LDI1NzAyLDI1NzY2LDI1Njc4LDI1NzMwLDI1Njk0LDI1NjkyLDI1Njc1'@; put 'LDI1NjgzLDI1Njk2LDI1NjgwLDI1NzI3LDI1NjYzLDI1NzA4LDI1NzA3LDI1Njg5LDI1NzAxLDI1NzE5LDI1OTcxLDI2MDE2LDI2MjczLDI2MjcyLDI2MjcxLDI2MzczLDI2MzcyLDI2NDAyLDI3MDU3LDI3MDYyLDI3MDgxLDI3MDQwLDI3MDg2LDI3MDMwLDI3MDU2LDI3MDUyLDI3MDY4LDI3'@; put 'MDI1LDI3MDMzLDI3MDIyLDI3MDQ3LDI3MDIxLDI3MDQ5LDI3MDcwLDI3MDU1LDI3MDcxLDI3MDc2LDI3MDY5LDI3MDQ0LDI3MDkyLDI3MDY1LDI3MDgyLDI3MDM0LDI3MDg3LDI3MDU5LDI3MDI3LDI3MDUwLDI3MDQxLDI3MDM4LDI3MDk3LDI3MDMxLDI3MDI0LDI3MDc0LDI3MDYxLDI3MDQ1'@; put 'LDI3MDc4LDI3NDY2LDI3NDY5LDI3NDY3LDI3NTUwLDI3NTUxLDI3NTUyLDI3NTg3LDI3NTg4LDI3NjQ2LDI4MzY2LDI4NDA1LDI4NDAxLDI4NDE5LDI4NDUzLDI4NDA4LDI4NDcxLDI4NDExLDI4NDYyLDI4NDI1LDI4NDk0LDI4NDQxLDI4NDQyLDI4NDU1LDI4NDQwLDI4NDc1LDI4NDM0LDI4'@; put 'Mzk3LDI4NDI2LDI4NDcwLDI4NTMxLDI4NDA5LDI4Mzk4LDI4NDYxLDI4NDgwLDI4NDY0LDI4NDc2LDI4NDY5LDI4Mzk1LDI4NDIzLDI4NDMwLDI4NDgzLDI4NDIxLDI4NDEzLDI4NDA2LDI4NDczLDI4NDQ0LDI4NDEyLDI4NDc0LDI4NDQ3LDI4NDI5LDI4NDQ2LDI4NDI0LDI4NDQ5LDI5MDYz'@; put 'LDI5MDcyLDI5MDY1LDI5MDU2LDI5MDYxLDI5MDU4LDI5MDcxLDI5MDUxLDI5MDYyLDI5MDU3LDI5MDc5LDI5MjUyLDI5MjY3LDI5MzM1LDI5MzMzLDI5MzMxLDI5NTA3LDI5NTE3LDI5NTIxLDI5NTE2LDI5Nzk0LDI5ODExLDI5ODA5LDI5ODEzLDI5ODEwLDI5Nzk5LDI5ODA2LDI5OTUyLDI5'@; put 'OTU0LDI5OTU1LDMwMDc3LDMwMDk2LDMwMjMwLDMwMjE2LDMwMjIwLDMwMjI5LDMwMjI1LDMwMjE4LDMwMjI4LDMwMzkyLDMwNTkzLDMwNTg4LDMwNTk3LDMwNTk0LDMwNTc0LDMwNTkyLDMwNTc1LDMwNTkwLDMwNTk1LDMwODk4LDMwODkwLDMwOTAwLDMwODkzLDMwODg4LDMwODQ2LDMwODkx'@; put 'LDMwODc4LDMwODg1LDMwODgwLDMwODkyLDMwODgyLDMwODg0LDMxMTI4LDMxMTE0LDMxMTE1LDMxMTI2LDMxMTI1LDMxMTI0LDMxMTIzLDMxMTI3LDMxMTEyLDMxMTIyLDMxMTIwLDMxMjc1LDMxMzA2LDMxMjgwLDMxMjc5LDMxMjcyLDMxMjcwLDMxNDAwLDMxNDAzLDMxNDA0LDMxNDcwLDMx'@; put 'NjI0LDMxNjQ0LDMxNjI2LDMxNjMzLDMxNjMyLDMxNjM4LDMxNjI5LDMxNjI4LDMxNjQzLDMxNjMwLDMxNjIxLDMxNjQwLDIxMTI0LDMxNjQxLDMxNjUyLDMxNjE4LDMxOTMxLDMxOTM1LDMxOTMyLDMxOTMwLDMyMTY3LDMyMTgzLDMyMTk0LDMyMTYzLDMyMTcwLDMyMTkzLDMyMTkyLDMyMTk3'@; put 'LDMyMTU3LDMyMjA2LDMyMTk2LDMyMTk4LDMyMjAzLDMyMjA0LDMyMTc1LDMyMTg1LDMyMTUwLDMyMTg4LDMyMTU5LDMyMTY2LDMyMTc0LDMyMTY5LDMyMTYxLDMyMjAxLDMyNjI3LDMyNzM4LDMyNzM5LDMyNzQxLDMyNzM0LDMyODA0LDMyODYxLDMyODYwLDMzMTYxLDMzMTU4LDMzMTU1LDMz'@; put 'MTU5LDMzMTY1LDMzMTY0LDMzMTYzLDMzMzAxLDMzOTQzLDMzOTU2LDMzOTUzLDMzOTUxLDMzOTc4LDMzOTk4LDMzOTg2LDMzOTY0LDMzOTY2LDMzOTYzLDMzOTc3LDMzOTcyLDMzOTg1LDMzOTk3LDMzOTYyLDMzOTQ2LDMzOTY5LDM0ZTMsMzM5NDksMzM5NTksMzM5NzksMzM5NTQsMzM5NDAs'@; put 'MzM5OTEsMzM5OTYsMzM5NDcsMzM5NjEsMzM5NjcsMzM5NjAsMzQwMDYsMzM5NDQsMzM5NzQsMzM5OTksMzM5NTIsMzQwMDcsMzQwMDQsMzQwMDIsMzQwMTEsMzM5NjgsMzM5MzcsMzQ0MDEsMzQ2MTEsMzQ1OTUsMzQ2MDAsMzQ2NjcsMzQ2MjQsMzQ2MDYsMzQ1OTAsMzQ1OTMsMzQ1ODUsMzQ1'@; put 'ODcsMzQ2MjcsMzQ2MDQsMzQ2MjUsMzQ2MjIsMzQ2MzAsMzQ1OTIsMzQ2MTAsMzQ2MDIsMzQ2MDUsMzQ2MjAsMzQ1NzgsMzQ2MTgsMzQ2MDksMzQ2MTMsMzQ2MjYsMzQ1OTgsMzQ1OTksMzQ2MTYsMzQ1OTYsMzQ1ODYsMzQ2MDgsMzQ1NzcsMzUwNjMsMzUwNDcsMzUwNTcsMzUwNTgsMzUwNjYs'@; put 'MzUwNzAsMzUwNTQsMzUwNjgsMzUwNjIsMzUwNjcsMzUwNTYsMzUwNTIsMzUwNTEsMzUyMjksMzUyMzMsMzUyMzEsMzUyMzAsMzUzMDUsMzUzMDcsMzUzMDQsMzU0OTksMzU0ODEsMzU0NjcsMzU0NzQsMzU0NzEsMzU0NzgsMzU5MDEsMzU5NDQsMzU5NDUsMzYwNTMsMzYwNDcsMzYwNTUsMzYy'@; put 'NDYsMzYzNjEsMzYzNTQsMzYzNTEsMzYzNjUsMzYzNDksMzYzNjIsMzYzNTUsMzYzNTksMzYzNTgsMzYzNTcsMzYzNTAsMzYzNTIsMzYzNTYsMzY2MjQsMzY2MjUsMzY2MjIsMzY2MjEsMzcxNTUsMzcxNDgsMzcxNTIsMzcxNTQsMzcxNTEsMzcxNDksMzcxNDYsMzcxNTYsMzcxNTMsMzcxNDcs'@; put 'MzcyNDIsMzcyMzQsMzcyNDEsMzcyMzUsMzc1NDEsMzc1NDAsMzc0OTQsMzc1MzEsMzc0OTgsMzc1MzYsMzc1MjQsMzc1NDYsMzc1MTcsMzc1NDIsMzc1MzAsMzc1NDcsMzc0OTcsMzc1MjcsMzc1MDMsMzc1MzksMzc2MTQsMzc1MTgsMzc1MDYsMzc1MjUsMzc1MzgsMzc1MDEsMzc1MTIsMzc1'@; put 'MzcsMzc1MTQsMzc1MTAsMzc1MTYsMzc1MjksMzc1NDMsMzc1MDIsMzc1MTEsMzc1NDUsMzc1MzMsMzc1MTUsMzc0MjEsMzg1NTgsMzg1NjEsMzg2NTUsMzg3NDQsMzg3ODEsMzg3NzgsMzg3ODIsMzg3ODcsMzg3ODQsMzg3ODYsMzg3NzksMzg3ODgsMzg3ODUsMzg3ODMsMzg4NjIsMzg4NjEs'@; put 'Mzg5MzQsMzkwODUsMzkwODYsMzkxNzAsMzkxNjgsMzkxNzUsMzkzMjUsMzkzMjQsMzkzNjMsMzkzNTMsMzkzNTUsMzkzNTQsMzkzNjIsMzkzNTcsMzkzNjcsMzk2MDEsMzk2NTEsMzk2NTUsMzk3NDIsMzk3NDMsMzk3NzYsMzk3NzcsMzk3NzUsNDAxNzcsNDAxNzgsNDAxODEsNDA2MTUsMjA3'@; put 'MzUsMjA3MzksMjA3ODQsMjA3MjgsMjA3NDIsMjA3NDMsMjA3MjYsMjA3MzQsMjA3NDcsMjA3NDgsMjA3MzMsMjA3NDYsMjExMzEsMjExMzIsMjEyMzMsMjEyMzEsMjIwODgsMjIwODIsMjIwOTIsMjIwNjksMjIwODEsMjIwOTAsMjIwODksMjIwODYsMjIxMDQsMjIxMDYsMjIwODAsMjIwNjcs'@; put 'MjIwNzcsMjIwNjAsMjIwNzgsMjIwNzIsMjIwNTgsMjIwNzQsMjIyOTgsMjI2OTksMjI2ODUsMjI3MDUsMjI2ODgsMjI2OTEsMjI3MDMsMjI3MDAsMjI2OTMsMjI2ODksMjI3ODMsMjMyOTUsMjMyODQsMjMyOTMsMjMyODcsMjMyODYsMjMyOTksMjMyODgsMjMyOTgsMjMyODksMjMyOTcsMjMz'@; put 'MDMsMjMzMDEsMjMzMTEsMjM2NTUsMjM5NjEsMjM5NTksMjM5NjcsMjM5NTQsMjM5NzAsMjM5NTUsMjM5NTcsMjM5NjgsMjM5NjQsMjM5NjksMjM5NjIsMjM5NjYsMjQxNjksMjQxNTcsMjQxNjAsMjQxNTYsMzIyNDMsMjQyODMsMjQyODYsMjQyODksMjQzOTMsMjQ0OTgsMjQ5NzEsMjQ5NjMs'@; put 'MjQ5NTMsMjUwMDksMjUwMDgsMjQ5OTQsMjQ5NjksMjQ5ODcsMjQ5NzksMjUwMDcsMjUwMDUsMjQ5OTEsMjQ5NzgsMjUwMDIsMjQ5OTMsMjQ5NzMsMjQ5MzQsMjUwMTEsMjUxMzMsMjU3MTAsMjU3MTIsMjU3NTAsMjU3NjAsMjU3MzMsMjU3NTEsMjU3NTYsMjU3NDMsMjU3MzksMjU3MzgsMjU3'@; put 'NDAsMjU3NjMsMjU3NTksMjU3MDQsMjU3NzcsMjU3NTIsMjU5NzQsMjU5NzgsMjU5NzcsMjU5NzksMjYwMzQsMjYwMzUsMjYyOTMsMjYyODgsMjYyODEsMjYyOTAsMjYyOTUsMjYyODIsMjYyODcsMjcxMzYsMjcxNDIsMjcxNTksMjcxMDksMjcxMjgsMjcxNTcsMjcxMjEsMjcxMDgsMjcxNjgs'@; put 'MjcxMzUsMjcxMTYsMjcxMDYsMjcxNjMsMjcxNjUsMjcxMzQsMjcxNzUsMjcxMjIsMjcxMTgsMjcxNTYsMjcxMjcsMjcxMTEsMjcyMDAsMjcxNDQsMjcxMTAsMjcxMzEsMjcxNDksMjcxMzIsMjcxMTUsMjcxNDUsMjcxNDAsMjcxNjAsMjcxNzMsMjcxNTEsMjcxMjYsMjcxNzQsMjcxNDMsMjcx'@; put 'MjQsMjcxNTgsMjc0NzMsMjc1NTcsMjc1NTUsMjc1NTQsMjc1NTgsMjc2NDksMjc2NDgsMjc2NDcsMjc2NTAsMjg0ODEsMjg0NTQsMjg1NDIsMjg1NTEsMjg2MTQsMjg1NjIsMjg1NTcsMjg1NTMsMjg1NTYsMjg1MTQsMjg0OTUsMjg1NDksMjg1MDYsMjg1NjYsMjg1MzQsMjg1MjQsMjg1NDYs'@; put 'Mjg1MDEsMjg1MzAsMjg0OTgsMjg0OTYsMjg1MDMsMjg1NjQsMjg1NjMsMjg1MDksMjg0MTYsMjg1MTMsMjg1MjMsMjg1NDEsMjg1MTksMjg1NjAsMjg0OTksMjg1NTUsMjg1MjEsMjg1NDMsMjg1NjUsMjg1MTUsMjg1MzUsMjg1MjIsMjg1MzksMjkxMDYsMjkxMDMsMjkwODMsMjkxMDQsMjkw'@; put 'ODgsMjkwODIsMjkwOTcsMjkxMDksMjkwODUsMjkwOTMsMjkwODYsMjkwOTIsMjkwODksMjkwOTgsMjkwODQsMjkwOTUsMjkxMDcsMjkzMzYsMjkzMzgsMjk1MjgsMjk1MjIsMjk1MzQsMjk1MzUsMjk1MzYsMjk1MzMsMjk1MzEsMjk1MzcsMjk1MzAsMjk1MjksMjk1MzgsMjk4MzEsMjk4MzMs'@; put 'Mjk4MzQsMjk4MzAsMjk4MjUsMjk4MjEsMjk4MjksMjk4MzIsMjk4MjAsMjk4MTcsMjk5NjAsMjk5NTksMzAwNzgsMzAyNDUsMzAyMzgsMzAyMzMsMzAyMzcsMzAyMzYsMzAyNDMsMzAyMzQsMzAyNDgsMzAyMzUsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjMsMzA2MDUsMzA2MDcsMzA2MDEsMzA2'@; put 'MDAsMzA5MjUsMzA5MDcsMzA5MjcsMzA5MjQsMzA5MjksMzA5MjYsMzA5MzIsMzA5MjAsMzA5MTUsMzA5MTYsMzA5MjEsMzExMzAsMzExMzcsMzExMzYsMzExMzIsMzExMzgsMzExMzEsMjc1MTAsMzEyODksMzE0MTAsMzE0MTIsMzE0MTEsMzE2NzEsMzE2OTEsMzE2NzgsMzE2NjAsMzE2OTQs'@; put 'MzE2NjMsMzE2NzMsMzE2OTAsMzE2NjksMzE5NDEsMzE5NDQsMzE5NDgsMzE5NDcsMzIyNDcsMzIyMTksMzIyMzQsMzIyMzEsMzIyMTUsMzIyMjUsMzIyNTksMzIyNTAsMzIyMzAsMzIyNDYsMzIyNDEsMzIyNDAsMzIyMzgsMzIyMjMsMzI2MzAsMzI2ODQsMzI2ODgsMzI2ODUsMzI3NDksMzI3'@; put 'NDcsMzI3NDYsMzI3NDgsMzI3NDIsMzI3NDQsMzI4NjgsMzI4NzEsMzMxODcsMzMxODMsMzMxODIsMzMxNzMsMzMxODYsMzMxNzcsMzMxNzUsMzMzMDIsMzMzNTksMzMzNjMsMzMzNjIsMzMzNjAsMzMzNTgsMzMzNjEsMzQwODQsMzQxMDcsMzQwNjMsMzQwNDgsMzQwODksMzQwNjIsMzQwNTcs'@; put 'MzQwNjEsMzQwNzksMzQwNTgsMzQwODcsMzQwNzYsMzQwNDMsMzQwOTEsMzQwNDIsMzQwNTYsMzQwNjAsMzQwMzYsMzQwOTAsMzQwMzQsMzQwNjksMzQwMzksMzQwMjcsMzQwMzUsMzQwNDQsMzQwNjYsMzQwMjYsMzQwMjUsMzQwNzAsMzQwNDYsMzQwODgsMzQwNzcsMzQwOTQsMzQwNTAsMzQw'@; put 'NDUsMzQwNzgsMzQwMzgsMzQwOTcsMzQwODYsMzQwMjMsMzQwMjQsMzQwMzIsMzQwMzEsMzQwNDEsMzQwNzIsMzQwODAsMzQwOTYsMzQwNTksMzQwNzMsMzQwOTUsMzQ0MDIsMzQ2NDYsMzQ2NTksMzQ2NjAsMzQ2NzksMzQ3ODUsMzQ2NzUsMzQ2NDgsMzQ2NDQsMzQ2NTEsMzQ2NDIsMzQ2NTcs'@; put 'MzQ2NTAsMzQ2NDEsMzQ2NTQsMzQ2NjksMzQ2NjYsMzQ2NDAsMzQ2MzgsMzQ2NTUsMzQ2NTMsMzQ2NzEsMzQ2NjgsMzQ2ODIsMzQ2NzAsMzQ2NTIsMzQ2NjEsMzQ2MzksMzQ2ODMsMzQ2NzcsMzQ2NTgsMzQ2NjMsMzQ2NjUsMzQ5MDYsMzUwNzcsMzUwODQsMzUwOTIsMzUwODMsMzUwOTUsMzUw'@; put 'OTYsMzUwOTcsMzUwNzgsMzUwOTQsMzUwODksMzUwODYsMzUwODEsMzUyMzQsMzUyMzYsMzUyMzUsMzUzMDksMzUzMTIsMzUzMDgsMzU1MzUsMzU1MjYsMzU1MTIsMzU1MzksMzU1MzcsMzU1NDAsMzU1NDEsMzU1MTUsMzU1NDMsMzU1MTgsMzU1MjAsMzU1MjUsMzU1NDQsMzU1MjMsMzU1MTQs'@; put 'MzU1MTcsMzU1NDUsMzU5MDIsMzU5MTcsMzU5ODMsMzYwNjksMzYwNjMsMzYwNTcsMzYwNzIsMzYwNTgsMzYwNjEsMzYwNzEsMzYyNTYsMzYyNTIsMzYyNTcsMzYyNTEsMzYzODQsMzYzODcsMzYzODksMzYzODgsMzYzOTgsMzYzNzMsMzYzNzksMzYzNzQsMzYzNjksMzYzNzcsMzYzOTAsMzYz'@; put 'OTEsMzYzNzIsMzYzNzAsMzYzNzYsMzYzNzEsMzYzODAsMzYzNzUsMzYzNzgsMzY2NTIsMzY2NDQsMzY2MzIsMzY2MzQsMzY2NDAsMzY2NDMsMzY2MzAsMzY2MzEsMzY5NzksMzY5NzYsMzY5NzUsMzY5NjcsMzY5NzEsMzcxNjcsMzcxNjMsMzcxNjEsMzcxNjIsMzcxNzAsMzcxNTgsMzcxNjYs'@; put 'MzcyNTMsMzcyNTQsMzcyNTgsMzcyNDksMzcyNTAsMzcyNTIsMzcyNDgsMzc1ODQsMzc1NzEsMzc1NzIsMzc1NjgsMzc1OTMsMzc1NTgsMzc1ODMsMzc2MTcsMzc1OTksMzc1OTIsMzc2MDksMzc1OTEsMzc1OTcsMzc1ODAsMzc2MTUsMzc1NzAsMzc2MDgsMzc1NzgsMzc1NzYsMzc1ODIsMzc2'@; put 'MDYsMzc1ODEsMzc1ODksMzc1NzcsMzc2MDAsMzc1OTgsMzc2MDcsMzc1ODUsMzc1ODcsMzc1NTcsMzc2MDEsMzc1NzQsMzc1NTYsMzgyNjgsMzgzMTYsMzgzMTUsMzgzMTgsMzgzMjAsMzg1NjQsMzg1NjIsMzg2MTEsMzg2NjEsMzg2NjQsMzg2NTgsMzg3NDYsMzg3OTQsMzg3OTgsMzg3OTIs'@; put 'Mzg4NjQsMzg4NjMsMzg5NDIsMzg5NDEsMzg5NTAsMzg5NTMsMzg5NTIsMzg5NDQsMzg5MzksMzg5NTEsMzkwOTAsMzkxNzYsMzkxNjIsMzkxODUsMzkxODgsMzkxOTAsMzkxOTEsMzkxODksMzkzODgsMzkzNzMsMzkzNzUsMzkzNzksMzkzODAsMzkzNzQsMzkzNjksMzkzODIsMzkzODQsMzkz'@; put 'NzEsMzkzODMsMzkzNzIsMzk2MDMsMzk2NjAsMzk2NTksMzk2NjcsMzk2NjYsMzk2NjUsMzk3NTAsMzk3NDcsMzk3ODMsMzk3OTYsMzk3OTMsMzk3ODIsMzk3OTgsMzk3OTcsMzk3OTIsMzk3ODQsMzk3ODAsMzk3ODgsNDAxODgsNDAxODYsNDAxODksNDAxOTEsNDAxODMsNDAxOTksNDAxOTIs'@; put 'NDAxODUsNDAxODcsNDAyMDAsNDAxOTcsNDAxOTYsNDA1NzksNDA2NTksNDA3MTksNDA3MjAsMjA3NjQsMjA3NTUsMjA3NTksMjA3NjIsMjA3NTMsMjA5NTgsMjEzMDAsMjE0NzMsMjIxMjgsMjIxMTIsMjIxMjYsMjIxMzEsMjIxMTgsMjIxMTUsMjIxMjUsMjIxMzAsMjIxMTAsMjIxMzUsMjIz'@; put 'MDAsMjIyOTksMjI3MjgsMjI3MTcsMjI3MjksMjI3MTksMjI3MTQsMjI3MjIsMjI3MTYsMjI3MjYsMjMzMTksMjMzMjEsMjMzMjMsMjMzMjksMjMzMTYsMjMzMTUsMjMzMTIsMjMzMTgsMjMzMzYsMjMzMjIsMjMzMjgsMjMzMjYsMjM1MzUsMjM5ODAsMjM5ODUsMjM5NzcsMjM5NzUsMjM5ODks'@; put 'MjM5ODQsMjM5ODIsMjM5NzgsMjM5NzYsMjM5ODYsMjM5ODEsMjM5ODMsMjM5ODgsMjQxNjcsMjQxNjgsMjQxNjYsMjQxNzUsMjQyOTcsMjQyOTUsMjQyOTQsMjQyOTYsMjQyOTMsMjQzOTUsMjQ1MDgsMjQ5ODksMjVlMywyNDk4MiwyNTAyOSwyNTAxMiwyNTAzMCwyNTAyNSwyNTAzNiwyNTAx'@; put 'OCwyNTAyMywyNTAxNiwyNDk3MiwyNTgxNSwyNTgxNCwyNTgwOCwyNTgwNywyNTgwMSwyNTc4OSwyNTczNywyNTc5NSwyNTgxOSwyNTg0MywyNTgxNywyNTkwNywyNTk4MywyNTk4MCwyNjAxOCwyNjMxMiwyNjMwMiwyNjMwNCwyNjMxNCwyNjMxNSwyNjMxOSwyNjMwMSwyNjI5OSwyNjI5OCwy'@; put 'NjMxNiwyNjQwMywyNzE4OCwyNzIzOCwyNzIwOSwyNzIzOSwyNzE4NiwyNzI0MCwyNzE5OCwyNzIyOSwyNzI0NSwyNzI1NCwyNzIyNywyNzIxNywyNzE3NiwyNzIyNiwyNzE5NSwyNzE5OSwyNzIwMSwyNzI0MiwyNzIzNiwyNzIxNiwyNzIxNSwyNzIyMCwyNzI0NywyNzI0MSwyNzIzMiwyNzE5'@; put 'NiwyNzIzMCwyNzIyMiwyNzIyMSwyNzIxMywyNzIxNCwyNzIwNiwyNzQ3NywyNzQ3NiwyNzQ3OCwyNzU1OSwyNzU2MiwyNzU2MywyNzU5MiwyNzU5MSwyNzY1MiwyNzY1MSwyNzY1NCwyODU4OSwyODYxOSwyODU3OSwyODYxNSwyODYwNCwyODYyMiwyODYxNiwyODUxMCwyODYxMiwyODYwNSwy'@; put 'ODU3NCwyODYxOCwyODU4NCwyODY3NiwyODU4MSwyODU5MCwyODYwMiwyODU4OCwyODU4NiwyODYyMywyODYwNywyODYwMCwyODU3OCwyODYxNywyODU4NywyODYyMSwyODU5MSwyODU5NCwyODU5MiwyOTEyNSwyOTEyMiwyOTExOSwyOTExMiwyOTE0MiwyOTEyMCwyOTEyMSwyOTEzMSwyOTE0'@; put 'MCwyOTEzMCwyOTEyNywyOTEzNSwyOTExNywyOTE0NCwyOTExNiwyOTEyNiwyOTE0NiwyOTE0NywyOTM0MSwyOTM0MiwyOTU0NSwyOTU0MiwyOTU0MywyOTU0OCwyOTU0MSwyOTU0NywyOTU0NiwyOTgyMywyOTg1MCwyOTg1NiwyOTg0NCwyOTg0MiwyOTg0NSwyOTg1NywyOTk2MywzMDA4MCwz'@; put 'MDI1NSwzMDI1MywzMDI1NywzMDI2OSwzMDI1OSwzMDI2OCwzMDI2MSwzMDI1OCwzMDI1NiwzMDM5NSwzMDQzOCwzMDYxOCwzMDYyMSwzMDYyNSwzMDYyMCwzMDYxOSwzMDYyNiwzMDYyNywzMDYxMywzMDYxNywzMDYxNSwzMDk0MSwzMDk1MywzMDk0OSwzMDk1NCwzMDk0MiwzMDk0NywzMDkz'@; put 'OSwzMDk0NSwzMDk0NiwzMDk1NywzMDk0MywzMDk0NCwzMTE0MCwzMTMwMCwzMTMwNCwzMTMwMywzMTQxNCwzMTQxNiwzMTQxMywzMTQwOSwzMTQxNSwzMTcxMCwzMTcxNSwzMTcxOSwzMTcwOSwzMTcwMSwzMTcxNywzMTcwNiwzMTcyMCwzMTczNywzMTcwMCwzMTcyMiwzMTcxNCwzMTcwOCwz'@; put 'MTcyMywzMTcwNCwzMTcxMSwzMTk1NCwzMTk1NiwzMTk1OSwzMTk1MiwzMTk1MywzMjI3NCwzMjI4OSwzMjI3OSwzMjI2OCwzMjI4NywzMjI4OCwzMjI3NSwzMjI3MCwzMjI4NCwzMjI3NywzMjI4MiwzMjI5MCwzMjI2NywzMjI3MSwzMjI3OCwzMjI2OSwzMjI3NiwzMjI5MywzMjI5MiwzMjU3'@; put 'OSwzMjYzNSwzMjYzNiwzMjYzNCwzMjY4OSwzMjc1MSwzMjgxMCwzMjgwOSwzMjg3NiwzMzIwMSwzMzE5MCwzMzE5OCwzMzIwOSwzMzIwNSwzMzE5NSwzMzIwMCwzMzE5NiwzMzIwNCwzMzIwMiwzMzIwNywzMzE5MSwzMzI2NiwzMzM2NSwzMzM2NiwzMzM2NywzNDEzNCwzNDExNywzNDE1NSwz'@; put 'NDEyNSwzNDEzMSwzNDE0NSwzNDEzNiwzNDExMiwzNDExOCwzNDE0OCwzNDExMywzNDE0NiwzNDExNiwzNDEyOSwzNDExOSwzNDE0NywzNDExMCwzNDEzOSwzNDE2MSwzNDEyNiwzNDE1OCwzNDE2NSwzNDEzMywzNDE1MSwzNDE0NCwzNDE4OCwzNDE1MCwzNDE0MSwzNDEzMiwzNDE0OSwzNDE1'@; put 'NiwzNDQwMywzNDQwNSwzNDQwNCwzNDcxNSwzNDcwMywzNDcxMSwzNDcwNywzNDcwNiwzNDY5NiwzNDY4OSwzNDcxMCwzNDcxMiwzNDY4MSwzNDY5NSwzNDcyMywzNDY5MywzNDcwNCwzNDcwNSwzNDcxNywzNDY5MiwzNDcwOCwzNDcxNiwzNDcxNCwzNDY5NywzNTEwMiwzNTExMCwzNTEyMCwz'@; put 'NTExNywzNTExOCwzNTExMSwzNTEyMSwzNTEwNiwzNTExMywzNTEwNywzNTExOSwzNTExNiwzNTEwMywzNTMxMywzNTU1MiwzNTU1NCwzNTU3MCwzNTU3MiwzNTU3MywzNTU0OSwzNTYwNCwzNTU1NiwzNTU1MSwzNTU2OCwzNTUyOCwzNTU1MCwzNTU1MywzNTU2MCwzNTU4MywzNTU2NywzNTU3'@; put 'OSwzNTk4NSwzNTk4NiwzNTk4NCwzNjA4NSwzNjA3OCwzNjA4MSwzNjA4MCwzNjA4MywzNjIwNCwzNjIwNiwzNjI2MSwzNjI2MywzNjQwMywzNjQxNCwzNjQwOCwzNjQxNiwzNjQyMSwzNjQwNiwzNjQxMiwzNjQxMywzNjQxNywzNjQwMCwzNjQxNSwzNjU0MSwzNjY2MiwzNjY1NCwzNjY2MSwz'@; put 'NjY1OCwzNjY2NSwzNjY2MywzNjY2MCwzNjk4MiwzNjk4NSwzNjk4NywzNjk5OCwzNzExNCwzNzE3MSwzNzE3MywzNzE3NCwzNzI2NywzNzI2NCwzNzI2NSwzNzI2MSwzNzI2MywzNzY3MSwzNzY2MiwzNzY0MCwzNzY2MywzNzYzOCwzNzY0NywzNzc1NCwzNzY4OCwzNzY5MiwzNzY1OSwzNzY2'@; put 'NywzNzY1MCwzNzYzMywzNzcwMiwzNzY3NywzNzY0NiwzNzY0NSwzNzU3OSwzNzY2MSwzNzYyNiwzNzY2OSwzNzY1MSwzNzYyNSwzNzYyMywzNzY4NCwzNzYzNCwzNzY2OCwzNzYzMSwzNzY3MywzNzY4OSwzNzY4NSwzNzY3NCwzNzY1MiwzNzY0NCwzNzY0MywzNzYzMCwzNzY0MSwzNzYzMiwz'@; put 'NzYyNywzNzY1NCwzODMzMiwzODM0OSwzODMzNCwzODMyOSwzODMzMCwzODMyNiwzODMzNSwzODMyNSwzODMzMywzODU2OSwzODYxMiwzODY2NywzODY3NCwzODY3MiwzODgwOSwzODgwNywzODgwNCwzODg5NiwzODkwNCwzODk2NSwzODk1OSwzODk2MiwzOTIwNCwzOTE5OSwzOTIwNywzOTIw'@; put 'OSwzOTMyNiwzOTQwNiwzOTQwNCwzOTM5NywzOTM5NiwzOTQwOCwzOTM5NSwzOTQwMiwzOTQwMSwzOTM5OSwzOTYwOSwzOTYxNSwzOTYwNCwzOTYxMSwzOTY3MCwzOTY3NCwzOTY3MywzOTY3MSwzOTczMSwzOTgwOCwzOTgxMywzOTgxNSwzOTgwNCwzOTgwNiwzOTgwMywzOTgxMCwzOTgyNywz'@; put 'OTgyNiwzOTgyNCwzOTgwMiwzOTgyOSwzOTgwNSwzOTgxNiw0MDIyOSw0MDIxNSw0MDIyNCw0MDIyMiw0MDIxMiw0MDIzMyw0MDIyMSw0MDIxNiw0MDIyNiw0MDIwOCw0MDIxNyw0MDIyMyw0MDU4NCw0MDU4Miw0MDU4Myw0MDYyMiw0MDYyMSw0MDY2MSw0MDY2Miw0MDY5OCw0MDcyMiw0MDc2'@; put 'NSwyMDc3NCwyMDc3MywyMDc3MCwyMDc3MiwyMDc2OCwyMDc3NywyMTIzNiwyMjE2MywyMjE1NiwyMjE1NywyMjE1MCwyMjE0OCwyMjE0NywyMjE0MiwyMjE0NiwyMjE0MywyMjE0NSwyMjc0MiwyMjc0MCwyMjczNSwyMjczOCwyMzM0MSwyMzMzMywyMzM0NiwyMzMzMSwyMzM0MCwyMzMzNSwy'@; put 'MzMzNCwyMzM0MywyMzM0MiwyMzQxOSwyMzUzNywyMzUzOCwyMzk5MSwyNDE3MiwyNDE3MCwyNDUxMCwyNDUwNywyNTAyNywyNTAxMywyNTAyMCwyNTA2MywyNTA1NiwyNTA2MSwyNTA2MCwyNTA2NCwyNTA1NCwyNTgzOSwyNTgzMywyNTgyNywyNTgzNSwyNTgyOCwyNTgzMiwyNTk4NSwyNTk4'@; put 'NCwyNjAzOCwyNjA3NCwyNjMyMiwyNzI3NywyNzI4NiwyNzI2NSwyNzMwMSwyNzI3MywyNzI5NSwyNzI5MSwyNzI5NywyNzI5NCwyNzI3MSwyNzI4MywyNzI3OCwyNzI4NSwyNzI2NywyNzMwNCwyNzMwMCwyNzI4MSwyNzI2MywyNzMwMiwyNzI5MCwyNzI2OSwyNzI3NiwyNzI4MiwyNzQ4Mywy'@; put 'NzU2NSwyNzY1NywyODYyMCwyODU4NSwyODY2MCwyODYyOCwyODY0MywyODYzNiwyODY1MywyODY0NywyODY0NiwyODYzOCwyODY1OCwyODYzNywyODY0MiwyODY0OCwyOTE1MywyOTE2OSwyOTE2MCwyOTE3MCwyOTE1NiwyOTE2OCwyOTE1NCwyOTU1NSwyOTU1MCwyOTU1MSwyOTg0NywyOTg3'@; put 'NCwyOTg2NywyOTg0MCwyOTg2NiwyOTg2OSwyOTg3MywyOTg2MSwyOTg3MSwyOTk2OCwyOTk2OSwyOTk3MCwyOTk2NywzMDA4NCwzMDI3NSwzMDI4MCwzMDI4MSwzMDI3OSwzMDM3MiwzMDQ0MSwzMDY0NSwzMDYzNSwzMDY0MiwzMDY0NywzMDY0NiwzMDY0NCwzMDY0MSwzMDYzMiwzMDcwNCwz'@; put 'MDk2MywzMDk3MywzMDk3OCwzMDk3MSwzMDk3MiwzMDk2MiwzMDk4MSwzMDk2OSwzMDk3NCwzMDk4MCwzMTE0NywzMTE0NCwzMTMyNCwzMTMyMywzMTMxOCwzMTMyMCwzMTMxNiwzMTMyMiwzMTQyMiwzMTQyNCwzMTQyNSwzMTc0OSwzMTc1OSwzMTczMCwzMTc0NCwzMTc0MywzMTczOSwzMTc1'@; put 'OCwzMTczMiwzMTc1NSwzMTczMSwzMTc0NiwzMTc1MywzMTc0NywzMTc0NSwzMTczNiwzMTc0MSwzMTc1MCwzMTcyOCwzMTcyOSwzMTc2MCwzMTc1NCwzMTk3NiwzMjMwMSwzMjMxNiwzMjMyMiwzMjMwNywzODk4NCwzMjMxMiwzMjI5OCwzMjMyOSwzMjMyMCwzMjMyNywzMjI5NywzMjMzMiwz'@; put 'MjMwNCwzMjMxNSwzMjMxMCwzMjMyNCwzMjMxNCwzMjU4MSwzMjYzOSwzMjYzOCwzMjYzNywzMjc1NiwzMjc1NCwzMjgxMiwzMzIxMSwzMzIyMCwzMzIyOCwzMzIyNiwzMzIyMSwzMzIyMywzMzIxMiwzMzI1NywzMzM3MSwzMzM3MCwzMzM3MiwzNDE3OSwzNDE3NiwzNDE5MSwzNDIxNSwzNDE5'@; put 'NywzNDIwOCwzNDE4NywzNDIxMSwzNDE3MSwzNDIxMiwzNDIwMiwzNDIwNiwzNDE2NywzNDE3MiwzNDE4NSwzNDIwOSwzNDE3MCwzNDE2OCwzNDEzNSwzNDE5MCwzNDE5OCwzNDE4MiwzNDE4OSwzNDIwMSwzNDIwNSwzNDE3NywzNDIxMCwzNDE3OCwzNDE4NCwzNDE4MSwzNDE2OSwzNDE2Niwz'@; put 'NDIwMCwzNDE5MiwzNDIwNywzNDQwOCwzNDc1MCwzNDczMCwzNDczMywzNDc1NywzNDczNiwzNDczMiwzNDc0NSwzNDc0MSwzNDc0OCwzNDczNCwzNDc2MSwzNDc1NSwzNDc1NCwzNDc2NCwzNDc0MywzNDczNSwzNDc1NiwzNDc2MiwzNDc0MCwzNDc0MiwzNDc1MSwzNDc0NCwzNDc0OSwzNDc4'@; put 'MiwzNDczOCwzNTEyNSwzNTEyMywzNTEzMiwzNTEzNCwzNTEzNywzNTE1NCwzNTEyNywzNTEzOCwzNTI0NSwzNTI0NywzNTI0NiwzNTMxNCwzNTMxNSwzNTYxNCwzNTYwOCwzNTYwNiwzNTYwMSwzNTU4OSwzNTU5NSwzNTYxOCwzNTU5OSwzNTYwMiwzNTYwNSwzNTU5MSwzNTU5NywzNTU5Miwz'@; put 'NTU5MCwzNTYxMiwzNTYwMywzNTYxMCwzNTkxOSwzNTk1MiwzNTk1NCwzNTk1MywzNTk1MSwzNTk4OSwzNTk4OCwzNjA4OSwzNjIwNywzNjQzMCwzNjQyOSwzNjQzNSwzNjQzMiwzNjQyOCwzNjQyMywzNjY3NSwzNjY3MiwzNjk5NywzNjk5MCwzNzE3NiwzNzI3NCwzNzI4MiwzNzI3NSwzNzI3'@; put 'MywzNzI3OSwzNzI4MSwzNzI3NywzNzI4MCwzNzc5MywzNzc2MywzNzgwNywzNzczMiwzNzcxOCwzNzcwMywzNzc1NiwzNzcyMCwzNzcyNCwzNzc1MCwzNzcwNSwzNzcxMiwzNzcxMywzNzcyOCwzNzc0MSwzNzc3NSwzNzcwOCwzNzczOCwzNzc1MywzNzcxOSwzNzcxNywzNzcxNCwzNzcxMSwz'@; put 'Nzc0NSwzNzc1MSwzNzc1NSwzNzcyOSwzNzcyNiwzNzczMSwzNzczNSwzNzc2MCwzNzcxMCwzNzcyMSwzODM0MywzODMzNiwzODM0NSwzODMzOSwzODM0MSwzODMyNywzODU3NCwzODU3NiwzODU3MiwzODY4OCwzODY4NywzODY4MCwzODY4NSwzODY4MSwzODgxMCwzODgxNywzODgxMiwzODgx'@; put 'NCwzODgxMywzODg2OSwzODg2OCwzODg5NywzODk3NywzODk4MCwzODk4NiwzODk4NSwzODk4MSwzODk3OSwzOTIwNSwzOTIxMSwzOTIxMiwzOTIxMCwzOTIxOSwzOTIxOCwzOTIxNSwzOTIxMywzOTIxNywzOTIxNiwzOTMyMCwzOTMzMSwzOTMyOSwzOTQyNiwzOTQxOCwzOTQxMiwzOTQxNSwz'@; put 'OTQxNywzOTQxNiwzOTQxNCwzOTQxOSwzOTQyMSwzOTQyMiwzOTQyMCwzOTQyNywzOTYxNCwzOTY3OCwzOTY3NywzOTY4MSwzOTY3NiwzOTc1MiwzOTgzNCwzOTg0OCwzOTgzOCwzOTgzNSwzOTg0NiwzOTg0MSwzOTg0NSwzOTg0NCwzOTgxNCwzOTg0MiwzOTg0MCwzOTg1NSw0MDI0Myw0MDI1'@; put 'Nyw0MDI5NSw0MDI0Niw0MDIzOCw0MDIzOSw0MDI0MSw0MDI0OCw0MDI0MCw0MDI2MSw0MDI1OCw0MDI1OSw0MDI1NCw0MDI0Nyw0MDI1Niw0MDI1MywzMjc1Nyw0MDIzNyw0MDU4Niw0MDU4NSw0MDU4OSw0MDYyNCw0MDY0OCw0MDY2Niw0MDY5OSw0MDcwMyw0MDc0MCw0MDczOSw0MDczOCw0'@; put 'MDc4OCw0MDg2NCwyMDc4NSwyMDc4MSwyMDc4MiwyMjE2OCwyMjE3MiwyMjE2NywyMjE3MCwyMjE3MywyMjE2OSwyMjg5NiwyMzM1NiwyMzY1NywyMzY1OCwyNGUzLDI0MTczLDI0MTc0LDI1MDQ4LDI1MDU1LDI1MDY5LDI1MDcwLDI1MDczLDI1MDY2LDI1MDcyLDI1MDY3LDI1MDQ2LDI1MDY1'@; put 'LDI1ODU1LDI1ODYwLDI1ODUzLDI1ODQ4LDI1ODU3LDI1ODU5LDI1ODUyLDI2MDA0LDI2MDc1LDI2MzMwLDI2MzMxLDI2MzI4LDI3MzMzLDI3MzIxLDI3MzI1LDI3MzYxLDI3MzM0LDI3MzIyLDI3MzE4LDI3MzE5LDI3MzM1LDI3MzE2LDI3MzA5LDI3NDg2LDI3NTkzLDI3NjU5LDI4Njc5LDI4'@; put 'Njg0LDI4Njg1LDI4NjczLDI4Njc3LDI4NjkyLDI4Njg2LDI4NjcxLDI4NjcyLDI4NjY3LDI4NzEwLDI4NjY4LDI4NjYzLDI4NjgyLDI5MTg1LDI5MTgzLDI5MTc3LDI5MTg3LDI5MTgxLDI5NTU4LDI5ODgwLDI5ODg4LDI5ODc3LDI5ODg5LDI5ODg2LDI5ODc4LDI5ODgzLDI5ODkwLDI5OTcy'@; put 'LDI5OTcxLDMwMzAwLDMwMzA4LDMwMjk3LDMwMjg4LDMwMjkxLDMwMjk1LDMwMjk4LDMwMzc0LDMwMzk3LDMwNDQ0LDMwNjU4LDMwNjUwLDMwOTc1LDMwOTg4LDMwOTk1LDMwOTk2LDMwOTg1LDMwOTkyLDMwOTk0LDMwOTkzLDMxMTQ5LDMxMTQ4LDMxMzI3LDMxNzcyLDMxNzg1LDMxNzY5LDMx'@; put 'Nzc2LDMxNzc1LDMxNzg5LDMxNzczLDMxNzgyLDMxNzg0LDMxNzc4LDMxNzgxLDMxNzkyLDMyMzQ4LDMyMzM2LDMyMzQyLDMyMzU1LDMyMzQ0LDMyMzU0LDMyMzUxLDMyMzM3LDMyMzUyLDMyMzQzLDMyMzM5LDMyNjkzLDMyNjkxLDMyNzU5LDMyNzYwLDMyODg1LDMzMjMzLDMzMjM0LDMzMjMy'@; put 'LDMzMzc1LDMzMzc0LDM0MjI4LDM0MjQ2LDM0MjQwLDM0MjQzLDM0MjQyLDM0MjI3LDM0MjI5LDM0MjM3LDM0MjQ3LDM0MjQ0LDM0MjM5LDM0MjUxLDM0MjU0LDM0MjQ4LDM0MjQ1LDM0MjI1LDM0MjMwLDM0MjU4LDM0MzQwLDM0MjMyLDM0MjMxLDM0MjM4LDM0NDA5LDM0NzkxLDM0NzkwLDM0'@; put 'Nzg2LDM0Nzc5LDM0Nzk1LDM0Nzk0LDM0Nzg5LDM0NzgzLDM0ODAzLDM0Nzg4LDM0NzcyLDM0NzgwLDM0NzcxLDM0Nzk3LDM0Nzc2LDM0Nzg3LDM0NzI0LDM0Nzc1LDM0Nzc3LDM0ODE3LDM0ODA0LDM0NzkyLDM0NzgxLDM1MTU1LDM1MTQ3LDM1MTUxLDM1MTQ4LDM1MTQyLDM1MTUyLDM1MTUz'@; put 'LDM1MTQ1LDM1NjI2LDM1NjIzLDM1NjE5LDM1NjM1LDM1NjMyLDM1NjM3LDM1NjU1LDM1NjMxLDM1NjQ0LDM1NjQ2LDM1NjMzLDM1NjIxLDM1NjM5LDM1NjIyLDM1NjM4LDM1NjMwLDM1NjIwLDM1NjQzLDM1NjQ1LDM1NjQyLDM1OTA2LDM1OTU3LDM1OTkzLDM1OTkyLDM1OTkxLDM2MDk0LDM2'@; put 'MTAwLDM2MDk4LDM2MDk2LDM2NDQ0LDM2NDUwLDM2NDQ4LDM2NDM5LDM2NDM4LDM2NDQ2LDM2NDUzLDM2NDU1LDM2NDQzLDM2NDQyLDM2NDQ5LDM2NDQ1LDM2NDU3LDM2NDM2LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgzLDM3MTYwLDM3MTc4LDM3MTc5LDM3MTgyLDM3Mjg4LDM3Mjg1LDM3Mjg3'@; put 'LDM3Mjk1LDM3MjkwLDM3ODEzLDM3NzcyLDM3Nzc4LDM3ODE1LDM3Nzg3LDM3Nzg5LDM3NzY5LDM3Nzk5LDM3Nzc0LDM3ODAyLDM3NzkwLDM3Nzk4LDM3NzgxLDM3NzY4LDM3Nzg1LDM3NzkxLDM3NzczLDM3ODA5LDM3Nzc3LDM3ODEwLDM3Nzk2LDM3ODAwLDM3ODEyLDM3Nzk1LDM3Nzk3LDM4'@; put 'MzU0LDM4MzU1LDM4MzUzLDM4NTc5LDM4NjE1LDM4NjE4LDI0MDAyLDM4NjIzLDM4NjE2LDM4NjIxLDM4NjkxLDM4NjkwLDM4NjkzLDM4ODI4LDM4ODMwLDM4ODI0LDM4ODI3LDM4ODIwLDM4ODI2LDM4ODE4LDM4ODIxLDM4ODcxLDM4ODczLDM4ODcwLDM4ODcyLDM4OTA2LDM4OTkyLDM4OTkz'@; put 'LDM4OTk0LDM5MDk2LDM5MjMzLDM5MjI4LDM5MjI2LDM5NDM5LDM5NDM1LDM5NDMzLDM5NDM3LDM5NDI4LDM5NDQxLDM5NDM0LDM5NDI5LDM5NDMxLDM5NDMwLDM5NjE2LDM5NjQ0LDM5Njg4LDM5Njg0LDM5Njg1LDM5NzIxLDM5NzMzLDM5NzU0LDM5NzU2LDM5NzU1LDM5ODc5LDM5ODc4LDM5'@; put 'ODc1LDM5ODcxLDM5ODczLDM5ODYxLDM5ODY0LDM5ODkxLDM5ODYyLDM5ODc2LDM5ODY1LDM5ODY5LDQwMjg0LDQwMjc1LDQwMjcxLDQwMjY2LDQwMjgzLDQwMjY3LDQwMjgxLDQwMjc4LDQwMjY4LDQwMjc5LDQwMjc0LDQwMjc2LDQwMjg3LDQwMjgwLDQwMjgyLDQwNTkwLDQwNTg4LDQwNjcx'@; put 'LDQwNzA1LDQwNzA0LDQwNzI2LDQwNzQxLDQwNzQ3LDQwNzQ2LDQwNzQ1LDQwNzQ0LDQwNzgwLDQwNzg5LDIwNzg4LDIwNzg5LDIxMTQyLDIxMjM5LDIxNDI4LDIyMTg3LDIyMTg5LDIyMTgyLDIyMTgzLDIyMTg2LDIyMTg4LDIyNzQ2LDIyNzQ5LDIyNzQ3LDIyODAyLDIzMzU3LDIzMzU4LDIz'@; put 'MzU5LDI0MDAzLDI0MTc2LDI0NTExLDI1MDgzLDI1ODYzLDI1ODcyLDI1ODY5LDI1ODY1LDI1ODY4LDI1ODcwLDI1OTg4LDI2MDc4LDI2MDc3LDI2MzM0LDI3MzY3LDI3MzYwLDI3MzQwLDI3MzQ1LDI3MzUzLDI3MzM5LDI3MzU5LDI3MzU2LDI3MzQ0LDI3MzcxLDI3MzQzLDI3MzQxLDI3MzU4'@; put 'LDI3NDg4LDI3NTY4LDI3NjYwLDI4Njk3LDI4NzExLDI4NzA0LDI4Njk0LDI4NzE1LDI4NzA1LDI4NzA2LDI4NzA3LDI4NzEzLDI4Njk1LDI4NzA4LDI4NzAwLDI4NzE0LDI5MTk2LDI5MTk0LDI5MTkxLDI5MTg2LDI5MTg5LDI5MzQ5LDI5MzUwLDI5MzQ4LDI5MzQ3LDI5MzQ1LDI5ODk5LDI5'@; put 'ODkzLDI5ODc5LDI5ODkxLDI5OTc0LDMwMzA0LDMwNjY1LDMwNjY2LDMwNjYwLDMwNzA1LDMxMDA1LDMxMDAzLDMxMDA5LDMxMDA0LDMwOTk5LDMxMDA2LDMxMTUyLDMxMzM1LDMxMzM2LDMxNzk1LDMxODA0LDMxODAxLDMxNzg4LDMxODAzLDMxOTgwLDMxOTc4LDMyMzc0LDMyMzczLDMyMzc2'@; put 'LDMyMzY4LDMyMzc1LDMyMzY3LDMyMzc4LDMyMzcwLDMyMzcyLDMyMzYwLDMyNTg3LDMyNTg2LDMyNjQzLDMyNjQ2LDMyNjk1LDMyNzY1LDMyNzY2LDMyODg4LDMzMjM5LDMzMjM3LDMzMzgwLDMzMzc3LDMzMzc5LDM0MjgzLDM0Mjg5LDM0Mjg1LDM0MjY1LDM0MjczLDM0MjgwLDM0MjY2LDM0'@; put 'MjYzLDM0Mjg0LDM0MjkwLDM0Mjk2LDM0MjY0LDM0MjcxLDM0Mjc1LDM0MjY4LDM0MjU3LDM0Mjg4LDM0Mjc4LDM0Mjg3LDM0MjcwLDM0Mjc0LDM0ODE2LDM0ODEwLDM0ODE5LDM0ODA2LDM0ODA3LDM0ODI1LDM0ODI4LDM0ODI3LDM0ODIyLDM0ODEyLDM0ODI0LDM0ODE1LDM0ODI2LDM0ODE4'@; put 'LDM1MTcwLDM1MTYyLDM1MTYzLDM1MTU5LDM1MTY5LDM1MTY0LDM1MTYwLDM1MTY1LDM1MTYxLDM1MjA4LDM1MjU1LDM1MjU0LDM1MzE4LDM1NjY0LDM1NjU2LDM1NjU4LDM1NjQ4LDM1NjY3LDM1NjcwLDM1NjY4LDM1NjU5LDM1NjY5LDM1NjY1LDM1NjUwLDM1NjY2LDM1NjcxLDM1OTA3LDM1'@; put 'OTU5LDM1OTU4LDM1OTk0LDM2MTAyLDM2MTAzLDM2MTA1LDM2MjY4LDM2MjY2LDM2MjY5LDM2MjY3LDM2NDYxLDM2NDcyLDM2NDY3LDM2NDU4LDM2NDYzLDM2NDc1LDM2NTQ2LDM2NjkwLDM2Njg5LDM2Njg3LDM2Njg4LDM2NjkxLDM2Nzg4LDM3MTg0LDM3MTgzLDM3Mjk2LDM3MjkzLDM3ODU0'@; put 'LDM3ODMxLDM3ODM5LDM3ODI2LDM3ODUwLDM3ODQwLDM3ODgxLDM3ODY4LDM3ODM2LDM3ODQ5LDM3ODAxLDM3ODYyLDM3ODM0LDM3ODQ0LDM3ODcwLDM3ODU5LDM3ODQ1LDM3ODI4LDM3ODM4LDM3ODI0LDM3ODQyLDM3ODYzLDM4MjY5LDM4MzYyLDM4MzYzLDM4NjI1LDM4Njk3LDM4Njk5LDM4'@; put 'NzAwLDM4Njk2LDM4Njk0LDM4ODM1LDM4ODM5LDM4ODM4LDM4ODc3LDM4ODc4LDM4ODc5LDM5MDA0LDM5MDAxLDM5MDA1LDM4OTk5LDM5MTAzLDM5MTAxLDM5MDk5LDM5MTAyLDM5MjQwLDM5MjM5LDM5MjM1LDM5MzM0LDM5MzM1LDM5NDUwLDM5NDQ1LDM5NDYxLDM5NDUzLDM5NDYwLDM5NDUx'@; put 'LDM5NDU4LDM5NDU2LDM5NDYzLDM5NDU5LDM5NDU0LDM5NDUyLDM5NDQ0LDM5NjE4LDM5NjkxLDM5NjkwLDM5Njk0LDM5NjkyLDM5NzM1LDM5OTE0LDM5OTE1LDM5OTA0LDM5OTAyLDM5OTA4LDM5OTEwLDM5OTA2LDM5OTIwLDM5ODkyLDM5ODk1LDM5OTE2LDM5OTAwLDM5ODk3LDM5OTA5LDM5'@; put 'ODkzLDM5OTA1LDM5ODk4LDQwMzExLDQwMzIxLDQwMzMwLDQwMzI0LDQwMzI4LDQwMzA1LDQwMzIwLDQwMzEyLDQwMzI2LDQwMzMxLDQwMzMyLDQwMzE3LDQwMjk5LDQwMzA4LDQwMzA5LDQwMzA0LDQwMjk3LDQwMzI1LDQwMzA3LDQwMzE1LDQwMzIyLDQwMzAzLDQwMzEzLDQwMzE5LDQwMzI3'@; put 'LDQwMjk2LDQwNTk2LDQwNTkzLDQwNjQwLDQwNzAwLDQwNzQ5LDQwNzY4LDQwNzY5LDQwNzgxLDQwNzkwLDQwNzkxLDQwNzkyLDIxMzAzLDIyMTk0LDIyMTk3LDIyMTk1LDIyNzU1LDIzMzY1LDI0MDA2LDI0MDA3LDI0MzAyLDI0MzAzLDI0NTEyLDI0NTEzLDI1MDgxLDI1ODc5LDI1ODc4LDI1'@; put 'ODc3LDI1ODc1LDI2MDc5LDI2MzQ0LDI2MzM5LDI2MzQwLDI3Mzc5LDI3Mzc2LDI3MzcwLDI3MzY4LDI3Mzg1LDI3Mzc3LDI3Mzc0LDI3Mzc1LDI4NzMyLDI4NzI1LDI4NzE5LDI4NzI3LDI4NzI0LDI4NzIxLDI4NzM4LDI4NzI4LDI4NzM1LDI4NzMwLDI4NzI5LDI4NzM2LDI4NzMxLDI4NzIz'@; put 'LDI4NzM3LDI5MjAzLDI5MjA0LDI5MzUyLDI5NTY1LDI5NTY0LDI5ODgyLDMwMzc5LDMwMzc4LDMwMzk4LDMwNDQ1LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjY5LDMwNzA2LDMxMDEzLDMxMDExLDMxMDE1LDMxMDE2LDMxMDEyLDMxMDE3LDMxMTU0LDMxMzQyLDMxMzQwLDMxMzQxLDMxNDc5LDMx'@; put 'ODE3LDMxODE2LDMxODE4LDMxODE1LDMxODEzLDMxOTgyLDMyMzc5LDMyMzgyLDMyMzg1LDMyMzg0LDMyNjk4LDMyNzY3LDMyODg5LDMzMjQzLDMzMjQxLDMzMjkxLDMzMzg0LDMzMzg1LDM0MzM4LDM0MzAzLDM0MzA1LDM0MzAyLDM0MzMxLDM0MzA0LDM0Mjk0LDM0MzA4LDM0MzEzLDM0MzA5'@; put 'LDM0MzE2LDM0MzAxLDM0ODQxLDM0ODMyLDM0ODMzLDM0ODM5LDM0ODM1LDM0ODM4LDM1MTcxLDM1MTc0LDM1MjU3LDM1MzE5LDM1NjgwLDM1NjkwLDM1Njc3LDM1Njg4LDM1NjgzLDM1Njg1LDM1Njg3LDM1NjkzLDM2MjcwLDM2NDg2LDM2NDg4LDM2NDg0LDM2Njk3LDM2Njk0LDM2Njk1LDM2'@; put 'NjkzLDM2Njk2LDM2Njk4LDM3MDA1LDM3MTg3LDM3MTg1LDM3MzAzLDM3MzAxLDM3Mjk4LDM3Mjk5LDM3ODk5LDM3OTA3LDM3ODgzLDM3OTIwLDM3OTAzLDM3OTA4LDM3ODg2LDM3OTA5LDM3OTA0LDM3OTI4LDM3OTEzLDM3OTAxLDM3ODc3LDM3ODg4LDM3ODc5LDM3ODk1LDM3OTAyLDM3OTEw'@; put 'LDM3OTA2LDM3ODgyLDM3ODk3LDM3ODgwLDM3ODk4LDM3ODg3LDM3ODg0LDM3OTAwLDM3ODc4LDM3OTA1LDM3ODk0LDM4MzY2LDM4MzY4LDM4MzY3LDM4NzAyLDM4NzAzLDM4ODQxLDM4ODQzLDM4OTA5LDM4OTEwLDM5MDA4LDM5MDEwLDM5MDExLDM5MDA3LDM5MTA1LDM5MTA2LDM5MjQ4LDM5'@; put 'MjQ2LDM5MjU3LDM5MjQ0LDM5MjQzLDM5MjUxLDM5NDc0LDM5NDc2LDM5NDczLDM5NDY4LDM5NDY2LDM5NDc4LDM5NDY1LDM5NDcwLDM5NDgwLDM5NDY5LDM5NjIzLDM5NjI2LDM5NjIyLDM5Njk2LDM5Njk4LDM5Njk3LDM5OTQ3LDM5OTQ0LDM5OTI3LDM5OTQxLDM5OTU0LDM5OTI4LDRlNCwz'@; put 'OTk0MywzOTk1MCwzOTk0MiwzOTk1OSwzOTk1NiwzOTk0NSw0MDM1MSw0MDM0NSw0MDM1Niw0MDM0OSw0MDMzOCw0MDM0NCw0MDMzNiw0MDM0Nyw0MDM1Miw0MDM0MCw0MDM0OCw0MDM2Miw0MDM0Myw0MDM1Myw0MDM0Niw0MDM1NCw0MDM2MCw0MDM1MCw0MDM1NSw0MDM4Myw0MDM2MSw0MDM0'@; put 'Miw0MDM1OCw0MDM1OSw0MDYwMSw0MDYwMyw0MDYwMiw0MDY3Nyw0MDY3Niw0MDY3OSw0MDY3OCw0MDc1Miw0MDc1MCw0MDc5NSw0MDgwMCw0MDc5OCw0MDc5Nyw0MDc5Myw0MDg0OSwyMDc5NCwyMDc5MywyMTE0NCwyMTE0MywyMjIxMSwyMjIwNSwyMjIwNiwyMzM2OCwyMzM2NywyNDAxMSwy'@; put 'NDAxNSwyNDMwNSwyNTA4NSwyNTg4MywyNzM5NCwyNzM4OCwyNzM5NSwyNzM4NCwyNzM5MiwyODczOSwyODc0MCwyODc0NiwyODc0NCwyODc0NSwyODc0MSwyODc0MiwyOTIxMywyOTIxMCwyOTIwOSwyOTU2NiwyOTk3NSwzMDMxNCwzMDY3MiwzMTAyMSwzMTAyNSwzMTAyMywzMTgyOCwzMTgy'@; put 'NywzMTk4NiwzMjM5NCwzMjM5MSwzMjM5MiwzMjM5NSwzMjM5MCwzMjM5NywzMjU4OSwzMjY5OSwzMjgxNiwzMzI0NSwzNDMyOCwzNDM0NiwzNDM0MiwzNDMzNSwzNDMzOSwzNDMzMiwzNDMyOSwzNDM0MywzNDM1MCwzNDMzNywzNDMzNiwzNDM0NSwzNDMzNCwzNDM0MSwzNDg1NywzNDg0NSwz'@; put 'NDg0MywzNDg0OCwzNDg1MiwzNDg0NCwzNDg1OSwzNDg5MCwzNTE4MSwzNTE3NywzNTE4MiwzNTE3OSwzNTMyMiwzNTcwNSwzNTcwNCwzNTY1MywzNTcwNiwzNTcwNywzNjExMiwzNjExNiwzNjI3MSwzNjQ5NCwzNjQ5MiwzNjcwMiwzNjY5OSwzNjcwMSwzNzE5MCwzNzE4OCwzNzE4OSwzNzMw'@; put 'NSwzNzk1MSwzNzk0NywzNzk0MiwzNzkyOSwzNzk0OSwzNzk0OCwzNzkzNiwzNzk0NSwzNzkzMCwzNzk0MywzNzkzMiwzNzk1MiwzNzkzNywzODM3MywzODM3MiwzODM3MSwzODcwOSwzODcxNCwzODg0NywzODg4MSwzOTAxMiwzOTExMywzOTExMCwzOTEwNCwzOTI1NiwzOTI1NCwzOTQ4MSwz'@; put 'OTQ4NSwzOTQ5NCwzOTQ5MiwzOTQ5MCwzOTQ4OSwzOTQ4MiwzOTQ4NywzOTYyOSwzOTcwMSwzOTcwMywzOTcwNCwzOTcwMiwzOTczOCwzOTc2MiwzOTk3OSwzOTk2NSwzOTk2NCwzOTk4MCwzOTk3MSwzOTk3NiwzOTk3NywzOTk3MiwzOTk2OSw0MDM3NSw0MDM3NCw0MDM4MCw0MDM4NSw0MDM5'@; put 'MSw0MDM5NCw0MDM5OSw0MDM4Miw0MDM4OSw0MDM4Nyw0MDM3OSw0MDM3Myw0MDM5OCw0MDM3Nyw0MDM3OCw0MDM2NCw0MDM5Miw0MDM2OSw0MDM2NSw0MDM5Niw0MDM3MSw0MDM5Nyw0MDM3MCw0MDU3MCw0MDYwNCw0MDY4Myw0MDY4Niw0MDY4NSw0MDczMSw0MDcyOCw0MDczMCw0MDc1Myw0'@; put 'MDc4Miw0MDgwNSw0MDgwNCw0MDg1MCwyMDE1MywyMjIxNCwyMjIxMywyMjIxOSwyMjg5NywyMzM3MSwyMzM3MiwyNDAyMSwyNDAxNywyNDMwNiwyNTg4OSwyNTg4OCwyNTg5NCwyNTg5MCwyNzQwMywyNzQwMCwyNzQwMSwyNzY2MSwyODc1NywyODc1OCwyODc1OSwyODc1NCwyOTIxNCwyOTIx'@; put 'NSwyOTM1MywyOTU2NywyOTkxMiwyOTkwOSwyOTkxMywyOTkxMSwzMDMxNywzMDM4MSwzMTAyOSwzMTE1NiwzMTM0NCwzMTM0NSwzMTgzMSwzMTgzNiwzMTgzMywzMTgzNSwzMTgzNCwzMTk4OCwzMTk4NSwzMjQwMSwzMjU5MSwzMjY0NywzMzI0NiwzMzM4NywzNDM1NiwzNDM1NywzNDM1NSwz'@; put 'NDM0OCwzNDM1NCwzNDM1OCwzNDg2MCwzNDg1NiwzNDg1NCwzNDg1OCwzNDg1MywzNTE4NSwzNTI2MywzNTI2MiwzNTMyMywzNTcxMCwzNTcxNiwzNTcxNCwzNTcxOCwzNTcxNywzNTcxMSwzNjExNywzNjUwMSwzNjUwMCwzNjUwNiwzNjQ5OCwzNjQ5NiwzNjUwMiwzNjUwMywzNjcwNCwzNjcw'@; put 'NiwzNzE5MSwzNzk2NCwzNzk2OCwzNzk2MiwzNzk2MywzNzk2NywzNzk1OSwzNzk1NywzNzk2MCwzNzk2MSwzNzk1OCwzODcxOSwzODg4MywzOTAxOCwzOTAxNywzOTExNSwzOTI1MiwzOTI1OSwzOTUwMiwzOTUwNywzOTUwOCwzOTUwMCwzOTUwMywzOTQ5NiwzOTQ5OCwzOTQ5NywzOTUwNiwz'@; put 'OTUwNCwzOTYzMiwzOTcwNSwzOTcyMywzOTczOSwzOTc2NiwzOTc2NSw0MDAwNiw0MDAwOCwzOTk5OSw0MDAwNCwzOTk5MywzOTk4Nyw0MDAwMSwzOTk5NiwzOTk5MSwzOTk4OCwzOTk4NiwzOTk5NywzOTk5MCw0MDQxMSw0MDQwMiw0MDQxNCw0MDQxMCw0MDM5NSw0MDQwMCw0MDQxMiw0MDQw'@; put 'MSw0MDQxNSw0MDQyNSw0MDQwOSw0MDQwOCw0MDQwNiw0MDQzNyw0MDQwNSw0MDQxMyw0MDYzMCw0MDY4OCw0MDc1Nyw0MDc1NSw0MDc1NCw0MDc3MCw0MDgxMSw0MDg1Myw0MDg2NiwyMDc5NywyMTE0NSwyMjc2MCwyMjc1OSwyMjg5OCwyMzM3MywyNDAyNCwzNDg2MywyNDM5OSwyNTA4OSwy'@; put 'NTA5MSwyNTA5MiwyNTg5NywyNTg5MywyNjAwNiwyNjM0NywyNzQwOSwyNzQxMCwyNzQwNywyNzU5NCwyODc2MywyODc2MiwyOTIxOCwyOTU3MCwyOTU2OSwyOTU3MSwzMDMyMCwzMDY3NiwzMTg0NywzMTg0NiwzMjQwNSwzMzM4OCwzNDM2MiwzNDM2OCwzNDM2MSwzNDM2NCwzNDM1MywzNDM2'@; put 'MywzNDM2NiwzNDg2NCwzNDg2NiwzNDg2MiwzNDg2NywzNTE5MCwzNTE4OCwzNTE4NywzNTMyNiwzNTcyNCwzNTcyNiwzNTcyMywzNTcyMCwzNTkwOSwzNjEyMSwzNjUwNCwzNjcwOCwzNjcwNywzNzMwOCwzNzk4NiwzNzk3MywzNzk4MSwzNzk3NSwzNzk4MiwzODg1MiwzODg1MywzODkxMiwz'@; put 'OTUxMCwzOTUxMywzOTcxMCwzOTcxMSwzOTcxMiw0MDAxOCw0MDAyNCw0MDAxNiw0MDAxMCw0MDAxMyw0MDAxMSw0MDAyMSw0MDAyNSw0MDAxMiw0MDAxNCw0MDQ0Myw0MDQzOSw0MDQzMSw0MDQxOSw0MDQyNyw0MDQ0MCw0MDQyMCw0MDQzOCw0MDQxNyw0MDQzMCw0MDQyMiw0MDQzNCw0MDQz'@; put 'Miw0MDQxOCw0MDQyOCw0MDQzNiw0MDQzNSw0MDQyNCw0MDQyOSw0MDY0Miw0MDY1Niw0MDY5MCw0MDY5MSw0MDcxMCw0MDczMiw0MDc2MCw0MDc1OSw0MDc1OCw0MDc3MSw0MDc4Myw0MDgxNyw0MDgxNiw0MDgxNCw0MDgxNSwyMjIyNywyMjIyMSwyMzM3NCwyMzY2MSwyNTkwMSwyNjM0OSwy'@; put 'NjM1MCwyNzQxMSwyODc2NywyODc2OSwyODc2NSwyODc2OCwyOTIxOSwyOTkxNSwyOTkyNSwzMDY3NywzMTAzMiwzMTE1OSwzMTE1OCwzMTg1MCwzMjQwNywzMjY0OSwzMzM4OSwzNDM3MSwzNDg3MiwzNDg3MSwzNDg2OSwzNDg5MSwzNTczMiwzNTczMywzNjUxMCwzNjUxMSwzNjUxMiwzNjUw'@; put 'OSwzNzMxMCwzNzMwOSwzNzMxNCwzNzk5NSwzNzk5MiwzNzk5MywzODYyOSwzODcyNiwzODcyMywzODcyNywzODg1NSwzODg4NSwzOTUxOCwzOTYzNywzOTc2OSw0MDAzNSw0MDAzOSw0MDAzOCw0MDAzNCw0MDAzMCw0MDAzMiw0MDQ1MCw0MDQ0Niw0MDQ1NSw0MDQ1MSw0MDQ1NCw0MDQ1Myw0'@; put 'MDQ0OCw0MDQ0OSw0MDQ1Nyw0MDQ0Nyw0MDQ0NSw0MDQ1Miw0MDYwOCw0MDczNCw0MDc3NCw0MDgyMCw0MDgyMSw0MDgyMiwyMjIyOCwyNTkwMiwyNjA0MCwyNzQxNiwyNzQxNywyNzQxNSwyNzQxOCwyODc3MCwyOTIyMiwyOTM1NCwzMDY4MCwzMDY4MSwzMTAzMywzMTg0OSwzMTg1MSwzMTk5'@; put 'MCwzMjQxMCwzMjQwOCwzMjQxMSwzMjQwOSwzMzI0OCwzMzI0OSwzNDM3NCwzNDM3NSwzNDM3NiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NSwzNTMyNywzNTczNiwzNTczNywzNjUxNywzNjUxNiwzNjUxNSwzNzk5OCwzNzk5NywzNzk5OSwzODAwMSwzODAwMywzODcyOSwzOTAyNiwzOTI2Myw0'@; put 'MDA0MCw0MDA0Niw0MDA0NSw0MDQ1OSw0MDQ2MSw0MDQ2NCw0MDQ2Myw0MDQ2Niw0MDQ2NSw0MDYwOSw0MDY5Myw0MDcxMyw0MDc3NSw0MDgyNCw0MDgyNyw0MDgyNiw0MDgyNSwyMjMwMiwyODc3NCwzMTg1NSwzNDg3NiwzNjI3NCwzNjUxOCwzNzMxNSwzODAwNCwzODAwOCwzODAwNiwzODAw'@; put 'NSwzOTUyMCw0MDA1Miw0MDA1MSw0MDA0OSw0MDA1Myw0MDQ2OCw0MDQ2Nyw0MDY5NCw0MDcxNCw0MDg2OCwyODc3NiwyODc3MywzMTk5MSwzNDQxMCwzNDg3OCwzNDg3NywzNDg3OSwzNTc0MiwzNTk5NiwzNjUyMSwzNjU1MywzODczMSwzOTAyNywzOTAyOCwzOTExNiwzOTI2NSwzOTMzOSwz'@; put 'OTUyNCwzOTUyNiwzOTUyNywzOTcxNiw0MDQ2OSw0MDQ3MSw0MDc3NiwyNTA5NSwyNzQyMiwyOTIyMywzNDM4MCwzNjUyMCwzODAxOCwzODAxNiwzODAxNywzOTUyOSwzOTUyOCwzOTcyNiw0MDQ3MywyOTIyNSwzNDM3OSwzNTc0MywzODAxOSw0MDA1Nyw0MDYzMSwzMDMyNSwzOTUzMSw0MDA1'@; put 'OCw0MDQ3NywyODc3NywyODc3OCw0MDYxMiw0MDgzMCw0MDc3Nyw0MDg1NiwzMDg0OSwzNzU2MSwzNTAyMywyMjcxNSwyNDY1OCwzMTkxMSwyMzI5MCw5NTU2LDk1NzQsOTU1OSw5NTY4LDk1ODAsOTU3MSw5NTYyLDk1NzcsOTU2NSw5NTU0LDk1NzIsOTU1Nyw5NTY2LDk1NzgsOTU2OSw5NTYw'@; put 'LDk1NzUsOTU2Myw5NTU1LDk1NzMsOTU1OCw5NTY3LDk1NzksOTU3MCw5NTYxLDk1NzYsOTU2NCw5NTUzLDk1NTIsOTU4MSw5NTgyLDk1ODQsOTU4Myw2NTUxNywxMzI0MjMsMzc1OTUsMTMyNTc1LDE0NzM5NywzNDEyNCwxNzA3NywyOTY3OSwyMDkxNywxMzg5NywxNDk4MjYsMTY2MzcyLDM3'@; put 'NzAwLDEzNzY5MSwzMzUxOCwxNDY2MzIsMzA3ODAsMjY0MzYsMjUzMTEsMTQ5ODExLDE2NjMxNCwxMzE3NDQsMTU4NjQzLDEzNTk0MSwyMDM5NSwxNDA1MjUsMjA0ODgsMTU5MDE3LDE2MjQzNiwxNDQ4OTYsMTUwMTkzLDE0MDU2MywyMDUyMSwxMzE5NjYsMjQ0ODQsMTMxOTY4LDEzMTkxMSwy'@; put 'ODM3OSwxMzIxMjcsMjA2MDUsMjA3MzcsMTM0MzQsMjA3NTAsMzkwMjAsMTQxNDcsMzM4MTQsMTQ5OTI0LDEzMjIzMSwyMDgzMiwxNDQzMDgsMjA4NDIsMTM0MTQzLDEzOTUxNiwxMzE4MTMsMTQwNTkyLDEzMjQ5NCwxNDM5MjMsMTM3NjAzLDIzNDI2LDM0Njg1LDEzMjUzMSwxNDY1ODUsMjA5'@; put 'MTQsMjA5MjAsNDAyNDQsMjA5MzcsMjA5NDMsMjA5NDUsMTU1ODAsMjA5NDcsMTUwMTgyLDIwOTE1LDIwOTYyLDIxMzE0LDIwOTczLDMzNzQxLDI2OTQyLDE0NTE5NywyNDQ0MywyMTAwMywyMTAzMCwyMTA1MiwyMTE3MywyMTA3OSwyMTE0MCwyMTE3NywyMTE4OSwzMTc2NSwzNDExNCwyMTIx'@; put 'NiwzNDMxNywxNTg0ODMsMjEyNTMsMTY2NjIyLDIxODMzLDI4Mzc3LDE0NzMyOCwxMzM0NjAsMTQ3NDM2LDIxMjk5LDIxMzE2LDEzNDExNCwyNzg1MSwxMzY5OTgsMjY2NTEsMjk2NTMsMjQ2NTAsMTYwNDIsMTQ1NDAsMTM2OTM2LDI5MTQ5LDE3NTcwLDIxMzU3LDIxMzY0LDE2NTU0NywyMTM3'@; put 'NCwyMTM3NSwxMzY1OTgsMTM2NzIzLDMwNjk0LDIxMzk1LDE2NjU1NSwyMTQwOCwyMTQxOSwyMTQyMiwyOTYwNywxNTM0NTgsMTYyMTcsMjk1OTYsMjE0NDEsMjE0NDUsMjc3MjEsMjAwNDEsMjI1MjYsMjE0NjUsMTUwMTksMTM0MDMxLDIxNDcyLDE0NzQzNSwxNDI3NTUsMjE0OTQsMTM0MjYz'@; put 'LDIxNTIzLDI4NzkzLDIxODAzLDI2MTk5LDI3OTk1LDIxNjEzLDE1ODU0NywxMzQ1MTYsMjE4NTMsMjE2NDcsMjE2NjgsMTgzNDIsMTM2OTczLDEzNDg3NywxNTc5NiwxMzQ0NzcsMTY2MzMyLDE0MDk1MiwyMTgzMSwxOTY5MywyMTU1MSwyOTcxOSwyMTg5NCwyMTkyOSwyMjAyMSwxMzc0MzEs'@; put 'MTQ3NTE0LDE3NzQ2LDE0ODUzMywyNjI5MSwxMzUzNDgsMjIwNzEsMjYzMTcsMTQ0MDEwLDI2Mjc2LDI2Mjg1LDIyMDkzLDIyMDk1LDMwOTYxLDIyMjU3LDM4NzkxLDIxNTAyLDIyMjcyLDIyMjU1LDIyMjUzLDE2Njc1OCwxMzg1OSwxMzU3NTksMjIzNDIsMTQ3ODc3LDI3NzU4LDI4ODExLDIy'@; put 'MzM4LDE0MDAxLDE1ODg0NiwyMjUwMiwxMzYyMTQsMjI1MzEsMTM2Mjc2LDE0ODMyMywyMjU2NiwxNTA1MTcsMjI2MjAsMjI2OTgsMTM2NjUsMjI3NTIsMjI3NDgsMTM1NzQwLDIyNzc5LDIzNTUxLDIyMzM5LDE3MjM2OCwxNDgwODgsMzc4NDMsMTM3MjksMjI4MTUsMjY3OTAsMTQwMTksMjgy'@; put 'NDksMTM2NzY2LDIzMDc2LDIxODQzLDEzNjg1MCwzNDA1MywyMjk4NSwxMzQ0NzgsMTU4ODQ5LDE1OTAxOCwxMzcxODAsMjMwMDEsMTM3MjExLDEzNzEzOCwxNTkxNDIsMjgwMTcsMTM3MjU2LDEzNjkxNywyMzAzMywxNTkzMDEsMjMyMTEsMjMxMzksMTQwNTQsMTQ5OTI5LDIzMTU5LDE0MDg4'@; put 'LDIzMTkwLDI5Nzk3LDIzMjUxLDE1OTY0OSwxNDA2MjgsMTU3NDksMTM3NDg5LDE0MTMwLDEzNjg4OCwyNDE5NSwyMTIwMCwyMzQxNCwyNTk5MiwyMzQyMCwxNjIzMTgsMTYzODgsMTg1MjUsMTMxNTg4LDIzNTA5LDI0OTI4LDEzNzc4MCwxNTQwNjAsMTMyNTE3LDIzNTM5LDIzNDUzLDE5NzI4'@; put 'LDIzNTU3LDEzODA1MiwyMzU3MSwyOTY0NiwyMzU3MiwxMzg0MDUsMTU4NTA0LDIzNjI1LDE4NjUzLDIzNjg1LDIzNzg1LDIzNzkxLDIzOTQ3LDEzODc0NSwxMzg4MDcsMjM4MjQsMjM4MzIsMjM4NzgsMTM4OTE2LDIzNzM4LDI0MDIzLDMzNTMyLDE0MzgxLDE0OTc2MSwxMzkzMzcsMTM5NjM1'@; put 'LDMzNDE1LDE0MzkwLDE1Mjk4LDI0MTEwLDI3Mjc0LDI0MTgxLDI0MTg2LDE0ODY2OCwxMzQzNTUsMjE0MTQsMjAxNTEsMjQyNzIsMjE0MTYsMTM3MDczLDI0MDczLDI0MzA4LDE2NDk5NCwyNDMxMywyNDMxNSwxNDQ5NiwyNDMxNiwyNjY4NiwzNzkxNSwyNDMzMywxMzE1MjEsMTk0NzA4LDE1'@; put 'MDcwLDE4NjA2LDEzNTk5NCwyNDM3OCwxNTc4MzIsMTQwMjQwLDI0NDA4LDE0MDQwMSwyNDQxOSwzODg0NSwxNTkzNDIsMjQ0MzQsMzc2OTYsMTY2NDU0LDI0NDg3LDIzOTkwLDE1NzExLDE1MjE0NCwxMzkxMTQsMTU5OTkyLDE0MDkwNCwzNzMzNCwxMzE3NDIsMTY2NDQxLDI0NjI1LDI2MjQ1'@; put 'LDEzNzMzNSwxNDY5MSwxNTgxNSwxMzg4MSwyMjQxNiwxNDEyMzYsMzEwODksMTU5MzYsMjQ3MzQsMjQ3NDAsMjQ3NTUsMTQ5ODkwLDE0OTkwMywxNjIzODcsMjk4NjAsMjA3MDUsMjMyMDAsMjQ5MzIsMzM4MjgsMjQ4OTgsMTk0NzI2LDE1OTQ0MiwyNDk2MSwyMDk4MCwxMzI2OTQsMjQ5Njcs'@; put 'MjM0NjYsMTQ3MzgzLDE0MTQwNywyNTA0MywxNjY4MTMsMTcwMzMzLDI1MDQwLDE0NjQyLDE0MTY5NiwxNDE1MDUsMjQ2MTEsMjQ5MjQsMjU4ODYsMjU0ODMsMTMxMzUyLDI1Mjg1LDEzNzA3MiwyNTMwMSwxNDI4NjEsMjU0NTIsMTQ5OTgzLDE0ODcxLDI1NjU2LDI1NTkyLDEzNjA3OCwxMzcy'@; put 'MTIsMjU3NDQsMjg1NTQsMTQyOTAyLDM4OTMyLDE0NzU5NiwxNTMzNzMsMjU4MjUsMjU4MjksMzgwMTEsMTQ5NTAsMjU2NTgsMTQ5MzUsMjU5MzMsMjg0MzgsMTUwMDU2LDE1MDA1MSwyNTk4OSwyNTk2NSwyNTk1MSwxNDM0ODYsMjYwMzcsMTQ5ODI0LDE5MjU1LDI2MDY1LDE2NjAwLDEzNzI1'@; put 'NywyNjA4MCwyNjA4MywyNDU0MywxNDQzODQsMjYxMzYsMTQzODYzLDE0Mzg2NCwyNjE4MCwxNDM3ODAsMTQzNzgxLDI2MTg3LDEzNDc3MywyNjIxNSwxNTIwMzgsMjYyMjcsMjYyMjgsMTM4ODEzLDE0MzkyMSwxNjUzNjQsMTQzODE2LDE1MjMzOSwzMDY2MSwxNDE1NTksMzkzMzIsMjYzNzAs'@; put 'MTQ4MzgwLDE1MDA0OSwxNTE0NywyNzEzMCwxNDUzNDYsMjY0NjIsMjY0NzEsMjY0NjYsMTQ3OTE3LDE2ODE3MywyNjU4MywxNzY0MSwyNjY1OCwyODI0MCwzNzQzNiwyNjYyNSwxNDQzNTgsMTU5MTM2LDI2NzE3LDE0NDQ5NSwyNzEwNSwyNzE0NywxNjY2MjMsMjY5OTUsMjY4MTksMTQ0ODQ1'@; put 'LDI2ODgxLDI2ODgwLDE1NjY2LDE0ODQ5LDE0NDk1NiwxNTIzMiwyNjU0MCwyNjk3NywxNjY0NzQsMTcxNDgsMjY5MzQsMjcwMzIsMTUyNjUsMTMyMDQxLDMzNjM1LDIwNjI0LDI3MTI5LDE0NDk4NSwxMzk1NjIsMjcyMDUsMTQ1MTU1LDI3MjkzLDE1MzQ3LDI2NTQ1LDI3MzM2LDE2ODM0OCwx'@; put 'NTM3MywyNzQyMSwxMzM0MTEsMjQ3OTgsMjc0NDUsMjc1MDgsMTQxMjYxLDI4MzQxLDE0NjEzOSwxMzIwMjEsMTM3NTYwLDE0MTQ0LDIxNTM3LDE0NjI2NiwyNzYxNywxNDcxOTYsMjc2MTIsMjc3MDMsMTQwNDI3LDE0OTc0NSwxNTg1NDUsMjc3MzgsMzMzMTgsMjc3NjksMTQ2ODc2LDE3NjA1'@; put 'LDE0Njg3NywxNDc4NzYsMTQ5NzcyLDE0OTc2MCwxNDY2MzMsMTQwNTMsMTU1OTUsMTM0NDUwLDM5ODExLDE0Mzg2NSwxNDA0MzMsMzI2NTUsMjY2NzksMTU5MDEzLDE1OTEzNywxNTkyMTEsMjgwNTQsMjc5OTYsMjgyODQsMjg0MjAsMTQ5ODg3LDE0NzU4OSwxNTkzNDYsMzQwOTksMTU5NjA0'@; put 'LDIwOTM1LDI3ODA0LDI4MTg5LDMzODM4LDE2NjY4OSwyODIwNywxNDY5OTEsMjk3NzksMTQ3MzMwLDMxMTgwLDI4MjM5LDIzMTg1LDE0MzQzNSwyODY2NCwxNDA5MywyODU3MywxNDY5OTIsMjg0MTAsMTM2MzQzLDE0NzUxNywxNzc0OSwzNzg3MiwyODQ4NCwyODUwOCwxNTY5NCwyODUzMiwx'@; put 'NjgzMDQsMTU2NzUsMjg1NzUsMTQ3NzgwLDI4NjI3LDE0NzYwMSwxNDc3OTcsMTQ3NTEzLDE0NzQ0MCwxNDczODAsMTQ3Nzc1LDIwOTU5LDE0Nzc5OCwxNDc3OTksMTQ3Nzc2LDE1NjEyNSwyODc0NywyODc5OCwyODgzOSwyODgwMSwyODg3NiwyODg4NSwyODg4NiwyODg5NSwxNjY0NCwxNTg0'@; put 'OCwyOTEwOCwyOTA3OCwxNDgwODcsMjg5NzEsMjg5OTcsMjMxNzYsMjkwMDIsMjkwMzgsMjM3MDgsMTQ4MzI1LDI5MDA3LDM3NzMwLDE0ODE2MSwyODk3MiwxNDg1NzAsMTUwMDU1LDE1MDA1MCwyOTExNCwxNjY4ODgsMjg4NjEsMjkxOTgsMzc5NTQsMjkyMDUsMjI4MDEsMzc5NTUsMjkyMjAs'@; put 'Mzc2OTcsMTUzMDkzLDI5MjMwLDI5MjQ4LDE0OTg3NiwyNjgxMywyOTI2OSwyOTI3MSwxNTk1NywxNDM0MjgsMjY2MzcsMjg0NzcsMjkzMTQsMjk0ODIsMjk0ODMsMTQ5NTM5LDE2NTkzMSwxODY2OSwxNjU4OTIsMjk0ODAsMjk0ODYsMjk2NDcsMjk2MTAsMTM0MjAyLDE1ODI1NCwyOTY0MSwy'@; put 'OTc2OSwxNDc5MzgsMTM2OTM1LDE1MDA1MiwyNjE0NywxNDAyMSwxNDk5NDMsMTQ5OTAxLDE1MDAxMSwyOTY4NywyOTcxNywyNjg4MywxNTAwNTQsMjk3NTMsMTMyNTQ3LDE2MDg3LDI5Nzg4LDE0MTQ4NSwyOTc5MiwxNjc2MDIsMjk3NjcsMjk2NjgsMjk4MTQsMzM3MjEsMjk4MDQsMTQxMjgs'@; put 'Mjk4MTIsMzc4NzMsMjcxODAsMjk4MjYsMTg3NzEsMTUwMTU2LDE0NzgwNywxNTAxMzcsMTY2Nzk5LDIzMzY2LDE2NjkxNSwxMzczNzQsMjk4OTYsMTM3NjA4LDI5OTY2LDI5OTI5LDI5OTgyLDE2NzY0MSwxMzc4MDMsMjM1MTEsMTY3NTk2LDM3NzY1LDMwMDI5LDMwMDI2LDMwMDU1LDMwMDYy'@; put 'LDE1MTQyNiwxNjEzMiwxNTA4MDMsMzAwOTQsMjk3ODksMzAxMTAsMzAxMzIsMzAyMTAsMzAyNTIsMzAyODksMzAyODcsMzAzMTksMzAzMjYsMTU2NjYxLDMwMzUyLDMzMjYzLDE0MzI4LDE1Nzk2OSwxNTc5NjYsMzAzNjksMzAzNzMsMzAzOTEsMzA0MTIsMTU5NjQ3LDMzODkwLDE1MTcwOSwx'@; put 'NTE5MzMsMTM4NzgwLDMwNDk0LDMwNTAyLDMwNTI4LDI1Nzc1LDE1MjA5NiwzMDU1MiwxNDQwNDQsMzA2MzksMTY2MjQ0LDE2NjI0OCwxMzY4OTcsMzA3MDgsMzA3MjksMTM2MDU0LDE1MDAzNCwyNjgyNiwzMDg5NSwzMDkxOSwzMDkzMSwzODU2NSwzMTAyMiwxNTMwNTYsMzA5MzUsMzEwMjgs'@; put 'MzA4OTcsMTYxMjkyLDM2NzkyLDM0OTQ4LDE2NjY5OSwxNTU3NzksMTQwODI4LDMxMTEwLDM1MDcyLDI2ODgyLDMxMTA0LDE1MzY4NywzMTEzMywxNjI2MTcsMzEwMzYsMzExNDUsMjgyMDIsMTYwMDM4LDE2MDQwLDMxMTc0LDE2ODIwNSwzMTE4OF0sImV1Yy1rciI6WzQ0MDM0LDQ0MDM1LDQ0'@; put 'MDM3LDQ0MDM4LDQ0MDQzLDQ0MDQ0LDQ0MDQ1LDQ0MDQ2LDQ0MDQ3LDQ0MDU2LDQ0MDYyLDQ0MDYzLDQ0MDY1LDQ0MDY2LDQ0MDY3LDQ0MDY5LDQ0MDcwLDQ0MDcxLDQ0MDcyLDQ0MDczLDQ0MDc0LDQ0MDc1LDQ0MDc4LDQ0MDgyLDQ0MDgzLDQ0MDg0LG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLDQ0MDg1LDQ0MDg2LDQ0MDg3LDQ0MDkwLDQ0MDkxLDQ0MDkzLDQ0MDk0LDQ0MDk1LDQ0MDk3LDQ0MDk4LDQ0MDk5LDQ0MTAwLDQ0MTAxLDQ0MTAyLDQ0MTAzLDQ0MTA0LDQ0MTA1LDQ0MTA2LDQ0MTA4LDQ0MTEwLDQ0MTExLDQ0MTEyLDQ0MTEzLDQ0MTE0LDQ0MTE1LDQ0MTE3LG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MTE4LDQ0MTE5LDQ0MTIxLDQ0MTIyLDQ0MTIzLDQ0MTI1LDQ0MTI2LDQ0MTI3LDQ0MTI4LDQ0MTI5LDQ0MTMwLDQ0MTMxLDQ0MTMyLDQ0MTMzLDQ0MTM0LDQ0MTM1LDQ0MTM2LDQ0MTM3LDQ0MTM4LDQ0MTM5LDQ0MTQwLDQ0MTQxLDQ0MTQy'@; put 'LDQ0MTQzLDQ0MTQ2LDQ0MTQ3LDQ0MTQ5LDQ0MTUwLDQ0MTUzLDQ0MTU1LDQ0MTU2LDQ0MTU3LDQ0MTU4LDQ0MTU5LDQ0MTYyLDQ0MTY3LDQ0MTY4LDQ0MTczLDQ0MTc0LDQ0MTc1LDQ0MTc3LDQ0MTc4LDQ0MTc5LDQ0MTgxLDQ0MTgyLDQ0MTgzLDQ0MTg0LDQ0MTg1LDQ0MTg2LDQ0MTg3LDQ0'@; put 'MTkwLDQ0MTk0LDQ0MTk1LDQ0MTk2LDQ0MTk3LDQ0MTk4LDQ0MTk5LDQ0MjAzLDQ0MjA1LDQ0MjA2LDQ0MjA5LDQ0MjEwLDQ0MjExLDQ0MjEyLDQ0MjEzLDQ0MjE0LDQ0MjE1LDQ0MjE4LDQ0MjIyLDQ0MjIzLDQ0MjI0LDQ0MjI2LDQ0MjI3LDQ0MjI5LDQ0MjMwLDQ0MjMxLDQ0MjMzLDQ0MjM0'@; put 'LDQ0MjM1LDQ0MjM3LDQ0MjM4LDQ0MjM5LDQ0MjQwLDQ0MjQxLDQ0MjQyLDQ0MjQzLDQ0MjQ0LDQ0MjQ2LDQ0MjQ4LDQ0MjQ5LDQ0MjUwLDQ0MjUxLDQ0MjUyLDQ0MjUzLDQ0MjU0LDQ0MjU1LDQ0MjU4LDQ0MjU5LDQ0MjYxLDQ0MjYyLDQ0MjY1LDQ0MjY3LDQ0MjY5LDQ0MjcwLDQ0Mjc0LDQ0'@; put 'Mjc2LDQ0Mjc5LDQ0MjgwLDQ0MjgxLDQ0MjgyLDQ0MjgzLDQ0Mjg2LDQ0Mjg3LDQ0Mjg5LDQ0MjkwLDQ0MjkxLDQ0MjkzLDQ0Mjk1LDQ0Mjk2LDQ0Mjk3LDQ0Mjk4LDQ0Mjk5LDQ0MzAyLDQ0MzA0LDQ0MzA2LDQ0MzA3LDQ0MzA4LDQ0MzA5LDQ0MzEwLDQ0MzExLDQ0MzEzLDQ0MzE0LDQ0MzE1'@; put 'LDQ0MzE3LDQ0MzE4LDQ0MzE5LDQ0MzIxLDQ0MzIyLDQ0MzIzLDQ0MzI0LDQ0MzI1LDQ0MzI2LDQ0MzI3LDQ0MzI4LDQ0MzMwLDQ0MzMxLDQ0MzM0LDQ0MzM1LDQ0MzM2LDQ0MzM3LDQ0MzM4LDQ0MzM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MzQyLDQ0MzQzLDQ0MzQ1LDQ0'@; put 'MzQ2LDQ0MzQ3LDQ0MzQ5LDQ0MzUwLDQ0MzUxLDQ0MzUyLDQ0MzUzLDQ0MzU0LDQ0MzU1LDQ0MzU4LDQ0MzYwLDQ0MzYyLDQ0MzYzLDQ0MzY0LDQ0MzY1LDQ0MzY2LDQ0MzY3LDQ0MzY5LDQ0MzcwLDQ0MzcxLDQ0MzczLDQ0Mzc0LDQ0Mzc1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LDQ0Mzc3LDQ0Mzc4LDQ0Mzc5LDQ0MzgwLDQ0MzgxLDQ0MzgyLDQ0MzgzLDQ0Mzg0LDQ0Mzg2LDQ0Mzg4LDQ0Mzg5LDQ0MzkwLDQ0MzkxLDQ0MzkyLDQ0MzkzLDQ0Mzk0LDQ0Mzk1LDQ0Mzk4LDQ0Mzk5LDQ0NDAxLDQ0NDAyLDQ0NDA3LDQ0NDA4LDQ0NDA5LDQ0NDEwLDQ0NDE0LDQ0NDE2LDQ0'@; put 'NDE5LDQ0NDIwLDQ0NDIxLDQ0NDIyLDQ0NDIzLDQ0NDI2LDQ0NDI3LDQ0NDI5LDQ0NDMwLDQ0NDMxLDQ0NDMzLDQ0NDM0LDQ0NDM1LDQ0NDM2LDQ0NDM3LDQ0NDM4LDQ0NDM5LDQ0NDQwLDQ0NDQxLDQ0NDQyLDQ0NDQzLDQ0NDQ2LDQ0NDQ3LDQ0NDQ4LDQ0NDQ5LDQ0NDUwLDQ0NDUxLDQ0NDUz'@; put 'LDQ0NDU0LDQ0NDU1LDQ0NDU2LDQ0NDU3LDQ0NDU4LDQ0NDU5LDQ0NDYwLDQ0NDYxLDQ0NDYyLDQ0NDYzLDQ0NDY0LDQ0NDY1LDQ0NDY2LDQ0NDY3LDQ0NDY4LDQ0NDY5LDQ0NDcwLDQ0NDcyLDQ0NDczLDQ0NDc0LDQ0NDc1LDQ0NDc2LDQ0NDc3LDQ0NDc4LDQ0NDc5LDQ0NDgyLDQ0NDgzLDQ0'@; put 'NDg1LDQ0NDg2LDQ0NDg3LDQ0NDg5LDQ0NDkwLDQ0NDkxLDQ0NDkyLDQ0NDkzLDQ0NDk0LDQ0NDk1LDQ0NDk4LDQ0NTAwLDQ0NTAxLDQ0NTAyLDQ0NTAzLDQ0NTA0LDQ0NTA1LDQ0NTA2LDQ0NTA3LDQ0NTA5LDQ0NTEwLDQ0NTExLDQ0NTEzLDQ0NTE0LDQ0NTE1LDQ0NTE3LDQ0NTE4LDQ0NTE5'@; put 'LDQ0NTIwLDQ0NTIxLDQ0NTIyLDQ0NTIzLDQ0NTI0LDQ0NTI1LDQ0NTI2LDQ0NTI3LDQ0NTI4LDQ0NTI5LDQ0NTMwLDQ0NTMxLDQ0NTMyLDQ0NTMzLDQ0NTM0LDQ0NTM1LDQ0NTM4LDQ0NTM5LDQ0NTQxLDQ0NTQyLDQ0NTQ2LDQ0NTQ3LDQ0NTQ4LDQ0NTQ5LDQ0NTUwLDQ0NTUxLDQ0NTU0LDQ0'@; put 'NTU2LDQ0NTU4LDQ0NTU5LDQ0NTYwLDQ0NTYxLDQ0NTYyLDQ0NTYzLDQ0NTY1LDQ0NTY2LDQ0NTY3LDQ0NTY4LDQ0NTY5LDQ0NTcwLDQ0NTcxLDQ0NTcyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NTczLDQ0NTc0LDQ0NTc1LDQ0NTc2LDQ0NTc3LDQ0NTc4LDQ0NTc5LDQ0NTgw'@; put 'LDQ0NTgxLDQ0NTgyLDQ0NTgzLDQ0NTg0LDQ0NTg1LDQ0NTg2LDQ0NTg3LDQ0NTg4LDQ0NTg5LDQ0NTkwLDQ0NTkxLDQ0NTk0LDQ0NTk1LDQ0NTk3LDQ0NTk4LDQ0NjAxLDQ0NjAzLDQ0NjA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NjA1LDQ0NjA2LDQ0NjA3LDQ0NjEwLDQ0'@; put 'NjEyLDQ0NjE1LDQ0NjE2LDQ0NjE3LDQ0NjE5LDQ0NjIzLDQ0NjI1LDQ0NjI2LDQ0NjI3LDQ0NjI5LDQ0NjMxLDQ0NjMyLDQ0NjMzLDQ0NjM0LDQ0NjM1LDQ0NjM4LDQ0NjQyLDQ0NjQzLDQ0NjQ0LDQ0NjQ2LDQ0NjQ3LDQ0NjUwLDQ0NjUxLDQ0NjUzLDQ0NjU0LDQ0NjU1LDQ0NjU3LDQ0NjU4'@; put 'LDQ0NjU5LDQ0NjYwLDQ0NjYxLDQ0NjYyLDQ0NjYzLDQ0NjY2LDQ0NjcwLDQ0NjcxLDQ0NjcyLDQ0NjczLDQ0Njc0LDQ0Njc1LDQ0Njc4LDQ0Njc5LDQ0NjgwLDQ0NjgxLDQ0NjgyLDQ0NjgzLDQ0Njg1LDQ0Njg2LDQ0Njg3LDQ0Njg4LDQ0Njg5LDQ0NjkwLDQ0NjkxLDQ0NjkyLDQ0NjkzLDQ0'@; put 'Njk0LDQ0Njk1LDQ0Njk2LDQ0Njk3LDQ0Njk4LDQ0Njk5LDQ0NzAwLDQ0NzAxLDQ0NzAyLDQ0NzAzLDQ0NzA0LDQ0NzA1LDQ0NzA2LDQ0NzA3LDQ0NzA4LDQ0NzA5LDQ0NzEwLDQ0NzExLDQ0NzEyLDQ0NzEzLDQ0NzE0LDQ0NzE1LDQ0NzE2LDQ0NzE3LDQ0NzE4LDQ0NzE5LDQ0NzIwLDQ0NzIx'@; put 'LDQ0NzIyLDQ0NzIzLDQ0NzI0LDQ0NzI1LDQ0NzI2LDQ0NzI3LDQ0NzI4LDQ0NzI5LDQ0NzMwLDQ0NzMxLDQ0NzM1LDQ0NzM3LDQ0NzM4LDQ0NzM5LDQ0NzQxLDQ0NzQyLDQ0NzQzLDQ0NzQ0LDQ0NzQ1LDQ0NzQ2LDQ0NzQ3LDQ0NzUwLDQ0NzU0LDQ0NzU1LDQ0NzU2LDQ0NzU3LDQ0NzU4LDQ0'@; put 'NzU5LDQ0NzYyLDQ0NzYzLDQ0NzY1LDQ0NzY2LDQ0NzY3LDQ0NzY4LDQ0NzY5LDQ0NzcwLDQ0NzcxLDQ0NzcyLDQ0NzczLDQ0Nzc0LDQ0Nzc1LDQ0Nzc3LDQ0Nzc4LDQ0NzgwLDQ0NzgyLDQ0NzgzLDQ0Nzg0LDQ0Nzg1LDQ0Nzg2LDQ0Nzg3LDQ0Nzg5LDQ0NzkwLDQ0NzkxLDQ0NzkzLDQ0Nzk0'@; put 'LDQ0Nzk1LDQ0Nzk3LDQ0Nzk4LDQ0Nzk5LDQ0ODAwLDQ0ODAxLDQ0ODAyLDQ0ODAzLDQ0ODA0LDQ0ODA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODA2LDQ0ODA5LDQ0ODEwLDQ0ODExLDQ0ODEyLDQ0ODE0LDQ0ODE1LDQ0ODE3LDQ0ODE4LDQ0ODE5LDQ0ODIwLDQ0ODIxLDQ0'@; put 'ODIyLDQ0ODIzLDQ0ODI0LDQ0ODI1LDQ0ODI2LDQ0ODI3LDQ0ODI4LDQ0ODI5LDQ0ODMwLDQ0ODMxLDQ0ODMyLDQ0ODMzLDQ0ODM0LDQ0ODM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODM2LDQ0ODM3LDQ0ODM4LDQ0ODM5LDQ0ODQwLDQ0ODQxLDQ0ODQyLDQ0ODQzLDQ0ODQ2'@; put 'LDQ0ODQ3LDQ0ODQ5LDQ0ODUxLDQ0ODUzLDQ0ODU0LDQ0ODU1LDQ0ODU2LDQ0ODU3LDQ0ODU4LDQ0ODU5LDQ0ODYyLDQ0ODY0LDQ0ODY4LDQ0ODY5LDQ0ODcwLDQ0ODcxLDQ0ODc0LDQ0ODc1LDQ0ODc2LDQ0ODc3LDQ0ODc4LDQ0ODc5LDQ0ODgxLDQ0ODgyLDQ0ODgzLDQ0ODg0LDQ0ODg1LDQ0'@; put 'ODg2LDQ0ODg3LDQ0ODg4LDQ0ODg5LDQ0ODkwLDQ0ODkxLDQ0ODk0LDQ0ODk1LDQ0ODk2LDQ0ODk3LDQ0ODk4LDQ0ODk5LDQ0OTAyLDQ0OTAzLDQ0OTA0LDQ0OTA1LDQ0OTA2LDQ0OTA3LDQ0OTA4LDQ0OTA5LDQ0OTEwLDQ0OTExLDQ0OTEyLDQ0OTEzLDQ0OTE0LDQ0OTE1LDQ0OTE2LDQ0OTE3'@; put 'LDQ0OTE4LDQ0OTE5LDQ0OTIwLDQ0OTIyLDQ0OTIzLDQ0OTI0LDQ0OTI1LDQ0OTI2LDQ0OTI3LDQ0OTI5LDQ0OTMwLDQ0OTMxLDQ0OTMzLDQ0OTM0LDQ0OTM1LDQ0OTM3LDQ0OTM4LDQ0OTM5LDQ0OTQwLDQ0OTQxLDQ0OTQyLDQ0OTQzLDQ0OTQ2LDQ0OTQ3LDQ0OTQ4LDQ0OTUwLDQ0OTUxLDQ0'@; put 'OTUyLDQ0OTUzLDQ0OTU0LDQ0OTU1LDQ0OTU3LDQ0OTU4LDQ0OTU5LDQ0OTYwLDQ0OTYxLDQ0OTYyLDQ0OTYzLDQ0OTY0LDQ0OTY1LDQ0OTY2LDQ0OTY3LDQ0OTY4LDQ0OTY5LDQ0OTcwLDQ0OTcxLDQ0OTcyLDQ0OTczLDQ0OTc0LDQ0OTc1LDQ0OTc2LDQ0OTc3LDQ0OTc4LDQ0OTc5LDQ0OTgw'@; put 'LDQ0OTgxLDQ0OTgyLDQ0OTgzLDQ0OTg2LDQ0OTg3LDQ0OTg5LDQ0OTkwLDQ0OTkxLDQ0OTkzLDQ0OTk0LDQ0OTk1LDQ0OTk2LDQ0OTk3LDQ0OTk4LDQ1MDAyLDQ1MDA0LDQ1MDA3LDQ1MDA4LDQ1MDA5LDQ1MDEwLDQ1MDExLDQ1MDEzLDQ1MDE0LDQ1MDE1LDQ1MDE2LDQ1MDE3LDQ1MDE4LDQ1'@; put 'MDE5LDQ1MDIxLDQ1MDIyLDQ1MDIzLDQ1MDI0LDQ1MDI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDI2LDQ1MDI3LDQ1MDI4LDQ1MDI5LDQ1MDMwLDQ1MDMxLDQ1MDM0LDQ1MDM1LDQ1MDM2LDQ1MDM3LDQ1MDM4LDQ1MDM5LDQ1MDQyLDQ1MDQzLDQ1MDQ1LDQ1MDQ2LDQ1MDQ3'@; put 'LDQ1MDQ5LDQ1MDUwLDQ1MDUxLDQ1MDUyLDQ1MDUzLDQ1MDU0LDQ1MDU1LDQ1MDU4LDQ1MDU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDYxLDQ1MDYyLDQ1MDYzLDQ1MDY0LDQ1MDY1LDQ1MDY2LDQ1MDY3LDQ1MDY5LDQ1MDcwLDQ1MDcxLDQ1MDczLDQ1MDc0LDQ1MDc1LDQ1'@; put 'MDc3LDQ1MDc4LDQ1MDc5LDQ1MDgwLDQ1MDgxLDQ1MDgyLDQ1MDgzLDQ1MDg2LDQ1MDg3LDQ1MDg4LDQ1MDg5LDQ1MDkwLDQ1MDkxLDQ1MDkyLDQ1MDkzLDQ1MDk0LDQ1MDk1LDQ1MDk3LDQ1MDk4LDQ1MDk5LDQ1MTAwLDQ1MTAxLDQ1MTAyLDQ1MTAzLDQ1MTA0LDQ1MTA1LDQ1MTA2LDQ1MTA3'@; put 'LDQ1MTA4LDQ1MTA5LDQ1MTEwLDQ1MTExLDQ1MTEyLDQ1MTEzLDQ1MTE0LDQ1MTE1LDQ1MTE2LDQ1MTE3LDQ1MTE4LDQ1MTE5LDQ1MTIwLDQ1MTIxLDQ1MTIyLDQ1MTIzLDQ1MTI2LDQ1MTI3LDQ1MTI5LDQ1MTMxLDQ1MTMzLDQ1MTM1LDQ1MTM2LDQ1MTM3LDQ1MTM4LDQ1MTQyLDQ1MTQ0LDQ1'@; put 'MTQ2LDQ1MTQ3LDQ1MTQ4LDQ1MTUwLDQ1MTUxLDQ1MTUyLDQ1MTUzLDQ1MTU0LDQ1MTU1LDQ1MTU2LDQ1MTU3LDQ1MTU4LDQ1MTU5LDQ1MTYwLDQ1MTYxLDQ1MTYyLDQ1MTYzLDQ1MTY0LDQ1MTY1LDQ1MTY2LDQ1MTY3LDQ1MTY4LDQ1MTY5LDQ1MTcwLDQ1MTcxLDQ1MTcyLDQ1MTczLDQ1MTc0'@; put 'LDQ1MTc1LDQ1MTc2LDQ1MTc3LDQ1MTc4LDQ1MTc5LDQ1MTgyLDQ1MTgzLDQ1MTg1LDQ1MTg2LDQ1MTg3LDQ1MTg5LDQ1MTkwLDQ1MTkxLDQ1MTkyLDQ1MTkzLDQ1MTk0LDQ1MTk1LDQ1MTk4LDQ1MjAwLDQ1MjAyLDQ1MjAzLDQ1MjA0LDQ1MjA1LDQ1MjA2LDQ1MjA3LDQ1MjExLDQ1MjEzLDQ1'@; put 'MjE0LDQ1MjE5LDQ1MjIwLDQ1MjIxLDQ1MjIyLDQ1MjIzLDQ1MjI2LDQ1MjMyLDQ1MjM0LDQ1MjM4LDQ1MjM5LDQ1MjQxLDQ1MjQyLDQ1MjQzLDQ1MjQ1LDQ1MjQ2LDQ1MjQ3LDQ1MjQ4LDQ1MjQ5LDQ1MjUwLDQ1MjUxLDQ1MjU0LDQ1MjU4LDQ1MjU5LDQ1MjYwLDQ1MjYxLDQ1MjYyLDQ1MjYz'@; put 'LDQ1MjY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MjY3LDQ1MjY5LDQ1MjcwLDQ1MjcxLDQ1MjczLDQ1Mjc0LDQ1Mjc1LDQ1Mjc2LDQ1Mjc3LDQ1Mjc4LDQ1Mjc5LDQ1MjgxLDQ1MjgyLDQ1MjgzLDQ1Mjg0LDQ1Mjg2LDQ1Mjg3LDQ1Mjg4LDQ1Mjg5LDQ1MjkwLDQ1MjkxLDQ1'@; put 'MjkyLDQ1MjkzLDQ1Mjk0LDQ1Mjk1LDQ1Mjk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1Mjk3LDQ1Mjk4LDQ1Mjk5LDQ1MzAwLDQ1MzAxLDQ1MzAyLDQ1MzAzLDQ1MzA0LDQ1MzA1LDQ1MzA2LDQ1MzA3LDQ1MzA4LDQ1MzA5LDQ1MzEwLDQ1MzExLDQ1MzEyLDQ1MzEzLDQ1MzE0'@; put 'LDQ1MzE1LDQ1MzE2LDQ1MzE3LDQ1MzE4LDQ1MzE5LDQ1MzIyLDQ1MzI1LDQ1MzI2LDQ1MzI3LDQ1MzI5LDQ1MzMyLDQ1MzMzLDQ1MzM0LDQ1MzM1LDQ1MzM4LDQ1MzQyLDQ1MzQzLDQ1MzQ0LDQ1MzQ1LDQ1MzQ2LDQ1MzUwLDQ1MzUxLDQ1MzUzLDQ1MzU0LDQ1MzU1LDQ1MzU3LDQ1MzU4LDQ1'@; put 'MzU5LDQ1MzYwLDQ1MzYxLDQ1MzYyLDQ1MzYzLDQ1MzY2LDQ1MzcwLDQ1MzcxLDQ1MzcyLDQ1MzczLDQ1Mzc0LDQ1Mzc1LDQ1Mzc4LDQ1Mzc5LDQ1MzgxLDQ1MzgyLDQ1MzgzLDQ1Mzg1LDQ1Mzg2LDQ1Mzg3LDQ1Mzg4LDQ1Mzg5LDQ1MzkwLDQ1MzkxLDQ1Mzk0LDQ1Mzk1LDQ1Mzk4LDQ1Mzk5'@; put 'LDQ1NDAxLDQ1NDAyLDQ1NDAzLDQ1NDA1LDQ1NDA2LDQ1NDA3LDQ1NDA5LDQ1NDEwLDQ1NDExLDQ1NDEyLDQ1NDEzLDQ1NDE0LDQ1NDE1LDQ1NDE2LDQ1NDE3LDQ1NDE4LDQ1NDE5LDQ1NDIwLDQ1NDIxLDQ1NDIyLDQ1NDIzLDQ1NDI0LDQ1NDI1LDQ1NDI2LDQ1NDI3LDQ1NDI4LDQ1NDI5LDQ1'@; put 'NDMwLDQ1NDMxLDQ1NDM0LDQ1NDM1LDQ1NDM3LDQ1NDM4LDQ1NDM5LDQ1NDQxLDQ1NDQzLDQ1NDQ0LDQ1NDQ1LDQ1NDQ2LDQ1NDQ3LDQ1NDUwLDQ1NDUyLDQ1NDU0LDQ1NDU1LDQ1NDU2LDQ1NDU3LDQ1NDYxLDQ1NDYyLDQ1NDYzLDQ1NDY1LDQ1NDY2LDQ1NDY3LDQ1NDY5LDQ1NDcwLDQ1NDcx'@; put 'LDQ1NDcyLDQ1NDczLDQ1NDc0LDQ1NDc1LDQ1NDc2LDQ1NDc3LDQ1NDc4LDQ1NDc5LDQ1NDgxLDQ1NDgyLDQ1NDgzLDQ1NDg0LDQ1NDg1LDQ1NDg2LDQ1NDg3LDQ1NDg4LDQ1NDg5LDQ1NDkwLDQ1NDkxLDQ1NDkyLDQ1NDkzLDQ1NDk0LDQ1NDk1LDQ1NDk2LG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLDQ1NDk3LDQ1NDk4LDQ1NDk5LDQ1NTAwLDQ1NTAxLDQ1NTAyLDQ1NTAzLDQ1NTA0LDQ1NTA1LDQ1NTA2LDQ1NTA3LDQ1NTA4LDQ1NTA5LDQ1NTEwLDQ1NTExLDQ1NTEyLDQ1NTEzLDQ1NTE0LDQ1NTE1LDQ1NTE3LDQ1NTE4LDQ1NTE5LDQ1NTIxLDQ1NTIyLDQ1NTIzLDQ1NTI1'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NTI2LDQ1NTI3LDQ1NTI4LDQ1NTI5LDQ1NTMwLDQ1NTMxLDQ1NTM0LDQ1NTM2LDQ1NTM3LDQ1NTM4LDQ1NTM5LDQ1NTQwLDQ1NTQxLDQ1NTQyLDQ1NTQzLDQ1NTQ2LDQ1NTQ3LDQ1NTQ5LDQ1NTUwLDQ1NTUxLDQ1NTUzLDQ1NTU0LDQ1'@; put 'NTU1LDQ1NTU2LDQ1NTU3LDQ1NTU4LDQ1NTU5LDQ1NTYwLDQ1NTYyLDQ1NTY0LDQ1NTY2LDQ1NTY3LDQ1NTY4LDQ1NTY5LDQ1NTcwLDQ1NTcxLDQ1NTc0LDQ1NTc1LDQ1NTc3LDQ1NTc4LDQ1NTgxLDQ1NTgyLDQ1NTgzLDQ1NTg0LDQ1NTg1LDQ1NTg2LDQ1NTg3LDQ1NTkwLDQ1NTkyLDQ1NTk0'@; put 'LDQ1NTk1LDQ1NTk2LDQ1NTk3LDQ1NTk4LDQ1NTk5LDQ1NjAxLDQ1NjAyLDQ1NjAzLDQ1NjA0LDQ1NjA1LDQ1NjA2LDQ1NjA3LDQ1NjA4LDQ1NjA5LDQ1NjEwLDQ1NjExLDQ1NjEyLDQ1NjEzLDQ1NjE0LDQ1NjE1LDQ1NjE2LDQ1NjE3LDQ1NjE4LDQ1NjE5LDQ1NjIxLDQ1NjIyLDQ1NjIzLDQ1'@; put 'NjI0LDQ1NjI1LDQ1NjI2LDQ1NjI3LDQ1NjI5LDQ1NjMwLDQ1NjMxLDQ1NjMyLDQ1NjMzLDQ1NjM0LDQ1NjM1LDQ1NjM2LDQ1NjM3LDQ1NjM4LDQ1NjM5LDQ1NjQwLDQ1NjQxLDQ1NjQyLDQ1NjQzLDQ1NjQ0LDQ1NjQ1LDQ1NjQ2LDQ1NjQ3LDQ1NjQ4LDQ1NjQ5LDQ1NjUwLDQ1NjUxLDQ1NjUy'@; put 'LDQ1NjUzLDQ1NjU0LDQ1NjU1LDQ1NjU3LDQ1NjU4LDQ1NjU5LDQ1NjYxLDQ1NjYyLDQ1NjYzLDQ1NjY1LDQ1NjY2LDQ1NjY3LDQ1NjY4LDQ1NjY5LDQ1NjcwLDQ1NjcxLDQ1Njc0LDQ1Njc1LDQ1Njc2LDQ1Njc3LDQ1Njc4LDQ1Njc5LDQ1NjgwLDQ1NjgxLDQ1NjgyLDQ1NjgzLDQ1Njg2LDQ1'@; put 'Njg3LDQ1Njg4LDQ1Njg5LDQ1NjkwLDQ1NjkxLDQ1NjkzLDQ1Njk0LDQ1Njk1LDQ1Njk2LDQ1Njk3LDQ1Njk4LDQ1Njk5LDQ1NzAyLDQ1NzAzLDQ1NzA0LDQ1NzA2LDQ1NzA3LDQ1NzA4LDQ1NzA5LDQ1NzEwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NzExLDQ1NzE0LDQ1NzE1'@; put 'LDQ1NzE3LDQ1NzE4LDQ1NzE5LDQ1NzIzLDQ1NzI0LDQ1NzI1LDQ1NzI2LDQ1NzI3LDQ1NzMwLDQ1NzMyLDQ1NzM1LDQ1NzM2LDQ1NzM3LDQ1NzM5LDQ1NzQxLDQ1NzQyLDQ1NzQzLDQ1NzQ1LDQ1NzQ2LDQ1NzQ3LDQ1NzQ5LDQ1NzUwLDQ1NzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLDQ1NzUyLDQ1NzUzLDQ1NzU0LDQ1NzU1LDQ1NzU2LDQ1NzU3LDQ1NzU4LDQ1NzU5LDQ1NzYwLDQ1NzYxLDQ1NzYyLDQ1NzYzLDQ1NzY0LDQ1NzY1LDQ1NzY2LDQ1NzY3LDQ1NzcwLDQ1NzcxLDQ1NzczLDQ1Nzc0LDQ1Nzc1LDQ1Nzc3LDQ1Nzc5LDQ1NzgwLDQ1NzgxLDQ1NzgyLDQ1Nzgz'@; put 'LDQ1Nzg2LDQ1Nzg4LDQ1NzkwLDQ1NzkxLDQ1NzkyLDQ1NzkzLDQ1Nzk1LDQ1Nzk5LDQ1ODAxLDQ1ODAyLDQ1ODA4LDQ1ODA5LDQ1ODEwLDQ1ODE0LDQ1ODIwLDQ1ODIxLDQ1ODIyLDQ1ODI2LDQ1ODI3LDQ1ODI5LDQ1ODMwLDQ1ODMxLDQ1ODMzLDQ1ODM0LDQ1ODM1LDQ1ODM2LDQ1ODM3LDQ1'@; put 'ODM4LDQ1ODM5LDQ1ODQyLDQ1ODQ2LDQ1ODQ3LDQ1ODQ4LDQ1ODQ5LDQ1ODUwLDQ1ODUxLDQ1ODUzLDQ1ODU0LDQ1ODU1LDQ1ODU2LDQ1ODU3LDQ1ODU4LDQ1ODU5LDQ1ODYwLDQ1ODYxLDQ1ODYyLDQ1ODYzLDQ1ODY0LDQ1ODY1LDQ1ODY2LDQ1ODY3LDQ1ODY4LDQ1ODY5LDQ1ODcwLDQ1ODcx'@; put 'LDQ1ODcyLDQ1ODczLDQ1ODc0LDQ1ODc1LDQ1ODc2LDQ1ODc3LDQ1ODc4LDQ1ODc5LDQ1ODgwLDQ1ODgxLDQ1ODgyLDQ1ODgzLDQ1ODg0LDQ1ODg1LDQ1ODg2LDQ1ODg3LDQ1ODg4LDQ1ODg5LDQ1ODkwLDQ1ODkxLDQ1ODkyLDQ1ODkzLDQ1ODk0LDQ1ODk1LDQ1ODk2LDQ1ODk3LDQ1ODk4LDQ1'@; put 'ODk5LDQ1OTAwLDQ1OTAxLDQ1OTAyLDQ1OTAzLDQ1OTA0LDQ1OTA1LDQ1OTA2LDQ1OTA3LDQ1OTExLDQ1OTEzLDQ1OTE0LDQ1OTE3LDQ1OTIwLDQ1OTIxLDQ1OTIyLDQ1OTIzLDQ1OTI2LDQ1OTI4LDQ1OTMwLDQ1OTMyLDQ1OTMzLDQ1OTM1LDQ1OTM4LDQ1OTM5LDQ1OTQxLDQ1OTQyLDQ1OTQz'@; put 'LDQ1OTQ1LDQ1OTQ2LDQ1OTQ3LDQ1OTQ4LDQ1OTQ5LDQ1OTUwLDQ1OTUxLDQ1OTU0LDQ1OTU4LDQ1OTU5LDQ1OTYwLDQ1OTYxLDQ1OTYyLDQ1OTYzLDQ1OTY1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTY2LDQ1OTY3LDQ1OTY5LDQ1OTcwLDQ1OTcxLDQ1OTczLDQ1OTc0LDQ1'@; put 'OTc1LDQ1OTc2LDQ1OTc3LDQ1OTc4LDQ1OTc5LDQ1OTgwLDQ1OTgxLDQ1OTgyLDQ1OTgzLDQ1OTg2LDQ1OTg3LDQ1OTg4LDQ1OTg5LDQ1OTkwLDQ1OTkxLDQ1OTkzLDQ1OTk0LDQ1OTk1LDQ1OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTk4LDQ1OTk5LDQ2ZTMsNDYwMDEs'@; put 'NDYwMDIsNDYwMDMsNDYwMDQsNDYwMDUsNDYwMDYsNDYwMDcsNDYwMDgsNDYwMDksNDYwMTAsNDYwMTEsNDYwMTIsNDYwMTMsNDYwMTQsNDYwMTUsNDYwMTYsNDYwMTcsNDYwMTgsNDYwMTksNDYwMjIsNDYwMjMsNDYwMjUsNDYwMjYsNDYwMjksNDYwMzEsNDYwMzMsNDYwMzQsNDYwMzUsNDYw'@; put 'MzgsNDYwNDAsNDYwNDIsNDYwNDQsNDYwNDYsNDYwNDcsNDYwNDksNDYwNTAsNDYwNTEsNDYwNTMsNDYwNTQsNDYwNTUsNDYwNTcsNDYwNTgsNDYwNTksNDYwNjAsNDYwNjEsNDYwNjIsNDYwNjMsNDYwNjQsNDYwNjUsNDYwNjYsNDYwNjcsNDYwNjgsNDYwNjksNDYwNzAsNDYwNzEsNDYwNzIs'@; put 'NDYwNzMsNDYwNzQsNDYwNzUsNDYwNzcsNDYwNzgsNDYwNzksNDYwODAsNDYwODEsNDYwODIsNDYwODMsNDYwODQsNDYwODUsNDYwODYsNDYwODcsNDYwODgsNDYwODksNDYwOTAsNDYwOTEsNDYwOTIsNDYwOTMsNDYwOTQsNDYwOTUsNDYwOTcsNDYwOTgsNDYwOTksNDYxMDAsNDYxMDEsNDYx'@; put 'MDIsNDYxMDMsNDYxMDUsNDYxMDYsNDYxMDcsNDYxMDksNDYxMTAsNDYxMTEsNDYxMTMsNDYxMTQsNDYxMTUsNDYxMTYsNDYxMTcsNDYxMTgsNDYxMTksNDYxMjIsNDYxMjQsNDYxMjUsNDYxMjYsNDYxMjcsNDYxMjgsNDYxMjksNDYxMzAsNDYxMzEsNDYxMzMsNDYxMzQsNDYxMzUsNDYxMzYs'@; put 'NDYxMzcsNDYxMzgsNDYxMzksNDYxNDAsNDYxNDEsNDYxNDIsNDYxNDMsNDYxNDQsNDYxNDUsNDYxNDYsNDYxNDcsNDYxNDgsNDYxNDksNDYxNTAsNDYxNTEsNDYxNTIsNDYxNTMsNDYxNTQsNDYxNTUsNDYxNTYsNDYxNTcsNDYxNTgsNDYxNTksNDYxNjIsNDYxNjMsNDYxNjUsNDYxNjYsNDYx'@; put 'NjcsNDYxNjksNDYxNzAsNDYxNzEsNDYxNzIsNDYxNzMsNDYxNzQsNDYxNzUsNDYxNzgsNDYxODAsNDYxODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYxODMsNDYxODQsNDYxODUsNDYxODYsNDYxODcsNDYxODksNDYxOTAsNDYxOTEsNDYxOTIsNDYxOTMsNDYxOTQsNDYxOTUs'@; put 'NDYxOTYsNDYxOTcsNDYxOTgsNDYxOTksNDYyMDAsNDYyMDEsNDYyMDIsNDYyMDMsNDYyMDQsNDYyMDUsNDYyMDYsNDYyMDcsNDYyMDksNDYyMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYyMTEsNDYyMTIsNDYyMTMsNDYyMTQsNDYyMTUsNDYyMTcsNDYyMTgsNDYyMTksNDYy'@; put 'MjAsNDYyMjEsNDYyMjIsNDYyMjMsNDYyMjQsNDYyMjUsNDYyMjYsNDYyMjcsNDYyMjgsNDYyMjksNDYyMzAsNDYyMzEsNDYyMzIsNDYyMzMsNDYyMzQsNDYyMzUsNDYyMzYsNDYyMzgsNDYyMzksNDYyNDAsNDYyNDEsNDYyNDIsNDYyNDMsNDYyNDUsNDYyNDYsNDYyNDcsNDYyNDksNDYyNTAs'@; put 'NDYyNTEsNDYyNTMsNDYyNTQsNDYyNTUsNDYyNTYsNDYyNTcsNDYyNTgsNDYyNTksNDYyNjAsNDYyNjIsNDYyNjQsNDYyNjYsNDYyNjcsNDYyNjgsNDYyNjksNDYyNzAsNDYyNzEsNDYyNzMsNDYyNzQsNDYyNzUsNDYyNzcsNDYyNzgsNDYyNzksNDYyODEsNDYyODIsNDYyODMsNDYyODQsNDYy'@; put 'ODUsNDYyODYsNDYyODcsNDYyODksNDYyOTAsNDYyOTEsNDYyOTIsNDYyOTQsNDYyOTUsNDYyOTYsNDYyOTcsNDYyOTgsNDYyOTksNDYzMDIsNDYzMDMsNDYzMDUsNDYzMDYsNDYzMDksNDYzMTEsNDYzMTIsNDYzMTMsNDYzMTQsNDYzMTUsNDYzMTgsNDYzMjAsNDYzMjIsNDYzMjMsNDYzMjQs'@; put 'NDYzMjUsNDYzMjYsNDYzMjcsNDYzMjksNDYzMzAsNDYzMzEsNDYzMzIsNDYzMzMsNDYzMzQsNDYzMzUsNDYzMzYsNDYzMzcsNDYzMzgsNDYzMzksNDYzNDAsNDYzNDEsNDYzNDIsNDYzNDMsNDYzNDQsNDYzNDUsNDYzNDYsNDYzNDcsNDYzNDgsNDYzNDksNDYzNTAsNDYzNTEsNDYzNTIsNDYz'@; put 'NTMsNDYzNTQsNDYzNTUsNDYzNTgsNDYzNTksNDYzNjEsNDYzNjIsNDYzNjUsNDYzNjYsNDYzNjcsNDYzNjgsNDYzNjksNDYzNzAsNDYzNzEsNDYzNzQsNDYzNzksNDYzODAsNDYzODEsNDYzODIsNDYzODMsNDYzODYsNDYzODcsNDYzODksNDYzOTAsNDYzOTEsNDYzOTMsNDYzOTQsNDYzOTUs'@; put 'NDYzOTYsNDYzOTcsNDYzOTgsNDYzOTksNDY0MDIsNDY0MDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0MDcsNDY0MDgsNDY0MDksNDY0MTAsNDY0MTQsNDY0MTUsNDY0MTcsNDY0MTgsNDY0MTksNDY0MjEsNDY0MjIsNDY0MjMsNDY0MjQsNDY0MjUsNDY0MjYsNDY0MjcsNDY0'@; put 'MzAsNDY0MzQsNDY0MzUsNDY0MzYsNDY0MzcsNDY0MzgsNDY0MzksNDY0NDAsNDY0NDEsNDY0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0NDMsNDY0NDQsNDY0NDUsNDY0NDYsNDY0NDcsNDY0NDgsNDY0NDksNDY0NTAsNDY0NTEsNDY0NTIsNDY0NTMsNDY0NTQsNDY0NTUs'@; put 'NDY0NTYsNDY0NTcsNDY0NTgsNDY0NTksNDY0NjAsNDY0NjEsNDY0NjIsNDY0NjMsNDY0NjQsNDY0NjUsNDY0NjYsNDY0NjcsNDY0NjgsNDY0NjksNDY0NzAsNDY0NzEsNDY0NzIsNDY0NzMsNDY0NzQsNDY0NzUsNDY0NzYsNDY0NzcsNDY0NzgsNDY0NzksNDY0ODAsNDY0ODEsNDY0ODIsNDY0'@; put 'ODMsNDY0ODQsNDY0ODUsNDY0ODYsNDY0ODcsNDY0ODgsNDY0ODksNDY0OTAsNDY0OTEsNDY0OTIsNDY0OTMsNDY0OTQsNDY0OTUsNDY0OTgsNDY0OTksNDY1MDEsNDY1MDIsNDY1MDMsNDY1MDUsNDY1MDgsNDY1MDksNDY1MTAsNDY1MTEsNDY1MTQsNDY1MTgsNDY1MTksNDY1MjAsNDY1MjEs'@; put 'NDY1MjIsNDY1MjYsNDY1MjcsNDY1MjksNDY1MzAsNDY1MzEsNDY1MzMsNDY1MzQsNDY1MzUsNDY1MzYsNDY1MzcsNDY1MzgsNDY1MzksNDY1NDIsNDY1NDYsNDY1NDcsNDY1NDgsNDY1NDksNDY1NTAsNDY1NTEsNDY1NTMsNDY1NTQsNDY1NTUsNDY1NTYsNDY1NTcsNDY1NTgsNDY1NTksNDY1'@; put 'NjAsNDY1NjEsNDY1NjIsNDY1NjMsNDY1NjQsNDY1NjUsNDY1NjYsNDY1NjcsNDY1NjgsNDY1NjksNDY1NzAsNDY1NzEsNDY1NzMsNDY1NzQsNDY1NzUsNDY1NzYsNDY1NzcsNDY1NzgsNDY1NzksNDY1ODAsNDY1ODEsNDY1ODIsNDY1ODMsNDY1ODQsNDY1ODUsNDY1ODYsNDY1ODcsNDY1ODgs'@; put 'NDY1ODksNDY1OTAsNDY1OTEsNDY1OTIsNDY1OTMsNDY1OTQsNDY1OTUsNDY1OTYsNDY1OTcsNDY1OTgsNDY1OTksNDY2MDAsNDY2MDEsNDY2MDIsNDY2MDMsNDY2MDQsNDY2MDUsNDY2MDYsNDY2MDcsNDY2MTAsNDY2MTEsNDY2MTMsNDY2MTQsNDY2MTUsNDY2MTcsNDY2MTgsNDY2MTksNDY2'@; put 'MjAsNDY2MjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2MjIsNDY2MjMsNDY2MjQsNDY2MjUsNDY2MjYsNDY2MjcsNDY2MjgsNDY2MzAsNDY2MzEsNDY2MzIsNDY2MzMsNDY2MzQsNDY2MzUsNDY2MzcsNDY2MzgsNDY2MzksNDY2NDAsNDY2NDEsNDY2NDIsNDY2NDMsNDY2NDUs'@; put 'NDY2NDYsNDY2NDcsNDY2NDgsNDY2NDksNDY2NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2NTEsNDY2NTIsNDY2NTMsNDY2NTQsNDY2NTUsNDY2NTYsNDY2NTcsNDY2NTgsNDY2NTksNDY2NjAsNDY2NjEsNDY2NjIsNDY2NjMsNDY2NjUsNDY2NjYsNDY2NjcsNDY2NjgsNDY2'@; put 'NjksNDY2NzAsNDY2NzEsNDY2NzIsNDY2NzMsNDY2NzQsNDY2NzUsNDY2NzYsNDY2NzcsNDY2NzgsNDY2NzksNDY2ODAsNDY2ODEsNDY2ODIsNDY2ODMsNDY2ODQsNDY2ODUsNDY2ODYsNDY2ODcsNDY2ODgsNDY2ODksNDY2OTAsNDY2OTEsNDY2OTMsNDY2OTQsNDY2OTUsNDY2OTcsNDY2OTgs'@; put 'NDY2OTksNDY3MDAsNDY3MDEsNDY3MDIsNDY3MDMsNDY3MDQsNDY3MDUsNDY3MDYsNDY3MDcsNDY3MDgsNDY3MDksNDY3MTAsNDY3MTEsNDY3MTIsNDY3MTMsNDY3MTQsNDY3MTUsNDY3MTYsNDY3MTcsNDY3MTgsNDY3MTksNDY3MjAsNDY3MjEsNDY3MjIsNDY3MjMsNDY3MjQsNDY3MjUsNDY3'@; put 'MjYsNDY3MjcsNDY3MjgsNDY3MjksNDY3MzAsNDY3MzEsNDY3MzIsNDY3MzMsNDY3MzQsNDY3MzUsNDY3MzYsNDY3MzcsNDY3MzgsNDY3MzksNDY3NDAsNDY3NDEsNDY3NDIsNDY3NDMsNDY3NDQsNDY3NDUsNDY3NDYsNDY3NDcsNDY3NTAsNDY3NTEsNDY3NTMsNDY3NTQsNDY3NTUsNDY3NTcs'@; put 'NDY3NTgsNDY3NTksNDY3NjAsNDY3NjEsNDY3NjIsNDY3NjUsNDY3NjYsNDY3NjcsNDY3NjgsNDY3NzAsNDY3NzEsNDY3NzIsNDY3NzMsNDY3NzQsNDY3NzUsNDY3NzYsNDY3NzcsNDY3NzgsNDY3NzksNDY3ODAsNDY3ODEsNDY3ODIsNDY3ODMsNDY3ODQsNDY3ODUsNDY3ODYsNDY3ODcsNDY3'@; put 'ODgsNDY3ODksNDY3OTAsNDY3OTEsNDY3OTIsNDY3OTMsNDY3OTQsNDY3OTUsNDY3OTYsNDY3OTcsNDY3OTgsNDY3OTksNDY4MDAsNDY4MDEsNDY4MDIsNDY4MDMsNDY4MDUsNDY4MDYsNDY4MDcsNDY4MDgsNDY4MDksNDY4MTAsNDY4MTEsNDY4MTIsNDY4MTMsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsNDY4MTQsNDY4MTUsNDY4MTYsNDY4MTcsNDY4MTgsNDY4MTksNDY4MjAsNDY4MjEsNDY4MjIsNDY4MjMsNDY4MjQsNDY4MjUsNDY4MjYsNDY4MjcsNDY4MjgsNDY4MjksNDY4MzAsNDY4MzEsNDY4MzMsNDY4MzQsNDY4MzUsNDY4MzcsNDY4MzgsNDY4MzksNDY4NDEsNDY4'@; put 'NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4NDMsNDY4NDQsNDY4NDUsNDY4NDYsNDY4NDcsNDY4NTAsNDY4NTEsNDY4NTIsNDY4NTQsNDY4NTUsNDY4NTYsNDY4NTcsNDY4NTgsNDY4NTksNDY4NjAsNDY4NjEsNDY4NjIsNDY4NjMsNDY4NjQsNDY4NjUsNDY4NjYsNDY4Njcs'@; put 'NDY4NjgsNDY4NjksNDY4NzAsNDY4NzEsNDY4NzIsNDY4NzMsNDY4NzQsNDY4NzUsNDY4NzYsNDY4NzcsNDY4NzgsNDY4NzksNDY4ODAsNDY4ODEsNDY4ODIsNDY4ODMsNDY4ODQsNDY4ODUsNDY4ODYsNDY4ODcsNDY4OTAsNDY4OTEsNDY4OTMsNDY4OTQsNDY4OTcsNDY4OTgsNDY4OTksNDY5'@; put 'MDAsNDY5MDEsNDY5MDIsNDY5MDMsNDY5MDYsNDY5MDgsNDY5MDksNDY5MTAsNDY5MTEsNDY5MTIsNDY5MTMsNDY5MTQsNDY5MTUsNDY5MTcsNDY5MTgsNDY5MTksNDY5MjEsNDY5MjIsNDY5MjMsNDY5MjUsNDY5MjYsNDY5MjcsNDY5MjgsNDY5MjksNDY5MzAsNDY5MzEsNDY5MzQsNDY5MzUs'@; put 'NDY5MzYsNDY5MzcsNDY5MzgsNDY5MzksNDY5NDAsNDY5NDEsNDY5NDIsNDY5NDMsNDY5NDUsNDY5NDYsNDY5NDcsNDY5NDksNDY5NTAsNDY5NTEsNDY5NTMsNDY5NTQsNDY5NTUsNDY5NTYsNDY5NTcsNDY5NTgsNDY5NTksNDY5NjIsNDY5NjQsNDY5NjYsNDY5NjcsNDY5NjgsNDY5NjksNDY5'@; put 'NzAsNDY5NzEsNDY5NzQsNDY5NzUsNDY5NzcsNDY5NzgsNDY5NzksNDY5ODEsNDY5ODIsNDY5ODMsNDY5ODQsNDY5ODUsNDY5ODYsNDY5ODcsNDY5OTAsNDY5OTUsNDY5OTYsNDY5OTcsNDcwMDIsNDcwMDMsNDcwMDUsNDcwMDYsNDcwMDcsNDcwMDksNDcwMTAsNDcwMTEsNDcwMTIsNDcwMTMs'@; put 'NDcwMTQsNDcwMTUsNDcwMTgsNDcwMjIsNDcwMjMsNDcwMjQsNDcwMjUsNDcwMjYsNDcwMjcsNDcwMzAsNDcwMzEsNDcwMzMsNDcwMzQsNDcwMzUsNDcwMzYsNDcwMzcsNDcwMzgsNDcwMzksNDcwNDAsNDcwNDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNDIsNDcwNDMsNDcw'@; put 'NDQsNDcwNDUsNDcwNDYsNDcwNDgsNDcwNTAsNDcwNTEsNDcwNTIsNDcwNTMsNDcwNTQsNDcwNTUsNDcwNTYsNDcwNTcsNDcwNTgsNDcwNTksNDcwNjAsNDcwNjEsNDcwNjIsNDcwNjMsNDcwNjQsNDcwNjUsNDcwNjYsNDcwNjcsNDcwNjgsNDcwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsNDcwNzAsNDcwNzEsNDcwNzIsNDcwNzMsNDcwNzQsNDcwNzUsNDcwNzYsNDcwNzcsNDcwNzgsNDcwNzksNDcwODAsNDcwODEsNDcwODIsNDcwODMsNDcwODYsNDcwODcsNDcwODksNDcwOTAsNDcwOTEsNDcwOTMsNDcwOTQsNDcwOTUsNDcwOTYsNDcwOTcsNDcwOTgsNDcwOTksNDcx'@; put 'MDIsNDcxMDYsNDcxMDcsNDcxMDgsNDcxMDksNDcxMTAsNDcxMTQsNDcxMTUsNDcxMTcsNDcxMTgsNDcxMTksNDcxMjEsNDcxMjIsNDcxMjMsNDcxMjQsNDcxMjUsNDcxMjYsNDcxMjcsNDcxMzAsNDcxMzIsNDcxMzQsNDcxMzUsNDcxMzYsNDcxMzcsNDcxMzgsNDcxMzksNDcxNDIsNDcxNDMs'@; put 'NDcxNDUsNDcxNDYsNDcxNDcsNDcxNDksNDcxNTAsNDcxNTEsNDcxNTIsNDcxNTMsNDcxNTQsNDcxNTUsNDcxNTgsNDcxNjIsNDcxNjMsNDcxNjQsNDcxNjUsNDcxNjYsNDcxNjcsNDcxNjksNDcxNzAsNDcxNzEsNDcxNzMsNDcxNzQsNDcxNzUsNDcxNzYsNDcxNzcsNDcxNzgsNDcxNzksNDcx'@; put 'ODAsNDcxODEsNDcxODIsNDcxODMsNDcxODQsNDcxODYsNDcxODgsNDcxODksNDcxOTAsNDcxOTEsNDcxOTIsNDcxOTMsNDcxOTQsNDcxOTUsNDcxOTgsNDcxOTksNDcyMDEsNDcyMDIsNDcyMDMsNDcyMDUsNDcyMDYsNDcyMDcsNDcyMDgsNDcyMDksNDcyMTAsNDcyMTEsNDcyMTQsNDcyMTYs'@; put 'NDcyMTgsNDcyMTksNDcyMjAsNDcyMjEsNDcyMjIsNDcyMjMsNDcyMjUsNDcyMjYsNDcyMjcsNDcyMjksNDcyMzAsNDcyMzEsNDcyMzIsNDcyMzMsNDcyMzQsNDcyMzUsNDcyMzYsNDcyMzcsNDcyMzgsNDcyMzksNDcyNDAsNDcyNDEsNDcyNDIsNDcyNDMsNDcyNDQsNDcyNDYsNDcyNDcsNDcy'@; put 'NDgsNDcyNDksNDcyNTAsNDcyNTEsNDcyNTIsNDcyNTMsNDcyNTQsNDcyNTUsNDcyNTYsNDcyNTcsNDcyNTgsNDcyNTksNDcyNjAsNDcyNjEsNDcyNjIsNDcyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyNjQsNDcyNjUsNDcyNjYsNDcyNjcsNDcyNjgsNDcyNjksNDcyNzAs'@; put 'NDcyNzEsNDcyNzMsNDcyNzQsNDcyNzUsNDcyNzYsNDcyNzcsNDcyNzgsNDcyNzksNDcyODEsNDcyODIsNDcyODMsNDcyODUsNDcyODYsNDcyODcsNDcyODksNDcyOTAsNDcyOTEsNDcyOTIsNDcyOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyOTQsNDcyOTUsNDcyOTgsNDcz'@; put 'MDAsNDczMDIsNDczMDMsNDczMDQsNDczMDUsNDczMDYsNDczMDcsNDczMDksNDczMTAsNDczMTEsNDczMTMsNDczMTQsNDczMTUsNDczMTcsNDczMTgsNDczMTksNDczMjAsNDczMjEsNDczMjIsNDczMjMsNDczMjQsNDczMjYsNDczMjgsNDczMzAsNDczMzEsNDczMzIsNDczMzMsNDczMzQs'@; put 'NDczMzUsNDczMzgsNDczMzksNDczNDEsNDczNDIsNDczNDMsNDczNDUsNDczNDYsNDczNDcsNDczNDgsNDczNDksNDczNTAsNDczNTEsNDczNTQsNDczNTYsNDczNTgsNDczNTksNDczNjAsNDczNjEsNDczNjIsNDczNjMsNDczNjUsNDczNjYsNDczNjcsNDczNjgsNDczNjksNDczNzAsNDcz'@; put 'NzEsNDczNzIsNDczNzMsNDczNzQsNDczNzUsNDczNzYsNDczNzcsNDczNzgsNDczNzksNDczODAsNDczODEsNDczODIsNDczODMsNDczODUsNDczODYsNDczODcsNDczODgsNDczODksNDczOTAsNDczOTEsNDczOTMsNDczOTQsNDczOTUsNDczOTYsNDczOTcsNDczOTgsNDczOTksNDc0MDAs'@; put 'NDc0MDEsNDc0MDIsNDc0MDMsNDc0MDQsNDc0MDUsNDc0MDYsNDc0MDcsNDc0MDgsNDc0MDksNDc0MTAsNDc0MTEsNDc0MTIsNDc0MTMsNDc0MTQsNDc0MTUsNDc0MTYsNDc0MTcsNDc0MTgsNDc0MTksNDc0MjIsNDc0MjMsNDc0MjUsNDc0MjYsNDc0MjcsNDc0MjksNDc0MzAsNDc0MzEsNDc0'@; put 'MzIsNDc0MzMsNDc0MzQsNDc0MzUsNDc0MzcsNDc0MzgsNDc0NDAsNDc0NDIsNDc0NDMsNDc0NDQsNDc0NDUsNDc0NDYsNDc0NDcsNDc0NTAsNDc0NTEsNDc0NTMsNDc0NTQsNDc0NTUsNDc0NTcsNDc0NTgsNDc0NTksNDc0NjAsNDc0NjEsNDc0NjIsNDc0NjMsNDc0NjYsNDc0NjgsNDc0NzAs'@; put 'NDc0NzEsNDc0NzIsNDc0NzMsNDc0NzQsNDc0NzUsNDc0NzgsNDc0NzksNDc0ODEsNDc0ODIsNDc0ODMsNDc0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc0ODYsNDc0ODcsNDc0ODgsNDc0ODksNDc0OTAsNDc0OTEsNDc0OTQsNDc0OTYsNDc0OTksNDc1MDAsNDc1MDMsNDc1'@; put 'MDQsNDc1MDUsNDc1MDYsNDc1MDcsNDc1MDgsNDc1MDksNDc1MTAsNDc1MTEsNDc1MTIsNDc1MTMsNDc1MTQsNDc1MTUsNDc1MTYsNDc1MTcsNDc1MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc1MTksNDc1MjAsNDc1MjEsNDc1MjIsNDc1MjMsNDc1MjQsNDc1MjUsNDc1MjYs'@; put 'NDc1MjcsNDc1MjgsNDc1MjksNDc1MzAsNDc1MzEsNDc1MzQsNDc1MzUsNDc1MzcsNDc1MzgsNDc1MzksNDc1NDEsNDc1NDIsNDc1NDMsNDc1NDQsNDc1NDUsNDc1NDYsNDc1NDcsNDc1NTAsNDc1NTIsNDc1NTQsNDc1NTUsNDc1NTYsNDc1NTcsNDc1NTgsNDc1NTksNDc1NjIsNDc1NjMsNDc1'@; put 'NjUsNDc1NzEsNDc1NzIsNDc1NzMsNDc1NzQsNDc1NzUsNDc1NzgsNDc1ODAsNDc1ODMsNDc1ODQsNDc1ODYsNDc1OTAsNDc1OTEsNDc1OTMsNDc1OTQsNDc1OTUsNDc1OTcsNDc1OTgsNDc1OTksNDc2MDAsNDc2MDEsNDc2MDIsNDc2MDMsNDc2MDYsNDc2MTEsNDc2MTIsNDc2MTMsNDc2MTQs'@; put 'NDc2MTUsNDc2MTgsNDc2MTksNDc2MjAsNDc2MjEsNDc2MjIsNDc2MjMsNDc2MjUsNDc2MjYsNDc2MjcsNDc2MjgsNDc2MjksNDc2MzAsNDc2MzEsNDc2MzIsNDc2MzMsNDc2MzQsNDc2MzUsNDc2MzYsNDc2MzgsNDc2MzksNDc2NDAsNDc2NDEsNDc2NDIsNDc2NDMsNDc2NDQsNDc2NDUsNDc2'@; put 'NDYsNDc2NDcsNDc2NDgsNDc2NDksNDc2NTAsNDc2NTEsNDc2NTIsNDc2NTMsNDc2NTQsNDc2NTUsNDc2NTYsNDc2NTcsNDc2NTgsNDc2NTksNDc2NjAsNDc2NjEsNDc2NjIsNDc2NjMsNDc2NjQsNDc2NjUsNDc2NjYsNDc2NjcsNDc2NjgsNDc2NjksNDc2NzAsNDc2NzEsNDc2NzQsNDc2NzUs'@; put 'NDc2NzcsNDc2NzgsNDc2NzksNDc2ODEsNDc2ODMsNDc2ODQsNDc2ODUsNDc2ODYsNDc2ODcsNDc2OTAsNDc2OTIsNDc2OTUsNDc2OTYsNDc2OTcsNDc2OTgsNDc3MDIsNDc3MDMsNDc3MDUsNDc3MDYsNDc3MDcsNDc3MDksNDc3MTAsNDc3MTEsNDc3MTIsNDc3MTMsNDc3MTQsNDc3MTUsNDc3'@; put 'MTgsNDc3MjIsNDc3MjMsNDc3MjQsNDc3MjUsNDc3MjYsNDc3MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3MzAsNDc3MzEsNDc3MzMsNDc3MzQsNDc3MzUsNDc3MzcsNDc3MzgsNDc3MzksNDc3NDAsNDc3NDEsNDc3NDIsNDc3NDMsNDc3NDQsNDc3NDUsNDc3NDYsNDc3NTAs'@; put 'NDc3NTIsNDc3NTMsNDc3NTQsNDc3NTUsNDc3NTcsNDc3NTgsNDc3NTksNDc3NjAsNDc3NjEsNDc3NjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3NjMsNDc3NjQsNDc3NjUsNDc3NjYsNDc3NjcsNDc3NjgsNDc3NjksNDc3NzAsNDc3NzEsNDc3NzIsNDc3NzMsNDc3NzQsNDc3'@; put 'NzUsNDc3NzYsNDc3NzcsNDc3NzgsNDc3NzksNDc3ODAsNDc3ODEsNDc3ODIsNDc3ODMsNDc3ODYsNDc3ODksNDc3OTAsNDc3OTEsNDc3OTMsNDc3OTUsNDc3OTYsNDc3OTcsNDc3OTgsNDc3OTksNDc4MDIsNDc4MDQsNDc4MDYsNDc4MDcsNDc4MDgsNDc4MDksNDc4MTAsNDc4MTEsNDc4MTMs'@; put 'NDc4MTQsNDc4MTUsNDc4MTcsNDc4MTgsNDc4MTksNDc4MjAsNDc4MjEsNDc4MjIsNDc4MjMsNDc4MjQsNDc4MjUsNDc4MjYsNDc4MjcsNDc4MjgsNDc4MjksNDc4MzAsNDc4MzEsNDc4MzQsNDc4MzUsNDc4MzYsNDc4MzcsNDc4MzgsNDc4MzksNDc4NDAsNDc4NDEsNDc4NDIsNDc4NDMsNDc4'@; put 'NDQsNDc4NDUsNDc4NDYsNDc4NDcsNDc4NDgsNDc4NDksNDc4NTAsNDc4NTEsNDc4NTIsNDc4NTMsNDc4NTQsNDc4NTUsNDc4NTYsNDc4NTcsNDc4NTgsNDc4NTksNDc4NjAsNDc4NjEsNDc4NjIsNDc4NjMsNDc4NjQsNDc4NjUsNDc4NjYsNDc4NjcsNDc4NjksNDc4NzAsNDc4NzEsNDc4NzMs'@; put 'NDc4NzQsNDc4NzUsNDc4NzcsNDc4NzgsNDc4NzksNDc4ODAsNDc4ODEsNDc4ODIsNDc4ODMsNDc4ODQsNDc4ODYsNDc4ODgsNDc4OTAsNDc4OTEsNDc4OTIsNDc4OTMsNDc4OTQsNDc4OTUsNDc4OTcsNDc4OTgsNDc4OTksNDc5MDEsNDc5MDIsNDc5MDMsNDc5MDUsNDc5MDYsNDc5MDcsNDc5'@; put 'MDgsNDc5MDksNDc5MTAsNDc5MTEsNDc5MTIsNDc5MTQsNDc5MTYsNDc5MTcsNDc5MTgsNDc5MTksNDc5MjAsNDc5MjEsNDc5MjIsNDc5MjMsNDc5MjcsNDc5MjksNDc5MzAsNDc5MzUsNDc5MzYsNDc5MzcsNDc5MzgsNDc5MzksNDc5NDIsNDc5NDQsNDc5NDYsNDc5NDcsNDc5NDgsNDc5NTAs'@; put 'NDc5NTMsNDc5NTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5NTUsNDc5NTcsNDc5NTgsNDc5NTksNDc5NjEsNDc5NjIsNDc5NjMsNDc5NjQsNDc5NjUsNDc5NjYsNDc5NjcsNDc5NjgsNDc5NzAsNDc5NzIsNDc5NzMsNDc5NzQsNDc5NzUsNDc5NzYsNDc5NzcsNDc5NzgsNDc5'@; put 'NzksNDc5ODEsNDc5ODIsNDc5ODMsNDc5ODQsNDc5ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5ODYsNDc5ODcsNDc5ODgsNDc5ODksNDc5OTAsNDc5OTEsNDc5OTIsNDc5OTMsNDc5OTQsNDc5OTUsNDc5OTYsNDc5OTcsNDc5OTgsNDc5OTksNDhlMyw0ODAwMSw0ODAwMiw0'@; put 'ODAwMyw0ODAwNCw0ODAwNSw0ODAwNiw0ODAwNyw0ODAwOSw0ODAxMCw0ODAxMSw0ODAxMyw0ODAxNCw0ODAxNSw0ODAxNyw0ODAxOCw0ODAxOSw0ODAyMCw0ODAyMSw0ODAyMiw0ODAyMyw0ODAyNCw0ODAyNSw0ODAyNiw0ODAyNyw0ODAyOCw0ODAyOSw0ODAzMCw0ODAzMSw0ODAzMiw0ODAz'@; put 'Myw0ODAzNCw0ODAzNSw0ODAzNyw0ODAzOCw0ODAzOSw0ODA0MSw0ODA0Miw0ODA0Myw0ODA0NSw0ODA0Niw0ODA0Nyw0ODA0OCw0ODA0OSw0ODA1MCw0ODA1MSw0ODA1Myw0ODA1NCw0ODA1Niw0ODA1Nyw0ODA1OCw0ODA1OSw0ODA2MCw0ODA2MSw0ODA2Miw0ODA2Myw0ODA2NSw0ODA2Niw0'@; put 'ODA2Nyw0ODA2OSw0ODA3MCw0ODA3MSw0ODA3Myw0ODA3NCw0ODA3NSw0ODA3Niw0ODA3Nyw0ODA3OCw0ODA3OSw0ODA4MSw0ODA4Miw0ODA4NCw0ODA4NSw0ODA4Niw0ODA4Nyw0ODA4OCw0ODA4OSw0ODA5MCw0ODA5MSw0ODA5Miw0ODA5Myw0ODA5NCw0ODA5NSw0ODA5Niw0ODA5Nyw0ODA5'@; put 'OCw0ODA5OSw0ODEwMCw0ODEwMSw0ODEwMiw0ODEwMyw0ODEwNCw0ODEwNSw0ODEwNiw0ODEwNyw0ODEwOCw0ODEwOSw0ODExMCw0ODExMSw0ODExMiw0ODExMyw0ODExNCw0ODExNSw0ODExNiw0ODExNyw0ODExOCw0ODExOSw0ODEyMiw0ODEyMyw0ODEyNSw0ODEyNiw0ODEyOSw0ODEzMSw0'@; put 'ODEzMiw0ODEzMyw0ODEzNCw0ODEzNSw0ODEzOCw0ODE0Miw0ODE0NCw0ODE0Niw0ODE0Nyw0ODE1Myw0ODE1NCw0ODE2MCw0ODE2MSw0ODE2Miw0ODE2Myw0ODE2Niw0ODE2OCw0ODE3MCw0ODE3MSw0ODE3Miw0ODE3NCw0ODE3NSw0ODE3OCw0ODE3OSw0ODE4MSxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCw0ODE4Miw0ODE4Myw0ODE4NSw0ODE4Niw0ODE4Nyw0ODE4OCw0ODE4OSw0ODE5MCw0ODE5MSw0ODE5NCw0ODE5OCw0ODE5OSw0ODIwMCw0ODIwMiw0ODIwMyw0ODIwNiw0ODIwNyw0ODIwOSw0ODIxMCw0ODIxMSw0ODIxMiw0ODIxMyw0ODIxNCw0ODIxNSw0ODIxNiw0'@; put 'ODIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODIxOCw0ODIxOSw0ODIyMCw0ODIyMiw0ODIyMyw0ODIyNCw0ODIyNSw0ODIyNiw0ODIyNyw0ODIyOCw0ODIyOSw0ODIzMCw0ODIzMSw0ODIzMiw0ODIzMyw0ODIzNCw0ODIzNSw0ODIzNiw0ODIzNyw0ODIzOCw0ODIzOSw0ODI0'@; put 'MCw0ODI0MSw0ODI0Miw0ODI0Myw0ODI0NCw0ODI0NSw0ODI0Niw0ODI0Nyw0ODI0OCw0ODI0OSw0ODI1MCw0ODI1MSw0ODI1Miw0ODI1Myw0ODI1NCw0ODI1NSw0ODI1Niw0ODI1Nyw0ODI1OCw0ODI1OSw0ODI2Miw0ODI2Myw0ODI2NSw0ODI2Niw0ODI2OSw0ODI3MSw0ODI3Miw0ODI3Myw0'@; put 'ODI3NCw0ODI3NSw0ODI3OCw0ODI4MCw0ODI4Myw0ODI4NCw0ODI4NSw0ODI4Niw0ODI4Nyw0ODI5MCw0ODI5MSw0ODI5Myw0ODI5NCw0ODI5Nyw0ODI5OCw0ODI5OSw0ODMwMCw0ODMwMSw0ODMwMiw0ODMwMyw0ODMwNiw0ODMxMCw0ODMxMSw0ODMxMiw0ODMxMyw0ODMxNCw0ODMxNSw0ODMx'@; put 'OCw0ODMxOSw0ODMyMSw0ODMyMiw0ODMyMyw0ODMyNSw0ODMyNiw0ODMyNyw0ODMyOCw0ODMyOSw0ODMzMCw0ODMzMSw0ODMzMiw0ODMzNCw0ODMzOCw0ODMzOSw0ODM0MCw0ODM0Miw0ODM0Myw0ODM0NSw0ODM0Niw0ODM0Nyw0ODM0OSw0ODM1MCw0ODM1MSw0ODM1Miw0ODM1Myw0ODM1NCw0'@; put 'ODM1NSw0ODM1Niw0ODM1Nyw0ODM1OCw0ODM1OSw0ODM2MCw0ODM2MSw0ODM2Miw0ODM2Myw0ODM2NCw0ODM2NSw0ODM2Niw0ODM2Nyw0ODM2OCw0ODM2OSw0ODM3MCw0ODM3MSw0ODM3NSw0ODM3Nyw0ODM3OCw0ODM3OSw0ODM4MSw0ODM4Miw0ODM4Myw0ODM4NCw0ODM4NSw0ODM4Niw0ODM4'@; put 'Nyw0ODM5MCw0ODM5Miw0ODM5NCw0ODM5NSw0ODM5Niw0ODM5Nyw0ODM5OCw0ODM5OSw0ODQwMSw0ODQwMiw0ODQwMyw0ODQwNSw0ODQwNiw0ODQwNyw0ODQwOCw0ODQwOSw0ODQxMCw0ODQxMSw0ODQxMiw0ODQxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQxNCw0ODQxNSw0'@; put 'ODQxNiw0ODQxNyw0ODQxOCw0ODQxOSw0ODQyMSw0ODQyMiw0ODQyMyw0ODQyNCw0ODQyNSw0ODQyNiw0ODQyNyw0ODQyOSw0ODQzMCw0ODQzMSw0ODQzMiw0ODQzMyw0ODQzNCw0ODQzNSw0ODQzNiw0ODQzNyw0ODQzOCw0ODQzOSw0ODQ0MCw0ODQ0MSxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCw0ODQ0Miw0ODQ0Myw0ODQ0NCw0ODQ0NSw0ODQ0Niw0ODQ0Nyw0ODQ0OSw0ODQ1MCw0ODQ1MSw0ODQ1Miw0ODQ1Myw0ODQ1NCw0ODQ1NSw0ODQ1OCw0ODQ1OSw0ODQ2MSw0ODQ2Miw0ODQ2Myw0ODQ2NSw0ODQ2Niw0ODQ2Nyw0ODQ2OCw0ODQ2OSw0ODQ3MCw0ODQ3MSw0ODQ3NCw0'@; put 'ODQ3NSw0ODQ3Niw0ODQ3Nyw0ODQ3OCw0ODQ3OSw0ODQ4MCw0ODQ4MSw0ODQ4Miw0ODQ4Myw0ODQ4NSw0ODQ4Niw0ODQ4Nyw0ODQ4OSw0ODQ5MCw0ODQ5MSw0ODQ5Miw0ODQ5Myw0ODQ5NCw0ODQ5NSw0ODQ5Niw0ODQ5Nyw0ODQ5OCw0ODQ5OSw0ODUwMCw0ODUwMSw0ODUwMiw0ODUwMyw0ODUw'@; put 'NCw0ODUwNSw0ODUwNiw0ODUwNyw0ODUwOCw0ODUwOSw0ODUxMCw0ODUxMSw0ODUxNCw0ODUxNSw0ODUxNyw0ODUxOCw0ODUyMyw0ODUyNCw0ODUyNSw0ODUyNiw0ODUyNyw0ODUzMCw0ODUzMiw0ODUzNCw0ODUzNSw0ODUzNiw0ODUzOSw0ODU0MSw0ODU0Miw0ODU0Myw0ODU0NCw0ODU0NSw0'@; put 'ODU0Niw0ODU0Nyw0ODU0OSw0ODU1MCw0ODU1MSw0ODU1Miw0ODU1Myw0ODU1NCw0ODU1NSw0ODU1Niw0ODU1Nyw0ODU1OCw0ODU1OSw0ODU2MSw0ODU2Miw0ODU2Myw0ODU2NCw0ODU2NSw0ODU2Niw0ODU2Nyw0ODU2OSw0ODU3MCw0ODU3MSw0ODU3Miw0ODU3Myw0ODU3NCw0ODU3NSw0ODU3'@; put 'Niw0ODU3Nyw0ODU3OCw0ODU3OSw0ODU4MCw0ODU4MSw0ODU4Miw0ODU4Myw0ODU4NCw0ODU4NSw0ODU4Niw0ODU4Nyw0ODU4OCw0ODU4OSw0ODU5MCw0ODU5MSw0ODU5Miw0ODU5Myw0ODU5NCw0ODU5NSw0ODU5OCw0ODU5OSw0ODYwMSw0ODYwMiw0ODYwMyw0ODYwNSw0ODYwNiw0ODYwNyw0'@; put 'ODYwOCw0ODYwOSw0ODYxMCw0ODYxMSw0ODYxMiw0ODYxMyw0ODYxNCw0ODYxNSw0ODYxNiw0ODYxOCw0ODYxOSw0ODYyMCw0ODYyMSw0ODYyMiw0ODYyMyw0ODYyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODYyNiw0ODYyNyw0ODYyOSw0ODYzMCw0ODYzMSw0ODYzMyw0ODYz'@; put 'NCw0ODYzNSw0ODYzNiw0ODYzNyw0ODYzOCw0ODYzOSw0ODY0MSw0ODY0Miw0ODY0NCw0ODY0Niw0ODY0Nyw0ODY0OCw0ODY0OSw0ODY1MCw0ODY1MSw0ODY1NCw0ODY1NSw0ODY1Nyw0ODY1OCw0ODY1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODY2MSw0ODY2Miw0ODY2Myw0'@; put 'ODY2NCw0ODY2NSw0ODY2Niw0ODY2Nyw0ODY3MCw0ODY3Miw0ODY3Myw0ODY3NCw0ODY3NSw0ODY3Niw0ODY3Nyw0ODY3OCw0ODY3OSw0ODY4MCw0ODY4MSw0ODY4Miw0ODY4Myw0ODY4NCw0ODY4NSw0ODY4Niw0ODY4Nyw0ODY4OCw0ODY4OSw0ODY5MCw0ODY5MSw0ODY5Miw0ODY5Myw0ODY5'@; put 'NCw0ODY5NSw0ODY5Niw0ODY5Nyw0ODY5OCw0ODY5OSw0ODcwMCw0ODcwMSw0ODcwMiw0ODcwMyw0ODcwNCw0ODcwNSw0ODcwNiw0ODcwNyw0ODcxMCw0ODcxMSw0ODcxMyw0ODcxNCw0ODcxNSw0ODcxNyw0ODcxOSw0ODcyMCw0ODcyMSw0ODcyMiw0ODcyMyw0ODcyNiw0ODcyOCw0ODczMiw0'@; put 'ODczMyw0ODczNCw0ODczNSw0ODczOCw0ODczOSw0ODc0MSw0ODc0Miw0ODc0Myw0ODc0NSw0ODc0Nyw0ODc0OCw0ODc0OSw0ODc1MCw0ODc1MSw0ODc1NCw0ODc1OCw0ODc1OSw0ODc2MCw0ODc2MSw0ODc2Miw0ODc2Niw0ODc2Nyw0ODc2OSw0ODc3MCw0ODc3MSw0ODc3Myw0ODc3NCw0ODc3'@; put 'NSw0ODc3Niw0ODc3Nyw0ODc3OCw0ODc3OSw0ODc4Miw0ODc4Niw0ODc4Nyw0ODc4OCw0ODc4OSw0ODc5MCw0ODc5MSw0ODc5NCw0ODc5NSw0ODc5Niw0ODc5Nyw0ODc5OCw0ODc5OSw0ODgwMCw0ODgwMSw0ODgwMiw0ODgwMyw0ODgwNCw0ODgwNSw0ODgwNiw0ODgwNyw0ODgwOSw0ODgxMCw0'@; put 'ODgxMSw0ODgxMiw0ODgxMyw0ODgxNCw0ODgxNSw0ODgxNiw0ODgxNyw0ODgxOCw0ODgxOSw0ODgyMCw0ODgyMSw0ODgyMiw0ODgyMyw0ODgyNCw0ODgyNSw0ODgyNiw0ODgyNyw0ODgyOCw0ODgyOSw0ODgzMCw0ODgzMSw0ODgzMiw0ODgzMyw0ODgzNCw0ODgzNSw0ODgzNiw0ODgzNyw0ODgz'@; put 'OCw0ODgzOSw0ODg0MCw0ODg0MSw0ODg0Miw0ODg0Myw0ODg0NCw0ODg0NSw0ODg0Niw0ODg0Nyw0ODg1MCw0ODg1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg1Myw0ODg1NCw0ODg1Nyw0ODg1OCw0ODg1OSw0ODg2MCw0ODg2MSw0ODg2Miw0ODg2Myw0ODg2NSw0ODg2Niw0'@; put 'ODg3MCw0ODg3MSw0ODg3Miw0ODg3Myw0ODg3NCw0ODg3NSw0ODg3Nyw0ODg3OCw0ODg3OSw0ODg4MCw0ODg4MSw0ODg4Miw0ODg4Myw0ODg4NCw0ODg4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg4Niw0ODg4Nyw0ODg4OCw0ODg4OSw0ODg5MCw0ODg5MSw0ODg5Miw0ODg5'@; put 'Myw0ODg5NCw0ODg5NSw0ODg5Niw0ODg5OCw0ODg5OSw0ODkwMCw0ODkwMSw0ODkwMiw0ODkwMyw0ODkwNiw0ODkwNyw0ODkwOCw0ODkwOSw0ODkxMCw0ODkxMSw0ODkxMiw0ODkxMyw0ODkxNCw0ODkxNSw0ODkxNiw0ODkxNyw0ODkxOCw0ODkxOSw0ODkyMiw0ODkyNiw0ODkyNyw0ODkyOCw0'@; put 'ODkyOSw0ODkzMCw0ODkzMSw0ODkzMiw0ODkzMyw0ODkzNCw0ODkzNSw0ODkzNiw0ODkzNyw0ODkzOCw0ODkzOSw0ODk0MCw0ODk0MSw0ODk0Miw0ODk0Myw0ODk0NCw0ODk0NSw0ODk0Niw0ODk0Nyw0ODk0OCw0ODk0OSw0ODk1MCw0ODk1MSw0ODk1Miw0ODk1Myw0ODk1NCw0ODk1NSw0ODk1'@; put 'Niw0ODk1Nyw0ODk1OCw0ODk1OSw0ODk2Miw0ODk2Myw0ODk2NSw0ODk2Niw0ODk2Nyw0ODk2OSw0ODk3MCw0ODk3MSw0ODk3Miw0ODk3Myw0ODk3NCw0ODk3NSw0ODk3OCw0ODk3OSw0ODk4MCw0ODk4Miw0ODk4Myw0ODk4NCw0ODk4NSw0ODk4Niw0ODk4Nyw0ODk4OCw0ODk4OSw0ODk5MCw0'@; put 'ODk5MSw0ODk5Miw0ODk5Myw0ODk5NCw0ODk5NSw0ODk5Niw0ODk5Nyw0ODk5OCw0ODk5OSw0OWUzLDQ5MDAxLDQ5MDAyLDQ5MDAzLDQ5MDA0LDQ5MDA1LDQ5MDA2LDQ5MDA3LDQ5MDA4LDQ5MDA5LDQ5MDEwLDQ5MDExLDQ5MDEyLDQ5MDEzLDQ5MDE0LDQ5MDE1LDQ5MDE2LDQ5MDE3LDQ5MDE4'@; put 'LDQ5MDE5LDQ5MDIwLDQ5MDIxLDQ5MDIyLDQ5MDIzLDQ5MDI0LDQ5MDI1LDQ5MDI2LDQ5MDI3LDQ5MDI4LDQ5MDI5LDQ5MDMwLDQ5MDMxLDQ5MDMyLDQ5MDMzLDQ5MDM0LDQ5MDM1LDQ5MDM2LDQ5MDM3LDQ5MDM4LDQ5MDM5LDQ5MDQwLDQ5MDQxLDQ5MDQyLDQ5MDQzLDQ5MDQ1LDQ5MDQ2LDQ5'@; put 'MDQ3LDQ5MDQ4LDQ5MDQ5LDQ5MDUwLDQ5MDUxLDQ5MDUyLDQ5MDUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDU0LDQ5MDU1LDQ5MDU2LDQ5MDU3LDQ5MDU4LDQ5MDU5LDQ5MDYwLDQ5MDYxLDQ5MDYyLDQ5MDYzLDQ5MDY0LDQ5MDY1LDQ5MDY2LDQ5MDY3LDQ5MDY4LDQ5MDY5'@; put 'LDQ5MDcwLDQ5MDcxLDQ5MDczLDQ5MDc0LDQ5MDc1LDQ5MDc2LDQ5MDc3LDQ5MDc4LDQ5MDc5LDQ5MDgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDgxLDQ5MDgyLDQ5MDgzLDQ5MDg0LDQ5MDg1LDQ5MDg2LDQ5MDg3LDQ5MDg4LDQ5MDg5LDQ5MDkwLDQ5MDkxLDQ5MDkyLDQ5'@; put 'MDk0LDQ5MDk1LDQ5MDk2LDQ5MDk3LDQ5MDk4LDQ5MDk5LDQ5MTAyLDQ5MTAzLDQ5MTA1LDQ5MTA2LDQ5MTA3LDQ5MTA5LDQ5MTEwLDQ5MTExLDQ5MTEyLDQ5MTEzLDQ5MTE0LDQ5MTE1LDQ5MTE3LDQ5MTE4LDQ5MTIwLDQ5MTIyLDQ5MTIzLDQ5MTI0LDQ5MTI1LDQ5MTI2LDQ5MTI3LDQ5MTI4'@; put 'LDQ5MTI5LDQ5MTMwLDQ5MTMxLDQ5MTMyLDQ5MTMzLDQ5MTM0LDQ5MTM1LDQ5MTM2LDQ5MTM3LDQ5MTM4LDQ5MTM5LDQ5MTQwLDQ5MTQxLDQ5MTQyLDQ5MTQzLDQ5MTQ0LDQ5MTQ1LDQ5MTQ2LDQ5MTQ3LDQ5MTQ4LDQ5MTQ5LDQ5MTUwLDQ5MTUxLDQ5MTUyLDQ5MTUzLDQ5MTU0LDQ5MTU1LDQ5'@; put 'MTU2LDQ5MTU3LDQ5MTU4LDQ5MTU5LDQ5MTYwLDQ5MTYxLDQ5MTYyLDQ5MTYzLDQ5MTY0LDQ5MTY1LDQ5MTY2LDQ5MTY3LDQ5MTY4LDQ5MTY5LDQ5MTcwLDQ5MTcxLDQ5MTcyLDQ5MTczLDQ5MTc0LDQ5MTc1LDQ5MTc2LDQ5MTc3LDQ5MTc4LDQ5MTc5LDQ5MTgwLDQ5MTgxLDQ5MTgyLDQ5MTgz'@; put 'LDQ5MTg0LDQ5MTg1LDQ5MTg2LDQ5MTg3LDQ5MTg4LDQ5MTg5LDQ5MTkwLDQ5MTkxLDQ5MTkyLDQ5MTkzLDQ5MTk0LDQ5MTk1LDQ5MTk2LDQ5MTk3LDQ5MTk4LDQ5MTk5LDQ5MjAwLDQ5MjAxLDQ5MjAyLDQ5MjAzLDQ5MjA0LDQ5MjA1LDQ5MjA2LDQ5MjA3LDQ5MjA4LDQ5MjA5LDQ5MjEwLDQ5'@; put 'MjExLDQ5MjEzLDQ5MjE0LDQ5MjE1LDQ5MjE2LDQ5MjE3LDQ5MjE4LDQ5MjE5LDQ5MjIwLDQ5MjIxLDQ5MjIyLDQ5MjIzLDQ5MjI0LDQ5MjI1LDQ5MjI2LDQ5MjI3LDQ5MjI4LDQ5MjI5LDQ5MjMwLDQ5MjMxLDQ5MjMyLDQ5MjM0LDQ5MjM1LDQ5MjM2LDQ5MjM3LDQ5MjM4LDQ5MjM5LDQ5MjQx'@; put 'LDQ5MjQyLDQ5MjQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MjQ1LDQ5MjQ2LDQ5MjQ3LDQ5MjQ5LDQ5MjUwLDQ5MjUxLDQ5MjUyLDQ5MjUzLDQ5MjU0LDQ5MjU1LDQ5MjU4LDQ5MjU5LDQ5MjYwLDQ5MjYxLDQ5MjYyLDQ5MjYzLDQ5MjY0LDQ5MjY1LDQ5MjY2LDQ5MjY3LDQ5'@; put 'MjY4LDQ5MjY5LDQ5MjcwLDQ5MjcxLDQ5MjcyLDQ5MjczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5Mjc0LDQ5Mjc1LDQ5Mjc2LDQ5Mjc3LDQ5Mjc4LDQ5Mjc5LDQ5MjgwLDQ5MjgxLDQ5MjgyLDQ5MjgzLDQ5Mjg0LDQ5Mjg1LDQ5Mjg2LDQ5Mjg3LDQ5Mjg4LDQ5Mjg5LDQ5Mjkw'@; put 'LDQ5MjkxLDQ5MjkyLDQ5MjkzLDQ5Mjk0LDQ5Mjk1LDQ5Mjk4LDQ5Mjk5LDQ5MzAxLDQ5MzAyLDQ5MzAzLDQ5MzA1LDQ5MzA2LDQ5MzA3LDQ5MzA4LDQ5MzA5LDQ5MzEwLDQ5MzExLDQ5MzE0LDQ5MzE2LDQ5MzE4LDQ5MzE5LDQ5MzIwLDQ5MzIxLDQ5MzIyLDQ5MzIzLDQ5MzI2LDQ5MzI5LDQ5'@; put 'MzMwLDQ5MzM1LDQ5MzM2LDQ5MzM3LDQ5MzM4LDQ5MzM5LDQ5MzQyLDQ5MzQ2LDQ5MzQ3LDQ5MzQ4LDQ5MzUwLDQ5MzUxLDQ5MzU0LDQ5MzU1LDQ5MzU3LDQ5MzU4LDQ5MzU5LDQ5MzYxLDQ5MzYyLDQ5MzYzLDQ5MzY0LDQ5MzY1LDQ5MzY2LDQ5MzY3LDQ5MzcwLDQ5Mzc0LDQ5Mzc1LDQ5Mzc2'@; put 'LDQ5Mzc3LDQ5Mzc4LDQ5Mzc5LDQ5MzgyLDQ5MzgzLDQ5Mzg1LDQ5Mzg2LDQ5Mzg3LDQ5Mzg5LDQ5MzkwLDQ5MzkxLDQ5MzkyLDQ5MzkzLDQ5Mzk0LDQ5Mzk1LDQ5Mzk4LDQ5NDAwLDQ5NDAyLDQ5NDAzLDQ5NDA0LDQ5NDA1LDQ5NDA2LDQ5NDA3LDQ5NDA5LDQ5NDEwLDQ5NDExLDQ5NDEzLDQ5'@; put 'NDE0LDQ5NDE1LDQ5NDE3LDQ5NDE4LDQ5NDE5LDQ5NDIwLDQ5NDIxLDQ5NDIyLDQ5NDIzLDQ5NDI1LDQ5NDI2LDQ5NDI3LDQ5NDI4LDQ5NDMwLDQ5NDMxLDQ5NDMyLDQ5NDMzLDQ5NDM0LDQ5NDM1LDQ5NDQxLDQ5NDQyLDQ5NDQ1LDQ5NDQ4LDQ5NDQ5LDQ5NDUwLDQ5NDUxLDQ5NDU0LDQ5NDU4'@; put 'LDQ5NDU5LDQ5NDYwLDQ5NDYxLDQ5NDYzLDQ5NDY2LDQ5NDY3LDQ5NDY5LDQ5NDcwLDQ5NDcxLDQ5NDczLDQ5NDc0LDQ5NDc1LDQ5NDc2LDQ5NDc3LDQ5NDc4LDQ5NDc5LDQ5NDgyLDQ5NDg2LDQ5NDg3LDQ5NDg4LDQ5NDg5LDQ5NDkwLDQ5NDkxLDQ5NDk0LDQ5NDk1LG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLDQ5NDk3LDQ5NDk4LDQ5NDk5LDQ5NTAxLDQ5NTAyLDQ5NTAzLDQ5NTA0LDQ5NTA1LDQ5NTA2LDQ5NTA3LDQ5NTEwLDQ5NTE0LDQ5NTE1LDQ5NTE2LDQ5NTE3LDQ5NTE4LDQ5NTE5LDQ5NTIxLDQ5NTIyLDQ5NTIzLDQ5NTI1LDQ5NTI2LDQ5NTI3LDQ5NTI5LDQ5NTMw'@; put 'LDQ5NTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NTMyLDQ5NTMzLDQ5NTM0LDQ5NTM1LDQ5NTM2LDQ5NTM3LDQ5NTM4LDQ5NTM5LDQ5NTQwLDQ5NTQyLDQ5NTQzLDQ5NTQ0LDQ5NTQ1LDQ5NTQ2LDQ5NTQ3LDQ5NTUxLDQ5NTUzLDQ5NTU0LDQ5NTU1LDQ5NTU3LDQ5NTU5LDQ5'@; put 'NTYwLDQ5NTYxLDQ5NTYyLDQ5NTYzLDQ5NTY2LDQ5NTY4LDQ5NTcwLDQ5NTcxLDQ5NTcyLDQ5NTc0LDQ5NTc1LDQ5NTc4LDQ5NTc5LDQ5NTgxLDQ5NTgyLDQ5NTgzLDQ5NTg1LDQ5NTg2LDQ5NTg3LDQ5NTg4LDQ5NTg5LDQ5NTkwLDQ5NTkxLDQ5NTkyLDQ5NTkzLDQ5NTk0LDQ5NTk1LDQ5NTk2'@; put 'LDQ5NTk4LDQ5NTk5LDQ5NjAwLDQ5NjAxLDQ5NjAyLDQ5NjAzLDQ5NjA1LDQ5NjA2LDQ5NjA3LDQ5NjA5LDQ5NjEwLDQ5NjExLDQ5NjEzLDQ5NjE0LDQ5NjE1LDQ5NjE2LDQ5NjE3LDQ5NjE4LDQ5NjE5LDQ5NjIxLDQ5NjIyLDQ5NjI1LDQ5NjI2LDQ5NjI3LDQ5NjI4LDQ5NjI5LDQ5NjMwLDQ5'@; put 'NjMxLDQ5NjMzLDQ5NjM0LDQ5NjM1LDQ5NjM3LDQ5NjM4LDQ5NjM5LDQ5NjQxLDQ5NjQyLDQ5NjQzLDQ5NjQ0LDQ5NjQ1LDQ5NjQ2LDQ5NjQ3LDQ5NjUwLDQ5NjUyLDQ5NjUzLDQ5NjU0LDQ5NjU1LDQ5NjU2LDQ5NjU3LDQ5NjU4LDQ5NjU5LDQ5NjYyLDQ5NjYzLDQ5NjY1LDQ5NjY2LDQ5NjY3'@; put 'LDQ5NjY5LDQ5NjcwLDQ5NjcxLDQ5NjcyLDQ5NjczLDQ5Njc0LDQ5Njc1LDQ5Njc4LDQ5NjgwLDQ5NjgyLDQ5NjgzLDQ5Njg0LDQ5Njg1LDQ5Njg2LDQ5Njg3LDQ5NjkwLDQ5NjkxLDQ5NjkzLDQ5Njk0LDQ5Njk3LDQ5Njk4LDQ5Njk5LDQ5NzAwLDQ5NzAxLDQ5NzAyLDQ5NzAzLDQ5NzA2LDQ5'@; put 'NzA4LDQ5NzEwLDQ5NzEyLDQ5NzE1LDQ5NzE3LDQ5NzE4LDQ5NzE5LDQ5NzIwLDQ5NzIxLDQ5NzIyLDQ5NzIzLDQ5NzI0LDQ5NzI1LDQ5NzI2LDQ5NzI3LDQ5NzI4LDQ5NzI5LDQ5NzMwLDQ5NzMxLDQ5NzMyLDQ5NzMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NzM0LDQ5NzM1'@; put 'LDQ5NzM3LDQ5NzM4LDQ5NzM5LDQ5NzQwLDQ5NzQxLDQ5NzQyLDQ5NzQzLDQ5NzQ2LDQ5NzQ3LDQ5NzQ5LDQ5NzUwLDQ5NzUxLDQ5NzUzLDQ5NzU0LDQ5NzU1LDQ5NzU2LDQ5NzU3LDQ5NzU4LDQ5NzU5LDQ5NzYxLDQ5NzYyLDQ5NzYzLDQ5NzY0LDQ5NzY2LG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLDQ5NzY3LDQ5NzY4LDQ5NzY5LDQ5NzcwLDQ5NzcxLDQ5Nzc0LDQ5Nzc1LDQ5Nzc3LDQ5Nzc4LDQ5Nzc5LDQ5NzgxLDQ5NzgyLDQ5NzgzLDQ5Nzg0LDQ5Nzg1LDQ5Nzg2LDQ5Nzg3LDQ5NzkwLDQ5NzkyLDQ5Nzk0LDQ5Nzk1LDQ5Nzk2LDQ5Nzk3LDQ5Nzk4LDQ5Nzk5LDQ5ODAy'@; put 'LDQ5ODAzLDQ5ODA0LDQ5ODA1LDQ5ODA2LDQ5ODA3LDQ5ODA5LDQ5ODEwLDQ5ODExLDQ5ODEyLDQ5ODEzLDQ5ODE0LDQ5ODE1LDQ5ODE3LDQ5ODE4LDQ5ODIwLDQ5ODIyLDQ5ODIzLDQ5ODI0LDQ5ODI1LDQ5ODI2LDQ5ODI3LDQ5ODMwLDQ5ODMxLDQ5ODMzLDQ5ODM0LDQ5ODM1LDQ5ODM4LDQ5'@; put 'ODM5LDQ5ODQwLDQ5ODQxLDQ5ODQyLDQ5ODQzLDQ5ODQ2LDQ5ODQ4LDQ5ODUwLDQ5ODUxLDQ5ODUyLDQ5ODUzLDQ5ODU0LDQ5ODU1LDQ5ODU2LDQ5ODU3LDQ5ODU4LDQ5ODU5LDQ5ODYwLDQ5ODYxLDQ5ODYyLDQ5ODYzLDQ5ODY0LDQ5ODY1LDQ5ODY2LDQ5ODY3LDQ5ODY4LDQ5ODY5LDQ5ODcw'@; put 'LDQ5ODcxLDQ5ODcyLDQ5ODczLDQ5ODc0LDQ5ODc1LDQ5ODc2LDQ5ODc3LDQ5ODc4LDQ5ODc5LDQ5ODgwLDQ5ODgxLDQ5ODgyLDQ5ODgzLDQ5ODg2LDQ5ODg3LDQ5ODg5LDQ5ODkwLDQ5ODkzLDQ5ODk0LDQ5ODk1LDQ5ODk2LDQ5ODk3LDQ5ODk4LDQ5OTAyLDQ5OTA0LDQ5OTA2LDQ5OTA3LDQ5'@; put 'OTA4LDQ5OTA5LDQ5OTExLDQ5OTE0LDQ5OTE3LDQ5OTE4LDQ5OTE5LDQ5OTIxLDQ5OTIyLDQ5OTIzLDQ5OTI0LDQ5OTI1LDQ5OTI2LDQ5OTI3LDQ5OTMwLDQ5OTMxLDQ5OTM0LDQ5OTM1LDQ5OTM2LDQ5OTM3LDQ5OTM4LDQ5OTQyLDQ5OTQzLDQ5OTQ1LDQ5OTQ2LDQ5OTQ3LDQ5OTQ5LDQ5OTUw'@; put 'LDQ5OTUxLDQ5OTUyLDQ5OTUzLDQ5OTU0LDQ5OTU1LDQ5OTU4LDQ5OTU5LDQ5OTYyLDQ5OTYzLDQ5OTY0LDQ5OTY1LDQ5OTY2LDQ5OTY3LDQ5OTY4LDQ5OTY5LDQ5OTcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTcxLDQ5OTcyLDQ5OTczLDQ5OTc0LDQ5OTc1LDQ5OTc2LDQ5'@; put 'OTc3LDQ5OTc4LDQ5OTc5LDQ5OTgwLDQ5OTgxLDQ5OTgyLDQ5OTgzLDQ5OTg0LDQ5OTg1LDQ5OTg2LDQ5OTg3LDQ5OTg4LDQ5OTkwLDQ5OTkxLDQ5OTkyLDQ5OTkzLDQ5OTk0LDQ5OTk1LDQ5OTk2LDQ5OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTk4LDQ5OTk5LDVlNCw1'@; put 'MDAwMSw1MDAwMiw1MDAwMyw1MDAwNCw1MDAwNSw1MDAwNiw1MDAwNyw1MDAwOCw1MDAwOSw1MDAxMCw1MDAxMSw1MDAxMiw1MDAxMyw1MDAxNCw1MDAxNSw1MDAxNiw1MDAxNyw1MDAxOCw1MDAxOSw1MDAyMCw1MDAyMSw1MDAyMiw1MDAyMyw1MDAyNiw1MDAyNyw1MDAyOSw1MDAzMCw1MDAz'@; put 'MSw1MDAzMyw1MDAzNSw1MDAzNiw1MDAzNyw1MDAzOCw1MDAzOSw1MDA0Miw1MDA0Myw1MDA0Niw1MDA0Nyw1MDA0OCw1MDA0OSw1MDA1MCw1MDA1MSw1MDA1Myw1MDA1NCw1MDA1NSw1MDA1Nyw1MDA1OCw1MDA1OSw1MDA2MSw1MDA2Miw1MDA2Myw1MDA2NCw1MDA2NSw1MDA2Niw1MDA2Nyw1'@; put 'MDA2OCw1MDA2OSw1MDA3MCw1MDA3MSw1MDA3Miw1MDA3Myw1MDA3NCw1MDA3NSw1MDA3Niw1MDA3Nyw1MDA3OCw1MDA3OSw1MDA4MCw1MDA4MSw1MDA4Miw1MDA4Myw1MDA4NCw1MDA4NSw1MDA4Niw1MDA4Nyw1MDA4OCw1MDA4OSw1MDA5MCw1MDA5MSw1MDA5Miw1MDA5Myw1MDA5NCw1MDA5'@; put 'NSw1MDA5Niw1MDA5Nyw1MDA5OCw1MDA5OSw1MDEwMCw1MDEwMSw1MDEwMiw1MDEwMyw1MDEwNCw1MDEwNSw1MDEwNiw1MDEwNyw1MDEwOCw1MDEwOSw1MDExMCw1MDExMSw1MDExMyw1MDExNCw1MDExNSw1MDExNiw1MDExNyw1MDExOCw1MDExOSw1MDEyMCw1MDEyMSw1MDEyMiw1MDEyMyw1'@; put 'MDEyNCw1MDEyNSw1MDEyNiw1MDEyNyw1MDEyOCw1MDEyOSw1MDEzMCw1MDEzMSw1MDEzMiw1MDEzMyw1MDEzNCw1MDEzNSw1MDEzOCw1MDEzOSw1MDE0MSw1MDE0Miw1MDE0NSw1MDE0Nyw1MDE0OCw1MDE0OSw1MDE1MCw1MDE1MSw1MDE1NCw1MDE1NSw1MDE1Niw1MDE1OCw1MDE1OSw1MDE2'@; put 'MCw1MDE2MSw1MDE2Miw1MDE2Myw1MDE2Niw1MDE2Nyw1MDE2OSw1MDE3MCw1MDE3MSw1MDE3Miw1MDE3Myw1MDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDE3NSw1MDE3Niw1MDE3Nyw1MDE3OCw1MDE3OSw1MDE4MCw1MDE4MSw1MDE4Miw1MDE4Myw1MDE4NSw1MDE4Niw1'@; put 'MDE4Nyw1MDE4OCw1MDE4OSw1MDE5MCw1MDE5MSw1MDE5Myw1MDE5NCw1MDE5NSw1MDE5Niw1MDE5Nyw1MDE5OCw1MDE5OSw1MDIwMCw1MDIwMSw1MDIwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDIwMyw1MDIwNCw1MDIwNSw1MDIwNiw1MDIwNyw1MDIwOCw1MDIwOSw1MDIx'@; put 'MCw1MDIxMSw1MDIxMyw1MDIxNCw1MDIxNSw1MDIxNiw1MDIxNyw1MDIxOCw1MDIxOSw1MDIyMSw1MDIyMiw1MDIyMyw1MDIyNSw1MDIyNiw1MDIyNyw1MDIyOSw1MDIzMCw1MDIzMSw1MDIzMiw1MDIzMyw1MDIzNCw1MDIzNSw1MDIzOCw1MDIzOSw1MDI0MCw1MDI0MSw1MDI0Miw1MDI0Myw1'@; put 'MDI0NCw1MDI0NSw1MDI0Niw1MDI0Nyw1MDI0OSw1MDI1MCw1MDI1MSw1MDI1Miw1MDI1Myw1MDI1NCw1MDI1NSw1MDI1Niw1MDI1Nyw1MDI1OCw1MDI1OSw1MDI2MCw1MDI2MSw1MDI2Miw1MDI2Myw1MDI2NCw1MDI2NSw1MDI2Niw1MDI2Nyw1MDI2OCw1MDI2OSw1MDI3MCw1MDI3MSw1MDI3'@; put 'Miw1MDI3Myw1MDI3NCw1MDI3NSw1MDI3OCw1MDI3OSw1MDI4MSw1MDI4Miw1MDI4Myw1MDI4NSw1MDI4Niw1MDI4Nyw1MDI4OCw1MDI4OSw1MDI5MCw1MDI5MSw1MDI5NCw1MDI5NSw1MDI5Niw1MDI5OCw1MDI5OSw1MDMwMCw1MDMwMSw1MDMwMiw1MDMwMyw1MDMwNSw1MDMwNiw1MDMwNyw1'@; put 'MDMwOCw1MDMwOSw1MDMxMCw1MDMxMSw1MDMxMiw1MDMxMyw1MDMxNCw1MDMxNSw1MDMxNiw1MDMxNyw1MDMxOCw1MDMxOSw1MDMyMCw1MDMyMSw1MDMyMiw1MDMyMyw1MDMyNSw1MDMyNiw1MDMyNyw1MDMyOCw1MDMyOSw1MDMzMCw1MDMzMSw1MDMzMyw1MDMzNCw1MDMzNSw1MDMzNiw1MDMz'@; put 'Nyw1MDMzOCw1MDMzOSw1MDM0MCw1MDM0MSw1MDM0Miw1MDM0Myw1MDM0NCw1MDM0NSw1MDM0Niw1MDM0Nyw1MDM0OCw1MDM0OSw1MDM1MCw1MDM1MSw1MDM1Miw1MDM1Myw1MDM1NCw1MDM1NSw1MDM1Niw1MDM1Nyw1MDM1OCw1MDM1OSw1MDM2MSw1MDM2Miw1MDM2Myw1MDM2NSw1MDM2Niw1'@; put 'MDM2Nyw1MDM2OCw1MDM2OSw1MDM3MCw1MDM3MSw1MDM3Miw1MDM3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDM3NCw1MDM3NSw1MDM3Niw1MDM3Nyw1MDM3OCw1MDM3OSw1MDM4MCw1MDM4MSw1MDM4Miw1MDM4Myw1MDM4NCw1MDM4NSw1MDM4Niw1MDM4Nyw1MDM4OCw1MDM4'@; put 'OSw1MDM5MCw1MDM5MSw1MDM5Miw1MDM5Myw1MDM5NCw1MDM5NSw1MDM5Niw1MDM5Nyw1MDM5OCw1MDM5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDQwMCw1MDQwMSw1MDQwMiw1MDQwMyw1MDQwNCw1MDQwNSw1MDQwNiw1MDQwNyw1MDQwOCw1MDQxMCw1MDQxMSw1MDQxMiw1'@; put 'MDQxMyw1MDQxNCw1MDQxNSw1MDQxOCw1MDQxOSw1MDQyMSw1MDQyMiw1MDQyMyw1MDQyNSw1MDQyNyw1MDQyOCw1MDQyOSw1MDQzMCw1MDQzNCw1MDQzNSw1MDQzNiw1MDQzNyw1MDQzOCw1MDQzOSw1MDQ0MCw1MDQ0MSw1MDQ0Miw1MDQ0Myw1MDQ0NSw1MDQ0Niw1MDQ0Nyw1MDQ0OSw1MDQ1'@; put 'MCw1MDQ1MSw1MDQ1Myw1MDQ1NCw1MDQ1NSw1MDQ1Niw1MDQ1Nyw1MDQ1OCw1MDQ1OSw1MDQ2MSw1MDQ2Miw1MDQ2Myw1MDQ2NCw1MDQ2NSw1MDQ2Niw1MDQ2Nyw1MDQ2OCw1MDQ2OSw1MDQ3MCw1MDQ3MSw1MDQ3NCw1MDQ3NSw1MDQ3Nyw1MDQ3OCw1MDQ3OSw1MDQ4MSw1MDQ4Miw1MDQ4Myw1'@; put 'MDQ4NCw1MDQ4NSw1MDQ4Niw1MDQ4Nyw1MDQ5MCw1MDQ5Miw1MDQ5NCw1MDQ5NSw1MDQ5Niw1MDQ5Nyw1MDQ5OCw1MDQ5OSw1MDUwMiw1MDUwMyw1MDUwNyw1MDUxMSw1MDUxMiw1MDUxMyw1MDUxNCw1MDUxOCw1MDUyMiw1MDUyMyw1MDUyNCw1MDUyNyw1MDUzMCw1MDUzMSw1MDUzMyw1MDUz'@; put 'NCw1MDUzNSw1MDUzNyw1MDUzOCw1MDUzOSw1MDU0MCw1MDU0MSw1MDU0Miw1MDU0Myw1MDU0Niw1MDU1MCw1MDU1MSw1MDU1Miw1MDU1Myw1MDU1NCw1MDU1NSw1MDU1OCw1MDU1OSw1MDU2MSw1MDU2Miw1MDU2Myw1MDU2NSw1MDU2Niw1MDU2OCw1MDU2OSw1MDU3MCw1MDU3MSw1MDU3NCw1'@; put 'MDU3Niw1MDU3OCw1MDU3OSw1MDU4MCw1MDU4Miw1MDU4NSw1MDU4Niw1MDU4Nyw1MDU4OSw1MDU5MCw1MDU5MSw1MDU5Myw1MDU5NCw1MDU5NSw1MDU5Niw1MDU5Nyw1MDU5OCw1MDU5OSw1MDYwMCw1MDYwMiw1MDYwMyw1MDYwNCw1MDYwNSw1MDYwNiw1MDYwNyw1MDYwOCw1MDYwOSw1MDYx'@; put 'MCw1MDYxMSw1MDYxNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDYxNSw1MDYxOCw1MDYyMyw1MDYyNCw1MDYyNSw1MDYyNiw1MDYyNyw1MDYzNSw1MDYzNyw1MDYzOSw1MDY0Miw1MDY0Myw1MDY0NSw1MDY0Niw1MDY0Nyw1MDY0OSw1MDY1MCw1MDY1MSw1MDY1Miw1MDY1Myw1'@; put 'MDY1NCw1MDY1NSw1MDY1OCw1MDY2MCw1MDY2Miw1MDY2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDY2NCw1MDY2NSw1MDY2Niw1MDY2Nyw1MDY3MSw1MDY3Myw1MDY3NCw1MDY3NSw1MDY3Nyw1MDY4MCw1MDY4MSw1MDY4Miw1MDY4Myw1MDY5MCw1MDY5MSw1MDY5Miw1MDY5'@; put 'Nyw1MDY5OCw1MDY5OSw1MDcwMSw1MDcwMiw1MDcwMyw1MDcwNSw1MDcwNiw1MDcwNyw1MDcwOCw1MDcwOSw1MDcxMCw1MDcxMSw1MDcxNCw1MDcxNyw1MDcxOCw1MDcxOSw1MDcyMCw1MDcyMSw1MDcyMiw1MDcyMyw1MDcyNiw1MDcyNyw1MDcyOSw1MDczMCw1MDczMSw1MDczNSw1MDczNyw1'@; put 'MDczOCw1MDc0Miw1MDc0NCw1MDc0Niw1MDc0OCw1MDc0OSw1MDc1MCw1MDc1MSw1MDc1NCw1MDc1NSw1MDc1Nyw1MDc1OCw1MDc1OSw1MDc2MSw1MDc2Miw1MDc2Myw1MDc2NCw1MDc2NSw1MDc2Niw1MDc2Nyw1MDc3MCw1MDc3NCw1MDc3NSw1MDc3Niw1MDc3Nyw1MDc3OCw1MDc3OSw1MDc4'@; put 'Miw1MDc4Myw1MDc4NSw1MDc4Niw1MDc4Nyw1MDc4OCw1MDc4OSw1MDc5MCw1MDc5MSw1MDc5Miw1MDc5Myw1MDc5NCw1MDc5NSw1MDc5Nyw1MDc5OCw1MDgwMCw1MDgwMiw1MDgwMyw1MDgwNCw1MDgwNSw1MDgwNiw1MDgwNyw1MDgxMCw1MDgxMSw1MDgxMyw1MDgxNCw1MDgxNSw1MDgxNyw1'@; put 'MDgxOCw1MDgxOSw1MDgyMCw1MDgyMSw1MDgyMiw1MDgyMyw1MDgyNiw1MDgyOCw1MDgzMCw1MDgzMSw1MDgzMiw1MDgzMyw1MDgzNCw1MDgzNSw1MDgzOCw1MDgzOSw1MDg0MSw1MDg0Miw1MDg0Myw1MDg0NSw1MDg0Niw1MDg0Nyw1MDg0OCw1MDg0OSw1MDg1MCw1MDg1MSw1MDg1NCw1MDg1'@; put 'Niw1MDg1OCw1MDg1OSw1MDg2MCw1MDg2MSw1MDg2Miw1MDg2Myw1MDg2Niw1MDg2Nyw1MDg2OSw1MDg3MCw1MDg3MSw1MDg3NSw1MDg3Niw1MDg3Nyw1MDg3OCw1MDg3OSw1MDg4Miw1MDg4NCw1MDg4Niw1MDg4Nyw1MDg4OCw1MDg4OSw1MDg5MCw1MDg5MSw1MDg5NCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCw1MDg5NSw1MDg5Nyw1MDg5OCw1MDg5OSw1MDkwMSw1MDkwMiw1MDkwMyw1MDkwNCw1MDkwNSw1MDkwNiw1MDkwNyw1MDkxMCw1MDkxMSw1MDkxNCw1MDkxNSw1MDkxNiw1MDkxNyw1MDkxOCw1MDkxOSw1MDkyMiw1MDkyMyw1MDkyNSw1MDkyNiw1MDkyNyw1MDky'@; put 'OSw1MDkzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDkzMSw1MDkzMiw1MDkzMyw1MDkzNCw1MDkzNSw1MDkzOCw1MDkzOSw1MDk0MCw1MDk0Miw1MDk0Myw1MDk0NCw1MDk0NSw1MDk0Niw1MDk0Nyw1MDk1MCw1MDk1MSw1MDk1Myw1MDk1NCw1MDk1NSw1MDk1Nyw1MDk1OCw1'@; put 'MDk1OSw1MDk2MCw1MDk2MSw1MDk2Miw1MDk2Myw1MDk2Niw1MDk2OCw1MDk3MCw1MDk3MSw1MDk3Miw1MDk3Myw1MDk3NCw1MDk3NSw1MDk3OCw1MDk3OSw1MDk4MSw1MDk4Miw1MDk4Myw1MDk4NSw1MDk4Niw1MDk4Nyw1MDk4OCw1MDk4OSw1MDk5MCw1MDk5MSw1MDk5NCw1MDk5Niw1MDk5'@; put 'OCw1MWUzLDUxMDAxLDUxMDAyLDUxMDAzLDUxMDA2LDUxMDA3LDUxMDA5LDUxMDEwLDUxMDExLDUxMDEzLDUxMDE0LDUxMDE1LDUxMDE2LDUxMDE3LDUxMDE5LDUxMDIyLDUxMDI0LDUxMDMzLDUxMDM0LDUxMDM1LDUxMDM3LDUxMDM4LDUxMDM5LDUxMDQxLDUxMDQyLDUxMDQzLDUxMDQ0LDUx'@; put 'MDQ1LDUxMDQ2LDUxMDQ3LDUxMDQ5LDUxMDUwLDUxMDUyLDUxMDUzLDUxMDU0LDUxMDU1LDUxMDU2LDUxMDU3LDUxMDU4LDUxMDU5LDUxMDYyLDUxMDYzLDUxMDY1LDUxMDY2LDUxMDY3LDUxMDcxLDUxMDcyLDUxMDczLDUxMDc0LDUxMDc4LDUxMDgzLDUxMDg0LDUxMDg1LDUxMDg3LDUxMDkw'@; put 'LDUxMDkxLDUxMDkzLDUxMDk3LDUxMDk5LDUxMTAwLDUxMTAxLDUxMTAyLDUxMTAzLDUxMTA2LDUxMTExLDUxMTEyLDUxMTEzLDUxMTE0LDUxMTE1LDUxMTE4LDUxMTE5LDUxMTIxLDUxMTIyLDUxMTIzLDUxMTI1LDUxMTI2LDUxMTI3LDUxMTI4LDUxMTI5LDUxMTMwLDUxMTMxLDUxMTM0LDUx'@; put 'MTM4LDUxMTM5LDUxMTQwLDUxMTQxLDUxMTQyLDUxMTQzLDUxMTQ2LDUxMTQ3LDUxMTQ5LDUxMTUxLDUxMTUzLDUxMTU0LDUxMTU1LDUxMTU2LDUxMTU3LDUxMTU4LDUxMTU5LDUxMTYxLDUxMTYyLDUxMTYzLDUxMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMTY2LDUxMTY3'@; put 'LDUxMTY4LDUxMTY5LDUxMTcwLDUxMTcxLDUxMTczLDUxMTc0LDUxMTc1LDUxMTc3LDUxMTc4LDUxMTc5LDUxMTgxLDUxMTgyLDUxMTgzLDUxMTg0LDUxMTg1LDUxMTg2LDUxMTg3LDUxMTg4LDUxMTg5LDUxMTkwLDUxMTkxLDUxMTkyLDUxMTkzLDUxMTk0LG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLDUxMTk1LDUxMTk2LDUxMTk3LDUxMTk4LDUxMTk5LDUxMjAyLDUxMjAzLDUxMjA1LDUxMjA2LDUxMjA3LDUxMjA5LDUxMjExLDUxMjEyLDUxMjEzLDUxMjE0LDUxMjE1LDUxMjE4LDUxMjIwLDUxMjIzLDUxMjI0LDUxMjI1LDUxMjI2LDUxMjI3LDUxMjMwLDUxMjMxLDUxMjMz'@; put 'LDUxMjM0LDUxMjM1LDUxMjM3LDUxMjM4LDUxMjM5LDUxMjQwLDUxMjQxLDUxMjQyLDUxMjQzLDUxMjQ2LDUxMjQ4LDUxMjUwLDUxMjUxLDUxMjUyLDUxMjUzLDUxMjU0LDUxMjU1LDUxMjU3LDUxMjU4LDUxMjU5LDUxMjYxLDUxMjYyLDUxMjYzLDUxMjY1LDUxMjY2LDUxMjY3LDUxMjY4LDUx'@; put 'MjY5LDUxMjcwLDUxMjcxLDUxMjc0LDUxMjc1LDUxMjc4LDUxMjc5LDUxMjgwLDUxMjgxLDUxMjgyLDUxMjgzLDUxMjg1LDUxMjg2LDUxMjg3LDUxMjg4LDUxMjg5LDUxMjkwLDUxMjkxLDUxMjkyLDUxMjkzLDUxMjk0LDUxMjk1LDUxMjk2LDUxMjk3LDUxMjk4LDUxMjk5LDUxMzAwLDUxMzAx'@; put 'LDUxMzAyLDUxMzAzLDUxMzA0LDUxMzA1LDUxMzA2LDUxMzA3LDUxMzA4LDUxMzA5LDUxMzEwLDUxMzExLDUxMzE0LDUxMzE1LDUxMzE3LDUxMzE4LDUxMzE5LDUxMzIxLDUxMzIzLDUxMzI0LDUxMzI1LDUxMzI2LDUxMzI3LDUxMzMwLDUxMzMyLDUxMzM2LDUxMzM3LDUxMzM4LDUxMzQyLDUx'@; put 'MzQzLDUxMzQ0LDUxMzQ1LDUxMzQ2LDUxMzQ3LDUxMzQ5LDUxMzUwLDUxMzUxLDUxMzUyLDUxMzUzLDUxMzU0LDUxMzU1LDUxMzU2LDUxMzU4LDUxMzYwLDUxMzYyLDUxMzYzLDUxMzY0LDUxMzY1LDUxMzY2LDUxMzY3LDUxMzY5LDUxMzcwLDUxMzcxLDUxMzcyLDUxMzczLDUxMzc0LDUxMzc1'@; put 'LDUxMzc2LDUxMzc3LDUxMzc4LDUxMzc5LDUxMzgwLDUxMzgxLDUxMzgyLDUxMzgzLDUxMzg0LDUxMzg1LDUxMzg2LDUxMzg3LDUxMzkwLDUxMzkxLDUxMzkyLDUxMzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMzk0LDUxMzk1LDUxMzk3LDUxMzk4LDUxMzk5LDUxNDAxLDUx'@; put 'NDAyLDUxNDAzLDUxNDA1LDUxNDA2LDUxNDA3LDUxNDA4LDUxNDA5LDUxNDEwLDUxNDExLDUxNDE0LDUxNDE2LDUxNDE4LDUxNDE5LDUxNDIwLDUxNDIxLDUxNDIyLDUxNDIzLDUxNDI2LDUxNDI3LDUxNDI5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNDMwLDUxNDMxLDUxNDMy'@; put 'LDUxNDMzLDUxNDM0LDUxNDM1LDUxNDM2LDUxNDM3LDUxNDM4LDUxNDM5LDUxNDQwLDUxNDQxLDUxNDQyLDUxNDQzLDUxNDQ0LDUxNDQ2LDUxNDQ3LDUxNDQ4LDUxNDQ5LDUxNDUwLDUxNDUxLDUxNDU0LDUxNDU1LDUxNDU3LDUxNDU4LDUxNDU5LDUxNDYzLDUxNDY0LDUxNDY1LDUxNDY2LDUx'@; put 'NDY3LDUxNDcwLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw4MjI5LDgyMzAsMTY4LDEyMjkxLDE3Myw4MjEzLDg3NDEsNjUzNDAsODc2NCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzA0LDEy'@; put 'MzA1LDE3NywyMTUsMjQ3LDg4MDAsODgwNCw4ODA1LDg3MzQsODc1NiwxNzYsODI0Miw4MjQzLDg0NTEsODQ5MSw2NTUwNCw2NTUwNSw2NTUwOSw5Nzk0LDk3OTIsODczNiw4ODY5LDg5NzgsODcwNiw4NzExLDg4MDEsODc4NiwxNjcsODI1MSw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3'@; put 'MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsOTY2MSw5NjYwLDg1OTQsODU5Miw4NTkzLDg1OTUsODU5NiwxMjMwNyw4ODEwLDg4MTEsODczMCw4NzY1LDg3MzMsODc1Nyw4NzQ3LDg3NDgsODcxMiw4NzE1LDg4MzgsODgzOSw4ODM0LDg4MzUsODc0Niw4NzQ1LDg3NDMsODc0NCw2NTUwNiw1'@; put 'MTQ3Miw1MTQ3NCw1MTQ3NSw1MTQ3Niw1MTQ3Nyw1MTQ3OCw1MTQ3OSw1MTQ4MSw1MTQ4Miw1MTQ4Myw1MTQ4NCw1MTQ4NSw1MTQ4Niw1MTQ4Nyw1MTQ4OCw1MTQ4OSw1MTQ5MCw1MTQ5MSw1MTQ5Miw1MTQ5Myw1MTQ5NCw1MTQ5NSw1MTQ5Niw1MTQ5Nyw1MTQ5OCw1MTQ5OSxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCw1MTUwMSw1MTUwMiw1MTUwMyw1MTUwNCw1MTUwNSw1MTUwNiw1MTUwNyw1MTUwOSw1MTUxMCw1MTUxMSw1MTUxMiw1MTUxMyw1MTUxNCw1MTUxNSw1MTUxNiw1MTUxNyw1MTUxOCw1MTUxOSw1MTUyMCw1MTUyMSw1MTUyMiw1MTUyMyw1MTUyNCw1MTUyNSw1'@; put 'MTUyNiw1MTUyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTUyOCw1MTUyOSw1MTUzMCw1MTUzMSw1MTUzMiw1MTUzMyw1MTUzNCw1MTUzNSw1MTUzOCw1MTUzOSw1MTU0MSw1MTU0Miw1MTU0Myw1MTU0NSw1MTU0Niw1MTU0Nyw1MTU0OCw1MTU0OSw1MTU1MCw1MTU1MSw1MTU1'@; put 'NCw1MTU1Niw1MTU1Nyw1MTU1OCw1MTU1OSw1MTU2MCw1MTU2MSw1MTU2Miw1MTU2Myw1MTU2NSw1MTU2Niw1MTU2Nyw4NjU4LDg2NjAsODcwNCw4NzA3LDE4MCw2NTM3NCw3MTEsNzI4LDczMyw3MzAsNzI5LDE4NCw3MzEsMTYxLDE5MSw3MjAsODc1MCw4NzIxLDg3MTksMTY0LDg0NTcsODI0'@; put 'MCw5NjY1LDk2NjQsOTY1NSw5NjU0LDk4MjgsOTgyNCw5ODI1LDk4MjksOTgzMSw5ODI3LDg4NTcsOTY3Miw5NjM1LDk2ODAsOTY4MSw5NjE4LDk2MzYsOTYzNyw5NjQwLDk2MzksOTYzOCw5NjQxLDk4MzIsOTc0Myw5NzQyLDk3NTYsOTc1OCwxODIsODIyNCw4MjI1LDg1OTcsODU5OSw4NjAx'@; put 'LDg1OTgsODYwMCw5ODM3LDk4MzMsOTgzNCw5ODM2LDEyOTI3LDEyODI4LDg0NzAsMTMyNTUsODQ4MiwxMzI1MCwxMzI3Miw4NDgxLDgzNjQsMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTU2OSw1MTU3MCw1MTU3MSw1MTU3Myw1MTU3NCw1MTU3NSw1MTU3Niw1MTU3Nyw1MTU3OCw1MTU3OSw1MTU4MSw1MTU4Miw1MTU4Myw1MTU4NCw1MTU4NSw1MTU4Niw1MTU4Nyw1MTU4OCw1MTU4OSw1MTU5MCw1MTU5MSw1MTU5'@; put 'NCw1MTU5NSw1MTU5Nyw1MTU5OCw1MTU5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYwMSw1MTYwMiw1MTYwMyw1MTYwNCw1MTYwNSw1MTYwNiw1MTYwNyw1MTYxMCw1MTYxMiw1MTYxNCw1MTYxNSw1MTYxNiw1MTYxNyw1MTYxOCw1MTYxOSw1MTYyMCw1MTYyMSw1MTYyMiw1'@; put 'MTYyMyw1MTYyNCw1MTYyNSw1MTYyNiw1MTYyNyw1MTYyOCw1MTYyOSw1MTYzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYzMSw1MTYzMiw1MTYzMyw1MTYzNCw1MTYzNSw1MTYzNiw1MTYzNyw1MTYzOCw1MTYzOSw1MTY0MCw1MTY0MSw1MTY0Miw1MTY0Myw1MTY0NCw1MTY0'@; put 'NSw1MTY0Niw1MTY0Nyw1MTY1MCw1MTY1MSw1MTY1Myw1MTY1NCw1MTY1Nyw1MTY1OSw1MTY2MCw1MTY2MSw1MTY2Miw1MTY2Myw1MTY2Niw1MTY2OCw1MTY3MSw1MTY3Miw1MTY3NSw2NTI4MSw2NTI4Miw2NTI4Myw2NTI4NCw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2'@; put 'NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMx'@; put 'OCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTUxMCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2'@; put 'NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3'@; put 'Myw2NTUwNyw1MTY3OCw1MTY3OSw1MTY4MSw1MTY4Myw1MTY4NSw1MTY4Niw1MTY4OCw1MTY4OSw1MTY5MCw1MTY5MSw1MTY5NCw1MTY5OCw1MTY5OSw1MTcwMCw1MTcwMSw1MTcwMiw1MTcwMyw1MTcwNiw1MTcwNyw1MTcwOSw1MTcxMCw1MTcxMSw1MTcxMyw1MTcxNCw1MTcxNSw1MTcxNixu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTcxNyw1MTcxOCw1MTcxOSw1MTcyMiw1MTcyNiw1MTcyNyw1MTcyOCw1MTcyOSw1MTczMCw1MTczMSw1MTczMyw1MTczNCw1MTczNSw1MTczNyw1MTczOCw1MTczOSw1MTc0MCw1MTc0MSw1MTc0Miw1MTc0Myw1MTc0NCw1MTc0NSw1MTc0'@; put 'Niw1MTc0Nyw1MTc0OCw1MTc0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTc1MCw1MTc1MSw1MTc1Miw1MTc1NCw1MTc1NSw1MTc1Niw1MTc1Nyw1MTc1OCw1MTc1OSw1MTc2MCw1MTc2MSw1MTc2Miw1MTc2Myw1MTc2NCw1MTc2NSw1MTc2Niw1MTc2Nyw1MTc2OCw1MTc2OSw1'@; put 'MTc3MCw1MTc3MSw1MTc3Miw1MTc3Myw1MTc3NCw1MTc3NSw1MTc3Niw1MTc3Nyw1MTc3OCw1MTc3OSw1MTc4MCw1MTc4MSw1MTc4MiwxMjU5MywxMjU5NCwxMjU5NSwxMjU5NiwxMjU5NywxMjU5OCwxMjU5OSwxMjYwMCwxMjYwMSwxMjYwMiwxMjYwMywxMjYwNCwxMjYwNSwxMjYwNiwxMjYw'@; put 'NywxMjYwOCwxMjYwOSwxMjYxMCwxMjYxMSwxMjYxMiwxMjYxMywxMjYxNCwxMjYxNSwxMjYxNiwxMjYxNywxMjYxOCwxMjYxOSwxMjYyMCwxMjYyMSwxMjYyMiwxMjYyMywxMjYyNCwxMjYyNSwxMjYyNiwxMjYyNywxMjYyOCwxMjYyOSwxMjYzMCwxMjYzMSwxMjYzMiwxMjYzMywxMjYzNCwx'@; put 'MjYzNSwxMjYzNiwxMjYzNywxMjYzOCwxMjYzOSwxMjY0MCwxMjY0MSwxMjY0MiwxMjY0MywxMjY0NCwxMjY0NSwxMjY0NiwxMjY0NywxMjY0OCwxMjY0OSwxMjY1MCwxMjY1MSwxMjY1MiwxMjY1MywxMjY1NCwxMjY1NSwxMjY1NiwxMjY1NywxMjY1OCwxMjY1OSwxMjY2MCwxMjY2MSwxMjY2'@; put 'MiwxMjY2MywxMjY2NCwxMjY2NSwxMjY2NiwxMjY2NywxMjY2OCwxMjY2OSwxMjY3MCwxMjY3MSwxMjY3MiwxMjY3MywxMjY3NCwxMjY3NSwxMjY3NiwxMjY3NywxMjY3OCwxMjY3OSwxMjY4MCwxMjY4MSwxMjY4MiwxMjY4MywxMjY4NCwxMjY4NSwxMjY4Niw1MTc4Myw1MTc4NCw1MTc4NSw1'@; put 'MTc4Niw1MTc4Nyw1MTc5MCw1MTc5MSw1MTc5Myw1MTc5NCw1MTc5NSw1MTc5Nyw1MTc5OCw1MTc5OSw1MTgwMCw1MTgwMSw1MTgwMiw1MTgwMyw1MTgwNiw1MTgxMCw1MTgxMSw1MTgxMiw1MTgxMyw1MTgxNCw1MTgxNSw1MTgxNyw1MTgxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCw1MTgxOSw1MTgyMCw1MTgyMSw1MTgyMiw1MTgyMyw1MTgyNCw1MTgyNSw1MTgyNiw1MTgyNyw1MTgyOCw1MTgyOSw1MTgzMCw1MTgzMSw1MTgzMiw1MTgzMyw1MTgzNCw1MTgzNSw1MTgzNiw1MTgzOCw1MTgzOSw1MTg0MCw1MTg0MSw1MTg0Miw1MTg0Myw1MTg0NSw1MTg0NixudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTg0Nyw1MTg0OCw1MTg0OSw1MTg1MCw1MTg1MSw1MTg1Miw1MTg1Myw1MTg1NCw1MTg1NSw1MTg1Niw1MTg1Nyw1MTg1OCw1MTg1OSw1MTg2MCw1MTg2MSw1MTg2Miw1MTg2Myw1MTg2NSw1MTg2Niw1MTg2Nyw1MTg2OCw1MTg2OSw1MTg3MCw1MTg3'@; put 'MSw1MTg3Miw1MTg3Myw1MTg3NCw1MTg3NSw1MTg3Niw1MTg3Nyw1MTg3OCw1MTg3OSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEs'@; put 'ODU1Miw4NTUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODgwLDUxODgxLDUxODgyLDUxODgz'@; put 'LDUxODg0LDUxODg1LDUxODg2LDUxODg3LDUxODg4LDUxODg5LDUxODkwLDUxODkxLDUxODkyLDUxODkzLDUxODk0LDUxODk1LDUxODk2LDUxODk3LDUxODk4LDUxODk5LDUxOTAyLDUxOTAzLDUxOTA1LDUxOTA2LDUxOTA3LDUxOTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUx'@; put 'OTEwLDUxOTExLDUxOTEyLDUxOTEzLDUxOTE0LDUxOTE1LDUxOTE4LDUxOTIwLDUxOTIyLDUxOTI0LDUxOTI1LDUxOTI2LDUxOTI3LDUxOTMwLDUxOTMxLDUxOTMyLDUxOTMzLDUxOTM0LDUxOTM1LDUxOTM3LDUxOTM4LDUxOTM5LDUxOTQwLDUxOTQxLDUxOTQyLDUxOTQzLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLDUxOTQ0LDUxOTQ1LDUxOTQ2LDUxOTQ3LDUxOTQ5LDUxOTUwLDUxOTUxLDUxOTUyLDUxOTUzLDUxOTU0LDUxOTU1LDUxOTU3LDUxOTU4LDUxOTU5LDUxOTYwLDUxOTYxLDUxOTYyLDUxOTYzLDUxOTY0LDUxOTY1LDUxOTY2LDUxOTY3LDUxOTY4LDUxOTY5LDUx'@; put 'OTcwLDUxOTcxLDUxOTcyLDUxOTczLDUxOTc0LDUxOTc1LDUxOTc3LDUxOTc4LDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Niw5NDkyLDk1MDAsOTUxNiw5NTA4LDk1MjQsOTUzMiw5NDczLDk0NzUsOTQ4Nyw5NDkxLDk0OTksOTQ5NSw5NTA3LDk1MjMsOTUxNSw5NTMxLDk1NDcsOTUwNCw5NTE5'@; put 'LDk1MTIsOTUyNyw5NTM1LDk1MDEsOTUyMCw5NTA5LDk1MjgsOTUzOCw5NDkwLDk0ODksOTQ5OCw5NDk3LDk0OTQsOTQ5Myw5NDg2LDk0ODUsOTUwMiw5NTAzLDk1MDUsOTUwNiw5NTEwLDk1MTEsOTUxMyw5NTE0LDk1MTcsOTUxOCw5NTIxLDk1MjIsOTUyNSw5NTI2LDk1MjksOTUzMCw5NTMz'@; put 'LDk1MzQsOTUzNiw5NTM3LDk1MzksOTU0MCw5NTQxLDk1NDIsOTU0Myw5NTQ0LDk1NDUsOTU0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsNTE5NzksNTE5ODAsNTE5ODEsNTE5ODIsNTE5ODMsNTE5ODUsNTE5ODYsNTE5ODcsNTE5ODksNTE5OTAsNTE5OTEsNTE5OTMsNTE5OTQsNTE5OTUsNTE5OTYsNTE5OTcsNTE5OTgsNTE5OTksNTIwMDIsNTIwMDMsNTIwMDQsNTIwMDUsNTIwMDYsNTIwMDcs'@; put 'NTIwMDgsNTIwMDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMTAsNTIwMTEsNTIwMTIsNTIwMTMsNTIwMTQsNTIwMTUsNTIwMTYsNTIwMTcsNTIwMTgsNTIwMTksNTIwMjAsNTIwMjEsNTIwMjIsNTIwMjMsNTIwMjQsNTIwMjUsNTIwMjYsNTIwMjcsNTIwMjgsNTIwMjksNTIw'@; put 'MzAsNTIwMzEsNTIwMzIsNTIwMzQsNTIwMzUsNTIwMzYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMzcsNTIwMzgsNTIwMzksNTIwNDIsNTIwNDMsNTIwNDUsNTIwNDYsNTIwNDcsNTIwNDksNTIwNTAsNTIwNTEsNTIwNTIsNTIwNTMsNTIwNTQsNTIwNTUsNTIwNTgsNTIwNTks'@; put 'NTIwNjAsNTIwNjIsNTIwNjMsNTIwNjQsNTIwNjUsNTIwNjYsNTIwNjcsNTIwNjksNTIwNzAsNTIwNzEsNTIwNzIsNTIwNzMsNTIwNzQsNTIwNzUsNTIwNzYsMTMyMDUsMTMyMDYsMTMyMDcsODQ2NywxMzIwOCwxMzI1MiwxMzIxOSwxMzIyMCwxMzIyMSwxMzIyMiwxMzIwOSwxMzIxMCwxMzIx'@; put 'MSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNSwxMzIxNiwxMzIxNywxMzIxOCwxMzI1OCwxMzE5NywxMzE5OCwxMzE5OSwxMzI2MywxMzE5MiwxMzE5MywxMzI1NiwxMzIyMywxMzIyNCwxMzIzMiwxMzIzMywxMzIzNCwxMzIzNSwxMzIzNiwxMzIzNywxMzIzOCwxMzIzOSwxMzI0MCwxMzI0MSwx'@; put 'MzE4NCwxMzE4NSwxMzE4NiwxMzE4NywxMzE4OCwxMzI0MiwxMzI0MywxMzI0NCwxMzI0NSwxMzI0NiwxMzI0NywxMzIwMCwxMzIwMSwxMzIwMiwxMzIwMywxMzIwNCw4NDg2LDEzMjQ4LDEzMjQ5LDEzMTk0LDEzMTk1LDEzMTk2LDEzMjcwLDEzMjUzLDEzMjI5LDEzMjMwLDEzMjMxLDEzMjc1'@; put 'LDEzMjI1LDEzMjI2LDEzMjI3LDEzMjI4LDEzMjc3LDEzMjY0LDEzMjY3LDEzMjUxLDEzMjU3LDEzMjc2LDEzMjU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDc3LDUyMDc4LDUyMDc5LDUyMDgw'@; put 'LDUyMDgxLDUyMDgyLDUyMDgzLDUyMDg0LDUyMDg1LDUyMDg2LDUyMDg3LDUyMDkwLDUyMDkxLDUyMDkyLDUyMDkzLDUyMDk0LDUyMDk1LDUyMDk2LDUyMDk3LDUyMDk4LDUyMDk5LDUyMTAwLDUyMTAxLDUyMTAyLDUyMTAzLDUyMTA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUy'@; put 'MTA1LDUyMTA2LDUyMTA3LDUyMTA4LDUyMTA5LDUyMTEwLDUyMTExLDUyMTEyLDUyMTEzLDUyMTE0LDUyMTE1LDUyMTE2LDUyMTE3LDUyMTE4LDUyMTE5LDUyMTIwLDUyMTIxLDUyMTIyLDUyMTIzLDUyMTI1LDUyMTI2LDUyMTI3LDUyMTI4LDUyMTI5LDUyMTMwLDUyMTMxLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLDUyMTMyLDUyMTMzLDUyMTM0LDUyMTM1LDUyMTM2LDUyMTM3LDUyMTM4LDUyMTM5LDUyMTQwLDUyMTQxLDUyMTQyLDUyMTQzLDUyMTQ0LDUyMTQ1LDUyMTQ2LDUyMTQ3LDUyMTQ4LDUyMTQ5LDUyMTUwLDUyMTUxLDUyMTUzLDUyMTU0LDUyMTU1LDUyMTU2LDUy'@; put 'MTU3LDUyMTU4LDUyMTU5LDUyMTYwLDUyMTYxLDUyMTYyLDUyMTYzLDUyMTY0LDE5OCwyMDgsMTcwLDI5NCxudWxsLDMwNixudWxsLDMxOSwzMjEsMjE2LDMzOCwxODYsMjIyLDM1OCwzMzAsbnVsbCwxMjg5NiwxMjg5NywxMjg5OCwxMjg5OSwxMjkwMCwxMjkwMSwxMjkwMiwxMjkwMywxMjkw'@; put 'NCwxMjkwNSwxMjkwNiwxMjkwNywxMjkwOCwxMjkwOSwxMjkxMCwxMjkxMSwxMjkxMiwxMjkxMywxMjkxNCwxMjkxNSwxMjkxNiwxMjkxNywxMjkxOCwxMjkxOSwxMjkyMCwxMjkyMSwxMjkyMiwxMjkyMyw5NDI0LDk0MjUsOTQyNiw5NDI3LDk0MjgsOTQyOSw5NDMwLDk0MzEsOTQzMiw5NDMz'@; put 'LDk0MzQsOTQzNSw5NDM2LDk0MzcsOTQzOCw5NDM5LDk0NDAsOTQ0MSw5NDQyLDk0NDMsOTQ0NCw5NDQ1LDk0NDYsOTQ0Nyw5NDQ4LDk0NDksOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsMTg5LDg1MzEs'@; put 'ODUzMiwxODgsMTkwLDg1MzksODU0MCw4NTQxLDg1NDIsNTIxNjUsNTIxNjYsNTIxNjcsNTIxNjgsNTIxNjksNTIxNzAsNTIxNzEsNTIxNzIsNTIxNzMsNTIxNzQsNTIxNzUsNTIxNzYsNTIxNzcsNTIxNzgsNTIxNzksNTIxODEsNTIxODIsNTIxODMsNTIxODQsNTIxODUsNTIxODYsNTIxODcs'@; put 'NTIxODgsNTIxODksNTIxOTAsNTIxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxOTIsNTIxOTMsNTIxOTQsNTIxOTUsNTIxOTcsNTIxOTgsNTIyMDAsNTIyMDIsNTIyMDMsNTIyMDQsNTIyMDUsNTIyMDYsNTIyMDcsNTIyMDgsNTIyMDksNTIyMTAsNTIyMTEsNTIyMTIsNTIy'@; put 'MTMsNTIyMTQsNTIyMTUsNTIyMTYsNTIyMTcsNTIyMTgsNTIyMTksNTIyMjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIyMjEsNTIyMjIsNTIyMjMsNTIyMjQsNTIyMjUsNTIyMjYsNTIyMjcsNTIyMjgsNTIyMjksNTIyMzAsNTIyMzEsNTIyMzIsNTIyMzMsNTIyMzQsNTIyMzUs'@; put 'NTIyMzgsNTIyMzksNTIyNDEsNTIyNDIsNTIyNDMsNTIyNDUsNTIyNDYsNTIyNDcsNTIyNDgsNTIyNDksNTIyNTAsNTIyNTEsNTIyNTQsNTIyNTUsNTIyNTYsNTIyNTksNTIyNjAsMjMwLDI3MywyNDAsMjk1LDMwNSwzMDcsMzEyLDMyMCwzMjIsMjQ4LDMzOSwyMjMsMjU0LDM1OSwzMzEsMzI5'@; put 'LDEyODAwLDEyODAxLDEyODAyLDEyODAzLDEyODA0LDEyODA1LDEyODA2LDEyODA3LDEyODA4LDEyODA5LDEyODEwLDEyODExLDEyODEyLDEyODEzLDEyODE0LDEyODE1LDEyODE2LDEyODE3LDEyODE4LDEyODE5LDEyODIwLDEyODIxLDEyODIyLDEyODIzLDEyODI0LDEyODI1LDEyODI2LDEy'@; put 'ODI3LDkzNzIsOTM3Myw5Mzc0LDkzNzUsOTM3Niw5Mzc3LDkzNzgsOTM3OSw5MzgwLDkzODEsOTM4Miw5MzgzLDkzODQsOTM4NSw5Mzg2LDkzODcsOTM4OCw5Mzg5LDkzOTAsOTM5MSw5MzkyLDkzOTMsOTM5NCw5Mzk1LDkzOTYsOTM5Nyw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5'@; put 'MzM4LDkzMzksOTM0MCw5MzQxLDkzNDIsOTM0Myw5MzQ0LDkzNDUsOTM0NiwxODUsMTc4LDE3OSw4MzA4LDgzMTksODMyMSw4MzIyLDgzMjMsODMyNCw1MjI2MSw1MjI2Miw1MjI2Niw1MjI2Nyw1MjI2OSw1MjI3MSw1MjI3Myw1MjI3NCw1MjI3NSw1MjI3Niw1MjI3Nyw1MjI3OCw1MjI3OSw1'@; put 'MjI4Miw1MjI4Nyw1MjI4OCw1MjI4OSw1MjI5MCw1MjI5MSw1MjI5NCw1MjI5NSw1MjI5Nyw1MjI5OCw1MjI5OSw1MjMwMSw1MjMwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMwMyw1MjMwNCw1MjMwNSw1MjMwNiw1MjMwNyw1MjMxMCw1MjMxNCw1MjMxNSw1MjMxNiw1MjMx'@; put 'Nyw1MjMxOCw1MjMxOSw1MjMyMSw1MjMyMiw1MjMyMyw1MjMyNSw1MjMyNyw1MjMyOSw1MjMzMCw1MjMzMSw1MjMzMiw1MjMzMyw1MjMzNCw1MjMzNSw1MjMzNyw1MjMzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMzOSw1MjM0MCw1MjM0Miw1MjM0Myw1MjM0NCw1MjM0NSw1'@; put 'MjM0Niw1MjM0Nyw1MjM0OCw1MjM0OSw1MjM1MCw1MjM1MSw1MjM1Miw1MjM1Myw1MjM1NCw1MjM1NSw1MjM1Niw1MjM1Nyw1MjM1OCw1MjM1OSw1MjM2MCw1MjM2MSw1MjM2Miw1MjM2Myw1MjM2NCw1MjM2NSw1MjM2Niw1MjM2Nyw1MjM2OCw1MjM2OSw1MjM3MCw1MjM3MSwxMjM1MywxMjM1'@; put 'NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwx'@; put 'MjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQw'@; put 'OSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzNzIsNTIzNzMsNTIzNzQsNTIzNzUsNTIzNzgsNTIzNzksNTIzODEsNTIzODIsNTIzODMsNTIzODUsNTIzODYsNTIzODcsNTIzODgsNTIzODksNTIzOTAsNTIzOTEsNTIzOTQsNTIzOTgsNTIzOTksNTI0'@; put 'MDAsNTI0MDEsNTI0MDIsNTI0MDMsNTI0MDYsNTI0MDcsNTI0MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0MTAsNTI0MTEsNTI0MTMsNTI0MTQsNTI0MTUsNTI0MTYsNTI0MTcsNTI0MTgsNTI0MTksNTI0MjIsNTI0MjQsNTI0MjYsNTI0MjcsNTI0MjgsNTI0MjksNTI0MzAs'@; put 'NTI0MzEsNTI0MzMsNTI0MzQsNTI0MzUsNTI0MzcsNTI0MzgsNTI0MzksNTI0NDAsNTI0NDEsNTI0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NDMsNTI0NDQsNTI0NDUsNTI0NDYsNTI0NDcsNTI0NDgsNTI0NDksNTI0NTAsNTI0NTEsNTI0NTMsNTI0NTQsNTI0NTUsNTI0'@; put 'NTYsNTI0NTcsNTI0NTgsNTI0NTksNTI0NjEsNTI0NjIsNTI0NjMsNTI0NjUsNTI0NjYsNTI0NjcsNTI0NjgsNTI0NjksNTI0NzAsNTI0NzEsNTI0NzIsNTI0NzMsNTI0NzQsNTI0NzUsNTI0NzYsNTI0NzcsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYs'@; put 'MTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0'@; put 'ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEs'@; put 'MTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLDUyNDc4LDUyNDc5LDUyNDgwLDUyNDgyLDUyNDgzLDUyNDg0LDUyNDg1LDUyNDg2LDUyNDg3LDUyNDkwLDUyNDkxLDUyNDkzLDUyNDk0LDUyNDk1LDUyNDk3LDUyNDk4LDUyNDk5LDUyNTAwLDUyNTAxLDUyNTAyLDUyNTAzLDUyNTA2LDUyNTA4LDUyNTEwLDUyNTExLDUy'@; put 'NTEyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTEzLDUyNTE0LDUyNTE1LDUyNTE3LDUyNTE4LDUyNTE5LDUyNTIxLDUyNTIyLDUyNTIzLDUyNTI1LDUyNTI2LDUyNTI3LDUyNTI4LDUyNTI5LDUyNTMwLDUyNTMxLDUyNTMyLDUyNTMzLDUyNTM0LDUyNTM1LDUyNTM2LDUyNTM4'@; put 'LDUyNTM5LDUyNTQwLDUyNTQxLDUyNTQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTQzLDUyNTQ0LDUyNTQ1LDUyNTQ2LDUyNTQ3LDUyNTQ4LDUyNTQ5LDUyNTUwLDUyNTUxLDUyNTUyLDUyNTUzLDUyNTU0LDUyNTU1LDUyNTU2LDUyNTU3LDUyNTU4LDUyNTU5LDUyNTYwLDUy'@; put 'NTYxLDUyNTYyLDUyNTYzLDUyNTY0LDUyNTY1LDUyNTY2LDUyNTY3LDUyNTY4LDUyNTY5LDUyNTcwLDUyNTcxLDUyNTczLDUyNTc0LDUyNTc1LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1'@; put 'NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3'@; put 'MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NzcsNTI1NzgsNTI1NzksNTI1ODEsNTI1ODIsNTI1ODMsNTI1ODQsNTI1ODUsNTI1ODYsNTI1ODcsNTI1OTAsNTI1OTIsNTI1OTQsNTI1OTUsNTI1OTYsNTI1OTcsNTI1OTgsNTI1OTks'@; put 'NTI2MDEsNTI2MDIsNTI2MDMsNTI2MDQsNTI2MDUsNTI2MDYsNTI2MDcsNTI2MDgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2MDksNTI2MTAsNTI2MTEsNTI2MTIsNTI2MTMsNTI2MTQsNTI2MTUsNTI2MTcsNTI2MTgsNTI2MTksNTI2MjAsNTI2MjEsNTI2MjIsNTI2MjMsNTI2'@; put 'MjQsNTI2MjUsNTI2MjYsNTI2MjcsNTI2MzAsNTI2MzEsNTI2MzMsNTI2MzQsNTI2MzUsNTI2MzcsNTI2MzgsNTI2MzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2NDAsNTI2NDEsNTI2NDIsNTI2NDMsNTI2NDYsNTI2NDgsNTI2NTAsNTI2NTEsNTI2NTIsNTI2NTMsNTI2NTQs'@; put 'NTI2NTUsNTI2NTcsNTI2NTgsNTI2NTksNTI2NjAsNTI2NjEsNTI2NjIsNTI2NjMsNTI2NjQsNTI2NjUsNTI2NjYsNTI2NjcsNTI2NjgsNTI2NjksNTI2NzAsNTI2NzEsNTI2NzIsNTI2NzMsNTI2NzQsNTI2NzUsNTI2NzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY3OCw1MjY3OSw1MjY4MCw1MjY4MSw1MjY4Miw1MjY4Myw1MjY4NSw1MjY4Niw1MjY4Nyw1MjY4OSw1MjY5'@; put 'MCw1MjY5MSw1MjY5Miw1MjY5Myw1MjY5NCw1MjY5NSw1MjY5Niw1MjY5Nyw1MjY5OCw1MjY5OSw1MjcwMCw1MjcwMSw1MjcwMiw1MjcwMyw1MjcwNCw1MjcwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjcwNiw1MjcwNyw1MjcwOCw1MjcwOSw1MjcxMCw1MjcxMSw1MjcxMyw1'@; put 'MjcxNCw1MjcxNSw1MjcxNyw1MjcxOCw1MjcxOSw1MjcyMSw1MjcyMiw1MjcyMyw1MjcyNCw1MjcyNSw1MjcyNiw1MjcyNyw1MjczMCw1MjczMiw1MjczNCw1MjczNSw1MjczNiw1MjczNyw1MjczOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjczOSw1Mjc0MSw1Mjc0Miw1Mjc0'@; put 'Myw1Mjc0NSw1Mjc0Niw1Mjc0Nyw1Mjc0OSw1Mjc1MCw1Mjc1MSw1Mjc1Miw1Mjc1Myw1Mjc1NCw1Mjc1NSw1Mjc1Nyw1Mjc1OCw1Mjc1OSw1Mjc2MCw1Mjc2Miw1Mjc2Myw1Mjc2NCw1Mjc2NSw1Mjc2Niw1Mjc2Nyw1Mjc3MCw1Mjc3MSw1Mjc3Myw1Mjc3NCw1Mjc3NSw1Mjc3Nyw1Mjc3OCw1'@; put 'Mjc3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzgwLDUyNzgxLDUyNzgyLDUy'@; put 'NzgzLDUyNzg2LDUyNzg4LDUyNzkwLDUyNzkxLDUyNzkyLDUyNzkzLDUyNzk0LDUyNzk1LDUyNzk2LDUyNzk3LDUyNzk4LDUyNzk5LDUyODAwLDUyODAxLDUyODAyLDUyODAzLDUyODA0LDUyODA1LDUyODA2LDUyODA3LDUyODA4LDUyODA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LDUyODEwLDUyODExLDUyODEyLDUyODEzLDUyODE0LDUyODE1LDUyODE2LDUyODE3LDUyODE4LDUyODE5LDUyODIwLDUyODIxLDUyODIyLDUyODIzLDUyODI2LDUyODI3LDUyODI5LDUyODMwLDUyODM0LDUyODM1LDUyODM2LDUyODM3LDUyODM4LDUyODM5LDUyODQyLDUyODQ0LG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLDUyODQ2LDUyODQ3LDUyODQ4LDUyODQ5LDUyODUwLDUyODUxLDUyODU0LDUyODU1LDUyODU3LDUyODU4LDUyODU5LDUyODYxLDUyODYyLDUyODYzLDUyODY0LDUyODY1LDUyODY2LDUyODY3LDUyODcwLDUyODcyLDUyODc0LDUyODc1LDUyODc2LDUyODc3'@; put 'LDUyODc4LDUyODc5LDUyODgyLDUyODgzLDUyODg1LDUyODg2LDUyODg3LDUyODg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4OTAsNTI4OTEsNTI4OTIsNTI4OTMsNTI4OTQsNTI4OTUsNTI4OTgsNTI5MDIsNTI5MDMsNTI5MDQsNTI5MDUsNTI5MDYsNTI5MDcsNTI5MTAsNTI5MTEsNTI5MTIsNTI5MTMsNTI5MTQsNTI5MTUsNTI5MTYsNTI5MTcsNTI5MTgsNTI5MTksNTI5'@; put 'MjAsNTI5MjEsNTI5MjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5MjMsNTI5MjQsNTI5MjUsNTI5MjYsNTI5MjcsNTI5MjgsNTI5MzAsNTI5MzEsNTI5MzIsNTI5MzMsNTI5MzQsNTI5MzUsNTI5MzYsNTI5MzcsNTI5MzgsNTI5MzksNTI5NDAsNTI5NDEsNTI5NDIsNTI5NDMs'@; put 'NTI5NDQsNTI5NDUsNTI5NDYsNTI5NDcsNTI5NDgsNTI5NDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5NTAsNTI5NTEsNTI5NTIsNTI5NTMsNTI5NTQsNTI5NTUsNTI5NTYsNTI5NTcsNTI5NTgsNTI5NTksNTI5NjAsNTI5NjEsNTI5NjIsNTI5NjMsNTI5NjYsNTI5NjcsNTI5'@; put 'NjksNTI5NzAsNTI5NzMsNTI5NzQsNTI5NzUsNTI5NzYsNTI5NzcsNTI5NzgsNTI5NzksNTI5ODIsNTI5ODYsNTI5ODcsNTI5ODgsNTI5ODksNTI5OTAsNTI5OTEsNDQwMzIsNDQwMzMsNDQwMzYsNDQwMzksNDQwNDAsNDQwNDEsNDQwNDIsNDQwNDgsNDQwNDksNDQwNTAsNDQwNTEsNDQwNTIs'@; put 'NDQwNTMsNDQwNTQsNDQwNTUsNDQwNTcsNDQwNTgsNDQwNTksNDQwNjAsNDQwNjEsNDQwNjQsNDQwNjgsNDQwNzYsNDQwNzcsNDQwNzksNDQwODAsNDQwODEsNDQwODgsNDQwODksNDQwOTIsNDQwOTYsNDQxMDcsNDQxMDksNDQxMTYsNDQxMjAsNDQxMjQsNDQxNDQsNDQxNDUsNDQxNDgsNDQx'@; put 'NTEsNDQxNTIsNDQxNTQsNDQxNjAsNDQxNjEsNDQxNjMsNDQxNjQsNDQxNjUsNDQxNjYsNDQxNjksNDQxNzAsNDQxNzEsNDQxNzIsNDQxNzYsNDQxODAsNDQxODgsNDQxODksNDQxOTEsNDQxOTIsNDQxOTMsNDQyMDAsNDQyMDEsNDQyMDIsNDQyMDQsNDQyMDcsNDQyMDgsNDQyMTYsNDQyMTcs'@; put 'NDQyMTksNDQyMjAsNDQyMjEsNDQyMjUsNDQyMjgsNDQyMzIsNDQyMzYsNDQyNDUsNDQyNDcsNDQyNTYsNDQyNTcsNDQyNjAsNDQyNjMsNDQyNjQsNDQyNjYsNDQyNjgsNDQyNzEsNDQyNzIsNDQyNzMsNDQyNzUsNDQyNzcsNDQyNzgsNDQyODQsNDQyODUsNDQyODgsNDQyOTIsNDQyOTQsNTI5'@; put 'OTQsNTI5OTUsNTI5OTcsNTI5OTgsNTI5OTksNTMwMDEsNTMwMDIsNTMwMDMsNTMwMDQsNTMwMDUsNTMwMDYsNTMwMDcsNTMwMTAsNTMwMTIsNTMwMTQsNTMwMTUsNTMwMTYsNTMwMTcsNTMwMTgsNTMwMTksNTMwMjEsNTMwMjIsNTMwMjMsNTMwMjUsNTMwMjYsNTMwMjcsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsNTMwMjksNTMwMzAsNTMwMzEsNTMwMzIsNTMwMzMsNTMwMzQsNTMwMzUsNTMwMzgsNTMwNDIsNTMwNDMsNTMwNDQsNTMwNDUsNTMwNDYsNTMwNDcsNTMwNDksNTMwNTAsNTMwNTEsNTMwNTIsNTMwNTMsNTMwNTQsNTMwNTUsNTMwNTYsNTMwNTcsNTMwNTgsNTMw'@; put 'NTksNTMwNjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMwNjEsNTMwNjIsNTMwNjMsNTMwNjQsNTMwNjUsNTMwNjYsNTMwNjcsNTMwNjgsNTMwNjksNTMwNzAsNTMwNzEsNTMwNzIsNTMwNzMsNTMwNzQsNTMwNzUsNTMwNzgsNTMwNzksNTMwODEsNTMwODIsNTMwODMsNTMwODUs'@; put 'NTMwODYsNTMwODcsNTMwODgsNTMwODksNTMwOTAsNTMwOTEsNTMwOTQsNTMwOTYsNTMwOTgsNTMwOTksNTMxMDAsNDQzMDAsNDQzMDEsNDQzMDMsNDQzMDUsNDQzMTIsNDQzMTYsNDQzMjAsNDQzMjksNDQzMzIsNDQzMzMsNDQzNDAsNDQzNDEsNDQzNDQsNDQzNDgsNDQzNTYsNDQzNTcsNDQz'@; put 'NTksNDQzNjEsNDQzNjgsNDQzNzIsNDQzNzYsNDQzODUsNDQzODcsNDQzOTYsNDQzOTcsNDQ0MDAsNDQ0MDMsNDQ0MDQsNDQ0MDUsNDQ0MDYsNDQ0MTEsNDQ0MTIsNDQ0MTMsNDQ0MTUsNDQ0MTcsNDQ0MTgsNDQ0MjQsNDQ0MjUsNDQ0MjgsNDQ0MzIsNDQ0NDQsNDQ0NDUsNDQ0NTIsNDQ0NzEs'@; put 'NDQ0ODAsNDQ0ODEsNDQ0ODQsNDQ0ODgsNDQ0OTYsNDQ0OTcsNDQ0OTksNDQ1MDgsNDQ1MTIsNDQ1MTYsNDQ1MzYsNDQ1MzcsNDQ1NDAsNDQ1NDMsNDQ1NDQsNDQ1NDUsNDQ1NTIsNDQ1NTMsNDQ1NTUsNDQ1NTcsNDQ1NjQsNDQ1OTIsNDQ1OTMsNDQ1OTYsNDQ1OTksNDQ2MDAsNDQ2MDIsNDQ2'@; put 'MDgsNDQ2MDksNDQ2MTEsNDQ2MTMsNDQ2MTQsNDQ2MTgsNDQ2MjAsNDQ2MjEsNDQ2MjIsNDQ2MjQsNDQ2MjgsNDQ2MzAsNDQ2MzYsNDQ2MzcsNDQ2MzksNDQ2NDAsNDQ2NDEsNDQ2NDUsNDQ2NDgsNDQ2NDksNDQ2NTIsNDQ2NTYsNDQ2NjQsNTMxMDEsNTMxMDIsNTMxMDMsNTMxMDYsNTMxMDcs'@; put 'NTMxMDksNTMxMTAsNTMxMTEsNTMxMTMsNTMxMTQsNTMxMTUsNTMxMTYsNTMxMTcsNTMxMTgsNTMxMTksNTMxMjEsNTMxMjIsNTMxMjMsNTMxMjQsNTMxMjYsNTMxMjcsNTMxMjgsNTMxMjksNTMxMzAsNTMxMzEsNTMxMzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMxMzQsNTMx'@; put 'MzUsNTMxMzYsNTMxMzcsNTMxMzgsNTMxMzksNTMxNDAsNTMxNDEsNTMxNDIsNTMxNDMsNTMxNDQsNTMxNDUsNTMxNDYsNTMxNDcsNTMxNDgsNTMxNDksNTMxNTAsNTMxNTEsNTMxNTIsNTMxNTQsNTMxNTUsNTMxNTYsNTMxNTcsNTMxNTgsNTMxNTksNTMxNjEsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsNTMxNjIsNTMxNjMsNTMxNjQsNTMxNjUsNTMxNjYsNTMxNjcsNTMxNjksNTMxNzAsNTMxNzEsNTMxNzIsNTMxNzMsNTMxNzQsNTMxNzUsNTMxNzYsNTMxNzcsNTMxNzgsNTMxNzksNTMxODAsNTMxODEsNTMxODIsNTMxODMsNTMxODQsNTMxODUsNTMxODYsNTMxODcsNTMx'@; put 'ODksNTMxOTAsNTMxOTEsNTMxOTIsNTMxOTMsNTMxOTQsNTMxOTUsNDQ2NjUsNDQ2NjcsNDQ2NjgsNDQ2NjksNDQ2NzYsNDQ2NzcsNDQ2ODQsNDQ3MzIsNDQ3MzMsNDQ3MzQsNDQ3MzYsNDQ3NDAsNDQ3NDgsNDQ3NDksNDQ3NTEsNDQ3NTIsNDQ3NTMsNDQ3NjAsNDQ3NjEsNDQ3NjQsNDQ3NzYs'@; put 'NDQ3NzksNDQ3ODEsNDQ3ODgsNDQ3OTIsNDQ3OTYsNDQ4MDcsNDQ4MDgsNDQ4MTMsNDQ4MTYsNDQ4NDQsNDQ4NDUsNDQ4NDgsNDQ4NTAsNDQ4NTIsNDQ4NjAsNDQ4NjEsNDQ4NjMsNDQ4NjUsNDQ4NjYsNDQ4NjcsNDQ4NzIsNDQ4NzMsNDQ4ODAsNDQ4OTIsNDQ4OTMsNDQ5MDAsNDQ5MDEsNDQ5'@; put 'MjEsNDQ5MjgsNDQ5MzIsNDQ5MzYsNDQ5NDQsNDQ5NDUsNDQ5NDksNDQ5NTYsNDQ5ODQsNDQ5ODUsNDQ5ODgsNDQ5OTIsNDQ5OTksNDVlMyw0NTAwMSw0NTAwMyw0NTAwNSw0NTAwNiw0NTAxMiw0NTAyMCw0NTAzMiw0NTAzMyw0NTA0MCw0NTA0MSw0NTA0NCw0NTA0OCw0NTA1Niw0NTA1Nyw0'@; put 'NTA2MCw0NTA2OCw0NTA3Miw0NTA3Niw0NTA4NCw0NTA4NSw0NTA5Niw0NTEyNCw0NTEyNSw0NTEyOCw0NTEzMCw0NTEzMiw0NTEzNCw0NTEzOSw0NTE0MCw0NTE0MSw0NTE0Myw0NTE0NSw1MzE5Niw1MzE5Nyw1MzE5OCw1MzE5OSw1MzIwMCw1MzIwMSw1MzIwMiw1MzIwMyw1MzIwNCw1MzIw'@; put 'NSw1MzIwNiw1MzIwNyw1MzIwOCw1MzIwOSw1MzIxMCw1MzIxMSw1MzIxMiw1MzIxMyw1MzIxNCw1MzIxNSw1MzIxOCw1MzIxOSw1MzIyMSw1MzIyMiw1MzIyMyw1MzIyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzIyNiw1MzIyNyw1MzIyOCw1MzIyOSw1MzIzMCw1MzIzMSw1'@; put 'MzIzNCw1MzIzNiw1MzIzOCw1MzIzOSw1MzI0MCw1MzI0MSw1MzI0Miw1MzI0Myw1MzI0NSw1MzI0Niw1MzI0Nyw1MzI0OSw1MzI1MCw1MzI1MSw1MzI1Myw1MzI1NCw1MzI1NSw1MzI1Niw1MzI1Nyw1MzI1OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzI1OSw1MzI2MCw1MzI2'@; put 'MSw1MzI2Miw1MzI2Myw1MzI2NCw1MzI2Niw1MzI2Nyw1MzI2OCw1MzI2OSw1MzI3MCw1MzI3MSw1MzI3Myw1MzI3NCw1MzI3NSw1MzI3Niw1MzI3Nyw1MzI3OCw1MzI3OSw1MzI4MCw1MzI4MSw1MzI4Miw1MzI4Myw1MzI4NCw1MzI4NSw1MzI4Niw1MzI4Nyw1MzI4OCw1MzI4OSw1MzI5MCw1'@; put 'MzI5MSw1MzI5Miw0NTE0OSw0NTE4MCw0NTE4MSw0NTE4NCw0NTE4OCw0NTE5Niw0NTE5Nyw0NTE5OSw0NTIwMSw0NTIwOCw0NTIwOSw0NTIxMCw0NTIxMiw0NTIxNSw0NTIxNiw0NTIxNyw0NTIxOCw0NTIyNCw0NTIyNSw0NTIyNyw0NTIyOCw0NTIyOSw0NTIzMCw0NTIzMSw0NTIzMyw0NTIz'@; put 'NSw0NTIzNiw0NTIzNyw0NTI0MCw0NTI0NCw0NTI1Miw0NTI1Myw0NTI1NSw0NTI1Niw0NTI1Nyw0NTI2NCw0NTI2NSw0NTI2OCw0NTI3Miw0NTI4MCw0NTI4NSw0NTMyMCw0NTMyMSw0NTMyMyw0NTMyNCw0NTMyOCw0NTMzMCw0NTMzMSw0NTMzNiw0NTMzNyw0NTMzOSw0NTM0MCw0NTM0MSw0'@; put 'NTM0Nyw0NTM0OCw0NTM0OSw0NTM1Miw0NTM1Niw0NTM2NCw0NTM2NSw0NTM2Nyw0NTM2OCw0NTM2OSw0NTM3Niw0NTM3Nyw0NTM4MCw0NTM4NCw0NTM5Miw0NTM5Myw0NTM5Niw0NTM5Nyw0NTQwMCw0NTQwNCw0NTQwOCw0NTQzMiw0NTQzMyw0NTQzNiw0NTQ0MCw0NTQ0Miw0NTQ0OCw0NTQ0'@; put 'OSw0NTQ1MSw0NTQ1Myw0NTQ1OCw0NTQ1OSw0NTQ2MCw0NTQ2NCw0NTQ2OCw0NTQ4MCw0NTUxNiw0NTUyMCw0NTUyNCw0NTUzMiw0NTUzMyw1MzI5NCw1MzI5NSw1MzI5Niw1MzI5Nyw1MzI5OCw1MzI5OSw1MzMwMiw1MzMwMyw1MzMwNSw1MzMwNiw1MzMwNyw1MzMwOSw1MzMxMCw1MzMxMSw1'@; put 'MzMxMiw1MzMxMyw1MzMxNCw1MzMxNSw1MzMxOCw1MzMyMCw1MzMyMiw1MzMyMyw1MzMyNCw1MzMyNSw1MzMyNiw1MzMyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzMyOSw1MzMzMCw1MzMzMSw1MzMzMyw1MzMzNCw1MzMzNSw1MzMzNyw1MzMzOCw1MzMzOSw1MzM0MCw1MzM0'@; put 'MSw1MzM0Miw1MzM0Myw1MzM0NSw1MzM0Niw1MzM0Nyw1MzM0OCw1MzM0OSw1MzM1MCw1MzM1MSw1MzM1Miw1MzM1Myw1MzM1NCw1MzM1NSw1MzM1OCw1MzM1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzM2MSw1MzM2Miw1MzM2Myw1MzM2NSw1MzM2Niw1MzM2Nyw1MzM2OCw1'@; put 'MzM2OSw1MzM3MCw1MzM3MSw1MzM3NCw1MzM3NSw1MzM3Niw1MzM3OCw1MzM3OSw1MzM4MCw1MzM4MSw1MzM4Miw1MzM4Myw1MzM4NCw1MzM4NSw1MzM4Niw1MzM4Nyw1MzM4OCw1MzM4OSw1MzM5MCw1MzM5MSw1MzM5Miw1MzM5Myw1MzM5NCw1MzM5NSw1MzM5Niw0NTUzNSw0NTU0NCw0NTU0'@; put 'NSw0NTU0OCw0NTU1Miw0NTU2MSw0NTU2Myw0NTU2NSw0NTU3Miw0NTU3Myw0NTU3Niw0NTU3OSw0NTU4MCw0NTU4OCw0NTU4OSw0NTU5MSw0NTU5Myw0NTYwMCw0NTYyMCw0NTYyOCw0NTY1Niw0NTY2MCw0NTY2NCw0NTY3Miw0NTY3Myw0NTY4NCw0NTY4NSw0NTY5Miw0NTcwMCw0NTcwMSw0'@; put 'NTcwNSw0NTcxMiw0NTcxMyw0NTcxNiw0NTcyMCw0NTcyMSw0NTcyMiw0NTcyOCw0NTcyOSw0NTczMSw0NTczMyw0NTczNCw0NTczOCw0NTc0MCw0NTc0NCw0NTc0OCw0NTc2OCw0NTc2OSw0NTc3Miw0NTc3Niw0NTc3OCw0NTc4NCw0NTc4NSw0NTc4Nyw0NTc4OSw0NTc5NCw0NTc5Niw0NTc5'@; put 'Nyw0NTc5OCw0NTgwMCw0NTgwMyw0NTgwNCw0NTgwNSw0NTgwNiw0NTgwNyw0NTgxMSw0NTgxMiw0NTgxMyw0NTgxNSw0NTgxNiw0NTgxNyw0NTgxOCw0NTgxOSw0NTgyMyw0NTgyNCw0NTgyNSw0NTgyOCw0NTgzMiw0NTg0MCw0NTg0MSw0NTg0Myw0NTg0NCw0NTg0NSw0NTg1Miw0NTkwOCw0'@; put 'NTkwOSw0NTkxMCw0NTkxMiw0NTkxNSw0NTkxNiw0NTkxOCw0NTkxOSw0NTkyNCw0NTkyNSw1MzM5Nyw1MzM5OCw1MzM5OSw1MzQwMCw1MzQwMSw1MzQwMiw1MzQwMyw1MzQwNCw1MzQwNSw1MzQwNiw1MzQwNyw1MzQwOCw1MzQwOSw1MzQxMCw1MzQxMSw1MzQxNCw1MzQxNSw1MzQxNyw1MzQx'@; put 'OCw1MzQxOSw1MzQyMSw1MzQyMiw1MzQyMyw1MzQyNCw1MzQyNSw1MzQyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQyNyw1MzQzMCw1MzQzMiw1MzQzNCw1MzQzNSw1MzQzNiw1MzQzNyw1MzQzOCw1MzQzOSw1MzQ0Miw1MzQ0Myw1MzQ0NSw1MzQ0Niw1MzQ0Nyw1MzQ1MCw1'@; put 'MzQ1MSw1MzQ1Miw1MzQ1Myw1MzQ1NCw1MzQ1NSw1MzQ1OCw1MzQ2Miw1MzQ2Myw1MzQ2NCw1MzQ2NSw1MzQ2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQ2Nyw1MzQ3MCw1MzQ3MSw1MzQ3Myw1MzQ3NCw1MzQ3NSw1MzQ3Nyw1MzQ3OCw1MzQ3OSw1MzQ4MCw1MzQ4MSw1MzQ4'@; put 'Miw1MzQ4Myw1MzQ4Niw1MzQ5MCw1MzQ5MSw1MzQ5Miw1MzQ5Myw1MzQ5NCw1MzQ5NSw1MzQ5Nyw1MzQ5OCw1MzQ5OSw1MzUwMCw1MzUwMSw1MzUwMiw1MzUwMyw1MzUwNCw1MzUwNSw1MzUwNiw1MzUwNyw1MzUwOCw0NTkyNyw0NTkyOSw0NTkzMSw0NTkzNCw0NTkzNiw0NTkzNyw0NTk0MCw0'@; put 'NTk0NCw0NTk1Miw0NTk1Myw0NTk1NSw0NTk1Niw0NTk1Nyw0NTk2NCw0NTk2OCw0NTk3Miw0NTk4NCw0NTk4NSw0NTk5Miw0NTk5Niw0NjAyMCw0NjAyMSw0NjAyNCw0NjAyNyw0NjAyOCw0NjAzMCw0NjAzMiw0NjAzNiw0NjAzNyw0NjAzOSw0NjA0MSw0NjA0Myw0NjA0NSw0NjA0OCw0NjA1'@; put 'Miw0NjA1Niw0NjA3Niw0NjA5Niw0NjEwNCw0NjEwOCw0NjExMiw0NjEyMCw0NjEyMSw0NjEyMyw0NjEzMiw0NjE2MCw0NjE2MSw0NjE2NCw0NjE2OCw0NjE3Niw0NjE3Nyw0NjE3OSw0NjE4MSw0NjE4OCw0NjIwOCw0NjIxNiw0NjIzNyw0NjI0NCw0NjI0OCw0NjI1Miw0NjI2MSw0NjI2Myw0'@; put 'NjI2NSw0NjI3Miw0NjI3Niw0NjI4MCw0NjI4OCw0NjI5Myw0NjMwMCw0NjMwMSw0NjMwNCw0NjMwNyw0NjMwOCw0NjMxMCw0NjMxNiw0NjMxNyw0NjMxOSw0NjMyMSw0NjMyOCw0NjM1Niw0NjM1Nyw0NjM2MCw0NjM2Myw0NjM2NCw0NjM3Miw0NjM3Myw0NjM3NSw0NjM3Niw0NjM3Nyw0NjM3'@; put 'OCw0NjM4NCw0NjM4NSw0NjM4OCw0NjM5Miw1MzUwOSw1MzUxMCw1MzUxMSw1MzUxMiw1MzUxMyw1MzUxNCw1MzUxNSw1MzUxNiw1MzUxOCw1MzUxOSw1MzUyMCw1MzUyMSw1MzUyMiw1MzUyMyw1MzUyNCw1MzUyNSw1MzUyNiw1MzUyNyw1MzUyOCw1MzUyOSw1MzUzMCw1MzUzMSw1MzUzMiw1'@; put 'MzUzMyw1MzUzNCw1MzUzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzUzNiw1MzUzNyw1MzUzOCw1MzUzOSw1MzU0MCw1MzU0MSw1MzU0Miw1MzU0Myw1MzU0NCw1MzU0NSw1MzU0Niw1MzU0Nyw1MzU0OCw1MzU0OSw1MzU1MCw1MzU1MSw1MzU1NCw1MzU1NSw1MzU1Nyw1MzU1'@; put 'OCw1MzU1OSw1MzU2MSw1MzU2Myw1MzU2NCw1MzU2NSw1MzU2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzU2Nyw1MzU3MCw1MzU3NCw1MzU3NSw1MzU3Niw1MzU3Nyw1MzU3OCw1MzU3OSw1MzU4Miw1MzU4Myw1MzU4NSw1MzU4Niw1MzU4Nyw1MzU4OSw1MzU5MCw1MzU5MSw1'@; put 'MzU5Miw1MzU5Myw1MzU5NCw1MzU5NSw1MzU5OCw1MzYwMCw1MzYwMiw1MzYwMyw1MzYwNCw1MzYwNSw1MzYwNiw1MzYwNyw1MzYwOSw1MzYxMCw1MzYxMSw1MzYxMyw0NjQwMCw0NjQwMSw0NjQwMyw0NjQwNCw0NjQwNSw0NjQxMSw0NjQxMiw0NjQxMyw0NjQxNiw0NjQyMCw0NjQyOCw0NjQy'@; put 'OSw0NjQzMSw0NjQzMiw0NjQzMyw0NjQ5Niw0NjQ5Nyw0NjUwMCw0NjUwNCw0NjUwNiw0NjUwNyw0NjUxMiw0NjUxMyw0NjUxNSw0NjUxNiw0NjUxNyw0NjUyMyw0NjUyNCw0NjUyNSw0NjUyOCw0NjUzMiw0NjU0MCw0NjU0MSw0NjU0Myw0NjU0NCw0NjU0NSw0NjU1Miw0NjU3Miw0NjYwOCw0'@; put 'NjYwOSw0NjYxMiw0NjYxNiw0NjYyOSw0NjYzNiw0NjY0NCw0NjY2NCw0NjY5Miw0NjY5Niw0Njc0OCw0Njc0OSw0Njc1Miw0Njc1Niw0Njc2Myw0Njc2NCw0Njc2OSw0NjgwNCw0NjgzMiw0NjgzNiw0Njg0MCw0Njg0OCw0Njg0OSw0Njg1Myw0Njg4OCw0Njg4OSw0Njg5Miw0Njg5NSw0Njg5'@; put 'Niw0NjkwNCw0NjkwNSw0NjkwNyw0NjkxNiw0NjkyMCw0NjkyNCw0NjkzMiw0NjkzMyw0Njk0NCw0Njk0OCw0Njk1Miw0Njk2MCw0Njk2MSw0Njk2Myw0Njk2NSw0Njk3Miw0Njk3Myw0Njk3Niw0Njk4MCw0Njk4OCw0Njk4OSw0Njk5MSw0Njk5Miw0Njk5Myw0Njk5NCw0Njk5OCw0Njk5OSw1'@; put 'MzYxNCw1MzYxNSw1MzYxNiw1MzYxNyw1MzYxOCw1MzYxOSw1MzYyMCw1MzYyMSw1MzYyMiw1MzYyMyw1MzYyNCw1MzYyNSw1MzYyNiw1MzYyNyw1MzYyOSw1MzYzMCw1MzYzMSw1MzYzMiw1MzYzMyw1MzYzNCw1MzYzNSw1MzYzNyw1MzYzOCw1MzYzOSw1MzY0MSw1MzY0MixudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCw1MzY0Myw1MzY0NCw1MzY0NSw1MzY0Niw1MzY0Nyw1MzY0OCw1MzY0OSw1MzY1MCw1MzY1MSw1MzY1Miw1MzY1Myw1MzY1NCw1MzY1NSw1MzY1Niw1MzY1Nyw1MzY1OCw1MzY1OSw1MzY2MCw1MzY2MSw1MzY2Miw1MzY2Myw1MzY2Niw1MzY2Nyw1MzY2OSw1'@; put 'MzY3MCw1MzY3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY3Myw1MzY3NCw1MzY3NSw1MzY3Niw1MzY3Nyw1MzY3OCw1MzY3OSw1MzY4Miw1MzY4NCw1MzY4Niw1MzY4Nyw1MzY4OCw1MzY4OSw1MzY5MSw1MzY5Myw1MzY5NCw1MzY5NSw1MzY5Nyw1MzY5OCw1MzY5OSw1Mzcw'@; put 'MCw1MzcwMSw1MzcwMiw1MzcwMyw1MzcwNCw1MzcwNSw1MzcwNiw1MzcwNyw1MzcwOCw1MzcwOSw1MzcxMCw1MzcxMSw0N2UzLDQ3MDAxLDQ3MDA0LDQ3MDA4LDQ3MDE2LDQ3MDE3LDQ3MDE5LDQ3MDIwLDQ3MDIxLDQ3MDI4LDQ3MDI5LDQ3MDMyLDQ3MDQ3LDQ3MDQ5LDQ3MDg0LDQ3MDg1LDQ3'@; put 'MDg4LDQ3MDkyLDQ3MTAwLDQ3MTAxLDQ3MTAzLDQ3MTA0LDQ3MTA1LDQ3MTExLDQ3MTEyLDQ3MTEzLDQ3MTE2LDQ3MTIwLDQ3MTI4LDQ3MTI5LDQ3MTMxLDQ3MTMzLDQ3MTQwLDQ3MTQxLDQ3MTQ0LDQ3MTQ4LDQ3MTU2LDQ3MTU3LDQ3MTU5LDQ3MTYwLDQ3MTYxLDQ3MTY4LDQ3MTcyLDQ3MTg1'@; put 'LDQ3MTg3LDQ3MTk2LDQ3MTk3LDQ3MjAwLDQ3MjA0LDQ3MjEyLDQ3MjEzLDQ3MjE1LDQ3MjE3LDQ3MjI0LDQ3MjI4LDQ3MjQ1LDQ3MjcyLDQ3MjgwLDQ3Mjg0LDQ3Mjg4LDQ3Mjk2LDQ3Mjk3LDQ3Mjk5LDQ3MzAxLDQ3MzA4LDQ3MzEyLDQ3MzE2LDQ3MzI1LDQ3MzI3LDQ3MzI5LDQ3MzM2LDQ3'@; put 'MzM3LDQ3MzQwLDQ3MzQ0LDQ3MzUyLDQ3MzUzLDQ3MzU1LDQ3MzU3LDQ3MzY0LDQ3Mzg0LDQ3MzkyLDQ3NDIwLDQ3NDIxLDQ3NDI0LDQ3NDI4LDQ3NDM2LDQ3NDM5LDQ3NDQxLDQ3NDQ4LDQ3NDQ5LDQ3NDUyLDQ3NDU2LDQ3NDY0LDQ3NDY1LDUzNzEyLDUzNzEzLDUzNzE0LDUzNzE1LDUzNzE2'@; put 'LDUzNzE3LDUzNzE4LDUzNzE5LDUzNzIxLDUzNzIyLDUzNzIzLDUzNzI0LDUzNzI1LDUzNzI2LDUzNzI3LDUzNzI4LDUzNzI5LDUzNzMwLDUzNzMxLDUzNzMyLDUzNzMzLDUzNzM0LDUzNzM1LDUzNzM2LDUzNzM3LDUzNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzM5LDUz'@; put 'NzQwLDUzNzQxLDUzNzQyLDUzNzQzLDUzNzQ0LDUzNzQ1LDUzNzQ2LDUzNzQ3LDUzNzQ5LDUzNzUwLDUzNzUxLDUzNzUzLDUzNzU0LDUzNzU1LDUzNzU2LDUzNzU3LDUzNzU4LDUzNzU5LDUzNzYwLDUzNzYxLDUzNzYyLDUzNzYzLDUzNzY0LDUzNzY1LDUzNzY2LG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLDUzNzY4LDUzNzcwLDUzNzcxLDUzNzcyLDUzNzczLDUzNzc0LDUzNzc1LDUzNzc3LDUzNzc4LDUzNzc5LDUzNzgwLDUzNzgxLDUzNzgyLDUzNzgzLDUzNzg0LDUzNzg1LDUzNzg2LDUzNzg3LDUzNzg4LDUzNzg5LDUzNzkwLDUzNzkxLDUzNzkyLDUzNzkzLDUzNzk0LDUz'@; put 'Nzk1LDUzNzk2LDUzNzk3LDUzNzk4LDUzNzk5LDUzODAwLDUzODAxLDQ3NDY3LDQ3NDY5LDQ3NDc2LDQ3NDc3LDQ3NDgwLDQ3NDg0LDQ3NDkyLDQ3NDkzLDQ3NDk1LDQ3NDk3LDQ3NDk4LDQ3NTAxLDQ3NTAyLDQ3NTMyLDQ3NTMzLDQ3NTM2LDQ3NTQwLDQ3NTQ4LDQ3NTQ5LDQ3NTUxLDQ3NTUz'@; put 'LDQ3NTYwLDQ3NTYxLDQ3NTY0LDQ3NTY2LDQ3NTY3LDQ3NTY4LDQ3NTY5LDQ3NTcwLDQ3NTc2LDQ3NTc3LDQ3NTc5LDQ3NTgxLDQ3NTgyLDQ3NTg1LDQ3NTg3LDQ3NTg4LDQ3NTg5LDQ3NTkyLDQ3NTk2LDQ3NjA0LDQ3NjA1LDQ3NjA3LDQ3NjA4LDQ3NjA5LDQ3NjEwLDQ3NjE2LDQ3NjE3LDQ3'@; put 'NjI0LDQ3NjM3LDQ3NjcyLDQ3NjczLDQ3Njc2LDQ3NjgwLDQ3NjgyLDQ3Njg4LDQ3Njg5LDQ3NjkxLDQ3NjkzLDQ3Njk0LDQ3Njk5LDQ3NzAwLDQ3NzAxLDQ3NzA0LDQ3NzA4LDQ3NzE2LDQ3NzE3LDQ3NzE5LDQ3NzIwLDQ3NzIxLDQ3NzI4LDQ3NzI5LDQ3NzMyLDQ3NzM2LDQ3NzQ3LDQ3NzQ4'@; put 'LDQ3NzQ5LDQ3NzUxLDQ3NzU2LDQ3Nzg0LDQ3Nzg1LDQ3Nzg3LDQ3Nzg4LDQ3NzkyLDQ3Nzk0LDQ3ODAwLDQ3ODAxLDQ3ODAzLDQ3ODA1LDQ3ODEyLDQ3ODE2LDQ3ODMyLDQ3ODMzLDQ3ODY4LDUzODAyLDUzODAzLDUzODA2LDUzODA3LDUzODA5LDUzODEwLDUzODExLDUzODEzLDUzODE0LDUz'@; put 'ODE1LDUzODE2LDUzODE3LDUzODE4LDUzODE5LDUzODIyLDUzODI0LDUzODI2LDUzODI3LDUzODI4LDUzODI5LDUzODMwLDUzODMxLDUzODMzLDUzODM0LDUzODM1LDUzODM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODM3LDUzODM4LDUzODM5LDUzODQwLDUzODQxLDUzODQy'@; put 'LDUzODQzLDUzODQ0LDUzODQ1LDUzODQ2LDUzODQ3LDUzODQ4LDUzODQ5LDUzODUwLDUzODUxLDUzODUzLDUzODU0LDUzODU1LDUzODU2LDUzODU3LDUzODU4LDUzODU5LDUzODYxLDUzODYyLDUzODYzLDUzODY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODY1LDUzODY2LDUz'@; put 'ODY3LDUzODY4LDUzODY5LDUzODcwLDUzODcxLDUzODcyLDUzODczLDUzODc0LDUzODc1LDUzODc2LDUzODc3LDUzODc4LDUzODc5LDUzODgwLDUzODgxLDUzODgyLDUzODgzLDUzODg0LDUzODg1LDUzODg2LDUzODg3LDUzODkwLDUzODkxLDUzODkzLDUzODk0LDUzODk1LDUzODk3LDUzODk4'@; put 'LDUzODk5LDUzOTAwLDQ3ODcyLDQ3ODc2LDQ3ODg1LDQ3ODg3LDQ3ODg5LDQ3ODk2LDQ3OTAwLDQ3OTA0LDQ3OTEzLDQ3OTE1LDQ3OTI0LDQ3OTI1LDQ3OTI2LDQ3OTI4LDQ3OTMxLDQ3OTMyLDQ3OTMzLDQ3OTM0LDQ3OTQwLDQ3OTQxLDQ3OTQzLDQ3OTQ1LDQ3OTQ5LDQ3OTUxLDQ3OTUyLDQ3'@; put 'OTU2LDQ3OTYwLDQ3OTY5LDQ3OTcxLDQ3OTgwLDQ4MDA4LDQ4MDEyLDQ4MDE2LDQ4MDM2LDQ4MDQwLDQ4MDQ0LDQ4MDUyLDQ4MDU1LDQ4MDY0LDQ4MDY4LDQ4MDcyLDQ4MDgwLDQ4MDgzLDQ4MTIwLDQ4MTIxLDQ4MTI0LDQ4MTI3LDQ4MTI4LDQ4MTMwLDQ4MTM2LDQ4MTM3LDQ4MTM5LDQ4MTQw'@; put 'LDQ4MTQxLDQ4MTQzLDQ4MTQ1LDQ4MTQ4LDQ4MTQ5LDQ4MTUwLDQ4MTUxLDQ4MTUyLDQ4MTU1LDQ4MTU2LDQ4MTU3LDQ4MTU4LDQ4MTU5LDQ4MTY0LDQ4MTY1LDQ4MTY3LDQ4MTY5LDQ4MTczLDQ4MTc2LDQ4MTc3LDQ4MTgwLDQ4MTg0LDQ4MTkyLDQ4MTkzLDQ4MTk1LDQ4MTk2LDQ4MTk3LDQ4'@; put 'MjAxLDQ4MjA0LDQ4MjA1LDQ4MjA4LDQ4MjIxLDQ4MjYwLDQ4MjYxLDQ4MjY0LDQ4MjY3LDQ4MjY4LDQ4MjcwLDQ4Mjc2LDQ4Mjc3LDQ4Mjc5LDUzOTAxLDUzOTAyLDUzOTAzLDUzOTA2LDUzOTA3LDUzOTA4LDUzOTEwLDUzOTExLDUzOTEyLDUzOTEzLDUzOTE0LDUzOTE1LDUzOTE3LDUzOTE4'@; put 'LDUzOTE5LDUzOTIxLDUzOTIyLDUzOTIzLDUzOTI1LDUzOTI2LDUzOTI3LDUzOTI4LDUzOTI5LDUzOTMwLDUzOTMxLDUzOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTM0LDUzOTM1LDUzOTM2LDUzOTM4LDUzOTM5LDUzOTQwLDUzOTQxLDUzOTQyLDUzOTQzLDUzOTQ2LDUz'@; put 'OTQ3LDUzOTQ5LDUzOTUwLDUzOTUzLDUzOTU1LDUzOTU2LDUzOTU3LDUzOTU4LDUzOTU5LDUzOTYyLDUzOTY0LDUzOTY1LDUzOTY2LDUzOTY3LDUzOTY4LDUzOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTcwLDUzOTcxLDUzOTczLDUzOTc0LDUzOTc1LDUzOTc3LDUzOTc4'@; put 'LDUzOTc5LDUzOTgxLDUzOTgyLDUzOTgzLDUzOTg0LDUzOTg1LDUzOTg2LDUzOTg3LDUzOTkwLDUzOTkxLDUzOTkyLDUzOTkzLDUzOTk0LDUzOTk1LDUzOTk2LDUzOTk3LDUzOTk4LDUzOTk5LDU0MDAyLDU0MDAzLDU0MDA1LDU0MDA2LDU0MDA3LDU0MDA5LDU0MDEwLDQ4MjgxLDQ4MjgyLDQ4'@; put 'Mjg4LDQ4Mjg5LDQ4MjkyLDQ4Mjk1LDQ4Mjk2LDQ4MzA0LDQ4MzA1LDQ4MzA3LDQ4MzA4LDQ4MzA5LDQ4MzE2LDQ4MzE3LDQ4MzIwLDQ4MzI0LDQ4MzMzLDQ4MzM1LDQ4MzM2LDQ4MzM3LDQ4MzQxLDQ4MzQ0LDQ4MzQ4LDQ4MzcyLDQ4MzczLDQ4Mzc0LDQ4Mzc2LDQ4MzgwLDQ4Mzg4LDQ4Mzg5'@; put 'LDQ4MzkxLDQ4MzkzLDQ4NDAwLDQ4NDA0LDQ4NDIwLDQ4NDI4LDQ4NDQ4LDQ4NDU2LDQ4NDU3LDQ4NDYwLDQ4NDY0LDQ4NDcyLDQ4NDczLDQ4NDg0LDQ4NDg4LDQ4NTEyLDQ4NTEzLDQ4NTE2LDQ4NTE5LDQ4NTIwLDQ4NTIxLDQ4NTIyLDQ4NTI4LDQ4NTI5LDQ4NTMxLDQ4NTMzLDQ4NTM3LDQ4'@; put 'NTM4LDQ4NTQwLDQ4NTQ4LDQ4NTYwLDQ4NTY4LDQ4NTk2LDQ4NTk3LDQ4NjAwLDQ4NjA0LDQ4NjE3LDQ4NjI0LDQ4NjI4LDQ4NjMyLDQ4NjQwLDQ4NjQzLDQ4NjQ1LDQ4NjUyLDQ4NjUzLDQ4NjU2LDQ4NjYwLDQ4NjY4LDQ4NjY5LDQ4NjcxLDQ4NzA4LDQ4NzA5LDQ4NzEyLDQ4NzE2LDQ4NzE4'@; put 'LDQ4NzI0LDQ4NzI1LDQ4NzI3LDQ4NzI5LDQ4NzMwLDQ4NzMxLDQ4NzM2LDQ4NzM3LDQ4NzQwLDU0MDExLDU0MDEyLDU0MDEzLDU0MDE0LDU0MDE1LDU0MDE4LDU0MDIwLDU0MDIyLDU0MDIzLDU0MDI0LDU0MDI1LDU0MDI2LDU0MDI3LDU0MDMxLDU0MDMzLDU0MDM0LDU0MDM1LDU0MDM3LDU0'@; put 'MDM5LDU0MDQwLDU0MDQxLDU0MDQyLDU0MDQzLDU0MDQ2LDU0MDUwLDU0MDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDUyLDU0MDU0LDU0MDU1LDU0MDU4LDU0MDU5LDU0MDYxLDU0MDYyLDU0MDYzLDU0MDY1LDU0MDY2LDU0MDY3LDU0MDY4LDU0MDY5LDU0MDcwLDU0MDcx'@; put 'LDU0MDc0LDU0MDc4LDU0MDc5LDU0MDgwLDU0MDgxLDU0MDgyLDU0MDgzLDU0MDg2LDU0MDg3LDU0MDg4LDU0MDg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDkwLDU0MDkxLDU0MDkyLDU0MDkzLDU0MDk0LDU0MDk1LDU0MDk2LDU0MDk3LDU0MDk4LDU0MDk5LDU0MTAwLDU0'@; put 'MTAxLDU0MTAyLDU0MTAzLDU0MTA0LDU0MTA1LDU0MTA2LDU0MTA3LDU0MTA4LDU0MTA5LDU0MTEwLDU0MTExLDU0MTEyLDU0MTEzLDU0MTE0LDU0MTE1LDU0MTE2LDU0MTE3LDU0MTE4LDU0MTE5LDU0MTIwLDU0MTIxLDQ4NzQ0LDQ4NzQ2LDQ4NzUyLDQ4NzUzLDQ4NzU1LDQ4NzU2LDQ4NzU3'@; put 'LDQ4NzYzLDQ4NzY0LDQ4NzY1LDQ4NzY4LDQ4NzcyLDQ4NzgwLDQ4NzgxLDQ4NzgzLDQ4Nzg0LDQ4Nzg1LDQ4NzkyLDQ4NzkzLDQ4ODA4LDQ4ODQ4LDQ4ODQ5LDQ4ODUyLDQ4ODU1LDQ4ODU2LDQ4ODY0LDQ4ODY3LDQ4ODY4LDQ4ODY5LDQ4ODc2LDQ4ODk3LDQ4OTA0LDQ4OTA1LDQ4OTIwLDQ4'@; put 'OTIxLDQ4OTIzLDQ4OTI0LDQ4OTI1LDQ4OTYwLDQ4OTYxLDQ4OTY0LDQ4OTY4LDQ4OTc2LDQ4OTc3LDQ4OTgxLDQ5MDQ0LDQ5MDcyLDQ5MDkzLDQ5MTAwLDQ5MTAxLDQ5MTA0LDQ5MTA4LDQ5MTE2LDQ5MTE5LDQ5MTIxLDQ5MjEyLDQ5MjMzLDQ5MjQwLDQ5MjQ0LDQ5MjQ4LDQ5MjU2LDQ5MjU3'@; put 'LDQ5Mjk2LDQ5Mjk3LDQ5MzAwLDQ5MzA0LDQ5MzEyLDQ5MzEzLDQ5MzE1LDQ5MzE3LDQ5MzI0LDQ5MzI1LDQ5MzI3LDQ5MzI4LDQ5MzMxLDQ5MzMyLDQ5MzMzLDQ5MzM0LDQ5MzQwLDQ5MzQxLDQ5MzQzLDQ5MzQ0LDQ5MzQ1LDQ5MzQ5LDQ5MzUyLDQ5MzUzLDQ5MzU2LDQ5MzYwLDQ5MzY4LDQ5'@; put 'MzY5LDQ5MzcxLDQ5MzcyLDQ5MzczLDQ5MzgwLDU0MTIyLDU0MTIzLDU0MTI0LDU0MTI1LDU0MTI2LDU0MTI3LDU0MTI4LDU0MTI5LDU0MTMwLDU0MTMxLDU0MTMyLDU0MTMzLDU0MTM0LDU0MTM1LDU0MTM2LDU0MTM3LDU0MTM4LDU0MTM5LDU0MTQyLDU0MTQzLDU0MTQ1LDU0MTQ2LDU0MTQ3'@; put 'LDU0MTQ5LDU0MTUwLDU0MTUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTUyLDU0MTUzLDU0MTU0LDU0MTU1LDU0MTU4LDU0MTYyLDU0MTYzLDU0MTY0LDU0MTY1LDU0MTY2LDU0MTY3LDU0MTcwLDU0MTcxLDU0MTczLDU0MTc0LDU0MTc1LDU0MTc3LDU0MTc4LDU0MTc5LDU0'@; put 'MTgwLDU0MTgxLDU0MTgyLDU0MTgzLDU0MTg2LDU0MTg4LDU0MTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTkxLDU0MTkyLDU0MTkzLDU0MTk0LDU0MTk1LDU0MTk3LDU0MTk4LDU0MTk5LDU0MjAxLDU0MjAyLDU0MjAzLDU0MjA1LDU0MjA2LDU0MjA3LDU0MjA4LDU0MjA5'@; put 'LDU0MjEwLDU0MjExLDU0MjE0LDU0MjE1LDU0MjE4LDU0MjE5LDU0MjIwLDU0MjIxLDU0MjIyLDU0MjIzLDU0MjI1LDU0MjI2LDU0MjI3LDU0MjI4LDU0MjI5LDU0MjMwLDQ5MzgxLDQ5Mzg0LDQ5Mzg4LDQ5Mzk2LDQ5Mzk3LDQ5Mzk5LDQ5NDAxLDQ5NDA4LDQ5NDEyLDQ5NDE2LDQ5NDI0LDQ5'@; put 'NDI5LDQ5NDM2LDQ5NDM3LDQ5NDM4LDQ5NDM5LDQ5NDQwLDQ5NDQzLDQ5NDQ0LDQ5NDQ2LDQ5NDQ3LDQ5NDUyLDQ5NDUzLDQ5NDU1LDQ5NDU2LDQ5NDU3LDQ5NDYyLDQ5NDY0LDQ5NDY1LDQ5NDY4LDQ5NDcyLDQ5NDgwLDQ5NDgxLDQ5NDgzLDQ5NDg0LDQ5NDg1LDQ5NDkyLDQ5NDkzLDQ5NDk2'@; put 'LDQ5NTAwLDQ5NTA4LDQ5NTA5LDQ5NTExLDQ5NTEyLDQ5NTEzLDQ5NTIwLDQ5NTI0LDQ5NTI4LDQ5NTQxLDQ5NTQ4LDQ5NTQ5LDQ5NTUwLDQ5NTUyLDQ5NTU2LDQ5NTU4LDQ5NTY0LDQ5NTY1LDQ5NTY3LDQ5NTY5LDQ5NTczLDQ5NTc2LDQ5NTc3LDQ5NTgwLDQ5NTg0LDQ5NTk3LDQ5NjA0LDQ5'@; put 'NjA4LDQ5NjEyLDQ5NjIwLDQ5NjIzLDQ5NjI0LDQ5NjMyLDQ5NjM2LDQ5NjQwLDQ5NjQ4LDQ5NjQ5LDQ5NjUxLDQ5NjYwLDQ5NjYxLDQ5NjY0LDQ5NjY4LDQ5Njc2LDQ5Njc3LDQ5Njc5LDQ5NjgxLDQ5Njg4LDQ5Njg5LDQ5NjkyLDQ5Njk1LDQ5Njk2LDQ5NzA0LDQ5NzA1LDQ5NzA3LDQ5NzA5'@; put 'LDU0MjMxLDU0MjMzLDU0MjM0LDU0MjM1LDU0MjM2LDU0MjM3LDU0MjM4LDU0MjM5LDU0MjQwLDU0MjQyLDU0MjQ0LDU0MjQ1LDU0MjQ2LDU0MjQ3LDU0MjQ4LDU0MjQ5LDU0MjUwLDU0MjUxLDU0MjU0LDU0MjU1LDU0MjU3LDU0MjU4LDU0MjU5LDU0MjYxLDU0MjYyLDU0MjYzLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjY0LDU0MjY1LDU0MjY2LDU0MjY3LDU0MjcwLDU0MjcyLDU0Mjc0LDU0Mjc1LDU0Mjc2LDU0Mjc3LDU0Mjc4LDU0Mjc5LDU0MjgxLDU0MjgyLDU0MjgzLDU0Mjg0LDU0Mjg1LDU0Mjg2LDU0Mjg3LDU0Mjg4LDU0Mjg5LDU0MjkwLDU0MjkxLDU0Mjky'@; put 'LDU0MjkzLDU0Mjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mjk1LDU0Mjk2LDU0Mjk3LDU0Mjk4LDU0Mjk5LDU0MzAwLDU0MzAyLDU0MzAzLDU0MzA0LDU0MzA1LDU0MzA2LDU0MzA3LDU0MzA4LDU0MzA5LDU0MzEwLDU0MzExLDU0MzEyLDU0MzEzLDU0MzE0LDU0MzE1LDU0'@; put 'MzE2LDU0MzE3LDU0MzE4LDU0MzE5LDU0MzIwLDU0MzIxLDU0MzIyLDU0MzIzLDU0MzI0LDU0MzI1LDU0MzI2LDU0MzI3LDQ5NzExLDQ5NzEzLDQ5NzE0LDQ5NzE2LDQ5NzM2LDQ5NzQ0LDQ5NzQ1LDQ5NzQ4LDQ5NzUyLDQ5NzYwLDQ5NzY1LDQ5NzcyLDQ5NzczLDQ5Nzc2LDQ5NzgwLDQ5Nzg4'@; put 'LDQ5Nzg5LDQ5NzkxLDQ5NzkzLDQ5ODAwLDQ5ODAxLDQ5ODA4LDQ5ODE2LDQ5ODE5LDQ5ODIxLDQ5ODI4LDQ5ODI5LDQ5ODMyLDQ5ODM2LDQ5ODM3LDQ5ODQ0LDQ5ODQ1LDQ5ODQ3LDQ5ODQ5LDQ5ODg0LDQ5ODg1LDQ5ODg4LDQ5ODkxLDQ5ODkyLDQ5ODk5LDQ5OTAwLDQ5OTAxLDQ5OTAzLDQ5'@; put 'OTA1LDQ5OTEwLDQ5OTEyLDQ5OTEzLDQ5OTE1LDQ5OTE2LDQ5OTIwLDQ5OTI4LDQ5OTI5LDQ5OTMyLDQ5OTMzLDQ5OTM5LDQ5OTQwLDQ5OTQxLDQ5OTQ0LDQ5OTQ4LDQ5OTU2LDQ5OTU3LDQ5OTYwLDQ5OTYxLDQ5OTg5LDUwMDI0LDUwMDI1LDUwMDI4LDUwMDMyLDUwMDM0LDUwMDQwLDUwMDQx'@; put 'LDUwMDQ0LDUwMDQ1LDUwMDUyLDUwMDU2LDUwMDYwLDUwMTEyLDUwMTM2LDUwMTM3LDUwMTQwLDUwMTQzLDUwMTQ0LDUwMTQ2LDUwMTUyLDUwMTUzLDUwMTU3LDUwMTY0LDUwMTY1LDUwMTY4LDUwMTg0LDUwMTkyLDUwMjEyLDUwMjIwLDUwMjI0LDU0MzI4LDU0MzI5LDU0MzMwLDU0MzMxLDU0'@; put 'MzMyLDU0MzMzLDU0MzM0LDU0MzM1LDU0MzM3LDU0MzM4LDU0MzM5LDU0MzQxLDU0MzQyLDU0MzQzLDU0MzQ0LDU0MzQ1LDU0MzQ2LDU0MzQ3LDU0MzQ4LDU0MzQ5LDU0MzUwLDU0MzUxLDU0MzUyLDU0MzUzLDU0MzU0LDU0MzU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MzU2'@; put 'LDU0MzU3LDU0MzU4LDU0MzU5LDU0MzYwLDU0MzYxLDU0MzYyLDU0MzYzLDU0MzY1LDU0MzY2LDU0MzY3LDU0MzY5LDU0MzcwLDU0MzcxLDU0MzczLDU0Mzc0LDU0Mzc1LDU0Mzc2LDU0Mzc3LDU0Mzc4LDU0Mzc5LDU0MzgwLDU0MzgyLDU0Mzg0LDU0Mzg1LDU0Mzg2LG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLDU0Mzg3LDU0Mzg4LDU0Mzg5LDU0MzkwLDU0MzkxLDU0Mzk0LDU0Mzk1LDU0Mzk3LDU0Mzk4LDU0NDAxLDU0NDAzLDU0NDA0LDU0NDA1LDU0NDA2LDU0NDA3LDU0NDEwLDU0NDEyLDU0NDE0LDU0NDE1LDU0NDE2LDU0NDE3LDU0NDE4LDU0NDE5LDU0NDIxLDU0NDIy'@; put 'LDU0NDIzLDU0NDI0LDU0NDI1LDU0NDI2LDU0NDI3LDU0NDI4LDU0NDI5LDUwMjI4LDUwMjM2LDUwMjM3LDUwMjQ4LDUwMjc2LDUwMjc3LDUwMjgwLDUwMjg0LDUwMjkyLDUwMjkzLDUwMjk3LDUwMzA0LDUwMzI0LDUwMzMyLDUwMzYwLDUwMzY0LDUwNDA5LDUwNDE2LDUwNDE3LDUwNDIwLDUw'@; put 'NDI0LDUwNDI2LDUwNDMxLDUwNDMyLDUwNDMzLDUwNDQ0LDUwNDQ4LDUwNDUyLDUwNDYwLDUwNDcyLDUwNDczLDUwNDc2LDUwNDgwLDUwNDg4LDUwNDg5LDUwNDkxLDUwNDkzLDUwNTAwLDUwNTAxLDUwNTA0LDUwNTA1LDUwNTA2LDUwNTA4LDUwNTA5LDUwNTEwLDUwNTE1LDUwNTE2LDUwNTE3'@; put 'LDUwNTE5LDUwNTIwLDUwNTIxLDUwNTI1LDUwNTI2LDUwNTI4LDUwNTI5LDUwNTMyLDUwNTM2LDUwNTQ0LDUwNTQ1LDUwNTQ3LDUwNTQ4LDUwNTQ5LDUwNTU2LDUwNTU3LDUwNTYwLDUwNTY0LDUwNTY3LDUwNTcyLDUwNTczLDUwNTc1LDUwNTc3LDUwNTgxLDUwNTgzLDUwNTg0LDUwNTg4LDUw'@; put 'NTkyLDUwNjAxLDUwNjEyLDUwNjEzLDUwNjE2LDUwNjE3LDUwNjE5LDUwNjIwLDUwNjIxLDUwNjIyLDUwNjI4LDUwNjI5LDUwNjMwLDUwNjMxLDUwNjMyLDUwNjMzLDUwNjM0LDUwNjM2LDUwNjM4LDU0NDMwLDU0NDMxLDU0NDMyLDU0NDMzLDU0NDM0LDU0NDM1LDU0NDM2LDU0NDM3LDU0NDM4'@; put 'LDU0NDM5LDU0NDQwLDU0NDQyLDU0NDQzLDU0NDQ0LDU0NDQ1LDU0NDQ2LDU0NDQ3LDU0NDQ4LDU0NDQ5LDU0NDUwLDU0NDUxLDU0NDUyLDU0NDUzLDU0NDU0LDU0NDU1LDU0NDU2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDU3LDU0NDU4LDU0NDU5LDU0NDYwLDU0NDYxLDU0'@; put 'NDYyLDU0NDYzLDU0NDY0LDU0NDY1LDU0NDY2LDU0NDY3LDU0NDY4LDU0NDY5LDU0NDcwLDU0NDcxLDU0NDcyLDU0NDczLDU0NDc0LDU0NDc1LDU0NDc3LDU0NDc4LDU0NDc5LDU0NDgxLDU0NDgyLDU0NDgzLDU0NDg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDg2LDU0NDg3'@; put 'LDU0NDg4LDU0NDg5LDU0NDkwLDU0NDkxLDU0NDkzLDU0NDk0LDU0NDk2LDU0NDk3LDU0NDk4LDU0NDk5LDU0NTAwLDU0NTAxLDU0NTAyLDU0NTAzLDU0NTA1LDU0NTA2LDU0NTA3LDU0NTA5LDU0NTEwLDU0NTExLDU0NTEzLDU0NTE0LDU0NTE1LDU0NTE2LDU0NTE3LDU0NTE4LDU0NTE5LDU0'@; put 'NTIxLDU0NTIyLDU0NTI0LDUwNjQwLDUwNjQxLDUwNjQ0LDUwNjQ4LDUwNjU2LDUwNjU3LDUwNjU5LDUwNjYxLDUwNjY4LDUwNjY5LDUwNjcwLDUwNjcyLDUwNjc2LDUwNjc4LDUwNjc5LDUwNjg0LDUwNjg1LDUwNjg2LDUwNjg3LDUwNjg4LDUwNjg5LDUwNjkzLDUwNjk0LDUwNjk1LDUwNjk2'@; put 'LDUwNzAwLDUwNzA0LDUwNzEyLDUwNzEzLDUwNzE1LDUwNzE2LDUwNzI0LDUwNzI1LDUwNzI4LDUwNzMyLDUwNzMzLDUwNzM0LDUwNzM2LDUwNzM5LDUwNzQwLDUwNzQxLDUwNzQzLDUwNzQ1LDUwNzQ3LDUwNzUyLDUwNzUzLDUwNzU2LDUwNzYwLDUwNzY4LDUwNzY5LDUwNzcxLDUwNzcyLDUw'@; put 'NzczLDUwNzgwLDUwNzgxLDUwNzg0LDUwNzk2LDUwNzk5LDUwODAxLDUwODA4LDUwODA5LDUwODEyLDUwODE2LDUwODI0LDUwODI1LDUwODI3LDUwODI5LDUwODM2LDUwODM3LDUwODQwLDUwODQ0LDUwODUyLDUwODUzLDUwODU1LDUwODU3LDUwODY0LDUwODY1LDUwODY4LDUwODcyLDUwODcz'@; put 'LDUwODc0LDUwODgwLDUwODgxLDUwODgzLDUwODg1LDUwODkyLDUwODkzLDUwODk2LDUwOTAwLDUwOTA4LDUwOTA5LDUwOTEyLDUwOTEzLDUwOTIwLDU0NTI2LDU0NTI3LDU0NTI4LDU0NTI5LDU0NTMwLDU0NTMxLDU0NTMzLDU0NTM0LDU0NTM1LDU0NTM3LDU0NTM4LDU0NTM5LDU0NTQxLDU0'@; put 'NTQyLDU0NTQzLDU0NTQ0LDU0NTQ1LDU0NTQ2LDU0NTQ3LDU0NTUwLDU0NTUyLDU0NTUzLDU0NTU0LDU0NTU1LDU0NTU2LDU0NTU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTU4LDU0NTU5LDU0NTYwLDU0NTYxLDU0NTYyLDU0NTYzLDU0NTY0LDU0NTY1LDU0NTY2LDU0NTY3'@; put 'LDU0NTY4LDU0NTY5LDU0NTcwLDU0NTcxLDU0NTcyLDU0NTczLDU0NTc0LDU0NTc1LDU0NTc2LDU0NTc3LDU0NTc4LDU0NTc5LDU0NTgwLDU0NTgxLDU0NTgyLDU0NTgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTg0LDU0NTg1LDU0NTg2LDU0NTg3LDU0NTkwLDU0NTkxLDU0'@; put 'NTkzLDU0NTk0LDU0NTk1LDU0NTk3LDU0NTk4LDU0NTk5LDU0NjAwLDU0NjAxLDU0NjAyLDU0NjAzLDU0NjA2LDU0NjA4LDU0NjEwLDU0NjExLDU0NjEyLDU0NjEzLDU0NjE0LDU0NjE1LDU0NjE4LDU0NjE5LDU0NjIxLDU0NjIyLDU0NjIzLDU0NjI1LDU0NjI2LDU0NjI3LDUwOTIxLDUwOTI0'@; put 'LDUwOTI4LDUwOTM2LDUwOTM3LDUwOTQxLDUwOTQ4LDUwOTQ5LDUwOTUyLDUwOTU2LDUwOTY0LDUwOTY1LDUwOTY3LDUwOTY5LDUwOTc2LDUwOTc3LDUwOTgwLDUwOTg0LDUwOTkyLDUwOTkzLDUwOTk1LDUwOTk3LDUwOTk5LDUxMDA0LDUxMDA1LDUxMDA4LDUxMDEyLDUxMDE4LDUxMDIwLDUx'@; put 'MDIxLDUxMDIzLDUxMDI1LDUxMDI2LDUxMDI3LDUxMDI4LDUxMDI5LDUxMDMwLDUxMDMxLDUxMDMyLDUxMDM2LDUxMDQwLDUxMDQ4LDUxMDUxLDUxMDYwLDUxMDYxLDUxMDY0LDUxMDY4LDUxMDY5LDUxMDcwLDUxMDc1LDUxMDc2LDUxMDc3LDUxMDc5LDUxMDgwLDUxMDgxLDUxMDgyLDUxMDg2'@; put 'LDUxMDg4LDUxMDg5LDUxMDkyLDUxMDk0LDUxMDk1LDUxMDk2LDUxMDk4LDUxMTA0LDUxMTA1LDUxMTA3LDUxMTA4LDUxMTA5LDUxMTEwLDUxMTE2LDUxMTE3LDUxMTIwLDUxMTI0LDUxMTMyLDUxMTMzLDUxMTM1LDUxMTM2LDUxMTM3LDUxMTQ0LDUxMTQ1LDUxMTQ4LDUxMTUwLDUxMTUyLDUx'@; put 'MTYwLDUxMTY1LDUxMTcyLDUxMTc2LDUxMTgwLDUxMjAwLDUxMjAxLDUxMjA0LDUxMjA4LDUxMjEwLDU0NjI4LDU0NjMwLDU0NjMxLDU0NjM0LDU0NjM2LDU0NjM4LDU0NjM5LDU0NjQwLDU0NjQxLDU0NjQyLDU0NjQzLDU0NjQ2LDU0NjQ3LDU0NjQ5LDU0NjUwLDU0NjUxLDU0NjUzLDU0NjU0'@; put 'LDU0NjU1LDU0NjU2LDU0NjU3LDU0NjU4LDU0NjU5LDU0NjYyLDU0NjY2LDU0NjY3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NjY4LDU0NjY5LDU0NjcwLDU0NjcxLDU0NjczLDU0Njc0LDU0Njc1LDU0Njc2LDU0Njc3LDU0Njc4LDU0Njc5LDU0NjgwLDU0NjgxLDU0NjgyLDU0'@; put 'NjgzLDU0Njg0LDU0Njg1LDU0Njg2LDU0Njg3LDU0Njg4LDU0Njg5LDU0NjkwLDU0NjkxLDU0NjkyLDU0Njk0LDU0Njk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Njk2LDU0Njk3LDU0Njk4LDU0Njk5LDU0NzAwLDU0NzAxLDU0NzAyLDU0NzAzLDU0NzA0LDU0NzA1LDU0NzA2'@; put 'LDU0NzA3LDU0NzA4LDU0NzA5LDU0NzEwLDU0NzExLDU0NzEyLDU0NzEzLDU0NzE0LDU0NzE1LDU0NzE2LDU0NzE3LDU0NzE4LDU0NzE5LDU0NzIwLDU0NzIxLDU0NzIyLDU0NzIzLDU0NzI0LDU0NzI1LDU0NzI2LDU0NzI3LDUxMjE2LDUxMjE3LDUxMjE5LDUxMjIxLDUxMjIyLDUxMjI4LDUx'@; put 'MjI5LDUxMjMyLDUxMjM2LDUxMjQ0LDUxMjQ1LDUxMjQ3LDUxMjQ5LDUxMjU2LDUxMjYwLDUxMjY0LDUxMjcyLDUxMjczLDUxMjc2LDUxMjc3LDUxMjg0LDUxMzEyLDUxMzEzLDUxMzE2LDUxMzIwLDUxMzIyLDUxMzI4LDUxMzI5LDUxMzMxLDUxMzMzLDUxMzM0LDUxMzM1LDUxMzM5LDUxMzQw'@; put 'LDUxMzQxLDUxMzQ4LDUxMzU3LDUxMzU5LDUxMzYxLDUxMzY4LDUxMzg4LDUxMzg5LDUxMzk2LDUxNDAwLDUxNDA0LDUxNDEyLDUxNDEzLDUxNDE1LDUxNDE3LDUxNDI0LDUxNDI1LDUxNDI4LDUxNDQ1LDUxNDUyLDUxNDUzLDUxNDU2LDUxNDYwLDUxNDYxLDUxNDYyLDUxNDY4LDUxNDY5LDUx'@; put 'NDcxLDUxNDczLDUxNDgwLDUxNTAwLDUxNTA4LDUxNTM2LDUxNTM3LDUxNTQwLDUxNTQ0LDUxNTUyLDUxNTUzLDUxNTU1LDUxNTY0LDUxNTY4LDUxNTcyLDUxNTgwLDUxNTkyLDUxNTkzLDUxNTk2LDUxNjAwLDUxNjA4LDUxNjA5LDUxNjExLDUxNjEzLDUxNjQ4LDUxNjQ5LDUxNjUyLDUxNjU1'@; put 'LDUxNjU2LDUxNjU4LDUxNjY0LDUxNjY1LDUxNjY3LDU0NzMwLDU0NzMxLDU0NzMzLDU0NzM0LDU0NzM1LDU0NzM3LDU0NzM5LDU0NzQwLDU0NzQxLDU0NzQyLDU0NzQzLDU0NzQ2LDU0NzQ4LDU0NzUwLDU0NzUxLDU0NzUyLDU0NzUzLDU0NzU0LDU0NzU1LDU0NzU4LDU0NzU5LDU0NzYxLDU0'@; put 'NzYyLDU0NzYzLDU0NzY1LDU0NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NzY3LDU0NzY4LDU0NzY5LDU0NzcwLDU0NzcxLDU0Nzc0LDU0Nzc2LDU0Nzc4LDU0Nzc5LDU0NzgwLDU0NzgxLDU0NzgyLDU0NzgzLDU0Nzg2LDU0Nzg3LDU0Nzg5LDU0NzkwLDU0NzkxLDU0Nzkz'@; put 'LDU0Nzk0LDU0Nzk1LDU0Nzk2LDU0Nzk3LDU0Nzk4LDU0Nzk5LDU0ODAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODA2LDU0ODA3LDU0ODA4LDU0ODA5LDU0ODEwLDU0ODExLDU0ODEzLDU0ODE0LDU0ODE1LDU0ODE3LDU0ODE4LDU0ODE5LDU0ODIxLDU0ODIyLDU0ODIzLDU0'@; put 'ODI0LDU0ODI1LDU0ODI2LDU0ODI3LDU0ODI4LDU0ODMwLDU0ODMxLDU0ODMyLDU0ODMzLDU0ODM0LDU0ODM1LDU0ODM2LDU0ODM3LDU0ODM4LDU0ODM5LDU0ODQyLDU0ODQzLDUxNjY5LDUxNjcwLDUxNjczLDUxNjc0LDUxNjc2LDUxNjc3LDUxNjgwLDUxNjgyLDUxNjg0LDUxNjg3LDUxNjky'@; put 'LDUxNjkzLDUxNjk1LDUxNjk2LDUxNjk3LDUxNzA0LDUxNzA1LDUxNzA4LDUxNzEyLDUxNzIwLDUxNzIxLDUxNzIzLDUxNzI0LDUxNzI1LDUxNzMyLDUxNzM2LDUxNzUzLDUxNzg4LDUxNzg5LDUxNzkyLDUxNzk2LDUxODA0LDUxODA1LDUxODA3LDUxODA4LDUxODA5LDUxODE2LDUxODM3LDUx'@; put 'ODQ0LDUxODY0LDUxOTAwLDUxOTAxLDUxOTA0LDUxOTA4LDUxOTE2LDUxOTE3LDUxOTE5LDUxOTIxLDUxOTIzLDUxOTI4LDUxOTI5LDUxOTM2LDUxOTQ4LDUxOTU2LDUxOTc2LDUxOTg0LDUxOTg4LDUxOTkyLDUyZTMsNTIwMDEsNTIwMzMsNTIwNDAsNTIwNDEsNTIwNDQsNTIwNDgsNTIwNTYs'@; put 'NTIwNTcsNTIwNjEsNTIwNjgsNTIwODgsNTIwODksNTIxMjQsNTIxNTIsNTIxODAsNTIxOTYsNTIxOTksNTIyMDEsNTIyMzYsNTIyMzcsNTIyNDAsNTIyNDQsNTIyNTIsNTIyNTMsNTIyNTcsNTIyNTgsNTIyNjMsNTIyNjQsNTIyNjUsNTIyNjgsNTIyNzAsNTIyNzIsNTIyODAsNTIyODEsNTIy'@; put 'ODMsNTQ4NDUsNTQ4NDYsNTQ4NDcsNTQ4NDksNTQ4NTAsNTQ4NTEsNTQ4NTIsNTQ4NTQsNTQ4NTUsNTQ4NTgsNTQ4NjAsNTQ4NjIsNTQ4NjMsNTQ4NjQsNTQ4NjYsNTQ4NjcsNTQ4NzAsNTQ4NzEsNTQ4NzMsNTQ4NzQsNTQ4NzUsNTQ4NzcsNTQ4NzgsNTQ4NzksNTQ4ODAsNTQ4ODEsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4ODIsNTQ4ODMsNTQ4ODQsNTQ4ODUsNTQ4ODYsNTQ4ODgsNTQ4OTAsNTQ4OTEsNTQ4OTIsNTQ4OTMsNTQ4OTQsNTQ4OTUsNTQ4OTgsNTQ4OTksNTQ5MDEsNTQ5MDIsNTQ5MDMsNTQ5MDQsNTQ5MDUsNTQ5MDYsNTQ5MDcsNTQ5MDgsNTQ5MDksNTQ5'@; put 'MTAsNTQ5MTEsNTQ5MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5MTMsNTQ5MTQsNTQ5MTYsNTQ5MTgsNTQ5MTksNTQ5MjAsNTQ5MjEsNTQ5MjIsNTQ5MjMsNTQ5MjYsNTQ5MjcsNTQ5MjksNTQ5MzAsNTQ5MzEsNTQ5MzMsNTQ5MzQsNTQ5MzUsNTQ5MzYsNTQ5MzcsNTQ5Mzgs'@; put 'NTQ5MzksNTQ5NDAsNTQ5NDIsNTQ5NDQsNTQ5NDYsNTQ5NDcsNTQ5NDgsNTQ5NDksNTQ5NTAsNTQ5NTEsNTQ5NTMsNTQ5NTQsNTIyODQsNTIyODUsNTIyODYsNTIyOTIsNTIyOTMsNTIyOTYsNTIzMDAsNTIzMDgsNTIzMDksNTIzMTEsNTIzMTIsNTIzMTMsNTIzMjAsNTIzMjQsNTIzMjYsNTIz'@; put 'MjgsNTIzMzYsNTIzNDEsNTIzNzYsNTIzNzcsNTIzODAsNTIzODQsNTIzOTIsNTIzOTMsNTIzOTUsNTIzOTYsNTIzOTcsNTI0MDQsNTI0MDUsNTI0MDgsNTI0MTIsNTI0MjAsNTI0MjEsNTI0MjMsNTI0MjUsNTI0MzIsNTI0MzYsNTI0NTIsNTI0NjAsNTI0NjQsNTI0ODEsNTI0ODgsNTI0ODks'@; put 'NTI0OTIsNTI0OTYsNTI1MDQsNTI1MDUsNTI1MDcsNTI1MDksNTI1MTYsNTI1MjAsNTI1MjQsNTI1MzcsNTI1NzIsNTI1NzYsNTI1ODAsNTI1ODgsNTI1ODksNTI1OTEsNTI1OTMsNTI2MDAsNTI2MTYsNTI2MjgsNTI2MjksNTI2MzIsNTI2MzYsNTI2NDQsNTI2NDUsNTI2NDcsNTI2NDksNTI2'@; put 'NTYsNTI2NzYsNTI2ODQsNTI2ODgsNTI3MTIsNTI3MTYsNTI3MjAsNTI3MjgsNTI3MjksNTI3MzEsNTI3MzMsNTI3NDAsNTI3NDQsNTI3NDgsNTI3NTYsNTI3NjEsNTI3NjgsNTI3NjksNTI3NzIsNTI3NzYsNTI3ODQsNTI3ODUsNTI3ODcsNTI3ODksNTQ5NTUsNTQ5NTcsNTQ5NTgsNTQ5NTks'@; put 'NTQ5NjEsNTQ5NjIsNTQ5NjMsNTQ5NjQsNTQ5NjUsNTQ5NjYsNTQ5NjcsNTQ5NjgsNTQ5NzAsNTQ5NzIsNTQ5NzMsNTQ5NzQsNTQ5NzUsNTQ5NzYsNTQ5NzcsNTQ5NzgsNTQ5NzksNTQ5ODIsNTQ5ODMsNTQ5ODUsNTQ5ODYsNTQ5ODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5'@; put 'ODksNTQ5OTAsNTQ5OTEsNTQ5OTIsNTQ5OTQsNTQ5OTUsNTQ5OTcsNTQ5OTgsNTVlMyw1NTAwMiw1NTAwMyw1NTAwNCw1NTAwNSw1NTAwNiw1NTAwNyw1NTAwOSw1NTAxMCw1NTAxMSw1NTAxMyw1NTAxNCw1NTAxNSw1NTAxNyw1NTAxOCw1NTAxOSw1NTAyMCw1NTAyMSxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCw1NTAyMiw1NTAyMyw1NTAyNSw1NTAyNiw1NTAyNyw1NTAyOCw1NTAzMCw1NTAzMSw1NTAzMiw1NTAzMyw1NTAzNCw1NTAzNSw1NTAzOCw1NTAzOSw1NTA0MSw1NTA0Miw1NTA0Myw1NTA0NSw1NTA0Niw1NTA0Nyw1NTA0OCw1NTA0OSw1NTA1MCw1NTA1MSw1NTA1'@; put 'Miw1NTA1Myw1NTA1NCw1NTA1NSw1NTA1Niw1NTA1OCw1NTA1OSw1NTA2MCw1MjgyNCw1MjgyNSw1MjgyOCw1MjgzMSw1MjgzMiw1MjgzMyw1Mjg0MCw1Mjg0MSw1Mjg0Myw1Mjg0NSw1Mjg1Miw1Mjg1Myw1Mjg1Niw1Mjg2MCw1Mjg2OCw1Mjg2OSw1Mjg3MSw1Mjg3Myw1Mjg4MCw1Mjg4MSw1'@; put 'Mjg4NCw1Mjg4OCw1Mjg5Niw1Mjg5Nyw1Mjg5OSw1MjkwMCw1MjkwMSw1MjkwOCw1MjkwOSw1MjkyOSw1Mjk2NCw1Mjk2NSw1Mjk2OCw1Mjk3MSw1Mjk3Miw1Mjk4MCw1Mjk4MSw1Mjk4Myw1Mjk4NCw1Mjk4NSw1Mjk5Miw1Mjk5Myw1Mjk5Niw1M2UzLDUzMDA4LDUzMDA5LDUzMDExLDUzMDEz'@; put 'LDUzMDIwLDUzMDI0LDUzMDI4LDUzMDM2LDUzMDM3LDUzMDM5LDUzMDQwLDUzMDQxLDUzMDQ4LDUzMDc2LDUzMDc3LDUzMDgwLDUzMDg0LDUzMDkyLDUzMDkzLDUzMDk1LDUzMDk3LDUzMTA0LDUzMTA1LDUzMTA4LDUzMTEyLDUzMTIwLDUzMTI1LDUzMTMyLDUzMTUzLDUzMTYwLDUzMTY4LDUz'@; put 'MTg4LDUzMjE2LDUzMjE3LDUzMjIwLDUzMjI0LDUzMjMyLDUzMjMzLDUzMjM1LDUzMjM3LDUzMjQ0LDUzMjQ4LDUzMjUyLDUzMjY1LDUzMjcyLDUzMjkzLDUzMzAwLDUzMzAxLDUzMzA0LDUzMzA4LDU1MDYxLDU1MDYyLDU1MDYzLDU1MDY2LDU1MDY3LDU1MDY5LDU1MDcwLDU1MDcxLDU1MDcz'@; put 'LDU1MDc0LDU1MDc1LDU1MDc2LDU1MDc3LDU1MDc4LDU1MDc5LDU1MDgyLDU1MDg0LDU1MDg2LDU1MDg3LDU1MDg4LDU1MDg5LDU1MDkwLDU1MDkxLDU1MDk0LDU1MDk1LDU1MDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDk4LDU1MDk5LDU1MTAxLDU1MTAyLDU1MTAzLDU1'@; put 'MTA0LDU1MTA1LDU1MTA2LDU1MTA3LDU1MTA5LDU1MTEwLDU1MTEyLDU1MTE0LDU1MTE1LDU1MTE2LDU1MTE3LDU1MTE4LDU1MTE5LDU1MTIyLDU1MTIzLDU1MTI1LDU1MTMwLDU1MTMxLDU1MTMyLDU1MTMzLDU1MTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MTM1LDU1MTM4'@; put 'LDU1MTQwLDU1MTQyLDU1MTQzLDU1MTQ0LDU1MTQ2LDU1MTQ3LDU1MTQ5LDU1MTUwLDU1MTUxLDU1MTUzLDU1MTU0LDU1MTU1LDU1MTU3LDU1MTU4LDU1MTU5LDU1MTYwLDU1MTYxLDU1MTYyLDU1MTYzLDU1MTY2LDU1MTY3LDU1MTY4LDU1MTcwLDU1MTcxLDU1MTcyLDU1MTczLDU1MTc0LDU1'@; put 'MTc1LDU1MTc4LDU1MTc5LDUzMzE2LDUzMzE3LDUzMzE5LDUzMzIxLDUzMzI4LDUzMzMyLDUzMzM2LDUzMzQ0LDUzMzU2LDUzMzU3LDUzMzYwLDUzMzY0LDUzMzcyLDUzMzczLDUzMzc3LDUzNDEyLDUzNDEzLDUzNDE2LDUzNDIwLDUzNDI4LDUzNDI5LDUzNDMxLDUzNDMzLDUzNDQwLDUzNDQx'@; put 'LDUzNDQ0LDUzNDQ4LDUzNDQ5LDUzNDU2LDUzNDU3LDUzNDU5LDUzNDYwLDUzNDYxLDUzNDY4LDUzNDY5LDUzNDcyLDUzNDc2LDUzNDg0LDUzNDg1LDUzNDg3LDUzNDg4LDUzNDg5LDUzNDk2LDUzNTE3LDUzNTUyLDUzNTUzLDUzNTU2LDUzNTYwLDUzNTYyLDUzNTY4LDUzNTY5LDUzNTcxLDUz'@; put 'NTcyLDUzNTczLDUzNTgwLDUzNTgxLDUzNTg0LDUzNTg4LDUzNTk2LDUzNTk3LDUzNTk5LDUzNjAxLDUzNjA4LDUzNjEyLDUzNjI4LDUzNjM2LDUzNjQwLDUzNjY0LDUzNjY1LDUzNjY4LDUzNjcyLDUzNjgwLDUzNjgxLDUzNjgzLDUzNjg1LDUzNjkwLDUzNjkyLDUzNjk2LDUzNzIwLDUzNzQ4'@; put 'LDUzNzUyLDUzNzY3LDUzNzY5LDUzNzc2LDUzODA0LDUzODA1LDUzODA4LDUzODEyLDUzODIwLDUzODIxLDUzODIzLDUzODI1LDUzODMyLDUzODUyLDU1MTgxLDU1MTgyLDU1MTgzLDU1MTg1LDU1MTg2LDU1MTg3LDU1MTg4LDU1MTg5LDU1MTkwLDU1MTkxLDU1MTk0LDU1MTk2LDU1MTk4LDU1'@; put 'MTk5LDU1MjAwLDU1MjAxLDU1MjAyLDU1MjAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODYwLDUzODg4LDUzODg5LDUzODkyLDUzODk2LDUzOTA0LDUzOTA1LDUzOTA5LDUzOTE2LDUzOTIwLDUzOTI0LDUzOTMyLDUzOTM3'@; put 'LDUzOTQ0LDUzOTQ1LDUzOTQ4LDUzOTUxLDUzOTUyLDUzOTU0LDUzOTYwLDUzOTYxLDUzOTYzLDUzOTcyLDUzOTc2LDUzOTgwLDUzOTg4LDUzOTg5LDU0ZTMsNTQwMDEsNTQwMDQsNTQwMDgsNTQwMTYsNTQwMTcsNTQwMTksNTQwMjEsNTQwMjgsNTQwMjksNTQwMzAsNTQwMzIsNTQwMzYsNTQw'@; put 'MzgsNTQwNDQsNTQwNDUsNTQwNDcsNTQwNDgsNTQwNDksNTQwNTMsNTQwNTYsNTQwNTcsNTQwNjAsNTQwNjQsNTQwNzIsNTQwNzMsNTQwNzUsNTQwNzYsNTQwNzcsNTQwODQsNTQwODUsNTQxNDAsNTQxNDEsNTQxNDQsNTQxNDgsNTQxNTYsNTQxNTcsNTQxNTksNTQxNjAsNTQxNjEsNTQxNjgs'@; put 'NTQxNjksNTQxNzIsNTQxNzYsNTQxODQsNTQxODUsNTQxODcsNTQxODksNTQxOTYsNTQyMDAsNTQyMDQsNTQyMTIsNTQyMTMsNTQyMTYsNTQyMTcsNTQyMjQsNTQyMzIsNTQyNDEsNTQyNDMsNTQyNTIsNTQyNTMsNTQyNTYsNTQyNjAsNTQyNjgsNTQyNjksNTQyNzEsNTQyNzMsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyODAsNTQzMDEsNTQzMzYsNTQzNDAs'@; put 'NTQzNjQsNTQzNjgsNTQzNzIsNTQzODEsNTQzODMsNTQzOTIsNTQzOTMsNTQzOTYsNTQzOTksNTQ0MDAsNTQ0MDIsNTQ0MDgsNTQ0MDksNTQ0MTEsNTQ0MTMsNTQ0MjAsNTQ0NDEsNTQ0NzYsNTQ0ODAsNTQ0ODQsNTQ0OTIsNTQ0OTUsNTQ1MDQsNTQ1MDgsNTQ1MTIsNTQ1MjAsNTQ1MjMsNTQ1'@; put 'MjUsNTQ1MzIsNTQ1MzYsNTQ1NDAsNTQ1NDgsNTQ1NDksNTQ1NTEsNTQ1ODgsNTQ1ODksNTQ1OTIsNTQ1OTYsNTQ2MDQsNTQ2MDUsNTQ2MDcsNTQ2MDksNTQ2MTYsNTQ2MTcsNTQ2MjAsNTQ2MjQsNTQ2MjksNTQ2MzIsNTQ2MzMsNTQ2MzUsNTQ2MzcsNTQ2NDQsNTQ2NDUsNTQ2NDgsNTQ2NTIs'@; put 'NTQ2NjAsNTQ2NjEsNTQ2NjMsNTQ2NjQsNTQ2NjUsNTQ2NzIsNTQ2OTMsNTQ3MjgsNTQ3MjksNTQ3MzIsNTQ3MzYsNTQ3MzgsNTQ3NDQsNTQ3NDUsNTQ3NDcsNTQ3NDksNTQ3NTYsNTQ3NTcsNTQ3NjAsNTQ3NjQsNTQ3NzIsNTQ3NzMsNTQ3NzUsNTQ3NzcsNTQ3ODQsNTQ3ODUsNTQ3ODgsNTQ3'@; put 'OTIsNTQ4MDAsNTQ4MDEsNTQ4MDMsNTQ4MDQsNTQ4MDUsNTQ4MTIsNTQ4MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MjAsNTQ4MjksNTQ4NDAsNTQ4NDEsNTQ4NDQsNTQ4NDgsNTQ4NTMsNTQ4NTYsNTQ4NTcsNTQ4NTksNTQ4NjEsNTQ4NjUsNTQ4NjgsNTQ4NjksNTQ4NzIsNTQ4NzYsNTQ4ODcsNTQ4ODksNTQ4OTYsNTQ4OTcsNTQ5MDAsNTQ5MTUsNTQ5'@; put 'MTcsNTQ5MjQsNTQ5MjUsNTQ5MjgsNTQ5MzIsNTQ5NDEsNTQ5NDMsNTQ5NDUsNTQ5NTIsNTQ5NTYsNTQ5NjAsNTQ5NjksNTQ5NzEsNTQ5ODAsNTQ5ODEsNTQ5ODQsNTQ5ODgsNTQ5OTMsNTQ5OTYsNTQ5OTksNTUwMDEsNTUwMDgsNTUwMTIsNTUwMTYsNTUwMjQsNTUwMjksNTUwMzYsNTUwMzcs'@; put 'NTUwNDAsNTUwNDQsNTUwNTcsNTUwNjQsNTUwNjUsNTUwNjgsNTUwNzIsNTUwODAsNTUwODEsNTUwODMsNTUwODUsNTUwOTIsNTUwOTMsNTUwOTYsNTUxMDAsNTUxMDgsNTUxMTEsNTUxMTMsNTUxMjAsNTUxMjEsNTUxMjQsNTUxMjYsNTUxMjcsNTUxMjgsNTUxMjksNTUxMzYsNTUxMzcsNTUx'@; put 'MzksNTUxNDEsNTUxNDUsNTUxNDgsNTUxNTIsNTUxNTYsNTUxNjQsNTUxNjUsNTUxNjksNTUxNzYsNTUxNzcsNTUxODAsNTUxODQsNTUxOTIsNTUxOTMsNTUxOTUsNTUxOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDI4NSwyMDMzOSwyMDU1MSwyMDcyOSwyMTE1MiwyMTQ4NywyMTYyMSwyMTczMywyMjAyNSwyMzIzMywyMzQ3OCwyNjI0NywyNjU1MCwyNjU1MSwyNjYwNywyNzQ2OCwyOTYzNCwzMDE0NiwzMTI5MiwzMzQ5OSwz'@; put 'MzU0MCwzNDkwMywzNDk1MiwzNTM4MiwzNjA0MCwzNjMwMywzNjYwMywzNjgzOCwzOTM4MSwyMTA1MSwyMTM2NCwyMTUwOCwyNDY4MiwyNDkzMiwyNzU4MCwyOTY0NywzMzA1MCwzNTI1OCwzNTI4MiwzODMwNywyMDM1NSwyMTAwMiwyMjcxOCwyMjkwNCwyMzAxNCwyNDE3OCwyNDE4NSwyNTAz'@; put 'MSwyNTUzNiwyNjQzOCwyNjYwNCwyNjc1MSwyODU2NywzMDI4NiwzMDQ3NSwzMDk2NSwzMTI0MCwzMTQ4NywzMTc3NywzMjkyNSwzMzM5MCwzMzM5MywzNTU2MywzODI5MSwyMDA3NSwyMTkxNywyNjM1OSwyODIxMiwzMDg4MywzMTQ2OSwzMzg4MywzNTA4OCwzNDYzOCwzODgyNCwyMTIwOCwy'@; put 'MjM1MCwyMjU3MCwyMzg4NCwyNDg2MywyNTAyMiwyNTEyMSwyNTk1NCwyNjU3NywyNzIwNCwyODE4NywyOTk3NiwzMDEzMSwzMDQzNSwzMDY0MCwzMjA1OCwzNzAzOSwzNzk2OSwzNzk3MCw0MDg1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTI4MywyMzcyNCwzMDAwMiwzMjk4NywzNzQ0MCwzODI5NiwyMTA4MywyMjUzNiwyMzAwNCwyMzcxMywyMzgzMSwy'@; put 'NDI0NywyNDM3OCwyNDM5NCwyNDk1MSwyNzc0MywzMDA3NCwzMDA4NiwzMTk2OCwzMjExNSwzMjE3NywzMjY1MiwzMzEwOCwzMzMxMywzNDE5MywzNTEzNywzNTYxMSwzNzYyOCwzODQ3Nyw0MDAwNywyMDE3MSwyMDIxNSwyMDQ5MSwyMDk3NywyMjYwNywyNDg4NywyNDg5NCwyNDkzNiwyNTkx'@; put 'MywyNzExNCwyODQzMywzMDExNywzMDM0MiwzMDQyMiwzMTYyMywzMzQ0NSwzMzk5NSw2Mzc0NCwzNzc5OSwzODI4MywyMTg4OCwyMzQ1OCwyMjM1Myw2Mzc0NSwzMTkyMywzMjY5NywzNzMwMSwyMDUyMCwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTQ1NCwyNTgxOCwyNTgzMSwyODE5Miwy'@; put 'ODg0NCwzMTA2NywzNjMxNywzNjM4Miw2Mzc0NiwzNjk4OSwzNzQ0NSwzNzYyNCwyMDA5NCwyMDIxNCwyMDU4MSwyNDA2MiwyNDMxNCwyNDgzOCwyNjk2NywzMzEzNywzNDM4OCwzNjQyMywzNzc0OSwzOTQ2NywyMDA2MiwyMDYyNSwyNjQ4MCwyNjY4OCwyMDc0NSwyMTEzMywyMTEzOCwyNzI5'@; put 'OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDY1MiwzNzM5Miw0'@; put 'MDY2MCwyMTE2MywyNDYyMywzNjg1MCwyMDU1MiwyNTAwMSwyNTU4MSwyNTgwMiwyNjY4NCwyNzI2OCwyODYwOCwzMzE2MCwzNTIzMywzODU0OCwyMjUzMywyOTMwOSwyOTM1NiwyOTk1NiwzMjEyMSwzMjM2NSwzMjkzNywzNTIxMSwzNTcwMCwzNjk2Myw0MDI3MywyNTIyNSwyNzc3MCwyODUw'@; put 'MCwzMjA4MCwzMjU3MCwzNTM2MywyMDg2MCwyNDkwNiwzMTY0NSwzNTYwOSwzNzQ2MywzNzc3MiwyMDE0MCwyMDQzNSwyMDUxMCwyMDY3MCwyMDc0MiwyMTE4NSwyMTE5NywyMTM3NSwyMjM4NCwyMjY1OSwyNDIxOCwyNDQ2NSwyNDk1MCwyNTAwNCwyNTgwNiwyNTk2NCwyNjIyMywyNjI5OSwy'@; put 'NjM1NiwyNjc3NSwyODAzOSwyODgwNSwyODkxMywyOTg1NSwyOTg2MSwyOTg5OCwzMDE2OSwzMDgyOCwzMDk1NiwzMTQ1NSwzMTQ3OCwzMjA2OSwzMjE0NywzMjc4OSwzMjgzMSwzMzA1MSwzMzY4NiwzNTY4NiwzNjYyOSwzNjg4NSwzNzg1NywzODkxNSwzODk2OCwzOTUxNCwzOTkxMiwyMDQx'@; put 'OCwyMTg0MywyMjU4NiwyMjg2NSwyMzM5NSwyMzYyMiwyNDc2MCwyNTEwNiwyNjY5MCwyNjgwMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg1NiwyODMzMCwzMDAyOCwzMDMyOCwzMDkyNiwzMTI5MywzMTk5NSwzMjM2MywzMjM4MCwzNTMzNiwzNTQ4OSwzNTkwMywzODU0Miw0MDM4OCwyMTQ3NiwyMTQ4MSwyMTU3OCwyMTYxNywyMjI2NiwyMjk5MywyMzM5'@; put 'NiwyMzYxMSwyNDIzNSwyNTMzNSwyNTkxMSwyNTkyNSwyNTk3MCwyNjI3MiwyNjU0MywyNzA3MywyNzgzNywzMDIwNCwzMDM1MiwzMDU5MCwzMTI5NSwzMjY2MCwzMjc3MSwzMjkyOSwzMzE2NywzMzUxMCwzMzUzMywzMzc3NiwzNDI0MSwzNDg2NSwzNDk5NiwzNTQ5Myw2Mzc0NywzNjc2NCwz'@; put 'NzY3OCwzODU5OSwzOTAxNSwzOTY0MCw0MDcyMywyMTc0MSwyNjAxMSwyNjM1NCwyNjc2NywzMTI5NiwzNTg5NSw0MDI4OCwyMjI1NiwyMjM3MiwyMzgyNSwyNjExOCwyNjgwMSwyNjgyOSwyODQxNCwyOTczNiwzNDk3NCwzOTkwOCwyNzc1Miw2Mzc0OCwzOTU5MiwyMDM3OSwyMDg0NCwyMDg0'@; put 'OSwyMTE1MSwyMzM4MCwyNDAzNywyNDY1NiwyNDY4NSwyNTMyOSwyNTUxMSwyNTkxNSwyOTY1NywzMTM1NCwzNDQ2NywzNjAwMiwzODc5OSwyMDAxOCwyMzUyMSwyNTA5NiwyNjUyNCwyOTkxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTE4NSwzMzc0NywzNTQ2MywzNTUwNiwzNjMyOCwzNjk0MiwzNzcwNywzODk4MiwyNDI3NSwyNzExMiwzNDMwMywzNzEw'@; put 'MSw2Mzc0OSwyMDg5NiwyMzQ0OCwyMzUzMiwyNDkzMSwyNjg3NCwyNzQ1NCwyODc0OCwyOTc0MywyOTkxMiwzMTY0OSwzMjU5MiwzMzczMywzNTI2NCwzNjAxMSwzODM2NCwzOTIwOCwyMTAzOCwyNDY2OSwyNTMyNCwzNjg2NiwyMDM2MiwyMDgwOSwyMTI4MSwyMjc0NSwyNDI5MSwyNjMzNiwy'@; put 'Nzk2MCwyODgyNiwyOTM3OCwyOTY1NCwzMTU2OCwzMzAwOSwzNzk3OSwyMTM1MCwyNTQ5OSwzMjYxOSwyMDA1NCwyMDYwOCwyMjYwMiwyMjc1MCwyNDYxOCwyNDg3MSwyNTI5NiwyNzA4OCwzOTc0NSwyMzQzOSwzMjAyNCwzMjk0NSwzNjcwMywyMDEzMiwyMDY4OSwyMTY3NiwyMTkzMiwyMzMw'@; put 'OCwyMzk2OCwyNDAzOSwyNTg5OCwyNTkzNCwyNjY1NywyNzIxMSwyOTQwOSwzMDM1MCwzMDcwMywzMjA5NCwzMjc2MSwzMzE4NCwzNDEyNiwzNDUyNywzNjYxMSwzNjY4NiwzNzA2NiwzOTE3MSwzOTUwOSwzOTg1MSwxOTk5MiwyMDAzNywyMDA2MSwyMDE2NywyMDQ2NSwyMDg1NSwyMTI0Nixu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTMxMiwyMTQ3NSwyMTQ3'@; put 'NywyMTY0NiwyMjAzNiwyMjM4OSwyMjQzNCwyMzQ5NSwyMzk0MywyNDI3MiwyNTA4NCwyNTMwNCwyNTkzNywyNjU1MiwyNjYwMSwyNzA4MywyNzQ3MiwyNzU5MCwyNzYyOCwyNzcxNCwyODMxNywyODc5MiwyOTM5OSwyOTU5MCwyOTY5OSwzMDY1NSwzMDY5NywzMTM1MCwzMjEyNywzMjc3Nywz'@; put 'MzI3NiwzMzI4NSwzMzI5MCwzMzUwMywzNDkxNCwzNTYzNSwzNjA5MiwzNjU0NCwzNjg4MSwzNzA0MSwzNzQ3NiwzNzU1OCwzOTM3OCwzOTQ5Myw0MDE2OSw0MDQwNyw0MDg2MCwyMjI4MywyMzYxNiwzMzczOCwzODgxNiwzODgyNyw0MDYyOCwyMTUzMSwzMTM4NCwzMjY3NiwzNTAzMywzNjU1'@; put 'NywzNzA4OSwyMjUyOCwyMzYyNCwyNTQ5NiwzMTM5MSwyMzQ3MCwyNDMzOSwzMTM1MywzMTQwNiwzMzQyMiwzNjUyNCwyMDUxOCwyMTA0OCwyMTI0MCwyMTM2NywyMjI4MCwyNTMzMSwyNTQ1OCwyNzQwMiwyODA5OSwzMDUxOSwyMTQxMywyOTUyNywzNDE1MiwzNjQ3MCwzODM1NywyNjQyNiwy'@; put 'NzMzMSwyODUyOCwzNTQzNywzNjU1NiwzOTI0Myw2Mzc1MCwyNjIzMSwyNzUxMiwzNjAyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzOTc0MCw2Mzc1MSwyMTQ4MywyMjMxNywyMjg2MiwyNTU0MiwyNzEzMSwyOTY3NCwzMDc4OSwzMTQxOCwzMTQyOSwzMTk5OCwzMzkwOSwzNTIxNSwzNjIxMSwzNjkxNywzODMxMiwyMTI0MywyMjM0MywzMDAyMywzMTU4NCwz'@; put 'Mzc0MCwzNzQwNiw2Mzc1MiwyNzIyNCwyMDgxMSwyMTA2NywyMTEyNywyNTExOSwyNjg0MCwyNjk5NywzODU1MywyMDY3NywyMTE1NiwyMTIyMCwyNTAyNywyNjAyMCwyNjY4MSwyNzEzNSwyOTgyMiwzMTU2MywzMzQ2NSwzMzc3MSwzNTI1MCwzNTY0MSwzNjgxNywzOTI0MSw2Mzc1MywyMDE3'@; put 'MCwyMjkzNSwyNTgxMCwyNjEyOSwyNzI3OCwyOTc0OCwzMTEwNSwzMTE2NSwzMzQ0OSwzNDk0MiwzNDk0MywzNTE2Nyw2Mzc1NCwzNzY3MCwyMDIzNSwyMTQ1MCwyNDYxMywyNTIwMSwyNzc2MiwzMjAyNiwzMjEwMiwyMDEyMCwyMDgzNCwzMDY4NCwzMjk0MywyMDIyNSwyMDIzOCwyMDg1NCwy'@; put 'MDg2NCwyMTk4MCwyMjEyMCwyMjMzMSwyMjUyMiwyMjUyNCwyMjgwNCwyMjg1NSwyMjkzMSwyMzQ5MiwyMzY5NiwyMzgyMiwyNDA0OSwyNDE5MCwyNDUyNCwyNTIxNiwyNjA3MSwyNjA4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjM5OCwyNjM5OSwyNjQ2MiwyNjgyNywyNjgyMCwyNzIzMSwyNzQ1MCwyNzY4MywyNzc3MywyNzc3OCwyODEwMywyOTU5Miwy'@; put 'OTczNCwyOTczOCwyOTgyNiwyOTg1OSwzMDA3MiwzMDA3OSwzMDg0OSwzMDk1OSwzMTA0MSwzMTA0NywzMTA0OCwzMTA5OCwzMTYzNywzMmUzLDMyMTg2LDMyNjQ4LDMyNzc0LDMyODEzLDMyOTA4LDM1MzUyLDM1NjYzLDM1OTEyLDM2MjE1LDM3NjY1LDM3NjY4LDM5MTM4LDM5MjQ5LDM5NDM4'@; put 'LDM5NDM5LDM5NTI1LDQwNTk0LDMyMjAyLDIwMzQyLDIxNTEzLDI1MzI2LDI2NzA4LDM3MzI5LDIxOTMxLDIwNzk0LDYzNzU1LDYzNzU2LDIzMDY4LDI1MDYyLDYzNzU3LDI1Mjk1LDI1MzQzLDYzNzU4LDYzNzU5LDYzNzYwLDYzNzYxLDYzNzYyLDYzNzYzLDM3MDI3LDYzNzY0LDYzNzY1LDYz'@; put 'NzY2LDYzNzY3LDYzNzY4LDM1NTgyLDYzNzY5LDYzNzcwLDYzNzcxLDYzNzcyLDI2MjYyLDYzNzczLDI5MDE0LDYzNzc0LDYzNzc1LDM4NjI3LDYzNzc2LDI1NDIzLDI1NDY2LDIxMzM1LDYzNzc3LDI2NTExLDI2OTc2LDI4Mjc1LDYzNzc4LDMwMDA3LDYzNzc5LDYzNzgwLDYzNzgxLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMDEzLDYzNzgyLDYzNzgzLDM0'@; put 'OTMwLDIyMjE4LDIzMDY0LDYzNzg0LDYzNzg1LDYzNzg2LDYzNzg3LDYzNzg4LDIwMDM1LDYzNzg5LDIwODM5LDIyODU2LDI2NjA4LDMyNzg0LDYzNzkwLDIyODk5LDI0MTgwLDI1NzU0LDMxMTc4LDI0NTY1LDI0Njg0LDI1Mjg4LDI1NDY3LDIzNTI3LDIzNTExLDIxMTYyLDYzNzkxLDIyOTAw'@; put 'LDI0MzYxLDI0NTk0LDYzNzkyLDYzNzkzLDYzNzk0LDI5Nzg1LDYzNzk1LDYzNzk2LDYzNzk3LDYzNzk4LDYzNzk5LDYzODAwLDM5Mzc3LDYzODAxLDYzODAyLDYzODAzLDYzODA0LDYzODA1LDYzODA2LDYzODA3LDYzODA4LDYzODA5LDYzODEwLDYzODExLDI4NjExLDYzODEyLDYzODEzLDMz'@; put 'MjE1LDM2Nzg2LDI0ODE3LDYzODE0LDYzODE1LDMzMTI2LDYzODE2LDYzODE3LDIzNjE1LDYzODE4LDYzODE5LDYzODIwLDYzODIxLDYzODIyLDYzODIzLDYzODI0LDYzODI1LDIzMjczLDM1MzY1LDI2NDkxLDMyMDE2LDYzODI2LDYzODI3LDYzODI4LDYzODI5LDYzODMwLDYzODMxLDMzMDIx'@; put 'LDYzODMyLDYzODMzLDIzNjEyLDI3ODc3LDIxMzExLDI4MzQ2LDIyODEwLDMzNTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMDI1LDIwMTUwLDIwMjk0LDIxOTM0LDIyMjk2LDIyNzI3LDI0NDA2LDI2MDM5LDI2MDg2LDI3MjY0LDI3NTczLDI4MjM3LDMwNzAxLDMxNDcxLDMxNzc0LDMyMjIyLDM0NTA3LDM0OTYyLDM3MTcwLDM3NzIzLDI1Nzg3LDI4NjA2'@; put 'LDI5NTYyLDMwMTM2LDM2OTQ4LDIxODQ2LDIyMzQ5LDI1MDE4LDI1ODEyLDI2MzExLDI4MTI5LDI4MjUxLDI4NTI1LDI4NjAxLDMwMTkyLDMyODM1LDMzMjEzLDM0MTEzLDM1MjAzLDM1NTI3LDM1Njc0LDM3NjYzLDI3Nzk1LDMwMDM1LDMxNTcyLDM2MzY3LDM2OTU3LDIxNzc2LDIyNTMwLDIy'@; put 'NjE2LDI0MTYyLDI1MDk1LDI1NzU4LDI2ODQ4LDMwMDcwLDMxOTU4LDM0NzM5LDQwNjgwLDIwMTk1LDIyNDA4LDIyMzgyLDIyODIzLDIzNTY1LDIzNzI5LDI0MTE4LDI0NDUzLDI1MTQwLDI1ODI1LDI5NjE5LDMzMjc0LDM0OTU1LDM2MDI0LDM4NTM4LDQwNjY3LDIzNDI5LDI0NTAzLDI0NzU1'@; put 'LDIwNDk4LDIwOTkyLDIxMDQwLDIyMjk0LDIyNTgxLDIyNjE1LDIzNTY2LDIzNjQ4LDIzNzk4LDIzOTQ3LDI0MjMwLDI0NDY2LDI0NzY0LDI1MzYxLDI1NDgxLDI1NjIzLDI2NjkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODczLDI3MzMwLDI4MTIwLDI4MTkzLDI4MzcyLDI4NjQ0LDI5MTgyLDMwNDI4LDMwNTg1LDMxMTUzLDMxMjkxLDMzNzk2LDM1MjQx'@; put 'LDM2MDc3LDM2MzM5LDM2NDI0LDM2ODY3LDM2ODg0LDM2OTQ3LDM3MTE3LDM3NzA5LDM4NTE4LDM4ODc2LDI3NjAyLDI4Njc4LDI5MjcyLDI5MzQ2LDI5NTQ0LDMwNTYzLDMxMTY3LDMxNzE2LDMyNDExLDM1NzEyLDIyNjk3LDI0Nzc1LDI1OTU4LDI2MTA5LDI2MzAyLDI3Nzg4LDI4OTU4LDI5'@; put 'MTI5LDM1OTMwLDM4OTMxLDIwMDc3LDMxMzYxLDIwMTg5LDIwOTA4LDIwOTQxLDIxMjA1LDIxNTE2LDI0OTk5LDI2NDgxLDI2NzA0LDI2ODQ3LDI3OTM0LDI4NTQwLDMwMTQwLDMwNjQzLDMxNDYxLDMzMDEyLDMzODkxLDM3NTA5LDIwODI4LDI2MDA3LDI2NDYwLDI2NTE1LDMwMTY4LDMxNDMx'@; put 'LDMzNjUxLDYzODM0LDM1OTEwLDM2ODg3LDM4OTU3LDIzNjYzLDMzMjE2LDMzNDM0LDM2OTI5LDM2OTc1LDM3Mzg5LDI0NDcxLDIzOTY1LDI3MjI1LDI5MTI4LDMwMzMxLDMxNTYxLDM0Mjc2LDM1NTg4LDM3MTU5LDM5NDcyLDIxODk1LDI1MDc4LDYzODM1LDMwMzEzLDMyNjQ1LG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MzY3LDM0NzQ2LDM1MDY0LDM3MDA3'@; put 'LDYzODM2LDI3OTMxLDI4ODg5LDI5NjYyLDMyMDk3LDMzODUzLDYzODM3LDM3MjI2LDM5NDA5LDYzODM4LDIwMDk4LDIxMzY1LDI3Mzk2LDI3NDEwLDI4NzM0LDI5MjExLDM0MzQ5LDQwNDc4LDIxMDY4LDM2NzcxLDIzODg4LDI1ODI5LDI1OTAwLDI3NDE0LDI4NjUxLDMxODExLDMyNDEyLDM0'@; put 'MjUzLDM1MTcyLDM1MjYxLDI1Mjg5LDMzMjQwLDM0ODQ3LDI0MjY2LDI2MzkxLDI4MDEwLDI5NDM2LDI5NzAxLDI5ODA3LDM0NjkwLDM3MDg2LDIwMzU4LDIzODIxLDI0NDgwLDMzODAyLDIwOTE5LDI1NTA0LDMwMDUzLDIwMTQyLDIwNDg2LDIwODQxLDIwOTM3LDI2NzUzLDI3MTUzLDMxOTE4'@; put 'LDMxOTIxLDMxOTc1LDMzMzkxLDM1NTM4LDM2NjM1LDM3MzI3LDIwNDA2LDIwNzkxLDIxMjM3LDIxNTcwLDI0MzAwLDI0OTQyLDI1MTUwLDI2MDUzLDI3MzU0LDI4NjcwLDMxMDE4LDM0MjY4LDM0ODUxLDM4MzE3LDM5NTIyLDM5NTMwLDQwNTk5LDQwNjU0LDIxMTQ3LDI2MzEwLDI3NTExLDI4'@; put 'NzAxLDMxMDE5LDM2NzA2LDM4NzIyLDI0OTc2LDI1MDg4LDI1ODkxLDI4NDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDAxLDI5ODMzLDMyMjQ0LDMyODc5LDM0MDMwLDM2NjQ2LDM2ODk5LDM3NzA2LDIwOTI1LDIxMDE1LDIxMTU1LDI3OTE2LDI4ODcyLDM1MDEwLDI0MjY1LDI1OTg2LDI3NTY2LDI4NjEwLDMxODA2LDI5NTU3LDIwMTk2LDIwMjc4LDIy'@; put 'MjY1LDYzODM5LDIzNzM4LDIzOTk0LDI0NjA0LDI5NjE4LDMxNTMzLDMyNjY2LDMyNzE4LDMyODM4LDM2ODk0LDM3NDI4LDM4NjQ2LDM4NzI4LDM4OTM2LDQwODAxLDIwMzYzLDI4NTgzLDMxMTUwLDM3MzAwLDM4NTgzLDIxMjE0LDYzODQwLDI1NzM2LDI1Nzk2LDI3MzQ3LDI4NTEwLDI4Njk2'@; put 'LDI5MjAwLDMwNDM5LDMyNzY5LDM0MzEwLDM0Mzk2LDM2MzM1LDM2NjEzLDM4NzA2LDM5NzkxLDQwNDQyLDQwNTY1LDMwODYwLDMxMTAzLDMyMTYwLDMzNzM3LDM3NjM2LDQwNTc1LDQwNTk1LDM1NTQyLDIyNzUxLDI0MzI0LDI2NDA3LDI4NzExLDI5OTAzLDMxODQwLDMyODk0LDIwNzY5LDI4'@; put 'NzEyLDI5MjgyLDMwOTIyLDM2MDM0LDM2MDU4LDM2MDg0LDM4NjQ3LDIwMTAyLDIwNjk4LDIzNTM0LDI0Mjc4LDI2MDA5LDI5MTM0LDMwMjc0LDMwNjM3LDMyODQyLDM0MDQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTg4LDM5NzE5LDQwODQ1LDIyNzQ0LDIzMTA1LDIzNjUwLDI3MTU1LDI4MTIyLDI4NDMxLDMwMjY3LDMyMDQ3LDMyMzExLDM0MDc4LDM1'@; put 'MTI4LDM3ODYwLDM4NDc1LDIxMTI5LDI2MDY2LDI2NjExLDI3MDYwLDI3OTY5LDI4MzE2LDI4Njg3LDI5NzA1LDI5NzkyLDMwMDQxLDMwMjQ0LDMwODI3LDM1NjI4LDM5MDA2LDIwODQ1LDI1MTM0LDM4NTIwLDIwMzc0LDIwNTIzLDIzODMzLDI4MTM4LDMyMTg0LDM2NjUwLDI0NDU5LDI0OTAw'@; put 'LDI2NjQ3LDYzODQxLDM4NTM0LDIxMjAyLDMyOTA3LDIwOTU2LDIwOTQwLDI2OTc0LDMxMjYwLDMyMTkwLDMzNzc3LDM4NTE3LDIwNDQyLDIxMDMzLDIxNDAwLDIxNTE5LDIxNzc0LDIzNjUzLDI0NzQzLDI2NDQ2LDI2NzkyLDI4MDEyLDI5MzEzLDI5NDMyLDI5NzAyLDI5ODI3LDYzODQyLDMw'@; put 'MTc4LDMxODUyLDMyNjMzLDMyNjk2LDMzNjczLDM1MDIzLDM1MDQxLDM3MzI0LDM3MzI4LDM4NjI2LDM5ODgxLDIxNTMzLDI4NTQyLDI5MTM2LDI5ODQ4LDM0Mjk4LDM2NTIyLDM4NTYzLDQwMDIzLDQwNjA3LDI2NTE5LDI4MTA3LDI5NzQ3LDMzMjU2LDM4Njc4LDMwNzY0LG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxNDM1LDMxNTIwLDMxODkwLDI1NzA1LDI5'@; put 'ODAyLDMwMTk0LDMwOTA4LDMwOTUyLDM5MzQwLDM5NzY0LDQwNjM1LDIzNTE4LDI0MTQ5LDI4NDQ4LDMzMTgwLDMzNzA3LDM3ZTMsMTk5NzUsMjEzMjUsMjMwODEsMjQwMTgsMjQzOTgsMjQ5MzAsMjU0MDUsMjYyMTcsMjYzNjQsMjg0MTUsMjg0NTksMjg3NzEsMzA2MjIsMzM4MzYsMzQwNjcs'@; put 'MzQ4NzUsMzY2MjcsMzkyMzcsMzk5OTUsMjE3ODgsMjUyNzMsMjY0MTEsMjc4MTksMzM1NDUsMzUxNzgsMzg3NzgsMjAxMjksMjI5MTYsMjQ1MzYsMjQ1MzcsMjYzOTUsMzIxNzgsMzI1OTYsMzM0MjYsMzM1NzksMzM3MjUsMzY2MzgsMzcwMTcsMjI0NzUsMjI5NjksMjMxODYsMjM1MDQsMjYx'@; put 'NTEsMjY1MjIsMjY3NTcsMjc1OTksMjkwMjgsMzI2MjksMzYwMjMsMzYwNjcsMzY5OTMsMzk3NDksMzMwMzIsMzU5NzgsMzg0NzYsMzk0ODgsNDA2MTMsMjMzOTEsMjc2NjcsMjk0NjcsMzA0NTAsMzA0MzEsMzM4MDQsMjA5MDYsMzUyMTksMjA4MTMsMjA4ODUsMjExOTMsMjY4MjUsMjc3OTYs'@; put 'MzA0NjgsMzA0OTYsMzIxOTEsMzIyMzYsMzg3NTQsNDA2MjksMjgzNTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQwNjUsMjA5MDEsMjE1MTcsMjE2MjksMjYxMjYsMjYyNjksMjY5MTksMjgzMTksMzAzOTksMzA2MDksMzM1NTksMzM5ODYsMzQ3MTksMzcyMjUsMzc1MjgsNDAxODAsMzQ5NDYsMjAzOTgsMjA4ODIsMjEyMTUsMjI5ODIsMjQxMjUsMjQ5MTcs'@; put 'MjU3MjAsMjU3MjEsMjYyODYsMjY1NzYsMjcxNjksMjc1OTcsMjc2MTEsMjkyNzksMjkyODEsMjk3NjEsMzA1MjAsMzA2ODMsMzI3OTEsMzM0NjgsMzM1NDEsMzU1ODQsMzU2MjQsMzU5ODAsMjY0MDgsMjc3OTIsMjkyODcsMzA0NDYsMzA1NjYsMzEzMDIsNDAzNjEsMjc1MTksMjc3OTQsMjI4'@; put 'MTgsMjY0MDYsMzM5NDUsMjEzNTksMjI2NzUsMjI5MzcsMjQyODcsMjU1NTEsMjYxNjQsMjY0ODMsMjgyMTgsMjk0ODMsMzE0NDcsMzM0OTUsMzc2NzIsMjEyMDksMjQwNDMsMjUwMDYsMjUwMzUsMjUwOTgsMjUyODcsMjU3NzEsMjYwODAsMjY5NjksMjc0OTQsMjc1OTUsMjg5NjEsMjk2ODcs'@; put 'MzAwNDUsMzIzMjYsMzMzMTAsMzM1MzgsMzQxNTQsMzU0OTEsMzYwMzEsMzg2OTUsNDAyODksMjI2OTYsNDA2NjQsMjA0OTcsMjEwMDYsMjE1NjMsMjE4MzksMjU5OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjc3NjYsMzIwMTAsMzIwMTEsMzI4NjIsMzQ0NDIsMzgyNzIsMzg2MzksMjEyNDcsMjc3OTcsMjkyODksMjE2MTksMjMxOTQsMjM2MTQsMjM4ODMs'@; put 'MjQzOTYsMjQ0OTQsMjY0MTAsMjY4MDYsMjY5NzksMjgyMjAsMjgyMjgsMzA0NzMsMzE4NTksMzI2NTQsMzQxODMsMzU1OTgsMzY4NTUsMzg3NTMsNDA2OTIsMjM3MzUsMjQ3NTgsMjQ4NDUsMjUwMDMsMjU5MzUsMjYxMDcsMjYxMDgsMjc2NjUsMjc4ODcsMjk1OTksMjk2NDEsMzIyMjUsMzgy'@; put 'OTIsMjM0OTQsMzQ1ODgsMzU2MDAsMjEwODUsMjEzMzgsMjUyOTMsMjU2MTUsMjU3NzgsMjY0MjAsMjcxOTIsMjc4NTAsMjk2MzIsMjk4NTQsMzE2MzYsMzE4OTMsMzIyODMsMzMxNjIsMzMzMzQsMzQxODAsMzY4NDMsMzg2NDksMzkzNjEsMjAyNzYsMjEzMjIsMjE0NTMsMjE0NjcsMjUyOTIs'@; put 'MjU2NDQsMjU4NTYsMjYwMDEsMjcwNzUsMjc4ODYsMjg1MDQsMjk2NzcsMzAwMzYsMzAyNDIsMzA0MzYsMzA0NjAsMzA5MjgsMzA5NzEsMzEwMjAsMzIwNzAsMzMzMjQsMzQ3ODQsMzY4MjAsMzg5MzAsMzkxNTEsMjExODcsMjUzMDAsMjU3NjUsMjgxOTYsMjg0OTcsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzAzMzIsMzYyOTksMzcyOTcsMzc0NzQsMzk2NjIs'@; put 'Mzk3NDcsMjA1MTUsMjA2MjEsMjIzNDYsMjI5NTIsMjM1OTIsMjQxMzUsMjQ0MzksMjUxNTEsMjU5MTgsMjYwNDEsMjYwNDksMjYxMjEsMjY1MDcsMjcwMzYsMjgzNTQsMzA5MTcsMzIwMzMsMzI5MzgsMzMxNTIsMzMzMjMsMzM0NTksMzM5NTMsMzQ0NDQsMzUzNzAsMzU2MDcsMzcwMzAsMzg0'@; put 'NTAsNDA4NDgsMjA0OTMsMjA0NjcsNjM4NDMsMjI1MjEsMjQ0NzIsMjUzMDgsMjU0OTAsMjY0NzksMjgyMjcsMjg5NTMsMzA0MDMsMzI5NzIsMzI5ODYsMzUwNjAsMzUwNjEsMzUwOTcsMzYwNjQsMzY2NDksMzcxOTcsMzg1MDYsMjAyNzEsMjAzMzYsMjQwOTEsMjY1NzUsMjY2NTgsMzAzMzMs'@; put 'MzAzMzQsMzk3NDgsMjQxNjEsMjcxNDYsMjkwMzMsMjkxNDAsMzAwNTgsNjM4NDQsMzIzMjEsMzQxMTUsMzQyODEsMzkxMzIsMjAyNDAsMzE1NjcsMzI2MjQsMzgzMDksMjA5NjEsMjQwNzAsMjY4MDUsMjc3MTAsMjc3MjYsMjc4NjcsMjkzNTksMzE2ODQsMzM1MzksMjc4NjEsMjk3NTQsMjA3'@; put 'MzEsMjExMjgsMjI3MjEsMjU4MTYsMjcyODcsMjk4NjMsMzAyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA4ODcsMzQzMjcsMzgzNzAsMzg3MTMsNjM4NDUsMjEzNDIsMjQzMjEsMzU3MjIsMzY3NzYsMzY3ODMsMzcwMDIsMjEwMjksMzA2MjksNDAwMDksNDA3MTIsMTk5OTMsMjA0ODIsMjA4NTMsMjM2NDMsMjQxODMsMjYxNDIsMjYxNzAsMjY1NjQsMjY4'@; put 'MjEsMjg4NTEsMjk5NTMsMzAxNDksMzExNzcsMzE0NTMsMzY2NDcsMzkyMDAsMzk0MzIsMjA0NDUsMjI1NjEsMjI1NzcsMjM1NDIsMjYyMjIsMjc0OTMsMjc5MjEsMjgyODIsMjg1NDEsMjk2NjgsMjk5OTUsMzM3NjksMzUwMzYsMzUwOTEsMzU2NzYsMzY2MjgsMjAyMzksMjA2OTMsMjEyNjQs'@; put 'MjEzNDAsMjM0NDMsMjQ0ODksMjYzODEsMzExMTksMzMxNDUsMzM1ODMsMzQwNjgsMzUwNzksMzUyMDYsMzY2NjUsMzY2NjcsMzkzMzMsMzk5NTQsMjY0MTIsMjAwODYsMjA0NzIsMjI4NTcsMjM1NTMsMjM3OTEsMjM3OTIsMjU0NDcsMjY4MzQsMjg5MjUsMjkwOTAsMjk3MzksMzIyOTksMzQw'@; put 'MjgsMzQ1NjIsMzY4OTgsMzc1ODYsNDAxNzksMTk5ODEsMjAxODQsMjA0NjMsMjA2MTMsMjEwNzgsMjExMDMsMjE1NDIsMjE2NDgsMjI0OTYsMjI4MjcsMjMxNDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMzODYsMjM0MTMsMjM1MDAsMjQyMjAsNjM4NDYsMjUyMDYsMjU5NzUsMjYwMjMsMjgwMTQsMjgzMjUsMjkyMzgsMzE1MjYsMzE4MDcsMzI1NjYsMzMx'@; put 'MDQsMzMxMDUsMzMxNzgsMzMzNDQsMzM0MzMsMzM3MDUsMzUzMzEsMzZlMywzNjA3MCwzNjA5MSwzNjIxMiwzNjI4MiwzNzA5NiwzNzM0MCwzODQyOCwzODQ2OCwzOTM4NSw0MDE2NywyMTI3MSwyMDk5OCwyMTU0NSwyMjEzMiwyMjcwNywyMjg2OCwyMjg5NCwyNDU3NSwyNDk5NiwyNTE5OCwy'@; put 'NjEyOCwyNzc3NCwyODk1NCwzMDQwNiwzMTg4MSwzMTk2NiwzMjAyNywzMzQ1MiwzNjAzMywzODY0MCw2Mzg0NywyMDMxNSwyNDM0MywyNDQ0NywyNTI4MiwyMzg0OSwyNjM3OSwyNjg0MiwzMDg0NCwzMjMyMyw0MDMwMCwxOTk4OSwyMDYzMywyMTI2OSwyMTI5MCwyMTMyOSwyMjkxNSwyMzEz'@; put 'OCwyNDE5OSwyNDc1NCwyNDk3MCwyNTE2MSwyNTIwOSwyNmUzLDI2NTAzLDI3MDQ3LDI3NjA0LDI3NjA2LDI3NjA3LDI3NjA4LDI3ODMyLDYzODQ4LDI5NzQ5LDMwMjAyLDMwNzM4LDMwODY1LDMxMTg5LDMxMTkyLDMxODc1LDMyMjAzLDMyNzM3LDMyOTMzLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMzMDg2LDMzMjE4LDMzNzc4LDM0NTg2LDM1MDQ4LDM1NTEz'@; put 'LDM1NjkyLDM2MDI3LDM3MTQ1LDM4NzUwLDM5MTMxLDQwNzYzLDIyMTg4LDIzMzM4LDI0NDI4LDI1OTk2LDI3MzE1LDI3NTY3LDI3OTk2LDI4NjU3LDI4NjkzLDI5Mjc3LDI5NjEzLDM2MDA3LDM2MDUxLDM4OTcxLDI0OTc3LDI3NzAzLDMyODU2LDM5NDI1LDIwMDQ1LDIwMTA3LDIwMTIzLDIw'@; put 'MTgxLDIwMjgyLDIwMjg0LDIwMzUxLDIwNDQ3LDIwNzM1LDIxNDkwLDIxNDk2LDIxNzY2LDIxOTg3LDIyMjM1LDIyNzYzLDIyODgyLDIzMDU3LDIzNTMxLDIzNTQ2LDIzNTU2LDI0MDUxLDI0MTA3LDI0NDczLDI0NjA1LDI1NDQ4LDI2MDEyLDI2MDMxLDI2NjE0LDI2NjE5LDI2Nzk3LDI3NTE1'@; put 'LDI3ODAxLDI3ODYzLDI4MTk1LDI4NjgxLDI5NTA5LDMwNzIyLDMxMDM4LDMxMDQwLDMxMDcyLDMxMTY5LDMxNzIxLDMyMDIzLDMyMTE0LDMyOTAyLDMzMjkzLDMzNjc4LDM0MDAxLDM0NTAzLDM1MDM5LDM1NDA4LDM1NDIyLDM1NjEzLDM2MDYwLDM2MTk4LDM2NzgxLDM3MDM0LDM5MTY0LDM5'@; put 'MzkxLDQwNjA1LDIxMDY2LDYzODQ5LDI2Mzg4LDYzODUwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLDIwNjMyLDIxMDM0LDIzNjY1LDI1OTU1LDI3NzMzLDI5NjQyLDI5OTg3LDMwMTA5LDMxNjM5LDMzOTQ4LDM3MjQwLDM4NzA0LDIwMDg3LDI1NzQ2LDI3NTc4LDI5MDIyLDM0MjE3LDE5OTc3LDYzODUxLDI2NDQxLDI2ODYyLDI4MTgzLDMzNDM5LDM0MDcyLDM0'@; put 'OTIzLDI1NTkxLDI4NTQ1LDM3Mzk0LDM5MDg3LDE5OTc4LDIwNjYzLDIwNjg3LDIwNzY3LDIxODMwLDIxOTMwLDIyMDM5LDIzMzYwLDIzNTc3LDIzNzc2LDI0MTIwLDI0MjAyLDI0MjI0LDI0MjU4LDI0ODE5LDI2NzA1LDI3MjMzLDI4MjQ4LDI5MjQ1LDI5MjQ4LDI5Mzc2LDMwNDU2LDMxMDc3'@; put 'LDMxNjY1LDMyNzI0LDM1MDU5LDM1MzE2LDM1NDQzLDM1OTM3LDM2MDYyLDM4Njg0LDIyNjIyLDI5ODg1LDM2MDkzLDIxOTU5LDYzODUyLDMxMzI5LDMyMDM0LDMzMzk0LDI5Mjk4LDI5OTgzLDI5OTg5LDYzODUzLDMxNTEzLDIyNjYxLDIyNzc5LDIzOTk2LDI0MjA3LDI0MjQ2LDI0NDY0LDI0'@; put 'NjYxLDI1MjM0LDI1NDcxLDI1OTMzLDI2MjU3LDI2MzI5LDI2MzYwLDI2NjQ2LDI2ODY2LDI5MzEyLDI5NzkwLDMxNTk4LDMyMTEwLDMyMjE0LDMyNjI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyOTk3LDMzMjk4LDM0MjIzLDM1MTk5LDM1NDc1LDM2ODkzLDM3NjA0LDQwNjUzLDQwNzM2LDIyODA1LDIyODkzLDI0MTA5LDI0Nzk2LDI2MTMyLDI2MjI3LDI2'@; put 'NTEyLDI3NzI4LDI4MTAxLDI4NTExLDMwNzA3LDMwODg5LDMzOTkwLDM3MzIzLDM3Njc1LDIwMTg1LDIwNjgyLDIwODA4LDIxODkyLDIzMzA3LDIzNDU5LDI1MTU5LDI1OTgyLDI2MDU5LDI4MjEwLDI5MDUzLDI5Njk3LDI5NzY0LDI5ODMxLDI5ODg3LDMwMzE2LDMxMTQ2LDMyMjE4LDMyMzQx'@; put 'LDMyNjgwLDMzMTQ2LDMzMjAzLDMzMzM3LDM0MzMwLDM0Nzk2LDM1NDQ1LDM2MzIzLDM2OTg0LDM3NTIxLDM3OTI1LDM5MjQ1LDM5ODU0LDIxMzUyLDIzNjMzLDI2OTY0LDI3ODQ0LDI3OTQ1LDI4MjAzLDMzMjkyLDM0MjAzLDM1MTMxLDM1MzczLDM1NDk4LDM4NjM0LDQwODA3LDIxMDg5LDI2'@; put 'Mjk3LDI3NTcwLDMyNDA2LDM0ODE0LDM2MTA5LDM4Mjc1LDM4NDkzLDI1ODg1LDI4MDQxLDI5MTY2LDYzODU0LDIyNDc4LDIyOTk1LDIzNDY4LDI0NjE1LDI0ODI2LDI1MTA0LDI2MTQzLDI2MjA3LDI5NDgxLDI5Njg5LDMwNDI3LDMwNDY1LDMxNTk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyODU0LDMyODgyLDMzMTI1LDM1NDg4LDM3MjY2LDE5OTkwLDIx'@; put 'MjE4LDI3NTA2LDI3OTI3LDMxMjM3LDMxNTQ1LDMyMDQ4LDYzODU1LDM2MDE2LDIxNDg0LDIyMDYzLDIyNjA5LDIzNDc3LDIzNTY3LDIzNTY5LDI0MDM0LDI1MTUyLDI1NDc1LDI1NjIwLDI2MTU3LDI2ODAzLDI3ODM2LDI4MDQwLDI4MzM1LDI4NzAzLDI4ODM2LDI5MTM4LDI5OTkwLDMwMDk1'@; put 'LDMwMDk0LDMwMjMzLDMxNTA1LDMxNzEyLDMxNzg3LDMyMDMyLDMyMDU3LDM0MDkyLDM0MTU3LDM0MzExLDM1MzgwLDM2ODc3LDM2OTYxLDM3MDQ1LDM3NTU5LDM4OTAyLDM5NDc5LDIwNDM5LDIzNjYwLDI2NDYzLDI4MDQ5LDMxOTAzLDMyMzk2LDM1NjA2LDM2MTE4LDM2ODk1LDIzNDAzLDI0'@; put 'MDYxLDI1NjEzLDMzOTg0LDM2OTU2LDM5MTM3LDI5NTc1LDIzNDM1LDI0NzMwLDI2NDk0LDI4MTI2LDM1MzU5LDM1NDk0LDM2ODY1LDM4OTI0LDIxMDQ3LDYzODU2LDI4NzUzLDMwODYyLDM3NzgyLDM0OTI4LDM3MzM1LDIwNDYyLDIxNDYzLDIyMDEzLDIyMjM0LDIyNDAyLDIyNzgxLDIzMjM0'@; put 'LDIzNDMyLDIzNzIzLDIzNzQ0LDI0MTAxLDI0ODMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLDI1MTAxLDI1MTYzLDI1NDgwLDI1NjI4LDI1OTEwLDI1OTc2LDI3MTkzLDI3NTMwLDI3NzAwLDI3OTI5LDI4NDY1LDI5MTU5LDI5NDE3LDI5NTYwLDI5NzAzLDI5ODc0LDMwMjQ2LDMwNTYxLDMxMTY4LDMxMzE5LDMxNDY2LDMxOTI5LDMyMTQzLDMyMTcyLDMyMzUz'@; put 'LDMyNjcwLDMzMDY1LDMzNTg1LDMzOTM2LDM0MDEwLDM0MjgyLDM0OTY2LDM1NTA0LDM1NzI4LDM2NjY0LDM2OTMwLDM2OTk1LDM3MjI4LDM3NTI2LDM3NTYxLDM4NTM5LDM4NTY3LDM4NTY4LDM4NjE0LDM4NjU2LDM4OTIwLDM5MzE4LDM5NjM1LDM5NzA2LDIxNDYwLDIyNjU0LDIyODA5LDIz'@; put 'NDA4LDIzNDg3LDI4MTEzLDI4NTA2LDI5MDg3LDI5NzI5LDI5ODgxLDMyOTAxLDMzNzg5LDI0MDMzLDI0NDU1LDI0NDkwLDI0NjQyLDI2MDkyLDI2NjQyLDI2OTkxLDI3MjE5LDI3NTI5LDI3OTU3LDI4MTQ3LDI5NjY3LDMwNDYyLDMwNjM2LDMxNTY1LDMyMDIwLDMzMDU5LDMzMzA4LDMzNjAw'@; put 'LDM0MDM2LDM0MTQ3LDM1NDI2LDM1NTI0LDM3MjU1LDM3NjYyLDM4OTE4LDM5MzQ4LDI1MTAwLDM0ODk5LDM2ODQ4LDM3NDc3LDIzODE1LDIzODQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzOTEzLDI5NzkxLDMzMTgxLDM0NjY0LDI4NjI5LDI1MzQyLDMyNzIyLDM1MTI2LDM1MTg2LDE5OTk4LDIwMDU2LDIwNzExLDIxMjEzLDIxMzE5LDI1MjE1LDI2MTE5'@; put 'LDMyMzYxLDM0ODIxLDM4NDk0LDIwMzY1LDIxMjczLDIyMDcwLDIyOTg3LDIzMjA0LDIzNjA4LDIzNjMwLDIzNjI5LDI0MDY2LDI0MzM3LDI0NjQzLDI2MDQ1LDI2MTU5LDI2MTc4LDI2NTU4LDI2NjEyLDI5NDY4LDMwNjkwLDMxMDM0LDMyNzA5LDMzOTQwLDMzOTk3LDM1MjIyLDM1NDMwLDM1'@; put 'NDMzLDM1NTUzLDM1OTI1LDM1OTYyLDIyNTE2LDIzNTA4LDI0MzM1LDI0Njg3LDI1MzI1LDI2ODkzLDI3NTQyLDI4MjUyLDI5MDYwLDMxNjk4LDM0NjQ1LDM1NjcyLDM2NjA2LDM5MTM1LDM5MTY2LDIwMjgwLDIwMzUzLDIwNDQ5LDIxNjI3LDIzMDcyLDIzNDgwLDI0ODkyLDI2MDMyLDI2MjE2'@; put 'LDI5MTgwLDMwMDAzLDMxMDcwLDMyMDUxLDMzMTAyLDMzMjUxLDMzNjg4LDM0MjE4LDM0MjU0LDM0NTYzLDM1MzM4LDM2NTIzLDM2NzYzLDYzODU3LDM2ODA1LDIyODMzLDIzNDYwLDIzNTI2LDI0NzEzLDIzNTI5LDIzNTYzLDI0NTE1LDI3Nzc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODU4LDI4MTQ1LDI4NjgzLDI5OTc4LDMzNDU1LDM1NTc0LDIwMTYw'@; put 'LDIxMzEzLDYzODU5LDM4NjE3LDI3NjYzLDIwMTI2LDIwNDIwLDIwODE4LDIxODU0LDIzMDc3LDIzNzg0LDI1MTA1LDI5MjczLDMzNDY5LDMzNzA2LDM0NTU4LDM0OTA1LDM1MzU3LDM4NDYzLDM4NTk3LDM5MTg3LDQwMjAxLDQwMjg1LDIyNTM4LDIzNzMxLDIzOTk3LDI0MTMyLDI0ODAxLDI0'@; put 'ODUzLDI1NTY5LDI3MTM4LDI4MTk3LDM3MTIyLDM3NzE2LDM4OTkwLDM5OTUyLDQwODIzLDIzNDMzLDIzNzM2LDI1MzUzLDI2MTkxLDI2Njk2LDMwNTI0LDM4NTkzLDM4Nzk3LDM4OTk2LDM5ODM5LDI2MDE3LDM1NTg1LDM2NTU1LDM4MzMyLDIxODEzLDIzNzIxLDI0MDIyLDI0MjQ1LDI2MjYz'@; put 'LDMwMjg0LDMzNzgwLDM4MzQzLDIyNzM5LDI1Mjc2LDI5MzkwLDQwMjMyLDIwMjA4LDIyODMwLDI0NTkxLDI2MTcxLDI3NTIzLDMxMjA3LDQwMjMwLDIxMzk1LDIxNjk2LDIyNDY3LDIzODMwLDI0ODU5LDI2MzI2LDI4MDc5LDMwODYxLDMzNDA2LDM4NTUyLDM4NzI0LDIxMzgwLDI1MjEyLDI1'@; put 'NDk0LDI4MDgyLDMyMjY2LDMzMDk5LDM4OTg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLDI3Mzg3LDMyNTg4LDQwMzY3LDQwNDc0LDIwMDYzLDIwNTM5LDIwOTE4LDIyODEyLDI0ODI1LDI1NTkwLDI2OTI4LDI5MjQyLDMyODIyLDYzODYwLDM3MzI2LDI0MzY5LDYzODYxLDYzODYyLDMyMDA0LDMzNTA5LDMzOTAzLDMzOTc5LDM0Mjc3LDM2NDkzLDYzODYzLDIw'@; put 'MzM1LDYzODY0LDYzODY1LDIyNzU2LDIzMzYzLDI0NjY1LDI1NTYyLDI1ODgwLDI1OTY1LDI2MjY0LDYzODY2LDI2OTU0LDI3MTcxLDI3OTE1LDI4NjczLDI5MDM2LDMwMTYyLDMwMjIxLDMxMTU1LDMxMzQ0LDYzODY3LDMyNjUwLDYzODY4LDM1MTQwLDYzODY5LDM1NzMxLDM3MzEyLDM4NTI1'@; put 'LDYzODcwLDM5MTc4LDIyMjc2LDI0NDgxLDI2MDQ0LDI4NDE3LDMwMjA4LDMxMTQyLDM1NDg2LDM5MzQxLDM5NzcwLDQwODEyLDIwNzQwLDI1MDE0LDI1MjMzLDI3Mjc3LDMzMjIyLDIwNTQ3LDIyNTc2LDI0NDIyLDI4OTM3LDM1MzI4LDM1NTc4LDIzNDIwLDM0MzI2LDIwNDc0LDIwNzk2LDIy'@; put 'MTk2LDIyODUyLDI1NTEzLDI4MTUzLDIzOTc4LDI2OTg5LDIwODcwLDIwMTA0LDIwMzEzLDYzODcxLDYzODcyLDYzODczLDIyOTE0LDYzODc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODc1LDI3NDg3LDI3NzQxLDYzODc2LDI5ODc3LDMwOTk4LDYzODc3LDMzMjg3LDMzMzQ5LDMzNTkzLDM2NjcxLDM2NzAxLDYzODc4LDM5MTkyLDYzODc5LDYzODgwLDYz'@; put 'ODgxLDIwMTM0LDYzODgyLDIyNDk1LDI0NDQxLDI2MTMxLDYzODgzLDYzODg0LDMwMTIzLDMyMzc3LDM1Njk1LDYzODg1LDM2ODcwLDM5NTE1LDIyMTgxLDIyNTY3LDIzMDMyLDIzMDcxLDIzNDc2LDYzODg2LDI0MzEwLDYzODg3LDYzODg4LDI1NDI0LDI1NDAzLDYzODg5LDI2OTQxLDI3Nzgz'@; put 'LDI3ODM5LDI4MDQ2LDI4MDUxLDI4MTQ5LDI4NDM2LDYzODkwLDI4ODk1LDI4OTgyLDI5MDE3LDYzODkxLDI5MTIzLDI5MTQxLDYzODkyLDMwNzk5LDMwODMxLDYzODkzLDMxNjA1LDMyMjI3LDYzODk0LDMyMzAzLDYzODk1LDM0ODkzLDM2NTc1LDYzODk2LDYzODk3LDYzODk4LDM3NDY3LDYz'@; put 'ODk5LDQwMTgyLDYzOTAwLDYzOTAxLDYzOTAyLDI0NzA5LDI4MDM3LDYzOTAzLDI5MTA1LDYzOTA0LDYzOTA1LDM4MzIxLDIxNDIxLDYzOTA2LDYzOTA3LDYzOTA4LDI2NTc5LDYzOTA5LDI4ODE0LDI4OTc2LDI5NzQ0LDMzMzk4LDMzNDkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTEwLDM4MzMxLDM5NjUzLDQwNTczLDI2MzA4LDYzOTExLDI5MTIxLDMz'@; put 'ODY1LDYzOTEyLDYzOTEzLDIyNjAzLDYzOTE0LDYzOTE1LDIzOTkyLDI0NDMzLDYzOTE2LDI2MTQ0LDI2MjU0LDI3MDAxLDI3MDU0LDI3NzA0LDI3ODkxLDI4MjE0LDI4NDgxLDI4NjM0LDI4Njk5LDI4NzE5LDI5MDA4LDI5MTUxLDI5NTUyLDYzOTE3LDI5Nzg3LDYzOTE4LDI5OTA4LDMwNDA4'@; put 'LDMxMzEwLDMyNDAzLDYzOTE5LDYzOTIwLDMzNTIxLDM1NDI0LDM2ODE0LDYzOTIxLDM3NzA0LDYzOTIyLDM4NjgxLDYzOTIzLDYzOTI0LDIwMDM0LDIwNTIyLDYzOTI1LDIxZTMsMjE0NzMsMjYzNTUsMjc3NTcsMjg2MTgsMjk0NTAsMzA1OTEsMzEzMzAsMzM0NTQsMzQyNjksMzQzMDYsNjM5'@; put 'MjYsMzUwMjgsMzU0MjcsMzU3MDksMzU5NDcsNjM5MjcsMzc1NTUsNjM5MjgsMzg2NzUsMzg5MjgsMjAxMTYsMjAyMzcsMjA0MjUsMjA2NTgsMjEzMjAsMjE1NjYsMjE1NTUsMjE5NzgsMjI2MjYsMjI3MTQsMjI4ODcsMjMwNjcsMjM1MjQsMjQ3MzUsNjM5MjksMjUwMzQsMjU5NDIsMjYxMTEs'@; put 'MjYyMTIsMjY3OTEsMjc3MzgsMjg1OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsMjg4NzksMjkxMDAsMjk1MjIsMzE2MTMsMzQ1NjgsMzU0OTIsMzk5ODYsNDA3MTEsMjM2MjcsMjc3NzksMjk1MDgsMjk1NzcsMzc0MzQsMjgzMzEsMjk3OTcsMzAyMzksMzEzMzcsMzIyNzcsMzQzMTQsMjA4MDAsMjI3MjUsMjU3OTMsMjk5MzQsMjk5NzMsMzAzMjAsMzI3MDUs'@; put 'MzcwMTMsMzg2MDUsMzkyNTIsMjgxOTgsMjk5MjYsMzE0MDEsMzE0MDIsMzMyNTMsMzQ1MjEsMzQ2ODAsMzUzNTUsMjMxMTMsMjM0MzYsMjM0NTEsMjY3ODUsMjY4ODAsMjgwMDMsMjk2MDksMjk3MTUsMjk3NDAsMzA4NzEsMzIyMzMsMzI3NDcsMzMwNDgsMzMxMDksMzM2OTQsMzU5MTYsMzg0'@; put 'NDYsMzg5MjksMjYzNTIsMjQ0NDgsMjYxMDYsMjY1MDUsMjc3NTQsMjk1NzksMjA1MjUsMjMwNDMsMjc0OTgsMzA3MDIsMjI4MDYsMjM5MTYsMjQwMTMsMjk0NzcsMzAwMzEsNjM5MzAsNjM5MzEsMjA3MDksMjA5ODUsMjI1NzUsMjI4MjksMjI5MzQsMjMwMDIsMjM1MjUsNjM5MzIsNjM5MzMs'@; put 'MjM5NzAsMjUzMDMsMjU2MjIsMjU3NDcsMjU4NTQsNjM5MzQsMjYzMzIsNjM5MzUsMjcyMDgsNjM5MzYsMjkxODMsMjk3OTYsNjM5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzEzNjgsMzE0MDcsMzIzMjcsMzIzNTAsMzI3NjgsMzMxMzYsNjM5MzgsMzQ3OTksMzUyMDEsMzU2MTYsMzY5NTMsNjM5MzksMzY5OTIsMzkyNTAsMjQ5NTgsMjc0NDIsMjgwMjAs'@; put 'MzIyODcsMzUxMDksMzY3ODUsMjA0MzMsMjA2NTMsMjA4ODcsMjExOTEsMjI0NzEsMjI2NjUsMjM0ODEsMjQyNDgsMjQ4OTgsMjcwMjksMjgwNDQsMjgyNjMsMjgzNDIsMjkwNzYsMjk3OTQsMjk5OTIsMjk5OTYsMzI4ODMsMzM1OTIsMzM5OTMsMzYzNjIsMzc3ODAsMzc4NTQsNjM5NDAsMjAx'@; put 'MTAsMjAzMDUsMjA1OTgsMjA3NzgsMjE0NDgsMjE0NTEsMjE0OTEsMjM0MzEsMjM1MDcsMjM1ODgsMjQ4NTgsMjQ5NjIsMjYxMDAsMjkyNzUsMjk1OTEsMjk3NjAsMzA0MDIsMzEwNTYsMzExMjEsMzExNjEsMzIwMDYsMzI3MDEsMzM0MTksMzQyNjEsMzQzOTgsMzY4MDIsMzY5MzUsMzcxMDks'@; put 'MzczNTQsMzg1MzMsMzg2MzIsMzg2MzMsMjEyMDYsMjQ0MjMsMjYwOTMsMjYxNjEsMjY2NzEsMjkwMjAsMzEyODYsMzcwNTcsMzg5MjIsMjAxMTMsNjM5NDEsMjcyMTgsMjc1NTAsMjg1NjAsMjkwNjUsMzI3OTIsMzM0NjQsMzQxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5MzksMzg1NDksMzg2NDIsMzg5MDcsMzQwNzQsMzk3MjksMjAxMTIsMjkwNjYs'@; put 'Mzg1OTYsMjA4MDMsMjE0MDcsMjE3MjksMjIyOTEsMjIyOTAsMjI0MzUsMjMxOTUsMjMyMzYsMjM0OTEsMjQ2MTYsMjQ4OTUsMjU1ODgsMjc3ODEsMjc5NjEsMjgyNzQsMjgzMDQsMjkyMzIsMjk1MDMsMjk3ODMsMzM0ODksMzQ5NDUsMzY2NzcsMzY5NjAsNjM5NDIsMzg0OTgsMzllMyw0MDIx'@; put 'OSwyNjM3NiwzNjIzNCwzNzQ3MCwyMDMwMSwyMDU1MywyMDcwMiwyMTM2MSwyMjI4NSwyMjk5NiwyMzA0MSwyMzU2MSwyNDk0NCwyNjI1NiwyODIwNSwyOTIzNCwyOTc3MSwzMjIzOSwzMjk2MywzMzgwNiwzMzg5NCwzNDExMSwzNDY1NSwzNDkwNywzNTA5NiwzNTU4NiwzNjk0OSwzODg1OSwz'@; put 'OTc1OSwyMDA4MywyMDM2OSwyMDc1NCwyMDg0Miw2Mzk0MywyMTgwNywyMTkyOSwyMzQxOCwyMzQ2MSwyNDE4OCwyNDE4OSwyNDI1NCwyNDczNiwyNDc5OSwyNDg0MCwyNDg0MSwyNTU0MCwyNTkxMiwyNjM3Nyw2Mzk0NCwyNjU4MCwyNjU4Niw2Mzk0NSwyNjk3NywyNjk3OCwyNzgzMywyNzk0'@; put 'Myw2Mzk0NiwyODIxNiw2Mzk0NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCwyODY0MSwyOTQ5NCwyOTQ5NSw2Mzk0OCwyOTc4OCwzMDAwMSw2Mzk0OSwzMDI5MCw2Mzk1MCw2Mzk1MSwzMjE3MywzMzI3OCwzMzg0OCwzNTAyOSwzNTQ4MCwzNTU0NywzNTU2NSwzNjQwMCwzNjQxOCwzNjkzOCwzNjkyNiwzNjk4NiwzNzE5MywzNzMyMSwzNzc0Miw2Mzk1Miw2Mzk1'@; put 'MywyMjUzNyw2Mzk1NCwyNzYwMywzMjkwNSwzMjk0Niw2Mzk1NSw2Mzk1NiwyMDgwMSwyMjg5MSwyMzYwOSw2Mzk1Nyw2Mzk1OCwyODUxNiwyOTYwNywzMjk5NiwzNjEwMyw2Mzk1OSwzNzM5OSwzODI4Nyw2Mzk2MCw2Mzk2MSw2Mzk2Miw2Mzk2MywzMjg5NSwyNTEwMiwyODcwMCwzMjEwNCwz'@; put 'NDcwMSw2Mzk2NCwyMjQzMiwyNDY4MSwyNDkwMywyNzU3NSwzNTUxOCwzNzUwNCwzODU3NywyMDA1NywyMTUzNSwyODEzOSwzNDA5MywzODUxMiwzODg5OSwzOTE1MCwyNTU1OCwyNzg3NSwzNzAwOSwyMDk1NywyNTAzMywzMzIxMCw0MDQ0MSwyMDM4MSwyMDUwNiwyMDczNiwyMzQ1MiwyNDg0'@; put 'NywyNTA4NywyNTgzNiwyNjg4NSwyNzU4OSwzMDA5NywzMDY5MSwzMjY4MSwzMzM4MCwzNDE5MSwzNDgxMSwzNDkxNSwzNTUxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNTY5NiwzNzI5MSwyMDEwOCwyMDE5NywyMDIzNCw2Mzk2NSw2Mzk2NiwyMjgzOSwyMzAxNiw2Mzk2NywyNDA1MCwyNDM0NywyNDQxMSwyNDYwOSw2Mzk2OCw2Mzk2OSw2Mzk3MCw2Mzk3'@; put 'MSwyOTI0NiwyOTY2OSw2Mzk3MiwzMDA2NCwzMDE1Nyw2Mzk3MywzMTIyNyw2Mzk3NCwzMjc4MCwzMjgxOSwzMjkwMCwzMzUwNSwzMzYxNyw2Mzk3NSw2Mzk3NiwzNjAyOSwzNjAxOSwzNjk5OSw2Mzk3Nyw2Mzk3OCwzOTE1NiwzOTE4MCw2Mzk3OSw2Mzk4MCwyODcyNywzMDQxMCwzMjcxNCwz'@; put 'MjcxNiwzMjc2NCwzNTYxMCwyMDE1NCwyMDE2MSwyMDk5NSwyMTM2MCw2Mzk4MSwyMTY5MywyMjI0MCwyMzAzNSwyMzQ5MywyNDM0MSwyNDUyNSwyODI3MCw2Mzk4Miw2Mzk4MywzMjEwNiwzMzU4OSw2Mzk4NCwzNDQ1MSwzNTQ2OSw2Mzk4NSwzODc2NSwzODc3NSw2Mzk4Niw2Mzk4NywxOTk2'@; put 'OCwyMDMxNCwyMDM1MCwyMjc3NywyNjA4NSwyODMyMiwzNjkyMCwzNzgwOCwzOTM1MywyMDIxOSwyMjc2NCwyMjkyMiwyMzAwMSwyNDY0MSw2Mzk4OCw2Mzk4OSwzMTI1Miw2Mzk5MCwzMzYxNSwzNjAzNSwyMDgzNywyMTMxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2Mzk5MSw2Mzk5Miw2Mzk5MywyMDE3MywyMTA5NywyMzM4MSwzMzQ3MSwyMDE4MCwyMTA1'@; put 'MCwyMTY3MiwyMjk4NSwyMzAzOSwyMzM3NiwyMzM4MywyMzM4OCwyNDY3NSwyNDkwNCwyODM2MywyODgyNSwyOTAzOCwyOTU3NCwyOTk0MywzMDEzMywzMDkxMywzMjA0MywzMjc3MywzMzI1OCwzMzU3NiwzNDA3MSwzNDI0OSwzNTU2NiwzNjAzOSwzODYwNCwyMDMxNiwyMTI0MiwyMjIwNCwy'@; put 'NjAyNywyNjE1MiwyODc5NiwyODg1NiwyOTIzNywzMjE4OSwzMzQyMSwzNzE5NiwzODU5Miw0MDMwNiwyMzQwOSwyNjg1NSwyNzU0NCwyODUzOCwzMDQzMCwyMzY5NywyNjI4MywyODUwNywzMTY2OCwzMTc4NiwzNDg3MCwzODYyMCwxOTk3NiwyMDE4MywyMTI4MCwyMjU4MCwyMjcxNSwyMjc2'@; put 'NywyMjg5MiwyMzU1OSwyNDExNSwyNDE5NiwyNDM3MywyNTQ4NCwyNjI5MCwyNjQ1NCwyNzE2NywyNzI5OSwyNzQwNCwyODQ3OSwyOTI1NCw2Mzk5NCwyOTUyMCwyOTgzNSwzMTQ1NiwzMTkxMSwzMzE0NCwzMzI0NywzMzI1NSwzMzY3NCwzMzkwMCwzNDA4MywzNDE5NiwzNDI1NSwzNTAzNywz'@; put 'NjExNSwzNzI5MiwzODI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCwzODU1NiwyMDg3NywyMTcwNSwyMjMxMiwyMzQ3MiwyNTE2NSwyNjQ0OCwyNjY4NSwyNjc3MSwyODIyMSwyODM3MSwyODc5NywzMjI4OSwzNTAwOSwzNjAwMSwzNjYxNyw0MDc3OSw0MDc4MiwyOTIyOSwzMTYzMSwzNTUzMywzNzY1OCwyMDI5NSwyMDMwMiwyMDc4NiwyMTYzMiwyMjk5Miwy'@; put 'NDIxMywyNTI2OSwyNjQ4NSwyNjk5MCwyNzE1OSwyNzgyMiwyODE4NiwyOTQwMSwyOTQ4MiwzMDE0MSwzMTY3MiwzMjA1MywzMzUxMSwzMzc4NSwzMzg3OSwzNDI5NSwzNTQxOSwzNjAxNSwzNjQ4NywzNjg4OSwzNzA0OCwzODYwNiw0MDc5OSwyMTIxOSwyMTUxNCwyMzI2NSwyMzQ5MCwyNTY4'@; put 'OCwyNTk3MywyODQwNCwyOTM4MCw2Mzk5NSwzMDM0MCwzMTMwOSwzMTUxNSwzMTgyMSwzMjMxOCwzMjczNSwzMzY1OSwzNTYyNywzNjA0MiwzNjE5NiwzNjMyMSwzNjQ0NywzNjg0MiwzNjg1NywzNjk2OSwzNzg0MSwyMDI5MSwyMDM0NiwyMDY1OSwyMDg0MCwyMDg1NiwyMTA2OSwyMTA5OCwy'@; put 'MjYyNSwyMjY1MiwyMjg4MCwyMzU2MCwyMzYzNywyNDI4MywyNDczMSwyNTEzNiwyNjY0MywyNzU4MywyNzY1NiwyODU5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyOTAwNiwyOTcyOCwzZTQsMzAwMDgsMzAwMzMsMzAzMjIsMzE1NjQsMzE2MjcsMzE2NjEsMzE2ODYsMzIzOTksMzU0MzgsMzY2NzAsMzY2ODEsMzc0MzksMzc1MjMsMzc2NjYsMzc5MzEsMzg2'@; put 'NTEsMzkwMDIsMzkwMTksMzkxOTgsMjA5OTksMjUxMzAsMjUyNDAsMjc5OTMsMzAzMDgsMzE0MzQsMzE2ODAsMzIxMTgsMjEzNDQsMjM3NDIsMjQyMTUsMjg0NzIsMjg4NTcsMzE4OTYsMzg2NzMsMzk4MjIsNDA2NzAsMjU1MDksMjU3MjIsMzQ2NzgsMTk5NjksMjAxMTcsMjAxNDEsMjA1NzIs'@; put 'MjA1OTcsMjE1NzYsMjI5NzksMjM0NTAsMjQxMjgsMjQyMzcsMjQzMTEsMjQ0NDksMjQ3NzMsMjU0MDIsMjU5MTksMjU5NzIsMjYwNjAsMjYyMzAsMjYyMzIsMjY2MjIsMjY5ODQsMjcyNzMsMjc0OTEsMjc3MTIsMjgwOTYsMjgxMzYsMjgxOTEsMjgyNTQsMjg3MDIsMjg4MzMsMjk1ODIsMjk2'@; put 'OTMsMzAwMTAsMzA1NTUsMzA4NTUsMzExMTgsMzEyNDMsMzEzNTcsMzE5MzQsMzIxNDIsMzMzNTEsMzUzMzAsMzU1NjIsMzU5OTgsMzcxNjUsMzcxOTQsMzczMzYsMzc0NzgsMzc1ODAsMzc2NjQsMzg2NjIsMzg3NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg3NDgsMzg5MTQsNDA3MTgsMjEwNDYsMjExMzcsMjE4ODQsMjI1NjQsMjQwOTMsMjQzNTEsMjQ3'@; put 'MTYsMjU1NTIsMjY3OTksMjg2MzksMzEwODUsMzE1MzIsMzMyMjksMzQyMzQsMzUwNjksMzU1NzYsMzY0MjAsMzcyNjEsMzg1MDAsMzg1NTUsMzg3MTcsMzg5ODgsNDA3NzgsMjA0MzAsMjA4MDYsMjA5MzksMjExNjEsMjIwNjYsMjQzNDAsMjQ0MjcsMjU1MTQsMjU4MDUsMjYwODksMjYxNzcs'@; put 'MjYzNjIsMjYzNjEsMjYzOTcsMjY3ODEsMjY4MzksMjcxMzMsMjg0MzcsMjg1MjYsMjkwMzEsMjkxNTcsMjkyMjYsMjk4NjYsMzA1MjIsMzEwNjIsMzEwNjYsMzExOTksMzEyNjQsMzEzODEsMzE4OTUsMzE5NjcsMzIwNjgsMzIzNjgsMzI5MDMsMzQyOTksMzQ0NjgsMzU0MTIsMzU1MTksMzYy'@; put 'NDksMzY0ODEsMzY4OTYsMzY5NzMsMzczNDcsMzg0NTksMzg2MTMsNDAxNjUsMjYwNjMsMzE3NTEsMzYyNzUsMzc4MjcsMjMzODQsMjM1NjIsMjEzMzAsMjUzMDUsMjk0NjksMjA1MTksMjM0NDcsMjQ0NzgsMjQ3NTIsMjQ5MzksMjY4MzcsMjgxMjEsMjk3NDIsMzEyNzgsMzIwNjYsMzIxNTYs'@; put 'MzIzMDUsMzMxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYz'@; put 'OTQsMzY0MDUsMzc3NTgsMzc5MTIsMjAzMDQsMjIzNTIsMjQwMzgsMjQyMzEsMjUzODcsMzI2MTgsMjAwMjcsMjAzMDMsMjAzNjcsMjA1NzAsMjMwMDUsMzI5NjQsMjE2MTAsMjE2MDgsMjIwMTQsMjI4NjMsMjM0NDksMjQwMzAsMjQyODIsMjYyMDUsMjY0MTcsMjY2MDksMjY2NjYsMjc4ODAs'@; put 'Mjc5NTQsMjgyMzQsMjg1NTcsMjg4NTUsMjk2NjQsMzAwODcsMzE4MjAsMzIwMDIsMzIwNDQsMzIxNjIsMzMzMTEsMzQ1MjMsMzUzODcsMzU0NjEsMzYyMDgsMzY0OTAsMzY2NTksMzY5MTMsMzcxOTgsMzcyMDIsMzc5NTYsMzkzNzYsMzE0ODEsMzE5MDksMjA0MjYsMjA3MzcsMjA5MzQsMjI0'@; put 'NzIsMjM1MzUsMjM4MDMsMjYyMDEsMjcxOTcsMjc5OTQsMjgzMTAsMjg2NTIsMjg5NDAsMzAwNjMsMzE0NTksMzQ4NTAsMzY4OTcsMzY5ODEsMzg2MDMsMzk0MjMsMzM1MzcsMjAwMTMsMjAyMTAsMzQ4ODYsMzczMjUsMjEzNzMsMjczNTUsMjY5ODcsMjc3MTMsMzM5MTQsMjI2ODYsMjQ5NzQs'@; put 'MjYzNjYsMjUzMjcsMjg4OTMsMjk5NjksMzAxNTEsMzIzMzgsMzM5NzYsMzU2NTcsMzYxMDQsMjAwNDMsMjE0ODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2NzUsMjIzMjAsMjIzMzYsMjQ1MzUsMjUzNDUsMjUzNTEsMjU3MTEsMjU5MDMsMjYwODgsMjYyMzQsMjY1MjUsMjY1NDcsMjc0OTAsMjc3NDQsMjc4MDIsMjg0NjAsMzA2OTMsMzA3NTcsMzEwNDks'@; put 'MzEwNjMsMzIwMjUsMzI5MzAsMzMwMjYsMzMyNjcsMzM0MzcsMzM0NjMsMzQ1ODQsMzU0NjgsNjM5OTYsMzYxMDAsMzYyODYsMzY5NzgsMzA0NTIsMzEyNTcsMzEyODcsMzIzNDAsMzI4ODcsMjE3NjcsMjE5NzIsMjI2NDUsMjUzOTEsMjU2MzQsMjYxODUsMjYxODcsMjY3MzMsMjcwMzUsMjc1'@; put 'MjQsMjc5NDEsMjgzMzcsMjk2NDUsMjk4MDAsMjk4NTcsMzAwNDMsMzAxMzcsMzA0MzMsMzA0OTQsMzA2MDMsMzEyMDYsMzIyNjUsMzIyODUsMzMyNzUsMzQwOTUsMzQ5NjcsMzUzODYsMzYwNDksMzY1ODcsMzY3ODQsMzY5MTQsMzc4MDUsMzg0OTksMzg1MTUsMzg2NjMsMjAzNTYsMjE0ODks'@; put 'MjMwMTgsMjMyNDEsMjQwODksMjY3MDIsMjk4OTQsMzAxNDIsMzEyMDksMzEzNzgsMzMxODcsMzQ1NDEsMzYwNzQsMzYzMDAsMzY4NDUsMjYwMTUsMjYzODksNjM5OTcsMjI1MTksMjg1MDMsMzIyMjEsMzY2NTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc4NzgsMzg1OTgsMjQ1MDEsMjUwNzQsMjg1NDgsMTk5ODgsMjAzNzYsMjA1MTEsMjE0NDksMjE5ODMs'@; put 'MjM5MTksMjQwNDYsMjc0MjUsMjc0OTIsMzA5MjMsMzE2NDIsNjM5OTgsMzY0MjUsMzY1NTQsMzY5NzQsMjU0MTcsMjU2NjIsMzA1MjgsMzEzNjQsMzc2NzksMzgwMTUsNDA4MTAsMjU3NzYsMjg1OTEsMjkxNTgsMjk4NjQsMjk5MTQsMzE0MjgsMzE3NjIsMzIzODYsMzE5MjIsMzI0MDgsMzU3'@; put 'MzgsMzYxMDYsMzgwMTMsMzkxODQsMzkyNDQsMjEwNDksMjM1MTksMjU4MzAsMjY0MTMsMzIwNDYsMjA3MTcsMjE0NDMsMjI2NDksMjQ5MjAsMjQ5MjEsMjUwODIsMjYwMjgsMzE0NDksMzU3MzAsMzU3MzQsMjA0ODksMjA1MTMsMjExMDksMjE4MDksMjMxMDAsMjQyODgsMjQ0MzIsMjQ4ODQs'@; put 'MjU5NTAsMjYxMjQsMjYxNjYsMjYyNzQsMjcwODUsMjgzNTYsMjg0NjYsMjk0NjIsMzAyNDEsMzEzNzksMzMwODEsMzMzNjksMzM3NTAsMzM5ODAsMjA2NjEsMjI1MTIsMjM0ODgsMjM1MjgsMjQ0MjUsMjU1MDUsMzA3NTgsMzIxODEsMzM3NTYsMzQwODEsMzczMTksMzczNjUsMjA4NzQsMjY2'@; put 'MTMsMzE1NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYwMTIs'@; put 'MjA5MzIsMjI5NzEsMjQ3NjUsMzQzODksMjA1MDgsNjM5OTksMjEwNzYsMjM2MTAsMjQ5NTcsMjUxMTQsMjUyOTksMjU4NDIsMjYwMjEsMjgzNjQsMzAyNDAsMzMwMzQsMzY0NDgsMzg0OTUsMzg1ODcsMjAxOTEsMjEzMTUsMjE5MTIsMjI4MjUsMjQwMjksMjU3OTcsMjc4NDksMjgxNTQsMjk1'@; put 'ODgsMzEzNTksMzMzMDcsMzQyMTQsMzYwNjgsMzYzNjgsMzY5ODMsMzczNTEsMzgzNjksMzg0MzMsMzg4NTQsMjA5ODQsMjE3NDYsMjE4OTQsMjQ1MDUsMjU3NjQsMjg1NTIsMzIxODAsMzY2MzksMzY2ODUsMzc5NDEsMjA2ODEsMjM1NzQsMjc4MzgsMjgxNTUsMjk5NzksMzA2NTEsMzE4MDUs'@; put 'MzE4NDQsMzU0NDksMzU1MjIsMjI1NTgsMjI5NzQsMjQwODYsMjU0NjMsMjkyNjYsMzAwOTAsMzA1NzEsMzU1NDgsMzYwMjgsMzY2MjYsMjQzMDcsMjYyMjgsMjgxNTIsMzI4OTMsMzM3MjksMzU1MzEsMzg3MzcsMzk4OTQsNjRlMywyMTA1OSwyNjM2NywyODA1MywyODM5OSwzMjIyNCwzNTU1'@; put 'OCwzNjkxMCwzNjk1OCwzOTYzNiwyMTAyMSwyMTExOSwyMTczNiwyNDk4MCwyNTIyMCwyNTMwNywyNjc4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg5OCwyNjk3MCwyNzE4OSwyODgxOCwyODk2NiwzMDgxMywzMDk3NywzMDk5MCwzMTE4NiwzMTI0NSwzMjkxOCwzMzQwMCwzMzQ5MywzMzYwOSwzNDEyMSwzNTk3MCwzNjIyOSwzNzIxOCwzNzI1OSwzNzI5'@; put 'NCwyMDQxOSwyMjIyNSwyOTE2NSwzMDY3OSwzNDU2MCwzNTMyMCwyMzU0NCwyNDUzNCwyNjQ0OSwzNzAzMiwyMTQ3NCwyMjYxOCwyMzU0MSwyNDc0MCwyNDk2MSwyNTY5NiwzMjMxNywzMjg4MCwzNDA4NSwzNzUwNywyNTc3NCwyMDY1MiwyMzgyOCwyNjM2OCwyMjY4NCwyNTI3NywyNTUxMiwy'@; put 'Njg5NCwyN2UzLDI3MTY2LDI4MjY3LDMwMzk0LDMxMTc5LDMzNDY3LDMzODMzLDM1NTM1LDM2MjY0LDM2ODYxLDM3MTM4LDM3MTk1LDM3Mjc2LDM3NjQ4LDM3NjU2LDM3Nzg2LDM4NjE5LDM5NDc4LDM5OTQ5LDE5OTg1LDMwMDQ0LDMxMDY5LDMxNDgyLDMxNTY5LDMxNjg5LDMyMzAyLDMzOTg4'@; put 'LDM2NDQxLDM2NDY4LDM2NjAwLDM2ODgwLDI2MTQ5LDI2OTQzLDI5NzYzLDIwOTg2LDI2NDE0LDQwNjY4LDIwODA1LDI0NTQ0LDI3Nzk4LDM0ODAyLDM0OTA5LDM0OTM1LDI0NzU2LDMzMjA1LDMzNzk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MTAxLDIxNDYyLDIxNTYxLDIyMDY4LDIzMDk0LDIzNjAxLDI4ODEwLDMyNzM2LDMyODU4LDMzMDMwLDMzMjYx'@; put 'LDM2MjU5LDM3MjU3LDM5NTE5LDQwNDM0LDIwNTk2LDIwMTY0LDIxNDA4LDI0ODI3LDI4MjA0LDIzNjUyLDIwMzYwLDIwNTE2LDIxOTg4LDIzNzY5LDI0MTU5LDI0Njc3LDI2NzcyLDI3ODM1LDI4MTAwLDI5MTE4LDMwMTY0LDMwMTk2LDMwMzA1LDMxMjU4LDMxMzA1LDMyMTk5LDMyMjUxLDMy'@; put 'NjIyLDMzMjY4LDM0NDczLDM2NjM2LDM4NjAxLDM5MzQ3LDQwNzg2LDIxMDYzLDIxMTg5LDM5MTQ5LDM1MjQyLDE5OTcxLDI2NTc4LDI4NDIyLDIwNDA1LDIzNTIyLDI2NTE3LDI3Nzg0LDI4MDI0LDI5NzIzLDMwNzU5LDM3MzQxLDM3NzU2LDM0NzU2LDMxMjA0LDMxMjgxLDI0NTU1LDIwMTgy'@; put 'LDIxNjY4LDIxODIyLDIyNzAyLDIyOTQ5LDI0ODE2LDI1MTcxLDI1MzAyLDI2NDIyLDI2OTY1LDMzMzMzLDM4NDY0LDM5MzQ1LDM5Mzg5LDIwNTI0LDIxMzMxLDIxODI4LDIyMzk2LDY0MDAxLDI1MTc2LDY0MDAyLDI1ODI2LDI2MjE5LDI2NTg5LDI4NjA5LDI4NjU1LDI5NzMwLDI5NzUyLDM1'@; put 'MzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3OTQ0LDIxNTg1'@; put 'LDIyMDIyLDIyMzc0LDI0MzkyLDI0OTg2LDI3NDcwLDI4NzYwLDI4ODQ1LDMyMTg3LDM1NDc3LDIyODkwLDMzMDY3LDI1NTA2LDMwNDcyLDMyODI5LDM2MDEwLDIyNjEyLDI1NjQ1LDI3MDY3LDIzNDQ1LDI0MDgxLDI4MjcxLDY0MDAzLDM0MTUzLDIwODEyLDIxNDg4LDIyODI2LDI0NjA4LDI0'@; put 'OTA3LDI3NTI2LDI3NzYwLDI3ODg4LDMxNTE4LDMyOTc0LDMzNDkyLDM2Mjk0LDM3MDQwLDM5MDg5LDY0MDA0LDI1Nzk5LDI4NTgwLDI1NzQ1LDI1ODYwLDIwODE0LDIxNTIwLDIyMzAzLDM1MzQyLDI0OTI3LDI2NzQyLDY0MDA1LDMwMTcxLDMxNTcwLDMyMTEzLDM2ODkwLDIyNTM0LDI3MDg0'@; put 'LDMzMTUxLDM1MTE0LDM2ODY0LDM4OTY5LDIwNjAwLDIyODcxLDIyOTU2LDI1MjM3LDM2ODc5LDM5NzIyLDI0OTI1LDI5MzA1LDM4MzU4LDIyMzY5LDIzMTEwLDI0MDUyLDI1MjI2LDI1NzczLDI1ODUwLDI2NDg3LDI3ODc0LDI3OTY2LDI5MjI4LDI5NzUwLDMwNzcyLDMyNjMxLDMzNDUzLDM2'@; put 'MzE1LDM4OTM1LDIxMDI4LDIyMzM4LDI2NDk1LDI5MjU2LDI5OTIzLDM2MDA5LDM2Nzc0LDM3MzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NDQyLDIwODQzLDIxNDg1LDI1NDIwLDIwMzI5LDIxNzY0LDI0NzI2LDI1OTQzLDI3ODAzLDI4MDMxLDI5MjYwLDI5NDM3LDMxMjU1LDM1MjA3LDM1OTk3LDI0NDI5LDI4NTU4LDI4OTIxLDMzMTkyLDI0ODQ2LDIw'@; put 'NDE1LDIwNTU5LDI1MTUzLDI5MjU1LDMxNjg3LDMyMjMyLDMyNzQ1LDM2OTQxLDM4ODI5LDM5NDQ5LDM2MDIyLDIyMzc4LDI0MTc5LDI2NTQ0LDMzODA1LDM1NDEzLDIxNTM2LDIzMzE4LDI0MTYzLDI0MjkwLDI0MzMwLDI1OTg3LDMyOTU0LDM0MTA5LDM4MjgxLDM4NDkxLDIwMjk2LDIxMjUz'@; put 'LDIxMjYxLDIxMjYzLDIxNjM4LDIxNzU0LDIyMjc1LDI0MDY3LDI0NTk4LDI1MjQzLDI1MjY1LDI1NDI5LDY0MDA2LDI3ODczLDI4MDA2LDMwMTI5LDMwNzcwLDMyOTkwLDMzMDcxLDMzNTAyLDMzODg5LDMzOTcwLDM0OTU3LDM1MDkwLDM2ODc1LDM3NjEwLDM5MTY1LDM5ODI1LDI0MTMzLDI2'@; put 'MjkyLDI2MzMzLDI4Njg5LDI5MTkwLDY0MDA3LDIwNDY5LDIxMTE3LDI0NDI2LDI0OTE1LDI2NDUxLDI3MTYxLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1OTYxLDM5MTExLDM5MTA4LDM5NDkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjk3LDMxMjYzLDI2OTYzLDM1NTc1LDM1OTE0LDM5MDgwLDM5MzQyLDI0NDQ0LDI1MjU5LDMwMTMwLDMwMzgyLDM0'@; put 'OTg3LDM2OTkxLDM4NDY2LDIxMzA1LDI0MzgwLDI0NTE3LDI3ODUyLDI5NjQ0LDMwMDUwLDMwMDkxLDMxNTU4LDMzNTM0LDM5MzI1LDIwMDQ3LDM2OTI0LDE5OTc5LDIwMzA5LDIxNDE0LDIyNzk5LDI0MjY0LDI2MTYwLDI3ODI3LDI5NzgxLDMzNjU1LDM0NjYyLDM2MDMyLDM2OTQ0LDM4Njg2'@; put 'LDM5OTU3LDIyNzM3LDIzNDE2LDM0Mzg0LDM1NjA0LDQwMzcyLDIzNTA2LDI0NjgwLDI0NzE3LDI2MDk3LDI3NzM1LDI4NDUwLDI4NTc5LDI4Njk4LDMyNTk3LDMyNzUyLDM4Mjg5LDM4MjkwLDM4NDgwLDM4ODY3LDIxMTA2LDM2Njc2LDIwOTg5LDIxNTQ3LDIxNjg4LDIxODU5LDIxODk4LDI3'@; put 'MzIzLDI4MDg1LDMyMjE2LDMzMzgyLDM3NTMyLDM4NTE5LDQwNTY5LDIxNTEyLDIxNzA0LDMwNDE4LDM0NTMyLDM4MzA4LDM4MzU2LDM4NDkyLDIwMTMwLDIwMjMzLDIzMDIyLDIzMjcwLDI0MDU1LDI0NjU4LDI1MjM5LDI2NDc3LDI2Njg5LDI3NzgyLDI4MjA3LDMyNTY4LDMyOTIzLDMzMzIy'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY0MDA4LDY0MDA5LDM4'@; put 'OTE3LDIwMTMzLDIwNTY1LDIxNjgzLDIyNDE5LDIyODc0LDIzNDAxLDIzNDc1LDI1MDMyLDI2OTk5LDI4MDIzLDI4NzA3LDM0ODA5LDM1Mjk5LDM1NDQyLDM1NTU5LDM2OTk0LDM5NDA1LDM5NjA4LDIxMTgyLDI2NjgwLDIwNTAyLDI0MTg0LDI2NDQ3LDMzNjA3LDM0ODkyLDIwMTM5LDIxNTIx'@; put 'LDIyMTkwLDI5NjcwLDM3MTQxLDM4OTExLDM5MTc3LDM5MjU1LDM5MzIxLDIyMDk5LDIyNjg3LDM0Mzk1LDM1Mzc3LDI1MDEwLDI3MzgyLDI5NTYzLDM2NTYyLDI3NDYzLDM4NTcwLDM5NTExLDIyODY5LDI5MTg0LDM2MjAzLDM4NzYxLDIwNDM2LDIzNzk2LDI0MzU4LDI1MDgwLDI2MjAzLDI3'@; put 'ODgzLDI4ODQzLDI5NTcyLDI5NjI1LDI5Njk0LDMwNTA1LDMwNTQxLDMyMDY3LDMyMDk4LDMyMjkxLDMzMzM1LDM0ODk4LDY0MDEwLDM2MDY2LDM3NDQ5LDM5MDIzLDIzMzc3LDMxMzQ4LDM0ODgwLDM4OTEzLDIzMjQ0LDIwNDQ4LDIxMzMyLDIyODQ2LDIzODA1LDI1NDA2LDI4MDI1LDI5NDMz'@; put 'LDMzMDI5LDMzMDMxLDMzNjk4LDM3NTgzLDM4OTYwLDIwMTM2LDIwODA0LDIxMDA5LDIyNDExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0NDE4LDI3ODQyLDI4MzY2LDI4Njc3LDI4NzUyLDI4ODQ3LDI5MDc0LDI5NjczLDI5ODAxLDMzNjEwLDM0NzIyLDM0OTEzLDM2ODcyLDM3MDI2LDM3Nzk1LDM5MzM2LDIwODQ2LDI0NDA3LDI0ODAwLDI0OTM1LDI2Mjkx'@; put 'LDM0MTM3LDM2NDI2LDM3Mjk1LDM4Nzk1LDIwMDQ2LDIwMTE0LDIxNjI4LDIyNzQxLDIyNzc4LDIyOTA5LDIzNzMzLDI0MzU5LDI1MTQyLDI1MTYwLDI2MTIyLDI2MjE1LDI3NjI3LDI4MDA5LDI4MTExLDI4MjQ2LDI4NDA4LDI4NTY0LDI4NjQwLDI4NjQ5LDI4NzY1LDI5MzkyLDI5NzMzLDI5'@; put 'Nzg2LDI5OTIwLDMwMzU1LDMxMDY4LDMxOTQ2LDMyMjg2LDMyOTkzLDMzNDQ2LDMzODk5LDMzOTgzLDM0MzgyLDM0Mzk5LDM0Njc2LDM1NzAzLDM1OTQ2LDM3ODA0LDM4OTEyLDM5MDEzLDI0Nzg1LDI1MTEwLDM3MjM5LDIzMTMwLDI2MTI3LDI4MTUxLDI4MjIyLDI5NzU5LDM5NzQ2LDI0NTcz'@; put 'LDI0Nzk0LDMxNTAzLDIxNzAwLDI0MzQ0LDI3NzQyLDI3ODU5LDI3OTQ2LDI4ODg4LDMyMDA1LDM0NDI1LDM1MzQwLDQwMjUxLDIxMjcwLDIxNjQ0LDIzMzAxLDI3MTk0LDI4Nzc5LDMwMDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTE3LDMxMTY2LDMzNDU3LDMzNzc1LDM1NDQxLDM1NjQ5LDM2MDA4LDM4NzcyLDY0MDExLDI1ODQ0LDI1ODk5LDMwOTA2'@; put 'LDMwOTA3LDMxMzM5LDIwMDI0LDIxOTE0LDIyODY0LDIzNDYyLDI0MTg3LDI0NzM5LDI1NTYzLDI3NDg5LDI2MjEzLDI2NzA3LDI4MTg1LDI5MDI5LDI5ODcyLDMyMDA4LDM2OTk2LDM5NTI5LDM5OTczLDI3OTYzLDI4MzY5LDI5NTAyLDM1OTA1LDM4MzQ2LDIwOTc2LDI0MTQwLDI0NDg4LDI0'@; put 'NjUzLDI0ODIyLDI0ODgwLDI0OTA4LDI2MTc5LDI2MTgwLDI3MDQ1LDI3ODQxLDI4MjU1LDI4MzYxLDI4NTE0LDI5MDA0LDI5ODUyLDMwMzQzLDMxNjgxLDMxNzgzLDMzNjE4LDM0NjQ3LDM2OTQ1LDM4NTQxLDQwNjQzLDIxMjk1LDIyMjM4LDI0MzE1LDI0NDU4LDI0Njc0LDI0NzI0LDI1MDc5'@; put 'LDI2MjE0LDI2MzcxLDI3MjkyLDI4MTQyLDI4NTkwLDI4Nzg0LDI5NTQ2LDMyMzYyLDMzMjE0LDMzNTg4LDM0NTE2LDM1NDk2LDM2MDM2LDIxMTIzLDI5NTU0LDIzNDQ2LDI3MjQzLDM3ODkyLDIxNzQyLDIyMTUwLDIzMzg5LDI1OTI4LDI1OTg5LDI2MzEzLDI2NzgzLDI4MDQ1LDI4MTAyLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MjQzLDMyOTQ4LDM3MjM3'@; put 'LDM5NTAxLDIwMzk5LDIwNTA1LDIxNDAyLDIxNTE4LDIxNTY0LDIxODk3LDIxOTU3LDI0MTI3LDI0NDYwLDI2NDI5LDI5MDMwLDI5NjYxLDM2ODY5LDIxMjExLDIxMjM1LDIyNjI4LDIyNzM0LDI4OTMyLDI5MDcxLDI5MTc5LDM0MjI0LDM1MzQ3LDI2MjQ4LDM0MjE2LDIxOTI3LDI2MjQ0LDI5'@; put 'MDAyLDMzODQxLDIxMzIxLDIxOTEzLDI3NTg1LDI0NDA5LDI0NTA5LDI1NTgyLDI2MjQ5LDI4OTk5LDM1NTY5LDM2NjM3LDQwNjM4LDIwMjQxLDI1NjU4LDI4ODc1LDMwMDU0LDM0NDA3LDI0Njc2LDM1NjYyLDQwNDQwLDIwODA3LDIwOTgyLDIxMjU2LDI3OTU4LDMzMDE2LDQwNjU3LDI2MTMz'@; put 'LDI3NDI3LDI4ODI0LDMwMTY1LDIxNTA3LDIzNjczLDMyMDA3LDM1MzUwLDI3NDI0LDI3NDUzLDI3NDYyLDIxNTYwLDI0Njg4LDI3OTY1LDMyNzI1LDMzMjg4LDIwNjk0LDIwOTU4LDIxOTE2LDIyMTIzLDIyMjIxLDIzMDIwLDIzMzA1LDI0MDc2LDI0OTg1LDI0OTg0LDI1MTM3LDI2MjA2LDI2'@; put 'MzQyLDI5MDgxLDI5MTEzLDI5MTE0LDI5MzUxLDMxMTQzLDMxMjMyLDMyNjkwLDM1NDQwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGxdLGdiMTgwMzA6WzE5OTcwLDE5OTcyLDE5OTczLDE5OTc0LDE5OTgzLDE5OTg2LDE5OTkxLDE5OTk5LDJlNCwyMDAwMSwyMDAwMywyMDAwNiwyMDAwOSwyMDAxNCwyMDAxNSwyMDAxNywyMDAxOSwyMDAyMSwyMDAyMywyMDAyOCwyMDAzMiwyMDAzMywyMDAzNCwyMDAzNiwy'@; put 'MDAzOCwyMDA0MiwyMDA0OSwyMDA1MywyMDA1NSwyMDA1OCwyMDA1OSwyMDA2NiwyMDA2NywyMDA2OCwyMDA2OSwyMDA3MSwyMDA3MiwyMDA3NCwyMDA3NSwyMDA3NiwyMDA3NywyMDA3OCwyMDA3OSwyMDA4MiwyMDA4NCwyMDA4NSwyMDA4NiwyMDA4NywyMDA4OCwyMDA4OSwyMDA5MCwyMDA5'@; put 'MSwyMDA5MiwyMDA5MywyMDA5NSwyMDA5NiwyMDA5NywyMDA5OCwyMDA5OSwyMDEwMCwyMDEwMSwyMDEwMywyMDEwNiwyMDExMiwyMDExOCwyMDExOSwyMDEyMSwyMDEyNCwyMDEyNSwyMDEyNiwyMDEzMSwyMDEzOCwyMDE0MywyMDE0NCwyMDE0NSwyMDE0OCwyMDE1MCwyMDE1MSwyMDE1Miwy'@; put 'MDE1MywyMDE1NiwyMDE1NywyMDE1OCwyMDE2OCwyMDE3MiwyMDE3NSwyMDE3NiwyMDE3OCwyMDE4NiwyMDE4NywyMDE4OCwyMDE5MiwyMDE5NCwyMDE5OCwyMDE5OSwyMDIwMSwyMDIwNSwyMDIwNiwyMDIwNywyMDIwOSwyMDIxMiwyMDIxNiwyMDIxNywyMDIxOCwyMDIyMCwyMDIyMiwyMDIy'@; put 'NCwyMDIyNiwyMDIyNywyMDIyOCwyMDIyOSwyMDIzMCwyMDIzMSwyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0MywyMDI0NCwyMDI0NSwyMDI0NiwyMDI1MiwyMDI1MywyMDI1NywyMDI1OSwyMDI2NCwyMDI2NSwyMDI2OCwyMDI2OSwyMDI3MCwyMDI3MywyMDI3NSwyMDI3NywyMDI3OSwy'@; put 'MDI4MSwyMDI4MywyMDI4NiwyMDI4NywyMDI4OCwyMDI4OSwyMDI5MCwyMDI5MiwyMDI5MywyMDI5NSwyMDI5NiwyMDI5NywyMDI5OCwyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMyMSwyMDMyMiwyMDMyNiwyMDMyOCwyMDMzMCwyMDMzMSwyMDMzMywyMDMzNCwyMDMzNywyMDMz'@; put 'OCwyMDM0MSwyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MiwyMDM1MywyMDM1NCwyMDM1NywyMDM1OCwyMDM1OSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MywyMDM3NCwyMDM3NiwyMDM3NywyMDM3OCwyMDM4MCwyMDM4MiwyMDM4MywyMDM4NSwy'@; put 'MDM4NiwyMDM4OCwyMDM5NSwyMDM5NywyMDQwMCwyMDQwMSwyMDQwMiwyMDQwMywyMDQwNCwyMDQwNiwyMDQwNywyMDQwOCwyMDQwOSwyMDQxMCwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQxOCwyMDQyMiwyMDQyMywyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQy'@; put 'OSwyMDQzNCwyMDQzNSwyMDQzNiwyMDQzNywyMDQzOCwyMDQ0MSwyMDQ0MywyMDQ0OCwyMDQ1MCwyMDQ1MiwyMDQ1MywyMDQ1NSwyMDQ1OSwyMDQ2MCwyMDQ2NCwyMDQ2NiwyMDQ2OCwyMDQ2OSwyMDQ3MCwyMDQ3MSwyMDQ3MywyMDQ3NSwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwy'@; put 'MDQ4MiwyMDQ4MywyMDQ4NCwyMDQ4NSwyMDQ4NiwyMDQ4NywyMDQ4OCwyMDQ4OSwyMDQ5MCwyMDQ5MSwyMDQ5NCwyMDQ5NiwyMDQ5NywyMDQ5OSwyMDUwMSwyMDUwMiwyMDUwMywyMDUwNywyMDUwOSwyMDUxMCwyMDUxMiwyMDUxNCwyMDUxNSwyMDUxNiwyMDUxOSwyMDUyMywyMDUyNywyMDUy'@; put 'OCwyMDUyOSwyMDUzMCwyMDUzMSwyMDUzMiwyMDUzMywyMDUzNCwyMDUzNSwyMDUzNiwyMDUzNywyMDUzOSwyMDU0MSwyMDU0MywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OCwyMDU0OSwyMDU1MCwyMDU1MywyMDU1NCwyMDU1NSwyMDU1NywyMDU2MCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NCwy'@; put 'MDU2NiwyMDU2NywyMDU2OCwyMDU2OSwyMDU3MSwyMDU3MywyMDU3NCwyMDU3NSwyMDU3NiwyMDU3NywyMDU3OCwyMDU3OSwyMDU4MCwyMDU4MiwyMDU4MywyMDU4NCwyMDU4NSwyMDU4NiwyMDU4NywyMDU4OSwyMDU5MCwyMDU5MSwyMDU5MiwyMDU5MywyMDU5NCwyMDU5NSwyMDU5NiwyMDU5'@; put 'NywyMDYwMCwyMDYwMSwyMDYwMiwyMDYwNCwyMDYwNSwyMDYwOSwyMDYxMCwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxNSwyMDYxNywyMDYxOCwyMDYxOSwyMDYyMCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNSwyMDYyNiwyMDYyNywyMDYyOCwyMDYyOSwyMDYzMCwyMDYzMSwyMDYzMiwyMDYzMywy'@; put 'MDYzNCwyMDYzNSwyMDYzNiwyMDYzNywyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY0NCwyMDY0NiwyMDY1MCwyMDY1MSwyMDY1MywyMDY1NCwyMDY1NSwyMDY1NiwyMDY1NywyMDY1OSwyMDY2MCwyMDY2MSwyMDY2MiwyMDY2MywyMDY2NCwyMDY2NSwyMDY2OCwyMDY2OSwyMDY3'@; put 'MCwyMDY3MSwyMDY3MiwyMDY3MywyMDY3NCwyMDY3NSwyMDY3NiwyMDY3NywyMDY3OCwyMDY3OSwyMDY4MCwyMDY4MSwyMDY4MiwyMDY4MywyMDY4NCwyMDY4NSwyMDY4NiwyMDY4OCwyMDY4OSwyMDY5MCwyMDY5MSwyMDY5MiwyMDY5MywyMDY5NSwyMDY5NiwyMDY5NywyMDY5OSwyMDcwMCwy'@; put 'MDcwMSwyMDcwMiwyMDcwMywyMDcwNCwyMDcwNSwyMDcwNiwyMDcwNywyMDcwOCwyMDcwOSwyMDcxMiwyMDcxMywyMDcxNCwyMDcxNSwyMDcxOSwyMDcyMCwyMDcyMSwyMDcyMiwyMDcyNCwyMDcyNiwyMDcyNywyMDcyOCwyMDcyOSwyMDczMCwyMDczMiwyMDczMywyMDczNCwyMDczNSwyMDcz'@; put 'NiwyMDczNywyMDczOCwyMDczOSwyMDc0MCwyMDc0MSwyMDc0NCwyMDc0NSwyMDc0NiwyMDc0OCwyMDc0OSwyMDc1MCwyMDc1MSwyMDc1MiwyMDc1MywyMDc1NSwyMDc1NiwyMDc1NywyMDc1OCwyMDc1OSwyMDc2MCwyMDc2MSwyMDc2MiwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc2Nywy'@; put 'MDc2OCwyMDc3MCwyMDc3MSwyMDc3MiwyMDc3MywyMDc3NCwyMDc3NSwyMDc3NiwyMDc3NywyMDc3OCwyMDc3OSwyMDc4MCwyMDc4MSwyMDc4MiwyMDc4MywyMDc4NCwyMDc4NSwyMDc4NiwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MCwyMDc5MSwyMDc5MiwyMDc5MywyMDc5NCwyMDc5NSwyMDc5'@; put 'NiwyMDc5NywyMDc5OCwyMDgwMiwyMDgwNywyMDgxMCwyMDgxMiwyMDgxNCwyMDgxNSwyMDgxNiwyMDgxOCwyMDgxOSwyMDgyMywyMDgyNCwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyMDgzMSwyMDgzMiwyMDgzMywyMDgzNSwyMDgzNiwyMDgzOCwyMDgzOSwyMDg0MSwyMDg0MiwyMDg0Nywy'@; put 'MDg1MCwyMDg1OCwyMDg2MiwyMDg2MywyMDg2NywyMDg2OCwyMDg3MCwyMDg3MSwyMDg3NCwyMDg3NSwyMDg3OCwyMDg3OSwyMDg4MCwyMDg4MSwyMDg4MywyMDg4NCwyMDg4OCwyMDg5MCwyMDg5MywyMDg5NCwyMDg5NSwyMDg5NywyMDg5OSwyMDkwMiwyMDkwMywyMDkwNCwyMDkwNSwyMDkw'@; put 'NiwyMDkwOSwyMDkxMCwyMDkxNiwyMDkyMCwyMDkyMSwyMDkyMiwyMDkyNiwyMDkyNywyMDkyOSwyMDkzMCwyMDkzMSwyMDkzMywyMDkzNiwyMDkzOCwyMDk0MSwyMDk0MiwyMDk0NCwyMDk0NiwyMDk0NywyMDk0OCwyMDk0OSwyMDk1MCwyMDk1MSwyMDk1MiwyMDk1MywyMDk1NCwyMDk1Niwy'@; put 'MDk1OCwyMDk1OSwyMDk2MiwyMDk2MywyMDk2NSwyMDk2NiwyMDk2NywyMDk2OCwyMDk2OSwyMDk3MCwyMDk3MiwyMDk3NCwyMDk3NywyMDk3OCwyMDk4MCwyMDk4MywyMDk5MCwyMDk5NiwyMDk5NywyMTAwMSwyMTAwMywyMTAwNCwyMTAwNywyMTAwOCwyMTAxMSwyMTAxMiwyMTAxMywyMTAy'@; put 'MCwyMTAyMiwyMTAyMywyMTAyNSwyMTAyNiwyMTAyNywyMTAyOSwyMTAzMCwyMTAzMSwyMTAzNCwyMTAzNiwyMTAzOSwyMTA0MSwyMTA0MiwyMTA0NCwyMTA0NSwyMTA1MiwyMTA1NCwyMTA2MCwyMTA2MSwyMTA2MiwyMTA2MywyMTA2NCwyMTA2NSwyMTA2NywyMTA3MCwyMTA3MSwyMTA3NCwy'@; put 'MTA3NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MSwyMTA4MiwyMTA4MywyMTA4NSwyMTA4NywyMTA4OCwyMTA5MCwyMTA5MSwyMTA5MiwyMTA5NCwyMTA5NiwyMTA5OSwyMTEwMCwyMTEwMSwyMTEwMiwyMTEwNCwyMTEwNSwyMTEwNywyMTEwOCwyMTEwOSwyMTExMCwyMTExMSwyMTExMiwyMTEx'@; put 'MywyMTExNCwyMTExNSwyMTExNiwyMTExOCwyMTEyMCwyMTEyMywyMTEyNCwyMTEyNSwyMTEyNiwyMTEyNywyMTEyOSwyMTEzMCwyMTEzMSwyMTEzMiwyMTEzMywyMTEzNCwyMTEzNSwyMTEzNywyMTEzOCwyMTE0MCwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NSwyMTE0NiwyMTE0OCwy'@; put 'MTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NiwyMTE2NywyMTE2OCwyMTE3MiwyMTE3MywyMTE3NCwyMTE3NSwyMTE3NiwyMTE3NywyMTE3OCwyMTE3OSwyMTE4MCwyMTE4MSwyMTE4NCwyMTE4NSwyMTE4NiwyMTE4OCwyMTE4OSwyMTE5MCwyMTE5MiwyMTE5NCwyMTE5NiwyMTE5NywyMTE5'@; put 'OCwyMTE5OSwyMTIwMSwyMTIwMywyMTIwNCwyMTIwNSwyMTIwNywyMTIwOSwyMTIxMCwyMTIxMSwyMTIxMiwyMTIxMywyMTIxNCwyMTIxNiwyMTIxNywyMTIxOCwyMTIxOSwyMTIyMSwyMTIyMiwyMTIyMywyMTIyNCwyMTIyNSwyMTIyNiwyMTIyNywyMTIyOCwyMTIyOSwyMTIzMCwyMTIzMSwy'@; put 'MTIzMywyMTIzNCwyMTIzNSwyMTIzNiwyMTIzNywyMTIzOCwyMTIzOSwyMTI0MCwyMTI0MywyMTI0NCwyMTI0NSwyMTI0OSwyMTI1MCwyMTI1MSwyMTI1MiwyMTI1NSwyMTI1NywyMTI1OCwyMTI1OSwyMTI2MCwyMTI2MiwyMTI2NSwyMTI2NiwyMTI2NywyMTI2OCwyMTI3MiwyMTI3NSwyMTI3'@; put 'NiwyMTI3OCwyMTI3OSwyMTI4MiwyMTI4NCwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NSwyMTI5NiwyMTI5NywyMTI5OCwyMTI5OSwyMTMwMCwyMTMwMSwyMTMwMiwyMTMwMywyMTMwNCwyMTMwOCwyMTMwOSwyMTMxMiwyMTMxNCwyMTMxNiwyMTMxOCwy'@; put 'MTMyMywyMTMyNCwyMTMyNSwyMTMyOCwyMTMzMiwyMTMzNiwyMTMzNywyMTMzOSwyMTM0MSwyMTM0OSwyMTM1MiwyMTM1NCwyMTM1NiwyMTM1NywyMTM2MiwyMTM2NiwyMTM2OSwyMTM3MSwyMTM3MiwyMTM3MywyMTM3NCwyMTM3NiwyMTM3NywyMTM3OSwyMTM4MywyMTM4NCwyMTM4NiwyMTM5'@; put 'MCwyMTM5MSwyMTM5MiwyMTM5MywyMTM5NCwyMTM5NSwyMTM5NiwyMTM5OCwyMTM5OSwyMTQwMSwyMTQwMywyMTQwNCwyMTQwNiwyMTQwOCwyMTQwOSwyMTQxMiwyMTQxNSwyMTQxOCwyMTQxOSwyMTQyMCwyMTQyMSwyMTQyMywyMTQyNCwyMTQyNSwyMTQyNiwyMTQyNywyMTQyOCwyMTQyOSwy'@; put 'MTQzMSwyMTQzMiwyMTQzMywyMTQzNCwyMTQzNiwyMTQzNywyMTQzOCwyMTQ0MCwyMTQ0MywyMTQ0NCwyMTQ0NSwyMTQ0NiwyMTQ0NywyMTQ1NCwyMTQ1NSwyMTQ1NiwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OCwyMTQ2OSwyMTQ3MCwyMTQ3MywyMTQ3NCwyMTQ3OSwyMTQ5MiwyMTQ5'@; put 'OCwyMTUwMiwyMTUwMywyMTUwNCwyMTUwNiwyMTUwOSwyMTUxMSwyMTUxNSwyMTUyNCwyMTUyOCwyMTUyOSwyMTUzMCwyMTUzMiwyMTUzOCwyMTU0MCwyMTU0MSwyMTU0NiwyMTU1MiwyMTU1NSwyMTU1OCwyMTU1OSwyMTU2MiwyMTU2NSwyMTU2NywyMTU2OSwyMTU3MCwyMTU3MiwyMTU3Mywy'@; put 'MTU3NSwyMTU3NywyMTU4MCwyMTU4MSwyMTU4MiwyMTU4MywyMTU4NSwyMTU5NCwyMTU5NywyMTU5OCwyMTU5OSwyMTYwMCwyMTYwMSwyMTYwMywyMTYwNSwyMTYwNywyMTYwOSwyMTYxMCwyMTYxMSwyMTYxMiwyMTYxMywyMTYxNCwyMTYxNSwyMTYxNiwyMTYyMCwyMTYyNSwyMTYyNiwyMTYz'@; put 'MCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTYzOSwyMTY0MCwyMTY0MSwyMTY0MiwyMTY0NSwyMTY0OSwyMTY1MSwyMTY1NSwyMTY1NiwyMTY2MCwyMTY2MiwyMTY2MywyMTY2NCwyMTY2NSwyMTY2NiwyMTY2OSwyMTY3OCwyMTY4MCwyMTY4MiwyMTY4NSwyMTY4NiwyMTY4NywyMTY4OSwy'@; put 'MTY5MCwyMTY5MiwyMTY5NCwyMTY5OSwyMTcwMSwyMTcwNiwyMTcwNywyMTcxOCwyMTcyMCwyMTcyMywyMTcyOCwyMTcyOSwyMTczMCwyMTczMSwyMTczMiwyMTczOSwyMTc0MCwyMTc0MywyMTc0NCwyMTc0NSwyMTc0OCwyMTc0OSwyMTc1MCwyMTc1MSwyMTc1MiwyMTc1MywyMTc1NSwyMTc1'@; put 'OCwyMTc2MCwyMTc2MiwyMTc2MywyMTc2NCwyMTc2NSwyMTc2OCwyMTc3MCwyMTc3MSwyMTc3MiwyMTc3MywyMTc3NCwyMTc3OCwyMTc3OSwyMTc4MSwyMTc4MiwyMTc4MywyMTc4NCwyMTc4NSwyMTc4NiwyMTc4OCwyMTc4OSwyMTc5MCwyMTc5MSwyMTc5MywyMTc5NywyMTc5OCwyMTgwMCwy'@; put 'MTgwMSwyMTgwMywyMTgwNSwyMTgxMCwyMTgxMiwyMTgxMywyMTgxNCwyMTgxNiwyMTgxNywyMTgxOCwyMTgxOSwyMTgyMSwyMTgyNCwyMTgyNiwyMTgyOSwyMTgzMSwyMTgzMiwyMTgzNSwyMTgzNiwyMTgzNywyMTgzOCwyMTgzOSwyMTg0MSwyMTg0MiwyMTg0MywyMTg0NCwyMTg0NywyMTg0'@; put 'OCwyMTg0OSwyMTg1MCwyMTg1MSwyMTg1MywyMTg1NCwyMTg1NSwyMTg1NiwyMTg1OCwyMTg1OSwyMTg2NCwyMTg2NSwyMTg2NywyMTg3MSwyMTg3MiwyMTg3MywyMTg3NCwyMTg3NSwyMTg3NiwyMTg4MSwyMTg4MiwyMTg4NSwyMTg4NywyMTg5MywyMTg5NCwyMTkwMCwyMTkwMSwyMTkwMiwy'@; put 'MTkwNCwyMTkwNiwyMTkwNywyMTkwOSwyMTkxMCwyMTkxMSwyMTkxNCwyMTkxNSwyMTkxOCwyMTkyMCwyMTkyMSwyMTkyMiwyMTkyMywyMTkyNCwyMTkyNSwyMTkyNiwyMTkyOCwyMTkyOSwyMTkzMCwyMTkzMSwyMTkzMiwyMTkzMywyMTkzNCwyMTkzNSwyMTkzNiwyMTkzOCwyMTk0MCwyMTk0'@; put 'MiwyMTk0NCwyMTk0NiwyMTk0OCwyMTk1MSwyMTk1MiwyMTk1MywyMTk1NCwyMTk1NSwyMTk1OCwyMTk1OSwyMTk2MCwyMTk2MiwyMTk2MywyMTk2NiwyMTk2NywyMTk2OCwyMTk3MywyMTk3NSwyMTk3NiwyMTk3NywyMTk3OCwyMTk3OSwyMTk4MiwyMTk4NCwyMTk4NiwyMTk5MSwyMTk5Mywy'@; put 'MTk5NywyMTk5OCwyMmUzLDIyMDAxLDIyMDA0LDIyMDA2LDIyMDA4LDIyMDA5LDIyMDEwLDIyMDExLDIyMDEyLDIyMDE1LDIyMDE4LDIyMDE5LDIyMDIwLDIyMDIxLDIyMDIyLDIyMDIzLDIyMDI2LDIyMDI3LDIyMDI5LDIyMDMyLDIyMDMzLDIyMDM0LDIyMDM1LDIyMDM2LDIyMDM3LDIyMDM4'@; put 'LDIyMDM5LDIyMDQxLDIyMDQyLDIyMDQ0LDIyMDQ1LDIyMDQ4LDIyMDQ5LDIyMDUwLDIyMDUzLDIyMDU0LDIyMDU2LDIyMDU3LDIyMDU4LDIyMDU5LDIyMDYyLDIyMDYzLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDcyLDIyMDc0LDIyMDc2LDIyMDc3LDIyMDc4LDIyMDgwLDIyMDgxLDIy'@; put 'MDgyLDIyMDgzLDIyMDg0LDIyMDg1LDIyMDg2LDIyMDg3LDIyMDg4LDIyMDg5LDIyMDkwLDIyMDkxLDIyMDk1LDIyMDk2LDIyMDk3LDIyMDk4LDIyMDk5LDIyMTAxLDIyMTAyLDIyMTA2LDIyMTA3LDIyMTA5LDIyMTEwLDIyMTExLDIyMTEyLDIyMTEzLDIyMTE1LDIyMTE3LDIyMTE4LDIyMTE5'@; put 'LDIyMTI1LDIyMTI2LDIyMTI3LDIyMTI4LDIyMTMwLDIyMTMxLDIyMTMyLDIyMTMzLDIyMTM1LDIyMTM2LDIyMTM3LDIyMTM4LDIyMTQxLDIyMTQyLDIyMTQzLDIyMTQ0LDIyMTQ1LDIyMTQ2LDIyMTQ3LDIyMTQ4LDIyMTUxLDIyMTUyLDIyMTUzLDIyMTU0LDIyMTU1LDIyMTU2LDIyMTU3LDIy'@; put 'MTYwLDIyMTYxLDIyMTYyLDIyMTY0LDIyMTY1LDIyMTY2LDIyMTY3LDIyMTY4LDIyMTY5LDIyMTcwLDIyMTcxLDIyMTcyLDIyMTczLDIyMTc0LDIyMTc1LDIyMTc2LDIyMTc3LDIyMTc4LDIyMTgwLDIyMTgxLDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg2LDIyMTg3LDIyMTg4LDIyMTg5'@; put 'LDIyMTkwLDIyMTkyLDIyMTkzLDIyMTk0LDIyMTk1LDIyMTk2LDIyMTk3LDIyMTk4LDIyMjAwLDIyMjAxLDIyMjAyLDIyMjAzLDIyMjA1LDIyMjA2LDIyMjA3LDIyMjA4LDIyMjA5LDIyMjEwLDIyMjExLDIyMjEyLDIyMjEzLDIyMjE0LDIyMjE1LDIyMjE2LDIyMjE3LDIyMjE5LDIyMjIwLDIy'@; put 'MjIxLDIyMjIyLDIyMjIzLDIyMjI0LDIyMjI1LDIyMjI2LDIyMjI3LDIyMjI5LDIyMjMwLDIyMjMyLDIyMjMzLDIyMjM2LDIyMjQzLDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjQ5LDIyMjUwLDIyMjUyLDIyMjU0LDIyMjU1LDIyMjU4LDIyMjU5LDIyMjYyLDIyMjYzLDIyMjY0LDIyMjY3'@; put 'LDIyMjY4LDIyMjcyLDIyMjczLDIyMjc0LDIyMjc3LDIyMjc5LDIyMjgzLDIyMjg0LDIyMjg1LDIyMjg2LDIyMjg3LDIyMjg4LDIyMjg5LDIyMjkwLDIyMjkxLDIyMjkyLDIyMjkzLDIyMjk0LDIyMjk1LDIyMjk2LDIyMjk3LDIyMjk4LDIyMjk5LDIyMzAxLDIyMzAyLDIyMzA0LDIyMzA1LDIy'@; put 'MzA2LDIyMzA4LDIyMzA5LDIyMzEwLDIyMzExLDIyMzE1LDIyMzIxLDIyMzIyLDIyMzI0LDIyMzI1LDIyMzI2LDIyMzI3LDIyMzI4LDIyMzMyLDIyMzMzLDIyMzM1LDIyMzM3LDIyMzM5LDIyMzQwLDIyMzQxLDIyMzQyLDIyMzQ0LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyMzU1LDIyMzU2LDIyMzU3'@; put 'LDIyMzU4LDIyMzYwLDIyMzYxLDIyMzcwLDIyMzcxLDIyMzczLDIyMzc1LDIyMzgwLDIyMzgyLDIyMzg0LDIyMzg1LDIyMzg2LDIyMzg4LDIyMzg5LDIyMzkyLDIyMzkzLDIyMzk0LDIyMzk3LDIyMzk4LDIyMzk5LDIyNDAwLDIyNDAxLDIyNDA3LDIyNDA4LDIyNDA5LDIyNDEwLDIyNDEzLDIy'@; put 'NDE0LDIyNDE1LDIyNDE2LDIyNDE3LDIyNDIwLDIyNDIxLDIyNDIyLDIyNDIzLDIyNDI0LDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDM3LDIyNDQwLDIyNDQyLDIyNDQ0LDIyNDQ3LDIyNDQ4LDIyNDQ5LDIyNDUxLDIyNDUzLDIyNDU0LDIyNDU1LDIyNDU3LDIyNDU4'@; put 'LDIyNDU5LDIyNDYwLDIyNDYxLDIyNDYyLDIyNDYzLDIyNDY0LDIyNDY1LDIyNDY4LDIyNDY5LDIyNDcwLDIyNDcxLDIyNDcyLDIyNDczLDIyNDc0LDIyNDc2LDIyNDc3LDIyNDgwLDIyNDgxLDIyNDgzLDIyNDg2LDIyNDg3LDIyNDkxLDIyNDkyLDIyNDk0LDIyNDk3LDIyNDk4LDIyNDk5LDIy'@; put 'NTAxLDIyNTAyLDIyNTAzLDIyNTA0LDIyNTA1LDIyNTA2LDIyNTA3LDIyNTA4LDIyNTEwLDIyNTEyLDIyNTEzLDIyNTE0LDIyNTE1LDIyNTE3LDIyNTE4LDIyNTE5LDIyNTIzLDIyNTI0LDIyNTI2LDIyNTI3LDIyNTI5LDIyNTMxLDIyNTMyLDIyNTMzLDIyNTM2LDIyNTM3LDIyNTM4LDIyNTQw'@; put 'LDIyNTQyLDIyNTQzLDIyNTQ0LDIyNTQ2LDIyNTQ3LDIyNTQ4LDIyNTUwLDIyNTUxLDIyNTUyLDIyNTU0LDIyNTU1LDIyNTU2LDIyNTU3LDIyNTU5LDIyNTYyLDIyNTYzLDIyNTY1LDIyNTY2LDIyNTY3LDIyNTY4LDIyNTY5LDIyNTcxLDIyNTcyLDIyNTczLDIyNTc0LDIyNTc1LDIyNTc3LDIy'@; put 'NTc4LDIyNTc5LDIyNTgwLDIyNTgyLDIyNTgzLDIyNTg0LDIyNTg1LDIyNTg2LDIyNTg3LDIyNTg4LDIyNTg5LDIyNTkwLDIyNTkxLDIyNTkyLDIyNTkzLDIyNTk0LDIyNTk1LDIyNTk3LDIyNTk4LDIyNTk5LDIyNjAwLDIyNjAxLDIyNjAyLDIyNjAzLDIyNjA2LDIyNjA3LDIyNjA4LDIyNjEw'@; put 'LDIyNjExLDIyNjEzLDIyNjE0LDIyNjE1LDIyNjE3LDIyNjE4LDIyNjE5LDIyNjIwLDIyNjIxLDIyNjIzLDIyNjI0LDIyNjI1LDIyNjI2LDIyNjI3LDIyNjI4LDIyNjMwLDIyNjMxLDIyNjMyLDIyNjMzLDIyNjM0LDIyNjM3LDIyNjM4LDIyNjM5LDIyNjQwLDIyNjQxLDIyNjQyLDIyNjQzLDIy'@; put 'NjQ0LDIyNjQ1LDIyNjQ2LDIyNjQ3LDIyNjQ4LDIyNjQ5LDIyNjUwLDIyNjUxLDIyNjUyLDIyNjUzLDIyNjU1LDIyNjU4LDIyNjYwLDIyNjYyLDIyNjYzLDIyNjY0LDIyNjY2LDIyNjY3LDIyNjY4LDIyNjY5LDIyNjcwLDIyNjcxLDIyNjcyLDIyNjczLDIyNjc2LDIyNjc3LDIyNjc4LDIyNjc5'@; put 'LDIyNjgwLDIyNjgzLDIyNjg0LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjkxLDIyNjkyLDIyNjkzLDIyNjk0LDIyNjk1LDIyNjk4LDIyNjk5LDIyNzAwLDIyNzAxLDIyNzAyLDIyNzAzLDIyNzA0LDIyNzA1LDIyNzA2LDIyNzA3LDIyNzA4LDIyNzA5LDIyNzEwLDIyNzExLDIyNzEyLDIy'@; put 'NzEzLDIyNzE0LDIyNzE1LDIyNzE3LDIyNzE4LDIyNzE5LDIyNzIwLDIyNzIyLDIyNzIzLDIyNzI0LDIyNzI2LDIyNzI3LDIyNzI4LDIyNzI5LDIyNzMwLDIyNzMxLDIyNzMyLDIyNzMzLDIyNzM0LDIyNzM1LDIyNzM2LDIyNzM4LDIyNzM5LDIyNzQwLDIyNzQyLDIyNzQzLDIyNzQ0LDIyNzQ1'@; put 'LDIyNzQ2LDIyNzQ3LDIyNzQ4LDIyNzQ5LDIyNzUwLDIyNzUxLDIyNzUyLDIyNzUzLDIyNzU0LDIyNzU1LDIyNzU3LDIyNzU4LDIyNzU5LDIyNzYwLDIyNzYxLDIyNzYyLDIyNzY1LDIyNzY3LDIyNzY5LDIyNzcwLDIyNzcyLDIyNzczLDIyNzc1LDIyNzc2LDIyNzc4LDIyNzc5LDIyNzgwLDIy'@; put 'NzgxLDIyNzgyLDIyNzgzLDIyNzg0LDIyNzg1LDIyNzg3LDIyNzg5LDIyNzkwLDIyNzkyLDIyNzkzLDIyNzk0LDIyNzk1LDIyNzk2LDIyNzk4LDIyODAwLDIyODAxLDIyODAyLDIyODAzLDIyODA3LDIyODA4LDIyODExLDIyODEzLDIyODE0LDIyODE2LDIyODE3LDIyODE4LDIyODE5LDIyODIy'@; put 'LDIyODI0LDIyODI4LDIyODMyLDIyODM0LDIyODM1LDIyODM3LDIyODM4LDIyODQzLDIyODQ1LDIyODQ2LDIyODQ3LDIyODQ4LDIyODUxLDIyODUzLDIyODU0LDIyODU4LDIyODYwLDIyODYxLDIyODY0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc2LDIyODc3LDIyODc4LDIyODc5LDIy'@; put 'ODgxLDIyODgzLDIyODg0LDIyODg2LDIyODg3LDIyODg4LDIyODg5LDIyODkwLDIyODkxLDIyODkyLDIyODkzLDIyODk0LDIyODk1LDIyODk2LDIyODk3LDIyODk4LDIyOTAxLDIyOTAzLDIyOTA2LDIyOTA3LDIyOTA4LDIyOTEwLDIyOTExLDIyOTEyLDIyOTE3LDIyOTIxLDIyOTIzLDIyOTI0'@; put 'LDIyOTI2LDIyOTI3LDIyOTI4LDIyOTI5LDIyOTMyLDIyOTMzLDIyOTM2LDIyOTM4LDIyOTM5LDIyOTQwLDIyOTQxLDIyOTQzLDIyOTQ0LDIyOTQ1LDIyOTQ2LDIyOTUwLDIyOTUxLDIyOTU2LDIyOTU3LDIyOTYwLDIyOTYxLDIyOTYzLDIyOTY0LDIyOTY1LDIyOTY2LDIyOTY3LDIyOTY4LDIy'@; put 'OTcwLDIyOTcyLDIyOTczLDIyOTc1LDIyOTc2LDIyOTc3LDIyOTc4LDIyOTc5LDIyOTgwLDIyOTgxLDIyOTgzLDIyOTg0LDIyOTg1LDIyOTg4LDIyOTg5LDIyOTkwLDIyOTkxLDIyOTk3LDIyOTk4LDIzMDAxLDIzMDAzLDIzMDA2LDIzMDA3LDIzMDA4LDIzMDA5LDIzMDEwLDIzMDEyLDIzMDE0'@; put 'LDIzMDE1LDIzMDE3LDIzMDE4LDIzMDE5LDIzMDIxLDIzMDIyLDIzMDIzLDIzMDI0LDIzMDI1LDIzMDI2LDIzMDI3LDIzMDI4LDIzMDI5LDIzMDMwLDIzMDMxLDIzMDMyLDIzMDM0LDIzMDM2LDIzMDM3LDIzMDM4LDIzMDQwLDIzMDQyLDIzMDUwLDIzMDUxLDIzMDUzLDIzMDU0LDIzMDU1LDIz'@; put 'MDU2LDIzMDU4LDIzMDYwLDIzMDYxLDIzMDYyLDIzMDYzLDIzMDY1LDIzMDY2LDIzMDY3LDIzMDY5LDIzMDcwLDIzMDczLDIzMDc0LDIzMDc2LDIzMDc4LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDgzLDIzMDg0LDIzMDg1LDIzMDg2LDIzMDg3LDIzMDg4LDIzMDkxLDIzMDkzLDIzMDk1LDIzMDk2'@; put 'LDIzMDk3LDIzMDk4LDIzMDk5LDIzMTAxLDIzMTAyLDIzMTAzLDIzMTA1LDIzMTA2LDIzMTA3LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE1LDIzMTE2LDIzMTE3LDIzMTE4LDIzMTE5LDIzMTIwLDIzMTIxLDIzMTIyLDIzMTIzLDIzMTI0LDIzMTI2LDIzMTI3LDIzMTI4LDIzMTI5LDIz'@; put 'MTMxLDIzMTMyLDIzMTMzLDIzMTM0LDIzMTM1LDIzMTM2LDIzMTM3LDIzMTM5LDIzMTQwLDIzMTQxLDIzMTQyLDIzMTQ0LDIzMTQ1LDIzMTQ3LDIzMTQ4LDIzMTQ5LDIzMTUwLDIzMTUxLDIzMTUyLDIzMTUzLDIzMTU0LDIzMTU1LDIzMTYwLDIzMTYxLDIzMTYzLDIzMTY0LDIzMTY1LDIzMTY2'@; put 'LDIzMTY4LDIzMTY5LDIzMTcwLDIzMTcxLDIzMTcyLDIzMTczLDIzMTc0LDIzMTc1LDIzMTc2LDIzMTc3LDIzMTc4LDIzMTc5LDIzMTgwLDIzMTgxLDIzMTgyLDIzMTgzLDIzMTg0LDIzMTg1LDIzMTg3LDIzMTg4LDIzMTg5LDIzMTkwLDIzMTkxLDIzMTkyLDIzMTkzLDIzMTk2LDIzMTk3LDIz'@; put 'MTk4LDIzMTk5LDIzMjAwLDIzMjAxLDIzMjAyLDIzMjAzLDIzMjA0LDIzMjA1LDIzMjA2LDIzMjA3LDIzMjA4LDIzMjA5LDIzMjExLDIzMjEyLDIzMjEzLDIzMjE0LDIzMjE1LDIzMjE2LDIzMjE3LDIzMjIwLDIzMjIyLDIzMjIzLDIzMjI1LDIzMjI2LDIzMjI3LDIzMjI4LDIzMjI5LDIzMjMx'@; put 'LDIzMjMyLDIzMjM1LDIzMjM2LDIzMjM3LDIzMjM4LDIzMjM5LDIzMjQwLDIzMjQyLDIzMjQzLDIzMjQ1LDIzMjQ2LDIzMjQ3LDIzMjQ4LDIzMjQ5LDIzMjUxLDIzMjUzLDIzMjU1LDIzMjU3LDIzMjU4LDIzMjU5LDIzMjYxLDIzMjYyLDIzMjYzLDIzMjY2LDIzMjY4LDIzMjY5LDIzMjcxLDIz'@; put 'MjcyLDIzMjc0LDIzMjc2LDIzMjc3LDIzMjc4LDIzMjc5LDIzMjgwLDIzMjgyLDIzMjgzLDIzMjg0LDIzMjg1LDIzMjg2LDIzMjg3LDIzMjg4LDIzMjg5LDIzMjkwLDIzMjkxLDIzMjkyLDIzMjkzLDIzMjk0LDIzMjk1LDIzMjk2LDIzMjk3LDIzMjk4LDIzMjk5LDIzMzAwLDIzMzAxLDIzMzAy'@; put 'LDIzMzAzLDIzMzA0LDIzMzA2LDIzMzA3LDIzMzA4LDIzMzA5LDIzMzEwLDIzMzExLDIzMzEyLDIzMzEzLDIzMzE0LDIzMzE1LDIzMzE2LDIzMzE3LDIzMzIwLDIzMzIxLDIzMzIyLDIzMzIzLDIzMzI0LDIzMzI1LDIzMzI2LDIzMzI3LDIzMzI4LDIzMzI5LDIzMzMwLDIzMzMxLDIzMzMyLDIz'@; put 'MzMzLDIzMzM0LDIzMzM1LDIzMzM2LDIzMzM3LDIzMzM4LDIzMzM5LDIzMzQwLDIzMzQxLDIzMzQyLDIzMzQzLDIzMzQ0LDIzMzQ1LDIzMzQ3LDIzMzQ5LDIzMzUwLDIzMzUyLDIzMzUzLDIzMzU0LDIzMzU1LDIzMzU2LDIzMzU3LDIzMzU4LDIzMzU5LDIzMzYxLDIzMzYyLDIzMzYzLDIzMzY0'@; put 'LDIzMzY1LDIzMzY2LDIzMzY3LDIzMzY4LDIzMzY5LDIzMzcwLDIzMzcxLDIzMzcyLDIzMzczLDIzMzc0LDIzMzc1LDIzMzc4LDIzMzgyLDIzMzkwLDIzMzkyLDIzMzkzLDIzMzk5LDIzNDAwLDIzNDAzLDIzNDA1LDIzNDA2LDIzNDA3LDIzNDEwLDIzNDEyLDIzNDE0LDIzNDE1LDIzNDE2LDIz'@; put 'NDE3LDIzNDE5LDIzNDIwLDIzNDIyLDIzNDIzLDIzNDI2LDIzNDMwLDIzNDM0LDIzNDM3LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQyLDIzNDQ0LDIzNDQ2LDIzNDU1LDIzNDYzLDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcwLDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDgz'@; put 'LDIzNDg0LDIzNDg4LDIzNDg5LDIzNDkxLDIzNDk2LDIzNDk3LDIzNDk4LDIzNDk5LDIzNTAxLDIzNTAyLDIzNTAzLDIzNTA1LDIzNTA4LDIzNTA5LDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTE1LDIzNTE2LDIzNTIwLDIzNTIyLDIzNTIzLDIzNTI2LDIzNTI3LDIzNTI5LDIz'@; put 'NTMwLDIzNTMxLDIzNTMyLDIzNTMzLDIzNTM1LDIzNTM3LDIzNTM4LDIzNTM5LDIzNTQwLDIzNTQxLDIzNTQyLDIzNTQzLDIzNTQ5LDIzNTUwLDIzNTUyLDIzNTU0LDIzNTU1LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTYzLDIzNTY0LDIzNTY1LDIzNTY2LDIzNTY4LDIzNTcwLDIzNTcxLDIzNTc1'@; put 'LDIzNTc3LDIzNTc5LDIzNTgyLDIzNTgzLDIzNTg0LDIzNTg1LDIzNTg3LDIzNTkwLDIzNTkyLDIzNTkzLDIzNTk0LDIzNTk1LDIzNTk3LDIzNTk4LDIzNTk5LDIzNjAwLDIzNjAyLDIzNjAzLDIzNjA1LDIzNjA2LDIzNjA3LDIzNjE5LDIzNjIwLDIzNjIyLDIzNjIzLDIzNjI4LDIzNjI5LDIz'@; put 'NjM0LDIzNjM1LDIzNjM2LDIzNjM4LDIzNjM5LDIzNjQwLDIzNjQyLDIzNjQzLDIzNjQ0LDIzNjQ1LDIzNjQ3LDIzNjUwLDIzNjUyLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjU4LDIzNjU5LDIzNjYwLDIzNjYxLDIzNjY0LDIzNjY2LDIzNjY3LDIzNjY4LDIzNjY5LDIzNjcwLDIzNjcxLDIzNjcy'@; put 'LDIzNjc1LDIzNjc2LDIzNjc3LDIzNjc4LDIzNjgwLDIzNjgzLDIzNjg0LDIzNjg1LDIzNjg2LDIzNjg3LDIzNjg5LDIzNjkwLDIzNjkxLDIzNjk0LDIzNjk1LDIzNjk4LDIzNjk5LDIzNzAxLDIzNzA5LDIzNzEwLDIzNzExLDIzNzEyLDIzNzEzLDIzNzE2LDIzNzE3LDIzNzE4LDIzNzE5LDIz'@; put 'NzIwLDIzNzIyLDIzNzI2LDIzNzI3LDIzNzI4LDIzNzMwLDIzNzMyLDIzNzM0LDIzNzM3LDIzNzM4LDIzNzM5LDIzNzQwLDIzNzQyLDIzNzQ0LDIzNzQ2LDIzNzQ3LDIzNzQ5LDIzNzUwLDIzNzUxLDIzNzUyLDIzNzUzLDIzNzU0LDIzNzU2LDIzNzU3LDIzNzU4LDIzNzU5LDIzNzYwLDIzNzYx'@; put 'LDIzNzYzLDIzNzY0LDIzNzY1LDIzNzY2LDIzNzY3LDIzNzY4LDIzNzcwLDIzNzcxLDIzNzcyLDIzNzczLDIzNzc0LDIzNzc1LDIzNzc2LDIzNzc4LDIzNzc5LDIzNzgzLDIzNzg1LDIzNzg3LDIzNzg4LDIzNzkwLDIzNzkxLDIzNzkzLDIzNzk0LDIzNzk1LDIzNzk2LDIzNzk3LDIzNzk4LDIz'@; put 'Nzk5LDIzODAwLDIzODAxLDIzODAyLDIzODA0LDIzODA1LDIzODA2LDIzODA3LDIzODA4LDIzODA5LDIzODEyLDIzODEzLDIzODE2LDIzODE3LDIzODE4LDIzODE5LDIzODIwLDIzODIxLDIzODIzLDIzODI0LDIzODI1LDIzODI2LDIzODI3LDIzODI5LDIzODMxLDIzODMyLDIzODMzLDIzODM0'@; put 'LDIzODM2LDIzODM3LDIzODM5LDIzODQwLDIzODQxLDIzODQyLDIzODQzLDIzODQ1LDIzODQ4LDIzODUwLDIzODUxLDIzODUyLDIzODU1LDIzODU2LDIzODU3LDIzODU4LDIzODU5LDIzODYxLDIzODYyLDIzODYzLDIzODY0LDIzODY1LDIzODY2LDIzODY3LDIzODY4LDIzODcxLDIzODcyLDIz'@; put 'ODczLDIzODc0LDIzODc1LDIzODc2LDIzODc3LDIzODc4LDIzODgwLDIzODgxLDIzODg1LDIzODg2LDIzODg3LDIzODg4LDIzODg5LDIzODkwLDIzODkxLDIzODkyLDIzODkzLDIzODk0LDIzODk1LDIzODk3LDIzODk4LDIzOTAwLDIzOTAyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA3'@; put 'LDIzOTA4LDIzOTA5LDIzOTEwLDIzOTExLDIzOTEyLDIzOTE0LDIzOTE3LDIzOTE4LDIzOTIwLDIzOTIxLDIzOTIyLDIzOTIzLDIzOTI1LDIzOTI2LDIzOTI3LDIzOTI4LDIzOTI5LDIzOTMwLDIzOTMxLDIzOTMyLDIzOTMzLDIzOTM0LDIzOTM1LDIzOTM2LDIzOTM3LDIzOTM5LDIzOTQwLDIz'@; put 'OTQxLDIzOTQyLDIzOTQzLDIzOTQ0LDIzOTQ1LDIzOTQ2LDIzOTQ3LDIzOTQ4LDIzOTQ5LDIzOTUwLDIzOTUxLDIzOTUyLDIzOTUzLDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTU4LDIzOTU5LDIzOTYwLDIzOTYyLDIzOTYzLDIzOTY0LDIzOTY2LDIzOTY3LDIzOTY4LDIzOTY5LDIzOTcw'@; put 'LDIzOTcxLDIzOTcyLDIzOTczLDIzOTc0LDIzOTc1LDIzOTc2LDIzOTc3LDIzOTc4LDIzOTc5LDIzOTgwLDIzOTgxLDIzOTgyLDIzOTgzLDIzOTg0LDIzOTg1LDIzOTg2LDIzOTg3LDIzOTg4LDIzOTg5LDIzOTkwLDIzOTkyLDIzOTkzLDIzOTk0LDIzOTk1LDIzOTk2LDIzOTk3LDIzOTk4LDIz'@; put 'OTk5LDI0ZTMsMjQwMDEsMjQwMDIsMjQwMDMsMjQwMDQsMjQwMDYsMjQwMDcsMjQwMDgsMjQwMDksMjQwMTAsMjQwMTEsMjQwMTIsMjQwMTQsMjQwMTUsMjQwMTYsMjQwMTcsMjQwMTgsMjQwMTksMjQwMjAsMjQwMjEsMjQwMjIsMjQwMjMsMjQwMjQsMjQwMjUsMjQwMjYsMjQwMjgsMjQwMzEs'@; put 'MjQwMzIsMjQwMzUsMjQwMzYsMjQwNDIsMjQwNDQsMjQwNDUsMjQwNDgsMjQwNTMsMjQwNTQsMjQwNTYsMjQwNTcsMjQwNTgsMjQwNTksMjQwNjAsMjQwNjMsMjQwNjQsMjQwNjgsMjQwNzEsMjQwNzMsMjQwNzQsMjQwNzUsMjQwNzcsMjQwNzgsMjQwODIsMjQwODMsMjQwODcsMjQwOTQsMjQw'@; put 'OTUsMjQwOTYsMjQwOTcsMjQwOTgsMjQwOTksMjQxMDAsMjQxMDEsMjQxMDQsMjQxMDUsMjQxMDYsMjQxMDcsMjQxMDgsMjQxMTEsMjQxMTIsMjQxMTQsMjQxMTUsMjQxMTYsMjQxMTcsMjQxMTgsMjQxMjEsMjQxMjIsMjQxMjYsMjQxMjcsMjQxMjgsMjQxMjksMjQxMzEsMjQxMzQsMjQxMzUs'@; put 'MjQxMzYsMjQxMzcsMjQxMzgsMjQxMzksMjQxNDEsMjQxNDIsMjQxNDMsMjQxNDQsMjQxNDUsMjQxNDYsMjQxNDcsMjQxNTAsMjQxNTEsMjQxNTIsMjQxNTMsMjQxNTQsMjQxNTYsMjQxNTcsMjQxNTksMjQxNjAsMjQxNjMsMjQxNjQsMjQxNjUsMjQxNjYsMjQxNjcsMjQxNjgsMjQxNjksMjQx'@; put 'NzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzUsMjQxNzYsMjQxNzcsMjQxODEsMjQxODMsMjQxODUsMjQxOTAsMjQxOTMsMjQxOTQsMjQxOTUsMjQxOTcsMjQyMDAsMjQyMDEsMjQyMDQsMjQyMDUsMjQyMDYsMjQyMTAsMjQyMTYsMjQyMTksMjQyMjEsMjQyMjUsMjQyMjYsMjQyMjcs'@; put 'MjQyMjgsMjQyMzIsMjQyMzMsMjQyMzQsMjQyMzUsMjQyMzYsMjQyMzgsMjQyMzksMjQyNDAsMjQyNDEsMjQyNDIsMjQyNDQsMjQyNTAsMjQyNTEsMjQyNTIsMjQyNTMsMjQyNTUsMjQyNTYsMjQyNTcsMjQyNTgsMjQyNTksMjQyNjAsMjQyNjEsMjQyNjIsMjQyNjMsMjQyNjQsMjQyNjcsMjQy'@; put 'NjgsMjQyNjksMjQyNzAsMjQyNzEsMjQyNzIsMjQyNzYsMjQyNzcsMjQyNzksMjQyODAsMjQyODEsMjQyODIsMjQyODQsMjQyODUsMjQyODYsMjQyODcsMjQyODgsMjQyODksMjQyOTAsMjQyOTEsMjQyOTIsMjQyOTMsMjQyOTQsMjQyOTUsMjQyOTcsMjQyOTksMjQzMDAsMjQzMDEsMjQzMDIs'@; put 'MjQzMDMsMjQzMDQsMjQzMDUsMjQzMDYsMjQzMDcsMjQzMDksMjQzMTIsMjQzMTMsMjQzMTUsMjQzMTYsMjQzMTcsMjQzMjUsMjQzMjYsMjQzMjcsMjQzMjksMjQzMzIsMjQzMzMsMjQzMzQsMjQzMzYsMjQzMzgsMjQzNDAsMjQzNDIsMjQzNDUsMjQzNDYsMjQzNDgsMjQzNDksMjQzNTAsMjQz'@; put 'NTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzAsMjQzNzEsMjQzNzIsMjQzNzMsMjQzNzQsMjQzNzUsMjQzNzYsMjQzNzksMjQzODEsMjQzODIsMjQzODMsMjQzODUsMjQzODYsMjQzODcsMjQzODgsMjQzODksMjQzOTAsMjQzOTEsMjQzOTIs'@; put 'MjQzOTMsMjQzOTQsMjQzOTUsMjQzOTYsMjQzOTcsMjQzOTgsMjQzOTksMjQ0MDEsMjQ0MDQsMjQ0MDksMjQ0MTAsMjQ0MTEsMjQ0MTIsMjQ0MTQsMjQ0MTUsMjQ0MTYsMjQ0MTksMjQ0MjEsMjQ0MjMsMjQ0MjQsMjQ0MjcsMjQ0MzAsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0MzgsMjQ0'@; put 'NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NDcsMjQ0NTEsMjQ0NTQsMjQ0NjEsMjQ0NjIsMjQ0NjMsMjQ0NjUsMjQ0NjcsMjQ0NjgsMjQ0NzAsMjQ0NzQsMjQ0NzUsMjQ0NzcsMjQ0NzgsMjQ0NzksMjQ0ODAsMjQ0ODIsMjQ0ODMsMjQ0ODQsMjQ0ODUsMjQ0ODYsMjQ0ODcsMjQ0ODksMjQ0OTEs'@; put 'MjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ0OTgsMjQ0OTksMjQ1MDAsMjQ1MDIsMjQ1MDQsMjQ1MDUsMjQ1MDYsMjQ1MDcsMjQ1MTAsMjQ1MTEsMjQ1MTIsMjQ1MTMsMjQ1MTQsMjQ1MTksMjQ1MjAsMjQ1MjIsMjQ1MjMsMjQ1MjYsMjQ1MzEsMjQ1MzIsMjQ1MzMsMjQ1MzgsMjQ1MzksMjQ1'@; put 'NDAsMjQ1NDIsMjQ1NDMsMjQ1NDYsMjQ1NDcsMjQ1NDksMjQ1NTAsMjQ1NTIsMjQ1NTMsMjQ1NTYsMjQ1NTksMjQ1NjAsMjQ1NjIsMjQ1NjMsMjQ1NjQsMjQ1NjYsMjQ1NjcsMjQ1NjksMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODQsMjQ1ODUsMjQ1ODcsMjQ1ODgsMjQ1OTIsMjQ1OTMsMjQ1OTUs'@; put 'MjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDYsMjQ2MDcsMjQ2MTAsMjQ2MTEsMjQ2MTIsMjQ2MjAsMjQ2MjEsMjQ2MjIsMjQ2MjQsMjQ2MjUsMjQ2MjYsMjQ2MjcsMjQ2MjgsMjQ2MzAsMjQ2MzEsMjQ2MzIsMjQ2MzMsMjQ2MzQsMjQ2MzcsMjQ2MzgsMjQ2NDAsMjQ2NDQsMjQ2NDUsMjQ2NDYsMjQ2'@; put 'NDcsMjQ2NDgsMjQ2NDksMjQ2NTAsMjQ2NTIsMjQ2NTQsMjQ2NTUsMjQ2NTcsMjQ2NTksMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjQsMjQ2NjcsMjQ2NjgsMjQ2NzAsMjQ2NzEsMjQ2NzIsMjQ2NzMsMjQ2NzcsMjQ2NzgsMjQ2ODYsMjQ2ODksMjQ2OTAsMjQ2OTIsMjQ2OTMsMjQ2OTUsMjQ3MDIs'@; put 'MjQ3MDQsMjQ3MDUsMjQ3MDYsMjQ3MDksMjQ3MTAsMjQ3MTEsMjQ3MTIsMjQ3MTQsMjQ3MTUsMjQ3MTgsMjQ3MTksMjQ3MjAsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjcsMjQ3MjgsMjQ3MjksMjQ3MzIsMjQ3MzQsMjQ3MzcsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDMsMjQ3NDUsMjQ3NDYsMjQ3'@; put 'NTAsMjQ3NTIsMjQ3NTUsMjQ3NTcsMjQ3NTgsMjQ3NTksMjQ3NjEsMjQ3NjIsMjQ3NjUsMjQ3NjYsMjQ3NjcsMjQ3NjgsMjQ3NjksMjQ3NzAsMjQ3NzEsMjQ3NzIsMjQ3NzUsMjQ3NzYsMjQ3NzcsMjQ3ODAsMjQ3ODEsMjQ3ODIsMjQ3ODMsMjQ3ODQsMjQ3ODYsMjQ3ODcsMjQ3ODgsMjQ3OTAs'@; put 'MjQ3OTEsMjQ3OTMsMjQ3OTUsMjQ3OTgsMjQ4MDEsMjQ4MDIsMjQ4MDMsMjQ4MDQsMjQ4MDUsMjQ4MTAsMjQ4MTcsMjQ4MTgsMjQ4MjEsMjQ4MjMsMjQ4MjQsMjQ4MjcsMjQ4MjgsMjQ4MjksMjQ4MzAsMjQ4MzEsMjQ4MzQsMjQ4MzUsMjQ4MzYsMjQ4MzcsMjQ4MzksMjQ4NDIsMjQ4NDMsMjQ4'@; put 'NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTYsMjQ4NTcsMjQ4NTksMjQ4NjAsMjQ4NjEsMjQ4NjIsMjQ4NjUsMjQ4NjYsMjQ4NjksMjQ4NzIsMjQ4NzMsMjQ4NzQsMjQ4NzYsMjQ4NzcsMjQ4NzgsMjQ4NzksMjQ4ODAsMjQ4ODEsMjQ4ODIsMjQ4ODMs'@; put 'MjQ4ODQsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODgsMjQ4ODksMjQ4OTAsMjQ4OTEsMjQ4OTIsMjQ4OTMsMjQ4OTQsMjQ4OTYsMjQ4OTcsMjQ4OTgsMjQ4OTksMjQ5MDAsMjQ5MDEsMjQ5MDIsMjQ5MDMsMjQ5MDUsMjQ5MDcsMjQ5MDksMjQ5MTEsMjQ5MTIsMjQ5MTQsMjQ5MTUsMjQ5MTYsMjQ5'@; put 'MTgsMjQ5MTksMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MjMsMjQ5MjQsMjQ5MjYsMjQ5MjcsMjQ5MjgsMjQ5MjksMjQ5MzEsMjQ5MzIsMjQ5MzMsMjQ5MzQsMjQ5MzcsMjQ5MzgsMjQ5MzksMjQ5NDAsMjQ5NDEsMjQ5NDIsMjQ5NDMsMjQ5NDUsMjQ5NDYsMjQ5NDcsMjQ5NDgsMjQ5NTAsMjQ5NTIs'@; put 'MjQ5NTMsMjQ5NTQsMjQ5NTUsMjQ5NTYsMjQ5NTcsMjQ5NTgsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjIsMjQ5NjMsMjQ5NjQsMjQ5NjUsMjQ5NjYsMjQ5NjcsMjQ5NjgsMjQ5NjksMjQ5NzAsMjQ5NzIsMjQ5NzMsMjQ5NzUsMjQ5NzYsMjQ5NzcsMjQ5NzgsMjQ5NzksMjQ5ODEsMjQ5ODIsMjQ5'@; put 'ODMsMjQ5ODQsMjQ5ODUsMjQ5ODYsMjQ5ODcsMjQ5ODgsMjQ5OTAsMjQ5OTEsMjQ5OTIsMjQ5OTMsMjQ5OTQsMjQ5OTUsMjQ5OTYsMjQ5OTcsMjQ5OTgsMjUwMDIsMjUwMDMsMjUwMDUsMjUwMDYsMjUwMDcsMjUwMDgsMjUwMDksMjUwMTAsMjUwMTEsMjUwMTIsMjUwMTMsMjUwMTQsMjUwMTYs'@; put 'MjUwMTcsMjUwMTgsMjUwMTksMjUwMjAsMjUwMjEsMjUwMjMsMjUwMjQsMjUwMjUsMjUwMjcsMjUwMjgsMjUwMjksMjUwMzAsMjUwMzEsMjUwMzMsMjUwMzYsMjUwMzcsMjUwMzgsMjUwMzksMjUwNDAsMjUwNDMsMjUwNDUsMjUwNDYsMjUwNDcsMjUwNDgsMjUwNDksMjUwNTAsMjUwNTEsMjUw'@; put 'NTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTYsMjUwNTcsMjUwNTgsMjUwNTksMjUwNjAsMjUwNjEsMjUwNjMsMjUwNjQsMjUwNjUsMjUwNjYsMjUwNjcsMjUwNjgsMjUwNjksMjUwNzAsMjUwNzEsMjUwNzIsMjUwNzMsMjUwNzQsMjUwNzUsMjUwNzYsMjUwNzgsMjUwNzksMjUwODAsMjUwODEs'@; put 'MjUwODIsMjUwODMsMjUwODQsMjUwODUsMjUwODYsMjUwODgsMjUwODksMjUwOTAsMjUwOTEsMjUwOTIsMjUwOTMsMjUwOTUsMjUwOTcsMjUxMDcsMjUxMDgsMjUxMTMsMjUxMTYsMjUxMTcsMjUxMTgsMjUxMjAsMjUxMjMsMjUxMjYsMjUxMjcsMjUxMjgsMjUxMjksMjUxMzEsMjUxMzMsMjUx'@; put 'MzUsMjUxMzYsMjUxMzcsMjUxMzgsMjUxNDEsMjUxNDIsMjUxNDQsMjUxNDUsMjUxNDYsMjUxNDcsMjUxNDgsMjUxNTQsMjUxNTYsMjUxNTcsMjUxNTgsMjUxNjIsMjUxNjcsMjUxNjgsMjUxNzMsMjUxNzQsMjUxNzUsMjUxNzcsMjUxNzgsMjUxODAsMjUxODEsMjUxODIsMjUxODMsMjUxODQs'@; put 'MjUxODUsMjUxODYsMjUxODgsMjUxODksMjUxOTIsMjUyMDEsMjUyMDIsMjUyMDQsMjUyMDUsMjUyMDcsMjUyMDgsMjUyMTAsMjUyMTEsMjUyMTMsMjUyMTcsMjUyMTgsMjUyMTksMjUyMjEsMjUyMjIsMjUyMjMsMjUyMjQsMjUyMjcsMjUyMjgsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUy'@; put 'MzYsMjUyNDEsMjUyNDQsMjUyNDUsMjUyNDYsMjUyNTEsMjUyNTQsMjUyNTUsMjUyNTcsMjUyNTgsMjUyNjEsMjUyNjIsMjUyNjMsMjUyNjQsMjUyNjYsMjUyNjcsMjUyNjgsMjUyNzAsMjUyNzEsMjUyNzIsMjUyNzQsMjUyNzgsMjUyODAsMjUyODEsMjUyODMsMjUyOTEsMjUyOTUsMjUyOTcs'@; put 'MjUzMDEsMjUzMDksMjUzMTAsMjUzMTIsMjUzMTMsMjUzMTYsMjUzMjIsMjUzMjMsMjUzMjgsMjUzMzAsMjUzMzMsMjUzMzYsMjUzMzcsMjUzMzgsMjUzMzksMjUzNDQsMjUzNDcsMjUzNDgsMjUzNDksMjUzNTAsMjUzNTQsMjUzNTUsMjUzNTYsMjUzNTcsMjUzNTksMjUzNjAsMjUzNjIsMjUz'@; put 'NjMsMjUzNjQsMjUzNjUsMjUzNjcsMjUzNjgsMjUzNjksMjUzNzIsMjUzODIsMjUzODMsMjUzODUsMjUzODgsMjUzODksMjUzOTAsMjUzOTIsMjUzOTMsMjUzOTUsMjUzOTYsMjUzOTcsMjUzOTgsMjUzOTksMjU0MDAsMjU0MDMsMjU0MDQsMjU0MDYsMjU0MDcsMjU0MDgsMjU0MDksMjU0MTIs'@; put 'MjU0MTUsMjU0MTYsMjU0MTgsMjU0MjUsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzAsMjU0MzEsMjU0MzIsMjU0MzMsMjU0MzQsMjU0MzUsMjU0MzYsMjU0MzcsMjU0NDAsMjU0NDQsMjU0NDUsMjU0NDYsMjU0NDgsMjU0NTAsMjU0NTEsMjU0NTIsMjU0NTUsMjU0NTYsMjU0NTgsMjU0NTksMjU0'@; put 'NjAsMjU0NjEsMjU0NjQsMjU0NjUsMjU0NjgsMjU0NjksMjU0NzAsMjU0NzEsMjU0NzMsMjU0NzUsMjU0NzYsMjU0NzcsMjU0NzgsMjU0ODMsMjU0ODUsMjU0ODksMjU0OTEsMjU0OTIsMjU0OTMsMjU0OTUsMjU0OTcsMjU0OTgsMjU0OTksMjU1MDAsMjU1MDEsMjU1MDIsMjU1MDMsMjU1MDUs'@; put 'MjU1MDgsMjU1MTAsMjU1MTUsMjU1MTksMjU1MjEsMjU1MjIsMjU1MjUsMjU1MjYsMjU1MjksMjU1MzEsMjU1MzMsMjU1MzUsMjU1MzYsMjU1MzcsMjU1MzgsMjU1MzksMjU1NDEsMjU1NDMsMjU1NDQsMjU1NDYsMjU1NDcsMjU1NDgsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NTksMjU1'@; put 'NjAsMjU1NjEsMjU1NjIsMjU1NjMsMjU1NjQsMjU1NjUsMjU1NjcsMjU1NzAsMjU1NzIsMjU1NzMsMjU1NzQsMjU1NzUsMjU1NzYsMjU1NzksMjU1ODAsMjU1ODIsMjU1ODMsMjU1ODQsMjU1ODUsMjU1ODcsMjU1ODksMjU1OTEsMjU1OTMsMjU1OTQsMjU1OTUsMjU1OTYsMjU1OTgsMjU2MDMs'@; put 'MjU2MDQsMjU2MDYsMjU2MDcsMjU2MDgsMjU2MDksMjU2MTAsMjU2MTMsMjU2MTQsMjU2MTcsMjU2MTgsMjU2MjEsMjU2MjIsMjU2MjMsMjU2MjQsMjU2MjUsMjU2MjYsMjU2MjksMjU2MzEsMjU2MzQsMjU2MzUsMjU2MzYsMjU2MzcsMjU2MzksMjU2NDAsMjU2NDEsMjU2NDMsMjU2NDYsMjU2'@; put 'NDcsMjU2NDgsMjU2NDksMjU2NTAsMjU2NTEsMjU2NTMsMjU2NTQsMjU2NTUsMjU2NTYsMjU2NTcsMjU2NTksMjU2NjAsMjU2NjIsMjU2NjQsMjU2NjYsMjU2NjcsMjU2NzMsMjU2NzUsMjU2NzYsMjU2NzcsMjU2NzgsMjU2NzksMjU2ODAsMjU2ODEsMjU2ODMsMjU2ODUsMjU2ODYsMjU2ODcs'@; put 'MjU2ODksMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTgsMjU2OTksMjU3MDAsMjU3MDEsMjU3MDIsMjU3MDQsMjU3MDYsMjU3MDcsMjU3MDgsMjU3MTAsMjU3MTEsMjU3MTIsMjU3MTMsMjU3MTQsMjU3MTUsMjU3MTYsMjU3MTcsMjU3MTgsMjU3MTksMjU3'@; put 'MjMsMjU3MjQsMjU3MjUsMjU3MjYsMjU3MjcsMjU3MjgsMjU3MjksMjU3MzEsMjU3MzQsMjU3MzYsMjU3MzcsMjU3MzgsMjU3MzksMjU3NDAsMjU3NDEsMjU3NDIsMjU3NDMsMjU3NDQsMjU3NDcsMjU3NDgsMjU3NTEsMjU3NTIsMjU3NTQsMjU3NTUsMjU3NTYsMjU3NTcsMjU3NTksMjU3NjAs'@; put 'MjU3NjEsMjU3NjIsMjU3NjMsMjU3NjUsMjU3NjYsMjU3NjcsMjU3NjgsMjU3NzAsMjU3NzEsMjU3NzUsMjU3NzcsMjU3NzgsMjU3NzksMjU3ODAsMjU3ODIsMjU3ODUsMjU3ODcsMjU3ODksMjU3OTAsMjU3OTEsMjU3OTMsMjU3OTUsMjU3OTYsMjU3OTgsMjU3OTksMjU4MDAsMjU4MDEsMjU4'@; put 'MDIsMjU4MDMsMjU4MDQsMjU4MDcsMjU4MDksMjU4MTEsMjU4MTIsMjU4MTMsMjU4MTQsMjU4MTcsMjU4MTgsMjU4MTksMjU4MjAsMjU4MjEsMjU4MjMsMjU4MjQsMjU4MjUsMjU4MjcsMjU4MjksMjU4MzEsMjU4MzIsMjU4MzMsMjU4MzQsMjU4MzUsMjU4MzYsMjU4MzcsMjU4MzgsMjU4Mzks'@; put 'MjU4NDAsMjU4NDEsMjU4NDIsMjU4NDMsMjU4NDQsMjU4NDUsMjU4NDYsMjU4NDcsMjU4NDgsMjU4NDksMjU4NTAsMjU4NTEsMjU4NTIsMjU4NTMsMjU4NTQsMjU4NTUsMjU4NTcsMjU4NTgsMjU4NTksMjU4NjAsMjU4NjEsMjU4NjIsMjU4NjMsMjU4NjQsMjU4NjYsMjU4NjcsMjU4NjgsMjU4'@; put 'NjksMjU4NzAsMjU4NzEsMjU4NzIsMjU4NzMsMjU4NzUsMjU4NzYsMjU4NzcsMjU4NzgsMjU4NzksMjU4ODEsMjU4ODIsMjU4ODMsMjU4ODQsMjU4ODUsMjU4ODYsMjU4ODcsMjU4ODgsMjU4ODksMjU4OTAsMjU4OTEsMjU4OTIsMjU4OTQsMjU4OTUsMjU4OTYsMjU4OTcsMjU4OTgsMjU5MDAs'@; put 'MjU5MDEsMjU5MDQsMjU5MDUsMjU5MDYsMjU5MDcsMjU5MTEsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjAsMjU5MjEsMjU5MjIsMjU5MjMsMjU5MjQsMjU5MjYsMjU5MjcsMjU5MzAsMjU5MzEsMjU5MzMsMjU5MzQsMjU5MzYsMjU5MzgsMjU5MzksMjU5NDAsMjU5NDMsMjU5NDQsMjU5NDYsMjU5'@; put 'NDgsMjU5NTEsMjU5NTIsMjU5NTMsMjU5NTYsMjU5NTcsMjU5NTksMjU5NjAsMjU5NjEsMjU5NjIsMjU5NjUsMjU5NjYsMjU5NjcsMjU5NjksMjU5NzEsMjU5NzMsMjU5NzQsMjU5NzYsMjU5NzcsMjU5NzgsMjU5NzksMjU5ODAsMjU5ODEsMjU5ODIsMjU5ODMsMjU5ODQsMjU5ODUsMjU5ODYs'@; put 'MjU5ODcsMjU5ODgsMjU5ODksMjU5OTAsMjU5OTIsMjU5OTMsMjU5OTQsMjU5OTcsMjU5OTgsMjU5OTksMjYwMDIsMjYwMDQsMjYwMDUsMjYwMDYsMjYwMDgsMjYwMTAsMjYwMTMsMjYwMTQsMjYwMTYsMjYwMTgsMjYwMTksMjYwMjIsMjYwMjQsMjYwMjYsMjYwMjgsMjYwMzAsMjYwMzMsMjYw'@; put 'MzQsMjYwMzUsMjYwMzYsMjYwMzcsMjYwMzgsMjYwMzksMjYwNDAsMjYwNDIsMjYwNDMsMjYwNDYsMjYwNDcsMjYwNDgsMjYwNTAsMjYwNTUsMjYwNTYsMjYwNTcsMjYwNTgsMjYwNjEsMjYwNjQsMjYwNjUsMjYwNjcsMjYwNjgsMjYwNjksMjYwNzIsMjYwNzMsMjYwNzQsMjYwNzUsMjYwNzYs'@; put 'MjYwNzcsMjYwNzgsMjYwNzksMjYwODEsMjYwODMsMjYwODQsMjYwOTAsMjYwOTEsMjYwOTgsMjYwOTksMjYxMDAsMjYxMDEsMjYxMDQsMjYxMDUsMjYxMDcsMjYxMDgsMjYxMDksMjYxMTAsMjYxMTEsMjYxMTMsMjYxMTYsMjYxMTcsMjYxMTksMjYxMjAsMjYxMjEsMjYxMjMsMjYxMjUsMjYx'@; put 'MjgsMjYxMjksMjYxMzAsMjYxMzQsMjYxMzUsMjYxMzYsMjYxMzgsMjYxMzksMjYxNDAsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjIsMjYxNjMsMjYxNjcsMjYxNjgsMjYxNjksMjYxNzAsMjYxNzEs'@; put 'MjYxNzMsMjYxNzUsMjYxNzYsMjYxNzgsMjYxODAsMjYxODEsMjYxODIsMjYxODMsMjYxODQsMjYxODUsMjYxODYsMjYxODksMjYxOTAsMjYxOTIsMjYxOTMsMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDUsMjYyMDYsMjYyMDgsMjYyMTAsMjYyMTEsMjYyMTMsMjYyMTUsMjYyMTcsMjYy'@; put 'MTgsMjYyMTksMjYyMjAsMjYyMjEsMjYyMjUsMjYyMjYsMjYyMjcsMjYyMjksMjYyMzIsMjYyMzMsMjYyMzUsMjYyMzYsMjYyMzcsMjYyMzksMjYyNDAsMjYyNDEsMjYyNDMsMjYyNDUsMjYyNDYsMjYyNDgsMjYyNDksMjYyNTAsMjYyNTEsMjYyNTMsMjYyNTQsMjYyNTUsMjYyNTYsMjYyNTgs'@; put 'MjYyNTksMjYyNjAsMjYyNjEsMjYyNjQsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzAsMjYyNzEsMjYyNzIsMjYyNzMsMjYyNzQsMjYyNzUsMjYyNzYsMjYyNzcsMjYyNzgsMjYyODEsMjYyODIsMjYyODMsMjYyODQsMjYyODUsMjYyODcsMjYyODgsMjYyODksMjYyOTAsMjYyOTEsMjYy'@; put 'OTMsMjYyOTQsMjYyOTUsMjYyOTYsMjYyOTgsMjYyOTksMjYzMDAsMjYzMDEsMjYzMDMsMjYzMDQsMjYzMDUsMjYzMDYsMjYzMDcsMjYzMDgsMjYzMDksMjYzMTAsMjYzMTEsMjYzMTIsMjYzMTMsMjYzMTQsMjYzMTUsMjYzMTYsMjYzMTcsMjYzMTgsMjYzMTksMjYzMjAsMjYzMjEsMjYzMjIs'@; put 'MjYzMjMsMjYzMjQsMjYzMjUsMjYzMjYsMjYzMjcsMjYzMjgsMjYzMzAsMjYzMzQsMjYzMzUsMjYzMzYsMjYzMzcsMjYzMzgsMjYzMzksMjYzNDAsMjYzNDEsMjYzNDMsMjYzNDQsMjYzNDYsMjYzNDcsMjYzNDgsMjYzNDksMjYzNTAsMjYzNTEsMjYzNTMsMjYzNTcsMjYzNTgsMjYzNjAsMjYz'@; put 'NjIsMjYzNjMsMjYzNjUsMjYzNjksMjYzNzAsMjYzNzEsMjYzNzIsMjYzNzMsMjYzNzQsMjYzNzUsMjYzODAsMjYzODIsMjYzODMsMjYzODUsMjYzODYsMjYzODcsMjYzOTAsMjYzOTIsMjYzOTMsMjYzOTQsMjYzOTYsMjYzOTgsMjY0MDAsMjY0MDEsMjY0MDIsMjY0MDMsMjY0MDQsMjY0MDUs'@; put 'MjY0MDcsMjY0MDksMjY0MTQsMjY0MTYsMjY0MTgsMjY0MTksMjY0MjIsMjY0MjMsMjY0MjQsMjY0MjUsMjY0MjcsMjY0MjgsMjY0MzAsMjY0MzEsMjY0MzMsMjY0MzYsMjY0MzcsMjY0MzksMjY0NDIsMjY0NDMsMjY0NDUsMjY0NTAsMjY0NTIsMjY0NTMsMjY0NTUsMjY0NTYsMjY0NTcsMjY0'@; put 'NTgsMjY0NTksMjY0NjEsMjY0NjYsMjY0NjcsMjY0NjgsMjY0NzAsMjY0NzEsMjY0NzUsMjY0NzYsMjY0NzgsMjY0ODEsMjY0ODQsMjY0ODYsMjY0ODgsMjY0ODksMjY0OTAsMjY0OTEsMjY0OTMsMjY0OTYsMjY0OTgsMjY0OTksMjY1MDEsMjY1MDIsMjY1MDQsMjY1MDYsMjY1MDgsMjY1MDks'@; put 'MjY1MTAsMjY1MTEsMjY1MTMsMjY1MTQsMjY1MTUsMjY1MTYsMjY1MTgsMjY1MjEsMjY1MjMsMjY1MjcsMjY1MjgsMjY1MjksMjY1MzIsMjY1MzQsMjY1MzcsMjY1NDAsMjY1NDIsMjY1NDUsMjY1NDYsMjY1NDgsMjY1NTMsMjY1NTQsMjY1NTUsMjY1NTYsMjY1NTcsMjY1NTgsMjY1NTksMjY1'@; put 'NjAsMjY1NjIsMjY1NjUsMjY1NjYsMjY1NjcsMjY1NjgsMjY1NjksMjY1NzAsMjY1NzEsMjY1NzIsMjY1NzMsMjY1NzQsMjY1ODEsMjY1ODIsMjY1ODMsMjY1ODcsMjY1OTEsMjY1OTMsMjY1OTUsMjY1OTYsMjY1OTgsMjY1OTksMjY2MDAsMjY2MDIsMjY2MDMsMjY2MDUsMjY2MDYsMjY2MTAs'@; put 'MjY2MTMsMjY2MTQsMjY2MTUsMjY2MTYsMjY2MTcsMjY2MTgsMjY2MTksMjY2MjAsMjY2MjIsMjY2MjUsMjY2MjYsMjY2MjcsMjY2MjgsMjY2MzAsMjY2MzcsMjY2NDAsMjY2NDIsMjY2NDQsMjY2NDUsMjY2NDgsMjY2NDksMjY2NTAsMjY2NTEsMjY2NTIsMjY2NTQsMjY2NTUsMjY2NTYsMjY2'@; put 'NTgsMjY2NTksMjY2NjAsMjY2NjEsMjY2NjIsMjY2NjMsMjY2NjQsMjY2NjcsMjY2NjgsMjY2NjksMjY2NzAsMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzYsMjY2NzcsMjY2NzgsMjY2ODIsMjY2ODMsMjY2ODcsMjY2OTUsMjY2OTksMjY3MDEsMjY3MDMsMjY3MDYsMjY3MTAsMjY3MTEsMjY3MTIs'@; put 'MjY3MTMsMjY3MTQsMjY3MTUsMjY3MTYsMjY3MTcsMjY3MTgsMjY3MTksMjY3MzAsMjY3MzIsMjY3MzMsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3MzksMjY3NDEsMjY3NDQsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NDksMjY3NTAsMjY3NTEsMjY3NTIsMjY3NTQsMjY3'@; put 'NTYsMjY3NTksMjY3NjAsMjY3NjEsMjY3NjIsMjY3NjMsMjY3NjQsMjY3NjUsMjY3NjYsMjY3NjgsMjY3NjksMjY3NzAsMjY3NzIsMjY3NzMsMjY3NzQsMjY3NzYsMjY3NzcsMjY3NzgsMjY3NzksMjY3ODAsMjY3ODEsMjY3ODIsMjY3ODMsMjY3ODQsMjY3ODUsMjY3ODcsMjY3ODgsMjY3ODks'@; put 'MjY3OTMsMjY3OTQsMjY3OTUsMjY3OTYsMjY3OTgsMjY4MDEsMjY4MDIsMjY4MDQsMjY4MDYsMjY4MDcsMjY4MDgsMjY4MDksMjY4MTAsMjY4MTEsMjY4MTIsMjY4MTMsMjY4MTQsMjY4MTUsMjY4MTcsMjY4MTksMjY4MjAsMjY4MjEsMjY4MjIsMjY4MjMsMjY4MjQsMjY4MjYsMjY4MjgsMjY4'@; put 'MzAsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzYsMjY4MzgsMjY4MzksMjY4NDEsMjY4NDMsMjY4NDQsMjY4NDUsMjY4NDYsMjY4NDcsMjY4NDksMjY4NTAsMjY4NTIsMjY4NTMsMjY4NTQsMjY4NTUsMjY4NTYsMjY4NTcsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjMsMjY4NjYs'@; put 'MjY4NjcsMjY4NjgsMjY4NzAsMjY4NzEsMjY4NzIsMjY4NzUsMjY4NzcsMjY4NzgsMjY4NzksMjY4ODAsMjY4ODIsMjY4ODMsMjY4ODQsMjY4ODYsMjY4ODcsMjY4ODgsMjY4ODksMjY4OTAsMjY4OTIsMjY4OTUsMjY4OTcsMjY4OTksMjY5MDAsMjY5MDEsMjY5MDIsMjY5MDMsMjY5MDQsMjY5'@; put 'MDUsMjY5MDYsMjY5MDcsMjY5MDgsMjY5MDksMjY5MTAsMjY5MTMsMjY5MTQsMjY5MTUsMjY5MTcsMjY5MTgsMjY5MTksMjY5MjAsMjY5MjEsMjY5MjIsMjY5MjMsMjY5MjQsMjY5MjYsMjY5MjcsMjY5MjksMjY5MzAsMjY5MzEsMjY5MzMsMjY5MzQsMjY5MzUsMjY5MzYsMjY5MzgsMjY5Mzks'@; put 'MjY5NDAsMjY5NDIsMjY5NDQsMjY5NDUsMjY5NDcsMjY5NDgsMjY5NDksMjY5NTAsMjY5NTEsMjY5NTIsMjY5NTMsMjY5NTQsMjY5NTUsMjY5NTYsMjY5NTcsMjY5NTgsMjY5NTksMjY5NjAsMjY5NjEsMjY5NjIsMjY5NjMsMjY5NjUsMjY5NjYsMjY5NjgsMjY5NjksMjY5NzEsMjY5NzIsMjY5'@; put 'NzUsMjY5NzcsMjY5NzgsMjY5ODAsMjY5ODEsMjY5ODMsMjY5ODQsMjY5ODUsMjY5ODYsMjY5ODgsMjY5ODksMjY5OTEsMjY5OTIsMjY5OTQsMjY5OTUsMjY5OTYsMjY5OTcsMjY5OTgsMjcwMDIsMjcwMDMsMjcwMDUsMjcwMDYsMjcwMDcsMjcwMDksMjcwMTEsMjcwMTMsMjcwMTgsMjcwMTks'@; put 'MjcwMjAsMjcwMjIsMjcwMjMsMjcwMjQsMjcwMjUsMjcwMjYsMjcwMjcsMjcwMzAsMjcwMzEsMjcwMzMsMjcwMzQsMjcwMzcsMjcwMzgsMjcwMzksMjcwNDAsMjcwNDEsMjcwNDIsMjcwNDMsMjcwNDQsMjcwNDUsMjcwNDYsMjcwNDksMjcwNTAsMjcwNTIsMjcwNTQsMjcwNTUsMjcwNTYsMjcw'@; put 'NTgsMjcwNTksMjcwNjEsMjcwNjIsMjcwNjQsMjcwNjUsMjcwNjYsMjcwNjgsMjcwNjksMjcwNzAsMjcwNzEsMjcwNzIsMjcwNzQsMjcwNzUsMjcwNzYsMjcwNzcsMjcwNzgsMjcwNzksMjcwODAsMjcwODEsMjcwODMsMjcwODUsMjcwODcsMjcwODksMjcwOTAsMjcwOTEsMjcwOTMsMjcwOTQs'@; put 'MjcwOTUsMjcwOTYsMjcwOTcsMjcwOTgsMjcxMDAsMjcxMDEsMjcxMDIsMjcxMDUsMjcxMDYsMjcxMDcsMjcxMDgsMjcxMDksMjcxMTAsMjcxMTEsMjcxMTIsMjcxMTMsMjcxMTQsMjcxMTUsMjcxMTYsMjcxMTgsMjcxMTksMjcxMjAsMjcxMjEsMjcxMjMsMjcxMjQsMjcxMjUsMjcxMjYsMjcx'@; put 'MjcsMjcxMjgsMjcxMjksMjcxMzAsMjcxMzEsMjcxMzIsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzgsMjcxMzksMjcxNDAsMjcxNDEsMjcxNDIsMjcxNDMsMjcxNDQsMjcxNDUsMjcxNDcsMjcxNDgsMjcxNDksMjcxNTAsMjcxNTEsMjcxNTIsMjcxNTMsMjcxNTQsMjcxNTUsMjcxNTYsMjcxNTcs'@; put 'MjcxNTgsMjcxNjEsMjcxNjIsMjcxNjMsMjcxNjQsMjcxNjUsMjcxNjYsMjcxNjgsMjcxNzAsMjcxNzEsMjcxNzIsMjcxNzMsMjcxNzQsMjcxNzUsMjcxNzcsMjcxNzksMjcxODAsMjcxODEsMjcxODIsMjcxODQsMjcxODYsMjcxODcsMjcxODgsMjcxOTAsMjcxOTEsMjcxOTIsMjcxOTMsMjcx'@; put 'OTQsMjcxOTUsMjcxOTYsMjcxOTksMjcyMDAsMjcyMDEsMjcyMDIsMjcyMDMsMjcyMDUsMjcyMDYsMjcyMDgsMjcyMDksMjcyMTAsMjcyMTEsMjcyMTIsMjcyMTMsMjcyMTQsMjcyMTUsMjcyMTcsMjcyMTgsMjcyMTksMjcyMjAsMjcyMjEsMjcyMjIsMjcyMjMsMjcyMjYsMjcyMjgsMjcyMjks'@; put 'MjcyMzAsMjcyMzEsMjcyMzIsMjcyMzQsMjcyMzUsMjcyMzYsMjcyMzgsMjcyMzksMjcyNDAsMjcyNDEsMjcyNDIsMjcyNDMsMjcyNDQsMjcyNDUsMjcyNDYsMjcyNDcsMjcyNDgsMjcyNTAsMjcyNTEsMjcyNTIsMjcyNTMsMjcyNTQsMjcyNTUsMjcyNTYsMjcyNTgsMjcyNTksMjcyNjEsMjcy'@; put 'NjIsMjcyNjMsMjcyNjUsMjcyNjYsMjcyNjcsMjcyNjksMjcyNzAsMjcyNzEsMjcyNzIsMjcyNzMsMjcyNzQsMjcyNzUsMjcyNzYsMjcyNzcsMjcyNzksMjcyODIsMjcyODMsMjcyODQsMjcyODUsMjcyODYsMjcyODgsMjcyODksMjcyOTAsMjcyOTEsMjcyOTIsMjcyOTMsMjcyOTQsMjcyOTUs'@; put 'MjcyOTcsMjcyOTgsMjcyOTksMjczMDAsMjczMDEsMjczMDIsMjczMDMsMjczMDQsMjczMDYsMjczMDksMjczMTAsMjczMTEsMjczMTIsMjczMTMsMjczMTQsMjczMTUsMjczMTYsMjczMTcsMjczMTgsMjczMTksMjczMjAsMjczMjEsMjczMjIsMjczMjMsMjczMjQsMjczMjUsMjczMjYsMjcz'@; put 'MjcsMjczMjgsMjczMjksMjczMzAsMjczMzEsMjczMzIsMjczMzMsMjczMzQsMjczMzUsMjczMzYsMjczMzcsMjczMzgsMjczMzksMjczNDAsMjczNDEsMjczNDIsMjczNDMsMjczNDQsMjczNDUsMjczNDYsMjczNDcsMjczNDgsMjczNDksMjczNTAsMjczNTEsMjczNTIsMjczNTMsMjczNTQs'@; put 'MjczNTUsMjczNTYsMjczNTcsMjczNTgsMjczNTksMjczNjAsMjczNjEsMjczNjIsMjczNjMsMjczNjQsMjczNjUsMjczNjYsMjczNjcsMjczNjgsMjczNjksMjczNzAsMjczNzEsMjczNzIsMjczNzMsMjczNzQsMjczNzUsMjczNzYsMjczNzcsMjczNzgsMjczNzksMjczODAsMjczODEsMjcz'@; put 'ODIsMjczODMsMjczODQsMjczODUsMjczODYsMjczODcsMjczODgsMjczODksMjczOTAsMjczOTEsMjczOTIsMjczOTMsMjczOTQsMjczOTUsMjczOTYsMjczOTcsMjczOTgsMjczOTksMjc0MDAsMjc0MDEsMjc0MDIsMjc0MDMsMjc0MDQsMjc0MDUsMjc0MDYsMjc0MDcsMjc0MDgsMjc0MDks'@; put 'Mjc0MTAsMjc0MTEsMjc0MTIsMjc0MTMsMjc0MTQsMjc0MTUsMjc0MTYsMjc0MTcsMjc0MTgsMjc0MTksMjc0MjAsMjc0MjEsMjc0MjIsMjc0MjMsMjc0MjksMjc0MzAsMjc0MzIsMjc0MzMsMjc0MzQsMjc0MzUsMjc0MzYsMjc0MzcsMjc0MzgsMjc0MzksMjc0NDAsMjc0NDEsMjc0NDMsMjc0'@; put 'NDQsMjc0NDUsMjc0NDYsMjc0NDgsMjc0NTEsMjc0NTIsMjc0NTMsMjc0NTUsMjc0NTYsMjc0NTcsMjc0NTgsMjc0NjAsMjc0NjEsMjc0NjQsMjc0NjYsMjc0NjcsMjc0NjksMjc0NzAsMjc0NzEsMjc0NzIsMjc0NzMsMjc0NzQsMjc0NzUsMjc0NzYsMjc0NzcsMjc0NzgsMjc0NzksMjc0ODAs'@; put 'Mjc0ODIsMjc0ODMsMjc0ODQsMjc0ODUsMjc0ODYsMjc0ODcsMjc0ODgsMjc0ODksMjc0OTYsMjc0OTcsMjc0OTksMjc1MDAsMjc1MDEsMjc1MDIsMjc1MDMsMjc1MDQsMjc1MDUsMjc1MDYsMjc1MDcsMjc1MDgsMjc1MDksMjc1MTAsMjc1MTEsMjc1MTIsMjc1MTQsMjc1MTcsMjc1MTgsMjc1'@; put 'MTksMjc1MjAsMjc1MjUsMjc1MjgsMjc1MzIsMjc1MzQsMjc1MzUsMjc1MzYsMjc1MzcsMjc1NDAsMjc1NDEsMjc1NDMsMjc1NDQsMjc1NDUsMjc1NDgsMjc1NDksMjc1NTAsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NTYsMjc1NTcsMjc1NTgsMjc1NTksMjc1NjAsMjc1NjEsMjc1NjMs'@; put 'Mjc1NjQsMjc1NjUsMjc1NjYsMjc1NjcsMjc1NjgsMjc1NjksMjc1NzAsMjc1NzQsMjc1NzYsMjc1NzcsMjc1NzgsMjc1NzksMjc1ODAsMjc1ODEsMjc1ODIsMjc1ODQsMjc1ODcsMjc1ODgsMjc1OTAsMjc1OTEsMjc1OTIsMjc1OTMsMjc1OTQsMjc1OTYsMjc1OTgsMjc2MDAsMjc2MDEsMjc2'@; put 'MDgsMjc2MTAsMjc2MTIsMjc2MTMsMjc2MTQsMjc2MTUsMjc2MTYsMjc2MTgsMjc2MTksMjc2MjAsMjc2MjEsMjc2MjIsMjc2MjMsMjc2MjQsMjc2MjUsMjc2MjgsMjc2MjksMjc2MzAsMjc2MzIsMjc2MzMsMjc2MzQsMjc2MzYsMjc2MzgsMjc2MzksMjc2NDAsMjc2NDIsMjc2NDMsMjc2NDQs'@; put 'Mjc2NDYsMjc2NDcsMjc2NDgsMjc2NDksMjc2NTAsMjc2NTEsMjc2NTIsMjc2NTYsMjc2NTcsMjc2NTgsMjc2NTksMjc2NjAsMjc2NjIsMjc2NjYsMjc2NzEsMjc2NzYsMjc2NzcsMjc2NzgsMjc2ODAsMjc2ODMsMjc2ODUsMjc2OTEsMjc2OTIsMjc2OTMsMjc2OTcsMjc2OTksMjc3MDIsMjc3'@; put 'MDMsMjc3MDUsMjc3MDYsMjc3MDcsMjc3MDgsMjc3MTAsMjc3MTEsMjc3MTUsMjc3MTYsMjc3MTcsMjc3MjAsMjc3MjMsMjc3MjQsMjc3MjUsMjc3MjYsMjc3MjcsMjc3MjksMjc3MzAsMjc3MzEsMjc3MzQsMjc3MzYsMjc3MzcsMjc3MzgsMjc3NDYsMjc3NDcsMjc3NDksMjc3NTAsMjc3NTEs'@; put 'Mjc3NTUsMjc3NTYsMjc3NTcsMjc3NTgsMjc3NTksMjc3NjEsMjc3NjMsMjc3NjUsMjc3NjcsMjc3NjgsMjc3NzAsMjc3NzEsMjc3NzIsMjc3NzUsMjc3NzYsMjc3ODAsMjc3ODMsMjc3ODYsMjc3ODcsMjc3ODksMjc3OTAsMjc3OTMsMjc3OTQsMjc3OTcsMjc3OTgsMjc3OTksMjc4MDAsMjc4'@; put 'MDIsMjc4MDQsMjc4MDUsMjc4MDYsMjc4MDgsMjc4MTAsMjc4MTYsMjc4MjAsMjc4MjMsMjc4MjQsMjc4MjgsMjc4MjksMjc4MzAsMjc4MzEsMjc4MzQsMjc4NDAsMjc4NDEsMjc4NDIsMjc4NDMsMjc4NDYsMjc4NDcsMjc4NDgsMjc4NTEsMjc4NTMsMjc4NTQsMjc4NTUsMjc4NTcsMjc4NTgs'@; put 'Mjc4NjQsMjc4NjUsMjc4NjYsMjc4NjgsMjc4NjksMjc4NzEsMjc4NzYsMjc4NzgsMjc4NzksMjc4ODEsMjc4ODQsMjc4ODUsMjc4OTAsMjc4OTIsMjc4OTcsMjc5MDMsMjc5MDQsMjc5MDYsMjc5MDcsMjc5MDksMjc5MTAsMjc5MTIsMjc5MTMsMjc5MTQsMjc5MTcsMjc5MTksMjc5MjAsMjc5'@; put 'MjEsMjc5MjMsMjc5MjQsMjc5MjUsMjc5MjYsMjc5MjgsMjc5MzIsMjc5MzMsMjc5MzUsMjc5MzYsMjc5MzcsMjc5MzgsMjc5MzksMjc5NDAsMjc5NDIsMjc5NDQsMjc5NDUsMjc5NDgsMjc5NDksMjc5NTEsMjc5NTIsMjc5NTYsMjc5NTgsMjc5NTksMjc5NjAsMjc5NjIsMjc5NjcsMjc5Njgs'@; put 'Mjc5NzAsMjc5NzIsMjc5NzcsMjc5ODAsMjc5ODQsMjc5ODksMjc5OTAsMjc5OTEsMjc5OTIsMjc5OTUsMjc5OTcsMjc5OTksMjgwMDEsMjgwMDIsMjgwMDQsMjgwMDUsMjgwMDcsMjgwMDgsMjgwMTEsMjgwMTIsMjgwMTMsMjgwMTYsMjgwMTcsMjgwMTgsMjgwMTksMjgwMjEsMjgwMjIsMjgw'@; put 'MjUsMjgwMjYsMjgwMjcsMjgwMjksMjgwMzAsMjgwMzEsMjgwMzIsMjgwMzMsMjgwMzUsMjgwMzYsMjgwMzgsMjgwMzksMjgwNDIsMjgwNDMsMjgwNDUsMjgwNDcsMjgwNDgsMjgwNTAsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNTcsMjgwNTgsMjgwNjAsMjgwNjYsMjgwNjksMjgwNzYsMjgwNzcs'@; put 'MjgwODAsMjgwODEsMjgwODMsMjgwODQsMjgwODYsMjgwODcsMjgwODksMjgwOTAsMjgwOTEsMjgwOTIsMjgwOTMsMjgwOTQsMjgwOTcsMjgwOTgsMjgwOTksMjgxMDQsMjgxMDUsMjgxMDYsMjgxMDksMjgxMTAsMjgxMTEsMjgxMTIsMjgxMTQsMjgxMTUsMjgxMTYsMjgxMTcsMjgxMTksMjgx'@; put 'MjIsMjgxMjMsMjgxMjQsMjgxMjcsMjgxMzAsMjgxMzEsMjgxMzMsMjgxMzUsMjgxMzYsMjgxMzcsMjgxMzgsMjgxNDEsMjgxNDMsMjgxNDQsMjgxNDYsMjgxNDgsMjgxNDksMjgxNTAsMjgxNTIsMjgxNTQsMjgxNTcsMjgxNTgsMjgxNTksMjgxNjAsMjgxNjEsMjgxNjIsMjgxNjMsMjgxNjQs'@; put 'MjgxNjYsMjgxNjcsMjgxNjgsMjgxNjksMjgxNzEsMjgxNzUsMjgxNzgsMjgxNzksMjgxODEsMjgxODQsMjgxODUsMjgxODcsMjgxODgsMjgxOTAsMjgxOTEsMjgxOTQsMjgxOTgsMjgxOTksMjgyMDAsMjgyMDIsMjgyMDQsMjgyMDYsMjgyMDgsMjgyMDksMjgyMTEsMjgyMTMsMjgyMTQsMjgy'@; put 'MTUsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjEsMjgyMjIsMjgyMjMsMjgyMjQsMjgyMjUsMjgyMjYsMjgyMjksMjgyMzAsMjgyMzEsMjgyMzIsMjgyMzMsMjgyMzQsMjgyMzUsMjgyMzYsMjgyMzksMjgyNDAsMjgyNDEsMjgyNDIsMjgyNDUsMjgyNDcsMjgyNDksMjgyNTAsMjgyNTIsMjgyNTMs'@; put 'MjgyNTQsMjgyNTYsMjgyNTcsMjgyNTgsMjgyNTksMjgyNjAsMjgyNjEsMjgyNjIsMjgyNjMsMjgyNjQsMjgyNjUsMjgyNjYsMjgyNjgsMjgyNjksMjgyNzEsMjgyNzIsMjgyNzMsMjgyNzQsMjgyNzUsMjgyNzYsMjgyNzcsMjgyNzgsMjgyNzksMjgyODAsMjgyODEsMjgyODIsMjgyODMsMjgy'@; put 'ODQsMjgyODUsMjgyODgsMjgyODksMjgyOTAsMjgyOTIsMjgyOTUsMjgyOTYsMjgyOTgsMjgyOTksMjgzMDAsMjgzMDEsMjgzMDIsMjgzMDUsMjgzMDYsMjgzMDcsMjgzMDgsMjgzMDksMjgzMTAsMjgzMTEsMjgzMTMsMjgzMTQsMjgzMTUsMjgzMTcsMjgzMTgsMjgzMjAsMjgzMjEsMjgzMjMs'@; put 'MjgzMjQsMjgzMjYsMjgzMjgsMjgzMjksMjgzMzEsMjgzMzIsMjgzMzMsMjgzMzQsMjgzMzYsMjgzMzksMjgzNDEsMjgzNDQsMjgzNDUsMjgzNDgsMjgzNTAsMjgzNTEsMjgzNTIsMjgzNTUsMjgzNTYsMjgzNTcsMjgzNTgsMjgzNjAsMjgzNjEsMjgzNjIsMjgzNjQsMjgzNjUsMjgzNjYsMjgz'@; put 'NjgsMjgzNzAsMjgzNzQsMjgzNzYsMjgzNzcsMjgzNzksMjgzODAsMjgzODEsMjgzODcsMjgzOTEsMjgzOTQsMjgzOTUsMjgzOTYsMjgzOTcsMjgzOTgsMjgzOTksMjg0MDAsMjg0MDEsMjg0MDIsMjg0MDMsMjg0MDUsMjg0MDYsMjg0MDcsMjg0MDgsMjg0MTAsMjg0MTEsMjg0MTIsMjg0MTMs'@; put 'Mjg0MTQsMjg0MTUsMjg0MTYsMjg0MTcsMjg0MTksMjg0MjAsMjg0MjEsMjg0MjMsMjg0MjQsMjg0MjYsMjg0MjcsMjg0MjgsMjg0MjksMjg0MzAsMjg0MzIsMjg0MzMsMjg0MzQsMjg0MzgsMjg0MzksMjg0NDAsMjg0NDEsMjg0NDIsMjg0NDMsMjg0NDQsMjg0NDUsMjg0NDYsMjg0NDcsMjg0'@; put 'NDksMjg0NTAsMjg0NTEsMjg0NTMsMjg0NTQsMjg0NTUsMjg0NTYsMjg0NjAsMjg0NjIsMjg0NjQsMjg0NjYsMjg0NjgsMjg0NjksMjg0NzEsMjg0NzIsMjg0NzMsMjg0NzQsMjg0NzUsMjg0NzYsMjg0NzcsMjg0NzksMjg0ODAsMjg0ODEsMjg0ODIsMjg0ODMsMjg0ODQsMjg0ODUsMjg0ODgs'@; put 'Mjg0ODksMjg0OTAsMjg0OTIsMjg0OTQsMjg0OTUsMjg0OTYsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDAsMjg1MDEsMjg1MDIsMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDcsMjg1MDksMjg1MTEsMjg1MTIsMjg1MTMsMjg1MTUsMjg1MTYsMjg1MTcsMjg1MTksMjg1MjAsMjg1MjEsMjg1MjIsMjg1'@; put 'MjMsMjg1MjQsMjg1MjcsMjg1MjgsMjg1MjksMjg1MzEsMjg1MzMsMjg1MzQsMjg1MzUsMjg1MzcsMjg1MzksMjg1NDEsMjg1NDIsMjg1NDMsMjg1NDQsMjg1NDUsMjg1NDYsMjg1NDcsMjg1NDksMjg1NTAsMjg1NTEsMjg1NTQsMjg1NTUsMjg1NTksMjg1NjAsMjg1NjEsMjg1NjIsMjg1NjMs'@; put 'Mjg1NjQsMjg1NjUsMjg1NjYsMjg1NjcsMjg1NjgsMjg1NjksMjg1NzAsMjg1NzEsMjg1NzMsMjg1NzQsMjg1NzUsMjg1NzYsMjg1NzgsMjg1NzksMjg1ODAsMjg1ODEsMjg1ODIsMjg1ODQsMjg1ODUsMjg1ODYsMjg1ODcsMjg1ODgsMjg1ODksMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTMsMjg1'@; put 'OTQsMjg1OTYsMjg1OTcsMjg1OTksMjg2MDAsMjg2MDIsMjg2MDMsMjg2MDQsMjg2MDUsMjg2MDYsMjg2MDcsMjg2MDksMjg2MTEsMjg2MTIsMjg2MTMsMjg2MTQsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MTksMjg2MjAsMjg2MjEsMjg2MjIsMjg2MjMsMjg2MjQsMjg2MjcsMjg2MjgsMjg2Mjks'@; put 'Mjg2MzAsMjg2MzEsMjg2MzIsMjg2MzMsMjg2MzQsMjg2MzUsMjg2MzYsMjg2MzcsMjg2MzksMjg2NDIsMjg2NDMsMjg2NDQsMjg2NDUsMjg2NDYsMjg2NDcsMjg2NDgsMjg2NDksMjg2NTAsMjg2NTEsMjg2NTIsMjg2NTMsMjg2NTYsMjg2NTcsMjg2NTgsMjg2NTksMjg2NjAsMjg2NjEsMjg2'@; put 'NjIsMjg2NjMsMjg2NjQsMjg2NjUsMjg2NjYsMjg2NjcsMjg2NjgsMjg2NjksMjg2NzAsMjg2NzEsMjg2NzIsMjg2NzMsMjg2NzQsMjg2NzUsMjg2NzYsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODAsMjg2ODEsMjg2ODIsMjg2ODMsMjg2ODQsMjg2ODUsMjg2ODYsMjg2ODcsMjg2ODgsMjg2OTAs'@; put 'Mjg2OTEsMjg2OTIsMjg2OTMsMjg2OTQsMjg2OTUsMjg2OTYsMjg2OTcsMjg3MDAsMjg3MDEsMjg3MDIsMjg3MDMsMjg3MDQsMjg3MDUsMjg3MDYsMjg3MDgsMjg3MDksMjg3MTAsMjg3MTEsMjg3MTIsMjg3MTMsMjg3MTQsMjg3MTUsMjg3MTYsMjg3MTcsMjg3MTgsMjg3MTksMjg3MjAsMjg3'@; put 'MjEsMjg3MjIsMjg3MjMsMjg3MjQsMjg3MjYsMjg3MjcsMjg3MjgsMjg3MzAsMjg3MzEsMjg3MzIsMjg3MzMsMjg3MzQsMjg3MzUsMjg3MzYsMjg3MzcsMjg3MzgsMjg3MzksMjg3NDAsMjg3NDEsMjg3NDIsMjg3NDMsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NDksMjg3NTAsMjg3NTIs'@; put 'Mjg3NTMsMjg3NTQsMjg3NTUsMjg3NTYsMjg3NTcsMjg3NTgsMjg3NTksMjg3NjAsMjg3NjEsMjg3NjIsMjg3NjMsMjg3NjQsMjg3NjUsMjg3NjcsMjg3NjgsMjg3NjksMjg3NzAsMjg3NzEsMjg3NzIsMjg3NzMsMjg3NzQsMjg3NzUsMjg3NzYsMjg3NzcsMjg3NzgsMjg3ODIsMjg3ODUsMjg3'@; put 'ODYsMjg3ODcsMjg3ODgsMjg3OTEsMjg3OTMsMjg3OTQsMjg3OTUsMjg3OTcsMjg4MDEsMjg4MDIsMjg4MDMsMjg4MDQsMjg4MDYsMjg4MDcsMjg4MDgsMjg4MTEsMjg4MTIsMjg4MTMsMjg4MTUsMjg4MTYsMjg4MTcsMjg4MTksMjg4MjMsMjg4MjQsMjg4MjYsMjg4MjcsMjg4MzAsMjg4MzEs'@; put 'Mjg4MzIsMjg4MzMsMjg4MzQsMjg4MzUsMjg4MzYsMjg4MzcsMjg4MzgsMjg4MzksMjg4NDAsMjg4NDEsMjg4NDIsMjg4NDgsMjg4NTAsMjg4NTIsMjg4NTMsMjg4NTQsMjg4NTgsMjg4NjIsMjg4NjMsMjg4NjgsMjg4NjksMjg4NzAsMjg4NzEsMjg4NzMsMjg4NzUsMjg4NzYsMjg4NzcsMjg4'@; put 'NzgsMjg4NzksMjg4ODAsMjg4ODEsMjg4ODIsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODcsMjg4OTAsMjg4OTIsMjg4OTMsMjg4OTQsMjg4OTYsMjg4OTcsMjg4OTgsMjg4OTksMjg5MDEsMjg5MDYsMjg5MTAsMjg5MTIsMjg5MTMsMjg5MTQsMjg5MTUsMjg5MTYsMjg5MTcsMjg5MTgs'@; put 'Mjg5MjAsMjg5MjIsMjg5MjMsMjg5MjQsMjg5MjYsMjg5MjcsMjg5MjgsMjg5MjksMjg5MzAsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzYsMjg5MzksMjg5NDAsMjg5NDEsMjg5NDIsMjg5NDMsMjg5NDUsMjg5NDYsMjg5NDgsMjg5NTEsMjg5NTUsMjg5NTYsMjg5NTcsMjg5'@; put 'NTgsMjg5NTksMjg5NjAsMjg5NjEsMjg5NjIsMjg5NjMsMjg5NjQsMjg5NjUsMjg5NjcsMjg5NjgsMjg5NjksMjg5NzAsMjg5NzEsMjg5NzIsMjg5NzMsMjg5NzQsMjg5NzgsMjg5NzksMjg5ODAsMjg5ODEsMjg5ODMsMjg5ODQsMjg5ODUsMjg5ODYsMjg5ODcsMjg5ODgsMjg5ODksMjg5OTAs'@; put 'Mjg5OTEsMjg5OTIsMjg5OTMsMjg5OTQsMjg5OTUsMjg5OTYsMjg5OTgsMjg5OTksMjllMywyOTAwMSwyOTAwMywyOTAwNSwyOTAwNywyOTAwOCwyOTAwOSwyOTAxMCwyOTAxMSwyOTAxMiwyOTAxMywyOTAxNCwyOTAxNSwyOTAxNiwyOTAxNywyOTAxOCwyOTAxOSwyOTAyMSwyOTAyMywyOTAy'@; put 'NCwyOTAyNSwyOTAyNiwyOTAyNywyOTAyOSwyOTAzMywyOTAzNCwyOTAzNSwyOTAzNiwyOTAzNywyOTAzOSwyOTA0MCwyOTA0MSwyOTA0NCwyOTA0NSwyOTA0NiwyOTA0NywyOTA0OSwyOTA1MSwyOTA1MiwyOTA1NCwyOTA1NSwyOTA1NiwyOTA1NywyOTA1OCwyOTA1OSwyOTA2MSwyOTA2Miwy'@; put 'OTA2MywyOTA2NCwyOTA2NSwyOTA2NywyOTA2OCwyOTA2OSwyOTA3MCwyOTA3MiwyOTA3MywyOTA3NCwyOTA3NSwyOTA3NywyOTA3OCwyOTA3OSwyOTA4MiwyOTA4MywyOTA4NCwyOTA4NSwyOTA4NiwyOTA4OSwyOTA5MCwyOTA5MSwyOTA5MiwyOTA5MywyOTA5NCwyOTA5NSwyOTA5NywyOTA5'@; put 'OCwyOTA5OSwyOTEwMSwyOTEwMiwyOTEwMywyOTEwNCwyOTEwNSwyOTEwNiwyOTEwOCwyOTExMCwyOTExMSwyOTExMiwyOTExNCwyOTExNSwyOTExNiwyOTExNywyOTExOCwyOTExOSwyOTEyMCwyOTEyMSwyOTEyMiwyOTEyNCwyOTEyNSwyOTEyNiwyOTEyNywyOTEyOCwyOTEyOSwyOTEzMCwy'@; put 'OTEzMSwyOTEzMiwyOTEzMywyOTEzNSwyOTEzNiwyOTEzNywyOTEzOCwyOTEzOSwyOTE0MiwyOTE0MywyOTE0NCwyOTE0NSwyOTE0NiwyOTE0NywyOTE0OCwyOTE0OSwyOTE1MCwyOTE1MSwyOTE1MywyOTE1NCwyOTE1NSwyOTE1NiwyOTE1OCwyOTE2MCwyOTE2MSwyOTE2MiwyOTE2MywyOTE2'@; put 'NCwyOTE2NSwyOTE2NywyOTE2OCwyOTE2OSwyOTE3MCwyOTE3MSwyOTE3MiwyOTE3MywyOTE3NCwyOTE3NSwyOTE3NiwyOTE3OCwyOTE3OSwyOTE4MCwyOTE4MSwyOTE4MiwyOTE4MywyOTE4NCwyOTE4NSwyOTE4NiwyOTE4NywyOTE4OCwyOTE4OSwyOTE5MSwyOTE5MiwyOTE5MywyOTE5NCwy'@; put 'OTE5NSwyOTE5NiwyOTE5NywyOTE5OCwyOTE5OSwyOTIwMCwyOTIwMSwyOTIwMiwyOTIwMywyOTIwNCwyOTIwNSwyOTIwNiwyOTIwNywyOTIwOCwyOTIwOSwyOTIxMCwyOTIxMSwyOTIxMiwyOTIxNCwyOTIxNSwyOTIxNiwyOTIxNywyOTIxOCwyOTIxOSwyOTIyMCwyOTIyMSwyOTIyMiwyOTIy'@; put 'MywyOTIyNSwyOTIyNywyOTIyOSwyOTIzMCwyOTIzMSwyOTIzNCwyOTIzNSwyOTIzNiwyOTI0MiwyOTI0NCwyOTI0NiwyOTI0OCwyOTI0OSwyOTI1MCwyOTI1MSwyOTI1MiwyOTI1MywyOTI1NCwyOTI1NywyOTI1OCwyOTI1OSwyOTI2MiwyOTI2MywyOTI2NCwyOTI2NSwyOTI2NywyOTI2OCwy'@; put 'OTI2OSwyOTI3MSwyOTI3MiwyOTI3NCwyOTI3NiwyOTI3OCwyOTI4MCwyOTI4MywyOTI4NCwyOTI4NSwyOTI4OCwyOTI5MCwyOTI5MSwyOTI5MiwyOTI5MywyOTI5NiwyOTI5NywyOTI5OSwyOTMwMCwyOTMwMiwyOTMwMywyOTMwNCwyOTMwNywyOTMwOCwyOTMwOSwyOTMxNCwyOTMxNSwyOTMx'@; put 'NywyOTMxOCwyOTMxOSwyOTMyMCwyOTMyMSwyOTMyNCwyOTMyNiwyOTMyOCwyOTMyOSwyOTMzMSwyOTMzMiwyOTMzMywyOTMzNCwyOTMzNSwyOTMzNiwyOTMzNywyOTMzOCwyOTMzOSwyOTM0MCwyOTM0MSwyOTM0MiwyOTM0NCwyOTM0NSwyOTM0NiwyOTM0NywyOTM0OCwyOTM0OSwyOTM1MCwy'@; put 'OTM1MSwyOTM1MiwyOTM1MywyOTM1NCwyOTM1NSwyOTM1OCwyOTM2MSwyOTM2MiwyOTM2MywyOTM2NSwyOTM3MCwyOTM3MSwyOTM3MiwyOTM3MywyOTM3NCwyOTM3NSwyOTM3NiwyOTM4MSwyOTM4MiwyOTM4MywyOTM4NSwyOTM4NiwyOTM4NywyOTM4OCwyOTM5MSwyOTM5MywyOTM5NSwyOTM5'@; put 'NiwyOTM5NywyOTM5OCwyOTQwMCwyOTQwMiwyOTQwMyw1ODU2Niw1ODU2Nyw1ODU2OCw1ODU2OSw1ODU3MCw1ODU3MSw1ODU3Miw1ODU3Myw1ODU3NCw1ODU3NSw1ODU3Niw1ODU3Nyw1ODU3OCw1ODU3OSw1ODU4MCw1ODU4MSw1ODU4Miw1ODU4Myw1ODU4NCw1ODU4NSw1ODU4Niw1ODU4Nyw1'@; put 'ODU4OCw1ODU4OSw1ODU5MCw1ODU5MSw1ODU5Miw1ODU5Myw1ODU5NCw1ODU5NSw1ODU5Niw1ODU5Nyw1ODU5OCw1ODU5OSw1ODYwMCw1ODYwMSw1ODYwMiw1ODYwMyw1ODYwNCw1ODYwNSw1ODYwNiw1ODYwNyw1ODYwOCw1ODYwOSw1ODYxMCw1ODYxMSw1ODYxMiw1ODYxMyw1ODYxNCw1ODYx'@; put 'NSw1ODYxNiw1ODYxNyw1ODYxOCw1ODYxOSw1ODYyMCw1ODYyMSw1ODYyMiw1ODYyMyw1ODYyNCw1ODYyNSw1ODYyNiw1ODYyNyw1ODYyOCw1ODYyOSw1ODYzMCw1ODYzMSw1ODYzMiw1ODYzMyw1ODYzNCw1ODYzNSw1ODYzNiw1ODYzNyw1ODYzOCw1ODYzOSw1ODY0MCw1ODY0MSw1ODY0Miw1'@; put 'ODY0Myw1ODY0NCw1ODY0NSw1ODY0Niw1ODY0Nyw1ODY0OCw1ODY0OSw1ODY1MCw1ODY1MSw1ODY1Miw1ODY1Myw1ODY1NCw1ODY1NSw1ODY1Niw1ODY1Nyw1ODY1OCw1ODY1OSw1ODY2MCw1ODY2MSwxMjI4OCwxMjI4OSwxMjI5MCwxODMsNzEzLDcxMSwxNjgsMTIyOTEsMTIyOTMsODIxMiw2'@; put 'NTM3NCw4MjE0LDgyMzAsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMxMCwxMjMxMSwxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4NzU4LDg3NDMsODc0NCw4NzIxLDg3MTksODc0Niw4NzQ1'@; put 'LDg3MTIsODc1OSw4NzMwLDg4NjksODc0MSw4NzM2LDg5NzgsODg1Nyw4NzQ3LDg3NTAsODgwMSw4NzgwLDg3NzYsODc2NSw4NzMzLDg4MDAsODgxNCw4ODE1LDg4MDQsODgwNSw4NzM0LDg3NTcsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIsODI0Myw4NDUxLDY1Mjg0LDE2NCw2NTUwNCw2NTUw'@; put 'NSw4MjQwLDE2Nyw4NDcwLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw4MjUxLDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsNTg2NjIsNTg2NjMsNTg2NjQsNTg2NjUsNTg2NjYsNTg2NjcsNTg2NjgsNTg2NjksNTg2NzAsNTg2NzEsNTg2'@; put 'NzIsNTg2NzMsNTg2NzQsNTg2NzUsNTg2NzYsNTg2NzcsNTg2NzgsNTg2NzksNTg2ODAsNTg2ODEsNTg2ODIsNTg2ODMsNTg2ODQsNTg2ODUsNTg2ODYsNTg2ODcsNTg2ODgsNTg2ODksNTg2OTAsNTg2OTEsNTg2OTIsNTg2OTMsNTg2OTQsNTg2OTUsNTg2OTYsNTg2OTcsNTg2OTgsNTg2OTks'@; put 'NTg3MDAsNTg3MDEsNTg3MDIsNTg3MDMsNTg3MDQsNTg3MDUsNTg3MDYsNTg3MDcsNTg3MDgsNTg3MDksNTg3MTAsNTg3MTEsNTg3MTIsNTg3MTMsNTg3MTQsNTg3MTUsNTg3MTYsNTg3MTcsNTg3MTgsNTg3MTksNTg3MjAsNTg3MjEsNTg3MjIsNTg3MjMsNTg3MjQsNTg3MjUsNTg3MjYsNTg3'@; put 'MjcsNTg3MjgsNTg3MjksNTg3MzAsNTg3MzEsNTg3MzIsNTg3MzMsNTg3MzQsNTg3MzUsNTg3MzYsNTg3MzcsNTg3MzgsNTg3MzksNTg3NDAsNTg3NDEsNTg3NDIsNTg3NDMsNTg3NDQsNTg3NDUsNTg3NDYsNTg3NDcsNTg3NDgsNTg3NDksNTg3NTAsNTg3NTEsNTg3NTIsNTg3NTMsNTg3NTQs'@; put 'NTg3NTUsNTg3NTYsNTg3NTcsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw1OTIzOCw1OTIzOSw1OTI0MCw1OTI0MSw1OTI0Miw1OTI0Myw5MzUyLDkzNTMsOTM1NCw5MzU1LDkzNTYsOTM1Nyw5MzU4LDkzNTksOTM2MCw5MzYxLDkzNjIsOTM2Myw5'@; put 'MzY0LDkzNjUsOTM2Niw5MzY3LDkzNjgsOTM2OSw5MzcwLDkzNzEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsOTM0Nyw5MzQ4LDkzNDksOTM1MCw5MzUxLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5'@; put 'MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsODM2NCw1OTI0NSwxMjgzMiwxMjgzMywxMjgzNCwxMjgzNSwxMjgzNiwxMjgzNywxMjgzOCwxMjgzOSwxMjg0MCwxMjg0MSw1OTI0Niw1OTI0Nyw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDg1NTQsODU1'@; put 'NSw1OTI0OCw1OTI0OSw1ODc1OCw1ODc1OSw1ODc2MCw1ODc2MSw1ODc2Miw1ODc2Myw1ODc2NCw1ODc2NSw1ODc2Niw1ODc2Nyw1ODc2OCw1ODc2OSw1ODc3MCw1ODc3MSw1ODc3Miw1ODc3Myw1ODc3NCw1ODc3NSw1ODc3Niw1ODc3Nyw1ODc3OCw1ODc3OSw1ODc4MCw1ODc4MSw1ODc4Miw1'@; put 'ODc4Myw1ODc4NCw1ODc4NSw1ODc4Niw1ODc4Nyw1ODc4OCw1ODc4OSw1ODc5MCw1ODc5MSw1ODc5Miw1ODc5Myw1ODc5NCw1ODc5NSw1ODc5Niw1ODc5Nyw1ODc5OCw1ODc5OSw1ODgwMCw1ODgwMSw1ODgwMiw1ODgwMyw1ODgwNCw1ODgwNSw1ODgwNiw1ODgwNyw1ODgwOCw1ODgwOSw1ODgx'@; put 'MCw1ODgxMSw1ODgxMiw1ODgxMyw1ODgxNCw1ODgxNSw1ODgxNiw1ODgxNyw1ODgxOCw1ODgxOSw1ODgyMCw1ODgyMSw1ODgyMiw1ODgyMyw1ODgyNCw1ODgyNSw1ODgyNiw1ODgyNyw1ODgyOCw1ODgyOSw1ODgzMCw1ODgzMSw1ODgzMiw1ODgzMyw1ODgzNCw1ODgzNSw1ODgzNiw1ODgzNyw1'@; put 'ODgzOCw1ODgzOSw1ODg0MCw1ODg0MSw1ODg0Miw1ODg0Myw1ODg0NCw1ODg0NSw1ODg0Niw1ODg0Nyw1ODg0OCw1ODg0OSw1ODg1MCw1ODg1MSw1ODg1MiwxMjI4OCw2NTI4MSw2NTI4Miw2NTI4Myw2NTUwOSw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5'@; put 'Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2'@; put 'NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTM0MCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0'@; put 'Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1'@; put 'ODg1NCw1ODg1NSw1ODg1Niw1ODg1Nyw1ODg1OCw1ODg1OSw1ODg2MCw1ODg2MSw1ODg2Miw1ODg2Myw1ODg2NCw1ODg2NSw1ODg2Niw1ODg2Nyw1ODg2OCw1ODg2OSw1ODg3MCw1ODg3MSw1ODg3Miw1ODg3Myw1ODg3NCw1ODg3NSw1ODg3Niw1ODg3Nyw1ODg3OCw1ODg3OSw1ODg4MCw1ODg4'@; put 'MSw1ODg4Miw1ODg4Myw1ODg4NCw1ODg4NSw1ODg4Niw1ODg4Nyw1ODg4OCw1ODg4OSw1ODg5MCw1ODg5MSw1ODg5Miw1ODg5Myw1ODg5NCw1ODg5NSw1ODg5Niw1ODg5Nyw1ODg5OCw1ODg5OSw1ODkwMCw1ODkwMSw1ODkwMiw1ODkwMyw1ODkwNCw1ODkwNSw1ODkwNiw1ODkwNyw1ODkwOCw1'@; put 'ODkwOSw1ODkxMCw1ODkxMSw1ODkxMiw1ODkxMyw1ODkxNCw1ODkxNSw1ODkxNiw1ODkxNyw1ODkxOCw1ODkxOSw1ODkyMCw1ODkyMSw1ODkyMiw1ODkyMyw1ODkyNCw1ODkyNSw1ODkyNiw1ODkyNyw1ODkyOCw1ODkyOSw1ODkzMCw1ODkzMSw1ODkzMiw1ODkzMyw1ODkzNCw1ODkzNSw1ODkz'@; put 'Niw1ODkzNyw1ODkzOCw1ODkzOSw1ODk0MCw1ODk0MSw1ODk0Miw1ODk0Myw1ODk0NCw1ODk0NSw1ODk0Niw1ODk0Nyw1ODk0OCw1ODk0OSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2Niwx'@; put 'MjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5'@; put 'NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwx'@; put 'MjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSw1OTI1MCw1OTI1MSw1OTI1Miw1OTI1Myw1OTI1NCw1OTI1NSw1OTI1Niw1OTI1Nyw1OTI1OCw1OTI1OSw1OTI2MCw1ODk1MCw1ODk1MSw1ODk1'@; put 'Miw1ODk1Myw1ODk1NCw1ODk1NSw1ODk1Niw1ODk1Nyw1ODk1OCw1ODk1OSw1ODk2MCw1ODk2MSw1ODk2Miw1ODk2Myw1ODk2NCw1ODk2NSw1ODk2Niw1ODk2Nyw1ODk2OCw1ODk2OSw1ODk3MCw1ODk3MSw1ODk3Miw1ODk3Myw1ODk3NCw1ODk3NSw1ODk3Niw1ODk3Nyw1ODk3OCw1ODk3OSw1'@; put 'ODk4MCw1ODk4MSw1ODk4Miw1ODk4Myw1ODk4NCw1ODk4NSw1ODk4Niw1ODk4Nyw1ODk4OCw1ODk4OSw1ODk5MCw1ODk5MSw1ODk5Miw1ODk5Myw1ODk5NCw1ODk5NSw1ODk5Niw1ODk5Nyw1ODk5OCw1ODk5OSw1OWUzLDU5MDAxLDU5MDAyLDU5MDAzLDU5MDA0LDU5MDA1LDU5MDA2LDU5MDA3'@; put 'LDU5MDA4LDU5MDA5LDU5MDEwLDU5MDExLDU5MDEyLDU5MDEzLDU5MDE0LDU5MDE1LDU5MDE2LDU5MDE3LDU5MDE4LDU5MDE5LDU5MDIwLDU5MDIxLDU5MDIyLDU5MDIzLDU5MDI0LDU5MDI1LDU5MDI2LDU5MDI3LDU5MDI4LDU5MDI5LDU5MDMwLDU5MDMxLDU5MDMyLDU5MDMzLDU5MDM0LDU5'@; put 'MDM1LDU5MDM2LDU5MDM3LDU5MDM4LDU5MDM5LDU5MDQwLDU5MDQxLDU5MDQyLDU5MDQzLDU5MDQ0LDU5MDQ1LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1'@; put 'LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEy'@; put 'NDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIw'@; put 'LDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LDU5MjYxLDU5MjYyLDU5MjYzLDU5MjY0LDU5MjY1LDU5MjY2LDU5MjY3LDU5MjY4LDU5MDQ2LDU5MDQ3LDU5MDQ4LDU5MDQ5LDU5MDUwLDU5'@; put 'MDUxLDU5MDUyLDU5MDUzLDU5MDU0LDU5MDU1LDU5MDU2LDU5MDU3LDU5MDU4LDU5MDU5LDU5MDYwLDU5MDYxLDU5MDYyLDU5MDYzLDU5MDY0LDU5MDY1LDU5MDY2LDU5MDY3LDU5MDY4LDU5MDY5LDU5MDcwLDU5MDcxLDU5MDcyLDU5MDczLDU5MDc0LDU5MDc1LDU5MDc2LDU5MDc3LDU5MDc4'@; put 'LDU5MDc5LDU5MDgwLDU5MDgxLDU5MDgyLDU5MDgzLDU5MDg0LDU5MDg1LDU5MDg2LDU5MDg3LDU5MDg4LDU5MDg5LDU5MDkwLDU5MDkxLDU5MDkyLDU5MDkzLDU5MDk0LDU5MDk1LDU5MDk2LDU5MDk3LDU5MDk4LDU5MDk5LDU5MTAwLDU5MTAxLDU5MTAyLDU5MTAzLDU5MTA0LDU5MTA1LDU5'@; put 'MTA2LDU5MTA3LDU5MTA4LDU5MTA5LDU5MTEwLDU5MTExLDU5MTEyLDU5MTEzLDU5MTE0LDU5MTE1LDU5MTE2LDU5MTE3LDU5MTE4LDU5MTE5LDU5MTIwLDU5MTIxLDU5MTIyLDU5MTIzLDU5MTI0LDU5MTI1LDU5MTI2LDU5MTI3LDU5MTI4LDU5MTI5LDU5MTMwLDU5MTMxLDU5MTMyLDU5MTMz'@; put 'LDU5MTM0LDU5MTM1LDU5MTM2LDU5MTM3LDU5MTM4LDU5MTM5LDU5MTQwLDU5MTQxLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDU5MjY5LDU5MjcwLDU5MjcxLDU5'@; put 'MjcyLDU5MjczLDU5Mjc0LDU5Mjc1LDU5Mjc2LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDU5Mjc3LDU5Mjc4LDU5Mjc5LDU5MjgwLDU5MjgxLDU5MjgyLDU5Mjgz'@; put 'LDY1MDc3LDY1MDc4LDY1MDgxLDY1MDgyLDY1MDg3LDY1MDg4LDY1MDg1LDY1MDg2LDY1MDg5LDY1MDkwLDY1MDkxLDY1MDkyLDU5Mjg0LDU5Mjg1LDY1MDgzLDY1MDg0LDY1MDc5LDY1MDgwLDY1MDczLDU5Mjg2LDY1MDc1LDY1MDc2LDU5Mjg3LDU5Mjg4LDU5Mjg5LDU5MjkwLDU5MjkxLDU5'@; put 'MjkyLDU5MjkzLDU5Mjk0LDU5Mjk1LDU5MTQyLDU5MTQzLDU5MTQ0LDU5MTQ1LDU5MTQ2LDU5MTQ3LDU5MTQ4LDU5MTQ5LDU5MTUwLDU5MTUxLDU5MTUyLDU5MTUzLDU5MTU0LDU5MTU1LDU5MTU2LDU5MTU3LDU5MTU4LDU5MTU5LDU5MTYwLDU5MTYxLDU5MTYyLDU5MTYzLDU5MTY0LDU5MTY1'@; put 'LDU5MTY2LDU5MTY3LDU5MTY4LDU5MTY5LDU5MTcwLDU5MTcxLDU5MTcyLDU5MTczLDU5MTc0LDU5MTc1LDU5MTc2LDU5MTc3LDU5MTc4LDU5MTc5LDU5MTgwLDU5MTgxLDU5MTgyLDU5MTgzLDU5MTg0LDU5MTg1LDU5MTg2LDU5MTg3LDU5MTg4LDU5MTg5LDU5MTkwLDU5MTkxLDU5MTkyLDU5'@; put 'MTkzLDU5MTk0LDU5MTk1LDU5MTk2LDU5MTk3LDU5MTk4LDU5MTk5LDU5MjAwLDU5MjAxLDU5MjAyLDU5MjAzLDU5MjA0LDU5MjA1LDU5MjA2LDU5MjA3LDU5MjA4LDU5MjA5LDU5MjEwLDU5MjExLDU5MjEyLDU5MjEzLDU5MjE0LDU5MjE1LDU5MjE2LDU5MjE3LDU5MjE4LDU5MjE5LDU5MjIw'@; put 'LDU5MjIxLDU5MjIyLDU5MjIzLDU5MjI0LDU5MjI1LDU5MjI2LDU5MjI3LDU5MjI4LDU5MjI5LDU5MjMwLDU5MjMxLDU5MjMyLDU5MjMzLDU5MjM0LDU5MjM1LDU5MjM2LDU5MjM3LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEw'@; put 'NTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDU5Mjk2LDU5Mjk3LDU5Mjk4LDU5Mjk5LDU5MzAwLDU5MzAxLDU5MzAyLDU5MzAzLDU5MzA0LDU5MzA1LDU5'@; put 'MzA2LDU5MzA3LDU5MzA4LDU5MzA5LDU5MzEwLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEw'@; put 'OTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDU5MzExLDU5MzEyLDU5MzEzLDU5MzE0LDU5MzE1LDU5MzE2LDU5MzE3LDU5MzE4LDU5MzE5LDU5MzIwLDU5MzIxLDU5MzIyLDU5MzIzLDcxNCw3MTUsNzI5LDgyMTEsODIxMyw4MjI5LDgyNDUsODQ1Myw4NDU3LDg1OTgsODU5OSw4NjAwLDg2'@; put 'MDEsODcyNSw4NzM1LDg3MzksODc4Niw4ODA2LDg4MDcsODg5NSw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1'@; put 'NzcsOTU3OCw5NTc5LDk1ODAsOTU4MSw5NTgyLDk1ODMsOTU4NCw5NTg1LDk1ODYsOTU4Nyw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYwOSw5NjEwLDk2MTEsOTYxMiw5NjEzLDk2MTQsOTYxNSw5NjE5LDk2MjAsOTYyMSw5NjYwLDk2NjEsOTY5OCw5Njk5LDk3'@; put 'MDAsOTcwMSw5NzM3LDg4NTMsMTIzMDYsMTIzMTcsMTIzMTgsNTkzMjQsNTkzMjUsNTkzMjYsNTkzMjcsNTkzMjgsNTkzMjksNTkzMzAsNTkzMzEsNTkzMzIsNTkzMzMsNTkzMzQsMjU3LDIyNSw0NjIsMjI0LDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQy'@; put 'LDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLDIzNCw1OTMsNzc0MywzMjQsMzI4LDUwNSw2MDksNTkzMzcsNTkzMzgsNTkzMzksNTkzNDAsMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1'@; put 'NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNTkzNDEsNTkzNDIsNTkzNDMs'@; put 'NTkzNDQsNTkzNDUsNTkzNDYsNTkzNDcsNTkzNDgsNTkzNDksNTkzNTAsNTkzNTEsNTkzNTIsNTkzNTMsNTkzNTQsNTkzNTUsNTkzNTYsNTkzNTcsNTkzNTgsNTkzNTksNTkzNjAsNTkzNjEsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMTI5'@; put 'NjMsMTMxOTgsMTMxOTksMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTcsMTMyNTIsMTMyNjIsMTMyNjUsMTMyNjYsMTMyNjksNjUwNzIsNjU1MDYsNjU1MDgsNTkzNjIsODQ4MSwxMjg0OSw1OTM2Myw4MjA4LDU5MzY0LDU5MzY1LDU5MzY2LDEyNTQwLDEyNDQzLDEyNDQ0LDEyNTQxLDEyNTQyLDEy'@; put 'Mjk0LDEyNDQ1LDEyNDQ2LDY1MDk3LDY1MDk4LDY1MDk5LDY1MTAwLDY1MTAxLDY1MTAyLDY1MTAzLDY1MTA0LDY1MTA1LDY1MTA2LDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDY1MTE5LDY1MTIwLDY1MTIxLDY1MTIyLDY1MTIz'@; put 'LDY1MTI0LDY1MTI1LDY1MTI2LDY1MTI4LDY1MTI5LDY1MTMwLDY1MTMxLDEyMzUwLDEyMjcyLDEyMjczLDEyMjc0LDEyMjc1LDEyMjc2LDEyMjc3LDEyMjc4LDEyMjc5LDEyMjgwLDEyMjgxLDEyMjgyLDEyMjgzLDEyMjk1LDU5MzgwLDU5MzgxLDU5MzgyLDU5MzgzLDU5Mzg0LDU5Mzg1LDU5'@; put 'Mzg2LDU5Mzg3LDU5Mzg4LDU5Mzg5LDU5MzkwLDU5MzkxLDU5MzkyLDk0NzIsOTQ3Myw5NDc0LDk0NzUsOTQ3Niw5NDc3LDk0NzgsOTQ3OSw5NDgwLDk0ODEsOTQ4Miw5NDgzLDk0ODQsOTQ4NSw5NDg2LDk0ODcsOTQ4OCw5NDg5LDk0OTAsOTQ5MSw5NDkyLDk0OTMsOTQ5NCw5NDk1LDk0OTYs'@; put 'OTQ5Nyw5NDk4LDk0OTksOTUwMCw5NTAxLDk1MDIsOTUwMyw5NTA0LDk1MDUsOTUwNiw5NTA3LDk1MDgsOTUwOSw5NTEwLDk1MTEsOTUxMiw5NTEzLDk1MTQsOTUxNSw5NTE2LDk1MTcsOTUxOCw5NTE5LDk1MjAsOTUyMSw5NTIyLDk1MjMsOTUyNCw5NTI1LDk1MjYsOTUyNyw5NTI4LDk1Mjks'@; put 'OTUzMCw5NTMxLDk1MzIsOTUzMyw5NTM0LDk1MzUsOTUzNiw5NTM3LDk1MzgsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LDk1NDcsNTkzOTMsNTkzOTQsNTkzOTUsNTkzOTYsNTkzOTcsNTkzOTgsNTkzOTksNTk0MDAsNTk0MDEsNTk0MDIsNTk0MDMsNTk0MDQsNTk0'@; put 'MDUsNTk0MDYsNTk0MDcsMjk0MDQsMjk0MDUsMjk0MDcsMjk0MTAsMjk0MTEsMjk0MTIsMjk0MTMsMjk0MTQsMjk0MTUsMjk0MTgsMjk0MTksMjk0MjksMjk0MzAsMjk0MzMsMjk0MzcsMjk0MzgsMjk0MzksMjk0NDAsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDYsMjk0NDcsMjk0NDgsMjk0NDks'@; put 'Mjk0NTEsMjk0NTIsMjk0NTMsMjk0NTUsMjk0NTYsMjk0NTcsMjk0NTgsMjk0NjAsMjk0NjQsMjk0NjUsMjk0NjYsMjk0NzEsMjk0NzIsMjk0NzUsMjk0NzYsMjk0NzgsMjk0NzksMjk0ODAsMjk0ODUsMjk0ODcsMjk0ODgsMjk0OTAsMjk0OTEsMjk0OTMsMjk0OTQsMjk0OTgsMjk0OTksMjk1'@; put 'MDAsMjk1MDEsMjk1MDQsMjk1MDUsMjk1MDYsMjk1MDcsMjk1MDgsMjk1MDksMjk1MTAsMjk1MTEsMjk1MTIsMjk1MTMsMjk1MTQsMjk1MTUsMjk1MTYsMjk1MTgsMjk1MTksMjk1MjEsMjk1MjMsMjk1MjQsMjk1MjUsMjk1MjYsMjk1MjgsMjk1MjksMjk1MzAsMjk1MzEsMjk1MzIsMjk1MzMs'@; put 'Mjk1MzQsMjk1MzUsMjk1MzcsMjk1MzgsMjk1MzksMjk1NDAsMjk1NDEsMjk1NDIsMjk1NDMsMjk1NDQsMjk1NDUsMjk1NDYsMjk1NDcsMjk1NTAsMjk1NTIsMjk1NTMsNTczNDQsNTczNDUsNTczNDYsNTczNDcsNTczNDgsNTczNDksNTczNTAsNTczNTEsNTczNTIsNTczNTMsNTczNTQsNTcz'@; put 'NTUsNTczNTYsNTczNTcsNTczNTgsNTczNTksNTczNjAsNTczNjEsNTczNjIsNTczNjMsNTczNjQsNTczNjUsNTczNjYsNTczNjcsNTczNjgsNTczNjksNTczNzAsNTczNzEsNTczNzIsNTczNzMsNTczNzQsNTczNzUsNTczNzYsNTczNzcsNTczNzgsNTczNzksNTczODAsNTczODEsNTczODIs'@; put 'NTczODMsNTczODQsNTczODUsNTczODYsNTczODcsNTczODgsNTczODksNTczOTAsNTczOTEsNTczOTIsNTczOTMsNTczOTQsNTczOTUsNTczOTYsNTczOTcsNTczOTgsNTczOTksNTc0MDAsNTc0MDEsNTc0MDIsNTc0MDMsNTc0MDQsNTc0MDUsNTc0MDYsNTc0MDcsNTc0MDgsNTc0MDksNTc0'@; put 'MTAsNTc0MTEsNTc0MTIsNTc0MTMsNTc0MTQsNTc0MTUsNTc0MTYsNTc0MTcsNTc0MTgsNTc0MTksNTc0MjAsNTc0MjEsNTc0MjIsNTc0MjMsNTc0MjQsNTc0MjUsNTc0MjYsNTc0MjcsNTc0MjgsNTc0MjksNTc0MzAsNTc0MzEsNTc0MzIsNTc0MzMsNTc0MzQsNTc0MzUsNTc0MzYsNTc0Mzcs'@; put 'Mjk1NTQsMjk1NTUsMjk1NTYsMjk1NTcsMjk1NTgsMjk1NTksMjk1NjAsMjk1NjEsMjk1NjIsMjk1NjMsMjk1NjQsMjk1NjUsMjk1NjcsMjk1NjgsMjk1NjksMjk1NzAsMjk1NzEsMjk1NzMsMjk1NzQsMjk1NzYsMjk1NzgsMjk1ODAsMjk1ODEsMjk1ODMsMjk1ODQsMjk1ODYsMjk1ODcsMjk1'@; put 'ODgsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTMsMjk1OTQsMjk1OTYsMjk1OTcsMjk1OTgsMjk2MDAsMjk2MDEsMjk2MDMsMjk2MDQsMjk2MDUsMjk2MDYsMjk2MDcsMjk2MDgsMjk2MTAsMjk2MTIsMjk2MTMsMjk2MTcsMjk2MjAsMjk2MjEsMjk2MjIsMjk2MjQsMjk2MjUsMjk2MjgsMjk2Mjks'@; put 'Mjk2MzAsMjk2MzEsMjk2MzMsMjk2MzUsMjk2MzYsMjk2MzcsMjk2MzgsMjk2MzksMjk2NDMsMjk2NDQsMjk2NDYsMjk2NTAsMjk2NTEsMjk2NTIsMjk2NTMsMjk2NTQsMjk2NTUsMjk2NTYsMjk2NTgsMjk2NTksMjk2NjAsMjk2NjEsMjk2NjMsMjk2NjUsMjk2NjYsMjk2NjcsMjk2NjgsMjk2'@; put 'NzAsMjk2NzIsMjk2NzQsMjk2NzUsMjk2NzYsMjk2NzgsMjk2NzksMjk2ODAsMjk2ODEsMjk2ODMsMjk2ODQsMjk2ODUsMjk2ODYsMjk2ODcsNTc0MzgsNTc0MzksNTc0NDAsNTc0NDEsNTc0NDIsNTc0NDMsNTc0NDQsNTc0NDUsNTc0NDYsNTc0NDcsNTc0NDgsNTc0NDksNTc0NTAsNTc0NTEs'@; put 'NTc0NTIsNTc0NTMsNTc0NTQsNTc0NTUsNTc0NTYsNTc0NTcsNTc0NTgsNTc0NTksNTc0NjAsNTc0NjEsNTc0NjIsNTc0NjMsNTc0NjQsNTc0NjUsNTc0NjYsNTc0NjcsNTc0NjgsNTc0NjksNTc0NzAsNTc0NzEsNTc0NzIsNTc0NzMsNTc0NzQsNTc0NzUsNTc0NzYsNTc0NzcsNTc0NzgsNTc0'@; put 'NzksNTc0ODAsNTc0ODEsNTc0ODIsNTc0ODMsNTc0ODQsNTc0ODUsNTc0ODYsNTc0ODcsNTc0ODgsNTc0ODksNTc0OTAsNTc0OTEsNTc0OTIsNTc0OTMsNTc0OTQsNTc0OTUsNTc0OTYsNTc0OTcsNTc0OTgsNTc0OTksNTc1MDAsNTc1MDEsNTc1MDIsNTc1MDMsNTc1MDQsNTc1MDUsNTc1MDYs'@; put 'NTc1MDcsNTc1MDgsNTc1MDksNTc1MTAsNTc1MTEsNTc1MTIsNTc1MTMsNTc1MTQsNTc1MTUsNTc1MTYsNTc1MTcsNTc1MTgsNTc1MTksNTc1MjAsNTc1MjEsNTc1MjIsNTc1MjMsNTc1MjQsNTc1MjUsNTc1MjYsNTc1MjcsNTc1MjgsNTc1MjksNTc1MzAsNTc1MzEsMjk2ODgsMjk2ODksMjk2'@; put 'OTAsMjk2OTEsMjk2OTIsMjk2OTMsMjk2OTQsMjk2OTUsMjk2OTYsMjk2OTcsMjk2OTgsMjk3MDAsMjk3MDMsMjk3MDQsMjk3MDcsMjk3MDgsMjk3MDksMjk3MTAsMjk3MTMsMjk3MTQsMjk3MTUsMjk3MTYsMjk3MTcsMjk3MTgsMjk3MTksMjk3MjAsMjk3MjEsMjk3MjQsMjk3MjUsMjk3MjYs'@; put 'Mjk3MjcsMjk3MjgsMjk3MjksMjk3MzEsMjk3MzIsMjk3MzUsMjk3MzcsMjk3MzksMjk3NDEsMjk3NDMsMjk3NDUsMjk3NDYsMjk3NTEsMjk3NTIsMjk3NTMsMjk3NTQsMjk3NTUsMjk3NTcsMjk3NTgsMjk3NTksMjk3NjAsMjk3NjIsMjk3NjMsMjk3NjQsMjk3NjUsMjk3NjYsMjk3NjcsMjk3'@; put 'NjgsMjk3NjksMjk3NzAsMjk3NzEsMjk3NzIsMjk3NzMsMjk3NzQsMjk3NzUsMjk3NzYsMjk3NzcsMjk3NzgsMjk3NzksMjk3ODAsMjk3ODIsMjk3ODQsMjk3ODksMjk3OTIsMjk3OTMsMjk3OTQsMjk3OTUsMjk3OTYsMjk3OTcsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDEsMjk4MDIsMjk4MDMs'@; put 'Mjk4MDQsMjk4MDYsMjk4MDcsMjk4MDksMjk4MTAsMjk4MTEsMjk4MTIsMjk4MTMsMjk4MTYsMjk4MTcsMjk4MTgsNTc1MzIsNTc1MzMsNTc1MzQsNTc1MzUsNTc1MzYsNTc1MzcsNTc1MzgsNTc1MzksNTc1NDAsNTc1NDEsNTc1NDIsNTc1NDMsNTc1NDQsNTc1NDUsNTc1NDYsNTc1NDcsNTc1'@; put 'NDgsNTc1NDksNTc1NTAsNTc1NTEsNTc1NTIsNTc1NTMsNTc1NTQsNTc1NTUsNTc1NTYsNTc1NTcsNTc1NTgsNTc1NTksNTc1NjAsNTc1NjEsNTc1NjIsNTc1NjMsNTc1NjQsNTc1NjUsNTc1NjYsNTc1NjcsNTc1NjgsNTc1NjksNTc1NzAsNTc1NzEsNTc1NzIsNTc1NzMsNTc1NzQsNTc1NzUs'@; put 'NTc1NzYsNTc1NzcsNTc1NzgsNTc1NzksNTc1ODAsNTc1ODEsNTc1ODIsNTc1ODMsNTc1ODQsNTc1ODUsNTc1ODYsNTc1ODcsNTc1ODgsNTc1ODksNTc1OTAsNTc1OTEsNTc1OTIsNTc1OTMsNTc1OTQsNTc1OTUsNTc1OTYsNTc1OTcsNTc1OTgsNTc1OTksNTc2MDAsNTc2MDEsNTc2MDIsNTc2'@; put 'MDMsNTc2MDQsNTc2MDUsNTc2MDYsNTc2MDcsNTc2MDgsNTc2MDksNTc2MTAsNTc2MTEsNTc2MTIsNTc2MTMsNTc2MTQsNTc2MTUsNTc2MTYsNTc2MTcsNTc2MTgsNTc2MTksNTc2MjAsNTc2MjEsNTc2MjIsNTc2MjMsNTc2MjQsNTc2MjUsMjk4MTksMjk4MjAsMjk4MjEsMjk4MjMsMjk4MjYs'@; put 'Mjk4MjgsMjk4MjksMjk4MzAsMjk4MzIsMjk4MzMsMjk4MzQsMjk4MzYsMjk4MzcsMjk4MzksMjk4NDEsMjk4NDIsMjk4NDMsMjk4NDQsMjk4NDUsMjk4NDYsMjk4NDcsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTEsMjk4NTMsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTgsMjk4NTksMjk4NjAsMjk4'@; put 'NjEsMjk4NjIsMjk4NjYsMjk4NjcsMjk4NjgsMjk4NjksMjk4NzAsMjk4NzEsMjk4NzIsMjk4NzMsMjk4NzQsMjk4NzUsMjk4NzYsMjk4NzcsMjk4NzgsMjk4NzksMjk4ODAsMjk4ODEsMjk4ODMsMjk4ODQsMjk4ODUsMjk4ODYsMjk4ODcsMjk4ODgsMjk4ODksMjk4OTAsMjk4OTEsMjk4OTIs'@; put 'Mjk4OTMsMjk4OTQsMjk4OTUsMjk4OTYsMjk4OTcsMjk4OTgsMjk4OTksMjk5MDAsMjk5MDEsMjk5MDIsMjk5MDMsMjk5MDQsMjk5MDUsMjk5MDcsMjk5MDgsMjk5MDksMjk5MTAsMjk5MTEsMjk5MTIsMjk5MTMsMjk5MTQsMjk5MTUsMjk5MTcsMjk5MTksMjk5MjEsMjk5MjUsMjk5MjcsMjk5'@; put 'MjgsMjk5MjksMjk5MzAsMjk5MzEsMjk5MzIsMjk5MzMsMjk5MzYsMjk5MzcsMjk5MzgsNTc2MjYsNTc2MjcsNTc2MjgsNTc2MjksNTc2MzAsNTc2MzEsNTc2MzIsNTc2MzMsNTc2MzQsNTc2MzUsNTc2MzYsNTc2MzcsNTc2MzgsNTc2MzksNTc2NDAsNTc2NDEsNTc2NDIsNTc2NDMsNTc2NDQs'@; put 'NTc2NDUsNTc2NDYsNTc2NDcsNTc2NDgsNTc2NDksNTc2NTAsNTc2NTEsNTc2NTIsNTc2NTMsNTc2NTQsNTc2NTUsNTc2NTYsNTc2NTcsNTc2NTgsNTc2NTksNTc2NjAsNTc2NjEsNTc2NjIsNTc2NjMsNTc2NjQsNTc2NjUsNTc2NjYsNTc2NjcsNTc2NjgsNTc2NjksNTc2NzAsNTc2NzEsNTc2'@; put 'NzIsNTc2NzMsNTc2NzQsNTc2NzUsNTc2NzYsNTc2NzcsNTc2NzgsNTc2NzksNTc2ODAsNTc2ODEsNTc2ODIsNTc2ODMsNTc2ODQsNTc2ODUsNTc2ODYsNTc2ODcsNTc2ODgsNTc2ODksNTc2OTAsNTc2OTEsNTc2OTIsNTc2OTMsNTc2OTQsNTc2OTUsNTc2OTYsNTc2OTcsNTc2OTgsNTc2OTks'@; put 'NTc3MDAsNTc3MDEsNTc3MDIsNTc3MDMsNTc3MDQsNTc3MDUsNTc3MDYsNTc3MDcsNTc3MDgsNTc3MDksNTc3MTAsNTc3MTEsNTc3MTIsNTc3MTMsNTc3MTQsNTc3MTUsNTc3MTYsNTc3MTcsNTc3MTgsNTc3MTksMjk5MzksMjk5NDEsMjk5NDQsMjk5NDUsMjk5NDYsMjk5NDcsMjk5NDgsMjk5'@; put 'NDksMjk5NTAsMjk5NTIsMjk5NTMsMjk5NTQsMjk5NTUsMjk5NTcsMjk5NTgsMjk5NTksMjk5NjAsMjk5NjEsMjk5NjIsMjk5NjMsMjk5NjQsMjk5NjYsMjk5NjgsMjk5NzAsMjk5NzIsMjk5NzMsMjk5NzQsMjk5NzUsMjk5NzksMjk5ODEsMjk5ODIsMjk5ODQsMjk5ODUsMjk5ODYsMjk5ODcs'@; put 'Mjk5ODgsMjk5OTAsMjk5OTEsMjk5OTQsMjk5OTgsMzAwMDQsMzAwMDYsMzAwMDksMzAwMTIsMzAwMTMsMzAwMTUsMzAwMTcsMzAwMTgsMzAwMTksMzAwMjAsMzAwMjIsMzAwMjMsMzAwMjUsMzAwMjYsMzAwMjksMzAwMzIsMzAwMzMsMzAwMzQsMzAwMzUsMzAwMzcsMzAwMzgsMzAwMzksMzAw'@; put 'NDAsMzAwNDUsMzAwNDYsMzAwNDcsMzAwNDgsMzAwNDksMzAwNTAsMzAwNTEsMzAwNTIsMzAwNTUsMzAwNTYsMzAwNTcsMzAwNTksMzAwNjAsMzAwNjEsMzAwNjIsMzAwNjMsMzAwNjQsMzAwNjUsMzAwNjcsMzAwNjksMzAwNzAsMzAwNzEsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgs'@; put 'MzAwODAsMzAwODEsMzAwODIsMzAwODQsMzAwODUsMzAwODcsNTc3MjAsNTc3MjEsNTc3MjIsNTc3MjMsNTc3MjQsNTc3MjUsNTc3MjYsNTc3MjcsNTc3MjgsNTc3MjksNTc3MzAsNTc3MzEsNTc3MzIsNTc3MzMsNTc3MzQsNTc3MzUsNTc3MzYsNTc3MzcsNTc3MzgsNTc3MzksNTc3NDAsNTc3'@; put 'NDEsNTc3NDIsNTc3NDMsNTc3NDQsNTc3NDUsNTc3NDYsNTc3NDcsNTc3NDgsNTc3NDksNTc3NTAsNTc3NTEsNTc3NTIsNTc3NTMsNTc3NTQsNTc3NTUsNTc3NTYsNTc3NTcsNTc3NTgsNTc3NTksNTc3NjAsNTc3NjEsNTc3NjIsNTc3NjMsNTc3NjQsNTc3NjUsNTc3NjYsNTc3NjcsNTc3Njgs'@; put 'NTc3NjksNTc3NzAsNTc3NzEsNTc3NzIsNTc3NzMsNTc3NzQsNTc3NzUsNTc3NzYsNTc3NzcsNTc3NzgsNTc3NzksNTc3ODAsNTc3ODEsNTc3ODIsNTc3ODMsNTc3ODQsNTc3ODUsNTc3ODYsNTc3ODcsNTc3ODgsNTc3ODksNTc3OTAsNTc3OTEsNTc3OTIsNTc3OTMsNTc3OTQsNTc3OTUsNTc3'@; put 'OTYsNTc3OTcsNTc3OTgsNTc3OTksNTc4MDAsNTc4MDEsNTc4MDIsNTc4MDMsNTc4MDQsNTc4MDUsNTc4MDYsNTc4MDcsNTc4MDgsNTc4MDksNTc4MTAsNTc4MTEsNTc4MTIsNTc4MTMsMzAwODgsMzAwODksMzAwOTAsMzAwOTIsMzAwOTMsMzAwOTQsMzAwOTYsMzAwOTksMzAxMDEsMzAxMDQs'@; put 'MzAxMDcsMzAxMDgsMzAxMTAsMzAxMTQsMzAxMTgsMzAxMTksMzAxMjAsMzAxMjEsMzAxMjIsMzAxMjUsMzAxMzQsMzAxMzUsMzAxMzgsMzAxMzksMzAxNDMsMzAxNDQsMzAxNDUsMzAxNTAsMzAxNTUsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjAsMzAxNjEsMzAxNjMsMzAxNjcsMzAxNjksMzAx'@; put 'NzAsMzAxNzIsMzAxNzMsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODEsMzAxODUsMzAxODgsMzAxODksMzAxOTAsMzAxOTEsMzAxOTQsMzAxOTUsMzAxOTcsMzAxOTgsMzAxOTksMzAyMDAsMzAyMDIsMzAyMDMsMzAyMDUsMzAyMDYsMzAyMTAsMzAyMTIsMzAyMTQsMzAyMTUsMzAyMTYsMzAyMTcs'@; put 'MzAyMTksMzAyMjEsMzAyMjIsMzAyMjMsMzAyMjUsMzAyMjYsMzAyMjcsMzAyMjgsMzAyMzAsMzAyMzQsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDEsMzAyNDMsMzAyNDcsMzAyNDgsMzAyNTIsMzAyNTQsMzAyNTUsMzAyNTcsMzAyNTgsMzAyNjIsMzAyNjMsMzAyNjUsMzAyNjYsMzAyNjcsMzAy'@; put 'NjksMzAyNzMsMzAyNzQsMzAyNzYsNTc4MTQsNTc4MTUsNTc4MTYsNTc4MTcsNTc4MTgsNTc4MTksNTc4MjAsNTc4MjEsNTc4MjIsNTc4MjMsNTc4MjQsNTc4MjUsNTc4MjYsNTc4MjcsNTc4MjgsNTc4MjksNTc4MzAsNTc4MzEsNTc4MzIsNTc4MzMsNTc4MzQsNTc4MzUsNTc4MzYsNTc4Mzcs'@; put 'NTc4MzgsNTc4MzksNTc4NDAsNTc4NDEsNTc4NDIsNTc4NDMsNTc4NDQsNTc4NDUsNTc4NDYsNTc4NDcsNTc4NDgsNTc4NDksNTc4NTAsNTc4NTEsNTc4NTIsNTc4NTMsNTc4NTQsNTc4NTUsNTc4NTYsNTc4NTcsNTc4NTgsNTc4NTksNTc4NjAsNTc4NjEsNTc4NjIsNTc4NjMsNTc4NjQsNTc4'@; put 'NjUsNTc4NjYsNTc4NjcsNTc4NjgsNTc4NjksNTc4NzAsNTc4NzEsNTc4NzIsNTc4NzMsNTc4NzQsNTc4NzUsNTc4NzYsNTc4NzcsNTc4NzgsNTc4NzksNTc4ODAsNTc4ODEsNTc4ODIsNTc4ODMsNTc4ODQsNTc4ODUsNTc4ODYsNTc4ODcsNTc4ODgsNTc4ODksNTc4OTAsNTc4OTEsNTc4OTIs'@; put 'NTc4OTMsNTc4OTQsNTc4OTUsNTc4OTYsNTc4OTcsNTc4OTgsNTc4OTksNTc5MDAsNTc5MDEsNTc5MDIsNTc5MDMsNTc5MDQsNTc5MDUsNTc5MDYsNTc5MDcsMzAyNzcsMzAyNzgsMzAyNzksMzAyODAsMzAyODEsMzAyODIsMzAyODMsMzAyODYsMzAyODcsMzAyODgsMzAyODksMzAyOTAsMzAy'@; put 'OTEsMzAyOTMsMzAyOTUsMzAyOTYsMzAyOTcsMzAyOTgsMzAyOTksMzAzMDEsMzAzMDMsMzAzMDQsMzAzMDUsMzAzMDYsMzAzMDgsMzAzMDksMzAzMTAsMzAzMTEsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTYsMzAzMTcsMzAzMTgsMzAzMjAsMzAzMjEsMzAzMjIsMzAzMjMsMzAzMjQsMzAzMjUs'@; put 'MzAzMjYsMzAzMjcsMzAzMjksMzAzMzAsMzAzMzIsMzAzMzUsMzAzMzYsMzAzMzcsMzAzMzksMzAzNDEsMzAzNDUsMzAzNDYsMzAzNDgsMzAzNDksMzAzNTEsMzAzNTIsMzAzNTQsMzAzNTYsMzAzNTcsMzAzNTksMzAzNjAsMzAzNjIsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjcsMzAz'@; put 'NjgsMzAzNjksMzAzNzAsMzAzNzEsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzcsMzAzNzgsMzAzNzksMzAzODAsMzAzODEsMzAzODMsMzAzODQsMzAzODcsMzAzODksMzAzOTAsMzAzOTEsMzAzOTIsMzAzOTMsMzAzOTQsMzAzOTUsMzAzOTYsMzAzOTcsMzAzOTgsMzA0MDAsMzA0MDEs'@; put 'MzA0MDMsMjE4MzQsMzg0NjMsMjI0NjcsMjUzODQsMjE3MTAsMjE3NjksMjE2OTYsMzAzNTMsMzAyODQsMzQxMDgsMzA3MDIsMzM0MDYsMzA4NjEsMjkyMzMsMzg1NTIsMzg3OTcsMjc2ODgsMjM0MzMsMjA0NzQsMjUzNTMsMjYyNjMsMjM3MzYsMzMwMTgsMjY2OTYsMzI5NDIsMjYxMTQsMzA0'@; put 'MTQsMjA5ODUsMjU5NDIsMjkxMDAsMzI3NTMsMzQ5NDgsMjA2NTgsMjI4ODUsMjUwMzQsMjg1OTUsMzM0NTMsMjU0MjAsMjUxNzAsMjE0ODUsMjE1NDMsMzE0OTQsMjA4NDMsMzAxMTYsMjQwNTIsMjUzMDAsMzYyOTksMzg3NzQsMjUyMjYsMzI3OTMsMjIzNjUsMzg3MTIsMzI2MTAsMjkyNDAs'@; put 'MzAzMzMsMjY1NzUsMzAzMzQsMjU2NzAsMjAzMzYsMzYxMzMsMjUzMDgsMzEyNTUsMjYwMDEsMjk2NzcsMjU2NDQsMjUyMDMsMzMzMjQsMzkwNDEsMjY0OTUsMjkyNTYsMjUxOTgsMjUyOTIsMjAyNzYsMjk5MjMsMjEzMjIsMjExNTAsMzI0NTgsMzcwMzAsMjQxMTAsMjY3NTgsMjcwMzYsMzMx'@; put 'NTIsMzI0NjUsMjY4MzQsMzA5MTcsMzQ0NDQsMzgyMjUsMjA2MjEsMzU4NzYsMzM1MDIsMzI5OTAsMjEyNTMsMzUwOTAsMjEwOTMsMzA0MDQsMzA0MDcsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTksMzA0MjEsMzA0MjUsMzA0MjYsMzA0MjgsMzA0MjksMzA0MzAsMzA0MzIsMzA0MzMsMzA0MzQs'@; put 'MzA0MzUsMzA0MzYsMzA0MzgsMzA0MzksMzA0NDAsMzA0NDEsMzA0NDIsMzA0NDMsMzA0NDQsMzA0NDUsMzA0NDgsMzA0NTEsMzA0NTMsMzA0NTQsMzA0NTUsMzA0NTgsMzA0NTksMzA0NjEsMzA0NjMsMzA0NjQsMzA0NjYsMzA0NjcsMzA0NjksMzA0NzAsMzA0NzQsMzA0NzYsMzA0NzgsMzA0'@; put 'NzksMzA0ODAsMzA0ODEsMzA0ODIsMzA0ODMsMzA0ODQsMzA0ODUsMzA0ODYsMzA0ODcsMzA0ODgsMzA0OTEsMzA0OTIsMzA0OTMsMzA0OTQsMzA0OTcsMzA0OTksMzA1MDAsMzA1MDEsMzA1MDMsMzA1MDYsMzA1MDcsMzA1MDgsMzA1MTAsMzA1MTIsMzA1MTMsMzA1MTQsMzA1MTUsMzA1MTYs'@; put 'MzA1MjEsMzA1MjMsMzA1MjUsMzA1MjYsMzA1MjcsMzA1MzAsMzA1MzIsMzA1MzMsMzA1MzQsMzA1MzYsMzA1MzcsMzA1MzgsMzA1MzksMzA1NDAsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NDcsMzA1NDgsMzA1NDksMzA1NTAsMzA1NTEsMzA1NTIsMzA1NTMsMzA1NTYsMzQxODAsMzg2'@; put 'NDksMjA0NDUsMjI1NjEsMzkyODEsMjM0NTMsMjUyNjUsMjUyNTMsMjYyOTIsMzU5NjEsNDAwNzcsMjkxOTAsMjY0NzksMzA4NjUsMjQ3NTQsMjEzMjksMjEyNzEsMzY3NDQsMzI5NzIsMzYxMjUsMzgwNDksMjA0OTMsMjkzODQsMjI3OTEsMjQ4MTEsMjg5NTMsMzQ5ODcsMjI4NjgsMzM1MTks'@; put 'MjY0MTIsMzE1MjgsMjM4NDksMzI1MDMsMjk5OTcsMjc4OTMsMzY0NTQsMzY4NTYsMzY5MjQsNDA3NjMsMjc2MDQsMzcxNDUsMzE1MDgsMjQ0NDQsMzA4ODcsMzQwMDYsMzQxMDksMjc2MDUsMjc2MDksMjc2MDYsMjQwNjUsMjQxOTksMzAyMDEsMzgzODEsMjU5NDksMjQzMzAsMjQ1MTcsMzY3'@; put 'NjcsMjI3MjEsMzMyMTgsMzY5OTEsMzg0OTEsMzg4MjksMzY3OTMsMzI1MzQsMzYxNDAsMjUxNTMsMjA0MTUsMjE0NjQsMjEzNDIsMzY3NzYsMzY3NzcsMzY3NzksMzY5NDEsMjY2MzEsMjQ0MjYsMzMxNzYsMzQ5MjAsNDAxNTAsMjQ5NzEsMjEwMzUsMzAyNTAsMjQ0MjgsMjU5OTYsMjg2MjYs'@; put 'MjgzOTIsMjM0ODYsMjU2NzIsMjA4NTMsMjA5MTIsMjY1NjQsMTk5OTMsMzExNzcsMzkyOTIsMjg4NTEsMzA1NTcsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjQsMzA1NjcsMzA1NjksMzA1NzAsMzA1NzMsMzA1NzQsMzA1NzUsMzA1NzYsMzA1NzcsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODEsMzA1'@; put 'ODIsMzA1ODMsMzA1ODQsMzA1ODYsMzA1ODcsMzA1ODgsMzA1OTMsMzA1OTQsMzA1OTUsMzA1OTgsMzA1OTksMzA2MDAsMzA2MDEsMzA2MDIsMzA2MDMsMzA2MDcsMzA2MDgsMzA2MTEsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTUsMzA2MTYsMzA2MTcsMzA2MTgsMzA2MTksMzA2MjAsMzA2MjEs'@; put 'MzA2MjIsMzA2MjUsMzA2MjcsMzA2MjgsMzA2MzAsMzA2MzIsMzA2MzUsMzA2MzcsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDIsMzA2NDQsMzA2NDYsMzA2NDcsMzA2NDgsMzA2NDksMzA2NTAsMzA2NTIsMzA2NTQsMzA2NTYsMzA2NTcsMzA2NTgsMzA2NTksMzA2NjAsMzA2NjEsMzA2NjIsMzA2'@; put 'NjMsMzA2NjQsMzA2NjUsMzA2NjYsMzA2NjcsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NzIsMzA2NzMsMzA2NzQsMzA2NzUsMzA2NzYsMzA2NzcsMzA2NzgsMzA2ODAsMzA2ODEsMzA2ODIsMzA2ODUsMzA2ODYsMzA2ODcsMzA2ODgsMzA2ODksMzA2OTIsMzAxNDksMjQxODIsMjk2MjcsMzM3NjAs'@; put 'MjU3NzMsMjUzMjAsMzgwNjksMjc4NzQsMjEzMzgsMjExODcsMjU2MTUsMzgwODIsMzE2MzYsMjAyNzEsMjQwOTEsMzMzMzQsMzMwNDYsMzMxNjIsMjgxOTYsMjc4NTAsMzk1MzksMjU0MjksMjEzNDAsMjE3NTQsMzQ5MTcsMjI0OTYsMTk5ODEsMjQwNjcsMjc0OTMsMzE4MDcsMzcwOTYsMjQ1'@; put 'OTgsMjU4MzAsMjk0NjgsMzUwMDksMjY0NDgsMjUxNjUsMzYxMzAsMzA1NzIsMzYzOTMsMzczMTksMjQ0MjUsMzM3NTYsMzQwODEsMzkxODQsMjE0NDIsMzQ0NTMsMjc1MzEsMjQ4MTMsMjQ4MDgsMjg3OTksMzM0ODUsMzMzMjksMjAxNzksMjc4MTUsMzQyNTUsMjU4MDUsMzE5NjEsMjcxMzMs'@; put 'MjYzNjEsMzM2MDksMjEzOTcsMzE1NzQsMjAzOTEsMjA4NzYsMjc5NzksMjM2MTgsMzY0NjEsMjU1NTQsMjE0NDksMzM1ODAsMzM1OTAsMjY1OTcsMzA5MDAsMjU2NjEsMjM1MTksMjM3MDAsMjQwNDYsMzU4MTUsMjUyODYsMjY2MTIsMzU5NjIsMjU2MDAsMjU1MzAsMzQ2MzMsMzkzMDcsMzU4'@; put 'NjMsMzI1NDQsMzgxMzAsMjAxMzUsMzg0MTYsMzkwNzYsMjYxMjQsMjk0NjIsMzA2OTQsMzA2OTYsMzA2OTgsMzA3MDMsMzA3MDQsMzA3MDUsMzA3MDYsMzA3MDgsMzA3MDksMzA3MTEsMzA3MTMsMzA3MTQsMzA3MTUsMzA3MTYsMzA3MjMsMzA3MjQsMzA3MjUsMzA3MjYsMzA3MjcsMzA3Mjgs'@; put 'MzA3MzAsMzA3MzEsMzA3MzQsMzA3MzUsMzA3MzYsMzA3MzksMzA3NDEsMzA3NDUsMzA3NDcsMzA3NTAsMzA3NTIsMzA3NTMsMzA3NTQsMzA3NTYsMzA3NjAsMzA3NjIsMzA3NjMsMzA3NjYsMzA3NjcsMzA3NjksMzA3NzAsMzA3NzEsMzA3NzMsMzA3NzQsMzA3ODEsMzA3ODMsMzA3ODUsMzA3'@; put 'ODYsMzA3ODcsMzA3ODgsMzA3OTAsMzA3OTIsMzA3OTMsMzA3OTQsMzA3OTUsMzA3OTcsMzA3OTksMzA4MDEsMzA4MDMsMzA4MDQsMzA4MDgsMzA4MDksMzA4MTAsMzA4MTEsMzA4MTIsMzA4MTQsMzA4MTUsMzA4MTYsMzA4MTcsMzA4MTgsMzA4MTksMzA4MjAsMzA4MjEsMzA4MjIsMzA4MjMs'@; put 'MzA4MjQsMzA4MjUsMzA4MzEsMzA4MzIsMzA4MzMsMzA4MzQsMzA4MzUsMzA4MzYsMzA4MzcsMzA4MzgsMzA4NDAsMzA4NDEsMzA4NDIsMzA4NDMsMzA4NDUsMzA4NDYsMzA4NDcsMzA4NDgsMzA4NDksMzA4NTAsMzA4NTEsMjIzMzAsMjM1ODEsMjQxMjAsMzgyNzEsMjA2MDcsMzI5MjgsMjEz'@; put 'NzgsMjU5NTAsMzAwMjEsMjE4MDksMjA1MTMsMzYyMjksMjUyMjAsMzgwNDYsMjYzOTcsMjIwNjYsMjg1MjYsMjQwMzQsMjE1NTcsMjg4MTgsMzY3MTAsMjUxOTksMjU3NjQsMjU1MDcsMjQ0NDMsMjg1NTIsMzcxMDgsMzMyNTEsMzY3ODQsMjM1NzYsMjYyMTYsMjQ1NjEsMjc3ODUsMzg0NzIs'@; put 'MzYyMjUsMzQ5MjQsMjU3NDUsMzEyMTYsMjI0NzgsMjcyMjUsMjUxMDQsMjE1NzYsMjAwNTYsMzEyNDMsMjQ4MDksMjg1NDgsMzU4MDIsMjUyMTUsMzY4OTQsMzk1NjMsMzEyMDQsMjE1MDcsMzAxOTYsMjUzNDUsMjEyNzMsMjc3NDQsMzY4MzEsMjQzNDcsMzk1MzYsMzI4MjcsNDA4MzEsMjAz'@; put 'NjAsMjM2MTAsMzYxOTYsMzI3MDksMjYwMjEsMjg4NjEsMjA4MDUsMjA5MTQsMzQ0MTEsMjM4MTUsMjM0NTYsMjUyNzcsMzcyMjgsMzAwNjgsMzYzNjQsMzEyNjQsMjQ4MzMsMzE2MDksMjAxNjcsMzI1MDQsMzA1OTcsMTk5ODUsMzMyNjEsMjEwMjEsMjA5ODYsMjcyNDksMjE0MTYsMzY0ODcs'@; put 'MzgxNDgsMzg2MDcsMjgzNTMsMzg1MDAsMjY5NzAsMzA4NTIsMzA4NTMsMzA4NTQsMzA4NTYsMzA4NTgsMzA4NTksMzA4NjMsMzA4NjQsMzA4NjYsMzA4NjgsMzA4NjksMzA4NzAsMzA4NzMsMzA4NzcsMzA4NzgsMzA4ODAsMzA4ODIsMzA4ODQsMzA4ODYsMzA4ODgsMzA4ODksMzA4OTAsMzA4'@; put 'OTEsMzA4OTIsMzA4OTMsMzA4OTQsMzA4OTUsMzA5MDEsMzA5MDIsMzA5MDMsMzA5MDQsMzA5MDYsMzA5MDcsMzA5MDgsMzA5MDksMzA5MTEsMzA5MTIsMzA5MTQsMzA5MTUsMzA5MTYsMzA5MTgsMzA5MTksMzA5MjAsMzA5MjQsMzA5MjUsMzA5MjYsMzA5MjcsMzA5MjksMzA5MzAsMzA5MzEs'@; put 'MzA5MzQsMzA5MzUsMzA5MzYsMzA5MzgsMzA5MzksMzA5NDAsMzA5NDEsMzA5NDIsMzA5NDMsMzA5NDQsMzA5NDUsMzA5NDYsMzA5NDcsMzA5NDgsMzA5NDksMzA5NTAsMzA5NTEsMzA5NTMsMzA5NTQsMzA5NTUsMzA5NTcsMzA5NTgsMzA5NTksMzA5NjAsMzA5NjEsMzA5NjMsMzA5NjUsMzA5'@; put 'NjYsMzA5NjgsMzA5NjksMzA5NzEsMzA5NzIsMzA5NzMsMzA5NzQsMzA5NzUsMzA5NzYsMzA5NzgsMzA5NzksMzA5ODAsMzA5ODIsMzA5ODMsMzA5ODQsMzA5ODUsMzA5ODYsMzA5ODcsMzA5ODgsMzA3ODQsMjA2NDgsMzA2NzksMjU2MTYsMzUzMDIsMjI3ODgsMjU1NzEsMjQwMjksMzEzNTks'@; put 'MjY5NDEsMjAyNTYsMzMzMzcsMjE5MTIsMjAwMTgsMzAxMjYsMzEzODMsMjQxNjIsMjQyMDIsMzgzODMsMjEwMTksMjE1NjEsMjg4MTAsMjU0NjIsMzgxODAsMjI0MDIsMjYxNDksMjY5NDMsMzcyNTUsMjE3NjcsMjgxNDcsMzI0MzEsMzQ4NTAsMjUxMzksMzI0OTYsMzAxMzMsMzM1NzYsMzA5'@; put 'MTMsMzg2MDQsMzY3NjYsMjQ5MDQsMjk5NDMsMzU3ODksMjc0OTIsMjEwNTAsMzYxNzYsMjc0MjUsMzI4NzQsMzM5MDUsMjIyNTcsMjEyNTQsMjAxNzQsMTk5OTUsMjA5NDUsMzE4OTUsMzcyNTksMzE3NTEsMjA0MTksMzY0NzksMzE3MTMsMzEzODgsMjU3MDMsMjM4MjgsMjA2NTIsMzMwMzAs'@; put 'MzAyMDksMzE5MjksMjgxNDAsMzI3MzYsMjY0NDksMjMzODQsMjM1NDQsMzA5MjMsMjU3NzQsMjU2MTksMjU1MTQsMjUzODcsMzgxNjksMjU2NDUsMzY3OTgsMzE1NzIsMzAyNDksMjUxNzEsMjI4MjMsMjE1NzQsMjc1MTMsMjA2NDMsMjUxNDAsMjQxMDIsMjc1MjYsMjAxOTUsMzYxNTEsMzQ5'@; put 'NTUsMjQ0NTMsMzY5MTAsMzA5ODksMzA5OTAsMzA5OTEsMzA5OTIsMzA5OTMsMzA5OTQsMzA5OTYsMzA5OTcsMzA5OTgsMzA5OTksMzFlMywzMTAwMSwzMTAwMiwzMTAwMywzMTAwNCwzMTAwNSwzMTAwNywzMTAwOCwzMTAwOSwzMTAxMCwzMTAxMSwzMTAxMywzMTAxNCwzMTAxNSwzMTAxNiwz'@; put 'MTAxNywzMTAxOCwzMTAxOSwzMTAyMCwzMTAyMSwzMTAyMiwzMTAyMywzMTAyNCwzMTAyNSwzMTAyNiwzMTAyNywzMTAyOSwzMTAzMCwzMTAzMSwzMTAzMiwzMTAzMywzMTAzNywzMTAzOSwzMTA0MiwzMTA0MywzMTA0NCwzMTA0NSwzMTA0NywzMTA1MCwzMTA1MSwzMTA1MiwzMTA1MywzMTA1'@; put 'NCwzMTA1NSwzMTA1NiwzMTA1NywzMTA1OCwzMTA2MCwzMTA2MSwzMTA2NCwzMTA2NSwzMTA3MywzMTA3NSwzMTA3NiwzMTA3OCwzMTA4MSwzMTA4MiwzMTA4MywzMTA4NCwzMTA4NiwzMTA4OCwzMTA4OSwzMTA5MCwzMTA5MSwzMTA5MiwzMTA5MywzMTA5NCwzMTA5NywzMTA5OSwzMTEwMCwz'@; put 'MTEwMSwzMTEwMiwzMTEwMywzMTEwNiwzMTEwNywzMTExMCwzMTExMSwzMTExMiwzMTExMywzMTExNSwzMTExNiwzMTExNywzMTExOCwzMTEyMCwzMTEyMSwzMTEyMiwyNDYwOCwzMjgyOSwyNTI4NSwyMDAyNSwyMTMzMywzNzExMiwyNTUyOCwzMjk2NiwyNjA4NiwyNzY5NCwyMDI5NCwyNDgx'@; put 'NCwyODEyOSwzNTgwNiwyNDM3NywzNDUwNywyNDQwMywyNTM3NywyMDgyNiwzMzYzMywyNjcyMywyMDk5MiwyNTQ0MywzNjQyNCwyMDQ5OCwyMzcwNywzMTA5NSwyMzU0OCwyMTA0MCwzMTI5MSwyNDc2NCwzNjk0NywzMDQyMywyNDUwMywyNDQ3MSwzMDM0MCwzNjQ2MCwyODc4MywzMDMzMSwz'@; put 'MTU2MSwzMDYzNCwyMDk3OSwzNzAxMSwyMjU2NCwyMDMwMiwyODQwNCwzNjg0MiwyNTkzMiwzMTUxNSwyOTM4MCwyODA2OCwzMjczNSwyMzI2NSwyNTI2OSwyNDIxMywyMjMyMCwzMzkyMiwzMTUzMiwyNDA5MywyNDM1MSwzNjg4MiwzMjUzMiwzOTA3MiwyNTQ3NCwyODM1OSwzMDg3MiwyODg1'@; put 'NywyMDg1NiwzODc0NywyMjQ0MywzMDAwNSwyMDI5MSwzMDAwOCwyNDIxNSwyNDgwNiwyMjg4MCwyODA5NiwyNzU4MywzMDg1NywyMTUwMCwzODYxMywyMDkzOSwyMDk5MywyNTQ4MSwyMTUxNCwzODAzNSwzNTg0MywzNjMwMCwyOTI0MSwzMDg3OSwzNDY3OCwzNjg0NSwzNTg1MywyMTQ3Miwz'@; put 'MTEyMywzMTEyNCwzMTEyNSwzMTEyNiwzMTEyNywzMTEyOCwzMTEyOSwzMTEzMSwzMTEzMiwzMTEzMywzMTEzNCwzMTEzNSwzMTEzNiwzMTEzNywzMTEzOCwzMTEzOSwzMTE0MCwzMTE0MSwzMTE0MiwzMTE0NCwzMTE0NSwzMTE0NiwzMTE0NywzMTE0OCwzMTE0OSwzMTE1MCwzMTE1MSwzMTE1'@; put 'MiwzMTE1MywzMTE1NCwzMTE1NiwzMTE1NywzMTE1OCwzMTE1OSwzMTE2MCwzMTE2NCwzMTE2NywzMTE3MCwzMTE3MiwzMTE3MywzMTE3NSwzMTE3NiwzMTE3OCwzMTE4MCwzMTE4MiwzMTE4MywzMTE4NCwzMTE4NywzMTE4OCwzMTE5MCwzMTE5MSwzMTE5MywzMTE5NCwzMTE5NSwzMTE5Niwz'@; put 'MTE5NywzMTE5OCwzMTIwMCwzMTIwMSwzMTIwMiwzMTIwNSwzMTIwOCwzMTIxMCwzMTIxMiwzMTIxNCwzMTIxNywzMTIxOCwzMTIxOSwzMTIyMCwzMTIyMSwzMTIyMiwzMTIyMywzMTIyNSwzMTIyNiwzMTIyOCwzMTIzMCwzMTIzMSwzMTIzMywzMTIzNiwzMTIzNywzMTIzOSwzMTI0MCwzMTI0'@; put 'MSwzMTI0MiwzMTI0NCwzMTI0NywzMTI0OCwzMTI0OSwzMTI1MCwzMTI1MSwzMTI1MywzMTI1NCwzMTI1NiwzMTI1NywzMTI1OSwzMTI2MCwxOTk2OSwzMDQ0NywyMTQ4NiwzODAyNSwzOTAzMCw0MDcxOCwzODE4OSwyMzQ1MCwzNTc0NiwyMDAwMiwxOTk5NiwyMDkwOCwzMzg5MSwyNTAyNiwy'@; put 'MTE2MCwyNjYzNSwyMDM3NSwyNDY4MywyMDkyMywyNzkzNCwyMDgyOCwyNTIzOCwyNjAwNywzODQ5NywzNTkxMCwzNjg4NywzMDE2OCwzNzExNywzMDU2MywyNzYwMiwyOTMyMiwyOTQyMCwzNTgzNSwyMjU4MSwzMDU4NSwzNjE3MiwyNjQ2MCwzODIwOCwzMjkyMiwyNDIzMCwyODE5MywyMjkz'@; put 'MCwzMTQ3MSwzMDcwMSwzODIwMywyNzU3MywyNjAyOSwzMjUyNiwyMjUzNCwyMDgxNywzODQzMSwyMzU0NSwyMjY5NywyMTU0NCwzNjQ2NiwyNTk1OCwzOTAzOSwyMjI0NCwzODA0NSwzMDQ2MiwzNjkyOSwyNTQ3OSwyMTcwMiwyMjgxMCwyMjg0MiwyMjQyNywzNjUzMCwyNjQyMSwzNjM0Niwz'@; put 'MzMzMywyMTA1NywyNDgxNiwyMjU0OSwzNDU1OCwyMzc4NCw0MDUxNywyMDQyMCwzOTA2OSwzNTc2OSwyMzA3NywyNDY5NCwyMTM4MCwyNTIxMiwzNjk0MywzNzEyMiwzOTI5NSwyNDY4MSwzMjc4MCwyMDc5OSwzMjgxOSwyMzU3MiwzOTI4NSwyNzk1MywyMDEwOCwzMTI2MSwzMTI2MywzMTI2'@; put 'NSwzMTI2NiwzMTI2OCwzMTI2OSwzMTI3MCwzMTI3MSwzMTI3MiwzMTI3MywzMTI3NCwzMTI3NSwzMTI3NiwzMTI3NywzMTI3OCwzMTI3OSwzMTI4MCwzMTI4MSwzMTI4MiwzMTI4NCwzMTI4NSwzMTI4NiwzMTI4OCwzMTI5MCwzMTI5NCwzMTI5NiwzMTI5NywzMTI5OCwzMTI5OSwzMTMwMCwz'@; put 'MTMwMSwzMTMwMywzMTMwNCwzMTMwNSwzMTMwNiwzMTMwNywzMTMwOCwzMTMwOSwzMTMxMCwzMTMxMSwzMTMxMiwzMTMxNCwzMTMxNSwzMTMxNiwzMTMxNywzMTMxOCwzMTMyMCwzMTMyMSwzMTMyMiwzMTMyMywzMTMyNCwzMTMyNSwzMTMyNiwzMTMyNywzMTMyOCwzMTMyOSwzMTMzMCwzMTMz'@; put 'MSwzMTMzMiwzMTMzMywzMTMzNCwzMTMzNSwzMTMzNiwzMTMzNywzMTMzOCwzMTMzOSwzMTM0MCwzMTM0MSwzMTM0MiwzMTM0MywzMTM0NSwzMTM0NiwzMTM0NywzMTM0OSwzMTM1NSwzMTM1NiwzMTM1NywzMTM1OCwzMTM2MiwzMTM2NSwzMTM2NywzMTM2OSwzMTM3MCwzMTM3MSwzMTM3Miwz'@; put 'MTM3NCwzMTM3NSwzMTM3NiwzMTM3OSwzMTM4MCwzMTM4NSwzMTM4NiwzMTM4NywzMTM5MCwzMTM5MywzMTM5NCwzNjE0NCwyMTQ1NywzMjYwMiwzMTU2NywyMDI0MCwyMDA0NywzODQwMCwyNzg2MSwyOTY0OCwzNDI4MSwyNDA3MCwzMDA1OCwzMjc2MywyNzE0NiwzMDcxOCwzODAzNCwzMjMy'@; put 'MSwyMDk2MSwyODkwMiwyMTQ1MywzNjgyMCwzMzUzOSwzNjEzNywyOTM1OSwzOTI3NywyNzg2NywyMjM0NiwzMzQ1OSwyNjA0MSwzMjkzOCwyNTE1MSwzODQ1MCwyMjk1MiwyMDIyMywzNTc3NSwzMjQ0MiwyNTkxOCwzMzc3OCwzODc1MCwyMTg1NywzOTEzNCwzMjkzMywyMTI5MCwzNTgzNywy'@; put 'MTUzNiwzMjk1NCwyNDIyMywyNzgzMiwzNjE1MywzMzQ1MiwzNzIxMCwyMTU0NSwyNzY3NSwyMDk5OCwzMjQzOSwyMjM2NywyODk1NCwyNzc3NCwzMTg4MSwyMjg1OSwyMDIyMSwyNDU3NSwyNDg2OCwzMTkxNCwyMDAxNiwyMzU1MywyNjUzOSwzNDU2MiwyMzc5MiwzODE1NSwzOTExOCwzMDEy'@; put 'NywyODkyNSwzNjg5OCwyMDkxMSwzMjU0MSwzNTc3MywyMjg1NywyMDk2NCwyMDMxNSwyMTU0MiwyMjgyNywyNTk3NSwzMjkzMiwyMzQxMywyNTIwNiwyNTI4MiwzNjc1MiwyNDEzMywyNzY3OSwzMTUyNiwyMDIzOSwyMDQ0MCwyNjM4MSwzMTM5NSwzMTM5NiwzMTM5OSwzMTQwMSwzMTQwMiwz'@; put 'MTQwMywzMTQwNiwzMTQwNywzMTQwOCwzMTQwOSwzMTQxMCwzMTQxMiwzMTQxMywzMTQxNCwzMTQxNSwzMTQxNiwzMTQxNywzMTQxOCwzMTQxOSwzMTQyMCwzMTQyMSwzMTQyMiwzMTQyNCwzMTQyNSwzMTQyNiwzMTQyNywzMTQyOCwzMTQyOSwzMTQzMCwzMTQzMSwzMTQzMiwzMTQzMywzMTQz'@; put 'NCwzMTQzNiwzMTQzNywzMTQzOCwzMTQzOSwzMTQ0MCwzMTQ0MSwzMTQ0MiwzMTQ0MywzMTQ0NCwzMTQ0NSwzMTQ0NywzMTQ0OCwzMTQ1MCwzMTQ1MSwzMTQ1MiwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MCwzMTQ2MywzMTQ2NCwzMTQ2NSwzMTQ2NiwzMTQ2NywzMTQ2OCwzMTQ3MCwzMTQ3Miwz'@; put 'MTQ3MywzMTQ3NCwzMTQ3NSwzMTQ3NiwzMTQ3NywzMTQ3OCwzMTQ3OSwzMTQ4MCwzMTQ4MywzMTQ4NCwzMTQ4NiwzMTQ4OCwzMTQ4OSwzMTQ5MCwzMTQ5MywzMTQ5NSwzMTQ5NywzMTUwMCwzMTUwMSwzMTUwMiwzMTUwNCwzMTUwNiwzMTUwNywzMTUxMCwzMTUxMSwzMTUxMiwzMTUxNCwzMTUx'@; put 'NiwzMTUxNywzMTUxOSwzMTUyMSwzMTUyMiwzMTUyMywzMTUyNywzMTUyOSwzMTUzMywyODAxNCwyODA3NCwzMTExOSwzNDk5MywyNDM0MywyOTk5NSwyNTI0MiwzNjc0MSwyMDQ2MywzNzM0MCwyNjAyMywzMzA3MSwzMzEwNSwyNDIyMCwzMzEwNCwzNjIxMiwyMTEwMywzNTIwNiwzNjE3MSwy'@; put 'Mjc5NywyMDYxMywyMDE4NCwzODQyOCwyOTIzOCwzMzE0NSwzNjEyNywyMzUwMCwzNTc0NywzODQ2OCwyMjkxOSwzMjUzOCwyMTY0OCwyMjEzNCwyMjAzMCwzNTgxMywyNTkxMywyNzAxMCwzODA0MSwzMDQyMiwyODI5NywyNDE3OCwyOTk3NiwyNjQzOCwyNjU3NywzMTQ4NywzMjkyNSwzNjIx'@; put 'NCwyNDg2MywzMTE3NCwyNTk1NCwzNjE5NSwyMDg3MiwyMTAxOCwzODA1MCwzMjU2OCwzMjkyMywzMjQzNCwyMzcwMywyODIwNywyNjQ2NCwzMTcwNSwzMDM0NywzOTY0MCwzMzE2NywzMjY2MCwzMTk1NywyNTYzMCwzODIyNCwzMTI5NSwyMTU3OCwyMTczMywyNzQ2OCwyNTYwMSwyNTA5Niw0'@; put 'MDUwOSwzMzAxMSwzMDEwNSwyMTEwNiwzODc2MSwzMzg4MywyNjY4NCwzNDUzMiwzODQwMSwzODU0OCwzODEyNCwyMDAxMCwyMTUwOCwzMjQ3MywyNjY4MSwzNjMxOSwzMjc4OSwyNjM1NiwyNDIxOCwzMjY5NywzMTUzNSwzMTUzNiwzMTUzOCwzMTU0MCwzMTU0MSwzMTU0MiwzMTU0MywzMTU0'@; put 'NSwzMTU0NywzMTU0OSwzMTU1MSwzMTU1MiwzMTU1MywzMTU1NCwzMTU1NSwzMTU1NiwzMTU1OCwzMTU2MCwzMTU2MiwzMTU2NSwzMTU2NiwzMTU3MSwzMTU3MywzMTU3NSwzMTU3NywzMTU4MCwzMTU4MiwzMTU4MywzMTU4NSwzMTU4NywzMTU4OCwzMTU4OSwzMTU5MCwzMTU5MSwzMTU5Miwz'@; put 'MTU5MywzMTU5NCwzMTU5NSwzMTU5NiwzMTU5NywzMTU5OSwzMTYwMCwzMTYwMywzMTYwNCwzMTYwNiwzMTYwOCwzMTYxMCwzMTYxMiwzMTYxMywzMTYxNSwzMTYxNywzMTYxOCwzMTYxOSwzMTYyMCwzMTYyMiwzMTYyMywzMTYyNCwzMTYyNSwzMTYyNiwzMTYyNywzMTYyOCwzMTYzMCwzMTYz'@; put 'MSwzMTYzMywzMTYzNCwzMTYzNSwzMTYzOCwzMTY0MCwzMTY0MSwzMTY0MiwzMTY0MywzMTY0NiwzMTY0NywzMTY0OCwzMTY1MSwzMTY1MiwzMTY1MywzMTY2MiwzMTY2MywzMTY2NCwzMTY2NiwzMTY2NywzMTY2OSwzMTY3MCwzMTY3MSwzMTY3MywzMTY3NCwzMTY3NSwzMTY3NiwzMTY3Nywz'@; put 'MTY3OCwzMTY3OSwzMTY4MCwzMTY4MiwzMTY4MywzMTY4NCwyMjQ2NiwzMjgzMSwyNjc3NSwyNDAzNywyNTkxNSwyMTE1MSwyNDY4NSw0MDg1OCwyMDM3OSwzNjUyNCwyMDg0NCwyMzQ2NywyNDMzOSwyNDA0MSwyNzc0MiwyNTMyOSwzNjEyOSwyMDg0OSwzODA1NywyMTI0NiwyNzgwNywzMzUw'@; put 'MywyOTM5OSwyMjQzNCwyNjUwMCwzNjE0MSwyMjgxNSwzNjc2NCwzMzczNSwyMTY1MywzMTYyOSwyMDI3MiwyNzgzNywyMzM5NiwyMjk5Myw0MDcyMywyMTQ3NiwzNDUwNiwzOTU5MiwzNTg5NSwzMjkyOSwyNTkyNSwzOTAzOCwyMjI2NiwzODU5OSwyMTAzOCwyOTkxNiwyMTA3MiwyMzUyMSwy'@; put 'NTM0NiwzNTA3NCwyMDA1NCwyNTI5NiwyNDYxOCwyNjg3NCwyMDg1MSwyMzQ0OCwyMDg5NiwzNTI2NiwzMTY0OSwzOTMwMiwzMjU5MiwyNDgxNSwyODc0OCwzNjE0MywyMDgwOSwyNDE5MSwzNjg5MSwyOTgwOCwzNTI2OCwyMjMxNywzMDc4OSwyNDQwMiw0MDg2MywzODM5NCwzNjcxMiwzOTc0'@; put 'MCwzNTgwOSwzMDMyOCwyNjY5MCwyNjU4OCwzNjMzMCwzNjE0OSwyMTA1MywzNjc0NiwyODM3OCwyNjgyOSwzODE0OSwzNzEwMSwyMjI2OSwyNjUyNCwzNTA2NSwzNjgwNywyMTcwNCwzMTY4NSwzMTY4OCwzMTY4OSwzMTY5MCwzMTY5MSwzMTY5MywzMTY5NCwzMTY5NSwzMTY5NiwzMTY5OCwz'@; put 'MTcwMCwzMTcwMSwzMTcwMiwzMTcwMywzMTcwNCwzMTcwNywzMTcwOCwzMTcxMCwzMTcxMSwzMTcxMiwzMTcxNCwzMTcxNSwzMTcxNiwzMTcxOSwzMTcyMCwzMTcyMSwzMTcyMywzMTcyNCwzMTcyNSwzMTcyNywzMTcyOCwzMTczMCwzMTczMSwzMTczMiwzMTczMywzMTczNCwzMTczNiwzMTcz'@; put 'NywzMTczOCwzMTczOSwzMTc0MSwzMTc0MywzMTc0NCwzMTc0NSwzMTc0NiwzMTc0NywzMTc0OCwzMTc0OSwzMTc1MCwzMTc1MiwzMTc1MywzMTc1NCwzMTc1NywzMTc1OCwzMTc2MCwzMTc2MSwzMTc2MiwzMTc2MywzMTc2NCwzMTc2NSwzMTc2NywzMTc2OCwzMTc2OSwzMTc3MCwzMTc3MSwz'@; put 'MTc3MiwzMTc3MywzMTc3NCwzMTc3NiwzMTc3NywzMTc3OCwzMTc3OSwzMTc4MCwzMTc4MSwzMTc4NCwzMTc4NSwzMTc4NywzMTc4OCwzMTc4OSwzMTc5MCwzMTc5MSwzMTc5MiwzMTc5MywzMTc5NCwzMTc5NSwzMTc5NiwzMTc5NywzMTc5OCwzMTc5OSwzMTgwMSwzMTgwMiwzMTgwMywzMTgw'@; put 'NCwzMTgwNSwzMTgwNiwzMTgxMCwzOTYwOCwyMzQwMSwyODAyMywyNzY4NiwyMDEzMywyMzQ3NSwzOTU1OSwzNzIxOSwyNWUzLDM3MDM5LDM4ODg5LDIxNTQ3LDI4MDg1LDIzNTA2LDIwOTg5LDIxODk4LDMyNTk3LDMyNzUyLDI1Nzg4LDI1NDIxLDI2MDk3LDI1MDIyLDI0NzE3LDI4OTM4LDI3'@; put 'NzM1LDI3NzIxLDIyODMxLDI2NDc3LDMzMzIyLDIyNzQxLDIyMTU4LDM1OTQ2LDI3NjI3LDM3MDg1LDIyOTA5LDMyNzkxLDIxNDk1LDI4MDA5LDIxNjIxLDIxOTE3LDMzNjU1LDMzNzQzLDI2NjgwLDMxMTY2LDIxNjQ0LDIwMzA5LDIxNTEyLDMwNDE4LDM1OTc3LDM4NDAyLDI3ODI3LDI4MDg4'@; put 'LDM2MjAzLDM1MDg4LDQwNTQ4LDM2MTU0LDIyMDc5LDQwNjU3LDMwMTY1LDI0NDU2LDI5NDA4LDI0NjgwLDIxNzU2LDIwMTM2LDI3MTc4LDM0OTEzLDI0NjU4LDM2NzIwLDIxNzAwLDI4ODg4LDM0NDI1LDQwNTExLDI3OTQ2LDIzNDM5LDI0MzQ0LDMyNDE4LDIxODk3LDIwMzk5LDI5NDkyLDIx'@; put 'NTY0LDIxNDAyLDIwNTA1LDIxNTE4LDIxNjI4LDIwMDQ2LDI0NTczLDI5Nzg2LDIyNzc0LDMzODk5LDMyOTkzLDM0Njc2LDI5MzkyLDMxOTQ2LDI4MjQ2LDMxODExLDMxODEyLDMxODEzLDMxODE0LDMxODE1LDMxODE2LDMxODE3LDMxODE4LDMxODE5LDMxODIwLDMxODIyLDMxODIzLDMxODI0'@; put 'LDMxODI1LDMxODI2LDMxODI3LDMxODI4LDMxODI5LDMxODMwLDMxODMxLDMxODMyLDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODM5LDMxODQwLDMxODQxLDMxODQyLDMxODQzLDMxODQ0LDMxODQ1LDMxODQ2LDMxODQ3LDMxODQ4LDMxODQ5LDMxODUwLDMxODUxLDMx'@; put 'ODUyLDMxODUzLDMxODU0LDMxODU1LDMxODU2LDMxODU3LDMxODU4LDMxODYxLDMxODYyLDMxODYzLDMxODY0LDMxODY1LDMxODY2LDMxODcwLDMxODcxLDMxODcyLDMxODczLDMxODc0LDMxODc1LDMxODc2LDMxODc3LDMxODc4LDMxODc5LDMxODgwLDMxODgyLDMxODgzLDMxODg0LDMxODg1'@; put 'LDMxODg2LDMxODg3LDMxODg4LDMxODkxLDMxODkyLDMxODk0LDMxODk3LDMxODk4LDMxODk5LDMxOTA0LDMxOTA1LDMxOTA3LDMxOTEwLDMxOTExLDMxOTEyLDMxOTEzLDMxOTE1LDMxOTE2LDMxOTE3LDMxOTE5LDMxOTIwLDMxOTI0LDMxOTI1LDMxOTI2LDMxOTI3LDMxOTI4LDMxOTMwLDMx'@; put 'OTMxLDI0MzU5LDM0MzgyLDIxODA0LDI1MjUyLDIwMTE0LDI3ODE4LDI1MTQzLDMzNDU3LDIxNzE5LDIxMzI2LDI5NTAyLDI4MzY5LDMwMDExLDIxMDEwLDIxMjcwLDM1ODA1LDI3MDg4LDI0NDU4LDI0NTc2LDI4MTQyLDIyMzUxLDI3NDI2LDI5NjE1LDI2NzA3LDM2ODI0LDMyNTMxLDI1NDQy'@; put 'LDI0NzM5LDIxNzk2LDMwMTg2LDM1OTM4LDI4OTQ5LDI4MDY3LDIzNDYyLDI0MTg3LDMzNjE4LDI0OTA4LDQwNjQ0LDMwOTcwLDM0NjQ3LDMxNzgzLDMwMzQzLDIwOTc2LDI0ODIyLDI5MDA0LDI2MTc5LDI0MTQwLDI0NjUzLDM1ODU0LDI4Nzg0LDI1MzgxLDM2NzQ1LDI0NTA5LDI0Njc0LDM0'@; put 'NTE2LDIyMjM4LDI3NTg1LDI0NzI0LDI0OTM1LDIxMzIxLDI0ODAwLDI2MjE0LDM2MTU5LDMxMjI5LDIwMjUwLDI4OTA1LDI3NzE5LDM1NzYzLDM1ODI2LDMyNDcyLDMzNjM2LDI2MTI3LDIzMTMwLDM5NzQ2LDI3OTg1LDI4MTUxLDM1OTA1LDI3OTYzLDIwMjQ5LDI4Nzc5LDMzNzE5LDI1MTEw'@; put 'LDI0Nzg1LDM4NjY5LDM2MTM1LDMxMDk2LDIwOTg3LDIyMzM0LDIyNTIyLDI2NDI2LDMwMDcyLDMxMjkzLDMxMjE1LDMxNjM3LDMxOTM1LDMxOTM2LDMxOTM4LDMxOTM5LDMxOTQwLDMxOTQyLDMxOTQ1LDMxOTQ3LDMxOTUwLDMxOTUxLDMxOTUyLDMxOTUzLDMxOTU0LDMxOTU1LDMxOTU2LDMx'@; put 'OTYwLDMxOTYyLDMxOTYzLDMxOTY1LDMxOTY2LDMxOTY5LDMxOTcwLDMxOTcxLDMxOTcyLDMxOTczLDMxOTc0LDMxOTc1LDMxOTc3LDMxOTc4LDMxOTc5LDMxOTgwLDMxOTgxLDMxOTgyLDMxOTg0LDMxOTg1LDMxOTg2LDMxOTg3LDMxOTg4LDMxOTg5LDMxOTkwLDMxOTkxLDMxOTkzLDMxOTk0'@; put 'LDMxOTk2LDMxOTk3LDMxOTk4LDMxOTk5LDMyZTMsMzIwMDEsMzIwMDIsMzIwMDMsMzIwMDQsMzIwMDUsMzIwMDYsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTEsMzIwMTIsMzIwMTMsMzIwMTQsMzIwMTUsMzIwMTYsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjAsMzIwMjEsMzIwMjIsMzIwMjMsMzIw'@; put 'MjQsMzIwMjUsMzIwMjYsMzIwMjcsMzIwMjgsMzIwMjksMzIwMzAsMzIwMzEsMzIwMzMsMzIwMzUsMzIwMzYsMzIwMzcsMzIwMzgsMzIwNDAsMzIwNDEsMzIwNDIsMzIwNDQsMzIwNDUsMzIwNDYsMzIwNDgsMzIwNDksMzIwNTAsMzIwNTEsMzIwNTIsMzIwNTMsMzIwNTQsMzI5MDgsMzkyNjks'@; put 'MzY4NTcsMjg2MDgsMzU3NDksNDA0ODEsMjMwMjAsMzI0ODksMzI1MjEsMjE1MTMsMjY0OTcsMjY4NDAsMzY3NTMsMzE4MjEsMzg1OTgsMjE0NTAsMjQ2MTMsMzAxNDIsMjc3NjIsMjEzNjMsMjMyNDEsMzI0MjMsMjUzODAsMjA5NjAsMzMwMzQsMjQwNDksMzQwMTUsMjUyMTYsMjA4NjQsMjMz'@; put 'OTUsMjAyMzgsMzEwODUsMjEwNTgsMjQ3NjAsMjc5ODIsMjM0OTIsMjM0OTAsMzU3NDUsMzU3NjAsMjYwODIsMjQ1MjQsMzg0NjksMjI5MzEsMzI0ODcsMzI0MjYsMjIwMjUsMjY1NTEsMjI4NDEsMjAzMzksMjM0NzgsMjExNTIsMzM2MjYsMzkwNTAsMzYxNTgsMzAwMDIsMzgwNzgsMjA1NTEs'@; put 'MzEyOTIsMjAyMTUsMjY1NTAsMzk1NTAsMjMyMzMsMjc1MTYsMzA0MTcsMjIzNjIsMjM1NzQsMzE1NDYsMzgzODgsMjkwMDYsMjA4NjAsMzI5MzcsMzMzOTIsMjI5MDQsMzI1MTYsMzM1NzUsMjY4MTYsMjY2MDQsMzA4OTcsMzA4MzksMjUzMTUsMjU0NDEsMzE2MTYsMjA0NjEsMjEwOTgsMjA5'@; put 'NDMsMzM2MTYsMjcwOTksMzc0OTIsMzYzNDEsMzYxNDUsMzUyNjUsMzgxOTAsMzE2NjEsMjAyMTQsMzIwNTUsMzIwNTYsMzIwNTcsMzIwNTgsMzIwNTksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjMsMzIwNjQsMzIwNjUsMzIwNjYsMzIwNjcsMzIwNjgsMzIwNjksMzIwNzAsMzIwNzEsMzIwNzIs'@; put 'MzIwNzMsMzIwNzQsMzIwNzUsMzIwNzYsMzIwNzcsMzIwNzgsMzIwNzksMzIwODAsMzIwODEsMzIwODIsMzIwODMsMzIwODQsMzIwODUsMzIwODYsMzIwODcsMzIwODgsMzIwODksMzIwOTAsMzIwOTEsMzIwOTIsMzIwOTMsMzIwOTQsMzIwOTUsMzIwOTYsMzIwOTcsMzIwOTgsMzIwOTksMzIx'@; put 'MDAsMzIxMDEsMzIxMDIsMzIxMDMsMzIxMDQsMzIxMDUsMzIxMDYsMzIxMDcsMzIxMDgsMzIxMDksMzIxMTEsMzIxMTIsMzIxMTMsMzIxMTQsMzIxMTUsMzIxMTYsMzIxMTcsMzIxMTgsMzIxMjAsMzIxMjEsMzIxMjIsMzIxMjMsMzIxMjQsMzIxMjUsMzIxMjYsMzIxMjcsMzIxMjgsMzIxMjks'@; put 'MzIxMzAsMzIxMzEsMzIxMzIsMzIxMzMsMzIxMzQsMzIxMzUsMzIxMzYsMzIxMzcsMzIxMzgsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDIsMzIxNDMsMzIxNDQsMzIxNDUsMzIxNDYsMzIxNDcsMzIxNDgsMzIxNDksMzIxNTAsMzIxNTEsMzIxNTIsMjA1ODEsMzMzMjgsMjEwNzMsMzkyNzksMjgx'@; put 'NzYsMjgyOTMsMjgwNzEsMjQzMTQsMjA3MjUsMjMwMDQsMjM1NTgsMjc5NzQsMjc3NDMsMzAwODYsMzM5MzEsMjY3MjgsMjI4NzAsMzU3NjIsMjEyODAsMzcyMzMsMzg0NzcsMzQxMjEsMjY4OTgsMzA5NzcsMjg5NjYsMzMwMTQsMjAxMzIsMzcwNjYsMjc5NzUsMzk1NTYsMjMwNDcsMjIyMDQs'@; put 'MjU2MDUsMzgxMjgsMzA2OTksMjAzODksMzMwNTAsMjk0MDksMzUyODIsMzkyOTAsMzI1NjQsMzI0NzgsMjExMTksMjU5NDUsMzcyMzcsMzY3MzUsMzY3MzksMjE0ODMsMzEzODIsMjU1ODEsMjU1MDksMzAzNDIsMzEyMjQsMzQ5MDMsMzg0NTQsMjUxMzAsMjExNjMsMzM0MTAsMjY3MDgsMjY0'@; put 'ODAsMjU0NjMsMzA1NzEsMzE0NjksMjc5MDUsMzI0NjcsMzUyOTksMjI5OTIsMjUxMDYsMzQyNDksMzM0NDUsMzAwMjgsMjA1MTEsMjAxNzEsMzAxMTcsMzU4MTksMjM2MjYsMjQwNjIsMzE1NjMsMjYwMjAsMzczMjksMjAxNzAsMjc5NDEsMzUxNjcsMzIwMzksMzgxODIsMjAxNjUsMzU4ODAs'@; put 'MzY4MjcsMzg3NzEsMjYxODcsMzExMDUsMzY4MTcsMjg5MDgsMjgwMjQsMzIxNTMsMzIxNTQsMzIxNTUsMzIxNTYsMzIxNTcsMzIxNTgsMzIxNTksMzIxNjAsMzIxNjEsMzIxNjIsMzIxNjMsMzIxNjQsMzIxNjUsMzIxNjcsMzIxNjgsMzIxNjksMzIxNzAsMzIxNzEsMzIxNzIsMzIxNzMsMzIx'@; put 'NzUsMzIxNzYsMzIxNzcsMzIxNzgsMzIxNzksMzIxODAsMzIxODEsMzIxODIsMzIxODMsMzIxODQsMzIxODUsMzIxODYsMzIxODcsMzIxODgsMzIxODksMzIxOTAsMzIxOTEsMzIxOTIsMzIxOTMsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIxOTksMzIyMDAsMzIyMDEsMzIyMDIs'@; put 'MzIyMDMsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMDcsMzIyMDgsMzIyMDksMzIyMTAsMzIyMTEsMzIyMTIsMzIyMTMsMzIyMTQsMzIyMTUsMzIyMTYsMzIyMTcsMzIyMTgsMzIyMTksMzIyMjAsMzIyMjEsMzIyMjIsMzIyMjMsMzIyMjQsMzIyMjUsMzIyMjYsMzIyMjcsMzIyMjgsMzIyMjksMzIy'@; put 'MzAsMzIyMzEsMzIyMzIsMzIyMzMsMzIyMzQsMzIyMzUsMzIyMzYsMzIyMzcsMzIyMzgsMzIyMzksMzIyNDAsMzIyNDEsMzIyNDIsMzIyNDMsMzIyNDQsMzIyNDUsMzIyNDYsMzIyNDcsMzIyNDgsMzIyNDksMzIyNTAsMjM2MTMsMjExNzAsMzM2MDYsMjA4MzQsMzM1NTAsMzA1NTUsMjYyMzAs'@; put 'NDAxMjAsMjAxNDAsMjQ3NzgsMzE5MzQsMzE5MjMsMzI0NjMsMjAxMTcsMzU2ODYsMjYyMjMsMzkwNDgsMzg3NDUsMjI2NTksMjU5NjQsMzgyMzYsMjQ0NTIsMzAxNTMsMzg3NDIsMzE0NTUsMzE0NTQsMjA5MjgsMjg4NDcsMzEzODQsMjU1NzgsMzEzNTAsMzI0MTYsMjk1OTAsMzg4OTMsMjAw'@; put 'MzcsMjg3OTIsMjAwNjEsMzcyMDIsMjE0MTcsMjU5MzcsMjYwODcsMzMyNzYsMzMyODUsMjE2NDYsMjM2MDEsMzAxMDYsMzg4MTYsMjUzMDQsMjk0MDEsMzAxNDEsMjM2MjEsMzk1NDUsMzM3MzgsMjM2MTYsMjE2MzIsMzA2OTcsMjAwMzAsMjc4MjIsMzI4NTgsMjUyOTgsMjU0NTQsMjQwNDAs'@; put 'MjA4NTUsMzYzMTcsMzYzODIsMzgxOTEsMjA0NjUsMjE0NzcsMjQ4MDcsMjg4NDQsMjEwOTUsMjU0MjQsNDA1MTUsMjMwNzEsMjA1MTgsMzA1MTksMjEzNjcsMzI0ODIsMjU3MzMsMjU4OTksMjUyMjUsMjU0OTYsMjA1MDAsMjkyMzcsMzUyNzMsMjA5MTUsMzU3NzYsMzI0NzcsMjIzNDMsMzM3'@; put 'NDAsMzgwNTUsMjA4OTEsMjE1MzEsMjM4MDMsMzIyNTEsMzIyNTIsMzIyNTMsMzIyNTQsMzIyNTUsMzIyNTYsMzIyNTcsMzIyNTgsMzIyNTksMzIyNjAsMzIyNjEsMzIyNjIsMzIyNjMsMzIyNjQsMzIyNjUsMzIyNjYsMzIyNjcsMzIyNjgsMzIyNjksMzIyNzAsMzIyNzEsMzIyNzIsMzIyNzMs'@; put 'MzIyNzQsMzIyNzUsMzIyNzYsMzIyNzcsMzIyNzgsMzIyNzksMzIyODAsMzIyODEsMzIyODIsMzIyODMsMzIyODQsMzIyODUsMzIyODYsMzIyODcsMzIyODgsMzIyODksMzIyOTAsMzIyOTEsMzIyOTIsMzIyOTMsMzIyOTQsMzIyOTUsMzIyOTYsMzIyOTcsMzIyOTgsMzIyOTksMzIzMDAsMzIz'@; put 'MDEsMzIzMDIsMzIzMDMsMzIzMDQsMzIzMDUsMzIzMDYsMzIzMDcsMzIzMDgsMzIzMDksMzIzMTAsMzIzMTEsMzIzMTIsMzIzMTMsMzIzMTQsMzIzMTYsMzIzMTcsMzIzMTgsMzIzMTksMzIzMjAsMzIzMjIsMzIzMjMsMzIzMjQsMzIzMjUsMzIzMjYsMzIzMjgsMzIzMjksMzIzMzAsMzIzMzEs'@; put 'MzIzMzIsMzIzMzMsMzIzMzQsMzIzMzUsMzIzMzYsMzIzMzcsMzIzMzgsMzIzMzksMzIzNDAsMzIzNDEsMzIzNDIsMzIzNDMsMzIzNDQsMzIzNDUsMzIzNDYsMzIzNDcsMzIzNDgsMzIzNDksMjA0MjYsMzE0NTksMjc5OTQsMzcwODksMzk1NjcsMjE4ODgsMjE2NTQsMjEzNDUsMjE2NzksMjQz'@; put 'MjAsMjU1NzcsMjY5OTksMjA5NzUsMjQ5MzYsMjEwMDIsMjI1NzAsMjEyMDgsMjIzNTAsMzA3MzMsMzA0NzUsMjQyNDcsMjQ5NTEsMzE5NjgsMjUxNzksMjUyMzksMjAxMzAsMjg4MjEsMzI3NzEsMjUzMzUsMjg5MDAsMzg3NTIsMjIzOTEsMzM0OTksMjY2MDcsMjY4NjksMzA5MzMsMzkwNjMs'@; put 'MzExODUsMjI3NzEsMjE2ODMsMjE0ODcsMjgyMTIsMjA4MTEsMjEwNTEsMjM0NTgsMzU4MzgsMzI5NDMsMjE4MjcsMjI0MzgsMjQ2OTEsMjIzNTMsMjE1NDksMzEzNTQsMjQ2NTYsMjMzODAsMjU1MTEsMjUyNDgsMjE0NzUsMjUxODcsMjM0OTUsMjY1NDMsMjE3NDEsMzEzOTEsMzM1MTAsMzcy'@; put 'MzksMjQyMTEsMzUwNDQsMjI4NDAsMjI0NDYsMjUzNTgsMzYzMjgsMzMwMDcsMjIzNTksMzE2MDcsMjAzOTMsMjQ1NTUsMjM0ODUsMjc0NTQsMjEyODEsMzE1NjgsMjkzNzgsMjY2OTQsMzA3MTksMzA1MTgsMjYxMDMsMjA5MTcsMjAxMTEsMzA0MjAsMjM3NDMsMzEzOTcsMzM5MDksMjI4NjIs'@; put 'Mzk3NDUsMjA2MDgsMzIzNTAsMzIzNTEsMzIzNTIsMzIzNTMsMzIzNTQsMzIzNTUsMzIzNTYsMzIzNTcsMzIzNTgsMzIzNTksMzIzNjAsMzIzNjEsMzIzNjIsMzIzNjMsMzIzNjQsMzIzNjUsMzIzNjYsMzIzNjcsMzIzNjgsMzIzNjksMzIzNzAsMzIzNzEsMzIzNzIsMzIzNzMsMzIzNzQsMzIz'@; put 'NzUsMzIzNzYsMzIzNzcsMzIzNzgsMzIzNzksMzIzODAsMzIzODEsMzIzODIsMzIzODMsMzIzODQsMzIzODUsMzIzODcsMzIzODgsMzIzODksMzIzOTAsMzIzOTEsMzIzOTIsMzIzOTMsMzIzOTQsMzIzOTUsMzIzOTYsMzIzOTcsMzIzOTgsMzIzOTksMzI0MDAsMzI0MDEsMzI0MDIsMzI0MDMs'@; put 'MzI0MDQsMzI0MDUsMzI0MDYsMzI0MDcsMzI0MDgsMzI0MDksMzI0MTAsMzI0MTIsMzI0MTMsMzI0MTQsMzI0MzAsMzI0MzYsMzI0NDMsMzI0NDQsMzI0NzAsMzI0ODQsMzI0OTIsMzI1MDUsMzI1MjIsMzI1MjgsMzI1NDIsMzI1NjcsMzI1NjksMzI1NzEsMzI1NzIsMzI1NzMsMzI1NzQsMzI1'@; put 'NzUsMzI1NzYsMzI1NzcsMzI1NzksMzI1ODIsMzI1ODMsMzI1ODQsMzI1ODUsMzI1ODYsMzI1ODcsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTEsMzI1OTQsMzI1OTUsMzkzMDQsMjQ4NzEsMjgyOTEsMjIzNzIsMjYxMTgsMjU0MTQsMjIyNTYsMjUzMjQsMjUxOTMsMjQyNzUsMzg0MjAsMjI0MDMs'@; put 'MjUyODksMjE4OTUsMzQ1OTMsMzMwOTgsMzY3NzEsMjE4NjIsMzM3MTMsMjY0NjksMzYxODIsMzQwMTMsMjMxNDYsMjY2MzksMjUzMTgsMzE3MjYsMzg0MTcsMjA4NDgsMjg1NzIsMzU4ODgsMjU1OTcsMzUyNzIsMjUwNDIsMzI1MTgsMjg4NjYsMjgzODksMjk3MDEsMjcwMjgsMjk0MzYsMjQy'@; put 'NjYsMzcwNzAsMjYzOTEsMjgwMTAsMjU0MzgsMjExNzEsMjkyODIsMzI3NjksMjAzMzIsMjMwMTMsMzcyMjYsMjg4ODksMjgwNjEsMjEyMDIsMjAwNDgsMzg2NDcsMzgyNTMsMzQxNzQsMzA5MjIsMzIwNDcsMjA3NjksMjI0MTgsMjU3OTQsMzI5MDcsMzE4NjcsMjc4ODIsMjY4NjUsMjY5NzQs'@; put 'MjA5MTksMjE0MDAsMjY3OTIsMjkzMTMsNDA2NTQsMzE3MjksMjk0MzIsMzExNjMsMjg0MzUsMjk3MDIsMjY0NDYsMzczMjQsNDAxMDAsMzEwMzYsMzM2NzMsMzM2MjAsMjE1MTksMjY2NDcsMjAwMjksMjEzODUsMjExNjksMzA3ODIsMjEzODIsMjEwMzMsMjA2MTYsMjAzNjMsMjA0MzIsMzI1'@; put 'OTgsMzI2MDEsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDYsMzI2MDgsMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MTUsMzI2MTksMzI2MjAsMzI2MjEsMzI2MjMsMzI2MjQsMzI2MjcsMzI2MjksMzI2MzAsMzI2MzEsMzI2MzIsMzI2MzQsMzI2MzUsMzI2MzYsMzI2MzcsMzI2MzksMzI2NDAs'@; put 'MzI2NDIsMzI2NDMsMzI2NDQsMzI2NDUsMzI2NDYsMzI2NDcsMzI2NDgsMzI2NDksMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NTgsMzI2NTksMzI2NjEsMzI2NjIsMzI2NjMsMzI2NjQsMzI2NjUsMzI2NjcsMzI2NjgsMzI2NzIsMzI2NzQsMzI2NzUsMzI2NzcsMzI2NzgsMzI2'@; put 'ODAsMzI2ODEsMzI2ODIsMzI2ODMsMzI2ODQsMzI2ODUsMzI2ODYsMzI2ODksMzI2OTEsMzI2OTIsMzI2OTMsMzI2OTQsMzI2OTUsMzI2OTgsMzI2OTksMzI3MDIsMzI3MDQsMzI3MDYsMzI3MDcsMzI3MDgsMzI3MTAsMzI3MTEsMzI3MTIsMzI3MTMsMzI3MTUsMzI3MTcsMzI3MTksMzI3MjAs'@; put 'MzI3MjEsMzI3MjIsMzI3MjMsMzI3MjYsMzI3MjcsMzI3MjksMzI3MzAsMzI3MzEsMzI3MzIsMzI3MzMsMzI3MzQsMzI3MzgsMzI3MzksMzAxNzgsMzE0MzUsMzE4OTAsMjc4MTMsMzg1ODIsMjExNDcsMjk4MjcsMjE3MzcsMjA0NTcsMzI4NTIsMzM3MTQsMzY4MzAsMzgyNTYsMjQyNjUsMjQ2'@; put 'MDQsMjgwNjMsMjQwODgsMjU5NDcsMzMwODAsMzgxNDIsMjQ2NTEsMjg4NjAsMzI0NTEsMzE5MTgsMjA5MzcsMjY3NTMsMzE5MjEsMzMzOTEsMjAwMDQsMzY3NDIsMzczMjcsMjYyMzgsMjAxNDIsMzU4NDUsMjU3NjksMzI4NDIsMjA2OTgsMzAxMDMsMjkxMzQsMjM1MjUsMzY3OTcsMjg1MTgs'@; put 'MjAxMDIsMjU3MzAsMzgyNDMsMjQyNzgsMjYwMDksMjEwMTUsMzUwMTAsMjg4NzIsMjExNTUsMjk0NTQsMjk3NDcsMjY1MTksMzA5NjcsMzg2NzgsMjAwMjAsMzcwNTEsNDAxNTgsMjgxMDcsMjA5NTUsMzYxNjEsMjE1MzMsMjUyOTQsMjk2MTgsMzM3NzcsMzg2NDYsNDA4MzYsMzgwODMsMjAy'@; put 'NzgsMzI2NjYsMjA5NDAsMjg3ODksMzg1MTcsMjM3MjUsMzkwNDYsMjE0NzgsMjAxOTYsMjgzMTYsMjk3MDUsMjcwNjAsMzA4MjcsMzkzMTEsMzAwNDEsMjEwMTYsMzAyNDQsMjc5NjksMjY2MTEsMjA4NDUsNDA4NTcsMzI4NDMsMjE2NTcsMzE1NDgsMzE0MjMsMzI3NDAsMzI3NDMsMzI3NDQs'@; put 'MzI3NDYsMzI3NDcsMzI3NDgsMzI3NDksMzI3NTEsMzI3NTQsMzI3NTYsMzI3NTcsMzI3NTgsMzI3NTksMzI3NjAsMzI3NjEsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzAsMzI3NzUsMzI3NzYsMzI3NzcsMzI3NzgsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3OTQsMzI3OTUsMzI3'@; put 'OTcsMzI3OTgsMzI3OTksMzI4MDEsMzI4MDMsMzI4MDQsMzI4MTEsMzI4MTIsMzI4MTMsMzI4MTQsMzI4MTUsMzI4MTYsMzI4MTgsMzI4MjAsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzMsMzI4MzYsMzI4MzcsMzI4MzksMzI4NDAsMzI4NDEsMzI4NDYsMzI4NDcsMzI4NDgs'@; put 'MzI4NDksMzI4NTEsMzI4NTMsMzI4NTQsMzI4NTUsMzI4NTcsMzI4NTksMzI4NjAsMzI4NjEsMzI4NjIsMzI4NjMsMzI4NjQsMzI4NjUsMzI4NjYsMzI4NjcsMzI4NjgsMzI4NjksMzI4NzAsMzI4NzEsMzI4NzIsMzI4NzUsMzI4NzYsMzI4NzcsMzI4NzgsMzI4NzksMzI4ODAsMzI4ODIsMzI4'@; put 'ODMsMzI4ODQsMzI4ODUsMzI4ODYsMzI4ODcsMzI4ODgsMzI4ODksMzI4OTAsMzI4OTEsMzI4OTIsMzI4OTMsMzg1MzQsMjI0MDQsMjUzMTQsMzg0NzEsMjcwMDQsMjMwNDQsMjU2MDIsMzE2OTksMjg0MzEsMzg0NzUsMzM0NDYsMjEzNDYsMzkwNDUsMjQyMDgsMjg4MDksMjU1MjMsMjEzNDgs'@; put 'MzQzODMsNDAwNjUsNDA1OTUsMzA4NjAsMzg3MDYsMzYzMzUsMzYxNjIsNDA1NzUsMjg1MTAsMzExMDgsMjQ0MDUsMzg0NzAsMjUxMzQsMzk1NDAsMjE1MjUsMzgxMDksMjAzODcsMjYwNTMsMjM2NTMsMjM2NDksMzI1MzMsMzQzODUsMjc2OTUsMjQ0NTksMjk1NzUsMjgzODgsMzI1MTEsMjM3'@; put 'ODIsMjUzNzEsMjM0MDIsMjgzOTAsMjEzNjUsMjAwODEsMjU1MDQsMzAwNTMsMjUyNDksMzY3MTgsMjAyNjIsMjAxNzcsMjc4MTQsMzI0MzgsMzU3NzAsMzM4MjEsMzQ3NDYsMzI1OTksMzY5MjMsMzgxNzksMzE2NTcsMzk1ODUsMzUwNjQsMzM4NTMsMjc5MzEsMzk1NTgsMzI0NzYsMjI5MjAs'@; put 'NDA2MzUsMjk1OTUsMzA3MjEsMzQ0MzQsMzk1MzIsMzk1NTQsMjIwNDMsMjE1MjcsMjI0NzUsMjAwODAsNDA2MTQsMjEzMzQsMzY4MDgsMzMwMzMsMzA2MTAsMzkzMTQsMzQ1NDIsMjgzODUsMzQwNjcsMjYzNjQsMjQ5MzAsMjg0NTksMzI4OTQsMzI4OTcsMzI4OTgsMzI5MDEsMzI5MDQsMzI5'@; put 'MDYsMzI5MDksMzI5MTAsMzI5MTEsMzI5MTIsMzI5MTMsMzI5MTQsMzI5MTYsMzI5MTcsMzI5MTksMzI5MjEsMzI5MjYsMzI5MzEsMzI5MzQsMzI5MzUsMzI5MzYsMzI5NDAsMzI5NDQsMzI5NDcsMzI5NDksMzI5NTAsMzI5NTIsMzI5NTMsMzI5NTUsMzI5NjUsMzI5NjcsMzI5NjgsMzI5Njks'@; put 'MzI5NzAsMzI5NzEsMzI5NzUsMzI5NzYsMzI5NzcsMzI5NzgsMzI5NzksMzI5ODAsMzI5ODEsMzI5ODQsMzI5OTEsMzI5OTIsMzI5OTQsMzI5OTUsMzI5OTgsMzMwMDYsMzMwMTMsMzMwMTUsMzMwMTcsMzMwMTksMzMwMjIsMzMwMjMsMzMwMjQsMzMwMjUsMzMwMjcsMzMwMjgsMzMwMjksMzMw'@; put 'MzEsMzMwMzIsMzMwMzUsMzMwMzYsMzMwNDUsMzMwNDcsMzMwNDksMzMwNTEsMzMwNTIsMzMwNTMsMzMwNTUsMzMwNTYsMzMwNTcsMzMwNTgsMzMwNTksMzMwNjAsMzMwNjEsMzMwNjIsMzMwNjMsMzMwNjQsMzMwNjUsMzMwNjYsMzMwNjcsMzMwNjksMzMwNzAsMzMwNzIsMzMwNzUsMzMwNzYs'@; put 'MzMwNzcsMzMwNzksMzMwODEsMzMwODIsMzMwODMsMzMwODQsMzMwODUsMzMwODcsMzU4ODEsMzM0MjYsMzM1NzksMzA0NTAsMjc2NjcsMjQ1MzcsMzM3MjUsMjk0ODMsMzM1NDEsMzgxNzAsMjc2MTEsMzA2ODMsMzgwODYsMjEzNTksMzM1MzgsMjA4ODIsMjQxMjUsMzU5ODAsMzYxNTIsMjAw'@; put 'NDAsMjk2MTEsMjY1MjIsMjY3NTcsMzcyMzgsMzg2NjUsMjkwMjgsMjc4MDksMzA0NzMsMjMxODYsMzgyMDksMjc1OTksMzI2NTQsMjYxNTEsMjM1MDQsMjI5NjksMjMxOTQsMzgzNzYsMzgzOTEsMjAyMDQsMzM4MDQsMzM5NDUsMjczMDgsMzA0MzEsMzgxOTIsMjk0NjcsMjY3OTAsMjMzOTEs'@; put 'MzA1MTEsMzcyNzQsMzg3NTMsMzE5NjQsMzY4NTUsMzU4NjgsMjQzNTcsMzE4NTksMzExOTIsMzUyNjksMjc4NTIsMzQ1ODgsMjM0OTQsMjQxMzAsMjY4MjUsMzA0OTYsMzI1MDEsMjA4ODUsMjA4MTMsMjExOTMsMjMwODEsMzI1MTcsMzg3NTQsMzM0OTUsMjU1NTEsMzA1OTYsMzQyNTYsMzEx'@; put 'ODYsMjgyMTgsMjQyMTcsMjI5MzcsMzQwNjUsMjg3ODEsMjc2NjUsMjUyNzksMzAzOTksMjU5MzUsMjQ3NTEsMzgzOTcsMjYxMjYsMzQ3MTksNDA0ODMsMzgxMjUsMjE1MTcsMjE2MjksMzU4ODQsMjU3MjAsMzMwODgsMzMwODksMzMwOTAsMzMwOTEsMzMwOTIsMzMwOTMsMzMwOTUsMzMwOTcs'@; put 'MzMxMDEsMzMxMDIsMzMxMDMsMzMxMDYsMzMxMTAsMzMxMTEsMzMxMTIsMzMxMTUsMzMxMTYsMzMxMTcsMzMxMTgsMzMxMTksMzMxMjEsMzMxMjIsMzMxMjMsMzMxMjQsMzMxMjYsMzMxMjgsMzMxMzAsMzMxMzEsMzMxMzIsMzMxMzUsMzMxMzgsMzMxMzksMzMxNDEsMzMxNDIsMzMxNDMsMzMx'@; put 'NDQsMzMxNTMsMzMxNTUsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNTksMzMxNjEsMzMxNjMsMzMxNjQsMzMxNjUsMzMxNjYsMzMxNjgsMzMxNzAsMzMxNzEsMzMxNzIsMzMxNzMsMzMxNzQsMzMxNzUsMzMxNzcsMzMxNzgsMzMxODIsMzMxODMsMzMxODQsMzMxODUsMzMxODYsMzMxODgsMzMxODks'@; put 'MzMxOTEsMzMxOTMsMzMxOTUsMzMxOTYsMzMxOTcsMzMxOTgsMzMxOTksMzMyMDAsMzMyMDEsMzMyMDIsMzMyMDQsMzMyMDUsMzMyMDYsMzMyMDcsMzMyMDgsMzMyMDksMzMyMTIsMzMyMTMsMzMyMTQsMzMyMTUsMzMyMjAsMzMyMjEsMzMyMjMsMzMyMjQsMzMyMjUsMzMyMjcsMzMyMjksMzMy'@; put 'MzAsMzMyMzEsMzMyMzIsMzMyMzMsMzMyMzQsMzMyMzUsMjU3MjEsMzQzMjEsMjcxNjksMzMxODAsMzA5NTIsMjU3MDUsMzk3NjQsMjUyNzMsMjY0MTEsMzM3MDcsMjI2OTYsNDA2NjQsMjc4MTksMjg0NDgsMjM1MTgsMzg0NzYsMzU4NTEsMjkyNzksMjY1NzYsMjUyODcsMjkyODEsMjAxMzcs'@; put 'MjI5ODIsMjc1OTcsMjI2NzUsMjYyODYsMjQxNDksMjEyMTUsMjQ5MTcsMjY0MDgsMzA0NDYsMzA1NjYsMjkyODcsMzEzMDIsMjUzNDMsMjE3MzgsMjE1ODQsMzgwNDgsMzcwMjcsMjMwNjgsMzI0MzUsMjc2NzAsMjAwMzUsMjI5MDIsMzI3ODQsMjI4NTYsMjEzMzUsMzAwMDcsMzg1OTAsMjIy'@; put 'MTgsMjUzNzYsMzMwNDEsMjQ3MDAsMzgzOTMsMjgxMTgsMjE2MDIsMzkyOTcsMjA4NjksMjMyNzMsMzMwMjEsMjI5NTgsMzg2NzUsMjA1MjIsMjc4NzcsMjM2MTIsMjUzMTEsMjAzMjAsMjEzMTEsMzMxNDcsMzY4NzAsMjgzNDYsMzQwOTEsMjUyODgsMjQxODAsMzA5MTAsMjU3ODEsMjU0Njcs'@; put 'MjQ1NjUsMjMwNjQsMzcyNDcsNDA0NzksMjM2MTUsMjU0MjMsMzI4MzQsMjM0MjEsMjE4NzAsMzgyMTgsMzgyMjEsMjgwMzcsMjQ3NDQsMjY1OTIsMjk0MDYsMjA5NTcsMjM0MjUsMzMyMzYsMzMyMzcsMzMyMzgsMzMyMzksMzMyNDAsMzMyNDEsMzMyNDIsMzMyNDMsMzMyNDQsMzMyNDUsMzMy'@; put 'NDYsMzMyNDcsMzMyNDgsMzMyNDksMzMyNTAsMzMyNTIsMzMyNTMsMzMyNTQsMzMyNTYsMzMyNTcsMzMyNTksMzMyNjIsMzMyNjMsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzEsMzMyNzIsMzMyNzMsMzMyNzQsMzMyNzcsMzMyNzksMzMyODMsMzMyODcsMzMyODgsMzMyODks'@; put 'MzMyOTAsMzMyOTEsMzMyOTQsMzMyOTUsMzMyOTcsMzMyOTksMzMzMDEsMzMzMDIsMzMzMDMsMzMzMDQsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTIsMzMzMTYsMzMzMTcsMzMzMTgsMzMzMTksMzMzMjEsMzMzMjYsMzMzMzAsMzMzMzgsMzMzNDAsMzMzNDEsMzMzNDMsMzMzNDQsMzMzNDUsMzMz'@; put 'NDYsMzMzNDcsMzMzNDksMzMzNTAsMzMzNTIsMzMzNTQsMzMzNTYsMzMzNTcsMzMzNTgsMzMzNjAsMzMzNjEsMzMzNjIsMzMzNjMsMzMzNjQsMzMzNjUsMzMzNjYsMzMzNjcsMzMzNjksMzMzNzEsMzMzNzIsMzMzNzMsMzMzNzQsMzMzNzYsMzMzNzcsMzMzNzgsMzMzNzksMzMzODAsMzMzODEs'@; put 'MzMzODIsMzMzODMsMzMzODUsMjUzMTksMjc4NzAsMjkyNzUsMjUxOTcsMzgwNjIsMzI0NDUsMzMwNDMsMjc5ODcsMjA4OTIsMjQzMjQsMjI5MDAsMjExNjIsMjQ1OTQsMjI4OTksMjYyNjIsMzQzODQsMzAxMTEsMjUzODYsMjUwNjIsMzE5ODMsMzU4MzQsMjE3MzQsMjc0MzEsNDA0ODUsMjc1'@; put 'NzIsMzQyNjEsMjE1ODksMjA1OTgsMjc4MTIsMjE4NjYsMzYyNzYsMjkyMjgsMjQwODUsMjQ1OTcsMjk3NTAsMjUyOTMsMjU0OTAsMjkyNjAsMjQ0NzIsMjgyMjcsMjc5NjYsMjU4NTYsMjg1MDQsMzA0MjQsMzA5MjgsMzA0NjAsMzAwMzYsMjEwMjgsMjE0NjcsMjAwNTEsMjQyMjIsMjYwNDks'@; put 'MzI4MTAsMzI5ODIsMjUyNDMsMjE2MzgsMjEwMzIsMjg4NDYsMzQ5NTcsMzYzMDUsMjc4NzMsMjE2MjQsMzI5ODYsMjI1MjEsMzUwNjAsMzYxODAsMzg1MDYsMzcxOTcsMjAzMjksMjc4MDMsMjE5NDMsMzA0MDYsMzA3NjgsMjUyNTYsMjg5MjEsMjg1NTgsMjQ0MjksMzQwMjgsMjY4NDIsMzA4'@; put 'NDQsMzE3MzUsMzMxOTIsMjYzNzksNDA1MjcsMjU0NDcsMzA4OTYsMjIzODMsMzA3MzgsMzg3MTMsMjUyMDksMjUyNTksMjExMjgsMjk3NDksMjc2MDcsMzMzODYsMzMzODcsMzMzODgsMzMzODksMzMzOTMsMzMzOTcsMzMzOTgsMzMzOTksMzM0MDAsMzM0MDMsMzM0MDQsMzM0MDgsMzM0MDks'@; put 'MzM0MTEsMzM0MTMsMzM0MTQsMzM0MTUsMzM0MTcsMzM0MjAsMzM0MjQsMzM0MjcsMzM0MjgsMzM0MjksMzM0MzAsMzM0MzQsMzM0MzUsMzM0MzgsMzM0NDAsMzM0NDIsMzM0NDMsMzM0NDcsMzM0NTgsMzM0NjEsMzM0NjIsMzM0NjYsMzM0NjcsMzM0NjgsMzM0NzEsMzM0NzIsMzM0NzQsMzM0'@; put 'NzUsMzM0NzcsMzM0NzgsMzM0ODEsMzM0ODgsMzM0OTQsMzM0OTcsMzM0OTgsMzM1MDEsMzM1MDYsMzM1MTEsMzM1MTIsMzM1MTMsMzM1MTQsMzM1MTYsMzM1MTcsMzM1MTgsMzM1MjAsMzM1MjIsMzM1MjMsMzM1MjUsMzM1MjYsMzM1MjgsMzM1MzAsMzM1MzIsMzM1MzMsMzM1MzQsMzM1MzUs'@; put 'MzM1MzYsMzM1NDYsMzM1NDcsMzM1NDksMzM1NTIsMzM1NTQsMzM1NTUsMzM1NTgsMzM1NjAsMzM1NjEsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjgsMzM1NjksMzM1NzAsMzM1NzEsMzM1NzIsMzM1NzMsMzM1NzQsMzM1NzcsMzM1NzgsMzM1ODIsMzM1ODQsMzM1ODYsMzM1OTEsMzM1OTUsMzM1'@; put 'OTcsMjE4NjAsMzMwODYsMzAxMzAsMzAzODIsMjEzMDUsMzAxNzQsMjA3MzEsMjM2MTcsMzU2OTIsMzE2ODcsMjA1NTksMjkyNTUsMzk1NzUsMzkxMjgsMjg0MTgsMjk5MjIsMzEwODAsMjU3MzUsMzA2MjksMjUzNDAsMzkwNTcsMzYxMzksMjE2OTcsMzI4NTYsMjAwNTAsMjIzNzgsMzM1Mjks'@; put 'MzM4MDUsMjQxNzksMjA5NzMsMjk5NDIsMzU3ODAsMjM2MzEsMjIzNjksMjc5MDAsMzkwNDcsMjMxMTAsMzA3NzIsMzk3NDgsMzY4NDMsMzE4OTMsMjEwNzgsMjUxNjksMzgxMzgsMjAxNjYsMzM2NzAsMzM4ODksMzM3NjksMzM5NzAsMjI0ODQsMjY0MjAsMjIyNzUsMjYyMjIsMjgwMDYsMzU4'@; put 'ODksMjYzMzMsMjg2ODksMjYzOTksMjc0NTAsMjY2NDYsMjUxMTQsMjI5NzEsMTk5NzEsMjA5MzIsMjg0MjIsMjY1NzgsMjc3OTEsMjA4NTQsMjY4MjcsMjI4NTUsMjc0OTUsMzAwNTQsMjM4MjIsMzMwNDAsNDA3ODQsMjYwNzEsMzEwNDgsMzEwNDEsMzk1NjksMzYyMTUsMjM2ODIsMjAwNjIs'@; put 'MjAyMjUsMjE1NTEsMjI4NjUsMzA3MzIsMjIxMjAsMjc2NjgsMzY4MDQsMjQzMjMsMjc3NzMsMjc4NzUsMzU3NTUsMjU0ODgsMzM1OTgsMzM1OTksMzM2MDEsMzM2MDIsMzM2MDQsMzM2MDUsMzM2MDgsMzM2MTAsMzM2MTEsMzM2MTIsMzM2MTMsMzM2MTQsMzM2MTksMzM2MjEsMzM2MjIsMzM2'@; put 'MjMsMzM2MjQsMzM2MjUsMzM2MjksMzM2MzQsMzM2NDgsMzM2NDksMzM2NTAsMzM2NTEsMzM2NTIsMzM2NTMsMzM2NTQsMzM2NTcsMzM2NTgsMzM2NjIsMzM2NjMsMzM2NjQsMzM2NjUsMzM2NjYsMzM2NjcsMzM2NjgsMzM2NzEsMzM2NzIsMzM2NzQsMzM2NzUsMzM2NzYsMzM2NzcsMzM2Nzks'@; put 'MzM2ODAsMzM2ODEsMzM2ODQsMzM2ODUsMzM2ODYsMzM2ODcsMzM2ODksMzM2OTAsMzM2OTMsMzM2OTUsMzM2OTcsMzM2OTgsMzM2OTksMzM3MDAsMzM3MDEsMzM3MDIsMzM3MDMsMzM3MDgsMzM3MDksMzM3MTAsMzM3MTEsMzM3MTcsMzM3MjMsMzM3MjYsMzM3MjcsMzM3MzAsMzM3MzEsMzM3'@; put 'MzIsMzM3MzQsMzM3MzYsMzM3MzcsMzM3MzksMzM3NDEsMzM3NDIsMzM3NDQsMzM3NDUsMzM3NDYsMzM3NDcsMzM3NDksMzM3NTEsMzM3NTMsMzM3NTQsMzM3NTUsMzM3NTgsMzM3NjIsMzM3NjMsMzM3NjQsMzM3NjYsMzM3NjcsMzM3NjgsMzM3NzEsMzM3NzIsMzM3NzMsMjQ2ODgsMjc5NjUs'@; put 'MjkzMDEsMjUxOTAsMzgwMzAsMzgwODUsMjEzMTUsMzY4MDEsMzE2MTQsMjAxOTEsMzU4NzgsMjAwOTQsNDA2NjAsMzgwNjUsMzgwNjcsMjEwNjksMjg1MDgsMzY5NjMsMjc5NzMsMzU4OTIsMjI1NDUsMjM4ODQsMjc0MjQsMjc0NjUsMjY1MzgsMjE1OTUsMzMxMDgsMzI2NTIsMjI2ODEsMzQx'@; put 'MDMsMjQzNzgsMjUyNTAsMjcyMDcsMzgyMDEsMjU5NzAsMjQ3MDgsMjY3MjUsMzA2MzEsMjAwNTIsMjAzOTIsMjQwMzksMzg4MDgsMjU3NzIsMzI3MjgsMjM3ODksMjA0MzEsMzEzNzMsMjA5OTksMzM1NDAsMTk5ODgsMjQ2MjMsMzEzNjMsMzgwNTQsMjA0MDUsMjAxNDYsMzEyMDYsMjk3NDgs'@; put 'MjEyMjAsMzM0NjUsMjU4MTAsMzExNjUsMjM1MTcsMjc3NzcsMzg3MzgsMzY3MzEsMjc2ODIsMjA1NDIsMjEzNzUsMjgxNjUsMjU4MDYsMjYyMjgsMjc2OTYsMjQ3NzMsMzkwMzEsMzU4MzEsMjQxOTgsMjk3NTYsMzEzNTEsMzExNzksMTk5OTIsMzcwNDEsMjk2OTksMjc3MTQsMjIyMzQsMzcx'@; put 'OTUsMjc4NDUsMzYyMzUsMjEzMDYsMzQ1MDIsMjYzNTQsMzY1MjcsMjM2MjQsMzk1MzcsMjgxOTIsMzM3NzQsMzM3NzUsMzM3NzksMzM3ODAsMzM3ODEsMzM3ODIsMzM3ODMsMzM3ODYsMzM3ODcsMzM3ODgsMzM3OTAsMzM3OTEsMzM3OTIsMzM3OTQsMzM3OTcsMzM3OTksMzM4MDAsMzM4MDEs'@; put 'MzM4MDIsMzM4MDgsMzM4MTAsMzM4MTEsMzM4MTIsMzM4MTMsMzM4MTQsMzM4MTUsMzM4MTcsMzM4MTgsMzM4MTksMzM4MjIsMzM4MjMsMzM4MjQsMzM4MjUsMzM4MjYsMzM4MjcsMzM4MzMsMzM4MzQsMzM4MzUsMzM4MzYsMzM4MzcsMzM4MzgsMzM4MzksMzM4NDAsMzM4NDIsMzM4NDMsMzM4'@; put 'NDQsMzM4NDUsMzM4NDYsMzM4NDcsMzM4NDksMzM4NTAsMzM4NTEsMzM4NTQsMzM4NTUsMzM4NTYsMzM4NTcsMzM4NTgsMzM4NTksMzM4NjAsMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjUsMzM4NjYsMzM4NjcsMzM4NjgsMzM4NjksMzM4NzAsMzM4NzEsMzM4NzIsMzM4NzQsMzM4NzUsMzM4NzYs'@; put 'MzM4NzcsMzM4NzgsMzM4ODAsMzM4ODUsMzM4ODYsMzM4ODcsMzM4ODgsMzM4OTAsMzM4OTIsMzM4OTMsMzM4OTQsMzM4OTUsMzM4OTYsMzM4OTgsMzM5MDIsMzM5MDMsMzM5MDQsMzM5MDYsMzM5MDgsMzM5MTEsMzM5MTMsMzM5MTUsMzM5MTYsMjE0NjIsMjMwOTQsNDA4NDMsMzYyNTksMjE0'@; put 'MzUsMjIyODAsMzkwNzksMjY0MzUsMzcyNzUsMjc4NDksMjA4NDAsMzAxNTQsMjUzMzEsMjkzNTYsMjEwNDgsMjExNDksMzI1NzAsMjg4MjAsMzAyNjQsMjEzNjQsNDA1MjIsMjcwNjMsMzA4MzAsMzg1OTIsMzUwMzMsMzI2NzYsMjg5ODIsMjkxMjMsMjA4NzMsMjY1NzksMjk5MjQsMjI3NTYs'@; put 'MjU4ODAsMjIxOTksMzU3NTMsMzkyODYsMjUyMDAsMzI0NjksMjQ4MjUsMjg5MDksMjI3NjQsMjAxNjEsMjAxNTQsMjQ1MjUsMzg4ODcsMjAyMTksMzU3NDgsMjA5OTUsMjI5MjIsMzI0MjcsMjUxNzIsMjAxNzMsMjYwODUsMjUxMDIsMzM1OTIsMzM5OTMsMzM2MzUsMzQ3MDEsMjkwNzYsMjgz'@; put 'NDIsMjM0ODEsMzI0NjYsMjA4ODcsMjU1NDUsMjY1ODAsMzI5MDUsMzM1OTMsMzQ4MzcsMjA3NTQsMjM0MTgsMjI5MTQsMzY3ODUsMjAwODMsMjc3NDEsMjA4MzcsMzUxMDksMzY3MTksMzg0NDYsMzQxMjIsMjk3OTAsMzgxNjAsMzgzODQsMjgwNzAsMzM1MDksMjQzNjksMjU3NDYsMjc5MjIs'@; put 'MzM4MzIsMzMxMzQsNDAxMzEsMjI2MjIsMzYxODcsMTk5NzcsMjE0NDEsMzM5MTcsMzM5MTgsMzM5MTksMzM5MjAsMzM5MjEsMzM5MjMsMzM5MjQsMzM5MjUsMzM5MjYsMzM5MzAsMzM5MzMsMzM5MzUsMzM5MzYsMzM5MzcsMzM5MzgsMzM5MzksMzM5NDAsMzM5NDEsMzM5NDIsMzM5NDQsMzM5'@; put 'NDYsMzM5NDcsMzM5NDksMzM5NTAsMzM5NTEsMzM5NTIsMzM5NTQsMzM5NTUsMzM5NTYsMzM5NTcsMzM5NTgsMzM5NTksMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjMsMzM5NjQsMzM5NjUsMzM5NjYsMzM5NjgsMzM5NjksMzM5NzEsMzM5NzMsMzM5NzQsMzM5NzUsMzM5NzksMzM5ODAsMzM5ODIs'@; put 'MzM5ODQsMzM5ODYsMzM5ODcsMzM5ODksMzM5OTAsMzM5OTEsMzM5OTIsMzM5OTUsMzM5OTYsMzM5OTgsMzM5OTksMzQwMDIsMzQwMDQsMzQwMDUsMzQwMDcsMzQwMDgsMzQwMDksMzQwMTAsMzQwMTEsMzQwMTIsMzQwMTQsMzQwMTcsMzQwMTgsMzQwMjAsMzQwMjMsMzQwMjQsMzQwMjUsMzQw'@; put 'MjYsMzQwMjcsMzQwMjksMzQwMzAsMzQwMzEsMzQwMzMsMzQwMzQsMzQwMzUsMzQwMzYsMzQwMzcsMzQwMzgsMzQwMzksMzQwNDAsMzQwNDEsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNDYsMzQwNDgsMzQwNDksMzQwNTAsMjAyNTQsMjU5NTUsMjY3MDUsMjE5NzEsMjAwMDcsMjU2MjAsMzk1Nzgs'@; put 'MjUxOTUsMjMyMzQsMjk3OTEsMzMzOTQsMjgwNzMsMjY4NjIsMjA3MTEsMzM2NzgsMzA3MjIsMjY0MzIsMjEwNDksMjc4MDEsMzI0MzMsMjA2NjcsMjE4NjEsMjkwMjIsMzE1NzksMjYxOTQsMjk2NDIsMzM1MTUsMjY0NDEsMjM2NjUsMjEwMjQsMjkwNTMsMzQ5MjMsMzgzNzgsMzg0ODUsMjU3'@; put 'OTcsMzYxOTMsMzMyMDMsMjE4OTIsMjc3MzMsMjUxNTksMzI1NTgsMjI2NzQsMjAyNjAsMjE4MzAsMzYxNzUsMjYxODgsMTk5NzgsMjM1NzgsMzUwNTksMjY3ODYsMjU0MjIsMzEyNDUsMjg5MDMsMzM0MjEsMjEyNDIsMzg5MDIsMjM1NjksMjE3MzYsMzcwNDUsMzI0NjEsMjI4ODIsMzYxNzAs'@; put 'MzQ1MDMsMzMyOTIsMzMyOTMsMzYxOTgsMjU2NjgsMjM1NTYsMjQ5MTMsMjgwNDEsMzEwMzgsMzU3NzQsMzA3NzUsMzAwMDMsMjE2MjcsMjAyODAsMzY1MjMsMjgxNDUsMjMwNzIsMzI0NTMsMzEwNzAsMjc3ODQsMjM0NTcsMjMxNTgsMjk5NzgsMzI5NTgsMjQ5MTAsMjgxODMsMjI3NjgsMjk5'@; put 'ODMsMjk5ODksMjkyOTgsMjEzMTksMzI0OTksMzQwNTEsMzQwNTIsMzQwNTMsMzQwNTQsMzQwNTUsMzQwNTYsMzQwNTcsMzQwNTgsMzQwNTksMzQwNjEsMzQwNjIsMzQwNjMsMzQwNjQsMzQwNjYsMzQwNjgsMzQwNjksMzQwNzAsMzQwNzIsMzQwNzMsMzQwNzUsMzQwNzYsMzQwNzcsMzQwNzgs'@; put 'MzQwODAsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODYsMzQwODcsMzQwODgsMzQwODksMzQwOTAsMzQwOTMsMzQwOTQsMzQwOTUsMzQwOTYsMzQwOTcsMzQwOTgsMzQwOTksMzQxMDAsMzQxMDEsMzQxMDIsMzQxMTAsMzQxMTEsMzQxMTIsMzQxMTMsMzQxMTQsMzQxMTYsMzQxMTcsMzQx'@; put 'MTgsMzQxMTksMzQxMjMsMzQxMjQsMzQxMjUsMzQxMjYsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzIsMzQxMzMsMzQxMzUsMzQxMzYsMzQxMzgsMzQxMzksMzQxNDAsMzQxNDEsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDcsMzQxNDksMzQxNTAsMzQxNTEsMzQxNTMs'@; put 'MzQxNTQsMzQxNTUsMzQxNTYsMzQxNTcsMzQxNTgsMzQxNTksMzQxNjAsMzQxNjEsMzQxNjMsMzQxNjUsMzQxNjYsMzQxNjcsMzQxNjgsMzQxNzIsMzQxNzMsMzQxNzUsMzQxNzYsMzQxNzcsMzA0NjUsMzA0MjcsMjEwOTcsMzI5ODgsMjIzMDcsMjQwNzIsMjI4MzMsMjk0MjIsMjYwNDUsMjgy'@; put 'ODcsMzU3OTksMjM2MDgsMzQ0MTcsMjEzMTMsMzA3MDcsMjUzNDIsMjYxMDIsMjAxNjAsMzkxMzUsMzQ0MzIsMjM0NTQsMzU3ODIsMjE0OTAsMzA2OTAsMjAzNTEsMjM2MzAsMzk1NDIsMjI5ODcsMjQzMzUsMzEwMzQsMjI3NjMsMTk5OTAsMjY2MjMsMjAxMDcsMjUzMjUsMzU0NzUsMzY4OTMs'@; put 'MjExODMsMjYxNTksMjE5ODAsMjIxMjQsMzY4NjYsMjAxODEsMjAzNjUsMzczMjIsMzkyODAsMjc2NjMsMjQwNjYsMjQ2NDMsMjM0NjAsMzUyNzAsMzU3OTcsMjU5MTAsMjUxNjMsMzkzMTgsMjM0MzIsMjM1NTEsMjU0ODAsMjE4MDYsMjE0NjMsMzAyNDYsMjA4NjEsMzQwOTIsMjY1MzAsMjY4'@; put 'MDMsMjc1MzAsMjUyMzQsMzY3NTUsMjE0NjAsMzMyOTgsMjgxMTMsMzAwOTUsMjAwNzAsMzYxNzQsMjM0MDgsMjkwODcsMzQyMjMsMjYyNTcsMjYzMjksMzI2MjYsMzQ1NjAsNDA2NTMsNDA3MzYsMjM2NDYsMjY0MTUsMzY4NDgsMjY2NDEsMjY0NjMsMjUxMDEsMzE0NDYsMjI2NjEsMjQyNDYs'@; put 'MjU5NjgsMjg0NjUsMzQxNzgsMzQxNzksMzQxODIsMzQxODQsMzQxODUsMzQxODYsMzQxODcsMzQxODgsMzQxODksMzQxOTAsMzQxOTIsMzQxOTMsMzQxOTQsMzQxOTUsMzQxOTYsMzQxOTcsMzQxOTgsMzQxOTksMzQyMDAsMzQyMDEsMzQyMDIsMzQyMDUsMzQyMDYsMzQyMDcsMzQyMDgsMzQy'@; put 'MDksMzQyMTAsMzQyMTEsMzQyMTMsMzQyMTQsMzQyMTUsMzQyMTcsMzQyMTksMzQyMjAsMzQyMjEsMzQyMjUsMzQyMjYsMzQyMjcsMzQyMjgsMzQyMjksMzQyMzAsMzQyMzIsMzQyMzQsMzQyMzUsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDAsMzQyNDIsMzQyNDMsMzQyNDQsMzQyNDUs'@; put 'MzQyNDYsMzQyNDcsMzQyNDgsMzQyNTAsMzQyNTEsMzQyNTIsMzQyNTMsMzQyNTQsMzQyNTcsMzQyNTgsMzQyNjAsMzQyNjIsMzQyNjMsMzQyNjQsMzQyNjUsMzQyNjYsMzQyNjcsMzQyNjksMzQyNzAsMzQyNzEsMzQyNzIsMzQyNzMsMzQyNzQsMzQyNzUsMzQyNzcsMzQyNzgsMzQyNzksMzQy'@; put 'ODAsMzQyODIsMzQyODMsMzQyODQsMzQyODUsMzQyODYsMzQyODcsMzQyODgsMzQyODksMzQyOTAsMzQyOTEsMzQyOTIsMzQyOTMsMzQyOTQsMzQyOTUsMzQyOTYsMjQ2NjEsMjEwNDcsMzI3ODEsMjU2ODQsMzQ5MjgsMjk5OTMsMjQwNjksMjY2NDMsMjUzMzIsMzg2ODQsMjE0NTIsMjkyNDUs'@; put 'MzU4NDEsMjc3MDAsMzA1NjEsMzEyNDYsMjE1NTAsMzA2MzYsMzkwMzQsMzMzMDgsMzU4MjgsMzA4MDUsMjYzODgsMjg4NjUsMjYwMzEsMjU3NDksMjIwNzAsMjQ2MDUsMzExNjksMjE0OTYsMTk5OTcsMjc1MTUsMzI5MDIsMjM1NDYsMjE5ODcsMjIyMzUsMjAyODIsMjAyODQsMzkyODIsMjQw'@; put 'NTEsMjY0OTQsMzI4MjQsMjQ1NzgsMzkwNDIsMzY4NjUsMjM0MzUsMzU3NzIsMzU4MjksMjU2MjgsMzMzNjgsMjU4MjIsMjIwMTMsMzM0ODcsMzcyMjEsMjA0MzksMzIwMzIsMzY4OTUsMzE5MDMsMjA3MjMsMjI2MDksMjgzMzUsMjM0ODcsMzU3ODUsMzI4OTksMzcyNDAsMzM5NDgsMzE2Mzks'@; put 'MzQ0MjksMzg1MzksMzg1NDMsMzI0ODUsMzk2MzUsMzA4NjIsMjM2ODEsMzEzMTksMzY5MzAsMzg1NjcsMzEwNzEsMjMzODUsMjU0MzksMzE0OTksMzQwMDEsMjY3OTcsMjE3NjYsMzI1NTMsMjk3MTIsMzIwMzQsMzgxNDUsMjUxNTIsMjI2MDQsMjAxODIsMjM0MjcsMjI5MDUsMjI2MTIsMzQy'@; put 'OTcsMzQyOTgsMzQzMDAsMzQzMDEsMzQzMDIsMzQzMDQsMzQzMDUsMzQzMDYsMzQzMDcsMzQzMDgsMzQzMTAsMzQzMTEsMzQzMTIsMzQzMTMsMzQzMTQsMzQzMTUsMzQzMTYsMzQzMTcsMzQzMTgsMzQzMTksMzQzMjAsMzQzMjIsMzQzMjMsMzQzMjQsMzQzMjUsMzQzMjcsMzQzMjgsMzQzMjks'@; put 'MzQzMzAsMzQzMzEsMzQzMzIsMzQzMzMsMzQzMzQsMzQzMzUsMzQzMzYsMzQzMzcsMzQzMzgsMzQzMzksMzQzNDAsMzQzNDEsMzQzNDIsMzQzNDQsMzQzNDYsMzQzNDcsMzQzNDgsMzQzNDksMzQzNTAsMzQzNTEsMzQzNTIsMzQzNTMsMzQzNTQsMzQzNTUsMzQzNTYsMzQzNTcsMzQzNTgsMzQz'@; put 'NTksMzQzNjEsMzQzNjIsMzQzNjMsMzQzNjUsMzQzNjYsMzQzNjcsMzQzNjgsMzQzNjksMzQzNzAsMzQzNzEsMzQzNzIsMzQzNzMsMzQzNzQsMzQzNzUsMzQzNzYsMzQzNzcsMzQzNzgsMzQzNzksMzQzODAsMzQzODYsMzQzODcsMzQzODksMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTUs'@; put 'MzQzOTYsMzQzOTcsMzQzOTksMzQ0MDAsMzQ0MDEsMzQ0MDMsMzQ0MDQsMzQ0MDUsMzQ0MDYsMzQ0MDcsMzQ0MDgsMzQ0MDksMzQ0MTAsMjk1NDksMjUzNzQsMzY0MjcsMzYzNjcsMzI5NzQsMzM0OTIsMjUyNjAsMjE0ODgsMjc4ODgsMzcyMTQsMjI4MjYsMjQ1NzcsMjc3NjAsMjIzNDksMjU2'@; put 'NzQsMzYxMzgsMzAyNTEsMjgzOTMsMjIzNjMsMjcyNjQsMzAxOTIsMjg1MjUsMzU4ODUsMzU4NDgsMjIzNzQsMjc2MzEsMzQ5NjIsMzA4OTksMjU1MDYsMjE0OTcsMjg4NDUsMjc3NDgsMjI2MTYsMjU2NDIsMjI1MzAsMjY4NDgsMzMxNzksMjE3NzYsMzE5NTgsMjA1MDQsMzY1MzgsMjgxMDgs'@; put 'MzYyNTUsMjg5MDcsMjU0ODcsMjgwNTksMjgzNzIsMzI0ODYsMzM3OTYsMjY2OTEsMzY4NjcsMjgxMjAsMzg1MTgsMzU3NTIsMjI4NzEsMjkzMDUsMzQyNzYsMzMxNTAsMzAxNDAsMzU0NjYsMjY3OTksMjEwNzYsMzYzODYsMzgxNjEsMjU1NTIsMzkwNjQsMzY0MjAsMjE4ODQsMjAzMDcsMjYz'@; put 'NjcsMjIxNTksMjQ3ODksMjgwNTMsMjEwNTksMjM2MjUsMjI4MjUsMjgxNTUsMjI2MzUsM2U0LDI5OTgwLDI0Njg0LDMzMzAwLDMzMDk0LDI1MzYxLDI2NDY1LDM2ODM0LDMwNTIyLDM2MzM5LDM2MTQ4LDM4MDgxLDI0MDg2LDIxMzgxLDIxNTQ4LDI4ODY3LDM0NDEzLDM0NDE1LDM0NDE2LDM0'@; put 'NDE4LDM0NDE5LDM0NDIwLDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI0LDM0NDM1LDM0NDM2LDM0NDM3LDM0NDM4LDM0NDM5LDM0NDQwLDM0NDQxLDM0NDQ2LDM0NDQ3LDM0NDQ4LDM0NDQ5LDM0NDUwLDM0NDUyLDM0NDU0LDM0NDU1LDM0NDU2LDM0NDU3LDM0NDU4LDM0NDU5LDM0NDYyLDM0NDYz'@; put 'LDM0NDY0LDM0NDY1LDM0NDY2LDM0NDY5LDM0NDcwLDM0NDc1LDM0NDc3LDM0NDc4LDM0NDgyLDM0NDgzLDM0NDg3LDM0NDg4LDM0NDg5LDM0NDkxLDM0NDkyLDM0NDkzLDM0NDk0LDM0NDk1LDM0NDk3LDM0NDk4LDM0NDk5LDM0NTAxLDM0NTA0LDM0NTA4LDM0NTA5LDM0NTE0LDM0NTE1LDM0'@; put 'NTE3LDM0NTE4LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI1LDM0NTI4LDM0NTI5LDM0NTMwLDM0NTMxLDM0NTMzLDM0NTM0LDM0NTM1LDM0NTM2LDM0NTM4LDM0NTM5LDM0NTQwLDM0NTQzLDM0NTQ5LDM0NTUwLDM0NTUxLDM0NTU0LDM0NTU1LDM0NTU2LDM0NTU3LDM0NTU5LDM0NTYxLDM0NTY0'@; put 'LDM0NTY1LDM0NTY2LDM0NTcxLDM0NTcyLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc3LDM0NTgwLDM0NTgyLDI3NzEyLDI0MzExLDIwNTcyLDIwMTQxLDI0MjM3LDI1NDAyLDMzMzUxLDM2ODkwLDI2NzA0LDM3MjMwLDMwNjQzLDIxNTE2LDM4MTA4LDI0NDIwLDMxNDYxLDI2NzQyLDI1NDEzLDMx'@; put 'NTcwLDMyNDc5LDMwMTcxLDIwNTk5LDI1MjM3LDIyODM2LDM2ODc5LDIwOTg0LDMxMTcxLDMxMzYxLDIyMjcwLDI0NDY2LDM2ODg0LDI4MDM0LDIzNjQ4LDIyMzAzLDIxNTIwLDIwODIwLDI4MjM3LDIyMjQyLDI1NTEyLDM5MDU5LDMzMTUxLDM0NTgxLDM1MTE0LDM2ODY0LDIxNTM0LDIzNjYz'@; put 'LDMzMjE2LDI1MzAyLDI1MTc2LDMzMDczLDQwNTAxLDM4NDY0LDM5NTM0LDM5NTQ4LDI2OTI1LDIyOTQ5LDI1Mjk5LDIxODIyLDI1MzY2LDIxNzAzLDM0NTIxLDI3OTY0LDIzMDQzLDI5OTI2LDM0OTcyLDI3NDk4LDIyODA2LDM1OTE2LDI0MzY3LDI4Mjg2LDI5NjA5LDM5MDM3LDIwMDI0LDI4'@; put 'OTE5LDIzNDM2LDMwODcxLDI1NDA1LDI2MjAyLDMwMzU4LDI0Nzc5LDIzNDUxLDIzMTEzLDE5OTc1LDMzMTA5LDI3NzU0LDI5NTc5LDIwMTI5LDI2NTA1LDMyNTkzLDI0NDQ4LDI2MTA2LDI2Mzk1LDI0NTM2LDIyOTE2LDIzMDQxLDM0NTg1LDM0NTg3LDM0NTg5LDM0NTkxLDM0NTkyLDM0NTk2'@; put 'LDM0NTk4LDM0NTk5LDM0NjAwLDM0NjAyLDM0NjAzLDM0NjA0LDM0NjA1LDM0NjA3LDM0NjA4LDM0NjEwLDM0NjExLDM0NjEzLDM0NjE0LDM0NjE2LDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjI0LDM0NjI1LDM0NjI2LDM0NjI3LDM0NjI4LDM0NjI5LDM0NjMwLDM0NjM0LDM0NjM1LDM0'@; put 'NjM3LDM0NjM5LDM0NjQwLDM0NjQxLDM0NjQyLDM0NjQ0LDM0NjQ1LDM0NjQ2LDM0NjQ4LDM0NjUwLDM0NjUxLDM0NjUyLDM0NjUzLDM0NjU0LDM0NjU1LDM0NjU3LDM0NjU4LDM0NjYyLDM0NjYzLDM0NjY0LDM0NjY1LDM0NjY2LDM0NjY3LDM0NjY4LDM0NjY5LDM0NjcxLDM0NjczLDM0Njc0'@; put 'LDM0Njc1LDM0Njc3LDM0Njc5LDM0NjgwLDM0NjgxLDM0NjgyLDM0Njg3LDM0Njg4LDM0Njg5LDM0NjkyLDM0Njk0LDM0Njk1LDM0Njk3LDM0Njk4LDM0NzAwLDM0NzAyLDM0NzAzLDM0NzA0LDM0NzA1LDM0NzA2LDM0NzA4LDM0NzA5LDM0NzEwLDM0NzEyLDM0NzEzLDM0NzE0LDM0NzE1LDM0'@; put 'NzE2LDM0NzE3LDM0NzE4LDM0NzIwLDM0NzIxLDM0NzIyLDM0NzIzLDM0NzI0LDI0MDEzLDI0NDk0LDIxMzYxLDM4ODg2LDM2ODI5LDI2NjkzLDIyMjYwLDIxODA3LDI0Nzk5LDIwMDI2LDI4NDkzLDMyNTAwLDMzNDc5LDMzODA2LDIyOTk2LDIwMjU1LDIwMjY2LDIzNjE0LDMyNDI4LDI2NDEw'@; put 'LDM0MDc0LDIxNjE5LDMwMDMxLDMyOTYzLDIxODkwLDM5NzU5LDIwMzAxLDI4MjA1LDM1ODU5LDIzNTYxLDI0OTQ0LDIxMzU1LDMwMjM5LDI4MjAxLDM0NDQyLDI1OTkxLDM4Mzk1LDMyNDQxLDIxNTYzLDMxMjgzLDMyMDEwLDM4MzgyLDIxOTg1LDMyNzA1LDI5OTM0LDI1MzczLDM0NTgzLDI4'@; put 'MDY1LDMxMzg5LDI1MTA1LDI2MDE3LDIxMzUxLDI1NTY5LDI3Nzc5LDI0MDQzLDIxNTk2LDM4MDU2LDIwMDQ0LDI3NzQ1LDM1ODIwLDIzNjI3LDI2MDgwLDMzNDM2LDI2NzkxLDIxNTY2LDIxNTU2LDI3NTk1LDI3NDk0LDIwMTE2LDI1NDEwLDIxMzIwLDMzMzEwLDIwMjM3LDIwMzk4LDIyMzY2'@; put 'LDI1MDk4LDM4NjU0LDI2MjEyLDI5Mjg5LDIxMjQ3LDIxMTUzLDI0NzM1LDM1ODIzLDI2MTMyLDI5MDgxLDI2NTEyLDM1MTk5LDMwODAyLDMwNzE3LDI2MjI0LDIyMDc1LDIxNTYwLDM4MTc3LDI5MzA2LDM0NzI1LDM0NzI2LDM0NzI3LDM0NzI5LDM0NzMwLDM0NzM0LDM0NzM2LDM0NzM3LDM0'@; put 'NzM4LDM0NzQwLDM0NzQyLDM0NzQzLDM0NzQ0LDM0NzQ1LDM0NzQ3LDM0NzQ4LDM0NzUwLDM0NzUxLDM0NzUzLDM0NzU0LDM0NzU1LDM0NzU2LDM0NzU3LDM0NzU5LDM0NzYwLDM0NzYxLDM0NzY0LDM0NzY1LDM0NzY2LDM0NzY3LDM0NzY4LDM0NzcyLDM0NzczLDM0Nzc0LDM0Nzc1LDM0Nzc2'@; put 'LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgxLDM0NzgyLDM0NzgzLDM0Nzg1LDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0NzkwLDM0NzkxLDM0NzkyLDM0NzkzLDM0Nzk1LDM0Nzk2LDM0Nzk3LDM0Nzk5LDM0ODAwLDM0ODAxLDM0ODAyLDM0ODAzLDM0ODA0LDM0ODA1LDM0ODA2LDM0ODA3LDM0ODA4LDM0'@; put 'ODEwLDM0ODExLDM0ODEyLDM0ODEzLDM0ODE1LDM0ODE2LDM0ODE3LDM0ODE4LDM0ODIwLDM0ODIxLDM0ODIyLDM0ODIzLDM0ODI0LDM0ODI1LDM0ODI3LDM0ODI4LDM0ODI5LDM0ODMwLDM0ODMxLDM0ODMyLDM0ODMzLDM0ODM0LDM0ODM2LDM0ODM5LDM0ODQwLDM0ODQxLDM0ODQyLDM0ODQ0'@; put 'LDM0ODQ1LDM0ODQ2LDM0ODQ3LDM0ODQ4LDM0ODUxLDMxMjMyLDI0Njg3LDI0MDc2LDI0NzEzLDMzMTgxLDIyODA1LDI0Nzk2LDI5MDYwLDI4OTExLDI4MzMwLDI3NzI4LDI5MzEyLDI3MjY4LDM0OTg5LDI0MTA5LDIwMDY0LDIzMjE5LDIxOTE2LDM4MTE1LDI3OTI3LDMxOTk1LDM4NTUzLDI1'@; put 'MTAzLDMyNDU0LDMwNjA2LDM0NDMwLDIxMjgzLDM4Njg2LDM2NzU4LDI2MjQ3LDIzNzc3LDIwMzg0LDI5NDIxLDE5OTc5LDIxNDE0LDIyNzk5LDIxNTIzLDI1NDcyLDM4MTg0LDIwODA4LDIwMTg1LDQwMDkyLDMyNDIwLDIxNjg4LDM2MTMyLDM0OTAwLDMzMzM1LDM4Mzg2LDI4MDQ2LDI0MzU4'@; put 'LDIzMjQ0LDI2MTc0LDM4NTA1LDI5NjE2LDI5NDg2LDIxNDM5LDMzMTQ2LDM5MzAxLDMyNjczLDIzNDY2LDM4NTE5LDM4NDgwLDMyNDQ3LDMwNDU2LDIxNDEwLDM4MjYyLDM5MzIxLDMxNjY1LDM1MTQwLDI4MjQ4LDIwMDY1LDMyNzI0LDMxMDc3LDM1ODE0LDI0ODE5LDIxNzA5LDIwMTM5LDM5'@; put 'MDMzLDI0MDU1LDI3MjMzLDIwNjg3LDIxNTIxLDM1OTM3LDMzODMxLDMwODEzLDM4NjYwLDIxMDY2LDIxNzQyLDIyMTc5LDM4MTQ0LDI4MDQwLDIzNDc3LDI4MTAyLDI2MTk1LDM0ODUyLDM0ODUzLDM0ODU0LDM0ODU1LDM0ODU2LDM0ODU3LDM0ODU4LDM0ODU5LDM0ODYwLDM0ODYxLDM0ODYy'@; put 'LDM0ODYzLDM0ODY0LDM0ODY1LDM0ODY3LDM0ODY4LDM0ODY5LDM0ODcwLDM0ODcxLDM0ODcyLDM0ODc0LDM0ODc1LDM0ODc3LDM0ODc4LDM0ODc5LDM0ODgxLDM0ODgyLDM0ODgzLDM0ODg2LDM0ODg3LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk1LDM0ODk2LDM0ODk3LDM0'@; put 'ODk4LDM0ODk5LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA3LDM0OTA4LDM0OTA5LDM0OTEwLDM0OTExLDM0OTEyLDM0OTE4LDM0OTE5LDM0OTIyLDM0OTI1LDM0OTI3LDM0OTI5LDM0OTMxLDM0OTMyLDM0OTMzLDM0OTM0LDM0OTM2LDM0OTM3LDM0OTM4LDM0OTM5LDM0OTQwLDM0OTQ0'@; put 'LDM0OTQ3LDM0OTUwLDM0OTUxLDM0OTUzLDM0OTU0LDM0OTU2LDM0OTU4LDM0OTU5LDM0OTYwLDM0OTYxLDM0OTYzLDM0OTY0LDM0OTY1LDM0OTY3LDM0OTY4LDM0OTY5LDM0OTcwLDM0OTcxLDM0OTczLDM0OTc0LDM0OTc1LDM0OTc2LDM0OTc3LDM0OTc5LDM0OTgxLDM0OTgyLDM0OTgzLDM0'@; put 'OTg0LDM0OTg1LDM0OTg2LDIzNTY3LDIzMzg5LDI2NjU3LDMyOTE4LDIxODgwLDMxNTA1LDI1OTI4LDI2OTY0LDIwMTIzLDI3NDYzLDM0NjM4LDM4Nzk1LDIxMzI3LDI1Mzc1LDI1NjU4LDM3MDM0LDI2MDEyLDMyOTYxLDM1ODU2LDIwODg5LDI2ODAwLDIxMzY4LDM0ODA5LDI1MDMyLDI3ODQ0'@; put 'LDI3ODk5LDM1ODc0LDIzNjMzLDM0MjE4LDMzNDU1LDM4MTU2LDI3NDI3LDM2NzYzLDI2MDMyLDI0NTcxLDI0NTE1LDIwNDQ5LDM0ODg1LDI2MTQzLDMzMTI1LDI5NDgxLDI0ODI2LDIwODUyLDIxMDA5LDIyNDExLDI0NDE4LDM3MDI2LDM0ODkyLDM3MjY2LDI0MTg0LDI2NDQ3LDI0NjE1LDIy'@; put 'OTk1LDIwODA0LDIwOTgyLDMzMDE2LDIxMjU2LDI3NzY5LDM4NTk2LDI5MDY2LDIwMjQxLDIwNDYyLDMyNjcwLDI2NDI5LDIxOTU3LDM4MTUyLDMxMTY4LDM0OTY2LDMyNDgzLDIyNjg3LDI1MTAwLDM4NjU2LDM0Mzk0LDIyMDQwLDM5MDM1LDI0NDY0LDM1NzY4LDMzOTg4LDM3MjA3LDIxNDY1'@; put 'LDI2MDkzLDI0MjA3LDMwMDQ0LDI0Njc2LDMyMTEwLDIzMTY3LDMyNDkwLDMyNDkzLDM2NzEzLDIxOTI3LDIzNDU5LDI0NzQ4LDI2MDU5LDI5NTcyLDM0OTg4LDM0OTkwLDM0OTkxLDM0OTkyLDM0OTk0LDM0OTk1LDM0OTk2LDM0OTk3LDM0OTk4LDM1ZTMsMzUwMDEsMzUwMDIsMzUwMDMsMzUw'@; put 'MDUsMzUwMDYsMzUwMDcsMzUwMDgsMzUwMTEsMzUwMTIsMzUwMTUsMzUwMTYsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjMsMzUwMjQsMzUwMjUsMzUwMjcsMzUwMzAsMzUwMzEsMzUwMzQsMzUwMzUsMzUwMzYsMzUwMzcsMzUwMzgsMzUwNDAsMzUwNDEsMzUwNDYsMzUwNDcsMzUwNDks'@; put 'MzUwNTAsMzUwNTEsMzUwNTIsMzUwNTMsMzUwNTQsMzUwNTUsMzUwNTgsMzUwNjEsMzUwNjIsMzUwNjMsMzUwNjYsMzUwNjcsMzUwNjksMzUwNzEsMzUwNzIsMzUwNzMsMzUwNzUsMzUwNzYsMzUwNzcsMzUwNzgsMzUwNzksMzUwODAsMzUwODEsMzUwODMsMzUwODQsMzUwODUsMzUwODYsMzUw'@; put 'ODcsMzUwODksMzUwOTIsMzUwOTMsMzUwOTQsMzUwOTUsMzUwOTYsMzUxMDAsMzUxMDEsMzUxMDIsMzUxMDMsMzUxMDQsMzUxMDYsMzUxMDcsMzUxMDgsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMTMsMzUxMTYsMzUxMTcsMzUxMTgsMzUxMTksMzUxMjEsMzUxMjIsMzUxMjMsMzUxMjUsMzUxMjcs'@; put 'MzY4NzMsMzAzMDcsMzA1MDUsMzI0NzQsMzg3NzIsMzQyMDMsMjMzOTgsMzEzNDgsMzg2MzQsMzQ4ODAsMjExOTUsMjkwNzEsMjQ0OTAsMjYwOTIsMzU4MTAsMjM1NDcsMzk1MzUsMjQwMzMsMjc1MjksMjc3MzksMzU3NTcsMzU3NTksMzY4NzQsMzY4MDUsMjEzODcsMjUyNzYsNDA0ODYsNDA0'@; put 'OTMsMjE1NjgsMjAwMTEsMzM0NjksMjkyNzMsMzQ0NjAsMjM4MzAsMzQ5MDUsMjgwNzksMzg1OTcsMjE3MTMsMjAxMjIsMzU3NjYsMjg5MzcsMjE2OTMsMzg0MDksMjg4OTUsMjgxNTMsMzA0MTYsMjAwMDUsMzA3NDAsMzQ1NzgsMjM3MjEsMjQzMTAsMzUzMjgsMzkwNjgsMzg0MTQsMjg4MTQs'@; put 'Mjc4MzksMjI4NTIsMjU1MTMsMzA1MjQsMzQ4OTMsMjg0MzYsMzMzOTUsMjI1NzYsMjkxNDEsMjEzODgsMzA3NDYsMzg1OTMsMjE3NjEsMjQ0MjIsMjg5NzYsMjM0NzYsMzU4NjYsMzk1NjQsMjc1MjMsMjI4MzAsNDA0OTUsMzEyMDcsMjY0NzIsMjUxOTYsMjAzMzUsMzAxMTMsMzI2NTAsMjc5'@; put 'MTUsMzg0NTEsMjc2ODcsMjAyMDgsMzAxNjIsMjA4NTksMjY2NzksMjg0NzgsMzY5OTIsMzMxMzYsMjI5MzQsMjk4MTQsMzUxMjgsMzUxMjksMzUxMzAsMzUxMzEsMzUxMzIsMzUxMzMsMzUxMzQsMzUxMzUsMzUxMzYsMzUxMzgsMzUxMzksMzUxNDEsMzUxNDIsMzUxNDMsMzUxNDQsMzUxNDUs'@; put 'MzUxNDYsMzUxNDcsMzUxNDgsMzUxNDksMzUxNTAsMzUxNTEsMzUxNTIsMzUxNTMsMzUxNTQsMzUxNTUsMzUxNTYsMzUxNTcsMzUxNTgsMzUxNTksMzUxNjAsMzUxNjEsMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjUsMzUxNjgsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzIsMzUxNzMsMzUxNzUsMzUx'@; put 'NzYsMzUxNzcsMzUxNzgsMzUxNzksMzUxODAsMzUxODEsMzUxODIsMzUxODMsMzUxODQsMzUxODUsMzUxODYsMzUxODcsMzUxODgsMzUxODksMzUxOTAsMzUxOTEsMzUxOTIsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTcsMzUxOTgsMzUyMDAsMzUyMDIsMzUyMDQsMzUyMDUsMzUyMDcsMzUyMDgs'@; put 'MzUyMDksMzUyMTAsMzUyMTEsMzUyMTIsMzUyMTMsMzUyMTQsMzUyMTUsMzUyMTYsMzUyMTcsMzUyMTgsMzUyMTksMzUyMjAsMzUyMjEsMzUyMjIsMzUyMjMsMzUyMjQsMzUyMjUsMzUyMjYsMzUyMjcsMzUyMjgsMzUyMjksMzUyMzAsMzUyMzEsMzUyMzIsMzUyMzMsMjU2NzEsMjM1OTEsMzY5'@; put 'NjUsMzEzNzcsMzU4NzUsMjMwMDIsMjE2NzYsMzMyODAsMzM2NDcsMzUyMDEsMzI3NjgsMjY5MjgsMjIwOTQsMzI4MjIsMjkyMzksMzczMjYsMjA5MTgsMjAwNjMsMzkwMjksMjU0OTQsMTk5OTQsMjE0OTQsMjYzNTUsMzMwOTksMjI4MTIsMjgwODIsMTk5NjgsMjI3NzcsMjEzMDcsMjU1NTgs'@; put 'MzgxMjksMjAzODEsMjAyMzQsMzQ5MTUsMzkwNTYsMjI4MzksMzY5NTEsMzEyMjcsMjAyMDIsMzMwMDgsMzAwOTcsMjc3NzgsMjM0NTIsMjMwMTYsMjQ0MTMsMjY4ODUsMzQ0MzMsMjA1MDYsMjQwNTAsMjAwNTcsMzA2OTEsMjAxOTcsMzM0MDIsMjUyMzMsMjYxMzEsMzcwMDksMjM2NzMsMjAx'@; put 'NTksMjQ0NDEsMzMyMjIsMzY5MjAsMzI5MDAsMzAxMjMsMjAxMzQsMzUwMjgsMjQ4NDcsMjc1ODksMjQ1MTgsMjAwNDEsMzA0MTAsMjgzMjIsMzU4MTEsMzU3NTgsMzU4NTAsMzU3OTMsMjQzMjIsMzI3NjQsMzI3MTYsMzI0NjIsMzM1ODksMzM2NDMsMjIyNDAsMjc1NzUsMzg4OTksMzg0NTIs'@; put 'MjMwMzUsMjE1MzUsMzgxMzQsMjgxMzksMjM0OTMsMzkyNzgsMjM2MDksMjQzNDEsMzg1NDQsMzUyMzQsMzUyMzUsMzUyMzYsMzUyMzcsMzUyMzgsMzUyMzksMzUyNDAsMzUyNDEsMzUyNDIsMzUyNDMsMzUyNDQsMzUyNDUsMzUyNDYsMzUyNDcsMzUyNDgsMzUyNDksMzUyNTAsMzUyNTEsMzUy'@; put 'NTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNTYsMzUyNTcsMzUyNTgsMzUyNTksMzUyNjAsMzUyNjEsMzUyNjIsMzUyNjMsMzUyNjQsMzUyNjcsMzUyNzcsMzUyODMsMzUyODQsMzUyODUsMzUyODcsMzUyODgsMzUyODksMzUyOTEsMzUyOTMsMzUyOTUsMzUyOTYsMzUyOTcsMzUyOTgsMzUzMDAs'@; put 'MzUzMDMsMzUzMDQsMzUzMDUsMzUzMDYsMzUzMDgsMzUzMDksMzUzMTAsMzUzMTIsMzUzMTMsMzUzMTQsMzUzMTYsMzUzMTcsMzUzMTgsMzUzMTksMzUzMjAsMzUzMjEsMzUzMjIsMzUzMjMsMzUzMjQsMzUzMjUsMzUzMjYsMzUzMjcsMzUzMjksMzUzMzAsMzUzMzEsMzUzMzIsMzUzMzMsMzUz'@; put 'MzQsMzUzMzYsMzUzMzcsMzUzMzgsMzUzMzksMzUzNDAsMzUzNDEsMzUzNDIsMzUzNDMsMzUzNDQsMzUzNDUsMzUzNDYsMzUzNDcsMzUzNDgsMzUzNDksMzUzNTAsMzUzNTEsMzUzNTIsMzUzNTMsMzUzNTQsMzUzNTUsMzUzNTYsMzUzNTcsMjEzNjAsMzM1MjEsMjcxODUsMjMxNTYsNDA1NjAs'@; put 'MjQyMTIsMzI1NTIsMzM3MjEsMzM4MjgsMzM4MjksMzM2MzksMzQ2MzEsMzY4MTQsMzYxOTQsMzA0MDgsMjQ0MzMsMzkwNjIsMzA4MjgsMjYxNDQsMjE3MjcsMjUzMTcsMjAzMjMsMzMyMTksMzAxNTIsMjQyNDgsMzg2MDUsMzYzNjIsMzQ1NTMsMjE2NDcsMjc4OTEsMjgwNDQsMjc3MDQsMjQ3'@; put 'MDMsMjExOTEsMjk5OTIsMjQxODksMjAyNDgsMjQ3MzYsMjQ1NTEsMjM1ODgsMzAwMDEsMzcwMzgsMzgwODAsMjkzNjksMjc4MzMsMjgyMTYsMzcxOTMsMjYzNzcsMjE0NTEsMjE0OTEsMjAzMDUsMzczMjEsMzU4MjUsMjE0NDgsMjQxODgsMzY4MDIsMjgxMzIsMjAxMTAsMzA0MDIsMjcwMTQs'@; put 'MzQzOTgsMjQ4NTgsMzMyODYsMjAzMTMsMjA0NDYsMzY5MjYsNDAwNjAsMjQ4NDEsMjgxODksMjgxODAsMzg1MzMsMjAxMDQsMjMwODksMzg2MzIsMTk5ODIsMjM2NzksMzExNjEsMjM0MzEsMzU4MjEsMzI3MDEsMjk1NzcsMjI0OTUsMzM0MTksMzcwNTcsMjE1MDUsMzY5MzUsMjE5NDcsMjM3'@; put 'ODYsMjQ0ODEsMjQ4NDAsMjc0NDIsMjk0MjUsMzI5NDYsMzU0NjUsMzUzNTgsMzUzNTksMzUzNjAsMzUzNjEsMzUzNjIsMzUzNjMsMzUzNjQsMzUzNjUsMzUzNjYsMzUzNjcsMzUzNjgsMzUzNjksMzUzNzAsMzUzNzEsMzUzNzIsMzUzNzMsMzUzNzQsMzUzNzUsMzUzNzYsMzUzNzcsMzUzNzgs'@; put 'MzUzNzksMzUzODAsMzUzODEsMzUzODIsMzUzODMsMzUzODQsMzUzODUsMzUzODYsMzUzODcsMzUzODgsMzUzODksMzUzOTEsMzUzOTIsMzUzOTMsMzUzOTQsMzUzOTUsMzUzOTYsMzUzOTcsMzUzOTgsMzUzOTksMzU0MDEsMzU0MDIsMzU0MDMsMzU0MDQsMzU0MDUsMzU0MDYsMzU0MDcsMzU0'@; put 'MDgsMzU0MDksMzU0MTAsMzU0MTEsMzU0MTIsMzU0MTMsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MTcsMzU0MTgsMzU0MTksMzU0MjAsMzU0MjEsMzU0MjIsMzU0MjMsMzU0MjQsMzU0MjUsMzU0MjYsMzU0MjcsMzU0MjgsMzU0MjksMzU0MzAsMzU0MzEsMzU0MzIsMzU0MzMsMzU0MzQsMzU0MzUs'@; put 'MzU0MzYsMzU0MzcsMzU0MzgsMzU0MzksMzU0NDAsMzU0NDEsMzU0NDIsMzU0NDMsMzU0NDQsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDgsMzU0NTAsMzU0NTEsMzU0NTIsMzU0NTMsMzU0NTQsMzU0NTUsMzU0NTYsMjgwMjAsMjM1MDcsMzUwMjksMzkwNDQsMzU5NDcsMzk1MzMsNDA0OTksMjgx'@; put 'NzAsMjA5MDAsMjA4MDMsMjI0MzUsMzQ5NDUsMjE0MDcsMjU1ODgsMzY3NTcsMjIyNTMsMjE1OTIsMjIyNzgsMjk1MDMsMjgzMDQsMzI1MzYsMzY4MjgsMzM0ODksMjQ4OTUsMjQ2MTYsMzg0OTgsMjYzNTIsMzI0MjIsMzYyMzQsMzYyOTEsMzgwNTMsMjM3MzEsMzE5MDgsMjYzNzYsMjQ3NDIs'@; put 'Mzg0MDUsMzI3OTIsMjAxMTMsMzcwOTUsMjEyNDgsMzg1MDQsMjA4MDEsMzY4MTYsMzQxNjQsMzcyMTMsMjYxOTcsMzg5MDEsMjMzODEsMjEyNzcsMzA3NzYsMjY0MzQsMjY2ODUsMjE3MDUsMjg3OTgsMjM0NzIsMzY3MzMsMjA4NzcsMjIzMTIsMjE2ODEsMjU4NzQsMjYyNDIsMzYxOTAsMzYx'@; put 'NjMsMzMwMzksMzM5MDAsMzY5NzMsMzE5NjcsMjA5OTEsMzQyOTksMjY1MzEsMjYwODksMjg1NzcsMzQ0NjgsMzY0ODEsMjIxMjIsMzY4OTYsMzAzMzgsMjg3OTAsMjkxNTcsMzYxMzEsMjUzMjEsMjEwMTcsMjc5MDEsMzYxNTYsMjQ1OTAsMjI2ODYsMjQ5NzQsMjYzNjYsMzYxOTIsMjUxNjYs'@; put 'MjE5MzksMjgxOTUsMjY0MTMsMzY3MTEsMzU0NTcsMzU0NTgsMzU0NTksMzU0NjAsMzU0NjEsMzU0NjIsMzU0NjMsMzU0NjQsMzU0NjcsMzU0NjgsMzU0NjksMzU0NzAsMzU0NzEsMzU0NzIsMzU0NzMsMzU0NzQsMzU0NzYsMzU0NzcsMzU0NzgsMzU0NzksMzU0ODAsMzU0ODEsMzU0ODIsMzU0'@; put 'ODMsMzU0ODQsMzU0ODUsMzU0ODYsMzU0ODcsMzU0ODgsMzU0ODksMzU0OTAsMzU0OTEsMzU0OTIsMzU0OTMsMzU0OTQsMzU0OTUsMzU0OTYsMzU0OTcsMzU0OTgsMzU0OTksMzU1MDAsMzU1MDEsMzU1MDIsMzU1MDMsMzU1MDQsMzU1MDUsMzU1MDYsMzU1MDcsMzU1MDgsMzU1MDksMzU1MTAs'@; put 'MzU1MTEsMzU1MTIsMzU1MTMsMzU1MTQsMzU1MTUsMzU1MTYsMzU1MTcsMzU1MTgsMzU1MTksMzU1MjAsMzU1MjEsMzU1MjIsMzU1MjMsMzU1MjQsMzU1MjUsMzU1MjYsMzU1MjcsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzEsMzU1MzIsMzU1MzMsMzU1MzQsMzU1MzUsMzU1MzYsMzU1MzcsMzU1'@; put 'MzgsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDIsMzU1NDMsMzU1NDQsMzU1NDUsMzU1NDYsMzU1NDcsMzU1NDgsMzU1NDksMzU1NTAsMzU1NTEsMzU1NTIsMzU1NTMsMzU1NTQsMzU1NTUsMzgxMTMsMzgzOTIsMzA1MDQsMjY2MjksMjcwNDgsMjE2NDMsMjAwNDUsMjg4NTYsMzU3ODQsMjU2ODgs'@; put 'MjU5OTUsMjM0MjksMzEzNjQsMjA1MzgsMjM1MjgsMzA2NTEsMjc2MTcsMzU0NDksMzE4OTYsMjc4MzgsMzA0MTUsMjYwMjUsMzY3NTksMjM4NTMsMjM2MzcsMzQzNjAsMjY2MzIsMjEzNDQsMjUxMTIsMzE0NDksMjgyNTEsMzI1MDksMjcxNjcsMzE0NTYsMjQ0MzIsMjg0NjcsMjQzNTIsMjU0'@; put 'ODQsMjgwNzIsMjY0NTQsMTk5NzYsMjQwODAsMzYxMzQsMjAxODMsMzI5NjAsMzAyNjAsMzg1NTYsMjUzMDcsMjYxNTcsMjUyMTQsMjc4MzYsMzYyMTMsMjkwMzEsMzI2MTcsMjA4MDYsMzI5MDMsMjE0ODQsMzY5NzQsMjUyNDAsMjE3NDYsMzQ1NDQsMzY3NjEsMzI3NzMsMzgxNjcsMzQwNzEs'@; put 'MzY4MjUsMjc5OTMsMjk2NDUsMjYwMTUsMzA0OTUsMjk5NTYsMzA3NTksMzMyNzUsMzYxMjYsMzgwMjQsMjAzOTAsMjY1MTcsMzAxMzcsMzU3ODYsMzg2NjMsMjUzOTEsMzgyMTUsMzg0NTMsMzM5NzYsMjUzNzksMzA1MjksMjQ0NDksMjk0MjQsMjAxMDUsMjQ1OTYsMjU5NzIsMjUzMjcsMjc0'@; put 'OTEsMjU5MTksMzU1NTYsMzU1NTcsMzU1NTgsMzU1NTksMzU1NjAsMzU1NjEsMzU1NjIsMzU1NjMsMzU1NjQsMzU1NjUsMzU1NjYsMzU1NjcsMzU1NjgsMzU1NjksMzU1NzAsMzU1NzEsMzU1NzIsMzU1NzMsMzU1NzQsMzU1NzUsMzU1NzYsMzU1NzcsMzU1NzgsMzU1NzksMzU1ODAsMzU1ODEs'@; put 'MzU1ODIsMzU1ODMsMzU1ODQsMzU1ODUsMzU1ODYsMzU1ODcsMzU1ODgsMzU1ODksMzU1OTAsMzU1OTIsMzU1OTMsMzU1OTQsMzU1OTUsMzU1OTYsMzU1OTcsMzU1OTgsMzU1OTksMzU2MDAsMzU2MDEsMzU2MDIsMzU2MDMsMzU2MDQsMzU2MDUsMzU2MDYsMzU2MDcsMzU2MDgsMzU2MDksMzU2'@; put 'MTAsMzU2MTEsMzU2MTIsMzU2MTMsMzU2MTQsMzU2MTUsMzU2MTYsMzU2MTcsMzU2MTgsMzU2MTksMzU2MjAsMzU2MjEsMzU2MjMsMzU2MjQsMzU2MjUsMzU2MjYsMzU2MjcsMzU2MjgsMzU2MjksMzU2MzAsMzU2MzEsMzU2MzIsMzU2MzMsMzU2MzQsMzU2MzUsMzU2MzYsMzU2MzcsMzU2Mzgs'@; put 'MzU2MzksMzU2NDAsMzU2NDEsMzU2NDIsMzU2NDMsMzU2NDQsMzU2NDUsMzU2NDYsMzU2NDcsMzU2NDgsMzU2NDksMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMjQxMDMsMzAxNTEsMzcwNzMsMzU3NzcsMzM0MzcsMjY1MjUsMjU5MDMsMjE1NTMsMzQ1ODQsMzA2OTMsMzI5MzAsMzMwMjYsMjc3'@; put 'MTMsMjAwNDMsMzI0NTUsMzI4NDQsMzA0NTIsMjY4OTMsMjc1NDIsMjUxOTEsMjA1NDAsMjAzNTYsMjIzMzYsMjUzNTEsMjc0OTAsMzYyODYsMjE0ODIsMjYwODgsMzI0NDAsMjQ1MzUsMjUzNzAsMjU1MjcsMzMyNjcsMzMyNjgsMzI2MjIsMjQwOTIsMjM3NjksMjEwNDYsMjYyMzQsMzEyMDks'@; put 'MzEyNTgsMzYxMzYsMjg4MjUsMzAxNjQsMjgzODIsMjc4MzUsMzEzNzgsMjAwMTMsMzA0MDUsMjQ1NDQsMzgwNDcsMzQ5MzUsMzI0NTYsMzExODEsMzI5NTksMzczMjUsMjAyMTAsMjAyNDcsMzMzMTEsMjE2MDgsMjQwMzAsMjc5NTQsMzU3ODgsMzE5MDksMzY3MjQsMzI5MjAsMjQwOTAsMjE2'@; put 'NTAsMzAzODUsMjM0NDksMjYxNzIsMzk1ODgsMjk2NjQsMjY2NjYsMzQ1MjMsMjY0MTcsMjk0ODIsMzU4MzIsMzU4MDMsMzY4ODAsMzE0ODEsMjg4OTEsMjkwMzgsMjUyODQsMzA2MzMsMjIwNjUsMjAwMjcsMzM4NzksMjY2MDksMjExNjEsMzQ0OTYsMzYxNDIsMzgxMzYsMzE1NjksMzU2NTQs'@; put 'MzU2NTUsMzU2NTYsMzU2NTcsMzU2NTgsMzU2NTksMzU2NjAsMzU2NjEsMzU2NjIsMzU2NjMsMzU2NjQsMzU2NjUsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NjksMzU2NzAsMzU2NzEsMzU2NzIsMzU2NzMsMzU2NzQsMzU2NzUsMzU2NzYsMzU2NzcsMzU2NzgsMzU2NzksMzU2ODAsMzU2ODEsMzU2'@; put 'ODIsMzU2ODMsMzU2ODQsMzU2ODUsMzU2ODcsMzU2ODgsMzU2ODksMzU2OTAsMzU2OTEsMzU2OTMsMzU2OTQsMzU2OTUsMzU2OTYsMzU2OTcsMzU2OTgsMzU2OTksMzU3MDAsMzU3MDEsMzU3MDIsMzU3MDMsMzU3MDQsMzU3MDUsMzU3MDYsMzU3MDcsMzU3MDgsMzU3MDksMzU3MTAsMzU3MTEs'@; put 'MzU3MTIsMzU3MTMsMzU3MTQsMzU3MTUsMzU3MTYsMzU3MTcsMzU3MTgsMzU3MTksMzU3MjAsMzU3MjEsMzU3MjIsMzU3MjMsMzU3MjQsMzU3MjUsMzU3MjYsMzU3MjcsMzU3MjgsMzU3MjksMzU3MzAsMzU3MzEsMzU3MzIsMzU3MzMsMzU3MzQsMzU3MzUsMzU3MzYsMzU3MzcsMzU3MzgsMzU3'@; put 'MzksMzU3NDAsMzU3NDEsMzU3NDIsMzU3NDMsMzU3NTYsMzU3NjEsMzU3NzEsMzU3ODMsMzU3OTIsMzU4MTgsMzU4NDksMzU4NzAsMjAzMDMsMjc4ODAsMzEwNjksMzk1NDcsMjUyMzUsMjkyMjYsMjUzNDEsMTk5ODcsMzA3NDIsMzY3MTYsMjU3NzYsMzYxODYsMzE2ODYsMjY3MjksMjQxOTYs'@; put 'MzUwMTMsMjI5MTgsMjU3NTgsMjI3NjYsMjkzNjYsMjY4OTQsMzgxODEsMzY4NjEsMzYxODQsMjIzNjgsMzI1MTIsMzU4NDYsMjA5MzQsMjU0MTcsMjUzMDUsMjEzMzEsMjY3MDAsMjk3MzAsMzM1MzcsMzcxOTYsMjE4MjgsMzA1MjgsMjg3OTYsMjc5NzgsMjA4NTcsMjE2NzIsMzYxNjQsMjMw'@; put 'MzksMjgzNjMsMjgxMDAsMjMzODgsMzIwNDMsMjAxODAsMzE4NjksMjgzNzEsMjMzNzYsMzMyNTgsMjgxNzMsMjMzODMsMzk2ODMsMjY4MzcsMzYzOTQsMjM0NDcsMzI1MDgsMjQ2MzUsMzI0MzcsMzcwNDksMzYyMDgsMjI4NjMsMjU1NDksMzExOTksMzYyNzUsMjEzMzAsMjYwNjMsMzEwNjIs'@; put 'MzU3ODEsMzg0NTksMzI0NTIsMzgwNzUsMzIzODYsMjIwNjgsMzcyNTcsMjYzNjgsMzI2MTgsMjM1NjIsMzY5ODEsMjYxNTIsMjQwMzgsMjAzMDQsMjY1OTAsMjA1NzAsMjAzMTYsMjIzNTIsMjQyMzEsNTk0MDgsNTk0MDksNTk0MTAsNTk0MTEsNTk0MTIsMzU4OTYsMzU4OTcsMzU4OTgsMzU4'@; put 'OTksMzU5MDAsMzU5MDEsMzU5MDIsMzU5MDMsMzU5MDQsMzU5MDYsMzU5MDcsMzU5MDgsMzU5MDksMzU5MTIsMzU5MTQsMzU5MTUsMzU5MTcsMzU5MTgsMzU5MTksMzU5MjAsMzU5MjEsMzU5MjIsMzU5MjMsMzU5MjQsMzU5MjYsMzU5MjcsMzU5MjgsMzU5MjksMzU5MzEsMzU5MzIsMzU5MzMs'@; put 'MzU5MzQsMzU5MzUsMzU5MzYsMzU5MzksMzU5NDAsMzU5NDEsMzU5NDIsMzU5NDMsMzU5NDQsMzU5NDUsMzU5NDgsMzU5NDksMzU5NTAsMzU5NTEsMzU5NTIsMzU5NTMsMzU5NTQsMzU5NTYsMzU5NTcsMzU5NTgsMzU5NTksMzU5NjMsMzU5NjQsMzU5NjUsMzU5NjYsMzU5NjcsMzU5NjgsMzU5'@; put 'NjksMzU5NzEsMzU5NzIsMzU5NzQsMzU5NzUsMzU5NzYsMzU5NzksMzU5ODEsMzU5ODIsMzU5ODMsMzU5ODQsMzU5ODUsMzU5ODYsMzU5ODcsMzU5ODksMzU5OTAsMzU5OTEsMzU5OTMsMzU5OTQsMzU5OTUsMzU5OTYsMzU5OTcsMzU5OTgsMzU5OTksMzZlMywzNjAwMSwzNjAwMiwzNjAwMywz'@; put 'NjAwNCwzNjAwNSwzNjAwNiwzNjAwNywzNjAwOCwzNjAwOSwzNjAxMCwzNjAxMSwzNjAxMiwzNjAxMywyMDEwOSwxOTk4MCwyMDgwMCwxOTk4NCwyNDMxOSwyMTMxNywxOTk4OSwyMDEyMCwxOTk5OCwzOTczMCwyMzQwNCwyMjEyMSwyMDAwOCwzMTE2MiwyMDAzMSwyMTI2OSwyMDAzOSwyMjgy'@; put 'OSwyOTI0MywyMTM1OCwyNzY2NCwyMjIzOSwzMjk5NiwzOTMxOSwyNzYwMywzMDU5MCw0MDcyNywyMDAyMiwyMDEyNyw0MDcyMCwyMDA2MCwyMDA3MywyMDExNSwzMzQxNiwyMzM4NywyMTg2OCwyMjAzMSwyMDE2NCwyMTM4OSwyMTQwNSwyMTQxMSwyMTQxMywyMTQyMiwzODc1NywzNjE4OSwy'@; put 'MTI3NCwyMTQ5MywyMTI4NiwyMTI5NCwyMTMxMCwzNjE4OCwyMTM1MCwyMTM0NywyMDk5NCwyMWUzLDIxMDA2LDIxMDM3LDIxMDQzLDIxMDU1LDIxMDU2LDIxMDY4LDIxMDg2LDIxMDg5LDIxMDg0LDMzOTY3LDIxMTE3LDIxMTIyLDIxMTIxLDIxMTM2LDIxMTM5LDIwODY2LDMyNTk2LDIwMTU1'@; put 'LDIwMTYzLDIwMTY5LDIwMTYyLDIwMjAwLDIwMTkzLDIwMjAzLDIwMTkwLDIwMjUxLDIwMjExLDIwMjU4LDIwMzI0LDIwMjEzLDIwMjYxLDIwMjYzLDIwMjMzLDIwMjY3LDIwMzE4LDIwMzI3LDI1OTEyLDIwMzE0LDIwMzE3LDM2MDE0LDM2MDE1LDM2MDE2LDM2MDE3LDM2MDE4LDM2MDE5LDM2'@; put 'MDIwLDM2MDIxLDM2MDIyLDM2MDIzLDM2MDI0LDM2MDI1LDM2MDI2LDM2MDI3LDM2MDI4LDM2MDI5LDM2MDMwLDM2MDMxLDM2MDMyLDM2MDMzLDM2MDM0LDM2MDM1LDM2MDM2LDM2MDM3LDM2MDM4LDM2MDM5LDM2MDQwLDM2MDQxLDM2MDQyLDM2MDQzLDM2MDQ0LDM2MDQ1LDM2MDQ2LDM2MDQ3'@; put 'LDM2MDQ4LDM2MDQ5LDM2MDUwLDM2MDUxLDM2MDUyLDM2MDUzLDM2MDU0LDM2MDU1LDM2MDU2LDM2MDU3LDM2MDU4LDM2MDU5LDM2MDYwLDM2MDYxLDM2MDYyLDM2MDYzLDM2MDY0LDM2MDY1LDM2MDY2LDM2MDY3LDM2MDY4LDM2MDY5LDM2MDcwLDM2MDcxLDM2MDcyLDM2MDczLDM2MDc0LDM2'@; put 'MDc1LDM2MDc2LDM2MDc3LDM2MDc4LDM2MDc5LDM2MDgwLDM2MDgxLDM2MDgyLDM2MDgzLDM2MDg0LDM2MDg1LDM2MDg2LDM2MDg3LDM2MDg4LDM2MDg5LDM2MDkwLDM2MDkxLDM2MDkyLDM2MDkzLDM2MDk0LDM2MDk1LDM2MDk2LDM2MDk3LDM2MDk4LDM2MDk5LDM2MTAwLDM2MTAxLDM2MTAy'@; put 'LDM2MTAzLDM2MTA0LDM2MTA1LDM2MTA2LDM2MTA3LDM2MTA4LDM2MTA5LDIwMzE5LDIwMzExLDIwMjc0LDIwMjg1LDIwMzQyLDIwMzQwLDIwMzY5LDIwMzYxLDIwMzU1LDIwMzY3LDIwMzUwLDIwMzQ3LDIwMzk0LDIwMzQ4LDIwMzk2LDIwMzcyLDIwNDU0LDIwNDU2LDIwNDU4LDIwNDIxLDIw'@; put 'NDQyLDIwNDUxLDIwNDQ0LDIwNDMzLDIwNDQ3LDIwNDcyLDIwNTIxLDIwNTU2LDIwNDY3LDIwNTI0LDIwNDk1LDIwNTI2LDIwNTI1LDIwNDc4LDIwNTA4LDIwNDkyLDIwNTE3LDIwNTIwLDIwNjA2LDIwNTQ3LDIwNTY1LDIwNTUyLDIwNTU4LDIwNTg4LDIwNjAzLDIwNjQ1LDIwNjQ3LDIwNjQ5'@; put 'LDIwNjY2LDIwNjk0LDIwNzQyLDIwNzE3LDIwNzE2LDIwNzEwLDIwNzE4LDIwNzQzLDIwNzQ3LDIwMTg5LDI3NzA5LDIwMzEyLDIwMzI1LDIwNDMwLDQwODY0LDI3NzE4LDMxODYwLDIwODQ2LDI0MDYxLDQwNjQ5LDM5MzIwLDIwODY1LDIyODA0LDIxMjQxLDIxMjYxLDM1MzM1LDIxMjY0LDIw'@; put 'OTcxLDIyODA5LDIwODIxLDIwMTI4LDIwODIyLDIwMTQ3LDM0OTI2LDM0OTgwLDIwMTQ5LDMzMDQ0LDM1MDI2LDMxMTA0LDIzMzQ4LDM0ODE5LDMyNjk2LDIwOTA3LDIwOTEzLDIwOTI1LDIwOTI0LDM2MTEwLDM2MTExLDM2MTEyLDM2MTEzLDM2MTE0LDM2MTE1LDM2MTE2LDM2MTE3LDM2MTE4'@; put 'LDM2MTE5LDM2MTIwLDM2MTIxLDM2MTIyLDM2MTIzLDM2MTI0LDM2MTI4LDM2MTc3LDM2MTc4LDM2MTgzLDM2MTkxLDM2MTk3LDM2MjAwLDM2MjAxLDM2MjAyLDM2MjA0LDM2MjA2LDM2MjA3LDM2MjA5LDM2MjEwLDM2MjE2LDM2MjE3LDM2MjE4LDM2MjE5LDM2MjIwLDM2MjIxLDM2MjIyLDM2'@; put 'MjIzLDM2MjI0LDM2MjI2LDM2MjI3LDM2MjMwLDM2MjMxLDM2MjMyLDM2MjMzLDM2MjM2LDM2MjM3LDM2MjM4LDM2MjM5LDM2MjQwLDM2MjQyLDM2MjQzLDM2MjQ1LDM2MjQ2LDM2MjQ3LDM2MjQ4LDM2MjQ5LDM2MjUwLDM2MjUxLDM2MjUyLDM2MjUzLDM2MjU0LDM2MjU2LDM2MjU3LDM2MjU4'@; put 'LDM2MjYwLDM2MjYxLDM2MjYyLDM2MjYzLDM2MjY0LDM2MjY1LDM2MjY2LDM2MjY3LDM2MjY4LDM2MjY5LDM2MjcwLDM2MjcxLDM2MjcyLDM2Mjc0LDM2Mjc4LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg1LDM2Mjg4LDM2Mjg5LDM2MjkwLDM2MjkzLDM2Mjk1LDM2Mjk2LDM2Mjk3LDM2Mjk4LDM2'@; put 'MzAxLDM2MzA0LDM2MzA2LDM2MzA3LDM2MzA4LDIwOTM1LDIwODg2LDIwODk4LDIwOTAxLDM1NzQ0LDM1NzUwLDM1NzUxLDM1NzU0LDM1NzY0LDM1NzY1LDM1NzY3LDM1Nzc4LDM1Nzc5LDM1Nzg3LDM1NzkxLDM1NzkwLDM1Nzk0LDM1Nzk1LDM1Nzk2LDM1Nzk4LDM1ODAwLDM1ODAxLDM1ODA0'@; put 'LDM1ODA3LDM1ODA4LDM1ODEyLDM1ODE2LDM1ODE3LDM1ODIyLDM1ODI0LDM1ODI3LDM1ODMwLDM1ODMzLDM1ODM2LDM1ODM5LDM1ODQwLDM1ODQyLDM1ODQ0LDM1ODQ3LDM1ODUyLDM1ODU1LDM1ODU3LDM1ODU4LDM1ODYwLDM1ODYxLDM1ODYyLDM1ODY1LDM1ODY3LDM1ODY0LDM1ODY5LDM1'@; put 'ODcxLDM1ODcyLDM1ODczLDM1ODc3LDM1ODc5LDM1ODgyLDM1ODgzLDM1ODg2LDM1ODg3LDM1ODkwLDM1ODkxLDM1ODkzLDM1ODk0LDIxMzUzLDIxMzcwLDM4NDI5LDM4NDM0LDM4NDMzLDM4NDQ5LDM4NDQyLDM4NDYxLDM4NDYwLDM4NDY2LDM4NDczLDM4NDg0LDM4NDk1LDM4NTAzLDM4NTA4'@; put 'LDM4NTE0LDM4NTE2LDM4NTM2LDM4NTQxLDM4NTUxLDM4NTc2LDM3MDE1LDM3MDE5LDM3MDIxLDM3MDE3LDM3MDM2LDM3MDI1LDM3MDQ0LDM3MDQzLDM3MDQ2LDM3MDUwLDM2MzA5LDM2MzEyLDM2MzEzLDM2MzE2LDM2MzIwLDM2MzIxLDM2MzIyLDM2MzI1LDM2MzI2LDM2MzI3LDM2MzI5LDM2'@; put 'MzMzLDM2MzM0LDM2MzM2LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQyLDM2MzQ4LDM2MzUwLDM2MzUxLDM2MzUyLDM2MzUzLDM2MzU0LDM2MzU1LDM2MzU2LDM2MzU4LDM2MzU5LDM2MzYwLDM2MzYzLDM2MzY1LDM2MzY2LDM2MzY4LDM2MzY5LDM2MzcwLDM2MzcxLDM2MzczLDM2Mzc0LDM2Mzc1'@; put 'LDM2Mzc2LDM2Mzc3LDM2Mzc4LDM2Mzc5LDM2MzgwLDM2Mzg0LDM2Mzg1LDM2Mzg4LDM2Mzg5LDM2MzkwLDM2MzkxLDM2MzkyLDM2Mzk1LDM2Mzk3LDM2NDAwLDM2NDAyLDM2NDAzLDM2NDA0LDM2NDA2LDM2NDA3LDM2NDA4LDM2NDExLDM2NDEyLDM2NDE0LDM2NDE1LDM2NDE5LDM2NDIxLDM2'@; put 'NDIyLDM2NDI4LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDMyLDM2NDM1LDM2NDM2LDM2NDM3LDM2NDM4LDM2NDM5LDM2NDQwLDM2NDQyLDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ3LDM2NDQ4LDM2NDQ5LDM2NDUwLDM2NDUxLDM2NDUyLDM2NDUzLDM2NDU1LDM2NDU2LDM2NDU4LDM2NDU5'@; put 'LDM2NDYyLDM2NDY1LDM3MDQ4LDM3MDQwLDM3MDcxLDM3MDYxLDM3MDU0LDM3MDcyLDM3MDYwLDM3MDYzLDM3MDc1LDM3MDk0LDM3MDkwLDM3MDg0LDM3MDc5LDM3MDgzLDM3MDk5LDM3MTAzLDM3MTE4LDM3MTI0LDM3MTU0LDM3MTUwLDM3MTU1LDM3MTY5LDM3MTY3LDM3MTc3LDM3MTg3LDM3'@; put 'MTkwLDIxMDA1LDIyODUwLDIxMTU0LDIxMTY0LDIxMTY1LDIxMTgyLDIxNzU5LDIxMjAwLDIxMjA2LDIxMjMyLDIxNDcxLDI5MTY2LDMwNjY5LDI0MzA4LDIwOTgxLDIwOTg4LDM5NzI3LDIxNDMwLDI0MzIxLDMwMDQyLDI0MDQ3LDIyMzQ4LDIyNDQxLDIyNDMzLDIyNjU0LDIyNzE2LDIyNzI1'@; put 'LDIyNzM3LDIyMzEzLDIyMzE2LDIyMzE0LDIyMzIzLDIyMzI5LDIyMzE4LDIyMzE5LDIyMzY0LDIyMzMxLDIyMzM4LDIyMzc3LDIyNDA1LDIyMzc5LDIyNDA2LDIyMzk2LDIyMzk1LDIyMzc2LDIyMzgxLDIyMzkwLDIyMzg3LDIyNDQ1LDIyNDM2LDIyNDEyLDIyNDUwLDIyNDc5LDIyNDM5LDIy'@; put 'NDUyLDIyNDE5LDIyNDMyLDIyNDg1LDIyNDg4LDIyNDkwLDIyNDg5LDIyNDgyLDIyNDU2LDIyNTE2LDIyNTExLDIyNTIwLDIyNTAwLDIyNDkzLDM2NDY3LDM2NDY5LDM2NDcxLDM2NDcyLDM2NDczLDM2NDc0LDM2NDc1LDM2NDc3LDM2NDc4LDM2NDgwLDM2NDgyLDM2NDgzLDM2NDg0LDM2NDg2'@; put 'LDM2NDg4LDM2NDg5LDM2NDkwLDM2NDkxLDM2NDkyLDM2NDkzLDM2NDk0LDM2NDk3LDM2NDk4LDM2NDk5LDM2NTAxLDM2NTAyLDM2NTAzLDM2NTA0LDM2NTA1LDM2NTA2LDM2NTA3LDM2NTA5LDM2NTExLDM2NTEyLDM2NTEzLDM2NTE0LDM2NTE1LDM2NTE2LDM2NTE3LDM2NTE4LDM2NTE5LDM2'@; put 'NTIwLDM2NTIxLDM2NTIyLDM2NTI1LDM2NTI2LDM2NTI4LDM2NTI5LDM2NTMxLDM2NTMyLDM2NTMzLDM2NTM0LDM2NTM1LDM2NTM2LDM2NTM3LDM2NTM5LDM2NTQwLDM2NTQxLDM2NTQyLDM2NTQzLDM2NTQ0LDM2NTQ1LDM2NTQ2LDM2NTQ3LDM2NTQ4LDM2NTQ5LDM2NTUwLDM2NTUxLDM2NTUy'@; put 'LDM2NTUzLDM2NTU0LDM2NTU1LDM2NTU2LDM2NTU3LDM2NTU5LDM2NTYwLDM2NTYxLDM2NTYyLDM2NTYzLDM2NTY0LDM2NTY1LDM2NTY2LDM2NTY3LDM2NTY4LDM2NTY5LDM2NTcwLDM2NTcxLDM2NTcyLDM2NTczLDM2NTc0LDM2NTc1LDM2NTc2LDM2NTc3LDM2NTc4LDM2NTc5LDM2NTgwLDIy'@; put 'NTM5LDIyNTQxLDIyNTI1LDIyNTA5LDIyNTI4LDIyNTU4LDIyNTUzLDIyNTk2LDIyNTYwLDIyNjI5LDIyNjM2LDIyNjU3LDIyNjY1LDIyNjgyLDIyNjU2LDM5MzM2LDQwNzI5LDI1MDg3LDMzNDAxLDMzNDA1LDMzNDA3LDMzNDIzLDMzNDE4LDMzNDQ4LDMzNDEyLDMzNDIyLDMzNDI1LDMzNDMx'@; put 'LDMzNDMzLDMzNDUxLDMzNDY0LDMzNDcwLDMzNDU2LDMzNDgwLDMzNDgyLDMzNTA3LDMzNDMyLDMzNDYzLDMzNDU0LDMzNDgzLDMzNDg0LDMzNDczLDMzNDQ5LDMzNDYwLDMzNDQxLDMzNDUwLDMzNDM5LDMzNDc2LDMzNDg2LDMzNDQ0LDMzNTA1LDMzNTQ1LDMzNTI3LDMzNTA4LDMzNTUxLDMz'@; put 'NTQzLDMzNTAwLDMzNTI0LDMzNDkwLDMzNDk2LDMzNTQ4LDMzNTMxLDMzNDkxLDMzNTUzLDMzNTYyLDMzNTQyLDMzNTU2LDMzNTU3LDMzNTA0LDMzNDkzLDMzNTY0LDMzNjE3LDMzNjI3LDMzNjI4LDMzNTQ0LDMzNjgyLDMzNTk2LDMzNTg4LDMzNTg1LDMzNjkxLDMzNjMwLDMzNTgzLDMzNjE1'@; put 'LDMzNjA3LDMzNjAzLDMzNjMxLDMzNjAwLDMzNTU5LDMzNjMyLDMzNTgxLDMzNTk0LDMzNTg3LDMzNjM4LDMzNjM3LDM2NTgxLDM2NTgyLDM2NTgzLDM2NTg0LDM2NTg1LDM2NTg2LDM2NTg3LDM2NTg4LDM2NTg5LDM2NTkwLDM2NTkxLDM2NTkyLDM2NTkzLDM2NTk0LDM2NTk1LDM2NTk2LDM2'@; put 'NTk3LDM2NTk4LDM2NTk5LDM2NjAwLDM2NjAxLDM2NjAyLDM2NjAzLDM2NjA0LDM2NjA1LDM2NjA2LDM2NjA3LDM2NjA4LDM2NjA5LDM2NjEwLDM2NjExLDM2NjEyLDM2NjEzLDM2NjE0LDM2NjE1LDM2NjE2LDM2NjE3LDM2NjE4LDM2NjE5LDM2NjIwLDM2NjIxLDM2NjIyLDM2NjIzLDM2NjI0'@; put 'LDM2NjI1LDM2NjI2LDM2NjI3LDM2NjI4LDM2NjI5LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjMzLDM2NjM0LDM2NjM1LDM2NjM2LDM2NjM3LDM2NjM4LDM2NjM5LDM2NjQwLDM2NjQxLDM2NjQyLDM2NjQzLDM2NjQ0LDM2NjQ1LDM2NjQ2LDM2NjQ3LDM2NjQ4LDM2NjQ5LDM2NjUwLDM2NjUxLDM2'@; put 'NjUyLDM2NjUzLDM2NjU0LDM2NjU1LDM2NjU2LDM2NjU3LDM2NjU4LDM2NjU5LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY0LDM2NjY1LDM2NjY2LDM2NjY3LDM2NjY4LDM2NjY5LDM2NjcwLDM2NjcxLDM2NjcyLDM2NjczLDM2Njc0LDM2Njc1LDM2Njc2LDMzNjQwLDMzNTYzLDMzNjQx'@; put 'LDMzNjQ0LDMzNjQyLDMzNjQ1LDMzNjQ2LDMzNzEyLDMzNjU2LDMzNzE1LDMzNzE2LDMzNjk2LDMzNzA2LDMzNjgzLDMzNjkyLDMzNjY5LDMzNjYwLDMzNzE4LDMzNzA1LDMzNjYxLDMzNzIwLDMzNjU5LDMzNjg4LDMzNjk0LDMzNzA0LDMzNzIyLDMzNzI0LDMzNzI5LDMzNzkzLDMzNzY1LDMz'@; put 'NzUyLDIyNTM1LDMzODE2LDMzODAzLDMzNzU3LDMzNzg5LDMzNzUwLDMzODIwLDMzODQ4LDMzODA5LDMzNzk4LDMzNzQ4LDMzNzU5LDMzODA3LDMzNzk1LDMzNzg0LDMzNzg1LDMzNzcwLDMzNzMzLDMzNzI4LDMzODMwLDMzNzc2LDMzNzYxLDMzODg0LDMzODczLDMzODgyLDMzODgxLDMzOTA3'@; put 'LDMzOTI3LDMzOTI4LDMzOTE0LDMzOTI5LDMzOTEyLDMzODUyLDMzODYyLDMzODk3LDMzOTEwLDMzOTMyLDMzOTM0LDMzODQxLDMzOTAxLDMzOTg1LDMzOTk3LDM0ZTMsMzQwMjIsMzM5ODEsMzQwMDMsMzM5OTQsMzM5ODMsMzM5NzgsMzQwMTYsMzM5NTMsMzM5NzcsMzM5NzIsMzM5NDMsMzQw'@; put 'MjEsMzQwMTksMzQwNjAsMjk5NjUsMzQxMDQsMzQwMzIsMzQxMDUsMzQwNzksMzQxMDYsMzY2NzcsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODEsMzY2ODIsMzY2ODMsMzY2ODQsMzY2ODUsMzY2ODYsMzY2ODcsMzY2ODgsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTQsMzY2OTUs'@; put 'MzY2OTYsMzY2OTcsMzY2OTgsMzY2OTksMzY3MDAsMzY3MDEsMzY3MDIsMzY3MDMsMzY3MDQsMzY3MDUsMzY3MDYsMzY3MDcsMzY3MDgsMzY3MDksMzY3MTQsMzY3MzYsMzY3NDgsMzY3NTQsMzY3NjUsMzY3NjgsMzY3NjksMzY3NzAsMzY3NzIsMzY3NzMsMzY3NzQsMzY3NzUsMzY3NzgsMzY3'@; put 'ODAsMzY3ODEsMzY3ODIsMzY3ODMsMzY3ODYsMzY3ODcsMzY3ODgsMzY3ODksMzY3OTEsMzY3OTIsMzY3OTQsMzY3OTUsMzY3OTYsMzY3OTksMzY4MDAsMzY4MDMsMzY4MDYsMzY4MDksMzY4MTAsMzY4MTEsMzY4MTIsMzY4MTMsMzY4MTUsMzY4MTgsMzY4MjIsMzY4MjMsMzY4MjYsMzY4MzIs'@; put 'MzY4MzMsMzY4MzUsMzY4MzksMzY4NDQsMzY4NDcsMzY4NDksMzY4NTAsMzY4NTIsMzY4NTMsMzY4NTQsMzY4NTgsMzY4NTksMzY4NjAsMzY4NjIsMzY4NjMsMzY4NzEsMzY4NzIsMzY4NzYsMzY4NzgsMzY4ODMsMzY4ODUsMzY4ODgsMzQxMzQsMzQxMDcsMzQwNDcsMzQwNDQsMzQxMzcsMzQx'@; put 'MjAsMzQxNTIsMzQxNDgsMzQxNDIsMzQxNzAsMzA2MjYsMzQxMTUsMzQxNjIsMzQxNzEsMzQyMTIsMzQyMTYsMzQxODMsMzQxOTEsMzQxNjksMzQyMjIsMzQyMDQsMzQxODEsMzQyMzMsMzQyMzEsMzQyMjQsMzQyNTksMzQyNDEsMzQyNjgsMzQzMDMsMzQzNDMsMzQzMDksMzQzNDUsMzQzMjYs'@; put 'MzQzNjQsMjQzMTgsMjQzMjgsMjI4NDQsMjI4NDksMzI4MjMsMjI4NjksMjI4NzQsMjI4NzIsMjEyNjMsMjM1ODYsMjM1ODksMjM1OTYsMjM2MDQsMjUxNjQsMjUxOTQsMjUyNDcsMjUyNzUsMjUyOTAsMjUzMDYsMjUzMDMsMjUzMjYsMjUzNzgsMjUzMzQsMjU0MDEsMjU0MTksMjU0MTEsMjU1'@; put 'MTcsMjU1OTAsMjU0NTcsMjU0NjYsMjU0ODYsMjU1MjQsMjU0NTMsMjU1MTYsMjU0ODIsMjU0NDksMjU1MTgsMjU1MzIsMjU1ODYsMjU1OTIsMjU1NjgsMjU1OTksMjU1NDAsMjU1NjYsMjU1NTAsMjU2ODIsMjU1NDIsMjU1MzQsMjU2NjksMjU2NjUsMjU2MTEsMjU2MjcsMjU2MzIsMjU2MTIs'@; put 'MjU2MzgsMjU2MzMsMjU2OTQsMjU3MzIsMjU3MDksMjU3NTAsMzY4ODksMzY4OTIsMzY4OTksMzY5MDAsMzY5MDEsMzY5MDMsMzY5MDQsMzY5MDUsMzY5MDYsMzY5MDcsMzY5MDgsMzY5MTIsMzY5MTMsMzY5MTQsMzY5MTUsMzY5MTYsMzY5MTksMzY5MjEsMzY5MjIsMzY5MjUsMzY5MjcsMzY5'@; put 'MjgsMzY5MzEsMzY5MzMsMzY5MzQsMzY5MzYsMzY5MzcsMzY5MzgsMzY5MzksMzY5NDAsMzY5NDIsMzY5NDgsMzY5NDksMzY5NTAsMzY5NTMsMzY5NTQsMzY5NTYsMzY5NTcsMzY5NTgsMzY5NTksMzY5NjAsMzY5NjEsMzY5NjQsMzY5NjYsMzY5NjcsMzY5NjksMzY5NzAsMzY5NzEsMzY5NzIs'@; put 'MzY5NzUsMzY5NzYsMzY5NzcsMzY5NzgsMzY5NzksMzY5ODIsMzY5ODMsMzY5ODQsMzY5ODUsMzY5ODYsMzY5ODcsMzY5ODgsMzY5OTAsMzY5OTMsMzY5OTYsMzY5OTcsMzY5OTgsMzY5OTksMzcwMDEsMzcwMDIsMzcwMDQsMzcwMDUsMzcwMDYsMzcwMDcsMzcwMDgsMzcwMTAsMzcwMTIsMzcw'@; put 'MTQsMzcwMTYsMzcwMTgsMzcwMjAsMzcwMjIsMzcwMjMsMzcwMjQsMzcwMjgsMzcwMjksMzcwMzEsMzcwMzIsMzcwMzMsMzcwMzUsMzcwMzcsMzcwNDIsMzcwNDcsMzcwNTIsMzcwNTMsMzcwNTUsMzcwNTYsMjU3MjIsMjU3ODMsMjU3ODQsMjU3NTMsMjU3ODYsMjU3OTIsMjU4MDgsMjU4MTUs'@; put 'MjU4MjgsMjU4MjYsMjU4NjUsMjU4OTMsMjU5MDIsMjQzMzEsMjQ1MzAsMjk5NzcsMjQzMzcsMjEzNDMsMjE0ODksMjE1MDEsMjE0ODEsMjE0ODAsMjE0OTksMjE1MjIsMjE1MjYsMjE1MTAsMjE1NzksMjE1ODYsMjE1ODcsMjE1ODgsMjE1OTAsMjE1NzEsMjE1MzcsMjE1OTEsMjE1OTMsMjE1'@; put 'MzksMjE1NTQsMjE2MzQsMjE2NTIsMjE2MjMsMjE2MTcsMjE2MDQsMjE2NTgsMjE2NTksMjE2MzYsMjE2MjIsMjE2MDYsMjE2NjEsMjE3MTIsMjE2NzcsMjE2OTgsMjE2ODQsMjE3MTQsMjE2NzEsMjE2NzAsMjE3MTUsMjE3MTYsMjE2MTgsMjE2NjcsMjE3MTcsMjE2OTEsMjE2OTUsMjE3MDgs'@; put 'MjE3MjEsMjE3MjIsMjE3MjQsMjE2NzMsMjE2NzQsMjE2NjgsMjE3MjUsMjE3MTEsMjE3MjYsMjE3ODcsMjE3MzUsMjE3OTIsMjE3NTcsMjE3ODAsMjE3NDcsMjE3OTQsMjE3OTUsMjE3NzUsMjE3NzcsMjE3OTksMjE4MDIsMjE4NjMsMjE5MDMsMjE5NDEsMjE4MzMsMjE4NjksMjE4MjUsMjE4'@; put 'NDUsMjE4MjMsMjE4NDAsMjE4MjAsMzcwNTgsMzcwNTksMzcwNjIsMzcwNjQsMzcwNjUsMzcwNjcsMzcwNjgsMzcwNjksMzcwNzQsMzcwNzYsMzcwNzcsMzcwNzgsMzcwODAsMzcwODEsMzcwODIsMzcwODYsMzcwODcsMzcwODgsMzcwOTEsMzcwOTIsMzcwOTMsMzcwOTcsMzcwOTgsMzcxMDAs'@; put 'MzcxMDIsMzcxMDQsMzcxMDUsMzcxMDYsMzcxMDcsMzcxMDksMzcxMTAsMzcxMTEsMzcxMTMsMzcxMTQsMzcxMTUsMzcxMTYsMzcxMTksMzcxMjAsMzcxMjEsMzcxMjMsMzcxMjUsMzcxMjYsMzcxMjcsMzcxMjgsMzcxMjksMzcxMzAsMzcxMzEsMzcxMzIsMzcxMzMsMzcxMzQsMzcxMzUsMzcx'@; put 'MzYsMzcxMzcsMzcxMzgsMzcxMzksMzcxNDAsMzcxNDEsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDcsMzcxNDgsMzcxNDksMzcxNTEsMzcxNTIsMzcxNTMsMzcxNTYsMzcxNTcsMzcxNTgsMzcxNTksMzcxNjAsMzcxNjEsMzcxNjIsMzcxNjMsMzcxNjQsMzcxNjUsMzcxNjYsMzcxNjgs'@; put 'MzcxNzAsMzcxNzEsMzcxNzIsMzcxNzMsMzcxNzQsMzcxNzUsMzcxNzYsMzcxNzgsMzcxNzksMzcxODAsMzcxODEsMzcxODIsMzcxODMsMzcxODQsMzcxODUsMzcxODYsMzcxODgsMjE4MTUsMjE4NDYsMjE4NzcsMjE4NzgsMjE4NzksMjE4MTEsMjE4MDgsMjE4NTIsMjE4OTksMjE5NzAsMjE4'@; put 'OTEsMjE5MzcsMjE5NDUsMjE4OTYsMjE4ODksMjE5MTksMjE4ODYsMjE5NzQsMjE5MDUsMjE4ODMsMjE5ODMsMjE5NDksMjE5NTAsMjE5MDgsMjE5MTMsMjE5OTQsMjIwMDcsMjE5NjEsMjIwNDcsMjE5NjksMjE5OTUsMjE5OTYsMjE5NzIsMjE5OTAsMjE5ODEsMjE5NTYsMjE5OTksMjE5ODks'@; put 'MjIwMDIsMjIwMDMsMjE5NjQsMjE5NjUsMjE5OTIsMjIwMDUsMjE5ODgsMzY3NTYsMjIwNDYsMjIwMjQsMjIwMjgsMjIwMTcsMjIwNTIsMjIwNTEsMjIwMTQsMjIwMTYsMjIwNTUsMjIwNjEsMjIxMDQsMjIwNzMsMjIxMDMsMjIwNjAsMjIwOTMsMjIxMTQsMjIxMDUsMjIxMDgsMjIwOTIsMjIx'@; put 'MDAsMjIxNTAsMjIxMTYsMjIxMjksMjIxMjMsMjIxMzksMjIxNDAsMjIxNDksMjIxNjMsMjIxOTEsMjIyMjgsMjIyMzEsMjIyMzcsMjIyNDEsMjIyNjEsMjIyNTEsMjIyNjUsMjIyNzEsMjIyNzYsMjIyODIsMjIyODEsMjIzMDAsMjQwNzksMjQwODksMjQwODQsMjQwODEsMjQxMTMsMjQxMjMs'@; put 'MjQxMjQsMzcxODksMzcxOTEsMzcxOTIsMzcyMDEsMzcyMDMsMzcyMDQsMzcyMDUsMzcyMDYsMzcyMDgsMzcyMDksMzcyMTEsMzcyMTIsMzcyMTUsMzcyMTYsMzcyMjIsMzcyMjMsMzcyMjQsMzcyMjcsMzcyMjksMzcyMzUsMzcyNDIsMzcyNDMsMzcyNDQsMzcyNDgsMzcyNDksMzcyNTAsMzcy'@; put 'NTEsMzcyNTIsMzcyNTQsMzcyNTYsMzcyNTgsMzcyNjIsMzcyNjMsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzAsMzcyNzEsMzcyNzIsMzcyNzMsMzcyNzYsMzcyNzcsMzcyNzgsMzcyNzksMzcyODAsMzcyODEsMzcyODQsMzcyODUsMzcyODYsMzcyODcsMzcyODgsMzcyODksMzcyOTEsMzcyOTIs'@; put 'MzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDMsMzczMDQsMzczMDUsMzczMDcsMzczMDgsMzczMDksMzczMTAsMzczMTEsMzczMTIsMzczMTMsMzczMTQsMzczMTUsMzczMTYsMzczMTcsMzczMTgsMzczMjAsMzczMjMsMzczMjgsMzczMzAsMzczMzEsMzczMzIsMzczMzMsMzcz'@; put 'MzQsMzczMzUsMzczMzYsMzczMzcsMzczMzgsMzczMzksMzczNDEsMzczNDIsMzczNDMsMzczNDQsMzczNDUsMzczNDYsMzczNDcsMzczNDgsMzczNDksMjQxMTksMjQxMzIsMjQxNDgsMjQxNTUsMjQxNTgsMjQxNjEsMjM2OTIsMjM2NzQsMjM2OTMsMjM2OTYsMjM3MDIsMjM2ODgsMjM3MDQs'@; put 'MjM3MDUsMjM2OTcsMjM3MDYsMjM3MDgsMjM3MzMsMjM3MTQsMjM3NDEsMjM3MjQsMjM3MjMsMjM3MjksMjM3MTUsMjM3NDUsMjM3MzUsMjM3NDgsMjM3NjIsMjM3ODAsMjM3NTUsMjM3ODEsMjM4MTAsMjM4MTEsMjM4NDcsMjM4NDYsMjM4NTQsMjM4NDQsMjM4MzgsMjM4MTQsMjM4MzUsMjM4'@; put 'OTYsMjM4NzAsMjM4NjAsMjM4NjksMjM5MTYsMjM4OTksMjM5MTksMjM5MDEsMjM5MTUsMjM4ODMsMjM4ODIsMjM5MTMsMjM5MjQsMjM5MzgsMjM5NjEsMjM5NjUsMzU5NTUsMjM5OTEsMjQwMDUsMjQ0MzUsMjQ0MzksMjQ0NTAsMjQ0NTUsMjQ0NTcsMjQ0NjAsMjQ0NjksMjQ0NzMsMjQ0NzYs'@; put 'MjQ0ODgsMjQ0OTMsMjQ1MDEsMjQ1MDgsMzQ5MTQsMjQ0MTcsMjkzNTcsMjkzNjAsMjkzNjQsMjkzNjcsMjkzNjgsMjkzNzksMjkzNzcsMjkzOTAsMjkzODksMjkzOTQsMjk0MTYsMjk0MjMsMjk0MTcsMjk0MjYsMjk0MjgsMjk0MzEsMjk0NDEsMjk0MjcsMjk0NDMsMjk0MzQsMzczNTAsMzcz'@; put 'NTEsMzczNTIsMzczNTMsMzczNTQsMzczNTUsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjIsMzczNjMsMzczNjQsMzczNjUsMzczNjYsMzczNjcsMzczNjgsMzczNjksMzczNzAsMzczNzEsMzczNzIsMzczNzMsMzczNzQsMzczNzUsMzczNzYsMzczNzcsMzczNzgs'@; put 'MzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQsMzczODUsMzczODYsMzczODcsMzczODgsMzczODksMzczOTAsMzczOTEsMzczOTIsMzczOTMsMzczOTQsMzczOTUsMzczOTYsMzczOTcsMzczOTgsMzczOTksMzc0MDAsMzc0MDEsMzc0MDIsMzc0MDMsMzc0MDQsMzc0MDUsMzc0'@; put 'MDYsMzc0MDcsMzc0MDgsMzc0MDksMzc0MTAsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTUsMzc0MTYsMzc0MTcsMzc0MTgsMzc0MTksMzc0MjAsMzc0MjEsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjUsMzc0MjYsMzc0MjcsMzc0MjgsMzc0MjksMzc0MzAsMzc0MzEsMzc0MzIsMzc0MzMs'@; put 'Mzc0MzQsMzc0MzUsMzc0MzYsMzc0MzcsMzc0MzgsMzc0MzksMzc0NDAsMzc0NDEsMzc0NDIsMzc0NDMsMzc0NDQsMzc0NDUsMjk0MzUsMjk0NjMsMjk0NTksMjk0NzMsMjk0NTAsMjk0NzAsMjk0NjksMjk0NjEsMjk0NzQsMjk0OTcsMjk0NzcsMjk0ODQsMjk0OTYsMjk0ODksMjk1MjAsMjk1'@; put 'MTcsMjk1MjcsMjk1MzYsMjk1NDgsMjk1NTEsMjk1NjYsMzMzMDcsMjI4MjEsMzkxNDMsMjI4MjAsMjI3ODYsMzkyNjcsMzkyNzEsMzkyNzIsMzkyNzMsMzkyNzQsMzkyNzUsMzkyNzYsMzkyODQsMzkyODcsMzkyOTMsMzkyOTYsMzkzMDAsMzkzMDMsMzkzMDYsMzkzMDksMzkzMTIsMzkzMTMs'@; put 'MzkzMTUsMzkzMTYsMzkzMTcsMjQxOTIsMjQyMDksMjQyMDMsMjQyMTQsMjQyMjksMjQyMjQsMjQyNDksMjQyNDUsMjQyNTQsMjQyNDMsMzYxNzksMjQyNzQsMjQyNzMsMjQyODMsMjQyOTYsMjQyOTgsMzMyMTAsMjQ1MTYsMjQ1MjEsMjQ1MzQsMjQ1MjcsMjQ1NzksMjQ1NTgsMjQ1ODAsMjQ1'@; put 'NDUsMjQ1NDgsMjQ1NzQsMjQ1ODEsMjQ1ODIsMjQ1NTQsMjQ1NTcsMjQ1NjgsMjQ2MDEsMjQ2MjksMjQ2MTQsMjQ2MDMsMjQ1OTEsMjQ1ODksMjQ2MTcsMjQ2MTksMjQ1ODYsMjQ2MzksMjQ2MDksMjQ2OTYsMjQ2OTcsMjQ2OTksMjQ2OTgsMjQ2NDIsMzc0NDYsMzc0NDcsMzc0NDgsMzc0NDks'@; put 'Mzc0NTAsMzc0NTEsMzc0NTIsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTYsMzc0NTcsMzc0NTgsMzc0NTksMzc0NjAsMzc0NjEsMzc0NjIsMzc0NjMsMzc0NjQsMzc0NjUsMzc0NjYsMzc0NjcsMzc0NjgsMzc0NjksMzc0NzAsMzc0NzEsMzc0NzIsMzc0NzMsMzc0NzQsMzc0NzUsMzc0NzYsMzc0'@; put 'NzcsMzc0NzgsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODIsMzc0ODMsMzc0ODQsMzc0ODUsMzc0ODYsMzc0ODcsMzc0ODgsMzc0ODksMzc0OTAsMzc0OTEsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTgsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDIsMzc1MDMsMzc1MDQsMzc1MDUs'@; put 'Mzc1MDYsMzc1MDcsMzc1MDgsMzc1MDksMzc1MTAsMzc1MTEsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTUsMzc1MTYsMzc1MTcsMzc1MTksMzc1MjAsMzc1MjEsMzc1MjIsMzc1MjMsMzc1MjQsMzc1MjUsMzc1MjYsMzc1MjcsMzc1MjgsMzc1MjksMzc1MzAsMzc1MzEsMzc1MzIsMzc1MzMsMzc1'@; put 'MzQsMzc1MzUsMzc1MzYsMzc1MzcsMzc1MzgsMzc1MzksMzc1NDAsMzc1NDEsMzc1NDIsMzc1NDMsMjQ2ODIsMjQ3MDEsMjQ3MjYsMjQ3MzAsMjQ3NDksMjQ3MzMsMjQ3MDcsMjQ3MjIsMjQ3MTYsMjQ3MzEsMjQ4MTIsMjQ3NjMsMjQ3NTMsMjQ3OTcsMjQ3OTIsMjQ3NzQsMjQ3OTQsMjQ3NTYs'@; put 'MjQ4NjQsMjQ4NzAsMjQ4NTMsMjQ4NjcsMjQ4MjAsMjQ4MzIsMjQ4NDYsMjQ4NzUsMjQ5MDYsMjQ5NDksMjUwMDQsMjQ5ODAsMjQ5OTksMjUwMTUsMjUwNDQsMjUwNzcsMjQ1NDEsMzg1NzksMzgzNzcsMzgzNzksMzgzODUsMzgzODcsMzgzODksMzgzOTAsMzgzOTYsMzgzOTgsMzg0MDMsMzg0'@; put 'MDQsMzg0MDYsMzg0MDgsMzg0MTAsMzg0MTEsMzg0MTIsMzg0MTMsMzg0MTUsMzg0MTgsMzg0MjEsMzg0MjIsMzg0MjMsMzg0MjUsMzg0MjYsMjAwMTIsMjkyNDcsMjUxMDksMjc3MDEsMjc3MzIsMjc3NDAsMjc3MjIsMjc4MTEsMjc3ODEsMjc3OTIsMjc3OTYsMjc3ODgsMjc3NTIsMjc3NTMs'@; put 'Mjc3NjQsMjc3NjYsMjc3ODIsMjc4MTcsMjc4NTYsMjc4NjAsMjc4MjEsMjc4OTUsMjc4OTYsMjc4ODksMjc4NjMsMjc4MjYsMjc4NzIsMjc4NjIsMjc4OTgsMjc4ODMsMjc4ODYsMjc4MjUsMjc4NTksMjc4ODcsMjc5MDIsMzc1NDQsMzc1NDUsMzc1NDYsMzc1NDcsMzc1NDgsMzc1NDksMzc1'@; put 'NTEsMzc1NTIsMzc1NTMsMzc1NTQsMzc1NTUsMzc1NTYsMzc1NTcsMzc1NTgsMzc1NTksMzc1NjAsMzc1NjEsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjYsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzIsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzcsMzc1NzgsMzc1Nzks'@; put 'Mzc1ODAsMzc1ODEsMzc1ODIsMzc1ODMsMzc1ODQsMzc1ODUsMzc1ODYsMzc1ODcsMzc1ODgsMzc1ODksMzc1OTAsMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTQsMzc1OTUsMzc1OTYsMzc1OTcsMzc1OTgsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDIsMzc2MDMsMzc2MDQsMzc2MDUsMzc2MDYsMzc2'@; put 'MDcsMzc2MDgsMzc2MDksMzc2MTAsMzc2MTEsMzc2MTIsMzc2MTMsMzc2MTQsMzc2MTUsMzc2MTYsMzc2MTcsMzc2MTgsMzc2MTksMzc2MjAsMzc2MjEsMzc2MjIsMzc2MjMsMzc2MjQsMzc2MjUsMzc2MjYsMzc2MjcsMzc2MjgsMzc2MjksMzc2MzAsMzc2MzEsMzc2MzIsMzc2MzMsMzc2MzQs'@; put 'Mzc2MzUsMzc2MzYsMzc2MzcsMzc2MzgsMzc2MzksMzc2NDAsMzc2NDEsMjc5NjEsMjc5NDMsMjc5MTYsMjc5NzEsMjc5NzYsMjc5MTEsMjc5MDgsMjc5MjksMjc5MTgsMjc5NDcsMjc5ODEsMjc5NTAsMjc5NTcsMjc5MzAsMjc5ODMsMjc5ODYsMjc5ODgsMjc5NTUsMjgwNDksMjgwMTUsMjgw'@; put 'NjIsMjgwNjQsMjc5OTgsMjgwNTEsMjgwNTIsMjc5OTYsMjhlMywyODAyOCwyODAwMywyODE4NiwyODEwMywyODEwMSwyODEyNiwyODE3NCwyODA5NSwyODEyOCwyODE3NywyODEzNCwyODEyNSwyODEyMSwyODE4MiwyODA3NSwyODE3MiwyODA3OCwyODIwMywyODI3MCwyODIzOCwyODI2Nywy'@; put 'ODMzOCwyODI1NSwyODI5NCwyODI0MywyODI0NCwyODIxMCwyODE5NywyODIyOCwyODM4MywyODMzNywyODMxMiwyODM4NCwyODQ2MSwyODM4NiwyODMyNSwyODMyNywyODM0OSwyODM0NywyODM0MywyODM3NSwyODM0MCwyODM2NywyODMwMywyODM1NCwyODMxOSwyODUxNCwyODQ4NiwyODQ4'@; put 'NywyODQ1MiwyODQzNywyODQwOSwyODQ2MywyODQ3MCwyODQ5MSwyODUzMiwyODQ1OCwyODQyNSwyODQ1NywyODU1MywyODU1NywyODU1NiwyODUzNiwyODUzMCwyODU0MCwyODUzOCwyODYyNSwzNzY0MiwzNzY0MywzNzY0NCwzNzY0NSwzNzY0NiwzNzY0NywzNzY0OCwzNzY0OSwzNzY1MCwz'@; put 'NzY1MSwzNzY1MiwzNzY1MywzNzY1NCwzNzY1NSwzNzY1NiwzNzY1NywzNzY1OCwzNzY1OSwzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NCwzNzY2NSwzNzY2NiwzNzY2NywzNzY2OCwzNzY2OSwzNzY3MCwzNzY3MSwzNzY3MiwzNzY3MywzNzY3NCwzNzY3NSwzNzY3NiwzNzY3NywzNzY3'@; put 'OCwzNzY3OSwzNzY4MCwzNzY4MSwzNzY4MiwzNzY4MywzNzY4NCwzNzY4NSwzNzY4NiwzNzY4NywzNzY4OCwzNzY4OSwzNzY5MCwzNzY5MSwzNzY5MiwzNzY5MywzNzY5NSwzNzY5NiwzNzY5NywzNzY5OCwzNzY5OSwzNzcwMCwzNzcwMSwzNzcwMiwzNzcwMywzNzcwNCwzNzcwNSwzNzcwNiwz'@; put 'NzcwNywzNzcwOCwzNzcwOSwzNzcxMCwzNzcxMSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNSwzNzcxNiwzNzcxNywzNzcxOCwzNzcxOSwzNzcyMCwzNzcyMSwzNzcyMiwzNzcyMywzNzcyNCwzNzcyNSwzNzcyNiwzNzcyNywzNzcyOCwzNzcyOSwzNzczMCwzNzczMSwzNzczMiwzNzczMywzNzcz'@; put 'NCwzNzczNSwzNzczNiwzNzczNywzNzczOSwyODYxNywyODU4MywyODYwMSwyODU5OCwyODYxMCwyODY0MSwyODY1NCwyODYzOCwyODY0MCwyODY1NSwyODY5OCwyODcwNywyODY5OSwyODcyOSwyODcyNSwyODc1MSwyODc2NiwyMzQyNCwyMzQyOCwyMzQ0NSwyMzQ0MywyMzQ2MSwyMzQ4MCwy'@; put 'OTk5OSwzOTU4MiwyNTY1MiwyMzUyNCwyMzUzNCwzNTEyMCwyMzUzNiwzNjQyMywzNTU5MSwzNjc5MCwzNjgxOSwzNjgyMSwzNjgzNywzNjg0NiwzNjgzNiwzNjg0MSwzNjgzOCwzNjg1MSwzNjg0MCwzNjg2OSwzNjg2OCwzNjg3NSwzNjkwMiwzNjg4MSwzNjg3NywzNjg4NiwzNjg5NywzNjkx'@; put 'NywzNjkxOCwzNjkwOSwzNjkxMSwzNjkzMiwzNjk0NSwzNjk0NiwzNjk0NCwzNjk2OCwzNjk1MiwzNjk2MiwzNjk1NSwyNjI5NywzNjk4MCwzNjk4OSwzNjk5NCwzN2UzLDM2OTk1LDM3MDAzLDI0NDAwLDI0NDA3LDI0NDA2LDI0NDA4LDIzNjExLDIxNjc1LDIzNjMyLDIzNjQxLDIzNDA5LDIz'@; put 'NjUxLDIzNjU0LDMyNzAwLDI0MzYyLDI0MzYxLDI0MzY1LDMzMzk2LDI0MzgwLDM5NzM5LDIzNjYyLDIyOTEzLDIyOTE1LDIyOTI1LDIyOTUzLDIyOTU0LDIyOTQ3LDM3NzQwLDM3NzQxLDM3NzQyLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ2LDM3NzQ3LDM3NzQ4LDM3NzQ5LDM3NzUwLDM3NzUx'@; put 'LDM3NzUyLDM3NzUzLDM3NzU0LDM3NzU1LDM3NzU2LDM3NzU3LDM3NzU4LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzYzLDM3NzY0LDM3NzY1LDM3NzY2LDM3NzY3LDM3NzY4LDM3NzY5LDM3NzcwLDM3NzcxLDM3NzcyLDM3NzczLDM3Nzc0LDM3Nzc2LDM3Nzc3LDM3Nzc4LDM3Nzc5LDM3'@; put 'NzgwLDM3NzgxLDM3NzgyLDM3NzgzLDM3Nzg0LDM3Nzg1LDM3Nzg2LDM3Nzg3LDM3Nzg4LDM3Nzg5LDM3NzkwLDM3NzkxLDM3NzkyLDM3NzkzLDM3Nzk0LDM3Nzk1LDM3Nzk2LDM3Nzk3LDM3Nzk4LDM3Nzk5LDM3ODAwLDM3ODAxLDM3ODAyLDM3ODAzLDM3ODA0LDM3ODA1LDM3ODA2LDM3ODA3'@; put 'LDM3ODA4LDM3ODA5LDM3ODEwLDM3ODExLDM3ODEyLDM3ODEzLDM3ODE0LDM3ODE1LDM3ODE2LDM3ODE3LDM3ODE4LDM3ODE5LDM3ODIwLDM3ODIxLDM3ODIyLDM3ODIzLDM3ODI0LDM3ODI1LDM3ODI2LDM3ODI3LDM3ODI4LDM3ODI5LDM3ODMwLDM3ODMxLDM3ODMyLDM3ODMzLDM3ODM1LDM3'@; put 'ODM2LDM3ODM3LDIyOTM1LDIyOTg2LDIyOTU1LDIyOTQyLDIyOTQ4LDIyOTk0LDIyOTYyLDIyOTU5LDIyOTk5LDIyOTc0LDIzMDQ1LDIzMDQ2LDIzMDA1LDIzMDQ4LDIzMDExLDIzZTMsMjMwMzMsMjMwNTIsMjMwNDksMjMwOTAsMjMwOTIsMjMwNTcsMjMwNzUsMjMwNTksMjMxMDQsMjMxNDMs'@; put 'MjMxMTQsMjMxMjUsMjMxMDAsMjMxMzgsMjMxNTcsMzMwMDQsMjMyMTAsMjMxOTUsMjMxNTksMjMxNjIsMjMyMzAsMjMyNzUsMjMyMTgsMjMyNTAsMjMyNTIsMjMyMjQsMjMyNjQsMjMyNjcsMjMyODEsMjMyNTQsMjMyNzAsMjMyNTYsMjMyNjAsMjMzMDUsMjMzMTksMjMzMTgsMjMzNDYsMjMz'@; put 'NTEsMjMzNjAsMjM1NzMsMjM1ODAsMjMzODYsMjMzOTcsMjM0MTEsMjMzNzcsMjMzNzksMjMzOTQsMzk1NDEsMzk1NDMsMzk1NDQsMzk1NDYsMzk1NTEsMzk1NDksMzk1NTIsMzk1NTMsMzk1NTcsMzk1NjAsMzk1NjIsMzk1NjgsMzk1NzAsMzk1NzEsMzk1NzQsMzk1NzYsMzk1NzksMzk1ODAs'@; put 'Mzk1ODEsMzk1ODMsMzk1ODQsMzk1ODYsMzk1ODcsMzk1ODksMzk1OTEsMzI0MTUsMzI0MTcsMzI0MTksMzI0MjEsMzI0MjQsMzI0MjUsMzc4MzgsMzc4MzksMzc4NDAsMzc4NDEsMzc4NDIsMzc4NDMsMzc4NDQsMzc4NDUsMzc4NDcsMzc4NDgsMzc4NDksMzc4NTAsMzc4NTEsMzc4NTIsMzc4'@; put 'NTMsMzc4NTQsMzc4NTUsMzc4NTYsMzc4NTcsMzc4NTgsMzc4NTksMzc4NjAsMzc4NjEsMzc4NjIsMzc4NjMsMzc4NjQsMzc4NjUsMzc4NjYsMzc4NjcsMzc4NjgsMzc4NjksMzc4NzAsMzc4NzEsMzc4NzIsMzc4NzMsMzc4NzQsMzc4NzUsMzc4NzYsMzc4NzcsMzc4NzgsMzc4NzksMzc4ODAs'@; put 'Mzc4ODEsMzc4ODIsMzc4ODMsMzc4ODQsMzc4ODUsMzc4ODYsMzc4ODcsMzc4ODgsMzc4ODksMzc4OTAsMzc4OTEsMzc4OTIsMzc4OTMsMzc4OTQsMzc4OTUsMzc4OTYsMzc4OTcsMzc4OTgsMzc4OTksMzc5MDAsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDQsMzc5MDUsMzc5MDYsMzc5MDcsMzc5'@; put 'MDgsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTIsMzc5MTMsMzc5MTQsMzc5MTUsMzc5MTYsMzc5MTcsMzc5MTgsMzc5MTksMzc5MjAsMzc5MjEsMzc5MjIsMzc5MjMsMzc5MjQsMzc5MjUsMzc5MjYsMzc5MjcsMzc5MjgsMzc5MjksMzc5MzAsMzc5MzEsMzc5MzIsMzc5MzMsMzc5MzQsMzI0Mjks'@; put 'MzI0MzIsMzI0NDYsMzI0NDgsMzI0NDksMzI0NTAsMzI0NTcsMzI0NTksMzI0NjAsMzI0NjQsMzI0NjgsMzI0NzEsMzI0NzUsMzI0ODAsMzI0ODEsMzI0ODgsMzI0OTEsMzI0OTQsMzI0OTUsMzI0OTcsMzI0OTgsMzI1MjUsMzI1MDIsMzI1MDYsMzI1MDcsMzI1MTAsMzI1MTMsMzI1MTQsMzI1'@; put 'MTUsMzI1MTksMzI1MjAsMzI1MjMsMzI1MjQsMzI1MjcsMzI1MjksMzI1MzAsMzI1MzUsMzI1MzcsMzI1NDAsMzI1MzksMzI1NDMsMzI1NDUsMzI1NDYsMzI1NDcsMzI1NDgsMzI1NDksMzI1NTAsMzI1NTEsMzI1NTQsMzI1NTUsMzI1NTYsMzI1NTcsMzI1NTksMzI1NjAsMzI1NjEsMzI1NjIs'@; put 'MzI1NjMsMzI1NjUsMjQxODYsMzAwNzksMjQwMjcsMzAwMTQsMzcwMTMsMjk1ODIsMjk1ODUsMjk2MTQsMjk2MDIsMjk1OTksMjk2NDcsMjk2MzQsMjk2NDksMjk2MjMsMjk2MTksMjk2MzIsMjk2NDEsMjk2NDAsMjk2NjksMjk2NTcsMzkwMzYsMjk3MDYsMjk2NzMsMjk2NzEsMjk2NjIsMjk2'@; put 'MjYsMjk2ODIsMjk3MTEsMjk3MzgsMjk3ODcsMjk3MzQsMjk3MzMsMjk3MzYsMjk3NDQsMjk3NDIsMjk3NDAsMzc5MzUsMzc5MzYsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDEsMzc5NDIsMzc5NDMsMzc5NDQsMzc5NDUsMzc5NDYsMzc5NDcsMzc5NDgsMzc5NDksMzc5NTEsMzc5NTIs'@; put 'Mzc5NTMsMzc5NTQsMzc5NTUsMzc5NTYsMzc5NTcsMzc5NTgsMzc5NTksMzc5NjAsMzc5NjEsMzc5NjIsMzc5NjMsMzc5NjQsMzc5NjUsMzc5NjYsMzc5NjcsMzc5NjgsMzc5NjksMzc5NzAsMzc5NzEsMzc5NzIsMzc5NzMsMzc5NzQsMzc5NzUsMzc5NzYsMzc5NzcsMzc5NzgsMzc5NzksMzc5'@; put 'ODAsMzc5ODEsMzc5ODIsMzc5ODMsMzc5ODQsMzc5ODUsMzc5ODYsMzc5ODcsMzc5ODgsMzc5ODksMzc5OTAsMzc5OTEsMzc5OTIsMzc5OTMsMzc5OTQsMzc5OTYsMzc5OTcsMzc5OTgsMzc5OTksMzhlMywzODAwMSwzODAwMiwzODAwMywzODAwNCwzODAwNSwzODAwNiwzODAwNywzODAwOCwz'@; put 'ODAwOSwzODAxMCwzODAxMSwzODAxMiwzODAxMywzODAxNCwzODAxNSwzODAxNiwzODAxNywzODAxOCwzODAxOSwzODAyMCwzODAzMywzODAzOCwzODA0MCwzODA4NywzODA5NSwzODA5OSwzODEwMCwzODEwNiwzODExOCwzODEzOSwzODE3MiwzODE3NiwyOTcyMywyOTcyMiwyOTc2MSwyOTc4'@; put 'OCwyOTc4MywyOTc4MSwyOTc4NSwyOTgxNSwyOTgwNSwyOTgyMiwyOTg1MiwyOTgzOCwyOTgyNCwyOTgyNSwyOTgzMSwyOTgzNSwyOTg1NCwyOTg2NCwyOTg2NSwyOTg0MCwyOTg2MywyOTkwNiwyOTg4MiwzODg5MCwzODg5MSwzODg5MiwyNjQ0NCwyNjQ1MSwyNjQ2MiwyNjQ0MCwyNjQ3Mywy'@; put 'NjUzMywyNjUwMywyNjQ3NCwyNjQ4MywyNjUyMCwyNjUzNSwyNjQ4NSwyNjUzNiwyNjUyNiwyNjU0MSwyNjUwNywyNjQ4NywyNjQ5MiwyNjYwOCwyNjYzMywyNjU4NCwyNjYzNCwyNjYwMSwyNjU0NCwyNjYzNiwyNjU4NSwyNjU0OSwyNjU4NiwyNjU0NywyNjU4OSwyNjYyNCwyNjU2MywyNjU1'@; put 'MiwyNjU5NCwyNjYzOCwyNjU2MSwyNjYyMSwyNjY3NCwyNjY3NSwyNjcyMCwyNjcyMSwyNjcwMiwyNjcyMiwyNjY5MiwyNjcyNCwyNjc1NSwyNjY1MywyNjcwOSwyNjcyNiwyNjY4OSwyNjcyNywyNjY4OCwyNjY4NiwyNjY5OCwyNjY5NywyNjY2NSwyNjgwNSwyNjc2NywyNjc0MCwyNjc0Mywy'@; put 'Njc3MSwyNjczMSwyNjgxOCwyNjk5MCwyNjg3NiwyNjkxMSwyNjkxMiwyNjg3MywzODE4MywzODE5NSwzODIwNSwzODIxMSwzODIxNiwzODIxOSwzODIyOSwzODIzNCwzODI0MCwzODI1NCwzODI2MCwzODI2MSwzODI2MywzODI2NCwzODI2NSwzODI2NiwzODI2NywzODI2OCwzODI2OSwzODI3'@; put 'MCwzODI3MiwzODI3MywzODI3NCwzODI3NSwzODI3NiwzODI3NywzODI3OCwzODI3OSwzODI4MCwzODI4MSwzODI4MiwzODI4MywzODI4NCwzODI4NSwzODI4NiwzODI4NywzODI4OCwzODI4OSwzODI5MCwzODI5MSwzODI5MiwzODI5MywzODI5NCwzODI5NSwzODI5NiwzODI5NywzODI5OCwz'@; put 'ODI5OSwzODMwMCwzODMwMSwzODMwMiwzODMwMywzODMwNCwzODMwNSwzODMwNiwzODMwNywzODMwOCwzODMwOSwzODMxMCwzODMxMSwzODMxMiwzODMxMywzODMxNCwzODMxNSwzODMxNiwzODMxNywzODMxOCwzODMxOSwzODMyMCwzODMyMSwzODMyMiwzODMyMywzODMyNCwzODMyNSwzODMy'@; put 'NiwzODMyNywzODMyOCwzODMyOSwzODMzMCwzODMzMSwzODMzMiwzODMzMywzODMzNCwzODMzNSwzODMzNiwzODMzNywzODMzOCwzODMzOSwzODM0MCwzODM0MSwzODM0MiwzODM0MywzODM0NCwzODM0NSwzODM0NiwzODM0NywyNjkxNiwyNjg2NCwyNjg5MSwyNjg4MSwyNjk2NywyNjg1MSwy'@; put 'Njg5NiwyNjk5MywyNjkzNywyNjk3NiwyNjk0NiwyNjk3MywyNzAxMiwyNjk4NywyNzAwOCwyNzAzMiwyN2UzLDI2OTMyLDI3MDg0LDI3MDE1LDI3MDE2LDI3MDg2LDI3MDE3LDI2OTgyLDI2OTc5LDI3MDAxLDI3MDM1LDI3MDQ3LDI3MDY3LDI3MDUxLDI3MDUzLDI3MDkyLDI3MDU3LDI3MDcz'@; put 'LDI3MDgyLDI3MTAzLDI3MDI5LDI3MTA0LDI3MDIxLDI3MTM1LDI3MTgzLDI3MTE3LDI3MTU5LDI3MTYwLDI3MjM3LDI3MTIyLDI3MjA0LDI3MTk4LDI3Mjk2LDI3MjE2LDI3MjI3LDI3MTg5LDI3Mjc4LDI3MjU3LDI3MTk3LDI3MTc2LDI3MjI0LDI3MjYwLDI3MjgxLDI3MjgwLDI3MzA1LDI3'@; put 'Mjg3LDI3MzA3LDI5NDk1LDI5NTIyLDI3NTIxLDI3NTIyLDI3NTI3LDI3NTI0LDI3NTM4LDI3NTM5LDI3NTMzLDI3NTQ2LDI3NTQ3LDI3NTUzLDI3NTYyLDM2NzE1LDM2NzE3LDM2NzIxLDM2NzIyLDM2NzIzLDM2NzI1LDM2NzI2LDM2NzI4LDM2NzI3LDM2NzI5LDM2NzMwLDM2NzMyLDM2NzM0'@; put 'LDM2NzM3LDM2NzM4LDM2NzQwLDM2NzQzLDM2NzQ3LDM4MzQ4LDM4MzQ5LDM4MzUwLDM4MzUxLDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzU2LDM4MzU3LDM4MzU4LDM4MzU5LDM4MzYwLDM4MzYxLDM4MzYyLDM4MzYzLDM4MzY0LDM4MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzY5LDM4'@; put 'MzcwLDM4MzcxLDM4MzcyLDM4MzczLDM4Mzc0LDM4Mzc1LDM4MzgwLDM4Mzk5LDM4NDA3LDM4NDE5LDM4NDI0LDM4NDI3LDM4NDMwLDM4NDMyLDM4NDM1LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDM5LDM4NDQwLDM4NDQxLDM4NDQzLDM4NDQ0LDM4NDQ1LDM4NDQ3LDM4NDQ4LDM4NDU1LDM4NDU2'@; put 'LDM4NDU3LDM4NDU4LDM4NDYyLDM4NDY1LDM4NDY3LDM4NDc0LDM4NDc4LDM4NDc5LDM4NDgxLDM4NDgyLDM4NDgzLDM4NDg2LDM4NDg3LDM4NDg4LDM4NDg5LDM4NDkwLDM4NDkyLDM4NDkzLDM4NDk0LDM4NDk2LDM4NDk5LDM4NTAxLDM4NTAyLDM4NTA3LDM4NTA5LDM4NTEwLDM4NTExLDM4'@; put 'NTEyLDM4NTEzLDM4NTE1LDM4NTIwLDM4NTIxLDM4NTIyLDM4NTIzLDM4NTI0LDM4NTI1LDM4NTI2LDM4NTI3LDM4NTI4LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM1LDM4NTM3LDM4NTM4LDM2NzQ5LDM2NzUwLDM2NzUxLDM2NzYwLDM2NzYyLDM2NTU4LDI1MDk5LDI1MTExLDI1MTE1'@; put 'LDI1MTE5LDI1MTIyLDI1MTIxLDI1MTI1LDI1MTI0LDI1MTMyLDMzMjU1LDI5OTM1LDI5OTQwLDI5OTUxLDI5OTY3LDI5OTY5LDI5OTcxLDI1OTA4LDI2MDk0LDI2MDk1LDI2MDk2LDI2MTIyLDI2MTM3LDI2NDgyLDI2MTE1LDI2MTMzLDI2MTEyLDI4ODA1LDI2MzU5LDI2MTQxLDI2MTY0LDI2'@; put 'MTYxLDI2MTY2LDI2MTY1LDMyNzc0LDI2MjA3LDI2MTk2LDI2MTc3LDI2MTkxLDI2MTk4LDI2MjA5LDI2MTk5LDI2MjMxLDI2MjQ0LDI2MjUyLDI2Mjc5LDI2MjY5LDI2MzAyLDI2MzMxLDI2MzMyLDI2MzQyLDI2MzQ1LDM2MTQ2LDM2MTQ3LDM2MTUwLDM2MTU1LDM2MTU3LDM2MTYwLDM2MTY1'@; put 'LDM2MTY2LDM2MTY4LDM2MTY5LDM2MTY3LDM2MTczLDM2MTgxLDM2MTg1LDM1MjcxLDM1Mjc0LDM1Mjc1LDM1Mjc2LDM1Mjc4LDM1Mjc5LDM1MjgwLDM1MjgxLDI5Mjk0LDI5MzQzLDI5Mjc3LDI5Mjg2LDI5Mjk1LDI5MzEwLDI5MzExLDI5MzE2LDI5MzIzLDI5MzI1LDI5MzI3LDI5MzMwLDI1'@; put 'MzUyLDI1Mzk0LDI1NTIwLDM4NTQwLDM4NTQyLDM4NTQ1LDM4NTQ2LDM4NTQ3LDM4NTQ5LDM4NTUwLDM4NTU0LDM4NTU1LDM4NTU3LDM4NTU4LDM4NTU5LDM4NTYwLDM4NTYxLDM4NTYyLDM4NTYzLDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY4LDM4NTY5LDM4NTcwLDM4NTcxLDM4NTcyLDM4NTcz'@; put 'LDM4NTc0LDM4NTc1LDM4NTc3LDM4NTc4LDM4NTgwLDM4NTgxLDM4NTgzLDM4NTg0LDM4NTg2LDM4NTg3LDM4NTkxLDM4NTk0LDM4NTk1LDM4NjAwLDM4NjAyLDM4NjAzLDM4NjA4LDM4NjA5LDM4NjExLDM4NjEyLDM4NjE0LDM4NjE1LDM4NjE2LDM4NjE3LDM4NjE4LDM4NjE5LDM4NjIwLDM4'@; put 'NjIxLDM4NjIyLDM4NjIzLDM4NjI1LDM4NjI2LDM4NjI3LDM4NjI4LDM4NjI5LDM4NjMwLDM4NjMxLDM4NjM1LDM4NjM2LDM4NjM3LDM4NjM4LDM4NjQwLDM4NjQxLDM4NjQyLDM4NjQ0LDM4NjQ1LDM4NjQ4LDM4NjUwLDM4NjUxLDM4NjUyLDM4NjUzLDM4NjU1LDM4NjU4LDM4NjU5LDM4NjYx'@; put 'LDM4NjY2LDM4NjY3LDM4NjY4LDM4NjcyLDM4NjczLDM4Njc0LDM4Njc2LDM4Njc3LDM4Njc5LDM4NjgwLDM4NjgxLDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg3LDM4Njg4LDI1NjYzLDI1ODE2LDMyNzcyLDI3NjI2LDI3NjM1LDI3NjQ1LDI3NjM3LDI3NjQxLDI3NjUzLDI3NjU1LDI3NjU0LDI3'@; put 'NjYxLDI3NjY5LDI3NjcyLDI3NjczLDI3Njc0LDI3NjgxLDI3Njg5LDI3Njg0LDI3NjkwLDI3Njk4LDI1OTA5LDI1OTQxLDI1OTYzLDI5MjYxLDI5MjY2LDI5MjcwLDI5MjMyLDM0NDAyLDIxMDE0LDMyOTI3LDMyOTI0LDMyOTE1LDMyOTU2LDI2Mzc4LDMyOTU3LDMyOTQ1LDMyOTM5LDMyOTQx'@; put 'LDMyOTQ4LDMyOTUxLDMyOTk5LDMzZTMsMzMwMDEsMzMwMDIsMzI5ODcsMzI5NjIsMzI5NjQsMzI5ODUsMzI5NzMsMzI5ODMsMjYzODQsMzI5ODksMzMwMDMsMzMwMDksMzMwMTIsMzMwMDUsMzMwMzcsMzMwMzgsMzMwMTAsMzMwMjAsMjYzODksMzMwNDIsMzU5MzAsMzMwNzgsMzMwNTQsMzMw'@; put 'NjgsMzMwNDgsMzMwNzQsMzMwOTYsMzMxMDAsMzMxMDcsMzMxNDAsMzMxMTMsMzMxMTQsMzMxMzcsMzMxMjAsMzMxMjksMzMxNDgsMzMxNDksMzMxMzMsMzMxMjcsMjI2MDUsMjMyMjEsMzMxNjAsMzMxNTQsMzMxNjksMjgzNzMsMzMxODcsMzMxOTQsMzMyMjgsMjY0MDYsMzMyMjYsMzMyMTEs'@; put 'Mzg2ODksMzg2OTAsMzg2OTEsMzg2OTIsMzg2OTMsMzg2OTQsMzg2OTUsMzg2OTYsMzg2OTcsMzg2OTksMzg3MDAsMzg3MDIsMzg3MDMsMzg3MDUsMzg3MDcsMzg3MDgsMzg3MDksMzg3MTAsMzg3MTEsMzg3MTQsMzg3MTUsMzg3MTYsMzg3MTcsMzg3MTksMzg3MjAsMzg3MjEsMzg3MjIsMzg3'@; put 'MjMsMzg3MjQsMzg3MjUsMzg3MjYsMzg3MjcsMzg3MjgsMzg3MjksMzg3MzAsMzg3MzEsMzg3MzIsMzg3MzMsMzg3MzQsMzg3MzUsMzg3MzYsMzg3MzcsMzg3NDAsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDgsMzg3NDksMzg3NTEsMzg3NTUsMzg3NTYsMzg3NTgsMzg3NTksMzg3NjAs'@; put 'Mzg3NjIsMzg3NjMsMzg3NjQsMzg3NjUsMzg3NjYsMzg3NjcsMzg3NjgsMzg3NjksMzg3NzAsMzg3NzMsMzg3NzUsMzg3NzYsMzg3NzcsMzg3NzgsMzg3NzksMzg3ODEsMzg3ODIsMzg3ODMsMzg3ODQsMzg3ODUsMzg3ODYsMzg3ODcsMzg3ODgsMzg3OTAsMzg3OTEsMzg3OTIsMzg3OTMsMzg3'@; put 'OTQsMzg3OTYsMzg3OTgsMzg3OTksMzg4MDAsMzg4MDMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTEsMzg4MTIsMzg4MTMsMzMyMTcsMzMxOTAsMjc0MjgsMjc0NDcsMjc0NDksMjc0NTksMjc0NjIsMjc0ODEsMzkxMjEsMzkxMjIsMzkxMjMsMzkxMjUsMzkxMjksMzkxMzAs'@; put 'Mjc1NzEsMjQzODQsMjc1ODYsMzUzMTUsMjZlMyw0MDc4NSwyNjAwMywyNjA0NCwyNjA1NCwyNjA1MiwyNjA1MSwyNjA2MCwyNjA2MiwyNjA2NiwyNjA3MCwyODgwMCwyODgyOCwyODgyMiwyODgyOSwyODg1OSwyODg2NCwyODg1NSwyODg0MywyODg0OSwyODkwNCwyODg3NCwyODk0NCwyODk0'@; put 'NywyODk1MCwyODk3NSwyODk3NywyOTA0MywyOTAyMCwyOTAzMiwyODk5NywyOTA0MiwyOTAwMiwyOTA0OCwyOTA1MCwyOTA4MCwyOTEwNywyOTEwOSwyOTA5NiwyOTA4OCwyOTE1MiwyOTE0MCwyOTE1OSwyOTE3NywyOTIxMywyOTIyNCwyODc4MCwyODk1MiwyOTAzMCwyOTExMywyNTE1MCwy'@; put 'NTE0OSwyNTE1NSwyNTE2MCwyNTE2MSwzMTAzNSwzMTA0MCwzMTA0NiwzMTA0OSwzMTA2NywzMTA2OCwzMTA1OSwzMTA2NiwzMTA3NCwzMTA2MywzMTA3MiwzMTA4NywzMTA3OSwzMTA5OCwzMTEwOSwzMTExNCwzMTEzMCwzMTE0MywzMTE1NSwyNDUyOSwyNDUyOCwzODgxNCwzODgxNSwzODgx'@; put 'NywzODgxOCwzODgyMCwzODgyMSwzODgyMiwzODgyMywzODgyNCwzODgyNSwzODgyNiwzODgyOCwzODgzMCwzODgzMiwzODgzMywzODgzNSwzODgzNywzODgzOCwzODgzOSwzODg0MCwzODg0MSwzODg0MiwzODg0MywzODg0NCwzODg0NSwzODg0NiwzODg0NywzODg0OCwzODg0OSwzODg1MCwz'@; put 'ODg1MSwzODg1MiwzODg1MywzODg1NCwzODg1NSwzODg1NiwzODg1NywzODg1OCwzODg1OSwzODg2MCwzODg2MSwzODg2MiwzODg2MywzODg2NCwzODg2NSwzODg2NiwzODg2NywzODg2OCwzODg2OSwzODg3MCwzODg3MSwzODg3MiwzODg3MywzODg3NCwzODg3NSwzODg3NiwzODg3NywzODg3'@; put 'OCwzODg3OSwzODg4MCwzODg4MSwzODg4MiwzODg4MywzODg4NCwzODg4NSwzODg4OCwzODg5NCwzODg5NSwzODg5NiwzODg5NywzODg5OCwzODkwMCwzODkwMywzODkwNCwzODkwNSwzODkwNiwzODkwNywzODkwOCwzODkwOSwzODkxMCwzODkxMSwzODkxMiwzODkxMywzODkxNCwzODkxNSwz'@; put 'ODkxNiwzODkxNywzODkxOCwzODkxOSwzODkyMCwzODkyMSwzODkyMiwzODkyMywzODkyNCwzODkyNSwzODkyNiwyNDYzNiwyNDY2OSwyNDY2NiwyNDY3OSwyNDY0MSwyNDY2NSwyNDY3NSwyNDc0NywyNDgzOCwyNDg0NSwyNDkyNSwyNTAwMSwyNDk4OSwyNTAzNSwyNTA0MSwyNTA5NCwzMjg5'@; put 'NiwzMjg5NSwyNzc5NSwyNzg5NCwyODE1NiwzMDcxMCwzMDcxMiwzMDcyMCwzMDcyOSwzMDc0MywzMDc0NCwzMDczNywyNjAyNywzMDc2NSwzMDc0OCwzMDc0OSwzMDc3NywzMDc3OCwzMDc3OSwzMDc1MSwzMDc4MCwzMDc1NywzMDc2NCwzMDc1NSwzMDc2MSwzMDc5OCwzMDgyOSwzMDgwNiwz'@; put 'MDgwNywzMDc1OCwzMDgwMCwzMDc5MSwzMDc5NiwzMDgyNiwzMDg3NSwzMDg2NywzMDg3NCwzMDg1NSwzMDg3NiwzMDg4MSwzMDg4MywzMDg5OCwzMDkwNSwzMDg4NSwzMDkzMiwzMDkzNywzMDkyMSwzMDk1NiwzMDk2MiwzMDk4MSwzMDk2NCwzMDk5NSwzMTAxMiwzMTAwNiwzMTAyOCw0MDg1'@; put 'OSw0MDY5Nyw0MDY5OSw0MDcwMCwzMDQ0OSwzMDQ2OCwzMDQ3NywzMDQ1NywzMDQ3MSwzMDQ3MiwzMDQ5MCwzMDQ5OCwzMDQ4OSwzMDUwOSwzMDUwMiwzMDUxNywzMDUyMCwzMDU0NCwzMDU0NSwzMDUzNSwzMDUzMSwzMDU1NCwzMDU2OCwzODkyNywzODkyOCwzODkyOSwzODkzMCwzODkzMSwz'@; put 'ODkzMiwzODkzMywzODkzNCwzODkzNSwzODkzNiwzODkzNywzODkzOCwzODkzOSwzODk0MCwzODk0MSwzODk0MiwzODk0MywzODk0NCwzODk0NSwzODk0NiwzODk0NywzODk0OCwzODk0OSwzODk1MCwzODk1MSwzODk1MiwzODk1MywzODk1NCwzODk1NSwzODk1NiwzODk1NywzODk1OCwzODk1'@; put 'OSwzODk2MCwzODk2MSwzODk2MiwzODk2MywzODk2NCwzODk2NSwzODk2NiwzODk2NywzODk2OCwzODk2OSwzODk3MCwzODk3MSwzODk3MiwzODk3MywzODk3NCwzODk3NSwzODk3NiwzODk3NywzODk3OCwzODk3OSwzODk4MCwzODk4MSwzODk4MiwzODk4MywzODk4NCwzODk4NSwzODk4Niwz'@; put 'ODk4NywzODk4OCwzODk4OSwzODk5MCwzODk5MSwzODk5MiwzODk5MywzODk5NCwzODk5NSwzODk5NiwzODk5NywzODk5OCwzODk5OSwzOWUzLDM5MDAxLDM5MDAyLDM5MDAzLDM5MDA0LDM5MDA1LDM5MDA2LDM5MDA3LDM5MDA4LDM5MDA5LDM5MDEwLDM5MDExLDM5MDEyLDM5MDEzLDM5MDE0'@; put 'LDM5MDE1LDM5MDE2LDM5MDE3LDM5MDE4LDM5MDE5LDM5MDIwLDM5MDIxLDM5MDIyLDMwNTYyLDMwNTY1LDMwNTkxLDMwNjA1LDMwNTg5LDMwNTkyLDMwNjA0LDMwNjA5LDMwNjIzLDMwNjI0LDMwNjQwLDMwNjQ1LDMwNjUzLDMwMDEwLDMwMDE2LDMwMDMwLDMwMDI3LDMwMDI0LDMwMDQzLDMw'@; put 'MDY2LDMwMDczLDMwMDgzLDMyNjAwLDMyNjA5LDMyNjA3LDM1NDAwLDMyNjE2LDMyNjI4LDMyNjI1LDMyNjMzLDMyNjQxLDMyNjM4LDMwNDEzLDMwNDM3LDM0ODY2LDM4MDIxLDM4MDIyLDM4MDIzLDM4MDI3LDM4MDI2LDM4MDI4LDM4MDI5LDM4MDMxLDM4MDMyLDM4MDM2LDM4MDM5LDM4MDM3'@; put 'LDM4MDQyLDM4MDQzLDM4MDQ0LDM4MDUxLDM4MDUyLDM4MDU5LDM4MDU4LDM4MDYxLDM4MDYwLDM4MDYzLDM4MDY0LDM4MDY2LDM4MDY4LDM4MDcwLDM4MDcxLDM4MDcyLDM4MDczLDM4MDc0LDM4MDc2LDM4MDc3LDM4MDc5LDM4MDg0LDM4MDg4LDM4MDg5LDM4MDkwLDM4MDkxLDM4MDkyLDM4'@; put 'MDkzLDM4MDk0LDM4MDk2LDM4MDk3LDM4MDk4LDM4MTAxLDM4MTAyLDM4MTAzLDM4MTA1LDM4MTA0LDM4MTA3LDM4MTEwLDM4MTExLDM4MTEyLDM4MTE0LDM4MTE2LDM4MTE3LDM4MTE5LDM4MTIwLDM4MTIyLDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI2LDM5MDI3LDM5MDI4LDM5MDUxLDM5MDU0'@; put 'LDM5MDU4LDM5MDYxLDM5MDY1LDM5MDc1LDM5MDgwLDM5MDgxLDM5MDgyLDM5MDgzLDM5MDg0LDM5MDg1LDM5MDg2LDM5MDg3LDM5MDg4LDM5MDg5LDM5MDkwLDM5MDkxLDM5MDkyLDM5MDkzLDM5MDk0LDM5MDk1LDM5MDk2LDM5MDk3LDM5MDk4LDM5MDk5LDM5MTAwLDM5MTAxLDM5MTAyLDM5'@; put 'MTAzLDM5MTA0LDM5MTA1LDM5MTA2LDM5MTA3LDM5MTA4LDM5MTA5LDM5MTEwLDM5MTExLDM5MTEyLDM5MTEzLDM5MTE0LDM5MTE1LDM5MTE2LDM5MTE3LDM5MTE5LDM5MTIwLDM5MTI0LDM5MTI2LDM5MTI3LDM5MTMxLDM5MTMyLDM5MTMzLDM5MTM2LDM5MTM3LDM5MTM4LDM5MTM5LDM5MTQw'@; put 'LDM5MTQxLDM5MTQyLDM5MTQ1LDM5MTQ2LDM5MTQ3LDM5MTQ4LDM5MTQ5LDM5MTUwLDM5MTUxLDM5MTUyLDM5MTUzLDM5MTU0LDM5MTU1LDM5MTU2LDM5MTU3LDM5MTU4LDM5MTU5LDM5MTYwLDM5MTYxLDM5MTYyLDM5MTYzLDM5MTY0LDM5MTY1LDM5MTY2LDM5MTY3LDM5MTY4LDM5MTY5LDM5'@; put 'MTcwLDM5MTcxLDM5MTcyLDM5MTczLDM5MTc0LDM5MTc1LDM4MTIxLDM4MTIzLDM4MTI2LDM4MTI3LDM4MTMxLDM4MTMyLDM4MTMzLDM4MTM1LDM4MTM3LDM4MTQwLDM4MTQxLDM4MTQzLDM4MTQ3LDM4MTQ2LDM4MTUwLDM4MTUxLDM4MTUzLDM4MTU0LDM4MTU3LDM4MTU4LDM4MTU5LDM4MTYy'@; put 'LDM4MTYzLDM4MTY0LDM4MTY1LDM4MTY2LDM4MTY4LDM4MTcxLDM4MTczLDM4MTc0LDM4MTc1LDM4MTc4LDM4MTg2LDM4MTg3LDM4MTg1LDM4MTg4LDM4MTkzLDM4MTk0LDM4MTk2LDM4MTk4LDM4MTk5LDM4MjAwLDM4MjA0LDM4MjA2LDM4MjA3LDM4MjEwLDM4MTk3LDM4MjEyLDM4MjEzLDM4'@; put 'MjE0LDM4MjE3LDM4MjIwLDM4MjIyLDM4MjIzLDM4MjI2LDM4MjI3LDM4MjI4LDM4MjMwLDM4MjMxLDM4MjMyLDM4MjMzLDM4MjM1LDM4MjM4LDM4MjM5LDM4MjM3LDM4MjQxLDM4MjQyLDM4MjQ0LDM4MjQ1LDM4MjQ2LDM4MjQ3LDM4MjQ4LDM4MjQ5LDM4MjUwLDM4MjUxLDM4MjUyLDM4MjU1'@; put 'LDM4MjU3LDM4MjU4LDM4MjU5LDM4MjAyLDMwNjk1LDMwNzAwLDM4NjAxLDMxMTg5LDMxMjEzLDMxMjAzLDMxMjExLDMxMjM4LDIzODc5LDMxMjM1LDMxMjM0LDMxMjYyLDMxMjUyLDM5MTc2LDM5MTc3LDM5MTc4LDM5MTc5LDM5MTgwLDM5MTgyLDM5MTgzLDM5MTg1LDM5MTg2LDM5MTg3LDM5'@; put 'MTg4LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTkyLDM5MTkzLDM5MTk0LDM5MTk1LDM5MTk2LDM5MTk3LDM5MTk4LDM5MTk5LDM5MjAwLDM5MjAxLDM5MjAyLDM5MjAzLDM5MjA0LDM5MjA1LDM5MjA2LDM5MjA3LDM5MjA4LDM5MjA5LDM5MjEwLDM5MjExLDM5MjEyLDM5MjEzLDM5MjE1LDM5MjE2'@; put 'LDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjIyLDM5MjIzLDM5MjI0LDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjI5LDM5MjMwLDM5MjMxLDM5MjMyLDM5MjMzLDM5MjM0LDM5MjM1LDM5MjM2LDM5MjM3LDM5MjM4LDM5MjM5LDM5MjQwLDM5MjQxLDM5MjQyLDM5MjQzLDM5'@; put 'MjQ0LDM5MjQ1LDM5MjQ2LDM5MjQ3LDM5MjQ4LDM5MjQ5LDM5MjUwLDM5MjUxLDM5MjU0LDM5MjU1LDM5MjU2LDM5MjU3LDM5MjU4LDM5MjU5LDM5MjYwLDM5MjYxLDM5MjYyLDM5MjYzLDM5MjY0LDM5MjY1LDM5MjY2LDM5MjY4LDM5MjcwLDM5MjgzLDM5Mjg4LDM5Mjg5LDM5MjkxLDM5Mjk0'@; put 'LDM5Mjk4LDM5Mjk5LDM5MzA1LDMxMjg5LDMxMjg3LDMxMzEzLDQwNjU1LDM5MzMzLDMxMzQ0LDMwMzQ0LDMwMzUwLDMwMzU1LDMwMzYxLDMwMzcyLDI5OTE4LDI5OTIwLDI5OTk2LDQwNDgwLDQwNDgyLDQwNDg4LDQwNDg5LDQwNDkwLDQwNDkxLDQwNDkyLDQwNDk4LDQwNDk3LDQwNTAyLDQw'@; put 'NTA0LDQwNTAzLDQwNTA1LDQwNTA2LDQwNTEwLDQwNTEzLDQwNTE0LDQwNTE2LDQwNTE4LDQwNTE5LDQwNTIwLDQwNTIxLDQwNTIzLDQwNTI0LDQwNTI2LDQwNTI5LDQwNTMzLDQwNTM1LDQwNTM4LDQwNTM5LDQwNTQwLDQwNTQyLDQwNTQ3LDQwNTUwLDQwNTUxLDQwNTUyLDQwNTUzLDQwNTU0'@; put 'LDQwNTU1LDQwNTU2LDQwNTYxLDQwNTU3LDQwNTYzLDMwMDk4LDMwMTAwLDMwMTAyLDMwMTEyLDMwMTA5LDMwMTI0LDMwMTE1LDMwMTMxLDMwMTMyLDMwMTM2LDMwMTQ4LDMwMTI5LDMwMTI4LDMwMTQ3LDMwMTQ2LDMwMTY2LDMwMTU3LDMwMTc5LDMwMTg0LDMwMTgyLDMwMTgwLDMwMTg3LDMw'@; put 'MTgzLDMwMjExLDMwMTkzLDMwMjA0LDMwMjA3LDMwMjI0LDMwMjA4LDMwMjEzLDMwMjIwLDMwMjMxLDMwMjE4LDMwMjQ1LDMwMjMyLDMwMjI5LDMwMjMzLDM5MzA4LDM5MzEwLDM5MzIyLDM5MzIzLDM5MzI0LDM5MzI1LDM5MzI2LDM5MzI3LDM5MzI4LDM5MzI5LDM5MzMwLDM5MzMxLDM5MzMy'@; put 'LDM5MzM0LDM5MzM1LDM5MzM3LDM5MzM4LDM5MzM5LDM5MzQwLDM5MzQxLDM5MzQyLDM5MzQzLDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ3LDM5MzQ4LDM5MzQ5LDM5MzUwLDM5MzUxLDM5MzUyLDM5MzUzLDM5MzU0LDM5MzU1LDM5MzU2LDM5MzU3LDM5MzU4LDM5MzU5LDM5MzYwLDM5MzYxLDM5'@; put 'MzYyLDM5MzYzLDM5MzY0LDM5MzY1LDM5MzY2LDM5MzY3LDM5MzY4LDM5MzY5LDM5MzcwLDM5MzcxLDM5MzcyLDM5MzczLDM5Mzc0LDM5Mzc1LDM5Mzc2LDM5Mzc3LDM5Mzc4LDM5Mzc5LDM5MzgwLDM5MzgxLDM5MzgyLDM5MzgzLDM5Mzg0LDM5Mzg1LDM5Mzg2LDM5Mzg3LDM5Mzg4LDM5Mzg5'@; put 'LDM5MzkwLDM5MzkxLDM5MzkyLDM5MzkzLDM5Mzk0LDM5Mzk1LDM5Mzk2LDM5Mzk3LDM5Mzk4LDM5Mzk5LDM5NDAwLDM5NDAxLDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA1LDM5NDA2LDM5NDA3LDM5NDA4LDM5NDA5LDM5NDEwLDM5NDExLDM5NDEyLDM5NDEzLDM5NDE0LDM5NDE1LDM5NDE2LDM5'@; put 'NDE3LDMwMjM1LDMwMjY4LDMwMjQyLDMwMjQwLDMwMjcyLDMwMjUzLDMwMjU2LDMwMjcxLDMwMjYxLDMwMjc1LDMwMjcwLDMwMjU5LDMwMjg1LDMwMzAyLDMwMjkyLDMwMzAwLDMwMjk0LDMwMzE1LDMwMzE5LDMyNzE0LDMxNDYyLDMxMzUyLDMxMzUzLDMxMzYwLDMxMzY2LDMxMzY4LDMxMzgx'@; put 'LDMxMzk4LDMxMzkyLDMxNDA0LDMxNDAwLDMxNDA1LDMxNDExLDM0OTE2LDM0OTIxLDM0OTMwLDM0OTQxLDM0OTQzLDM0OTQ2LDM0OTc4LDM1MDE0LDM0OTk5LDM1MDA0LDM1MDE3LDM1MDQyLDM1MDIyLDM1MDQzLDM1MDQ1LDM1MDU3LDM1MDk4LDM1MDY4LDM1MDQ4LDM1MDcwLDM1MDU2LDM1'@; put 'MTA1LDM1MDk3LDM1MDkxLDM1MDk5LDM1MDgyLDM1MTI0LDM1MTE1LDM1MTI2LDM1MTM3LDM1MTc0LDM1MTk1LDMwMDkxLDMyOTk3LDMwMzg2LDMwMzg4LDMwNjg0LDMyNzg2LDMyNzg4LDMyNzkwLDMyNzk2LDMyODAwLDMyODAyLDMyODA1LDMyODA2LDMyODA3LDMyODA5LDMyODA4LDMyODE3'@; put 'LDMyNzc5LDMyODIxLDMyODM1LDMyODM4LDMyODQ1LDMyODUwLDMyODczLDMyODgxLDM1MjAzLDM5MDMyLDM5MDQwLDM5MDQzLDM5NDE4LDM5NDE5LDM5NDIwLDM5NDIxLDM5NDIyLDM5NDIzLDM5NDI0LDM5NDI1LDM5NDI2LDM5NDI3LDM5NDI4LDM5NDI5LDM5NDMwLDM5NDMxLDM5NDMyLDM5'@; put 'NDMzLDM5NDM0LDM5NDM1LDM5NDM2LDM5NDM3LDM5NDM4LDM5NDM5LDM5NDQwLDM5NDQxLDM5NDQyLDM5NDQzLDM5NDQ0LDM5NDQ1LDM5NDQ2LDM5NDQ3LDM5NDQ4LDM5NDQ5LDM5NDUwLDM5NDUxLDM5NDUyLDM5NDUzLDM5NDU0LDM5NDU1LDM5NDU2LDM5NDU3LDM5NDU4LDM5NDU5LDM5NDYw'@; put 'LDM5NDYxLDM5NDYyLDM5NDYzLDM5NDY0LDM5NDY1LDM5NDY2LDM5NDY3LDM5NDY4LDM5NDY5LDM5NDcwLDM5NDcxLDM5NDcyLDM5NDczLDM5NDc0LDM5NDc1LDM5NDc2LDM5NDc3LDM5NDc4LDM5NDc5LDM5NDgwLDM5NDgxLDM5NDgyLDM5NDgzLDM5NDg0LDM5NDg1LDM5NDg2LDM5NDg3LDM5'@; put 'NDg4LDM5NDg5LDM5NDkwLDM5NDkxLDM5NDkyLDM5NDkzLDM5NDk0LDM5NDk1LDM5NDk2LDM5NDk3LDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAxLDM5NTAyLDM5NTAzLDM5NTA0LDM5NTA1LDM5NTA2LDM5NTA3LDM5NTA4LDM5NTA5LDM5NTEwLDM5NTExLDM5NTEyLDM5NTEzLDM5MDQ5LDM5MDUy'@; put 'LDM5MDUzLDM5MDU1LDM5MDYwLDM5MDY2LDM5MDY3LDM5MDcwLDM5MDcxLDM5MDczLDM5MDc0LDM5MDc3LDM5MDc4LDM0MzgxLDM0Mzg4LDM0NDEyLDM0NDE0LDM0NDMxLDM0NDI2LDM0NDI4LDM0NDI3LDM0NDcyLDM0NDQ1LDM0NDQzLDM0NDc2LDM0NDYxLDM0NDcxLDM0NDY3LDM0NDc0LDM0'@; put 'NDUxLDM0NDczLDM0NDg2LDM0NTAwLDM0NDg1LDM0NTEwLDM0NDgwLDM0NDkwLDM0NDgxLDM0NDc5LDM0NTA1LDM0NTExLDM0NDg0LDM0NTM3LDM0NTQ1LDM0NTQ2LDM0NTQxLDM0NTQ3LDM0NTEyLDM0NTc5LDM0NTI2LDM0NTQ4LDM0NTI3LDM0NTIwLDM0NTEzLDM0NTYzLDM0NTY3LDM0NTUy'@; put 'LDM0NTY4LDM0NTcwLDM0NTczLDM0NTY5LDM0NTk1LDM0NjE5LDM0NTkwLDM0NTk3LDM0NjA2LDM0NTg2LDM0NjIyLDM0NjMyLDM0NjEyLDM0NjA5LDM0NjAxLDM0NjE1LDM0NjIzLDM0NjkwLDM0NTk0LDM0Njg1LDM0Njg2LDM0NjgzLDM0NjU2LDM0NjcyLDM0NjM2LDM0NjcwLDM0Njk5LDM0'@; put 'NjQzLDM0NjU5LDM0Njg0LDM0NjYwLDM0NjQ5LDM0NjYxLDM0NzA3LDM0NzM1LDM0NzI4LDM0NzcwLDM5NTE0LDM5NTE1LDM5NTE2LDM5NTE3LDM5NTE4LDM5NTE5LDM5NTIwLDM5NTIxLDM5NTIyLDM5NTIzLDM5NTI0LDM5NTI1LDM5NTI2LDM5NTI3LDM5NTI4LDM5NTI5LDM5NTMwLDM5NTMx'@; put 'LDM5NTM4LDM5NTU1LDM5NTYxLDM5NTY1LDM5NTY2LDM5NTcyLDM5NTczLDM5NTc3LDM5NTkwLDM5NTkzLDM5NTk0LDM5NTk1LDM5NTk2LDM5NTk3LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjAzLDM5NjA0LDM5NjA1LDM5NjA5LDM5NjExLDM5NjEzLDM5NjE0LDM5NjE1LDM5NjE5LDM5NjIwLDM5'@; put 'NjIyLDM5NjIzLDM5NjI0LDM5NjI1LDM5NjI2LDM5NjI5LDM5NjMwLDM5NjMxLDM5NjMyLDM5NjM0LDM5NjM2LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQxLDM5NjQyLDM5NjQzLDM5NjQ0LDM5NjQ1LDM5NjQ2LDM5NjQ4LDM5NjUwLDM5NjUxLDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU2LDM5NjU3'@; put 'LDM5NjU4LDM5NjYwLDM5NjYyLDM5NjY0LDM5NjY1LDM5NjY2LDM5NjY3LDM5NjY4LDM5NjY5LDM5NjcwLDM5NjcxLDM5NjcyLDM5Njc0LDM5Njc2LDM5Njc3LDM5Njc4LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5Njg0LDM5Njg1LDM5Njg2LDM0NzU4LDM0Njk2LDM0NjkzLDM0NzMzLDM0'@; put 'NzExLDM0NjkxLDM0NzMxLDM0Nzg5LDM0NzMyLDM0NzQxLDM0NzM5LDM0NzYzLDM0NzcxLDM0NzQ5LDM0NzY5LDM0NzUyLDM0NzYyLDM0Nzc5LDM0Nzk0LDM0Nzg0LDM0Nzk4LDM0ODM4LDM0ODM1LDM0ODE0LDM0ODI2LDM0ODQzLDM0ODQ5LDM0ODczLDM0ODc2LDMyNTY2LDMyNTc4LDMyNTgw'@; put 'LDMyNTgxLDMzMjk2LDMxNDgyLDMxNDg1LDMxNDk2LDMxNDkxLDMxNDkyLDMxNTA5LDMxNDk4LDMxNTMxLDMxNTAzLDMxNTU5LDMxNTQ0LDMxNTMwLDMxNTEzLDMxNTM0LDMxNTM3LDMxNTIwLDMxNTI1LDMxNTI0LDMxNTM5LDMxNTUwLDMxNTE4LDMxNTc2LDMxNTc4LDMxNTU3LDMxNjA1LDMx'@; put 'NTY0LDMxNTgxLDMxNTg0LDMxNTk4LDMxNjExLDMxNTg2LDMxNjAyLDMxNjAxLDMxNjMyLDMxNjU0LDMxNjU1LDMxNjcyLDMxNjYwLDMxNjQ1LDMxNjU2LDMxNjIxLDMxNjU4LDMxNjQ0LDMxNjUwLDMxNjU5LDMxNjY4LDMxNjk3LDMxNjgxLDMxNjkyLDMxNzA5LDMxNzA2LDMxNzE3LDMxNzE4'@; put 'LDMxNzIyLDMxNzU2LDMxNzQyLDMxNzQwLDMxNzU5LDMxNzY2LDMxNzU1LDM5Njg3LDM5Njg5LDM5NjkwLDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk3LDM5Njk4LDM5NzAwLDM5NzAxLDM5NzAyLDM5NzAzLDM5NzA0LDM5NzA1LDM5NzA2LDM5NzA3LDM5NzA4LDM5NzA5LDM5'@; put 'NzEwLDM5NzEyLDM5NzEzLDM5NzE0LDM5NzE2LDM5NzE3LDM5NzE4LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzIzLDM5NzI0LDM5NzI1LDM5NzI2LDM5NzI4LDM5NzI5LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM0LDM5NzM1LDM5NzM2LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzQyLDM5NzQz'@; put 'LDM5NzQ0LDM5NzUwLDM5NzU0LDM5NzU1LDM5NzU2LDM5NzU4LDM5NzYwLDM5NzYyLDM5NzYzLDM5NzY1LDM5NzY2LDM5NzY3LDM5NzY4LDM5NzY5LDM5NzcwLDM5NzcxLDM5NzcyLDM5NzczLDM5Nzc0LDM5Nzc1LDM5Nzc2LDM5Nzc3LDM5Nzc4LDM5Nzc5LDM5NzgwLDM5NzgxLDM5NzgyLDM5'@; put 'NzgzLDM5Nzg0LDM5Nzg1LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5Nzg5LDM5NzkwLDM5NzkxLDM5NzkyLDM5NzkzLDM5Nzk0LDM5Nzk1LDM5Nzk2LDM5Nzk3LDM5Nzk4LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODAyLDM5ODAzLDMxNzc1LDMxNzg2LDMxNzgyLDMxODAwLDMxODA5LDMxODA4LDMzMjc4'@; put 'LDMzMjgxLDMzMjgyLDMzMjg0LDMzMjYwLDM0ODg0LDMzMzEzLDMzMzE0LDMzMzE1LDMzMzI1LDMzMzI3LDMzMzIwLDMzMzIzLDMzMzM2LDMzMzM5LDMzMzMxLDMzMzMyLDMzMzQyLDMzMzQ4LDMzMzUzLDMzMzU1LDMzMzU5LDMzMzcwLDMzMzc1LDMzMzg0LDM0OTQyLDM0OTQ5LDM0OTUyLDM1'@; put 'MDMyLDM1MDM5LDM1MTY2LDMyNjY5LDMyNjcxLDMyNjc5LDMyNjg3LDMyNjg4LDMyNjkwLDMxODY4LDI1OTI5LDMxODg5LDMxOTAxLDMxOTAwLDMxOTAyLDMxOTA2LDMxOTIyLDMxOTMyLDMxOTMzLDMxOTM3LDMxOTQzLDMxOTQ4LDMxOTQ5LDMxOTQ0LDMxOTQxLDMxOTU5LDMxOTc2LDMzMzkw'@; put 'LDI2MjgwLDMyNzAzLDMyNzE4LDMyNzI1LDMyNzQxLDMyNzM3LDMyNzQyLDMyNzQ1LDMyNzUwLDMyNzU1LDMxOTkyLDMyMTE5LDMyMTY2LDMyMTc0LDMyMzI3LDMyNDExLDQwNjMyLDQwNjI4LDM2MjExLDM2MjI4LDM2MjQ0LDM2MjQxLDM2MjczLDM2MTk5LDM2MjA1LDM1OTExLDM1OTEzLDM3'@; put 'MTk0LDM3MjAwLDM3MTk4LDM3MTk5LDM3MjIwLDM5ODA0LDM5ODA1LDM5ODA2LDM5ODA3LDM5ODA4LDM5ODA5LDM5ODEwLDM5ODExLDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE2LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIwLDM5ODIxLDM5ODIyLDM5ODIzLDM5ODI0LDM5ODI1LDM5ODI2'@; put 'LDM5ODI3LDM5ODI4LDM5ODI5LDM5ODMwLDM5ODMxLDM5ODMyLDM5ODMzLDM5ODM0LDM5ODM1LDM5ODM2LDM5ODM3LDM5ODM4LDM5ODM5LDM5ODQwLDM5ODQxLDM5ODQyLDM5ODQzLDM5ODQ0LDM5ODQ1LDM5ODQ2LDM5ODQ3LDM5ODQ4LDM5ODQ5LDM5ODUwLDM5ODUxLDM5ODUyLDM5ODUzLDM5'@; put 'ODU0LDM5ODU1LDM5ODU2LDM5ODU3LDM5ODU4LDM5ODU5LDM5ODYwLDM5ODYxLDM5ODYyLDM5ODYzLDM5ODY0LDM5ODY1LDM5ODY2LDM5ODY3LDM5ODY4LDM5ODY5LDM5ODcwLDM5ODcxLDM5ODcyLDM5ODczLDM5ODc0LDM5ODc1LDM5ODc2LDM5ODc3LDM5ODc4LDM5ODc5LDM5ODgwLDM5ODgx'@; put 'LDM5ODgyLDM5ODgzLDM5ODg0LDM5ODg1LDM5ODg2LDM5ODg3LDM5ODg4LDM5ODg5LDM5ODkwLDM5ODkxLDM5ODkyLDM5ODkzLDM5ODk0LDM5ODk1LDM5ODk2LDM5ODk3LDM5ODk4LDM5ODk5LDM3MjE4LDM3MjE3LDM3MjMyLDM3MjI1LDM3MjMxLDM3MjQ1LDM3MjQ2LDM3MjM0LDM3MjM2LDM3'@; put 'MjQxLDM3MjYwLDM3MjUzLDM3MjY0LDM3MjYxLDM3MjY1LDM3MjgyLDM3MjgzLDM3MjkwLDM3MjkzLDM3Mjk0LDM3Mjk1LDM3MzAxLDM3MzAwLDM3MzA2LDM1OTI1LDQwNTc0LDM2MjgwLDM2MzMxLDM2MzU3LDM2NDQxLDM2NDU3LDM2Mjc3LDM2Mjg3LDM2Mjg0LDM2MjgyLDM2MjkyLDM2MzEw'@; put 'LDM2MzExLDM2MzE0LDM2MzE4LDM2MzAyLDM2MzAzLDM2MzE1LDM2Mjk0LDM2MzMyLDM2MzQzLDM2MzQ0LDM2MzIzLDM2MzQ1LDM2MzQ3LDM2MzI0LDM2MzYxLDM2MzQ5LDM2MzcyLDM2MzgxLDM2MzgzLDM2Mzk2LDM2Mzk4LDM2Mzg3LDM2Mzk5LDM2NDEwLDM2NDE2LDM2NDA5LDM2NDA1LDM2'@; put 'NDEzLDM2NDAxLDM2NDI1LDM2NDE3LDM2NDE4LDM2NDMzLDM2NDM0LDM2NDI2LDM2NDY0LDM2NDcwLDM2NDc2LDM2NDYzLDM2NDY4LDM2NDg1LDM2NDk1LDM2NTAwLDM2NDk2LDM2NTA4LDM2NTEwLDM1OTYwLDM1OTcwLDM1OTc4LDM1OTczLDM1OTkyLDM1OTg4LDI2MDExLDM1Mjg2LDM1Mjk0'@; put 'LDM1MjkwLDM1MjkyLDM5OTAwLDM5OTAxLDM5OTAyLDM5OTAzLDM5OTA0LDM5OTA1LDM5OTA2LDM5OTA3LDM5OTA4LDM5OTA5LDM5OTEwLDM5OTExLDM5OTEyLDM5OTEzLDM5OTE0LDM5OTE1LDM5OTE2LDM5OTE3LDM5OTE4LDM5OTE5LDM5OTIwLDM5OTIxLDM5OTIyLDM5OTIzLDM5OTI0LDM5'@; put 'OTI1LDM5OTI2LDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5OTMxLDM5OTMyLDM5OTMzLDM5OTM0LDM5OTM1LDM5OTM2LDM5OTM3LDM5OTM4LDM5OTM5LDM5OTQwLDM5OTQxLDM5OTQyLDM5OTQzLDM5OTQ0LDM5OTQ1LDM5OTQ2LDM5OTQ3LDM5OTQ4LDM5OTQ5LDM5OTUwLDM5OTUxLDM5OTUy'@; put 'LDM5OTUzLDM5OTU0LDM5OTU1LDM5OTU2LDM5OTU3LDM5OTU4LDM5OTU5LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTYzLDM5OTY0LDM5OTY1LDM5OTY2LDM5OTY3LDM5OTY4LDM5OTY5LDM5OTcwLDM5OTcxLDM5OTcyLDM5OTczLDM5OTc0LDM5OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTc5LDM5'@; put 'OTgwLDM5OTgxLDM5OTgyLDM5OTgzLDM5OTg0LDM5OTg1LDM5OTg2LDM5OTg3LDM5OTg4LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTkyLDM5OTkzLDM5OTk0LDM5OTk1LDM1MzAxLDM1MzA3LDM1MzExLDM1MzkwLDM1NjIyLDM4NzM5LDM4NjMzLDM4NjQzLDM4NjM5LDM4NjYyLDM4NjU3LDM4NjY0'@; put 'LDM4NjcxLDM4NjcwLDM4Njk4LDM4NzAxLDM4NzA0LDM4NzE4LDQwODMyLDQwODM1LDQwODM3LDQwODM4LDQwODM5LDQwODQwLDQwODQxLDQwODQyLDQwODQ0LDQwNzAyLDQwNzE1LDQwNzE3LDM4NTg1LDM4NTg4LDM4NTg5LDM4NjA2LDM4NjEwLDMwNjU1LDM4NjI0LDM3NTE4LDM3NTUwLDM3'@; put 'NTc2LDM3Njk0LDM3NzM4LDM3ODM0LDM3Nzc1LDM3OTUwLDM3OTk1LDQwMDYzLDQwMDY2LDQwMDY5LDQwMDcwLDQwMDcxLDQwMDcyLDMxMjY3LDQwMDc1LDQwMDc4LDQwMDgwLDQwMDgxLDQwMDgyLDQwMDg0LDQwMDg1LDQwMDkwLDQwMDkxLDQwMDk0LDQwMDk1LDQwMDk2LDQwMDk3LDQwMDk4'@; put 'LDQwMDk5LDQwMTAxLDQwMTAyLDQwMTAzLDQwMTA0LDQwMTA1LDQwMTA3LDQwMTA5LDQwMTEwLDQwMTEyLDQwMTEzLDQwMTE0LDQwMTE1LDQwMTE2LDQwMTE3LDQwMTE4LDQwMTE5LDQwMTIyLDQwMTIzLDQwMTI0LDQwMTI1LDQwMTMyLDQwMTMzLDQwMTM0LDQwMTM1LDQwMTM4LDQwMTM5LDM5'@; put 'OTk2LDM5OTk3LDM5OTk4LDM5OTk5LDRlNCw0MDAwMSw0MDAwMiw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwNiw0MDAwNyw0MDAwOCw0MDAwOSw0MDAxMCw0MDAxMSw0MDAxMiw0MDAxMyw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxNyw0MDAxOCw0MDAxOSw0MDAyMCw0MDAyMSw0MDAyMiw0MDAyMyw0'@; put 'MDAyNCw0MDAyNSw0MDAyNiw0MDAyNyw0MDAyOCw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzMiw0MDAzMyw0MDAzNCw0MDAzNSw0MDAzNiw0MDAzNyw0MDAzOCw0MDAzOSw0MDA0MCw0MDA0MSw0MDA0Miw0MDA0Myw0MDA0NCw0MDA0NSw0MDA0Niw0MDA0Nyw0MDA0OCw0MDA0OSw0MDA1MCw0MDA1'@; put 'MSw0MDA1Miw0MDA1Myw0MDA1NCw0MDA1NSw0MDA1Niw0MDA1Nyw0MDA1OCw0MDA1OSw0MDA2MSw0MDA2Miw0MDA2NCw0MDA2Nyw0MDA2OCw0MDA3Myw0MDA3NCw0MDA3Niw0MDA3OSw0MDA4Myw0MDA4Niw0MDA4Nyw0MDA4OCw0MDA4OSw0MDA5Myw0MDEwNiw0MDEwOCw0MDExMSw0MDEyMSw0'@; put 'MDEyNiw0MDEyNyw0MDEyOCw0MDEyOSw0MDEzMCw0MDEzNiw0MDEzNyw0MDE0NSw0MDE0Niw0MDE1NCw0MDE1NSw0MDE2MCw0MDE2MSw0MDE0MCw0MDE0MSw0MDE0Miw0MDE0Myw0MDE0NCw0MDE0Nyw0MDE0OCw0MDE0OSw0MDE1MSw0MDE1Miw0MDE1Myw0MDE1Niw0MDE1Nyw0MDE1OSw0MDE2'@; put 'MiwzODc4MCwzODc4OSwzODgwMSwzODgwMiwzODgwNCwzODgzMSwzODgyNywzODgxOSwzODgzNCwzODgzNiwzOTYwMSwzOTYwMCwzOTYwNyw0MDUzNiwzOTYwNiwzOTYxMCwzOTYxMiwzOTYxNywzOTYxNiwzOTYyMSwzOTYxOCwzOTYyNywzOTYyOCwzOTYzMywzOTc0OSwzOTc0NywzOTc1MSwz'@; put 'OTc1MywzOTc1MiwzOTc1NywzOTc2MSwzOTE0NCwzOTE4MSwzOTIxNCwzOTI1MywzOTI1MiwzOTY0NywzOTY0OSwzOTY1NCwzOTY2MywzOTY1OSwzOTY3NSwzOTY2MSwzOTY3MywzOTY4OCwzOTY5NSwzOTY5OSwzOTcxMSwzOTcxNSw0MDYzNyw0MDYzOCwzMjMxNSw0MDU3OCw0MDU4Myw0MDU4'@; put 'NCw0MDU4Nyw0MDU5NCwzNzg0Niw0MDYwNSw0MDYwNyw0MDY2Nyw0MDY2OCw0MDY2OSw0MDY3Miw0MDY3MSw0MDY3NCw0MDY4MSw0MDY3OSw0MDY3Nyw0MDY4Miw0MDY4Nyw0MDczOCw0MDc0OCw0MDc1MSw0MDc2MSw0MDc1OSw0MDc2NSw0MDc2Niw0MDc3Miw0MDE2Myw0MDE2NCw0MDE2NSw0'@; put 'MDE2Niw0MDE2Nyw0MDE2OCw0MDE2OSw0MDE3MCw0MDE3MSw0MDE3Miw0MDE3Myw0MDE3NCw0MDE3NSw0MDE3Niw0MDE3Nyw0MDE3OCw0MDE3OSw0MDE4MCw0MDE4MSw0MDE4Miw0MDE4Myw0MDE4NCw0MDE4NSw0MDE4Niw0MDE4Nyw0MDE4OCw0MDE4OSw0MDE5MCw0MDE5MSw0MDE5Miw0MDE5'@; put 'Myw0MDE5NCw0MDE5NSw0MDE5Niw0MDE5Nyw0MDE5OCw0MDE5OSw0MDIwMCw0MDIwMSw0MDIwMiw0MDIwMyw0MDIwNCw0MDIwNSw0MDIwNiw0MDIwNyw0MDIwOCw0MDIwOSw0MDIxMCw0MDIxMSw0MDIxMiw0MDIxMyw0MDIxNCw0MDIxNSw0MDIxNiw0MDIxNyw0MDIxOCw0MDIxOSw0MDIyMCw0'@; put 'MDIyMSw0MDIyMiw0MDIyMyw0MDIyNCw0MDIyNSw0MDIyNiw0MDIyNyw0MDIyOCw0MDIyOSw0MDIzMCw0MDIzMSw0MDIzMiw0MDIzMyw0MDIzNCw0MDIzNSw0MDIzNiw0MDIzNyw0MDIzOCw0MDIzOSw0MDI0MCw0MDI0MSw0MDI0Miw0MDI0Myw0MDI0NCw0MDI0NSw0MDI0Niw0MDI0Nyw0MDI0'@; put 'OCw0MDI0OSw0MDI1MCw0MDI1MSw0MDI1Miw0MDI1Myw0MDI1NCw0MDI1NSw0MDI1Niw0MDI1Nyw0MDI1OCw1NzkwOCw1NzkwOSw1NzkxMCw1NzkxMSw1NzkxMiw1NzkxMyw1NzkxNCw1NzkxNSw1NzkxNiw1NzkxNyw1NzkxOCw1NzkxOSw1NzkyMCw1NzkyMSw1NzkyMiw1NzkyMyw1NzkyNCw1'@; put 'NzkyNSw1NzkyNiw1NzkyNyw1NzkyOCw1NzkyOSw1NzkzMCw1NzkzMSw1NzkzMiw1NzkzMyw1NzkzNCw1NzkzNSw1NzkzNiw1NzkzNyw1NzkzOCw1NzkzOSw1Nzk0MCw1Nzk0MSw1Nzk0Miw1Nzk0Myw1Nzk0NCw1Nzk0NSw1Nzk0Niw1Nzk0Nyw1Nzk0OCw1Nzk0OSw1Nzk1MCw1Nzk1MSw1Nzk1'@; put 'Miw1Nzk1Myw1Nzk1NCw1Nzk1NSw1Nzk1Niw1Nzk1Nyw1Nzk1OCw1Nzk1OSw1Nzk2MCw1Nzk2MSw1Nzk2Miw1Nzk2Myw1Nzk2NCw1Nzk2NSw1Nzk2Niw1Nzk2Nyw1Nzk2OCw1Nzk2OSw1Nzk3MCw1Nzk3MSw1Nzk3Miw1Nzk3Myw1Nzk3NCw1Nzk3NSw1Nzk3Niw1Nzk3Nyw1Nzk3OCw1Nzk3OSw1'@; put 'Nzk4MCw1Nzk4MSw1Nzk4Miw1Nzk4Myw1Nzk4NCw1Nzk4NSw1Nzk4Niw1Nzk4Nyw1Nzk4OCw1Nzk4OSw1Nzk5MCw1Nzk5MSw1Nzk5Miw1Nzk5Myw1Nzk5NCw1Nzk5NSw1Nzk5Niw1Nzk5Nyw1Nzk5OCw1Nzk5OSw1OGUzLDU4MDAxLDQwMjU5LDQwMjYwLDQwMjYxLDQwMjYyLDQwMjYzLDQwMjY0'@; put 'LDQwMjY1LDQwMjY2LDQwMjY3LDQwMjY4LDQwMjY5LDQwMjcwLDQwMjcxLDQwMjcyLDQwMjczLDQwMjc0LDQwMjc1LDQwMjc2LDQwMjc3LDQwMjc4LDQwMjc5LDQwMjgwLDQwMjgxLDQwMjgyLDQwMjgzLDQwMjg0LDQwMjg1LDQwMjg2LDQwMjg3LDQwMjg4LDQwMjg5LDQwMjkwLDQwMjkxLDQw'@; put 'MjkyLDQwMjkzLDQwMjk0LDQwMjk1LDQwMjk2LDQwMjk3LDQwMjk4LDQwMjk5LDQwMzAwLDQwMzAxLDQwMzAyLDQwMzAzLDQwMzA0LDQwMzA1LDQwMzA2LDQwMzA3LDQwMzA4LDQwMzA5LDQwMzEwLDQwMzExLDQwMzEyLDQwMzEzLDQwMzE0LDQwMzE1LDQwMzE2LDQwMzE3LDQwMzE4LDQwMzE5'@; put 'LDQwMzIwLDQwMzIxLDQwMzIyLDQwMzIzLDQwMzI0LDQwMzI1LDQwMzI2LDQwMzI3LDQwMzI4LDQwMzI5LDQwMzMwLDQwMzMxLDQwMzMyLDQwMzMzLDQwMzM0LDQwMzM1LDQwMzM2LDQwMzM3LDQwMzM4LDQwMzM5LDQwMzQwLDQwMzQxLDQwMzQyLDQwMzQzLDQwMzQ0LDQwMzQ1LDQwMzQ2LDQw'@; put 'MzQ3LDQwMzQ4LDQwMzQ5LDQwMzUwLDQwMzUxLDQwMzUyLDQwMzUzLDQwMzU0LDU4MDAyLDU4MDAzLDU4MDA0LDU4MDA1LDU4MDA2LDU4MDA3LDU4MDA4LDU4MDA5LDU4MDEwLDU4MDExLDU4MDEyLDU4MDEzLDU4MDE0LDU4MDE1LDU4MDE2LDU4MDE3LDU4MDE4LDU4MDE5LDU4MDIwLDU4MDIx'@; put 'LDU4MDIyLDU4MDIzLDU4MDI0LDU4MDI1LDU4MDI2LDU4MDI3LDU4MDI4LDU4MDI5LDU4MDMwLDU4MDMxLDU4MDMyLDU4MDMzLDU4MDM0LDU4MDM1LDU4MDM2LDU4MDM3LDU4MDM4LDU4MDM5LDU4MDQwLDU4MDQxLDU4MDQyLDU4MDQzLDU4MDQ0LDU4MDQ1LDU4MDQ2LDU4MDQ3LDU4MDQ4LDU4'@; put 'MDQ5LDU4MDUwLDU4MDUxLDU4MDUyLDU4MDUzLDU4MDU0LDU4MDU1LDU4MDU2LDU4MDU3LDU4MDU4LDU4MDU5LDU4MDYwLDU4MDYxLDU4MDYyLDU4MDYzLDU4MDY0LDU4MDY1LDU4MDY2LDU4MDY3LDU4MDY4LDU4MDY5LDU4MDcwLDU4MDcxLDU4MDcyLDU4MDczLDU4MDc0LDU4MDc1LDU4MDc2'@; put 'LDU4MDc3LDU4MDc4LDU4MDc5LDU4MDgwLDU4MDgxLDU4MDgyLDU4MDgzLDU4MDg0LDU4MDg1LDU4MDg2LDU4MDg3LDU4MDg4LDU4MDg5LDU4MDkwLDU4MDkxLDU4MDkyLDU4MDkzLDU4MDk0LDU4MDk1LDQwMzU1LDQwMzU2LDQwMzU3LDQwMzU4LDQwMzU5LDQwMzYwLDQwMzYxLDQwMzYyLDQw'@; put 'MzYzLDQwMzY0LDQwMzY1LDQwMzY2LDQwMzY3LDQwMzY4LDQwMzY5LDQwMzcwLDQwMzcxLDQwMzcyLDQwMzczLDQwMzc0LDQwMzc1LDQwMzc2LDQwMzc3LDQwMzc4LDQwMzc5LDQwMzgwLDQwMzgxLDQwMzgyLDQwMzgzLDQwMzg0LDQwMzg1LDQwMzg2LDQwMzg3LDQwMzg4LDQwMzg5LDQwMzkw'@; put 'LDQwMzkxLDQwMzkyLDQwMzkzLDQwMzk0LDQwMzk1LDQwMzk2LDQwMzk3LDQwMzk4LDQwMzk5LDQwNDAwLDQwNDAxLDQwNDAyLDQwNDAzLDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDA4LDQwNDA5LDQwNDEwLDQwNDExLDQwNDEyLDQwNDEzLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDE3LDQw'@; put 'NDE4LDQwNDE5LDQwNDIwLDQwNDIxLDQwNDIyLDQwNDIzLDQwNDI0LDQwNDI1LDQwNDI2LDQwNDI3LDQwNDI4LDQwNDI5LDQwNDMwLDQwNDMxLDQwNDMyLDQwNDMzLDQwNDM0LDQwNDM1LDQwNDM2LDQwNDM3LDQwNDM4LDQwNDM5LDQwNDQwLDQwNDQxLDQwNDQyLDQwNDQzLDQwNDQ0LDQwNDQ1'@; put 'LDQwNDQ2LDQwNDQ3LDQwNDQ4LDQwNDQ5LDQwNDUwLDU4MDk2LDU4MDk3LDU4MDk4LDU4MDk5LDU4MTAwLDU4MTAxLDU4MTAyLDU4MTAzLDU4MTA0LDU4MTA1LDU4MTA2LDU4MTA3LDU4MTA4LDU4MTA5LDU4MTEwLDU4MTExLDU4MTEyLDU4MTEzLDU4MTE0LDU4MTE1LDU4MTE2LDU4MTE3LDU4'@; put 'MTE4LDU4MTE5LDU4MTIwLDU4MTIxLDU4MTIyLDU4MTIzLDU4MTI0LDU4MTI1LDU4MTI2LDU4MTI3LDU4MTI4LDU4MTI5LDU4MTMwLDU4MTMxLDU4MTMyLDU4MTMzLDU4MTM0LDU4MTM1LDU4MTM2LDU4MTM3LDU4MTM4LDU4MTM5LDU4MTQwLDU4MTQxLDU4MTQyLDU4MTQzLDU4MTQ0LDU4MTQ1'@; put 'LDU4MTQ2LDU4MTQ3LDU4MTQ4LDU4MTQ5LDU4MTUwLDU4MTUxLDU4MTUyLDU4MTUzLDU4MTU0LDU4MTU1LDU4MTU2LDU4MTU3LDU4MTU4LDU4MTU5LDU4MTYwLDU4MTYxLDU4MTYyLDU4MTYzLDU4MTY0LDU4MTY1LDU4MTY2LDU4MTY3LDU4MTY4LDU4MTY5LDU4MTcwLDU4MTcxLDU4MTcyLDU4'@; put 'MTczLDU4MTc0LDU4MTc1LDU4MTc2LDU4MTc3LDU4MTc4LDU4MTc5LDU4MTgwLDU4MTgxLDU4MTgyLDU4MTgzLDU4MTg0LDU4MTg1LDU4MTg2LDU4MTg3LDU4MTg4LDU4MTg5LDQwNDUxLDQwNDUyLDQwNDUzLDQwNDU0LDQwNDU1LDQwNDU2LDQwNDU3LDQwNDU4LDQwNDU5LDQwNDYwLDQwNDYx'@; put 'LDQwNDYyLDQwNDYzLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY3LDQwNDY4LDQwNDY5LDQwNDcwLDQwNDcxLDQwNDcyLDQwNDczLDQwNDc0LDQwNDc1LDQwNDc2LDQwNDc3LDQwNDc4LDQwNDg0LDQwNDg3LDQwNDk0LDQwNDk2LDQwNTAwLDQwNTA3LDQwNTA4LDQwNTEyLDQwNTI1LDQwNTI4LDQw'@; put 'NTMwLDQwNTMxLDQwNTMyLDQwNTM0LDQwNTM3LDQwNTQxLDQwNTQzLDQwNTQ0LDQwNTQ1LDQwNTQ2LDQwNTQ5LDQwNTU4LDQwNTU5LDQwNTYyLDQwNTY0LDQwNTY1LDQwNTY2LDQwNTY3LDQwNTY4LDQwNTY5LDQwNTcwLDQwNTcxLDQwNTcyLDQwNTczLDQwNTc2LDQwNTc3LDQwNTc5LDQwNTgw'@; put 'LDQwNTgxLDQwNTgyLDQwNTg1LDQwNTg2LDQwNTg4LDQwNTg5LDQwNTkwLDQwNTkxLDQwNTkyLDQwNTkzLDQwNTk2LDQwNTk3LDQwNTk4LDQwNTk5LDQwNjAwLDQwNjAxLDQwNjAyLDQwNjAzLDQwNjA0LDQwNjA2LDQwNjA4LDQwNjA5LDQwNjEwLDQwNjExLDQwNjEyLDQwNjEzLDQwNjE1LDQw'@; put 'NjE2LDQwNjE3LDQwNjE4LDU4MTkwLDU4MTkxLDU4MTkyLDU4MTkzLDU4MTk0LDU4MTk1LDU4MTk2LDU4MTk3LDU4MTk4LDU4MTk5LDU4MjAwLDU4MjAxLDU4MjAyLDU4MjAzLDU4MjA0LDU4MjA1LDU4MjA2LDU4MjA3LDU4MjA4LDU4MjA5LDU4MjEwLDU4MjExLDU4MjEyLDU4MjEzLDU4MjE0'@; put 'LDU4MjE1LDU4MjE2LDU4MjE3LDU4MjE4LDU4MjE5LDU4MjIwLDU4MjIxLDU4MjIyLDU4MjIzLDU4MjI0LDU4MjI1LDU4MjI2LDU4MjI3LDU4MjI4LDU4MjI5LDU4MjMwLDU4MjMxLDU4MjMyLDU4MjMzLDU4MjM0LDU4MjM1LDU4MjM2LDU4MjM3LDU4MjM4LDU4MjM5LDU4MjQwLDU4MjQxLDU4'@; put 'MjQyLDU4MjQzLDU4MjQ0LDU4MjQ1LDU4MjQ2LDU4MjQ3LDU4MjQ4LDU4MjQ5LDU4MjUwLDU4MjUxLDU4MjUyLDU4MjUzLDU4MjU0LDU4MjU1LDU4MjU2LDU4MjU3LDU4MjU4LDU4MjU5LDU4MjYwLDU4MjYxLDU4MjYyLDU4MjYzLDU4MjY0LDU4MjY1LDU4MjY2LDU4MjY3LDU4MjY4LDU4MjY5'@; put 'LDU4MjcwLDU4MjcxLDU4MjcyLDU4MjczLDU4Mjc0LDU4Mjc1LDU4Mjc2LDU4Mjc3LDU4Mjc4LDU4Mjc5LDU4MjgwLDU4MjgxLDU4MjgyLDU4MjgzLDQwNjE5LDQwNjIwLDQwNjIxLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI1LDQwNjI2LDQwNjI3LDQwNjI5LDQwNjMwLDQwNjMxLDQwNjMzLDQw'@; put 'NjM0LDQwNjM2LDQwNjM5LDQwNjQwLDQwNjQxLDQwNjQyLDQwNjQzLDQwNjQ1LDQwNjQ2LDQwNjQ3LDQwNjQ4LDQwNjUwLDQwNjUxLDQwNjUyLDQwNjU2LDQwNjU4LDQwNjU5LDQwNjYxLDQwNjYyLDQwNjYzLDQwNjY1LDQwNjY2LDQwNjcwLDQwNjczLDQwNjc1LDQwNjc2LDQwNjc4LDQwNjgw'@; put 'LDQwNjgzLDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5LDQwNjkwLDQwNjkxLDQwNjkyLDQwNjkzLDQwNjk0LDQwNjk1LDQwNjk2LDQwNjk4LDQwNzAxLDQwNzAzLDQwNzA0LDQwNzA1LDQwNzA2LDQwNzA3LDQwNzA4LDQwNzA5LDQwNzEwLDQwNzExLDQwNzEyLDQwNzEzLDQwNzE0LDQw'@; put 'NzE2LDQwNzE5LDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI1LDQwNzI2LDQwNzI4LDQwNzMwLDQwNzMxLDQwNzMyLDQwNzMzLDQwNzM0LDQwNzM1LDQwNzM3LDQwNzM5LDQwNzQwLDQwNzQxLDQwNzQyLDQwNzQzLDQwNzQ0LDQwNzQ1LDQwNzQ2LDQwNzQ3LDQwNzQ5LDQwNzUwLDQwNzUyLDQwNzUz'@; put 'LDU4Mjg0LDU4Mjg1LDU4Mjg2LDU4Mjg3LDU4Mjg4LDU4Mjg5LDU4MjkwLDU4MjkxLDU4MjkyLDU4MjkzLDU4Mjk0LDU4Mjk1LDU4Mjk2LDU4Mjk3LDU4Mjk4LDU4Mjk5LDU4MzAwLDU4MzAxLDU4MzAyLDU4MzAzLDU4MzA0LDU4MzA1LDU4MzA2LDU4MzA3LDU4MzA4LDU4MzA5LDU4MzEwLDU4'@; put 'MzExLDU4MzEyLDU4MzEzLDU4MzE0LDU4MzE1LDU4MzE2LDU4MzE3LDU4MzE4LDU4MzE5LDU4MzIwLDU4MzIxLDU4MzIyLDU4MzIzLDU4MzI0LDU4MzI1LDU4MzI2LDU4MzI3LDU4MzI4LDU4MzI5LDU4MzMwLDU4MzMxLDU4MzMyLDU4MzMzLDU4MzM0LDU4MzM1LDU4MzM2LDU4MzM3LDU4MzM4'@; put 'LDU4MzM5LDU4MzQwLDU4MzQxLDU4MzQyLDU4MzQzLDU4MzQ0LDU4MzQ1LDU4MzQ2LDU4MzQ3LDU4MzQ4LDU4MzQ5LDU4MzUwLDU4MzUxLDU4MzUyLDU4MzUzLDU4MzU0LDU4MzU1LDU4MzU2LDU4MzU3LDU4MzU4LDU4MzU5LDU4MzYwLDU4MzYxLDU4MzYyLDU4MzYzLDU4MzY0LDU4MzY1LDU4'@; put 'MzY2LDU4MzY3LDU4MzY4LDU4MzY5LDU4MzcwLDU4MzcxLDU4MzcyLDU4MzczLDU4Mzc0LDU4Mzc1LDU4Mzc2LDU4Mzc3LDQwNzU0LDQwNzU1LDQwNzU2LDQwNzU3LDQwNzU4LDQwNzYwLDQwNzYyLDQwNzY0LDQwNzY3LDQwNzY4LDQwNzY5LDQwNzcwLDQwNzcxLDQwNzczLDQwNzc0LDQwNzc1'@; put 'LDQwNzc2LDQwNzc3LDQwNzc4LDQwNzc5LDQwNzgwLDQwNzgxLDQwNzgyLDQwNzgzLDQwNzg2LDQwNzg3LDQwNzg4LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzkzLDQwNzk0LDQwNzk1LDQwNzk2LDQwNzk3LDQwNzk4LDQwNzk5LDQwODAwLDQwODAxLDQwODAyLDQwODAzLDQwODA0LDQw'@; put 'ODA1LDQwODA2LDQwODA3LDQwODA4LDQwODA5LDQwODEwLDQwODExLDQwODEyLDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE4LDQwODE5LDQwODIwLDQwODIxLDQwODIyLDQwODIzLDQwODI0LDQwODI1LDQwODI2LDQwODI3LDQwODI4LDQwODI5LDQwODMwLDQwODMzLDQwODM0'@; put 'LDQwODQ1LDQwODQ2LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUwLDQwODUxLDQwODUyLDQwODUzLDQwODU0LDQwODU1LDQwODU2LDQwODYwLDQwODYxLDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY4LDQwODY5LDYzNzg4LDYzODY1LDYzODkzLDYzOTc1LDYzOTg1LDU4Mzc4LDU4Mzc5LDU4'@; put 'MzgwLDU4MzgxLDU4MzgyLDU4MzgzLDU4Mzg0LDU4Mzg1LDU4Mzg2LDU4Mzg3LDU4Mzg4LDU4Mzg5LDU4MzkwLDU4MzkxLDU4MzkyLDU4MzkzLDU4Mzk0LDU4Mzk1LDU4Mzk2LDU4Mzk3LDU4Mzk4LDU4Mzk5LDU4NDAwLDU4NDAxLDU4NDAyLDU4NDAzLDU4NDA0LDU4NDA1LDU4NDA2LDU4NDA3'@; put 'LDU4NDA4LDU4NDA5LDU4NDEwLDU4NDExLDU4NDEyLDU4NDEzLDU4NDE0LDU4NDE1LDU4NDE2LDU4NDE3LDU4NDE4LDU4NDE5LDU4NDIwLDU4NDIxLDU4NDIyLDU4NDIzLDU4NDI0LDU4NDI1LDU4NDI2LDU4NDI3LDU4NDI4LDU4NDI5LDU4NDMwLDU4NDMxLDU4NDMyLDU4NDMzLDU4NDM0LDU4'@; put 'NDM1LDU4NDM2LDU4NDM3LDU4NDM4LDU4NDM5LDU4NDQwLDU4NDQxLDU4NDQyLDU4NDQzLDU4NDQ0LDU4NDQ1LDU4NDQ2LDU4NDQ3LDU4NDQ4LDU4NDQ5LDU4NDUwLDU4NDUxLDU4NDUyLDU4NDUzLDU4NDU0LDU4NDU1LDU4NDU2LDU4NDU3LDU4NDU4LDU4NDU5LDU4NDYwLDU4NDYxLDU4NDYy'@; put 'LDU4NDYzLDU4NDY0LDU4NDY1LDU4NDY2LDU4NDY3LDU4NDY4LDU4NDY5LDU4NDcwLDU4NDcxLDY0MDEyLDY0MDEzLDY0MDE0LDY0MDE1LDY0MDE3LDY0MDE5LDY0MDIwLDY0MDI0LDY0MDMxLDY0MDMyLDY0MDMzLDY0MDM1LDY0MDM2LDY0MDM5LDY0MDQwLDY0MDQxLDExOTA1LDU5NDE0LDU5'@; put 'NDE1LDU5NDE2LDExOTA4LDEzNDI3LDEzMzgzLDExOTEyLDExOTE1LDU5NDIyLDEzNzI2LDEzODUwLDEzODM4LDExOTE2LDExOTI3LDE0NzAyLDE0NjE2LDU5NDMwLDE0Nzk5LDE0ODE1LDE0OTYzLDE0ODAwLDU5NDM1LDU5NDM2LDE1MTgyLDE1NDcwLDE1NTg0LDExOTQzLDU5NDQxLDU5NDQy'@; put 'LDExOTQ2LDE2NDcwLDE2NzM1LDExOTUwLDE3MjA3LDExOTU1LDExOTU4LDExOTU5LDU5NDUxLDE3MzI5LDE3MzI0LDExOTYzLDE3MzczLDE3NjIyLDE4MDE3LDE3OTk2LDU5NDU5LDE4MjExLDE4MjE3LDE4MzAwLDE4MzE3LDExOTc4LDE4NzU5LDE4ODEwLDE4ODEzLDE4ODE4LDE4ODE5LDE4'@; put 'ODIxLDE4ODIyLDE4ODQ3LDE4ODQzLDE4ODcxLDE4ODcwLDU5NDc2LDU5NDc3LDE5NjE5LDE5NjE1LDE5NjE2LDE5NjE3LDE5NTc1LDE5NjE4LDE5NzMxLDE5NzMyLDE5NzMzLDE5NzM0LDE5NzM1LDE5NzM2LDE5NzM3LDE5ODg2LDU5NDkyLDU4NDcyLDU4NDczLDU4NDc0LDU4NDc1LDU4NDc2'@; put 'LDU4NDc3LDU4NDc4LDU4NDc5LDU4NDgwLDU4NDgxLDU4NDgyLDU4NDgzLDU4NDg0LDU4NDg1LDU4NDg2LDU4NDg3LDU4NDg4LDU4NDg5LDU4NDkwLDU4NDkxLDU4NDkyLDU4NDkzLDU4NDk0LDU4NDk1LDU4NDk2LDU4NDk3LDU4NDk4LDU4NDk5LDU4NTAwLDU4NTAxLDU4NTAyLDU4NTAzLDU4'@; put 'NTA0LDU4NTA1LDU4NTA2LDU4NTA3LDU4NTA4LDU4NTA5LDU4NTEwLDU4NTExLDU4NTEyLDU4NTEzLDU4NTE0LDU4NTE1LDU4NTE2LDU4NTE3LDU4NTE4LDU4NTE5LDU4NTIwLDU4NTIxLDU4NTIyLDU4NTIzLDU4NTI0LDU4NTI1LDU4NTI2LDU4NTI3LDU4NTI4LDU4NTI5LDU4NTMwLDU4NTMx'@; put 'LDU4NTMyLDU4NTMzLDU4NTM0LDU4NTM1LDU4NTM2LDU4NTM3LDU4NTM4LDU4NTM5LDU4NTQwLDU4NTQxLDU4NTQyLDU4NTQzLDU4NTQ0LDU4NTQ1LDU4NTQ2LDU4NTQ3LDU4NTQ4LDU4NTQ5LDU4NTUwLDU4NTUxLDU4NTUyLDU4NTUzLDU4NTU0LDU4NTU1LDU4NTU2LDU4NTU3LDU4NTU4LDU4'@; put 'NTU5LDU4NTYwLDU4NTYxLDU4NTYyLDU4NTYzLDU4NTY0LDU4NTY1XSwiZ2IxODAzMC1yYW5nZXMiOltbMCwxMjhdLFszNiwxNjVdLFszOCwxNjldLFs0NSwxNzhdLFs1MCwxODRdLFs4MSwyMTZdLFs4OSwyMjZdLFs5NSwyMzVdLFs5NiwyMzhdLFsxMDAsMjQ0XSxbMTAzLDI0OF0sWzEwNCwy'@; put 'NTFdLFsxMDUsMjUzXSxbMTA5LDI1OF0sWzEyNiwyNzZdLFsxMzMsMjg0XSxbMTQ4LDMwMF0sWzE3MiwzMjVdLFsxNzUsMzI5XSxbMTc5LDMzNF0sWzIwOCwzNjRdLFszMDYsNDYzXSxbMzA3LDQ2NV0sWzMwOCw0NjddLFszMDksNDY5XSxbMzEwLDQ3MV0sWzMxMSw0NzNdLFszMTIsNDc1XSxb'@; put 'MzEzLDQ3N10sWzM0MSw1MDZdLFs0MjgsNTk0XSxbNDQzLDYxMF0sWzU0NCw3MTJdLFs1NDUsNzE2XSxbNTU4LDczMF0sWzc0MSw5MzBdLFs3NDIsOTM4XSxbNzQ5LDk2Ml0sWzc1MCw5NzBdLFs4MDUsMTAyNl0sWzgxOSwxMTA0XSxbODIwLDExMDZdLFs3OTIyLDgyMDldLFs3OTI0LDgyMTVd'@; put 'LFs3OTI1LDgyMThdLFs3OTI3LDgyMjJdLFs3OTM0LDgyMzFdLFs3OTQzLDgyNDFdLFs3OTQ0LDgyNDRdLFs3OTQ1LDgyNDZdLFs3OTUwLDgyNTJdLFs4MDYyLDgzNjVdLFs4MTQ4LDg0NTJdLFs4MTQ5LDg0NTRdLFs4MTUyLDg0NThdLFs4MTY0LDg0NzFdLFs4MTc0LDg0ODJdLFs4MjM2LDg1'@; put 'NTZdLFs4MjQwLDg1NzBdLFs4MjYyLDg1OTZdLFs4MjY0LDg2MDJdLFs4Mzc0LDg3MTNdLFs4MzgwLDg3MjBdLFs4MzgxLDg3MjJdLFs4Mzg0LDg3MjZdLFs4Mzg4LDg3MzFdLFs4MzkwLDg3MzddLFs4MzkyLDg3NDBdLFs4MzkzLDg3NDJdLFs4Mzk0LDg3NDhdLFs4Mzk2LDg3NTFdLFs4NDAx'@; put 'LDg3NjBdLFs4NDA2LDg3NjZdLFs4NDE2LDg3NzddLFs4NDE5LDg3ODFdLFs4NDI0LDg3ODddLFs4NDM3LDg4MDJdLFs4NDM5LDg4MDhdLFs4NDQ1LDg4MTZdLFs4NDgyLDg4NTRdLFs4NDg1LDg4NThdLFs4NDk2LDg4NzBdLFs4NTIxLDg4OTZdLFs4NjAzLDg5NzldLFs4OTM2LDkzMjJdLFs4'@; put 'OTQ2LDkzNzJdLFs5MDQ2LDk1NDhdLFs5MDUwLDk1ODhdLFs5MDYzLDk2MTZdLFs5MDY2LDk2MjJdLFs5MDc2LDk2MzRdLFs5MDkyLDk2NTJdLFs5MTAwLDk2NjJdLFs5MTA4LDk2NzJdLFs5MTExLDk2NzZdLFs5MTEzLDk2ODBdLFs5MTMxLDk3MDJdLFs5MTYyLDk3MzVdLFs5MTY0LDk3Mzhd'@; put 'LFs5MjE4LDk3OTNdLFs5MjE5LDk3OTVdLFsxMTMyOSwxMTkwNl0sWzExMzMxLDExOTA5XSxbMTEzMzQsMTE5MTNdLFsxMTMzNiwxMTkxN10sWzExMzQ2LDExOTI4XSxbMTEzNjEsMTE5NDRdLFsxMTM2MywxMTk0N10sWzExMzY2LDExOTUxXSxbMTEzNzAsMTE5NTZdLFsxMTM3MiwxMTk2MF0s'@; put 'WzExMzc1LDExOTY0XSxbMTEzODksMTE5NzldLFsxMTY4MiwxMjI4NF0sWzExNjg2LDEyMjkyXSxbMTE2ODcsMTIzMTJdLFsxMTY5MiwxMjMxOV0sWzExNjk0LDEyMzMwXSxbMTE3MTQsMTIzNTFdLFsxMTcxNiwxMjQzNl0sWzExNzIzLDEyNDQ3XSxbMTE3MjUsMTI1MzVdLFsxMTczMCwxMjU0'@; put 'M10sWzExNzM2LDEyNTg2XSxbMTE5ODIsMTI4NDJdLFsxMTk4OSwxMjg1MF0sWzEyMTAyLDEyOTY0XSxbMTIzMzYsMTMyMDBdLFsxMjM0OCwxMzIxNV0sWzEyMzUwLDEzMjE4XSxbMTIzODQsMTMyNTNdLFsxMjM5MywxMzI2M10sWzEyMzk1LDEzMjY3XSxbMTIzOTcsMTMyNzBdLFsxMjUxMCwx'@; put 'MzM4NF0sWzEyNTUzLDEzNDI4XSxbMTI4NTEsMTM3MjddLFsxMjk2MiwxMzgzOV0sWzEyOTczLDEzODUxXSxbMTM3MzgsMTQ2MTddLFsxMzgyMywxNDcwM10sWzEzOTE5LDE0ODAxXSxbMTM5MzMsMTQ4MTZdLFsxNDA4MCwxNDk2NF0sWzE0Mjk4LDE1MTgzXSxbMTQ1ODUsMTU0NzFdLFsxNDY5'@; put 'OCwxNTU4NV0sWzE1NTgzLDE2NDcxXSxbMTU4NDcsMTY3MzZdLFsxNjMxOCwxNzIwOF0sWzE2NDM0LDE3MzI1XSxbMTY0MzgsMTczMzBdLFsxNjQ4MSwxNzM3NF0sWzE2NzI5LDE3NjIzXSxbMTcxMDIsMTc5OTddLFsxNzEyMiwxODAxOF0sWzE3MzE1LDE4MjEyXSxbMTczMjAsMTgyMThdLFsx'@; put 'NzQwMiwxODMwMV0sWzE3NDE4LDE4MzE4XSxbMTc4NTksMTg3NjBdLFsxNzkwOSwxODgxMV0sWzE3OTExLDE4ODE0XSxbMTc5MTUsMTg4MjBdLFsxNzkxNiwxODgyM10sWzE3OTM2LDE4ODQ0XSxbMTc5MzksMTg4NDhdLFsxNzk2MSwxODg3Ml0sWzE4NjY0LDE5NTc2XSxbMTg3MDMsMTk2MjBd'@; put 'LFsxODgxNCwxOTczOF0sWzE4OTYyLDE5ODg3XSxbMTkwNDMsNDA4NzBdLFszMzQ2OSw1OTI0NF0sWzMzNDcwLDU5MzM2XSxbMzM0NzEsNTkzNjddLFszMzQ4NCw1OTQxM10sWzMzNDg1LDU5NDE3XSxbMzM0OTAsNTk0MjNdLFszMzQ5Nyw1OTQzMV0sWzMzNTAxLDU5NDM3XSxbMzM1MDUsNTk0'@; put 'NDNdLFszMzUxMyw1OTQ1Ml0sWzMzNTIwLDU5NDYwXSxbMzM1MzYsNTk0NzhdLFszMzU1MCw1OTQ5M10sWzM3ODQ1LDYzNzg5XSxbMzc5MjEsNjM4NjZdLFszNzk0OCw2Mzg5NF0sWzM4MDI5LDYzOTc2XSxbMzgwMzgsNjM5ODZdLFszODA2NCw2NDAxNl0sWzM4MDY1LDY0MDE4XSxbMzgwNjYs'@; put 'NjQwMjFdLFszODA2OSw2NDAyNV0sWzM4MDc1LDY0MDM0XSxbMzgwNzYsNjQwMzddLFszODA3OCw2NDA0Ml0sWzM5MTA4LDY1MDc0XSxbMzkxMDksNjUwOTNdLFszOTExMyw2NTEwN10sWzM5MTE0LDY1MTEyXSxbMzkxMTUsNjUxMjddLFszOTExNiw2NTEzMl0sWzM5MjY1LDY1Mzc1XSxbMzkz'@; put 'OTQsNjU1MTBdLFsxODllMyw2NTUzNl1dLGppczAyMDg6WzEyMjg4LDEyMjg5LDEyMjkwLDY1MjkyLDY1Mjk0LDEyNTM5LDY1MzA2LDY1MzA3LDY1MzExLDY1MjgxLDEyNDQzLDEyNDQ0LDE4MCw2NTM0NCwxNjgsNjUzNDIsNjU1MDcsNjUzNDMsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIy'@; put 'OTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsODIxMyw4MjA4LDY1Mjk1LDY1MzQwLDY1Mzc0LDg3NDEsNjUzNzIsODIzMCw4MjI5LDgyMTYsODIxNyw4MjIwLDgyMjEsNjUyODgsNjUyODksMTIzMDgsMTIzMDksNjUzMzksNjUzNDEsNjUzNzEsNjUzNzMsMTIyOTYsMTIyOTcsMTIy'@; put 'OTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsNjUyOTEsNjUyOTMsMTc3LDIxNSwyNDcsNjUzMDksODgwMCw2NTMwOCw2NTMxMCw4ODA2LDg4MDcsODczNCw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQzLDg0NTEsNjU1MDksNjUyODQsNjU1MDQsNjU1MDUs'@; put 'NjUyODUsNjUyODMsNjUyODYsNjUyOTAsNjUzMTIsMTY3LDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODI1MSwxMjMwNiw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3NDMsODc0NCw2NTUwNiw4NjU4LDg2NjAsODcwNCw4NzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg0OTEsODI0MCw5ODM5LDk4MzcsOTgz'@; put 'NCw4MjI0LDgyMjUsMTgyLG51bGwsbnVsbCxudWxsLG51bGwsOTcxMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2'@; put 'NTMwNCw2NTMwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMy'@; put 'LDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1'@; put 'MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLG51bGwsbnVsbCxudWxsLG51bGwsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIz'@; put 'NjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQs'@; put 'MTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0'@; put 'MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUz'@; put 'LDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEy'@; put 'NDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4'@; put 'LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0Niwx'@; put 'MDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5Niwx'@; put 'MDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5'@; put 'NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5'@; put 'MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMyMiw5MzIzLDkzMjQsOTMyNSw5MzI2LDkzMjcsOTMyOCw5MzI5LDkzMzAsOTMzMSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsMTMxMjksMTMwNzYsMTMwOTAsMTMxMzMsMTMwODAsMTMwOTUs'@; put 'MTMwNTksMTMxMTAsMTMxMzcsMTMxNDMsMTMwNjksMTMwOTQsMTMwOTEsMTMwOTksMTMxMzAsMTMxMTUsMTMyMTIsMTMyMTMsMTMyMTQsMTMxOTgsMTMxOTksMTMyNTIsMTMyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEzMTc5LDEyMzE3LDEyMzE5LDg0NzAs'@; put 'MTMyNjEsODQ4MSwxMjk2NCwxMjk2NSwxMjk2NiwxMjk2NywxMjk2OCwxMjg0OSwxMjg1MCwxMjg1NywxMzE4MiwxMzE4MSwxMzE4MCw4Nzg2LDg4MDEsODc0Nyw4NzUwLDg3MjEsODczMCw4ODY5LDg3MzYsODczNSw4ODk1LDg3NTcsODc0NSw4NzQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAxMjQsMjE3ODIsMjMwNDMsMzg0NjMsMjE2OTYsMjQ4NTksMjUzODQsMjMwMzAsMzY4OTgsMzM5MDksMzM1'@; put 'NjQsMzEzMTIsMjQ3NDYsMjU1NjksMjgxOTcsMjYwOTMsMzM4OTQsMzM0NDYsMzk5MjUsMjY3NzEsMjIzMTEsMjYwMTcsMjUyMDEsMjM0NTEsMjI5OTIsMzQ0MjcsMzkxNTYsMzIwOTgsMzIxOTAsMzk4MjIsMjUxMTAsMzE5MDMsMzQ5OTksMjM0MzMsMjQyNDUsMjUzNTMsMjYyNjMsMjY2OTYs'@; put 'MzgzNDMsMzg3OTcsMjY0NDcsMjAxOTcsMjAyMzQsMjAzMDEsMjAzODEsMjA1NTMsMjIyNTgsMjI4MzksMjI5OTYsMjMwNDEsMjM1NjEsMjQ3OTksMjQ4NDcsMjQ5NDQsMjYxMzEsMjY4ODUsMjg4NTgsMzAwMzEsMzAwNjQsMzEyMjcsMzIxNzMsMzIyMzksMzI5NjMsMzM4MDYsMzQ5MTUsMzU1'@; put 'ODYsMzY5NDksMzY5ODYsMjEzMDcsMjAxMTcsMjAxMzMsMjI0OTUsMzI5NDYsMzcwNTcsMzA5NTksMTk5NjgsMjI3NjksMjgzMjIsMzY5MjAsMzEyODIsMzM1NzYsMzM0MTksMzk5ODMsMjA4MDEsMjEzNjAsMjE2OTMsMjE3MjksMjIyNDAsMjMwMzUsMjQzNDEsMzkxNTQsMjgxMzksMzI5OTYs'@; put 'MzQwOTMsMzg0OTgsMzg1MTIsMzg1NjAsMzg5MDcsMjE1MTUsMjE0OTEsMjM0MzEsMjg4NzksMzI3MDEsMzY4MDIsMzg2MzIsMjEzNTksNDAyODQsMzE0MTgsMTk5ODUsMzA4NjcsMzMyNzYsMjgxOTgsMjIwNDAsMjE3NjQsMjc0MjEsMzQwNzQsMzk5OTUsMjMwMTMsMjE0MTcsMjgwMDYsMjk5'@; put 'MTYsMzgyODcsMjIwODIsMjAxMTMsMzY5MzksMzg2NDIsMzM2MTUsMzkxODAsMjE0NzMsMjE5NDIsMjMzNDQsMjQ0MzMsMjYxNDQsMjYzNTUsMjY2MjgsMjc3MDQsMjc4OTEsMjc5NDUsMjk3ODcsMzA0MDgsMzEzMTAsMzg5NjQsMzM1MjEsMzQ5MDcsMzU0MjQsMzc2MTMsMjgwODIsMzAxMjMs'@; put 'MzA0MTAsMzkzNjUsMjQ3NDIsMzU1ODUsMzYyMzQsMzgzMjIsMjcwMjIsMjE0MjEsMjA4NzAsMjIyOTAsMjI1NzYsMjI4NTIsMjM0NzYsMjQzMTAsMjQ2MTYsMjU1MTMsMjU1ODgsMjc4MzksMjg0MzYsMjg4MTQsMjg5NDgsMjkwMTcsMjkxNDEsMjk1MDMsMzIyNTcsMzMzOTgsMzM0ODksMzQx'@; put 'OTksMzY5NjAsMzc0NjcsNDAyMTksMjI2MzMsMjYwNDQsMjc3MzgsMjk5ODksMjA5ODUsMjI4MzAsMjI4ODUsMjQ0NDgsMjQ1NDAsMjUyNzYsMjYxMDYsMjcxNzgsMjc0MzEsMjc1NzIsMjk1NzksMzI3MDUsMzUxNTgsNDAyMzYsNDAyMDYsNDA2NDQsMjM3MTMsMjc3OTgsMzM2NTksMjA3NDAs'@; put 'MjM2MjcsMjUwMTQsMzMyMjIsMjY3NDIsMjkyODEsMjAwNTcsMjA0NzQsMjEzNjgsMjQ2ODEsMjgyMDEsMzEzMTEsMzg4OTksMTk5NzksMjEyNzAsMjAyMDYsMjAzMDksMjAyODUsMjAzODUsMjAzMzksMjExNTIsMjE0ODcsMjIwMjUsMjI3OTksMjMyMzMsMjM0NzgsMjM1MjEsMzExODUsMjYy'@; put 'NDcsMjY1MjQsMjY1NTAsMjc0NjgsMjc4MjcsMjg3NzksMjk2MzQsMzExMTcsMzExNjYsMzEyOTIsMzE2MjMsMzM0NTcsMzM0OTksMzM1NDAsMzM2NTUsMzM3NzUsMzM3NDcsMzQ2NjIsMzU1MDYsMjIwNTcsMzYwMDgsMzY4MzgsMzY5NDIsMzg2ODYsMzQ0NDIsMjA0MjAsMjM3ODQsMjUxMDUs'@; put 'MjkyNzMsMzAwMTEsMzMyNTMsMzM0NjksMzQ1NTgsMzYwMzIsMzg1OTcsMzkxODcsMzkzODEsMjAxNzEsMjAyNTAsMzUyOTksMjIyMzgsMjI2MDIsMjI3MzAsMjQzMTUsMjQ1NTUsMjQ2MTgsMjQ3MjQsMjQ2NzQsMjUwNDAsMjUxMDYsMjUyOTYsMjU5MTMsMzk3NDUsMjYyMTQsMjY4MDAsMjgw'@; put 'MjMsMjg3ODQsMzAwMjgsMzAzNDIsMzIxMTcsMzM0NDUsMzQ4MDksMzgyODMsMzg1NDIsMzU5OTcsMjA5NzcsMjExODIsMjI4MDYsMjE2ODMsMjM0NzUsMjM4MzAsMjQ5MzYsMjcwMTAsMjgwNzksMzA4NjEsMzM5OTUsMzQ5MDMsMzU0NDIsMzc3OTksMzk2MDgsMjgwMTIsMzkzMzYsMzQ1MjEs'@; put 'MjI0MzUsMjY2MjMsMzQ1MTAsMzczOTAsMjExMjMsMjIxNTEsMjE1MDgsMjQyNzUsMjUzMTMsMjU3ODUsMjY2ODQsMjY2ODAsMjc1NzksMjk1NTQsMzA5MDYsMzEzMzksMzUyMjYsMzUyODIsMzYyMDMsMzY2MTEsMzcxMDEsMzgzMDcsMzg1NDgsMzg3NjEsMjMzOTgsMjM3MzEsMjcwMDUsMzg5'@; put 'ODksMzg5OTAsMjU0OTksMzE1MjAsMjcxNzksMjcyNjMsMjY4MDYsMzk5NDksMjg1MTEsMjExMDYsMjE5MTcsMjQ2ODgsMjUzMjQsMjc5NjMsMjgxNjcsMjgzNjksMzM4ODMsMzUwODgsMzY2NzYsMTk5ODgsMzk5OTMsMjE0OTQsMjY5MDcsMjcxOTQsMzg3ODgsMjY2NjYsMjA4MjgsMzE0Mjcs'@; put 'MzM5NzAsMzczNDAsMzc3NzIsMjIxMDcsNDAyMzIsMjY2NTgsMzM1NDEsMzM4NDEsMzE5MDksMjFlMywzMzQ3NywyOTkyNiwyMDA5NCwyMDM1NSwyMDg5NiwyMzUwNiwyMTAwMiwyMTIwOCwyMTIyMywyNDA1OSwyMTkxNCwyMjU3MCwyMzAxNCwyMzQzNiwyMzQ0OCwyMzUxNSwyNDE3OCwyNDE4'@; put 'NSwyNDczOSwyNDg2MywyNDkzMSwyNTAyMiwyNTU2MywyNTk1NCwyNjU3NywyNjcwNywyNjg3NCwyNzQ1NCwyNzQ3NSwyNzczNSwyODQ1MCwyODU2NywyODQ4NSwyOTg3MiwyOTk3NiwzMDQzNSwzMDQ3NSwzMTQ4NywzMTY0OSwzMTc3NywzMjIzMywzMjU2NiwzMjc1MiwzMjkyNSwzMzM4Miwz'@; put 'MzY5NCwzNTI1MSwzNTUzMiwzNjAxMSwzNjk5NiwzNzk2OSwzODI5MSwzODI4OSwzODMwNiwzODUwMSwzODg2NywzOTIwOCwzMzMwNCwyMDAyNCwyMTU0NywyMzczNiwyNDAxMiwyOTYwOSwzMDI4NCwzMDUyNCwyMzcyMSwzMjc0NywzNjEwNywzODU5MywzODkyOSwzODk5NiwzOWUzLDIwMjI1'@; put 'LDIwMjM4LDIxMzYxLDIxOTE2LDIyMTIwLDIyNTIyLDIyODU1LDIzMzA1LDIzNDkyLDIzNjk2LDI0MDc2LDI0MTkwLDI0NTI0LDI1NTgyLDI2NDI2LDI2MDcxLDI2MDgyLDI2Mzk5LDI2ODI3LDI2ODIwLDI3MjMxLDI0MTEyLDI3NTg5LDI3NjcxLDI3NzczLDMwMDc5LDMxMDQ4LDIzMzk1LDMx'@; put 'MjMyLDMyZTMsMjQ1MDksMzUyMTUsMzUzNTIsMzYwMjAsMzYyMTUsMzY1NTYsMzY2MzcsMzkxMzgsMzk0MzgsMzk3NDAsMjAwOTYsMjA2MDUsMjA3MzYsMjI5MzEsMjM0NTIsMjUxMzUsMjUyMTYsMjU4MzYsMjc0NTAsMjkzNDQsMzAwOTcsMzEwNDcsMzI2ODEsMzQ4MTEsMzU1MTYsMzU2OTYs'@; put 'MjU1MTYsMzM3MzgsMzg4MTYsMjE1MTMsMjE1MDcsMjE5MzEsMjY3MDgsMjcyMjQsMzU0NDAsMzA3NTksMjY0ODUsNDA2NTMsMjEzNjQsMjM0NTgsMzMwNTAsMzQzODQsMzY4NzAsMTk5OTIsMjAwMzcsMjAxNjcsMjAyNDEsMjE0NTAsMjE1NjAsMjM0NzAsMjQzMzksMjQ2MTMsMjU5MzcsMjY0'@; put 'MjksMjc3MTQsMjc3NjIsMjc4NzUsMjg3OTIsMjk2OTksMzEzNTAsMzE0MDYsMzE0OTYsMzIwMjYsMzE5OTgsMzIxMDIsMjYwODcsMjkyNzUsMjE0MzUsMjM2MjEsMjQwNDAsMjUyOTgsMjUzMTIsMjUzNjksMjgxOTIsMzQzOTQsMzUzNzcsMzYzMTcsMzc2MjQsMjg0MTcsMzExNDIsMzk3NzAs'@; put 'MjAxMzYsMjAxMzksMjAxNDAsMjAzNzksMjAzODQsMjA2ODksMjA4MDcsMzE0NzgsMjA4NDksMjA5ODIsMjEzMzIsMjEyODEsMjEzNzUsMjE0ODMsMjE5MzIsMjI2NTksMjM3NzcsMjQzNzUsMjQzOTQsMjQ2MjMsMjQ2NTYsMjQ2ODUsMjUzNzUsMjU5NDUsMjcyMTEsMjc4NDEsMjkzNzgsMjk0'@; put 'MjEsMzA3MDMsMzMwMTYsMzMwMjksMzMyODgsMzQxMjYsMzcxMTEsMzc4NTcsMzg5MTEsMzkyNTUsMzk1MTQsMjAyMDgsMjA5NTcsMjM1OTcsMjYyNDEsMjY5ODksMjM2MTYsMjYzNTQsMjY5OTcsMjk1NzcsMjY3MDQsMzE4NzMsMjA2NzcsMjEyMjAsMjIzNDMsMjQwNjIsMzc2NzAsMjYwMjAs'@; put 'Mjc0MjcsMjc0NTMsMjk3NDgsMzExMDUsMzExNjUsMzE1NjMsMzIyMDIsMzM0NjUsMzM3NDAsMzQ5NDMsMzUxNjcsMzU2NDEsMzY4MTcsMzczMjksMjE1MzUsMzc1MDQsMjAwNjEsMjA1MzQsMjE0NzcsMjEzMDYsMjkzOTksMjk1OTAsMzA2OTcsMzM1MTAsMzY1MjcsMzkzNjYsMzkzNjgsMzkz'@; put 'NzgsMjA4NTUsMjQ4NTgsMzQzOTgsMjE5MzYsMzEzNTQsMjA1OTgsMjM1MDcsMzY5MzUsMzg1MzMsMjAwMTgsMjczNTUsMzczNTEsMjM2MzMsMjM2MjQsMjU0OTYsMzEzOTEsMjc3OTUsMzg3NzIsMzY3MDUsMzE0MDIsMjkwNjYsMzg1MzYsMzE4NzQsMjY2NDcsMzIzNjgsMjY3MDUsMzc3NDAs'@; put 'MjEyMzQsMjE1MzEsMzQyMTksMzUzNDcsMzI2NzYsMzY1NTcsMzcwODksMjEzNTAsMzQ5NTIsMzEwNDEsMjA0MTgsMjA2NzAsMjEwMDksMjA4MDQsMjE4NDMsMjIzMTcsMjk2NzQsMjI0MTEsMjI4NjUsMjQ0MTgsMjQ0NTIsMjQ2OTMsMjQ5NTAsMjQ5MzUsMjUwMDEsMjU1MjIsMjU2NTgsMjU5'@; put 'NjQsMjYyMjMsMjY2OTAsMjgxNzksMzAwNTQsMzEyOTMsMzE5OTUsMzIwNzYsMzIxNTMsMzIzMzEsMzI2MTksMzM1NTAsMzM2MTAsMzQ1MDksMzUzMzYsMzU0MjcsMzU2ODYsMzY2MDUsMzg5MzgsNDAzMzUsMzM0NjQsMzY4MTQsMzk5MTIsMjExMjcsMjUxMTksMjU3MzEsMjg2MDgsMzg1NTMs'@; put 'MjY2ODksMjA2MjUsMjc0MjQsMjc3NzAsMjg1MDAsMzEzNDgsMzIwODAsMzQ4ODAsMzUzNjMsMjYzNzYsMjAyMTQsMjA1MzcsMjA1MTgsMjA1ODEsMjA4NjAsMjEwNDgsMjEwOTEsMjE5MjcsMjIyODcsMjI1MzMsMjMyNDQsMjQzMTQsMjUwMTAsMjUwODAsMjUzMzEsMjU0NTgsMjY5MDgsMjcx'@; put 'NzcsMjkzMDksMjkzNTYsMjk0ODYsMzA3NDAsMzA4MzEsMzIxMjEsMzA0NzYsMzI5MzcsMzUyMTEsMzU2MDksMzYwNjYsMzY1NjIsMzY5NjMsMzc3NDksMzg1MjIsMzg5OTcsMzk0NDMsNDA1NjgsMjA4MDMsMjE0MDcsMjE0MjcsMjQxODcsMjQzNTgsMjgxODcsMjgzMDQsMjk1NzIsMjk2OTQs'@; put 'MzIwNjcsMzMzMzUsMzUzMjgsMzU1NzgsMzg0ODAsMjAwNDYsMjA0OTEsMjE0NzYsMjE2MjgsMjIyNjYsMjI5OTMsMjMzOTYsMjQwNDksMjQyMzUsMjQzNTksMjUxNDQsMjU5MjUsMjY1NDMsMjgyNDYsMjkzOTIsMzE5NDYsMzQ5OTYsMzI5MjksMzI5OTMsMzM3NzYsMzQzODIsMzU0NjMsMzYz'@; put 'MjgsMzc0MzEsMzg1OTksMzkwMTUsNDA3MjMsMjAxMTYsMjAxMTQsMjAyMzcsMjEzMjAsMjE1NzcsMjE1NjYsMjMwODcsMjQ0NjAsMjQ0ODEsMjQ3MzUsMjY3OTEsMjcyNzgsMjk3ODYsMzA4NDksMzU0ODYsMzU0OTIsMzU3MDMsMzcyNjQsMjAwNjIsMzk4ODEsMjAxMzIsMjAzNDgsMjAzOTks'@; put 'MjA1MDUsMjA1MDIsMjA4MDksMjA4NDQsMjExNTEsMjExNzcsMjEyNDYsMjE0MDIsMjE0NzUsMjE1MjEsMjE1MTgsMjE4OTcsMjIzNTMsMjI0MzQsMjI5MDksMjMzODAsMjMzODksMjM0MzksMjQwMzcsMjQwMzksMjQwNTUsMjQxODQsMjQxOTUsMjQyMTgsMjQyNDcsMjQzNDQsMjQ2NTgsMjQ5'@; put 'MDgsMjUyMzksMjUzMDQsMjU1MTEsMjU5MTUsMjYxMTQsMjYxNzksMjYzNTYsMjY0NzcsMjY2NTcsMjY3NzUsMjcwODMsMjc3NDMsMjc5NDYsMjgwMDksMjgyMDcsMjgzMTcsMzAwMDIsMzAzNDMsMzA4MjgsMzEyOTUsMzE5NjgsMzIwMDUsMzIwMjQsMzIwOTQsMzIxNzcsMzI3ODksMzI3NzEs'@; put 'MzI5NDMsMzI5NDUsMzMxMDgsMzMxNjcsMzMzMjIsMzM2MTgsMzQ4OTIsMzQ5MTMsMzU2MTEsMzYwMDIsMzYwOTIsMzcwNjYsMzcyMzcsMzc0ODksMzA3ODMsMzc2MjgsMzgzMDgsMzg0NzcsMzg5MTcsMzkzMjEsMzk2NDAsNDAyNTEsMjEwODMsMjExNjMsMjE0OTUsMjE1MTIsMjI3NDEsMjUz'@; put 'MzUsMjg2NDAsMzU5NDYsMzY3MDMsNDA2MzMsMjA4MTEsMjEwNTEsMjE1NzgsMjIyNjksMzEyOTYsMzcyMzksNDAyODgsNDA2NTgsMjk1MDgsMjg0MjUsMzMxMzYsMjk5NjksMjQ1NzMsMjQ3OTQsMzk1OTIsMjk0MDMsMzY3OTYsMjc0OTIsMzg5MTUsMjAxNzAsMjIyNTYsMjIzNzIsMjI3MTgs'@; put 'MjMxMzAsMjQ2ODAsMjUwMzEsMjYxMjcsMjYxMTgsMjY2ODEsMjY4MDEsMjgxNTEsMzAxNjUsMzIwNTgsMzMzOTAsMzk3NDYsMjAxMjMsMjAzMDQsMjE0NDksMjE3NjYsMjM5MTksMjQwMzgsMjQwNDYsMjY2MTksMjc4MDEsMjk4MTEsMzA3MjIsMzU0MDgsMzc3ODIsMzUwMzksMjIzNTIsMjQy'@; put 'MzEsMjUzODcsMjA2NjEsMjA2NTIsMjA4NzcsMjYzNjgsMjE3MDUsMjI2MjIsMjI5NzEsMjM0NzIsMjQ0MjUsMjUxNjUsMjU1MDUsMjY2ODUsMjc1MDcsMjgxNjgsMjg3OTcsMzczMTksMjkzMTIsMzA3NDEsMzA3NTgsMzEwODUsMjU5OTgsMzIwNDgsMzM3NTYsMzUwMDksMzY2MTcsMzg1NTUs'@; put 'MjEwOTIsMjIzMTIsMjY0NDgsMzI2MTgsMzYwMDEsMjA5MTYsMjIzMzgsMzg0NDIsMjI1ODYsMjcwMTgsMzI5NDgsMjE2ODIsMjM4MjIsMjI1MjQsMzA4NjksNDA0NDIsMjAzMTYsMjEwNjYsMjE2NDMsMjU2NjIsMjYxNTIsMjYzODgsMjY2MTMsMzEzNjQsMzE1NzQsMzIwMzQsMzc2NzksMjY3'@; put 'MTYsMzk4NTMsMzE1NDUsMjEyNzMsMjA4NzQsMjEwNDcsMjM1MTksMjUzMzQsMjU3NzQsMjU4MzAsMjY0MTMsMjc1NzgsMzQyMTcsMzg2MDksMzAzNTIsMzk4OTQsMjU0MjAsMzc2MzgsMzk4NTEsMzAzOTksMjYxOTQsMTk5NzcsMjA2MzIsMjE0NDIsMjM2NjUsMjQ4MDgsMjU3NDYsMjU5NTUs'@; put 'MjY3MTksMjkxNTgsMjk2NDIsMjk5ODcsMzE2MzksMzIzODYsMzQ0NTMsMzU3MTUsMzYwNTksMzcyNDAsMzkxODQsMjYwMjgsMjYyODMsMjc1MzEsMjAxODEsMjAxODAsMjAyODIsMjAzNTEsMjEwNTAsMjE0OTYsMjE0OTAsMjE5ODcsMjIyMzUsMjI3NjMsMjI5ODcsMjI5ODUsMjMwMzksMjMz'@; put 'NzYsMjM2MjksMjQwNjYsMjQxMDcsMjQ1MzUsMjQ2MDUsMjUzNTEsMjU5MDMsMjMzODgsMjYwMzEsMjYwNDUsMjYwODgsMjY1MjUsMjc0OTAsMjc1MTUsMjc2NjMsMjk1MDksMzEwNDksMzExNjksMzE5OTIsMzIwMjUsMzIwNDMsMzI5MzAsMzMwMjYsMzMyNjcsMzUyMjIsMzU0MjIsMzU0MzMs'@; put 'MzU0MzAsMzU0NjgsMzU1NjYsMzYwMzksMzYwNjAsMzg2MDQsMzkxNjQsMjc1MDMsMjAxMDcsMjAyODQsMjAzNjUsMjA4MTYsMjMzODMsMjM1NDYsMjQ5MDQsMjUzNDUsMjYxNzgsMjc0MjUsMjgzNjMsMjc4MzUsMjkyNDYsMjk4ODUsMzAxNjQsMzA5MTMsMzEwMzQsMzI3ODAsMzI4MTksMzMy'@; put 'NTgsMzM5NDAsMzY3NjYsMjc3MjgsNDA1NzUsMjQzMzUsMzU2NzIsNDAyMzUsMzE0ODIsMzY2MDAsMjM0MzcsMzg2MzUsMTk5NzEsMjE0ODksMjI1MTksMjI4MzMsMjMyNDEsMjM0NjAsMjQ3MTMsMjgyODcsMjg0MjIsMzAxNDIsMzYwNzQsMjM0NTUsMzQwNDgsMzE3MTIsMjA1OTQsMjY2MTIs'@; put 'MzM0MzcsMjM2NDksMzQxMjIsMzIyODYsMzMyOTQsMjA4ODksMjM1NTYsMjU0NDgsMzYxOTgsMjYwMTIsMjkwMzgsMzEwMzgsMzIwMjMsMzI3NzMsMzU2MTMsMzY1NTQsMzY5NzQsMzQ1MDMsMzcwMzQsMjA1MTEsMjEyNDIsMjM2MTAsMjY0NTEsMjg3OTYsMjkyMzcsMzcxOTYsMzczMjAsMzc2'@; put 'NzUsMzM1MDksMjM0OTAsMjQzNjksMjQ4MjUsMjAwMjcsMjE0NjIsMjM0MzIsMjUxNjMsMjY0MTcsMjc1MzAsMjk0MTcsMjk2NjQsMzEyNzgsMzMxMzEsMzYyNTksMzcyMDIsMzkzMTgsMjA3NTQsMjE0NjMsMjE2MTAsMjM1NTEsMjU0ODAsMjcxOTMsMzIxNzIsMzg2NTYsMjIyMzQsMjE0NTQs'@; put 'MjE2MDgsMjM0NDcsMjM2MDEsMjQwMzAsMjA0NjIsMjQ4MzMsMjUzNDIsMjc5NTQsMzExNjgsMzExNzksMzIwNjYsMzIzMzMsMzI3MjIsMzMyNjEsMzMzMTEsMzM5MzYsMzQ4ODYsMzUxODYsMzU3MjgsMzY0NjgsMzY2NTUsMzY5MTMsMzcxOTUsMzcyMjgsMzg1OTgsMzcyNzYsMjAxNjAsMjAz'@; put 'MDMsMjA4MDUsMjEzMTMsMjQ0NjcsMjUxMDIsMjY1ODAsMjc3MTMsMjgxNzEsMjk1MzksMzIyOTQsMzczMjUsMzc1MDcsMjE0NjAsMjI4MDksMjM0ODcsMjgxMTMsMzEwNjksMzIzMDIsMzE4OTksMjI2NTQsMjkwODcsMjA5ODYsMzQ4OTksMzY4NDgsMjA0MjYsMjM4MDMsMjYxNDksMzA2MzYs'@; put 'MzE0NTksMzMzMDgsMzk0MjMsMjA5MzQsMjQ0OTAsMjYwOTIsMjY5OTEsMjc1MjksMjgxNDcsMjgzMTAsMjg1MTYsMzA0NjIsMzIwMjAsMjQwMzMsMzY5ODEsMzcyNTUsMzg5MTgsMjA5NjYsMjEwMjEsMjUxNTIsMjYyNTcsMjYzMjksMjgxODYsMjQyNDYsMzIyMTAsMzI2MjYsMjYzNjAsMzQy'@; put 'MjMsMzQyOTUsMzU1NzYsMjExNjEsMjE0NjUsMjI4OTksMjQyMDcsMjQ0NjQsMjQ2NjEsMzc2MDQsMzg1MDAsMjA2NjMsMjA3NjcsMjEyMTMsMjEyODAsMjEzMTksMjE0ODQsMjE3MzYsMjE4MzAsMjE4MDksMjIwMzksMjI4ODgsMjI5NzQsMjMxMDAsMjM0NzcsMjM1NTgsMjM1NjcsMjM1Njks'@; put 'MjM1NzgsMjQxOTYsMjQyMDIsMjQyODgsMjQ0MzIsMjUyMTUsMjUyMjAsMjUzMDcsMjU0ODQsMjU0NjMsMjYxMTksMjYxMjQsMjYxNTcsMjYyMzAsMjY0OTQsMjY3ODYsMjcxNjcsMjcxODksMjc4MzYsMjgwNDAsMjgxNjksMjgyNDgsMjg5ODgsMjg5NjYsMjkwMzEsMzAxNTEsMzA0NjUsMzA4'@; put 'MTMsMzA5NzcsMzEwNzcsMzEyMTYsMzE0NTYsMzE1MDUsMzE5MTEsMzIwNTcsMzI5MTgsMzM3NTAsMzM5MzEsMzQxMjEsMzQ5MDksMzUwNTksMzUzNTksMzUzODgsMzU0MTIsMzU0NDMsMzU5MzcsMzYwNjIsMzcyODQsMzc0NzgsMzc3NTgsMzc5MTIsMzg1NTYsMzg4MDgsMTk5NzgsMTk5NzYs'@; put 'MTk5OTgsMjAwNTUsMjA4ODcsMjExMDQsMjI0NzgsMjI1ODAsMjI3MzIsMjMzMzAsMjQxMjAsMjQ3NzMsMjU4NTQsMjY0NjUsMjY0NTQsMjc5NzIsMjkzNjYsMzAwNjcsMzEzMzEsMzM5NzYsMzU2OTgsMzczMDQsMzc2NjQsMjIwNjUsMjI1MTYsMzkxNjYsMjUzMjUsMjY4OTMsMjc1NDIsMjkx'@; put 'NjUsMzIzNDAsMzI4ODcsMzMzOTQsMzUzMDIsMzkxMzUsMzQ2NDUsMzY3ODUsMjM2MTEsMjAyODAsMjA0NDksMjA0MDUsMjE3NjcsMjMwNzIsMjM1MTcsMjM1MjksMjQ1MTUsMjQ5MTAsMjUzOTEsMjYwMzIsMjYxODcsMjY4NjIsMjcwMzUsMjgwMjQsMjgxNDUsMzAwMDMsMzAxMzcsMzA0OTUs'@; put 'MzEwNzAsMzEyMDYsMzIwNTEsMzMyNTEsMzM0NTUsMzQyMTgsMzUyNDIsMzUzODYsMzY1MjMsMzY3NjMsMzY5MTQsMzczNDEsMzg2NjMsMjAxNTQsMjAxNjEsMjA5OTUsMjI2NDUsMjI3NjQsMjM1NjMsMjk5NzgsMjM2MTMsMzMxMDIsMzUzMzgsMzY4MDUsMzg0OTksMzg3NjUsMzE1MjUsMzU1'@; put 'MzUsMzg5MjAsMzcyMTgsMjIyNTksMjE0MTYsMzY4ODcsMjE1NjEsMjI0MDIsMjQxMDEsMjU1MTIsMjc3MDAsMjg4MTAsMzA1NjEsMzE4ODMsMzI3MzYsMzQ5MjgsMzY5MzAsMzcyMDQsMzc2NDgsMzc2NTYsMzg1NDMsMjk3OTAsMzk2MjAsMjM4MTUsMjM5MTMsMjU5NjgsMjY1MzAsMzYyNjQs'@; put 'Mzg2MTksMjU0NTQsMjY0NDEsMjY5MDUsMzM3MzMsMzg5MzUsMzg1OTIsMzUwNzAsMjg1NDgsMjU3MjIsMjM1NDQsMTk5OTAsMjg3MTYsMzAwNDUsMjYxNTksMjA5MzIsMjEwNDYsMjEyMTgsMjI5OTUsMjQ0NDksMjQ2MTUsMjUxMDQsMjU5MTksMjU5NzIsMjYxNDMsMjYyMjgsMjY4NjYsMjY2'@; put 'NDYsMjc0OTEsMjgxNjUsMjkyOTgsMjk5ODMsMzA0MjcsMzE5MzQsMzI4NTQsMjI3NjgsMzUwNjksMzUxOTksMzU0ODgsMzU0NzUsMzU1MzEsMzY4OTMsMzcyNjYsMzg3MzgsMzg3NDUsMjU5OTMsMzEyNDYsMzMwMzAsMzg1ODcsMjQxMDksMjQ3OTYsMjUxMTQsMjYwMjEsMjYxMzIsMjY1MTIs'@; put 'MzA3MDcsMzEzMDksMzE4MjEsMzIzMTgsMzMwMzQsMzYwMTIsMzYxOTYsMzYzMjEsMzY0NDcsMzA4ODksMjA5OTksMjUzMDUsMjU1MDksMjU2NjYsMjUyNDAsMzUzNzMsMzEzNjMsMzE2ODAsMzU1MDAsMzg2MzQsMzIxMTgsMzMyOTIsMzQ2MzMsMjAxODUsMjA4MDgsMjEzMTUsMjEzNDQsMjM0'@; put 'NTksMjM1NTQsMjM1NzQsMjQwMjksMjUxMjYsMjUxNTksMjU3NzYsMjY2NDMsMjY2NzYsMjc4NDksMjc5NzMsMjc5MjcsMjY1NzksMjg1MDgsMjkwMDYsMjkwNTMsMjYwNTksMzEzNTksMzE2NjEsMzIyMTgsMzIzMzAsMzI2ODAsMzMxNDYsMzMzMDcsMzMzMzcsMzQyMTQsMzU0MzgsMzYwNDYs'@; put 'MzYzNDEsMzY5ODQsMzY5ODMsMzc1NDksMzc1MjEsMzgyNzUsMzk4NTQsMjEwNjksMjE4OTIsMjg0NzIsMjg5ODIsMjA4NDAsMzExMDksMzIzNDEsMzMyMDMsMzE5NTAsMjIwOTIsMjI2MDksMjM3MjAsMjU1MTQsMjYzNjYsMjYzNjUsMjY5NzAsMjk0MDEsMzAwOTUsMzAwOTQsMzA5OTAsMzEw'@; put 'NjIsMzExOTksMzE4OTUsMzIwMzIsMzIwNjgsMzQzMTEsMzUzODAsMzg0NTksMzY5NjEsNDA3MzYsMjA3MTEsMjExMDksMjE0NTIsMjE0NzQsMjA0ODksMjE5MzAsMjI3NjYsMjI4NjMsMjkyNDUsMjM0MzUsMjM2NTIsMjEyNzcsMjQ4MDMsMjQ4MTksMjU0MzYsMjU0NzUsMjU0MDcsMjU1MzEs'@; put 'MjU4MDUsMjYwODksMjYzNjEsMjQwMzUsMjcwODUsMjcxMzMsMjg0MzcsMjkxNTcsMjAxMDUsMzAxODUsMzA0NTYsMzEzNzksMzE5NjcsMzIyMDcsMzIxNTYsMzI4NjUsMzM2MDksMzM2MjQsMzM5MDAsMzM5ODAsMzQyOTksMzUwMTMsMzYyMDgsMzY4NjUsMzY5NzMsMzc3ODMsMzg2ODQsMzk0'@; put 'NDIsMjA2ODcsMjI2NzksMjQ5NzQsMzMyMzUsMzQxMDEsMzYxMDQsMzY4OTYsMjA0MTksMjA1OTYsMjEwNjMsMjEzNjMsMjQ2ODcsMjU0MTcsMjY0NjMsMjgyMDQsMzYyNzUsMzY4OTUsMjA0MzksMjM2NDYsMzYwNDIsMjYwNjMsMzIxNTQsMjEzMzAsMzQ5NjYsMjA4NTQsMjU1MzksMjMzODQs'@; put 'MjM0MDMsMjM1NjIsMjU2MTMsMjY0NDksMzY5NTYsMjAxODIsMjI4MTAsMjI4MjYsMjc3NjAsMzU0MDksMjE4MjIsMjI1NDksMjI5NDksMjQ4MTYsMjUxNzEsMjY1NjEsMzMzMzMsMjY5NjUsMzg0NjQsMzkzNjQsMzk0NjQsMjAzMDcsMjI1MzQsMjM1NTAsMzI3ODQsMjM3MjksMjQxMTEsMjQ0'@; put 'NTMsMjQ2MDgsMjQ5MDcsMjUxNDAsMjYzNjcsMjc4ODgsMjgzODIsMzI5NzQsMzMxNTEsMzM0OTIsMzQ5NTUsMzYwMjQsMzY4NjQsMzY5MTAsMzg1MzgsNDA2NjcsMzk4OTksMjAxOTUsMjE0ODgsMjI4MjMsMzE1MzIsMzcyNjEsMzg5ODgsNDA0NDEsMjgzODEsMjg3MTEsMjEzMzEsMjE4Mjgs'@; put 'MjM0MjksMjUxNzYsMjUyNDYsMjUyOTksMjc4MTAsMjg2NTUsMjk3MzAsMzUzNTEsMzc5NDQsMjg2MDksMzU1ODIsMzM1OTIsMjA5NjcsMzQ1NTIsMjE0ODIsMjE0ODEsMjAyOTQsMzY5NDgsMzY3ODQsMjI4OTAsMzMwNzMsMjQwNjEsMzE0NjYsMzY3OTksMjY4NDIsMzU4OTUsMjk0MzIsNDAw'@; put 'MDgsMjcxOTcsMzU1MDQsMjAwMjUsMjEzMzYsMjIwMjIsMjIzNzQsMjUyODUsMjU1MDYsMjYwODYsMjc0NzAsMjgxMjksMjgyNTEsMjg4NDUsMzA3MDEsMzE0NzEsMzE2NTgsMzIxODcsMzI4MjksMzI5NjYsMzQ1MDcsMzU0NzcsMzc3MjMsMjIyNDMsMjI3MjcsMjQzODIsMjYwMjksMjYyNjIs'@; put 'MjcyNjQsMjc1NzMsMzAwMDcsMzU1MjcsMjA1MTYsMzA2OTMsMjIzMjAsMjQzNDcsMjQ2NzcsMjYyMzQsMjc3NDQsMzAxOTYsMzEyNTgsMzI2MjIsMzMyNjgsMzQ1ODQsMzY5MzMsMzkzNDcsMzE2ODksMzAwNDQsMzE0ODEsMzE1NjksMzM5ODgsMzY4ODAsMzEyMDksMzEzNzgsMzM1OTAsMjMy'@; put 'NjUsMzA1MjgsMjAwMTMsMjAyMTAsMjM0NDksMjQ1NDQsMjUyNzcsMjYxNzIsMjY2MDksMjc4ODAsMzQ0MTEsMzQ5MzUsMzUzODcsMzcxOTgsMzc2MTksMzkzNzYsMjcxNTksMjg3MTAsMjk0ODIsMzM1MTEsMzM4NzksMzYwMTUsMTk5NjksMjA4MDYsMjA5MzksMjE4OTksMjM1NDEsMjQwODYs'@; put 'MjQxMTUsMjQxOTMsMjQzNDAsMjQzNzMsMjQ0MjcsMjQ1MDAsMjUwNzQsMjUzNjEsMjYyNzQsMjYzOTcsMjg1MjYsMjkyNjYsMzAwMTAsMzA1MjIsMzI4ODQsMzMwODEsMzMxNDQsMzQ2NzgsMzU1MTksMzU1NDgsMzYyMjksMzYzMzksMzc1MzAsMzgyNjMsMzg5MTQsNDAxNjUsMjExODksMjU0'@; put 'MzEsMzA0NTIsMjYzODksMjc3ODQsMjk2NDUsMzYwMzUsMzc4MDYsMzg1MTUsMjc5NDEsMjI2ODQsMjY4OTQsMjcwODQsMzY4NjEsMzc3ODYsMzAxNzEsMzY4OTAsMjI2MTgsMjY2MjYsMjU1MjQsMjcxMzEsMjAyOTEsMjg0NjAsMjY1ODQsMzY3OTUsMzQwODYsMzIxODAsMzc3MTYsMjY5NDMs'@; put 'Mjg1MjgsMjIzNzgsMjI3NzUsMjMzNDAsMzIwNDQsMjkyMjYsMjE1MTQsMzczNDcsNDAzNzIsMjAxNDEsMjAzMDIsMjA1NzIsMjA1OTcsMjEwNTksMzU5OTgsMjE1NzYsMjI1NjQsMjM0NTAsMjQwOTMsMjQyMTMsMjQyMzcsMjQzMTEsMjQzNTEsMjQ3MTYsMjUyNjksMjU0MDIsMjU1NTIsMjY3'@; put 'OTksMjc3MTIsMzA4NTUsMzExMTgsMzEyNDMsMzIyMjQsMzMzNTEsMzUzMzAsMzU1NTgsMzY0MjAsMzY4ODMsMzcwNDgsMzcxNjUsMzczMzYsNDA3MTgsMjc4NzcsMjU2ODgsMjU4MjYsMjU5NzMsMjg0MDQsMzAzNDAsMzE1MTUsMzY5NjksMzc4NDEsMjgzNDYsMjE3NDYsMjQ1MDUsMjU3NjQs'@; put 'MzY2ODUsMzY4NDUsMzc0NDQsMjA4NTYsMjI2MzUsMjI4MjUsMjM2MzcsMjQyMTUsMjgxNTUsMzIzOTksMjk5ODAsMzYwMjgsMzY1NzgsMzkwMDMsMjg4NTcsMjAyNTMsMjc1ODMsMjg1OTMsM2U0LDM4NjUxLDIwODE0LDIxNTIwLDIyNTgxLDIyNjE1LDIyOTU2LDIzNjQ4LDI0NDY2LDI2MDA3'@; put 'LDI2NDYwLDI4MTkzLDMwMzMxLDMzNzU5LDM2MDc3LDM2ODg0LDM3MTE3LDM3NzA5LDMwNzU3LDMwNzc4LDIxMTYyLDI0MjMwLDIyMzAzLDIyOTAwLDI0NTk0LDIwNDk4LDIwODI2LDIwOTA4LDIwOTQxLDIwOTkyLDIxNzc2LDIyNjEyLDIyNjE2LDIyODcxLDIzNDQ1LDIzNzk4LDIzOTQ3LDI0'@; put 'NzY0LDI1MjM3LDI1NjQ1LDI2NDgxLDI2NjkxLDI2ODEyLDI2ODQ3LDMwNDIzLDI4MTIwLDI4MjcxLDI4MDU5LDI4NzgzLDI5MTI4LDI0NDAzLDMwMTY4LDMxMDk1LDMxNTYxLDMxNTcyLDMxNTcwLDMxOTU4LDMyMTEzLDIxMDQwLDMzODkxLDM0MTUzLDM0Mjc2LDM1MzQyLDM1NTg4LDM1OTEw'@; put 'LDM2MzY3LDM2ODY3LDM2ODc5LDM3OTEzLDM4NTE4LDM4OTU3LDM5NDcyLDM4MzYwLDIwNjg1LDIxMjA1LDIxNTE2LDIyNTMwLDIzNTY2LDI0OTk5LDI1NzU4LDI3OTM0LDMwNjQzLDMxNDYxLDMzMDEyLDMzNzk2LDM2OTQ3LDM3NTA5LDIzNzc2LDQwMTk5LDIxMzExLDI0NDcxLDI0NDk5LDI4'@; put 'MDYwLDI5MzA1LDMwNTYzLDMxMTY3LDMxNzE2LDI3NjAyLDI5NDIwLDM1NTAxLDI2NjI3LDI3MjMzLDIwOTg0LDMxMzYxLDI2OTMyLDIzNjI2LDQwMTgyLDMzNTE1LDIzNDkzLDM3MTkzLDI4NzAyLDIyMTM2LDIzNjYzLDI0Nzc1LDI1OTU4LDI3Nzg4LDM1OTMwLDM2OTI5LDM4OTMxLDIxNTg1'@; put 'LDI2MzExLDM3Mzg5LDIyODU2LDM3MDI3LDIwODY5LDIwMDQ1LDIwOTcwLDM0MjAxLDM1NTk4LDI4NzYwLDI1NDY2LDM3NzA3LDI2OTc4LDM5MzQ4LDMyMjYwLDMwMDcxLDIxMzM1LDI2OTc2LDM2NTc1LDM4NjI3LDI3NzQxLDIwMTA4LDIzNjEyLDI0MzM2LDM2ODQxLDIxMjUwLDM2MDQ5LDMy'@; put 'OTA1LDM0NDI1LDI0MzE5LDI2MDg1LDIwMDgzLDIwODM3LDIyOTE0LDIzNjE1LDM4ODk0LDIwMjE5LDIyOTIyLDI0NTI1LDM1NDY5LDI4NjQxLDMxMTUyLDMxMDc0LDIzNTI3LDMzOTA1LDI5NDgzLDI5MTA1LDI0MTgwLDI0NTY1LDI1NDY3LDI1NzU0LDI5MTIzLDMxODk2LDIwMDM1LDI0MzE2'@; put 'LDIwMDQzLDIyNDkyLDIyMTc4LDI0NzQ1LDI4NjExLDMyMDEzLDMzMDIxLDMzMDc1LDMzMjE1LDM2Nzg2LDM1MjIzLDM0NDY4LDI0MDUyLDI1MjI2LDI1NzczLDM1MjA3LDI2NDg3LDI3ODc0LDI3OTY2LDI5NzUwLDMwNzcyLDIzMTEwLDMyNjI5LDMzNDUzLDM5MzQwLDIwNDY3LDI0MjU5LDI1'@; put 'MzA5LDI1NDkwLDI1OTQzLDI2NDc5LDMwNDAzLDI5MjYwLDMyOTcyLDMyOTU0LDM2NjQ5LDM3MTk3LDIwNDkzLDIyNTIxLDIzMTg2LDI2NzU3LDI2OTk1LDI5MDI4LDI5NDM3LDM2MDIzLDIyNzcwLDM2MDY0LDM4NTA2LDM2ODg5LDM0Njg3LDMxMjA0LDMwNjk1LDMzODMzLDIwMjcxLDIxMDkz'@; put 'LDIxMzM4LDI1MjkzLDI2NTc1LDI3ODUwLDMwMzMzLDMxNjM2LDMxODkzLDMzMzM0LDM0MTgwLDM2ODQzLDI2MzMzLDI4NDQ4LDI5MTkwLDMyMjgzLDMzNzA3LDM5MzYxLDQwNjE0LDIwOTg5LDMxNjY1LDMwODM0LDMxNjcyLDMyOTAzLDMxNTYwLDI3MzY4LDI0MTYxLDMyOTA4LDMwMDMzLDMw'@; put 'MDQ4LDIwODQzLDM3NDc0LDI4MzAwLDMwMzMwLDM3MjcxLDM5NjU4LDIwMjQwLDMyNjI0LDI1MjQ0LDMxNTY3LDM4MzA5LDQwMTY5LDIyMTM4LDIyNjE3LDM0NTMyLDM4NTg4LDIwMjc2LDIxMDI4LDIxMzIyLDIxNDUzLDIxNDY3LDI0MDcwLDI1NjQ0LDI2MDAxLDI2NDk1LDI3NzEwLDI3NzI2'@; put 'LDI5MjU2LDI5MzU5LDI5Njc3LDMwMDM2LDMyMzIxLDMzMzI0LDM0MjgxLDM2MDA5LDMxNjg0LDM3MzE4LDI5MDMzLDM4OTMwLDM5MTUxLDI1NDA1LDI2MjE3LDMwMDU4LDMwNDM2LDMwOTI4LDM0MTE1LDM0NTQyLDIxMjkwLDIxMzI5LDIxNTQyLDIyOTE1LDI0MTk5LDI0NDQ0LDI0NzU0LDI1'@; put 'MTYxLDI1MjA5LDI1MjU5LDI2ZTMsMjc2MDQsMjc4NTIsMzAxMzAsMzAzODIsMzA4NjUsMzExOTIsMzIyMDMsMzI2MzEsMzI5MzMsMzQ5ODcsMzU1MTMsMzYwMjcsMzY5OTEsMzg3NTAsMzkxMzEsMjcxNDcsMzE4MDAsMjA2MzMsMjM2MTQsMjQ0OTQsMjY1MDMsMjc2MDgsMjk3NDksMzA0NzMs'@; put 'MzI2NTQsNDA3NjMsMjY1NzAsMzEyNTUsMjEzMDUsMzAwOTEsMzk2NjEsMjQ0MjIsMzMxODEsMzM3NzcsMzI5MjAsMjQzODAsMjQ1MTcsMzAwNTAsMzE1NTgsMzY5MjQsMjY3MjcsMjMwMTksMjMxOTUsMzIwMTYsMzAzMzQsMzU2MjgsMjA0NjksMjQ0MjYsMjcxNjEsMjc3MDMsMjg0MTgsMjk5'@; put 'MjIsMzEwODAsMzQ5MjAsMzU0MTMsMzU5NjEsMjQyODcsMjU1NTEsMzAxNDksMzExODYsMzM0OTUsMzc2NzIsMzc2MTgsMzM5NDgsMzQ1NDEsMzk5ODEsMjE2OTcsMjQ0MjgsMjU5OTYsMjc5OTYsMjg2OTMsMzYwMDcsMzYwNTEsMzg5NzEsMjU5MzUsMjk5NDIsMTk5ODEsMjAxODQsMjI0OTYs'@; put 'MjI4MjcsMjMxNDIsMjM1MDAsMjA5MDQsMjQwNjcsMjQyMjAsMjQ1OTgsMjUyMDYsMjU5NzUsMjYwMjMsMjYyMjIsMjgwMTQsMjkyMzgsMzE1MjYsMzMxMDQsMzMxNzgsMzM0MzMsMzU2NzYsMzZlMywzNjA3MCwzNjIxMiwzODQyOCwzODQ2OCwyMDM5OCwyNTc3MSwyNzQ5NCwzMzMxMCwzMzg4'@; put 'OSwzNDE1NCwzNzA5NiwyMzU1MywyNjk2MywzOTA4MCwzMzkxNCwzNDEzNSwyMDIzOSwyMTEwMywyNDQ4OSwyNDEzMywyNjM4MSwzMTExOSwzMzE0NSwzNTA3OSwzNTIwNiwyODE0OSwyNDM0MywyNTE3MywyNzgzMiwyMDE3NSwyOTI4OSwzOTgyNiwyMDk5OCwyMTU2MywyMjEzMiwyMjcwNywy'@; put 'NDk5NiwyNTE5OCwyODk1NCwyMjg5NCwzMTg4MSwzMTk2NiwzMjAyNywzODY0MCwyNTk5MSwzMjg2MiwxOTk5MywyMDM0MSwyMDg1MywyMjU5MiwyNDE2MywyNDE3OSwyNDMzMCwyNjU2NCwyMDAwNiwzNDEwOSwzODI4MSwzODQ5MSwzMTg1OSwzODkxMywyMDczMSwyMjcyMSwzMDI5NCwzMDg4'@; put 'NywyMTAyOSwzMDYyOSwzNDA2NSwzMTYyMiwyMDU1OSwyMjc5MywyOTI1NSwzMTY4NywzMjIzMiwzNjc5NCwzNjgyMCwzNjk0MSwyMDQxNSwyMTE5MywyMzA4MSwyNDMyMSwzODgyOSwyMDQ0NSwzMzMwMywzNzYxMCwyMjI3NSwyNTQyOSwyNzQ5NywyOTk5NSwzNTAzNiwzNjYyOCwzMTI5OCwy'@; put 'MTIxNSwyMjY3NSwyNDkxNywyNTA5OCwyNjI4NiwyNzU5NywzMTgwNywzMzc2OSwyMDUxNSwyMDQ3MiwyMTI1MywyMTU3NCwyMjU3NywyMjg1NywyMzQ1MywyMzc5MiwyMzc5MSwyMzg0OSwyNDIxNCwyNTI2NSwyNTQ0NywyNTkxOCwyNjA0MSwyNjM3OSwyNzg2MSwyNzg3MywyODkyMSwzMDc3'@; put 'MCwzMjI5OSwzMjk5MCwzMzQ1OSwzMzgwNCwzNDAyOCwzNDU2MiwzNTA5MCwzNTM3MCwzNTkxNCwzNzAzMCwzNzU4NiwzOTE2NSw0MDE3OSw0MDMwMCwyMDA0NywyMDEyOSwyMDYyMSwyMTA3OCwyMjM0NiwyMjk1MiwyNDEyNSwyNDUzNiwyNDUzNywyNTE1MSwyNjI5MiwyNjM5NSwyNjU3Niwy'@; put 'NjgzNCwyMDg4MiwzMjAzMywzMjkzOCwzMzE5MiwzNTU4NCwzNTk4MCwzNjAzMSwzNzUwMiwzODQ1MCwyMTUzNiwzODk1NiwyMTI3MSwyMDY5MywyMTM0MCwyMjY5NiwyNTc3OCwyNjQyMCwyOTI4NywzMDU2NiwzMTMwMiwzNzM1MCwyMTE4NywyNzgwOSwyNzUyNiwyMjUyOCwyNDE0MCwyMjg2'@; put 'OCwyNjQxMiwzMjc2MywyMDk2MSwzMDQwNiwyNTcwNSwzMDk1MiwzOTc2NCw0MDYzNSwyMjQ3NSwyMjk2OSwyNjE1MSwyNjUyMiwyNzU5OCwyMTczNywyNzA5NywyNDE0OSwzMzE4MCwyNjUxNywzOTg1MCwyNjYyMiw0MDAxOCwyNjcxNywyMDEzNCwyMDQ1MSwyMTQ0OCwyNTI3MywyNjQxMSwy'@; put 'NzgxOSwzNjgwNCwyMDM5NywzMjM2NSw0MDYzOSwxOTk3NSwyNDkzMCwyODI4OCwyODQ1OSwzNDA2NywyMTYxOSwyNjQxMCwzOTc0OSwyNDA1MSwzMTYzNywyMzcyNCwyMzQ5NCwzNDU4OCwyODIzNCwzNDAwMSwzMTI1MiwzMzAzMiwyMjkzNywzMTg4NSwyNzY2NSwzMDQ5NiwyMTIwOSwyMjgx'@; put 'OCwyODk2MSwyOTI3OSwzMDY4MywzODY5NSw0MDI4OSwyNjg5MSwyMzE2NywyMzA2NCwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwzMDQzMSwzNjg1NSwzNzUyOCw0MDE4MCwyMzAxOCwyOTI3NywyODM1NywyMDgxMywyNjgyNSwzMjE5MSwzMjIzNiwzODc1NCw0MDYzNCwyNTcyMCwyNzE2OSwz'@; put 'MzUzOCwyMjkxNiwyMzM5MSwyNzYxMSwyOTQ2NywzMDQ1MCwzMjE3OCwzMjc5MSwzMzk0NSwyMDc4NiwyNjQwOCw0MDY2NSwzMDQ0NiwyNjQ2NiwyMTI0NywzOTE3MywyMzU4OCwyNTE0NywzMTg3MCwzNjAxNiwyMTgzOSwyNDc1OCwzMjAxMSwzODI3MiwyMTI0OSwyMDA2MywyMDkxOCwyMjgx'@; put 'MiwyOTI0MiwzMjgyMiwzNzMyNiwyNDM1NywzMDY5MCwyMTM4MCwyNDQ0MSwzMjAwNCwzNDIyMCwzNTM3OSwzNjQ5MywzODc0MiwyNjYxMSwzNDIyMiwzNzk3MSwyNDg0MSwyNDg0MCwyNzgzMywzMDI5MCwzNTU2NSwzNjY2NCwyMTgwNywyMDMwNSwyMDc3OCwyMTE5MSwyMTQ1MSwyMzQ2MSwy'@; put 'NDE4OSwyNDczNiwyNDk2MiwyNTU1OCwyNjM3NywyNjU4NiwyODI2MywyODA0NCwyOTQ5NCwyOTQ5NSwzMDAwMSwzMTA1NiwzNTAyOSwzNTQ4MCwzNjkzOCwzNzAwOSwzNzEwOSwzODU5NiwzNDcwMSwyMjgwNSwyMDEwNCwyMDMxMywxOTk4MiwzNTQ2NSwzNjY3MSwzODkyOCwyMDY1MywyNDE4'@; put 'OCwyMjkzNCwyMzQ4MSwyNDI0OCwyNTU2MiwyNTU5NCwyNTc5MywyNjMzMiwyNjk1NCwyNzA5NiwyNzkxNSwyODM0MiwyOTA3NiwyOTk5MiwzMTQwNywzMjY1MCwzMjc2OCwzMzg2NSwzMzk5MywzNTIwMSwzNTYxNywzNjM2MiwzNjk2NSwzODUyNSwzOTE3OCwyNDk1OCwyNTIzMywyNzQ0Miwy'@; put 'Nzc3OSwyODAyMCwzMjcxNiwzMjc2NCwyODA5NiwzMjY0NSwzNDc0NiwzNTA2NCwyNjQ2OSwzMzcxMywzODk3MiwzODY0NywyNzkzMSwzMjA5NywzMzg1MywzNzIyNiwyMDA4MSwyMTM2NSwyMzg4OCwyNzM5NiwyODY1MSwzNDI1MywzNDM0OSwzNTIzOSwyMTAzMywyMTUxOSwyMzY1MywyNjQ0'@; put 'NiwyNjc5MiwyOTcwMiwyOTgyNywzMDE3OCwzNTAyMywzNTA0MSwzNzMyNCwzODYyNiwzODUyMCwyNDQ1OSwyOTU3NSwzMTQzNSwzMzg3MCwyNTUwNCwzMDA1MywyMTEyOSwyNzk2OSwyODMxNiwyOTcwNSwzMDA0MSwzMDgyNywzMTg5MCwzODUzNCwzMTQ1Miw0MDg0NSwyMDQwNiwyNDk0Miwy'@; put 'NjA1MywzNDM5NiwyMDEwMiwyMDE0MiwyMDY5OCwyMDAwMSwyMDk0MCwyMzUzNCwyNjAwOSwyNjc1MywyODA5MiwyOTQ3MSwzMDI3NCwzMDYzNywzMTI2MCwzMTk3NSwzMzM5MSwzNTUzOCwzNjk4OCwzNzMyNywzODUxNywzODkzNiwyMTE0NywzMjIwOSwyMDUyMywyMTQwMCwyNjUxOSwyODEw'@; put 'NywyOTEzNiwyOTc0NywzMzI1NiwzNjY1MCwzODU2Myw0MDAyMyw0MDYwNywyOTc5MiwyMjU5MywyODA1NywzMjA0NywzOTAwNiwyMDE5NiwyMDI3OCwyMDM2MywyMDkxOSwyMTE2OSwyMzk5NCwyNDYwNCwyOTYxOCwzMTAzNiwzMzQ5MSwzNzQyOCwzODU4MywzODY0NiwzODY2Niw0MDU5OSw0'@; put 'MDgwMiwyNjI3OCwyNzUwOCwyMTAxNSwyMTE1NSwyODg3MiwzNTAxMCwyNDI2NSwyNDY1MSwyNDk3NiwyODQ1MSwyOTAwMSwzMTgwNiwzMjI0NCwzMjg3OSwzNDAzMCwzNjg5OSwzNzY3NiwyMTU3MCwzOTc5MSwyNzM0NywyODgwOSwzNjAzNCwzNjMzNSwzODcwNiwyMTE3MiwyMzEwNSwyNDI2'@; put 'NiwyNDMyNCwyNjM5MSwyNzAwNCwyNzAyOCwyODAxMCwyODQzMSwyOTI4MiwyOTQzNiwzMTcyNSwzMjc2OSwzMjg5NCwzNDYzNSwzNzA3MCwyMDg0NSw0MDU5NSwzMTEwOCwzMjkwNywzNzY4MiwzNTU0MiwyMDUyNSwyMTY0NCwzNTQ0MSwyNzQ5OCwzNjAzNiwzMzAzMSwyNDc4NSwyNjUyOCw0'@; put 'MDQzNCwyMDEyMSwyMDEyMCwzOTk1MiwzNTQzNSwzNDI0MSwzNDE1MiwyNjg4MCwyODI4NiwzMDg3MSwzMzEwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0MzMyLDE5OTg0LDE5OTg5LDIwMDEwLDIwMDE3LDIwMDIyLDIwMDI4LDIwMDMxLDIw'@; put 'MDM0LDIwMDU0LDIwMDU2LDIwMDk4LDIwMTAxLDM1OTQ3LDIwMTA2LDMzMjk4LDI0MzMzLDIwMTEwLDIwMTI2LDIwMTI3LDIwMTI4LDIwMTMwLDIwMTQ0LDIwMTQ3LDIwMTUwLDIwMTc0LDIwMTczLDIwMTY0LDIwMTY2LDIwMTYyLDIwMTgzLDIwMTkwLDIwMjA1LDIwMTkxLDIwMjE1LDIwMjMz'@; put 'LDIwMzE0LDIwMjcyLDIwMzE1LDIwMzE3LDIwMzExLDIwMjk1LDIwMzQyLDIwMzYwLDIwMzY3LDIwMzc2LDIwMzQ3LDIwMzI5LDIwMzM2LDIwMzY5LDIwMzM1LDIwMzU4LDIwMzc0LDIwNzYwLDIwNDM2LDIwNDQ3LDIwNDMwLDIwNDQwLDIwNDQzLDIwNDMzLDIwNDQyLDIwNDMyLDIwNDUyLDIw'@; put 'NDUzLDIwNTA2LDIwNTIwLDIwNTAwLDIwNTIyLDIwNTE3LDIwNDg1LDIwMjUyLDIwNDcwLDIwNTEzLDIwNTIxLDIwNTI0LDIwNDc4LDIwNDYzLDIwNDk3LDIwNDg2LDIwNTQ3LDIwNTUxLDI2MzcxLDIwNTY1LDIwNTYwLDIwNTUyLDIwNTcwLDIwNTY2LDIwNTg4LDIwNjAwLDIwNjA4LDIwNjM0'@; put 'LDIwNjEzLDIwNjYwLDIwNjU4LDIwNjgxLDIwNjgyLDIwNjU5LDIwNjc0LDIwNjk0LDIwNzAyLDIwNzA5LDIwNzE3LDIwNzA3LDIwNzE4LDIwNzI5LDIwNzI1LDIwNzQ1LDIwNzM3LDIwNzM4LDIwNzU4LDIwNzU3LDIwNzU2LDIwNzYyLDIwNzY5LDIwNzk0LDIwNzkxLDIwNzk2LDIwNzk1LDIw'@; put 'Nzk5LDIwODAwLDIwODE4LDIwODEyLDIwODIwLDIwODM0LDMxNDgwLDIwODQxLDIwODQyLDIwODQ2LDIwODY0LDIwODY2LDIyMjMyLDIwODc2LDIwODczLDIwODc5LDIwODgxLDIwODgzLDIwODg1LDIwODg2LDIwOTAwLDIwOTAyLDIwODk4LDIwOTA1LDIwOTA2LDIwOTA3LDIwOTE1LDIwOTEz'@; put 'LDIwOTE0LDIwOTEyLDIwOTE3LDIwOTI1LDIwOTMzLDIwOTM3LDIwOTU1LDIwOTYwLDM0Mzg5LDIwOTY5LDIwOTczLDIwOTc2LDIwOTgxLDIwOTkwLDIwOTk2LDIxMDAzLDIxMDEyLDIxMDA2LDIxMDMxLDIxMDM0LDIxMDM4LDIxMDQzLDIxMDQ5LDIxMDcxLDIxMDYwLDIxMDY3LDIxMDY4LDIx'@; put 'MDg2LDIxMDc2LDIxMDk4LDIxMTA4LDIxMDk3LDIxMTA3LDIxMTE5LDIxMTE3LDIxMTMzLDIxMTQwLDIxMTM4LDIxMTA1LDIxMTI4LDIxMTM3LDM2Nzc2LDM2Nzc1LDIxMTY0LDIxMTY1LDIxMTgwLDIxMTczLDIxMTg1LDIxMTk3LDIxMjA3LDIxMjE0LDIxMjE5LDIxMjIyLDM5MTQ5LDIxMjE2'@; put 'LDIxMjM1LDIxMjM3LDIxMjQwLDIxMjQxLDIxMjU0LDIxMjU2LDMwMDA4LDIxMjYxLDIxMjY0LDIxMjYzLDIxMjY5LDIxMjc0LDIxMjgzLDIxMjk1LDIxMjk3LDIxMjk5LDIxMzA0LDIxMzEyLDIxMzE4LDIxMzE3LDE5OTkxLDIxMzIxLDIxMzI1LDIwOTUwLDIxMzQyLDIxMzUzLDIxMzU4LDIy'@; put 'ODA4LDIxMzcxLDIxMzY3LDIxMzc4LDIxMzk4LDIxNDA4LDIxNDE0LDIxNDEzLDIxNDIyLDIxNDI0LDIxNDMwLDIxNDQzLDMxNzYyLDM4NjE3LDIxNDcxLDI2MzY0LDI5MTY2LDIxNDg2LDIxNDgwLDIxNDg1LDIxNDk4LDIxNTA1LDIxNTY1LDIxNTY4LDIxNTQ4LDIxNTQ5LDIxNTY0LDIxNTUw'@; put 'LDIxNTU4LDIxNTQ1LDIxNTMzLDIxNTgyLDIxNjQ3LDIxNjIxLDIxNjQ2LDIxNTk5LDIxNjE3LDIxNjIzLDIxNjE2LDIxNjUwLDIxNjI3LDIxNjMyLDIxNjIyLDIxNjM2LDIxNjQ4LDIxNjM4LDIxNzAzLDIxNjY2LDIxNjg4LDIxNjY5LDIxNjc2LDIxNzAwLDIxNzA0LDIxNjcyLDIxNjc1LDIx'@; put 'Njk4LDIxNjY4LDIxNjk0LDIxNjkyLDIxNzIwLDIxNzMzLDIxNzM0LDIxNzc1LDIxNzgwLDIxNzU3LDIxNzQyLDIxNzQxLDIxNzU0LDIxNzMwLDIxODE3LDIxODI0LDIxODU5LDIxODM2LDIxODA2LDIxODUyLDIxODI5LDIxODQ2LDIxODQ3LDIxODE2LDIxODExLDIxODUzLDIxOTEzLDIxODg4'@; put 'LDIxNjc5LDIxODk4LDIxOTE5LDIxODgzLDIxODg2LDIxOTEyLDIxOTE4LDIxOTM0LDIxODg0LDIxODkxLDIxOTI5LDIxODk1LDIxOTI4LDIxOTc4LDIxOTU3LDIxOTgzLDIxOTU2LDIxOTgwLDIxOTg4LDIxOTcyLDIyMDM2LDIyMDA3LDIyMDM4LDIyMDE0LDIyMDEzLDIyMDQzLDIyMDA5LDIy'@; put 'MDk0LDIyMDk2LDI5MTUxLDIyMDY4LDIyMDcwLDIyMDY2LDIyMDcyLDIyMTIzLDIyMTE2LDIyMDYzLDIyMTI0LDIyMTIyLDIyMTUwLDIyMTQ0LDIyMTU0LDIyMTc2LDIyMTY0LDIyMTU5LDIyMTgxLDIyMTkwLDIyMTk4LDIyMTk2LDIyMjEwLDIyMjA0LDIyMjA5LDIyMjExLDIyMjA4LDIyMjE2'@; put 'LDIyMjIyLDIyMjI1LDIyMjI3LDIyMjMxLDIyMjU0LDIyMjY1LDIyMjcyLDIyMjcxLDIyMjc2LDIyMjgxLDIyMjgwLDIyMjgzLDIyMjg1LDIyMjkxLDIyMjk2LDIyMjk0LDIxOTU5LDIyMzAwLDIyMzEwLDIyMzI3LDIyMzI4LDIyMzUwLDIyMzMxLDIyMzM2LDIyMzUxLDIyMzc3LDIyNDY0LDIy'@; put 'NDA4LDIyMzY5LDIyMzk5LDIyNDA5LDIyNDE5LDIyNDMyLDIyNDUxLDIyNDM2LDIyNDQyLDIyNDQ4LDIyNDY3LDIyNDcwLDIyNDg0LDIyNDgyLDIyNDgzLDIyNTM4LDIyNDg2LDIyNDk5LDIyNTM5LDIyNTUzLDIyNTU3LDIyNjQyLDIyNTYxLDIyNjI2LDIyNjAzLDIyNjQwLDI3NTg0LDIyNjEw'@; put 'LDIyNTg5LDIyNjQ5LDIyNjYxLDIyNzEzLDIyNjg3LDIyNjk5LDIyNzE0LDIyNzUwLDIyNzE1LDIyNzEyLDIyNzAyLDIyNzI1LDIyNzM5LDIyNzM3LDIyNzQzLDIyNzQ1LDIyNzQ0LDIyNzU3LDIyNzQ4LDIyNzU2LDIyNzUxLDIyNzY3LDIyNzc4LDIyNzc3LDIyNzc5LDIyNzgwLDIyNzgxLDIy'@; put 'Nzg2LDIyNzk0LDIyODAwLDIyODExLDI2NzkwLDIyODIxLDIyODI4LDIyODI5LDIyODM0LDIyODQwLDIyODQ2LDMxNDQyLDIyODY5LDIyODY0LDIyODYyLDIyODc0LDIyODcyLDIyODgyLDIyODgwLDIyODg3LDIyODkyLDIyODg5LDIyOTA0LDIyOTEzLDIyOTQxLDIwMzE4LDIwMzk1LDIyOTQ3'@; put 'LDIyOTYyLDIyOTgyLDIzMDE2LDIzMDA0LDIyOTI1LDIzMDAxLDIzMDAyLDIzMDc3LDIzMDcxLDIzMDU3LDIzMDY4LDIzMDQ5LDIzMDY2LDIzMTA0LDIzMTQ4LDIzMTEzLDIzMDkzLDIzMDk0LDIzMTM4LDIzMTQ2LDIzMTk0LDIzMjI4LDIzMjMwLDIzMjQzLDIzMjM0LDIzMjI5LDIzMjY3LDIz'@; put 'MjU1LDIzMjcwLDIzMjczLDIzMjU0LDIzMjkwLDIzMjkxLDIzMzA4LDIzMzA3LDIzMzE4LDIzMzQ2LDIzMjQ4LDIzMzM4LDIzMzUwLDIzMzU4LDIzMzYzLDIzMzY1LDIzMzYwLDIzMzc3LDIzMzgxLDIzMzg2LDIzMzg3LDIzMzk3LDIzNDAxLDIzNDA4LDIzNDExLDIzNDEzLDIzNDE2LDI1OTky'@; put 'LDIzNDE4LDIzNDI0LDIzNDI3LDIzNDYyLDIzNDgwLDIzNDkxLDIzNDk1LDIzNDk3LDIzNTA4LDIzNTA0LDIzNTI0LDIzNTI2LDIzNTIyLDIzNTE4LDIzNTI1LDIzNTMxLDIzNTM2LDIzNTQyLDIzNTM5LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTY1LDIzNTcxLDIzNTg0LDIzNTg2LDIzNTkyLDIz'@; put 'NjA4LDIzNjA5LDIzNjE3LDIzNjIyLDIzNjMwLDIzNjM1LDIzNjMyLDIzNjMxLDIzNDA5LDIzNjYwLDIzNjYyLDIwMDY2LDIzNjcwLDIzNjczLDIzNjkyLDIzNjk3LDIzNzAwLDIyOTM5LDIzNzIzLDIzNzM5LDIzNzM0LDIzNzQwLDIzNzM1LDIzNzQ5LDIzNzQyLDIzNzUxLDIzNzY5LDIzNzg1'@; put 'LDIzODA1LDIzODAyLDIzNzg5LDIzOTQ4LDIzNzg2LDIzODE5LDIzODI5LDIzODMxLDIzOTAwLDIzODM5LDIzODM1LDIzODI1LDIzODI4LDIzODQyLDIzODM0LDIzODMzLDIzODMyLDIzODg0LDIzODkwLDIzODg2LDIzODgzLDIzOTE2LDIzOTIzLDIzOTI2LDIzOTQzLDIzOTQwLDIzOTM4LDIz'@; put 'OTcwLDIzOTY1LDIzOTgwLDIzOTgyLDIzOTk3LDIzOTUyLDIzOTkxLDIzOTk2LDI0MDA5LDI0MDEzLDI0MDE5LDI0MDE4LDI0MDIyLDI0MDI3LDI0MDQzLDI0MDUwLDI0MDUzLDI0MDc1LDI0MDkwLDI0MDg5LDI0MDgxLDI0MDkxLDI0MTE4LDI0MTE5LDI0MTMyLDI0MTMxLDI0MTI4LDI0MTQy'@; put 'LDI0MTUxLDI0MTQ4LDI0MTU5LDI0MTYyLDI0MTY0LDI0MTM1LDI0MTgxLDI0MTgyLDI0MTg2LDQwNjM2LDI0MTkxLDI0MjI0LDI0MjU3LDI0MjU4LDI0MjY0LDI0MjcyLDI0MjcxLDI0Mjc4LDI0MjkxLDI0Mjg1LDI0MjgyLDI0MjgzLDI0MjkwLDI0Mjg5LDI0Mjk2LDI0Mjk3LDI0MzAwLDI0'@; put 'MzA1LDI0MzA3LDI0MzA0LDI0MzA4LDI0MzEyLDI0MzE4LDI0MzIzLDI0MzI5LDI0NDEzLDI0NDEyLDI0MzMxLDI0MzM3LDI0MzQyLDI0MzYxLDI0MzY1LDI0Mzc2LDI0Mzg1LDI0MzkyLDI0Mzk2LDI0Mzk4LDI0MzY3LDI0NDAxLDI0NDA2LDI0NDA3LDI0NDA5LDI0NDE3LDI0NDI5LDI0NDM1'@; put 'LDI0NDM5LDI0NDUxLDI0NDUwLDI0NDQ3LDI0NDU4LDI0NDU2LDI0NDY1LDI0NDU1LDI0NDc4LDI0NDczLDI0NDcyLDI0NDgwLDI0NDg4LDI0NDkzLDI0NTA4LDI0NTM0LDI0NTcxLDI0NTQ4LDI0NTY4LDI0NTYxLDI0NTQxLDI0NzU1LDI0NTc1LDI0NjA5LDI0NjcyLDI0NjAxLDI0NTkyLDI0'@; put 'NjE3LDI0NTkwLDI0NjI1LDI0NjAzLDI0NTk3LDI0NjE5LDI0NjE0LDI0NTkxLDI0NjM0LDI0NjY2LDI0NjQxLDI0NjgyLDI0Njk1LDI0NjcxLDI0NjUwLDI0NjQ2LDI0NjUzLDI0Njc1LDI0NjQzLDI0Njc2LDI0NjQyLDI0Njg0LDI0NjgzLDI0NjY1LDI0NzA1LDI0NzE3LDI0ODA3LDI0NzA3'@; put 'LDI0NzMwLDI0NzA4LDI0NzMxLDI0NzI2LDI0NzI3LDI0NzIyLDI0NzQzLDI0NzE1LDI0ODAxLDI0NzYwLDI0ODAwLDI0Nzg3LDI0NzU2LDI0NTYwLDI0NzY1LDI0Nzc0LDI0NzU3LDI0NzkyLDI0OTA5LDI0ODUzLDI0ODM4LDI0ODIyLDI0ODIzLDI0ODMyLDI0ODIwLDI0ODI2LDI0ODM1LDI0'@; put 'ODY1LDI0ODI3LDI0ODE3LDI0ODQ1LDI0ODQ2LDI0OTAzLDI0ODk0LDI0ODcyLDI0ODcxLDI0OTA2LDI0ODk1LDI0ODkyLDI0ODc2LDI0ODg0LDI0ODkzLDI0ODk4LDI0OTAwLDI0OTQ3LDI0OTUxLDI0OTIwLDI0OTIxLDI0OTIyLDI0OTM5LDI0OTQ4LDI0OTQzLDI0OTMzLDI0OTQ1LDI0OTI3'@; put 'LDI0OTI1LDI0OTE1LDI0OTQ5LDI0OTg1LDI0OTgyLDI0OTY3LDI1MDA0LDI0OTgwLDI0OTg2LDI0OTcwLDI0OTc3LDI1MDAzLDI1MDA2LDI1MDM2LDI1MDM0LDI1MDMzLDI1MDc5LDI1MDMyLDI1MDI3LDI1MDMwLDI1MDE4LDI1MDM1LDMyNjMzLDI1MDM3LDI1MDYyLDI1MDU5LDI1MDc4LDI1'@; put 'MDgyLDI1MDc2LDI1MDg3LDI1MDg1LDI1MDg0LDI1MDg2LDI1MDg4LDI1MDk2LDI1MDk3LDI1MTAxLDI1MTAwLDI1MTA4LDI1MTE1LDI1MTE4LDI1MTIxLDI1MTMwLDI1MTM0LDI1MTM2LDI1MTM4LDI1MTM5LDI1MTUzLDI1MTY2LDI1MTgyLDI1MTg3LDI1MTc5LDI1MTg0LDI1MTkyLDI1MjEy'@; put 'LDI1MjE4LDI1MjI1LDI1MjE0LDI1MjM0LDI1MjM1LDI1MjM4LDI1MzAwLDI1MjE5LDI1MjM2LDI1MzAzLDI1Mjk3LDI1Mjc1LDI1Mjk1LDI1MzQzLDI1Mjg2LDI1ODEyLDI1Mjg4LDI1MzA4LDI1MjkyLDI1MjkwLDI1MjgyLDI1Mjg3LDI1MjQzLDI1Mjg5LDI1MzU2LDI1MzI2LDI1MzI5LDI1'@; put 'MzgzLDI1MzQ2LDI1MzUyLDI1MzI3LDI1MzMzLDI1NDI0LDI1NDA2LDI1NDIxLDI1NjI4LDI1NDIzLDI1NDk0LDI1NDg2LDI1NDcyLDI1NTE1LDI1NDYyLDI1NTA3LDI1NDg3LDI1NDgxLDI1NTAzLDI1NTI1LDI1NDUxLDI1NDQ5LDI1NTM0LDI1NTc3LDI1NTM2LDI1NTQyLDI1NTcxLDI1NTQ1'@; put 'LDI1NTU0LDI1NTkwLDI1NTQwLDI1NjIyLDI1NjUyLDI1NjA2LDI1NjE5LDI1NjM4LDI1NjU0LDI1ODg1LDI1NjIzLDI1NjQwLDI1NjE1LDI1NzAzLDI1NzExLDI1NzE4LDI1Njc4LDI1ODk4LDI1NzQ5LDI1NzQ3LDI1NzY1LDI1NzY5LDI1NzM2LDI1Nzg4LDI1ODE4LDI1ODEwLDI1Nzk3LDI1'@; put 'Nzk5LDI1Nzg3LDI1ODE2LDI1Nzk0LDI1ODQxLDI1ODMxLDMzMjg5LDI1ODI0LDI1ODI1LDI1MjYwLDI1ODI3LDI1ODM5LDI1OTAwLDI1ODQ2LDI1ODQ0LDI1ODQyLDI1ODUwLDI1ODU2LDI1ODUzLDI1ODgwLDI1ODg0LDI1ODYxLDI1ODkyLDI1ODkxLDI1ODk5LDI1OTA4LDI1OTA5LDI1OTEx'@; put 'LDI1OTEwLDI1OTEyLDMwMDI3LDI1OTI4LDI1OTQyLDI1OTQxLDI1OTMzLDI1OTQ0LDI1OTUwLDI1OTQ5LDI1OTcwLDI1OTc2LDI1OTg2LDI1OTg3LDM1NzIyLDI2MDExLDI2MDE1LDI2MDI3LDI2MDM5LDI2MDUxLDI2MDU0LDI2MDQ5LDI2MDUyLDI2MDYwLDI2MDY2LDI2MDc1LDI2MDczLDI2'@; put 'MDgwLDI2MDgxLDI2MDk3LDI2NDgyLDI2MTIyLDI2MTE1LDI2MTA3LDI2NDgzLDI2MTY1LDI2MTY2LDI2MTY0LDI2MTQwLDI2MTkxLDI2MTgwLDI2MTg1LDI2MTc3LDI2MjA2LDI2MjA1LDI2MjEyLDI2MjE1LDI2MjE2LDI2MjA3LDI2MjEwLDI2MjI0LDI2MjQzLDI2MjQ4LDI2MjU0LDI2MjQ5'@; put 'LDI2MjQ0LDI2MjY0LDI2MjY5LDI2MzA1LDI2Mjk3LDI2MzEzLDI2MzAyLDI2MzAwLDI2MzA4LDI2Mjk2LDI2MzI2LDI2MzMwLDI2MzM2LDI2MTc1LDI2MzQyLDI2MzQ1LDI2MzUyLDI2MzU3LDI2MzU5LDI2MzgzLDI2MzkwLDI2Mzk4LDI2NDA2LDI2NDA3LDM4NzEyLDI2NDE0LDI2NDMxLDI2'@; put 'NDIyLDI2NDMzLDI2NDI0LDI2NDIzLDI2NDM4LDI2NDYyLDI2NDY0LDI2NDU3LDI2NDY3LDI2NDY4LDI2NTA1LDI2NDgwLDI2NTM3LDI2NDkyLDI2NDc0LDI2NTA4LDI2NTA3LDI2NTM0LDI2NTI5LDI2NTAxLDI2NTUxLDI2NjA3LDI2NTQ4LDI2NjA0LDI2NTQ3LDI2NjAxLDI2NTUyLDI2NTk2'@; put 'LDI2NTkwLDI2NTg5LDI2NTk0LDI2NjA2LDI2NTUzLDI2NTc0LDI2NTY2LDI2NTk5LDI3MjkyLDI2NjU0LDI2Njk0LDI2NjY1LDI2Njg4LDI2NzAxLDI2Njc0LDI2NzAyLDI2ODAzLDI2NjY3LDI2NzEzLDI2NzIzLDI2NzQzLDI2NzUxLDI2NzgzLDI2NzY3LDI2Nzk3LDI2NzcyLDI2NzgxLDI2'@; put 'Nzc5LDI2NzU1LDI3MzEwLDI2ODA5LDI2NzQwLDI2ODA1LDI2Nzg0LDI2ODEwLDI2ODk1LDI2NzY1LDI2NzUwLDI2ODgxLDI2ODI2LDI2ODg4LDI2ODQwLDI2OTE0LDI2OTE4LDI2ODQ5LDI2ODkyLDI2ODI5LDI2ODM2LDI2ODU1LDI2ODM3LDI2OTM0LDI2ODk4LDI2ODg0LDI2ODM5LDI2ODUx'@; put 'LDI2OTE3LDI2ODczLDI2ODQ4LDI2ODYzLDI2OTIwLDI2OTIyLDI2OTA2LDI2OTE1LDI2OTEzLDI2ODIyLDI3MDAxLDI2OTk5LDI2OTcyLDI3ZTMsMjY5ODcsMjY5NjQsMjcwMDYsMjY5OTAsMjY5MzcsMjY5OTYsMjY5NDEsMjY5NjksMjY5MjgsMjY5NzcsMjY5NzQsMjY5NzMsMjcwMDksMjY5'@; put 'ODYsMjcwNTgsMjcwNTQsMjcwODgsMjcwNzEsMjcwNzMsMjcwOTEsMjcwNzAsMjcwODYsMjM1MjgsMjcwODIsMjcxMDEsMjcwNjcsMjcwNzUsMjcwNDcsMjcxODIsMjcwMjUsMjcwNDAsMjcwMzYsMjcwMjksMjcwNjAsMjcxMDIsMjcxMTIsMjcxMzgsMjcxNjMsMjcxMzUsMjc0MDIsMjcxMjks'@; put 'MjcxMjIsMjcxMTEsMjcxNDEsMjcwNTcsMjcxNjYsMjcxMTcsMjcxNTYsMjcxMTUsMjcxNDYsMjcxNTQsMjczMjksMjcxNzEsMjcxNTUsMjcyMDQsMjcxNDgsMjcyNTAsMjcxOTAsMjcyNTYsMjcyMDcsMjcyMzQsMjcyMjUsMjcyMzgsMjcyMDgsMjcxOTIsMjcxNzAsMjcyODAsMjcyNzcsMjcy'@; put 'OTYsMjcyNjgsMjcyOTgsMjcyOTksMjcyODcsMzQzMjcsMjczMjMsMjczMzEsMjczMzAsMjczMjAsMjczMTUsMjczMDgsMjczNTgsMjczNDUsMjczNTksMjczMDYsMjczNTQsMjczNzAsMjczODcsMjczOTcsMzQzMjYsMjczODYsMjc0MTAsMjc0MTQsMzk3MjksMjc0MjMsMjc0NDgsMjc0NDcs'@; put 'MzA0MjgsMjc0NDksMzkxNTAsMjc0NjMsMjc0NTksMjc0NjUsMjc0NzIsMjc0ODEsMjc0NzYsMjc0ODMsMjc0ODcsMjc0ODksMjc1MTIsMjc1MTMsMjc1MTksMjc1MjAsMjc1MjQsMjc1MjMsMjc1MzMsMjc1NDQsMjc1NDEsMjc1NTAsMjc1NTYsMjc1NjIsMjc1NjMsMjc1NjcsMjc1NzAsMjc1'@; put 'NjksMjc1NzEsMjc1NzUsMjc1ODAsMjc1OTAsMjc1OTUsMjc2MDMsMjc2MTUsMjc2MjgsMjc2MjcsMjc2MzUsMjc2MzEsNDA2MzgsMjc2NTYsMjc2NjcsMjc2NjgsMjc2NzUsMjc2ODQsMjc2ODMsMjc3NDIsMjc3MzMsMjc3NDYsMjc3NTQsMjc3NzgsMjc3ODksMjc4MDIsMjc3NzcsMjc4MDMs'@; put 'Mjc3NzQsMjc3NTIsMjc3NjMsMjc3OTQsMjc3OTIsMjc4NDQsMjc4ODksMjc4NTksMjc4MzcsMjc4NjMsMjc4NDUsMjc4NjksMjc4MjIsMjc4MjUsMjc4MzgsMjc4MzQsMjc4NjcsMjc4ODcsMjc4NjUsMjc4ODIsMjc5MzUsMzQ4OTMsMjc5NTgsMjc5NDcsMjc5NjUsMjc5NjAsMjc5MjksMjc5'@; put 'NTcsMjc5NTUsMjc5MjIsMjc5MTYsMjgwMDMsMjgwNTEsMjgwMDQsMjc5OTQsMjgwMjUsMjc5OTMsMjgwNDYsMjgwNTMsMjg2NDQsMjgwMzcsMjgxNTMsMjgxODEsMjgxNzAsMjgwODUsMjgxMDMsMjgxMzQsMjgwODgsMjgxMDIsMjgxNDAsMjgxMjYsMjgxMDgsMjgxMzYsMjgxMTQsMjgxMDEs'@; put 'MjgxNTQsMjgxMjEsMjgxMzIsMjgxMTcsMjgxMzgsMjgxNDIsMjgyMDUsMjgyNzAsMjgyMDYsMjgxODUsMjgyNzQsMjgyNTUsMjgyMjIsMjgxOTUsMjgyNjcsMjgyMDMsMjgyNzgsMjgyMzcsMjgxOTEsMjgyMjcsMjgyMTgsMjgyMzgsMjgxOTYsMjg0MTUsMjgxODksMjgyMTYsMjgyOTAsMjgz'@; put 'MzAsMjgzMTIsMjgzNjEsMjgzNDMsMjgzNzEsMjgzNDksMjgzMzUsMjgzNTYsMjgzMzgsMjgzNzIsMjgzNzMsMjgzMDMsMjgzMjUsMjgzNTQsMjgzMTksMjg0ODEsMjg0MzMsMjg3NDgsMjgzOTYsMjg0MDgsMjg0MTQsMjg0NzksMjg0MDIsMjg0NjUsMjgzOTksMjg0NjYsMjgzNjQsMjg0Nzgs'@; put 'Mjg0MzUsMjg0MDcsMjg1NTAsMjg1MzgsMjg1MzYsMjg1NDUsMjg1NDQsMjg1MjcsMjg1MDcsMjg2NTksMjg1MjUsMjg1NDYsMjg1NDAsMjg1MDQsMjg1NTgsMjg1NjEsMjg2MTAsMjg1MTgsMjg1OTUsMjg1NzksMjg1NzcsMjg1ODAsMjg2MDEsMjg2MTQsMjg1ODYsMjg2MzksMjg2MjksMjg2'@; put 'NTIsMjg2MjgsMjg2MzIsMjg2NTcsMjg2NTQsMjg2MzUsMjg2ODEsMjg2ODMsMjg2NjYsMjg2ODksMjg2NzMsMjg2ODcsMjg2NzAsMjg2OTksMjg2OTgsMjg1MzIsMjg3MDEsMjg2OTYsMjg3MDMsMjg3MjAsMjg3MzQsMjg3MjIsMjg3NTMsMjg3NzEsMjg4MjUsMjg4MTgsMjg4NDcsMjg5MTMs'@; put 'Mjg4NDQsMjg4NTYsMjg4NTEsMjg4NDYsMjg4OTUsMjg4NzUsMjg4OTMsMjg4ODksMjg5MzcsMjg5MjUsMjg5NTYsMjg5NTMsMjkwMjksMjkwMTMsMjkwNjQsMjkwMzAsMjkwMjYsMjkwMDQsMjkwMTQsMjkwMzYsMjkwNzEsMjkxNzksMjkwNjAsMjkwNzcsMjkwOTYsMjkxMDAsMjkxNDMsMjkx'@; put 'MTMsMjkxMTgsMjkxMzgsMjkxMjksMjkxNDAsMjkxMzQsMjkxNTIsMjkxNjQsMjkxNTksMjkxNzMsMjkxODAsMjkxNzcsMjkxODMsMjkxOTcsMjkyMDAsMjkyMTEsMjkyMjQsMjkyMjksMjkyMjgsMjkyMzIsMjkyMzQsMjkyNDMsMjkyNDQsMjkyNDcsMjkyNDgsMjkyNTQsMjkyNTksMjkyNzIs'@; put 'MjkzMDAsMjkzMTAsMjkzMTQsMjkzMTMsMjkzMTksMjkzMzAsMjkzMzQsMjkzNDYsMjkzNTEsMjkzNjksMjkzNjIsMjkzNzksMjkzODIsMjkzODAsMjkzOTAsMjkzOTQsMjk0MTAsMjk0MDgsMjk0MDksMjk0MzMsMjk0MzEsMjA0OTUsMjk0NjMsMjk0NTAsMjk0NjgsMjk0NjIsMjk0NjksMjk0'@; put 'OTIsMjk0ODcsMjk0ODEsMjk0NzcsMjk1MDIsMjk1MTgsMjk1MTksNDA2NjQsMjk1MjcsMjk1NDYsMjk1NDQsMjk1NTIsMjk1NjAsMjk1NTcsMjk1NjMsMjk1NjIsMjk2NDAsMjk2MTksMjk2NDYsMjk2MjcsMjk2MzIsMjk2NjksMjk2NzgsMjk2NjIsMjk4NTgsMjk3MDEsMjk4MDcsMjk3MzMs'@; put 'Mjk2ODgsMjk3NDYsMjk3NTQsMjk3ODEsMjk3NTksMjk3OTEsMjk3ODUsMjk3NjEsMjk3ODgsMjk4MDEsMjk4MDgsMjk3OTUsMjk4MDIsMjk4MTQsMjk4MjIsMjk4MzUsMjk4NTQsMjk4NjMsMjk4OTgsMjk5MDMsMjk5MDgsMjk2ODEsMjk5MjAsMjk5MjMsMjk5MjcsMjk5MjksMjk5MzQsMjk5'@; put 'MzgsMjk5MzYsMjk5MzcsMjk5NDQsMjk5NDMsMjk5NTYsMjk5NTUsMjk5NTcsMjk5NjQsMjk5NjYsMjk5NjUsMjk5NzMsMjk5NzEsMjk5ODIsMjk5OTAsMjk5OTYsMzAwMTIsMzAwMjAsMzAwMjksMzAwMjYsMzAwMjUsMzAwNDMsMzAwMjIsMzAwNDIsMzAwNTcsMzAwNTIsMzAwNTUsMzAwNTks'@; put 'MzAwNjEsMzAwNzIsMzAwNzAsMzAwODYsMzAwODcsMzAwNjgsMzAwOTAsMzAwODksMzAwODIsMzAxMDAsMzAxMDYsMzAxMDksMzAxMTcsMzAxMTUsMzAxNDYsMzAxMzEsMzAxNDcsMzAxMzMsMzAxNDEsMzAxMzYsMzAxNDAsMzAxMjksMzAxNTcsMzAxNTQsMzAxNjIsMzAxNjksMzAxNzksMzAx'@; put 'NzQsMzAyMDYsMzAyMDcsMzAyMDQsMzAyMDksMzAxOTIsMzAyMDIsMzAxOTQsMzAxOTUsMzAyMTksMzAyMjEsMzAyMTcsMzAyMzksMzAyNDcsMzAyNDAsMzAyNDEsMzAyNDIsMzAyNDQsMzAyNjAsMzAyNTYsMzAyNjcsMzAyNzksMzAyODAsMzAyNzgsMzAzMDAsMzAyOTYsMzAzMDUsMzAzMDYs'@; put 'MzAzMTIsMzAzMTMsMzAzMTQsMzAzMTEsMzAzMTYsMzAzMjAsMzAzMjIsMzAzMjYsMzAzMjgsMzAzMzIsMzAzMzYsMzAzMzksMzAzNDQsMzAzNDcsMzAzNTAsMzAzNTgsMzAzNTUsMzAzNjEsMzAzNjIsMzAzODQsMzAzODgsMzAzOTIsMzAzOTMsMzAzOTQsMzA0MDIsMzA0MTMsMzA0MjIsMzA0'@; put 'MTgsMzA0MzAsMzA0MzMsMzA0MzcsMzA0MzksMzA0NDIsMzQzNTEsMzA0NTksMzA0NzIsMzA0NzEsMzA0NjgsMzA1MDUsMzA1MDAsMzA0OTQsMzA1MDEsMzA1MDIsMzA0OTEsMzA1MTksMzA1MjAsMzA1MzUsMzA1NTQsMzA1NjgsMzA1NzEsMzA1NTUsMzA1NjUsMzA1OTEsMzA1OTAsMzA1ODUs'@; put 'MzA2MDYsMzA2MDMsMzA2MDksMzA2MjQsMzA2MjIsMzA2NDAsMzA2NDYsMzA2NDksMzA2NTUsMzA2NTIsMzA2NTMsMzA2NTEsMzA2NjMsMzA2NjksMzA2NzksMzA2ODIsMzA2ODQsMzA2OTEsMzA3MDIsMzA3MTYsMzA3MzIsMzA3MzgsMzEwMTQsMzA3NTIsMzEwMTgsMzA3ODksMzA4NjIsMzA4'@; put 'MzYsMzA4NTQsMzA4NDQsMzA4NzQsMzA4NjAsMzA4ODMsMzA5MDEsMzA4OTAsMzA4OTUsMzA5MjksMzA5MTgsMzA5MjMsMzA5MzIsMzA5MTAsMzA5MDgsMzA5MTcsMzA5MjIsMzA5NTYsMzA5NTEsMzA5MzgsMzA5NzMsMzA5NjQsMzA5ODMsMzA5OTQsMzA5OTMsMzEwMDEsMzEwMjAsMzEwMTks'@; put 'MzEwNDAsMzEwNzIsMzEwNjMsMzEwNzEsMzEwNjYsMzEwNjEsMzEwNTksMzEwOTgsMzExMDMsMzExMTQsMzExMzMsMzExNDMsNDA3NzksMzExNDYsMzExNTAsMzExNTUsMzExNjEsMzExNjIsMzExNzcsMzExODksMzEyMDcsMzEyMTIsMzEyMDEsMzEyMDMsMzEyNDAsMzEyNDUsMzEyNTYsMzEy'@; put 'NTcsMzEyNjQsMzEyNjMsMzExMDQsMzEyODEsMzEyOTEsMzEyOTQsMzEyODcsMzEyOTksMzEzMTksMzEzMDUsMzEzMjksMzEzMzAsMzEzMzcsNDA4NjEsMzEzNDQsMzEzNTMsMzEzNTcsMzEzNjgsMzEzODMsMzEzODEsMzEzODQsMzEzODIsMzE0MDEsMzE0MzIsMzE0MDgsMzE0MTQsMzE0Mjks'@; put 'MzE0MjgsMzE0MjMsMzY5OTUsMzE0MzEsMzE0MzQsMzE0MzcsMzE0MzksMzE0NDUsMzE0NDMsMzE0NDksMzE0NTAsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjIsMzE0NjksMzE0NzIsMzE0OTAsMzE1MDMsMzE0OTgsMzE0OTQsMzE1MzksMzE1MTIsMzE1MTMsMzE1MTgsMzE1NDEsMzE1MjgsMzE1'@; put 'NDIsMzE1NjgsMzE2MTAsMzE0OTIsMzE1NjUsMzE0OTksMzE1NjQsMzE1NTcsMzE2MDUsMzE1ODksMzE2MDQsMzE1OTEsMzE2MDAsMzE2MDEsMzE1OTYsMzE1OTgsMzE2NDUsMzE2NDAsMzE2NDcsMzE2MjksMzE2NDQsMzE2NDIsMzE2MjcsMzE2MzQsMzE2MzEsMzE1ODEsMzE2NDEsMzE2OTEs'@; put 'MzE2ODEsMzE2OTIsMzE2OTUsMzE2NjgsMzE2ODYsMzE3MDksMzE3MjEsMzE3NjEsMzE3NjQsMzE3MTgsMzE3MTcsMzE4NDAsMzE3NDQsMzE3NTEsMzE3NjMsMzE3MzEsMzE3MzUsMzE3NjcsMzE3NTcsMzE3MzQsMzE3NzksMzE3ODMsMzE3ODYsMzE3NzUsMzE3OTksMzE3ODcsMzE4MDUsMzE4'@; put 'MjAsMzE4MTEsMzE4MjgsMzE4MjMsMzE4MDgsMzE4MjQsMzE4MzIsMzE4MzksMzE4NDQsMzE4MzAsMzE4NDUsMzE4NTIsMzE4NjEsMzE4NzUsMzE4ODgsMzE5MDgsMzE5MTcsMzE5MDYsMzE5MTUsMzE5MDUsMzE5MTIsMzE5MjMsMzE5MjIsMzE5MjEsMzE5MTgsMzE5MjksMzE5MzMsMzE5MzYs'@; put 'MzE5NDEsMzE5MzgsMzE5NjAsMzE5NTQsMzE5NjQsMzE5NzAsMzk3MzksMzE5ODMsMzE5ODYsMzE5ODgsMzE5OTAsMzE5OTQsMzIwMDYsMzIwMDIsMzIwMjgsMzIwMjEsMzIwMTAsMzIwNjksMzIwNzUsMzIwNDYsMzIwNTAsMzIwNjMsMzIwNTMsMzIwNzAsMzIxMTUsMzIwODYsMzIwNzgsMzIx'@; put 'MTQsMzIxMDQsMzIxMTAsMzIwNzksMzIwOTksMzIxNDcsMzIxMzcsMzIwOTEsMzIxNDMsMzIxMjUsMzIxNTUsMzIxODYsMzIxNzQsMzIxNjMsMzIxODEsMzIxOTksMzIxODksMzIxNzEsMzIzMTcsMzIxNjIsMzIxNzUsMzIyMjAsMzIxODQsMzIxNTksMzIxNzYsMzIyMTYsMzIyMjEsMzIyMjgs'@; put 'MzIyMjIsMzIyNTEsMzIyNDIsMzIyMjUsMzIyNjEsMzIyNjYsMzIyOTEsMzIyODksMzIyNzQsMzIzMDUsMzIyODcsMzIyNjUsMzIyNjcsMzIyOTAsMzIzMjYsMzIzNTgsMzIzMTUsMzIzMDksMzIzMTMsMzIzMjMsMzIzMTEsMzIzMDYsMzIzMTQsMzIzNTksMzIzNDksMzIzNDIsMzIzNTAsMzIz'@; put 'NDUsMzIzNDYsMzIzNzcsMzIzNjIsMzIzNjEsMzIzODAsMzIzNzksMzIzODcsMzIyMTMsMzIzODEsMzY3ODIsMzIzODMsMzIzOTIsMzIzOTMsMzIzOTYsMzI0MDIsMzI0MDAsMzI0MDMsMzI0MDQsMzI0MDYsMzIzOTgsMzI0MTEsMzI0MTIsMzI1NjgsMzI1NzAsMzI1ODEsMzI1ODgsMzI1ODks'@; put 'MzI1OTAsMzI1OTIsMzI1OTMsMzI1OTcsMzI1OTYsMzI2MDAsMzI2MDcsMzI2MDgsMzI2MTYsMzI2MTcsMzI2MTUsMzI2MzIsMzI2NDIsMzI2NDYsMzI2NDMsMzI2NDgsMzI2NDcsMzI2NTIsMzI2NjAsMzI2NzAsMzI2NjksMzI2NjYsMzI2NzUsMzI2ODcsMzI2OTAsMzI2OTcsMzI2ODYsMzI2'@; put 'OTQsMzI2OTYsMzU2OTcsMzI3MDksMzI3MTAsMzI3MTQsMzI3MjUsMzI3MjQsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTUsMzI3NjEsMzkxMzIsMzI3NzQsMzI3NzIsMzI3NzksMzI3ODYsMzI3OTIsMzI3OTMsMzI3OTYsMzI4MDEsMzI4MDgsMzI4MzEsMzI4MjcsMzI4NDIsMzI4MzgsMzI4NTAs'@; put 'MzI4NTYsMzI4NTgsMzI4NjMsMzI4NjYsMzI4NzIsMzI4ODMsMzI4ODIsMzI4ODAsMzI4ODYsMzI4ODksMzI4OTMsMzI4OTUsMzI5MDAsMzI5MDIsMzI5MDEsMzI5MjMsMzI5MTUsMzI5MjIsMzI5NDEsMjA4ODAsMzI5NDAsMzI5ODcsMzI5OTcsMzI5ODUsMzI5ODksMzI5NjQsMzI5ODYsMzI5'@; put 'ODIsMzMwMzMsMzMwMDcsMzMwMDksMzMwNTEsMzMwNjUsMzMwNTksMzMwNzEsMzMwOTksMzg1MzksMzMwOTQsMzMwODYsMzMxMDcsMzMxMDUsMzMwMjAsMzMxMzcsMzMxMzQsMzMxMjUsMzMxMjYsMzMxNDAsMzMxNTUsMzMxNjAsMzMxNjIsMzMxNTIsMzMxNTQsMzMxODQsMzMxNzMsMzMxODgs'@; put 'MzMxODcsMzMxMTksMzMxNzEsMzMxOTMsMzMyMDAsMzMyMDUsMzMyMTQsMzMyMDgsMzMyMTMsMzMyMTYsMzMyMTgsMzMyMTAsMzMyMjUsMzMyMjksMzMyMzMsMzMyNDEsMzMyNDAsMzMyMjQsMzMyNDIsMzMyNDcsMzMyNDgsMzMyNTUsMzMyNzQsMzMyNzUsMzMyNzgsMzMyODEsMzMyODIsMzMy'@; put 'ODUsMzMyODcsMzMyOTAsMzMyOTMsMzMyOTYsMzMzMDIsMzMzMjEsMzMzMjMsMzMzMzYsMzMzMzEsMzMzNDQsMzMzNjksMzMzNjgsMzMzNzMsMzMzNzAsMzMzNzUsMzMzODAsMzMzNzgsMzMzODQsMzMzODYsMzMzODcsMzMzMjYsMzMzOTMsMzMzOTksMzM0MDAsMzM0MDYsMzM0MjEsMzM0MjYs'@; put 'MzM0NTEsMzM0MzksMzM0NjcsMzM0NTIsMzM1MDUsMzM1MDcsMzM1MDMsMzM0OTAsMzM1MjQsMzM1MjMsMzM1MzAsMzM2ODMsMzM1MzksMzM1MzEsMzM1MjksMzM1MDIsMzM1NDIsMzM1MDAsMzM1NDUsMzM0OTcsMzM1ODksMzM1ODgsMzM1NTgsMzM1ODYsMzM1ODUsMzM2MDAsMzM1OTMsMzM2'@; put 'MTYsMzM2MDUsMzM1ODMsMzM1NzksMzM1NTksMzM1NjAsMzM2NjksMzM2OTAsMzM3MDYsMzM2OTUsMzM2OTgsMzM2ODYsMzM1NzEsMzM2NzgsMzM2NzEsMzM2NzQsMzM2NjAsMzM3MTcsMzM2NTEsMzM2NTMsMzM2OTYsMzM2NzMsMzM3MDQsMzM3ODAsMzM4MTEsMzM3NzEsMzM3NDIsMzM3ODks'@; put 'MzM3OTUsMzM3NTIsMzM4MDMsMzM3MjksMzM3ODMsMzM3OTksMzM3NjAsMzM3NzgsMzM4MDUsMzM4MjYsMzM4MjQsMzM3MjUsMzM4NDgsMzQwNTQsMzM3ODcsMzM5MDEsMzM4MzQsMzM4NTIsMzQxMzgsMzM5MjQsMzM5MTEsMzM4OTksMzM5NjUsMzM5MDIsMzM5MjIsMzM4OTcsMzM4NjIsMzM4'@; put 'MzYsMzM5MDMsMzM5MTMsMzM4NDUsMzM5OTQsMzM4OTAsMzM5NzcsMzM5ODMsMzM5NTEsMzQwMDksMzM5OTcsMzM5NzksMzQwMTAsMzRlMywzMzk4NSwzMzk5MCwzNDAwNiwzMzk1MywzNDA4MSwzNDA0NywzNDAzNiwzNDA3MSwzNDA3MiwzNDA5MiwzNDA3OSwzNDA2OSwzNDA2OCwzNDA0NCwz'@; put 'NDExMiwzNDE0NywzNDEzNiwzNDEyMCwzNDExMywzNDMwNiwzNDEyMywzNDEzMywzNDE3NiwzNDIxMiwzNDE4NCwzNDE5MywzNDE4NiwzNDIxNiwzNDE1NywzNDE5NiwzNDIwMywzNDI4MiwzNDE4MywzNDIwNCwzNDE2NywzNDE3NCwzNDE5MiwzNDI0OSwzNDIzNCwzNDI1NSwzNDIzMywzNDI1'@; put 'NiwzNDI2MSwzNDI2OSwzNDI3NywzNDI2OCwzNDI5NywzNDMxNCwzNDMyMywzNDMxNSwzNDMwMiwzNDI5OCwzNDMxMCwzNDMzOCwzNDMzMCwzNDM1MiwzNDM2NywzNDM4MSwyMDA1MywzNDM4OCwzNDM5OSwzNDQwNywzNDQxNywzNDQ1MSwzNDQ2NywzNDQ3MywzNDQ3NCwzNDQ0MywzNDQ0NCwz'@; put 'NDQ4NiwzNDQ3OSwzNDUwMCwzNDUwMiwzNDQ4MCwzNDUwNSwzNDg1MSwzNDQ3NSwzNDUxNiwzNDUyNiwzNDUzNywzNDU0MCwzNDUyNywzNDUyMywzNDU0MywzNDU3OCwzNDU2NiwzNDU2OCwzNDU2MCwzNDU2MywzNDU1NSwzNDU3NywzNDU2OSwzNDU3MywzNDU1MywzNDU3MCwzNDYxMiwzNDYy'@; put 'MywzNDYxNSwzNDYxOSwzNDU5NywzNDYwMSwzNDU4NiwzNDY1NiwzNDY1NSwzNDY4MCwzNDYzNiwzNDYzOCwzNDY3NiwzNDY0NywzNDY2NCwzNDY3MCwzNDY0OSwzNDY0MywzNDY1OSwzNDY2NiwzNDgyMSwzNDcyMiwzNDcxOSwzNDY5MCwzNDczNSwzNDc2MywzNDc0OSwzNDc1MiwzNDc2OCwz'@; put 'ODYxNCwzNDczMSwzNDc1NiwzNDczOSwzNDc1OSwzNDc1OCwzNDc0NywzNDc5OSwzNDgwMiwzNDc4NCwzNDgzMSwzNDgyOSwzNDgxNCwzNDgwNiwzNDgwNywzNDgzMCwzNDc3MCwzNDgzMywzNDgzOCwzNDgzNywzNDg1MCwzNDg0OSwzNDg2NSwzNDg3MCwzNDg3MywzNDg1NSwzNDg3NSwzNDg4'@; put 'NCwzNDg4MiwzNDg5OCwzNDkwNSwzNDkxMCwzNDkxNCwzNDkyMywzNDk0NSwzNDk0MiwzNDk3NCwzNDkzMywzNDk0MSwzNDk5NywzNDkzMCwzNDk0NiwzNDk2NywzNDk2MiwzNDk5MCwzNDk2OSwzNDk3OCwzNDk1NywzNDk4MCwzNDk5MiwzNTAwNywzNDk5MywzNTAxMSwzNTAxMiwzNTAyOCwz'@; put 'NTAzMiwzNTAzMywzNTAzNywzNTA2NSwzNTA3NCwzNTA2OCwzNTA2MCwzNTA0OCwzNTA1OCwzNTA3NiwzNTA4NCwzNTA4MiwzNTA5MSwzNTEzOSwzNTEwMiwzNTEwOSwzNTExNCwzNTExNSwzNTEzNywzNTE0MCwzNTEzMSwzNTEyNiwzNTEyOCwzNTE0OCwzNTEwMSwzNTE2OCwzNTE2NiwzNTE3'@; put 'NCwzNTE3MiwzNTE4MSwzNTE3OCwzNTE4MywzNTE4OCwzNTE5MSwzNTE5OCwzNTIwMywzNTIwOCwzNTIxMCwzNTIxOSwzNTIyNCwzNTIzMywzNTI0MSwzNTIzOCwzNTI0NCwzNTI0NywzNTI1MCwzNTI1OCwzNTI2MSwzNTI2MywzNTI2NCwzNTI5MCwzNTI5MiwzNTI5MywzNTMwMywzNTMxNiwz'@; put 'NTMyMCwzNTMzMSwzNTM1MCwzNTM0NCwzNTM0MCwzNTM1NSwzNTM1NywzNTM2NSwzNTM4MiwzNTM5MywzNTQxOSwzNTQxMCwzNTM5OCwzNTQwMCwzNTQ1MiwzNTQzNywzNTQzNiwzNTQyNiwzNTQ2MSwzNTQ1OCwzNTQ2MCwzNTQ5NiwzNTQ4OSwzNTQ3MywzNTQ5MywzNTQ5NCwzNTQ4MiwzNTQ5'@; put 'MSwzNTUyNCwzNTUzMywzNTUyMiwzNTU0NiwzNTU2MywzNTU3MSwzNTU1OSwzNTU1NiwzNTU2OSwzNTYwNCwzNTU1MiwzNTU1NCwzNTU3NSwzNTU1MCwzNTU0NywzNTU5NiwzNTU5MSwzNTYxMCwzNTU1MywzNTYwNiwzNTYwMCwzNTYwNywzNTYxNiwzNTYzNSwzODgyNywzNTYyMiwzNTYyNywz'@; put 'NTY0NiwzNTYyNCwzNTY0OSwzNTY2MCwzNTY2MywzNTY2MiwzNTY1NywzNTY3MCwzNTY3NSwzNTY3NCwzNTY5MSwzNTY3OSwzNTY5MiwzNTY5NSwzNTcwMCwzNTcwOSwzNTcxMiwzNTcyNCwzNTcyNiwzNTczMCwzNTczMSwzNTczNCwzNTczNywzNTczOCwzNTg5OCwzNTkwNSwzNTkwMywzNTkx'@; put 'MiwzNTkxNiwzNTkxOCwzNTkyMCwzNTkyNSwzNTkzOCwzNTk0OCwzNTk2MCwzNTk2MiwzNTk3MCwzNTk3NywzNTk3MywzNTk3OCwzNTk4MSwzNTk4MiwzNTk4OCwzNTk2NCwzNTk5MiwyNTExNywzNjAxMywzNjAxMCwzNjAyOSwzNjAxOCwzNjAxOSwzNjAxNCwzNjAyMiwzNjA0MCwzNjAzMywz'@; put 'NjA2OCwzNjA2NywzNjA1OCwzNjA5MywzNjA5MCwzNjA5MSwzNjEwMCwzNjEwMSwzNjEwNiwzNjEwMywzNjExMSwzNjEwOSwzNjExMiw0MDc4MiwzNjExNSwzNjA0NSwzNjExNiwzNjExOCwzNjE5OSwzNjIwNSwzNjIwOSwzNjIxMSwzNjIyNSwzNjI0OSwzNjI5MCwzNjI4NiwzNjI4MiwzNjMw'@; put 'MywzNjMxNCwzNjMxMCwzNjMwMCwzNjMxNSwzNjI5OSwzNjMzMCwzNjMzMSwzNjMxOSwzNjMyMywzNjM0OCwzNjM2MCwzNjM2MSwzNjM1MSwzNjM4MSwzNjM4MiwzNjM2OCwzNjM4MywzNjQxOCwzNjQwNSwzNjQwMCwzNjQwNCwzNjQyNiwzNjQyMywzNjQyNSwzNjQyOCwzNjQzMiwzNjQyNCwz'@; put 'NjQ0MSwzNjQ1MiwzNjQ0OCwzNjM5NCwzNjQ1MSwzNjQzNywzNjQ3MCwzNjQ2NiwzNjQ3NiwzNjQ4MSwzNjQ4NywzNjQ4NSwzNjQ4NCwzNjQ5MSwzNjQ5MCwzNjQ5OSwzNjQ5NywzNjUwMCwzNjUwNSwzNjUyMiwzNjUxMywzNjUyNCwzNjUyOCwzNjU1MCwzNjUyOSwzNjU0MiwzNjU0OSwzNjU1'@; put 'MiwzNjU1NSwzNjU3MSwzNjU3OSwzNjYwNCwzNjYwMywzNjU4NywzNjYwNiwzNjYxOCwzNjYxMywzNjYyOSwzNjYyNiwzNjYzMywzNjYyNywzNjYzNiwzNjYzOSwzNjYzNSwzNjYyMCwzNjY0NiwzNjY1OSwzNjY2NywzNjY2NSwzNjY3NywzNjY3NCwzNjY3MCwzNjY4NCwzNjY4MSwzNjY3OCwz'@; put 'NjY4NiwzNjY5NSwzNjcwMCwzNjcwNiwzNjcwNywzNjcwOCwzNjc2NCwzNjc2NywzNjc3MSwzNjc4MSwzNjc4MywzNjc5MSwzNjgyNiwzNjgzNywzNjgzNCwzNjg0MiwzNjg0NywzNjk5OSwzNjg1MiwzNjg2OSwzNjg1NywzNjg1OCwzNjg4MSwzNjg4NSwzNjg5NywzNjg3NywzNjg5NCwzNjg4'@; put 'NiwzNjg3NSwzNjkwMywzNjkxOCwzNjkxNywzNjkyMSwzNjg1NiwzNjk0MywzNjk0NCwzNjk0NSwzNjk0NiwzNjg3OCwzNjkzNywzNjkyNiwzNjk1MCwzNjk1MiwzNjk1OCwzNjk2OCwzNjk3NSwzNjk4MiwzODU2OCwzNjk3OCwzNjk5NCwzNjk4OSwzNjk5MywzNjk5MiwzNzAwMiwzNzAwMSwz'@; put 'NzAwNywzNzAzMiwzNzAzOSwzNzA0MSwzNzA0NSwzNzA5MCwzNzA5MiwyNTE2MCwzNzA4MywzNzEyMiwzNzEzOCwzNzE0NSwzNzE3MCwzNzE2OCwzNzE5NCwzNzIwNiwzNzIwOCwzNzIxOSwzNzIyMSwzNzIyNSwzNzIzNSwzNzIzNCwzNzI1OSwzNzI1NywzNzI1MCwzNzI4MiwzNzI5MSwzNzI5'@; put 'NSwzNzI5MCwzNzMwMSwzNzMwMCwzNzMwNiwzNzMxMiwzNzMxMywzNzMyMSwzNzMyMywzNzMyOCwzNzMzNCwzNzM0MywzNzM0NSwzNzMzOSwzNzM3MiwzNzM2NSwzNzM2NiwzNzQwNiwzNzM3NSwzNzM5NiwzNzQyMCwzNzM5NywzNzM5MywzNzQ3MCwzNzQ2MywzNzQ0NSwzNzQ0OSwzNzQ3Niwz'@; put 'NzQ0OCwzNzUyNSwzNzQzOSwzNzQ1MSwzNzQ1NiwzNzUzMiwzNzUyNiwzNzUyMywzNzUzMSwzNzQ2NiwzNzU4MywzNzU2MSwzNzU1OSwzNzYwOSwzNzY0NywzNzYyNiwzNzcwMCwzNzY3OCwzNzY1NywzNzY2NiwzNzY1OCwzNzY2NywzNzY5MCwzNzY4NSwzNzY5MSwzNzcyNCwzNzcyOCwzNzc1'@; put 'NiwzNzc0MiwzNzcxOCwzNzgwOCwzNzgwNCwzNzgwNSwzNzc4MCwzNzgxNywzNzg0NiwzNzg0NywzNzg2NCwzNzg2MSwzNzg0OCwzNzgyNywzNzg1MywzNzg0MCwzNzgzMiwzNzg2MCwzNzkxNCwzNzkwOCwzNzkwNywzNzg5MSwzNzg5NSwzNzkwNCwzNzk0MiwzNzkzMSwzNzk0MSwzNzkyMSwz'@; put 'Nzk0NiwzNzk1MywzNzk3MCwzNzk1NiwzNzk3OSwzNzk4NCwzNzk4NiwzNzk4MiwzNzk5NCwzNzQxNywzOGUzLDM4MDA1LDM4MDA3LDM4MDEzLDM3OTc4LDM4MDEyLDM4MDE0LDM4MDE3LDM4MDE1LDM4Mjc0LDM4Mjc5LDM4MjgyLDM4MjkyLDM4Mjk0LDM4Mjk2LDM4Mjk3LDM4MzA0LDM4MzEy'@; put 'LDM4MzExLDM4MzE3LDM4MzMyLDM4MzMxLDM4MzI5LDM4MzM0LDM4MzQ2LDI4NjYyLDM4MzM5LDM4MzQ5LDM4MzQ4LDM4MzU3LDM4MzU2LDM4MzU4LDM4MzY0LDM4MzY5LDM4MzczLDM4MzcwLDM4NDMzLDM4NDQwLDM4NDQ2LDM4NDQ3LDM4NDY2LDM4NDc2LDM4NDc5LDM4NDc1LDM4NTE5LDM4'@; put 'NDkyLDM4NDk0LDM4NDkzLDM4NDk1LDM4NTAyLDM4NTE0LDM4NTA4LDM4NTQxLDM4NTUyLDM4NTQ5LDM4NTUxLDM4NTcwLDM4NTY3LDM4NTc3LDM4NTc4LDM4NTc2LDM4NTgwLDM4NTgyLDM4NTg0LDM4NTg1LDM4NjA2LDM4NjAzLDM4NjAxLDM4NjA1LDM1MTQ5LDM4NjIwLDM4NjY5LDM4NjEz'@; put 'LDM4NjQ5LDM4NjYwLDM4NjYyLDM4NjY0LDM4Njc1LDM4NjcwLDM4NjczLDM4NjcxLDM4Njc4LDM4NjgxLDM4NjkyLDM4Njk4LDM4NzA0LDM4NzEzLDM4NzE3LDM4NzE4LDM4NzI0LDM4NzI2LDM4NzI4LDM4NzIyLDM4NzI5LDM4NzQ4LDM4NzUyLDM4NzU2LDM4NzU4LDM4NzYwLDIxMjAyLDM4'@; put 'NzYzLDM4NzY5LDM4Nzc3LDM4Nzg5LDM4NzgwLDM4Nzg1LDM4Nzc4LDM4NzkwLDM4Nzk1LDM4Nzk5LDM4ODAwLDM4ODEyLDM4ODI0LDM4ODIyLDM4ODE5LDM4ODM1LDM4ODM2LDM4ODUxLDM4ODU0LDM4ODU2LDM4ODU5LDM4ODc2LDM4ODkzLDQwNzgzLDM4ODk4LDMxNDU1LDM4OTAyLDM4OTAx'@; put 'LDM4OTI3LDM4OTI0LDM4OTY4LDM4OTQ4LDM4OTQ1LDM4OTY3LDM4OTczLDM4OTgyLDM4OTkxLDM4OTg3LDM5MDE5LDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI4LDM5MDI3LDM5MDgyLDM5MDg3LDM5MDg5LDM5MDk0LDM5MTA4LDM5MTA3LDM5MTEwLDM5MTQ1LDM5MTQ3LDM5MTcxLDM5MTc3LDM5'@; put 'MTg2LDM5MTg4LDM5MTkyLDM5MjAxLDM5MTk3LDM5MTk4LDM5MjA0LDM5MjAwLDM5MjEyLDM5MjE0LDM5MjI5LDM5MjMwLDM5MjM0LDM5MjQxLDM5MjM3LDM5MjQ4LDM5MjQzLDM5MjQ5LDM5MjUwLDM5MjQ0LDM5MjUzLDM5MzE5LDM5MzIwLDM5MzMzLDM5MzQxLDM5MzQyLDM5MzU2LDM5Mzkx'@; put 'LDM5Mzg3LDM5Mzg5LDM5Mzg0LDM5Mzc3LDM5NDA1LDM5NDA2LDM5NDA5LDM5NDEwLDM5NDE5LDM5NDE2LDM5NDI1LDM5NDM5LDM5NDI5LDM5Mzk0LDM5NDQ5LDM5NDY3LDM5NDc5LDM5NDkzLDM5NDkwLDM5NDg4LDM5NDkxLDM5NDg2LDM5NTA5LDM5NTAxLDM5NTE1LDM5NTExLDM5NTE5LDM5'@; put 'NTIyLDM5NTI1LDM5NTI0LDM5NTI5LDM5NTMxLDM5NTMwLDM5NTk3LDM5NjAwLDM5NjEyLDM5NjE2LDM5NjMxLDM5NjMzLDM5NjM1LDM5NjM2LDM5NjQ2LDM5NjQ3LDM5NjUwLDM5NjUxLDM5NjU0LDM5NjYzLDM5NjU5LDM5NjYyLDM5NjY4LDM5NjY1LDM5NjcxLDM5Njc1LDM5Njg2LDM5NzA0'@; put 'LDM5NzA2LDM5NzExLDM5NzE0LDM5NzE1LDM5NzE3LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzI2LDM5NzI3LDM5NzMwLDM5NzQ4LDM5NzQ3LDM5NzU5LDM5NzU3LDM5NzU4LDM5NzYxLDM5NzY4LDM5Nzk2LDM5ODI3LDM5ODExLDM5ODI1LDM5ODMwLDM5ODMxLDM5ODM5LDM5ODQwLDM5'@; put 'ODQ4LDM5ODYwLDM5ODcyLDM5ODgyLDM5ODY1LDM5ODc4LDM5ODg3LDM5ODg5LDM5ODkwLDM5OTA3LDM5OTA2LDM5OTA4LDM5ODkyLDM5OTA1LDM5OTk0LDM5OTIyLDM5OTIxLDM5OTIwLDM5OTU3LDM5OTU2LDM5OTQ1LDM5OTU1LDM5OTQ4LDM5OTQyLDM5OTQ0LDM5OTU0LDM5OTQ2LDM5OTQw'@; put 'LDM5OTgyLDM5OTYzLDM5OTczLDM5OTcyLDM5OTY5LDM5OTg0LDQwMDA3LDM5OTg2LDQwMDA2LDM5OTk4LDQwMDI2LDQwMDMyLDQwMDM5LDQwMDU0LDQwMDU2LDQwMTY3LDQwMTcyLDQwMTc2LDQwMjAxLDQwMjAwLDQwMTcxLDQwMTk1LDQwMTk4LDQwMjM0LDQwMjMwLDQwMzY3LDQwMjI3LDQw'@; put 'MjIzLDQwMjYwLDQwMjEzLDQwMjEwLDQwMjU3LDQwMjU1LDQwMjU0LDQwMjYyLDQwMjY0LDQwMjg1LDQwMjg2LDQwMjkyLDQwMjczLDQwMjcyLDQwMjgxLDQwMzA2LDQwMzI5LDQwMzI3LDQwMzYzLDQwMzAzLDQwMzE0LDQwMzQ2LDQwMzU2LDQwMzYxLDQwMzcwLDQwMzg4LDQwMzg1LDQwMzc5'@; put 'LDQwMzc2LDQwMzc4LDQwMzkwLDQwMzk5LDQwMzg2LDQwNDA5LDQwNDAzLDQwNDQwLDQwNDIyLDQwNDI5LDQwNDMxLDQwNDQ1LDQwNDc0LDQwNDc1LDQwNDc4LDQwNTY1LDQwNTY5LDQwNTczLDQwNTc3LDQwNTg0LDQwNTg3LDQwNTg4LDQwNTk0LDQwNTk3LDQwNTkzLDQwNjA1LDQwNjEzLDQw'@; put 'NjE3LDQwNjMyLDQwNjE4LDQwNjIxLDM4NzUzLDQwNjUyLDQwNjU0LDQwNjU1LDQwNjU2LDQwNjYwLDQwNjY4LDQwNjcwLDQwNjY5LDQwNjcyLDQwNjc3LDQwNjgwLDQwNjg3LDQwNjkyLDQwNjk0LDQwNjk1LDQwNjk3LDQwNjk5LDQwNzAwLDQwNzAxLDQwNzExLDQwNzEyLDMwMzkxLDQwNzI1'@; put 'LDQwNzM3LDQwNzQ4LDQwNzY2LDQwNzc4LDQwNzg2LDQwNzg4LDQwODAzLDQwNzk5LDQwODAwLDQwODAxLDQwODA2LDQwODA3LDQwODEyLDQwODEwLDQwODIzLDQwODE4LDQwODIyLDQwODUzLDQwODYwLDQwODY0LDIyNTc1LDI3MDc5LDM2OTUzLDI5Nzk2LDIwOTU2LDI5MDgxLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCwzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwy'@; put 'MDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3'@; put 'MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5Nywy'@; put 'Mzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5'@; put 'NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwy'@; put 'NjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0'@; put 'NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwy'@; put 'OTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0'@; put 'MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4Miwz'@; put 'Mzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAz'@; put 'Niw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5Niwz'@; put 'NzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0'@; put 'MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2'@; put 'NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw2NTUwNiw2NTUwOCw2NTI4Nyw2'@; put 'NTI4MiwxMjg0OSw4NDcwLDg0ODEsODc1NywzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3Miwy'@; put 'MDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2'@; put 'OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwy'@; put 'MzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4'@; put 'NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwy'@; put 'NjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1'@; put 'NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwy'@; put 'OTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2'@; put 'NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywz'@; put 'MzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjEx'@; put 'NCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywz'@; put 'NzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1'@; put 'NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1Nywz'@; put 'OTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGppczAyMTI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDcyOCw3MTEsMTg0LDcy'@; put 'OSw3MzMsMTc1LDczMSw3MzAsNjUzNzQsOTAwLDkwMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTYxLDE2NiwxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE4NiwxNzAsMTY5LDE3NCw4NDgyLDE2NCw4NDcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MDIsOTA0LDkwNSw5MDYsOTM4LG51bGwsOTA4LG51bGwsOTEwLDkzOSxudWxs'@; put 'LDkxMSxudWxsLG51bGwsbnVsbCxudWxsLDk0MCw5NDEsOTQyLDk0Myw5NzAsOTEyLDk3Miw5NjIsOTczLDk3MSw5NDQsOTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzOCwxMDM5LG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMTA2LDEx'@; put 'MDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExOCwxMTE5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk4LDI3MixudWxsLDI5NCxudWxsLDMwNixudWxsLDMyMSwzMTksbnVsbCwzMzAsMjE2LDMzOCxudWxsLDM1OCwyMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIyLDMyMCwzMjksMzMxLDI0OCwzMzksMjIzLDM1OSwyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs'@; put 'LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTMsMTkyLDE5NiwxOTQsMjU4'@; put 'LDQ2MSwyNTYsMjYwLDE5NywxOTUsMjYyLDI2NCwyNjgsMTk5LDI2NiwyNzAsMjAxLDIwMCwyMDMsMjAyLDI4MiwyNzgsMjc0LDI4MCxudWxsLDI4NCwyODYsMjkwLDI4OCwyOTIsMjA1LDIwNCwyMDcsMjA2LDQ2MywzMDQsMjk4LDMwMiwyOTYsMzA4LDMxMCwzMTMsMzE3LDMxNSwzMjMsMzI3'@; put 'LDMyNSwyMDksMjExLDIxMCwyMTQsMjEyLDQ2NSwzMzYsMzMyLDIxMywzNDAsMzQ0LDM0MiwzNDYsMzQ4LDM1MiwzNTAsMzU2LDM1NCwyMTgsMjE3LDIyMCwyMTksMzY0LDQ2NywzNjgsMzYyLDM3MCwzNjYsMzYwLDQ3MSw0NzUsNDczLDQ2OSwzNzIsMjIxLDM3NiwzNzQsMzc3LDM4MSwzNzks'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMjUsMjI0LDIyOCwyMjYsMjU5LDQ2MiwyNTcsMjYxLDIyOSwyMjcsMjYzLDI2NSwyNjksMjMxLDI2NywyNzEsMjMzLDIzMiwyMzUsMjM0LDI4MywyNzksMjc1LDI4MSw1MDEsMjg1LDI4NyxudWxsLDI4OSwyOTMsMjM3LDIzNiwy'@; put 'MzksMjM4LDQ2NCxudWxsLDI5OSwzMDMsMjk3LDMwOSwzMTEsMzE0LDMxOCwzMTYsMzI0LDMyOCwzMjYsMjQxLDI0MywyNDIsMjQ2LDI0NCw0NjYsMzM3LDMzMywyNDUsMzQxLDM0NSwzNDMsMzQ3LDM0OSwzNTMsMzUxLDM1NywzNTUsMjUwLDI0OSwyNTIsMjUxLDM2NSw0NjgsMzY5LDM2Mywz'@; put 'NzEsMzY3LDM2MSw0NzIsNDc2LDQ3NCw0NzAsMzczLDI1MywyNTUsMzc1LDM3OCwzODIsMzgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTk3MCwxOTk3'@; put 'MiwxOTk3MywxOTk4MCwxOTk4NiwxOTk5OSwyMDAwMywyMDAwNCwyMDAwOCwyMDAxMSwyMDAxNCwyMDAxNSwyMDAxNiwyMDAyMSwyMDAzMiwyMDAzMywyMDAzNiwyMDAzOSwyMDA0OSwyMDA1OCwyMDA2MCwyMDA2NywyMDA3MiwyMDA3MywyMDA4NCwyMDA4NSwyMDA4OSwyMDA5NSwyMDEwOSwy'@; put 'MDExOCwyMDExOSwyMDEyNSwyMDE0MywyMDE1MywyMDE2MywyMDE3NiwyMDE4NiwyMDE4NywyMDE5MiwyMDE5MywyMDE5NCwyMDIwMCwyMDIwNywyMDIwOSwyMDIxMSwyMDIxMywyMDIyMSwyMDIyMiwyMDIyMywyMDIyNCwyMDIyNiwyMDIyNywyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0'@; put 'NSwyMDI0NiwyMDI0NywyMDI0OSwyMDI3MCwyMDI3MywyMDMyMCwyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4OCwyMDI5MCwyMDI5NiwyMDI5NywyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMxMiwyMDMxOSwyMDMyMywyMDMzMCwyMDMzMiwyMDMzNCwy'@; put 'MDMzNywyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MCwyMDM1MywyMDM1NCwyMDM1NiwyMDM1NywyMDM2MSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MiwyMDM3NSwyMDM3NywyMDM3OCwyMDM4MiwyMDM4MywyMDQwMiwyMDQwNywyMDQwOSwyMDQx'@; put 'MSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQyMSwyMDQyMiwyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzMSwyMDQzNCwyMDQ0NCwyMDQ0OCwyMDQ1MCwyMDQ2NCwyMDQ2NiwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4NCwyMDQ4NywyMDQ5MCwy'@; put 'MDQ5MiwyMDQ5NCwyMDQ5NiwyMDQ5OSwyMDUwMywyMDUwNCwyMDUwNywyMDUwOCwyMDUwOSwyMDUxMCwyMDUxNCwyMDUxOSwyMDUyNiwyMDUyOCwyMDUzMCwyMDUzMSwyMDUzMywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OSwyMDU1MCwyMDU1NCwyMDU1NiwyMDU1OCwyMDU2MSwyMDU2MiwyMDU2'@; put 'MywyMDU2NywyMDU2OSwyMDU3NSwyMDU3NiwyMDU3OCwyMDU3OSwyMDU4MiwyMDU4MywyMDU4NiwyMDU4OSwyMDU5MiwyMDU5MywyMDUzOSwyMDYwOSwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxOCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNiwyMDYyNywyMDYyOCwyMDYzMCwyMDYzNSwyMDYzNiwy'@; put 'MDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY1MCwyMDY1NSwyMDY1NiwyMDY2NSwyMDY2NiwyMDY2OSwyMDY3MiwyMDY3NSwyMDY3NiwyMDY3OSwyMDY4NCwyMDY4NiwyMDY4OCwyMDY5MSwyMDY5MiwyMDY5NiwyMDcwMCwyMDcwMSwyMDcwMywyMDcwNiwyMDcwOCwyMDcxMCwyMDcx'@; put 'MiwyMDcxMywyMDcxOSwyMDcyMSwyMDcyNiwyMDczMCwyMDczNCwyMDczOSwyMDc0MiwyMDc0MywyMDc0NCwyMDc0NywyMDc0OCwyMDc0OSwyMDc1MCwyMDcyMiwyMDc1MiwyMDc1OSwyMDc2MSwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc3MSwyMDc3NSwyMDc3NiwyMDc4MCwyMDc4MSwy'@; put 'MDc4MywyMDc4NSwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MiwyMDc5MywyMDgwMiwyMDgxMCwyMDgxNSwyMDgxOSwyMDgyMSwyMDgyMywyMDgyNCwyMDgzMSwyMDgzNiwyMDgzOCwyMDg2MiwyMDg2NywyMDg2OCwyMDg3NSwyMDg3OCwyMDg4OCwyMDg5MywyMDg5NywyMDg5OSwyMDkwOSwyMDky'@; put 'MCwyMDkyMiwyMDkyNCwyMDkyNiwyMDkyNywyMDkzMCwyMDkzNiwyMDk0MywyMDk0NSwyMDk0NiwyMDk0NywyMDk0OSwyMDk1MiwyMDk1OCwyMDk2MiwyMDk2NSwyMDk3NCwyMDk3OCwyMDk3OSwyMDk4MCwyMDk4MywyMDk5MywyMDk5NCwyMDk5NywyMTAxMCwyMTAxMSwyMTAxMywyMTAxNCwy'@; put 'MTAxNiwyMTAyNiwyMTAzMiwyMTA0MSwyMTA0MiwyMTA0NSwyMTA1MiwyMTA2MSwyMTA2NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MiwyMTA4NCwyMTA4NywyMTA4OCwyMTA4OSwyMTA5NCwyMTEwMiwyMTExMSwyMTExMiwyMTExMywyMTEyMCwyMTEyMiwyMTEyNSwyMTEzMCwyMTEzMiwyMTEz'@; put 'OSwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NywyMTE2OCwyMTE3NCwyMTE3NSwyMTE3NiwyMTE3OCwyMTE3OSwyMTE4MSwyMTE4NCwyMTE4OCwyMTE5MCwyMTE5MiwyMTE5NiwyMTE5OSwyMTIwMSwyMTIwNCwyMTIwNiwy'@; put 'MTIxMSwyMTIxMiwyMTIxNywyMTIyMSwyMTIyNCwyMTIyNSwyMTIyNiwyMTIyOCwyMTIzMiwyMTIzMywyMTIzNiwyMTIzOCwyMTIzOSwyMTI0OCwyMTI1MSwyMTI1OCwyMTI1OSwyMTI2MCwyMTI2NSwyMTI2NywyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4NSwyMTI4NywyMTI4'@; put 'OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NiwyMTI5OCwyMTMwMSwyMTMwOCwyMTMwOSwyMTMxMCwyMTMxNCwyMTMyNCwyMTMyMywyMTMzNywyMTMzOSwyMTM0NSwyMTM0NywyMTM0OSwyMTM1NiwyMTM1NywyMTM2MiwyMTM2OSwyMTM3NCwyMTM3OSwyMTM4MywyMTM4NCwyMTM5MCwy'@; put 'MTM5NSwyMTM5NiwyMTQwMSwyMTQwNSwyMTQwOSwyMTQxMiwyMTQxOCwyMTQxOSwyMTQyMywyMTQyNiwyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzNCwyMTQzNywyMTQ0MCwyMTQ0NSwyMTQ1NSwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OSwyMTQ3MCwyMTQ3MiwyMTQ3OCwyMTQ3'@; put 'OSwyMTQ5MywyMTUwNiwyMTUyMywyMTUzMCwyMTUzNywyMTU0MywyMTU0NCwyMTU0NiwyMTU1MSwyMTU1MywyMTU1NiwyMTU1NywyMTU3MSwyMTU3MiwyMTU3NSwyMTU4MSwyMTU4MywyMTU5OCwyMTYwMiwyMTYwNCwyMTYwNiwyMTYwNywyMTYwOSwyMTYxMSwyMTYxMywyMTYxNCwyMTYyMCwy'@; put 'MTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTY0MCwyMTY0MSwyMTY0NSwyMTY0OSwyMTY1MywyMTY1NCwyMTY2MCwyMTY2MywyMTY2NSwyMTY3MCwyMTY3MSwyMTY3MywyMTY3NCwyMTY3NywyMTY3OCwyMTY4MSwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MSwyMTY5NSwyMTcwMiwyMTcwNiwyMTcw'@; put 'OSwyMTcxMCwyMTcyOCwyMTczOCwyMTc0MCwyMTc0MywyMTc1MCwyMTc1NiwyMTc1OCwyMTc1OSwyMTc2MCwyMTc2MSwyMTc2NSwyMTc2OCwyMTc2OSwyMTc3MiwyMTc3MywyMTc3NCwyMTc4MSwyMTgwMiwyMTgwMywyMTgxMCwyMTgxMywyMTgxNCwyMTgxOSwyMTgyMCwyMTgyMSwyMTgyNSwy'@; put 'MTgzMSwyMTgzMywyMTgzNCwyMTgzNywyMTg0MCwyMTg0MSwyMTg0OCwyMTg1MCwyMTg1MSwyMTg1NCwyMTg1NiwyMTg1NywyMTg2MCwyMTg2MiwyMTg4NywyMTg4OSwyMTg5MCwyMTg5NCwyMTg5NiwyMTkwMiwyMTkwMywyMTkwNSwyMTkwNiwyMTkwNywyMTkwOCwyMTkxMSwyMTkyMywyMTky'@; put 'NCwyMTkzMywyMTkzOCwyMTk1MSwyMTk1MywyMTk1NSwyMTk1OCwyMTk2MSwyMTk2MywyMTk2NCwyMTk2NiwyMTk2OSwyMTk3MCwyMTk3MSwyMTk3NSwyMTk3NiwyMTk3OSwyMTk4MiwyMTk4NiwyMTk5MywyMjAwNiwyMjAxNSwyMjAyMSwyMjAyNCwyMjAyNiwyMjAyOSwyMjAzMCwyMjAzMSwy'@; put 'MjAzMiwyMjAzMywyMjAzNCwyMjA0MSwyMjA2MCwyMjA2NCwyMjA2NywyMjA2OSwyMjA3MSwyMjA3MywyMjA3NSwyMjA3NiwyMjA3NywyMjA3OSwyMjA4MCwyMjA4MSwyMjA4MywyMjA4NCwyMjA4NiwyMjA4OSwyMjA5MSwyMjA5MywyMjA5NSwyMjEwMCwyMjExMCwyMjExMiwyMjExMywyMjEx'@; put 'NCwyMjExNSwyMjExOCwyMjEyMSwyMjEyNSwyMjEyNywyMjEyOSwyMjEzMCwyMjEzMywyMjE0OCwyMjE0OSwyMjE1MiwyMjE1NSwyMjE1NiwyMjE2NSwyMjE2OSwyMjE3MCwyMjE3MywyMjE3NCwyMjE3NSwyMjE4MiwyMjE4MywyMjE4NCwyMjE4NSwyMjE4NywyMjE4OCwyMjE4OSwyMjE5Mywy'@; put 'MjE5NSwyMjE5OSwyMjIwNiwyMjIxMywyMjIxNywyMjIxOCwyMjIxOSwyMjIyMywyMjIyNCwyMjIyMCwyMjIyMSwyMjIzMywyMjIzNiwyMjIzNywyMjIzOSwyMjI0MSwyMjI0NCwyMjI0NSwyMjI0NiwyMjI0NywyMjI0OCwyMjI1NywyMjI1MSwyMjI1MywyMjI2MiwyMjI2MywyMjI3MywyMjI3'@; put 'NCwyMjI3OSwyMjI4MiwyMjI4NCwyMjI4OSwyMjI5MywyMjI5OCwyMjI5OSwyMjMwMSwyMjMwNCwyMjMwNiwyMjMwNywyMjMwOCwyMjMwOSwyMjMxMywyMjMxNCwyMjMxNiwyMjMxOCwyMjMxOSwyMjMyMywyMjMyNCwyMjMzMywyMjMzNCwyMjMzNSwyMjM0MSwyMjM0MiwyMjM0OCwyMjM0OSwy'@; put 'MjM1NCwyMjM3MCwyMjM3MywyMjM3NSwyMjM3NiwyMjM3OSwyMjM4MSwyMjM4MiwyMjM4MywyMjM4NCwyMjM4NSwyMjM4NywyMjM4OCwyMjM4OSwyMjM5MSwyMjM5MywyMjM5NCwyMjM5NSwyMjM5NiwyMjM5OCwyMjQwMSwyMjQwMywyMjQxMiwyMjQyMCwyMjQyMywyMjQyNSwyMjQyNiwyMjQy'@; put 'OCwyMjQyOSwyMjQzMCwyMjQzMSwyMjQzMywyMjQyMSwyMjQzOSwyMjQ0MCwyMjQ0MSwyMjQ0NCwyMjQ1NiwyMjQ2MSwyMjQ3MSwyMjQ3MiwyMjQ3NiwyMjQ3OSwyMjQ4NSwyMjQ5MywyMjQ5NCwyMjUwMCwyMjUwMiwyMjUwMywyMjUwNSwyMjUwOSwyMjUxMiwyMjUxNywyMjUxOCwyMjUyMCwy'@; put 'MjUyNSwyMjUyNiwyMjUyNywyMjUzMSwyMjUzMiwyMjUzNiwyMjUzNywyMjQ5NywyMjU0MCwyMjU0MSwyMjU1NSwyMjU1OCwyMjU1OSwyMjU2MCwyMjU2NiwyMjU2NywyMjU3MywyMjU3OCwyMjU4NSwyMjU5MSwyMjYwMSwyMjYwNCwyMjYwNSwyMjYwNywyMjYwOCwyMjYxMywyMjYyMywyMjYy'@; put 'NSwyMjYyOCwyMjYzMSwyMjYzMiwyMjY0OCwyMjY1MiwyMjY1NSwyMjY1NiwyMjY1NywyMjY2MywyMjY2NCwyMjY2NSwyMjY2NiwyMjY2OCwyMjY2OSwyMjY3MSwyMjY3MiwyMjY3NiwyMjY3OCwyMjY4NSwyMjY4OCwyMjY4OSwyMjY5MCwyMjY5NCwyMjY5NywyMjcwNSwyMjcwNiwyMjcyNCwy'@; put 'MjcxNiwyMjcyMiwyMjcyOCwyMjczMywyMjczNCwyMjczNiwyMjczOCwyMjc0MCwyMjc0MiwyMjc0NiwyMjc0OSwyMjc1MywyMjc1NCwyMjc2MSwyMjc3MSwyMjc4OSwyMjc5MCwyMjc5NSwyMjc5NiwyMjgwMiwyMjgwMywyMjgwNCwzNDM2OSwyMjgxMywyMjgxNywyMjgxOSwyMjgyMCwyMjgy'@; put 'NCwyMjgzMSwyMjgzMiwyMjgzNSwyMjgzNywyMjgzOCwyMjg0NywyMjg1MSwyMjg1NCwyMjg2NiwyMjg2NywyMjg3MywyMjg3NSwyMjg3NywyMjg3OCwyMjg3OSwyMjg4MSwyMjg4MywyMjg5MSwyMjg5MywyMjg5NSwyMjg5OCwyMjkwMSwyMjkwMiwyMjkwNSwyMjkwNywyMjkwOCwyMjkyMywy'@; put 'MjkyNCwyMjkyNiwyMjkzMCwyMjkzMywyMjkzNSwyMjk0MywyMjk0OCwyMjk1MSwyMjk1NywyMjk1OCwyMjk1OSwyMjk2MCwyMjk2MywyMjk2NywyMjk3MCwyMjk3MiwyMjk3NywyMjk3OSwyMjk4MCwyMjk4NCwyMjk4NiwyMjk4OSwyMjk5NCwyMzAwNSwyMzAwNiwyMzAwNywyMzAxMSwyMzAx'@; put 'MiwyMzAxNSwyMzAyMiwyMzAyMywyMzAyNSwyMzAyNiwyMzAyOCwyMzAzMSwyMzA0MCwyMzA0NCwyMzA1MiwyMzA1MywyMzA1NCwyMzA1OCwyMzA1OSwyMzA3MCwyMzA3NSwyMzA3NiwyMzA3OSwyMzA4MCwyMzA4MiwyMzA4NSwyMzA4OCwyMzEwOCwyMzEwOSwyMzExMSwyMzExMiwyMzExNiwy'@; put 'MzEyMCwyMzEyNSwyMzEzNCwyMzEzOSwyMzE0MSwyMzE0MywyMzE0OSwyMzE1OSwyMzE2MiwyMzE2MywyMzE2NiwyMzE3OSwyMzE4NCwyMzE4NywyMzE5MCwyMzE5MywyMzE5NiwyMzE5OCwyMzE5OSwyMzIwMCwyMzIwMiwyMzIwNywyMzIxMiwyMzIxNywyMzIxOCwyMzIxOSwyMzIyMSwyMzIy'@; put 'NCwyMzIyNiwyMzIyNywyMzIzMSwyMzIzNiwyMzIzOCwyMzI0MCwyMzI0NywyMzI1OCwyMzI2MCwyMzI2NCwyMzI2OSwyMzI3NCwyMzI3OCwyMzI4NSwyMzI4NiwyMzI5MywyMzI5NiwyMzI5NywyMzMwNCwyMzMxOSwyMzM0OCwyMzMyMSwyMzMyMywyMzMyNSwyMzMyOSwyMzMzMywyMzM0MSwy'@; put 'MzM1MiwyMzM2MSwyMzM3MSwyMzM3MiwyMzM3OCwyMzM4MiwyMzM5MCwyMzQwMCwyMzQwNiwyMzQwNywyMzQyMCwyMzQyMSwyMzQyMiwyMzQyMywyMzQyNSwyMzQyOCwyMzQzMCwyMzQzNCwyMzQzOCwyMzQ0MCwyMzQ0MSwyMzQ0MywyMzQ0NCwyMzQ0NiwyMzQ2NCwyMzQ2NSwyMzQ2OCwyMzQ2'@; put 'OSwyMzQ3MSwyMzQ3MywyMzQ3NCwyMzQ3OSwyMzQ4MiwyMzQ4NCwyMzQ4OCwyMzQ4OSwyMzUwMSwyMzUwMywyMzUxMCwyMzUxMSwyMzUxMiwyMzUxMywyMzUxNCwyMzUyMCwyMzUzNSwyMzUzNywyMzU0MCwyMzU0OSwyMzU2NCwyMzU3NSwyMzU4MiwyMzU4MywyMzU4NywyMzU5MCwyMzU5Mywy'@; put 'MzU5NSwyMzU5NiwyMzU5OCwyMzYwMCwyMzYwMiwyMzYwNSwyMzYwNiwyMzY0MSwyMzY0MiwyMzY0NCwyMzY1MCwyMzY1MSwyMzY1NSwyMzY1NiwyMzY1NywyMzY2MSwyMzY2NCwyMzY2OCwyMzY2OSwyMzY3NCwyMzY3NSwyMzY3NiwyMzY3NywyMzY4NywyMzY4OCwyMzY5MCwyMzY5NSwyMzY5'@; put 'OCwyMzcwOSwyMzcxMSwyMzcxMiwyMzcxNCwyMzcxNSwyMzcxOCwyMzcyMiwyMzczMCwyMzczMiwyMzczMywyMzczOCwyMzc1MywyMzc1NSwyMzc2MiwyMzc3MywyMzc2NywyMzc5MCwyMzc5MywyMzc5NCwyMzc5NiwyMzgwOSwyMzgxNCwyMzgyMSwyMzgyNiwyMzg1MSwyMzg0MywyMzg0NCwy'@; put 'Mzg0NiwyMzg0NywyMzg1NywyMzg2MCwyMzg2NSwyMzg2OSwyMzg3MSwyMzg3NCwyMzg3NSwyMzg3OCwyMzg4MCwyMzg5MywyMzg4OSwyMzg5NywyMzg4MiwyMzkwMywyMzkwNCwyMzkwNSwyMzkwNiwyMzkwOCwyMzkxNCwyMzkxNywyMzkyMCwyMzkyOSwyMzkzMCwyMzkzNCwyMzkzNSwyMzkz'@; put 'NywyMzkzOSwyMzk0NCwyMzk0NiwyMzk1NCwyMzk1NSwyMzk1NiwyMzk1NywyMzk2MSwyMzk2MywyMzk2NywyMzk2OCwyMzk3NSwyMzk3OSwyMzk4NCwyMzk4OCwyMzk5MiwyMzk5MywyNDAwMywyNDAwNywyNDAxMSwyNDAxNiwyNDAxNCwyNDAyNCwyNDAyNSwyNDAzMiwyNDAzNiwyNDA0MSwy'@; put 'NDA1NiwyNDA1NywyNDA2NCwyNDA3MSwyNDA3NywyNDA4MiwyNDA4NCwyNDA4NSwyNDA4OCwyNDA5NSwyNDA5NiwyNDExMCwyNDEwNCwyNDExNCwyNDExNywyNDEyNiwyNDEzOSwyNDE0NCwyNDEzNywyNDE0NSwyNDE1MCwyNDE1MiwyNDE1NSwyNDE1NiwyNDE1OCwyNDE2OCwyNDE3MCwyNDE3'@; put 'MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NiwyNDE5MiwyNDIwMywyNDIwNiwyNDIyNiwyNDIyOCwyNDIyOSwyNDIzMiwyNDIzNCwyNDIzNiwyNDI0MSwyNDI0MywyNDI1MywyNDI1NCwyNDI1NSwyNDI2MiwyNDI2OCwyNDI2NywyNDI3MCwyNDI3MywyNDI3NCwyNDI3NiwyNDI3NywyNDI4NCwy'@; put 'NDI4NiwyNDI5MywyNDI5OSwyNDMyMiwyNDMyNiwyNDMyNywyNDMyOCwyNDMzNCwyNDM0NSwyNDM0OCwyNDM0OSwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MiwyNDM3NCwyNDM3OSwyNDM4MSwyNDM4MywyNDM4NCwyNDM4OCwyNDM4'@; put 'OSwyNDM5MSwyNDM5NywyNDQwMCwyNDQwNCwyNDQwOCwyNDQxMSwyNDQxNiwyNDQxOSwyNDQyMCwyNDQyMywyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ1NywyNDQ2MSwyNDQ2MywyNDQ3MCwyNDQ3NiwyNDQ3NywyNDQ4MiwyNDQ4NywyNDQ5MSwy'@; put 'NDQ4NCwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDUwNCwyNDUxNiwyNDUxOSwyNDUyMCwyNDUyMSwyNDUyMywyNDUyOCwyNDUyOSwyNDUzMCwyNDUzMSwyNDUzMiwyNDU0MiwyNDU0NSwyNDU0NiwyNDU1MiwyNDU1MywyNDU1NCwyNDU1NiwyNDU1NywyNDU1OCwyNDU1OSwyNDU2MiwyNDU2'@; put 'MywyNDU2NiwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NiwyNDU4OSwyNDU5NSwyNDU5NiwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNywyNDYxMiwyNDYyMSwyNDYyNywyNDYyOSwyNDY0MCwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MiwyNDY1NywyNDY2MCwyNDY2MiwyNDY2MywyNDY2OSwyNDY3Mywy'@; put 'NDY3OSwyNDY4OSwyNDcwMiwyNDcwMywyNDcwNiwyNDcxMCwyNDcxMiwyNDcxNCwyNDcxOCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyOCwyNDczMywyNDczNCwyNDczOCwyNDc0MCwyNDc0MSwyNDc0NCwyNDc1MiwyNDc1MywyNDc1OSwyNDc2MywyNDc2NiwyNDc3MCwyNDc3MiwyNDc3NiwyNDc3'@; put 'NywyNDc3OCwyNDc3OSwyNDc4MiwyNDc4MywyNDc4OCwyNDc4OSwyNDc5MywyNDc5NSwyNDc5NywyNDc5OCwyNDgwMiwyNDgwNSwyNDgxOCwyNDgyMSwyNDgyNCwyNDgyOCwyNDgyOSwyNDgzNCwyNDgzOSwyNDg0MiwyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwy'@; put 'NDg1NSwyNDg1NywyNDg2MCwyNDg2MiwyNDg2NiwyNDg3NCwyNDg3NSwyNDg4MCwyNDg4MSwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OSwyNDg5NywyNDkwMSwyNDkwMiwyNDkwNSwyNDkyNiwyNDkyOCwyNDk0MCwyNDk0NiwyNDk1MiwyNDk1NSwyNDk1NiwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2'@; put 'MywyNDk2NCwyNDk3MSwyNDk3MywyNDk3OCwyNDk3OSwyNDk4MywyNDk4NCwyNDk4OCwyNDk4OSwyNDk5MSwyNDk5MiwyNDk5NywyNWUzLDI1MDAyLDI1MDA1LDI1MDE2LDI1MDE3LDI1MDIwLDI1MDI0LDI1MDI1LDI1MDI2LDI1MDM4LDI1MDM5LDI1MDQ1LDI1MDUyLDI1MDUzLDI1MDU0LDI1'@; put 'MDU1LDI1MDU3LDI1MDU4LDI1MDYzLDI1MDY1LDI1MDYxLDI1MDY4LDI1MDY5LDI1MDcxLDI1MDg5LDI1MDkxLDI1MDkyLDI1MDk1LDI1MTA3LDI1MTA5LDI1MTE2LDI1MTIwLDI1MTIyLDI1MTIzLDI1MTI3LDI1MTI5LDI1MTMxLDI1MTQ1LDI1MTQ5LDI1MTU0LDI1MTU1LDI1MTU2LDI1MTU4'@; put 'LDI1MTY0LDI1MTY4LDI1MTY5LDI1MTcwLDI1MTcyLDI1MTc0LDI1MTc4LDI1MTgwLDI1MTg4LDI1MTk3LDI1MTk5LDI1MjAzLDI1MjEwLDI1MjEzLDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjU0LDI1MjU2LDI1MjY3LDI1MjcwLDI1MjcxLDI1Mjc0LDI1Mjc4LDI1Mjc5LDI1Mjg0LDI1'@; put 'Mjk0LDI1MzAxLDI1MzAyLDI1MzA2LDI1MzIyLDI1MzMwLDI1MzMyLDI1MzQwLDI1MzQxLDI1MzQ3LDI1MzQ4LDI1MzU0LDI1MzU1LDI1MzU3LDI1MzYwLDI1MzYzLDI1MzY2LDI1MzY4LDI1Mzg1LDI1Mzg2LDI1Mzg5LDI1Mzk3LDI1Mzk4LDI1NDAxLDI1NDA0LDI1NDA5LDI1NDEwLDI1NDEx'@; put 'LDI1NDEyLDI1NDE0LDI1NDE4LDI1NDE5LDI1NDIyLDI1NDI2LDI1NDI3LDI1NDI4LDI1NDMyLDI1NDM1LDI1NDQ1LDI1NDQ2LDI1NDUyLDI1NDUzLDI1NDU3LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY4LDI1NDY5LDI1NDcxLDI1NDc0LDI1NDc2LDI1NDc5LDI1NDgyLDI1NDg4LDI1NDkyLDI1'@; put 'NDkzLDI1NDk3LDI1NDk4LDI1NTAyLDI1NTA4LDI1NTEwLDI1NTE3LDI1NTE4LDI1NTE5LDI1NTMzLDI1NTM3LDI1NTQxLDI1NTQ0LDI1NTUwLDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTY0LDI1NTY4LDI1NTczLDI1NTc4LDI1NTgwLDI1NTg2LDI1NTg3LDI1NTg5LDI1NTkyLDI1NTkz'@; put 'LDI1NjA5LDI1NjEwLDI1NjE2LDI1NjE4LDI1NjIwLDI1NjI0LDI1NjMwLDI1NjMyLDI1NjM0LDI1NjM2LDI1NjM3LDI1NjQxLDI1NjQyLDI1NjQ3LDI1NjQ4LDI1NjUzLDI1NjYxLDI1NjYzLDI1Njc1LDI1Njc5LDI1NjgxLDI1NjgyLDI1NjgzLDI1Njg0LDI1NjkwLDI1NjkxLDI1NjkyLDI1'@; put 'NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk5LDI1NzA5LDI1NzE1LDI1NzE2LDI1NzIzLDI1NzI1LDI1NzMzLDI1NzM1LDI1NzQzLDI1NzQ0LDI1NzQ1LDI1NzUyLDI1NzUzLDI1NzU1LDI1NzU3LDI1NzU5LDI1NzYxLDI1NzYzLDI1NzY2LDI1NzY4LDI1NzcyLDI1Nzc5LDI1Nzg5LDI1Nzkw'@; put 'LDI1NzkxLDI1Nzk2LDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0LDI1ODA2LDI1ODA4LDI1ODA5LDI1ODEzLDI1ODE1LDI1ODI4LDI1ODI5LDI1ODMzLDI1ODM0LDI1ODM3LDI1ODQwLDI1ODQ1LDI1ODQ3LDI1ODUxLDI1ODU1LDI1ODU3LDI1ODYwLDI1ODY0LDI1ODY1LDI1ODY2LDI1ODcxLDI1'@; put 'ODc1LDI1ODc2LDI1ODc4LDI1ODgxLDI1ODgzLDI1ODg2LDI1ODg3LDI1ODkwLDI1ODk0LDI1ODk3LDI1OTAyLDI1OTA1LDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIzLDI1OTI3LDI1OTI5LDI1OTM2LDI1OTM4LDI1OTQwLDI1OTUxLDI1OTUyLDI1OTU5LDI1OTYzLDI1OTc4LDI1OTgxLDI1OTg1'@; put 'LDI1OTg5LDI1OTk0LDI2MDAyLDI2MDA1LDI2MDA4LDI2MDEzLDI2MDE2LDI2MDE5LDI2MDIyLDI2MDMwLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDQ3LDI2MDUwLDI2MDU2LDI2MDU3LDI2MDYyLDI2MDY0LDI2MDY4LDI2MDcwLDI2MDcyLDI2MDc5LDI2MDk2LDI2MDk4LDI2MTAwLDI2MTAxLDI2'@; put 'MTA1LDI2MTEwLDI2MTExLDI2MTEyLDI2MTE2LDI2MTIwLDI2MTIxLDI2MTI1LDI2MTI5LDI2MTMwLDI2MTMzLDI2MTM0LDI2MTQxLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2LDI2MTU4LDI2MTYwLDI2MTYxLDI2MTYzLDI2MTY5'@; put 'LDI2MTY3LDI2MTc2LDI2MTgxLDI2MTgyLDI2MTg2LDI2MTg4LDI2MTkzLDI2MTkwLDI2MTk5LDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA4LDI2MjA5LDI2MzYzLDI2MjE4LDI2MjE5LDI2MjIwLDI2MjM4LDI2MjI3LDI2MjI5LDI2MjM5LDI2MjMxLDI2MjMyLDI2MjMzLDI2MjM1LDI2'@; put 'MjQwLDI2MjM2LDI2MjUxLDI2MjUyLDI2MjUzLDI2MjU2LDI2MjU4LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcxLDI2MjcyLDI2Mjc2LDI2Mjg1LDI2Mjg5LDI2MjkwLDI2MjkzLDI2Mjk5LDI2MzAzLDI2MzA0LDI2MzA2LDI2MzA3LDI2MzEyLDI2MzE2LDI2MzE4LDI2MzE5LDI2MzI0'@; put 'LDI2MzMxLDI2MzM1LDI2MzQ0LDI2MzQ3LDI2MzQ4LDI2MzUwLDI2MzYyLDI2MzczLDI2Mzc1LDI2MzgyLDI2Mzg3LDI2MzkzLDI2Mzk2LDI2NDAwLDI2NDAyLDI2NDE5LDI2NDMwLDI2NDM3LDI2NDM5LDI2NDQwLDI2NDQ0LDI2NDUyLDI2NDUzLDI2NDYxLDI2NDcwLDI2NDc2LDI2NDc4LDI2'@; put 'NDg0LDI2NDg2LDI2NDkxLDI2NDk3LDI2NTAwLDI2NTEwLDI2NTExLDI2NTEzLDI2NTE1LDI2NTE4LDI2NTIwLDI2NTIxLDI2NTIzLDI2NTQ0LDI2NTQ1LDI2NTQ2LDI2NTQ5LDI2NTU1LDI2NTU2LDI2NTU3LDI2NjE3LDI2NTYwLDI2NTYyLDI2NTYzLDI2NTY1LDI2NTY4LDI2NTY5LDI2NTc4'@; put 'LDI2NTgzLDI2NTg1LDI2NTg4LDI2NTkzLDI2NTk4LDI2NjA4LDI2NjEwLDI2NjE0LDI2NjE1LDI2NzA2LDI2NjQ0LDI2NjQ5LDI2NjUzLDI2NjU1LDI2NjY0LDI2NjYzLDI2NjY4LDI2NjY5LDI2NjcxLDI2NjcyLDI2NjczLDI2Njc1LDI2NjgzLDI2Njg3LDI2NjkyLDI2NjkzLDI2Njk4LDI2'@; put 'NzAwLDI2NzA5LDI2NzExLDI2NzEyLDI2NzE1LDI2NzMxLDI2NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzQxLDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzU0LDI2NzU2LDI2NzU4LDI2NzYwLDI2Nzc0LDI2Nzc2LDI2Nzc4LDI2NzgwLDI2Nzg1LDI2Nzg3LDI2Nzg5LDI2Nzkz'@; put 'LDI2Nzk0LDI2Nzk4LDI2ODAyLDI2ODExLDI2ODIxLDI2ODI0LDI2ODI4LDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM4LDI2ODQxLDI2ODQ0LDI2ODQ1LDI2ODUzLDI2ODU2LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODY0LDI2ODY1LDI2ODY5LDI2ODcwLDI2ODc1LDI2ODc2LDI2'@; put 'ODc3LDI2ODg2LDI2ODg5LDI2ODkwLDI2ODk2LDI2ODk3LDI2ODk5LDI2OTAyLDI2OTAzLDI2OTI5LDI2OTMxLDI2OTMzLDI2OTM2LDI2OTM5LDI2OTQ2LDI2OTQ5LDI2OTUzLDI2OTU4LDI2OTY3LDI2OTcxLDI2OTc5LDI2OTgwLDI2OTgxLDI2OTgyLDI2OTg0LDI2OTg1LDI2OTg4LDI2OTky'@; put 'LDI2OTkzLDI2OTk0LDI3MDAyLDI3MDAzLDI3MDA3LDI3MDA4LDI3MDIxLDI3MDI2LDI3MDMwLDI3MDMyLDI3MDQxLDI3MDQ1LDI3MDQ2LDI3MDQ4LDI3MDUxLDI3MDUzLDI3MDU1LDI3MDYzLDI3MDY0LDI3MDY2LDI3MDY4LDI3MDc3LDI3MDgwLDI3MDg5LDI3MDk0LDI3MDk1LDI3MTA2LDI3'@; put 'MTA5LDI3MTE4LDI3MTE5LDI3MTIxLDI3MTIzLDI3MTI1LDI3MTM0LDI3MTM2LDI3MTM3LDI3MTM5LDI3MTUxLDI3MTUzLDI3MTU3LDI3MTYyLDI3MTY1LDI3MTY4LDI3MTcyLDI3MTc2LDI3MTg0LDI3MTg2LDI3MTg4LDI3MTkxLDI3MTk1LDI3MTk4LDI3MTk5LDI3MjA1LDI3MjA2LDI3MjA5'@; put 'LDI3MjEwLDI3MjE0LDI3MjE2LDI3MjE3LDI3MjE4LDI3MjIxLDI3MjIyLDI3MjI3LDI3MjM2LDI3MjM5LDI3MjQyLDI3MjQ5LDI3MjUxLDI3MjYyLDI3MjY1LDI3MjY3LDI3MjcwLDI3MjcxLDI3MjczLDI3Mjc1LDI3MjgxLDI3MjkxLDI3MjkzLDI3Mjk0LDI3Mjk1LDI3MzAxLDI3MzA3LDI3'@; put 'MzExLDI3MzEyLDI3MzEzLDI3MzE2LDI3MzI1LDI3MzI2LDI3MzI3LDI3MzM0LDI3MzM3LDI3MzM2LDI3MzQwLDI3MzQ0LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzU2LDI3MzU3LDI3MzY0LDI3MzY3LDI3MzcyLDI3Mzc2LDI3Mzc3LDI3Mzc4LDI3Mzg4LDI3Mzg5LDI3Mzk0LDI3Mzk1LDI3Mzk4'@; put 'LDI3Mzk5LDI3NDAxLDI3NDA3LDI3NDA4LDI3NDA5LDI3NDE1LDI3NDE5LDI3NDIyLDI3NDI4LDI3NDMyLDI3NDM1LDI3NDM2LDI3NDM5LDI3NDQ1LDI3NDQ2LDI3NDUxLDI3NDU1LDI3NDYyLDI3NDY2LDI3NDY5LDI3NDc0LDI3NDc4LDI3NDgwLDI3NDg1LDI3NDg4LDI3NDk1LDI3NDk5LDI3'@; put 'NTAyLDI3NTA0LDI3NTA5LDI3NTE3LDI3NTE4LDI3NTIyLDI3NTI1LDI3NTQzLDI3NTQ3LDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTYwLDI3NTYxLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY4LDI3NTc2LDI3NTc3LDI3NTgxLDI3NTgyLDI3NTg3LDI3NTg4LDI3NTkzLDI3NTk2LDI3NjA2'@; put 'LDI3NjEwLDI3NjE3LDI3NjE5LDI3NjIyLDI3NjIzLDI3NjMwLDI3NjMzLDI3NjM5LDI3NjQxLDI3NjQ3LDI3NjUwLDI3NjUyLDI3NjUzLDI3NjU3LDI3NjYxLDI3NjYyLDI3NjY0LDI3NjY2LDI3NjczLDI3Njc5LDI3Njg2LDI3Njg3LDI3Njg4LDI3NjkyLDI3Njk0LDI3Njk5LDI3NzAxLDI3'@; put 'NzAyLDI3NzA2LDI3NzA3LDI3NzExLDI3NzIyLDI3NzIzLDI3NzI1LDI3NzI3LDI3NzMwLDI3NzMyLDI3NzM3LDI3NzM5LDI3NzQwLDI3NzU1LDI3NzU3LDI3NzU5LDI3NzY0LDI3NzY2LDI3NzY4LDI3NzY5LDI3NzcxLDI3NzgxLDI3NzgyLDI3NzgzLDI3Nzg1LDI3Nzk2LDI3Nzk3LDI3Nzk5'@; put 'LDI3ODAwLDI3ODA0LDI3ODA3LDI3ODI0LDI3ODI2LDI3ODI4LDI3ODQyLDI3ODQ2LDI3ODUzLDI3ODU1LDI3ODU2LDI3ODU3LDI3ODU4LDI3ODYwLDI3ODYyLDI3ODY2LDI3ODY4LDI3ODcyLDI3ODc5LDI3ODgxLDI3ODgzLDI3ODg0LDI3ODg2LDI3ODkwLDI3ODkyLDI3OTA4LDI3OTExLDI3'@; put 'OTE0LDI3OTE4LDI3OTE5LDI3OTIxLDI3OTIzLDI3OTMwLDI3OTQyLDI3OTQzLDI3OTQ0LDI3NzUxLDI3OTUwLDI3OTUxLDI3OTUzLDI3OTYxLDI3OTY0LDI3OTY3LDI3OTkxLDI3OTk4LDI3OTk5LDI4MDAxLDI4MDA1LDI4MDA3LDI4MDE1LDI4MDE2LDI4MDI4LDI4MDM0LDI4MDM5LDI4MDQ5'@; put 'LDI4MDUwLDI4MDUyLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDc0LDI4MDc2LDI4MDg0LDI4MDg3LDI4MDg5LDI4MDkzLDI4MDk1LDI4MTAwLDI4MTA0LDI4MTA2LDI4MTEwLDI4MTExLDI4MTE4LDI4MTIzLDI4MTI1LDI4MTI3LDI4MTI4LDI4MTMwLDI4MTMzLDI4MTM3LDI4MTQzLDI4MTQ0LDI4'@; put 'MTQ4LDI4MTUwLDI4MTU2LDI4MTYwLDI4MTY0LDI4MTkwLDI4MTk0LDI4MTk5LDI4MjEwLDI4MjE0LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjI4LDI4MjI5LDI4MjMyLDI4MjMzLDI4MjM1LDI4MjM5LDI4MjQxLDI4MjQyLDI4MjQzLDI4MjQ0LDI4MjQ3LDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU4'@; put 'LDI4MjU5LDI4MjY0LDI4Mjc1LDI4MjgzLDI4Mjg1LDI4MzAxLDI4MzA3LDI4MzEzLDI4MzIwLDI4MzI3LDI4MzMzLDI4MzM0LDI4MzM3LDI4MzM5LDI4MzQ3LDI4MzUxLDI4MzUyLDI4MzUzLDI4MzU1LDI4MzU5LDI4MzYwLDI4MzYyLDI4MzY1LDI4MzY2LDI4MzY3LDI4Mzk1LDI4Mzk3LDI4'@; put 'Mzk4LDI4NDA5LDI4NDExLDI4NDEzLDI4NDIwLDI4NDI0LDI4NDI2LDI4NDI4LDI4NDI5LDI4NDM4LDI4NDQwLDI4NDQyLDI4NDQzLDI4NDU0LDI4NDU3LDI4NDU4LDI4NDYzLDI4NDY0LDI4NDY3LDI4NDcwLDI4NDc1LDI4NDc2LDI4NDYxLDI4NDk1LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAz'@; put 'LDI4NTA1LDI4NTA2LDI4NTA5LDI4NTEwLDI4NTEzLDI4NTE0LDI4NTIwLDI4NTI0LDI4NTQxLDI4NTQyLDI4NTQ3LDI4NTUxLDI4NTUyLDI4NTU1LDI4NTU2LDI4NTU3LDI4NTYwLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY2LDI4NTcwLDI4NTc1LDI4NTc2LDI4NTgxLDI4NTgyLDI4NTgzLDI4'@; put 'NTg0LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTk3LDI4NTk4LDI4NjA0LDI4NjEzLDI4NjE1LDI4NjE2LDI4NjE4LDI4NjM0LDI4NjM4LDI4NjQ4LDI4NjQ5LDI4NjU2LDI4NjYxLDI4NjY1LDI4NjY4LDI4NjY5LDI4NjcyLDI4Njc3LDI4Njc4LDI4Njc5LDI4Njg1LDI4Njk1LDI4NzA0LDI4NzA3'@; put 'LDI4NzE5LDI4NzI0LDI4NzI3LDI4NzI5LDI4NzMyLDI4NzM5LDI4NzQwLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzU2LDI4NzU3LDI4NzY1LDI4NzY2LDI4NzUwLDI4NzcyLDI4NzczLDI4NzgwLDI4NzgyLDI4Nzg5LDI4NzkwLDI4Nzk4LDI4ODAxLDI4ODA1LDI4ODA2LDI4ODIwLDI4'@; put 'ODIxLDI4ODIyLDI4ODIzLDI4ODI0LDI4ODI3LDI4ODM2LDI4ODQzLDI4ODQ4LDI4ODQ5LDI4ODUyLDI4ODU1LDI4ODc0LDI4ODgxLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg4LDI4ODkyLDI4OTAwLDI4OTIyLDI4OTMxLDI4OTMyLDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM5LDI4OTQw'@; put 'LDI4OTQzLDI4OTU4LDI4OTYwLDI4OTcxLDI4OTczLDI4OTc1LDI4OTc2LDI4OTc3LDI4OTg0LDI4OTkzLDI4OTk3LDI4OTk4LDI4OTk5LDI5MDAyLDI5MDAzLDI5MDA4LDI5MDEwLDI5MDE1LDI5MDE4LDI5MDIwLDI5MDIyLDI5MDI0LDI5MDMyLDI5MDQ5LDI5MDU2LDI5MDYxLDI5MDYzLDI5'@; put 'MDY4LDI5MDc0LDI5MDgyLDI5MDgzLDI5MDg4LDI5MDkwLDI5MTAzLDI5MTA0LDI5MTA2LDI5MTA3LDI5MTE0LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTI0LDI5MTMxLDI5MTMyLDI5MTM5LDI5MTQyLDI5MTQ1LDI5MTQ2LDI5MTQ4LDI5MTc2LDI5MTgyLDI5MTg0LDI5MTkxLDI5MTkyLDI5MTkz'@; put 'LDI5MjAzLDI5MjA3LDI5MjEwLDI5MjEzLDI5MjE1LDI5MjIwLDI5MjI3LDI5MjMxLDI5MjM2LDI5MjQwLDI5MjQxLDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUzLDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY3LDI5MjY5LDI5MjcwLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg4LDI5'@; put 'MjkxLDI5Mjk0LDI5Mjk1LDI5Mjk3LDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzExLDI5MzE2LDI5MzIxLDI5MzI1LDI5MzI2LDI5MzMxLDI5MzM5LDI5MzUyLDI5MzU3LDI5MzU4LDI5MzYxLDI5MzY0LDI5Mzc0LDI5Mzc3LDI5MzgzLDI5Mzg1LDI5Mzg4LDI5Mzk3LDI5Mzk4LDI5NDAw'@; put 'LDI5NDA3LDI5NDEzLDI5NDI3LDI5NDI4LDI5NDM0LDI5NDM1LDI5NDM4LDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ3LDI5NDUxLDI5NDUzLDI5NDU4LDI5NDU5LDI5NDY0LDI5NDY1LDI5NDcwLDI5NDc0LDI5NDc2LDI5NDc5LDI5NDgwLDI5NDg0LDI5NDg5LDI5NDkwLDI5NDkzLDI5NDk4LDI5'@; put 'NDk5LDI5NTAxLDI5NTA3LDI5NTE3LDI5NTIwLDI5NTIyLDI5NTI2LDI5NTI4LDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTQyLDI5NTQzLDI5NTQ1LDI5NTQ3LDI5NTQ4LDI5NTUwLDI5NTUxLDI5NTUzLDI5NTU5LDI5NTYxLDI5NTY0LDI5NTY4LDI5NTY5LDI5NTcxLDI5NTczLDI5NTc0'@; put 'LDI5NTgyLDI5NTg0LDI5NTg3LDI5NTg5LDI5NTkxLDI5NTkyLDI5NTk2LDI5NTk4LDI5NTk5LDI5NjAwLDI5NjAyLDI5NjA1LDI5NjA2LDI5NjEwLDI5NjExLDI5NjEzLDI5NjIxLDI5NjIzLDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMxLDI5NjM3LDI5NjM4LDI5NjQxLDI5NjQzLDI5NjQ0LDI5'@; put 'NjQ3LDI5NjUwLDI5NjUxLDI5NjU0LDI5NjU3LDI5NjYxLDI5NjY1LDI5NjY3LDI5NjcwLDI5NjcxLDI5NjczLDI5Njg0LDI5Njg1LDI5Njg3LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkzLDI5Njk1LDI5Njk2LDI5Njk3LDI5NzAwLDI5NzAzLDI5NzA2LDI5NzEzLDI5NzIyLDI5NzIzLDI5NzMy'@; put 'LDI5NzM0LDI5NzM2LDI5NzM3LDI5NzM4LDI5NzM5LDI5NzQwLDI5NzQxLDI5NzQyLDI5NzQzLDI5NzQ0LDI5NzQ1LDI5NzUzLDI5NzYwLDI5NzYzLDI5NzY0LDI5NzY2LDI5NzY3LDI5NzcxLDI5NzczLDI5Nzc3LDI5Nzc4LDI5NzgzLDI5Nzg5LDI5Nzk0LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5'@; put 'ODAzLDI5ODA1LDI5ODA2LDI5ODA5LDI5ODEwLDI5ODI0LDI5ODI1LDI5ODI5LDI5ODMwLDI5ODMxLDI5ODMzLDI5ODM5LDI5ODQwLDI5ODQxLDI5ODQyLDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUyLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU5LDI5ODYyLDI5ODY0LDI5ODY1LDI5ODY2LDI5ODY3'@; put 'LDI5ODcwLDI5ODcxLDI5ODczLDI5ODc0LDI5ODc3LDI5ODgxLDI5ODgzLDI5ODg3LDI5ODk2LDI5ODk3LDI5OTAwLDI5OTA0LDI5OTA3LDI5OTEyLDI5OTE0LDI5OTE1LDI5OTE4LDI5OTE5LDI5OTI0LDI5OTI4LDI5OTMwLDI5OTMxLDI5OTM1LDI5OTQwLDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5'@; put 'OTUxLDI5OTU4LDI5OTcwLDI5OTc0LDI5OTc1LDI5OTg0LDI5OTg1LDI5OTg4LDI5OTkxLDI5OTkzLDI5OTk0LDI5OTk5LDMwMDA2LDMwMDA5LDMwMDEzLDMwMDE0LDMwMDE1LDMwMDE2LDMwMDE5LDMwMDIzLDMwMDI0LDMwMDMwLDMwMDMyLDMwMDM0LDMwMDM5LDMwMDQ2LDMwMDQ3LDMwMDQ5'@; put 'LDMwMDYzLDMwMDY1LDMwMDczLDMwMDc0LDMwMDc1LDMwMDc2LDMwMDc3LDMwMDc4LDMwMDgxLDMwMDg1LDMwMDk2LDMwMDk4LDMwMDk5LDMwMTAxLDMwMTA1LDMwMTA4LDMwMTE0LDMwMTE2LDMwMTMyLDMwMTM4LDMwMTQzLDMwMTQ0LDMwMTQ1LDMwMTQ4LDMwMTUwLDMwMTU2LDMwMTU4LDMw'@; put 'MTU5LDMwMTY3LDMwMTcyLDMwMTc1LDMwMTc2LDMwMTc3LDMwMTgwLDMwMTgzLDMwMTg4LDMwMTkwLDMwMTkxLDMwMTkzLDMwMjAxLDMwMjA4LDMwMjEwLDMwMjExLDMwMjEyLDMwMjE1LDMwMjE2LDMwMjE4LDMwMjIwLDMwMjIzLDMwMjI2LDMwMjI3LDMwMjI5LDMwMjMwLDMwMjMzLDMwMjM1'@; put 'LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQzLDMwMjQ1LDMwMjQ2LDMwMjQ5LDMwMjUzLDMwMjU4LDMwMjU5LDMwMjYxLDMwMjY0LDMwMjY1LDMwMjY2LDMwMjY4LDMwMjgyLDMwMjcyLDMwMjczLDMwMjc1LDMwMjc2LDMwMjc3LDMwMjgxLDMwMjgzLDMwMjkzLDMwMjk3LDMwMzAzLDMwMzA4LDMw'@; put 'MzA5LDMwMzE3LDMwMzE4LDMwMzE5LDMwMzIxLDMwMzI0LDMwMzM3LDMwMzQxLDMwMzQ4LDMwMzQ5LDMwMzU3LDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY3LDMwMzY4LDMwMzcwLDMwMzcxLDMwMzcyLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2LDMwMzc4LDMwMzgxLDMwMzk3LDMwNDAxLDMwNDA1'@; put 'LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE0LDMwNDIwLDMwNDI1LDMwNDMyLDMwNDM4LDMwNDQwLDMwNDQ0LDMwNDQ4LDMwNDQ5LDMwNDU0LDMwNDU3LDMwNDYwLDMwNDY0LDMwNDcwLDMwNDc0LDMwNDc4LDMwNDgyLDMwNDg0LDMwNDg1LDMwNDg3LDMwNDg5LDMwNDkwLDMwNDkyLDMwNDk4LDMw'@; put 'NTA0LDMwNTA5LDMwNTEwLDMwNTExLDMwNTE2LDMwNTE3LDMwNTE4LDMwNTIxLDMwNTI1LDMwNTI2LDMwNTMwLDMwNTMzLDMwNTM0LDMwNTM4LDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTUwLDMwNTUxLDMwNTU2LDMwNTU4LDMwNTU5LDMwNTYwLDMwNTYyLDMwNTY0LDMwNTY3LDMwNTcw'@; put 'LDMwNTcyLDMwNTc2LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTg2LDMwNTg5LDMwNTkyLDMwNTk2LDMwNjA0LDMwNjA1LDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE4LDMwNjIzLDMwNjI2LDMwNjMxLDMwNjM0LDMwNjM4LDMwNjM5LDMwNjQxLDMwNjQ1LDMwNjU0LDMwNjU5LDMwNjY1LDMwNjczLDMw'@; put 'Njc0LDMwNjc3LDMwNjgxLDMwNjg2LDMwNjg3LDMwNjg4LDMwNjkyLDMwNjk0LDMwNjk4LDMwNzAwLDMwNzA0LDMwNzA1LDMwNzA4LDMwNzEyLDMwNzE1LDMwNzI1LDMwNzI2LDMwNzI5LDMwNzMzLDMwNzM0LDMwNzM3LDMwNzQ5LDMwNzUzLDMwNzU0LDMwNzU1LDMwNzY1LDMwNzY2LDMwNzY4'@; put 'LDMwNzczLDMwNzc1LDMwNzg3LDMwNzg4LDMwNzkxLDMwNzkyLDMwNzk2LDMwNzk4LDMwODAyLDMwODEyLDMwODE0LDMwODE2LDMwODE3LDMwODE5LDMwODIwLDMwODI0LDMwODI2LDMwODMwLDMwODQyLDMwODQ2LDMwODU4LDMwODYzLDMwODY4LDMwODcyLDMwODgxLDMwODc3LDMwODc4LDMw'@; put 'ODc5LDMwODg0LDMwODg4LDMwODkyLDMwODkzLDMwODk2LDMwODk3LDMwODk4LDMwODk5LDMwOTA3LDMwOTA5LDMwOTExLDMwOTE5LDMwOTIwLDMwOTIxLDMwOTI0LDMwOTI2LDMwOTMwLDMwOTMxLDMwOTMzLDMwOTM0LDMwOTQ4LDMwOTM5LDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTUwLDMwOTU0'@; put 'LDMwOTYyLDMwOTYzLDMwOTc2LDMwOTY2LDMwOTY3LDMwOTcwLDMwOTcxLDMwOTc1LDMwOTgyLDMwOTg4LDMwOTkyLDMxMDAyLDMxMDA0LDMxMDA2LDMxMDA3LDMxMDA4LDMxMDEzLDMxMDE1LDMxMDE3LDMxMDIxLDMxMDI1LDMxMDI4LDMxMDI5LDMxMDM1LDMxMDM3LDMxMDM5LDMxMDQ0LDMx'@; put 'MDQ1LDMxMDQ2LDMxMDUwLDMxMDUxLDMxMDU1LDMxMDU3LDMxMDYwLDMxMDY0LDMxMDY3LDMxMDY4LDMxMDc5LDMxMDgxLDMxMDgzLDMxMDkwLDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAyLDMxMTE1LDMxMTE2LDMxMTIxLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI4LDMxMTMxLDMxMTMy'@; put 'LDMxMTM3LDMxMTQ0LDMxMTQ1LDMxMTQ3LDMxMTUxLDMxMTUzLDMxMTU2LDMxMTYwLDMxMTYzLDMxMTcwLDMxMTcyLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgzLDMxMTg4LDMxMTkwLDMxMTk0LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAyLDMxMjA1LDMxMjEwLDMxMjExLDMxMjEzLDMxMjE3LDMx'@; put 'MjI0LDMxMjI4LDMxMjM0LDMxMjM1LDMxMjM5LDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ5LDMxMjUzLDMxMjU5LDMxMjYyLDMxMjY1LDMxMjcxLDMxMjc1LDMxMjc3LDMxMjc5LDMxMjgwLDMxMjg0LDMxMjg1LDMxMjg4LDMxMjg5LDMxMjkwLDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA4'@; put 'LDMxMzE3LDMxMzE4LDMxMzIxLDMxMzI0LDMxMzI1LDMxMzI3LDMxMzI4LDMxMzMzLDMxMzM1LDMxMzM4LDMxMzQxLDMxMzQ5LDMxMzUyLDMxMzU4LDMxMzYwLDMxMzYyLDMxMzY1LDMxMzY2LDMxMzcwLDMxMzcxLDMxMzc2LDMxMzc3LDMxMzgwLDMxMzkwLDMxMzkyLDMxMzk1LDMxNDA0LDMx'@; put 'NDExLDMxNDEzLDMxNDE3LDMxNDE5LDMxNDIwLDMxNDMwLDMxNDMzLDMxNDM2LDMxNDM4LDMxNDQxLDMxNDUxLDMxNDY0LDMxNDY1LDMxNDY3LDMxNDY4LDMxNDczLDMxNDc2LDMxNDgzLDMxNDg1LDMxNDg2LDMxNDk1LDMxNTA4LDMxNTE5LDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMwLDMxNTMx'@; put 'LDMxNTMzLDMxNTM0LDMxNTM1LDMxNTM2LDMxNTM3LDMxNTQwLDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU5LDMxNTY2LDMxNTczLDMxNTg0LDMxNTg4LDMxNTkwLDMxNTkzLDMxNTk0LDMxNTk3LDMxNTk5LDMxNjAyLDMxNjAzLDMxNjA3LDMxNjIwLDMxNjI1LDMxNjMwLDMxNjMyLDMx'@; put 'NjMzLDMxNjM4LDMxNjQzLDMxNjQ2LDMxNjQ4LDMxNjUzLDMxNjYwLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY5LDMxNjcwLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjgyLDMxNjg1LDMxNjg4LDMxNjkwLDMxNzAwLDMxNzAyLDMxNzAzLDMxNzA1LDMxNzA2LDMxNzA3LDMxNzIwLDMxNzIy'@; put 'LDMxNzMwLDMxNzMyLDMxNzMzLDMxNzM2LDMxNzM3LDMxNzM4LDMxNzQwLDMxNzQyLDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzUwLDMxNzUzLDMxNzU1LDMxNzU2LDMxNzU4LDMxNzU5LDMxNzY5LDMxNzcxLDMxNzc2LDMxNzgxLDMxNzgyLDMxNzg0LDMxNzg4LDMxNzkzLDMxNzk1LDMx'@; put 'Nzk2LDMxNzk4LDMxODAxLDMxODAyLDMxODE0LDMxODE4LDMxODI5LDMxODI1LDMxODI2LDMxODI3LDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODQxLDMxODQzLDMxODQ3LDMxODQ5LDMxODUzLDMxODU0LDMxODU2LDMxODU4LDMxODY1LDMxODY4LDMxODY5LDMxODc4'@; put 'LDMxODc5LDMxODg3LDMxODkyLDMxOTAyLDMxOTA0LDMxOTEwLDMxOTIwLDMxOTI2LDMxOTI3LDMxOTMwLDMxOTMxLDMxOTMyLDMxOTM1LDMxOTQwLDMxOTQzLDMxOTQ0LDMxOTQ1LDMxOTQ5LDMxOTUxLDMxOTU1LDMxOTU2LDMxOTU3LDMxOTU5LDMxOTYxLDMxOTYyLDMxOTY1LDMxOTc0LDMx'@; put 'OTc3LDMxOTc5LDMxOTg5LDMyMDAzLDMyMDA3LDMyMDA4LDMyMDA5LDMyMDE1LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIyLDMyMDI5LDMyMDMwLDMyMDM1LDMyMDM4LDMyMDQyLDMyMDQ1LDMyMDQ5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDY0LDMyMDY1LDMyMDcxLDMyMDcyLDMyMDc3LDMyMDgx'@; put 'LDMyMDgzLDMyMDg3LDMyMDg5LDMyMDkwLDMyMDkyLDMyMDkzLDMyMTAxLDMyMTAzLDMyMTA2LDMyMTEyLDMyMTIwLDMyMTIyLDMyMTIzLDMyMTI3LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMzLDMyMTM0LDMyMTM2LDMyMTM5LDMyMTQwLDMyMTQxLDMyMTQ1LDMyMTUwLDMyMTUxLDMyMTU3LDMy'@; put 'MTU4LDMyMTY2LDMyMTY3LDMyMTcwLDMyMTc5LDMyMTgyLDMyMTgzLDMyMTg1LDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMjA0LDMyMjA1LDMyMjA2LDMyMjE1LDMyMjE3LDMyMjU2LDMyMjI2LDMyMjI5LDMyMjMwLDMyMjM0LDMyMjM1LDMyMjM3LDMyMjQxLDMyMjQ1LDMyMjQ2'@; put 'LDMyMjQ5LDMyMjUwLDMyMjY0LDMyMjcyLDMyMjczLDMyMjc3LDMyMjc5LDMyMjg0LDMyMjg1LDMyMjg4LDMyMjk1LDMyMjk2LDMyMzAwLDMyMzAxLDMyMzAzLDMyMzA3LDMyMzEwLDMyMzE5LDMyMzI0LDMyMzI1LDMyMzI3LDMyMzM0LDMyMzM2LDMyMzM4LDMyMzQ0LDMyMzUxLDMyMzUzLDMy'@; put 'MzU0LDMyMzU3LDMyMzYzLDMyMzY2LDMyMzY3LDMyMzcxLDMyMzc2LDMyMzgyLDMyMzg1LDMyMzkwLDMyMzkxLDMyMzk0LDMyMzk3LDMyNDAxLDMyNDA1LDMyNDA4LDMyNDEwLDMyNDEzLDMyNDE0LDMyNTcyLDMyNTcxLDMyNTczLDMyNTc0LDMyNTc1LDMyNTc5LDMyNTgwLDMyNTgzLDMyNTkx'@; put 'LDMyNTk0LDMyNTk1LDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA5LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjIxLDMyNjI1LDMyNjM3LDMyNjM4LDMyNjM5LDMyNjQwLDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjYyLDMyNjYzLDMyNjY4LDMyNjczLDMyNjc0LDMyNjc4LDMy'@; put 'NjgyLDMyNjg1LDMyNjkyLDMyNzAwLDMyNzAzLDMyNzA0LDMyNzA3LDMyNzEyLDMyNzE4LDMyNzE5LDMyNzMxLDMyNzM1LDMyNzM5LDMyNzQxLDMyNzQ0LDMyNzQ4LDMyNzUwLDMyNzUxLDMyNzU0LDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3LDMyNzc1LDMyNzc2LDMyNzc4LDMyNzgxLDMyNzgy'@; put 'LDMyNzgzLDMyNzg1LDMyNzg3LDMyNzg4LDMyNzkwLDMyNzk3LDMyNzk4LDMyNzk5LDMyODAwLDMyODA0LDMyODA2LDMyODEyLDMyODE0LDMyODE2LDMyODIwLDMyODIxLDMyODIzLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMyODM2LDMyODY0LDMyODY4LDMyODcwLDMyODc3LDMy'@; put 'ODgxLDMyODg1LDMyODk3LDMyOTA0LDMyOTEwLDMyOTI0LDMyOTI2LDMyOTM0LDMyOTM1LDMyOTM5LDMyOTUyLDMyOTUzLDMyOTY4LDMyOTczLDMyOTc1LDMyOTc4LDMyOTgwLDMyOTgxLDMyOTgzLDMyOTg0LDMyOTkyLDMzMDA1LDMzMDA2LDMzMDA4LDMzMDEwLDMzMDExLDMzMDE0LDMzMDE3'@; put 'LDMzMDE4LDMzMDIyLDMzMDI3LDMzMDM1LDMzMDQ2LDMzMDQ3LDMzMDQ4LDMzMDUyLDMzMDU0LDMzMDU2LDMzMDYwLDMzMDYzLDMzMDY4LDMzMDcyLDMzMDc3LDMzMDgyLDMzMDg0LDMzMDkzLDMzMDk1LDMzMDk4LDMzMTAwLDMzMTA2LDMzMTExLDMzMTIwLDMzMTIxLDMzMTI3LDMzMTI4LDMz'@; put 'MTI5LDMzMTMzLDMzMTM1LDMzMTQzLDMzMTUzLDMzMTY4LDMzMTU2LDMzMTU3LDMzMTU4LDMzMTYzLDMzMTY2LDMzMTc0LDMzMTc2LDMzMTc5LDMzMTgyLDMzMTg2LDMzMTk4LDMzMjAyLDMzMjA0LDMzMjExLDMzMjI3LDMzMjE5LDMzMjIxLDMzMjI2LDMzMjMwLDMzMjMxLDMzMjM3LDMzMjM5'@; put 'LDMzMjQzLDMzMjQ1LDMzMjQ2LDMzMjQ5LDMzMjUyLDMzMjU5LDMzMjYwLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcyLDMzMjczLDMzMjc3LDMzMjc5LDMzMjgwLDMzMjgzLDMzMjk1LDMzMjk5LDMzMzAwLDMzMzA1LDMzMzA2LDMzMzA5LDMzMzEzLDMzMzE0LDMzMzIwLDMz'@; put 'MzMwLDMzMzMyLDMzMzM4LDMzMzQ3LDMzMzQ4LDMzMzQ5LDMzMzUwLDMzMzU1LDMzMzU4LDMzMzU5LDMzMzYxLDMzMzY2LDMzMzcyLDMzMzc2LDMzMzc5LDMzMzgzLDMzMzg5LDMzMzk2LDMzNDAzLDMzNDA1LDMzNDA3LDMzNDA4LDMzNDA5LDMzNDExLDMzNDEyLDMzNDE1LDMzNDE3LDMzNDE4'@; put 'LDMzNDIyLDMzNDI1LDMzNDI4LDMzNDMwLDMzNDMyLDMzNDM0LDMzNDM1LDMzNDQwLDMzNDQxLDMzNDQzLDMzNDQ0LDMzNDQ3LDMzNDQ4LDMzNDQ5LDMzNDUwLDMzNDU0LDMzNDU2LDMzNDU4LDMzNDYwLDMzNDYzLDMzNDY2LDMzNDY4LDMzNDcwLDMzNDcxLDMzNDc4LDMzNDg4LDMzNDkzLDMz'@; put 'NDk4LDMzNTA0LDMzNTA2LDMzNTA4LDMzNTEyLDMzNTE0LDMzNTE3LDMzNTE5LDMzNTI2LDMzNTI3LDMzNTMzLDMzNTM0LDMzNTM2LDMzNTM3LDMzNTQzLDMzNTQ0LDMzNTQ2LDMzNTQ3LDMzNjIwLDMzNTYzLDMzNTY1LDMzNTY2LDMzNTY3LDMzNTY5LDMzNTcwLDMzNTgwLDMzNTgxLDMzNTgy'@; put 'LDMzNTg0LDMzNTg3LDMzNTkxLDMzNTk0LDMzNTk2LDMzNTk3LDMzNjAyLDMzNjAzLDMzNjA0LDMzNjA3LDMzNjEzLDMzNjE0LDMzNjE3LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjQ4LDMzNjU2LDMzNjYxLDMzNjYzLDMzNjY0LDMzNjY2LDMzNjY4LDMzNjcwLDMzNjc3LDMzNjgyLDMzNjg0LDMz'@; put 'Njg1LDMzNjg4LDMzNjg5LDMzNjkxLDMzNjkyLDMzNjkzLDMzNzAyLDMzNzAzLDMzNzA1LDMzNzA4LDMzNzI2LDMzNzI3LDMzNzI4LDMzNzM1LDMzNzM3LDMzNzQzLDMzNzQ0LDMzNzQ1LDMzNzQ4LDMzNzU3LDMzNjE5LDMzNzY4LDMzNzcwLDMzNzgyLDMzNzg0LDMzNzg1LDMzNzg4LDMzNzkz'@; put 'LDMzNzk4LDMzODAyLDMzODA3LDMzODA5LDMzODEzLDMzODE3LDMzNzA5LDMzODM5LDMzODQ5LDMzODYxLDMzODYzLDMzODY0LDMzODY2LDMzODY5LDMzODcxLDMzODczLDMzODc0LDMzODc4LDMzODgwLDMzODgxLDMzODgyLDMzODg0LDMzODg4LDMzODkyLDMzODkzLDMzODk1LDMzODk4LDMz'@; put 'OTA0LDMzOTA3LDMzOTA4LDMzOTEwLDMzOTEyLDMzOTE2LDMzOTE3LDMzOTIxLDMzOTI1LDMzOTM4LDMzOTM5LDMzOTQxLDMzOTUwLDMzOTU4LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTY3LDMzOTY5LDMzOTcyLDMzOTc4LDMzOTgxLDMzOTgyLDMzOTg0LDMzOTg2LDMzOTkxLDMzOTkyLDMzOTk2'@; put 'LDMzOTk5LDM0MDAzLDM0MDEyLDM0MDIzLDM0MDI2LDM0MDMxLDM0MDMyLDM0MDMzLDM0MDM0LDM0MDM5LDM0MDk4LDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDUwLDM0MDUxLDM0MDU1LDM0MDYwLDM0MDYyLDM0MDY0LDM0MDc2LDM0MDc4LDM0MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg3LDM0'@; put 'MDkwLDM0MDkxLDM0MDk1LDM0MDk5LDM0MTAwLDM0MTAyLDM0MTExLDM0MTE4LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTM0LDM0MTM3LDM0MTQwLDM0MTQxLDM0MTQyLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ4LDM0MTU1LDM0MTU5LDM0MTY5LDM0MTcwLDM0MTcx'@; put 'LDM0MTczLDM0MTc1LDM0MTc3LDM0MTgxLDM0MTgyLDM0MTg1LDM0MTg3LDM0MTg4LDM0MTkxLDM0MTk1LDM0MjAwLDM0MjA1LDM0MjA3LDM0MjA4LDM0MjEwLDM0MjEzLDM0MjE1LDM0MjI4LDM0MjMwLDM0MjMxLDM0MjMyLDM0MjM2LDM0MjM3LDM0MjM4LDM0MjM5LDM0MjQyLDM0MjQ3LDM0'@; put 'MjUwLDM0MjUxLDM0MjU0LDM0MjIxLDM0MjY0LDM0MjY2LDM0MjcxLDM0MjcyLDM0Mjc4LDM0MjgwLDM0Mjg1LDM0MjkxLDM0Mjk0LDM0MzAwLDM0MzAzLDM0MzA0LDM0MzA4LDM0MzA5LDM0MzE3LDM0MzE4LDM0MzIwLDM0MzIxLDM0MzIyLDM0MzI4LDM0MzI5LDM0MzMxLDM0MzM0LDM0MzM3'@; put 'LDM0MzQzLDM0MzQ1LDM0MzU4LDM0MzYwLDM0MzYyLDM0MzY0LDM0MzY1LDM0MzY4LDM0MzcwLDM0Mzc0LDM0Mzg2LDM0Mzg3LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk3LDM0NDAwLDM0NDAxLDM0NDAyLDM0NDAzLDM0NDA0LDM0NDA5LDM0NDEyLDM0NDE1LDM0NDIxLDM0NDIyLDM0'@; put 'NDIzLDM0NDI2LDM0NDQ1LDM0NDQ5LDM0NDU0LDM0NDU2LDM0NDU4LDM0NDYwLDM0NDY1LDM0NDcwLDM0NDcxLDM0NDcyLDM0NDc3LDM0NDgxLDM0NDgzLDM0NDg0LDM0NDg1LDM0NDg3LDM0NDg4LDM0NDg5LDM0NDk1LDM0NDk2LDM0NDk3LDM0NDk5LDM0NTAxLDM0NTEzLDM0NTE0LDM0NTE3'@; put 'LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI4LDM0NTMxLDM0NTMzLDM0NTM1LDM0NDQwLDM0NTU0LDM0NTU2LDM0NTU3LDM0NTY0LDM0NTY1LDM0NTY3LDM0NTcxLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc5LDM0NTgwLDM0NTg1LDM0NTkwLDM0NTkxLDM0NTkzLDM0NTk1LDM0NjAwLDM0NjA2LDM0'@; put 'NjA3LDM0NjA5LDM0NjEwLDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjIyLDM0NjI0LDM0NjI3LDM0NjI5LDM0NjM3LDM0NjQ4LDM0NjUzLDM0NjU3LDM0NjYwLDM0NjYxLDM0NjcxLDM0NjczLDM0Njc0LDM0NjgzLDM0NjkxLDM0NjkyLDM0NjkzLDM0Njk0LDM0Njk1LDM0Njk2LDM0Njk3'@; put 'LDM0Njk5LDM0NzAwLDM0NzA0LDM0NzA3LDM0NzA5LDM0NzExLDM0NzEyLDM0NzEzLDM0NzE4LDM0NzIwLDM0NzIzLDM0NzI3LDM0NzMyLDM0NzMzLDM0NzM0LDM0NzM3LDM0NzQxLDM0NzUwLDM0NzUxLDM0NzUzLDM0NzYwLDM0NzYxLDM0NzYyLDM0NzY2LDM0NzczLDM0Nzc0LDM0Nzc3LDM0'@; put 'Nzc4LDM0NzgwLDM0NzgzLDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0Nzk0LDM0Nzk1LDM0Nzk3LDM0ODAxLDM0ODAzLDM0ODA4LDM0ODEwLDM0ODE1LDM0ODE3LDM0ODE5LDM0ODIyLDM0ODI1LDM0ODI2LDM0ODI3LDM0ODMyLDM0ODQxLDM0ODM0LDM0ODM1LDM0ODM2LDM0ODQwLDM0ODQyLDM0ODQz'@; put 'LDM0ODQ0LDM0ODQ2LDM0ODQ3LDM0ODU2LDM0ODYxLDM0ODYyLDM0ODY0LDM0ODY2LDM0ODY5LDM0ODc0LDM0ODc2LDM0ODgxLDM0ODgzLDM0ODg1LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk3LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA4LDM0OTExLDM0OTEyLDM0'@; put 'OTE2LDM0OTIxLDM0OTI5LDM0OTM3LDM0OTM5LDM0OTQ0LDM0OTY4LDM0OTcwLDM0OTcxLDM0OTcyLDM0OTc1LDM0OTc2LDM0OTg0LDM0OTg2LDM1MDAyLDM1MDA1LDM1MDA2LDM1MDA4LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIyLDM1MDI1LDM1MDI2LDM1MDI3LDM1MDM1LDM1MDM4'@; put 'LDM1MDQ3LDM1MDU1LDM1MDU2LDM1MDU3LDM1MDYxLDM1MDYzLDM1MDczLDM1MDc4LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDkzLDM1MDk0LDM1MDk2LDM1MDk3LDM1MDk4LDM1MTAwLDM1MTA0LDM1MTEwLDM1MTExLDM1MTEyLDM1MTIwLDM1MTIxLDM1MTIyLDM1MTI1LDM1MTI5LDM1MTMwLDM1'@; put 'MTM0LDM1MTM2LDM1MTM4LDM1MTQxLDM1MTQyLDM1MTQ1LDM1MTUxLDM1MTU0LDM1MTU5LDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTc5LDM1MTgyLDM1MTg0LDM1MTg3LDM1MTg5LDM1MTk0LDM1MTk1LDM1MTk2LDM1MTk3LDM1MjA5LDM1MjEzLDM1MjE2LDM1MjIw'@; put 'LDM1MjIxLDM1MjI3LDM1MjI4LDM1MjMxLDM1MjMyLDM1MjM3LDM1MjQ4LDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjYwLDM1Mjg0LDM1Mjg1LDM1Mjg2LDM1Mjg3LDM1Mjg4LDM1MzAxLDM1MzA1LDM1MzA3LDM1MzA5LDM1MzEzLDM1MzE1LDM1MzE4LDM1MzIxLDM1MzI1LDM1MzI3LDM1'@; put 'MzMyLDM1MzMzLDM1MzM1LDM1MzQzLDM1MzQ1LDM1MzQ2LDM1MzQ4LDM1MzQ5LDM1MzU4LDM1MzYwLDM1MzYyLDM1MzY0LDM1MzY2LDM1MzcxLDM1MzcyLDM1Mzc1LDM1MzgxLDM1MzgzLDM1Mzg5LDM1MzkwLDM1MzkyLDM1Mzk1LDM1Mzk3LDM1Mzk5LDM1NDAxLDM1NDA1LDM1NDA2LDM1NDEx'@; put 'LDM1NDE0LDM1NDE1LDM1NDE2LDM1NDIwLDM1NDIxLDM1NDI1LDM1NDI5LDM1NDMxLDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ5LDM1NDUwLDM1NDUxLDM1NDU0LDM1NDU1LDM1NDU2LDM1NDU5LDM1NDYyLDM1NDY3LDM1NDcxLDM1NDcyLDM1NDc0LDM1NDc4LDM1NDc5LDM1NDgxLDM1NDg3LDM1'@; put 'NDk1LDM1NDk3LDM1NTAyLDM1NTAzLDM1NTA3LDM1NTEwLDM1NTExLDM1NTE1LDM1NTE4LDM1NTIzLDM1NTI2LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTM3LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQzLDM1NTQ5LDM1NTUxLDM1NTY0LDM1NTY4LDM1NTcyLDM1NTczLDM1NTc0LDM1NTgwLDM1NTgz'@; put 'LDM1NTg5LDM1NTkwLDM1NTk1LDM1NjAxLDM1NjEyLDM1NjE0LDM1NjE1LDM1NTk0LDM1NjI5LDM1NjMyLDM1NjM5LDM1NjQ0LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDM1NjU0LDM1NjU2LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjczLDM1NjYxLDM1Njc4LDM1NjgzLDM1NjkzLDM1NzAyLDM1'@; put 'NzA0LDM1NzA1LDM1NzA4LDM1NzEwLDM1NzEzLDM1NzE2LDM1NzE3LDM1NzIzLDM1NzI1LDM1NzI3LDM1NzMyLDM1NzMzLDM1NzQwLDM1NzQyLDM1NzQzLDM1ODk2LDM1ODk3LDM1OTAxLDM1OTAyLDM1OTA5LDM1OTExLDM1OTEzLDM1OTE1LDM1OTE5LDM1OTIxLDM1OTIzLDM1OTI0LDM1OTI3'@; put 'LDM1OTI4LDM1OTMxLDM1OTMzLDM1OTI5LDM1OTM5LDM1OTQwLDM1OTQyLDM1OTQ0LDM1OTQ1LDM1OTQ5LDM1OTU1LDM1OTU3LDM1OTU4LDM1OTYzLDM1OTY2LDM1OTc0LDM1OTc1LDM1OTc5LDM1OTg0LDM1OTg2LDM1OTg3LDM1OTkzLDM1OTk1LDM1OTk2LDM2MDA0LDM2MDI1LDM2MDI2LDM2'@; put 'MDM3LDM2MDM4LDM2MDQxLDM2MDQzLDM2MDQ3LDM2MDU0LDM2MDUzLDM2MDU3LDM2MDYxLDM2MDY1LDM2MDcyLDM2MDc2LDM2MDc5LDM2MDgwLDM2MDgyLDM2MDg1LDM2MDg3LDM2MDg4LDM2MDk0LDM2MDk1LDM2MDk3LDM2MDk5LDM2MTA1LDM2MTE0LDM2MTE5LDM2MTIzLDM2MTk3LDM2MjAx'@; put 'LDM2MjA0LDM2MjA2LDM2MjIzLDM2MjI2LDM2MjI4LDM2MjMyLDM2MjM3LDM2MjQwLDM2MjQxLDM2MjQ1LDM2MjU0LDM2MjU1LDM2MjU2LDM2MjYyLDM2MjY3LDM2MjY4LDM2MjcxLDM2Mjc0LDM2Mjc3LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg4LDM2MjkzLDM2Mjk0LDM2Mjk1LDM2Mjk2LDM2'@; put 'Mjk4LDM2MzAyLDM2MzA1LDM2MzA4LDM2MzA5LDM2MzExLDM2MzEzLDM2MzI0LDM2MzI1LDM2MzI3LDM2MzMyLDM2MzM2LDM2Mjg0LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQ5LDM2MzUzLDM2MzU2LDM2MzU3LDM2MzU4LDM2MzYzLDM2MzY5LDM2MzcyLDM2Mzc0LDM2Mzg0LDM2Mzg1LDM2Mzg2'@; put 'LDM2Mzg3LDM2MzkwLDM2MzkxLDM2NDAxLDM2NDAzLDM2NDA2LDM2NDA3LDM2NDA4LDM2NDA5LDM2NDEzLDM2NDE2LDM2NDE3LDM2NDI3LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDM2LDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ5LDM2NDUwLDM2NDU3LDM2NDYwLDM2NDYxLDM2NDYzLDM2'@; put 'NDY0LDM2NDY1LDM2NDczLDM2NDc0LDM2NDc1LDM2NDgyLDM2NDgzLDM2NDg5LDM2NDk2LDM2NDk4LDM2NTAxLDM2NTA2LDM2NTA3LDM2NTA5LDM2NTEwLDM2NTE0LDM2NTE5LDM2NTIxLDM2NTI1LDM2NTI2LDM2NTMxLDM2NTMzLDM2NTM4LDM2NTM5LDM2NTQ0LDM2NTQ1LDM2NTQ3LDM2NTQ4'@; put 'LDM2NTUxLDM2NTU5LDM2NTYxLDM2NTY0LDM2NTcyLDM2NTg0LDM2NTkwLDM2NTkyLDM2NTkzLDM2NTk5LDM2NjAxLDM2NjAyLDM2NTg5LDM2NjA4LDM2NjEwLDM2NjE1LDM2NjE2LDM2NjIzLDM2NjI0LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjM4LDM2NjQwLDM2NjQxLDM2NjQzLDM2NjQ1LDM2'@; put 'NjQ3LDM2NjQ4LDM2NjUyLDM2NjUzLDM2NjU0LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY2LDM2NjcyLDM2NjczLDM2Njc1LDM2Njc5LDM2Njg3LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk2LDM2NzAxLDM2NzAyLDM2NzA5LDM2NzY1LDM2NzY4LDM2NzY5LDM2Nzcy'@; put 'LDM2NzczLDM2Nzc0LDM2Nzg5LDM2NzkwLDM2NzkyLDM2Nzk4LDM2ODAwLDM2ODAxLDM2ODA2LDM2ODEwLDM2ODExLDM2ODEzLDM2ODE2LDM2ODE4LDM2ODE5LDM2ODIxLDM2ODMyLDM2ODM1LDM2ODM2LDM2ODQwLDM2ODQ2LDM2ODQ5LDM2ODUzLDM2ODU0LDM2ODU5LDM2ODYyLDM2ODY2LDM2'@; put 'ODY4LDM2ODcyLDM2ODc2LDM2ODg4LDM2ODkxLDM2OTA0LDM2OTA1LDM2OTExLDM2OTA2LDM2OTA4LDM2OTA5LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTI3LDM2OTMxLDM2OTMyLDM2OTQwLDM2OTU1LDM2OTU3LDM2OTYyLDM2OTY2LDM2OTY3LDM2OTcyLDM2OTc2LDM2OTgwLDM2OTg1LDM2OTk3'@; put 'LDM3ZTMsMzcwMDMsMzcwMDQsMzcwMDYsMzcwMDgsMzcwMTMsMzcwMTUsMzcwMTYsMzcwMTcsMzcwMTksMzcwMjQsMzcwMjUsMzcwMjYsMzcwMjksMzcwNDAsMzcwNDIsMzcwNDMsMzcwNDQsMzcwNDYsMzcwNTMsMzcwNjgsMzcwNTQsMzcwNTksMzcwNjAsMzcwNjEsMzcwNjMsMzcwNjQsMzcw'@; put 'NzcsMzcwNzksMzcwODAsMzcwODEsMzcwODQsMzcwODUsMzcwODcsMzcwOTMsMzcwNzQsMzcxMTAsMzcwOTksMzcxMDMsMzcxMDQsMzcxMDgsMzcxMTgsMzcxMTksMzcxMjAsMzcxMjQsMzcxMjUsMzcxMjYsMzcxMjgsMzcxMzMsMzcxMzYsMzcxNDAsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYs'@; put 'MzcxNDgsMzcxNTAsMzcxNTIsMzcxNTcsMzcxNTQsMzcxNTUsMzcxNTksMzcxNjEsMzcxNjYsMzcxNjcsMzcxNjksMzcxNzIsMzcxNzQsMzcxNzUsMzcxNzcsMzcxNzgsMzcxODAsMzcxODEsMzcxODcsMzcxOTEsMzcxOTIsMzcxOTksMzcyMDMsMzcyMDcsMzcyMDksMzcyMTAsMzcyMTEsMzcy'@; put 'MTcsMzcyMjAsMzcyMjMsMzcyMjksMzcyMzYsMzcyNDEsMzcyNDIsMzcyNDMsMzcyNDksMzcyNTEsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNjIsMzcyNjUsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzIsMzcyNzgsMzcyODEsMzcyODYsMzcyODgsMzcyOTIsMzcyOTMsMzcyOTQsMzcyOTYsMzcyOTcs'@; put 'MzcyOTgsMzcyOTksMzczMDIsMzczMDcsMzczMDgsMzczMDksMzczMTEsMzczMTQsMzczMTUsMzczMTcsMzczMzEsMzczMzIsMzczMzUsMzczMzcsMzczMzgsMzczNDIsMzczNDgsMzczNDksMzczNTMsMzczNTQsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjcsMzcz'@; put 'NjksMzczNzEsMzczNzMsMzczNzYsMzczNzcsMzczODAsMzczODEsMzczODIsMzczODMsMzczODUsMzczODYsMzczODgsMzczOTIsMzczOTQsMzczOTUsMzczOTgsMzc0MDAsMzc0MDQsMzc0MDUsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTYsMzc0MjIsMzc0MjMsMzc0MjQsMzc0Mjcs'@; put 'Mzc0MjksMzc0MzAsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzYsMzc0MzgsMzc0NDAsMzc0NDIsMzc0NDMsMzc0NDYsMzc0NDcsMzc0NTAsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTcsMzc0NjQsMzc0NjUsMzc0NjgsMzc0NjksMzc0NzIsMzc0NzMsMzc0NzcsMzc0NzksMzc0ODAsMzc0ODEsMzc0'@; put 'ODYsMzc0ODcsMzc0ODgsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDMsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTcsMzc1MTgsMzc1MjIsMzc1MjcsMzc1MjksMzc1MzUsMzc1MzYsMzc1NDAsMzc1NDEsMzc1NDMsMzc1NDQsMzc1NDcsMzc1NTEs'@; put 'Mzc1NTQsMzc1NTgsMzc1NjAsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzYsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODQsMzc1ODcsMzc1ODksMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTYsMzc1'@; put 'OTcsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDMsMzc2MDUsMzc2MDcsMzc2MDgsMzc2MTIsMzc2MTQsMzc2MTYsMzc2MjUsMzc2MjcsMzc2MzEsMzc2MzIsMzc2MzQsMzc2NDAsMzc2NDUsMzc2NDksMzc2NTIsMzc2NTMsMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjUsMzc2NjgsMzc2Njks'@; put 'Mzc2NzEsMzc2NzMsMzc2NzQsMzc2ODMsMzc2ODQsMzc2ODYsMzc2ODcsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTcsMzc3MTksMzc3MjAsMzc3MjIsMzc3MjYsMzc3MzIsMzc3MzMsMzc3MzUsMzc3MzcsMzc3MzgsMzc3NDEsMzc3NDMsMzc3NDQsMzc3NDUsMzc3'@; put 'NDcsMzc3NDgsMzc3NTAsMzc3NTQsMzc3NTcsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjgsMzc3NzAsMzc3NzEsMzc3NzMsMzc3NzUsMzc3NzgsMzc3ODEsMzc3ODQsMzc3ODcsMzc3OTAsMzc3OTMsMzc3OTUsMzc3OTYsMzc3OTgsMzc4MDAsMzc4MDMsMzc4MTIsMzc4MTMsMzc4MTQs'@; put 'Mzc4MTgsMzc4MDEsMzc4MjUsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzMsMzc4MzQsMzc4MzUsMzc4MzYsMzc4MzcsMzc4NDMsMzc4NDksMzc4NTIsMzc4NTQsMzc4NTUsMzc4NTgsMzc4NjIsMzc4NjMsMzc4ODEsMzc4NzksMzc4ODAsMzc4ODIsMzc4ODMsMzc4ODUsMzc4ODksMzc4'@; put 'OTAsMzc4OTIsMzc4OTYsMzc4OTcsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTksMzc5MzQsMzc5MzUsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDcsMzc5NTEsMzc5NDksMzc5NTUsMzc5NTcsMzc5NjAsMzc5NjIsMzc5NjQsMzc5NzMsMzc5NzcsMzc5ODAs'@; put 'Mzc5ODMsMzc5ODUsMzc5ODcsMzc5OTIsMzc5OTUsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDEsMzgwMDIsMzgwMjAsMzgwMTksMzgyNjQsMzgyNjUsMzgyNzAsMzgyNzYsMzgyODAsMzgyODQsMzgyODUsMzgyODYsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDUsMzgzMTAsMzgzMTMsMzgzMTUsMzgz'@; put 'MTYsMzgzMjQsMzgzMjYsMzgzMzAsMzgzMzMsMzgzMzUsMzgzNDIsMzgzNDQsMzgzNDUsMzgzNDcsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNjEsMzgzNjIsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNzIsMzgzNzQsMzg0MjksMzg0MzAsMzg0MzQsMzg0MzYsMzg0MzcsMzg0Mzgs'@; put 'Mzg0NDQsMzg0NDksMzg0NTEsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjAsMzg0NjEsMzg0NjUsMzg0ODIsMzg0ODQsMzg0ODYsMzg0ODcsMzg0ODgsMzg0OTcsMzg1MTAsMzg1MTYsMzg1MjMsMzg1MjQsMzg1MjYsMzg1MjcsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzcsMzg1'@; put 'NDUsMzg1NTAsMzg1NTQsMzg1NTcsMzg1NTksMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjksMzg1NzQsMzg1NzUsMzg1NzksMzg1ODYsMzg2MDIsMzg2MTAsMjM5ODYsMzg2MTYsMzg2MTgsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MzMsMzg2MzksMzg2NDEsMzg2NTAsMzg2NTgsMzg2NTksMzg2NjEs'@; put 'Mzg2NjUsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTYsMzg3MDUsMzg3MDcsMzg3MjEsMzg3MjMsMzg3MzAsMzg3MzQsMzg3MzUsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDcsMzg3NTUsMzg3NTksMzg3NjIsMzg3NjYsMzg3NzEsMzg3NzQsMzg3NzUsMzg3'@; put 'NzYsMzg3NzksMzg3ODEsMzg3ODMsMzg3ODQsMzg3OTMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTQsMzg4MTUsMzg4MTgsMzg4MjgsMzg4MzAsMzg4MzMsMzg4MzQsMzg4MzcsMzg4MzgsMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDQsMzg4NDYsMzg4NDcsMzg4NDksMzg4NTIs'@; put 'Mzg4NTMsMzg4NTUsMzg4NTcsMzg4NTgsMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjQsMzg4NjUsMzg4NjgsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzcsMzg4NzgsMzg4ODAsMzg4NzUsMzg4ODEsMzg4ODQsMzg4OTUsMzg4OTcsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDYsMzg5MTksMzg5MjIsMzg5'@; put 'MzcsMzg5MjUsMzg5MjYsMzg5MzIsMzg5MzQsMzg5NDAsMzg5NDIsMzg5NDQsMzg5NDcsMzg5NTAsMzg5NTUsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjIsMzg5NjMsMzg5NjUsMzg5NDksMzg5NzQsMzg5ODAsMzg5ODMsMzg5ODYsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTgsMzg5OTksMzkwMDEs'@; put 'MzkwMDIsMzkwMTAsMzkwMTEsMzkwMTMsMzkwMTQsMzkwMTgsMzkwMjAsMzkwODMsMzkwODUsMzkwODYsMzkwODgsMzkwOTIsMzkwOTUsMzkwOTYsMzkwOTgsMzkwOTksMzkxMDMsMzkxMDYsMzkxMDksMzkxMTIsMzkxMTYsMzkxMzcsMzkxMzksMzkxNDEsMzkxNDIsMzkxNDMsMzkxNDYsMzkx'@; put 'NTUsMzkxNTgsMzkxNzAsMzkxNzUsMzkxNzYsMzkxODUsMzkxODksMzkxOTAsMzkxOTEsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTksMzkyMDIsMzkyMDYsMzkyMDcsMzkyMTEsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMzIsMzkyMzMs'@; put 'MzkyMzgsMzkyMzksMzkyNDAsMzkyNDUsMzkyNDYsMzkyNTIsMzkyNTYsMzkyNTcsMzkyNTksMzkyNjAsMzkyNjIsMzkyNjMsMzkyNjQsMzkzMjMsMzkzMjUsMzkzMjcsMzkzMzQsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDksMzkzNTMsMzkzNTQsMzkzNTcsMzkzNTksMzkzNjMsMzkzNjksMzkz'@; put 'NzksMzkzODAsMzkzODUsMzkzODYsMzkzODgsMzkzOTAsMzkzOTksMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDgsMzk0MTIsMzk0MTMsMzk0MTcsMzk0MjEsMzk0MjIsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MzUsMzk0MzYsMzk0NDAsMzk0NDEsMzk0NDYsMzk0NTQsMzk0NTYsMzk0NTgsMzk0NTks'@; put 'Mzk0NjAsMzk0NjMsMzk0NjksMzk0NzAsMzk0NzUsMzk0NzcsMzk0NzgsMzk0ODAsMzk0OTUsMzk0ODksMzk0OTIsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDIsMzk1MDUsMzk1MDgsMzk1MTAsMzk1MTcsMzk1OTQsMzk1OTYsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDQsMzk2MDUsMzk2MDYsMzk2'@; put 'MDksMzk2MTEsMzk2MTQsMzk2MTUsMzk2MTcsMzk2MTksMzk2MjIsMzk2MjQsMzk2MzAsMzk2MzIsMzk2MzQsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDMsMzk2NDQsMzk2NDgsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTcsMzk2NjAsMzk2NjYsMzk2NjcsMzk2NjksMzk2NzMsMzk2NzQsMzk2Nzcs'@; put 'Mzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODMsMzk2ODQsMzk2ODUsMzk2ODgsMzk2ODksMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTgsMzk3MDIsMzk3MDUsMzk3MDcsMzk3MDgsMzk3MTIsMzk3MTgsMzk3MjMsMzk3MjUsMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzUsMzk3'@; put 'MzcsMzk3MzgsMzk3NDEsMzk3NTIsMzk3NTUsMzk3NTYsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NzEsMzk3NzQsMzk3NzcsMzk3NzksMzk3ODEsMzk3ODIsMzk3ODQsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTUsMzk3OTcsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDcsMzk4MDgs'@; put 'Mzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjEsMzk4MjMsMzk4MjQsMzk4MjgsMzk4MzQsMzk4MzcsMzk4MzgsMzk4NDYsMzk4NDcsMzk4NDksMzk4NTIsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NjMsMzk4NjQsMzk4NjcsMzk4NjgsMzk4NzAsMzk4NzEsMzk4'@; put 'NzMsMzk4NzksMzk4ODAsMzk4ODYsMzk4ODgsMzk4OTUsMzk4OTYsMzk5MDEsMzk5MDMsMzk5MDksMzk5MTEsMzk5MTQsMzk5MTUsMzk5MTksMzk5MjMsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzMsMzk5MzUsMzk5MzYsMzk5MzgsMzk5NDcsMzk5NTEsMzk5NTMsMzk5NTgsMzk5NjAs'@; put 'Mzk5NjEsMzk5NjIsMzk5NjQsMzk5NjYsMzk5NzAsMzk5NzEsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5ODUsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTcsNDAwMDEsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDksNDAwMTAsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTksNDAwMjAsNDAw'@; put 'MjIsNDAwMjQsNDAwMjcsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzUsNDAwNDEsNDAwNDIsNDAwMjgsNDAwNDMsNDAwNDAsNDAwNDYsNDAwNDgsNDAwNTAsNDAwNTMsNDAwNTUsNDAwNTksNDAxNjYsNDAxNzgsNDAxODMsNDAxODUsNDAyMDMsNDAxOTQsNDAyMDksNDAyMTUsNDAyMTYsNDAyMjAs'@; put 'NDAyMjEsNDAyMjIsNDAyMzksNDAyNDAsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNTAsNDAyNTIsNDAyNjEsNDAyNTMsNDAyNTgsNDAyNTksNDAyNjMsNDAyNjYsNDAyNzUsNDAyNzYsNDAyODcsNDAyOTEsNDAyOTAsNDAyOTMsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDQsNDAzMTAsNDAzMTEsNDAz'@; put 'MTUsNDAzMTYsNDAzMTgsNDAzMjMsNDAzMjQsNDAzMjYsNDAzMzAsNDAzMzMsNDAzMzQsNDAzMzgsNDAzMzksNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNTMsNDAzNjIsNDAzNjQsNDAzNjYsNDAzNjksNDAzNzMsNDAzNzcsNDAzODAsNDAzODMsNDAzODcsNDAzOTEsNDAzOTMsNDAzOTQs'@; put 'NDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MTAsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MjEsNDA0MjMsNDA0MjUsNDA0MjcsNDA0MzAsNDA0MzIsNDA0MzUsNDA0MzYsNDA0NDYsNDA0NTgsNDA0NTAsNDA0NTUsNDA0NjIsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjksNDA0NzAsNDA0NzMsNDA0'@; put 'NzYsNDA0NzcsNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzYsNDA1NzgsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODMsNDA1OTAsNDA1OTEsNDA1OTgsNDA2MDAsNDA2MDMsNDA2MDYsNDA2MTIsNDA2MTYsNDA2MjAsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjcsNDA2MjgsNDA2MjksNDA2NDYsNDA2NDgs'@; put 'NDA2NTEsNDA2NjEsNDA2NzEsNDA2NzYsNDA2NzksNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTMsNDA2OTYsNDA3MDMsNDA3MDYsNDA3MDcsNDA3MTMsNDA3MTksNDA3MjAsNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjYsNDA3MjcsNDA3MjksNDA3MzAsNDA3MzEsNDA3'@; put 'MzUsNDA3MzgsNDA3NDIsNDA3NDYsNDA3NDcsNDA3NTEsNDA3NTMsNDA3NTQsNDA3NTYsNDA3NTksNDA3NjEsNDA3NjIsNDA3NjQsNDA3NjUsNDA3NjcsNDA3NjksNDA3NzEsNDA3NzIsNDA3NzMsNDA3NzQsNDA3NzUsNDA3ODcsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTQsNDA3OTcs'@; put 'NDA3OTgsNDA4MDgsNDA4MDksNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTksNDA4MjEsNDA4MjYsNDA4MjksNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTIsNDA4NTQsNDA4NTUsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjksbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu'@; put 'dWxsLG51bGwsbnVsbCxudWxsXSxpYm04NjY6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEw'@; put 'NjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDk2MTcsOTYxOCw5NjE5LDk0NzQsOTUwOCw5NTY5LDk1NzAsOTU1OCw5NTU3LDk1NzEsOTU1Myw5NTU5LDk1'@; put 'NjUsOTU2NCw5NTYzLDk0ODgsOTQ5Miw5NTI0LDk1MTYsOTUwMCw5NDcyLDk1MzIsOTU2Niw5NTY3LDk1NjIsOTU1Niw5NTc3LDk1NzQsOTU2OCw5NTUyLDk1ODAsOTU3NSw5NTc2LDk1NzIsOTU3Myw5NTYxLDk1NjAsOTU1NCw5NTU1LDk1NzksOTU3OCw5NDk2LDk0ODQsOTYwOCw5NjA0LDk2'@; put 'MTIsOTYxNiw5NjAwLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTAyNSwxMTA1LDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzOCwxMTE4LDE3Niw4NzI5LDE4Myw4NzMwLDg0NzAsMTY0LDk2MzIs'@; put 'MTYwXSwiaXNvLTg4NTktMiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCw3MjgsMzIxLDE2'@; put 'NCwzMTcsMzQ2LDE2NywxNjgsMzUyLDM1MCwzNTYsMzc3LDE3MywzODEsMzc5LDE3NiwyNjEsNzMxLDMyMiwxODAsMzE4LDM0Nyw3MTEsMTg0LDM1MywzNTEsMzU3LDM3OCw3MzMsMzgyLDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1'@; put 'LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYs'@; put 'MjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLCJpc28tODg1OS0zIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1'@; put 'NiwxNTcsMTU4LDE1OSwxNjAsMjk0LDcyOCwxNjMsMTY0LG51bGwsMjkyLDE2NywxNjgsMzA0LDM1MCwyODYsMzA4LDE3MyxudWxsLDM3OSwxNzYsMjk1LDE3OCwxNzksMTgwLDE4MSwyOTMsMTgzLDE4NCwzMDUsMzUxLDI4NywzMDksMTg5LG51bGwsMzgwLDE5MiwxOTMsMTk0LG51bGwsMTk2'@; put 'LDI2NiwyNjQsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsbnVsbCwyMDksMjEwLDIxMSwyMTIsMjg4LDIxNCwyMTUsMjg0LDIxNywyMTgsMjE5LDIyMCwzNjQsMzQ4LDIyMywyMjQsMjI1LDIyNixudWxsLDIyOCwyNjcsMjY1LDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIz'@; put 'NywyMzgsMjM5LG51bGwsMjQxLDI0MiwyNDMsMjQ0LDI4OSwyNDYsMjQ3LDI4NSwyNDksMjUwLDI1MSwyNTIsMzY1LDM0OSw3MjldLCJpc28tODg1OS00IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2'@; put 'LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDMxMiwzNDIsMTY0LDI5NiwzMTUsMTY3LDE2OCwzNTIsMjc0LDI5MCwzNTgsMTczLDM4MSwxNzUsMTc2LDI2MSw3MzEsMzQzLDE4MCwyOTcsMzE2LDcxMSwxODQsMzUzLDI3NSwyOTEs'@; put 'MzU5LDMzMCwzODIsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDI5OCwyNzIsMzI1LDMzMiwzMTAsMjEyLDIxMywyMTQsMjE1LDIxNiwzNzAsMjE4LDIxOSwyMjAsMzYwLDM2MiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwy'@; put 'MjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywyMzgsMjk5LDI3MywzMjYsMzMzLDMxMSwyNDQsMjQ1LDI0NiwyNDcsMjQ4LDM3MSwyNTAsMjUxLDI1MiwzNjEsMzYzLDcyOV0sImlzby04ODU5LTUiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4'@; put 'LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxNzMsMTAzOCwxMDM5LDEw'@; put 'NDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEw'@; put 'NzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODQ3MCwxMTA1LDEx'@; put 'MDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxNjcsMTExOCwxMTE5XSwiaXNvLTg4NTktNiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4'@; put 'LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsbnVsbCxudWxsLDE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NDgsMTczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsMTU2MyxudWxsLG51bGwsbnVsbCwxNTY3LG51bGwsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwxNTkxLDE1OTIsMTU5'@; put 'MywxNTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjAwLDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs'@; put 'bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLCJpc28tODg1OS03IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4'@; put 'LDE1OSwxNjAsODIxNiw4MjE3LDE2Myw4MzY0LDgzNjcsMTY2LDE2NywxNjgsMTY5LDg5MCwxNzEsMTcyLDE3MyxudWxsLDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCw5MDEsOTAyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkx'@; put 'OCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1'@; put 'OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSwiaXNvLTg4NTktOCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4'@; put 'LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5'@; put 'LDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws'@; put 'ODIxNSwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxd'@; put 'LCJpc28tODg1OS0xMCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNzQsMjkwLDI5OCwy'@; put 'OTYsMzEwLDE2NywzMTUsMjcyLDM1MiwzNTgsMzgxLDE3MywzNjIsMzMwLDE3NiwyNjEsMjc1LDI5MSwyOTksMjk3LDMxMSwxODMsMzE2LDI3MywzNTMsMzU5LDM4Miw4MjEzLDM2MywzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwy'@; put 'MDYsMjA3LDIwOCwzMjUsMzMyLDIxMSwyMTIsMjEzLDIxNCwzNjAsMjE2LDM3MCwyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyMzksMjQwLDMyNiwzMzMsMjQzLDI0NCwyNDUsMjQ2LDM2'@; put 'MSwyNDgsMzcxLDI1MCwyNTEsMjUyLDI1MywyNTQsMzEyXSwiaXNvLTg4NTktMTMiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2'@; put 'LDE1NywxNTgsMTU5LDE2MCw4MjIxLDE2MiwxNjMsMTY0LDgyMjIsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSw4MjIwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5Niwx'@; put 'OTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5'@; put 'OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsODIxN10sImlzby04ODU5LTE0IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0'@; put 'NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsNzY4Miw3NjgzLDE2MywyNjYsMjY3LDc2OTAsMTY3LDc4MDgsMTY5LDc4MTAsNzY5MSw3OTIyLDE3MywxNzQsMzc2LDc3MTAsNzcxMSwyODgsMjg5LDc3NDQsNzc0NSwxODIsNzc2Niw3ODA5LDc3'@; put 'NjcsNzgxMSw3Nzc2LDc5MjMsNzgxMiw3ODEzLDc3NzcsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDM3MiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCw3Nzg2LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDM3NCwyMjMsMjI0'@; put 'LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDM3MywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0Niw3Nzg3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDM3NSwyNTVdLCJpc28tODg1OS0xNSI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMz'@; put 'LDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjQsMTY1LDM1MiwxNjcsMzUzLDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0'@; put 'LDE3NSwxNzYsMTc3LDE3OCwxNzksMzgxLDE4MSwxODIsMTgzLDM4MiwxODUsMTg2LDE4NywzMzgsMzM5LDM3NiwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUs'@; put 'MjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSwiaXNv'@; put 'LTg4NTktMTYiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMjYxLDMyMSw4MzY0LDgyMjIs'@; put 'MzUyLDE2NywzNTMsMTY5LDUzNiwxNzEsMzc3LDE3MywzNzgsMzc5LDE3NiwxNzcsMjY4LDMyMiwzODEsODIyMSwxODIsMTgzLDM4MiwyNjksNTM3LDE4NywzMzgsMzM5LDM3NiwzODAsMTkyLDE5MywxOTQsMjU4LDE5NiwyNjIsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYs'@; put 'MjA3LDI3MiwzMjMsMjEwLDIxMSwyMTIsMzM2LDIxNCwzNDYsMzY4LDIxNywyMTgsMjE5LDIyMCwyODAsNTM4LDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDI2MywyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjczLDMyNCwyNDIsMjQzLDI0NCwzMzcsMjQ2LDM0Nywz'@; put 'NjksMjQ5LDI1MCwyNTEsMjUyLDI4MSw1MzksMjU1XSwia29pOC1yIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgw'@; put 'NCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3'@; put 'Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2'@; put 'LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5'@; put 'LDEwNjUsMTA2MywxMDY2XSwia29pOC11IjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkz'@; put 'LDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDExMDgsOTU1NiwxMTEwLDExMTEsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDExNjksMTExOCw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsMTAyOCw5NTcxLDEwMzAsMTAzMSw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsMTE2'@; put 'OCwxMDM4LDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1'@; put 'LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2'@; put 'XSxtYWNpbnRvc2g6WzE5NiwxOTcsMTk5LDIwMSwyMDksMjE0LDIyMCwyMjUsMjI0LDIyNiwyMjgsMjI3LDIyOSwyMzEsMjMzLDIzMiwyMzQsMjM1LDIzNywyMzYsMjM4LDIzOSwyNDEsMjQzLDI0MiwyNDQsMjQ2LDI0NSwyNTAsMjQ5LDI1MSwyNTIsODIyNCwxNzYsMTYyLDE2MywxNjcsODIy'@; put 'NiwxODIsMjIzLDE3NCwxNjksODQ4MiwxODAsMTY4LDg4MDAsMTk4LDIxNiw4NzM0LDE3Nyw4ODA0LDg4MDUsMTY1LDE4MSw4NzA2LDg3MjEsODcxOSw5NjAsODc0NywxNzAsMTg2LDkzNywyMzAsMjQ4LDE5MSwxNjEsMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDE5'@; put 'MiwxOTUsMjEzLDMzOCwzMzksODIxMSw4MjEyLDgyMjAsODIyMSw4MjE2LDgyMTcsMjQ3LDk2NzQsMjU1LDM3Niw4MjYwLDgzNjQsODI0OSw4MjUwLDY0MjU3LDY0MjU4LDgyMjUsMTgzLDgyMTgsODIyMiw4MjQwLDE5NCwyMDIsMTkzLDIwMywyMDAsMjA1LDIwNiwyMDcsMjA0LDIxMSwyMTIs'@; put 'NjM3NDMsMjEwLDIxOCwyMTksMjE3LDMwNSw3MTAsNzMyLDE3NSw3MjgsNzI5LDczMCwxODQsNzMzLDczMSw3MTFdLCJ3aW5kb3dzLTg3NCI6WzgzNjQsMTI5LDEzMCwxMzEsMTMyLDgyMzAsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIy'@; put 'MCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDM1ODUsMzU4NiwzNTg3LDM1ODgsMzU4OSwzNTkwLDM1OTEsMzU5MiwzNTkzLDM1OTQsMzU5NSwzNTk2LDM1OTcsMzU5OCwzNTk5LDM2MDAsMzYwMSwzNjAyLDM2MDMsMzYwNCwzNjA1LDM2'@; put 'MDYsMzYwNywzNjA4LDM2MDksMzYxMCwzNjExLDM2MTIsMzYxMywzNjE0LDM2MTUsMzYxNiwzNjE3LDM2MTgsMzYxOSwzNjIwLDM2MjEsMzYyMiwzNjIzLDM2MjQsMzYyNSwzNjI2LDM2MjcsMzYyOCwzNjI5LDM2MzAsMzYzMSwzNjMyLDM2MzMsMzYzNCwzNjM1LDM2MzYsMzYzNywzNjM4LDM2'@; put 'MzksMzY0MCwzNjQxLDM2NDIsbnVsbCxudWxsLG51bGwsbnVsbCwzNjQ3LDM2NDgsMzY0OSwzNjUwLDM2NTEsMzY1MiwzNjUzLDM2NTQsMzY1NSwzNjU2LDM2NTcsMzY1OCwzNjU5LDM2NjAsMzY2MSwzNjYyLDM2NjMsMzY2NCwzNjY1LDM2NjYsMzY2NywzNjY4LDM2NjksMzY3MCwzNjcxLDM2'@; put 'NzIsMzY3MywzNjc0LDM2NzUsbnVsbCxudWxsLG51bGwsbnVsbF0sIndpbmRvd3MtMTI1MCI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMzUyLDgyNDksMzQ2LDM1NiwzODEsMzc3LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEy'@; put 'LDE1Miw4NDgyLDM1Myw4MjUwLDM0NywzNTcsMzgyLDM3OCwxNjAsNzExLDcyOCwzMjEsMTY0LDI2MCwxNjYsMTY3LDE2OCwxNjksMzUwLDE3MSwxNzIsMTczLDE3NCwzNzksMTc2LDE3Nyw3MzEsMzIyLDE4MCwxODEsMTgyLDE4MywxODQsMjYxLDM1MSwxODcsMzE3LDczMywzMTgsMzgwLDM0'@; put 'MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMz'@; put 'LDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sIndpbmRvd3MtMTI1MSI6WzEwMjYsMTAyNyw4MjE4LDExMDcsODIyMiw4MjMwLDgyMjQsODIyNSw4MzY0LDgyNDAsMTAzMyw4MjQ5'@; put 'LDEwMzQsMTAzNiwxMDM1LDEwMzksMTEwNiw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDExMTMsODI1MCwxMTE0LDExMTYsMTExNSwxMTE5LDE2MCwxMDM4LDExMTgsMTAzMiwxNjQsMTE2OCwxNjYsMTY3LDEwMjUsMTY5LDEwMjgsMTcxLDE3MiwxNzMsMTc0'@; put 'LDEwMzEsMTc2LDE3NywxMDMwLDExMTAsMTE2OSwxODEsMTgyLDE4MywxMTA1LDg0NzAsMTEwOCwxODcsMTExMiwxMDI5LDExMDksMTExMSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYs'@; put 'MTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODks'@; put 'MTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzXSwid2luZG93cy0xMjUyIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDM4MSwxNDMsMTQ0LDgy'@; put 'MTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywzODIsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4'@; put 'NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1'@; put 'LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSwid2luZG93cy0xMjUzIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMw'@; put 'LDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCw5MDEsOTAyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSxudWxsLDE3'@; put 'MSwxNzIsMTczLDE3NCw4MjEzLDE3NiwxNzcsMTc4LDE3OSw5MDAsMTgxLDE4MiwxODMsOTA0LDkwNSw5MDYsMTg3LDkwOCwxODksOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSxudWxsLDkzMSw5'@; put 'MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3'@; put 'Myw5NzQsbnVsbF0sIndpbmRvd3MtMTI1NCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMzUyLDgyNDksMzM4LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDM1Myw4MjUwLDMzOSwxNTcs'@; put 'MTU4LDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwx'@; put 'OTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyODYsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMzA0LDM1MCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI4'@; put 'NywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwzMDUsMzUxLDI1NV0sIndpbmRvd3MtMTI1NSI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTM4LDgyNDksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcs'@; put 'ODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDE1NCw4MjUwLDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2MiwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwy'@; put 'NDcsMTg3LDE4OCwxODksMTkwLDE5MSwxNDU2LDE0NTcsMTQ1OCwxNDU5LDE0NjAsMTQ2MSwxNDYyLDE0NjMsMTQ2NCwxNDY1LDE0NjYsMTQ2NywxNDY4LDE0NjksMTQ3MCwxNDcxLDE0NzIsMTQ3MywxNDc0LDE0NzUsMTUyMCwxNTIxLDE1MjIsMTUyMywxNTI0LG51bGwsbnVsbCxudWxsLG51'@; put 'bGwsbnVsbCxudWxsLG51bGwsMTQ4OCwxNDg5LDE0OTAsMTQ5MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5NywxNDk4LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUwOSwxNTEwLDE1MTEsMTUxMiwxNTEzLDE1MTQsbnVsbCxudWxsLDgy'@; put 'MDYsODIwNyxudWxsXSwid2luZG93cy0xMjU2IjpbODM2NCwxNjYyLDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTY1Nyw4MjQ5LDMzOCwxNjcwLDE2ODgsMTY3MiwxNzExLDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTcwNSw4NDgyLDE2ODEsODI1'@; put 'MCwzMzksODIwNCw4MjA1LDE3MjIsMTYwLDE1NDgsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzI2LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE1NjMsMTg3LDE4OCwxODksMTkwLDE1NjcsMTcyOSwxNTY5LDE1'@; put 'NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDIxNSwxNTkxLDE1OTIsMTU5MywxNTk0LDE2MDAsMTYwMSwxNjAyLDE2MDMsMjI0LDE2MDQsMjI2LDE2MDUs'@; put 'MTYwNiwxNjA3LDE2MDgsMjMxLDIzMiwyMzMsMjM0LDIzNSwxNjA5LDE2MTAsMjM4LDIzOSwxNjExLDE2MTIsMTYxMywxNjE0LDI0NCwxNjE1LDE2MTYsMjQ3LDE2MTcsMjQ5LDE2MTgsMjUxLDI1Miw4MjA2LDgyMDcsMTc0Nl0sIndpbmRvd3MtMTI1NyI6WzgzNjQsMTI5LDgyMTgsMTMxLDgy'@; put 'MjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMTM4LDgyNDksMTQwLDE2OCw3MTEsMTg0LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDE1NCw4MjUwLDE1NiwxNzUsNzMxLDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCxudWxsLDE2NiwxNjcsMjE2LDE2'@; put 'OSwzNDIsMTcxLDE3MiwxNzMsMTc0LDE5OCwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1'@; put 'LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMs'@; put 'MjUyLDM4MCwzODIsNzI5XSwid2luZG93cy0xMjU4IjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMzM5'@; put 'LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMjU4LDE5NiwxOTcs'@; put 'MTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsNzY4LDIwNSwyMDYsMjA3LDI3MiwyMDksNzc3LDIxMSwyMTIsNDE2LDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCw0MzEsNzcxLDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSw3NjksMjM3LDIzOCwy'@; put 'MzksMjczLDI0MSw4MDMsMjQzLDI0NCw0MTcsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDQzMiw4MzYzLDI1NV0sIngtbWFjLWN5cmlsbGljIjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1'@; put 'NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDgyMjQsMTc2LDExNjgsMTYzLDE2Nyw4MjI2LDE4MiwxMDMwLDE3NCwxNjksODQ4MiwxMDI2LDExMDYsODgwMCwxMDI3LDExMDcsODczNCwxNzcs'@; put 'ODgwNCw4ODA1LDExMTAsMTgxLDExNjksMTAzMiwxMDI4LDExMDgsMTAzMSwxMTExLDEwMzMsMTExMywxMDM0LDExMTQsMTExMiwxMDI5LDE3Miw4NzMwLDQwMiw4Nzc2LDg3MTAsMTcxLDE4Nyw4MjMwLDE2MCwxMDM1LDExMTUsMTAzNiwxMTE2LDExMDksODIxMSw4MjEyLDgyMjAsODIyMSw4'@; put 'MjE2LDgyMTcsMjQ3LDgyMjIsMTAzOCwxMTE4LDEwMzksMTExOSw4NDcwLDEwMjUsMTEwNSwxMTAzLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEw'@; put 'OTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsODM2NF19fSh0aGlzfHx7fSl9LDY0MzE4KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKHdlLEplLHR0KXtyZXR1cm4gSmU8PXdlJiZ3ZTw9dHR9ZmUuZXhwb3J0cyYmIXlb'@; put 'ImVuY29kaW5nLWluZGV4ZXMiXSYmKHlbImVuY29kaW5nLWluZGV4ZXMiXT1oKDY3OTUxKVsiZW5jb2RpbmctaW5kZXhlcyJdKTt2YXIgQT1NYXRoLmZsb29yO2Z1bmN0aW9uIHYod2Upe2lmKHZvaWQgMD09PXdlKXJldHVybnt9O2lmKHdlPT09T2JqZWN0KHdlKSlyZXR1cm4gd2U7dGhyb3cg'@; put 'VHlwZUVycm9yKCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCB0byBkaWN0aW9uYXJ5Iil9ZnVuY3Rpb24gUyh3ZSl7cmV0dXJuIDA8PXdlJiZ3ZTw9MTI3fXZhciBMPVMsUj0tMTtmdW5jdGlvbiB4KHdlKXt0aGlzLnRva2Vucz1bXS5zbGljZS5jYWxsKHdlKSx0aGlzLnRva2Vucy5yZXZl'@; put 'cnNlKCl9eC5wcm90b3R5cGU9e2VuZE9mU3RyZWFtOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudG9rZW5zLmxlbmd0aH0scmVhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vucy5sZW5ndGg/dGhpcy50b2tlbnMucG9wKCk6Un0scHJlcGVuZDpmdW5jdGlvbih3ZSl7aWYoQXJyYXkuaXNB'@; put 'cnJheSh3ZSkpZm9yKHZhciBKZT13ZTtKZS5sZW5ndGg7KXRoaXMudG9rZW5zLnB1c2goSmUucG9wKCkpO2Vsc2UgdGhpcy50b2tlbnMucHVzaCh3ZSl9LHB1c2g6ZnVuY3Rpb24od2Upe2lmKEFycmF5LmlzQXJyYXkod2UpKWZvcih2YXIgSmU9d2U7SmUubGVuZ3RoOyl0aGlzLnRva2Vucy51'@; put 'bnNoaWZ0KEplLnNoaWZ0KCkpO2Vsc2UgdGhpcy50b2tlbnMudW5zaGlmdCh3ZSl9fTt2YXIgVT0tMTtmdW5jdGlvbiBIKHdlLEplKXtpZih3ZSl0aHJvdyBUeXBlRXJyb3IoIkRlY29kZXIgZXJyb3IiKTtyZXR1cm4gSmV8fDY1NTMzfWZ1bmN0aW9uIFYod2Upe3Rocm93IFR5cGVFcnJvcigi'@; put 'VGhlIGNvZGUgcG9pbnQgIit3ZSsiIGNvdWxkIG5vdCBiZSBlbmNvZGVkLiIpfWZ1bmN0aW9uIFkod2Upe3JldHVybiB3ZT1TdHJpbmcod2UpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLHdlKT9XW3dlXTpudWxsfXZhciBGPVt7'@; put 'ZW5jb2RpbmdzOlt7bGFiZWxzOlsidW5pY29kZS0xLTEtdXRmLTgiLCJ1dGYtOCIsInV0ZjgiXSxuYW1lOiJVVEYtOCJ9XSxoZWFkaW5nOiJUaGUgRW5jb2RpbmcifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiODY2IiwiY3A4NjYiLCJjc2libTg2NiIsImlibTg2NiJdLG5hbWU6IklCTTg2NiJ9'@; put 'LHtsYWJlbHM6WyJjc2lzb2xhdGluMiIsImlzby04ODU5LTIiLCJpc28taXItMTAxIiwiaXNvODg1OS0yIiwiaXNvODg1OTIiLCJpc29fODg1OS0yIiwiaXNvXzg4NTktMjoxOTg3IiwibDIiLCJsYXRpbjIiXSxuYW1lOiJJU08tODg1OS0yIn0se2xhYmVsczpbImNzaXNvbGF0aW4zIiwiaXNv'@; put 'LTg4NTktMyIsImlzby1pci0xMDkiLCJpc284ODU5LTMiLCJpc284ODU5MyIsImlzb184ODU5LTMiLCJpc29fODg1OS0zOjE5ODgiLCJsMyIsImxhdGluMyJdLG5hbWU6IklTTy04ODU5LTMifSx7bGFiZWxzOlsiY3Npc29sYXRpbjQiLCJpc28tODg1OS00IiwiaXNvLWlyLTExMCIsImlzbzg4'@; put 'NTktNCIsImlzbzg4NTk0IiwiaXNvXzg4NTktNCIsImlzb184ODU5LTQ6MTk4OCIsImw0IiwibGF0aW40Il0sbmFtZToiSVNPLTg4NTktNCJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluY3lyaWxsaWMiLCJjeXJpbGxpYyIsImlzby04ODU5LTUiLCJpc28taXItMTQ0IiwiaXNvODg1OS01IiwiaXNv'@; put 'ODg1OTUiLCJpc29fODg1OS01IiwiaXNvXzg4NTktNToxOTg4Il0sbmFtZToiSVNPLTg4NTktNSJ9LHtsYWJlbHM6WyJhcmFiaWMiLCJhc21vLTcwOCIsImNzaXNvODg1OTZlIiwiY3Npc284ODU5NmkiLCJjc2lzb2xhdGluYXJhYmljIiwiZWNtYS0xMTQiLCJpc28tODg1OS02IiwiaXNvLTg4'@; put 'NTktNi1lIiwiaXNvLTg4NTktNi1pIiwiaXNvLWlyLTEyNyIsImlzbzg4NTktNiIsImlzbzg4NTk2IiwiaXNvXzg4NTktNiIsImlzb184ODU5LTY6MTk4NyJdLG5hbWU6IklTTy04ODU5LTYifSx7bGFiZWxzOlsiY3Npc29sYXRpbmdyZWVrIiwiZWNtYS0xMTgiLCJlbG90XzkyOCIsImdyZWVr'@; put 'IiwiZ3JlZWs4IiwiaXNvLTg4NTktNyIsImlzby1pci0xMjYiLCJpc284ODU5LTciLCJpc284ODU5NyIsImlzb184ODU5LTciLCJpc29fODg1OS03OjE5ODciLCJzdW5fZXVfZ3JlZWsiXSxuYW1lOiJJU08tODg1OS03In0se2xhYmVsczpbImNzaXNvODg1OThlIiwiY3Npc29sYXRpbmhlYnJl'@; put 'dyIsImhlYnJldyIsImlzby04ODU5LTgiLCJpc28tODg1OS04LWUiLCJpc28taXItMTM4IiwiaXNvODg1OS04IiwiaXNvODg1OTgiLCJpc29fODg1OS04IiwiaXNvXzg4NTktODoxOTg4IiwidmlzdWFsIl0sbmFtZToiSVNPLTg4NTktOCJ9LHtsYWJlbHM6WyJjc2lzbzg4NTk4aSIsImlzby04'@; put 'ODU5LTgtaSIsImxvZ2ljYWwiXSxuYW1lOiJJU08tODg1OS04LUkifSx7bGFiZWxzOlsiY3Npc29sYXRpbjYiLCJpc28tODg1OS0xMCIsImlzby1pci0xNTciLCJpc284ODU5LTEwIiwiaXNvODg1OTEwIiwibDYiLCJsYXRpbjYiXSxuYW1lOiJJU08tODg1OS0xMCJ9LHtsYWJlbHM6WyJpc28t'@; put 'ODg1OS0xMyIsImlzbzg4NTktMTMiLCJpc284ODU5MTMiXSxuYW1lOiJJU08tODg1OS0xMyJ9LHtsYWJlbHM6WyJpc28tODg1OS0xNCIsImlzbzg4NTktMTQiLCJpc284ODU5MTQiXSxuYW1lOiJJU08tODg1OS0xNCJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluOSIsImlzby04ODU5LTE1IiwiaXNv'@; put 'ODg1OS0xNSIsImlzbzg4NTkxNSIsImlzb184ODU5LTE1IiwibDkiXSxuYW1lOiJJU08tODg1OS0xNSJ9LHtsYWJlbHM6WyJpc28tODg1OS0xNiJdLG5hbWU6IklTTy04ODU5LTE2In0se2xhYmVsczpbImNza29pOHIiLCJrb2kiLCJrb2k4Iiwia29pOC1yIiwia29pOF9yIl0sbmFtZToiS09J'@; put 'OC1SIn0se2xhYmVsczpbImtvaTgtcnUiLCJrb2k4LXUiXSxuYW1lOiJLT0k4LVUifSx7bGFiZWxzOlsiY3NtYWNpbnRvc2giLCJtYWMiLCJtYWNpbnRvc2giLCJ4LW1hYy1yb21hbiJdLG5hbWU6Im1hY2ludG9zaCJ9LHtsYWJlbHM6WyJkb3MtODc0IiwiaXNvLTg4NTktMTEiLCJpc284ODU5'@; put 'LTExIiwiaXNvODg1OTExIiwidGlzLTYyMCIsIndpbmRvd3MtODc0Il0sbmFtZToid2luZG93cy04NzQifSx7bGFiZWxzOlsiY3AxMjUwIiwid2luZG93cy0xMjUwIiwieC1jcDEyNTAiXSxuYW1lOiJ3aW5kb3dzLTEyNTAifSx7bGFiZWxzOlsiY3AxMjUxIiwid2luZG93cy0xMjUxIiwieC1j'@; put 'cDEyNTEiXSxuYW1lOiJ3aW5kb3dzLTEyNTEifSx7bGFiZWxzOlsiYW5zaV94My40LTE5NjgiLCJhc2NpaSIsImNwMTI1MiIsImNwODE5IiwiY3Npc29sYXRpbjEiLCJpYm04MTkiLCJpc28tODg1OS0xIiwiaXNvLWlyLTEwMCIsImlzbzg4NTktMSIsImlzbzg4NTkxIiwiaXNvXzg4NTktMSIs'@; put 'Imlzb184ODU5LTE6MTk4NyIsImwxIiwibGF0aW4xIiwidXMtYXNjaWkiLCJ3aW5kb3dzLTEyNTIiLCJ4LWNwMTI1MiJdLG5hbWU6IndpbmRvd3MtMTI1MiJ9LHtsYWJlbHM6WyJjcDEyNTMiLCJ3aW5kb3dzLTEyNTMiLCJ4LWNwMTI1MyJdLG5hbWU6IndpbmRvd3MtMTI1MyJ9LHtsYWJlbHM6'@; put 'WyJjcDEyNTQiLCJjc2lzb2xhdGluNSIsImlzby04ODU5LTkiLCJpc28taXItMTQ4IiwiaXNvODg1OS05IiwiaXNvODg1OTkiLCJpc29fODg1OS05IiwiaXNvXzg4NTktOToxOTg5IiwibDUiLCJsYXRpbjUiLCJ3aW5kb3dzLTEyNTQiLCJ4LWNwMTI1NCJdLG5hbWU6IndpbmRvd3MtMTI1NCJ9'@; put 'LHtsYWJlbHM6WyJjcDEyNTUiLCJ3aW5kb3dzLTEyNTUiLCJ4LWNwMTI1NSJdLG5hbWU6IndpbmRvd3MtMTI1NSJ9LHtsYWJlbHM6WyJjcDEyNTYiLCJ3aW5kb3dzLTEyNTYiLCJ4LWNwMTI1NiJdLG5hbWU6IndpbmRvd3MtMTI1NiJ9LHtsYWJlbHM6WyJjcDEyNTciLCJ3aW5kb3dzLTEyNTci'@; put 'LCJ4LWNwMTI1NyJdLG5hbWU6IndpbmRvd3MtMTI1NyJ9LHtsYWJlbHM6WyJjcDEyNTgiLCJ3aW5kb3dzLTEyNTgiLCJ4LWNwMTI1OCJdLG5hbWU6IndpbmRvd3MtMTI1OCJ9LHtsYWJlbHM6WyJ4LW1hYy1jeXJpbGxpYyIsIngtbWFjLXVrcmFpbmlhbiJdLG5hbWU6IngtbWFjLWN5cmlsbGlj'@; put 'In1dLGhlYWRpbmc6IkxlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY2hpbmVzZSIsImNzZ2IyMzEyIiwiY3Npc281OGdiMjMxMjgwIiwiZ2IyMzEyIiwiZ2JfMjMxMiIsImdiXzIzMTItODAiLCJnYmsiLCJpc28taXItNTgiLCJ4LWdiayJdLG5h'@; put 'bWU6IkdCSyJ9LHtsYWJlbHM6WyJnYjE4MDMwIl0sbmFtZToiZ2IxODAzMCJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlIChzaW1wbGlmaWVkKSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiYmlnNSIsImJpZzUtaGtzY3MiLCJjbi1iaWc1IiwiY3NiaWc1'@; put 'IiwieC14LWJpZzUiXSxuYW1lOiJCaWc1In1dLGhlYWRpbmc6IkxlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHRyYWRpdGlvbmFsKSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY3NldWNwa2RmbXRqYXBhbmVzZSIsImV1Yy1qcCIsIngtZXVjLWpwIl0sbmFtZToiRVVDLUpQ'@; put 'In0se2xhYmVsczpbImNzaXNvMjAyMmpwIiwiaXNvLTIwMjItanAiXSxuYW1lOiJJU08tMjAyMi1KUCJ9LHtsYWJlbHM6WyJjc3NoaWZ0amlzIiwibXM5MzIiLCJtc19rYW5qaSIsInNoaWZ0LWppcyIsInNoaWZ0X2ppcyIsInNqaXMiLCJ3aW5kb3dzLTMxaiIsIngtc2ppcyJdLG5hbWU6IlNo'@; put 'aWZ0X0pJUyJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY3NldWNrciIsImNza3NjNTYwMTE5ODciLCJldWMta3IiLCJpc28taXItMTQ5Iiwia29yZWFuIiwia3NfY181NjAxLTE5ODciLCJrc19jXzU2MDEt'@; put 'MTk4OSIsImtzYzU2MDEiLCJrc2NfNTYwMSIsIndpbmRvd3MtOTQ5Il0sbmFtZToiRVVDLUtSIn1dLGhlYWRpbmc6IkxlZ2FjeSBtdWx0aS1ieXRlIEtvcmVhbiBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY3Npc28yMDIya3IiLCJoei1nYi0yMzEyIiwiaXNvLTIwMjItY24i'@; put 'LCJpc28tMjAyMi1jbi1leHQiLCJpc28tMjAyMi1rciJdLG5hbWU6InJlcGxhY2VtZW50In0se2xhYmVsczpbInV0Zi0xNmJlIl0sbmFtZToiVVRGLTE2QkUifSx7bGFiZWxzOlsidXRmLTE2IiwidXRmLTE2bGUiXSxuYW1lOiJVVEYtMTZMRSJ9LHtsYWJlbHM6WyJ4LXVzZXItZGVmaW5lZCJd'@; put 'LG5hbWU6IngtdXNlci1kZWZpbmVkIn1dLGhlYWRpbmc6IkxlZ2FjeSBtaXNjZWxsYW5lb3VzIGVuY29kaW5ncyJ9XSxXPXt9O0YuZm9yRWFjaChmdW5jdGlvbih3ZSl7d2UuZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oSmUpe0plLmxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKHR0KXtXW3R0'@; put 'XT1KZX0pfSl9KTt2YXIgZixxPXt9LHJlPXt9O2Z1bmN0aW9uIG1lKHdlLEplKXtyZXR1cm4gSmUmJkplW3dlXXx8bnVsbH1mdW5jdGlvbiBDZSh3ZSxKZSl7dmFyIHR0PUplLmluZGV4T2Yod2UpO3JldHVybi0xPT09dHQ/bnVsbDp0dH1mdW5jdGlvbiBJZSh3ZSl7aWYoISgiZW5jb2Rpbmct'@; put 'aW5kZXhlcyJpbiB5KSl0aHJvdyBFcnJvcigiSW5kZXhlcyBtaXNzaW5nLiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGVuY29kaW5nLWluZGV4ZXMuanMgZmlyc3Q/Iik7cmV0dXJuIHlbImVuY29kaW5nLWluZGV4ZXMiXVt3ZV19dmFyIGssTT0idXRmLTgiO2Z1bmN0aW9uIEIod2UsSmUp'@; put 'e2lmKCEodGhpcyBpbnN0YW5jZW9mIEIpKXRocm93IFR5cGVFcnJvcigiQ2FsbGVkIGFzIGEgZnVuY3Rpb24uIERpZCB5b3UgZm9yZ2V0ICduZXcnPyIpO3dlPXZvaWQgMCE9PXdlP1N0cmluZyh3ZSk6TSxKZT12KEplKSx0aGlzLl9lbmNvZGluZz1udWxsLHRoaXMuX2RlY29kZXI9bnVsbCx0'@; put 'aGlzLl9pZ25vcmVCT009ITEsdGhpcy5fQk9Nc2Vlbj0hMSx0aGlzLl9lcnJvcl9tb2RlPSJyZXBsYWNlbWVudCIsdGhpcy5fZG9fbm90X2ZsdXNoPSExO3ZhciB0dD1ZKHdlKTtpZihudWxsPT09dHR8fCJyZXBsYWNlbWVudCI9PT10dC5uYW1lKXRocm93IFJhbmdlRXJyb3IoIlVua25vd24g'@; put 'ZW5jb2Rpbmc6ICIrd2UpO2lmKCFyZVt0dC5uYW1lXSl0aHJvdyBFcnJvcigiRGVjb2RlciBub3QgcHJlc2VudC4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzIGZpcnN0PyIpO3ZhciBLZT10aGlzO3JldHVybiBLZS5fZW5jb2Rpbmc9dHQsSmUuZmF0YWwm'@; put 'JihLZS5fZXJyb3JfbW9kZT0iZmF0YWwiKSxKZS5pZ25vcmVCT00mJihLZS5faWdub3JlQk9NPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHl8fCh0aGlzLmVuY29kaW5nPUtlLl9lbmNvZGluZy5uYW1lLnRvTG93ZXJDYXNlKCksdGhpcy5mYXRhbD0iZmF0YWwiPT09S2UuX2Vycm9yX21vZGUs'@; put 'dGhpcy5pZ25vcmVCT009S2UuX2lnbm9yZUJPTSksS2V9ZnVuY3Rpb24gSyh3ZSxKZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgSykpdGhyb3cgVHlwZUVycm9yKCJDYWxsZWQgYXMgYSBmdW5jdGlvbi4gRGlkIHlvdSBmb3JnZXQgJ25ldyc/Iik7aWYoSmU9dihKZSksdGhpcy5fZW5jb2Rpbmc9'@; put 'bnVsbCx0aGlzLl9lbmNvZGVyPW51bGwsdGhpcy5fZG9fbm90X2ZsdXNoPSExLHRoaXMuX2ZhdGFsPUplLmZhdGFsPyJmYXRhbCI6InJlcGxhY2VtZW50IixKZS5OT05TVEFOREFSRF9hbGxvd0xlZ2FjeUVuY29kaW5nKXt2YXIgS2U9WSh3ZT12b2lkIDAhPT13ZT9TdHJpbmcod2UpOk0pO2lm'@; put 'KG51bGw9PT1LZXx8InJlcGxhY2VtZW50Ij09PUtlLm5hbWUpdGhyb3cgUmFuZ2VFcnJvcigiVW5rbm93biBlbmNvZGluZzogIit3ZSk7aWYoIXFbS2UubmFtZV0pdGhyb3cgRXJyb3IoIkVuY29kZXIgbm90IHByZXNlbnQuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5k'@; put 'ZXhlcy5qcyBmaXJzdD8iKTt0aGlzLl9lbmNvZGluZz1LZX1lbHNlIHRoaXMuX2VuY29kaW5nPVkoInV0Zi04Iiksdm9pZCAwIT09d2UmJiJjb25zb2xlImluIHkmJmNvbnNvbGUud2FybigiVGV4dEVuY29kZXIgY29uc3RydWN0b3IgY2FsbGVkIHdpdGggZW5jb2RpbmcgbGFiZWwsIHdoaWNo'@; put 'IGlzIGlnbm9yZWQuIik7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8KHRoaXMuZW5jb2Rpbmc9dGhpcy5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpKSx0aGlzfWZ1bmN0aW9uIEcod2Upe3ZhciBKZT13ZS5mYXRhbCx0dD0wLEtlPTAsJHQ9MCxSdD0xMjgsTHQ9MTkxO3RoaXMu'@; put 'aGFuZGxlcj1mdW5jdGlvbihHdCxndCl7aWYoZ3Q9PT1SJiYwIT09JHQpcmV0dXJuICR0PTAsSChKZSk7aWYoZ3Q9PT1SKXJldHVybiBVO2lmKDA9PT0kdCl7aWYoYyhndCwwLDEyNykpcmV0dXJuIGd0O2lmKGMoZ3QsMTk0LDIyMykpJHQ9MSx0dD0zMSZndDtlbHNlIGlmKGMoZ3QsMjI0LDIz'@; put 'OSkpMjI0PT09Z3QmJihSdD0xNjApLDIzNz09PWd0JiYoTHQ9MTU5KSwkdD0yLHR0PTE1Jmd0O2Vsc2V7aWYoIWMoZ3QsMjQwLDI0NCkpcmV0dXJuIEgoSmUpOzI0MD09PWd0JiYoUnQ9MTQ0KSwyNDQ9PT1ndCYmKEx0PTE0MyksJHQ9Myx0dD03Jmd0fXJldHVybiBudWxsfWlmKCFjKGd0LFJ0'@; put 'LEx0KSlyZXR1cm4gdHQ9JHQ9S2U9MCxSdD0xMjgsTHQ9MTkxLEd0LnByZXBlbmQoZ3QpLEgoSmUpO2lmKFJ0PTEyOCxMdD0xOTEsdHQ9dHQ8PDZ8NjMmZ3QsKEtlKz0xKSE9PSR0KXJldHVybiBudWxsO3ZhciBYdD10dDtyZXR1cm4gdHQ9JHQ9S2U9MCxYdH19ZnVuY3Rpb24gRCh3ZSl7dGhp'@; put 'cy5oYW5kbGVyPWZ1bmN0aW9uKHR0LEtlKXtpZihLZT09PVIpcmV0dXJuIFU7aWYoTChLZSkpcmV0dXJuIEtlO3ZhciAkdCxSdDtjKEtlLDEyOCwyMDQ3KT8oJHQ9MSxSdD0xOTIpOmMoS2UsMjA0OCw2NTUzNSk/KCR0PTIsUnQ9MjI0KTpjKEtlLDY1NTM2LDExMTQxMTEpJiYoJHQ9MyxSdD0y'@; put 'NDApO2Zvcih2YXIgTHQ9WyhLZT4+NiokdCkrUnRdOyR0PjA7KUx0LnB1c2goMTI4fDYzJktlPj42KigkdC0xKSksJHQtPTE7cmV0dXJuIEx0fX1mdW5jdGlvbiBwKHdlLEplKXt2YXIgdHQ9SmUuZmF0YWw7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKEtlLCR0KXtpZigkdD09PVIpcmV0dXJuIFU7'@; put 'aWYoUygkdCkpcmV0dXJuICR0O3ZhciBSdD13ZVskdC0xMjhdO3JldHVybiBudWxsPT09UnQ/SCh0dCk6UnR9fWZ1bmN0aW9uIEkod2UsSmUpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihLZSwkdCl7aWYoJHQ9PT1SKXJldHVybiBVO2lmKEwoJHQpKXJldHVybiAkdDt2YXIgUnQ9Q2UoJHQsd2Up'@; put 'O3JldHVybiBudWxsPT09UnQmJlYoJHQpLFJ0KzEyOH19ZnVuY3Rpb24gdWUod2Upe3ZhciBKZT13ZS5mYXRhbCx0dD0wLEtlPTAsJHQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oUnQsTHQpe2lmKEx0PT09UiYmMD09PXR0JiYwPT09S2UmJjA9PT0kdClyZXR1cm4gVTt2YXIgR3Q7aWYoTHQ9'@; put 'PT1SJiYoMCE9PXR0fHwwIT09S2V8fDAhPT0kdCkmJih0dD0wLEtlPTAsJHQ9MCxIKEplKSksMCE9PSR0KXtHdD1udWxsLGMoTHQsNDgsNTcpJiYoR3Q9ZnVuY3Rpb24ga2Uod2Upe2lmKHdlPjM5NDE5JiZ3ZTwxODllM3x8d2U+MTIzNzU3NSlyZXR1cm4gbnVsbDtpZig3NDU3PT09d2UpcmV0'@; put 'dXJuIDU5MzM1O3ZhciAkdCxKZT0wLHR0PTAsS2U9SWUoImdiMTgwMzAtcmFuZ2VzIik7Zm9yKCR0PTA7JHQ8S2UubGVuZ3RoOysrJHQpe3ZhciBSdD1LZVskdF07aWYoIShSdFswXTw9d2UpKWJyZWFrO0plPVJ0WzBdLHR0PVJ0WzFdfXJldHVybiB0dCt3ZS1KZX0oMTAqKDEyNiooMTAqKHR0'@; put 'LTEyOSkrS2UtNDgpKyR0LTEyOSkrTHQtNDgpKTt2YXIgZ3Q9W0tlLCR0LEx0XTtyZXR1cm4gdHQ9MCxLZT0wLCR0PTAsbnVsbD09PUd0PyhSdC5wcmVwZW5kKGd0KSxIKEplKSk6R3R9aWYoMCE9PUtlKXJldHVybiBjKEx0LDEyOSwyNTQpPygkdD1MdCxudWxsKTooUnQucHJlcGVuZChbS2Us'@; put 'THRdKSx0dD0wLEtlPTAsSChKZSkpO2lmKDAhPT10dCl7aWYoYyhMdCw0OCw1NykpcmV0dXJuIEtlPUx0LG51bGw7dmFyIFh0PXR0LExyPW51bGw7dHQ9MDt2YXIgbG49THQ8MTI3PzY0OjY1O3JldHVybihjKEx0LDY0LDEyNil8fGMoTHQsMTI4LDI1NCkpJiYoTHI9MTkwKihYdC0xMjkpKyhM'@; put 'dC1sbikpLG51bGw9PT0oR3Q9bnVsbD09PUxyP251bGw6bWUoTHIsSWUoImdiMTgwMzAiKSkpJiZTKEx0KSYmUnQucHJlcGVuZChMdCksbnVsbD09PUd0P0goSmUpOkd0fXJldHVybiBTKEx0KT9MdDoxMjg9PT1MdD84MzY0OmMoTHQsMTI5LDI1NCk/KHR0PUx0LG51bGwpOkgoSmUpfX1mdW5j'@; put 'dGlvbiBuZSh3ZSxKZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKEtlLCR0KXtpZigkdD09PVIpcmV0dXJuIFU7aWYoTCgkdCkpcmV0dXJuICR0O2lmKDU4ODUzPT09JHQpcmV0dXJuIFYoJHQpO2lmKEplJiY4MzY0PT09JHQpcmV0dXJuIDEyODt2YXIgUnQ9Q2UoJHQsSWUoImdiMTgwMzAiKSk7'@; put 'aWYobnVsbCE9PVJ0KXt2YXIgR3Q9UnQlMTkwO3JldHVybltBKFJ0LzE5MCkrMTI5LEd0KyhHdDw2Mz82NDo2NSldfWlmKEplKXJldHVybiBWKCR0KTtSdD1mdW5jdGlvbiBxZSh3ZSl7aWYoNTkzMzU9PT13ZSlyZXR1cm4gNzQ1Nzt2YXIgJHQsSmU9MCx0dD0wLEtlPUllKCJnYjE4MDMwLXJh'@; put 'bmdlcyIpO2ZvcigkdD0wOyR0PEtlLmxlbmd0aDsrKyR0KXt2YXIgUnQ9S2VbJHRdO2lmKCEoUnRbMV08PXdlKSlicmVhaztKZT1SdFsxXSx0dD1SdFswXX1yZXR1cm4gdHQrd2UtSmV9KCR0KTt2YXIgWHQ9QShSdC8xMC8xMjYvMTApLExyPUEoKFJ0LT0xMCpYdCoxMjYqMTApLzEwLzEyNiks'@; put 'bG49QSgoUnQtPTEwKkxyKjEyNikvMTApO3JldHVybltYdCsxMjksTHIrNDgsbG4rMTI5LFJ0LTEwKmxuKzQ4XX19ZnVuY3Rpb24gX2Uod2Upe3ZhciBKZT13ZS5mYXRhbCx0dD0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihLZSwkdCl7aWYoJHQ9PT1SJiYwIT09dHQpcmV0dXJuIHR0PTAsSChK'@; put 'ZSk7aWYoJHQ9PT1SJiYwPT09dHQpcmV0dXJuIFU7aWYoMCE9PXR0KXt2YXIgUnQ9dHQsTHQ9bnVsbDt0dD0wO3ZhciBHdD0kdDwxMjc/NjQ6OTg7c3dpdGNoKChjKCR0LDY0LDEyNil8fGMoJHQsMTYxLDI1NCkpJiYoTHQ9MTU3KihSdC0xMjkpKygkdC1HdCkpLEx0KXtjYXNlIDExMzM6cmV0'@; put 'dXJuWzIwMiw3NzJdO2Nhc2UgMTEzNTpyZXR1cm5bMjAyLDc4MF07Y2FzZSAxMTY0OnJldHVyblsyMzQsNzcyXTtjYXNlIDExNjY6cmV0dXJuWzIzNCw3ODBdfXZhciBndD1udWxsPT09THQ/bnVsbDptZShMdCxJZSgiYmlnNSIpKTtyZXR1cm4gbnVsbD09PWd0JiZTKCR0KSYmS2UucHJlcGVu'@; put 'ZCgkdCksbnVsbD09PWd0P0goSmUpOmd0fXJldHVybiBTKCR0KT8kdDpjKCR0LDEyOSwyNTQpPyh0dD0kdCxudWxsKTpIKEplKX19ZnVuY3Rpb24gUGUod2Upe3RoaXMuaGFuZGxlcj1mdW5jdGlvbih0dCxLZSl7aWYoS2U9PT1SKXJldHVybiBVO2lmKEwoS2UpKXJldHVybiBLZTt2YXIgJHQ9'@; put 'ZnVuY3Rpb24gYih3ZSl7dmFyIEplPWs9a3x8SWUoImJpZzUiKS5tYXAoZnVuY3Rpb24odHQsS2Upe3JldHVybiBLZTw1MDI0P251bGw6dHR9KTtyZXR1cm4gOTU1Mj09PXdlfHw5NTY2PT09d2V8fDk1Njk9PT13ZXx8OTU3OD09PXdlfHwyMTMxMz09PXdlfHwyMTMxNz09PXdlP0plLmxhc3RJ'@; put 'bmRleE9mKHdlKTpDZSh3ZSxKZSl9KEtlKTtpZihudWxsPT09JHQpcmV0dXJuIFYoS2UpO3ZhciBSdD1BKCR0LzE1NykrMTI5O2lmKFJ0PDE2MSlyZXR1cm4gVihLZSk7dmFyIEx0PSR0JTE1NztyZXR1cm5bUnQsTHQrKEx0PDYzPzY0Ojk4KV19fWZ1bmN0aW9uIG90KHdlKXt2YXIgSmU9d2Uu'@; put 'ZmF0YWwsdHQ9ITEsS2U9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oJHQsUnQpe2lmKFJ0PT09UiYmMCE9PUtlKXJldHVybiBLZT0wLEgoSmUpO2lmKFJ0PT09UiYmMD09PUtlKXJldHVybiBVO2lmKDE0Mj09PUtlJiZjKFJ0LDE2MSwyMjMpKXJldHVybiBLZT0wLDY1MjE2K1J0O2lmKDE0Mz09'@; put 'PUtlJiZjKFJ0LDE2MSwyNTQpKXJldHVybiB0dD0hMCxLZT1SdCxudWxsO2lmKDAhPT1LZSl7dmFyIEx0PUtlO0tlPTA7dmFyIEd0PW51bGw7cmV0dXJuIGMoTHQsMTYxLDI1NCkmJmMoUnQsMTYxLDI1NCkmJihHdD1tZSg5NCooTHQtMTYxKSsoUnQtMTYxKSxJZSh0dD8iamlzMDIxMiI6Impp'@; put 'czAyMDgiKSkpLHR0PSExLGMoUnQsMTYxLDI1NCl8fCR0LnByZXBlbmQoUnQpLG51bGw9PT1HdD9IKEplKTpHdH1yZXR1cm4gUyhSdCk/UnQ6MTQyPT09UnR8fDE0Mz09PVJ0fHxjKFJ0LDE2MSwyNTQpPyhLZT1SdCxudWxsKTpIKEplKX19ZnVuY3Rpb24gbHQod2Upe3RoaXMuaGFuZGxlcj1m'@; put 'dW5jdGlvbih0dCxLZSl7aWYoS2U9PT1SKXJldHVybiBVO2lmKEwoS2UpKXJldHVybiBLZTtpZigxNjU9PT1LZSlyZXR1cm4gOTI7aWYoODI1ND09PUtlKXJldHVybiAxMjY7aWYoYyhLZSw2NTM3Nyw2NTQzOSkpcmV0dXJuWzE0MixLZS02NTM3NysxNjFdOzg3MjI9PT1LZSYmKEtlPTY1Mjkz'@; put 'KTt2YXIgJHQ9Q2UoS2UsSWUoImppczAyMDgiKSk7cmV0dXJuIG51bGw9PT0kdD9WKEtlKTpbQSgkdC85NCkrMTYxLCR0JTk0KzE2MV19fWZ1bmN0aW9uIGR0KHdlKXt2YXIgSmU9d2UuZmF0YWwsS2U9MCxSdD0wLEx0PSExO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihHdCxndCl7c3dpdGNoKEtl'@; put 'KXtkZWZhdWx0OmNhc2UgMDpyZXR1cm4gMjc9PT1ndD8oS2U9NSxudWxsKTpjKGd0LDAsMTI3KSYmMTQhPT1ndCYmMTUhPT1ndCYmMjchPT1ndD8oTHQ9ITEsZ3QpOmd0PT09Uj9VOihMdD0hMSxIKEplKSk7Y2FzZSAxOnJldHVybiAyNz09PWd0PyhLZT01LG51bGwpOjkyPT09Z3Q/KEx0PSEx'@; put 'LDE2NSk6MTI2PT09Z3Q/KEx0PSExLDgyNTQpOmMoZ3QsMCwxMjcpJiYxNCE9PWd0JiYxNSE9PWd0JiYyNyE9PWd0JiY5MiE9PWd0JiYxMjYhPT1ndD8oTHQ9ITEsZ3QpOmd0PT09Uj9VOihMdD0hMSxIKEplKSk7Y2FzZSAyOnJldHVybiAyNz09PWd0PyhLZT01LG51bGwpOmMoZ3QsMzMsOTUp'@; put 'PyhMdD0hMSw2NTM0NCtndCk6Z3Q9PT1SP1U6KEx0PSExLEgoSmUpKTtjYXNlIDM6cmV0dXJuIDI3PT09Z3Q/KEtlPTUsbnVsbCk6YyhndCwzMywxMjYpPyhMdD0hMSxSdD1ndCxLZT00LG51bGwpOmd0PT09Uj9VOihMdD0hMSxIKEplKSk7Y2FzZSA0OmlmKDI3PT09Z3QpcmV0dXJuIEtlPTUs'@; put 'SChKZSk7aWYoYyhndCwzMywxMjYpKXtLZT0zO3ZhciBMcj1tZSg5NCooUnQtMzMpK2d0LTMzLEllKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09THI/SChKZSk6THJ9cmV0dXJuIGd0PT09Uj8oS2U9MyxHdC5wcmVwZW5kKGd0KSxIKEplKSk6KEtlPTMsSChKZSkpO2Nhc2UgNTpyZXR1cm4g'@; put 'MzY9PT1ndHx8NDA9PT1ndD8oUnQ9Z3QsS2U9NixudWxsKTooR3QucHJlcGVuZChndCksTHQ9ITEsS2U9MCxIKEplKSk7Y2FzZSA2OnZhciBsbj1SdDtSdD0wO3ZhciBPbj1udWxsO2lmKDQwPT09bG4mJjY2PT09Z3QmJihPbj0wKSw0MD09PWxuJiY3ND09PWd0JiYoT249MSksNDA9PT1sbiYm'@; put 'NzM9PT1ndCYmKE9uPTIpLDM2PT09bG4mJig2ND09PWd0fHw2Nj09PWd0KSYmKE9uPTMpLG51bGwhPT1Pbil7S2U9S2U9T247dmFyIFFyPUx0O3JldHVybiBMdD0hMCxRcj9IKEplKTpudWxsfXJldHVybiBHdC5wcmVwZW5kKFtsbixndF0pLEx0PSExLEtlPTAsSChKZSl9fX1mdW5jdGlvbiBS'@; put 'ZSh3ZSl7dmFyIEtlPTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKCR0LFJ0KXtpZihSdD09PVImJjAhPT1LZSlyZXR1cm4gJHQucHJlcGVuZChSdCksS2U9MCxbMjcsNDAsNjZdO2lmKFJ0PT09UiYmMD09PUtlKXJldHVybiBVO2lmKCEoMCE9PUtlJiYxIT09S2V8fDE0IT09UnQmJjE1IT09UnQm'@; put 'JjI3IT09UnQpKXJldHVybiBWKDY1NTMzKTtpZigwPT09S2UmJkwoUnQpKXJldHVybiBSdDtpZigxPT09S2UmJihMKFJ0KSYmOTIhPT1SdCYmMTI2IT09UnR8fDE2NT09UnR8fDgyNTQ9PVJ0KSl7aWYoTChSdCkpcmV0dXJuIFJ0O2lmKDE2NT09PVJ0KXJldHVybiA5MjtpZig4MjU0PT09UnQp'@; put 'cmV0dXJuIDEyNn1pZihMKFJ0KSYmMCE9PUtlKXJldHVybiAkdC5wcmVwZW5kKFJ0KSxLZT0wLFsyNyw0MCw2Nl07aWYoKDE2NT09PVJ0fHw4MjU0PT09UnQpJiYxIT09S2UpcmV0dXJuICR0LnByZXBlbmQoUnQpLEtlPTEsWzI3LDQwLDc0XTs4NzIyPT09UnQmJihSdD02NTI5Myk7dmFyIEx0'@; put 'PUNlKFJ0LEllKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09THQ/VihSdCk6MiE9PUtlPygkdC5wcmVwZW5kKFJ0KSxLZT0yLFsyNywzNiw2Nl0pOltBKEx0Lzk0KSszMyxMdCU5NCszM119fWZ1bmN0aW9uIGFlKHdlKXt2YXIgSmU9d2UuZmF0YWwsdHQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rp'@; put 'b24oS2UsJHQpe2lmKCR0PT09UiYmMCE9PXR0KXJldHVybiB0dD0wLEgoSmUpO2lmKCR0PT09UiYmMD09PXR0KXJldHVybiBVO2lmKDAhPT10dCl7dmFyIFJ0PXR0LEx0PW51bGw7dHQ9MDt2YXIgR3Q9JHQ8MTI3PzY0OjY1LGd0PVJ0PDE2MD8xMjk6MTkzO2lmKChjKCR0LDY0LDEyNil8fGMo'@; put 'JHQsMTI4LDI1MikpJiYoTHQ9MTg4KihSdC1ndCkrJHQtR3QpLGMoTHQsODgzNiwxMDcxNSkpcmV0dXJuIDQ4NTA4K0x0O3ZhciBYdD1udWxsPT09THQ/bnVsbDptZShMdCxJZSgiamlzMDIwOCIpKTtyZXR1cm4gbnVsbD09PVh0JiZTKCR0KSYmS2UucHJlcGVuZCgkdCksbnVsbD09PVh0P0go'@; put 'SmUpOlh0fXJldHVybiBTKCR0KXx8MTI4PT09JHQ/JHQ6YygkdCwxNjEsMjIzKT82NTIxNiskdDpjKCR0LDEyOSwxNTkpfHxjKCR0LDIyNCwyNTIpPyh0dD0kdCxudWxsKTpIKEplKX19ZnVuY3Rpb24geGUod2Upe3RoaXMuaGFuZGxlcj1mdW5jdGlvbih0dCxLZSl7aWYoS2U9PT1SKXJldHVy'@; put 'biBVO2lmKEwoS2UpfHwxMjg9PT1LZSlyZXR1cm4gS2U7aWYoMTY1PT09S2UpcmV0dXJuIDkyO2lmKDgyNTQ9PT1LZSlyZXR1cm4gMTI2O2lmKGMoS2UsNjUzNzcsNjU0MzkpKXJldHVybiBLZS02NTM3NysxNjE7ODcyMj09PUtlJiYoS2U9NjUyOTMpO3ZhciAkdD1mdW5jdGlvbiBYKHdlKXty'@; put 'ZXR1cm4oZj1mfHxJZSgiamlzMDIwOCIpLm1hcChmdW5jdGlvbih0dCxLZSl7cmV0dXJuIGMoS2UsODI3Miw4ODM1KT9udWxsOnR0fSkpLmluZGV4T2Yod2UpfShLZSk7aWYobnVsbD09PSR0KXJldHVybiBWKEtlKTt2YXIgUnQ9QSgkdC8xODgpLEd0PSR0JTE4ODtyZXR1cm5bUnQrKFJ0PDMx'@; put 'PzEyOToxOTMpLEd0KyhHdDw2Mz82NDo2NSldfX1mdW5jdGlvbiBqZSh3ZSl7dmFyIEplPXdlLmZhdGFsLHR0PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKEtlLCR0KXtpZigkdD09PVImJjAhPT10dClyZXR1cm4gdHQ9MCxIKEplKTtpZigkdD09PVImJjA9PT10dClyZXR1cm4gVTtpZigwIT09'@; put 'dHQpe3ZhciBSdD10dCxMdD1udWxsO3R0PTAsYygkdCw2NSwyNTQpJiYoTHQ9MTkwKihSdC0xMjkpKygkdC02NSkpO3ZhciBHdD1udWxsPT09THQ/bnVsbDptZShMdCxJZSgiZXVjLWtyIikpO3JldHVybiBudWxsPT09THQmJlMoJHQpJiZLZS5wcmVwZW5kKCR0KSxudWxsPT09R3Q/SChKZSk6'@; put 'R3R9cmV0dXJuIFMoJHQpPyR0OmMoJHQsMTI5LDI1NCk/KHR0PSR0LG51bGwpOkgoSmUpfX1mdW5jdGlvbiBBZSh3ZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHR0LEtlKXtpZihLZT09PVIpcmV0dXJuIFU7aWYoTChLZSkpcmV0dXJuIEtlO3ZhciAkdD1DZShLZSxJZSgiZXVjLWtyIikpO3Jl'@; put 'dHVybiBudWxsPT09JHQ/VihLZSk6W0EoJHQvMTkwKSsxMjksJHQlMTkwKzY1XX19ZnVuY3Rpb24gRGUod2UsSmUpe3ZhciB0dD13ZT4+OCxLZT0yNTUmd2U7cmV0dXJuIEplP1t0dCxLZV06W0tlLHR0XX1mdW5jdGlvbiBGZSh3ZSxKZSl7dmFyIHR0PUplLmZhdGFsLEtlPW51bGwsJHQ9bnVs'@; put 'bDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oUnQsTHQpe2lmKEx0PT09UiYmKG51bGwhPT1LZXx8bnVsbCE9PSR0KSlyZXR1cm4gSCh0dCk7aWYoTHQ9PT1SJiZudWxsPT09S2UmJm51bGw9PT0kdClyZXR1cm4gVTtpZihudWxsPT09S2UpcmV0dXJuIEtlPUx0LG51bGw7dmFyIEd0O2lmKEd0PXdl'@; put 'PyhLZTw8OCkrTHQ6KEx0PDw4KStLZSxLZT1udWxsLG51bGwhPT0kdCl7dmFyIGd0PSR0O3JldHVybiAkdD1udWxsLGMoR3QsNTYzMjAsNTczNDMpPzY1NTM2KzEwMjQqKGd0LTU1Mjk2KSsoR3QtNTYzMjApOihSdC5wcmVwZW5kKERlKEd0LHdlKSksSCh0dCkpfXJldHVybiBjKEd0LDU1Mjk2'@; put 'LDU2MzE5KT8oJHQ9R3QsbnVsbCk6YyhHdCw1NjMyMCw1NzM0Myk/SCh0dCk6R3R9fWZ1bmN0aW9uIGdlKHdlLEplKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oS2UsJHQpe2lmKCR0PT09UilyZXR1cm4gVTtpZihjKCR0LDAsNjU1MzUpKXJldHVybiBEZSgkdCx3ZSk7dmFyIFJ0PURlKDU1Mjk2'@; put 'KygkdC02NTUzNj4+MTApLHdlKSxMdD1EZSg1NjMyMCsoJHQtNjU1MzYmMTAyMyksd2UpO3JldHVybiBSdC5jb25jYXQoTHQpfX1mdW5jdGlvbiBjZSh3ZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHR0LEtlKXtyZXR1cm4gS2U9PT1SP1U6UyhLZSk/S2U6NjMzNjArS2UtMTI4fX1mdW5jdGlv'@; put 'biBoZSh3ZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHR0LEtlKXtyZXR1cm4gS2U9PT1SP1U6TChLZSk/S2U6YyhLZSw2MzM2MCw2MzQ4Nyk/S2UtNjMzNjArMTI4OlYoS2UpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkmJihPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsImVuY29k'@; put 'aW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsImZhdGFsIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuImZhdGFsIj09PXRoaXMuX2Vycm9yX21vZGV9fSksT2JqZWN0'@; put 'LmRlZmluZVByb3BlcnR5KEIucHJvdG90eXBlLCJpZ25vcmVCT00iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWdub3JlQk9NfX0pKSxCLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oSmUsdHQpe3ZhciBLZTtLZT0ib2JqZWN0Ij09dHlwZW9mIEplJiZKZSBpbnN0YW5jZW9mIEFy'@; put 'cmF5QnVmZmVyP25ldyBVaW50OEFycmF5KEplKToib2JqZWN0Ij09dHlwZW9mIEplJiYiYnVmZmVyImluIEplJiZKZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uZXcgVWludDhBcnJheShKZS5idWZmZXIsSmUuYnl0ZU9mZnNldCxKZS5ieXRlTGVuZ3RoKTpuZXcgVWludDhBcnJh'@; put 'eSgwKSx0dD12KHR0KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9kZWNvZGVyPXJlW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDoiZmF0YWwiPT09dGhpcy5fZXJyb3JfbW9kZX0pLHRoaXMuX0JPTXNlZW49ITEpLHRoaXMuX2RvX25vdF9mbHVzaD0hIXR0LnN0cmVhbTtmb3IodmFy'@; put 'IEx0LCR0PW5ldyB4KEtlKSxSdD1bXTs7KXt2YXIgR3Q9JHQucmVhZCgpO2lmKEd0PT09Unx8KEx0PXRoaXMuX2RlY29kZXIuaGFuZGxlcigkdCxHdCkpPT09VSlicmVhaztudWxsIT09THQmJihBcnJheS5pc0FycmF5KEx0KT9SdC5wdXNoLmFwcGx5KFJ0LEx0KTpSdC5wdXNoKEx0KSl9aWYo'@; put 'IXRoaXMuX2RvX25vdF9mbHVzaCl7ZG97aWYoKEx0PXRoaXMuX2RlY29kZXIuaGFuZGxlcigkdCwkdC5yZWFkKCkpKT09PVUpYnJlYWs7bnVsbCE9PUx0JiYoQXJyYXkuaXNBcnJheShMdCk/UnQucHVzaC5hcHBseShSdCxMdCk6UnQucHVzaChMdCkpfXdoaWxlKCEkdC5lbmRPZlN0cmVhbSgp'@; put 'KTt0aGlzLl9kZWNvZGVyPW51bGx9cmV0dXJuIGZ1bmN0aW9uIGd0KFh0KXtyZXR1cm4gZnVuY3Rpb24gcyh3ZSxKZSl7cmV0dXJuLTEhPT13ZS5pbmRleE9mKEplKX0oWyJVVEYtOCIsIlVURi0xNkxFIiwiVVRGLTE2QkUiXSx0aGlzLl9lbmNvZGluZy5uYW1lKSYmIXRoaXMuX2lnbm9yZUJP'@; put 'TSYmIXRoaXMuX0JPTXNlZW4mJihYdC5sZW5ndGg+MCYmNjUyNzk9PT1YdFswXT8odGhpcy5fQk9Nc2Vlbj0hMCxYdC5zaGlmdCgpKTpYdC5sZW5ndGg+MCYmKHRoaXMuX0JPTXNlZW49ITApKSxmdW5jdGlvbiB3KHdlKXtmb3IodmFyIEplPSIiLHR0PTA7dHQ8d2UubGVuZ3RoOysrdHQpe3Zh'@; put 'ciBLZT13ZVt0dF07S2U8PTY1NTM1P0plKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEtlKTooS2UtPTY1NTM2LEplKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhLZT4+MTApLDU2MzIwKygxMDIzJktlKSkpfXJldHVybiBKZX0oWHQpfS5jYWxsKHRoaXMsUnQpfSxPYmplY3QuZGVmaW5lUHJv'@; put 'cGVydHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwiZW5jb2RpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpfX0pLEsucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihKZSx0dCl7SmU9dm9pZCAwPT09SmU/IiI6'@; put 'U3RyaW5nKEplKSx0dD12KHR0KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9lbmNvZGVyPXFbdGhpcy5fZW5jb2RpbmcubmFtZV0oe2ZhdGFsOiJmYXRhbCI9PT10aGlzLl9mYXRhbH0pKSx0aGlzLl9kb19ub3RfZmx1c2g9ISF0dC5zdHJlYW07Zm9yKHZhciBSdCxLZT1uZXcgeChmdW5j'@; put 'dGlvbiBDKHdlKXtmb3IodmFyIEplPVN0cmluZyh3ZSksdHQ9SmUubGVuZ3RoLEtlPTAsJHQ9W107S2U8dHQ7KXt2YXIgUnQ9SmUuY2hhckNvZGVBdChLZSk7aWYoUnQ8NTUyOTZ8fFJ0PjU3MzQzKSR0LnB1c2goUnQpO2Vsc2UgaWYoNTYzMjA8PVJ0JiZSdDw9NTczNDMpJHQucHVzaCg2NTUz'@; put 'Myk7ZWxzZSBpZig1NTI5Njw9UnQmJlJ0PD01NjMxOSlpZihLZT09PXR0LTEpJHQucHVzaCg2NTUzMyk7ZWxzZXt2YXIgTHQ9SmUuY2hhckNvZGVBdChLZSsxKTs1NjMyMDw9THQmJkx0PD01NzM0Mz8oJHQucHVzaCg2NTUzNisoKDEwMjMmUnQpPDwxMCkrKDEwMjMmTHQpKSxLZSs9MSk6JHQu'@; put 'cHVzaCg2NTUzMyl9S2UrPTF9cmV0dXJuICR0fShKZSkpLCR0PVtdOzspe3ZhciBMdD1LZS5yZWFkKCk7aWYoTHQ9PT1SfHwoUnQ9dGhpcy5fZW5jb2Rlci5oYW5kbGVyKEtlLEx0KSk9PT1VKWJyZWFrO0FycmF5LmlzQXJyYXkoUnQpPyR0LnB1c2guYXBwbHkoJHQsUnQpOiR0LnB1c2goUnQp'@; put 'fWlmKCF0aGlzLl9kb19ub3RfZmx1c2gpe2Zvcig7KFJ0PXRoaXMuX2VuY29kZXIuaGFuZGxlcihLZSxLZS5yZWFkKCkpKSE9PVU7KUFycmF5LmlzQXJyYXkoUnQpPyR0LnB1c2guYXBwbHkoJHQsUnQpOiR0LnB1c2goUnQpO3RoaXMuX2VuY29kZXI9bnVsbH1yZXR1cm4gbmV3IFVpbnQ4QXJy'@; put 'YXkoJHQpfSxxWyJVVEYtOCJdPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IEQod2UpfSxyZVsiVVRGLTgiXT1mdW5jdGlvbih3ZSl7cmV0dXJuIG5ldyBHKHdlKX0sImVuY29kaW5nLWluZGV4ZXMiaW4geSYmRi5mb3JFYWNoKGZ1bmN0aW9uKHdlKXsiTGVnYWN5IHNpbmdsZS1ieXRlIGVuY29k'@; put 'aW5ncyI9PT13ZS5oZWFkaW5nJiZ3ZS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihKZSl7dmFyIHR0PUplLm5hbWUsS2U9SWUodHQudG9Mb3dlckNhc2UoKSk7cmVbdHRdPWZ1bmN0aW9uKCR0KXtyZXR1cm4gbmV3IHAoS2UsJHQpfSxxW3R0XT1mdW5jdGlvbigkdCl7cmV0dXJuIG5ldyBJ'@; put 'KEtlLCR0KX19KX0pLHJlLkdCSz1mdW5jdGlvbih3ZSl7cmV0dXJuIG5ldyB1ZSh3ZSl9LHEuR0JLPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IG5lKHdlLCEwKX0scS5nYjE4MDMwPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IG5lKHdlKX0scmUuZ2IxODAzMD1mdW5jdGlvbih3ZSl7cmV0dXJu'@; put 'IG5ldyB1ZSh3ZSl9LHEuQmlnNT1mdW5jdGlvbih3ZSl7cmV0dXJuIG5ldyBQZSh3ZSl9LHJlLkJpZzU9ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgX2Uod2UpfSxxWyJFVUMtSlAiXT1mdW5jdGlvbih3ZSl7cmV0dXJuIG5ldyBsdCh3ZSl9LHJlWyJFVUMtSlAiXT1mdW5jdGlvbih3ZSl7cmV0'@; put 'dXJuIG5ldyBvdCh3ZSl9LHFbIklTTy0yMDIyLUpQIl09ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgUmUod2UpfSxyZVsiSVNPLTIwMjItSlAiXT1mdW5jdGlvbih3ZSl7cmV0dXJuIG5ldyBkdCh3ZSl9LHEuU2hpZnRfSklTPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IHhlKHdlKX0scmUuU2hp'@; put 'ZnRfSklTPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IGFlKHdlKX0scVsiRVVDLUtSIl09ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgQWUod2UpfSxyZVsiRVVDLUtSIl09ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgamUod2UpfSxxWyJVVEYtMTZCRSJdPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3'@; put 'IGdlKCEwLHdlKX0scmVbIlVURi0xNkJFIl09ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgRmUoITAsd2UpfSxxWyJVVEYtMTZMRSJdPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IGdlKCExLHdlKX0scmVbIlVURi0xNkxFIl09ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgRmUoITEsd2UpfSxxWyJ4'@; put 'LXVzZXItZGVmaW5lZCJdPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbmV3IGhlKHdlKX0scmVbIngtdXNlci1kZWZpbmVkIl09ZnVuY3Rpb24od2Upe3JldHVybiBuZXcgY2Uod2UpfSx5LlRleHRFbmNvZGVyfHwoeS5UZXh0RW5jb2Rlcj1LKSx5LlRleHREZWNvZGVyfHwoeS5UZXh0RGVjb2Rlcj1C'@; put 'KSxmZS5leHBvcnRzJiYoZmUuZXhwb3J0cz17VGV4dEVuY29kZXI6eS5UZXh0RW5jb2RlcixUZXh0RGVjb2Rlcjp5LlRleHREZWNvZGVyLEVuY29kaW5nSW5kZXhlczp5WyJlbmNvZGluZy1pbmRleGVzIl19KX0odGhpc3x8e30pfSw1MTQyNShmZSl7ZnVuY3Rpb24gaigpe31qLnByb3RvdHlw'@; put 'ZT17b246ZnVuY3Rpb24oaCx5LGMpe3ZhciBzPXRoaXMuZXx8KHRoaXMuZT17fSk7cmV0dXJuKHNbaF18fChzW2hdPVtdKSkucHVzaCh7Zm46eSxjdHg6Y30pLHRoaXN9LG9uY2U6ZnVuY3Rpb24oaCx5LGMpe3ZhciBzPXRoaXM7ZnVuY3Rpb24gQSgpe3Mub2ZmKGgsQSkseS5hcHBseShjLGFy'@; put 'Z3VtZW50cyl9cmV0dXJuIEEuXz15LHRoaXMub24oaCxBLGMpfSxlbWl0OmZ1bmN0aW9uKGgpe2Zvcih2YXIgeT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxjPSgodGhpcy5lfHwodGhpcy5lPXt9KSlbaF18fFtdKS5zbGljZSgpLHM9MCxBPWMubGVuZ3RoO3M8QTtzKyspY1tzXS5mbi5h'@; put 'cHBseShjW3NdLmN0eCx5KTtyZXR1cm4gdGhpc30sb2ZmOmZ1bmN0aW9uKGgseSl7dmFyIGM9dGhpcy5lfHwodGhpcy5lPXt9KSxzPWNbaF0sQT1bXTtpZihzJiZ5KWZvcih2YXIgdj0wLEM9cy5sZW5ndGg7djxDO3YrKylzW3ZdLmZuIT09eSYmc1t2XS5mbi5fIT09eSYmQS5wdXNoKHNbdl0p'@; put 'O3JldHVybiBBLmxlbmd0aD9jW2hdPUE6ZGVsZXRlIGNbaF0sdGhpc319LGZlLmV4cG9ydHM9aixmZS5leHBvcnRzLlRpbnlFbWl0dGVyPWp9LDQxMDkwKGZlLGosaCl7InVzZSBzdHJpY3QiO3ZhciB5PWgoMjcwNTQpLkJ1ZmZlcixjPWgoMjAwNTMpLHM9aCg1NzMpLEE9QXJyYXlCdWZmZXIu'@; put 'aXNWaWV3fHxmdW5jdGlvbihMKXt0cnl7cmV0dXJuIHMoTCksITB9Y2F0Y2h7cmV0dXJuITF9fSx2PXR5cGVvZiBVaW50OEFycmF5PCJ1IixDPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJnR5cGVvZiBVaW50OEFycmF5PCJ1Iix3PUMmJih5LnByb3RvdHlwZSBpbnN0YW5jZW9mIFVpbnQ4QXJy'@; put 'YXl8fHkuVFlQRURfQVJSQVlfU1VQUE9SVCk7ZmUuZXhwb3J0cz1mdW5jdGlvbihMLFIpe2lmKHkuaXNCdWZmZXIoTCkpcmV0dXJuIEwuY29uc3RydWN0b3ImJiEoImlzQnVmZmVyImluIEwpP3kuZnJvbShMKTpMO2lmKCJzdHJpbmciPT10eXBlb2YgTClyZXR1cm4geS5mcm9tKEwsUik7aWYo'@; put 'QyYmQShMKSl7aWYoMD09PUwuYnl0ZUxlbmd0aClyZXR1cm4geS5hbGxvYygwKTtpZih3KXt2YXIgeD15LmZyb20oTC5idWZmZXIsTC5ieXRlT2Zmc2V0LEwuYnl0ZUxlbmd0aCk7aWYoeC5ieXRlTGVuZ3RoPT09TC5ieXRlTGVuZ3RoKXJldHVybiB4fXZhciBVPUwgaW5zdGFuY2VvZiBVaW50'@; put 'OEFycmF5P0w6bmV3IFVpbnQ4QXJyYXkoTC5idWZmZXIsTC5ieXRlT2Zmc2V0LEwuYnl0ZUxlbmd0aCksSD15LmZyb20oVSk7aWYoSC5sZW5ndGg9PT1MLmJ5dGVMZW5ndGgpcmV0dXJuIEh9aWYodiYmTCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIHkuZnJvbShMKTt2YXIgVj1jKEwp'@; put 'O2lmKFYpZm9yKHZhciBOPTA7TjxMLmxlbmd0aDtOKz0xKXt2YXIgej1MW05dO2lmKCJudW1iZXIiIT10eXBlb2Ygenx8ejwwfHx6PjI1NXx8fn56IT09eil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXJyYXkgaXRlbXMgbXVzdCBiZSBudW1iZXJzIGluIHRoZSByYW5nZSAwLTI1NS4iKX1pZihW'@; put 'fHx5LmlzQnVmZmVyKEwpJiZMLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgTC5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmTC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihMKSlyZXR1cm4geS5mcm9tKEwpO3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZGF0YSIgYXJndW1lbnQgbXVzdCBi'@; put 'ZSBhIHN0cmluZywgYW4gQXJyYXksIGEgQnVmZmVyLCBhIFVpbnQ4QXJyYXksIG9yIGEgRGF0YVZpZXcuJyl9fSw1NzMoZmUsaixoKXsidXNlIHN0cmljdCI7dmFyIHk9aCg0Njc1OCkscz1oKDEyNzczKSgiVHlwZWRBcnJheS5wcm90b3R5cGUuYnVmZmVyIiwhMCksQT1oKDQ3MjkpO2ZlLmV4'@; put 'cG9ydHM9c3x8ZnVuY3Rpb24oQyl7aWYoIUEoQykpdGhyb3cgbmV3IHkoIk5vdCBhIFR5cGVkIEFycmF5Iik7cmV0dXJuIEMuYnVmZmVyfX0sMzM5OChmZSl7ZnVuY3Rpb24gaCh5KXt0cnl7aWYoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpcmV0dXJuITF9Y2F0Y2h7cmV0dXJuITF9dmFyIGM9Z2xv'@; put 'YmFsLmxvY2FsU3RvcmFnZVt5XTtyZXR1cm4gbnVsbCE9YyYmInRydWUiPT09U3RyaW5nKGMpLnRvTG93ZXJDYXNlKCl9ZmUuZXhwb3J0cz1mdW5jdGlvbiBqKHksYyl7aWYoaCgibm9EZXByZWNhdGlvbiIpKXJldHVybiB5O3ZhciBzPSExO3JldHVybiBmdW5jdGlvbiBBKCl7aWYoIXMpe2lm'@; put 'KGgoInRocm93RGVwcmVjYXRpb24iKSl0aHJvdyBuZXcgRXJyb3IoYyk7aCgidHJhY2VEZXByZWNhdGlvbiIpP2NvbnNvbGUudHJhY2UoYyk6Y29uc29sZS53YXJuKGMpLHM9ITB9cmV0dXJuIHkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19LDEyOTU0KGZlLGosaCl7IWZ1bmN0aW9uKHkpeyJ1'@; put 'c2Ugc3RyaWN0Ijt5LmV4cG9ydHMuaXNfdXJpPXMseS5leHBvcnRzLmlzX2h0dHBfdXJpPUEseS5leHBvcnRzLmlzX2h0dHBzX3VyaT12LHkuZXhwb3J0cy5pc193ZWJfdXJpPUMseS5leHBvcnRzLmlzVXJpPXMseS5leHBvcnRzLmlzSHR0cFVyaT1BLHkuZXhwb3J0cy5pc0h0dHBzVXJpPXYs'@; put 'eS5leHBvcnRzLmlzV2ViVXJpPUM7dmFyIGM9ZnVuY3Rpb24odyl7cmV0dXJuIHcubWF0Y2goLyg/OihbXjpcLz8jXSspOik/KD86XC9cLyhbXlwvPyNdKikpPyhbXj8jXSopKD86XD8oW14jXSopKT8oPzojKC4qKSk/Lyl9O2Z1bmN0aW9uIHModyl7aWYodyYmIS9bXmEtejAtOVw6XC9cP1wj'@; put 'XFtcXVxAXCFcJFwmXCdcKFwpXCpcK1wsXDtcPVwuXC1cX1x+XCVdL2kudGVzdCh3KSYmIS8lW14wLTlhLWZdL2kudGVzdCh3KSYmIS8lWzAtOWEtZl0oOj9bXjAtOWEtZl18JCkvaS50ZXN0KHcpKXt2YXIgUyxSLHgsVSxILEw9IiIsVj0iIjtpZihSPShTPWModykpWzJdLHg9U1szXSxVPVNb'@; put 'NF0sSD1TWzVdLChMPVNbMV0pJiZMLmxlbmd0aCYmeC5sZW5ndGg+PTApe2lmKFImJlIubGVuZ3RoKXtpZigwIT09eC5sZW5ndGgmJiEvXlwvLy50ZXN0KHgpKXJldHVybn1lbHNlIGlmKC9eXC9cLy8udGVzdCh4KSlyZXR1cm47aWYoL15bYS16XVthLXowLTlcK1wtXC5dKiQvLnRlc3QoTC50'@; put 'b0xvd2VyQ2FzZSgpKSlyZXR1cm4gVis9TCsiOiIsUiYmUi5sZW5ndGgmJihWKz0iLy8iK1IpLFYrPXgsVSYmVS5sZW5ndGgmJihWKz0iPyIrVSksSCYmSC5sZW5ndGgmJihWKz0iIyIrSCksVn19fWZ1bmN0aW9uIEEodyxTKXtpZihzKHcpKXt2YXIgTCxVLFYsTixSPSIiLHg9IiIsSD0iIix6'@; put 'PSIiO2lmKHg9KEw9Yyh3KSlbMl0sVT1MWzNdLFY9TFs0XSxOPUxbNV0sUj1MWzFdKXtpZihTKXtpZigiaHR0cHMiIT1SLnRvTG93ZXJDYXNlKCkpcmV0dXJufWVsc2UgaWYoImh0dHAiIT1SLnRvTG93ZXJDYXNlKCkpcmV0dXJuO2lmKHgpcmV0dXJuLzooXGQrKSQvLnRlc3QoeCkmJihIPXgu'@; put 'bWF0Y2goLzooXGQrKSQvKVswXSx4PXgucmVwbGFjZSgvOlxkKyQvLCIiKSkseis9UisiOiIseis9Ii8vIit4LEgmJih6Kz1IKSx6Kz1VLFYmJlYubGVuZ3RoJiYoeis9Ij8iK1YpLE4mJk4ubGVuZ3RoJiYoeis9IiMiK04pLHp9fX1mdW5jdGlvbiB2KHcpe3JldHVybiBBKHcsITApfWZ1bmN0'@; put 'aW9uIEModyl7cmV0dXJuIEEodyl8fHYodyl9fShmZT1oLm5tZChmZSkpfSw0NDA2OChmZSxqLGgpeyJ1c2Ugc3RyaWN0Ijt2YXIgeT1oKDg5OTk5KSxjPWgoOTc1OTQpLHM9aCg0ODEyOCksQT1oKDEyNzczKSx2PWgoODM3OTgpLEM9aCg5MTYyNyksdz1BKCJPYmplY3QucHJvdG90eXBlLnRv'@; put 'U3RyaW5nIiksUz1oKDg4Nzc5KSgpLEw9dHlwZW9mIGdsb2JhbFRoaXM+InUiP2dsb2JhbDpnbG9iYWxUaGlzLFI9YygpLHg9QSgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLFU9QSgiQXJyYXkucHJvdG90eXBlLmluZGV4T2YiLCEwKXx8ZnVuY3Rpb24oRixXKXtmb3IodmFyIHE9MDtxPEYu'@; put 'bGVuZ3RoO3ErPTEpaWYoRltxXT09PVcpcmV0dXJuIHE7cmV0dXJuLTF9LEg9e19fcHJvdG9fXzpudWxsfTt5KFIsUyYmdiYmQz9mdW5jdGlvbihZKXt2YXIgRj1uZXcgTFtZXTtpZihTeW1ib2wudG9TdHJpbmdUYWcgaW4gRiYmQyl7dmFyIFc9QyhGKSxxPXYoVyxTeW1ib2wudG9TdHJpbmdU'@; put 'YWcpO2lmKCFxJiZXKXt2YXIgcmU9QyhXKTtxPXYocmUsU3ltYm9sLnRvU3RyaW5nVGFnKX1pZihxJiZxLmdldCl7dmFyIG1lPXMocS5nZXQpO0hbIiQiK1ldPW1lfX19OmZ1bmN0aW9uKFkpe3ZhciBGPW5ldyBMW1ldLFc9Ri5zbGljZXx8Ri5zZXQ7aWYoVyl7dmFyIHE9cyhXKTtIWyIkIitZ'@; put 'XT1xfX0pLGZlLmV4cG9ydHM9ZnVuY3Rpb24oRil7aWYoIUZ8fCJvYmplY3QiIT10eXBlb2YgRilyZXR1cm4hMTtpZighUyl7dmFyIFc9eCh3KEYpLDgsLTEpO3JldHVybiBmdW5jdGlvbiB6KFkpe3JldHVybiBVKFIsWSk+LTF9KFcpP1c6Ik9iamVjdCI9PT1XJiZmdW5jdGlvbiBOKFkpe3Zh'@; put 'ciBGPSExO3JldHVybiB5KEgsZnVuY3Rpb24oVyxxKXtpZighRil0cnl7VyhZKSxGPXgocSwxKX1jYXRjaHt9fSksRn0oRil9cmV0dXJuIHY/ZnVuY3Rpb24gVihZKXt2YXIgRj0hMTtyZXR1cm4geShILGZ1bmN0aW9uKFcscSl7aWYoIUYpdHJ5eyIkIitXKFkpPT09cSYmKEY9eChxLDEpKX1j'@; put 'YXRjaHt9fSksRn0oRik6bnVsbH19LDM1MzU4KGZlLGosaCl7dmFyIHk9eyIuL2FmIjoxMTU0NCwiLi9hZi5qcyI6MTE1NDQsIi4vYXIiOjMzMTA4LCIuL2FyLWR6Ijo1MjE1NSwiLi9hci1kei5qcyI6NTIxNTUsIi4vYXIta3ciOjUzNTgzLCIuL2FyLWt3LmpzIjo1MzU4MywiLi9hci1seSI6'@; put 'NDE2MzgsIi4vYXItbHkuanMiOjQxNjM4LCIuL2FyLW1hIjo4NzgyMywiLi9hci1tYS5qcyI6ODc4MjMsIi4vYXItcHMiOjc3MTIsIi4vYXItcHMuanMiOjc3MTIsIi4vYXItc2EiOjc4MjYxLCIuL2FyLXNhLmpzIjo3ODI2MSwiLi9hci10biI6NTY3MDMsIi4vYXItdG4uanMiOjU2NzAzLCIu'@; put 'L2FyLmpzIjozMzEwOCwiLi9heiI6NDY1MDgsIi4vYXouanMiOjQ2NTA4LCIuL2JlIjoxNjc2NiwiLi9iZS5qcyI6MTY3NjYsIi4vYmciOjI4NTY0LCIuL2JnLmpzIjoyODU2NCwiLi9ibSI6OTc0NjIsIi4vYm0uanMiOjk3NDYyLCIuL2JuIjoxNzEwNywiLi9ibi1iZCI6NDM0MzgsIi4vYm4t'@; put 'YmQuanMiOjQzNDM4LCIuL2JuLmpzIjoxNzEwNywiLi9ibyI6OTAwNCwiLi9iby5qcyI6OTAwNCwiLi9iciI6NTA5MjcsIi4vYnIuanMiOjUwOTI3LCIuL2JzIjo4Nzc2OCwiLi9icy5qcyI6ODc3NjgsIi4vY2EiOjU2MjkxLCIuL2NhLmpzIjo1NjI5MSwiLi9jcyI6ODUzMDEsIi4vY3MuanMi'@; put 'Ojg1MzAxLCIuL2N2Ijo2NjY2NiwiLi9jdi5qcyI6NjY2NjYsIi4vY3kiOjU1MTYzLCIuL2N5LmpzIjo1NTE2MywiLi9kYSI6ODczNjAsIi4vZGEuanMiOjg3MzYwLCIuL2RlIjo0NTkzMiwiLi9kZS1hdCI6NDMyNDgsIi4vZGUtYXQuanMiOjQzMjQ4LCIuL2RlLWNoIjo4MzIyMiwiLi9kZS1j'@; put 'aC5qcyI6ODMyMjIsIi4vZGUuanMiOjQ1OTMyLCIuL2R2Ijo2NDA1LCIuL2R2LmpzIjo2NDA1LCIuL2VsIjo2MDcxOCwiLi9lbC5qcyI6NjA3MTgsIi4vZW4tYXUiOjM2MzE5LCIuL2VuLWF1LmpzIjozNjMxOSwiLi9lbi1jYSI6ODA1OTcsIi4vZW4tY2EuanMiOjgwNTk3LCIuL2VuLWdiIjo1'@; put 'MTgwMCwiLi9lbi1nYi5qcyI6NTE4MDAsIi4vZW4taWUiOjgwNywiLi9lbi1pZS5qcyI6ODA3LCIuL2VuLWlsIjo5NTk2MCwiLi9lbi1pbC5qcyI6OTU5NjAsIi4vZW4taW4iOjg0NDE4LCIuL2VuLWluLmpzIjo4NDQxOCwiLi9lbi1ueiI6NDY4NjUsIi4vZW4tbnouanMiOjQ2ODY1LCIuL2Vu'@; put 'LXNnIjozMjY0NywiLi9lbi1zZy5qcyI6MzI2NDcsIi4vZW8iOjYxOTMxLCIuL2VvLmpzIjo2MTkzMSwiLi9lcyI6NDY2NzksIi4vZXMtZG8iOjQxODA1LCIuL2VzLWRvLmpzIjo0MTgwNSwiLi9lcy1teCI6ODM0NDUsIi4vZXMtbXguanMiOjgzNDQ1LCIuL2VzLXVzIjo4MTUxNiwiLi9lcy11'@; put 'cy5qcyI6ODE1MTYsIi4vZXMuanMiOjQ2Njc5LCIuL2V0Ijo4ODE1MCwiLi9ldC5qcyI6ODgxNTAsIi4vZXUiOjgwNzU3LCIuL2V1LmpzIjo4MDc1NywiLi9mYSI6NjU3NDIsIi4vZmEuanMiOjY1NzQyLCIuL2ZpIjozMzk1OCwiLi9maS5qcyI6MzM5NTgsIi4vZmlsIjo0NjcyMCwiLi9maWwu'@; put 'anMiOjQ2NzIwLCIuL2ZvIjo5ODM1MiwiLi9mby5qcyI6OTgzNTIsIi4vZnIiOjQwNTksIi4vZnItY2EiOjQyMDk2LCIuL2ZyLWNhLmpzIjo0MjA5NiwiLi9mci1jaCI6OTU3NTksIi4vZnItY2guanMiOjk1NzU5LCIuL2ZyLmpzIjo0MDU5LCIuL2Z5IjoxNTk1OCwiLi9meS5qcyI6MTU5NTgs'@; put 'Ii4vZ2EiOjk0MTQzLCIuL2dhLmpzIjo5NDE0MywiLi9nZCI6NjcwMjgsIi4vZ2QuanMiOjY3MDI4LCIuL2dsIjo4MDQyOCwiLi9nbC5qcyI6ODA0MjgsIi4vZ29tLWRldmEiOjc2ODYxLCIuL2dvbS1kZXZhLmpzIjo3Njg2MSwiLi9nb20tbGF0biI6NTc3MTgsIi4vZ29tLWxhdG4uanMiOjU3'@; put 'NzE4LCIuL2d1IjoyNjgyNywiLi9ndS5qcyI6MjY4MjcsIi4vaGUiOjIxOTM2LCIuL2hlLmpzIjoyMTkzNiwiLi9oaSI6MzEzMzIsIi4vaGkuanMiOjMxMzMyLCIuL2hyIjo5MTk1NywiLi9oci5qcyI6OTE5NTcsIi4vaHUiOjQ4OTI4LCIuL2h1LmpzIjo0ODkyOCwiLi9oeS1hbSI6NTYyMTUs'@; put 'Ii4vaHktYW0uanMiOjU2MjE1LCIuL2lkIjo1ODYsIi4vaWQuanMiOjU4NiwiLi9pcyI6OTAyMTEsIi4vaXMuanMiOjkwMjExLCIuL2l0Ijo3MDE3MCwiLi9pdC1jaCI6MjIzNDAsIi4vaXQtY2guanMiOjIyMzQwLCIuL2l0LmpzIjo3MDE3MCwiLi9qYSI6Mzk3NzAsIi4vamEuanMiOjM5Nzcw'@; put 'LCIuL2p2Ijo3Mzg3NSwiLi9qdi5qcyI6NzM4NzUsIi4va2EiOjc5NDk5LCIuL2thLmpzIjo3OTQ5OSwiLi9rayI6OTM1NzMsIi4va2suanMiOjkzNTczLCIuL2ttIjo2ODgwNywiLi9rbS5qcyI6Njg4MDcsIi4va24iOjY1MDgyLCIuL2tuLmpzIjo2NTA4MiwiLi9rbyI6MjAxMzcsIi4va28u'@; put 'anMiOjIwMTM3LCIuL2t1Ijo3MDExMSwiLi9rdS1rbXIiOjYzNzQ0LCIuL2t1LWttci5qcyI6NjM3NDQsIi4va3UuanMiOjcwMTExLCIuL2t5Ijo5OTE4NywiLi9reS5qcyI6OTkxODcsIi4vbGIiOjM1OTY5LCIuL2xiLmpzIjozNTk2OSwiLi9sbyI6MzM1MjYsIi4vbG8uanMiOjMzNTI2LCIu'@; put 'L2x0Ijo5MDQxMSwiLi9sdC5qcyI6OTA0MTEsIi4vbHYiOjMyNjIxLCIuL2x2LmpzIjozMjYyMSwiLi9tZSI6ODU4NjksIi4vbWUuanMiOjg1ODY5LCIuL21pIjozNTg4MSwiLi9taS5qcyI6MzU4ODEsIi4vbWsiOjkyMzkxLCIuL21rLmpzIjo5MjM5MSwiLi9tbCI6MjExMjYsIi4vbWwuanMi'@; put 'OjIxMTI2LCIuL21uIjo0NDg5MiwiLi9tbi5qcyI6NDQ4OTIsIi4vbXIiOjU5MDgwLCIuL21yLmpzIjo1OTA4MCwiLi9tcyI6NzAzOTksIi4vbXMtbXkiOjI1OTUwLCIuL21zLW15LmpzIjoyNTk1MCwiLi9tcy5qcyI6NzAzOTksIi4vbXQiOjc5OTAyLCIuL210LmpzIjo3OTkwMiwiLi9teSI6'@; put 'NzI5ODUsIi4vbXkuanMiOjcyOTg1LCIuL25iIjo2Nzg1OSwiLi9uYi5qcyI6Njc4NTksIi4vbmUiOjEzNjQyLCIuL25lLmpzIjoxMzY0MiwiLi9ubCI6NjU0NDEsIi4vbmwtYmUiOjk5ODc1LCIuL25sLWJlLmpzIjo5OTg3NSwiLi9ubC5qcyI6NjU0NDEsIi4vbm4iOjgxMzExLCIuL25uLmpz'@; put 'Ijo4MTMxMSwiLi9vYy1sbmMiOjcyNTY3LCIuL29jLWxuYy5qcyI6NzI1NjcsIi4vcGEtaW4iOjU2OTYyLCIuL3BhLWluLmpzIjo1Njk2MiwiLi9wbCI6NjEwNjMsIi4vcGwuanMiOjYxMDYzLCIuL3B0Ijo3ODcxOSwiLi9wdC1iciI6OTc0NzYsIi4vcHQtYnIuanMiOjk3NDc2LCIuL3B0Lmpz'@; put 'Ijo3ODcxOSwiLi9ybyI6NTEwMDQsIi4vcm8uanMiOjUxMDA0LCIuL3J1Ijo1MTMyNiwiLi9ydS5qcyI6NTEzMjYsIi4vc2QiOjcyNjA4LCIuL3NkLmpzIjo3MjYwOCwiLi9zZSI6MTM5MTEsIi4vc2UuanMiOjEzOTExLCIuL3NpIjoyNTE0NywiLi9zaS5qcyI6MjUxNDcsIi4vc2siOjIzNzQx'@; put 'LCIuL3NrLmpzIjoyMzc0MSwiLi9zbCI6OTNlMywiLi9zbC5qcyI6OTNlMywiLi9zcSI6NjA0NTEsIi4vc3EuanMiOjYwNDUxLCIuL3NyIjo1NTA0NiwiLi9zci1jeXJsIjo0MDkwNSwiLi9zci1jeXJsLmpzIjo0MDkwNSwiLi9zci5qcyI6NTUwNDYsIi4vc3MiOjg1NzY1LCIuL3NzLmpzIjo4'@; put 'NTc2NSwiLi9zdiI6OTkyOTAsIi4vc3YuanMiOjk5MjkwLCIuL3N3Ijo1MzQ0OSwiLi9zdy5qcyI6NTM0NDksIi4vdGEiOjcyNjg4LCIuL3RhLmpzIjo3MjY4OCwiLi90ZSI6MzIwNjAsIi4vdGUuanMiOjMyMDYwLCIuL3RldCI6OTMyOTAsIi4vdGV0LmpzIjo5MzI5MCwiLi90ZyI6ODI5NCwi'@; put 'Li90Zy5qcyI6ODI5NCwiLi90aCI6MTIzMSwiLi90aC5qcyI6MTIzMSwiLi90ayI6Mzc0NiwiLi90ay5qcyI6Mzc0NiwiLi90bC1waCI6NDkwNDAsIi4vdGwtcGguanMiOjQ5MDQwLCIuL3RsaCI6MTcxODcsIi4vdGxoLmpzIjoxNzE4NywiLi90ciI6NjAxNTMsIi4vdHIuanMiOjYwMTUzLCIu'@; put 'L3R6bCI6ODg1MjEsIi4vdHpsLmpzIjo4ODUyMSwiLi90em0iOjE4MDEwLCIuL3R6bS1sYXRuIjoyMjIzNCwiLi90em0tbGF0bi5qcyI6MjIyMzQsIi4vdHptLmpzIjoxODAxMCwiLi91Zy1jbiI6NjMzNDksIi4vdWctY24uanMiOjYzMzQ5LCIuL3VrIjo2ODQ3OSwiLi91ay5qcyI6Njg0Nzks'@; put 'Ii4vdXIiOjQzMDI0LCIuL3VyLmpzIjo0MzAyNCwiLi91eiI6MTk4MDAsIi4vdXotbGF0biI6NzIzNzYsIi4vdXotbGF0bi5qcyI6NzIzNzYsIi4vdXouanMiOjE5ODAwLCIuL3ZpIjo4OTM2NiwiLi92aS5qcyI6ODkzNjYsIi4veC1wc2V1ZG8iOjY5NzAyLCIuL3gtcHNldWRvLmpzIjo2OTcw'@; put 'MiwiLi95byI6NzI2NTUsIi4veW8uanMiOjcyNjU1LCIuL3poLWNuIjo1NzUsIi4vemgtY24uanMiOjU3NSwiLi96aC1oayI6MTgzNTEsIi4vemgtaGsuanMiOjE4MzUxLCIuL3poLW1vIjo1MTYyNiwiLi96aC1tby5qcyI6NTE2MjYsIi4vemgtdHciOjg4ODcsIi4vemgtdHcuanMiOjg4ODd9'@; put 'O2Z1bmN0aW9uIGMoQSl7dmFyIHY9cyhBKTtyZXR1cm4gaCh2KX1mdW5jdGlvbiBzKEEpe2lmKCFoLm8oeSxBKSl7dmFyIHY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrQSsiJyIpO3Rocm93IHYuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsdn1yZXR1cm4geVtBXX1jLmtleXM9'@; put 'ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoeSl9LGMucmVzb2x2ZT1zLGZlLmV4cG9ydHM9YyxjLmlkPTM1MzU4fSw4MzMzNygpe30sODQ2MCgpe30sOTIzODIoKXt9LDE1NzkxKCl7fSw2MTA5Mygpe30sMTUzNDAoKXt9LDc5ODM4KCl7fSw5NzU5NChmZSxqLGgpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgeT1oKDUwMTkpLGM9dHlwZW9mIGdsb2JhbFRoaXM+InUiP2dsb2JhbDpnbG9iYWxUaGlzO2ZlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFyIEE9W10sdj0wO3Y8eS5sZW5ndGg7disrKSJmdW5jdGlvbiI9PXR5cGVvZiBjW3lbdl1dJiYoQVtBLmxlbmd0aF09eVt2XSk7cmV0dXJu'@; put 'IEF9fSwyNTE3MihmZSl7ZmUuZXhwb3J0cz1mdW5jdGlvbiBqKGgseSl7dGhpcy52PWgsdGhpcy5rPXl9LGZlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxmZS5leHBvcnRzLmRlZmF1bHQ9ZmUuZXhwb3J0c30sOTM1MTMoZmUsaixoKXt2YXIgeT1oKDI1MTcyKTtmZS5leHBvcnRzPWZ1bmN0aW9u'@; put 'IGMocyl7dmFyIEE9e30sdj0hMTtmdW5jdGlvbiBDKHcsUyl7cmV0dXJuIHY9ITAsUz1uZXcgUHJvbWlzZShmdW5jdGlvbihMKXtMKHNbd10oUykpfSkse2RvbmU6ITEsdmFsdWU6bmV3IHkoUywxKX19cmV0dXJuIEFbdHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC5pdGVyYXRvcnx8IkBAaXRl'@; put 'cmF0b3IiXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBLm5leHQ9ZnVuY3Rpb24odyl7cmV0dXJuIHY/KHY9ITEsdyk6QygibmV4dCIsdyl9LCJmdW5jdGlvbiI9PXR5cGVvZiBzLnRocm93JiYoQS50aHJvdz1mdW5jdGlvbih3KXtpZih2KXRocm93IHY9ITEsdztyZXR1cm4gQygidGhyb3ci'@; put 'LHcpfSksImZ1bmN0aW9uIj09dHlwZW9mIHMucmV0dXJuJiYoQS5yZXR1cm49ZnVuY3Rpb24odyl7cmV0dXJuIHY/KHY9ITEsdyk6QygicmV0dXJuIix3KX0pLEF9LGZlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxmZS5leHBvcnRzLmRlZmF1bHQ9ZmUuZXhwb3J0c30sODI4ODEoZmUpe2Z1bmN0'@; put 'aW9uIGgoeSl7ZnVuY3Rpb24gYyhzKXtpZihPYmplY3QocykhPT1zKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKHMrIiBpcyBub3QgYW4gb2JqZWN0LiIpKTt2YXIgQT1zLmRvbmU7cmV0dXJuIFByb21pc2UucmVzb2x2ZShzLnZhbHVlKS50aGVuKGZ1bmN0aW9uKHYpe3Jl'@; put 'dHVybnt2YWx1ZTp2LGRvbmU6QX19KX1yZXR1cm4oaD1mdW5jdGlvbihBKXt0aGlzLnM9QSx0aGlzLm49QS5uZXh0fSkucHJvdG90eXBlPXtzOm51bGwsbjpudWxsLG5leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzLm4uYXBwbHkodGhpcy5zLGFyZ3VtZW50cykpfSxyZXR1cm46ZnVuY3Rp'@; put 'b24oQSl7dmFyIHY9dGhpcy5zLnJldHVybjtyZXR1cm4gdm9pZCAwPT09dj9Qcm9taXNlLnJlc29sdmUoe3ZhbHVlOkEsZG9uZTohMH0pOmModi5hcHBseSh0aGlzLnMsYXJndW1lbnRzKSl9LHRocm93OmZ1bmN0aW9uKEEpe3ZhciB2PXRoaXMucy5yZXR1cm47cmV0dXJuIHZvaWQgMD09PXY/'@; put 'UHJvbWlzZS5yZWplY3QoQSk6Yyh2LmFwcGx5KHRoaXMucyxhcmd1bWVudHMpKX19LG5ldyBoKHkpfWZlLmV4cG9ydHM9ZnVuY3Rpb24gaih5KXt2YXIgYyxzLEEsdj0yO2Zvcih0eXBlb2YgU3ltYm9sPCJ1IiYmKHM9U3ltYm9sLmFzeW5jSXRlcmF0b3IsQT1TeW1ib2wuaXRlcmF0b3IpO3Yt'@; put 'LTspe2lmKHMmJm51bGwhPShjPXlbc10pKXJldHVybiBjLmNhbGwoeSk7aWYoQSYmbnVsbCE9KGM9eVtBXSkpcmV0dXJuIG5ldyBoKGMuY2FsbCh5KSk7cz0iQEBhc3luY0l0ZXJhdG9yIixBPSJAQGl0ZXJhdG9yIn10aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QgaXMgbm90IGFzeW5jIGl0'@; put 'ZXJhYmxlIil9LGZlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxmZS5leHBvcnRzLmRlZmF1bHQ9ZmUuZXhwb3J0c30sMjkyOTMoZmUpe2Z1bmN0aW9uIGooeSxjLHMsQSx2LEMsdyl7dHJ5e3ZhciBTPXlbQ10odyksTD1TLnZhbHVlfWNhdGNoKFIpe3JldHVybiB2b2lkIHMoUil9Uy5kb25lP2Mo'@; put 'TCk6UHJvbWlzZS5yZXNvbHZlKEwpLnRoZW4oQSx2KX1mZS5leHBvcnRzPWZ1bmN0aW9uIGgoeSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxzPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oQSx2KXt2YXIgQz15LmFwcGx5KGMscyk7ZnVuY3Rpb24gdyhMKXtq'@; put 'KEMsQSx2LHcsUywibmV4dCIsTCl9ZnVuY3Rpb24gUyhMKXtqKEMsQSx2LHcsUywidGhyb3ciLEwpfXcodm9pZCAwKX0pfX0sZmUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLGZlLmV4cG9ydHMuZGVmYXVsdD1mZS5leHBvcnRzfSw1MzM0NChmZSxqLGgpe3ZhciB5PWgoMjUxNzIpO2ZlLmV4cG9y'@; put 'dHM9ZnVuY3Rpb24gYyhzKXtyZXR1cm4gbmV3IHkocywwKX0sZmUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLGZlLmV4cG9ydHMuZGVmYXVsdD1mZS5leHBvcnRzfSw0Mjk1OChmZSxqLGgpe3ZhciB5PWgoMjUxNzIpO2Z1bmN0aW9uIHMoQSl7dmFyIHYsQztmdW5jdGlvbiB3KEwsUil7dHJ5e3Zh'@; put 'ciB4PUFbTF0oUiksVT14LnZhbHVlLEg9VSBpbnN0YW5jZW9mIHk7UHJvbWlzZS5yZXNvbHZlKEg/VS52OlUpLnRoZW4oZnVuY3Rpb24oVil7aWYoSCl7dmFyIE49InJldHVybiI9PT1MPyJyZXR1cm4iOiJuZXh0IjtpZighVS5rfHxWLmRvbmUpcmV0dXJuIHcoTixWKTtWPUFbTl0oVikudmFs'@; put 'dWV9Uyh4LmRvbmU/InJldHVybiI6Im5vcm1hbCIsVil9LGZ1bmN0aW9uKFYpe3coInRocm93IixWKX0pfWNhdGNoKFYpe1MoInRocm93IixWKX19ZnVuY3Rpb24gUyhMLFIpe3N3aXRjaChMKXtjYXNlInJldHVybiI6di5yZXNvbHZlKHt2YWx1ZTpSLGRvbmU6ITB9KTticmVhaztjYXNlInRo'@; put 'cm93Ijp2LnJlamVjdChSKTticmVhaztkZWZhdWx0OnYucmVzb2x2ZSh7dmFsdWU6Uixkb25lOiExfSl9KHY9di5uZXh0KT93KHYua2V5LHYuYXJnKTpDPW51bGx9dGhpcy5faW52b2tlPWZ1bmN0aW9uKEwsUil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHgsVSl7dmFyIEg9e2tleTpM'@; put 'LGFyZzpSLHJlc29sdmU6eCxyZWplY3Q6VSxuZXh0Om51bGx9O0M/Qz1DLm5leHQ9SDoodj1DPUgsdyhMLFIpKX0pfSwiZnVuY3Rpb24iIT10eXBlb2YgQS5yZXR1cm4mJih0aGlzLnJldHVybj12b2lkIDApfXMucHJvdG90eXBlWyJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5h'@; put 'c3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5faW52b2tlKCJuZXh0IixBKX0scy5wcm90b3R5cGUudGhyb3c9ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX2ludm9r'@; put 'ZSgidGhyb3ciLEEpfSxzLnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX2ludm9rZSgicmV0dXJuIixBKX0sZmUuZXhwb3J0cz1mdW5jdGlvbiBjKEEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcyhBLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSxmZS5l'@; put 'eHBvcnRzLl9fZXNNb2R1bGU9ITAsZmUuZXhwb3J0cy5kZWZhdWx0PWZlLmV4cG9ydHN9LDMyMTkoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siYWVzLTEyOC1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6'@; put 'ImJsb2NrIn0sImFlcy0xOTItZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MCwibW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMjU2LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVz'@; put 'LTEyOC1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTkyLWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtY2JjIjp7'@; put 'ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMTI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMTkyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6'@; put 'MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMjU2Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTEyOC1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9k'@; put 'ZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQiIs'@; put 'InR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBl'@; put 'Ijoic3RyZWFtIn0sImFlcy0yNTYtY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0'@; put 'cmVhbSJ9LCJhZXMtMTkyLWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0i'@; put 'fSwiYWVzLTEyOC1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1'@; put 'Ni1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jdHIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jdHIiOnsi'@; put 'Y2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jdHIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1nY20iOnsiY2lwaGVyIjoi'@; put 'QUVTIiwia2V5IjoxMjgsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn0sImFlcy0xOTItZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9LCJhZXMtMjU2LWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1'@; put 'NiwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifX0nKX0sNDMyNjcoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjg3NDAiLCJcdTQzZjBcdTRjMzJcdTQ2MDNcdTQ1YTZcdTQ1NzhcdXsyNzI2N31cdTRkNzdcdTQ1YjNcdXsyN2NiMX1cdTRjZTJc'@; put 'dXsyN2NjNX1cdTNiOTVcdTQ3MzZcdTQ3NDRcdTRjNDdcdTRjNDBcdXsyNDJiZn1cdXsyMzYxN31cdXsyNzM1Mn1cdXsyNmU4Yn1cdXsyNzBkMn1cdTRjNTdcdXsyYTM1MX1cdTQ3NGZcdTQ1ZGFcdTRjODVcdXsyN2M2Y31cdTRkMDdcdTRhYTRcdTQ2YTFcdXsyNmIyM31cdTcyMjVcdXsyNWE1'@; put 'NH1cdXsyMWE2M31cdXsyM2UwNn1cdXsyM2Y2MX1cdTY2NGRcdTU2ZmIiXSxbIjg3NjciLCJcdTdkOTVcdTU5MWRcdXsyOGJiOX1cdTNkZjRcdTk3MzRcdXsyN2JlZn1cdTViZGJcdXsyMWQ1ZX1cdTVhYTRcdTM2MjVcdXsyOWViMH1cdTVhZDFcdTViYjdcdTVjZmNcdTY3NmVcdTg1OTNcdXsy'@; put 'OTk0NX1cdTc0NjFcdTc0OWRcdTM4NzVcdXsyMWQ1M31cdXsyMzY5ZX1cdXsyNjAyMX1cdTNlZWMiXSxbIjg3YTEiLCJcdXsyNThkZX1cdTNhZjVcdTdhZmNcdTlmOTdcdXsyNDE2MX1cdXsyODkwZH1cdXsyMzFlYX1cdXsyMGE4YX1cdXsyMzI1ZX1cdTQzMGFcdTg0ODRcdTlmOTZcdTk0MmZc'@; put 'dTQ5MzBcdTg2MTNcdTU4OTZcdTk3NGFcdTkyMThcdTc5ZDBcdTdhMzJcdTY2NjBcdTZhMjlcdTg4OWRcdTc0NGNcdTdiYzVcdTY3ODJcdTdhMmNcdTUyNGZcdTkwNDZcdTM0ZTZcdTczYzRcdXsyNWRiOX1cdTc0YzZcdTlmYzdcdTU3YjNcdTQ5MmZcdTU0NGNcdTQxMzFcdXsyMzY4ZX1cdTU4'@; put 'MThcdTdhNzJcdXsyN2I2NX1cdThiOGZcdTQ2YWVcdXsyNmU4OH1cdTQxODFcdXsyNWQ5OX1cdTdiYWVcdXsyMjRiY31cdTlmYzhcdXsyMjRjMX1cdXsyMjRjOX1cdXsyMjRjY31cdTlmYzlcdTg1MDRcdXsyMzViYn1cdTQwYjRcdTlmY2FcdTQ0ZTFcdXsyYWRmZn1cdTYyYzFcdTcwNmVcdTlm'@; put 'Y2IiXSxbIjg4NDAiLCJcdTMxYzAiLDQsIlx1ezIwMTBjfVx1MzFjNVx1ezIwMGQxfVx1ezIwMGNkfVx1MzFjNlx1MzFjN1x1ezIwMGNifVx1ezIxZmU4fVx1MzFjOFx1ezIwMGNhfVx1MzFjOVx1MzFjYVx1MzFjYlx1MzFjY1x1ezIwMTBlfVx1MzFjZFx1MzFjZVx1MDEwMFx4YzFcdTAxY2Rc'@; put 'eGMwXHUwMTEyXHhjOVx1MDExYVx4YzhcdTAxNGNceGQzXHUwMWQxXHhkMlx1MGZmZlx4Y2FcdTAzMDRcdTFlYmVcdTBmZmZceGNhXHUwMzBjXHUxZWMwXHhjYVx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMjUxXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQwXHhlY1x1MDE0ZFx4'@; put 'ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGEiXSxbIjg4YTEiLCJcdTAxZGNceGZjXHUwZmZmXHhlYVx1MDMwNFx1MWViZlx1MGZmZlx4ZWFcdTAzMGNcdTFlYzFceGVhXHUwMjYxXHUyM2RhXHUyM2RiIl0sWyI4OTQwIiwiXHV7MmEzYTl9XHV7MjEx'@; put 'NDV9Il0sWyI4OTQzIiwiXHU2NTBhIl0sWyI4OTQ2IiwiXHU0ZTNkXHU2ZWRkXHU5ZDRlXHU5MWRmIl0sWyI4OTRjIiwiXHV7Mjc3MzV9XHU2NDkxXHU0ZjFhXHU0ZjI4XHU0ZmE4XHU1MTU2XHU1MTc0XHU1MTljXHU1MWU0XHU1MmExXHU1MmE4XHU1MzNiXHU1MzRlXHU1M2QxXHU1M2Q4XHU1'@; put 'NmUyXHU1OGYwXHU1OTA0XHU1OTA3XHU1OTMyXHU1OTM0XHU1YjY2XHU1YjllXHU1YjlmXHU1YzlhXHU1ZTg2XHU2MDNiXHU2NTg5XHU2N2ZlXHU2ODA0XHU2ODY1XHU2ZDRlXHU3MGJjXHU3NTM1XHU3ZWE0XHU3ZWFjXHU3ZWJhXHU3ZWM3XHU3ZWNmXHU3ZWRmXHU3ZjA2XHU3ZjM3XHU4Mjdh'@; put 'XHU4MmNmXHU4MzZmXHU4OWM2XHU4YmJlXHU4YmUyXHU4ZjY2XHU4ZjY3XHU4ZjZlIl0sWyI4OWExIiwiXHU3NDExXHU3Y2ZjXHU3ZGNkXHU2OTQ2XHU3YWM5XHU1MjI3Il0sWyI4OWFiIiwiXHU5MThjXHU3OGI4XHU5MTVlXHU4MGJjIl0sWyI4OWIwIiwiXHU4ZDBiXHU4MGY2XHV7MjA5ZTd9'@; put 'Il0sWyI4OWI1IiwiXHU4MDlmXHU5ZWM3XHU0Y2NkXHU5ZGM5XHU5ZTBjXHU0YzNlXHV7MjlkZjZ9XHV7MjcwMGV9XHU5ZTBhXHV7MmExMzN9XHUzNWMxIl0sWyI4OWMxIiwiXHU2ZTlhXHU4MjNlXHU3NTE5Il0sWyI4OWM1IiwiXHU0OTExXHU5YTZjXHU5YThmXHU5Zjk5XHU3OTg3XHV7Mjg0'@; put 'NmN9XHV7MjFkY2F9XHV7MjA1ZDB9XHV7MjJhZTZ9XHU0ZTI0XHU0ZTgxXHU0ZTgwXHU0ZTg3XHU0ZWJmXHU0ZWViXHU0ZjM3XHUzNDRjXHU0ZmJkXHUzZTQ4XHU1MDAzXHU1MDg4XHUzNDdkXHUzNDkzXHUzNGE1XHU1MTg2XHU1OTA1XHU1MWRiXHU1MWZjXHU1MjA1XHU0ZTg5XHU1Mjc5XHU1'@; put 'MjkwXHU1MzI3XHUzNWM3XHU1M2E5XHUzNTUxXHU1M2IwXHUzNTUzXHU1M2MyXHU1NDIzXHUzNTZkXHUzNTcyXHUzNjgxXHU1NDkzXHU1NGEzXHU1NGI0XHU1NGI5XHU1NGQwXHU1NGVmXHU1NTE4XHU1NTIzXHU1NTI4XHUzNTk4XHU1NTNmXHUzNWE1XHUzNWJmXHU1NWQ3XHUzNWM1Il0sWyI4'@; put 'YTQwIiwiXHV7MjdkODR9XHU1NTI1Il0sWyI4YTQzIiwiXHV7MjBjNDJ9XHV7MjBkMTV9XHV7MjUxMmJ9XHU1NTkwXHV7MjJjYzZ9XHUzOWVjXHV7MjAzNDF9XHU4ZTQ2XHV7MjRkYjh9XHV7Mjk0ZTV9XHU0MDUzXHV7MjgwYmV9XHU3NzdhXHV7MjJjMzh9XHUzYTM0XHU0N2Q1XHV7MjgxNWR9'@; put 'XHV7MjY5ZjJ9XHV7MjRkZWF9XHU2NGRkXHV7MjBkN2N9XHV7MjBmYjR9XHV7MjBjZDV9XHV7MjEwZjR9XHU2NDhkXHU4ZTdlXHV7MjBlOTZ9XHV7MjBjMGJ9XHV7MjBmNjR9XHV7MjJjYTl9XHV7MjgyNTZ9XHV7MjQ0ZDN9Il0sWyI4YTY0IiwiXHV7MjBkNDZ9XHV7MjlhNGR9XHV7MjgwZTl9'@; put 'XHU0N2Y0XHV7MjRlYTd9XHV7MjJjYzJ9XHU5YWIyXHUzYTY3XHV7Mjk1ZjR9XHUzZmVkXHUzNTA2XHV7MjUyYzd9XHV7Mjk3ZDR9XHV7Mjc4Yzh9XHV7MjJkNDR9XHU5ZDZlXHU5ODE1Il0sWyI4YTc2IiwiXHU0M2Q5XHV7MjYwYTV9XHU2NGI0XHU1NGUzXHV7MjJkNGN9XHV7MjJiY2F9XHV7'@; put 'MjEwNzd9XHUzOWZiXHV7MjEwNmZ9Il0sWyI4YWExIiwiXHV7MjY2ZGF9XHV7MjY3MTZ9XHV7Mjc5YTB9XHU2NGVhXHV7MjUwNTJ9XHV7MjBjNDN9XHU4ZTY4XHV7MjIxYTF9XHV7MjhiNGN9XHV7MjA3MzF9Il0sWyI4YWFjIiwiXHU0ODBiXHV7MjAxYTl9XHUzZmZhXHU1ODczXHV7MjJkOGR9'@; put 'Il0sWyI4YWIyIiwiXHV7MjQ1Yzh9XHV7MjA0ZmN9XHV7MjYwOTd9XHV7MjBmNGN9XHV7MjBkOTZ9XHU1NTc5XHU0MGJiXHU0M2JhIl0sWyI4YWJiIiwiXHU0YWI0XHV7MjJhNjZ9XHV7MjEwOWR9XHU4MWFhXHU5OGY1XHV7MjBkOWN9XHU2Mzc5XHUzOWZlXHV7MjI3NzV9XHU4ZGMwXHU1NmEx'@; put 'XHU2NDdjXHUzZTQzIl0sWyI4YWM5IiwiXHV7MmE2MDF9XHV7MjBlMDl9XHV7MjJhY2Z9XHV7MjJjYzl9Il0sWyI4YWNlIiwiXHV7MjEwYzh9XHV7MjM5YzJ9XHUzOTkyXHUzYTA2XHV7MjgyOWJ9XHUzNTc4XHV7MjVlNDl9XHV7MjIwYzd9XHU1NjUyXHV7MjBmMzF9XHV7MjJjYjJ9XHV7Mjk3'@; put 'MjB9XHUzNGJjXHU2YzNkXHV7MjRlM2J9Il0sWyI4YWRmIiwiXHV7Mjc1NzR9XHV7MjJlOGJ9XHV7MjIyMDh9XHV7MmE2NWJ9XHV7MjhjY2R9XHV7MjBlN2F9XHV7MjBjMzR9XHV7MjY4MWN9XHU3ZjkzXHV7MjEwY2Z9XHV7MjI4MDN9XHV7MjI5Mzl9XHUzNWZiXHV7MjUxZTN9XHV7MjBlOGN9'@; put 'XHV7MjBmOGR9XHV7MjBlYWF9XHUzZjkzXHV7MjBmMzB9XHV7MjBkNDd9XHV7MjExNGZ9XHV7MjBlNGN9Il0sWyI4YWY2IiwiXHV7MjBlYWJ9XHV7MjBiYTl9XHV7MjBkNDh9XHV7MjEwYzB9XHV7MjExM2R9XHUzZmY5XHV7MjI2OTZ9XHU2NDMyXHV7MjBmYWR9Il0sWyI4YjQwIiwiXHV7MjMz'@; put 'ZjR9XHV7Mjc2Mzl9XHV7MjJiY2V9XHV7MjBkN2V9XHV7MjBkN2Z9XHV7MjJjNTF9XHV7MjJjNTV9XHUzYTE4XHV7MjBlOTh9XHV7MjEwYzd9XHV7MjBmMmV9XHV7MmE2MzJ9XHV7MjZiNTB9XHV7MjhjZDJ9XHV7MjhkOTl9XHV7MjhjY2F9XHU5NWFhXHU1NGNjXHU4MmM0XHU1NWI5Il0sWyI4'@; put 'YjU1IiwiXHV7MjllYzN9XHU5YzI2XHU5YWI2XHV7Mjc3NWV9XHV7MjJkZWV9XHU3MTQwXHU4MTZkXHU4MGVjXHU1YzFjXHV7MjY1NzJ9XHU4MTM0XHUzNzk3XHU1MzVmXHV7MjgwYmR9XHU5MWI2XHV7MjBlZmF9XHV7MjBlMGZ9XHV7MjBlNzd9XHV7MjBlZmJ9XHUzNWRkXHV7MjRkZWJ9XHUz'@; put 'NjA5XHV7MjBjZDZ9XHU1NmFmXHV7MjI3YjV9XHV7MjEwYzl9XHV7MjBlMTB9XHV7MjBlNzh9XHV7MjEwNzh9XHV7MjExNDh9XHV7MjgyMDd9XHV7MjE0NTV9XHV7MjBlNzl9XHV7MjRlNTB9XHV7MjJkYTR9XHU1YTU0XHV7MjEwMWR9XHV7MjEwMWV9XHV7MjEwZjV9XHV7MjEwZjZ9XHU1Nzlj'@; put 'XHV7MjBlMTF9Il0sWyI4YmExIiwiXHV7Mjc2OTR9XHV7MjgyY2R9XHV7MjBmYjV9XHV7MjBlN2J9XHV7MjUxN2V9XHUzNzAzXHV7MjBmYjZ9XHV7MjExODB9XHV7MjUyZDh9XHV7MmEyYmR9XHV7MjQ5ZGF9XHV7MjE4M2F9XHV7MjQxNzd9XHV7MjgyN2N9XHU1ODk5XHU1MjY4XHUzNjFhXHV7'@; put 'MjU3M2R9XHU3YmIyXHU1YjY4XHU0ODAwXHU0YjJjXHU5ZjI3XHU0OWU3XHU5YzFmXHU5YjhkXHV7MjViNzR9XHV7MjMxM2R9XHU1NWZiXHUzNWYyXHU1Njg5XHU0ZTI4XHU1OTAyXHV7MjFiYzF9XHV7MmY4Nzh9XHU5NzUxXHV7MjAwODZ9XHU0ZTViXHU0ZWJiXHUzNTNlXHU1YzIzXHU1ZjUx'@; put 'XHU1ZmM0XHUzOGZhXHU2MjRjXHU2NTM1XHU2YjdhXHU2YzM1XHU2YzNhXHU3MDZjXHU3MjJiXHU0ZTJjXHU3MmFkXHV7MjQ4ZTl9XHU3ZjUyXHU3OTNiXHU3Y2Y5XHU3ZjUzXHV7MjYyNmF9XHUzNGMxIl0sWyI4YmRlIiwiXHV7MjYzNGJ9XHU4MDAyXHU4MDgwXHV7MjY2MTJ9XHV7MjY5NTF9'@; put 'XHU1MzVkXHU4ODY0XHU4OWMxXHV7Mjc4YjJ9XHU4YmEwXHU4ZDFkXHU5NDg1XHU5NTc4XHU5NTdmXHU5NWU4XHV7MjhlMGZ9XHU5N2U2XHU5ODc1XHU5OGNlXHU5OGRlXHU5OTYzXHV7Mjk4MTB9XHU5YzdjXHU5ZTFmXHU5ZWM0XHU2YjZmXHVmOTA3XHU0ZTM3XHV7MjAwODd9XHU5NjFkXHU2'@; put 'MjM3XHU5NGEyIl0sWyI4YzQwIiwiXHU1MDNiXHU2ZGZlXHV7MjljNzN9XHU5ZmE2XHUzZGM5XHU4ODhmXHV7MjQxNGV9XHU3MDc3XHU1Y2Y1XHU0YjIwXHV7MjUxY2R9XHUzNTU5XHV7MjVkMzB9XHU2MTIyXHV7MjhhMzJ9XHU4ZmE3XHU5MWY2XHU3MTkxXHU2NzE5XHU3M2JhXHV7MjMyODF9'@; put 'XHV7MmExMDd9XHUzYzhiXHV7MjE5ODB9XHU0YjEwXHU3OGU0XHU3NDAyXHU1MWFlXHV7Mjg3MGZ9XHU0MDA5XHU2YTYzXHV7MmEyYmF9XHU0MjIzXHU4NjBmXHV7MjBhNmZ9XHU3YTJhXHV7Mjk5NDd9XHV7MjhhZWF9XHU5NzU1XHU3MDRkXHU1MzI0XHV7MjIwN2V9XHU5M2Y0XHU3NmQ5XHV7'@; put 'Mjg5ZTN9XHU5ZmE3XHU3N2RkXHU0ZWEzXHU0ZmYwXHU1MGJjXHU0ZTJmXHU0ZjE3XHU5ZmE4XHU1NDM0XHU3ZDhiXHU1ODkyXHU1OGQwXHV7MjFkYjZ9XHU1ZTkyXHU1ZTk5XHU1ZmMyXHV7MjI3MTJ9XHU2NThiIl0sWyI4Y2ExIiwiXHV7MjMzZjl9XHU2OTE5XHU2YTQzXHV7MjNjNjN9XHU2'@; put 'Y2ZmIl0sWyI4Y2E3IiwiXHU3MjAwXHV7MjQ1MDV9XHU3MzhjXHUzZWRiXHV7MjRhMTN9XHU1YjE1XHU3NGI5XHU4YjgzXHV7MjVjYTR9XHV7MjU2OTV9XHU3YTkzXHU3YmVjXHU3Y2MzXHU3ZTZjXHU4MmY4XHU4NTk3XHU5ZmE5XHU4ODkwXHU5ZmFhXHU4ZWI5XHU5ZmFiXHU4ZmNmXHU4NTVm'@; put 'XHU5OWUwXHU5MjIxXHU5ZmFjXHV7MjhkYjl9XHV7MjE0M2Z9XHU0MDcxXHU0MmEyXHU1YTFhIl0sWyI4Y2M5IiwiXHU5ODY4XHU2NzZiXHU0Mjc2XHU1NzNkIl0sWyI4Y2NlIiwiXHU4NWQ2XHV7MjQ5N2J9XHU4MmJmXHV7MjcxMGR9XHU0YzgxXHV7MjZkNzR9XHU1ZDdiXHV7MjZiMTV9XHV7'@; put 'MjZmYmV9XHU5ZmFkXHU5ZmFlXHU1Yjk2XHU5ZmFmXHU2NmU3XHU3ZTViXHU2ZTU3XHU3OWNhXHUzZDg4XHU0NGMzXHV7MjMyNTZ9XHV7MjI3OTZ9XHU0MzlhXHU0NTM2Il0sWyI4Y2U2IiwiXHU1Y2Q1XHV7MjNiMWF9XHU4YWY5XHU1Yzc4XHUzZDEyXHV7MjM1NTF9XHU1ZDc4XHU5ZmIyXHU3'@; put 'MTU3XHU0NTU4XHV7MjQwZWN9XHV7MjFlMjN9XHU0Yzc3XHUzOTc4XHUzNDRhXHV7MjAxYTR9XHV7MjZjNDF9XHU4YWNjXHU0ZmI0XHV7MjAyMzl9XHU1OWJmXHU4MTZjXHU5ODU2XHV7Mjk4ZmF9XHU1ZjNiIl0sWyI4ZDQwIiwiXHV7MjBiOWZ9Il0sWyI4ZDQyIiwiXHV7MjIxYzF9XHV7Mjg5'@; put 'NmR9XHU0MTAyXHU0NmJiXHV7MjkwNzl9XHUzZjA3XHU5ZmIzXHV7MmExYjV9XHU0MGY4XHUzN2Q2XHU0NmY3XHV7MjZjNDZ9XHU0MTdjXHV7Mjg2YjJ9XHV7MjczZmZ9XHU0NTZkXHUzOGQ0XHV7MjU0OWF9XHU0NTYxXHU0NTFiXHU0ZDg5XHU0YzdiXHU0ZDc2XHU0NWVhXHUzZmM4XHV7MjRi'@; put 'MGZ9XHUzNjYxXHU0NGRlXHU0NGJkXHU0MWVkXHU1ZDNlXHU1ZDQ4XHU1ZDU2XHUzZGZjXHUzODBmXHU1ZGE0XHU1ZGI5XHUzODIwXHUzODM4XHU1ZTQyXHU1ZWJkXHU1ZjI1XHU1ZjgzXHUzOTA4XHUzOTE0XHUzOTNmXHUzOTRkXHU2MGQ3XHU2MTNkXHU1Y2U1XHUzOTg5XHU2MWI3XHU2MWI5'@; put 'XHU2MWNmXHUzOWI4XHU2MjJjXHU2MjkwXHU2MmU1XHU2MzE4XHUzOWY4XHU1NmIxIl0sWyI4ZGExIiwiXHUzYTAzXHU2M2UyXHU2M2ZiXHU2NDA3XHU2NDVhXHUzYTRiXHU2NGMwXHU1ZDE1XHU1NjIxXHU5ZjlmXHUzYTk3XHU2NTg2XHUzYWJkXHU2NWZmXHU2NjUzXHUzYWYyXHU2NjkyXHUz'@; put 'YjIyXHU2NzE2XHUzYjQyXHU2N2E0XHU2ODAwXHUzYjU4XHU2ODRhXHU2ODg0XHUzYjcyXHUzYjcxXHUzYjdiXHU2OTA5XHU2OTQzXHU3MjVjXHU2OTY0XHU2OTlmXHU2OTg1XHUzYmJjXHU2OWQ2XHUzYmRkXHU2YTY1XHU2YTc0XHU2YTcxXHU2YTgyXHUzYmVjXHU2YTk5XHUzYmYyXHU2YWFi'@; put 'XHU2YWI1XHU2YWQ0XHU2YWY2XHU2YjgxXHU2YmMxXHU2YmVhXHU2Yzc1XHU2Y2FhXHUzY2NiXHU2ZDAyXHU2ZDA2XHU2ZDI2XHU2ZDgxXHUzY2VmXHU2ZGE0XHU2ZGIxXHU2ZTE1XHU2ZTE4XHU2ZTI5XHU2ZTg2XHV7Mjg5YzB9XHU2ZWJiXHU2ZWUyXHU2ZWRhXHU5ZjdmXHU2ZWU4XHU2ZWU5'@; put 'XHU2ZjI0XHU2ZjM0XHUzZDQ2XHV7MjNmNDF9XHU2ZjgxXHU2ZmJlXHUzZDZhXHUzZDc1XHU3MWI3XHU1Yzk5XHUzZDhhXHU3MDJjXHUzZDkxXHU3MDUwXHU3MDU0XHU3MDZmXHU3MDdmXHU3MDg5XHV7MjAzMjV9XHU0M2MxXHUzNWYxXHV7MjBlZDh9Il0sWyI4ZTQwIiwiXHV7MjNlZDd9XHU1'@; put 'N2JlXHV7MjZlZDN9XHU3MTNlXHV7MjU3ZTB9XHUzNjRlXHU2OWEyXHV7MjhiZTl9XHU1Yjc0XHU3YTQ5XHV7MjU4ZTF9XHV7Mjk0ZDl9XHU3YTY1XHU3YTdkXHV7MjU5YWN9XHU3YWJiXHU3YWIwXHU3YWMyXHU3YWMzXHU3MWQxXHV7MjY0OGR9XHU0MWNhXHU3YWRhXHU3YWRkXHU3YWVhXHU0'@; put 'MWVmXHU1NGIyXHV7MjVjMDF9XHU3YjBiXHU3YjU1XHU3YjI5XHV7MjUzMGV9XHV7MjVjZmV9XHU3YmEyXHU3YjZmXHU4MzljXHV7MjViYjR9XHV7MjZjN2Z9XHU3YmQwXHU4NDIxXHU3YjkyXHU3YmI4XHV7MjVkMjB9XHUzZGFkXHV7MjVjNjV9XHU4NDkyXHU3YmZhXHU3YzA2XHU3YzM1XHV7'@; put 'MjVjYzF9XHU3YzQ0XHU3YzgzXHV7MjQ4ODJ9XHU3Y2E2XHU2NjdkXHV7MjQ1Nzh9XHU3Y2M5XHU3Y2M3XHU3Y2U2XHU3Yzc0XHU3Y2YzXHU3Y2Y1XHU3Y2NlIl0sWyI4ZWExIiwiXHU3ZTY3XHU0NTFkXHV7MjZlNDR9XHU3ZDVkXHV7MjZlZDZ9XHU3NDhkXHU3ZDg5XHU3ZGFiXHU3MTM1XHU3'@; put 'ZGIzXHU3ZGQyXHV7MjQwNTd9XHV7MjYwMjl9XHU3ZGU0XHUzZDEzXHU3ZGY1XHV7MjE3Zjl9XHU3ZGU1XHV7MjgzNmR9XHU3ZTFkXHV7MjYxMjF9XHV7MjYxNWF9XHU3ZTZlXHU3ZTkyXHU0MzJiXHU5NDZjXHU3ZTI3XHU3ZjQwXHU3ZjQxXHU3ZjQ3XHU3OTM2XHV7MjYyZDB9XHU5OWUxXHU3'@; put 'Zjk3XHV7MjYzNTF9XHU3ZmEzXHV7MjE2NjF9XHV7MjAwNjh9XHU0NTVjXHV7MjM3NjZ9XHU0NTAzXHV7MjgzM2F9XHU3ZmZhXHV7MjY0ODl9XHU4MDA1XHU4MDA4XHU4MDFkXHU4MDI4XHU4MDJmXHV7MmEwODd9XHV7MjZjYzN9XHU4MDNiXHU4MDNjXHU4MDYxXHV7MjI3MTR9XHU0OTg5XHV7'@; put 'MjY2MjZ9XHV7MjNkZTN9XHV7MjY2ZTh9XHU2NzI1XHU4MGE3XHV7MjhhNDh9XHU4MTA3XHU4MTFhXHU1OGIwXHV7MjI2ZjZ9XHU2YzdmXHV7MjY0OTh9XHV7MjRmYjh9XHU2NGU3XHV7MjE0OGF9XHU4MjE4XHV7MjE4NWV9XHU2YTUzXHV7MjRhNjV9XHV7MjRhOTV9XHU0NDdhXHU4MjI5XHV7'@; put 'MjBiMGR9XHV7MjZhNTJ9XHV7MjNkN2V9XHU0ZmY5XHV7MjE0ZmR9XHU4NGUyXHU4MzYyXHV7MjZiMGF9XHV7MjQ5YTd9XHV7MjM1MzB9XHV7MjE3NzN9XHV7MjNkZjh9XHU4MmFhXHU2OTFiXHV7MmY5OTR9XHU0MWRiIl0sWyI4ZjQwIiwiXHU4NTRiXHU4MmQwXHU4MzFhXHV7MjBlMTZ9XHV7'@; put 'MjE3YjR9XHUzNmMxXHV7MjMxN2R9XHV7MjM1NWF9XHU4MjdiXHU4MmUyXHU4MzE4XHV7MjNlOGJ9XHV7MjZkYTN9XHV7MjZiMDV9XHV7MjZiOTd9XHV7MjM1Y2V9XHUzZGJmXHU4MzFkXHU1NWVjXHU4Mzg1XHU0NTBiXHV7MjZkYTV9XHU4M2FjXHU4M2MxXHU4M2QzXHUzNDdlXHV7MjZlZDR9'@; put 'XHU2YTU3XHU4NTVhXHUzNDk2XHV7MjZlNDJ9XHV7MjJlZWZ9XHU4NDU4XHV7MjViZTR9XHU4NDcxXHUzZGQzXHU0NGU0XHU2YWE3XHU4NDRhXHV7MjNjYjV9XHU3OTU4XHU4NGE4XHV7MjZiOTZ9XHV7MjZlNzd9XHV7MjZlNDN9XHU4NGRlXHU4NDBmXHU4MzkxXHU0NGEwXHU4NDkzXHU4NGU0'@; put 'XHV7MjVjOTF9XHU0MjQwXHV7MjVjYzB9XHU0NTQzXHU4NTM0XHU1YWYyXHV7MjZlOTl9XHU0NTI3XHU4NTczXHU0NTE2XHU2N2JmXHU4NjE2Il0sWyI4ZmExIiwiXHV7Mjg2MjV9XHV7Mjg2M2J9XHU4NWMxXHV7MjcwODh9XHU4NjAyXHV7MjE1ODJ9XHV7MjcwY2R9XHV7MmY5YjJ9XHU0NTZh'@; put 'XHU4NjI4XHUzNjQ4XHV7MjE4YTJ9XHU1M2Y3XHV7MjczOWF9XHU4NjdlXHU4NzcxXHV7MmEwZjh9XHU4N2VlXHV7MjJjMjd9XHU4N2IxXHU4N2RhXHU4ODBmXHU1NjYxXHU4NjZjXHU2ODU2XHU0NjBmXHU4ODQ1XHU4ODQ2XHV7Mjc1ZTB9XHV7MjNkYjl9XHV7Mjc1ZTR9XHU4ODVlXHU4ODlj'@; put 'XHU0NjViXHU4OGI0XHU4OGI1XHU2M2MxXHU4OGM1XHU3Nzc3XHV7Mjc3MGZ9XHU4OTg3XHU4OThhXHU4OWE2XHU4OWE5XHU4OWE3XHU4OWJjXHV7MjhhMjV9XHU4OWU3XHV7Mjc5MjR9XHV7MjdhYmR9XHU4YTljXHU3NzkzXHU5MWZlXHU4YTkwXHV7MjdhNTl9XHU3YWU5XHV7MjdiM2F9XHV7'@; put 'MjNmOGZ9XHU0NzEzXHV7MjdiMzh9XHU3MTdjXHU4YjBjXHU4YjFmXHV7MjU0MzB9XHV7MjU1NjV9XHU4YjNmXHU4YjRjXHU4YjRkXHU4YWE5XHV7MjRhN2F9XHU4YjkwXHU4YjliXHU4YWFmXHV7MjE2ZGZ9XHU0NjE1XHU4ODRmXHU4YzliXHV7MjdkNTR9XHV7MjdkOGZ9XHV7MmY5ZDR9XHUz'@; put 'NzI1XHV7MjdkNTN9XHU4Y2Q2XHV7MjdkOTh9XHV7MjdkYmR9XHU4ZDEyXHU4ZDAzXHV7MjE5MTB9XHU4Y2RiXHU3MDVjXHU4ZDExXHV7MjRjYzl9XHUzZWQwXHU4ZDc3Il0sWyI5MDQwIiwiXHU4ZGE5XHV7MjgwMDJ9XHV7MjEwMTR9XHV7MjQ5OGF9XHUzYjdjXHV7MjgxYmN9XHV7MjcxMGN9'@; put 'XHU3YWU3XHU4ZWFkXHU4ZWI2XHU4ZWMzXHU5MmQ0XHU4ZjE5XHU4ZjJkXHV7MjgzNjV9XHV7Mjg0MTJ9XHU4ZmE1XHU5MzAzXHV7MmEyOWZ9XHV7MjBhNTB9XHU4ZmIzXHU0OTJhXHV7Mjg5ZGV9XHV7Mjg1M2R9XHV7MjNkYmJ9XHU1ZWY4XHV7MjMyNjJ9XHU4ZmY5XHV7MmEwMTR9XHV7Mjg2'@; put 'YmN9XHV7Mjg1MDF9XHV7MjIzMjV9XHUzOTgwXHV7MjZlZDd9XHU5MDM3XHV7Mjg1M2N9XHV7MjdhYmV9XHU5MDYxXHV7Mjg1NmN9XHV7Mjg2MGJ9XHU5MGE4XHV7Mjg3MTN9XHU5MGM0XHV7Mjg2ZTZ9XHU5MGFlXHU5MGZkXHU5MTY3XHUzYWYwXHU5MWE5XHU5MWM0XHU3Y2FjXHV7Mjg5MzN9'@; put 'XHV7MjFlODl9XHU5MjBlXHU2YzlmXHU5MjQxXHU5MjYyXHV7MjU1Yjl9XHU5MmI5XHV7MjhhYzZ9XHV7MjNjOWJ9XHV7MjhiMGN9XHV7MjU1ZGJ9Il0sWyI5MGExIiwiXHV7MjBkMzF9XHU5MzJjXHU5MzZiXHV7MjhhZTF9XHV7MjhiZWJ9XHU3MDhmXHU1YWMzXHV7MjhhZTJ9XHV7MjhhZTV9'@; put 'XHU0OTY1XHU5MjQ0XHV7MjhiZWN9XHV7MjhjMzl9XHV7MjhiZmZ9XHU5MzczXHU5NDViXHU4ZWJjXHU5NTg1XHU5NWE2XHU5NDI2XHU5NWEwXHU2ZmY2XHU0MmI5XHV7MjI2N2F9XHV7Mjg2ZDh9XHV7MjEyN2N9XHV7MjNlMmV9XHU0OWRmXHU2YzFjXHU5NjdiXHU5Njk2XHU0MTZjXHU5NmEz'@; put 'XHV7MjZlZDV9XHU2MWRhXHU5NmI2XHU3OGY1XHV7MjhhZTB9XHU5NmJkXHU1M2NjXHU0OWExXHV7MjZjYjh9XHV7MjAyNzR9XHV7MjY0MTB9XHV7MjkwYWZ9XHV7MjkwZTV9XHV7MjRhZDF9XHV7MjE5MTV9XHV7MjMzMGF9XHU5NzMxXHU4NjQyXHU5NzM2XHU0YTBmXHU0NTNkXHU0NTg1XHV7'@; put 'MjRhZTl9XHU3MDc1XHU1YjQxXHU5NzFiXHU5NzVjXHV7MjkxZDV9XHU5NzU3XHU1YjRhXHV7MjkxZWJ9XHU5NzVmXHU5NDI1XHU1MGQwXHV7MjMwYjd9XHV7MjMwYmN9XHU5Nzg5XHU5NzlmXHU5N2IxXHU5N2JlXHU5N2MwXHU5N2QyXHU5N2UwXHV7MjU0NmN9XHU5N2VlXHU3NDFjXHV7Mjk0'@; put 'MzN9XHU5N2ZmXHU5N2Y1XHV7Mjk0MWR9XHV7Mjc5N2F9XHU0YWQxXHU5ODM0XHU5ODMzXHU5ODRiXHU5ODY2XHUzYjBlXHV7MjcxNzV9XHUzZDUxXHV7MjA2MzB9XHV7MjQxNWN9Il0sWyI5MTQwIiwiXHV7MjU3MDZ9XHU5OGNhXHU5OGI3XHU5OGM4XHU5OGM3XHU0YWZmXHV7MjZkMjd9XHV7'@; put 'MjE2ZDN9XHU1NWIwXHU5OGUxXHU5OGU2XHU5OGVjXHU5Mzc4XHU5OTM5XHV7MjRhMjl9XHU0YjcyXHV7Mjk4NTd9XHV7Mjk5MDV9XHU5OWY1XHU5YTBjXHU5YTNiXHU5YTEwXHU5YTU4XHV7MjU3MjV9XHUzNmM0XHV7MjkwYjF9XHV7MjliZDV9XHU5YWUwXHU5YWUyXHV7MjliMDV9XHU5YWY0'@; put 'XHU0YzBlXHU5YjE0XHU5YjJkXHV7Mjg2MDB9XHU1MDM0XHU5YjM0XHV7MjY5YTh9XHUzOGMzXHV7MjMwN2R9XHU5YjUwXHU5YjQwXHV7MjlkM2V9XHU1YTQ1XHV7MjE4NjN9XHU5YjhlXHV7MjQyNGJ9XHU5YzAyXHU5YmZmXHU5YzBjXHV7MjllNjh9XHU5ZGQ0XHV7MjlmYjd9XHV7MmExOTJ9'@; put 'XHV7MmExYWJ9XHV7MmEwZTF9XHV7MmExMjN9XHV7MmExZGZ9XHU5ZDdlXHU5ZDgzXHV7MmExMzR9XHU5ZTBlXHU2ODg4Il0sWyI5MWExIiwiXHU5ZGM0XHV7MjIxNWJ9XHV7MmExOTN9XHV7MmEyMjB9XHV7MjE5M2J9XHV7MmEyMzN9XHU5ZDM5XHV7MmEwYjl9XHV7MmEyYjR9XHU5ZTkwXHU5'@; put 'ZTk1XHU5ZTllXHU5ZWEyXHU0ZDM0XHU5ZWFhXHU5ZWFmXHV7MjQzNjR9XHU5ZWMxXHUzYjYwXHUzOWU1XHUzZDFkXHU0ZjMyXHUzN2JlXHV7MjhjMmJ9XHU5ZjAyXHU5ZjA4XHU0Yjk2XHU5NDI0XHV7MjZkYTJ9XHU5ZjE3XHU5ZjE2XHU5ZjM5XHU1NjlmXHU1NjhhXHU5ZjQ1XHU5OWI4XHV7'@; put 'MjkwOGJ9XHU5N2YyXHU4NDdmXHU5ZjYyXHU5ZjY5XHU3YWRjXHU5ZjhlXHU3MjE2XHU0YmJlXHV7MjQ5NzV9XHV7MjQ5YmJ9XHU3MTc3XHV7MjQ5Zjh9XHV7MjQzNDh9XHV7MjRhNTF9XHU3MzllXHV7MjhiZGF9XHV7MjE4ZmF9XHU3OTlmXHV7Mjg5N2V9XHV7MjhlMzZ9XHU5MzY5XHU5M2Yz'@; put 'XHV7MjhhNDR9XHU5MmVjXHU5MzgxXHU5M2NiXHV7Mjg5NmN9XHV7MjQ0Yjl9XHU3MjE3XHUzZWViXHU3NzcyXHU3YTQzXHU3MGQwXHV7MjQ0NzN9XHV7MjQzZjh9XHU3MTdlXHV7MjE3ZWZ9XHU3MGEzXHV7MjE4YmV9XHV7MjM1OTl9XHUzZWM3XHV7MjE4ODV9XHV7MjU0MmZ9XHV7MjE3Zjh9'@; put 'XHUzNzIyXHV7MjE2ZmJ9XHV7MjE4Mzl9XHUzNmUxXHV7MjE3NzR9XHV7MjE4ZDF9XHV7MjVmNGJ9XHUzNzIzXHV7MjE2YzB9XHU1NzViXHV7MjRhMjV9XHV7MjEzZmV9XHV7MjEyYTh9Il0sWyI5MjQwIiwiXHV7MjEzYzZ9XHV7MjE0YjZ9XHU4NTAzXHV7MjM2YTZ9XHU4NTAzXHU4NDU1XHV7'@; put 'MjQ5OTR9XHV7MjcxNjV9XHV7MjNlMzF9XHV7MjU1NWN9XHV7MjNlZmJ9XHV7MjcwNTJ9XHU0NGY0XHV7MjM2ZWV9XHV7Mjk5OWR9XHV7MjZmMjZ9XHU2N2Y5XHUzNzMzXHUzYzE1XHUzZGU3XHU1ODZjXHV7MjE5MjJ9XHU2ODEwXHU0MDU3XHV7MjM3M2Z9XHV7MjQwZTF9XHV7MjQwOGJ9XHV7'@; put 'MjQxMGZ9XHV7MjZjMjF9XHU1NGNiXHU1NjllXHV7MjY2YjF9XHU1NjkyXHV7MjBmZGZ9XHV7MjBiYTh9XHV7MjBlMGR9XHU5M2M2XHV7MjhiMTN9XHU5MzljXHU0ZWY4XHU1MTJiXHUzODE5XHV7MjQ0MzZ9XHU0ZWJjXHV7MjA0NjV9XHV7MjAzN2Z9XHU0ZjRiXHU0ZjhhXHV7MjU2NTF9XHU1'@; put 'YTY4XHV7MjAxYWJ9XHV7MjAzY2J9XHUzOTk5XHV7MjAzMGF9XHV7MjA0MTR9XHUzNDM1XHU0ZjI5XHV7MjAyYzB9XHV7MjhlYjN9XHV7MjAyNzV9XHU4YWRhXHV7MjAyMGN9XHU0ZTk4Il0sWyI5MmExIiwiXHU1MGNkXHU1MTBkXHU0ZmEyXHU0ZjAzXHV7MjRhMGV9XHV7MjNlOGF9XHU0ZjQy'@; put 'XHU1MDJlXHU1MDZjXHU1MDgxXHU0ZmNjXHU0ZmU1XHU1MDU4XHU1MGZjXHU1MTU5XHU1MTViXHU1MTVkXHU1MTVlXHU2ZTc2XHV7MjM1OTV9XHV7MjNlMzl9XHV7MjNlYmZ9XHU2ZDcyXHV7MjE4ODR9XHV7MjNlODl9XHU1MWE4XHU1MWMzXHV7MjA1ZTB9XHU0NGRkXHV7MjA0YTN9XHV7MjA0'@; put 'OTJ9XHV7MjA0OTF9XHU4ZDdhXHV7MjhhOWN9XHV7MjA3MGV9XHU1MjU5XHU1MmE0XHV7MjA4NzN9XHU1MmUxXHU5MzZlXHU0NjdhXHU3MThjXHV7MjQzOGN9XHV7MjBjMjB9XHV7MjQ5YWN9XHV7MjEwZTR9XHU2OWQxXHV7MjBlMWR9XHU3NDc5XHUzZWRlXHU3NDk5XHU3NDE0XHU3NDU2XHU3'@; put 'Mzk4XHU0YjhlXHV7MjRhYmN9XHV7MjQwOGR9XHU1M2QwXHUzNTg0XHU3MjBmXHV7MjQwYzl9XHU1NWI0XHV7MjAzNDV9XHU1NGNkXHV7MjBiYzZ9XHU1NzFkXHU5MjVkXHU5NmY0XHU5MzY2XHU1N2RkXHU1NzhkXHU1NzdmXHUzNjNlXHU1OGNiXHU1YTk5XHV7MjhhNDZ9XHV7MjE2ZmF9XHV7'@; put 'MjE3NmZ9XHV7MjE3MTB9XHU1YTJjXHU1OWI4XHU5MjhmXHU1YTdlXHU1YWNmXHU1YTEyXHV7MjU5NDZ9XHV7MjE5ZjN9XHV7MjE4NjF9XHV7MjQyOTV9XHUzNmY1XHU2ZDA1XHU3NDQzXHU1YTIxXHV7MjVlODN9Il0sWyI5MzQwIiwiXHU1YTgxXHV7MjhiZDd9XHV7MjA0MTN9XHU5M2UwXHU3'@; put 'NDhjXHV7MjEzMDN9XHU3MTA1XHU0OTcyXHU5NDA4XHV7Mjg5ZmJ9XHU5M2JkXHUzN2EwXHU1YzFlXHU1YzllXHU1ZTVlXHU1ZTQ4XHV7MjE5OTZ9XHV7MjE5N2N9XHV7MjNhZWV9XHU1ZWNkXHU1YjRmXHV7MjE5MDN9XHV7MjE5MDR9XHUzNzAxXHV7MjE4YTB9XHUzNmRkXHV7MjE2ZmV9XHUz'@; put 'NmQzXHU4MTJhXHV7MjhhNDd9XHV7MjFkYmF9XHV7MjM0NzJ9XHV7Mjg5YTh9XHU1ZjBjXHU1ZjBlXHV7MjE5Mjd9XHV7MjE3YWJ9XHU1YTZiXHV7MjE3M2J9XHU1YjQ0XHU4NjE0XHV7Mjc1ZmR9XHU4ODYwXHU2MDdlXHV7MjI4NjB9XHV7MjI2MmJ9XHU1ZmRiXHUzZWI4XHV7MjI1YWZ9XHV7'@; put 'MjI1YmV9XHV7MjkwODh9XHV7MjZmNzN9XHU2MWMwXHV7MjAwM2V9XHV7MjAwNDZ9XHV7MjI2MWJ9XHU2MTk5XHU2MTk4XHU2MDc1XHV7MjJjOWJ9XHV7MjJkMDd9XHV7MjQ2ZDR9XHV7MjkxNGR9Il0sWyI5M2ExIiwiXHU2NDcxXHV7MjQ2NjV9XHV7MjJiNmF9XHUzYTI5XHV7MjJiMjJ9XHV7'@; put 'MjM0NTB9XHV7Mjk4ZWF9XHV7MjJlNzh9XHU2MzM3XHV7MmE0NWJ9XHU2NGI2XHU2MzMxXHU2M2QxXHV7MjQ5ZTN9XHV7MjJkNjd9XHU2MmE0XHV7MjJjYTF9XHU2NDNiXHU2NTZiXHU2OTcyXHUzYmY0XHV7MjMwOGV9XHV7MjMyYWR9XHV7MjQ5ODl9XHV7MjMyYWJ9XHU1NTBkXHV7MjMyZTB9'@; put 'XHV7MjE4ZDl9XHV7Mjk0M2Z9XHU2NmNlXHV7MjMyODl9XHV7MjMxYjN9XHUzYWUwXHU0MTkwXHV7MjU1ODR9XHV7MjhiMjJ9XHV7MjU1OGZ9XHV7MjE2ZmN9XHV7MjU1NWJ9XHV7MjU0MjV9XHU3OGVlXHV7MjMxMDN9XHV7MjE4MmF9XHV7MjMyMzR9XHUzNDY0XHV7MjMyMGZ9XHV7MjMxODJ9'@; put 'XHV7MjQyYzl9XHU2NjhlXHV7MjZkMjR9XHU2NjZiXHU0YjkzXHU2NjMwXHV7Mjc4NzB9XHV7MjFkZWJ9XHU2NjYzXHV7MjMyZDJ9XHV7MjMyZTF9XHU2NjFlXHV7MjU4NzJ9XHUzOGQxXHV7MjM4M2F9XHV7MjM3YmN9XHUzYjk5XHV7MjM3YTJ9XHV7MjMzZmV9XHU3NGQwXHUzYjk2XHU2Nzhm'@; put 'XHV7MjQ2MmF9XHU2OGI2XHU2ODFlXHUzYmM0XHU2YWJlXHUzODYzXHV7MjM3ZDV9XHV7MjQ0ODd9XHU2YTMzXHU2YTUyXHU2YWM5XHU2YjA1XHV7MjE5MTJ9XHU2NTExXHU2ODk4XHU2YTRjXHUzYmQ3XHU2YTdhXHU2YjU3XHV7MjNmYzB9XHV7MjNjOWF9XHU5M2EwXHU5MmYyXHV7MjhiZWF9'@; put 'XHV7MjhhY2J9Il0sWyI5NDQwIiwiXHU5Mjg5XHV7MjgwMWV9XHV7Mjg5ZGN9XHU5NDY3XHU2ZGE1XHU2ZjBiXHV7MjQ5ZWN9XHU2ZDY3XHV7MjNmN2Z9XHUzZDhmXHU2ZTA0XHV7MjQwM2N9XHU1YTNkXHU2ZTBhXHU1ODQ3XHU2ZDI0XHU3ODQyXHU3MTNiXHV7MjQzMWF9XHV7MjQyNzZ9XHU3'@; put 'MGYxXHU3MjUwXHU3Mjg3XHU3Mjk0XHV7MjQ3OGZ9XHV7MjQ3MjV9XHU1MTc5XHV7MjRhYTR9XHV7MjA1ZWJ9XHU3NDdhXHV7MjNlZjh9XHV7MjM2NWZ9XHV7MjRhNGF9XHV7MjQ5MTd9XHV7MjVmZTF9XHUzZjA2XHUzZWIxXHV7MjRhZGZ9XHV7MjhjMjN9XHV7MjNmMzV9XHU2MGE3XHUzZWYz'@; put 'XHU3NGNjXHU3NDNjXHU5Mzg3XHU3NDM3XHU0NDlmXHV7MjZkZWF9XHU0NTUxXHU3NTgzXHUzZjYzXHV7MjRjZDl9XHV7MjRkMDZ9XHUzZjU4XHU3NTU1XHU3NjczXHV7MmE1YzZ9XHUzYjE5XHU3NDY4XHV7MjhhY2N9XHV7MjQ5YWJ9XHV7MjQ5OGV9XHUzYWZiIl0sWyI5NGExIiwiXHUzZGNk'@; put 'XHV7MjRhNGV9XHUzZWZmXHV7MjQ5YzV9XHV7MjQ4ZjN9XHU5MWZhXHU1NzMyXHU5MzQyXHV7MjhhZTN9XHV7MjE4NjR9XHU1MGRmXHV7MjUyMjF9XHV7MjUxZTd9XHU3Nzc4XHV7MjMyMzJ9XHU3NzBlXHU3NzBmXHU3NzdiXHV7MjQ2OTd9XHV7MjM3ODF9XHUzYTVlXHV7MjQ4ZjB9XHU3NDM4'@; put 'XHU3NDliXHUzZWJmXHV7MjRhYmF9XHV7MjRhYzd9XHU0MGM4XHV7MjRhOTZ9XHV7MjYxYWV9XHU5MzA3XHV7MjU1ODF9XHU3ODFlXHU3ODhkXHU3ODg4XHU3OGQyXHU3M2QwXHU3OTU5XHV7Mjc3NDF9XHV7MjU2ZTN9XHU0MTBlXHU3OTliXHU4NDk2XHU3OWE1XHU2YTJkXHV7MjNlZmF9XHU3'@; put 'YTNhXHU3OWY0XHU0MTZlXHV7MjE2ZTZ9XHU0MTMyXHU5MjM1XHU3OWYxXHV7MjBkNGN9XHV7MjQ5OGN9XHV7MjAyOTl9XHV7MjNkYmF9XHV7MjE3NmV9XHUzNTk3XHU1NTZiXHUzNTcwXHUzNmFhXHV7MjAxZDR9XHV7MjBjMGR9XHU3YWUyXHU1YTU5XHV7MjI2ZjV9XHV7MjVhYWZ9XHV7MjVh'@; put 'OWN9XHU1YTBkXHV7MjAyNWJ9XHU3OGYwXHU1YTJhXHV7MjViYzZ9XHU3YWZlXHU0MWY5XHU3YzVkXHU3YzZkXHU0MjExXHV7MjViYjN9XHV7MjVlYmN9XHV7MjVlYTZ9XHU3Y2NkXHV7MjQ5Zjl9XHV7MjE3YjB9XHU3YzhlXHU3YzdjXHU3Y2FlXHU2YWIyXHU3ZGRjXHU3ZTA3XHU3ZGQzXHU3'@; put 'ZjRlXHV7MjYyNjF9Il0sWyI5NTQwIiwiXHV7MjYxNWN9XHV7MjdiNDh9XHU3ZDk3XHV7MjVlODJ9XHU0MjZhXHV7MjZiNzV9XHV7MjA5MTZ9XHU2N2Q2XHV7MjAwNGV9XHV7MjM1Y2Z9XHU1N2M0XHV7MjY0MTJ9XHV7MjYzZjh9XHV7MjQ5NjJ9XHU3ZmRkXHU3YjI3XHV7MjA4MmN9XHV7MjVh'@; put 'ZTl9XHV7MjVkNDN9XHU3YjBjXHV7MjVlMGV9XHU5OWU2XHU4NjQ1XHU5YTYzXHU2YTFjXHV7MjM0M2Z9XHUzOWUyXHV7MjQ5Zjd9XHV7MjY1YWR9XHU5YTFmXHV7MjY1YTB9XHU4NDgwXHV7MjcxMjd9XHV7MjZjZDF9XHU0NGVhXHU4MTM3XHU0NDAyXHU4MGM2XHU4MTA5XHU4MTQyXHV7MjY3'@; put 'YjR9XHU5OGMzXHV7MjZhNDJ9XHU4MjYyXHU4MjY1XHV7MjZhNTF9XHU4NDUzXHV7MjZkYTd9XHU4NjEwXHV7MjcyMWJ9XHU1YTg2XHU0MTdmXHV7MjE4NDB9XHU1YjJiXHV7MjE4YTF9XHU1YWU0XHV7MjE4ZDh9XHU4NmEwXHV7MmY5YmN9XHV7MjNkOGZ9XHU4ODJkXHV7Mjc0MjJ9XHU1YTAy'@; put 'Il0sWyI5NWExIiwiXHU4ODZlXHU0ZjQ1XHU4ODg3XHU4OGJmXHU4OGU2XHU4OTY1XHU4OTRkXHV7MjU2ODN9XHU4OTU0XHV7Mjc3ODV9XHV7Mjc3ODR9XHV7MjhiZjV9XHV7MjhiZDl9XHV7MjhiOWN9XHV7Mjg5Zjl9XHUzZWFkXHU4NGEzXHU0NmY1XHU0NmNmXHUzN2YyXHU4YTNkXHU4YTFj'@; put 'XHV7Mjk0NDh9XHU1ZjRkXHU5MjJiXHV7MjQyODR9XHU2NWQ0XHU3MTI5XHU3MGM0XHV7MjE4NDV9XHU5ZDZkXHU4YzlmXHU4Y2U5XHV7MjdkZGN9XHU1OTlhXHU3N2MzXHU1OWYwXHU0MzZlXHUzNmQ0XHU4ZTJhXHU4ZWE3XHV7MjRjMDl9XHU4ZjMwXHU4ZjRhXHU0MmY0XHU2YzU4XHU2ZmJi'@; put 'XHV7MjIzMjF9XHU0ODliXHU2Zjc5XHU2ZThiXHV7MjE3ZGF9XHU5YmU5XHUzNmI1XHV7MjQ5MmZ9XHU5MGJiXHU5MDk3XHU1NTcxXHU0OTA2XHU5MWJiXHU5NDA0XHV7MjhhNGJ9XHU0MDYyXHV7MjhhZmN9XHU5NDI3XHV7MjhjMWR9XHV7MjhjM2J9XHU4NGU1XHU4YTJiXHU5NTk5XHU5NWE3'@; put 'XHU5NTk3XHU5NTk2XHV7MjhkMzR9XHU3NDQ1XHUzZWMyXHV7MjQ4ZmZ9XHV7MjRhNDJ9XHV7MjQzZWF9XHUzZWU3XHV7MjMyMjV9XHU5NjhmXHV7MjhlZTd9XHV7MjhlNjZ9XHV7MjhlNjV9XHUzZWNjXHV7MjQ5ZWR9XHV7MjRhNzh9XHV7MjNmZWV9XHU3NDEyXHU3NDZiXHUzZWZjXHU5NzQx'@; put 'XHV7MjkwYjB9Il0sWyI5NjQwIiwiXHU2ODQ3XHU0YTFkXHV7MjkwOTN9XHV7MjU3ZGZ9XHU5NzVkXHU5MzY4XHV7Mjg5ODl9XHV7MjhjMjZ9XHV7MjhiMmZ9XHV7MjYzYmV9XHU5MmJhXHU1YjExXHU4YjY5XHU0OTNjXHU3M2Y5XHV7MjQyMWJ9XHU5NzliXHU5NzcxXHU5OTM4XHV7MjBmMjZ9'@; put 'XHU1ZGMxXHV7MjhiYzV9XHV7MjRhYjJ9XHU5ODFmXHV7Mjk0ZGF9XHU5MmY2XHV7Mjk1ZDd9XHU5MWU1XHU0NGMwXHV7MjhiNTB9XHV7MjRhNjd9XHV7MjhiNjR9XHU5OGRjXHV7MjhhNDV9XHUzZjAwXHU5MjJhXHU0OTI1XHU4NDE0XHU5OTNiXHU5OTRkXHV7MjdiMDZ9XHUzZGZkXHU5OTli'@; put 'XHU0YjZmXHU5OWFhXHU5YTVjXHV7MjhiNjV9XHV7MjU4Yzh9XHU2YThmXHU5YTIxXHU1YWZlXHU5YTJmXHV7Mjk4ZjF9XHU0YjkwXHV7Mjk5NDh9XHU5OWJjXHU0YmJkXHU0Yjk3XHU5MzdkXHU1ODcyXHV7MjEzMDJ9XHU1ODIyXHV7MjQ5Yjh9Il0sWyI5NmExIiwiXHV7MjE0ZTh9XHU3ODQ0'@; put 'XHV7MjI3MWZ9XHV7MjNkYjh9XHU2OGM1XHUzZDdkXHU5NDU4XHUzOTI3XHU2MTUwXHV7MjI3ODF9XHV7MjI5NmJ9XHU2MTA3XHU5YzRmXHU5YzUzXHU5YzdiXHU5YzM1XHU5YzEwXHU5YjdmXHU5YmNmXHV7MjllMmR9XHU5YjlmXHV7MmExZjV9XHV7MmEwZmV9XHU5ZDIxXHU0Y2FlXHV7MjQx'@; put 'MDR9XHU5ZTE4XHU0Y2IwXHU5ZDBjXHV7MmExYjR9XHV7MmEwZWR9XHV7MmEwZjN9XHV7Mjk5MmZ9XHU5ZGE1XHU4NGJkXHV7MjZlMTJ9XHV7MjZmZGZ9XHV7MjZiODJ9XHU4NWZjXHU0NTMzXHV7MjZkYTR9XHV7MjZlODR9XHV7MjZkZjB9XHU4NDIwXHU4NWVlXHV7MjZlMDB9XHV7MjM3ZDd9'@; put 'XHV7MjYwNjR9XHU3OWUyXHV7MjM1OWN9XHV7MjM2NDB9XHU0OTJkXHV7MjQ5ZGV9XHUzZDYyXHU5M2RiXHU5MmJlXHU5MzQ4XHV7MjAyYmZ9XHU3OGI5XHU5Mjc3XHU5NDRkXHU0ZmU0XHUzNDQwXHU5MDY0XHV7MjU1NWR9XHU3ODNkXHU3ODU0XHU3OGI2XHU3ODRiXHV7MjE3NTd9XHV7MjMx'@; put 'Yzl9XHV7MjQ5NDF9XHUzNjlhXHU0ZjcyXHU2ZmRhXHU2ZmQ5XHU3MDFlXHU3MDFlXHU1NDE0XHV7MjQxYjV9XHU1N2JiXHU1OGYzXHU1NzhhXHU5ZDE2XHU1N2Q3XHU3MTM0XHUzNGFmXHV7MjQxYWN9XHU3MWViXHV7MjZjNDB9XHV7MjRmOTd9XHU1YjI4XHV7MjE3YjV9XHV7MjhhNDl9Il0s'@; put 'WyI5NzQwIiwiXHU2MTBjXHU1YWNlXHU1YTBiXHU0MmJjXHV7MjQ0ODh9XHUzNzJjXHU0YjdiXHV7Mjg5ZmN9XHU5M2JiXHU5M2I4XHV7MjE4ZDZ9XHV7MjBmMWR9XHU4NDcyXHV7MjZjYzB9XHV7MjE0MTN9XHV7MjQyZmF9XHV7MjJjMjZ9XHV7MjQzYzF9XHU1OTk0XHV7MjNkYjd9XHV7MjY3'@; put 'NDF9XHU3ZGE4XHV7MjYxNWJ9XHV7MjYwYTR9XHV7MjQ5Yjl9XHV7MjQ5OGJ9XHV7Mjg5ZmF9XHU5MmU1XHU3M2UyXHUzZWU5XHU3NGI0XHV7MjhiNjN9XHV7MjE4OWZ9XHUzZWUxXHV7MjRhYjN9XHU2YWQ4XHU3M2YzXHU3M2ZiXHUzZWQ2XHV7MjRhM2V9XHV7MjRhOTR9XHV7MjE3ZDl9XHV7'@; put 'MjRhNjZ9XHV7MjAzYTd9XHV7MjE0MjR9XHV7MjQ5ZTV9XHU3NDQ4XHV7MjQ5MTZ9XHU3MGE1XHV7MjQ5NzZ9XHU5Mjg0XHU3M2U2XHU5MzVmXHV7MjA0ZmV9XHU5MzMxXHV7MjhhY2V9XHV7MjhhMTZ9XHU5Mzg2XHV7MjhiZTd9XHV7MjU1ZDV9XHU0OTM1XHV7MjhhODJ9XHU3MTZiIl0sWyI5'@; put 'N2ExIiwiXHV7MjQ5NDN9XHV7MjBjZmZ9XHU1NmE0XHV7MjA2MWF9XHV7MjBiZWJ9XHV7MjBjYjh9XHU1NTAyXHU3OWM0XHV7MjE3ZmF9XHU3ZGZlXHV7MjE2YzJ9XHV7MjRhNTB9XHV7MjE4NTJ9XHU0NTJlXHU5NDAxXHUzNzBhXHV7MjhhYzB9XHV7MjQ5YWR9XHU1OWIwXHV7MjE4YmZ9XHV7'@; put 'MjE4ODN9XHV7Mjc0ODR9XHU1YWExXHUzNmUyXHV7MjNkNWJ9XHUzNmIwXHU5MjVmXHU1YTc5XHV7MjhhODF9XHV7MjE4NjJ9XHU5Mzc0XHUzY2NkXHV7MjBhYjR9XHU0YTk2XHUzOThhXHU1MGY0XHUzZDY5XHUzZDRjXHV7MjEzOWN9XHU3MTc1XHU0MmZiXHV7MjgyMTh9XHU2ZTBmXHV7Mjkw'@; put 'ZTR9XHU0NGViXHU2ZDU3XHV7MjdlNGZ9XHU3MDY3XHU2Y2FmXHUzY2Q2XHV7MjNmZWR9XHV7MjNlMmR9XHU2ZTAyXHU2ZjBjXHUzZDZmXHV7MjAzZjV9XHU3NTUxXHUzNmJjXHUzNGM4XHU0NjgwXHUzZWRhXHU0ODcxXHU1OWM0XHU5MjZlXHU0OTNlXHU4ZjQxXHV7MjhjMWN9XHV7MjZiYzB9'@; put 'XHU1ODEyXHU1N2M4XHUzNmQ2XHV7MjE0NTJ9XHU3MGZlXHV7MjQzNjJ9XHV7MjRhNzF9XHV7MjJmZTN9XHV7MjEyYjB9XHV7MjIzYmR9XHU2OGI5XHU2OTY3XHV7MjEzOTh9XHV7MjM0ZTV9XHV7MjdiZjR9XHV7MjM2ZGZ9XHV7MjhhODN9XHV7MjM3ZDZ9XHV7MjMzZmF9XHV7MjRjOWZ9XHU2'@; put 'YTFhXHV7MjM2YWR9XHV7MjZjYjd9XHU4NDNlXHU0NGRmXHU0NGNlIl0sWyI5ODQwIiwiXHV7MjZkMjZ9XHV7MjZkNTF9XHV7MjZjODJ9XHV7MjZmZGV9XHU2ZjE3XHV7MjcxMDl9XHU4MzNkXHV7MjE3M2F9XHU4M2VkXHV7MjZjODB9XHV7MjcwNTN9XHV7MjE3ZGJ9XHU1OTg5XHU1YTgyXHV7'@; put 'MjE3YjN9XHU1YTYxXHU1YTcxXHV7MjE5MDV9XHV7MjQxZmN9XHUzNzJkXHU1OWVmXHV7MjE3M2N9XHUzNmM3XHU3MThlXHU5MzkwXHU2NjlhXHV7MjQyYTV9XHU1YTZlXHU1YTJiXHV7MjQyOTN9XHU2YTJiXHV7MjNlZjl9XHV7Mjc3MzZ9XHV7MjQ0NWJ9XHV7MjQyY2F9XHU3MTFkXHV7MjQy'@; put 'NTl9XHV7Mjg5ZTF9XHU0ZmIwXHV7MjZkMjh9XHU1Y2MyXHV7MjQ0Y2V9XHV7MjdlNGR9XHV7MjQzYmR9XHU2YTBjXHV7MjQyNTZ9XHV7MjEzMDR9XHU3MGE2XHU3MTMzXHV7MjQzZTl9XHUzZGE1XHU2Y2RmXHV7MmY4MjV9XHV7MjRhNGZ9XHU3ZTY1XHU1OWViXHU1ZDJmXHUzZGYzXHU1ZjVj'@; put 'XHV7MjRhNWR9XHV7MjE3ZGZ9XHU3ZGE0XHU4NDI2Il0sWyI5OGExIiwiXHU1NDg1XHV7MjNhZmF9XHV7MjMzMDB9XHV7MjAyMTR9XHU1NzdlXHV7MjA4ZDV9XHV7MjA2MTl9XHUzZmU1XHV7MjFmOWV9XHV7MmEyYjZ9XHU3MDAzXHV7MjkxNWJ9XHU1ZDcwXHU3MzhmXHU3Y2QzXHV7MjhhNTl9'@; put 'XHV7Mjk0MjB9XHU0ZmM4XHU3ZmU3XHU3MmNkXHU3MzEwXHV7MjdhZjR9XHU3MzM4XHU3MzM5XHV7MjU2ZjZ9XHU3MzQxXHU3MzQ4XHUzZWE5XHV7MjdiMTh9XHU5MDZjXHU3MWY1XHV7MjQ4ZjJ9XHU3M2UxXHU4MWY2XHUzZWNhXHU3NzBjXHUzZWQxXHU2Y2EyXHU1NmZkXHU3NDE5XHU3NDFl'@; put 'XHU3NDFmXHUzZWUyXHUzZWYwXHUzZWY0XHUzZWZhXHU3NGQzXHUzZjBlXHUzZjUzXHU3NTQyXHU3NTZkXHU3NTcyXHU3NThkXHUzZjdjXHU3NWM4XHU3NWRjXHUzZmMwXHU3NjRkXHUzZmQ3XHU3Njc0XHUzZmRjXHU3NjdhXHV7MjRmNWN9XHU3MTg4XHU1NjIzXHU4OTgwXHU1ODY5XHU0MDFk'@; put 'XHU3NzQzXHU0MDM5XHU2NzYxXHU0MDQ1XHUzNWRiXHU3Nzk4XHU0MDZhXHU0MDZmXHU1YzVlXHU3N2JlXHU3N2NiXHU1OGYyXHU3ODE4XHU3MGI5XHU3ODFjXHU0MGE4XHU3ODM5XHU3ODQ3XHU3ODUxXHU3ODY2XHU4NDQ4XHV7MjU1MzV9XHU3OTMzXHU2ODAzXHU3OTMyXHU0MTAzIl0sWyI5'@; put 'OTQwIiwiXHU0MTA5XHU3OTkxXHU3OTk5XHU4ZmJiXHU3YTA2XHU4ZmJjXHU0MTY3XHU3YTkxXHU0MWIyXHU3YWJjXHU4Mjc5XHU0MWM0XHU3YWNmXHU3YWRiXHU0MWNmXHU0ZTIxXHU3YjYyXHU3YjZjXHU3YjdiXHU3YzEyXHU3YzFiXHU0MjYwXHU0MjdhXHU3YzdiXHU3YzljXHU0MjhjXHU3'@; put 'Y2I4XHU0Mjk0XHU3Y2VkXHU4ZjkzXHU3MGMwXHV7MjBjY2Z9XHU3ZGNmXHU3ZGQ0XHU3ZGQwXHU3ZGZkXHU3ZmFlXHU3ZmI0XHU3MjlmXHU0Mzk3XHU4MDIwXHU4MDI1XHU3YjM5XHU4MDJlXHU4MDMxXHU4MDU0XHUzZGNjXHU1N2I0XHU3MGEwXHU4MGI3XHU4MGU5XHU0M2VkXHU4MTBjXHU3'@; put 'MzJhXHU4MTBlXHU4MTEyXHU3NTYwXHU4MTE0XHU0NDAxXHUzYjM5XHU4MTU2XHU4MTU5XHU4MTVhIl0sWyI5OWExIiwiXHU0NDEzXHU1ODNhXHU4MTdjXHU4MTg0XHU0NDI1XHU4MTkzXHU0NDJkXHU4MWE1XHU1N2VmXHU4MWMxXHU4MWU0XHU4MjU0XHU0NDhmXHU4MmE2XHU4Mjc2XHU4MmNh'@; put 'XHU4MmQ4XHU4MmZmXHU0NGIwXHU4MzU3XHU5NjY5XHU2OThhXHU4NDA1XHU3MGY1XHU4NDY0XHU2MGUzXHU4NDg4XHU0NTA0XHU4NGJlXHU4NGUxXHU4NGY4XHU4NTEwXHU4NTM4XHU4NTUyXHU0NTNiXHU4NTZmXHU4NTcwXHU4NWUwXHU0NTc3XHU4NjcyXHU4NjkyXHU4NmIyXHU4NmVmXHU5'@; put 'NjQ1XHU4NzhiXHU0NjA2XHU0NjE3XHU4OGFlXHU4OGZmXHU4OTI0XHU4OTQ3XHU4OTkxXHV7Mjc5Njd9XHU4YTI5XHU4YTM4XHU4YTk0XHU4YWI0XHU4YzUxXHU4Y2Q0XHU4Y2YyXHU4ZDFjXHU0Nzk4XHU1ODVmXHU4ZGMzXHU0N2VkXHU0ZWVlXHU4ZTNhXHU1NWQ4XHU1NzU0XHU4ZTcxXHU1'@; put 'NWY1XHU4ZWIwXHU0ODM3XHU4ZWNlXHU4ZWUyXHU4ZWU0XHU4ZWVkXHU4ZWYyXHU4ZmI3XHU4ZmMxXHU4ZmNhXHU4ZmNjXHU5MDMzXHU5OWM0XHU0OGFkXHU5OGUwXHU5MjEzXHU0OTFlXHU5MjI4XHU5MjU4XHU5MjZiXHU5MmIxXHU5MmFlXHU5MmJmIl0sWyI5YTQwIiwiXHU5MmUzXHU5MmVi'@; put 'XHU5MmYzXHU5MmY0XHU5MmZkXHU5MzQzXHU5Mzg0XHU5M2FkXHU0OTQ1XHU0OTUxXHU5ZWJmXHU5NDE3XHU1MzAxXHU5NDFkXHU5NDJkXHU5NDNlXHU0OTZhXHU5NDU0XHU5NDc5XHU5NTJkXHU5NWEyXHU0OWE3XHU5NWY0XHU5NjMzXHU0OWU1XHU2N2EwXHU0YTI0XHU5NzQwXHU0YTM1XHU5'@; put 'N2IyXHU5N2MyXHU1NjU0XHU0YWU0XHU2MGU4XHU5OGI5XHU0YjE5XHU5OGYxXHU1ODQ0XHU5OTBlXHU5OTE5XHU1MWI0XHU5OTFjXHU5OTM3XHU5OTQyXHU5OTVkXHU5OTYyXHU0YjcwXHU5OWM1XHU0YjlkXHU5YTNjXHU5YjBmXHU3YTgzXHU5YjY5XHU5YjgxXHU5YmRkXHU5YmYxXHU5YmY0'@; put 'XHU0YzZkXHU5YzIwXHUzNzZmXHV7MjFiYzJ9XHU5ZDQ5XHU5YzNhIl0sWyI5YWExIiwiXHU5ZWZlXHU1NjUwXHU5ZDkzXHU5ZGJkXHU5ZGMwXHU5ZGZjXHU5NGY2XHU4ZmI2XHU5ZTdiXHU5ZWFjXHU5ZWIxXHU5ZWJkXHU5ZWM2XHU5NGRjXHU5ZWUyXHU5ZWYxXHU5ZWY4XHU3YWM4XHU5ZjQ0'@; put 'XHV7MjAwOTR9XHV7MjAyYjd9XHV7MjAzYTB9XHU2OTFhXHU5NGMzXHU1OWFjXHV7MjA0ZDd9XHU1ODQwXHU5NGMxXHUzN2I5XHV7MjA1ZDV9XHV7MjA2MTV9XHV7MjA2NzZ9XHV7MjE2YmF9XHU1NzU3XHU3MTczXHV7MjBhYzJ9XHV7MjBhY2R9XHV7MjBiYmZ9XHU1NDZhXHV7MmY4M2J9XHV7'@; put 'MjBiY2J9XHU1NDllXHV7MjBiZmJ9XHV7MjBjM2J9XHV7MjBjNTN9XHV7MjBjNjV9XHV7MjBjN2N9XHU2MGU3XHV7MjBjOGR9XHU1NjdhXHV7MjBjYjV9XHV7MjBjZGR9XHV7MjBjZWR9XHV7MjBkNmZ9XHV7MjBkYjJ9XHV7MjBkYzh9XHU2OTU1XHU5YzJmXHU4N2E1XHV7MjBlMDR9XHV7MjBl'@; put 'MGV9XHV7MjBlZDd9XHV7MjBmOTB9XHV7MjBmMmR9XHV7MjBlNzN9XHU1YzIwXHV7MjBmYmN9XHU1ZTBiXHV7MjEwNWN9XHV7MjEwNGZ9XHV7MjEwNzZ9XHU2NzFlXHV7MjEwN2J9XHV7MjEwODh9XHV7MjEwOTZ9XHUzNjQ3XHV7MjEwYmZ9XHV7MjEwZDN9XHV7MjExMmZ9XHV7MjExM2J9XHU1'@; put 'MzY0XHU4NGFkXHV7MjEyZTN9XHV7MjEzNzV9XHV7MjEzMzZ9XHU4YjgxXHV7MjE1Nzd9XHV7MjE2MTl9XHV7MjE3YzN9XHV7MjE3Yzd9XHU0ZTc4XHU3MGJiXHV7MjE4MmR9XHV7MjE5NmF9Il0sWyI5YjQwIiwiXHV7MjFhMmR9XHV7MjFhNDV9XHV7MjFjMmF9XHV7MjFjNzB9XHV7MjFjYWN9'@; put 'XHV7MjFlYzh9XHU2MmMzXHV7MjFlZDV9XHV7MjFmMTV9XHU3MTk4XHU2ODU1XHV7MjIwNDV9XHU2OWU5XHUzNmM4XHV7MjIyN2N9XHV7MjIzZDd9XHV7MjIzZmF9XHV7MjI3MmF9XHV7MjI4NzF9XHV7MjI5NGZ9XHU4MmZkXHV7MjI5Njd9XHV7MjI5OTN9XHV7MjJhZDV9XHU4OWE1XHV7MjJh'@; put 'ZTh9XHU4ZmEwXHV7MjJiMGV9XHU5N2I4XHV7MjJiM2Z9XHU5ODQ3XHU5YWJkXHV7MjJjNGN9Il0sWyI5YjYyIiwiXHV7MjJjODh9XHV7MjJjYjd9XHV7MjViZTh9XHV7MjJkMDh9XHV7MjJkMTJ9XHV7MjJkYjd9XHV7MjJkOTV9XHV7MjJlNDJ9XHV7MjJmNzR9XHV7MjJmY2N9XHV7MjMwMzN9'@; put 'XHV7MjMwNjZ9XHV7MjMzMWZ9XHV7MjMzZGV9XHU1ZmIxXHU2NjQ4XHU2NmJmXHV7MjdhNzl9XHV7MjM1Njd9XHV7MjM1ZjN9XHU3MjAxXHV7MjQ5YmF9XHU3N2Q3XHV7MjM2MWF9XHV7MjM3MTZ9XHU3ZTg3XHV7MjAzNDZ9XHU1OGI1XHU2NzBlIl0sWyI5YmExIiwiXHU2OTE4XHV7MjNhYTd9'@; put 'XHV7Mjc2NTd9XHV7MjVmZTJ9XHV7MjNlMTF9XHV7MjNlYjl9XHV7Mjc1ZmV9XHV7MjIwOWF9XHU0OGQwXHU0YWI4XHV7MjQxMTl9XHV7MjhhOWF9XHV7MjQyZWV9XHV7MjQzMGR9XHV7MjQwM2J9XHV7MjQzMzR9XHV7MjQzOTZ9XHV7MjRhNDV9XHV7MjA1Y2F9XHU1MWQyXHV7MjA2MTF9XHU1'@; put 'OTlmXHV7MjFlYTh9XHUzYmJlXHV7MjNjZmZ9XHV7MjQ0MDR9XHV7MjQ0ZDZ9XHU1Nzg4XHV7MjQ2NzR9XHUzOTliXHV7MjQ3MmZ9XHV7Mjg1ZTh9XHV7Mjk5Yzl9XHUzNzYyXHV7MjIxYzN9XHU4YjVlXHV7MjhiNGV9XHU5OWQ2XHV7MjQ4MTJ9XHV7MjQ4ZmJ9XHV7MjRhMTV9XHU3MjA5XHV7'@; put 'MjRhYzB9XHV7MjBjNzh9XHU1OTY1XHV7MjRlYTV9XHV7MjRmODZ9XHV7MjA3Nzl9XHU4ZWRhXHV7MjUwMmN9XHU1MjhmXHU1NzNmXHU3MTcxXHV7MjUyOTl9XHV7MjU0MTl9XHV7MjNmNGF9XHV7MjRhYTd9XHU1NWJjXHV7MjU0NDZ9XHV7MjU0NmV9XHV7MjZiNTJ9XHU5MWQ0XHUzNDczXHV7'@; put 'MjU1M2Z9XHV7Mjc2MzJ9XHV7MjU1NWV9XHU0NzE4XHV7MjU1NjJ9XHV7MjU1NjZ9XHV7MjU3Yzd9XHV7MjQ5M2Z9XHV7MjU4NWR9XHU1MDY2XHUzNGZiXHV7MjMzY2N9XHU2MGRlXHV7MjU5MDN9XHU0NzdjXHV7Mjg5NDh9XHV7MjVhYWV9XHV7MjViODl9XHV7MjVjMDZ9XHV7MjFkOTB9XHU1'@; put 'N2ExXHU3MTUxXHU2ZmI2XHV7MjYxMDJ9XHV7MjdjMTJ9XHU5MDU2XHV7MjYxYjJ9XHV7MjRmOWF9XHU4YjYyXHV7MjY0MDJ9XHV7MjY0NGF9Il0sWyI5YzQwIiwiXHU1ZDViXHV7MjZiZjd9XHU4ZjM2XHV7MjY0ODR9XHV7MjE5MWN9XHU4YWVhXHV7MjQ5ZjZ9XHV7MjY0ODh9XHV7MjNmZWZ9'@; put 'XHV7MjY1MTJ9XHU0YmMwXHV7MjY1YmZ9XHV7MjY2YjV9XHV7MjI3MWJ9XHU5NDY1XHV7MjU3ZTF9XHU2MTk1XHU1YTI3XHV7MmY4Y2R9XHU0ZmJiXHU1NmI5XHV7MjQ1MjF9XHV7MjY2ZmN9XHU0ZTZhXHV7MjQ5MzR9XHU5NjU2XHU2ZDhmXHV7MjZjYmR9XHUzNjE4XHU4OTc3XHV7MjY3OTl9'@; put 'XHV7MjY4NmV9XHV7MjY0MTF9XHV7MjY4NWV9XHU3MWRmXHV7MjY4Yzd9XHU3YjQyXHV7MjkwYzB9XHV7MjBhMTF9XHV7MjY5MjZ9XHU5MTA0XHV7MjY5Mzl9XHU3YTQ1XHU5ZGYwXHV7MjY5ZmF9XHU5YTI2XHV7MjZhMmR9XHUzNjVmXHV7MjY0Njl9XHV7MjAwMjF9XHU3OTgzXHV7MjZhMzR9'@; put 'XHV7MjZiNWJ9XHU1ZDJjXHV7MjM1MTl9XHU4M2NmXHV7MjZiOWR9XHU0NmQwXHV7MjZjYTR9XHU3NTNiXHU4ODY1XHV7MjZkYWV9XHU1OGI2Il0sWyI5Y2ExIiwiXHUzNzFjXHV7MjI1OGR9XHV7MjcwNGJ9XHV7MjcxY2R9XHUzYzU0XHV7MjcyODB9XHV7MjcyODV9XHU5MjgxXHV7MjIxN2F9'@; put 'XHV7MjcyOGJ9XHU5MzMwXHV7MjcyZTZ9XHV7MjQ5ZDB9XHU2YzM5XHU5NDlmXHV7Mjc0NTB9XHV7MjBlZjh9XHU4ODI3XHU4OGY1XHV7MjI5MjZ9XHV7Mjg0NzN9XHV7MjE3YjF9XHU2ZWI4XHV7MjRhMmF9XHV7MjE4MjB9XHUzOWE0XHUzNmI5XHU1YzEwXHU3OWUzXHU0NTNmXHU2NmI2XHV7'@; put 'MjljYWR9XHV7Mjk4YTR9XHU4OTQzXHV7Mjc3Y2N9XHV7Mjc4NTh9XHU1NmQ2XHU0MGRmXHV7MjE2MGF9XHUzOWExXHV7MjM3MmZ9XHV7MjgwZTh9XHV7MjEzYzV9XHU3MWFkXHU4MzY2XHV7Mjc5ZGR9XHV7MjkxYTh9XHU1YTY3XHU0Y2I3XHV7MjcwYWZ9XHV7Mjg5YWJ9XHV7Mjc5ZmR9XHV7'@; put 'MjdhMGF9XHV7MjdiMGJ9XHV7MjdkNjZ9XHV7MjQxN2F9XHU3YjQzXHU3OTdlXHV7MjgwMDl9XHU2ZmI1XHV7MmEyZGZ9XHU2YTAzXHV7MjgzMTh9XHU1M2EyXHV7MjZlMDd9XHU5M2JmXHU2ODM2XHU5NzVkXHV7MjgxNmZ9XHV7MjgwMjN9XHV7MjY5YjV9XHV7MjEzZWR9XHV7MjMyMmZ9XHV7'@; put 'MjgwNDh9XHU1ZDg1XHV7MjhjMzB9XHV7MjgwODN9XHU1NzE1XHU5ODIzXHV7Mjg5NDl9XHU1ZGFiXHV7MjQ5ODh9XHU2NWJlXHU2OWQ1XHU1M2QyXHV7MjRhYTV9XHV7MjNmODF9XHUzYzExXHU2NzM2XHV7MjgwOTB9XHV7MjgwZjR9XHV7MjgxMmV9XHV7MjFmYTF9XHV7MjgxNGZ9Il0sWyI5'@; put 'ZDQwIiwiXHV7MjgxODl9XHV7MjgxYWZ9XHV7MjgyMWF9XHV7MjgzMDZ9XHV7MjgzMmZ9XHV7MjgzOGF9XHUzNWNhXHV7Mjg0Njh9XHV7Mjg2YWF9XHU0OGZhXHU2M2U2XHV7Mjg5NTZ9XHU3ODA4XHU5MjU1XHV7Mjg5Yjh9XHU0M2YyXHV7Mjg5ZTd9XHU0M2RmXHV7Mjg5ZTh9XHV7MjhiNDZ9'@; put 'XHV7MjhiZDR9XHU1OWY4XHV7MjhjMDl9XHU4ZjBiXHV7MjhmYzV9XHV7MjkwZWN9XHU3YjUxXHV7MjkxMTB9XHV7MjkxM2N9XHUzZGY3XHV7MjkxNWV9XHV7MjRhY2F9XHU4ZmQwXHU3MjhmXHU1NjhiXHV7Mjk0ZTd9XHV7Mjk1ZTl9XHV7Mjk1YjB9XHV7Mjk1Yjh9XHV7Mjk3MzJ9XHV7Mjk4'@; put 'ZDF9XHV7Mjk5NDl9XHV7Mjk5NmF9XHV7Mjk5YzN9XHV7MjlhMjh9XHV7MjliMGV9XHV7MjlkNWF9XHV7MjlkOWJ9XHU3ZTlmXHV7MjllZjh9XHV7MjlmMjN9XHU0Y2E0XHU5NTQ3XHV7MmEyOTN9XHU3MWEyXHV7MmEyZmZ9XHU0ZDkxXHU5MDEyXHV7MmE1Y2J9XHU0ZDljXHV7MjBjOWN9XHU4'@; put 'ZmJlXHU1NWMxIl0sWyI5ZGExIiwiXHU4ZmJhXHV7MjI0YjB9XHU4ZmI5XHV7MjRhOTN9XHU0NTA5XHU3ZTdmXHU2ZjU2XHU2YWIxXHU0ZWVhXHUzNGU0XHV7MjhiMmN9XHV7Mjc4OWR9XHUzNzNhXHU4ZTgwXHV7MjE3ZjV9XHV7MjgwMjR9XHV7MjhiNmN9XHV7MjhiOTl9XHV7MjdhM2V9XHV7'@; put 'MjY2YWZ9XHUzZGViXHV7Mjc2NTV9XHV7MjNjYjd9XHV7MjU2MzV9XHV7MjU5NTZ9XHU0ZTlhXHV7MjVlODF9XHV7MjYyNTh9XHU1NmJmXHV7MjBlNmR9XHU4ZTBlXHU1YjZkXHV7MjNlODh9XHV7MjRjOWV9XHU2M2RlXHU2MmQwXHV7MjE3ZjZ9XHV7MjE4N2J9XHU2NTMwXHU1NjJkXHV7MjVj'@; put 'NGF9XHU1NDFhXHV7MjUzMTF9XHUzZGM2XHV7MjlkOTh9XHU0YzdkXHU1NjIyXHU1NjFlXHU3ZjQ5XHV7MjVlZDh9XHU1OTc1XHV7MjNkNDB9XHU4NzcwXHU0ZTFjXHV7MjBmZWF9XHV7MjBkNDl9XHV7MjM2YmF9XHU4MTE3XHU5ZDVlXHU4ZDE4XHU3NjNiXHU5YzQ1XHU3NjRlXHU3N2I5XHU5'@; put 'MzQ1XHU1NDMyXHU4MTQ4XHU4MmY3XHU1NjI1XHU4MTMyXHU4NDE4XHU4MGJkXHU1NWVhXHU3OTYyXHU1NjQzXHU1NDE2XHV7MjBlOWR9XHUzNWNlXHU1NjA1XHU1NWYxXHU2NmYxXHV7MjgyZTJ9XHUzNjJkXHU3NTM0XHU1NWYwXHU1NWJhXHU1NDk3XHU1NTcyXHV7MjBjNDF9XHV7MjBjOTZ9'@; put 'XHU1ZWQwXHV7MjUxNDh9XHV7MjBlNzZ9XHV7MjJjNjJ9Il0sWyI5ZTQwIiwiXHV7MjBlYTJ9XHU5ZWFiXHU3ZDVhXHU1NWRlXHV7MjEwNzV9XHU2MjlkXHU5NzZkXHU1NDk0XHU4Y2NkXHU3MWY2XHU5MTc2XHU2M2ZjXHU2M2I5XHU2M2ZlXHU1NTY5XHV7MjJiNDN9XHU5YzcyXHV7MjJlYjN9'@; put 'XHU1MTlhXHUzNGRmXHV7MjBkYTd9XHU1MWE3XHU1NDRkXHU1NTFlXHU1NTEzXHU3NjY2XHU4ZTJkXHV7MjY4OGF9XHU3NWIxXHU4MGI2XHU4ODA0XHU4Nzg2XHU4OGM3XHU4MWI2XHU4NDFjXHV7MjEwYzF9XHU0NGVjXHU3MzA0XHV7MjQ3MDZ9XHU1YjkwXHU4MzBiXHV7MjY4OTN9XHU1Njdi'@; put 'XHV7MjI2ZjR9XHV7MjdkMmZ9XHV7MjQxYTN9XHV7MjdkNzN9XHV7MjZlZDB9XHV7MjcyYjZ9XHU5MTcwXHV7MjExZDl9XHU5MjA4XHV7MjNjZmN9XHV7MmE2YTl9XHV7MjBlYWN9XHV7MjBlZjl9XHU3MjY2XHV7MjFjYTJ9XHU0NzRlXHV7MjRmYzJ9XHV7MjdmZjl9XHV7MjBmZWJ9XHU0MGZh'@; put 'Il0sWyI5ZWExIiwiXHU5YzVkXHU2NTFmXHV7MjJkYTB9XHU0OGYzXHV7MjQ3ZTB9XHV7MjlkN2N9XHV7MjBmZWN9XHV7MjBlMGF9XHU2MDYyXHV7Mjc1YTN9XHV7MjBmZWR9Il0sWyI5ZWFkIiwiXHV7MjYwNDh9XHV7MjExODd9XHU3MWEzXHU3ZThlXHU5ZDUwXHU0ZTFhXHU0ZTA0XHUzNTc3'@; put 'XHU1YjBkXHU2Y2IyXHU1MzY3XHUzNmFjXHUzOWRjXHU1MzdkXHUzNmE1XHV7MjQ2MTh9XHU1ODlhXHV7MjRiNmV9XHU4MjJkXHU1NDRiXHU1N2FhXHV7MjVhOTV9XHV7MjA5Nzl9Il0sWyI5ZWM1IiwiXHUzYTUyXHV7MjI0NjV9XHU3Mzc0XHV7MjllYWN9XHU0ZDA5XHU5YmVkXHV7MjNjZmV9'@; put 'XHV7MjlmMzB9XHU0YzViXHV7MjRmYTl9XHV7Mjk1OWV9XHV7MjlmZGV9XHU4NDVjXHV7MjNkYjZ9XHV7MjcyYjJ9XHV7MjY3YjN9XHV7MjM3MjB9XHU2MzJlXHU3ZDI1XHV7MjNlZjd9XHV7MjNlMmN9XHUzYTJhXHU5MDA4XHU1MmNjXHUzZTc0XHUzNjdhXHU0NWU5XHV7MjA0OGV9XHU3NjQw'@; put 'XHU1YWYwXHV7MjBlYjZ9XHU3ODdhXHV7MjdmMmV9XHU1OGE3XHU0MGJmXHU1NjdjXHU5YjhiXHU1ZDc0XHU3NjU0XHV7MmE0MzR9XHU5ZTg1XHU0Y2UxXHU3NWY5XHUzN2ZiXHU2MTE5XHV7MjMwZGF9XHV7MjQzZjJ9Il0sWyI5ZWY1IiwiXHU1NjVkXHV7MjEyYTl9XHU1N2E3XHV7MjQ5NjN9'@; put 'XHV7MjllMDZ9XHU1MjM0XHV7MjcwYWV9XHUzNWFkXHU2YzRhXHU5ZDdjIl0sWyI5ZjQwIiwiXHU3YzU2XHU5YjM5XHU1N2RlXHV7MjE3NmN9XHU1YzUzXHU2NGQzXHV7Mjk0ZDB9XHV7MjYzMzV9XHV7MjcxNjR9XHU4NmFkXHV7MjBkMjh9XHV7MjZkMjJ9XHV7MjRhZTJ9XHV7MjBkNzF9Il0s'@; put 'WyI5ZjRmIiwiXHU1MWZlXHV7MjFmMGZ9XHU1ZDhlXHU5NzAzXHV7MjFkZDF9XHU5ZTgxXHU5MDRjXHU3YjFmXHU5YjAyXHU1Y2QxXHU3YmEzXHU2MjY4XHU2MzM1XHU5YWZmXHU3YmNmXHU5YjJhXHU3YzdlXHU5YjJlXHU3YzQyXHU3Yzg2XHU5YzE1XHU3YmZjXHU5YjA5XHU5ZjE3XHU5YzFi'@; put 'XHV7MjQ5M2V9XHU5ZjVhXHU1NTczXHU1YmMzXHU0ZmZkXHU5ZTk4XHU0ZmYyXHU1MjYwXHUzZTA2XHU1MmQxXHU1NzY3XHU1MDU2XHU1OWI3XHU1ZTEyXHU5N2M4XHU5ZGFiXHU4ZjVjXHU1NDY5XHU5N2I0XHU5OTQwXHU5N2JhXHU1MzJjXHU2MTMwIl0sWyI5ZmExIiwiXHU2OTJjXHU1M2Rh'@; put 'XHU5YzBhXHU5ZDAyXHU0YzNiXHU5NjQxXHU2OTgwXHU1MGE2XHU3NTQ2XHV7MjE3NmR9XHU5OWRhXHU1MjczIl0sWyI5ZmFlIiwiXHU5MTU5XHU5NjgxXHU5MTVjIl0sWyI5ZmIyIiwiXHU5MTUxXHV7MjhlOTd9XHU2MzdmXHV7MjZkMjN9XHU2YWNhXHU1NjExXHU5MThlXHU3NTdhXHU2Mjg1'@; put 'XHV7MjAzZmN9XHU3MzRmXHU3YzcwXHV7MjVjMjF9XHV7MjNjZmR9Il0sWyI5ZmMxIiwiXHV7MjQ5MTl9XHU3NmQ2XHU5YjlkXHU0ZTJhXHV7MjBjZDR9XHU4M2JlXHU4ODQyIl0sWyI5ZmM5IiwiXHU1YzRhXHU2OWMwXHU1MGVkXHU1NzdhXHU1MjFmXHU1ZGY1XHU0ZWNlXHU2YzMxXHV7MjAx'@; put 'ZjJ9XHU0ZjM5XHU1NDljXHU1NGRhXHU1MjlhXHU4ZDgyXHUzNWZlXHU1ZjBjXHUzNWYzIl0sWyI5ZmRiIiwiXHU2YjUyXHU5MTdjXHU5ZmE1XHU5Yjk3XHU5ODJlXHU5OGI0XHU5YWJhXHU5ZWE4XHU5ZTg0XHU3MTdhXHU3YjE0Il0sWyI5ZmU3IiwiXHU2YmZhXHU4ODE4XHU3Zjc4Il0sWyI5'@; put 'ZmViIiwiXHU1NjIwXHV7MmE2NGF9XHU4ZTc3XHU5ZjUzIl0sWyI5ZmYwIiwiXHU4ZGQ0XHU4ZTRmXHU5ZTFjXHU4ZTAxXHU2MjgyXHV7MjgzN2R9XHU4ZTI4XHU4ZTc1XHU3YWQzXHV7MjRhNzd9XHU3YTNlXHU3OGQ4XHU2Y2VhXHU4YTY3XHU3NjA3Il0sWyJhMDQwIiwiXHV7MjhhNWF9XHU5'@; put 'ZjI2XHU2Y2NlXHU4N2Q2XHU3NWMzXHV7MmEyYjJ9XHU3ODUzXHV7MmY4NDB9XHU4ZDBjXHU3MmUyXHU3MzcxXHU4YjJkXHU3MzAyXHU3NGYxXHU4Y2ViXHV7MjRhYmJ9XHU4NjJmXHU1ZmJhXHU4OGEwXHU0NGI3Il0sWyJhMDU1IiwiXHV7MjE4M2J9XHV7MjZlMDV9Il0sWyJhMDU4IiwiXHU4'@; put 'YTdlXHV7MjI1MWJ9Il0sWyJhMDViIiwiXHU2MGZkXHU3NjY3XHU5YWQ3XHU5ZDQ0XHU5MzZlXHU5YjhmXHU4N2Y1Il0sWyJhMDYzIiwiXHU4ODBmXHU4Y2Y3XHU3MzJjXHU5NzIxXHU5YmIwXHUzNWQ2XHU3MmIyXHU0YzA3XHU3YzUxXHU5OTRhXHV7MjYxNTl9XHU2MTU5XHU0YzA0XHU5ZTk2'@; put 'XHU2MTdkIl0sWyJhMDczIiwiXHU1NzVmXHU2MTZmXHU2MmE2XHU2MjM5XHU2MmNlXHUzYTVjXHU2MWUyXHU1M2FhXHV7MjMzZjV9XHU2MzY0XHU2ODAyXHUzNWQyIl0sWyJhMGExIiwiXHU1ZDU3XHV7MjhiYzJ9XHU4ZmRhXHV7MjhlMzl9Il0sWyJhMGE2IiwiXHU1MGQ5XHV7MjFkNDZ9XHU3'@; put 'OTA2XHU1MzMyXHU5NjM4XHV7MjBmM2J9XHU0MDY1Il0sWyJhMGFlIiwiXHU3N2ZlIl0sWyJhMGIwIiwiXHU3Y2MyXHV7MjVmMWF9XHU3Y2RhXHU3YTJkXHU4MDY2XHU4MDYzXHU3ZDRkXHU3NTA1XHU3NGYyXHU4OTk0XHU4MjFhXHU2NzBjXHU4MDYyXHV7Mjc0ODZ9XHU4MDViXHU3NGYwXHU4'@; put 'MTAzXHU3NzI0XHU4OTg5XHV7MjY3Y2N9XHU3NTUzXHV7MjZlZDF9XHU4N2E5XHU4N2NlXHU4MWM4XHU4NzhjXHU4YTQ5XHU4Y2FkXHU4YjQzXHU3NzJiXHU3NGY4XHU4NGRhXHUzNjM1XHU2OWIyXHU4ZGE2Il0sWyJhMGQ0IiwiXHU4OWE5XHU3NDY4XHU2ZGI5XHU4N2MxXHV7MjQwMTF9XHU3'@; put 'NGU3XHUzZGRiXHU3MTc2XHU2MGE0XHU2MTljXHUzY2QxXHU3MTYyXHU2MDc3Il0sWyJhMGUyIiwiXHU3ZjcxXHV7MjhiMmR9XHU3MjUwXHU2MGU5XHU0YjdlXHU1MjIwXHUzYzE4XHV7MjNjYzd9XHV7MjVlZDd9XHV7Mjc2NTZ9XHV7MjU1MzF9XHV7MjE5NDR9XHV7MjEyZmV9XHV7Mjk5MDN9'@; put 'XHV7MjZkZGN9XHV7MjcwYWR9XHU1Y2MxXHV7MjYxYWR9XHV7MjhhMGZ9XHV7MjM2Nzd9XHV7MjAwZWV9XHV7MjY4NDZ9XHV7MjRmMGV9XHU0NTYyXHU1YjFmXHV7MjYzNGN9XHU5ZjUwXHU5ZWE2XHV7MjYyNmJ9Il0sWyJhM2MwIiwiXHUyNDAwIiwzMSwiXHUyNDIxIl0sWyJjNmExIiwiXHUy'@; put 'NDYwIiw5LCJcdTI0NzQiLDksIlx1MjE3MCIsOSwiXHU0ZTM2XHU0ZTNmXHU0ZTg1XHU0ZWEwXHU1MTgyXHU1MTk2XHU1MWFiXHU1MmY5XHU1MzM4XHU1MzY5XHU1M2I2XHU1OTBhXHU1YjgwXHU1ZGRiXHUyZjMzXHU1ZTdmXHU1ZWY0XHU1ZjUwXHU1ZjYxXHU2NTM0XHU2NWUwXHU3NTkyXHU3'@; put 'Njc2XHU4ZmI1XHU5NmI2XHhhOFx1MDJjNlx1MzBmZFx1MzBmZVx1MzA5ZFx1MzA5ZVx1MzAwM1x1NGVkZFx1MzAwNVx1MzAwNlx1MzAwN1x1MzBmY1x1ZmYzYlx1ZmYzZFx1MjczZFx1MzA0MSIsMjNdLFsiYzc0MCIsIlx1MzA1OSIsNTgsIlx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNCJdLFsi'@; put 'YzdhMSIsIlx1MzBhNSIsODEsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2Iiw0XSxbImM4NDAiLCJcdTA0MWIiLDI2LCJcdTA0NTFcdTA0MzYiLDI1LCJcdTIxZTdcdTIxYjhcdTIxYjlcdTMxY2ZcdXsyMDBjY31cdTRlNWFcdXsyMDA4YX1cdTUyMDJcdTQ0OTEiXSxbImM4YTEiLCJcdTlmYjBc'@; put 'dTUxODhcdTlmYjFcdXsyNzYwN30iXSxbImM4Y2QiLCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFcdTMwOWJcdTMwOWNcdTJlODBcdTJlODRcdTJlODZcdTJlODdcdTJlODhcdTJlOGFcdTJlOGNcdTJlOGRcdTJlOTVcdTJlOWNcdTJlOWRcdTJlYTVcdTJlYTdc'@; put 'dTJlYWFcdTJlYWNcdTJlYWVcdTJlYjZcdTJlYmNcdTJlYmVcdTJlYzZcdTJlY2FcdTJlY2NcdTJlY2RcdTJlY2ZcdTJlZDZcdTJlZDdcdTJlZGVcdTJlZTMiXSxbImM4ZjUiLCJcdTAyODNcdTAyNTBcdTAyNWJcdTAyNTRcdTAyNzVcdTAxNTNceGY4XHUwMTRiXHUwMjhhXHUwMjZhIl0sWyJm'@; put 'OWZlIiwiXHVmZmVkIl0sWyJmYTQwIiwiXHV7MjA1NDd9XHU5MmRiXHV7MjA1ZGZ9XHV7MjNmYzV9XHU4NTRjXHU0MmI1XHU3M2VmXHU1MWI1XHUzNjQ5XHV7MjQ5NDJ9XHV7Mjg5ZTR9XHU5MzQ0XHV7MjE5ZGJ9XHU4MmVlXHV7MjNjYzh9XHU3ODNjXHU2NzQ0XHU2MmRmXHV7MjQ5MzN9XHV7'@; put 'Mjg5YWF9XHV7MjAyYTB9XHV7MjZiYjN9XHV7MjEzMDV9XHU0ZmFiXHV7MjI0ZWR9XHU1MDA4XHV7MjZkMjl9XHV7MjdhODR9XHV7MjM2MDB9XHV7MjRhYjF9XHV7MjI1MTN9XHU1MDI5XHV7MjAzN2V9XHU1ZmE0XHV7MjAzODB9XHV7MjAzNDd9XHU2ZWRiXHV7MjA0MWZ9XHU1MDdkXHU1MTAx'@; put 'XHUzNDdhXHU1MTBlXHU5ODZjXHUzNzQzXHU4NDE2XHV7MjQ5YTR9XHV7MjA0ODd9XHU1MTYwXHV7MjMzYjR9XHU1MTZhXHV7MjBiZmZ9XHV7MjIwZmN9XHV7MjAyZTV9XHV7MjI1MzB9XHV7MjA1OGV9XHV7MjMyMzN9XHV7MjE5ODN9XHU1YjgyXHU4NzdkXHV7MjA1YjN9XHV7MjNjOTl9XHU1'@; put 'MWIyXHU1MWI4Il0sWyJmYWExIiwiXHU5ZDM0XHU1MWM5XHU1MWNmXHU1MWQxXHUzY2RjXHU1MWQzXHV7MjRhYTZ9XHU1MWIzXHU1MWUyXHU1MzQyXHU1MWVkXHU4M2NkXHU2OTNlXHV7MjM3MmR9XHU1ZjdiXHU1MjBiXHU1MjI2XHU1MjNjXHU1MmI1XHU1MjU3XHU1Mjk0XHU1MmI5XHU1MmM1'@; put 'XHU3YzE1XHU4NTQyXHU1MmUwXHU4NjBkXHV7MjZiMTN9XHU1MzA1XHV7MjhhZGV9XHU1NTQ5XHU2ZWQ5XHV7MjNmODB9XHV7MjA5NTR9XHV7MjNmZWN9XHU1MzMzXHU1MzQ0XHV7MjBiZTJ9XHU2Y2NiXHV7MjE3MjZ9XHU2ODFiXHU3M2Q1XHU2MDRhXHUzZWFhXHUzOGNjXHV7MjE2ZTh9XHU3'@; put 'MWRkXHU0NGEyXHU1MzZkXHU1Mzc0XHV7Mjg2YWJ9XHU1MzdlXHU1MzdmXHV7MjE1OTZ9XHV7MjE2MTN9XHU3N2U2XHU1MzkzXHV7MjhhOWJ9XHU1M2EwXHU1M2FiXHU1M2FlXHU3M2E3XHV7MjU3NzJ9XHUzZjU5XHU3MzljXHU1M2MxXHU1M2M1XHU2YzQ5XHU0ZTQ5XHU1N2ZlXHU1M2Q5XHUz'@; put 'YWFiXHV7MjBiOGZ9XHU1M2UwXHV7MjNmZWJ9XHV7MjJkYTN9XHU1M2Y2XHV7MjBjNzd9XHU1NDEzXHU3MDc5XHU1NTJiXHU2NjU3XHU2ZDViXHU1NDZkXHV7MjZiNTN9XHV7MjBkNzR9XHU1NTVkXHU1NDhmXHU1NGE0XHU0N2E2XHV7MjE3MGR9XHV7MjBlZGR9XHUzZGI0XHV7MjBkNGR9Il0s'@; put 'WyJmYjQwIiwiXHV7Mjg5YmN9XHV7MjI2OTh9XHU1NTQ3XHU0Y2VkXHU1NDJmXHU3NDE3XHU1NTg2XHU1NWE5XHU1NjA1XHV7MjE4ZDd9XHV7MjQwM2F9XHU0NTUyXHV7MjQ0MzV9XHU2NmIzXHV7MjEwYjR9XHU1NjM3XHU2NmNkXHV7MjMyOGF9XHU2NmE0XHU2NmFkXHU1NjRkXHU1NjRmXHU3'@; put 'OGYxXHU1NmYxXHU5Nzg3XHU1M2ZlXHU1NzAwXHU1NmVmXHU1NmVkXHV7MjhiNjZ9XHUzNjIzXHV7MjEyNGZ9XHU1NzQ2XHV7MjQxYTV9XHU2YzZlXHU3MDhiXHU1NzQyXHUzNmIxXHV7MjZjN2V9XHU1N2U2XHV7MjE0MTZ9XHU1ODAzXHV7MjE0NTR9XHV7MjQzNjN9XHU1ODI2XHV7MjRiZjV9'@; put 'XHU1ODVjXHU1OGFhXHUzNTYxXHU1OGUwXHU1OGRjXHV7MjEyM2N9XHU1OGZiXHU1YmZmXHU1NzQzXHV7MmExNTB9XHV7MjQyNzh9XHU5M2QzXHUzNWExXHU1OTFmXHU2OGE2XHUzNmMzXHU2ZTU5Il0sWyJmYmExIiwiXHV7MjE2M2V9XHU1YTI0XHU1NTUzXHV7MjE2OTJ9XHU4NTA1XHU1OWM5'@; put 'XHV7MjBkNGV9XHV7MjZjODF9XHV7MjZkMmF9XHV7MjE3ZGN9XHU1OWQ5XHV7MjE3ZmJ9XHV7MjE3YjJ9XHV7MjZkYTZ9XHU2ZDcxXHV7MjE4Mjh9XHV7MjE2ZDV9XHU1OWY5XHV7MjZlNDV9XHU1YWFiXHU1YTYzXHUzNmU2XHV7MjQ5YTl9XHU1YTc3XHUzNzA4XHU1YTk2XHU3NDY1XHU1YWQz'@; put 'XHV7MjZmYTF9XHV7MjI1NTR9XHUzZDg1XHV7MjE5MTF9XHUzNzMyXHV7MjE2Yjh9XHU1ZTgzXHU1MmQwXHU1Yjc2XHU2NTg4XHU1YjdjXHV7MjdhMGV9XHU0MDA0XHU0ODVkXHV7MjAyMDR9XHU1YmQ1XHU2MTYwXHV7MjFhMzR9XHV7MjU5Y2N9XHV7MjA1YTV9XHU1YmYzXHU1YjlkXHU0ZDEw'@; put 'XHU1YzA1XHV7MjFiNDR9XHU1YzEzXHU3M2NlXHU1YzE0XHV7MjFjYTV9XHV7MjZiMjh9XHU1YzQ5XHU0OGRkXHU1Yzg1XHU1Y2U5XHU1Y2VmXHU1ZDhiXHV7MjFkZjl9XHV7MjFlMzd9XHU1ZDEwXHU1ZDE4XHU1ZDQ2XHV7MjFlYTR9XHU1Y2JhXHU1ZGQ3XHU4MmZjXHUzODJkXHV7MjQ5MDF9'@; put 'XHV7MjIwNDl9XHV7MjIxNzN9XHU4Mjg3XHUzODM2XHUzYmMyXHU1ZTJlXHU2YThhXHU1ZTc1XHU1ZTdhXHV7MjQ0YmN9XHV7MjBjZDN9XHU1M2E2XHU0ZWI3XHU1ZWQwXHU1M2E4XHV7MjE3NzF9XHU1ZTA5XHU1ZWY0XHV7Mjg0ODJ9Il0sWyJmYzQwIiwiXHU1ZWY5XHU1ZWZiXHUzOGEwXHU1'@; put 'ZWZjXHU2ODNlXHU5NDFiXHU1ZjBkXHV7MjAxYzF9XHV7MmY4OTR9XHUzYWRlXHU0OGFlXHV7MjEzM2F9XHU1ZjNhXHV7MjY4ODh9XHV7MjIzZDB9XHU1ZjU4XHV7MjI0NzF9XHU1ZjYzXHU5N2JkXHV7MjZlNmV9XHU1ZjcyXHU5MzQwXHV7MjhhMzZ9XHU1ZmE3XHU1ZGI2XHUzZDVmXHV7MjUy'@; put 'NTB9XHV7MjFmNmF9XHV7MjcwZjh9XHV7MjI2Njh9XHU5MWQ2XHV7MjAyOWV9XHV7MjhhMjl9XHU2MDMxXHU2Njg1XHV7MjE4Nzd9XHUzOTYzXHUzZGM3XHUzNjM5XHU1NzkwXHV7MjI3YjR9XHU3OTcxXHUzZTQwXHU2MDllXHU2MGE0XHU2MGIzXHV7MjQ5ODJ9XHV7MjQ5OGZ9XHV7MjdhNTN9'@; put 'XHU3NGE0XHU1MGUxXHU1YWEwXHU2MTY0XHU4NDI0XHU2MTQyXHV7MmY4YTZ9XHV7MjZlZDJ9XHU2MTgxXHU1MWY0XHV7MjA2NTZ9XHU2MTg3XHU1YmFhXHV7MjNmYjd9Il0sWyJmY2ExIiwiXHV7MjI4NWZ9XHU2MWQzXHV7MjhiOWR9XHV7Mjk5NWR9XHU2MWQwXHUzOTMyXHV7MjI5ODB9XHV7'@; put 'MjI4YzF9XHU2MDIzXHU2MTVjXHU2NTFlXHU2MzhiXHV7MjAxMTh9XHU2MmM1XHV7MjE3NzB9XHU2MmQ1XHV7MjJlMGR9XHU2MzZjXHV7MjQ5ZGZ9XHUzYTE3XHU2NDM4XHU2M2Y4XHV7MjEzOGV9XHV7MjE3ZmN9XHU2NDkwXHU2ZjhhXHV7MjJlMzZ9XHU5ODE0XHV7MjQwOGN9XHV7MjU3MWR9'@; put 'XHU2NGUxXHU2NGU1XHU5NDdiXHUzYTY2XHU2NDNhXHUzYTU3XHU2NTRkXHU2ZjE2XHV7MjRhMjh9XHV7MjRhMjN9XHU2NTg1XHU2NTZkXHU2NTVmXHV7MjMwN2V9XHU2NWI1XHV7MjQ5NDB9XHU0YjM3XHU2NWQxXHU0MGQ4XHV7MjE4Mjl9XHU2NWUwXHU2NWUzXHU1ZmRmXHV7MjM0MDB9XHU2'@; put 'NjE4XHV7MjMxZjd9XHV7MjMxZjh9XHU2NjQ0XHV7MjMxYTR9XHV7MjMxYTV9XHU2NjRiXHV7MjBlNzV9XHU2NjY3XHV7MjUxZTZ9XHU2NjczXHU2Njc0XHV7MjFlM2R9XHV7MjMyMzF9XHV7Mjg1ZjR9XHV7MjMxYzh9XHV7MjUzMTN9XHU3N2M1XHV7MjI4Zjd9XHU5OWE0XHU2NzAyXHV7MjQz'@; put 'OWN9XHV7MjRhMjF9XHUzYjJiXHU2OWZhXHV7MjM3YzJ9XHU2NzVlXHU2NzY3XHU2NzYyXHV7MjQxY2R9XHV7MjkwZWR9XHU2N2Q3XHU0NGU5XHU2ODIyXHU2ZTUwXHU5MjNjXHU2ODAxXHV7MjMzZTZ9XHV7MjZkYTB9XHU2ODVkIl0sWyJmZDQwIiwiXHV7MjM0NmZ9XHU2OWUxXHU2YTBiXHV7'@; put 'MjhhZGZ9XHU2OTczXHU2OGMzXHV7MjM1Y2R9XHU2OTAxXHU2OTAwXHUzZDMyXHUzYTAxXHV7MjM2M2N9XHUzYjgwXHU2N2FjXHU2OTYxXHV7MjhhNGF9XHU0MmZjXHU2OTM2XHU2OTk4XHUzYmExXHV7MjAzYzl9XHU4MzYzXHU1MDkwXHU2OWY5XHV7MjM2NTl9XHV7MjIxMmF9XHU2YTQ1XHV7'@; put 'MjM3MDN9XHU2YTlkXHUzYmYzXHU2N2IxXHU2YWM4XHV7MjkxOWN9XHUzYzBkXHU2YjFkXHV7MjA5MjN9XHU2MGRlXHU2YjM1XHU2Yjc0XHV7MjI3Y2R9XHU2ZWI1XHV7MjNhZGJ9XHV7MjAzYjV9XHV7MjE5NTh9XHUzNzQwXHU1NDIxXHV7MjNiNWF9XHU2YmUxXHV7MjNlZmN9XHU2YmRjXHU2'@; put 'YzM3XHV7MjI0OGJ9XHV7MjQ4ZjF9XHV7MjZiNTF9XHU2YzVhXHU4MjI2XHU2Yzc5XHV7MjNkYmN9XHU0NGM1XHV7MjNkYmR9XHV7MjQxYTR9XHV7MjQ5MGN9XHV7MjQ5MDB9Il0sWyJmZGExIiwiXHV7MjNjYzl9XHUzNmU1XHUzY2ViXHV7MjBkMzJ9XHU5YjgzXHV7MjMxZjl9XHV7MjI0OTF9'@; put 'XHU3ZjhmXHU2ODM3XHV7MjZkMjV9XHV7MjZkYTF9XHV7MjZkZWJ9XHU2ZDk2XHU2ZDVjXHU2ZTdjXHU2ZjA0XHV7MjQ5N2Z9XHV7MjQwODV9XHV7MjZlNzJ9XHU4NTMzXHV7MjZmNzR9XHU1MWM3XHU2YzljXHU2ZTFkXHU4NDJlXHV7MjhiMjF9XHU2ZTJmXHV7MjNlMmZ9XHU3NDUzXHV7MjNm'@; put 'ODJ9XHU3OWNjXHU2ZTRmXHU1YTkxXHV7MjMwNGJ9XHU2ZmY4XHUzNzBkXHU2ZjlkXHV7MjNlMzB9XHU2ZWZhXHV7MjE0OTd9XHV7MjQwM2R9XHU0NTU1XHU5M2YwXHU2ZjQ0XHU2ZjVjXHUzZDRlXHU2Zjc0XHV7MjkxNzB9XHUzZDNiXHU2ZjlmXHV7MjQxNDR9XHU2ZmQzXHV7MjQwOTF9XHV7'@; put 'MjQxNTV9XHV7MjQwMzl9XHV7MjNmZjB9XHV7MjNmYjR9XHV7MjQxM2Z9XHU1MWRmXHV7MjQxNTZ9XHV7MjQxNTd9XHV7MjQxNDB9XHV7MjYxZGR9XHU3MDRiXHU3MDdlXHU3MGE3XHU3MDgxXHU3MGNjXHU3MGQ1XHU3MGQ2XHU3MGRmXHU0MTA0XHUzZGU4XHU3MWI0XHU3MTk2XHV7MjQyNzd9'@; put 'XHU3MTJiXHU3MTQ1XHU1YTg4XHU3MTRhXHU3MTZlXHU1YzljXHV7MjQzNjV9XHU3MTRmXHU5MzYyXHV7MjQyYzF9XHU3MTJjXHV7MjQ0NWF9XHV7MjRhMjd9XHV7MjRhMjJ9XHU3MWJhXHV7MjhiZTh9XHU3MGJkXHU3MjBlIl0sWyJmZTQwIiwiXHU5NDQyXHU3MjE1XHU1OTExXHU5NDQzXHU3'@; put 'MjI0XHU5MzQxXHV7MjU2MDV9XHU3MjJlXHU3MjQwXHV7MjQ5NzR9XHU2OGJkXHU3MjU1XHU3MjU3XHUzZTU1XHV7MjMwNDR9XHU2ODBkXHU2ZjNkXHU3MjgyXHU3MzJhXHU3MzJiXHV7MjQ4MjN9XHV7Mjg4MmJ9XHU0OGVkXHV7Mjg4MDR9XHU3MzI4XHU3MzJlXHU3M2NmXHU3M2FhXHV7MjBj'@; put 'M2F9XHV7MjZhMmV9XHU3M2M5XHU3NDQ5XHV7MjQxZTJ9XHV7MjE2ZTd9XHV7MjRhMjR9XHU2NjIzXHUzNmM1XHV7MjQ5Yjd9XHV7MjQ5OGR9XHV7MjQ5ZmJ9XHU3M2Y3XHU3NDE1XHU2OTAzXHV7MjRhMjZ9XHU3NDM5XHV7MjA1YzN9XHUzZWQ3XHU3NDVjXHV7MjI4YWR9XHU3NDYwXHV7Mjhl'@; put 'YjJ9XHU3NDQ3XHU3M2U0XHU3NDc2XHU4M2I5XHU3NDZjXHUzNzMwXHU3NDc0XHU5M2YxXHU2YTJjXHU3NDgyXHU0OTUzXHV7MjRhOGN9Il0sWyJmZWExIiwiXHV7MjQxNWZ9XHV7MjRhNzl9XHV7MjhiOGZ9XHU1YjQ2XHV7MjhjMDN9XHV7MjE4OWV9XHU3NGM4XHV7MjE5ODh9XHU3NTBlXHU3'@; put 'NGU5XHU3NTFlXHV7MjhlZDl9XHV7MjFhNGJ9XHU1YmQ3XHV7MjhlYWN9XHU5Mzg1XHU3NTRkXHU3NTRhXHU3NTY3XHU3NTZlXHV7MjRmODJ9XHUzZjA0XHV7MjRkMTN9XHU3NThlXHU3NDVkXHU3NTllXHU3NWI0XHU3NjAyXHU3NjJjXHU3NjUxXHU3NjRmXHU3NjZmXHU3Njc2XHV7MjYzZjV9'@; put 'XHU3NjkwXHU4MWVmXHUzN2Y4XHV7MjY5MTF9XHV7MjY5MGV9XHU3NmExXHU3NmE1XHU3NmI3XHU3NmNjXHV7MjZmOWZ9XHU4NDYyXHV7MjUwOWR9XHV7MjUxN2R9XHV7MjFlMWN9XHU3NzFlXHU3NzI2XHU3NzQwXHU2NGFmXHV7MjUyMjB9XHU3NzU4XHV7MjMyYWN9XHU3N2FmXHV7Mjg5NjR9'@; put 'XHV7Mjg5Njh9XHV7MjE2YzF9XHU3N2Y0XHU3ODA5XHV7MjEzNzZ9XHV7MjRhMTJ9XHU2OGNhXHU3OGFmXHU3OGM3XHU3OGQzXHU5NmE1XHU3OTJlXHV7MjU1ZTB9XHU3OGQ3XHU3OTM0XHU3OGIxXHV7Mjc2MGN9XHU4ZmI4XHU4ODg0XHV7MjhiMmJ9XHV7MjYwODN9XHV7MjI2MWN9XHU3OTg2'@; put 'XHU4OTAwXHU2OTAyXHU3OTgwXHV7MjU4NTd9XHU3OTlkXHV7MjdiMzl9XHU3OTNjXHU3OWE5XHU2ZTJhXHV7MjcxMjZ9XHUzZWE4XHU3OWM2XHV7MjkxMGR9XHU3OWQ0Il1dJyl9LDc0NDg4KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIs'@; put 'MTI3LCJcdTIwYWMiXSxbIjgxNDAiLCJcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMDZcdTRlMGZcdTRlMTJcdTRlMTdcdTRlMWZcdTRlMjBcdTRlMjFcdTRlMjNcdTRlMjZcdTRlMjlcdTRlMmVcdTRlMmZcdTRlMzFcdTRlMzNcdTRlMzVcdTRlMzdcdTRlM2NcdTRlNDBcdTRlNDFcdTRlNDJcdTRl'@; put 'NDRcdTRlNDZcdTRlNGFcdTRlNTFcdTRlNTVcdTRlNTdcdTRlNWFcdTRlNWJcdTRlNjJcdTRlNjNcdTRlNjRcdTRlNjVcdTRlNjdcdTRlNjhcdTRlNmEiLDUsIlx1NGU3Mlx1NGU3NCIsOSwiXHU0ZTdmIiw2LCJcdTRlODdcdTRlOGEiXSxbIjgxODAiLCJcdTRlOTBcdTRlOTZcdTRlOTdcdTRl'@; put 'OTlcdTRlOWNcdTRlOWRcdTRlOWVcdTRlYTNcdTRlYWFcdTRlYWZcdTRlYjBcdTRlYjFcdTRlYjRcdTRlYjZcdTRlYjdcdTRlYjhcdTRlYjlcdTRlYmNcdTRlYmRcdTRlYmVcdTRlYzhcdTRlY2NcdTRlY2ZcdTRlZDBcdTRlZDJcdTRlZGFcdTRlZGJcdTRlZGNcdTRlZTBcdTRlZTJcdTRlZTZc'@; put 'dTRlZTdcdTRlZTlcdTRlZWRcdTRlZWVcdTRlZWZcdTRlZjFcdTRlZjRcdTRlZjhcdTRlZjlcdTRlZmFcdTRlZmNcdTRlZmVcdTRmMDBcdTRmMDIiLDYsIlx1NGYwYlx1NGYwY1x1NGYxMiIsNCwiXHU0ZjFjXHU0ZjFkXHU0ZjIxXHU0ZjIzXHU0ZjI4XHU0ZjI5XHU0ZjJjXHU0ZjJkXHU0ZjJl'@; put 'XHU0ZjMxXHU0ZjMzXHU0ZjM1XHU0ZjM3XHU0ZjM5XHU0ZjNiXHU0ZjNlIiw0LCJcdTRmNDRcdTRmNDVcdTRmNDciLDUsIlx1NGY1Mlx1NGY1NFx1NGY1Nlx1NGY2MVx1NGY2Mlx1NGY2Nlx1NGY2OFx1NGY2YVx1NGY2Ylx1NGY2ZFx1NGY2ZVx1NGY3MVx1NGY3Mlx1NGY3NVx1NGY3N1x1NGY3'@; put 'OFx1NGY3OVx1NGY3YVx1NGY3ZFx1NGY4MFx1NGY4MVx1NGY4Mlx1NGY4NVx1NGY4Nlx1NGY4N1x1NGY4YVx1NGY4Y1x1NGY4ZVx1NGY5MFx1NGY5Mlx1NGY5M1x1NGY5NVx1NGY5Nlx1NGY5OFx1NGY5OVx1NGY5YVx1NGY5Y1x1NGY5ZVx1NGY5Zlx1NGZhMVx1NGZhMiJdLFsiODI0MCIsIlx1'@; put 'NGZhNFx1NGZhYlx1NGZhZFx1NGZiMCIsNCwiXHU0ZmI2Iiw4LCJcdTRmYzBcdTRmYzFcdTRmYzJcdTRmYzZcdTRmYzdcdTRmYzhcdTRmYzlcdTRmY2JcdTRmY2NcdTRmY2RcdTRmZDIiLDQsIlx1NGZkOVx1NGZkYlx1NGZlMFx1NGZlMlx1NGZlNFx1NGZlNVx1NGZlN1x1NGZlYlx1NGZlY1x1'@; put 'NGZmMFx1NGZmMlx1NGZmNFx1NGZmNVx1NGZmNlx1NGZmN1x1NGZmOVx1NGZmYlx1NGZmY1x1NGZmZFx1NGZmZiIsMTFdLFsiODI4MCIsIlx1NTAwYlx1NTAwZVx1NTAxMFx1NTAxMVx1NTAxM1x1NTAxNVx1NTAxNlx1NTAxN1x1NTAxYlx1NTAxZFx1NTAxZVx1NTAyMFx1NTAyMlx1NTAyM1x1'@; put 'NTAyNFx1NTAyN1x1NTAyYlx1NTAyZiIsMTAsIlx1NTAzYlx1NTAzZFx1NTAzZlx1NTA0MFx1NTA0MVx1NTA0Mlx1NTA0NFx1NTA0NVx1NTA0Nlx1NTA0OVx1NTA0YVx1NTA0Ylx1NTA0ZFx1NTA1MCIsNCwiXHU1MDU2XHU1MDU3XHU1MDU4XHU1MDU5XHU1MDViXHU1MDVkIiw3LCJcdTUwNjYi'@; put 'LDUsIlx1NTA2ZCIsOCwiXHU1MDc4XHU1MDc5XHU1MDdhXHU1MDdjXHU1MDdkXHU1MDgxXHU1MDgyXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDg3XHU1MDg5XHU1MDhhXHU1MDhiXHU1MDhjXHU1MDhlIiwyMCwiXHU1MGE0XHU1MGE2XHU1MGFhXHU1MGFiXHU1MGFkIiw0LCJcdTUwYjMiLDYsIlx1'@; put 'NTBiYyJdLFsiODM0MCIsIlx1NTBiZCIsMTcsIlx1NTBkMCIsNSwiXHU1MGQ3XHU1MGQ4XHU1MGQ5XHU1MGRiIiwxMCwiXHU1MGU4XHU1MGU5XHU1MGVhXHU1MGViXHU1MGVmXHU1MGYwXHU1MGYxXHU1MGYyXHU1MGY0XHU1MGY2Iiw0LCJcdTUwZmMiLDksIlx1NTEwOCJdLFsiODM4MCIsIlx1'@; put 'NTEwOVx1NTEwYVx1NTEwYyIsNSwiXHU1MTEzIiwxMywiXHU1MTIyIiwyOCwiXHU1MTQyXHU1MTQ3XHU1MTRhXHU1MTRjXHU1MTRlXHU1MTRmXHU1MTUwXHU1MTUyXHU1MTUzXHU1MTU3XHU1MTU4XHU1MTU5XHU1MTViXHU1MTVkIiw0LCJcdTUxNjNcdTUxNjRcdTUxNjZcdTUxNjdcdTUxNjlc'@; put 'dTUxNmFcdTUxNmZcdTUxNzJcdTUxN2FcdTUxN2VcdTUxN2ZcdTUxODNcdTUxODRcdTUxODZcdTUxODdcdTUxOGFcdTUxOGJcdTUxOGVcdTUxOGZcdTUxOTBcdTUxOTFcdTUxOTNcdTUxOTRcdTUxOThcdTUxOWFcdTUxOWRcdTUxOWVcdTUxOWZcdTUxYTFcdTUxYTNcdTUxYTYiLDQsIlx1NTFh'@; put 'ZFx1NTFhZVx1NTFiNFx1NTFiOFx1NTFiOVx1NTFiYVx1NTFiZVx1NTFiZlx1NTFjMVx1NTFjMlx1NTFjM1x1NTFjNVx1NTFjOFx1NTFjYVx1NTFjZFx1NTFjZVx1NTFkMFx1NTFkMiIsNV0sWyI4NDQwIiwiXHU1MWQ4XHU1MWQ5XHU1MWRhXHU1MWRjXHU1MWRlXHU1MWRmXHU1MWUyXHU1MWUz'@; put 'XHU1MWU1Iiw1LCJcdTUxZWNcdTUxZWVcdTUxZjFcdTUxZjJcdTUxZjRcdTUxZjdcdTUxZmVcdTUyMDRcdTUyMDVcdTUyMDlcdTUyMGJcdTUyMGNcdTUyMGZcdTUyMTBcdTUyMTNcdTUyMTRcdTUyMTVcdTUyMWNcdTUyMWVcdTUyMWZcdTUyMjFcdTUyMjJcdTUyMjNcdTUyMjVcdTUyMjZcdTUy'@; put 'MjdcdTUyMmFcdTUyMmNcdTUyMmZcdTUyMzFcdTUyMzJcdTUyMzRcdTUyMzVcdTUyM2NcdTUyM2VcdTUyNDQiLDUsIlx1NTI0Ylx1NTI0ZVx1NTI0Zlx1NTI1Mlx1NTI1M1x1NTI1NVx1NTI1N1x1NTI1OCJdLFsiODQ4MCIsIlx1NTI1OVx1NTI1YVx1NTI1Ylx1NTI1ZFx1NTI1Zlx1NTI2MFx1'@; put 'NTI2Mlx1NTI2M1x1NTI2NFx1NTI2Nlx1NTI2OFx1NTI2Ylx1NTI2Y1x1NTI2ZFx1NTI2ZVx1NTI3MFx1NTI3MVx1NTI3MyIsOSwiXHU1MjdlXHU1MjgwXHU1MjgzIiw0LCJcdTUyODkiLDYsIlx1NTI5MVx1NTI5Mlx1NTI5NCIsNiwiXHU1MjljXHU1MmE0XHU1MmE1XHU1MmE2XHU1MmE3XHU1'@; put 'MmFlXHU1MmFmXHU1MmIwXHU1MmI0Iiw5LCJcdTUyYzBcdTUyYzFcdTUyYzJcdTUyYzRcdTUyYzVcdTUyYzZcdTUyYzhcdTUyY2FcdTUyY2NcdTUyY2RcdTUyY2VcdTUyY2ZcdTUyZDFcdTUyZDNcdTUyZDRcdTUyZDVcdTUyZDdcdTUyZDkiLDUsIlx1NTJlMFx1NTJlMVx1NTJlMlx1NTJlM1x1'@; put 'NTJlNSIsMTAsIlx1NTJmMSIsNywiXHU1MmZiXHU1MmZjXHU1MmZkXHU1MzAxXHU1MzAyXHU1MzAzXHU1MzA0XHU1MzA3XHU1MzA5XHU1MzBhXHU1MzBiXHU1MzBjXHU1MzBlIl0sWyI4NTQwIiwiXHU1MzExXHU1MzEyXHU1MzEzXHU1MzE0XHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFm'@; put 'XHU1MzIyXHU1MzI0XHU1MzI1XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzJmIiw5LCJcdTUzM2NcdTUzM2RcdTUzNDBcdTUzNDJcdTUzNDRcdTUzNDZcdTUzNGJcdTUzNGNcdTUzNGRcdTUzNTBcdTUzNTRcdTUzNThcdTUzNTlcdTUzNWJcdTUzNWRcdTUzNjVcdTUz'@; put 'NjhcdTUzNmFcdTUzNmNcdTUzNmRcdTUzNzJcdTUzNzZcdTUzNzlcdTUzN2JcdTUzN2NcdTUzN2RcdTUzN2VcdTUzODBcdTUzODFcdTUzODNcdTUzODdcdTUzODhcdTUzOGFcdTUzOGVcdTUzOGYiXSxbIjg1ODAiLCJcdTUzOTAiLDQsIlx1NTM5Nlx1NTM5N1x1NTM5OVx1NTM5Ylx1NTM5Y1x1'@; put 'NTM5ZVx1NTNhMFx1NTNhMVx1NTNhNFx1NTNhN1x1NTNhYVx1NTNhYlx1NTNhY1x1NTNhZFx1NTNhZiIsNiwiXHU1M2I3XHU1M2I4XHU1M2I5XHU1M2JhXHU1M2JjXHU1M2JkXHU1M2JlXHU1M2MwXHU1M2MzIiw0LCJcdTUzY2VcdTUzY2ZcdTUzZDBcdTUzZDJcdTUzZDNcdTUzZDVcdTUzZGFc'@; put 'dTUzZGNcdTUzZGRcdTUzZGVcdTUzZTFcdTUzZTJcdTUzZTdcdTUzZjRcdTUzZmFcdTUzZmVcdTUzZmZcdTU0MDBcdTU0MDJcdTU0MDVcdTU0MDdcdTU0MGJcdTU0MTRcdTU0MThcdTU0MTlcdTU0MWFcdTU0MWNcdTU0MjJcdTU0MjRcdTU0MjVcdTU0MmFcdTU0MzBcdTU0MzNcdTU0MzZcdTU0'@; put 'MzdcdTU0M2FcdTU0M2RcdTU0M2ZcdTU0NDFcdTU0NDJcdTU0NDRcdTU0NDVcdTU0NDdcdTU0NDlcdTU0NGNcdTU0NGRcdTU0NGVcdTU0NGZcdTU0NTFcdTU0NWFcdTU0NWQiLDQsIlx1NTQ2M1x1NTQ2NVx1NTQ2N1x1NTQ2OSIsNywiXHU1NDc0XHU1NDc5XHU1NDdhXHU1NDdlXHU1NDdmXHU1'@; put 'NDgxXHU1NDgzXHU1NDg1XHU1NDg3XHU1NDg4XHU1NDg5XHU1NDhhXHU1NDhkXHU1NDkxXHU1NDkzXHU1NDk3XHU1NDk4XHU1NDljXHU1NDllXHU1NDlmXHU1NGEwXHU1NGExIl0sWyI4NjQwIiwiXHU1NGEyXHU1NGE1XHU1NGFlXHU1NGIwXHU1NGIyXHU1NGI1XHU1NGI2XHU1NGI3XHU1NGI5'@; put 'XHU1NGJhXHU1NGJjXHU1NGJlXHU1NGMzXHU1NGM1XHU1NGNhXHU1NGNiXHU1NGQ2XHU1NGQ4XHU1NGRiXHU1NGUwIiw0LCJcdTU0ZWJcdTU0ZWNcdTU0ZWZcdTU0ZjBcdTU0ZjFcdTU0ZjQiLDUsIlx1NTRmYlx1NTRmZVx1NTUwMFx1NTUwMlx1NTUwM1x1NTUwNFx1NTUwNVx1NTUwOFx1NTUw'@; put 'YSIsNCwiXHU1NTEyXHU1NTEzXHU1NTE1Iiw1LCJcdTU1MWNcdTU1MWRcdTU1MWVcdTU1MWZcdTU1MjFcdTU1MjVcdTU1MjYiXSxbIjg2ODAiLCJcdTU1MjhcdTU1MjlcdTU1MmJcdTU1MmRcdTU1MzJcdTU1MzRcdTU1MzVcdTU1MzZcdTU1MzhcdTU1MzlcdTU1M2FcdTU1M2JcdTU1M2RcdTU1'@; put 'NDBcdTU1NDJcdTU1NDVcdTU1NDdcdTU1NDhcdTU1NGIiLDQsIlx1NTU1MVx1NTU1Mlx1NTU1M1x1NTU1NFx1NTU1NyIsNCwiXHU1NTVkXHU1NTVlXHU1NTVmXHU1NTYwXHU1NTYyXHU1NTYzXHU1NTY4XHU1NTY5XHU1NTZiXHU1NTZmIiw1LCJcdTU1NzlcdTU1N2FcdTU1N2RcdTU1N2ZcdTU1'@; put 'ODVcdTU1ODZcdTU1OGNcdTU1OGRcdTU1OGVcdTU1OTBcdTU1OTJcdTU1OTNcdTU1OTVcdTU1OTZcdTU1OTdcdTU1OWFcdTU1OWJcdTU1OWVcdTU1YTAiLDYsIlx1NTVhOCIsOCwiXHU1NWIyXHU1NWI0XHU1NWI2XHU1NWI4XHU1NWJhXHU1NWJjXHU1NWJmIiw0LCJcdTU1YzZcdTU1YzdcdTU1'@; put 'YzhcdTU1Y2FcdTU1Y2JcdTU1Y2VcdTU1Y2ZcdTU1ZDBcdTU1ZDVcdTU1ZDciLDQsIlx1NTVkZVx1NTVlMFx1NTVlMlx1NTVlN1x1NTVlOVx1NTVlZFx1NTVlZVx1NTVmMFx1NTVmMVx1NTVmNFx1NTVmNlx1NTVmOCIsNCwiXHU1NWZmXHU1NjAyXHU1NjAzXHU1NjA0XHU1NjA1Il0sWyI4NzQw'@; put 'IiwiXHU1NjA2XHU1NjA3XHU1NjBhXHU1NjBiXHU1NjBkXHU1NjEwIiw3LCJcdTU2MTlcdTU2MWFcdTU2MWNcdTU2MWRcdTU2MjBcdTU2MjFcdTU2MjJcdTU2MjVcdTU2MjZcdTU2MjhcdTU2MjlcdTU2MmFcdTU2MmJcdTU2MmVcdTU2MmZcdTU2MzBcdTU2MzNcdTU2MzVcdTU2MzdcdTU2Mzhc'@; put 'dTU2M2FcdTU2M2NcdTU2M2RcdTU2M2VcdTU2NDAiLDExLCJcdTU2NGYiLDQsIlx1NTY1NVx1NTY1Nlx1NTY1YVx1NTY1Ylx1NTY1ZCIsNF0sWyI4NzgwIiwiXHU1NjYzXHU1NjY1XHU1NjY2XHU1NjY3XHU1NjZkXHU1NjZlXHU1NjZmXHU1NjcwXHU1NjcyXHU1NjczXHU1Njc0XHU1Njc1XHU1'@; put 'Njc3XHU1Njc4XHU1Njc5XHU1NjdhXHU1NjdkIiw3LCJcdTU2ODciLDYsIlx1NTY5MFx1NTY5MVx1NTY5Mlx1NTY5NCIsMTQsIlx1NTZhNCIsMTAsIlx1NTZiMCIsNiwiXHU1NmI4XHU1NmI5XHU1NmJhXHU1NmJiXHU1NmJkIiwxMiwiXHU1NmNiIiw4LCJcdTU2ZDVcdTU2ZDZcdTU2ZDhcdTU2'@; put 'ZDlcdTU2ZGNcdTU2ZTNcdTU2ZTUiLDUsIlx1NTZlY1x1NTZlZVx1NTZlZlx1NTZmMlx1NTZmM1x1NTZmNlx1NTZmN1x1NTZmOFx1NTZmYlx1NTZmY1x1NTcwMFx1NTcwMVx1NTcwMlx1NTcwNVx1NTcwN1x1NTcwYiIsNl0sWyI4ODQwIiwiXHU1NzEyIiw5LCJcdTU3MWRcdTU3MWVcdTU3MjBc'@; put 'dTU3MjFcdTU3MjJcdTU3MjRcdTU3MjVcdTU3MjZcdTU3MjdcdTU3MmJcdTU3MzFcdTU3MzJcdTU3MzQiLDQsIlx1NTczY1x1NTczZFx1NTczZlx1NTc0MVx1NTc0M1x1NTc0NFx1NTc0NVx1NTc0Nlx1NTc0OFx1NTc0OVx1NTc0Ylx1NTc1MiIsNCwiXHU1NzU4XHU1NzU5XHU1NzYyXHU1NzYz'@; put 'XHU1NzY1XHU1NzY3XHU1NzZjXHU1NzZlXHU1NzcwXHU1NzcxXHU1NzcyXHU1Nzc0XHU1Nzc1XHU1Nzc4XHU1Nzc5XHU1NzdhXHU1NzdkXHU1NzdlXHU1NzdmXHU1NzgwIl0sWyI4ODgwIiwiXHU1NzgxXHU1Nzg3XHU1Nzg4XHU1Nzg5XHU1NzhhXHU1NzhkIiw0LCJcdTU3OTQiLDYsIlx1NTc5'@; put 'Y1x1NTc5ZFx1NTc5ZVx1NTc5Zlx1NTdhNVx1NTdhOFx1NTdhYVx1NTdhY1x1NTdhZlx1NTdiMFx1NTdiMVx1NTdiM1x1NTdiNVx1NTdiNlx1NTdiN1x1NTdiOSIsOCwiXHU1N2M0Iiw2LCJcdTU3Y2NcdTU3Y2RcdTU3ZDBcdTU3ZDFcdTU3ZDNcdTU3ZDZcdTU3ZDdcdTU3ZGJcdTU3ZGNcdTU3'@; put 'ZGVcdTU3ZTFcdTU3ZTJcdTU3ZTNcdTU3ZTUiLDcsIlx1NTdlZVx1NTdmMFx1NTdmMVx1NTdmMlx1NTdmM1x1NTdmNVx1NTdmNlx1NTdmN1x1NTdmYlx1NTdmY1x1NTdmZVx1NTdmZlx1NTgwMVx1NTgwM1x1NTgwNFx1NTgwNVx1NTgwOFx1NTgwOVx1NTgwYVx1NTgwY1x1NTgwZVx1NTgwZlx1'@; put 'NTgxMFx1NTgxMlx1NTgxM1x1NTgxNFx1NTgxNlx1NTgxN1x1NTgxOFx1NTgxYVx1NTgxYlx1NTgxY1x1NTgxZFx1NTgxZlx1NTgyMlx1NTgyM1x1NTgyNSIsNCwiXHU1ODJiIiw0LCJcdTU4MzFcdTU4MzJcdTU4MzNcdTU4MzRcdTU4MzYiLDddLFsiODk0MCIsIlx1NTgzZSIsNSwiXHU1ODQ1'@; put 'Iiw2LCJcdTU4NGVcdTU4NGZcdTU4NTBcdTU4NTJcdTU4NTNcdTU4NTVcdTU4NTZcdTU4NTdcdTU4NTkiLDQsIlx1NTg1ZiIsNSwiXHU1ODY2Iiw0LCJcdTU4NmQiLDE2LCJcdTU4N2ZcdTU4ODJcdTU4ODRcdTU4ODZcdTU4ODdcdTU4ODhcdTU4OGFcdTU4OGJcdTU4OGMiXSxbIjg5ODAiLCJc'@; put 'dTU4OGQiLDQsIlx1NTg5NCIsNCwiXHU1ODliXHU1ODljXHU1ODlkXHU1OGEwIiw3LCJcdTU4YWEiLDE3LCJcdTU4YmRcdTU4YmVcdTU4YmZcdTU4YzBcdTU4YzJcdTU4YzNcdTU4YzRcdTU4YzYiLDEwLCJcdTU4ZDJcdTU4ZDNcdTU4ZDRcdTU4ZDYiLDEzLCJcdTU4ZTUiLDUsIlx1NThlZFx1'@; put 'NThlZlx1NThmMVx1NThmMlx1NThmNFx1NThmNVx1NThmN1x1NThmOFx1NThmYSIsNywiXHU1OTAzXHU1OTA1XHU1OTA2XHU1OTA4Iiw0LCJcdTU5MGVcdTU5MTBcdTU5MTFcdTU5MTJcdTU5MTNcdTU5MTdcdTU5MThcdTU5MWJcdTU5MWRcdTU5MWVcdTU5MjBcdTU5MjFcdTU5MjJcdTU5MjNc'@; put 'dTU5MjZcdTU5MjhcdTU5MmNcdTU5MzBcdTU5MzJcdTU5MzNcdTU5MzVcdTU5MzZcdTU5M2IiXSxbIjhhNDAiLCJcdTU5M2RcdTU5M2VcdTU5M2ZcdTU5NDBcdTU5NDNcdTU5NDVcdTU5NDZcdTU5NGFcdTU5NGNcdTU5NGRcdTU5NTBcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWIiLDQsIlx1NTk2'@; put 'MVx1NTk2M1x1NTk2NFx1NTk2NiIsMTIsIlx1NTk3NVx1NTk3N1x1NTk3YVx1NTk3Ylx1NTk3Y1x1NTk3ZVx1NTk3Zlx1NTk4MFx1NTk4NVx1NTk4OVx1NTk4Ylx1NTk4Y1x1NTk4ZVx1NTk4Zlx1NTk5MFx1NTk5MVx1NTk5NFx1NTk5NVx1NTk5OFx1NTk5YVx1NTk5Ylx1NTk5Y1x1NTk5ZFx1'@; put 'NTk5Zlx1NTlhMFx1NTlhMVx1NTlhMlx1NTlhNiJdLFsiOGE4MCIsIlx1NTlhN1x1NTlhY1x1NTlhZFx1NTliMFx1NTliMVx1NTliMyIsNSwiXHU1OWJhXHU1OWJjXHU1OWJkXHU1OWJmIiw2LCJcdTU5YzdcdTU5YzhcdTU5YzlcdTU5Y2NcdTU5Y2RcdTU5Y2VcdTU5Y2ZcdTU5ZDVcdTU5ZDZc'@; put 'dTU5ZDlcdTU5ZGJcdTU5ZGUiLDQsIlx1NTllNFx1NTllNlx1NTllN1x1NTllOVx1NTllYVx1NTllYlx1NTllZCIsMTEsIlx1NTlmYVx1NTlmY1x1NTlmZFx1NTlmZVx1NWEwMFx1NWEwMlx1NWEwYVx1NWEwYlx1NWEwZFx1NWEwZVx1NWEwZlx1NWExMFx1NWExMlx1NWExNFx1NWExNVx1NWEx'@; put 'Nlx1NWExN1x1NWExOVx1NWExYVx1NWExYlx1NWExZFx1NWExZVx1NWEyMVx1NWEyMlx1NWEyNFx1NWEyNlx1NWEyN1x1NWEyOFx1NWEyYSIsNiwiXHU1YTMzXHU1YTM1XHU1YTM3Iiw0LCJcdTVhM2RcdTVhM2VcdTVhM2ZcdTVhNDEiLDQsIlx1NWE0N1x1NWE0OFx1NWE0YiIsOSwiXHU1YTU2'@; put 'XHU1YTU3XHU1YTU4XHU1YTU5XHU1YTViIiw1XSxbIjhiNDAiLCJcdTVhNjFcdTVhNjNcdTVhNjRcdTVhNjVcdTVhNjZcdTVhNjhcdTVhNjlcdTVhNmIiLDgsIlx1NWE3OFx1NWE3OVx1NWE3Ylx1NWE3Y1x1NWE3ZFx1NWE3ZVx1NWE4MCIsMTcsIlx1NWE5MyIsNiwiXHU1YTljIiwxMywiXHU1'@; put 'YWFiXHU1YWFjIl0sWyI4YjgwIiwiXHU1YWFkIiw0LCJcdTVhYjRcdTVhYjZcdTVhYjdcdTVhYjkiLDQsIlx1NWFiZlx1NWFjMFx1NWFjMyIsNSwiXHU1YWNhXHU1YWNiXHU1YWNkIiw0LCJcdTVhZDNcdTVhZDVcdTVhZDdcdTVhZDlcdTVhZGFcdTVhZGJcdTVhZGRcdTVhZGVcdTVhZGZcdTVh'@; put 'ZTJcdTVhZTRcdTVhZTVcdTVhZTdcdTVhZThcdTVhZWFcdTVhZWMiLDQsIlx1NWFmMiIsMjIsIlx1NWIwYSIsMTEsIlx1NWIxOCIsMjUsIlx1NWIzM1x1NWIzNVx1NWIzNlx1NWIzOCIsNywiXHU1YjQxIiw2XSxbIjhjNDAiLCJcdTViNDgiLDcsIlx1NWI1Mlx1NWI1Nlx1NWI1ZVx1NWI2MFx1'@; put 'NWI2MVx1NWI2N1x1NWI2OFx1NWI2Ylx1NWI2ZFx1NWI2ZVx1NWI2Zlx1NWI3Mlx1NWI3NFx1NWI3Nlx1NWI3N1x1NWI3OFx1NWI3OVx1NWI3Ylx1NWI3Y1x1NWI3ZVx1NWI3Zlx1NWI4Mlx1NWI4Nlx1NWI4YVx1NWI4ZFx1NWI4ZVx1NWI5MFx1NWI5MVx1NWI5Mlx1NWI5NFx1NWI5Nlx1NWI5'@; put 'Zlx1NWJhN1x1NWJhOFx1NWJhOVx1NWJhY1x1NWJhZFx1NWJhZVx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1NWJiYVx1NWJiYlx1NWJiY1x1NWJjMFx1NWJjMVx1NWJjM1x1NWJjOFx1NWJjOVx1NWJjYVx1NWJjYlx1NWJjZFx1NWJjZVx1NWJjZiJdLFsiOGM4MCIsIlx1NWJkMVx1NWJkNCIs'@; put 'OCwiXHU1YmUwXHU1YmUyXHU1YmUzXHU1YmU2XHU1YmU3XHU1YmU5Iiw0LCJcdTViZWZcdTViZjEiLDYsIlx1NWJmZFx1NWJmZVx1NWMwMFx1NWMwMlx1NWMwM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwYlx1NWMwY1x1NWMwZFx1NWMwZVx1NWMxMFx1NWMxMlx1NWMxM1x1NWMxN1x1NWMxOVx1'@; put 'NWMxYlx1NWMxZVx1NWMxZlx1NWMyMFx1NWMyMVx1NWMyM1x1NWMyNlx1NWMyOFx1NWMyOVx1NWMyYVx1NWMyYlx1NWMyZFx1NWMyZVx1NWMyZlx1NWMzMFx1NWMzMlx1NWMzM1x1NWMzNVx1NWMzNlx1NWMzN1x1NWM0M1x1NWM0NFx1NWM0Nlx1NWM0N1x1NWM0Y1x1NWM0ZFx1NWM1Mlx1NWM1'@; put 'M1x1NWM1NFx1NWM1Nlx1NWM1N1x1NWM1OFx1NWM1YVx1NWM1Ylx1NWM1Y1x1NWM1ZFx1NWM1Zlx1NWM2Mlx1NWM2NFx1NWM2NyIsNiwiXHU1YzcwXHU1YzcyIiw2LCJcdTVjN2JcdTVjN2NcdTVjN2RcdTVjN2VcdTVjODBcdTVjODMiLDQsIlx1NWM4OVx1NWM4YVx1NWM4Ylx1NWM4ZVx1NWM4'@; put 'Zlx1NWM5Mlx1NWM5M1x1NWM5NVx1NWM5ZCIsNCwiXHU1Y2E0Iiw0XSxbIjhkNDAiLCJcdTVjYWFcdTVjYWVcdTVjYWZcdTVjYjBcdTVjYjJcdTVjYjRcdTVjYjZcdTVjYjlcdTVjYmFcdTVjYmJcdTVjYmNcdTVjYmVcdTVjYzBcdTVjYzJcdTVjYzNcdTVjYzUiLDUsIlx1NWNjYyIsNSwiXHU1'@; put 'Y2QzIiw1LCJcdTVjZGEiLDYsIlx1NWNlMlx1NWNlM1x1NWNlN1x1NWNlOVx1NWNlYlx1NWNlY1x1NWNlZVx1NWNlZlx1NWNmMSIsOSwiXHU1Y2ZjIiw0XSxbIjhkODAiLCJcdTVkMDFcdTVkMDRcdTVkMDVcdTVkMDgiLDUsIlx1NWQwZiIsNCwiXHU1ZDE1XHU1ZDE3XHU1ZDE4XHU1ZDE5XHU1'@; put 'ZDFhXHU1ZDFjXHU1ZDFkXHU1ZDFmIiw0LCJcdTVkMjVcdTVkMjhcdTVkMmFcdTVkMmJcdTVkMmNcdTVkMmYiLDQsIlx1NWQzNSIsNywiXHU1ZDNmIiw3LCJcdTVkNDhcdTVkNDlcdTVkNGQiLDEwLCJcdTVkNTlcdTVkNWFcdTVkNWNcdTVkNWUiLDEwLCJcdTVkNmFcdTVkNmRcdTVkNmVcdTVk'@; put 'NzBcdTVkNzFcdTVkNzJcdTVkNzNcdTVkNzUiLDEyLCJcdTVkODMiLDIxLCJcdTVkOWFcdTVkOWJcdTVkOWNcdTVkOWVcdTVkOWZcdTVkYTAiXSxbIjhlNDAiLCJcdTVkYTEiLDIxLCJcdTVkYjgiLDEyLCJcdTVkYzYiLDYsIlx1NWRjZSIsMTIsIlx1NWRkY1x1NWRkZlx1NWRlMFx1NWRlM1x1'@; put 'NWRlNFx1NWRlYVx1NWRlY1x1NWRlZCJdLFsiOGU4MCIsIlx1NWRmMFx1NWRmNVx1NWRmNlx1NWRmOCIsNCwiXHU1ZGZmXHU1ZTAwXHU1ZTA0XHU1ZTA3XHU1ZTA5XHU1ZTBhXHU1ZTBiXHU1ZTBkXHU1ZTBlXHU1ZTEyXHU1ZTEzXHU1ZTE3XHU1ZTFlIiw3LCJcdTVlMjgiLDQsIlx1NWUyZlx1'@; put 'NWUzMFx1NWUzMiIsNCwiXHU1ZTM5XHU1ZTNhXHU1ZTNlXHU1ZTNmXHU1ZTQwXHU1ZTQxXHU1ZTQzXHU1ZTQ2Iiw1LCJcdTVlNGQiLDYsIlx1NWU1NiIsNCwiXHU1ZTVjXHU1ZTVkXHU1ZTVmXHU1ZTYwXHU1ZTYzIiwxNCwiXHU1ZTc1XHU1ZTc3XHU1ZTc5XHU1ZTdlXHU1ZTgxXHU1ZTgyXHU1'@; put 'ZTgzXHU1ZTg1XHU1ZTg4XHU1ZTg5XHU1ZThjXHU1ZThkXHU1ZThlXHU1ZTkyXHU1ZTk4XHU1ZTliXHU1ZTlkXHU1ZWExXHU1ZWEyXHU1ZWEzXHU1ZWE0XHU1ZWE4Iiw0LCJcdTVlYWUiLDQsIlx1NWViNFx1NWViYVx1NWViYlx1NWViY1x1NWViZFx1NWViZiIsNl0sWyI4ZjQwIiwiXHU1ZWM2'@; put 'XHU1ZWM3XHU1ZWM4XHU1ZWNiIiw1LCJcdTVlZDRcdTVlZDVcdTVlZDdcdTVlZDhcdTVlZDlcdTVlZGFcdTVlZGMiLDExLCJcdTVlZTlcdTVlZWIiLDgsIlx1NWVmNVx1NWVmOFx1NWVmOVx1NWVmYlx1NWVmY1x1NWVmZFx1NWYwNVx1NWYwNlx1NWYwN1x1NWYwOVx1NWYwY1x1NWYwZFx1NWYw'@; put 'ZVx1NWYxMFx1NWYxMlx1NWYxNFx1NWYxNlx1NWYxOVx1NWYxYVx1NWYxY1x1NWYxZFx1NWYxZVx1NWYyMVx1NWYyMlx1NWYyM1x1NWYyNCJdLFsiOGY4MCIsIlx1NWYyOFx1NWYyYlx1NWYyY1x1NWYyZVx1NWYzMFx1NWYzMiIsNiwiXHU1ZjNiXHU1ZjNkXHU1ZjNlXHU1ZjNmXHU1ZjQxIiwx'@; put 'NCwiXHU1ZjUxXHU1ZjU0XHU1ZjU5XHU1ZjVhXHU1ZjViXHU1ZjVjXHU1ZjVlXHU1ZjVmXHU1ZjYwXHU1ZjYzXHU1ZjY1XHU1ZjY3XHU1ZjY4XHU1ZjZiXHU1ZjZlXHU1ZjZmXHU1ZjcyXHU1Zjc0XHU1Zjc1XHU1Zjc2XHU1Zjc4XHU1ZjdhXHU1ZjdkXHU1ZjdlXHU1ZjdmXHU1ZjgzXHU1Zjg2'@; put 'XHU1ZjhkXHU1ZjhlXHU1ZjhmXHU1ZjkxXHU1ZjkzXHU1Zjk0XHU1Zjk2XHU1ZjlhXHU1ZjliXHU1ZjlkXHU1ZjllXHU1ZjlmXHU1ZmEwXHU1ZmEyIiw1LCJcdTVmYTlcdTVmYWJcdTVmYWNcdTVmYWYiLDUsIlx1NWZiNlx1NWZiOFx1NWZiOVx1NWZiYVx1NWZiYlx1NWZiZSIsNCwiXHU1ZmM3'@; put 'XHU1ZmM4XHU1ZmNhXHU1ZmNiXHU1ZmNlXHU1ZmQzXHU1ZmQ0XHU1ZmQ1XHU1ZmRhXHU1ZmRiXHU1ZmRjXHU1ZmRlXHU1ZmRmXHU1ZmUyXHU1ZmUzXHU1ZmU1XHU1ZmU2XHU1ZmU4XHU1ZmU5XHU1ZmVjXHU1ZmVmXHU1ZmYwXHU1ZmYyXHU1ZmYzXHU1ZmY0XHU1ZmY2XHU1ZmY3XHU1ZmY5XHU1'@; put 'ZmZhXHU1ZmZjXHU2MDA3Il0sWyI5MDQwIiwiXHU2MDA4XHU2MDA5XHU2MDBiXHU2MDBjXHU2MDEwXHU2MDExXHU2MDEzXHU2MDE3XHU2MDE4XHU2MDFhXHU2MDFlXHU2MDFmXHU2MDIyXHU2MDIzXHU2MDI0XHU2MDJjXHU2MDJkXHU2MDJlXHU2MDMwIiw0LCJcdTYwMzYiLDQsIlx1NjAzZFx1'@; put 'NjAzZVx1NjA0MFx1NjA0NCIsNiwiXHU2MDRjXHU2MDRlXHU2MDRmXHU2MDUxXHU2MDUzXHU2MDU0XHU2MDU2XHU2MDU3XHU2MDU4XHU2MDViXHU2MDVjXHU2MDVlXHU2MDVmXHU2MDYwXHU2MDYxXHU2MDY1XHU2MDY2XHU2MDZlXHU2MDcxXHU2MDcyXHU2MDc0XHU2MDc1XHU2MDc3XHU2MDdl'@; put 'XHU2MDgwIl0sWyI5MDgwIiwiXHU2MDgxXHU2MDgyXHU2MDg1XHU2MDg2XHU2MDg3XHU2MDg4XHU2MDhhXHU2MDhiXHU2MDhlXHU2MDhmXHU2MDkwXHU2MDkxXHU2MDkzXHU2MDk1XHU2MDk3XHU2MDk4XHU2MDk5XHU2MDljXHU2MDllXHU2MGExXHU2MGEyXHU2MGE0XHU2MGE1XHU2MGE3XHU2'@; put 'MGE5XHU2MGFhXHU2MGFlXHU2MGIwXHU2MGIzXHU2MGI1XHU2MGI2XHU2MGI3XHU2MGI5XHU2MGJhXHU2MGJkIiw3LCJcdTYwYzdcdTYwYzhcdTYwYzlcdTYwY2MiLDQsIlx1NjBkMlx1NjBkM1x1NjBkNFx1NjBkNlx1NjBkN1x1NjBkOVx1NjBkYlx1NjBkZVx1NjBlMSIsNCwiXHU2MGVhXHU2'@; put 'MGYxXHU2MGYyXHU2MGY1XHU2MGY3XHU2MGY4XHU2MGZiIiw0LCJcdTYxMDJcdTYxMDNcdTYxMDRcdTYxMDVcdTYxMDdcdTYxMGFcdTYxMGJcdTYxMGNcdTYxMTAiLDQsIlx1NjExNlx1NjExN1x1NjExOFx1NjExOVx1NjExYlx1NjExY1x1NjExZFx1NjExZVx1NjEyMVx1NjEyMlx1NjEyNVx1'@; put 'NjEyOFx1NjEyOVx1NjEyYVx1NjEyYyIsMTgsIlx1NjE0MCIsNl0sWyI5MTQwIiwiXHU2MTQ3XHU2MTQ5XHU2MTRiXHU2MTRkXHU2MTRmXHU2MTUwXHU2MTUyXHU2MTUzXHU2MTU0XHU2MTU2Iiw2LCJcdTYxNWVcdTYxNWZcdTYxNjBcdTYxNjFcdTYxNjNcdTYxNjRcdTYxNjVcdTYxNjZcdTYx'@; put 'NjkiLDYsIlx1NjE3MVx1NjE3Mlx1NjE3M1x1NjE3NFx1NjE3Nlx1NjE3OCIsMTgsIlx1NjE4Y1x1NjE4ZFx1NjE4ZiIsNCwiXHU2MTk1Il0sWyI5MTgwIiwiXHU2MTk2Iiw2LCJcdTYxOWUiLDgsIlx1NjFhYVx1NjFhYlx1NjFhZCIsOSwiXHU2MWI4Iiw1LCJcdTYxYmZcdTYxYzBcdTYxYzFc'@; put 'dTYxYzMiLDQsIlx1NjFjOVx1NjFjYyIsNCwiXHU2MWQzXHU2MWQ1IiwxNiwiXHU2MWU3IiwxMywiXHU2MWY2Iiw4LCJcdTYyMDAiLDUsIlx1NjIwN1x1NjIwOVx1NjIxM1x1NjIxNFx1NjIxOVx1NjIxY1x1NjIxZFx1NjIxZVx1NjIyMFx1NjIyM1x1NjIyNlx1NjIyN1x1NjIyOFx1NjIyOVx1'@; put 'NjIyYlx1NjIyZFx1NjIyZlx1NjIzMFx1NjIzMVx1NjIzMlx1NjIzNVx1NjIzNlx1NjIzOCIsNCwiXHU2MjQyXHU2MjQ0XHU2MjQ1XHU2MjQ2XHU2MjRhIl0sWyI5MjQwIiwiXHU2MjRmXHU2MjUwXHU2MjU1XHU2MjU2XHU2MjU3XHU2MjU5XHU2MjVhXHU2MjVjIiw2LCJcdTYyNjRcdTYyNjVc'@; put 'dTYyNjhcdTYyNzFcdTYyNzJcdTYyNzRcdTYyNzVcdTYyNzdcdTYyNzhcdTYyN2FcdTYyN2JcdTYyN2RcdTYyODFcdTYyODJcdTYyODNcdTYyODVcdTYyODZcdTYyODdcdTYyODhcdTYyOGIiLDUsIlx1NjI5NFx1NjI5OVx1NjI5Y1x1NjI5ZFx1NjI5ZVx1NjJhM1x1NjJhNlx1NjJhN1x1NjJh'@; put 'OVx1NjJhYVx1NjJhZFx1NjJhZVx1NjJhZlx1NjJiMFx1NjJiMlx1NjJiM1x1NjJiNFx1NjJiNlx1NjJiN1x1NjJiOFx1NjJiYVx1NjJiZVx1NjJjMFx1NjJjMSJdLFsiOTI4MCIsIlx1NjJjM1x1NjJjYlx1NjJjZlx1NjJkMVx1NjJkNVx1NjJkZFx1NjJkZVx1NjJlMFx1NjJlMVx1NjJlNFx1'@; put 'NjJlYVx1NjJlYlx1NjJmMFx1NjJmMlx1NjJmNVx1NjJmOFx1NjJmOVx1NjJmYVx1NjJmYlx1NjMwMFx1NjMwM1x1NjMwNFx1NjMwNVx1NjMwNlx1NjMwYVx1NjMwYlx1NjMwY1x1NjMwZFx1NjMwZlx1NjMxMFx1NjMxMlx1NjMxM1x1NjMxNFx1NjMxNVx1NjMxN1x1NjMxOFx1NjMxOVx1NjMx'@; put 'Y1x1NjMyNlx1NjMyN1x1NjMyOVx1NjMyY1x1NjMyZFx1NjMyZVx1NjMzMFx1NjMzMVx1NjMzMyIsNSwiXHU2MzNiXHU2MzNjXHU2MzNlXHU2MzNmXHU2MzQwXHU2MzQxXHU2MzQ0XHU2MzQ3XHU2MzQ4XHU2MzRhXHU2MzUxXHU2MzUyXHU2MzUzXHU2MzU0XHU2MzU2Iiw3LCJcdTYzNjBcdTYz'@; put 'NjRcdTYzNjVcdTYzNjZcdTYzNjhcdTYzNmFcdTYzNmJcdTYzNmNcdTYzNmZcdTYzNzBcdTYzNzJcdTYzNzNcdTYzNzRcdTYzNzVcdTYzNzhcdTYzNzlcdTYzN2NcdTYzN2RcdTYzN2VcdTYzN2ZcdTYzODFcdTYzODNcdTYzODRcdTYzODVcdTYzODZcdTYzOGJcdTYzOGRcdTYzOTFcdTYzOTNc'@; put 'dTYzOTRcdTYzOTVcdTYzOTdcdTYzOTkiLDYsIlx1NjNhMVx1NjNhNFx1NjNhNlx1NjNhYlx1NjNhZlx1NjNiMVx1NjNiMlx1NjNiNVx1NjNiNlx1NjNiOVx1NjNiYlx1NjNiZFx1NjNiZlx1NjNjMCJdLFsiOTM0MCIsIlx1NjNjMVx1NjNjMlx1NjNjM1x1NjNjNVx1NjNjN1x1NjNjOFx1NjNj'@; put 'YVx1NjNjYlx1NjNjY1x1NjNkMVx1NjNkM1x1NjNkNFx1NjNkNVx1NjNkNyIsNiwiXHU2M2RmXHU2M2UyXHU2M2U0Iiw0LCJcdTYzZWJcdTYzZWNcdTYzZWVcdTYzZWZcdTYzZjBcdTYzZjFcdTYzZjNcdTYzZjVcdTYzZjdcdTYzZjlcdTYzZmFcdTYzZmJcdTYzZmNcdTYzZmVcdTY0MDNcdTY0'@; put 'MDRcdTY0MDYiLDQsIlx1NjQwZFx1NjQwZVx1NjQxMVx1NjQxMlx1NjQxNSIsNSwiXHU2NDFkXHU2NDFmXHU2NDIyXHU2NDIzXHU2NDI0Il0sWyI5MzgwIiwiXHU2NDI1XHU2NDI3XHU2NDI4XHU2NDI5XHU2NDJiXHU2NDJlIiw1LCJcdTY0MzUiLDQsIlx1NjQzYlx1NjQzY1x1NjQzZVx1NjQ0'@; put 'MFx1NjQ0Mlx1NjQ0M1x1NjQ0OVx1NjQ0YiIsNiwiXHU2NDUzXHU2NDU1XHU2NDU2XHU2NDU3XHU2NDU5Iiw0LCJcdTY0NWYiLDcsIlx1NjQ2OFx1NjQ2YVx1NjQ2Ylx1NjQ2Y1x1NjQ2ZSIsOSwiXHU2NDdiIiw2LCJcdTY0ODNcdTY0ODZcdTY0ODgiLDgsIlx1NjQ5M1x1NjQ5NFx1NjQ5N1x1'@; put 'NjQ5OFx1NjQ5YVx1NjQ5Ylx1NjQ5Y1x1NjQ5ZFx1NjQ5ZiIsNCwiXHU2NGE1XHU2NGE2XHU2NGE3XHU2NGE4XHU2NGFhXHU2NGFiXHU2NGFmXHU2NGIxXHU2NGIyXHU2NGIzXHU2NGI0XHU2NGI2XHU2NGI5XHU2NGJiXHU2NGJkXHU2NGJlXHU2NGJmXHU2NGMxXHU2NGMzXHU2NGM0XHU2NGM2'@; put 'Iiw2LCJcdTY0Y2ZcdTY0ZDFcdTY0ZDNcdTY0ZDRcdTY0ZDVcdTY0ZDZcdTY0ZDlcdTY0ZGEiXSxbIjk0NDAiLCJcdTY0ZGJcdTY0ZGNcdTY0ZGRcdTY0ZGZcdTY0ZTBcdTY0ZTFcdTY0ZTNcdTY0ZTVcdTY0ZTciLDI0LCJcdTY1MDEiLDcsIlx1NjUwYSIsNywiXHU2NTEzIiw0LCJcdTY1MTki'@; put 'LDhdLFsiOTQ4MCIsIlx1NjUyMlx1NjUyM1x1NjUyNFx1NjUyNiIsNCwiXHU2NTJjXHU2NTJkXHU2NTMwXHU2NTMxXHU2NTMyXHU2NTMzXHU2NTM3XHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQwIiw0LCJcdTY1NDZcdTY1NDdcdTY1NGFcdTY1NGJcdTY1NGRcdTY1NGVcdTY1NTBcdTY1NTJcdTY1'@; put 'NTNcdTY1NTRcdTY1NTdcdTY1NThcdTY1NWFcdTY1NWNcdTY1NWZcdTY1NjBcdTY1NjFcdTY1NjRcdTY1NjVcdTY1NjdcdTY1NjhcdTY1NjlcdTY1NmFcdTY1NmRcdTY1NmVcdTY1NmZcdTY1NzFcdTY1NzNcdTY1NzVcdTY1NzZcdTY1NzgiLDE0LCJcdTY1ODhcdTY1ODlcdTY1OGFcdTY1OGRc'@; put 'dTY1OGVcdTY1OGZcdTY1OTJcdTY1OTRcdTY1OTVcdTY1OTZcdTY1OThcdTY1OWFcdTY1OWRcdTY1OWVcdTY1YTBcdTY1YTJcdTY1YTNcdTY1YTZcdTY1YThcdTY1YWFcdTY1YWNcdTY1YWVcdTY1YjEiLDcsIlx1NjViYVx1NjViYlx1NjViZVx1NjViZlx1NjVjMFx1NjVjMlx1NjVjN1x1NjVj'@; put 'OFx1NjVjOVx1NjVjYVx1NjVjZFx1NjVkMFx1NjVkMVx1NjVkM1x1NjVkNFx1NjVkNVx1NjVkOCIsNywiXHU2NWUxXHU2NWUzXHU2NWU0XHU2NWVhXHU2NWViIl0sWyI5NTQwIiwiXHU2NWYyXHU2NWYzXHU2NWY0XHU2NWY1XHU2NWY4XHU2NWY5XHU2NWZiIiw0LCJcdTY2MDFcdTY2MDRcdTY2'@; put 'MDVcdTY2MDdcdTY2MDhcdTY2MDlcdTY2MGJcdTY2MGRcdTY2MTBcdTY2MTFcdTY2MTJcdTY2MTZcdTY2MTdcdTY2MThcdTY2MWFcdTY2MWJcdTY2MWNcdTY2MWVcdTY2MjFcdTY2MjJcdTY2MjNcdTY2MjRcdTY2MjZcdTY2MjlcdTY2MmFcdTY2MmJcdTY2MmNcdTY2MmVcdTY2MzBcdTY2MzJc'@; put 'dTY2MzNcdTY2MzciLDQsIlx1NjYzZFx1NjYzZlx1NjY0MFx1NjY0Mlx1NjY0NCIsNiwiXHU2NjRkXHU2NjRlXHU2NjUwXHU2NjUxXHU2NjU4Il0sWyI5NTgwIiwiXHU2NjU5XHU2NjViXHU2NjVjXHU2NjVkXHU2NjVlXHU2NjYwXHU2NjYyXHU2NjYzXHU2NjY1XHU2NjY3XHU2NjY5Iiw0LCJc'@; put 'dTY2NzFcdTY2NzJcdTY2NzNcdTY2NzVcdTY2NzhcdTY2NzlcdTY2N2JcdTY2N2NcdTY2N2RcdTY2N2ZcdTY2ODBcdTY2ODFcdTY2ODNcdTY2ODVcdTY2ODZcdTY2ODhcdTY2ODlcdTY2OGFcdTY2OGJcdTY2OGRcdTY2OGVcdTY2OGZcdTY2OTBcdTY2OTJcdTY2OTNcdTY2OTRcdTY2OTVcdTY2'@; put 'OTgiLDQsIlx1NjY5ZSIsOCwiXHU2NmE5Iiw0LCJcdTY2YWYiLDQsIlx1NjZiNVx1NjZiNlx1NjZiN1x1NjZiOFx1NjZiYVx1NjZiYlx1NjZiY1x1NjZiZFx1NjZiZiIsMjUsIlx1NjZkYVx1NjZkZSIsNywiXHU2NmU3XHU2NmU4XHU2NmVhIiw1LCJcdTY2ZjFcdTY2ZjVcdTY2ZjZcdTY2Zjhc'@; put 'dTY2ZmFcdTY2ZmJcdTY2ZmRcdTY3MDFcdTY3MDJcdTY3MDMiXSxbIjk2NDAiLCJcdTY3MDRcdTY3MDVcdTY3MDZcdTY3MDdcdTY3MGNcdTY3MGVcdTY3MGZcdTY3MTFcdTY3MTJcdTY3MTNcdTY3MTZcdTY3MThcdTY3MTlcdTY3MWFcdTY3MWNcdTY3MWVcdTY3MjAiLDUsIlx1NjcyN1x1Njcy'@; put 'OVx1NjcyZVx1NjczMFx1NjczMlx1NjczM1x1NjczNlx1NjczN1x1NjczOFx1NjczOVx1NjczYlx1NjczY1x1NjczZVx1NjczZlx1Njc0MVx1Njc0NFx1Njc0NVx1Njc0N1x1Njc0YVx1Njc0Ylx1Njc0ZFx1Njc1Mlx1Njc1NFx1Njc1NVx1Njc1NyIsNCwiXHU2NzVkXHU2NzYyXHU2NzYzXHU2'@; put 'NzY0XHU2NzY2XHU2NzY3XHU2NzZiXHU2NzZjXHU2NzZlXHU2NzcxXHU2Nzc0XHU2Nzc2Il0sWyI5NjgwIiwiXHU2Nzc4XHU2Nzc5XHU2NzdhXHU2NzdiXHU2NzdkXHU2NzgwXHU2NzgyXHU2NzgzXHU2Nzg1XHU2Nzg2XHU2Nzg4XHU2NzhhXHU2NzhjXHU2NzhkXHU2NzhlXHU2NzhmXHU2Nzkx'@; put 'XHU2NzkyXHU2NzkzXHU2Nzk0XHU2Nzk2XHU2Nzk5XHU2NzliXHU2NzlmXHU2N2EwXHU2N2ExXHU2N2E0XHU2N2E2XHU2N2E5XHU2N2FjXHU2N2FlXHU2N2IxXHU2N2IyXHU2N2I0XHU2N2I5Iiw3LCJcdTY3YzJcdTY3YzUiLDksIlx1NjdkNVx1NjdkNlx1NjdkN1x1NjdkYlx1NjdkZlx1Njdl'@; put 'MVx1NjdlM1x1NjdlNFx1NjdlNlx1NjdlN1x1NjdlOFx1NjdlYVx1NjdlYlx1NjdlZFx1NjdlZVx1NjdmMlx1NjdmNSIsNywiXHU2N2ZlXHU2ODAxXHU2ODAyXHU2ODAzXHU2ODA0XHU2ODA2XHU2ODBkXHU2ODEwXHU2ODEyXHU2ODE0XHU2ODE1XHU2ODE4Iiw0LCJcdTY4MWVcdTY4MWZcdTY4'@; put 'MjBcdTY4MjIiLDYsIlx1NjgyYiIsNiwiXHU2ODM0XHU2ODM1XHU2ODM2XHU2ODNhXHU2ODNiXHU2ODNmXHU2ODQ3XHU2ODRiXHU2ODRkXHU2ODRmXHU2ODUyXHU2ODU2Iiw1XSxbIjk3NDAiLCJcdTY4NWNcdTY4NWRcdTY4NWVcdTY4NWZcdTY4NmFcdTY4NmMiLDcsIlx1Njg3NVx1Njg3OCIs'@; put 'OCwiXHU2ODgyXHU2ODg0XHU2ODg3Iiw3LCJcdTY4OTBcdTY4OTFcdTY4OTJcdTY4OTRcdTY4OTVcdTY4OTZcdTY4OTgiLDksIlx1NjhhM1x1NjhhNFx1NjhhNVx1NjhhOVx1NjhhYVx1NjhhYlx1NjhhY1x1NjhhZVx1NjhiMVx1NjhiMlx1NjhiNFx1NjhiNlx1NjhiN1x1NjhiOCJdLFsiOTc4'@; put 'MCIsIlx1NjhiOSIsNiwiXHU2OGMxXHU2OGMzIiw1LCJcdTY4Y2FcdTY4Y2NcdTY4Y2VcdTY4Y2ZcdTY4ZDBcdTY4ZDFcdTY4ZDNcdTY4ZDRcdTY4ZDZcdTY4ZDdcdTY4ZDlcdTY4ZGIiLDQsIlx1NjhlMVx1NjhlMlx1NjhlNCIsOSwiXHU2OGVmXHU2OGYyXHU2OGYzXHU2OGY0XHU2OGY2XHU2'@; put 'OGY3XHU2OGY4XHU2OGZiXHU2OGZkXHU2OGZlXHU2OGZmXHU2OTAwXHU2OTAyXHU2OTAzXHU2OTA0XHU2OTA2Iiw0LCJcdTY5MGNcdTY5MGZcdTY5MTFcdTY5MTMiLDExLCJcdTY5MjFcdTY5MjJcdTY5MjNcdTY5MjUiLDcsIlx1NjkyZVx1NjkyZlx1NjkzMVx1NjkzMlx1NjkzM1x1NjkzNVx1'@; put 'NjkzNlx1NjkzN1x1NjkzOFx1NjkzYVx1NjkzYlx1NjkzY1x1NjkzZVx1Njk0MFx1Njk0MVx1Njk0MyIsMTYsIlx1Njk1NVx1Njk1Nlx1Njk1OFx1Njk1OVx1Njk1Ylx1Njk1Y1x1Njk1ZiJdLFsiOTg0MCIsIlx1Njk2MVx1Njk2Mlx1Njk2NFx1Njk2NVx1Njk2N1x1Njk2OFx1Njk2OVx1Njk2'@; put 'YVx1Njk2Y1x1Njk2ZFx1Njk2Zlx1Njk3MFx1Njk3MiIsNCwiXHU2OTdhXHU2OTdiXHU2OTdkXHU2OTdlXHU2OTdmXHU2OTgxXHU2OTgzXHU2OTg1XHU2OThhXHU2OThiXHU2OThjXHU2OThlIiw1LCJcdTY5OTZcdTY5OTdcdTY5OTlcdTY5OWFcdTY5OWQiLDksIlx1NjlhOVx1NjlhYVx1Njlh'@; put 'Y1x1NjlhZVx1NjlhZlx1NjliMFx1NjliMlx1NjliM1x1NjliNVx1NjliNlx1NjliOFx1NjliOVx1NjliYVx1NjliY1x1NjliZCJdLFsiOTg4MCIsIlx1NjliZVx1NjliZlx1NjljMFx1NjljMiIsNywiXHU2OWNiXHU2OWNkXHU2OWNmXHU2OWQxXHU2OWQyXHU2OWQzXHU2OWQ1Iiw1LCJcdTY5'@; put 'ZGNcdTY5ZGRcdTY5ZGVcdTY5ZTEiLDExLCJcdTY5ZWVcdTY5ZWZcdTY5ZjBcdTY5ZjFcdTY5ZjMiLDksIlx1NjlmZVx1NmEwMCIsOSwiXHU2YTBiIiwxMSwiXHU2YTE5Iiw1LCJcdTZhMjBcdTZhMjIiLDUsIlx1NmEyOVx1NmEyYlx1NmEyY1x1NmEyZFx1NmEyZVx1NmEzMFx1NmEzMlx1NmEz'@; put 'M1x1NmEzNFx1NmEzNiIsNiwiXHU2YTNmIiw0LCJcdTZhNDVcdTZhNDZcdTZhNDgiLDcsIlx1NmE1MSIsNiwiXHU2YTVhIl0sWyI5OTQwIiwiXHU2YTVjIiw0LCJcdTZhNjJcdTZhNjNcdTZhNjRcdTZhNjYiLDEwLCJcdTZhNzIiLDYsIlx1NmE3YVx1NmE3Ylx1NmE3ZFx1NmE3ZVx1NmE3Zlx1'@; put 'NmE4MVx1NmE4Mlx1NmE4M1x1NmE4NSIsOCwiXHU2YThmXHU2YTkyIiw0LCJcdTZhOTgiLDcsIlx1NmFhMSIsNV0sWyI5OTgwIiwiXHU2YWE3XHU2YWE4XHU2YWFhXHU2YWFkIiwxMTQsIlx1NmIyNVx1NmIyNlx1NmIyOCIsNl0sWyI5YTQwIiwiXHU2YjJmXHU2YjMwXHU2YjMxXHU2YjMzXHU2'@; put 'YjM0XHU2YjM1XHU2YjM2XHU2YjM4XHU2YjNiXHU2YjNjXHU2YjNkXHU2YjNmXHU2YjQwXHU2YjQxXHU2YjQyXHU2YjQ0XHU2YjQ1XHU2YjQ4XHU2YjRhXHU2YjRiXHU2YjRkIiwxMSwiXHU2YjVhIiw3LCJcdTZiNjhcdTZiNjlcdTZiNmIiLDEzLCJcdTZiN2FcdTZiN2RcdTZiN2VcdTZiN2Zc'@; put 'dTZiODBcdTZiODVcdTZiODgiXSxbIjlhODAiLCJcdTZiOGNcdTZiOGVcdTZiOGZcdTZiOTBcdTZiOTFcdTZiOTRcdTZiOTVcdTZiOTdcdTZiOThcdTZiOTlcdTZiOWMiLDQsIlx1NmJhMiIsNywiXHU2YmFiIiw3LCJcdTZiYjZcdTZiYjgiLDYsIlx1NmJjMFx1NmJjM1x1NmJjNFx1NmJjNiIs'@; put 'NCwiXHU2YmNjXHU2YmNlXHU2YmQwXHU2YmQxXHU2YmQ4XHU2YmRhXHU2YmRjIiw0LCJcdTZiZTIiLDcsIlx1NmJlY1x1NmJlZFx1NmJlZVx1NmJmMFx1NmJmMVx1NmJmMlx1NmJmNFx1NmJmNlx1NmJmN1x1NmJmOFx1NmJmYVx1NmJmYlx1NmJmY1x1NmJmZSIsNiwiXHU2YzA4Iiw0LCJcdTZj'@; put 'MGVcdTZjMTJcdTZjMTdcdTZjMWNcdTZjMWRcdTZjMWVcdTZjMjBcdTZjMjNcdTZjMjVcdTZjMmJcdTZjMmNcdTZjMmRcdTZjMzFcdTZjMzNcdTZjMzZcdTZjMzdcdTZjMzlcdTZjM2FcdTZjM2JcdTZjM2NcdTZjM2VcdTZjM2ZcdTZjNDNcdTZjNDRcdTZjNDVcdTZjNDhcdTZjNGIiLDQsIlx1'@; put 'NmM1MVx1NmM1Mlx1NmM1M1x1NmM1Nlx1NmM1OCJdLFsiOWI0MCIsIlx1NmM1OVx1NmM1YVx1NmM2Mlx1NmM2M1x1NmM2NVx1NmM2Nlx1NmM2N1x1NmM2YiIsNCwiXHU2YzcxXHU2YzczXHU2Yzc1XHU2Yzc3XHU2Yzc4XHU2YzdhXHU2YzdiXHU2YzdjXHU2YzdmXHU2YzgwXHU2Yzg0XHU2Yzg3'@; put 'XHU2YzhhXHU2YzhiXHU2YzhkXHU2YzhlXHU2YzkxXHU2YzkyXHU2Yzk1XHU2Yzk2XHU2Yzk3XHU2Yzk4XHU2YzlhXHU2YzljXHU2YzlkXHU2YzllXHU2Y2EwXHU2Y2EyXHU2Y2E4XHU2Y2FjXHU2Y2FmXHU2Y2IwXHU2Y2I0XHU2Y2I1XHU2Y2I2XHU2Y2I3XHU2Y2JhXHU2Y2MwXHU2Y2MxXHU2'@; put 'Y2MyXHU2Y2MzXHU2Y2M2XHU2Y2M3XHU2Y2M4XHU2Y2NiXHU2Y2NkXHU2Y2NlXHU2Y2NmXHU2Y2QxXHU2Y2QyXHU2Y2Q4Il0sWyI5YjgwIiwiXHU2Y2Q5XHU2Y2RhXHU2Y2RjXHU2Y2RkXHU2Y2RmXHU2Y2U0XHU2Y2U2XHU2Y2U3XHU2Y2U5XHU2Y2VjXHU2Y2VkXHU2Y2YyXHU2Y2Y0XHU2Y2Y5'@; put 'XHU2Y2ZmXHU2ZDAwXHU2ZDAyXHU2ZDAzXHU2ZDA1XHU2ZDA2XHU2ZDA4XHU2ZDA5XHU2ZDBhXHU2ZDBkXHU2ZDBmXHU2ZDEwXHU2ZDExXHU2ZDEzXHU2ZDE0XHU2ZDE1XHU2ZDE2XHU2ZDE4XHU2ZDFjXHU2ZDFkXHU2ZDFmIiw1LCJcdTZkMjZcdTZkMjhcdTZkMjlcdTZkMmNcdTZkMmRcdTZk'@; put 'MmZcdTZkMzBcdTZkMzRcdTZkMzZcdTZkMzdcdTZkMzhcdTZkM2FcdTZkM2ZcdTZkNDBcdTZkNDJcdTZkNDRcdTZkNDlcdTZkNGNcdTZkNTBcdTZkNTVcdTZkNTZcdTZkNTdcdTZkNThcdTZkNWJcdTZkNWRcdTZkNWZcdTZkNjFcdTZkNjJcdTZkNjRcdTZkNjVcdTZkNjdcdTZkNjhcdTZkNmJc'@; put 'dTZkNmNcdTZkNmRcdTZkNzBcdTZkNzFcdTZkNzJcdTZkNzNcdTZkNzVcdTZkNzZcdTZkNzlcdTZkN2FcdTZkN2JcdTZkN2QiLDQsIlx1NmQ4M1x1NmQ4NFx1NmQ4Nlx1NmQ4N1x1NmQ4YVx1NmQ4Ylx1NmQ4ZFx1NmQ4Zlx1NmQ5MFx1NmQ5Mlx1NmQ5NiIsNCwiXHU2ZDljXHU2ZGEyXHU2ZGE1'@; put 'XHU2ZGFjXHU2ZGFkXHU2ZGIwXHU2ZGIxXHU2ZGIzXHU2ZGI0XHU2ZGI2XHU2ZGI3XHU2ZGI5Iiw1LCJcdTZkYzFcdTZkYzJcdTZkYzNcdTZkYzhcdTZkYzlcdTZkY2EiXSxbIjljNDAiLCJcdTZkY2RcdTZkY2VcdTZkY2ZcdTZkZDBcdTZkZDJcdTZkZDNcdTZkZDRcdTZkZDVcdTZkZDdcdTZk'@; put 'ZGFcdTZkZGJcdTZkZGNcdTZkZGZcdTZkZTJcdTZkZTNcdTZkZTVcdTZkZTdcdTZkZThcdTZkZTlcdTZkZWFcdTZkZWRcdTZkZWZcdTZkZjBcdTZkZjJcdTZkZjRcdTZkZjVcdTZkZjZcdTZkZjhcdTZkZmFcdTZkZmQiLDcsIlx1NmUwNlx1NmUwN1x1NmUwOFx1NmUwOVx1NmUwYlx1NmUwZlx1'@; put 'NmUxMlx1NmUxM1x1NmUxNVx1NmUxOFx1NmUxOVx1NmUxYlx1NmUxY1x1NmUxZVx1NmUxZlx1NmUyMlx1NmUyNlx1NmUyN1x1NmUyOFx1NmUyYVx1NmUyY1x1NmUyZVx1NmUzMFx1NmUzMVx1NmUzM1x1NmUzNSJdLFsiOWM4MCIsIlx1NmUzNlx1NmUzN1x1NmUzOVx1NmUzYiIsNywiXHU2ZTQ1'@; put 'Iiw3LCJcdTZlNGZcdTZlNTBcdTZlNTFcdTZlNTJcdTZlNTVcdTZlNTdcdTZlNTlcdTZlNWFcdTZlNWNcdTZlNWRcdTZlNWVcdTZlNjAiLDEwLCJcdTZlNmNcdTZlNmRcdTZlNmYiLDE0LCJcdTZlODBcdTZlODFcdTZlODJcdTZlODRcdTZlODdcdTZlODhcdTZlOGEiLDQsIlx1NmU5MSIsNiwi'@; put 'XHU2ZTk5XHU2ZTlhXHU2ZTliXHU2ZTlkXHU2ZTllXHU2ZWEwXHU2ZWExXHU2ZWEzXHU2ZWE0XHU2ZWE2XHU2ZWE4XHU2ZWE5XHU2ZWFiXHU2ZWFjXHU2ZWFkXHU2ZWFlXHU2ZWIwXHU2ZWIzXHU2ZWI1XHU2ZWI4XHU2ZWI5XHU2ZWJjXHU2ZWJlXHU2ZWJmXHU2ZWMwXHU2ZWMzXHU2ZWM0XHU2'@; put 'ZWM1XHU2ZWM2XHU2ZWM4XHU2ZWM5XHU2ZWNhXHU2ZWNjXHU2ZWNkXHU2ZWNlXHU2ZWQwXHU2ZWQyXHU2ZWQ2XHU2ZWQ4XHU2ZWQ5XHU2ZWRiXHU2ZWRjXHU2ZWRkXHU2ZWUzXHU2ZWU3XHU2ZWVhIiw1XSxbIjlkNDAiLCJcdTZlZjBcdTZlZjFcdTZlZjJcdTZlZjNcdTZlZjVcdTZlZjZcdTZl'@; put 'ZjdcdTZlZjhcdTZlZmEiLDcsIlx1NmYwM1x1NmYwNFx1NmYwNVx1NmYwN1x1NmYwOFx1NmYwYSIsNCwiXHU2ZjEwXHU2ZjExXHU2ZjEyXHU2ZjE2Iiw5LCJcdTZmMjFcdTZmMjJcdTZmMjNcdTZmMjVcdTZmMjZcdTZmMjdcdTZmMjhcdTZmMmNcdTZmMmVcdTZmMzBcdTZmMzJcdTZmMzRcdTZm'@; put 'MzVcdTZmMzciLDYsIlx1NmYzZlx1NmY0MFx1NmY0MVx1NmY0MiJdLFsiOWQ4MCIsIlx1NmY0M1x1NmY0NFx1NmY0NVx1NmY0OFx1NmY0OVx1NmY0YVx1NmY0Y1x1NmY0ZSIsOSwiXHU2ZjU5XHU2ZjVhXHU2ZjViXHU2ZjVkXHU2ZjVmXHU2ZjYwXHU2ZjYxXHU2ZjYzXHU2ZjY0XHU2ZjY1XHU2'@; put 'ZjY3Iiw1LCJcdTZmNmZcdTZmNzBcdTZmNzFcdTZmNzNcdTZmNzVcdTZmNzZcdTZmNzdcdTZmNzlcdTZmN2JcdTZmN2QiLDYsIlx1NmY4NVx1NmY4Nlx1NmY4N1x1NmY4YVx1NmY4Ylx1NmY4ZiIsMTIsIlx1NmY5ZFx1NmY5ZVx1NmY5Zlx1NmZhMFx1NmZhMiIsNCwiXHU2ZmE4IiwxMCwiXHU2'@; put 'ZmI0XHU2ZmI1XHU2ZmI3XHU2ZmI4XHU2ZmJhIiw1LCJcdTZmYzFcdTZmYzMiLDUsIlx1NmZjYSIsNiwiXHU2ZmQzIiwxMCwiXHU2ZmRmXHU2ZmUyXHU2ZmUzXHU2ZmU0XHU2ZmU1Il0sWyI5ZTQwIiwiXHU2ZmU2Iiw3LCJcdTZmZjAiLDMyLCJcdTcwMTIiLDcsIlx1NzAxYyIsNiwiXHU3MDI0'@; put 'Iiw2XSxbIjllODAiLCJcdTcwMmIiLDksIlx1NzAzNlx1NzAzN1x1NzAzOFx1NzAzYSIsMTcsIlx1NzA0ZFx1NzA0ZVx1NzA1MCIsMTMsIlx1NzA1ZiIsMTEsIlx1NzA2ZVx1NzA3MVx1NzA3Mlx1NzA3M1x1NzA3NFx1NzA3N1x1NzA3OVx1NzA3YVx1NzA3Ylx1NzA3ZFx1NzA4MVx1NzA4Mlx1'@; put 'NzA4M1x1NzA4NFx1NzA4Nlx1NzA4N1x1NzA4OFx1NzA4Ylx1NzA4Y1x1NzA4ZFx1NzA4Zlx1NzA5MFx1NzA5MVx1NzA5M1x1NzA5N1x1NzA5OFx1NzA5YVx1NzA5Ylx1NzA5ZSIsMTIsIlx1NzBiMFx1NzBiMlx1NzBiNFx1NzBiNVx1NzBiNlx1NzBiYVx1NzBiZVx1NzBiZlx1NzBjNFx1NzBj'@; put 'NVx1NzBjNlx1NzBjN1x1NzBjOVx1NzBjYiIsMTIsIlx1NzBkYSJdLFsiOWY0MCIsIlx1NzBkY1x1NzBkZFx1NzBkZVx1NzBlMFx1NzBlMVx1NzBlMlx1NzBlM1x1NzBlNVx1NzBlYVx1NzBlZVx1NzBmMCIsNiwiXHU3MGY4XHU3MGZhXHU3MGZiXHU3MGZjXHU3MGZlIiwxMCwiXHU3MTBiIiw0'@; put 'LCJcdTcxMTFcdTcxMTJcdTcxMTRcdTcxMTdcdTcxMWIiLDEwLCJcdTcxMjciLDcsIlx1NzEzMlx1NzEzM1x1NzEzNCJdLFsiOWY4MCIsIlx1NzEzNVx1NzEzNyIsMTMsIlx1NzE0Nlx1NzE0N1x1NzE0OFx1NzE0OVx1NzE0Ylx1NzE0ZFx1NzE0ZiIsMTIsIlx1NzE1ZFx1NzE1ZiIsNCwiXHU3'@; put 'MTY1XHU3MTY5Iiw0LCJcdTcxNmZcdTcxNzBcdTcxNzFcdTcxNzRcdTcxNzVcdTcxNzZcdTcxNzdcdTcxNzlcdTcxN2JcdTcxN2NcdTcxN2UiLDUsIlx1NzE4NSIsNCwiXHU3MThiXHU3MThjXHU3MThkXHU3MThlXHU3MTkwXHU3MTkxXHU3MTkyXHU3MTkzXHU3MTk1XHU3MTk2XHU3MTk3XHU3'@; put 'MTlhIiw0LCJcdTcxYTEiLDYsIlx1NzFhOVx1NzFhYVx1NzFhYlx1NzFhZCIsNSwiXHU3MWI0XHU3MWI2XHU3MWI3XHU3MWI4XHU3MWJhIiw4LCJcdTcxYzQiLDksIlx1NzFjZiIsNF0sWyJhMDQwIiwiXHU3MWQ2Iiw5LCJcdTcxZTFcdTcxZTJcdTcxZTNcdTcxZTRcdTcxZTZcdTcxZTgiLDUs'@; put 'Ilx1NzFlZiIsOSwiXHU3MWZhIiwxMSwiXHU3MjA3IiwxOV0sWyJhMDgwIiwiXHU3MjFiXHU3MjFjXHU3MjFlIiw5LCJcdTcyMjlcdTcyMmJcdTcyMmRcdTcyMmVcdTcyMmZcdTcyMzJcdTcyMzNcdTcyMzRcdTcyM2FcdTcyM2NcdTcyM2VcdTcyNDAiLDYsIlx1NzI0OVx1NzI0YVx1NzI0Ylx1'@; put 'NzI0ZVx1NzI0Zlx1NzI1MFx1NzI1MVx1NzI1M1x1NzI1NFx1NzI1NVx1NzI1N1x1NzI1OFx1NzI1YVx1NzI1Y1x1NzI1ZVx1NzI2MFx1NzI2M1x1NzI2NFx1NzI2NVx1NzI2OFx1NzI2YVx1NzI2Ylx1NzI2Y1x1NzI2ZFx1NzI3MFx1NzI3MVx1NzI3M1x1NzI3NFx1NzI3Nlx1NzI3N1x1NzI3'@; put 'OFx1NzI3Ylx1NzI3Y1x1NzI3ZFx1NzI4Mlx1NzI4M1x1NzI4NSIsNCwiXHU3MjhjXHU3MjhlXHU3MjkwXHU3MjkxXHU3MjkzIiwxMSwiXHU3MmEwIiwxMSwiXHU3MmFlXHU3MmIxXHU3MmIyXHU3MmIzXHU3MmI1XHU3MmJhIiw2LCJcdTcyYzVcdTcyYzZcdTcyYzdcdTcyYzlcdTcyY2FcdTcy'@; put 'Y2JcdTcyY2NcdTcyY2ZcdTcyZDFcdTcyZDNcdTcyZDRcdTcyZDVcdTcyZDZcdTcyZDhcdTcyZGFcdTcyZGIiXSxbImExYTEiLCJcdTMwMDBcdTMwMDFcdTMwMDJceGI3XHUwMmM5XHUwMmM3XHhhOFx1MzAwM1x1MzAwNVx1MjAxNFx1ZmY1ZVx1MjAxNlx1MjAyNlx1MjAxOFx1MjAxOVx1MjAx'@; put 'Y1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOCIsNywiXHUzMDE2XHUzMDE3XHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUyMjM2XHUyMjI3XHUyMjI4XHUyMjExXHUyMjBmXHUyMjJhXHUyMjI5XHUyMjA4XHUyMjM3XHUyMjFhXHUyMmE1XHUyMjI1XHUyMjIwXHUyMzEyXHUyMjk5XHUyMjJiXHUy'@; put 'MjJlXHUyMjYxXHUyMjRjXHUyMjQ4XHUyMjNkXHUyMjFkXHUyMjYwXHUyMjZlXHUyMjZmXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM1XHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmYwNFx4YTRcdWZmZTBcdWZmZTFcdTIwMzBceGE3XHUyMTE2XHUyNjA2XHUyNjA1'@; put 'XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyMDNiXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzIl0sWyJhMmExIiwiXHUyMTcwIiw5XSxbImEyYjEiLCJcdTI0ODgiLDE5LCJcdTI0NzQiLDE5LCJcdTI0NjAiLDldLFsiYTJlNSIs'@; put 'Ilx1MzIyMCIsOV0sWyJhMmYxIiwiXHUyMTYwIiwxMV0sWyJhM2ExIiwiXHVmZjAxXHVmZjAyXHVmZjAzXHVmZmU1XHVmZjA1Iiw4OCwiXHVmZmUzIl0sWyJhNGExIiwiXHUzMDQxIiw4Ml0sWyJhNWExIiwiXHUzMGExIiw4NV0sWyJhNmExIiwiXHUwMzkxIiwxNiwiXHUwM2EzIiw2XSxbImE2'@; put 'YzEiLCJcdTAzYjEiLDE2LCJcdTAzYzMiLDZdLFsiYTZlMCIsIlx1ZmUzNVx1ZmUzNlx1ZmUzOVx1ZmUzYVx1ZmUzZlx1ZmU0MFx1ZmUzZFx1ZmUzZVx1ZmU0MVx1ZmU0Mlx1ZmU0M1x1ZmU0NCJdLFsiYTZlZSIsIlx1ZmUzYlx1ZmUzY1x1ZmUzN1x1ZmUzOFx1ZmUzMSJdLFsiYTZmNCIsIlx1'@; put 'ZmUzM1x1ZmUzNCJdLFsiYTdhMSIsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhN2QxIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImE4NDAiLCJcdTAyY2FcdTAyY2JcdTAyZDlcdTIwMTNcdTIwMTVcdTIwMjVcdTIwMzVcdTIxMDVcdTIxMDlcdTIxOTZcdTIxOTdc'@; put 'dTIxOThcdTIxOTlcdTIyMTVcdTIyMWZcdTIyMjNcdTIyNTJcdTIyNjZcdTIyNjdcdTIyYmZcdTI1NTAiLDM1LCJcdTI1ODEiLDZdLFsiYTg4MCIsIlx1MjU4OCIsNywiXHUyNTkzXHUyNTk0XHUyNTk1XHUyNWJjXHUyNWJkXHUyNWUyXHUyNWUzXHUyNWU0XHUyNWU1XHUyNjA5XHUyMjk1XHUz'@; put 'MDEyXHUzMDFkXHUzMDFlIl0sWyJhOGExIiwiXHUwMTAxXHhlMVx1MDFjZVx4ZTBcdTAxMTNceGU5XHUwMTFiXHhlOFx1MDEyYlx4ZWRcdTAxZDBceGVjXHUwMTRkXHhmM1x1MDFkMlx4ZjJcdTAxNmJceGZhXHUwMWQ0XHhmOVx1MDFkNlx1MDFkOFx1MDFkYVx1MDFkY1x4ZmNceGVhXHUwMjUx'@; put 'Il0sWyJhOGJkIiwiXHUwMTQ0XHUwMTQ4Il0sWyJhOGMwIiwiXHUwMjYxIl0sWyJhOGM1IiwiXHUzMTA1IiwzNl0sWyJhOTQwIiwiXHUzMDIxIiw4LCJcdTMyYTNcdTMzOGVcdTMzOGZcdTMzOWNcdTMzOWRcdTMzOWVcdTMzYTFcdTMzYzRcdTMzY2VcdTMzZDFcdTMzZDJcdTMzZDVcdWZlMzBc'@; put 'dWZmZTJcdWZmZTQiXSxbImE5NTkiLCJcdTIxMjFcdTMyMzEiXSxbImE5NWMiLCJcdTIwMTAiXSxbImE5NjAiLCJcdTMwZmNcdTMwOWJcdTMwOWNcdTMwZmRcdTMwZmVcdTMwMDZcdTMwOWRcdTMwOWVcdWZlNDkiLDksIlx1ZmU1NFx1ZmU1NVx1ZmU1Nlx1ZmU1N1x1ZmU1OSIsOF0sWyJhOTgw'@; put 'IiwiXHVmZTYyIiw0LCJcdWZlNjhcdWZlNjlcdWZlNmFcdWZlNmIiXSxbImE5OTYiLCJcdTMwMDciXSxbImE5YTQiLCJcdTI1MDAiLDc1XSxbImFhNDAiLCJcdTcyZGNcdTcyZGRcdTcyZGZcdTcyZTIiLDUsIlx1NzJlYVx1NzJlYlx1NzJmNVx1NzJmNlx1NzJmOVx1NzJmZFx1NzJmZVx1NzJm'@; put 'Zlx1NzMwMFx1NzMwMlx1NzMwNCIsNSwiXHU3MzBiXHU3MzBjXHU3MzBkXHU3MzBmXHU3MzEwXHU3MzExXHU3MzEyXHU3MzE0XHU3MzE4XHU3MzE5XHU3MzFhXHU3MzFmXHU3MzIwXHU3MzIzXHU3MzI0XHU3MzI2XHU3MzI3XHU3MzI4XHU3MzJkXHU3MzJmXHU3MzMwXHU3MzMyXHU3MzMzXHU3'@; put 'MzM1XHU3MzM2XHU3MzNhXHU3MzNiXHU3MzNjXHU3MzNkXHU3MzQwIiw4XSxbImFhODAiLCJcdTczNDlcdTczNGFcdTczNGJcdTczNGNcdTczNGVcdTczNGZcdTczNTFcdTczNTNcdTczNTRcdTczNTVcdTczNTZcdTczNTgiLDcsIlx1NzM2MSIsMTAsIlx1NzM2ZVx1NzM3MFx1NzM3MSJdLFsi'@; put 'YWI0MCIsIlx1NzM3MiIsMTEsIlx1NzM3ZiIsNCwiXHU3Mzg1XHU3Mzg2XHU3Mzg4XHU3MzhhXHU3MzhjXHU3MzhkXHU3MzhmXHU3MzkwXHU3MzkyXHU3MzkzXHU3Mzk0XHU3Mzk1XHU3Mzk3XHU3Mzk4XHU3Mzk5XHU3MzlhXHU3MzljXHU3MzlkXHU3MzllXHU3M2EwXHU3M2ExXHU3M2EzIiw1'@; put 'LCJcdTczYWFcdTczYWNcdTczYWRcdTczYjFcdTczYjRcdTczYjVcdTczYjZcdTczYjhcdTczYjlcdTczYmNcdTczYmRcdTczYmVcdTczYmZcdTczYzFcdTczYzMiLDRdLFsiYWI4MCIsIlx1NzNjYlx1NzNjY1x1NzNjZVx1NzNkMiIsNiwiXHU3M2RhXHU3M2RiXHU3M2RjXHU3M2RkXHU3M2Rm'@; put 'XHU3M2UxXHU3M2UyXHU3M2UzXHU3M2U0XHU3M2U2XHU3M2U4XHU3M2VhXHU3M2ViXHU3M2VjXHU3M2VlXHU3M2VmXHU3M2YwXHU3M2YxXHU3M2YzIiw0XSxbImFjNDAiLCJcdTczZjgiLDEwLCJcdTc0MDRcdTc0MDdcdTc0MDhcdTc0MGJcdTc0MGNcdTc0MGRcdTc0MGVcdTc0MTEiLDgsIlx1'@; put 'NzQxYyIsNSwiXHU3NDIzXHU3NDI0XHU3NDI3XHU3NDI5XHU3NDJiXHU3NDJkXHU3NDJmXHU3NDMxXHU3NDMyXHU3NDM3Iiw0LCJcdTc0M2RcdTc0M2VcdTc0M2ZcdTc0NDBcdTc0NDIiLDExXSxbImFjODAiLCJcdTc0NGUiLDYsIlx1NzQ1Nlx1NzQ1OFx1NzQ1ZFx1NzQ2MCIsMTIsIlx1NzQ2'@; put 'ZVx1NzQ2Zlx1NzQ3MSIsNCwiXHU3NDc4XHU3NDc5XHU3NDdhIl0sWyJhZDQwIiwiXHU3NDdiXHU3NDdjXHU3NDdkXHU3NDdmXHU3NDgyXHU3NDg0XHU3NDg1XHU3NDg2XHU3NDg4XHU3NDg5XHU3NDhhXHU3NDhjXHU3NDhkXHU3NDhmXHU3NDkxIiwxMCwiXHU3NDlkXHU3NDlmIiw3LCJcdTc0'@; put 'YWEiLDE1LCJcdTc0YmIiLDEyXSxbImFkODAiLCJcdTc0YzgiLDksIlx1NzRkMyIsOCwiXHU3NGRkXHU3NGRmXHU3NGUxXHU3NGU1XHU3NGU3Iiw2LCJcdTc0ZjBcdTc0ZjFcdTc0ZjIiXSxbImFlNDAiLCJcdTc0ZjNcdTc0ZjVcdTc0ZjgiLDYsIlx1NzUwMFx1NzUwMVx1NzUwMlx1NzUwM1x1'@; put 'NzUwNSIsNywiXHU3NTBlXHU3NTEwXHU3NTEyXHU3NTE0XHU3NTE1XHU3NTE2XHU3NTE3XHU3NTFiXHU3NTFkXHU3NTFlXHU3NTIwIiw0LCJcdTc1MjZcdTc1MjdcdTc1MmFcdTc1MmVcdTc1MzRcdTc1MzZcdTc1MzlcdTc1M2NcdTc1M2RcdTc1M2ZcdTc1NDFcdTc1NDJcdTc1NDNcdTc1NDRc'@; put 'dTc1NDZcdTc1NDdcdTc1NDlcdTc1NGFcdTc1NGRcdTc1NTBcdTc1NTFcdTc1NTJcdTc1NTNcdTc1NTVcdTc1NTZcdTc1NTdcdTc1NTgiXSxbImFlODAiLCJcdTc1NWQiLDcsIlx1NzU2N1x1NzU2OFx1NzU2OVx1NzU2YiIsNiwiXHU3NTczXHU3NTc1XHU3NTc2XHU3NTc3XHU3NTdhIiw0LCJc'@; put 'dTc1ODBcdTc1ODFcdTc1ODJcdTc1ODRcdTc1ODVcdTc1ODciXSxbImFmNDAiLCJcdTc1ODhcdTc1ODlcdTc1OGFcdTc1OGNcdTc1OGRcdTc1OGVcdTc1OTBcdTc1OTNcdTc1OTVcdTc1OThcdTc1OWJcdTc1OWNcdTc1OWVcdTc1YTJcdTc1YTYiLDQsIlx1NzVhZFx1NzViNlx1NzViN1x1NzVi'@; put 'YVx1NzViYlx1NzViZlx1NzVjMFx1NzVjMVx1NzVjNlx1NzVjYlx1NzVjY1x1NzVjZVx1NzVjZlx1NzVkMFx1NzVkMVx1NzVkM1x1NzVkN1x1NzVkOVx1NzVkYVx1NzVkY1x1NzVkZFx1NzVkZlx1NzVlMFx1NzVlMVx1NzVlNVx1NzVlOVx1NzVlY1x1NzVlZFx1NzVlZVx1NzVlZlx1NzVmMlx1'@; put 'NzVmM1x1NzVmNVx1NzVmNlx1NzVmN1x1NzVmOFx1NzVmYVx1NzVmYlx1NzVmZFx1NzVmZVx1NzYwMlx1NzYwNFx1NzYwNlx1NzYwNyJdLFsiYWY4MCIsIlx1NzYwOFx1NzYwOVx1NzYwYlx1NzYwZFx1NzYwZVx1NzYwZlx1NzYxMVx1NzYxMlx1NzYxM1x1NzYxNFx1NzYxNlx1NzYxYVx1NzYx'@; put 'Y1x1NzYxZFx1NzYxZVx1NzYyMVx1NzYyM1x1NzYyN1x1NzYyOFx1NzYyY1x1NzYyZVx1NzYyZlx1NzYzMVx1NzYzMlx1NzYzNlx1NzYzN1x1NzYzOVx1NzYzYVx1NzYzYlx1NzYzZFx1NzY0MVx1NzY0Mlx1NzY0NCJdLFsiYjA0MCIsIlx1NzY0NSIsNiwiXHU3NjRlIiw1LCJcdTc2NTVcdTc2'@; put 'NTciLDQsIlx1NzY1ZFx1NzY1Zlx1NzY2MFx1NzY2MVx1NzY2Mlx1NzY2NCIsNiwiXHU3NjZjXHU3NjZkXHU3NjZlXHU3NjcwIiw3LCJcdTc2NzlcdTc2N2FcdTc2N2NcdTc2N2ZcdTc2ODBcdTc2ODFcdTc2ODNcdTc2ODVcdTc2ODlcdTc2OGFcdTc2OGNcdTc2OGRcdTc2OGZcdTc2OTBcdTc2'@; put 'OTJcdTc2OTRcdTc2OTVcdTc2OTdcdTc2OThcdTc2OWFcdTc2OWIiXSxbImIwODAiLCJcdTc2OWMiLDcsIlx1NzZhNSIsOCwiXHU3NmFmXHU3NmIwXHU3NmIzXHU3NmI1Iiw5LCJcdTc2YzBcdTc2YzFcdTc2YzNcdTU1NGFcdTk2M2ZcdTU3YzNcdTYzMjhcdTU0Y2VcdTU1MDlcdTU0YzBcdTc2'@; put 'OTFcdTc2NGNcdTg1M2NcdTc3ZWVcdTgyN2VcdTc4OGRcdTcyMzFcdTk2OThcdTk3OGRcdTZjMjhcdTViODlcdTRmZmFcdTYzMDlcdTY2OTdcdTVjYjhcdTgwZmFcdTY4NDhcdTgwYWVcdTY2MDJcdTc2Y2VcdTUxZjlcdTY1NTZcdTcxYWNcdTdmZjFcdTg4ODRcdTUwYjJcdTU5NjVcdTYxY2Fc'@; put 'dTZmYjNcdTgyYWRcdTYzNGNcdTYyNTJcdTUzZWRcdTU0MjdcdTdiMDZcdTUxNmJcdTc1YTRcdTVkZjRcdTYyZDRcdThkY2JcdTk3NzZcdTYyOGFcdTgwMTlcdTU3NWRcdTk3MzhcdTdmNjJcdTcyMzhcdTc2N2RcdTY3Y2ZcdTc2N2VcdTY0NDZcdTRmNzBcdThkMjVcdTYyZGNcdTdhMTdcdTY1'@; put 'OTFcdTczZWRcdTY0MmNcdTYyNzNcdTgyMmNcdTk4ODFcdTY3N2ZcdTcyNDhcdTYyNmVcdTYyY2NcdTRmMzRcdTc0ZTNcdTUzNGFcdTUyOWVcdTdlY2FcdTkwYTZcdTVlMmVcdTY4ODZcdTY5OWNcdTgxODBcdTdlZDFcdTY4ZDJcdTc4YzVcdTg2OGNcdTk1NTFcdTUwOGRcdThjMjRcdTgyZGVc'@; put 'dTgwZGVcdTUzMDVcdTg5MTJcdTUyNjUiXSxbImIxNDAiLCJcdTc2YzRcdTc2YzdcdTc2YzlcdTc2Y2JcdTc2Y2NcdTc2ZDNcdTc2ZDVcdTc2ZDlcdTc2ZGFcdTc2ZGNcdTc2ZGRcdTc2ZGVcdTc2ZTAiLDQsIlx1NzZlNiIsNywiXHU3NmYwXHU3NmYzXHU3NmY1XHU3NmY2XHU3NmY3XHU3NmZh'@; put 'XHU3NmZiXHU3NmZkXHU3NmZmXHU3NzAwXHU3NzAyXHU3NzAzXHU3NzA1XHU3NzA2XHU3NzBhXHU3NzBjXHU3NzBlIiwxMCwiXHU3NzFiXHU3NzFjXHU3NzFkXHU3NzFlXHU3NzIxXHU3NzIzXHU3NzI0XHU3NzI1XHU3NzI3XHU3NzJhXHU3NzJiIl0sWyJiMTgwIiwiXHU3NzJjXHU3NzJlXHU3'@; put 'NzMwIiw0LCJcdTc3MzlcdTc3M2JcdTc3M2RcdTc3M2VcdTc3M2ZcdTc3NDJcdTc3NDRcdTc3NDVcdTc3NDZcdTc3NDgiLDcsIlx1Nzc1MiIsNywiXHU3NzVjXHU4NTg0XHU5NmY5XHU0ZmRkXHU1ODIxXHU5OTcxXHU1YjlkXHU2MmIxXHU2MmE1XHU2NmI0XHU4Yzc5XHU5YzhkXHU3MjA2XHU2'@; put 'NzZmXHU3ODkxXHU2MGIyXHU1MzUxXHU1MzE3XHU4Zjg4XHU4MGNjXHU4ZDFkXHU5NGExXHU1MDBkXHU3MmM4XHU1OTA3XHU2MGViXHU3MTE5XHU4OGFiXHU1OTU0XHU4MmVmXHU2NzJjXHU3YjI4XHU1ZDI5XHU3ZWY3XHU3NTJkXHU2Y2Y1XHU4ZTY2XHU4ZmY4XHU5MDNjXHU5ZjNiXHU2YmQ0'@; put 'XHU5MTE5XHU3YjE0XHU1ZjdjXHU3OGE3XHU4NGQ2XHU4NTNkXHU2YmQ1XHU2YmQ5XHU2YmQ2XHU1ZTAxXHU1ZTg3XHU3NWY5XHU5NWVkXHU2NTVkXHU1ZjBhXHU1ZmM1XHU4ZjlmXHU1OGMxXHU4MWMyXHU5MDdmXHU5NjViXHU5N2FkXHU4ZmI5XHU3ZjE2XHU4ZDJjXHU2MjQxXHU0ZmJmXHU1'@; put 'M2Q4XHU1MzVlXHU4ZmE4XHU4ZmE5XHU4ZmFiXHU5MDRkXHU2ODA3XHU1ZjZhXHU4MTk4XHU4ODY4XHU5Y2Q2XHU2MThiXHU1MjJiXHU3NjJhXHU1ZjZjXHU2NThjXHU2ZmQyXHU2ZWU4XHU1YmJlXHU2NDQ4XHU1MTc1XHU1MWIwXHU2N2M0XHU0ZTE5XHU3OWM5XHU5OTdjXHU3MGIzIl0sWyJi'@; put 'MjQwIiwiXHU3NzVkXHU3NzVlXHU3NzVmXHU3NzYwXHU3NzY0XHU3NzY3XHU3NzY5XHU3NzZhXHU3NzZkIiwxMSwiXHU3NzdhXHU3NzdiXHU3NzdjXHU3NzgxXHU3NzgyXHU3NzgzXHU3Nzg2Iiw1LCJcdTc3OGZcdTc3OTBcdTc3OTMiLDExLCJcdTc3YTFcdTc3YTNcdTc3YTRcdTc3YTZcdTc3'@; put 'YThcdTc3YWJcdTc3YWRcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjJcdTc3YjRcdTc3YjYiLDRdLFsiYjI4MCIsIlx1NzdiY1x1NzdiZVx1NzdjMCIsMTIsIlx1NzdjZSIsOCwiXHU3N2Q4XHU3N2Q5XHU3N2RhXHU3N2RkIiw0LCJcdTc3ZTRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBcdTY0YWRc'@; put 'dTYyZThcdTk0YjVcdTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVlMWJcdTgyMzZcdTgxMTZcdTgxOGFcdTZlMjRcdTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBcdTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYwMTZcdTY0'@; put 'ZTZcdTczMWNcdTg4YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlcdTgzZGNcdTg1MjFcdTk5MTBcdTUzYzJcdTg2OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRlZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRcdTY2Zjlc'@; put 'dTgzNDlcdTUzOTVcdTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUzYzlcdTgzMmNcdTgzMzZcdTY3ZTVcdTc4YjRcdTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRcdThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThjMTdcdTdm'@; put 'MjBcdTk0ZjJcdTRlYTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTYiXSxbImIzNDAiLCJcdTc3ZTZcdTc3ZThcdTc3ZWFcdTc3ZWZcdTc3ZjBcdTc3ZjFcdTc3ZjJcdTc3ZjRcdTc3ZjVcdTc3ZjdcdTc3ZjlcdTc3ZmFcdTc3ZmJcdTc3ZmNcdTc4MDMiLDUsIlx1NzgwYVx1NzgwYlx1NzgwZVx1'@; put 'NzgwZlx1NzgxMFx1NzgxM1x1NzgxNVx1NzgxOVx1NzgxYlx1NzgxZVx1NzgyMFx1NzgyMVx1NzgyMlx1NzgyNFx1NzgyOFx1NzgyYVx1NzgyYlx1NzgyZVx1NzgyZlx1NzgzMVx1NzgzMlx1NzgzM1x1NzgzNVx1NzgzNlx1NzgzZFx1NzgzZlx1Nzg0MVx1Nzg0Mlx1Nzg0M1x1Nzg0NFx1Nzg0'@; put 'Nlx1Nzg0OFx1Nzg0OVx1Nzg0YVx1Nzg0Ylx1Nzg0ZFx1Nzg0Zlx1Nzg1MVx1Nzg1M1x1Nzg1NFx1Nzg1OFx1Nzg1OVx1Nzg1YSJdLFsiYjM4MCIsIlx1Nzg1Ylx1Nzg1Y1x1Nzg1ZSIsMTEsIlx1Nzg2ZiIsNywiXHU3ODc4XHU3ODc5XHU3ODdhXHU3ODdiXHU3ODdkIiw2LCJcdTU3M2FcdTVj'@; put 'MWRcdTVlMzhcdTk1N2ZcdTUwN2ZcdTgwYTBcdTUzODJcdTY1NWVcdTc1NDVcdTU1MzFcdTUwMjFcdThkODVcdTYyODRcdTk0OWVcdTY3MWRcdTU2MzJcdTZmNmVcdTVkZTJcdTU0MzVcdTcwOTJcdThmNjZcdTYyNmZcdTY0YTRcdTYzYTNcdTVmN2JcdTZmODhcdTkwZjRcdTgxZTNcdThmYjBc'@; put 'dTVjMThcdTY2NjhcdTVmZjFcdTZjODlcdTk2NDhcdThkODFcdTg4NmNcdTY0OTFcdTc5ZjBcdTU3Y2VcdTZhNTlcdTYyMTBcdTU0NDhcdTRlNThcdTdhMGJcdTYwZTlcdTZmODRcdThiZGFcdTYyN2ZcdTkwMWVcdTlhOGJcdTc5ZTRcdTU0MDNcdTc1ZjRcdTYzMDFcdTUzMTlcdTZjNjBcdThm'@; put 'ZGZcdTVmMWJcdTlhNzBcdTgwM2JcdTlmN2ZcdTRmODhcdTVjM2FcdThkNjRcdTdmYzVcdTY1YTVcdTcwYmRcdTUxNDVcdTUxYjJcdTg2NmJcdTVkMDdcdTViYTBcdTYyYmRcdTkxNmNcdTc1NzRcdThlMGNcdTdhMjBcdTYxMDFcdTdiNzlcdTRlYzdcdTdlZjhcdTc3ODVcdTRlMTFcdTgxZWRc'@; put 'dTUyMWRcdTUxZmFcdTZhNzFcdTUzYThcdThlODdcdTk1MDRcdTk2Y2ZcdTZlYzFcdTk2NjRcdTY5NWEiXSxbImI0NDAiLCJcdTc4ODRcdTc4ODVcdTc4ODZcdTc4ODhcdTc4OGFcdTc4OGJcdTc4OGZcdTc4OTBcdTc4OTJcdTc4OTRcdTc4OTVcdTc4OTZcdTc4OTlcdTc4OWRcdTc4OWVcdTc4'@; put 'YTBcdTc4YTJcdTc4YTRcdTc4YTZcdTc4YTgiLDcsIlx1NzhiNVx1NzhiNlx1NzhiN1x1NzhiOFx1NzhiYVx1NzhiYlx1NzhiY1x1NzhiZFx1NzhiZlx1NzhjMFx1NzhjMlx1NzhjM1x1NzhjNFx1NzhjNlx1NzhjN1x1NzhjOFx1NzhjY1x1NzhjZFx1NzhjZVx1NzhjZlx1NzhkMVx1NzhkMlx1'@; put 'NzhkM1x1NzhkNlx1NzhkN1x1NzhkOFx1NzhkYSIsOV0sWyJiNDgwIiwiXHU3OGU0XHU3OGU1XHU3OGU2XHU3OGU3XHU3OGU5XHU3OGVhXHU3OGViXHU3OGVkIiw0LCJcdTc4ZjNcdTc4ZjVcdTc4ZjZcdTc4ZjhcdTc4ZjlcdTc4ZmIiLDUsIlx1NzkwMlx1NzkwM1x1NzkwNFx1NzkwNiIsNiwi'@; put 'XHU3ODQwXHU1MGE4XHU3N2Q3XHU2NDEwXHU4OWU2XHU1OTA0XHU2M2UzXHU1ZGRkXHU3YTdmXHU2OTNkXHU0ZjIwXHU4MjM5XHU1NTk4XHU0ZTMyXHU3NWFlXHU3YTk3XHU1ZTYyXHU1ZThhXHU5NWVmXHU1MjFiXHU1NDM5XHU3MDhhXHU2Mzc2XHU5NTI0XHU1NzgyXHU2NjI1XHU2OTNmXHU5'@; put 'MTg3XHU1NTA3XHU2ZGYzXHU3ZWFmXHU4ODIyXHU2MjMzXHU3ZWYwXHU3NWI1XHU4MzI4XHU3OGMxXHU5NmNjXHU4ZjllXHU2MTQ4XHU3NGY3XHU4YmNkXHU2YjY0XHU1MjNhXHU4ZDUwXHU2YjIxXHU4MDZhXHU4NDcxXHU1NmYxXHU1MzA2XHU0ZWNlXHU0ZTFiXHU1MWQxXHU3Yzk3XHU5MThi'@; put 'XHU3YzA3XHU0ZmMzXHU4ZTdmXHU3YmUxXHU3YTljXHU2NDY3XHU1ZDE0XHU1MGFjXHU4MTA2XHU3NjAxXHU3Y2I5XHU2ZGVjXHU3ZmUwXHU2NzUxXHU1YjU4XHU1YmY4XHU3OGNiXHU2NGFlXHU2NDEzXHU2M2FhXHU2MzJiXHU5NTE5XHU2NDJkXHU4ZmJlXHU3YjU0XHU3NjI5XHU2MjUzXHU1'@; put 'OTI3XHU1NDQ2XHU2Yjc5XHU1MGEzXHU2MjM0XHU1ZTI2XHU2Yjg2XHU0ZWUzXHU4ZDM3XHU4ODhiXHU1Zjg1XHU5MDJlIl0sWyJiNTQwIiwiXHU3OTBkIiw1LCJcdTc5MTQiLDksIlx1NzkxZiIsNCwiXHU3OTI1IiwxNCwiXHU3OTM1Iiw0LCJcdTc5M2RcdTc5M2ZcdTc5NDJcdTc5NDNcdTc5'@; put 'NDRcdTc5NDVcdTc5NDdcdTc5NGEiLDgsIlx1Nzk1NFx1Nzk1NVx1Nzk1OFx1Nzk1OVx1Nzk2MVx1Nzk2MyJdLFsiYjU4MCIsIlx1Nzk2NFx1Nzk2Nlx1Nzk2OVx1Nzk2YVx1Nzk2Ylx1Nzk2Y1x1Nzk2ZVx1Nzk3MCIsNiwiXHU3OTc5XHU3OTdiIiw0LCJcdTc5ODJcdTc5ODNcdTc5ODZcdTc5'@; put 'ODdcdTc5ODhcdTc5ODlcdTc5OGJcdTc5OGNcdTc5OGRcdTc5OGVcdTc5OTBcdTc5OTFcdTc5OTJcdTYwMjBcdTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZcdTY1ZTZcdTZjMmVcdTRmNDZcdTYwZWVcdTZkZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFc'@; put 'dTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJcdTVjOWJcdTc5NzdcdTViZmNcdTUyMzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2ODRcdThlNmNcdTcwNmZcdTc2N2JcdTdiNDlcdTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZl'@; put 'ZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVhZTFcdTYyYjVcdTVlOTVcdTU3MzBcdTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBcdTYzODJcdTZlYzdcdTc4OThcdTcwYjlcdTUxNzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1Mzhc'@; put 'dTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNcdTk2ZDVcdTUxY2JcdTUyMDFcdTYzODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3NzZcdThmZWRcdThjMGRcdTUzZTAiXSxbImI2NDAiLCJcdTc5OTMiLDYsIlx1Nzk5YiIsMTEsIlx1Nzlh'@; put 'OCIsMTAsIlx1NzliNCIsNCwiXHU3OWJjXHU3OWJmXHU3OWMyXHU3OWM0XHU3OWM1XHU3OWM3XHU3OWM4XHU3OWNhXHU3OWNjXHU3OWNlXHU3OWNmXHU3OWQwXHU3OWQzXHU3OWQ0XHU3OWQ2XHU3OWQ3XHU3OWQ5Iiw1LCJcdTc5ZTBcdTc5ZTFcdTc5ZTJcdTc5ZTVcdTc5ZThcdTc5ZWEiXSxb'@; put 'ImI2ODAiLCJcdTc5ZWNcdTc5ZWVcdTc5ZjEiLDYsIlx1NzlmOVx1NzlmYVx1NzlmY1x1NzlmZVx1NzlmZlx1N2EwMVx1N2EwNFx1N2EwNVx1N2EwN1x1N2EwOFx1N2EwOVx1N2EwYVx1N2EwY1x1N2EwZiIsNCwiXHU3YTE1XHU3YTE2XHU3YTE4XHU3YTE5XHU3YTFiXHU3YTFjXHU0ZTAxXHU3'@; put 'NmVmXHU1M2VlXHU5NDg5XHU5ODc2XHU5ZjBlXHU5NTJkXHU1YjlhXHU4YmEyXHU0ZTIyXHU0ZTFjXHU1MWFjXHU4NDYzXHU2MWMyXHU1MmE4XHU2ODBiXHU0Zjk3XHU2MDZiXHU1MWJiXHU2ZDFlXHU1MTVjXHU2Mjk2XHU2NTk3XHU5NjYxXHU4YzQ2XHU5MDE3XHU3NWQ4XHU5MGZkXHU3NzYz'@; put 'XHU2YmQyXHU3MjhhXHU3MmVjXHU4YmZiXHU1ODM1XHU3Nzc5XHU4ZDRjXHU2NzVjXHU5NTQwXHU4MDlhXHU1ZWE2XHU2ZTIxXHU1OTkyXHU3YWVmXHU3N2VkXHU5NTNiXHU2YmI1XHU2NWFkXHU3ZjBlXHU1ODA2XHU1MTUxXHU5NjFmXHU1YmY5XHU1OGE5XHU1NDI4XHU4ZTcyXHU2NTY2XHU5'@; put 'ODdmXHU1NmU0XHU5NDlkXHU3NmZlXHU5MDQxXHU2Mzg3XHU1NGM2XHU1OTFhXHU1OTNhXHU1NzliXHU4ZWIyXHU2NzM1XHU4ZGZhXHU4MjM1XHU1MjQxXHU2MGYwXHU1ODE1XHU4NmZlXHU1Y2U4XHU5ZTQ1XHU0ZmM0XHU5ODlkXHU4YmI5XHU1YTI1XHU2MDc2XHU1Mzg0XHU2MjdjXHU5MDRm'@; put 'XHU5MTAyXHU5OTdmXHU2MDY5XHU4MDBjXHU1MTNmXHU4MDMzXHU1YzE0XHU5OTc1XHU2ZDMxXHU0ZThjIl0sWyJiNzQwIiwiXHU3YTFkXHU3YTFmXHU3YTIxXHU3YTIyXHU3YTI0IiwxNCwiXHU3YTM0XHU3YTM1XHU3YTM2XHU3YTM4XHU3YTNhXHU3YTNlXHU3YTQwIiw1LCJcdTdhNDciLDks'@; put 'Ilx1N2E1MiIsNCwiXHU3YTU4IiwxNl0sWyJiNzgwIiwiXHU3YTY5Iiw2LCJcdTdhNzFcdTdhNzJcdTdhNzNcdTdhNzVcdTdhN2JcdTdhN2NcdTdhN2RcdTdhN2VcdTdhODJcdTdhODVcdTdhODdcdTdhODlcdTdhOGFcdTdhOGJcdTdhOGNcdTdhOGVcdTdhOGZcdTdhOTBcdTdhOTNcdTdhOTRc'@; put 'dTdhOTlcdTdhOWFcdTdhOWJcdTdhOWVcdTdhYTFcdTdhYTJcdThkMzBcdTUzZDFcdTdmNWFcdTdiNGZcdTRmMTBcdTRlNGZcdTk2MDBcdTZjZDVcdTczZDBcdTg1ZTlcdTVlMDZcdTc1NmFcdTdmZmJcdTZhMGFcdTc3ZmVcdTk0OTJcdTdlNDFcdTUxZTFcdTcwZTZcdTUzY2RcdThmZDRcdTgz'@; put 'MDNcdThkMjlcdTcyYWZcdTk5NmRcdTZjZGJcdTU3NGFcdTgyYjNcdTY1YjlcdTgwYWFcdTYyM2ZcdTk2MzJcdTU5YThcdTRlZmZcdThiYmZcdTdlYmFcdTY1M2VcdTgzZjJcdTk3NWVcdTU1NjFcdTk4ZGVcdTgwYTVcdTUzMmFcdThiZmRcdTU0MjBcdTgwYmFcdTVlOWZcdTZjYjhcdThkMzlc'@; put 'dTgyYWNcdTkxNWFcdTU0MjlcdTZjMWJcdTUyMDZcdTdlYjdcdTU3NWZcdTcxMWFcdTZjN2VcdTdjODlcdTU5NGJcdTRlZmRcdTVmZmZcdTYxMjRcdTdjYWFcdTRlMzBcdTVjMDFcdTY3YWJcdTg3MDJcdTVjZjBcdTk1MGJcdTk4Y2VcdTc1YWZcdTcwZmRcdTkwMjJcdTUxYWZcdTdmMWRcdThi'@; put 'YmRcdTU5NDlcdTUxZTRcdTRmNWJcdTU0MjZcdTU5MmJcdTY1NzdcdTgwYTRcdTViNzVcdTYyNzZcdTYyYzJcdThmOTBcdTVlNDVcdTZjMWZcdTdiMjZcdTRmMGZcdTRmZDhcdTY3MGQiXSxbImI4NDAiLCJcdTdhYTNcdTdhYTRcdTdhYTdcdTdhYTlcdTdhYWFcdTdhYWJcdTdhYWUiLDQsIlx1'@; put 'N2FiNCIsMTAsIlx1N2FjMCIsMTAsIlx1N2FjYyIsOSwiXHU3YWQ3XHU3YWQ4XHU3YWRhXHU3YWRiXHU3YWRjXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU0XHU3YWU3Iiw1LCJcdTdhZWVcdTdhZjBcdTdhZjFcdTdhZjJcdTdhZjMiXSxbImI4ODAiLCJcdTdhZjQiLDQsIlx1N2FmYlx1N2FmY1x1'@; put 'N2FmZVx1N2IwMFx1N2IwMVx1N2IwMlx1N2IwNVx1N2IwN1x1N2IwOVx1N2IwY1x1N2IwZFx1N2IwZVx1N2IxMFx1N2IxMlx1N2IxM1x1N2IxNlx1N2IxN1x1N2IxOFx1N2IxYVx1N2IxY1x1N2IxZFx1N2IxZlx1N2IyMVx1N2IyMlx1N2IyM1x1N2IyN1x1N2IyOVx1N2IyZFx1NmQ2ZVx1NmRh'@; put 'YVx1Nzk4Zlx1ODhiMVx1NWYxN1x1NzUyYlx1NjI5YVx1OGY4NVx1NGZlZlx1OTFkY1x1NjVhN1x1ODEyZlx1ODE1MVx1NWU5Y1x1ODE1MFx1OGQ3NFx1NTI2Zlx1ODk4Nlx1OGQ0Ylx1NTkwZFx1NTA4NVx1NGVkOFx1OTYxY1x1NzIzNlx1ODE3OVx1OGQxZlx1NWJjY1x1OGJhM1x1OTY0NFx1'@; put 'NTk4N1x1N2YxYVx1NTQ5MFx1NTY3Nlx1NTYwZVx1OGJlNVx1NjUzOVx1Njk4Mlx1OTQ5OVx1NzZkNlx1NmU4OVx1NWU3Mlx1NzUxOFx1Njc0Nlx1NjdkMVx1N2FmZlx1ODA5ZFx1OGQ3Nlx1NjExZlx1NzljNlx1NjU2Mlx1OGQ2M1x1NTE4OFx1NTIxYVx1OTRhMlx1N2YzOFx1ODA5Ylx1N2Vi'@; put 'Mlx1NWM5N1x1NmUyZlx1Njc2MFx1N2JkOVx1NzY4Ylx1OWFkOFx1ODE4Zlx1N2Y5NFx1N2NkNVx1NjQxZVx1OTU1MFx1N2EzZlx1NTQ0YVx1NTRlNVx1NmI0Y1x1NjQwMVx1NjIwOFx1OWUzZFx1ODBmM1x1NzU5OVx1NTI3Mlx1OTc2OVx1ODQ1Ylx1NjgzY1x1ODZlNFx1OTYwMVx1OTY5NFx1'@; put 'OTRlY1x1NGUyYVx1NTQwNFx1N2VkOVx1NjgzOVx1OGRkZlx1ODAxNVx1NjZmNFx1NWU5YVx1N2ZiOSJdLFsiYjk0MCIsIlx1N2IyZlx1N2IzMFx1N2IzMlx1N2IzNFx1N2IzNVx1N2IzNlx1N2IzN1x1N2IzOVx1N2IzYlx1N2IzZFx1N2IzZiIsNSwiXHU3YjQ2XHU3YjQ4XHU3YjRhXHU3YjRk'@; put 'XHU3YjRlXHU3YjUzXHU3YjU1XHU3YjU3XHU3YjU5XHU3YjVjXHU3YjVlXHU3YjVmXHU3YjYxXHU3YjYzIiwxMCwiXHU3YjZmXHU3YjcwXHU3YjczXHU3Yjc0XHU3Yjc2XHU3Yjc4XHU3YjdhXHU3YjdjXHU3YjdkXHU3YjdmXHU3YjgxXHU3YjgyXHU3YjgzXHU3Yjg0XHU3Yjg2Iiw2LCJcdTdi'@; put 'OGVcdTdiOGYiXSxbImI5ODAiLCJcdTdiOTFcdTdiOTJcdTdiOTNcdTdiOTZcdTdiOThcdTdiOTlcdTdiOWFcdTdiOWJcdTdiOWVcdTdiOWZcdTdiYTBcdTdiYTNcdTdiYTRcdTdiYTVcdTdiYWVcdTdiYWZcdTdiYjBcdTdiYjJcdTdiYjNcdTdiYjVcdTdiYjZcdTdiYjdcdTdiYjkiLDcsIlx1'@; put 'N2JjMlx1N2JjM1x1N2JjNFx1NTdjMlx1ODAzZlx1Njg5N1x1NWRlNVx1NjUzYlx1NTI5Zlx1NjA2ZFx1OWY5YVx1NGY5Ylx1OGVhY1x1NTE2Y1x1NWJhYlx1NWYxM1x1NWRlOVx1NmM1ZVx1NjJmMVx1OGQyMVx1NTE3MVx1OTRhOVx1NTJmZVx1NmM5Zlx1ODJkZlx1NzJkN1x1NTdhMlx1Njc4'@; put 'NFx1OGQyZFx1NTkxZlx1OGY5Y1x1ODNjN1x1NTQ5NVx1N2I4ZFx1NGYzMFx1NmNiZFx1NWI2NFx1NTlkMVx1OWYxM1x1NTNlNFx1ODZjYVx1OWFhOFx1OGMzN1x1ODBhMVx1NjU0NVx1OTg3ZVx1NTZmYVx1OTZjN1x1NTIyZVx1NzRkY1x1NTI1MFx1NWJlMVx1NjMwMlx1ODkwMlx1NGU1Nlx1'@; put 'NjJkMFx1NjAyYVx1NjhmYVx1NTE3M1x1NWI5OFx1NTFhMFx1ODljMlx1N2JhMVx1OTk4Nlx1N2Y1MFx1NjBlZlx1NzA0Y1x1OGQyZlx1NTE0OVx1NWU3Zlx1OTAxYlx1NzQ3MFx1ODljNFx1NTcyZFx1Nzg0NVx1NWY1Mlx1OWY5Zlx1OTVmYVx1OGY2OFx1OWIzY1x1OGJlMVx1NzY3OFx1Njg0'@; put 'Mlx1NjdkY1x1OGRlYVx1OGQzNVx1NTIzZFx1OGY4YVx1NmVkYVx1NjhjZFx1OTUwNVx1OTBlZFx1NTZmZFx1Njc5Y1x1ODhmOVx1OGZjN1x1NTRjOCJdLFsiYmE0MCIsIlx1N2JjNVx1N2JjOFx1N2JjOVx1N2JjYVx1N2JjYlx1N2JjZFx1N2JjZVx1N2JjZlx1N2JkMFx1N2JkMlx1N2JkNCIs'@; put 'NCwiXHU3YmRiXHU3YmRjXHU3YmRlXHU3YmRmXHU3YmUwXHU3YmUyXHU3YmUzXHU3YmU0XHU3YmU3XHU3YmU4XHU3YmU5XHU3YmViXHU3YmVjXHU3YmVkXHU3YmVmXHU3YmYwXHU3YmYyIiw0LCJcdTdiZjhcdTdiZjlcdTdiZmFcdTdiZmJcdTdiZmRcdTdiZmYiLDcsIlx1N2MwOFx1N2MwOVx1'@; put 'N2MwYVx1N2MwZFx1N2MwZVx1N2MxMCIsNSwiXHU3YzE3XHU3YzE4XHU3YzE5Il0sWyJiYTgwIiwiXHU3YzFhIiw0LCJcdTdjMjAiLDUsIlx1N2MyOFx1N2MyOVx1N2MyYiIsMTIsIlx1N2MzOSIsNSwiXHU3YzQyXHU5YWI4XHU1YjY5XHU2ZDc3XHU2YzI2XHU0ZWE1XHU1YmIzXHU5YTg3XHU5'@; put 'MTYzXHU2MWE4XHU5MGFmXHU5N2U5XHU1NDJiXHU2ZGI1XHU1YmQyXHU1MWZkXHU1NThhXHU3ZjU1XHU3ZmYwXHU2NGJjXHU2MzRkXHU2NWYxXHU2MWJlXHU2MDhkXHU3MTBhXHU2YzU3XHU2YzQ5XHU1OTJmXHU2NzZkXHU4MjJhXHU1OGQ1XHU1NjhlXHU4YzZhXHU2YmViXHU5MGRkXHU1OTdk'@; put 'XHU4MDE3XHU1M2Y3XHU2ZDY5XHU1NDc1XHU1NTlkXHU4Mzc3XHU4M2NmXHU2ODM4XHU3OWJlXHU1NDhjXHU0ZjU1XHU1NDA4XHU3NmQyXHU4Yzg5XHU5NjAyXHU2Y2IzXHU2ZGI4XHU4ZDZiXHU4OTEwXHU5ZTY0XHU4ZDNhXHU1NjNmXHU5ZWQxXHU3NWQ1XHU1Zjg4XHU3MmUwXHU2MDY4XHU1'@; put 'NGZjXHU0ZWE4XHU2YTJhXHU4ODYxXHU2MDUyXHU4ZjcwXHU1NGM0XHU3MGQ4XHU4Njc5XHU5ZTNmXHU2ZDJhXHU1YjhmXHU1ZjE4XHU3ZWEyXHU1NTg5XHU0ZmFmXHU3MzM0XHU1NDNjXHU1MzlhXHU1MDE5XHU1NDBlXHU1NDdjXHU0ZTRlXHU1ZmZkXHU3NDVhXHU1OGY2XHU4NDZiXHU4MGUx'@; put 'XHU4Nzc0XHU3MmQwXHU3Y2NhXHU2ZTU2Il0sWyJiYjQwIiwiXHU3YzQzIiw5LCJcdTdjNGUiLDM2LCJcdTdjNzUiLDUsIlx1N2M3ZSIsOV0sWyJiYjgwIiwiXHU3Yzg4XHU3YzhhIiw2LCJcdTdjOTNcdTdjOTRcdTdjOTZcdTdjOTlcdTdjOWFcdTdjOWJcdTdjYTBcdTdjYTFcdTdjYTNcdTdj'@; put 'YTZcdTdjYTdcdTdjYThcdTdjYTlcdTdjYWJcdTdjYWNcdTdjYWRcdTdjYWZcdTdjYjBcdTdjYjQiLDQsIlx1N2NiYVx1N2NiYlx1NWYyN1x1ODY0ZVx1NTUyY1x1NjJhNFx1NGU5Mlx1NmNhYVx1NjIzN1x1ODJiMVx1NTRkN1x1NTM0ZVx1NzMzZVx1NmVkMVx1NzUzYlx1NTIxMlx1NTMxNlx1'@; put 'OGJkZFx1NjlkMFx1NWY4YVx1NjAwMFx1NmRlZVx1NTc0Zlx1NmIyMlx1NzNhZlx1Njg1M1x1OGZkOFx1N2YxM1x1NjM2Mlx1NjBhM1x1NTUyNFx1NzVlYVx1OGM2Mlx1NzExNVx1NmRhM1x1NWJhNlx1NWU3Ylx1ODM1Mlx1NjE0Y1x1OWVjNFx1NzhmYVx1ODc1N1x1N2MyN1x1NzY4N1x1NTFm'@; put 'MFx1NjBmNlx1NzE0Y1x1NjY0M1x1NWU0Y1x1NjA0ZFx1OGMwZVx1NzA3MFx1NjMyNVx1OGY4OVx1NWZiZFx1NjA2Mlx1ODZkNFx1NTZkZVx1NmJjMVx1NjA5NFx1NjE2N1x1NTM0OVx1NjBlMFx1NjY2Nlx1OGQzZlx1NzlmZFx1NGYxYVx1NzBlOVx1NmM0N1x1OGJiM1x1OGJmMlx1N2VkOFx1'@; put 'ODM2NFx1NjYwZlx1NWE1YVx1OWI0Mlx1NmQ1MVx1NmRmN1x1OGM0MVx1NmQzYlx1NGYxOVx1NzA2Ylx1ODNiN1x1NjIxNlx1NjBkMVx1OTcwZFx1OGQyN1x1Nzk3OFx1NTFmYlx1NTczZVx1NTdmYVx1NjczYVx1NzU3OFx1N2EzZFx1NzllZlx1N2I5NSJdLFsiYmM0MCIsIlx1N2NiZlx1N2Nj'@; put 'MFx1N2NjMlx1N2NjM1x1N2NjNFx1N2NjNlx1N2NjOVx1N2NjYlx1N2NjZSIsNiwiXHU3Y2Q4XHU3Y2RhXHU3Y2RiXHU3Y2RkXHU3Y2RlXHU3Y2UxIiw2LCJcdTdjZTkiLDUsIlx1N2NmMCIsNywiXHU3Y2Y5XHU3Y2ZhXHU3Y2ZjIiwxMywiXHU3ZDBiIiw1XSxbImJjODAiLCJcdTdkMTEiLDE0'@; put 'LCJcdTdkMjFcdTdkMjNcdTdkMjRcdTdkMjVcdTdkMjZcdTdkMjhcdTdkMjlcdTdkMmFcdTdkMmNcdTdkMmRcdTdkMmVcdTdkMzAiLDYsIlx1ODA4Y1x1OTk2NVx1OGZmOVx1NmZjMFx1OGJhNVx1OWUyMVx1NTllY1x1N2VlOVx1N2YwOVx1NTQwOVx1Njc4MVx1NjhkOFx1OGY5MVx1N2M0ZFx1'@; put 'OTZjNlx1NTNjYVx1NjAyNVx1NzViZVx1NmM3Mlx1NTM3M1x1NWFjOVx1N2VhN1x1NjMyNFx1NTFlMFx1ODEwYVx1NWRmMVx1ODRkZlx1NjI4MFx1NTE4MFx1NWI2M1x1NGYwZVx1Nzk2ZFx1NTI0Mlx1NjBiOFx1NmQ0ZVx1NWJjNFx1NWJjMlx1OGJhMVx1OGJiMFx1NjVlMlx1NWZjY1x1OTY0'@; put 'NVx1NTk5M1x1N2VlN1x1N2VhYVx1NTYwOVx1NjdiN1x1NTkzOVx1NGY3M1x1NWJiNlx1NTJhMFx1ODM1YVx1OTg4YVx1OGQzZVx1NzUzMlx1OTRiZVx1NTA0N1x1N2EzY1x1NGVmN1x1NjdiNlx1OWE3ZVx1NWFjMVx1NmI3Y1x1NzZkMVx1NTc1YVx1NWMxNlx1N2IzYVx1OTVmNFx1NzE0ZVx1'@; put 'NTE3Y1x1ODBhOVx1ODI3MFx1NTk3OFx1N2YwNFx1ODMyN1x1NjhjMFx1NjdlY1x1NzhiMVx1Nzg3N1x1NjJlM1x1NjM2MVx1N2I4MFx1NGZlZFx1NTI2YVx1NTFjZlx1ODM1MFx1NjlkYlx1OTI3NFx1OGRmNVx1OGQzMVx1ODljMVx1OTUyZVx1N2JhZFx1NGVmNiJdLFsiYmQ0MCIsIlx1N2Qz'@; put 'NyIsNTQsIlx1N2Q2ZiIsN10sWyJiZDgwIiwiXHU3ZDc4IiwzMiwiXHU1MDY1XHU4MjMwXHU1MjUxXHU5OTZmXHU2ZTEwXHU2ZTg1XHU2ZGE3XHU1ZWZhXHU1MGY1XHU1OWRjXHU1YzA2XHU2ZDQ2XHU2YzVmXHU3NTg2XHU4NDhiXHU2ODY4XHU1OTU2XHU4YmIyXHU1MzIwXHU5MTcxXHU5NjRk'@; put 'XHU4NTQ5XHU2OTEyXHU3OTAxXHU3MTI2XHU4MGY2XHU0ZWE0XHU5MGNhXHU2ZDQ3XHU5YTg0XHU1YTA3XHU1NmJjXHU2NDA1XHU5NGYwXHU3N2ViXHU0ZmE1XHU4MTFhXHU3MmUxXHU4OWQyXHU5OTdhXHU3ZjM0XHU3ZWRlXHU1MjdmXHU2NTU5XHU5MTc1XHU4ZjdmXHU4ZjgzXHU1M2ViXHU3'@; put 'YTk2XHU2M2VkXHU2M2E1XHU3Njg2XHU3OWY4XHU4ODU3XHU5NjM2XHU2MjJhXHU1MmFiXHU4MjgyXHU2ODU0XHU2NzcwXHU2Mzc3XHU3NzZiXHU3YWVkXHU2ZDAxXHU3ZWQzXHU4OWUzXHU1OWQwXHU2MjEyXHU4NWM5XHU4MmE1XHU3NTRjXHU1MDFmXHU0ZWNiXHU3NWE1XHU4YmViXHU1YzRh'@; put 'XHU1ZGZlXHU3YjRiXHU2NWE0XHU5MWQxXHU0ZWNhXHU2ZDI1XHU4OTVmXHU3ZDI3XHU5NTI2XHU0ZWM1XHU4YzI4XHU4ZmRiXHU5NzczXHU2NjRiXHU3OTgxXHU4ZmQxXHU3MGVjXHU2ZDc4Il0sWyJiZTQwIiwiXHU3ZDk5IiwxMiwiXHU3ZGE3Iiw2LCJcdTdkYWYiLDQyXSxbImJlODAiLCJc'@; put 'dTdkZGEiLDMyLCJcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdjYmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZcdTk4ODhcdTk3NTlcdTU4ODNcdTY1NmNcdTk1NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdh'@; put 'ZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZcdTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJcdTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0OGVcdTVjMzFcdTc1OWFcdTk3YTBcdTYyZDhcdTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2Fc'@; put 'dTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYzNmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdcdTYzNTBcdTllNDNcdTVhMWZcdTUwMjZcdTc3MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYy'@; put 'ODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRcdTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJcdTVjZmIiXSxbImJmNDAiLCJcdTdkZmIiLDYyXSxbImJmODAiLCJcdTdlM2FcdTdlM2MiLDQsIlx1N2U0MiIsNCwiXHU3ZTQ4IiwyMSwiXHU0ZmNhXHU3YWUz'@; put 'XHU2ZDVhXHU5MGUxXHU5YThmXHU1NTgwXHU1NDk2XHU1MzYxXHU1NGFmXHU1ZjAwXHU2M2U5XHU2OTc3XHU1MWVmXHU2MTY4XHU1MjBhXHU1ODJhXHU1MmQ4XHU1NzRlXHU3ODBkXHU3NzBiXHU1ZWI3XHU2MTc3XHU3Y2UwXHU2MjViXHU2Mjk3XHU0ZWEyXHU3MDk1XHU4MDAzXHU2MmY3XHU3'@; put 'MGU0XHU5NzYwXHU1Nzc3XHU4MmRiXHU2N2VmXHU2OGY1XHU3OGQ1XHU5ODk3XHU3OWQxXHU1OGYzXHU1NGIzXHU1M2VmXHU2ZTM0XHU1MTRiXHU1MjNiXHU1YmEyXHU4YmZlXHU4MGFmXHU1NTQzXHU1N2E2XHU2MDczXHU1NzUxXHU1NDJkXHU3YTdhXHU2MDUwXHU1YjU0XHU2M2E3XHU2MmEw'@; put 'XHU1M2UzXHU2MjYzXHU1YmM3XHU2N2FmXHU1NGVkXHU3YTlmXHU4MmU2XHU5MTc3XHU1ZTkzXHU4OGU0XHU1OTM4XHU1N2FlXHU2MzBlXHU4ZGU4XHU4MGVmXHU1NzU3XHU3Yjc3XHU0ZmE5XHU1ZmViXHU1YmJkXHU2YjNlXHU1MzIxXHU3YjUwXHU3MmMyXHU2ODQ2XHU3N2ZmXHU3NzM2XHU2'@; put 'NWY3XHU1MWI1XHU0ZThmXHU3NmQ0XHU1Y2JmXHU3YWE1XHU4NDc1XHU1OTRlXHU5YjQxXHU1MDgwIl0sWyJjMDQwIiwiXHU3ZTVlIiwzNSwiXHU3ZTgzIiwyMywiXHU3ZTljXHU3ZTlkXHU3ZTllIl0sWyJjMDgwIiwiXHU3ZWFlXHU3ZWI0XHU3ZWJiXHU3ZWJjXHU3ZWQ2XHU3ZWU0XHU3ZWVj'@; put 'XHU3ZWY5XHU3ZjBhXHU3ZjEwXHU3ZjFlXHU3ZjM3XHU3ZjM5XHU3ZjNiIiw2LCJcdTdmNDNcdTdmNDYiLDksIlx1N2Y1Mlx1N2Y1M1x1OTk4OFx1NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1NjI2OVx1NWVkM1x1OTYxNFx1NTc4M1x1NjJjOVx1NTU4N1x1ODcy'@; put 'MVx1ODE0YVx1OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJlNlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVlNVx1NzQwNVx1Njk5NFx1NzJmY1x1NWVjYVx1OTBjZVx1NjcxN1x1'@; put 'NmQ2YVx1NjM1ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1N2M3Ylx1NmNlYVx1NjhmMVx1Njk1ZVx1NTFiN1x1NTM5OFx1Njhh'@; put 'OFx1NzI4MVx1OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNhNFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQwZlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIyOVx1NTA4OFx1NGY4Ylx1NGZkMCJdLFsiYzE0MCIsIlx1N2Y1Nlx1'@; put 'N2Y1OVx1N2Y1Ylx1N2Y1Y1x1N2Y1ZFx1N2Y1ZVx1N2Y2MFx1N2Y2MyIsNCwiXHU3ZjZiXHU3ZjZjXHU3ZjZkXHU3ZjZmXHU3ZjcwXHU3ZjczXHU3Zjc1XHU3Zjc2XHU3Zjc3XHU3Zjc4XHU3ZjdhXHU3ZjdiXHU3ZjdjXHU3ZjdkXHU3ZjdmXHU3ZjgwXHU3ZjgyIiw3LCJcdTdmOGJcdTdmOGRc'@; put 'dTdmOGYiLDQsIlx1N2Y5NSIsNCwiXHU3ZjliXHU3ZjljXHU3ZmEwXHU3ZmEyXHU3ZmEzXHU3ZmE1XHU3ZmE2XHU3ZmE4Iiw2LCJcdTdmYjEiXSxbImMxODAiLCJcdTdmYjMiLDQsIlx1N2ZiYVx1N2ZiYlx1N2ZiZVx1N2ZjMFx1N2ZjMlx1N2ZjM1x1N2ZjNFx1N2ZjNlx1N2ZjN1x1N2ZjOFx1'@; put 'N2ZjOVx1N2ZjYlx1N2ZjZFx1N2ZjZiIsNCwiXHU3ZmQ2XHU3ZmQ3XHU3ZmQ5Iiw1LCJcdTdmZTJcdTdmZTNcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgwNTRcdTgzYjJcdThmZGVcdTk1NzBcdTVlYzlcdTYwMWNcdTZkOWZcdTVlMThc'@; put 'dTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdjYjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2VcdTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFcdTc1OTdcdTcxY2VcdTViZTVcdThmYmRcdTZmNjZcdTRlODZcdTY0ODJcdTk1'@; put 'NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdcdTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZkY2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTczYjJcdTgzZjFcdTk2ZjZcdTlmODRcdTk0YzNcdTRmMzZcdTdmOWFcdTUxY2Nc'@; put 'dTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFcdTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlcdTdiM2NcdTdhYmYiXSxbImMyNDAiLCJcdTdmZTRcdTdmZTdcdTdmZThcdTdm'@; put 'ZWFcdTdmZWJcdTdmZWNcdTdmZWRcdTdmZWZcdTdmZjJcdTdmZjQiLDYsIlx1N2ZmZFx1N2ZmZVx1N2ZmZlx1ODAwMlx1ODAwN1x1ODAwOFx1ODAwOVx1ODAwYVx1ODAwZVx1ODAwZlx1ODAxMVx1ODAxM1x1ODAxYVx1ODAxYlx1ODAxZFx1ODAxZVx1ODAxZlx1ODAyMVx1ODAyM1x1ODAyNFx1'@; put 'ODAyYiIsNSwiXHU4MDMyXHU4MDM0XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQxXHU4MDQ0XHU4MDQ1XHU4MDQ3XHU4MDQ4XHU4MDQ5XHU4MDRlXHU4MDRmXHU4MDUwXHU4MDUxXHU4MDUzXHU4MDU1XHU4MDU2XHU4MDU3Il0sWyJjMjgwIiwiXHU4MDU5XHU4MDViIiwxMywi'@; put 'XHU4MDZiIiw1LCJcdTgwNzIiLDExLCJcdTk2ODZcdTU3ODRcdTYyZTJcdTk2NDdcdTY5N2NcdTVhMDRcdTY0MDJcdTdiZDNcdTZmMGZcdTk2NGJcdTgyYTZcdTUzNjJcdTk4ODVcdTVlOTBcdTcwODlcdTYzYjNcdTUzNjRcdTg2NGZcdTljODFcdTllOTNcdTc4OGNcdTk3MzJcdThkZWZcdThk'@; put 'NDJcdTllN2ZcdTZmNWVcdTc5ODRcdTVmNTVcdTk2NDZcdTYyMmVcdTlhNzRcdTU0MTVcdTk0ZGRcdTRmYTNcdTY1YzVcdTVjNjVcdTVjNjFcdTdmMTVcdTg2NTFcdTZjMmZcdTVmOGJcdTczODdcdTZlZTRcdTdlZmZcdTVjZTZcdTYzMWJcdTViNmFcdTZlZTZcdTUzNzVcdTRlNzFcdTYzYTBc'@; put 'dTc1NjVcdTYyYTFcdThmNmVcdTRmMjZcdTRlZDFcdTZjYTZcdTdlYjZcdThiYmFcdTg0MWRcdTg3YmFcdTdmNTdcdTkwM2JcdTk1MjNcdTdiYTlcdTlhYTFcdTg4ZjhcdTg0M2RcdTZkMWJcdTlhODZcdTdlZGNcdTU5ODhcdTllYmJcdTczOWJcdTc4MDFcdTg2ODJcdTlhNmNcdTlhODJcdTU2'@; put 'MWJcdTU0MTdcdTU3Y2JcdTRlNzBcdTllYTZcdTUzNTZcdThmYzhcdTgxMDlcdTc3OTJcdTk5OTJcdTg2ZWVcdTZlZTFcdTg1MTNcdTY2ZmNcdTYxNjJcdTZmMmIiXSxbImMzNDAiLCJcdTgwN2VcdTgwODFcdTgwODJcdTgwODVcdTgwODhcdTgwOGFcdTgwOGQiLDUsIlx1ODA5NFx1ODA5NVx1'@; put 'ODA5N1x1ODA5OVx1ODA5ZVx1ODBhM1x1ODBhNlx1ODBhN1x1ODBhOFx1ODBhY1x1ODBiMFx1ODBiM1x1ODBiNVx1ODBiNlx1ODBiOFx1ODBiOVx1ODBiYlx1ODBjNVx1ODBjNyIsNCwiXHU4MGNmIiw2LCJcdTgwZDhcdTgwZGZcdTgwZTBcdTgwZTJcdTgwZTNcdTgwZTZcdTgwZWVcdTgwZjVc'@; put 'dTgwZjdcdTgwZjlcdTgwZmJcdTgwZmVcdTgwZmZcdTgxMDBcdTgxMDFcdTgxMDNcdTgxMDRcdTgxMDVcdTgxMDdcdTgxMDhcdTgxMGIiXSxbImMzODAiLCJcdTgxMGNcdTgxMTVcdTgxMTdcdTgxMTlcdTgxMWJcdTgxMWNcdTgxMWRcdTgxMWYiLDEyLCJcdTgxMmRcdTgxMmVcdTgxMzBcdTgx'@; put 'MzNcdTgxMzRcdTgxMzVcdTgxMzdcdTgxMzkiLDQsIlx1ODEzZlx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1NWZkOVx1ODNiZFx1NzMyYlx1ODMwNVx1OTUxYVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMwMlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQzOFx1NGU0OFx1NzNhYlx1'@; put 'Njc5YVx1Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYyN1x1NWJkMFx1NTliOVx1NWE5YVx1OTVlOFx1OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1NWI1Zlx1NzcyZlx1OTE5'@; put 'YVx1OTc2MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1NWU0Mlx1NjhjOVx1NzcyMFx1N2VmNVx1NTE5NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVkMFx1NzlkMlx1NmUzYVx1'@; put 'NWU5OVx1NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5Zlx1OWUyM1x1OTRlZFx1NTQwZFx1NTQ3ZFx1OGMyY1x1NjQ3OCJdLFsiYzQ0MCIsIlx1ODE0MCIsNSwiXHU4MTQ3XHU4MTQ5XHU4MTRkXHU4MTRlXHU4MTRmXHU4MTUy'@; put 'XHU4MTU2XHU4MTU3XHU4MTU4XHU4MTViIiw0LCJcdTgxNjFcdTgxNjJcdTgxNjNcdTgxNjRcdTgxNjZcdTgxNjhcdTgxNmFcdTgxNmJcdTgxNmNcdTgxNmZcdTgxNzJcdTgxNzNcdTgxNzVcdTgxNzZcdTgxNzdcdTgxNzhcdTgxODFcdTgxODMiLDQsIlx1ODE4OVx1ODE4Ylx1ODE4Y1x1ODE4'@; put 'ZFx1ODE4ZVx1ODE5MFx1ODE5MiIsNSwiXHU4MTk5XHU4MTlhXHU4MTllIiw0LCJcdTgxYTRcdTgxYTUiXSxbImM0ODAiLCJcdTgxYTdcdTgxYTlcdTgxYWIiLDcsIlx1ODFiNCIsNSwiXHU4MWJjXHU4MWJkXHU4MWJlXHU4MWJmXHU4MWM0XHU4MWM1XHU4MWM3XHU4MWM4XHU4MWM5XHU4MWNi'@; put 'XHU4MWNkIiw2LCJcdTY0NzlcdTg2MTFcdTZhMjFcdTgxOWNcdTc4ZThcdTY0NjlcdTliNTRcdTYyYjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBcdTYyYzdcdTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2'@; put 'YWVcdTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2ZWVcdTc3NjZcdTcyNjdcdTdhNDZcdTYyZmZcdTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUzNTdcdTc1MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2Nc'@; put 'dTk1ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVcdTVhZTlcdTgwZmRcdTU5YWVcdTk3MTNcdTUwMmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRcdTc4YmVcdTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTll'@; put 'MWZcdTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1NmVcdTk1NGFcdTk1NGRcdTZkODVcdTYwYThcdTY3ZTBcdTcyZGVcdTUxZGRcdTViODEiXSxbImM1NDAiLCJcdTgxZDQiLDE0LCJcdTgxZTRcdTgxZTVcdTgxZTZcdTgxZThcdTgxZTlcdTgxZWJcdTgxZWUiLDQsIlx1ODFmNSIsNSwiXHU4'@; put 'MWZkXHU4MWZmXHU4MjAzXHU4MjA3Iiw0LCJcdTgyMGVcdTgyMGZcdTgyMTFcdTgyMTNcdTgyMTUiLDUsIlx1ODIxZFx1ODIyMFx1ODIyNFx1ODIyNVx1ODIyNlx1ODIyN1x1ODIyOVx1ODIyZVx1ODIzMlx1ODIzYVx1ODIzY1x1ODIzZFx1ODIzZiJdLFsiYzU4MCIsIlx1ODI0MFx1ODI0MVx1'@; put 'ODI0Mlx1ODI0M1x1ODI0NVx1ODI0Nlx1ODI0OFx1ODI0YVx1ODI0Y1x1ODI0ZFx1ODI0ZVx1ODI1MCIsNywiXHU4MjU5XHU4MjViXHU4MjVjXHU4MjVkXHU4MjVlXHU4MjYwIiw3LCJcdTgyNjlcdTYyZTdcdTZjZGVcdTcyNWJcdTYyNmRcdTk0YWVcdTdlYmRcdTgxMTNcdTZkNTNcdTUxOWNc'@; put 'dTVmMDRcdTU5NzRcdTUyYWFcdTYwMTJcdTU5NzNcdTY2OTZcdTg2NTBcdTc1OWZcdTYzMmFcdTYxZTZcdTdjZWZcdThiZmFcdTU0ZTZcdTZiMjdcdTllMjVcdTZiYjRcdTg1ZDVcdTU0NTVcdTUwNzZcdTZjYTRcdTU1NmFcdThkYjRcdTcyMmNcdTVlMTVcdTYwMTVcdTc0MzZcdTYyY2RcdTYz'@; put 'OTJcdTcyNGNcdTVmOThcdTZlNDNcdTZkM2VcdTY1MDBcdTZmNThcdTc2ZDhcdTc4ZDBcdTc2ZmNcdTc1NTRcdTUyMjRcdTUzZGJcdTRlNTNcdTVlOWVcdTY1YzFcdTgwMmFcdTgwZDZcdTYyOWJcdTU0ODZcdTUyMjhcdTcwYWVcdTg4OGRcdThkZDFcdTZjZTFcdTU0NzhcdTgwZGFcdTU3Zjlc'@; put 'dTg4ZjRcdThkNTRcdTk2NmFcdTkxNGRcdTRmNjlcdTZjOWJcdTU1YjdcdTc2YzZcdTc4MzBcdTYyYThcdTcwZjlcdTZmOGVcdTVmNmRcdTg0ZWNcdTY4ZGFcdTc4N2NcdTdiZjdcdTgxYThcdTY3MGJcdTllNGZcdTYzNjdcdTc4YjBcdTU3NmZcdTc4MTJcdTk3MzlcdTYyNzlcdTYyYWJcdTUy'@; put 'ODhcdTc0MzVcdTZiZDciXSxbImM2NDAiLCJcdTgyNmFcdTgyNmJcdTgyNmNcdTgyNmRcdTgyNzFcdTgyNzVcdTgyNzZcdTgyNzdcdTgyNzhcdTgyN2JcdTgyN2NcdTgyODBcdTgyODFcdTgyODNcdTgyODVcdTgyODZcdTgyODdcdTgyODlcdTgyOGNcdTgyOTBcdTgyOTNcdTgyOTRcdTgyOTVc'@; put 'dTgyOTZcdTgyOWFcdTgyOWJcdTgyOWVcdTgyYTBcdTgyYTJcdTgyYTNcdTgyYTdcdTgyYjJcdTgyYjVcdTgyYjZcdTgyYmFcdTgyYmJcdTgyYmNcdTgyYmZcdTgyYzBcdTgyYzJcdTgyYzNcdTgyYzVcdTgyYzZcdTgyYzlcdTgyZDBcdTgyZDZcdTgyZDlcdTgyZGFcdTgyZGRcdTgyZTJcdTgy'@; put 'ZTdcdTgyZThcdTgyZTlcdTgyZWFcdTgyZWNcdTgyZWRcdTgyZWVcdTgyZjBcdTgyZjJcdTgyZjNcdTgyZjVcdTgyZjZcdTgyZjgiXSxbImM2ODAiLCJcdTgyZmFcdTgyZmMiLDQsIlx1ODMwYVx1ODMwYlx1ODMwZFx1ODMxMFx1ODMxMlx1ODMxM1x1ODMxNlx1ODMxOFx1ODMxOVx1ODMxZCIs'@; put 'OSwiXHU4MzI5XHU4MzJhXHU4MzJlXHU4MzMwXHU4MzMyXHU4MzM3XHU4MzNiXHU4MzNkXHU1NTY0XHU4MTNlXHU3NWIyXHU3NmFlXHU1MzM5XHU3NWRlXHU1MGZiXHU1YzQxXHU4YjZjXHU3YmM3XHU1MDRmXHU3MjQ3XHU5YTk3XHU5OGQ4XHU2ZjAyXHU3NGUyXHU3OTY4XHU2NDg3XHU3N2E1'@; put 'XHU2MmZjXHU5ODkxXHU4ZDJiXHU1NGMxXHU4MDU4XHU0ZTUyXHU1NzZhXHU4MmY5XHU4NDBkXHU1ZTczXHU1MWVkXHU3NGY2XHU4YmM0XHU1YzRmXHU1NzYxXHU2Y2ZjXHU5ODg3XHU1YTQ2XHU3ODM0XHU5YjQ0XHU4ZmViXHU3Yzk1XHU1MjU2XHU2MjUxXHU5NGZhXHU0ZWM2XHU4Mzg2XHU4'@; put 'NDYxXHU4M2U5XHU4NGIyXHU1N2Q0XHU2NzM0XHU1NzAzXHU2NjZlXHU2ZDY2XHU4YzMxXHU2NmRkXHU3MDExXHU2NzFmXHU2YjNhXHU2ODE2XHU2MjFhXHU1OWJiXHU0ZTAzXHU1MWM0XHU2ZjA2XHU2N2QyXHU2YzhmXHU1MTc2XHU2OGNiXHU1OTQ3XHU2YjY3XHU3NTY2XHU1ZDBlXHU4MTEw'@; put 'XHU5ZjUwXHU2NWQ3XHU3OTQ4XHU3OTQxXHU5YTkxXHU4ZDc3XHU1YzgyXHU0ZTVlXHU0ZjAxXHU1NDJmXHU1OTUxXHU3ODBjXHU1NjY4XHU2YzE0XHU4ZmM0XHU1ZjAzXHU2YzdkXHU2Y2UzXHU4YmFiXHU2MzkwIl0sWyJjNzQwIiwiXHU4MzNlXHU4MzNmXHU4MzQxXHU4MzQyXHU4MzQ0XHU4'@; put 'MzQ1XHU4MzQ4XHU4MzRhIiw0LCJcdTgzNTNcdTgzNTUiLDQsIlx1ODM1ZFx1ODM2Mlx1ODM3MCIsNiwiXHU4Mzc5XHU4MzdhXHU4MzdlIiw2LCJcdTgzODdcdTgzODhcdTgzOGFcdTgzOGJcdTgzOGNcdTgzOGRcdTgzOGZcdTgzOTBcdTgzOTFcdTgzOTRcdTgzOTVcdTgzOTZcdTgzOTdcdTgz'@; put 'OTlcdTgzOWFcdTgzOWRcdTgzOWZcdTgzYTEiLDYsIlx1ODNhY1x1ODNhZFx1ODNhZSJdLFsiYzc4MCIsIlx1ODNhZlx1ODNiNVx1ODNiYlx1ODNiZVx1ODNiZlx1ODNjMlx1ODNjM1x1ODNjNFx1ODNjNlx1ODNjOFx1ODNjOVx1ODNjYlx1ODNjZFx1ODNjZVx1ODNkMFx1ODNkMVx1ODNkMlx1'@; put 'ODNkM1x1ODNkNVx1ODNkN1x1ODNkOVx1ODNkYVx1ODNkYlx1ODNkZVx1ODNlMlx1ODNlM1x1ODNlNFx1ODNlNlx1ODNlN1x1ODNlOFx1ODNlYlx1ODNlY1x1ODNlZFx1NjA3MFx1NmQzZFx1NzI3NVx1NjI2Nlx1OTQ4ZVx1OTRjNVx1NTM0M1x1OGZjMVx1N2I3ZVx1NGVkZlx1OGMyNlx1NGU3'@; put 'ZVx1OWVkNFx1OTRiMVx1OTRiM1x1NTI0ZFx1NmY1Y1x1OTA2M1x1NmQ0NVx1OGMzNFx1NTgxMVx1NWQ0Y1x1NmIyMFx1NmI0OVx1NjdhYVx1NTQ1Ylx1ODE1NFx1N2Y4Y1x1NTg5OVx1ODUzN1x1NWYzYVx1NjJhMlx1NmE0N1x1OTUzOVx1NjU3Mlx1NjA4NFx1Njg2NVx1NzdhN1x1NGU1NFx1'@; put 'NGZhOFx1NWRlN1x1OTc5OFx1NjRhY1x1N2ZkOFx1NWNlZFx1NGZjZlx1N2E4ZFx1NTIwN1x1ODMwNFx1NGUxNFx1NjAyZlx1N2E4M1x1OTRhNlx1NGZiNVx1NGViMlx1NzllNlx1NzQzNFx1NTJlNFx1ODJiOVx1NjRkMlx1NzliZFx1NWJkZFx1NmM4MVx1OTc1Mlx1OGY3Ylx1NmMyMlx1NTAz'@; put 'ZVx1NTM3Zlx1NmUwNVx1NjRjZVx1NjY3NFx1NmMzMFx1NjBjNVx1OTg3N1x1OGJmN1x1NWU4Nlx1NzQzY1x1N2E3N1x1NzljYlx1NGUxOFx1OTBiMVx1NzQwM1x1NmM0Mlx1NTZkYVx1OTE0Ylx1NmNjNVx1OGQ4Ylx1NTMzYVx1ODZjNlx1NjZmMlx1OGVhZlx1NWM0OFx1OWE3MVx1NmUyMCJd'@; put 'LFsiYzg0MCIsIlx1ODNlZVx1ODNlZlx1ODNmMyIsNCwiXHU4M2ZhXHU4M2ZiXHU4M2ZjXHU4M2ZlXHU4M2ZmXHU4NDAwXHU4NDAyXHU4NDA1XHU4NDA3XHU4NDA4XHU4NDA5XHU4NDBhXHU4NDEwXHU4NDEyIiw1LCJcdTg0MTlcdTg0MWFcdTg0MWJcdTg0MWUiLDUsIlx1ODQyOSIsNywiXHU4'@; put 'NDMyIiw1LCJcdTg0MzlcdTg0M2FcdTg0M2JcdTg0M2UiLDcsIlx1ODQ0N1x1ODQ0OFx1ODQ0OSJdLFsiYzg4MCIsIlx1ODQ0YSIsNiwiXHU4NDUyIiw0LCJcdTg0NThcdTg0NWRcdTg0NWVcdTg0NWZcdTg0NjBcdTg0NjJcdTg0NjQiLDQsIlx1ODQ2YVx1ODQ2ZVx1ODQ2Zlx1ODQ3MFx1ODQ3'@; put 'Mlx1ODQ3NFx1ODQ3N1x1ODQ3OVx1ODQ3Ylx1ODQ3Y1x1NTNkNlx1NWEzNlx1OWY4Ylx1OGRhM1x1NTNiYlx1NTcwOFx1OThhN1x1Njc0M1x1OTE5Ylx1NmNjOVx1NTE2OFx1NzVjYVx1NjJmM1x1NzJhY1x1NTIzOFx1NTI5ZFx1N2YzYVx1NzA5NFx1NzYzOFx1NTM3NFx1OWU0YVx1NjliN1x1'@; put 'Nzg2ZVx1OTZjMFx1ODhkOVx1N2ZhNFx1NzEzNlx1NzFjM1x1NTE4OVx1NjdkM1x1NzRlNFx1NThlNFx1NjUxOFx1NTZiN1x1OGJhOVx1OTk3Nlx1NjI3MFx1N2VkNVx1NjBmOVx1NzBlZFx1NThlY1x1NGVjMVx1NGViYVx1NWZjZFx1OTdlN1x1NGVmYlx1OGJhNFx1NTIwM1x1NTk4YVx1N2Vh'@; put 'Ylx1NjI1NFx1NGVjZFx1NjVlNVx1NjIwZVx1ODMzOFx1ODRjOVx1ODM2M1x1ODc4ZFx1NzE5NFx1NmViNlx1NWJiOVx1N2VkMlx1NTE5N1x1NjNjOVx1NjdkNFx1ODA4OVx1ODMzOVx1ODgxNVx1NTExMlx1NWI3YVx1NTk4Mlx1OGZiMVx1NGU3M1x1NmM1ZFx1NTE2NVx1ODkyNVx1OGY2Zlx1'@; put 'OTYyZVx1ODU0YVx1NzQ1ZVx1OTUxMFx1OTVmMFx1NmRhNlx1ODJlNVx1NWYzMVx1NjQ5Mlx1NmQxMlx1ODQyOFx1ODE2ZVx1OWNjM1x1NTg1ZVx1OGQ1Ylx1NGUwOVx1NTNjMSJdLFsiYzk0MCIsIlx1ODQ3ZCIsNCwiXHU4NDgzXHU4NDg0XHU4NDg1XHU4NDg2XHU4NDhhXHU4NDhkXHU4NDhm'@; put 'Iiw3LCJcdTg0OThcdTg0OWFcdTg0OWJcdTg0OWRcdTg0OWVcdTg0OWZcdTg0YTBcdTg0YTIiLDEyLCJcdTg0YjBcdTg0YjFcdTg0YjNcdTg0YjVcdTg0YjZcdTg0YjdcdTg0YmJcdTg0YmNcdTg0YmVcdTg0YzBcdTg0YzJcdTg0YzNcdTg0YzVcdTg0YzZcdTg0YzdcdTg0YzhcdTg0Y2JcdTg0'@; put 'Y2NcdTg0Y2VcdTg0Y2ZcdTg0ZDJcdTg0ZDRcdTg0ZDVcdTg0ZDciXSxbImM5ODAiLCJcdTg0ZDgiLDQsIlx1ODRkZVx1ODRlMVx1ODRlMlx1ODRlNFx1ODRlNyIsNCwiXHU4NGVkXHU4NGVlXHU4NGVmXHU4NGYxIiwxMCwiXHU4NGZkXHU4NGZlXHU4NTAwXHU4NTAxXHU4NTAyXHU0ZjFlXHU2'@; put 'NTYzXHU2ODUxXHU1NWQzXHU0ZTI3XHU2NDE0XHU5YTlhXHU2MjZiXHU1YWMyXHU3NDVmXHU4MjcyXHU2ZGE5XHU2OGVlXHU1MGU3XHU4MzhlXHU3ODAyXHU2NzQwXHU1MjM5XHU2Yzk5XHU3ZWIxXHU1MGJiXHU1NTY1XHU3MTVlXHU3YjViXHU2NjUyXHU3M2NhXHU4MmViXHU2NzQ5XHU1Yzcx'@; put 'XHU1MjIwXHU3MTdkXHU4ODZiXHU5NWVhXHU5NjU1XHU2NGM1XHU4ZDYxXHU4MWIzXHU1NTg0XHU2YzU1XHU2MjQ3XHU3ZjJlXHU1ODkyXHU0ZjI0XHU1NTQ2XHU4ZDRmXHU2NjRjXHU0ZTBhXHU1YzFhXHU4OGYzXHU2OGEyXHU2MzRlXHU3YTBkXHU3MGU3XHU4MjhkXHU1MmZhXHU5N2Y2XHU1'@; put 'YzExXHU1NGU4XHU5MGI1XHU3ZWNkXHU1OTYyXHU4ZDRhXHU4NmM3XHU4MjBjXHU4MjBkXHU4ZDY2XHU2NDQ0XHU1YzA0XHU2MTUxXHU2ZDg5XHU3OTNlXHU4YmJlXHU3ODM3XHU3NTMzXHU1NDdiXHU0ZjM4XHU4ZWFiXHU2ZGYxXHU1YTIwXHU3ZWM1XHU3OTVlXHU2Yzg4XHU1YmExXHU1YTc2'@; put 'XHU3NTFhXHU4MGJlXHU2MTRlXHU2ZTE3XHU1OGYwXHU3NTFmXHU3NTI1XHU3MjcyXHU1MzQ3XHU3ZWYzIl0sWyJjYTQwIiwiXHU4NTAzIiw4LCJcdTg1MGRcdTg1MGVcdTg1MGZcdTg1MTBcdTg1MTJcdTg1MTRcdTg1MTVcdTg1MTZcdTg1MThcdTg1MTlcdTg1MWJcdTg1MWNcdTg1MWRcdTg1'@; put 'MWVcdTg1MjBcdTg1MjIiLDgsIlx1ODUyZCIsOSwiXHU4NTNlIiw0LCJcdTg1NDRcdTg1NDVcdTg1NDZcdTg1NDdcdTg1NGIiLDEwXSxbImNhODAiLCJcdTg1NTdcdTg1NThcdTg1NWFcdTg1NWJcdTg1NWNcdTg1NWRcdTg1NWYiLDQsIlx1ODU2NVx1ODU2Nlx1ODU2N1x1ODU2OSIsOCwiXHU4'@; put 'NTczXHU4NTc1XHU4NTc2XHU4NTc3XHU4NTc4XHU4NTdjXHU4NTdkXHU4NTdmXHU4NTgwXHU4NTgxXHU3NzAxXHU3NmRiXHU1MjY5XHU4MGRjXHU1NzIzXHU1ZTA4XHU1OTMxXHU3MmVlXHU2NWJkXHU2ZTdmXHU4YmQ3XHU1YzM4XHU4NjcxXHU1MzQxXHU3N2YzXHU2MmZlXHU2NWY2XHU0ZWMw'@; put 'XHU5OGRmXHU4NjgwXHU1YjllXHU4YmM2XHU1M2YyXHU3N2UyXHU0ZjdmXHU1YzRlXHU5YTc2XHU1OWNiXHU1ZjBmXHU3OTNhXHU1OGViXHU0ZTE2XHU2N2ZmXHU0ZThiXHU2MmVkXHU4YTkzXHU5MDFkXHU1MmJmXHU2NjJmXHU1NWRjXHU1NjZjXHU5MDAyXHU0ZWQ1XHU0ZjhkXHU5MWNhXHU5'@; put 'OTcwXHU2YzBmXHU1ZTAyXHU2MDQzXHU1YmE0XHU4OWM2XHU4YmQ1XHU2NTM2XHU2MjRiXHU5OTk2XHU1Yjg4XHU1YmZmXHU2Mzg4XHU1NTJlXHU1M2Q3XHU3NjI2XHU1MTdkXHU4NTJjXHU2N2EyXHU2OGIzXHU2YjhhXHU2MjkyXHU4ZjkzXHU1M2Q0XHU4MjEyXHU2ZGQxXHU3NThmXHU0ZTY2'@; put 'XHU4ZDRlXHU1YjcwXHU3MTlmXHU4NWFmXHU2NjkxXHU2NmQ5XHU3ZjcyXHU4NzAwXHU5ZWNkXHU5ZjIwXHU1YzVlXHU2NzJmXHU4ZmYwXHU2ODExXHU2NzVmXHU2MjBkXHU3YWQ2XHU1ODg1XHU1ZWI2XHU2NTcwXHU2ZjMxIl0sWyJjYjQwIiwiXHU4NTgyXHU4NTgzXHU4NTg2XHU4NTg4Iiw2'@; put 'LCJcdTg1OTAiLDEwLCJcdTg1OWQiLDYsIlx1ODVhNVx1ODVhNlx1ODVhN1x1ODVhOVx1ODVhYlx1ODVhY1x1ODVhZFx1ODViMSIsNSwiXHU4NWI4XHU4NWJhIiw2LCJcdTg1YzIiLDYsIlx1ODVjYSIsNCwiXHU4NWQxXHU4NWQyIl0sWyJjYjgwIiwiXHU4NWQ0XHU4NWQ2Iiw1LCJcdTg1ZGQi'@; put 'LDYsIlx1ODVlNVx1ODVlNlx1ODVlN1x1ODVlOFx1ODVlYSIsMTQsIlx1NjA1NVx1NTIzN1x1ODAwZFx1NjQ1NFx1ODg3MFx1NzUyOVx1NWUwNVx1NjgxM1x1NjJmNFx1OTcxY1x1NTNjY1x1NzIzZFx1OGMwMVx1NmMzNFx1Nzc2MVx1N2EwZVx1NTQyZVx1NzdhY1x1OTg3YVx1ODIxY1x1OGJm'@; put 'NFx1Nzg1NVx1NjcxNFx1NzBjMVx1NjVhZlx1NjQ5NVx1NTYzNlx1NjAxZFx1NzljMVx1NTNmOFx1NGUxZFx1NmI3Ylx1ODA4Nlx1NWJmYVx1NTVlM1x1NTZkYlx1NGYzYVx1NGYzY1x1OTk3Mlx1NWRmM1x1Njc3ZVx1ODAzOFx1NjAwMlx1OTg4Mlx1OTAwMVx1NWI4Ylx1OGJiY1x1OGJmNVx1'@; put 'NjQxY1x1ODI1OFx1NjRkZVx1NTVmZFx1ODJjZlx1OTE2NVx1NGZkN1x1N2QyMFx1OTAxZlx1N2M5Zlx1NTBmM1x1NTg1MVx1NmVhZlx1NWJiZlx1OGJjOVx1ODA4M1x1OTE3OFx1ODQ5Y1x1N2I5N1x1ODY3ZFx1OTY4Ylx1OTY4Zlx1N2VlNVx1OWFkM1x1Nzg4ZVx1NWM4MVx1N2E1N1x1OTA0'@; put 'Mlx1OTZhN1x1Nzk1Zlx1NWI1OVx1NjM1Zlx1N2IwYlx1ODRkMVx1NjhhZFx1NTUwNlx1N2YyOVx1NzQxMFx1N2QyMlx1OTUwMVx1NjI0MFx1NTg0Y1x1NGVkNlx1NWI4M1x1NTk3OVx1NTg1NCJdLFsiY2M0MCIsIlx1ODVmOVx1ODVmYVx1ODVmY1x1ODVmZFx1ODVmZVx1ODYwMCIsNCwiXHU4'@; put 'NjA2IiwxMCwiXHU4NjEyXHU4NjEzXHU4NjE0XHU4NjE1XHU4NjE3IiwxNSwiXHU4NjI4XHU4NjJhIiwxMywiXHU4NjM5XHU4NjNhXHU4NjNiXHU4NjNkXHU4NjNlXHU4NjNmXHU4NjQwIl0sWyJjYzgwIiwiXHU4NjQxIiwxMSwiXHU4NjUyXHU4NjUzXHU4NjU1Iiw0LCJcdTg2NWJcdTg2NWNc'@; put 'dTg2NWRcdTg2NWZcdTg2NjBcdTg2NjFcdTg2NjMiLDcsIlx1NzM2ZFx1NjMxZVx1OGU0Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1NTc0ZFx1NjQ0YVx1OGQyYVx1NzYyYlx1NmVlOVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2'@; put 'ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1NjNhMlx1NTNmOVx1NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGViYVx1NmRjY1x1OGQ5Zlx1NzBlYlx1NjM4Zlx1NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1'@; put 'Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3OVx1ODVlNFx1ODE3ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1NGY1M1x1NjZmZlx1NTY4Zlx1NjBkNVx1NmQ5NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRm'@; put 'Ylx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1NjMxMVx1Njc2MVx1OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjMyJdLFsiY2Q0MCIsIlx1ODY2ZFx1ODY2Zlx1ODY3MFx1ODY3MiIsNiwiXHU4NjgzIiw2LCJcdTg2OGUiLDQs'@; put 'Ilx1ODY5NFx1ODY5NiIsNSwiXHU4NjllIiw0LCJcdTg2YTVcdTg2YTZcdTg2YWJcdTg2YWRcdTg2YWVcdTg2YjJcdTg2YjNcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmIiLDQsIlx1ODZjMVx1ODZjMlx1ODZjM1x1ODZjNVx1ODZjOFx1ODZjY1x1ODZjZFx1ODZkMlx1ODZkM1x1ODZkNVx1ODZk'@; put 'Nlx1ODZkN1x1ODZkYVx1ODZkYyJdLFsiY2Q4MCIsIlx1ODZkZFx1ODZlMFx1ODZlMVx1ODZlMlx1ODZlM1x1ODZlNVx1ODZlNlx1ODZlN1x1ODZlOFx1ODZlYVx1ODZlYlx1ODZlY1x1ODZlZlx1ODZmNVx1ODZmNlx1ODZmN1x1ODZmYVx1ODZmYlx1ODZmY1x1ODZmZFx1ODZmZlx1ODcwMVx1'@; put 'ODcwNFx1ODcwNVx1ODcwNlx1ODcwYlx1ODcwY1x1ODcwZVx1ODcwZlx1ODcxMFx1ODcxMVx1ODcxNFx1ODcxNlx1NmM0MFx1NWVmN1x1NTA1Y1x1NGVhZFx1NWVhZFx1NjMzYVx1ODI0N1x1OTAxYVx1Njg1MFx1OTE2ZVx1NzdiM1x1NTQwY1x1OTRkY1x1NWY2NFx1N2FlNVx1Njg3Nlx1NjM0'@; put 'NVx1N2I1Mlx1N2VkZlx1NzVkYlx1NTA3N1x1NjI5NVx1NTkzNFx1OTAwZlx1NTFmOFx1NzljM1x1N2E4MVx1NTZmZVx1NWY5Mlx1OTAxNFx1NmQ4Mlx1NWM2MFx1NTcxZlx1NTQxMFx1NTE1NFx1NmU0ZFx1NTZlMlx1NjNhOFx1OTg5M1x1ODE3Zlx1ODcxNVx1ODkyYVx1OTAwMFx1NTQxZVx1'@; put 'NWM2Zlx1ODFjMFx1NjJkNlx1NjI1OFx1ODEzMVx1OWUzNVx1OTY0MFx1OWE2ZVx1OWE3Y1x1NjkyZFx1NTlhNVx1NjJkM1x1NTUzZVx1NjMxNlx1NTRjN1x1ODZkOVx1NmQzY1x1NWEwM1x1NzRlNlx1ODg5Y1x1NmI2YVx1NTkxNlx1OGM0Y1x1NWYyZlx1NmU3ZVx1NzNhOVx1OTg3ZFx1NGUz'@; put 'OFx1NzBmN1x1NWI4Y1x1Nzg5N1x1NjMzZFx1NjY1YVx1NzY5Nlx1NjBjYlx1NWI5Ylx1NWE0OVx1NGUwN1x1ODE1NVx1NmM2YVx1NzM4Ylx1NGVhMVx1Njc4OVx1N2Y1MVx1NWY4MFx1NjVmYVx1NjcxYlx1NWZkOFx1NTk4NFx1NWEwMSJdLFsiY2U0MCIsIlx1ODcxOVx1ODcxYlx1ODcxZFx1'@; put 'ODcxZlx1ODcyMFx1ODcyNFx1ODcyNlx1ODcyN1x1ODcyOFx1ODcyYVx1ODcyYlx1ODcyY1x1ODcyZFx1ODcyZlx1ODczMFx1ODczMlx1ODczM1x1ODczNVx1ODczNlx1ODczOFx1ODczOVx1ODczYVx1ODczY1x1ODczZFx1ODc0MCIsNiwiXHU4NzRhXHU4NzRiXHU4NzRkXHU4NzRmXHU4NzUw'@; put 'XHU4NzUxXHU4NzUyXHU4NzU0XHU4NzU1XHU4NzU2XHU4NzU4XHU4NzVhIiw1LCJcdTg3NjFcdTg3NjJcdTg3NjYiLDcsIlx1ODc2Zlx1ODc3MVx1ODc3Mlx1ODc3M1x1ODc3NSJdLFsiY2U4MCIsIlx1ODc3N1x1ODc3OFx1ODc3OVx1ODc3YVx1ODc3Zlx1ODc4MFx1ODc4MVx1ODc4NFx1ODc4'@; put 'Nlx1ODc4N1x1ODc4OVx1ODc4YVx1ODc4Y1x1ODc4ZSIsNCwiXHU4Nzk0XHU4Nzk1XHU4Nzk2XHU4Nzk4Iiw2LCJcdTg3YTAiLDQsIlx1NWRjZFx1NWZhZVx1NTM3MVx1OTdlNlx1OGZkZFx1Njg0NVx1NTZmNFx1NTUyZlx1NjBkZlx1NGUzYVx1NmY0ZFx1N2VmNFx1ODJjN1x1ODQwZVx1NTlk'@; put 'NFx1NGYxZlx1NGYyYVx1NWMzZVx1N2VhY1x1NjcyYVx1ODUxYVx1NTQ3M1x1NzU0Zlx1ODBjM1x1NTU4Mlx1OWI0Zlx1NGY0ZFx1NmUyZFx1OGMxM1x1NWMwOVx1NjE3MFx1NTM2Ylx1NzYxZlx1NmUyOVx1ODY4YVx1NjU4N1x1OTVmYlx1N2ViOVx1NTQzYlx1N2EzM1x1N2QwYVx1OTVlZVx1'@; put 'NTVlMVx1N2ZjMVx1NzRlZVx1NjMxZFx1ODcxN1x1NmRhMVx1N2E5ZFx1NjIxMVx1NjVhMVx1NTM2N1x1NjNlMVx1NmM4M1x1NWRlYlx1NTQ1Y1x1OTRhOFx1NGU0Y1x1NmM2MVx1OGJlY1x1NWM0Ylx1NjVlMFx1ODI5Y1x1NjhhN1x1NTQzZVx1NTQzNFx1NmJjYlx1NmI2Nlx1NGU5NFx1NjM0'@; put 'Mlx1NTM0OFx1ODIxZVx1NGYwZFx1NGZhZVx1NTc1ZVx1NjIwYVx1OTZmZVx1NjY2NFx1NzI2OVx1NTJmZlx1NTJhMVx1NjA5Zlx1OGJlZlx1NjYxNFx1NzE5OVx1Njc5MFx1ODk3Zlx1Nzg1Mlx1NzdmZFx1NjY3MFx1NTYzYlx1NTQzOFx1OTUyMVx1NzI3YSJdLFsiY2Y0MCIsIlx1ODdhNVx1'@; put 'ODdhNlx1ODdhN1x1ODdhOVx1ODdhYVx1ODdhZVx1ODdiMFx1ODdiMVx1ODdiMlx1ODdiNFx1ODdiNlx1ODdiN1x1ODdiOFx1ODdiOVx1ODdiYlx1ODdiY1x1ODdiZVx1ODdiZlx1ODdjMSIsNCwiXHU4N2M3XHU4N2M4XHU4N2M5XHU4N2NjIiw0LCJcdTg3ZDQiLDYsIlx1ODdkY1x1ODdkZFx1'@; put 'ODdkZVx1ODdkZlx1ODdlMVx1ODdlMlx1ODdlM1x1ODdlNFx1ODdlNlx1ODdlN1x1ODdlOFx1ODdlOVx1ODdlYlx1ODdlY1x1ODdlZFx1ODdlZiIsOV0sWyJjZjgwIiwiXHU4N2ZhXHU4N2ZiXHU4N2ZjXHU4N2ZkXHU4N2ZmXHU4ODAwXHU4ODAxXHU4ODAyXHU4ODA0Iiw1LCJcdTg4MGIiLDcs'@; put 'Ilx1ODgxNFx1ODgxN1x1ODgxOFx1ODgxOVx1ODgxYVx1ODgxYyIsNCwiXHU4ODIzXHU3YTAwXHU2MDZmXHU1ZTBjXHU2MDg5XHU4MTlkXHU1OTE1XHU2MGRjXHU3MTg0XHU3MGVmXHU2ZWFhXHU2YzUwXHU3MjgwXHU2YTg0XHU4OGFkXHU1ZTJkXHU0ZTYwXHU1YWIzXHU1NTljXHU5NGUzXHU2'@; put 'ZDE3XHU3Y2ZiXHU5Njk5XHU2MjBmXHU3ZWM2XHU3NzhlXHU4NjdlXHU1MzIzXHU5NzFlXHU4Zjk2XHU2Njg3XHU1Y2UxXHU0ZmEwXHU3MmVkXHU0ZTBiXHU1M2E2XHU1OTBmXHU1NDEzXHU2MzgwXHU5NTI4XHU1MTQ4XHU0ZWQ5XHU5YzljXHU3ZWE0XHU1NGI4XHU4ZDI0XHU4ODU0XHU4MjM3'@; put 'XHU5NWYyXHU2ZDhlXHU1ZjI2XHU1YWNjXHU2NjNlXHU5NjY5XHU3M2IwXHU3MzJlXHU1M2JmXHU4MTdhXHU5OTg1XHU3ZmExXHU1YmFhXHU5Njc3XHU5NjUwXHU3ZWJmXHU3NmY4XHU1M2EyXHU5NTc2XHU5OTk5XHU3YmIxXHU4OTQ0XHU2ZTU4XHU0ZTYxXHU3ZmQ0XHU3OTY1XHU4YmU2XHU2'@; put 'MGYzXHU1NGNkXHU0ZWFiXHU5ODc5XHU1ZGY3XHU2YTYxXHU1MGNmXHU1NDExXHU4YzYxXHU4NDI3XHU3ODVkXHU5NzA0XHU1MjRhXHU1NGVlXHU1NmEzXHU5NTAwXHU2ZDg4XHU1YmI1XHU2ZGM2XHU2NjUzIl0sWyJkMDQwIiwiXHU4ODI0IiwxMywiXHU4ODMzIiw1LCJcdTg4M2FcdTg4M2Jc'@; put 'dTg4M2RcdTg4M2VcdTg4M2ZcdTg4NDFcdTg4NDJcdTg4NDNcdTg4NDYiLDUsIlx1ODg0ZSIsNSwiXHU4ODU1XHU4ODU2XHU4ODU4XHU4ODVhIiw2LCJcdTg4NjZcdTg4NjdcdTg4NmFcdTg4NmRcdTg4NmZcdTg4NzFcdTg4NzNcdTg4NzRcdTg4NzVcdTg4NzZcdTg4NzhcdTg4NzlcdTg4N2Ei'@; put 'XSxbImQwODAiLCJcdTg4N2JcdTg4N2NcdTg4ODBcdTg4ODNcdTg4ODZcdTg4ODdcdTg4ODlcdTg4OGFcdTg4OGNcdTg4OGVcdTg4OGZcdTg4OTBcdTg4OTFcdTg4OTNcdTg4OTRcdTg4OTVcdTg4OTciLDQsIlx1ODg5ZCIsNCwiXHU4OGEzXHU4OGE1Iiw1LCJcdTVjMGZcdTViNWRcdTY4MjFc'@; put 'dTgwOTZcdTU1NzhcdTdiMTFcdTY1NDhcdTY5NTRcdTRlOWJcdTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUzNzhcdTg3ZjlcdTYxYzhcdTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgyYWZcdTk1'@; put 'MGNcdTZiMjNcdThmOWJcdTY1YjBcdTVmZmJcdTVmYzNcdTRmZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJcdTVlNzhcdTY3NGZcdTYwMjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhcdTZjNzlc'@; put 'dTk2YzRcdTcxOGFcdTRmMTFcdTRmZWVcdTdmOWVcdTY3M2RcdTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThiYjhcdTg0YzRcdTkxNTdcdTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdkNmVcdTVh'@; put 'N2ZcdTdlZWFcdTdlZWRcdThmNjlcdTU1YTdcdTViYTNcdTYwYWNcdTY1Y2JcdTczODQiXSxbImQxNDAiLCJcdTg4YWNcdTg4YWVcdTg4YWZcdTg4YjBcdTg4YjIiLDQsIlx1ODhiOFx1ODhiOVx1ODhiYVx1ODhiYlx1ODhiZFx1ODhiZVx1ODhiZlx1ODhjMFx1ODhjM1x1ODhjNFx1ODhjN1x1'@; put 'ODhjOFx1ODhjYVx1ODhjYlx1ODhjY1x1ODhjZFx1ODhjZlx1ODhkMFx1ODhkMVx1ODhkM1x1ODhkNlx1ODhkN1x1ODhkYSIsNCwiXHU4OGUwXHU4OGUxXHU4OGU2XHU4OGU3XHU4OGU5Iiw2LCJcdTg4ZjJcdTg4ZjVcdTg4ZjZcdTg4ZjdcdTg4ZmFcdTg4ZmJcdTg4ZmRcdTg4ZmZcdTg5MDBc'@; put 'dTg5MDFcdTg5MDMiLDVdLFsiZDE4MCIsIlx1ODkwOVx1ODkwYiIsNCwiXHU4OTExXHU4OTE0Iiw0LCJcdTg5MWMiLDQsIlx1ODkyMlx1ODkyM1x1ODkyNFx1ODkyNlx1ODkyN1x1ODkyOFx1ODkyOVx1ODkyY1x1ODkyZFx1ODkyZVx1ODkyZlx1ODkzMVx1ODkzMlx1ODkzM1x1ODkzNVx1ODkz'@; put 'N1x1OTAwOVx1NzY2M1x1NzcyOVx1N2VkYVx1OTc3NFx1ODU5Ylx1NWI2Nlx1N2E3NFx1OTZlYVx1ODg0MFx1NTJjYlx1NzE4Zlx1NWZhYVx1NjVlY1x1OGJlMlx1NWJmYlx1OWE2Zlx1NWRlMVx1NmI4OVx1NmM1Ylx1OGJhZFx1OGJhZlx1OTAwYVx1OGZjNVx1NTM4Ylx1NjJiY1x1OWUyNlx1'@; put 'OWUyZFx1NTQ0MFx1NGUyYlx1ODJiZFx1NzI1OVx1ODY5Y1x1NWQxNlx1ODg1OVx1NmRhZlx1OTZjNVx1NTRkMVx1NGU5YVx1OGJiNlx1NzEwOVx1NTRiZFx1OTYwOVx1NzBkZlx1NmRmOVx1NzZkMFx1NGUyNVx1NzgxNFx1ODcxMlx1NWNhOVx1NWVmNlx1OGEwMFx1OTg5Y1x1OTYwZVx1NzA4'@; put 'ZVx1NmNiZlx1NTk0NFx1NjNhOVx1NzczY1x1ODg0ZFx1NmYxNFx1ODI3M1x1NTgzMFx1NzFkNVx1NTM4Y1x1NzgxYVx1OTZjMVx1NTUwMVx1NWY2Nlx1NzEzMFx1NWJiNFx1OGMxYVx1OWE4Y1x1NmI4M1x1NTkyZVx1OWUyZlx1NzllN1x1Njc2OFx1NjI2Y1x1NGY2Zlx1NzVhMVx1N2Y4YVx1'@; put 'NmQwYlx1OTYzM1x1NmMyN1x1NGVmMFx1NzVkMlx1NTE3Ylx1NjgzN1x1NmYzZVx1OTA4MFx1ODE3MFx1NTk5Nlx1NzQ3NiJdLFsiZDI0MCIsIlx1ODkzOCIsOCwiXHU4OTQyXHU4OTQzXHU4OTQ1IiwyNCwiXHU4OTYwIiw1LCJcdTg5NjciLDE5LCJcdTg5N2MiXSxbImQyODAiLCJcdTg5N2Rc'@; put 'dTg5N2VcdTg5ODBcdTg5ODJcdTg5ODRcdTg5ODVcdTg5ODciLDI2LCJcdTY0NDdcdTVjMjdcdTkwNjVcdTdhOTFcdThjMjNcdTU5ZGFcdTU0YWNcdTgyMDBcdTgzNmZcdTg5ODFcdTgwMDBcdTY5MzBcdTU2NGVcdTgwMzZcdTcyMzdcdTkxY2VcdTUxYjZcdTRlNWZcdTk4NzVcdTYzOTZcdTRl'@; put 'MWFcdTUzZjZcdTY2ZjNcdTgxNGJcdTU5MWNcdTZkYjJcdTRlMDBcdTU4ZjlcdTUzM2JcdTYzZDZcdTk0ZjFcdTRmOWRcdTRmMGFcdTg4NjNcdTk4OTBcdTU5MzdcdTkwNTdcdTc5ZmJcdTRlZWFcdTgwZjBcdTc1OTFcdTZjODJcdTViOWNcdTU5ZThcdTVmNWRcdTY5MDVcdTg2ODFcdTUwMWFc'@; put 'dTVkZjJcdTRlNTlcdTc3ZTNcdTRlZTVcdTgyN2FcdTYyOTFcdTY2MTNcdTkwOTFcdTVjNzlcdTRlYmZcdTVmNzlcdTgxYzZcdTkwMzhcdTgwODRcdTc1YWJcdTRlYTZcdTg4ZDRcdTYxMGZcdTZiYzVcdTVmYzZcdTRlNDlcdTc2Y2FcdTZlYTJcdThiZTNcdThiYWVcdThjMGFcdThiZDFcdTVm'@; put 'MDJcdTdmZmNcdTdmY2NcdTdlY2VcdTgzMzVcdTgzNmJcdTU2ZTBcdTZiYjdcdTk3ZjNcdTk2MzRcdTU5ZmJcdTU0MWZcdTk0ZjZcdTZkZWJcdTViYzVcdTk5NmVcdTVjMzlcdTVmMTVcdTk2OTAiXSxbImQzNDAiLCJcdTg5YTIiLDMwLCJcdTg5YzNcdTg5Y2RcdTg5ZDNcdTg5ZDRcdTg5ZDVc'@; put 'dTg5ZDdcdTg5ZDhcdTg5ZDlcdTg5ZGJcdTg5ZGRcdTg5ZGZcdTg5ZTBcdTg5ZTFcdTg5ZTJcdTg5ZTRcdTg5ZTdcdTg5ZThcdTg5ZTlcdTg5ZWFcdTg5ZWNcdTg5ZWRcdTg5ZWVcdTg5ZjBcdTg5ZjFcdTg5ZjJcdTg5ZjQiLDZdLFsiZDM4MCIsIlx1ODlmYiIsNCwiXHU4YTAxIiw1LCJcdThh'@; put 'MDgiLDIxLCJcdTUzNzBcdTgyZjFcdTZhMzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2YzhcdTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1YzhcdTVlYjhcdTk2Y2Rc'@; put 'dThlMGFcdTg2ZjlcdTU0OGZcdTZjZjNcdTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlcdTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFcdTkxYzlcdThiZjFcdTUz'@; put 'YzhcdTVlN2NcdThmYzJcdTZkZTRcdTRlOGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRcdTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRlMGVcdTVjN2ZcdTc5YjlcdTViODdcdThiZWRcdTdmYmRcdTczODlc'@; put 'dTU3ZGZcdTgyOGJcdTkwYzFcdTU0MDFcdTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODkiXSxbImQ0NDAiLCJcdThhMWUiLDMxLCJcdThhM2YiLDgsIlx1OGE0OSIsMjFdLFsiZDQ4MCIsIlx1OGE1ZiIsMjUsIlx1OGE3YSIsNiwiXHU2ZDc0XHU1'@; put 'YmQzXHU4OGQ1XHU5ODg0XHU4YzZiXHU5YTZkXHU5ZTMzXHU2ZTBhXHU1MWE0XHU1MTQzXHU1N2EzXHU4ODgxXHU1MzlmXHU2M2Y0XHU4Zjk1XHU1NmVkXHU1NDU4XHU1NzA2XHU3MzNmXHU2ZTkwXHU3ZjE4XHU4ZmRjXHU4MmQxXHU2MTNmXHU2MDI4XHU5NjYyXHU2NmYwXHU3ZWE2XHU4ZDhh'@; put 'XHU4ZGMzXHU5NGE1XHU1Y2IzXHU3Y2E0XHU2NzA4XHU2MGE2XHU5NjA1XHU4MDE4XHU0ZTkxXHU5MGU3XHU1MzAwXHU5NjY4XHU1MTQxXHU4ZmQwXHU4NTc0XHU5MTVkXHU2NjU1XHU5N2Y1XHU1YjU1XHU1MzFkXHU3ODM4XHU2NzQyXHU2ODNkXHU1NGM5XHU3MDdlXHU1YmIwXHU4ZjdkXHU1'@; put 'MThkXHU1NzI4XHU1NGIxXHU2NTEyXHU2NjgyXHU4ZDVlXHU4ZDQzXHU4MTBmXHU4NDZjXHU5MDZkXHU3Y2RmXHU1MWZmXHU4NWZiXHU2N2EzXHU2NWU5XHU2ZmExXHU4NmE0XHU4ZTgxXHU1NjZhXHU5MDIwXHU3NjgyXHU3MDc2XHU3MWU1XHU4ZDIzXHU2MmU5XHU1MjE5XHU2Y2ZkXHU4ZDNj'@; put 'XHU2MDBlXHU1ODllXHU2MThlXHU2NmZlXHU4ZDYwXHU2MjRlXHU1NWIzXHU2ZTIzXHU2NzJkXHU4ZjY3Il0sWyJkNTQwIiwiXHU4YTgxIiw3LCJcdThhOGIiLDcsIlx1OGE5NCIsNDZdLFsiZDU4MCIsIlx1OGFjMyIsMzIsIlx1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1'@; put 'NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1NjU4Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1NjVhOVx1OGY5N1x1NWQyZFx1NWM1NVx1ODYzOFx1NjgwOFx1NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2Fl'@; put 'MFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4Y1x1NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYyZFx1NjI3ZVx1NmNiY1x1OGQ3NVx1NzE2N1x1N2Y2OVx1NTE0Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1'@; put 'OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1OGZkOVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1Njc5NVx1NzViOVx1OGJjYVx1OTcwN1x1NjMyZlx1OTU0N1x1OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4'@; put 'OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2M1x1NjUzZiJdLFsiZDY0MCIsIlx1OGFlNCIsMzQsIlx1OGIwOCIsMjddLFsiZDY4MCIsIlx1OGIyNFx1OGIyNVx1OGIyNyIsMzAsIlx1NWUyN1x1NzVjN1x1OTBkMVx1OGJjMVx1ODI5ZFx1Njc5ZFx1NjUyZlx1NTQzMVx1ODcxOFx1NzdlNVx1ODBh'@; put 'Mlx1ODEwMlx1NmM0MVx1NGU0Ylx1N2VjN1x1ODA0Y1x1NzZmNFx1NjkwZFx1NmI5Nlx1NjI2N1x1NTAzY1x1NGY4NFx1NTc0MFx1NjMwN1x1NmI2Mlx1OGRiZVx1NTNlYVx1NjVlOFx1N2ViOFx1NWZkN1x1NjMxYVx1NjNiN1x1ODFmM1x1ODFmNFx1N2Y2ZVx1NWUxY1x1NWNkOVx1NTIzNlx1'@; put 'NjY3YVx1NzllOVx1N2ExYVx1OGQyOFx1NzA5OVx1NzVkNFx1NmVkZVx1NmNiYlx1N2E5Mlx1NGUyZFx1NzZjNVx1NWZlMFx1OTQ5Zlx1ODg3N1x1N2VjOFx1NzljZFx1ODBiZlx1OTFjZFx1NGVmMlx1NGYxN1x1ODIxZlx1NTQ2OFx1NWRkZVx1NmQzMlx1OGJjY1x1N2NhNVx1OGY3NFx1ODA5'@; put 'OFx1NWUxYVx1NTQ5Mlx1NzZiMVx1NWI5OVx1NjYzY1x1OWFhNFx1NzNlMFx1NjgyYVx1ODZkYlx1NjczMVx1NzMyYVx1OGJmOFx1OGJkYlx1OTAxMFx1N2FmOVx1NzBkYlx1NzE2ZVx1NjJjNFx1NzdhOVx1NTYzMVx1NGUzYlx1ODQ1N1x1NjdmMVx1NTJhOVx1ODZjMFx1OGQyZVx1OTRmOFx1'@; put 'N2I1MSJdLFsiZDc0MCIsIlx1OGI0NiIsMzEsIlx1OGI2NyIsNCwiXHU4YjZkIiwyNV0sWyJkNzgwIiwiXHU4Yjg3IiwyNCwiXHU4YmFjXHU4YmIxXHU4YmJiXHU4YmM3XHU4YmQwXHU4YmVhXHU4YzA5XHU4YzFlXHU0ZjRmXHU2Y2U4XHU3OTVkXHU5YTdiXHU2MjkzXHU3MjJhXHU2MmZkXHU0'@; put 'ZTEzXHU3ODE2XHU4ZjZjXHU2NGIwXHU4ZDVhXHU3YmM2XHU2ODY5XHU1ZTg0XHU4OGM1XHU1OTg2XHU2NDllXHU1OGVlXHU3MmI2XHU2OTBlXHU5NTI1XHU4ZmZkXHU4ZDU4XHU1NzYwXHU3ZjAwXHU4YzA2XHU1MWM2XHU2MzQ5XHU2MmQ5XHU1MzUzXHU2ODRjXHU3NDIyXHU4MzAxXHU5MTRj'@; put 'XHU1NTQ0XHU3NzQwXHU3MDdjXHU2ZDRhXHU1MTc5XHU1NGE4XHU4ZDQ0XHU1OWZmXHU2ZWNiXHU2ZGM0XHU1YjVjXHU3ZDJiXHU0ZWQ0XHU3YzdkXHU2ZWQzXHU1YjUwXHU4MWVhXHU2ZTBkXHU1YjU3XHU5YjAzXHU2OGQ1XHU4ZTJhXHU1Yjk3XHU3ZWZjXHU2MDNiXHU3ZWI1XHU5MGI5XHU4'@; put 'ZDcwXHU1OTRmXHU2M2NkXHU3OWRmXHU4ZGIzXHU1MzUyXHU2NWNmXHU3OTU2XHU4YmM1XHU5NjNiXHU3ZWM0XHU5NGJiXHU3ZTgyXHU1NjM0XHU5MTg5XHU2NzAwXHU3ZjZhXHU1YzBhXHU5MDc1XHU2NjI4XHU1ZGU2XHU0ZjUwXHU2N2RlXHU1MDVhXHU0ZjVjXHU1NzUwXHU1ZWE3Il0sWyJk'@; put 'ODQwIiwiXHU4YzM4Iiw4LCJcdThjNDJcdThjNDNcdThjNDRcdThjNDVcdThjNDhcdThjNGFcdThjNGJcdThjNGQiLDcsIlx1OGM1Nlx1OGM1N1x1OGM1OFx1OGM1OVx1OGM1YiIsNSwiXHU4YzYzIiw2LCJcdThjNmMiLDYsIlx1OGM3NFx1OGM3NVx1OGM3Nlx1OGM3N1x1OGM3YiIsNiwiXHU4'@; put 'YzgzXHU4Yzg0XHU4Yzg2XHU4Yzg3Il0sWyJkODgwIiwiXHU4Yzg4XHU4YzhiXHU4YzhkIiw2LCJcdThjOTVcdThjOTZcdThjOTdcdThjOTkiLDIwLCJcdTRlOGRcdTRlMGNcdTUxNDBcdTRlMTBcdTVlZmZcdTUzNDVcdTRlMTVcdTRlOThcdTRlMWVcdTliMzJcdTViNmNcdTU2NjlcdTRlMjhc'@; put 'dTc5YmFcdTRlM2ZcdTUzMTVcdTRlNDdcdTU5MmRcdTcyM2JcdTUzNmVcdTZjMTBcdTU2ZGZcdTgwZTRcdTk5OTdcdTZiZDNcdTc3N2VcdTlmMTdcdTRlMzZcdTRlOWZcdTlmMTBcdTRlNWNcdTRlNjlcdTRlOTNcdTgyODhcdTViNWJcdTU1NmNcdTU2MGZcdTRlYzRcdTUzOGRcdTUzOWRcdTUz'@; put 'YTNcdTUzYTVcdTUzYWVcdTk3NjVcdThkNWRcdTUzMWFcdTUzZjVcdTUzMjZcdTUzMmVcdTUzM2VcdThkNWNcdTUzNjZcdTUzNjNcdTUyMDJcdTUyMDhcdTUyMGVcdTUyMmRcdTUyMzNcdTUyM2ZcdTUyNDBcdTUyNGNcdTUyNWVcdTUyNjFcdTUyNWNcdTg0YWZcdTUyN2RcdTUyODJcdTUyODFc'@; put 'dTUyOTBcdTUyOTNcdTUxODJcdTdmNTRcdTRlYmJcdTRlYzNcdTRlYzlcdTRlYzJcdTRlZThcdTRlZTFcdTRlZWJcdTRlZGVcdTRmMWJcdTRlZjNcdTRmMjJcdTRmNjRcdTRlZjVcdTRmMjVcdTRmMjdcdTRmMDlcdTRmMmJcdTRmNWVcdTRmNjdcdTY1MzhcdTRmNWFcdTRmNWQiXSxbImQ5NDAi'@; put 'LCJcdThjYWUiLDYyXSxbImQ5ODAiLCJcdThjZWQiLDMyLCJcdTRmNWZcdTRmNTdcdTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRmN2JcdTRmYWFcdTRmN2NcdTRmYWNcdTRmOTRcdTRmZTZcdTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRm'@; put 'ZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUwMmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2VcdTUwNDNcdTUwNTVcdTUwNDhcdTUwNGVcdTUwNmNcdTUwN2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFc'@; put 'dTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJcdTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVkZmRcdTllYzlcdTk5OThcdTUxODFcdTU5MTRcdTUyZjlcdTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5'@; put 'MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgxMTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmMiXSxbImRhNDAiLCJcdThkMGUiLDE0LCJcdThkMjBcdThkNTFcdThkNTJcdThkNTdcdThkNWZcdThkNjVc'@; put 'dThkNjhcdThkNjlcdThkNmFcdThkNmNcdThkNmVcdThkNmZcdThkNzFcdThkNzJcdThkNzgiLDgsIlx1OGQ4Mlx1OGQ4M1x1OGQ4Nlx1OGQ4N1x1OGQ4OFx1OGQ4OVx1OGQ4YyIsNCwiXHU4ZDkyXHU4ZDkzXHU4ZDk1Iiw5LCJcdThkYTBcdThkYTEiXSxbImRhODAiLCJcdThkYTJcdThkYTQi'@; put 'LDEyLCJcdThkYjJcdThkYjZcdThkYjdcdThkYjlcdThkYmJcdThkYmRcdThkYzBcdThkYzFcdThkYzJcdThkYzVcdThkYzdcdThkYzhcdThkYzlcdThkY2FcdThkY2RcdThkZDBcdThkZDJcdThkZDNcdThkZDRcdTUxYzdcdTUxOTZcdTUxYTJcdTUxYTVcdThiYTBcdThiYTZcdThiYTdcdThi'@; put 'YWFcdThiYjRcdThiYjVcdThiYjdcdThiYzJcdThiYzNcdThiY2JcdThiY2ZcdThiY2VcdThiZDJcdThiZDNcdThiZDRcdThiZDZcdThiZDhcdThiZDlcdThiZGNcdThiZGZcdThiZTBcdThiZTRcdThiZThcdThiZTlcdThiZWVcdThiZjBcdThiZjNcdThiZjZcdThiZjlcdThiZmNcdThiZmZc'@; put 'dThjMDBcdThjMDJcdThjMDRcdThjMDdcdThjMGNcdThjMGZcdThjMTFcdThjMTJcdThjMTRcdThjMTVcdThjMTZcdThjMTlcdThjMWJcdThjMThcdThjMWRcdThjMWZcdThjMjBcdThjMjFcdThjMjVcdThjMjdcdThjMmFcdThjMmJcdThjMmVcdThjMmZcdThjMzJcdThjMzNcdThjMzVcdThj'@; put 'MzZcdTUzNjlcdTUzN2FcdTk2MWRcdTk2MjJcdTk2MjFcdTk2MzFcdTk2MmFcdTk2M2RcdTk2M2NcdTk2NDJcdTk2NDlcdTk2NTRcdTk2NWZcdTk2NjdcdTk2NmNcdTk2NzJcdTk2NzRcdTk2ODhcdTk2OGRcdTk2OTdcdTk2YjBcdTkwOTdcdTkwOWJcdTkwOWRcdTkwOTlcdTkwYWNcdTkwYTFc'@; put 'dTkwYjRcdTkwYjNcdTkwYjZcdTkwYmEiXSxbImRiNDAiLCJcdThkZDVcdThkZDhcdThkZDlcdThkZGNcdThkZTBcdThkZTFcdThkZTJcdThkZTVcdThkZTZcdThkZTdcdThkZTlcdThkZWRcdThkZWVcdThkZjBcdThkZjFcdThkZjJcdThkZjRcdThkZjZcdThkZmNcdThkZmUiLDYsIlx1OGUw'@; put 'Nlx1OGUwN1x1OGUwOFx1OGUwYlx1OGUwZFx1OGUwZVx1OGUxMFx1OGUxMVx1OGUxMlx1OGUxM1x1OGUxNSIsNywiXHU4ZTIwXHU4ZTIxXHU4ZTI0Iiw0LCJcdThlMmJcdThlMmRcdThlMzBcdThlMzJcdThlMzNcdThlMzRcdThlMzZcdThlMzdcdThlMzhcdThlM2JcdThlM2NcdThlM2UiXSxb'@; put 'ImRiODAiLCJcdThlM2ZcdThlNDNcdThlNDVcdThlNDZcdThlNGMiLDQsIlx1OGU1MyIsNSwiXHU4ZTVhIiwxMSwiXHU4ZTY3XHU4ZTY4XHU4ZTZhXHU4ZTZiXHU4ZTZlXHU4ZTcxXHU5MGI4XHU5MGIwXHU5MGNmXHU5MGM1XHU5MGJlXHU5MGQwXHU5MGM0XHU5MGM3XHU5MGQzXHU5MGU2XHU5'@; put 'MGUyXHU5MGRjXHU5MGQ3XHU5MGRiXHU5MGViXHU5MGVmXHU5MGZlXHU5MTA0XHU5MTIyXHU5MTFlXHU5MTIzXHU5MTMxXHU5MTJmXHU5MTM5XHU5MTQzXHU5MTQ2XHU1MjBkXHU1OTQyXHU1MmEyXHU1MmFjXHU1MmFkXHU1MmJlXHU1NGZmXHU1MmQwXHU1MmQ2XHU1MmYwXHU1M2RmXHU3MWVl'@; put 'XHU3N2NkXHU1ZWY0XHU1MWY1XHU1MWZjXHU5YjJmXHU1M2I2XHU1ZjAxXHU3NTVhXHU1ZGVmXHU1NzRjXHU1N2E5XHU1N2ExXHU1ODdlXHU1OGJjXHU1OGM1XHU1OGQxXHU1NzI5XHU1NzJjXHU1NzJhXHU1NzMzXHU1NzM5XHU1NzJlXHU1NzJmXHU1NzVjXHU1NzNiXHU1NzQyXHU1NzY5XHU1'@; put 'Nzg1XHU1NzZiXHU1Nzg2XHU1NzdjXHU1NzdiXHU1NzY4XHU1NzZkXHU1Nzc2XHU1NzczXHU1N2FkXHU1N2E0XHU1NzhjXHU1N2IyXHU1N2NmXHU1N2E3XHU1N2I0XHU1NzkzXHU1N2EwXHU1N2Q1XHU1N2Q4XHU1N2RhXHU1N2Q5XHU1N2QyXHU1N2I4XHU1N2Y0XHU1N2VmXHU1N2Y4XHU1N2U0'@; put 'XHU1N2RkIl0sWyJkYzQwIiwiXHU4ZTczXHU4ZTc1XHU4ZTc3Iiw0LCJcdThlN2RcdThlN2VcdThlODBcdThlODJcdThlODNcdThlODRcdThlODZcdThlODgiLDYsIlx1OGU5MVx1OGU5Mlx1OGU5M1x1OGU5NSIsNiwiXHU4ZTlkXHU4ZTlmIiwxMSwiXHU4ZWFkXHU4ZWFlXHU4ZWIwXHU4ZWIx'@; put 'XHU4ZWIzIiw2LCJcdThlYmIiLDddLFsiZGM4MCIsIlx1OGVjMyIsMTAsIlx1OGVjZiIsMjEsIlx1NTgwYlx1NTgwZFx1NTdmZFx1NTdlZFx1NTgwMFx1NTgxZVx1NTgxOVx1NTg0NFx1NTgyMFx1NTg2NVx1NTg2Y1x1NTg4MVx1NTg4OVx1NTg5YVx1NTg4MFx1OTlhOFx1OWYxOVx1NjFmZlx1'@; put 'ODI3OVx1ODI3ZFx1ODI3Zlx1ODI4Zlx1ODI4YVx1ODJhOFx1ODI4NFx1ODI4ZVx1ODI5MVx1ODI5N1x1ODI5OVx1ODJhYlx1ODJiOFx1ODJiZVx1ODJiMFx1ODJjOFx1ODJjYVx1ODJlM1x1ODI5OFx1ODJiN1x1ODJhZVx1ODJjYlx1ODJjY1x1ODJjMVx1ODJhOVx1ODJiNFx1ODJhMVx1ODJh'@; put 'YVx1ODI5Zlx1ODJjNFx1ODJjZVx1ODJhNFx1ODJlMVx1ODMwOVx1ODJmN1x1ODJlNFx1ODMwZlx1ODMwN1x1ODJkY1x1ODJmNFx1ODJkMlx1ODJkOFx1ODMwY1x1ODJmYlx1ODJkM1x1ODMxMVx1ODMxYVx1ODMwNlx1ODMxNFx1ODMxNVx1ODJlMFx1ODJkNVx1ODMxY1x1ODM1MVx1ODM1Ylx1'@; put 'ODM1Y1x1ODMwOFx1ODM5Mlx1ODMzY1x1ODMzNFx1ODMzMVx1ODM5Ylx1ODM1ZVx1ODMyZlx1ODM0Zlx1ODM0N1x1ODM0M1x1ODM1Zlx1ODM0MFx1ODMxN1x1ODM2MFx1ODMyZFx1ODMzYVx1ODMzM1x1ODM2Nlx1ODM2NSJdLFsiZGQ0MCIsIlx1OGVlNSIsNjJdLFsiZGQ4MCIsIlx1OGYyNCIs'@; put 'MzIsIlx1ODM2OFx1ODMxYlx1ODM2OVx1ODM2Y1x1ODM2YVx1ODM2ZFx1ODM2ZVx1ODNiMFx1ODM3OFx1ODNiM1x1ODNiNFx1ODNhMFx1ODNhYVx1ODM5M1x1ODM5Y1x1ODM4NVx1ODM3Y1x1ODNiNlx1ODNhOVx1ODM3ZFx1ODNiOFx1ODM3Ylx1ODM5OFx1ODM5ZVx1ODNhOFx1ODNiYVx1ODNi'@; put 'Y1x1ODNjMVx1ODQwMVx1ODNlNVx1ODNkOFx1NTgwN1x1ODQxOFx1ODQwYlx1ODNkZFx1ODNmZFx1ODNkNlx1ODQxY1x1ODQzOFx1ODQxMVx1ODQwNlx1ODNkNFx1ODNkZlx1ODQwZlx1ODQwM1x1ODNmOFx1ODNmOVx1ODNlYVx1ODNjNVx1ODNjMFx1ODQyNlx1ODNmMFx1ODNlMVx1ODQ1Y1x1'@; put 'ODQ1MVx1ODQ1YVx1ODQ1OVx1ODQ3M1x1ODQ4N1x1ODQ4OFx1ODQ3YVx1ODQ4OVx1ODQ3OFx1ODQzY1x1ODQ0Nlx1ODQ2OVx1ODQ3Nlx1ODQ4Y1x1ODQ4ZVx1ODQzMVx1ODQ2ZFx1ODRjMVx1ODRjZFx1ODRkMFx1ODRlNlx1ODRiZFx1ODRkM1x1ODRjYVx1ODRiZlx1ODRiYVx1ODRlMFx1ODRh'@; put 'MVx1ODRiOVx1ODRiNFx1ODQ5N1x1ODRlNVx1ODRlM1x1ODUwY1x1NzUwZFx1ODUzOFx1ODRmMFx1ODUzOVx1ODUxZlx1ODUzYSJdLFsiZGU0MCIsIlx1OGY0NSIsMzIsIlx1OGY2YVx1OGY4MFx1OGY4Y1x1OGY5Mlx1OGY5ZFx1OGZhMFx1OGZhMVx1OGZhMlx1OGZhNFx1OGZhNVx1OGZhNlx1'@; put 'OGZhN1x1OGZhYVx1OGZhY1x1OGZhZFx1OGZhZVx1OGZhZlx1OGZiMlx1OGZiM1x1OGZiNFx1OGZiNVx1OGZiN1x1OGZiOFx1OGZiYVx1OGZiYlx1OGZiY1x1OGZiZlx1OGZjMFx1OGZjM1x1OGZjNiJdLFsiZGU4MCIsIlx1OGZjOSIsNCwiXHU4ZmNmXHU4ZmQyXHU4ZmQ2XHU4ZmQ3XHU4ZmRh'@; put 'XHU4ZmUwXHU4ZmUxXHU4ZmUzXHU4ZmU3XHU4ZmVjXHU4ZmVmXHU4ZmYxXHU4ZmYyXHU4ZmY0XHU4ZmY1XHU4ZmY2XHU4ZmZhXHU4ZmZiXHU4ZmZjXHU4ZmZlXHU4ZmZmXHU5MDA3XHU5MDA4XHU5MDBjXHU5MDBlXHU5MDEzXHU5MDE1XHU5MDE4XHU4NTU2XHU4NTNiXHU4NGZmXHU4NGZjXHU4'@; put 'NTU5XHU4NTQ4XHU4NTY4XHU4NTY0XHU4NTVlXHU4NTdhXHU3N2EyXHU4NTQzXHU4NTcyXHU4NTdiXHU4NWE0XHU4NWE4XHU4NTg3XHU4NThmXHU4NTc5XHU4NWFlXHU4NTljXHU4NTg1XHU4NWI5XHU4NWI3XHU4NWIwXHU4NWQzXHU4NWMxXHU4NWRjXHU4NWZmXHU4NjI3XHU4NjA1XHU4NjI5'@; put 'XHU4NjE2XHU4NjNjXHU1ZWZlXHU1ZjA4XHU1OTNjXHU1OTQxXHU4MDM3XHU1OTU1XHU1OTVhXHU1OTU4XHU1MzBmXHU1YzIyXHU1YzI1XHU1YzJjXHU1YzM0XHU2MjRjXHU2MjZhXHU2MjlmXHU2MmJiXHU2MmNhXHU2MmRhXHU2MmQ3XHU2MmVlXHU2MzIyXHU2MmY2XHU2MzM5XHU2MzRiXHU2'@; put 'MzQzXHU2M2FkXHU2M2Y2XHU2MzcxXHU2MzdhXHU2MzhlXHU2M2I0XHU2MzZkXHU2M2FjXHU2MzhhXHU2MzY5XHU2M2FlXHU2M2JjXHU2M2YyXHU2M2Y4XHU2M2UwXHU2M2ZmXHU2M2M0XHU2M2RlXHU2M2NlXHU2NDUyXHU2M2M2XHU2M2JlXHU2NDQ1XHU2NDQxXHU2NDBiXHU2NDFiXHU2NDIw'@; put 'XHU2NDBjXHU2NDI2XHU2NDIxXHU2NDVlXHU2NDg0XHU2NDZkXHU2NDk2Il0sWyJkZjQwIiwiXHU5MDE5XHU5MDFjXHU5MDIzXHU5MDI0XHU5MDI1XHU5MDI3Iiw1LCJcdTkwMzAiLDQsIlx1OTAzN1x1OTAzOVx1OTAzYVx1OTAzZFx1OTAzZlx1OTA0MFx1OTA0M1x1OTA0NVx1OTA0Nlx1OTA0'@; put 'OCIsNCwiXHU5MDRlXHU5MDU0XHU5MDU1XHU5MDU2XHU5MDU5XHU5MDVhXHU5MDVjIiw1LCJcdTkwNjRcdTkwNjZcdTkwNjdcdTkwNjlcdTkwNmFcdTkwNmJcdTkwNmNcdTkwNmYiLDQsIlx1OTA3NiIsNiwiXHU5MDdlXHU5MDgxIl0sWyJkZjgwIiwiXHU5MDg0XHU5MDg1XHU5MDg2XHU5MDg3'@; put 'XHU5MDg5XHU5MDhhXHU5MDhjIiw0LCJcdTkwOTJcdTkwOTRcdTkwOTZcdTkwOThcdTkwOWFcdTkwOWNcdTkwOWVcdTkwOWZcdTkwYTBcdTkwYTRcdTkwYTVcdTkwYTdcdTkwYThcdTkwYTlcdTkwYWJcdTkwYWRcdTkwYjJcdTkwYjdcdTkwYmNcdTkwYmRcdTkwYmZcdTkwYzBcdTY0N2FcdTY0'@; put 'YjdcdTY0YjhcdTY0OTlcdTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVmMTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUzZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJcdTU0NTJcdTU0NTNc'@; put 'dTU0NTRcdTU0NTZcdTU0NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJcdTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRcdTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0YTZcdTU0ZDNcdTU0'@; put 'ZDRcdTU0NzJcdTU0YTNcdTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFcdTU1MjdcdTU1MmFc'@; put 'dTU1NjdcdTU1OGZcdTU1YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2MiXSxbImUwNDAiLCJcdTkwYzJcdTkwYzNcdTkwYzZcdTkwYzhcdTkwYzlcdTkwY2JcdTkwY2NcdTkwY2RcdTkwZDJcdTkwZDRcdTkwZDVcdTkwZDZcdTkwZDhcdTkwZDlcdTkwZGFcdTkw'@; put 'ZGVcdTkwZGZcdTkwZTBcdTkwZTNcdTkwZTRcdTkwZTVcdTkwZTlcdTkwZWFcdTkwZWNcdTkwZWVcdTkwZjBcdTkwZjFcdTkwZjJcdTkwZjNcdTkwZjVcdTkwZjZcdTkwZjdcdTkwZjlcdTkwZmFcdTkwZmJcdTkwZmNcdTkwZmZcdTkxMDBcdTkxMDFcdTkxMDNcdTkxMDUiLDE5LCJcdTkxMWFc'@; put 'dTkxMWJcdTkxMWMiXSxbImUwODAiLCJcdTkxMWRcdTkxMWZcdTkxMjBcdTkxMjFcdTkxMjQiLDEwLCJcdTkxMzBcdTkxMzIiLDYsIlx1OTEzYSIsOCwiXHU5MTQ0XHU1NTM3XHU1NTU2XHU1NTc1XHU1NTc2XHU1NTc3XHU1NTMzXHU1NTMwXHU1NTVjXHU1NThiXHU1NWQyXHU1NTgzXHU1NWIx'@; put 'XHU1NWI5XHU1NTg4XHU1NTgxXHU1NTlmXHU1NTdlXHU1NWQ2XHU1NTkxXHU1NTdiXHU1NWRmXHU1NWJkXHU1NWJlXHU1NTk0XHU1NTk5XHU1NWVhXHU1NWY3XHU1NWM5XHU1NjFmXHU1NWQxXHU1NWViXHU1NWVjXHU1NWQ0XHU1NWU2XHU1NWRkXHU1NWM0XHU1NWVmXHU1NWU1XHU1NWYyXHU1'@; put 'NWYzXHU1NWNjXHU1NWNkXHU1NWU4XHU1NWY1XHU1NWU0XHU4Zjk0XHU1NjFlXHU1NjA4XHU1NjBjXHU1NjAxXHU1NjI0XHU1NjIzXHU1NWZlXHU1NjAwXHU1NjI3XHU1NjJkXHU1NjU4XHU1NjM5XHU1NjU3XHU1NjJjXHU1NjRkXHU1NjYyXHU1NjU5XHU1NjVjXHU1NjRjXHU1NjU0XHU1Njg2'@; put 'XHU1NjY0XHU1NjcxXHU1NjZiXHU1NjdiXHU1NjdjXHU1Njg1XHU1NjkzXHU1NmFmXHU1NmQ0XHU1NmQ3XHU1NmRkXHU1NmUxXHU1NmY1XHU1NmViXHU1NmY5XHU1NmZmXHU1NzA0XHU1NzBhXHU1NzA5XHU1NzFjXHU1ZTBmXHU1ZTE5XHU1ZTE0XHU1ZTExXHU1ZTMxXHU1ZTNiXHU1ZTNjIl0s'@; put 'WyJlMTQwIiwiXHU5MTQ1XHU5MTQ3XHU5MTQ4XHU5MTUxXHU5MTUzXHU5MTU0XHU5MTU1XHU5MTU2XHU5MTU4XHU5MTU5XHU5MTViXHU5MTVjXHU5MTVmXHU5MTYwXHU5MTY2XHU5MTY3XHU5MTY4XHU5MTZiXHU5MTZkXHU5MTczXHU5MTdhXHU5MTdiXHU5MTdjXHU5MTgwIiw0LCJcdTkxODZc'@; put 'dTkxODhcdTkxOGFcdTkxOGVcdTkxOGZcdTkxOTMiLDYsIlx1OTE5YyIsNSwiXHU5MWE0Iiw1LCJcdTkxYWJcdTkxYWNcdTkxYjBcdTkxYjFcdTkxYjJcdTkxYjNcdTkxYjZcdTkxYjdcdTkxYjhcdTkxYjlcdTkxYmIiXSxbImUxODAiLCJcdTkxYmMiLDEwLCJcdTkxYzhcdTkxY2JcdTkxZDBc'@; put 'dTkxZDIiLDksIlx1OTFkZCIsOCwiXHU1ZTM3XHU1ZTQ0XHU1ZTU0XHU1ZTViXHU1ZTVlXHU1ZTYxXHU1YzhjXHU1YzdhXHU1YzhkXHU1YzkwXHU1Yzk2XHU1Yzg4XHU1Yzk4XHU1Yzk5XHU1YzkxXHU1YzlhXHU1YzljXHU1Y2I1XHU1Y2EyXHU1Y2JkXHU1Y2FjXHU1Y2FiXHU1Y2IxXHU1Y2Ez'@; put 'XHU1Y2MxXHU1Y2I3XHU1Y2M0XHU1Y2QyXHU1Y2U0XHU1Y2NiXHU1Y2U1XHU1ZDAyXHU1ZDAzXHU1ZDI3XHU1ZDI2XHU1ZDJlXHU1ZDI0XHU1ZDFlXHU1ZDA2XHU1ZDFiXHU1ZDU4XHU1ZDNlXHU1ZDM0XHU1ZDNkXHU1ZDZjXHU1ZDViXHU1ZDZmXHU1ZDVkXHU1ZDZiXHU1ZDRiXHU1ZDRhXHU1'@; put 'ZDY5XHU1ZDc0XHU1ZDgyXHU1ZDk5XHU1ZDlkXHU4YzczXHU1ZGI3XHU1ZGM1XHU1ZjczXHU1Zjc3XHU1ZjgyXHU1Zjg3XHU1Zjg5XHU1ZjhjXHU1Zjk1XHU1Zjk5XHU1ZjljXHU1ZmE4XHU1ZmFkXHU1ZmI1XHU1ZmJjXHU4ODYyXHU1ZjYxXHU3MmFkXHU3MmIwXHU3MmI0XHU3MmI3XHU3MmI4'@; put 'XHU3MmMzXHU3MmMxXHU3MmNlXHU3MmNkXHU3MmQyXHU3MmU4XHU3MmVmXHU3MmU5XHU3MmYyXHU3MmY0XHU3MmY3XHU3MzAxXHU3MmYzXHU3MzAzXHU3MmZhIl0sWyJlMjQwIiwiXHU5MWU2Iiw2Ml0sWyJlMjgwIiwiXHU5MjI1IiwzMiwiXHU3MmZiXHU3MzE3XHU3MzEzXHU3MzIxXHU3MzBh'@; put 'XHU3MzFlXHU3MzFkXHU3MzE1XHU3MzIyXHU3MzM5XHU3MzI1XHU3MzJjXHU3MzM4XHU3MzMxXHU3MzUwXHU3MzRkXHU3MzU3XHU3MzYwXHU3MzZjXHU3MzZmXHU3MzdlXHU4MjFiXHU1OTI1XHU5OGU3XHU1OTI0XHU1OTAyXHU5OTYzXHU5OTY3Iiw1LCJcdTk5NzRcdTk5NzdcdTk5N2RcdTk5'@; put 'ODBcdTk5ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFcdTVlOGJcdTVlOTZcdTVlYTVcdTVlYTBcdTVlYjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVlZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRc'@; put 'dTVmYzlcdTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVmZWFcdTVmZWRcdTVmZjhcdTYwMTlcdTYwMzVcdTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlcdTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYw'@; put 'N2JcdTYwN2FcdTYwNDIiXSxbImUzNDAiLCJcdTkyNDYiLDQ1LCJcdTkyNzUiLDE2XSxbImUzODAiLCJcdTkyODYiLDcsIlx1OTI4ZiIsMjQsIlx1NjA2YVx1NjA3ZFx1NjA5Nlx1NjA5YVx1NjBhZFx1NjA5ZFx1NjA4M1x1NjA5Mlx1NjA4Y1x1NjA5Ylx1NjBlY1x1NjBiYlx1NjBiMVx1NjBk'@; put 'ZFx1NjBkOFx1NjBjNlx1NjBkYVx1NjBiNFx1NjEyMFx1NjEyNlx1NjExNVx1NjEyM1x1NjBmNFx1NjEwMFx1NjEwZVx1NjEyYlx1NjE0YVx1NjE3NVx1NjFhY1x1NjE5NFx1NjFhN1x1NjFiN1x1NjFkNFx1NjFmNVx1NWZkZFx1OTZiM1x1OTVlOVx1OTVlYlx1OTVmMVx1OTVmM1x1OTVmNVx1'@; put 'OTVmNlx1OTVmY1x1OTVmZVx1OTYwM1x1OTYwNFx1OTYwNlx1OTYwOFx1OTYwYVx1OTYwYlx1OTYwY1x1OTYwZFx1OTYwZlx1OTYxMlx1OTYxNVx1OTYxNlx1OTYxN1x1OTYxOVx1OTYxYVx1NGUyY1x1NzIzZlx1NjIxNVx1NmMzNVx1NmM1NFx1NmM1Y1x1NmM0YVx1NmNhM1x1NmM4NVx1NmM5'@; put 'MFx1NmM5NFx1NmM4Y1x1NmM2OFx1NmM2OVx1NmM3NFx1NmM3Nlx1NmM4Nlx1NmNhOVx1NmNkMFx1NmNkNFx1NmNhZFx1NmNmN1x1NmNmOFx1NmNmMVx1NmNkN1x1NmNiMlx1NmNlMFx1NmNkNlx1NmNmYVx1NmNlYlx1NmNlZVx1NmNiMVx1NmNkM1x1NmNlZlx1NmNmZSJdLFsiZTQ0MCIsIlx1'@; put 'OTJhOCIsNSwiXHU5MmFmIiwyNCwiXHU5MmM5IiwzMV0sWyJlNDgwIiwiXHU5MmU5IiwzMiwiXHU2ZDM5XHU2ZDI3XHU2ZDBjXHU2ZDQzXHU2ZDQ4XHU2ZDA3XHU2ZDA0XHU2ZDE5XHU2ZDBlXHU2ZDJiXHU2ZDRkXHU2ZDJlXHU2ZDM1XHU2ZDFhXHU2ZDRmXHU2ZDUyXHU2ZDU0XHU2ZDMzXHU2'@; put 'ZDkxXHU2ZDZmXHU2ZDllXHU2ZGEwXHU2ZDVlXHU2ZDkzXHU2ZDk0XHU2ZDVjXHU2ZDYwXHU2ZDdjXHU2ZDYzXHU2ZTFhXHU2ZGM3XHU2ZGM1XHU2ZGRlXHU2ZTBlXHU2ZGJmXHU2ZGUwXHU2ZTExXHU2ZGU2XHU2ZGRkXHU2ZGQ5XHU2ZTE2XHU2ZGFiXHU2ZTBjXHU2ZGFlXHU2ZTJiXHU2ZTZl'@; put 'XHU2ZTRlXHU2ZTZiXHU2ZWIyXHU2ZTVmXHU2ZTg2XHU2ZTUzXHU2ZTU0XHU2ZTMyXHU2ZTI1XHU2ZTQ0XHU2ZWRmXHU2ZWIxXHU2ZTk4XHU2ZWUwXHU2ZjJkXHU2ZWUyXHU2ZWE1XHU2ZWE3XHU2ZWJkXHU2ZWJiXHU2ZWI3XHU2ZWQ3XHU2ZWI0XHU2ZWNmXHU2ZThmXHU2ZWMyXHU2ZTlmXHU2'@; put 'ZjYyXHU2ZjQ2XHU2ZjQ3XHU2ZjI0XHU2ZjE1XHU2ZWY5XHU2ZjJmXHU2ZjM2XHU2ZjRiXHU2Zjc0XHU2ZjJhXHU2ZjA5XHU2ZjI5XHU2Zjg5XHU2ZjhkXHU2ZjhjXHU2Zjc4XHU2ZjcyXHU2ZjdjXHU2ZjdhXHU2ZmQxIl0sWyJlNTQwIiwiXHU5MzBhIiw1MSwiXHU5MzNmIiwxMF0sWyJlNTgw'@; put 'IiwiXHU5MzRhIiwzMSwiXHU5MzZiXHU2ZmM5XHU2ZmE3XHU2ZmI5XHU2ZmI2XHU2ZmMyXHU2ZmUxXHU2ZmVlXHU2ZmRlXHU2ZmUwXHU2ZmVmXHU3MDFhXHU3MDIzXHU3MDFiXHU3MDM5XHU3MDM1XHU3MDRmXHU3MDVlXHU1YjgwXHU1Yjg0XHU1Yjk1XHU1YjkzXHU1YmE1XHU1YmI4XHU3NTJm'@; put 'XHU5YTllXHU2NDM0XHU1YmU0XHU1YmVlXHU4OTMwXHU1YmYwXHU4ZTQ3XHU4YjA3XHU4ZmI2XHU4ZmQzXHU4ZmQ1XHU4ZmU1XHU4ZmVlXHU4ZmU0XHU4ZmU5XHU4ZmU2XHU4ZmYzXHU4ZmU4XHU5MDA1XHU5MDA0XHU5MDBiXHU5MDI2XHU5MDExXHU5MDBkXHU5MDE2XHU5MDIxXHU5MDM1XHU5'@; put 'MDM2XHU5MDJkXHU5MDJmXHU5MDQ0XHU5MDUxXHU5MDUyXHU5MDUwXHU5MDY4XHU5MDU4XHU5MDYyXHU5MDViXHU2NmI5XHU5MDc0XHU5MDdkXHU5MDgyXHU5MDg4XHU5MDgzXHU5MDhiXHU1ZjUwXHU1ZjU3XHU1ZjU2XHU1ZjU4XHU1YzNiXHU1NGFiXHU1YzUwXHU1YzU5XHU1YjcxXHU1YzYz'@; put 'XHU1YzY2XHU3ZmJjXHU1ZjJhXHU1ZjI5XHU1ZjJkXHU4Mjc0XHU1ZjNjXHU5YjNiXHU1YzZlXHU1OTgxXHU1OTgzXHU1OThkXHU1OWE5XHU1OWFhXHU1OWEzIl0sWyJlNjQwIiwiXHU5MzZjIiwzNCwiXHU5MzkwIiwyN10sWyJlNjgwIiwiXHU5M2FjIiwyOSwiXHU5M2NiXHU5M2NjXHU5M2Nk'@; put 'XHU1OTk3XHU1OWNhXHU1OWFiXHU1OTllXHU1OWE0XHU1OWQyXHU1OWIyXHU1OWFmXHU1OWQ3XHU1OWJlXHU1YTA1XHU1YTA2XHU1OWRkXHU1YTA4XHU1OWUzXHU1OWQ4XHU1OWY5XHU1YTBjXHU1YTA5XHU1YTMyXHU1YTM0XHU1YTExXHU1YTIzXHU1YTEzXHU1YTQwXHU1YTY3XHU1YTRhXHU1'@; put 'YTU1XHU1YTNjXHU1YTYyXHU1YTc1XHU4MGVjXHU1YWFhXHU1YTliXHU1YTc3XHU1YTdhXHU1YWJlXHU1YWViXHU1YWIyXHU1YWQyXHU1YWQ0XHU1YWI4XHU1YWUwXHU1YWUzXHU1YWYxXHU1YWQ2XHU1YWU2XHU1YWQ4XHU1YWRjXHU1YjA5XHU1YjE3XHU1YjE2XHU1YjMyXHU1YjM3XHU1YjQw'@; put 'XHU1YzE1XHU1YzFjXHU1YjVhXHU1YjY1XHU1YjczXHU1YjUxXHU1YjUzXHU1YjYyXHU5YTc1XHU5YTc3XHU5YTc4XHU5YTdhXHU5YTdmXHU5YTdkXHU5YTgwXHU5YTgxXHU5YTg1XHU5YTg4XHU5YThhXHU5YTkwXHU5YTkyXHU5YTkzXHU5YTk2XHU5YTk4XHU5YTliXHU5YTljXHU5YTlkXHU5'@; put 'YTlmXHU5YWEwXHU5YWEyXHU5YWEzXHU5YWE1XHU5YWE3XHU3ZTlmXHU3ZWExXHU3ZWEzXHU3ZWE1XHU3ZWE4XHU3ZWE5Il0sWyJlNzQwIiwiXHU5M2NlIiw3LCJcdTkzZDciLDU0XSxbImU3ODAiLCJcdTk0MGUiLDMyLCJcdTdlYWRcdTdlYjBcdTdlYmVcdTdlYzBcdTdlYzFcdTdlYzJcdTdl'@; put 'YzlcdTdlY2JcdTdlY2NcdTdlZDBcdTdlZDRcdTdlZDdcdTdlZGJcdTdlZTBcdTdlZTFcdTdlZThcdTdlZWJcdTdlZWVcdTdlZWZcdTdlZjFcdTdlZjJcdTdmMGRcdTdlZjZcdTdlZmFcdTdlZmJcdTdlZmVcdTdmMDFcdTdmMDJcdTdmMDNcdTdmMDdcdTdmMDhcdTdmMGJcdTdmMGNcdTdmMGZc'@; put 'dTdmMTFcdTdmMTJcdTdmMTdcdTdmMTlcdTdmMWNcdTdmMWJcdTdmMWZcdTdmMjEiLDYsIlx1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZiIsNCwiXHU3ZjM1XHU1ZTdhXHU3NTdmXHU1ZGRiXHU3NTNlXHU5MDk1XHU3MzhlXHU3MzkxXHU3M2FlXHU3M2EyXHU3MzlmXHU3M2NmXHU3M2My'@; put 'XHU3M2QxXHU3M2I3XHU3M2IzXHU3M2MwXHU3M2M5XHU3M2M4XHU3M2U1XHU3M2Q5XHU5ODdjXHU3NDBhXHU3M2U5XHU3M2U3XHU3M2RlXHU3M2JhXHU3M2YyXHU3NDBmXHU3NDJhXHU3NDViXHU3NDI2XHU3NDI1XHU3NDI4XHU3NDMwXHU3NDJlXHU3NDJjIl0sWyJlODQwIiwiXHU5NDJmIiwx'@; put 'NCwiXHU5NDNmIiw0MywiXHU5NDZjXHU5NDZkXHU5NDZlXHU5NDZmIl0sWyJlODgwIiwiXHU5NDcwIiwyMCwiXHU5NDkxXHU5NDk2XHU5NDk4XHU5NGM3XHU5NGNmXHU5NGQzXHU5NGQ0XHU5NGRhXHU5NGU2XHU5NGZiXHU5NTFjXHU5NTIwXHU3NDFiXHU3NDFhXHU3NDQxXHU3NDVjXHU3NDU3'@; put 'XHU3NDU1XHU3NDU5XHU3NDc3XHU3NDZkXHU3NDdlXHU3NDljXHU3NDhlXHU3NDgwXHU3NDgxXHU3NDg3XHU3NDhiXHU3NDllXHU3NGE4XHU3NGE5XHU3NDkwXHU3NGE3XHU3NGQyXHU3NGJhXHU5N2VhXHU5N2ViXHU5N2VjXHU2NzRjXHU2NzUzXHU2NzVlXHU2NzQ4XHU2NzY5XHU2N2E1XHU2'@; put 'Nzg3XHU2NzZhXHU2NzczXHU2Nzk4XHU2N2E3XHU2Nzc1XHU2N2E4XHU2NzllXHU2N2FkXHU2NzhiXHU2Nzc3XHU2NzdjXHU2N2YwXHU2ODA5XHU2N2Q4XHU2ODBhXHU2N2U5XHU2N2IwXHU2ODBjXHU2N2Q5XHU2N2I1XHU2N2RhXHU2N2IzXHU2N2RkXHU2ODAwXHU2N2MzXHU2N2I4XHU2N2Uy'@; put 'XHU2ODBlXHU2N2MxXHU2N2ZkXHU2ODMyXHU2ODMzXHU2ODYwXHU2ODYxXHU2ODRlXHU2ODYyXHU2ODQ0XHU2ODY0XHU2ODgzXHU2ODFkXHU2ODU1XHU2ODY2XHU2ODQxXHU2ODY3XHU2ODQwXHU2ODNlXHU2ODRhXHU2ODQ5XHU2ODI5XHU2OGI1XHU2ODhmXHU2ODc0XHU2ODc3XHU2ODkzXHU2'@; put 'ODZiXHU2OGMyXHU2OTZlXHU2OGZjXHU2OTFmXHU2OTIwXHU2OGY5Il0sWyJlOTQwIiwiXHU5NTI3XHU5NTMzXHU5NTNkXHU5NTQzXHU5NTQ4XHU5NTRiXHU5NTU1XHU5NTVhXHU5NTYwXHU5NTZlXHU5NTc0XHU5NTc1XHU5NTc3Iiw3LCJcdTk1ODAiLDQyXSxbImU5ODAiLCJcdTk1YWIiLDMy'@; put 'LCJcdTY5MjRcdTY4ZjBcdTY5MGJcdTY5MDFcdTY5NTdcdTY4ZTNcdTY5MTBcdTY5NzFcdTY5MzlcdTY5NjBcdTY5NDJcdTY5NWRcdTY5ODRcdTY5NmJcdTY5ODBcdTY5OThcdTY5NzhcdTY5MzRcdTY5Y2NcdTY5ODdcdTY5ODhcdTY5Y2VcdTY5ODlcdTY5NjZcdTY5NjNcdTY5NzlcdTY5OWJc'@; put 'dTY5YTdcdTY5YmJcdTY5YWJcdTY5YWRcdTY5ZDRcdTY5YjFcdTY5YzFcdTY5Y2FcdTY5ZGZcdTY5OTVcdTY5ZTBcdTY5OGRcdTY5ZmZcdTZhMmZcdTY5ZWRcdTZhMTdcdTZhMThcdTZhNjVcdTY5ZjJcdTZhNDRcdTZhM2VcdTZhYTBcdTZhNTBcdTZhNWJcdTZhMzVcdTZhOGVcdTZhNzlcdTZh'@; put 'M2RcdTZhMjhcdTZhNThcdTZhN2NcdTZhOTFcdTZhOTBcdTZhYTlcdTZhOTdcdTZhYWJcdTczMzdcdTczNTJcdTZiODFcdTZiODJcdTZiODdcdTZiODRcdTZiOTJcdTZiOTNcdTZiOGRcdTZiOWFcdTZiOWJcdTZiYTFcdTZiYWFcdThmNmJcdThmNmRcdThmNzFcdThmNzJcdThmNzNcdThmNzVc'@; put 'dThmNzZcdThmNzhcdThmNzdcdThmNzlcdThmN2FcdThmN2NcdThmN2VcdThmODFcdThmODJcdThmODRcdThmODdcdThmOGIiXSxbImVhNDAiLCJcdTk1Y2MiLDI3LCJcdTk1ZWNcdTk1ZmZcdTk2MDdcdTk2MTNcdTk2MThcdTk2MWJcdTk2MWVcdTk2MjBcdTk2MjMiLDYsIlx1OTYyYlx1OTYy'@; put 'Y1x1OTYyZFx1OTYyZlx1OTYzMFx1OTYzN1x1OTYzOFx1OTYzOVx1OTYzYVx1OTYzZVx1OTY0MVx1OTY0M1x1OTY0YVx1OTY0ZVx1OTY0Zlx1OTY1MVx1OTY1Mlx1OTY1M1x1OTY1Nlx1OTY1NyJdLFsiZWE4MCIsIlx1OTY1OFx1OTY1OVx1OTY1YVx1OTY1Y1x1OTY1ZFx1OTY1ZVx1OTY2MFx1'@; put 'OTY2M1x1OTY2NVx1OTY2Nlx1OTY2Ylx1OTY2ZCIsNCwiXHU5NjczXHU5Njc4IiwxMiwiXHU5Njg3XHU5Njg5XHU5NjhhXHU4ZjhkXHU4ZjhlXHU4ZjhmXHU4Zjk4XHU4ZjlhXHU4ZWNlXHU2MjBiXHU2MjE3XHU2MjFiXHU2MjFmXHU2MjIyXHU2MjIxXHU2MjI1XHU2MjI0XHU2MjJjXHU4MWU3'@; put 'XHU3NGVmXHU3NGY0XHU3NGZmXHU3NTBmXHU3NTExXHU3NTEzXHU2NTM0XHU2NWVlXHU2NWVmXHU2NWYwXHU2NjBhXHU2NjE5XHU2NzcyXHU2NjAzXHU2NjE1XHU2NjAwXHU3MDg1XHU2NmY3XHU2NjFkXHU2NjM0XHU2NjMxXHU2NjM2XHU2NjM1XHU4MDA2XHU2NjVmXHU2NjU0XHU2NjQxXHU2'@; put 'NjRmXHU2NjU2XHU2NjYxXHU2NjU3XHU2Njc3XHU2Njg0XHU2NjhjXHU2NmE3XHU2NjlkXHU2NmJlXHU2NmRiXHU2NmRjXHU2NmU2XHU2NmU5XHU4ZDMyXHU4ZDMzXHU4ZDM2XHU4ZDNiXHU4ZDNkXHU4ZDQwXHU4ZDQ1XHU4ZDQ2XHU4ZDQ4XHU4ZDQ5XHU4ZDQ3XHU4ZDRkXHU4ZDU1XHU4ZDU5'@; put 'XHU4OWM3XHU4OWNhXHU4OWNiXHU4OWNjXHU4OWNlXHU4OWNmXHU4OWQwXHU4OWQxXHU3MjZlXHU3MjlmXHU3MjVkXHU3MjY2XHU3MjZmXHU3MjdlXHU3MjdmXHU3Mjg0XHU3MjhiXHU3MjhkXHU3MjhmXHU3MjkyXHU2MzA4XHU2MzMyXHU2M2IwIl0sWyJlYjQwIiwiXHU5NjhjXHU5NjhlXHU5'@; put 'NjkxXHU5NjkyXHU5NjkzXHU5Njk1XHU5Njk2XHU5NjlhXHU5NjliXHU5NjlkIiw5LCJcdTk2YTgiLDcsIlx1OTZiMVx1OTZiMlx1OTZiNFx1OTZiNVx1OTZiN1x1OTZiOFx1OTZiYVx1OTZiYlx1OTZiZlx1OTZjMlx1OTZjM1x1OTZjOFx1OTZjYVx1OTZjYlx1OTZkMFx1OTZkMVx1OTZkM1x1'@; put 'OTZkNFx1OTZkNiIsOSwiXHU5NmUxIiw2LCJcdTk2ZWIiXSxbImViODAiLCJcdTk2ZWNcdTk2ZWRcdTk2ZWVcdTk2ZjBcdTk2ZjFcdTk2ZjJcdTk2ZjRcdTk2ZjVcdTk2ZjhcdTk2ZmFcdTk2ZmJcdTk2ZmNcdTk2ZmRcdTk2ZmZcdTk3MDJcdTk3MDNcdTk3MDVcdTk3MGFcdTk3MGJcdTk3MGNc'@; put 'dTk3MTBcdTk3MTFcdTk3MTJcdTk3MTRcdTk3MTVcdTk3MTciLDQsIlx1OTcxZFx1OTcxZlx1OTcyMFx1NjQzZlx1NjRkOFx1ODAwNFx1NmJlYVx1NmJmM1x1NmJmZFx1NmJmNVx1NmJmOVx1NmMwNVx1NmMwN1x1NmMwNlx1NmMwZFx1NmMxNVx1NmMxOFx1NmMxOVx1NmMxYVx1NmMyMVx1NmMy'@; put 'OVx1NmMyNFx1NmMyYVx1NmMzMlx1NjUzNVx1NjU1NVx1NjU2Ylx1NzI0ZFx1NzI1Mlx1NzI1Nlx1NzIzMFx1ODY2Mlx1NTIxNlx1ODA5Zlx1ODA5Y1x1ODA5M1x1ODBiY1x1NjcwYVx1ODBiZFx1ODBiMVx1ODBhYlx1ODBhZFx1ODBiNFx1ODBiN1x1ODBlN1x1ODBlOFx1ODBlOVx1ODBlYVx1'@; put 'ODBkYlx1ODBjMlx1ODBjNFx1ODBkOVx1ODBjZFx1ODBkN1x1NjcxMFx1ODBkZFx1ODBlYlx1ODBmMVx1ODBmNFx1ODBlZFx1ODEwZFx1ODEwZVx1ODBmMlx1ODBmY1x1NjcxNVx1ODExMlx1OGM1YVx1ODEzNlx1ODExZVx1ODEyY1x1ODExOFx1ODEzMlx1ODE0OFx1ODE0Y1x1ODE1M1x1ODE3'@; put 'NFx1ODE1OVx1ODE1YVx1ODE3MVx1ODE2MFx1ODE2OVx1ODE3Y1x1ODE3ZFx1ODE2ZFx1ODE2N1x1NTg0ZFx1NWFiNVx1ODE4OFx1ODE4Mlx1ODE5MVx1NmVkNVx1ODFhM1x1ODFhYVx1ODFjY1x1NjcyNlx1ODFjYVx1ODFiYiJdLFsiZWM0MCIsIlx1OTcyMSIsOCwiXHU5NzJiXHU5NzJjXHU5'@; put 'NzJlXHU5NzJmXHU5NzMxXHU5NzMzIiw0LCJcdTk3M2FcdTk3M2JcdTk3M2NcdTk3M2RcdTk3M2YiLDE4LCJcdTk3NTRcdTk3NTVcdTk3NTdcdTk3NThcdTk3NWFcdTk3NWNcdTk3NWRcdTk3NWZcdTk3NjNcdTk3NjRcdTk3NjZcdTk3NjdcdTk3NjhcdTk3NmEiLDddLFsiZWM4MCIsIlx1OTc3'@; put 'Mlx1OTc3NVx1OTc3NyIsNCwiXHU5NzdkIiw3LCJcdTk3ODYiLDQsIlx1OTc4Y1x1OTc4ZVx1OTc4Zlx1OTc5MFx1OTc5M1x1OTc5NVx1OTc5Nlx1OTc5N1x1OTc5OSIsNCwiXHU4MWMxXHU4MWE2XHU2YjI0XHU2YjM3XHU2YjM5XHU2YjQzXHU2YjQ2XHU2YjU5XHU5OGQxXHU5OGQyXHU5OGQz'@; put 'XHU5OGQ1XHU5OGQ5XHU5OGRhXHU2YmIzXHU1ZjQwXHU2YmMyXHU4OWYzXHU2NTkwXHU5ZjUxXHU2NTkzXHU2NWJjXHU2NWM2XHU2NWM0XHU2NWMzXHU2NWNjXHU2NWNlXHU2NWQyXHU2NWQ2XHU3MDgwXHU3MDljXHU3MDk2XHU3MDlkXHU3MGJiXHU3MGMwXHU3MGI3XHU3MGFiXHU3MGIxXHU3'@; put 'MGU4XHU3MGNhXHU3MTEwXHU3MTEzXHU3MTE2XHU3MTJmXHU3MTMxXHU3MTczXHU3MTVjXHU3MTY4XHU3MTQ1XHU3MTcyXHU3MTRhXHU3MTc4XHU3MTdhXHU3MTk4XHU3MWIzXHU3MWI1XHU3MWE4XHU3MWEwXHU3MWUwXHU3MWQ0XHU3MWU3XHU3MWY5XHU3MjFkXHU3MjI4XHU3MDZjXHU3MTE4'@; put 'XHU3MTY2XHU3MWI5XHU2MjNlXHU2MjNkXHU2MjQzXHU2MjQ4XHU2MjQ5XHU3OTNiXHU3OTQwXHU3OTQ2XHU3OTQ5XHU3OTViXHU3OTVjXHU3OTUzXHU3OTVhXHU3OTYyXHU3OTU3XHU3OTYwXHU3OTZmXHU3OTY3XHU3OTdhXHU3OTg1XHU3OThhXHU3OTlhXHU3OWE3XHU3OWIzXHU1ZmQxXHU1'@; put 'ZmQwIl0sWyJlZDQwIiwiXHU5NzllXHU5NzlmXHU5N2ExXHU5N2EyXHU5N2E0Iiw2LCJcdTk3YWNcdTk3YWVcdTk3YjBcdTk3YjFcdTk3YjNcdTk3YjUiLDQ2XSxbImVkODAiLCJcdTk3ZTRcdTk3ZTVcdTk3ZThcdTk3ZWUiLDQsIlx1OTdmNFx1OTdmNyIsMjMsIlx1NjAzY1x1NjA1ZFx1NjA1'@; put 'YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFjYlx1NjFkMVx1NjIwNlx1ODA4MFx1ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1NzgwMFx1NzgwOVx1NzgxN1x1NzgxOFx1NzgxMVx1NjVhYlx1NzgyZFx1'@; put 'NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1Nzg5M1x1Nzg5YVx1Nzg4N1x1Nzg5Y1x1NzhhMVx1NzhhM1x1Nzhi'@; put 'Mlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1NzkyNFx1NzkxZVx1NzkzNFx1OWY5Ylx1OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZmOVx1NzcwN1x1NzcwOFx1NzcxYVx1NzcyMlx1NzcxOVx1NzcyZFx1'@; put 'NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OCJdLFsiZWU0MCIsIlx1OTgwZiIsNjJdLFsiZWU4MCIsIlx1OTg0ZSIsMzIsIlx1Nzc2Mlx1Nzc2NVx1Nzc3Zlx1Nzc4ZFx1Nzc3ZFx1Nzc4MFx1Nzc4Y1x1Nzc5MVx1Nzc5Zlx1NzdhMFx1NzdiMFx1'@; put 'NzdiNVx1NzdiZFx1NzUzYVx1NzU0MFx1NzU0ZVx1NzU0Ylx1NzU0OFx1NzU1Ylx1NzU3Mlx1NzU3OVx1NzU4M1x1N2Y1OFx1N2Y2MVx1N2Y1Zlx1OGE0OFx1N2Y2OFx1N2Y3NFx1N2Y3MVx1N2Y3OVx1N2Y4MVx1N2Y3ZVx1NzZjZFx1NzZlNVx1ODgzMlx1OTQ4NVx1OTQ4Nlx1OTQ4N1x1OTQ4'@; put 'Ylx1OTQ4YVx1OTQ4Y1x1OTQ4ZFx1OTQ4Zlx1OTQ5MFx1OTQ5NFx1OTQ5N1x1OTQ5NVx1OTQ5YVx1OTQ5Ylx1OTQ5Y1x1OTRhM1x1OTRhNFx1OTRhYlx1OTRhYVx1OTRhZFx1OTRhY1x1OTRhZlx1OTRiMFx1OTRiMlx1OTRiNFx1OTRiNiIsNCwiXHU5NGJjXHU5NGJkXHU5NGJmXHU5NGM0XHU5'@; put 'NGM4Iiw2LCJcdTk0ZDBcdTk0ZDFcdTk0ZDJcdTk0ZDVcdTk0ZDZcdTk0ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWEiXSxbImVmNDAiLCJcdTk4NmYiLDUsIlx1OTg4Ylx1OTg4ZVx1OTg5Mlx1OTg5NVx1'@; put 'OTg5OVx1OThhM1x1OThhOCIsMzcsIlx1OThjZlx1OThkMFx1OThkNFx1OThkNlx1OThkN1x1OThkYlx1OThkY1x1OThkZFx1OThlMCIsNF0sWyJlZjgwIiwiXHU5OGU1XHU5OGU2XHU5OGU5IiwzMCwiXHU5NGU5XHU5NGViXHU5NGVlXHU5NGVmXHU5NGYzXHU5NGY0XHU5NGY1XHU5NGY3XHU5'@; put 'NGY5XHU5NGZjXHU5NGZkXHU5NGZmXHU5NTAzXHU5NTAyXHU5NTA2XHU5NTA3XHU5NTA5XHU5NTBhXHU5NTBkXHU5NTBlXHU5NTBmXHU5NTEyIiw0LCJcdTk1MThcdTk1MWJcdTk1MWRcdTk1MWVcdTk1MWZcdTk1MjJcdTk1MmFcdTk1MmJcdTk1MjlcdTk1MmNcdTk1MzFcdTk1MzJcdTk1MzRc'@; put 'dTk1MzZcdTk1MzdcdTk1MzhcdTk1M2NcdTk1M2VcdTk1M2ZcdTk1NDJcdTk1MzVcdTk1NDRcdTk1NDVcdTk1NDZcdTk1NDlcdTk1NGNcdTk1NGVcdTk1NGZcdTk1NTJcdTk1NTNcdTk1NTRcdTk1NTZcdTk1NTdcdTk1NThcdTk1NTlcdTk1NWJcdTk1NWVcdTk1NWZcdTk1NWRcdTk1NjFcdTk1'@; put 'NjJcdTk1NjQiLDgsIlx1OTU2Zlx1OTU3MVx1OTU3Mlx1OTU3M1x1OTUzYVx1NzdlN1x1NzdlY1x1OTZjOVx1NzlkNVx1NzllZFx1NzllM1x1NzllYlx1N2EwNlx1NWQ0N1x1N2EwM1x1N2EwMlx1N2ExZVx1N2ExNCJdLFsiZjA0MCIsIlx1OTkwOCIsNCwiXHU5OTBlXHU5OTBmXHU5OTExIiwy'@; put 'OCwiXHU5OTJmIiwyNl0sWyJmMDgwIiwiXHU5OTRhIiw5LCJcdTk5NTYiLDEyLCJcdTk5NjRcdTk5NjZcdTk5NzNcdTk5NzhcdTk5NzlcdTk5N2JcdTk5N2VcdTk5ODJcdTk5ODNcdTk5ODlcdTdhMzlcdTdhMzdcdTdhNTFcdTllY2ZcdTk5YTVcdTdhNzBcdTc2ODhcdTc2OGVcdTc2OTNcdTc2'@; put 'OTlcdTc2YTRcdTc0ZGVcdTc0ZTBcdTc1MmNcdTllMjBcdTllMjJcdTllMjgiLDQsIlx1OWUzMlx1OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0N1x1OWU0OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0ZVx1OWU1MVx1'@; put 'OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1OWU1ZVx1OWU2M1x1OWU2NiIsNiwiXHU5ZTcxXHU5ZTZkXHU5ZTczXHU3NTkyXHU3NTk0XHU3NTk2XHU3NWEwXHU3NTlkXHU3NWFjXHU3NWEzXHU3NWIzXHU3NWI0XHU3NWI4XHU3NWM0XHU3NWIxXHU3NWIwXHU3NWMzXHU3NWMyXHU3NWQ2'@; put 'XHU3NWNkXHU3NWUzXHU3NWU4XHU3NWU2XHU3NWU0XHU3NWViXHU3NWU3XHU3NjAzXHU3NWYxXHU3NWZjXHU3NWZmXHU3NjEwXHU3NjAwXHU3NjA1XHU3NjBjXHU3NjE3XHU3NjBhXHU3NjI1XHU3NjE4XHU3NjE1XHU3NjE5Il0sWyJmMTQwIiwiXHU5OThjXHU5OThlXHU5OTlhIiwxMCwiXHU5'@; put 'OWE2XHU5OWE3XHU5OWE5Iiw0N10sWyJmMTgwIiwiXHU5OWQ5IiwzMiwiXHU3NjFiXHU3NjNjXHU3NjIyXHU3NjIwXHU3NjQwXHU3NjJkXHU3NjMwXHU3NjNmXHU3NjM1XHU3NjQzXHU3NjNlXHU3NjMzXHU3NjRkXHU3NjVlXHU3NjU0XHU3NjVjXHU3NjU2XHU3NjZiXHU3NjZmXHU3ZmNhXHU3'@; put 'YWU2XHU3YTc4XHU3YTc5XHU3YTgwXHU3YTg2XHU3YTg4XHU3YTk1XHU3YWE2XHU3YWEwXHU3YWFjXHU3YWE4XHU3YWFkXHU3YWIzXHU4ODY0XHU4ODY5XHU4ODcyXHU4ODdkXHU4ODdmXHU4ODgyXHU4OGEyXHU4OGM2XHU4OGI3XHU4OGJjXHU4OGM5XHU4OGUyXHU4OGNlXHU4OGUzXHU4OGU1'@; put 'XHU4OGYxXHU4OTFhXHU4OGZjXHU4OGU4XHU4OGZlXHU4OGYwXHU4OTIxXHU4OTE5XHU4OTEzXHU4OTFiXHU4OTBhXHU4OTM0XHU4OTJiXHU4OTM2XHU4OTQxXHU4OTY2XHU4OTdiXHU3NThiXHU4MGU1XHU3NmIyXHU3NmI0XHU3N2RjXHU4MDEyXHU4MDE0XHU4MDE2XHU4MDFjXHU4MDIwXHU4'@; put 'MDIyXHU4MDI1XHU4MDI2XHU4MDI3XHU4MDI5XHU4MDI4XHU4MDMxXHU4MDBiXHU4MDM1XHU4MDQzXHU4MDQ2XHU4MDRkXHU4MDUyXHU4MDY5XHU4MDcxXHU4OTgzXHU5ODc4XHU5ODgwXHU5ODgzIl0sWyJmMjQwIiwiXHU5OWZhIiw2Ml0sWyJmMjgwIiwiXHU5YTM5IiwzMiwiXHU5ODg5XHU5'@; put 'ODhjXHU5ODhkXHU5ODhmXHU5ODk0XHU5ODlhXHU5ODliXHU5ODllXHU5ODlmXHU5OGExXHU5OGEyXHU5OGE1XHU5OGE2XHU4NjRkXHU4NjU0XHU4NjZjXHU4NjZlXHU4NjdmXHU4NjdhXHU4NjdjXHU4NjdiXHU4NmE4XHU4NjhkXHU4NjhiXHU4NmFjXHU4NjlkXHU4NmE3XHU4NmEzXHU4NmFh'@; put 'XHU4NjkzXHU4NmE5XHU4NmI2XHU4NmM0XHU4NmI1XHU4NmNlXHU4NmIwXHU4NmJhXHU4NmIxXHU4NmFmXHU4NmM5XHU4NmNmXHU4NmI0XHU4NmU5XHU4NmYxXHU4NmYyXHU4NmVkXHU4NmYzXHU4NmQwXHU4NzEzXHU4NmRlXHU4NmY0XHU4NmRmXHU4NmQ4XHU4NmQxXHU4NzAzXHU4NzA3XHU4'@; put 'NmY4XHU4NzA4XHU4NzBhXHU4NzBkXHU4NzA5XHU4NzIzXHU4NzNiXHU4NzFlXHU4NzI1XHU4NzJlXHU4NzFhXHU4NzNlXHU4NzQ4XHU4NzM0XHU4NzMxXHU4NzI5XHU4NzM3XHU4NzNmXHU4NzgyXHU4NzIyXHU4NzdkXHU4NzdlXHU4NzdiXHU4NzYwXHU4NzcwXHU4NzRjXHU4NzZlXHU4Nzhi'@; put 'XHU4NzUzXHU4NzYzXHU4NzdjXHU4NzY0XHU4NzU5XHU4NzY1XHU4NzkzXHU4N2FmXHU4N2E4XHU4N2QyIl0sWyJmMzQwIiwiXHU5YTVhIiwxNywiXHU5YTcyXHU5YTgzXHU5YTg5XHU5YThkXHU5YThlXHU5YTk0XHU5YTk1XHU5YTk5XHU5YWE2XHU5YWE5Iiw2LCJcdTlhYjJcdTlhYjNcdTlh'@; put 'YjRcdTlhYjVcdTlhYjlcdTlhYmJcdTlhYmRcdTlhYmVcdTlhYmZcdTlhYzNcdTlhYzRcdTlhYzYiLDQsIlx1OWFjZFx1OWFjZVx1OWFjZlx1OWFkMFx1OWFkMlx1OWFkNFx1OWFkNVx1OWFkNlx1OWFkN1x1OWFkOVx1OWFkYVx1OWFkYlx1OWFkYyJdLFsiZjM4MCIsIlx1OWFkZFx1OWFkZVx1'@; put 'OWFlMFx1OWFlMlx1OWFlM1x1OWFlNFx1OWFlNVx1OWFlN1x1OWFlOFx1OWFlOVx1OWFlYVx1OWFlY1x1OWFlZVx1OWFmMCIsOCwiXHU5YWZhXHU5YWZjIiw2LCJcdTliMDRcdTliMDVcdTliMDZcdTg3YzZcdTg3ODhcdTg3ODVcdTg3YWRcdTg3OTdcdTg3ODNcdTg3YWJcdTg3ZTVcdTg3YWNc'@; put 'dTg3YjVcdTg3YjNcdTg3Y2JcdTg3ZDNcdTg3YmRcdTg3ZDFcdTg3YzBcdTg3Y2FcdTg3ZGJcdTg3ZWFcdTg3ZTBcdTg3ZWVcdTg4MTZcdTg4MTNcdTg3ZmVcdTg4MGFcdTg4MWJcdTg4MjFcdTg4MzlcdTg4M2NcdTdmMzZcdTdmNDJcdTdmNDRcdTdmNDVcdTgyMTBcdTdhZmFcdTdhZmRcdTdi'@; put 'MDhcdTdiMDNcdTdiMDRcdTdiMTVcdTdiMGFcdTdiMmJcdTdiMGZcdTdiNDdcdTdiMzhcdTdiMmFcdTdiMTlcdTdiMmVcdTdiMzFcdTdiMjBcdTdiMjVcdTdiMjRcdTdiMzNcdTdiM2VcdTdiMWVcdTdiNThcdTdiNWFcdTdiNDVcdTdiNzVcdTdiNGNcdTdiNWRcdTdiNjBcdTdiNmVcdTdiN2Jc'@; put 'dTdiNjJcdTdiNzJcdTdiNzFcdTdiOTBcdTdiYTZcdTdiYTdcdTdiYjhcdTdiYWNcdTdiOWRcdTdiYThcdTdiODVcdTdiYWFcdTdiOWNcdTdiYTJcdTdiYWJcdTdiYjRcdTdiZDFcdTdiYzFcdTdiY2NcdTdiZGRcdTdiZGFcdTdiZTVcdTdiZTZcdTdiZWFcdTdjMGNcdTdiZmVcdTdiZmNcdTdj'@; put 'MGZcdTdjMTZcdTdjMGIiXSxbImY0NDAiLCJcdTliMDdcdTliMDkiLDUsIlx1OWIxMFx1OWIxMVx1OWIxMlx1OWIxNCIsMTAsIlx1OWIyMFx1OWIyMVx1OWIyMlx1OWIyNCIsMTAsIlx1OWIzMFx1OWIzMVx1OWIzMyIsNywiXHU5YjNkXHU5YjNlXHU5YjNmXHU5YjQwXHU5YjQ2XHU5YjRhXHU5'@; put 'YjRiXHU5YjRjXHU5YjRlXHU5YjUwXHU5YjUyXHU5YjUzXHU5YjU1Iiw1XSxbImY0ODAiLCJcdTliNWIiLDMyLCJcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDRcdTgxZWNcdTg4NDRcdTgyMjFcdTgyMjJcdTgyMjNcdTgyMmRcdTgy'@; put 'MmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlcdTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5NWVcdTdmOWRcdTdmOWZcdTdmYTdcdTdmYWZcdTdmYjBcdTdmYjJcdTdjN2Nc'@; put 'dTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdjYzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZcdTdmY2VcdTdmZDVcdTdmZTVcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZWVcdTdm'@; put 'ZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNcdThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkxNGVcdTkxNGZcdTkxNjQiXSxbImY1NDAiLCJcdTliN2MiLDYyXSxbImY1ODAi'@; put 'LCJcdTliYmIiLDMyLCJcdTkxNjJcdTkxNjFcdTkxNzBcdTkxNjlcdTkxNmZcdTkxN2RcdTkxN2VcdTkxNzJcdTkxNzRcdTkxNzlcdTkxOGNcdTkxODVcdTkxOTBcdTkxOGRcdTkxOTFcdTkxYTJcdTkxYTNcdTkxYWFcdTkxYWRcdTkxYWVcdTkxYWZcdTkxYjVcdTkxYjRcdTkxYmFcdThjNTVc'@; put 'dTllN2VcdThkYjhcdThkZWJcdThlMDVcdThlNTlcdThlNjlcdThkYjVcdThkYmZcdThkYmNcdThkYmFcdThkYzRcdThkZDZcdThkZDdcdThkZGFcdThkZGVcdThkY2VcdThkY2ZcdThkZGJcdThkYzZcdThkZWNcdThkZjdcdThkZjhcdThkZTNcdThkZjlcdThkZmJcdThkZTRcdThlMDlcdThk'@; put 'ZmRcdThlMTRcdThlMWRcdThlMWZcdThlMmNcdThlMmVcdThlMjNcdThlMmZcdThlM2FcdThlNDBcdThlMzlcdThlMzVcdThlM2RcdThlMzFcdThlNDlcdThlNDFcdThlNDJcdThlNTFcdThlNTJcdThlNGFcdThlNzBcdThlNzZcdThlN2NcdThlNmZcdThlNzRcdThlODVcdThlOGZcdThlOTRc'@; put 'dThlOTBcdThlOWNcdThlOWVcdThjNzhcdThjODJcdThjOGFcdThjODVcdThjOThcdThjOTRcdTY1OWJcdTg5ZDZcdTg5ZGVcdTg5ZGFcdTg5ZGMiXSxbImY2NDAiLCJcdTliZGMiLDYyXSxbImY2ODAiLCJcdTljMWIiLDMyLCJcdTg5ZTVcdTg5ZWJcdTg5ZWZcdThhM2VcdThiMjZcdTk3NTNc'@; put 'dTk2ZTlcdTk2ZjNcdTk2ZWZcdTk3MDZcdTk3MDFcdTk3MDhcdTk3MGZcdTk3MGVcdTk3MmFcdTk3MmRcdTk3MzBcdTk3M2VcdTlmODBcdTlmODNcdTlmODUiLDUsIlx1OWY4Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1OTZiY1x1OTZiZFx1OTZjZVx1OTZkMlx1NzdiZlx1OTZlMFx1OTI4'@; put 'ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5NFx1OWM5NVx1OWM5YVx1OWM5Ylx1OWM5ZSIsNSwiXHU5Y2E1Iiw0'@; put 'LCJcdTljYWJcdTljYWRcdTljYWVcdTljYjAiLDcsIlx1OWNiYVx1OWNiYlx1OWNiY1x1OWNiZFx1OWNjNFx1OWNjNVx1OWNjNlx1OWNjN1x1OWNjYVx1OWNjYiJdLFsiZjc0MCIsIlx1OWMzYyIsNjJdLFsiZjc4MCIsIlx1OWM3Ylx1OWM3ZFx1OWM3ZVx1OWM4MFx1OWM4M1x1OWM4NFx1OWM4'@; put 'OVx1OWM4YVx1OWM4Y1x1OWM4Zlx1OWM5M1x1OWM5Nlx1OWM5N1x1OWM5OFx1OWM5OVx1OWM5ZFx1OWNhYVx1OWNhY1x1OWNhZlx1OWNiOVx1OWNiZSIsNCwiXHU5Y2M4XHU5Y2M5XHU5Y2QxXHU5Y2QyXHU5Y2RhXHU5Y2RiXHU5Y2UwXHU5Y2UxXHU5Y2NjIiw0LCJcdTljZDNcdTljZDRcdTlj'@; put 'ZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTllNThcdTlhYjZcdTlhYmFcdTlhYmNcdTlhYzFcdTlhYzBcdTlhYzVc'@; put 'dTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThcdTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZmJcdTlhZWRcdTlhZjlcdTliMDhcdTliMGZcdTliMTNcdTli'@; put 'MWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTllOWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTllZTVcdTllZWFcdTllZWZcdTlmMjJcdTlmMmNcdTlmMmZcdTlmMzlc'@; put 'dTlmMzdcdTlmM2RcdTlmM2VcdTlmNDQiXSxbImY4NDAiLCJcdTljZTMiLDYyXSxbImY4ODAiLCJcdTlkMjIiLDMyXSxbImY5NDAiLCJcdTlkNDMiLDYyXSxbImY5ODAiLCJcdTlkODIiLDMyXSxbImZhNDAiLCJcdTlkYTMiLDYyXSxbImZhODAiLCJcdTlkZTIiLDMyXSxbImZiNDAiLCJcdTll'@; put 'MDMiLDI3LCJcdTllMjRcdTllMjdcdTllMmVcdTllMzBcdTllMzRcdTllM2JcdTllM2NcdTllNDBcdTllNGRcdTllNTBcdTllNTJcdTllNTNcdTllNTRcdTllNTZcdTllNTlcdTllNWRcdTllNWZcdTllNjBcdTllNjFcdTllNjJcdTllNjVcdTllNmVcdTllNmZcdTllNzJcdTllNzQiLDksIlx1'@; put 'OWU4MCJdLFsiZmI4MCIsIlx1OWU4MVx1OWU4M1x1OWU4NFx1OWU4NVx1OWU4Nlx1OWU4OVx1OWU4YVx1OWU4YyIsNSwiXHU5ZTk0Iiw4LCJcdTllOWVcdTllYTAiLDUsIlx1OWVhN1x1OWVhOFx1OWVhOVx1OWVhYSJdLFsiZmM0MCIsIlx1OWVhYiIsOCwiXHU5ZWI1XHU5ZWI2XHU5ZWI3XHU5'@; put 'ZWI5XHU5ZWJhXHU5ZWJjXHU5ZWJmIiw0LCJcdTllYzVcdTllYzZcdTllYzdcdTllYzhcdTllY2FcdTllY2JcdTllY2NcdTllZDBcdTllZDJcdTllZDNcdTllZDVcdTllZDZcdTllZDdcdTllZDlcdTllZGFcdTllZGVcdTllZTFcdTllZTNcdTllZTRcdTllZTZcdTllZThcdTllZWJcdTllZWNc'@; put 'dTllZWRcdTllZWVcdTllZjAiLDgsIlx1OWVmYVx1OWVmZFx1OWVmZiIsNl0sWyJmYzgwIiwiXHU5ZjA2Iiw0LCJcdTlmMGNcdTlmMGZcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTVcdTlmMTZcdTlmMThcdTlmMWEiLDUsIlx1OWYyMVx1OWYyMyIsOCwiXHU5ZjJkXHU5ZjJlXHU5ZjMwXHU5ZjMx'@; put 'Il0sWyJmZDQwIiwiXHU5ZjMyIiw0LCJcdTlmMzhcdTlmM2FcdTlmM2NcdTlmM2YiLDQsIlx1OWY0NSIsMTAsIlx1OWY1MiIsMzhdLFsiZmQ4MCIsIlx1OWY3OSIsNSwiXHU5ZjgxXHU5ZjgyXHU5ZjhkIiwxMSwiXHU5ZjljXHU5ZjlkXHU5ZjllXHU5ZmExIiw0LCJcdWY5MmNcdWY5NzlcdWY5'@; put 'OTVcdWY5ZTdcdWY5ZjEiXSxbImZlNDAiLCJcdWZhMGNcdWZhMGRcdWZhMGVcdWZhMGZcdWZhMTFcdWZhMTNcdWZhMTRcdWZhMThcdWZhMWZcdWZhMjBcdWZhMjFcdWZhMjNcdWZhMjRcdWZhMjdcdWZhMjhcdWZhMjkiXV0nKX0sMjExNjYoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUpT'@; put 'T04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjddLFsiODE0MSIsIlx1YWMwMlx1YWMwM1x1YWMwNVx1YWMwNlx1YWMwYiIsNCwiXHVhYzE4XHVhYzFlXHVhYzFmXHVhYzIxXHVhYzIyXHVhYzIzXHVhYzI1Iiw2LCJcdWFjMmVcdWFjMzJcdWFjMzNcdWFjMzQiXSxbIjgxNjEiLCJcdWFjMzVc'@; put 'dWFjMzZcdWFjMzdcdWFjM2FcdWFjM2JcdWFjM2RcdWFjM2VcdWFjM2ZcdWFjNDEiLDksIlx1YWM0Y1x1YWM0ZSIsNSwiXHVhYzU1Il0sWyI4MTgxIiwiXHVhYzU2XHVhYzU3XHVhYzU5XHVhYzVhXHVhYzViXHVhYzVkIiwxOCwiXHVhYzcyXHVhYzczXHVhYzc1XHVhYzc2XHVhYzc5XHVhYzdi'@; put 'Iiw0LCJcdWFjODJcdWFjODdcdWFjODhcdWFjOGRcdWFjOGVcdWFjOGZcdWFjOTFcdWFjOTJcdWFjOTNcdWFjOTUiLDYsIlx1YWM5ZVx1YWNhMiIsNSwiXHVhY2FiXHVhY2FkXHVhY2FlXHVhY2IxIiw2LCJcdWFjYmFcdWFjYmVcdWFjYmZcdWFjYzBcdWFjYzJcdWFjYzNcdWFjYzVcdWFjYzZc'@; put 'dWFjYzdcdWFjYzlcdWFjY2FcdWFjY2JcdWFjY2QiLDcsIlx1YWNkNlx1YWNkOCIsNywiXHVhY2UyXHVhY2UzXHVhY2U1XHVhY2U2XHVhY2U5XHVhY2ViXHVhY2VkXHVhY2VlXHVhY2YyXHVhY2Y0XHVhY2Y3Iiw0LCJcdWFjZmVcdWFjZmZcdWFkMDFcdWFkMDJcdWFkMDNcdWFkMDVcdWFkMDci'@; put 'LDQsIlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxMyJdLFsiODI0MSIsIlx1YWQxNFx1YWQxNVx1YWQxNlx1YWQxN1x1YWQxOVx1YWQxYVx1YWQxYlx1YWQxZFx1YWQxZVx1YWQxZlx1YWQyMSIsNywiXHVhZDJhXHVhZDJiXHVhZDJlIiw1XSxbIjgyNjEiLCJcdWFkMzZcdWFkMzdcdWFkMzlcdWFk'@; put 'M2FcdWFkM2JcdWFkM2QiLDYsIlx1YWQ0Nlx1YWQ0OFx1YWQ0YSIsNSwiXHVhZDUxXHVhZDUyXHVhZDUzXHVhZDU1XHVhZDU2XHVhZDU3Il0sWyI4MjgxIiwiXHVhZDU5Iiw3LCJcdWFkNjJcdWFkNjQiLDcsIlx1YWQ2ZVx1YWQ2Zlx1YWQ3MVx1YWQ3Mlx1YWQ3N1x1YWQ3OFx1YWQ3OVx1YWQ3'@; put 'YVx1YWQ3ZVx1YWQ4MFx1YWQ4MyIsNCwiXHVhZDhhXHVhZDhiXHVhZDhkXHVhZDhlXHVhZDhmXHVhZDkxIiwxMCwiXHVhZDllIiw1LCJcdWFkYTUiLDE3LCJcdWFkYjgiLDcsIlx1YWRjMlx1YWRjM1x1YWRjNVx1YWRjNlx1YWRjN1x1YWRjOSIsNiwiXHVhZGQyXHVhZGQ0Iiw3LCJcdWFkZGRc'@; put 'dWFkZGVcdWFkZGZcdWFkZTFcdWFkZTJcdWFkZTNcdWFkZTUiLDE4XSxbIjgzNDEiLCJcdWFkZmFcdWFkZmJcdWFkZmRcdWFkZmVcdWFlMDIiLDUsIlx1YWUwYVx1YWUwY1x1YWUwZSIsNSwiXHVhZTE1Iiw3XSxbIjgzNjEiLCJcdWFlMWQiLDE4LCJcdWFlMzJcdWFlMzNcdWFlMzVcdWFlMzZc'@; put 'dWFlMzlcdWFlM2JcdWFlM2MiXSxbIjgzODEiLCJcdWFlM2RcdWFlM2VcdWFlM2ZcdWFlNDJcdWFlNDRcdWFlNDdcdWFlNDhcdWFlNDlcdWFlNGJcdWFlNGZcdWFlNTFcdWFlNTJcdWFlNTNcdWFlNTVcdWFlNTciLDQsIlx1YWU1ZVx1YWU2Mlx1YWU2M1x1YWU2NFx1YWU2Nlx1YWU2N1x1YWU2'@; put 'YVx1YWU2Ylx1YWU2ZFx1YWU2ZVx1YWU2Zlx1YWU3MSIsNiwiXHVhZTdhXHVhZTdlIiw1LCJcdWFlODYiLDUsIlx1YWU4ZCIsNDYsIlx1YWViZlx1YWVjMVx1YWVjMlx1YWVjM1x1YWVjNSIsNiwiXHVhZWNlXHVhZWQyIiw1LCJcdWFlZGFcdWFlZGJcdWFlZGQiLDhdLFsiODQ0MSIsIlx1YWVl'@; put 'Nlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZSIsNSwiXHVhZWY1XHVhZWY2XHVhZWY3XHVhZWY5XHVhZWZhXHVhZWZiXHVhZWZkIiw4XSxbIjg0NjEiLCJcdWFmMDZcdWFmMDlcdWFmMGFcdWFmMGJcdWFmMGNcdWFmMGVcdWFmMGZcdWFmMTEiLDE4XSxbIjg0ODEiLCJcdWFmMjQiLDcs'@; put 'Ilx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYzNSIsNiwiXHVhZjNlXHVhZjQwXHVhZjQ0XHVhZjQ1XHVhZjQ2XHVhZjQ3XHVhZjRhIiw1LCJcdWFmNTEiLDEwLCJcdWFmNWUiLDUsIlx1YWY2NiIsMTgsIlx1YWY3YSIsNSwiXHVhZjgxXHVhZjgyXHVhZjgzXHVhZjg1XHVhZjg2XHVhZjg3'@; put 'XHVhZjg5Iiw2LCJcdWFmOTJcdWFmOTNcdWFmOTRcdWFmOTYiLDUsIlx1YWY5ZCIsMjYsIlx1YWZiYVx1YWZiYlx1YWZiZFx1YWZiZSJdLFsiODU0MSIsIlx1YWZiZlx1YWZjMSIsNSwiXHVhZmNhXHVhZmNjXHVhZmNmIiw0LCJcdWFmZDUiLDYsIlx1YWZkZCIsNF0sWyI4NTYxIiwiXHVhZmUy'@; put 'Iiw1LCJcdWFmZWEiLDUsIlx1YWZmMlx1YWZmM1x1YWZmNVx1YWZmNlx1YWZmN1x1YWZmOSIsNiwiXHViMDAyXHViMDAzIl0sWyI4NTgxIiwiXHViMDA1Iiw2LCJcdWIwMGRcdWIwMGVcdWIwMGZcdWIwMTFcdWIwMTJcdWIwMTNcdWIwMTUiLDYsIlx1YjAxZSIsOSwiXHViMDI5IiwyNiwiXHVi'@; put 'MDQ2XHViMDQ3XHViMDQ5XHViMDRiXHViMDRkXHViMDRmXHViMDUwXHViMDUxXHViMDUyXHViMDU2XHViMDU4XHViMDVhXHViMDViXHViMDVjXHViMDVlIiwyOSwiXHViMDdlXHViMDdmXHViMDgxXHViMDgyXHViMDgzXHViMDg1Iiw2LCJcdWIwOGVcdWIwOTBcdWIwOTIiLDUsIlx1YjA5Ylx1'@; put 'YjA5ZFx1YjA5ZVx1YjBhM1x1YjBhNCJdLFsiODY0MSIsIlx1YjBhNVx1YjBhNlx1YjBhN1x1YjBhYVx1YjBiMFx1YjBiMlx1YjBiNlx1YjBiN1x1YjBiOVx1YjBiYVx1YjBiYlx1YjBiZCIsNiwiXHViMGM2XHViMGNhIiw1LCJcdWIwZDIiXSxbIjg2NjEiLCJcdWIwZDNcdWIwZDVcdWIwZDZc'@; put 'dWIwZDdcdWIwZDkiLDYsIlx1YjBlMVx1YjBlMlx1YjBlM1x1YjBlNFx1YjBlNiIsMTBdLFsiODY4MSIsIlx1YjBmMSIsMjIsIlx1YjEwYVx1YjEwZFx1YjEwZVx1YjEwZlx1YjExMVx1YjExNFx1YjExNVx1YjExNlx1YjExN1x1YjExYVx1YjExZSIsNCwiXHViMTI2XHViMTI3XHViMTI5XHVi'@; put 'MTJhXHViMTJiXHViMTJkIiw2LCJcdWIxMzZcdWIxM2EiLDUsIlx1YjE0Mlx1YjE0M1x1YjE0NVx1YjE0Nlx1YjE0N1x1YjE0OSIsNiwiXHViMTUyXHViMTUzXHViMTU2XHViMTU3XHViMTU5XHViMTVhXHViMTViXHViMTVkXHViMTVlXHViMTVmXHViMTYxIiwyMiwiXHViMTdhXHViMTdiXHVi'@; put 'MTdkXHViMTdlXHViMTdmXHViMTgxXHViMTgzIiw0LCJcdWIxOGFcdWIxOGNcdWIxOGVcdWIxOGZcdWIxOTBcdWIxOTFcdWIxOTVcdWIxOTZcdWIxOTdcdWIxOTlcdWIxOWFcdWIxOWJcdWIxOWQiXSxbIjg3NDEiLCJcdWIxOWUiLDksIlx1YjFhOSIsMTVdLFsiODc2MSIsIlx1YjFiOSIsMTgs'@; put 'Ilx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFkNSJdLFsiODc4MSIsIlx1YjFkNiIsNSwiXHViMWRlXHViMWUwIiw3LCJcdWIxZWFcdWIxZWJcdWIxZWRcdWIxZWVcdWIxZWZcdWIxZjEiLDcsIlx1YjFmYVx1YjFmY1x1YjFmZSIsNSwiXHViMjA2XHViMjA3XHViMjA5'@; put 'XHViMjBhXHViMjBkIiw2LCJcdWIyMTZcdWIyMThcdWIyMWEiLDUsIlx1YjIyMSIsMTgsIlx1YjIzNSIsNiwiXHViMjNkIiwyNiwiXHViMjU5XHViMjVhXHViMjViXHViMjVkXHViMjVlXHViMjVmXHViMjYxIiw2LCJcdWIyNmEiLDRdLFsiODg0MSIsIlx1YjI2ZiIsNCwiXHViMjc2Iiw1LCJc'@; put 'dWIyN2QiLDYsIlx1YjI4Nlx1YjI4N1x1YjI4OFx1YjI4YSIsNF0sWyI4ODYxIiwiXHViMjhmXHViMjkyXHViMjkzXHViMjk1XHViMjk2XHViMjk3XHViMjliIiw0LCJcdWIyYTJcdWIyYTRcdWIyYTdcdWIyYThcdWIyYTlcdWIyYWJcdWIyYWRcdWIyYWVcdWIyYWZcdWIyYjFcdWIyYjJcdWIy'@; put 'YjNcdWIyYjVcdWIyYjZcdWIyYjciXSxbIjg4ODEiLCJcdWIyYjgiLDE1LCJcdWIyY2FcdWIyY2JcdWIyY2RcdWIyY2VcdWIyY2ZcdWIyZDFcdWIyZDMiLDQsIlx1YjJkYVx1YjJkY1x1YjJkZVx1YjJkZlx1YjJlMFx1YjJlMVx1YjJlM1x1YjJlN1x1YjJlOVx1YjJlYVx1YjJmMFx1YjJmMVx1'@; put 'YjJmMlx1YjJmNlx1YjJmY1x1YjJmZFx1YjJmZVx1YjMwMlx1YjMwM1x1YjMwNVx1YjMwNlx1YjMwN1x1YjMwOSIsNiwiXHViMzEyXHViMzE2Iiw1LCJcdWIzMWQiLDU0LCJcdWIzNTdcdWIzNTlcdWIzNWFcdWIzNWRcdWIzNjBcdWIzNjFcdWIzNjJcdWIzNjMiXSxbIjg5NDEiLCJcdWIzNjZc'@; put 'dWIzNjhcdWIzNmFcdWIzNmNcdWIzNmRcdWIzNmZcdWIzNzJcdWIzNzNcdWIzNzVcdWIzNzZcdWIzNzdcdWIzNzkiLDYsIlx1YjM4Mlx1YjM4NiIsNSwiXHViMzhkIl0sWyI4OTYxIiwiXHViMzhlXHViMzhmXHViMzkxXHViMzkyXHViMzkzXHViMzk1IiwxMCwiXHViM2EyIiw1LCJcdWIzYTlc'@; put 'dWIzYWFcdWIzYWJcdWIzYWQiXSxbIjg5ODEiLCJcdWIzYWUiLDIxLCJcdWIzYzZcdWIzYzdcdWIzYzlcdWIzY2FcdWIzY2RcdWIzY2ZcdWIzZDFcdWIzZDJcdWIzZDNcdWIzZDZcdWIzZDhcdWIzZGFcdWIzZGNcdWIzZGVcdWIzZGZcdWIzZTFcdWIzZTJcdWIzZTNcdWIzZTVcdWIzZTZcdWIz'@; put 'ZTdcdWIzZTkiLDE4LCJcdWIzZmQiLDE4LCJcdWI0MTEiLDYsIlx1YjQxOVx1YjQxYVx1YjQxYlx1YjQxZFx1YjQxZVx1YjQxZlx1YjQyMSIsNiwiXHViNDJhXHViNDJjIiw3LCJcdWI0MzUiLDE1XSxbIjhhNDEiLCJcdWI0NDUiLDEwLCJcdWI0NTJcdWI0NTNcdWI0NTVcdWI0NTZcdWI0NTdc'@; put 'dWI0NTkiLDYsIlx1YjQ2Mlx1YjQ2NFx1YjQ2NiJdLFsiOGE2MSIsIlx1YjQ2NyIsNCwiXHViNDZkIiwxOCwiXHViNDgxXHViNDgyIl0sWyI4YTgxIiwiXHViNDgzIiw0LCJcdWI0ODkiLDE5LCJcdWI0OWUiLDUsIlx1YjRhNVx1YjRhNlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZCIs'@; put 'NywiXHViNGI2XHViNGI4XHViNGJhIiw1LCJcdWI0YzFcdWI0YzJcdWI0YzNcdWI0YzVcdWI0YzZcdWI0YzdcdWI0YzkiLDYsIlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRkNFx1YjRkNiIsNSwiXHViNGRlXHViNGRmXHViNGUxXHViNGUyXHViNGU1XHViNGU3Iiw0LCJcdWI0ZWVcdWI0ZjBcdWI0'@; put 'ZjIiLDUsIlx1YjRmOSIsMjYsIlx1YjUxNlx1YjUxN1x1YjUxOVx1YjUxYVx1YjUxZCJdLFsiOGI0MSIsIlx1YjUxZSIsNSwiXHViNTI2XHViNTJiIiw0LCJcdWI1MzJcdWI1MzNcdWI1MzVcdWI1MzZcdWI1MzdcdWI1MzkiLDYsIlx1YjU0Mlx1YjU0NiJdLFsiOGI2MSIsIlx1YjU0N1x1YjU0'@; put 'OFx1YjU0OVx1YjU0YVx1YjU0ZVx1YjU0Zlx1YjU1MVx1YjU1Mlx1YjU1M1x1YjU1NSIsNiwiXHViNTVlXHViNTYyIiw4XSxbIjhiODEiLCJcdWI1NmIiLDUyLCJcdWI1YTJcdWI1YTNcdWI1YTVcdWI1YTZcdWI1YTdcdWI1YTlcdWI1YWNcdWI1YWRcdWI1YWVcdWI1YWZcdWI1YjJcdWI1YjYi'@; put 'LDQsIlx1YjViZVx1YjViZlx1YjVjMVx1YjVjMlx1YjVjM1x1YjVjNSIsNiwiXHViNWNlXHViNWQyIiw1LCJcdWI1ZDkiLDE4LCJcdWI1ZWQiLDE4XSxbIjhjNDEiLCJcdWI2MDAiLDE1LCJcdWI2MTJcdWI2MTNcdWI2MTVcdWI2MTZcdWI2MTdcdWI2MTkiLDRdLFsiOGM2MSIsIlx1YjYxZSIs'@; put 'NiwiXHViNjI2Iiw1LCJcdWI2MmQiLDYsIlx1YjYzNSIsNV0sWyI4YzgxIiwiXHViNjNiIiwxMiwiXHViNjQ5IiwyNiwiXHViNjY1XHViNjY2XHViNjY3XHViNjY5Iiw1MCwiXHViNjllXHViNjlmXHViNmExXHViNmEyXHViNmEzXHViNmE1Iiw1LCJcdWI2YWRcdWI2YWVcdWI2YWZcdWI2YjBc'@; put 'dWI2YjIiLDE2XSxbIjhkNDEiLCJcdWI2YzMiLDE2LCJcdWI2ZDUiLDhdLFsiOGQ2MSIsIlx1YjZkZSIsMTcsIlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1YjZmOVx1YjZmYSJdLFsiOGQ4MSIsIlx1YjZmYiIsNCwiXHViNzAyXHViNzAzXHViNzA0XHViNzA2IiwzMywi'@; put 'XHViNzJhXHViNzJiXHViNzJkXHViNzJlXHViNzMxIiw2LCJcdWI3M2FcdWI3M2MiLDcsIlx1Yjc0NVx1Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZCIsNiwiXHViNzU2Iiw5LCJcdWI3NjFcdWI3NjJcdWI3NjNcdWI3NjVcdWI3NjZcdWI3NjdcdWI3NjkiLDYsIlx1Yjc3Mlx1'@; put 'Yjc3NFx1Yjc3NiIsNSwiXHViNzdlXHViNzdmXHViNzgxXHViNzgyXHViNzgzXHViNzg1Iiw2LCJcdWI3OGVcdWI3OTNcdWI3OTRcdWI3OTVcdWI3OWFcdWI3OWJcdWI3OWRcdWI3OWUiXSxbIjhlNDEiLCJcdWI3OWZcdWI3YTEiLDYsIlx1YjdhYVx1YjdhZSIsNSwiXHViN2I2XHViN2I3XHVi'@; put 'N2I5Iiw4XSxbIjhlNjEiLCJcdWI3YzIiLDQsIlx1YjdjOFx1YjdjYSIsMTldLFsiOGU4MSIsIlx1YjdkZSIsMTMsIlx1YjdlZVx1YjdlZlx1YjdmMVx1YjdmMlx1YjdmM1x1YjdmNSIsNiwiXHViN2ZlXHViODAyIiw0LCJcdWI4MGFcdWI4MGJcdWI4MGRcdWI4MGVcdWI4MGZcdWI4MTEiLDYs'@; put 'Ilx1YjgxYVx1YjgxY1x1YjgxZSIsNSwiXHViODI2XHViODI3XHViODI5XHViODJhXHViODJiXHViODJkIiw2LCJcdWI4MzZcdWI4M2EiLDUsIlx1Yjg0MVx1Yjg0Mlx1Yjg0M1x1Yjg0NSIsMTEsIlx1Yjg1Mlx1Yjg1NCIsNywiXHViODVlXHViODVmXHViODYxXHViODYyXHViODYzXHViODY1'@; put 'Iiw2LCJcdWI4NmVcdWI4NzBcdWI4NzIiLDUsIlx1Yjg3OVx1Yjg3YVx1Yjg3Ylx1Yjg3ZCIsN10sWyI4ZjQxIiwiXHViODg1Iiw3LCJcdWI4OGUiLDE3XSxbIjhmNjEiLCJcdWI4YTAiLDcsIlx1YjhhOSIsNiwiXHViOGIxXHViOGIyXHViOGIzXHViOGI1XHViOGI2XHViOGI3XHViOGI5Iiw0'@; put 'XSxbIjhmODEiLCJcdWI4YmVcdWI4YmZcdWI4YzJcdWI4YzRcdWI4YzYiLDUsIlx1YjhjZFx1YjhjZVx1YjhjZlx1YjhkMVx1YjhkMlx1YjhkM1x1YjhkNSIsNywiXHViOGRlXHViOGUwXHViOGUyIiw1LCJcdWI4ZWFcdWI4ZWJcdWI4ZWRcdWI4ZWVcdWI4ZWZcdWI4ZjEiLDYsIlx1YjhmYVx1'@; put 'YjhmY1x1YjhmZSIsNSwiXHViOTA1IiwxOCwiXHViOTE5Iiw2LCJcdWI5MjEiLDI2LCJcdWI5M2VcdWI5M2ZcdWI5NDFcdWI5NDJcdWI5NDNcdWI5NDUiLDYsIlx1Yjk0ZFx1Yjk0ZVx1Yjk1MFx1Yjk1MiIsNV0sWyI5MDQxIiwiXHViOTVhXHViOTViXHViOTVkXHViOTVlXHViOTVmXHViOTYx'@; put 'Iiw2LCJcdWI5NmFcdWI5NmNcdWI5NmUiLDUsIlx1Yjk3Nlx1Yjk3N1x1Yjk3OVx1Yjk3YVx1Yjk3Ylx1Yjk3ZCJdLFsiOTA2MSIsIlx1Yjk3ZSIsNSwiXHViOTg2XHViOTg4XHViOThiXHViOThjXHViOThmIiwxNV0sWyI5MDgxIiwiXHViOTlmIiwxMiwiXHViOWFlXHViOWFmXHViOWIxXHVi'@; put 'OWIyXHViOWIzXHViOWI1Iiw2LCJcdWI5YmVcdWI5YzBcdWI5YzIiLDUsIlx1YjljYVx1YjljYlx1YjljZFx1YjlkMyIsNCwiXHViOWRhXHViOWRjXHViOWRmXHViOWUwXHViOWUyXHViOWU2XHViOWU3XHViOWU5XHViOWVhXHViOWViXHViOWVkIiw2LCJcdWI5ZjZcdWI5ZmIiLDQsIlx1YmEw'@; put 'MiIsNSwiXHViYTA5IiwxMSwiXHViYTE2IiwzMywiXHViYTNhXHViYTNiXHViYTNkXHViYTNlXHViYTNmXHViYTQxXHViYTQzXHViYTQ0XHViYTQ1XHViYTQ2Il0sWyI5MTQxIiwiXHViYTQ3XHViYTRhXHViYTRjXHViYTRmXHViYTUwXHViYTUxXHViYTUyXHViYTU2XHViYTU3XHViYTU5XHVi'@; put 'YTVhXHViYTViXHViYTVkIiw2LCJcdWJhNjZcdWJhNmEiLDVdLFsiOTE2MSIsIlx1YmE3Mlx1YmE3M1x1YmE3NVx1YmE3Nlx1YmE3N1x1YmE3OSIsOSwiXHViYTg2XHViYTg4XHViYTg5XHViYThhXHViYThiXHViYThkIiw1XSxbIjkxODEiLCJcdWJhOTMiLDIwLCJcdWJhYWFcdWJhYWRcdWJh'@; put 'YWVcdWJhYWZcdWJhYjFcdWJhYjMiLDQsIlx1YmFiYVx1YmFiY1x1YmFiZSIsNSwiXHViYWM1XHViYWM2XHViYWM3XHViYWM5IiwxNCwiXHViYWRhIiwzMywiXHViYWZkXHViYWZlXHViYWZmXHViYjAxXHViYjAyXHViYjAzXHViYjA1Iiw3LCJcdWJiMGVcdWJiMTBcdWJiMTIiLDUsIlx1YmIx'@; put 'OVx1YmIxYVx1YmIxYlx1YmIxZFx1YmIxZVx1YmIxZlx1YmIyMSIsNl0sWyI5MjQxIiwiXHViYjI4XHViYjJhXHViYjJjIiw3LCJcdWJiMzdcdWJiMzlcdWJiM2FcdWJiM2YiLDQsIlx1YmI0Nlx1YmI0OFx1YmI0YVx1YmI0Ylx1YmI0Y1x1YmI0ZVx1YmI1MVx1YmI1MiJdLFsiOTI2MSIsIlx1'@; put 'YmI1M1x1YmI1NVx1YmI1Nlx1YmI1N1x1YmI1OSIsNywiXHViYjYyXHViYjY0Iiw3LCJcdWJiNmQiLDRdLFsiOTI4MSIsIlx1YmI3MiIsMjEsIlx1YmI4OVx1YmI4YVx1YmI4Ylx1YmI4ZFx1YmI4ZVx1YmI4Zlx1YmI5MSIsMTgsIlx1YmJhNVx1YmJhNlx1YmJhN1x1YmJhOVx1YmJhYVx1YmJh'@; put 'Ylx1YmJhZCIsNiwiXHViYmI1XHViYmI2XHViYmI4Iiw3LCJcdWJiYzFcdWJiYzJcdWJiYzNcdWJiYzVcdWJiYzZcdWJiYzdcdWJiYzkiLDYsIlx1YmJkMVx1YmJkMlx1YmJkNCIsMzUsIlx1YmJmYVx1YmJmYlx1YmJmZFx1YmJmZVx1YmMwMSJdLFsiOTM0MSIsIlx1YmMwMyIsNCwiXHViYzBh'@; put 'XHViYzBlXHViYzEwXHViYzEyXHViYzEzXHViYzE5XHViYzFhXHViYzIwXHViYzIxXHViYzIyXHViYzIzXHViYzI2XHViYzI4XHViYzJhXHViYzJiXHViYzJjXHViYzJlXHViYzJmXHViYzMyXHViYzMzXHViYzM1Il0sWyI5MzYxIiwiXHViYzM2XHViYzM3XHViYzM5Iiw2LCJcdWJjNDJcdWJj'@; put 'NDZcdWJjNDdcdWJjNDhcdWJjNGFcdWJjNGJcdWJjNGVcdWJjNGZcdWJjNTEiLDhdLFsiOTM4MSIsIlx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZSIsMzcsIlx1YmM4Nlx1YmM4N1x1YmM4OVx1YmM4YVx1YmM4ZFx1YmM4ZiIsNCwiXHViYzk2XHViYzk4XHViYzliIiw0LCJcdWJjYTJcdWJjYTNc'@; put 'dWJjYTVcdWJjYTZcdWJjYTkiLDYsIlx1YmNiMlx1YmNiNiIsNSwiXHViY2JlXHViY2JmXHViY2MxXHViY2MyXHViY2MzXHViY2M1Iiw3LCJcdWJjY2VcdWJjZDJcdWJjZDNcdWJjZDRcdWJjZDZcdWJjZDdcdWJjZDlcdWJjZGFcdWJjZGJcdWJjZGQiLDIyLCJcdWJjZjdcdWJjZjlcdWJjZmFc'@; put 'dWJjZmJcdWJjZmQiXSxbIjk0NDEiLCJcdWJjZmUiLDUsIlx1YmQwNlx1YmQwOFx1YmQwYSIsNSwiXHViZDExXHViZDEyXHViZDEzXHViZDE1Iiw4XSxbIjk0NjEiLCJcdWJkMWUiLDUsIlx1YmQyNSIsNiwiXHViZDJkIiwxMl0sWyI5NDgxIiwiXHViZDNhIiw1LCJcdWJkNDEiLDYsIlx1YmQ0'@; put 'YVx1YmQ0Ylx1YmQ0ZFx1YmQ0ZVx1YmQ0Zlx1YmQ1MSIsNiwiXHViZDVhIiw5LCJcdWJkNjVcdWJkNjZcdWJkNjdcdWJkNjkiLDIyLCJcdWJkODJcdWJkODNcdWJkODVcdWJkODZcdWJkOGIiLDQsIlx1YmQ5Mlx1YmQ5NFx1YmQ5Nlx1YmQ5N1x1YmQ5OFx1YmQ5Ylx1YmQ5ZCIsNiwiXHViZGE1'@; put 'IiwxMCwiXHViZGIxIiw2LCJcdWJkYjkiLDI0XSxbIjk1NDEiLCJcdWJkZDJcdWJkZDNcdWJkZDZcdWJkZDdcdWJkZDlcdWJkZGFcdWJkZGJcdWJkZGQiLDExLCJcdWJkZWEiLDUsIlx1YmRmMSJdLFsiOTU2MSIsIlx1YmRmMlx1YmRmM1x1YmRmNVx1YmRmNlx1YmRmN1x1YmRmOSIsNiwiXHVi'@; put 'ZTAxXHViZTAyXHViZTA0XHViZTA2Iiw1LCJcdWJlMGVcdWJlMGZcdWJlMTFcdWJlMTJcdWJlMTMiXSxbIjk1ODEiLCJcdWJlMTUiLDYsIlx1YmUxZVx1YmUyMCIsMzUsIlx1YmU0Nlx1YmU0N1x1YmU0OVx1YmU0YVx1YmU0Ylx1YmU0ZFx1YmU0ZiIsNCwiXHViZTU2XHViZTU4XHViZTVjXHVi'@; put 'ZTVkXHViZTVlXHViZTVmXHViZTYyXHViZTYzXHViZTY1XHViZTY2XHViZTY3XHViZTY5XHViZTZiIiw0LCJcdWJlNzJcdWJlNzYiLDQsIlx1YmU3ZVx1YmU3Zlx1YmU4MVx1YmU4Mlx1YmU4M1x1YmU4NSIsNiwiXHViZThlXHViZTkyIiw1LCJcdWJlOWEiLDEzLCJcdWJlYTkiLDE0XSxbIjk2'@; put 'NDEiLCJcdWJlYjgiLDIzLCJcdWJlZDJcdWJlZDMiXSxbIjk2NjEiLCJcdWJlZDVcdWJlZDZcdWJlZDkiLDYsIlx1YmVlMVx1YmVlMlx1YmVlNiIsNSwiXHViZWVkIiw4XSxbIjk2ODEiLCJcdWJlZjYiLDEwLCJcdWJmMDIiLDUsIlx1YmYwYSIsMTMsIlx1YmYxYVx1YmYxZSIsMzMsIlx1YmY0'@; put 'Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1YmY0OSIsNiwiXHViZjUyXHViZjUzXHViZjU0XHViZjU2Iiw0NF0sWyI5NzQxIiwiXHViZjgzIiwxNiwiXHViZjk1Iiw4XSxbIjk3NjEiLCJcdWJmOWUiLDE3LCJcdWJmYjEiLDddLFsiOTc4MSIsIlx1YmZiOSIsMTEsIlx1YmZjNiIsNSwiXHVi'@; put 'ZmNlXHViZmNmXHViZmQxXHViZmQyXHViZmQzXHViZmQ1Iiw2LCJcdWJmZGRcdWJmZGVcdWJmZTBcdWJmZTIiLDg5LCJcdWMwM2RcdWMwM2VcdWMwM2YiXSxbIjk4NDEiLCJcdWMwNDAiLDE2LCJcdWMwNTIiLDUsIlx1YzA1OVx1YzA1YVx1YzA1YiJdLFsiOTg2MSIsIlx1YzA1ZFx1YzA1ZVx1'@; put 'YzA1Zlx1YzA2MSIsNiwiXHVjMDZhIiwxNV0sWyI5ODgxIiwiXHVjMDdhIiwyMSwiXHVjMDkyXHVjMDkzXHVjMDk1XHVjMDk2XHVjMDk3XHVjMDk5Iiw2LCJcdWMwYTJcdWMwYTRcdWMwYTYiLDUsIlx1YzBhZVx1YzBiMVx1YzBiMlx1YzBiNyIsNCwiXHVjMGJlXHVjMGMyXHVjMGMzXHVjMGM0'@; put 'XHVjMGM2XHVjMGM3XHVjMGNhXHVjMGNiXHVjMGNkXHVjMGNlXHVjMGNmXHVjMGQxIiw2LCJcdWMwZGFcdWMwZGUiLDUsIlx1YzBlNlx1YzBlN1x1YzBlOVx1YzBlYVx1YzBlYlx1YzBlZCIsNiwiXHVjMGY2XHVjMGY4XHVjMGZhIiw1LCJcdWMxMDFcdWMxMDJcdWMxMDNcdWMxMDVcdWMxMDZc'@; put 'dWMxMDdcdWMxMDkiLDYsIlx1YzExMVx1YzExMlx1YzExM1x1YzExNFx1YzExNiIsNSwiXHVjMTIxXHVjMTIyXHVjMTI1XHVjMTI4XHVjMTI5XHVjMTJhXHVjMTJiXHVjMTJlIl0sWyI5OTQxIiwiXHVjMTMyXHVjMTMzXHVjMTM0XHVjMTM1XHVjMTM3XHVjMTNhXHVjMTNiXHVjMTNkXHVjMTNl'@; put 'XHVjMTNmXHVjMTQxIiw2LCJcdWMxNGFcdWMxNGUiLDUsIlx1YzE1Nlx1YzE1NyJdLFsiOTk2MSIsIlx1YzE1OVx1YzE1YVx1YzE1Ylx1YzE1ZCIsNiwiXHVjMTY2XHVjMTZhIiw1LCJcdWMxNzFcdWMxNzJcdWMxNzNcdWMxNzVcdWMxNzZcdWMxNzdcdWMxNzlcdWMxN2FcdWMxN2IiXSxbIjk5'@; put 'ODEiLCJcdWMxN2MiLDgsIlx1YzE4NiIsNSwiXHVjMThmXHVjMTkxXHVjMTkyXHVjMTkzXHVjMTk1XHVjMTk3Iiw0LCJcdWMxOWVcdWMxYTBcdWMxYTJcdWMxYTNcdWMxYTRcdWMxYTZcdWMxYTdcdWMxYWFcdWMxYWJcdWMxYWRcdWMxYWVcdWMxYWZcdWMxYjEiLDExLCJcdWMxYmUiLDUsIlx1'@; put 'YzFjNVx1YzFjNlx1YzFjN1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZCIsNiwiXHVjMWQ1XHVjMWQ2XHVjMWQ5Iiw2LCJcdWMxZTFcdWMxZTJcdWMxZTNcdWMxZTVcdWMxZTZcdWMxZTdcdWMxZTkiLDYsIlx1YzFmMlx1YzFmNCIsNywiXHVjMWZlXHVjMWZmXHVjMjAxXHVjMjAyXHVjMjAzXHVj'@; put 'MjA1Iiw2LCJcdWMyMGVcdWMyMTBcdWMyMTIiLDUsIlx1YzIxYVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyMyJdLFsiOWE0MSIsIlx1YzIyNFx1YzIyNVx1YzIyNlx1YzIyN1x1YzIyYVx1YzIyY1x1YzIyZVx1YzIzMFx1YzIzM1x1YzIzNSIsMTZdLFsiOWE2MSIsIlx1YzI0'@; put 'Nlx1YzI0N1x1YzI0OSIsNiwiXHVjMjUyXHVjMjUzXHVjMjU1XHVjMjU2XHVjMjU3XHVjMjU5Iiw2LCJcdWMyNjFcdWMyNjJcdWMyNjNcdWMyNjRcdWMyNjYiXSxbIjlhODEiLCJcdWMyNjciLDQsIlx1YzI2ZVx1YzI2Zlx1YzI3MVx1YzI3Mlx1YzI3M1x1YzI3NSIsNiwiXHVjMjdlXHVjMjgw'@; put 'XHVjMjgyIiw1LCJcdWMyOGEiLDUsIlx1YzI5MSIsNiwiXHVjMjk5XHVjMjlhXHVjMjljXHVjMjllIiw1LCJcdWMyYTZcdWMyYTdcdWMyYTlcdWMyYWFcdWMyYWJcdWMyYWUiLDUsIlx1YzJiNlx1YzJiOFx1YzJiYSIsMzMsIlx1YzJkZVx1YzJkZlx1YzJlMVx1YzJlMlx1YzJlNSIsNSwiXHVj'@; put 'MmVlXHVjMmYwXHVjMmYyXHVjMmYzXHVjMmY0XHVjMmY1XHVjMmY3XHVjMmZhXHVjMmZkXHVjMmZlXHVjMmZmXHVjMzAxIiw2LCJcdWMzMGFcdWMzMGJcdWMzMGVcdWMzMGYiXSxbIjliNDEiLCJcdWMzMTBcdWMzMTFcdWMzMTJcdWMzMTZcdWMzMTdcdWMzMTlcdWMzMWFcdWMzMWJcdWMzMWQi'@; put 'LDYsIlx1YzMyNlx1YzMyN1x1YzMyYSIsOF0sWyI5YjYxIiwiXHVjMzMzIiwxNywiXHVjMzQ2Iiw3XSxbIjliODEiLCJcdWMzNGUiLDI1LCJcdWMzNmFcdWMzNmJcdWMzNmRcdWMzNmVcdWMzNmZcdWMzNzFcdWMzNzMiLDQsIlx1YzM3YVx1YzM3Ylx1YzM3ZSIsNSwiXHVjMzg1XHVjMzg2XHVj'@; put 'Mzg3XHVjMzg5XHVjMzhhXHVjMzhiXHVjMzhkIiw1MCwiXHVjM2MxIiwyMiwiXHVjM2RhIl0sWyI5YzQxIiwiXHVjM2RiXHVjM2RkXHVjM2RlXHVjM2UxXHVjM2UzIiw0LCJcdWMzZWFcdWMzZWJcdWMzZWNcdWMzZWUiLDUsIlx1YzNmNlx1YzNmN1x1YzNmOSIsNV0sWyI5YzYxIiwiXHVjM2Zm'@; put 'Iiw4LCJcdWM0MDkiLDYsIlx1YzQxMSIsOV0sWyI5YzgxIiwiXHVjNDFiIiw4LCJcdWM0MjUiLDYsIlx1YzQyZFx1YzQyZVx1YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNSIsNiwiXHVjNDNlIiw5LCJcdWM0NDkiLDI2LCJcdWM0NjZcdWM0NjdcdWM0NjlcdWM0NmFcdWM0NmJcdWM0NmQi'@; put 'LDYsIlx1YzQ3Nlx1YzQ3N1x1YzQ3OFx1YzQ3YSIsNSwiXHVjNDgxIiwxOCwiXHVjNDk1Iiw2LCJcdWM0OWQiLDEyXSxbIjlkNDEiLCJcdWM0YWEiLDEzLCJcdWM0YjlcdWM0YmFcdWM0YmJcdWM0YmQiLDhdLFsiOWQ2MSIsIlx1YzRjNiIsMjVdLFsiOWQ4MSIsIlx1YzRlMCIsOCwiXHVjNGVh'@; put 'Iiw1LCJcdWM0ZjJcdWM0ZjNcdWM0ZjVcdWM0ZjZcdWM0ZjdcdWM0ZjlcdWM0ZmJcdWM0ZmNcdWM0ZmRcdWM0ZmVcdWM1MDIiLDksIlx1YzUwZFx1YzUwZVx1YzUwZlx1YzUxMVx1YzUxMlx1YzUxM1x1YzUxNSIsNiwiXHVjNTFkIiwxMCwiXHVjNTJhXHVjNTJiXHVjNTJkXHVjNTJlXHVjNTJm'@; put 'XHVjNTMxIiw2LCJcdWM1M2FcdWM1M2NcdWM1M2UiLDUsIlx1YzU0Nlx1YzU0N1x1YzU0Ylx1YzU0Zlx1YzU1MFx1YzU1MVx1YzU1Mlx1YzU1Nlx1YzU1YVx1YzU1Ylx1YzU1Y1x1YzU1Zlx1YzU2Mlx1YzU2M1x1YzU2NVx1YzU2Nlx1YzU2N1x1YzU2OSIsNiwiXHVjNTcyXHVjNTc2Iiw1LCJc'@; put 'dWM1N2VcdWM1N2ZcdWM1ODFcdWM1ODJcdWM1ODNcdWM1ODVcdWM1ODZcdWM1ODhcdWM1ODlcdWM1OGFcdWM1OGJcdWM1OGVcdWM1OTBcdWM1OTJcdWM1OTNcdWM1OTQiXSxbIjllNDEiLCJcdWM1OTZcdWM1OTlcdWM1OWFcdWM1OWJcdWM1OWRcdWM1OWVcdWM1OWZcdWM1YTEiLDcsIlx1YzVh'@; put 'YSIsOSwiXHVjNWI2Il0sWyI5ZTYxIiwiXHVjNWI3XHVjNWJhXHVjNWJmIiw0LCJcdWM1Y2JcdWM1Y2RcdWM1Y2ZcdWM1ZDJcdWM1ZDNcdWM1ZDVcdWM1ZDZcdWM1ZDdcdWM1ZDkiLDYsIlx1YzVlMlx1YzVlNFx1YzVlNlx1YzVlNyJdLFsiOWU4MSIsIlx1YzVlOFx1YzVlOVx1YzVlYVx1YzVl'@; put 'Ylx1YzVlZlx1YzVmMVx1YzVmMlx1YzVmM1x1YzVmNVx1YzVmOFx1YzVmOVx1YzVmYVx1YzVmYlx1YzYwMlx1YzYwM1x1YzYwNFx1YzYwOVx1YzYwYVx1YzYwYlx1YzYwZFx1YzYwZVx1YzYwZlx1YzYxMSIsNiwiXHVjNjFhXHVjNjFkIiw2LCJcdWM2MjZcdWM2MjdcdWM2MjlcdWM2MmFcdWM2'@; put 'MmJcdWM2MmZcdWM2MzFcdWM2MzJcdWM2MzZcdWM2MzhcdWM2M2FcdWM2M2NcdWM2M2RcdWM2M2VcdWM2M2ZcdWM2NDJcdWM2NDNcdWM2NDVcdWM2NDZcdWM2NDdcdWM2NDkiLDYsIlx1YzY1Mlx1YzY1NiIsNSwiXHVjNjVlXHVjNjVmXHVjNjYxIiwxMCwiXHVjNjZkXHVjNjZlXHVjNjcwXHVj'@; put 'NjcyIiw1LCJcdWM2N2FcdWM2N2JcdWM2N2RcdWM2N2VcdWM2N2ZcdWM2ODEiLDYsIlx1YzY4YVx1YzY4Y1x1YzY4ZSIsNSwiXHVjNjk2XHVjNjk3XHVjNjk5XHVjNjlhXHVjNjliXHVjNjlkIiw2LCJcdWM2YTYiXSxbIjlmNDEiLCJcdWM2YThcdWM2YWEiLDUsIlx1YzZiMlx1YzZiM1x1YzZi'@; put 'NVx1YzZiNlx1YzZiN1x1YzZiYiIsNCwiXHVjNmMyXHVjNmM0XHVjNmM2Iiw1LCJcdWM2Y2UiXSxbIjlmNjEiLCJcdWM2Y2ZcdWM2ZDFcdWM2ZDJcdWM2ZDNcdWM2ZDUiLDYsIlx1YzZkZVx1YzZkZlx1YzZlMiIsNSwiXHVjNmVhXHVjNmViXHVjNmVkXHVjNmVlXHVjNmVmXHVjNmYxXHVjNmYy'@; put 'Il0sWyI5ZjgxIiwiXHVjNmYzIiw0LCJcdWM2ZmFcdWM2ZmJcdWM2ZmNcdWM2ZmUiLDUsIlx1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1YzcwYlx1YzcwZCIsNiwiXHVjNzE2XHVjNzE4XHVjNzFhIiw1LCJcdWM3MjJcdWM3MjNcdWM3MjVcdWM3MjZcdWM3MjdcdWM3MjkiLDYsIlx1YzczMlx1'@; put 'YzczNFx1YzczNlx1YzczOFx1YzczOVx1YzczYVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NSIsNCwiXHVjNzRiXHVjNzRlXHVjNzUwXHVjNzU5XHVjNzVhXHVjNzViXHVjNzVkXHVjNzVlXHVjNzVmXHVjNzYxIiw2LCJcdWM3NjlcdWM3NmFcdWM3NmMiLDcsIlx1'@; put 'Yzc3Nlx1Yzc3N1x1Yzc3OVx1Yzc3YVx1Yzc3Ylx1Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1Yzc5OVx1Yzc5YiIsNCwiXHVjN2EyXHVjN2E3Iiw0LCJcdWM3YWVcdWM3YWZcdWM3YjFcdWM3YjJcdWM3YjNc'@; put 'dWM3YjVcdWM3YjZcdWM3YjciXSxbImEwNDEiLCJcdWM3YjhcdWM3YjlcdWM3YmFcdWM3YmJcdWM3YmVcdWM3YzIiLDUsIlx1YzdjYVx1YzdjYlx1YzdjZFx1YzdjZlx1YzdkMSIsNiwiXHVjN2Q5XHVjN2RhXHVjN2RiXHVjN2RjIl0sWyJhMDYxIiwiXHVjN2RlIiw1LCJcdWM3ZTVcdWM3ZTZc'@; put 'dWM3ZTdcdWM3ZTlcdWM3ZWFcdWM3ZWJcdWM3ZWQiLDEzXSxbImEwODEiLCJcdWM3ZmIiLDQsIlx1YzgwMlx1YzgwM1x1YzgwNVx1YzgwNlx1YzgwN1x1YzgwOVx1YzgwYiIsNCwiXHVjODEyXHVjODE0XHVjODE3Iiw0LCJcdWM4MWVcdWM4MWZcdWM4MjFcdWM4MjJcdWM4MjNcdWM4MjUiLDYs'@; put 'Ilx1YzgyZVx1YzgzMFx1YzgzMiIsNSwiXHVjODM5XHVjODNhXHVjODNiXHVjODNkXHVjODNlXHVjODNmXHVjODQxIiw2LCJcdWM4NGFcdWM4NGJcdWM4NGUiLDUsIlx1Yzg1NSIsMjYsIlx1Yzg3Mlx1Yzg3M1x1Yzg3NVx1Yzg3Nlx1Yzg3N1x1Yzg3OVx1Yzg3YiIsNCwiXHVjODgyXHVjODg0'@; put 'XHVjODg4XHVjODg5XHVjODhhXHVjODhlIiw1LCJcdWM4OTUiLDcsIlx1Yzg5ZVx1YzhhMFx1YzhhMlx1YzhhM1x1YzhhNCJdLFsiYTE0MSIsIlx1YzhhNVx1YzhhNlx1YzhhN1x1YzhhOSIsMTgsIlx1YzhiZVx1YzhiZlx1YzhjMFx1YzhjMSJdLFsiYTE2MSIsIlx1YzhjMlx1YzhjM1x1Yzhj'@; put 'NVx1YzhjNlx1YzhjN1x1YzhjOVx1YzhjYVx1YzhjYlx1YzhjZCIsNiwiXHVjOGQ2XHVjOGQ4XHVjOGRhIiw1LCJcdWM4ZTJcdWM4ZTNcdWM4ZTUiXSxbImExODEiLCJcdWM4ZTYiLDE0LCJcdWM4ZjYiLDUsIlx1YzhmZVx1YzhmZlx1YzkwMVx1YzkwMlx1YzkwM1x1YzkwNyIsNCwiXHVjOTBl'@; put 'XHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MjAyNVx1MjAyNlx4YThcdTMwMDNceGFkXHUyMDE1XHUyMjI1XHVmZjNjXHUyMjNjXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4Iiw5LCJceGIxXHhkN1x4ZjdcdTIyNjBcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzRceGIw'@; put 'XHUyMDMyXHUyMDMzXHUyMTAzXHUyMTJiXHVmZmUwXHVmZmUxXHVmZmU1XHUyNjQyXHUyNjQwXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHhhN1x1MjAzYlx1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjVi'@; put 'M1x1MjViMlx1MjViZFx1MjViY1x1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MjE5NFx1MzAxM1x1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyY1x1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1MjIyN1x1MjIyOFx1'@; put 'ZmZlMiJdLFsiYTI0MSIsIlx1YzkxMFx1YzkxMiIsNSwiXHVjOTE5IiwxOF0sWyJhMjYxIiwiXHVjOTJkIiw2LCJcdWM5MzUiLDE4XSxbImEyODEiLCJcdWM5NDgiLDcsIlx1Yzk1Mlx1Yzk1M1x1Yzk1NVx1Yzk1Nlx1Yzk1N1x1Yzk1OSIsNiwiXHVjOTYyXHVjOTY0Iiw3LCJcdWM5NmRcdWM5'@; put 'NmVcdWM5NmZcdTIxZDJcdTIxZDRcdTIyMDBcdTIyMDNceGI0XHVmZjVlXHUwMmM3XHUwMmQ4XHUwMmRkXHUwMmRhXHUwMmQ5XHhiOFx1MDJkYlx4YTFceGJmXHUwMmQwXHUyMjJlXHUyMjExXHUyMjBmXHhhNFx1MjEwOVx1MjAzMFx1MjVjMVx1MjVjMFx1MjViN1x1MjViNlx1MjY2NFx1MjY2'@; put 'MFx1MjY2MVx1MjY2NVx1MjY2N1x1MjY2M1x1MjI5OVx1MjVjOFx1MjVhM1x1MjVkMFx1MjVkMVx1MjU5Mlx1MjVhNFx1MjVhNVx1MjVhOFx1MjVhN1x1MjVhNlx1MjVhOVx1MjY2OFx1MjYwZlx1MjYwZVx1MjYxY1x1MjYxZVx4YjZcdTIwMjBcdTIwMjFcdTIxOTVcdTIxOTdcdTIxOTlcdTIx'@; put 'OTZcdTIxOThcdTI2NmRcdTI2NjlcdTI2NmFcdTI2NmNcdTMyN2ZcdTMyMWNcdTIxMTZcdTMzYzdcdTIxMjJcdTMzYzJcdTMzZDhcdTIxMjFcdTIwYWNceGFlIl0sWyJhMzQxIiwiXHVjOTcxXHVjOTcyXHVjOTczXHVjOTc1Iiw2LCJcdWM5N2QiLDEwLCJcdWM5OGFcdWM5OGJcdWM5OGRcdWM5'@; put 'OGVcdWM5OGYiXSxbImEzNjEiLCJcdWM5OTEiLDYsIlx1Yzk5YVx1Yzk5Y1x1Yzk5ZSIsMTZdLFsiYTM4MSIsIlx1YzlhZiIsMTYsIlx1YzljMlx1YzljM1x1YzljNVx1YzljNlx1YzljOVx1YzljYiIsNCwiXHVjOWQyXHVjOWQ0XHVjOWQ3XHVjOWQ4XHVjOWRiXHVmZjAxIiw1OCwiXHVmZmU2'@; put 'XHVmZjNkIiwzMiwiXHVmZmUzIl0sWyJhNDQxIiwiXHVjOWRlXHVjOWRmXHVjOWUxXHVjOWUzXHVjOWU1XHVjOWU2XHVjOWU4XHVjOWU5XHVjOWVhXHVjOWViXHVjOWVlXHVjOWYyIiw1LCJcdWM5ZmFcdWM5ZmJcdWM5ZmRcdWM5ZmVcdWM5ZmZcdWNhMDFcdWNhMDJcdWNhMDNcdWNhMDQiXSxb'@; put 'ImE0NjEiLCJcdWNhMDVcdWNhMDZcdWNhMDdcdWNhMGFcdWNhMGUiLDUsIlx1Y2ExNVx1Y2ExNlx1Y2ExN1x1Y2ExOSIsMTJdLFsiYTQ4MSIsIlx1Y2EyNlx1Y2EyN1x1Y2EyOFx1Y2EyYSIsMjgsIlx1MzEzMSIsOTNdLFsiYTU0MSIsIlx1Y2E0NyIsNCwiXHVjYTRlXHVjYTRmXHVjYTUxXHVj'@; put 'YTUyXHVjYTUzXHVjYTU1Iiw2LCJcdWNhNWVcdWNhNjIiLDUsIlx1Y2E2OVx1Y2E2YSJdLFsiYTU2MSIsIlx1Y2E2YiIsMTcsIlx1Y2E3ZSIsNSwiXHVjYTg1XHVjYTg2Il0sWyJhNTgxIiwiXHVjYTg3IiwxNiwiXHVjYTk5IiwxNCwiXHUyMTcwIiw5XSxbImE1YjAiLCJcdTIxNjAiLDldLFsi'@; put 'YTVjMSIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyJhNWUxIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbImE2NDEiLCJcdWNhYTgiLDE5LCJcdWNhYmVcdWNhYmZcdWNhYzFcdWNhYzJcdWNhYzNcdWNhYzUiXSxbImE2NjEiLCJcdWNhYzYiLDUsIlx1Y2FjZVx1Y2FkMFx1Y2FkMlx1Y2Fk'@; put 'NFx1Y2FkNVx1Y2FkNlx1Y2FkN1x1Y2FkYSIsNSwiXHVjYWUxIiw2XSxbImE2ODEiLCJcdWNhZThcdWNhZTlcdWNhZWFcdWNhZWJcdWNhZWQiLDYsIlx1Y2FmNSIsMTgsIlx1Y2IwOVx1Y2IwYVx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1'@; put 'MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1MjUxMlx1MjUxMVx1MjUxYVx1MjUxOVx1MjUx'@; put 'Nlx1MjUxNVx1MjUwZVx1MjUwZFx1MjUxZVx1MjUxZlx1MjUyMVx1MjUyMlx1MjUyNlx1MjUyN1x1MjUyOVx1MjUyYVx1MjUyZFx1MjUyZVx1MjUzMVx1MjUzMlx1MjUzNVx1MjUzNlx1MjUzOVx1MjUzYVx1MjUzZFx1MjUzZVx1MjU0MFx1MjU0MVx1MjU0MyIsN10sWyJhNzQxIiwiXHVjYjBi'@; put 'Iiw0LCJcdWNiMTFcdWNiMTJcdWNiMTNcdWNiMTVcdWNiMTZcdWNiMTdcdWNiMTkiLDYsIlx1Y2IyMiIsN10sWyJhNzYxIiwiXHVjYjJhIiwyMiwiXHVjYjQyXHVjYjQzXHVjYjQ0Il0sWyJhNzgxIiwiXHVjYjQ1XHVjYjQ2XHVjYjQ3XHVjYjRhXHVjYjRiXHVjYjRkXHVjYjRlXHVjYjRmXHVj'@; put 'YjUxIiw2LCJcdWNiNWFcdWNiNWJcdWNiNWNcdWNiNWUiLDUsIlx1Y2I2NSIsNywiXHUzMzk1XHUzMzk2XHUzMzk3XHUyMTEzXHUzMzk4XHUzM2M0XHUzM2EzXHUzM2E0XHUzM2E1XHUzM2E2XHUzMzk5Iiw5LCJcdTMzY2FcdTMzOGRcdTMzOGVcdTMzOGZcdTMzY2ZcdTMzODhcdTMzODlcdTMz'@; put 'YzhcdTMzYTdcdTMzYThcdTMzYjAiLDksIlx1MzM4MCIsNCwiXHUzM2JhIiw1LCJcdTMzOTAiLDQsIlx1MjEyNlx1MzNjMFx1MzNjMVx1MzM4YVx1MzM4Ylx1MzM4Y1x1MzNkNlx1MzNjNVx1MzNhZFx1MzNhZVx1MzNhZlx1MzNkYlx1MzNhOVx1MzNhYVx1MzNhYlx1MzNhY1x1MzNkZFx1MzNk'@; put 'MFx1MzNkM1x1MzNjM1x1MzNjOVx1MzNkY1x1MzNjNiJdLFsiYTg0MSIsIlx1Y2I2ZCIsMTAsIlx1Y2I3YSIsMTRdLFsiYTg2MSIsIlx1Y2I4OSIsMTgsIlx1Y2I5ZCIsNl0sWyJhODgxIiwiXHVjYmE0IiwxOSwiXHVjYmI5IiwxMSwiXHhjNlx4ZDBceGFhXHUwMTI2Il0sWyJhOGE2IiwiXHUw'@; put 'MTMyIl0sWyJhOGE4IiwiXHUwMTNmXHUwMTQxXHhkOFx1MDE1Mlx4YmFceGRlXHUwMTY2XHUwMTRhIl0sWyJhOGIxIiwiXHUzMjYwIiwyNywiXHUyNGQwIiwyNSwiXHUyNDYwIiwxNCwiXHhiZFx1MjE1M1x1MjE1NFx4YmNceGJlXHUyMTViXHUyMTVjXHUyMTVkXHUyMTVlIl0sWyJhOTQxIiwi'@; put 'XHVjYmM1IiwxNCwiXHVjYmQ1IiwxMF0sWyJhOTYxIiwiXHVjYmUwXHVjYmUxXHVjYmUyXHVjYmUzXHVjYmU1XHVjYmU2XHVjYmU4XHVjYmVhIiwxOF0sWyJhOTgxIiwiXHVjYmZkIiwxNCwiXHVjYzBlXHVjYzBmXHVjYzExXHVjYzEyXHVjYzEzXHVjYzE1Iiw2LCJcdWNjMWVcdWNjMWZcdWNj'@; put 'MjBcdWNjMjNcdWNjMjRceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEzOFx1MDE0MFx1MDE0Mlx4ZjhcdTAxNTNceGRmXHhmZVx1MDE2N1x1MDE0Ylx1MDE0OVx1MzIwMCIsMjcsIlx1MjQ5YyIsMjUsIlx1MjQ3NCIsMTQsIlx4YjlceGIyXHhiM1x1MjA3NFx1MjA3Zlx1MjA4'@; put 'MVx1MjA4Mlx1MjA4M1x1MjA4NCJdLFsiYWE0MSIsIlx1Y2MyNVx1Y2MyNlx1Y2MyYVx1Y2MyYlx1Y2MyZFx1Y2MyZlx1Y2MzMSIsNiwiXHVjYzNhXHVjYzNmIiw0LCJcdWNjNDZcdWNjNDdcdWNjNDlcdWNjNGFcdWNjNGJcdWNjNGRcdWNjNGUiXSxbImFhNjEiLCJcdWNjNGYiLDQsIlx1Y2M1'@; put 'Nlx1Y2M1YSIsNSwiXHVjYzYxXHVjYzYyXHVjYzYzXHVjYzY1XHVjYzY3XHVjYzY5Iiw2LCJcdWNjNzFcdWNjNzIiXSxbImFhODEiLCJcdWNjNzNcdWNjNzRcdWNjNzYiLDI5LCJcdTMwNDEiLDgyXSxbImFiNDEiLCJcdWNjOTRcdWNjOTVcdWNjOTZcdWNjOTdcdWNjOWFcdWNjOWJcdWNjOWRc'@; put 'dWNjOWVcdWNjOWZcdWNjYTEiLDYsIlx1Y2NhYVx1Y2NhZSIsNSwiXHVjY2I2XHVjY2I3XHVjY2I5Il0sWyJhYjYxIiwiXHVjY2JhXHVjY2JiXHVjY2JkIiw2LCJcdWNjYzZcdWNjYzhcdWNjY2EiLDUsIlx1Y2NkMVx1Y2NkMlx1Y2NkM1x1Y2NkNSIsNV0sWyJhYjgxIiwiXHVjY2RiIiw4LCJc'@; put 'dWNjZTUiLDYsIlx1Y2NlZFx1Y2NlZVx1Y2NlZlx1Y2NmMSIsMTIsIlx1MzBhMSIsODVdLFsiYWM0MSIsIlx1Y2NmZVx1Y2NmZlx1Y2QwMFx1Y2QwMiIsNSwiXHVjZDBhXHVjZDBiXHVjZDBkXHVjZDBlXHVjZDBmXHVjZDExIiw2LCJcdWNkMWFcdWNkMWNcdWNkMWVcdWNkMWZcdWNkMjAiXSxb'@; put 'ImFjNjEiLCJcdWNkMjFcdWNkMjJcdWNkMjNcdWNkMjVcdWNkMjZcdWNkMjdcdWNkMjlcdWNkMmFcdWNkMmJcdWNkMmQiLDExLCJcdWNkM2EiLDRdLFsiYWM4MSIsIlx1Y2QzZiIsMjgsIlx1Y2Q1ZFx1Y2Q1ZVx1Y2Q1Zlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhY2QxIiwiXHUw'@; put 'NDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImFkNDEiLCJcdWNkNjFcdWNkNjJcdWNkNjNcdWNkNjUiLDYsIlx1Y2Q2ZVx1Y2Q3MFx1Y2Q3MiIsNSwiXHVjZDc5Iiw3XSxbImFkNjEiLCJcdWNkODEiLDYsIlx1Y2Q4OSIsMTAsIlx1Y2Q5Nlx1Y2Q5N1x1Y2Q5OVx1Y2Q5YVx1Y2Q5Ylx1Y2Q5'@; put 'ZFx1Y2Q5ZVx1Y2Q5ZiJdLFsiYWQ4MSIsIlx1Y2RhMFx1Y2RhMVx1Y2RhMlx1Y2RhM1x1Y2RhNlx1Y2RhOFx1Y2RhYSIsNSwiXHVjZGIxIiwxOCwiXHVjZGM1Il0sWyJhZTQxIiwiXHVjZGM2Iiw1LCJcdWNkY2RcdWNkY2VcdWNkY2ZcdWNkZDEiLDE2XSxbImFlNjEiLCJcdWNkZTIiLDUsIlx1'@; put 'Y2RlOVx1Y2RlYVx1Y2RlYlx1Y2RlZFx1Y2RlZVx1Y2RlZlx1Y2RmMSIsNiwiXHVjZGZhXHVjZGZjXHVjZGZlIiw0XSxbImFlODEiLCJcdWNlMDNcdWNlMDVcdWNlMDZcdWNlMDdcdWNlMDlcdWNlMGFcdWNlMGJcdWNlMGQiLDYsIlx1Y2UxNVx1Y2UxNlx1Y2UxN1x1Y2UxOFx1Y2UxYSIsNSwi'@; put 'XHVjZTIyXHVjZTIzXHVjZTI1XHVjZTI2XHVjZTI3XHVjZTI5XHVjZTJhXHVjZTJiIl0sWyJhZjQxIiwiXHVjZTJjXHVjZTJkXHVjZTJlXHVjZTJmXHVjZTMyXHVjZTM0XHVjZTM2IiwxOV0sWyJhZjYxIiwiXHVjZTRhIiwxMywiXHVjZTVhXHVjZTViXHVjZTVkXHVjZTVlXHVjZTYyIiw1LCJc'@; put 'dWNlNmFcdWNlNmMiXSxbImFmODEiLCJcdWNlNmUiLDUsIlx1Y2U3Nlx1Y2U3N1x1Y2U3OVx1Y2U3YVx1Y2U3Ylx1Y2U3ZCIsNiwiXHVjZTg2XHVjZTg4XHVjZThhIiw1LCJcdWNlOTJcdWNlOTNcdWNlOTVcdWNlOTZcdWNlOTdcdWNlOTkiXSxbImIwNDEiLCJcdWNlOWEiLDUsIlx1Y2VhMlx1'@; put 'Y2VhNiIsNSwiXHVjZWFlIiwxMl0sWyJiMDYxIiwiXHVjZWJiIiw1LCJcdWNlYzIiLDE5XSxbImIwODEiLCJcdWNlZDYiLDEzLCJcdWNlZTZcdWNlZTdcdWNlZTlcdWNlZWFcdWNlZWQiLDYsIlx1Y2VmNlx1Y2VmYSIsNSwiXHVhYzAwXHVhYzAxXHVhYzA0XHVhYzA3XHVhYzA4XHVhYzA5XHVh'@; put 'YzBhXHVhYzEwIiw3LCJcdWFjMTkiLDQsIlx1YWMyMFx1YWMyNFx1YWMyY1x1YWMyZFx1YWMyZlx1YWMzMFx1YWMzMVx1YWMzOFx1YWMzOVx1YWMzY1x1YWM0MFx1YWM0Ylx1YWM0ZFx1YWM1NFx1YWM1OFx1YWM1Y1x1YWM3MFx1YWM3MVx1YWM3NFx1YWM3N1x1YWM3OFx1YWM3YVx1YWM4MFx1'@; put 'YWM4MVx1YWM4M1x1YWM4NFx1YWM4NVx1YWM4Nlx1YWM4OVx1YWM4YVx1YWM4Ylx1YWM4Y1x1YWM5MFx1YWM5NFx1YWM5Y1x1YWM5ZFx1YWM5Zlx1YWNhMFx1YWNhMVx1YWNhOFx1YWNhOVx1YWNhYVx1YWNhY1x1YWNhZlx1YWNiMFx1YWNiOFx1YWNiOVx1YWNiYlx1YWNiY1x1YWNiZFx1YWNj'@; put 'MVx1YWNjNFx1YWNjOFx1YWNjY1x1YWNkNVx1YWNkN1x1YWNlMFx1YWNlMVx1YWNlNFx1YWNlN1x1YWNlOFx1YWNlYVx1YWNlY1x1YWNlZlx1YWNmMFx1YWNmMVx1YWNmM1x1YWNmNVx1YWNmNlx1YWNmY1x1YWNmZFx1YWQwMFx1YWQwNFx1YWQwNiJdLFsiYjE0MSIsIlx1Y2YwMlx1Y2YwM1x1'@; put 'Y2YwNVx1Y2YwNlx1Y2YwN1x1Y2YwOSIsNiwiXHVjZjEyXHVjZjE0XHVjZjE2Iiw1LCJcdWNmMWRcdWNmMWVcdWNmMWZcdWNmMjFcdWNmMjJcdWNmMjMiXSxbImIxNjEiLCJcdWNmMjUiLDYsIlx1Y2YyZVx1Y2YzMiIsNSwiXHVjZjM5IiwxMV0sWyJiMTgxIiwiXHVjZjQ1IiwxNCwiXHVjZjU2'@; put 'XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVjZjVkIiw2LCJcdWNmNjZcdWNmNjhcdWNmNmFcdWNmNmJcdWNmNmNcdWFkMGNcdWFkMGRcdWFkMGZcdWFkMTFcdWFkMThcdWFkMWNcdWFkMjBcdWFkMjlcdWFkMmNcdWFkMmRcdWFkMzRcdWFkMzVcdWFkMzhcdWFkM2NcdWFkNDRcdWFkNDVcdWFk'@; put 'NDdcdWFkNDlcdWFkNTBcdWFkNTRcdWFkNThcdWFkNjFcdWFkNjNcdWFkNmNcdWFkNmRcdWFkNzBcdWFkNzNcdWFkNzRcdWFkNzVcdWFkNzZcdWFkN2JcdWFkN2NcdWFkN2RcdWFkN2ZcdWFkODFcdWFkODJcdWFkODhcdWFkODlcdWFkOGNcdWFkOTBcdWFkOWNcdWFkOWRcdWFkYTRcdWFkYjdc'@; put 'dWFkYzBcdWFkYzFcdWFkYzRcdWFkYzhcdWFkZDBcdWFkZDFcdWFkZDNcdWFkZGNcdWFkZTBcdWFkZTRcdWFkZjhcdWFkZjlcdWFkZmNcdWFkZmZcdWFlMDBcdWFlMDFcdWFlMDhcdWFlMDlcdWFlMGJcdWFlMGRcdWFlMTRcdWFlMzBcdWFlMzFcdWFlMzRcdWFlMzdcdWFlMzhcdWFlM2FcdWFl'@; put 'NDBcdWFlNDFcdWFlNDNcdWFlNDVcdWFlNDZcdWFlNGFcdWFlNGNcdWFlNGRcdWFlNGVcdWFlNTBcdWFlNTRcdWFlNTZcdWFlNWNcdWFlNWRcdWFlNWZcdWFlNjBcdWFlNjFcdWFlNjVcdWFlNjhcdWFlNjlcdWFlNmNcdWFlNzBcdWFlNzgiXSxbImIyNDEiLCJcdWNmNmRcdWNmNmVcdWNmNmZc'@; put 'dWNmNzJcdWNmNzNcdWNmNzVcdWNmNzZcdWNmNzdcdWNmNzkiLDYsIlx1Y2Y4MVx1Y2Y4Mlx1Y2Y4M1x1Y2Y4NFx1Y2Y4NiIsNSwiXHVjZjhkIl0sWyJiMjYxIiwiXHVjZjhlIiwxOCwiXHVjZmEyIiw1LCJcdWNmYTkiXSxbImIyODEiLCJcdWNmYWEiLDUsIlx1Y2ZiMSIsMTgsIlx1Y2ZjNSIs'@; put 'NiwiXHVhZTc5XHVhZTdiXHVhZTdjXHVhZTdkXHVhZTg0XHVhZTg1XHVhZThjXHVhZWJjXHVhZWJkXHVhZWJlXHVhZWMwXHVhZWM0XHVhZWNjXHVhZWNkXHVhZWNmXHVhZWQwXHVhZWQxXHVhZWQ4XHVhZWQ5XHVhZWRjXHVhZWU4XHVhZWViXHVhZWVkXHVhZWY0XHVhZWY4XHVhZWZjXHVhZjA3'@; put 'XHVhZjA4XHVhZjBkXHVhZjEwXHVhZjJjXHVhZjJkXHVhZjMwXHVhZjMyXHVhZjM0XHVhZjNjXHVhZjNkXHVhZjNmXHVhZjQxXHVhZjQyXHVhZjQzXHVhZjQ4XHVhZjQ5XHVhZjUwXHVhZjVjXHVhZjVkXHVhZjY0XHVhZjY1XHVhZjc5XHVhZjgwXHVhZjg0XHVhZjg4XHVhZjkwXHVhZjkxXHVh'@; put 'Zjk1XHVhZjljXHVhZmI4XHVhZmI5XHVhZmJjXHVhZmMwXHVhZmM3XHVhZmM4XHVhZmM5XHVhZmNiXHVhZmNkXHVhZmNlXHVhZmQ0XHVhZmRjXHVhZmU4XHVhZmU5XHVhZmYwXHVhZmYxXHVhZmY0XHVhZmY4XHViMDAwXHViMDAxXHViMDA0XHViMDBjXHViMDEwXHViMDE0XHViMDFjXHViMDFk'@; put 'XHViMDI4XHViMDQ0XHViMDQ1XHViMDQ4XHViMDRhXHViMDRjXHViMDRlXHViMDUzXHViMDU0XHViMDU1XHViMDU3XHViMDU5Il0sWyJiMzQxIiwiXHVjZmNjIiwxOSwiXHVjZmUyXHVjZmUzXHVjZmU1XHVjZmU2XHVjZmU3XHVjZmU5Il0sWyJiMzYxIiwiXHVjZmVhIiw1LCJcdWNmZjJcdWNm'@; put 'ZjRcdWNmZjYiLDUsIlx1Y2ZmZFx1Y2ZmZVx1Y2ZmZlx1ZDAwMVx1ZDAwMlx1ZDAwM1x1ZDAwNSIsNV0sWyJiMzgxIiwiXHVkMDBiIiw1LCJcdWQwMTIiLDUsIlx1ZDAxOSIsMTksIlx1YjA1ZFx1YjA3Y1x1YjA3ZFx1YjA4MFx1YjA4NFx1YjA4Y1x1YjA4ZFx1YjA4Zlx1YjA5MVx1YjA5OFx1'@; put 'YjA5OVx1YjA5YVx1YjA5Y1x1YjA5Zlx1YjBhMFx1YjBhMVx1YjBhMlx1YjBhOFx1YjBhOVx1YjBhYiIsNCwiXHViMGIxXHViMGIzXHViMGI0XHViMGI1XHViMGI4XHViMGJjXHViMGM0XHViMGM1XHViMGM3XHViMGM4XHViMGM5XHViMGQwXHViMGQxXHViMGQ0XHViMGQ4XHViMGUwXHViMGU1'@; put 'XHViMTA4XHViMTA5XHViMTBiXHViMTBjXHViMTEwXHViMTEyXHViMTEzXHViMTE4XHViMTE5XHViMTFiXHViMTFjXHViMTFkXHViMTIzXHViMTI0XHViMTI1XHViMTI4XHViMTJjXHViMTM0XHViMTM1XHViMTM3XHViMTM4XHViMTM5XHViMTQwXHViMTQxXHViMTQ0XHViMTQ4XHViMTUwXHVi'@; put 'MTUxXHViMTU0XHViMTU1XHViMTU4XHViMTVjXHViMTYwXHViMTc4XHViMTc5XHViMTdjXHViMTgwXHViMTgyXHViMTg4XHViMTg5XHViMThiXHViMThkXHViMTkyXHViMTkzXHViMTk0XHViMTk4XHViMTljXHViMWE4XHViMWNjXHViMWQwXHViMWQ0XHViMWRjXHViMWRkIl0sWyJiNDQxIiwi'@; put 'XHVkMDJlIiw1LCJcdWQwMzZcdWQwMzdcdWQwMzlcdWQwM2FcdWQwM2JcdWQwM2QiLDYsIlx1ZDA0Nlx1ZDA0OFx1ZDA0YSIsNV0sWyJiNDYxIiwiXHVkMDUxXHVkMDUyXHVkMDUzXHVkMDU1XHVkMDU2XHVkMDU3XHVkMDU5Iiw2LCJcdWQwNjEiLDEwLCJcdWQwNmVcdWQwNmYiXSxbImI0ODEi'@; put 'LCJcdWQwNzFcdWQwNzJcdWQwNzNcdWQwNzUiLDYsIlx1ZDA3ZVx1ZDA3Zlx1ZDA4MFx1ZDA4MiIsMTgsIlx1YjFkZlx1YjFlOFx1YjFlOVx1YjFlY1x1YjFmMFx1YjFmOVx1YjFmYlx1YjFmZFx1YjIwNFx1YjIwNVx1YjIwOFx1YjIwYlx1YjIwY1x1YjIxNFx1YjIxNVx1YjIxN1x1YjIxOVx1'@; put 'YjIyMFx1YjIzNFx1YjIzY1x1YjI1OFx1YjI1Y1x1YjI2MFx1YjI2OFx1YjI2OVx1YjI3NFx1YjI3NVx1YjI3Y1x1YjI4NFx1YjI4NVx1YjI4OVx1YjI5MFx1YjI5MVx1YjI5NFx1YjI5OFx1YjI5OVx1YjI5YVx1YjJhMFx1YjJhMVx1YjJhM1x1YjJhNVx1YjJhNlx1YjJhYVx1YjJhY1x1YjJi'@; put 'MFx1YjJiNFx1YjJjOFx1YjJjOVx1YjJjY1x1YjJkMFx1YjJkMlx1YjJkOFx1YjJkOVx1YjJkYlx1YjJkZFx1YjJlMlx1YjJlNFx1YjJlNVx1YjJlNlx1YjJlOFx1YjJlYiIsNCwiXHViMmYzXHViMmY0XHViMmY1XHViMmY3Iiw0LCJcdWIyZmZcdWIzMDBcdWIzMDFcdWIzMDRcdWIzMDhcdWIz'@; put 'MTBcdWIzMTFcdWIzMTNcdWIzMTRcdWIzMTVcdWIzMWNcdWIzNTRcdWIzNTVcdWIzNTZcdWIzNThcdWIzNWJcdWIzNWNcdWIzNWVcdWIzNWZcdWIzNjRcdWIzNjUiXSxbImI1NDEiLCJcdWQwOTUiLDE0LCJcdWQwYTZcdWQwYTdcdWQwYTlcdWQwYWFcdWQwYWJcdWQwYWQiLDVdLFsiYjU2MSIs'@; put 'Ilx1ZDBiM1x1ZDBiNlx1ZDBiOFx1ZDBiYSIsNSwiXHVkMGMyXHVkMGMzXHVkMGM1XHVkMGM2XHVkMGM3XHVkMGNhIiw1LCJcdWQwZDJcdWQwZDYiLDRdLFsiYjU4MSIsIlx1ZDBkYlx1ZDBkZVx1ZDBkZlx1ZDBlMVx1ZDBlMlx1ZDBlM1x1ZDBlNSIsNiwiXHVkMGVlXHVkMGYyIiw1LCJcdWQw'@; put 'ZjkiLDExLCJcdWIzNjdcdWIzNjlcdWIzNmJcdWIzNmVcdWIzNzBcdWIzNzFcdWIzNzRcdWIzNzhcdWIzODBcdWIzODFcdWIzODNcdWIzODRcdWIzODVcdWIzOGNcdWIzOTBcdWIzOTRcdWIzYTBcdWIzYTFcdWIzYThcdWIzYWNcdWIzYzRcdWIzYzVcdWIzYzhcdWIzY2JcdWIzY2NcdWIzY2Vc'@; put 'dWIzZDBcdWIzZDRcdWIzZDVcdWIzZDdcdWIzZDlcdWIzZGJcdWIzZGRcdWIzZTBcdWIzZTRcdWIzZThcdWIzZmNcdWI0MTBcdWI0MThcdWI0MWNcdWI0MjBcdWI0MjhcdWI0MjlcdWI0MmJcdWI0MzRcdWI0NTBcdWI0NTFcdWI0NTRcdWI0NThcdWI0NjBcdWI0NjFcdWI0NjNcdWI0NjVcdWI0'@; put 'NmNcdWI0ODBcdWI0ODhcdWI0OWRcdWI0YTRcdWI0YThcdWI0YWNcdWI0YjVcdWI0YjdcdWI0YjlcdWI0YzBcdWI0YzRcdWI0YzhcdWI0ZDBcdWI0ZDVcdWI0ZGNcdWI0ZGRcdWI0ZTBcdWI0ZTNcdWI0ZTRcdWI0ZTZcdWI0ZWNcdWI0ZWRcdWI0ZWZcdWI0ZjFcdWI0ZjhcdWI1MTRcdWI1MTVc'@; put 'dWI1MThcdWI1MWJcdWI1MWNcdWI1MjRcdWI1MjVcdWI1MjdcdWI1MjhcdWI1MjlcdWI1MmFcdWI1MzBcdWI1MzFcdWI1MzRcdWI1MzgiXSxbImI2NDEiLCJcdWQxMDUiLDcsIlx1ZDEwZSIsMTddLFsiYjY2MSIsIlx1ZDEyMCIsMTUsIlx1ZDEzMlx1ZDEzM1x1ZDEzNVx1ZDEzNlx1ZDEzN1x1'@; put 'ZDEzOVx1ZDEzYlx1ZDEzY1x1ZDEzZFx1ZDEzZSJdLFsiYjY4MSIsIlx1ZDEzZlx1ZDE0Mlx1ZDE0NiIsNSwiXHVkMTRlXHVkMTRmXHVkMTUxXHVkMTUyXHVkMTUzXHVkMTU1Iiw2LCJcdWQxNWVcdWQxNjBcdWQxNjIiLDUsIlx1ZDE2OVx1ZDE2YVx1ZDE2Ylx1ZDE2ZFx1YjU0MFx1YjU0MVx1'@; put 'YjU0M1x1YjU0NFx1YjU0NVx1YjU0Ylx1YjU0Y1x1YjU0ZFx1YjU1MFx1YjU1NFx1YjU1Y1x1YjU1ZFx1YjU1Zlx1YjU2MFx1YjU2MVx1YjVhMFx1YjVhMVx1YjVhNFx1YjVhOFx1YjVhYVx1YjVhYlx1YjViMFx1YjViMVx1YjViM1x1YjViNFx1YjViNVx1YjViYlx1YjViY1x1YjViZFx1YjVj'@; put 'MFx1YjVjNFx1YjVjY1x1YjVjZFx1YjVjZlx1YjVkMFx1YjVkMVx1YjVkOFx1YjVlY1x1YjYxMFx1YjYxMVx1YjYxNFx1YjYxOFx1YjYyNVx1YjYyY1x1YjYzNFx1YjY0OFx1YjY2NFx1YjY2OFx1YjY5Y1x1YjY5ZFx1YjZhMFx1YjZhNFx1YjZhYlx1YjZhY1x1YjZiMVx1YjZkNFx1YjZmMFx1'@; put 'YjZmNFx1YjZmOFx1YjcwMFx1YjcwMVx1YjcwNVx1YjcyOFx1YjcyOVx1YjcyY1x1YjcyZlx1YjczMFx1YjczOFx1YjczOVx1YjczYlx1Yjc0NFx1Yjc0OFx1Yjc0Y1x1Yjc1NFx1Yjc1NVx1Yjc2MFx1Yjc2NFx1Yjc2OFx1Yjc3MFx1Yjc3MVx1Yjc3M1x1Yjc3NVx1Yjc3Y1x1Yjc3ZFx1Yjc4'@; put 'MFx1Yjc4NFx1Yjc4Y1x1Yjc4ZFx1Yjc4Zlx1Yjc5MFx1Yjc5MVx1Yjc5Mlx1Yjc5Nlx1Yjc5NyJdLFsiYjc0MSIsIlx1ZDE2ZSIsMTMsIlx1ZDE3ZCIsNiwiXHVkMTg1XHVkMTg2XHVkMTg3XHVkMTg5XHVkMThhIl0sWyJiNzYxIiwiXHVkMThiIiwyMCwiXHVkMWEyXHVkMWEzXHVkMWE1XHVk'@; put 'MWE2XHVkMWE3Il0sWyJiNzgxIiwiXHVkMWE5Iiw2LCJcdWQxYjJcdWQxYjRcdWQxYjZcdWQxYjdcdWQxYjhcdWQxYjlcdWQxYmJcdWQxYmRcdWQxYmVcdWQxYmZcdWQxYzEiLDE0LCJcdWI3OThcdWI3OTlcdWI3OWNcdWI3YTBcdWI3YThcdWI3YTlcdWI3YWJcdWI3YWNcdWI3YWRcdWI3YjRc'@; put 'dWI3YjVcdWI3YjhcdWI3YzdcdWI3YzlcdWI3ZWNcdWI3ZWRcdWI3ZjBcdWI3ZjRcdWI3ZmNcdWI3ZmRcdWI3ZmZcdWI4MDBcdWI4MDFcdWI4MDdcdWI4MDhcdWI4MDlcdWI4MGNcdWI4MTBcdWI4MThcdWI4MTlcdWI4MWJcdWI4MWRcdWI4MjRcdWI4MjVcdWI4MjhcdWI4MmNcdWI4MzRcdWI4'@; put 'MzVcdWI4MzdcdWI4MzhcdWI4MzlcdWI4NDBcdWI4NDRcdWI4NTFcdWI4NTNcdWI4NWNcdWI4NWRcdWI4NjBcdWI4NjRcdWI4NmNcdWI4NmRcdWI4NmZcdWI4NzFcdWI4NzhcdWI4N2NcdWI4OGRcdWI4YThcdWI4YjBcdWI4YjRcdWI4YjhcdWI4YzBcdWI4YzFcdWI4YzNcdWI4YzVcdWI4Y2Nc'@; put 'dWI4ZDBcdWI4ZDRcdWI4ZGRcdWI4ZGZcdWI4ZTFcdWI4ZThcdWI4ZTlcdWI4ZWNcdWI4ZjBcdWI4ZjhcdWI4ZjlcdWI4ZmJcdWI4ZmRcdWI5MDRcdWI5MThcdWI5MjBcdWI5M2NcdWI5M2RcdWI5NDBcdWI5NDRcdWI5NGNcdWI5NGZcdWI5NTFcdWI5NThcdWI5NTlcdWI5NWNcdWI5NjBcdWI5'@; put 'NjhcdWI5NjkiXSxbImI4NDEiLCJcdWQxZDAiLDcsIlx1ZDFkOSIsMTddLFsiYjg2MSIsIlx1ZDFlYiIsOCwiXHVkMWY1XHVkMWY2XHVkMWY3XHVkMWY5IiwxM10sWyJiODgxIiwiXHVkMjA4XHVkMjBhIiw1LCJcdWQyMTEiLDI0LCJcdWI5NmJcdWI5NmRcdWI5NzRcdWI5NzVcdWI5NzhcdWI5'@; put 'N2NcdWI5ODRcdWI5ODVcdWI5ODdcdWI5ODlcdWI5OGFcdWI5OGRcdWI5OGVcdWI5YWNcdWI5YWRcdWI5YjBcdWI5YjRcdWI5YmNcdWI5YmRcdWI5YmZcdWI5YzFcdWI5YzhcdWI5YzlcdWI5Y2NcdWI5Y2UiLDQsIlx1YjlkOFx1YjlkOVx1YjlkYlx1YjlkZFx1YjlkZVx1YjllMVx1YjllM1x1'@; put 'YjllNFx1YjllNVx1YjllOFx1YjllY1x1YjlmNFx1YjlmNVx1YjlmN1x1YjlmOFx1YjlmOVx1YjlmYVx1YmEwMFx1YmEwMVx1YmEwOFx1YmExNVx1YmEzOFx1YmEzOVx1YmEzY1x1YmE0MFx1YmE0Mlx1YmE0OFx1YmE0OVx1YmE0Ylx1YmE0ZFx1YmE0ZVx1YmE1M1x1YmE1NFx1YmE1NVx1YmE1'@; put 'OFx1YmE1Y1x1YmE2NFx1YmE2NVx1YmE2N1x1YmE2OFx1YmE2OVx1YmE3MFx1YmE3MVx1YmE3NFx1YmE3OFx1YmE4M1x1YmE4NFx1YmE4NVx1YmE4N1x1YmE4Y1x1YmFhOFx1YmFhOVx1YmFhYlx1YmFhY1x1YmFiMFx1YmFiMlx1YmFiOFx1YmFiOVx1YmFiYlx1YmFiZFx1YmFjNFx1YmFjOFx1'@; put 'YmFkOFx1YmFkOVx1YmFmYyJdLFsiYjk0MSIsIlx1ZDIyYVx1ZDIyYlx1ZDIyZVx1ZDIyZlx1ZDIzMVx1ZDIzMlx1ZDIzM1x1ZDIzNSIsNiwiXHVkMjNlXHVkMjQwXHVkMjQyIiw1LCJcdWQyNDlcdWQyNGFcdWQyNGJcdWQyNGMiXSxbImI5NjEiLCJcdWQyNGQiLDE0LCJcdWQyNWQiLDYsIlx1'@; put 'ZDI2NVx1ZDI2Nlx1ZDI2N1x1ZDI2OCJdLFsiYjk4MSIsIlx1ZDI2OSIsMjIsIlx1ZDI4Mlx1ZDI4M1x1ZDI4NVx1ZDI4Nlx1ZDI4N1x1ZDI4OVx1ZDI4YVx1ZDI4Ylx1ZDI4Y1x1YmIwMFx1YmIwNFx1YmIwZFx1YmIwZlx1YmIxMVx1YmIxOFx1YmIxY1x1YmIyMFx1YmIyOVx1YmIyYlx1YmIz'@; put 'NFx1YmIzNVx1YmIzNlx1YmIzOFx1YmIzYlx1YmIzY1x1YmIzZFx1YmIzZVx1YmI0NFx1YmI0NVx1YmI0N1x1YmI0OVx1YmI0ZFx1YmI0Zlx1YmI1MFx1YmI1NFx1YmI1OFx1YmI2MVx1YmI2M1x1YmI2Y1x1YmI4OFx1YmI4Y1x1YmI5MFx1YmJhNFx1YmJhOFx1YmJhY1x1YmJiNFx1YmJiN1x1'@; put 'YmJjMFx1YmJjNFx1YmJjOFx1YmJkMFx1YmJkM1x1YmJmOFx1YmJmOVx1YmJmY1x1YmJmZlx1YmMwMFx1YmMwMlx1YmMwOFx1YmMwOVx1YmMwYlx1YmMwY1x1YmMwZFx1YmMwZlx1YmMxMVx1YmMxNCIsNCwiXHViYzFiIiw0LCJcdWJjMjRcdWJjMjVcdWJjMjdcdWJjMjlcdWJjMmRcdWJjMzBc'@; put 'dWJjMzFcdWJjMzRcdWJjMzhcdWJjNDBcdWJjNDFcdWJjNDNcdWJjNDRcdWJjNDVcdWJjNDlcdWJjNGNcdWJjNGRcdWJjNTBcdWJjNWRcdWJjODRcdWJjODVcdWJjODhcdWJjOGJcdWJjOGNcdWJjOGVcdWJjOTRcdWJjOTVcdWJjOTciXSxbImJhNDEiLCJcdWQyOGRcdWQyOGVcdWQyOGZcdWQy'@; put 'OTJcdWQyOTNcdWQyOTRcdWQyOTYiLDUsIlx1ZDI5ZFx1ZDI5ZVx1ZDI5Zlx1ZDJhMVx1ZDJhMlx1ZDJhM1x1ZDJhNSIsNiwiXHVkMmFkIl0sWyJiYTYxIiwiXHVkMmFlXHVkMmFmXHVkMmIwXHVkMmIyIiw1LCJcdWQyYmFcdWQyYmJcdWQyYmRcdWQyYmVcdWQyYzFcdWQyYzMiLDQsIlx1ZDJj'@; put 'YVx1ZDJjYyIsNV0sWyJiYTgxIiwiXHVkMmQyXHVkMmQzXHVkMmQ1XHVkMmQ2XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkIiw2LCJcdWQyZTYiLDksIlx1ZDJmMlx1ZDJmM1x1ZDJmNVx1ZDJmNlx1ZDJmN1x1ZDJmOVx1ZDJmYVx1YmM5OVx1YmM5YVx1YmNhMFx1YmNhMVx1YmNhNFx1'@; put 'YmNhN1x1YmNhOFx1YmNiMFx1YmNiMVx1YmNiM1x1YmNiNFx1YmNiNVx1YmNiY1x1YmNiZFx1YmNjMFx1YmNjNFx1YmNjZFx1YmNjZlx1YmNkMFx1YmNkMVx1YmNkNVx1YmNkOFx1YmNkY1x1YmNmNFx1YmNmNVx1YmNmNlx1YmNmOFx1YmNmY1x1YmQwNFx1YmQwNVx1YmQwN1x1YmQwOVx1YmQx'@; put 'MFx1YmQxNFx1YmQyNFx1YmQyY1x1YmQ0MFx1YmQ0OFx1YmQ0OVx1YmQ0Y1x1YmQ1MFx1YmQ1OFx1YmQ1OVx1YmQ2NFx1YmQ2OFx1YmQ4MFx1YmQ4MVx1YmQ4NFx1YmQ4N1x1YmQ4OFx1YmQ4OVx1YmQ4YVx1YmQ5MFx1YmQ5MVx1YmQ5M1x1YmQ5NVx1YmQ5OVx1YmQ5YVx1YmQ5Y1x1YmRhNFx1'@; put 'YmRiMFx1YmRiOFx1YmRkNFx1YmRkNVx1YmRkOFx1YmRkY1x1YmRlOVx1YmRmMFx1YmRmNFx1YmRmOFx1YmUwMFx1YmUwM1x1YmUwNVx1YmUwY1x1YmUwZFx1YmUxMFx1YmUxNFx1YmUxY1x1YmUxZFx1YmUxZlx1YmU0NFx1YmU0NVx1YmU0OFx1YmU0Y1x1YmU0ZVx1YmU1NFx1YmU1NVx1YmU1'@; put 'N1x1YmU1OVx1YmU1YVx1YmU1Ylx1YmU2MFx1YmU2MVx1YmU2NCJdLFsiYmI0MSIsIlx1ZDJmYiIsNCwiXHVkMzAyXHVkMzA0XHVkMzA2Iiw1LCJcdWQzMGZcdWQzMTFcdWQzMTJcdWQzMTNcdWQzMTVcdWQzMTciLDQsIlx1ZDMxZVx1ZDMyMlx1ZDMyMyJdLFsiYmI2MSIsIlx1ZDMyNFx1ZDMy'@; put 'Nlx1ZDMyN1x1ZDMyYVx1ZDMyYlx1ZDMyZFx1ZDMyZVx1ZDMyZlx1ZDMzMSIsNiwiXHVkMzNhXHVkMzNlIiw1LCJcdWQzNDZcdWQzNDdcdWQzNDhcdWQzNDkiXSxbImJiODEiLCJcdWQzNGEiLDMxLCJcdWJlNjhcdWJlNmFcdWJlNzBcdWJlNzFcdWJlNzNcdWJlNzRcdWJlNzVcdWJlN2JcdWJl'@; put 'N2NcdWJlN2RcdWJlODBcdWJlODRcdWJlOGNcdWJlOGRcdWJlOGZcdWJlOTBcdWJlOTFcdWJlOThcdWJlOTlcdWJlYThcdWJlZDBcdWJlZDFcdWJlZDRcdWJlZDdcdWJlZDhcdWJlZTBcdWJlZTNcdWJlZTRcdWJlZTVcdWJlZWNcdWJmMDFcdWJmMDhcdWJmMDlcdWJmMThcdWJmMTlcdWJmMWJc'@; put 'dWJmMWNcdWJmMWRcdWJmNDBcdWJmNDFcdWJmNDRcdWJmNDhcdWJmNTBcdWJmNTFcdWJmNTVcdWJmOTRcdWJmYjBcdWJmYzVcdWJmY2NcdWJmY2RcdWJmZDBcdWJmZDRcdWJmZGNcdWJmZGZcdWJmZTFcdWMwM2NcdWMwNTFcdWMwNThcdWMwNWNcdWMwNjBcdWMwNjhcdWMwNjlcdWMwOTBcdWMw'@; put 'OTFcdWMwOTRcdWMwOThcdWMwYTBcdWMwYTFcdWMwYTNcdWMwYTVcdWMwYWNcdWMwYWRcdWMwYWZcdWMwYjBcdWMwYjNcdWMwYjRcdWMwYjVcdWMwYjZcdWMwYmNcdWMwYmRcdWMwYmZcdWMwYzBcdWMwYzFcdWMwYzVcdWMwYzhcdWMwYzlcdWMwY2NcdWMwZDBcdWMwZDhcdWMwZDlcdWMwZGJc'@; put 'dWMwZGNcdWMwZGRcdWMwZTQiXSxbImJjNDEiLCJcdWQzNmEiLDE3LCJcdWQzN2VcdWQzN2ZcdWQzODFcdWQzODJcdWQzODNcdWQzODVcdWQzODZcdWQzODciXSxbImJjNjEiLCJcdWQzODhcdWQzODlcdWQzOGFcdWQzOGJcdWQzOGVcdWQzOTIiLDUsIlx1ZDM5YVx1ZDM5Ylx1ZDM5ZFx1ZDM5'@; put 'ZVx1ZDM5Zlx1ZDNhMSIsNiwiXHVkM2FhXHVkM2FjXHVkM2FlIl0sWyJiYzgxIiwiXHVkM2FmIiw0LCJcdWQzYjVcdWQzYjZcdWQzYjdcdWQzYjlcdWQzYmFcdWQzYmJcdWQzYmQiLDYsIlx1ZDNjNlx1ZDNjN1x1ZDNjYSIsNSwiXHVkM2QxIiw1LCJcdWMwZTVcdWMwZThcdWMwZWNcdWMwZjRc'@; put 'dWMwZjVcdWMwZjdcdWMwZjlcdWMxMDBcdWMxMDRcdWMxMDhcdWMxMTBcdWMxMTVcdWMxMWMiLDQsIlx1YzEyM1x1YzEyNFx1YzEyNlx1YzEyN1x1YzEyY1x1YzEyZFx1YzEyZlx1YzEzMFx1YzEzMVx1YzEzNlx1YzEzOFx1YzEzOVx1YzEzY1x1YzE0MFx1YzE0OFx1YzE0OVx1YzE0Ylx1YzE0'@; put 'Y1x1YzE0ZFx1YzE1NFx1YzE1NVx1YzE1OFx1YzE1Y1x1YzE2NFx1YzE2NVx1YzE2N1x1YzE2OFx1YzE2OVx1YzE3MFx1YzE3NFx1YzE3OFx1YzE4NVx1YzE4Y1x1YzE4ZFx1YzE4ZVx1YzE5MFx1YzE5NFx1YzE5Nlx1YzE5Y1x1YzE5ZFx1YzE5Zlx1YzFhMVx1YzFhNVx1YzFhOFx1YzFhOVx1'@; put 'YzFhY1x1YzFiMFx1YzFiZFx1YzFjNFx1YzFjOFx1YzFjY1x1YzFkNFx1YzFkN1x1YzFkOFx1YzFlMFx1YzFlNFx1YzFlOFx1YzFmMFx1YzFmMVx1YzFmM1x1YzFmY1x1YzFmZFx1YzIwMFx1YzIwNFx1YzIwY1x1YzIwZFx1YzIwZlx1YzIxMVx1YzIxOFx1YzIxOVx1YzIxY1x1YzIxZlx1YzIy'@; put 'MFx1YzIyOFx1YzIyOVx1YzIyYlx1YzIyZCJdLFsiYmQ0MSIsIlx1ZDNkN1x1ZDNkOSIsNywiXHVkM2UyXHVkM2U0Iiw3LCJcdWQzZWVcdWQzZWZcdWQzZjFcdWQzZjJcdWQzZjNcdWQzZjVcdWQzZjZcdWQzZjciXSxbImJkNjEiLCJcdWQzZjhcdWQzZjlcdWQzZmFcdWQzZmJcdWQzZmVcdWQ0'@; put 'MDBcdWQ0MDIiLDUsIlx1ZDQwOSIsMTNdLFsiYmQ4MSIsIlx1ZDQxNyIsNSwiXHVkNDFlIiwyNSwiXHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVjMjUwXHVjMjUxXHVjMjU0XHVjMjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdm'@; put 'XHVjMjgxXHVjMjg4XHVjMjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3XHVjMmI5XHVjMmRjXHVjMmRkXHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVj'@; put 'MmY4XHVjMmY5XHVjMmZiXHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVjMzI1XHVjMzI4XHVjMzI5XHVjMzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdk'@; put 'XHVjMzg0XHVjMzg4XHVjMzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1XHVjM2Y4XHVjNDA4XHVjNDEwXHVjNDI0XHVjNDJjXHVjNDMwIl0sWyJiZTQxIiwiXHVkNDM4Iiw3LCJcdWQ0NDFcdWQ0NDJcdWQ0'@; put 'NDNcdWQ0NDUiLDE0XSxbImJlNjEiLCJcdWQ0NTQiLDcsIlx1ZDQ1ZFx1ZDQ1ZVx1ZDQ1Zlx1ZDQ2MVx1ZDQ2Mlx1ZDQ2M1x1ZDQ2NSIsNywiXHVkNDZlXHVkNDcwXHVkNDcxXHVkNDcyIl0sWyJiZTgxIiwiXHVkNDczIiw0LCJcdWQ0N2FcdWQ0N2JcdWQ0N2RcdWQ0N2VcdWQ0ODFcdWQ0ODMi'@; put 'LDQsIlx1ZDQ4YVx1ZDQ4Y1x1ZDQ4ZSIsNSwiXHVkNDk1Iiw4LCJcdWM0MzRcdWM0M2NcdWM0M2RcdWM0NDhcdWM0NjRcdWM0NjVcdWM0NjhcdWM0NmNcdWM0NzRcdWM0NzVcdWM0NzlcdWM0ODBcdWM0OTRcdWM0OWNcdWM0YjhcdWM0YmNcdWM0ZTlcdWM0ZjBcdWM0ZjFcdWM0ZjRcdWM0Zjhc'@; put 'dWM0ZmFcdWM0ZmZcdWM1MDBcdWM1MDFcdWM1MGNcdWM1MTBcdWM1MTRcdWM1MWNcdWM1MjhcdWM1MjlcdWM1MmNcdWM1MzBcdWM1MzhcdWM1MzlcdWM1M2JcdWM1M2RcdWM1NDRcdWM1NDVcdWM1NDhcdWM1NDlcdWM1NGFcdWM1NGNcdWM1NGRcdWM1NGVcdWM1NTNcdWM1NTRcdWM1NTVcdWM1'@; put 'NTdcdWM1NThcdWM1NTlcdWM1NWRcdWM1NWVcdWM1NjBcdWM1NjFcdWM1NjRcdWM1NjhcdWM1NzBcdWM1NzFcdWM1NzNcdWM1NzRcdWM1NzVcdWM1N2NcdWM1N2RcdWM1ODBcdWM1ODRcdWM1ODdcdWM1OGNcdWM1OGRcdWM1OGZcdWM1OTFcdWM1OTVcdWM1OTdcdWM1OThcdWM1OWNcdWM1YTBc'@; put 'dWM1YTlcdWM1YjRcdWM1YjVcdWM1YjhcdWM1YjlcdWM1YmJcdWM1YmNcdWM1YmRcdWM1YmVcdWM1YzQiLDYsIlx1YzVjY1x1YzVjZSJdLFsiYmY0MSIsIlx1ZDQ5ZSIsMTAsIlx1ZDRhYSIsMTRdLFsiYmY2MSIsIlx1ZDRiOSIsMTgsIlx1ZDRjZFx1ZDRjZVx1ZDRjZlx1ZDRkMVx1ZDRkMlx1'@; put 'ZDRkM1x1ZDRkNSJdLFsiYmY4MSIsIlx1ZDRkNiIsNSwiXHVkNGRkXHVkNGRlXHVkNGUwIiw3LCJcdWQ0ZTlcdWQ0ZWFcdWQ0ZWJcdWQ0ZWRcdWQ0ZWVcdWQ0ZWZcdWQ0ZjEiLDYsIlx1ZDRmOVx1ZDRmYVx1ZDRmY1x1YzVkMFx1YzVkMVx1YzVkNFx1YzVkOFx1YzVlMFx1YzVlMVx1YzVlM1x1'@; put 'YzVlNVx1YzVlY1x1YzVlZFx1YzVlZVx1YzVmMFx1YzVmNFx1YzVmNlx1YzVmN1x1YzVmYyIsNSwiXHVjNjA1XHVjNjA2XHVjNjA3XHVjNjA4XHVjNjBjXHVjNjEwXHVjNjE4XHVjNjE5XHVjNjFiXHVjNjFjXHVjNjI0XHVjNjI1XHVjNjI4XHVjNjJjXHVjNjJkXHVjNjJlXHVjNjMwXHVjNjMz'@; put 'XHVjNjM0XHVjNjM1XHVjNjM3XHVjNjM5XHVjNjNiXHVjNjQwXHVjNjQxXHVjNjQ0XHVjNjQ4XHVjNjUwXHVjNjUxXHVjNjUzXHVjNjU0XHVjNjU1XHVjNjVjXHVjNjVkXHVjNjYwXHVjNjZjXHVjNjZmXHVjNjcxXHVjNjc4XHVjNjc5XHVjNjdjXHVjNjgwXHVjNjg4XHVjNjg5XHVjNjhiXHVj'@; put 'NjhkXHVjNjk0XHVjNjk1XHVjNjk4XHVjNjljXHVjNmE0XHVjNmE1XHVjNmE3XHVjNmE5XHVjNmIwXHVjNmIxXHVjNmI0XHVjNmI4XHVjNmI5XHVjNmJhXHVjNmMwXHVjNmMxXHVjNmMzXHVjNmM1XHVjNmNjXHVjNmNkXHVjNmQwXHVjNmQ0XHVjNmRjXHVjNmRkXHVjNmUwXHVjNmUxXHVjNmU4'@; put 'Il0sWyJjMDQxIiwiXHVkNGZlIiw1LCJcdWQ1MDVcdWQ1MDZcdWQ1MDdcdWQ1MDlcdWQ1MGFcdWQ1MGJcdWQ1MGQiLDYsIlx1ZDUxNlx1ZDUxOCIsNV0sWyJjMDYxIiwiXHVkNTFlIiwyNV0sWyJjMDgxIiwiXHVkNTM4XHVkNTM5XHVkNTNhXHVkNTNiXHVkNTNlXHVkNTNmXHVkNTQxXHVkNTQy'@; put 'XHVkNTQzXHVkNTQ1Iiw2LCJcdWQ1NGVcdWQ1NTBcdWQ1NTIiLDUsIlx1ZDU1YVx1ZDU1Ylx1ZDU1ZFx1ZDU1ZVx1ZDU1Zlx1ZDU2MVx1ZDU2Mlx1ZDU2M1x1YzZlOVx1YzZlY1x1YzZmMFx1YzZmOFx1YzZmOVx1YzZmZFx1YzcwNFx1YzcwNVx1YzcwOFx1YzcwY1x1YzcxNFx1YzcxNVx1Yzcx'@; put 'N1x1YzcxOVx1YzcyMFx1YzcyMVx1YzcyNFx1YzcyOFx1YzczMFx1YzczMVx1YzczM1x1YzczNVx1YzczN1x1YzczY1x1YzczZFx1Yzc0MFx1Yzc0NFx1Yzc0YVx1Yzc0Y1x1Yzc0ZFx1Yzc0Zlx1Yzc1MSIsNywiXHVjNzVjXHVjNzYwXHVjNzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVj'@; put 'NzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4XHVjNzg5XHVjNzhhXHVjNzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVjNzlhXHVjN2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVjN2E1XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0'@; put 'XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVjN2NjXHVjN2NlXHVjN2QwXHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAxXHVjODA0XHVjODA4XHVjODBhIl0sWyJjMTQxIiwiXHVkNTY0XHVkNTY2XHVkNTY3XHVkNTZhXHVkNTZjXHVk'@; put 'NTZlIiw1LCJcdWQ1NzZcdWQ1NzdcdWQ1NzlcdWQ1N2FcdWQ1N2JcdWQ1N2QiLDYsIlx1ZDU4Nlx1ZDU4YVx1ZDU4YiJdLFsiYzE2MSIsIlx1ZDU4Y1x1ZDU4ZFx1ZDU4ZVx1ZDU4Zlx1ZDU5MSIsMTksIlx1ZDVhNlx1ZDVhNyJdLFsiYzE4MSIsIlx1ZDVhOCIsMzEsIlx1YzgxMFx1YzgxMVx1'@; put 'YzgxM1x1YzgxNVx1YzgxNlx1YzgxY1x1YzgxZFx1YzgyMFx1YzgyNFx1YzgyY1x1YzgyZFx1YzgyZlx1YzgzMVx1YzgzOFx1YzgzY1x1Yzg0MFx1Yzg0OFx1Yzg0OVx1Yzg0Y1x1Yzg0ZFx1Yzg1NFx1Yzg3MFx1Yzg3MVx1Yzg3NFx1Yzg3OFx1Yzg3YVx1Yzg4MFx1Yzg4MVx1Yzg4M1x1Yzg4'@; put 'NVx1Yzg4Nlx1Yzg4N1x1Yzg4Ylx1Yzg4Y1x1Yzg4ZFx1Yzg5NFx1Yzg5ZFx1Yzg5Zlx1YzhhMVx1YzhhOFx1YzhiY1x1YzhiZFx1YzhjNFx1YzhjOFx1YzhjY1x1YzhkNFx1YzhkNVx1YzhkN1x1YzhkOVx1YzhlMFx1YzhlMVx1YzhlNFx1YzhmNVx1YzhmY1x1YzhmZFx1YzkwMFx1YzkwNFx1'@; put 'YzkwNVx1YzkwNlx1YzkwY1x1YzkwZFx1YzkwZlx1YzkxMVx1YzkxOFx1YzkyY1x1YzkzNFx1Yzk1MFx1Yzk1MVx1Yzk1NFx1Yzk1OFx1Yzk2MFx1Yzk2MVx1Yzk2M1x1Yzk2Y1x1Yzk3MFx1Yzk3NFx1Yzk3Y1x1Yzk4OFx1Yzk4OVx1Yzk4Y1x1Yzk5MFx1Yzk5OFx1Yzk5OVx1Yzk5Ylx1Yzk5'@; put 'ZFx1YzljMFx1YzljMVx1YzljNFx1YzljN1x1YzljOFx1YzljYVx1YzlkMFx1YzlkMVx1YzlkMyJdLFsiYzI0MSIsIlx1ZDVjYVx1ZDVjYlx1ZDVjZFx1ZDVjZVx1ZDVjZlx1ZDVkMVx1ZDVkMyIsNCwiXHVkNWRhXHVkNWRjXHVkNWRlIiw1LCJcdWQ1ZTZcdWQ1ZTdcdWQ1ZTlcdWQ1ZWFcdWQ1'@; put 'ZWJcdWQ1ZWRcdWQ1ZWUiXSxbImMyNjEiLCJcdWQ1ZWYiLDQsIlx1ZDVmNlx1ZDVmOFx1ZDVmYSIsNSwiXHVkNjAyXHVkNjAzXHVkNjA1XHVkNjA2XHVkNjA3XHVkNjA5Iiw2LCJcdWQ2MTIiXSxbImMyODEiLCJcdWQ2MTYiLDUsIlx1ZDYxZFx1ZDYxZVx1ZDYxZlx1ZDYyMVx1ZDYyMlx1ZDYy'@; put 'M1x1ZDYyNSIsNywiXHVkNjJlIiw5LCJcdWQ2M2FcdWQ2M2JcdWM5ZDVcdWM5ZDZcdWM5ZDlcdWM5ZGFcdWM5ZGNcdWM5ZGRcdWM5ZTBcdWM5ZTJcdWM5ZTRcdWM5ZTdcdWM5ZWNcdWM5ZWRcdWM5ZWZcdWM5ZjBcdWM5ZjFcdWM5ZjhcdWM5ZjlcdWM5ZmNcdWNhMDBcdWNhMDhcdWNhMDlcdWNh'@; put 'MGJcdWNhMGNcdWNhMGRcdWNhMTRcdWNhMThcdWNhMjlcdWNhNGNcdWNhNGRcdWNhNTBcdWNhNTRcdWNhNWNcdWNhNWRcdWNhNWZcdWNhNjBcdWNhNjFcdWNhNjhcdWNhN2RcdWNhODRcdWNhOThcdWNhYmNcdWNhYmRcdWNhYzBcdWNhYzRcdWNhY2NcdWNhY2RcdWNhY2ZcdWNhZDFcdWNhZDNc'@; put 'dWNhZDhcdWNhZDlcdWNhZTBcdWNhZWNcdWNhZjRcdWNiMDhcdWNiMTBcdWNiMTRcdWNiMThcdWNiMjBcdWNiMjFcdWNiNDFcdWNiNDhcdWNiNDlcdWNiNGNcdWNiNTBcdWNiNThcdWNiNTlcdWNiNWRcdWNiNjRcdWNiNzhcdWNiNzlcdWNiOWNcdWNiYjhcdWNiZDRcdWNiZTRcdWNiZTdcdWNi'@; put 'ZTlcdWNjMGNcdWNjMGRcdWNjMTBcdWNjMTRcdWNjMWNcdWNjMWRcdWNjMjFcdWNjMjJcdWNjMjdcdWNjMjhcdWNjMjlcdWNjMmNcdWNjMmVcdWNjMzBcdWNjMzhcdWNjMzlcdWNjM2IiXSxbImMzNDEiLCJcdWQ2M2RcdWQ2M2VcdWQ2M2ZcdWQ2NDFcdWQ2NDJcdWQ2NDNcdWQ2NDRcdWQ2NDZc'@; put 'dWQ2NDdcdWQ2NGFcdWQ2NGNcdWQ2NGVcdWQ2NGZcdWQ2NTBcdWQ2NTJcdWQ2NTNcdWQ2NTZcdWQ2NTdcdWQ2NTlcdWQ2NWFcdWQ2NWJcdWQ2NWQiLDRdLFsiYzM2MSIsIlx1ZDY2MiIsNCwiXHVkNjY4XHVkNjZhIiw1LCJcdWQ2NzJcdWQ2NzNcdWQ2NzUiLDExXSxbImMzODEiLCJcdWQ2ODFc'@; put 'dWQ2ODJcdWQ2ODRcdWQ2ODYiLDUsIlx1ZDY4ZVx1ZDY4Zlx1ZDY5MVx1ZDY5Mlx1ZDY5M1x1ZDY5NSIsNywiXHVkNjllXHVkNmEwXHVkNmEyIiw1LCJcdWQ2YTlcdWQ2YWFcdWNjM2NcdWNjM2RcdWNjM2VcdWNjNDRcdWNjNDVcdWNjNDhcdWNjNGNcdWNjNTRcdWNjNTVcdWNjNTdcdWNjNThc'@; put 'dWNjNTlcdWNjNjBcdWNjNjRcdWNjNjZcdWNjNjhcdWNjNzBcdWNjNzVcdWNjOThcdWNjOTlcdWNjOWNcdWNjYTBcdWNjYThcdWNjYTlcdWNjYWJcdWNjYWNcdWNjYWRcdWNjYjRcdWNjYjVcdWNjYjhcdWNjYmNcdWNjYzRcdWNjYzVcdWNjYzdcdWNjYzlcdWNjZDBcdWNjZDRcdWNjZTRcdWNj'@; put 'ZWNcdWNjZjBcdWNkMDFcdWNkMDhcdWNkMDlcdWNkMGNcdWNkMTBcdWNkMThcdWNkMTlcdWNkMWJcdWNkMWRcdWNkMjRcdWNkMjhcdWNkMmNcdWNkMzlcdWNkNWNcdWNkNjBcdWNkNjRcdWNkNmNcdWNkNmRcdWNkNmZcdWNkNzFcdWNkNzhcdWNkODhcdWNkOTRcdWNkOTVcdWNkOThcdWNkOWNc'@; put 'dWNkYTRcdWNkYTVcdWNkYTdcdWNkYTlcdWNkYjBcdWNkYzRcdWNkY2NcdWNkZDBcdWNkZThcdWNkZWNcdWNkZjBcdWNkZjhcdWNkZjlcdWNkZmJcdWNkZmRcdWNlMDRcdWNlMDhcdWNlMGNcdWNlMTRcdWNlMTlcdWNlMjBcdWNlMjFcdWNlMjRcdWNlMjhcdWNlMzBcdWNlMzFcdWNlMzNcdWNl'@; put 'MzUiXSxbImM0NDEiLCJcdWQ2YWJcdWQ2YWRcdWQ2YWVcdWQ2YWZcdWQ2YjEiLDcsIlx1ZDZiYVx1ZDZiYyIsNywiXHVkNmM2XHVkNmM3XHVkNmM5XHVkNmNhXHVkNmNiIl0sWyJjNDYxIiwiXHVkNmNkXHVkNmNlXHVkNmNmXHVkNmQwXHVkNmQyXHVkNmQzXHVkNmQ1XHVkNmQ2XHVkNmQ4XHVk'@; put 'NmRhIiw1LCJcdWQ2ZTFcdWQ2ZTJcdWQ2ZTNcdWQ2ZTVcdWQ2ZTZcdWQ2ZTdcdWQ2ZTkiLDRdLFsiYzQ4MSIsIlx1ZDZlZVx1ZDZlZlx1ZDZmMVx1ZDZmMlx1ZDZmM1x1ZDZmNFx1ZDZmNiIsNSwiXHVkNmZlXHVkNmZmXHVkNzAxXHVkNzAyXHVkNzAzXHVkNzA1IiwxMSwiXHVkNzEyXHVkNzEz'@; put 'XHVkNzE0XHVjZTU4XHVjZTU5XHVjZTVjXHVjZTVmXHVjZTYwXHVjZTYxXHVjZTY4XHVjZTY5XHVjZTZiXHVjZTZkXHVjZTc0XHVjZTc1XHVjZTc4XHVjZTdjXHVjZTg0XHVjZTg1XHVjZTg3XHVjZTg5XHVjZTkwXHVjZTkxXHVjZTk0XHVjZTk4XHVjZWEwXHVjZWExXHVjZWEzXHVjZWE0XHVj'@; put 'ZWE1XHVjZWFjXHVjZWFkXHVjZWMxXHVjZWU0XHVjZWU1XHVjZWU4XHVjZWViXHVjZWVjXHVjZWY0XHVjZWY1XHVjZWY3XHVjZWY4XHVjZWY5XHVjZjAwXHVjZjAxXHVjZjA0XHVjZjA4XHVjZjEwXHVjZjExXHVjZjEzXHVjZjE1XHVjZjFjXHVjZjIwXHVjZjI0XHVjZjJjXHVjZjJkXHVjZjJm'@; put 'XHVjZjMwXHVjZjMxXHVjZjM4XHVjZjU0XHVjZjU1XHVjZjU4XHVjZjVjXHVjZjY0XHVjZjY1XHVjZjY3XHVjZjY5XHVjZjcwXHVjZjcxXHVjZjc0XHVjZjc4XHVjZjgwXHVjZjg1XHVjZjhjXHVjZmExXHVjZmE4XHVjZmIwXHVjZmM0XHVjZmUwXHVjZmUxXHVjZmU0XHVjZmU4XHVjZmYwXHVj'@; put 'ZmYxXHVjZmYzXHVjZmY1XHVjZmZjXHVkMDAwXHVkMDA0XHVkMDExXHVkMDE4XHVkMDJkXHVkMDM0XHVkMDM1XHVkMDM4XHVkMDNjIl0sWyJjNTQxIiwiXHVkNzE1XHVkNzE2XHVkNzE3XHVkNzFhXHVkNzFiXHVkNzFkXHVkNzFlXHVkNzFmXHVkNzIxIiw2LCJcdWQ3MmFcdWQ3MmNcdWQ3MmUi'@; put 'LDUsIlx1ZDczNlx1ZDczN1x1ZDczOSJdLFsiYzU2MSIsIlx1ZDczYVx1ZDczYlx1ZDczZCIsNiwiXHVkNzQ1XHVkNzQ2XHVkNzQ4XHVkNzRhIiw1LCJcdWQ3NTJcdWQ3NTNcdWQ3NTVcdWQ3NWEiLDRdLFsiYzU4MSIsIlx1ZDc1Zlx1ZDc2Mlx1ZDc2NFx1ZDc2Nlx1ZDc2N1x1ZDc2OFx1ZDc2'@; put 'YVx1ZDc2Ylx1ZDc2ZFx1ZDc2ZVx1ZDc2Zlx1ZDc3MVx1ZDc3Mlx1ZDc3M1x1ZDc3NSIsNiwiXHVkNzdlXHVkNzdmXHVkNzgwXHVkNzgyIiw1LCJcdWQ3OGFcdWQ3OGJcdWQwNDRcdWQwNDVcdWQwNDdcdWQwNDlcdWQwNTBcdWQwNTRcdWQwNThcdWQwNjBcdWQwNmNcdWQwNmRcdWQwNzBcdWQw'@; put 'NzRcdWQwN2NcdWQwN2RcdWQwODFcdWQwYTRcdWQwYTVcdWQwYThcdWQwYWNcdWQwYjRcdWQwYjVcdWQwYjdcdWQwYjlcdWQwYzBcdWQwYzFcdWQwYzRcdWQwYzhcdWQwYzlcdWQwZDBcdWQwZDFcdWQwZDNcdWQwZDRcdWQwZDVcdWQwZGNcdWQwZGRcdWQwZTBcdWQwZTRcdWQwZWNcdWQwZWRc'@; put 'dWQwZWZcdWQwZjBcdWQwZjFcdWQwZjhcdWQxMGRcdWQxMzBcdWQxMzFcdWQxMzRcdWQxMzhcdWQxM2FcdWQxNDBcdWQxNDFcdWQxNDNcdWQxNDRcdWQxNDVcdWQxNGNcdWQxNGRcdWQxNTBcdWQxNTRcdWQxNWNcdWQxNWRcdWQxNWZcdWQxNjFcdWQxNjhcdWQxNmNcdWQxN2NcdWQxODRcdWQx'@; put 'ODhcdWQxYTBcdWQxYTFcdWQxYTRcdWQxYThcdWQxYjBcdWQxYjFcdWQxYjNcdWQxYjVcdWQxYmFcdWQxYmNcdWQxYzBcdWQxZDhcdWQxZjRcdWQxZjhcdWQyMDdcdWQyMDlcdWQyMTBcdWQyMmNcdWQyMmRcdWQyMzBcdWQyMzRcdWQyM2NcdWQyM2RcdWQyM2ZcdWQyNDFcdWQyNDhcdWQyNWMi'@; put 'XSxbImM2NDEiLCJcdWQ3OGRcdWQ3OGVcdWQ3OGZcdWQ3OTEiLDYsIlx1ZDc5YVx1ZDc5Y1x1ZDc5ZSIsNV0sWyJjNmExIiwiXHVkMjY0XHVkMjgwXHVkMjgxXHVkMjg0XHVkMjg4XHVkMjkwXHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVkMmI4XHVkMmI5XHVk'@; put 'MmJjXHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVkMmYxXHVkMmY0XHVkMmY4XHVkMzAwXHVkMzAxXHVkMzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2XHVkMzFjXHVkMzFk'@; put 'XHVkMzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNkXHVkMzQ0XHVkMzQ1XHVkMzdjXHVkMzdkXHVkMzgwXHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVkMzk5XHVkMzljXHVk'@; put 'M2EwXHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVkM2Q4XHVkM2UxXHVkM2UzXHVkM2VjXHVkM2VkXHVkM2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxIl0sWyJjN2ExIiwiXHVkNDA4XHVkNDFk'@; put 'XHVkNDQwXHVkNDQ0XHVkNDVjXHVkNDYwXHVkNDY0XHVkNDZkXHVkNDZmXHVkNDc4XHVkNDc5XHVkNDdjXHVkNDdmXHVkNDgwXHVkNDgyXHVkNDg4XHVkNDg5XHVkNDhiXHVkNDhkXHVkNDk0XHVkNGE5XHVkNGNjXHVkNGQwXHVkNGQ0XHVkNGRjXHVkNGRmXHVkNGU4XHVkNGVjXHVkNGYwXHVk'@; put 'NGY4XHVkNGZiXHVkNGZkXHVkNTA0XHVkNTA4XHVkNTBjXHVkNTE0XHVkNTE1XHVkNTE3XHVkNTNjXHVkNTNkXHVkNTQwXHVkNTQ0XHVkNTRjXHVkNTRkXHVkNTRmXHVkNTUxXHVkNTU4XHVkNTU5XHVkNTVjXHVkNTYwXHVkNTY1XHVkNTY4XHVkNTY5XHVkNTZiXHVkNTZkXHVkNTc0XHVkNTc1'@; put 'XHVkNTc4XHVkNTdjXHVkNTg0XHVkNTg1XHVkNTg3XHVkNTg4XHVkNTg5XHVkNTkwXHVkNWE1XHVkNWM4XHVkNWM5XHVkNWNjXHVkNWQwXHVkNWQyXHVkNWQ4XHVkNWQ5XHVkNWRiXHVkNWRkXHVkNWU0XHVkNWU1XHVkNWU4XHVkNWVjXHVkNWY0XHVkNWY1XHVkNWY3XHVkNWY5XHVkNjAwXHVk'@; put 'NjAxXHVkNjA0XHVkNjA4XHVkNjEwXHVkNjExXHVkNjEzXHVkNjE0XHVkNjE1XHVkNjFjXHVkNjIwIl0sWyJjOGExIiwiXHVkNjI0XHVkNjJkXHVkNjM4XHVkNjM5XHVkNjNjXHVkNjQwXHVkNjQ1XHVkNjQ4XHVkNjQ5XHVkNjRiXHVkNjRkXHVkNjUxXHVkNjU0XHVkNjU1XHVkNjU4XHVkNjVj'@; put 'XHVkNjY3XHVkNjY5XHVkNjcwXHVkNjcxXHVkNjc0XHVkNjgzXHVkNjg1XHVkNjhjXHVkNjhkXHVkNjkwXHVkNjk0XHVkNjlkXHVkNjlmXHVkNmExXHVkNmE4XHVkNmFjXHVkNmIwXHVkNmI5XHVkNmJiXHVkNmM0XHVkNmM1XHVkNmM4XHVkNmNjXHVkNmQxXHVkNmQ0XHVkNmQ3XHVkNmQ5XHVk'@; put 'NmUwXHVkNmU0XHVkNmU4XHVkNmYwXHVkNmY1XHVkNmZjXHVkNmZkXHVkNzAwXHVkNzA0XHVkNzExXHVkNzE4XHVkNzE5XHVkNzFjXHVkNzIwXHVkNzI4XHVkNzI5XHVkNzJiXHVkNzJkXHVkNzM0XHVkNzM1XHVkNzM4XHVkNzNjXHVkNzQ0XHVkNzQ3XHVkNzQ5XHVkNzUwXHVkNzUxXHVkNzU0'@; put 'XHVkNzU2XHVkNzU3XHVkNzU4XHVkNzU5XHVkNzYwXHVkNzYxXHVkNzYzXHVkNzY1XHVkNzY5XHVkNzZjXHVkNzcwXHVkNzc0XHVkNzdjXHVkNzdkXHVkNzgxXHVkNzg4XHVkNzg5XHVkNzhjXHVkNzkwXHVkNzk4XHVkNzk5XHVkNzliXHVkNzlkIl0sWyJjYWExIiwiXHU0ZjNkXHU0ZjczXHU1'@; put 'MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1XHU1NGU1XHU1NjA5XHU1YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4MmRiXHU4MzA0XHU4ODU3XHU4ODg4XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNi'@; put 'XHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2YmJjXHU3M2NmXHU4MTFhXHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5XHU2MWM3XHU2M2MwXHU2NzQ2XHU2N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3'@; put 'YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4MjcxXHU4YWViXHU5NTkzXHU0ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1MmQ4XHU1NzRlXHU1ODJhXHU1ZDRjXHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFi'@; put 'XHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3ZDNhXHU5MGFmXHU5NDUxXHU5NDUyXHU5Zjk1Il0sWyJjYmExIiwiXHU1MzIzXHU1Y2FjXHU3NTMyXHU4MGRiXHU5MjQwXHU5NTk4XHU1MjViXHU1ODA4XHU1OWRjXHU1Y2ExXHU1ZDE3XHU1ZWI3XHU1ZjNhXHU1ZjRhXHU2MTc3XHU2YzVmXHU3'@; put 'NTdhXHU3NTg2XHU3Y2UwXHU3ZDczXHU3ZGIxXHU3ZjhjXHU4MTU0XHU4MjIxXHU4NTkxXHU4OTQxXHU4YjFiXHU5MmZjXHU5NjRkXHU5YzQ3XHU0ZWNiXHU0ZWY3XHU1MDBiXHU1MWYxXHU1ODRmXHU2MTM3XHU2MTNlXHU2MTY4XHU2NTM5XHU2OWVhXHU2ZjExXHU3NWE1XHU3Njg2XHU3NmQ2'@; put 'XHU3Yjg3XHU4MmE1XHU4NGNiXHVmOTAwXHU5M2E3XHU5NThiXHU1NTgwXHU1YmEyXHU1NzUxXHVmOTAxXHU3Y2IzXHU3ZmI5XHU5MWI1XHU1MDI4XHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MzZlXHU2NGRhXHU2NGU3XHU2ZTIwXHU3MGFjXHU3OTViXHU4ZGRkXHU4ZTFlXHVmOTAyXHU5'@; put 'MDdkXHU5MjQ1XHU5MmY4XHU0ZTdlXHU0ZWY2XHU1MDY1XHU1ZGZlXHU1ZWZhXHU2MTA2XHU2OTU3XHU4MTcxXHU4NjU0XHU4ZTQ3XHU5Mzc1XHU5YTJiXHU0ZTVlXHU1MDkxXHU2NzcwXHU2ODQwXHU1MTA5XHU1MjhkXHU1MjkyXHU2YWEyIl0sWyJjY2ExIiwiXHU3N2JjXHU5MjEwXHU5ZWQ0'@; put 'XHU1MmFiXHU2MDJmXHU4ZmYyXHU1MDQ4XHU2MWE5XHU2M2VkXHU2NGNhXHU2ODNjXHU2YTg0XHU2ZmMwXHU4MTg4XHU4OWExXHU5Njk0XHU1ODA1XHU3MjdkXHU3MmFjXHU3NTA0XHU3ZDc5XHU3ZTZkXHU4MGE5XHU4OThiXHU4Yjc0XHU5MDYzXHU5ZDUxXHU2Mjg5XHU2YzdhXHU2ZjU0XHU3'@; put 'ZDUwXHU3ZjNhXHU4YTIzXHU1MTdjXHU2MTRhXHU3YjlkXHU4YjE5XHU5MjU3XHU5MzhjXHU0ZWFjXHU0ZmQzXHU1MDFlXHU1MGJlXHU1MTA2XHU1MmMxXHU1MmNkXHU1MzdmXHU1NzcwXHU1ODgzXHU1ZTlhXHU1ZjkxXHU2MTc2XHU2MWFjXHU2NGNlXHU2NTZjXHU2NjZmXHU2NmJiXHU2NmY0'@; put 'XHU2ODk3XHU2ZDg3XHU3MDg1XHU3MGYxXHU3NDlmXHU3NGE1XHU3NGNhXHU3NWQ5XHU3ODZjXHU3OGVjXHU3YWRmXHU3YWY2XHU3ZDQ1XHU3ZDkzXHU4MDE1XHU4MDNmXHU4MTFiXHU4Mzk2XHU4YjY2XHU4ZjE1XHU5MDE1XHU5M2UxXHU5ODAzXHU5ODM4XHU5YTVhXHU5YmU4XHU0ZmMyXHU1'@; put 'NTUzXHU1ODNhXHU1OTUxXHU1YjYzXHU1YzQ2XHU2MGI4XHU2MjEyXHU2ODQyXHU2OGIwIl0sWyJjZGExIiwiXHU2OGU4XHU2ZWFhXHU3NTRjXHU3Njc4XHU3OGNlXHU3YTNkXHU3Y2ZiXHU3ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1M2U5XHU1NDRh'@; put 'XHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEwXHU2N2FmXHU2OWMxXHU2Y2JkXHU3NWZjXHU3NjkwXHU3NzdlXHU3YTNmXHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMxXHU4ODMxXHU4'@; put 'OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2NmYyXHU2ODhmXHU3YTQwXHU4YzM3XHU5ZDYwXHU1NmYwXHU1NzY0XHU1ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2YzY4XHVmOTA0'@; put 'XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3XHU2NTNiXHU3M2Q5XHU3YTdhXHU4NmEzXHU4Y2EyXHU5NzhmXHU0ZTMyXHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjIl0sWyJjZWExIiwiXHU3OWQxXHU4M2QzXHU4YTg3XHU4'@; put 'YWIyXHU4ZGU4XHU5MDRlXHU5MzRiXHU5ODQ2XHU1ZWQzXHU2OWU4XHU4NWZmXHU5MGVkXHVmOTA1XHU1MWEwXHU1Yjk4XHU1YmVjXHU2MTYzXHU2OGZhXHU2YjNlXHU3MDRjXHU3NDJmXHU3NGQ4XHU3YmExXHU3ZjUwXHU4M2M1XHU4OWMwXHU4Y2FiXHU5NWRjXHU5OTI4XHU1MjJlXHU2MDVk'@; put 'XHU2MmVjXHU5MDAyXHU0ZjhhXHU1MTQ5XHU1MzIxXHU1OGQ5XHU1ZWUzXHU2NmUwXHU2ZDM4XHU3MDlhXHU3MmMyXHU3M2Q2XHU3YjUwXHU4MGYxXHU5NDViXHU1MzY2XHU2MzliXHU3ZjZiXHU0ZTU2XHU1MDgwXHU1ODRhXHU1OGRlXHU2MDJhXHU2MTI3XHU2MmQwXHU2OWQwXHU5YjQxXHU1'@; put 'YjhmXHU3ZDE4XHU4MGIxXHU4ZjVmXHU0ZWE0XHU1MGQxXHU1NGFjXHU1NWFjXHU1YjBjXHU1ZGEwXHU1ZGU3XHU2NTJhXHU2NTRlXHU2ODIxXHU2YTRiXHU3MmUxXHU3NjhlXHU3N2VmXHU3ZDVlXHU3ZmY5XHU4MWEwXHU4NTRlXHU4NmRmXHU4ZjAzXHU4ZjRlXHU5MGNhXHU5OTAzXHU5YTU1'@; put 'XHU5YmFiXHU0ZTE4XHU0ZTQ1XHU0ZTVkXHU0ZWM3XHU0ZmYxXHU1MTc3XHU1MmZlIl0sWyJjZmExIiwiXHU1MzQwXHU1M2UzXHU1M2U1XHU1NDhlXHU1NjE0XHU1Nzc1XHU1N2EyXHU1YmM3XHU1ZDg3XHU1ZWQwXHU2MWZjXHU2MmQ4XHU2NTUxXHU2N2I4XHU2N2U5XHU2OWNiXHU2YjUwXHU2'@; put 'YmM2XHU2YmVjXHU2YzQyXHU2ZTlkXHU3MDc4XHU3MmQ3XHU3Mzk2XHU3NDAzXHU3N2JmXHU3N2U5XHU3YTc2XHU3ZDdmXHU4MDA5XHU4MWZjXHU4MjA1XHU4MjBhXHU4MmRmXHU4ODYyXHU4YjMzXHU4Y2ZjXHU4ZWMwXHU5MDExXHU5MGIxXHU5MjY0XHU5MmI2XHU5OWQyXHU5YTQ1XHU5Y2U5'@; put 'XHU5ZGQ3XHU5ZjljXHU1NzBiXHU1YzQwXHU4M2NhXHU5N2EwXHU5N2FiXHU5ZWI0XHU1NDFiXHU3YTk4XHU3ZmE0XHU4OGQ5XHU4ZWNkXHU5MGUxXHU1ODAwXHU1YzQ4XHU2Mzk4XHU3YTlmXHU1YmFlXHU1ZjEzXHU3YTc5XHU3YWFlXHU4MjhlXHU4ZWFjXHU1MDI2XHU1MjM4XHU1MmY4XHU1'@; put 'Mzc3XHU1NzA4XHU2MmYzXHU2MzcyXHU2YjBhXHU2ZGMzXHU3NzM3XHU1M2E1XHU3MzU3XHU4NTY4XHU4ZTc2XHU5NWQ1XHU2NzNhXHU2YWMzXHU2ZjcwXHU4YTZkXHU4ZWNjXHU5OTRiXHVmOTA2XHU2Njc3XHU2Yjc4XHU4Y2I0Il0sWyJkMGExIiwiXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJk'@; put 'XHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1XHU3YWJhXHU3YWM1XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYwXHU4M2NjXHU5MjFlXHVmOTA4XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5'@; put 'Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2NWE0XHU2ODM5XHU2OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0ZWNhXHU1OTk3XHU2NGQyXHU2NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdm'@; put 'XHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2NhXHU2MDI1XHU2MjcxXHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2XHU1MTgwXHU1NWRjXHU1NjY4XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1'@; put 'YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2MjgwXHU2NWQ3XHU2NWUzIl0sWyJkMWExIiwiXHU2NzFlXHU2NzFmXHU2NzVlXHU2OGNiXHU2OGM0XHU2YTVmXHU2YjNhXHU2YzIzXHU2YzdkXHU2YzgyXHU2ZGM3XHU3Mzk4XHU3NDI2XHU3NDJhXHU3NDgyXHU3NGEzXHU3NTc4XHU3NTdm'@; put 'XHU3ODgxXHU3OGVmXHU3OTQxXHU3OTQ3XHU3OTQ4XHU3OTdhXHU3Yjk1XHU3ZDAwXHU3ZGJhXHU3Zjg4XHU4MDA2XHU4MDJkXHU4MDhjXHU4YTE4XHU4YjRmXHU4YzQ4XHU4ZDc3XHU5MzIxXHU5MzI0XHU5OGUyXHU5OTUxXHU5YTBlXHU5YTBmXHU5YTY1XHU5ZTkyXHU3ZGNhXHU0Zjc2XHU1'@; put 'NDA5XHU2MmVlXHU2ODU0XHU5MWQxXHU1NWFiXHU1MTNhXHVmOTBiXHVmOTBjXHU1YTFjXHU2MWU2XHVmOTBkXHU2MmNmXHU2MmZmXHVmOTBlIiw1LCJcdTkwYTNcdWY5MTQiLDQsIlx1OGFmZVx1ZjkxOVx1ZjkxYVx1ZjkxYlx1ZjkxY1x1NjY5Nlx1ZjkxZFx1NzE1Nlx1ZjkxZVx1ZjkxZlx1'@; put 'OTZlM1x1ZjkyMFx1NjM0Zlx1NjM3YVx1NTM1N1x1ZjkyMVx1Njc4Zlx1Njk2MFx1NmU3M1x1ZjkyMlx1NzUzN1x1ZjkyM1x1ZjkyNFx1ZjkyNSJdLFsiZDJhMSIsIlx1N2QwZFx1ZjkyNlx1ZjkyN1x1ODg3Mlx1NTZjYVx1NWExOFx1ZjkyOCIsNCwiXHU0ZTQzXHVmOTJkXHU1MTY3XHU1OTQ4'@; put 'XHU2N2YwXHU4MDEwXHVmOTJlXHU1OTczXHU1ZTc0XHU2NDlhXHU3OWNhXHU1ZmY1XHU2MDZjXHU2MmM4XHU2MzdiXHU1YmU3XHU1YmQ3XHU1MmFhXHVmOTJmXHU1OTc0XHU1ZjI5XHU2MDEyXHVmOTMwXHVmOTMxXHVmOTMyXHU3NDU5XHVmOTMzIiw1LCJcdTk5ZDFcdWY5MzkiLDEwLCJcdTZm'@; put 'YzNcdWY5NDRcdWY5NDVcdTgxYmZcdThmYjJcdTYwZjFcdWY5NDZcdWY5NDdcdTgxNjZcdWY5NDhcdWY5NDlcdTVjM2ZcdWY5NGEiLDcsIlx1NWFlOVx1OGEyNVx1Njc3Ylx1N2QxMFx1Zjk1MiIsNSwiXHU4MGZkXHVmOTU4XHVmOTU5XHU1YzNjXHU2Y2U1XHU1MzNmXHU2ZWJhXHU1OTFhXHU4'@; put 'MzM2Il0sWyJkM2ExIiwiXHU0ZTM5XHU0ZWI2XHU0ZjQ2XHU1NWFlXHU1NzE4XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3YzFlXHU3ZGRlXHU4NmNiXHU4ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0'@; put 'XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3XHU2ZGUxXHU2ZTViXHU2ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFmXHU2YzkzXHU3NTUzXHU3YjU0XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2'@; put 'NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5ZWU4XHU0ZWUzXHU1Nzg4XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4MWZhXHU4ODhiXHU4Y2I4XHU5NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMw'@; put 'XHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYwXHU1Y2Y2XHU1ZDhiXHU1ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzIl0sWyJkNGExIiwiXHU2OGY5XHU2YWMyXHU2ZGQ4XHU2ZTIxXHU2ZWQ0XHU2ZmU0XHU3MWZlXHU3NmRjXHU3Nzc5XHU3OWIxXHU3YTNiXHU4'@; put 'NDA0XHU4OWE5XHU4Y2VkXHU4ZGYzXHU4ZTQ4XHU5MDAzXHU5MDE0XHU5MDUzXHU5MGZkXHU5MzRkXHU5Njc2XHU5N2RjXHU2YmQyXHU3MDA2XHU3MjU4XHU3MmEyXHU3MzY4XHU3NzYzXHU3OWJmXHU3YmU0XHU3ZTliXHU4YjgwXHU1OGE5XHU2MGM3XHU2NTY2XHU2NWZkXHU2NmJlXHU2Yzhj'@; put 'XHU3MTFlXHU3MWM5XHU4YzVhXHU5ODEzXHU0ZTZkXHU3YTgxXHU0ZWRkXHU1MWFjXHU1MWNkXHU1MmQ1XHU1NDBjXHU2MWE3XHU2NzcxXHU2ODUwXHU2OGRmXHU2ZDFlXHU2ZjdjXHU3NWJjXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDYzXHU5Mjg1XHU1MTVjXHU2NTk3XHU2NzVjXHU2NzkzXHU3'@; put 'NWQ4XHU3YWM3XHU4MzczXHVmOTVhXHU4YzQ2XHU5MDE3XHU5ODJkXHU1YzZmXHU4MWMwXHU4MjlhXHU5MDQxXHU5MDZmXHU5MjBkXHU1Zjk3XHU1ZDlkXHU2YTU5XHU3MWM4XHU3NjdiXHU3YjQ5XHU4NWU0XHU4YjA0XHU5MTI3XHU5YTMwXHU1NTg3XHU2MWY2XHVmOTViXHU3NjY5XHU3Zjg1'@; put 'Il0sWyJkNWExIiwiXHU4NjNmXHU4N2JhXHU4OGY4XHU5MDhmXHVmOTVjXHU2ZDFiXHU3MGQ5XHU3M2RlXHU3ZDYxXHU4NDNkXHVmOTVkXHU5MTZhXHU5OWYxXHVmOTVlXHU0ZTgyXHU1Mzc1XHU2YjA0XHU2YjEyXHU3MDNlXHU3MjFiXHU4NjJkXHU5ZTFlXHU1MjRjXHU4ZmEzXHU1ZDUwXHU2'@; put 'NGU1XHU2NTJjXHU2YjE2XHU2ZmViXHU3YzQzXHU3ZTljXHU4NWNkXHU4OTY0XHU4OWJkXHU2MmM5XHU4MWQ4XHU4ODFmXHU1ZWNhXHU2NzE3XHU2ZDZhXHU3MmZjXHU3NDA1XHU3NDZmXHU4NzgyXHU5MGRlXHU0Zjg2XHU1ZDBkXHU1ZmEwXHU4NDBhXHU1MWI3XHU2M2EwXHU3NTY1XHU0ZWFl'@; put 'XHU1MDA2XHU1MTY5XHU1MWM5XHU2ODgxXHU2YTExXHU3Y2FlXHU3Y2IxXHU3Y2U3XHU4MjZmXHU4YWQyXHU4ZjFiXHU5MWNmXHU0ZmI2XHU1MTM3XHU1MmY1XHU1NDQyXHU1ZWVjXHU2MTZlXHU2MjNlXHU2NWM1XHU2YWRhXHU2ZmZlXHU3OTJhXHU4NWRjXHU4ODIzXHU5NWFkXHU5YTYyXHU5'@; put 'YTZhXHU5ZTk3XHU5ZWNlXHU1MjliXHU2NmM2XHU2Yjc3XHU3MDFkXHU3OTJiXHU4ZjYyXHU5NzQyXHU2MTkwXHU2MjAwXHU2NTIzXHU2ZjIzIl0sWyJkNmExIiwiXHU3MTQ5XHU3NDg5XHU3ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1MWJkXHU1MjE3XHU1MmEzXHU2ZDBj'@; put 'XHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVmOTVmXHU1Y2JhXHU1ZGJhXHU2MDFjXHU3M2IyXHU3YjJkXHU3ZjlhXHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4XHU5ODE4XHU5ZjYxXHU0ZjhiXHU2'@; put 'ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEwXHU3NmU3XHU4MDAxXHU4NjA2XHU4NjVjXHU4ZGVmXHU4ZjA1XHU5NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3ZGEwXHU4M2M5XHU5MzA0XHU5ZTdm'@; put 'XHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3MjYyXHU3OGNhXHU4Y2MyXHU4Y2RhXHU4Y2Y0XHU5NmY3XHU0ZTg2XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQyXHU3N2FkXHU4MDRhXHU4NGZjIl0s'@; put 'WyJkN2ExIiwiXHU5MDdjXHU5YjI3XHU5ZjhkXHU1OGQ4XHU1YTQxXHU1YzYyXHU2YTEzXHU2ZGRhXHU2ZjBmXHU3NjNiXHU3ZDJmXHU3ZTM3XHU4NTFlXHU4OTM4XHU5M2U0XHU5NjRiXHU1Mjg5XHU2NWQyXHU2N2YzXHU2OWI0XHU2ZDQxXHU2ZTljXHU3MDBmXHU3NDA5XHU3NDYwXHU3NTU5'@; put 'XHU3NjI0XHU3ODZiXHU4YjJjXHU5ODVlXHU1MTZkXHU2MjJlXHU5Njc4XHU0Zjk2XHU1MDJiXHU1ZDE5XHU2ZGVhXHU3ZGI4XHU4ZjJhXHU1ZjhiXHU2MTQ0XHU2ODE3XHVmOTYxXHU5Njg2XHU1MmQyXHU4MDhiXHU1MWRjXHU1MWNjXHU2OTVlXHU3YTFjXHU3ZGJlXHU4M2YxXHU5Njc1XHU0'@; put 'ZmRhXHU1MjI5XHU1Mzk4XHU1NDBmXHU1NTBlXHU1YzY1XHU2MGE3XHU2NzRlXHU2OGE4XHU2ZDZjXHU3MjgxXHU3MmY4XHU3NDA2XHU3NDgzXHVmOTYyXHU3NWUyXHU3YzZjXHU3Zjc5XHU3ZmI4XHU4Mzg5XHU4OGNmXHU4OGUxXHU5MWNjXHU5MWQwXHU5NmUyXHU5YmM5XHU1NDFkXHU2Zjdl'@; put 'XHU3MWQwXHU3NDk4XHU4NWZhXHU4ZWFhXHU5NmEzXHU5YzU3XHU5ZTlmXHU2Nzk3XHU2ZGNiXHU3NDMzXHU4MWU4XHU5NzE2XHU3ODJjIl0sWyJkOGExIiwiXHU3YWNiXHU3YjIwXHU3YzkyXHU2NDY5XHU3NDZhXHU3NWYyXHU3OGJjXHU3OGU4XHU5OWFjXHU5YjU0XHU5ZWJiXHU1YmRlXHU1'@; put 'ZTU1XHU2ZjIwXHU4MTljXHU4M2FiXHU5MDg4XHU0ZTA3XHU1MzRkXHU1YTI5XHU1ZGQyXHU1ZjRlXHU2MTYyXHU2MzNkXHU2NjY5XHU2NmZjXHU2ZWZmXHU2ZjJiXHU3MDYzXHU3NzllXHU4NDJjXHU4NTEzXHU4ODNiXHU4ZjEzXHU5OTQ1XHU5YzNiXHU1NTFjXHU2MmI5XHU2NzJiXHU2Y2Fi'@; put 'XHU4MzA5XHU4OTZhXHU5NzdhXHU0ZWExXHU1OTg0XHU1ZmQ4XHU1ZmQ5XHU2NzFiXHU3ZGIyXHU3ZjU0XHU4MjkyXHU4MzJiXHU4M2JkXHU4ZjFlXHU5MDk5XHU1N2NiXHU1OWI5XHU1YTkyXHU1YmQwXHU2NjI3XHU2NzlhXHU2ODg1XHU2YmNmXHU3MTY0XHU3Zjc1XHU4Y2I3XHU4Y2UzXHU5'@; put 'MDgxXHU5YjQ1XHU4MTA4XHU4YzhhXHU5NjRjXHU5YTQwXHU5ZWE1XHU1YjVmXHU2YzEzXHU3MzFiXHU3NmYyXHU3NmRmXHU4NDBjXHU1MWFhXHU4OTkzXHU1MTRkXHU1MTk1XHU1MmM5XHU2OGM5XHU2Yzk0XHU3NzA0XHU3NzIwXHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWI1XHU2ZWM1Il0sWyJk'@; put 'OWExIiwiXHU4NTExXHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0XHU4ODgyXHU0ZmFlXHU1MTkyXHU1MmRmXHU1OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2'@; put 'N2QwXHU2YTIxXHU2YmNkXHU2YmRiXHU3MjVmXHU3MjYxXHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3MjY3XHU3NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZm'@; put 'XHU1ODkzXHU1OTk5XHU1ZWRmXHU2M2NmXHU2NjM0XHU2NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3XHU2NGFiXHU2NWUwXHU2OTU5XHU2YjY2XHU2YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4'@; put 'MzAyXHU4NTZhXHU4YWEzXHU4Y2JmXHU5NzI3XHU5ZDYxXHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3Il0sWyJkYWExIiwiXHU2Yzc2XHU3ZDBhXHU3ZDBiXHU4MDVlXHU4NjhhXHU5NTgwXHU5NmVmXHU1MmZmXHU2Yzk1XHU3MjY5XHU1NDczXHU1YTlhXHU1YzNl'@; put 'XHU1ZDRiXHU1ZjRjXHU1ZmFlXHU2NzJhXHU2OGI2XHU2OTYzXHU2ZTNjXHU2ZTQ0XHU3NzA5XHU3YzczXHU3ZjhlXHU4NTg3XHU4YjBlXHU4ZmY3XHU5NzYxXHU5ZWY0XHU1Y2I3XHU2MGI2XHU2MTBkXHU2MWFiXHU2NTRmXHU2NWZiXHU2NWZjXHU2YzExXHU2Y2VmXHU3MzlmXHU3M2M5XHU3'@; put 'ZGUxXHU5NTk0XHU1YmM2XHU4NzFjXHU4YjEwXHU1MjVkXHU1MzVhXHU2MmNkXHU2NDBmXHU2NGIyXHU2NzM0XHU2YTM4XHU2Y2NhXHU3M2MwXHU3NDllXHU3Yjk0XHU3Yzk1XHU3ZTFiXHU4MThhXHU4MjM2XHU4NTg0XHU4ZmViXHU5NmY5XHU5OWMxXHU0ZjM0XHU1MzRhXHU1M2NkXHU1M2Ri'@; put 'XHU2MmNjXHU2NDJjXHU2NTAwXHU2NTkxXHU2OWMzXHU2Y2VlXHU2ZjU4XHU3M2VkXHU3NTU0XHU3NjIyXHU3NmU0XHU3NmZjXHU3OGQwXHU3OGZiXHU3OTJjXHU3ZDQ2XHU4MjJjXHU4N2UwXHU4ZmQ0XHU5ODEyXHU5OGVmXHU1MmMzXHU2MmQ0XHU2NGE1XHU2ZTI0XHU2ZjUxIl0sWyJkYmEx'@; put 'IiwiXHU3NjdjXHU4ZGNiXHU5MWIxXHU5MjYyXHU5YWVlXHU5YjQzXHU1MDIzXHU1MDhkXHU1NzRhXHU1OWE4XHU1YzI4XHU1ZTQ3XHU1Zjc3XHU2MjNmXHU2NTNlXHU2NWI5XHU2NWMxXHU2NjA5XHU2NzhiXHU2OTljXHU2ZWMyXHU3OGM1XHU3ZDIxXHU4MGFhXHU4MTgwXHU4MjJiXHU4MmIz'@; put 'XHU4NGExXHU4NjhjXHU4YTJhXHU4YjE3XHU5MGE2XHU5NjMyXHU5ZjkwXHU1MDBkXHU0ZmYzXHVmOTYzXHU1N2Y5XHU1Zjk4XHU2MmRjXHU2MzkyXHU2NzZmXHU2ZTQzXHU3MTE5XHU3NmMzXHU4MGNjXHU4MGRhXHU4OGY0XHU4OGY1XHU4OTE5XHU4Y2UwXHU4ZjI5XHU5MTRkXHU5NjZhXHU0'@; put 'ZjJmXHU0ZjcwXHU1ZTFiXHU2N2NmXHU2ODIyXHU3NjdkXHU3NjdlXHU5YjQ0XHU1ZTYxXHU2YTBhXHU3MTY5XHU3MWQ0XHU3NTZhXHVmOTY0XHU3ZTQxXHU4NTQzXHU4NWU5XHU5OGRjXHU0ZjEwXHU3YjRmXHU3ZjcwXHU5NWE1XHU1MWUxXHU1ZTA2XHU2OGI1XHU2YzNlXHU2YzRlXHU2Y2Ri'@; put 'XHU3MmFmXHU3YmM0XHU4MzAzXHU2Y2Q1XHU3NDNhXHU1MGZiXHU1Mjg4XHU1OGMxXHU2NGQ4XHU2YTk3XHU3NGE3XHU3NjU2Il0sWyJkY2ExIiwiXHU3OGE3XHU4NjE3XHU5NWUyXHU5NzM5XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5MDhhXHU1MjI1XHU3N2E1XHU5'@; put 'YzQ5XHU5ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0XHU2OGM1XHU3MGIzXHU3NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5OTIwXHU5YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1XHU2ZDExXHU2ZTdhXHU2Zjdk'@; put 'XHU3M2U0XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1MzEwXHU1MzVjXHU1YjkzXHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJmXHU4NTE0XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2NzJjXHU0ZTc2XHU0ZmY4XHU1'@; put 'OTQ5XHU1YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJiXHU4NGVjXHU4NzAyXHU5MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0ZmVmXHU1MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJiXHU1YTY2Il0sWyJkZGExIiwi'@; put 'XHU1YjVhXHU1Yjc1XHU1YmNjXHU1ZTljXHVmOTY2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2ZDZlXHU2ZWE1XHU3MjM2XHU3YjI2XHU3YzNmXHU3ZjM2XHU4MTUwXHU4MTUxXHU4MTlhXHU4MjQwXHU4Mjk5XHU4M2E5XHU4YTAzXHU4Y2EwXHU4Y2U2XHU4Y2ZiXHU4ZDc0XHU4ZGJhXHU5MGU4XHU5'@; put 'MWRjXHU5NjFjXHU5NjQ0XHU5OWQ5XHU5Y2U3XHU1MzE3XHU1MjA2XHU1NDI5XHU1Njc0XHU1OGIzXHU1OTU0XHU1OTZlXHU1ZmZmXHU2MWE0XHU2MjZlXHU2NjEwXHU2YzdlXHU3MTFhXHU3NmM2XHU3Yzg5XHU3Y2RlXHU3ZDFiXHU4MmFjXHU4Y2MxXHU5NmYwXHVmOTY3XHU0ZjViXHU1ZjE3'@; put 'XHU1ZjdmXHU2MmMyXHU1ZDI5XHU2NzBiXHU2OGRhXHU3ODdjXHU3ZTQzXHU5ZDZjXHU0ZTE1XHU1MDk5XHU1MzE1XHU1MzJhXHU1MzUxXHU1OTgzXHU1YTYyXHU1ZTg3XHU2MGIyXHU2MThhXHU2MjQ5XHU2Mjc5XHU2NTkwXHU2Nzg3XHU2OWE3XHU2YmQ0XHU2YmQ2XHU2YmQ3XHU2YmQ4XHU2'@; put 'Y2I4XHVmOTY4XHU3NDM1XHU3NWZhXHU3ODEyXHU3ODkxXHU3OWQ1XHU3OWQ4XHU3YzgzXHU3ZGNiXHU3ZmUxXHU4MGE1Il0sWyJkZWExIiwiXHU4MTNlXHU4MWMyXHU4M2YyXHU4NzFhXHU4OGU4XHU4YWI5XHU4YjZjXHU4Y2JiXHU5MTE5XHU5NzVlXHU5OGRiXHU5ZjNiXHU1NmFjXHU1YjJh'@; put 'XHU1ZjZjXHU2NThjXHU2YWIzXHU2YmFmXHU2ZDVjXHU2ZmYxXHU3MDE1XHU3MjVkXHU3M2FkXHU4Y2E3XHU4Y2QzXHU5ODNiXHU2MTkxXHU2YzM3XHU4MDU4XHU5YTAxXHU0ZTRkXHU0ZThiXHU0ZTliXHU0ZWQ1XHU0ZjNhXHU0ZjNjXHU0ZjdmXHU0ZmRmXHU1MGZmXHU1M2YyXHU1M2Y4XHU1'@; put 'NTA2XHU1NWUzXHU1NmRiXHU1OGViXHU1OTYyXHU1YTExXHU1YmViXHU1YmZhXHU1YzA0XHU1ZGYzXHU1ZTJiXHU1Zjk5XHU2MDFkXHU2MzY4XHU2NTljXHU2NWFmXHU2N2Y2XHU2N2ZiXHU2OGFkXHU2YjdiXHU2Yzk5XHU2Y2Q3XHU2ZTIzXHU3MDA5XHU3MzQ1XHU3ODAyXHU3OTNlXHU3OTQw'@; put 'XHU3OTYwXHU3OWMxXHU3YmU5XHU3ZDE3XHU3ZDcyXHU4MDg2XHU4MjBkXHU4MzhlXHU4NGQxXHU4NmM3XHU4OGRmXHU4YTUwXHU4YTVlXHU4YjFkXHU4Y2RjXHU4ZDY2XHU4ZmFkXHU5MGFhXHU5OGZjXHU5OWRmXHU5ZTlkXHU1MjRhXHVmOTY5XHU2NzE0XHVmOTZhIl0sWyJkZmExIiwiXHU1'@; put 'MDk4XHU1MjJhXHU1YzcxXHU2NTYzXHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4NWE5XHU0ZTA5XHVmOTZiXHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEy'@; put 'XHU5OGFmXHU0ZTBhXHU1MGI3XHU1MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYzXHU2ODUxXHU2YTYxXHU2ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4'@; put 'OWY0XHU4YTczXHU4YzYxXHU4Y2RlXHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVmOTZkXHU3YjE5XHU1ODg1XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRk'@; put 'XHU2NjkxXHU2NmQ5XHU2NmY4XHU2ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZlXHU3ZDZlXHU3ZGQ2XHU3ZjcyIl0sWyJlMGExIiwiXHU4MGU1XHU4MjEyXHU4NWFmXHU4OTdmXHU4YTkzXHU5MDFkXHU5MmU0XHU5ZWNkXHU5ZjIwXHU1OTE1XHU1OTZkXHU1ZTJkXHU2MGRjXHU2NjE0XHU2'@; put 'NjczXHU2NzkwXHU2YzUwXHU2ZGM1XHU2ZjVmXHU3N2YzXHU3OGE5XHU4NGM2XHU5MWNiXHU5MzJiXHU0ZWQ5XHU1MGNhXHU1MTQ4XHU1NTg0XHU1YjBiXHU1YmEzXHU2MjQ3XHU2NTdlXHU2NWNiXHU2ZTMyXHU3MTdkXHU3NDAxXHU3NDQ0XHU3NDg3XHU3NGJmXHU3NjZjXHU3OWFhXHU3ZGRh'@; put 'XHU3ZTU1XHU3ZmE4XHU4MTdhXHU4MWIzXHU4MjM5XHU4NjFhXHU4N2VjXHU4YTc1XHU4ZGUzXHU5MDc4XHU5MjkxXHU5NDI1XHU5OTRkXHU5YmFlXHU1MzY4XHU1YzUxXHU2OTU0XHU2Y2M0XHU2ZDI5XHU2ZTJiXHU4MjBjXHU4NTliXHU4OTNiXHU4YTJkXHU4YWFhXHU5NmVhXHU5ZjY3XHU1'@; put 'MjYxXHU2NmI5XHU2YmIyXHU3ZTk2XHU4N2ZlXHU4ZDBkXHU5NTgzXHU5NjVkXHU2NTFkXHU2ZDg5XHU3MWVlXHVmOTZlXHU1N2NlXHU1OWQzXHU1YmFjXHU2MDI3XHU2MGZhXHU2MjEwXHU2NjFmXHU2NjVmXHU3MzI5XHU3M2Y5XHU3NmRiXHU3NzAxXHU3YjZjIl0sWyJlMWExIiwiXHU4MDU2'@; put 'XHU4MDcyXHU4MTY1XHU4YWEwXHU5MTkyXHU0ZTE2XHU1MmUyXHU2YjcyXHU2ZDE3XHU3YTA1XHU3YjM5XHU3ZDMwXHVmOTZmXHU4Y2IwXHU1M2VjXHU1NjJmXHU1ODUxXHU1YmI1XHU1YzBmXHU1YzExXHU1ZGUyXHU2MjQwXHU2MzgzXHU2NDE0XHU2NjJkXHU2OGIzXHU2Y2JjXHU2ZDg4XHU2'@; put 'ZWFmXHU3MDFmXHU3MGE0XHU3MWQyXHU3NTI2XHU3NThmXHU3NThlXHU3NjE5XHU3YjExXHU3YmUwXHU3YzJiXHU3ZDIwXHU3ZDM5XHU4NTJjXHU4NTZkXHU4NjA3XHU4YTM0XHU5MDBkXHU5MDYxXHU5MGI1XHU5MmI3XHU5N2Y2XHU5YTM3XHU0ZmQ3XHU1YzZjXHU2NzVmXHU2ZDkxXHU3Yzlm'@; put 'XHU3ZThjXHU4YjE2XHU4ZDE2XHU5MDFmXHU1YjZiXHU1ZGZkXHU2NDBkXHU4NGMwXHU5MDVjXHU5OGUxXHU3Mzg3XHU1YjhiXHU2MDlhXHU2NzdlXHU2ZGRlXHU4YTFmXHU4YWE2XHU5MDAxXHU5ODBjXHU1MjM3XHVmOTcwXHU3MDUxXHU3ODhlXHU5Mzk2XHU4ODcwXHU5MWQ3XHU0ZmVlXHU1'@; put 'M2Q3XHU1NWZkXHU1NmRhXHU1NzgyXHU1OGZkXHU1YWMyXHU1Yjg4XHU1Y2FiXHU1Y2MwXHU1ZTI1XHU2MTAxIl0sWyJlMmExIiwiXHU2MjBkXHU2MjRiXHU2Mzg4XHU2NDFjXHU2NTM2XHU2NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5XHU2ZjMxXHU3MWU3XHU3MmU5XHU3Mzc4XHU3NDA3'@; put 'XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYxXHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRhXHU4NWVhXHU4ODk2XHU4YWIwXHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5MTZjXHU5Mjk2XHU5MmI5XHU5NjhiXHU5NmE3XHU5'@; put 'NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3NDIxXHU3NGI5XHU4MDg1XHU4M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQyXHU2NWVjXHU2ODEyXHU2OTZmXHU2YTUzXHU2Yjg5'@; put 'XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQwXHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3XHU5MzFlXHU5ODA2XHU5OWI0XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1ZDA3XHU1ZDI3Il0sWyJlM2ExIiwiXHU1ZDY5XHU3'@; put 'NDVmXHU4MTlkXHU4NzY4XHU2ZmQ1XHU2MmZlXHU3ZmQyXHU4OTM2XHU4OTcyXHU0ZTFlXHU0ZTU4XHU1MGU3XHU1MmRkXHU1MzQ3XHU2MjdmXHU2NjA3XHU3ZTY5XHU4ODA1XHU5NjVlXHU0ZjhkXHU1MzE5XHU1NjM2XHU1OWNiXHU1YWE0XHU1YzM4XHU1YzRlXHU1YzRkXHU1ZTAyXHU1ZjEx'@; put 'XHU2MDQzXHU2NWJkXHU2NjJmXHU2NjQyXHU2N2JlXHU2N2Y0XHU3MzFjXHU3N2UyXHU3OTNhXHU3ZmM1XHU4NDk0XHU4NGNkXHU4OTk2XHU4YTY2XHU4YTY5XHU4YWUxXHU4YzU1XHU4YzdhXHU1N2Y0XHU1YmQ0XHU1ZjBmXHU2MDZmXHU2MmVkXHU2OTBkXHU2Yjk2XHU2ZTVjXHU3MTg0XHU3'@; put 'YmQyXHU4NzU1XHU4YjU4XHU4ZWZlXHU5OGRmXHU5OGZlXHU0ZjM4XHU0ZjgxXHU0ZmUxXHU1NDdiXHU1YTIwXHU1YmI4XHU2MTNjXHU2NWIwXHU2NjY4XHU3MWZjXHU3NTMzXHU3OTVlXHU3ZDMzXHU4MTRlXHU4MWUzXHU4Mzk4XHU4NWFhXHU4NWNlXHU4NzAzXHU4YTBhXHU4ZWFiXHU4Zjli'@; put 'XHVmOTcxXHU4ZmM1XHU1OTMxXHU1YmE0XHU1YmU2XHU2MDg5XHU1YmU5XHU1YzBiXHU1ZmMzXHU2YzgxIl0sWyJlNGExIiwiXHVmOTcyXHU2ZGYxXHU3MDBiXHU3NTFhXHU4MmFmXHU4YWY2XHU0ZWMwXHU1MzQxXHVmOTczXHU5NmQ5XHU2YzBmXHU0ZTllXHU0ZmM0XHU1MTUyXHU1NTVlXHU1'@; put 'YTI1XHU1Y2U4XHU2MjExXHU3MjU5XHU4MmJkXHU4M2FhXHU4NmZlXHU4ODU5XHU4YTFkXHU5NjNmXHU5NmM1XHU5OTEzXHU5ZDA5XHU5ZDVkXHU1ODBhXHU1Y2IzXHU1ZGJkXHU1ZTQ0XHU2MGUxXHU2MTE1XHU2M2UxXHU2YTAyXHU2ZTI1XHU5MTAyXHU5MzU0XHU5ODRlXHU5YzEwXHU5Zjc3'@; put 'XHU1Yjg5XHU1Y2I4XHU2MzA5XHU2NjRmXHU2ODQ4XHU3NzNjXHU5NmMxXHU5NzhkXHU5ODU0XHU5YjlmXHU2NWExXHU4YjAxXHU4ZWNiXHU5NWJjXHU1NTM1XHU1Y2E5XHU1ZGQ2XHU1ZWI1XHU2Njk3XHU3NjRjXHU4M2Y0XHU5NWM3XHU1OGQzXHU2MmJjXHU3MmNlXHU5ZDI4XHU0ZWYwXHU1'@; put 'OTJlXHU2MDBmXHU2NjNiXHU2YjgzXHU3OWU3XHU5ZDI2XHU1MzkzXHU1NGMwXHU1N2MzXHU1ZDE2XHU2MTFiXHU2NmQ2XHU2ZGFmXHU3ODhkXHU4MjdlXHU5Njk4XHU5NzQ0XHU1Mzg0XHU2MjdjXHU2Mzk2XHU2ZGIyXHU3ZTBhXHU4MTRiXHU5ODRkIl0sWyJlNWExIiwiXHU2YWZiXHU3ZjRj'@; put 'XHU5ZGFmXHU5ZTFhXHU0ZTVmXHU1MDNiXHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3ZDA0XHU4MmU1XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThkXHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1'@; put 'YjQzXHU2MDU5XHU2M2RhXHU2NTE4XHU2NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdiXHU3ZjhhXHVmOTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmEx'@; put 'XHU2NWJjXHU2ZjAxXHU3NjAwXHU3OWE2XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3MTA5XHU4YTAwXHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZhXHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1'@; put 'ZGFhXHU2OTZkXHU1MTg2XHU0ZTg4XHU0ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyIl0sWyJlNmExIiwiXHVmOTgzXHU2YjVmXHU2YzVkXHVmOTg0XHU3NGI1XHU3OTE2XHVmOTg1XHU4MjA3XHU4MjQ1XHU4MzM5XHU4ZjNmXHU4ZjVkXHVmOTg2XHU5OTE4XHVmOTg3XHVmOTg4'@; put 'XHVmOTg5XHU0ZWE2XHVmOThhXHU1N2RmXHU1Zjc5XHU2NjEzXHVmOThiXHVmOThjXHU3NWFiXHU3ZTc5XHU4YjZmXHVmOThkXHU5MDA2XHU5YTViXHU1NmE1XHU1ODI3XHU1OWY4XHU1YTFmXHU1YmI0XHVmOThlXHU1ZWY2XHVmOThmXHVmOTkwXHU2MzUwXHU2MzNiXHVmOTkxXHU2OTNkXHU2'@; put 'Yzg3XHU2Y2JmXHU2ZDhlXHU2ZDkzXHU2ZGY1XHU2ZjE0XHVmOTkyXHU3MGRmXHU3MTM2XHU3MTU5XHVmOTkzXHU3MWMzXHU3MWQ1XHVmOTk0XHU3ODRmXHU3ODZmXHVmOTk1XHU3Yjc1XHU3ZGUzXHVmOTk2XHU3ZTJmXHVmOTk3XHU4ODRkXHU4ZWRmXHVmOTk4XHVmOTk5XHVmOTlhXHU5MjVi'@; put 'XHVmOTliXHU5Y2Y2XHVmOTljXHVmOTlkXHVmOTllXHU2MDg1XHU2ZDg1XHVmOTlmXHU3MWIxXHVmOWEwXHVmOWExXHU5NWIxXHU1M2FkXHVmOWEyXHVmOWEzXHVmOWE0XHU2N2QzXHVmOWE1XHU3MDhlXHU3MTMwXHU3NDMwXHU4Mjc2XHU4MmQyIl0sWyJlN2ExIiwiXHVmOWE2XHU5NWJiXHU5'@; put 'YWU1XHU5ZTdkXHU2NmM0XHVmOWE3XHU3MWMxXHU4NDQ5XHVmOWE4XHVmOWE5XHU1ODRiXHVmOWFhXHVmOWFiXHU1ZGI4XHU1ZjcxXHVmOWFjXHU2NjIwXHU2NjhlXHU2OTc5XHU2OWFlXHU2YzM4XHU2Y2YzXHU2ZTM2XHU2ZjQxXHU2ZmRhXHU3MDFiXHU3MDJmXHU3MTUwXHU3MWRmXHU3Mzcw'@; put 'XHVmOWFkXHU3NDViXHVmOWFlXHU3NGQ0XHU3NmM4XHU3YTRlXHU3ZTkzXHVmOWFmXHVmOWIwXHU4MmYxXHU4YTYwXHU4ZmNlXHVmOWIxXHU5MzQ4XHVmOWIyXHU5NzE5XHVmOWIzXHVmOWI0XHU0ZTQyXHU1MDJhXHVmOWI1XHU1MjA4XHU1M2UxXHU2NmYzXHU2YzZkXHU2ZmNhXHU3MzBhXHU3'@; put 'NzdmXHU3YTYyXHU4MmFlXHU4NWRkXHU4NjAyXHVmOWI2XHU4OGQ0XHU4YTYzXHU4YjdkXHU4YzZiXHVmOWI3XHU5MmIzXHVmOWI4XHU5NzEzXHU5ODEwXHU0ZTk0XHU0ZjBkXHU0ZmM5XHU1MGIyXHU1MzQ4XHU1NDNlXHU1NDMzXHU1NWRhXHU1ODYyXHU1OGJhXHU1OTY3XHU1YTFiXHU1YmU0'@; put 'XHU2MDlmXHVmOWI5XHU2MWNhXHU2NTU2XHU2NWZmXHU2NjY0XHU2OGE3XHU2YzVhXHU2ZmIzIl0sWyJlOGExIiwiXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0XHU5YzMyXHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3'@; put 'YTY5XHU3ZTE1XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3NjcwXHU3ZmMxXHU5MDk1XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4MWU1XHU4NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5'@; put 'XHU3NDEzXHU3NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4MzllXHU4YzRjXHU5NjJlXHU5ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3MzhiXHU1MDJkXHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZjXHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVm'@; put 'OWJiXHU1MGU1XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVmOWJjXHVmOWJkXHU1ZGEyXHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVmOWJmXHU2YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxIl0sWyJlOWExIiwiXHU3YTg4XHU3YWFmXHU3ZTQ3'@; put 'XHU3ZTVlXHU4MDAwXHU4MTcwXHVmOWMyXHU4N2VmXHU4OTgxXHU4YjIwXHU5MDU5XHVmOWMzXHU5MDgwXHU5OTUyXHU2MTdlXHU2YjMyXHU2ZDc0XHU3ZTFmXHU4OTI1XHU4ZmIxXHU0ZmQxXHU1MGFkXHU1MTk3XHU1MmM3XHU1N2M3XHU1ODg5XHU1YmI5XHU1ZWI4XHU2MTQyXHU2OTk1XHU2'@; put 'ZDhjXHU2ZTY3XHU2ZWI2XHU3MTk0XHU3NDYyXHU3NTI4XHU3NTJjXHU4MDczXHU4MzM4XHU4NGM5XHU4ZTBhXHU5Mzk0XHU5M2RlXHVmOWM0XHU0ZThlXHU0ZjUxXHU1MDc2XHU1MTJhXHU1M2M4XHU1M2NiXHU1M2YzXHU1Yjg3XHU1YmQzXHU1YzI0XHU2MTFhXHU2MTgyXHU2NWY0XHU3MjVi'@; put 'XHU3Mzk3XHU3NDQwXHU3NmMyXHU3OTUwXHU3OTkxXHU3OWI5XHU3ZDA2XHU3ZmJkXHU4MjhiXHU4NWQ1XHU4NjVlXHU4ZmMyXHU5MDQ3XHU5MGY1XHU5MWVhXHU5Njg1XHU5NmU4XHU5NmU5XHU1MmQ2XHU1ZjY3XHU2NWVkXHU2NjMxXHU2ODJmXHU3MTVjXHU3YTM2XHU5MGMxXHU5ODBhXHU0'@; put 'ZTkxXHVmOWM1XHU2YTUyXHU2YjllXHU2ZjkwXHU3MTg5XHU4MDE4XHU4MmI4XHU4NTUzIl0sWyJlYWExIiwiXHU5MDRiXHU5Njk1XHU5NmYyXHU5N2ZiXHU4NTFhXHU5YjMxXHU0ZTkwXHU3MThhXHU5NmM0XHU1MTQzXHU1MzlmXHU1NGUxXHU1NzEzXHU1NzEyXHU1N2EzXHU1YTliXHU1YWM0'@; put 'XHU1YmMzXHU2MDI4XHU2MTNmXHU2M2Y0XHU2Yzg1XHU2ZDM5XHU2ZTcyXHU2ZTkwXHU3MjMwXHU3MzNmXHU3NDU3XHU4MmQxXHU4ODgxXHU4ZjQ1XHU5MDYwXHVmOWM2XHU5NjYyXHU5ODU4XHU5ZDFiXHU2NzA4XHU4ZDhhXHU5MjVlXHU0ZjRkXHU1MDQ5XHU1MGRlXHU1MzcxXHU1NzBkXHU1'@; put 'OWQ0XHU1YTAxXHU1YzA5XHU2MTcwXHU2NjkwXHU2ZTJkXHU3MjMyXHU3NDRiXHU3ZGVmXHU4MGMzXHU4NDBlXHU4NDY2XHU4NTNmXHU4NzVmXHU4ODViXHU4OTE4XHU4YjAyXHU5MDU1XHU5N2NiXHU5YjRmXHU0ZTczXHU0ZjkxXHU1MTEyXHU1MTZhXHVmOWM3XHU1NTJmXHU1NWE5XHU1Yjdh'@; put 'XHU1YmE1XHU1ZTdjXHU1ZTdkXHU1ZWJlXHU2MGEwXHU2MGRmXHU2MTA4XHU2MTA5XHU2M2M0XHU2NTM4XHU2NzA5XHVmOWM4XHU2N2Q0XHU2N2RhXHVmOWM5XHU2OTYxXHU2OTYyXHU2Y2I5XHU2ZDI3XHVmOWNhXHU2ZTM4XHVmOWNiIl0sWyJlYmExIiwiXHU2ZmUxXHU3MzM2XHU3MzM3XHVm'@; put 'OWNjXHU3NDVjXHU3NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZlXHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMwXHU4ZTQyXHU5MDRhXHU5MDNlXHU5MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5'@; put 'XHU4MGIyXHVmOWQzXHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5NThmXHVmOWQ4XHVmOWQ5XHVmOWRhXHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2'@; put 'MTQ3XHU2YmI3XHU4YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJkXHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkxXHU1MWRkXHU2MWM5XHU4MWJhXHU5ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1'@; put 'XHU3NTkxXHU3N2UzXHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjIl0sWyJlY2ExIiwiXHU4YjcwXHU5MWFiXHU0ZThjXHU0ZWU1XHU0ZjBhXHVmOWRkXHVmOWRlXHU1OTM3XHU1OWU4XHVmOWRmXHU1ZGYyXHU1ZjFiXHU1ZjViXHU2MDIxXHVmOWUwXHVmOWUxXHVmOWUyXHVm'@; put 'OWUzXHU3MjNlXHU3M2U1XHVmOWU0XHU3NTcwXHU3NWNkXHVmOWU1XHU3OWZiXHVmOWU2XHU4MDBjXHU4MDMzXHU4MDg0XHU4MmUxXHU4MzUxXHVmOWU3XHVmOWU4XHU4Y2JkXHU4Y2IzXHU5MDg3XHVmOWU5XHVmOWVhXHU5OGY0XHU5OTBjXHVmOWViXHVmOWVjXHU3MDM3XHU3NmNhXHU3ZmNh'@; put 'XHU3ZmNjXHU3ZmZjXHU4YjFhXHU0ZWJhXHU0ZWMxXHU1MjAzXHU1MzcwXHVmOWVkXHU1NGJkXHU1NmUwXHU1OWZiXHU1YmM1XHU1ZjE1XHU1ZmNkXHU2ZTZlXHVmOWVlXHVmOWVmXHU3ZDZhXHU4MzM1XHVmOWYwXHU4NjkzXHU4YThkXHVmOWYxXHU5NzZkXHU5Nzc3XHVmOWYyXHVmOWYzXHU0'@; put 'ZTAwXHU0ZjVhXHU0ZjdlXHU1OGY5XHU2NWU1XHU2ZWEyXHU5MDM4XHU5M2IwXHU5OWI5XHU0ZWZiXHU1OGVjXHU1OThhXHU1OWQ5XHU2MDQxXHVmOWY0XHVmOWY1XHU3YTE0XHVmOWY2XHU4MzRmXHU4Y2MzXHU1MTY1XHU1MzQ0Il0sWyJlZGExIiwiXHVmOWY3XHVmOWY4XHVmOWY5XHU0ZWNk'@; put 'XHU1MjY5XHU1YjU1XHU4MmJmXHU0ZWQ0XHU1MjNhXHU1NGE4XHU1OWM5XHU1OWZmXHU1YjUwXHU1YjU3XHU1YjVjXHU2MDYzXHU2MTQ4XHU2ZWNiXHU3MDk5XHU3MTZlXHU3Mzg2XHU3NGY3XHU3NWI1XHU3OGMxXHU3ZDJiXHU4MDA1XHU4MWVhXHU4MzI4XHU4NTE3XHU4NWM5XHU4YWVlXHU4'@; put 'Y2M3XHU5NmNjXHU0ZjVjXHU1MmZhXHU1NmJjXHU2NWFiXHU2NjI4XHU3MDdjXHU3MGI4XHU3MjM1XHU3ZGJkXHU4MjhkXHU5MTRjXHU5NmMwXHU5ZDcyXHU1YjcxXHU2OGU3XHU2Yjk4XHU2ZjdhXHU3NmRlXHU1YzkxXHU2NmFiXHU2ZjViXHU3YmI0XHU3YzJhXHU4ODM2XHU5NmRjXHU0ZTA4'@; put 'XHU0ZWQ3XHU1MzIwXHU1ODM0XHU1OGJiXHU1OGVmXHU1OTZjXHU1YzA3XHU1ZTMzXHU1ZTg0XHU1ZjM1XHU2MzhjXHU2NmIyXHU2NzU2XHU2YTFmXHU2YWEzXHU2YjBjXHU2ZjNmXHU3MjQ2XHVmOWZhXHU3MzUwXHU3NDhiXHU3YWUwXHU3Y2E3XHU4MTc4XHU4MWRmXHU4MWU3XHU4MzhhXHU4'@; put 'NDZjXHU4NTIzXHU4NTk0XHU4NWNmXHU4OGRkXHU4ZDEzXHU5MWFjXHU5NTc3Il0sWyJlZWExIiwiXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRkXHU2NzUwXHU2ODNkXHU2ODkzXHU2ZTNkXHU2ZWQzXHU3MDdkXHU3ZTIxXHU4OGMxXHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRl'@; put 'XHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2ZTFhXHU3MmQ5XHU3MzJhXHU3NWJkXHU3YmI4XHU3ZDM1XHU4MmU3XHU4M2Y5XHU4NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4'@; put 'ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMyXHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRkXHU3YjFiXHU3YzRkXHU3ZTNlXHU3ZmRmXHU4MzdiXHU4YjJiXHU4Y2NhXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5'@; put 'XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2MDliXHU2MjMwXHU2ODEzXHU2YmJmXHU2YzA4XHU2ZmIxIl0sWyJlZmExIiwiXHU3MTRlXHU3NDIwXHU3NTMwXHU3NTM4XHU3'@; put 'NTUxXHU3NjcyXHU3YjRjXHU3YjhiXHU3YmFkXHU3YmM2XHU3ZThmXHU4YTZlXHU4ZjNlXHU4ZjQ5XHU5MjNmXHU5MjkzXHU5MzIyXHU5NDJiXHU5NmZiXHU5ODVhXHU5ODZiXHU5OTFlXHU1MjA3XHU2MjJhXHU2Mjk4XHU2ZDU5XHU3NjY0XHU3YWNhXHU3YmMwXHU3ZDc2XHU1MzYwXHU1Y2Jl'@; put 'XHU1ZTk3XHU2ZjM4XHU3MGI5XHU3Yzk4XHU5NzExXHU5YjhlXHU5ZWRlXHU2M2E1XHU2NDdhXHU4Nzc2XHU0ZTAxXHU0ZTk1XHU0ZWFkXHU1MDVjXHU1MDc1XHU1NDQ4XHU1OWMzXHU1YjlhXHU1ZTQwXHU1ZWFkXHU1ZWY3XHU1ZjgxXHU2MGM1XHU2MzNhXHU2NTNmXHU2NTc0XHU2NWNjXHU2'@; put 'Njc2XHU2Njc4XHU2N2ZlXHU2OTY4XHU2YTg5XHU2YjYzXHU2YzQwXHU2ZGMwXHU2ZGU4XHU2ZTFmXHU2ZTVlXHU3MDFlXHU3MGExXHU3MzhlXHU3M2ZkXHU3NTNhXHU3NzViXHU3ODg3XHU3OThlXHU3YTBiXHU3YTdkXHU3Y2JlXHU3ZDhlXHU4MjQ3XHU4YTAyXHU4YWVhXHU4YzllXHU5MTJk'@; put 'XHU5MTRhXHU5MWQ4XHU5MjY2XHU5MmNjXHU5MzIwXHU5NzA2XHU5NzU2Il0sWyJmMGExIiwiXHU5NzVjXHU5ODAyXHU5ZjBlXHU1MjM2XHU1MjkxXHU1NTdjXHU1ODI0XHU1ZTFkXHU1ZjFmXHU2MDhjXHU2M2QwXHU2OGFmXHU2ZmRmXHU3OTZkXHU3YjJjXHU4MWNkXHU4NWJhXHU4OGZkXHU4'@; put 'YWY4XHU4ZTQ0XHU5MThkXHU5NjY0XHU5NjliXHU5NzNkXHU5ODRjXHU5ZjRhXHU0ZmNlXHU1MTQ2XHU1MWNiXHU1MmE5XHU1NjMyXHU1ZjE0XHU1ZjZiXHU2M2FhXHU2NGNkXHU2NWU5XHU2NjQxXHU2NmZhXHU2NmY5XHU2NzFkXHU2ODlkXHU2OGQ3XHU2OWZkXHU2ZjE1XHU2ZjZlXHU3MTY3'@; put 'XHU3MWU1XHU3MjJhXHU3NGFhXHU3NzNhXHU3OTU2XHU3OTVhXHU3OWRmXHU3YTIwXHU3YTk1XHU3Yzk3XHU3Y2RmXHU3ZDQ0XHU3ZTcwXHU4MDg3XHU4NWZiXHU4NmE0XHU4YTU0XHU4YWJmXHU4ZDk5XHU4ZTgxXHU5MDIwXHU5MDZkXHU5MWUzXHU5NjNiXHU5NmQ1XHU5Y2U1XHU2NWNmXHU3'@; put 'YzA3XHU4ZGIzXHU5M2MzXHU1YjU4XHU1YzBhXHU1MzUyXHU2MmQ5XHU3MzFkXHU1MDI3XHU1Yjk3XHU1ZjllXHU2MGIwXHU2MTZiXHU2OGQ1XHU2ZGQ5XHU3NDJlXHU3YTJlXHU3ZDQyXHU3ZDljXHU3ZTMxXHU4MTZiIl0sWyJmMWExIiwiXHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUw'@; put 'XHU1NzUwXHU1ZGU2XHU1ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRmXHU1Yjk5XHU1ZGRlXHU1ZWRhXHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3'@; put 'M2UwXHU3NTg3XHU3YzRjXHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5MTUyXHU5NDQ0XHU5OWQwXHU3YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNk'@; put 'XHU2ZDVhXHU2ZTk2XHU2ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2XHU5MWNkXHU1MzdkXHU2YWRiXHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3'@; put 'NWM3XHU3ZTUyXHU4NGI4XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhIl0sWyJmMmExIiwiXHU1NGFiXHU1NzMwXHU1NzQwXHU1ZmQ3XHU2MzAxXHU2MzA3XHU2NDZmXHU2NTJmXHU2NWU4XHU2NjdhXHU2NzlkXHU2N2IzXHU2YjYyXHU2YzYwXHU2YzlhXHU2ZjJjXHU3N2U1XHU3ODI1XHU3OTQ5'@; put 'XHU3OTU3XHU3ZDE5XHU4MGEyXHU4MTAyXHU4MWYzXHU4MjlkXHU4MmI3XHU4NzE4XHU4YThjXHVmOWZjXHU4ZDA0XHU4ZGJlXHU5MDcyXHU3NmY0XHU3YTE5XHU3YTM3XHU3ZTU0XHU4MDc3XHU1NTA3XHU1NWQ0XHU1ODc1XHU2MzJmXHU2NDIyXHU2NjQ5XHU2NjRiXHU2ODZkXHU2OTliXHU2'@; put 'Yjg0XHU2ZDI1XHU2ZWIxXHU3M2NkXHU3NDY4XHU3NGExXHU3NTViXHU3NWI5XHU3NmUxXHU3NzFlXHU3NzhiXHU3OWU2XHU3ZTA5XHU3ZTFkXHU4MWZiXHU4NTJmXHU4ODk3XHU4YTNhXHU4Y2QxXHU4ZWViXHU4ZmIwXHU5MDMyXHU5M2FkXHU5NjYzXHU5NjczXHU5NzA3XHU0Zjg0XHU1M2Yx'@; put 'XHU1OWVhXHU1YWM5XHU1ZTE5XHU2ODRlXHU3NGM2XHU3NWJlXHU3OWU5XHU3YTkyXHU4MWEzXHU4NmVkXHU4Y2VhXHU4ZGNjXHU4ZmVkXHU2NTlmXHU2NzE1XHVmOWZkXHU1N2Y3XHU2ZjU3XHU3ZGRkXHU4ZjJmIl0sWyJmM2ExIiwiXHU5M2Y2XHU5NmM2XHU1ZmI1XHU2MWYyXHU2Zjg0XHU0'@; put 'ZTE0XHU0Zjk4XHU1MDFmXHU1M2M5XHU1NWRmXHU1ZDZmXHU1ZGVlXHU2YjIxXHU2YjY0XHU3OGNiXHU3YjlhXHVmOWZlXHU4ZTQ5XHU4ZWNhXHU5MDZlXHU2MzQ5XHU2NDNlXHU3NzQwXHU3YTg0XHU5MzJmXHU5NDdmXHU5ZjZhXHU2NGIwXHU2ZmFmXHU3MWU2XHU3NGE4XHU3NGRhXHU3YWM0'@; put 'XHU3YzEyXHU3ZTgyXHU3Y2IyXHU3ZTk4XHU4YjlhXHU4ZDBhXHU5NDdkXHU5OTEwXHU5OTRjXHU1MjM5XHU1YmRmXHU2NGU2XHU2NzJkXHU3ZDJlXHU1MGVkXHU1M2MzXHU1ODc5XHU2MTU4XHU2MTU5XHU2MWZhXHU2NWFjXHU3YWQ5XHU4YjkyXHU4Yjk2XHU1MDA5XHU1MDIxXHU1Mjc1XHU1'@; put 'NTMxXHU1YTNjXHU1ZWUwXHU1ZjcwXHU2MTM0XHU2NTVlXHU2NjBjXHU2NjM2XHU2NmEyXHU2OWNkXHU2ZWM0XHU2ZjMyXHU3MzE2XHU3NjIxXHU3YTkzXHU4MTM5XHU4MjU5XHU4M2Q2XHU4NGJjXHU1MGI1XHU1N2YwXHU1YmMwXHU1YmU4XHU1ZjY5XHU2M2ExXHU3ODI2XHU3ZGI1XHU4M2Rj'@; put 'XHU4NTIxXHU5MWM3XHU5MWY1XHU1MThhXHU2N2Y1XHU3YjU2Il0sWyJmNGExIiwiXHU4Y2FjXHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNhXHU2MTdkXHU2MjFhXHU2MmQzXHU2NGYyXHU2NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5'@; put 'NmJiXHU0ZWRmXHU1MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1XHU2Y2M5XHU2ZGZhXHU3Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5NWUxXHU5NjIxXHU5N2M2XHU1MWY4XHU1NGYyXHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFm'@; put 'XHU4ZjRkXHU5NDM1XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3NTFiXHU3N2JiXHU3YzNkXHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUyXHU3NThhXHU3NzZiXHU4YWRjXHU4Y2JjXHU4ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4'@; put 'YWNiXHU5NzUxXHU5YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1XHU2ZWVmXHU3ZGUwXHU4YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2Mjg0XHU2MmRiXHU2OGEyIl0sWyJmNWExIiwiXHU2OTEyXHU2OTVhXHU2YTM1XHU3MDkyXHU3MTI2XHU3ODVk'@; put 'XHU3OTAxXHU3OTBlXHU3OWQyXHU3YTBkXHU4MDk2XHU4Mjc4XHU4MmQ1XHU4MzQ5XHU4NTQ5XHU4YzgyXHU4ZDg1XHU5MTYyXHU5MThiXHU5MWFlXHU0ZmMzXHU1NmQxXHU3MWVkXHU3N2Q3XHU4NzAwXHU4OWY4XHU1YmY4XHU1ZmQ2XHU2NzUxXHU5MGE4XHU1M2UyXHU1ODVhXHU1YmY1XHU2'@; put 'MGE0XHU2MTgxXHU2NDYwXHU3ZTNkXHU4MDcwXHU4NTI1XHU5MjgzXHU2NGFlXHU1MGFjXHU1ZDE0XHU2NzAwXHU1ODljXHU2MmJkXHU2M2E4XHU2OTBlXHU2OTc4XHU2YTFlXHU2ZTZiXHU3NmJhXHU3OWNiXHU4MmJiXHU4NDI5XHU4YWNmXHU4ZGE4XHU4ZmZkXHU5MTEyXHU5MTRiXHU5MTlj'@; put 'XHU5MzEwXHU5MzE4XHU5MzlhXHU5NmRiXHU5YTM2XHU5YzBkXHU0ZTExXHU3NTVjXHU3OTVkXHU3YWZhXHU3YjUxXHU3YmM5XHU3ZTJlXHU4NGM0XHU4ZTU5XHU4ZTc0XHU4ZWY4XHU5MDEwXHU2NjI1XHU2OTNmXHU3NDQzXHU1MWZhXHU2NzJlXHU5ZWRjXHU1MTQ1XHU1ZmUwXHU2Yzk2XHU4'@; put 'N2YyXHU4ODVkXHU4ODc3XHU2MGI0XHU4MWI1XHU4NDAzIl0sWyJmNmExIiwiXHU4ZDA1XHU1M2Q2XHU1NDM5XHU1NjM0XHU1YTM2XHU1YzMxXHU3MDhhXHU3ZmUwXHU4MDVhXHU4MTA2XHU4MWVkXHU4ZGEzXHU5MTg5XHU5YTVmXHU5ZGYyXHU1MDc0XHU0ZWM0XHU1M2EwXHU2MGZiXHU2ZTJj'@; put 'XHU1YzY0XHU0Zjg4XHU1MDI0XHU1NWU0XHU1Y2Q5XHU1ZTVmXHU2MDY1XHU2ODk0XHU2Y2JiXHU2ZGM0XHU3MWJlXHU3NWQ0XHU3NWY0XHU3NjYxXHU3YTFhXHU3YTQ5XHU3ZGM3XHU3ZGZiXHU3ZjZlXHU4MWY0XHU4NmE5XHU4ZjFjXHU5NmM5XHU5OWIzXHU5ZjUyXHU1MjQ3XHU1MmM1XHU5'@; put 'OGVkXHU4OWFhXHU0ZTAzXHU2N2QyXHU2ZjA2XHU0ZmI1XHU1YmUyXHU2Nzk1XHU2Yzg4XHU2ZDc4XHU3NDFiXHU3ODI3XHU5MWRkXHU5MzdjXHU4N2M0XHU3OWU0XHU3YTMxXHU1ZmViXHU0ZWQ2XHU1NGE0XHU1NTNlXHU1OGFlXHU1OWE1XHU2MGYwXHU2MjUzXHU2MmQ2XHU2NzM2XHU2OTU1'@; put 'XHU4MjM1XHU5NjQwXHU5OWIxXHU5OWRkXHU1MDJjXHU1MzUzXHU1NTQ0XHU1NzdjXHVmYTAxXHU2MjU4XHVmYTAyXHU2NGUyXHU2NjZiXHU2N2RkXHU2ZmMxXHU2ZmVmXHU3NDIyXHU3NDM4XHU4YTE3Il0sWyJmN2ExIiwiXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2'@; put 'YjRlXHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2OWJiXHU1Yjk1XHU1ZTExXHU2ZTZmXHVmYTAzXHU4NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFl'@; put 'XHU4MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkxXHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFmXHU4YTBlXHU2MTVmXHU2ODc2XHVmYTA1XHU3NWRiXHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1'@; put 'MDc4XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2NGFkXHU2NGZhXHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2Nzdm'@; put 'XHU3MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExIl0sWyJmOGExIiwiXHU5NjJhXHU1MTZiXHU1M2VkXHU2MzRjXHU0ZjY5XHU1NTA0XHU2MDk2XHU2NTU3XHU2YzliXHU2ZDdmXHU3MjRjXHU3MmZkXHU3YTE3XHU4OTg3XHU4YzlkXHU1ZjZkXHU2ZjhlXHU3MGY5XHU4MWE4XHU2MTBlXHU0'@; put 'ZmJmXHU1MDRmXHU2MjQxXHU3MjQ3XHU3YmM3XHU3ZGU4XHU3ZmU5XHU5MDRkXHU5N2FkXHU5YTE5XHU4Y2I2XHU1NzZhXHU1ZTczXHU2N2IwXHU4NDBkXHU4YTU1XHU1NDIwXHU1YjE2XHU1ZTYzXHU1ZWUyXHU1ZjBhXHU2NTgzXHU4MGJhXHU4NTNkXHU5NTg5XHU5NjViXHU0ZjQ4XHU1MzA1'@; put 'XHU1MzBkXHU1MzBmXHU1NDg2XHU1NGZhXHU1NzAzXHU1ZTAzXHU2MDE2XHU2MjliXHU2MmIxXHU2MzU1XHVmYTA2XHU2Y2UxXHU2ZDY2XHU3NWIxXHU3ODMyXHU4MGRlXHU4MTJmXHU4MmRlXHU4NDYxXHU4NGIyXHU4ODhkXHU4OTEyXHU5MDBiXHU5MmVhXHU5OGZkXHU5YjkxXHU1ZTQ1XHU2'@; put 'NmI0XHU2NmRkXHU3MDExXHU3MjA2XHVmYTA3XHU0ZmY1XHU1MjdkXHU1ZjZhXHU2MTUzXHU2NzUzXHU2YTE5XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4Yzc5XHU5OGM3XHU5OGM0XHU5YTQzIl0sWyJmOWExIiwiXHU1NGMxXHU3YTFmXHU2OTUzXHU4YWY3XHU4YzRhXHU5OGE4XHU5OWFl'@; put 'XHU1ZjdjXHU2MmFiXHU3NWIyXHU3NmFlXHU4OGFiXHU5MDdmXHU5NjQyXHU1MzM5XHU1ZjNjXHU1ZmM1XHU2Y2NjXHU3M2NjXHU3NTYyXHU3NThiXHU3YjQ2XHU4MmZlXHU5OTlkXHU0ZTRmXHU5MDNjXHU0ZTBiXHU0ZjU1XHU1M2E2XHU1OTBmXHU1ZWM4XHU2NjMwXHU2Y2IzXHU3NDU1XHU4'@; put 'Mzc3XHU4NzY2XHU4Y2MwXHU5MDUwXHU5NzFlXHU5YzE1XHU1OGQxXHU1Yjc4XHU4NjUwXHU4YjE0XHU5ZGI0XHU1YmQyXHU2MDY4XHU2MDhkXHU2NWYxXHU2YzU3XHU2ZjIyXHU2ZmEzXHU3MDFhXHU3ZjU1XHU3ZmYwXHU5NTkxXHU5NTkyXHU5NjUwXHU5N2QzXHU1MjcyXHU4ZjQ0XHU1MWZk'@; put 'XHU1NDJiXHU1NGI4XHU1NTYzXHU1NThhXHU2YWJiXHU2ZGI1XHU3ZGQ4XHU4MjY2XHU5MjljXHU5Njc3XHU5ZTc5XHU1NDA4XHU1NGM4XHU3NmQyXHU4NmU0XHU5NWE0XHU5NWQ0XHU5NjVjXHU0ZWEyXHU0ZjA5XHU1OWVlXHU1YWU2XHU1ZGY3XHU2MDUyXHU2Mjk3XHU2NzZkXHU2ODQxXHU2'@; put 'Yzg2XHU2ZTJmXHU3ZjM4XHU4MDliXHU4MjJhIl0sWyJmYWExIiwiXHVmYTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1YmIzXHU2MWM4XHU2OTc3XHU2ZDc3XHU3MDIzXHU4N2Y5XHU4OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4'@; put 'XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRjXHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5XHU1NjUzXHU1ODlmXHU4NjViXHU4YTMxXHU2MWIyXHU2YWY2XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1'@; put 'OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3ZDQzXHU3ZDYyXHU3ZTIzXHU4MjM3XHU4ODUyXHVmYTBhXHU4Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQw'@; put 'XHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNlXHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0XHU1MjExXHU1NzhiIl0sWyJmYmExIiwiXHU1ZjYyXHU2Y2MyXHU2ZWNlXHU3MDA1XHU3MDUwXHU3MGFmXHU3MTkyXHU3'@; put 'M2U5XHU3NDY5XHU4MzRhXHU4N2EyXHU4ODYxXHU5MDA4XHU5MGEyXHU5M2EzXHU5OWE4XHU1MTZlXHU1ZjU3XHU2MGUwXHU2MTY3XHU2NmIzXHU4NTU5XHU4ZTRhXHU5MWFmXHU5NzhiXHU0ZTRlXHU0ZTkyXHU1NDdjXHU1OGQ1XHU1OGZhXHU1OTdkXHU1Y2I1XHU1ZjI3XHU2MjM2XHU2MjQ4'@; put 'XHU2NjBhXHU2NjY3XHU2YmViXHU2ZDY5XHU2ZGNmXHU2ZTU2XHU2ZWY4XHU2Zjk0XHU2ZmUwXHU2ZmU5XHU3MDVkXHU3MmQwXHU3NDI1XHU3NDVhXHU3NGUwXHU3NjkzXHU3OTVjXHU3Y2NhXHU3ZTFlXHU4MGUxXHU4MmE2XHU4NDZiXHU4NGJmXHU4NjRlXHU4NjVmXHU4Nzc0XHU4Yjc3XHU4'@; put 'YzZhXHU5M2FjXHU5ODAwXHU5ODY1XHU2MGQxXHU2MjE2XHU5MTc3XHU1YTVhXHU2NjBmXHU2ZGY3XHU2ZTNlXHU3NDNmXHU5YjQyXHU1ZmZkXHU2MGRhXHU3YjBmXHU1NGM0XHU1ZjE4XHU2YzVlXHU2Y2QzXHU2ZDJhXHU3MGQ4XHU3ZDA1XHU4Njc5XHU4YTBjXHU5ZDNiXHU1MzE2XHU1NDhj'@; put 'XHU1YjA1XHU2YTNhXHU3MDZiXHU3NTc1Il0sWyJmY2ExIiwiXHU3OThkXHU3OWJlXHU4MmIxXHU4M2VmXHU4YTcxXHU4YjQxXHU4Y2E4XHU5Nzc0XHVmYTBiXHU2NGY0XHU2NTJiXHU3OGJhXHU3OGJiXHU3YTZiXHU0ZTM4XHU1NTlhXHU1OTUwXHU1YmE2XHU1ZTdiXHU2MGEzXHU2M2RiXHU2'@; put 'YjYxXHU2NjY1XHU2ODUzXHU2ZTE5XHU3MTY1XHU3NGIwXHU3ZDA4XHU5MDg0XHU5YTY5XHU5YzI1XHU2ZDNiXHU2ZWQxXHU3MzNlXHU4YzQxXHU5NWNhXHU1MWYwXHU1ZTRjXHU1ZmE4XHU2MDRkXHU2MGY2XHU2MTMwXHU2MTRjXHU2NjQzXHU2NjQ0XHU2OWE1XHU2Y2MxXHU2ZTVmXHU2ZWM5'@; put 'XHU2ZjYyXHU3MTRjXHU3NDljXHU3Njg3XHU3YmMxXHU3YzI3XHU4MzUyXHU4NzU3XHU5MDUxXHU5NjhkXHU5ZWMzXHU1MzJmXHU1NmRlXHU1ZWZiXHU1ZjhhXHU2MDYyXHU2MDk0XHU2MWY3XHU2NjY2XHU2NzAzXHU2YTljXHU2ZGVlXHU2ZmFlXHU3MDcwXHU3MzZhXHU3ZTZhXHU4MWJlXHU4'@; put 'MzM0XHU4NmQ0XHU4YWE4XHU4Y2M0XHU1MjgzXHU3MzcyXHU1Yjk2XHU2YTZiXHU5NDA0XHU1NGVlXHU1Njg2XHU1YjVkXHU2NTQ4XHU2NTg1XHU2NmM5XHU2ODlmXHU2ZDhkXHU2ZGM2Il0sWyJmZGExIiwiXHU3MjNiXHU4MGI0XHU5MTc1XHU5YTRkXHU0ZmFmXHU1MDE5XHU1MzlhXHU1NDBl'@; put 'XHU1NDNjXHU1NTg5XHU1NWM1XHU1ZTNmXHU1ZjhjXHU2NzNkXHU3MTY2XHU3M2RkXHU5MDA1XHU1MmRiXHU1MmYzXHU1ODY0XHU1OGNlXHU3MTA0XHU3MThmXHU3MWZiXHU4NWIwXHU4YTEzXHU2Njg4XHU4NWE4XHU1NWE3XHU2Njg0XHU3MTRhXHU4NDMxXHU1MzQ5XHU1NTk5XHU2YmMxXHU1'@; put 'ZjU5XHU1ZmJkXHU2M2VlXHU2Njg5XHU3MTQ3XHU4YWYxXHU4ZjFkXHU5ZWJlXHU0ZjExXHU2NDNhXHU3MGNiXHU3NTY2XHU4NjY3XHU2MDY0XHU4YjRlXHU5ZGY4XHU1MTQ3XHU1MWY2XHU1MzA4XHU2ZDM2XHU4MGY4XHU5ZWQxXHU2NjE1XHU2YjIzXHU3MDk4XHU3NWQ1XHU1NDAzXHU1Yzc5'@; put 'XHU3ZDA3XHU4YTE2XHU2YjIwXHU2YjNkXHU2YjQ2XHU1NDM4XHU2MDcwXHU2ZDNkXHU3ZmQ1XHU4MjA4XHU1MGQ2XHU1MWRlXHU1NTljXHU1NjZiXHU1NmNkXHU1OWVjXHU1YjA5XHU1ZTBjXHU2MTk5XHU2MTk4XHU2MjMxXHU2NjVlXHU2NmU2XHU3MTk5XHU3MWI5XHU3MWJhXHU3MmE3XHU3'@; put 'OWE3XHU3YTAwXHU3ZmIyXHU4YTcwIl1dJyl9LDcyMzI0KGZlKXsidXNlIHN0cmljdCI7ZmUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI3XSxbImExNDAiLCJcdTMwMDBcdWZmMGNcdTMwMDFcdTMwMDJcdWZmMGVcdTIwMjdcdWZmMWJcdWZmMWFcdWZmMWZcdWZmMDFc'@; put 'dWZlMzBcdTIwMjZcdTIwMjVcdWZlNTBcdWZlNTFcdWZlNTJceGI3XHVmZTU0XHVmZTU1XHVmZTU2XHVmZTU3XHVmZjVjXHUyMDEzXHVmZTMxXHUyMDE0XHVmZTMzXHUyNTc0XHVmZTM0XHVmZTRmXHVmZjA4XHVmZjA5XHVmZTM1XHVmZTM2XHVmZjViXHVmZjVkXHVmZTM3XHVmZTM4XHUzMDE0'@; put 'XHUzMDE1XHVmZTM5XHVmZTNhXHUzMDEwXHUzMDExXHVmZTNiXHVmZTNjXHUzMDBhXHUzMDBiXHVmZTNkXHVmZTNlXHUzMDA4XHUzMDA5XHVmZTNmXHVmZTQwXHUzMDBjXHUzMDBkXHVmZTQxXHVmZTQyXHUzMDBlXHUzMDBmXHVmZTQzXHVmZTQ0XHVmZTU5XHVmZTVhIl0sWyJhMWExIiwiXHVm'@; put 'ZTViXHVmZTVjXHVmZTVkXHVmZTVlXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDFkXHUzMDFlXHUyMDM1XHUyMDMyXHVmZjAzXHVmZjA2XHVmZjBhXHUyMDNiXHhhN1x1MzAwM1x1MjVjYlx1MjVjZlx1MjViM1x1MjViMlx1MjVjZVx1MjYwNlx1MjYwNVx1MjVjN1x1MjVjNlx1MjVhMVx1'@; put 'MjVhMFx1MjViZFx1MjViY1x1MzJhM1x1MjEwNVx4YWZcdWZmZTNcdWZmM2ZcdTAyY2RcdWZlNDlcdWZlNGFcdWZlNGRcdWZlNGVcdWZlNGJcdWZlNGNcdWZlNWZcdWZlNjBcdWZlNjFcdWZmMGJcdWZmMGRceGQ3XHhmN1x4YjFcdTIyMWFcdWZmMWNcdWZmMWVcdWZmMWRcdTIyNjZcdTIyNjdc'@; put 'dTIyNjBcdTIyMWVcdTIyNTJcdTIyNjFcdWZlNjIiLDQsIlx1ZmY1ZVx1MjIyOVx1MjIyYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MzNkMlx1MzNkMVx1MjIyYlx1MjIyZVx1MjIzNVx1MjIzNFx1MjY0MFx1MjY0Mlx1MjI5NVx1MjI5OVx1MjE5MVx1MjE5M1x1MjE5MFx1MjE5Mlx1MjE5'@; put 'Nlx1MjE5N1x1MjE5OVx1MjE5OFx1MjIyNVx1MjIyM1x1ZmYwZiJdLFsiYTI0MCIsIlx1ZmYzY1x1MjIxNVx1ZmU2OFx1ZmYwNFx1ZmZlNVx1MzAxMlx1ZmZlMFx1ZmZlMVx1ZmYwNVx1ZmYyMFx1MjEwM1x1MjEwOVx1ZmU2OVx1ZmU2YVx1ZmU2Ylx1MzNkNVx1MzM5Y1x1MzM5ZFx1MzM5ZVx1'@; put 'MzNjZVx1MzNhMVx1MzM4ZVx1MzM4Zlx1MzNjNFx4YjBcdTUxNTlcdTUxNWJcdTUxNWVcdTUxNWRcdTUxNjFcdTUxNjNcdTU1ZTdcdTc0ZTlcdTdjY2VcdTI1ODEiLDcsIlx1MjU4Zlx1MjU4ZVx1MjU4ZFx1MjU4Y1x1MjU4Ylx1MjU4YVx1MjU4OVx1MjUzY1x1MjUzNFx1MjUyY1x1MjUyNFx1'@; put 'MjUxY1x1MjU5NFx1MjUwMFx1MjUwMlx1MjU5NVx1MjUwY1x1MjUxMFx1MjUxNFx1MjUxOFx1MjU2ZCJdLFsiYTJhMSIsIlx1MjU2ZVx1MjU3MFx1MjU2Zlx1MjU1MFx1MjU1ZVx1MjU2YVx1MjU2MVx1MjVlMlx1MjVlM1x1MjVlNVx1MjVlNFx1MjU3MVx1MjU3Mlx1MjU3M1x1ZmYxMCIsOSwi'@; put 'XHUyMTYwIiw5LCJcdTMwMjEiLDgsIlx1NTM0MVx1NTM0NFx1NTM0NVx1ZmYyMSIsMjUsIlx1ZmY0MSIsMjFdLFsiYTM0MCIsIlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1MDM5MSIsMTYsIlx1MDNhMyIsNiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2LCJcdTMxMDUiLDEwXSxbImEzYTEiLCJc'@; put 'dTMxMTAiLDI1LCJcdTAyZDlcdTAyYzlcdTAyY2FcdTAyYzdcdTAyY2IiXSxbImEzZTEiLCJcdTIwYWMiXSxbImE0NDAiLCJcdTRlMDBcdTRlNTlcdTRlMDFcdTRlMDNcdTRlNDNcdTRlNWRcdTRlODZcdTRlOGNcdTRlYmFcdTUxM2ZcdTUxNjVcdTUxNmJcdTUxZTBcdTUyMDBcdTUyMDFcdTUy'@; put 'OWJcdTUzMTVcdTUzNDFcdTUzNWNcdTUzYzhcdTRlMDlcdTRlMGJcdTRlMDhcdTRlMGFcdTRlMmJcdTRlMzhcdTUxZTFcdTRlNDVcdTRlNDhcdTRlNWZcdTRlNWVcdTRlOGVcdTRlYTFcdTUxNDBcdTUyMDNcdTUyZmFcdTUzNDNcdTUzYzlcdTUzZTNcdTU3MWZcdTU4ZWJcdTU5MTVcdTU5Mjdc'@; put 'dTU5NzNcdTViNTBcdTViNTFcdTViNTNcdTViZjhcdTVjMGZcdTVjMjJcdTVjMzhcdTVjNzFcdTVkZGRcdTVkZTVcdTVkZjFcdTVkZjJcdTVkZjNcdTVkZmVcdTVlNzJcdTVlZmVcdTVmMGJcdTVmMTNcdTYyNGQiXSxbImE0YTEiLCJcdTRlMTFcdTRlMTBcdTRlMGRcdTRlMmRcdTRlMzBcdTRl'@; put 'MzlcdTRlNGJcdTVjMzlcdTRlODhcdTRlOTFcdTRlOTVcdTRlOTJcdTRlOTRcdTRlYTJcdTRlYzFcdTRlYzBcdTRlYzNcdTRlYzZcdTRlYzdcdTRlY2RcdTRlY2FcdTRlY2JcdTRlYzRcdTUxNDNcdTUxNDFcdTUxNjdcdTUxNmRcdTUxNmVcdTUxNmNcdTUxOTdcdTUxZjZcdTUyMDZcdTUyMDdc'@; put 'dTUyMDhcdTUyZmJcdTUyZmVcdTUyZmZcdTUzMTZcdTUzMzlcdTUzNDhcdTUzNDdcdTUzNDVcdTUzNWVcdTUzODRcdTUzY2JcdTUzY2FcdTUzY2RcdTU4ZWNcdTU5MjlcdTU5MmJcdTU5MmFcdTU5MmRcdTViNTRcdTVjMTFcdTVjMjRcdTVjM2FcdTVjNmZcdTVkZjRcdTVlN2JcdTVlZmZcdTVm'@; put 'MTRcdTVmMTVcdTVmYzNcdTYyMDhcdTYyMzZcdTYyNGJcdTYyNGVcdTY1MmZcdTY1ODdcdTY1OTdcdTY1YTRcdTY1YjlcdTY1ZTVcdTY2ZjBcdTY3MDhcdTY3MjhcdTZiMjBcdTZiNjJcdTZiNzlcdTZiY2JcdTZiZDRcdTZiZGJcdTZjMGZcdTZjMzRcdTcwNmJcdTcyMmFcdTcyMzZcdTcyM2Jc'@; put 'dTcyNDdcdTcyNTlcdTcyNWJcdTcyYWNcdTczOGJcdTRlMTkiXSxbImE1NDAiLCJcdTRlMTZcdTRlMTVcdTRlMTRcdTRlMThcdTRlM2JcdTRlNGRcdTRlNGZcdTRlNGVcdTRlZTVcdTRlZDhcdTRlZDRcdTRlZDVcdTRlZDZcdTRlZDdcdTRlZTNcdTRlZTRcdTRlZDlcdTRlZGVcdTUxNDVcdTUx'@; put 'NDRcdTUxODlcdTUxOGFcdTUxYWNcdTUxZjlcdTUxZmFcdTUxZjhcdTUyMGFcdTUyYTBcdTUyOWZcdTUzMDVcdTUzMDZcdTUzMTdcdTUzMWRcdTRlZGZcdTUzNGFcdTUzNDlcdTUzNjFcdTUzNjBcdTUzNmZcdTUzNmVcdTUzYmJcdTUzZWZcdTUzZTRcdTUzZjNcdTUzZWNcdTUzZWVcdTUzZTlc'@; put 'dTUzZThcdTUzZmNcdTUzZjhcdTUzZjVcdTUzZWJcdTUzZTZcdTUzZWFcdTUzZjJcdTUzZjFcdTUzZjBcdTUzZTVcdTUzZWRcdTUzZmJcdTU2ZGJcdTU2ZGFcdTU5MTYiXSxbImE1YTEiLCJcdTU5MmVcdTU5MzFcdTU5NzRcdTU5NzZcdTViNTVcdTViODNcdTVjM2NcdTVkZThcdTVkZTdcdTVk'@; put 'ZTZcdTVlMDJcdTVlMDNcdTVlNzNcdTVlN2NcdTVmMDFcdTVmMThcdTVmMTdcdTVmYzVcdTYyMGFcdTYyNTNcdTYyNTRcdTYyNTJcdTYyNTFcdTY1YTVcdTY1ZTZcdTY3MmVcdTY3MmNcdTY3MmFcdTY3MmJcdTY3MmRcdTZiNjNcdTZiY2RcdTZjMTFcdTZjMTBcdTZjMzhcdTZjNDFcdTZjNDBc'@; put 'dTZjM2VcdTcyYWZcdTczODRcdTczODlcdTc0ZGNcdTc0ZTZcdTc1MThcdTc1MWZcdTc1MjhcdTc1MjlcdTc1MzBcdTc1MzFcdTc1MzJcdTc1MzNcdTc1OGJcdTc2N2RcdTc2YWVcdTc2YmZcdTc2ZWVcdTc3ZGJcdTc3ZTJcdTc3ZjNcdTc5M2FcdTc5YmVcdTdhNzRcdTdhY2JcdTRlMWVcdTRl'@; put 'MWZcdTRlNTJcdTRlNTNcdTRlNjlcdTRlOTlcdTRlYTRcdTRlYTZcdTRlYTVcdTRlZmZcdTRmMDlcdTRmMTlcdTRmMGFcdTRmMTVcdTRmMGRcdTRmMTBcdTRmMTFcdTRmMGZcdTRlZjJcdTRlZjZcdTRlZmJcdTRlZjBcdTRlZjNcdTRlZmRcdTRmMDFcdTRmMGJcdTUxNDlcdTUxNDdcdTUxNDZc'@; put 'dTUxNDhcdTUxNjgiXSxbImE2NDAiLCJcdTUxNzFcdTUxOGRcdTUxYjBcdTUyMTdcdTUyMTFcdTUyMTJcdTUyMGVcdTUyMTZcdTUyYTNcdTUzMDhcdTUzMjFcdTUzMjBcdTUzNzBcdTUzNzFcdTU0MDlcdTU0MGZcdTU0MGNcdTU0MGFcdTU0MTBcdTU0MDFcdTU0MGJcdTU0MDRcdTU0MTFcdTU0'@; put 'MGRcdTU0MDhcdTU0MDNcdTU0MGVcdTU0MDZcdTU0MTJcdTU2ZTBcdTU2ZGVcdTU2ZGRcdTU3MzNcdTU3MzBcdTU3MjhcdTU3MmRcdTU3MmNcdTU3MmZcdTU3MjlcdTU5MTlcdTU5MWFcdTU5MzdcdTU5MzhcdTU5ODRcdTU5NzhcdTU5ODNcdTU5N2RcdTU5NzlcdTU5ODJcdTU5ODFcdTViNTdc'@; put 'dTViNThcdTViODdcdTViODhcdTViODVcdTViODlcdTViZmFcdTVjMTZcdTVjNzlcdTVkZGVcdTVlMDZcdTVlNzZcdTVlNzQiXSxbImE2YTEiLCJcdTVmMGZcdTVmMWJcdTVmZDlcdTVmZDZcdTYyMGVcdTYyMGNcdTYyMGRcdTYyMTBcdTYyNjNcdTYyNWJcdTYyNThcdTY1MzZcdTY1ZTlcdTY1'@; put 'ZThcdTY1ZWNcdTY1ZWRcdTY2ZjJcdTY2ZjNcdTY3MDlcdTY3M2RcdTY3MzRcdTY3MzFcdTY3MzVcdTZiMjFcdTZiNjRcdTZiN2JcdTZjMTZcdTZjNWRcdTZjNTdcdTZjNTlcdTZjNWZcdTZjNjBcdTZjNTBcdTZjNTVcdTZjNjFcdTZjNWJcdTZjNGRcdTZjNGVcdTcwNzBcdTcyNWZcdTcyNWRc'@; put 'dTc2N2VcdTdhZjlcdTdjNzNcdTdjZjhcdTdmMzZcdTdmOGFcdTdmYmRcdTgwMDFcdTgwMDNcdTgwMGNcdTgwMTJcdTgwMzNcdTgwN2ZcdTgwODlcdTgwOGJcdTgwOGNcdTgxZTNcdTgxZWFcdTgxZjNcdTgxZmNcdTgyMGNcdTgyMWJcdTgyMWZcdTgyNmVcdTgyNzJcdTgyN2VcdTg2NmJcdTg4'@; put 'NDBcdTg4NGNcdTg4NjNcdTg5N2ZcdTk2MjFcdTRlMzJcdTRlYThcdTRmNGRcdTRmNGZcdTRmNDdcdTRmNTdcdTRmNWVcdTRmMzRcdTRmNWJcdTRmNTVcdTRmMzBcdTRmNTBcdTRmNTFcdTRmM2RcdTRmM2FcdTRmMzhcdTRmNDNcdTRmNTRcdTRmM2NcdTRmNDZcdTRmNjMiXSxbImE3NDAiLCJc'@; put 'dTRmNWNcdTRmNjBcdTRmMmZcdTRmNGVcdTRmMzZcdTRmNTlcdTRmNWRcdTRmNDhcdTRmNWFcdTUxNGNcdTUxNGJcdTUxNGRcdTUxNzVcdTUxYjZcdTUxYjdcdTUyMjVcdTUyMjRcdTUyMjlcdTUyMmFcdTUyMjhcdTUyYWJcdTUyYTlcdTUyYWFcdTUyYWNcdTUzMjNcdTUzNzNcdTUzNzVcdTU0'@; put 'MWRcdTU0MmRcdTU0MWVcdTU0M2VcdTU0MjZcdTU0NGVcdTU0MjdcdTU0NDZcdTU0NDNcdTU0MzNcdTU0NDhcdTU0NDJcdTU0MWJcdTU0MjlcdTU0NGFcdTU0MzlcdTU0M2JcdTU0MzhcdTU0MmVcdTU0MzVcdTU0MzZcdTU0MjBcdTU0M2NcdTU0NDBcdTU0MzFcdTU0MmJcdTU0MWZcdTU0MmNc'@; put 'dTU2ZWFcdTU2ZjBcdTU2ZTRcdTU2ZWJcdTU3NGFcdTU3NTFcdTU3NDBcdTU3NGQiXSxbImE3YTEiLCJcdTU3NDdcdTU3NGVcdTU3M2VcdTU3NTBcdTU3NGZcdTU3M2JcdTU4ZWZcdTU5M2VcdTU5OWRcdTU5OTJcdTU5YThcdTU5OWVcdTU5YTNcdTU5OTlcdTU5OTZcdTU5OGRcdTU5YTRcdTU5'@; put 'OTNcdTU5OGFcdTU5YTVcdTViNWRcdTViNWNcdTViNWFcdTViNWJcdTViOGNcdTViOGJcdTViOGZcdTVjMmNcdTVjNDBcdTVjNDFcdTVjM2ZcdTVjM2VcdTVjOTBcdTVjOTFcdTVjOTRcdTVjOGNcdTVkZWJcdTVlMGNcdTVlOGZcdTVlODdcdTVlOGFcdTVlZjdcdTVmMDRcdTVmMWZcdTVmNjRc'@; put 'dTVmNjJcdTVmNzdcdTVmNzlcdTVmZDhcdTVmY2NcdTVmZDdcdTVmY2RcdTVmZjFcdTVmZWJcdTVmZjhcdTVmZWFcdTYyMTJcdTYyMTFcdTYyODRcdTYyOTdcdTYyOTZcdTYyODBcdTYyNzZcdTYyODlcdTYyNmRcdTYyOGFcdTYyN2NcdTYyN2VcdTYyNzlcdTYyNzNcdTYyOTJcdTYyNmZcdTYy'@; put 'OThcdTYyNmVcdTYyOTVcdTYyOTNcdTYyOTFcdTYyODZcdTY1MzlcdTY1M2JcdTY1MzhcdTY1ZjFcdTY2ZjRcdTY3NWZcdTY3NGVcdTY3NGZcdTY3NTBcdTY3NTFcdTY3NWNcdTY3NTZcdTY3NWVcdTY3NDlcdTY3NDZcdTY3NjAiXSxbImE4NDAiLCJcdTY3NTNcdTY3NTdcdTZiNjVcdTZiY2Zc'@; put 'dTZjNDJcdTZjNWVcdTZjOTlcdTZjODFcdTZjODhcdTZjODlcdTZjODVcdTZjOWJcdTZjNmFcdTZjN2FcdTZjOTBcdTZjNzBcdTZjOGNcdTZjNjhcdTZjOTZcdTZjOTJcdTZjN2RcdTZjODNcdTZjNzJcdTZjN2VcdTZjNzRcdTZjODZcdTZjNzZcdTZjOGRcdTZjOTRcdTZjOThcdTZjODJcdTcw'@; put 'NzZcdTcwN2NcdTcwN2RcdTcwNzhcdTcyNjJcdTcyNjFcdTcyNjBcdTcyYzRcdTcyYzJcdTczOTZcdTc1MmNcdTc1MmJcdTc1MzdcdTc1MzhcdTc2ODJcdTc2ZWZcdTc3ZTNcdTc5YzFcdTc5YzBcdTc5YmZcdTdhNzZcdTdjZmJcdTdmNTVcdTgwOTZcdTgwOTNcdTgwOWRcdTgwOThcdTgwOWJc'@; put 'dTgwOWFcdTgwYjJcdTgyNmZcdTgyOTIiXSxbImE4YTEiLCJcdTgyOGJcdTgyOGRcdTg5OGJcdTg5ZDJcdThhMDBcdThjMzdcdThjNDZcdThjNTVcdThjOWRcdThkNjRcdThkNzBcdThkYjNcdThlYWJcdThlY2FcdThmOWJcdThmYjBcdThmYzJcdThmYzZcdThmYzVcdThmYzRcdTVkZTFcdTkw'@; put 'OTFcdTkwYTJcdTkwYWFcdTkwYTZcdTkwYTNcdTkxNDlcdTkxYzZcdTkxY2NcdTk2MzJcdTk2MmVcdTk2MzFcdTk2MmFcdTk2MmNcdTRlMjZcdTRlNTZcdTRlNzNcdTRlOGJcdTRlOWJcdTRlOWVcdTRlYWJcdTRlYWNcdTRmNmZcdTRmOWRcdTRmOGRcdTRmNzNcdTRmN2ZcdTRmNmNcdTRmOWJc'@; put 'dTRmOGJcdTRmODZcdTRmODNcdTRmNzBcdTRmNzVcdTRmODhcdTRmNjlcdTRmN2JcdTRmOTZcdTRmN2VcdTRmOGZcdTRmOTFcdTRmN2FcdTUxNTRcdTUxNTJcdTUxNTVcdTUxNjlcdTUxNzdcdTUxNzZcdTUxNzhcdTUxYmRcdTUxZmRcdTUyM2JcdTUyMzhcdTUyMzdcdTUyM2FcdTUyMzBcdTUy'@; put 'MmVcdTUyMzZcdTUyNDFcdTUyYmVcdTUyYmJcdTUzNTJcdTUzNTRcdTUzNTNcdTUzNTFcdTUzNjZcdTUzNzdcdTUzNzhcdTUzNzlcdTUzZDZcdTUzZDRcdTUzZDdcdTU0NzNcdTU0NzUiXSxbImE5NDAiLCJcdTU0OTZcdTU0NzhcdTU0OTVcdTU0ODBcdTU0N2JcdTU0NzdcdTU0ODRcdTU0OTJc'@; put 'dTU0ODZcdTU0N2NcdTU0OTBcdTU0NzFcdTU0NzZcdTU0OGNcdTU0OWFcdTU0NjJcdTU0NjhcdTU0OGJcdTU0N2RcdTU0OGVcdTU2ZmFcdTU3ODNcdTU3NzdcdTU3NmFcdTU3NjlcdTU3NjFcdTU3NjZcdTU3NjRcdTU3N2NcdTU5MWNcdTU5NDlcdTU5NDdcdTU5NDhcdTU5NDRcdTU5NTRcdTU5'@; put 'YmVcdTU5YmJcdTU5ZDRcdTU5YjlcdTU5YWVcdTU5ZDFcdTU5YzZcdTU5ZDBcdTU5Y2RcdTU5Y2JcdTU5ZDNcdTU5Y2FcdTU5YWZcdTU5YjNcdTU5ZDJcdTU5YzVcdTViNWZcdTViNjRcdTViNjNcdTViOTdcdTViOWFcdTViOThcdTViOWNcdTViOTlcdTViOWJcdTVjMWFcdTVjNDhcdTVjNDUi'@; put 'XSxbImE5YTEiLCJcdTVjNDZcdTVjYjdcdTVjYTFcdTVjYjhcdTVjYTlcdTVjYWJcdTVjYjFcdTVjYjNcdTVlMThcdTVlMWFcdTVlMTZcdTVlMTVcdTVlMWJcdTVlMTFcdTVlNzhcdTVlOWFcdTVlOTdcdTVlOWNcdTVlOTVcdTVlOTZcdTVlZjZcdTVmMjZcdTVmMjdcdTVmMjlcdTVmODBcdTVm'@; put 'ODFcdTVmN2ZcdTVmN2NcdTVmZGRcdTVmZTBcdTVmZmRcdTVmZjVcdTVmZmZcdTYwMGZcdTYwMTRcdTYwMmZcdTYwMzVcdTYwMTZcdTYwMmFcdTYwMTVcdTYwMjFcdTYwMjdcdTYwMjlcdTYwMmJcdTYwMWJcdTYyMTZcdTYyMTVcdTYyM2ZcdTYyM2VcdTYyNDBcdTYyN2ZcdTYyYzlcdTYyY2Nc'@; put 'dTYyYzRcdTYyYmZcdTYyYzJcdTYyYjlcdTYyZDJcdTYyZGJcdTYyYWJcdTYyZDNcdTYyZDRcdTYyY2JcdTYyYzhcdTYyYThcdTYyYmRcdTYyYmNcdTYyZDBcdTYyZDlcdTYyYzdcdTYyY2RcdTYyYjVcdTYyZGFcdTYyYjFcdTYyZDhcdTYyZDZcdTYyZDdcdTYyYzZcdTYyYWNcdTYyY2VcdTY1'@; put 'M2VcdTY1YTdcdTY1YmNcdTY1ZmFcdTY2MTRcdTY2MTNcdTY2MGNcdTY2MDZcdTY2MDJcdTY2MGVcdTY2MDBcdTY2MGZcdTY2MTVcdTY2MGEiXSxbImFhNDAiLCJcdTY2MDdcdTY3MGRcdTY3MGJcdTY3NmRcdTY3OGJcdTY3OTVcdTY3NzFcdTY3OWNcdTY3NzNcdTY3NzdcdTY3ODdcdTY3OWRc'@; put 'dTY3OTdcdTY3NmZcdTY3NzBcdTY3N2ZcdTY3ODlcdTY3N2VcdTY3OTBcdTY3NzVcdTY3OWFcdTY3OTNcdTY3N2NcdTY3NmFcdTY3NzJcdTZiMjNcdTZiNjZcdTZiNjdcdTZiN2ZcdTZjMTNcdTZjMWJcdTZjZTNcdTZjZThcdTZjZjNcdTZjYjFcdTZjY2NcdTZjZTVcdTZjYjNcdTZjYmRcdTZj'@; put 'YmVcdTZjYmNcdTZjZTJcdTZjYWJcdTZjZDVcdTZjZDNcdTZjYjhcdTZjYzRcdTZjYjlcdTZjYzFcdTZjYWVcdTZjZDdcdTZjYzVcdTZjZjFcdTZjYmZcdTZjYmJcdTZjZTFcdTZjZGJcdTZjY2FcdTZjYWNcdTZjZWZcdTZjZGNcdTZjZDZcdTZjZTAiXSxbImFhYTEiLCJcdTcwOTVcdTcwOGVc'@; put 'dTcwOTJcdTcwOGFcdTcwOTlcdTcyMmNcdTcyMmRcdTcyMzhcdTcyNDhcdTcyNjdcdTcyNjlcdTcyYzBcdTcyY2VcdTcyZDlcdTcyZDdcdTcyZDBcdTczYTlcdTczYThcdTczOWZcdTczYWJcdTczYTVcdTc1M2RcdTc1OWRcdTc1OTlcdTc1OWFcdTc2ODRcdTc2YzJcdTc2ZjJcdTc2ZjRcdTc3'@; put 'ZTVcdTc3ZmRcdTc5M2VcdTc5NDBcdTc5NDFcdTc5YzlcdTc5YzhcdTdhN2FcdTdhNzlcdTdhZmFcdTdjZmVcdTdmNTRcdTdmOGNcdTdmOGJcdTgwMDVcdTgwYmFcdTgwYTVcdTgwYTJcdTgwYjFcdTgwYTFcdTgwYWJcdTgwYTlcdTgwYjRcdTgwYWFcdTgwYWZcdTgxZTVcdTgxZmVcdTgyMGRc'@; put 'dTgyYjNcdTgyOWRcdTgyOTlcdTgyYWRcdTgyYmRcdTgyOWZcdTgyYjlcdTgyYjFcdTgyYWNcdTgyYTVcdTgyYWZcdTgyYjhcdTgyYTNcdTgyYjBcdTgyYmVcdTgyYjdcdTg2NGVcdTg2NzFcdTUyMWRcdTg4NjhcdThlY2JcdThmY2VcdThmZDRcdThmZDFcdTkwYjVcdTkwYjhcdTkwYjFcdTkw'@; put 'YjZcdTkxYzdcdTkxZDFcdTk1NzdcdTk1ODBcdTk2MWNcdTk2NDBcdTk2M2ZcdTk2M2JcdTk2NDQiXSxbImFiNDAiLCJcdTk2NDJcdTk2YjlcdTk2ZThcdTk3NTJcdTk3NWVcdTRlOWZcdTRlYWRcdTRlYWVcdTRmZTFcdTRmYjVcdTRmYWZcdTRmYmZcdTRmZTBcdTRmZDFcdTRmY2ZcdTRmZGRc'@; put 'dTRmYzNcdTRmYjZcdTRmZDhcdTRmZGZcdTRmY2FcdTRmZDdcdTRmYWVcdTRmZDBcdTRmYzRcdTRmYzJcdTRmZGFcdTRmY2VcdTRmZGVcdTRmYjdcdTUxNTdcdTUxOTJcdTUxOTFcdTUxYTBcdTUyNGVcdTUyNDNcdTUyNGFcdTUyNGRcdTUyNGNcdTUyNGJcdTUyNDdcdTUyYzdcdTUyYzlcdTUy'@; put 'YzNcdTUyYzFcdTUzMGRcdTUzNTdcdTUzN2JcdTUzOWFcdTUzZGJcdTU0YWNcdTU0YzBcdTU0YThcdTU0Y2VcdTU0YzlcdTU0YjhcdTU0YTZcdTU0YjNcdTU0YzdcdTU0YzJcdTU0YmRcdTU0YWFcdTU0YzEiXSxbImFiYTEiLCJcdTU0YzRcdTU0YzhcdTU0YWZcdTU0YWJcdTU0YjFcdTU0YmJc'@; put 'dTU0YTlcdTU0YTdcdTU0YmZcdTU2ZmZcdTU3ODJcdTU3OGJcdTU3YTBcdTU3YTNcdTU3YTJcdTU3Y2VcdTU3YWVcdTU3OTNcdTU5NTVcdTU5NTFcdTU5NGZcdTU5NGVcdTU5NTBcdTU5ZGNcdTU5ZDhcdTU5ZmZcdTU5ZTNcdTU5ZThcdTVhMDNcdTU5ZTVcdTU5ZWFcdTU5ZGFcdTU5ZTZcdTVh'@; put 'MDFcdTU5ZmJcdTViNjlcdTViYTNcdTViYTZcdTViYTRcdTViYTJcdTViYTVcdTVjMDFcdTVjNGVcdTVjNGZcdTVjNGRcdTVjNGJcdTVjZDlcdTVjZDJcdTVkZjdcdTVlMWRcdTVlMjVcdTVlMWZcdTVlN2RcdTVlYTBcdTVlYTZcdTVlZmFcdTVmMDhcdTVmMmRcdTVmNjVcdTVmODhcdTVmODVc'@; put 'dTVmOGFcdTVmOGJcdTVmODdcdTVmOGNcdTVmODlcdTYwMTJcdTYwMWRcdTYwMjBcdTYwMjVcdTYwMGVcdTYwMjhcdTYwNGRcdTYwNzBcdTYwNjhcdTYwNjJcdTYwNDZcdTYwNDNcdTYwNmNcdTYwNmJcdTYwNmFcdTYwNjRcdTYyNDFcdTYyZGNcdTYzMTZcdTYzMDlcdTYyZmNcdTYyZWRcdTYz'@; put 'MDFcdTYyZWVcdTYyZmRcdTYzMDdcdTYyZjFcdTYyZjciXSxbImFjNDAiLCJcdTYyZWZcdTYyZWNcdTYyZmVcdTYyZjRcdTYzMTFcdTYzMDJcdTY1M2ZcdTY1NDVcdTY1YWJcdTY1YmRcdTY1ZTJcdTY2MjVcdTY2MmRcdTY2MjBcdTY2MjdcdTY2MmZcdTY2MWZcdTY2MjhcdTY2MzFcdTY2MjRc'@; put 'dTY2ZjdcdTY3ZmZcdTY3ZDNcdTY3ZjFcdTY3ZDRcdTY3ZDBcdTY3ZWNcdTY3YjZcdTY3YWZcdTY3ZjVcdTY3ZTlcdTY3ZWZcdTY3YzRcdTY3ZDFcdTY3YjRcdTY3ZGFcdTY3ZTVcdTY3YjhcdTY3Y2ZcdTY3ZGVcdTY3ZjNcdTY3YjBcdTY3ZDlcdTY3ZTJcdTY3ZGRcdTY3ZDJcdTZiNmFcdTZi'@; put 'ODNcdTZiODZcdTZiYjVcdTZiZDJcdTZiZDdcdTZjMWZcdTZjYzlcdTZkMGJcdTZkMzJcdTZkMmFcdTZkNDFcdTZkMjVcdTZkMGNcdTZkMzFcdTZkMWVcdTZkMTciXSxbImFjYTEiLCJcdTZkM2JcdTZkM2RcdTZkM2VcdTZkMzZcdTZkMWJcdTZjZjVcdTZkMzlcdTZkMjdcdTZkMzhcdTZkMjlc'@; put 'dTZkMmVcdTZkMzVcdTZkMGVcdTZkMmJcdTcwYWJcdTcwYmFcdTcwYjNcdTcwYWNcdTcwYWZcdTcwYWRcdTcwYjhcdTcwYWVcdTcwYTRcdTcyMzBcdTcyNzJcdTcyNmZcdTcyNzRcdTcyZTlcdTcyZTBcdTcyZTFcdTczYjdcdTczY2FcdTczYmJcdTczYjJcdTczY2RcdTczYzBcdTczYjNcdTc1'@; put 'MWFcdTc1MmRcdTc1NGZcdTc1NGNcdTc1NGVcdTc1NGJcdTc1YWJcdTc1YTRcdTc1YTVcdTc1YTJcdTc1YTNcdTc2NzhcdTc2ODZcdTc2ODdcdTc2ODhcdTc2YzhcdTc2YzZcdTc2YzNcdTc2YzVcdTc3MDFcdTc2ZjlcdTc2ZjhcdTc3MDlcdTc3MGJcdTc2ZmVcdTc2ZmNcdTc3MDdcdTc3ZGNc'@; put 'dTc4MDJcdTc4MTRcdTc4MGNcdTc4MGRcdTc5NDZcdTc5NDlcdTc5NDhcdTc5NDdcdTc5YjlcdTc5YmFcdTc5ZDFcdTc5ZDJcdTc5Y2JcdTdhN2ZcdTdhODFcdTdhZmZcdTdhZmRcdTdjN2RcdTdkMDJcdTdkMDVcdTdkMDBcdTdkMDlcdTdkMDdcdTdkMDRcdTdkMDZcdTdmMzhcdTdmOGVcdTdm'@; put 'YmZcdTgwMDQiXSxbImFkNDAiLCJcdTgwMTBcdTgwMGRcdTgwMTFcdTgwMzZcdTgwZDZcdTgwZTVcdTgwZGFcdTgwYzNcdTgwYzRcdTgwY2NcdTgwZTFcdTgwZGJcdTgwY2VcdTgwZGVcdTgwZTRcdTgwZGRcdTgxZjRcdTgyMjJcdTgyZTdcdTgzMDNcdTgzMDVcdTgyZTNcdTgyZGJcdTgyZTZc'@; put 'dTgzMDRcdTgyZTVcdTgzMDJcdTgzMDlcdTgyZDJcdTgyZDdcdTgyZjFcdTgzMDFcdTgyZGNcdTgyZDRcdTgyZDFcdTgyZGVcdTgyZDNcdTgyZGZcdTgyZWZcdTgzMDZcdTg2NTBcdTg2NzlcdTg2N2JcdTg2N2FcdTg4NGRcdTg4NmJcdTg5ODFcdTg5ZDRcdThhMDhcdThhMDJcdThhMDNcdThj'@; put 'OWVcdThjYTBcdThkNzRcdThkNzNcdThkYjRcdThlY2RcdThlY2NcdThmZjBcdThmZTZcdThmZTJcdThmZWFcdThmZTUiXSxbImFkYTEiLCJcdThmZWRcdThmZWJcdThmZTRcdThmZThcdTkwY2FcdTkwY2VcdTkwYzFcdTkwYzNcdTkxNGJcdTkxNGFcdTkxY2RcdTk1ODJcdTk2NTBcdTk2NGJc'@; put 'dTk2NGNcdTk2NGRcdTk3NjJcdTk3NjlcdTk3Y2JcdTk3ZWRcdTk3ZjNcdTk4MDFcdTk4YThcdTk4ZGJcdTk4ZGZcdTk5OTZcdTk5OTlcdTRlNThcdTRlYjNcdTUwMGNcdTUwMGRcdTUwMjNcdTRmZWZcdTUwMjZcdTUwMjVcdTRmZjhcdTUwMjlcdTUwMTZcdTUwMDZcdTUwM2NcdTUwMWZcdTUw'@; put 'MWFcdTUwMTJcdTUwMTFcdTRmZmFcdTUwMDBcdTUwMTRcdTUwMjhcdTRmZjFcdTUwMjFcdTUwMGJcdTUwMTlcdTUwMThcdTRmZjNcdTRmZWVcdTUwMmRcdTUwMmFcdTRmZmVcdTUwMmJcdTUwMDlcdTUxN2NcdTUxYTRcdTUxYTVcdTUxYTJcdTUxY2RcdTUxY2NcdTUxYzZcdTUxY2JcdTUyNTZc'@; put 'dTUyNWNcdTUyNTRcdTUyNWJcdTUyNWRcdTUzMmFcdTUzN2ZcdTUzOWZcdTUzOWRcdTUzZGZcdTU0ZThcdTU1MTBcdTU1MDFcdTU1MzdcdTU0ZmNcdTU0ZTVcdTU0ZjJcdTU1MDZcdTU0ZmFcdTU1MTRcdTU0ZTlcdTU0ZWRcdTU0ZTFcdTU1MDlcdTU0ZWVcdTU0ZWEiXSxbImFlNDAiLCJcdTU0'@; put 'ZTZcdTU1MjdcdTU1MDdcdTU0ZmRcdTU1MGZcdTU3MDNcdTU3MDRcdTU3YzJcdTU3ZDRcdTU3Y2JcdTU3YzNcdTU4MDlcdTU5MGZcdTU5NTdcdTU5NThcdTU5NWFcdTVhMTFcdTVhMThcdTVhMWNcdTVhMWZcdTVhMWJcdTVhMTNcdTU5ZWNcdTVhMjBcdTVhMjNcdTVhMjlcdTVhMjVcdTVhMGNc'@; put 'dTVhMDlcdTViNmJcdTVjNThcdTViYjBcdTViYjNcdTViYjZcdTViYjRcdTViYWVcdTViYjVcdTViYjlcdTViYjhcdTVjMDRcdTVjNTFcdTVjNTVcdTVjNTBcdTVjZWRcdTVjZmRcdTVjZmJcdTVjZWFcdTVjZThcdTVjZjBcdTVjZjZcdTVkMDFcdTVjZjRcdTVkZWVcdTVlMmRcdTVlMmJcdTVl'@; put 'YWJcdTVlYWRcdTVlYTdcdTVmMzFcdTVmOTJcdTVmOTFcdTVmOTBcdTYwNTkiXSxbImFlYTEiLCJcdTYwNjNcdTYwNjVcdTYwNTBcdTYwNTVcdTYwNmRcdTYwNjlcdTYwNmZcdTYwODRcdTYwOWZcdTYwOWFcdTYwOGRcdTYwOTRcdTYwOGNcdTYwODVcdTYwOTZcdTYyNDdcdTYyZjNcdTYzMDhc'@; put 'dTYyZmZcdTYzNGVcdTYzM2VcdTYzMmZcdTYzNTVcdTYzNDJcdTYzNDZcdTYzNGZcdTYzNDlcdTYzM2FcdTYzNTBcdTYzM2RcdTYzMmFcdTYzMmJcdTYzMjhcdTYzNGRcdTYzNGNcdTY1NDhcdTY1NDlcdTY1OTlcdTY1YzFcdTY1YzVcdTY2NDJcdTY2NDlcdTY2NGZcdTY2NDNcdTY2NTJcdTY2'@; put 'NGNcdTY2NDVcdTY2NDFcdTY2ZjhcdTY3MTRcdTY3MTVcdTY3MTdcdTY4MjFcdTY4MzhcdTY4NDhcdTY4NDZcdTY4NTNcdTY4MzlcdTY4NDJcdTY4NTRcdTY4MjlcdTY4YjNcdTY4MTdcdTY4NGNcdTY4NTFcdTY4M2RcdTY3ZjRcdTY4NTBcdTY4NDBcdTY4M2NcdTY4NDNcdTY4MmFcdTY4NDVc'@; put 'dTY4MTNcdTY4MThcdTY4NDFcdTZiOGFcdTZiODlcdTZiYjdcdTZjMjNcdTZjMjdcdTZjMjhcdTZjMjZcdTZjMjRcdTZjZjBcdTZkNmFcdTZkOTVcdTZkODhcdTZkODdcdTZkNjZcdTZkNzhcdTZkNzdcdTZkNTlcdTZkOTMiXSxbImFmNDAiLCJcdTZkNmNcdTZkODlcdTZkNmVcdTZkNWFcdTZk'@; put 'NzRcdTZkNjlcdTZkOGNcdTZkOGFcdTZkNzlcdTZkODVcdTZkNjVcdTZkOTRcdTcwY2FcdTcwZDhcdTcwZTRcdTcwZDlcdTcwYzhcdTcwY2ZcdTcyMzlcdTcyNzlcdTcyZmNcdTcyZjlcdTcyZmRcdTcyZjhcdTcyZjdcdTczODZcdTczZWRcdTc0MDlcdTczZWVcdTczZTBcdTczZWFcdTczZGVc'@; put 'dTc1NTRcdTc1NWRcdTc1NWNcdTc1NWFcdTc1NTlcdTc1YmVcdTc1YzVcdTc1YzdcdTc1YjJcdTc1YjNcdTc1YmRcdTc1YmNcdTc1YjlcdTc1YzJcdTc1YjhcdTc2OGJcdTc2YjBcdTc2Y2FcdTc2Y2RcdTc2Y2VcdTc3MjlcdTc3MWZcdTc3MjBcdTc3MjhcdTc3ZTlcdTc4MzBcdTc4MjdcdTc4'@; put 'MzhcdTc4MWRcdTc4MzRcdTc4MzciXSxbImFmYTEiLCJcdTc4MjVcdTc4MmRcdTc4MjBcdTc4MWZcdTc4MzJcdTc5NTVcdTc5NTBcdTc5NjBcdTc5NWZcdTc5NTZcdTc5NWVcdTc5NWRcdTc5NTdcdTc5NWFcdTc5ZTRcdTc5ZTNcdTc5ZTdcdTc5ZGZcdTc5ZTZcdTc5ZTlcdTc5ZDhcdTdhODRc'@; put 'dTdhODhcdTdhZDlcdTdiMDZcdTdiMTFcdTdjODlcdTdkMjFcdTdkMTdcdTdkMGJcdTdkMGFcdTdkMjBcdTdkMjJcdTdkMTRcdTdkMTBcdTdkMTVcdTdkMWFcdTdkMWNcdTdkMGRcdTdkMTlcdTdkMWJcdTdmM2FcdTdmNWZcdTdmOTRcdTdmYzVcdTdmYzFcdTgwMDZcdTgwMThcdTgwMTVcdTgw'@; put 'MTlcdTgwMTdcdTgwM2RcdTgwM2ZcdTgwZjFcdTgxMDJcdTgwZjBcdTgxMDVcdTgwZWRcdTgwZjRcdTgxMDZcdTgwZjhcdTgwZjNcdTgxMDhcdTgwZmRcdTgxMGFcdTgwZmNcdTgwZWZcdTgxZWRcdTgxZWNcdTgyMDBcdTgyMTBcdTgyMmFcdTgyMmJcdTgyMjhcdTgyMmNcdTgyYmJcdTgzMmJc'@; put 'dTgzNTJcdTgzNTRcdTgzNGFcdTgzMzhcdTgzNTBcdTgzNDlcdTgzMzVcdTgzMzRcdTgzNGZcdTgzMzJcdTgzMzlcdTgzMzZcdTgzMTdcdTgzNDBcdTgzMzFcdTgzMjhcdTgzNDMiXSxbImIwNDAiLCJcdTg2NTRcdTg2OGFcdTg2YWFcdTg2OTNcdTg2YTRcdTg2YTlcdTg2OGNcdTg2YTNcdTg2'@; put 'OWNcdTg4NzBcdTg4NzdcdTg4ODFcdTg4ODJcdTg4N2RcdTg4NzlcdThhMThcdThhMTBcdThhMGVcdThhMGNcdThhMTVcdThhMGFcdThhMTdcdThhMTNcdThhMTZcdThhMGZcdThhMTFcdThjNDhcdThjN2FcdThjNzlcdThjYTFcdThjYTJcdThkNzdcdThlYWNcdThlZDJcdThlZDRcdThlY2Zc'@; put 'dThmYjFcdTkwMDFcdTkwMDZcdThmZjdcdTkwMDBcdThmZmFcdThmZjRcdTkwMDNcdThmZmRcdTkwMDVcdThmZjhcdTkwOTVcdTkwZTFcdTkwZGRcdTkwZTJcdTkxNTJcdTkxNGRcdTkxNGNcdTkxZDhcdTkxZGRcdTkxZDdcdTkxZGNcdTkxZDlcdTk1ODNcdTk2NjJcdTk2NjNcdTk2NjEiXSxb'@; put 'ImIwYTEiLCJcdTk2NWJcdTk2NWRcdTk2NjRcdTk2NThcdTk2NWVcdTk2YmJcdTk4ZTJcdTk5YWNcdTlhYThcdTlhZDhcdTliMjVcdTliMzJcdTliM2NcdTRlN2VcdTUwN2FcdTUwN2RcdTUwNWNcdTUwNDdcdTUwNDNcdTUwNGNcdTUwNWFcdTUwNDlcdTUwNjVcdTUwNzZcdTUwNGVcdTUwNTVc'@; put 'dTUwNzVcdTUwNzRcdTUwNzdcdTUwNGZcdTUwMGZcdTUwNmZcdTUwNmRcdTUxNWNcdTUxOTVcdTUxZjBcdTUyNmFcdTUyNmZcdTUyZDJcdTUyZDlcdTUyZDhcdTUyZDVcdTUzMTBcdTUzMGZcdTUzMTlcdTUzM2ZcdTUzNDBcdTUzM2VcdTUzYzNcdTY2ZmNcdTU1NDZcdTU1NmFcdTU1NjZcdTU1'@; put 'NDRcdTU1NWVcdTU1NjFcdTU1NDNcdTU1NGFcdTU1MzFcdTU1NTZcdTU1NGZcdTU1NTVcdTU1MmZcdTU1NjRcdTU1MzhcdTU1MmVcdTU1NWNcdTU1MmNcdTU1NjNcdTU1MzNcdTU1NDFcdTU1NTdcdTU3MDhcdTU3MGJcdTU3MDlcdTU3ZGZcdTU4MDVcdTU4MGFcdTU4MDZcdTU3ZTBcdTU3ZTRc'@; put 'dTU3ZmFcdTU4MDJcdTU4MzVcdTU3ZjdcdTU3ZjlcdTU5MjBcdTU5NjJcdTVhMzZcdTVhNDFcdTVhNDlcdTVhNjZcdTVhNmFcdTVhNDAiXSxbImIxNDAiLCJcdTVhM2NcdTVhNjJcdTVhNWFcdTVhNDZcdTVhNGFcdTViNzBcdTViYzdcdTViYzVcdTViYzRcdTViYzJcdTViYmZcdTViYzZcdTVj'@; put 'MDlcdTVjMDhcdTVjMDdcdTVjNjBcdTVjNWNcdTVjNWRcdTVkMDdcdTVkMDZcdTVkMGVcdTVkMWJcdTVkMTZcdTVkMjJcdTVkMTFcdTVkMjlcdTVkMTRcdTVkMTlcdTVkMjRcdTVkMjdcdTVkMTdcdTVkZTJcdTVlMzhcdTVlMzZcdTVlMzNcdTVlMzdcdTVlYjdcdTVlYjhcdTVlYjZcdTVlYjVc'@; put 'dTVlYmVcdTVmMzVcdTVmMzdcdTVmNTdcdTVmNmNcdTVmNjlcdTVmNmJcdTVmOTdcdTVmOTlcdTVmOWVcdTVmOThcdTVmYTFcdTVmYTBcdTVmOWNcdTYwN2ZcdTYwYTNcdTYwODlcdTYwYTBcdTYwYThcdTYwY2JcdTYwYjRcdTYwZTZcdTYwYmQiXSxbImIxYTEiLCJcdTYwYzVcdTYwYmJcdTYw'@; put 'YjVcdTYwZGNcdTYwYmNcdTYwZDhcdTYwZDVcdTYwYzZcdTYwZGZcdTYwYjhcdTYwZGFcdTYwYzdcdTYyMWFcdTYyMWJcdTYyNDhcdTYzYTBcdTYzYTdcdTYzNzJcdTYzOTZcdTYzYTJcdTYzYTVcdTYzNzdcdTYzNjdcdTYzOThcdTYzYWFcdTYzNzFcdTYzYTlcdTYzODlcdTYzODNcdTYzOWJc'@; put 'dTYzNmJcdTYzYThcdTYzODRcdTYzODhcdTYzOTlcdTYzYTFcdTYzYWNcdTYzOTJcdTYzOGZcdTYzODBcdTYzN2JcdTYzNjlcdTYzNjhcdTYzN2FcdTY1NWRcdTY1NTZcdTY1NTFcdTY1NTlcdTY1NTdcdTU1NWZcdTY1NGZcdTY1NThcdTY1NTVcdTY1NTRcdTY1OWNcdTY1OWJcdTY1YWNcdTY1'@; put 'Y2ZcdTY1Y2JcdTY1Y2NcdTY1Y2VcdTY2NWRcdTY2NWFcdTY2NjRcdTY2NjhcdTY2NjZcdTY2NWVcdTY2ZjlcdTUyZDdcdTY3MWJcdTY4ODFcdTY4YWZcdTY4YTJcdTY4OTNcdTY4YjVcdTY4N2ZcdTY4NzZcdTY4YjFcdTY4YTdcdTY4OTdcdTY4YjBcdTY4ODNcdTY4YzRcdTY4YWRcdTY4ODZc'@; put 'dTY4ODVcdTY4OTRcdTY4OWRcdTY4YThcdTY4OWZcdTY4YTFcdTY4ODJcdTZiMzJcdTZiYmEiXSxbImIyNDAiLCJcdTZiZWJcdTZiZWNcdTZjMmJcdTZkOGVcdTZkYmNcdTZkZjNcdTZkZDlcdTZkYjJcdTZkZTFcdTZkY2NcdTZkZTRcdTZkZmJcdTZkZmFcdTZlMDVcdTZkYzdcdTZkY2JcdTZk'@; put 'YWZcdTZkZDFcdTZkYWVcdTZkZGVcdTZkZjlcdTZkYjhcdTZkZjdcdTZkZjVcdTZkYzVcdTZkZDJcdTZlMWFcdTZkYjVcdTZkZGFcdTZkZWJcdTZkZDhcdTZkZWFcdTZkZjFcdTZkZWVcdTZkZThcdTZkYzZcdTZkYzRcdTZkYWFcdTZkZWNcdTZkYmZcdTZkZTZcdTcwZjlcdTcxMDlcdTcxMGFc'@; put 'dTcwZmRcdTcwZWZcdTcyM2RcdTcyN2RcdTcyODFcdTczMWNcdTczMWJcdTczMTZcdTczMTNcdTczMTlcdTczODdcdTc0MDVcdTc0MGFcdTc0MDNcdTc0MDZcdTczZmVcdTc0MGRcdTc0ZTBcdTc0ZjYiXSxbImIyYTEiLCJcdTc0ZjdcdTc1MWNcdTc1MjJcdTc1NjVcdTc1NjZcdTc1NjJcdTc1'@; put 'NzBcdTc1OGZcdTc1ZDRcdTc1ZDVcdTc1YjVcdTc1Y2FcdTc1Y2RcdTc2OGVcdTc2ZDRcdTc2ZDJcdTc2ZGJcdTc3MzdcdTc3M2VcdTc3M2NcdTc3MzZcdTc3MzhcdTc3M2FcdTc4NmJcdTc4NDNcdTc4NGVcdTc5NjVcdTc5NjhcdTc5NmRcdTc5ZmJcdTdhOTJcdTdhOTVcdTdiMjBcdTdiMjhc'@; put 'dTdiMWJcdTdiMmNcdTdiMjZcdTdiMTlcdTdiMWVcdTdiMmVcdTdjOTJcdTdjOTdcdTdjOTVcdTdkNDZcdTdkNDNcdTdkNzFcdTdkMmVcdTdkMzlcdTdkM2NcdTdkNDBcdTdkMzBcdTdkMzNcdTdkNDRcdTdkMmZcdTdkNDJcdTdkMzJcdTdkMzFcdTdmM2RcdTdmOWVcdTdmOWFcdTdmY2NcdTdm'@; put 'Y2VcdTdmZDJcdTgwMWNcdTgwNGFcdTgwNDZcdTgxMmZcdTgxMTZcdTgxMjNcdTgxMmJcdTgxMjlcdTgxMzBcdTgxMjRcdTgyMDJcdTgyMzVcdTgyMzdcdTgyMzZcdTgyMzlcdTgzOGVcdTgzOWVcdTgzOThcdTgzNzhcdTgzYTJcdTgzOTZcdTgzYmRcdTgzYWJcdTgzOTJcdTgzOGFcdTgzOTNc'@; put 'dTgzODlcdTgzYTBcdTgzNzdcdTgzN2JcdTgzN2MiXSxbImIzNDAiLCJcdTgzODZcdTgzYTdcdTg2NTVcdTVmNmFcdTg2YzdcdTg2YzBcdTg2YjZcdTg2YzRcdTg2YjVcdTg2YzZcdTg2Y2JcdTg2YjFcdTg2YWZcdTg2YzlcdTg4NTNcdTg4OWVcdTg4ODhcdTg4YWJcdTg4OTJcdTg4OTZcdTg4'@; put 'OGRcdTg4OGJcdTg5OTNcdTg5OGZcdThhMmFcdThhMWRcdThhMjNcdThhMjVcdThhMzFcdThhMmRcdThhMWZcdThhMWJcdThhMjJcdThjNDlcdThjNWFcdThjYTlcdThjYWNcdThjYWJcdThjYThcdThjYWFcdThjYTdcdThkNjdcdThkNjZcdThkYmVcdThkYmFcdThlZGJcdThlZGZcdTkwMTlc'@; put 'dTkwMGRcdTkwMWFcdTkwMTdcdTkwMjNcdTkwMWZcdTkwMWRcdTkwMTBcdTkwMTVcdTkwMWVcdTkwMjBcdTkwMGZcdTkwMjJcdTkwMTZcdTkwMWJcdTkwMTQiXSxbImIzYTEiLCJcdTkwZThcdTkwZWRcdTkwZmRcdTkxNTdcdTkxY2VcdTkxZjVcdTkxZTZcdTkxZTNcdTkxZTdcdTkxZWRcdTkx'@; put 'ZTlcdTk1ODlcdTk2NmFcdTk2NzVcdTk2NzNcdTk2NzhcdTk2NzBcdTk2NzRcdTk2NzZcdTk2NzdcdTk2NmNcdTk2YzBcdTk2ZWFcdTk2ZTlcdTdhZTBcdTdhZGZcdTk4MDJcdTk4MDNcdTliNWFcdTljZTVcdTllNzVcdTllN2ZcdTllYTVcdTllYmJcdTUwYTJcdTUwOGRcdTUwODVcdTUwOTlc'@; put 'dTUwOTFcdTUwODBcdTUwOTZcdTUwOThcdTUwOWFcdTY3MDBcdTUxZjFcdTUyNzJcdTUyNzRcdTUyNzVcdTUyNjlcdTUyZGVcdTUyZGRcdTUyZGJcdTUzNWFcdTUzYTVcdTU1N2JcdTU1ODBcdTU1YTdcdTU1N2NcdTU1OGFcdTU1OWRcdTU1OThcdTU1ODJcdTU1OWNcdTU1YWFcdTU1OTRcdTU1'@; put 'ODdcdTU1OGJcdTU1ODNcdTU1YjNcdTU1YWVcdTU1OWZcdTU1M2VcdTU1YjJcdTU1OWFcdTU1YmJcdTU1YWNcdTU1YjFcdTU1N2VcdTU1ODlcdTU1YWJcdTU1OTlcdTU3MGRcdTU4MmZcdTU4MmFcdTU4MzRcdTU4MjRcdTU4MzBcdTU4MzFcdTU4MjFcdTU4MWRcdTU4MjBcdTU4ZjlcdTU4ZmFc'@; put 'dTU5NjAiXSxbImI0NDAiLCJcdTVhNzdcdTVhOWFcdTVhN2ZcdTVhOTJcdTVhOWJcdTVhYTdcdTViNzNcdTViNzFcdTViZDJcdTViY2NcdTViZDNcdTViZDBcdTVjMGFcdTVjMGJcdTVjMzFcdTVkNGNcdTVkNTBcdTVkMzRcdTVkNDdcdTVkZmRcdTVlNDVcdTVlM2RcdTVlNDBcdTVlNDNcdTVl'@; put 'N2VcdTVlY2FcdTVlYzFcdTVlYzJcdTVlYzRcdTVmM2NcdTVmNmRcdTVmYTlcdTVmYWFcdTVmYThcdTYwZDFcdTYwZTFcdTYwYjJcdTYwYjZcdTYwZTBcdTYxMWNcdTYxMjNcdTYwZmFcdTYxMTVcdTYwZjBcdTYwZmJcdTYwZjRcdTYxNjhcdTYwZjFcdTYxMGVcdTYwZjZcdTYxMDlcdTYxMDBc'@; put 'dTYxMTJcdTYyMWZcdTYyNDlcdTYzYTNcdTYzOGNcdTYzY2ZcdTYzYzBcdTYzZTlcdTYzYzlcdTYzYzZcdTYzY2QiXSxbImI0YTEiLCJcdTYzZDJcdTYzZTNcdTYzZDBcdTYzZTFcdTYzZDZcdTYzZWRcdTYzZWVcdTYzNzZcdTYzZjRcdTYzZWFcdTYzZGJcdTY0NTJcdTYzZGFcdTYzZjlcdTY1'@; put 'NWVcdTY1NjZcdTY1NjJcdTY1NjNcdTY1OTFcdTY1OTBcdTY1YWZcdTY2NmVcdTY2NzBcdTY2NzRcdTY2NzZcdTY2NmZcdTY2OTFcdTY2N2FcdTY2N2VcdTY2NzdcdTY2ZmVcdTY2ZmZcdTY3MWZcdTY3MWRcdTY4ZmFcdTY4ZDVcdTY4ZTBcdTY4ZDhcdTY4ZDdcdTY5MDVcdTY4ZGZcdTY4ZjVc'@; put 'dTY4ZWVcdTY4ZTdcdTY4ZjlcdTY4ZDJcdTY4ZjJcdTY4ZTNcdTY4Y2JcdTY4Y2RcdTY5MGRcdTY5MTJcdTY5MGVcdTY4YzlcdTY4ZGFcdTY5NmVcdTY4ZmJcdTZiM2VcdTZiM2FcdTZiM2RcdTZiOThcdTZiOTZcdTZiYmNcdTZiZWZcdTZjMmVcdTZjMmZcdTZjMmNcdTZlMmZcdTZlMzhcdTZl'@; put 'NTRcdTZlMjFcdTZlMzJcdTZlNjdcdTZlNGFcdTZlMjBcdTZlMjVcdTZlMjNcdTZlMWJcdTZlNWJcdTZlNThcdTZlMjRcdTZlNTZcdTZlNmVcdTZlMmRcdTZlMjZcdTZlNmZcdTZlMzRcdTZlNGRcdTZlM2FcdTZlMmNcdTZlNDNcdTZlMWRcdTZlM2VcdTZlY2IiXSxbImI1NDAiLCJcdTZlODlc'@; put 'dTZlMTlcdTZlNGVcdTZlNjNcdTZlNDRcdTZlNzJcdTZlNjlcdTZlNWZcdTcxMTlcdTcxMWFcdTcxMjZcdTcxMzBcdTcxMjFcdTcxMzZcdTcxNmVcdTcxMWNcdTcyNGNcdTcyODRcdTcyODBcdTczMzZcdTczMjVcdTczMzRcdTczMjlcdTc0M2FcdTc0MmFcdTc0MzNcdTc0MjJcdTc0MjVcdTc0'@; put 'MzVcdTc0MzZcdTc0MzRcdTc0MmZcdTc0MWJcdTc0MjZcdTc0MjhcdTc1MjVcdTc1MjZcdTc1NmJcdTc1NmFcdTc1ZTJcdTc1ZGJcdTc1ZTNcdTc1ZDlcdTc1ZDhcdTc1ZGVcdTc1ZTBcdTc2N2JcdTc2N2NcdTc2OTZcdTc2OTNcdTc2YjRcdTc2ZGNcdTc3NGZcdTc3ZWRcdTc4NWRcdTc4NmNc'@; put 'dTc4NmZcdTdhMGRcdTdhMDhcdTdhMGJcdTdhMDVcdTdhMDBcdTdhOTgiXSxbImI1YTEiLCJcdTdhOTdcdTdhOTZcdTdhZTVcdTdhZTNcdTdiNDlcdTdiNTZcdTdiNDZcdTdiNTBcdTdiNTJcdTdiNTRcdTdiNGRcdTdiNGJcdTdiNGZcdTdiNTFcdTdjOWZcdTdjYTVcdTdkNWVcdTdkNTBcdTdk'@; put 'NjhcdTdkNTVcdTdkMmJcdTdkNmVcdTdkNzJcdTdkNjFcdTdkNjZcdTdkNjJcdTdkNzBcdTdkNzNcdTU1ODRcdTdmZDRcdTdmZDVcdTgwMGJcdTgwNTJcdTgwODVcdTgxNTVcdTgxNTRcdTgxNGJcdTgxNTFcdTgxNGVcdTgxMzlcdTgxNDZcdTgxM2VcdTgxNGNcdTgxNTNcdTgxNzRcdTgyMTJc'@; put 'dTgyMWNcdTgzZTlcdTg0MDNcdTgzZjhcdTg0MGRcdTgzZTBcdTgzYzVcdTg0MGJcdTgzYzFcdTgzZWZcdTgzZjFcdTgzZjRcdTg0NTdcdTg0MGFcdTgzZjBcdTg0MGNcdTgzY2NcdTgzZmRcdTgzZjJcdTgzY2FcdTg0MzhcdTg0MGVcdTg0MDRcdTgzZGNcdTg0MDdcdTgzZDRcdTgzZGZcdTg2'@; put 'NWJcdTg2ZGZcdTg2ZDlcdTg2ZWRcdTg2ZDRcdTg2ZGJcdTg2ZTRcdTg2ZDBcdTg2ZGVcdTg4NTdcdTg4YzFcdTg4YzJcdTg4YjFcdTg5ODNcdTg5OTZcdThhM2JcdThhNjBcdThhNTVcdThhNWVcdThhM2NcdThhNDEiXSxbImI2NDAiLCJcdThhNTRcdThhNWJcdThhNTBcdThhNDZcdThhMzRc'@; put 'dThhM2FcdThhMzZcdThhNTZcdThjNjFcdThjODJcdThjYWZcdThjYmNcdThjYjNcdThjYmRcdThjYzFcdThjYmJcdThjYzBcdThjYjRcdThjYjdcdThjYjZcdThjYmZcdThjYjhcdThkOGFcdThkODVcdThkODFcdThkY2VcdThkZGRcdThkY2JcdThkZGFcdThkZDFcdThkY2NcdThkZGJcdThk'@; put 'YzZcdThlZmJcdThlZjhcdThlZmNcdThmOWNcdTkwMmVcdTkwMzVcdTkwMzFcdTkwMzhcdTkwMzJcdTkwMzZcdTkxMDJcdTkwZjVcdTkxMDlcdTkwZmVcdTkxNjNcdTkxNjVcdTkxY2ZcdTkyMTRcdTkyMTVcdTkyMjNcdTkyMDlcdTkyMWVcdTkyMGRcdTkyMTBcdTkyMDdcdTkyMTFcdTk1OTRc'@; put 'dTk1OGZcdTk1OGJcdTk1OTEiXSxbImI2YTEiLCJcdTk1OTNcdTk1OTJcdTk1OGVcdTk2OGFcdTk2OGVcdTk2OGJcdTk2N2RcdTk2ODVcdTk2ODZcdTk2OGRcdTk2NzJcdTk2ODRcdTk2YzFcdTk2YzVcdTk2YzRcdTk2YzZcdTk2YzdcdTk2ZWZcdTk2ZjJcdTk3Y2NcdTk4MDVcdTk4MDZcdTk4'@; put 'MDhcdTk4ZTdcdTk4ZWFcdTk4ZWZcdTk4ZTlcdTk4ZjJcdTk4ZWRcdTk5YWVcdTk5YWRcdTllYzNcdTllY2RcdTllZDFcdTRlODJcdTUwYWRcdTUwYjVcdTUwYjJcdTUwYjNcdTUwYzVcdTUwYmVcdTUwYWNcdTUwYjdcdTUwYmJcdTUwYWZcdTUwYzdcdTUyN2ZcdTUyNzdcdTUyN2RcdTUyZGZc'@; put 'dTUyZTZcdTUyZTRcdTUyZTJcdTUyZTNcdTUzMmZcdTU1ZGZcdTU1ZThcdTU1ZDNcdTU1ZTZcdTU1Y2VcdTU1ZGNcdTU1YzdcdTU1ZDFcdTU1ZTNcdTU1ZTRcdTU1ZWZcdTU1ZGFcdTU1ZTFcdTU1YzVcdTU1YzZcdTU1ZTVcdTU1YzlcdTU3MTJcdTU3MTNcdTU4NWVcdTU4NTFcdTU4NThcdTU4'@; put 'NTdcdTU4NWFcdTU4NTRcdTU4NmJcdTU4NGNcdTU4NmRcdTU4NGFcdTU4NjJcdTU4NTJcdTU4NGJcdTU5NjdcdTVhYzFcdTVhYzlcdTVhY2NcdTVhYmVcdTVhYmRcdTVhYmMiXSxbImI3NDAiLCJcdTVhYjNcdTVhYzJcdTVhYjJcdTVkNjlcdTVkNmZcdTVlNGNcdTVlNzlcdTVlYzlcdTVlYzhc'@; put 'dTVmMTJcdTVmNTlcdTVmYWNcdTVmYWVcdTYxMWFcdTYxMGZcdTYxNDhcdTYxMWZcdTYwZjNcdTYxMWJcdTYwZjlcdTYxMDFcdTYxMDhcdTYxNGVcdTYxNGNcdTYxNDRcdTYxNGRcdTYxM2VcdTYxMzRcdTYxMjdcdTYxMGRcdTYxMDZcdTYxMzdcdTYyMjFcdTYyMjJcdTY0MTNcdTY0M2VcdTY0'@; put 'MWVcdTY0MmFcdTY0MmRcdTY0M2RcdTY0MmNcdTY0MGZcdTY0MWNcdTY0MTRcdTY0MGRcdTY0MzZcdTY0MTZcdTY0MTdcdTY0MDZcdTY1NmNcdTY1OWZcdTY1YjBcdTY2OTdcdTY2ODlcdTY2ODdcdTY2ODhcdTY2OTZcdTY2ODRcdTY2OThcdTY2OGRcdTY3MDNcdTY5OTRcdTY5NmQiXSxbImI3'@; put 'YTEiLCJcdTY5NWFcdTY5NzdcdTY5NjBcdTY5NTRcdTY5NzVcdTY5MzBcdTY5ODJcdTY5NGFcdTY5NjhcdTY5NmJcdTY5NWVcdTY5NTNcdTY5NzlcdTY5ODZcdTY5NWRcdTY5NjNcdTY5NWJcdTZiNDdcdTZiNzJcdTZiYzBcdTZiYmZcdTZiZDNcdTZiZmRcdTZlYTJcdTZlYWZcdTZlZDNcdTZl'@; put 'YjZcdTZlYzJcdTZlOTBcdTZlOWRcdTZlYzdcdTZlYzVcdTZlYTVcdTZlOThcdTZlYmNcdTZlYmFcdTZlYWJcdTZlZDFcdTZlOTZcdTZlOWNcdTZlYzRcdTZlZDRcdTZlYWFcdTZlYTdcdTZlYjRcdTcxNGVcdTcxNTlcdTcxNjlcdTcxNjRcdTcxNDlcdTcxNjdcdTcxNWNcdTcxNmNcdTcxNjZc'@; put 'dTcxNGNcdTcxNjVcdTcxNWVcdTcxNDZcdTcxNjhcdTcxNTZcdTcyM2FcdTcyNTJcdTczMzdcdTczNDVcdTczM2ZcdTczM2VcdTc0NmZcdTc0NWFcdTc0NTVcdTc0NWZcdTc0NWVcdTc0NDFcdTc0M2ZcdTc0NTlcdTc0NWJcdTc0NWNcdTc1NzZcdTc1NzhcdTc2MDBcdTc1ZjBcdTc2MDFcdTc1'@; put 'ZjJcdTc1ZjFcdTc1ZmFcdTc1ZmZcdTc1ZjRcdTc1ZjNcdTc2ZGVcdTc2ZGZcdTc3NWJcdTc3NmJcdTc3NjZcdTc3NWVcdTc3NjMiXSxbImI4NDAiLCJcdTc3NzlcdTc3NmFcdTc3NmNcdTc3NWNcdTc3NjVcdTc3NjhcdTc3NjJcdTc3ZWVcdTc4OGVcdTc4YjBcdTc4OTdcdTc4OThcdTc4OGNc'@; put 'dTc4ODlcdTc4N2NcdTc4OTFcdTc4OTNcdTc4N2ZcdTc5N2FcdTc5N2ZcdTc5ODFcdTg0MmNcdTc5YmRcdTdhMWNcdTdhMWFcdTdhMjBcdTdhMTRcdTdhMWZcdTdhMWVcdTdhOWZcdTdhYTBcdTdiNzdcdTdiYzBcdTdiNjBcdTdiNmVcdTdiNjdcdTdjYjFcdTdjYjNcdTdjYjVcdTdkOTNcdTdk'@; put 'NzlcdTdkOTFcdTdkODFcdTdkOGZcdTdkNWJcdTdmNmVcdTdmNjlcdTdmNmFcdTdmNzJcdTdmYTlcdTdmYThcdTdmYTRcdTgwNTZcdTgwNThcdTgwODZcdTgwODRcdTgxNzFcdTgxNzBcdTgxNzhcdTgxNjVcdTgxNmVcdTgxNzNcdTgxNmIiXSxbImI4YTEiLCJcdTgxNzlcdTgxN2FcdTgxNjZc'@; put 'dTgyMDVcdTgyNDdcdTg0ODJcdTg0NzdcdTg0M2RcdTg0MzFcdTg0NzVcdTg0NjZcdTg0NmJcdTg0NDlcdTg0NmNcdTg0NWJcdTg0M2NcdTg0MzVcdTg0NjFcdTg0NjNcdTg0NjlcdTg0NmRcdTg0NDZcdTg2NWVcdTg2NWNcdTg2NWZcdTg2ZjlcdTg3MTNcdTg3MDhcdTg3MDdcdTg3MDBcdTg2'@; put 'ZmVcdTg2ZmJcdTg3MDJcdTg3MDNcdTg3MDZcdTg3MGFcdTg4NTlcdTg4ZGZcdTg4ZDRcdTg4ZDlcdTg4ZGNcdTg4ZDhcdTg4ZGRcdTg4ZTFcdTg4Y2FcdTg4ZDVcdTg4ZDJcdTg5OWNcdTg5ZTNcdThhNmJcdThhNzJcdThhNzNcdThhNjZcdThhNjlcdThhNzBcdThhODdcdThhN2NcdThhNjNc'@; put 'dThhYTBcdThhNzFcdThhODVcdThhNmRcdThhNjJcdThhNmVcdThhNmNcdThhNzlcdThhN2JcdThhM2VcdThhNjhcdThjNjJcdThjOGFcdThjODlcdThjY2FcdThjYzdcdThjYzhcdThjYzRcdThjYjJcdThjYzNcdThjYzJcdThjYzVcdThkZTFcdThkZGZcdThkZThcdThkZWZcdThkZjNcdThk'@; put 'ZmFcdThkZWFcdThkZTRcdThkZTZcdThlYjJcdThmMDNcdThmMDlcdThlZmVcdThmMGEiXSxbImI5NDAiLCJcdThmOWZcdThmYjJcdTkwNGJcdTkwNGFcdTkwNTNcdTkwNDJcdTkwNTRcdTkwM2NcdTkwNTVcdTkwNTBcdTkwNDdcdTkwNGZcdTkwNGVcdTkwNGRcdTkwNTFcdTkwM2VcdTkwNDFc'@; put 'dTkxMTJcdTkxMTdcdTkxNmNcdTkxNmFcdTkxNjlcdTkxYzlcdTkyMzdcdTkyNTdcdTkyMzhcdTkyM2RcdTkyNDBcdTkyM2VcdTkyNWJcdTkyNGJcdTkyNjRcdTkyNTFcdTkyMzRcdTkyNDlcdTkyNGRcdTkyNDVcdTkyMzlcdTkyM2ZcdTkyNWFcdTk1OThcdTk2OThcdTk2OTRcdTk2OTVcdTk2'@; put 'Y2RcdTk2Y2JcdTk2YzlcdTk2Y2FcdTk2ZjdcdTk2ZmJcdTk2ZjlcdTk2ZjZcdTk3NTZcdTk3NzRcdTk3NzZcdTk4MTBcdTk4MTFcdTk4MTNcdTk4MGFcdTk4MTJcdTk4MGNcdTk4ZmNcdTk4ZjQiXSxbImI5YTEiLCJcdTk4ZmRcdTk4ZmVcdTk5YjNcdTk5YjFcdTk5YjRcdTlhZTFcdTljZTlc'@; put 'dTllODJcdTlmMGVcdTlmMTNcdTlmMjBcdTUwZTdcdTUwZWVcdTUwZTVcdTUwZDZcdTUwZWRcdTUwZGFcdTUwZDVcdTUwY2ZcdTUwZDFcdTUwZjFcdTUwY2VcdTUwZTlcdTUxNjJcdTUxZjNcdTUyODNcdTUyODJcdTUzMzFcdTUzYWRcdTU1ZmVcdTU2MDBcdTU2MWJcdTU2MTdcdTU1ZmRcdTU2'@; put 'MTRcdTU2MDZcdTU2MDlcdTU2MGRcdTU2MGVcdTU1ZjdcdTU2MTZcdTU2MWZcdTU2MDhcdTU2MTBcdTU1ZjZcdTU3MThcdTU3MTZcdTU4NzVcdTU4N2VcdTU4ODNcdTU4OTNcdTU4OGFcdTU4NzlcdTU4ODVcdTU4N2RcdTU4ZmRcdTU5MjVcdTU5MjJcdTU5MjRcdTU5NmFcdTU5NjlcdTVhZTFc'@; put 'dTVhZTZcdTVhZTlcdTVhZDdcdTVhZDZcdTVhZDhcdTVhZTNcdTViNzVcdTViZGVcdTViZTdcdTViZTFcdTViZTVcdTViZTZcdTViZThcdTViZTJcdTViZTRcdTViZGZcdTVjMGRcdTVjNjJcdTVkODRcdTVkODdcdTVlNWJcdTVlNjNcdTVlNTVcdTVlNTdcdTVlNTRcdTVlZDNcdTVlZDZcdTVm'@; put 'MGFcdTVmNDZcdTVmNzBcdTVmYjlcdTYxNDciXSxbImJhNDAiLCJcdTYxM2ZcdTYxNGJcdTYxNzdcdTYxNjJcdTYxNjNcdTYxNWZcdTYxNWFcdTYxNThcdTYxNzVcdTYyMmFcdTY0ODdcdTY0NThcdTY0NTRcdTY0YTRcdTY0NzhcdTY0NWZcdTY0N2FcdTY0NTFcdTY0NjdcdTY0MzRcdTY0NmRc'@; put 'dTY0N2JcdTY1NzJcdTY1YTFcdTY1ZDdcdTY1ZDZcdTY2YTJcdTY2YThcdTY2OWRcdTY5OWNcdTY5YThcdTY5OTVcdTY5YzFcdTY5YWVcdTY5ZDNcdTY5Y2JcdTY5OWJcdTY5YjdcdTY5YmJcdTY5YWJcdTY5YjRcdTY5ZDBcdTY5Y2RcdTY5YWRcdTY5Y2NcdTY5YTZcdTY5YzNcdTY5YTNcdTZi'@; put 'NDlcdTZiNGNcdTZjMzNcdTZmMzNcdTZmMTRcdTZlZmVcdTZmMTNcdTZlZjRcdTZmMjlcdTZmM2VcdTZmMjBcdTZmMmNcdTZmMGZcdTZmMDJcdTZmMjIiXSxbImJhYTEiLCJcdTZlZmZcdTZlZWZcdTZmMDZcdTZmMzFcdTZmMzhcdTZmMzJcdTZmMjNcdTZmMTVcdTZmMmJcdTZmMmZcdTZmODhc'@; put 'dTZmMmFcdTZlZWNcdTZmMDFcdTZlZjJcdTZlY2NcdTZlZjdcdTcxOTRcdTcxOTlcdTcxN2RcdTcxOGFcdTcxODRcdTcxOTJcdTcyM2VcdTcyOTJcdTcyOTZcdTczNDRcdTczNTBcdTc0NjRcdTc0NjNcdTc0NmFcdTc0NzBcdTc0NmRcdTc1MDRcdTc1OTFcdTc2MjdcdTc2MGRcdTc2MGJcdTc2'@; put 'MDlcdTc2MTNcdTc2ZTFcdTc2ZTNcdTc3ODRcdTc3N2RcdTc3N2ZcdTc3NjFcdTc4YzFcdTc4OWZcdTc4YTdcdTc4YjNcdTc4YTlcdTc4YTNcdTc5OGVcdTc5OGZcdTc5OGRcdTdhMmVcdTdhMzFcdTdhYWFcdTdhYTlcdTdhZWRcdTdhZWZcdTdiYTFcdTdiOTVcdTdiOGJcdTdiNzVcdTdiOTdc'@; put 'dTdiOWRcdTdiOTRcdTdiOGZcdTdiYjhcdTdiODdcdTdiODRcdTdjYjlcdTdjYmRcdTdjYmVcdTdkYmJcdTdkYjBcdTdkOWNcdTdkYmRcdTdkYmVcdTdkYTBcdTdkY2FcdTdkYjRcdTdkYjJcdTdkYjFcdTdkYmFcdTdkYTJcdTdkYmZcdTdkYjVcdTdkYjhcdTdkYWRcdTdkZDJcdTdkYzdcdTdk'@; put 'YWMiXSxbImJiNDAiLCJcdTdmNzBcdTdmZTBcdTdmZTFcdTdmZGZcdTgwNWVcdTgwNWFcdTgwODdcdTgxNTBcdTgxODBcdTgxOGZcdTgxODhcdTgxOGFcdTgxN2ZcdTgxODJcdTgxZTdcdTgxZmFcdTgyMDdcdTgyMTRcdTgyMWVcdTgyNGJcdTg0YzlcdTg0YmZcdTg0YzZcdTg0YzRcdTg0OTlc'@; put 'dTg0OWVcdTg0YjJcdTg0OWNcdTg0Y2JcdTg0YjhcdTg0YzBcdTg0ZDNcdTg0OTBcdTg0YmNcdTg0ZDFcdTg0Y2FcdTg3M2ZcdTg3MWNcdTg3M2JcdTg3MjJcdTg3MjVcdTg3MzRcdTg3MThcdTg3NTVcdTg3MzdcdTg3MjlcdTg4ZjNcdTg5MDJcdTg4ZjRcdTg4ZjlcdTg4ZjhcdTg4ZmRcdTg4'@; put 'ZThcdTg5MWFcdTg4ZWZcdThhYTZcdThhOGNcdThhOWVcdThhYTNcdThhOGRcdThhYTFcdThhOTNcdThhYTQiXSxbImJiYTEiLCJcdThhYWFcdThhYTVcdThhYThcdThhOThcdThhOTFcdThhOWFcdThhYTdcdThjNmFcdThjOGRcdThjOGNcdThjZDNcdThjZDFcdThjZDJcdThkNmJcdThkOTlc'@; put 'dThkOTVcdThkZmNcdThmMTRcdThmMTJcdThmMTVcdThmMTNcdThmYTNcdTkwNjBcdTkwNThcdTkwNWNcdTkwNjNcdTkwNTlcdTkwNWVcdTkwNjJcdTkwNWRcdTkwNWJcdTkxMTlcdTkxMThcdTkxMWVcdTkxNzVcdTkxNzhcdTkxNzdcdTkxNzRcdTkyNzhcdTkyODBcdTkyODVcdTkyOThcdTky'@; put 'OTZcdTkyN2JcdTkyOTNcdTkyOWNcdTkyYThcdTkyN2NcdTkyOTFcdTk1YTFcdTk1YThcdTk1YTlcdTk1YTNcdTk1YTVcdTk1YTRcdTk2OTlcdTk2OWNcdTk2OWJcdTk2Y2NcdTk2ZDJcdTk3MDBcdTk3N2NcdTk3ODVcdTk3ZjZcdTk4MTdcdTk4MThcdTk4YWZcdTk4YjFcdTk5MDNcdTk5MDVc'@; put 'dTk5MGNcdTk5MDlcdTk5YzFcdTlhYWZcdTlhYjBcdTlhZTZcdTliNDFcdTliNDJcdTljZjRcdTljZjZcdTljZjNcdTllYmNcdTlmM2JcdTlmNGFcdTUxMDRcdTUxMDBcdTUwZmJcdTUwZjVcdTUwZjlcdTUxMDJcdTUxMDhcdTUxMDlcdTUxMDVcdTUxZGMiXSxbImJjNDAiLCJcdTUyODdcdTUy'@; put 'ODhcdTUyODlcdTUyOGRcdTUyOGFcdTUyZjBcdTUzYjJcdTU2MmVcdTU2M2JcdTU2MzlcdTU2MzJcdTU2M2ZcdTU2MzRcdTU2MjlcdTU2NTNcdTU2NGVcdTU2NTdcdTU2NzRcdTU2MzZcdTU2MmZcdTU2MzBcdTU4ODBcdTU4OWZcdTU4OWVcdTU4YjNcdTU4OWNcdTU4YWVcdTU4YTlcdTU4YTZc'@; put 'dTU5NmRcdTViMDlcdTVhZmJcdTViMGJcdTVhZjVcdTViMGNcdTViMDhcdTViZWVcdTViZWNcdTViZTlcdTViZWJcdTVjNjRcdTVjNjVcdTVkOWRcdTVkOTRcdTVlNjJcdTVlNWZcdTVlNjFcdTVlZTJcdTVlZGFcdTVlZGZcdTVlZGRcdTVlZTNcdTVlZTBcdTVmNDhcdTVmNzFcdTVmYjdcdTVm'@; put 'YjVcdTYxNzZcdTYxNjdcdTYxNmVcdTYxNWRcdTYxNTVcdTYxODIiXSxbImJjYTEiLCJcdTYxN2NcdTYxNzBcdTYxNmJcdTYxN2VcdTYxYTdcdTYxOTBcdTYxYWJcdTYxOGVcdTYxYWNcdTYxOWFcdTYxYTRcdTYxOTRcdTYxYWVcdTYyMmVcdTY0NjlcdTY0NmZcdTY0NzlcdTY0OWVcdTY0YjJc'@; put 'dTY0ODhcdTY0OTBcdTY0YjBcdTY0YTVcdTY0OTNcdTY0OTVcdTY0YTlcdTY0OTJcdTY0YWVcdTY0YWRcdTY0YWJcdTY0OWFcdTY0YWNcdTY0OTlcdTY0YTJcdTY0YjNcdTY1NzVcdTY1NzdcdTY1NzhcdTY2YWVcdTY2YWJcdTY2YjRcdTY2YjFcdTZhMjNcdTZhMWZcdTY5ZThcdTZhMDFcdTZh'@; put 'MWVcdTZhMTlcdTY5ZmRcdTZhMjFcdTZhMTNcdTZhMGFcdTY5ZjNcdTZhMDJcdTZhMDVcdTY5ZWRcdTZhMTFcdTZiNTBcdTZiNGVcdTZiYTRcdTZiYzVcdTZiYzZcdTZmM2ZcdTZmN2NcdTZmODRcdTZmNTFcdTZmNjZcdTZmNTRcdTZmODZcdTZmNmRcdTZmNWJcdTZmNzhcdTZmNmVcdTZmOGVc'@; put 'dTZmN2FcdTZmNzBcdTZmNjRcdTZmOTdcdTZmNThcdTZlZDVcdTZmNmZcdTZmNjBcdTZmNWZcdTcxOWZcdTcxYWNcdTcxYjFcdTcxYThcdTcyNTZcdTcyOWJcdTczNGVcdTczNTdcdTc0NjlcdTc0OGJcdTc0ODMiXSxbImJkNDAiLCJcdTc0N2VcdTc0ODBcdTc1N2ZcdTc2MjBcdTc2MjlcdTc2'@; put 'MWZcdTc2MjRcdTc2MjZcdTc2MjFcdTc2MjJcdTc2OWFcdTc2YmFcdTc2ZTRcdTc3OGVcdTc3ODdcdTc3OGNcdTc3OTFcdTc3OGJcdTc4Y2JcdTc4YzVcdTc4YmFcdTc4Y2FcdTc4YmVcdTc4ZDVcdTc4YmNcdTc4ZDBcdTdhM2ZcdTdhM2NcdTdhNDBcdTdhM2RcdTdhMzdcdTdhM2JcdTdhYWZc'@; put 'dTdhYWVcdTdiYWRcdTdiYjFcdTdiYzRcdTdiYjRcdTdiYzZcdTdiYzdcdTdiYzFcdTdiYTBcdTdiY2NcdTdjY2FcdTdkZTBcdTdkZjRcdTdkZWZcdTdkZmJcdTdkZDhcdTdkZWNcdTdkZGRcdTdkZThcdTdkZTNcdTdkZGFcdTdkZGVcdTdkZTlcdTdkOWVcdTdkZDlcdTdkZjJcdTdkZjlcdTdm'@; put 'NzVcdTdmNzdcdTdmYWYiXSxbImJkYTEiLCJcdTdmZTlcdTgwMjZcdTgxOWJcdTgxOWNcdTgxOWRcdTgxYTBcdTgxOWFcdTgxOThcdTg1MTdcdTg1M2RcdTg1MWFcdTg0ZWVcdTg1MmNcdTg1MmRcdTg1MTNcdTg1MTFcdTg1MjNcdTg1MjFcdTg1MTRcdTg0ZWNcdTg1MjVcdTg0ZmZcdTg1MDZc'@; put 'dTg3ODJcdTg3NzRcdTg3NzZcdTg3NjBcdTg3NjZcdTg3NzhcdTg3NjhcdTg3NTlcdTg3NTdcdTg3NGNcdTg3NTNcdTg4NWJcdTg4NWRcdTg5MTBcdTg5MDdcdTg5MTJcdTg5MTNcdTg5MTVcdTg5MGFcdThhYmNcdThhZDJcdThhYzdcdThhYzRcdThhOTVcdThhY2JcdThhZjhcdThhYjJcdThh'@; put 'YzlcdThhYzJcdThhYmZcdThhYjBcdThhZDZcdThhY2RcdThhYjZcdThhYjlcdThhZGJcdThjNGNcdThjNGVcdThjNmNcdThjZTBcdThjZGVcdThjZTZcdThjZTRcdThjZWNcdThjZWRcdThjZTJcdThjZTNcdThjZGNcdThjZWFcdThjZTFcdThkNmRcdThkOWZcdThkYTNcdThlMmJcdThlMTBc'@; put 'dThlMWRcdThlMjJcdThlMGZcdThlMjlcdThlMWZcdThlMjFcdThlMWVcdThlYmFcdThmMWRcdThmMWJcdThmMWZcdThmMjlcdThmMjZcdThmMmFcdThmMWNcdThmMWUiXSxbImJlNDAiLCJcdThmMjVcdTkwNjlcdTkwNmVcdTkwNjhcdTkwNmRcdTkwNzdcdTkxMzBcdTkxMmRcdTkxMjdcdTkx'@; put 'MzFcdTkxODdcdTkxODlcdTkxOGJcdTkxODNcdTkyYzVcdTkyYmJcdTkyYjdcdTkyZWFcdTkyYWNcdTkyZTRcdTkyYzFcdTkyYjNcdTkyYmNcdTkyZDJcdTkyYzdcdTkyZjBcdTkyYjJcdTk1YWRcdTk1YjFcdTk3MDRcdTk3MDZcdTk3MDdcdTk3MDlcdTk3NjBcdTk3OGRcdTk3OGJcdTk3OGZc'@; put 'dTk4MjFcdTk4MmJcdTk4MWNcdTk4YjNcdTk5MGFcdTk5MTNcdTk5MTJcdTk5MThcdTk5ZGRcdTk5ZDBcdTk5ZGZcdTk5ZGJcdTk5ZDFcdTk5ZDVcdTk5ZDJcdTk5ZDlcdTlhYjdcdTlhZWVcdTlhZWZcdTliMjdcdTliNDVcdTliNDRcdTliNzdcdTliNmZcdTlkMDZcdTlkMDkiXSxbImJlYTEi'@; put 'LCJcdTlkMDNcdTllYTlcdTllYmVcdTllY2VcdTU4YThcdTlmNTJcdTUxMTJcdTUxMThcdTUxMTRcdTUxMTBcdTUxMTVcdTUxODBcdTUxYWFcdTUxZGRcdTUyOTFcdTUyOTNcdTUyZjNcdTU2NTlcdTU2NmJcdTU2NzlcdTU2NjlcdTU2NjRcdTU2NzhcdTU2NmFcdTU2NjhcdTU2NjVcdTU2NzFc'@; put 'dTU2NmZcdTU2NmNcdTU2NjJcdTU2NzZcdTU4YzFcdTU4YmVcdTU4YzdcdTU4YzVcdTU5NmVcdTViMWRcdTViMzRcdTViNzhcdTViZjBcdTVjMGVcdTVmNGFcdTYxYjJcdTYxOTFcdTYxYTlcdTYxOGFcdTYxY2RcdTYxYjZcdTYxYmVcdTYxY2FcdTYxYzhcdTYyMzBcdTY0YzVcdTY0YzFcdTY0'@; put 'Y2JcdTY0YmJcdTY0YmNcdTY0ZGFcdTY0YzRcdTY0YzdcdTY0YzJcdTY0Y2RcdTY0YmZcdTY0ZDJcdTY0ZDRcdTY0YmVcdTY1NzRcdTY2YzZcdTY2YzlcdTY2YjlcdTY2YzRcdTY2YzdcdTY2YjhcdTZhM2RcdTZhMzhcdTZhM2FcdTZhNTlcdTZhNmJcdTZhNThcdTZhMzlcdTZhNDRcdTZhNjJc'@; put 'dTZhNjFcdTZhNGJcdTZhNDdcdTZhMzVcdTZhNWZcdTZhNDhcdTZiNTlcdTZiNzdcdTZjMDVcdTZmYzJcdTZmYjFcdTZmYTEiXSxbImJmNDAiLCJcdTZmYzNcdTZmYTRcdTZmYzFcdTZmYTdcdTZmYjNcdTZmYzBcdTZmYjlcdTZmYjZcdTZmYTZcdTZmYTBcdTZmYjRcdTcxYmVcdTcxYzlcdTcx'@; put 'ZDBcdTcxZDJcdTcxYzhcdTcxZDVcdTcxYjlcdTcxY2VcdTcxZDlcdTcxZGNcdTcxYzNcdTcxYzRcdTczNjhcdTc0OWNcdTc0YTNcdTc0OThcdTc0OWZcdTc0OWVcdTc0ZTJcdTc1MGNcdTc1MGRcdTc2MzRcdTc2MzhcdTc2M2FcdTc2ZTdcdTc2ZTVcdTc3YTBcdTc3OWVcdTc3OWZcdTc3YTVc'@; put 'dTc4ZThcdTc4ZGFcdTc4ZWNcdTc4ZTdcdTc5YTZcdTdhNGRcdTdhNGVcdTdhNDZcdTdhNGNcdTdhNGJcdTdhYmFcdTdiZDlcdTdjMTFcdTdiYzlcdTdiZTRcdTdiZGJcdTdiZTFcdTdiZTlcdTdiZTZcdTdjZDVcdTdjZDZcdTdlMGEiXSxbImJmYTEiLCJcdTdlMTFcdTdlMDhcdTdlMWJcdTdl'@; put 'MjNcdTdlMWVcdTdlMWRcdTdlMDlcdTdlMTBcdTdmNzlcdTdmYjJcdTdmZjBcdTdmZjFcdTdmZWVcdTgwMjhcdTgxYjNcdTgxYTlcdTgxYThcdTgxZmJcdTgyMDhcdTgyNThcdTgyNTlcdTg1NGFcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjlcdTg1NDNcdTg1NDlcdTg1NmRcdTg1NmFcdTg1NWVc'@; put 'dTg3ODNcdTg3OWZcdTg3OWVcdTg3YTJcdTg3OGRcdTg4NjFcdTg5MmFcdTg5MzJcdTg5MjVcdTg5MmJcdTg5MjFcdTg5YWFcdTg5YTZcdThhZTZcdThhZmFcdThhZWJcdThhZjFcdThiMDBcdThhZGNcdThhZTdcdThhZWVcdThhZmVcdThiMDFcdThiMDJcdThhZjdcdThhZWRcdThhZjNcdThh'@; put 'ZjZcdThhZmNcdThjNmJcdThjNmRcdThjOTNcdThjZjRcdThlNDRcdThlMzFcdThlMzRcdThlNDJcdThlMzlcdThlMzVcdThmM2JcdThmMmZcdThmMzhcdThmMzNcdThmYThcdThmYTZcdTkwNzVcdTkwNzRcdTkwNzhcdTkwNzJcdTkwN2NcdTkwN2FcdTkxMzRcdTkxOTJcdTkzMjBcdTkzMzZc'@; put 'dTkyZjhcdTkzMzNcdTkzMmZcdTkzMjJcdTkyZmNcdTkzMmJcdTkzMDRcdTkzMWEiXSxbImMwNDAiLCJcdTkzMTBcdTkzMjZcdTkzMjFcdTkzMTVcdTkzMmVcdTkzMTlcdTk1YmJcdTk2YTdcdTk2YThcdTk2YWFcdTk2ZDVcdTk3MGVcdTk3MTFcdTk3MTZcdTk3MGRcdTk3MTNcdTk3MGZcdTk3'@; put 'NWJcdTk3NWNcdTk3NjZcdTk3OThcdTk4MzBcdTk4MzhcdTk4M2JcdTk4MzdcdTk4MmRcdTk4MzlcdTk4MjRcdTk5MTBcdTk5MjhcdTk5MWVcdTk5MWJcdTk5MjFcdTk5MWFcdTk5ZWRcdTk5ZTJcdTk5ZjFcdTlhYjhcdTlhYmNcdTlhZmJcdTlhZWRcdTliMjhcdTliOTFcdTlkMTVcdTlkMjNc'@; put 'dTlkMjZcdTlkMjhcdTlkMTJcdTlkMWJcdTllZDhcdTllZDRcdTlmOGRcdTlmOWNcdTUxMmFcdTUxMWZcdTUxMjFcdTUxMzJcdTUyZjVcdTU2OGVcdTU2ODBcdTU2OTBcdTU2ODVcdTU2ODciXSxbImMwYTEiLCJcdTU2OGZcdTU4ZDVcdTU4ZDNcdTU4ZDFcdTU4Y2VcdTViMzBcdTViMmFcdTVi'@; put 'MjRcdTViN2FcdTVjMzdcdTVjNjhcdTVkYmNcdTVkYmFcdTVkYmRcdTVkYjhcdTVlNmJcdTVmNGNcdTVmYmRcdTYxYzlcdTYxYzJcdTYxYzdcdTYxZTZcdTYxY2JcdTYyMzJcdTYyMzRcdTY0Y2VcdTY0Y2FcdTY0ZDhcdTY0ZTBcdTY0ZjBcdTY0ZTZcdTY0ZWNcdTY0ZjFcdTY0ZTJcdTY0ZWRc'@; put 'dTY1ODJcdTY1ODNcdTY2ZDlcdTY2ZDZcdTZhODBcdTZhOTRcdTZhODRcdTZhYTJcdTZhOWNcdTZhZGJcdTZhYTNcdTZhN2VcdTZhOTdcdTZhOTBcdTZhYTBcdTZiNWNcdTZiYWVcdTZiZGFcdTZjMDhcdTZmZDhcdTZmZjFcdTZmZGZcdTZmZTBcdTZmZGJcdTZmZTRcdTZmZWJcdTZmZWZcdTZm'@; put 'ODBcdTZmZWNcdTZmZTFcdTZmZTlcdTZmZDVcdTZmZWVcdTZmZjBcdTcxZTdcdTcxZGZcdTcxZWVcdTcxZTZcdTcxZTVcdTcxZWRcdTcxZWNcdTcxZjRcdTcxZTBcdTcyMzVcdTcyNDZcdTczNzBcdTczNzJcdTc0YTlcdTc0YjBcdTc0YTZcdTc0YThcdTc2NDZcdTc2NDJcdTc2NGNcdTc2ZWFc'@; put 'dTc3YjNcdTc3YWFcdTc3YjBcdTc3YWMiXSxbImMxNDAiLCJcdTc3YTdcdTc3YWRcdTc3ZWZcdTc4ZjdcdTc4ZmFcdTc4ZjRcdTc4ZWZcdTc5MDFcdTc5YTdcdTc5YWFcdTdhNTdcdTdhYmZcdTdjMDdcdTdjMGRcdTdiZmVcdTdiZjdcdTdjMGNcdTdiZTBcdTdjZTBcdTdjZGNcdTdjZGVcdTdj'@; put 'ZTJcdTdjZGZcdTdjZDlcdTdjZGRcdTdlMmVcdTdlM2VcdTdlNDZcdTdlMzdcdTdlMzJcdTdlNDNcdTdlMmJcdTdlM2RcdTdlMzFcdTdlNDVcdTdlNDFcdTdlMzRcdTdlMzlcdTdlNDhcdTdlMzVcdTdlM2ZcdTdlMmZcdTdmNDRcdTdmZjNcdTdmZmNcdTgwNzFcdTgwNzJcdTgwNzBcdTgwNmZc'@; put 'dTgwNzNcdTgxYzZcdTgxYzNcdTgxYmFcdTgxYzJcdTgxYzBcdTgxYmZcdTgxYmRcdTgxYzlcdTgxYmVcdTgxZThcdTgyMDlcdTgyNzFcdTg1YWEiXSxbImMxYTEiLCJcdTg1ODRcdTg1N2VcdTg1OWNcdTg1OTFcdTg1OTRcdTg1YWZcdTg1OWJcdTg1ODdcdTg1YThcdTg1OGFcdTg2NjdcdTg3'@; put 'YzBcdTg3ZDFcdTg3YjNcdTg3ZDJcdTg3YzZcdTg3YWJcdTg3YmJcdTg3YmFcdTg3YzhcdTg3Y2JcdTg5M2JcdTg5MzZcdTg5NDRcdTg5MzhcdTg5M2RcdTg5YWNcdThiMGVcdThiMTdcdThiMTlcdThiMWJcdThiMGFcdThiMjBcdThiMWRcdThiMDRcdThiMTBcdThjNDFcdThjM2ZcdThjNzNc'@; put 'dThjZmFcdThjZmRcdThjZmNcdThjZjhcdThjZmJcdThkYThcdThlNDlcdThlNGJcdThlNDhcdThlNGFcdThmNDRcdThmM2VcdThmNDJcdThmNDVcdThmM2ZcdTkwN2ZcdTkwN2RcdTkwODRcdTkwODFcdTkwODJcdTkwODBcdTkxMzlcdTkxYTNcdTkxOWVcdTkxOWNcdTkzNGRcdTkzODJcdTkz'@; put 'MjhcdTkzNzVcdTkzNGFcdTkzNjVcdTkzNGJcdTkzMThcdTkzN2VcdTkzNmNcdTkzNWJcdTkzNzBcdTkzNWFcdTkzNTRcdTk1Y2FcdTk1Y2JcdTk1Y2NcdTk1YzhcdTk1YzZcdTk2YjFcdTk2YjhcdTk2ZDZcdTk3MWNcdTk3MWVcdTk3YTBcdTk3ZDNcdTk4NDZcdTk4YjZcdTk5MzVcdTlhMDEi'@; put 'XSxbImMyNDAiLCJcdTk5ZmZcdTliYWVcdTliYWJcdTliYWFcdTliYWRcdTlkM2JcdTlkM2ZcdTllOGJcdTllY2ZcdTllZGVcdTllZGNcdTllZGRcdTllZGJcdTlmM2VcdTlmNGJcdTUzZTJcdTU2OTVcdTU2YWVcdTU4ZDlcdTU4ZDhcdTViMzhcdTVmNWRcdTYxZTNcdTYyMzNcdTY0ZjRcdTY0'@; put 'ZjJcdTY0ZmVcdTY1MDZcdTY0ZmFcdTY0ZmJcdTY0ZjdcdTY1YjdcdTY2ZGNcdTY3MjZcdTZhYjNcdTZhYWNcdTZhYzNcdTZhYmJcdTZhYjhcdTZhYzJcdTZhYWVcdTZhYWZcdTZiNWZcdTZiNzhcdTZiYWZcdTcwMDlcdTcwMGJcdTZmZmVcdTcwMDZcdTZmZmFcdTcwMTFcdTcwMGZcdTcxZmJc'@; put 'dTcxZmNcdTcxZmVcdTcxZjhcdTczNzdcdTczNzVcdTc0YTdcdTc0YmZcdTc1MTVcdTc2NTZcdTc2NTgiXSxbImMyYTEiLCJcdTc2NTJcdTc3YmRcdTc3YmZcdTc3YmJcdTc3YmNcdTc5MGVcdTc5YWVcdTdhNjFcdTdhNjJcdTdhNjBcdTdhYzRcdTdhYzVcdTdjMmJcdTdjMjdcdTdjMmFcdTdj'@; put 'MWVcdTdjMjNcdTdjMjFcdTdjZTdcdTdlNTRcdTdlNTVcdTdlNWVcdTdlNWFcdTdlNjFcdTdlNTJcdTdlNTlcdTdmNDhcdTdmZjlcdTdmZmJcdTgwNzdcdTgwNzZcdTgxY2RcdTgxY2ZcdTgyMGFcdTg1Y2ZcdTg1YTlcdTg1Y2RcdTg1ZDBcdTg1YzlcdTg1YjBcdTg1YmFcdTg1YjlcdTg1YTZc'@; put 'dTg3ZWZcdTg3ZWNcdTg3ZjJcdTg3ZTBcdTg5ODZcdTg5YjJcdTg5ZjRcdThiMjhcdThiMzlcdThiMmNcdThiMmJcdThjNTBcdThkMDVcdThlNTlcdThlNjNcdThlNjZcdThlNjRcdThlNWZcdThlNTVcdThlYzBcdThmNDlcdThmNGRcdTkwODdcdTkwODNcdTkwODhcdTkxYWJcdTkxYWNcdTkx'@; put 'ZDBcdTkzOTRcdTkzOGFcdTkzOTZcdTkzYTJcdTkzYjNcdTkzYWVcdTkzYWNcdTkzYjBcdTkzOThcdTkzOWFcdTkzOTdcdTk1ZDRcdTk1ZDZcdTk1ZDBcdTk1ZDVcdTk2ZTJcdTk2ZGNcdTk2ZDlcdTk2ZGJcdTk2ZGVcdTk3MjRcdTk3YTNcdTk3YTYiXSxbImMzNDAiLCJcdTk3YWRcdTk3Zjlc'@; put 'dTk4NGRcdTk4NGZcdTk4NGNcdTk4NGVcdTk4NTNcdTk4YmFcdTk5M2VcdTk5M2ZcdTk5M2RcdTk5MmVcdTk5YTVcdTlhMGVcdTlhYzFcdTliMDNcdTliMDZcdTliNGZcdTliNGVcdTliNGRcdTliY2FcdTliYzlcdTliZmRcdTliYzhcdTliYzBcdTlkNTFcdTlkNWRcdTlkNjBcdTllZTBcdTlm'@; put 'MTVcdTlmMmNcdTUxMzNcdTU2YTVcdTU4ZGVcdTU4ZGZcdTU4ZTJcdTViZjVcdTlmOTBcdTVlZWNcdTYxZjJcdTYxZjdcdTYxZjZcdTYxZjVcdTY1MDBcdTY1MGZcdTY2ZTBcdTY2ZGRcdTZhZTVcdTZhZGRcdTZhZGFcdTZhZDNcdTcwMWJcdTcwMWZcdTcwMjhcdTcwMWFcdTcwMWRcdTcwMTVc'@; put 'dTcwMThcdTcyMDZcdTcyMGRcdTcyNThcdTcyYTJcdTczNzgiXSxbImMzYTEiLCJcdTczN2FcdTc0YmRcdTc0Y2FcdTc0ZTNcdTc1ODdcdTc1ODZcdTc2NWZcdTc2NjFcdTc3YzdcdTc5MTlcdTc5YjFcdTdhNmJcdTdhNjlcdTdjM2VcdTdjM2ZcdTdjMzhcdTdjM2RcdTdjMzdcdTdjNDBcdTdl'@; put 'NmJcdTdlNmRcdTdlNzlcdTdlNjlcdTdlNmFcdTdmODVcdTdlNzNcdTdmYjZcdTdmYjlcdTdmYjhcdTgxZDhcdTg1ZTlcdTg1ZGRcdTg1ZWFcdTg1ZDVcdTg1ZTRcdTg1ZTVcdTg1ZjdcdTg3ZmJcdTg4MDVcdTg4MGRcdTg3ZjlcdTg3ZmVcdTg5NjBcdTg5NWZcdTg5NTZcdTg5NWVcdThiNDFc'@; put 'dThiNWNcdThiNThcdThiNDlcdThiNWFcdThiNGVcdThiNGZcdThiNDZcdThiNTlcdThkMDhcdThkMGFcdThlN2NcdThlNzJcdThlODdcdThlNzZcdThlNmNcdThlN2FcdThlNzRcdThmNTRcdThmNGVcdThmYWRcdTkwOGFcdTkwOGJcdTkxYjFcdTkxYWVcdTkzZTFcdTkzZDFcdTkzZGZcdTkz'@; put 'YzNcdTkzYzhcdTkzZGNcdTkzZGRcdTkzZDZcdTkzZTJcdTkzY2RcdTkzZDhcdTkzZTRcdTkzZDdcdTkzZThcdTk1ZGNcdTk2YjRcdTk2ZTNcdTk3MmFcdTk3MjdcdTk3NjFcdTk3ZGNcdTk3ZmJcdTk4NWUiXSxbImM0NDAiLCJcdTk4NThcdTk4NWJcdTk4YmNcdTk5NDVcdTk5NDlcdTlhMTZc'@; put 'dTlhMTlcdTliMGRcdTliZThcdTliZTdcdTliZDZcdTliZGJcdTlkODlcdTlkNjFcdTlkNzJcdTlkNmFcdTlkNmNcdTllOTJcdTllOTdcdTllOTNcdTllYjRcdTUyZjhcdTU2YThcdTU2YjdcdTU2YjZcdTU2YjRcdTU2YmNcdTU4ZTRcdTViNDBcdTViNDNcdTViN2RcdTViZjZcdTVkYzlcdTYx'@; put 'ZjhcdTYxZmFcdTY1MThcdTY1MTRcdTY1MTlcdTY2ZTZcdTY3MjdcdTZhZWNcdTcwM2VcdTcwMzBcdTcwMzJcdTcyMTBcdTczN2JcdTc0Y2ZcdTc2NjJcdTc2NjVcdTc5MjZcdTc5MmFcdTc5MmNcdTc5MmJcdTdhYzdcdTdhZjZcdTdjNGNcdTdjNDNcdTdjNGRcdTdjZWZcdTdjZjBcdThmYWVc'@; put 'dTdlN2RcdTdlN2MiXSxbImM0YTEiLCJcdTdlODJcdTdmNGNcdTgwMDBcdTgxZGFcdTgyNjZcdTg1ZmJcdTg1ZjlcdTg2MTFcdTg1ZmFcdTg2MDZcdTg2MGJcdTg2MDdcdTg2MGFcdTg4MTRcdTg4MTVcdTg5NjRcdTg5YmFcdTg5ZjhcdThiNzBcdThiNmNcdThiNjZcdThiNmZcdThiNWZcdThi'@; put 'NmJcdThkMGZcdThkMGRcdThlODlcdThlODFcdThlODVcdThlODJcdTkxYjRcdTkxY2JcdTk0MThcdTk0MDNcdTkzZmRcdTk1ZTFcdTk3MzBcdTk4YzRcdTk5NTJcdTk5NTFcdTk5YThcdTlhMmJcdTlhMzBcdTlhMzdcdTlhMzVcdTljMTNcdTljMGRcdTllNzlcdTllYjVcdTllZThcdTlmMmZc'@; put 'dTlmNWZcdTlmNjNcdTlmNjFcdTUxMzdcdTUxMzhcdTU2YzFcdTU2YzBcdTU2YzJcdTU5MTRcdTVjNmNcdTVkY2RcdTYxZmNcdTYxZmVcdTY1MWRcdTY1MWNcdTY1OTVcdTY2ZTlcdTZhZmJcdTZiMDRcdTZhZmFcdTZiYjJcdTcwNGNcdTcyMWJcdTcyYTdcdTc0ZDZcdTc0ZDRcdTc2NjlcdTc3'@; put 'ZDNcdTdjNTBcdTdlOGZcdTdlOGNcdTdmYmNcdTg2MTdcdTg2MmRcdTg2MWFcdTg4MjNcdTg4MjJcdTg4MjFcdTg4MWZcdTg5NmFcdTg5NmNcdTg5YmRcdThiNzQiXSxbImM1NDAiLCJcdThiNzdcdThiN2RcdThkMTNcdThlOGFcdThlOGRcdThlOGJcdThmNWZcdThmYWZcdTkxYmFcdTk0MmVc'@; put 'dTk0MzNcdTk0MzVcdTk0M2FcdTk0MzhcdTk0MzJcdTk0MmJcdTk1ZTJcdTk3MzhcdTk3MzlcdTk3MzJcdTk3ZmZcdTk4NjdcdTk4NjVcdTk5NTdcdTlhNDVcdTlhNDNcdTlhNDBcdTlhM2VcdTlhY2ZcdTliNTRcdTliNTFcdTljMmRcdTljMjVcdTlkYWZcdTlkYjRcdTlkYzJcdTlkYjhcdTll'@; put 'OWRcdTllZWZcdTlmMTlcdTlmNWNcdTlmNjZcdTlmNjdcdTUxM2NcdTUxM2JcdTU2YzhcdTU2Y2FcdTU2YzlcdTViN2ZcdTVkZDRcdTVkZDJcdTVmNGVcdTYxZmZcdTY1MjRcdTZiMGFcdTZiNjFcdTcwNTFcdTcwNThcdTczODBcdTc0ZTRcdTc1OGFcdTc2NmVcdTc2NmMiXSxbImM1YTEiLCJc'@; put 'dTc5YjNcdTdjNjBcdTdjNWZcdTgwN2VcdTgwN2RcdTgxZGZcdTg5NzJcdTg5NmZcdTg5ZmNcdThiODBcdThkMTZcdThkMTdcdThlOTFcdThlOTNcdThmNjFcdTkxNDhcdTk0NDRcdTk0NTFcdTk0NTJcdTk3M2RcdTk3M2VcdTk3YzNcdTk3YzFcdTk4NmJcdTk5NTVcdTlhNTVcdTlhNGRcdTlh'@; put 'ZDJcdTliMWFcdTljNDlcdTljMzFcdTljM2VcdTljM2JcdTlkZDNcdTlkZDdcdTlmMzRcdTlmNmNcdTlmNmFcdTlmOTRcdTU2Y2NcdTVkZDZcdTYyMDBcdTY1MjNcdTY1MmJcdTY1MmFcdTY2ZWNcdTZiMTBcdTc0ZGFcdTdhY2FcdTdjNjRcdTdjNjNcdTdjNjVcdTdlOTNcdTdlOTZcdTdlOTRc'@; put 'dTgxZTJcdTg2MzhcdTg2M2ZcdTg4MzFcdThiOGFcdTkwOTBcdTkwOGZcdTk0NjNcdTk0NjBcdTk0NjRcdTk3NjhcdTk4NmZcdTk5NWNcdTlhNWFcdTlhNWJcdTlhNTdcdTlhZDNcdTlhZDRcdTlhZDFcdTljNTRcdTljNTdcdTljNTZcdTlkZTVcdTllOWZcdTllZjRcdTU2ZDFcdTU4ZTlcdTY1'@; put 'MmNcdTcwNWVcdTc2NzFcdTc2NzJcdTc3ZDdcdTdmNTBcdTdmODhcdTg4MzZcdTg4MzlcdTg4NjJcdThiOTNcdThiOTIiXSxbImM2NDAiLCJcdThiOTZcdTgyNzdcdThkMWJcdTkxYzBcdTk0NmFcdTk3NDJcdTk3NDhcdTk3NDRcdTk3YzZcdTk4NzBcdTlhNWZcdTliMjJcdTliNThcdTljNWZc'@; put 'dTlkZjlcdTlkZmFcdTllN2NcdTllN2RcdTlmMDdcdTlmNzdcdTlmNzJcdTVlZjNcdTZiMTZcdTcwNjNcdTdjNmNcdTdjNmVcdTg4M2JcdTg5YzBcdThlYTFcdTkxYzFcdTk0NzJcdTk0NzBcdTk4NzFcdTk5NWVcdTlhZDZcdTliMjNcdTllY2NcdTcwNjRcdTc3ZGFcdThiOWFcdTk0NzdcdTk3'@; put 'YzlcdTlhNjJcdTlhNjVcdTdlOWNcdThiOWNcdThlYWFcdTkxYzVcdTk0N2RcdTk0N2VcdTk0N2NcdTljNzdcdTljNzhcdTllZjdcdThjNTRcdTk0N2ZcdTllMWFcdTcyMjhcdTlhNmFcdTliMzFcdTllMWJcdTllMWVcdTdjNzIiXSxbImM5NDAiLCJcdTRlNDJcdTRlNWNcdTUxZjVcdTUzMWFc'@; put 'dTUzODJcdTRlMDdcdTRlMGNcdTRlNDdcdTRlOGRcdTU2ZDdcdWZhMGNcdTVjNmVcdTVmNzNcdTRlMGZcdTUxODdcdTRlMGVcdTRlMmVcdTRlOTNcdTRlYzJcdTRlYzlcdTRlYzhcdTUxOThcdTUyZmNcdTUzNmNcdTUzYjlcdTU3MjBcdTU5MDNcdTU5MmNcdTVjMTBcdTVkZmZcdTY1ZTFcdTZi'@; put 'YjNcdTZiY2NcdTZjMTRcdTcyM2ZcdTRlMzFcdTRlM2NcdTRlZThcdTRlZGNcdTRlZTlcdTRlZTFcdTRlZGRcdTRlZGFcdTUyMGNcdTUzMWNcdTUzNGNcdTU3MjJcdTU3MjNcdTU5MTdcdTU5MmZcdTViODFcdTViODRcdTVjMTJcdTVjM2JcdTVjNzRcdTVjNzNcdTVlMDRcdTVlODBcdTVlODJc'@; put 'dTVmYzlcdTYyMDlcdTYyNTBcdTZjMTUiXSxbImM5YTEiLCJcdTZjMzZcdTZjNDNcdTZjM2ZcdTZjM2JcdTcyYWVcdTcyYjBcdTczOGFcdTc5YjhcdTgwOGFcdTk2MWVcdTRmMGVcdTRmMThcdTRmMmNcdTRlZjVcdTRmMTRcdTRlZjFcdTRmMDBcdTRlZjdcdTRmMDhcdTRmMWRcdTRmMDJcdTRm'@; put 'MDVcdTRmMjJcdTRmMTNcdTRmMDRcdTRlZjRcdTRmMTJcdTUxYjFcdTUyMTNcdTUyMDlcdTUyMTBcdTUyYTZcdTUzMjJcdTUzMWZcdTUzNGRcdTUzOGFcdTU0MDdcdTU2ZTFcdTU2ZGZcdTU3MmVcdTU3MmFcdTU3MzRcdTU5M2NcdTU5ODBcdTU5N2NcdTU5ODVcdTU5N2JcdTU5N2VcdTU5Nzdc'@; put 'dTU5N2ZcdTViNTZcdTVjMTVcdTVjMjVcdTVjN2NcdTVjN2FcdTVjN2JcdTVjN2VcdTVkZGZcdTVlNzVcdTVlODRcdTVmMDJcdTVmMWFcdTVmNzRcdTVmZDVcdTVmZDRcdTVmY2ZcdTYyNWNcdTYyNWVcdTYyNjRcdTYyNjFcdTYyNjZcdTYyNjJcdTYyNTlcdTYyNjBcdTYyNWFcdTYyNjVcdTY1'@; put 'ZWZcdTY1ZWVcdTY3M2VcdTY3MzlcdTY3MzhcdTY3M2JcdTY3M2FcdTY3M2ZcdTY3M2NcdTY3MzNcdTZjMThcdTZjNDZcdTZjNTJcdTZjNWNcdTZjNGZcdTZjNGFcdTZjNTRcdTZjNGIiXSxbImNhNDAiLCJcdTZjNGNcdTcwNzFcdTcyNWVcdTcyYjRcdTcyYjVcdTczOGVcdTc1MmFcdTc2N2Zc'@; put 'dTdhNzVcdTdmNTFcdTgyNzhcdTgyN2NcdTgyODBcdTgyN2RcdTgyN2ZcdTg2NGRcdTg5N2VcdTkwOTlcdTkwOTdcdTkwOThcdTkwOWJcdTkwOTRcdTk2MjJcdTk2MjRcdTk2MjBcdTk2MjNcdTRmNTZcdTRmM2JcdTRmNjJcdTRmNDlcdTRmNTNcdTRmNjRcdTRmM2VcdTRmNjdcdTRmNTJcdTRm'@; put 'NWZcdTRmNDFcdTRmNThcdTRmMmRcdTRmMzNcdTRmM2ZcdTRmNjFcdTUxOGZcdTUxYjlcdTUyMWNcdTUyMWVcdTUyMjFcdTUyYWRcdTUyYWVcdTUzMDlcdTUzNjNcdTUzNzJcdTUzOGVcdTUzOGZcdTU0MzBcdTU0MzdcdTU0MmFcdTU0NTRcdTU0NDVcdTU0MTlcdTU0MWNcdTU0MjVcdTU0MTgi'@; put 'XSxbImNhYTEiLCJcdTU0M2RcdTU0NGZcdTU0NDFcdTU0MjhcdTU0MjRcdTU0NDdcdTU2ZWVcdTU2ZTdcdTU2ZTVcdTU3NDFcdTU3NDVcdTU3NGNcdTU3NDlcdTU3NGJcdTU3NTJcdTU5MDZcdTU5NDBcdTU5YTZcdTU5OThcdTU5YTBcdTU5OTdcdTU5OGVcdTU5YTJcdTU5OTBcdTU5OGZcdTU5'@; put 'YTdcdTU5YTFcdTViOGVcdTViOTJcdTVjMjhcdTVjMmFcdTVjOGRcdTVjOGZcdTVjODhcdTVjOGJcdTVjODlcdTVjOTJcdTVjOGFcdTVjODZcdTVjOTNcdTVjOTVcdTVkZTBcdTVlMGFcdTVlMGVcdTVlOGJcdTVlODlcdTVlOGNcdTVlODhcdTVlOGRcdTVmMDVcdTVmMWRcdTVmNzhcdTVmNzZc'@; put 'dTVmZDJcdTVmZDFcdTVmZDBcdTVmZWRcdTVmZThcdTVmZWVcdTVmZjNcdTVmZTFcdTVmZTRcdTVmZTNcdTVmZmFcdTVmZWZcdTVmZjdcdTVmZmJcdTYwMDBcdTVmZjRcdTYyM2FcdTYyODNcdTYyOGNcdTYyOGVcdTYyOGZcdTYyOTRcdTYyODdcdTYyNzFcdTYyN2JcdTYyN2FcdTYyNzBcdTYy'@; put 'ODFcdTYyODhcdTYyNzdcdTYyN2RcdTYyNzJcdTYyNzRcdTY1MzdcdTY1ZjBcdTY1ZjRcdTY1ZjNcdTY1ZjJcdTY1ZjVcdTY3NDVcdTY3NDciXSxbImNiNDAiLCJcdTY3NTlcdTY3NTVcdTY3NGNcdTY3NDhcdTY3NWRcdTY3NGRcdTY3NWFcdTY3NGJcdTZiZDBcdTZjMTlcdTZjMWFcdTZjNzhc'@; put 'dTZjNjdcdTZjNmJcdTZjODRcdTZjOGJcdTZjOGZcdTZjNzFcdTZjNmZcdTZjNjlcdTZjOWFcdTZjNmRcdTZjODdcdTZjOTVcdTZjOWNcdTZjNjZcdTZjNzNcdTZjNjVcdTZjN2JcdTZjOGVcdTcwNzRcdTcwN2FcdTcyNjNcdTcyYmZcdTcyYmRcdTcyYzNcdTcyYzZcdTcyYzFcdTcyYmFcdTcy'@; put 'YzVcdTczOTVcdTczOTdcdTczOTNcdTczOTRcdTczOTJcdTc1M2FcdTc1MzlcdTc1OTRcdTc1OTVcdTc2ODFcdTc5M2RcdTgwMzRcdTgwOTVcdTgwOTlcdTgwOTBcdTgwOTJcdTgwOWNcdTgyOTBcdTgyOGZcdTgyODVcdTgyOGVcdTgyOTFcdTgyOTMiXSxbImNiYTEiLCJcdTgyOGFcdTgyODNc'@; put 'dTgyODRcdThjNzhcdThmYzlcdThmYmZcdTkwOWZcdTkwYTFcdTkwYTVcdTkwOWVcdTkwYTdcdTkwYTBcdTk2MzBcdTk2MjhcdTk2MmZcdTk2MmRcdTRlMzNcdTRmOThcdTRmN2NcdTRmODVcdTRmN2RcdTRmODBcdTRmODdcdTRmNzZcdTRmNzRcdTRmODlcdTRmODRcdTRmNzdcdTRmNGNcdTRm'@; put 'OTdcdTRmNmFcdTRmOWFcdTRmNzlcdTRmODFcdTRmNzhcdTRmOTBcdTRmOWNcdTRmOTRcdTRmOWVcdTRmOTJcdTRmODJcdTRmOTVcdTRmNmJcdTRmNmVcdTUxOWVcdTUxYmNcdTUxYmVcdTUyMzVcdTUyMzJcdTUyMzNcdTUyNDZcdTUyMzFcdTUyYmNcdTUzMGFcdTUzMGJcdTUzM2NcdTUzOTJc'@; put 'dTUzOTRcdTU0ODdcdTU0N2ZcdTU0ODFcdTU0OTFcdTU0ODJcdTU0ODhcdTU0NmJcdTU0N2FcdTU0N2VcdTU0NjVcdTU0NmNcdTU0NzRcdTU0NjZcdTU0OGRcdTU0NmZcdTU0NjFcdTU0NjBcdTU0OThcdTU0NjNcdTU0NjdcdTU0NjRcdTU2ZjdcdTU2ZjlcdTU3NmZcdTU3NzJcdTU3NmRcdTU3'@; put 'NmJcdTU3NzFcdTU3NzBcdTU3NzZcdTU3ODBcdTU3NzVcdTU3N2JcdTU3NzNcdTU3NzRcdTU3NjIiXSxbImNjNDAiLCJcdTU3NjhcdTU3N2RcdTU5MGNcdTU5NDVcdTU5YjVcdTU5YmFcdTU5Y2ZcdTU5Y2VcdTU5YjJcdTU5Y2NcdTU5YzFcdTU5YjZcdTU5YmNcdTU5YzNcdTU5ZDZcdTU5YjFc'@; put 'dTU5YmRcdTU5YzBcdTU5YzhcdTU5YjRcdTU5YzdcdTViNjJcdTViNjVcdTViOTNcdTViOTVcdTVjNDRcdTVjNDdcdTVjYWVcdTVjYTRcdTVjYTBcdTVjYjVcdTVjYWZcdTVjYThcdTVjYWNcdTVjOWZcdTVjYTNcdTVjYWRcdTVjYTJcdTVjYWFcdTVjYTdcdTVjOWRcdTVjYTVcdTVjYjZcdTVj'@; put 'YjBcdTVjYTZcdTVlMTdcdTVlMTRcdTVlMTlcdTVmMjhcdTVmMjJcdTVmMjNcdTVmMjRcdTVmNTRcdTVmODJcdTVmN2VcdTVmN2RcdTVmZGVcdTVmZTVcdTYwMmRcdTYwMjZcdTYwMTlcdTYwMzJcdTYwMGIiXSxbImNjYTEiLCJcdTYwMzRcdTYwMGFcdTYwMTdcdTYwMzNcdTYwMWFcdTYwMWVc'@; put 'dTYwMmNcdTYwMjJcdTYwMGRcdTYwMTBcdTYwMmVcdTYwMTNcdTYwMTFcdTYwMGNcdTYwMDlcdTYwMWNcdTYyMTRcdTYyM2RcdTYyYWRcdTYyYjRcdTYyZDFcdTYyYmVcdTYyYWFcdTYyYjZcdTYyY2FcdTYyYWVcdTYyYjNcdTYyYWZcdTYyYmJcdTYyYTlcdTYyYjBcdTYyYjhcdTY1M2RcdTY1'@; put 'YThcdTY1YmJcdTY2MDlcdTY1ZmNcdTY2MDRcdTY2MTJcdTY2MDhcdTY1ZmJcdTY2MDNcdTY2MGJcdTY2MGRcdTY2MDVcdTY1ZmRcdTY2MTFcdTY2MTBcdTY2ZjZcdTY3MGFcdTY3ODVcdTY3NmNcdTY3OGVcdTY3OTJcdTY3NzZcdTY3N2JcdTY3OThcdTY3ODZcdTY3ODRcdTY3NzRcdTY3OGRc'@; put 'dTY3OGNcdTY3N2FcdTY3OWZcdTY3OTFcdTY3OTlcdTY3ODNcdTY3N2RcdTY3ODFcdTY3NzhcdTY3NzlcdTY3OTRcdTZiMjVcdTZiODBcdTZiN2VcdTZiZGVcdTZjMWRcdTZjOTNcdTZjZWNcdTZjZWJcdTZjZWVcdTZjZDlcdTZjYjZcdTZjZDRcdTZjYWRcdTZjZTdcdTZjYjdcdTZjZDBcdTZj'@; put 'YzJcdTZjYmFcdTZjYzNcdTZjYzZcdTZjZWRcdTZjZjIiXSxbImNkNDAiLCJcdTZjZDJcdTZjZGRcdTZjYjRcdTZjOGFcdTZjOWRcdTZjODBcdTZjZGVcdTZjYzBcdTZkMzBcdTZjY2RcdTZjYzdcdTZjYjBcdTZjZjlcdTZjY2ZcdTZjZTlcdTZjZDFcdTcwOTRcdTcwOThcdTcwODVcdTcwOTNc'@; put 'dTcwODZcdTcwODRcdTcwOTFcdTcwOTZcdTcwODJcdTcwOWFcdTcwODNcdTcyNmFcdTcyZDZcdTcyY2JcdTcyZDhcdTcyYzlcdTcyZGNcdTcyZDJcdTcyZDRcdTcyZGFcdTcyY2NcdTcyZDFcdTczYTRcdTczYTFcdTczYWRcdTczYTZcdTczYTJcdTczYTBcdTczYWNcdTczOWRcdTc0ZGRcdTc0'@; put 'ZThcdTc1M2ZcdTc1NDBcdTc1M2VcdTc1OGNcdTc1OThcdTc2YWZcdTc2ZjNcdTc2ZjFcdTc2ZjBcdTc2ZjVcdTc3ZjhcdTc3ZmNcdTc3ZjlcdTc3ZmJcdTc3ZmEiXSxbImNkYTEiLCJcdTc3ZjdcdTc5NDJcdTc5M2ZcdTc5YzVcdTdhNzhcdTdhN2JcdTdhZmJcdTdjNzVcdTdjZmRcdTgwMzVc'@; put 'dTgwOGZcdTgwYWVcdTgwYTNcdTgwYjhcdTgwYjVcdTgwYWRcdTgyMjBcdTgyYTBcdTgyYzBcdTgyYWJcdTgyOWFcdTgyOThcdTgyOWJcdTgyYjVcdTgyYTdcdTgyYWVcdTgyYmNcdTgyOWVcdTgyYmFcdTgyYjRcdTgyYThcdTgyYTFcdTgyYTlcdTgyYzJcdTgyYTRcdTgyYzNcdTgyYjZcdTgy'@; put 'YTJcdTg2NzBcdTg2NmZcdTg2NmRcdTg2NmVcdThjNTZcdThmZDJcdThmY2JcdThmZDNcdThmY2RcdThmZDZcdThmZDVcdThmZDdcdTkwYjJcdTkwYjRcdTkwYWZcdTkwYjNcdTkwYjBcdTk2MzlcdTk2M2RcdTk2M2NcdTk2M2FcdTk2NDNcdTRmY2RcdTRmYzVcdTRmZDNcdTRmYjJcdTRmYzlc'@; put 'dTRmY2JcdTRmYzFcdTRmZDRcdTRmZGNcdTRmZDlcdTRmYmJcdTRmYjNcdTRmZGJcdTRmYzdcdTRmZDZcdTRmYmFcdTRmYzBcdTRmYjlcdTRmZWNcdTUyNDRcdTUyNDlcdTUyYzBcdTUyYzJcdTUzM2RcdTUzN2NcdTUzOTdcdTUzOTZcdTUzOTlcdTUzOThcdTU0YmFcdTU0YTFcdTU0YWRcdTU0'@; put 'YTVcdTU0Y2YiXSxbImNlNDAiLCJcdTU0YzNcdTgzMGRcdTU0YjdcdTU0YWVcdTU0ZDZcdTU0YjZcdTU0YzVcdTU0YzZcdTU0YTBcdTU0NzBcdTU0YmNcdTU0YTJcdTU0YmVcdTU0NzJcdTU0ZGVcdTU0YjBcdTU3YjVcdTU3OWVcdTU3OWZcdTU3YTRcdTU3OGNcdTU3OTdcdTU3OWRcdTU3OWJc'@; put 'dTU3OTRcdTU3OThcdTU3OGZcdTU3OTlcdTU3YTVcdTU3OWFcdTU3OTVcdTU4ZjRcdTU5MGRcdTU5NTNcdTU5ZTFcdTU5ZGVcdTU5ZWVcdTVhMDBcdTU5ZjFcdTU5ZGRcdTU5ZmFcdTU5ZmRcdTU5ZmNcdTU5ZjZcdTU5ZTRcdTU5ZjJcdTU5ZjdcdTU5ZGJcdTU5ZTlcdTU5ZjNcdTU5ZjVcdTU5'@; put 'ZTBcdTU5ZmVcdTU5ZjRcdTU5ZWRcdTViYThcdTVjNGNcdTVjZDBcdTVjZDhcdTVjY2NcdTVjZDdcdTVjY2JcdTVjZGIiXSxbImNlYTEiLCJcdTVjZGVcdTVjZGFcdTVjYzlcdTVjYzdcdTVjY2FcdTVjZDZcdTVjZDNcdTVjZDRcdTVjY2ZcdTVjYzhcdTVjYzZcdTVjY2VcdTVjZGZcdTVjZjhc'@; put 'dTVkZjlcdTVlMjFcdTVlMjJcdTVlMjNcdTVlMjBcdTVlMjRcdTVlYjBcdTVlYTRcdTVlYTJcdTVlOWJcdTVlYTNcdTVlYTVcdTVmMDdcdTVmMmVcdTVmNTZcdTVmODZcdTYwMzdcdTYwMzlcdTYwNTRcdTYwNzJcdTYwNWVcdTYwNDVcdTYwNTNcdTYwNDdcdTYwNDlcdTYwNWJcdTYwNGNcdTYw'@; put 'NDBcdTYwNDJcdTYwNWZcdTYwMjRcdTYwNDRcdTYwNThcdTYwNjZcdTYwNmVcdTYyNDJcdTYyNDNcdTYyY2ZcdTYzMGRcdTYzMGJcdTYyZjVcdTYzMGVcdTYzMDNcdTYyZWJcdTYyZjlcdTYzMGZcdTYzMGNcdTYyZjhcdTYyZjZcdTYzMDBcdTYzMTNcdTYzMTRcdTYyZmFcdTYzMTVcdTYyZmJc'@; put 'dTYyZjBcdTY1NDFcdTY1NDNcdTY1YWFcdTY1YmZcdTY2MzZcdTY2MjFcdTY2MzJcdTY2MzVcdTY2MWNcdTY2MjZcdTY2MjJcdTY2MzNcdTY2MmJcdTY2M2FcdTY2MWRcdTY2MzRcdTY2MzlcdTY2MmVcdTY3MGZcdTY3MTBcdTY3YzFcdTY3ZjJcdTY3YzhcdTY3YmEiXSxbImNmNDAiLCJcdTY3'@; put 'ZGNcdTY3YmJcdTY3ZjhcdTY3ZDhcdTY3YzBcdTY3YjdcdTY3YzVcdTY3ZWJcdTY3ZTRcdTY3ZGZcdTY3YjVcdTY3Y2RcdTY3YjNcdTY3ZjdcdTY3ZjZcdTY3ZWVcdTY3ZTNcdTY3YzJcdTY3YjlcdTY3Y2VcdTY3ZTdcdTY3ZjBcdTY3YjJcdTY3ZmNcdTY3YzZcdTY3ZWRcdTY3Y2NcdTY3YWVc'@; put 'dTY3ZTZcdTY3ZGJcdTY3ZmFcdTY3YzlcdTY3Y2FcdTY3YzNcdTY3ZWFcdTY3Y2JcdTZiMjhcdTZiODJcdTZiODRcdTZiYjZcdTZiZDZcdTZiZDhcdTZiZTBcdTZjMjBcdTZjMjFcdTZkMjhcdTZkMzRcdTZkMmRcdTZkMWZcdTZkM2NcdTZkM2ZcdTZkMTJcdTZkMGFcdTZjZGFcdTZkMzNcdTZk'@; put 'MDRcdTZkMTlcdTZkM2FcdTZkMWFcdTZkMTFcdTZkMDBcdTZkMWRcdTZkNDIiXSxbImNmYTEiLCJcdTZkMDFcdTZkMThcdTZkMzdcdTZkMDNcdTZkMGZcdTZkNDBcdTZkMDdcdTZkMjBcdTZkMmNcdTZkMDhcdTZkMjJcdTZkMDlcdTZkMTBcdTcwYjdcdTcwOWZcdTcwYmVcdTcwYjFcdTcwYjBc'@; put 'dTcwYTFcdTcwYjRcdTcwYjVcdTcwYTlcdTcyNDFcdTcyNDlcdTcyNGFcdTcyNmNcdTcyNzBcdTcyNzNcdTcyNmVcdTcyY2FcdTcyZTRcdTcyZThcdTcyZWJcdTcyZGZcdTcyZWFcdTcyZTZcdTcyZTNcdTczODVcdTczY2NcdTczYzJcdTczYzhcdTczYzVcdTczYjlcdTczYjZcdTczYjVcdTcz'@; put 'YjRcdTczZWJcdTczYmZcdTczYzdcdTczYmVcdTczYzNcdTczYzZcdTczYjhcdTczY2JcdTc0ZWNcdTc0ZWVcdTc1MmVcdTc1NDdcdTc1NDhcdTc1YTdcdTc1YWFcdTc2NzlcdTc2YzRcdTc3MDhcdTc3MDNcdTc3MDRcdTc3MDVcdTc3MGFcdTc2ZjdcdTc2ZmJcdTc2ZmFcdTc3ZTdcdTc3ZThc'@; put 'dTc4MDZcdTc4MTFcdTc4MTJcdTc4MDVcdTc4MTBcdTc4MGZcdTc4MGVcdTc4MDlcdTc4MDNcdTc4MTNcdTc5NGFcdTc5NGNcdTc5NGJcdTc5NDVcdTc5NDRcdTc5ZDVcdTc5Y2RcdTc5Y2ZcdTc5ZDZcdTc5Y2VcdTdhODAiXSxbImQwNDAiLCJcdTdhN2VcdTdhZDFcdTdiMDBcdTdiMDFcdTdj'@; put 'N2FcdTdjNzhcdTdjNzlcdTdjN2ZcdTdjODBcdTdjODFcdTdkMDNcdTdkMDhcdTdkMDFcdTdmNThcdTdmOTFcdTdmOGRcdTdmYmVcdTgwMDdcdTgwMGVcdTgwMGZcdTgwMTRcdTgwMzdcdTgwZDhcdTgwYzdcdTgwZTBcdTgwZDFcdTgwYzhcdTgwYzJcdTgwZDBcdTgwYzVcdTgwZTNcdTgwZDlc'@; put 'dTgwZGNcdTgwY2FcdTgwZDVcdTgwYzlcdTgwY2ZcdTgwZDdcdTgwZTZcdTgwY2RcdTgxZmZcdTgyMjFcdTgyOTRcdTgyZDlcdTgyZmVcdTgyZjlcdTgzMDdcdTgyZThcdTgzMDBcdTgyZDVcdTgzM2FcdTgyZWJcdTgyZDZcdTgyZjRcdTgyZWNcdTgyZTFcdTgyZjJcdTgyZjVcdTgzMGNcdTgy'@; put 'ZmJcdTgyZjZcdTgyZjBcdTgyZWEiXSxbImQwYTEiLCJcdTgyZTRcdTgyZTBcdTgyZmFcdTgyZjNcdTgyZWRcdTg2NzdcdTg2NzRcdTg2N2NcdTg2NzNcdTg4NDFcdTg4NGVcdTg4NjdcdTg4NmFcdTg4NjlcdTg5ZDNcdThhMDRcdThhMDdcdThkNzJcdThmZTNcdThmZTFcdThmZWVcdThmZTBc'@; put 'dTkwZjFcdTkwYmRcdTkwYmZcdTkwZDVcdTkwYzVcdTkwYmVcdTkwYzdcdTkwY2JcdTkwYzhcdTkxZDRcdTkxZDNcdTk2NTRcdTk2NGZcdTk2NTFcdTk2NTNcdTk2NGFcdTk2NGVcdTUwMWVcdTUwMDVcdTUwMDdcdTUwMTNcdTUwMjJcdTUwMzBcdTUwMWJcdTRmZjVcdTRmZjRcdTUwMzNcdTUw'@; put 'MzdcdTUwMmNcdTRmZjZcdTRmZjdcdTUwMTdcdTUwMWNcdTUwMjBcdTUwMjdcdTUwMzVcdTUwMmZcdTUwMzFcdTUwMGVcdTUxNWFcdTUxOTRcdTUxOTNcdTUxY2FcdTUxYzRcdTUxYzVcdTUxYzhcdTUxY2VcdTUyNjFcdTUyNWFcdTUyNTJcdTUyNWVcdTUyNWZcdTUyNTVcdTUyNjJcdTUyY2Rc'@; put 'dTUzMGVcdTUzOWVcdTU1MjZcdTU0ZTJcdTU1MTdcdTU1MTJcdTU0ZTdcdTU0ZjNcdTU0ZTRcdTU1MWFcdTU0ZmZcdTU1MDRcdTU1MDhcdTU0ZWJcdTU1MTFcdTU1MDVcdTU0ZjEiXSxbImQxNDAiLCJcdTU1MGFcdTU0ZmJcdTU0ZjdcdTU0ZjhcdTU0ZTBcdTU1MGVcdTU1MDNcdTU1MGJcdTU3'@; put 'MDFcdTU3MDJcdTU3Y2NcdTU4MzJcdTU3ZDVcdTU3ZDJcdTU3YmFcdTU3YzZcdTU3YmRcdTU3YmNcdTU3YjhcdTU3YjZcdTU3YmZcdTU3YzdcdTU3ZDBcdTU3YjlcdTU3YzFcdTU5MGVcdTU5NGFcdTVhMTlcdTVhMTZcdTVhMmRcdTVhMmVcdTVhMTVcdTVhMGZcdTVhMTdcdTVhMGFcdTVhMWVc'@; put 'dTVhMzNcdTViNmNcdTViYTdcdTViYWRcdTViYWNcdTVjMDNcdTVjNTZcdTVjNTRcdTVjZWNcdTVjZmZcdTVjZWVcdTVjZjFcdTVjZjdcdTVkMDBcdTVjZjlcdTVlMjlcdTVlMjhcdTVlYThcdTVlYWVcdTVlYWFcdTVlYWNcdTVmMzNcdTVmMzBcdTVmNjdcdTYwNWRcdTYwNWFcdTYwNjciXSxb'@; put 'ImQxYTEiLCJcdTYwNDFcdTYwYTJcdTYwODhcdTYwODBcdTYwOTJcdTYwODFcdTYwOWRcdTYwODNcdTYwOTVcdTYwOWJcdTYwOTdcdTYwODdcdTYwOWNcdTYwOGVcdTYyMTlcdTYyNDZcdTYyZjJcdTYzMTBcdTYzNTZcdTYzMmNcdTYzNDRcdTYzNDVcdTYzMzZcdTYzNDNcdTYzZTRcdTYzMzlc'@; put 'dTYzNGJcdTYzNGFcdTYzM2NcdTYzMjlcdTYzNDFcdTYzMzRcdTYzNThcdTYzNTRcdTYzNTlcdTYzMmRcdTYzNDdcdTYzMzNcdTYzNWFcdTYzNTFcdTYzMzhcdTYzNTdcdTYzNDBcdTYzNDhcdTY1NGFcdTY1NDZcdTY1YzZcdTY1YzNcdTY1YzRcdTY1YzJcdTY2NGFcdTY2NWZcdTY2NDdcdTY2'@; put 'NTFcdTY3MTJcdTY3MTNcdTY4MWZcdTY4MWFcdTY4NDlcdTY4MzJcdTY4MzNcdTY4M2JcdTY4NGJcdTY4NGZcdTY4MTZcdTY4MzFcdTY4MWNcdTY4MzVcdTY4MmJcdTY4MmRcdTY4MmZcdTY4NGVcdTY4NDRcdTY4MzRcdTY4MWRcdTY4MTJcdTY4MTRcdTY4MjZcdTY4MjhcdTY4MmVcdTY4NGRc'@; put 'dTY4M2FcdTY4MjVcdTY4MjBcdTZiMmNcdTZiMmZcdTZiMmRcdTZiMzFcdTZiMzRcdTZiNmRcdTgwODJcdTZiODhcdTZiZTZcdTZiZTQiXSxbImQyNDAiLCJcdTZiZThcdTZiZTNcdTZiZTJcdTZiZTdcdTZjMjVcdTZkN2FcdTZkNjNcdTZkNjRcdTZkNzZcdTZkMGRcdTZkNjFcdTZkOTJcdTZk'@; put 'NThcdTZkNjJcdTZkNmRcdTZkNmZcdTZkOTFcdTZkOGRcdTZkZWZcdTZkN2ZcdTZkODZcdTZkNWVcdTZkNjdcdTZkNjBcdTZkOTdcdTZkNzBcdTZkN2NcdTZkNWZcdTZkODJcdTZkOThcdTZkMmZcdTZkNjhcdTZkOGJcdTZkN2VcdTZkODBcdTZkODRcdTZkMTZcdTZkODNcdTZkN2JcdTZkN2Rc'@; put 'dTZkNzVcdTZkOTBcdTcwZGNcdTcwZDNcdTcwZDFcdTcwZGRcdTcwY2JcdTdmMzlcdTcwZTJcdTcwZDdcdTcwZDJcdTcwZGVcdTcwZTBcdTcwZDRcdTcwY2RcdTcwYzVcdTcwYzZcdTcwYzdcdTcwZGFcdTcwY2VcdTcwZTFcdTcyNDJcdTcyNzgiXSxbImQyYTEiLCJcdTcyNzdcdTcyNzZcdTcz'@; put 'MDBcdTcyZmFcdTcyZjRcdTcyZmVcdTcyZjZcdTcyZjNcdTcyZmJcdTczMDFcdTczZDNcdTczZDlcdTczZTVcdTczZDZcdTczYmNcdTczZTdcdTczZTNcdTczZTlcdTczZGNcdTczZDJcdTczZGJcdTczZDRcdTczZGRcdTczZGFcdTczZDdcdTczZDhcdTczZThcdTc0ZGVcdTc0ZGZcdTc0ZjRc'@; put 'dTc0ZjVcdTc1MjFcdTc1NWJcdTc1NWZcdTc1YjBcdTc1YzFcdTc1YmJcdTc1YzRcdTc1YzBcdTc1YmZcdTc1YjZcdTc1YmFcdTc2OGFcdTc2YzlcdTc3MWRcdTc3MWJcdTc3MTBcdTc3MTNcdTc3MTJcdTc3MjNcdTc3MTFcdTc3MTVcdTc3MTlcdTc3MWFcdTc3MjJcdTc3MjdcdTc4MjNcdTc4'@; put 'MmNcdTc4MjJcdTc4MzVcdTc4MmZcdTc4MjhcdTc4MmVcdTc4MmJcdTc4MjFcdTc4MjlcdTc4MzNcdTc4MmFcdTc4MzFcdTc5NTRcdTc5NWJcdTc5NGZcdTc5NWNcdTc5NTNcdTc5NTJcdTc5NTFcdTc5ZWJcdTc5ZWNcdTc5ZTBcdTc5ZWVcdTc5ZWRcdTc5ZWFcdTc5ZGNcdTc5ZGVcdTc5ZGRc'@; put 'dTdhODZcdTdhODlcdTdhODVcdTdhOGJcdTdhOGNcdTdhOGFcdTdhODdcdTdhZDhcdTdiMTAiXSxbImQzNDAiLCJcdTdiMDRcdTdiMTNcdTdiMDVcdTdiMGZcdTdiMDhcdTdiMGFcdTdiMGVcdTdiMDlcdTdiMTJcdTdjODRcdTdjOTFcdTdjOGFcdTdjOGNcdTdjODhcdTdjOGRcdTdjODVcdTdk'@; put 'MWVcdTdkMWRcdTdkMTFcdTdkMGVcdTdkMThcdTdkMTZcdTdkMTNcdTdkMWZcdTdkMTJcdTdkMGZcdTdkMGNcdTdmNWNcdTdmNjFcdTdmNWVcdTdmNjBcdTdmNWRcdTdmNWJcdTdmOTZcdTdmOTJcdTdmYzNcdTdmYzJcdTdmYzBcdTgwMTZcdTgwM2VcdTgwMzlcdTgwZmFcdTgwZjJcdTgwZjlc'@; put 'dTgwZjVcdTgxMDFcdTgwZmJcdTgxMDBcdTgyMDFcdTgyMmZcdTgyMjVcdTgzMzNcdTgzMmRcdTgzNDRcdTgzMTlcdTgzNTFcdTgzMjVcdTgzNTZcdTgzM2ZcdTgzNDFcdTgzMjZcdTgzMWNcdTgzMjIiXSxbImQzYTEiLCJcdTgzNDJcdTgzNGVcdTgzMWJcdTgzMmFcdTgzMDhcdTgzM2NcdTgz'@; put 'NGRcdTgzMTZcdTgzMjRcdTgzMjBcdTgzMzdcdTgzMmZcdTgzMjlcdTgzNDdcdTgzNDVcdTgzNGNcdTgzNTNcdTgzMWVcdTgzMmNcdTgzNGJcdTgzMjdcdTgzNDhcdTg2NTNcdTg2NTJcdTg2YTJcdTg2YThcdTg2OTZcdTg2OGRcdTg2OTFcdTg2OWVcdTg2ODdcdTg2OTdcdTg2ODZcdTg2OGJc'@; put 'dTg2OWFcdTg2ODVcdTg2YTVcdTg2OTlcdTg2YTFcdTg2YTdcdTg2OTVcdTg2OThcdTg2OGVcdTg2OWRcdTg2OTBcdTg2OTRcdTg4NDNcdTg4NDRcdTg4NmRcdTg4NzVcdTg4NzZcdTg4NzJcdTg4ODBcdTg4NzFcdTg4N2ZcdTg4NmZcdTg4ODNcdTg4N2VcdTg4NzRcdTg4N2NcdThhMTJcdThj'@; put 'NDdcdThjNTdcdThjN2JcdThjYTRcdThjYTNcdThkNzZcdThkNzhcdThkYjVcdThkYjdcdThkYjZcdThlZDFcdThlZDNcdThmZmVcdThmZjVcdTkwMDJcdThmZmZcdThmZmJcdTkwMDRcdThmZmNcdThmZjZcdTkwZDZcdTkwZTBcdTkwZDlcdTkwZGFcdTkwZTNcdTkwZGZcdTkwZTVcdTkwZDhc'@; put 'dTkwZGJcdTkwZDdcdTkwZGNcdTkwZTRcdTkxNTAiXSxbImQ0NDAiLCJcdTkxNGVcdTkxNGZcdTkxZDVcdTkxZTJcdTkxZGFcdTk2NWNcdTk2NWZcdTk2YmNcdTk4ZTNcdTlhZGZcdTliMmZcdTRlN2ZcdTUwNzBcdTUwNmFcdTUwNjFcdTUwNWVcdTUwNjBcdTUwNTNcdTUwNGJcdTUwNWRcdTUw'@; put 'NzJcdTUwNDhcdTUwNGRcdTUwNDFcdTUwNWJcdTUwNGFcdTUwNjJcdTUwMTVcdTUwNDVcdTUwNWZcdTUwNjlcdTUwNmJcdTUwNjNcdTUwNjRcdTUwNDZcdTUwNDBcdTUwNmVcdTUwNzNcdTUwNTdcdTUwNTFcdTUxZDBcdTUyNmJcdTUyNmRcdTUyNmNcdTUyNmVcdTUyZDZcdTUyZDNcdTUzMmRc'@; put 'dTUzOWNcdTU1NzVcdTU1NzZcdTU1M2NcdTU1NGRcdTU1NTBcdTU1MzRcdTU1MmFcdTU1NTFcdTU1NjJcdTU1MzZcdTU1MzVcdTU1MzBcdTU1NTJcdTU1NDUiXSxbImQ0YTEiLCJcdTU1MGNcdTU1MzJcdTU1NjVcdTU1NGVcdTU1MzlcdTU1NDhcdTU1MmRcdTU1M2JcdTU1NDBcdTU1NGJcdTU3'@; put 'MGFcdTU3MDdcdTU3ZmJcdTU4MTRcdTU3ZTJcdTU3ZjZcdTU3ZGNcdTU3ZjRcdTU4MDBcdTU3ZWRcdTU3ZmRcdTU4MDhcdTU3ZjhcdTU4MGJcdTU3ZjNcdTU3Y2ZcdTU4MDdcdTU3ZWVcdTU3ZTNcdTU3ZjJcdTU3ZTVcdTU3ZWNcdTU3ZTFcdTU4MGVcdTU3ZmNcdTU4MTBcdTU3ZTdcdTU4MDFc'@; put 'dTU4MGNcdTU3ZjFcdTU3ZTlcdTU3ZjBcdTU4MGRcdTU4MDRcdTU5NWNcdTVhNjBcdTVhNThcdTVhNTVcdTVhNjdcdTVhNWVcdTVhMzhcdTVhMzVcdTVhNmRcdTVhNTBcdTVhNWZcdTVhNjVcdTVhNmNcdTVhNTNcdTVhNjRcdTVhNTdcdTVhNDNcdTVhNWRcdTVhNTJcdTVhNDRcdTVhNWJcdTVh'@; put 'NDhcdTVhOGVcdTVhM2VcdTVhNGRcdTVhMzlcdTVhNGNcdTVhNzBcdTVhNjlcdTVhNDdcdTVhNTFcdTVhNTZcdTVhNDJcdTVhNWNcdTViNzJcdTViNmVcdTViYzFcdTViYzBcdTVjNTlcdTVkMWVcdTVkMGJcdTVkMWRcdTVkMWFcdTVkMjBcdTVkMGNcdTVkMjhcdTVkMGRcdTVkMjZcdTVkMjVc'@; put 'dTVkMGYiXSxbImQ1NDAiLCJcdTVkMzBcdTVkMTJcdTVkMjNcdTVkMWZcdTVkMmVcdTVlM2VcdTVlMzRcdTVlYjFcdTVlYjRcdTVlYjlcdTVlYjJcdTVlYjNcdTVmMzZcdTVmMzhcdTVmOWJcdTVmOTZcdTVmOWZcdTYwOGFcdTYwOTBcdTYwODZcdTYwYmVcdTYwYjBcdTYwYmFcdTYwZDNcdTYw'@; put 'ZDRcdTYwY2ZcdTYwZTRcdTYwZDlcdTYwZGRcdTYwYzhcdTYwYjFcdTYwZGJcdTYwYjdcdTYwY2FcdTYwYmZcdTYwYzNcdTYwY2RcdTYwYzBcdTYzMzJcdTYzNjVcdTYzOGFcdTYzODJcdTYzN2RcdTYzYmRcdTYzOWVcdTYzYWRcdTYzOWRcdTYzOTdcdTYzYWJcdTYzOGVcdTYzNmZcdTYzODdc'@; put 'dTYzOTBcdTYzNmVcdTYzYWZcdTYzNzVcdTYzOWNcdTYzNmRcdTYzYWVcdTYzN2NcdTYzYTRcdTYzM2JcdTYzOWYiXSxbImQ1YTEiLCJcdTYzNzhcdTYzODVcdTYzODFcdTYzOTFcdTYzOGRcdTYzNzBcdTY1NTNcdTY1Y2RcdTY2NjVcdTY2NjFcdTY2NWJcdTY2NTlcdTY2NWNcdTY2NjJcdTY3'@; put 'MThcdTY4NzlcdTY4ODdcdTY4OTBcdTY4OWNcdTY4NmRcdTY4NmVcdTY4YWVcdTY4YWJcdTY5NTZcdTY4NmZcdTY4YTNcdTY4YWNcdTY4YTlcdTY4NzVcdTY4NzRcdTY4YjJcdTY4OGZcdTY4NzdcdTY4OTJcdTY4N2NcdTY4NmJcdTY4NzJcdTY4YWFcdTY4ODBcdTY4NzFcdTY4N2VcdTY4OWJc'@; put 'dTY4OTZcdTY4OGJcdTY4YTBcdTY4ODlcdTY4YTRcdTY4NzhcdTY4N2JcdTY4OTFcdTY4OGNcdTY4OGFcdTY4N2RcdTZiMzZcdTZiMzNcdTZiMzdcdTZiMzhcdTZiOTFcdTZiOGZcdTZiOGRcdTZiOGVcdTZiOGNcdTZjMmFcdTZkYzBcdTZkYWJcdTZkYjRcdTZkYjNcdTZlNzRcdTZkYWNcdTZk'@; put 'ZTlcdTZkZTJcdTZkYjdcdTZkZjZcdTZkZDRcdTZlMDBcdTZkYzhcdTZkZTBcdTZkZGZcdTZkZDZcdTZkYmVcdTZkZTVcdTZkZGNcdTZkZGRcdTZkZGJcdTZkZjRcdTZkY2FcdTZkYmRcdTZkZWRcdTZkZjBcdTZkYmFcdTZkZDVcdTZkYzJcdTZkY2ZcdTZkYzkiXSxbImQ2NDAiLCJcdTZkZDBc'@; put 'dTZkZjJcdTZkZDNcdTZkZmRcdTZkZDdcdTZkY2RcdTZkZTNcdTZkYmJcdTcwZmFcdTcxMGRcdTcwZjdcdTcxMTdcdTcwZjRcdTcxMGNcdTcwZjBcdTcxMDRcdTcwZjNcdTcxMTBcdTcwZmNcdTcwZmZcdTcxMDZcdTcxMTNcdTcxMDBcdTcwZjhcdTcwZjZcdTcxMGJcdTcxMDJcdTcxMGVcdTcy'@; put 'N2VcdTcyN2JcdTcyN2NcdTcyN2ZcdTczMWRcdTczMTdcdTczMDdcdTczMTFcdTczMThcdTczMGFcdTczMDhcdTcyZmZcdTczMGZcdTczMWVcdTczODhcdTczZjZcdTczZjhcdTczZjVcdTc0MDRcdTc0MDFcdTczZmRcdTc0MDdcdTc0MDBcdTczZmFcdTczZmNcdTczZmZcdTc0MGNcdTc0MGJc'@; put 'dTczZjRcdTc0MDhcdTc1NjRcdTc1NjNcdTc1Y2VcdTc1ZDJcdTc1Y2YiXSxbImQ2YTEiLCJcdTc1Y2JcdTc1Y2NcdTc1ZDFcdTc1ZDBcdTc2OGZcdTc2ODlcdTc2ZDNcdTc3MzlcdTc3MmZcdTc3MmRcdTc3MzFcdTc3MzJcdTc3MzRcdTc3MzNcdTc3M2RcdTc3MjVcdTc3M2JcdTc3MzVcdTc4'@; put 'NDhcdTc4NTJcdTc4NDlcdTc4NGRcdTc4NGFcdTc4NGNcdTc4MjZcdTc4NDVcdTc4NTBcdTc5NjRcdTc5NjdcdTc5NjlcdTc5NmFcdTc5NjNcdTc5NmJcdTc5NjFcdTc5YmJcdTc5ZmFcdTc5ZjhcdTc5ZjZcdTc5ZjdcdTdhOGZcdTdhOTRcdTdhOTBcdTdiMzVcdTdiNDdcdTdiMzRcdTdiMjVc'@; put 'dTdiMzBcdTdiMjJcdTdiMjRcdTdiMzNcdTdiMThcdTdiMmFcdTdiMWRcdTdiMzFcdTdiMmJcdTdiMmRcdTdiMmZcdTdiMzJcdTdiMzhcdTdiMWFcdTdiMjNcdTdjOTRcdTdjOThcdTdjOTZcdTdjYTNcdTdkMzVcdTdkM2RcdTdkMzhcdTdkMzZcdTdkM2FcdTdkNDVcdTdkMmNcdTdkMjlcdTdk'@; put 'NDFcdTdkNDdcdTdkM2VcdTdkM2ZcdTdkNGFcdTdkM2JcdTdkMjhcdTdmNjNcdTdmOTVcdTdmOWNcdTdmOWRcdTdmOWJcdTdmY2FcdTdmY2JcdTdmY2RcdTdmZDBcdTdmZDFcdTdmYzdcdTdmY2ZcdTdmYzlcdTgwMWYiXSxbImQ3NDAiLCJcdTgwMWVcdTgwMWJcdTgwNDdcdTgwNDNcdTgwNDhc'@; put 'dTgxMThcdTgxMjVcdTgxMTlcdTgxMWJcdTgxMmRcdTgxMWZcdTgxMmNcdTgxMWVcdTgxMjFcdTgxMTVcdTgxMjdcdTgxMWRcdTgxMjJcdTgyMTFcdTgyMzhcdTgyMzNcdTgyM2FcdTgyMzRcdTgyMzJcdTgyNzRcdTgzOTBcdTgzYTNcdTgzYThcdTgzOGRcdTgzN2FcdTgzNzNcdTgzYTRcdTgz'@; put 'NzRcdTgzOGZcdTgzODFcdTgzOTVcdTgzOTlcdTgzNzVcdTgzOTRcdTgzYTlcdTgzN2RcdTgzODNcdTgzOGNcdTgzOWRcdTgzOWJcdTgzYWFcdTgzOGJcdTgzN2VcdTgzYTVcdTgzYWZcdTgzODhcdTgzOTdcdTgzYjBcdTgzN2ZcdTgzYTZcdTgzODdcdTgzYWVcdTgzNzZcdTgzOWFcdTg2NTlc'@; put 'dTg2NTZcdTg2YmZcdTg2YjciXSxbImQ3YTEiLCJcdTg2YzJcdTg2YzFcdTg2YzVcdTg2YmFcdTg2YjBcdTg2YzhcdTg2YjlcdTg2YjNcdTg2YjhcdTg2Y2NcdTg2YjRcdTg2YmJcdTg2YmNcdTg2YzNcdTg2YmRcdTg2YmVcdTg4NTJcdTg4ODlcdTg4OTVcdTg4YThcdTg4YTJcdTg4YWFcdTg4'@; put 'OWFcdTg4OTFcdTg4YTFcdTg4OWZcdTg4OThcdTg4YTdcdTg4OTlcdTg4OWJcdTg4OTdcdTg4YTRcdTg4YWNcdTg4OGNcdTg4OTNcdTg4OGVcdTg5ODJcdTg5ZDZcdTg5ZDlcdTg5ZDVcdThhMzBcdThhMjdcdThhMmNcdThhMWVcdThjMzlcdThjM2JcdThjNWNcdThjNWRcdThjN2RcdThjYTVc'@; put 'dThkN2RcdThkN2JcdThkNzlcdThkYmNcdThkYzJcdThkYjlcdThkYmZcdThkYzFcdThlZDhcdThlZGVcdThlZGRcdThlZGNcdThlZDdcdThlZTBcdThlZTFcdTkwMjRcdTkwMGJcdTkwMTFcdTkwMWNcdTkwMGNcdTkwMjFcdTkwZWZcdTkwZWFcdTkwZjBcdTkwZjRcdTkwZjJcdTkwZjNcdTkw'@; put 'ZDRcdTkwZWJcdTkwZWNcdTkwZTlcdTkxNTZcdTkxNThcdTkxNWFcdTkxNTNcdTkxNTVcdTkxZWNcdTkxZjRcdTkxZjFcdTkxZjNcdTkxZjhcdTkxZTRcdTkxZjlcdTkxZWEiXSxbImQ4NDAiLCJcdTkxZWJcdTkxZjdcdTkxZThcdTkxZWVcdTk1N2FcdTk1ODZcdTk1ODhcdTk2N2NcdTk2NmRc'@; put 'dTk2NmJcdTk2NzFcdTk2NmZcdTk2YmZcdTk3NmFcdTk4MDRcdTk4ZTVcdTk5OTdcdTUwOWJcdTUwOTVcdTUwOTRcdTUwOWVcdTUwOGJcdTUwYTNcdTUwODNcdTUwOGNcdTUwOGVcdTUwOWRcdTUwNjhcdTUwOWNcdTUwOTJcdTUwODJcdTUwODdcdTUxNWZcdTUxZDRcdTUzMTJcdTUzMTFcdTUz'@; put 'YTRcdTUzYTdcdTU1OTFcdTU1YThcdTU1YTVcdTU1YWRcdTU1NzdcdTU2NDVcdTU1YTJcdTU1OTNcdTU1ODhcdTU1OGZcdTU1YjVcdTU1ODFcdTU1YTNcdTU1OTJcdTU1YTRcdTU1N2RcdTU1OGNcdTU1YTZcdTU1N2ZcdTU1OTVcdTU1YTFcdTU1OGVcdTU3MGNcdTU4MjlcdTU4MzciXSxbImQ4'@; put 'YTEiLCJcdTU4MTlcdTU4MWVcdTU4MjdcdTU4MjNcdTU4MjhcdTU3ZjVcdTU4NDhcdTU4MjVcdTU4MWNcdTU4MWJcdTU4MzNcdTU4M2ZcdTU4MzZcdTU4MmVcdTU4MzlcdTU4MzhcdTU4MmRcdTU4MmNcdTU4M2JcdTU5NjFcdTVhYWZcdTVhOTRcdTVhOWZcdTVhN2FcdTVhYTJcdTVhOWVcdTVh'@; put 'NzhcdTVhYTZcdTVhN2NcdTVhYTVcdTVhYWNcdTVhOTVcdTVhYWVcdTVhMzdcdTVhODRcdTVhOGFcdTVhOTdcdTVhODNcdTVhOGJcdTVhYTlcdTVhN2JcdTVhN2RcdTVhOGNcdTVhOWNcdTVhOGZcdTVhOTNcdTVhOWRcdTViZWFcdTViY2RcdTViY2JcdTViZDRcdTViZDFcdTViY2FcdTViY2Vc'@; put 'dTVjMGNcdTVjMzBcdTVkMzdcdTVkNDNcdTVkNmJcdTVkNDFcdTVkNGJcdTVkM2ZcdTVkMzVcdTVkNTFcdTVkNGVcdTVkNTVcdTVkMzNcdTVkM2FcdTVkNTJcdTVkM2RcdTVkMzFcdTVkNTlcdTVkNDJcdTVkMzlcdTVkNDlcdTVkMzhcdTVkM2NcdTVkMzJcdTVkMzZcdTVkNDBcdTVkNDVcdTVl'@; put 'NDRcdTVlNDFcdTVmNThcdTVmYTZcdTVmYTVcdTVmYWJcdTYwYzlcdTYwYjlcdTYwY2NcdTYwZTJcdTYwY2VcdTYwYzRcdTYxMTQiXSxbImQ5NDAiLCJcdTYwZjJcdTYxMGFcdTYxMTZcdTYxMDVcdTYwZjVcdTYxMTNcdTYwZjhcdTYwZmNcdTYwZmVcdTYwYzFcdTYxMDNcdTYxMThcdTYxMWRc'@; put 'dTYxMTBcdTYwZmZcdTYxMDRcdTYxMGJcdTYyNGFcdTYzOTRcdTYzYjFcdTYzYjBcdTYzY2VcdTYzZTVcdTYzZThcdTYzZWZcdTYzYzNcdTY0OWRcdTYzZjNcdTYzY2FcdTYzZTBcdTYzZjZcdTYzZDVcdTYzZjJcdTYzZjVcdTY0NjFcdTYzZGZcdTYzYmVcdTYzZGRcdTYzZGNcdTYzYzRcdTYz'@; put 'ZDhcdTYzZDNcdTYzYzJcdTYzYzdcdTYzY2NcdTYzY2JcdTYzYzhcdTYzZjBcdTYzZDdcdTYzZDlcdTY1MzJcdTY1NjdcdTY1NmFcdTY1NjRcdTY1NWNcdTY1NjhcdTY1NjVcdTY1OGNcdTY1OWRcdTY1OWVcdTY1YWVcdTY1ZDBcdTY1ZDIiXSxbImQ5YTEiLCJcdTY2N2NcdTY2NmNcdTY2N2Jc'@; put 'dTY2ODBcdTY2NzFcdTY2NzlcdTY2NmFcdTY2NzJcdTY3MDFcdTY5MGNcdTY4ZDNcdTY5MDRcdTY4ZGNcdTY5MmFcdTY4ZWNcdTY4ZWFcdTY4ZjFcdTY5MGZcdTY4ZDZcdTY4ZjdcdTY4ZWJcdTY4ZTRcdTY4ZjZcdTY5MTNcdTY5MTBcdTY4ZjNcdTY4ZTFcdTY5MDdcdTY4Y2NcdTY5MDhcdTY5'@; put 'NzBcdTY4YjRcdTY5MTFcdTY4ZWZcdTY4YzZcdTY5MTRcdTY4ZjhcdTY4ZDBcdTY4ZmRcdTY4ZmNcdTY4ZThcdTY5MGJcdTY5MGFcdTY5MTdcdTY4Y2VcdTY4YzhcdTY4ZGRcdTY4ZGVcdTY4ZTZcdTY4ZjRcdTY4ZDFcdTY5MDZcdTY4ZDRcdTY4ZTlcdTY5MTVcdTY5MjVcdTY4YzdcdTZiMzlc'@; put 'dTZiM2JcdTZiM2ZcdTZiM2NcdTZiOTRcdTZiOTdcdTZiOTlcdTZiOTVcdTZiYmRcdTZiZjBcdTZiZjJcdTZiZjNcdTZjMzBcdTZkZmNcdTZlNDZcdTZlNDdcdTZlMWZcdTZlNDlcdTZlODhcdTZlM2NcdTZlM2RcdTZlNDVcdTZlNjJcdTZlMmJcdTZlM2ZcdTZlNDFcdTZlNWRcdTZlNzNcdTZl'@; put 'MWNcdTZlMzNcdTZlNGJcdTZlNDBcdTZlNTFcdTZlM2JcdTZlMDNcdTZlMmVcdTZlNWUiXSxbImRhNDAiLCJcdTZlNjhcdTZlNWNcdTZlNjFcdTZlMzFcdTZlMjhcdTZlNjBcdTZlNzFcdTZlNmJcdTZlMzlcdTZlMjJcdTZlMzBcdTZlNTNcdTZlNjVcdTZlMjdcdTZlNzhcdTZlNjRcdTZlNzdc'@; put 'dTZlNTVcdTZlNzlcdTZlNTJcdTZlNjZcdTZlMzVcdTZlMzZcdTZlNWFcdTcxMjBcdTcxMWVcdTcxMmZcdTcwZmJcdTcxMmVcdTcxMzFcdTcxMjNcdTcxMjVcdTcxMjJcdTcxMzJcdTcxMWZcdTcxMjhcdTcxM2FcdTcxMWJcdTcyNGJcdTcyNWFcdTcyODhcdTcyODlcdTcyODZcdTcyODVcdTcy'@; put 'OGJcdTczMTJcdTczMGJcdTczMzBcdTczMjJcdTczMzFcdTczMzNcdTczMjdcdTczMzJcdTczMmRcdTczMjZcdTczMjNcdTczMzVcdTczMGNcdTc0MmVcdTc0MmNcdTc0MzBcdTc0MmJcdTc0MTYiXSxbImRhYTEiLCJcdTc0MWFcdTc0MjFcdTc0MmRcdTc0MzFcdTc0MjRcdTc0MjNcdTc0MWRc'@; put 'dTc0MjlcdTc0MjBcdTc0MzJcdTc0ZmJcdTc1MmZcdTc1NmZcdTc1NmNcdTc1ZTdcdTc1ZGFcdTc1ZTFcdTc1ZTZcdTc1ZGRcdTc1ZGZcdTc1ZTRcdTc1ZDdcdTc2OTVcdTc2OTJcdTc2ZGFcdTc3NDZcdTc3NDdcdTc3NDRcdTc3NGRcdTc3NDVcdTc3NGFcdTc3NGVcdTc3NGJcdTc3NGNcdTc3'@; put 'ZGVcdTc3ZWNcdTc4NjBcdTc4NjRcdTc4NjVcdTc4NWNcdTc4NmRcdTc4NzFcdTc4NmFcdTc4NmVcdTc4NzBcdTc4NjlcdTc4NjhcdTc4NWVcdTc4NjJcdTc5NzRcdTc5NzNcdTc5NzJcdTc5NzBcdTdhMDJcdTdhMGFcdTdhMDNcdTdhMGNcdTdhMDRcdTdhOTlcdTdhZTZcdTdhZTRcdTdiNGFc'@; put 'dTdiM2JcdTdiNDRcdTdiNDhcdTdiNGNcdTdiNGVcdTdiNDBcdTdiNThcdTdiNDVcdTdjYTJcdTdjOWVcdTdjYThcdTdjYTFcdTdkNThcdTdkNmZcdTdkNjNcdTdkNTNcdTdkNTZcdTdkNjdcdTdkNmFcdTdkNGZcdTdkNmRcdTdkNWNcdTdkNmJcdTdkNTJcdTdkNTRcdTdkNjlcdTdkNTFcdTdk'@; put 'NWZcdTdkNGVcdTdmM2VcdTdmM2ZcdTdmNjUiXSxbImRiNDAiLCJcdTdmNjZcdTdmYTJcdTdmYTBcdTdmYTFcdTdmZDdcdTgwNTFcdTgwNGZcdTgwNTBcdTgwZmVcdTgwZDRcdTgxNDNcdTgxNGFcdTgxNTJcdTgxNGZcdTgxNDdcdTgxM2RcdTgxNGRcdTgxM2FcdTgxZTZcdTgxZWVcdTgxZjdc'@; put 'dTgxZjhcdTgxZjlcdTgyMDRcdTgyM2NcdTgyM2RcdTgyM2ZcdTgyNzVcdTgzM2JcdTgzY2ZcdTgzZjlcdTg0MjNcdTgzYzBcdTgzZThcdTg0MTJcdTgzZTdcdTgzZTRcdTgzZmNcdTgzZjZcdTg0MTBcdTgzYzZcdTgzYzhcdTgzZWJcdTgzZTNcdTgzYmZcdTg0MDFcdTgzZGRcdTgzZTVcdTgz'@; put 'ZDhcdTgzZmZcdTgzZTFcdTgzY2JcdTgzY2VcdTgzZDZcdTgzZjVcdTgzYzlcdTg0MDlcdTg0MGZcdTgzZGVcdTg0MTFcdTg0MDZcdTgzYzJcdTgzZjMiXSxbImRiYTEiLCJcdTgzZDVcdTgzZmFcdTgzYzdcdTgzZDFcdTgzZWFcdTg0MTNcdTgzYzNcdTgzZWNcdTgzZWVcdTgzYzRcdTgzZmJc'@; put 'dTgzZDdcdTgzZTJcdTg0MWJcdTgzZGJcdTgzZmVcdTg2ZDhcdTg2ZTJcdTg2ZTZcdTg2ZDNcdTg2ZTNcdTg2ZGFcdTg2ZWFcdTg2ZGRcdTg2ZWJcdTg2ZGNcdTg2ZWNcdTg2ZTlcdTg2ZDdcdTg2ZThcdTg2ZDFcdTg4NDhcdTg4NTZcdTg4NTVcdTg4YmFcdTg4ZDdcdTg4YjlcdTg4YjhcdTg4'@; put 'YzBcdTg4YmVcdTg4YjZcdTg4YmNcdTg4YjdcdTg4YmRcdTg4YjJcdTg5MDFcdTg4YzlcdTg5OTVcdTg5OThcdTg5OTdcdTg5ZGRcdTg5ZGFcdTg5ZGJcdThhNGVcdThhNGRcdThhMzlcdThhNTlcdThhNDBcdThhNTdcdThhNThcdThhNDRcdThhNDVcdThhNTJcdThhNDhcdThhNTFcdThhNGFc'@; put 'dThhNGNcdThhNGZcdThjNWZcdThjODFcdThjODBcdThjYmFcdThjYmVcdThjYjBcdThjYjlcdThjYjVcdThkODRcdThkODBcdThkODlcdThkZDhcdThkZDNcdThkY2RcdThkYzdcdThkZDZcdThkZGNcdThkY2ZcdThkZDVcdThkZDlcdThkYzhcdThkZDdcdThkYzVcdThlZWZcdThlZjdcdThl'@; put 'ZmEiXSxbImRjNDAiLCJcdThlZjlcdThlZTZcdThlZWVcdThlZTVcdThlZjVcdThlZTdcdThlZThcdThlZjZcdThlZWJcdThlZjFcdThlZWNcdThlZjRcdThlZTlcdTkwMmRcdTkwMzRcdTkwMmZcdTkxMDZcdTkxMmNcdTkxMDRcdTkwZmZcdTkwZmNcdTkxMDhcdTkwZjlcdTkwZmJcdTkxMDFc'@; put 'dTkxMDBcdTkxMDdcdTkxMDVcdTkxMDNcdTkxNjFcdTkxNjRcdTkxNWZcdTkxNjJcdTkxNjBcdTkyMDFcdTkyMGFcdTkyMjVcdTkyMDNcdTkyMWFcdTkyMjZcdTkyMGZcdTkyMGNcdTkyMDBcdTkyMTJcdTkxZmZcdTkxZmRcdTkyMDZcdTkyMDRcdTkyMjdcdTkyMDJcdTkyMWNcdTkyMjRcdTky'@; put 'MTlcdTkyMTdcdTkyMDVcdTkyMTZcdTk1N2JcdTk1OGRcdTk1OGNcdTk1OTBcdTk2ODdcdTk2N2VcdTk2ODgiXSxbImRjYTEiLCJcdTk2ODlcdTk2ODNcdTk2ODBcdTk2YzJcdTk2YzhcdTk2YzNcdTk2ZjFcdTk2ZjBcdTk3NmNcdTk3NzBcdTk3NmVcdTk4MDdcdTk4YTlcdTk4ZWJcdTljZTZc'@; put 'dTllZjlcdTRlODNcdTRlODRcdTRlYjZcdTUwYmRcdTUwYmZcdTUwYzZcdTUwYWVcdTUwYzRcdTUwY2FcdTUwYjRcdTUwYzhcdTUwYzJcdTUwYjBcdTUwYzFcdTUwYmFcdTUwYjFcdTUwY2JcdTUwYzlcdTUwYjZcdTUwYjhcdTUxZDdcdTUyN2FcdTUyNzhcdTUyN2JcdTUyN2NcdTU1YzNcdTU1'@; put 'ZGJcdTU1Y2NcdTU1ZDBcdTU1Y2JcdTU1Y2FcdTU1ZGRcdTU1YzBcdTU1ZDRcdTU1YzRcdTU1ZTlcdTU1YmZcdTU1ZDJcdTU1OGRcdTU1Y2ZcdTU1ZDVcdTU1ZTJcdTU1ZDZcdTU1YzhcdTU1ZjJcdTU1Y2RcdTU1ZDlcdTU1YzJcdTU3MTRcdTU4NTNcdTU4NjhcdTU4NjRcdTU4NGZcdTU4NGRc'@; put 'dTU4NDlcdTU4NmZcdTU4NTVcdTU4NGVcdTU4NWRcdTU4NTlcdTU4NjVcdTU4NWJcdTU4M2RcdTU4NjNcdTU4NzFcdTU4ZmNcdTVhYzdcdTVhYzRcdTVhY2JcdTVhYmFcdTVhYjhcdTVhYjFcdTVhYjVcdTVhYjBcdTVhYmZcdTVhYzhcdTVhYmJcdTVhYzYiXSxbImRkNDAiLCJcdTVhYjdcdTVh'@; put 'YzBcdTVhY2FcdTVhYjRcdTVhYjZcdTVhY2RcdTVhYjlcdTVhOTBcdTViZDZcdTViZDhcdTViZDlcdTVjMWZcdTVjMzNcdTVkNzFcdTVkNjNcdTVkNGFcdTVkNjVcdTVkNzJcdTVkNmNcdTVkNWVcdTVkNjhcdTVkNjdcdTVkNjJcdTVkZjBcdTVlNGZcdTVlNGVcdTVlNGFcdTVlNGRcdTVlNGJc'@; put 'dTVlYzVcdTVlY2NcdTVlYzZcdTVlY2JcdTVlYzdcdTVmNDBcdTVmYWZcdTVmYWRcdTYwZjdcdTYxNDlcdTYxNGFcdTYxMmJcdTYxNDVcdTYxMzZcdTYxMzJcdTYxMmVcdTYxNDZcdTYxMmZcdTYxNGZcdTYxMjlcdTYxNDBcdTYyMjBcdTkxNjhcdTYyMjNcdTYyMjVcdTYyMjRcdTYzYzVcdTYz'@; put 'ZjFcdTYzZWJcdTY0MTBcdTY0MTJcdTY0MDlcdTY0MjBcdTY0MjQiXSxbImRkYTEiLCJcdTY0MzNcdTY0NDNcdTY0MWZcdTY0MTVcdTY0MThcdTY0MzlcdTY0MzdcdTY0MjJcdTY0MjNcdTY0MGNcdTY0MjZcdTY0MzBcdTY0MjhcdTY0NDFcdTY0MzVcdTY0MmZcdTY0MGFcdTY0MWFcdTY0NDBc'@; put 'dTY0MjVcdTY0MjdcdTY0MGJcdTYzZTdcdTY0MWJcdTY0MmVcdTY0MjFcdTY0MGVcdTY1NmZcdTY1OTJcdTY1ZDNcdTY2ODZcdTY2OGNcdTY2OTVcdTY2OTBcdTY2OGJcdTY2OGFcdTY2OTlcdTY2OTRcdTY2NzhcdTY3MjBcdTY5NjZcdTY5NWZcdTY5MzhcdTY5NGVcdTY5NjJcdTY5NzFcdTY5'@; put 'M2ZcdTY5NDVcdTY5NmFcdTY5MzlcdTY5NDJcdTY5NTdcdTY5NTlcdTY5N2FcdTY5NDhcdTY5NDlcdTY5MzVcdTY5NmNcdTY5MzNcdTY5M2RcdTY5NjVcdTY4ZjBcdTY5NzhcdTY5MzRcdTY5NjlcdTY5NDBcdTY5NmZcdTY5NDRcdTY5NzZcdTY5NThcdTY5NDFcdTY5NzRcdTY5NGNcdTY5M2Jc'@; put 'dTY5NGJcdTY5MzdcdTY5NWNcdTY5NGZcdTY5NTFcdTY5MzJcdTY5NTJcdTY5MmZcdTY5N2JcdTY5M2NcdTZiNDZcdTZiNDVcdTZiNDNcdTZiNDJcdTZiNDhcdTZiNDFcdTZiOWJcdWZhMGRcdTZiZmJcdTZiZmMiXSxbImRlNDAiLCJcdTZiZjlcdTZiZjdcdTZiZjhcdTZlOWJcdTZlZDZcdTZl'@; put 'YzhcdTZlOGZcdTZlYzBcdTZlOWZcdTZlOTNcdTZlOTRcdTZlYTBcdTZlYjFcdTZlYjlcdTZlYzZcdTZlZDJcdTZlYmRcdTZlYzFcdTZlOWVcdTZlYzlcdTZlYjdcdTZlYjBcdTZlY2RcdTZlYTZcdTZlY2ZcdTZlYjJcdTZlYmVcdTZlYzNcdTZlZGNcdTZlZDhcdTZlOTlcdTZlOTJcdTZlOGVc'@; put 'dTZlOGRcdTZlYTRcdTZlYTFcdTZlYmZcdTZlYjNcdTZlZDBcdTZlY2FcdTZlOTdcdTZlYWVcdTZlYTNcdTcxNDdcdTcxNTRcdTcxNTJcdTcxNjNcdTcxNjBcdTcxNDFcdTcxNWRcdTcxNjJcdTcxNzJcdTcxNzhcdTcxNmFcdTcxNjFcdTcxNDJcdTcxNThcdTcxNDNcdTcxNGJcdTcxNzBcdTcx'@; put 'NWZcdTcxNTBcdTcxNTMiXSxbImRlYTEiLCJcdTcxNDRcdTcxNGRcdTcxNWFcdTcyNGZcdTcyOGRcdTcyOGNcdTcyOTFcdTcyOTBcdTcyOGVcdTczM2NcdTczNDJcdTczM2JcdTczM2FcdTczNDBcdTczNGFcdTczNDlcdTc0NDRcdTc0NGFcdTc0NGJcdTc0NTJcdTc0NTFcdTc0NTdcdTc0NDBc'@; put 'dTc0NGZcdTc0NTBcdTc0NGVcdTc0NDJcdTc0NDZcdTc0NGRcdTc0NTRcdTc0ZTFcdTc0ZmZcdTc0ZmVcdTc0ZmRcdTc1MWRcdTc1NzlcdTc1NzdcdTY5ODNcdTc1ZWZcdTc2MGZcdTc2MDNcdTc1ZjdcdTc1ZmVcdTc1ZmNcdTc1ZjlcdTc1ZjhcdTc2MTBcdTc1ZmJcdTc1ZjZcdTc1ZWRcdTc1'@; put 'ZjVcdTc1ZmRcdTc2OTlcdTc2YjVcdTc2ZGRcdTc3NTVcdTc3NWZcdTc3NjBcdTc3NTJcdTc3NTZcdTc3NWFcdTc3NjlcdTc3NjdcdTc3NTRcdTc3NTlcdTc3NmRcdTc3ZTBcdTc4ODdcdTc4OWFcdTc4OTRcdTc4OGZcdTc4ODRcdTc4OTVcdTc4ODVcdTc4ODZcdTc4YTFcdTc4ODNcdTc4Nzlc'@; put 'dTc4OTlcdTc4ODBcdTc4OTZcdTc4N2JcdTc5N2NcdTc5ODJcdTc5N2RcdTc5NzlcdTdhMTFcdTdhMThcdTdhMTlcdTdhMTJcdTdhMTdcdTdhMTVcdTdhMjJcdTdhMTMiXSxbImRmNDAiLCJcdTdhMWJcdTdhMTBcdTdhYTNcdTdhYTJcdTdhOWVcdTdhZWJcdTdiNjZcdTdiNjRcdTdiNmRcdTdi'@; put 'NzRcdTdiNjlcdTdiNzJcdTdiNjVcdTdiNzNcdTdiNzFcdTdiNzBcdTdiNjFcdTdiNzhcdTdiNzZcdTdiNjNcdTdjYjJcdTdjYjRcdTdjYWZcdTdkODhcdTdkODZcdTdkODBcdTdkOGRcdTdkN2ZcdTdkODVcdTdkN2FcdTdkOGVcdTdkN2JcdTdkODNcdTdkN2NcdTdkOGNcdTdkOTRcdTdkODRc'@; put 'dTdkN2RcdTdkOTJcdTdmNmRcdTdmNmJcdTdmNjdcdTdmNjhcdTdmNmNcdTdmYTZcdTdmYTVcdTdmYTdcdTdmZGJcdTdmZGNcdTgwMjFcdTgxNjRcdTgxNjBcdTgxNzdcdTgxNWNcdTgxNjlcdTgxNWJcdTgxNjJcdTgxNzJcdTY3MjFcdTgxNWVcdTgxNzZcdTgxNjdcdTgxNmYiXSxbImRmYTEi'@; put 'LCJcdTgxNDRcdTgxNjFcdTgyMWRcdTgyNDlcdTgyNDRcdTgyNDBcdTgyNDJcdTgyNDVcdTg0ZjFcdTg0M2ZcdTg0NTZcdTg0NzZcdTg0NzlcdTg0OGZcdTg0OGRcdTg0NjVcdTg0NTFcdTg0NDBcdTg0ODZcdTg0NjdcdTg0MzBcdTg0NGRcdTg0N2RcdTg0NWFcdTg0NTlcdTg0NzRcdTg0NzNc'@; put 'dTg0NWRcdTg1MDdcdTg0NWVcdTg0MzdcdTg0M2FcdTg0MzRcdTg0N2FcdTg0NDNcdTg0NzhcdTg0MzJcdTg0NDVcdTg0MjlcdTgzZDlcdTg0NGJcdTg0MmZcdTg0NDJcdTg0MmRcdTg0NWZcdTg0NzBcdTg0MzlcdTg0NGVcdTg0NGNcdTg0NTJcdTg0NmZcdTg0YzVcdTg0OGVcdTg0M2JcdTg0'@; put 'NDdcdTg0MzZcdTg0MzNcdTg0NjhcdTg0N2VcdTg0NDRcdTg0MmJcdTg0NjBcdTg0NTRcdTg0NmVcdTg0NTBcdTg3MGJcdTg3MDRcdTg2ZjdcdTg3MGNcdTg2ZmFcdTg2ZDZcdTg2ZjVcdTg3NGRcdTg2ZjhcdTg3MGVcdTg3MDlcdTg3MDFcdTg2ZjZcdTg3MGRcdTg3MDVcdTg4ZDZcdTg4Y2Jc'@; put 'dTg4Y2RcdTg4Y2VcdTg4ZGVcdTg4ZGJcdTg4ZGFcdTg4Y2NcdTg4ZDBcdTg5ODVcdTg5OWJcdTg5ZGZcdTg5ZTVcdTg5ZTQiXSxbImUwNDAiLCJcdTg5ZTFcdTg5ZTBcdTg5ZTJcdTg5ZGNcdTg5ZTZcdThhNzZcdThhODZcdThhN2ZcdThhNjFcdThhM2ZcdThhNzdcdThhODJcdThhODRcdThh'@; put 'NzVcdThhODNcdThhODFcdThhNzRcdThhN2FcdThjM2NcdThjNGJcdThjNGFcdThjNjVcdThjNjRcdThjNjZcdThjODZcdThjODRcdThjODVcdThjY2NcdThkNjhcdThkNjlcdThkOTFcdThkOGNcdThkOGVcdThkOGZcdThkOGRcdThkOTNcdThkOTRcdThkOTBcdThkOTJcdThkZjBcdThkZTBc'@; put 'dThkZWNcdThkZjFcdThkZWVcdThkZDBcdThkZTlcdThkZTNcdThkZTJcdThkZTdcdThkZjJcdThkZWJcdThkZjRcdThmMDZcdThlZmZcdThmMDFcdThmMDBcdThmMDVcdThmMDdcdThmMDhcdThmMDJcdThmMGJcdTkwNTJcdTkwM2YiXSxbImUwYTEiLCJcdTkwNDRcdTkwNDlcdTkwM2RcdTkx'@; put 'MTBcdTkxMGRcdTkxMGZcdTkxMTFcdTkxMTZcdTkxMTRcdTkxMGJcdTkxMGVcdTkxNmVcdTkxNmZcdTkyNDhcdTkyNTJcdTkyMzBcdTkyM2FcdTkyNjZcdTkyMzNcdTkyNjVcdTkyNWVcdTkyODNcdTkyMmVcdTkyNGFcdTkyNDZcdTkyNmRcdTkyNmNcdTkyNGZcdTkyNjBcdTkyNjdcdTkyNmZc'@; put 'dTkyMzZcdTkyNjFcdTkyNzBcdTkyMzFcdTkyNTRcdTkyNjNcdTkyNTBcdTkyNzJcdTkyNGVcdTkyNTNcdTkyNGNcdTkyNTZcdTkyMzJcdTk1OWZcdTk1OWNcdTk1OWVcdTk1OWJcdTk2OTJcdTk2OTNcdTk2OTFcdTk2OTdcdTk2Y2VcdTk2ZmFcdTk2ZmRcdTk2ZjhcdTk2ZjVcdTk3NzNcdTk3'@; put 'NzdcdTk3NzhcdTk3NzJcdTk4MGZcdTk4MGRcdTk4MGVcdTk4YWNcdTk4ZjZcdTk4ZjlcdTk5YWZcdTk5YjJcdTk5YjBcdTk5YjVcdTlhYWRcdTlhYWJcdTliNWJcdTljZWFcdTljZWRcdTljZTdcdTllODBcdTllZmRcdTUwZTZcdTUwZDRcdTUwZDdcdTUwZThcdTUwZjNcdTUwZGJcdTUwZWFc'@; put 'dTUwZGRcdTUwZTRcdTUwZDNcdTUwZWNcdTUwZjBcdTUwZWZcdTUwZTNcdTUwZTAiXSxbImUxNDAiLCJcdTUxZDhcdTUyODBcdTUyODFcdTUyZTlcdTUyZWJcdTUzMzBcdTUzYWNcdTU2MjdcdTU2MTVcdTU2MGNcdTU2MTJcdTU1ZmNcdTU2MGZcdTU2MWNcdTU2MDFcdTU2MTNcdTU2MDJcdTU1'@; put 'ZmFcdTU2MWRcdTU2MDRcdTU1ZmZcdTU1ZjlcdTU4ODlcdTU4N2NcdTU4OTBcdTU4OThcdTU4ODZcdTU4ODFcdTU4N2ZcdTU4NzRcdTU4OGJcdTU4N2FcdTU4ODdcdTU4OTFcdTU4OGVcdTU4NzZcdTU4ODJcdTU4ODhcdTU4N2JcdTU4OTRcdTU4OGZcdTU4ZmVcdTU5NmJcdTVhZGNcdTVhZWVc'@; put 'dTVhZTVcdTVhZDVcdTVhZWFcdTVhZGFcdTVhZWRcdTVhZWJcdTVhZjNcdTVhZTJcdTVhZTBcdTVhZGJcdTVhZWNcdTVhZGVcdTVhZGRcdTVhZDlcdTVhZThcdTVhZGZcdTViNzdcdTViZTAiXSxbImUxYTEiLCJcdTViZTNcdTVjNjNcdTVkODJcdTVkODBcdTVkN2RcdTVkODZcdTVkN2FcdTVk'@; put 'ODFcdTVkNzdcdTVkOGFcdTVkODlcdTVkODhcdTVkN2VcdTVkN2NcdTVkOGRcdTVkNzlcdTVkN2ZcdTVlNThcdTVlNTlcdTVlNTNcdTVlZDhcdTVlZDFcdTVlZDdcdTVlY2VcdTVlZGNcdTVlZDVcdTVlZDlcdTVlZDJcdTVlZDRcdTVmNDRcdTVmNDNcdTVmNmZcdTVmYjZcdTYxMmNcdTYxMjhc'@; put 'dTYxNDFcdTYxNWVcdTYxNzFcdTYxNzNcdTYxNTJcdTYxNTNcdTYxNzJcdTYxNmNcdTYxODBcdTYxNzRcdTYxNTRcdTYxN2FcdTYxNWJcdTYxNjVcdTYxM2JcdTYxNmFcdTYxNjFcdTYxNTZcdTYyMjlcdTYyMjdcdTYyMmJcdTY0MmJcdTY0NGRcdTY0NWJcdTY0NWRcdTY0NzRcdTY0NzZcdTY0'@; put 'NzJcdTY0NzNcdTY0N2RcdTY0NzVcdTY0NjZcdTY0YTZcdTY0NGVcdTY0ODJcdTY0NWVcdTY0NWNcdTY0NGJcdTY0NTNcdTY0NjBcdTY0NTBcdTY0N2ZcdTY0M2ZcdTY0NmNcdTY0NmJcdTY0NTlcdTY0NjVcdTY0NzdcdTY1NzNcdTY1YTBcdTY2YTFcdTY2YTBcdTY2OWZcdTY3MDVcdTY3MDRc'@; put 'dTY3MjJcdTY5YjFcdTY5YjZcdTY5YzkiXSxbImUyNDAiLCJcdTY5YTBcdTY5Y2VcdTY5OTZcdTY5YjBcdTY5YWNcdTY5YmNcdTY5OTFcdTY5OTlcdTY5OGVcdTY5YTdcdTY5OGRcdTY5YTlcdTY5YmVcdTY5YWZcdTY5YmZcdTY5YzRcdTY5YmRcdTY5YTRcdTY5ZDRcdTY5YjlcdTY5Y2FcdTY5'@; put 'OWFcdTY5Y2ZcdTY5YjNcdTY5OTNcdTY5YWFcdTY5YTFcdTY5OWVcdTY5ZDlcdTY5OTdcdTY5OTBcdTY5YzJcdTY5YjVcdTY5YTVcdTY5YzZcdTZiNGFcdTZiNGRcdTZiNGJcdTZiOWVcdTZiOWZcdTZiYTBcdTZiYzNcdTZiYzRcdTZiZmVcdTZlY2VcdTZlZjVcdTZlZjFcdTZmMDNcdTZmMjVc'@; put 'dTZlZjhcdTZmMzdcdTZlZmJcdTZmMmVcdTZmMDlcdTZmNGVcdTZmMTlcdTZmMWFcdTZmMjdcdTZmMThcdTZmM2JcdTZmMTJcdTZlZWRcdTZmMGEiXSxbImUyYTEiLCJcdTZmMzZcdTZmNzNcdTZlZjlcdTZlZWVcdTZmMmRcdTZmNDBcdTZmMzBcdTZmM2NcdTZmMzVcdTZlZWJcdTZmMDdcdTZm'@; put 'MGVcdTZmNDNcdTZmMDVcdTZlZmRcdTZlZjZcdTZmMzlcdTZmMWNcdTZlZmNcdTZmM2FcdTZmMWZcdTZmMGRcdTZmMWVcdTZmMDhcdTZmMjFcdTcxODdcdTcxOTBcdTcxODlcdTcxODBcdTcxODVcdTcxODJcdTcxOGZcdTcxN2JcdTcxODZcdTcxODFcdTcxOTdcdTcyNDRcdTcyNTNcdTcyOTdc'@; put 'dTcyOTVcdTcyOTNcdTczNDNcdTczNGRcdTczNTFcdTczNGNcdTc0NjJcdTc0NzNcdTc0NzFcdTc0NzVcdTc0NzJcdTc0NjdcdTc0NmVcdTc1MDBcdTc1MDJcdTc1MDNcdTc1N2RcdTc1OTBcdTc2MTZcdTc2MDhcdTc2MGNcdTc2MTVcdTc2MTFcdTc2MGFcdTc2MTRcdTc2YjhcdTc3ODFcdTc3'@; put 'N2NcdTc3ODVcdTc3ODJcdTc3NmVcdTc3ODBcdTc3NmZcdTc3N2VcdTc3ODNcdTc4YjJcdTc4YWFcdTc4YjRcdTc4YWRcdTc4YThcdTc4N2VcdTc4YWJcdTc4OWVcdTc4YTVcdTc4YTBcdTc4YWNcdTc4YTJcdTc4YTRcdTc5OThcdTc5OGFcdTc5OGJcdTc5OTZcdTc5OTVcdTc5OTRcdTc5OTMi'@; put 'XSxbImUzNDAiLCJcdTc5OTdcdTc5ODhcdTc5OTJcdTc5OTBcdTdhMmJcdTdhNGFcdTdhMzBcdTdhMmZcdTdhMjhcdTdhMjZcdTdhYThcdTdhYWJcdTdhYWNcdTdhZWVcdTdiODhcdTdiOWNcdTdiOGFcdTdiOTFcdTdiOTBcdTdiOTZcdTdiOGRcdTdiOGNcdTdiOWJcdTdiOGVcdTdiODVcdTdi'@; put 'OThcdTUyODRcdTdiOTlcdTdiYTRcdTdiODJcdTdjYmJcdTdjYmZcdTdjYmNcdTdjYmFcdTdkYTdcdTdkYjdcdTdkYzJcdTdkYTNcdTdkYWFcdTdkYzFcdTdkYzBcdTdkYzVcdTdkOWRcdTdkY2VcdTdkYzRcdTdkYzZcdTdkY2JcdTdkY2NcdTdkYWZcdTdkYjlcdTdkOTZcdTdkYmNcdTdkOWZc'@; put 'dTdkYTZcdTdkYWVcdTdkYTlcdTdkYTFcdTdkYzlcdTdmNzNcdTdmZTJcdTdmZTNcdTdmZTVcdTdmZGUiXSxbImUzYTEiLCJcdTgwMjRcdTgwNWRcdTgwNWNcdTgxODlcdTgxODZcdTgxODNcdTgxODdcdTgxOGRcdTgxOGNcdTgxOGJcdTgyMTVcdTg0OTdcdTg0YTRcdTg0YTFcdTg0OWZcdTg0'@; put 'YmFcdTg0Y2VcdTg0YzJcdTg0YWNcdTg0YWVcdTg0YWJcdTg0YjlcdTg0YjRcdTg0YzFcdTg0Y2RcdTg0YWFcdTg0OWFcdTg0YjFcdTg0ZDBcdTg0OWRcdTg0YTdcdTg0YmJcdTg0YTJcdTg0OTRcdTg0YzdcdTg0Y2NcdTg0OWJcdTg0YTlcdTg0YWZcdTg0YThcdTg0ZDZcdTg0OThcdTg0YjZc'@; put 'dTg0Y2ZcdTg0YTBcdTg0ZDdcdTg0ZDRcdTg0ZDJcdTg0ZGJcdTg0YjBcdTg0OTFcdTg2NjFcdTg3MzNcdTg3MjNcdTg3MjhcdTg3NmJcdTg3NDBcdTg3MmVcdTg3MWVcdTg3MjFcdTg3MTlcdTg3MWJcdTg3NDNcdTg3MmNcdTg3NDFcdTg3M2VcdTg3NDZcdTg3MjBcdTg3MzJcdTg3MmFcdTg3'@; put 'MmRcdTg3M2NcdTg3MTJcdTg3M2FcdTg3MzFcdTg3MzVcdTg3NDJcdTg3MjZcdTg3MjdcdTg3MzhcdTg3MjRcdTg3MWFcdTg3MzBcdTg3MTFcdTg4ZjdcdTg4ZTdcdTg4ZjFcdTg4ZjJcdTg4ZmFcdTg4ZmVcdTg4ZWVcdTg4ZmNcdTg4ZjZcdTg4ZmIiXSxbImU0NDAiLCJcdTg4ZjBcdTg4ZWNc'@; put 'dTg4ZWJcdTg5OWRcdTg5YTFcdTg5OWZcdTg5OWVcdTg5ZTlcdTg5ZWJcdTg5ZThcdThhYWJcdThhOTlcdThhOGJcdThhOTJcdThhOGZcdThhOTZcdThjM2RcdThjNjhcdThjNjlcdThjZDVcdThjY2ZcdThjZDdcdThkOTZcdThlMDlcdThlMDJcdThkZmZcdThlMGRcdThkZmRcdThlMGFcdThl'@; put 'MDNcdThlMDdcdThlMDZcdThlMDVcdThkZmVcdThlMDBcdThlMDRcdThmMTBcdThmMTFcdThmMGVcdThmMGRcdTkxMjNcdTkxMWNcdTkxMjBcdTkxMjJcdTkxMWZcdTkxMWRcdTkxMWFcdTkxMjRcdTkxMjFcdTkxMWJcdTkxN2FcdTkxNzJcdTkxNzlcdTkxNzNcdTkyYTVcdTkyYTRcdTkyNzZc'@; put 'dTkyOWJcdTkyN2FcdTkyYTBcdTkyOTRcdTkyYWFcdTkyOGQiXSxbImU0YTEiLCJcdTkyYTZcdTkyOWFcdTkyYWJcdTkyNzlcdTkyOTdcdTkyN2ZcdTkyYTNcdTkyZWVcdTkyOGVcdTkyODJcdTkyOTVcdTkyYTJcdTkyN2RcdTkyODhcdTkyYTFcdTkyOGFcdTkyODZcdTkyOGNcdTkyOTlcdTky'@; put 'YTdcdTkyN2VcdTkyODdcdTkyYTlcdTkyOWRcdTkyOGJcdTkyMmRcdTk2OWVcdTk2YTFcdTk2ZmZcdTk3NThcdTk3N2RcdTk3N2FcdTk3N2VcdTk3ODNcdTk3ODBcdTk3ODJcdTk3N2JcdTk3ODRcdTk3ODFcdTk3N2ZcdTk3Y2VcdTk3Y2RcdTk4MTZcdTk4YWRcdTk4YWVcdTk5MDJcdTk5MDBc'@; put 'dTk5MDdcdTk5OWRcdTk5OWNcdTk5YzNcdTk5YjlcdTk5YmJcdTk5YmFcdTk5YzJcdTk5YmRcdTk5YzdcdTlhYjFcdTlhZTNcdTlhZTdcdTliM2VcdTliM2ZcdTliNjBcdTliNjFcdTliNWZcdTljZjFcdTljZjJcdTljZjVcdTllYTdcdTUwZmZcdTUxMDNcdTUxMzBcdTUwZjhcdTUxMDZcdTUx'@; put 'MDdcdTUwZjZcdTUwZmVcdTUxMGJcdTUxMGNcdTUwZmRcdTUxMGFcdTUyOGJcdTUyOGNcdTUyZjFcdTUyZWZcdTU2NDhcdTU2NDJcdTU2NGNcdTU2MzVcdTU2NDFcdTU2NGFcdTU2NDlcdTU2NDZcdTU2NTgiXSxbImU1NDAiLCJcdTU2NWFcdTU2NDBcdTU2MzNcdTU2M2RcdTU2MmNcdTU2M2Vc'@; put 'dTU2MzhcdTU2MmFcdTU2M2FcdTU3MWFcdTU4YWJcdTU4OWRcdTU4YjFcdTU4YTBcdTU4YTNcdTU4YWZcdTU4YWNcdTU4YTVcdTU4YTFcdTU4ZmZcdTVhZmZcdTVhZjRcdTVhZmRcdTVhZjdcdTVhZjZcdTViMDNcdTVhZjhcdTViMDJcdTVhZjlcdTViMDFcdTViMDdcdTViMDVcdTViMGZcdTVj'@; put 'NjdcdTVkOTlcdTVkOTdcdTVkOWZcdTVkOTJcdTVkYTJcdTVkOTNcdTVkOTVcdTVkYTBcdTVkOWNcdTVkYTFcdTVkOWFcdTVkOWVcdTVlNjlcdTVlNWRcdTVlNjBcdTVlNWNcdTdkZjNcdTVlZGJcdTVlZGVcdTVlZTFcdTVmNDlcdTVmYjJcdTYxOGJcdTYxODNcdTYxNzlcdTYxYjFcdTYxYjBc'@; put 'dTYxYTJcdTYxODkiXSxbImU1YTEiLCJcdTYxOWJcdTYxOTNcdTYxYWZcdTYxYWRcdTYxOWZcdTYxOTJcdTYxYWFcdTYxYTFcdTYxOGRcdTYxNjZcdTYxYjNcdTYyMmRcdTY0NmVcdTY0NzBcdTY0OTZcdTY0YTBcdTY0ODVcdTY0OTdcdTY0OWNcdTY0OGZcdTY0OGJcdTY0OGFcdTY0OGNcdTY0'@; put 'YTNcdTY0OWZcdTY0NjhcdTY0YjFcdTY0OThcdTY1NzZcdTY1N2FcdTY1NzlcdTY1N2JcdTY1YjJcdTY1YjNcdTY2YjVcdTY2YjBcdTY2YTlcdTY2YjJcdTY2YjdcdTY2YWFcdTY2YWZcdTZhMDBcdTZhMDZcdTZhMTdcdTY5ZTVcdTY5ZjhcdTZhMTVcdTY5ZjFcdTY5ZTRcdTZhMjBcdTY5ZmZc'@; put 'dTY5ZWNcdTY5ZTJcdTZhMWJcdTZhMWRcdTY5ZmVcdTZhMjdcdTY5ZjJcdTY5ZWVcdTZhMTRcdTY5ZjdcdTY5ZTdcdTZhNDBcdTZhMDhcdTY5ZTZcdTY5ZmJcdTZhMGRcdTY5ZmNcdTY5ZWJcdTZhMDlcdTZhMDRcdTZhMThcdTZhMjVcdTZhMGZcdTY5ZjZcdTZhMjZcdTZhMDdcdTY5ZjRcdTZh'@; put 'MTZcdTZiNTFcdTZiYTVcdTZiYTNcdTZiYTJcdTZiYTZcdTZjMDFcdTZjMDBcdTZiZmZcdTZjMDJcdTZmNDFcdTZmMjZcdTZmN2VcdTZmODdcdTZmYzZcdTZmOTIiXSxbImU2NDAiLCJcdTZmOGRcdTZmODlcdTZmOGNcdTZmNjJcdTZmNGZcdTZmODVcdTZmNWFcdTZmOTZcdTZmNzZcdTZmNmNc'@; put 'dTZmODJcdTZmNTVcdTZmNzJcdTZmNTJcdTZmNTBcdTZmNTdcdTZmOTRcdTZmOTNcdTZmNWRcdTZmMDBcdTZmNjFcdTZmNmJcdTZmN2RcdTZmNjdcdTZmOTBcdTZmNTNcdTZmOGJcdTZmNjlcdTZmN2ZcdTZmOTVcdTZmNjNcdTZmNzdcdTZmNmFcdTZmN2JcdTcxYjJcdTcxYWZcdTcxOWJcdTcx'@; put 'YjBcdTcxYTBcdTcxOWFcdTcxYTlcdTcxYjVcdTcxOWRcdTcxYTVcdTcxOWVcdTcxYTRcdTcxYTFcdTcxYWFcdTcxOWNcdTcxYTdcdTcxYjNcdTcyOThcdTcyOWFcdTczNThcdTczNTJcdTczNWVcdTczNWZcdTczNjBcdTczNWRcdTczNWJcdTczNjFcdTczNWFcdTczNTkiXSxbImU2YTEiLCJc'@; put 'dTczNjJcdTc0ODdcdTc0ODlcdTc0OGFcdTc0ODZcdTc0ODFcdTc0N2RcdTc0ODVcdTc0ODhcdTc0N2NcdTc0NzlcdTc1MDhcdTc1MDdcdTc1N2VcdTc2MjVcdTc2MWVcdTc2MTlcdTc2MWRcdTc2MWNcdTc2MjNcdTc2MWFcdTc2MjhcdTc2MWJcdTc2OWNcdTc2OWRcdTc2OWVcdTc2OWJcdTc3'@; put 'OGRcdTc3OGZcdTc3ODlcdTc3ODhcdTc4Y2RcdTc4YmJcdTc4Y2ZcdTc4Y2NcdTc4ZDFcdTc4Y2VcdTc4ZDRcdTc4YzhcdTc4YzNcdTc4YzRcdTc4YzlcdTc5OWFcdTc5YTFcdTc5YTBcdTc5OWNcdTc5YTJcdTc5OWJcdTZiNzZcdTdhMzlcdTdhYjJcdTdhYjRcdTdhYjNcdTdiYjdcdTdiY2Jc'@; put 'dTdiYmVcdTdiYWNcdTdiY2VcdTdiYWZcdTdiYjlcdTdiY2FcdTdiYjVcdTdjYzVcdTdjYzhcdTdjY2NcdTdjY2JcdTdkZjdcdTdkZGJcdTdkZWFcdTdkZTdcdTdkZDdcdTdkZTFcdTdlMDNcdTdkZmFcdTdkZTZcdTdkZjZcdTdkZjFcdTdkZjBcdTdkZWVcdTdkZGZcdTdmNzZcdTdmYWNcdTdm'@; put 'YjBcdTdmYWRcdTdmZWRcdTdmZWJcdTdmZWFcdTdmZWNcdTdmZTZcdTdmZThcdTgwNjRcdTgwNjdcdTgxYTNcdTgxOWYiXSxbImU3NDAiLCJcdTgxOWVcdTgxOTVcdTgxYTJcdTgxOTlcdTgxOTdcdTgyMTZcdTgyNGZcdTgyNTNcdTgyNTJcdTgyNTBcdTgyNGVcdTgyNTFcdTg1MjRcdTg1M2Jc'@; put 'dTg1MGZcdTg1MDBcdTg1MjlcdTg1MGVcdTg1MDlcdTg1MGRcdTg1MWZcdTg1MGFcdTg1MjdcdTg1MWNcdTg0ZmJcdTg1MmJcdTg0ZmFcdTg1MDhcdTg1MGNcdTg0ZjRcdTg1MmFcdTg0ZjJcdTg1MTVcdTg0ZjdcdTg0ZWJcdTg0ZjNcdTg0ZmNcdTg1MTJcdTg0ZWFcdTg0ZTlcdTg1MTZcdTg0'@; put 'ZmVcdTg1MjhcdTg1MWRcdTg1MmVcdTg1MDJcdTg0ZmRcdTg1MWVcdTg0ZjZcdTg1MzFcdTg1MjZcdTg0ZTdcdTg0ZThcdTg0ZjBcdTg0ZWZcdTg0ZjlcdTg1MThcdTg1MjBcdTg1MzBcdTg1MGJcdTg1MTlcdTg1MmZcdTg2NjIiXSxbImU3YTEiLCJcdTg3NTZcdTg3NjNcdTg3NjRcdTg3Nzdc'@; put 'dTg3ZTFcdTg3NzNcdTg3NThcdTg3NTRcdTg3NWJcdTg3NTJcdTg3NjFcdTg3NWFcdTg3NTFcdTg3NWVcdTg3NmRcdTg3NmFcdTg3NTBcdTg3NGVcdTg3NWZcdTg3NWRcdTg3NmZcdTg3NmNcdTg3N2FcdTg3NmVcdTg3NWNcdTg3NjVcdTg3NGZcdTg3N2JcdTg3NzVcdTg3NjJcdTg3NjdcdTg3'@; put 'NjlcdTg4NWFcdTg5MDVcdTg5MGNcdTg5MTRcdTg5MGJcdTg5MTdcdTg5MThcdTg5MTlcdTg5MDZcdTg5MTZcdTg5MTFcdTg5MGVcdTg5MDlcdTg5YTJcdTg5YTRcdTg5YTNcdTg5ZWRcdTg5ZjBcdTg5ZWNcdThhY2ZcdThhYzZcdThhYjhcdThhZDNcdThhZDFcdThhZDRcdThhZDVcdThhYmJc'@; put 'dThhZDdcdThhYmVcdThhYzBcdThhYzVcdThhZDhcdThhYzNcdThhYmFcdThhYmRcdThhZDlcdThjM2VcdThjNGRcdThjOGZcdThjZTVcdThjZGZcdThjZDlcdThjZThcdThjZGFcdThjZGRcdThjZTdcdThkYTBcdThkOWNcdThkYTFcdThkOWJcdThlMjBcdThlMjNcdThlMjVcdThlMjRcdThl'@; put 'MmVcdThlMTVcdThlMWJcdThlMTZcdThlMTFcdThlMTlcdThlMjZcdThlMjciXSxbImU4NDAiLCJcdThlMTRcdThlMTJcdThlMThcdThlMTNcdThlMWNcdThlMTdcdThlMWFcdThmMmNcdThmMjRcdThmMThcdThmMWFcdThmMjBcdThmMjNcdThmMTZcdThmMTdcdTkwNzNcdTkwNzBcdTkwNmZc'@; put 'dTkwNjdcdTkwNmJcdTkxMmZcdTkxMmJcdTkxMjlcdTkxMmFcdTkxMzJcdTkxMjZcdTkxMmVcdTkxODVcdTkxODZcdTkxOGFcdTkxODFcdTkxODJcdTkxODRcdTkxODBcdTkyZDBcdTkyYzNcdTkyYzRcdTkyYzBcdTkyZDlcdTkyYjZcdTkyY2ZcdTkyZjFcdTkyZGZcdTkyZDhcdTkyZTlcdTky'@; put 'ZDdcdTkyZGRcdTkyY2NcdTkyZWZcdTkyYzJcdTkyZThcdTkyY2FcdTkyYzhcdTkyY2VcdTkyZTZcdTkyY2RcdTkyZDVcdTkyYzlcdTkyZTBcdTkyZGVcdTkyZTdcdTkyZDFcdTkyZDMiXSxbImU4YTEiLCJcdTkyYjVcdTkyZTFcdTkyYzZcdTkyYjRcdTk1N2NcdTk1YWNcdTk1YWJcdTk1YWVc'@; put 'dTk1YjBcdTk2YTRcdTk2YTJcdTk2ZDNcdTk3MDVcdTk3MDhcdTk3MDJcdTk3NWFcdTk3OGFcdTk3OGVcdTk3ODhcdTk3ZDBcdTk3Y2ZcdTk4MWVcdTk4MWRcdTk4MjZcdTk4MjlcdTk4MjhcdTk4MjBcdTk4MWJcdTk4MjdcdTk4YjJcdTk5MDhcdTk4ZmFcdTk5MTFcdTk5MTRcdTk5MTZcdTk5'@; put 'MTdcdTk5MTVcdTk5ZGNcdTk5Y2RcdTk5Y2ZcdTk5ZDNcdTk5ZDRcdTk5Y2VcdTk5YzlcdTk5ZDZcdTk5ZDhcdTk5Y2JcdTk5ZDdcdTk5Y2NcdTlhYjNcdTlhZWNcdTlhZWJcdTlhZjNcdTlhZjJcdTlhZjFcdTliNDZcdTliNDNcdTliNjdcdTliNzRcdTliNzFcdTliNjZcdTliNzZcdTliNzVc'@; put 'dTliNzBcdTliNjhcdTliNjRcdTliNmNcdTljZmNcdTljZmFcdTljZmRcdTljZmZcdTljZjdcdTlkMDdcdTlkMDBcdTljZjlcdTljZmJcdTlkMDhcdTlkMDVcdTlkMDRcdTllODNcdTllZDNcdTlmMGZcdTlmMTBcdTUxMWNcdTUxMTNcdTUxMTdcdTUxMWFcdTUxMTFcdTUxZGVcdTUzMzRcdTUz'@; put 'ZTFcdTU2NzBcdTU2NjBcdTU2NmUiXSxbImU5NDAiLCJcdTU2NzNcdTU2NjZcdTU2NjNcdTU2NmRcdTU2NzJcdTU2NWVcdTU2NzdcdTU3MWNcdTU3MWJcdTU4YzhcdTU4YmRcdTU4YzlcdTU4YmZcdTU4YmFcdTU4YzJcdTU4YmNcdTU4YzZcdTViMTdcdTViMTlcdTViMWJcdTViMjFcdTViMTRc'@; put 'dTViMTNcdTViMTBcdTViMTZcdTViMjhcdTViMWFcdTViMjBcdTViMWVcdTViZWZcdTVkYWNcdTVkYjFcdTVkYTlcdTVkYTdcdTVkYjVcdTVkYjBcdTVkYWVcdTVkYWFcdTVkYThcdTVkYjJcdTVkYWRcdTVkYWZcdTVkYjRcdTVlNjdcdTVlNjhcdTVlNjZcdTVlNmZcdTVlZTlcdTVlZTdcdTVl'@; put 'ZTZcdTVlZThcdTVlZTVcdTVmNGJcdTVmYmNcdTYxOWRcdTYxYThcdTYxOTZcdTYxYzVcdTYxYjRcdTYxYzZcdTYxYzFcdTYxY2NcdTYxYmEiXSxbImU5YTEiLCJcdTYxYmZcdTYxYjhcdTYxOGNcdTY0ZDdcdTY0ZDZcdTY0ZDBcdTY0Y2ZcdTY0YzlcdTY0YmRcdTY0ODlcdTY0YzNcdTY0ZGJc'@; put 'dTY0ZjNcdTY0ZDlcdTY1MzNcdTY1N2ZcdTY1N2NcdTY1YTJcdTY2YzhcdTY2YmVcdTY2YzBcdTY2Y2FcdTY2Y2JcdTY2Y2ZcdTY2YmRcdTY2YmJcdTY2YmFcdTY2Y2NcdTY3MjNcdTZhMzRcdTZhNjZcdTZhNDlcdTZhNjdcdTZhMzJcdTZhNjhcdTZhM2VcdTZhNWRcdTZhNmRcdTZhNzZcdTZh'@; put 'NWJcdTZhNTFcdTZhMjhcdTZhNWFcdTZhM2JcdTZhM2ZcdTZhNDFcdTZhNmFcdTZhNjRcdTZhNTBcdTZhNGZcdTZhNTRcdTZhNmZcdTZhNjlcdTZhNjBcdTZhM2NcdTZhNWVcdTZhNTZcdTZhNTVcdTZhNGRcdTZhNGVcdTZhNDZcdTZiNTVcdTZiNTRcdTZiNTZcdTZiYTdcdTZiYWFcdTZiYWJc'@; put 'dTZiYzhcdTZiYzdcdTZjMDRcdTZjMDNcdTZjMDZcdTZmYWRcdTZmY2JcdTZmYTNcdTZmYzdcdTZmYmNcdTZmY2VcdTZmYzhcdTZmNWVcdTZmYzRcdTZmYmRcdTZmOWVcdTZmY2FcdTZmYThcdTcwMDRcdTZmYTVcdTZmYWVcdTZmYmFcdTZmYWNcdTZmYWFcdTZmY2ZcdTZmYmZcdTZmYjgiXSxb'@; put 'ImVhNDAiLCJcdTZmYTJcdTZmYzlcdTZmYWJcdTZmY2RcdTZmYWZcdTZmYjJcdTZmYjBcdTcxYzVcdTcxYzJcdTcxYmZcdTcxYjhcdTcxZDZcdTcxYzBcdTcxYzFcdTcxY2JcdTcxZDRcdTcxY2FcdTcxYzdcdTcxY2ZcdTcxYmRcdTcxZDhcdTcxYmNcdTcxYzZcdTcxZGFcdTcxZGJcdTcyOWRc'@; put 'dTcyOWVcdTczNjlcdTczNjZcdTczNjdcdTczNmNcdTczNjVcdTczNmJcdTczNmFcdTc0N2ZcdTc0OWFcdTc0YTBcdTc0OTRcdTc0OTJcdTc0OTVcdTc0YTFcdTc1MGJcdTc1ODBcdTc2MmZcdTc2MmRcdTc2MzFcdTc2M2RcdTc2MzNcdTc2M2NcdTc2MzVcdTc2MzJcdTc2MzBcdTc2YmJcdTc2'@; put 'ZTZcdTc3OWFcdTc3OWRcdTc3YTFcdTc3OWNcdTc3OWJcdTc3YTJcdTc3YTNcdTc3OTVcdTc3OTkiXSxbImVhYTEiLCJcdTc3OTdcdTc4ZGRcdTc4ZTlcdTc4ZTVcdTc4ZWFcdTc4ZGVcdTc4ZTNcdTc4ZGJcdTc4ZTFcdTc4ZTJcdTc4ZWRcdTc4ZGZcdTc4ZTBcdTc5YTRcdTdhNDRcdTdhNDhc'@; put 'dTdhNDdcdTdhYjZcdTdhYjhcdTdhYjVcdTdhYjFcdTdhYjdcdTdiZGVcdTdiZTNcdTdiZTdcdTdiZGRcdTdiZDVcdTdiZTVcdTdiZGFcdTdiZThcdTdiZjlcdTdiZDRcdTdiZWFcdTdiZTJcdTdiZGNcdTdiZWJcdTdiZDhcdTdiZGZcdTdjZDJcdTdjZDRcdTdjZDdcdTdjZDBcdTdjZDFcdTdl'@; put 'MTJcdTdlMjFcdTdlMTdcdTdlMGNcdTdlMWZcdTdlMjBcdTdlMTNcdTdlMGVcdTdlMWNcdTdlMTVcdTdlMWFcdTdlMjJcdTdlMGJcdTdlMGZcdTdlMTZcdTdlMGRcdTdlMTRcdTdlMjVcdTdlMjRcdTdmNDNcdTdmN2JcdTdmN2NcdTdmN2FcdTdmYjFcdTdmZWZcdTgwMmFcdTgwMjlcdTgwNmNc'@; put 'dTgxYjFcdTgxYTZcdTgxYWVcdTgxYjlcdTgxYjVcdTgxYWJcdTgxYjBcdTgxYWNcdTgxYjRcdTgxYjJcdTgxYjdcdTgxYTdcdTgxZjJcdTgyNTVcdTgyNTZcdTgyNTdcdTg1NTZcdTg1NDVcdTg1NmJcdTg1NGRcdTg1NTNcdTg1NjFcdTg1NTgiXSxbImViNDAiLCJcdTg1NDBcdTg1NDZcdTg1'@; put 'NjRcdTg1NDFcdTg1NjJcdTg1NDRcdTg1NTFcdTg1NDdcdTg1NjNcdTg1M2VcdTg1NWJcdTg1NzFcdTg1NGVcdTg1NmVcdTg1NzVcdTg1NTVcdTg1NjdcdTg1NjBcdTg1OGNcdTg1NjZcdTg1NWRcdTg1NTRcdTg1NjVcdTg1NmNcdTg2NjNcdTg2NjVcdTg2NjRcdTg3OWJcdTg3OGZcdTg3OTdc'@; put 'dTg3OTNcdTg3OTJcdTg3ODhcdTg3ODFcdTg3OTZcdTg3OThcdTg3NzlcdTg3ODdcdTg3YTNcdTg3ODVcdTg3OTBcdTg3OTFcdTg3OWRcdTg3ODRcdTg3OTRcdTg3OWNcdTg3OWFcdTg3ODlcdTg5MWVcdTg5MjZcdTg5MzBcdTg5MmRcdTg5MmVcdTg5MjdcdTg5MzFcdTg5MjJcdTg5MjlcdTg5'@; put 'MjNcdTg5MmZcdTg5MmNcdTg5MWZcdTg5ZjFcdThhZTAiXSxbImViYTEiLCJcdThhZTJcdThhZjJcdThhZjRcdThhZjVcdThhZGRcdThiMTRcdThhZTRcdThhZGZcdThhZjBcdThhYzhcdThhZGVcdThhZTFcdThhZThcdThhZmZcdThhZWZcdThhZmJcdThjOTFcdThjOTJcdThjOTBcdThjZjVc'@; put 'dThjZWVcdThjZjFcdThjZjBcdThjZjNcdThkNmNcdThkNmVcdThkYTVcdThkYTdcdThlMzNcdThlM2VcdThlMzhcdThlNDBcdThlNDVcdThlMzZcdThlM2NcdThlM2RcdThlNDFcdThlMzBcdThlM2ZcdThlYmRcdThmMzZcdThmMmVcdThmMzVcdThmMzJcdThmMzlcdThmMzdcdThmMzRcdTkw'@; put 'NzZcdTkwNzlcdTkwN2JcdTkwODZcdTkwZmFcdTkxMzNcdTkxMzVcdTkxMzZcdTkxOTNcdTkxOTBcdTkxOTFcdTkxOGRcdTkxOGZcdTkzMjdcdTkzMWVcdTkzMDhcdTkzMWZcdTkzMDZcdTkzMGZcdTkzN2FcdTkzMzhcdTkzM2NcdTkzMWJcdTkzMjNcdTkzMTJcdTkzMDFcdTkzNDZcdTkzMmRc'@; put 'dTkzMGVcdTkzMGRcdTkyY2JcdTkzMWRcdTkyZmFcdTkzMjVcdTkzMTNcdTkyZjlcdTkyZjdcdTkzMzRcdTkzMDJcdTkzMjRcdTkyZmZcdTkzMjlcdTkzMzlcdTkzMzVcdTkzMmFcdTkzMTRcdTkzMGMiXSxbImVjNDAiLCJcdTkzMGJcdTkyZmVcdTkzMDlcdTkzMDBcdTkyZmJcdTkzMTZcdTk1'@; put 'YmNcdTk1Y2RcdTk1YmVcdTk1YjlcdTk1YmFcdTk1YjZcdTk1YmZcdTk1YjVcdTk1YmRcdTk2YTlcdTk2ZDRcdTk3MGJcdTk3MTJcdTk3MTBcdTk3OTlcdTk3OTdcdTk3OTRcdTk3ZjBcdTk3ZjhcdTk4MzVcdTk4MmZcdTk4MzJcdTk5MjRcdTk5MWZcdTk5MjdcdTk5MjlcdTk5OWVcdTk5ZWVc'@; put 'dTk5ZWNcdTk5ZTVcdTk5ZTRcdTk5ZjBcdTk5ZTNcdTk5ZWFcdTk5ZTlcdTk5ZTdcdTlhYjlcdTlhYmZcdTlhYjRcdTlhYmJcdTlhZjZcdTlhZmFcdTlhZjlcdTlhZjdcdTliMzNcdTliODBcdTliODVcdTliODdcdTliN2NcdTliN2VcdTliN2JcdTliODJcdTliOTNcdTliOTJcdTliOTBcdTli'@; put 'N2FcdTliOTUiXSxbImVjYTEiLCJcdTliN2RcdTliODhcdTlkMjVcdTlkMTdcdTlkMjBcdTlkMWVcdTlkMTRcdTlkMjlcdTlkMWRcdTlkMThcdTlkMjJcdTlkMTBcdTlkMTlcdTlkMWZcdTllODhcdTllODZcdTllODdcdTllYWVcdTllYWRcdTllZDVcdTllZDZcdTllZmFcdTlmMTJcdTlmM2Rc'@; put 'dTUxMjZcdTUxMjVcdTUxMjJcdTUxMjRcdTUxMjBcdTUxMjlcdTUyZjRcdTU2OTNcdTU2OGNcdTU2OGRcdTU2ODZcdTU2ODRcdTU2ODNcdTU2N2VcdTU2ODJcdTU2N2ZcdTU2ODFcdTU4ZDZcdTU4ZDRcdTU4Y2ZcdTU4ZDJcdTViMmRcdTViMjVcdTViMzJcdTViMjNcdTViMmNcdTViMjdcdTVi'@; put 'MjZcdTViMmZcdTViMmVcdTViN2JcdTViZjFcdTViZjJcdTVkYjdcdTVlNmNcdTVlNmFcdTVmYmVcdTVmYmJcdTYxYzNcdTYxYjVcdTYxYmNcdTYxZTdcdTYxZTBcdTYxZTVcdTYxZTRcdTYxZThcdTYxZGVcdTY0ZWZcdTY0ZTlcdTY0ZTNcdTY0ZWJcdTY0ZTRcdTY0ZThcdTY1ODFcdTY1ODBc'@; put 'dTY1YjZcdTY1ZGFcdTY2ZDJcdTZhOGRcdTZhOTZcdTZhODFcdTZhYTVcdTZhODlcdTZhOWZcdTZhOWJcdTZhYTFcdTZhOWVcdTZhODdcdTZhOTNcdTZhOGUiXSxbImVkNDAiLCJcdTZhOTVcdTZhODNcdTZhYThcdTZhYTRcdTZhOTFcdTZhN2ZcdTZhYTZcdTZhOWFcdTZhODVcdTZhOGNcdTZh'@; put 'OTJcdTZiNWJcdTZiYWRcdTZjMDlcdTZmY2NcdTZmYTlcdTZmZjRcdTZmZDRcdTZmZTNcdTZmZGNcdTZmZWRcdTZmZTdcdTZmZTZcdTZmZGVcdTZmZjJcdTZmZGRcdTZmZTJcdTZmZThcdTcxZTFcdTcxZjFcdTcxZThcdTcxZjJcdTcxZTRcdTcxZjBcdTcxZTJcdTczNzNcdTczNmVcdTczNmZc'@; put 'dTc0OTdcdTc0YjJcdTc0YWJcdTc0OTBcdTc0YWFcdTc0YWRcdTc0YjFcdTc0YTVcdTc0YWZcdTc1MTBcdTc1MTFcdTc1MTJcdTc1MGZcdTc1ODRcdTc2NDNcdTc2NDhcdTc2NDlcdTc2NDdcdTc2YTRcdTc2ZTlcdTc3YjVcdTc3YWJcdTc3YjJcdTc3YjdcdTc3YjYiXSxbImVkYTEiLCJcdTc3'@; put 'YjRcdTc3YjFcdTc3YThcdTc3ZjBcdTc4ZjNcdTc4ZmRcdTc5MDJcdTc4ZmJcdTc4ZmNcdTc4ZjJcdTc5MDVcdTc4ZjlcdTc4ZmVcdTc5MDRcdTc5YWJcdTc5YThcdTdhNWNcdTdhNWJcdTdhNTZcdTdhNThcdTdhNTRcdTdhNWFcdTdhYmVcdTdhYzBcdTdhYzFcdTdjMDVcdTdjMGZcdTdiZjJc'@; put 'dTdjMDBcdTdiZmZcdTdiZmJcdTdjMGVcdTdiZjRcdTdjMGJcdTdiZjNcdTdjMDJcdTdjMDlcdTdjMDNcdTdjMDFcdTdiZjhcdTdiZmRcdTdjMDZcdTdiZjBcdTdiZjFcdTdjMTBcdTdjMGFcdTdjZThcdTdlMmRcdTdlM2NcdTdlNDJcdTdlMzNcdTk4NDhcdTdlMzhcdTdlMmFcdTdlNDlcdTdl'@; put 'NDBcdTdlNDdcdTdlMjlcdTdlNGNcdTdlMzBcdTdlM2JcdTdlMzZcdTdlNDRcdTdlM2FcdTdmNDVcdTdmN2ZcdTdmN2VcdTdmN2RcdTdmZjRcdTdmZjJcdTgwMmNcdTgxYmJcdTgxYzRcdTgxY2NcdTgxY2FcdTgxYzVcdTgxYzdcdTgxYmNcdTgxZTlcdTgyNWJcdTgyNWFcdTgyNWNcdTg1ODNc'@; put 'dTg1ODBcdTg1OGZcdTg1YTdcdTg1OTVcdTg1YTBcdTg1OGJcdTg1YTNcdTg1N2JcdTg1YTRcdTg1OWFcdTg1OWUiXSxbImVlNDAiLCJcdTg1NzdcdTg1N2NcdTg1ODlcdTg1YTFcdTg1N2FcdTg1NzhcdTg1NTdcdTg1OGVcdTg1OTZcdTg1ODZcdTg1OGRcdTg1OTlcdTg1OWRcdTg1ODFcdTg1'@; put 'YTJcdTg1ODJcdTg1ODhcdTg1ODVcdTg1NzlcdTg1NzZcdTg1OThcdTg1OTBcdTg1OWZcdTg2NjhcdTg3YmVcdTg3YWFcdTg3YWRcdTg3YzVcdTg3YjBcdTg3YWNcdTg3YjlcdTg3YjVcdTg3YmNcdTg3YWVcdTg3YzlcdTg3YzNcdTg3YzJcdTg3Y2NcdTg3YjdcdTg3YWZcdTg3YzRcdTg3Y2Fc'@; put 'dTg3YjRcdTg3YjZcdTg3YmZcdTg3YjhcdTg3YmRcdTg3ZGVcdTg3YjJcdTg5MzVcdTg5MzNcdTg5M2NcdTg5M2VcdTg5NDFcdTg5NTJcdTg5MzdcdTg5NDJcdTg5YWRcdTg5YWZcdTg5YWVcdTg5ZjJcdTg5ZjNcdThiMWUiXSxbImVlYTEiLCJcdThiMThcdThiMTZcdThiMTFcdThiMDVcdThi'@; put 'MGJcdThiMjJcdThiMGZcdThiMTJcdThiMTVcdThiMDdcdThiMGRcdThiMDhcdThiMDZcdThiMWNcdThiMTNcdThiMWFcdThjNGZcdThjNzBcdThjNzJcdThjNzFcdThjNmZcdThjOTVcdThjOTRcdThjZjlcdThkNmZcdThlNGVcdThlNGRcdThlNTNcdThlNTBcdThlNGNcdThlNDdcdThmNDNc'@; put 'dThmNDBcdTkwODVcdTkwN2VcdTkxMzhcdTkxOWFcdTkxYTJcdTkxOWJcdTkxOTlcdTkxOWZcdTkxYTFcdTkxOWRcdTkxYTBcdTkzYTFcdTkzODNcdTkzYWZcdTkzNjRcdTkzNTZcdTkzNDdcdTkzN2NcdTkzNThcdTkzNWNcdTkzNzZcdTkzNDlcdTkzNTBcdTkzNTFcdTkzNjBcdTkzNmRcdTkz'@; put 'OGZcdTkzNGNcdTkzNmFcdTkzNzlcdTkzNTdcdTkzNTVcdTkzNTJcdTkzNGZcdTkzNzFcdTkzNzdcdTkzN2JcdTkzNjFcdTkzNWVcdTkzNjNcdTkzNjdcdTkzODBcdTkzNGVcdTkzNTlcdTk1YzdcdTk1YzBcdTk1YzlcdTk1YzNcdTk1YzVcdTk1YjdcdTk2YWVcdTk2YjBcdTk2YWNcdTk3MjBc'@; put 'dTk3MWZcdTk3MThcdTk3MWRcdTk3MTlcdTk3OWFcdTk3YTFcdTk3OWMiXSxbImVmNDAiLCJcdTk3OWVcdTk3OWRcdTk3ZDVcdTk3ZDRcdTk3ZjFcdTk4NDFcdTk4NDRcdTk4NGFcdTk4NDlcdTk4NDVcdTk4NDNcdTk5MjVcdTk5MmJcdTk5MmNcdTk5MmFcdTk5MzNcdTk5MzJcdTk5MmZcdTk5'@; put 'MmRcdTk5MzFcdTk5MzBcdTk5OThcdTk5YTNcdTk5YTFcdTlhMDJcdTk5ZmFcdTk5ZjRcdTk5ZjdcdTk5ZjlcdTk5ZjhcdTk5ZjZcdTk5ZmJcdTk5ZmRcdTk5ZmVcdTk5ZmNcdTlhMDNcdTlhYmVcdTlhZmVcdTlhZmRcdTliMDFcdTlhZmNcdTliNDhcdTliOWFcdTliYThcdTliOWVcdTliOWJc'@; put 'dTliYTZcdTliYTFcdTliYTVcdTliYTRcdTliODZcdTliYTJcdTliYTBcdTliYWZcdTlkMzNcdTlkNDFcdTlkNjdcdTlkMzZcdTlkMmVcdTlkMmZcdTlkMzFcdTlkMzhcdTlkMzAiXSxbImVmYTEiLCJcdTlkNDVcdTlkNDJcdTlkNDNcdTlkM2VcdTlkMzdcdTlkNDBcdTlkM2RcdTdmZjVcdTlk'@; put 'MmRcdTllOGFcdTllODlcdTllOGRcdTllYjBcdTllYzhcdTllZGFcdTllZmJcdTllZmZcdTlmMjRcdTlmMjNcdTlmMjJcdTlmNTRcdTlmYTBcdTUxMzFcdTUxMmRcdTUxMmVcdTU2OThcdTU2OWNcdTU2OTdcdTU2OWFcdTU2OWRcdTU2OTlcdTU5NzBcdTViM2NcdTVjNjlcdTVjNmFcdTVkYzBc'@; put 'dTVlNmRcdTVlNmVcdTYxZDhcdTYxZGZcdTYxZWRcdTYxZWVcdTYxZjFcdTYxZWFcdTYxZjBcdTYxZWJcdTYxZDZcdTYxZTlcdTY0ZmZcdTY1MDRcdTY0ZmRcdTY0ZjhcdTY1MDFcdTY1MDNcdTY0ZmNcdTY1OTRcdTY1ZGJcdTY2ZGFcdTY2ZGJcdTY2ZDhcdTZhYzVcdTZhYjlcdTZhYmRcdTZh'@; put 'ZTFcdTZhYzZcdTZhYmFcdTZhYjZcdTZhYjdcdTZhYzdcdTZhYjRcdTZhYWRcdTZiNWVcdTZiYzlcdTZjMGJcdTcwMDdcdTcwMGNcdTcwMGRcdTcwMDFcdTcwMDVcdTcwMTRcdTcwMGVcdTZmZmZcdTcwMDBcdTZmZmJcdTcwMjZcdTZmZmNcdTZmZjdcdTcwMGFcdTcyMDFcdTcxZmZcdTcxZjlc'@; put 'dTcyMDNcdTcxZmRcdTczNzYiXSxbImYwNDAiLCJcdTc0YjhcdTc0YzBcdTc0YjVcdTc0YzFcdTc0YmVcdTc0YjZcdTc0YmJcdTc0YzJcdTc1MTRcdTc1MTNcdTc2NWNcdTc2NjRcdTc2NTlcdTc2NTBcdTc2NTNcdTc2NTdcdTc2NWFcdTc2YTZcdTc2YmRcdTc2ZWNcdTc3YzJcdTc3YmFcdTc4'@; put 'ZmZcdTc5MGNcdTc5MTNcdTc5MTRcdTc5MDlcdTc5MTBcdTc5MTJcdTc5MTFcdTc5YWRcdTc5YWNcdTdhNWZcdTdjMWNcdTdjMjlcdTdjMTlcdTdjMjBcdTdjMWZcdTdjMmRcdTdjMWRcdTdjMjZcdTdjMjhcdTdjMjJcdTdjMjVcdTdjMzBcdTdlNWNcdTdlNTBcdTdlNTZcdTdlNjNcdTdlNThc'@; put 'dTdlNjJcdTdlNWZcdTdlNTFcdTdlNjBcdTdlNTdcdTdlNTNcdTdmYjVcdTdmYjNcdTdmZjdcdTdmZjhcdTgwNzVcdTgxZDFcdTgxZDIiXSxbImYwYTEiLCJcdTgxZDBcdTgyNWZcdTgyNWVcdTg1YjRcdTg1YzZcdTg1YzBcdTg1YzNcdTg1YzJcdTg1YjNcdTg1YjVcdTg1YmRcdTg1YzdcdTg1'@; put 'YzRcdTg1YmZcdTg1Y2JcdTg1Y2VcdTg1YzhcdTg1YzVcdTg1YjFcdTg1YjZcdTg1ZDJcdTg2MjRcdTg1YjhcdTg1YjdcdTg1YmVcdTg2NjlcdTg3ZTdcdTg3ZTZcdTg3ZTJcdTg3ZGJcdTg3ZWJcdTg3ZWFcdTg3ZTVcdTg3ZGZcdTg3ZjNcdTg3ZTRcdTg3ZDRcdTg3ZGNcdTg3ZDNcdTg3ZWRc'@; put 'dTg3ZDhcdTg3ZTNcdTg3YTRcdTg3ZDdcdTg3ZDlcdTg4MDFcdTg3ZjRcdTg3ZThcdTg3ZGRcdTg5NTNcdTg5NGJcdTg5NGZcdTg5NGNcdTg5NDZcdTg5NTBcdTg5NTFcdTg5NDlcdThiMmFcdThiMjdcdThiMjNcdThiMzNcdThiMzBcdThiMzVcdThiNDdcdThiMmZcdThiM2NcdThiM2VcdThi'@; put 'MzFcdThiMjVcdThiMzdcdThiMjZcdThiMzZcdThiMmVcdThiMjRcdThiM2JcdThiM2RcdThiM2FcdThjNDJcdThjNzVcdThjOTlcdThjOThcdThjOTdcdThjZmVcdThkMDRcdThkMDJcdThkMDBcdThlNWNcdThlNjJcdThlNjBcdThlNTdcdThlNTZcdThlNWVcdThlNjVcdThlNjciXSxbImYx'@; put 'NDAiLCJcdThlNWJcdThlNWFcdThlNjFcdThlNWRcdThlNjlcdThlNTRcdThmNDZcdThmNDdcdThmNDhcdThmNGJcdTkxMjhcdTkxM2FcdTkxM2JcdTkxM2VcdTkxYThcdTkxYTVcdTkxYTdcdTkxYWZcdTkxYWFcdTkzYjVcdTkzOGNcdTkzOTJcdTkzYjdcdTkzOWJcdTkzOWRcdTkzODlcdTkz'@; put 'YTdcdTkzOGVcdTkzYWFcdTkzOWVcdTkzYTZcdTkzOTVcdTkzODhcdTkzOTlcdTkzOWZcdTkzOGRcdTkzYjFcdTkzOTFcdTkzYjJcdTkzYTRcdTkzYThcdTkzYjRcdTkzYTNcdTkzYTVcdTk1ZDJcdTk1ZDNcdTk1ZDFcdTk2YjNcdTk2ZDdcdTk2ZGFcdTVkYzJcdTk2ZGZcdTk2ZDhcdTk2ZGRc'@; put 'dTk3MjNcdTk3MjJcdTk3MjVcdTk3YWNcdTk3YWVcdTk3YThcdTk3YWJcdTk3YTRcdTk3YWEiXSxbImYxYTEiLCJcdTk3YTJcdTk3YTVcdTk3ZDdcdTk3ZDlcdTk3ZDZcdTk3ZDhcdTk3ZmFcdTk4NTBcdTk4NTFcdTk4NTJcdTk4YjhcdTk5NDFcdTk5M2NcdTk5M2FcdTlhMGZcdTlhMGJcdTlh'@; put 'MDlcdTlhMGRcdTlhMDRcdTlhMTFcdTlhMGFcdTlhMDVcdTlhMDdcdTlhMDZcdTlhYzBcdTlhZGNcdTliMDhcdTliMDRcdTliMDVcdTliMjlcdTliMzVcdTliNGFcdTliNGNcdTliNGJcdTliYzdcdTliYzZcdTliYzNcdTliYmZcdTliYzFcdTliYjVcdTliYjhcdTliZDNcdTliYjZcdTliYzRc'@; put 'dTliYjlcdTliYmRcdTlkNWNcdTlkNTNcdTlkNGZcdTlkNGFcdTlkNWJcdTlkNGJcdTlkNTlcdTlkNTZcdTlkNGNcdTlkNTdcdTlkNTJcdTlkNTRcdTlkNWZcdTlkNThcdTlkNWFcdTllOGVcdTllOGNcdTllZGZcdTlmMDFcdTlmMDBcdTlmMTZcdTlmMjVcdTlmMmJcdTlmMmFcdTlmMjlcdTlm'@; put 'MjhcdTlmNGNcdTlmNTVcdTUxMzRcdTUxMzVcdTUyOTZcdTUyZjdcdTUzYjRcdTU2YWJcdTU2YWRcdTU2YTZcdTU2YTdcdTU2YWFcdTU2YWNcdTU4ZGFcdTU4ZGRcdTU4ZGJcdTU5MTJcdTViM2RcdTViM2VcdTViM2ZcdTVkYzNcdTVlNzAiXSxbImYyNDAiLCJcdTVmYmZcdTYxZmJcdTY1MDdc'@; put 'dTY1MTBcdTY1MGRcdTY1MDlcdTY1MGNcdTY1MGVcdTY1ODRcdTY1ZGVcdTY1ZGRcdTY2ZGVcdTZhZTdcdTZhZTBcdTZhY2NcdTZhZDFcdTZhZDlcdTZhY2JcdTZhZGZcdTZhZGNcdTZhZDBcdTZhZWJcdTZhY2ZcdTZhY2RcdTZhZGVcdTZiNjBcdTZiYjBcdTZjMGNcdTcwMTlcdTcwMjdcdTcw'@; put 'MjBcdTcwMTZcdTcwMmJcdTcwMjFcdTcwMjJcdTcwMjNcdTcwMjlcdTcwMTdcdTcwMjRcdTcwMWNcdTcwMmFcdTcyMGNcdTcyMGFcdTcyMDdcdTcyMDJcdTcyMDVcdTcyYTVcdTcyYTZcdTcyYTRcdTcyYTNcdTcyYTFcdTc0Y2JcdTc0YzVcdTc0YjdcdTc0YzNcdTc1MTZcdTc2NjBcdTc3Yzlc'@; put 'dTc3Y2FcdTc3YzRcdTc3ZjFcdTc5MWRcdTc5MWIiXSxbImYyYTEiLCJcdTc5MjFcdTc5MWNcdTc5MTdcdTc5MWVcdTc5YjBcdTdhNjdcdTdhNjhcdTdjMzNcdTdjM2NcdTdjMzlcdTdjMmNcdTdjM2JcdTdjZWNcdTdjZWFcdTdlNzZcdTdlNzVcdTdlNzhcdTdlNzBcdTdlNzdcdTdlNmZcdTdl'@; put 'N2FcdTdlNzJcdTdlNzRcdTdlNjhcdTdmNGJcdTdmNGFcdTdmODNcdTdmODZcdTdmYjdcdTdmZmRcdTdmZmVcdTgwNzhcdTgxZDdcdTgxZDVcdTgyNjRcdTgyNjFcdTgyNjNcdTg1ZWJcdTg1ZjFcdTg1ZWRcdTg1ZDlcdTg1ZTFcdTg1ZThcdTg1ZGFcdTg1ZDdcdTg1ZWNcdTg1ZjJcdTg1Zjhc'@; put 'dTg1ZDhcdTg1ZGZcdTg1ZTNcdTg1ZGNcdTg1ZDFcdTg1ZjBcdTg1ZTZcdTg1ZWZcdTg1ZGVcdTg1ZTJcdTg4MDBcdTg3ZmFcdTg4MDNcdTg3ZjZcdTg3ZjdcdTg4MDlcdTg4MGNcdTg4MGJcdTg4MDZcdTg3ZmNcdTg4MDhcdTg3ZmZcdTg4MGFcdTg4MDJcdTg5NjJcdTg5NWFcdTg5NWJcdTg5'@; put 'NTdcdTg5NjFcdTg5NWNcdTg5NThcdTg5NWRcdTg5NTlcdTg5ODhcdTg5YjdcdTg5YjZcdTg5ZjZcdThiNTBcdThiNDhcdThiNGFcdThiNDBcdThiNTNcdThiNTZcdThiNTRcdThiNGJcdThiNTUiXSxbImYzNDAiLCJcdThiNTFcdThiNDJcdThiNTJcdThiNTdcdThjNDNcdThjNzdcdThjNzZc'@; put 'dThjOWFcdThkMDZcdThkMDdcdThkMDlcdThkYWNcdThkYWFcdThkYWRcdThkYWJcdThlNmRcdThlNzhcdThlNzNcdThlNmFcdThlNmZcdThlN2JcdThlYzJcdThmNTJcdThmNTFcdThmNGZcdThmNTBcdThmNTNcdThmYjRcdTkxNDBcdTkxM2ZcdTkxYjBcdTkxYWRcdTkzZGVcdTkzYzdcdTkz'@; put 'Y2ZcdTkzYzJcdTkzZGFcdTkzZDBcdTkzZjlcdTkzZWNcdTkzY2NcdTkzZDlcdTkzYTlcdTkzZTZcdTkzY2FcdTkzZDRcdTkzZWVcdTkzZTNcdTkzZDVcdTkzYzRcdTkzY2VcdTkzYzBcdTkzZDJcdTkzZTdcdTk1N2RcdTk1ZGFcdTk1ZGJcdTk2ZTFcdTk3MjlcdTk3MmJcdTk3MmNcdTk3Mjhc'@; put 'dTk3MjYiXSxbImYzYTEiLCJcdTk3YjNcdTk3YjdcdTk3YjZcdTk3ZGRcdTk3ZGVcdTk3ZGZcdTk4NWNcdTk4NTlcdTk4NWRcdTk4NTdcdTk4YmZcdTk4YmRcdTk4YmJcdTk4YmVcdTk5NDhcdTk5NDdcdTk5NDNcdTk5YTZcdTk5YTdcdTlhMWFcdTlhMTVcdTlhMjVcdTlhMWRcdTlhMjRcdTlh'@; put 'MWJcdTlhMjJcdTlhMjBcdTlhMjdcdTlhMjNcdTlhMWVcdTlhMWNcdTlhMTRcdTlhYzJcdTliMGJcdTliMGFcdTliMGVcdTliMGNcdTliMzdcdTliZWFcdTliZWJcdTliZTBcdTliZGVcdTliZTRcdTliZTZcdTliZTJcdTliZjBcdTliZDRcdTliZDdcdTliZWNcdTliZGNcdTliZDlcdTliZTVc'@; put 'dTliZDVcdTliZTFcdTliZGFcdTlkNzdcdTlkODFcdTlkOGFcdTlkODRcdTlkODhcdTlkNzFcdTlkODBcdTlkNzhcdTlkODZcdTlkOGJcdTlkOGNcdTlkN2RcdTlkNmJcdTlkNzRcdTlkNzVcdTlkNzBcdTlkNjlcdTlkODVcdTlkNzNcdTlkN2JcdTlkODJcdTlkNmZcdTlkNzlcdTlkN2ZcdTlk'@; put 'ODdcdTlkNjhcdTllOTRcdTllOTFcdTllYzBcdTllZmNcdTlmMmRcdTlmNDBcdTlmNDFcdTlmNGRcdTlmNTZcdTlmNTdcdTlmNThcdTUzMzdcdTU2YjIiXSxbImY0NDAiLCJcdTU2YjVcdTU2YjNcdTU4ZTNcdTViNDVcdTVkYzZcdTVkYzdcdTVlZWVcdTVlZWZcdTVmYzBcdTVmYzFcdTYxZjlc'@; put 'dTY1MTdcdTY1MTZcdTY1MTVcdTY1MTNcdTY1ZGZcdTY2ZThcdTY2ZTNcdTY2ZTRcdTZhZjNcdTZhZjBcdTZhZWFcdTZhZThcdTZhZjlcdTZhZjFcdTZhZWVcdTZhZWZcdTcwM2NcdTcwMzVcdTcwMmZcdTcwMzdcdTcwMzRcdTcwMzFcdTcwNDJcdTcwMzhcdTcwM2ZcdTcwM2FcdTcwMzlcdTcw'@; put 'NDBcdTcwM2JcdTcwMzNcdTcwNDFcdTcyMTNcdTcyMTRcdTcyYThcdTczN2RcdTczN2NcdTc0YmFcdTc2YWJcdTc2YWFcdTc2YmVcdTc2ZWRcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3Y2RcdTc3ZjJcdTc5MjVcdTc5MjNcdTc5MjdcdTc5MjhcdTc5MjRcdTc5MjkiXSxbImY0YTEiLCJcdTc5YjJc'@; put 'dTdhNmVcdTdhNmNcdTdhNmRcdTdhZjdcdTdjNDlcdTdjNDhcdTdjNGFcdTdjNDdcdTdjNDVcdTdjZWVcdTdlN2JcdTdlN2VcdTdlODFcdTdlODBcdTdmYmFcdTdmZmZcdTgwNzlcdTgxZGJcdTgxZDlcdTgyMGJcdTgyNjhcdTgyNjlcdTg2MjJcdTg1ZmZcdTg2MDFcdTg1ZmVcdTg2MWJcdTg2'@; put 'MDBcdTg1ZjZcdTg2MDRcdTg2MDlcdTg2MDVcdTg2MGNcdTg1ZmRcdTg4MTlcdTg4MTBcdTg4MTFcdTg4MTdcdTg4MTNcdTg4MTZcdTg5NjNcdTg5NjZcdTg5YjlcdTg5ZjdcdThiNjBcdThiNmFcdThiNWRcdThiNjhcdThiNjNcdThiNjVcdThiNjdcdThiNmRcdThkYWVcdThlODZcdThlODhc'@; put 'dThlODRcdThmNTlcdThmNTZcdThmNTdcdThmNTVcdThmNThcdThmNWFcdTkwOGRcdTkxNDNcdTkxNDFcdTkxYjdcdTkxYjVcdTkxYjJcdTkxYjNcdTk0MGJcdTk0MTNcdTkzZmJcdTk0MjBcdTk0MGZcdTk0MTRcdTkzZmVcdTk0MTVcdTk0MTBcdTk0MjhcdTk0MTlcdTk0MGRcdTkzZjVcdTk0'@; put 'MDBcdTkzZjdcdTk0MDdcdTk0MGVcdTk0MTZcdTk0MTJcdTkzZmFcdTk0MDlcdTkzZjhcdTk0MGFcdTkzZmYiXSxbImY1NDAiLCJcdTkzZmNcdTk0MGNcdTkzZjZcdTk0MTFcdTk0MDZcdTk1ZGVcdTk1ZTBcdTk1ZGZcdTk3MmVcdTk3MmZcdTk3YjlcdTk3YmJcdTk3ZmRcdTk3ZmVcdTk4NjBc'@; put 'dTk4NjJcdTk4NjNcdTk4NWZcdTk4YzFcdTk4YzJcdTk5NTBcdTk5NGVcdTk5NTlcdTk5NGNcdTk5NGJcdTk5NTNcdTlhMzJcdTlhMzRcdTlhMzFcdTlhMmNcdTlhMmFcdTlhMzZcdTlhMjlcdTlhMmVcdTlhMzhcdTlhMmRcdTlhYzdcdTlhY2FcdTlhYzZcdTliMTBcdTliMTJcdTliMTFcdTlj'@; put 'MGJcdTljMDhcdTliZjdcdTljMDVcdTljMTJcdTliZjhcdTljNDBcdTljMDdcdTljMGVcdTljMDZcdTljMTdcdTljMTRcdTljMDlcdTlkOWZcdTlkOTlcdTlkYTRcdTlkOWRcdTlkOTJcdTlkOThcdTlkOTBcdTlkOWIiXSxbImY1YTEiLCJcdTlkYTBcdTlkOTRcdTlkOWNcdTlkYWFcdTlkOTdc'@; put 'dTlkYTFcdTlkOWFcdTlkYTJcdTlkYThcdTlkOWVcdTlkYTNcdTlkYmZcdTlkYTlcdTlkOTZcdTlkYTZcdTlkYTdcdTllOTlcdTllOWJcdTllOWFcdTllZTVcdTllZTRcdTllZTdcdTllZTZcdTlmMzBcdTlmMmVcdTlmNWJcdTlmNjBcdTlmNWVcdTlmNWRcdTlmNTlcdTlmOTFcdTUxM2FcdTUx'@; put 'MzlcdTUyOThcdTUyOTdcdTU2YzNcdTU2YmRcdTU2YmVcdTViNDhcdTViNDdcdTVkY2JcdTVkY2ZcdTVlZjFcdTYxZmRcdTY1MWJcdTZiMDJcdTZhZmNcdTZiMDNcdTZhZjhcdTZiMDBcdTcwNDNcdTcwNDRcdTcwNGFcdTcwNDhcdTcwNDlcdTcwNDVcdTcwNDZcdTcyMWRcdTcyMWFcdTcyMTlc'@; put 'dTczN2VcdTc1MTdcdTc2NmFcdTc3ZDBcdTc5MmRcdTc5MzFcdTc5MmZcdTdjNTRcdTdjNTNcdTdjZjJcdTdlOGFcdTdlODdcdTdlODhcdTdlOGJcdTdlODZcdTdlOGRcdTdmNGRcdTdmYmJcdTgwMzBcdTgxZGRcdTg2MThcdTg2MmFcdTg2MjZcdTg2MWZcdTg2MjNcdTg2MWNcdTg2MTlcdTg2'@; put 'MjdcdTg2MmVcdTg2MjFcdTg2MjBcdTg2MjlcdTg2MWVcdTg2MjUiXSxbImY2NDAiLCJcdTg4MjlcdTg4MWRcdTg4MWJcdTg4MjBcdTg4MjRcdTg4MWNcdTg4MmJcdTg4NGFcdTg5NmRcdTg5NjlcdTg5NmVcdTg5NmJcdTg5ZmFcdThiNzlcdThiNzhcdThiNDVcdThiN2FcdThiN2JcdThkMTBc'@; put 'dThkMTRcdThkYWZcdThlOGVcdThlOGNcdThmNWVcdThmNWJcdThmNWRcdTkxNDZcdTkxNDRcdTkxNDVcdTkxYjlcdTk0M2ZcdTk0M2JcdTk0MzZcdTk0MjlcdTk0M2RcdTk0M2NcdTk0MzBcdTk0MzlcdTk0MmFcdTk0MzdcdTk0MmNcdTk0NDBcdTk0MzFcdTk1ZTVcdTk1ZTRcdTk1ZTNcdTk3'@; put 'MzVcdTk3M2FcdTk3YmZcdTk3ZTFcdTk4NjRcdTk4YzlcdTk4YzZcdTk4YzBcdTk5NThcdTk5NTZcdTlhMzlcdTlhM2RcdTlhNDZcdTlhNDRcdTlhNDJcdTlhNDFcdTlhM2EiXSxbImY2YTEiLCJcdTlhM2ZcdTlhY2RcdTliMTVcdTliMTdcdTliMThcdTliMTZcdTliM2FcdTliNTJcdTljMmJc'@; put 'dTljMWRcdTljMWNcdTljMmNcdTljMjNcdTljMjhcdTljMjlcdTljMjRcdTljMjFcdTlkYjdcdTlkYjZcdTlkYmNcdTlkYzFcdTlkYzdcdTlkY2FcdTlkY2ZcdTlkYmVcdTlkYzVcdTlkYzNcdTlkYmJcdTlkYjVcdTlkY2VcdTlkYjlcdTlkYmFcdTlkYWNcdTlkYzhcdTlkYjFcdTlkYWRcdTlk'@; put 'Y2NcdTlkYjNcdTlkY2RcdTlkYjJcdTllN2FcdTllOWNcdTllZWJcdTllZWVcdTllZWRcdTlmMWJcdTlmMThcdTlmMWFcdTlmMzFcdTlmNGVcdTlmNjVcdTlmNjRcdTlmOTJcdTRlYjlcdTU2YzZcdTU2YzVcdTU2Y2JcdTU5NzFcdTViNGJcdTViNGNcdTVkZDVcdTVkZDFcdTVlZjJcdTY1MjFc'@; put 'dTY1MjBcdTY1MjZcdTY1MjJcdTZiMGJcdTZiMDhcdTZiMDlcdTZjMGRcdTcwNTVcdTcwNTZcdTcwNTdcdTcwNTJcdTcyMWVcdTcyMWZcdTcyYTlcdTczN2ZcdTc0ZDhcdTc0ZDVcdTc0ZDlcdTc0ZDdcdTc2NmRcdTc2YWRcdTc5MzVcdTc5YjRcdTdhNzBcdTdhNzFcdTdjNTdcdTdjNWNcdTdj'@; put 'NTlcdTdjNWJcdTdjNWEiXSxbImY3NDAiLCJcdTdjZjRcdTdjZjFcdTdlOTFcdTdmNGZcdTdmODdcdTgxZGVcdTgyNmJcdTg2MzRcdTg2MzVcdTg2MzNcdTg2MmNcdTg2MzJcdTg2MzZcdTg4MmNcdTg4MjhcdTg4MjZcdTg4MmFcdTg4MjVcdTg5NzFcdTg5YmZcdTg5YmVcdTg5ZmJcdThiN2Vc'@; put 'dThiODRcdThiODJcdThiODZcdThiODVcdThiN2ZcdThkMTVcdThlOTVcdThlOTRcdThlOWFcdThlOTJcdThlOTBcdThlOTZcdThlOTdcdThmNjBcdThmNjJcdTkxNDdcdTk0NGNcdTk0NTBcdTk0NGFcdTk0NGJcdTk0NGZcdTk0NDdcdTk0NDVcdTk0NDhcdTk0NDlcdTk0NDZcdTk3M2ZcdTk3'@; put 'ZTNcdTk4NmFcdTk4NjlcdTk4Y2JcdTk5NTRcdTk5NWJcdTlhNGVcdTlhNTNcdTlhNTRcdTlhNGNcdTlhNGZcdTlhNDhcdTlhNGEiXSxbImY3YTEiLCJcdTlhNDlcdTlhNTJcdTlhNTBcdTlhZDBcdTliMTlcdTliMmJcdTliM2JcdTliNTZcdTliNTVcdTljNDZcdTljNDhcdTljM2ZcdTljNDRc'@; put 'dTljMzlcdTljMzNcdTljNDFcdTljM2NcdTljMzdcdTljMzRcdTljMzJcdTljM2RcdTljMzZcdTlkZGJcdTlkZDJcdTlkZGVcdTlkZGFcdTlkY2JcdTlkZDBcdTlkZGNcdTlkZDFcdTlkZGZcdTlkZTlcdTlkZDlcdTlkZDhcdTlkZDZcdTlkZjVcdTlkZDVcdTlkZGRcdTllYjZcdTllZjBcdTlm'@; put 'MzVcdTlmMzNcdTlmMzJcdTlmNDJcdTlmNmJcdTlmOTVcdTlmYTJcdTUxM2RcdTUyOTlcdTU4ZThcdTU4ZTdcdTU5NzJcdTViNGRcdTVkZDhcdTg4MmZcdTVmNGZcdTYyMDFcdTYyMDNcdTYyMDRcdTY1MjlcdTY1MjVcdTY1OTZcdTY2ZWJcdTZiMTFcdTZiMTJcdTZiMGZcdTZiY2FcdTcwNWJc'@; put 'dTcwNWFcdTcyMjJcdTczODJcdTczODFcdTczODNcdTc2NzBcdTc3ZDRcdTdjNjdcdTdjNjZcdTdlOTVcdTgyNmNcdTg2M2FcdTg2NDBcdTg2MzlcdTg2M2NcdTg2MzFcdTg2M2JcdTg2M2VcdTg4MzBcdTg4MzJcdTg4MmVcdTg4MzNcdTg5NzZcdTg5NzRcdTg5NzNcdTg5ZmUiXSxbImY4NDAi'@; put 'LCJcdThiOGNcdThiOGVcdThiOGJcdThiODhcdThjNDVcdThkMTlcdThlOThcdThmNjRcdThmNjNcdTkxYmNcdTk0NjJcdTk0NTVcdTk0NWRcdTk0NTdcdTk0NWVcdTk3YzRcdTk3YzVcdTk4MDBcdTlhNTZcdTlhNTlcdTliMWVcdTliMWZcdTliMjBcdTljNTJcdTljNThcdTljNTBcdTljNGFc'@; put 'dTljNGRcdTljNGJcdTljNTVcdTljNTlcdTljNGNcdTljNGVcdTlkZmJcdTlkZjdcdTlkZWZcdTlkZTNcdTlkZWJcdTlkZjhcdTlkZTRcdTlkZjZcdTlkZTFcdTlkZWVcdTlkZTZcdTlkZjJcdTlkZjBcdTlkZTJcdTlkZWNcdTlkZjRcdTlkZjNcdTlkZThcdTlkZWRcdTllYzJcdTllZDBcdTll'@; put 'ZjJcdTllZjNcdTlmMDZcdTlmMWNcdTlmMzhcdTlmMzdcdTlmMzZcdTlmNDNcdTlmNGYiXSxbImY4YTEiLCJcdTlmNzFcdTlmNzBcdTlmNmVcdTlmNmZcdTU2ZDNcdTU2Y2RcdTViNGVcdTVjNmRcdTY1MmRcdTY2ZWRcdTY2ZWVcdTZiMTNcdTcwNWZcdTcwNjFcdTcwNWRcdTcwNjBcdTcyMjNc'@; put 'dTc0ZGJcdTc0ZTVcdTc3ZDVcdTc5MzhcdTc5YjdcdTc5YjZcdTdjNmFcdTdlOTdcdTdmODlcdTgyNmRcdTg2NDNcdTg4MzhcdTg4MzdcdTg4MzVcdTg4NGJcdThiOTRcdThiOTVcdThlOWVcdThlOWZcdThlYTBcdThlOWRcdTkxYmVcdTkxYmRcdTkxYzJcdTk0NmJcdTk0NjhcdTk0NjlcdTk2'@; put 'ZTVcdTk3NDZcdTk3NDNcdTk3NDdcdTk3YzdcdTk3ZTVcdTlhNWVcdTlhZDVcdTliNTlcdTljNjNcdTljNjdcdTljNjZcdTljNjJcdTljNWVcdTljNjBcdTllMDJcdTlkZmVcdTllMDdcdTllMDNcdTllMDZcdTllMDVcdTllMDBcdTllMDFcdTllMDlcdTlkZmZcdTlkZmRcdTllMDRcdTllYTBc'@; put 'dTlmMWVcdTlmNDZcdTlmNzRcdTlmNzVcdTlmNzZcdTU2ZDRcdTY1MmVcdTY1YjhcdTZiMThcdTZiMTlcdTZiMTdcdTZiMWFcdTcwNjJcdTcyMjZcdTcyYWFcdTc3ZDhcdTc3ZDlcdTc5MzlcdTdjNjlcdTdjNmJcdTdjZjZcdTdlOWEiXSxbImY5NDAiLCJcdTdlOThcdTdlOWJcdTdlOTlcdTgx'@; put 'ZTBcdTgxZTFcdTg2NDZcdTg2NDdcdTg2NDhcdTg5NzlcdTg5N2FcdTg5N2NcdTg5N2JcdTg5ZmZcdThiOThcdThiOTlcdThlYTVcdThlYTRcdThlYTNcdTk0NmVcdTk0NmRcdTk0NmZcdTk0NzFcdTk0NzNcdTk3NDlcdTk4NzJcdTk5NWZcdTljNjhcdTljNmVcdTljNmRcdTllMGJcdTllMGRc'@; put 'dTllMTBcdTllMGZcdTllMTJcdTllMTFcdTllYTFcdTllZjVcdTlmMDlcdTlmNDdcdTlmNzhcdTlmN2JcdTlmN2FcdTlmNzlcdTU3MWVcdTcwNjZcdTdjNmZcdTg4M2NcdThkYjJcdThlYTZcdTkxYzNcdTk0NzRcdTk0NzhcdTk0NzZcdTk0NzVcdTlhNjBcdTljNzRcdTljNzNcdTljNzFcdTlj'@; put 'NzVcdTllMTRcdTllMTNcdTllZjZcdTlmMGEiXSxbImY5YTEiLCJcdTlmYTRcdTcwNjhcdTcwNjVcdTdjZjdcdTg2NmFcdTg4M2VcdTg4M2RcdTg4M2ZcdThiOWVcdThjOWNcdThlYTlcdThlYzlcdTk3NGJcdTk4NzNcdTk4NzRcdTk4Y2NcdTk5NjFcdTk5YWJcdTlhNjRcdTlhNjZcdTlhNjdc'@; put 'dTliMjRcdTllMTVcdTllMTdcdTlmNDhcdTYyMDdcdTZiMWVcdTcyMjdcdTg2NGNcdThlYThcdTk0ODJcdTk0ODBcdTk0ODFcdTlhNjlcdTlhNjhcdTliMmVcdTllMTlcdTcyMjlcdTg2NGJcdThiOWZcdTk0ODNcdTljNzlcdTllYjdcdTc2NzVcdTlhNmJcdTljN2FcdTllMWRcdTcwNjlcdTcw'@; put 'NmFcdTllYTRcdTlmN2VcdTlmNDlcdTlmOThcdTc4ODFcdTkyYjlcdTg4Y2ZcdTU4YmJcdTYwNTJcdTdjYTdcdTVhZmFcdTI1NTRcdTI1NjZcdTI1NTdcdTI1NjBcdTI1NmNcdTI1NjNcdTI1NWFcdTI1NjlcdTI1NWRcdTI1NTJcdTI1NjRcdTI1NTVcdTI1NWVcdTI1NmFcdTI1NjFcdTI1NThc'@; put 'dTI1NjdcdTI1NWJcdTI1NTNcdTI1NjVcdTI1NTZcdTI1NWZcdTI1NmJcdTI1NjJcdTI1NTlcdTI1NjhcdTI1NWNcdTI1NTFcdTI1NTBcdTI1NmRcdTI1NmVcdTI1NzBcdTI1NmZcdTI1OTMiXV0nKX0sNTY0MDYoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAi'@; put 'LCJcXHUwMDAwIiwxMjddLFsiOGVhMSIsIlx1ZmY2MSIsNjJdLFsiYTFhMSIsIlx1MzAwMFx1MzAwMVx1MzAwMlx1ZmYwY1x1ZmYwZVx1MzBmYlx1ZmYxYVx1ZmYxYlx1ZmYxZlx1ZmYwMVx1MzA5Ylx1MzA5Y1x4YjRcdWZmNDBceGE4XHVmZjNlXHVmZmUzXHVmZjNmXHUzMGZkXHUzMGZlXHUz'@; put 'MDlkXHUzMDllXHUzMDAzXHU0ZWRkXHUzMDA1XHUzMDA2XHUzMDA3XHUzMGZjXHUyMDE1XHUyMDEwXHVmZjBmXHVmZjNjXHVmZjVlXHUyMjI1XHVmZjVjXHUyMDI2XHUyMDI1XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHVmZjA4XHVmZjA5XHUzMDE0XHUzMDE1XHVmZjNiXHVmZjNkXHVmZjVi'@; put 'XHVmZjVkXHUzMDA4Iiw5LCJcdWZmMGJcdWZmMGRceGIxXHhkN1x4ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVmZjA1XHVmZjAzXHVmZjA2'@; put 'XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjNyJdLFsiYTJhMSIsIlx1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAxMlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxMyJdLFsiYTJiYSIsIlx1MjIw'@; put 'OFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOSJdLFsiYTJjYSIsIlx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwMyJdLFsiYTJkYyIsIlx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx1MjI2YVx1MjI2Ylx1'@; put 'MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyYyJdLFsiYTJmMiIsIlx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjYiXSxbImEyZmUiLCJcdTI1ZWYiXSxbImEzYjAiLCJcdWZmMTAiLDldLFsiYTNjMSIsIlx1ZmYyMSIsMjVdLFsiYTNlMSIsIlx1'@; put 'ZmY0MSIsMjVdLFsiYTRhMSIsIlx1MzA0MSIsODJdLFsiYTVhMSIsIlx1MzBhMSIsODVdLFsiYTZhMSIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyJhNmMxIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbImE3YTEiLCJcdTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsMjVdLFsiYTdkMSIsIlx1'@; put 'MDQzMCIsNSwiXHUwNDUxXHUwNDM2IiwyNV0sWyJhOGExIiwiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE4XHUyNTE0XHUyNTFjXHUyNTJjXHUyNTI0XHUyNTM0XHUyNTNjXHUyNTAxXHUyNTAzXHUyNTBmXHUyNTEzXHUyNTFiXHUyNTE3XHUyNTIzXHUyNTMzXHUyNTJiXHUyNTNiXHUy'@; put 'NTRiXHUyNTIwXHUyNTJmXHUyNTI4XHUyNTM3XHUyNTNmXHUyNTFkXHUyNTMwXHUyNTI1XHUyNTM4XHUyNTQyIl0sWyJhZGExIiwiXHUyNDYwIiwxOSwiXHUyMTYwIiw5XSxbImFkYzAiLCJcdTMzNDlcdTMzMTRcdTMzMjJcdTMzNGRcdTMzMThcdTMzMjdcdTMzMDNcdTMzMzZcdTMzNTFcdTMz'@; put 'NTdcdTMzMGRcdTMzMjZcdTMzMjNcdTMzMmJcdTMzNGFcdTMzM2JcdTMzOWNcdTMzOWRcdTMzOWVcdTMzOGVcdTMzOGZcdTMzYzRcdTMzYTEiXSxbImFkZGYiLCJcdTMzN2JcdTMwMWRcdTMwMWZcdTIxMTZcdTMzY2RcdTIxMjFcdTMyYTQiLDQsIlx1MzIzMVx1MzIzMlx1MzIzOVx1MzM3ZVx1'@; put 'MzM3ZFx1MzM3Y1x1MjI1Mlx1MjI2MVx1MjIyYlx1MjIyZVx1MjIxMVx1MjIxYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MjIzNVx1MjIyOVx1MjIyYSJdLFsiYjBhMSIsIlx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYzZlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMx'@; put 'Y1x1N2E1MFx1NjBhYVx1NjNlMVx1NmUyNVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1OThmNFx1N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1'@; put 'OTVjN1x1OTc4ZFx1Njc0Zlx1NGVlNVx1NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3MFx1NjYxM1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIw'@; put 'Mlx1OTA1NVx1OTA3YVx1NTMzYlx1NGU5NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1ODI4Ylx1OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1'@; put 'ODUyZCJdLFsiYjFhMSIsIlx1OTY2Mlx1OTY3MFx1OTZhMFx1OTdmYlx1NTQwYlx1NTNmM1x1NWI4N1x1NzBjZlx1N2ZiZFx1OGZjMlx1OTZlOFx1NTM2Zlx1OWQ1Y1x1N2FiYVx1NGUxMVx1Nzg5M1x1ODFmY1x1NmUyNlx1NTYxOFx1NTUwNFx1NmIxZFx1ODUxYVx1OWMzYlx1NTllNVx1NTNh'@; put 'OVx1NmQ2Nlx1NzRkY1x1OTU4Zlx1NTY0Mlx1NGU5MVx1OTA0Ylx1OTZmMlx1ODM0Zlx1OTkwY1x1NTNlMVx1NTViNlx1NWIzMFx1NWY3MVx1NjYyMFx1NjZmM1x1NjgwNFx1NmMzOFx1NmNmM1x1NmQyOVx1NzQ1Ylx1NzZjOFx1N2E0ZVx1OTgzNFx1ODJmMVx1ODg1Ylx1OGE2MFx1OTJlZFx1'@; put 'NmRiMlx1NzVhYlx1NzZjYVx1OTljNVx1NjBhNlx1OGIwMVx1OGQ4YVx1OTViMlx1Njk4ZVx1NTNhZFx1NTE4Nlx1NTcxMlx1NTgzMFx1NTk0NFx1NWJiNFx1NWVmNlx1NjAyOFx1NjNhOVx1NjNmNFx1NmNiZlx1NmYxNFx1NzA4ZVx1NzExNFx1NzE1OVx1NzFkNVx1NzMzZlx1N2UwMVx1ODI3'@; put 'Nlx1ODJkMVx1ODU5N1x1OTA2MFx1OTI1Ylx1OWQxYlx1NTg2OVx1NjViY1x1NmM1YVx1NzUyNVx1NTFmOVx1NTkyZVx1NTk2NVx1NWY4MFx1NWZkYyJdLFsiYjJhMSIsIlx1NjJiY1x1NjVmYVx1NmEyYVx1NmIyN1x1NmJiNFx1NzM4Ylx1N2ZjMVx1ODk1Nlx1OWQyY1x1OWQwZVx1OWVjNFx1'@; put 'NWNhMVx1NmM5Nlx1ODM3Ylx1NTEwNFx1NWM0Ylx1NjFiNlx1ODFjNlx1Njg3Nlx1NzI2MVx1NGU1OVx1NGZmYVx1NTM3OFx1NjA2OVx1NmUyOVx1N2E0Zlx1OTdmM1x1NGUwYlx1NTMxNlx1NGVlZVx1NGY1NVx1NGYzZFx1NGZhMVx1NGY3M1x1NTJhMFx1NTNlZlx1NTYwOVx1NTkwZlx1NWFj'@; put 'MVx1NWJiNlx1NWJlMVx1NzlkMVx1NjY4N1x1Njc5Y1x1NjdiNlx1NmI0Y1x1NmNiM1x1NzA2Ylx1NzNjMlx1Nzk4ZFx1NzliZVx1N2EzY1x1N2I4N1x1ODJiMVx1ODJkYlx1ODMwNFx1ODM3N1x1ODNlZlx1ODNkM1x1ODc2Nlx1OGFiMlx1NTYyOVx1OGNhOFx1OGZlNlx1OTA0ZVx1OTcxZVx1'@; put 'ODY4YVx1NGZjNFx1NWNlOFx1NjIxMVx1NzI1OVx1NzUzYlx1ODFlNVx1ODJiZFx1ODZmZVx1OGNjMFx1OTZjNVx1OTkxM1x1OTlkNVx1NGVjYlx1NGYxYVx1ODllM1x1NTZkZVx1NTg0YVx1NThjYVx1NWVmYlx1NWZlYlx1NjAyYVx1NjA5NFx1NjA2Mlx1NjFkMFx1NjIxMlx1NjJkMFx1NjUz'@; put 'OSJdLFsiYjNhMSIsIlx1OWI0MVx1NjY2Nlx1NjhiMFx1NmQ3N1x1NzA3MFx1NzU0Y1x1NzY4Nlx1N2Q3NVx1ODJhNVx1ODdmOVx1OTU4Ylx1OTY4ZVx1OGM5ZFx1NTFmMVx1NTJiZVx1NTkxNlx1NTRiM1x1NWJiM1x1NWQxNlx1NjE2OFx1Njk4Mlx1NmRhZlx1Nzg4ZFx1ODRjYlx1ODg1N1x1'@; put 'OGE3Mlx1OTNhN1x1OWFiOFx1NmQ2Y1x1OTlhOFx1ODZkOVx1NTdhM1x1NjdmZlx1ODZjZVx1OTIwZVx1NTI4M1x1NTY4N1x1NTQwNFx1NWVkM1x1NjJlMVx1NjRiOVx1NjgzY1x1NjgzOFx1NmJiYlx1NzM3Mlx1NzhiYVx1N2E2Ylx1ODk5YVx1ODlkMlx1OGQ2Ylx1OGYwM1x1OTBlZFx1OTVh'@; put 'M1x1OTY5NFx1OTc2OVx1NWI2Nlx1NWNiM1x1Njk3ZFx1OTg0ZFx1OTg0ZVx1NjM5Ylx1N2IyMFx1NmEyYlx1NmE3Zlx1NjhiNlx1OWMwZFx1NmY1Zlx1NTI3Mlx1NTU5ZFx1NjA3MFx1NjJlY1x1NmQzYlx1NmUwN1x1NmVkMVx1ODQ1Ylx1ODkxMFx1OGY0NFx1NGUxNFx1OWMzOVx1NTNmNlx1'@; put 'NjkxYlx1NmEzYVx1OTc4NFx1NjgyYVx1NTE1Y1x1N2FjM1x1ODRiMlx1OTFkY1x1OTM4Y1x1NTY1Ylx1OWQyOFx1NjgyMlx1ODMwNVx1ODQzMSJdLFsiYjRhMSIsIlx1N2NhNVx1NTIwOFx1ODJjNVx1NzRlNlx1NGU3ZVx1NGY4M1x1NTFhMFx1NWJkMlx1NTIwYVx1NTJkOFx1NTJlN1x1NWRm'@; put 'Ylx1NTU5YVx1NTgyYVx1NTllNlx1NWI4Y1x1NWI5OFx1NWJkYlx1NWU3Mlx1NWU3OVx1NjBhM1x1NjExZlx1NjE2M1x1NjFiZVx1NjNkYlx1NjU2Mlx1NjdkMVx1Njg1M1x1NjhmYVx1NmIzZVx1NmI1M1x1NmM1N1x1NmYyMlx1NmY5N1x1NmY0NVx1NzRiMFx1NzUxOFx1NzZlM1x1NzcwYlx1'@; put 'N2FmZlx1N2JhMVx1N2MyMVx1N2RlOVx1N2YzNlx1N2ZmMFx1ODA5ZFx1ODI2Nlx1ODM5ZVx1ODliM1x1OGFjY1x1OGNhYlx1OTA4NFx1OTQ1MVx1OTU5M1x1OTU5MVx1OTVhMlx1OTY2NVx1OTdkM1x1OTkyOFx1ODIxOFx1NGUzOFx1NTQyYlx1NWNiOFx1NWRjY1x1NzNhOVx1NzY0Y1x1Nzcz'@; put 'Y1x1NWNhOVx1N2ZlYlx1OGQwYlx1OTZjMVx1OTgxMVx1OTg1NFx1OTg1OFx1NGYwMVx1NGYwZVx1NTM3MVx1NTU5Y1x1NTY2OFx1NTdmYVx1NTk0N1x1NWIwOVx1NWJjNFx1NWM5MFx1NWUwY1x1NWU3ZVx1NWZjY1x1NjNlZVx1NjczYVx1NjVkN1x1NjVlMlx1NjcxZlx1NjhjYlx1NjhjNCJd'@; put 'LFsiYjVhMSIsIlx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNiNFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1OWEwZVx1OWIzY1x1NGU4MFx1NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIy'@; put 'Zlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1NzgyN1x1Njc3NVx1OWVjZFx1NTM3NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1'@; put 'NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYxM1x1NjAyNVx1NjU1MVx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNlM1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1N2QxYVx1N2NmZVx1N2Q2Nlx1NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJk'@; put 'Mlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhYyJdLFsiYjZhMSIsIlx1NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1NTE3MVx1NTFmNlx1NTM1NFx1NTMyMVx1NTM3Zlx1NTNlYlx1NTVhY1x1'@; put 'NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEwNVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdmZlx1OTk1N1x1OWE1YVx1NGVmMFx1NTFkZFx1NWMyZFx1NjY4MVx1Njk2'@; put 'ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1ODNjY1x1ODg3Zlx1ODk1Zlx1OGIzOVx1OGZkMVx1OTFkMVx1NTQxZlx1'@; put 'OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJlNlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0N1x1OTY4NVx1NGUzMlx1NmFkYlx1OTFlN1x1NWM1MVx1NWM0OCJdLFsi'@; put 'YjdhMSIsIlx1NjM5OFx1N2E5Zlx1NmM5M1x1OTc3NFx1OGY2MVx1N2FhYVx1NzE4YVx1OTY4OFx1N2M4Mlx1NjgxN1x1N2U3MFx1Njg1MVx1OTM2Y1x1NTJmMlx1NTQxYlx1ODVhYlx1OGExM1x1N2ZhNFx1OGVjZFx1OTBlMVx1NTM2Nlx1ODg4OFx1Nzk0MVx1NGZjMlx1NTBiZVx1NTIxMVx1'@; put 'NTE0NFx1NTU1M1x1NTcyZFx1NzNlYVx1NTc4Ylx1NTk1MVx1NWY2Mlx1NWY4NFx1NjA3NVx1NjE3Nlx1NjE2N1x1NjFhOVx1NjNiMlx1NjQzYVx1NjU2Y1x1NjY2Zlx1Njg0Mlx1NmUxM1x1NzU2Nlx1N2EzZFx1N2NmYlx1N2Q0Y1x1N2Q5OVx1N2U0Ylx1N2Y2Ylx1ODMwZVx1ODM0YVx1ODZj'@; put 'ZFx1OGEwOFx1OGE2M1x1OGI2Nlx1OGVmZFx1OTgxYVx1OWQ4Zlx1ODJiOFx1OGZjZVx1OWJlOFx1NTI4N1x1NjIxZlx1NjQ4M1x1NmZjMFx1OTY5OVx1Njg0MVx1NTA5MVx1NmIyMFx1NmM3YVx1NmY1NFx1N2E3NFx1N2Q1MFx1ODg0MFx1OGEyM1x1NjcwOFx1NGVmNlx1NTAzOVx1NTAyNlx1'@; put 'NTA2NVx1NTE3Y1x1NTIzOFx1NTI2M1x1NTVhN1x1NTcwZlx1NTgwNVx1NWFjY1x1NWVmYVx1NjFiMlx1NjFmOFx1NjJmM1x1NjM3MiJdLFsiYjhhMSIsIlx1NjkxY1x1NmEyOVx1NzI3ZFx1NzJhY1x1NzMyZVx1NzgxNFx1Nzg2Zlx1N2Q3OVx1NzcwY1x1ODBhOVx1ODk4Ylx1OGIxOVx1OGNl'@; put 'Mlx1OGVkMlx1OTA2M1x1OTM3NVx1OTY3YVx1OTg1NVx1OWExM1x1OWU3OFx1NTE0M1x1NTM5Zlx1NTNiM1x1NWU3Ylx1NWYyNlx1NmUxYlx1NmU5MFx1NzM4NFx1NzNmZVx1N2Q0M1x1ODIzN1x1OGEwMFx1OGFmYVx1OTY1MFx1NGU0ZVx1NTAwYlx1NTNlNFx1NTQ3Y1x1NTZmYVx1NTlkMVx1'@; put 'NWI2NFx1NWRmMVx1NWVhYlx1NWYyN1x1NjIzOFx1NjU0NVx1NjdhZlx1NmU1Nlx1NzJkMFx1N2NjYVx1ODhiNFx1ODBhMVx1ODBlMVx1ODNmMFx1ODY0ZVx1OGE4N1x1OGRlOFx1OTIzN1x1OTZjN1x1OTg2N1x1OWYxM1x1NGU5NFx1NGU5Mlx1NGYwZFx1NTM0OFx1NTQ0OVx1NTQzZVx1NWEy'@; put 'Zlx1NWY4Y1x1NWZhMVx1NjA5Zlx1NjhhN1x1NmE4ZVx1NzQ1YVx1Nzg4MVx1OGE5ZVx1OGFhNFx1OGI3N1x1OTE5MFx1NGU1ZVx1OWJjOVx1NGVhNFx1NGY3Y1x1NGZhZlx1NTAxOVx1NTAxNlx1NTE0OVx1NTE2Y1x1NTI5Zlx1NTJiOVx1NTJmZVx1NTM5YVx1NTNlM1x1NTQxMSJdLFsiYjlh'@; put 'MSIsIlx1NTQwZVx1NTU4OVx1NTc1MVx1NTdhMlx1NTk3ZFx1NWI1NFx1NWI1ZFx1NWI4Zlx1NWRlNVx1NWRlN1x1NWRmN1x1NWU3OFx1NWU4M1x1NWU5YVx1NWViN1x1NWYxOFx1NjA1Mlx1NjE0Y1x1NjI5N1x1NjJkOFx1NjNhN1x1NjUzYlx1NjYwMlx1NjY0M1x1NjZmNFx1Njc2ZFx1Njgy'@; put 'MVx1Njg5N1x1NjljYlx1NmM1Zlx1NmQyYVx1NmQ2OVx1NmUyZlx1NmU5ZFx1NzUzMlx1NzY4N1x1Nzg2Y1x1N2EzZlx1N2NlMFx1N2QwNVx1N2QxOFx1N2Q1ZVx1N2RiMVx1ODAxNVx1ODAwM1x1ODBhZlx1ODBiMVx1ODE1NFx1ODE4Zlx1ODIyYVx1ODM1Mlx1ODg0Y1x1ODg2MVx1OGIxYlx1'@; put 'OGNhMlx1OGNmY1x1OTBjYVx1OTE3NVx1OTI3MVx1NzgzZlx1OTJmY1x1OTVhNFx1OTY0ZFx1OTgwNVx1OTk5OVx1OWFkOFx1OWQzYlx1NTI1Ylx1NTJhYlx1NTNmN1x1NTQwOFx1NThkNVx1NjJmN1x1NmZlMFx1OGM2YVx1OGY1Zlx1OWViOVx1NTE0Ylx1NTIzYlx1NTQ0YVx1NTZmZFx1N2E0'@; put 'MFx1OTE3N1x1OWQ2MFx1OWVkMlx1NzM0NFx1NmYwOVx1ODE3MFx1NzUxMVx1NWZmZFx1NjBkYVx1OWFhOFx1NzJkYlx1OGZiYyJdLFsiYmFhMSIsIlx1NmI2NFx1OTgwM1x1NGVjYVx1NTZmMFx1NTc2NFx1NThiZVx1NWE1YVx1NjA2OFx1NjFjN1x1NjYwZlx1NjYwNlx1NjgzOVx1NjhiMVx1'@; put 'NmRmN1x1NzVkNVx1N2QzYVx1ODI2ZVx1OWI0Mlx1NGU5Ylx1NGY1MFx1NTNjOVx1NTUwNlx1NWQ2Zlx1NWRlNlx1NWRlZVx1NjdmYlx1NmM5OVx1NzQ3M1x1NzgwMlx1OGE1MFx1OTM5Nlx1ODhkZlx1NTc1MFx1NWVhN1x1NjMyYlx1NTBiNVx1NTBhY1x1NTE4ZFx1NjcwMFx1NTRjOVx1NTg1'@; put 'ZVx1NTliYlx1NWJiMFx1NWY2OVx1NjI0ZFx1NjNhMVx1NjgzZFx1NmI3M1x1NmUwOFx1NzA3ZFx1OTFjN1x1NzI4MFx1NzgxNVx1NzgyNlx1Nzk2ZFx1NjU4ZVx1N2QzMFx1ODNkY1x1ODhjMVx1OGYwOVx1OTY5Ylx1NTI2NFx1NTcyOFx1Njc1MFx1N2Y2YVx1OGNhMVx1NTFiNFx1NTc0Mlx1'@; put 'OTYyYVx1NTgzYVx1Njk4YVx1ODBiNFx1NTRiMlx1NWQwZVx1NTdmY1x1Nzg5NVx1OWRmYVx1NGY1Y1x1NTI0YVx1NTQ4Ylx1NjQzZVx1NjYyOFx1NjcxNFx1NjdmNVx1N2E4NFx1N2I1Nlx1N2QyMlx1OTMyZlx1Njg1Y1x1OWJhZFx1N2IzOVx1NTMxOVx1NTE4YVx1NTIzNyJdLFsiYmJhMSIs'@; put 'Ilx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMwNlx1OWJhYlx1NzZiZlx1NjY1Mlx1NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5N1x1'@; put 'N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1NGY3Zlx1NTIzYVx1NTNmOFx1NTNmMlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTljOVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1NjAx'@; put 'ZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2Mlx1NmI3Ylx1NmMwZlx1NzM0NVx1Nzk0OVx1NzljMVx1N2NmOFx1N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNjN1x1OGNkY1x1'@; put 'OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1NjY0MiJdLFsiYmNhMSIsIlx1NmIyMVx1NmVjYlx1NmNiYlx1NzIzZVx1NzRiZFx1NzVkNFx1NzhjMVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1'@; put 'MFx1OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFjOVx1NWJhNFx1NjA4OVx1NmU3Zlx1NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1'@; put 'N2UxZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1OTA2ZVx1ODZjN1x1OTBhYVx1NTAxZlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYz'@; put 'MVx1NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1Mlx1OTk5Nlx1NTExMlx1NTNkN1x1NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OCJdLFsiYmRhMSIsIlx1'@; put 'NWI5N1x1NWMzMVx1NWRkZVx1NGZlZVx1NjEwMVx1NjJmZVx1NmQzMlx1NzljMFx1NzljYlx1N2Q0Mlx1N2U0ZFx1N2ZkMlx1ODFlZFx1ODIxZlx1ODQ5MFx1ODg0Nlx1ODk3Mlx1OGI5MFx1OGU3NFx1OGYyZlx1OTAzMVx1OTE0Ylx1OTE2Y1x1OTZjNlx1OTE5Y1x1NGVjMFx1NGY0Zlx1NTE0'@; put 'NVx1NTM0MVx1NWY5M1x1NjIwZVx1NjdkNFx1NmM0MVx1NmUwYlx1NzM2M1x1N2UyNlx1OTFjZFx1OTI4M1x1NTNkNFx1NTkxOVx1NWJiZlx1NmRkMVx1Nzk1ZFx1N2UyZVx1N2M5Ylx1NTg3ZVx1NzE5Zlx1NTFmYVx1ODg1M1x1OGZmMFx1NGZjYVx1NWNmYlx1NjYyNVx1NzdhY1x1N2FlM1x1'@; put 'ODIxY1x1OTlmZlx1NTFjNlx1NWZhYVx1NjVlY1x1Njk2Zlx1NmI4OVx1NmRmM1x1NmU5Nlx1NmY2NFx1NzZmZVx1N2QxNFx1NWRlMVx1OTA3NVx1OTE4N1x1OTgwNlx1NTFlNlx1NTIxZFx1NjI0MFx1NjY5MVx1NjZkOVx1NmUxYVx1NWViNlx1N2RkMlx1N2Y3Mlx1NjZmOFx1ODVhZlx1ODVm'@; put 'N1x1OGFmOFx1NTJhOVx1NTNkOVx1NTk3M1x1NWU4Zlx1NWY5MFx1NjA1NVx1OTJlNFx1OTY2NFx1NTBiN1x1NTExZiJdLFsiYmVhMSIsIlx1NTJkZFx1NTMyMFx1NTM0N1x1NTNlY1x1NTRlOFx1NTU0Nlx1NTUzMVx1NTYxN1x1NTk2OFx1NTliZVx1NWEzY1x1NWJiNVx1NWMwNlx1NWMwZlx1'@; put 'NWMxMVx1NWMxYVx1NWU4NFx1NWU4YVx1NWVlMFx1NWY3MFx1NjI3Zlx1NjI4NFx1NjJkYlx1NjM4Y1x1NjM3N1x1NjYwN1x1NjYwY1x1NjYyZFx1NjY3Nlx1Njc3ZVx1NjhhMlx1NmExZlx1NmEzNVx1NmNiY1x1NmQ4OFx1NmUwOVx1NmU1OFx1NzEzY1x1NzEyNlx1NzE2N1x1NzVjN1x1Nzcw'@; put 'MVx1Nzg1ZFx1NzkwMVx1Nzk2NVx1NzlmMFx1N2FlMFx1N2IxMVx1N2NhN1x1N2QzOVx1ODA5Nlx1ODNkNlx1ODQ4Ylx1ODU0OVx1ODg1ZFx1ODhmM1x1OGExZlx1OGEzY1x1OGE1NFx1OGE3M1x1OGM2MVx1OGNkZVx1OTFhNFx1OTI2Nlx1OTM3ZVx1OTQxOFx1OTY5Y1x1OTc5OFx1NGUwYVx1'@; put 'NGUwOFx1NGUxZVx1NGU1N1x1NTE5N1x1NTI3MFx1NTdjZVx1NTgzNFx1NThjY1x1NWIyMlx1NWUzOFx1NjBjNVx1NjRmZVx1Njc2MVx1Njc1Nlx1NmQ0NFx1NzJiNlx1NzU3M1x1N2E2M1x1ODRiOFx1OGI3Mlx1OTFiOFx1OTMyMFx1NTYzMVx1NTdmNFx1OThmZSJdLFsiYmZhMSIsIlx1NjJl'@; put 'ZFx1NjkwZFx1NmI5Nlx1NzFlZFx1N2U1NFx1ODA3N1x1ODI3Mlx1ODllNlx1OThkZlx1ODc1NVx1OGZiMVx1NWMzYlx1NGYzOFx1NGZlMVx1NGZiNVx1NTUwN1x1NWEyMFx1NWJkZFx1NWJlOVx1NWZjM1x1NjE0ZVx1NjMyZlx1NjViMFx1NjY0Ylx1NjhlZVx1Njk5Ylx1NmQ3OFx1NmRmMVx1'@; put 'NzUzM1x1NzViOVx1NzcxZlx1Nzk1ZVx1NzllNlx1N2QzM1x1ODFlM1x1ODJhZlx1ODVhYVx1ODlhYVx1OGEzYVx1OGVhYlx1OGY5Ylx1OTAzMlx1OTFkZFx1OTcwN1x1NGViYVx1NGVjMVx1NTIwM1x1NTg3NVx1NThlY1x1NWMwYlx1NzUxYVx1NWMzZFx1ODE0ZVx1OGEwYVx1OGZjNVx1OTY2'@; put 'M1x1OTc2ZFx1N2IyNVx1OGFjZlx1OTgwOFx1OTE2Mlx1NTZmM1x1NTNhOFx1OTAxN1x1NTQzOVx1NTc4Mlx1NWUyNVx1NjNhOFx1NmMzNFx1NzA4YVx1Nzc2MVx1N2M4Ylx1N2ZlMFx1ODg3MFx1OTA0Mlx1OTE1NFx1OTMxMFx1OTMxOFx1OTY4Zlx1NzQ1ZVx1OWFjNFx1NWQwN1x1NWQ2OVx1'@; put 'NjU3MFx1NjdhMlx1OGRhOFx1OTZkYlx1NjM2ZVx1Njc0OVx1NjkxOVx1ODNjNVx1OTgxN1x1OTZjMFx1ODhmZSJdLFsiYzBhMSIsIlx1NmY4NFx1NjQ3YVx1NWJmOFx1NGUxNlx1NzAyY1x1NzU1ZFx1NjYyZlx1NTFjNFx1NTIzNlx1NTJlMlx1NTlkM1x1NWY4MVx1NjAyN1x1NjIxMFx1NjUz'@; put 'Zlx1NjU3NFx1NjYxZlx1NjY3NFx1NjhmMlx1NjgxNlx1NmI2M1x1NmUwNVx1NzI3Mlx1NzUxZlx1NzZkYlx1N2NiZVx1ODA1Nlx1NThmMFx1ODhmZFx1ODk3Zlx1OGFhMFx1OGE5M1x1OGFjYlx1OTAxZFx1OTE5Mlx1OTc1Mlx1OTc1OVx1NjU4OVx1N2EwZVx1ODEwNlx1OTZiYlx1NWUyZFx1'@; put 'NjBkY1x1NjIxYVx1NjVhNVx1NjYxNFx1Njc5MFx1NzdmM1x1N2E0ZFx1N2M0ZFx1N2UzZVx1ODEwYVx1OGNhY1x1OGQ2NFx1OGRlMVx1OGU1Zlx1NzhhOVx1NTIwN1x1NjJkOVx1NjNhNVx1NjQ0Mlx1NjI5OFx1OGEyZFx1N2E4M1x1N2JjMFx1OGFhY1x1OTZlYVx1N2Q3Nlx1ODIwY1x1ODc0'@; put 'OVx1NGVkOVx1NTE0OFx1NTM0M1x1NTM2MFx1NWJhM1x1NWMwMlx1NWMxNlx1NWRkZFx1NjIyNlx1NjI0N1x1NjRiMFx1NjgxM1x1NjgzNFx1NmNjOVx1NmQ0NVx1NmQxN1x1NjdkM1x1NmY1Y1x1NzE0ZVx1NzE3ZFx1NjVjYlx1N2E3Zlx1N2JhZFx1N2RkYSJdLFsiYzFhMSIsIlx1N2U0YVx1'@; put 'N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1ODVhNlx1OGE2ZVx1OGNjZVx1OGRmNVx1OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4NFx1NmYzOFx1NzEzNlx1NTE2OFx1Nzk4NVx1N2U1NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZm'@; put 'ZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4Zlx1NzU4ZVx1NzkwZVx1Nzk1Nlx1NzlkZlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1OWYyMFx1NTBlN1x1NTI3NVx1NTNjY1x1NTNlMlx1NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1'@; put 'NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1NjM4M1x1NjMzZlx1NjNiYlx1NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYxNVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1N2E5M1x1N2NkZlx1N2RjZlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVm'@; put 'Ylx1ODhjNVx1OGQ3MFx1OTAwMVx1OTA2ZFx1OTM5N1x1OTcxY1x1OWExMlx1NTBjZlx1NTg5N1x1NjE4ZSJdLFsiYzJhMSIsIlx1ODFkM1x1ODUzNVx1OGQwOFx1OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3M1x1NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1'@; put 'NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1ODg5Nlx1NTE3Nlx1NjNjM1x1NWI1OFx1NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkxYVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1NTgxNVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0'@; put 'MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJmZVx1ODAxMFx1NWNiMVx1NWUyZlx1NWY4NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNiOFx1OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1'@; put 'NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1NmVkZFx1NzAyN1x1NTM1M1x1NTU0NFx1NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQyMlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1ODMzOFx1NTFlN1x1ODZmOFx1NTNlYSJdLFsiYzNhMSIsIlx1NTNlOVx1NGY0'@; put 'Nlx1OTA1NFx1OGZiMFx1NTk2YVx1ODEzMVx1NWRmZFx1N2FlYVx1OGZiZlx1NjhkYVx1OGMzN1x1NzJmOFx1OWM0OFx1NmEzZFx1OGFiMFx1NGUzOVx1NTM1OFx1NTYwNlx1NTc2Nlx1NjJjNVx1NjNhMlx1NjVlNlx1NmI0ZVx1NmRlMVx1NmU1Ylx1NzBhZFx1NzdlZFx1N2FlZlx1N2JhYVx1'@; put 'N2RiYlx1ODAzZFx1ODBjNlx1ODZjYlx1OGE5NVx1OTM1Ylx1NTZlM1x1NThjN1x1NWYzZVx1NjVhZFx1NjY5Nlx1NmE4MFx1NmJiNVx1NzUzN1x1OGFjN1x1NTAyNFx1NzdlNVx1NTczMFx1NWYxYlx1NjA2NVx1NjY3YVx1NmM2MFx1NzVmNFx1N2ExYVx1N2Y2ZVx1ODFmNFx1ODcxOFx1OTA0'@; put 'NVx1OTliM1x1N2JjOVx1NzU1Y1x1N2FmOVx1N2I1MVx1ODRjNFx1OTAxMFx1NzllOVx1N2E5Mlx1ODMzNlx1NWFlMVx1Nzc0MFx1NGUyZFx1NGVmMlx1NWI5OVx1NWZlMFx1NjJiZFx1NjYzY1x1NjdmMVx1NmNlOFx1ODY2Ylx1ODg3N1x1OGEzYlx1OTE0ZVx1OTJmM1x1OTlkMFx1NmExN1x1'@; put 'NzAyNlx1NzMyYVx1ODJlN1x1ODQ1N1x1OGNhZlx1NGUwMVx1NTE0Nlx1NTFjYlx1NTU4Ylx1NWJmNSJdLFsiYzRhMSIsIlx1NWUxNlx1NWUzM1x1NWU4MVx1NWYxNFx1NWYzNVx1NWY2Ylx1NWZiNFx1NjFmMlx1NjMxMVx1NjZhMlx1NjcxZFx1NmY2ZVx1NzI1Mlx1NzUzYVx1NzczYVx1ODA3'@; put 'NFx1ODEzOVx1ODE3OFx1ODc3Nlx1OGFiZlx1OGFkY1x1OGQ4NVx1OGRmM1x1OTI5YVx1OTU3N1x1OTgwMlx1OWNlNVx1NTJjNVx1NjM1N1x1NzZmNFx1NjcxNVx1NmM4OFx1NzNjZFx1OGNjM1x1OTNhZVx1OTY3M1x1NmQyNVx1NTg5Y1x1NjkwZVx1NjljY1x1OGZmZFx1OTM5YVx1NzVkYlx1'@; put 'OTAxYVx1NTg1YVx1NjgwMlx1NjNiNFx1NjlmYlx1NGY0M1x1NmYyY1x1NjdkOFx1OGZiYlx1ODUyNlx1N2RiNFx1OTM1NFx1NjkzZlx1NmY3MFx1NTc2YVx1NThmN1x1NWIyY1x1N2QyY1x1NzIyYVx1NTQwYVx1OTFlM1x1OWRiNFx1NGVhZFx1NGY0ZVx1NTA1Y1x1NTA3NVx1NTI0M1x1OGM5'@; put 'ZVx1NTQ0OFx1NTgyNFx1NWI5YVx1NWUxZFx1NWU5NVx1NWVhZFx1NWVmN1x1NWYxZlx1NjA4Y1x1NjJiNVx1NjMzYVx1NjNkMFx1NjhhZlx1NmM0MFx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2RlMFx1ODI0N1x1OGEwMlx1OGFlNlx1OGU0NFx1OTAxMyJdLFsiYzVhMSIsIlx1OTBiOFx1OTEyZFx1'@; put 'OTFkOFx1OWYwZVx1NmNlNVx1NjQ1OFx1NjRlMlx1NjU3NVx1NmVmNFx1NzY4NFx1N2IxYlx1OTA2OVx1OTNkMVx1NmViYVx1NTRmMlx1NWZiOVx1NjRhNFx1OGY0ZFx1OGZlZFx1OTI0NFx1NTE3OFx1NTg2Ylx1NTkyOVx1NWM1NVx1NWU5N1x1NmRmYlx1N2U4Zlx1NzUxY1x1OGNiY1x1OGVl'@; put 'Mlx1OTg1Ylx1NzBiOVx1NGYxZFx1NmJiZlx1NmZiMVx1NzUzMFx1OTZmYlx1NTE0ZVx1NTQxMFx1NTgzNVx1NTg1N1x1NTlhY1x1NWM2MFx1NWY5Mlx1NjU5N1x1Njc1Y1x1NmUyMVx1NzY3Ylx1ODNkZlx1OGNlZFx1OTAxNFx1OTBmZFx1OTM0ZFx1NzgyNVx1NzgzYVx1NTJhYVx1NWVhNlx1'@; put 'NTcxZlx1NTk3NFx1NjAxMlx1NTAxMlx1NTE1YVx1NTFhY1x1NTFjZFx1NTIwMFx1NTUxMFx1NTg1NFx1NTg1OFx1NTk1N1x1NWI5NVx1NWNmNlx1NWQ4Ylx1NjBiY1x1NjI5NVx1NjQyZFx1Njc3MVx1Njg0M1x1NjhiY1x1NjhkZlx1NzZkN1x1NmRkOFx1NmU2Zlx1NmQ5Ylx1NzA2Zlx1NzFj'@; put 'OFx1NWY1M1x1NzVkOFx1Nzk3N1x1N2I0OVx1N2I1NFx1N2I1Mlx1N2NkNlx1N2Q3MVx1NTIzMCJdLFsiYzZhMSIsIlx1ODQ2M1x1ODU2OVx1ODVlNFx1OGEwZVx1OGIwNFx1OGM0Nlx1OGUwZlx1OTAwM1x1OTAwZlx1OTQxOVx1OTY3Nlx1OTgyZFx1OWEzMFx1OTVkOFx1NTBjZFx1NTJkNVx1'@; put 'NTQwY1x1NTgwMlx1NWMwZVx1NjFhN1x1NjQ5ZVx1NmQxZVx1NzdiM1x1N2FlNVx1ODBmNFx1ODQwNFx1OTA1M1x1OTI4NVx1NWNlMFx1OWQwN1x1NTMzZlx1NWY5N1x1NWZiM1x1NmQ5Y1x1NzI3OVx1Nzc2M1x1NzliZlx1N2JlNFx1NmJkMlx1NzJlY1x1OGFhZFx1NjgwM1x1NmE2MVx1NTFm'@; put 'OFx1N2E4MVx1NjkzNFx1NWM0YVx1OWNmNlx1ODJlYlx1NWJjNVx1OTE0OVx1NzAxZVx1NTY3OFx1NWM2Zlx1NjBjN1x1NjU2Nlx1NmM4Y1x1OGM1YVx1OTA0MVx1OTgxM1x1NTQ1MVx1NjZjN1x1OTIwZFx1NTk0OFx1OTBhM1x1NTE4NVx1NGU0ZFx1NTFlYVx1ODU5OVx1OGIwZVx1NzA1OFx1'@; put 'NjM3YVx1OTM0Ylx1Njk2Mlx1OTliNFx1N2UwNFx1NzU3N1x1NTM1N1x1Njk2MFx1OGVkZlx1OTZlM1x1NmM1ZFx1NGU4Y1x1NWMzY1x1NWYxMFx1OGZlOVx1NTMwMlx1OGNkMVx1ODA4OVx1ODY3OVx1NWVmZlx1NjVlNVx1NGU3M1x1NTE2NSJdLFsiYzdhMSIsIlx1NTk4Mlx1NWMzZlx1OTdl'@; put 'ZVx1NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFiMVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1NTdkY1x1NTZhMlx1NjBhOVx1NmZjM1x1N2QwZFx1ODBmZFx1ODEzM1x1'@; put 'ODFiZlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJhZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5Mlx1NjU1N1x1Njc2Zlx1NzZjM1x1NzI0Y1x1ODBjY1x1ODBiYVx1OGYy'@; put 'OVx1OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NVx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThmMlx1OGNlMFx1OTY2YVx1OTAxOVx1ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1NjJjZFx1NjdjZlx1NmNjYVx1NzY3ZFx1N2I5NFx1N2M5NVx1ODIzNlx1'@; put 'ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNiJdLFsiYzhhMSIsIlx1NTFmZFx1N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4Y1x1NzY3YVx1OTE5N1x1OWFl'@; put 'YVx1NGYxMFx1N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIyNFx1NTM0YVx1NTNjZFx1NTNkYlx1NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1NzU1NFx1N2U0MVx1ODIyY1x1'@; put 'ODVlOVx1OGNhOVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1ODU0M1x1ODZlZVx1NTMyYVx1NTM1MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBiMlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5MFx1NmJkNFx1NmNjY1x1NzVi'@; put 'Mlx1NzZhZVx1Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThkYlx1NmEwYlx1N2MzOFx1NTA5OVx1NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1NzcwOVx1N2Y4ZSJdLFsiYzlhMSIsIlx1OWYzYlx1NjdjYVx1N2ExN1x1'@; put 'NTMzOVx1NzU4Ylx1OWFlZFx1NWY2Nlx1ODE5ZFx1ODNmMVx1ODA5OFx1NWYzY1x1NWZjNVx1NzU2Mlx1N2I0Nlx1OTAzY1x1Njg2N1x1NTllYlx1NWE5Ylx1N2QxMFx1NzY3ZVx1OGIyY1x1NGZmNVx1NWY2YVx1NmExOVx1NmMzN1x1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGE1NVx1OGM3'@; put 'OVx1NWVkZlx1NjNjZlx1NzVjNVx1NzlkMlx1ODJkN1x1OTMyOFx1OTJmMlx1ODQ5Y1x1ODZlZFx1OWMyZFx1NTRjMVx1NWY2Y1x1NjU4Y1x1NmQ1Y1x1NzAxNVx1OGNhN1x1OGNkM1x1OTgzYlx1NjU0Zlx1NzRmNlx1NGUwZFx1NGVkOFx1NTdlMFx1NTkyYlx1NWE2Nlx1NWJjY1x1NTFhOFx1'@; put 'NWUwM1x1NWU5Y1x1NjAxNlx1NjI3Nlx1NjU3N1x1NjVhN1x1NjY2ZVx1NmQ2ZVx1NzIzNlx1N2IyNlx1ODE1MFx1ODE5YVx1ODI5OVx1OGI1Y1x1OGNhMFx1OGNlNlx1OGQ3NFx1OTYxY1x1OTY0NFx1NGZhZVx1NjRhYlx1NmI2Nlx1ODIxZVx1ODQ2MVx1ODU2YVx1OTBlOFx1NWMwMVx1Njk1'@; put 'M1x1OThhOFx1ODQ3YVx1ODU1N1x1NGYwZlx1NTI2Zlx1NWZhOVx1NWU0NVx1NjcwZCJdLFsiY2FhMSIsIlx1Nzk4Zlx1ODE3OVx1ODkwN1x1ODk4Nlx1NmRmNVx1NWYxN1x1NjI1NVx1NmNiOFx1NGVjZlx1NzI2OVx1OWI5Mlx1NTIwNlx1NTQzYlx1NTY3NFx1NThiM1x1NjFhNFx1NjI2ZVx1'@; put 'NzExYVx1NTk2ZVx1N2M4OVx1N2NkZVx1N2QxYlx1OTZmMFx1NjU4N1x1ODA1ZVx1NGUxOVx1NGY3NVx1NTE3NVx1NTg0MFx1NWU2M1x1NWU3M1x1NWYwYVx1NjdjNFx1NGUyNlx1ODUzZFx1OTU4OVx1OTY1Ylx1N2M3M1x1OTgwMVx1NTBmYlx1NThjMVx1NzY1Nlx1NzhhN1x1NTIyNVx1Nzdh'@; put 'NVx1ODUxMVx1N2I4Nlx1NTA0Zlx1NTkwOVx1NzI0N1x1N2JjN1x1N2RlOFx1OGZiYVx1OGZkNFx1OTA0ZFx1NGZiZlx1NTJjOVx1NWEyOVx1NWYwMVx1OTdhZFx1NGZkZFx1ODIxN1x1OTJlYVx1NTcwM1x1NjM1NVx1NmI2OVx1NzUyYlx1ODhkY1x1OGYxNFx1N2E0Mlx1NTJkZlx1NTg5M1x1'@; put 'NjE1NVx1NjIwYVx1NjZhZVx1NmJjZFx1N2MzZlx1ODNlOVx1NTAyM1x1NGZmOFx1NTMwNVx1NTQ0Nlx1NTgzMVx1NTk0OVx1NWI5ZFx1NWNmMFx1NWNlZlx1NWQyOVx1NWU5Nlx1NjJiMVx1NjM2N1x1NjUzZVx1NjViOVx1NjcwYiJdLFsiY2JhMSIsIlx1NmNkNVx1NmNlMVx1NzBmOVx1Nzgz'@; put 'Mlx1N2UyYlx1ODBkZVx1ODJiM1x1ODQwY1x1ODRlY1x1ODcwMlx1ODkxMlx1OGEyYVx1OGM0YVx1OTBhNlx1OTJkMlx1OThmZFx1OWNmM1x1OWQ2Y1x1NGU0Zlx1NGVhMVx1NTA4ZFx1NTI1Nlx1NTc0YVx1NTlhOFx1NWUzZFx1NWZkOFx1NWZkOVx1NjIzZlx1NjZiNFx1NjcxYlx1NjdkMFx1'@; put 'NjhkMlx1NTE5Mlx1N2QyMVx1ODBhYVx1ODFhOFx1OGIwMFx1OGM4Y1x1OGNiZlx1OTI3ZVx1OTYzMlx1NTQyMFx1OTgyY1x1NTMxN1x1NTBkNVx1NTM1Y1x1NThhOFx1NjRiMlx1NjczNFx1NzI2N1x1Nzc2Nlx1N2E0Nlx1OTFlNlx1NTJjM1x1NmNhMVx1NmI4Nlx1NTgwMFx1NWU0Y1x1NTk1'@; put 'NFx1NjcyY1x1N2ZmYlx1NTFlMVx1NzZjNlx1NjQ2OVx1NzhlOFx1OWI1NFx1OWViYlx1NTdjYlx1NTliOVx1NjYyN1x1Njc5YVx1NmJjZVx1NTRlOVx1NjlkOVx1NWU1NVx1ODE5Y1x1Njc5NVx1OWJhYVx1NjdmZVx1OWM1Mlx1Njg1ZFx1NGVhNlx1NGZlM1x1NTNjOFx1NjJiOVx1NjcyYlx1'@; put 'NmNhYlx1OGZjNFx1NGZhZFx1N2U2ZFx1OWViZlx1NGUwN1x1NjE2Mlx1NmU4MCJdLFsiY2NhMSIsIlx1NmYyYlx1ODUxM1x1NTQ3M1x1NjcyYVx1OWI0NVx1NWRmM1x1N2I5NVx1NWNhY1x1NWJjNlx1ODcxY1x1NmU0YVx1ODRkMVx1N2ExNFx1ODEwOFx1NTk5OVx1N2M4ZFx1NmMxMVx1Nzcy'@; put 'MFx1NTJkOVx1NTkyMlx1NzEyMVx1NzI1Zlx1NzdkYlx1OTcyN1x1OWQ2MVx1NjkwYlx1NWE3Zlx1NWExOFx1NTFhNVx1NTQwZFx1NTQ3ZFx1NjYwZVx1NzZkZlx1OGZmN1x1OTI5OFx1OWNmNFx1NTllYVx1NzI1ZFx1NmVjNVx1NTE0ZFx1NjhjOVx1N2RiZlx1N2RlY1x1OTc2Mlx1OWViYVx1'@; put 'NjQ3OFx1NmEyMVx1ODMwMlx1NTk4NFx1NWI1Zlx1NmJkYlx1NzMxYlx1NzZmMlx1N2RiMlx1ODAxN1x1ODQ5OVx1NTEzMlx1NjcyOFx1OWVkOVx1NzZlZVx1Njc2Mlx1NTJmZlx1OTkwNVx1NWMyNFx1NjIzYlx1N2M3ZVx1OGNiMFx1NTU0Zlx1NjBiNlx1N2QwYlx1OTU4MFx1NTMwMVx1NGU1'@; put 'Zlx1NTFiNlx1NTkxY1x1NzIzYVx1ODAzNlx1OTFjZVx1NWYyNVx1NzdlMlx1NTM4NFx1NWY3OVx1N2QwNFx1ODVhY1x1OGEzM1x1OGU4ZFx1OTc1Nlx1NjdmM1x1ODVhZVx1OTQ1M1x1NjEwOVx1NjEwOFx1NmNiOVx1NzY1MiJdLFsiY2RhMSIsIlx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1'@; put 'NTEyYVx1NTJjN1x1NTNjYlx1NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1MFx1ODhkNVx1OGE5OFx1OTA0YVx1OTA5MVx1OTBmNVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4'@; put 'OVx1OGYzZlx1OTgxMFx1NTBhZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1NzE5NFx1NzUyOFx1N2FhZlx1N2Y4YVx1ODAwMFx1ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1'@; put 'OTkwYVx1NjE3ZVx1NjI5MVx1NmIzMlx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNiMVx1OTgzY1x1OTZmN1x1NmQxYlx1N2Q2MVx1ODQzZFx1OTE2YVx1NGU3MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlh'@; put 'N1x1NTIyOVx1NTQwZlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4MyJdLFsiY2VhMSIsIlx1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1NWY4Ylx1NzM4N1x1N2FjYlx1ODQ0ZVx1NjNhMFx1NzU2NVx1NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1'@; put 'N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4MVx1NmRiY1x1NzMxZlx1NzY0Mlx1NzdhZFx1N2ExY1x1N2NlN1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgx'@; put 'OFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1NmQ5OVx1N2QyZlx1OTg1ZVx1NGVlNFx1NGYzNlx1NGY4Ylx1NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1'@; put 'ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5MFx1NmYyM1x1NzE0OVx1N2MzZVx1N2RmNFx1ODA2ZiJdLFsiY2ZhMSIsIlx1ODRlZVx1OTAyM1x1OTMyY1x1NTQ0Mlx1OWI2'@; put 'Zlx1NmFkM1x1NzA4OVx1OGNjMlx1OGRlZlx1OTczMlx1NTJiNFx1NWE0MVx1NWVjYVx1NWYwNFx1NjcxN1x1Njk3Y1x1Njk5NFx1NmQ2YVx1NmYwZlx1NzI2Mlx1NzJmY1x1N2JlZFx1ODAwMVx1ODA3ZVx1ODc0Ylx1OTBjZVx1NTE2ZFx1OWU5M1x1Nzk4NFx1ODA4Ylx1OTMzMlx1OGFkNlx1'@; put 'NTAyZFx1NTQ4Y1x1OGE3MVx1NmI2YVx1OGNjNFx1ODEwN1x1NjBkMVx1NjdhMFx1OWRmMlx1NGU5OVx1NGU5OFx1OWMxMFx1OGE2Ylx1ODVjMVx1ODU2OFx1NjkwMFx1NmU3ZVx1Nzg5N1x1ODE1NSJdLFsiZDBhMSIsIlx1NWYwY1x1NGUxMFx1NGUxNVx1NGUyYVx1NGUzMVx1NGUzNlx1NGUz'@; put 'Y1x1NGUzZlx1NGU0Mlx1NGU1Nlx1NGU1OFx1NGU4Mlx1NGU4NVx1OGM2Ylx1NGU4YVx1ODIxMlx1NWYwZFx1NGU4ZVx1NGU5ZVx1NGU5Zlx1NGVhMFx1NGVhMlx1NGViMFx1NGViM1x1NGViNlx1NGVjZVx1NGVjZFx1NGVjNFx1NGVjNlx1NGVjMlx1NGVkN1x1NGVkZVx1NGVlZFx1NGVkZlx1'@; put 'NGVmN1x1NGYwOVx1NGY1YVx1NGYzMFx1NGY1Ylx1NGY1ZFx1NGY1N1x1NGY0N1x1NGY3Nlx1NGY4OFx1NGY4Zlx1NGY5OFx1NGY3Ylx1NGY2OVx1NGY3MFx1NGY5MVx1NGY2Zlx1NGY4Nlx1NGY5Nlx1NTExOFx1NGZkNFx1NGZkZlx1NGZjZVx1NGZkOFx1NGZkYlx1NGZkMVx1NGZkYVx1NGZk'@; put 'MFx1NGZlNFx1NGZlNVx1NTAxYVx1NTAyOFx1NTAxNFx1NTAyYVx1NTAyNVx1NTAwNVx1NGYxY1x1NGZmNlx1NTAyMVx1NTAyOVx1NTAyY1x1NGZmZVx1NGZlZlx1NTAxMVx1NTAwNlx1NTA0M1x1NTA0N1x1NjcwM1x1NTA1NVx1NTA1MFx1NTA0OFx1NTA1YVx1NTA1Nlx1NTA2Y1x1NTA3OFx1'@; put 'NTA4MFx1NTA5YVx1NTA4NVx1NTBiNFx1NTBiMiJdLFsiZDFhMSIsIlx1NTBjOVx1NTBjYVx1NTBiM1x1NTBjMlx1NTBkNlx1NTBkZVx1NTBlNVx1NTBlZFx1NTBlM1x1NTBlZVx1NTBmOVx1NTBmNVx1NTEwOVx1NTEwMVx1NTEwMlx1NTExNlx1NTExNVx1NTExNFx1NTExYVx1NTEyMVx1NTEz'@; put 'YVx1NTEzN1x1NTEzY1x1NTEzYlx1NTEzZlx1NTE0MFx1NTE1Mlx1NTE0Y1x1NTE1NFx1NTE2Mlx1N2FmOFx1NTE2OVx1NTE2YVx1NTE2ZVx1NTE4MFx1NTE4Mlx1NTZkOFx1NTE4Y1x1NTE4OVx1NTE4Zlx1NTE5MVx1NTE5M1x1NTE5NVx1NTE5Nlx1NTFhNFx1NTFhNlx1NTFhMlx1NTFhOVx1'@; put 'NTFhYVx1NTFhYlx1NTFiM1x1NTFiMVx1NTFiMlx1NTFiMFx1NTFiNVx1NTFiZFx1NTFjNVx1NTFjOVx1NTFkYlx1NTFlMFx1ODY1NVx1NTFlOVx1NTFlZFx1NTFmMFx1NTFmNVx1NTFmZVx1NTIwNFx1NTIwYlx1NTIxNFx1NTIwZVx1NTIyN1x1NTIyYVx1NTIyZVx1NTIzM1x1NTIzOVx1NTI0'@; put 'Zlx1NTI0NFx1NTI0Ylx1NTI0Y1x1NTI1ZVx1NTI1NFx1NTI2YVx1NTI3NFx1NTI2OVx1NTI3M1x1NTI3Zlx1NTI3ZFx1NTI4ZFx1NTI5NFx1NTI5Mlx1NTI3MVx1NTI4OFx1NTI5MVx1OGZhOCJdLFsiZDJhMSIsIlx1OGZhN1x1NTJhY1x1NTJhZFx1NTJiY1x1NTJiNVx1NTJjMVx1NTJjZFx1'@; put 'NTJkN1x1NTJkZVx1NTJlM1x1NTJlNlx1OThlZFx1NTJlMFx1NTJmM1x1NTJmNVx1NTJmOFx1NTJmOVx1NTMwNlx1NTMwOFx1NzUzOFx1NTMwZFx1NTMxMFx1NTMwZlx1NTMxNVx1NTMxYVx1NTMyM1x1NTMyZlx1NTMzMVx1NTMzM1x1NTMzOFx1NTM0MFx1NTM0Nlx1NTM0NVx1NGUxN1x1NTM0'@; put 'OVx1NTM0ZFx1NTFkNlx1NTM1ZVx1NTM2OVx1NTM2ZVx1NTkxOFx1NTM3Ylx1NTM3N1x1NTM4Mlx1NTM5Nlx1NTNhMFx1NTNhNlx1NTNhNVx1NTNhZVx1NTNiMFx1NTNiNlx1NTNjM1x1N2MxMlx1OTZkOVx1NTNkZlx1NjZmY1x1NzFlZVx1NTNlZVx1NTNlOFx1NTNlZFx1NTNmYVx1NTQwMVx1'@; put 'NTQzZFx1NTQ0MFx1NTQyY1x1NTQyZFx1NTQzY1x1NTQyZVx1NTQzNlx1NTQyOVx1NTQxZFx1NTQ0ZVx1NTQ4Zlx1NTQ3NVx1NTQ4ZVx1NTQ1Zlx1NTQ3MVx1NTQ3N1x1NTQ3MFx1NTQ5Mlx1NTQ3Ylx1NTQ4MFx1NTQ3Nlx1NTQ4NFx1NTQ5MFx1NTQ4Nlx1NTRjN1x1NTRhMlx1NTRiOFx1NTRh'@; put 'NVx1NTRhY1x1NTRjNFx1NTRjOFx1NTRhOCJdLFsiZDNhMSIsIlx1NTRhYlx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1NTRmYVx1NTRlMlx1NTUzOVx1NTU0MFx1NTU2M1x1NTU0Y1x1NTUyZVx1NTU1Y1x1'@; put 'NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVhZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4N1x1NTVhOFx1NTVkYVx1NTVjNVx1NTVkZlx1NTVjNFx1NTVkY1x1NTVlNFx1NTVk'@; put 'NFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVmOVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOFx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1NTY2YVx1NTY4Nlx1NTY4MFx1NTY4YVx1NTZhMFx1NTY5NFx1NTY4Zlx1NTZhNVx1NTZhZVx1'@; put 'NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZmOVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOSJdLFsiZDRhMSIsIlx1NTcwOFx1NTcwYlx1NTcwZFx1NTcxM1x1NTcxOFx1NTcxNlx1NTVjN1x1NTcx'@; put 'Y1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1NTdjNlx1NTdkNFx1NTdkMlx1NTdkM1x1NTgwYVx1NTdkNlx1NTdlM1x1'@; put 'NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThhYlx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThhZVx1NThjNVx1NThkM1x1NThkMVx1NThkN1x1NThkOVx1NThkOFx1NThl'@; put 'NVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThmY1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1N2FkMlx1NTk1NVx1NTk1MFx1NTk0ZVx1NTk1YVx1NTk1OFx1NTk2Mlx1'@; put 'NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OSJdLFsiZDVhMSIsIlx1NTk3OFx1NTk4MVx1NTk5ZFx1NGY1ZVx1NGZhYlx1NTlhM1x1NTliMlx1NTljNlx1NTllOFx1NTlkY1x1NTk4ZFx1NTlkOVx1NTlkYVx1NWEyNVx1NWExZlx1NWExMVx1NWExY1x1NWEwOVx1NWExYVx1NWE0MFx1NWE2Y1x1NWE0'@; put 'OVx1NWEzNVx1NWEzNlx1NWE2Mlx1NWE2YVx1NWE5YVx1NWFiY1x1NWFiZVx1NWFjYlx1NWFjMlx1NWFiZFx1NWFlM1x1NWFkN1x1NWFlNlx1NWFlOVx1NWFkNlx1NWFmYVx1NWFmYlx1NWIwY1x1NWIwYlx1NWIxNlx1NWIzMlx1NWFkMFx1NWIyYVx1NWIzNlx1NWIzZVx1NWI0M1x1NWI0NVx1'@; put 'NWI0MFx1NWI1MVx1NWI1NVx1NWI1YVx1NWI1Ylx1NWI2NVx1NWI2OVx1NWI3MFx1NWI3M1x1NWI3NVx1NWI3OFx1NjU4OFx1NWI3YVx1NWI4MFx1NWI4M1x1NWJhNlx1NWJiOFx1NWJjM1x1NWJjN1x1NWJjOVx1NWJkNFx1NWJkMFx1NWJlNFx1NWJlNlx1NWJlMlx1NWJkZVx1NWJlNVx1NWJl'@; put 'Ylx1NWJmMFx1NWJmNlx1NWJmM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwZFx1NWMxM1x1NWMyMFx1NWMyMlx1NWMyOFx1NWMzOFx1NWMzOVx1NWM0MVx1NWM0Nlx1NWM0ZVx1NWM1MyJdLFsiZDZhMSIsIlx1NWM1MFx1NWM0Zlx1NWI3MVx1NWM2Y1x1NWM2ZVx1NGU2Mlx1NWM3Nlx1NWM3OVx1'@; put 'NWM4Y1x1NWM5MVx1NWM5NFx1NTk5Ylx1NWNhYlx1NWNiYlx1NWNiNlx1NWNiY1x1NWNiN1x1NWNjNVx1NWNiZVx1NWNjN1x1NWNkOVx1NWNlOVx1NWNmZFx1NWNmYVx1NWNlZFx1NWQ4Y1x1NWNlYVx1NWQwYlx1NWQxNVx1NWQxN1x1NWQ1Y1x1NWQxZlx1NWQxYlx1NWQxMVx1NWQxNFx1NWQy'@; put 'Mlx1NWQxYVx1NWQxOVx1NWQxOFx1NWQ0Y1x1NWQ1Mlx1NWQ0ZVx1NWQ0Ylx1NWQ2Y1x1NWQ3M1x1NWQ3Nlx1NWQ4N1x1NWQ4NFx1NWQ4Mlx1NWRhMlx1NWQ5ZFx1NWRhY1x1NWRhZVx1NWRiZFx1NWQ5MFx1NWRiN1x1NWRiY1x1NWRjOVx1NWRjZFx1NWRkM1x1NWRkMlx1NWRkNlx1NWRkYlx1'@; put 'NWRlYlx1NWRmMlx1NWRmNVx1NWUwYlx1NWUxYVx1NWUxOVx1NWUxMVx1NWUxYlx1NWUzNlx1NWUzN1x1NWU0NFx1NWU0M1x1NWU0MFx1NWU0ZVx1NWU1N1x1NWU1NFx1NWU1Zlx1NWU2Mlx1NWU2NFx1NWU0N1x1NWU3NVx1NWU3Nlx1NWU3YVx1OWViY1x1NWU3Zlx1NWVhMFx1NWVjMVx1NWVj'@; put 'Mlx1NWVjOFx1NWVkMFx1NWVjZiJdLFsiZDdhMSIsIlx1NWVkNlx1NWVlM1x1NWVkZFx1NWVkYVx1NWVkYlx1NWVlMlx1NWVlMVx1NWVlOFx1NWVlOVx1NWVlY1x1NWVmMVx1NWVmM1x1NWVmMFx1NWVmNFx1NWVmOFx1NWVmZVx1NWYwM1x1NWYwOVx1NWY1ZFx1NWY1Y1x1NWYwYlx1NWYxMVx1'@; put 'NWYxNlx1NWYyOVx1NWYyZFx1NWYzOFx1NWY0MVx1NWY0OFx1NWY0Y1x1NWY0ZVx1NWYyZlx1NWY1MVx1NWY1Nlx1NWY1N1x1NWY1OVx1NWY2MVx1NWY2ZFx1NWY3M1x1NWY3N1x1NWY4M1x1NWY4Mlx1NWY3Zlx1NWY4YVx1NWY4OFx1NWY5MVx1NWY4N1x1NWY5ZVx1NWY5OVx1NWY5OFx1NWZh'@; put 'MFx1NWZhOFx1NWZhZFx1NWZiY1x1NWZkNlx1NWZmYlx1NWZlNFx1NWZmOFx1NWZmMVx1NWZkZFx1NjBiM1x1NWZmZlx1NjAyMVx1NjA2MFx1NjAxOVx1NjAxMFx1NjAyOVx1NjAwZVx1NjAzMVx1NjAxYlx1NjAxNVx1NjAyYlx1NjAyNlx1NjAwZlx1NjAzYVx1NjA1YVx1NjA0MVx1NjA2YVx1'@; put 'NjA3N1x1NjA1Zlx1NjA0YVx1NjA0Nlx1NjA0ZFx1NjA2M1x1NjA0M1x1NjA2NFx1NjA0Mlx1NjA2Y1x1NjA2Ylx1NjA1OVx1NjA4MVx1NjA4ZFx1NjBlN1x1NjA4M1x1NjA5YSJdLFsiZDhhMSIsIlx1NjA4NFx1NjA5Ylx1NjA5Nlx1NjA5N1x1NjA5Mlx1NjBhN1x1NjA4Ylx1NjBlMVx1NjBi'@; put 'OFx1NjBlMFx1NjBkM1x1NjBiNFx1NWZmMFx1NjBiZFx1NjBjNlx1NjBiNVx1NjBkOFx1NjE0ZFx1NjExNVx1NjEwNlx1NjBmNlx1NjBmN1x1NjEwMFx1NjBmNFx1NjBmYVx1NjEwM1x1NjEyMVx1NjBmYlx1NjBmMVx1NjEwZFx1NjEwZVx1NjE0N1x1NjEzZVx1NjEyOFx1NjEyN1x1NjE0YVx1'@; put 'NjEzZlx1NjEzY1x1NjEyY1x1NjEzNFx1NjEzZFx1NjE0Mlx1NjE0NFx1NjE3M1x1NjE3N1x1NjE1OFx1NjE1OVx1NjE1YVx1NjE2Ylx1NjE3NFx1NjE2Zlx1NjE2NVx1NjE3MVx1NjE1Zlx1NjE1ZFx1NjE1M1x1NjE3NVx1NjE5OVx1NjE5Nlx1NjE4N1x1NjFhY1x1NjE5NFx1NjE5YVx1NjE4'@; put 'YVx1NjE5MVx1NjFhYlx1NjFhZVx1NjFjY1x1NjFjYVx1NjFjOVx1NjFmN1x1NjFjOFx1NjFjM1x1NjFjNlx1NjFiYVx1NjFjYlx1N2Y3OVx1NjFjZFx1NjFlNlx1NjFlM1x1NjFmNlx1NjFmYVx1NjFmNFx1NjFmZlx1NjFmZFx1NjFmY1x1NjFmZVx1NjIwMFx1NjIwOFx1NjIwOVx1NjIwZFx1'@; put 'NjIwY1x1NjIxNFx1NjIxYiJdLFsiZDlhMSIsIlx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIzM1x1NjI0MVx1NjI0ZVx1NjI1ZVx1NjI2M1x1NjI1Ylx1NjI2MFx1NjI2OFx1NjI3Y1x1NjI4Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJkNFx1NjI4'@; put 'M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1NjJjYVx1NjJjMlx1NjJjN1x1NjI5Ylx1NjJjOVx1NjMwY1x1NjJlZVx1NjJmMVx1NjMyN1x1NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1NjM0ZFx1'@; put 'NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNiNVx1NjM2Ylx1NjM2OVx1NjNiZVx1NjNlOVx1NjNjMFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNkMlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQwNlx1NjQxM1x1NjQy'@; put 'Nlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1NjQ5NVx1NjQ5M1x1NjRhNVx1NjRhOVx1NjQ4OFx1NjRiYyJdLFsiZGFhMSIsIlx1NjRkYVx1NjRkMlx1NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1'@; put 'ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRmZFx1NjUxOFx1NjUxY1x1NjUwNVx1NjUyNFx1NjUyM1x1NjUyYlx1NjUzNFx1NjUzNVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1'@; put 'NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1NjViN1x1NjVjM1x1NjVjNlx1NjVjMVx1NjVjNFx1NjVjY1x1NjVkMlx1NjVkYlx1NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1'@; put 'NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2NFx1NjY2N1x1NjY2OFx1NjY1Zlx1NjY2Mlx1NjY3MFx1NjY4M1x1NjY4OFx1NjY4ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZj'@; put 'OVx1NjZiZVx1NjZiYyJdLFsiZGJhMSIsIlx1NjZjNFx1NjZiOFx1NjZkNlx1NjZkYVx1NjZlMFx1NjYzZlx1NjZlNlx1NjZlOVx1NjZmMFx1NjZmNVx1NjZmN1x1NjcwZlx1NjcxNlx1NjcxZVx1NjcyNlx1NjcyN1x1OTczOFx1NjcyZVx1NjczZlx1NjczNlx1Njc0MVx1NjczOFx1NjczN1x1'@; put 'Njc0Nlx1Njc1ZVx1Njc2MFx1Njc1OVx1Njc2M1x1Njc2NFx1Njc4OVx1Njc3MFx1NjdhOVx1Njc3Y1x1Njc2YVx1Njc4Y1x1Njc4Ylx1NjdhNlx1NjdhMVx1Njc4NVx1NjdiN1x1NjdlZlx1NjdiNFx1NjdlY1x1NjdiM1x1NjdlOVx1NjdiOFx1NjdlNFx1NjdkZVx1NjdkZFx1NjdlMlx1Njdl'@; put 'ZVx1NjdiOVx1NjdjZVx1NjdjNlx1NjdlN1x1NmE5Y1x1NjgxZVx1Njg0Nlx1NjgyOVx1Njg0MFx1Njg0ZFx1NjgzMlx1Njg0ZVx1NjhiM1x1NjgyYlx1Njg1OVx1Njg2M1x1Njg3N1x1Njg3Zlx1Njg5Zlx1Njg4Zlx1NjhhZFx1Njg5NFx1Njg5ZFx1Njg5Ylx1Njg4M1x1NmFhZVx1NjhiOVx1'@; put 'Njg3NFx1NjhiNVx1NjhhMFx1NjhiYVx1NjkwZlx1Njg4ZFx1Njg3ZVx1NjkwMVx1NjhjYVx1NjkwOFx1NjhkOFx1NjkyMlx1NjkyNlx1NjhlMVx1NjkwY1x1NjhjZCJdLFsiZGNhMSIsIlx1NjhkNFx1NjhlN1x1NjhkNVx1NjkzNlx1NjkxMlx1NjkwNFx1NjhkN1x1NjhlM1x1NjkyNVx1Njhm'@; put 'OVx1NjhlMFx1NjhlZlx1NjkyOFx1NjkyYVx1NjkxYVx1NjkyM1x1NjkyMVx1NjhjNlx1Njk3OVx1Njk3N1x1Njk1Y1x1Njk3OFx1Njk2Ylx1Njk1NFx1Njk3ZVx1Njk2ZVx1NjkzOVx1Njk3NFx1NjkzZFx1Njk1OVx1NjkzMFx1Njk2MVx1Njk1ZVx1Njk1ZFx1Njk4MVx1Njk2YVx1NjliMlx1'@; put 'NjlhZVx1NjlkMFx1NjliZlx1NjljMVx1NjlkM1x1NjliZVx1NjljZVx1NWJlOFx1NjljYVx1NjlkZFx1NjliYlx1NjljM1x1NjlhN1x1NmEyZVx1Njk5MVx1NjlhMFx1Njk5Y1x1Njk5NVx1NjliNFx1NjlkZVx1NjllOFx1NmEwMlx1NmExYlx1NjlmZlx1NmIwYVx1NjlmOVx1NjlmMlx1Njll'@; put 'N1x1NmEwNVx1NjliMVx1NmExZVx1NjllZFx1NmExNFx1NjllYlx1NmEwYVx1NmExMlx1NmFjMVx1NmEyM1x1NmExM1x1NmE0NFx1NmEwY1x1NmE3Mlx1NmEzNlx1NmE3OFx1NmE0N1x1NmE2Mlx1NmE1OVx1NmE2Nlx1NmE0OFx1NmEzOFx1NmEyMlx1NmE5MFx1NmE4ZFx1NmFhMFx1NmE4NFx1'@; put 'NmFhMlx1NmFhMyJdLFsiZGRhMSIsIlx1NmE5N1x1ODYxN1x1NmFiYlx1NmFjM1x1NmFjMlx1NmFiOFx1NmFiM1x1NmFhY1x1NmFkZVx1NmFkMVx1NmFkZlx1NmFhYVx1NmFkYVx1NmFlYVx1NmFmYlx1NmIwNVx1ODYxNlx1NmFmYVx1NmIxMlx1NmIxNlx1OWIzMVx1NmIxZlx1NmIzOFx1NmIz'@; put 'N1x1NzZkY1x1NmIzOVx1OThlZVx1NmI0N1x1NmI0M1x1NmI0OVx1NmI1MFx1NmI1OVx1NmI1NFx1NmI1Ylx1NmI1Zlx1NmI2MVx1NmI3OFx1NmI3OVx1NmI3Zlx1NmI4MFx1NmI4NFx1NmI4M1x1NmI4ZFx1NmI5OFx1NmI5NVx1NmI5ZVx1NmJhNFx1NmJhYVx1NmJhYlx1NmJhZlx1NmJiMlx1'@; put 'NmJiMVx1NmJiM1x1NmJiN1x1NmJiY1x1NmJjNlx1NmJjYlx1NmJkM1x1NmJkZlx1NmJlY1x1NmJlYlx1NmJmM1x1NmJlZlx1OWViZVx1NmMwOFx1NmMxM1x1NmMxNFx1NmMxYlx1NmMyNFx1NmMyM1x1NmM1ZVx1NmM1NVx1NmM2Mlx1NmM2YVx1NmM4Mlx1NmM4ZFx1NmM5YVx1NmM4MVx1NmM5'@; put 'Ylx1NmM3ZVx1NmM2OFx1NmM3M1x1NmM5Mlx1NmM5MFx1NmNjNFx1NmNmMVx1NmNkM1x1NmNiZFx1NmNkN1x1NmNjNVx1NmNkZFx1NmNhZVx1NmNiMVx1NmNiZSJdLFsiZGVhMSIsIlx1NmNiYVx1NmNkYlx1NmNlZlx1NmNkOVx1NmNlYVx1NmQxZlx1ODg0ZFx1NmQzNlx1NmQyYlx1NmQzZFx1'@; put 'NmQzOFx1NmQxOVx1NmQzNVx1NmQzM1x1NmQxMlx1NmQwY1x1NmQ2M1x1NmQ5M1x1NmQ2NFx1NmQ1YVx1NmQ3OVx1NmQ1OVx1NmQ4ZVx1NmQ5NVx1NmZlNFx1NmQ4NVx1NmRmOVx1NmUxNVx1NmUwYVx1NmRiNVx1NmRjN1x1NmRlNlx1NmRiOFx1NmRjNlx1NmRlY1x1NmRkZVx1NmRjY1x1NmRl'@; put 'OFx1NmRkMlx1NmRjNVx1NmRmYVx1NmRkOVx1NmRlNFx1NmRkNVx1NmRlYVx1NmRlZVx1NmUyZFx1NmU2ZVx1NmUyZVx1NmUxOVx1NmU3Mlx1NmU1Zlx1NmUzZVx1NmUyM1x1NmU2Ylx1NmUyYlx1NmU3Nlx1NmU0ZFx1NmUxZlx1NmU0M1x1NmUzYVx1NmU0ZVx1NmUyNFx1NmVmZlx1NmUxZFx1'@; put 'NmUzOFx1NmU4Mlx1NmVhYVx1NmU5OFx1NmVjOVx1NmViN1x1NmVkM1x1NmViZFx1NmVhZlx1NmVjNFx1NmViMlx1NmVkNFx1NmVkNVx1NmU4Zlx1NmVhNVx1NmVjMlx1NmU5Zlx1NmY0MVx1NmYxMVx1NzA0Y1x1NmVlY1x1NmVmOFx1NmVmZVx1NmYzZlx1NmVmMlx1NmYzMVx1NmVlZlx1NmYz'@; put 'Mlx1NmVjYyJdLFsiZGZhMSIsIlx1NmYzZVx1NmYxM1x1NmVmN1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1NmY4Mlx1NmY3Y1x1NmY1OFx1NmY4ZVx1NmY5MVx1NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1'@; put 'NmZjNlx1NmZhYVx1NmZkZlx1NmZkNVx1NmZlY1x1NmZkNFx1NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAwZlx1NmZmZVx1NzAxYlx1NzAxYVx1NmY3NFx1NzAxZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2'@; put 'M1x1NzA5OVx1NzA5Mlx1NzBhZlx1NzBmMVx1NzBhY1x1NzBiOFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBjYlx1NzBkZFx1NzBkOVx1NzEwOVx1NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1NzE1NVx1NzE4OFx1NzE2Nlx1NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1'@; put 'NzE5NVx1NzFhOFx1NzFhY1x1NzFkN1x1NzFiOVx1NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFmNVx1NzFmYyJdLFsiZTBhMSIsIlx1NzFmOVx1NzFmZlx1NzIwZFx1NzIxMFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIz'@; put 'Ylx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1NzI0Ylx1NzI1OFx1NzI3NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1NzJjNFx1NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1'@; put 'NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMxNlx1NzMxZFx1NzMzNFx1NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3NVx1NzM3Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNl'@; put 'NVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1NzQ2Zlx1NzQyNVx1NzNmOFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQzZlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1NzQ3Nlx1NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1'@; put 'NzNmMSJdLFsiZTFhMSIsIlx1NzRlMFx1NzRlM1x1NzRlN1x1NzRlOVx1NzRlZVx1NzRmMlx1NzRmMFx1NzRmMVx1NzRmOFx1NzRmN1x1NzUwNFx1NzUwM1x1NzUwNVx1NzUwY1x1NzUwZVx1NzUwZFx1NzUxNVx1NzUxM1x1NzUxZVx1NzUyNlx1NzUyY1x1NzUzY1x1NzU0NFx1NzU0ZFx1NzU0'@; put 'YVx1NzU0OVx1NzU1Ylx1NzU0Nlx1NzU1YVx1NzU2OVx1NzU2NFx1NzU2N1x1NzU2Ylx1NzU2ZFx1NzU3OFx1NzU3Nlx1NzU4Nlx1NzU4N1x1NzU3NFx1NzU4YVx1NzU4OVx1NzU4Mlx1NzU5NFx1NzU5YVx1NzU5ZFx1NzVhNVx1NzVhM1x1NzVjMlx1NzViM1x1NzVjM1x1NzViNVx1NzViZFx1'@; put 'NzViOFx1NzViY1x1NzViMVx1NzVjZFx1NzVjYVx1NzVkMlx1NzVkOVx1NzVlM1x1NzVkZVx1NzVmZVx1NzVmZlx1NzVmY1x1NzYwMVx1NzVmMFx1NzVmYVx1NzVmMlx1NzVmM1x1NzYwYlx1NzYwZFx1NzYwOVx1NzYxZlx1NzYyN1x1NzYyMFx1NzYyMVx1NzYyMlx1NzYyNFx1NzYzNFx1NzYz'@; put 'MFx1NzYzYlx1NzY0N1x1NzY0OFx1NzY0Nlx1NzY1Y1x1NzY1OFx1NzY2MVx1NzY2Mlx1NzY2OFx1NzY2OVx1NzY2YVx1NzY2N1x1NzY2Y1x1NzY3MCJdLFsiZTJhMSIsIlx1NzY3Mlx1NzY3Nlx1NzY3OFx1NzY3Y1x1NzY4MFx1NzY4M1x1NzY4OFx1NzY4Ylx1NzY4ZVx1NzY5Nlx1NzY5M1x1'@; put 'NzY5OVx1NzY5YVx1NzZiMFx1NzZiNFx1NzZiOFx1NzZiOVx1NzZiYVx1NzZjMlx1NzZjZFx1NzZkNlx1NzZkMlx1NzZkZVx1NzZlMVx1NzZlNVx1NzZlN1x1NzZlYVx1ODYyZlx1NzZmYlx1NzcwOFx1NzcwN1x1NzcwNFx1NzcyOVx1NzcyNFx1NzcxZVx1NzcyNVx1NzcyNlx1NzcxYlx1Nzcz'@; put 'N1x1NzczOFx1Nzc0N1x1Nzc1YVx1Nzc2OFx1Nzc2Ylx1Nzc1Ylx1Nzc2NVx1Nzc3Zlx1Nzc3ZVx1Nzc3OVx1Nzc4ZVx1Nzc4Ylx1Nzc5MVx1NzdhMFx1Nzc5ZVx1NzdiMFx1NzdiNlx1NzdiOVx1NzdiZlx1NzdiY1x1NzdiZFx1NzdiYlx1NzdjN1x1NzdjZFx1NzdkN1x1NzdkYVx1NzdkY1x1'@; put 'NzdlM1x1NzdlZVx1NzdmY1x1NzgwY1x1NzgxMlx1NzkyNlx1NzgyMFx1NzkyYVx1Nzg0NVx1Nzg4ZVx1Nzg3NFx1Nzg4Nlx1Nzg3Y1x1Nzg5YVx1Nzg4Y1x1NzhhM1x1NzhiNVx1NzhhYVx1NzhhZlx1NzhkMVx1NzhjNlx1NzhjYlx1NzhkNFx1NzhiZVx1NzhiY1x1NzhjNVx1NzhjYVx1Nzhl'@; put 'YyJdLFsiZTNhMSIsIlx1NzhlN1x1NzhkYVx1NzhmZFx1NzhmNFx1NzkwN1x1NzkxMlx1NzkxMVx1NzkxOVx1NzkyY1x1NzkyYlx1Nzk0MFx1Nzk2MFx1Nzk1N1x1Nzk1Zlx1Nzk1YVx1Nzk1NVx1Nzk1M1x1Nzk3YVx1Nzk3Zlx1Nzk4YVx1Nzk5ZFx1NzlhN1x1OWY0Ylx1NzlhYVx1NzlhZVx1'@; put 'NzliM1x1NzliOVx1NzliYVx1NzljOVx1NzlkNVx1NzllN1x1NzllY1x1NzllMVx1NzllM1x1N2EwOFx1N2EwZFx1N2ExOFx1N2ExOVx1N2EyMFx1N2ExZlx1Nzk4MFx1N2EzMVx1N2EzYlx1N2EzZVx1N2EzN1x1N2E0M1x1N2E1N1x1N2E0OVx1N2E2MVx1N2E2Mlx1N2E2OVx1OWY5ZFx1N2E3'@; put 'MFx1N2E3OVx1N2E3ZFx1N2E4OFx1N2E5N1x1N2E5NVx1N2E5OFx1N2E5Nlx1N2FhOVx1N2FjOFx1N2FiMFx1N2FiNlx1N2FjNVx1N2FjNFx1N2FiZlx1OTA4M1x1N2FjN1x1N2FjYVx1N2FjZFx1N2FjZlx1N2FkNVx1N2FkM1x1N2FkOVx1N2FkYVx1N2FkZFx1N2FlMVx1N2FlMlx1N2FlNlx1'@; put 'N2FlZFx1N2FmMFx1N2IwMlx1N2IwZlx1N2IwYVx1N2IwNlx1N2IzM1x1N2IxOFx1N2IxOVx1N2IxZVx1N2IzNVx1N2IyOFx1N2IzNlx1N2I1MCJdLFsiZTRhMSIsIlx1N2I3YVx1N2IwNFx1N2I0ZFx1N2IwYlx1N2I0Y1x1N2I0NVx1N2I3NVx1N2I2NVx1N2I3NFx1N2I2N1x1N2I3MFx1N2I3'@; put 'MVx1N2I2Y1x1N2I2ZVx1N2I5ZFx1N2I5OFx1N2I5Zlx1N2I4ZFx1N2I5Y1x1N2I5YVx1N2I4Ylx1N2I5Mlx1N2I4Zlx1N2I1ZFx1N2I5OVx1N2JjYlx1N2JjMVx1N2JjY1x1N2JjZlx1N2JiNFx1N2JjNlx1N2JkZFx1N2JlOVx1N2MxMVx1N2MxNFx1N2JlNlx1N2JlNVx1N2M2MFx1N2MwMFx1'@; put 'N2MwN1x1N2MxM1x1N2JmM1x1N2JmN1x1N2MxN1x1N2MwZFx1N2JmNlx1N2MyM1x1N2MyN1x1N2MyYVx1N2MxZlx1N2MzN1x1N2MyYlx1N2MzZFx1N2M0Y1x1N2M0M1x1N2M1NFx1N2M0Zlx1N2M0MFx1N2M1MFx1N2M1OFx1N2M1Zlx1N2M2NFx1N2M1Nlx1N2M2NVx1N2M2Y1x1N2M3NVx1N2M4'@; put 'M1x1N2M5MFx1N2NhNFx1N2NhZFx1N2NhMlx1N2NhYlx1N2NhMVx1N2NhOFx1N2NiM1x1N2NiMlx1N2NiMVx1N2NhZVx1N2NiOVx1N2NiZFx1N2NjMFx1N2NjNVx1N2NjMlx1N2NkOFx1N2NkMlx1N2NkY1x1N2NlMlx1OWIzYlx1N2NlZlx1N2NmMlx1N2NmNFx1N2NmNlx1N2NmYVx1N2QwNiJd'@; put 'LFsiZTVhMSIsIlx1N2QwMlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2QzZlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2M1x1N2Q5M1x1N2Q4OVx1N2Q1Ylx1N2Q4Zlx1N2Q3ZFx1N2Q5Ylx1N2Ri'@; put 'YVx1N2RhZVx1N2RhM1x1N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1N2UwNVx1N2UwYVx1N2UyM1x1N2UyMVx1N2UxMlx1N2UzMVx1N2UxZlx1'@; put 'N2UwOVx1N2UwYlx1N2UyMlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzN1x1N2UzMlx1N2UzYVx1N2U2N1x1N2U1ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2OVx1N2U3Y1x1N2U3Ylx1N2U4M1x1N2RkNVx1N2U3ZFx1OGZhZVx1N2U3'@; put 'Zlx1N2U4OFx1N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYSJdLFsiZTZhMSIsIlx1N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1OFx1N2Y1Zlx1N2Y2MFx1N2Y2OFx1'@; put 'N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2ZiMlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1N2ZkNVx1N2ZkNFx1N2ZlMVx1N2Zl'@; put 'Nlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3M1x1ODA3Mlx1ODA3MFx1ODA3Nlx1'@; put 'ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBhY1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBkZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBlZlx1ODBmMVx1ODExYlx1ODEyOVx1ODEyM1x1ODEyZlx1ODE0YiJdLFsi'@; put 'ZTdhMSIsIlx1OTY4Ylx1ODE0Nlx1ODEzZVx1ODE1M1x1ODE1MVx1ODBmY1x1ODE3MVx1ODE2ZVx1ODE2NVx1ODE2Nlx1ODE3NFx1ODE4M1x1ODE4OFx1ODE4YVx1ODE4MFx1ODE4Mlx1ODFhMFx1ODE5NVx1ODFhNFx1ODFhM1x1ODE1Zlx1ODE5M1x1ODFhOVx1ODFiMFx1ODFiNVx1ODFiZVx1'@; put 'ODFiOFx1ODFiZFx1ODFjMFx1ODFjMlx1ODFiYVx1ODFjOVx1ODFjZFx1ODFkMVx1ODFkOVx1ODFkOFx1ODFjOFx1ODFkYVx1ODFkZlx1ODFlMFx1ODFlN1x1ODFmYVx1ODFmYlx1ODFmZVx1ODIwMVx1ODIwMlx1ODIwNVx1ODIwN1x1ODIwYVx1ODIwZFx1ODIxMFx1ODIxNlx1ODIyOVx1ODIy'@; put 'Ylx1ODIzOFx1ODIzM1x1ODI0MFx1ODI1OVx1ODI1OFx1ODI1ZFx1ODI1YVx1ODI1Zlx1ODI2NFx1ODI2Mlx1ODI2OFx1ODI2YVx1ODI2Ylx1ODIyZVx1ODI3MVx1ODI3N1x1ODI3OFx1ODI3ZVx1ODI4ZFx1ODI5Mlx1ODJhYlx1ODI5Zlx1ODJiYlx1ODJhY1x1ODJlMVx1ODJlM1x1ODJkZlx1'@; put 'ODJkMlx1ODJmNFx1ODJmM1x1ODJmYVx1ODM5M1x1ODMwM1x1ODJmYlx1ODJmOVx1ODJkZVx1ODMwNlx1ODJkY1x1ODMwOVx1ODJkOSJdLFsiZThhMSIsIlx1ODMzNVx1ODMzNFx1ODMxNlx1ODMzMlx1ODMzMVx1ODM0MFx1ODMzOVx1ODM1MFx1ODM0NVx1ODMyZlx1ODMyYlx1ODMxN1x1ODMx'@; put 'OFx1ODM4NVx1ODM5YVx1ODNhYVx1ODM5Zlx1ODNhMlx1ODM5Nlx1ODMyM1x1ODM4ZVx1ODM4N1x1ODM4YVx1ODM3Y1x1ODNiNVx1ODM3M1x1ODM3NVx1ODNhMFx1ODM4OVx1ODNhOFx1ODNmNFx1ODQxM1x1ODNlYlx1ODNjZVx1ODNmZFx1ODQwM1x1ODNkOFx1ODQwYlx1ODNjMVx1ODNmN1x1'@; put 'ODQwN1x1ODNlMFx1ODNmMlx1ODQwZFx1ODQyMlx1ODQyMFx1ODNiZFx1ODQzOFx1ODUwNlx1ODNmYlx1ODQ2ZFx1ODQyYVx1ODQzY1x1ODU1YVx1ODQ4NFx1ODQ3N1x1ODQ2Ylx1ODRhZFx1ODQ2ZVx1ODQ4Mlx1ODQ2OVx1ODQ0Nlx1ODQyY1x1ODQ2Zlx1ODQ3OVx1ODQzNVx1ODRjYVx1ODQ2'@; put 'Mlx1ODRiOVx1ODRiZlx1ODQ5Zlx1ODRkOVx1ODRjZFx1ODRiYlx1ODRkYVx1ODRkMFx1ODRjMVx1ODRjNlx1ODRkNlx1ODRhMVx1ODUyMVx1ODRmZlx1ODRmNFx1ODUxN1x1ODUxOFx1ODUyY1x1ODUxZlx1ODUxNVx1ODUxNFx1ODRmY1x1ODU0MFx1ODU2M1x1ODU1OFx1ODU0OCJdLFsiZTlh'@; put 'MSIsIlx1ODU0MVx1ODYwMlx1ODU0Ylx1ODU1NVx1ODU4MFx1ODVhNFx1ODU4OFx1ODU5MVx1ODU4YVx1ODVhOFx1ODU2ZFx1ODU5NFx1ODU5Ylx1ODVlYVx1ODU4N1x1ODU5Y1x1ODU3N1x1ODU3ZVx1ODU5MFx1ODVjOVx1ODViYVx1ODVjZlx1ODViOVx1ODVkMFx1ODVkNVx1ODVkZFx1ODVl'@; put 'NVx1ODVkY1x1ODVmOVx1ODYwYVx1ODYxM1x1ODYwYlx1ODVmZVx1ODVmYVx1ODYwNlx1ODYyMlx1ODYxYVx1ODYzMFx1ODYzZlx1ODY0ZFx1NGU1NVx1ODY1NFx1ODY1Zlx1ODY2N1x1ODY3MVx1ODY5M1x1ODZhM1x1ODZhOVx1ODZhYVx1ODY4Ylx1ODY4Y1x1ODZiNlx1ODZhZlx1ODZjNFx1'@; put 'ODZjNlx1ODZiMFx1ODZjOVx1ODgyM1x1ODZhYlx1ODZkNFx1ODZkZVx1ODZlOVx1ODZlY1x1ODZkZlx1ODZkYlx1ODZlZlx1ODcxMlx1ODcwNlx1ODcwOFx1ODcwMFx1ODcwM1x1ODZmYlx1ODcxMVx1ODcwOVx1ODcwZFx1ODZmOVx1ODcwYVx1ODczNFx1ODczZlx1ODczN1x1ODczYlx1ODcy'@; put 'NVx1ODcyOVx1ODcxYVx1ODc2MFx1ODc1Zlx1ODc3OFx1ODc0Y1x1ODc0ZVx1ODc3NFx1ODc1N1x1ODc2OFx1ODc2ZVx1ODc1OSJdLFsiZWFhMSIsIlx1ODc1M1x1ODc2M1x1ODc2YVx1ODgwNVx1ODdhMlx1ODc5Zlx1ODc4Mlx1ODdhZlx1ODdjYlx1ODdiZFx1ODdjMFx1ODdkMFx1OTZkNlx1'@; put 'ODdhYlx1ODdjNFx1ODdiM1x1ODdjN1x1ODdjNlx1ODdiYlx1ODdlZlx1ODdmMlx1ODdlMFx1ODgwZlx1ODgwZFx1ODdmZVx1ODdmNlx1ODdmN1x1ODgwZVx1ODdkMlx1ODgxMVx1ODgxNlx1ODgxNVx1ODgyMlx1ODgyMVx1ODgzMVx1ODgzNlx1ODgzOVx1ODgyN1x1ODgzYlx1ODg0NFx1ODg0'@; put 'Mlx1ODg1Mlx1ODg1OVx1ODg1ZVx1ODg2Mlx1ODg2Ylx1ODg4MVx1ODg3ZVx1ODg5ZVx1ODg3NVx1ODg3ZFx1ODhiNVx1ODg3Mlx1ODg4Mlx1ODg5N1x1ODg5Mlx1ODhhZVx1ODg5OVx1ODhhMlx1ODg4ZFx1ODhhNFx1ODhiMFx1ODhiZlx1ODhiMVx1ODhjM1x1ODhjNFx1ODhkNFx1ODhkOFx1'@; put 'ODhkOVx1ODhkZFx1ODhmOVx1ODkwMlx1ODhmY1x1ODhmNFx1ODhlOFx1ODhmMlx1ODkwNFx1ODkwY1x1ODkwYVx1ODkxM1x1ODk0M1x1ODkxZVx1ODkyNVx1ODkyYVx1ODkyYlx1ODk0MVx1ODk0NFx1ODkzYlx1ODkzNlx1ODkzOFx1ODk0Y1x1ODkxZFx1ODk2MFx1ODk1ZSJdLFsiZWJhMSIs'@; put 'Ilx1ODk2Nlx1ODk2NFx1ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlhOVx1ODlhNlx1ODlhY1x1ODlhZlx1ODliMlx1ODliYVx1ODliZFx1ODliZlx1ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1'@; put 'ODlmNFx1ODlmOFx1OGEwM1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1OGE3Y1x1OGE2ZFx1OGE2Y1x1OGE2Mlx1OGE4NVx1OGE4Mlx1OGE4NFx1OGFhOFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5'@; put 'YVx1OGFhM1x1OGFjNFx1OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlN1x1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1OGFmN1x1OGFkZVx1OGFkYlx1OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1OGIxNlx1OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1'@; put 'OGIyYlx1OGIzZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2YiJdLFsiZWNhMSIsIlx1OGI1Zlx1OGI2Y1x1OGI2Zlx1OGI3NFx1OGI3ZFx1OGI4MFx1OGI4Y1x1OGI4ZVx1OGI5Mlx1OGI5M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMz'@; put 'YVx1OGM0MVx1OGMzZlx1OGM0OFx1OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1OGM4ZFx1OGM4ZVx1OGM5NFx1OGM3Y1x1OGM5OFx1NjIxZFx1OGNhZFx1OGNhYVx1OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1'@; put 'OGNiNlx1OGNjOFx1OGNjMVx1OGNlNFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQxMFx1OWY0ZVx1OGQxM1x1OGNjZFx1OGQxNFx1OGQxNlx1OGQ2N1x1OGQ2ZFx1OGQ3MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRj'@; put 'Mlx1OGRiZVx1OGRiYVx1OGRjZlx1OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1OGRmZlx1OGUxZFx1OGUxZVx1OGUxMFx1OGUxZlx1OGU0Mlx1OGUzNVx1OGUzMFx1OGUzNFx1OGU0YSJdLFsiZWRhMSIsIlx1'@; put 'OGU0N1x1OGU0OVx1OGU0Y1x1OGU1MFx1OGU0OFx1OGU1OVx1OGU2NFx1OGU2MFx1OGUyYVx1OGU2M1x1OGU1NVx1OGU3Nlx1OGU3Mlx1OGU3Y1x1OGU4MVx1OGU4N1x1OGU4NVx1OGU4NFx1OGU4Ylx1OGU4YVx1OGU5M1x1OGU5MVx1OGU5NFx1OGU5OVx1OGVhYVx1OGVhMVx1OGVhY1x1OGVi'@; put 'MFx1OGVjNlx1OGViMVx1OGViZVx1OGVjNVx1OGVjOFx1OGVjYlx1OGVkYlx1OGVlM1x1OGVmY1x1OGVmYlx1OGVlYlx1OGVmZVx1OGYwYVx1OGYwNVx1OGYxNVx1OGYxMlx1OGYxOVx1OGYxM1x1OGYxY1x1OGYxZlx1OGYxYlx1OGYwY1x1OGYyNlx1OGYzM1x1OGYzYlx1OGYzOVx1OGY0NVx1'@; put 'OGY0Mlx1OGYzZVx1OGY0Y1x1OGY0OVx1OGY0Nlx1OGY0ZVx1OGY1N1x1OGY1Y1x1OGY2Mlx1OGY2M1x1OGY2NFx1OGY5Y1x1OGY5Zlx1OGZhM1x1OGZhZFx1OGZhZlx1OGZiN1x1OGZkYVx1OGZlNVx1OGZlMlx1OGZlYVx1OGZlZlx1OTA4N1x1OGZmNFx1OTAwNVx1OGZmOVx1OGZmYVx1OTAx'@; put 'MVx1OTAxNVx1OTAyMVx1OTAwZFx1OTAxZVx1OTAxNlx1OTAwYlx1OTAyN1x1OTAzNlx1OTAzNVx1OTAzOVx1OGZmOCJdLFsiZWVhMSIsIlx1OTA0Zlx1OTA1MFx1OTA1MVx1OTA1Mlx1OTAwZVx1OTA0OVx1OTAzZVx1OTA1Nlx1OTA1OFx1OTA1ZVx1OTA2OFx1OTA2Zlx1OTA3Nlx1OTZhOFx1'@; put 'OTA3Mlx1OTA4Mlx1OTA3ZFx1OTA4MVx1OTA4MFx1OTA4YVx1OTA4OVx1OTA4Zlx1OTBhOFx1OTBhZlx1OTBiMVx1OTBiNVx1OTBlMlx1OTBlNFx1NjI0OFx1OTBkYlx1OTEwMlx1OTExMlx1OTExOVx1OTEzMlx1OTEzMFx1OTE0YVx1OTE1Nlx1OTE1OFx1OTE2M1x1OTE2NVx1OTE2OVx1OTE3'@; put 'M1x1OTE3Mlx1OTE4Ylx1OTE4OVx1OTE4Mlx1OTFhMlx1OTFhYlx1OTFhZlx1OTFhYVx1OTFiNVx1OTFiNFx1OTFiYVx1OTFjMFx1OTFjMVx1OTFjOVx1OTFjYlx1OTFkMFx1OTFkNlx1OTFkZlx1OTFlMVx1OTFkYlx1OTFmY1x1OTFmNVx1OTFmNlx1OTIxZVx1OTFmZlx1OTIxNFx1OTIyY1x1'@; put 'OTIxNVx1OTIxMVx1OTI1ZVx1OTI1N1x1OTI0NVx1OTI0OVx1OTI2NFx1OTI0OFx1OTI5NVx1OTIzZlx1OTI0Ylx1OTI1MFx1OTI5Y1x1OTI5Nlx1OTI5M1x1OTI5Ylx1OTI1YVx1OTJjZlx1OTJiOVx1OTJiN1x1OTJlOVx1OTMwZlx1OTJmYVx1OTM0NFx1OTMyZSJdLFsiZWZhMSIsIlx1OTMx'@; put 'OVx1OTMyMlx1OTMxYVx1OTMyM1x1OTMzYVx1OTMzNVx1OTMzYlx1OTM1Y1x1OTM2MFx1OTM3Y1x1OTM2ZVx1OTM1Nlx1OTNiMFx1OTNhY1x1OTNhZFx1OTM5NFx1OTNiOVx1OTNkNlx1OTNkN1x1OTNlOFx1OTNlNVx1OTNkOFx1OTNjM1x1OTNkZFx1OTNkMFx1OTNjOFx1OTNlNFx1OTQxYVx1'@; put 'OTQxNFx1OTQxM1x1OTQwM1x1OTQwN1x1OTQxMFx1OTQzNlx1OTQyYlx1OTQzNVx1OTQyMVx1OTQzYVx1OTQ0MVx1OTQ1Mlx1OTQ0NFx1OTQ1Ylx1OTQ2MFx1OTQ2Mlx1OTQ1ZVx1OTQ2YVx1OTIyOVx1OTQ3MFx1OTQ3NVx1OTQ3N1x1OTQ3ZFx1OTQ1YVx1OTQ3Y1x1OTQ3ZVx1OTQ4MVx1OTQ3'@; put 'Zlx1OTU4Mlx1OTU4N1x1OTU4YVx1OTU5NFx1OTU5Nlx1OTU5OFx1OTU5OVx1OTVhMFx1OTVhOFx1OTVhN1x1OTVhZFx1OTViY1x1OTViYlx1OTViOVx1OTViZVx1OTVjYVx1NmZmNlx1OTVjM1x1OTVjZFx1OTVjY1x1OTVkNVx1OTVkNFx1OTVkNlx1OTVkY1x1OTVlMVx1OTVlNVx1OTVlMlx1'@; put 'OTYyMVx1OTYyOFx1OTYyZVx1OTYyZlx1OTY0Mlx1OTY0Y1x1OTY0Zlx1OTY0Ylx1OTY3N1x1OTY1Y1x1OTY1ZSJdLFsiZjBhMSIsIlx1OTY1ZFx1OTY1Zlx1OTY2Nlx1OTY3Mlx1OTY2Y1x1OTY4ZFx1OTY5OFx1OTY5NVx1OTY5N1x1OTZhYVx1OTZhN1x1OTZiMVx1OTZiMlx1OTZiMFx1OTZi'@; put 'NFx1OTZiNlx1OTZiOFx1OTZiOVx1OTZjZVx1OTZjYlx1OTZjOVx1OTZjZFx1ODk0ZFx1OTZkY1x1OTcwZFx1OTZkNVx1OTZmOVx1OTcwNFx1OTcwNlx1OTcwOFx1OTcxM1x1OTcwZVx1OTcxMVx1OTcwZlx1OTcxNlx1OTcxOVx1OTcyNFx1OTcyYVx1OTczMFx1OTczOVx1OTczZFx1OTczZVx1'@; put 'OTc0NFx1OTc0Nlx1OTc0OFx1OTc0Mlx1OTc0OVx1OTc1Y1x1OTc2MFx1OTc2NFx1OTc2Nlx1OTc2OFx1NTJkMlx1OTc2Ylx1OTc3MVx1OTc3OVx1OTc4NVx1OTc3Y1x1OTc4MVx1OTc3YVx1OTc4Nlx1OTc4Ylx1OTc4Zlx1OTc5MFx1OTc5Y1x1OTdhOFx1OTdhNlx1OTdhM1x1OTdiM1x1OTdi'@; put 'NFx1OTdjM1x1OTdjNlx1OTdjOFx1OTdjYlx1OTdkY1x1OTdlZFx1OWY0Zlx1OTdmMlx1N2FkZlx1OTdmNlx1OTdmNVx1OTgwZlx1OTgwY1x1OTgzOFx1OTgyNFx1OTgyMVx1OTgzN1x1OTgzZFx1OTg0Nlx1OTg0Zlx1OTg0Ylx1OTg2Ylx1OTg2Zlx1OTg3MCJdLFsiZjFhMSIsIlx1OTg3MVx1'@; put 'OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1OThjM1x1OThjNlx1OThlOVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1OTkxOFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTkyMFx1OTkyY1x1OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0'@; put 'NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5N1x1OTk5OFx1OTlhNVx1OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlkZFx1OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1OTlmMlx1OTlmYlx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1'@; put 'OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0M1x1OWEzZVx1OWE1NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2Mlx1OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFiMFx1OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFk'@; put 'ZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFlYlx1OWFlZVx1OWFmNFx1OWFmMVx1OWFmNyJdLFsiZjJhMSIsIlx1OWFmYlx1OWIwNlx1OWIxOFx1OWIxYVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1'@; put 'OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1OWI5M1x1OWI4M1x1OWI5MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJhOFx1OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJjNlx1OWJjZlx1OWJkMVx1OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJk'@; put 'NFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMwOVx1OWMxM1x1OWMwY1x1OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1OWMyZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1OWMzMFx1OWM0N1x1OWMzMlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1'@; put 'OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1OWNlYlx1OWQwM1x1OWQwNlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQxZlx1OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQzZlx1OWQzZVx1OWQ0Nlx1OWQ0OCJdLFsiZjNhMSIsIlx1OWQ1ZFx1OWQ1'@; put 'ZVx1OWQ2NFx1OWQ1MVx1OWQ1MFx1OWQ1OVx1OWQ3Mlx1OWQ4OVx1OWQ4N1x1OWRhYlx1OWQ2Zlx1OWQ3YVx1OWQ5YVx1OWRhNFx1OWRhOVx1OWRiMlx1OWRjNFx1OWRjMVx1OWRiYlx1OWRiOFx1OWRiYVx1OWRjNlx1OWRjZlx1OWRjMlx1OWRkOVx1OWRkM1x1OWRmOFx1OWRlNlx1OWRlZFx1'@; put 'OWRlZlx1OWRmZFx1OWUxYVx1OWUxYlx1OWUxZVx1OWU3NVx1OWU3OVx1OWU3ZFx1OWU4MVx1OWU4OFx1OWU4Ylx1OWU4Y1x1OWU5Mlx1OWU5NVx1OWU5MVx1OWU5ZFx1OWVhNVx1OWVhOVx1OWViOFx1OWVhYVx1OWVhZFx1OTc2MVx1OWVjY1x1OWVjZVx1OWVjZlx1OWVkMFx1OWVkNFx1OWVk'@; put 'Y1x1OWVkZVx1OWVkZFx1OWVlMFx1OWVlNVx1OWVlOFx1OWVlZlx1OWVmNFx1OWVmNlx1OWVmN1x1OWVmOVx1OWVmYlx1OWVmY1x1OWVmZFx1OWYwN1x1OWYwOFx1NzZiN1x1OWYxNVx1OWYyMVx1OWYyY1x1OWYzZVx1OWY0YVx1OWY1Mlx1OWY1NFx1OWY2M1x1OWY1Zlx1OWY2MFx1OWY2MVx1'@; put 'OWY2Nlx1OWY2N1x1OWY2Y1x1OWY2YVx1OWY3N1x1OWY3Mlx1OWY3Nlx1OWY5NVx1OWY5Y1x1OWZhMCJdLFsiZjRhMSIsIlx1NTgyZlx1NjljN1x1OTA1OVx1NzQ2NFx1NTFkY1x1NzE5OSJdLFsiZjlhMSIsIlx1N2U4YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYz'@; put 'MVx1NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1NGY5YVx1NGY5NFx1NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YVx1'@; put 'NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIxNVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3Mlx1NTM5M1x1NTNiMlx1NTNkZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRmZlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1NTdjN1x1ZmEw'@; put 'Zlx1ZmExMFx1NTg5ZVx1NThiMlx1NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1NzUyZlx1NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRiOVx1NWRkMFx1'@; put 'NWYyMVx1NWYzNFx1NWY2N1x1NWZiNyJdLFsiZmFhMSIsIlx1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjExMVx1NjEzN1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNmNVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYz'@; put 'Ylx1NjYwOVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1NjcwZVx1ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1'@; put 'NjllMlx1NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQwNFx1NmQ4N1x1NmQ2Zlx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmVi'@; put 'Zlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1NzFmZVx1NzJiMSJdLFsiZmJhMSIsIlx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1'@; put 'NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmEx'@; put 'YVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1'@; put 'ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEy'@; put 'Nlx1OTExNVx1OTEyN1x1OTFkYSJdLFsiZmNhMSIsIlx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1'@; put 'OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZh'@; put 'Zlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1'@; put 'OWVkMSJdLFsiZmNmMSIsIlx1MjE3MCIsOSwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyIl0sWyI4ZmEyYWYiLCJcdTAyZDhcdTAyYzdceGI4XHUwMmQ5XHUwMmRkXHhhZlx1MDJkYlx1MDJkYVx1ZmY1ZVx1MDM4NFx1MDM4NSJdLFsiOGZhMmMyIiwiXHhhMVx4YTZceGJmIl0sWyI4ZmEyZWIi'@; put 'LCJceGJhXHhhYVx4YTlceGFlXHUyMTIyXHhhNFx1MjExNiJdLFsiOGZhNmUxIiwiXHUwMzg2XHUwMzg4XHUwMzg5XHUwMzhhXHUwM2FhIl0sWyI4ZmE2ZTciLCJcdTAzOGMiXSxbIjhmYTZlOSIsIlx1MDM4ZVx1MDNhYiJdLFsiOGZhNmVjIiwiXHUwMzhmIl0sWyI4ZmE2ZjEiLCJcdTAzYWNc'@; put 'dTAzYWRcdTAzYWVcdTAzYWZcdTAzY2FcdTAzOTBcdTAzY2NcdTAzYzJcdTAzY2RcdTAzY2JcdTAzYjBcdTAzY2UiXSxbIjhmYTdjMiIsIlx1MDQwMiIsMTAsIlx1MDQwZVx1MDQwZiJdLFsiOGZhN2YyIiwiXHUwNDUyIiwxMCwiXHUwNDVlXHUwNDVmIl0sWyI4ZmE5YTEiLCJceGM2XHUwMTEw'@; put 'Il0sWyI4ZmE5YTQiLCJcdTAxMjYiXSxbIjhmYTlhNiIsIlx1MDEzMiJdLFsiOGZhOWE4IiwiXHUwMTQxXHUwMTNmIl0sWyI4ZmE5YWIiLCJcdTAxNGFceGQ4XHUwMTUyIl0sWyI4ZmE5YWYiLCJcdTAxNjZceGRlIl0sWyI4ZmE5YzEiLCJceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEz'@; put 'M1x1MDEzOFx1MDE0Mlx1MDE0MFx1MDE0OVx1MDE0Ylx4ZjhcdTAxNTNceGRmXHUwMTY3XHhmZSJdLFsiOGZhYWExIiwiXHhjMVx4YzBceGM0XHhjMlx1MDEwMlx1MDFjZFx1MDEwMFx1MDEwNFx4YzVceGMzXHUwMTA2XHUwMTA4XHUwMTBjXHhjN1x1MDEwYVx1MDEwZVx4YzlceGM4XHhjYlx4'@; put 'Y2FcdTAxMWFcdTAxMTZcdTAxMTJcdTAxMTgiXSxbIjhmYWFiYSIsIlx1MDExY1x1MDExZVx1MDEyMlx1MDEyMFx1MDEyNFx4Y2RceGNjXHhjZlx4Y2VcdTAxY2ZcdTAxMzBcdTAxMmFcdTAxMmVcdTAxMjhcdTAxMzRcdTAxMzZcdTAxMzlcdTAxM2RcdTAxM2JcdTAxNDNcdTAxNDdcdTAxNDVc'@; put 'eGQxXHhkM1x4ZDJceGQ2XHhkNFx1MDFkMVx1MDE1MFx1MDE0Y1x4ZDVcdTAxNTRcdTAxNThcdTAxNTZcdTAxNWFcdTAxNWNcdTAxNjBcdTAxNWVcdTAxNjRcdTAxNjJceGRhXHhkOVx4ZGNceGRiXHUwMTZjXHUwMWQzXHUwMTcwXHUwMTZhXHUwMTcyXHUwMTZlXHUwMTY4XHUwMWQ3XHUwMWRi'@; put 'XHUwMWQ5XHUwMWQ1XHUwMTc0XHhkZFx1MDE3OFx1MDE3Nlx1MDE3OVx1MDE3ZFx1MDE3YiJdLFsiOGZhYmExIiwiXHhlMVx4ZTBceGU0XHhlMlx1MDEwM1x1MDFjZVx1MDEwMVx1MDEwNVx4ZTVceGUzXHUwMTA3XHUwMTA5XHUwMTBkXHhlN1x1MDEwYlx1MDEwZlx4ZTlceGU4XHhlYlx4ZWFc'@; put 'dTAxMWJcdTAxMTdcdTAxMTNcdTAxMTlcdTAxZjVcdTAxMWRcdTAxMWYiXSxbIjhmYWJiZCIsIlx1MDEyMVx1MDEyNVx4ZWRceGVjXHhlZlx4ZWVcdTAxZDAiXSxbIjhmYWJjNSIsIlx1MDEyYlx1MDEyZlx1MDEyOVx1MDEzNVx1MDEzN1x1MDEzYVx1MDEzZVx1MDEzY1x1MDE0NFx1MDE0OFx1'@; put 'MDE0Nlx4ZjFceGYzXHhmMlx4ZjZceGY0XHUwMWQyXHUwMTUxXHUwMTRkXHhmNVx1MDE1NVx1MDE1OVx1MDE1N1x1MDE1Ylx1MDE1ZFx1MDE2MVx1MDE1Zlx1MDE2NVx1MDE2M1x4ZmFceGY5XHhmY1x4ZmJcdTAxNmRcdTAxZDRcdTAxNzFcdTAxNmJcdTAxNzNcdTAxNmZcdTAxNjlcdTAxZDhc'@; put 'dTAxZGNcdTAxZGFcdTAxZDZcdTAxNzVceGZkXHhmZlx1MDE3N1x1MDE3YVx1MDE3ZVx1MDE3YyJdLFsiOGZiMGExIiwiXHU0ZTAyXHU0ZTA0XHU0ZTA1XHU0ZTBjXHU0ZTEyXHU0ZTFmXHU0ZTIzXHU0ZTI0XHU0ZTI4XHU0ZTJiXHU0ZTJlXHU0ZTJmXHU0ZTMwXHU0ZTM1XHU0ZTQwXHU0ZTQx'@; put 'XHU0ZTQ0XHU0ZTQ3XHU0ZTUxXHU0ZTVhXHU0ZTVjXHU0ZTYzXHU0ZTY4XHU0ZTY5XHU0ZTc0XHU0ZTc1XHU0ZTc5XHU0ZTdmXHU0ZThkXHU0ZTk2XHU0ZTk3XHU0ZTlkXHU0ZWFmXHU0ZWI5XHU0ZWMzXHU0ZWQwXHU0ZWRhXHU0ZWRiXHU0ZWUwXHU0ZWUxXHU0ZWUyXHU0ZWU4XHU0ZWVmXHU0'@; put 'ZWYxXHU0ZWYzXHU0ZWY1XHU0ZWZkXHU0ZWZlXHU0ZWZmXHU0ZjAwXHU0ZjAyXHU0ZjAzXHU0ZjA4XHU0ZjBiXHU0ZjBjXHU0ZjEyXHU0ZjE1XHU0ZjE2XHU0ZjE3XHU0ZjE5XHU0ZjJlXHU0ZjMxXHU0ZjYwXHU0ZjMzXHU0ZjM1XHU0ZjM3XHU0ZjM5XHU0ZjNiXHU0ZjNlXHU0ZjQwXHU0ZjQy'@; put 'XHU0ZjQ4XHU0ZjQ5XHU0ZjRiXHU0ZjRjXHU0ZjUyXHU0ZjU0XHU0ZjU2XHU0ZjU4XHU0ZjVmXHU0ZjYzXHU0ZjZhXHU0ZjZjXHU0ZjZlXHU0ZjcxXHU0Zjc3XHU0Zjc4XHU0Zjc5XHU0ZjdhXHU0ZjdkXHU0ZjdlXHU0ZjgxXHU0ZjgyXHU0Zjg0Il0sWyI4ZmIxYTEiLCJcdTRmODVcdTRmODlc'@; put 'dTRmOGFcdTRmOGNcdTRmOGVcdTRmOTBcdTRmOTJcdTRmOTNcdTRmOTRcdTRmOTdcdTRmOTlcdTRmOWFcdTRmOWVcdTRmOWZcdTRmYjJcdTRmYjdcdTRmYjlcdTRmYmJcdTRmYmNcdTRmYmRcdTRmYmVcdTRmYzBcdTRmYzFcdTRmYzVcdTRmYzZcdTRmYzhcdTRmYzlcdTRmY2JcdTRmY2NcdTRm'@; put 'Y2RcdTRmY2ZcdTRmZDJcdTRmZGNcdTRmZTBcdTRmZTJcdTRmZjBcdTRmZjJcdTRmZmNcdTRmZmRcdTRmZmZcdTUwMDBcdTUwMDFcdTUwMDRcdTUwMDdcdTUwMGFcdTUwMGNcdTUwMGVcdTUwMTBcdTUwMTNcdTUwMTdcdTUwMThcdTUwMWJcdTUwMWNcdTUwMWRcdTUwMWVcdTUwMjJcdTUwMjdc'@; put 'dTUwMmVcdTUwMzBcdTUwMzJcdTUwMzNcdTUwMzVcdTUwNDBcdTUwNDFcdTUwNDJcdTUwNDVcdTUwNDZcdTUwNGFcdTUwNGNcdTUwNGVcdTUwNTFcdTUwNTJcdTUwNTNcdTUwNTdcdTUwNTlcdTUwNWZcdTUwNjBcdTUwNjJcdTUwNjNcdTUwNjZcdTUwNjdcdTUwNmFcdTUwNmRcdTUwNzBcdTUw'@; put 'NzFcdTUwM2JcdTUwODFcdTUwODNcdTUwODRcdTUwODZcdTUwOGFcdTUwOGVcdTUwOGZcdTUwOTAiXSxbIjhmYjJhMSIsIlx1NTA5Mlx1NTA5M1x1NTA5NFx1NTA5Nlx1NTA5Ylx1NTA5Y1x1NTA5ZSIsNCwiXHU1MGFhXHU1MGFmXHU1MGIwXHU1MGI5XHU1MGJhXHU1MGJkXHU1MGMwXHU1MGMz'@; put 'XHU1MGM0XHU1MGM3XHU1MGNjXHU1MGNlXHU1MGQwXHU1MGQzXHU1MGQ0XHU1MGQ4XHU1MGRjXHU1MGRkXHU1MGRmXHU1MGUyXHU1MGU0XHU1MGU2XHU1MGU4XHU1MGU5XHU1MGVmXHU1MGYxXHU1MGY2XHU1MGZhXHU1MGZlXHU1MTAzXHU1MTA2XHU1MTA3XHU1MTA4XHU1MTBiXHU1MTBjXHU1'@; put 'MTBkXHU1MTBlXHU1MGYyXHU1MTEwXHU1MTE3XHU1MTE5XHU1MTFiXHU1MTFjXHU1MTFkXHU1MTFlXHU1MTIzXHU1MTI3XHU1MTI4XHU1MTJjXHU1MTJkXHU1MTJmXHU1MTMxXHU1MTMzXHU1MTM0XHU1MTM1XHU1MTM4XHU1MTM5XHU1MTQyXHU1MTRhXHU1MTRmXHU1MTUzXHU1MTU1XHU1MTU3'@; put 'XHU1MTU4XHU1MTVmXHU1MTY0XHU1MTY2XHU1MTdlXHU1MTgzXHU1MTg0XHU1MThiXHU1MThlXHU1MTk4XHU1MTlkXHU1MWExXHU1MWEzXHU1MWFkXHU1MWI4XHU1MWJhXHU1MWJjXHU1MWJlXHU1MWJmXHU1MWMyIl0sWyI4ZmIzYTEiLCJcdTUxYzhcdTUxY2ZcdTUxZDFcdTUxZDJcdTUxZDNc'@; put 'dTUxZDVcdTUxZDhcdTUxZGVcdTUxZTJcdTUxZTVcdTUxZWVcdTUxZjJcdTUxZjNcdTUxZjRcdTUxZjdcdTUyMDFcdTUyMDJcdTUyMDVcdTUyMTJcdTUyMTNcdTUyMTVcdTUyMTZcdTUyMThcdTUyMjJcdTUyMjhcdTUyMzFcdTUyMzJcdTUyMzVcdTUyM2NcdTUyNDVcdTUyNDlcdTUyNTVcdTUy'@; put 'NTdcdTUyNThcdTUyNWFcdTUyNWNcdTUyNWZcdTUyNjBcdTUyNjFcdTUyNjZcdTUyNmVcdTUyNzdcdTUyNzhcdTUyNzlcdTUyODBcdTUyODJcdTUyODVcdTUyOGFcdTUyOGNcdTUyOTNcdTUyOTVcdTUyOTZcdTUyOTdcdTUyOThcdTUyOWFcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdc'@; put 'dTUyYWZcdTUyYjBcdTUyYjZcdTUyYjdcdTUyYjhcdTUyYmFcdTUyYmJcdTUyYmRcdTUyYzBcdTUyYzRcdTUyYzZcdTUyYzhcdTUyY2NcdTUyY2ZcdTUyZDFcdTUyZDRcdTUyZDZcdTUyZGJcdTUyZGNcdTUyZTFcdTUyZTVcdTUyZThcdTUyZTlcdTUyZWFcdTUyZWNcdTUyZjBcdTUyZjFcdTUy'@; put 'ZjRcdTUyZjZcdTUyZjdcdTUzMDBcdTUzMDNcdTUzMGFcdTUzMGIiXSxbIjhmYjRhMSIsIlx1NTMwY1x1NTMxMVx1NTMxM1x1NTMxOFx1NTMxYlx1NTMxY1x1NTMxZVx1NTMxZlx1NTMyNVx1NTMyN1x1NTMyOFx1NTMyOVx1NTMyYlx1NTMyY1x1NTMyZFx1NTMzMFx1NTMzMlx1NTMzNVx1NTMz'@; put 'Y1x1NTMzZFx1NTMzZVx1NTM0Mlx1NTM0Y1x1NTM0Ylx1NTM1OVx1NTM1Ylx1NTM2MVx1NTM2M1x1NTM2NVx1NTM2Y1x1NTM2ZFx1NTM3Mlx1NTM3OVx1NTM3ZVx1NTM4M1x1NTM4N1x1NTM4OFx1NTM4ZVx1NTM5M1x1NTM5NFx1NTM5OVx1NTM5ZFx1NTNhMVx1NTNhNFx1NTNhYVx1NTNhYlx1'@; put 'NTNhZlx1NTNiMlx1NTNiNFx1NTNiNVx1NTNiN1x1NTNiOFx1NTNiYVx1NTNiZFx1NTNjMFx1NTNjNVx1NTNjZlx1NTNkMlx1NTNkM1x1NTNkNVx1NTNkYVx1NTNkZFx1NTNkZVx1NTNlMFx1NTNlNlx1NTNlN1x1NTNmNVx1NTQwMlx1NTQxM1x1NTQxYVx1NTQyMVx1NTQyN1x1NTQyOFx1NTQy'@; put 'YVx1NTQyZlx1NTQzMVx1NTQzNFx1NTQzNVx1NTQ0M1x1NTQ0NFx1NTQ0N1x1NTQ0ZFx1NTQ0Zlx1NTQ1ZVx1NTQ2Mlx1NTQ2NFx1NTQ2Nlx1NTQ2N1x1NTQ2OVx1NTQ2Ylx1NTQ2ZFx1NTQ2ZVx1NTQ3NFx1NTQ3ZiJdLFsiOGZiNWExIiwiXHU1NDgxXHU1NDgzXHU1NDg1XHU1NDg4XHU1NDg5'@; put 'XHU1NDhkXHU1NDkxXHU1NDk1XHU1NDk2XHU1NDljXHU1NDlmXHU1NGExXHU1NGE2XHU1NGE3XHU1NGE5XHU1NGFhXHU1NGFkXHU1NGFlXHU1NGIxXHU1NGI3XHU1NGI5XHU1NGJhXHU1NGJiXHU1NGJmXHU1NGM2XHU1NGNhXHU1NGNkXHU1NGNlXHU1NGUwXHU1NGVhXHU1NGVjXHU1NGVmXHU1'@; put 'NGY2XHU1NGZjXHU1NGZlXHU1NGZmXHU1NTAwXHU1NTAxXHU1NTA1XHU1NTA4XHU1NTA5XHU1NTBjXHU1NTBkXHU1NTBlXHU1NTE1XHU1NTJhXHU1NTJiXHU1NTMyXHU1NTM1XHU1NTM2XHU1NTNiXHU1NTNjXHU1NTNkXHU1NTQxXHU1NTQ3XHU1NTQ5XHU1NTRhXHU1NTRkXHU1NTUwXHU1NTUx'@; put 'XHU1NTU4XHU1NTVhXHU1NTViXHU1NTVlXHU1NTYwXHU1NTYxXHU1NTY0XHU1NTY2XHU1NTdmXHU1NTgxXHU1NTgyXHU1NTg2XHU1NTg4XHU1NThlXHU1NThmXHU1NTkxXHU1NTkyXHU1NTkzXHU1NTk0XHU1NTk3XHU1NWEzXHU1NWE0XHU1NWFkXHU1NWIyXHU1NWJmXHU1NWMxXHU1NWMzXHU1'@; put 'NWM2XHU1NWM5XHU1NWNiXHU1NWNjXHU1NWNlXHU1NWQxXHU1NWQyIl0sWyI4ZmI2YTEiLCJcdTU1ZDNcdTU1ZDdcdTU1ZDhcdTU1ZGJcdTU1ZGVcdTU1ZTJcdTU1ZTlcdTU1ZjZcdTU1ZmZcdTU2MDVcdTU2MDhcdTU2MGFcdTU2MGQiLDUsIlx1NTYxOVx1NTYyY1x1NTYzMFx1NTYzM1x1NTYz'@; put 'NVx1NTYzN1x1NTYzOVx1NTYzYlx1NTYzY1x1NTYzZFx1NTYzZlx1NTY0MFx1NTY0MVx1NTY0M1x1NTY0NFx1NTY0Nlx1NTY0OVx1NTY0Ylx1NTY0ZFx1NTY0Zlx1NTY1NFx1NTY1ZVx1NTY2MFx1NTY2MVx1NTY2Mlx1NTY2M1x1NTY2Nlx1NTY2OVx1NTY2ZFx1NTY2Zlx1NTY3MVx1NTY3Mlx1'@; put 'NTY3NVx1NTY4NFx1NTY4NVx1NTY4OFx1NTY4Ylx1NTY4Y1x1NTY5NVx1NTY5OVx1NTY5YVx1NTY5ZFx1NTY5ZVx1NTY5Zlx1NTZhNlx1NTZhN1x1NTZhOFx1NTZhOVx1NTZhYlx1NTZhY1x1NTZhZFx1NTZiMVx1NTZiM1x1NTZiN1x1NTZiZVx1NTZjNVx1NTZjOVx1NTZjYVx1NTZjYlx1NTZj'@; put 'Zlx1NTZkMFx1NTZjY1x1NTZjZFx1NTZkOVx1NTZkY1x1NTZkZFx1NTZkZlx1NTZlMVx1NTZlNCIsNCwiXHU1NmYxXHU1NmViXHU1NmVkIl0sWyI4ZmI3YTEiLCJcdTU2ZjZcdTU2ZjdcdTU3MDFcdTU3MDJcdTU3MDdcdTU3MGFcdTU3MGNcdTU3MTFcdTU3MTVcdTU3MWFcdTU3MWJcdTU3MWRc'@; put 'dTU3MjBcdTU3MjJcdTU3MjNcdTU3MjRcdTU3MjVcdTU3MjlcdTU3MmFcdTU3MmNcdTU3MmVcdTU3MmZcdTU3MzNcdTU3MzRcdTU3M2RcdTU3M2VcdTU3M2ZcdTU3NDVcdTU3NDZcdTU3NGNcdTU3NGRcdTU3NTJcdTU3NjJcdTU3NjVcdTU3NjdcdTU3NjhcdTU3NmJcdTU3NmQiLDQsIlx1NTc3'@; put 'M1x1NTc3NFx1NTc3NVx1NTc3N1x1NTc3OVx1NTc3YVx1NTc3Ylx1NTc3Y1x1NTc3ZVx1NTc4MVx1NTc4M1x1NTc4Y1x1NTc5NFx1NTc5N1x1NTc5OVx1NTc5YVx1NTc5Y1x1NTc5ZFx1NTc5ZVx1NTc5Zlx1NTdhMVx1NTc5NVx1NTdhN1x1NTdhOFx1NTdhOVx1NTdhY1x1NTdiOFx1NTdiZFx1'@; put 'NTdjN1x1NTdjOFx1NTdjY1x1NTdjZlx1NTdkNVx1NTdkZFx1NTdkZVx1NTdlNFx1NTdlNlx1NTdlN1x1NTdlOVx1NTdlZFx1NTdmMFx1NTdmNVx1NTdmNlx1NTdmOFx1NTdmZFx1NTdmZVx1NTdmZlx1NTgwM1x1NTgwNFx1NTgwOFx1NTgwOVx1NTdlMSJdLFsiOGZiOGExIiwiXHU1ODBjXHU1'@; put 'ODBkXHU1ODFiXHU1ODFlXHU1ODFmXHU1ODIwXHU1ODI2XHU1ODI3XHU1ODJkXHU1ODMyXHU1ODM5XHU1ODNmXHU1ODQ5XHU1ODRjXHU1ODRkXHU1ODRmXHU1ODUwXHU1ODU1XHU1ODVmXHU1ODYxXHU1ODY0XHU1ODY3XHU1ODY4XHU1ODc4XHU1ODdjXHU1ODdmXHU1ODgwXHU1ODgxXHU1ODg3'@; put 'XHU1ODg4XHU1ODg5XHU1ODhhXHU1ODhjXHU1ODhkXHU1ODhmXHU1ODkwXHU1ODk0XHU1ODk2XHU1ODlkXHU1OGEwXHU1OGExXHU1OGEyXHU1OGE2XHU1OGE5XHU1OGIxXHU1OGIyXHU1OGM0XHU1OGJjXHU1OGMyXHU1OGM4XHU1OGNkXHU1OGNlXHU1OGQwXHU1OGQyXHU1OGQ0XHU1OGQ2XHU1'@; put 'OGRhXHU1OGRkXHU1OGUxXHU1OGUyXHU1OGU5XHU1OGYzXHU1OTA1XHU1OTA2XHU1OTBiXHU1OTBjXHU1OTEyXHU1OTEzXHU1OTE0XHU4NjQxXHU1OTFkXHU1OTIxXHU1OTIzXHU1OTI0XHU1OTI4XHU1OTJmXHU1OTMwXHU1OTMzXHU1OTM1XHU1OTM2XHU1OTNmXHU1OTQzXHU1OTQ2XHU1OTUy'@; put 'XHU1OTUzXHU1OTU5XHU1OTViXHU1OTVkXHU1OTVlXHU1OTVmXHU1OTYxXHU1OTYzXHU1OTZiXHU1OTZkIl0sWyI4ZmI5YTEiLCJcdTU5NmZcdTU5NzJcdTU5NzVcdTU5NzZcdTU5NzlcdTU5N2JcdTU5N2NcdTU5OGJcdTU5OGNcdTU5OGVcdTU5OTJcdTU5OTVcdTU5OTdcdTU5OWZcdTU5YTRc'@; put 'dTU5YTdcdTU5YWRcdTU5YWVcdTU5YWZcdTU5YjBcdTU5YjNcdTU5YjdcdTU5YmFcdTU5YmNcdTU5YzFcdTU5YzNcdTU5YzRcdTU5YzhcdTU5Y2FcdTU5Y2RcdTU5ZDJcdTU5ZGRcdTU5ZGVcdTU5ZGZcdTU5ZTNcdTU5ZTRcdTU5ZTdcdTU5ZWVcdTU5ZWZcdTU5ZjFcdTU5ZjJcdTU5ZjRcdTU5'@; put 'ZjdcdTVhMDBcdTVhMDRcdTVhMGNcdTVhMGRcdTVhMGVcdTVhMTJcdTVhMTNcdTVhMWVcdTVhMjNcdTVhMjRcdTVhMjdcdTVhMjhcdTVhMmFcdTVhMmRcdTVhMzBcdTVhNDRcdTVhNDVcdTVhNDdcdTVhNDhcdTVhNGNcdTVhNTBcdTVhNTVcdTVhNWVcdTVhNjNcdTVhNjVcdTVhNjdcdTVhNmRc'@; put 'dTVhNzdcdTVhN2FcdTVhN2JcdTVhN2VcdTVhOGJcdTVhOTBcdTVhOTNcdTVhOTZcdTVhOTlcdTVhOWNcdTVhOWVcdTVhOWZcdTVhYTBcdTVhYTJcdTVhYTdcdTVhYWNcdTVhYjFcdTVhYjJcdTVhYjNcdTVhYjVcdTVhYjhcdTVhYmFcdTVhYmJcdTVhYmYiXSxbIjhmYmFhMSIsIlx1NWFjNFx1'@; put 'NWFjNlx1NWFjOFx1NWFjZlx1NWFkYVx1NWFkY1x1NWFlMFx1NWFlNVx1NWFlYVx1NWFlZVx1NWFmNVx1NWFmNlx1NWFmZFx1NWIwMFx1NWIwMVx1NWIwOFx1NWIxN1x1NWIzNFx1NWIxOVx1NWIxYlx1NWIxZFx1NWIyMVx1NWIyNVx1NWIyZFx1NWIzOFx1NWI0MVx1NWI0Ylx1NWI0Y1x1NWI1'@; put 'Mlx1NWI1Nlx1NWI1ZVx1NWI2OFx1NWI2ZVx1NWI2Zlx1NWI3Y1x1NWI3ZFx1NWI3ZVx1NWI3Zlx1NWI4MVx1NWI4NFx1NWI4Nlx1NWI4YVx1NWI4ZVx1NWI5MFx1NWI5MVx1NWI5M1x1NWI5NFx1NWI5Nlx1NWJhOFx1NWJhOVx1NWJhY1x1NWJhZFx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1'@; put 'NWJiYVx1NWJiY1x1NWJjMFx1NWJjMVx1NWJjZFx1NWJjZlx1NWJkNiIsNCwiXHU1YmUwXHU1YmVmXHU1YmYxXHU1YmY0XHU1YmZkXHU1YzBjXHU1YzE3XHU1YzFlXHU1YzFmXHU1YzIzXHU1YzI2XHU1YzI5XHU1YzJiXHU1YzJjXHU1YzJlXHU1YzMwXHU1YzMyXHU1YzM1XHU1YzM2XHU1YzU5'@; put 'XHU1YzVhXHU1YzVjXHU1YzYyXHU1YzYzXHU1YzY3XHU1YzY4XHU1YzY5Il0sWyI4ZmJiYTEiLCJcdTVjNmRcdTVjNzBcdTVjNzRcdTVjNzVcdTVjN2FcdTVjN2JcdTVjN2NcdTVjN2RcdTVjODdcdTVjODhcdTVjOGFcdTVjOGZcdTVjOTJcdTVjOWRcdTVjOWZcdTVjYTBcdTVjYTJcdTVjYTNc'@; put 'dTVjYTZcdTVjYWFcdTVjYjJcdTVjYjRcdTVjYjVcdTVjYmFcdTVjYzlcdTVjY2JcdTVjZDJcdTVjZGRcdTVjZDdcdTVjZWVcdTVjZjFcdTVjZjJcdTVjZjRcdTVkMDFcdTVkMDZcdTVkMGRcdTVkMTJcdTVkMmJcdTVkMjNcdTVkMjRcdTVkMjZcdTVkMjdcdTVkMzFcdTVkMzRcdTVkMzlcdTVk'@; put 'M2RcdTVkM2ZcdTVkNDJcdTVkNDNcdTVkNDZcdTVkNDhcdTVkNTVcdTVkNTFcdTVkNTlcdTVkNGFcdTVkNWZcdTVkNjBcdTVkNjFcdTVkNjJcdTVkNjRcdTVkNmFcdTVkNmRcdTVkNzBcdTVkNzlcdTVkN2FcdTVkN2VcdTVkN2ZcdTVkODFcdTVkODNcdTVkODhcdTVkOGFcdTVkOTJcdTVkOTNc'@; put 'dTVkOTRcdTVkOTVcdTVkOTlcdTVkOWJcdTVkOWZcdTVkYTBcdTVkYTdcdTVkYWJcdTVkYjBcdTVkYjRcdTVkYjhcdTVkYjlcdTVkYzNcdTVkYzdcdTVkY2JcdTVkZDBcdTVkY2VcdTVkZDhcdTVkZDlcdTVkZTBcdTVkZTQiXSxbIjhmYmNhMSIsIlx1NWRlOVx1NWRmOFx1NWRmOVx1NWUwMFx1'@; put 'NWUwN1x1NWUwZFx1NWUxMlx1NWUxNFx1NWUxNVx1NWUxOFx1NWUxZlx1NWUyMFx1NWUyZVx1NWUyOFx1NWUzMlx1NWUzNVx1NWUzZVx1NWU0Ylx1NWU1MFx1NWU0OVx1NWU1MVx1NWU1Nlx1NWU1OFx1NWU1Ylx1NWU1Y1x1NWU1ZVx1NWU2OFx1NWU2YSIsNCwiXHU1ZTcwXHU1ZTgwXHU1ZThi'@; put 'XHU1ZThlXHU1ZWEyXHU1ZWE0XHU1ZWE1XHU1ZWE4XHU1ZWFhXHU1ZWFjXHU1ZWIxXHU1ZWIzXHU1ZWJkXHU1ZWJlXHU1ZWJmXHU1ZWM2XHU1ZWNjXHU1ZWNiXHU1ZWNlXHU1ZWQxXHU1ZWQyXHU1ZWQ0XHU1ZWQ1XHU1ZWRjXHU1ZWRlXHU1ZWU1XHU1ZWViXHU1ZjAyXHU1ZjA2XHU1ZjA3XHU1'@; put 'ZjA4XHU1ZjBlXHU1ZjE5XHU1ZjFjXHU1ZjFkXHU1ZjIxXHU1ZjIyXHU1ZjIzXHU1ZjI0XHU1ZjI4XHU1ZjJiXHU1ZjJjXHU1ZjJlXHU1ZjMwXHU1ZjM0XHU1ZjM2XHU1ZjNiXHU1ZjNkXHU1ZjNmXHU1ZjQwXHU1ZjQ0XHU1ZjQ1XHU1ZjQ3XHU1ZjRkXHU1ZjUwXHU1ZjU0XHU1ZjU4XHU1ZjVi'@; put 'XHU1ZjYwXHU1ZjYzXHU1ZjY0XHU1ZjY3Il0sWyI4ZmJkYTEiLCJcdTVmNmZcdTVmNzJcdTVmNzRcdTVmNzVcdTVmNzhcdTVmN2FcdTVmN2RcdTVmN2VcdTVmODlcdTVmOGRcdTVmOGZcdTVmOTZcdTVmOWNcdTVmOWRcdTVmYTJcdTVmYTdcdTVmYWJcdTVmYTRcdTVmYWNcdTVmYWZcdTVmYjBc'@; put 'dTVmYjFcdTVmYjhcdTVmYzRcdTVmYzdcdTVmYzhcdTVmYzlcdTVmY2JcdTVmZDAiLDQsIlx1NWZkZVx1NWZlMVx1NWZlMlx1NWZlOFx1NWZlOVx1NWZlYVx1NWZlY1x1NWZlZFx1NWZlZVx1NWZlZlx1NWZmMlx1NWZmM1x1NWZmNlx1NWZmYVx1NWZmY1x1NjAwN1x1NjAwYVx1NjAwZFx1NjAx'@; put 'M1x1NjAxNFx1NjAxN1x1NjAxOFx1NjAxYVx1NjAxZlx1NjAyNFx1NjAyZFx1NjAzM1x1NjAzNVx1NjA0MFx1NjA0N1x1NjA0OFx1NjA0OVx1NjA0Y1x1NjA1MVx1NjA1NFx1NjA1Nlx1NjA1N1x1NjA1ZFx1NjA2MVx1NjA2N1x1NjA3MVx1NjA3ZVx1NjA3Zlx1NjA4Mlx1NjA4Nlx1NjA4OFx1'@; put 'NjA4YVx1NjA4ZVx1NjA5MVx1NjA5M1x1NjA5NVx1NjA5OFx1NjA5ZFx1NjA5ZVx1NjBhMlx1NjBhNFx1NjBhNVx1NjBhOFx1NjBiMFx1NjBiMVx1NjBiNyJdLFsiOGZiZWExIiwiXHU2MGJiXHU2MGJlXHU2MGMyXHU2MGM0XHU2MGM4XHU2MGM5XHU2MGNhXHU2MGNiXHU2MGNlXHU2MGNmXHU2'@; put 'MGQ0XHU2MGQ1XHU2MGQ5XHU2MGRiXHU2MGRkXHU2MGRlXHU2MGUyXHU2MGU1XHU2MGYyXHU2MGY1XHU2MGY4XHU2MGZjXHU2MGZkXHU2MTAyXHU2MTA3XHU2MTBhXHU2MTBjXHU2MTEwIiw0LCJcdTYxMTZcdTYxMTdcdTYxMTlcdTYxMWNcdTYxMWVcdTYxMjJcdTYxMmFcdTYxMmJcdTYxMzBc'@; put 'dTYxMzFcdTYxMzVcdTYxMzZcdTYxMzdcdTYxMzlcdTYxNDFcdTYxNDVcdTYxNDZcdTYxNDlcdTYxNWVcdTYxNjBcdTYxNmNcdTYxNzJcdTYxNzhcdTYxN2JcdTYxN2NcdTYxN2ZcdTYxODBcdTYxODFcdTYxODNcdTYxODRcdTYxOGJcdTYxOGRcdTYxOTJcdTYxOTNcdTYxOTdcdTYxOThcdTYx'@; put 'OWNcdTYxOWRcdTYxOWZcdTYxYTBcdTYxYTVcdTYxYThcdTYxYWFcdTYxYWRcdTYxYjhcdTYxYjlcdTYxYmNcdTYxYzBcdTYxYzFcdTYxYzJcdTYxY2VcdTYxY2ZcdTYxZDVcdTYxZGNcdTYxZGRcdTYxZGVcdTYxZGZcdTYxZTFcdTYxZTJcdTYxZTdcdTYxZTlcdTYxZTUiXSxbIjhmYmZhMSIs'@; put 'Ilx1NjFlY1x1NjFlZFx1NjFlZlx1NjIwMVx1NjIwM1x1NjIwNFx1NjIwN1x1NjIxM1x1NjIxNVx1NjIxY1x1NjIyMFx1NjIyMlx1NjIyM1x1NjIyN1x1NjIyOVx1NjIyYlx1NjIzOVx1NjIzZFx1NjI0Mlx1NjI0M1x1NjI0NFx1NjI0Nlx1NjI0Y1x1NjI1MFx1NjI1MVx1NjI1Mlx1NjI1NFx1'@; put 'NjI1Nlx1NjI1YVx1NjI1Y1x1NjI2NFx1NjI2ZFx1NjI2Zlx1NjI3M1x1NjI3YVx1NjI3ZFx1NjI4ZFx1NjI4ZVx1NjI4Zlx1NjI5MFx1NjJhNlx1NjJhOFx1NjJiM1x1NjJiNlx1NjJiN1x1NjJiYVx1NjJiZVx1NjJiZlx1NjJjNFx1NjJjZVx1NjJkNVx1NjJkNlx1NjJkYVx1NjJlYVx1NjJm'@; put 'Mlx1NjJmNFx1NjJmY1x1NjJmZFx1NjMwM1x1NjMwNFx1NjMwYVx1NjMwYlx1NjMwZFx1NjMxMFx1NjMxM1x1NjMxNlx1NjMxOFx1NjMyOVx1NjMyYVx1NjMyZFx1NjMzNVx1NjMzNlx1NjMzOVx1NjMzY1x1NjM0MVx1NjM0Mlx1NjM0M1x1NjM0NFx1NjM0Nlx1NjM0YVx1NjM0Ylx1NjM0ZVx1'@; put 'NjM1Mlx1NjM1M1x1NjM1NFx1NjM1OFx1NjM1Ylx1NjM2NVx1NjM2Nlx1NjM2Y1x1NjM2ZFx1NjM3MVx1NjM3NFx1NjM3NSJdLFsiOGZjMGExIiwiXHU2Mzc4XHU2MzdjXHU2MzdkXHU2MzdmXHU2MzgyXHU2Mzg0XHU2Mzg3XHU2MzhhXHU2MzkwXHU2Mzk0XHU2Mzk1XHU2Mzk5XHU2MzlhXHU2'@; put 'MzllXHU2M2E0XHU2M2E2XHU2M2FkXHU2M2FlXHU2M2FmXHU2M2JkXHU2M2MxXHU2M2M1XHU2M2M4XHU2M2NlXHU2M2QxXHU2M2QzXHU2M2Q0XHU2M2Q1XHU2M2RjXHU2M2UwXHU2M2U1XHU2M2VhXHU2M2VjXHU2M2YyXHU2M2YzXHU2M2Y1XHU2M2Y4XHU2M2Y5XHU2NDA5XHU2NDBhXHU2NDEw'@; put 'XHU2NDEyXHU2NDE0XHU2NDE4XHU2NDFlXHU2NDIwXHU2NDIyXHU2NDI0XHU2NDI1XHU2NDI5XHU2NDJhXHU2NDJmXHU2NDMwXHU2NDM1XHU2NDNkXHU2NDNmXHU2NDRiXHU2NDRmXHU2NDUxXHU2NDUyXHU2NDUzXHU2NDU0XHU2NDVhXHU2NDViXHU2NDVjXHU2NDVkXHU2NDVmXHU2NDYwXHU2'@; put 'NDYxXHU2NDYzXHU2NDZkXHU2NDczXHU2NDc0XHU2NDdiXHU2NDdkXHU2NDg1XHU2NDg3XHU2NDhmXHU2NDkwXHU2NDkxXHU2NDk4XHU2NDk5XHU2NDliXHU2NDlkXHU2NDlmXHU2NGExXHU2NGEzXHU2NGE2XHU2NGE4XHU2NGFjXHU2NGIzXHU2NGJkXHU2NGJlXHU2NGJmIl0sWyI4ZmMxYTEi'@; put 'LCJcdTY0YzRcdTY0YzlcdTY0Y2FcdTY0Y2JcdTY0Y2NcdTY0Y2VcdTY0ZDBcdTY0ZDFcdTY0ZDVcdTY0ZDdcdTY0ZTRcdTY0ZTVcdTY0ZTlcdTY0ZWFcdTY0ZWRcdTY0ZjBcdTY0ZjVcdTY0ZjdcdTY0ZmJcdTY0ZmZcdTY1MDFcdTY1MDRcdTY1MDhcdTY1MDlcdTY1MGFcdTY1MGZcdTY1MTNc'@; put 'dTY1MTRcdTY1MTZcdTY1MTlcdTY1MWJcdTY1MWVcdTY1MWZcdTY1MjJcdTY1MjZcdTY1MjlcdTY1MmVcdTY1MzFcdTY1M2FcdTY1M2NcdTY1M2RcdTY1NDNcdTY1NDdcdTY1NDlcdTY1NTBcdTY1NTJcdTY1NTRcdTY1NWZcdTY1NjBcdTY1NjdcdTY1NmJcdTY1N2FcdTY1N2RcdTY1ODFcdTY1'@; put 'ODVcdTY1OGFcdTY1OTJcdTY1OTVcdTY1OThcdTY1OWRcdTY1YTBcdTY1YTNcdTY1YTZcdTY1YWVcdTY1YjJcdTY1YjNcdTY1YjRcdTY1YmZcdTY1YzJcdTY1YzhcdTY1YzlcdTY1Y2VcdTY1ZDBcdTY1ZDRcdTY1ZDZcdTY1ZDhcdTY1ZGZcdTY1ZjBcdTY1ZjJcdTY1ZjRcdTY1ZjVcdTY1Zjlc'@; put 'dTY1ZmVcdTY1ZmZcdTY2MDBcdTY2MDRcdTY2MDhcdTY2MDlcdTY2MGRcdTY2MTFcdTY2MTJcdTY2MTVcdTY2MTZcdTY2MWQiXSxbIjhmYzJhMSIsIlx1NjYxZVx1NjYyMVx1NjYyMlx1NjYyM1x1NjYyNFx1NjYyNlx1NjYyOVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMVx1'@; put 'NjYzM1x1NjYzOVx1NjYzN1x1NjY0MFx1NjY0NVx1NjY0Nlx1NjY0YVx1NjY0Y1x1NjY1MVx1NjY0ZVx1NjY1N1x1NjY1OFx1NjY1OVx1NjY1Ylx1NjY1Y1x1NjY2MFx1NjY2MVx1NjZmYlx1NjY2YVx1NjY2Ylx1NjY2Y1x1NjY3ZVx1NjY3M1x1NjY3NVx1NjY3Zlx1NjY3N1x1NjY3OFx1NjY3'@; put 'OVx1NjY3Ylx1NjY4MFx1NjY3Y1x1NjY4Ylx1NjY4Y1x1NjY4ZFx1NjY5MFx1NjY5Mlx1NjY5OVx1NjY5YVx1NjY5Ylx1NjY5Y1x1NjY5Zlx1NjZhMFx1NjZhNFx1NjZhZFx1NjZiMVx1NjZiMlx1NjZiNVx1NjZiYlx1NjZiZlx1NjZjMFx1NjZjMlx1NjZjM1x1NjZjOFx1NjZjY1x1NjZjZVx1'@; put 'NjZjZlx1NjZkNFx1NjZkYlx1NjZkZlx1NjZlOFx1NjZlYlx1NjZlY1x1NjZlZVx1NjZmYVx1NjcwNVx1NjcwN1x1NjcwZVx1NjcxM1x1NjcxOVx1NjcxY1x1NjcyMFx1NjcyMlx1NjczM1x1NjczZVx1Njc0NVx1Njc0N1x1Njc0OFx1Njc0Y1x1Njc1NFx1Njc1NVx1Njc1ZCJdLFsiOGZjM2Ex'@; put 'IiwiXHU2NzY2XHU2NzZjXHU2NzZlXHU2Nzc0XHU2Nzc2XHU2NzdiXHU2NzgxXHU2Nzg0XHU2NzhlXHU2NzhmXHU2NzkxXHU2NzkzXHU2Nzk2XHU2Nzk4XHU2Nzk5XHU2NzliXHU2N2IwXHU2N2IxXHU2N2IyXHU2N2I1XHU2N2JiXHU2N2JjXHU2N2JkXHU2N2Y5XHU2N2MwXHU2N2MyXHU2N2Mz'@; put 'XHU2N2M1XHU2N2M4XHU2N2M5XHU2N2QyXHU2N2Q3XHU2N2Q5XHU2N2RjXHU2N2UxXHU2N2U2XHU2N2YwXHU2N2YyXHU2N2Y2XHU2N2Y3XHU2ODUyXHU2ODE0XHU2ODE5XHU2ODFkXHU2ODFmXHU2ODI4XHU2ODI3XHU2ODJjXHU2ODJkXHU2ODJmXHU2ODMwXHU2ODMxXHU2ODMzXHU2ODNiXHU2'@; put 'ODNmXHU2ODQ0XHU2ODQ1XHU2ODRhXHU2ODRjXHU2ODU1XHU2ODU3XHU2ODU4XHU2ODViXHU2ODZiXHU2ODZlIiw0LCJcdTY4NzVcdTY4NzlcdTY4N2FcdTY4N2JcdTY4N2NcdTY4ODJcdTY4ODRcdTY4ODZcdTY4ODhcdTY4OTZcdTY4OThcdTY4OWFcdTY4OWNcdTY4YTFcdTY4YTNcdTY4YTVc'@; put 'dTY4YTlcdTY4YWFcdTY4YWVcdTY4YjJcdTY4YmJcdTY4YzVcdTY4YzhcdTY4Y2NcdTY4Y2YiXSxbIjhmYzRhMSIsIlx1NjhkMFx1NjhkMVx1NjhkM1x1NjhkNlx1NjhkOVx1NjhkY1x1NjhkZFx1NjhlNVx1NjhlOFx1NjhlYVx1NjhlYlx1NjhlY1x1NjhlZFx1NjhmMFx1NjhmMVx1NjhmNVx1'@; put 'NjhmNlx1NjhmYlx1NjhmY1x1NjhmZFx1NjkwNlx1NjkwOVx1NjkwYVx1NjkxMFx1NjkxMVx1NjkxM1x1NjkxNlx1NjkxN1x1NjkzMVx1NjkzM1x1NjkzNVx1NjkzOFx1NjkzYlx1Njk0Mlx1Njk0NVx1Njk0OVx1Njk0ZVx1Njk1N1x1Njk1Ylx1Njk2M1x1Njk2NFx1Njk2NVx1Njk2Nlx1Njk2'@; put 'OFx1Njk2OVx1Njk2Y1x1Njk3MFx1Njk3MVx1Njk3Mlx1Njk3YVx1Njk3Ylx1Njk3Zlx1Njk4MFx1Njk4ZFx1Njk5Mlx1Njk5Nlx1Njk5OFx1NjlhMVx1NjlhNVx1NjlhNlx1NjlhOFx1NjlhYlx1NjlhZFx1NjlhZlx1NjliN1x1NjliOFx1NjliYVx1NjliY1x1NjljNVx1NjljOFx1NjlkMVx1'@; put 'NjlkNlx1NjlkN1x1NjllMlx1NjllNVx1NjllZVx1NjllZlx1NjlmMVx1NjlmM1x1NjlmNVx1NjlmZVx1NmEwMFx1NmEwMVx1NmEwM1x1NmEwZlx1NmExMVx1NmExNVx1NmExYVx1NmExZFx1NmEyMFx1NmEyNFx1NmEyOFx1NmEzMFx1NmEzMiJdLFsiOGZjNWExIiwiXHU2YTM0XHU2YTM3XHU2'@; put 'YTNiXHU2YTNlXHU2YTNmXHU2YTQ1XHU2YTQ2XHU2YTQ5XHU2YTRhXHU2YTRlXHU2YTUwXHU2YTUxXHU2YTUyXHU2YTU1XHU2YTU2XHU2YTViXHU2YTY0XHU2YTY3XHU2YTZhXHU2YTcxXHU2YTczXHU2YTdlXHU2YTgxXHU2YTgzXHU2YTg2XHU2YTg3XHU2YTg5XHU2YThiXHU2YTkxXHU2YTli'@; put 'XHU2YTlkXHU2YTllXHU2YTlmXHU2YWE1XHU2YWFiXHU2YWFmXHU2YWIwXHU2YWIxXHU2YWI0XHU2YWJkXHU2YWJlXHU2YWJmXHU2YWM2XHU2YWM5XHU2YWM4XHU2YWNjXHU2YWQwXHU2YWQ0XHU2YWQ1XHU2YWQ2XHU2YWRjXHU2YWRkXHU2YWU0XHU2YWU3XHU2YWVjXHU2YWYwXHU2YWYxXHU2'@; put 'YWYyXHU2YWZjXHU2YWZkXHU2YjAyXHU2YjAzXHU2YjA2XHU2YjA3XHU2YjA5XHU2YjBmXHU2YjEwXHU2YjExXHU2YjE3XHU2YjFiXHU2YjFlXHU2YjI0XHU2YjI4XHU2YjJiXHU2YjJjXHU2YjJmXHU2YjM1XHU2YjM2XHU2YjNiXHU2YjNmXHU2YjQ2XHU2YjRhXHU2YjRkXHU2YjUyXHU2YjU2'@; put 'XHU2YjU4XHU2YjVkXHU2YjYwXHU2YjY3XHU2YjZiXHU2YjZlXHU2YjcwXHU2Yjc1XHU2YjdkIl0sWyI4ZmM2YTEiLCJcdTZiN2VcdTZiODJcdTZiODVcdTZiOTdcdTZiOWJcdTZiOWZcdTZiYTBcdTZiYTJcdTZiYTNcdTZiYThcdTZiYTlcdTZiYWNcdTZiYWRcdTZiYWVcdTZiYjBcdTZiYjhc'@; put 'dTZiYjlcdTZiYmRcdTZiYmVcdTZiYzNcdTZiYzRcdTZiYzlcdTZiY2NcdTZiZDZcdTZiZGFcdTZiZTFcdTZiZTNcdTZiZTZcdTZiZTdcdTZiZWVcdTZiZjFcdTZiZjdcdTZiZjlcdTZiZmZcdTZjMDJcdTZjMDRcdTZjMDVcdTZjMDlcdTZjMGRcdTZjMGVcdTZjMTBcdTZjMTJcdTZjMTlcdTZj'@; put 'MWZcdTZjMjZcdTZjMjdcdTZjMjhcdTZjMmNcdTZjMmVcdTZjMzNcdTZjMzVcdTZjMzZcdTZjM2FcdTZjM2JcdTZjM2ZcdTZjNGFcdTZjNGJcdTZjNGRcdTZjNGZcdTZjNTJcdTZjNTRcdTZjNTlcdTZjNWJcdTZjNWNcdTZjNmJcdTZjNmRcdTZjNmZcdTZjNzRcdTZjNzZcdTZjNzhcdTZjNzlc'@; put 'dTZjN2JcdTZjODVcdTZjODZcdTZjODdcdTZjODlcdTZjOTRcdTZjOTVcdTZjOTdcdTZjOThcdTZjOWNcdTZjOWZcdTZjYjBcdTZjYjJcdTZjYjRcdTZjYzJcdTZjYzZcdTZjY2RcdTZjY2ZcdTZjZDBcdTZjZDFcdTZjZDJcdTZjZDRcdTZjZDYiXSxbIjhmYzdhMSIsIlx1NmNkYVx1NmNkY1x1'@; put 'NmNlMFx1NmNlN1x1NmNlOVx1NmNlYlx1NmNlY1x1NmNlZVx1NmNmMlx1NmNmNFx1NmQwNFx1NmQwN1x1NmQwYVx1NmQwZVx1NmQwZlx1NmQxMVx1NmQxM1x1NmQxYVx1NmQyNlx1NmQyN1x1NmQyOFx1NmM2N1x1NmQyZVx1NmQyZlx1NmQzMVx1NmQzOVx1NmQzY1x1NmQzZlx1NmQ1N1x1NmQ1'@; put 'ZVx1NmQ1Zlx1NmQ2MVx1NmQ2NVx1NmQ2N1x1NmQ2Zlx1NmQ3MFx1NmQ3Y1x1NmQ4Mlx1NmQ4N1x1NmQ5MVx1NmQ5Mlx1NmQ5NFx1NmQ5Nlx1NmQ5N1x1NmQ5OFx1NmRhYVx1NmRhY1x1NmRiNFx1NmRiN1x1NmRiOVx1NmRiZFx1NmRiZlx1NmRjNFx1NmRjOFx1NmRjYVx1NmRjZVx1NmRjZlx1'@; put 'NmRkNlx1NmRkYlx1NmRkZFx1NmRkZlx1NmRlMFx1NmRlMlx1NmRlNVx1NmRlOVx1NmRlZlx1NmRmMFx1NmRmNFx1NmRmNlx1NmRmY1x1NmUwMFx1NmUwNFx1NmUxZVx1NmUyMlx1NmUyN1x1NmUzMlx1NmUzNlx1NmUzOVx1NmUzYlx1NmUzY1x1NmU0NFx1NmU0NVx1NmU0OFx1NmU0OVx1NmU0'@; put 'Ylx1NmU0Zlx1NmU1MVx1NmU1Mlx1NmU1M1x1NmU1NFx1NmU1N1x1NmU1Y1x1NmU1ZFx1NmU1ZSJdLFsiOGZjOGExIiwiXHU2ZTYyXHU2ZTYzXHU2ZTY4XHU2ZTczXHU2ZTdiXHU2ZTdkXHU2ZThkXHU2ZTkzXHU2ZTk5XHU2ZWEwXHU2ZWE3XHU2ZWFkXHU2ZWFlXHU2ZWIxXHU2ZWIzXHU2ZWJi'@; put 'XHU2ZWJmXHU2ZWMwXHU2ZWMxXHU2ZWMzXHU2ZWM3XHU2ZWM4XHU2ZWNhXHU2ZWNkXHU2ZWNlXHU2ZWNmXHU2ZWViXHU2ZWVkXHU2ZWVlXHU2ZWY5XHU2ZWZiXHU2ZWZkXHU2ZjA0XHU2ZjA4XHU2ZjBhXHU2ZjBjXHU2ZjBkXHU2ZjE2XHU2ZjE4XHU2ZjFhXHU2ZjFiXHU2ZjI2XHU2ZjI5XHU2'@; put 'ZjJhXHU2ZjJmXHU2ZjMwXHU2ZjMzXHU2ZjM2XHU2ZjNiXHU2ZjNjXHU2ZjJkXHU2ZjRmXHU2ZjUxXHU2ZjUyXHU2ZjUzXHU2ZjU3XHU2ZjU5XHU2ZjVhXHU2ZjVkXHU2ZjVlXHU2ZjYxXHU2ZjYyXHU2ZjY4XHU2ZjZjXHU2ZjdkXHU2ZjdlXHU2ZjgzXHU2Zjg3XHU2Zjg4XHU2ZjhiXHU2Zjhj'@; put 'XHU2ZjhkXHU2ZjkwXHU2ZjkyXHU2ZjkzXHU2Zjk0XHU2Zjk2XHU2ZjlhXHU2ZjlmXHU2ZmEwXHU2ZmE1XHU2ZmE2XHU2ZmE3XHU2ZmE4XHU2ZmFlXHU2ZmFmXHU2ZmIwXHU2ZmI1XHU2ZmI2XHU2ZmJjXHU2ZmM1XHU2ZmM3XHU2ZmM4XHU2ZmNhIl0sWyI4ZmM5YTEiLCJcdTZmZGFcdTZmZGVc'@; put 'dTZmZThcdTZmZTlcdTZmZjBcdTZmZjVcdTZmZjlcdTZmZmNcdTZmZmRcdTcwMDBcdTcwMDVcdTcwMDZcdTcwMDdcdTcwMGRcdTcwMTdcdTcwMjBcdTcwMjNcdTcwMmZcdTcwMzRcdTcwMzdcdTcwMzlcdTcwM2NcdTcwNDNcdTcwNDRcdTcwNDhcdTcwNDlcdTcwNGFcdTcwNGJcdTcwNTRcdTcw'@; put 'NTVcdTcwNWRcdTcwNWVcdTcwNGVcdTcwNjRcdTcwNjVcdTcwNmNcdTcwNmVcdTcwNzVcdTcwNzZcdTcwN2VcdTcwODFcdTcwODVcdTcwODZcdTcwOTQiLDQsIlx1NzA5Ylx1NzBhNFx1NzBhYlx1NzBiMFx1NzBiMVx1NzBiNFx1NzBiN1x1NzBjYVx1NzBkMVx1NzBkM1x1NzBkNFx1NzBkNVx1'@; put 'NzBkNlx1NzBkOFx1NzBkY1x1NzBlNFx1NzBmYVx1NzEwMyIsNCwiXHU3MTBiXHU3MTBjXHU3MTBmXHU3MTFlXHU3MTIwXHU3MTJiXHU3MTJkXHU3MTJmXHU3MTMwXHU3MTMxXHU3MTM4XHU3MTQxXHU3MTQ1XHU3MTQ2XHU3MTQ3XHU3MTRhXHU3MTRiXHU3MTUwXHU3MTUyXHU3MTU3XHU3MTVh'@; put 'XHU3MTVjXHU3MTVlXHU3MTYwIl0sWyI4ZmNhYTEiLCJcdTcxNjhcdTcxNzlcdTcxODBcdTcxODVcdTcxODdcdTcxOGNcdTcxOTJcdTcxOWFcdTcxOWJcdTcxYTBcdTcxYTJcdTcxYWZcdTcxYjBcdTcxYjJcdTcxYjNcdTcxYmFcdTcxYmZcdTcxYzBcdTcxYzFcdTcxYzRcdTcxY2JcdTcxY2Nc'@; put 'dTcxZDNcdTcxZDZcdTcxZDlcdTcxZGFcdTcxZGNcdTcxZjhcdTcxZmVcdTcyMDBcdTcyMDdcdTcyMDhcdTcyMDlcdTcyMTNcdTcyMTdcdTcyMWFcdTcyMWRcdTcyMWZcdTcyMjRcdTcyMmJcdTcyMmZcdTcyMzRcdTcyMzhcdTcyMzlcdTcyNDFcdTcyNDJcdTcyNDNcdTcyNDVcdTcyNGVcdTcy'@; put 'NGZcdTcyNTBcdTcyNTNcdTcyNTVcdTcyNTZcdTcyNWFcdTcyNWNcdTcyNWVcdTcyNjBcdTcyNjNcdTcyNjhcdTcyNmJcdTcyNmVcdTcyNmZcdTcyNzFcdTcyNzdcdTcyNzhcdTcyN2JcdTcyN2NcdTcyN2ZcdTcyODRcdTcyODlcdTcyOGRcdTcyOGVcdTcyOTNcdTcyOWJcdTcyYThcdTcyYWRc'@; put 'dTcyYWVcdTcyYjFcdTcyYjRcdTcyYmVcdTcyYzFcdTcyYzdcdTcyYzlcdTcyY2NcdTcyZDVcdTcyZDZcdTcyZDhcdTcyZGZcdTcyZTVcdTcyZjNcdTcyZjRcdTcyZmFcdTcyZmIiXSxbIjhmY2JhMSIsIlx1NzJmZVx1NzMwMlx1NzMwNFx1NzMwNVx1NzMwN1x1NzMwYlx1NzMwZFx1NzMxMlx1'@; put 'NzMxM1x1NzMxOFx1NzMxOVx1NzMxZVx1NzMyMlx1NzMyNFx1NzMyN1x1NzMyOFx1NzMyY1x1NzMzMVx1NzMzMlx1NzMzNVx1NzMzYVx1NzMzYlx1NzMzZFx1NzM0M1x1NzM0ZFx1NzM1MFx1NzM1Mlx1NzM1Nlx1NzM1OFx1NzM1ZFx1NzM1ZVx1NzM1Zlx1NzM2MFx1NzM2Nlx1NzM2N1x1NzM2'@; put 'OVx1NzM2Ylx1NzM2Y1x1NzM2ZVx1NzM2Zlx1NzM3MVx1NzM3N1x1NzM3OVx1NzM3Y1x1NzM4MFx1NzM4MVx1NzM4M1x1NzM4NVx1NzM4Nlx1NzM4ZVx1NzM5MFx1NzM5M1x1NzM5NVx1NzM5N1x1NzM5OFx1NzM5Y1x1NzM5ZVx1NzM5Zlx1NzNhMFx1NzNhMlx1NzNhNVx1NzNhNlx1NzNhYVx1'@; put 'NzNhYlx1NzNhZFx1NzNiNVx1NzNiN1x1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZlx1NzNjNVx1NzNjNlx1NzNjOVx1NzNjYlx1NzNjY1x1NzNjZlx1NzNkMlx1NzNkM1x1NzNkNlx1NzNkOVx1NzNkZFx1NzNlMVx1NzNlM1x1NzNlNlx1NzNlN1x1NzNlOVx1NzNmNFx1NzNmNVx1NzNmN1x1NzNm'@; put 'OVx1NzNmYVx1NzNmYlx1NzNmZCJdLFsiOGZjY2ExIiwiXHU3M2ZmXHU3NDAwXHU3NDAxXHU3NDA0XHU3NDA3XHU3NDBhXHU3NDExXHU3NDFhXHU3NDFiXHU3NDI0XHU3NDI2XHU3NDI4Iiw5LCJcdTc0MzlcdTc0NDBcdTc0NDNcdTc0NDRcdTc0NDZcdTc0NDdcdTc0NGJcdTc0NGRcdTc0NTFc'@; put 'dTc0NTJcdTc0NTdcdTc0NWRcdTc0NjJcdTc0NjZcdTc0NjdcdTc0NjhcdTc0NmJcdTc0NmRcdTc0NmVcdTc0NzFcdTc0NzJcdTc0ODBcdTc0ODFcdTc0ODVcdTc0ODZcdTc0ODdcdTc0ODlcdTc0OGZcdTc0OTBcdTc0OTFcdTc0OTJcdTc0OThcdTc0OTlcdTc0OWFcdTc0OWNcdTc0OWZcdTc0'@; put 'YTBcdTc0YTFcdTc0YTNcdTc0YTZcdTc0YThcdTc0YTlcdTc0YWFcdTc0YWJcdTc0YWVcdTc0YWZcdTc0YjFcdTc0YjJcdTc0YjVcdTc0YjlcdTc0YmJcdTc0YmZcdTc0YzhcdTc0YzlcdTc0Y2NcdTc0ZDBcdTc0ZDNcdTc0ZDhcdTc0ZGFcdTc0ZGJcdTc0ZGVcdTc0ZGZcdTc0ZTRcdTc0ZThc'@; put 'dTc0ZWFcdTc0ZWJcdTc0ZWZcdTc0ZjRcdTc0ZmFcdTc0ZmJcdTc0ZmNcdTc0ZmZcdTc1MDYiXSxbIjhmY2RhMSIsIlx1NzUxMlx1NzUxNlx1NzUxN1x1NzUyMFx1NzUyMVx1NzUyNFx1NzUyN1x1NzUyOVx1NzUyYVx1NzUyZlx1NzUzNlx1NzUzOVx1NzUzZFx1NzUzZVx1NzUzZlx1NzU0MFx1'@; put 'NzU0M1x1NzU0N1x1NzU0OFx1NzU0ZVx1NzU1MFx1NzU1Mlx1NzU1N1x1NzU1ZVx1NzU1Zlx1NzU2MVx1NzU2Zlx1NzU3MVx1NzU3OSIsNSwiXHU3NTgxXHU3NTg1XHU3NTkwXHU3NTkyXHU3NTkzXHU3NTk1XHU3NTk5XHU3NTljXHU3NWEyXHU3NWE0XHU3NWI0XHU3NWJhXHU3NWJmXHU3NWMw'@; put 'XHU3NWMxXHU3NWM0XHU3NWM2XHU3NWNjXHU3NWNlXHU3NWNmXHU3NWQ3XHU3NWRjXHU3NWRmXHU3NWUwXHU3NWUxXHU3NWU0XHU3NWU3XHU3NWVjXHU3NWVlXHU3NWVmXHU3NWYxXHU3NWY5XHU3NjAwXHU3NjAyXHU3NjAzXHU3NjA0XHU3NjA3XHU3NjA4XHU3NjBhXHU3NjBjXHU3NjBmXHU3'@; put 'NjEyXHU3NjEzXHU3NjE1XHU3NjE2XHU3NjE5XHU3NjFiXHU3NjFjXHU3NjFkXHU3NjFlXHU3NjIzXHU3NjI1XHU3NjI2XHU3NjI5XHU3NjJkXHU3NjMyXHU3NjMzXHU3NjM1XHU3NjM4XHU3NjM5Il0sWyI4ZmNlYTEiLCJcdTc2M2FcdTc2M2NcdTc2NGFcdTc2NDBcdTc2NDFcdTc2NDNcdTc2'@; put 'NDRcdTc2NDVcdTc2NDlcdTc2NGJcdTc2NTVcdTc2NTlcdTc2NWZcdTc2NjRcdTc2NjVcdTc2NmRcdTc2NmVcdTc2NmZcdTc2NzFcdTc2NzRcdTc2ODFcdTc2ODVcdTc2OGNcdTc2OGRcdTc2OTVcdTc2OWJcdTc2OWNcdTc2OWRcdTc2OWZcdTc2YTBcdTc2YTIiLDYsIlx1NzZhYVx1NzZhZFx1'@; put 'NzZiZFx1NzZjMVx1NzZjNVx1NzZjOVx1NzZjYlx1NzZjY1x1NzZjZVx1NzZkNFx1NzZkOVx1NzZlMFx1NzZlNlx1NzZlOFx1NzZlY1x1NzZmMFx1NzZmMVx1NzZmNlx1NzZmOVx1NzZmY1x1NzcwMFx1NzcwNlx1NzcwYVx1NzcwZVx1NzcxMlx1NzcxNFx1NzcxNVx1NzcxN1x1NzcxOVx1Nzcx'@; put 'YVx1NzcxY1x1NzcyMlx1NzcyOFx1NzcyZFx1NzcyZVx1NzcyZlx1NzczNFx1NzczNVx1NzczNlx1NzczOVx1NzczZFx1NzczZVx1Nzc0Mlx1Nzc0NVx1Nzc0Nlx1Nzc0YVx1Nzc0ZFx1Nzc0ZVx1Nzc0Zlx1Nzc1Mlx1Nzc1Nlx1Nzc1N1x1Nzc1Y1x1Nzc1ZVx1Nzc1Zlx1Nzc2MFx1Nzc2MiJd'@; put 'LFsiOGZjZmExIiwiXHU3NzY0XHU3NzY3XHU3NzZhXHU3NzZjXHU3NzcwXHU3NzcyXHU3NzczXHU3Nzc0XHU3NzdhXHU3NzdkXHU3NzgwXHU3Nzg0XHU3NzhjXHU3NzhkXHU3Nzk0XHU3Nzk1XHU3Nzk2XHU3NzlhXHU3NzlmXHU3N2EyXHU3N2E3XHU3N2FhXHU3N2FlXHU3N2FmXHU3N2IxXHU3'@; put 'N2I1XHU3N2JlXHU3N2MzXHU3N2M5XHU3N2QxXHU3N2QyXHU3N2Q1XHU3N2Q5XHU3N2RlXHU3N2RmXHU3N2UwXHU3N2U0XHU3N2U2XHU3N2VhXHU3N2VjXHU3N2YwXHU3N2YxXHU3N2Y0XHU3N2Y4XHU3N2ZiXHU3ODA1XHU3ODA2XHU3ODA5XHU3ODBkXHU3ODBlXHU3ODExXHU3ODFkXHU3ODIx'@; put 'XHU3ODIyXHU3ODIzXHU3ODJkXHU3ODJlXHU3ODMwXHU3ODM1XHU3ODM3XHU3ODQzXHU3ODQ0XHU3ODQ3XHU3ODQ4XHU3ODRjXHU3ODRlXHU3ODUyXHU3ODVjXHU3ODVlXHU3ODYwXHU3ODYxXHU3ODYzXHU3ODY0XHU3ODY4XHU3ODZhXHU3ODZlXHU3ODdhXHU3ODdlXHU3ODhhXHU3ODhmXHU3'@; put 'ODk0XHU3ODk4XHU3OGExXHU3ODlkXHU3ODllXHU3ODlmXHU3OGE0XHU3OGE4XHU3OGFjXHU3OGFkXHU3OGIwXHU3OGIxXHU3OGIyXHU3OGIzIl0sWyI4ZmQwYTEiLCJcdTc4YmJcdTc4YmRcdTc4YmZcdTc4YzdcdTc4YzhcdTc4YzlcdTc4Y2NcdTc4Y2VcdTc4ZDJcdTc4ZDNcdTc4ZDVcdTc4'@; put 'ZDZcdTc4ZTRcdTc4ZGJcdTc4ZGZcdTc4ZTBcdTc4ZTFcdTc4ZTZcdTc4ZWFcdTc4ZjJcdTc4ZjNcdTc5MDBcdTc4ZjZcdTc4ZjdcdTc4ZmFcdTc4ZmJcdTc4ZmZcdTc5MDZcdTc5MGNcdTc5MTBcdTc5MWFcdTc5MWNcdTc5MWVcdTc5MWZcdTc5MjBcdTc5MjVcdTc5MjdcdTc5MjlcdTc5MmRc'@; put 'dTc5MzFcdTc5MzRcdTc5MzVcdTc5M2JcdTc5M2RcdTc5M2ZcdTc5NDRcdTc5NDVcdTc5NDZcdTc5NGFcdTc5NGJcdTc5NGZcdTc5NTFcdTc5NTRcdTc5NThcdTc5NWJcdTc5NWNcdTc5NjdcdTc5NjlcdTc5NmJcdTc5NzJcdTc5NzlcdTc5N2JcdTc5N2NcdTc5N2VcdTc5OGJcdTc5OGNcdTc5'@; put 'OTFcdTc5OTNcdTc5OTRcdTc5OTVcdTc5OTZcdTc5OThcdTc5OWJcdTc5OWNcdTc5YTFcdTc5YThcdTc5YTlcdTc5YWJcdTc5YWZcdTc5YjFcdTc5YjRcdTc5YjhcdTc5YmJcdTc5YzJcdTc5YzRcdTc5YzdcdTc5YzhcdTc5Y2FcdTc5Y2ZcdTc5ZDRcdTc5ZDZcdTc5ZGFcdTc5ZGRcdTc5ZGUi'@; put 'XSxbIjhmZDFhMSIsIlx1NzllMFx1NzllMlx1NzllNVx1NzllYVx1NzllYlx1NzllZFx1NzlmMVx1NzlmOFx1NzlmY1x1N2EwMlx1N2EwM1x1N2EwN1x1N2EwOVx1N2EwYVx1N2EwY1x1N2ExMVx1N2ExNVx1N2ExYlx1N2ExZVx1N2EyMVx1N2EyN1x1N2EyYlx1N2EyZFx1N2EyZlx1N2EzMFx1'@; put 'N2EzNFx1N2EzNVx1N2EzOFx1N2EzOVx1N2EzYVx1N2E0NFx1N2E0NVx1N2E0N1x1N2E0OFx1N2E0Y1x1N2E1NVx1N2E1Nlx1N2E1OVx1N2E1Y1x1N2E1ZFx1N2E1Zlx1N2E2MFx1N2E2NVx1N2E2N1x1N2E2YVx1N2E2ZFx1N2E3NVx1N2E3OFx1N2E3ZVx1N2E4MFx1N2E4Mlx1N2E4NVx1N2E4'@; put 'Nlx1N2E4YVx1N2E4Ylx1N2E5MFx1N2E5MVx1N2E5NFx1N2E5ZVx1N2FhMFx1N2FhM1x1N2FhY1x1N2FiM1x1N2FiNVx1N2FiOVx1N2FiYlx1N2FiY1x1N2FjNlx1N2FjOVx1N2FjY1x1N2FjZVx1N2FkMVx1N2FkYlx1N2FlOFx1N2FlOVx1N2FlYlx1N2FlY1x1N2FmMVx1N2FmNFx1N2FmYlx1'@; put 'N2FmZFx1N2FmZVx1N2IwN1x1N2IxNFx1N2IxZlx1N2IyM1x1N2IyN1x1N2IyOVx1N2IyYVx1N2IyYlx1N2IyZFx1N2IyZVx1N2IyZlx1N2IzMCJdLFsiOGZkMmExIiwiXHU3YjMxXHU3YjM0XHU3YjNkXHU3YjNmXHU3YjQwXHU3YjQxXHU3YjQ3XHU3YjRlXHU3YjU1XHU3YjYwXHU3YjY0XHU3'@; put 'YjY2XHU3YjY5XHU3YjZhXHU3YjZkXHU3YjZmXHU3YjcyXHU3YjczXHU3Yjc3XHU3Yjg0XHU3Yjg5XHU3YjhlXHU3YjkwXHU3YjkxXHU3Yjk2XHU3YjliXHU3YjllXHU3YmEwXHU3YmE1XHU3YmFjXHU3YmFmXHU3YmIwXHU3YmIyXHU3YmI1XHU3YmI2XHU3YmJhXHU3YmJiXHU3YmJjXHU3YmJk'@; put 'XHU3YmMyXHU3YmM1XHU3YmM4XHU3YmNhXHU3YmQ0XHU3YmQ2XHU3YmQ3XHU3YmQ5XHU3YmRhXHU3YmRiXHU3YmU4XHU3YmVhXHU3YmYyXHU3YmY0XHU3YmY1XHU3YmY4XHU3YmY5XHU3YmZhXHU3YmZjXHU3YmZlXHU3YzAxXHU3YzAyXHU3YzAzXHU3YzA0XHU3YzA2XHU3YzA5XHU3YzBiXHU3'@; put 'YzBjXHU3YzBlXHU3YzBmXHU3YzE5XHU3YzFiXHU3YzIwXHU3YzI1XHU3YzI2XHU3YzI4XHU3YzJjXHU3YzMxXHU3YzMzXHU3YzM0XHU3YzM2XHU3YzM5XHU3YzNhXHU3YzQ2XHU3YzRhXHU3YzU1XHU3YzUxXHU3YzUyXHU3YzUzXHU3YzU5Iiw1XSxbIjhmZDNhMSIsIlx1N2M2MVx1N2M2M1x1'@; put 'N2M2N1x1N2M2OVx1N2M2ZFx1N2M2ZVx1N2M3MFx1N2M3Mlx1N2M3OVx1N2M3Y1x1N2M3ZFx1N2M4Nlx1N2M4N1x1N2M4Zlx1N2M5NFx1N2M5ZVx1N2NhMFx1N2NhNlx1N2NiMFx1N2NiNlx1N2NiN1x1N2NiYVx1N2NiYlx1N2NiY1x1N2NiZlx1N2NjNFx1N2NjN1x1N2NjOFx1N2NjOVx1N2Nj'@; put 'ZFx1N2NjZlx1N2NkM1x1N2NkNFx1N2NkNVx1N2NkN1x1N2NkOVx1N2NkYVx1N2NkZFx1N2NlNlx1N2NlOVx1N2NlYlx1N2NmNVx1N2QwM1x1N2QwN1x1N2QwOFx1N2QwOVx1N2QwZlx1N2QxMVx1N2QxMlx1N2QxM1x1N2QxNlx1N2QxZFx1N2QxZVx1N2QyM1x1N2QyNlx1N2QyYVx1N2QyZFx1'@; put 'N2QzMVx1N2QzY1x1N2QzZFx1N2QzZVx1N2Q0MFx1N2Q0MVx1N2Q0N1x1N2Q0OFx1N2Q0ZFx1N2Q1MVx1N2Q1M1x1N2Q1N1x1N2Q1OVx1N2Q1YVx1N2Q1Y1x1N2Q1ZFx1N2Q2NVx1N2Q2N1x1N2Q2YVx1N2Q3MFx1N2Q3OFx1N2Q3YVx1N2Q3Ylx1N2Q3Zlx1N2Q4MVx1N2Q4Mlx1N2Q4M1x1N2Q4'@; put 'NVx1N2Q4Nlx1N2Q4OFx1N2Q4Ylx1N2Q4Y1x1N2Q4ZFx1N2Q5MVx1N2Q5Nlx1N2Q5N1x1N2Q5ZCJdLFsiOGZkNGExIiwiXHU3ZDllXHU3ZGE2XHU3ZGE3XHU3ZGFhXHU3ZGIzXHU3ZGI2XHU3ZGI3XHU3ZGI5XHU3ZGMyIiw0LCJcdTdkY2NcdTdkY2RcdTdkY2VcdTdkZDdcdTdkZDlcdTdlMDBc'@; put 'dTdkZTJcdTdkZTVcdTdkZTZcdTdkZWFcdTdkZWJcdTdkZWRcdTdkZjFcdTdkZjVcdTdkZjZcdTdkZjlcdTdkZmFcdTdlMDhcdTdlMTBcdTdlMTFcdTdlMTVcdTdlMTdcdTdlMWNcdTdlMWRcdTdlMjBcdTdlMjdcdTdlMjhcdTdlMmNcdTdlMmRcdTdlMmZcdTdlMzNcdTdlMzZcdTdlM2ZcdTdl'@; put 'NDRcdTdlNDVcdTdlNDdcdTdlNGVcdTdlNTBcdTdlNTJcdTdlNThcdTdlNWZcdTdlNjFcdTdlNjJcdTdlNjVcdTdlNmJcdTdlNmVcdTdlNmZcdTdlNzNcdTdlNzhcdTdlN2VcdTdlODFcdTdlODZcdTdlODdcdTdlOGFcdTdlOGRcdTdlOTFcdTdlOTVcdTdlOThcdTdlOWFcdTdlOWRcdTdlOWVc'@; put 'dTdmM2NcdTdmM2JcdTdmM2RcdTdmM2VcdTdmM2ZcdTdmNDNcdTdmNDRcdTdmNDdcdTdmNGZcdTdmNTJcdTdmNTNcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNjFcdTdmNjNcdTdmNjRcdTdmNjVcdTdmNjZcdTdmNmQiXSxbIjhmZDVhMSIsIlx1N2Y3MVx1N2Y3ZFx1N2Y3ZVx1N2Y3Zlx1N2Y4MFx1'@; put 'N2Y4Ylx1N2Y4ZFx1N2Y4Zlx1N2Y5MFx1N2Y5MVx1N2Y5Nlx1N2Y5N1x1N2Y5Y1x1N2ZhMVx1N2ZhMlx1N2ZhNlx1N2ZhYVx1N2ZhZFx1N2ZiNFx1N2ZiY1x1N2ZiZlx1N2ZjMFx1N2ZjM1x1N2ZjOFx1N2ZjZVx1N2ZjZlx1N2ZkYlx1N2ZkZlx1N2ZlM1x1N2ZlNVx1N2ZlOFx1N2ZlY1x1N2Zl'@; put 'ZVx1N2ZlZlx1N2ZmMlx1N2ZmYVx1N2ZmZFx1N2ZmZVx1N2ZmZlx1ODAwN1x1ODAwOFx1ODAwYVx1ODAwZFx1ODAwZVx1ODAwZlx1ODAxMVx1ODAxM1x1ODAxNFx1ODAxNlx1ODAxZFx1ODAxZVx1ODAxZlx1ODAyMFx1ODAyNFx1ODAyNlx1ODAyY1x1ODAyZVx1ODAzMFx1ODAzNFx1ODAzNVx1'@; put 'ODAzN1x1ODAzOVx1ODAzYVx1ODAzY1x1ODAzZVx1ODA0MFx1ODA0NFx1ODA2MFx1ODA2NFx1ODA2Nlx1ODA2ZFx1ODA3MVx1ODA3NVx1ODA4MVx1ODA4OFx1ODA4ZVx1ODA5Y1x1ODA5ZVx1ODBhNlx1ODBhN1x1ODBhYlx1ODBiOFx1ODBiOVx1ODBjOFx1ODBjZFx1ODBjZlx1ODBkMlx1ODBk'@; put 'NFx1ODBkNVx1ODBkN1x1ODBkOFx1ODBlMFx1ODBlZFx1ODBlZSJdLFsiOGZkNmExIiwiXHU4MGYwXHU4MGYyXHU4MGYzXHU4MGY2XHU4MGY5XHU4MGZhXHU4MGZlXHU4MTAzXHU4MTBiXHU4MTE2XHU4MTE3XHU4MTE4XHU4MTFjXHU4MTFlXHU4MTIwXHU4MTI0XHU4MTI3XHU4MTJjXHU4MTMw'@; put 'XHU4MTM1XHU4MTNhXHU4MTNjXHU4MTQ1XHU4MTQ3XHU4MTRhXHU4MTRjXHU4MTUyXHU4MTU3XHU4MTYwXHU4MTYxXHU4MTY3XHU4MTY4XHU4MTY5XHU4MTZkXHU4MTZmXHU4MTc3XHU4MTgxXHU4MTkwXHU4MTg0XHU4MTg1XHU4MTg2XHU4MThiXHU4MThlXHU4MTk2XHU4MTk4XHU4MTliXHU4'@; put 'MTllXHU4MWEyXHU4MWFlXHU4MWIyXHU4MWI0XHU4MWJiXHU4MWNiXHU4MWMzXHU4MWM1XHU4MWNhXHU4MWNlXHU4MWNmXHU4MWQ1XHU4MWQ3XHU4MWRiXHU4MWRkXHU4MWRlXHU4MWUxXHU4MWU0XHU4MWViXHU4MWVjXHU4MWYwXHU4MWYxXHU4MWYyXHU4MWY1XHU4MWY2XHU4MWY4XHU4MWY5'@; put 'XHU4MWZkXHU4MWZmXHU4MjAwXHU4MjAzXHU4MjBmXHU4MjEzXHU4MjE0XHU4MjE5XHU4MjFhXHU4MjFkXHU4MjIxXHU4MjIyXHU4MjI4XHU4MjMyXHU4MjM0XHU4MjNhXHU4MjQzXHU4MjQ0XHU4MjQ1XHU4MjQ2Il0sWyI4ZmQ3YTEiLCJcdTgyNGJcdTgyNGVcdTgyNGZcdTgyNTFcdTgyNTZc'@; put 'dTgyNWNcdTgyNjBcdTgyNjNcdTgyNjdcdTgyNmRcdTgyNzRcdTgyN2JcdTgyN2RcdTgyN2ZcdTgyODBcdTgyODFcdTgyODNcdTgyODRcdTgyODdcdTgyODlcdTgyOGFcdTgyOGVcdTgyOTFcdTgyOTRcdTgyOTZcdTgyOThcdTgyOWFcdTgyOWJcdTgyYTBcdTgyYTFcdTgyYTNcdTgyYTRcdTgy'@; put 'YTdcdTgyYThcdTgyYTlcdTgyYWFcdTgyYWVcdTgyYjBcdTgyYjJcdTgyYjRcdTgyYjdcdTgyYmFcdTgyYmNcdTgyYmVcdTgyYmZcdTgyYzZcdTgyZDBcdTgyZDVcdTgyZGFcdTgyZTBcdTgyZTJcdTgyZTRcdTgyZThcdTgyZWFcdTgyZWRcdTgyZWZcdTgyZjZcdTgyZjdcdTgyZmRcdTgyZmVc'@; put 'dTgzMDBcdTgzMDFcdTgzMDdcdTgzMDhcdTgzMGFcdTgzMGJcdTgzNTRcdTgzMWJcdTgzMWRcdTgzMWVcdTgzMWZcdTgzMjFcdTgzMjJcdTgzMmNcdTgzMmRcdTgzMmVcdTgzMzBcdTgzMzNcdTgzMzdcdTgzM2FcdTgzM2NcdTgzM2RcdTgzNDJcdTgzNDNcdTgzNDRcdTgzNDdcdTgzNGRcdTgz'@; put 'NGVcdTgzNTFcdTgzNTVcdTgzNTZcdTgzNTdcdTgzNzBcdTgzNzgiXSxbIjhmZDhhMSIsIlx1ODM3ZFx1ODM3Zlx1ODM4MFx1ODM4Mlx1ODM4NFx1ODM4Nlx1ODM4ZFx1ODM5Mlx1ODM5NFx1ODM5NVx1ODM5OFx1ODM5OVx1ODM5Ylx1ODM5Y1x1ODM5ZFx1ODNhNlx1ODNhN1x1ODNhOVx1ODNh'@; put 'Y1x1ODNiZVx1ODNiZlx1ODNjMFx1ODNjN1x1ODNjOVx1ODNjZlx1ODNkMFx1ODNkMVx1ODNkNFx1ODNkZFx1ODM1M1x1ODNlOFx1ODNlYVx1ODNmNlx1ODNmOFx1ODNmOVx1ODNmY1x1ODQwMVx1ODQwNlx1ODQwYVx1ODQwZlx1ODQxMVx1ODQxNVx1ODQxOVx1ODNhZFx1ODQyZlx1ODQzOVx1'@; put 'ODQ0NVx1ODQ0N1x1ODQ0OFx1ODQ0YVx1ODQ0ZFx1ODQ0Zlx1ODQ1MVx1ODQ1Mlx1ODQ1Nlx1ODQ1OFx1ODQ1OVx1ODQ1YVx1ODQ1Y1x1ODQ2MFx1ODQ2NFx1ODQ2NVx1ODQ2N1x1ODQ2YVx1ODQ3MFx1ODQ3M1x1ODQ3NFx1ODQ3Nlx1ODQ3OFx1ODQ3Y1x1ODQ3ZFx1ODQ4MVx1ODQ4NVx1ODQ5'@; put 'Mlx1ODQ5M1x1ODQ5NVx1ODQ5ZVx1ODRhNlx1ODRhOFx1ODRhOVx1ODRhYVx1ODRhZlx1ODRiMVx1ODRiNFx1ODRiYVx1ODRiZFx1ODRiZVx1ODRjMFx1ODRjMlx1ODRjN1x1ODRjOFx1ODRjY1x1ODRjZlx1ODRkMyJdLFsiOGZkOWExIiwiXHU4NGRjXHU4NGU3XHU4NGVhXHU4NGVmXHU4NGYw'@; put 'XHU4NGYxXHU4NGYyXHU4NGY3XHU4NTMyXHU4NGZhXHU4NGZiXHU4NGZkXHU4NTAyXHU4NTAzXHU4NTA3XHU4NTBjXHU4NTBlXHU4NTEwXHU4NTFjXHU4NTFlXHU4NTIyXHU4NTIzXHU4NTI0XHU4NTI1XHU4NTI3XHU4NTJhXHU4NTJiXHU4NTJmXHU4NTMzXHU4NTM0XHU4NTM2XHU4NTNmXHU4'@; put 'NTQ2XHU4NTRmIiw0LCJcdTg1NTZcdTg1NTlcdTg1NWMiLDYsIlx1ODU2NFx1ODU2Ylx1ODU2Zlx1ODU3OVx1ODU3YVx1ODU3Ylx1ODU3ZFx1ODU3Zlx1ODU4MVx1ODU4NVx1ODU4Nlx1ODU4OVx1ODU4Ylx1ODU4Y1x1ODU4Zlx1ODU5M1x1ODU5OFx1ODU5ZFx1ODU5Zlx1ODVhMFx1ODVhMlx1'@; put 'ODVhNVx1ODVhN1x1ODViNFx1ODViNlx1ODViN1x1ODViOFx1ODViY1x1ODViZFx1ODViZVx1ODViZlx1ODVjMlx1ODVjN1x1ODVjYVx1ODVjYlx1ODVjZVx1ODVhZFx1ODVkOFx1ODVkYVx1ODVkZlx1ODVlMFx1ODVlNlx1ODVlOFx1ODVlZFx1ODVmM1x1ODVmNlx1ODVmYyJdLFsiOGZkYWEx'@; put 'IiwiXHU4NWZmXHU4NjAwXHU4NjA0XHU4NjA1XHU4NjBkXHU4NjBlXHU4NjEwXHU4NjExXHU4NjEyXHU4NjE4XHU4NjE5XHU4NjFiXHU4NjFlXHU4NjIxXHU4NjI3XHU4NjI5XHU4NjM2XHU4NjM4XHU4NjNhXHU4NjNjXHU4NjNkXHU4NjQwXHU4NjQyXHU4NjQ2XHU4NjUyXHU4NjUzXHU4NjU2'@; put 'XHU4NjU3XHU4NjU4XHU4NjU5XHU4NjVkXHU4NjYwIiw0LCJcdTg2NjlcdTg2NmNcdTg2NmZcdTg2NzVcdTg2NzZcdTg2NzdcdTg2N2FcdTg2OGRcdTg2OTFcdTg2OTZcdTg2OThcdTg2OWFcdTg2OWNcdTg2YTFcdTg2YTZcdTg2YTdcdTg2YThcdTg2YWRcdTg2YjFcdTg2YjNcdTg2YjRcdTg2'@; put 'YjVcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmZcdTg2YzBcdTg2YzFcdTg2YzNcdTg2YzVcdTg2ZDFcdTg2ZDJcdTg2ZDVcdTg2ZDdcdTg2ZGFcdTg2ZGNcdTg2ZTBcdTg2ZTNcdTg2ZTVcdTg2ZTdcdTg2ODhcdTg2ZmFcdTg2ZmNcdTg2ZmRcdTg3MDRcdTg3MDVcdTg3MDdcdTg3MGJcdTg3MGVc'@; put 'dTg3MGZcdTg3MTBcdTg3MTNcdTg3MTRcdTg3MTlcdTg3MWVcdTg3MWZcdTg3MjFcdTg3MjMiXSxbIjhmZGJhMSIsIlx1ODcyOFx1ODcyZVx1ODcyZlx1ODczMVx1ODczMlx1ODczOVx1ODczYVx1ODczY1x1ODczZFx1ODczZVx1ODc0MFx1ODc0M1x1ODc0NVx1ODc0ZFx1ODc1OFx1ODc1ZFx1'@; put 'ODc2MVx1ODc2NFx1ODc2NVx1ODc2Zlx1ODc3MVx1ODc3Mlx1ODc3Ylx1ODc4MyIsNiwiXHU4NzhiXHU4NzhjXHU4NzkwXHU4NzkzXHU4Nzk1XHU4Nzk3XHU4Nzk4XHU4Nzk5XHU4NzllXHU4N2EwXHU4N2EzXHU4N2E3XHU4N2FjXHU4N2FkXHU4N2FlXHU4N2IxXHU4N2I1XHU4N2JlXHU4N2Jm'@; put 'XHU4N2MxXHU4N2M4XHU4N2M5XHU4N2NhXHU4N2NlXHU4N2Q1XHU4N2Q2XHU4N2Q5XHU4N2RhXHU4N2RjXHU4N2RmXHU4N2UyXHU4N2UzXHU4N2U0XHU4N2VhXHU4N2ViXHU4N2VkXHU4N2YxXHU4N2YzXHU4N2Y4XHU4N2ZhXHU4N2ZmXHU4ODAxXHU4ODAzXHU4ODA2XHU4ODA5XHU4ODBhXHU4'@; put 'ODBiXHU4ODEwXHU4ODE5XHU4ODEyXHU4ODEzXHU4ODE0XHU4ODE4XHU4ODFhXHU4ODFiXHU4ODFjXHU4ODFlXHU4ODFmXHU4ODI4XHU4ODJkXHU4ODJlXHU4ODMwXHU4ODMyXHU4ODM1Il0sWyI4ZmRjYTEiLCJcdTg4M2FcdTg4M2NcdTg4NDFcdTg4NDNcdTg4NDVcdTg4NDhcdTg4NDlcdTg4'@; put 'NGFcdTg4NGJcdTg4NGVcdTg4NTFcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWFcdTg4NWNcdTg4NWZcdTg4NjBcdTg4NjRcdTg4NjlcdTg4NzFcdTg4NzlcdTg4N2JcdTg4ODBcdTg4OThcdTg4OWFcdTg4OWJcdTg4OWNcdTg4OWZcdTg4YTBcdTg4YThcdTg4YWFcdTg4YmFcdTg4YmRcdTg4YmVc'@; put 'dTg4YzBcdTg4Y2EiLDQsIlx1ODhkMVx1ODhkMlx1ODhkM1x1ODhkYlx1ODhkZVx1ODhlN1x1ODhlZlx1ODhmMFx1ODhmMVx1ODhmNVx1ODhmN1x1ODkwMVx1ODkwNlx1ODkwZFx1ODkwZVx1ODkwZlx1ODkxNVx1ODkxNlx1ODkxOFx1ODkxOVx1ODkxYVx1ODkxY1x1ODkyMFx1ODkyNlx1ODky'@; put 'N1x1ODkyOFx1ODkzMFx1ODkzMVx1ODkzMlx1ODkzNVx1ODkzOVx1ODkzYVx1ODkzZVx1ODk0MFx1ODk0Mlx1ODk0NVx1ODk0Nlx1ODk0OVx1ODk0Zlx1ODk1Mlx1ODk1N1x1ODk1YVx1ODk1Ylx1ODk1Y1x1ODk2MVx1ODk2Mlx1ODk2M1x1ODk2Ylx1ODk2ZVx1ODk3MFx1ODk3M1x1ODk3NVx1'@; put 'ODk3YSJdLFsiOGZkZGExIiwiXHU4OTdiXHU4OTdjXHU4OTdkXHU4OTg5XHU4OThkXHU4OTkwXHU4OTk0XHU4OTk1XHU4OTliXHU4OTljXHU4OTlmXHU4OWEwXHU4OWE1XHU4OWIwXHU4OWI0XHU4OWI1XHU4OWI2XHU4OWI3XHU4OWJjXHU4OWQ0Iiw0LCJcdTg5ZTVcdTg5ZTlcdTg5ZWJcdTg5'@; put 'ZWRcdTg5ZjFcdTg5ZjNcdTg5ZjZcdTg5ZjlcdTg5ZmRcdTg5ZmZcdThhMDRcdThhMDVcdThhMDdcdThhMGZcdThhMTFcdThhMTJcdThhMTRcdThhMTVcdThhMWVcdThhMjBcdThhMjJcdThhMjRcdThhMjZcdThhMmJcdThhMmNcdThhMmZcdThhMzVcdThhMzdcdThhM2RcdThhM2VcdThhNDBc'@; put 'dThhNDNcdThhNDVcdThhNDdcdThhNDlcdThhNGRcdThhNGVcdThhNTNcdThhNTZcdThhNTdcdThhNThcdThhNWNcdThhNWRcdThhNjFcdThhNjVcdThhNjdcdThhNzVcdThhNzZcdThhNzdcdThhNzlcdThhN2FcdThhN2JcdThhN2VcdThhN2ZcdThhODBcdThhODNcdThhODZcdThhOGJcdThh'@; put 'OGZcdThhOTBcdThhOTJcdThhOTZcdThhOTdcdThhOTlcdThhOWZcdThhYTdcdThhYTlcdThhYWVcdThhYWZcdThhYjMiXSxbIjhmZGVhMSIsIlx1OGFiNlx1OGFiN1x1OGFiYlx1OGFiZVx1OGFjM1x1OGFjNlx1OGFjOFx1OGFjOVx1OGFjYVx1OGFkMVx1OGFkM1x1OGFkNFx1OGFkNVx1OGFk'@; put 'N1x1OGFkZFx1OGFkZlx1OGFlY1x1OGFmMFx1OGFmNFx1OGFmNVx1OGFmNlx1OGFmY1x1OGFmZlx1OGIwNVx1OGIwNlx1OGIwYlx1OGIxMVx1OGIxY1x1OGIxZVx1OGIxZlx1OGIwYVx1OGIyZFx1OGIzMFx1OGIzN1x1OGIzY1x1OGI0MiIsNCwiXHU4YjQ4XHU4YjUyXHU4YjUzXHU4YjU0XHU4'@; put 'YjU5XHU4YjRkXHU4YjVlXHU4YjYzXHU4YjZkXHU4Yjc2XHU4Yjc4XHU4Yjc5XHU4YjdjXHU4YjdlXHU4YjgxXHU4Yjg0XHU4Yjg1XHU4YjhiXHU4YjhkXHU4YjhmXHU4Yjk0XHU4Yjk1XHU4YjljXHU4YjllXHU4YjlmXHU4YzM4XHU4YzM5XHU4YzNkXHU4YzNlXHU4YzQ1XHU4YzQ3XHU4YzQ5'@; put 'XHU4YzRiXHU4YzRmXHU4YzUxXHU4YzUzXHU4YzU0XHU4YzU3XHU4YzU4XHU4YzViXHU4YzVkXHU4YzU5XHU4YzYzXHU4YzY0XHU4YzY2XHU4YzY4XHU4YzY5XHU4YzZkXHU4YzczXHU4Yzc1XHU4Yzc2XHU4YzdiXHU4YzdlXHU4Yzg2Il0sWyI4ZmRmYTEiLCJcdThjODdcdThjOGJcdThjOTBc'@; put 'dThjOTJcdThjOTNcdThjOTlcdThjOWJcdThjOWNcdThjYTRcdThjYjlcdThjYmFcdThjYzVcdThjYzZcdThjYzlcdThjY2JcdThjY2ZcdThjZDZcdThjZDVcdThjZDlcdThjZGRcdThjZTFcdThjZThcdThjZWNcdThjZWZcdThjZjBcdThjZjJcdThjZjVcdThjZjdcdThjZjhcdThjZmVcdThj'@; put 'ZmZcdThkMDFcdThkMDNcdThkMDlcdThkMTJcdThkMTdcdThkMWJcdThkNjVcdThkNjlcdThkNmNcdThkNmVcdThkN2ZcdThkODJcdThkODRcdThkODhcdThkOGRcdThkOTBcdThkOTFcdThkOTVcdThkOWVcdThkOWZcdThkYTBcdThkYTZcdThkYWJcdThkYWNcdThkYWZcdThkYjJcdThkYjVc'@; put 'dThkYjdcdThkYjlcdThkYmJcdThkYzBcdThkYzVcdThkYzZcdThkYzdcdThkYzhcdThkY2FcdThkY2VcdThkZDFcdThkZDRcdThkZDVcdThkZDdcdThkZDlcdThkZTRcdThkZTVcdThkZTdcdThkZWNcdThkZjBcdThkYmNcdThkZjFcdThkZjJcdThkZjRcdThkZmRcdThlMDFcdThlMDRcdThl'@; put 'MDVcdThlMDZcdThlMGJcdThlMTFcdThlMTRcdThlMTZcdThlMjBcdThlMjFcdThlMjIiXSxbIjhmZTBhMSIsIlx1OGUyM1x1OGUyNlx1OGUyN1x1OGUzMVx1OGUzM1x1OGUzNlx1OGUzN1x1OGUzOFx1OGUzOVx1OGUzZFx1OGU0MFx1OGU0MVx1OGU0Ylx1OGU0ZFx1OGU0ZVx1OGU0Zlx1OGU1'@; put 'NFx1OGU1Ylx1OGU1Y1x1OGU1ZFx1OGU1ZVx1OGU2MVx1OGU2Mlx1OGU2OVx1OGU2Y1x1OGU2ZFx1OGU2Zlx1OGU3MFx1OGU3MVx1OGU3OVx1OGU3YVx1OGU3Ylx1OGU4Mlx1OGU4M1x1OGU4OVx1OGU5MFx1OGU5Mlx1OGU5NVx1OGU5YVx1OGU5Ylx1OGU5ZFx1OGU5ZVx1OGVhMlx1OGVhN1x1'@; put 'OGVhOVx1OGVhZFx1OGVhZVx1OGViM1x1OGViNVx1OGViYVx1OGViYlx1OGVjMFx1OGVjMVx1OGVjM1x1OGVjNFx1OGVjN1x1OGVjZlx1OGVkMVx1OGVkNFx1OGVkY1x1OGVlOFx1OGVlZVx1OGVmMFx1OGVmMVx1OGVmN1x1OGVmOVx1OGVmYVx1OGVlZFx1OGYwMFx1OGYwMlx1OGYwN1x1OGYw'@; put 'OFx1OGYwZlx1OGYxMFx1OGYxNlx1OGYxN1x1OGYxOFx1OGYxZVx1OGYyMFx1OGYyMVx1OGYyM1x1OGYyNVx1OGYyN1x1OGYyOFx1OGYyY1x1OGYyZFx1OGYyZVx1OGYzNFx1OGYzNVx1OGYzNlx1OGYzN1x1OGYzYVx1OGY0MFx1OGY0MSJdLFsiOGZlMWExIiwiXHU4ZjQzXHU4ZjQ3XHU4ZjRm'@; put 'XHU4ZjUxIiw0LCJcdThmNThcdThmNWRcdThmNWVcdThmNjVcdThmOWRcdThmYTBcdThmYTFcdThmYTRcdThmYTVcdThmYTZcdThmYjVcdThmYjZcdThmYjhcdThmYmVcdThmYzBcdThmYzFcdThmYzZcdThmY2FcdThmY2JcdThmY2RcdThmZDBcdThmZDJcdThmZDNcdThmZDVcdThmZTBcdThm'@; put 'ZTNcdThmZTRcdThmZThcdThmZWVcdThmZjFcdThmZjVcdThmZjZcdThmZmJcdThmZmVcdTkwMDJcdTkwMDRcdTkwMDhcdTkwMGNcdTkwMThcdTkwMWJcdTkwMjhcdTkwMjlcdTkwMmZcdTkwMmFcdTkwMmNcdTkwMmRcdTkwMzNcdTkwMzRcdTkwMzdcdTkwM2ZcdTkwNDNcdTkwNDRcdTkwNGNc'@; put 'dTkwNWJcdTkwNWRcdTkwNjJcdTkwNjZcdTkwNjdcdTkwNmNcdTkwNzBcdTkwNzRcdTkwNzlcdTkwODVcdTkwODhcdTkwOGJcdTkwOGNcdTkwOGVcdTkwOTBcdTkwOTVcdTkwOTdcdTkwOThcdTkwOTlcdTkwOWJcdTkwYTBcdTkwYTFcdTkwYTJcdTkwYTVcdTkwYjBcdTkwYjJcdTkwYjNcdTkw'@; put 'YjRcdTkwYjZcdTkwYmRcdTkwY2NcdTkwYmVcdTkwYzMiXSxbIjhmZTJhMSIsIlx1OTBjNFx1OTBjNVx1OTBjN1x1OTBjOFx1OTBkNVx1OTBkN1x1OTBkOFx1OTBkOVx1OTBkY1x1OTBkZFx1OTBkZlx1OTBlNVx1OTBkMlx1OTBmNlx1OTBlYlx1OTBlZlx1OTBmMFx1OTBmNFx1OTBmZVx1OTBm'@; put 'Zlx1OTEwMFx1OTEwNFx1OTEwNVx1OTEwNlx1OTEwOFx1OTEwZFx1OTExMFx1OTExNFx1OTExNlx1OTExN1x1OTExOFx1OTExYVx1OTExY1x1OTExZVx1OTEyMFx1OTEyNVx1OTEyMlx1OTEyM1x1OTEyN1x1OTEyOVx1OTEyZVx1OTEyZlx1OTEzMVx1OTEzNFx1OTEzNlx1OTEzN1x1OTEzOVx1'@; put 'OTEzYVx1OTEzY1x1OTEzZFx1OTE0M1x1OTE0N1x1OTE0OFx1OTE0Zlx1OTE1M1x1OTE1N1x1OTE1OVx1OTE1YVx1OTE1Ylx1OTE2MVx1OTE2NFx1OTE2N1x1OTE2ZFx1OTE3NFx1OTE3OVx1OTE3YVx1OTE3Ylx1OTE4MVx1OTE4M1x1OTE4NVx1OTE4Nlx1OTE4YVx1OTE4ZVx1OTE5MVx1OTE5'@; put 'M1x1OTE5NFx1OTE5NVx1OTE5OFx1OTE5ZVx1OTFhMVx1OTFhNlx1OTFhOFx1OTFhY1x1OTFhZFx1OTFhZVx1OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFiYlx1OTFiY1x1OTFiZFx1OTFiZiJdLFsiOGZlM2ExIiwiXHU5MWMyXHU5MWMzXHU5MWM1XHU5MWQzXHU5MWQ0XHU5MWQ3'@; put 'XHU5MWQ5XHU5MWRhXHU5MWRlXHU5MWU0XHU5MWU1XHU5MWU5XHU5MWVhXHU5MWVjIiw1LCJcdTkxZjdcdTkxZjlcdTkxZmJcdTkxZmRcdTkyMDBcdTkyMDFcdTkyMDRcdTkyMDVcdTkyMDZcdTkyMDdcdTkyMDlcdTkyMGFcdTkyMGNcdTkyMTBcdTkyMTJcdTkyMTNcdTkyMTZcdTkyMThcdTky'@; put 'MWNcdTkyMWRcdTkyMjNcdTkyMjRcdTkyMjVcdTkyMjZcdTkyMjhcdTkyMmVcdTkyMmZcdTkyMzBcdTkyMzNcdTkyMzVcdTkyMzZcdTkyMzhcdTkyMzlcdTkyM2FcdTkyM2NcdTkyM2VcdTkyNDBcdTkyNDJcdTkyNDNcdTkyNDZcdTkyNDdcdTkyNGFcdTkyNGRcdTkyNGVcdTkyNGZcdTkyNTFc'@; put 'dTkyNThcdTkyNTlcdTkyNWNcdTkyNWRcdTkyNjBcdTkyNjFcdTkyNjVcdTkyNjdcdTkyNjhcdTkyNjlcdTkyNmVcdTkyNmZcdTkyNzBcdTkyNzUiLDQsIlx1OTI3Ylx1OTI3Y1x1OTI3ZFx1OTI3Zlx1OTI4OFx1OTI4OVx1OTI4YVx1OTI4ZFx1OTI4ZVx1OTI5Mlx1OTI5NyJdLFsiOGZlNGEx'@; put 'IiwiXHU5Mjk5XHU5MjlmXHU5MmEwXHU5MmE0XHU5MmE1XHU5MmE3XHU5MmE4XHU5MmFiXHU5MmFmXHU5MmIyXHU5MmI2XHU5MmI4XHU5MmJhXHU5MmJiXHU5MmJjXHU5MmJkXHU5MmJmIiw0LCJcdTkyYzVcdTkyYzZcdTkyYzdcdTkyYzhcdTkyY2JcdTkyY2NcdTkyY2RcdTkyY2VcdTkyZDBc'@; put 'dTkyZDNcdTkyZDVcdTkyZDdcdTkyZDhcdTkyZDlcdTkyZGNcdTkyZGRcdTkyZGZcdTkyZTBcdTkyZTFcdTkyZTNcdTkyZTVcdTkyZTdcdTkyZThcdTkyZWNcdTkyZWVcdTkyZjBcdTkyZjlcdTkyZmJcdTkyZmZcdTkzMDBcdTkzMDJcdTkzMDhcdTkzMGRcdTkzMTFcdTkzMTRcdTkzMTVcdTkz'@; put 'MWNcdTkzMWRcdTkzMWVcdTkzMWZcdTkzMjFcdTkzMjRcdTkzMjVcdTkzMjdcdTkzMjlcdTkzMmFcdTkzMzNcdTkzMzRcdTkzMzZcdTkzMzdcdTkzNDdcdTkzNDhcdTkzNDlcdTkzNTBcdTkzNTFcdTkzNTJcdTkzNTVcdTkzNTdcdTkzNThcdTkzNWFcdTkzNWVcdTkzNjRcdTkzNjVcdTkzNjdc'@; put 'dTkzNjlcdTkzNmFcdTkzNmRcdTkzNmZcdTkzNzBcdTkzNzFcdTkzNzNcdTkzNzRcdTkzNzYiXSxbIjhmZTVhMSIsIlx1OTM3YVx1OTM3ZFx1OTM3Zlx1OTM4MFx1OTM4MVx1OTM4Mlx1OTM4OFx1OTM4YVx1OTM4Ylx1OTM4ZFx1OTM4Zlx1OTM5Mlx1OTM5NVx1OTM5OFx1OTM5Ylx1OTM5ZVx1'@; put 'OTNhMVx1OTNhM1x1OTNhNFx1OTNhNlx1OTNhOFx1OTNhYlx1OTNiNFx1OTNiNVx1OTNiNlx1OTNiYVx1OTNhOVx1OTNjMVx1OTNjNFx1OTNjNVx1OTNjNlx1OTNjN1x1OTNjOSIsNCwiXHU5M2QzXHU5M2Q5XHU5M2RjXHU5M2RlXHU5M2RmXHU5M2UyXHU5M2U2XHU5M2U3XHU5M2Y5XHU5M2Y3'@; put 'XHU5M2Y4XHU5M2ZhXHU5M2ZiXHU5M2ZkXHU5NDAxXHU5NDAyXHU5NDA0XHU5NDA4XHU5NDA5XHU5NDBkXHU5NDBlXHU5NDBmXHU5NDE1XHU5NDE2XHU5NDE3XHU5NDFmXHU5NDJlXHU5NDJmXHU5NDMxXHU5NDMyXHU5NDMzXHU5NDM0XHU5NDNiXHU5NDNmXHU5NDNkXHU5NDQzXHU5NDQ1XHU5'@; put 'NDQ4XHU5NDRhXHU5NDRjXHU5NDU1XHU5NDU5XHU5NDVjXHU5NDVmXHU5NDYxXHU5NDYzXHU5NDY4XHU5NDZiXHU5NDZkXHU5NDZlXHU5NDZmXHU5NDcxXHU5NDcyXHU5NDg0XHU5NDgzXHU5NTc4XHU5NTc5Il0sWyI4ZmU2YTEiLCJcdTk1N2VcdTk1ODRcdTk1ODhcdTk1OGNcdTk1OGRcdTk1'@; put 'OGVcdTk1OWRcdTk1OWVcdTk1OWZcdTk1YTFcdTk1YTZcdTk1YTlcdTk1YWJcdTk1YWNcdTk1YjRcdTk1YjZcdTk1YmFcdTk1YmRcdTk1YmZcdTk1YzZcdTk1YzhcdTk1YzlcdTk1Y2JcdTk1ZDBcdTk1ZDFcdTk1ZDJcdTk1ZDNcdTk1ZDlcdTk1ZGFcdTk1ZGRcdTk1ZGVcdTk1ZGZcdTk1ZTBc'@; put 'dTk1ZTRcdTk1ZTZcdTk2MWRcdTk2MWVcdTk2MjJcdTk2MjRcdTk2MjVcdTk2MjZcdTk2MmNcdTk2MzFcdTk2MzNcdTk2MzdcdTk2MzhcdTk2MzlcdTk2M2FcdTk2M2NcdTk2M2RcdTk2NDFcdTk2NTJcdTk2NTRcdTk2NTZcdTk2NTdcdTk2NThcdTk2NjFcdTk2NmVcdTk2NzRcdTk2N2JcdTk2'@; put 'N2NcdTk2N2VcdTk2N2ZcdTk2ODFcdTk2ODJcdTk2ODNcdTk2ODRcdTk2ODlcdTk2OTFcdTk2OTZcdTk2OWFcdTk2OWRcdTk2OWZcdTk2YTRcdTk2YTVcdTk2YTZcdTk2YTlcdTk2YWVcdTk2YWZcdTk2YjNcdTk2YmFcdTk2Y2FcdTk2ZDJcdTVkYjJcdTk2ZDhcdTk2ZGFcdTk2ZGRcdTk2ZGVc'@; put 'dTk2ZGZcdTk2ZTlcdTk2ZWZcdTk2ZjFcdTk2ZmFcdTk3MDIiXSxbIjhmZTdhMSIsIlx1OTcwM1x1OTcwNVx1OTcwOVx1OTcxYVx1OTcxYlx1OTcxZFx1OTcyMVx1OTcyMlx1OTcyM1x1OTcyOFx1OTczMVx1OTczM1x1OTc0MVx1OTc0M1x1OTc0YVx1OTc0ZVx1OTc0Zlx1OTc1NVx1OTc1N1x1'@; put 'OTc1OFx1OTc1YVx1OTc1Ylx1OTc2M1x1OTc2N1x1OTc2YVx1OTc2ZVx1OTc3M1x1OTc3Nlx1OTc3N1x1OTc3OFx1OTc3Ylx1OTc3ZFx1OTc3Zlx1OTc4MFx1OTc4OVx1OTc5NVx1OTc5Nlx1OTc5N1x1OTc5OVx1OTc5YVx1OTc5ZVx1OTc5Zlx1OTdhMlx1OTdhY1x1OTdhZVx1OTdiMVx1OTdi'@; put 'Mlx1OTdiNVx1OTdiNlx1OTdiOFx1OTdiOVx1OTdiYVx1OTdiY1x1OTdiZVx1OTdiZlx1OTdjMVx1OTdjNFx1OTdjNVx1OTdjN1x1OTdjOVx1OTdjYVx1OTdjY1x1OTdjZFx1OTdjZVx1OTdkMFx1OTdkMVx1OTdkNFx1OTdkN1x1OTdkOFx1OTdkOVx1OTdkZFx1OTdkZVx1OTdlMFx1OTdkYlx1'@; put 'OTdlMVx1OTdlNFx1OTdlZlx1OTdmMVx1OTdmNFx1OTdmN1x1OTdmOFx1OTdmYVx1OTgwN1x1OTgwYVx1OTgxOVx1OTgwZFx1OTgwZVx1OTgxNFx1OTgxNlx1OTgxY1x1OTgxZVx1OTgyMFx1OTgyM1x1OTgyNiJdLFsiOGZlOGExIiwiXHU5ODJiXHU5ODJlXHU5ODJmXHU5ODMwXHU5ODMyXHU5'@; put 'ODMzXHU5ODM1XHU5ODI1XHU5ODNlXHU5ODQ0XHU5ODQ3XHU5ODRhXHU5ODUxXHU5ODUyXHU5ODUzXHU5ODU2XHU5ODU3XHU5ODU5XHU5ODVhXHU5ODYyXHU5ODYzXHU5ODY1XHU5ODY2XHU5ODZhXHU5ODZjXHU5OGFiXHU5OGFkXHU5OGFlXHU5OGIwXHU5OGI0XHU5OGI3XHU5OGI4XHU5OGJh'@; put 'XHU5OGJiXHU5OGJmXHU5OGMyXHU5OGM1XHU5OGM4XHU5OGNjXHU5OGUxXHU5OGUzXHU5OGU1XHU5OGU2XHU5OGU3XHU5OGVhXHU5OGYzXHU5OGY2XHU5OTAyXHU5OTA3XHU5OTA4XHU5OTExXHU5OTE1XHU5OTE2XHU5OTE3XHU5OTFhXHU5OTFiXHU5OTFjXHU5OTFmXHU5OTIyXHU5OTI2XHU5'@; put 'OTI3XHU5OTJiXHU5OTMxIiw0LCJcdTk5MzlcdTk5M2FcdTk5M2JcdTk5M2NcdTk5NDBcdTk5NDFcdTk5NDZcdTk5NDdcdTk5NDhcdTk5NGRcdTk5NGVcdTk5NTRcdTk5NThcdTk5NTlcdTk5NWJcdTk5NWNcdTk5NWVcdTk5NWZcdTk5NjBcdTk5OWJcdTk5OWRcdTk5OWZcdTk5YTZcdTk5YjBc'@; put 'dTk5YjFcdTk5YjJcdTk5YjUiXSxbIjhmZTlhMSIsIlx1OTliOVx1OTliYVx1OTliZFx1OTliZlx1OTljM1x1OTljOVx1OTlkM1x1OTlkNFx1OTlkOVx1OTlkYVx1OTlkY1x1OTlkZVx1OTllN1x1OTllYVx1OTllYlx1OTllY1x1OTlmMFx1OTlmNFx1OTlmNVx1OTlmOVx1OTlmZFx1OTlmZVx1'@; put 'OWEwMlx1OWEwM1x1OWEwNFx1OWEwYlx1OWEwY1x1OWExMFx1OWExMVx1OWExNlx1OWExZVx1OWEyMFx1OWEyMlx1OWEyM1x1OWEyNFx1OWEyN1x1OWEyZFx1OWEyZVx1OWEzM1x1OWEzNVx1OWEzNlx1OWEzOFx1OWE0N1x1OWE0MVx1OWE0NFx1OWE0YVx1OWE0Ylx1OWE0Y1x1OWE0ZVx1OWE1'@; put 'MVx1OWE1NFx1OWE1Nlx1OWE1ZFx1OWFhYVx1OWFhY1x1OWFhZVx1OWFhZlx1OWFiMlx1OWFiNFx1OWFiNVx1OWFiNlx1OWFiOVx1OWFiYlx1OWFiZVx1OWFiZlx1OWFjMVx1OWFjM1x1OWFjNlx1OWFjOFx1OWFjZVx1OWFkMFx1OWFkMlx1OWFkNVx1OWFkNlx1OWFkN1x1OWFkYlx1OWFkY1x1'@; put 'OWFlMFx1OWFlNFx1OWFlNVx1OWFlN1x1OWFlOVx1OWFlY1x1OWFmMlx1OWFmM1x1OWFmNVx1OWFmOVx1OWFmYVx1OWFmZFx1OWFmZiIsNF0sWyI4ZmVhYTEiLCJcdTliMDRcdTliMDVcdTliMDhcdTliMDlcdTliMGJcdTliMGNcdTliMGRcdTliMGVcdTliMTBcdTliMTJcdTliMTZcdTliMTlc'@; put 'dTliMWJcdTliMWNcdTliMjBcdTliMjZcdTliMmJcdTliMmRcdTliMzNcdTliMzRcdTliMzVcdTliMzdcdTliMzlcdTliM2FcdTliM2RcdTliNDhcdTliNGJcdTliNGNcdTliNTVcdTliNTZcdTliNTdcdTliNWJcdTliNWVcdTliNjFcdTliNjNcdTliNjVcdTliNjZcdTliNjhcdTliNmEiLDQs'@; put 'Ilx1OWI3M1x1OWI3NVx1OWI3N1x1OWI3OFx1OWI3OVx1OWI3Zlx1OWI4MFx1OWI4NFx1OWI4NVx1OWI4Nlx1OWI4N1x1OWI4OVx1OWI4YVx1OWI4Ylx1OWI4ZFx1OWI4Zlx1OWI5MFx1OWI5NFx1OWI5YVx1OWI5ZFx1OWI5ZVx1OWJhNlx1OWJhN1x1OWJhOVx1OWJhY1x1OWJiMFx1OWJiMVx1'@; put 'OWJiMlx1OWJiN1x1OWJiOFx1OWJiYlx1OWJiY1x1OWJiZVx1OWJiZlx1OWJjMVx1OWJjN1x1OWJjOFx1OWJjZVx1OWJkMFx1OWJkN1x1OWJkOFx1OWJkZFx1OWJkZlx1OWJlNVx1OWJlN1x1OWJlYVx1OWJlYlx1OWJlZlx1OWJmM1x1OWJmN1x1OWJmOCJdLFsiOGZlYmExIiwiXHU5YmY5XHU5'@; put 'YmZhXHU5YmZkXHU5YmZmXHU5YzAwXHU5YzAyXHU5YzBiXHU5YzBmXHU5YzExXHU5YzE2XHU5YzE4XHU5YzE5XHU5YzFhXHU5YzFjXHU5YzFlXHU5YzIyXHU5YzIzXHU5YzI2Iiw0LCJcdTljMzFcdTljMzVcdTljMzZcdTljMzdcdTljM2RcdTljNDFcdTljNDNcdTljNDRcdTljNDVcdTljNDlc'@; put 'dTljNGFcdTljNGVcdTljNGZcdTljNTBcdTljNTNcdTljNTRcdTljNTZcdTljNThcdTljNWJcdTljNWRcdTljNWVcdTljNWZcdTljNjNcdTljNjlcdTljNmFcdTljNWNcdTljNmJcdTljNjhcdTljNmVcdTljNzBcdTljNzJcdTljNzVcdTljNzdcdTljN2JcdTljZTZcdTljZjJcdTljZjdcdTlj'@; put 'ZjlcdTlkMGJcdTlkMDJcdTlkMTFcdTlkMTdcdTlkMThcdTlkMWNcdTlkMWRcdTlkMWVcdTlkMmZcdTlkMzBcdTlkMzJcdTlkMzNcdTlkMzRcdTlkM2FcdTlkM2NcdTlkNDVcdTlkM2RcdTlkNDJcdTlkNDNcdTlkNDdcdTlkNGFcdTlkNTNcdTlkNTRcdTlkNWZcdTlkNjNcdTlkNjJcdTlkNjVc'@; put 'dTlkNjlcdTlkNmFcdTlkNmJcdTlkNzBcdTlkNzZcdTlkNzdcdTlkN2IiXSxbIjhmZWNhMSIsIlx1OWQ3Y1x1OWQ3ZVx1OWQ4M1x1OWQ4NFx1OWQ4Nlx1OWQ4YVx1OWQ4ZFx1OWQ4ZVx1OWQ5Mlx1OWQ5M1x1OWQ5NVx1OWQ5Nlx1OWQ5N1x1OWQ5OFx1OWRhMVx1OWRhYVx1OWRhY1x1OWRhZVx1'@; put 'OWRiMVx1OWRiNVx1OWRiOVx1OWRiY1x1OWRiZlx1OWRjM1x1OWRjN1x1OWRjOVx1OWRjYVx1OWRkNFx1OWRkNVx1OWRkNlx1OWRkN1x1OWRkYVx1OWRkZVx1OWRkZlx1OWRlMFx1OWRlNVx1OWRlN1x1OWRlOVx1OWRlYlx1OWRlZVx1OWRmMFx1OWRmM1x1OWRmNFx1OWRmZVx1OWUwYVx1OWUw'@; put 'Mlx1OWUwN1x1OWUwZVx1OWUxMFx1OWUxMVx1OWUxMlx1OWUxNVx1OWUxNlx1OWUxOVx1OWUxY1x1OWUxZFx1OWU3YVx1OWU3Ylx1OWU3Y1x1OWU4MFx1OWU4Mlx1OWU4M1x1OWU4NFx1OWU4NVx1OWU4N1x1OWU4ZVx1OWU4Zlx1OWU5Nlx1OWU5OFx1OWU5Ylx1OWU5ZVx1OWVhNFx1OWVhOFx1'@; put 'OWVhY1x1OWVhZVx1OWVhZlx1OWViMFx1OWViM1x1OWViNFx1OWViNVx1OWVjNlx1OWVjOFx1OWVjYlx1OWVkNVx1OWVkZlx1OWVlNFx1OWVlN1x1OWVlY1x1OWVlZFx1OWVlZVx1OWVmMFx1OWVmMVx1OWVmMlx1OWVmNSJdLFsiOGZlZGExIiwiXHU5ZWY4XHU5ZWZmXHU5ZjAyXHU5ZjAzXHU5'@; put 'ZjA5XHU5ZjBmXHU5ZjEwXHU5ZjExXHU5ZjEyXHU5ZjE0XHU5ZjE2XHU5ZjE3XHU5ZjE5XHU5ZjFhXHU5ZjFiXHU5ZjFmXHU5ZjIyXHU5ZjI2XHU5ZjJhXHU5ZjJiXHU5ZjJmXHU5ZjMxXHU5ZjMyXHU5ZjM0XHU5ZjM3XHU5ZjM5XHU5ZjNhXHU5ZjNjXHU5ZjNkXHU5ZjNmXHU5ZjQxXHU5ZjQz'@; put 'Iiw0LCJcdTlmNTNcdTlmNTVcdTlmNTZcdTlmNTdcdTlmNThcdTlmNWFcdTlmNWRcdTlmNWVcdTlmNjhcdTlmNjlcdTlmNmQiLDQsIlx1OWY3M1x1OWY3NVx1OWY3YVx1OWY3ZFx1OWY4Zlx1OWY5MFx1OWY5MVx1OWY5Mlx1OWY5NFx1OWY5Nlx1OWY5N1x1OWY5ZVx1OWZhMVx1OWZhMlx1OWZh'@; put 'M1x1OWZhNSJdXScpfSw5OTEyOShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJ1Q2hhcnMiOlsxMjgsMTY1LDE2OSwxNzgsMTg0LDIxNiwyMjYsMjM1LDIzOCwyNDQsMjQ4LDI1MSwyNTMsMjU4LDI3NiwyODQsMzAwLDMyNSwzMjksMzM0LDM2NCw0NjMsNDY1LDQ2'@; put 'Nyw0NjksNDcxLDQ3Myw0NzUsNDc3LDUwNiw1OTQsNjEwLDcxMiw3MTYsNzMwLDkzMCw5MzgsOTYyLDk3MCwxMDI2LDExMDQsMTEwNiw4MjA5LDgyMTUsODIxOCw4MjIyLDgyMzEsODI0MSw4MjQ0LDgyNDYsODI1Miw4MzY1LDg0NTIsODQ1NCw4NDU4LDg0NzEsODQ4Miw4NTU2LDg1NzAsODU5'@; put 'Niw4NjAyLDg3MTMsODcyMCw4NzIyLDg3MjYsODczMSw4NzM3LDg3NDAsODc0Miw4NzQ4LDg3NTEsODc2MCw4NzY2LDg3NzcsODc4MSw4Nzg3LDg4MDIsODgwOCw4ODE2LDg4NTQsODg1OCw4ODcwLDg4OTYsODk3OSw5MzIyLDkzNzIsOTU0OCw5NTg4LDk2MTYsOTYyMiw5NjM0LDk2NTIsOTY2'@; put 'Miw5NjcyLDk2NzYsOTY4MCw5NzAyLDk3MzUsOTczOCw5NzkzLDk3OTUsMTE5MDYsMTE5MDksMTE5MTMsMTE5MTcsMTE5MjgsMTE5NDQsMTE5NDcsMTE5NTEsMTE5NTYsMTE5NjAsMTE5NjQsMTE5NzksMTIyODQsMTIyOTIsMTIzMTIsMTIzMTksMTIzMzAsMTIzNTEsMTI0MzYsMTI0NDcsMTI1'@; put 'MzUsMTI1NDMsMTI1ODYsMTI4NDIsMTI4NTAsMTI5NjQsMTMyMDAsMTMyMTUsMTMyMTgsMTMyNTMsMTMyNjMsMTMyNjcsMTMyNzAsMTMzODQsMTM0MjgsMTM3MjcsMTM4MzksMTM4NTEsMTQ2MTcsMTQ3MDMsMTQ4MDEsMTQ4MTYsMTQ5NjQsMTUxODMsMTU0NzEsMTU1ODUsMTY0NzEsMTY3MzYs'@; put 'MTcyMDgsMTczMjUsMTczMzAsMTczNzQsMTc2MjMsMTc5OTcsMTgwMTgsMTgyMTIsMTgyMTgsMTgzMDEsMTgzMTgsMTg3NjAsMTg4MTEsMTg4MTQsMTg4MjAsMTg4MjMsMTg4NDQsMTg4NDgsMTg4NzIsMTk1NzYsMTk2MjAsMTk3MzgsMTk4ODcsNDA4NzAsNTkyNDQsNTkzMzYsNTkzNjcsNTk0'@; put 'MTMsNTk0MTcsNTk0MjMsNTk0MzEsNTk0MzcsNTk0NDMsNTk0NTIsNTk0NjAsNTk0NzgsNTk0OTMsNjM3ODksNjM4NjYsNjM4OTQsNjM5NzYsNjM5ODYsNjQwMTYsNjQwMTgsNjQwMjEsNjQwMjUsNjQwMzQsNjQwMzcsNjQwNDIsNjUwNzQsNjUwOTMsNjUxMDcsNjUxMTIsNjUxMjcsNjUxMzIs'@; put 'NjUzNzUsNjU1MTAsNjU1MzZdLCJnYkNoYXJzIjpbMCwzNiwzOCw0NSw1MCw4MSw4OSw5NSw5NiwxMDAsMTAzLDEwNCwxMDUsMTA5LDEyNiwxMzMsMTQ4LDE3MiwxNzUsMTc5LDIwOCwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDM0MSw0MjgsNDQzLDU0NCw1NDUsNTU4LDc0MSw3'@; put 'NDIsNzQ5LDc1MCw4MDUsODE5LDgyMCw3OTIyLDc5MjQsNzkyNSw3OTI3LDc5MzQsNzk0Myw3OTQ0LDc5NDUsNzk1MCw4MDYyLDgxNDgsODE0OSw4MTUyLDgxNjQsODE3NCw4MjM2LDgyNDAsODI2Miw4MjY0LDgzNzQsODM4MCw4MzgxLDgzODQsODM4OCw4MzkwLDgzOTIsODM5Myw4Mzk0LDgz'@; put 'OTYsODQwMSw4NDA2LDg0MTYsODQxOSw4NDI0LDg0MzcsODQzOSw4NDQ1LDg0ODIsODQ4NSw4NDk2LDg1MjEsODYwMyw4OTM2LDg5NDYsOTA0Niw5MDUwLDkwNjMsOTA2Niw5MDc2LDkwOTIsOTEwMCw5MTA4LDkxMTEsOTExMyw5MTMxLDkxNjIsOTE2NCw5MjE4LDkyMTksMTEzMjksMTEzMzEs'@; put 'MTEzMzQsMTEzMzYsMTEzNDYsMTEzNjEsMTEzNjMsMTEzNjYsMTEzNzAsMTEzNzIsMTEzNzUsMTEzODksMTE2ODIsMTE2ODYsMTE2ODcsMTE2OTIsMTE2OTQsMTE3MTQsMTE3MTYsMTE3MjMsMTE3MjUsMTE3MzAsMTE3MzYsMTE5ODIsMTE5ODksMTIxMDIsMTIzMzYsMTIzNDgsMTIzNTAsMTIz'@; put 'ODQsMTIzOTMsMTIzOTUsMTIzOTcsMTI1MTAsMTI1NTMsMTI4NTEsMTI5NjIsMTI5NzMsMTM3MzgsMTM4MjMsMTM5MTksMTM5MzMsMTQwODAsMTQyOTgsMTQ1ODUsMTQ2OTgsMTU1ODMsMTU4NDcsMTYzMTgsMTY0MzQsMTY0MzgsMTY0ODEsMTY3MjksMTcxMDIsMTcxMjIsMTczMTUsMTczMjAs'@; put 'MTc0MDIsMTc0MTgsMTc4NTksMTc5MDksMTc5MTEsMTc5MTUsMTc5MTYsMTc5MzYsMTc5MzksMTc5NjEsMTg2NjQsMTg3MDMsMTg4MTQsMTg5NjIsMTkwNDMsMzM0NjksMzM0NzAsMzM0NzEsMzM0ODQsMzM0ODUsMzM0OTAsMzM0OTcsMzM1MDEsMzM1MDUsMzM1MTMsMzM1MjAsMzM1MzYsMzM1'@; put 'NTAsMzc4NDUsMzc5MjEsMzc5NDgsMzgwMjksMzgwMzgsMzgwNjQsMzgwNjUsMzgwNjYsMzgwNjksMzgwNzUsMzgwNzYsMzgwNzgsMzkxMDgsMzkxMDksMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkyNjUsMzkzOTQsMTg5MDAwXX0nKX0sNTU5MTQoZmUpeyJ1c2Ugc3RyaWN0IjtmZS5leHBv'@; put 'cnRzPUpTT04ucGFyc2UoJ1tbImExNDAiLCJcdWU0YzYiLDYyXSxbImExODAiLCJcdWU1MDUiLDMyXSxbImEyNDAiLCJcdWU1MjYiLDYyXSxbImEyODAiLCJcdWU1NjUiLDMyXSxbImEyYWIiLCJcdWU3NjYiLDVdLFsiYTJlMyIsIlx1MjBhY1x1ZTc2ZCJdLFsiYTJlZiIsIlx1ZTc2ZVx1ZTc2'@; put 'ZiJdLFsiYTJmZCIsIlx1ZTc3MFx1ZTc3MSJdLFsiYTM0MCIsIlx1ZTU4NiIsNjJdLFsiYTM4MCIsIlx1ZTVjNSIsMzEsIlx1MzAwMCJdLFsiYTQ0MCIsIlx1ZTVlNiIsNjJdLFsiYTQ4MCIsIlx1ZTYyNSIsMzJdLFsiYTRmNCIsIlx1ZTc3MiIsMTBdLFsiYTU0MCIsIlx1ZTY0NiIsNjJdLFsi'@; put 'YTU4MCIsIlx1ZTY4NSIsMzJdLFsiYTVmNyIsIlx1ZTc3ZCIsN10sWyJhNjQwIiwiXHVlNmE2Iiw2Ml0sWyJhNjgwIiwiXHVlNmU1IiwzMl0sWyJhNmI5IiwiXHVlNzg1Iiw3XSxbImE2ZDkiLCJcdWU3OGQiLDZdLFsiYTZlYyIsIlx1ZTc5NFx1ZTc5NSJdLFsiYTZmMyIsIlx1ZTc5NiJdLFsi'@; put 'YTZmNiIsIlx1ZTc5NyIsOF0sWyJhNzQwIiwiXHVlNzA2Iiw2Ml0sWyJhNzgwIiwiXHVlNzQ1IiwzMl0sWyJhN2MyIiwiXHVlN2EwIiwxNF0sWyJhN2YyIiwiXHVlN2FmIiwxMl0sWyJhODk2IiwiXHVlN2JjIiwxMF0sWyJhOGJjIiwiXHVlN2M3Il0sWyJhOGJmIiwiXHUwMWY5Il0sWyJhOGMx'@; put 'IiwiXHVlN2M5XHVlN2NhXHVlN2NiXHVlN2NjIl0sWyJhOGVhIiwiXHVlN2NkIiwyMF0sWyJhOTU4IiwiXHVlN2UyIl0sWyJhOTViIiwiXHVlN2UzIl0sWyJhOTVkIiwiXHVlN2U0XHVlN2U1XHVlN2U2Il0sWyJhOTg5IiwiXHUzMDNlXHUyZmYwIiwxMV0sWyJhOTk3IiwiXHVlN2Y0IiwxMl0s'@; put 'WyJhOWYwIiwiXHVlODAxIiwxNF0sWyJhYWExIiwiXHVlMDAwIiw5M10sWyJhYmExIiwiXHVlMDVlIiw5M10sWyJhY2ExIiwiXHVlMGJjIiw5M10sWyJhZGExIiwiXHVlMTFhIiw5M10sWyJhZWExIiwiXHVlMTc4Iiw5M10sWyJhZmExIiwiXHVlMWQ2Iiw5M10sWyJkN2ZhIiwiXHVlODEwIiw0'@; put 'XSxbImY4YTEiLCJcdWUyMzQiLDkzXSxbImY5YTEiLCJcdWUyOTIiLDkzXSxbImZhYTEiLCJcdWUyZjAiLDkzXSxbImZiYTEiLCJcdWUzNGUiLDkzXSxbImZjYTEiLCJcdWUzYWMiLDkzXSxbImZkYTEiLCJcdWU0MGEiLDkzXSxbImZlNTAiLCJcdTJlODFcdWU4MTZcdWU4MTdcdWU4MThcdTJl'@; put 'ODRcdTM0NzNcdTM0NDdcdTJlODhcdTJlOGJcdWU4MWVcdTM1OWVcdTM2MWFcdTM2MGVcdTJlOGNcdTJlOTdcdTM5NmVcdTM5MThcdWU4MjZcdTM5Y2ZcdTM5ZGZcdTNhNzNcdTM5ZDBcdWU4MmJcdWU4MmNcdTNiNGVcdTNjNmVcdTNjZTBcdTJlYTdcdWU4MzFcdWU4MzJcdTJlYWFcdTQwNTZc'@; put 'dTQxNWZcdTJlYWVcdTQzMzdcdTJlYjNcdTJlYjZcdTJlYjdcdWU4M2JcdTQzYjFcdTQzYWNcdTJlYmJcdTQzZGRcdTQ0ZDZcdTQ2NjFcdTQ2NGNcdWU4NDMiXSxbImZlODAiLCJcdTQ3MjNcdTQ3MjlcdTQ3N2NcdTQ3OGRcdTJlY2FcdTQ5NDdcdTQ5N2FcdTQ5N2RcdTQ5ODJcdTQ5ODNcdTQ5'@; put 'ODVcdTQ5ODZcdTQ5OWZcdTQ5OWJcdTQ5YjdcdTQ5YjZcdWU4NTRcdWU4NTVcdTRjYTNcdTRjOWZcdTRjYTBcdTRjYTFcdTRjNzdcdTRjYTJcdTRkMTMiLDYsIlx1NGRhZVx1ZTg2NFx1ZTQ2OCIsOTNdXScpfSw0MDY3OShmZSl7InVzZSBzdHJpY3QiO2ZlLmV4cG9ydHM9SlNPTi5wYXJzZSgn'@; put 'W1siMCIsIlxcdTAwMDAiLDEyOF0sWyJhMSIsIlx1ZmY2MSIsNjJdLFsiODE0MCIsIlx1MzAwMFx1MzAwMVx1MzAwMlx1ZmYwY1x1ZmYwZVx1MzBmYlx1ZmYxYVx1ZmYxYlx1ZmYxZlx1ZmYwMVx1MzA5Ylx1MzA5Y1x4YjRcdWZmNDBceGE4XHVmZjNlXHVmZmUzXHVmZjNmXHUzMGZkXHUzMGZl'@; put 'XHUzMDlkXHUzMDllXHUzMDAzXHU0ZWRkXHUzMDA1XHUzMDA2XHUzMDA3XHUzMGZjXHUyMDE1XHUyMDEwXHVmZjBmXHVmZjNjXHVmZjVlXHUyMjI1XHVmZjVjXHUyMDI2XHUyMDI1XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHVmZjA4XHVmZjA5XHUzMDE0XHUzMDE1XHVmZjNiXHVmZjNkXHVm'@; put 'ZjViXHVmZjVkXHUzMDA4Iiw5LCJcdWZmMGJcdWZmMGRceGIxXHhkNyJdLFsiODE4MCIsIlx4ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVm'@; put 'ZjA1XHVmZjAzXHVmZjA2XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAxMlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxMyJdLFsiODFiOCIsIlx1'@; put 'MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOSJdLFsiODFjOCIsIlx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwMyJdLFsiODFkYSIsIlx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx1MjI2YVx1MjI2'@; put 'Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyYyJdLFsiODFmMCIsIlx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjYiXSxbIjgxZmMiLCJcdTI1ZWYiXSxbIjgyNGYiLCJcdWZmMTAiLDldLFsiODI2MCIsIlx1ZmYyMSIsMjVdLFsiODI4MSIs'@; put 'Ilx1ZmY0MSIsMjVdLFsiODI5ZiIsIlx1MzA0MSIsODJdLFsiODM0MCIsIlx1MzBhMSIsNjJdLFsiODM4MCIsIlx1MzBlMCIsMjJdLFsiODM5ZiIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyI4M2JmIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbIjg0NDAiLCJcdTA0MTAiLDUsIlx1MDQw'@; put 'MVx1MDQxNiIsMjVdLFsiODQ3MCIsIlx1MDQzMCIsNSwiXHUwNDUxXHUwNDM2Iiw3XSxbIjg0ODAiLCJcdTA0M2UiLDE3XSxbIjg0OWYiLCJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZc'@; put 'dTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDIiXSxbIjg3NDAiLCJcdTI0NjAiLDE5LCJcdTIxNjAiLDldLFsiODc1ZiIsIlx1MzM0OVx1MzMxNFx1'@; put 'MzMyMlx1MzM0ZFx1MzMxOFx1MzMyN1x1MzMwM1x1MzMzNlx1MzM1MVx1MzM1N1x1MzMwZFx1MzMyNlx1MzMyM1x1MzMyYlx1MzM0YVx1MzMzYlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzM4ZVx1MzM4Zlx1MzNjNFx1MzNhMSJdLFsiODc3ZSIsIlx1MzM3YiJdLFsiODc4MCIsIlx1MzAxZFx1MzAx'@; put 'Zlx1MjExNlx1MzNjZFx1MjEyMVx1MzJhNCIsNCwiXHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYxXHUyMjJiXHUyMjJlXHUyMjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhIl0sWyI4ODlmIiwiXHU0ZTljXHU1'@; put 'NTE2XHU1YTAzXHU5NjNmXHU1NGMwXHU2MTFiXHU2MzI4XHU1OWY2XHU5MDIyXHU4NDc1XHU4MzFjXHU3YTUwXHU2MGFhXHU2M2UxXHU2ZTI1XHU2NWVkXHU4NDY2XHU4MmE2XHU5YmY1XHU2ODkzXHU1NzI3XHU2NWExXHU2MjcxXHU1YjliXHU1OWQwXHU4NjdiXHU5OGY0XHU3ZDYyXHU3ZGJl'@; put 'XHU5YjhlXHU2MjE2XHU3YzlmXHU4OGI3XHU1Yjg5XHU1ZWI1XHU2MzA5XHU2Njk3XHU2ODQ4XHU5NWM3XHU5NzhkXHU2NzRmXHU0ZWU1XHU0ZjBhXHU0ZjRkXHU0ZjlkXHU1MDQ5XHU1NmYyXHU1OTM3XHU1OWQ0XHU1YTAxXHU1YzA5XHU2MGRmXHU2MTBmXHU2MTcwXHU2NjEzXHU2OTA1XHU3'@; put 'MGJhXHU3NTRmXHU3NTcwXHU3OWZiXHU3ZGFkXHU3ZGVmXHU4MGMzXHU4NDBlXHU4ODYzXHU4YjAyXHU5MDU1XHU5MDdhXHU1MzNiXHU0ZTk1XHU0ZWE1XHU1N2RmXHU4MGIyXHU5MGMxXHU3OGVmXHU0ZTAwXHU1OGYxXHU2ZWEyXHU5MDM4XHU3YTMyXHU4MzI4XHU4MjhiXHU5YzJmXHU1MTQx'@; put 'XHU1MzcwXHU1NGJkXHU1NGUxXHU1NmUwXHU1OWZiXHU1ZjE1XHU5OGYyXHU2ZGViXHU4MGU0XHU4NTJkIl0sWyI4OTQwIiwiXHU5NjYyXHU5NjcwXHU5NmEwXHU5N2ZiXHU1NDBiXHU1M2YzXHU1Yjg3XHU3MGNmXHU3ZmJkXHU4ZmMyXHU5NmU4XHU1MzZmXHU5ZDVjXHU3YWJhXHU0ZTExXHU3'@; put 'ODkzXHU4MWZjXHU2ZTI2XHU1NjE4XHU1NTA0XHU2YjFkXHU4NTFhXHU5YzNiXHU1OWU1XHU1M2E5XHU2ZDY2XHU3NGRjXHU5NThmXHU1NjQyXHU0ZTkxXHU5MDRiXHU5NmYyXHU4MzRmXHU5OTBjXHU1M2UxXHU1NWI2XHU1YjMwXHU1ZjcxXHU2NjIwXHU2NmYzXHU2ODA0XHU2YzM4XHU2Y2Yz'@; put 'XHU2ZDI5XHU3NDViXHU3NmM4XHU3YTRlXHU5ODM0XHU4MmYxXHU4ODViXHU4YTYwXHU5MmVkXHU2ZGIyXHU3NWFiXHU3NmNhXHU5OWM1XHU2MGE2XHU4YjAxXHU4ZDhhXHU5NWIyXHU2OThlXHU1M2FkXHU1MTg2Il0sWyI4OTgwIiwiXHU1NzEyXHU1ODMwXHU1OTQ0XHU1YmI0XHU1ZWY2XHU2'@; put 'MDI4XHU2M2E5XHU2M2Y0XHU2Y2JmXHU2ZjE0XHU3MDhlXHU3MTE0XHU3MTU5XHU3MWQ1XHU3MzNmXHU3ZTAxXHU4Mjc2XHU4MmQxXHU4NTk3XHU5MDYwXHU5MjViXHU5ZDFiXHU1ODY5XHU2NWJjXHU2YzVhXHU3NTI1XHU1MWY5XHU1OTJlXHU1OTY1XHU1ZjgwXHU1ZmRjXHU2MmJjXHU2NWZh'@; put 'XHU2YTJhXHU2YjI3XHU2YmI0XHU3MzhiXHU3ZmMxXHU4OTU2XHU5ZDJjXHU5ZDBlXHU5ZWM0XHU1Y2ExXHU2Yzk2XHU4MzdiXHU1MTA0XHU1YzRiXHU2MWI2XHU4MWM2XHU2ODc2XHU3MjYxXHU0ZTU5XHU0ZmZhXHU1Mzc4XHU2MDY5XHU2ZTI5XHU3YTRmXHU5N2YzXHU0ZTBiXHU1MzE2XHU0'@; put 'ZWVlXHU0ZjU1XHU0ZjNkXHU0ZmExXHU0ZjczXHU1MmEwXHU1M2VmXHU1NjA5XHU1OTBmXHU1YWMxXHU1YmI2XHU1YmUxXHU3OWQxXHU2Njg3XHU2NzljXHU2N2I2XHU2YjRjXHU2Y2IzXHU3MDZiXHU3M2MyXHU3OThkXHU3OWJlXHU3YTNjXHU3Yjg3XHU4MmIxXHU4MmRiXHU4MzA0XHU4Mzc3'@; put 'XHU4M2VmXHU4M2QzXHU4NzY2XHU4YWIyXHU1NjI5XHU4Y2E4XHU4ZmU2XHU5MDRlXHU5NzFlXHU4NjhhXHU0ZmM0XHU1Y2U4XHU2MjExXHU3MjU5XHU3NTNiXHU4MWU1XHU4MmJkXHU4NmZlXHU4Y2MwXHU5NmM1XHU5OTEzXHU5OWQ1XHU0ZWNiXHU0ZjFhXHU4OWUzXHU1NmRlXHU1ODRhXHU1'@; put 'OGNhXHU1ZWZiXHU1ZmViXHU2MDJhXHU2MDk0XHU2MDYyXHU2MWQwXHU2MjEyXHU2MmQwXHU2NTM5Il0sWyI4YTQwIiwiXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1XHU4MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1MmJlXHU1OTE2'@; put 'XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2OTgyXHU2ZGFmXHU3ODhkXHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1MjgzXHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNjXHU2ODM4XHU2'@; put 'YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlhXHU4OWQyXHU4ZDZiXHU4ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJiIl0sWyI4YTgwIiwiXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlk'@; put 'XHU2MDcwXHU2MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4NDViXHU4OTEwXHU4ZjQ0XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5MzhjXHU1NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxXHU3Y2E1XHU1MjA4XHU4'@; put 'MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQyXHU1MjBhXHU1MmQ4XHU1MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2MTYzXHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2OGZhXHU2YjNl'@; put 'XHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3NGIwXHU3NTE4XHU3NmUzXHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNjXHU4Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEyXHU5NjY1XHU5'@; put 'N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4XHU1ZGNjXHU3M2E5XHU3NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1NTljXHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1YzkwXHU1ZTBj'@; put 'XHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2NWUyXHU2NzFmXHU2OGNiXHU2OGM0Il0sWyI4YjQwIiwiXHU2YTVmXHU1ZTMwXHU2YmM1XHU2YzE3XHU2YzdkXHU3NTdmXHU3OTQ4XHU1YjYzXHU3YTAwXHU3ZDAwXHU1ZmJkXHU4OThmXHU4YTE4XHU4Y2I0XHU4ZDc3XHU4ZWNjXHU4'@; put 'ZjFkXHU5OGUyXHU5YTBlXHU5YjNjXHU0ZTgwXHU1MDdkXHU1MTAwXHU1OTkzXHU1YjljXHU2MjJmXHU2MjgwXHU2NGVjXHU2YjNhXHU3MmEwXHU3NTkxXHU3OTQ3XHU3ZmE5XHU4N2ZiXHU4YWJjXHU4YjcwXHU2M2FjXHU4M2NhXHU5N2EwXHU1NDA5XHU1NDAzXHU1NWFiXHU2ODU0XHU2YTU4'@; put 'XHU4YTcwXHU3ODI3XHU2Nzc1XHU5ZWNkXHU1Mzc0XHU1YmEyXHU4MTFhXHU4NjUwXHU5MDA2XHU0ZTE4XHU0ZTQ1XHU0ZWM3XHU0ZjExXHU1M2NhXHU1NDM4XHU1YmFlXHU1ZjEzXHU2MDI1XHU2NTUxIl0sWyI4YjgwIiwiXHU2NzNkXHU2YzQyXHU2YzcyXHU2Y2UzXHU3MDc4XHU3NDAzXHU3'@; put 'YTc2XHU3YWFlXHU3YjA4XHU3ZDFhXHU3Y2ZlXHU3ZDY2XHU2NWU3XHU3MjViXHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MmUwXHU2MzE5XHU2ZTIwXHU4NjVhXHU4YTMxXHU4ZGRkXHU5MmY4XHU2ZjAxXHU3OWE2XHU5YjVhXHU0ZWE4XHU0ZWFiXHU0ZWFjXHU0ZjliXHU0ZmEwXHU1MGQx'@; put 'XHU1MTQ3XHU3YWY2XHU1MTcxXHU1MWY2XHU1MzU0XHU1MzIxXHU1MzdmXHU1M2ViXHU1NWFjXHU1ODgzXHU1Y2UxXHU1ZjM3XHU1ZjRhXHU2MDJmXHU2MDUwXHU2MDZkXHU2MzFmXHU2NTU5XHU2YTRiXHU2Y2MxXHU3MmMyXHU3MmVkXHU3N2VmXHU4MGY4XHU4MTA1XHU4MjA4XHU4NTRlXHU5'@; put 'MGY3XHU5M2UxXHU5N2ZmXHU5OTU3XHU5YTVhXHU0ZWYwXHU1MWRkXHU1YzJkXHU2NjgxXHU2OTZkXHU1YzQwXHU2NmYyXHU2OTc1XHU3Mzg5XHU2ODUwXHU3YzgxXHU1MGM1XHU1MmU0XHU1NzQ3XHU1ZGZlXHU5MzI2XHU2NWE0XHU2YjIzXHU2YjNkXHU3NDM0XHU3OTgxXHU3OWJkXHU3YjRi'@; put 'XHU3ZGNhXHU4MmI5XHU4M2NjXHU4ODdmXHU4OTVmXHU4YjM5XHU4ZmQxXHU5MWQxXHU1NDFmXHU5MjgwXHU0ZTVkXHU1MDM2XHU1M2U1XHU1MzNhXHU3MmQ3XHU3Mzk2XHU3N2U5XHU4MmU2XHU4ZWFmXHU5OWM2XHU5OWM4XHU5OWQyXHU1MTc3XHU2MTFhXHU4NjVlXHU1NWIwXHU3YTdhXHU1'@; put 'MDc2XHU1YmQzXHU5MDQ3XHU5Njg1XHU0ZTMyXHU2YWRiXHU5MWU3XHU1YzUxXHU1YzQ4Il0sWyI4YzQwIiwiXHU2Mzk4XHU3YTlmXHU2YzkzXHU5Nzc0XHU4ZjYxXHU3YWFhXHU3MThhXHU5Njg4XHU3YzgyXHU2ODE3XHU3ZTcwXHU2ODUxXHU5MzZjXHU1MmYyXHU1NDFiXHU4NWFiXHU4YTEz'@; put 'XHU3ZmE0XHU4ZWNkXHU5MGUxXHU1MzY2XHU4ODg4XHU3OTQxXHU0ZmMyXHU1MGJlXHU1MjExXHU1MTQ0XHU1NTUzXHU1NzJkXHU3M2VhXHU1NzhiXHU1OTUxXHU1ZjYyXHU1Zjg0XHU2MDc1XHU2MTc2XHU2MTY3XHU2MWE5XHU2M2IyXHU2NDNhXHU2NTZjXHU2NjZmXHU2ODQyXHU2ZTEzXHU3'@; put 'NTY2XHU3YTNkXHU3Y2ZiXHU3ZDRjXHU3ZDk5XHU3ZTRiXHU3ZjZiXHU4MzBlXHU4MzRhXHU4NmNkXHU4YTA4XHU4YTYzXHU4YjY2XHU4ZWZkXHU5ODFhXHU5ZDhmXHU4MmI4XHU4ZmNlXHU5YmU4Il0sWyI4YzgwIiwiXHU1Mjg3XHU2MjFmXHU2NDgzXHU2ZmMwXHU5Njk5XHU2ODQxXHU1MDkx'@; put 'XHU2YjIwXHU2YzdhXHU2ZjU0XHU3YTc0XHU3ZDUwXHU4ODQwXHU4YTIzXHU2NzA4XHU0ZWY2XHU1MDM5XHU1MDI2XHU1MDY1XHU1MTdjXHU1MjM4XHU1MjYzXHU1NWE3XHU1NzBmXHU1ODA1XHU1YWNjXHU1ZWZhXHU2MWIyXHU2MWY4XHU2MmYzXHU2MzcyXHU2OTFjXHU2YTI5XHU3MjdkXHU3'@; put 'MmFjXHU3MzJlXHU3ODE0XHU3ODZmXHU3ZDc5XHU3NzBjXHU4MGE5XHU4OThiXHU4YjE5XHU4Y2UyXHU4ZWQyXHU5MDYzXHU5Mzc1XHU5NjdhXHU5ODU1XHU5YTEzXHU5ZTc4XHU1MTQzXHU1MzlmXHU1M2IzXHU1ZTdiXHU1ZjI2XHU2ZTFiXHU2ZTkwXHU3Mzg0XHU3M2ZlXHU3ZDQzXHU4MjM3'@; put 'XHU4YTAwXHU4YWZhXHU5NjUwXHU0ZTRlXHU1MDBiXHU1M2U0XHU1NDdjXHU1NmZhXHU1OWQxXHU1YjY0XHU1ZGYxXHU1ZWFiXHU1ZjI3XHU2MjM4XHU2NTQ1XHU2N2FmXHU2ZTU2XHU3MmQwXHU3Y2NhXHU4OGI0XHU4MGExXHU4MGUxXHU4M2YwXHU4NjRlXHU4YTg3XHU4ZGU4XHU5MjM3XHU5'@; put 'NmM3XHU5ODY3XHU5ZjEzXHU0ZTk0XHU0ZTkyXHU0ZjBkXHU1MzQ4XHU1NDQ5XHU1NDNlXHU1YTJmXHU1ZjhjXHU1ZmExXHU2MDlmXHU2OGE3XHU2YThlXHU3NDVhXHU3ODgxXHU4YTllXHU4YWE0XHU4Yjc3XHU5MTkwXHU0ZTVlXHU5YmM5XHU0ZWE0XHU0ZjdjXHU0ZmFmXHU1MDE5XHU1MDE2'@; put 'XHU1MTQ5XHU1MTZjXHU1MjlmXHU1MmI5XHU1MmZlXHU1MzlhXHU1M2UzXHU1NDExIl0sWyI4ZDQwIiwiXHU1NDBlXHU1NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlhXHU1ZWI3XHU1ZjE4XHU2MDUyXHU2'@; put 'MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNiXHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3ZDVlXHU3ZGIxXHU4MDE1XHU4MDAz'@; put 'XHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkIl0sWyI4ZDgwIiwiXHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjViXHU1MmFiXHU1M2Y3XHU1'@; put 'NDA4XHU1OGQ1XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2MGRhXHU5YWE4XHU3MmRiXHU4ZmJjXHU2YjY0XHU5ODAzXHU0ZWNhXHU1NmYw'@; put 'XHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAyXHU4YTUwXHU5Mzk2XHU4'@; put 'OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3ZDMwXHU4M2RjXHU4OGMx'@; put 'XHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRhXHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1XHU3YTg0XHU3YjU2XHU3'@; put 'ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3Il0sWyI4ZTQwIiwiXHU1YmRmXHU2MmY2XHU2NGFlXHU2NGU2XHU2NzJkXHU2YmJhXHU4NWE5XHU5NmQxXHU3NjkwXHU5YmQ2XHU2MzRjXHU5MzA2XHU5YmFiXHU3NmJmXHU2NjUyXHU0ZTA5XHU1MDk4XHU1M2My'@; put 'XHU1YzcxXHU2MGU4XHU2NDkyXHU2NTYzXHU2ODVmXHU3MWU2XHU3M2NhXHU3NTIzXHU3Yjk3XHU3ZTgyXHU4Njk1XHU4YjgzXHU4Y2RiXHU5MTc4XHU5OTEwXHU2NWFjXHU2NmFiXHU2YjhiXHU0ZWQ1XHU0ZWQ0XHU0ZjNhXHU0ZjdmXHU1MjNhXHU1M2Y4XHU1M2YyXHU1NWUzXHU1NmRiXHU1'@; put 'OGViXHU1OWNiXHU1OWM5XHU1OWZmXHU1YjUwXHU1YzRkXHU1ZTAyXHU1ZTJiXHU1ZmQ3XHU2MDFkXHU2MzA3XHU2NTJmXHU1YjVjXHU2NWFmXHU2NWJkXHU2NWU4XHU2NzlkXHU2YjYyIl0sWyI4ZTgwIiwiXHU2YjdiXHU2YzBmXHU3MzQ1XHU3OTQ5XHU3OWMxXHU3Y2Y4XHU3ZDE5XHU3ZDJi'@; put 'XHU4MGEyXHU4MTAyXHU4MWYzXHU4OTk2XHU4YTVlXHU4YTY5XHU4YTY2XHU4YThjXHU4YWVlXHU4Y2M3XHU4Y2RjXHU5NmNjXHU5OGZjXHU2YjZmXHU0ZThiXHU0ZjNjXHU0ZjhkXHU1MTUwXHU1YjU3XHU1YmZhXHU2MTQ4XHU2MzAxXHU2NjQyXHU2YjIxXHU2ZWNiXHU2Y2JiXHU3MjNlXHU3'@; put 'NGJkXHU3NWQ0XHU3OGMxXHU3OTNhXHU4MDBjXHU4MDMzXHU4MWVhXHU4NDk0XHU4ZjllXHU2YzUwXHU5ZTdmXHU1ZjBmXHU4YjU4XHU5ZDJiXHU3YWZhXHU4ZWY4XHU1YjhkXHU5NmViXHU0ZTAzXHU1M2YxXHU1N2Y3XHU1OTMxXHU1YWM5XHU1YmE0XHU2MDg5XHU2ZTdmXHU2ZjA2XHU3NWJl'@; put 'XHU4Y2VhXHU1YjlmXHU4NTAwXHU3YmUwXHU1MDcyXHU2N2Y0XHU4MjlkXHU1YzYxXHU4NTRhXHU3ZTFlXHU4MjBlXHU1MTk5XHU1YzA0XHU2MzY4XHU4ZDY2XHU2NTljXHU3MTZlXHU3OTNlXHU3ZDE3XHU4MDA1XHU4YjFkXHU4ZWNhXHU5MDZlXHU4NmM3XHU5MGFhXHU1MDFmXHU1MmZhXHU1'@; put 'YzNhXHU2NzUzXHU3MDdjXHU3MjM1XHU5MTRjXHU5MWM4XHU5MzJiXHU4MmU1XHU1YmMyXHU1ZjMxXHU2MGY5XHU0ZTNiXHU1M2Q2XHU1Yjg4XHU2MjRiXHU2NzMxXHU2YjhhXHU3MmU5XHU3M2UwXHU3YTJlXHU4MTZiXHU4ZGEzXHU5MTUyXHU5OTk2XHU1MTEyXHU1M2Q3XHU1NDZhXHU1YmZm'@; put 'XHU2Mzg4XHU2YTM5XHU3ZGFjXHU5NzAwXHU1NmRhXHU1M2NlXHU1NDY4Il0sWyI4ZjQwIiwiXHU1Yjk3XHU1YzMxXHU1ZGRlXHU0ZmVlXHU2MTAxXHU2MmZlXHU2ZDMyXHU3OWMwXHU3OWNiXHU3ZDQyXHU3ZTRkXHU3ZmQyXHU4MWVkXHU4MjFmXHU4NDkwXHU4ODQ2XHU4OTcyXHU4YjkwXHU4'@; put 'ZTc0XHU4ZjJmXHU5MDMxXHU5MTRiXHU5MTZjXHU5NmM2XHU5MTljXHU0ZWMwXHU0ZjRmXHU1MTQ1XHU1MzQxXHU1ZjkzXHU2MjBlXHU2N2Q0XHU2YzQxXHU2ZTBiXHU3MzYzXHU3ZTI2XHU5MWNkXHU5MjgzXHU1M2Q0XHU1OTE5XHU1YmJmXHU2ZGQxXHU3OTVkXHU3ZTJlXHU3YzliXHU1ODdl'@; put 'XHU3MTlmXHU1MWZhXHU4ODUzXHU4ZmYwXHU0ZmNhXHU1Y2ZiXHU2NjI1XHU3N2FjXHU3YWUzXHU4MjFjXHU5OWZmXHU1MWM2XHU1ZmFhXHU2NWVjXHU2OTZmXHU2Yjg5XHU2ZGYzIl0sWyI4ZjgwIiwiXHU2ZTk2XHU2ZjY0XHU3NmZlXHU3ZDE0XHU1ZGUxXHU5MDc1XHU5MTg3XHU5ODA2XHU1'@; put 'MWU2XHU1MjFkXHU2MjQwXHU2NjkxXHU2NmQ5XHU2ZTFhXHU1ZWI2XHU3ZGQyXHU3ZjcyXHU2NmY4XHU4NWFmXHU4NWY3XHU4YWY4XHU1MmE5XHU1M2Q5XHU1OTczXHU1ZThmXHU1ZjkwXHU2MDU1XHU5MmU0XHU5NjY0XHU1MGI3XHU1MTFmXHU1MmRkXHU1MzIwXHU1MzQ3XHU1M2VjXHU1NGU4'@; put 'XHU1NTQ2XHU1NTMxXHU1NjE3XHU1OTY4XHU1OWJlXHU1YTNjXHU1YmI1XHU1YzA2XHU1YzBmXHU1YzExXHU1YzFhXHU1ZTg0XHU1ZThhXHU1ZWUwXHU1ZjcwXHU2MjdmXHU2Mjg0XHU2MmRiXHU2MzhjXHU2Mzc3XHU2NjA3XHU2NjBjXHU2NjJkXHU2Njc2XHU2NzdlXHU2OGEyXHU2YTFmXHU2'@; put 'YTM1XHU2Y2JjXHU2ZDg4XHU2ZTA5XHU2ZTU4XHU3MTNjXHU3MTI2XHU3MTY3XHU3NWM3XHU3NzAxXHU3ODVkXHU3OTAxXHU3OTY1XHU3OWYwXHU3YWUwXHU3YjExXHU3Y2E3XHU3ZDM5XHU4MDk2XHU4M2Q2XHU4NDhiXHU4NTQ5XHU4ODVkXHU4OGYzXHU4YTFmXHU4YTNjXHU4YTU0XHU4YTcz'@; put 'XHU4YzYxXHU4Y2RlXHU5MWE0XHU5MjY2XHU5MzdlXHU5NDE4XHU5NjljXHU5Nzk4XHU0ZTBhXHU0ZTA4XHU0ZTFlXHU0ZTU3XHU1MTk3XHU1MjcwXHU1N2NlXHU1ODM0XHU1OGNjXHU1YjIyXHU1ZTM4XHU2MGM1XHU2NGZlXHU2NzYxXHU2NzU2XHU2ZDQ0XHU3MmI2XHU3NTczXHU3YTYzXHU4'@; put 'NGI4XHU4YjcyXHU5MWI4XHU5MzIwXHU1NjMxXHU1N2Y0XHU5OGZlIl0sWyI5MDQwIiwiXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4OWU2XHU5OGRmXHU4NzU1XHU4ZmIxXHU1YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1YmRkXHU1YmU5'@; put 'XHU1ZmMzXHU2MTRlXHU2MzJmXHU2NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUzXHU4MmFmXHU4NWFhXHU4OWFhXHU4YTNhXHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJhXHU0ZWMxXHU1'@; put 'MjAzXHU1ODc1XHU1OGVjXHU1YzBiXHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1M2E4Il0sWyI5MDgwIiwiXHU5MDE3XHU1NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3Yzhi'@; put 'XHU3ZmUwXHU4ODcwXHU5MDQyXHU5MTU0XHU5MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5XHU2OTE5XHU4M2M1XHU5ODE3XHU5NmMwXHU4OGZlXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2XHU3MDJjXHU3'@; put 'NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUyXHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3MjcyXHU3NTFmXHU3NmRiXHU3Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4YTkzXHU4YWNi'@; put 'XHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRkXHU3ZTNlXHU4MTBhXHU4Y2FjXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5XHU2M2E1XHU2'@; put 'NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMwXHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1ZGRkXHU2MjI2XHU2MjQ3XHU2NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2N2QzXHU2ZjVj'@; put 'XHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3YmFkXHU3ZGRhIl0sWyI5MTQwIiwiXHU3ZTRhXHU3ZmE4XHU4MTdhXHU4MjFiXHU4MjM5XHU4NWE2XHU4YTZlXHU4Y2NlXHU4ZGY1XHU5MDc4XHU5MDc3XHU5MmFkXHU5MjkxXHU5NTgzXHU5YmFlXHU1MjRkXHU1NTg0XHU2ZjM4XHU3MTM2XHU1'@; put 'MTY4XHU3OTg1XHU3ZTU1XHU4MWIzXHU3Y2NlXHU1NjRjXHU1ODUxXHU1Y2E4XHU2M2FhXHU2NmZlXHU2NmZkXHU2OTVhXHU3MmQ5XHU3NThmXHU3NThlXHU3OTBlXHU3OTU2XHU3OWRmXHU3Yzk3XHU3ZDIwXHU3ZDQ0XHU4NjA3XHU4YTM0XHU5NjNiXHU5MDYxXHU5ZjIwXHU1MGU3XHU1Mjc1'@; put 'XHU1M2NjXHU1M2UyXHU1MDA5XHU1NWFhXHU1OGVlXHU1OTRmXHU3MjNkXHU1YjhiXHU1YzY0XHU1MzFkXHU2MGUzXHU2MGYzXHU2MzVjXHU2MzgzXHU2MzNmXHU2M2JiIl0sWyI5MTgwIiwiXHU2NGNkXHU2NWU5XHU2NmY5XHU1ZGUzXHU2OWNkXHU2OWZkXHU2ZjE1XHU3MWU1XHU0ZTg5XHU3'@; put 'NWU5XHU3NmY4XHU3YTkzXHU3Y2RmXHU3ZGNmXHU3ZDljXHU4MDYxXHU4MzQ5XHU4MzU4XHU4NDZjXHU4NGJjXHU4NWZiXHU4OGM1XHU4ZDcwXHU5MDAxXHU5MDZkXHU5Mzk3XHU5NzFjXHU5YTEyXHU1MGNmXHU1ODk3XHU2MThlXHU4MWQzXHU4NTM1XHU4ZDA4XHU5MDIwXHU0ZmMzXHU1MDc0'@; put 'XHU1MjQ3XHU1MzczXHU2MDZmXHU2MzQ5XHU2NzVmXHU2ZTJjXHU4ZGIzXHU5MDFmXHU0ZmQ3XHU1YzVlXHU4Y2NhXHU2NWNmXHU3ZDlhXHU1MzUyXHU4ODk2XHU1MTc2XHU2M2MzXHU1YjU4XHU1YjZiXHU1YzBhXHU2NDBkXHU2NzUxXHU5MDVjXHU0ZWQ2XHU1OTFhXHU1OTJhXHU2YzcwXHU4'@; put 'YTUxXHU1NTNlXHU1ODE1XHU1OWE1XHU2MGYwXHU2MjUzXHU2N2MxXHU4MjM1XHU2OTU1XHU5NjQwXHU5OWM0XHU5YTI4XHU0ZjUzXHU1ODA2XHU1YmZlXHU4MDEwXHU1Y2IxXHU1ZTJmXHU1Zjg1XHU2MDIwXHU2MTRiXHU2MjM0XHU2NmZmXHU2Y2YwXHU2ZWRlXHU4MGNlXHU4MTdmXHU4MmQ0'@; put 'XHU4ODhiXHU4Y2I4XHU5MDAwXHU5MDJlXHU5NjhhXHU5ZWRiXHU5YmRiXHU0ZWUzXHU1M2YwXHU1OTI3XHU3YjJjXHU5MThkXHU5ODRjXHU5ZGY5XHU2ZWRkXHU3MDI3XHU1MzUzXHU1NTQ0XHU1Yjg1XHU2MjU4XHU2MjllXHU2MmQzXHU2Y2EyXHU2ZmVmXHU3NDIyXHU4YTE3XHU5NDM4XHU2'@; put 'ZmMxXHU4YWZlXHU4MzM4XHU1MWU3XHU4NmY4XHU1M2VhIl0sWyI5MjQwIiwiXHU1M2U5XHU0ZjQ2XHU5MDU0XHU4ZmIwXHU1OTZhXHU4MTMxXHU1ZGZkXHU3YWVhXHU4ZmJmXHU2OGRhXHU4YzM3XHU3MmY4XHU5YzQ4XHU2YTNkXHU4YWIwXHU0ZTM5XHU1MzU4XHU1NjA2XHU1NzY2XHU2MmM1'@; put 'XHU2M2EyXHU2NWU2XHU2YjRlXHU2ZGUxXHU2ZTViXHU3MGFkXHU3N2VkXHU3YWVmXHU3YmFhXHU3ZGJiXHU4MDNkXHU4MGM2XHU4NmNiXHU4YTk1XHU5MzViXHU1NmUzXHU1OGM3XHU1ZjNlXHU2NWFkXHU2Njk2XHU2YTgwXHU2YmI1XHU3NTM3XHU4YWM3XHU1MDI0XHU3N2U1XHU1NzMwXHU1'@; put 'ZjFiXHU2MDY1XHU2NjdhXHU2YzYwXHU3NWY0XHU3YTFhXHU3ZjZlXHU4MWY0XHU4NzE4XHU5MDQ1XHU5OWIzXHU3YmM5XHU3NTVjXHU3YWY5XHU3YjUxXHU4NGM0Il0sWyI5MjgwIiwiXHU5MDEwXHU3OWU5XHU3YTkyXHU4MzM2XHU1YWUxXHU3NzQwXHU0ZTJkXHU0ZWYyXHU1Yjk5XHU1ZmUw'@; put 'XHU2MmJkXHU2NjNjXHU2N2YxXHU2Y2U4XHU4NjZiXHU4ODc3XHU4YTNiXHU5MTRlXHU5MmYzXHU5OWQwXHU2YTE3XHU3MDI2XHU3MzJhXHU4MmU3XHU4NDU3XHU4Y2FmXHU0ZTAxXHU1MTQ2XHU1MWNiXHU1NThiXHU1YmY1XHU1ZTE2XHU1ZTMzXHU1ZTgxXHU1ZjE0XHU1ZjM1XHU1ZjZiXHU1'@; put 'ZmI0XHU2MWYyXHU2MzExXHU2NmEyXHU2NzFkXHU2ZjZlXHU3MjUyXHU3NTNhXHU3NzNhXHU4MDc0XHU4MTM5XHU4MTc4XHU4Nzc2XHU4YWJmXHU4YWRjXHU4ZDg1XHU4ZGYzXHU5MjlhXHU5NTc3XHU5ODAyXHU5Y2U1XHU1MmM1XHU2MzU3XHU3NmY0XHU2NzE1XHU2Yzg4XHU3M2NkXHU4Y2Mz'@; put 'XHU5M2FlXHU5NjczXHU2ZDI1XHU1ODljXHU2OTBlXHU2OWNjXHU4ZmZkXHU5MzlhXHU3NWRiXHU5MDFhXHU1ODVhXHU2ODAyXHU2M2I0XHU2OWZiXHU0ZjQzXHU2ZjJjXHU2N2Q4XHU4ZmJiXHU4NTI2XHU3ZGI0XHU5MzU0XHU2OTNmXHU2ZjcwXHU1NzZhXHU1OGY3XHU1YjJjXHU3ZDJjXHU3'@; put 'MjJhXHU1NDBhXHU5MWUzXHU5ZGI0XHU0ZWFkXHU0ZjRlXHU1MDVjXHU1MDc1XHU1MjQzXHU4YzllXHU1NDQ4XHU1ODI0XHU1YjlhXHU1ZTFkXHU1ZTk1XHU1ZWFkXHU1ZWY3XHU1ZjFmXHU2MDhjXHU2MmI1XHU2MzNhXHU2M2QwXHU2OGFmXHU2YzQwXHU3ODg3XHU3OThlXHU3YTBiXHU3ZGUw'@; put 'XHU4MjQ3XHU4YTAyXHU4YWU2XHU4ZTQ0XHU5MDEzIl0sWyI5MzQwIiwiXHU5MGI4XHU5MTJkXHU5MWQ4XHU5ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2QxXHU2ZWJhXHU1NGYyXHU1ZmI5XHU2NGE0XHU4ZjRkXHU4ZmVkXHU5MjQ0XHU1'@; put 'MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4Y2JjXHU4ZWUyXHU5ODViXHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1ODU3XHU1OWFjXHU1YzYwXHU1ZjkyXHU2NTk3XHU2NzVjXHU2ZTIxXHU3Njdi'@; put 'XHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFhXHU1ZWE2XHU1NzFmXHU1OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjIl0sWyI5MzgwIiwiXHU1MWNkXHU1MjAwXHU1NTEwXHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2'@; put 'Mjk1XHU2NDJkXHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2ZDliXHU3MDZmXHU3MWM4XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1MjMwXHU4NDYzXHU4NTY5XHU4NWU0XHU4YTBlXHU4YjA0XHU4YzQ2XHU4ZTBm'@; put 'XHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1XHU1NDBjXHU1ODAyXHU1YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUzXHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNmXHU1Zjk3XHU1ZmIzXHU2ZDljXHU3'@; put 'Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1MWY4XHU3YTgxXHU2OTM0XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5MDQxXHU5ODEzXHU1NDUxXHU2NmM3'@; put 'XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4XHU2MzdhXHU5MzRiXHU2OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVkXHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5XHU1MzAyXHU4Y2QxXHU4MDg5XHU4'@; put 'Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1Il0sWyI5NDQwIiwiXHU1OTgyXHU1YzNmXHU5N2VlXHU0ZWZiXHU1OThhXHU1ZmNkXHU4YThkXHU2ZmUxXHU3OWIwXHU3OTYyXHU1YmU3XHU4NDcxXHU3MzJiXHU3MWIxXHU1ZTc0XHU1ZmY1XHU2MzdiXHU2NDlhXHU3MWMzXHU3Yzk4XHU0ZTQz'@; put 'XHU1ZWZjXHU0ZTRiXHU1N2RjXHU1NmEyXHU2MGE5XHU2ZmMzXHU3ZDBkXHU4MGZkXHU4MTMzXHU4MWJmXHU4ZmIyXHU4OTk3XHU4NmE0XHU1ZGY0XHU2MjhhXHU2NGFkXHU4OTg3XHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3NDM2XHU3ODM0XHU1YTQ2XHU3Zjc1XHU4MmFkXHU5OWFjXHU0ZmYzXHU1'@; put 'ZWMzXHU2MmRkXHU2MzkyXHU2NTU3XHU2NzZmXHU3NmMzXHU3MjRjXHU4MGNjXHU4MGJhXHU4ZjI5XHU5MTRkXHU1MDBkXHU1N2Y5XHU1YTkyXHU2ODg1Il0sWyI5NDgwIiwiXHU2OTczXHU3MTY0XHU3MmZkXHU4Y2I3XHU1OGYyXHU4Y2UwXHU5NjZhXHU5MDE5XHU4NzdmXHU3OWU0XHU3N2U3'@; put 'XHU4NDI5XHU0ZjJmXHU1MjY1XHU1MzVhXHU2MmNkXHU2N2NmXHU2Y2NhXHU3NjdkXHU3Yjk0XHU3Yzk1XHU4MjM2XHU4NTg0XHU4ZmViXHU2NmRkXHU2ZjIwXHU3MjA2XHU3ZTFiXHU4M2FiXHU5OWMxXHU5ZWE2XHU1MWZkXHU3YmIxXHU3ODcyXHU3YmI4XHU4MDg3XHU3YjQ4XHU2YWU4XHU1'@; put 'ZTYxXHU4MDhjXHU3NTUxXHU3NTYwXHU1MTZiXHU5MjYyXHU2ZThjXHU3NjdhXHU5MTk3XHU5YWVhXHU0ZjEwXHU3ZjcwXHU2MjljXHU3YjRmXHU5NWE1XHU5Y2U5XHU1NjdhXHU1ODU5XHU4NmU0XHU5NmJjXHU0ZjM0XHU1MjI0XHU1MzRhXHU1M2NkXHU1M2RiXHU1ZTA2XHU2NDJjXHU2NTkx'@; put 'XHU2NzdmXHU2YzNlXHU2YzRlXHU3MjQ4XHU3MmFmXHU3M2VkXHU3NTU0XHU3ZTQxXHU4MjJjXHU4NWU5XHU4Y2E5XHU3YmM0XHU5MWM2XHU3MTY5XHU5ODEyXHU5OGVmXHU2MzNkXHU2NjY5XHU3NTZhXHU3NmU0XHU3OGQwXHU4NTQzXHU4NmVlXHU1MzJhXHU1MzUxXHU1NDI2XHU1OTgzXHU1'@; put 'ZTg3XHU1ZjdjXHU2MGIyXHU2MjQ5XHU2Mjc5XHU2MmFiXHU2NTkwXHU2YmQ0XHU2Y2NjXHU3NWIyXHU3NmFlXHU3ODkxXHU3OWQ4XHU3ZGNiXHU3Zjc3XHU4MGE1XHU4OGFiXHU4YWI5XHU4Y2JiXHU5MDdmXHU5NzVlXHU5OGRiXHU2YTBiXHU3YzM4XHU1MDk5XHU1YzNlXHU1ZmFlXHU2Nzg3'@; put 'XHU2YmQ4XHU3NDM1XHU3NzA5XHU3ZjhlIl0sWyI5NTQwIiwiXHU5ZjNiXHU2N2NhXHU3YTE3XHU1MzM5XHU3NThiXHU5YWVkXHU1ZjY2XHU4MTlkXHU4M2YxXHU4MDk4XHU1ZjNjXHU1ZmM1XHU3NTYyXHU3YjQ2XHU5MDNjXHU2ODY3XHU1OWViXHU1YTliXHU3ZDEwXHU3NjdlXHU4YjJjXHU0'@; put 'ZmY1XHU1ZjZhXHU2YTE5XHU2YzM3XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4YTU1XHU4Yzc5XHU1ZWRmXHU2M2NmXHU3NWM1XHU3OWQyXHU4MmQ3XHU5MzI4XHU5MmYyXHU4NDljXHU4NmVkXHU5YzJkXHU1NGMxXHU1ZjZjXHU2NThjXHU2ZDVjXHU3MDE1XHU4Y2E3XHU4Y2QzXHU5ODNi'@; put 'XHU2NTRmXHU3NGY2XHU0ZTBkXHU0ZWQ4XHU1N2UwXHU1OTJiXHU1YTY2XHU1YmNjXHU1MWE4XHU1ZTAzXHU1ZTljXHU2MDE2XHU2Mjc2XHU2NTc3Il0sWyI5NTgwIiwiXHU2NWE3XHU2NjZlXHU2ZDZlXHU3MjM2XHU3YjI2XHU4MTUwXHU4MTlhXHU4Mjk5XHU4YjVjXHU4Y2EwXHU4Y2U2XHU4'@; put 'ZDc0XHU5NjFjXHU5NjQ0XHU0ZmFlXHU2NGFiXHU2YjY2XHU4MjFlXHU4NDYxXHU4NTZhXHU5MGU4XHU1YzAxXHU2OTUzXHU5OGE4XHU4NDdhXHU4NTU3XHU0ZjBmXHU1MjZmXHU1ZmE5XHU1ZTQ1XHU2NzBkXHU3OThmXHU4MTc5XHU4OTA3XHU4OTg2XHU2ZGY1XHU1ZjE3XHU2MjU1XHU2Y2I4'@; put 'XHU0ZWNmXHU3MjY5XHU5YjkyXHU1MjA2XHU1NDNiXHU1Njc0XHU1OGIzXHU2MWE0XHU2MjZlXHU3MTFhXHU1OTZlXHU3Yzg5XHU3Y2RlXHU3ZDFiXHU5NmYwXHU2NTg3XHU4MDVlXHU0ZTE5XHU0Zjc1XHU1MTc1XHU1ODQwXHU1ZTYzXHU1ZTczXHU1ZjBhXHU2N2M0XHU0ZTI2XHU4NTNkXHU5'@; put 'NTg5XHU5NjViXHU3YzczXHU5ODAxXHU1MGZiXHU1OGMxXHU3NjU2XHU3OGE3XHU1MjI1XHU3N2E1XHU4NTExXHU3Yjg2XHU1MDRmXHU1OTA5XHU3MjQ3XHU3YmM3XHU3ZGU4XHU4ZmJhXHU4ZmQ0XHU5MDRkXHU0ZmJmXHU1MmM5XHU1YTI5XHU1ZjAxXHU5N2FkXHU0ZmRkXHU4MjE3XHU5MmVh'@; put 'XHU1NzAzXHU2MzU1XHU2YjY5XHU3NTJiXHU4OGRjXHU4ZjE0XHU3YTQyXHU1MmRmXHU1ODkzXHU2MTU1XHU2MjBhXHU2NmFlXHU2YmNkXHU3YzNmXHU4M2U5XHU1MDIzXHU0ZmY4XHU1MzA1XHU1NDQ2XHU1ODMxXHU1OTQ5XHU1YjlkXHU1Y2YwXHU1Y2VmXHU1ZDI5XHU1ZTk2XHU2MmIxXHU2'@; put 'MzY3XHU2NTNlXHU2NWI5XHU2NzBiIl0sWyI5NjQwIiwiXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1MDhkXHU1MjU2'@; put 'XHU1NzRhXHU1OWE4XHU1ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAwXHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIwXHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIyXHU2NzM0XHU3'@; put 'MjY3XHU3NzY2XHU3YTQ2XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2Il0sWyI5NjgwIiwiXHU2NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1'@; put 'XHU4MTljXHU2Nzk1XHU5YmFhXHU2N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJmXHU0ZTA3XHU2MTYyXHU2ZTgwXHU2ZjJiXHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1XHU1Y2FjXHU1'@; put 'YmM2XHU4NzFjXHU2ZTRhXHU4NGQxXHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5Mjk4XHU5Y2Y0'@; put 'XHU1OWVhXHU3MjVkXHU2ZWM1XHU1MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFiXHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZmXHU5OTA1XHU1'@; put 'YzI0XHU2MjNiXHU3YzdlXHU4Y2IwXHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5NDUzXHU2MTA5'@; put 'XHU2MTA4XHU2Y2I5XHU3NjUyIl0sWyI5NzQwIiwiXHU4YWVkXHU4ZjM4XHU1NTJmXHU0ZjUxXHU1MTJhXHU1MmM3XHU1M2NiXHU1YmE1XHU1ZTdkXHU2MGEwXHU2MTgyXHU2M2Q2XHU2NzA5XHU2N2RhXHU2ZTY3XHU2ZDhjXHU3MzM2XHU3MzM3XHU3NTMxXHU3OTUwXHU4OGQ1XHU4YTk4XHU5'@; put 'MDRhXHU5MDkxXHU5MGY1XHU5NmM0XHU4NzhkXHU1OTE1XHU0ZTg4XHU0ZjU5XHU0ZTBlXHU4YTg5XHU4ZjNmXHU5ODEwXHU1MGFkXHU1ZTdjXHU1OTk2XHU1YmI5XHU1ZWI4XHU2M2RhXHU2M2ZhXHU2NGMxXHU2NmRjXHU2OTRhXHU2OWQ4XHU2ZDBiXHU2ZWI2XHU3MTk0XHU3NTI4XHU3YWFm'@; put 'XHU3ZjhhXHU4MDAwXHU4NDQ5XHU4NGM5XHU4OTgxXHU4YjIxXHU4ZTBhXHU5MDY1XHU5NjdkXHU5OTBhXHU2MTdlXHU2MjkxXHU2YjMyIl0sWyI5NzgwIiwiXHU2YzgzXHU2ZDc0XHU3ZmNjXHU3ZmZjXHU2ZGMwXHU3Zjg1XHU4N2JhXHU4OGY4XHU2NzY1XHU4M2IxXHU5ODNjXHU5NmY3XHU2'@; put 'ZDFiXHU3ZDYxXHU4NDNkXHU5MTZhXHU0ZTcxXHU1Mzc1XHU1ZDUwXHU2YjA0XHU2ZmViXHU4NWNkXHU4NjJkXHU4OWE3XHU1MjI5XHU1NDBmXHU1YzY1XHU2NzRlXHU2OGE4XHU3NDA2XHU3NDgzXHU3NWUyXHU4OGNmXHU4OGUxXHU5MWNjXHU5NmUyXHU5Njc4XHU1ZjhiXHU3Mzg3XHU3YWNi'@; put 'XHU4NDRlXHU2M2EwXHU3NTY1XHU1Mjg5XHU2ZDQxXHU2ZTljXHU3NDA5XHU3NTU5XHU3ODZiXHU3YzkyXHU5Njg2XHU3YWRjXHU5ZjhkXHU0ZmI2XHU2MTZlXHU2NWM1XHU4NjVjXHU0ZTg2XHU0ZWFlXHU1MGRhXHU0ZTIxXHU1MWNjXHU1YmVlXHU2NTk5XHU2ODgxXHU2ZGJjXHU3MzFmXHU3'@; put 'NjQyXHU3N2FkXHU3YTFjXHU3Y2U3XHU4MjZmXHU4YWQyXHU5MDdjXHU5MWNmXHU5Njc1XHU5ODE4XHU1MjliXHU3ZGQxXHU1MDJiXHU1Mzk4XHU2Nzk3XHU2ZGNiXHU3MWQwXHU3NDMzXHU4MWU4XHU4ZjJhXHU5NmEzXHU5YzU3XHU5ZTlmXHU3NDYwXHU1ODQxXHU2ZDk5XHU3ZDJmXHU5ODVl'@; put 'XHU0ZWU0XHU0ZjM2XHU0ZjhiXHU1MWI3XHU1MmIxXHU1ZGJhXHU2MDFjXHU3M2IyXHU3OTNjXHU4MmQzXHU5MjM0XHU5NmI3XHU5NmY2XHU5NzBhXHU5ZTk3XHU5ZjYyXHU2NmE2XHU2Yjc0XHU1MjE3XHU1MmEzXHU3MGM4XHU4OGMyXHU1ZWM5XHU2MDRiXHU2MTkwXHU2ZjIzXHU3MTQ5XHU3'@; put 'YzNlXHU3ZGY0XHU4MDZmIl0sWyI5ODQwIiwiXHU4NGVlXHU5MDIzXHU5MzJjXHU1NDQyXHU5YjZmXHU2YWQzXHU3MDg5XHU4Y2MyXHU4ZGVmXHU5NzMyXHU1MmI0XHU1YTQxXHU1ZWNhXHU1ZjA0XHU2NzE3XHU2OTdjXHU2OTk0XHU2ZDZhXHU2ZjBmXHU3MjYyXHU3MmZjXHU3YmVkXHU4MDAx'@; put 'XHU4MDdlXHU4NzRiXHU5MGNlXHU1MTZkXHU5ZTkzXHU3OTg0XHU4MDhiXHU5MzMyXHU4YWQ2XHU1MDJkXHU1NDhjXHU4YTcxXHU2YjZhXHU4Y2M0XHU4MTA3XHU2MGQxXHU2N2EwXHU5ZGYyXHU0ZTk5XHU0ZTk4XHU5YzEwXHU4YTZiXHU4NWMxXHU4NTY4XHU2OTAwXHU2ZTdlXHU3ODk3XHU4'@; put 'MTU1Il0sWyI5ODlmIiwiXHU1ZjBjXHU0ZTEwXHU0ZTE1XHU0ZTJhXHU0ZTMxXHU0ZTM2XHU0ZTNjXHU0ZTNmXHU0ZTQyXHU0ZTU2XHU0ZTU4XHU0ZTgyXHU0ZTg1XHU4YzZiXHU0ZThhXHU4MjEyXHU1ZjBkXHU0ZThlXHU0ZTllXHU0ZTlmXHU0ZWEwXHU0ZWEyXHU0ZWIwXHU0ZWIzXHU0ZWI2'@; put 'XHU0ZWNlXHU0ZWNkXHU0ZWM0XHU0ZWM2XHU0ZWMyXHU0ZWQ3XHU0ZWRlXHU0ZWVkXHU0ZWRmXHU0ZWY3XHU0ZjA5XHU0ZjVhXHU0ZjMwXHU0ZjViXHU0ZjVkXHU0ZjU3XHU0ZjQ3XHU0Zjc2XHU0Zjg4XHU0ZjhmXHU0Zjk4XHU0ZjdiXHU0ZjY5XHU0ZjcwXHU0ZjkxXHU0ZjZmXHU0Zjg2XHU0'@; put 'Zjk2XHU1MTE4XHU0ZmQ0XHU0ZmRmXHU0ZmNlXHU0ZmQ4XHU0ZmRiXHU0ZmQxXHU0ZmRhXHU0ZmQwXHU0ZmU0XHU0ZmU1XHU1MDFhXHU1MDI4XHU1MDE0XHU1MDJhXHU1MDI1XHU1MDA1XHU0ZjFjXHU0ZmY2XHU1MDIxXHU1MDI5XHU1MDJjXHU0ZmZlXHU0ZmVmXHU1MDExXHU1MDA2XHU1MDQz'@; put 'XHU1MDQ3XHU2NzAzXHU1MDU1XHU1MDUwXHU1MDQ4XHU1MDVhXHU1MDU2XHU1MDZjXHU1MDc4XHU1MDgwXHU1MDlhXHU1MDg1XHU1MGI0XHU1MGIyIl0sWyI5OTQwIiwiXHU1MGM5XHU1MGNhXHU1MGIzXHU1MGMyXHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVlXHU1MGY5XHU1'@; put 'MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1MTE2XHU1MTE1XHU1MTE0XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3YWY4XHU1MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1MThjXHU1MTg5'@; put 'XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1XHU1MTk2XHU1MWE0XHU1MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5XHU1MWRiXHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkIl0sWyI5OTgwIiwiXHU1MWYwXHU1'@; put 'MWY1XHU1MWZlXHU1MjA0XHU1MjBiXHU1MjE0XHU1MjBlXHU1MjI3XHU1MjJhXHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4'@; put 'XHU1MjkxXHU4ZmE4XHU4ZmE3XHU1MmFjXHU1MmFkXHU1MmJjXHU1MmI1XHU1MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1XHU1MzFhXHU1'@; put 'MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1MzQwXHU1MzQ2XHU1MzQ1XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1M2MzXHU3YzEy'@; put 'XHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2VlXHU1M2U4XHU1M2VkXHU1M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhmXHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcwXHU1NDkyXHU1'@; put 'NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1NDg2XHU1NGM3XHU1NGEyXHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4Il0sWyI5YTQwIiwiXHU1NGFiXHU1NGMyXHU1NGE0XHU1NGJlXHU1NGJjXHU1NGQ4XHU1NGU1XHU1NGU2XHU1NTBmXHU1NTE0XHU1NGZkXHU1NGVl'@; put 'XHU1NGVkXHU1NGZhXHU1NGUyXHU1NTM5XHU1NTQwXHU1NTYzXHU1NTRjXHU1NTJlXHU1NTVjXHU1NTQ1XHU1NTU2XHU1NTU3XHU1NTM4XHU1NTMzXHU1NTVkXHU1NTk5XHU1NTgwXHU1NGFmXHU1NThhXHU1NTlmXHU1NTdiXHU1NTdlXHU1NTk4XHU1NTllXHU1NWFlXHU1NTdjXHU1NTgzXHU1'@; put 'NWE5XHU1NTg3XHU1NWE4XHU1NWRhXHU1NWM1XHU1NWRmXHU1NWM0XHU1NWRjXHU1NWU0XHU1NWQ0XHU1NjE0XHU1NWY3XHU1NjE2XHU1NWZlXHU1NWZkXHU1NjFiXHU1NWY5XHU1NjRlXHU1NjUwXHU3MWRmXHU1NjM0XHU1NjM2XHU1NjMyXHU1NjM4Il0sWyI5YTgwIiwiXHU1NjZiXHU1NjY0'@; put 'XHU1NjJmXHU1NjZjXHU1NjZhXHU1Njg2XHU1NjgwXHU1NjhhXHU1NmEwXHU1Njk0XHU1NjhmXHU1NmE1XHU1NmFlXHU1NmI2XHU1NmI0XHU1NmMyXHU1NmJjXHU1NmMxXHU1NmMzXHU1NmMwXHU1NmM4XHU1NmNlXHU1NmQxXHU1NmQzXHU1NmQ3XHU1NmVlXHU1NmY5XHU1NzAwXHU1NmZmXHU1'@; put 'NzA0XHU1NzA5XHU1NzA4XHU1NzBiXHU1NzBkXHU1NzEzXHU1NzE4XHU1NzE2XHU1NWM3XHU1NzFjXHU1NzI2XHU1NzM3XHU1NzM4XHU1NzRlXHU1NzNiXHU1NzQwXHU1NzRmXHU1NzY5XHU1N2MwXHU1Nzg4XHU1NzYxXHU1NzdmXHU1Nzg5XHU1NzkzXHU1N2EwXHU1N2IzXHU1N2E0XHU1N2Fh'@; put 'XHU1N2IwXHU1N2MzXHU1N2M2XHU1N2Q0XHU1N2QyXHU1N2QzXHU1ODBhXHU1N2Q2XHU1N2UzXHU1ODBiXHU1ODE5XHU1ODFkXHU1ODcyXHU1ODIxXHU1ODYyXHU1ODRiXHU1ODcwXHU2YmMwXHU1ODUyXHU1ODNkXHU1ODc5XHU1ODg1XHU1OGI5XHU1ODlmXHU1OGFiXHU1OGJhXHU1OGRlXHU1'@; put 'OGJiXHU1OGI4XHU1OGFlXHU1OGM1XHU1OGQzXHU1OGQxXHU1OGQ3XHU1OGQ5XHU1OGQ4XHU1OGU1XHU1OGRjXHU1OGU0XHU1OGRmXHU1OGVmXHU1OGZhXHU1OGY5XHU1OGZiXHU1OGZjXHU1OGZkXHU1OTAyXHU1OTBhXHU1OTEwXHU1OTFiXHU2OGE2XHU1OTI1XHU1OTJjXHU1OTJkXHU1OTMy'@; put 'XHU1OTM4XHU1OTNlXHU3YWQyXHU1OTU1XHU1OTUwXHU1OTRlXHU1OTVhXHU1OTU4XHU1OTYyXHU1OTYwXHU1OTY3XHU1OTZjXHU1OTY5Il0sWyI5YjQwIiwiXHU1OTc4XHU1OTgxXHU1OTlkXHU0ZjVlXHU0ZmFiXHU1OWEzXHU1OWIyXHU1OWM2XHU1OWU4XHU1OWRjXHU1OThkXHU1OWQ5XHU1'@; put 'OWRhXHU1YTI1XHU1YTFmXHU1YTExXHU1YTFjXHU1YTA5XHU1YTFhXHU1YTQwXHU1YTZjXHU1YTQ5XHU1YTM1XHU1YTM2XHU1YTYyXHU1YTZhXHU1YTlhXHU1YWJjXHU1YWJlXHU1YWNiXHU1YWMyXHU1YWJkXHU1YWUzXHU1YWQ3XHU1YWU2XHU1YWU5XHU1YWQ2XHU1YWZhXHU1YWZiXHU1YjBj'@; put 'XHU1YjBiXHU1YjE2XHU1YjMyXHU1YWQwXHU1YjJhXHU1YjM2XHU1YjNlXHU1YjQzXHU1YjQ1XHU1YjQwXHU1YjUxXHU1YjU1XHU1YjVhXHU1YjViXHU1YjY1XHU1YjY5XHU1YjcwXHU1YjczXHU1Yjc1XHU1Yjc4XHU2NTg4XHU1YjdhXHU1YjgwIl0sWyI5YjgwIiwiXHU1YjgzXHU1YmE2XHU1'@; put 'YmI4XHU1YmMzXHU1YmM3XHU1YmM5XHU1YmQ0XHU1YmQwXHU1YmU0XHU1YmU2XHU1YmUyXHU1YmRlXHU1YmU1XHU1YmViXHU1YmYwXHU1YmY2XHU1YmYzXHU1YzA1XHU1YzA3XHU1YzA4XHU1YzBkXHU1YzEzXHU1YzIwXHU1YzIyXHU1YzI4XHU1YzM4XHU1YzM5XHU1YzQxXHU1YzQ2XHU1YzRl'@; put 'XHU1YzUzXHU1YzUwXHU1YzRmXHU1YjcxXHU1YzZjXHU1YzZlXHU0ZTYyXHU1Yzc2XHU1Yzc5XHU1YzhjXHU1YzkxXHU1Yzk0XHU1OTliXHU1Y2FiXHU1Y2JiXHU1Y2I2XHU1Y2JjXHU1Y2I3XHU1Y2M1XHU1Y2JlXHU1Y2M3XHU1Y2Q5XHU1Y2U5XHU1Y2ZkXHU1Y2ZhXHU1Y2VkXHU1ZDhjXHU1'@; put 'Y2VhXHU1ZDBiXHU1ZDE1XHU1ZDE3XHU1ZDVjXHU1ZDFmXHU1ZDFiXHU1ZDExXHU1ZDE0XHU1ZDIyXHU1ZDFhXHU1ZDE5XHU1ZDE4XHU1ZDRjXHU1ZDUyXHU1ZDRlXHU1ZDRiXHU1ZDZjXHU1ZDczXHU1ZDc2XHU1ZDg3XHU1ZDg0XHU1ZDgyXHU1ZGEyXHU1ZDlkXHU1ZGFjXHU1ZGFlXHU1ZGJk'@; put 'XHU1ZDkwXHU1ZGI3XHU1ZGJjXHU1ZGM5XHU1ZGNkXHU1ZGQzXHU1ZGQyXHU1ZGQ2XHU1ZGRiXHU1ZGViXHU1ZGYyXHU1ZGY1XHU1ZTBiXHU1ZTFhXHU1ZTE5XHU1ZTExXHU1ZTFiXHU1ZTM2XHU1ZTM3XHU1ZTQ0XHU1ZTQzXHU1ZTQwXHU1ZTRlXHU1ZTU3XHU1ZTU0XHU1ZTVmXHU1ZTYyXHU1'@; put 'ZTY0XHU1ZTQ3XHU1ZTc1XHU1ZTc2XHU1ZTdhXHU5ZWJjXHU1ZTdmXHU1ZWEwXHU1ZWMxXHU1ZWMyXHU1ZWM4XHU1ZWQwXHU1ZWNmIl0sWyI5YzQwIiwiXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5XHU1ZWVjXHU1ZWYxXHU1ZWYzXHU1ZWYw'@; put 'XHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1ZjZkXHU1ZjczXHU1Zjc3XHU1ZjgzXHU1'@; put 'ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1ZmZmXHU2MDIxXHU2MDYwIl0sWyI5YzgwIiwiXHU2MDE5XHU2MDEwXHU2MDI5'@; put 'XHU2MDBlXHU2MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQyXHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2MDhkXHU2MGU3XHU2MDgzXHU2'@; put 'MDlhXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0XHU2MGZhXHU2MTAzXHU2MTIx'@; put 'XHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJjXHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2MTY1XHU2MTcxXHU2MTVmXHU2'@; put 'MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2XHU2MWUzXHU2MWY2XHU2MWZh'@; put 'XHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFiIl0sWyI5ZDQwIiwiXHU2MjFlXHU2MjIxXHU2MjJhXHU2MjJlXHU2MjMwXHU2MjMyXHU2MjMzXHU2MjQxXHU2MjRlXHU2MjVlXHU2MjYzXHU2MjViXHU2MjYwXHU2'@; put 'MjY4XHU2MjdjXHU2MjgyXHU2Mjg5XHU2MjdlXHU2MjkyXHU2MjkzXHU2Mjk2XHU2MmQ0XHU2MjgzXHU2Mjk0XHU2MmQ3XHU2MmQxXHU2MmJiXHU2MmNmXHU2MmZmXHU2MmM2XHU2NGQ0XHU2MmM4XHU2MmRjXHU2MmNjXHU2MmNhXHU2MmMyXHU2MmM3XHU2MjliXHU2MmM5XHU2MzBjXHU2MmVl'@; put 'XHU2MmYxXHU2MzI3XHU2MzAyXHU2MzA4XHU2MmVmXHU2MmY1XHU2MzUwXHU2MzNlXHU2MzRkXHU2NDFjXHU2MzRmXHU2Mzk2XHU2MzhlXHU2MzgwXHU2M2FiXHU2Mzc2XHU2M2EzXHU2MzhmXHU2Mzg5XHU2MzlmXHU2M2I1XHU2MzZiIl0sWyI5ZDgwIiwiXHU2MzY5XHU2M2JlXHU2M2U5XHU2'@; put 'M2MwXHU2M2M2XHU2M2UzXHU2M2M5XHU2M2QyXHU2M2Y2XHU2M2M0XHU2NDE2XHU2NDM0XHU2NDA2XHU2NDEzXHU2NDI2XHU2NDM2XHU2NTFkXHU2NDE3XHU2NDI4XHU2NDBmXHU2NDY3XHU2NDZmXHU2NDc2XHU2NDRlXHU2NTJhXHU2NDk1XHU2NDkzXHU2NGE1XHU2NGE5XHU2NDg4XHU2NGJj'@; put 'XHU2NGRhXHU2NGQyXHU2NGM1XHU2NGM3XHU2NGJiXHU2NGQ4XHU2NGMyXHU2NGYxXHU2NGU3XHU4MjA5XHU2NGUwXHU2NGUxXHU2MmFjXHU2NGUzXHU2NGVmXHU2NTJjXHU2NGY2XHU2NGY0XHU2NGYyXHU2NGZhXHU2NTAwXHU2NGZkXHU2NTE4XHU2NTFjXHU2NTA1XHU2NTI0XHU2NTIzXHU2'@; put 'NTJiXHU2NTM0XHU2NTM1XHU2NTM3XHU2NTM2XHU2NTM4XHU3NTRiXHU2NTQ4XHU2NTU2XHU2NTU1XHU2NTRkXHU2NTU4XHU2NTVlXHU2NTVkXHU2NTcyXHU2NTc4XHU2NTgyXHU2NTgzXHU4YjhhXHU2NTliXHU2NTlmXHU2NWFiXHU2NWI3XHU2NWMzXHU2NWM2XHU2NWMxXHU2NWM0XHU2NWNj'@; put 'XHU2NWQyXHU2NWRiXHU2NWQ5XHU2NWUwXHU2NWUxXHU2NWYxXHU2NzcyXHU2NjBhXHU2NjAzXHU2NWZiXHU2NzczXHU2NjM1XHU2NjM2XHU2NjM0XHU2NjFjXHU2NjRmXHU2NjQ0XHU2NjQ5XHU2NjQxXHU2NjVlXHU2NjVkXHU2NjY0XHU2NjY3XHU2NjY4XHU2NjVmXHU2NjYyXHU2NjcwXHU2'@; put 'NjgzXHU2Njg4XHU2NjhlXHU2Njg5XHU2Njg0XHU2Njk4XHU2NjlkXHU2NmMxXHU2NmI5XHU2NmM5XHU2NmJlXHU2NmJjIl0sWyI5ZTQwIiwiXHU2NmM0XHU2NmI4XHU2NmQ2XHU2NmRhXHU2NmUwXHU2NjNmXHU2NmU2XHU2NmU5XHU2NmYwXHU2NmY1XHU2NmY3XHU2NzBmXHU2NzE2XHU2NzFl'@; put 'XHU2NzI2XHU2NzI3XHU5NzM4XHU2NzJlXHU2NzNmXHU2NzM2XHU2NzQxXHU2NzM4XHU2NzM3XHU2NzQ2XHU2NzVlXHU2NzYwXHU2NzU5XHU2NzYzXHU2NzY0XHU2Nzg5XHU2NzcwXHU2N2E5XHU2NzdjXHU2NzZhXHU2NzhjXHU2NzhiXHU2N2E2XHU2N2ExXHU2Nzg1XHU2N2I3XHU2N2VmXHU2'@; put 'N2I0XHU2N2VjXHU2N2IzXHU2N2U5XHU2N2I4XHU2N2U0XHU2N2RlXHU2N2RkXHU2N2UyXHU2N2VlXHU2N2I5XHU2N2NlXHU2N2M2XHU2N2U3XHU2YTljXHU2ODFlXHU2ODQ2XHU2ODI5XHU2ODQwXHU2ODRkXHU2ODMyXHU2ODRlIl0sWyI5ZTgwIiwiXHU2OGIzXHU2ODJiXHU2ODU5XHU2ODYz'@; put 'XHU2ODc3XHU2ODdmXHU2ODlmXHU2ODhmXHU2OGFkXHU2ODk0XHU2ODlkXHU2ODliXHU2ODgzXHU2YWFlXHU2OGI5XHU2ODc0XHU2OGI1XHU2OGEwXHU2OGJhXHU2OTBmXHU2ODhkXHU2ODdlXHU2OTAxXHU2OGNhXHU2OTA4XHU2OGQ4XHU2OTIyXHU2OTI2XHU2OGUxXHU2OTBjXHU2OGNkXHU2'@; put 'OGQ0XHU2OGU3XHU2OGQ1XHU2OTM2XHU2OTEyXHU2OTA0XHU2OGQ3XHU2OGUzXHU2OTI1XHU2OGY5XHU2OGUwXHU2OGVmXHU2OTI4XHU2OTJhXHU2OTFhXHU2OTIzXHU2OTIxXHU2OGM2XHU2OTc5XHU2OTc3XHU2OTVjXHU2OTc4XHU2OTZiXHU2OTU0XHU2OTdlXHU2OTZlXHU2OTM5XHU2OTc0'@; put 'XHU2OTNkXHU2OTU5XHU2OTMwXHU2OTYxXHU2OTVlXHU2OTVkXHU2OTgxXHU2OTZhXHU2OWIyXHU2OWFlXHU2OWQwXHU2OWJmXHU2OWMxXHU2OWQzXHU2OWJlXHU2OWNlXHU1YmU4XHU2OWNhXHU2OWRkXHU2OWJiXHU2OWMzXHU2OWE3XHU2YTJlXHU2OTkxXHU2OWEwXHU2OTljXHU2OTk1XHU2'@; put 'OWI0XHU2OWRlXHU2OWU4XHU2YTAyXHU2YTFiXHU2OWZmXHU2YjBhXHU2OWY5XHU2OWYyXHU2OWU3XHU2YTA1XHU2OWIxXHU2YTFlXHU2OWVkXHU2YTE0XHU2OWViXHU2YTBhXHU2YTEyXHU2YWMxXHU2YTIzXHU2YTEzXHU2YTQ0XHU2YTBjXHU2YTcyXHU2YTM2XHU2YTc4XHU2YTQ3XHU2YTYy'@; put 'XHU2YTU5XHU2YTY2XHU2YTQ4XHU2YTM4XHU2YTIyXHU2YTkwXHU2YThkXHU2YWEwXHU2YTg0XHU2YWEyXHU2YWEzIl0sWyI5ZjQwIiwiXHU2YTk3XHU4NjE3XHU2YWJiXHU2YWMzXHU2YWMyXHU2YWI4XHU2YWIzXHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRhXHU2YWVhXHU2'@; put 'YWZiXHU2YjA1XHU4NjE2XHU2YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5XHU2YjUwXHU2YjU5XHU2YjU0XHU2YjViXHU2YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2Yjg0XHU2Yjgz'@; put 'XHU2YjhkXHU2Yjk4XHU2Yjk1XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2YmQzXHU2YmRmXHU2YmVjXHU2YmViXHU2YmYzXHU2YmVmIl0sWyI5ZjgwIiwiXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2'@; put 'YzFiXHU2YzI0XHU2YzIzXHU2YzVlXHU2YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2YzkwXHU2Y2M0XHU2Y2YxXHU2Y2QzXHU2Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlXHU2Y2Jh'@; put 'XHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2VhXHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2ZDkzXHU2ZDY0XHU2ZDVhXHU2ZDc5XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5XHU2ZTE1XHU2'@; put 'ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVhXHU2ZGVlXHU2ZTJkXHU2ZTZlXHU2ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2ZTZiXHU2ZTJi'@; put 'XHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQzXHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2ZWJkXHU2ZWFmXHU2ZWM0XHU2ZWIyXHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlmXHU2ZjQxXHU2'@; put 'ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjIl0sWyJlMDQwIiwiXHU2ZjNlXHU2ZjEzXHU2ZWY3XHU2Zjg2XHU2ZjdhXHU2Zjc4XHU2ZjgxXHU2ZjgwXHU2ZjZmXHU2ZjViXHU2ZmYzXHU2ZjZkXHU2ZjgyXHU2ZjdjXHU2ZjU4'@; put 'XHU2ZjhlXHU2ZjkxXHU2ZmMyXHU2ZjY2XHU2ZmIzXHU2ZmEzXHU2ZmExXHU2ZmE0XHU2ZmI5XHU2ZmM2XHU2ZmFhXHU2ZmRmXHU2ZmQ1XHU2ZmVjXHU2ZmQ0XHU2ZmQ4XHU2ZmYxXHU2ZmVlXHU2ZmRiXHU3MDA5XHU3MDBiXHU2ZmZhXHU3MDExXHU3MDAxXHU3MDBmXHU2ZmZlXHU3MDFiXHU3'@; put 'MDFhXHU2Zjc0XHU3MDFkXHU3MDE4XHU3MDFmXHU3MDMwXHU3MDNlXHU3MDMyXHU3MDUxXHU3MDYzXHU3MDk5XHU3MDkyXHU3MGFmXHU3MGYxXHU3MGFjXHU3MGI4XHU3MGIzXHU3MGFlXHU3MGRmXHU3MGNiXHU3MGRkIl0sWyJlMDgwIiwiXHU3MGQ5XHU3MTA5XHU3MGZkXHU3MTFjXHU3MTE5'@; put 'XHU3MTY1XHU3MTU1XHU3MTg4XHU3MTY2XHU3MTYyXHU3MTRjXHU3MTU2XHU3MTZjXHU3MThmXHU3MWZiXHU3MTg0XHU3MTk1XHU3MWE4XHU3MWFjXHU3MWQ3XHU3MWI5XHU3MWJlXHU3MWQyXHU3MWM5XHU3MWQ0XHU3MWNlXHU3MWUwXHU3MWVjXHU3MWU3XHU3MWY1XHU3MWZjXHU3MWY5XHU3'@; put 'MWZmXHU3MjBkXHU3MjEwXHU3MjFiXHU3MjI4XHU3MjJkXHU3MjJjXHU3MjMwXHU3MjMyXHU3MjNiXHU3MjNjXHU3MjNmXHU3MjQwXHU3MjQ2XHU3MjRiXHU3MjU4XHU3Mjc0XHU3MjdlXHU3MjgyXHU3MjgxXHU3Mjg3XHU3MjkyXHU3Mjk2XHU3MmEyXHU3MmE3XHU3MmI5XHU3MmIyXHU3MmMz'@; put 'XHU3MmM2XHU3MmM0XHU3MmNlXHU3MmQyXHU3MmUyXHU3MmUwXHU3MmUxXHU3MmY5XHU3MmY3XHU1MDBmXHU3MzE3XHU3MzBhXHU3MzFjXHU3MzE2XHU3MzFkXHU3MzM0XHU3MzJmXHU3MzI5XHU3MzI1XHU3MzNlXHU3MzRlXHU3MzRmXHU5ZWQ4XHU3MzU3XHU3MzZhXHU3MzY4XHU3MzcwXHU3'@; put 'Mzc4XHU3Mzc1XHU3MzdiXHU3MzdhXHU3M2M4XHU3M2IzXHU3M2NlXHU3M2JiXHU3M2MwXHU3M2U1XHU3M2VlXHU3M2RlXHU3NGEyXHU3NDA1XHU3NDZmXHU3NDI1XHU3M2Y4XHU3NDMyXHU3NDNhXHU3NDU1XHU3NDNmXHU3NDVmXHU3NDU5XHU3NDQxXHU3NDVjXHU3NDY5XHU3NDcwXHU3NDYz'@; put 'XHU3NDZhXHU3NDc2XHU3NDdlXHU3NDhiXHU3NDllXHU3NGE3XHU3NGNhXHU3NGNmXHU3NGQ0XHU3M2YxIl0sWyJlMTQwIiwiXHU3NGUwXHU3NGUzXHU3NGU3XHU3NGU5XHU3NGVlXHU3NGYyXHU3NGYwXHU3NGYxXHU3NGY4XHU3NGY3XHU3NTA0XHU3NTAzXHU3NTA1XHU3NTBjXHU3NTBlXHU3'@; put 'NTBkXHU3NTE1XHU3NTEzXHU3NTFlXHU3NTI2XHU3NTJjXHU3NTNjXHU3NTQ0XHU3NTRkXHU3NTRhXHU3NTQ5XHU3NTViXHU3NTQ2XHU3NTVhXHU3NTY5XHU3NTY0XHU3NTY3XHU3NTZiXHU3NTZkXHU3NTc4XHU3NTc2XHU3NTg2XHU3NTg3XHU3NTc0XHU3NThhXHU3NTg5XHU3NTgyXHU3NTk0'@; put 'XHU3NTlhXHU3NTlkXHU3NWE1XHU3NWEzXHU3NWMyXHU3NWIzXHU3NWMzXHU3NWI1XHU3NWJkXHU3NWI4XHU3NWJjXHU3NWIxXHU3NWNkXHU3NWNhXHU3NWQyXHU3NWQ5XHU3NWUzXHU3NWRlXHU3NWZlXHU3NWZmIl0sWyJlMTgwIiwiXHU3NWZjXHU3NjAxXHU3NWYwXHU3NWZhXHU3NWYyXHU3'@; put 'NWYzXHU3NjBiXHU3NjBkXHU3NjA5XHU3NjFmXHU3NjI3XHU3NjIwXHU3NjIxXHU3NjIyXHU3NjI0XHU3NjM0XHU3NjMwXHU3NjNiXHU3NjQ3XHU3NjQ4XHU3NjQ2XHU3NjVjXHU3NjU4XHU3NjYxXHU3NjYyXHU3NjY4XHU3NjY5XHU3NjZhXHU3NjY3XHU3NjZjXHU3NjcwXHU3NjcyXHU3Njc2'@; put 'XHU3Njc4XHU3NjdjXHU3NjgwXHU3NjgzXHU3Njg4XHU3NjhiXHU3NjhlXHU3Njk2XHU3NjkzXHU3Njk5XHU3NjlhXHU3NmIwXHU3NmI0XHU3NmI4XHU3NmI5XHU3NmJhXHU3NmMyXHU3NmNkXHU3NmQ2XHU3NmQyXHU3NmRlXHU3NmUxXHU3NmU1XHU3NmU3XHU3NmVhXHU4NjJmXHU3NmZiXHU3'@; put 'NzA4XHU3NzA3XHU3NzA0XHU3NzI5XHU3NzI0XHU3NzFlXHU3NzI1XHU3NzI2XHU3NzFiXHU3NzM3XHU3NzM4XHU3NzQ3XHU3NzVhXHU3NzY4XHU3NzZiXHU3NzViXHU3NzY1XHU3NzdmXHU3NzdlXHU3Nzc5XHU3NzhlXHU3NzhiXHU3NzkxXHU3N2EwXHU3NzllXHU3N2IwXHU3N2I2XHU3N2I5'@; put 'XHU3N2JmXHU3N2JjXHU3N2JkXHU3N2JiXHU3N2M3XHU3N2NkXHU3N2Q3XHU3N2RhXHU3N2RjXHU3N2UzXHU3N2VlXHU3N2ZjXHU3ODBjXHU3ODEyXHU3OTI2XHU3ODIwXHU3OTJhXHU3ODQ1XHU3ODhlXHU3ODc0XHU3ODg2XHU3ODdjXHU3ODlhXHU3ODhjXHU3OGEzXHU3OGI1XHU3OGFhXHU3'@; put 'OGFmXHU3OGQxXHU3OGM2XHU3OGNiXHU3OGQ0XHU3OGJlXHU3OGJjXHU3OGM1XHU3OGNhXHU3OGVjIl0sWyJlMjQwIiwiXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3OTJjXHU3OTJiXHU3OTQwXHU3OTYwXHU3OTU3XHU3OTVmXHU3OTVhXHU3OTU1'@; put 'XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3OWFhXHU3OWFlXHU3OWIzXHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBkXHU3YTE4XHU3YTE5XHU3YTIwXHU3YTFmXHU3OTgwXHU3YTMxXHU3YTNiXHU3'@; put 'YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5XHU5ZjlkXHU3YTcwXHU3YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwIl0sWyJlMjgwIiwiXHU3YWI2XHU3YWM1XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3'@; put 'XHU3YWNhXHU3YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU2XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5XHU3YjFlXHU3YjM1XHU3YjI4XHU3YjM2XHU3YjUwXHU3YjdhXHU3YjA0XHU3'@; put 'YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3YjcwXHU3YjcxXHU3YjZjXHU3YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3YjhmXHU3YjVkXHU3Yjk5XHU3YmNiXHU3YmMxXHU3YmNjXHU3YmNmXHU3YmI0'@; put 'XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3YzAwXHU3YzA3XHU3YzEzXHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFmXHU3YzM3XHU3YzJiXHU3YzNkXHU3YzRjXHU3YzQzXHU3YzU0XHU3YzRmXHU3'@; put 'YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1XHU3YzgzXHU3YzkwXHU3Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2MwXHU3Y2M1XHU3Y2MyXHU3Y2Q4XHU3Y2Qy'@; put 'XHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3ZDA2Il0sWyJlMzQwIiwiXHU3ZDAyXHU3ZDFjXHU3ZDE1XHU3ZDBhXHU3ZDQ1XHU3ZDRiXHU3ZDJlXHU3ZDMyXHU3ZDNmXHU3ZDM1XHU3ZDQ2XHU3ZDczXHU3ZDU2XHU3ZDRlXHU3ZDcyXHU3ZDY4XHU3'@; put 'ZDZlXHU3ZDRmXHU3ZDYzXHU3ZDkzXHU3ZDg5XHU3ZDViXHU3ZDhmXHU3ZDdkXHU3ZDliXHU3ZGJhXHU3ZGFlXHU3ZGEzXHU3ZGI1XHU3ZGM3XHU3ZGJkXHU3ZGFiXHU3ZTNkXHU3ZGEyXHU3ZGFmXHU3ZGRjXHU3ZGI4XHU3ZDlmXHU3ZGIwXHU3ZGQ4XHU3ZGRkXHU3ZGU0XHU3ZGRlXHU3ZGZi'@; put 'XHU3ZGYyXHU3ZGUxXHU3ZTA1XHU3ZTBhXHU3ZTIzXHU3ZTIxXHU3ZTEyXHU3ZTMxXHU3ZTFmXHU3ZTA5XHU3ZTBiXHU3ZTIyXHU3ZTQ2XHU3ZTY2XHU3ZTNiXHU3ZTM1XHU3ZTM5XHU3ZTQzXHU3ZTM3Il0sWyJlMzgwIiwiXHU3ZTMyXHU3ZTNhXHU3ZTY3XHU3ZTVkXHU3ZTU2XHU3ZTVlXHU3'@; put 'ZTU5XHU3ZTVhXHU3ZTc5XHU3ZTZhXHU3ZTY5XHU3ZTdjXHU3ZTdiXHU3ZTgzXHU3ZGQ1XHU3ZTdkXHU4ZmFlXHU3ZTdmXHU3ZTg4XHU3ZTg5XHU3ZThjXHU3ZTkyXHU3ZTkwXHU3ZTkzXHU3ZTk0XHU3ZTk2XHU3ZThlXHU3ZTliXHU3ZTljXHU3ZjM4XHU3ZjNhXHU3ZjQ1XHU3ZjRjXHU3ZjRk'@; put 'XHU3ZjRlXHU3ZjUwXHU3ZjUxXHU3ZjU1XHU3ZjU0XHU3ZjU4XHU3ZjVmXHU3ZjYwXHU3ZjY4XHU3ZjY5XHU3ZjY3XHU3Zjc4XHU3ZjgyXHU3Zjg2XHU3ZjgzXHU3Zjg4XHU3Zjg3XHU3ZjhjXHU3Zjk0XHU3ZjllXHU3ZjlkXHU3ZjlhXHU3ZmEzXHU3ZmFmXHU3ZmIyXHU3ZmI5XHU3ZmFlXHU3'@; put 'ZmI2XHU3ZmI4XHU4YjcxXHU3ZmM1XHU3ZmM2XHU3ZmNhXHU3ZmQ1XHU3ZmQ0XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmYzXHU3ZmY5XHU5OGRjXHU4MDA2XHU4MDA0XHU4MDBiXHU4MDEyXHU4MDE4XHU4MDE5XHU4MDFjXHU4MDIxXHU4MDI4XHU4MDNmXHU4MDNiXHU4MDRhXHU4MDQ2XHU4MDUy'@; put 'XHU4MDU4XHU4MDVhXHU4MDVmXHU4MDYyXHU4MDY4XHU4MDczXHU4MDcyXHU4MDcwXHU4MDc2XHU4MDc5XHU4MDdkXHU4MDdmXHU4MDg0XHU4MDg2XHU4MDg1XHU4MDliXHU4MDkzXHU4MDlhXHU4MGFkXHU1MTkwXHU4MGFjXHU4MGRiXHU4MGU1XHU4MGQ5XHU4MGRkXHU4MGM0XHU4MGRhXHU4'@; put 'MGQ2XHU4MTA5XHU4MGVmXHU4MGYxXHU4MTFiXHU4MTI5XHU4MTIzXHU4MTJmXHU4MTRiIl0sWyJlNDQwIiwiXHU5NjhiXHU4MTQ2XHU4MTNlXHU4MTUzXHU4MTUxXHU4MGZjXHU4MTcxXHU4MTZlXHU4MTY1XHU4MTY2XHU4MTc0XHU4MTgzXHU4MTg4XHU4MThhXHU4MTgwXHU4MTgyXHU4MWEw'@; put 'XHU4MTk1XHU4MWE0XHU4MWEzXHU4MTVmXHU4MTkzXHU4MWE5XHU4MWIwXHU4MWI1XHU4MWJlXHU4MWI4XHU4MWJkXHU4MWMwXHU4MWMyXHU4MWJhXHU4MWM5XHU4MWNkXHU4MWQxXHU4MWQ5XHU4MWQ4XHU4MWM4XHU4MWRhXHU4MWRmXHU4MWUwXHU4MWU3XHU4MWZhXHU4MWZiXHU4MWZlXHU4'@; put 'MjAxXHU4MjAyXHU4MjA1XHU4MjA3XHU4MjBhXHU4MjBkXHU4MjEwXHU4MjE2XHU4MjI5XHU4MjJiXHU4MjM4XHU4MjMzXHU4MjQwXHU4MjU5XHU4MjU4XHU4MjVkXHU4MjVhXHU4MjVmXHU4MjY0Il0sWyJlNDgwIiwiXHU4MjYyXHU4MjY4XHU4MjZhXHU4MjZiXHU4MjJlXHU4MjcxXHU4Mjc3'@; put 'XHU4Mjc4XHU4MjdlXHU4MjhkXHU4MjkyXHU4MmFiXHU4MjlmXHU4MmJiXHU4MmFjXHU4MmUxXHU4MmUzXHU4MmRmXHU4MmQyXHU4MmY0XHU4MmYzXHU4MmZhXHU4MzkzXHU4MzAzXHU4MmZiXHU4MmY5XHU4MmRlXHU4MzA2XHU4MmRjXHU4MzA5XHU4MmQ5XHU4MzM1XHU4MzM0XHU4MzE2XHU4'@; put 'MzMyXHU4MzMxXHU4MzQwXHU4MzM5XHU4MzUwXHU4MzQ1XHU4MzJmXHU4MzJiXHU4MzE3XHU4MzE4XHU4Mzg1XHU4MzlhXHU4M2FhXHU4MzlmXHU4M2EyXHU4Mzk2XHU4MzIzXHU4MzhlXHU4Mzg3XHU4MzhhXHU4MzdjXHU4M2I1XHU4MzczXHU4Mzc1XHU4M2EwXHU4Mzg5XHU4M2E4XHU4M2Y0'@; put 'XHU4NDEzXHU4M2ViXHU4M2NlXHU4M2ZkXHU4NDAzXHU4M2Q4XHU4NDBiXHU4M2MxXHU4M2Y3XHU4NDA3XHU4M2UwXHU4M2YyXHU4NDBkXHU4NDIyXHU4NDIwXHU4M2JkXHU4NDM4XHU4NTA2XHU4M2ZiXHU4NDZkXHU4NDJhXHU4NDNjXHU4NTVhXHU4NDg0XHU4NDc3XHU4NDZiXHU4NGFkXHU4'@; put 'NDZlXHU4NDgyXHU4NDY5XHU4NDQ2XHU4NDJjXHU4NDZmXHU4NDc5XHU4NDM1XHU4NGNhXHU4NDYyXHU4NGI5XHU4NGJmXHU4NDlmXHU4NGQ5XHU4NGNkXHU4NGJiXHU4NGRhXHU4NGQwXHU4NGMxXHU4NGM2XHU4NGQ2XHU4NGExXHU4NTIxXHU4NGZmXHU4NGY0XHU4NTE3XHU4NTE4XHU4NTJj'@; put 'XHU4NTFmXHU4NTE1XHU4NTE0XHU4NGZjXHU4NTQwXHU4NTYzXHU4NTU4XHU4NTQ4Il0sWyJlNTQwIiwiXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTljXHU4NTc3XHU4'@; put 'NTdlXHU4NTkwXHU4NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBiXHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4NjY3XHU4Njcx'@; put 'XHU4NjkzXHU4NmEzXHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4NmQ0XHU4NmRlXHU4NmU5XHU4NmVjIl0sWyJlNTgwIiwiXHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4'@; put 'NzAzXHU4NmZiXHU4NzExXHU4NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVmXHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4NzU3XHU4NzY4XHU4NzZlXHU4NzU5XHU4NzUzXHU4NzYzXHU4NzZhXHU4ODA1'@; put 'XHU4N2EyXHU4NzlmXHU4NzgyXHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBkXHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODExXHU4ODE2XHU4'@; put 'ODE1XHU4ODIyXHU4ODIxXHU4ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgxXHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4ODk5XHU4OGEy'@; put 'XHU4ODhkXHU4OGE0XHU4OGIwXHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBhXHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJiXHU4OTQxXHU4'@; put 'OTQ0XHU4OTNiXHU4OTM2XHU4OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlIl0sWyJlNjQwIiwiXHU4OTY2XHU4OTY0XHU4OTZkXHU4OTZhXHU4OTZmXHU4OTc0XHU4OTc3XHU4OTdlXHU4OTgzXHU4OTg4XHU4OThhXHU4OTkzXHU4OTk4XHU4OWExXHU4OWE5XHU4OWE2XHU4OWFjXHU4OWFm'@; put 'XHU4OWIyXHU4OWJhXHU4OWJkXHU4OWJmXHU4OWMwXHU4OWRhXHU4OWRjXHU4OWRkXHU4OWU3XHU4OWY0XHU4OWY4XHU4YTAzXHU4YTE2XHU4YTEwXHU4YTBjXHU4YTFiXHU4YTFkXHU4YTI1XHU4YTM2XHU4YTQxXHU4YTViXHU4YTUyXHU4YTQ2XHU4YTQ4XHU4YTdjXHU4YTZkXHU4YTZjXHU4'@; put 'YTYyXHU4YTg1XHU4YTgyXHU4YTg0XHU4YWE4XHU4YWExXHU4YTkxXHU4YWE1XHU4YWE2XHU4YTlhXHU4YWEzXHU4YWM0XHU4YWNkXHU4YWMyXHU4YWRhXHU4YWViXHU4YWYzXHU4YWU3Il0sWyJlNjgwIiwiXHU4YWU0XHU4YWYxXHU4YjE0XHU4YWUwXHU4YWUyXHU4YWY3XHU4YWRlXHU4YWRi'@; put 'XHU4YjBjXHU4YjA3XHU4YjFhXHU4YWUxXHU4YjE2XHU4YjEwXHU4YjE3XHU4YjIwXHU4YjMzXHU5N2FiXHU4YjI2XHU4YjJiXHU4YjNlXHU4YjI4XHU4YjQxXHU4YjRjXHU4YjRmXHU4YjRlXHU4YjQ5XHU4YjU2XHU4YjViXHU4YjVhXHU4YjZiXHU4YjVmXHU4YjZjXHU4YjZmXHU4Yjc0XHU4'@; put 'YjdkXHU4YjgwXHU4YjhjXHU4YjhlXHU4YjkyXHU4YjkzXHU4Yjk2XHU4Yjk5XHU4YjlhXHU4YzNhXHU4YzQxXHU4YzNmXHU4YzQ4XHU4YzRjXHU4YzRlXHU4YzUwXHU4YzU1XHU4YzYyXHU4YzZjXHU4Yzc4XHU4YzdhXHU4YzgyXHU4Yzg5XHU4Yzg1XHU4YzhhXHU4YzhkXHU4YzhlXHU4Yzk0'@; put 'XHU4YzdjXHU4Yzk4XHU2MjFkXHU4Y2FkXHU4Y2FhXHU4Y2JkXHU4Y2IyXHU4Y2IzXHU4Y2FlXHU4Y2I2XHU4Y2M4XHU4Y2MxXHU4Y2U0XHU4Y2UzXHU4Y2RhXHU4Y2ZkXHU4Y2ZhXHU4Y2ZiXHU4ZDA0XHU4ZDA1XHU4ZDBhXHU4ZDA3XHU4ZDBmXHU4ZDBkXHU4ZDEwXHU5ZjRlXHU4ZDEzXHU4'@; put 'Y2NkXHU4ZDE0XHU4ZDE2XHU4ZDY3XHU4ZDZkXHU4ZDcxXHU4ZDczXHU4ZDgxXHU4ZDk5XHU4ZGMyXHU4ZGJlXHU4ZGJhXHU4ZGNmXHU4ZGRhXHU4ZGQ2XHU4ZGNjXHU4ZGRiXHU4ZGNiXHU4ZGVhXHU4ZGViXHU4ZGRmXHU4ZGUzXHU4ZGZjXHU4ZTA4XHU4ZTA5XHU4ZGZmXHU4ZTFkXHU4ZTFl'@; put 'XHU4ZTEwXHU4ZTFmXHU4ZTQyXHU4ZTM1XHU4ZTMwXHU4ZTM0XHU4ZTRhIl0sWyJlNzQwIiwiXHU4ZTQ3XHU4ZTQ5XHU4ZTRjXHU4ZTUwXHU4ZTQ4XHU4ZTU5XHU4ZTY0XHU4ZTYwXHU4ZTJhXHU4ZTYzXHU4ZTU1XHU4ZTc2XHU4ZTcyXHU4ZTdjXHU4ZTgxXHU4ZTg3XHU4ZTg1XHU4ZTg0XHU4'@; put 'ZThiXHU4ZThhXHU4ZTkzXHU4ZTkxXHU4ZTk0XHU4ZTk5XHU4ZWFhXHU4ZWExXHU4ZWFjXHU4ZWIwXHU4ZWM2XHU4ZWIxXHU4ZWJlXHU4ZWM1XHU4ZWM4XHU4ZWNiXHU4ZWRiXHU4ZWUzXHU4ZWZjXHU4ZWZiXHU4ZWViXHU4ZWZlXHU4ZjBhXHU4ZjA1XHU4ZjE1XHU4ZjEyXHU4ZjE5XHU4ZjEz'@; put 'XHU4ZjFjXHU4ZjFmXHU4ZjFiXHU4ZjBjXHU4ZjI2XHU4ZjMzXHU4ZjNiXHU4ZjM5XHU4ZjQ1XHU4ZjQyXHU4ZjNlXHU4ZjRjXHU4ZjQ5XHU4ZjQ2XHU4ZjRlXHU4ZjU3XHU4ZjVjIl0sWyJlNzgwIiwiXHU4ZjYyXHU4ZjYzXHU4ZjY0XHU4ZjljXHU4ZjlmXHU4ZmEzXHU4ZmFkXHU4ZmFmXHU4'@; put 'ZmI3XHU4ZmRhXHU4ZmU1XHU4ZmUyXHU4ZmVhXHU4ZmVmXHU5MDg3XHU4ZmY0XHU5MDA1XHU4ZmY5XHU4ZmZhXHU5MDExXHU5MDE1XHU5MDIxXHU5MDBkXHU5MDFlXHU5MDE2XHU5MDBiXHU5MDI3XHU5MDM2XHU5MDM1XHU5MDM5XHU4ZmY4XHU5MDRmXHU5MDUwXHU5MDUxXHU5MDUyXHU5MDBl'@; put 'XHU5MDQ5XHU5MDNlXHU5MDU2XHU5MDU4XHU5MDVlXHU5MDY4XHU5MDZmXHU5MDc2XHU5NmE4XHU5MDcyXHU5MDgyXHU5MDdkXHU5MDgxXHU5MDgwXHU5MDhhXHU5MDg5XHU5MDhmXHU5MGE4XHU5MGFmXHU5MGIxXHU5MGI1XHU5MGUyXHU5MGU0XHU2MjQ4XHU5MGRiXHU5MTAyXHU5MTEyXHU5'@; put 'MTE5XHU5MTMyXHU5MTMwXHU5MTRhXHU5MTU2XHU5MTU4XHU5MTYzXHU5MTY1XHU5MTY5XHU5MTczXHU5MTcyXHU5MThiXHU5MTg5XHU5MTgyXHU5MWEyXHU5MWFiXHU5MWFmXHU5MWFhXHU5MWI1XHU5MWI0XHU5MWJhXHU5MWMwXHU5MWMxXHU5MWM5XHU5MWNiXHU5MWQwXHU5MWQ2XHU5MWRm'@; put 'XHU5MWUxXHU5MWRiXHU5MWZjXHU5MWY1XHU5MWY2XHU5MjFlXHU5MWZmXHU5MjE0XHU5MjJjXHU5MjE1XHU5MjExXHU5MjVlXHU5MjU3XHU5MjQ1XHU5MjQ5XHU5MjY0XHU5MjQ4XHU5Mjk1XHU5MjNmXHU5MjRiXHU5MjUwXHU5MjljXHU5Mjk2XHU5MjkzXHU5MjliXHU5MjVhXHU5MmNmXHU5'@; put 'MmI5XHU5MmI3XHU5MmU5XHU5MzBmXHU5MmZhXHU5MzQ0XHU5MzJlIl0sWyJlODQwIiwiXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5MzZlXHU5MzU2XHU5M2IwXHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5M2Q2XHU5M2Q3'@; put 'XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNhXHU5NDQxXHU5NDUyXHU5NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVlXHU5NDZhXHU5'@; put 'MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdjXHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5Il0sWyJlODgwIiwiXHU5NWEwXHU5NWE4XHU5NWE3XHU5NWFkXHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNh'@; put 'XHU2ZmY2XHU5NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3XHU5NjVjXHU5NjVlXHU5NjVkXHU5NjVmXHU5NjY2XHU5NjcyXHU5NjZjXHU5'@; put 'NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIyXHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5NmQ1XHU5NmY5XHU5NzA0XHU5NzA2XHU5NzA4XHU5NzEzXHU5NzBlXHU5NzEx'@; put 'XHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQyXHU5NzZiXHU5NzcxXHU5Nzc5XHU5Nzg1XHU5NzdjXHU5NzgxXHU5NzdhXHU5'@; put 'Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2EzXHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5N2Y1XHU5ODBmXHU5ODBjXHU5ODM4XHU5ODI0XHU5ODIxXHU5ODM3XHU5ODNk'@; put 'XHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwIl0sWyJlOTQwIiwiXHU5ODcxXHU5ODc0XHU5ODczXHU5OGFhXHU5OGFmXHU5OGIxXHU5OGI2XHU5OGM0XHU5OGMzXHU5OGM2XHU5OGU5XHU5OGViXHU5OTAzXHU5OTA5XHU5OTEyXHU5OTE0XHU5OTE4XHU5OTIxXHU5OTFkXHU5'@; put 'OTFlXHU5OTI0XHU5OTIwXHU5OTJjXHU5OTJlXHU5OTNkXHU5OTNlXHU5OTQyXHU5OTQ5XHU5OTQ1XHU5OTUwXHU5OTRiXHU5OTUxXHU5OTUyXHU5OTRjXHU5OTU1XHU5OTk3XHU5OTk4XHU5OWE1XHU5OWFkXHU5OWFlXHU5OWJjXHU5OWRmXHU5OWRiXHU5OWRkXHU5OWQ4XHU5OWQxXHU5OWVk'@; put 'XHU5OWVlXHU5OWYxXHU5OWYyXHU5OWZiXHU5OWY4XHU5YTAxXHU5YTBmXHU5YTA1XHU5OWUyXHU5YTE5XHU5YTJiXHU5YTM3XHU5YTQ1XHU5YTQyXHU5YTQwXHU5YTQzIl0sWyJlOTgwIiwiXHU5YTNlXHU5YTU1XHU5YTRkXHU5YTViXHU5YTU3XHU5YTVmXHU5YTYyXHU5YTY1XHU5YTY0XHU5'@; put 'YTY5XHU5YTZiXHU5YTZhXHU5YWFkXHU5YWIwXHU5YWJjXHU5YWMwXHU5YWNmXHU5YWQxXHU5YWQzXHU5YWQ0XHU5YWRlXHU5YWRmXHU5YWUyXHU5YWUzXHU5YWU2XHU5YWVmXHU5YWViXHU5YWVlXHU5YWY0XHU5YWYxXHU5YWY3XHU5YWZiXHU5YjA2XHU5YjE4XHU5YjFhXHU5YjFmXHU5YjIy'@; put 'XHU5YjIzXHU5YjI1XHU5YjI3XHU5YjI4XHU5YjI5XHU5YjJhXHU5YjJlXHU5YjJmXHU5YjMyXHU5YjQ0XHU5YjQzXHU5YjRmXHU5YjRkXHU5YjRlXHU5YjUxXHU5YjU4XHU5Yjc0XHU5YjkzXHU5YjgzXHU5YjkxXHU5Yjk2XHU5Yjk3XHU5YjlmXHU5YmEwXHU5YmE4XHU5YmI0XHU5YmMwXHU5'@; put 'YmNhXHU5YmI5XHU5YmM2XHU5YmNmXHU5YmQxXHU5YmQyXHU5YmUzXHU5YmUyXHU5YmU0XHU5YmQ0XHU5YmUxXHU5YzNhXHU5YmYyXHU5YmYxXHU5YmYwXHU5YzE1XHU5YzE0XHU5YzA5XHU5YzEzXHU5YzBjXHU5YzA2XHU5YzA4XHU5YzEyXHU5YzBhXHU5YzA0XHU5YzJlXHU5YzFiXHU5YzI1'@; put 'XHU5YzI0XHU5YzIxXHU5YzMwXHU5YzQ3XHU5YzMyXHU5YzQ2XHU5YzNlXHU5YzVhXHU5YzYwXHU5YzY3XHU5Yzc2XHU5Yzc4XHU5Y2U3XHU5Y2VjXHU5Y2YwXHU5ZDA5XHU5ZDA4XHU5Y2ViXHU5ZDAzXHU5ZDA2XHU5ZDJhXHU5ZDI2XHU5ZGFmXHU5ZDIzXHU5ZDFmXHU5ZDQ0XHU5ZDE1XHU5'@; put 'ZDEyXHU5ZDQxXHU5ZDNmXHU5ZDNlXHU5ZDQ2XHU5ZDQ4Il0sWyJlYTQwIiwiXHU5ZDVkXHU5ZDVlXHU5ZDY0XHU5ZDUxXHU5ZDUwXHU5ZDU5XHU5ZDcyXHU5ZDg5XHU5ZDg3XHU5ZGFiXHU5ZDZmXHU5ZDdhXHU5ZDlhXHU5ZGE0XHU5ZGE5XHU5ZGIyXHU5ZGM0XHU5ZGMxXHU5ZGJiXHU5ZGI4'@; put 'XHU5ZGJhXHU5ZGM2XHU5ZGNmXHU5ZGMyXHU5ZGQ5XHU5ZGQzXHU5ZGY4XHU5ZGU2XHU5ZGVkXHU5ZGVmXHU5ZGZkXHU5ZTFhXHU5ZTFiXHU5ZTFlXHU5ZTc1XHU5ZTc5XHU5ZTdkXHU5ZTgxXHU5ZTg4XHU5ZThiXHU5ZThjXHU5ZTkyXHU5ZTk1XHU5ZTkxXHU5ZTlkXHU5ZWE1XHU5ZWE5XHU5'@; put 'ZWI4XHU5ZWFhXHU5ZWFkXHU5NzYxXHU5ZWNjXHU5ZWNlXHU5ZWNmXHU5ZWQwXHU5ZWQ0XHU5ZWRjXHU5ZWRlXHU5ZWRkXHU5ZWUwXHU5ZWU1XHU5ZWU4XHU5ZWVmIl0sWyJlYTgwIiwiXHU5ZWY0XHU5ZWY2XHU5ZWY3XHU5ZWY5XHU5ZWZiXHU5ZWZjXHU5ZWZkXHU5ZjA3XHU5ZjA4XHU3NmI3'@; put 'XHU5ZjE1XHU5ZjIxXHU5ZjJjXHU5ZjNlXHU5ZjRhXHU5ZjUyXHU5ZjU0XHU5ZjYzXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjY2XHU5ZjY3XHU5ZjZjXHU5ZjZhXHU5Zjc3XHU5ZjcyXHU5Zjc2XHU5Zjk1XHU5ZjljXHU5ZmEwXHU1ODJmXHU2OWM3XHU5MDU5XHU3NDY0XHU1MWRjXHU3MTk5Il0s'@; put 'WyJlZDQwIiwiXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIy'@; put 'XHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1'@; put 'NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmIl0sWyJlZDgwIiwiXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFl'@; put 'XHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2'@; put 'MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2Ji'@; put 'XHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmXHU2ZDk2XHU2'@; put 'ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxIl0sWyJl'@; put 'ZTQwIiwiXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2XHVmYTE3XHU3'@; put 'NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5XHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3ZmExXHVmYTFl'@; put 'XHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5Il0sWyJlZTgwIiwiXHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4'@; put 'YjdmXHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5MjNjXHU5MjRl'@; put 'XHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0XHU5M2M2XHU5'@; put 'M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5XHU5YWRjXHU5Yjc1'@; put 'XHU5YjcyXHU5YjhmXHU5YmIxXHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxIl0sWyJlZWVmIiwiXHUyMTcwIiw5LCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDIiXSxbImYwNDAiLCJcdWUwMDAiLDYyXSxbImYwODAiLCJcdWUwM2YiLDEyNF0sWyJmMTQwIiwiXHVl'@; put 'MGJjIiw2Ml0sWyJmMTgwIiwiXHVlMGZiIiwxMjRdLFsiZjI0MCIsIlx1ZTE3OCIsNjJdLFsiZjI4MCIsIlx1ZTFiNyIsMTI0XSxbImYzNDAiLCJcdWUyMzQiLDYyXSxbImYzODAiLCJcdWUyNzMiLDEyNF0sWyJmNDQwIiwiXHVlMmYwIiw2Ml0sWyJmNDgwIiwiXHVlMzJmIiwxMjRdLFsiZjU0'@; put 'MCIsIlx1ZTNhYyIsNjJdLFsiZjU4MCIsIlx1ZTNlYiIsMTI0XSxbImY2NDAiLCJcdWU0NjgiLDYyXSxbImY2ODAiLCJcdWU0YTciLDEyNF0sWyJmNzQwIiwiXHVlNTI0Iiw2Ml0sWyJmNzgwIiwiXHVlNTYzIiwxMjRdLFsiZjg0MCIsIlx1ZTVlMCIsNjJdLFsiZjg4MCIsIlx1ZTYxZiIsMTI0'@; put 'XSxbImY5NDAiLCJcdWU2OWMiXSxbImZhNDAiLCJcdTIxNzAiLDksIlx1MjE2MCIsOSwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyXHUzMjMxXHUyMTE2XHUyMTIxXHUyMjM1XHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZi'@; put 'XHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhIl0sWyJmYTgwIiwiXHU1MTY0XHU1'@; put 'MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmXHVmYTEw'@; put 'XHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1'@; put 'ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFl'@; put 'XHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2'@; put 'YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmIl0sWyJmYjQwIiwiXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4'@; put 'XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3'@; put 'NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2XHVmYTE3XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5Il0sWyJmYjgwIiwiXHVmYTFhXHU3OTk0'@; put 'XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3ZmExXHVmYTFlXHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5XHU4NTZiXHVm'@; put 'YTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4YjdmXHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1'@; put 'XHU5MTI3XHU5MWRhXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5MjNjXHU5MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5'@; put 'MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0XHU5M2M2XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQz'@; put 'XHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5Il0sWyJmYzQwIiwiXHU5YWRjXHU5Yjc1XHU5YjcyXHU5YjhmXHU5YmIxXHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxIl1d'@; put 'Jyl9fSxmZT0+e2ZlKGZlLnM9NzUwMjgpfV0pOw=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=polyfills.2b960f1ecaf17f8a.js; filename filecode temp lrecl=208244; data _null_; file filecode; put 'KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1s0NjFdLHsyNDA1MChjLGYsdCl7InVzZSBzdHJpY3QiO3QoMTg4ODMpLHQoNTQ5NDApLHQoMzkyNzEpLHQoNTI0NDQpLHQoMjYyMDMpLHQoMTU2MjYpLHQo'@; put 'ODgwMjUpLHQoNTY0NDIpLHQoMzI4OTkpLHQoNjYzNzQpLHQoNDI0NiksdCgyMjkxMyksdCgxMDc0MyksdCg2NTg0NiksdCg5MzUzKSx0KDk2OTM1KSx0KDkyNTY4KTt2YXIgZHQ9dCg4MzgzOCk7d2luZG93Lmdsb2JhbD13aW5kb3csd2luZG93Lmdsb2JhbC5CdWZmZXI9d2luZG93Lmdsb2Jh'@; put 'bC5CdWZmZXJ8fGR0LkJ1ZmZlcix3aW5kb3cucHJvY2Vzcz17dmVyc2lvbjoiIn19LDEzOTgxKGMsZil7InVzZSBzdHJpY3QiO2YuYnl0ZUxlbmd0aD1mdW5jdGlvbiBpKGcpe3ZhciBEPWwoZykseD1EWzFdO3JldHVybiAzKihEWzBdK3gpLzQteH0sZi50b0J5dGVBcnJheT1mdW5jdGlvbiBw'@; put 'KGcpe3ZhciBELFQsRj1sKGcpLHg9RlswXSxBPUZbMV0saz1uZXcgZShmdW5jdGlvbiB2KGcsRCxGKXtyZXR1cm4gMyooRCtGKS80LUZ9KDAseCxBKSksUD0wLE09QT4wP3gtNDp4O2ZvcihUPTA7VDxNO1QrPTQpRD1uW2cuY2hhckNvZGVBdChUKV08PDE4fG5bZy5jaGFyQ29kZUF0KFQrMSld'@; put 'PDwxMnxuW2cuY2hhckNvZGVBdChUKzIpXTw8NnxuW2cuY2hhckNvZGVBdChUKzMpXSxrW1ArK109RD4+MTYmMjU1LGtbUCsrXT1EPj44JjI1NSxrW1ArK109MjU1JkQ7cmV0dXJuIDI9PT1BJiYoRD1uW2cuY2hhckNvZGVBdChUKV08PDJ8bltnLmNoYXJDb2RlQXQoVCsxKV0+PjQsa1tQKytd'@; put 'PTI1NSZEKSwxPT09QSYmKEQ9bltnLmNoYXJDb2RlQXQoVCldPDwxMHxuW2cuY2hhckNvZGVBdChUKzEpXTw8NHxuW2cuY2hhckNvZGVBdChUKzIpXT4+MixrW1ArK109RD4+OCYyNTUsa1tQKytdPTI1NSZEKSxrfSxmLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24gRShnKXtmb3IodmFyIEQsRj1n'@; put 'Lmxlbmd0aCx4PUYlMyxBPVtdLGs9MTYzODMsUD0wLE09Ri14O1A8TTtQKz1rKUEucHVzaCh5KGcsUCxQK2s+TT9NOlAraykpO3JldHVybiAxPT09eD9BLnB1c2godFsoRD1nW0YtMV0pPj4yXSt0W0Q8PDQmNjNdKyI9PSIpOjI9PT14JiZBLnB1c2godFsoRD0oZ1tGLTJdPDw4KStnW0YtMV0p'@; put 'Pj4xMF0rdFtEPj40JjYzXSt0W0Q8PDImNjNdKyI9IiksQS5qb2luKCIiKX07Zm9yKHZhciB0PVtdLG49W10sZT10eXBlb2YgVWludDhBcnJheTwidSI/VWludDhBcnJheTpBcnJheSxzPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1'@; put 'Njc4OSsvIixvPTA7bzw2NDsrK28pdFtvXT1zW29dLG5bcy5jaGFyQ29kZUF0KG8pXT1vO2Z1bmN0aW9uIGwoZyl7dmFyIEQ9Zy5sZW5ndGg7aWYoRCU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIEY9Zy5p'@; put 'bmRleE9mKCI9Iik7cmV0dXJuLTE9PT1GJiYoRj1EKSxbRixGPT09RD8wOjQtRiU0XX1mdW5jdGlvbiBkKGcpe3JldHVybiB0W2c+PjE4JjYzXSt0W2c+PjEyJjYzXSt0W2c+PjYmNjNdK3RbNjMmZ119ZnVuY3Rpb24geShnLEQsRil7Zm9yKHZhciBBPVtdLGs9RDtrPEY7ays9MylBLnB1c2go'@; put 'ZCgoZ1trXTw8MTYmMTY3MTE2ODApKyhnW2srMV08PDgmNjUyODApKygyNTUmZ1trKzJdKSkpO3JldHVybiBBLmpvaW4oIiIpfW5bNDVdPTYyLG5bOTVdPTYzfSw4MzgzOChjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoMTM5ODEpLGU9dCgyMjAyMCkscz0iZnVuY3Rpb24iPT10eXBlb2Yg'@; put 'U3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj9TeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpOm51bGw7Zi5CdWZmZXI9aSxmLlNsb3dCdWZmZXI9ZnVuY3Rpb24gayhoKXtyZXR1cm4raCE9aCYmKGg9MCksaS5hbGxvYygraCl9LGYuSU5TUEVDVF9N'@; put 'QVhfQllURVM9NTA7dmFyIG89MjE0NzQ4MzY0NztmdW5jdGlvbiBsKGgpe2lmKGg+byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK2grJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpO3ZhciByPW5ldyBVaW50OEFycmF5KGgpO3JldHVybiBPYmplY3Quc2V0UHJv'@; put 'dG90eXBlT2YocixpLnByb3RvdHlwZSkscn1mdW5jdGlvbiBpKGgscixhKXtpZigibnVtYmVyIj09dHlwZW9mIGgpe2lmKCJzdHJpbmciPT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQg'@; put 'dHlwZSBudW1iZXInKTtyZXR1cm4geShoKX1yZXR1cm4gdihoLHIsYSl9ZnVuY3Rpb24gdihoLHIsYSl7aWYoInN0cmluZyI9PXR5cGVvZiBoKXJldHVybiBmdW5jdGlvbiBFKGgscil7aWYoKCJzdHJpbmciIT10eXBlb2Ygcnx8IiI9PT1yKSYmKHI9InV0ZjgiKSwhaS5pc0VuY29kaW5nKHIp'@; put 'KXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7dmFyIGE9MHxQKGgsciksbT1sKGEpLHc9bS53cml0ZShoLHIpO3JldHVybiB3IT09YSYmKG09bS5zbGljZSgwLHcpKSxtfShoLHIpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhoKSlyZXR1cm4gZnVuY3Rpb24gRCho'@; put 'KXtpZihubihoLFVpbnQ4QXJyYXkpKXt2YXIgcj1uZXcgVWludDhBcnJheShoKTtyZXR1cm4gRihyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5ieXRlTGVuZ3RoKX1yZXR1cm4gZyhoKX0oaCk7aWYobnVsbD09aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBi'@; put 'ZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBoKTtpZihubihoLEFycmF5QnVmZmVyKXx8aCYmbm4oaC5idWZmZXIsQXJyYXlCdWZmZXIpfHx0eXBlb2YgU2hhcmVkQXJy'@; put 'YXlCdWZmZXI8InUiJiYobm4oaCxTaGFyZWRBcnJheUJ1ZmZlcil8fGgmJm5uKGguYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIEYoaCxyLGEpO2lmKCJudW1iZXIiPT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBi'@; put 'ZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTt2YXIgbT1oLnZhbHVlT2YmJmgudmFsdWVPZigpO2lmKG51bGwhPW0mJm0hPT1oKXJldHVybiBpLmZyb20obSxyLGEpO3ZhciB3PWZ1bmN0aW9uIHgoaCl7aWYoaS5pc0J1ZmZlcihoKSl7dmFyIHI9MHxBKGgubGVuZ3Ro'@; put 'KSxhPWwocik7cmV0dXJuIDA9PT1hLmxlbmd0aHx8aC5jb3B5KGEsMCwwLHIpLGF9cmV0dXJuIHZvaWQgMCE9PWgubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgaC5sZW5ndGh8fHluKGgubGVuZ3RoKT9sKDApOmcoaCk6IkJ1ZmZlciI9PT1oLnR5cGUmJkFycmF5LmlzQXJyYXkoaC5kYXRhKT9n'@; put 'KGguZGF0YSk6dm9pZCAwfShoKTtpZih3KXJldHVybiB3O2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBoW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIGkuZnJvbShoW1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmlu'@; put 'ZyIpLHIsYSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgaCl9ZnVuY3Rpb24gcCho'@; put 'KXtpZigibnVtYmVyIiE9dHlwZW9mIGgpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihoPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytoKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1m'@; put 'dW5jdGlvbiB5KGgpe3JldHVybiBwKGgpLGwoaDwwPzA6MHxBKGgpKX1mdW5jdGlvbiBnKGgpe2Zvcih2YXIgcj1oLmxlbmd0aDwwPzA6MHxBKGgubGVuZ3RoKSxhPWwociksbT0wO208cjttKz0xKWFbbV09MjU1JmhbbV07cmV0dXJuIGF9ZnVuY3Rpb24gRihoLHIsYSl7aWYocjwwfHxoLmJ5'@; put 'dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7aWYoaC5ieXRlTGVuZ3RoPHIrKGF8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTt2YXIgbTty'@; put 'ZXR1cm4gbT12b2lkIDA9PT1yJiZ2b2lkIDA9PT1hP25ldyBVaW50OEFycmF5KGgpOnZvaWQgMD09PWE/bmV3IFVpbnQ4QXJyYXkoaCxyKTpuZXcgVWludDhBcnJheShoLHIsYSksT2JqZWN0LnNldFByb3RvdHlwZU9mKG0saS5wcm90b3R5cGUpLG19ZnVuY3Rpb24gQShoKXtpZihoPj1vKXRo'@; put 'cm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitvLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8aH1mdW5jdGlvbiBQKGgscil7aWYoaS5pc0J1ZmZlcihoKSlyZXR1cm4gaC5sZW5ndGg7aWYo'@; put 'QXJyYXlCdWZmZXIuaXNWaWV3KGgpfHxubihoLEFycmF5QnVmZmVyKSlyZXR1cm4gaC5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3Ig'@; put 'QXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgaCk7dmFyIGE9aC5sZW5ndGgsbT1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFtJiYwPT09YSlyZXR1cm4gMDtmb3IodmFyIHc9ITE7Oylzd2l0Y2gocil7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEi'@; put 'OmNhc2UiYmluYXJ5IjpyZXR1cm4gYTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBZdChoKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKmE7Y2FzZSJoZXgiOnJldHVybiBhPj4+MTtjYXNlImJhc2U2NCI6'@; put 'cmV0dXJuIGhuKGgpLmxlbmd0aDtkZWZhdWx0OmlmKHcpcmV0dXJuIG0/LTE6WXQoaCkubGVuZ3RoO3I9KCIiK3IpLnRvTG93ZXJDYXNlKCksdz0hMH19ZnVuY3Rpb24gTShoLHIsYSl7dmFyIG09ITE7aWYoKHZvaWQgMD09PXJ8fHI8MCkmJihyPTApLHI+dGhpcy5sZW5ndGh8fCgodm9pZCAw'@; put 'PT09YXx8YT50aGlzLmxlbmd0aCkmJihhPXRoaXMubGVuZ3RoKSxhPD0wKXx8KGE+Pj49MCk8PShyPj4+PTApKXJldHVybiIiO2ZvcihofHwoaD0idXRmOCIpOzspc3dpdGNoKGgpe2Nhc2UiaGV4IjpyZXR1cm4gZHQodGhpcyxyLGEpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIHEo'@; put 'dGhpcyxyLGEpO2Nhc2UiYXNjaWkiOnJldHVybiBWKHRoaXMscixhKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBsdCh0aGlzLHIsYSk7Y2FzZSJiYXNlNjQiOnJldHVybiBtdCh0aGlzLHIsYSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRm'@; put 'LTE2bGUiOnJldHVybiBDdCh0aGlzLHIsYSk7ZGVmYXVsdDppZihtKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIraCk7aD0oaCsiIikudG9Mb3dlckNhc2UoKSxtPSEwfX1mdW5jdGlvbiBUKGgscixhKXt2YXIgbT1oW3JdO2hbcl09aFthXSxoW2FdPW19ZnVuY3Rp'@; put 'b24gYihoLHIsYSxtLHcpe2lmKDA9PT1oLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIGE/KG09YSxhPTApOmE+MjE0NzQ4MzY0Nz9hPTIxNDc0ODM2NDc6YTwtMjE0NzQ4MzY0OCYmKGE9LTIxNDc0ODM2NDgpLHluKGE9K2EpJiYoYT13PzA6aC5sZW5ndGgtMSksYTwwJiYo'@; put 'YT1oLmxlbmd0aCthKSxhPj1oLmxlbmd0aCl7aWYodylyZXR1cm4tMTthPWgubGVuZ3RoLTF9ZWxzZSBpZihhPDApe2lmKCF3KXJldHVybi0xO2E9MH1pZigic3RyaW5nIj09dHlwZW9mIHImJihyPWkuZnJvbShyLG0pKSxpLmlzQnVmZmVyKHIpKXJldHVybiAwPT09ci5sZW5ndGg/LTE6Qiho'@; put 'LHIsYSxtLHcpO2lmKCJudW1iZXIiPT10eXBlb2YgcilyZXR1cm4gciY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP3c/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGgscixhKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5k'@; put 'ZXhPZi5jYWxsKGgscixhKTpCKGgsW3JdLGEsbSx3KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBCKGgscixhLG0sdyl7dmFyIEgsSz0xLCQ9aC5sZW5ndGgsRHQ9ci5sZW5ndGg7aWYodm9pZCAwIT09bSYmKCJ1'@; put 'Y3MyIj09PShtPVN0cmluZyhtKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW18fCJ1dGYxNmxlIj09PW18fCJ1dGYtMTZsZSI9PT1tKSl7aWYoaC5sZW5ndGg8Mnx8ci5sZW5ndGg8MilyZXR1cm4tMTtLPTIsJC89MixEdC89MixhLz0yfWZ1bmN0aW9uIF8ocXQscm4pe3JldHVybiAxPT09'@; put 'Sz9xdFtybl06cXQucmVhZFVJbnQxNkJFKHJuKkspfWlmKHcpe3ZhciBRPS0xO2ZvcihIPWE7SDwkO0grKylpZihfKGgsSCk9PT1fKHIsLTE9PT1RPzA6SC1RKSl7aWYoLTE9PT1RJiYoUT1IKSxILVErMT09PUR0KXJldHVybiBRKkt9ZWxzZS0xIT09USYmKEgtPUgtUSksUT0tMX1lbHNlIGZv'@; put 'cihhK0R0PiQmJihhPSQtRHQpLEg9YTtIPj0wO0gtLSl7Zm9yKHZhciBpdD0hMCx6dD0wO3p0PER0O3p0KyspaWYoXyhoLEgrenQpIT09XyhyLHp0KSl7aXQ9ITE7YnJlYWt9aWYoaXQpcmV0dXJuIEh9cmV0dXJuLTF9ZnVuY3Rpb24gVShoLHIsYSxtKXthPU51bWJlcihhKXx8MDt2YXIgdz1o'@; put 'Lmxlbmd0aC1hO20/KG09TnVtYmVyKG0pKT53JiYobT13KTptPXc7dmFyIEs9ci5sZW5ndGg7bT5LLzImJihtPUsvMik7Zm9yKHZhciAkPTA7JDxtOysrJCl7dmFyIER0PXBhcnNlSW50KHIuc3Vic3RyKDIqJCwyKSwxNik7aWYoeW4oRHQpKXJldHVybiAkO2hbYSskXT1EdH1yZXR1cm4gJH1m'@; put 'dW5jdGlvbiBaKGgscixhLG0pe3JldHVybiBvbihZdChyLGgubGVuZ3RoLWEpLGgsYSxtKX1mdW5jdGlvbiBudChoLHIsYSxtKXtyZXR1cm4gb24oZnVuY3Rpb24gcG4oaCl7Zm9yKHZhciByPVtdLGE9MDthPGgubGVuZ3RoOysrYSlyLnB1c2goMjU1JmguY2hhckNvZGVBdChhKSk7cmV0dXJu'@; put 'IHJ9KHIpLGgsYSxtKX1mdW5jdGlvbiB0dChoLHIsYSxtKXtyZXR1cm4gb24oaG4ociksaCxhLG0pfWZ1bmN0aW9uIHl0KGgscixhLG0pe3JldHVybiBvbihmdW5jdGlvbiB4bihoLHIpe2Zvcih2YXIgYSxtLEs9W10sJD0wOyQ8aC5sZW5ndGgmJiEoKHItPTIpPDApOysrJCltPShhPWguY2hh'@; put 'ckNvZGVBdCgkKSk+PjgsSy5wdXNoKGElMjU2KSxLLnB1c2gobSk7cmV0dXJuIEt9KHIsaC5sZW5ndGgtYSksaCxhLG0pfWZ1bmN0aW9uIG10KGgscixhKXtyZXR1cm4gbi5mcm9tQnl0ZUFycmF5KDA9PT1yJiZhPT09aC5sZW5ndGg/aDpoLnNsaWNlKHIsYSkpfWZ1bmN0aW9uIHEoaCxyLGEp'@; put 'e2E9TWF0aC5taW4oaC5sZW5ndGgsYSk7Zm9yKHZhciBtPVtdLHc9cjt3PGE7KXt2YXIgXyxILFEsaXQsSz1oW3ddLCQ9bnVsbCxEdD1LPjIzOT80Oks+MjIzPzM6Sz4xOTE/MjoxO2lmKHcrRHQ8PWEpc3dpdGNoKER0KXtjYXNlIDE6SzwxMjgmJigkPUspO2JyZWFrO2Nhc2UgMjoxMjg9PSgx'@; put 'OTImKF89aFt3KzFdKSkmJihpdD0oMzEmSyk8PDZ8NjMmXyk+MTI3JiYoJD1pdCk7YnJlYWs7Y2FzZSAzOkg9aFt3KzJdLDEyOD09KDE5MiYoXz1oW3crMV0pKSYmMTI4PT0oMTkyJkgpJiYoaXQ9KDE1JkspPDwxMnwoNjMmXyk8PDZ8NjMmSCk+MjA0NyYmKGl0PDU1Mjk2fHxpdD41NzM0Mykm'@; put 'JigkPWl0KTticmVhaztjYXNlIDQ6SD1oW3crMl0sUT1oW3crM10sMTI4PT0oMTkyJihfPWhbdysxXSkpJiYxMjg9PSgxOTImSCkmJjEyOD09KDE5MiZRKSYmKGl0PSgxNSZLKTw8MTh8KDYzJl8pPDwxMnwoNjMmSCk8PDZ8NjMmUSk+NjU1MzUmJml0PDExMTQxMTImJigkPWl0KX1udWxsPT09'@; put 'JD8oJD02NTUzMyxEdD0xKTokPjY1NTM1JiYobS5wdXNoKCgkLT02NTUzNik+Pj4xMCYxMDIzfDU1Mjk2KSwkPTU2MzIwfDEwMjMmJCksbS5wdXNoKCQpLHcrPUR0fXJldHVybiBmdW5jdGlvbiBldChoKXt2YXIgcj1oLmxlbmd0aDtpZihyPD1YKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2Rl'@; put 'LmFwcGx5KFN0cmluZyxoKTtmb3IodmFyIGE9IiIsbT0wO208cjspYSs9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsaC5zbGljZShtLG0rPVgpKTtyZXR1cm4gYX0obSl9Zi5rTWF4TGVuZ3RoPW8sIShpLlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rpb24gdSgpe3RyeXt2YXIg'@; put 'aD1uZXcgVWludDhBcnJheSgxKSxyPXtmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHIsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihoLHIpLDQyPT09aC5mb28oKX1jYXRjaHtyZXR1cm4hMX19KCkpJiZ0'@; put 'eXBlb2YgY29uc29sZTwidSImJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZm'@; put 'ZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC4iKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaS5wcm90b3R5cGUsInBhcmVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoaS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2Jq'@; put 'ZWN0LmRlZmluZVByb3BlcnR5KGkucHJvdG90eXBlLCJvZmZzZXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGkuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KSxpLnBvb2xTaXplPTgxOTIsaS5mcm9tPWZ1bmN0aW9uKGgscixhKXtyZXR1cm4gdiho'@; put 'LHIsYSl9LE9iamVjdC5zZXRQcm90b3R5cGVPZihpLnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGksVWludDhBcnJheSksaS5hbGxvYz1mdW5jdGlvbihoLHIsYSl7cmV0dXJuIGZ1bmN0aW9uIGQoaCxyLGEpe3JldHVybiBwKGgpLGg8PTA/'@; put 'bChoKTp2b2lkIDAhPT1yPyJzdHJpbmciPT10eXBlb2YgYT9sKGgpLmZpbGwocixhKTpsKGgpLmZpbGwocik6bChoKX0oaCxyLGEpfSxpLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGgpe3JldHVybiB5KGgpfSxpLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihoKXtyZXR1cm4geShoKX0saS5pc0J1'@; put 'ZmZlcj1mdW5jdGlvbihyKXtyZXR1cm4gbnVsbCE9ciYmITA9PT1yLl9pc0J1ZmZlciYmciE9PWkucHJvdG90eXBlfSxpLmNvbXBhcmU9ZnVuY3Rpb24ocixhKXtpZihubihyLFVpbnQ4QXJyYXkpJiYocj1pLmZyb20ocixyLm9mZnNldCxyLmJ5dGVMZW5ndGgpKSxubihhLFVpbnQ4QXJyYXkp'@; put 'JiYoYT1pLmZyb20oYSxhLm9mZnNldCxhLmJ5dGVMZW5ndGgpKSwhaS5pc0J1ZmZlcihyKXx8IWkuaXNCdWZmZXIoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJidWYxIiwgImJ1ZjIiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYo'@; put 'cj09PWEpcmV0dXJuIDA7Zm9yKHZhciBtPXIubGVuZ3RoLHc9YS5sZW5ndGgsSz0wLCQ9TWF0aC5taW4obSx3KTtLPCQ7KytLKWlmKHJbS10hPT1hW0tdKXttPXJbS10sdz1hW0tdO2JyZWFrfXJldHVybiBtPHc/LTE6dzxtPzE6MH0saS5pc0VuY29kaW5nPWZ1bmN0aW9uKHIpe3N3aXRjaChT'@; put 'dHJpbmcocikudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVy'@; put 'biEwO2RlZmF1bHQ6cmV0dXJuITF9fSxpLmNvbmNhdD1mdW5jdGlvbihyLGEpe2lmKCFBcnJheS5pc0FycmF5KHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ci5sZW5ndGgpcmV0dXJuIGkuYWxsb2Mo'@; put 'MCk7dmFyIG07aWYodm9pZCAwPT09YSlmb3IoYT0wLG09MDttPHIubGVuZ3RoOysrbSlhKz1yW21dLmxlbmd0aDt2YXIgdz1pLmFsbG9jVW5zYWZlKGEpLEs9MDtmb3IobT0wO208ci5sZW5ndGg7KyttKXt2YXIgJD1yW21dO2lmKG5uKCQsVWludDhBcnJheSkpSyskLmxlbmd0aD53Lmxlbmd0'@; put 'aD9pLmZyb20oJCkuY29weSh3LEspOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKHcsJCxLKTtlbHNle2lmKCFpLmlzQnVmZmVyKCQpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTskLmNvcHkodyxLKX1LKz0k'@; put 'Lmxlbmd0aH1yZXR1cm4gd30saS5ieXRlTGVuZ3RoPVAsaS5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLGkucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciByPXRoaXMubGVuZ3RoO2lmKHIlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRp'@; put 'cGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIGE9MDthPHI7YSs9MilUKHRoaXMsYSxhKzEpO3JldHVybiB0aGlzfSxpLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLmxlbmd0aDtpZihyJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUg'@; put 'YSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciBhPTA7YTxyO2ErPTQpVCh0aGlzLGEsYSszKSxUKHRoaXMsYSsxLGErMik7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciByPXRoaXMubGVuZ3RoO2lmKHIlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJv'@; put 'cigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIGE9MDthPHI7YSs9OClUKHRoaXMsYSxhKzcpLFQodGhpcyxhKzEsYSs2KSxUKHRoaXMsYSsyLGErNSksVCh0aGlzLGErMyxhKzQpO3JldHVybiB0aGlzfSxpLnByb3RvdHlwZS50b1N0cmluZz1m'@; put 'dW5jdGlvbigpe3ZhciByPXRoaXMubGVuZ3RoO3JldHVybiAwPT09cj8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9xKHRoaXMsMCxyKTpNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9aS5wcm90b3R5cGUudG9TdHJpbmcsaS5wcm90b3R5cGUuZXF1'@; put 'YWxzPWZ1bmN0aW9uKHIpe2lmKCFpLmlzQnVmZmVyKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PXJ8fDA9PT1pLmNvbXBhcmUodGhpcyxyKX0saS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciByPSIiLGE9'@; put 'Zi5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gcj10aGlzLnRvU3RyaW5nKCJoZXgiLDAsYSkucmVwbGFjZSgvKC57Mn0pL2csIiQxICIpLnRyaW0oKSx0aGlzLmxlbmd0aD5hJiYocis9IiAuLi4gIiksIjxCdWZmZXIgIityKyI+In0scyYmKGkucHJvdG90eXBlW3NdPWkucHJvdG90eXBlLmlu'@; put 'c3BlY3QpLGkucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24ocixhLG0sdyxLKXtpZihubihyLFVpbnQ4QXJyYXkpJiYocj1pLmZyb20ocixyLm9mZnNldCxyLmJ5dGVMZW5ndGgpKSwhaS5pc0J1ZmZlcihyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVz'@; put 'dCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiByKTtpZih2b2lkIDA9PT1hJiYoYT0wKSx2b2lkIDA9PT1tJiYobT1yP3IubGVuZ3RoOjApLHZvaWQgMD09PXcmJih3PTApLHZvaWQgMD09PUsmJihLPXRoaXMubGVuZ3RoKSxhPDB8'@; put 'fG0+ci5sZW5ndGh8fHc8MHx8Sz50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYodz49SyYmYT49bSlyZXR1cm4gMDtpZih3Pj1LKXJldHVybi0xO2lmKGE+PW0pcmV0dXJuIDE7aWYodGhpcz09PXIpcmV0dXJuIDA7Zm9yKHZhciAkPShL'@; put 'Pj4+PTApLSh3Pj4+PTApLER0PShtPj4+PTApLShhPj4+PTApLF89TWF0aC5taW4oJCxEdCksSD10aGlzLnNsaWNlKHcsSyksUT1yLnNsaWNlKGEsbSksaXQ9MDtpdDxfOysraXQpaWYoSFtpdF0hPT1RW2l0XSl7JD1IW2l0XSxEdD1RW2l0XTticmVha31yZXR1cm4gJDxEdD8tMTpEdDwkPzE6'@; put 'MH0saS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24ocixhLG0pe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHIsYSxtKX0saS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihyLGEsbSl7cmV0dXJuIGIodGhpcyxyLGEsbSwhMCl9LGkucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9u'@; put 'KHIsYSxtKXtyZXR1cm4gYih0aGlzLHIsYSxtLCExKX0saS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24ocixhLG0sdyl7aWYodm9pZCAwPT09YSl3PSJ1dGY4IixtPXRoaXMubGVuZ3RoLGE9MDtlbHNlIGlmKHZvaWQgMD09PW0mJiJzdHJpbmciPT10eXBlb2YgYSl3PWEsbT10aGlzLmxlbmd0'@; put 'aCxhPTA7ZWxzZXtpZighaXNGaW5pdGUoYSkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO2E+Pj49MCxpc0Zpbml0ZShtKT8obT4+Pj0wLHZvaWQgMD09PXcmJih3PSJ1dGY4'@; put 'IikpOih3PW0sbT12b2lkIDApfXZhciBLPXRoaXMubGVuZ3RoLWE7aWYoKHZvaWQgMD09PW18fG0+SykmJihtPUspLHIubGVuZ3RoPjAmJihtPDB8fGE8MCl8fGE+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRz'@; put 'Iik7d3x8KHc9InV0ZjgiKTtmb3IodmFyICQ9ITE7Oylzd2l0Y2godyl7Y2FzZSJoZXgiOnJldHVybiBVKHRoaXMscixhLG0pO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIFoodGhpcyxyLGEsbSk7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gbnQo'@; put 'dGhpcyxyLGEsbSk7Y2FzZSJiYXNlNjQiOnJldHVybiB0dCh0aGlzLHIsYSxtKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIHl0KHRoaXMscixhLG0pO2RlZmF1bHQ6aWYoJCl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVu'@; put 'Y29kaW5nOiAiK3cpO3c9KCIiK3cpLnRvTG93ZXJDYXNlKCksJD0hMH19LGkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIFg9NDA5NjtmdW5jdGlv'@; put 'biBWKGgscixhKXt2YXIgbT0iIjthPU1hdGgubWluKGgubGVuZ3RoLGEpO2Zvcih2YXIgdz1yO3c8YTsrK3cpbSs9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmaFt3XSk7cmV0dXJuIG19ZnVuY3Rpb24gbHQoaCxyLGEpe3ZhciBtPSIiO2E9TWF0aC5taW4oaC5sZW5ndGgsYSk7Zm9yKHZhciB3'@; put 'PXI7dzxhOysrdyltKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGhbd10pO3JldHVybiBtfWZ1bmN0aW9uIGR0KGgscixhKXt2YXIgbT1oLmxlbmd0aDsoIXJ8fHI8MCkmJihyPTApLCghYXx8YTwwfHxhPm0pJiYoYT1tKTtmb3IodmFyIHc9IiIsSz1yO0s8YTsrK0spdys9VG5baFtLXV07cmV0dXJu'@; put 'IHd9ZnVuY3Rpb24gQ3QoaCxyLGEpe2Zvcih2YXIgbT1oLnNsaWNlKHIsYSksdz0iIixLPTA7SzxtLmxlbmd0aC0xO0srPTIpdys9U3RyaW5nLmZyb21DaGFyQ29kZShtW0tdKzI1NiptW0srMV0pO3JldHVybiB3fWZ1bmN0aW9uIE90KGgscixhKXtpZihoJTEhPTB8fGg8MCl0aHJvdyBuZXcg'@; put 'UmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoaCtyPmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBOdChoLHIsYSxtLHcsSyl7aWYoIWkuaXNCdWZmZXIoaCkpdGhyb3cgbmV3IFR5cGVFcnJv'@; put 'cignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHI+d3x8cjxLKXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihhK20+aC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91'@; put 'dCBvZiByYW5nZSIpfWZ1bmN0aW9uIFF0KGgscixhLG0sdyxLKXtpZihhK20+aC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKGE8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gYW4oaCxyLGEs'@; put 'bSx3KXtyZXR1cm4gcj0rcixhPj4+PTAsd3x8UXQoaCwwLGEsNCksZS53cml0ZShoLHIsYSxtLDIzLDQpLGErNH1mdW5jdGlvbiBHdChoLHIsYSxtLHcpe3JldHVybiByPStyLGE+Pj49MCx3fHxRdChoLDAsYSw4KSxlLndyaXRlKGgscixhLG0sNTIsOCksYSs4fWkucHJvdG90eXBlLnNsaWNl'@; put 'PWZ1bmN0aW9uKHIsYSl7dmFyIG09dGhpcy5sZW5ndGg7KHI9fn5yKTwwPyhyKz1tKTwwJiYocj0wKTpyPm0mJihyPW0pLChhPXZvaWQgMD09PWE/bTp+fmEpPDA/KGErPW0pPDAmJihhPTApOmE+bSYmKGE9bSksYTxyJiYoYT1yKTt2YXIgdz10aGlzLnN1YmFycmF5KHIsYSk7cmV0dXJuIE9i'@; put 'amVjdC5zZXRQcm90b3R5cGVPZih3LGkucHJvdG90eXBlKSx3fSxpLnByb3RvdHlwZS5yZWFkVWludExFPWkucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24ocixhLG0pe3I+Pj49MCxhPj4+PTAsbXx8T3QocixhLHRoaXMubGVuZ3RoKTtmb3IodmFyIHc9dGhpc1tyXSxLPTEsJD0wOysr'@; put 'JDxhJiYoSyo9MjU2KTspdys9dGhpc1tyKyRdKks7cmV0dXJuIHd9LGkucHJvdG90eXBlLnJlYWRVaW50QkU9aS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihyLGEsbSl7cj4+Pj0wLGE+Pj49MCxtfHxPdChyLGEsdGhpcy5sZW5ndGgpO2Zvcih2YXIgdz10aGlzW3IrLS1hXSxLPTE7'@; put 'YT4wJiYoSyo9MjU2KTspdys9dGhpc1tyKy0tYV0qSztyZXR1cm4gd30saS5wcm90b3R5cGUucmVhZFVpbnQ4PWkucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8T3QociwxLHRoaXMubGVuZ3RoKSx0aGlzW3JdfSxpLnByb3RvdHlwZS5yZWFkVWlu'@; put 'dDE2TEU9aS5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxPdChyLDIsdGhpcy5sZW5ndGgpLHRoaXNbcl18dGhpc1tyKzFdPDw4fSxpLnByb3RvdHlwZS5yZWFkVWludDE2QkU9aS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHIs'@; put 'YSl7cmV0dXJuIHI+Pj49MCxhfHxPdChyLDIsdGhpcy5sZW5ndGgpLHRoaXNbcl08PDh8dGhpc1tyKzFdfSxpLnByb3RvdHlwZS5yZWFkVWludDMyTEU9aS5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxPdChyLDQsdGhpcy5sZW5ndGgpLCh0'@; put 'aGlzW3JdfHRoaXNbcisxXTw8OHx0aGlzW3IrMl08PDE2KSsxNjc3NzIxNip0aGlzW3IrM119LGkucHJvdG90eXBlLnJlYWRVaW50MzJCRT1pLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24ocixhKXtyZXR1cm4gcj4+Pj0wLGF8fE90KHIsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYq'@; put 'dGhpc1tyXSsodGhpc1tyKzFdPDwxNnx0aGlzW3IrMl08PDh8dGhpc1tyKzNdKX0saS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKHIsYSxtKXtyPj4+PTAsYT4+Pj0wLG18fE90KHIsYSx0aGlzLmxlbmd0aCk7Zm9yKHZhciB3PXRoaXNbcl0sSz0xLCQ9MDsrKyQ8YSYmKEsqPTI1Nik7'@; put 'KXcrPXRoaXNbciskXSpLO3JldHVybiB3Pj0oSyo9MTI4KSYmKHctPU1hdGgucG93KDIsOCphKSksd30saS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHIsYSxtKXtyPj4+PTAsYT4+Pj0wLG18fE90KHIsYSx0aGlzLmxlbmd0aCk7Zm9yKHZhciB3PWEsSz0xLCQ9dGhpc1tyKy0td107'@; put 'dz4wJiYoSyo9MjU2KTspJCs9dGhpc1tyKy0td10qSztyZXR1cm4gJD49KEsqPTEyOCkmJigkLT1NYXRoLnBvdygyLDgqYSkpLCR9LGkucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxPdChyLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW3JdPy0xKigy'@; put 'NTUtdGhpc1tyXSsxKTp0aGlzW3JdfSxpLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihyLGEpe3I+Pj49MCxhfHxPdChyLDIsdGhpcy5sZW5ndGgpO3ZhciBtPXRoaXNbcl18dGhpc1tyKzFdPDw4O3JldHVybiAzMjc2OCZtPzQyOTQ5MDE3NjB8bTptfSxpLnByb3RvdHlwZS5yZWFk'@; put 'SW50MTZCRT1mdW5jdGlvbihyLGEpe3I+Pj49MCxhfHxPdChyLDIsdGhpcy5sZW5ndGgpO3ZhciBtPXRoaXNbcisxXXx0aGlzW3JdPDw4O3JldHVybiAzMjc2OCZtPzQyOTQ5MDE3NjB8bTptfSxpLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8'@; put 'T3Qociw0LHRoaXMubGVuZ3RoKSx0aGlzW3JdfHRoaXNbcisxXTw8OHx0aGlzW3IrMl08PDE2fHRoaXNbciszXTw8MjR9LGkucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxPdChyLDQsdGhpcy5sZW5ndGgpLHRoaXNbcl08PDI0fHRoaXNbcisx'@; put 'XTw8MTZ8dGhpc1tyKzJdPDw4fHRoaXNbciszXX0saS5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24ocixhKXtyZXR1cm4gcj4+Pj0wLGF8fE90KHIsNCx0aGlzLmxlbmd0aCksZS5yZWFkKHRoaXMsciwhMCwyMyw0KX0saS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24ocixh'@; put 'KXtyZXR1cm4gcj4+Pj0wLGF8fE90KHIsNCx0aGlzLmxlbmd0aCksZS5yZWFkKHRoaXMsciwhMSwyMyw0KX0saS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxPdChyLDgsdGhpcy5sZW5ndGgpLGUucmVhZCh0aGlzLHIsITAsNTIsOCl9LGku'@; put 'cHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8T3Qociw4LHRoaXMubGVuZ3RoKSxlLnJlYWQodGhpcyxyLCExLDUyLDgpfSxpLnByb3RvdHlwZS53cml0ZVVpbnRMRT1pLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihyLGEsbSx3KXty'@; put 'PStyLGE+Pj49MCxtPj4+PTAsd3x8TnQodGhpcyxyLGEsbSxNYXRoLnBvdygyLDgqbSktMSwwKTt2YXIgJD0xLER0PTA7Zm9yKHRoaXNbYV09MjU1JnI7KytEdDxtJiYoJCo9MjU2KTspdGhpc1thK0R0XT1yLyQmMjU1O3JldHVybiBhK219LGkucHJvdG90eXBlLndyaXRlVWludEJFPWkucHJv'@; put 'dG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHIsYSxtLHcpe3I9K3IsYT4+Pj0wLG0+Pj49MCx3fHxOdCh0aGlzLHIsYSxtLE1hdGgucG93KDIsOCptKS0xLDApO3ZhciAkPW0tMSxEdD0xO2Zvcih0aGlzW2ErJF09MjU1JnI7LS0kPj0wJiYoRHQqPTI1Nik7KXRoaXNbYSskXT1yL0R0JjI1'@; put 'NTtyZXR1cm4gYSttfSxpLnByb3RvdHlwZS53cml0ZVVpbnQ4PWkucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24ocixhLG0pe3JldHVybiByPStyLGE+Pj49MCxtfHxOdCh0aGlzLHIsYSwxLDI1NSwwKSx0aGlzW2FdPTI1NSZyLGErMX0saS5wcm90b3R5cGUud3JpdGVVaW50MTZMRT1p'@; put 'LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8TnQodGhpcyxyLGEsMiw2NTUzNSwwKSx0aGlzW2FdPTI1NSZyLHRoaXNbYSsxXT1yPj4+OCxhKzJ9LGkucHJvdG90eXBlLndyaXRlVWludDE2QkU9aS5wcm90b3R5cGUud3JpdGVV'@; put 'SW50MTZCRT1mdW5jdGlvbihyLGEsbSl7cmV0dXJuIHI9K3IsYT4+Pj0wLG18fE50KHRoaXMscixhLDIsNjU1MzUsMCksdGhpc1thXT1yPj4+OCx0aGlzW2ErMV09MjU1JnIsYSsyfSxpLnByb3RvdHlwZS53cml0ZVVpbnQzMkxFPWkucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24o'@; put 'cixhLG0pe3JldHVybiByPStyLGE+Pj49MCxtfHxOdCh0aGlzLHIsYSw0LDQyOTQ5NjcyOTUsMCksdGhpc1thKzNdPXI+Pj4yNCx0aGlzW2ErMl09cj4+PjE2LHRoaXNbYSsxXT1yPj4+OCx0aGlzW2FdPTI1NSZyLGErNH0saS5wcm90b3R5cGUud3JpdGVVaW50MzJCRT1pLnByb3RvdHlwZS53'@; put 'cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8TnQodGhpcyxyLGEsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbYV09cj4+PjI0LHRoaXNbYSsxXT1yPj4+MTYsdGhpc1thKzJdPXI+Pj44LHRoaXNbYSszXT0yNTUmcixhKzR9LGkucHJvdG90eXBlLndyaXRl'@; put 'SW50TEU9ZnVuY3Rpb24ocixhLG0sdyl7aWYocj0rcixhPj4+PTAsIXcpe3ZhciBLPU1hdGgucG93KDIsOCptLTEpO050KHRoaXMscixhLG0sSy0xLC1LKX12YXIgJD0wLER0PTEsXz0wO2Zvcih0aGlzW2FdPTI1NSZyOysrJDxtJiYoRHQqPTI1Nik7KXI8MCYmMD09PV8mJjAhPT10aGlzW2Er'@; put 'JC0xXSYmKF89MSksdGhpc1thKyRdPShyL0R0fDApLV8mMjU1O3JldHVybiBhK219LGkucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24ocixhLG0sdyl7aWYocj0rcixhPj4+PTAsIXcpe3ZhciBLPU1hdGgucG93KDIsOCptLTEpO050KHRoaXMscixhLG0sSy0xLC1LKX12YXIgJD1tLTEs'@; put 'RHQ9MSxfPTA7Zm9yKHRoaXNbYSskXT0yNTUmcjstLSQ+PTAmJihEdCo9MjU2KTspcjwwJiYwPT09XyYmMCE9PXRoaXNbYSskKzFdJiYoXz0xKSx0aGlzW2ErJF09KHIvRHR8MCktXyYyNTU7cmV0dXJuIGErbX0saS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4g'@; put 'cj0rcixhPj4+PTAsbXx8TnQodGhpcyxyLGEsMSwxMjcsLTEyOCkscjwwJiYocj0yNTUrcisxKSx0aGlzW2FdPTI1NSZyLGErMX0saS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8TnQodGhpcyxyLGEsMiwzMjc2NywtMzI3Njgp'@; put 'LHRoaXNbYV09MjU1JnIsdGhpc1thKzFdPXI+Pj44LGErMn0saS5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8TnQodGhpcyxyLGEsMiwzMjc2NywtMzI3NjgpLHRoaXNbYV09cj4+PjgsdGhpc1thKzFdPTI1NSZyLGErMn0saS5w'@; put 'cm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8TnQodGhpcyxyLGEsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2FdPTI1NSZyLHRoaXNbYSsxXT1yPj4+OCx0aGlzW2ErMl09cj4+PjE2LHRoaXNbYSszXT1yPj4+MjQsYSs0'@; put 'fSxpLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24ocixhLG0pe3JldHVybiByPStyLGE+Pj49MCxtfHxOdCh0aGlzLHIsYSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHI8MCYmKHI9NDI5NDk2NzI5NStyKzEpLHRoaXNbYV09cj4+PjI0LHRoaXNbYSsxXT1yPj4+MTYsdGhpc1th'@; put 'KzJdPXI+Pj44LHRoaXNbYSszXT0yNTUmcixhKzR9LGkucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihyLGEsbSl7cmV0dXJuIGFuKHRoaXMscixhLCEwLG0pfSxpLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24ocixhLG0pe3JldHVybiBhbih0aGlzLHIsYSwhMSxtKX0s'@; put 'aS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihyLGEsbSl7cmV0dXJuIEd0KHRoaXMscixhLCEwLG0pfSxpLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gR3QodGhpcyxyLGEsITEsbSl9LGkucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24ocixh'@; put 'LG0sdyl7aWYoIWkuaXNCdWZmZXIocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyIik7aWYobXx8KG09MCksIXcmJjAhPT13JiYodz10aGlzLmxlbmd0aCksYT49ci5sZW5ndGgmJihhPXIubGVuZ3RoKSxhfHwoYT0wKSx3PjAmJnc8bSYmKHc9bSks'@; put 'dz09PW18fDA9PT1yLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKGE8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG08MHx8bT49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5n'@; put 'ZSIpO2lmKHc8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTt3PnRoaXMubGVuZ3RoJiYodz10aGlzLmxlbmd0aCksci5sZW5ndGgtYTx3LW0mJih3PXIubGVuZ3RoLWErbSk7dmFyIEs9dy1tO3JldHVybiB0aGlzPT09ciYmImZ1bmN0aW9uIj09dHlw'@; put 'ZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4/dGhpcy5jb3B5V2l0aGluKGEsbSx3KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChyLHRoaXMuc3ViYXJyYXkobSx3KSxhKSxLfSxpLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKHIsYSxtLHcpe2lmKCJzdHJpbmciPT10'@; put 'eXBlb2Ygcil7aWYoInN0cmluZyI9PXR5cGVvZiBhPyh3PWEsYT0wLG09dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgbSYmKHc9bSxtPXRoaXMubGVuZ3RoKSx2b2lkIDAhPT13JiYic3RyaW5nIiE9dHlwZW9mIHcpdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBh'@; put 'IHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgdyYmIWkuaXNFbmNvZGluZyh3KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3cpO2lmKDE9PT1yLmxlbmd0aCl7dmFyIEs9ci5jaGFyQ29kZUF0KDApOygidXRmOCI9PT13JiZLPDEyOHx8ImxhdGluMSI9PT13'@; put 'KSYmKHI9Syl9fWVsc2UibnVtYmVyIj09dHlwZW9mIHI/ciY9MjU1OiJib29sZWFuIj09dHlwZW9mIHImJihyPU51bWJlcihyKSk7aWYoYTwwfHx0aGlzLmxlbmd0aDxhfHx0aGlzLmxlbmd0aDxtKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihtPD1hKXJl'@; put 'dHVybiB0aGlzO3ZhciAkO2lmKGE+Pj49MCxtPXZvaWQgMD09PW0/dGhpcy5sZW5ndGg6bT4+PjAscnx8KHI9MCksIm51bWJlciI9PXR5cGVvZiByKWZvcigkPWE7JDxtOysrJCl0aGlzWyRdPXI7ZWxzZXt2YXIgRHQ9aS5pc0J1ZmZlcihyKT9yOmkuZnJvbShyLHcpLF89RHQubGVuZ3RoO2lm'@; put 'KDA9PT1fKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSAiJytyKyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3IoJD0wOyQ8bS1hOysrJCl0aGlzWyQrYV09RHRbJCVfXX1yZXR1cm4gdGhpc307dmFyIHNuPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24g'@; put 'WXQoaCxyKXtyPXJ8fDEvMDtmb3IodmFyIGEsbT1oLmxlbmd0aCx3PW51bGwsSz1bXSwkPTA7JDxtOysrJCl7aWYoKGE9aC5jaGFyQ29kZUF0KCQpKT41NTI5NSYmYTw1NzM0NCl7aWYoIXcpe2lmKGE+NTYzMTkpeyhyLT0zKT4tMSYmSy5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZigk'@; put 'KzE9PT1tKXsoci09Myk+LTEmJksucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9dz1hO2NvbnRpbnVlfWlmKGE8NTYzMjApeyhyLT0zKT4tMSYmSy5wdXNoKDIzOSwxOTEsMTg5KSx3PWE7Y29udGludWV9YT02NTUzNisody01NTI5Njw8MTB8YS01NjMyMCl9ZWxzZSB3JiYoci09Myk+LTEm'@; put 'JksucHVzaCgyMzksMTkxLDE4OSk7aWYodz1udWxsLGE8MTI4KXtpZigoci09MSk8MClicmVhaztLLnB1c2goYSl9ZWxzZSBpZihhPDIwNDgpe2lmKChyLT0yKTwwKWJyZWFrO0sucHVzaChhPj42fDE5Miw2MyZhfDEyOCl9ZWxzZSBpZihhPDY1NTM2KXtpZigoci09Myk8MClicmVhaztLLnB1'@; put 'c2goYT4+MTJ8MjI0LGE+PjYmNjN8MTI4LDYzJmF8MTI4KX1lbHNle2lmKCEoYTwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKChyLT00KTwwKWJyZWFrO0sucHVzaChhPj4xOHwyNDAsYT4+MTImNjN8MTI4LGE+PjYmNjN8MTI4LDYzJmF8MTI4KX19'@; put 'cmV0dXJuIEt9ZnVuY3Rpb24gaG4oaCl7cmV0dXJuIG4udG9CeXRlQXJyYXkoZnVuY3Rpb24gRW4oaCl7aWYoKGg9KGg9aC5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZShzbiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7aC5sZW5ndGglNCE9MDspaCs9Ij0iO3JldHVybiBofSho'@; put 'KSl9ZnVuY3Rpb24gb24oaCxyLGEsbSl7Zm9yKHZhciB3PTA7dzxtJiYhKHcrYT49ci5sZW5ndGh8fHc+PWgubGVuZ3RoKTsrK3cpclt3K2FdPWhbd107cmV0dXJuIHd9ZnVuY3Rpb24gbm4oaCxyKXtyZXR1cm4gaCBpbnN0YW5jZW9mIHJ8fG51bGwhPWgmJm51bGwhPWguY29uc3RydWN0b3Im'@; put 'Jm51bGwhPWguY29uc3RydWN0b3IubmFtZSYmaC5jb25zdHJ1Y3Rvci5uYW1lPT09ci5uYW1lfWZ1bmN0aW9uIHluKGgpe3JldHVybiBoIT1ofXZhciBUbj1mdW5jdGlvbigpe2Zvcih2YXIgaD0iMDEyMzQ1Njc4OWFiY2RlZiIscj1uZXcgQXJyYXkoMjU2KSxhPTA7YTwxNjsrK2EpZm9yKHZh'@; put 'ciBtPTE2KmEsdz0wO3c8MTY7Kyt3KXJbbSt3XT1oW2FdK2hbd107cmV0dXJuIHJ9KCl9LDIyMDIwKGMsZil7Zi5yZWFkPWZ1bmN0aW9uKHQsbixlLHMsbyl7dmFyIHUsbCxpPTgqby1zLTEsdj0oMTw8aSktMSxwPXY+PjEsZD0tNyx5PWU/by0xOjAsRT1lPy0xOjEsZz10W24reV07Zm9yKHkr'@; put 'PUUsdT1nJigxPDwtZCktMSxnPj49LWQsZCs9aTtkPjA7dT0yNTYqdSt0W24reV0seSs9RSxkLT04KTtmb3IobD11JigxPDwtZCktMSx1Pj49LWQsZCs9cztkPjA7bD0yNTYqbCt0W24reV0seSs9RSxkLT04KTtpZigwPT09dSl1PTEtcDtlbHNle2lmKHU9PT12KXJldHVybiBsP05hTjoxLzAq'@; put 'KGc/LTE6MSk7bCs9TWF0aC5wb3coMixzKSx1LT1wfXJldHVybihnPy0xOjEpKmwqTWF0aC5wb3coMix1LXMpfSxmLndyaXRlPWZ1bmN0aW9uKHQsbixlLHMsbyx1KXt2YXIgbCxpLHYscD04KnUtby0xLGQ9KDE8PHApLTEseT1kPj4xLEU9MjM9PT1vP01hdGgucG93KDIsLTI0KS1NYXRoLnBv'@; put 'dygyLC03Nyk6MCxnPXM/MDp1LTEsRD1zPzE6LTEsRj1uPDB8fDA9PT1uJiYxL248MD8xOjA7Zm9yKG49TWF0aC5hYnMobiksaXNOYU4obil8fG49PT0xLzA/KGk9aXNOYU4obik/MTowLGw9ZCk6KGw9TWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMiksbioodj1NYXRoLnBvdygyLC1s'@; put 'KSk8MSYmKGwtLSx2Kj0yKSwobis9bCt5Pj0xP0UvdjpFKk1hdGgucG93KDIsMS15KSkqdj49MiYmKGwrKyx2Lz0yKSxsK3k+PWQ/KGk9MCxsPWQpOmwreT49MT8oaT0obip2LTEpKk1hdGgucG93KDIsbyksbCs9eSk6KGk9bipNYXRoLnBvdygyLHktMSkqTWF0aC5wb3coMixvKSxsPTApKTtv'@; put 'Pj04O3RbZStnXT0yNTUmaSxnKz1ELGkvPTI1NixvLT04KTtmb3IobD1sPDxvfGkscCs9bztwPjA7dFtlK2ddPTI1NSZsLGcrPUQsbC89MjU2LHAtPTgpO3RbZStnLURdfD0xMjgqRn19LDk2OTM1KCl7InVzZSBzdHJpY3QiO2NvbnN0IGM9Z2xvYmFsVGhpcztmdW5jdGlvbiBmKFMpe3JldHVy'@; put 'bihjLl9fWm9uZV9zeW1ib2xfcHJlZml4fHwiX196b25lX3N5bWJvbF9fIikrU31jb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iscz1PYmplY3QuZGVmaW5lUHJvcGVydHksbz1PYmplY3QuZ2V0UHJvdG90eXBlT2YsdT1PYmplY3QuY3JlYXRlLGw9QXJyYXkucHJvdG90'@; put 'eXBlLnNsaWNlLGk9ImFkZEV2ZW50TGlzdGVuZXIiLHY9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHA9ZihpKSxkPWYodikseT0idHJ1ZSIsRT0iZmFsc2UiLGc9ZigiIik7ZnVuY3Rpb24gRChTLFIpe3JldHVybiBab25lLmN1cnJlbnQud3JhcChTLFIpfWZ1bmN0aW9uIEYoUyxSLEwsTyxOKXty'@; put 'ZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKFMsUixMLE8sTil9Y29uc3QgeD1mLEE9dHlwZW9mIHdpbmRvdzwidSIsaz1BP3dpbmRvdzp2b2lkIDAsUD1BJiZrfHxnbG9iYWxUaGlzO2Z1bmN0aW9uIFQoUyxSKXtmb3IobGV0IEw9Uy5sZW5ndGgtMTtMPj0wO0wtLSkiZnVu'@; put 'Y3Rpb24iPT10eXBlb2YgU1tMXSYmKFNbTF09RChTW0xdLFIrIl8iK0wpKTtyZXR1cm4gU31mdW5jdGlvbiBCKFMpe3JldHVybiFTfHwhMSE9PVMud3JpdGFibGUmJiEoImZ1bmN0aW9uIj09dHlwZW9mIFMuZ2V0JiZ0eXBlb2YgUy5zZXQ+InUiKX1jb25zdCBVPXR5cGVvZiBXb3JrZXJHbG9i'@; put 'YWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxaPSEoIm53ImluIFApJiZ0eXBlb2YgUC5wcm9jZXNzPCJ1IiYmIltvYmplY3QgcHJvY2Vzc10iPT09UC5wcm9jZXNzLnRvU3RyaW5nKCksbnQ9IVomJiFVJiYhKCFBfHwhay5IVE1MRWxlbWVudCksdHQ9dHlw'@; put 'ZW9mIFAucHJvY2VzczwidSImJiJbb2JqZWN0IHByb2Nlc3NdIj09PVAucHJvY2Vzcy50b1N0cmluZygpJiYhVSYmISghQXx8IWsuSFRNTEVsZW1lbnQpLHl0PXt9LG10PXgoImVuYWJsZV9iZWZvcmV1bmxvYWQiKSxxPWZ1bmN0aW9uKFMpe2lmKCEoUz1TfHxQLmV2ZW50KSlyZXR1cm47bGV0'@; put 'IFI9eXRbUy50eXBlXTtSfHwoUj15dFtTLnR5cGVdPXgoIk9OX1BST1BFUlRZIitTLnR5cGUpKTtjb25zdCBMPXRoaXN8fFMudGFyZ2V0fHxQLE89TFtSXTtsZXQgTjtyZXR1cm4gbnQmJkw9PT1rJiYiZXJyb3IiPT09Uy50eXBlPyhOPU8mJk8uY2FsbCh0aGlzLFMubWVzc2FnZSxTLmZpbGVu'@; put 'YW1lLFMubGluZW5vLFMuY29sbm8sUy5lcnJvciksITA9PT1OJiZTLnByZXZlbnREZWZhdWx0KCkpOihOPU8mJk8uYXBwbHkodGhpcyxhcmd1bWVudHMpLCJiZWZvcmV1bmxvYWQiPT09Uy50eXBlJiZQW210XSYmInN0cmluZyI9PXR5cGVvZiBOP1MucmV0dXJuVmFsdWU9TjpudWxsIT1OJiYh'@; put 'TiYmUy5wcmV2ZW50RGVmYXVsdCgpKSxOfTtmdW5jdGlvbiBYKFMsUixMKXtsZXQgTz1lKFMsUik7aWYoIU8mJkwmJmUoTCxSKSYmKE89e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksIU98fCFPLmNvbmZpZ3VyYWJsZSlyZXR1cm47Y29uc3QgTj14KCJvbiIrUisicGF0Y2hlZCIp'@; put 'O2lmKFMuaGFzT3duUHJvcGVydHkoTikmJlNbTl0pcmV0dXJuO2RlbGV0ZSBPLndyaXRhYmxlLGRlbGV0ZSBPLnZhbHVlO2NvbnN0IEo9Ty5nZXQsc3Q9Ty5zZXQsb3Q9Ui5zbGljZSgyKTtsZXQgZnQ9eXRbb3RdO2Z0fHwoZnQ9eXRbb3RdPXgoIk9OX1BST1BFUlRZIitvdCkpLE8uc2V0PWZ1'@; put 'bmN0aW9uKFN0KXtsZXQgcnQ9dGhpczshcnQmJlM9PT1QJiYocnQ9UCkscnQmJigiZnVuY3Rpb24iPT10eXBlb2YgcnRbZnRdJiZydC5yZW1vdmVFdmVudExpc3RlbmVyKG90LHEpLHN0Py5jYWxsKHJ0LG51bGwpLHJ0W2Z0XT1TdCwiZnVuY3Rpb24iPT10eXBlb2YgU3QmJnJ0LmFkZEV2ZW50'@; put 'TGlzdGVuZXIob3QscSwhMSkpfSxPLmdldD1mdW5jdGlvbigpe2xldCBTdD10aGlzO2lmKCFTdCYmUz09PVAmJihTdD1QKSwhU3QpcmV0dXJuIG51bGw7Y29uc3QgcnQ9U3RbZnRdO2lmKHJ0KXJldHVybiBydDtpZihKKXtsZXQgeHQ9Si5jYWxsKHRoaXMpO2lmKHh0KXJldHVybiBPLnNldC5j'@; put 'YWxsKHRoaXMseHQpLCJmdW5jdGlvbiI9PXR5cGVvZiBTdC5yZW1vdmVBdHRyaWJ1dGUmJlN0LnJlbW92ZUF0dHJpYnV0ZShSKSx4dH1yZXR1cm4gbnVsbH0scyhTLFIsTyksU1tOXT0hMH1mdW5jdGlvbiBldChTLFIsTCl7aWYoUilmb3IobGV0IE89MDtPPFIubGVuZ3RoO08rKylYKFMsIm9u'@; put 'IitSW09dLEwpO2Vsc2V7Y29uc3QgTz1bXTtmb3IoY29uc3QgTiBpbiBTKSJvbiI9PU4uc2xpY2UoMCwyKSYmTy5wdXNoKE4pO2ZvcihsZXQgTj0wO048Ty5sZW5ndGg7TisrKVgoUyxPW05dLEwpfX1jb25zdCBWPXgoIm9yaWdpbmFsSW5zdGFuY2UiKTtmdW5jdGlvbiBsdChTKXtjb25zdCBS'@; put 'PVBbU107aWYoIVIpcmV0dXJuO1BbeChTKV09UixQW1NdPWZ1bmN0aW9uKCl7Y29uc3QgTj1UKGFyZ3VtZW50cyxTKTtzd2l0Y2goTi5sZW5ndGgpe2Nhc2UgMDp0aGlzW1ZdPW5ldyBSO2JyZWFrO2Nhc2UgMTp0aGlzW1ZdPW5ldyBSKE5bMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW1ZdPW5ldyBS'@; put 'KE5bMF0sTlsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbVl09bmV3IFIoTlswXSxOWzFdLE5bMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW1ZdPW5ldyBSKE5bMF0sTlsxXSxOWzJdLE5bM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LE90KFBbU10s'@; put 'Uik7Y29uc3QgTD1uZXcgUihmdW5jdGlvbigpe30pO2xldCBPO2ZvcihPIGluIEwpIlhNTEh0dHBSZXF1ZXN0Ij09PVMmJiJyZXNwb25zZUJsb2IiPT09T3x8ZnVuY3Rpb24oTil7ImZ1bmN0aW9uIj09dHlwZW9mIExbTl0/UFtTXS5wcm90b3R5cGVbTl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhp'@; put 'c1tWXVtOXS5hcHBseSh0aGlzW1ZdLGFyZ3VtZW50cyl9OnMoUFtTXS5wcm90b3R5cGUsTix7c2V0OmZ1bmN0aW9uKEopeyJmdW5jdGlvbiI9PXR5cGVvZiBKPyh0aGlzW1ZdW05dPUQoSixTKyIuIitOKSxPdCh0aGlzW1ZdW05dLEopKTp0aGlzW1ZdW05dPUp9LGdldDpmdW5jdGlvbigpe3Jl'@; put 'dHVybiB0aGlzW1ZdW05dfX0pfShPKTtmb3IoTyBpbiBSKSJwcm90b3R5cGUiIT09TyYmUi5oYXNPd25Qcm9wZXJ0eShPKSYmKFBbU11bT109UltPXSl9ZnVuY3Rpb24gZHQoUyxSLEwpe2xldCBPPVM7Zm9yKDtPJiYhTy5oYXNPd25Qcm9wZXJ0eShSKTspTz1vKE8pOyFPJiZTW1JdJiYoTz1T'@; put 'KTtjb25zdCBOPXgoUik7bGV0IEo9bnVsbDtpZihPJiYoIShKPU9bTl0pfHwhTy5oYXNPd25Qcm9wZXJ0eShOKSkmJihKPU9bTl09T1tSXSxCKE8mJmUoTyxSKSkpKXtjb25zdCBvdD1MKEosTixSKTtPW1JdPWZ1bmN0aW9uKCl7cmV0dXJuIG90KHRoaXMsYXJndW1lbnRzKX0sT3QoT1tSXSxK'@; put 'KX1yZXR1cm4gSn1mdW5jdGlvbiBDdChTLFIsTCl7bGV0IE89bnVsbDtmdW5jdGlvbiBOKEope2NvbnN0IHN0PUouZGF0YTtyZXR1cm4gc3QuYXJnc1tzdC5jYklkeF09ZnVuY3Rpb24oKXtKLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LE8uYXBwbHkoc3QudGFyZ2V0LHN0LmFyZ3Mp'@; put 'LEp9Tz1kdChTLFIsSj0+ZnVuY3Rpb24oc3Qsb3Qpe2NvbnN0IGZ0PUwoc3Qsb3QpO3JldHVybiBmdC5jYklkeD49MCYmImZ1bmN0aW9uIj09dHlwZW9mIG90W2Z0LmNiSWR4XT9GKGZ0Lm5hbWUsb3RbZnQuY2JJZHhdLGZ0LE4pOkouYXBwbHkoc3Qsb3QpfSl9ZnVuY3Rpb24gT3QoUyxSKXtT'@; put 'W3goIk9yaWdpbmFsRGVsZWdhdGUiKV09Un1sZXQgTnQ9ITEsUXQ9ITE7ZnVuY3Rpb24gYW4oKXtpZihOdClyZXR1cm4gUXQ7TnQ9ITA7dHJ5e2NvbnN0IFM9ay5uYXZpZ2F0b3IudXNlckFnZW50OygtMSE9PVMuaW5kZXhPZigiTVNJRSAiKXx8LTEhPT1TLmluZGV4T2YoIlRyaWRlbnQvIil8'@; put 'fC0xIT09Uy5pbmRleE9mKCJFZGdlLyIpKSYmKFF0PSEwKX1jYXRjaHt9cmV0dXJuIFF0fWZ1bmN0aW9uIEd0KFMpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTfWZ1bmN0aW9uIHNuKFMpe3JldHVybiJudW1iZXIiPT10eXBlb2YgU31jb25zdCBFbj17dXNlRzohMH0sWXQ9e30scG49e30s'@; put 'eG49bmV3IFJlZ0V4cCgiXiIrZysiKFxcdyspKHRydWV8ZmFsc2UpJCIpLGhuPXgoInByb3BhZ2F0aW9uU3RvcHBlZCIpO2Z1bmN0aW9uIG9uKFMsUil7Y29uc3QgTD0oUj9SKFMpOlMpK0UsTz0oUj9SKFMpOlMpK3ksTj1nK0wsSj1nK087WXRbU109e30sWXRbU11bRV09TixZdFtTXVt5XT1K'@; put 'fWZ1bmN0aW9uIG5uKFMsUixMLE8pe2NvbnN0IE49TyYmTy5hZGR8fGksSj1PJiZPLnJtfHx2LHN0PU8mJk8ubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLG90PU8mJk8ucm1BbGx8fCJyZW1vdmVBbGxMaXN0ZW5lcnMiLGZ0PXgoTiksU3Q9Ii4iK04rIjoiLHJ0PSJwcmVwZW5kTGlzdGVu'@; put 'ZXIiLHh0PSIuIitydCsiOiIsYnQ9ZnVuY3Rpb24odnQsWSxqdCl7aWYodnQuaXNSZW1vdmVkKXJldHVybjtjb25zdCBMdD12dC5jYWxsYmFjaztsZXQgWHQ7Im9iamVjdCI9PXR5cGVvZiBMdCYmTHQuaGFuZGxlRXZlbnQmJih2dC5jYWxsYmFjaz11dD0+THQuaGFuZGxlRXZlbnQodXQpLHZ0'@; put 'Lm9yaWdpbmFsRGVsZWdhdGU9THQpO3RyeXt2dC5pbnZva2UodnQsWSxbanRdKX1jYXRjaCh1dCl7WHQ9dXR9Y29uc3QgS3Q9dnQub3B0aW9ucztyZXR1cm4gS3QmJiJvYmplY3QiPT10eXBlb2YgS3QmJkt0Lm9uY2UmJllbSl0uY2FsbChZLGp0LnR5cGUsdnQub3JpZ2luYWxEZWxlZ2F0ZT92'@; put 'dC5vcmlnaW5hbERlbGVnYXRlOnZ0LmNhbGxiYWNrLEt0KSxYdH07ZnVuY3Rpb24gQnQodnQsWSxqdCl7aWYoIShZPVl8fFMuZXZlbnQpKXJldHVybjtjb25zdCBMdD12dHx8WS50YXJnZXR8fFMsWHQ9THRbWXRbWS50eXBlXVtqdD95OkVdXTtpZihYdCl7Y29uc3QgS3Q9W107aWYoMT09PVh0'@; put 'Lmxlbmd0aCl7Y29uc3QgdXQ9YnQoWHRbMF0sTHQsWSk7dXQmJkt0LnB1c2godXQpfWVsc2V7Y29uc3QgdXQ9WHQuc2xpY2UoKTtmb3IobGV0IFd0PTA7V3Q8dXQubGVuZ3RoJiYoIVl8fCEwIT09WVtobl0pO1d0Kyspe2NvbnN0IEl0PWJ0KHV0W1d0XSxMdCxZKTtJdCYmS3QucHVzaChJdCl9'@; put 'fWlmKDE9PT1LdC5sZW5ndGgpdGhyb3cgS3RbMF07Zm9yKGxldCB1dD0wO3V0PEt0Lmxlbmd0aDt1dCsrKXtjb25zdCBXdD1LdFt1dF07Ui5uYXRpdmVTY2hlZHVsZU1pY3JvVGFzaygoKT0+e3Rocm93IFd0fSl9fX1jb25zdCBIdD1mdW5jdGlvbih2dCl7cmV0dXJuIEJ0KHRoaXMsdnQsITEp'@; put 'fSxfdD1mdW5jdGlvbih2dCl7cmV0dXJuIEJ0KHRoaXMsdnQsITApfTtmdW5jdGlvbiB0bih2dCxZKXtpZighdnQpcmV0dXJuITE7bGV0IGp0PSEwO1kmJnZvaWQgMCE9PVkudXNlRyYmKGp0PVkudXNlRyk7Y29uc3QgTHQ9WSYmWS52aDtsZXQgWHQ9ITA7WSYmdm9pZCAwIT09WS5jaGtEdXAm'@; put 'JihYdD1ZLmNoa0R1cCk7bGV0IEt0PSExO1kmJnZvaWQgMCE9PVkucnQmJihLdD1ZLnJ0KTtsZXQgdXQ9dnQ7Zm9yKDt1dCYmIXV0Lmhhc093blByb3BlcnR5KE4pOyl1dD1vKHV0KTtpZighdXQmJnZ0W05dJiYodXQ9dnQpLCF1dHx8dXRbZnRdKXJldHVybiExO2NvbnN0IFd0PVkmJlkuZXZl'@; put 'bnROYW1lVG9TdHJpbmcsSXQ9e30sVHQ9dXRbZnRdPXV0W05dLGd0PXV0W3goSildPXV0W0pdLFB0PXV0W3goc3QpXT11dFtzdF0sZW49dXRbeChvdCldPXV0W290XTtsZXQgSnQ7WSYmWS5wcmVwZW5kJiYoSnQ9dXRbeChZLnByZXBlbmQpXT11dFtZLnByZXBlbmRdKTtjb25zdCBadD1qdD9m'@; put 'dW5jdGlvbihqKXtpZighSXQuaXNFeGlzdGluZylyZXR1cm4gVHQuY2FsbChJdC50YXJnZXQsSXQuZXZlbnROYW1lLEl0LmNhcHR1cmU/X3Q6SHQsSXQub3B0aW9ucyl9OmZ1bmN0aW9uKGope3JldHVybiBUdC5jYWxsKEl0LnRhcmdldCxJdC5ldmVudE5hbWUsai5pbnZva2UsSXQub3B0aW9u'@; put 'cyl9LGt0PWp0P2Z1bmN0aW9uKGope2lmKCFqLmlzUmVtb3ZlZCl7Y29uc3QgRz1ZdFtqLmV2ZW50TmFtZV07bGV0IHB0O0cmJihwdD1HW2ouY2FwdHVyZT95OkVdKTtjb25zdCBNdD1wdCYmai50YXJnZXRbcHRdO2lmKE10KWZvcihsZXQgY3Q9MDtjdDxNdC5sZW5ndGg7Y3QrKylpZihNdFtj'@; put 'dF09PT1qKXtNdC5zcGxpY2UoY3QsMSksai5pc1JlbW92ZWQ9ITAsai5yZW1vdmVBYm9ydExpc3RlbmVyJiYoai5yZW1vdmVBYm9ydExpc3RlbmVyKCksai5yZW1vdmVBYm9ydExpc3RlbmVyPW51bGwpLDA9PT1NdC5sZW5ndGgmJihqLmFsbFJlbW92ZWQ9ITAsai50YXJnZXRbcHRdPW51bGwp'@; put 'O2JyZWFrfX1pZihqLmFsbFJlbW92ZWQpcmV0dXJuIGd0LmNhbGwoai50YXJnZXQsai5ldmVudE5hbWUsai5jYXB0dXJlP190Okh0LGoub3B0aW9ucyl9OmZ1bmN0aW9uKGope3JldHVybiBndC5jYWxsKGoudGFyZ2V0LGouZXZlbnROYW1lLGouaW52b2tlLGoub3B0aW9ucyl9LGRuPVk/LmRp'@; put 'ZmZ8fGZ1bmN0aW9uKGosRyl7Y29uc3QgcHQ9dHlwZW9mIEc7cmV0dXJuImZ1bmN0aW9uIj09PXB0JiZqLmNhbGxiYWNrPT09R3x8Im9iamVjdCI9PT1wdCYmai5vcmlnaW5hbERlbGVnYXRlPT09R30sdm49Wm9uZVt4KCJVTlBBVENIRURfRVZFTlRTIildLHVuPVNbeCgiUEFTU0lWRV9FVkVO'@; put 'VFMiKV0sVz1mdW5jdGlvbihqLEcscHQsTXQsY3Q9ITEsd3Q9ITEpe3JldHVybiBmdW5jdGlvbigpe2NvbnN0IFJ0PXRoaXN8fFM7bGV0IEZ0PWFyZ3VtZW50c1swXTtZJiZZLnRyYW5zZmVyRXZlbnROYW1lJiYoRnQ9WS50cmFuc2ZlckV2ZW50TmFtZShGdCkpO2xldCAkdD1hcmd1bWVudHNb'@; put 'MV07aWYoISR0KXJldHVybiBqLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihaJiYidW5jYXVnaHRFeGNlcHRpb24iPT09RnQpcmV0dXJuIGouYXBwbHkodGhpcyxhcmd1bWVudHMpO2xldCBVdD0hMTtpZigiZnVuY3Rpb24iIT10eXBlb2YgJHQpe2lmKCEkdC5oYW5kbGVFdmVudClyZXR1cm4g'@; put 'ai5hcHBseSh0aGlzLGFyZ3VtZW50cyk7VXQ9ITB9aWYoTHQmJiFMdChqLCR0LFJ0LGFyZ3VtZW50cykpcmV0dXJuO2NvbnN0IGduPSEhdW4mJi0xIT09dW4uaW5kZXhPZihGdCksbG49ZnVuY3Rpb24geihqKXtpZigib2JqZWN0Ij09dHlwZW9mIGomJm51bGwhPT1qKXtjb25zdCBHPXsuLi5q'@; put 'fTtyZXR1cm4gai5zaWduYWwmJihHLnNpZ25hbD1qLnNpZ25hbCksR31yZXR1cm4gan0oZnVuY3Rpb24gQXQoaixHKXtyZXR1cm4gRz8iYm9vbGVhbiI9PXR5cGVvZiBqP3tjYXB0dXJlOmoscGFzc2l2ZTohMH06aj8ib2JqZWN0Ij09dHlwZW9mIGomJiExIT09ai5wYXNzaXZlP3suLi5qLHBh'@; put 'c3NpdmU6ITB9Omo6e3Bhc3NpdmU6ITB9Omp9KGFyZ3VtZW50c1syXSxnbikpLFNuPWxuPy5zaWduYWw7aWYoU24/LmFib3J0ZWQpcmV0dXJuO2lmKHZuKWZvcihsZXQgZm49MDtmbjx2bi5sZW5ndGg7Zm4rKylpZihGdD09PXZuW2ZuXSlyZXR1cm4gZ24/ai5jYWxsKFJ0LEZ0LCR0LGxuKTpq'@; put 'LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtjb25zdCBBbj0hIWxuJiYoImJvb2xlYW4iPT10eXBlb2YgbG58fGxuLmNhcHR1cmUpLEZuPSEoIWxufHwib2JqZWN0IiE9dHlwZW9mIGxuKSYmbG4ub25jZSxqbj1ab25lLmN1cnJlbnQ7bGV0IHduPVl0W0Z0XTt3bnx8KG9uKEZ0LFd0KSx3bj1ZdFtG'@; put 'dF0pO2NvbnN0IERuPXduW0FuP3k6RV07bGV0IEluLE9uPVJ0W0RuXSxibj0hMTtpZihPbil7aWYoYm49ITAsWHQpZm9yKGxldCBmbj0wO2ZuPE9uLmxlbmd0aDtmbisrKWlmKGRuKE9uW2ZuXSwkdCkpcmV0dXJufWVsc2UgT249UnRbRG5dPVtdO2NvbnN0IENuPVJ0LmNvbnN0cnVjdG9yLm5h'@; put 'bWUsa249cG5bQ25dO2tuJiYoSW49a25bRnRdKSxJbnx8KEluPUNuK0crKFd0P1d0KEZ0KTpGdCkpLEl0Lm9wdGlvbnM9bG4sRm4mJihJdC5vcHRpb25zLm9uY2U9ITEpLEl0LnRhcmdldD1SdCxJdC5jYXB0dXJlPUFuLEl0LmV2ZW50TmFtZT1GdCxJdC5pc0V4aXN0aW5nPWJuO2NvbnN0IFBu'@; put 'PWp0P0VuOnZvaWQgMDtQbiYmKFBuLnRhc2tEYXRhPUl0KSxTbiYmKEl0Lm9wdGlvbnMuc2lnbmFsPXZvaWQgMCk7Y29uc3QgY249am4uc2NoZWR1bGVFdmVudFRhc2soSW4sJHQsUG4scHQsTXQpO2lmKFNuKXtJdC5vcHRpb25zLnNpZ25hbD1Tbjtjb25zdCBmbj0oKT0+Y24uem9uZS5jYW5j'@; put 'ZWxUYXNrKGNuKTtqLmNhbGwoU24sImFib3J0Iixmbix7b25jZTohMH0pLGNuLnJlbW92ZUFib3J0TGlzdGVuZXI9KCk9PlNuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0Iixmbil9cmV0dXJuIEl0LnRhcmdldD1udWxsLFBuJiYoUG4udGFza0RhdGE9bnVsbCksRm4mJihJdC5vcHRpb25z'@; put 'Lm9uY2U9ITApLCJib29sZWFuIiE9dHlwZW9mIGNuLm9wdGlvbnMmJihjbi5vcHRpb25zPWxuKSxjbi50YXJnZXQ9UnQsY24uY2FwdHVyZT1Bbixjbi5ldmVudE5hbWU9RnQsVXQmJihjbi5vcmlnaW5hbERlbGVnYXRlPSR0KSx3dD9Pbi51bnNoaWZ0KGNuKTpPbi5wdXNoKGNuKSxjdD9SdDp2'@; put 'b2lkIDB9fTtyZXR1cm4gdXRbTl09VyhUdCxTdCxadCxrdCxLdCksSnQmJih1dFtydF09VyhKdCx4dCxmdW5jdGlvbihqKXtyZXR1cm4gSnQuY2FsbChJdC50YXJnZXQsSXQuZXZlbnROYW1lLGouaW52b2tlLEl0Lm9wdGlvbnMpfSxrdCxLdCwhMCkpLHV0W0pdPWZ1bmN0aW9uKCl7Y29uc3Qg'@; put 'aj10aGlzfHxTO2xldCBHPWFyZ3VtZW50c1swXTtZJiZZLnRyYW5zZmVyRXZlbnROYW1lJiYoRz1ZLnRyYW5zZmVyRXZlbnROYW1lKEcpKTtjb25zdCBwdD1hcmd1bWVudHNbMl0sTXQ9ISFwdCYmKCJib29sZWFuIj09dHlwZW9mIHB0fHxwdC5jYXB0dXJlKSxjdD1hcmd1bWVudHNbMV07aWYo'@; put 'IWN0KXJldHVybiBndC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoTHQmJiFMdChndCxjdCxqLGFyZ3VtZW50cykpcmV0dXJuO2NvbnN0IHd0PVl0W0ddO2xldCBSdDt3dCYmKFJ0PXd0W010P3k6RV0pO2NvbnN0IEZ0PVJ0JiZqW1J0XTtpZihGdClmb3IobGV0ICR0PTA7JHQ8RnQubGVuZ3Ro'@; put 'OyR0Kyspe2NvbnN0IFV0PUZ0WyR0XTtpZihkbihVdCxjdCkpcmV0dXJuIEZ0LnNwbGljZSgkdCwxKSxVdC5pc1JlbW92ZWQ9ITAsMCE9PUZ0Lmxlbmd0aHx8KFV0LmFsbFJlbW92ZWQ9ITAsaltSdF09bnVsbCxNdHx8InN0cmluZyIhPXR5cGVvZiBHKXx8KGpbZysiT05fUFJPUEVSVFkiK0dd'@; put 'PW51bGwpLFV0LnpvbmUuY2FuY2VsVGFzayhVdCksS3Q/ajp2b2lkIDB9cmV0dXJuIGd0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdXRbc3RdPWZ1bmN0aW9uKCl7Y29uc3Qgaj10aGlzfHxTO2xldCBHPWFyZ3VtZW50c1swXTtZJiZZLnRyYW5zZmVyRXZlbnROYW1lJiYoRz1ZLnRyYW5zZmVy'@; put 'RXZlbnROYW1lKEcpKTtjb25zdCBwdD1bXSxNdD15bihqLFd0P1d0KEcpOkcpO2ZvcihsZXQgY3Q9MDtjdDxNdC5sZW5ndGg7Y3QrKyl7Y29uc3Qgd3Q9TXRbY3RdO3B0LnB1c2god3Qub3JpZ2luYWxEZWxlZ2F0ZT93dC5vcmlnaW5hbERlbGVnYXRlOnd0LmNhbGxiYWNrKX1yZXR1cm4gcHR9'@; put 'LHV0W290XT1mdW5jdGlvbigpe2NvbnN0IGo9dGhpc3x8UztsZXQgRz1hcmd1bWVudHNbMF07aWYoRyl7WSYmWS50cmFuc2ZlckV2ZW50TmFtZSYmKEc9WS50cmFuc2ZlckV2ZW50TmFtZShHKSk7Y29uc3QgcHQ9WXRbR107aWYocHQpe2NvbnN0IHd0PWpbcHRbRV1dLFJ0PWpbcHRbeV1dO2lm'@; put 'KHd0KXtjb25zdCBGdD13dC5zbGljZSgpO2ZvcihsZXQgJHQ9MDskdDxGdC5sZW5ndGg7JHQrKyl7Y29uc3QgVXQ9RnRbJHRdO3RoaXNbSl0uY2FsbCh0aGlzLEcsVXQub3JpZ2luYWxEZWxlZ2F0ZT9VdC5vcmlnaW5hbERlbGVnYXRlOlV0LmNhbGxiYWNrLFV0Lm9wdGlvbnMpfX1pZihSdCl7'@; put 'Y29uc3QgRnQ9UnQuc2xpY2UoKTtmb3IobGV0ICR0PTA7JHQ8RnQubGVuZ3RoOyR0Kyspe2NvbnN0IFV0PUZ0WyR0XTt0aGlzW0pdLmNhbGwodGhpcyxHLFV0Lm9yaWdpbmFsRGVsZWdhdGU/VXQub3JpZ2luYWxEZWxlZ2F0ZTpVdC5jYWxsYmFjayxVdC5vcHRpb25zKX19fX1lbHNle2NvbnN0'@; put 'IHB0PU9iamVjdC5rZXlzKGopO2ZvcihsZXQgTXQ9MDtNdDxwdC5sZW5ndGg7TXQrKyl7Y29uc3Qgd3Q9eG4uZXhlYyhwdFtNdF0pO2xldCBSdD13dCYmd3RbMV07UnQmJiJyZW1vdmVMaXN0ZW5lciIhPT1SdCYmdGhpc1tvdF0uY2FsbCh0aGlzLFJ0KX10aGlzW290XS5jYWxsKHRoaXMsInJl'@; put 'bW92ZUxpc3RlbmVyIil9aWYoS3QpcmV0dXJuIHRoaXN9LE90KHV0W05dLFR0KSxPdCh1dFtKXSxndCksZW4mJk90KHV0W290XSxlbiksUHQmJk90KHV0W3N0XSxQdCksITB9bGV0IFZ0PVtdO2ZvcihsZXQgdnQ9MDt2dDxMLmxlbmd0aDt2dCsrKVZ0W3Z0XT10bihMW3Z0XSxPKTtyZXR1cm4g'@; put 'VnR9ZnVuY3Rpb24geW4oUyxSKXtpZighUil7Y29uc3QgSj1bXTtmb3IobGV0IHN0IGluIFMpe2NvbnN0IG90PXhuLmV4ZWMoc3QpO2xldCBmdD1vdCYmb3RbMV07aWYoZnQmJighUnx8ZnQ9PT1SKSl7Y29uc3QgU3Q9U1tzdF07aWYoU3QpZm9yKGxldCBydD0wO3J0PFN0Lmxlbmd0aDtydCsr'@; put 'KUoucHVzaChTdFtydF0pfX1yZXR1cm4gSn1sZXQgTD1ZdFtSXTtMfHwob24oUiksTD1ZdFtSXSk7Y29uc3QgTz1TW0xbRV1dLE49U1tMW3ldXTtyZXR1cm4gTz9OP08uY29uY2F0KE4pOk8uc2xpY2UoKTpOP04uc2xpY2UoKTpbXX1mdW5jdGlvbiBUbihTLFIpe2NvbnN0IEw9Uy5FdmVudDtM'@; put 'JiZMLnByb3RvdHlwZSYmUi5wYXRjaE1ldGhvZChMLnByb3RvdHlwZSwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIixPPT5mdW5jdGlvbihOLEope05baG5dPSEwLE8mJk8uYXBwbHkoTixKKX0pfWNvbnN0IHI9eCgiem9uZVRhc2siKTtmdW5jdGlvbiBhKFMsUixMLE8pe2xldCBOPW51bGws'@; put 'Sj1udWxsO0wrPU87Y29uc3Qgc3Q9e307ZnVuY3Rpb24gb3QoU3Qpe2NvbnN0IHJ0PVN0LmRhdGE7cnQuYXJnc1swXT1mdW5jdGlvbigpe3JldHVybiBTdC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjb25zdCB4dD1OLmFwcGx5KFMscnQuYXJncyk7cmV0dXJuIHNuKHh0KT9ydC5o'@; put 'YW5kbGVJZD14dDoocnQuaGFuZGxlPXh0LHJ0LmlzUmVmcmVzaGFibGU9R3QoeHQucmVmcmVzaCkpLFN0fWZ1bmN0aW9uIGZ0KFN0KXtjb25zdHtoYW5kbGU6cnQsaGFuZGxlSWQ6eHR9PVN0LmRhdGE7cmV0dXJuIEouY2FsbChTLHJ0Pz94dCl9Tj1kdChTLFIrPU8sU3Q9PmZ1bmN0aW9uKHJ0'@; put 'LHh0KXtpZihHdCh4dFswXSkpe2NvbnN0IGJ0PXtpc1JlZnJlc2hhYmxlOiExLGlzUGVyaW9kaWM6IkludGVydmFsIj09PU8sZGVsYXk6IlRpbWVvdXQiPT09T3x8IkludGVydmFsIj09PU8/eHRbMV18fDA6dm9pZCAwLGFyZ3M6eHR9LEJ0PXh0WzBdO3h0WzBdPWZ1bmN0aW9uKCl7dHJ5e3Jl'@; put 'dHVybiBCdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtjb25zdHtoYW5kbGU6anQsaGFuZGxlSWQ6THQsaXNQZXJpb2RpYzpYdCxpc1JlZnJlc2hhYmxlOkt0fT1idDshWHQmJiFLdCYmKEx0P2RlbGV0ZSBzdFtMdF06anQmJihqdFtyXT1udWxsKSl9fTtjb25zdCBIdD1GKFIseHRb'@; put 'MF0sYnQsb3QsZnQpO2lmKCFIdClyZXR1cm4gSHQ7Y29uc3R7aGFuZGxlSWQ6X3QsaGFuZGxlOnRuLGlzUmVmcmVzaGFibGU6VnQsaXNQZXJpb2RpYzp2dH09SHQuZGF0YTtpZihfdClzdFtfdF09SHQ7ZWxzZSBpZih0biYmKHRuW3JdPUh0LFZ0JiYhdnQpKXtjb25zdCBZPXRuLnJlZnJlc2g7'@; put 'dG4ucmVmcmVzaD1mdW5jdGlvbigpe2NvbnN0e3pvbmU6anQsc3RhdGU6THR9PUh0O3JldHVybiJub3RTY2hlZHVsZWQiPT09THQ/KEh0Ll9zdGF0ZT0ic2NoZWR1bGVkIixqdC5fdXBkYXRlVGFza0NvdW50KEh0LDEpKToicnVubmluZyI9PT1MdCYmKEh0Ll9zdGF0ZT0ic2NoZWR1bGluZyIp'@; put 'LFkuY2FsbCh0aGlzKX19cmV0dXJuIHRuPz9fdD8/SHR9cmV0dXJuIFN0LmFwcGx5KFMseHQpfSksSj1kdChTLEwsU3Q9PmZ1bmN0aW9uKHJ0LHh0KXtjb25zdCBidD14dFswXTtsZXQgQnQ7c24oYnQpPyhCdD1zdFtidF0sZGVsZXRlIHN0W2J0XSk6KEJ0PWJ0Py5bcl0sQnQ/YnRbcl09bnVs'@; put 'bDpCdD1idCksQnQ/LnR5cGU/QnQuY2FuY2VsRm4mJkJ0LnpvbmUuY2FuY2VsVGFzayhCdCk6U3QuYXBwbHkoUyx4dCl9KX1mdW5jdGlvbiAkKFMsUixMKXtpZighTHx8MD09PUwubGVuZ3RoKXJldHVybiBSO2NvbnN0IE89TC5maWx0ZXIoSj0+Si50YXJnZXQ9PT1TKTtpZigwPT09Ty5sZW5n'@; put 'dGgpcmV0dXJuIFI7Y29uc3QgTj1PWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIFIuZmlsdGVyKEo9Pi0xPT09Ti5pbmRleE9mKEopKX1mdW5jdGlvbiBEdChTLFIsTCxPKXtTJiZldChTLCQoUyxSLEwpLE8pfWZ1bmN0aW9uIF8oUyl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h'@; put 'bWVzKFMpLmZpbHRlcihSPT5SLnN0YXJ0c1dpdGgoIm9uIikmJlIubGVuZ3RoPjIpLm1hcChSPT5SLnN1YnN0cmluZygyKSl9ZnVuY3Rpb24gcXQoUyxSLEwsTyxOKXtjb25zdCBKPVpvbmUuX19zeW1ib2xfXyhPKTtpZihSW0pdKXJldHVybjtjb25zdCBzdD1SW0pdPVJbT107UltPXT1mdW5j'@; put 'dGlvbihvdCxmdCxTdCl7cmV0dXJuIGZ0JiZmdC5wcm90b3R5cGUmJk4uZm9yRWFjaChmdW5jdGlvbihydCl7Y29uc3QgeHQ9YCR7TH0uJHtPfTo6YCtydCxidD1mdC5wcm90b3R5cGU7dHJ5e2lmKGJ0Lmhhc093blByb3BlcnR5KHJ0KSl7Y29uc3QgQnQ9Uy5PYmplY3RHZXRPd25Qcm9wZXJ0'@; put 'eURlc2NyaXB0b3IoYnQscnQpO0J0JiZCdC52YWx1ZT8oQnQudmFsdWU9Uy53cmFwV2l0aEN1cnJlbnRab25lKEJ0LnZhbHVlLHh0KSxTLl9yZWRlZmluZVByb3BlcnR5KGZ0LnByb3RvdHlwZSxydCxCdCkpOmJ0W3J0XSYmKGJ0W3J0XT1TLndyYXBXaXRoQ3VycmVudFpvbmUoYnRbcnRdLHh0'@; put 'KSl9ZWxzZSBidFtydF0mJihidFtydF09Uy53cmFwV2l0aEN1cnJlbnRab25lKGJ0W3J0XSx4dCkpfWNhdGNoe319KSxzdC5jYWxsKFIsb3QsZnQsU3QpfSxTLmF0dGFjaE9yaWdpblRvUGF0Y2hlZChSW09dLHN0KX1jb25zdCBSbj1mdW5jdGlvbiBuKCl7Y29uc3QgUz1nbG9iYWxUaGlzLFI9'@; put 'ITA9PT1TW2YoImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrIildO2lmKFMuWm9uZSYmKFJ8fCJmdW5jdGlvbiIhPXR5cGVvZiBTLlpvbmUuX19zeW1ib2xfXykpdGhyb3cgbmV3IEVycm9yKCJab25lIGFscmVhZHkgbG9hZGVkLiIpO3JldHVybiBTLlpvbmU/Pz1mdW5jdGlvbiB0KCl7Y29uc3Qg'@; put 'Uz1jLnBlcmZvcm1hbmNlO2Z1bmN0aW9uIFIoQXQpe1MmJlMubWFyayYmUy5tYXJrKEF0KX1mdW5jdGlvbiBMKEF0LGF0KXtTJiZTLm1lYXN1cmUmJlMubWVhc3VyZShBdCxhdCl9UigiWm9uZSIpO2xldCBPPSgoKT0+e2NsYXNzIEF0e3N0YXRpYyBfX3N5bWJvbF9fPWY7c3RhdGljIGFzc2Vy'@; put 'dFpvbmVQYXRjaGVkKCl7aWYoYy5Qcm9taXNlIT09SXQuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBs'@; put 'aWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJl'@; put 'Zm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfXN0YXRpYyBnZXQgcm9vdCgpe2xldCBJPUF0LmN1cnJlbnQ7Zm9yKDtJLnBhcmVudDspST1JLnBhcmVudDtyZXR1cm4gSX1zdGF0aWMgZ2V0IGN1cnJlbnQoKXtyZXR1cm4gZ3Quem9uZX1zdGF0aWMgZ2V0IGN1cnJlbnRUYXNrKCl7cmV0dXJuIFB0'@; put 'fXN0YXRpYyBfX2xvYWRfcGF0Y2goSSxDLGh0PSExKXtpZihJdC5oYXNPd25Qcm9wZXJ0eShJKSl7Y29uc3QgRXQ9ITA9PT1jW2YoImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrIildO2lmKCFodCYmRXQpdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK0kpfWVsc2UgaWYoIWNb'@; put 'Il9fWm9uZV9kaXNhYmxlXyIrSV0pe2NvbnN0IEV0PSJab25lOiIrSTtSKEV0KSxJdFtJXT1DKGMsQXQsVHQpLEwoRXQsRXQpfX1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfV9wYXJlbnQ7X25hbWU7X3Byb3BlcnRpZXM7X3pv'@; put 'bmVEZWxlZ2F0ZTtjb25zdHJ1Y3RvcihJLEMpe3RoaXMuX3BhcmVudD1JLHRoaXMuX25hbWU9Qz9DLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPUMmJkMucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBKKHRoaXMsdGhpcy5fcGFyZW50JiZ0'@; put 'aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxDKX1nZXQoSSl7Y29uc3QgQz10aGlzLmdldFpvbmVXaXRoKEkpO2lmKEMpcmV0dXJuIEMuX3Byb3BlcnRpZXNbSV19Z2V0Wm9uZVdpdGgoSSl7bGV0IEM9dGhpcztmb3IoO0M7KXtpZihDLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KEkpKXJl'@; put 'dHVybiBDO0M9Qy5fcGFyZW50fXJldHVybiBudWxsfWZvcmsoSSl7aWYoIUkpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyxJKX13cmFwKEksQyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEkpdGhyb3cgbmV3'@; put 'IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAiK0kpO2NvbnN0IGh0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcyxJLEMpLEV0PXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEV0LnJ1bkd1YXJkZWQoaHQsdGhpcyxhcmd1bWVudHMsQyl9fXJ1bihJLEMsaHQs'@; put 'RXQpe2d0PXtwYXJlbnQ6Z3Qsem9uZTp0aGlzfTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxJLEMsaHQsRXQpfWZpbmFsbHl7Z3Q9Z3QucGFyZW50fX1ydW5HdWFyZGVkKEksQz1udWxsLGh0LEV0KXtndD17cGFyZW50Omd0LHpvbmU6dGhpc307dHJ5e3RyeXty'@; put 'ZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLEksQyxodCxFdCl9Y2F0Y2goWnQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLFp0KSl0aHJvdyBadH19ZmluYWxseXtndD1ndC5wYXJlbnR9fXJ1blRhc2soSSxDLGh0KXtpZihJLnpvbmUhPXRoaXMp'@; put 'dGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKEkuem9uZXx8dG4pLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2NvbnN0IEV0PUkse3R5cGU6WnQsZGF0YTp7aXNQZXJpb2RpYzpr'@; put 'dD0hMSxpc1JlZnJlc2hhYmxlOm1uPSExfT17fX09STtpZihJLnN0YXRlPT09VnQmJihadD09PVd0fHxadD09PXV0KSlyZXR1cm47Y29uc3QgZG49SS5zdGF0ZSE9anQ7ZG4mJkV0Ll90cmFuc2l0aW9uVG8oanQsWSk7Y29uc3Qgdm49UHQ7UHQ9RXQsZ3Q9e3BhcmVudDpndCx6b25lOnRoaXN9'@; put 'O3RyeXtadD09dXQmJkkuZGF0YSYmIWt0JiYhbW4mJihJLmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLEV0LEMsaHQpfWNhdGNoKHVuKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx1bikpdGhyb3cg'@; put 'dW59fWZpbmFsbHl7Y29uc3QgdW49SS5zdGF0ZTtpZih1biE9PVZ0JiZ1biE9PVh0KWlmKFp0PT1XdHx8a3R8fG1uJiZ1bj09PXZ0KWRuJiZFdC5fdHJhbnNpdGlvblRvKFksanQsdnQpO2Vsc2V7Y29uc3Qgej1FdC5fem9uZURlbGVnYXRlczt0aGlzLl91cGRhdGVUYXNrQ291bnQoRXQsLTEp'@; put 'LGRuJiZFdC5fdHJhbnNpdGlvblRvKFZ0LGp0LFZ0KSxtbiYmKEV0Ll96b25lRGVsZWdhdGVzPXopfWd0PWd0LnBhcmVudCxQdD12bn19c2NoZWR1bGVUYXNrKEkpe2lmKEkuem9uZSYmSS56b25lIT09dGhpcyl7bGV0IGh0PXRoaXM7Zm9yKDtodDspe2lmKGh0PT09SS56b25lKXRocm93IEVy'@; put 'cm9yKGBjYW4gbm90IHJlc2NoZWR1bGUgdGFzayB0byAke3RoaXMubmFtZX0gd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgJHtJLnpvbmUubmFtZX1gKTtodD1odC5wYXJlbnR9fUkuX3RyYW5zaXRpb25Ubyh2dCxWdCk7Y29uc3QgQz1bXTtJLl96b25lRGVsZWdh'@; put 'dGVzPUMsSS5fem9uZT10aGlzO3RyeXtJPXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyxJKX1jYXRjaChodCl7dGhyb3cgSS5fdHJhbnNpdGlvblRvKFh0LHZ0LFZ0KSx0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxodCksaHR9cmV0dXJuIEkuX3pvbmVE'@; put 'ZWxlZ2F0ZXM9PT1DJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQoSSwxKSxJLnN0YXRlPT12dCYmSS5fdHJhbnNpdGlvblRvKFksdnQpLEl9c2NoZWR1bGVNaWNyb1Rhc2soSSxDLGh0LEV0KXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHN0KEt0LEksQyxodCxFdCx2b2lkIDApKX1zY2hl'@; put 'ZHVsZU1hY3JvVGFzayhJLEMsaHQsRXQsWnQpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgc3QodXQsSSxDLGh0LEV0LFp0KSl9c2NoZWR1bGVFdmVudFRhc2soSSxDLGh0LEV0LFp0KXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHN0KFd0LEksQyxodCxFdCxadCkpfWNhbmNl'@; put 'bFRhc2soSSl7aWYoSS56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyhJLnpvbmV8fHRuKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTtpZihJLnN0'@; put 'YXRlPT09WXx8SS5zdGF0ZT09PWp0KXtJLl90cmFuc2l0aW9uVG8oTHQsWSxqdCk7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsSSl9Y2F0Y2goQyl7dGhyb3cgSS5fdHJhbnNpdGlvblRvKFh0LEx0KSx0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxD'@; put 'KSxDfXJldHVybiB0aGlzLl91cGRhdGVUYXNrQ291bnQoSSwtMSksSS5fdHJhbnNpdGlvblRvKFZ0LEx0KSxJLnJ1bkNvdW50PS0xLEl9fV91cGRhdGVUYXNrQ291bnQoSSxDKXtjb25zdCBodD1JLl96b25lRGVsZWdhdGVzOy0xPT1DJiYoSS5fem9uZURlbGVnYXRlcz1udWxsKTtmb3IobGV0'@; put 'IEV0PTA7RXQ8aHQubGVuZ3RoO0V0KyspaHRbRXRdLl91cGRhdGVUYXNrQ291bnQoSS50eXBlLEMpfX1yZXR1cm4gQXR9KSgpO2NvbnN0IE49e25hbWU6IiIsb25IYXNUYXNrOihBdCxhdCxJLEMpPT5BdC5oYXNUYXNrKEksQyksb25TY2hlZHVsZVRhc2s6KEF0LGF0LEksQyk9PkF0LnNjaGVk'@; put 'dWxlVGFzayhJLEMpLG9uSW52b2tlVGFzazooQXQsYXQsSSxDLGh0LEV0KT0+QXQuaW52b2tlVGFzayhJLEMsaHQsRXQpLG9uQ2FuY2VsVGFzazooQXQsYXQsSSxDKT0+QXQuY2FuY2VsVGFzayhJLEMpfTtjbGFzcyBKe2dldCB6b25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9X3pvbmU7X3Rhc2tD'@; put 'b3VudHM9e21pY3JvVGFzazowLG1hY3JvVGFzazowLGV2ZW50VGFzazowfTtfcGFyZW50RGVsZWdhdGU7X2ZvcmtEbGd0O19mb3JrWlM7X2ZvcmtDdXJyWm9uZTtfaW50ZXJjZXB0RGxndDtfaW50ZXJjZXB0WlM7X2ludGVyY2VwdEN1cnJab25lO19pbnZva2VEbGd0O19pbnZva2VaUztfaW52'@; put 'b2tlQ3VyclpvbmU7X2hhbmRsZUVycm9yRGxndDtfaGFuZGxlRXJyb3JaUztfaGFuZGxlRXJyb3JDdXJyWm9uZTtfc2NoZWR1bGVUYXNrRGxndDtfc2NoZWR1bGVUYXNrWlM7X3NjaGVkdWxlVGFza0N1cnJab25lO19pbnZva2VUYXNrRGxndDtfaW52b2tlVGFza1pTO19pbnZva2VUYXNrQ3Vy'@; put 'clpvbmU7X2NhbmNlbFRhc2tEbGd0O19jYW5jZWxUYXNrWlM7X2NhbmNlbFRhc2tDdXJyWm9uZTtfaGFzVGFza0RsZ3Q7X2hhc1Rhc2tEbGd0T3duZXI7X2hhc1Rhc2taUztfaGFzVGFza0N1cnJab25lO2NvbnN0cnVjdG9yKGF0LEksQyl7dGhpcy5fem9uZT1hdCx0aGlzLl9wYXJlbnREZWxl'@; put 'Z2F0ZT1JLHRoaXMuX2ZvcmtaUz1DJiYoQyYmQy5vbkZvcms/QzpJLl9mb3JrWlMpLHRoaXMuX2ZvcmtEbGd0PUMmJihDLm9uRm9yaz9JOkkuX2ZvcmtEbGd0KSx0aGlzLl9mb3JrQ3VyclpvbmU9QyYmKEMub25Gb3JrP3RoaXMuX3pvbmU6SS5fZm9ya0N1cnJab25lKSx0aGlzLl9pbnRlcmNl'@; put 'cHRaUz1DJiYoQy5vbkludGVyY2VwdD9DOkkuX2ludGVyY2VwdFpTKSx0aGlzLl9pbnRlcmNlcHREbGd0PUMmJihDLm9uSW50ZXJjZXB0P0k6SS5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3VyclpvbmU9QyYmKEMub25JbnRlcmNlcHQ/dGhpcy5fem9uZTpJLl9pbnRlcmNlcHRD'@; put 'dXJyWm9uZSksdGhpcy5faW52b2tlWlM9QyYmKEMub25JbnZva2U/QzpJLl9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1DJiYoQy5vbkludm9rZT9JOkkuX2ludm9rZURsZ3QpLHRoaXMuX2ludm9rZUN1cnJab25lPUMmJihDLm9uSW52b2tlP3RoaXMuX3pvbmU6SS5faW52b2tlQ3Vyclpv'@; put 'bmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9QyYmKEMub25IYW5kbGVFcnJvcj9DOkkuX2hhbmRsZUVycm9yWlMpLHRoaXMuX2hhbmRsZUVycm9yRGxndD1DJiYoQy5vbkhhbmRsZUVycm9yP0k6SS5faGFuZGxlRXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPUMmJihDLm9uSGFu'@; put 'ZGxlRXJyb3I/dGhpcy5fem9uZTpJLl9oYW5kbGVFcnJvckN1cnJab25lKSx0aGlzLl9zY2hlZHVsZVRhc2taUz1DJiYoQy5vblNjaGVkdWxlVGFzaz9DOkkuX3NjaGVkdWxlVGFza1pTKSx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PUMmJihDLm9uU2NoZWR1bGVUYXNrP0k6SS5fc2NoZWR1bGVU'@; put 'YXNrRGxndCksdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9QyYmKEMub25TY2hlZHVsZVRhc2s/dGhpcy5fem9uZTpJLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksdGhpcy5faW52b2tlVGFza1pTPUMmJihDLm9uSW52b2tlVGFzaz9DOkkuX2ludm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFz'@; put 'a0RsZ3Q9QyYmKEMub25JbnZva2VUYXNrP0k6SS5faW52b2tlVGFza0RsZ3QpLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT1DJiYoQy5vbkludm9rZVRhc2s/dGhpcy5fem9uZTpJLl9pbnZva2VUYXNrQ3VyclpvbmUpLHRoaXMuX2NhbmNlbFRhc2taUz1DJiYoQy5vbkNhbmNlbFRhc2s/QzpJ'@; put 'Ll9jYW5jZWxUYXNrWlMpLHRoaXMuX2NhbmNlbFRhc2tEbGd0PUMmJihDLm9uQ2FuY2VsVGFzaz9JOkkuX2NhbmNlbFRhc2tEbGd0KSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9QyYmKEMub25DYW5jZWxUYXNrP3RoaXMuX3pvbmU6SS5fY2FuY2VsVGFza0N1cnJab25lKSx0aGlzLl9oYXNU'@; put 'YXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDtjb25zdCBodD1DJiZDLm9uSGFzVGFzazsoaHR8fEkmJkkuX2hhc1Rhc2taUykmJih0aGlzLl9oYXNUYXNrWlM9aHQ/QzpOLHRoaXMu'@; put 'X2hhc1Rhc2tEbGd0PUksdGhpcy5faGFzVGFza0RsZ3RPd25lcj10aGlzLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT10aGlzLl96b25lLEMub25TY2hlZHVsZVRhc2t8fCh0aGlzLl9zY2hlZHVsZVRhc2taUz1OLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9SSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJy'@; put 'Wm9uZT10aGlzLl96b25lKSxDLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1OLHRoaXMuX2ludm9rZVRhc2tEbGd0PUksdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuX3pvbmUpLEMub25DYW5jZWxUYXNrfHwodGhpcy5fY2FuY2VsVGFza1pTPU4sdGhpcy5fY2FuY2Vs'@; put 'VGFza0RsZ3Q9SSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9dGhpcy5fem9uZSkpfWZvcmsoYXQsSSl7cmV0dXJuIHRoaXMuX2ZvcmtaUz90aGlzLl9mb3JrWlMub25Gb3JrKHRoaXMuX2ZvcmtEbGd0LHRoaXMuem9uZSxhdCxJKTpuZXcgTyhhdCxJKX1pbnRlcmNlcHQoYXQsSSxDKXtyZXR1'@; put 'cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSxhdCxJLEMpOkl9aW52b2tlKGF0LEksQyxodCxFdCl7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9u'@; put 'SW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsYXQsSSxDLGh0LEV0KTpJLmFwcGx5KEMsaHQpfWhhbmRsZUVycm9yKGF0LEkpe3JldHVybiF0aGlzLl9oYW5kbGVFcnJvclpTfHx0aGlzLl9oYW5kbGVFcnJvclpTLm9uSGFuZGxlRXJyb3IodGhpcy5faGFuZGxl'@; put 'RXJyb3JEbGd0LHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUsYXQsSSl9c2NoZWR1bGVUYXNrKGF0LEkpe2xldCBDPUk7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZDLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksQz10aGlzLl9z'@; put 'Y2hlZHVsZVRhc2taUy5vblNjaGVkdWxlVGFzayh0aGlzLl9zY2hlZHVsZVRhc2tEbGd0LHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLGF0LEkpLEN8fChDPUkpO2Vsc2UgaWYoSS5zY2hlZHVsZUZuKUkuc2NoZWR1bGVGbihJKTtlbHNle2lmKEkudHlwZSE9S3QpdGhyb3cgbmV3IEVycm9y'@; put 'KCJUYXNrIGlzIG1pc3Npbmcgc2NoZWR1bGVGbi4iKTtIdChJKX1yZXR1cm4gQ31pbnZva2VUYXNrKGF0LEksQyxodCl7cmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUz90aGlzLl9pbnZva2VUYXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0LHRoaXMuX2ludm9rZVRhc2tD'@; put 'dXJyWm9uZSxhdCxJLEMsaHQpOkkuY2FsbGJhY2suYXBwbHkoQyxodCl9Y2FuY2VsVGFzayhhdCxJKXtsZXQgQztpZih0aGlzLl9jYW5jZWxUYXNrWlMpQz10aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9u'@; put 'ZSxhdCxJKTtlbHNle2lmKCFJLmNhbmNlbEZuKXRocm93IEVycm9yKCJUYXNrIGlzIG5vdCBjYW5jZWxhYmxlIik7Qz1JLmNhbmNlbEZuKEkpfXJldHVybiBDfWhhc1Rhc2soYXQsSSl7dHJ5e3RoaXMuX2hhc1Rhc2taUyYmdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNr'@; put 'RGxndCx0aGlzLl9oYXNUYXNrQ3VyclpvbmUsYXQsSSl9Y2F0Y2goQyl7dGhpcy5oYW5kbGVFcnJvcihhdCxDKX19X3VwZGF0ZVRhc2tDb3VudChhdCxJKXtjb25zdCBDPXRoaXMuX3Rhc2tDb3VudHMsaHQ9Q1thdF0sRXQ9Q1thdF09aHQrSTtpZihFdDwwKXRocm93IG5ldyBFcnJvcigiTW9y'@; put 'ZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPWh0JiYwIT1FdHx8dGhpcy5oYXNUYXNrKHRoaXMuX3pvbmUse21pY3JvVGFzazpDLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpDLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpDLmV2ZW50VGFzaz4wLGNoYW5nZTphdH0pfX1j'@; put 'bGFzcyBzdHt0eXBlO3NvdXJjZTtpbnZva2U7Y2FsbGJhY2s7ZGF0YTtzY2hlZHVsZUZuO2NhbmNlbEZuO196b25lPW51bGw7cnVuQ291bnQ9MDtfem9uZURlbGVnYXRlcz1udWxsO19zdGF0ZT0ibm90U2NoZWR1bGVkIjtjb25zdHJ1Y3RvcihhdCxJLEMsaHQsRXQsWnQpe2lmKHRoaXMudHlw'@; put 'ZT1hdCx0aGlzLnNvdXJjZT1JLHRoaXMuZGF0YT1odCx0aGlzLnNjaGVkdWxlRm49RXQsdGhpcy5jYW5jZWxGbj1adCwhQyl0aHJvdyBuZXcgRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBkZWZpbmVkIik7dGhpcy5jYWxsYmFjaz1DO2NvbnN0IGt0PXRoaXM7dGhpcy5pbnZva2U9YXQ9PT1XdCYm'@; put 'aHQmJmh0LnVzZUc/c3QuaW52b2tlVGFzazpmdW5jdGlvbigpe3JldHVybiBzdC5pbnZva2VUYXNrLmNhbGwoYyxrdCx0aGlzLGFyZ3VtZW50cyl9fXN0YXRpYyBpbnZva2VUYXNrKGF0LEksQyl7YXR8fChhdD10aGlzKSxlbisrO3RyeXtyZXR1cm4gYXQucnVuQ291bnQrKyxhdC56b25lLnJ1'@; put 'blRhc2soYXQsSSxDKX1maW5hbGx5ezE9PWVuJiZfdCgpLGVuLS19fWdldCB6b25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9Z2V0IHN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlfWNhbmNlbFNjaGVkdWxlUmVxdWVzdCgpe3RoaXMuX3RyYW5zaXRpb25UbyhWdCx2dCl9X3RyYW5zaXRpb25Ubyhh'@; put 'dCxJLEMpe2lmKHRoaXMuX3N0YXRlIT09SSYmdGhpcy5fc3RhdGUhPT1DKXRocm93IG5ldyBFcnJvcihgJHt0aGlzLnR5cGV9ICcke3RoaXMuc291cmNlfSc6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnJHthdH0nLCBleHBlY3Rpbmcgc3RhdGUgJyR7SX0nJHtDPyIgb3IgJyIrQysiJyI6IiJ9'@; put 'LCB3YXMgJyR7dGhpcy5fc3RhdGV9Jy5gKTt0aGlzLl9zdGF0ZT1hdCxhdD09VnQmJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuZGF0YSYmdHlwZW9mIHRoaXMuZGF0YS5oYW5kbGVJZDwidSI/dGhpcy5kYXRhLmhhbmRsZUlkLnRvU3RyaW5nKCk6'@; put 'T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfXRvSlNPTigpe3JldHVybnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSx6b25lOnRoaXMuem9uZS5uYW1lLHJ1bkNvdW50OnRoaXMucnVuQ291bnR9fX1jb25zdCBvdD1mKCJzZXRU'@; put 'aW1lb3V0IiksZnQ9ZigiUHJvbWlzZSIpLFN0PWYoInRoZW4iKTtsZXQgYnQscnQ9W10seHQ9ITE7ZnVuY3Rpb24gQnQoQXQpe2lmKGJ0fHxjW2Z0XSYmKGJ0PWNbZnRdLnJlc29sdmUoMCkpLGJ0KXtsZXQgYXQ9YnRbU3RdO2F0fHwoYXQ9YnQudGhlbiksYXQuY2FsbChidCxBdCl9ZWxzZSBj'@; put 'W290XShBdCwwKX1mdW5jdGlvbiBIdChBdCl7MD09PWVuJiYwPT09cnQubGVuZ3RoJiZCdChfdCksQXQmJnJ0LnB1c2goQXQpfWZ1bmN0aW9uIF90KCl7aWYoIXh0KXtmb3IoeHQ9ITA7cnQubGVuZ3RoOyl7Y29uc3QgQXQ9cnQ7cnQ9W107Zm9yKGxldCBhdD0wO2F0PEF0Lmxlbmd0aDthdCsr'@; put 'KXtjb25zdCBJPUF0W2F0XTt0cnl7SS56b25lLnJ1blRhc2soSSxudWxsLG51bGwpfWNhdGNoKEMpe1R0Lm9uVW5oYW5kbGVkRXJyb3IoQyl9fX1UdC5taWNyb3Rhc2tEcmFpbkRvbmUoKSx4dD0hMX19Y29uc3QgdG49e25hbWU6Ik5PIFpPTkUifSxWdD0ibm90U2NoZWR1bGVkIix2dD0ic2No'@; put 'ZWR1bGluZyIsWT0ic2NoZWR1bGVkIixqdD0icnVubmluZyIsTHQ9ImNhbmNlbGluZyIsWHQ9InVua25vd24iLEt0PSJtaWNyb1Rhc2siLHV0PSJtYWNyb1Rhc2siLFd0PSJldmVudFRhc2siLEl0PXt9LFR0PXtzeW1ib2w6ZixjdXJyZW50Wm9uZUZyYW1lOigpPT5ndCxvblVuaGFuZGxlZEVy'@; put 'cm9yOkp0LG1pY3JvdGFza0RyYWluRG9uZTpKdCxzY2hlZHVsZU1pY3JvVGFzazpIdCxzaG93VW5jYXVnaHRFcnJvcjooKT0+IU9bZigiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXSxwYXRjaEV2ZW50VGFyZ2V0OigpPT5bXSxwYXRjaE9uUHJvcGVydGllczpKdCxwYXRjaE1l'@; put 'dGhvZDooKT0+SnQsYmluZEFyZ3VtZW50czooKT0+W10scGF0Y2hUaGVuOigpPT5KdCxwYXRjaE1hY3JvVGFzazooKT0+SnQscGF0Y2hFdmVudFByb3RvdHlwZTooKT0+SnQsaXNJRU9yRWRnZTooKT0+ITEsZ2V0R2xvYmFsT2JqZWN0czooKT0+e30sT2JqZWN0RGVmaW5lUHJvcGVydHk6KCk9'@; put 'Pkp0LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjooKT0+e30sT2JqZWN0Q3JlYXRlOigpPT57fSxBcnJheVNsaWNlOigpPT5bXSxwYXRjaENsYXNzOigpPT5KdCx3cmFwV2l0aEN1cnJlbnRab25lOigpPT5KdCxmaWx0ZXJQcm9wZXJ0aWVzOigpPT5bXSxhdHRhY2hPcmlnaW5Ub1Bh'@; put 'dGNoZWQ6KCk9Pkp0LF9yZWRlZmluZVByb3BlcnR5OigpPT5KdCxwYXRjaENhbGxiYWNrczooKT0+SnQsbmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2s6QnR9O2xldCBndD17cGFyZW50Om51bGwsem9uZTpuZXcgTyhudWxsLG51bGwpfSxQdD1udWxsLGVuPTA7ZnVuY3Rpb24gSnQoKXt9cmV0dXJu'@; put 'IEwoIlpvbmUiLCJab25lIiksT30oKSxTLlpvbmV9KCk7KGZ1bmN0aW9uIE1uKFMpeyhmdW5jdGlvbiBpdChTKXtTLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKFIsTCxPKT0+e2NvbnN0IE49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixKPU9iamVjdC5kZWZpbmVQ'@; put 'cm9wZXJ0eSxvdD1PLnN5bWJvbCxmdD1bXSxTdD0hMSE9PVJbb3QoIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04iKV0scnQ9b3QoIlByb21pc2UiKSx4dD1vdCgidGhlbiIpO08ub25VbmhhbmRsZWRFcnJvcj16PT57aWYoTy5zaG93VW5jYXVnaHRFcnJvcigp'@; put 'KXtjb25zdCBXPXomJnoucmVqZWN0aW9uO1c/Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiIsVyBpbnN0YW5jZW9mIEVycm9yP1cubWVzc2FnZTpXLCI7IFpvbmU6Iix6LnpvbmUubmFtZSwiOyBUYXNrOiIsei50YXNrJiZ6LnRhc2suc291cmNlLCI7IFZhbHVl'@; put 'OiIsVyxXIGluc3RhbmNlb2YgRXJyb3I/Vy5zdGFjazp2b2lkIDApOmNvbnNvbGUuZXJyb3Ioeil9fSxPLm1pY3JvdGFza0RyYWluRG9uZT0oKT0+e2Zvcig7ZnQubGVuZ3RoOyl7Y29uc3Qgej1mdC5zaGlmdCgpO3RyeXt6LnpvbmUucnVuR3VhcmRlZCgoKT0+e3Rocm93IHoudGhyb3dPcmln'@; put 'aW5hbD96LnJlamVjdGlvbjp6fSl9Y2F0Y2goVyl7SHQoVyl9fX07Y29uc3QgQnQ9b3QoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIik7ZnVuY3Rpb24gSHQoeil7Ty5vblVuaGFuZGxlZEVycm9yKHopO3RyeXtjb25zdCBXPUxbQnRdOyJmdW5jdGlvbiI9PXR5cGVvZiBXJiZX'@; put 'LmNhbGwodGhpcyx6KX1jYXRjaHt9fWZ1bmN0aW9uIF90KHope3JldHVybiB6JiYiZnVuY3Rpb24iPT10eXBlb2Ygei50aGVufWZ1bmN0aW9uIHRuKHope3JldHVybiB6fWZ1bmN0aW9uIFZ0KHope3JldHVybiBrdC5yZWplY3Qoeil9Y29uc3QgdnQ9b3QoInN0YXRlIiksWT1vdCgidmFsdWUi'@; put 'KSxqdD1vdCgiZmluYWxseSIpLEx0PW90KCJwYXJlbnRQcm9taXNlVmFsdWUiKSxYdD1vdCgicGFyZW50UHJvbWlzZVN0YXRlIiksdXQ9bnVsbCxJdD0hMTtmdW5jdGlvbiBndCh6LFcpe3JldHVybiBqPT57dHJ5e0F0KHosVyxqKX1jYXRjaChHKXtBdCh6LCExLEcpfX19Y29uc3QgUHQ9ZnVu'@; put 'Y3Rpb24oKXtsZXQgej0hMTtyZXR1cm4gZnVuY3Rpb24oail7cmV0dXJuIGZ1bmN0aW9uKCl7enx8KHo9ITAsai5hcHBseShudWxsLGFyZ3VtZW50cykpfX19LGVuPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixKdD1vdCgiY3VycmVudFRhc2tUcmFjZSIpO2Z1bmN0aW9uIEF0KHos'@; put 'VyxqKXtjb25zdCBHPVB0KCk7aWYoej09PWopdGhyb3cgbmV3IFR5cGVFcnJvcihlbik7aWYoelt2dF09PT11dCl7bGV0IHB0PW51bGw7dHJ5eygib2JqZWN0Ij09dHlwZW9mIGp8fCJmdW5jdGlvbiI9PXR5cGVvZiBqKSYmKHB0PWomJmoudGhlbil9Y2F0Y2goTXQpe3JldHVybiBHKCgpPT57'@; put 'QXQoeiwhMSxNdCl9KSgpLHp9aWYoVyE9PUl0JiZqIGluc3RhbmNlb2Yga3QmJmouaGFzT3duUHJvcGVydHkodnQpJiZqLmhhc093blByb3BlcnR5KFkpJiZqW3Z0XSE9PXV0KUkoaiksQXQoeixqW3Z0XSxqW1ldKTtlbHNlIGlmKFchPT1JdCYmImZ1bmN0aW9uIj09dHlwZW9mIHB0KXRyeXtw'@; put 'dC5jYWxsKGosRyhndCh6LFcpKSxHKGd0KHosITEpKSl9Y2F0Y2goTXQpe0coKCk9PntBdCh6LCExLE10KX0pKCl9ZWxzZXt6W3Z0XT1XO2NvbnN0IE10PXpbWV07aWYoeltZXT1qLHpbanRdPT09anQmJiEwPT09VyYmKHpbdnRdPXpbWHRdLHpbWV09eltMdF0pLFc9PT1JdCYmaiBpbnN0YW5j'@; put 'ZW9mIEVycm9yKXtjb25zdCBjdD1MLmN1cnJlbnRUYXNrJiZMLmN1cnJlbnRUYXNrLmRhdGEmJkwuY3VycmVudFRhc2suZGF0YS5fX2NyZWF0aW9uVHJhY2VfXztjdCYmSihqLEp0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpjdH0pfWZvcihsZXQg'@; put 'Y3Q9MDtjdDxNdC5sZW5ndGg7KUMoeixNdFtjdCsrXSxNdFtjdCsrXSxNdFtjdCsrXSxNdFtjdCsrXSk7aWYoMD09TXQubGVuZ3RoJiZXPT1JdCl7elt2dF09MDtsZXQgY3Q9ajt0cnl7dGhyb3cgbmV3IEVycm9yKCJVbmNhdWdodCAoaW4gcHJvbWlzZSk6ICIrZnVuY3Rpb24gc3Qoeil7cmV0'@; put 'dXJuIHomJnoudG9TdHJpbmc9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPyh6LmNvbnN0cnVjdG9yJiZ6LmNvbnN0cnVjdG9yLm5hbWV8fCIiKSsiOiAiK0pTT04uc3RyaW5naWZ5KHopOno/ei50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh6KX0oaikrKGom'@; put 'Jmouc3RhY2s/IlxuIitqLnN0YWNrOiIiKSl9Y2F0Y2god3Qpe2N0PXd0fVN0JiYoY3QudGhyb3dPcmlnaW5hbD0hMCksY3QucmVqZWN0aW9uPWosY3QucHJvbWlzZT16LGN0LnpvbmU9TC5jdXJyZW50LGN0LnRhc2s9TC5jdXJyZW50VGFzayxmdC5wdXNoKGN0KSxPLnNjaGVkdWxlTWljcm9U'@; put 'YXNrKCl9fX1yZXR1cm4gen1jb25zdCBhdD1vdCgicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKTtmdW5jdGlvbiBJKHope2lmKDA9PT16W3Z0XSl7dHJ5e2NvbnN0IFc9TFthdF07VyYmImZ1bmN0aW9uIj09dHlwZW9mIFcmJlcuY2FsbCh0aGlzLHtyZWplY3Rpb246eltZXSxwcm9taXNlOnp9'@; put 'KX1jYXRjaHt9elt2dF09SXQ7Zm9yKGxldCBXPTA7VzxmdC5sZW5ndGg7VysrKXo9PT1mdFtXXS5wcm9taXNlJiZmdC5zcGxpY2UoVywxKX19ZnVuY3Rpb24gQyh6LFcsaixHLHB0KXtJKHopO2NvbnN0IE10PXpbdnRdLGN0PU10PyJmdW5jdGlvbiI9PXR5cGVvZiBHP0c6dG46ImZ1bmN0aW9u'@; put 'Ij09dHlwZW9mIHB0P3B0OlZ0O1cuc2NoZWR1bGVNaWNyb1Rhc2soIlByb21pc2UudGhlbiIsKCk9Pnt0cnl7Y29uc3Qgd3Q9eltZXSxSdD0hIWomJmp0PT09altqdF07UnQmJihqW0x0XT13dCxqW1h0XT1NdCk7Y29uc3QgRnQ9Vy5ydW4oY3Qsdm9pZCAwLFJ0JiZjdCE9PVZ0JiZjdCE9PXRu'@; put 'P1tdOlt3dF0pO0F0KGosITAsRnQpfWNhdGNoKHd0KXtBdChqLCExLHd0KX19LGopfWNvbnN0IEV0PWZ1bmN0aW9uKCl7fSxadD1SLkFnZ3JlZ2F0ZUVycm9yO2NsYXNzIGt0e3N0YXRpYyB0b1N0cmluZygpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNv'@; put 'ZGVdIH0ifXN0YXRpYyByZXNvbHZlKFcpe3JldHVybiBXIGluc3RhbmNlb2Yga3Q/VzpBdChuZXcgdGhpcyhudWxsKSwhMCxXKX1zdGF0aWMgcmVqZWN0KFcpe3JldHVybiBBdChuZXcgdGhpcyhudWxsKSxJdCxXKX1zdGF0aWMgd2l0aFJlc29sdmVycygpe2NvbnN0IFc9e307cmV0dXJuIFcu'@; put 'cHJvbWlzZT1uZXcga3QoKGosRyk9PntXLnJlc29sdmU9aixXLnJlamVjdD1HfSksV31zdGF0aWMgYW55KFcpe2lmKCFXfHwiZnVuY3Rpb24iIT10eXBlb2YgV1tTeW1ib2wuaXRlcmF0b3JdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgWnQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVj'@; put 'dGVkIikpO2NvbnN0IGo9W107bGV0IEc9MDt0cnl7Zm9yKGxldCBjdCBvZiBXKUcrKyxqLnB1c2goa3QucmVzb2x2ZShjdCkpfWNhdGNoe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgWnQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpfWlmKDA9PT1HKXJldHVybiBQcm9taXNl'@; put 'LnJlamVjdChuZXcgWnQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpO2xldCBwdD0hMTtjb25zdCBNdD1bXTtyZXR1cm4gbmV3IGt0KChjdCx3dCk9Pntmb3IobGV0IFJ0PTA7UnQ8ai5sZW5ndGg7UnQrKylqW1J0XS50aGVuKEZ0PT57cHR8fChwdD0hMCxjdChGdCkpfSxGdD0+'@; put 'e010LnB1c2goRnQpLEctLSwwPT09RyYmKHB0PSEwLHd0KG5ldyBadChNdCwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWQiKSkpfSl9KX1zdGF0aWMgcmFjZShXKXtsZXQgaixHLHB0PW5ldyB0aGlzKCh3dCxSdCk9PntqPXd0LEc9UnR9KTtmdW5jdGlvbiBNdCh3dCl7aih3dCl9ZnVuY3Rp'@; put 'b24gY3Qod3Qpe0cod3QpfWZvcihsZXQgd3Qgb2YgVylfdCh3dCl8fCh3dD10aGlzLnJlc29sdmUod3QpKSx3dC50aGVuKE10LGN0KTtyZXR1cm4gcHR9c3RhdGljIGFsbChXKXtyZXR1cm4ga3QuYWxsV2l0aENhbGxiYWNrKFcpfXN0YXRpYyBhbGxTZXR0bGVkKFcpe3JldHVybih0aGlzJiZ0'@; put 'aGlzLnByb3RvdHlwZSBpbnN0YW5jZW9mIGt0P3RoaXM6a3QpLmFsbFdpdGhDYWxsYmFjayhXLHt0aGVuQ2FsbGJhY2s6Rz0+KHtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6R30pLGVycm9yQ2FsbGJhY2s6Rz0+KHtzdGF0dXM6InJlamVjdGVkIixyZWFzb246R30pfSl9c3RhdGljIGFsbFdp'@; put 'dGhDYWxsYmFjayhXLGope2xldCBHLHB0LE10PW5ldyB0aGlzKChGdCwkdCk9PntHPUZ0LHB0PSR0fSksY3Q9Mix3dD0wO2NvbnN0IFJ0PVtdO2ZvcihsZXQgRnQgb2YgVyl7X3QoRnQpfHwoRnQ9dGhpcy5yZXNvbHZlKEZ0KSk7Y29uc3QgJHQ9d3Q7dHJ5e0Z0LnRoZW4oVXQ9PntSdFskdF09'@; put 'aj9qLnRoZW5DYWxsYmFjayhVdCk6VXQsY3QtLSwwPT09Y3QmJkcoUnQpfSxVdD0+e2o/KFJ0WyR0XT1qLmVycm9yQ2FsbGJhY2soVXQpLGN0LS0sMD09PWN0JiZHKFJ0KSk6cHQoVXQpfSl9Y2F0Y2goVXQpe3B0KFV0KX1jdCsrLHd0Kyt9cmV0dXJuIGN0LT0yLDA9PT1jdCYmRyhSdCksTXR9'@; put 'Y29uc3RydWN0b3IoVyl7Y29uc3Qgaj10aGlzO2lmKCEoaiBpbnN0YW5jZW9mIGt0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO2pbdnRdPXV0LGpbWV09W107dHJ5e2NvbnN0IEc9UHQoKTtXJiZXKEcoZ3QoaiwhMCkpLEcoZ3QoaixJdCkpKX1j'@; put 'YXRjaChHKXtBdChqLCExLEcpfX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJQcm9taXNlIn1nZXRbU3ltYm9sLnNwZWNpZXNdKCl7cmV0dXJuIGt0fXRoZW4oVyxqKXtsZXQgRz10aGlzLmNvbnN0cnVjdG9yPy5bU3ltYm9sLnNwZWNpZXNdOyghR3x8ImZ1bmN0aW9uIiE9dHlw'@; put 'ZW9mIEcpJiYoRz10aGlzLmNvbnN0cnVjdG9yfHxrdCk7Y29uc3QgcHQ9bmV3IEcoRXQpLE10PUwuY3VycmVudDtyZXR1cm4gdGhpc1t2dF09PXV0P3RoaXNbWV0ucHVzaChNdCxwdCxXLGopOkModGhpcyxNdCxwdCxXLGopLHB0fWNhdGNoKFcpe3JldHVybiB0aGlzLnRoZW4obnVsbCxXKX1m'@; put 'aW5hbGx5KFcpe2xldCBqPXRoaXMuY29uc3RydWN0b3I/LltTeW1ib2wuc3BlY2llc107KCFqfHwiZnVuY3Rpb24iIT10eXBlb2YgaikmJihqPWt0KTtjb25zdCBHPW5ldyBqKEV0KTtHW2p0XT1qdDtjb25zdCBwdD1MLmN1cnJlbnQ7cmV0dXJuIHRoaXNbdnRdPT11dD90aGlzW1ldLnB1c2go'@; put 'cHQsRyxXLFcpOkModGhpcyxwdCxHLFcsVyksR319a3QucmVzb2x2ZT1rdC5yZXNvbHZlLGt0LnJlamVjdD1rdC5yZWplY3Qsa3QucmFjZT1rdC5yYWNlLGt0LmFsbD1rdC5hbGw7Y29uc3QgbW49UltydF09Ui5Qcm9taXNlO1IuUHJvbWlzZT1rdDtjb25zdCBkbj1vdCgidGhlblBhdGNoZWQi'@; put 'KTtmdW5jdGlvbiB2bih6KXtjb25zdCBXPXoucHJvdG90eXBlLGo9TihXLCJ0aGVuIik7aWYoaiYmKCExPT09ai53cml0YWJsZXx8IWouY29uZmlndXJhYmxlKSlyZXR1cm47Y29uc3QgRz1XLnRoZW47V1t4dF09Ryx6LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHB0LE10KXtyZXR1cm4gbmV3'@; put 'IGt0KCh3dCxSdCk9PntHLmNhbGwodGhpcyx3dCxSdCl9KS50aGVuKHB0LE10KX0seltkbl09ITB9cmV0dXJuIE8ucGF0Y2hUaGVuPXZuLG1uJiYodm4obW4pLGR0KFIsImZldGNoIix6PT5mdW5jdGlvbiB1bih6KXtyZXR1cm4gZnVuY3Rpb24oVyxqKXtsZXQgRz16LmFwcGx5KFcsaik7aWYo'@; put 'RyBpbnN0YW5jZW9mIGt0KXJldHVybiBHO2xldCBwdD1HLmNvbnN0cnVjdG9yO3JldHVybiBwdFtkbl18fHZuKHB0KSxHfX0oeikpKSxQcm9taXNlW0wuX19zeW1ib2xfXygidW5jYXVnaHRQcm9taXNlRXJyb3JzIildPWZ0LGt0fSl9KShTKSxmdW5jdGlvbiB6dChTKXtTLl9fbG9hZF9wYXRj'@; put 'aCgidG9TdHJpbmciLFI9Pntjb25zdCBMPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxPPXgoIk9yaWdpbmFsRGVsZWdhdGUiKSxOPXgoIlByb21pc2UiKSxKPXgoIkVycm9yIiksc3Q9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7Y29uc3QgcnQ9dGhpc1tPXTtp'@; put 'ZihydClyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgcnQ/TC5jYWxsKHJ0KTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocnQpO2lmKHRoaXM9PT1Qcm9taXNlKXtjb25zdCB4dD1SW05dO2lmKHh0KXJldHVybiBMLmNhbGwoeHQpfWlmKHRoaXM9PT1FcnJvcil7Y29uc3QgeHQ9UltK'@; put 'XTtpZih4dClyZXR1cm4gTC5jYWxsKHh0KX19cmV0dXJuIEwuY2FsbCh0aGlzKX07c3RbT109TCxGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9c3Q7Y29uc3Qgb3Q9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJu'@; put 'ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2UmJnRoaXMgaW5zdGFuY2VvZiBQcm9taXNlPyJbb2JqZWN0IFByb21pc2VdIjpvdC5jYWxsKHRoaXMpfX0pfShTKSxmdW5jdGlvbiBybihTKXtTLl9fbG9hZF9wYXRjaCgidXRpbCIsKFIsTCxPKT0+e2NvbnN0IE49XyhSKTtPLnBhdGNoT25Qcm9w'@; put 'ZXJ0aWVzPWV0LE8ucGF0Y2hNZXRob2Q9ZHQsTy5iaW5kQXJndW1lbnRzPVQsTy5wYXRjaE1hY3JvVGFzaz1DdDtjb25zdCBKPUwuX19zeW1ib2xfXygiQkxBQ0tfTElTVEVEX0VWRU5UUyIpLHN0PUwuX19zeW1ib2xfXygiVU5QQVRDSEVEX0VWRU5UUyIpO1Jbc3RdJiYoUltKXT1SW3N0XSks'@; put 'UltKXSYmKExbSl09TFtzdF09UltKXSksTy5wYXRjaEV2ZW50UHJvdG90eXBlPVRuLE8ucGF0Y2hFdmVudFRhcmdldD1ubixPLmlzSUVPckVkZ2U9YW4sTy5PYmplY3REZWZpbmVQcm9wZXJ0eT1zLE8uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWUsTy5PYmplY3RDcmVhdGU9dSxP'@; put 'LkFycmF5U2xpY2U9bCxPLnBhdGNoQ2xhc3M9bHQsTy53cmFwV2l0aEN1cnJlbnRab25lPUQsTy5maWx0ZXJQcm9wZXJ0aWVzPSQsTy5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQ9T3QsTy5fcmVkZWZpbmVQcm9wZXJ0eT1PYmplY3QuZGVmaW5lUHJvcGVydHksTy5wYXRjaENhbGxiYWNrcz1xdCxP'@; put 'LmdldEdsb2JhbE9iamVjdHM9KCk9Pih7Z2xvYmFsU291cmNlczpwbix6b25lU3ltYm9sRXZlbnROYW1lczpZdCxldmVudE5hbWVzOk4saXNCcm93c2VyOm50LGlzTWl4OnR0LGlzTm9kZTpaLFRSVUVfU1RSOnksRkFMU0VfU1RSOkUsWk9ORV9TWU1CT0xfUFJFRklYOmcsQUREX0VWRU5UX0xJ'@; put 'U1RFTkVSX1NUUjppLFJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFI6dn0pfSl9KFMpfSkoUm4pLGZ1bmN0aW9uIFEoUyl7Uy5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsUj0+e2NvbnN0IEw9UltTLl9fc3ltYm9sX18oImxlZ2FjeVBhdGNoIildO0wmJkwoKX0pLFMuX19sb2FkX3BhdGNoKCJ0aW1l'@; put 'cnMiLFI9Pntjb25zdCBPPSJjbGVhciI7YShSLCJzZXQiLE8sIlRpbWVvdXQiKSxhKFIsInNldCIsTywiSW50ZXJ2YWwiKSxhKFIsInNldCIsTywiSW1tZWRpYXRlIil9KSxTLl9fbG9hZF9wYXRjaCgicmVxdWVzdEFuaW1hdGlvbkZyYW1lIixSPT57YShSLCJyZXF1ZXN0IiwiY2FuY2VsIiwi'@; put 'QW5pbWF0aW9uRnJhbWUiKSxhKFIsIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLGEoUiwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIil9KSxTLl9fbG9hZF9wYXRjaCgiYmxvY2tpbmciLChSLEwpPT57Y29uc3QgTz1bImFs'@; put 'ZXJ0IiwicHJvbXB0IiwiY29uZmlybSJdO2ZvcihsZXQgTj0wO048Ty5sZW5ndGg7TisrKWR0KFIsT1tOXSwoc3Qsb3QsZnQpPT5mdW5jdGlvbihTdCxydCl7cmV0dXJuIEwuY3VycmVudC5ydW4oc3QsUixydCxmdCl9KX0pLFMuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldCIsKFIsTCxPKT0+'@; put 'eyhmdW5jdGlvbiBLKFMsUil7Ui5wYXRjaEV2ZW50UHJvdG90eXBlKFMsUil9KShSLE8pLGZ1bmN0aW9uIHcoUyxSKXtpZihab25lW1Iuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXJldHVybjtjb25zdHtldmVudE5hbWVzOkwsem9uZVN5bWJvbEV2ZW50TmFtZXM6TyxUUlVFX1NUUjpO'@; put 'LEZBTFNFX1NUUjpKLFpPTkVfU1lNQk9MX1BSRUZJWDpzdH09Ui5nZXRHbG9iYWxPYmplY3RzKCk7Zm9yKGxldCBmdD0wO2Z0PEwubGVuZ3RoO2Z0Kyspe2NvbnN0IFN0PUxbZnRdLGJ0PXN0KyhTdCtKKSxCdD1zdCsoU3QrTik7T1tTdF09e30sT1tTdF1bSl09YnQsT1tTdF1bTl09QnR9Y29u'@; put 'c3Qgb3Q9Uy5FdmVudFRhcmdldDtvdCYmb3QucHJvdG90eXBlJiZSLnBhdGNoRXZlbnRUYXJnZXQoUyxSLFtvdCYmb3QucHJvdG90eXBlXSl9KFIsTyk7Y29uc3QgTj1SLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7TiYmTi5wcm90b3R5cGUmJk8ucGF0Y2hFdmVudFRhcmdldChSLE8sW04u'@; put 'cHJvdG90eXBlXSl9KSxTLl9fbG9hZF9wYXRjaCgiTXV0YXRpb25PYnNlcnZlciIsKFIsTCxPKT0+e2x0KCJNdXRhdGlvbk9ic2VydmVyIiksbHQoIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKX0pLFMuX19sb2FkX3BhdGNoKCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsKFIsTCxPKT0+e2x0KCJJ'@; put 'bnRlcnNlY3Rpb25PYnNlcnZlciIpfSksUy5fX2xvYWRfcGF0Y2goIkZpbGVSZWFkZXIiLChSLEwsTyk9PntsdCgiRmlsZVJlYWRlciIpfSksUy5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoUixMLE8pPT57IWZ1bmN0aW9uIEgoUyxSKXtpZihaJiYhdHR8fFpvbmVbUy5zeW1ib2woInBh'@; put 'dGNoRXZlbnRzIildKXJldHVybjtjb25zdCBMPVIuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2xldCBPPVtdO2lmKG50KXtjb25zdCBOPXdpbmRvdztPPU8uY29uY2F0KFsiRG9jdW1lbnQiLCJTVkdFbGVtZW50IiwiRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiSFRNTEJvZHlFbGVtZW50'@; put 'IiwiSFRNTE1lZGlhRWxlbWVudCIsIkhUTUxGcmFtZVNldEVsZW1lbnQiLCJIVE1MRnJhbWVFbGVtZW50IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJIVE1MTWFycXVlZUVsZW1lbnQiLCJXb3JrZXIiXSk7Y29uc3QgSj1bXTtEdChOLF8oTiksTCYmTC5jb25jYXQoSiksbyhOKSl9Tz1PLmNvbmNh'@; put 'dChbIlhNTEh0dHBSZXF1ZXN0IiwiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCIsIklEQkluZGV4IiwiSURCUmVxdWVzdCIsIklEQk9wZW5EQlJlcXVlc3QiLCJJREJEYXRhYmFzZSIsIklEQlRyYW5zYWN0aW9uIiwiSURCQ3Vyc29yIiwiV2ViU29ja2V0Il0pO2ZvcihsZXQgTj0wO048Ty5s'@; put 'ZW5ndGg7TisrKXtjb25zdCBKPVJbT1tOXV07Sj8ucHJvdG90eXBlJiZEdChKLnByb3RvdHlwZSxfKEoucHJvdG90eXBlKSxMKX19KE8sUil9KSxTLl9fbG9hZF9wYXRjaCgiY3VzdG9tRWxlbWVudHMiLChSLEwsTyk9PnshZnVuY3Rpb24gbShTLFIpe2NvbnN0e2lzQnJvd3NlcjpMLGlzTWl4'@; put 'Ok99PVIuZ2V0R2xvYmFsT2JqZWN0cygpOyhMfHxPKSYmUy5jdXN0b21FbGVtZW50cyYmImN1c3RvbUVsZW1lbnRzImluIFMmJlIucGF0Y2hDYWxsYmFja3MoUixTLmN1c3RvbUVsZW1lbnRzLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5l'@; put 'Y3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIiwiZm9ybUFzc29jaWF0ZWRDYWxsYmFjayIsImZvcm1EaXNhYmxlZENhbGxiYWNrIiwiZm9ybVJlc2V0Q2FsbGJhY2siLCJmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2siXSl9KFIsTyl9KSxT'@; put 'Ll9fbG9hZF9wYXRjaCgiWEhSIiwoUixMKT0+eyFmdW5jdGlvbiBTdChydCl7Y29uc3QgeHQ9cnQuWE1MSHR0cFJlcXVlc3Q7aWYoIXh0KXJldHVybjtjb25zdCBidD14dC5wcm90b3R5cGU7bGV0IEh0PWJ0W3BdLF90PWJ0W2RdO2lmKCFIdCl7Y29uc3QgVHQ9cnQuWE1MSHR0cFJlcXVlc3RF'@; put 'dmVudFRhcmdldDtpZihUdCl7Y29uc3QgZ3Q9VHQucHJvdG90eXBlO0h0PWd0W3BdLF90PWd0W2RdfX1jb25zdCB0bj0icmVhZHlzdGF0ZWNoYW5nZSIsVnQ9InNjaGVkdWxlZCI7ZnVuY3Rpb24gdnQoVHQpe2NvbnN0IGd0PVR0LmRhdGEsUHQ9Z3QudGFyZ2V0O1B0W3N0XT0hMSxQdFtmdF09'@; put 'ITE7Y29uc3QgZW49UHRbSl07SHR8fChIdD1QdFtwXSxfdD1QdFtkXSksZW4mJl90LmNhbGwoUHQsdG4sZW4pO2NvbnN0IEp0PVB0W0pdPSgpPT57aWYoUHQucmVhZHlTdGF0ZT09PVB0LkRPTkUpaWYoIWd0LmFib3J0ZWQmJlB0W3N0XSYmVHQuc3RhdGU9PT1WdCl7Y29uc3QgYXQ9UHRbTC5f'@; put 'X3N5bWJvbF9fKCJsb2FkZmFsc2UiKV07aWYoMCE9PVB0LnN0YXR1cyYmYXQmJmF0Lmxlbmd0aD4wKXtjb25zdCBJPVR0Lmludm9rZTtUdC5pbnZva2U9ZnVuY3Rpb24oKXtjb25zdCBDPVB0W0wuX19zeW1ib2xfXygibG9hZGZhbHNlIildO2ZvcihsZXQgaHQ9MDtodDxDLmxlbmd0aDtodCsr'@; put 'KUNbaHRdPT09VHQmJkMuc3BsaWNlKGh0LDEpOyFndC5hYm9ydGVkJiZUdC5zdGF0ZT09PVZ0JiZJLmNhbGwoVHQpfSxhdC5wdXNoKFR0KX1lbHNlIFR0Lmludm9rZSgpfWVsc2UhZ3QuYWJvcnRlZCYmITE9PT1QdFtzdF0mJihQdFtmdF09ITApfTtyZXR1cm4gSHQuY2FsbChQdCx0bixKdCks'@; put 'UHRbT118fChQdFtPXT1UdCksV3QuYXBwbHkoUHQsZ3QuYXJncyksUHRbc3RdPSEwLFR0fWZ1bmN0aW9uIFkoKXt9ZnVuY3Rpb24ganQoVHQpe2NvbnN0IGd0PVR0LmRhdGE7cmV0dXJuIGd0LmFib3J0ZWQ9ITAsSXQuYXBwbHkoZ3QudGFyZ2V0LGd0LmFyZ3MpfWNvbnN0IEx0PWR0KGJ0LCJv'@; put 'cGVuIiwoKT0+ZnVuY3Rpb24oVHQsZ3Qpe3JldHVybiBUdFtOXT0wPT1ndFsyXSxUdFtvdF09Z3RbMV0sTHQuYXBwbHkoVHQsZ3QpfSksS3Q9eCgiZmV0Y2hUYXNrQWJvcnRpbmciKSx1dD14KCJmZXRjaFRhc2tTY2hlZHVsaW5nIiksV3Q9ZHQoYnQsInNlbmQiLCgpPT5mdW5jdGlvbihUdCxn'@; put 'dCl7aWYoITA9PT1MLmN1cnJlbnRbdXRdfHxUdFtOXSlyZXR1cm4gV3QuYXBwbHkoVHQsZ3QpO3tjb25zdCBQdD17dGFyZ2V0OlR0LHVybDpUdFtvdF0saXNQZXJpb2RpYzohMSxhcmdzOmd0LGFib3J0ZWQ6ITF9LGVuPUYoIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLFksUHQsdnQsanQpO1R0JiYh'@; put 'MD09PVR0W2Z0XSYmIVB0LmFib3J0ZWQmJmVuLnN0YXRlPT09VnQmJmVuLmludm9rZSgpfX0pLEl0PWR0KGJ0LCJhYm9ydCIsKCk9PmZ1bmN0aW9uKFR0LGd0KXtjb25zdCBQdD1mdW5jdGlvbiBCdChUdCl7cmV0dXJuIFR0W09dfShUdCk7aWYoUHQmJiJzdHJpbmciPT10eXBlb2YgUHQudHlw'@; put 'ZSl7aWYobnVsbD09UHQuY2FuY2VsRm58fFB0LmRhdGEmJlB0LmRhdGEuYWJvcnRlZClyZXR1cm47UHQuem9uZS5jYW5jZWxUYXNrKFB0KX1lbHNlIGlmKCEwPT09TC5jdXJyZW50W0t0XSlyZXR1cm4gSXQuYXBwbHkoVHQsZ3QpfSl9KFIpO2NvbnN0IE89eCgieGhyVGFzayIpLE49eCgieGhy'@; put 'U3luYyIpLEo9eCgieGhyTGlzdGVuZXIiKSxzdD14KCJ4aHJTY2hlZHVsZWQiKSxvdD14KCJ4aHJVUkwiKSxmdD14KCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpfSksUy5fX2xvYWRfcGF0Y2goImdlb2xvY2F0aW9uIixSPT57Ui5uYXZpZ2F0b3ImJlIubmF2aWdhdG9yLmdlb2xvY2F0aW9u'@; put 'JiZmdW5jdGlvbiBiKFMsUil7Y29uc3QgTD1TLmNvbnN0cnVjdG9yLm5hbWU7Zm9yKGxldCBPPTA7TzxSLmxlbmd0aDtPKyspe2NvbnN0IE49UltPXSxKPVNbTl07aWYoSil7aWYoIUIoZShTLE4pKSljb250aW51ZTtTW05dPShvdD0+e2NvbnN0IGZ0PWZ1bmN0aW9uKCl7cmV0dXJuIG90LmFw'@; put 'cGx5KHRoaXMsVChhcmd1bWVudHMsTCsiLiIrTikpfTtyZXR1cm4gT3QoZnQsb3QpLGZ0fSkoSil9fX0oUi5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSksUy5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIs'@; put 'KFIsTCk9PntmdW5jdGlvbiBPKE4pe3JldHVybiBmdW5jdGlvbihKKXt5bihSLE4pLmZvckVhY2gob3Q9Pntjb25zdCBmdD1SLlByb21pc2VSZWplY3Rpb25FdmVudDtpZihmdCl7Y29uc3QgU3Q9bmV3IGZ0KE4se3Byb21pc2U6Si5wcm9taXNlLHJlYXNvbjpKLnJlamVjdGlvbn0pO290Lmlu'@; put 'dm9rZShTdCl9fSl9fVIuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoTFt4KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1PKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxMW3goInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPU8oInJlamVjdGlvbmhhbmRsZWQiKSl9KSxTLl9f'@; put 'bG9hZF9wYXRjaCgicXVldWVNaWNyb3Rhc2siLChSLEwsTyk9PnshZnVuY3Rpb24gaChTLFIpe1IucGF0Y2hNZXRob2QoUywicXVldWVNaWNyb3Rhc2siLEw9PmZ1bmN0aW9uKE8sTil7Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJxdWV1ZU1pY3JvdGFzayIsTlswXSl9KX0oUixP'@; put 'KX0pfShSbil9LDkyNTY4KGMsZix0KXsidXNlIHN0cmljdCI7Y29uc3Qgbj10KDgyNTc0KTtJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzPWZ1bmN0aW9uKFApe2xldCBNPXRoaXMucmVzb2x2ZWRPcHRpb25zKCksVD1mdW5jdGlvbiBrKFApe3ZhciBaLG50LHR0'@; put 'LHl0LG10LE09UC5hdmFpbGFibGVGb3JtYXRzLFQ9UC50aW1lRm9ybWF0cyxiPVAuZGF0ZUZvcm1hdHMsQj1QLm1lZGl1bSxVPVtdLHE9W10sWD1bXTtmdW5jdGlvbiBldChWLGx0KXt2YXIgZHQ9bmV3IEFycmF5KChWLm1hdGNoKC9NL2cpfHxbXSkubGVuZ3RoKzEpLEN0PW5ldyBBcnJheSgo'@; put 'Vi5tYXRjaCgvRS9nKXx8W10pLmxlbmd0aCsxKTtyZXR1cm4gZHQubGVuZ3RoPjImJihsdD1sdC5yZXBsYWNlKC8oTXxMKSsvLGR0LmpvaW4oIiQxIikpKSxDdC5sZW5ndGg+MiYmKGx0PWx0LnJlcGxhY2UoLyhbRWVjXSkrLyxDdC5qb2luKCIkMSIpKSksbHR9Zm9yKFogaW4gTSlNLmhhc093'@; put 'blByb3BlcnR5KFopJiYoKHR0PUEobnQ9ZXQoWixNW1pdKSkpJiYoVS5wdXNoKHR0KSxGKHR0KT9YLnB1c2gobnQpOngodHQpJiZxLnB1c2gobnQpKSk7Zm9yKHl0PTA7eXQ8cS5sZW5ndGg7eXQrPTEpZm9yKG10PTA7bXQ8WC5sZW5ndGg7bXQrPTEpKHR0PUEobnQ9Qi5yZXBsYWNlKCJ7MH0i'@; put 'LHFbeXRdKS5yZXBsYWNlKCJ7MX0iLFhbbXRdKS5yZXBsYWNlKC9eWyxcc10rfFssXHNdKyQvZ2ksIiIpKSkmJlUucHVzaCh0dCk7Zm9yKFogaW4gVClULmhhc093blByb3BlcnR5KFopJiYoKHR0PUEobnQ9ZXQoWixUW1pdKSkpJiZVLnB1c2godHQpKTtmb3IoWiBpbiBiKWIuaGFzT3duUHJv'@; put 'cGVydHkoWikmJigodHQ9QShudD1ldChaLGJbWl0pKSkmJlUucHVzaCh0dCkpO3JldHVybiBVfShuLmRhdGUuZm9ybWF0cyksYj17fTtmb3IodmFyIEIgaW4gbClzLmNhbGwobCxCKSYmKGJbIltbIitCKyJdXSJdPU1bQl0pO2xldCBaPWZ1bmN0aW9uIGkoUCxNLFQpe2Zvcih2YXIgcSxtdD0t'@; put 'MS8wLFg9MCxldD1NLmxlbmd0aDtYPGV0Oyl7dmFyIFY9TVtYXSxsdD0wO2Zvcih2YXIgZHQgaW4gbClpZihzLmNhbGwobCxkdCkpe3ZhciBDdD1QWyJbWyIrZHQrIl1dIl0sT3Q9cy5jYWxsKFYsZHQpP1ZbZHRdOnZvaWQgMDtpZih2b2lkIDA9PT1DdCYmdm9pZCAwIT09T3QpbHQtPTIwO2Vs'@; put 'c2UgaWYodm9pZCAwIT09Q3QmJnZvaWQgMD09PU90KWx0LT0xMjA7ZWxzZXt2YXIgTnQ9WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdLFF0PW8uY2FsbChOdCxDdCksYW49by5jYWxsKE50LE90KSxHdD1NYXRoLm1heChNYXRoLm1pbihhbi1RdCwyKSwtMik7'@; put 'VCYmKCgibnVtZXJpYyI9PT1DdHx8IjItZGlnaXQiPT09Q3QpJiYibnVtZXJpYyIhPT1PdCYmIjItZGlnaXQiIT09T3R8fCJudW1lcmljIiE9PUN0JiYiMi1kaWdpdCIhPT1DdCYmKCIyLWRpZ2l0Ij09PU90fHwibnVtZXJpYyI9PT1PdCkpJiYobHQtPTgpLDI9PT1HdD9sdC09NjoxPT09R3Q/'@; put 'bHQtPTM6LTE9PT1HdD9sdC09NjotMj09PUd0JiYobHQtPTgpfX1sdD5tdCYmKG10PWx0LHE9ViksWCsrfXJldHVybiBxfShiLFQpO3JldHVybiBmdW5jdGlvbiBlKFAsTSl7aWYoIWlzRmluaXRlKE0pKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHZhbGlkIGRhdGUgcGFzc2VkIHRv'@; put 'IGZvcm1hdFRvUGFydHMiKTtmb3IodmFyIHEsVD0iZW4tVVMiLGI9UC5wYXR0ZXJuLFo9KG5ldyBJbnRsLk51bWJlckZvcm1hdChbVF0se3VzZUdyb3VwaW5nOiExfSksbmV3IEludGwuTnVtYmVyRm9ybWF0KFtUXSx7bWluaW11bUludGVnZXJEaWdpdHM6Mix1c2VHcm91cGluZzohMX0pLGZ1'@; put 'bmN0aW9uIHYoUCxNLFQpe3ZhciBiPW5ldyBEYXRlKFApLEI9ImdldCIrKFR8fCIiKTtyZXR1cm57Iltbd2Vla2RheV1dIjpiW0IrIkRheSJdKCksIltbZXJhXV0iOisoYltCKyJGdWxsWWVhciJdKCk+PTApLCJbW3llYXJdXSI6YltCKyJGdWxsWWVhciJdKCksIltbbW9udGhdXSI6YltCKyJN'@; put 'b250aCJdKCksIltbZGF5XV0iOmJbQisiRGF0ZSJdKCksIltbaG91cl1dIjpiW0IrIkhvdXJzIl0oKSwiW1ttaW51dGVdXSI6YltCKyJNaW51dGVzIl0oKSwiW1tzZWNvbmRdXSI6YltCKyJTZWNvbmRzIl0oKSwiW1tpbkRTVF1dIjohMX19KE0pKSxudD0iZ3JlZ29yeSIsdHQ9bi5kYXRlLmNh'@; put 'bGVuZGFycyx5dD1bXSxtdD0veyhbXn1dKyl9L2csWD0wO251bGwhPT0ocT1tdC5leGVjKGIpKTspe1g8cS5pbmRleCYmeXQucHVzaCh7dHlwZToic2VwYXJhdG9yIix2YWx1ZTpiLnN1YnN0cihYLHEuaW5kZXgtWCl9KTt2YXIgZXQ9cVsxXSxWPW51bGw7aWYocy5jYWxsKFAsZXQpKXt2YXIg'@; put 'bHQsZHQ9UFtldF0sQ3Q9WlsiW1siK2V0KyJdXSJdO2lmKCJ5ZWFyIj09PWV0JiZDdDw9MD9DdD0xLUN0OiJtb250aCI9PT1ldD9DdCsrOiJob3VyIj09PWV0JiYhMD09PVBbIltbaG91cjEyXV0iXSYmKGx0PShDdCU9MTIpIT09WlsiW1siK2V0KyJdXSJdLDA9PT1DdCYmITA9PT1QWyJbW2hv'@; put 'dXJObzBdXSJdJiYoQ3Q9MTIpKSwibnVtZXJpYyI9PT1kdClWPUN0O2Vsc2UgaWYoIjItZGlnaXQiPT09ZHQpKFY9Q3QpLmxlbmd0aD4yJiYoVj1WLnNsaWNlKC0yKSk7ZWxzZSBpZihkdCBpbiB1KXN3aXRjaChldCl7Y2FzZSJtb250aCI6Vj1wKHR0LG50LCJtb250aHMiLGR0LFpbIltbIitl'@; put 'dCsiXV0iXSk7YnJlYWs7Y2FzZSJ3ZWVrZGF5Ijp0cnl7Vj1wKHR0LG50LCJkYXlzIixkdCxaWyJbWyIrZXQrIl1dIl0pfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgd2Vla2RheSBkYXRhIGZvciBsb2NhbGUgIitUKX1icmVhaztjYXNlInRpbWVab25lTmFtZSI6Vj0i'@; put 'IjticmVhaztkZWZhdWx0OlY9WlsiW1siK2V0KyJdXSJdfX1lbHNlImFtcG0iPT09ZXQmJihWPXAodHQsbnQsImRheVBlcmlvZHMiLGx0PyJwbSI6ImFtIikpO251bGwhPT1WJiYoeXQucHVzaCh7dHlwZTpxWzFdLHZhbHVlOlZ9KSxYPXEuaW5kZXgrcVswXS5sZW5ndGgpfXJldHVybiBYPGIu'@; put 'bGVuZ3RoJiZ5dC5wdXNoKHt0eXBlOiJzZXBhcmF0b3IiLHZhbHVlOmIuc3Vic3RyKFgpfSkseXR9KFosUCl9O3ZhciBzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZix1PU9iamVjdC5jcmVhdGUobnVsbCx7bmFycm93Ont9LHNob3J0'@; put 'Ont9LGxvbmc6e319KSxsPXt3ZWVrZGF5OlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0sZXJhOlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0seWVhcjpbIjItZGlnaXQiLCJudW1lcmljIl0sbW9udGg6WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdLGRheTpb'@; put 'IjItZGlnaXQiLCJudW1lcmljIl0saG91cjpbIjItZGlnaXQiLCJudW1lcmljIl0sbWludXRlOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxzZWNvbmQ6WyIyLWRpZ2l0IiwibnVtZXJpYyJdLHRpbWVab25lTmFtZTpbInNob3J0IiwibG9uZyJdfTtmdW5jdGlvbiBwKFAsTSxULGIsQil7dmFyIFU9'@; put 'UFtNXSYmUFtNXVtUXT9QW01dW1RdOlAuZ3JlZ29yeVtUXSxaPXtuYXJyb3c6WyJzaG9ydCIsImxvbmciXSxzaG9ydDpbImxvbmciLCJuYXJyb3ciXSxsb25nOlsic2hvcnQiLCJuYXJyb3ciXX0sbnQ9cy5jYWxsKFUsYik/VVtiXTpzLmNhbGwoVSxaW2JdWzBdKT9VW1pbYl1bMF1dOlVbWlti'@; put 'XVsxXV07cmV0dXJuIG51bGwhPUI/bnRbQl06bnR9dmFyIGQ9Lyg/OltFZWNdezEsNn18R3sxLDV9fCg/Olt5WXVdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18YXxbaGtIS117MSwyfXxtezEsMn18c3sxLDJ9fHp7MSw0fSkoPz0oW14nXSonW14nXSonKSpbXiddKiQpL2cseT0vW1F4WFZP'@; put 'dlpBU2pnRkR3V0lRcUhdLyxFPXttb250aDpbIm51bWVyaWMiLCIyLWRpZ2l0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Il0sd2Vla2RheTpbInNob3J0Iiwic2hvcnQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXSxlcmE6WyJzaG9ydCIsInNob3J0Iiwic2hvcnQiLCJsb25nIiwibmFycm93'@; put 'Il19LGc9WyJ3ZWVrZGF5IiwiZXJhIiwieWVhciIsIm1vbnRoIiwiZGF5Il0sRD1bImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJ0aW1lWm9uZU5hbWUiXTtmdW5jdGlvbiBGKFApe2Zvcih2YXIgTT0wO008RC5sZW5ndGg7TSs9MSlpZihQLmhhc093blByb3BlcnR5KERbTV0pKXJldHVybiEx'@; put 'O3JldHVybiEwfWZ1bmN0aW9uIHgoUCl7Zm9yKHZhciBNPTA7TTxnLmxlbmd0aDtNKz0xKWlmKFAuaGFzT3duUHJvcGVydHkoZ1tNXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQShQKXtpZigheS50ZXN0KFApKXt2YXIgTT17fTtyZXR1cm4gTS5wYXR0ZXJuPVAucmVwbGFjZShkLGZ1'@; put 'bmN0aW9uKFQpe3N3aXRjaChULmNoYXJBdCgwKSl7Y2FzZSJFIjpjYXNlImUiOmNhc2UiYyI6cmV0dXJuIE0ud2Vla2RheT1FLndlZWtkYXlbVC5sZW5ndGgtMV0sInt3ZWVrZGF5fSI7Y2FzZSJHIjpyZXR1cm4gTS5lcmE9RS5lcmFbVC5sZW5ndGgtMV0sIntlcmF9IjtjYXNlInkiOmNhc2Ui'@; put 'WSI6Y2FzZSJ1IjpjYXNlIlUiOnJldHVybiBNLnllYXI9Mj09PVQubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInt5ZWFyfSI7Y2FzZSJNIjpjYXNlIkwiOnJldHVybiBNLm1vbnRoPUUubW9udGhbVC5sZW5ndGgtMV0sInttb250aH0iO2Nhc2UiZCI6cmV0dXJuIE0uZGF5PTI9PT1ULmxl'@; put 'bmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7ZGF5fSI7Y2FzZSJhIjpyZXR1cm4ie2FtcG19IjtjYXNlImgiOmNhc2UiSCI6Y2FzZSJrIjpjYXNlIksiOnJldHVybiBNLmhvdXI9Mj09PVQubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsIntob3VyfSI7Y2FzZSJtIjpyZXR1cm4gTS5taW51'@; put 'dGU9Mj09PVQubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInttaW51dGV9IjtjYXNlInMiOnJldHVybiBNLnNlY29uZD0yPT09VC5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie3NlY29uZH0iO2Nhc2UieiI6cmV0dXJuIE0udGltZVpvbmVOYW1lPVQubGVuZ3RoPDQ/InNob3J0Ijoi'@; put 'bG9uZyIsInt0aW1lWm9uZU5hbWV9In19KSxNLnBhdHRlcm49TS5wYXR0ZXJuLnJlcGxhY2UoLycoW14nXSopJy9nLGZ1bmN0aW9uKFQsYil7cmV0dXJuIGJ8fCInIn0pLE0ucGF0dGVybi5pbmRleE9mKCJ7YW1wbX0iKT4tMSYmKE0uaG91cjEyPSEwLE0ucGF0dGVybjEyPU0ucGF0dGVybixN'@; put 'LnBhdHRlcm49TS5wYXR0ZXJuLnJlcGxhY2UoInthbXBtfSIsIiIpLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKSksTX19fSw2NjM3NChjLGYsdCl7dCg4Mjk3NSksdCg0Nzg5OSksdCg5Mzg2MyksdCg4MjE4OSksdCg5NjUxMSksdCg5NTg1MyksdCg5'@; put 'NzA3NSksdCgzNTA0KSx0KDU0OTEzKSx0KDM5ODEzKSx0KDg2NTExKSx0KDU4ODg4KSx0KDgxNDQ5KSx0KDQ3ODc0KSx0KDM0NjA5KSx0KDMzNzA2KSx0KDE5NjIwKSx0KDU3NzYyKSx0KDE1MTQ0KSx0KDc1MzY5KSx0KDc2MjA5KSx0KDk1MTY1KSx0KDU2MDk0KX0sMzI4OTkoYyxmLHQpe3Qo'@; put 'MTMyOTIpLHQoNTIzNDYpLHQoOTQyOSksdCg3ODQ5KSx0KDQ4OTUxKSxjLmV4cG9ydHM9RGF0ZX0sMzkyNzEoYyxmLHQpe3QoNjUwNDkpLHQoNzA0ODkpLHQoOTU1MDIpLHQoNTYwOTQpfSwyMjkxMyhjLGYsdCl7dCgxNzQ4MiksdCg4Mjk3NSksdCgzNTg5MCksdCg5MzM4NiksdCg1NjA5NCl9'@; put 'LDg4MDI1KGMsZix0KXt0KDc2NjQ4KSx0KDU1NzcxKSx0KDgyMzkyKSx0KDcyMzM1KSx0KDc0ODk2KSx0KDk0NTIxKSx0KDI5MTQ3KSx0KDQxMzE4KSx0KDg0MzUyKSx0KDE1MzI3KSx0KDU3NTA5KSx0KDE1OTA5KSx0KDc5NTg0KSx0KDQwMzQ1KSx0KDk5MTM0KSx0KDY3OTAxKSx0KDQ2NTky'@; put 'KSx0KDU2MDk0KX0sMTU2MjYoYyxmLHQpe3QoNjQ1MDkpLHQoMzc3MjcpLHQoNjcwMSksdCgzNDQxOSksdCg5MTkzMyksdCg1NTUzOCksdCgzOTQ5NyksdCg0MTA0KSx0KDYwMjEwKSx0KDU2NTc2KSx0KDg0NDM3KSx0KDg4MDUwKSx0KDU2MDk0KX0sNTQ5NDAoYyxmLHQpe3QoOTk2NTApLHQo'@; put 'OTM1KSx0KDY2MDY0KSx0KDg5NDQ4KSx0KDIyNjQyKSx0KDUzZTMpLHQoODg2NDcpLHQoODE4OTUpLHQoNDgyMzYpLHQoNzM4MjIpLHQoMTU1NzIpLHQoNjkzMTgpLHQoNjUwMzIpLHQoNzkwNzMpLHQoMTE0MzApLHQoMzg0NTEpLHQoMTgxMzIpLHQoMTc0ODIpLHQoNTYwOTQpfSwyNjIwMyhj'@; put 'LGYsdCl7dCg5NjEwOCksdCg1NjA5NCl9LDUyNDQ0KGMsZix0KXt0KDkwNTcxKSx0KDU2MDk0KX0sNjU4NDYoYyxmLHQpe3QoNzEwMyksdCg4MjU4NiksdCg5MjU1MiksdCg0Mzc2KSx0KDc1MTUzKSx0KDExODc5KSx0KDUyNjUwKSx0KDMxMTA0KSx0KDIxODgzKSx0KDM1NDMzKSx0KDU1ZTMp'@; put 'LHQoMTU5MzIpLHQoNTQ0MyksdCgyNjMxNiksdCg1NjA5NCl9LDQyNDYoYyxmLHQpe3QoODMwMSksdCg5NDExNiksdCg3ODYwNCksdCgzOTYzOCksdCg0MDQwKSx0KDY4MzA1KSx0KDc0NzAxKSx0KDIwMzQxKSx0KDU2MDk0KX0sMTA3NDMoYyxmLHQpe3QoMTc0ODIpLHQoODI5NzUpLHQoMzU4'@; put 'OTApLHQoNzE2MzIpLHQoNTYwOTQpfSw1NjQ0MihjLGYsdCl7dCgxMjIyMCksdCgyMzQ4MyksdCgyMDk1NyksdCg4Mjk3NSksdCgzMjQwNSksdCgxNzIyNCksdCgyODg3MiksdCg0NDg5NCksdCgxMDE3NyksdCg2NDk3OSksdCg4OTAxMSksdCg1NDU5MSksdCg0NzMzNCksdCg3MDgzKSx0KDY5'@; put 'MjEzKSx0KDM4NDM3KSx0KDYyMjIwKSx0KDc2NTQ5KSx0KDQyODE4KSx0KDI4NTQzKSx0KDM1NTkpLHQoODQxNTMpLHQoNDA0MCksdCg2ODMwNSksdCg3NDcwMSksdCgyMDM0MSksdCg1NjA5NCl9LDE4ODgzKGMsZix0KXt0KDk5NjUwKSx0KDE3NDgyKSx0KDU2MDk0KX0sOTM1MyhjLGYsdCl7'@; put 'dCg3NzQ5MSksdCg3NDkwNyksdCg3OTEwMCksdCgxOTI2OSksdCg5MTMxOSksdCg3OTczMiksdCgxMTc2KSx0KDMxMDcpLHQoNjE2OTEpLHQoNTYwOTQpfSw2MzM4NyhjKXtjLmV4cG9ydHM9ZnVuY3Rpb24oZil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGYpdGhyb3cgVHlwZUVycm9yKGYrIiBp'@; put 'cyBub3QgYSBmdW5jdGlvbiEiKTtyZXR1cm4gZn19LDE1MTIyKGMsZix0KXt2YXIgbj10KDU1MDg5KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzKXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJiJOdW1iZXIiIT1uKGUpKXRocm93IFR5cGVFcnJvcihzKTtyZXR1cm4rZX19LDg4MTg0KGMsZix0KXt2'@; put 'YXIgbj10KDY3NTc0KSgidW5zY29wYWJsZXMiKSxlPUFycmF5LnByb3RvdHlwZTtudWxsPT1lW25dJiZ0KDMzMzQxKShlLG4se30pLGMuZXhwb3J0cz1mdW5jdGlvbihzKXtlW25dW3NdPSEwfX0sMjg4MjgoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkxMjEyKSghMCk7Yy5leHBvcnRz'@; put 'PWZ1bmN0aW9uKGUscyxvKXtyZXR1cm4gcysobz9uKGUscykubGVuZ3RoOjEpfX0sMTY0NDAoYyl7Yy5leHBvcnRzPWZ1bmN0aW9uKGYsdCxuLGUpe2lmKCEoZiBpbnN0YW5jZW9mIHQpfHx2b2lkIDAhPT1lJiZlIGluIGYpdGhyb3cgVHlwZUVycm9yKG4rIjogaW5jb3JyZWN0IGludm9jYXRp'@; put 'b24hIik7cmV0dXJuIGZ9fSw0MjI4KGMsZix0KXt2YXIgbj10KDQzMzA1KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIW4oZSkpdGhyb3cgVHlwZUVycm9yKGUrIiBpcyBub3QgYW4gb2JqZWN0ISIpO3JldHVybiBlfX0sODQ0MzgoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDE4Mjcw'@; put 'KSxlPXQoNzAxNTcpLHM9dCg4MTQ4NSk7Yy5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHUsbCl7dmFyIGk9bih0aGlzKSx2PXMoaS5sZW5ndGgpLHA9ZSh1LHYpLGQ9ZShsLHYpLHk9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsRT1NYXRoLm1pbigodm9p'@; put 'ZCAwPT09eT92OmUoeSx2KSktZCx2LXApLGc9MTtmb3IoZDxwJiZwPGQrRSYmKGc9LTEsZCs9RS0xLHArPUUtMSk7RS0tID4wOylkIGluIGk/aVtwXT1pW2RdOmRlbGV0ZSBpW3BdLHArPWcsZCs9ZztyZXR1cm4gaX19LDM1NTY0KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCgxODI3MCks'@; put 'ZT10KDcwMTU3KSxzPXQoODE0ODUpO2MuZXhwb3J0cz1mdW5jdGlvbih1KXtmb3IodmFyIGw9bih0aGlzKSxpPXMobC5sZW5ndGgpLHY9YXJndW1lbnRzLmxlbmd0aCxwPWUodj4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsaSksZD12PjI/YXJndW1lbnRzWzJdOnZvaWQgMCx5PXZvaWQgMD09PWQ/'@; put 'aTplKGQsaSk7eT5wOylsW3ArK109dTtyZXR1cm4gbH19LDgwOTU2KGMsZix0KXt2YXIgbj10KDQ4NzkwKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzKXt2YXIgbz1bXTtyZXR1cm4gbihlLCExLG8ucHVzaCxvLHMpLG99fSw2MTQ2NChjLGYsdCl7dmFyIG49dCg1NzIyMSksZT10KDgxNDg1KSxz'@; put 'PXQoNzAxNTcpO2MuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gZnVuY3Rpb24odSxsLGkpe3ZhciB5LHY9bih1KSxwPWUodi5sZW5ndGgpLGQ9cyhpLHApO2lmKG8mJmwhPWwpe2Zvcig7cD5kOylpZigoeT12W2QrK10pIT15KXJldHVybiEwfWVsc2UgZm9yKDtwPmQ7ZCsrKWlmKChvfHxk'@; put 'IGluIHYpJiZ2W2RdPT09bClyZXR1cm4gb3x8ZHx8MDtyZXR1cm4hbyYmLTF9fX0sNjYxNzkoYyxmLHQpe3ZhciBuPXQoMzUwNTIpLGU9dCg2MTI0OSkscz10KDE4MjcwKSxvPXQoODE0ODUpLHU9dCg5MzE5MSk7Yy5leHBvcnRzPWZ1bmN0aW9uKGwsaSl7dmFyIHY9MT09bCxwPTI9PWwsZD0z'@; put 'PT1sLHk9ND09bCxFPTY9PWwsZz01PT1sfHxFLEQ9aXx8dTtyZXR1cm4gZnVuY3Rpb24oRix4LEEpe2Zvcih2YXIgVSxaLGs9cyhGKSxQPWUoayksTT1uKHgsQSwzKSxUPW8oUC5sZW5ndGgpLGI9MCxCPXY/RChGLFQpOnA/RChGLDApOnZvaWQgMDtUPmI7YisrKWlmKChnfHxiIGluIFApJiYo'@; put 'Wj1NKFU9UFtiXSxiLGspLGwpKWlmKHYpQltiXT1aO2Vsc2UgaWYoWilzd2l0Y2gobCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gVTtjYXNlIDY6cmV0dXJuIGI7Y2FzZSAyOkIucHVzaChVKX1lbHNlIGlmKHkpcmV0dXJuITE7cmV0dXJuIEU/LTE6ZHx8eT95OkJ9fX0sNjU0Myhj'@; put 'LGYsdCl7dmFyIG49dCg2MzM4NyksZT10KDE4MjcwKSxzPXQoNjEyNDkpLG89dCg4MTQ4NSk7Yy5leHBvcnRzPWZ1bmN0aW9uKHUsbCxpLHYscCl7bihsKTt2YXIgZD1lKHUpLHk9cyhkKSxFPW8oZC5sZW5ndGgpLGc9cD9FLTE6MCxEPXA/LTE6MTtpZihpPDIpZm9yKDs7KXtpZihnIGluIHkp'@; put 'e3Y9eVtnXSxnKz1EO2JyZWFrfWlmKGcrPUQscD9nPDA6RTw9Zyl0aHJvdyBUeXBlRXJyb3IoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO3A/Zz49MDpFPmc7Zys9RClnIGluIHkmJih2PWwodix5W2ddLGcsZCkpO3JldHVybiB2fX0sNjM2MDYo'@; put 'YyxmLHQpe3ZhciBuPXQoNDMzMDUpLGU9dCg3Nzk4MSkscz10KDY3NTc0KSgic3BlY2llcyIpO2MuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgdTtyZXR1cm4gZShvKSYmKCJmdW5jdGlvbiI9PXR5cGVvZih1PW8uY29uc3RydWN0b3IpJiYodT09PUFycmF5fHxlKHUucHJvdG90eXBlKSkmJih1'@; put 'PXZvaWQgMCksbih1KSYmbnVsbD09PSh1PXVbc10pJiYodT12b2lkIDApKSx2b2lkIDA9PT11P0FycmF5OnV9fSw5MzE5MShjLGYsdCl7dmFyIG49dCg2MzYwNik7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyl7cmV0dXJuIG5ldyhuKGUpKShzKX19LDE1NTM4KGMsZix0KXsidXNlIHN0cmljdCI7'@; put 'dmFyIG49dCg2MzM4NyksZT10KDQzMzA1KSxzPXQoMjQ4NzcpLG89W10uc2xpY2UsdT17fTtjLmV4cG9ydHM9RnVuY3Rpb24uYmluZHx8ZnVuY3Rpb24odil7dmFyIHA9bih0aGlzKSxkPW8uY2FsbChhcmd1bWVudHMsMSkseT1mdW5jdGlvbigpe3ZhciBFPWQuY29uY2F0KG8uY2FsbChhcmd1'@; put 'bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHk/ZnVuY3Rpb24oaSx2LHApe2lmKCEodiBpbiB1KSl7Zm9yKHZhciBkPVtdLHk9MDt5PHY7eSsrKWRbeV09ImFbIit5KyJdIjt1W3ZdPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIitkLmpvaW4oIiwiKSsiKSIpfXJldHVybiB1'@; put 'W3ZdKGkscCl9KHAsRS5sZW5ndGgsRSk6cyhwLEUsdil9O3JldHVybiBlKHAucHJvdG90eXBlKSYmKHkucHJvdG90eXBlPXAucHJvdG90eXBlKSx5fX0sMzQ4NDgoYyxmLHQpe3ZhciBuPXQoNTUwODkpLGU9dCg2NzU3NCkoInRvU3RyaW5nVGFnIikscz0iQXJndW1lbnRzIj09bihmdW5jdGlv'@; put 'bigpe3JldHVybiBhcmd1bWVudHN9KCkpO2MuZXhwb3J0cz1mdW5jdGlvbih1KXt2YXIgbCxpLHY7cmV0dXJuIHZvaWQgMD09PXU/IlVuZGVmaW5lZCI6bnVsbD09PXU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoaT1mdW5jdGlvbih1LGwpe3RyeXtyZXR1cm4gdVtsXX1jYXRjaHt9fShsPU9i'@; put 'amVjdCh1KSxlKSk/aTpzP24obCk6Ik9iamVjdCI9PSh2PW4obCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgbC5jYWxsZWU/IkFyZ3VtZW50cyI6dn19LDU1MDg5KGMpe3ZhciBmPXt9LnRvU3RyaW5nO2MuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZi5jYWxsKHQpLnNsaWNlKDgsLTEpfX0s'@; put 'MzYxOTcoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQ3OTY3KS5mLGU9dCg4NDcxOSkscz10KDk2MDY1KSxvPXQoMzUwNTIpLHU9dCgxNjQ0MCksbD10KDQ4NzkwKSxpPXQoOTgxNzUpLHY9dCg3NDk3MCkscD10KDU1NzYyKSxkPXQoMTc2MykseT10KDEyOTg4KS5mYXN0S2V5LEU9dCgx'@; put 'Mjg4OCksZz1kPyJfcyI6InNpemUiLEQ9ZnVuY3Rpb24oRix4KXt2YXIgayxBPXkoeCk7aWYoIkYiIT09QSlyZXR1cm4gRi5faVtBXTtmb3Ioaz1GLl9mO2s7az1rLm4paWYoay5rPT14KXJldHVybiBrfTtjLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKEYseCxBLGspe3ZhciBQ'@; put 'PUYoZnVuY3Rpb24oTSxUKXt1KE0sUCx4LCJfaSIpLE0uX3Q9eCxNLl9pPWUobnVsbCksTS5fZj12b2lkIDAsTS5fbD12b2lkIDAsTVtnXT0wLG51bGwhPVQmJmwoVCxBLE1ba10sTSl9KTtyZXR1cm4gcyhQLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIFQ9RSh0aGlzLHgp'@; put 'LGI9VC5faSxCPVQuX2Y7QjtCPUIubilCLnI9ITAsQi5wJiYoQi5wPUIucC5uPXZvaWQgMCksZGVsZXRlIGJbQi5pXTtULl9mPVQuX2w9dm9pZCAwLFRbZ109MH0sZGVsZXRlOmZ1bmN0aW9uKE0pe3ZhciBUPUUodGhpcyx4KSxiPUQoVCxNKTtpZihiKXt2YXIgQj1iLm4sVT1iLnA7ZGVsZXRl'@; put 'IFQuX2lbYi5pXSxiLnI9ITAsVSYmKFUubj1CKSxCJiYoQi5wPVUpLFQuX2Y9PWImJihULl9mPUIpLFQuX2w9PWImJihULl9sPVUpLFRbZ10tLX1yZXR1cm4hIWJ9LGZvckVhY2g6ZnVuY3Rpb24oVCl7RSh0aGlzLHgpO2Zvcih2YXIgQixiPW8oVCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1l'@; put 'bnRzWzFdOnZvaWQgMCwzKTtCPUI/Qi5uOnRoaXMuX2Y7KWZvcihiKEIudixCLmssdGhpcyk7QiYmQi5yOylCPUIucH0saGFzOmZ1bmN0aW9uKFQpe3JldHVybiEhRChFKHRoaXMseCksVCl9fSksZCYmbihQLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMs'@; put 'eClbZ119fSksUH0sZGVmOmZ1bmN0aW9uKEYseCxBKXt2YXIgUCxNLGs9RChGLHgpO3JldHVybiBrP2sudj1BOihGLl9sPWs9e2k6TT15KHgsITApLGs6eCx2OkEscDpQPUYuX2wsbjp2b2lkIDAscjohMX0sRi5fZnx8KEYuX2Y9ayksUCYmKFAubj1rKSxGW2ddKyssIkYiIT09TSYmKEYuX2lb'@; put 'TV09aykpLEZ9LGdldEVudHJ5OkQsc2V0U3Ryb25nOmZ1bmN0aW9uKEYseCxBKXtpKEYseCxmdW5jdGlvbihrLFApe3RoaXMuX3Q9RShrLHgpLHRoaXMuX2s9UCx0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIGs9dGhpcyxQPWsuX2ssTT1rLl9sO00mJk0ucjspTT1NLnA7cmV0'@; put 'dXJuIGsuX3QmJihrLl9sPU09TT9NLm46ay5fdC5fZik/digwLCJrZXlzIj09UD9NLms6InZhbHVlcyI9PVA/TS52OltNLmssTS52XSk6KGsuX3Q9dm9pZCAwLHYoMSkpfSxBPyJlbnRyaWVzIjoidmFsdWVzIiwhQSwhMCkscCh4KX19fSw5OTg4MihjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBu'@; put 'PXQoOTYwNjUpLGU9dCgxMjk4OCkuZ2V0V2VhayxzPXQoNDIyOCksbz10KDQzMzA1KSx1PXQoMTY0NDApLGw9dCg0ODc5MCksaT10KDY2MTc5KSx2PXQoNTc5MTcpLHA9dCgxMjg4OCksZD1pKDUpLHk9aSg2KSxFPTAsZz1mdW5jdGlvbih4KXtyZXR1cm4geC5fbHx8KHguX2w9bmV3IEQpfSxE'@; put 'PWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSxGPWZ1bmN0aW9uKHgsQSl7cmV0dXJuIGQoeC5hLGZ1bmN0aW9uKGspe3JldHVybiBrWzBdPT09QX0pfTtELnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHgpe3ZhciBBPUYodGhpcyx4KTtpZihBKXJldHVybiBBWzFdfSxoYXM6ZnVuY3Rpb24oeCl7cmV0'@; put 'dXJuISFGKHRoaXMseCl9LHNldDpmdW5jdGlvbih4LEEpe3ZhciBrPUYodGhpcyx4KTtrP2tbMV09QTp0aGlzLmEucHVzaChbeCxBXSl9LGRlbGV0ZTpmdW5jdGlvbih4KXt2YXIgQT15KHRoaXMuYSxmdW5jdGlvbihrKXtyZXR1cm4ga1swXT09PXh9KTtyZXR1cm5+QSYmdGhpcy5hLnNwbGlj'@; put 'ZShBLDEpLCEhfkF9fSxjLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHgsQSxrLFApe3ZhciBNPXgoZnVuY3Rpb24oVCxiKXt1KFQsTSxBLCJfaSIpLFQuX3Q9QSxULl9pPUUrKyxULl9sPXZvaWQgMCxudWxsIT1iJiZsKGIsayxUW1BdLFQpfSk7cmV0dXJuIG4oTS5wcm90b3R5'@; put 'cGUse2RlbGV0ZTpmdW5jdGlvbihUKXtpZighbyhUKSlyZXR1cm4hMTt2YXIgYj1lKFQpO3JldHVybiEwPT09Yj9nKHAodGhpcyxBKSkuZGVsZXRlKFQpOmImJnYoYix0aGlzLl9pKSYmZGVsZXRlIGJbdGhpcy5faV19LGhhczpmdW5jdGlvbihiKXtpZighbyhiKSlyZXR1cm4hMTt2YXIgQj1l'@; put 'KGIpO3JldHVybiEwPT09Qj9nKHAodGhpcyxBKSkuaGFzKGIpOkImJnYoQix0aGlzLl9pKX19KSxNfSxkZWY6ZnVuY3Rpb24oeCxBLGspe3ZhciBQPWUocyhBKSwhMCk7cmV0dXJuITA9PT1QP2coeCkuc2V0KEEsayk6UFt4Ll9pXT1rLHh9LHVmc3RvcmU6Z319LDU4OTMzKGMsZix0KXsidXNl'@; put 'IHN0cmljdCI7dmFyIG49dCg2NzUyNiksZT10KDkyMTI3KSxzPXQoMjg4NTkpLG89dCg5NjA2NSksdT10KDEyOTg4KSxsPXQoNDg3OTApLGk9dCgxNjQ0MCksdj10KDQzMzA1KSxwPXQoNzk0NDgpLGQ9dCg5ODkzMSkseT10KDM4NDQpLEU9dCg5ODg4MCk7Yy5leHBvcnRzPWZ1bmN0aW9uKGcs'@; put 'RCxGLHgsQSxrKXt2YXIgUD1uW2ddLE09UCxUPUE/InNldCI6ImFkZCIsYj1NJiZNLnByb3RvdHlwZSxCPXt9LFU9ZnVuY3Rpb24ocSl7dmFyIFg9YltxXTtzKGIscSwiZGVsZXRlIj09cT9mdW5jdGlvbihldCl7cmV0dXJuIShrJiYhdihldCkpJiZYLmNhbGwodGhpcywwPT09ZXQ/MDpldCl9'@; put 'OiJoYXMiPT1xP2Z1bmN0aW9uKFYpe3JldHVybiEoayYmIXYoVikpJiZYLmNhbGwodGhpcywwPT09Vj8wOlYpfToiZ2V0Ij09cT9mdW5jdGlvbihWKXtyZXR1cm4gayYmIXYoVik/dm9pZCAwOlguY2FsbCh0aGlzLDA9PT1WPzA6Vil9OiJhZGQiPT1xP2Z1bmN0aW9uKFYpe3JldHVybiBYLmNh'@; put 'bGwodGhpcywwPT09Vj8wOlYpLHRoaXN9OmZ1bmN0aW9uKFYsbHQpe3JldHVybiBYLmNhbGwodGhpcywwPT09Vj8wOlYsbHQpLHRoaXN9KX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIE0mJihrfHxiLmZvckVhY2gmJiFwKGZ1bmN0aW9uKCl7KG5ldyBNKS5lbnRyaWVzKCkubmV4dCgpfSkpKXt2'@; put 'YXIgWj1uZXcgTSxudD1aW1RdKGs/e306LTAsMSkhPVosdHQ9cChmdW5jdGlvbigpe1ouaGFzKDEpfSkseXQ9ZChmdW5jdGlvbihxKXtuZXcgTShxKX0pLG10PSFrJiZwKGZ1bmN0aW9uKCl7Zm9yKHZhciBxPW5ldyBNLFg9NTtYLS07KXFbVF0oWCxYKTtyZXR1cm4hcS5oYXMoLTApfSk7eXR8'@; put 'fCgoTT1EKGZ1bmN0aW9uKHEsWCl7aShxLE0sZyk7dmFyIGV0PUUobmV3IFAscSxNKTtyZXR1cm4gbnVsbCE9WCYmbChYLEEsZXRbVF0sZXQpLGV0fSkpLnByb3RvdHlwZT1iLGIuY29uc3RydWN0b3I9TSksKHR0fHxtdCkmJihVKCJkZWxldGUiKSxVKCJoYXMiKSxBJiZVKCJnZXQiKSksKG10'@; put 'fHxudCkmJlUoVCksayYmYi5jbGVhciYmZGVsZXRlIGIuY2xlYXJ9ZWxzZSBNPXguZ2V0Q29uc3RydWN0b3IoRCxnLEEsVCksbyhNLnByb3RvdHlwZSxGKSx1Lk5FRUQ9ITA7cmV0dXJuIHkoTSxnKSxCW2ddPU0sZShlLkcrZS5XK2UuRiooTSE9UCksQiksa3x8eC5zZXRTdHJvbmcoTSxnLEEp'@; put 'LE19fSw1NjA5NChjKXt2YXIgZj1jLmV4cG9ydHM9e3ZlcnNpb246IjIuNi4xMiJ9OyJudW1iZXIiPT10eXBlb2YgX19lJiYoX19lPWYpfSw2NzIyNyhjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoNDc5NjcpLGU9dCgxMTk5Nik7Yy5leHBvcnRzPWZ1bmN0aW9uKHMsbyx1KXtvIGluIHM/'@; put 'bi5mKHMsbyxlKDAsdSkpOnNbb109dX19LDM1MDUyKGMsZix0KXt2YXIgbj10KDYzMzg3KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzLG8pe2lmKG4oZSksdm9pZCAwPT09cylyZXR1cm4gZTtzd2l0Y2gobyl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gZS5jYWxsKHMsdSl9O2Nh'@; put 'c2UgMjpyZXR1cm4gZnVuY3Rpb24odSxsKXtyZXR1cm4gZS5jYWxsKHMsdSxsKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbih1LGwsaSl7cmV0dXJuIGUuY2FsbChzLHUsbCxpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkocyxhcmd1bWVudHMpfX19LDU1Mzg1KGMsZix0KXsi'@; put 'dXNlIHN0cmljdCI7dmFyIG49dCg3OTQ0OCksZT1EYXRlLnByb3RvdHlwZS5nZXRUaW1lLHM9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcsbz1mdW5jdGlvbih1KXtyZXR1cm4gdT45P3U6IjAiK3V9O2MuZXhwb3J0cz1uKGZ1bmN0aW9uKCl7cmV0dXJuIjAzODUtMDctMjVUMDc6MDY6Mzku'@; put 'OTk5WiIhPXMuY2FsbChuZXcgRGF0ZSgtNTAwMDAwMDAwMDAwMDEpKX0pfHwhbihmdW5jdGlvbigpe3MuY2FsbChuZXcgRGF0ZShOYU4pKX0pP2Z1bmN0aW9uKCl7aWYoIWlzRmluaXRlKGUuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7dmFyIGw9'@; put 'dGhpcyxpPWwuZ2V0VVRDRnVsbFllYXIoKSx2PWwuZ2V0VVRDTWlsbGlzZWNvbmRzKCkscD1pPDA/Ii0iOmk+OTk5OT8iKyI6IiI7cmV0dXJuIHArKCIwMDAwMCIrTWF0aC5hYnMoaSkpLnNsaWNlKHA/LTY6LTQpKyItIitvKGwuZ2V0VVRDTW9udGgoKSsxKSsiLSIrbyhsLmdldFVUQ0RhdGUo'@; put 'KSkrIlQiK28obC5nZXRVVENIb3VycygpKSsiOiIrbyhsLmdldFVUQ01pbnV0ZXMoKSkrIjoiK28obC5nZXRVVENTZWNvbmRzKCkpKyIuIisodj45OT92OiIwIitvKHYpKSsiWiJ9OnN9LDIwMTA3KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg0MjI4KSxlPXQoODMwNDgpLHM9Im51bWJl'@; put 'ciI7Yy5leHBvcnRzPWZ1bmN0aW9uKG8pe2lmKCJzdHJpbmciIT09byYmbyE9PXMmJiJkZWZhdWx0IiE9PW8pdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBlKG4odGhpcyksbyE9cyl9fSwzMzQ0KGMpe2MuZXhwb3J0cz1mdW5jdGlvbihmKXtpZihudWxsPT1mKXRo'@; put 'cm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gICIrZik7cmV0dXJuIGZ9fSwxNzYzKGMsZix0KXtjLmV4cG9ydHM9IXQoNzk0NDgpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9'@; put 'KX0sNDYwMzQoYyxmLHQpe3ZhciBuPXQoNDMzMDUpLGU9dCg2NzUyNikuZG9jdW1lbnQscz1uKGUpJiZuKGUuY3JlYXRlRWxlbWVudCk7Yy5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiBzP2UuY3JlYXRlRWxlbWVudChvKTp7fX19LDg2MTQwKGMpe2MuZXhwb3J0cz0iY29uc3RydWN0b3Is'@; put 'aGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSwxNTk2OShjLGYsdCl7dmFyIG49dCg1MTMxMSksZT10KDEwNjApLHM9dCg4NDQ5KTtjLmV4cG9ydHM9ZnVuY3Rpb24obyl7'@; put 'dmFyIHU9bihvKSxsPWUuZjtpZihsKWZvcih2YXIgZCxpPWwobyksdj1zLmYscD0wO2kubGVuZ3RoPnA7KXYuY2FsbChvLGQ9aVtwKytdKSYmdS5wdXNoKGQpO3JldHVybiB1fX0sOTIxMjcoYyxmLHQpe3ZhciBuPXQoNjc1MjYpLGU9dCg1NjA5NCkscz10KDMzMzQxKSxvPXQoMjg4NTkpLHU9'@; put 'dCgzNTA1MiksbD0icHJvdG90eXBlIixpPWZ1bmN0aW9uKHYscCxkKXt2YXIgUCxNLFQsYix5PXYmaS5GLEU9diZpLkcsRD12JmkuUCxGPXYmaS5CLHg9RT9uOnYmaS5TP25bcF18fChuW3BdPXt9KToobltwXXx8e30pW2xdLEE9RT9lOmVbcF18fChlW3BdPXt9KSxrPUFbbF18fChBW2xdPXt9'@; put 'KTtmb3IoUCBpbiBFJiYoZD1wKSxkKVQ9KChNPSF5JiZ4JiZ2b2lkIDAhPT14W1BdKT94OmQpW1BdLGI9RiYmTT91KFQsbik6RCYmImZ1bmN0aW9uIj09dHlwZW9mIFQ/dShGdW5jdGlvbi5jYWxsLFQpOlQseCYmbyh4LFAsVCx2JmkuVSksQVtQXSE9VCYmcyhBLFAsYiksRCYma1tQXSE9VCYm'@; put 'KGtbUF09VCl9O24uY29yZT1lLGkuRj0xLGkuRz0yLGkuUz00LGkuUD04LGkuQj0xNixpLlc9MzIsaS5VPTY0LGkuUj0xMjgsYy5leHBvcnRzPWl9LDI1MjAzKGMsZix0KXt2YXIgbj10KDY3NTc0KSgibWF0Y2giKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHM9Ly4vO3RyeXsiLy4vIltl'@; put 'XShzKX1jYXRjaHt0cnl7cmV0dXJuIHNbbl09ITEsISIvLi8iW2VdKHMpfWNhdGNoe319cmV0dXJuITB9fSw3OTQ0OChjKXtjLmV4cG9ydHM9ZnVuY3Rpb24oZil7dHJ5e3JldHVybiEhZigpfWNhdGNoe3JldHVybiEwfX19LDY5MjI4KGMsZix0KXsidXNlIHN0cmljdCI7dCg5NDExNik7dmFy'@; put 'IG49dCgyODg1OSksZT10KDMzMzQxKSxzPXQoNzk0NDgpLG89dCgzMzQ0KSx1PXQoNjc1NzQpLGw9dCg2OTYwMCksaT11KCJzcGVjaWVzIiksdj0hcyhmdW5jdGlvbigpe3ZhciBkPS8uLztyZXR1cm4gZC5leGVjPWZ1bmN0aW9uKCl7dmFyIHk9W107cmV0dXJuIHkuZ3JvdXBzPXthOiI3In0s'@; put 'eX0sIjciIT09IiIucmVwbGFjZShkLCIkPGE+Iil9KSxwPWZ1bmN0aW9uKCl7dmFyIGQ9Lyg/OikvLHk9ZC5leGVjO2QuZXhlYz1mdW5jdGlvbigpe3JldHVybiB5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIEU9ImFiIi5zcGxpdChkKTtyZXR1cm4gMj09PUUubGVuZ3RoJiYiYSI9PT1F'@; put 'WzBdJiYiYiI9PT1FWzFdfSgpO2MuZXhwb3J0cz1mdW5jdGlvbihkLHksRSl7dmFyIGc9dShkKSxEPSFzKGZ1bmN0aW9uKCl7dmFyIE09e307cmV0dXJuIE1bZ109ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9IiJbZF0oTSl9KSxGPUQ/IXMoZnVuY3Rpb24oKXt2YXIgTT0hMSxUPS9hLztyZXR1'@; put 'cm4gVC5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIE09ITAsbnVsbH0sInNwbGl0Ij09PWQmJihULmNvbnN0cnVjdG9yPXt9LFQuY29uc3RydWN0b3JbaV09ZnVuY3Rpb24oKXtyZXR1cm4gVH0pLFRbZ10oIiIpLCFNfSk6dm9pZCAwO2lmKCFEfHwhRnx8InJlcGxhY2UiPT09ZCYmIXZ8fCJzcGxp'@; put 'dCI9PT1kJiYhcCl7dmFyIHg9Ly4vW2ddLEE9RShvLGcsIiJbZF0sZnVuY3Rpb24oVCxiLEIsVSxaKXtyZXR1cm4gYi5leGVjPT09bD9EJiYhWj97ZG9uZTohMCx2YWx1ZTp4LmNhbGwoYixCLFUpfTp7ZG9uZTohMCx2YWx1ZTpULmNhbGwoQixiLFUpfTp7ZG9uZTohMX19KSxQPUFbMV07bihT'@; put 'dHJpbmcucHJvdG90eXBlLGQsQVswXSksZShSZWdFeHAucHJvdG90eXBlLGcsMj09eT9mdW5jdGlvbihNLFQpe3JldHVybiBQLmNhbGwoTSx0aGlzLFQpfTpmdW5jdGlvbihNKXtyZXR1cm4gUC5jYWxsKE0sdGhpcyl9KX19fSwxMTU4KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg0MjI4'@; put 'KTtjLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZT1uKHRoaXMpLHM9IiI7cmV0dXJuIGUuZ2xvYmFsJiYocys9ImciKSxlLmlnbm9yZUNhc2UmJihzKz0iaSIpLGUubXVsdGlsaW5lJiYocys9Im0iKSxlLnVuaWNvZGUmJihzKz0idSIpLGUuc3RpY2t5JiYocys9InkiKSxzfX0sNDg3OTAoYyxm'@; put 'LHQpe3ZhciBuPXQoMzUwNTIpLGU9dCg5NzM2OCkscz10KDE1MDgpLG89dCg0MjI4KSx1PXQoODE0ODUpLGw9dCgyMDc2MiksaT17fSx2PXt9LHA9Yy5leHBvcnRzPWZ1bmN0aW9uKGQseSxFLGcsRCl7dmFyIGssUCxNLFQsRj1EP2Z1bmN0aW9uKCl7cmV0dXJuIGR9OmwoZCkseD1uKEUsZyx5'@; put 'PzI6MSksQT0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBGKXRocm93IFR5cGVFcnJvcihkKyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKHMoRikpe2ZvcihrPXUoZC5sZW5ndGgpO2s+QTtBKyspaWYoKFQ9eT94KG8oUD1kW0FdKVswXSxQWzFdKTp4KGRbQV0pKT09PWl8fFQ9PT12KXJldHVybiBU'@; put 'fWVsc2UgZm9yKE09Ri5jYWxsKGQpOyEoUD1NLm5leHQoKSkuZG9uZTspaWYoKFQ9ZShNLHgsUC52YWx1ZSx5KSk9PT1pfHxUPT09dilyZXR1cm4gVH07cC5CUkVBSz1pLHAuUkVUVVJOPXZ9LDQ5NDYxKGMsZix0KXtjLmV4cG9ydHM9dCg0NDU1NikoIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJp'@; put 'bmciLEZ1bmN0aW9uLnRvU3RyaW5nKX0sNjc1MjYoYyl7dmFyIGY9Yy5leHBvcnRzPXR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6dHlwZW9mIHNlbGY8InUiJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpOyJudW1iZXIi'@; put 'PT10eXBlb2YgX19nJiYoX19nPWYpfSw1NzkxNyhjKXt2YXIgZj17fS5oYXNPd25Qcm9wZXJ0eTtjLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZi5jYWxsKHQsbil9fSwzMzM0MShjLGYsdCl7dmFyIG49dCg0Nzk2NyksZT10KDExOTk2KTtjLmV4cG9ydHM9dCgxNzYzKT9mdW5jdGlv'@; put 'bihzLG8sdSl7cmV0dXJuIG4uZihzLG8sZSgxLHUpKX06ZnVuY3Rpb24ocyxvLHUpe3JldHVybiBzW29dPXUsc319LDYxMzA4KGMsZix0KXt2YXIgbj10KDY3NTI2KS5kb2N1bWVudDtjLmV4cG9ydHM9biYmbi5kb2N1bWVudEVsZW1lbnR9LDIyOTU2KGMsZix0KXtjLmV4cG9ydHM9IXQoMTc2'@; put 'MykmJiF0KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkodCg0NjAzNCkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSw5ODg4MChjLGYsdCl7dmFyIG49dCg0MzMwNSksZT10KDI1MTcwKS5zZXQ7Yy5leHBvcnRzPWZ1'@; put 'bmN0aW9uKHMsbyx1KXt2YXIgaSxsPW8uY29uc3RydWN0b3I7cmV0dXJuIGwhPT11JiYiZnVuY3Rpb24iPT10eXBlb2YgbCYmKGk9bC5wcm90b3R5cGUpIT09dS5wcm90b3R5cGUmJm4oaSkmJmUmJmUocyxpKSxzfX0sMjQ4NzcoYyl7Yy5leHBvcnRzPWZ1bmN0aW9uKGYsdCxuKXt2YXIgZT12'@; put 'b2lkIDA9PT1uO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBlP2YoKTpmLmNhbGwobik7Y2FzZSAxOnJldHVybiBlP2YodFswXSk6Zi5jYWxsKG4sdFswXSk7Y2FzZSAyOnJldHVybiBlP2YodFswXSx0WzFdKTpmLmNhbGwobix0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gZT9mKHRb'@; put 'MF0sdFsxXSx0WzJdKTpmLmNhbGwobix0WzBdLHRbMV0sdFsyXSk7Y2FzZSA0OnJldHVybiBlP2YodFswXSx0WzFdLHRbMl0sdFszXSk6Zi5jYWxsKG4sdFswXSx0WzFdLHRbMl0sdFszXSl9cmV0dXJuIGYuYXBwbHkobix0KX19LDYxMjQ5KGMsZix0KXt2YXIgbj10KDU1MDg5KTtjLmV4cG9y'@; put 'dHM9T2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCk/T2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiJTdHJpbmciPT1uKGUpP2Uuc3BsaXQoIiIpOk9iamVjdChlKX19LDE1MDgoYyxmLHQpe3ZhciBuPXQoNjA5MDYpLGU9dCg2NzU3NCkoIml0ZXJhdG9yIikscz1BcnJheS5wcm90'@; put 'b3R5cGU7Yy5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiB2b2lkIDAhPT1vJiYobi5BcnJheT09PW98fHNbZV09PT1vKX19LDc3OTgxKGMsZix0KXt2YXIgbj10KDU1MDg5KTtjLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24ocyl7cmV0dXJuIkFycmF5Ij09bihzKX19LDMzODQy'@; put 'KGMsZix0KXt2YXIgbj10KDQzMzA1KSxlPU1hdGguZmxvb3I7Yy5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiFuKG8pJiZpc0Zpbml0ZShvKSYmZShvKT09PW99fSw0MzMwNShjKXtjLmV4cG9ydHM9ZnVuY3Rpb24oZil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBmP251bGwhPT1mOiJmdW5j'@; put 'dGlvbiI9PXR5cGVvZiBmfX0sOTU0MTEoYyxmLHQpe3ZhciBuPXQoNDMzMDUpLGU9dCg1NTA4OSkscz10KDY3NTc0KSgibWF0Y2giKTtjLmV4cG9ydHM9ZnVuY3Rpb24obyl7dmFyIHU7cmV0dXJuIG4obykmJih2b2lkIDAhPT0odT1vW3NdKT8hIXU6IlJlZ0V4cCI9PWUobykpfX0sOTczNjgo'@; put 'YyxmLHQpe3ZhciBuPXQoNDIyOCk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyxvLHUpe3RyeXtyZXR1cm4gdT9zKG4obylbMF0sb1sxXSk6cyhvKX1jYXRjaChpKXt2YXIgbD1lLnJldHVybjt0aHJvdyB2b2lkIDAhPT1sJiZuKGwuY2FsbChlKSksaX19fSw2MDMyKGMsZix0KXsidXNlIHN0cmlj'@; put 'dCI7dmFyIG49dCg4NDcxOSksZT10KDExOTk2KSxzPXQoMzg0NCksbz17fTt0KDMzMzQxKShvLHQoNjc1NzQpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxjLmV4cG9ydHM9ZnVuY3Rpb24odSxsLGkpe3UucHJvdG90eXBlPW4obyx7bmV4dDplKDEsaSl9KSxzKHUsbCsi'@; put 'IEl0ZXJhdG9yIil9fSw5ODE3NShjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoMjI3NTApLGU9dCg5MjEyNykscz10KDI4ODU5KSxvPXQoMzMzNDEpLHU9dCg2MDkwNiksbD10KDYwMzIpLGk9dCgzODQ0KSx2PXQoNDA2MjcpLHA9dCg2NzU3NCkoIml0ZXJhdG9yIiksZD0hKFtdLmtleXMm'@; put 'JiJuZXh0ImluW10ua2V5cygpKSxFPSJrZXlzIixnPSJ2YWx1ZXMiLEQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307Yy5leHBvcnRzPWZ1bmN0aW9uKEYseCxBLGssUCxNLFQpe2woQSx4LGspO3ZhciBYLGV0LFYsYj1mdW5jdGlvbihsdCl7aWYoIWQmJmx0IGluIG50KXJldHVybiBudFtsdF07'@; put 'c3dpdGNoKGx0KXtjYXNlIEU6Y2FzZSBnOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQSh0aGlzLGx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBKHRoaXMsbHQpfX0sQj14KyIgSXRlcmF0b3IiLFU9UD09ZyxaPSExLG50PUYucHJvdG90eXBlLHR0PW50W3BdfHxudFsi'@; put 'QEBpdGVyYXRvciJdfHxQJiZudFtQXSx5dD10dHx8YihQKSxtdD1QP1U/YigiZW50cmllcyIpOnl0OnZvaWQgMCxxPSJBcnJheSI9PXgmJm50LmVudHJpZXN8fHR0O2lmKHEmJihWPXYocS5jYWxsKG5ldyBGKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmVi5uZXh0JiYoaShWLEIsITApLCFuJiYi'@; put 'ZnVuY3Rpb24iIT10eXBlb2YgVltwXSYmbyhWLHAsRCkpLFUmJnR0JiZ0dC5uYW1lIT09ZyYmKFo9ITAseXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHQuY2FsbCh0aGlzKX0pLCghbnx8VCkmJihkfHxafHwhbnRbcF0pJiZvKG50LHAseXQpLHVbeF09eXQsdVtCXT1ELFApaWYoWD17dmFsdWVzOlU/'@; put 'eXQ6YihnKSxrZXlzOk0/eXQ6YihFKSxlbnRyaWVzOm10fSxUKWZvcihldCBpbiBYKWV0IGluIG50fHxzKG50LGV0LFhbZXRdKTtlbHNlIGUoZS5QK2UuRiooZHx8WikseCxYKTtyZXR1cm4gWH19LDk4OTMxKGMsZix0KXt2YXIgbj10KDY3NTc0KSgiaXRlcmF0b3IiKSxlPSExO3RyeXt2YXIg'@; put 'cz1bN11bbl0oKTtzLnJldHVybj1mdW5jdGlvbigpe2U9ITB9LEFycmF5LmZyb20ocyxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaHt9Yy5leHBvcnRzPWZ1bmN0aW9uKG8sdSl7aWYoIXUmJiFlKXJldHVybiExO3ZhciBsPSExO3RyeXt2YXIgaT1bN10sdj1pW25dKCk7di5uZXh0PWZ1bmN0'@; put 'aW9uKCl7cmV0dXJue2RvbmU6bD0hMH19LGlbbl09ZnVuY3Rpb24oKXtyZXR1cm4gdn0sbyhpKX1jYXRjaHt9cmV0dXJuIGx9fSw3NDk3MChjKXtjLmV4cG9ydHM9ZnVuY3Rpb24oZix0KXtyZXR1cm57dmFsdWU6dCxkb25lOiEhZn19fSw2MDkwNihjKXtjLmV4cG9ydHM9e319LDIyNzUwKGMp'@; put 'e2MuZXhwb3J0cz0hMX0sNzU1NTEoYyl7dmFyIGY9TWF0aC5leHBtMTtjLmV4cG9ydHM9IWZ8fGYoMTApPjIyMDI1LjQ2NTc5NDgwNjcxOHx8ZigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPWYoLTJlLTE3KT9mdW5jdGlvbihuKXtyZXR1cm4gMD09KG49K24pP246bj4tMWUtNiYm'@; put 'bjwxZS02P24rbipuLzI6TWF0aC5leHAobiktMX06Zn0sNzIxMjIoYyxmLHQpe3ZhciBuPXQoMzczMyksZT1NYXRoLnBvdyxzPWUoMiwtNTIpLG89ZSgyLC0yMyksdT1lKDIsMTI3KSooMi1vKSxsPWUoMiwtMTI2KTtjLmV4cG9ydHM9TWF0aC5mcm91bmR8fGZ1bmN0aW9uKHApe3ZhciBFLGcs'@; put 'ZD1NYXRoLmFicyhwKSx5PW4ocCk7cmV0dXJuIGQ8bD95KihkL2wvbysxL3MtMS9zKSpsKm86KGc9KEU9KDErby9zKSpkKS0oRS1kKSk+dXx8ZyE9Zz95KigxLzApOnkqZ319LDcxNDczKGMpe2MuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbih0KXtyZXR1cm4odD0rdCk+LTFlLTgmJnQ8'@; put 'MWUtOD90LXQqdC8yOk1hdGgubG9nKDErdCl9fSwzNzMzKGMpe2MuZXhwb3J0cz1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiAwPT0odD0rdCl8fHQhPXQ/dDp0PDA/LTE6MX19LDEyOTg4KGMsZix0KXt2YXIgbj10KDQ0MTUpKCJtZXRhIiksZT10KDQzMzA1KSxzPXQoNTc5MTcpLG89'@; put 'dCg0Nzk2NykuZix1PTAsbD1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxpPSF0KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybiBsKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSksdj1mdW5jdGlvbihnKXtvKGcsbix7dmFsdWU6e2k6Ik8iKyArK3Usdzp7'@; put 'fX19KX0sRT1jLmV4cG9ydHM9e0tFWTpuLE5FRUQ6ITEsZmFzdEtleTpmdW5jdGlvbihnLEQpe2lmKCFlKGcpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgZz9nOigic3RyaW5nIj09dHlwZW9mIGc/IlMiOiJQIikrZztpZighcyhnLG4pKXtpZighbChnKSlyZXR1cm4iRiI7aWYoIUQpcmV0dXJu'@; put 'IkUiO3YoZyl9cmV0dXJuIGdbbl0uaX0sZ2V0V2VhazpmdW5jdGlvbihnLEQpe2lmKCFzKGcsbikpe2lmKCFsKGcpKXJldHVybiEwO2lmKCFEKXJldHVybiExO3YoZyl9cmV0dXJuIGdbbl0ud30sb25GcmVlemU6ZnVuY3Rpb24oZyl7cmV0dXJuIGkmJkUuTkVFRCYmbChnKSYmIXMoZyxuKSYm'@; put 'dihnKSxnfX19LDk3MzgwKGMsZix0KXt2YXIgbj10KDkzMzg2KSxlPXQoOTIxMjcpLHM9dCg0NDU1NikoIm1ldGFkYXRhIiksbz1zLnN0b3JlfHwocy5zdG9yZT1uZXcodCg3OTM5NykpKSx1PWZ1bmN0aW9uKEUsZyxEKXt2YXIgRj1vLmdldChFKTtpZighRil7aWYoIUQpcmV0dXJuO28uc2V0'@; put 'KEUsRj1uZXcgbil9dmFyIHg9Ri5nZXQoZyk7aWYoIXgpe2lmKCFEKXJldHVybjtGLnNldChnLHg9bmV3IG4pfXJldHVybiB4fTtjLmV4cG9ydHM9e3N0b3JlOm8sbWFwOnUsaGFzOmZ1bmN0aW9uKEUsZyxEKXt2YXIgRj11KGcsRCwhMSk7cmV0dXJuIHZvaWQgMCE9PUYmJkYuaGFzKEUpfSxn'@; put 'ZXQ6ZnVuY3Rpb24oRSxnLEQpe3ZhciBGPXUoZyxELCExKTtyZXR1cm4gdm9pZCAwPT09Rj92b2lkIDA6Ri5nZXQoRSl9LHNldDpmdW5jdGlvbihFLGcsRCxGKXt1KEQsRiwhMCkuc2V0KEUsZyl9LGtleXM6ZnVuY3Rpb24oRSxnKXt2YXIgRD11KEUsZywhMSksRj1bXTtyZXR1cm4gRCYmRC5m'@; put 'b3JFYWNoKGZ1bmN0aW9uKHgsQSl7Ri5wdXNoKEEpfSksRn0sa2V5OmZ1bmN0aW9uKEUpe3JldHVybiB2b2lkIDA9PT1FfHwic3ltYm9sIj09dHlwZW9mIEU/RTpTdHJpbmcoRSl9LGV4cDpmdW5jdGlvbihFKXtlKGUuUywiUmVmbGVjdCIsRSl9fX0sMjgyMDYoYyxmLHQpeyJ1c2Ugc3RyaWN0'@; put 'Ijt2YXIgbj10KDE3NjMpLGU9dCg1MTMxMSkscz10KDEwNjApLG89dCg4NDQ5KSx1PXQoMTgyNzApLGw9dCg2MTI0OSksaT1PYmplY3QuYXNzaWduO2MuZXhwb3J0cz0haXx8dCg3OTQ0OCkoZnVuY3Rpb24oKXt2YXIgdj17fSxwPXt9LGQ9U3ltYm9sKCkseT0iYWJjZGVmZ2hpamtsbW5vcHFy'@; put 'c3QiO3JldHVybiB2W2RdPTcseS5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihFKXtwW0VdPUV9KSw3IT1pKHt9LHYpW2RdfHxPYmplY3Qua2V5cyhpKHt9LHApKS5qb2luKCIiKSE9eX0pP2Z1bmN0aW9uKHAsZCl7Zm9yKHZhciB5PXUocCksRT1hcmd1bWVudHMubGVuZ3RoLGc9MSxEPXMu'@; put 'ZixGPW8uZjtFPmc7KWZvcih2YXIgTSx4PWwoYXJndW1lbnRzW2crK10pLEE9RD9lKHgpLmNvbmNhdChEKHgpKTplKHgpLGs9QS5sZW5ndGgsUD0wO2s+UDspTT1BW1ArK10sKCFufHxGLmNhbGwoeCxNKSkmJih5W01dPXhbTV0pO3JldHVybiB5fTppfSw4NDcxOShjLGYsdCl7dmFyIG49dCg0'@; put 'MjI4KSxlPXQoMjE2MjYpLHM9dCg4NjE0MCksbz10KDQwNzY2KSgiSUVfUFJPVE8iKSx1PWZ1bmN0aW9uKCl7fSxsPSJwcm90b3R5cGUiLGk9ZnVuY3Rpb24oKXt2YXIgRSx2PXQoNDYwMzQpKCJpZnJhbWUiKSxwPXMubGVuZ3RoO2Zvcih2LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHQoNjEzMDgp'@; put 'LmFwcGVuZENoaWxkKHYpLHYuc3JjPSJqYXZhc2NyaXB0OiIsKEU9di5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksRS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxFLmNsb3NlKCksaT1FLkY7cC0tOylkZWxldGUgaVtsXVtzW3BdXTtyZXR1cm4g'@; put 'aSgpfTtjLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24ocCxkKXt2YXIgeTtyZXR1cm4gbnVsbCE9PXA/KHVbbF09bihwKSx5PW5ldyB1LHVbbF09bnVsbCx5W29dPXApOnk9aSgpLHZvaWQgMD09PWQ/eTplKHksZCl9fSw0Nzk2NyhjLGYsdCl7dmFyIG49dCg0MjI4KSxlPXQoMjI5'@; put 'NTYpLHM9dCg4MzA0OCksbz1PYmplY3QuZGVmaW5lUHJvcGVydHk7Zi5mPXQoMTc2Myk/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGwsaSx2KXtpZihuKGwpLGk9cyhpLCEwKSxuKHYpLGUpdHJ5e3JldHVybiBvKGwsaSx2KX1jYXRjaHt9aWYoImdldCJpbiB2fHwic2V0ImluIHYp'@; put 'dGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gdiYmKGxbaV09di52YWx1ZSksbH19LDIxNjI2KGMsZix0KXt2YXIgbj10KDQ3OTY3KSxlPXQoNDIyOCkscz10KDUxMzExKTtjLmV4cG9ydHM9dCgxNzYzKT9PYmplY3QuZGVmaW5lUHJv'@; put 'cGVydGllczpmdW5jdGlvbih1LGwpe2UodSk7Zm9yKHZhciBkLGk9cyhsKSx2PWkubGVuZ3RoLHA9MDt2PnA7KW4uZih1LGQ9aVtwKytdLGxbZF0pO3JldHVybiB1fX0sNjg2NDEoYyxmLHQpe3ZhciBuPXQoODQ0OSksZT10KDExOTk2KSxzPXQoNTcyMjEpLG89dCg4MzA0OCksdT10KDU3OTE3'@; put 'KSxsPXQoMjI5NTYpLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtmLmY9dCgxNzYzKT9pOmZ1bmN0aW9uKHAsZCl7aWYocD1zKHApLGQ9byhkLCEwKSxsKXRyeXtyZXR1cm4gaShwLGQpfWNhdGNoe31pZih1KHAsZCkpcmV0dXJuIGUoIW4uZi5jYWxsKHAsZCkscFtkXSl9fSw0'@; put 'NzY1KGMsZix0KXt2YXIgbj10KDU3MjIxKSxlPXQoNTk0MTUpLmYscz17fS50b1N0cmluZyxvPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107Yy5leHBvcnRzLmY9'@; put 'ZnVuY3Rpb24oaSl7cmV0dXJuIG8mJiJbb2JqZWN0IFdpbmRvd10iPT1zLmNhbGwoaSk/ZnVuY3Rpb24obCl7dHJ5e3JldHVybiBlKGwpfWNhdGNoe3JldHVybiBvLnNsaWNlKCl9fShpKTplKG4oaSkpfX0sNTk0MTUoYyxmLHQpe3ZhciBuPXQoMzQ1NjEpLGU9dCg4NjE0MCkuY29uY2F0KCJs'@; put 'ZW5ndGgiLCJwcm90b3R5cGUiKTtmLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKG8pe3JldHVybiBuKG8sZSl9fSwxMDYwKGMsZil7Zi5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDQwNjI3KGMsZix0KXt2YXIgbj10KDU3OTE3KSxlPXQoMTgyNzApLHM9'@; put 'dCg0MDc2NikoIklFX1BST1RPIiksbz1PYmplY3QucHJvdG90eXBlO2MuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHUpe3JldHVybiB1PWUodSksbih1LHMpP3Vbc106ImZ1bmN0aW9uIj09dHlwZW9mIHUuY29uc3RydWN0b3ImJnUgaW5zdGFuY2VvZiB1LmNvbnN0'@; put 'cnVjdG9yP3UuY29uc3RydWN0b3IucHJvdG90eXBlOnUgaW5zdGFuY2VvZiBPYmplY3Q/bzpudWxsfX0sMzQ1NjEoYyxmLHQpe3ZhciBuPXQoNTc5MTcpLGU9dCg1NzIyMSkscz10KDYxNDY0KSghMSksbz10KDQwNzY2KSgiSUVfUFJPVE8iKTtjLmV4cG9ydHM9ZnVuY3Rpb24odSxsKXt2YXIg'@; put 'ZCxpPWUodSksdj0wLHA9W107Zm9yKGQgaW4gaSlkIT1vJiZuKGksZCkmJnAucHVzaChkKTtmb3IoO2wubGVuZ3RoPnY7KW4oaSxkPWxbdisrXSkmJih+cyhwLGQpfHxwLnB1c2goZCkpO3JldHVybiBwfX0sNTEzMTEoYyxmLHQpe3ZhciBuPXQoMzQ1NjEpLGU9dCg4NjE0MCk7Yy5leHBvcnRz'@; put 'PU9iamVjdC5rZXlzfHxmdW5jdGlvbihvKXtyZXR1cm4gbihvLGUpfX0sODQ0OShjLGYpe2YuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sODA5MjMoYyxmLHQpe3ZhciBuPXQoOTIxMjcpLGU9dCg1NjA5NCkscz10KDc5NDQ4KTtjLmV4cG9ydHM9ZnVuY3Rpb24obyx1KXt2YXIgbD0oZS5P'@; put 'YmplY3R8fHt9KVtvXXx8T2JqZWN0W29dLGk9e307aVtvXT11KGwpLG4obi5TK24uRipzKGZ1bmN0aW9uKCl7bCgxKX0pLCJPYmplY3QiLGkpfX0sOTYyMjIoYyxmLHQpe3ZhciBuPXQoNTk0MTUpLGU9dCgxMDYwKSxzPXQoNDIyOCksbz10KDY3NTI2KS5SZWZsZWN0O2MuZXhwb3J0cz1vJiZv'@; put 'Lm93bktleXN8fGZ1bmN0aW9uKGwpe3ZhciBpPW4uZihzKGwpKSx2PWUuZjtyZXR1cm4gdj9pLmNvbmNhdCh2KGwpKTppfX0sMzM1ODkoYyxmLHQpe3ZhciBuPXQoNjc1MjYpLnBhcnNlRmxvYXQsZT10KDQwNjI5KS50cmltO2MuZXhwb3J0cz0xL24odCg3ODQ1MSkrIi0wIikhPS0xLzA/ZnVu'@; put 'Y3Rpb24obyl7dmFyIHU9ZShTdHJpbmcobyksMyksbD1uKHUpO3JldHVybiAwPT09bCYmIi0iPT11LmNoYXJBdCgwKT8tMDpsfTpufSw4MjczOChjLGYsdCl7dmFyIG49dCg2NzUyNikucGFyc2VJbnQsZT10KDQwNjI5KS50cmltLHM9dCg3ODQ1MSksbz0vXlstK10/MFt4WF0vO2MuZXhwb3J0'@; put 'cz04IT09bihzKyIwOCIpfHwyMiE9PW4ocysiMHgxNiIpP2Z1bmN0aW9uKGwsaSl7dmFyIHY9ZShTdHJpbmcobCksMyk7cmV0dXJuIG4odixpPj4+MHx8KG8udGVzdCh2KT8xNjoxMCkpfTpufSwxMTk5NihjKXtjLmV4cG9ydHM9ZnVuY3Rpb24oZix0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEm'@; put 'ZiksY29uZmlndXJhYmxlOiEoMiZmKSx3cml0YWJsZTohKDQmZiksdmFsdWU6dH19fSw5NjA2NShjLGYsdCl7dmFyIG49dCgyODg1OSk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyxvKXtmb3IodmFyIHUgaW4gcyluKGUsdSxzW3VdLG8pO3JldHVybiBlfX0sMjg4NTkoYyxmLHQpe3ZhciBuPXQo'@; put 'Njc1MjYpLGU9dCgzMzM0MSkscz10KDU3OTE3KSxvPXQoNDQxNSkoInNyYyIpLHU9dCg0OTQ2MSksbD0idG9TdHJpbmciLGk9KCIiK3UpLnNwbGl0KGwpO3QoNTYwOTQpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odil7cmV0dXJuIHUuY2FsbCh2KX0sKGMuZXhwb3J0cz1mdW5jdGlvbih2LHAs'@; put 'ZCx5KXt2YXIgRT0iZnVuY3Rpb24iPT10eXBlb2YgZDtFJiYocyhkLCJuYW1lIil8fGUoZCwibmFtZSIscCkpLHZbcF0hPT1kJiYoRSYmKHMoZCxvKXx8ZShkLG8sdltwXT8iIit2W3BdOmkuam9pbihTdHJpbmcocCkpKSksdj09PW4/dltwXT1kOnk/dltwXT92W3BdPWQ6ZSh2LHAsZCk6KGRl'@; put 'bGV0ZSB2W3BdLGUodixwLGQpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsbCxmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlzW29dfHx1LmNhbGwodGhpcyl9KX0sNTI1MzUoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDM0ODQ4KSxlPVJlZ0V4cC5wcm90'@; put 'b3R5cGUuZXhlYztjLmV4cG9ydHM9ZnVuY3Rpb24ocyxvKXt2YXIgdT1zLmV4ZWM7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHUpe3ZhciBsPXUuY2FsbChzLG8pO2lmKCJvYmplY3QiIT10eXBlb2YgbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29t'@; put 'ZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwiKTtyZXR1cm4gbH1pZigiUmVnRXhwIiE9PW4ocykpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlciIpO3JldHVybiBlLmNhbGwocyxvKX19LDY5NjAwKGMsZix0'@; put 'KXsidXNlIHN0cmljdCI7dmFyIHAsZCxuPXQoMTE1OCksZT1SZWdFeHAucHJvdG90eXBlLmV4ZWMscz1TdHJpbmcucHJvdG90eXBlLnJlcGxhY2Usbz1lLHU9Imxhc3RJbmRleCIsbD0oZD0vYiovZyxlLmNhbGwocD0vYS8sImEiKSxlLmNhbGwoZCwiYSIpLDAhPT1wW3VdfHwwIT09ZFt1XSks'@; put 'aT12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KGx8fGkpJiYobz1mdW5jdGlvbihkKXt2YXIgRSxnLEQsRix5PXRoaXM7cmV0dXJuIGkmJihnPW5ldyBSZWdFeHAoIl4iK3kuc291cmNlKyIkKD8hXFxzKSIsbi5jYWxsKHkpKSksbCYmKEU9eVt1XSksRD1lLmNhbGwoeSxkKSxsJiZEJiYo'@; put 'eVt1XT15Lmdsb2JhbD9ELmluZGV4K0RbMF0ubGVuZ3RoOkUpLGkmJkQmJkQubGVuZ3RoPjEmJnMuY2FsbChEWzBdLGcsZnVuY3Rpb24oKXtmb3IoRj0xO0Y8YXJndW1lbnRzLmxlbmd0aC0yO0YrKyl2b2lkIDA9PT1hcmd1bWVudHNbRl0mJihEW0ZdPXZvaWQgMCl9KSxEfSksYy5leHBvcnRz'@; put 'PW99LDczNTkoYyl7Yy5leHBvcnRzPU9iamVjdC5pc3x8ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD09PW4/MCE9PXR8fDEvdD09MS9uOnQhPXQmJm4hPW59fSwyNTE3MChjLGYsdCl7dmFyIG49dCg0MzMwNSksZT10KDQyMjgpLHM9ZnVuY3Rpb24obyx1KXtpZihlKG8pLCFuKHUpJiZudWxsIT09'@; put 'dSl0aHJvdyBUeXBlRXJyb3IodSsiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTtjLmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24obyx1LGwpe3RyeXsobD10KDM1MDUyKShGdW5jdGlvbi5jYWxsLHQoNjg2NDEpLmYoT2Jq'@; put 'ZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0LDIpKShvLFtdKSx1PSEobyBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaHt1PSEwfXJldHVybiBmdW5jdGlvbih2LHApe3JldHVybiBzKHYscCksdT92Ll9fcHJvdG9fXz1wOmwodixwKSx2fX0oe30sITEpOnZvaWQgMCksY2hlY2s6c319LDU1'@; put 'NzYyKGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg2NzUyNiksZT10KDQ3OTY3KSxzPXQoMTc2Myksbz10KDY3NTc0KSgic3BlY2llcyIpO2MuZXhwb3J0cz1mdW5jdGlvbih1KXt2YXIgbD1uW3VdO3MmJmwmJiFsW29dJiZlLmYobCxvLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9u'@; put 'KCl7cmV0dXJuIHRoaXN9fSl9fSwzODQ0KGMsZix0KXt2YXIgbj10KDQ3OTY3KS5mLGU9dCg1NzkxNykscz10KDY3NTc0KSgidG9TdHJpbmdUYWciKTtjLmV4cG9ydHM9ZnVuY3Rpb24obyx1LGwpe28mJiFlKG89bD9vOm8ucHJvdG90eXBlLHMpJiZuKG8scyx7Y29uZmlndXJhYmxlOiEwLHZh'@; put 'bHVlOnV9KX19LDQwNzY2KGMsZix0KXt2YXIgbj10KDQ0NTU2KSgia2V5cyIpLGU9dCg0NDE1KTtjLmV4cG9ydHM9ZnVuY3Rpb24ocyl7cmV0dXJuIG5bc118fChuW3NdPWUocykpfX0sNDQ1NTYoYyxmLHQpe3ZhciBuPXQoNTYwOTQpLGU9dCg2NzUyNikscz0iX19jb3JlLWpzX3NoYXJlZF9f'@; put 'IixvPWVbc118fChlW3NdPXt9KTsoYy5leHBvcnRzPWZ1bmN0aW9uKHUsbCl7cmV0dXJuIG9bdV18fChvW3VdPXZvaWQgMCE9PWw/bDp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOm4udmVyc2lvbixtb2RlOnQoMjI3NTApPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6Ilx4'@; put 'YTkgMjAyMCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KX0sMTkxOTAoYyxmLHQpe3ZhciBuPXQoNDIyOCksZT10KDYzMzg3KSxzPXQoNjc1NzQpKCJzcGVjaWVzIik7Yy5leHBvcnRzPWZ1bmN0aW9uKG8sdSl7dmFyIGksbD1uKG8pLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9'@; put 'PT1sfHxudWxsPT0oaT1uKGwpW3NdKT91OmUoaSl9fSw4Njg4NChjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoNzk0NDgpO2MuZXhwb3J0cz1mdW5jdGlvbihlLHMpe3JldHVybiEhZSYmbihmdW5jdGlvbigpe3M/ZS5jYWxsKG51bGwsZnVuY3Rpb24oKXt9LDEpOmUuY2FsbChudWxsKX0p'@; put 'fX0sOTEyMTIoYyxmLHQpe3ZhciBuPXQoMjcwODcpLGU9dCgzMzQ0KTtjLmV4cG9ydHM9ZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8sdSl7dmFyIHAsZCxsPVN0cmluZyhlKG8pKSxpPW4odSksdj1sLmxlbmd0aDtyZXR1cm4gaTwwfHxpPj12P3M/IiI6dm9pZCAwOihwPWwuY2hhckNv'@; put 'ZGVBdChpKSk8NTUyOTZ8fHA+NTYzMTl8fGkrMT09PXZ8fChkPWwuY2hhckNvZGVBdChpKzEpKTw1NjMyMHx8ZD41NzM0Mz9zP2wuY2hhckF0KGkpOnA6cz9sLnNsaWNlKGksaSsyKTpkLTU2MzIwKyhwLTU1Mjk2PDwxMCkrNjU1MzZ9fX0sNzg5NDIoYyxmLHQpe3ZhciBuPXQoOTU0MTEpLGU9'@; put 'dCgzMzQ0KTtjLmV4cG9ydHM9ZnVuY3Rpb24ocyxvLHUpe2lmKG4obykpdGhyb3cgVHlwZUVycm9yKCJTdHJpbmcjIit1KyIgZG9lc24ndCBhY2NlcHQgcmVnZXghIik7cmV0dXJuIFN0cmluZyhlKHMpKX19LDUyNDY4KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoNzk0NDgpLHM9dCgzMzQ0'@; put 'KSxvPS8iL2csdT1mdW5jdGlvbihsLGksdixwKXt2YXIgZD1TdHJpbmcocyhsKSkseT0iPCIraTtyZXR1cm4iIiE9PXYmJih5Kz0iICIrdisnPSInK1N0cmluZyhwKS5yZXBsYWNlKG8sIiZxdW90OyIpKyciJykseSsiPiIrZCsiPC8iK2krIj4ifTtjLmV4cG9ydHM9ZnVuY3Rpb24obCxpKXt2'@; put 'YXIgdj17fTt2W2xdPWkodSksbihuLlArbi5GKmUoZnVuY3Rpb24oKXt2YXIgcD0iIltsXSgnIicpO3JldHVybiBwIT09cC50b0xvd2VyQ2FzZSgpfHxwLnNwbGl0KCciJykubGVuZ3RoPjN9KSwiU3RyaW5nIix2KX19LDI3OTI2KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCgyNzA4Nyks'@; put 'ZT10KDMzNDQpO2MuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgdT1TdHJpbmcoZSh0aGlzKSksbD0iIixpPW4obyk7aWYoaTwwfHxpPT0xLzApdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoO2k+MDsoaT4+Pj0xKSYmKHUrPXUpKTEmaSYmKGwrPXUpO3Jl'@; put 'dHVybiBsfX0sNDA2MjkoYyxmLHQpe3ZhciBuPXQoOTIxMjcpLGU9dCgzMzQ0KSxzPXQoNzk0NDgpLG89dCg3ODQ1MSksdT0iWyIrbysiXSIsaT1SZWdFeHAoIl4iK3UrdSsiKiIpLHY9UmVnRXhwKHUrdSsiKiQiKSxwPWZ1bmN0aW9uKHksRSxnKXt2YXIgRD17fSxGPXMoZnVuY3Rpb24oKXty'@; put 'ZXR1cm4hIW9beV0oKXx8Ilx1MjAwYlx4ODUiIT0iXHUyMDBiXHg4NSJbeV0oKX0pLHg9RFt5XT1GP0UoZCk6b1t5XTtnJiYoRFtnXT14KSxuKG4uUCtuLkYqRiwiU3RyaW5nIixEKX0sZD1wLnRyaW09ZnVuY3Rpb24oeSxFKXtyZXR1cm4geT1TdHJpbmcoZSh5KSksMSZFJiYoeT15LnJlcGxh'@; put 'Y2UoaSwiIikpLDImRSYmKHk9eS5yZXBsYWNlKHYsIiIpKSx5fTtjLmV4cG9ydHM9cH0sNzg0NTEoYyl7Yy5leHBvcnRzPSJcdFxuXHZcZlxyIFx4YTBcdTE2ODBcdTE4MGVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMGFc'@; put 'dTIwMmZcdTIwNWZcdTMwMDBcdTIwMjhcdTIwMjlcdWZlZmYifSw3MDE1NyhjLGYsdCl7dmFyIG49dCgyNzA4NyksZT1NYXRoLm1heCxzPU1hdGgubWluO2MuZXhwb3J0cz1mdW5jdGlvbihvLHUpe3JldHVybihvPW4obykpPDA/ZShvK3UsMCk6cyhvLHUpfX0sMjcwODcoYyl7dmFyIGY9TWF0'@; put 'aC5jZWlsLHQ9TWF0aC5mbG9vcjtjLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIGlzTmFOKG49K24pPzA6KG4+MD90OmYpKG4pfX0sNTcyMjEoYyxmLHQpe3ZhciBuPXQoNjEyNDkpLGU9dCgzMzQ0KTtjLmV4cG9ydHM9ZnVuY3Rpb24ocyl7cmV0dXJuIG4oZShzKSl9fSw4MTQ4NShjLGYs'@; put 'dCl7dmFyIG49dCgyNzA4NyksZT1NYXRoLm1pbjtjLmV4cG9ydHM9ZnVuY3Rpb24ocyl7cmV0dXJuIHM+MD9lKG4ocyksOTAwNzE5OTI1NDc0MDk5MSk6MH19LDE4MjcwKGMsZix0KXt2YXIgbj10KDMzNDQpO2MuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KG4oZSkpfX0sODMw'@; put 'NDgoYyxmLHQpe3ZhciBuPXQoNDMzMDUpO2MuZXhwb3J0cz1mdW5jdGlvbihlLHMpe2lmKCFuKGUpKXJldHVybiBlO3ZhciBvLHU7aWYocyYmImZ1bmN0aW9uIj09dHlwZW9mKG89ZS50b1N0cmluZykmJiFuKHU9by5jYWxsKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG89ZS52YWx1ZU9mKSYm'@; put 'IW4odT1vLmNhbGwoZSkpfHwhcyYmImZ1bmN0aW9uIj09dHlwZW9mKG89ZS50b1N0cmluZykmJiFuKHU9by5jYWxsKGUpKSlyZXR1cm4gdTt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sNDQxNShjKXt2YXIgZj0wLHQ9TWF0aC5y'@; put 'YW5kb20oKTtjLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIlN5bWJvbCgiLmNvbmNhdCh2b2lkIDA9PT1uPyIiOm4sIilfIiwoKytmK3QpLnRvU3RyaW5nKDM2KSl9fSwxMjg4OChjLGYsdCl7dmFyIG49dCg0MzMwNSk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyl7aWYoIW4oZSl8fGUuX3Qh'@; put 'PT1zKXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3MrIiByZXF1aXJlZCEiKTtyZXR1cm4gZX19LDQ1MzkyKGMsZix0KXt2YXIgbj10KDY3NTI2KSxlPXQoNTYwOTQpLHM9dCgyMjc1MCksbz10KDQ3OTYwKSx1PXQoNDc5NjcpLmY7Yy5leHBvcnRzPWZ1bmN0aW9u'@; put 'KGwpe3ZhciBpPWUuU3ltYm9sfHwoZS5TeW1ib2w9cz97fTpuLlN5bWJvbHx8e30pOyJfIiE9bC5jaGFyQXQoMCkmJiEobCBpbiBpKSYmdShpLGwse3ZhbHVlOm8uZihsKX0pfX0sNDc5NjAoYyxmLHQpe2YuZj10KDY3NTc0KX0sNjc1NzQoYyxmLHQpe3ZhciBuPXQoNDQ1NTYpKCJ3a3MiKSxl'@; put 'PXQoNDQxNSkscz10KDY3NTI2KS5TeW1ib2wsbz0iZnVuY3Rpb24iPT10eXBlb2YgczsoYy5leHBvcnRzPWZ1bmN0aW9uKGwpe3JldHVybiBuW2xdfHwobltsXT1vJiZzW2xdfHwobz9zOmUpKCJTeW1ib2wuIitsKSl9KS5zdG9yZT1ufSwyMDc2MihjLGYsdCl7dmFyIG49dCgzNDg0OCksZT10'@; put 'KDY3NTc0KSgiaXRlcmF0b3IiKSxzPXQoNjA5MDYpO2MuZXhwb3J0cz10KDU2MDk0KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbihvKXtpZihudWxsIT1vKXJldHVybiBvW2VdfHxvWyJAQGl0ZXJhdG9yIl18fHNbbihvKV19fSwxOTYyMChjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlAs'@; put 'IkFycmF5Iix7Y29weVdpdGhpbjp0KDg0NDM4KX0pLHQoODgxODQpKCJjb3B5V2l0aGluIil9LDU4ODg4KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDY2MTc5KSg0KTtuKG4uUCtuLkYqIXQoODY4ODQpKFtdLmV2ZXJ5LCEwKSwiQXJyYXkiLHtldmVyeTpmdW5jdGlv'@; put 'bihvKXtyZXR1cm4gZSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sNTc3NjIoYyxmLHQpe3ZhciBuPXQoOTIxMjcpO24obi5QLCJBcnJheSIse2ZpbGw6dCgzNTU2NCl9KSx0KDg4MTg0KSgiZmlsbCIpfSwzOTgxMyhjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2NjE3'@; put 'OSkoMik7bihuLlArbi5GKiF0KDg2ODg0KShbXS5maWx0ZXIsITApLCJBcnJheSIse2ZpbHRlcjpmdW5jdGlvbihvKXtyZXR1cm4gZSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sNzUzNjkoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNjYxNzkpKDYpLHM9ImZpbmRJ'@; put 'bmRleCIsbz0hMDtzIGluW10mJkFycmF5KDEpW3NdKGZ1bmN0aW9uKCl7bz0hMX0pLG4obi5QK24uRipvLCJBcnJheSIse2ZpbmRJbmRleDpmdW5jdGlvbihsKXtyZXR1cm4gZSh0aGlzLGwsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLHQoODgxODQpKHMpfSwx'@; put 'NTE0NChjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2NjE3OSkoNSkscz0iZmluZCIsbz0hMDtzIGluW10mJkFycmF5KDEpW3NdKGZ1bmN0aW9uKCl7bz0hMX0pLG4obi5QK24uRipvLCJBcnJheSIse2ZpbmQ6ZnVuY3Rpb24obCl7cmV0dXJuIGUodGhpcyxsLGFyZ3Vt'@; put 'ZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSx0KDg4MTg0KShzKX0sMzUwNChjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2NjE3OSkoMCkscz10KDg2ODg0KShbXS5mb3JFYWNoLCEwKTtuKG4uUCtuLkYqIXMsIkFycmF5Iix7Zm9yRWFjaDpmdW5j'@; put 'dGlvbih1KXtyZXR1cm4gZSh0aGlzLHUsYXJndW1lbnRzWzFdKX19KX0sOTM4NjMoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDM1MDUyKSxlPXQoOTIxMjcpLHM9dCgxODI3MCksbz10KDk3MzY4KSx1PXQoMTUwOCksbD10KDgxNDg1KSxpPXQoNjcyMjcpLHY9dCgyMDc2Mik7ZShlLlMr'@; put 'ZS5GKiF0KDk4OTMxKShmdW5jdGlvbihwKXtBcnJheS5mcm9tKHApfSksIkFycmF5Iix7ZnJvbTpmdW5jdGlvbihkKXt2YXIgayxQLE0sVCx5PXMoZCksRT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LGc9YXJndW1lbnRzLmxlbmd0aCxEPWc+MT9hcmd1bWVudHNbMV06dm9p'@; put 'ZCAwLEY9dm9pZCAwIT09RCx4PTAsQT12KHkpO2lmKEYmJihEPW4oRCxnPjI/YXJndW1lbnRzWzJdOnZvaWQgMCwyKSksbnVsbD09QXx8RT09QXJyYXkmJnUoQSkpZm9yKFA9bmV3IEUoaz1sKHkubGVuZ3RoKSk7az54O3grKylpKFAseCxGP0QoeVt4XSx4KTp5W3hdKTtlbHNlIGZvcihUPUEu'@; put 'Y2FsbCh5KSxQPW5ldyBFOyEoTT1ULm5leHQoKSkuZG9uZTt4KyspaShQLHgsRj9vKFQsRCxbTS52YWx1ZSx4XSwhMCk6TS52YWx1ZSk7cmV0dXJuIFAubGVuZ3RoPXgsUH19KX0sMzQ2MDkoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNjE0NjQpKCExKSxzPVtdLmlu'@; put 'ZGV4T2Ysbz0hIXMmJjEvWzFdLmluZGV4T2YoMSwtMCk8MDtuKG4uUCtuLkYqKG98fCF0KDg2ODg0KShzKSksIkFycmF5Iix7aW5kZXhPZjpmdW5jdGlvbihsKXtyZXR1cm4gbz9zLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDplKHRoaXMsbCxhcmd1bWVudHNbMV0pfX0pfSw0Nzg5OShjLGYs'@; put 'dCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIkFycmF5Iix7aXNBcnJheTp0KDc3OTgxKX0pfSw5NTE2NShjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoODgxODQpLGU9dCg3NDk3MCkscz10KDYwOTA2KSxvPXQoNTcyMjEpO2MuZXhwb3J0cz10KDk4MTc1KShBcnJheSwiQXJyYXkiLGZ1bmN0'@; put 'aW9uKHUsbCl7dGhpcy5fdD1vKHUpLHRoaXMuX2k9MCx0aGlzLl9rPWx9LGZ1bmN0aW9uKCl7dmFyIHU9dGhpcy5fdCxsPXRoaXMuX2ssaT10aGlzLl9pKys7cmV0dXJuIXV8fGk+PXUubGVuZ3RoPyh0aGlzLl90PXZvaWQgMCxlKDEpKTplKDAsImtleXMiPT1sP2k6InZhbHVlcyI9PWw/dVtp'@; put 'XTpbaSx1W2ldXSl9LCJ2YWx1ZXMiKSxzLkFyZ3VtZW50cz1zLkFycmF5LG4oImtleXMiKSxuKCJ2YWx1ZXMiKSxuKCJlbnRyaWVzIil9LDk2NTExKGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDU3MjIxKSxzPVtdLmpvaW47bihuLlArbi5GKih0KDYxMjQ5KSE9T2Jq'@; put 'ZWN0fHwhdCg4Njg4NCkocykpLCJBcnJheSIse2pvaW46ZnVuY3Rpb24odSl7cmV0dXJuIHMuY2FsbChlKHRoaXMpLHZvaWQgMD09PXU/IiwiOnUpfX0pfSwzMzcwNihjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg1NzIyMSkscz10KDI3MDg3KSxvPXQoODE0ODUpLHU9'@; put 'W10ubGFzdEluZGV4T2YsbD0hIXUmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDA7bihuLlArbi5GKihsfHwhdCg4Njg4NCkodSkpLCJBcnJheSIse2xhc3RJbmRleE9mOmZ1bmN0aW9uKHYpe2lmKGwpcmV0dXJuIHUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBwPWUodGhpcyksZD1v'@; put 'KHAubGVuZ3RoKSx5PWQtMTtmb3IoYXJndW1lbnRzLmxlbmd0aD4xJiYoeT1NYXRoLm1pbih5LHMoYXJndW1lbnRzWzFdKSkpLHk8MCYmKHk9ZCt5KTt5Pj0wO3ktLSlpZih5IGluIHAmJnBbeV09PT12KXJldHVybiB5fHwwO3JldHVybi0xfX0pfSw1NDkxMyhjLGYsdCl7InVzZSBzdHJpY3Qi'@; put 'O3ZhciBuPXQoOTIxMjcpLGU9dCg2NjE3OSkoMSk7bihuLlArbi5GKiF0KDg2ODg0KShbXS5tYXAsITApLCJBcnJheSIse21hcDpmdW5jdGlvbihvKXtyZXR1cm4gZSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sODIxODkoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQo'@; put 'NjcyMjcpO24obi5TK24uRip0KDc5NDQ4KShmdW5jdGlvbigpe2Z1bmN0aW9uIHMoKXt9cmV0dXJuIShBcnJheS5vZi5jYWxsKHMpaW5zdGFuY2VvZiBzKX0pLCJBcnJheSIse29mOmZ1bmN0aW9uKCl7Zm9yKHZhciBvPTAsdT1hcmd1bWVudHMubGVuZ3RoLGw9bmV3KCJmdW5jdGlvbiI9PXR5'@; put 'cGVvZiB0aGlzP3RoaXM6QXJyYXkpKHUpO3U+bzspZShsLG8sYXJndW1lbnRzW28rK10pO3JldHVybiBsLmxlbmd0aD11LGx9fSl9LDQ3ODc0KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDY1NDMpO24obi5QK24uRiohdCg4Njg4NCkoW10ucmVkdWNlUmlnaHQsITAp'@; put 'LCJBcnJheSIse3JlZHVjZVJpZ2h0OmZ1bmN0aW9uKG8pe3JldHVybiBlKHRoaXMsbyxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50c1sxXSwhMCl9fSl9LDgxNDQ5KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDY1NDMpO24obi5QK24uRiohdCg4Njg4NCkoW10ucmVk'@; put 'dWNlLCEwKSwiQXJyYXkiLHtyZWR1Y2U6ZnVuY3Rpb24obyl7cmV0dXJuIGUodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sOTU4NTMoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNjEzMDgpLHM9dCg1NTA4OSksbz10KDcwMTU3KSx1'@; put 'PXQoODE0ODUpLGw9W10uc2xpY2U7bihuLlArbi5GKnQoNzk0NDgpKGZ1bmN0aW9uKCl7ZSYmbC5jYWxsKGUpfSksIkFycmF5Iix7c2xpY2U6ZnVuY3Rpb24odixwKXt2YXIgZD11KHRoaXMubGVuZ3RoKSx5PXModGhpcyk7aWYocD12b2lkIDA9PT1wP2Q6cCwiQXJyYXkiPT15KXJldHVybiBs'@; put 'LmNhbGwodGhpcyx2LHApO2Zvcih2YXIgRT1vKHYsZCksZz1vKHAsZCksRD11KGctRSksRj1uZXcgQXJyYXkoRCkseD0wO3g8RDt4KyspRlt4XT0iU3RyaW5nIj09eT90aGlzLmNoYXJBdChFK3gpOnRoaXNbRSt4XTtyZXR1cm4gRn19KX0sODY1MTEoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'bj10KDkyMTI3KSxlPXQoNjYxNzkpKDMpO24obi5QK24uRiohdCg4Njg4NCkoW10uc29tZSwhMCksIkFycmF5Iix7c29tZTpmdW5jdGlvbihvKXtyZXR1cm4gZSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sOTcwNzUoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNjMz'@; put 'ODcpLHM9dCgxODI3MCksbz10KDc5NDQ4KSx1PVtdLnNvcnQsbD1bMSwyLDNdO24obi5QK24uRioobyhmdW5jdGlvbigpe2wuc29ydCh2b2lkIDApfSl8fCFvKGZ1bmN0aW9uKCl7bC5zb3J0KG51bGwpfSl8fCF0KDg2ODg0KSh1KSksIkFycmF5Iix7c29ydDpmdW5jdGlvbih2KXtyZXR1cm4g'@; put 'dm9pZCAwPT09dj91LmNhbGwocyh0aGlzKSk6dS5jYWxsKHModGhpcyksZSh2KSl9fSl9LDc2MjA5KGMsZix0KXt0KDU1NzYyKSgiQXJyYXkiKX0sMTMyOTIoYyxmLHQpe3ZhciBuPXQoOTIxMjcpO24obi5TLCJEYXRlIix7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1l'@; put 'KCl9fSl9LDk0MjkoYyxmLHQpe3ZhciBuPXQoOTIxMjcpLGU9dCg1NTM4NSk7bihuLlArbi5GKihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyE9PWUpLCJEYXRlIix7dG9JU09TdHJpbmc6ZX0pfSw1MjM0NihjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCgxODI3MCks'@; put 'cz10KDgzMDQ4KTtuKG4uUCtuLkYqdCg3OTQ0OCkoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PW5ldyBEYXRlKE5hTikudG9KU09OKCl8fDEhPT1EYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7dG9JU09TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMX19KX0pLCJEYXRlIix7dG9KU09OOmZ1'@; put 'bmN0aW9uKHUpe3ZhciBsPWUodGhpcyksaT1zKGwpO3JldHVybiJudW1iZXIiIT10eXBlb2YgaXx8aXNGaW5pdGUoaSk/bC50b0lTT1N0cmluZygpOm51bGx9fSl9LDQ4OTUxKGMsZix0KXt2YXIgbj10KDY3NTc0KSgidG9QcmltaXRpdmUiKSxlPURhdGUucHJvdG90eXBlO24gaW4gZXx8dCgz'@; put 'MzM0MSkoZSxuLHQoMjAxMDcpKX0sNzg0OShjLGYsdCl7dmFyIG49RGF0ZS5wcm90b3R5cGUsZT0iSW52YWxpZCBEYXRlIixzPSJ0b1N0cmluZyIsbz1uW3NdLHU9bi5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPWUmJnQoMjg4NTkpKG4scyxmdW5jdGlvbigpe3ZhciBpPXUuY2FsbCh0aGlz'@; put 'KTtyZXR1cm4gaT09aT9vLmNhbGwodGhpcyk6ZX0pfSw2NTA0OShjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlAsIkZ1bmN0aW9uIix7YmluZDp0KDE1NTM4KX0pfSw5NTUwMihjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoNDMzMDUpLGU9dCg0MDYyNykscz10KDY3NTc0KSgiaGFzSW5z'@; put 'dGFuY2UiKSxvPUZ1bmN0aW9uLnByb3RvdHlwZTtzIGluIG98fHQoNDc5NjcpLmYobyxzLHt2YWx1ZTpmdW5jdGlvbih1KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IW4odSkpcmV0dXJuITE7aWYoIW4odGhpcy5wcm90b3R5cGUpKXJldHVybiB1IGluc3RhbmNlb2YgdGhpcztmb3Io'@; put 'O3U9ZSh1KTspaWYodGhpcy5wcm90b3R5cGU9PT11KXJldHVybiEwO3JldHVybiExfX0pfSw3MDQ4OShjLGYsdCl7dmFyIG49dCg0Nzk2NykuZixlPUZ1bmN0aW9uLnByb3RvdHlwZSxzPS9eXHMqZnVuY3Rpb24gKFteIChdKikvLG89Im5hbWUiO28gaW4gZXx8dCgxNzYzKSYmbihlLG8se2Nv'@; put 'bmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuKCIiK3RoaXMpLm1hdGNoKHMpWzFdfWNhdGNoe3JldHVybiIifX19KX0sOTMzODYoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDM2MTk3KSxlPXQoMTI4ODgpLHM9Ik1hcCI7Yy5leHBvcnRzPXQoNTg5MzMpKHMsZnVu'@; put 'Y3Rpb24obyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0aW9uKHUpe3ZhciBsPW4uZ2V0RW50cnkoZSh0aGlzLHMpLHUpO3JldHVybiBsJiZsLnZ9LHNldDpmdW5jdGlvbih1LGwpe3Jl'@; put 'dHVybiBuLmRlZihlKHRoaXMscyksMD09PXU/MDp1LGwpfX0sbiwhMCl9LDc2NjQ4KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoNzE0NzMpLHM9TWF0aC5zcXJ0LG89TWF0aC5hY29zaDtuKG4uUytuLkYqIShvJiY3MTA9PU1hdGguZmxvb3IobyhOdW1iZXIuTUFYX1ZBTFVFKSkmJm8oMS8w'@; put 'KT09MS8wKSwiTWF0aCIse2Fjb3NoOmZ1bmN0aW9uKGwpe3JldHVybihsPStsKTwxP05hTjpsPjk0OTA2MjY1LjYyNDI1MTU2P01hdGgubG9nKGwpK01hdGguTE4yOmUobC0xK3MobC0xKSpzKGwrMSkpfX0pfSw1NTc3MShjLGYsdCl7dmFyIG49dCg5MjEyNyksZT1NYXRoLmFzaW5oO24obi5T'@; put 'K24uRiohKGUmJjEvZSgwKT4wKSwiTWF0aCIse2FzaW5oOmZ1bmN0aW9uIHMobyl7cmV0dXJuIGlzRmluaXRlKG89K28pJiYwIT1vP288MD8tcygtbyk6TWF0aC5sb2cobytNYXRoLnNxcnQobypvKzEpKTpvfX0pfSw4MjM5MihjLGYsdCl7dmFyIG49dCg5MjEyNyksZT1NYXRoLmF0YW5oO24o'@; put 'bi5TK24uRiohKGUmJjEvZSgtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbihvKXtyZXR1cm4gMD09KG89K28pP286TWF0aC5sb2coKDErbykvKDEtbykpLzJ9fSl9LDcyMzM1KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoMzczMyk7bihuLlMsIk1hdGgiLHtjYnJ0OmZ1bmN0aW9uKG8p'@; put 'e3JldHVybiBlKG89K28pKk1hdGgucG93KE1hdGguYWJzKG8pLDEvMyl9fSl9LDc0ODk2KGMsZix0KXt2YXIgbj10KDkyMTI3KTtuKG4uUywiTWF0aCIse2NsejMyOmZ1bmN0aW9uKHMpe3JldHVybihzPj4+PTApPzMxLU1hdGguZmxvb3IoTWF0aC5sb2cocysuNSkqTWF0aC5MT0cyRSk6MzJ9'@; put 'fSl9LDk0NTIxKGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPU1hdGguZXhwO24obi5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbihvKXtyZXR1cm4oZShvPStvKStlKC1vKSkvMn19KX0sMjkxNDcoYyxmLHQpe3ZhciBuPXQoOTIxMjcpLGU9dCg3NTU1MSk7bihuLlMrbi5GKihlIT1NYXRoLmV4cG0x'@; put 'KSwiTWF0aCIse2V4cG0xOmV9KX0sNDEzMTgoYyxmLHQpe3ZhciBuPXQoOTIxMjcpO24obi5TLCJNYXRoIix7ZnJvdW5kOnQoNzIxMjIpfSl9LDg0MzUyKGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPU1hdGguYWJzO24obi5TLCJNYXRoIix7aHlwb3Q6ZnVuY3Rpb24obyx1KXtmb3IodmFyIGQs'@; put 'eSxsPTAsaT0wLHY9YXJndW1lbnRzLmxlbmd0aCxwPTA7aTx2OylwPChkPWUoYXJndW1lbnRzW2krK10pKT8obD1sKih5PXAvZCkqeSsxLHA9ZCk6bCs9ZD4wPyh5PWQvcCkqeTpkO3JldHVybiBwPT09MS8wPzEvMDpwKk1hdGguc3FydChsKX19KX0sMTUzMjcoYyxmLHQpe3ZhciBuPXQoOTIx'@; put 'MjcpLGU9TWF0aC5pbXVsO24obi5TK24uRip0KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybi01IT1lKDQyOTQ5NjcyOTUsNSl8fDIhPWUubGVuZ3RofSksIk1hdGgiLHtpbXVsOmZ1bmN0aW9uKG8sdSl7dmFyIGw9NjU1MzUsaT0rbyx2PSt1LHA9bCZpLGQ9bCZ2O3JldHVybiAwfHAqZCsoKGwm'@; put 'aT4+PjE2KSpkK3AqKGwmdj4+PjE2KTw8MTY+Pj4wKX19KX0sNTc1MDkoYyxmLHQpe3ZhciBuPXQoOTIxMjcpO24obi5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24ocyl7cmV0dXJuIE1hdGgubG9nKHMpKk1hdGguTE9HMTBFfX0pfSwxNTkwOShjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMs'@; put 'Ik1hdGgiLHtsb2cxcDp0KDcxNDczKX0pfSw3OTU4NChjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIk1hdGgiLHtsb2cyOmZ1bmN0aW9uKHMpe3JldHVybiBNYXRoLmxvZyhzKS9NYXRoLkxOMn19KX0sNDAzNDUoYyxmLHQpe3ZhciBuPXQoOTIxMjcpO24obi5TLCJNYXRoIix7c2lnbjp0'@; put 'KDM3MzMpfSl9LDk5MTM0KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoNzU1NTEpLHM9TWF0aC5leHA7bihuLlMrbi5GKnQoNzk0NDgpKGZ1bmN0aW9uKCl7cmV0dXJuLTJlLTE3IT0hTWF0aC5zaW5oKC0yZS0xNyl9KSwiTWF0aCIse3Npbmg6ZnVuY3Rpb24odSl7cmV0dXJuIE1hdGguYWJz'@; put 'KHU9K3UpPDE/KGUodSktZSgtdSkpLzI6KHModS0xKS1zKC11LTEpKSooTWF0aC5FLzIpfX0pfSw2NzkwMShjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDc1NTUxKSxzPU1hdGguZXhwO24obi5TLCJNYXRoIix7dGFuaDpmdW5jdGlvbih1KXt2YXIgbD1lKHU9K3UpLGk9ZSgtdSk7cmV0dXJu'@; put 'IGw9PTEvMD8xOmk9PTEvMD8tMToobC1pKS8ocyh1KStzKC11KSl9fSl9LDQ2NTkyKGMsZix0KXt2YXIgbj10KDkyMTI3KTtuKG4uUywiTWF0aCIse3RydW5jOmZ1bmN0aW9uKHMpe3JldHVybihzPjA/TWF0aC5mbG9vcjpNYXRoLmNlaWwpKHMpfX0pfSw2NDUwOShjLGYsdCl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciBuPXQoNjc1MjYpLGU9dCg1NzkxNykscz10KDU1MDg5KSxvPXQoOTg4ODApLHU9dCg4MzA0OCksbD10KDc5NDQ4KSxpPXQoNTk0MTUpLmYsdj10KDY4NjQxKS5mLHA9dCg0Nzk2NykuZixkPXQoNDA2MjkpLnRyaW0seT0iTnVtYmVyIixFPW5beV0sZz1FLEQ9RS5wcm90b3R5cGUs'@; put 'Rj1zKHQoODQ3MTkpKEQpKT09eSx4PSJ0cmltImluIFN0cmluZy5wcm90b3R5cGUsQT1mdW5jdGlvbihUKXt2YXIgYj11KFQsITEpO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmYi5sZW5ndGg+Mil7dmFyIFUsWixudCxCPShiPXg/Yi50cmltKCk6ZChiLDMpKS5jaGFyQ29kZUF0KDApO2lmKDQz'@; put 'PT09Qnx8NDU9PT1CKXtpZig4OD09PShVPWIuY2hhckNvZGVBdCgyKSl8fDEyMD09PVUpcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09Qil7c3dpdGNoKGIuY2hhckNvZGVBdCgxKSl7Y2FzZSA2NjpjYXNlIDk4Olo9MixudD00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOlo9OCxudD01NTticmVh'@; put 'aztkZWZhdWx0OnJldHVybitifWZvcih2YXIgcSx0dD1iLnNsaWNlKDIpLHl0PTAsbXQ9dHQubGVuZ3RoO3l0PG10O3l0KyspaWYoKHE9dHQuY2hhckNvZGVBdCh5dCkpPDQ4fHxxPm50KXJldHVybiBOYU47cmV0dXJuIHBhcnNlSW50KHR0LFopfX1yZXR1cm4rYn07aWYoIUUoIiAwbzEiKXx8'@; put 'IUUoIjBiMSIpfHxFKCIrMHgxIikpe0U9ZnVuY3Rpb24oYil7dmFyIEI9YXJndW1lbnRzLmxlbmd0aDwxPzA6YixVPXRoaXM7cmV0dXJuIFUgaW5zdGFuY2VvZiBFJiYoRj9sKGZ1bmN0aW9uKCl7RC52YWx1ZU9mLmNhbGwoVSl9KTpzKFUpIT15KT9vKG5ldyBnKEEoQikpLFUsRSk6QShCKX07'@; put 'Zm9yKHZhciBNLGs9dCgxNzYzKT9pKGcpOiJNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSxFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsTUlOX1NBRkVfSU5URUdF'@; put 'UixwYXJzZUZsb2F0LHBhcnNlSW50LGlzSW50ZWdlciIuc3BsaXQoIiwiKSxQPTA7ay5sZW5ndGg+UDtQKyspZShnLE09a1tQXSkmJiFlKEUsTSkmJnAoRSxNLHYoZyxNKSk7RS5wcm90b3R5cGU9RCxELmNvbnN0cnVjdG9yPUUsdCgyODg1OSkobix5LEUpfX0sMzQ0MTkoYyxmLHQpe3ZhciBu'@; put 'PXQoOTIxMjcpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSw5MTkzMyhjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDY3NTI2KS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24obyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBvJiZl'@; put 'KG8pfX0pfSw1NTUzOChjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjp0KDMzODQyKX0pfSwzOTQ5NyhjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIk51bWJlciIse2lzTmFOOmZ1bmN0aW9uKHMpe3JldHVybiBzIT1zfX0pfSw0MTA0KGMsZix0KXt2'@; put 'YXIgbj10KDkyMTI3KSxlPXQoMzM4NDIpLHM9TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24odSl7cmV0dXJuIGUodSkmJnModSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LDYwMjEwKGMsZix0KXt2YXIgbj10KDkyMTI3KTtuKG4uUywiTnVtYmVyIix7TUFY'@; put 'X1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LDU2NTc2KGMsZix0KXt2YXIgbj10KDkyMTI3KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSw4NDQzNyhjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDMzNTg5KTtuKG4uUytuLkYq'@; put 'KE51bWJlci5wYXJzZUZsb2F0IT1lKSwiTnVtYmVyIix7cGFyc2VGbG9hdDplfSl9LDg4MDUwKGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoODI3MzgpO24obi5TK24uRiooTnVtYmVyLnBhcnNlSW50IT1lKSwiTnVtYmVyIix7cGFyc2VJbnQ6ZX0pfSwzNzcyNyhjLGYsdCl7InVzZSBzdHJp'@; put 'Y3QiO3ZhciBuPXQoOTIxMjcpLGU9dCgyNzA4Nykscz10KDE1MTIyKSxvPXQoMjc5MjYpLHU9MS4udG9GaXhlZCxsPU1hdGguZmxvb3IsaT1bMCwwLDAsMCwwLDBdLHY9Ik51bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiLHA9IjAiLGQ9ZnVuY3Rpb24oRix4KXtmb3IodmFy'@; put 'IEE9LTEsaz14OysrQTw2OylpW0FdPShrKz1GKmlbQV0pJTFlNyxrPWwoay8xZTcpfSx5PWZ1bmN0aW9uKEYpe2Zvcih2YXIgeD02LEE9MDstLXg+PTA7KWlbeF09bCgoQSs9aVt4XSkvRiksQT1BJUYqMWU3fSxFPWZ1bmN0aW9uKCl7Zm9yKHZhciBGPTYseD0iIjstLUY+PTA7KWlmKCIiIT09'@; put 'eHx8MD09PUZ8fDAhPT1pW0ZdKXt2YXIgQT1TdHJpbmcoaVtGXSk7eD0iIj09PXg/QTp4K28uY2FsbChwLDctQS5sZW5ndGgpK0F9cmV0dXJuIHh9LGc9ZnVuY3Rpb24oRix4LEEpe3JldHVybiAwPT09eD9BOnglMj09MT9nKEYseC0xLEEqRik6ZyhGKkYseC8yLEEpfTtuKG4uUCtuLkYqKCEh'@; put 'dSYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCF0KDc5NDQ4KShmdW5jdGlvbigpe3UuY2FsbCh7'@; put 'fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oeCl7dmFyIFQsYixCLFUsQT1zKHRoaXMsdiksaz1lKHgpLFA9IiIsTT1wO2lmKGs8MHx8az4yMCl0aHJvdyBSYW5nZUVycm9yKHYpO2lmKEEhPUEpcmV0dXJuIk5hTiI7aWYoQTw9LTFlMjF8fEE+PTFlMjEpcmV0dXJuIFN0cmluZyhB'@; put 'KTtpZihBPDAmJihQPSItIixBPS1BKSxBPjFlLTIxKWlmKFQ9ZnVuY3Rpb24oRil7Zm9yKHZhciB4PTAsQT1GO0E+PTQwOTY7KXgrPTEyLEEvPTQwOTY7Zm9yKDtBPj0yOyl4Kz0xLEEvPTI7cmV0dXJuIHh9KEEqZygyLDY5LDEpKS02OSxiPVQ8MD9BKmcoMiwtVCwxKTpBL2coMixULDEpLGIq'@; put 'PTQ1MDM1OTk2MjczNzA0OTYsKFQ9NTItVCk+MCl7Zm9yKGQoMCxiKSxCPWs7Qj49NzspZCgxZTcsMCksQi09Nztmb3IoZChnKDEwLEIsMSksMCksQj1ULTE7Qj49MjM7KXkoMTw8MjMpLEItPTIzO3koMTw8QiksZCgxLDEpLHkoMiksTT1FKCl9ZWxzZSBkKDAsYiksZCgxPDwtVCwwKSxNPUUo'@; put 'KStvLmNhbGwocCxrKTtyZXR1cm4gTT1rPjA/UCsoKFU9TS5sZW5ndGgpPD1rPyIwLiIrby5jYWxsKHAsay1VKStNOk0uc2xpY2UoMCxVLWspKyIuIitNLnNsaWNlKFUtaykpOlArTX19KX0sNjcwMShjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg3OTQ0OCkscz10KDE1'@; put 'MTIyKSxvPTEuLnRvUHJlY2lzaW9uO24obi5QK24uRiooZShmdW5jdGlvbigpe3JldHVybiIxIiE9PW8uY2FsbCgxLHZvaWQgMCl9KXx8IWUoZnVuY3Rpb24oKXtvLmNhbGwoe30pfSkpLCJOdW1iZXIiLHt0b1ByZWNpc2lvbjpmdW5jdGlvbihsKXt2YXIgaT1zKHRoaXMsIk51bWJlciN0b1By'@; put 'ZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24hIik7cmV0dXJuIHZvaWQgMD09PWw/by5jYWxsKGkpOm8uY2FsbChpLGwpfX0pfSwxMTQzMChjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMrbi5GLCJPYmplY3QiLHthc3NpZ246dCgyODIwNil9KX0sOTM1KGMsZix0KXt2YXIgbj10KDky'@; put 'MTI3KTtuKG4uUywiT2JqZWN0Iix7Y3JlYXRlOnQoODQ3MTkpfSl9LDg5NDQ4KGMsZix0KXt2YXIgbj10KDkyMTI3KTtuKG4uUytuLkYqIXQoMTc2MyksIk9iamVjdCIse2RlZmluZVByb3BlcnRpZXM6dCgyMTYyNil9KX0sNjYwNjQoYyxmLHQpe3ZhciBuPXQoOTIxMjcpO24obi5TK24uRioh'@; put 'dCgxNzYzKSwiT2JqZWN0Iix7ZGVmaW5lUHJvcGVydHk6dCg0Nzk2NykuZn0pfSw0ODIzNihjLGYsdCl7dmFyIG49dCg0MzMwNSksZT10KDEyOTg4KS5vbkZyZWV6ZTt0KDgwOTIzKSgiZnJlZXplIixmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIHMmJm4odSk/cyhlKHUp'@; put 'KTp1fX0pfSwyMjY0MihjLGYsdCl7dmFyIG49dCg1NzIyMSksZT10KDY4NjQxKS5mO3QoODA5MjMpKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8sdSl7cmV0dXJuIGUobihvKSx1KX19KX0sODE4OTUoYyxmLHQpe3QoODA5MjMpKCJnZXRP'@; put 'd25Qcm9wZXJ0eU5hbWVzIixmdW5jdGlvbigpe3JldHVybiB0KDQ3NjUpLmZ9KX0sNTNlMyhjLGYsdCl7dmFyIG49dCgxODI3MCksZT10KDQwNjI3KTt0KDgwOTIzKSgiZ2V0UHJvdG90eXBlT2YiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBlKG4obykpfX0pfSw3OTA3'@; put 'MyhjLGYsdCl7dmFyIG49dCg0MzMwNSk7dCg4MDkyMykoImlzRXh0ZW5zaWJsZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiEhbihvKSYmKCFlfHxlKG8pKX19KX0sNjkzMTgoYyxmLHQpe3ZhciBuPXQoNDMzMDUpO3QoODA5MjMpKCJpc0Zyb3plbiIsZnVuY3Rpb24o'@; put 'ZSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiFuKG8pfHwhIWUmJmUobyl9fSl9LDY1MDMyKGMsZix0KXt2YXIgbj10KDQzMzA1KTt0KDgwOTIzKSgiaXNTZWFsZWQiLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4hbihvKXx8ISFlJiZlKG8pfX0pfSwzODQ1MShjLGYs'@; put 'dCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIk9iamVjdCIse2lzOnQoNzM1OSl9KX0sODg2NDcoYyxmLHQpe3ZhciBuPXQoMTgyNzApLGU9dCg1MTMxMSk7dCg4MDkyMykoImtleXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBlKG4obykpfX0pfSwxNTU3MihjLGYsdCl7'@; put 'dmFyIG49dCg0MzMwNSksZT10KDEyOTg4KS5vbkZyZWV6ZTt0KDgwOTIzKSgicHJldmVudEV4dGVuc2lvbnMiLGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gcyYmbih1KT9zKGUodSkpOnV9fSl9LDczODIyKGMsZix0KXt2YXIgbj10KDQzMzA1KSxlPXQoMTI5ODgpLm9u'@; put 'RnJlZXplO3QoODA5MjMpKCJzZWFsIixmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIHMmJm4odSk/cyhlKHUpKTp1fX0pfSwxODEzMihjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIk9iamVjdCIse3NldFByb3RvdHlwZU9mOnQoMjUxNzApLnNldH0pfSwxNzQ4Mihj'@; put 'LGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoMzQ4NDgpLGU9e307ZVt0KDY3NTc0KSgidG9TdHJpbmdUYWciKV09InoiLGUrIiIhPSJbb2JqZWN0IHpdIiYmdCgyODg1OSkoT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIituKHRoaXMpKyJd'@; put 'In0sITApfSw5NjEwOChjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDMzNTg5KTtuKG4uRytuLkYqKHBhcnNlRmxvYXQhPWUpLHtwYXJzZUZsb2F0OmV9KX0sOTA1NzEoYyxmLHQpe3ZhciBuPXQoOTIxMjcpLGU9dCg4MjczOCk7bihuLkcrbi5GKihwYXJzZUludCE9ZSkse3BhcnNlSW50OmV9'@; put 'KX0sNzEwMyhjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDYzMzg3KSxzPXQoNDIyOCksbz0odCg2NzUyNikuUmVmbGVjdHx8e30pLmFwcGx5LHU9RnVuY3Rpb24uYXBwbHk7bihuLlMrbi5GKiF0KDc5NDQ4KShmdW5jdGlvbigpe28oZnVuY3Rpb24oKXt9KX0pLCJSZWZsZWN0Iix7YXBwbHk6'@; put 'ZnVuY3Rpb24oaSx2LHApe3ZhciBkPWUoaSkseT1zKHApO3JldHVybiBvP28oZCx2LHkpOnUuY2FsbChkLHYseSl9fSl9LDgyNTg2KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoODQ3MTkpLHM9dCg2MzM4Nyksbz10KDQyMjgpLHU9dCg0MzMwNSksbD10KDc5NDQ4KSxpPXQoMTU1MzgpLHY9'@; put 'KHQoNjc1MjYpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QscD1sKGZ1bmN0aW9uKCl7ZnVuY3Rpb24geSgpe31yZXR1cm4hKHYoZnVuY3Rpb24oKXt9LFtdLHkpaW5zdGFuY2VvZiB5KX0pLGQ9IWwoZnVuY3Rpb24oKXt2KGZ1bmN0aW9uKCl7fSl9KTtuKG4uUytuLkYqKHB8fGQpLCJSZWZsZWN0'@; put 'Iix7Y29uc3RydWN0OmZ1bmN0aW9uKEUsZyl7cyhFKSxvKGcpO3ZhciBEPWFyZ3VtZW50cy5sZW5ndGg8Mz9FOnMoYXJndW1lbnRzWzJdKTtpZihkJiYhcClyZXR1cm4gdihFLGcsRCk7aWYoRT09RCl7c3dpdGNoKGcubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBFO2Nhc2UgMTpyZXR1cm4g'@; put 'bmV3IEUoZ1swXSk7Y2FzZSAyOnJldHVybiBuZXcgRShnWzBdLGdbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IEUoZ1swXSxnWzFdLGdbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IEUoZ1swXSxnWzFdLGdbMl0sZ1szXSl9dmFyIEY9W251bGxdO3JldHVybiBGLnB1c2guYXBwbHkoRixnKSxuZXcoaS5h'@; put 'cHBseShFLEYpKX12YXIgeD1ELnByb3RvdHlwZSxBPWUodSh4KT94Ok9iamVjdC5wcm90b3R5cGUpLGs9RnVuY3Rpb24uYXBwbHkuY2FsbChFLEEsZyk7cmV0dXJuIHUoayk/azpBfX0pfSw5MjU1MihjLGYsdCl7dmFyIG49dCg0Nzk2NyksZT10KDkyMTI3KSxzPXQoNDIyOCksbz10KDgzMDQ4'@; put 'KTtlKGUuUytlLkYqdCg3OTQ0OCkoZnVuY3Rpb24oKXtSZWZsZWN0LmRlZmluZVByb3BlcnR5KG4uZih7fSwxLHt2YWx1ZToxfSksMSx7dmFsdWU6Mn0pfSksIlJlZmxlY3QiLHtkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihsLGksdil7cyhsKSxpPW8oaSwhMCkscyh2KTt0cnl7cmV0dXJuIG4u'@; put 'ZihsLGksdiksITB9Y2F0Y2h7cmV0dXJuITF9fX0pfSw0Mzc2KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoNjg2NDEpLmYscz10KDQyMjgpO24obi5TLCJSZWZsZWN0Iix7ZGVsZXRlUHJvcGVydHk6ZnVuY3Rpb24odSxsKXt2YXIgaT1lKHModSksbCk7cmV0dXJuIShpJiYhaS5jb25maWd1'@; put 'cmFibGUpJiZkZWxldGUgdVtsXX19KX0sNzUxNTMoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNDIyOCkscz1mdW5jdGlvbihvKXt0aGlzLl90PWUobyksdGhpcy5faT0wO3ZhciBsLHU9dGhpcy5faz1bXTtmb3IobCBpbiBvKXUucHVzaChsKX07dCg2MDMyKShzLCJP'@; put 'YmplY3QiLGZ1bmN0aW9uKCl7dmFyIGwsbz10aGlzLHU9by5faztkb3tpZihvLl9pPj11Lmxlbmd0aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKGw9dVtvLl9pKytdKWluIG8uX3QpKTtyZXR1cm57dmFsdWU6bCxkb25lOiExfX0pLG4obi5TLCJSZWZsZWN0Iix7ZW51'@; put 'bWVyYXRlOmZ1bmN0aW9uKHUpe3JldHVybiBuZXcgcyh1KX19KX0sNTI2NTAoYyxmLHQpe3ZhciBuPXQoNjg2NDEpLGU9dCg5MjEyNykscz10KDQyMjgpO2UoZS5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHUsbCl7cmV0dXJuIG4uZihzKHUpLGwpfX0p'@; put 'fSwzMTEwNChjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDQwNjI3KSxzPXQoNDIyOCk7bihuLlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih1KXtyZXR1cm4gZShzKHUpKX19KX0sMTE4NzkoYyxmLHQpe3ZhciBuPXQoNjg2NDEpLGU9dCg0MDYyNykscz10KDU3OTE3KSxv'@; put 'PXQoOTIxMjcpLHU9dCg0MzMwNSksbD10KDQyMjgpO28oby5TLCJSZWZsZWN0Iix7Z2V0OmZ1bmN0aW9uIGkodixwKXt2YXIgeSxFLGQ9YXJndW1lbnRzLmxlbmd0aDwzP3Y6YXJndW1lbnRzWzJdO3JldHVybiBsKHYpPT09ZD92W3BdOih5PW4uZih2LHApKT9zKHksInZhbHVlIik/eS52YWx1'@; put 'ZTp2b2lkIDAhPT15LmdldD95LmdldC5jYWxsKGQpOnZvaWQgMDp1KEU9ZSh2KSk/aShFLHAsZCk6dm9pZCAwfX0pfSwyMTg4MyhjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIlJlZmxlY3QiLHtoYXM6ZnVuY3Rpb24ocyxvKXtyZXR1cm4gbyBpbiBzfX0pfSwzNTQzMyhjLGYsdCl7dmFy'@; put 'IG49dCg5MjEyNyksZT10KDQyMjgpLHM9T2JqZWN0LmlzRXh0ZW5zaWJsZTtuKG4uUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbih1KXtyZXR1cm4gZSh1KSwhc3x8cyh1KX19KX0sNTVlMyhjLGYsdCl7dmFyIG49dCg5MjEyNyk7bihuLlMsIlJlZmxlY3QiLHtvd25LZXlzOnQo'@; put 'OTYyMjIpfSl9LDE1OTMyKGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoNDIyOCkscz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7bihuLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih1KXtlKHUpO3RyeXtyZXR1cm4gcyYmcyh1KSwhMH1jYXRjaHtyZXR1cm4hMX19'@; put 'fSl9LDI2MzE2KGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoMjUxNzApO2UmJm4obi5TLCJSZWZsZWN0Iix7c2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24obyx1KXtlLmNoZWNrKG8sdSk7dHJ5e3JldHVybiBlLnNldChvLHUpLCEwfWNhdGNoe3JldHVybiExfX19KX0sNTQ0MyhjLGYsdCl7dmFy'@; put 'IG49dCg0Nzk2NyksZT10KDY4NjQxKSxzPXQoNDA2MjcpLG89dCg1NzkxNyksdT10KDkyMTI3KSxsPXQoMTE5OTYpLGk9dCg0MjI4KSx2PXQoNDMzMDUpO3UodS5TLCJSZWZsZWN0Iix7c2V0OmZ1bmN0aW9uIHAoZCx5LEUpe3ZhciBGLHgsZz1hcmd1bWVudHMubGVuZ3RoPDQ/ZDphcmd1bWVu'@; put 'dHNbM10sRD1lLmYoaShkKSx5KTtpZighRCl7aWYodih4PXMoZCkpKXJldHVybiBwKHgseSxFLGcpO0Q9bCgwKX1pZihvKEQsInZhbHVlIikpe2lmKCExPT09RC53cml0YWJsZXx8IXYoZykpcmV0dXJuITE7aWYoRj1lLmYoZyx5KSl7aWYoRi5nZXR8fEYuc2V0fHwhMT09PUYud3JpdGFibGUp'@; put 'cmV0dXJuITE7Ri52YWx1ZT1FLG4uZihnLHksRil9ZWxzZSBuLmYoZyx5LGwoMCxFKSk7cmV0dXJuITB9cmV0dXJuIHZvaWQgMCE9PUQuc2V0JiYoRC5zZXQuY2FsbChnLEUpLCEwKX19KX0sODMwMShjLGYsdCl7dmFyIG49dCg2NzUyNiksZT10KDk4ODgwKSxzPXQoNDc5NjcpLmYsbz10KDU5'@; put 'NDE1KS5mLHU9dCg5NTQxMSksbD10KDExNTgpLGk9bi5SZWdFeHAsdj1pLHA9aS5wcm90b3R5cGUsZD0vYS9nLHk9L2EvZyxFPW5ldyBpKGQpIT09ZDtpZih0KDE3NjMpJiYoIUV8fHQoNzk0NDgpKGZ1bmN0aW9uKCl7cmV0dXJuIHlbdCg2NzU3NCkoIm1hdGNoIildPSExLGkoZCkhPWR8fGko'@; put 'eSk9PXl8fCIvYS9pIiE9aShkLCJpIil9KSkpe2k9ZnVuY3Rpb24oQSxrKXt2YXIgUD10aGlzIGluc3RhbmNlb2YgaSxNPXUoQSksVD12b2lkIDA9PT1rO3JldHVybiFQJiZNJiZBLmNvbnN0cnVjdG9yPT09aSYmVD9BOmUoRT9uZXcgdihNJiYhVD9BLnNvdXJjZTpBLGspOnYoKE09QSBpbnN0'@; put 'YW5jZW9mIGkpP0Euc291cmNlOkEsTSYmVD9sLmNhbGwoQSk6ayksUD90aGlzOnAsaSl9O2Zvcih2YXIgZz1mdW5jdGlvbih4KXt4IGluIGl8fHMoaSx4LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZbeF19LHNldDpmdW5jdGlvbihBKXt2W3hdPUF9fSl9LEQ9byh2'@; put 'KSxGPTA7RC5sZW5ndGg+RjspZyhEW0YrK10pO3AuY29uc3RydWN0b3I9aSxpLnByb3RvdHlwZT1wLHQoMjg4NTkpKG4sIlJlZ0V4cCIsaSl9dCg1NTc2MikoIlJlZ0V4cCIpfSw5NDExNihjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoNjk2MDApO3QoOTIxMjcpKHt0YXJnZXQ6IlJlZ0V4'@; put 'cCIscHJvdG86ITAsZm9yY2VkOm4hPT0vLi8uZXhlY30se2V4ZWM6bn0pfSwzOTYzOChjLGYsdCl7dCgxNzYzKSYmImciIT0vLi9nLmZsYWdzJiZ0KDQ3OTY3KS5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDp0KDExNTgpfSl9LDQwNDAoYyxmLHQpeyJ1'@; put 'c2Ugc3RyaWN0Ijt2YXIgbj10KDQyMjgpLGU9dCg4MTQ4NSkscz10KDI4ODI4KSxvPXQoNTI1MzUpO3QoNjkyMjgpKCJtYXRjaCIsMSxmdW5jdGlvbih1LGwsaSx2KXtyZXR1cm5bZnVuY3Rpb24oZCl7dmFyIHk9dSh0aGlzKSxFPWQ/LltsXTtyZXR1cm4gdm9pZCAwIT09RT9FLmNhbGwoZCx5'@; put 'KTpuZXcgUmVnRXhwKGQpW2xdKFN0cmluZyh5KSl9LGZ1bmN0aW9uKHApe3ZhciBkPXYoaSxwLHRoaXMpO2lmKGQuZG9uZSlyZXR1cm4gZC52YWx1ZTt2YXIgeT1uKHApLEU9U3RyaW5nKHRoaXMpO2lmKCF5Lmdsb2JhbClyZXR1cm4gbyh5LEUpO3ZhciBnPXkudW5pY29kZTt5Lmxhc3RJbmRl'@; put 'eD0wO2Zvcih2YXIgeCxEPVtdLEY9MDtudWxsIT09KHg9byh5LEUpKTspe3ZhciBBPVN0cmluZyh4WzBdKTtEW0ZdPUEsIiI9PT1BJiYoeS5sYXN0SW5kZXg9cyhFLGUoeS5sYXN0SW5kZXgpLGcpKSxGKyt9cmV0dXJuIDA9PT1GP251bGw6RH1dfSl9LDY4MzA1KGMsZix0KXsidXNlIHN0cmlj'@; put 'dCI7dmFyIG49dCg0MjI4KSxlPXQoMTgyNzApLHM9dCg4MTQ4NSksbz10KDI3MDg3KSx1PXQoMjg4MjgpLGw9dCg1MjUzNSksaT1NYXRoLm1heCx2PU1hdGgubWluLHA9TWF0aC5mbG9vcixkPS9cJChbJCZgJ118XGRcZD98PFtePl0qPikvZyx5PS9cJChbJCZgJ118XGRcZD8pL2csRT1mdW5j'@; put 'dGlvbihnKXtyZXR1cm4gdm9pZCAwPT09Zz9nOlN0cmluZyhnKX07dCg2OTIyOCkoInJlcGxhY2UiLDIsZnVuY3Rpb24oZyxELEYseCl7cmV0dXJuW2Z1bmN0aW9uKFAsTSl7dmFyIFQ9Zyh0aGlzKSxiPVA/LltEXTtyZXR1cm4gdm9pZCAwIT09Yj9iLmNhbGwoUCxULE0pOkYuY2FsbChTdHJp'@; put 'bmcoVCksUCxNKX0sZnVuY3Rpb24oayxQKXt2YXIgTT14KEYsayx0aGlzLFApO2lmKE0uZG9uZSlyZXR1cm4gTS52YWx1ZTt2YXIgVD1uKGspLGI9U3RyaW5nKHRoaXMpLEI9ImZ1bmN0aW9uIj09dHlwZW9mIFA7Qnx8KFA9U3RyaW5nKFApKTt2YXIgVT1ULmdsb2JhbDtpZihVKXt2YXIgWj1U'@; put 'LnVuaWNvZGU7VC5sYXN0SW5kZXg9MH1mb3IodmFyIG50PVtdOzspe3ZhciB0dD1sKFQsYik7aWYobnVsbD09PXR0fHwobnQucHVzaCh0dCksIVUpKWJyZWFrOyIiPT09U3RyaW5nKHR0WzBdKSYmKFQubGFzdEluZGV4PXUoYixzKFQubGFzdEluZGV4KSxaKSl9Zm9yKHZhciBtdD0iIixxPTAs'@; put 'WD0wO1g8bnQubGVuZ3RoO1grKyl7dHQ9bnRbWF07Zm9yKHZhciBldD1TdHJpbmcodHRbMF0pLFY9aSh2KG8odHQuaW5kZXgpLGIubGVuZ3RoKSwwKSxsdD1bXSxkdD0xO2R0PHR0Lmxlbmd0aDtkdCsrKWx0LnB1c2goRSh0dFtkdF0pKTt2YXIgQ3Q9dHQuZ3JvdXBzO2lmKEIpe3ZhciBPdD1b'@; put 'ZXRdLmNvbmNhdChsdCxWLGIpO3ZvaWQgMCE9PUN0JiZPdC5wdXNoKEN0KTt2YXIgTnQ9U3RyaW5nKFAuYXBwbHkodm9pZCAwLE90KSl9ZWxzZSBOdD1BKGV0LGIsVixsdCxDdCxQKTtWPj1xJiYobXQrPWIuc2xpY2UocSxWKStOdCxxPVYrZXQubGVuZ3RoKX1yZXR1cm4gbXQrYi5zbGljZShx'@; put 'KX1dO2Z1bmN0aW9uIEEoayxQLE0sVCxiLEIpe3ZhciBVPU0ray5sZW5ndGgsWj1ULmxlbmd0aCxudD15O3JldHVybiB2b2lkIDAhPT1iJiYoYj1lKGIpLG50PWQpLEYuY2FsbChCLG50LGZ1bmN0aW9uKHR0LHl0KXt2YXIgbXQ7c3dpdGNoKHl0LmNoYXJBdCgwKSl7Y2FzZSIkIjpyZXR1cm4i'@; put 'JCI7Y2FzZSImIjpyZXR1cm4gaztjYXNlImAiOnJldHVybiBQLnNsaWNlKDAsTSk7Y2FzZSInIjpyZXR1cm4gUC5zbGljZShVKTtjYXNlIjwiOm10PWJbeXQuc2xpY2UoMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIHE9K3l0O2lmKDA9PT1xKXJldHVybiB0dDtpZihxPlope3ZhciBYPXAocS8x'@; put 'MCk7cmV0dXJuIDA9PT1YP3R0Olg8PVo/dm9pZCAwPT09VFtYLTFdP3l0LmNoYXJBdCgxKTpUW1gtMV0reXQuY2hhckF0KDEpOnR0fW10PVRbcS0xXX1yZXR1cm4gdm9pZCAwPT09bXQ/IiI6bXR9KX19KX0sNzQ3MDEoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyMjgpLGU9dCg3MzU5'@; put 'KSxzPXQoNTI1MzUpO3QoNjkyMjgpKCJzZWFyY2giLDEsZnVuY3Rpb24obyx1LGwsaSl7cmV0dXJuW2Z1bmN0aW9uKHApe3ZhciBkPW8odGhpcykseT1wPy5bdV07cmV0dXJuIHZvaWQgMCE9PXk/eS5jYWxsKHAsZCk6bmV3IFJlZ0V4cChwKVt1XShTdHJpbmcoZCkpfSxmdW5jdGlvbih2KXt2'@; put 'YXIgcD1pKGwsdix0aGlzKTtpZihwLmRvbmUpcmV0dXJuIHAudmFsdWU7dmFyIGQ9bih2KSx5PVN0cmluZyh0aGlzKSxFPWQubGFzdEluZGV4O2UoRSwwKXx8KGQubGFzdEluZGV4PTApO3ZhciBnPXMoZCx5KTtyZXR1cm4gZShkLmxhc3RJbmRleCxFKXx8KGQubGFzdEluZGV4PUUpLG51bGw9'@; put 'PT1nPy0xOmcuaW5kZXh9XX0pfSwyMDM0MShjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoOTU0MTEpLGU9dCg0MjI4KSxzPXQoMTkxOTApLG89dCgyODgyOCksdT10KDgxNDg1KSxsPXQoNTI1MzUpLGk9dCg2OTYwMCksdj10KDc5NDQ4KSxwPU1hdGgubWluLGQ9W10ucHVzaCx5PSJzcGxp'@; put 'dCIsRT0ibGVuZ3RoIixnPSJsYXN0SW5kZXgiLEQ9NDI5NDk2NzI5NSxGPSF2KGZ1bmN0aW9uKCl7UmVnRXhwKEQsInkiKX0pO3QoNjkyMjgpKCJzcGxpdCIsMixmdW5jdGlvbih4LEEsayxQKXt2YXIgTTtyZXR1cm4gTT0iYyI9PSJhYmJjIlt5XSgvKGIpKi8pWzFdfHw0IT0idGVzdCJbeV0o'@; put 'Lyg/OikvLC0xKVtFXXx8MiE9ImFiIlt5XSgvKD86YWIpKi8pW0VdfHw0IT0iLiJbeV0oLyguPykoLj8pLylbRV18fCIuIlt5XSgvKCkoKS8pW0VdPjF8fCIiW3ldKC8uPy8pW0VdP2Z1bmN0aW9uKFQsYil7dmFyIEI9U3RyaW5nKHRoaXMpO2lmKHZvaWQgMD09PVQmJjA9PT1iKXJldHVybltd'@; put 'O2lmKCFuKFQpKXJldHVybiBrLmNhbGwoQixULGIpO2Zvcih2YXIgbXQscSxYLFU9W10sbnQ9MCx0dD12b2lkIDA9PT1iP0Q6Yj4+PjAseXQ9bmV3IFJlZ0V4cChULnNvdXJjZSwoVC5pZ25vcmVDYXNlPyJpIjoiIikrKFQubXVsdGlsaW5lPyJtIjoiIikrKFQudW5pY29kZT8idSI6IiIpKyhU'@; put 'LnN0aWNreT8ieSI6IiIpKyJnIik7KG10PWkuY2FsbCh5dCxCKSkmJiEoKHE9eXRbZ10pPm50JiYoVS5wdXNoKEIuc2xpY2UobnQsbXQuaW5kZXgpKSxtdFtFXT4xJiZtdC5pbmRleDxCW0VdJiZkLmFwcGx5KFUsbXQuc2xpY2UoMSkpLFg9bXRbMF1bRV0sbnQ9cSxVW0VdPj10dCkpOyl5dFtn'@; put 'XT09PW10LmluZGV4JiZ5dFtnXSsrO3JldHVybiBudD09PUJbRV0/KFh8fCF5dC50ZXN0KCIiKSkmJlUucHVzaCgiIik6VS5wdXNoKEIuc2xpY2UobnQpKSxVW0VdPnR0P1Uuc2xpY2UoMCx0dCk6VX06IjAiW3ldKHZvaWQgMCwwKVtFXT9mdW5jdGlvbihULGIpe3JldHVybiB2b2lkIDA9PT1U'@; put 'JiYwPT09Yj9bXTprLmNhbGwodGhpcyxULGIpfTprLFtmdW5jdGlvbihiLEIpe3ZhciBVPXgodGhpcyksWj1iPy5bQV07cmV0dXJuIHZvaWQgMCE9PVo/Wi5jYWxsKGIsVSxCKTpNLmNhbGwoU3RyaW5nKFUpLGIsQil9LGZ1bmN0aW9uKFQsYil7dmFyIEI9UChNLFQsdGhpcyxiLE0hPT1rKTtp'@; put 'ZihCLmRvbmUpcmV0dXJuIEIudmFsdWU7dmFyIFU9ZShUKSxaPVN0cmluZyh0aGlzKSxudD1zKFUsUmVnRXhwKSx0dD1VLnVuaWNvZGUsbXQ9bmV3IG50KEY/VToiXig/OiIrVS5zb3VyY2UrIikiLChVLmlnbm9yZUNhc2U/ImkiOiIiKSsoVS5tdWx0aWxpbmU/Im0iOiIiKSsoVS51bmljb2Rl'@; put 'PyJ1IjoiIikrKEY/InkiOiJnIikpLHE9dm9pZCAwPT09Yj9EOmI+Pj4wO2lmKDA9PT1xKXJldHVybltdO2lmKDA9PT1aLmxlbmd0aClyZXR1cm4gbnVsbD09PWwobXQsWik/W1pdOltdO2Zvcih2YXIgWD0wLGV0PTAsVj1bXTtldDxaLmxlbmd0aDspe210Lmxhc3RJbmRleD1GP2V0OjA7dmFy'@; put 'IGR0LGx0PWwobXQsRj9aOlouc2xpY2UoZXQpKTtpZihudWxsPT09bHR8fChkdD1wKHUobXQubGFzdEluZGV4KyhGPzA6ZXQpKSxaLmxlbmd0aCkpPT09WClldD1vKFosZXQsdHQpO2Vsc2V7aWYoVi5wdXNoKFouc2xpY2UoWCxldCkpLFYubGVuZ3RoPT09cSlyZXR1cm4gVjtmb3IodmFyIEN0'@; put 'PTE7Q3Q8PWx0Lmxlbmd0aC0xO0N0KyspaWYoVi5wdXNoKGx0W0N0XSksVi5sZW5ndGg9PT1xKXJldHVybiBWO2V0PVg9ZHR9fXJldHVybiBWLnB1c2goWi5zbGljZShYKSksVn1dfSl9LDc4NjA0KGMsZix0KXsidXNlIHN0cmljdCI7dCgzOTYzOCk7dmFyIG49dCg0MjI4KSxlPXQoMTE1OCks'@; put 'cz10KDE3NjMpLG89InRvU3RyaW5nIix1PS8uL1tvXSxsPWZ1bmN0aW9uKGkpe3QoMjg4NTkpKFJlZ0V4cC5wcm90b3R5cGUsbyxpLCEwKX07dCg3OTQ0OCkoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPXUuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pP2woZnVuY3Rpb24oKXt2YXIg'@; put 'dj1uKHRoaXMpO3JldHVybiIvIi5jb25jYXQodi5zb3VyY2UsIi8iLCJmbGFncyJpbiB2P3YuZmxhZ3M6IXMmJnYgaW5zdGFuY2VvZiBSZWdFeHA/ZS5jYWxsKHYpOnZvaWQgMCl9KTp1Lm5hbWUhPW8mJmwoZnVuY3Rpb24oKXtyZXR1cm4gdS5jYWxsKHRoaXMpfSl9LDcxNjMyKGMsZix0KXsi'@; put 'dXNlIHN0cmljdCI7dmFyIG49dCgzNjE5NyksZT10KDEyODg4KTtjLmV4cG9ydHM9dCg1ODkzMykoIlNldCIsZnVuY3Rpb24obyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKHUp'@; put 'e3JldHVybiBuLmRlZihlKHRoaXMsIlNldCIpLHU9MD09PXU/MDp1LHUpfX0sbil9LDY0OTc5KGMsZix0KXsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImFuY2hvciIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuKHRoaXMsImEiLCJuYW1lIixzKX19KX0sODkwMTEoYyxm'@; put 'LHQpeyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgiYmlnIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLCJiaWciLCIiLCIiKX19KX0sNTQ1OTEoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgiYmxpbmsiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigp'@; put 'e3JldHVybiBuKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LDQ3MzM0KGMsZix0KXsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImJvbGQiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsImIiLCIiLCIiKX19KX0sMzI0MDUoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIg'@; put 'bj10KDkyMTI3KSxlPXQoOTEyMTIpKCExKTtuKG4uUCwiU3RyaW5nIix7Y29kZVBvaW50QXQ6ZnVuY3Rpb24obyl7cmV0dXJuIGUodGhpcyxvKX19KX0sMTcyMjQoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoODE0ODUpLHM9dCg3ODk0Miksbz0iZW5kc1dpdGgiLHU9'@; put 'IiJbb107bihuLlArbi5GKnQoMjUyMDMpKG8pLCJTdHJpbmciLHtlbmRzV2l0aDpmdW5jdGlvbihpKXt2YXIgdj1zKHRoaXMsaSxvKSxwPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGQ9ZSh2Lmxlbmd0aCkseT12b2lkIDA9PT1wP2Q6TWF0aC5taW4oZShwKSxkKSxF'@; put 'PVN0cmluZyhpKTtyZXR1cm4gdT91LmNhbGwodixFLHkpOnYuc2xpY2UoeS1FLmxlbmd0aCx5KT09PUV9fSl9LDcwODMoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgiZml4ZWQiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInR0IiwiIiwiIil9fSl9'@; put 'LDY5MjEzKGMsZix0KXsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImZvbnRjb2xvciIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuKHRoaXMsImZvbnQiLCJjb2xvciIscyl9fSl9LDM4NDM3KGMsZix0KXsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImZvbnRzaXplIixmdW5j'@; put 'dGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIG4odGhpcywiZm9udCIsInNpemUiLHMpfX0pfSwxMjIyMChjLGYsdCl7dmFyIG49dCg5MjEyNyksZT10KDcwMTU3KSxzPVN0cmluZy5mcm9tQ2hhckNvZGUsbz1TdHJpbmcuZnJvbUNvZGVQb2ludDtuKG4uUytuLkYqKCEhbyYmMSE9'@; put 'by5sZW5ndGgpLCJTdHJpbmciLHtmcm9tQ29kZVBvaW50OmZ1bmN0aW9uKGwpe2Zvcih2YXIgZCxpPVtdLHY9YXJndW1lbnRzLmxlbmd0aCxwPTA7dj5wOyl7aWYoZD0rYXJndW1lbnRzW3ArK10sZShkLDExMTQxMTEpIT09ZCl0aHJvdyBSYW5nZUVycm9yKGQrIiBpcyBub3QgYSB2YWxpZCBj'@; put 'b2RlIHBvaW50Iik7aS5wdXNoKGQ8NjU1MzY/cyhkKTpzKDU1Mjk2KygoZC09NjU1MzYpPj4xMCksZCUxMDI0KzU2MzIwKSl9cmV0dXJuIGkuam9pbigiIil9fSl9LDI4ODcyKGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDc4OTQyKSxzPSJpbmNsdWRlcyI7bihuLlAr'@; put 'bi5GKnQoMjUyMDMpKHMpLCJTdHJpbmciLHtpbmNsdWRlczpmdW5jdGlvbih1KXtyZXR1cm4hIX5lKHRoaXMsdSxzKS5pbmRleE9mKHUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw2MjIyMChjLGYsdCl7InVzZSBzdHJpY3QiO3QoNTI0NjgpKCJpdGFsaWNz'@; put 'IixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLCJpIiwiIiwiIil9fSl9LDgyOTc1KGMsZix0KXsidXNlIHN0cmljdCI7dmFyIG49dCg5MTIxMikoITApO3QoOTgxNzUpKFN0cmluZywiU3RyaW5nIixmdW5jdGlvbihlKXt0aGlzLl90PVN0cmluZyhlKSx0aGlz'@; put 'Ll9pPTB9LGZ1bmN0aW9uKCl7dmFyIG8sZT10aGlzLl90LHM9dGhpcy5faTtyZXR1cm4gcz49ZS5sZW5ndGg/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfToobz1uKGUscyksdGhpcy5faSs9by5sZW5ndGgse3ZhbHVlOm8sZG9uZTohMX0pfSl9LDc2NTQ5KGMsZix0KXsidXNlIHN0cmljdCI7dCg1'@; put 'MjQ2OCkoImxpbmsiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gbih0aGlzLCJhIiwiaHJlZiIscyl9fSl9LDIzNDgzKGMsZix0KXt2YXIgbj10KDkyMTI3KSxlPXQoNTcyMjEpLHM9dCg4MTQ4NSk7bihuLlMsIlN0cmluZyIse3JhdzpmdW5jdGlvbih1KXtmb3IodmFy'@; put 'IGw9ZSh1LnJhdyksaT1zKGwubGVuZ3RoKSx2PWFyZ3VtZW50cy5sZW5ndGgscD1bXSxkPTA7aT5kOylwLnB1c2goU3RyaW5nKGxbZCsrXSkpLGQ8diYmcC5wdXNoKFN0cmluZyhhcmd1bWVudHNbZF0pKTtyZXR1cm4gcC5qb2luKCIiKX19KX0sNDQ4OTQoYyxmLHQpe3ZhciBuPXQoOTIxMjcp'@; put 'O24obi5QLCJTdHJpbmciLHtyZXBlYXQ6dCgyNzkyNil9KX0sNDI4MTgoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgic21hbGwiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LDEwMTc3KGMsZix0KXsidXNlIHN0cmlj'@; put 'dCI7dmFyIG49dCg5MjEyNyksZT10KDgxNDg1KSxzPXQoNzg5NDIpLG89InN0YXJ0c1dpdGgiLHU9IiJbb107bihuLlArbi5GKnQoMjUyMDMpKG8pLCJTdHJpbmciLHtzdGFydHNXaXRoOmZ1bmN0aW9uKGkpe3ZhciB2PXModGhpcyxpLG8pLHA9ZShNYXRoLm1pbihhcmd1bWVudHMubGVuZ3Ro'@; put 'PjE/YXJndW1lbnRzWzFdOnZvaWQgMCx2Lmxlbmd0aCkpLGQ9U3RyaW5nKGkpO3JldHVybiB1P3UuY2FsbCh2LGQscCk6di5zbGljZShwLHArZC5sZW5ndGgpPT09ZH19KX0sMjg1NDMoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgic3RyaWtlIixmdW5jdGlvbihuKXtyZXR1cm4gZnVu'@; put 'Y3Rpb24oKXtyZXR1cm4gbih0aGlzLCJzdHJpa2UiLCIiLCIiKX19KX0sMzU1OShjLGYsdCl7InVzZSBzdHJpY3QiO3QoNTI0NjgpKCJzdWIiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInN1YiIsIiIsIiIpfX0pfSw4NDE1MyhjLGYsdCl7InVzZSBzdHJp'@; put 'Y3QiO3QoNTI0NjgpKCJzdXAiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInN1cCIsIiIsIiIpfX0pfSwyMDk1NyhjLGYsdCl7InVzZSBzdHJpY3QiO3QoNDA2MjkpKCJ0cmltIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlz'@; put 'LDMpfX0pfSw5OTY1MChjLGYsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXQoNjc1MjYpLGU9dCg1NzkxNykscz10KDE3NjMpLG89dCg5MjEyNyksdT10KDI4ODU5KSxsPXQoMTI5ODgpLktFWSxpPXQoNzk0NDgpLHY9dCg0NDU1NikscD10KDM4NDQpLGQ9dCg0NDE1KSx5PXQoNjc1NzQpLEU9dCg0'@; put 'Nzk2MCksZz10KDQ1MzkyKSxEPXQoMTU5NjkpLEY9dCg3Nzk4MSkseD10KDQyMjgpLEE9dCg0MzMwNSksaz10KDE4MjcwKSxQPXQoNTcyMjEpLE09dCg4MzA0OCksVD10KDExOTk2KSxiPXQoODQ3MTkpLEI9dCg0NzY1KSxVPXQoNjg2NDEpLFo9dCgxMDYwKSxudD10KDQ3OTY3KSx0dD10KDUx'@; put 'MzExKSx5dD1VLmYsbXQ9bnQuZixxPUIuZixYPW4uU3ltYm9sLGV0PW4uSlNPTixWPWV0JiZldC5zdHJpbmdpZnksbHQ9InByb3RvdHlwZSIsZHQ9eSgiX2hpZGRlbiIpLEN0PXkoInRvUHJpbWl0aXZlIiksT3Q9e30ucHJvcGVydHlJc0VudW1lcmFibGUsTnQ9digic3ltYm9sLXJlZ2lzdHJ5'@; put 'IiksUXQ9digic3ltYm9scyIpLGFuPXYoIm9wLXN5bWJvbHMiKSxHdD1PYmplY3RbbHRdLHNuPSJmdW5jdGlvbiI9PXR5cGVvZiBYJiYhIVouZixFbj1uLlFPYmplY3QsWXQ9IUVufHwhRW5bbHRdfHwhRW5bbHRdLmZpbmRDaGlsZCxwbj1zJiZpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPWIobXQo'@; put 'e30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbXQodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24oXyxILFEpe3ZhciBpdD15dChHdCxIKTtpdCYmZGVsZXRlIEd0W0hdLG10KF8sSCxRKSxpdCYmXyE9PUd0JiZtdChHdCxILGl0KX06bXQseG49ZnVuY3Rpb24oXyl7'@; put 'dmFyIEg9UXRbX109YihYW2x0XSk7cmV0dXJuIEguX2s9XyxIfSxobj1zbiYmInN5bWJvbCI9PXR5cGVvZiBYLml0ZXJhdG9yP2Z1bmN0aW9uKF8pe3JldHVybiJzeW1ib2wiPT10eXBlb2YgX306ZnVuY3Rpb24oXyl7cmV0dXJuIF8gaW5zdGFuY2VvZiBYfSxvbj1mdW5jdGlvbihILFEsaXQp'@; put 'e3JldHVybiBIPT09R3QmJm9uKGFuLFEsaXQpLHgoSCksUT1NKFEsITApLHgoaXQpLGUoUXQsUSk/KGl0LmVudW1lcmFibGU/KGUoSCxkdCkmJkhbZHRdW1FdJiYoSFtkdF1bUV09ITEpLGl0PWIoaXQse2VudW1lcmFibGU6VCgwLCExKX0pKTooZShILGR0KXx8bXQoSCxkdCxUKDEse30pKSxI'@; put 'W2R0XVtRXT0hMCkscG4oSCxRLGl0KSk6bXQoSCxRLGl0KX0sbm49ZnVuY3Rpb24oSCxRKXt4KEgpO2Zvcih2YXIgcm4saXQ9RChRPVAoUSkpLHp0PTAscXQ9aXQubGVuZ3RoO3F0Pnp0OylvbihILHJuPWl0W3p0KytdLFFbcm5dKTtyZXR1cm4gSH0sVG49ZnVuY3Rpb24oSCl7dmFyIFE9T3Qu'@; put 'Y2FsbCh0aGlzLEg9TShILCEwKSk7cmV0dXJuISh0aGlzPT09R3QmJmUoUXQsSCkmJiFlKGFuLEgpKSYmKCEoUXx8IWUodGhpcyxIKXx8IWUoUXQsSCl8fGUodGhpcyxkdCkmJnRoaXNbZHRdW0hdKXx8USl9LGg9ZnVuY3Rpb24oSCxRKXtpZihIPVAoSCksUT1NKFEsITApLEghPT1HdHx8IWUo'@; put 'UXQsUSl8fGUoYW4sUSkpe3ZhciBpdD15dChILFEpO3JldHVybiBpdCYmZShRdCxRKSYmIShlKEgsZHQpJiZIW2R0XVtRXSkmJihpdC5lbnVtZXJhYmxlPSEwKSxpdH19LHI9ZnVuY3Rpb24oSCl7Zm9yKHZhciBxdCxRPXEoUChIKSksaXQ9W10senQ9MDtRLmxlbmd0aD56dDspIWUoUXQscXQ9'@; put 'UVt6dCsrXSkmJnF0IT1kdCYmcXQhPWwmJml0LnB1c2gocXQpO3JldHVybiBpdH0sYT1mdW5jdGlvbihIKXtmb3IodmFyIHJuLFE9SD09PUd0LGl0PXEoUT9hbjpQKEgpKSx6dD1bXSxxdD0wO2l0Lmxlbmd0aD5xdDspZShRdCxybj1pdFtxdCsrXSkmJighUXx8ZShHdCxybikpJiZ6dC5wdXNo'@; put 'KFF0W3JuXSk7cmV0dXJuIHp0fTtzbnx8KFg9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgWCl0aHJvdyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEiKTt2YXIgSD1kKGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKSxRPWZ1bmN0aW9u'@; put 'KGl0KXt0aGlzPT09R3QmJlEuY2FsbChhbixpdCksZSh0aGlzLGR0KSYmZSh0aGlzW2R0XSxIKSYmKHRoaXNbZHRdW0hdPSExKSxwbih0aGlzLEgsVCgxLGl0KSl9O3JldHVybiBzJiZZdCYmcG4oR3QsSCx7Y29uZmlndXJhYmxlOiEwLHNldDpRfSkseG4oSCl9LHUoWFtsdF0sInRvU3RyaW5n'@; put 'IixmdW5jdGlvbigpe3JldHVybiB0aGlzLl9rfSksVS5mPWgsbnQuZj1vbix0KDU5NDE1KS5mPUIuZj1yLHQoODQ0OSkuZj1UbixaLmY9YSxzJiYhdCgyMjc1MCkmJnUoR3QsInByb3BlcnR5SXNFbnVtZXJhYmxlIixUbiwhMCksRS5mPWZ1bmN0aW9uKF8pe3JldHVybiB4bih5KF8pKX0pLG8o'@; put 'by5HK28uVytvLkYqIXNuLHtTeW1ib2w6WH0pO2Zvcih2YXIgbT0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksdz0w'@; put 'O20ubGVuZ3RoPnc7KXkobVt3KytdKTtmb3IodmFyIEs9dHQoeS5zdG9yZSksJD0wO0subGVuZ3RoPiQ7KWcoS1skKytdKTtvKG8uUytvLkYqIXNuLCJTeW1ib2wiLHtmb3I6ZnVuY3Rpb24oXyl7cmV0dXJuIGUoTnQsXys9IiIpP050W19dOk50W19dPVgoXyl9LGtleUZvcjpmdW5jdGlvbihI'@; put 'KXtpZighaG4oSCkpdGhyb3cgVHlwZUVycm9yKEgrIiBpcyBub3QgYSBzeW1ib2whIik7Zm9yKHZhciBRIGluIE50KWlmKE50W1FdPT09SClyZXR1cm4gUX0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7WXQ9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe1l0PSExfX0pLG8oby5TK28uRiohc24sIk9i'@; put 'amVjdCIse2NyZWF0ZTpmdW5jdGlvbihILFEpe3JldHVybiB2b2lkIDA9PT1RP2IoSCk6bm4oYihIKSxRKX0sZGVmaW5lUHJvcGVydHk6b24sZGVmaW5lUHJvcGVydGllczpubixnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6aCxnZXRPd25Qcm9wZXJ0eU5hbWVzOnIsZ2V0T3duUHJvcGVydHlT'@; put 'eW1ib2xzOmF9KTt2YXIgRHQ9aShmdW5jdGlvbigpe1ouZigxKX0pO28oby5TK28uRipEdCwiT2JqZWN0Iix7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKEgpe3JldHVybiBaLmYoayhIKSl9fSksZXQmJm8oby5TK28uRiooIXNufHxpKGZ1bmN0aW9uKCl7dmFyIF89WCgpO3JldHVy'@; put 'biJbbnVsbF0iIT1WKFtfXSl8fCJ7fSIhPVYoe2E6X30pfHwie30iIT1WKE9iamVjdChfKSl9KSksIkpTT04iLHtzdHJpbmdpZnk6ZnVuY3Rpb24oSCl7Zm9yKHZhciB6dCxxdCxRPVtIXSxpdD0xO2FyZ3VtZW50cy5sZW5ndGg+aXQ7KVEucHVzaChhcmd1bWVudHNbaXQrK10pO2lmKHF0PXp0'@; put 'PVFbMV0sKEEoenQpfHx2b2lkIDAhPT1IKSYmIWhuKEgpKXJldHVybiBGKHp0KXx8KHp0PWZ1bmN0aW9uKHJuLE1uKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgcXQmJihNbj1xdC5jYWxsKHRoaXMscm4sTW4pKSwhaG4oTW4pKXJldHVybiBNbn0pLFFbMV09enQsVi5hcHBseShldCxRKX19KSxY'@; put 'W2x0XVtDdF18fHQoMzMzNDEpKFhbbHRdLEN0LFhbbHRdLnZhbHVlT2YpLHAoWCwiU3ltYm9sIikscChNYXRoLCJNYXRoIiwhMCkscChuLkpTT04sIkpTT04iLCEwKX0sNzkzOTcoYyxmLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgRixuPXQoNjc1MjYpLGU9dCg2NjE3OSkoMCkscz10KDI4ODU5KSxv'@; put 'PXQoMTI5ODgpLHU9dCgyODIwNiksbD10KDk5ODgyKSxpPXQoNDMzMDUpLHY9dCgxMjg4OCkscD10KDEyODg4KSxkPSFuLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIG4seT0iV2Vha01hcCIsRT1vLmdldFdlYWssZz1PYmplY3QuaXNFeHRlbnNpYmxlLEQ9bC51ZnN0b3JlLHg9'@; put 'ZnVuY3Rpb24oUCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFAodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxBPXtnZXQ6ZnVuY3Rpb24oTSl7aWYoaShNKSl7dmFyIFQ9RShNKTtyZXR1cm4hMD09PVQ/RCh2KHRoaXMseSkpLmdldChNKTpUP1RbdGhp'@; put 'cy5faV06dm9pZCAwfX0sc2V0OmZ1bmN0aW9uKE0sVCl7cmV0dXJuIGwuZGVmKHYodGhpcyx5KSxNLFQpfX0saz1jLmV4cG9ydHM9dCg1ODkzMykoeSx4LEEsbCwhMCwhMCk7cCYmZCYmKHUoKEY9bC5nZXRDb25zdHJ1Y3Rvcih4LHkpKS5wcm90b3R5cGUsQSksby5ORUVEPSEwLGUoWyJkZWxl'@; put 'dGUiLCJoYXMiLCJnZXQiLCJzZXQiXSxmdW5jdGlvbihQKXt2YXIgTT1rLnByb3RvdHlwZSxUPU1bUF07cyhNLFAsZnVuY3Rpb24oYixCKXtpZihpKGIpJiYhZyhiKSl7dGhpcy5fZnx8KHRoaXMuX2Y9bmV3IEYpO3ZhciBVPXRoaXMuX2ZbUF0oYixCKTtyZXR1cm4ic2V0Ij09UD90aGlzOlV9'@; put 'cmV0dXJuIFQuY2FsbCh0aGlzLGIsQil9KX0pKX0sNzc0OTEoYyxmLHQpe3ZhciBuPXQoOTczODApLGU9dCg0MjI4KSxzPW4ua2V5LG89bi5zZXQ7bi5leHAoe2RlZmluZU1ldGFkYXRhOmZ1bmN0aW9uKGwsaSx2LHApe28obCxpLGUodikscyhwKSl9fSl9LDc0OTA3KGMsZix0KXt2YXIgbj10'@; put 'KDk3MzgwKSxlPXQoNDIyOCkscz1uLmtleSxvPW4ubWFwLHU9bi5zdG9yZTtuLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24oaSx2KXt2YXIgcD1hcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnMoYXJndW1lbnRzWzJdKSxkPW8oZSh2KSxwLCExKTtpZih2b2lkIDA9PT1kfHwhZC5kZWxl'@; put 'dGUoaSkpcmV0dXJuITE7aWYoZC5zaXplKXJldHVybiEwO3ZhciB5PXUuZ2V0KHYpO3JldHVybiB5LmRlbGV0ZShwKSwhIXkuc2l6ZXx8dS5kZWxldGUodil9fSl9LDE5MjY5KGMsZix0KXt2YXIgbj10KDcxNjMyKSxlPXQoODA5NTYpLHM9dCg5NzM4MCksbz10KDQyMjgpLHU9dCg0MDYyNyks'@; put 'bD1zLmtleXMsaT1zLmtleSx2PWZ1bmN0aW9uKHAsZCl7dmFyIHk9bChwLGQpLEU9dShwKTtpZihudWxsPT09RSlyZXR1cm4geTt2YXIgZz12KEUsZCk7cmV0dXJuIGcubGVuZ3RoP3kubGVuZ3RoP2UobmV3IG4oeS5jb25jYXQoZykpKTpnOnl9O3MuZXhwKHtnZXRNZXRhZGF0YUtleXM6ZnVu'@; put 'Y3Rpb24oZCl7cmV0dXJuIHYobyhkKSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOmkoYXJndW1lbnRzWzFdKSl9fSl9LDc5MTAwKGMsZix0KXt2YXIgbj10KDk3MzgwKSxlPXQoNDIyOCkscz10KDQwNjI3KSxvPW4uaGFzLHU9bi5nZXQsbD1uLmtleSxpPWZ1bmN0aW9uKHYscCxkKXtpZihv'@; put 'KHYscCxkKSlyZXR1cm4gdSh2LHAsZCk7dmFyIEU9cyhwKTtyZXR1cm4gbnVsbCE9PUU/aSh2LEUsZCk6dm9pZCAwfTtuLmV4cCh7Z2V0TWV0YWRhdGE6ZnVuY3Rpb24ocCxkKXtyZXR1cm4gaShwLGUoZCksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpsKGFyZ3VtZW50c1syXSkpfX0pfSw3'@; put 'OTczMihjLGYsdCl7dmFyIG49dCg5NzM4MCksZT10KDQyMjgpLHM9bi5rZXlzLG89bi5rZXk7bi5leHAoe2dldE93bk1ldGFkYXRhS2V5czpmdW5jdGlvbihsKXtyZXR1cm4gcyhlKGwpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6byhhcmd1bWVudHNbMV0pKX19KX0sOTEzMTkoYyxmLHQp'@; put 'e3ZhciBuPXQoOTczODApLGU9dCg0MjI4KSxzPW4uZ2V0LG89bi5rZXk7bi5leHAoe2dldE93bk1ldGFkYXRhOmZ1bmN0aW9uKGwsaSl7cmV0dXJuIHMobCxlKGkpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6byhhcmd1bWVudHNbMl0pKX19KX0sMTE3NihjLGYsdCl7dmFyIG49dCg5NzM4'@; put 'MCksZT10KDQyMjgpLHM9dCg0MDYyNyksbz1uLmhhcyx1PW4ua2V5LGw9ZnVuY3Rpb24oaSx2LHApe2lmKG8oaSx2LHApKXJldHVybiEwO3ZhciB5PXModik7cmV0dXJuIG51bGwhPT15JiZsKGkseSxwKX07bi5leHAoe2hhc01ldGFkYXRhOmZ1bmN0aW9uKHYscCl7cmV0dXJuIGwodixlKHAp'@; put 'LGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6dShhcmd1bWVudHNbMl0pKX19KX0sMzEwNyhjLGYsdCl7dmFyIG49dCg5NzM4MCksZT10KDQyMjgpLHM9bi5oYXMsbz1uLmtleTtuLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24obCxpKXtyZXR1cm4gcyhsLGUoaSksYXJndW1lbnRzLmxl'@; put 'bmd0aDwzP3ZvaWQgMDpvKGFyZ3VtZW50c1syXSkpfX0pfSw2MTY5MShjLGYsdCl7dmFyIG49dCg5NzM4MCksZT10KDQyMjgpLHM9dCg2MzM4Nyksbz1uLmtleSx1PW4uc2V0O24uZXhwKHttZXRhZGF0YTpmdW5jdGlvbihpLHYpe3JldHVybiBmdW5jdGlvbihkLHkpe3UoaSx2LCh2b2lkIDAh'@; put 'PT15P2U6cykoZCksbyh5KSl9fX0pfSwzNTg5MChjLGYsdCl7Zm9yKHZhciBuPXQoOTUxNjUpLGU9dCg1MTMxMSkscz10KDI4ODU5KSxvPXQoNjc1MjYpLHU9dCgzMzM0MSksbD10KDYwOTA2KSxpPXQoNjc1NzQpLHY9aSgiaXRlcmF0b3IiKSxwPWkoInRvU3RyaW5nVGFnIiksZD1sLkFycmF5'@; put 'LHk9e0NTU1J1bGVMaXN0OiEwLENTU1N0eWxlRGVjbGFyYXRpb246ITEsQ1NTVmFsdWVMaXN0OiExLENsaWVudFJlY3RMaXN0OiExLERPTVJlY3RMaXN0OiExLERPTVN0cmluZ0xpc3Q6ITEsRE9NVG9rZW5MaXN0OiEwLERhdGFUcmFuc2Zlckl0ZW1MaXN0OiExLEZpbGVMaXN0OiExLEhUTUxB'@; put 'bGxDb2xsZWN0aW9uOiExLEhUTUxDb2xsZWN0aW9uOiExLEhUTUxGb3JtRWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxNZWRpYUxpc3Q6ITAsTWltZVR5cGVBcnJheTohMSxOYW1lZE5vZGVNYXA6ITEsTm9kZUxpc3Q6ITAsUGFpbnRSZXF1ZXN0TGlzdDohMSxQbHVnaW46ITEsUGx1'@; put 'Z2luQXJyYXk6ITEsU1ZHTGVuZ3RoTGlzdDohMSxTVkdOdW1iZXJMaXN0OiExLFNWR1BhdGhTZWdMaXN0OiExLFNWR1BvaW50TGlzdDohMSxTVkdTdHJpbmdMaXN0OiExLFNWR1RyYW5zZm9ybUxpc3Q6ITEsU291cmNlQnVmZmVyTGlzdDohMSxTdHlsZVNoZWV0TGlzdDohMCxUZXh0VHJhY2tD'@; put 'dWVMaXN0OiExLFRleHRUcmFja0xpc3Q6ITEsVG91Y2hMaXN0OiExfSxFPWUoeSksZz0wO2c8RS5sZW5ndGg7ZysrKXt2YXIgayxEPUVbZ10sRj15W0RdLHg9b1tEXSxBPXgmJngucHJvdG90eXBlO2lmKEEmJihBW3ZdfHx1KEEsdixkKSxBW3BdfHx1KEEscCxEKSxsW0RdPWQsRikpZm9yKGsg'@; put 'aW4gbilBW2tdfHxzKEEsayxuW2tdLCEwKX19LDgyNTc0KGMpeyJ1c2Ugc3RyaWN0IjtjLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJsb2NhbGUiOiJlbiIsImRhdGUiOnsiY2EiOlsiZ3JlZ29yeSIsImJ1ZGRoaXN0IiwiY2hpbmVzZSIsImNvcHRpYyIsImRhbmdpIiwiZXRoaW9hYSIsImV0aGlv'@; put 'cGljIiwiZ2VuZXJpYyIsImhlYnJldyIsImluZGlhbiIsImlzbGFtaWMiLCJpc2xhbWljYyIsImphcGFuZXNlIiwicGVyc2lhbiIsInJvYyJdLCJob3VyTm8wIjp0cnVlLCJob3VyMTIiOnRydWUsImZvcm1hdHMiOnsic2hvcnQiOiJ7MX0sIHswfSIsIm1lZGl1bSI6InsxfSwgezB9IiwiZnVs'@; put 'bCI6InsxfSBcJ2F0XCcgezB9IiwibG9uZyI6InsxfSBcJ2F0XCcgezB9IiwiYXZhaWxhYmxlRm9ybWF0cyI6eyJkIjoiZCIsIkUiOiJjY2MiLCJFZCI6ImQgRSIsIkVobSI6IkUgaDptbSBhIiwiRUhtIjoiRSBISDptbSIsIkVobXMiOiJFIGg6bW06c3MgYSIsIkVIbXMiOiJFIEhIOm1tOnNz'@; put 'IiwiR3kiOiJ5IEciLCJHeU1NTSI6Ik1NTSB5IEciLCJHeU1NTWQiOiJNTU0gZCwgeSBHIiwiR3lNTU1FZCI6IkUsIE1NTSBkLCB5IEciLCJoIjoiaCBhIiwiSCI6IkhIIiwiaG0iOiJoOm1tIGEiLCJIbSI6IkhIOm1tIiwiaG1zIjoiaDptbTpzcyBhIiwiSG1zIjoiSEg6bW06c3MiLCJobXN2'@; put 'IjoiaDptbTpzcyBhIHYiLCJIbXN2IjoiSEg6bW06c3MgdiIsImhtdiI6Img6bW0gYSB2IiwiSG12IjoiSEg6bW0gdiIsIk0iOiJMIiwiTWQiOiJNL2QiLCJNRWQiOiJFLCBNL2QiLCJNTU0iOiJMTEwiLCJNTU1kIjoiTU1NIGQiLCJNTU1FZCI6IkUsIE1NTSBkIiwiTU1NTWQiOiJNTU1NIGQi'@; put 'LCJtcyI6Im1tOnNzIiwieSI6InkiLCJ5TSI6Ik0veSIsInlNZCI6Ik0vZC95IiwieU1FZCI6IkUsIE0vZC95IiwieU1NTSI6Ik1NTSB5IiwieU1NTWQiOiJNTU0gZCwgeSIsInlNTU1FZCI6IkUsIE1NTSBkLCB5IiwieU1NTU0iOiJNTU1NIHkiLCJ5UVFRIjoiUVFRIHkiLCJ5UVFRUSI6IlFR'@; put 'UVEgeSJ9LCJkYXRlRm9ybWF0cyI6eyJ5TU1NTUVFRUVkIjoiRUVFRSwgTU1NTSBkLCB5IiwieU1NTU1kIjoiTU1NTSBkLCB5IiwieU1NTWQiOiJNTU0gZCwgeSIsInlNZCI6Ik0vZC95eSJ9LCJ0aW1lRm9ybWF0cyI6eyJobW1zc3p6enoiOiJoOm1tOnNzIGEgenp6eiIsImhtc3oiOiJoOm1t'@; put 'OnNzIGEgeiIsImhtcyI6Img6bW06c3MgYSIsImhtIjoiaDptbSBhIn19LCJjYWxlbmRhcnMiOnsiYnVkZGhpc3QiOnsibW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwi'@; put 'QXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmciOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVj'@; put 'ZW1iZXIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5'@; put 'IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkJFIl0sInNob3J0IjpbIkJFIl0sImxvbmciOlsiQkUiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImNoaW5lc2UiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIs'@; put 'IjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTW8xIiwiTW8yIiwiTW8zIiwiTW80IiwiTW81IiwiTW82IiwiTW83IiwiTW84IiwiTW85IiwiTW8xMCIsIk1vMTEiLCJNbzEyIl0sImxvbmciOlsiTW9udGgxIiwiTW9udGgyIiwiTW9udGgzIiwiTW9udGg0IiwiTW9u'@; put 'dGg1IiwiTW9udGg2IiwiTW9udGg3IiwiTW9udGg4IiwiTW9udGg5IiwiTW9udGgxMCIsIk1vbnRoMTEiLCJNb250aDEyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIs'@; put 'IlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJjb3B0aWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMi'@; put 'LCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyJdLCJzaG9ydCI6WyJUb3V0IiwiQmFiYSIsIkhhdG9yIiwiS2lhaGsiLCJUb2JhIiwiQW1zaGlyIiwiQmFyYW1oYXQiLCJCYXJhbW91ZGEiLCJCYXNoYW5zIiwiUGFvbmEiLCJFcGVwIiwiTWVzcmEiLCJOYXNpZSJd'@; put 'LCJsb25nIjpbIlRvdXQiLCJCYWJhIiwiSGF0b3IiLCJLaWFoayIsIlRvYmEiLCJBbXNoaXIiLCJCYXJhbWhhdCIsIkJhcmFtb3VkYSIsIkJhc2hhbnMiLCJQYW9uYSIsIkVwZXAiLCJNZXNyYSIsIk5hc2llIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJT'@; put 'Il0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJFUkEwIiwiRVJB'@; put 'MSJdLCJzaG9ydCI6WyJFUkEwIiwiRVJBMSJdLCJsb25nIjpbIkVSQTAiLCJFUkExIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJkYW5naSI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIx'@; put 'MiJdLCJzaG9ydCI6WyJNbzEiLCJNbzIiLCJNbzMiLCJNbzQiLCJNbzUiLCJNbzYiLCJNbzciLCJNbzgiLCJNbzkiLCJNbzEwIiwiTW8xMSIsIk1vMTIiXSwibG9uZyI6WyJNb250aDEiLCJNb250aDIiLCJNb250aDMiLCJNb250aDQiLCJNb250aDUiLCJNb250aDYiLCJNb250aDciLCJNb250'@; put 'aDgiLCJNb250aDkiLCJNb250aDEwIiwiTW9udGgxMSIsIk1vbnRoMTIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9u'@; put 'ZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImV0aGlvcGljIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5Iiwi'@; put 'MTAiLCIxMSIsIjEyIiwiMTMiXSwic2hvcnQiOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNhcyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2VuZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXSwibG9uZyI6WyJNZXNrZXJlbSIs'@; put 'IlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc3NlIiwiUGFndW1lbiJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJT'@; put 'dW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiRVJBMCIsIkVSQTEiXSwic2hvcnQiOlsi'@; put 'RVJBMCIsIkVSQTEiXSwibG9uZyI6WyJFUkEwIiwiRVJBMSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZXRoaW9hYSI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIl0sInNo'@; put 'b3J0IjpbIk1lc2tlcmVtIiwiVGVrZW10IiwiSGVkYXIiLCJUYWhzYXMiLCJUZXIiLCJZZWthdGl0IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFzc2UiLCJQYWd1bWVuIl0sImxvbmciOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNh'@; put 'cyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2VuZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwi'@; put 'VGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkVSQTAiXSwic2hvcnQiOlsiRVJBMCJdLCJsb25nIjpbIkVSQTAiXX0sImRheVBl'@; put 'cmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImdlbmVyaWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTTAxIiwiTTAyIiwiTTAzIiwiTTA0IiwiTTA1IiwiTTA2IiwiTTA3Iiwi'@; put 'TTA4IiwiTTA5IiwiTTEwIiwiTTExIiwiTTEyIl0sImxvbmciOlsiTTAxIiwiTTAyIiwiTTAzIiwiTTA0IiwiTTA1IiwiTTA2IiwiTTA3IiwiTTA4IiwiTTA5IiwiTTEwIiwiTTExIiwiTTEyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0'@; put 'IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJFUkEwIiwiRVJBMSJdLCJzaG9y'@; put 'dCI6WyJFUkEwIiwiRVJBMSJdLCJsb25nIjpbIkVSQTAiLCJFUkExIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJncmVnb3J5Ijp7Im1vbnRocyI6eyJuYXJyb3ciOlsiSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sInNob3J0'@; put 'IjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJsb25nIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9j'@; put 'dG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXki'@; put 'LCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJCIiwiQSIsIkJDRSIsIkNFIl0sInNob3J0IjpbIkJDIiwiQUQiLCJCQ0UiLCJDRSJdLCJsb25nIjpbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSIsIkJlZm9yZSBDb21t'@; put 'b24gRXJhIiwiQ29tbW9uIEVyYSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiaGVicmV3Ijp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCI3Il0sInNob3J0IjpbIlRpc2hy'@; put 'aSIsIkhlc2h2YW4iLCJLaXNsZXYiLCJUZXZldCIsIlNoZXZhdCIsIkFkYXIgSSIsIkFkYXIiLCJOaXNhbiIsIkl5YXIiLCJTaXZhbiIsIlRhbXV6IiwiQXYiLCJFbHVsIiwiQWRhciBJSSJdLCJsb25nIjpbIlRpc2hyaSIsIkhlc2h2YW4iLCJLaXNsZXYiLCJUZXZldCIsIlNoZXZhdCIsIkFk'@; put 'YXIgSSIsIkFkYXIiLCJOaXNhbiIsIkl5YXIiLCJTaXZhbiIsIlRhbXV6IiwiQXYiLCJFbHVsIiwiQWRhciBJSSJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQi'@; put 'XSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQU0iXSwic2hvcnQiOlsiQU0iXSwibG9uZyI6WyJBTSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0i'@; put 'OiJQTSJ9fSwiaW5kaWFuIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIkNoYWl0cmEiLCJWYWlzYWtoYSIsIkp5YWlzdGhhIiwiQXNhZGhhIiwiU3JhdmFuYSIsIkJoYWRyYSIsIkFzdmlu'@; put 'YSIsIkthcnRpa2EiLCJBZ3JhaGF5YW5hIiwiUGF1c2EiLCJNYWdoYSIsIlBoYWxndW5hIl0sImxvbmciOlsiQ2hhaXRyYSIsIlZhaXNha2hhIiwiSnlhaXN0aGEiLCJBc2FkaGEiLCJTcmF2YW5hIiwiQmhhZHJhIiwiQXN2aW5hIiwiS2FydGlrYSIsIkFncmFoYXlhbmEiLCJQYXVzYSIsIk1h'@; put 'Z2hhIiwiUGhhbGd1bmEiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIs'@; put 'IlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIlNha2EiXSwic2hvcnQiOlsiU2FrYSJdLCJsb25nIjpbIlNha2EiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImlzbGFtaWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwi'@; put 'MiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTXVoLiIsIlNhZi4iLCJSYWIuIEkiLCJSYWIuIElJIiwiSnVtLiBJIiwiSnVtLiBJSSIsIlJhai4iLCJTaGEuIiwiUmFtLiIsIlNoYXcuIiwiRGh1XHUwMmJibC1RLiIsIkRodVx1MDJiYmwt'@; put 'SC4iXSwibG9uZyI6WyJNdWhhcnJhbSIsIlNhZmFyIiwiUmFiaVx1MDJiYiBJIiwiUmFiaVx1MDJiYiBJSSIsIkp1bWFkYSBJIiwiSnVtYWRhIElJIiwiUmFqYWIiLCJTaGFcdTAyYmJiYW4iLCJSYW1hZGFuIiwiU2hhd3dhbCIsIkRodVx1MDJiYmwtUWlcdTAyYmJkYWgiLCJEaHVcdTAyYmJs'@; put 'LUhpamphaCJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNk'@; put 'YXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQUgiXSwic2hvcnQiOlsiQUgiXSwibG9uZyI6WyJBSCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiaXNsYW1pY2MiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0Iiwi'@; put 'NSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTXVoLiIsIlNhZi4iLCJSYWIuIEkiLCJSYWIuIElJIiwiSnVtLiBJIiwiSnVtLiBJSSIsIlJhai4iLCJTaGEuIiwiUmFtLiIsIlNoYXcuIiwiRGh1XHUwMmJibC1RLiIsIkRodVx1MDJiYmwtSC4iXSwibG9uZyI6'@; put 'WyJNdWhhcnJhbSIsIlNhZmFyIiwiUmFiaVx1MDJiYiBJIiwiUmFiaVx1MDJiYiBJSSIsIkp1bWFkYSBJIiwiSnVtYWRhIElJIiwiUmFqYWIiLCJTaGFcdTAyYmJiYW4iLCJSYW1hZGFuIiwiU2hhd3dhbCIsIkRodVx1MDJiYmwtUWlcdTAyYmJkYWgiLCJEaHVcdTAyYmJsLUhpamphaCJdfSwi'@; put 'ZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXki'@; put 'LCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQUgiXSwic2hvcnQiOlsiQUgiXSwibG9uZyI6WyJBSCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiamFwYW5lc2UiOnsibW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwi'@; put 'QSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmciOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5'@; put 'IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsi'@; put 'U3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIlRhaWthICg2NDVcdTIwMTM2NTApIiwiSGFrdWNoaSAoNjUwXHUyMDEzNjcxKSIsIkhha3VoXHUwMTRkICg2NzJcdTIwMTM2ODYp'@; put 'IiwiU2h1Y2hcdTAxNGQgKDY4Nlx1MjAxMzcwMSkiLCJUYWloXHUwMTRkICg3MDFcdTIwMTM3MDQpIiwiS2VpdW4gKDcwNFx1MjAxMzcwOCkiLCJXYWRcdTAxNGQgKDcwOFx1MjAxMzcxNSkiLCJSZWlraSAoNzE1XHUyMDEzNzE3KSIsIllcdTAxNGRyXHUwMTRkICg3MTdcdTIwMTM3MjQpIiwi'@; put 'Smlua2kgKDcyNFx1MjAxMzcyOSkiLCJUZW5weVx1MDE0ZCAoNzI5XHUyMDEzNzQ5KSIsIlRlbnB5XHUwMTRkLWthbXBcdTAxNGQgKDc0OS03NDkpIiwiVGVucHlcdTAxNGQtc2hcdTAxNGRoXHUwMTRkICg3NDktNzU3KSIsIlRlbnB5XHUwMTRkLWhcdTAxNGRqaSAoNzU3LTc2NSkiLCJUZW5w'@; put 'eVx1MDE0ZC1qaW5nbyAoNzY1LTc2NykiLCJKaW5nby1rZWl1biAoNzY3LTc3MCkiLCJIXHUwMTRka2kgKDc3MFx1MjAxMzc4MCkiLCJUZW4tXHUwMTRkICg3ODEtNzgyKSIsIkVucnlha3UgKDc4Mlx1MjAxMzgwNikiLCJEYWlkXHUwMTRkICg4MDZcdTIwMTM4MTApIiwiS1x1MDE0ZG5pbiAo'@; put 'ODEwXHUyMDEzODI0KSIsIlRlbmNoXHUwMTRkICg4MjRcdTIwMTM4MzQpIiwiSlx1MDE0ZHdhICg4MzRcdTIwMTM4NDgpIiwiS2FqXHUwMTRkICg4NDhcdTIwMTM4NTEpIiwiTmluanUgKDg1MVx1MjAxMzg1NCkiLCJTYWlrXHUwMTRkICg4NTRcdTIwMTM4NTcpIiwiVGVuLWFuICg4NTctODU5'@; put 'KSIsIkpcdTAxNGRnYW4gKDg1OVx1MjAxMzg3NykiLCJHYW5neVx1MDE0ZCAoODc3XHUyMDEzODg1KSIsIk5pbm5hICg4ODVcdTIwMTM4ODkpIiwiS2FucHlcdTAxNGQgKDg4OVx1MjAxMzg5OCkiLCJTaFx1MDE0ZHRhaSAoODk4XHUyMDEzOTAxKSIsIkVuZ2kgKDkwMVx1MjAxMzkyMykiLCJF'@; put 'bmNoXHUwMTRkICg5MjNcdTIwMTM5MzEpIiwiSlx1MDE0ZGhlaSAoOTMxXHUyMDEzOTM4KSIsIlRlbmd5XHUwMTRkICg5MzhcdTIwMTM5NDcpIiwiVGVucnlha3UgKDk0N1x1MjAxMzk1NykiLCJUZW50b2t1ICg5NTdcdTIwMTM5NjEpIiwiXHUwMTRjd2EgKDk2MVx1MjAxMzk2NCkiLCJLXHUw'@; put 'MTRkaFx1MDE0ZCAoOTY0XHUyMDEzOTY4KSIsIkFubmEgKDk2OFx1MjAxMzk3MCkiLCJUZW5yb2t1ICg5NzBcdTIwMTM5NzMpIiwiVGVuXHUyMDE5ZW4gKDk3M1x1MjAxMzk3NikiLCJKXHUwMTRkZ2VuICg5NzZcdTIwMTM5NzgpIiwiVGVuZ2VuICg5NzhcdTIwMTM5ODMpIiwiRWlrYW4gKDk4'@; put 'M1x1MjAxMzk4NSkiLCJLYW5uYSAoOTg1XHUyMDEzOTg3KSIsIkVpZW4gKDk4N1x1MjAxMzk4OSkiLCJFaXNvICg5ODlcdTIwMTM5OTApIiwiU2hcdTAxNGRyeWFrdSAoOTkwXHUyMDEzOTk1KSIsIkNoXHUwMTRkdG9rdSAoOTk1XHUyMDEzOTk5KSIsIkNoXHUwMTRkaFx1MDE0ZCAoOTk5XHUy'@; put 'MDEzMTAwNCkiLCJLYW5rXHUwMTRkICgxMDA0XHUyMDEzMTAxMikiLCJDaFx1MDE0ZHdhICgxMDEyXHUyMDEzMTAxNykiLCJLYW5uaW4gKDEwMTdcdTIwMTMxMDIxKSIsIkppYW4gKDEwMjFcdTIwMTMxMDI0KSIsIk1hbmp1ICgxMDI0XHUyMDEzMTAyOCkiLCJDaFx1MDE0ZGdlbiAoMTAyOFx1'@; put 'MjAxMzEwMzcpIiwiQ2hcdTAxNGRyeWFrdSAoMTAzN1x1MjAxMzEwNDApIiwiQ2hcdTAxNGRreVx1MDE2YiAoMTA0MFx1MjAxMzEwNDQpIiwiS2FudG9rdSAoMTA0NFx1MjAxMzEwNDYpIiwiRWlzaFx1MDE0ZCAoMTA0Nlx1MjAxMzEwNTMpIiwiVGVuZ2kgKDEwNTNcdTIwMTMxMDU4KSIsIktc'@; put 'dTAxNGRoZWkgKDEwNThcdTIwMTMxMDY1KSIsIkppcnlha3UgKDEwNjVcdTIwMTMxMDY5KSIsIkVua3lcdTAxNmIgKDEwNjlcdTIwMTMxMDc0KSIsIlNoXHUwMTRkaG8gKDEwNzRcdTIwMTMxMDc3KSIsIlNoXHUwMTRkcnlha3UgKDEwNzdcdTIwMTMxMDgxKSIsIkVpaFx1MDE0ZCAoMTA4MVx1'@; put 'MjAxMzEwODQpIiwiXHUwMTRjdG9rdSAoMTA4NFx1MjAxMzEwODcpIiwiS2FuamkgKDEwODdcdTIwMTMxMDk0KSIsIkthaFx1MDE0ZCAoMTA5NFx1MjAxMzEwOTYpIiwiRWljaFx1MDE0ZCAoMTA5Nlx1MjAxMzEwOTcpIiwiSlx1MDE0ZHRva3UgKDEwOTdcdTIwMTMxMDk5KSIsIktcdTAxNGR3'@; put 'YSAoMTA5OVx1MjAxMzExMDQpIiwiQ2hcdTAxNGRqaSAoMTEwNFx1MjAxMzExMDYpIiwiS2FzaFx1MDE0ZCAoMTEwNlx1MjAxMzExMDgpIiwiVGVubmluICgxMTA4XHUyMDEzMTExMCkiLCJUZW4tZWkgKDExMTAtMTExMykiLCJFaWt5XHUwMTZiICgxMTEzXHUyMDEzMTExOCkiLCJHZW5cdTIw'@; put 'MTllaSAoMTExOFx1MjAxMzExMjApIiwiSFx1MDE0ZGFuICgxMTIwXHUyMDEzMTEyNCkiLCJUZW5qaSAoMTEyNFx1MjAxMzExMjYpIiwiRGFpamkgKDExMjZcdTIwMTMxMTMxKSIsIlRlbnNoXHUwMTRkICgxMTMxXHUyMDEzMTEzMikiLCJDaFx1MDE0ZHNoXHUwMTRkICgxMTMyXHUyMDEzMTEz'@; put 'NSkiLCJIXHUwMTRkZW4gKDExMzVcdTIwMTMxMTQxKSIsIkVpamkgKDExNDFcdTIwMTMxMTQyKSIsIktcdTAxNGRqaSAoMTE0Mlx1MjAxMzExNDQpIiwiVGVuXHUyMDE5eVx1MDE0ZCAoMTE0NFx1MjAxMzExNDUpIiwiS3lcdTAxNmJhbiAoMTE0NVx1MjAxMzExNTEpIiwiTmlucGVpICgxMTUx'@; put 'XHUyMDEzMTE1NCkiLCJLeVx1MDE2Ymp1ICgxMTU0XHUyMDEzMTE1NikiLCJIXHUwMTRkZ2VuICgxMTU2XHUyMDEzMTE1OSkiLCJIZWlqaSAoMTE1OVx1MjAxMzExNjApIiwiRWlyeWFrdSAoMTE2MFx1MjAxMzExNjEpIiwiXHUwMTRjaG8gKDExNjFcdTIwMTMxMTYzKSIsIkNoXHUwMTRka2Fu'@; put 'ICgxMTYzXHUyMDEzMTE2NSkiLCJFaW1hbiAoMTE2NVx1MjAxMzExNjYpIiwiTmluXHUyMDE5YW4gKDExNjZcdTIwMTMxMTY5KSIsIkthXHUwMTRkICgxMTY5XHUyMDEzMTE3MSkiLCJTaFx1MDE0ZGFuICgxMTcxXHUyMDEzMTE3NSkiLCJBbmdlbiAoMTE3NVx1MjAxMzExNzcpIiwiSmlzaFx1'@; put 'MDE0ZCAoMTE3N1x1MjAxMzExODEpIiwiWVx1MDE0ZHdhICgxMTgxXHUyMDEzMTE4MikiLCJKdWVpICgxMTgyXHUyMDEzMTE4NCkiLCJHZW5yeWFrdSAoMTE4NFx1MjAxMzExODUpIiwiQnVuamkgKDExODVcdTIwMTMxMTkwKSIsIktlbmt5XHUwMTZiICgxMTkwXHUyMDEzMTE5OSkiLCJTaFx1'@; put 'MDE0ZGppICgxMTk5XHUyMDEzMTIwMSkiLCJLZW5uaW4gKDEyMDFcdTIwMTMxMjA0KSIsIkdlbmt5XHUwMTZiICgxMjA0XHUyMDEzMTIwNikiLCJLZW5cdTIwMTllaSAoMTIwNlx1MjAxMzEyMDcpIiwiSlx1MDE0ZGdlbiAoMTIwN1x1MjAxMzEyMTEpIiwiS2Vucnlha3UgKDEyMTFcdTIwMTMx'@; put 'MjEzKSIsIktlbnBcdTAxNGQgKDEyMTNcdTIwMTMxMjE5KSIsIkpcdTAxNGRreVx1MDE2YiAoMTIxOVx1MjAxMzEyMjIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTIyMlx1MjAxMzEyMjQpIiwiR2VubmluICgxMjI0XHUyMDEzMTIyNSkiLCJLYXJva3UgKDEyMjVcdTIwMTMxMjI3KSIsIkFudGVpICgx'@; put 'MjI3XHUyMDEzMTIyOSkiLCJLYW5raSAoMTIyOVx1MjAxMzEyMzIpIiwiSlx1MDE0ZGVpICgxMjMyXHUyMDEzMTIzMykiLCJUZW5wdWt1ICgxMjMzXHUyMDEzMTIzNCkiLCJCdW5yeWFrdSAoMTIzNFx1MjAxMzEyMzUpIiwiS2F0ZWkgKDEyMzVcdTIwMTMxMjM4KSIsIlJ5YWt1bmluICgxMjM4'@; put 'XHUyMDEzMTIzOSkiLCJFblx1MjAxOVx1MDE0ZCAoMTIzOVx1MjAxMzEyNDApIiwiTmluamkgKDEyNDBcdTIwMTMxMjQzKSIsIkthbmdlbiAoMTI0M1x1MjAxMzEyNDcpIiwiSFx1MDE0ZGppICgxMjQ3XHUyMDEzMTI0OSkiLCJLZW5jaFx1MDE0ZCAoMTI0OVx1MjAxMzEyNTYpIiwiS1x1MDE0'@; put 'ZGdlbiAoMTI1Nlx1MjAxMzEyNTcpIiwiU2hcdTAxNGRrYSAoMTI1N1x1MjAxMzEyNTkpIiwiU2hcdTAxNGRnZW4gKDEyNTlcdTIwMTMxMjYwKSIsIkJ1blx1MjAxOVx1MDE0ZCAoMTI2MFx1MjAxMzEyNjEpIiwiS1x1MDE0ZGNoXHUwMTRkICgxMjYxXHUyMDEzMTI2NCkiLCJCdW5cdTIwMTll'@; put 'aSAoMTI2NFx1MjAxMzEyNzUpIiwiS2VuamkgKDEyNzVcdTIwMTMxMjc4KSIsIktcdTAxNGRhbiAoMTI3OFx1MjAxMzEyODgpIiwiU2hcdTAxNGRcdTAxNGQgKDEyODhcdTIwMTMxMjkzKSIsIkVpbmluICgxMjkzXHUyMDEzMTI5OSkiLCJTaFx1MDE0ZGFuICgxMjk5XHUyMDEzMTMwMikiLCJL'@; put 'ZW5nZW4gKDEzMDJcdTIwMTMxMzAzKSIsIkthZ2VuICgxMzAzXHUyMDEzMTMwNikiLCJUb2t1amkgKDEzMDZcdTIwMTMxMzA4KSIsIkVua3lcdTAxNGQgKDEzMDhcdTIwMTMxMzExKSIsIlx1MDE0Y2NoXHUwMTRkICgxMzExXHUyMDEzMTMxMikiLCJTaFx1MDE0ZHdhICgxMzEyXHUyMDEzMTMx'@; put 'NykiLCJCdW5wXHUwMTRkICgxMzE3XHUyMDEzMTMxOSkiLCJHZW5cdTAxNGQgKDEzMTlcdTIwMTMxMzIxKSIsIkdlbmtcdTAxNGQgKDEzMjFcdTIwMTMxMzI0KSIsIlNoXHUwMTRkY2hcdTAxNmIgKDEzMjRcdTIwMTMxMzI2KSIsIkthcnlha3UgKDEzMjZcdTIwMTMxMzI5KSIsIkdlbnRva3Ug'@; put 'KDEzMjlcdTIwMTMxMzMxKSIsIkdlbmtcdTAxNGQgKDEzMzFcdTIwMTMxMzM0KSIsIktlbm11ICgxMzM0XHUyMDEzMTMzNikiLCJFbmdlbiAoMTMzNlx1MjAxMzEzNDApIiwiS1x1MDE0ZGtva3UgKDEzNDBcdTIwMTMxMzQ2KSIsIlNoXHUwMTRkaGVpICgxMzQ2XHUyMDEzMTM3MCkiLCJLZW50'@; put 'b2t1ICgxMzcwXHUyMDEzMTM3MikiLCJCdW5jaFx1MDE2YiAoMTM3Mlx1MjAxMzEzNzUpIiwiVGVuanUgKDEzNzVcdTIwMTMxMzc5KSIsIktcdTAxNGRyeWFrdSAoMTM3OVx1MjAxMzEzODEpIiwiS1x1MDE0ZHdhICgxMzgxXHUyMDEzMTM4NCkiLCJHZW5jaFx1MDE2YiAoMTM4NFx1MjAxMzEz'@; put 'OTIpIiwiTWVpdG9rdSAoMTM4NFx1MjAxMzEzODcpIiwiS2FrZWkgKDEzODdcdTIwMTMxMzg5KSIsIktcdTAxNGRcdTAxNGQgKDEzODlcdTIwMTMxMzkwKSIsIk1laXRva3UgKDEzOTBcdTIwMTMxMzk0KSIsIlx1MDE0Y2VpICgxMzk0XHUyMDEzMTQyOCkiLCJTaFx1MDE0ZGNoXHUwMTRkICgx'@; put 'NDI4XHUyMDEzMTQyOSkiLCJFaWt5XHUwMTRkICgxNDI5XHUyMDEzMTQ0MSkiLCJLYWtpdHN1ICgxNDQxXHUyMDEzMTQ0NCkiLCJCdW5cdTIwMTlhbiAoMTQ0NFx1MjAxMzE0NDkpIiwiSFx1MDE0ZHRva3UgKDE0NDlcdTIwMTMxNDUyKSIsIkt5XHUwMTRkdG9rdSAoMTQ1Mlx1MjAxMzE0NTUp'@; put 'IiwiS1x1MDE0ZHNoXHUwMTRkICgxNDU1XHUyMDEzMTQ1NykiLCJDaFx1MDE0ZHJva3UgKDE0NTdcdTIwMTMxNDYwKSIsIkthbnNoXHUwMTRkICgxNDYwXHUyMDEzMTQ2NikiLCJCdW5zaFx1MDE0ZCAoMTQ2Nlx1MjAxMzE0NjcpIiwiXHUwMTRjbmluICgxNDY3XHUyMDEzMTQ2OSkiLCJCdW5t'@; put 'ZWkgKDE0NjlcdTIwMTMxNDg3KSIsIkNoXHUwMTRka3lcdTAxNGQgKDE0ODdcdTIwMTMxNDg5KSIsIkVudG9rdSAoMTQ4OVx1MjAxMzE0OTIpIiwiTWVpXHUwMTRkICgxNDkyXHUyMDEzMTUwMSkiLCJCdW5raSAoMTUwMVx1MjAxMzE1MDQpIiwiRWlzaFx1MDE0ZCAoMTUwNFx1MjAxMzE1MjEp'@; put 'IiwiVGFpZWkgKDE1MjFcdTIwMTMxNTI4KSIsIkt5XHUwMTRkcm9rdSAoMTUyOFx1MjAxMzE1MzIpIiwiVGVuYnVuICgxNTMyXHUyMDEzMTU1NSkiLCJLXHUwMTRkamkgKDE1NTVcdTIwMTMxNTU4KSIsIkVpcm9rdSAoMTU1OFx1MjAxMzE1NzApIiwiR2Vua2kgKDE1NzBcdTIwMTMxNTczKSIs'@; put 'IlRlbnNoXHUwMTRkICgxNTczXHUyMDEzMTU5MikiLCJCdW5yb2t1ICgxNTkyXHUyMDEzMTU5NikiLCJLZWljaFx1MDE0ZCAoMTU5Nlx1MjAxMzE2MTUpIiwiR2VubmEgKDE2MTVcdTIwMTMxNjI0KSIsIkthblx1MjAxOWVpICgxNjI0XHUyMDEzMTY0NCkiLCJTaFx1MDE0ZGhvICgxNjQ0XHUy'@; put 'MDEzMTY0OCkiLCJLZWlhbiAoMTY0OFx1MjAxMzE2NTIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTY1Mlx1MjAxMzE2NTUpIiwiTWVpcmVraSAoMTY1NVx1MjAxMzE2NTgpIiwiTWFuamkgKDE2NThcdTIwMTMxNjYxKSIsIkthbmJ1biAoMTY2MVx1MjAxMzE2NzMpIiwiRW5wXHUwMTRkICgxNjczXHUy'@; put 'MDEzMTY4MSkiLCJUZW5uYSAoMTY4MVx1MjAxMzE2ODQpIiwiSlx1MDE0ZGt5XHUwMTRkICgxNjg0XHUyMDEzMTY4OCkiLCJHZW5yb2t1ICgxNjg4XHUyMDEzMTcwNCkiLCJIXHUwMTRkZWkgKDE3MDRcdTIwMTMxNzExKSIsIlNoXHUwMTRkdG9rdSAoMTcxMVx1MjAxMzE3MTYpIiwiS3lcdTAx'@; put 'NGRoXHUwMTRkICgxNzE2XHUyMDEzMTczNikiLCJHZW5idW4gKDE3MzZcdTIwMTMxNzQxKSIsIkthbnBcdTAxNGQgKDE3NDFcdTIwMTMxNzQ0KSIsIkVua3lcdTAxNGQgKDE3NDRcdTIwMTMxNzQ4KSIsIkthblx1MjAxOWVuICgxNzQ4XHUyMDEzMTc1MSkiLCJIXHUwMTRkcmVraSAoMTc1MVx1'@; put 'MjAxMzE3NjQpIiwiTWVpd2EgKDE3NjRcdTIwMTMxNzcyKSIsIkFuXHUyMDE5ZWkgKDE3NzJcdTIwMTMxNzgxKSIsIlRlbm1laSAoMTc4MVx1MjAxMzE3ODkpIiwiS2Fuc2VpICgxNzg5XHUyMDEzMTgwMSkiLCJLeVx1MDE0ZHdhICgxODAxXHUyMDEzMTgwNCkiLCJCdW5rYSAoMTgwNFx1MjAx'@; put 'MzE4MTgpIiwiQnVuc2VpICgxODE4XHUyMDEzMTgzMCkiLCJUZW5wXHUwMTRkICgxODMwXHUyMDEzMTg0NCkiLCJLXHUwMTRka2EgKDE4NDRcdTIwMTMxODQ4KSIsIkthZWkgKDE4NDhcdTIwMTMxODU0KSIsIkFuc2VpICgxODU0XHUyMDEzMTg2MCkiLCJNYW5cdTIwMTllbiAoMTg2MFx1MjAx'@; put 'MzE4NjEpIiwiQnVua3lcdTAxNmIgKDE4NjFcdTIwMTMxODY0KSIsIkdlbmppICgxODY0XHUyMDEzMTg2NSkiLCJLZWlcdTAxNGQgKDE4NjVcdTIwMTMxODY4KSIsIk0iLCJUIiwiUyIsIkgiXSwic2hvcnQiOlsiVGFpa2EgKDY0NVx1MjAxMzY1MCkiLCJIYWt1Y2hpICg2NTBcdTIwMTM2NzEp'@; put 'IiwiSGFrdWhcdTAxNGQgKDY3Mlx1MjAxMzY4NikiLCJTaHVjaFx1MDE0ZCAoNjg2XHUyMDEzNzAxKSIsIlRhaWhcdTAxNGQgKDcwMVx1MjAxMzcwNCkiLCJLZWl1biAoNzA0XHUyMDEzNzA4KSIsIldhZFx1MDE0ZCAoNzA4XHUyMDEzNzE1KSIsIlJlaWtpICg3MTVcdTIwMTM3MTcpIiwiWVx1'@; put 'MDE0ZHJcdTAxNGQgKDcxN1x1MjAxMzcyNCkiLCJKaW5raSAoNzI0XHUyMDEzNzI5KSIsIlRlbnB5XHUwMTRkICg3MjlcdTIwMTM3NDkpIiwiVGVucHlcdTAxNGQta2FtcFx1MDE0ZCAoNzQ5LTc0OSkiLCJUZW5weVx1MDE0ZC1zaFx1MDE0ZGhcdTAxNGQgKDc0OS03NTcpIiwiVGVucHlcdTAx'@; put 'NGQtaFx1MDE0ZGppICg3NTctNzY1KSIsIlRlbnB5XHUwMTRkLWppbmdvICg3NjUtNzY3KSIsIkppbmdvLWtlaXVuICg3NjctNzcwKSIsIkhcdTAxNGRraSAoNzcwXHUyMDEzNzgwKSIsIlRlbi1cdTAxNGQgKDc4MS03ODIpIiwiRW5yeWFrdSAoNzgyXHUyMDEzODA2KSIsIkRhaWRcdTAxNGQg'@; put 'KDgwNlx1MjAxMzgxMCkiLCJLXHUwMTRkbmluICg4MTBcdTIwMTM4MjQpIiwiVGVuY2hcdTAxNGQgKDgyNFx1MjAxMzgzNCkiLCJKXHUwMTRkd2EgKDgzNFx1MjAxMzg0OCkiLCJLYWpcdTAxNGQgKDg0OFx1MjAxMzg1MSkiLCJOaW5qdSAoODUxXHUyMDEzODU0KSIsIlNhaWtcdTAxNGQgKDg1'@; put 'NFx1MjAxMzg1NykiLCJUZW4tYW4gKDg1Ny04NTkpIiwiSlx1MDE0ZGdhbiAoODU5XHUyMDEzODc3KSIsIkdhbmd5XHUwMTRkICg4NzdcdTIwMTM4ODUpIiwiTmlubmEgKDg4NVx1MjAxMzg4OSkiLCJLYW5weVx1MDE0ZCAoODg5XHUyMDEzODk4KSIsIlNoXHUwMTRkdGFpICg4OThcdTIwMTM5'@; put 'MDEpIiwiRW5naSAoOTAxXHUyMDEzOTIzKSIsIkVuY2hcdTAxNGQgKDkyM1x1MjAxMzkzMSkiLCJKXHUwMTRkaGVpICg5MzFcdTIwMTM5MzgpIiwiVGVuZ3lcdTAxNGQgKDkzOFx1MjAxMzk0NykiLCJUZW5yeWFrdSAoOTQ3XHUyMDEzOTU3KSIsIlRlbnRva3UgKDk1N1x1MjAxMzk2MSkiLCJc'@; put 'dTAxNGN3YSAoOTYxXHUyMDEzOTY0KSIsIktcdTAxNGRoXHUwMTRkICg5NjRcdTIwMTM5NjgpIiwiQW5uYSAoOTY4XHUyMDEzOTcwKSIsIlRlbnJva3UgKDk3MFx1MjAxMzk3MykiLCJUZW5cdTIwMTllbiAoOTczXHUyMDEzOTc2KSIsIkpcdTAxNGRnZW4gKDk3Nlx1MjAxMzk3OCkiLCJUZW5n'@; put 'ZW4gKDk3OFx1MjAxMzk4MykiLCJFaWthbiAoOTgzXHUyMDEzOTg1KSIsIkthbm5hICg5ODVcdTIwMTM5ODcpIiwiRWllbiAoOTg3XHUyMDEzOTg5KSIsIkVpc28gKDk4OVx1MjAxMzk5MCkiLCJTaFx1MDE0ZHJ5YWt1ICg5OTBcdTIwMTM5OTUpIiwiQ2hcdTAxNGR0b2t1ICg5OTVcdTIwMTM5'@; put 'OTkpIiwiQ2hcdTAxNGRoXHUwMTRkICg5OTlcdTIwMTMxMDA0KSIsIkthbmtcdTAxNGQgKDEwMDRcdTIwMTMxMDEyKSIsIkNoXHUwMTRkd2EgKDEwMTJcdTIwMTMxMDE3KSIsIkthbm5pbiAoMTAxN1x1MjAxMzEwMjEpIiwiSmlhbiAoMTAyMVx1MjAxMzEwMjQpIiwiTWFuanUgKDEwMjRcdTIw'@; put 'MTMxMDI4KSIsIkNoXHUwMTRkZ2VuICgxMDI4XHUyMDEzMTAzNykiLCJDaFx1MDE0ZHJ5YWt1ICgxMDM3XHUyMDEzMTA0MCkiLCJDaFx1MDE0ZGt5XHUwMTZiICgxMDQwXHUyMDEzMTA0NCkiLCJLYW50b2t1ICgxMDQ0XHUyMDEzMTA0NikiLCJFaXNoXHUwMTRkICgxMDQ2XHUyMDEzMTA1Myki'@; put 'LCJUZW5naSAoMTA1M1x1MjAxMzEwNTgpIiwiS1x1MDE0ZGhlaSAoMTA1OFx1MjAxMzEwNjUpIiwiSmlyeWFrdSAoMTA2NVx1MjAxMzEwNjkpIiwiRW5reVx1MDE2YiAoMTA2OVx1MjAxMzEwNzQpIiwiU2hcdTAxNGRobyAoMTA3NFx1MjAxMzEwNzcpIiwiU2hcdTAxNGRyeWFrdSAoMTA3N1x1'@; put 'MjAxMzEwODEpIiwiRWloXHUwMTRkICgxMDgxXHUyMDEzMTA4NCkiLCJcdTAxNGN0b2t1ICgxMDg0XHUyMDEzMTA4NykiLCJLYW5qaSAoMTA4N1x1MjAxMzEwOTQpIiwiS2FoXHUwMTRkICgxMDk0XHUyMDEzMTA5NikiLCJFaWNoXHUwMTRkICgxMDk2XHUyMDEzMTA5NykiLCJKXHUwMTRkdG9r'@; put 'dSAoMTA5N1x1MjAxMzEwOTkpIiwiS1x1MDE0ZHdhICgxMDk5XHUyMDEzMTEwNCkiLCJDaFx1MDE0ZGppICgxMTA0XHUyMDEzMTEwNikiLCJLYXNoXHUwMTRkICgxMTA2XHUyMDEzMTEwOCkiLCJUZW5uaW4gKDExMDhcdTIwMTMxMTEwKSIsIlRlbi1laSAoMTExMC0xMTEzKSIsIkVpa3lcdTAx'@; put 'NmIgKDExMTNcdTIwMTMxMTE4KSIsIkdlblx1MjAxOWVpICgxMTE4XHUyMDEzMTEyMCkiLCJIXHUwMTRkYW4gKDExMjBcdTIwMTMxMTI0KSIsIlRlbmppICgxMTI0XHUyMDEzMTEyNikiLCJEYWlqaSAoMTEyNlx1MjAxMzExMzEpIiwiVGVuc2hcdTAxNGQgKDExMzFcdTIwMTMxMTMyKSIsIkNo'@; put 'XHUwMTRkc2hcdTAxNGQgKDExMzJcdTIwMTMxMTM1KSIsIkhcdTAxNGRlbiAoMTEzNVx1MjAxMzExNDEpIiwiRWlqaSAoMTE0MVx1MjAxMzExNDIpIiwiS1x1MDE0ZGppICgxMTQyXHUyMDEzMTE0NCkiLCJUZW5cdTIwMTl5XHUwMTRkICgxMTQ0XHUyMDEzMTE0NSkiLCJLeVx1MDE2YmFuICgx'@; put 'MTQ1XHUyMDEzMTE1MSkiLCJOaW5wZWkgKDExNTFcdTIwMTMxMTU0KSIsIkt5XHUwMTZianUgKDExNTRcdTIwMTMxMTU2KSIsIkhcdTAxNGRnZW4gKDExNTZcdTIwMTMxMTU5KSIsIkhlaWppICgxMTU5XHUyMDEzMTE2MCkiLCJFaXJ5YWt1ICgxMTYwXHUyMDEzMTE2MSkiLCJcdTAxNGNobyAo'@; put 'MTE2MVx1MjAxMzExNjMpIiwiQ2hcdTAxNGRrYW4gKDExNjNcdTIwMTMxMTY1KSIsIkVpbWFuICgxMTY1XHUyMDEzMTE2NikiLCJOaW5cdTIwMTlhbiAoMTE2Nlx1MjAxMzExNjkpIiwiS2FcdTAxNGQgKDExNjlcdTIwMTMxMTcxKSIsIlNoXHUwMTRkYW4gKDExNzFcdTIwMTMxMTc1KSIsIkFu'@; put 'Z2VuICgxMTc1XHUyMDEzMTE3NykiLCJKaXNoXHUwMTRkICgxMTc3XHUyMDEzMTE4MSkiLCJZXHUwMTRkd2EgKDExODFcdTIwMTMxMTgyKSIsIkp1ZWkgKDExODJcdTIwMTMxMTg0KSIsIkdlbnJ5YWt1ICgxMTg0XHUyMDEzMTE4NSkiLCJCdW5qaSAoMTE4NVx1MjAxMzExOTApIiwiS2Vua3lc'@; put 'dTAxNmIgKDExOTBcdTIwMTMxMTk5KSIsIlNoXHUwMTRkamkgKDExOTlcdTIwMTMxMjAxKSIsIktlbm5pbiAoMTIwMVx1MjAxMzEyMDQpIiwiR2Vua3lcdTAxNmIgKDEyMDRcdTIwMTMxMjA2KSIsIktlblx1MjAxOWVpICgxMjA2XHUyMDEzMTIwNykiLCJKXHUwMTRkZ2VuICgxMjA3XHUyMDEz'@; put 'MTIxMSkiLCJLZW5yeWFrdSAoMTIxMVx1MjAxMzEyMTMpIiwiS2VucFx1MDE0ZCAoMTIxM1x1MjAxMzEyMTkpIiwiSlx1MDE0ZGt5XHUwMTZiICgxMjE5XHUyMDEzMTIyMikiLCJKXHUwMTRkXHUwMTRkICgxMjIyXHUyMDEzMTIyNCkiLCJHZW5uaW4gKDEyMjRcdTIwMTMxMjI1KSIsIkthcm9r'@; put 'dSAoMTIyNVx1MjAxMzEyMjcpIiwiQW50ZWkgKDEyMjdcdTIwMTMxMjI5KSIsIkthbmtpICgxMjI5XHUyMDEzMTIzMikiLCJKXHUwMTRkZWkgKDEyMzJcdTIwMTMxMjMzKSIsIlRlbnB1a3UgKDEyMzNcdTIwMTMxMjM0KSIsIkJ1bnJ5YWt1ICgxMjM0XHUyMDEzMTIzNSkiLCJLYXRlaSAoMTIz'@; put 'NVx1MjAxMzEyMzgpIiwiUnlha3VuaW4gKDEyMzhcdTIwMTMxMjM5KSIsIkVuXHUyMDE5XHUwMTRkICgxMjM5XHUyMDEzMTI0MCkiLCJOaW5qaSAoMTI0MFx1MjAxMzEyNDMpIiwiS2FuZ2VuICgxMjQzXHUyMDEzMTI0NykiLCJIXHUwMTRkamkgKDEyNDdcdTIwMTMxMjQ5KSIsIktlbmNoXHUw'@; put 'MTRkICgxMjQ5XHUyMDEzMTI1NikiLCJLXHUwMTRkZ2VuICgxMjU2XHUyMDEzMTI1NykiLCJTaFx1MDE0ZGthICgxMjU3XHUyMDEzMTI1OSkiLCJTaFx1MDE0ZGdlbiAoMTI1OVx1MjAxMzEyNjApIiwiQnVuXHUyMDE5XHUwMTRkICgxMjYwXHUyMDEzMTI2MSkiLCJLXHUwMTRkY2hcdTAxNGQg'@; put 'KDEyNjFcdTIwMTMxMjY0KSIsIkJ1blx1MjAxOWVpICgxMjY0XHUyMDEzMTI3NSkiLCJLZW5qaSAoMTI3NVx1MjAxMzEyNzgpIiwiS1x1MDE0ZGFuICgxMjc4XHUyMDEzMTI4OCkiLCJTaFx1MDE0ZFx1MDE0ZCAoMTI4OFx1MjAxMzEyOTMpIiwiRWluaW4gKDEyOTNcdTIwMTMxMjk5KSIsIlNo'@; put 'XHUwMTRkYW4gKDEyOTlcdTIwMTMxMzAyKSIsIktlbmdlbiAoMTMwMlx1MjAxMzEzMDMpIiwiS2FnZW4gKDEzMDNcdTIwMTMxMzA2KSIsIlRva3VqaSAoMTMwNlx1MjAxMzEzMDgpIiwiRW5reVx1MDE0ZCAoMTMwOFx1MjAxMzEzMTEpIiwiXHUwMTRjY2hcdTAxNGQgKDEzMTFcdTIwMTMxMzEy'@; put 'KSIsIlNoXHUwMTRkd2EgKDEzMTJcdTIwMTMxMzE3KSIsIkJ1bnBcdTAxNGQgKDEzMTdcdTIwMTMxMzE5KSIsIkdlblx1MDE0ZCAoMTMxOVx1MjAxMzEzMjEpIiwiR2Vua1x1MDE0ZCAoMTMyMVx1MjAxMzEzMjQpIiwiU2hcdTAxNGRjaFx1MDE2YiAoMTMyNFx1MjAxMzEzMjYpIiwiS2FyeWFr'@; put 'dSAoMTMyNlx1MjAxMzEzMjkpIiwiR2VudG9rdSAoMTMyOVx1MjAxMzEzMzEpIiwiR2Vua1x1MDE0ZCAoMTMzMVx1MjAxMzEzMzQpIiwiS2VubXUgKDEzMzRcdTIwMTMxMzM2KSIsIkVuZ2VuICgxMzM2XHUyMDEzMTM0MCkiLCJLXHUwMTRka29rdSAoMTM0MFx1MjAxMzEzNDYpIiwiU2hcdTAx'@; put 'NGRoZWkgKDEzNDZcdTIwMTMxMzcwKSIsIktlbnRva3UgKDEzNzBcdTIwMTMxMzcyKSIsIkJ1bmNoXHUwMTZiICgxMzcyXHUyMDEzMTM3NSkiLCJUZW5qdSAoMTM3NVx1MjAxMzEzNzkpIiwiS1x1MDE0ZHJ5YWt1ICgxMzc5XHUyMDEzMTM4MSkiLCJLXHUwMTRkd2EgKDEzODFcdTIwMTMxMzg0'@; put 'KSIsIkdlbmNoXHUwMTZiICgxMzg0XHUyMDEzMTM5MikiLCJNZWl0b2t1ICgxMzg0XHUyMDEzMTM4NykiLCJLYWtlaSAoMTM4N1x1MjAxMzEzODkpIiwiS1x1MDE0ZFx1MDE0ZCAoMTM4OVx1MjAxMzEzOTApIiwiTWVpdG9rdSAoMTM5MFx1MjAxMzEzOTQpIiwiXHUwMTRjZWkgKDEzOTRcdTIw'@; put 'MTMxNDI4KSIsIlNoXHUwMTRkY2hcdTAxNGQgKDE0MjhcdTIwMTMxNDI5KSIsIkVpa3lcdTAxNGQgKDE0MjlcdTIwMTMxNDQxKSIsIktha2l0c3UgKDE0NDFcdTIwMTMxNDQ0KSIsIkJ1blx1MjAxOWFuICgxNDQ0XHUyMDEzMTQ0OSkiLCJIXHUwMTRkdG9rdSAoMTQ0OVx1MjAxMzE0NTIpIiwi'@; put 'S3lcdTAxNGR0b2t1ICgxNDUyXHUyMDEzMTQ1NSkiLCJLXHUwMTRkc2hcdTAxNGQgKDE0NTVcdTIwMTMxNDU3KSIsIkNoXHUwMTRkcm9rdSAoMTQ1N1x1MjAxMzE0NjApIiwiS2Fuc2hcdTAxNGQgKDE0NjBcdTIwMTMxNDY2KSIsIkJ1bnNoXHUwMTRkICgxNDY2XHUyMDEzMTQ2NykiLCJcdTAx'@; put 'NGNuaW4gKDE0NjdcdTIwMTMxNDY5KSIsIkJ1bm1laSAoMTQ2OVx1MjAxMzE0ODcpIiwiQ2hcdTAxNGRreVx1MDE0ZCAoMTQ4N1x1MjAxMzE0ODkpIiwiRW50b2t1ICgxNDg5XHUyMDEzMTQ5MikiLCJNZWlcdTAxNGQgKDE0OTJcdTIwMTMxNTAxKSIsIkJ1bmtpICgxNTAxXHUyMDEzMTUwNCki'@; put 'LCJFaXNoXHUwMTRkICgxNTA0XHUyMDEzMTUyMSkiLCJUYWllaSAoMTUyMVx1MjAxMzE1MjgpIiwiS3lcdTAxNGRyb2t1ICgxNTI4XHUyMDEzMTUzMikiLCJUZW5idW4gKDE1MzJcdTIwMTMxNTU1KSIsIktcdTAxNGRqaSAoMTU1NVx1MjAxMzE1NTgpIiwiRWlyb2t1ICgxNTU4XHUyMDEzMTU3'@; put 'MCkiLCJHZW5raSAoMTU3MFx1MjAxMzE1NzMpIiwiVGVuc2hcdTAxNGQgKDE1NzNcdTIwMTMxNTkyKSIsIkJ1bnJva3UgKDE1OTJcdTIwMTMxNTk2KSIsIktlaWNoXHUwMTRkICgxNTk2XHUyMDEzMTYxNSkiLCJHZW5uYSAoMTYxNVx1MjAxMzE2MjQpIiwiS2FuXHUyMDE5ZWkgKDE2MjRcdTIw'@; put 'MTMxNjQ0KSIsIlNoXHUwMTRkaG8gKDE2NDRcdTIwMTMxNjQ4KSIsIktlaWFuICgxNjQ4XHUyMDEzMTY1MikiLCJKXHUwMTRkXHUwMTRkICgxNjUyXHUyMDEzMTY1NSkiLCJNZWlyZWtpICgxNjU1XHUyMDEzMTY1OCkiLCJNYW5qaSAoMTY1OFx1MjAxMzE2NjEpIiwiS2FuYnVuICgxNjYxXHUy'@; put 'MDEzMTY3MykiLCJFbnBcdTAxNGQgKDE2NzNcdTIwMTMxNjgxKSIsIlRlbm5hICgxNjgxXHUyMDEzMTY4NCkiLCJKXHUwMTRka3lcdTAxNGQgKDE2ODRcdTIwMTMxNjg4KSIsIkdlbnJva3UgKDE2ODhcdTIwMTMxNzA0KSIsIkhcdTAxNGRlaSAoMTcwNFx1MjAxMzE3MTEpIiwiU2hcdTAxNGR0'@; put 'b2t1ICgxNzExXHUyMDEzMTcxNikiLCJLeVx1MDE0ZGhcdTAxNGQgKDE3MTZcdTIwMTMxNzM2KSIsIkdlbmJ1biAoMTczNlx1MjAxMzE3NDEpIiwiS2FucFx1MDE0ZCAoMTc0MVx1MjAxMzE3NDQpIiwiRW5reVx1MDE0ZCAoMTc0NFx1MjAxMzE3NDgpIiwiS2FuXHUyMDE5ZW4gKDE3NDhcdTIw'@; put 'MTMxNzUxKSIsIkhcdTAxNGRyZWtpICgxNzUxXHUyMDEzMTc2NCkiLCJNZWl3YSAoMTc2NFx1MjAxMzE3NzIpIiwiQW5cdTIwMTllaSAoMTc3Mlx1MjAxMzE3ODEpIiwiVGVubWVpICgxNzgxXHUyMDEzMTc4OSkiLCJLYW5zZWkgKDE3ODlcdTIwMTMxODAxKSIsIkt5XHUwMTRkd2EgKDE4MDFc'@; put 'dTIwMTMxODA0KSIsIkJ1bmthICgxODA0XHUyMDEzMTgxOCkiLCJCdW5zZWkgKDE4MThcdTIwMTMxODMwKSIsIlRlbnBcdTAxNGQgKDE4MzBcdTIwMTMxODQ0KSIsIktcdTAxNGRrYSAoMTg0NFx1MjAxMzE4NDgpIiwiS2FlaSAoMTg0OFx1MjAxMzE4NTQpIiwiQW5zZWkgKDE4NTRcdTIwMTMx'@; put 'ODYwKSIsIk1hblx1MjAxOWVuICgxODYwXHUyMDEzMTg2MSkiLCJCdW5reVx1MDE2YiAoMTg2MVx1MjAxMzE4NjQpIiwiR2VuamkgKDE4NjRcdTIwMTMxODY1KSIsIktlaVx1MDE0ZCAoMTg2NVx1MjAxMzE4NjgpIiwiTWVpamkiLCJUYWlzaFx1MDE0ZCIsIlNoXHUwMTRkd2EiLCJIZWlzZWki'@; put 'XSwibG9uZyI6WyJUYWlrYSAoNjQ1XHUyMDEzNjUwKSIsIkhha3VjaGkgKDY1MFx1MjAxMzY3MSkiLCJIYWt1aFx1MDE0ZCAoNjcyXHUyMDEzNjg2KSIsIlNodWNoXHUwMTRkICg2ODZcdTIwMTM3MDEpIiwiVGFpaFx1MDE0ZCAoNzAxXHUyMDEzNzA0KSIsIktlaXVuICg3MDRcdTIwMTM3MDgp'@; put 'IiwiV2FkXHUwMTRkICg3MDhcdTIwMTM3MTUpIiwiUmVpa2kgKDcxNVx1MjAxMzcxNykiLCJZXHUwMTRkclx1MDE0ZCAoNzE3XHUyMDEzNzI0KSIsIkppbmtpICg3MjRcdTIwMTM3MjkpIiwiVGVucHlcdTAxNGQgKDcyOVx1MjAxMzc0OSkiLCJUZW5weVx1MDE0ZC1rYW1wXHUwMTRkICg3NDkt'@; put 'NzQ5KSIsIlRlbnB5XHUwMTRkLXNoXHUwMTRkaFx1MDE0ZCAoNzQ5LTc1NykiLCJUZW5weVx1MDE0ZC1oXHUwMTRkamkgKDc1Ny03NjUpIiwiVGVucHlcdTAxNGQtamluZ28gKDc2NS03NjcpIiwiSmluZ28ta2VpdW4gKDc2Ny03NzApIiwiSFx1MDE0ZGtpICg3NzBcdTIwMTM3ODApIiwiVGVu'@; put 'LVx1MDE0ZCAoNzgxLTc4MikiLCJFbnJ5YWt1ICg3ODJcdTIwMTM4MDYpIiwiRGFpZFx1MDE0ZCAoODA2XHUyMDEzODEwKSIsIktcdTAxNGRuaW4gKDgxMFx1MjAxMzgyNCkiLCJUZW5jaFx1MDE0ZCAoODI0XHUyMDEzODM0KSIsIkpcdTAxNGR3YSAoODM0XHUyMDEzODQ4KSIsIkthalx1MDE0'@; put 'ZCAoODQ4XHUyMDEzODUxKSIsIk5pbmp1ICg4NTFcdTIwMTM4NTQpIiwiU2Fpa1x1MDE0ZCAoODU0XHUyMDEzODU3KSIsIlRlbi1hbiAoODU3LTg1OSkiLCJKXHUwMTRkZ2FuICg4NTlcdTIwMTM4NzcpIiwiR2FuZ3lcdTAxNGQgKDg3N1x1MjAxMzg4NSkiLCJOaW5uYSAoODg1XHUyMDEzODg5'@; put 'KSIsIkthbnB5XHUwMTRkICg4ODlcdTIwMTM4OTgpIiwiU2hcdTAxNGR0YWkgKDg5OFx1MjAxMzkwMSkiLCJFbmdpICg5MDFcdTIwMTM5MjMpIiwiRW5jaFx1MDE0ZCAoOTIzXHUyMDEzOTMxKSIsIkpcdTAxNGRoZWkgKDkzMVx1MjAxMzkzOCkiLCJUZW5neVx1MDE0ZCAoOTM4XHUyMDEzOTQ3'@; put 'KSIsIlRlbnJ5YWt1ICg5NDdcdTIwMTM5NTcpIiwiVGVudG9rdSAoOTU3XHUyMDEzOTYxKSIsIlx1MDE0Y3dhICg5NjFcdTIwMTM5NjQpIiwiS1x1MDE0ZGhcdTAxNGQgKDk2NFx1MjAxMzk2OCkiLCJBbm5hICg5NjhcdTIwMTM5NzApIiwiVGVucm9rdSAoOTcwXHUyMDEzOTczKSIsIlRlblx1'@; put 'MjAxOWVuICg5NzNcdTIwMTM5NzYpIiwiSlx1MDE0ZGdlbiAoOTc2XHUyMDEzOTc4KSIsIlRlbmdlbiAoOTc4XHUyMDEzOTgzKSIsIkVpa2FuICg5ODNcdTIwMTM5ODUpIiwiS2FubmEgKDk4NVx1MjAxMzk4NykiLCJFaWVuICg5ODdcdTIwMTM5ODkpIiwiRWlzbyAoOTg5XHUyMDEzOTkwKSIs'@; put 'IlNoXHUwMTRkcnlha3UgKDk5MFx1MjAxMzk5NSkiLCJDaFx1MDE0ZHRva3UgKDk5NVx1MjAxMzk5OSkiLCJDaFx1MDE0ZGhcdTAxNGQgKDk5OVx1MjAxMzEwMDQpIiwiS2Fua1x1MDE0ZCAoMTAwNFx1MjAxMzEwMTIpIiwiQ2hcdTAxNGR3YSAoMTAxMlx1MjAxMzEwMTcpIiwiS2FubmluICgx'@; put 'MDE3XHUyMDEzMTAyMSkiLCJKaWFuICgxMDIxXHUyMDEzMTAyNCkiLCJNYW5qdSAoMTAyNFx1MjAxMzEwMjgpIiwiQ2hcdTAxNGRnZW4gKDEwMjhcdTIwMTMxMDM3KSIsIkNoXHUwMTRkcnlha3UgKDEwMzdcdTIwMTMxMDQwKSIsIkNoXHUwMTRka3lcdTAxNmIgKDEwNDBcdTIwMTMxMDQ0KSIs'@; put 'IkthbnRva3UgKDEwNDRcdTIwMTMxMDQ2KSIsIkVpc2hcdTAxNGQgKDEwNDZcdTIwMTMxMDUzKSIsIlRlbmdpICgxMDUzXHUyMDEzMTA1OCkiLCJLXHUwMTRkaGVpICgxMDU4XHUyMDEzMTA2NSkiLCJKaXJ5YWt1ICgxMDY1XHUyMDEzMTA2OSkiLCJFbmt5XHUwMTZiICgxMDY5XHUyMDEzMTA3'@; put 'NCkiLCJTaFx1MDE0ZGhvICgxMDc0XHUyMDEzMTA3NykiLCJTaFx1MDE0ZHJ5YWt1ICgxMDc3XHUyMDEzMTA4MSkiLCJFaWhcdTAxNGQgKDEwODFcdTIwMTMxMDg0KSIsIlx1MDE0Y3Rva3UgKDEwODRcdTIwMTMxMDg3KSIsIkthbmppICgxMDg3XHUyMDEzMTA5NCkiLCJLYWhcdTAxNGQgKDEw'@; put 'OTRcdTIwMTMxMDk2KSIsIkVpY2hcdTAxNGQgKDEwOTZcdTIwMTMxMDk3KSIsIkpcdTAxNGR0b2t1ICgxMDk3XHUyMDEzMTA5OSkiLCJLXHUwMTRkd2EgKDEwOTlcdTIwMTMxMTA0KSIsIkNoXHUwMTRkamkgKDExMDRcdTIwMTMxMTA2KSIsIkthc2hcdTAxNGQgKDExMDZcdTIwMTMxMTA4KSIs'@; put 'IlRlbm5pbiAoMTEwOFx1MjAxMzExMTApIiwiVGVuLWVpICgxMTEwLTExMTMpIiwiRWlreVx1MDE2YiAoMTExM1x1MjAxMzExMTgpIiwiR2VuXHUyMDE5ZWkgKDExMThcdTIwMTMxMTIwKSIsIkhcdTAxNGRhbiAoMTEyMFx1MjAxMzExMjQpIiwiVGVuamkgKDExMjRcdTIwMTMxMTI2KSIsIkRh'@; put 'aWppICgxMTI2XHUyMDEzMTEzMSkiLCJUZW5zaFx1MDE0ZCAoMTEzMVx1MjAxMzExMzIpIiwiQ2hcdTAxNGRzaFx1MDE0ZCAoMTEzMlx1MjAxMzExMzUpIiwiSFx1MDE0ZGVuICgxMTM1XHUyMDEzMTE0MSkiLCJFaWppICgxMTQxXHUyMDEzMTE0MikiLCJLXHUwMTRkamkgKDExNDJcdTIwMTMx'@; put 'MTQ0KSIsIlRlblx1MjAxOXlcdTAxNGQgKDExNDRcdTIwMTMxMTQ1KSIsIkt5XHUwMTZiYW4gKDExNDVcdTIwMTMxMTUxKSIsIk5pbnBlaSAoMTE1MVx1MjAxMzExNTQpIiwiS3lcdTAxNmJqdSAoMTE1NFx1MjAxMzExNTYpIiwiSFx1MDE0ZGdlbiAoMTE1Nlx1MjAxMzExNTkpIiwiSGVpamkg'@; put 'KDExNTlcdTIwMTMxMTYwKSIsIkVpcnlha3UgKDExNjBcdTIwMTMxMTYxKSIsIlx1MDE0Y2hvICgxMTYxXHUyMDEzMTE2MykiLCJDaFx1MDE0ZGthbiAoMTE2M1x1MjAxMzExNjUpIiwiRWltYW4gKDExNjVcdTIwMTMxMTY2KSIsIk5pblx1MjAxOWFuICgxMTY2XHUyMDEzMTE2OSkiLCJLYVx1'@; put 'MDE0ZCAoMTE2OVx1MjAxMzExNzEpIiwiU2hcdTAxNGRhbiAoMTE3MVx1MjAxMzExNzUpIiwiQW5nZW4gKDExNzVcdTIwMTMxMTc3KSIsIkppc2hcdTAxNGQgKDExNzdcdTIwMTMxMTgxKSIsIllcdTAxNGR3YSAoMTE4MVx1MjAxMzExODIpIiwiSnVlaSAoMTE4Mlx1MjAxMzExODQpIiwiR2Vu'@; put 'cnlha3UgKDExODRcdTIwMTMxMTg1KSIsIkJ1bmppICgxMTg1XHUyMDEzMTE5MCkiLCJLZW5reVx1MDE2YiAoMTE5MFx1MjAxMzExOTkpIiwiU2hcdTAxNGRqaSAoMTE5OVx1MjAxMzEyMDEpIiwiS2VubmluICgxMjAxXHUyMDEzMTIwNCkiLCJHZW5reVx1MDE2YiAoMTIwNFx1MjAxMzEyMDYp'@; put 'IiwiS2VuXHUyMDE5ZWkgKDEyMDZcdTIwMTMxMjA3KSIsIkpcdTAxNGRnZW4gKDEyMDdcdTIwMTMxMjExKSIsIktlbnJ5YWt1ICgxMjExXHUyMDEzMTIxMykiLCJLZW5wXHUwMTRkICgxMjEzXHUyMDEzMTIxOSkiLCJKXHUwMTRka3lcdTAxNmIgKDEyMTlcdTIwMTMxMjIyKSIsIkpcdTAxNGRc'@; put 'dTAxNGQgKDEyMjJcdTIwMTMxMjI0KSIsIkdlbm5pbiAoMTIyNFx1MjAxMzEyMjUpIiwiS2Fyb2t1ICgxMjI1XHUyMDEzMTIyNykiLCJBbnRlaSAoMTIyN1x1MjAxMzEyMjkpIiwiS2Fua2kgKDEyMjlcdTIwMTMxMjMyKSIsIkpcdTAxNGRlaSAoMTIzMlx1MjAxMzEyMzMpIiwiVGVucHVrdSAo'@; put 'MTIzM1x1MjAxMzEyMzQpIiwiQnVucnlha3UgKDEyMzRcdTIwMTMxMjM1KSIsIkthdGVpICgxMjM1XHUyMDEzMTIzOCkiLCJSeWFrdW5pbiAoMTIzOFx1MjAxMzEyMzkpIiwiRW5cdTIwMTlcdTAxNGQgKDEyMzlcdTIwMTMxMjQwKSIsIk5pbmppICgxMjQwXHUyMDEzMTI0MykiLCJLYW5nZW4g'@; put 'KDEyNDNcdTIwMTMxMjQ3KSIsIkhcdTAxNGRqaSAoMTI0N1x1MjAxMzEyNDkpIiwiS2VuY2hcdTAxNGQgKDEyNDlcdTIwMTMxMjU2KSIsIktcdTAxNGRnZW4gKDEyNTZcdTIwMTMxMjU3KSIsIlNoXHUwMTRka2EgKDEyNTdcdTIwMTMxMjU5KSIsIlNoXHUwMTRkZ2VuICgxMjU5XHUyMDEzMTI2'@; put 'MCkiLCJCdW5cdTIwMTlcdTAxNGQgKDEyNjBcdTIwMTMxMjYxKSIsIktcdTAxNGRjaFx1MDE0ZCAoMTI2MVx1MjAxMzEyNjQpIiwiQnVuXHUyMDE5ZWkgKDEyNjRcdTIwMTMxMjc1KSIsIktlbmppICgxMjc1XHUyMDEzMTI3OCkiLCJLXHUwMTRkYW4gKDEyNzhcdTIwMTMxMjg4KSIsIlNoXHUw'@; put 'MTRkXHUwMTRkICgxMjg4XHUyMDEzMTI5MykiLCJFaW5pbiAoMTI5M1x1MjAxMzEyOTkpIiwiU2hcdTAxNGRhbiAoMTI5OVx1MjAxMzEzMDIpIiwiS2VuZ2VuICgxMzAyXHUyMDEzMTMwMykiLCJLYWdlbiAoMTMwM1x1MjAxMzEzMDYpIiwiVG9rdWppICgxMzA2XHUyMDEzMTMwOCkiLCJFbmt5'@; put 'XHUwMTRkICgxMzA4XHUyMDEzMTMxMSkiLCJcdTAxNGNjaFx1MDE0ZCAoMTMxMVx1MjAxMzEzMTIpIiwiU2hcdTAxNGR3YSAoMTMxMlx1MjAxMzEzMTcpIiwiQnVucFx1MDE0ZCAoMTMxN1x1MjAxMzEzMTkpIiwiR2VuXHUwMTRkICgxMzE5XHUyMDEzMTMyMSkiLCJHZW5rXHUwMTRkICgxMzIx'@; put 'XHUyMDEzMTMyNCkiLCJTaFx1MDE0ZGNoXHUwMTZiICgxMzI0XHUyMDEzMTMyNikiLCJLYXJ5YWt1ICgxMzI2XHUyMDEzMTMyOSkiLCJHZW50b2t1ICgxMzI5XHUyMDEzMTMzMSkiLCJHZW5rXHUwMTRkICgxMzMxXHUyMDEzMTMzNCkiLCJLZW5tdSAoMTMzNFx1MjAxMzEzMzYpIiwiRW5nZW4g'@; put 'KDEzMzZcdTIwMTMxMzQwKSIsIktcdTAxNGRrb2t1ICgxMzQwXHUyMDEzMTM0NikiLCJTaFx1MDE0ZGhlaSAoMTM0Nlx1MjAxMzEzNzApIiwiS2VudG9rdSAoMTM3MFx1MjAxMzEzNzIpIiwiQnVuY2hcdTAxNmIgKDEzNzJcdTIwMTMxMzc1KSIsIlRlbmp1ICgxMzc1XHUyMDEzMTM3OSkiLCJL'@; put 'XHUwMTRkcnlha3UgKDEzNzlcdTIwMTMxMzgxKSIsIktcdTAxNGR3YSAoMTM4MVx1MjAxMzEzODQpIiwiR2VuY2hcdTAxNmIgKDEzODRcdTIwMTMxMzkyKSIsIk1laXRva3UgKDEzODRcdTIwMTMxMzg3KSIsIktha2VpICgxMzg3XHUyMDEzMTM4OSkiLCJLXHUwMTRkXHUwMTRkICgxMzg5XHUy'@; put 'MDEzMTM5MCkiLCJNZWl0b2t1ICgxMzkwXHUyMDEzMTM5NCkiLCJcdTAxNGNlaSAoMTM5NFx1MjAxMzE0MjgpIiwiU2hcdTAxNGRjaFx1MDE0ZCAoMTQyOFx1MjAxMzE0MjkpIiwiRWlreVx1MDE0ZCAoMTQyOVx1MjAxMzE0NDEpIiwiS2FraXRzdSAoMTQ0MVx1MjAxMzE0NDQpIiwiQnVuXHUy'@; put 'MDE5YW4gKDE0NDRcdTIwMTMxNDQ5KSIsIkhcdTAxNGR0b2t1ICgxNDQ5XHUyMDEzMTQ1MikiLCJLeVx1MDE0ZHRva3UgKDE0NTJcdTIwMTMxNDU1KSIsIktcdTAxNGRzaFx1MDE0ZCAoMTQ1NVx1MjAxMzE0NTcpIiwiQ2hcdTAxNGRyb2t1ICgxNDU3XHUyMDEzMTQ2MCkiLCJLYW5zaFx1MDE0'@; put 'ZCAoMTQ2MFx1MjAxMzE0NjYpIiwiQnVuc2hcdTAxNGQgKDE0NjZcdTIwMTMxNDY3KSIsIlx1MDE0Y25pbiAoMTQ2N1x1MjAxMzE0NjkpIiwiQnVubWVpICgxNDY5XHUyMDEzMTQ4NykiLCJDaFx1MDE0ZGt5XHUwMTRkICgxNDg3XHUyMDEzMTQ4OSkiLCJFbnRva3UgKDE0ODlcdTIwMTMxNDky'@; put 'KSIsIk1laVx1MDE0ZCAoMTQ5Mlx1MjAxMzE1MDEpIiwiQnVua2kgKDE1MDFcdTIwMTMxNTA0KSIsIkVpc2hcdTAxNGQgKDE1MDRcdTIwMTMxNTIxKSIsIlRhaWVpICgxNTIxXHUyMDEzMTUyOCkiLCJLeVx1MDE0ZHJva3UgKDE1MjhcdTIwMTMxNTMyKSIsIlRlbmJ1biAoMTUzMlx1MjAxMzE1'@; put 'NTUpIiwiS1x1MDE0ZGppICgxNTU1XHUyMDEzMTU1OCkiLCJFaXJva3UgKDE1NThcdTIwMTMxNTcwKSIsIkdlbmtpICgxNTcwXHUyMDEzMTU3MykiLCJUZW5zaFx1MDE0ZCAoMTU3M1x1MjAxMzE1OTIpIiwiQnVucm9rdSAoMTU5Mlx1MjAxMzE1OTYpIiwiS2VpY2hcdTAxNGQgKDE1OTZcdTIw'@; put 'MTMxNjE1KSIsIkdlbm5hICgxNjE1XHUyMDEzMTYyNCkiLCJLYW5cdTIwMTllaSAoMTYyNFx1MjAxMzE2NDQpIiwiU2hcdTAxNGRobyAoMTY0NFx1MjAxMzE2NDgpIiwiS2VpYW4gKDE2NDhcdTIwMTMxNjUyKSIsIkpcdTAxNGRcdTAxNGQgKDE2NTJcdTIwMTMxNjU1KSIsIk1laXJla2kgKDE2'@; put 'NTVcdTIwMTMxNjU4KSIsIk1hbmppICgxNjU4XHUyMDEzMTY2MSkiLCJLYW5idW4gKDE2NjFcdTIwMTMxNjczKSIsIkVucFx1MDE0ZCAoMTY3M1x1MjAxMzE2ODEpIiwiVGVubmEgKDE2ODFcdTIwMTMxNjg0KSIsIkpcdTAxNGRreVx1MDE0ZCAoMTY4NFx1MjAxMzE2ODgpIiwiR2Vucm9rdSAo'@; put 'MTY4OFx1MjAxMzE3MDQpIiwiSFx1MDE0ZGVpICgxNzA0XHUyMDEzMTcxMSkiLCJTaFx1MDE0ZHRva3UgKDE3MTFcdTIwMTMxNzE2KSIsIkt5XHUwMTRkaFx1MDE0ZCAoMTcxNlx1MjAxMzE3MzYpIiwiR2VuYnVuICgxNzM2XHUyMDEzMTc0MSkiLCJLYW5wXHUwMTRkICgxNzQxXHUyMDEzMTc0'@; put 'NCkiLCJFbmt5XHUwMTRkICgxNzQ0XHUyMDEzMTc0OCkiLCJLYW5cdTIwMTllbiAoMTc0OFx1MjAxMzE3NTEpIiwiSFx1MDE0ZHJla2kgKDE3NTFcdTIwMTMxNzY0KSIsIk1laXdhICgxNzY0XHUyMDEzMTc3MikiLCJBblx1MjAxOWVpICgxNzcyXHUyMDEzMTc4MSkiLCJUZW5tZWkgKDE3ODFc'@; put 'dTIwMTMxNzg5KSIsIkthbnNlaSAoMTc4OVx1MjAxMzE4MDEpIiwiS3lcdTAxNGR3YSAoMTgwMVx1MjAxMzE4MDQpIiwiQnVua2EgKDE4MDRcdTIwMTMxODE4KSIsIkJ1bnNlaSAoMTgxOFx1MjAxMzE4MzApIiwiVGVucFx1MDE0ZCAoMTgzMFx1MjAxMzE4NDQpIiwiS1x1MDE0ZGthICgxODQ0'@; put 'XHUyMDEzMTg0OCkiLCJLYWVpICgxODQ4XHUyMDEzMTg1NCkiLCJBbnNlaSAoMTg1NFx1MjAxMzE4NjApIiwiTWFuXHUyMDE5ZW4gKDE4NjBcdTIwMTMxODYxKSIsIkJ1bmt5XHUwMTZiICgxODYxXHUyMDEzMTg2NCkiLCJHZW5qaSAoMTg2NFx1MjAxMzE4NjUpIiwiS2VpXHUwMTRkICgxODY1'@; put 'XHUyMDEzMTg2OCkiLCJNZWlqaSIsIlRhaXNoXHUwMTRkIiwiU2hcdTAxNGR3YSIsIkhlaXNlaSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwicGVyc2lhbiI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEw'@; put 'IiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJGYXJ2YXJkaW4iLCJPcmRpYmVoZXNodCIsIktob3JkYWQiLCJUaXIiLCJNb3JkYWQiLCJTaGFocml2YXIiLCJNZWhyIiwiQWJhbiIsIkF6YXIiLCJEZXkiLCJCYWhtYW4iLCJFc2ZhbmQiXSwibG9uZyI6WyJGYXJ2YXJkaW4iLCJPcmRpYmVoZXNodCIs'@; put 'Iktob3JkYWQiLCJUaXIiLCJNb3JkYWQiLCJTaGFocml2YXIiLCJNZWhyIiwiQWJhbiIsIkF6YXIiLCJEZXkiLCJCYWhtYW4iLCJFc2ZhbmQiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwi'@; put 'VGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkFQIl0sInNob3J0IjpbIkFQIl0sImxvbmciOlsiQVAiXX0sImRheVBlcmlvZHMi'@; put 'OnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sInJvYyI6eyJtb250aHMiOnsibmFycm93IjpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLCJzaG9ydCI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJP'@; put 'Y3QiLCJOb3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJU'@; put 'IiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJy'@; put 'b3ciOlsiQmVmb3JlIFIuTy5DLiIsIk1pbmd1byJdLCJzaG9ydCI6WyJCZWZvcmUgUi5PLkMuIiwiTWluZ3VvIl0sImxvbmciOlsiQmVmb3JlIFIuTy5DLiIsIk1pbmd1byJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fX19LCJudW1iZXIiOnsibnUiOlsibGF0biJdLCJw'@; put 'YXR0ZXJucyI6eyJkZWNpbWFsIjp7InBvc2l0aXZlUGF0dGVybiI6IntudW1iZXJ9IiwibmVnYXRpdmVQYXR0ZXJuIjoie21pbnVzU2lnbn17bnVtYmVyfSJ9LCJjdXJyZW5jeSI6eyJwb3NpdGl2ZVBhdHRlcm4iOiJ7Y3VycmVuY3l9e251bWJlcn0iLCJuZWdhdGl2ZVBhdHRlcm4iOiJ7bWlu'@; put 'dXNTaWdufXtjdXJyZW5jeX17bnVtYmVyfSJ9LCJwZXJjZW50Ijp7InBvc2l0aXZlUGF0dGVybiI6IntudW1iZXJ9e3BlcmNlbnRTaWdufSIsIm5lZ2F0aXZlUGF0dGVybiI6InttaW51c1NpZ259e251bWJlcn17cGVyY2VudFNpZ259In19LCJzeW1ib2xzIjp7ImxhdG4iOnsiZGVjaW1hbCI6'@; put 'Ii4iLCJncm91cCI6IiwiLCJuYW4iOiJOYU4iLCJwbHVzU2lnbiI6IisiLCJtaW51c1NpZ24iOiItIiwicGVyY2VudFNpZ24iOiIlIiwiaW5maW5pdHkiOiJcdTIyMWUifX0sImN1cnJlbmNpZXMiOnsiQVVEIjoiQSQiLCJCUkwiOiJSJCIsIkNBRCI6IkNBJCIsIkNOWSI6IkNOXHhhNSIsIkVV'@; put 'UiI6Ilx1MjBhYyIsIkdCUCI6Ilx4YTMiLCJIS0QiOiJISyQiLCJJTFMiOiJcdTIwYWEiLCJJTlIiOiJcdTIwYjkiLCJKUFkiOiJceGE1IiwiS1JXIjoiXHUyMGE5IiwiTVhOIjoiTVgkIiwiTlpEIjoiTlokIiwiVFdEIjoiTlQkIiwiVVNEIjoiJCIsIlZORCI6Ilx1MjBhYiIsIlhBRiI6IkZD'@; put 'RkEiLCJYQ0QiOiJFQyQiLCJYT0YiOiJDRkEiLCJYUEYiOiJDRlBGIn19fScpfX0sYz0+e3ZhciBmPW49PmMoYy5zPW4pO2YoMjQwNTApLGYoOTY5MzUpfV0pOw=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=radio.6061cf04fec6a117.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48Y2lyY2xlIGN4PSc4JyBjeT0nOCcgcj0nNCcgZmlsbD0nY3VycmVudENvbG9yJy8+PC9zdmc+Cg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=runtime.a88824217f6db7cd.js; filename filecode temp lrecl=32767; data _null_; file filecode; put 'KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlLHY9e30sZz17fTtmdW5jdGlvbiByKGUpe3ZhciBuPWdbZV07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO3ZhciB0PWdbZV09e2lkOmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiB2W2VdLmNhbGwodC5leHBvcnRzLHQsdC5leHBv'@; put 'cnRzLHIpLHQubG9hZGVkPSEwLHQuZXhwb3J0c31yLm09dixlPVtdLHIuTz0obix0LG8saSk9PntpZighdCl7dmFyIGE9MS8wO2ZvcihmPTA7ZjxlLmxlbmd0aDtmKyspe2Zvcih2YXJbdCxvLGldPWVbZl0scz0hMCxsPTA7bDx0Lmxlbmd0aDtsKyspKCExJml8fGE+PWkpJiZPYmplY3Qua2V5'@; put 'cyhyLk8pLmV2ZXJ5KGI9PnIuT1tiXSh0W2xdKSk/dC5zcGxpY2UobC0tLDEpOihzPSExLGk8YSYmKGE9aSkpO2lmKHMpe2Uuc3BsaWNlKGYtLSwxKTt2YXIgYz1vKCk7dm9pZCAwIT09YyYmKG49Yyl9fXJldHVybiBufWk9aXx8MDtmb3IodmFyIGY9ZS5sZW5ndGg7Zj4wJiZlW2YtMV1bMl0+'@; put 'aTtmLS0pZVtmXT1lW2YtMV07ZVtmXT1bdCxvLGldfSxyLm49ZT0+e3ZhciBuPWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiByLmQobix7YTpufSksbn0sKCgpPT57dmFyIG4sZT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y/dD0+T2JqZWN0LmdldFByb3RvdHlwZU9m'@; put 'KHQpOnQ9PnQuX19wcm90b19fO3IudD1mdW5jdGlvbih0LG8pe2lmKDEmbyYmKHQ9dGhpcyh0KSksOCZvfHwib2JqZWN0Ij09dHlwZW9mIHQmJnQmJig0Jm8mJnQuX19lc01vZHVsZXx8MTYmbyYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbikpcmV0dXJuIHQ7dmFyIGk9T2JqZWN0LmNyZWF0'@; put 'ZShudWxsKTtyLnIoaSk7dmFyIGY9e307bj1ufHxbbnVsbCxlKHt9KSxlKFtdKSxlKGUpXTtmb3IodmFyIGE9MiZvJiZ0Oygib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhKSYmIX5uLmluZGV4T2YoYSk7YT1lKGEpKU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEp'@; put 'LmZvckVhY2gocz0+ZltzXT0oKT0+dFtzXSk7cmV0dXJuIGYuZGVmYXVsdD0oKT0+dCxyLmQoaSxmKSxpfX0pKCksci5kPShlLG4pPT57Zm9yKHZhciB0IGluIG4pci5vKG4sdCkmJiFyLm8oZSx0KSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6blt0XX0p'@; put 'fSxyLmY9e30sci5lPWU9PlByb21pc2UuYWxsKE9iamVjdC5rZXlzKHIuZikucmVkdWNlKChuLHQpPT4oci5mW3RdKGUsbiksbiksW10pKSxyLnU9ZT0+ZSsiLmY5MTJkYWJmNjFmNWI5ZmUuanMiLHIubWluaUNzc0Y9ZT0+e30sci5vPShlLG4pPT5PYmplY3QucHJvdG90eXBlLmhhc093blBy'@; put 'b3BlcnR5LmNhbGwoZSxuKSwoKCk9Pnt2YXIgZT17fSxuPSJkYXRhY29udHJvbGxlcjoiO3IubD0odCxvLGksZik9PntpZihlW3RdKWVbdF0ucHVzaChvKTtlbHNle3ZhciBhLHM7aWYodm9pZCAwIT09aSlmb3IodmFyIGw9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIp'@; put 'LGM9MDtjPGwubGVuZ3RoO2MrKyl7dmFyIGQ9bFtjXTtpZihkLmdldEF0dHJpYnV0ZSgic3JjIik9PXR8fGQuZ2V0QXR0cmlidXRlKCJkYXRhLXdlYnBhY2siKT09bitpKXthPWQ7YnJlYWt9fWF8fChzPSEwLChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpKS50eXBlPSJtb2R1'@; put 'bGUiLGEuY2hhcnNldD0idXRmLTgiLHIubmMmJmEuc2V0QXR0cmlidXRlKCJub25jZSIsci5uYyksYS5zZXRBdHRyaWJ1dGUoImRhdGEtd2VicGFjayIsbitpKSxhLnNyYz1yLnR1KHQpKSxlW3RdPVtvXTt2YXIgdT0oaCxiKT0+e2Eub25lcnJvcj1hLm9ubG9hZD1udWxsLGNsZWFyVGltZW91'@; put 'dChwKTt2YXIgXz1lW3RdO2lmKGRlbGV0ZSBlW3RdLGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpLF8mJl8uZm9yRWFjaCh5PT55KGIpKSxoKXJldHVybiBoKGIpfSxwPXNldFRpbWVvdXQodS5iaW5kKG51bGwsdm9pZCAwLHt0eXBlOiJ0aW1lb3V0Iix0YXJnZXQ6'@; put 'YX0pLDEyZTQpO2Eub25lcnJvcj11LmJpbmQobnVsbCxhLm9uZXJyb3IpLGEub25sb2FkPXUuYmluZChudWxsLGEub25sb2FkKSxzJiZkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpfX19KSgpLHIucj1lPT57dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0'@; put 'LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sci5ubWQ9ZT0+KGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10pLGUpLCgoKT0+e3Zh'@; put 'ciBlO3IudHQ9KCk9Pih2b2lkIDA9PT1lJiYoZT17Y3JlYXRlU2NyaXB0VVJMOm49Pm59LHR5cGVvZiB0cnVzdGVkVHlwZXM8InUiJiZ0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5JiYoZT10cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyI2J1bmRsZXIiLGUpKSksZSl9KSgpLHIu'@; put 'dHU9ZT0+ci50dCgpLmNyZWF0ZVNjcmlwdFVSTChlKSxyLnA9IiIsKCgpPT57dmFyIGU9ezEyMTowfTtyLmYuaj0obyxpKT0+e3ZhciBmPXIubyhlLG8pP2Vbb106dm9pZCAwO2lmKDAhPT1mKWlmKGYpaS5wdXNoKGZbMl0pO2Vsc2UgaWYoMTIxIT1vKXt2YXIgYT1uZXcgUHJvbWlzZSgoZCx1'@; put 'KT0+Zj1lW29dPVtkLHVdKTtpLnB1c2goZlsyXT1hKTt2YXIgcz1yLnArci51KG8pLGw9bmV3IEVycm9yO3IubChzLGQ9PntpZihyLm8oZSxvKSYmKDAhPT0oZj1lW29dKSYmKGVbb109dm9pZCAwKSxmKSl7dmFyIHU9ZCYmKCJsb2FkIj09PWQudHlwZT8ibWlzc2luZyI6ZC50eXBlKSxwPWQm'@; put 'JmQudGFyZ2V0JiZkLnRhcmdldC5zcmM7bC5tZXNzYWdlPSJMb2FkaW5nIGNodW5rICIrbysiIGZhaWxlZC5cbigiK3UrIjogIitwKyIpIixsLm5hbWU9IkNodW5rTG9hZEVycm9yIixsLnR5cGU9dSxsLnJlcXVlc3Q9cCxmWzFdKGwpfX0sImNodW5rLSIrbyxvKX1lbHNlIGVbb109MH0sci5P'@; put 'Lmo9bz0+MD09PWVbb107dmFyIG49KG8saSk9Pnt2YXIgbCxjLFtmLGEsc109aSxkPTA7aWYoZi5zb21lKHA9PjAhPT1lW3BdKSl7Zm9yKGwgaW4gYSlyLm8oYSxsKSYmKHIubVtsXT1hW2xdKTtpZihzKXZhciB1PXMocil9Zm9yKG8mJm8oaSk7ZDxmLmxlbmd0aDtkKyspci5vKGUsYz1mW2Rd'@; put 'KSYmZVtjXSYmZVtjXVswXSgpLGVbY109MDtyZXR1cm4gci5PKHUpfSx0PXNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W107dC5mb3JFYWNoKG4uYmluZChudWxsLDApKSx0LnB1c2g9bi5iaW5kKG51bGwsdC5wdXNoLmJp'@; put 'bmQodCkpfSkoKX0pKCk7'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=scripts.80b33f91f6f02bd4.js; filename filecode temp lrecl=69912; data _null_; file filecode; put 'IWZ1bmN0aW9uKEMsUCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZ0eXBlb2YgbW9kdWxlPCJ1Ij9QKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLFApOlAoKEM9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRo'@; put 'aXM6Q3x8c2VsZikubWFya2VkPXt9KX0odGhpcyxmdW5jdGlvbihDKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gUChhLGkpe2Zvcih2YXIgdD0wO3Q8aS5sZW5ndGg7dCsrKXt2YXIgdT1pW3RdO3UuZW51bWVyYWJsZT11LmVudW1lcmFibGV8fCExLHUuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp'@; put 'biB1JiYodS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsZnVuY3Rpb24oZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZihlPWZ1bmN0aW9uKHIpe2lmKCJvYmplY3QiIT10eXBlb2Ygcnx8bnVsbD09PXIpcmV0dXJuIHI7dmFyIHM9cltTeW1ib2wudG9QcmltaXRpdmVdO2lm'@; put 'KHZvaWQgMD09PXMpcmV0dXJuIFN0cmluZyhyKTtpZigib2JqZWN0IiE9dHlwZW9mKHM9cy5jYWxsKHIsInN0cmluZyIpKSlyZXR1cm4gczt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfShlKSk/ZTpTdHJpbmcoZSl9'@; put 'KHUua2V5KSx1KX19ZnVuY3Rpb24gdigpe3JldHVybih2PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIHQsdT1hcmd1bWVudHNbaV07Zm9yKHQgaW4gdSlPYmplY3QucHJvdG90eXBl'@; put 'Lmhhc093blByb3BlcnR5LmNhbGwodSx0KSYmKGFbdF09dVt0XSl9cmV0dXJuIGF9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSihhLGkpeyhudWxsPT1pfHxpPmEubGVuZ3RoKSYmKGk9YS5sZW5ndGgpO2Zvcih2YXIgdD0wLHU9bmV3IEFycmF5KGkpO3Q8aTt0KyspdVt0XT1h'@; put 'W3RdO3JldHVybiB1fWZ1bmN0aW9uIFUoYSxpKXt2YXIgdCx1PXR5cGVvZiBTeW1ib2w8InUiJiZhW1N5bWJvbC5pdGVyYXRvcl18fGFbIkBAaXRlcmF0b3IiXTtpZih1KXJldHVybih1PXUuY2FsbChhKSkubmV4dC5iaW5kKHUpO2lmKEFycmF5LmlzQXJyYXkoYSl8fCh1PWZ1bmN0aW9uKGUs'@; put 'cil7dmFyIG47aWYoZSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/SihlLHIpOiJNYXAiPT09KG49Ik9iamVjdCI9PT0obj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSkpJiZlLmNvbnN0cnVjdG9yP2UuY29uc3RydWN0b3IubmFtZTpuKXx8IlNldCI9PT1u'@; put 'P0FycmF5LmZyb20oZSk6IkFyZ3VtZW50cyI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9KKGUscik6dm9pZCAwfShhKSl8fGkmJmEmJiJudW1iZXIiPT10eXBlb2YgYS5sZW5ndGgpcmV0dXJuIHUmJihhPXUpLHQ9MCxmdW5jdGlvbigp'@; put 'e3JldHVybiB0Pj1hLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6YVt0KytdfX07dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmpl'@; put 'Y3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBvZT0wO2Z1bmN0aW9uIEsoYSl7cmV0dXJuIl9fcHJpdmF0ZV8iK29lKysrIl8iK2F9ZnVuY3Rpb24gRyhhLGkpe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGkpKXJldHVy'@; put 'biBhO3Rocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byB1c2UgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKX1mdW5jdGlvbiBRKCl7cmV0dXJue2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVh'@; put 'ZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGws'@; put 'd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfX1mdW5jdGlvbiBXKGEpe0MuZGVmYXVsdHM9YX1mdW5jdGlvbiBZKGEpe3JldHVybiBjZVthXX1DLmRlZmF1bHRzPXthc3luYzohMSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRl'@; put 'clByZWZpeDoiIixoaWdobGlnaHQ6bnVsbCxob29rczpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdh'@; put 'bGtUb2tlbnM6bnVsbCx4aHRtbDohMX07dmFyIGVlPS9bJjw+IiddLyxsZT1uZXcgUmVnRXhwKGVlLnNvdXJjZSwiZyIpLHRlPS9bPD4iJ118Jig/ISgjXGR7MSw3fXwjW1h4XVthLWZBLUYwLTldezEsNn18XHcrKTspLyxEZT1uZXcgUmVnRXhwKHRlLnNvdXJjZSwiZyIpLGNlPXsiJiI6IiZh'@; put 'bXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifTtmdW5jdGlvbiB5KGEsaSl7aWYoaSl7aWYoZWUudGVzdChhKSlyZXR1cm4gYS5yZXBsYWNlKGxlLFkpfWVsc2UgaWYodGUudGVzdChhKSlyZXR1cm4gYS5yZXBsYWNlKERlLFkpO3JldHVybiBhfXZh'@; put 'ciBwZT0vJigjKD86XGQrKXwoPzojeFswLTlBLUZhLWZdKyl8KD86XHcrKSk7Py9naTtmdW5jdGlvbiB1ZShhKXtyZXR1cm4gYS5yZXBsYWNlKHBlLGZ1bmN0aW9uKGksdCl7cmV0dXJuImNvbG9uIj09PSh0PXQudG9Mb3dlckNhc2UoKSk/IjoiOiIjIj09PXQuY2hhckF0KDApPyJ4Ij09PXQu'@; put 'Y2hhckF0KDEpP1N0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTpTdHJpbmcuZnJvbUNoYXJDb2RlKCt0LnN1YnN0cmluZygxKSk6IiJ9KX12YXIgaGU9LyhefFteXFtdKVxeL2c7ZnVuY3Rpb24gRShhLGkpe2E9InN0cmluZyI9PXR5cGVvZiBhP2E6YS5z'@; put 'b3VyY2UsaT1pfHwiIjt2YXIgdD17cmVwbGFjZTpmdW5jdGlvbih1LGUpe3JldHVybiBlPShlPWUuc291cmNlfHxlKS5yZXBsYWNlKGhlLCIkMSIpLGE9YS5yZXBsYWNlKHUsZSksdH0sZ2V0UmVnZXg6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJlZ0V4cChhLGkpfX07cmV0dXJuIHR9dmFyIGdl'@; put 'PS9bXlx3Ol0vZyxmZT0vXiR8XlthLXpdW2EtejAtOSsuLV0qOnxeWz8jXS9pO2Z1bmN0aW9uIG5lKGEsaSx0KXtpZihhKXt0cnl7dT1kZWNvZGVVUklDb21wb25lbnQodWUodCkpLnJlcGxhY2UoZ2UsIiIpLnRvTG93ZXJDYXNlKCl9Y2F0Y2h7cmV0dXJuIG51bGx9aWYoMD09PXUuaW5kZXhP'@; put 'ZigiamF2YXNjcmlwdDoiKXx8MD09PXUuaW5kZXhPZigidmJzY3JpcHQ6Iil8fDA9PT11LmluZGV4T2YoImRhdGE6IikpcmV0dXJuIG51bGx9dmFyIHU7aSYmIWZlLnRlc3QodCkmJihhPXQsTVsiICIrKHU9aSldfHwoTVsiICIrdV09RmUudGVzdCh1KT91KyIvIjpIKHUsIi8iLCEwKSksaT0t'@; put 'MT09PSh1PU1bIiAiK3VdKS5pbmRleE9mKCI6IiksdD0iLy8iPT09YS5zdWJzdHJpbmcoMCwyKT9pP2E6dS5yZXBsYWNlKGRlLCIkMSIpK2E6Ii8iPT09YS5jaGFyQXQoMCk/aT9hOnUucmVwbGFjZShBZSwiJDEiKSthOnUrYSk7dHJ5e3Q9ZW5jb2RlVVJJKHQpLnJlcGxhY2UoLyUyNS9nLCIl'@; put 'Iil9Y2F0Y2h7cmV0dXJuIG51bGx9cmV0dXJuIHR9dmFyIE09e30sRmU9L15bXjpdKzpcLypbXi9dKiQvLGRlPS9eKFteOl0rOilbXHNcU10qJC8sQWU9L14oW146XSs6XC8qW14vXSopW1xzXFNdKiQvLEk9e2V4ZWM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiByZShhLGkpe3ZhciB0PWEucmVw'@; put 'bGFjZSgvXHwvZyxmdW5jdGlvbihlLHIsbil7Zm9yKHZhciBzPSExLHA9cjswPD0tLXAmJiJcXCI9PT1uW3BdOylzPSFzO3JldHVybiBzPyJ8IjoiIHwifSkuc3BsaXQoLyBcfC8pLHU9MDtpZih0WzBdLnRyaW0oKXx8dC5zaGlmdCgpLDA8dC5sZW5ndGgmJiF0W3QubGVuZ3RoLTFdLnRyaW0o'@; put 'KSYmdC5wb3AoKSx0Lmxlbmd0aD5pKXQuc3BsaWNlKGkpO2Vsc2UgZm9yKDt0Lmxlbmd0aDxpOyl0LnB1c2goIiIpO2Zvcig7dTx0Lmxlbmd0aDt1KyspdFt1XT10W3VdLnRyaW0oKS5yZXBsYWNlKC9cXFx8L2csInwiKTtyZXR1cm4gdH1mdW5jdGlvbiBIKGEsaSx0KXt2YXIgdT1hLmxlbmd0'@; put 'aDtpZigwPT09dSlyZXR1cm4iIjtmb3IodmFyIGU9MDtlPHU7KXt2YXIgcj1hLmNoYXJBdCh1LWUtMSk7aWYoKHIhPT1pfHx0KSYmKHI9PT1pfHwhdCkpYnJlYWs7ZSsrfXJldHVybiBhLnNsaWNlKDAsdS1lKX1mdW5jdGlvbiBpZShhLHIsdCx1KXt2YXIgZT1yLmhyZWYsbj0ocj1yLnRpdGxl'@; put 'P3koci50aXRsZSk6bnVsbCxhWzFdLnJlcGxhY2UoL1xcKFtcW1xdXSkvZywiJDEiKSk7cmV0dXJuIiEiIT09YVswXS5jaGFyQXQoMCk/KHUuc3RhdGUuaW5MaW5rPSEwLGE9e3R5cGU6ImxpbmsiLHJhdzp0LGhyZWY6ZSx0aXRsZTpyLHRleHQ6bix0b2tlbnM6dS5pbmxpbmVUb2tlbnMobil9'@; put 'LHUuc3RhdGUuaW5MaW5rPSExLGEpOnt0eXBlOiJpbWFnZSIscmF3OnQsaHJlZjplLHRpdGxlOnIsdGV4dDp5KG4pfX12YXIgaj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEodCl7dGhpcy5vcHRpb25zPXR8fEMuZGVmYXVsdHN9dmFyIGk9YS5wcm90b3R5cGU7cmV0dXJuIGkuc3BhY2U9ZnVuY3Rp'@; put 'b24odCl7aWYoKHQ9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWModCkpJiYwPHRbMF0ubGVuZ3RoKXJldHVybnt0eXBlOiJzcGFjZSIscmF3OnRbMF19fSxpLmNvZGU9ZnVuY3Rpb24oZSl7dmFyIHU7aWYoZT10aGlzLnJ1bGVzLmJsb2NrLmNvZGUuZXhlYyhlKSlyZXR1cm4gdT1lWzBd'@; put 'LnJlcGxhY2UoL14gezEsNH0vZ20sIiIpLHt0eXBlOiJjb2RlIixyYXc6ZVswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3U6SCh1LCJcbiIpfX0saS5mZW5jZXM9ZnVuY3Rpb24ocyl7dmFyIHUsZSxyLG47aWYocz10aGlzLnJ1bGVzLmJs'@; put 'b2NrLmZlbmNlcy5leGVjKHMpKXJldHVybiBlPXU9c1swXSxyPXNbM118fCIiLGU9bnVsbD09PShlPXUubWF0Y2goL14oXHMrKSg/OmBgYCkvKSk/cjoobj1lWzFdLHIuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKHApe3ZhciBnPXAubWF0Y2goL15ccysvKTtyZXR1cm4gbnVsbCE9PWcmJmdb'@; put 'MF0ubGVuZ3RoPj1uLmxlbmd0aD9wLnNsaWNlKG4ubGVuZ3RoKTpwfSkuam9pbigiXG4iKSkse3R5cGU6ImNvZGUiLHJhdzp1LGxhbmc6c1syXSYmc1syXS50cmltKCkucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx0ZXh0OmV9fSxpLmhlYWRpbmc9ZnVuY3Rpb24o'@; put 'cil7dmFyIHUsZTtpZihyPXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKHIpKXJldHVybiB1PXJbMl0udHJpbSgpLC8jJC8udGVzdCh1KSYmKGU9SCh1LCIjIiksIXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmZSYmIS8gJC8udGVzdChlKXx8KHU9ZS50cmltKCkpKSx7dHlwZToiaGVhZGlu'@; put 'ZyIscmF3OnJbMF0sZGVwdGg6clsxXS5sZW5ndGgsdGV4dDp1LHRva2Vuczp0aGlzLmxleGVyLmlubGluZSh1KX19LGkuaHI9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmJsb2NrLmhyLmV4ZWModCkpcmV0dXJue3R5cGU6ImhyIixyYXc6dFswXX19LGkuYmxvY2txdW90ZT1mdW5jdGlv'@; put 'bihuKXt2YXIgdSxlLHI7aWYobj10aGlzLnJ1bGVzLmJsb2NrLmJsb2NrcXVvdGUuZXhlYyhuKSlyZXR1cm4gdT1uWzBdLnJlcGxhY2UoL14gKj5bIFx0XT8vZ20sIiIpLGU9dGhpcy5sZXhlci5zdGF0ZS50b3AsdGhpcy5sZXhlci5zdGF0ZS50b3A9ITAscj10aGlzLmxleGVyLmJsb2NrVG9r'@; put 'ZW5zKHUpLHRoaXMubGV4ZXIuc3RhdGUudG9wPWUse3R5cGU6ImJsb2NrcXVvdGUiLHJhdzpuWzBdLHRva2VuczpyLHRleHQ6dX19LGkubGlzdD1mdW5jdGlvbih0KXt2YXIgdT10aGlzLnJ1bGVzLmJsb2NrLmxpc3QuZXhlYyh0KTtpZih1KXt2YXIgZSxyLG4scyxwLGcsRCxvLEYsZCx4LGg9'@; put 'MTwoaz11WzFdLnRyaW0oKSkubGVuZ3RoLGw9e3R5cGU6Imxpc3QiLHJhdzoiIixvcmRlcmVkOmgsc3RhcnQ6aD8ray5zbGljZSgwLC0xKToiIixsb29zZTohMSxpdGVtczpbXX0saz1oPyJcXGR7MSw5fVxcIitrLnNsaWNlKC0xKToiXFwiK2s7dGhpcy5vcHRpb25zLnBlZGFudGljJiYoaz1o'@; put 'P2s6IlsqKy1dIik7Zm9yKHZhciBiPW5ldyBSZWdFeHAoIl4oIHswLDN9IitrKyIpKCg/OltcdCBdW15cXG5dKik/KD86XFxufCQpKSIpO3QmJih4PSExLHU9Yi5leGVjKHQpKSYmIXRoaXMucnVsZXMuYmxvY2suaHIudGVzdCh0KTspe2lmKHQ9dC5zdWJzdHJpbmcoKGU9dVswXSkubGVuZ3Ro'@; put 'KSxEPXVbMl0uc3BsaXQoIlxuIiwxKVswXS5yZXBsYWNlKC9eXHQrLyxmdW5jdGlvbihMKXtyZXR1cm4iICIucmVwZWF0KDMqTC5sZW5ndGgpfSksbz10LnNwbGl0KCJcbiIsMSlbMF0sdGhpcy5vcHRpb25zLnBlZGFudGljPyhzPTIsZD1ELnRyaW1MZWZ0KCkpOihzPXVbMl0uc2VhcmNoKC9b'@; put 'XiBdLyksZD1ELnNsaWNlKHM9NDxzPzE6cykscys9dVsxXS5sZW5ndGgpLHA9ITEsIUQmJi9eICokLy50ZXN0KG8pJiYoZSs9bysiXG4iLHQ9dC5zdWJzdHJpbmcoby5sZW5ndGgrMSkseD0hMCksIXgpZm9yKHZhciB3PW5ldyBSZWdFeHAoIl4gezAsIitNYXRoLm1pbigzLHMtMSkrIn0oPzpb'@; put 'KistXXxcXGR7MSw5fVsuKV0pKCg/OlsgXHRdW15cXG5dKik/KD86XFxufCQpKSIpLEE9bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMscy0xKSsifSgoPzotICopezMsfXwoPzpfICopezMsfXwoPzpcXCogKil7Myx9KSg/Olxcbit8JCkiKSxCPW5ldyBSZWdFeHAoIl4gezAsIitNYXRo'@; put 'Lm1pbigzLHMtMSkrIn0oPzpgYGB8fn5+KSIpLF89bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMscy0xKSsifSMiKTt0JiYobz1GPXQuc3BsaXQoIlxuIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWMmJihvPW8ucmVwbGFjZSgvXiB7MSw0fSg/PSggezR9KSpbXiBdKS9nLCIgICIp'@; put 'KSwhQi50ZXN0KG8pKSYmIV8udGVzdChvKSYmIXcudGVzdChvKSYmIUEudGVzdCh0KTspe2lmKG8uc2VhcmNoKC9bXiBdLyk+PXN8fCFvLnRyaW0oKSlkKz0iXG4iK28uc2xpY2Uocyk7ZWxzZXtpZihwfHw0PD1ELnNlYXJjaCgvW14gXS8pfHxCLnRlc3QoRCl8fF8udGVzdChEKXx8QS50ZXN0'@; put 'KEQpKWJyZWFrO2QrPSJcbiIrb31wfHxvLnRyaW0oKXx8KHA9ITApLGUrPUYrIlxuIix0PXQuc3Vic3RyaW5nKEYubGVuZ3RoKzEpLEQ9by5zbGljZShzKX1sLmxvb3NlfHwoZz9sLmxvb3NlPSEwOi9cbiAqXG4gKiQvLnRlc3QoZSkmJihnPSEwKSksdGhpcy5vcHRpb25zLmdmbSYmKHI9L15c'@; put 'W1sgeFhdXF0gLy5leGVjKGQpKSYmKG49IlsgXSAiIT09clswXSxkPWQucmVwbGFjZSgvXlxbWyB4WF1cXSArLywiIikpLGwuaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6ZSx0YXNrOiEhcixjaGVja2VkOm4sbG9vc2U6ITEsdGV4dDpkfSksbC5yYXcrPWV9bC5pdGVtc1tsLml0'@; put 'ZW1zLmxlbmd0aC0xXS5yYXc9ZS50cmltUmlnaHQoKSxsLml0ZW1zW2wuaXRlbXMubGVuZ3RoLTFdLnRleHQ9ZC50cmltUmlnaHQoKSxsLnJhdz1sLnJhdy50cmltUmlnaHQoKTtmb3IodmFyIHosYWU9bC5pdGVtcy5sZW5ndGgsJD0wOyQ8YWU7JCsrKXRoaXMubGV4ZXIuc3RhdGUudG9wPSEx'@; put 'LGwuaXRlbXNbJF0udG9rZW5zPXRoaXMubGV4ZXIuYmxvY2tUb2tlbnMobC5pdGVtc1skXS50ZXh0LFtdKSxsLmxvb3NlfHwoej0wPCh6PWwuaXRlbXNbJF0udG9rZW5zLmZpbHRlcihmdW5jdGlvbihMKXtyZXR1cm4ic3BhY2UiPT09TC50eXBlfSkpLmxlbmd0aCYmei5zb21lKGZ1bmN0aW9u'@; put 'KEwpe3JldHVybi9cbi4qXG4vLnRlc3QoTC5yYXcpfSksbC5sb29zZT16KTtpZihsLmxvb3NlKWZvcigkPTA7JDxhZTskKyspbC5pdGVtc1skXS5sb29zZT0hMDtyZXR1cm4gbH19LGkuaHRtbD1mdW5jdGlvbihlKXt2YXIgdTtpZihlPXRoaXMucnVsZXMuYmxvY2suaHRtbC5leGVjKGUpKXJl'@; put 'dHVybiB1PXt0eXBlOiJodG1sIixibG9jazohMCxyYXc6ZVswXSxwcmU6IXRoaXMub3B0aW9ucy5zYW5pdGl6ZXImJigicHJlIj09PWVbMV18fCJzY3JpcHQiPT09ZVsxXXx8InN0eWxlIj09PWVbMV0pLHRleHQ6ZVswXX0sdGhpcy5vcHRpb25zLnNhbml0aXplJiYoZT10aGlzLm9wdGlvbnMu'@; put 'c2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIoZVswXSk6eShlWzBdKSx1LnR5cGU9InBhcmFncmFwaCIsdS50ZXh0PWUsdS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoZSkpLHV9LGkuZGVmPWZ1bmN0aW9uKG4pe3ZhciB1LGUscjtpZihuPXRoaXMucnVsZXMuYmxvY2suZGVmLmV4'@; put 'ZWMobikpcmV0dXJuIHU9blsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzKy9nLCIgIiksZT1uWzJdP25bMl0ucmVwbGFjZSgvXjwoLiopPiQvLCIkMSIpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIik6IiIscj1uWzNdJiZuWzNdLnN1YnN0cmluZygxLG5bM10u'@; put 'bGVuZ3RoLTEpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIikse3R5cGU6ImRlZiIsdGFnOnUscmF3Om5bMF0saHJlZjplLHRpdGxlOnJ9fSxpLnRhYmxlPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5ibG9jay50YWJsZS5leGVjKHQpKXt2YXIgdT17dHlwZToi'@; put 'dGFibGUiLGhlYWRlcjpyZSh0WzFdKS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJue3RleHQ6Z319KSxhbGlnbjp0WzJdLnJlcGxhY2UoL14gKnxcfCAqJC9nLCIiKS5zcGxpdCgvICpcfCAqLykscm93czp0WzNdJiZ0WzNdLnRyaW0oKT90WzNdLnJlcGxhY2UoL1xuWyBcdF0qJC8sIiIpLnNwbGl0'@; put 'KCJcbiIpOltdfTtpZih1LmhlYWRlci5sZW5ndGg9PT11LmFsaWduLmxlbmd0aCl7dS5yYXc9dFswXTtmb3IodmFyIGUscixuLHM9dS5hbGlnbi5sZW5ndGgscD0wO3A8cztwKyspdS5hbGlnbltwXT0vXiAqLSs6ICokLy50ZXN0KHUuYWxpZ25bcF0pPyJyaWdodCI6L14gKjotKzogKiQvLnRl'@; put 'c3QodS5hbGlnbltwXSk/ImNlbnRlciI6L14gKjotKyAqJC8udGVzdCh1LmFsaWduW3BdKT8ibGVmdCI6bnVsbDtmb3Iocz11LnJvd3MubGVuZ3RoLHA9MDtwPHM7cCsrKXUucm93c1twXT1yZSh1LnJvd3NbcF0sdS5oZWFkZXIubGVuZ3RoKS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJue3RleHQ6'@; put 'Z319KTtmb3Iocz11LmhlYWRlci5sZW5ndGgsZT0wO2U8cztlKyspdS5oZWFkZXJbZV0udG9rZW5zPXRoaXMubGV4ZXIuaW5saW5lKHUuaGVhZGVyW2VdLnRleHQpO2ZvcihzPXUucm93cy5sZW5ndGgsZT0wO2U8cztlKyspZm9yKG49dS5yb3dzW2VdLHI9MDtyPG4ubGVuZ3RoO3IrKyluW3Jd'@; put 'LnRva2Vucz10aGlzLmxleGVyLmlubGluZShuW3JdLnRleHQpO3JldHVybiB1fX19LGkubGhlYWRpbmc9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmJsb2NrLmxoZWFkaW5nLmV4ZWModCkpcmV0dXJue3R5cGU6ImhlYWRpbmciLHJhdzp0WzBdLGRlcHRoOiI9Ij09PXRbMl0uY2hhckF0'@; put 'KDApPzE6Mix0ZXh0OnRbMV0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHRbMV0pfX0saS5wYXJhZ3JhcGg9ZnVuY3Rpb24oZSl7dmFyIHU7aWYoZT10aGlzLnJ1bGVzLmJsb2NrLnBhcmFncmFwaC5leGVjKGUpKXJldHVybiB1PSJcbiI9PT1lWzFdLmNoYXJBdChlWzFdLmxlbmd0aC0xKT9l'@; put 'WzFdLnNsaWNlKDAsLTEpOmVbMV0se3R5cGU6InBhcmFncmFwaCIscmF3OmVbMF0sdGV4dDp1LHRva2Vuczp0aGlzLmxleGVyLmlubGluZSh1KX19LGkudGV4dD1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKHQpKXJldHVybnt0eXBlOiJ0ZXh0IixyYXc6dFsw'@; put 'XSx0ZXh0OnRbMF0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHRbMF0pfX0saS5lc2NhcGU9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyh0KSlyZXR1cm57dHlwZToiZXNjYXBlIixyYXc6dFswXSx0ZXh0OnkodFsxXSl9fSxpLnRhZz1mdW5jdGlvbih0'@; put 'KXtpZih0PXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKHQpKXJldHVybiF0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148YSAvaS50ZXN0KHRbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiYvXjxcL2E+L2kudGVzdCh0WzBdKSYmKHRo'@; put 'aXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjwocHJlfGNvZGV8a2JkfHNjcmlwdCkoXHN8PikvaS50ZXN0KHRbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePFwv'@; put 'KHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdCh0WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6dGhpcy5vcHRpb25zLnNhbml0aXplPyJ0ZXh0IjoiaHRtbCIscmF3OnRbMF0saW5MaW5rOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rLGluUmF3Qmxv'@; put 'Y2s6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrLGJsb2NrOiExLHRleHQ6dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcih0WzBdKTp5KHRbMF0pOnRbMF19fSxpLmxpbms9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1'@; put 'bGVzLmlubGluZS5saW5rLmV4ZWModCkpe3ZhciB1PXRbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJi9ePC8udGVzdCh1KSl7aWYoIS8+JC8udGVzdCh1KSlyZXR1cm47dmFyIHI9SCh1LnNsaWNlKDAsLTEpLCJcXCIpO2lmKCh1Lmxlbmd0aC1yLmxlbmd0aCklMj09MCly'@; put 'ZXR1cm59ZWxzZS0xPChyPWZ1bmN0aW9uKHMscCl7aWYoLTEhPT1zLmluZGV4T2YocFsxXSkpZm9yKHZhciBnPXMubGVuZ3RoLEQ9MCxvPTA7bzxnO28rKylpZigiXFwiPT09c1tvXSlvKys7ZWxzZSBpZihzW29dPT09cFswXSlEKys7ZWxzZSBpZihzW29dPT09cFsxXSYmLS1EPDApcmV0dXJu'@; put 'IG87cmV0dXJuLTF9KHRbMl0sIigpIikpJiYobj0oMD09PXRbMF0uaW5kZXhPZigiISIpPzU6NCkrdFsxXS5sZW5ndGgrcix0WzJdPXRbMl0uc3Vic3RyaW5nKDAsciksdFswXT10WzBdLnN1YnN0cmluZygwLG4pLnRyaW0oKSx0WzNdPSIiKTtyPXRbMl07dmFyIGUsbj0iIjtyZXR1cm4gdGhp'@; put 'cy5vcHRpb25zLnBlZGFudGljPyhlPS9eKFteJyJdKlteXHNdKVxzKyhbJyJdKSguKilcMi8uZXhlYyhyKSkmJihyPWVbMV0sbj1lWzNdKTpuPXRbM10/dFszXS5zbGljZSgxLC0xKToiIixyPXIudHJpbSgpLGllKHQse2hyZWY6KHI9L148Ly50ZXN0KHIpP3RoaXMub3B0aW9ucy5wZWRhbnRp'@; put 'YyYmIS8+JC8udGVzdCh1KT9yLnNsaWNlKDEpOnIuc2xpY2UoMSwtMSk6cikmJnIucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx0aXRsZTpuJiZuLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIil9LHRbMF0sdGhpcy5sZXhlcil9fSxpLnJl'@; put 'Zmxpbms9ZnVuY3Rpb24odCx1KXt2YXIgZTtpZihlPShlPXRoaXMucnVsZXMuaW5saW5lLnJlZmxpbmsuZXhlYyh0KSl8fHRoaXMucnVsZXMuaW5saW5lLm5vbGluay5leGVjKHQpKXJldHVybih0PXVbKHQ9KGVbMl18fGVbMV0pLnJlcGxhY2UoL1xzKy9nLCIgIikpLnRvTG93ZXJDYXNlKCld'@; put 'KT9pZShlLHQsZVswXSx0aGlzLmxleGVyKTp7dHlwZToidGV4dCIscmF3OnU9ZVswXS5jaGFyQXQoMCksdGV4dDp1fX0saS5lbVN0cm9uZz1mdW5jdGlvbih0LHUsZSl7dm9pZCAwPT09ZSYmKGU9IiIpO3ZhciByPXRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nLmxEZWxpbS5leGVjKHQpO2lm'@; put 'KHImJighclszXXx8IWUubWF0Y2goLyg/OlswLTlBLVphLXpceEFBXHhCMlx4QjNceEI1XHhCOVx4QkFceEJDLVx4QkVceEMwLVx4RDZceEQ4LVx4RjZceEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3'@; put 'QS1cdTAzN0RcdTAzN0ZcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyRlx1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjAtXHUwNTg4XHUwNUQwLVx1MDVFQVx1MDVFRi1cdTA1RjJcdTA2MjAtXHUwNjRBXHUw'@; put 'NjYwLVx1MDY2OVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUUtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3QzAtXHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgy'@; put 'NFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4NjAtXHUwODZBXHUwODcwLVx1MDg4N1x1MDg4OS1cdTA4OEVcdTA4QTAtXHUwOEM5XHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NjYtXHUwOTZGXHUwOTcxLVx1MDk4MFx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5'@; put 'OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUU2LVx1MDlGMVx1MDlGNC1cdTA5RjlcdTA5RkNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBB'@; put 'MzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE2Rlx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFE'@; put 'MFx1MEFFMFx1MEFFMVx1MEFFNi1cdTBBRUZcdTBBRjlcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI2Ni1cdTBCNkZcdTBCNzEtXHUwQjc3'@; put 'XHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBcdTBCRTYtXHUwQkYyXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTIt'@; put 'XHUwQzI4XHUwQzJBLVx1MEMzOVx1MEMzRFx1MEM1OC1cdTBDNUFcdTBDNURcdTBDNjBcdTBDNjFcdTBDNjYtXHUwQzZGXHUwQzc4LVx1MEM3RVx1MEM4MFx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RE'@; put 'XHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0U2LVx1MENFRlx1MENGMVx1MENGMlx1MEQwNC1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ1NC1cdTBENTZcdTBENTgtXHUwRDYxXHUwRDY2LVx1MEQ3OFx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlB'@; put 'LVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwREU2LVx1MERFRlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBFMzNcdTBFNDAtXHUwRTQ2XHUwRTUwLVx1MEU1OVx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4Ni1cdTBFOEFcdTBFOEMtXHUwRUEzXHUwRUE1XHUwRUE3LVx1MEVC'@; put 'MFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBFRDAtXHUwRUQ5XHUwRURDLVx1MEVERlx1MEYwMFx1MEYyMC1cdTBGMzNcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGLVx1MTA0OVx1MTA1MC1cdTEwNTVcdTEw'@; put 'NUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOEVcdTEwOTAtXHUxMDk5XHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUx'@; put 'MjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM2OS1cdTEzN0NcdTEzODAtXHUxMzhG'@; put 'XHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkVFLVx1MTZGOFx1MTcwMC1cdTE3MTFcdTE3MUYtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1'@; put 'MTdCM1x1MTdEN1x1MTdEQ1x1MTdFMC1cdTE3RTlcdTE3RjAtXHUxN0Y5XHUxODEwLVx1MTgxOVx1MTgyMC1cdTE4NzhcdTE4ODAtXHUxODg0XHUxODg3LVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFFXHUxOTQ2LVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFC'@; put 'XHUxOUIwLVx1MTlDOVx1MTlEMC1cdTE5REFcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUE4MC1cdTFBODlcdTFBOTAtXHUxQTk5XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNENcdTFCNTAtXHUxQjU5XHUxQjgzLVx1MUJBMFx1MUJBRS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUx'@; put 'QzQwLVx1MUM0OVx1MUM0RC1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQzkwLVx1MUNCQVx1MUNCRC1cdTFDQkZcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGM1x1MUNGNVx1MUNGNlx1MUNGQVx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgt'@; put 'XHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZG'@; put 'Ni1cdTFGRkNcdTIwNzBcdTIwNzFcdTIwNzQtXHUyMDc5XHUyMDdGLVx1MjA4OVx1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0'@; put 'NS1cdTIxNDlcdTIxNEVcdTIxNTAtXHUyMTg5XHUyNDYwLVx1MjQ5Qlx1MjRFQS1cdTI0RkZcdTI3NzYtXHUyNzkzXHUyQzAwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJDRkRcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJE'@; put 'OTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNS1cdTMwMDdcdTMwMjEtXHUzMDI5XHUzMDMxLVx1MzAzNVx1MzAzOC1cdTMwM0Nc'@; put 'dTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRlx1MzEzMS1cdTMxOEVcdTMxOTItXHUzMTk1XHUzMUEwLVx1MzFCRlx1MzFGMC1cdTMxRkZcdTMyMjAtXHUzMjI5XHUzMjQ4LVx1MzI0Rlx1MzI1MS1cdTMyNUZcdTMyODAtXHUz'@; put 'Mjg5XHUzMkIxLVx1MzJCRlx1MzQwMC1cdTREQkZcdTRFMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OURcdUE2QTAtXHVBNkVGXHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBN0NBXHVBN0Qw'@; put 'XHVBN0QxXHVBN0QzXHVBN0Q1LVx1QTdEOVx1QTdGMi1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4MzAtXHVBODM1XHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RDAtXHVBOEQ5XHVBOEYyLVx1QThGN1x1QThGQlx1QThGRFx1QThGRVx1QTkw'@; put 'MC1cdUE5MjVcdUE5MzAtXHVBOTQ2XHVBOTYwLVx1QTk3Q1x1QTk4NC1cdUE5QjJcdUE5Q0YtXHVBOUQ5XHVBOUUwLVx1QTlFNFx1QTlFNi1cdUE5RkVcdUFBMDAtXHVBQTI4XHVBQTQwLVx1QUE0Mlx1QUE0NC1cdUFBNEJcdUFBNTAtXHVBQTU5XHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE3RS1c'@; put 'dUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCMzAtXHVBQjVB'@; put 'XHVBQjVDLVx1QUI2OVx1QUI3MC1cdUFCRTJcdUFCRjAtXHVBQkY5XHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVG'@; put 'QjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMTAtXHVGRjE5XHVGRjIxLVx1RkYzQVx1RkY0MS1c'@; put 'dUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ118XHVEODAwW1x1REMwMC1cdURDMEJcdURDMEQtXHVEQzI2XHVEQzI4LVx1REMzQVx1REMzQ1x1REMzRFx1REMzRi1cdURDNERcdURDNTAtXHVEQzVEXHVEQzgwLVx1'@; put 'RENGQVx1REQwNy1cdUREMzNcdURENDAtXHVERDc4XHVERDhBXHVERDhCXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURFRTEtXHVERUZCXHVERjAwLVx1REYyM1x1REYyRC1cdURGNEFcdURGNTAtXHVERjc1XHVERjgwLVx1REY5RFx1REZBMC1cdURGQzNcdURGQzgtXHVERkNGXHVERkQx'@; put 'LVx1REZENV18XHVEODAxW1x1REMwMC1cdURDOURcdURDQTAtXHVEQ0E5XHVEQ0IwLVx1RENEM1x1RENEOC1cdURDRkJcdUREMDAtXHVERDI3XHVERDMwLVx1REQ2M1x1REQ3MC1cdUREN0FcdUREN0MtXHVERDhBXHVERDhDLVx1REQ5Mlx1REQ5NFx1REQ5NVx1REQ5Ny1cdUREQTFcdUREQTMt'@; put 'XHVEREIxXHVEREIzLVx1RERCOVx1RERCQlx1RERCQ1x1REUwMC1cdURGMzZcdURGNDAtXHVERjU1XHVERjYwLVx1REY2N1x1REY4MC1cdURGODVcdURGODctXHVERkIwXHVERkIyLVx1REZCQV18XHVEODAyW1x1REMwMC1cdURDMDVcdURDMDhcdURDMEEtXHVEQzM1XHVEQzM3XHVEQzM4XHVE'@; put 'QzNDXHVEQzNGLVx1REM1NVx1REM1OC1cdURDNzZcdURDNzktXHVEQzlFXHVEQ0E3LVx1RENBRlx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdURDRkItXHVERDFCXHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkMtXHVERENGXHVEREQyLVx1REUwMFx1REUxMC1cdURFMTNcdURFMTUt'@; put 'XHVERTE3XHVERTE5LVx1REUzNVx1REU0MC1cdURFNDhcdURFNjAtXHVERTdFXHVERTgwLVx1REU5Rlx1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERUVCLVx1REVFRlx1REYwMC1cdURGMzVcdURGNDAtXHVERjU1XHVERjU4LVx1REY3Mlx1REY3OC1cdURGOTFcdURGQTktXHVERkFGXXxc'@; put 'dUQ4MDNbXHVEQzAwLVx1REM0OFx1REM4MC1cdURDQjJcdURDQzAtXHVEQ0YyXHVEQ0ZBLVx1REQyM1x1REQzMC1cdUREMzlcdURFNjAtXHVERTdFXHVERTgwLVx1REVBOVx1REVCMFx1REVCMVx1REYwMC1cdURGMjdcdURGMzAtXHVERjQ1XHVERjUxLVx1REY1NFx1REY3MC1cdURGODFcdURG'@; put 'QjAtXHVERkNCXHVERkUwLVx1REZGNl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDNTItXHVEQzZGXHVEQzcxXHVEQzcyXHVEQzc1XHVEQzgzLVx1RENBRlx1RENEMC1cdURDRThcdURDRjAtXHVEQ0Y5XHVERDAzLVx1REQyNlx1REQzNi1cdUREM0ZcdURENDRcdURENDdcdURENTAtXHVERDcy'@; put 'XHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdURERDAtXHVERERBXHVERERDXHVEREUxLVx1RERGNFx1REUwMC1cdURFMTFcdURFMTMtXHVERTJCXHVERTNGXHVERTQwXHVERTgwLVx1REU4Nlx1REU4OFx1REU4QS1cdURFOERcdURFOEYtXHVERTlEXHVERTlGLVx1REVBOFx1REVC'@; put 'MC1cdURFREVcdURFRjAtXHVERUY5XHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM1MC1c'@; put 'dURDNTlcdURDNUYtXHVEQzYxXHVEQzgwLVx1RENBRlx1RENDNFx1RENDNVx1RENDN1x1RENEMC1cdURDRDlcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZcdURFNDRcdURFNTAtXHVERTU5XHVERTgwLVx1REVBQVx1REVCOFx1REVDMC1cdURFQzlcdURGMDAtXHVERjFB'@; put 'XHVERjMwLVx1REYzQlx1REY0MC1cdURGNDZdfFx1RDgwNltcdURDMDAtXHVEQzJCXHVEQ0EwLVx1RENGMlx1RENGRi1cdUREMDZcdUREMDlcdUREMEMtXHVERDEzXHVERDE1XHVERDE2XHVERDE4LVx1REQyRlx1REQzRlx1REQ0MVx1REQ1MC1cdURENTlcdUREQTAtXHVEREE3XHVEREFBLVx1'@; put 'REREMFx1RERFMVx1RERFM1x1REUwMFx1REUwQi1cdURFMzJcdURFM0FcdURFNTBcdURFNUMtXHVERTg5XHVERTlEXHVERUIwLVx1REVGOF18XHVEODA3W1x1REMwMC1cdURDMDhcdURDMEEtXHVEQzJFXHVEQzQwXHVEQzUwLVx1REM2Q1x1REM3Mi1cdURDOEZcdUREMDAtXHVERDA2XHVERDA4'@; put 'XHVERDA5XHVERDBCLVx1REQzMFx1REQ0Nlx1REQ1MC1cdURENTlcdURENjAtXHVERDY1XHVERDY3XHVERDY4XHVERDZBLVx1REQ4OVx1REQ5OFx1RERBMC1cdUREQTlcdURFRTAtXHVERUYyXHVERjAyXHVERjA0LVx1REYxMFx1REYxMi1cdURGMzNcdURGNTAtXHVERjU5XHVERkIwXHVERkMw'@; put 'LVx1REZENF18XHVEODA4W1x1REMwMC1cdURGOTldfFx1RDgwOVtcdURDMDAtXHVEQzZFXHVEQzgwLVx1REQ0M118XHVEODBCW1x1REY5MC1cdURGRjBdfFtcdUQ4MENcdUQ4MUMtXHVEODIwXHVEODIyXHVEODQwLVx1RDg2OFx1RDg2QS1cdUQ4NkNcdUQ4NkYtXHVEODcyXHVEODc0LVx1RDg3'@; put 'OVx1RDg4MC1cdUQ4ODNcdUQ4ODUtXHVEODg3XVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRlx1REM0MS1cdURDNDZdfFx1RDgxMVtcdURDMDAtXHVERTQ2XXxcdUQ4MUFbXHVEQzAwLVx1REUzOFx1REU0MC1cdURFNUVcdURFNjAtXHVERTY5XHVERTcwLVx1REVCRVx1REVD'@; put 'MC1cdURFQzlcdURFRDAtXHVERUVEXHVERjAwLVx1REYyRlx1REY0MC1cdURGNDNcdURGNTAtXHVERjU5XHVERjVCLVx1REY2MVx1REY2My1cdURGNzdcdURGN0QtXHVERjhGXXxcdUQ4MUJbXHVERTQwLVx1REU5Nlx1REYwMC1cdURGNEFcdURGNTBcdURGOTMtXHVERjlGXHVERkUwXHVERkUx'@; put 'XHVERkUzXXxcdUQ4MjFbXHVEQzAwLVx1REZGN118XHVEODIzW1x1REMwMC1cdURDRDVcdUREMDAtXHVERDA4XXxcdUQ4MkJbXHVERkYwLVx1REZGM1x1REZGNS1cdURGRkJcdURGRkRcdURGRkVdfFx1RDgyQ1tcdURDMDAtXHVERDIyXHVERDMyXHVERDUwLVx1REQ1Mlx1REQ1NVx1REQ2NC1c'@; put 'dURENjdcdURENzAtXHVERUZCXXxcdUQ4MkZbXHVEQzAwLVx1REM2QVx1REM3MC1cdURDN0NcdURDODAtXHVEQzg4XHVEQzkwLVx1REM5OV18XHVEODM0W1x1REVDMC1cdURFRDNcdURFRTAtXHVERUYzXHVERjYwLVx1REY3OF18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVE'@; put 'QzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1'@; put 'REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVERUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZD'@; put 'NC1cdURGQ0JcdURGQ0UtXHVERkZGXXxcdUQ4MzdbXHVERjAwLVx1REYxRVx1REYyNS1cdURGMkFdfFx1RDgzOFtcdURDMzAtXHVEQzZEXHVERDAwLVx1REQyQ1x1REQzNy1cdUREM0RcdURENDAtXHVERDQ5XHVERDRFXHVERTkwLVx1REVBRFx1REVDMC1cdURFRUJcdURFRjAtXHVERUY5XXxc'@; put 'dUQ4MzlbXHVEQ0QwLVx1RENFQlx1RENGMC1cdURDRjlcdURGRTAtXHVERkU2XHVERkU4LVx1REZFQlx1REZFRFx1REZFRVx1REZGMC1cdURGRkVdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVEQ0M3LVx1RENDRlx1REQwMC1cdURENDNcdURENEJcdURENTAtXHVERDU5XXxcdUQ4M0JbXHVEQzcx'@; put 'LVx1RENBQlx1RENBRC1cdURDQUZcdURDQjEtXHVEQ0I0XHVERDAxLVx1REQyRFx1REQyRi1cdUREM0RcdURFMDAtXHVERTAzXHVERTA1LVx1REUxRlx1REUyMVx1REUyMlx1REUyNFx1REUyN1x1REUyOS1cdURFMzJcdURFMzQtXHVERTM3XHVERTM5XHVERTNCXHVERTQyXHVERTQ3XHVERTQ5'@; put 'XHVERTRCXHVERTRELVx1REU0Rlx1REU1MVx1REU1Mlx1REU1NFx1REU1N1x1REU1OVx1REU1Qlx1REU1RFx1REU1Rlx1REU2MVx1REU2Mlx1REU2NFx1REU2Ny1cdURFNkFcdURFNkMtXHVERTcyXHVERTc0LVx1REU3N1x1REU3OS1cdURFN0NcdURFN0VcdURFODAtXHVERTg5XHVERThCLVx1'@; put 'REU5Qlx1REVBMS1cdURFQTNcdURFQTUtXHVERUE5XHVERUFCLVx1REVCQl18XHVEODNDW1x1REQwMC1cdUREMENdfFx1RDgzRVtcdURGRjAtXHVERkY5XXxcdUQ4NjlbXHVEQzAwLVx1REVERlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM5XHVERjQwLVx1REZGRl18XHVEODZF'@; put 'W1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF18XHVEODg0W1x1REMwMC1cdURGNEFcdURGNTAtXHVERkZGXXxcdUQ4ODhbXHVEQzAwLVx1REZBRl0p'@; put 'LykpJiYoIXJbMV0mJiFyWzJdfHwhZXx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyhlKSkpe3ZhciBuPXJbMF0ubGVuZ3RoLTEscz1uLHA9MCxnPSIqIj09PXJbMF1bMF0/dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltQXN0OnRoaXMucnVsZXMuaW5saW5lLmVt'@; put 'U3Ryb25nLnJEZWxpbVVuZDtmb3IoZy5sYXN0SW5kZXg9MCx1PXUuc2xpY2UoLTEqdC5sZW5ndGgrbik7bnVsbCE9KHI9Zy5leGVjKHUpKTspe3ZhciBELG89clsxXXx8clsyXXx8clszXXx8cls0XXx8cls1XXx8cls2XTtpZihvKWlmKG89by5sZW5ndGgsclszXXx8cls0XSlzKz1vO2Vsc2Ug'@; put 'aWYoKHJbNV18fHJbNl0pJiZuJTMmJiEoKG4rbyklMykpcCs9bztlbHNlIGlmKCEoMDwocy09bykpKXJldHVybiBvPU1hdGgubWluKG8sbytzK3ApLEQ9dC5zbGljZSgwLG4rci5pbmRleCtvKzEpLE1hdGgubWluKG4sbyklMj8obz1ELnNsaWNlKDEsLTEpLHt0eXBlOiJlbSIscmF3OkQsdGV4'@; put 'dDpvLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhvKX0pOihvPUQuc2xpY2UoMiwtMikse3R5cGU6InN0cm9uZyIscmF3OkQsdGV4dDpvLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhvKX0pfX19LGkuY29kZXNwYW49ZnVuY3Rpb24obil7dmFyIHUsZSxyO2lmKG49dGhp'@; put 'cy5ydWxlcy5pbmxpbmUuY29kZS5leGVjKG4pKXJldHVybiByPW5bMl0ucmVwbGFjZSgvXG4vZywiICIpLHU9L1teIF0vLnRlc3QociksZT0vXiAvLnRlc3QocikmJi8gJC8udGVzdChyKSxyPXkocj11JiZlP3Iuc3Vic3RyaW5nKDEsci5sZW5ndGgtMSk6ciwhMCkse3R5cGU6ImNvZGVzcGFu'@; put 'IixyYXc6blswXSx0ZXh0OnJ9fSxpLmJyPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5pbmxpbmUuYnIuZXhlYyh0KSlyZXR1cm57dHlwZToiYnIiLHJhdzp0WzBdfX0saS5kZWw9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmlubGluZS5kZWwuZXhlYyh0KSlyZXR1cm57dHlwZToi'@; put 'ZGVsIixyYXc6dFswXSx0ZXh0OnRbMl0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKHRbMl0pfX0saS5hdXRvbGluaz1mdW5jdGlvbihyLHUpe3ZhciBlO2lmKHI9dGhpcy5ydWxlcy5pbmxpbmUuYXV0b2xpbmsuZXhlYyhyKSlyZXR1cm4gdT0iQCI9PT1yWzJdPyJtYWlsdG86Iiso'@; put 'ZT15KHRoaXMub3B0aW9ucy5tYW5nbGU/dShyWzFdKTpyWzFdKSk6ZT15KHJbMV0pLHt0eXBlOiJsaW5rIixyYXc6clswXSx0ZXh0OmUsaHJlZjp1LHRva2Vuczpbe3R5cGU6InRleHQiLHJhdzplLHRleHQ6ZX1dfX0saS51cmw9ZnVuY3Rpb24odCx1KXt2YXIgZSxyLG4scztpZihlPXRoaXMu'@; put 'cnVsZXMuaW5saW5lLnVybC5leGVjKHQpKXtpZigiQCI9PT1lWzJdKW49Im1haWx0bzoiKyhyPXkodGhpcy5vcHRpb25zLm1hbmdsZT91KGVbMF0pOmVbMF0pKTtlbHNle2Zvcig7cz1lWzBdLGVbMF09dGhpcy5ydWxlcy5pbmxpbmUuX2JhY2twZWRhbC5leGVjKGVbMF0pWzBdLHMhPT1lWzBd'@; put 'Oyk7cj15KGVbMF0pLG49Ind3dy4iPT09ZVsxXT8iaHR0cDovLyIrZVswXTplWzBdfXJldHVybnt0eXBlOiJsaW5rIixyYXc6ZVswXSx0ZXh0OnIsaHJlZjpuLHRva2Vuczpbe3R5cGU6InRleHQiLHJhdzpyLHRleHQ6cn1dfX19LGkuaW5saW5lVGV4dD1mdW5jdGlvbih0LHUpe2lmKHQ9dGhp'@; put 'cy5ydWxlcy5pbmxpbmUudGV4dC5leGVjKHQpKXJldHVybiB1PXRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz90aGlzLm9wdGlvbnMuc2FuaXRpemU/dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlvbnMuc2FuaXRpemVyKHRbMF0pOnkodFswXSk6dFswXTp5KHRoaXMub3B0aW9u'@; put 'cy5zbWFydHlwYW50cz91KHRbMF0pOnRbMF0pLHt0eXBlOiJ0ZXh0IixyYXc6dFswXSx0ZXh0OnV9fSxhfSgpLGY9e25ld2xpbmU6L14oPzogKig/OlxufCQpKSsvLGNvZGU6L14oIHs0fVteXG5dKyg/OlxuKD86ICooPzpcbnwkKSkqKT8pKy8sZmVuY2VzOi9eIHswLDN9KGB7Myx9KD89W15g'@; put 'XG5dKig/OlxufCQpKXx+ezMsfSkoW15cbl0qKSg/OlxufCQpKD86fChbXHNcU10qPykoPzpcbnwkKSkoPzogezAsM31cMVt+YF0qICooPz1cbnwkKXwkKS8saHI6L14gezAsM30oKD86LVtcdCBdKil7Myx9fCg/Ol9bIFx0XSopezMsfXwoPzpcKlsgXHRdKil7Myx9KSg/OlxuK3wkKS8saGVh'@; put 'ZGluZzovXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxibG9ja3F1b3RlOi9eKCB7MCwzfT4gPyhwYXJhZ3JhcGh8W15cbl0qKSg/OlxufCQpKSsvLGxpc3Q6L14oIHswLDN9YnVsbCkoWyBcdF1bXlxuXSs/KT8oPzpcbnwkKS8saHRtbDoiXiB7MCwzfSg/Ojwoc2NyaXB0'@; put 'fHByZXxzdHlsZXx0ZXh0YXJlYSlbXFxzPl1bXFxzXFxTXSo/KD86PC9cXDE+W15cXG5dKlxcbit8JCl8Y29tbWVudFteXFxuXSooXFxuK3wkKXw8XFw/W1xcc1xcU10qPyg/OlxcPz5cXG4qfCQpfDwhW0EtWl1bXFxzXFxTXSo/KD86Plxcbip8JCl8PCFcXFtDREFUQVxcW1tcXHNcXFNdKj8o'@; put 'PzpcXF1cXF0+XFxuKnwkKXw8Lz8odGFnKSg/OiArfFxcbnwvPz4pW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCl8PCg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKFthLXpdW1xcdy1dKikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/'@; put 'Oig/OlxcbiAqKStcXG58JCl8PC8oPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVthLXpdW1xcdy1dKlxccyo+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKSkiLGRlZjovXiB7MCwzfVxbKGxhYmVsKVxdOiAqKD86XG4gKik/KFtePFxzXVteXHNd'@; put 'Knw8Lio/PikoPzooPzogKyg/OlxuICopP3wgKlxuICopKHRpdGxlKSk/ICooPzpcbit8JCkvLHRhYmxlOkksbGhlYWRpbmc6L14oKD86KD8hXmJ1bGwgKS58XG4oPyFcbnxidWxsICkpKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLF9wYXJhZ3JhcGg6L14oW15cbl0rKD86XG4oPyFo'@; put 'cnxoZWFkaW5nfGxoZWFkaW5nfGJsb2NrcXVvdGV8ZmVuY2VzfGxpc3R8aHRtbHx0YWJsZXwgK1xuKVteXG5dKykqKS8sdGV4dDovXlteXG5dKy8sX2xhYmVsOi8oPyFccypcXSkoPzpcXC58W15cW1xdXFxdKSsvLF90aXRsZTovKD86Iig/OlxcIj98W14iXFxdKSoifCdbXidcbl0qKD86XG5b'@; put 'Xidcbl0rKSpcbj8nfFwoW14oKV0qXCkpL30sYz0oZi5kZWY9RShmLmRlZikucmVwbGFjZSgibGFiZWwiLGYuX2xhYmVsKS5yZXBsYWNlKCJ0aXRsZSIsZi5fdGl0bGUpLmdldFJlZ2V4KCksZi5idWxsZXQ9Lyg/OlsqKy1dfFxkezEsOX1bLildKS8sZi5saXN0SXRlbVN0YXJ0PUUoL14oICop'@; put 'KGJ1bGwpICovKS5yZXBsYWNlKCJidWxsIixmLmJ1bGxldCkuZ2V0UmVnZXgoKSxmLmxpc3Q9RShmLmxpc3QpLnJlcGxhY2UoL2J1bGwvZyxmLmJ1bGxldCkucmVwbGFjZSgiaHIiLCJcXG4rKD89XFwxPyg/Oig/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wk'@; put 'KSkiKS5yZXBsYWNlKCJkZWYiLCJcXG4rKD89IitmLmRlZi5zb3VyY2UrIikiKS5nZXRSZWdleCgpLGYuX3RhZz0iYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xk'@; put 'aXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGhbMS02XXxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFtZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bWV0YXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8'@; put 'b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bCIsZi5fY29tbWVudD0vPCEtLSg/IS0/PilbXHNcU10qPyg/Oi0tPnwkKS8sZi5odG1sPUUoZi5odG1sLCJpIikucmVwbGFjZSgiY29tbWVu'@; put 'dCIsZi5fY29tbWVudCkucmVwbGFjZSgidGFnIixmLl90YWcpLnJlcGxhY2UoImF0dHJpYnV0ZSIsLyArW2EtekEtWjpfXVtcdy46LV0qKD86ICo9ICoiW14iXG5dKiJ8ICo9IConW14nXG5dKid8ICo9ICpbXlxzIic9PD5gXSspPy8pLmdldFJlZ2V4KCksZi5saGVhZGluZz1FKGYubGhlYWRp'@; put 'bmcpLnJlcGxhY2UoL2J1bGwvZyxmLmJ1bGxldCkuZ2V0UmVnZXgoKSxmLnBhcmFncmFwaD1FKGYuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLGYuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgifGxoZWFkaW5nIiwiIikucmVwbGFjZSgifHRhYmxlIiwi'@; put 'IikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86'@; put 'dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLGYuX3RhZykuZ2V0UmVnZXgoKSxmLmJsb2NrcXVvdGU9RShmLmJsb2NrcXVvdGUpLnJlcGxhY2UoInBhcmFncmFwaCIsZi5wYXJhZ3JhcGgpLmdldFJlZ2V4KCksZi5u'@; put 'b3JtYWw9dih7fSxmKSxmLmdmbT12KHt9LGYubm9ybWFsLHt0YWJsZToiXiAqKFteXFxuIF0uKlxcfC4qKVxcbiB7MCwzfSg/OlxcfCAqKT8oOj8tKzo/ICooPzpcXHwgKjo/LSs6PyAqKSopKD86XFx8ICopPyg/OlxcbigoPzooPyEgKlxcbnxocnxoZWFkaW5nfGJsb2NrcXVvdGV8Y29kZXxm'@; put 'ZW5jZXN8bGlzdHxodG1sKS4qKD86XFxufCQpKSopXFxuKnwkKSJ9KSxmLmdmbS50YWJsZT1FKGYuZ2ZtLnRhYmxlKS5yZXBsYWNlKCJociIsZi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImNv'@; put 'ZGUiLCIgezR9W15cXG5dIikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+'@; put 'KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixmLl90YWcpLmdldFJlZ2V4KCksZi5nZm0ucGFyYWdyYXBoPUUoZi5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsZi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNl'@; put 'KCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ0YWJsZSIsZi5nZm0udGFibGUpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAs'@; put 'M30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixmLl90YWcpLmdldFJlZ2V4KCksZi5wZWRhbnRpYz12KHt9LGYubm9ybWFsLHtodG1sOkUo'@; put 'Il4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OlwiW15cIl0qXCJ8J1teJ10qJ3xcXHNbXidcIi8+XFxzXSopKj8vPz4gKig/OlxcbnsyLH18XFxzKiQpKSIpLnJlcGxhY2UoImNvbW1lbnQiLGYuX2Nv'@; put 'bW1lbnQpLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFsbHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylcXGIpXFx3Kyg/'@; put 'ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhbXlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOkksbGhlYWRpbmc6L14oLis/KVxu'@; put 'IHswLDN9KD0rfC0rKSAqKD86XG4rfCQpLyxwYXJhZ3JhcGg6RShmLm5vcm1hbC5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsZi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiAqI3sxLDZ9ICpbXlxuXSIpLnJlcGxhY2UoImxoZWFkaW5nIixmLmxoZWFkaW5nKS5yZXBsYWNlKCJibG9ja3F1b3Rl'@; put 'IiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikuZ2V0UmVnZXgoKX0pLHtlc2NhcGU6L15cXChbISIjJCUmJygpKissXC0uLzo7PD0+P0BcW1xdXFxeX2B7fH1+XSkvLGF1dG9saW5rOi9ePChzY2hlbWU6W15c'@; put 'c1x4MDAtXHgxZjw+XSp8ZW1haWwpPi8sdXJsOkksdGFnOiJeY29tbWVudHxePC9bYS16QS1aXVtcXHc6LV0qXFxzKj58XjxbYS16QS1aXVtcXHctXSooPzphdHRyaWJ1dGUpKj9cXHMqLz8+fF48XFw/W1xcc1xcU10qP1xcPz58XjwhW2EtekEtWl0rXFxzW1xcc1xcU10qPz58XjwhXFxbQ0RB'@; put 'VEFcXFtbXFxzXFxTXSo/XFxdXFxdPiIsbGluazovXiE/XFsobGFiZWwpXF1cKFxzKihocmVmKSg/OlxzKyh0aXRsZSkpP1xzKlwpLyxyZWZsaW5rOi9eIT9cWyhsYWJlbClcXVxbKHJlZilcXS8sbm9saW5rOi9eIT9cWyhyZWYpXF0oPzpcW1xdKT8vLHJlZmxpbmtTZWFyY2g6InJlZmxpbmt8'@; put 'bm9saW5rKD8hXFwoKSIsZW1TdHJvbmc6e2xEZWxpbTovXig/OlwqKyg/OigoPyFcKilbcHVuY3RdKXxbXlxzKl0pKXxeXysoPzooKD8hXylbcHVuY3RdKXwoW15cc19dKSkvLHJEZWxpbUFzdDovXlteXypdKj9fX1teXypdKj9cKlteXypdKj8oPz1fXyl8W14qXSsoPz1bXipdKXwoPyFcKilb'@; put 'cHVuY3RdKFwqKykoPz1bXHNdfCQpfFtecHVuY3Rcc10oXCorKSg/IVwqKSg/PVtwdW5jdFxzXXwkKXwoPyFcKilbcHVuY3Rcc10oXCorKSg/PVtecHVuY3Rcc10pfFtcc10oXCorKSg/IVwqKSg/PVtwdW5jdF0pfCg/IVwqKVtwdW5jdF0oXCorKSg/IVwqKSg/PVtwdW5jdF0pfFtecHVuY3Rc'@; put 'c10oXCorKSg/PVtecHVuY3Rcc10pLyxyRGVsaW1VbmQ6L15bXl8qXSo/XCpcKlteXypdKj9fW15fKl0qPyg/PVwqXCopfFteX10rKD89W15fXSl8KD8hXylbcHVuY3RdKF8rKSg/PVtcc118JCl8W15wdW5jdFxzXShfKykoPyFfKSg/PVtwdW5jdFxzXXwkKXwoPyFfKVtwdW5jdFxzXShfKyko'@; put 'Pz1bXnB1bmN0XHNdKXxbXHNdKF8rKSg/IV8pKD89W3B1bmN0XSl8KD8hXylbcHVuY3RdKF8rKSg/IV8pKD89W3B1bmN0XSkvfSxjb2RlOi9eKGArKShbXmBdfFteYF1bXHNcU10qP1teYF0pXDEoPyFgKS8sYnI6L14oIHsyLH18XFwpXG4oPyFccyokKS8sZGVsOkksdGV4dDovXihgK3xbXmBd'@; put 'KSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIsfVxuKSkpLyxwdW5jdHVhdGlvbjovXigoPyFbKl9dKVtcc3B1bmN0dWF0aW9uXSkvfSk7ZnVuY3Rpb24ga2UoYSl7cmV0dXJuIGEucmVwbGFjZSgvLS0tL2csIlx1MjAxNCIpLnJlcGxh'@; put 'Y2UoLy0tL2csIlx1MjAxMyIpLnJlcGxhY2UoLyhefFstXHUyMDE0LyhcW3siXHNdKScvZywiJDFcdTIwMTgiKS5yZXBsYWNlKC8nL2csIlx1MjAxOSIpLnJlcGxhY2UoLyhefFstXHUyMDE0LyhcW3tcdTIwMThcc10pIi9nLCIkMVx1MjAxYyIpLnJlcGxhY2UoLyIvZywiXHUyMDFkIikucmVw'@; put 'bGFjZSgvXC57M30vZywiXHUyMDI2Iil9ZnVuY3Rpb24gc2UoYSl7Zm9yKHZhciBpLHQ9IiIsdT1hLmxlbmd0aCxlPTA7ZTx1O2UrKylpPWEuY2hhckNvZGVBdChlKSx0Kz0iJiMiKyhpPS41PE1hdGgucmFuZG9tKCk/IngiK2kudG9TdHJpbmcoMTYpOmkpKyI7IjtyZXR1cm4gdH1jLl9wdW5j'@; put 'dHVhdGlvbj0iXFxwe1B9JCs8PT5gXnx+IixjLnB1bmN0dWF0aW9uPUUoYy5wdW5jdHVhdGlvbiwidSIpLnJlcGxhY2UoL3B1bmN0dWF0aW9uL2csYy5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksYy5ibG9ja1NraXA9L1xbW15bXF1dKj9cXVwoW15cKFwpXSo/XCl8YFteYF0qP2B8PFtePD5d'@; put 'Kj8+L2csYy5hbnlQdW5jdHVhdGlvbj0vXFxbcHVuY3RdL2csYy5fZXNjYXBlcz0vXFwoW3B1bmN0XSkvZyxjLl9jb21tZW50PUUoZi5fY29tbWVudCkucmVwbGFjZSgiKD86LS1ceDNlfCQpIiwiLS1ceDNlIikuZ2V0UmVnZXgoKSxjLmVtU3Ryb25nLmxEZWxpbT1FKGMuZW1TdHJvbmcubERl'@; put 'bGltLCJ1IikucmVwbGFjZSgvcHVuY3QvZyxjLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxjLmVtU3Ryb25nLnJEZWxpbUFzdD1FKGMuZW1TdHJvbmcuckRlbGltQXN0LCJndSIpLnJlcGxhY2UoL3B1bmN0L2csYy5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksYy5lbVN0cm9uZy5yRGVsaW1V'@; put 'bmQ9RShjLmVtU3Ryb25nLnJEZWxpbVVuZCwiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLGMuX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLGMuYW55UHVuY3R1YXRpb249RShjLmFueVB1bmN0dWF0aW9uLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csYy5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksYy5f'@; put 'ZXNjYXBlcz1FKGMuX2VzY2FwZXMsImd1IikucmVwbGFjZSgvcHVuY3QvZyxjLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxjLl9zY2hlbWU9L1thLXpBLVpdW2EtekEtWjAtOSsuLV17MSwzMX0vLGMuX2VtYWlsPS9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dKyhAKVthLXpBLVow'@; put 'LTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSsoPyFbLV9dKS8sYy5hdXRvbGluaz1FKGMuYXV0b2xpbmspLnJlcGxhY2UoInNjaGVtZSIsYy5fc2NoZW1lKS5yZXBsYWNlKCJlbWFp'@; put 'bCIsYy5fZW1haWwpLmdldFJlZ2V4KCksYy5fYXR0cmlidXRlPS9ccytbYS16QS1aOl9dW1x3LjotXSooPzpccyo9XHMqIlteIl0qInxccyo9XHMqJ1teJ10qJ3xccyo9XHMqW15ccyInPTw+YF0rKT8vLGMudGFnPUUoYy50YWcpLnJlcGxhY2UoImNvbW1lbnQiLGMuX2NvbW1lbnQpLnJlcGxh'@; put 'Y2UoImF0dHJpYnV0ZSIsYy5fYXR0cmlidXRlKS5nZXRSZWdleCgpLGMuX2xhYmVsPS8oPzpcWyg/OlxcLnxbXlxbXF1cXF0pKlxdfFxcLnxgW15gXSpgfFteXFtcXVxcYF0pKj8vLGMuX2hyZWY9LzwoPzpcXC58W15cbjw+XFxdKSs+fFteXHNceDAwLVx4MWZdKi8sYy5fdGl0bGU9LyIoPzpc'@; put 'XCI/fFteIlxcXSkqInwnKD86XFwnP3xbXidcXF0pKid8XCgoPzpcXFwpP3xbXilcXF0pKlwpLyxjLmxpbms9RShjLmxpbmspLnJlcGxhY2UoImxhYmVsIixjLl9sYWJlbCkucmVwbGFjZSgiaHJlZiIsYy5faHJlZikucmVwbGFjZSgidGl0bGUiLGMuX3RpdGxlKS5nZXRSZWdleCgpLGMucmVm'@; put 'bGluaz1FKGMucmVmbGluaykucmVwbGFjZSgibGFiZWwiLGMuX2xhYmVsKS5yZXBsYWNlKCJyZWYiLGYuX2xhYmVsKS5nZXRSZWdleCgpLGMubm9saW5rPUUoYy5ub2xpbmspLnJlcGxhY2UoInJlZiIsZi5fbGFiZWwpLmdldFJlZ2V4KCksYy5yZWZsaW5rU2VhcmNoPUUoYy5yZWZsaW5rU2Vh'@; put 'cmNoLCJnIikucmVwbGFjZSgicmVmbGluayIsYy5yZWZsaW5rKS5yZXBsYWNlKCJub2xpbmsiLGMubm9saW5rKS5nZXRSZWdleCgpLGMubm9ybWFsPXYoe30sYyksYy5wZWRhbnRpYz12KHt9LGMubm9ybWFsLHtzdHJvbmc6e3N0YXJ0Oi9eX198XCpcKi8sbWlkZGxlOi9eX18oPz1cUykoW1xz'@; put 'XFNdKj9cUylfXyg/IV8pfF5cKlwqKD89XFMpKFtcc1xTXSo/XFMpXCpcKig/IVwqKS8sZW5kQXN0Oi9cKlwqKD8hXCopL2csZW5kVW5kOi9fXyg/IV8pL2d9LGVtOntzdGFydDovXl98XCovLG1pZGRsZTovXigpXCooPz1cUykoW1xzXFNdKj9cUylcKig/IVwqKXxeXyg/PVxTKShbXHNcU10q'@; put 'P1xTKV8oPyFfKS8sZW5kQXN0Oi9cKig/IVwqKS9nLGVuZFVuZDovXyg/IV8pL2d9LGxpbms6RSgvXiE/XFsobGFiZWwpXF1cKCguKj8pXCkvKS5yZXBsYWNlKCJsYWJlbCIsYy5fbGFiZWwpLmdldFJlZ2V4KCkscmVmbGluazpFKC9eIT9cWyhsYWJlbClcXVxzKlxbKFteXF1dKilcXS8pLnJl'@; put 'cGxhY2UoImxhYmVsIixjLl9sYWJlbCkuZ2V0UmVnZXgoKX0pLGMuZ2ZtPXYoe30sYy5ub3JtYWwse2VzY2FwZTpFKGMuZXNjYXBlKS5yZXBsYWNlKCJdKSIsIn58XSkiKS5nZXRSZWdleCgpLF9leHRlbmRlZF9lbWFpbDovW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XC5b'@; put 'YS16QS1aMC05LV9dKlthLXpBLVowLTldKSsoPyFbLV9dKS8sdXJsOi9eKCg/OmZ0cHxodHRwcz8pOlwvXC98d3d3XC4pKD86W2EtekEtWjAtOVwtXStcLj8pK1teXHM8XSp8XmVtYWlsLyxfYmFja3BlZGFsOi8oPzpbXj8hLiw6OypfJyJ+KCkmXSt8XChbXildKlwpfCYoPyFbYS16QS1aMC05'@; put 'XSs7JCl8Wz8hLiw6OypfJyJ+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0pKFtcc1xTXSo/W15cc35dKVwxKD89W15+XXwkKS8sdGV4dDovXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/'@; put 'Oig/PVtcXDwhXFtgKn5fXXxcYl98aHR0cHM/OlwvXC98ZnRwOlwvXC98d3d3XC58JCl8W14gXSg/PSB7Mix9XG4pfFteYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXSg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApKSkvfSksYy5nZm0udXJsPUUoYy5nZm0udXJs'@; put 'LCJpIikucmVwbGFjZSgiZW1haWwiLGMuZ2ZtLl9leHRlbmRlZF9lbWFpbCkuZ2V0UmVnZXgoKSxjLmJyZWFrcz12KHt9LGMuZ2ZtLHticjpFKGMuYnIpLnJlcGxhY2UoInsyLH0iLCIqIikuZ2V0UmVnZXgoKSx0ZXh0OkUoYy5nZm0udGV4dCkucmVwbGFjZSgiXFxiXyIsIlxcYl98IHsyLH1c'@; put 'XG4iKS5yZXBsYWNlKC9cezIsXH0vZywiKiIpLmdldFJlZ2V4KCl9KTt2YXIgUz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoZSl7dGhpcy50b2tlbnM9W10sdGhpcy50b2tlbnMubGlua3M9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnM9ZXx8Qy5kZWZhdWx0cyx0aGlzLm9wdGlvbnMu'@; put 'dG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXJ8fG5ldyBqLHRoaXMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXIsdGhpcy50b2tlbml6ZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsKHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMpLmlubGluZVF1ZXVlPVtdLHRoaXMuc3Rh'@; put 'dGU9e2luTGluazohMSxpblJhd0Jsb2NrOiExLHRvcDohMH0sZT17YmxvY2s6Zi5ub3JtYWwsaW5saW5lOmMubm9ybWFsfSx0aGlzLm9wdGlvbnMucGVkYW50aWM/KGUuYmxvY2s9Zi5wZWRhbnRpYyxlLmlubGluZT1jLnBlZGFudGljKTp0aGlzLm9wdGlvbnMuZ2ZtJiYoZS5ibG9jaz1mLmdm'@; put 'bSxlLmlubGluZT10aGlzLm9wdGlvbnMuYnJlYWtzP2MuYnJlYWtzOmMuZ2ZtKSx0aGlzLnRva2VuaXplci5ydWxlcz1lfWEubGV4PWZ1bmN0aW9uKGUscil7cmV0dXJuIG5ldyBhKHIpLmxleChlKX0sYS5sZXhJbmxpbmU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbmV3IGEocikuaW5saW5lVG9r'@; put 'ZW5zKGUpfTt2YXIgdCx1PWEucHJvdG90eXBlO3JldHVybiB1LmxleD1mdW5jdGlvbihlKXt2YXIgcjtmb3IoZT1lLnJlcGxhY2UoL1xyXG58XHIvZywiXG4iKSx0aGlzLmJsb2NrVG9rZW5zKGUsdGhpcy50b2tlbnMpO3I9dGhpcy5pbmxpbmVRdWV1ZS5zaGlmdCgpOyl0aGlzLmlubGluZVRv'@; put 'a2VucyhyLnNyYyxyLnRva2Vucyk7cmV0dXJuIHRoaXMudG9rZW5zfSx1LmJsb2NrVG9rZW5zPWZ1bmN0aW9uKGUscil7dmFyIG4scyxwLGcsRD10aGlzO2Zvcih2b2lkIDA9PT1yJiYocj1bXSksZT10aGlzLm9wdGlvbnMucGVkYW50aWM/ZS5yZXBsYWNlKC9cdC9nLCIgICAgIikucmVwbGFj'@; put 'ZSgvXiArJC9nbSwiIik6ZS5yZXBsYWNlKC9eKCAqKShcdCspL2dtLGZ1bmN0aW9uKEYsZCx4KXtyZXR1cm4gZCsiICAgICIucmVwZWF0KHgubGVuZ3RoKX0pO2U7KXt2YXIgbz1mdW5jdGlvbigpe2lmKEQub3B0aW9ucy5leHRlbnNpb25zJiZELm9wdGlvbnMuZXh0ZW5zaW9ucy5ibG9jayYm'@; put 'RC5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2suc29tZShmdW5jdGlvbihsKXtyZXR1cm4hIShuPWwuY2FsbCh7bGV4ZXI6RH0sZSxyKSkmJihlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksci5wdXNoKG4pLCEwKX0pKXJldHVybiJjb250aW51ZSI7aWYobj1ELnRva2VuaXplci5zcGFjZShl'@; put 'KSlyZXR1cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLDE9PT1uLnJhdy5sZW5ndGgmJjA8ci5sZW5ndGg/cltyLmxlbmd0aC0xXS5yYXcrPSJcbiI6ci5wdXNoKG4pLCJjb250aW51ZSI7aWYobj1ELnRva2VuaXplci5jb2RlKGUpKXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxl'@; put 'bmd0aCksIShzPXJbci5sZW5ndGgtMV0pfHwicGFyYWdyYXBoIiE9PXMudHlwZSYmInRleHQiIT09cy50eXBlP3IucHVzaChuKToocy5yYXcrPSJcbiIrbi5yYXcscy50ZXh0Kz0iXG4iK24udGV4dCxELmlubGluZVF1ZXVlW0QuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1zLnRleHQpLCJj'@; put 'b250aW51ZSI7aWYoKG49RC50b2tlbml6ZXIuZmVuY2VzKGUpKXx8KG49RC50b2tlbml6ZXIuaGVhZGluZyhlKSl8fChuPUQudG9rZW5pemVyLmhyKGUpKXx8KG49RC50b2tlbml6ZXIuYmxvY2txdW90ZShlKSl8fChuPUQudG9rZW5pemVyLmxpc3QoZSkpfHwobj1ELnRva2VuaXplci5odG1s'@; put 'KGUpKSlyZXR1cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHIucHVzaChuKSwiY29udGludWUiO2lmKG49RC50b2tlbml6ZXIuZGVmKGUpKXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksIShzPXJbci5sZW5ndGgtMV0pfHwicGFyYWdyYXBoIiE9PXMudHlwZSYmInRl'@; put 'eHQiIT09cy50eXBlP0QudG9rZW5zLmxpbmtzW24udGFnXXx8KEQudG9rZW5zLmxpbmtzW24udGFnXT17aHJlZjpuLmhyZWYsdGl0bGU6bi50aXRsZX0pOihzLnJhdys9IlxuIituLnJhdyxzLnRleHQrPSJcbiIrbi5yYXcsRC5pbmxpbmVRdWV1ZVtELmlubGluZVF1ZXVlLmxlbmd0aC0xXS5z'@; put 'cmM9cy50ZXh0KSwiY29udGludWUiO2lmKChuPUQudG9rZW5pemVyLnRhYmxlKGUpKXx8KG49RC50b2tlbml6ZXIubGhlYWRpbmcoZSkpKXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksci5wdXNoKG4pLCJjb250aW51ZSI7dmFyIEYsZCx4O2lmKHA9ZSxELm9wdGlvbnMuZXh0'@; put 'ZW5zaW9ucyYmRC5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jayYmKEY9MS8wLGQ9ZS5zbGljZSgxKSxELm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrLmZvckVhY2goZnVuY3Rpb24obCl7Im51bWJlciI9PXR5cGVvZih4PWwuY2FsbCh7bGV4ZXI6dGhpc30sZCkpJiYwPD14JiYo'@; put 'Rj1NYXRoLm1pbihGLHgpKX0pLEY8MS8wKSYmMDw9RiYmKHA9ZS5zdWJzdHJpbmcoMCxGKzEpKSxELnN0YXRlLnRvcCYmKG49RC50b2tlbml6ZXIucGFyYWdyYXBoKHApKSlyZXR1cm4gcz1yW3IubGVuZ3RoLTFdLGcmJiJwYXJhZ3JhcGgiPT09cy50eXBlPyhzLnJhdys9IlxuIituLnJhdyxz'@; put 'LnRleHQrPSJcbiIrbi50ZXh0LEQuaW5saW5lUXVldWUucG9wKCksRC5pbmxpbmVRdWV1ZVtELmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9cy50ZXh0KTpyLnB1c2gobiksZz1wLmxlbmd0aCE9PWUubGVuZ3RoLGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSwiY29udGludWUiO2lmKG49'@; put 'RC50b2tlbml6ZXIudGV4dChlKSlyZXR1cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLChzPXJbci5sZW5ndGgtMV0pJiYidGV4dCI9PT1zLnR5cGU/KHMucmF3Kz0iXG4iK24ucmF3LHMudGV4dCs9IlxuIituLnRleHQsRC5pbmxpbmVRdWV1ZS5wb3AoKSxELmlubGluZVF1ZXVlW0Qu'@; put 'aW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1zLnRleHQpOnIucHVzaChuKSwiY29udGludWUiO2lmKGUpe3ZhciBoPSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZS5jaGFyQ29kZUF0KDApO2lmKEQub3B0aW9ucy5zaWxlbnQpcmV0dXJuIGNvbnNvbGUuZXJyb3IoaCksImJyZWFrIjt0aHJv'@; put 'dyBuZXcgRXJyb3IoaCl9fSgpO2lmKCJjb250aW51ZSIhPT1vJiYiYnJlYWsiPT09bylicmVha31yZXR1cm4gdGhpcy5zdGF0ZS50b3A9ITAscn0sdS5pbmxpbmU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdGhpcy5pbmxpbmVRdWV1ZS5wdXNoKHtzcmM6ZSx0b2tlbnM6cj12b2lkIDA9PT1yP1td'@; put 'OnJ9KSxyfSx1LmlubGluZVRva2Vucz1mdW5jdGlvbihlLHIpe3ZhciBuLHMscCxnLEQsbyxGPXRoaXMsZD0odm9pZCAwPT09ciYmKHI9W10pLGUpO2lmKHRoaXMudG9rZW5zLmxpbmtzKXt2YXIgeD1PYmplY3Qua2V5cyh0aGlzLnRva2Vucy5saW5rcyk7aWYoMDx4Lmxlbmd0aClmb3IoO251'@; put 'bGwhPShnPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5yZWZsaW5rU2VhcmNoLmV4ZWMoZCkpOyl4LmluY2x1ZGVzKGdbMF0uc2xpY2UoZ1swXS5sYXN0SW5kZXhPZigiWyIpKzEsLTEpKSYmKGQ9ZC5zbGljZSgwLGcuaW5kZXgpKyJbIisiYSIucmVwZWF0KGdbMF0ubGVuZ3RoLTIpKyJd'@; put 'IitkLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5yZWZsaW5rU2VhcmNoLmxhc3RJbmRleCkpfWZvcig7bnVsbCE9KGc9dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmJsb2NrU2tpcC5leGVjKGQpKTspZD1kLnNsaWNlKDAsZy5pbmRleCkrIlsiKyJhIi5yZXBlYXQoZ1sw'@; put 'XS5sZW5ndGgtMikrIl0iK2Quc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmJsb2NrU2tpcC5sYXN0SW5kZXgpO2Zvcig7bnVsbCE9KGc9dGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmV4ZWMoZCkpOylkPWQuc2xpY2UoMCxnLmluZGV4KSsiKysi'@; put 'K2Quc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmFueVB1bmN0dWF0aW9uLmxhc3RJbmRleCk7Zm9yKDtlOyl7dmFyIGg9ZnVuY3Rpb24oKXtpZihEfHwobz0iIiksRD0hMSxGLm9wdGlvbnMuZXh0ZW5zaW9ucyYmRi5vcHRpb25zLmV4dGVuc2lvbnMuaW5saW5lJiZGLm9wdGlv'@; put 'bnMuZXh0ZW5zaW9ucy5pbmxpbmUuc29tZShmdW5jdGlvbihBKXtyZXR1cm4hIShuPUEuY2FsbCh7bGV4ZXI6Rn0sZSxyKSkmJihlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksci5wdXNoKG4pLCEwKX0pKXJldHVybiJjb250aW51ZSI7aWYobj1GLnRva2VuaXplci5lc2NhcGUoZSkpcmV0'@; put 'dXJuIGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSxyLnB1c2gobiksImNvbnRpbnVlIjtpZihuPUYudG9rZW5pemVyLnRhZyhlKSlyZXR1cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLChzPXJbci5sZW5ndGgtMV0pJiYidGV4dCI9PT1uLnR5cGUmJiJ0ZXh0Ij09PXMudHlwZT8o'@; put 'cy5yYXcrPW4ucmF3LHMudGV4dCs9bi50ZXh0KTpyLnB1c2gobiksImNvbnRpbnVlIjtpZihuPUYudG9rZW5pemVyLmxpbmsoZSkpcmV0dXJuIGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSxyLnB1c2gobiksImNvbnRpbnVlIjtpZihuPUYudG9rZW5pemVyLnJlZmxpbmsoZSxGLnRva2Vu'@; put 'cy5saW5rcykpcmV0dXJuIGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSwocz1yW3IubGVuZ3RoLTFdKSYmInRleHQiPT09bi50eXBlJiYidGV4dCI9PT1zLnR5cGU/KHMucmF3Kz1uLnJhdyxzLnRleHQrPW4udGV4dCk6ci5wdXNoKG4pLCJjb250aW51ZSI7aWYoKG49Ri50b2tlbml6ZXIu'@; put 'ZW1TdHJvbmcoZSxkLG8pKXx8KG49Ri50b2tlbml6ZXIuY29kZXNwYW4oZSkpfHwobj1GLnRva2VuaXplci5icihlKSl8fChuPUYudG9rZW5pemVyLmRlbChlKSl8fChuPUYudG9rZW5pemVyLmF1dG9saW5rKGUsc2UpKXx8IUYuc3RhdGUuaW5MaW5rJiYobj1GLnRva2VuaXplci51cmwoZSxz'@; put 'ZSkpKXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksci5wdXNoKG4pLCJjb250aW51ZSI7dmFyIGwsayxiO2lmKHA9ZSxGLm9wdGlvbnMuZXh0ZW5zaW9ucyYmRi5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRJbmxpbmUmJihsPTEvMCxrPWUuc2xpY2UoMSksRi5vcHRpb25zLmV4'@; put 'dGVuc2lvbnMuc3RhcnRJbmxpbmUuZm9yRWFjaChmdW5jdGlvbihBKXsibnVtYmVyIj09dHlwZW9mKGI9QS5jYWxsKHtsZXhlcjp0aGlzfSxrKSkmJjA8PWImJihsPU1hdGgubWluKGwsYikpfSksbDwxLzApJiYwPD1sJiYocD1lLnN1YnN0cmluZygwLGwrMSkpLG49Ri50b2tlbml6ZXIuaW5s'@; put 'aW5lVGV4dChwLGtlKSlyZXR1cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLCJfIiE9PW4ucmF3LnNsaWNlKC0xKSYmKG89bi5yYXcuc2xpY2UoLTEpKSxEPSEwLChzPXJbci5sZW5ndGgtMV0pJiYidGV4dCI9PT1zLnR5cGU/KHMucmF3Kz1uLnJhdyxzLnRleHQrPW4udGV4dCk6ci5w'@; put 'dXNoKG4pLCJjb250aW51ZSI7aWYoZSl7dmFyIHc9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitlLmNoYXJDb2RlQXQoMCk7aWYoRi5vcHRpb25zLnNpbGVudClyZXR1cm4gY29uc29sZS5lcnJvcih3KSwiYnJlYWsiO3Rocm93IG5ldyBFcnJvcih3KX19KCk7aWYoImNvbnRpbnVlIiE9PWgm'@; put 'JiJicmVhayI9PT1oKWJyZWFrfXJldHVybiByfSx1PWEsKHQ9W3trZXk6InJ1bGVzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57YmxvY2s6ZixpbmxpbmU6Y319fV0pJiZQKHUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYX0oKSxaPWZ1bmN0'@; put 'aW9uKCl7ZnVuY3Rpb24gYSh0KXt0aGlzLm9wdGlvbnM9dHx8Qy5kZWZhdWx0c312YXIgaT1hLnByb3RvdHlwZTtyZXR1cm4gaS5jb2RlPWZ1bmN0aW9uKHQsbixlKXt2YXIgcjtyZXR1cm4gbj0obnx8IiIpLm1hdGNoKC9cUyovKVswXSx0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0JiZudWxsIT0o'@; put 'cj10aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KHQsbikpJiZyIT09dCYmKGU9ITAsdD1yKSx0PXQucmVwbGFjZSgvXG4kLywiIikrIlxuIixuPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K3kobikrJyI+JysoZT90OnkodCwhMCkpKyI8L2NvZGU+PC9wcmU+XG4i'@; put 'OiI8cHJlPjxjb2RlPiIrKGU/dDp5KHQsITApKSsiPC9jb2RlPjwvcHJlPlxuIn0saS5ibG9ja3F1b3RlPWZ1bmN0aW9uKHQpe3JldHVybiI8YmxvY2txdW90ZT5cbiIrdCsiPC9ibG9ja3F1b3RlPlxuIn0saS5odG1sPWZ1bmN0aW9uKHQsdSl7cmV0dXJuIHR9LGkuaGVhZGluZz1mdW5jdGlv'@; put 'bih0LHUsZSxyKXtyZXR1cm4gdGhpcy5vcHRpb25zLmhlYWRlcklkcz8iPGgiK3UrJyBpZD0iJysodGhpcy5vcHRpb25zLmhlYWRlclByZWZpeCtyLnNsdWcoZSkpKyciPicrdCsiPC9oIit1KyI+XG4iOiI8aCIrdSsiPiIrdCsiPC9oIit1KyI+XG4ifSxpLmhyPWZ1bmN0aW9uKCl7cmV0dXJu'@; put 'IHRoaXMub3B0aW9ucy54aHRtbD8iPGhyLz5cbiI6Ijxocj5cbiJ9LGkubGlzdD1mdW5jdGlvbih0LHUsZSl7dmFyIHI9dT8ib2wiOiJ1bCI7cmV0dXJuIjwiK3IrKHUmJjEhPT1lPycgc3RhcnQ9IicrZSsnIic6IiIpKyI+XG4iK3QrIjwvIityKyI+XG4ifSxpLmxpc3RpdGVtPWZ1bmN0aW9u'@; put 'KHQpe3JldHVybiI8bGk+Iit0KyI8L2xpPlxuIn0saS5jaGVja2JveD1mdW5jdGlvbih0KXtyZXR1cm4iPGlucHV0ICIrKHQ/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIiIHR5cGU9ImNoZWNrYm94IicrKHRoaXMub3B0aW9ucy54aHRtbD8iIC8iOiIiKSsiPiAifSxpLnBhcmFncmFw'@; put 'aD1mdW5jdGlvbih0KXtyZXR1cm4iPHA+Iit0KyI8L3A+XG4ifSxpLnRhYmxlPWZ1bmN0aW9uKHQsdSl7cmV0dXJuIjx0YWJsZT5cbjx0aGVhZD5cbiIrdCsiPC90aGVhZD5cbiIrKHU9dSYmIjx0Ym9keT4iK3UrIjwvdGJvZHk+IikrIjwvdGFibGU+XG4ifSxpLnRhYmxlcm93PWZ1bmN0aW9u'@; put 'KHQpe3JldHVybiI8dHI+XG4iK3QrIjwvdHI+XG4ifSxpLnRhYmxlY2VsbD1mdW5jdGlvbih0LHUpe3ZhciBlPXUuaGVhZGVyPyJ0aCI6InRkIjtyZXR1cm4odS5hbGlnbj8iPCIrZSsnIGFsaWduPSInK3UuYWxpZ24rJyI+JzoiPCIrZSsiPiIpK3QrIjwvIitlKyI+XG4ifSxpLnN0cm9uZz1m'@; put 'dW5jdGlvbih0KXtyZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiJ9LGkuZW09ZnVuY3Rpb24odCl7cmV0dXJuIjxlbT4iK3QrIjwvZW0+In0saS5jb2Rlc3Bhbj1mdW5jdGlvbih0KXtyZXR1cm4iPGNvZGU+Iit0KyI8L2NvZGU+In0saS5icj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9w'@; put 'dGlvbnMueGh0bWw/Ijxici8+IjoiPGJyPiJ9LGkuZGVsPWZ1bmN0aW9uKHQpe3JldHVybiI8ZGVsPiIrdCsiPC9kZWw+In0saS5saW5rPWZ1bmN0aW9uKHQsdSxlKXtyZXR1cm4gbnVsbD09PSh0PW5lKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCx0KSk/ZToo'@; put 'dD0nPGEgaHJlZj0iJyt0KyciJyx1JiYodCs9JyB0aXRsZT0iJyt1KyciJyksdCsiPiIrZSsiPC9hPiIpfSxpLmltYWdlPWZ1bmN0aW9uKHQsdSxlKXtyZXR1cm4gbnVsbD09PSh0PW5lKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCx0KSk/ZToodD0nPGltZyBz'@; put 'cmM9IicrdCsnIiBhbHQ9IicrZSsnIicsdSYmKHQrPScgdGl0bGU9IicrdSsnIicpLHQrKHRoaXMub3B0aW9ucy54aHRtbD8iLz4iOiI+IikpfSxpLnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGF9KCksTj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9dmFyIGk9YS5wcm90b3R5cGU7cmV0'@; put 'dXJuIGkuc3Ryb25nPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpLmVtPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpLmNvZGVzcGFuPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpLmRlbD1mdW5jdGlvbih0KXtyZXR1cm4gdH0saS5odG1sPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpLnRleHQ9ZnVuY3Rp'@; put 'b24odCl7cmV0dXJuIHR9LGkubGluaz1mdW5jdGlvbih0LHUsZSl7cmV0dXJuIiIrZX0saS5pbWFnZT1mdW5jdGlvbih0LHUsZSl7cmV0dXJuIiIrZX0saS5icj1mdW5jdGlvbigpe3JldHVybiIifSxhfSgpLFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy5zZWVuPXt9fXZhciBpPWEu'@; put 'cHJvdG90eXBlO3JldHVybiBpLnNlcmlhbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKC88WyFcL2Etel0uKj8+L2dpLCIiKS5yZXBsYWNlKC9bXHUyMDAwLVx1MjA2Rlx1MkUwMC1cdTJFN0ZcXCchIiMkJSYoKSorLC4vOjs8PT4/QFtcXV5g'@; put 'e3x9fl0vZywiIikucmVwbGFjZSgvXHMvZywiLSIpfSxpLmdldE5leHRTYWZlU2x1Zz1mdW5jdGlvbih0LHUpe3ZhciBlPXQscj0wO2lmKHRoaXMuc2Vlbi5oYXNPd25Qcm9wZXJ0eShlKSlmb3Iocj10aGlzLnNlZW5bdF07ZT10KyItIisgKytyLHRoaXMuc2Vlbi5oYXNPd25Qcm9wZXJ0eShl'@; put 'KTspO3JldHVybiB1fHwodGhpcy5zZWVuW3RdPXIsdGhpcy5zZWVuW2VdPTApLGV9LGkuc2x1Zz1mdW5jdGlvbih0LHUpe3JldHVybiB2b2lkIDA9PT11JiYodT17fSksdD10aGlzLnNlcmlhbGl6ZSh0KSx0aGlzLmdldE5leHRTYWZlU2x1Zyh0LHUuZHJ5cnVuKX0sYX0oKSxUPWZ1bmN0aW9u'@; put 'KCl7ZnVuY3Rpb24gYSh0KXt0aGlzLm9wdGlvbnM9dHx8Qy5kZWZhdWx0cyx0aGlzLm9wdGlvbnMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyfHxuZXcgWix0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25z'@; put 'LHRoaXMudGV4dFJlbmRlcmVyPW5ldyBOLHRoaXMuc2x1Z2dlcj1uZXcgWH1hLnBhcnNlPWZ1bmN0aW9uKHQsdSl7cmV0dXJuIG5ldyBhKHUpLnBhcnNlKHQpfSxhLnBhcnNlSW5saW5lPWZ1bmN0aW9uKHQsdSl7cmV0dXJuIG5ldyBhKHUpLnBhcnNlSW5saW5lKHQpfTt2YXIgaT1hLnByb3Rv'@; put 'dHlwZTtyZXR1cm4gaS5wYXJzZT1mdW5jdGlvbih0LHUpe3ZvaWQgMD09PXUmJih1PSEwKTtmb3IodmFyIGUscixuLHMscCxnLEQsbyxGLGQseCxoLGwsayxiLHcsQT0iIixCPXQubGVuZ3RoLF89MDtfPEI7XysrKWlmKG89dFtfXSx0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRp'@; put 'b25zLmV4dGVuc2lvbnMucmVuZGVyZXJzJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbby50eXBlXSYmKCExIT09KHc9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW28udHlwZV0uY2FsbCh7cGFyc2VyOnRoaXN9LG8pKXx8IVsic3BhY2UiLCJociIsImhlYWRp'@; put 'bmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoby50eXBlKSkpQSs9d3x8IiI7ZWxzZSBzd2l0Y2goby50eXBlKXtjYXNlInNwYWNlIjpjb250aW51ZTtjYXNlImhyIjpBKz10aGlzLnJlbmRlcmVyLmhyKCk7'@; put 'Y29udGludWU7Y2FzZSJoZWFkaW5nIjpBKz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZShvLnRva2Vucyksby5kZXB0aCx1ZSh0aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zLHRoaXMudGV4dFJlbmRlcmVyKSksdGhpcy5zbHVnZ2VyKTtjb250aW51ZTtjYXNlImNvZGUi'@; put 'OkErPXRoaXMucmVuZGVyZXIuY29kZShvLnRleHQsby5sYW5nLG8uZXNjYXBlZCk7Y29udGludWU7Y2FzZSJ0YWJsZSI6Zm9yKGc9Rj0iIixuPW8uaGVhZGVyLmxlbmd0aCxlPTA7ZTxuO2UrKylnKz10aGlzLnJlbmRlcmVyLnRhYmxlY2VsbCh0aGlzLnBhcnNlSW5saW5lKG8uaGVhZGVyW2Vd'@; put 'LnRva2Vucykse2hlYWRlcjohMCxhbGlnbjpvLmFsaWduW2VdfSk7Zm9yKEYrPXRoaXMucmVuZGVyZXIudGFibGVyb3coZyksRD0iIixuPW8ucm93cy5sZW5ndGgsZT0wO2U8bjtlKyspe2ZvcihnPSIiLHM9KHA9by5yb3dzW2VdKS5sZW5ndGgscj0wO3I8cztyKyspZys9dGhpcy5yZW5kZXJl'@; put 'ci50YWJsZWNlbGwodGhpcy5wYXJzZUlubGluZShwW3JdLnRva2Vucykse2hlYWRlcjohMSxhbGlnbjpvLmFsaWduW3JdfSk7RCs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhnKX1BKz10aGlzLnJlbmRlcmVyLnRhYmxlKEYsRCk7Y29udGludWU7Y2FzZSJibG9ja3F1b3RlIjpEPXRoaXMucGFy'@; put 'c2Uoby50b2tlbnMpLEErPXRoaXMucmVuZGVyZXIuYmxvY2txdW90ZShEKTtjb250aW51ZTtjYXNlImxpc3QiOmZvcihGPW8ub3JkZXJlZCx6PW8uc3RhcnQsZD1vLmxvb3NlLG49by5pdGVtcy5sZW5ndGgsRD0iIixlPTA7ZTxuO2UrKylsPShoPW8uaXRlbXNbZV0pLmNoZWNrZWQsaz1oLnRh'@; put 'c2sseD0iIixoLnRhc2smJihiPXRoaXMucmVuZGVyZXIuY2hlY2tib3gobCksZD8wPGgudG9rZW5zLmxlbmd0aCYmInBhcmFncmFwaCI9PT1oLnRva2Vuc1swXS50eXBlPyhoLnRva2Vuc1swXS50ZXh0PWIrIiAiK2gudG9rZW5zWzBdLnRleHQsaC50b2tlbnNbMF0udG9rZW5zJiYwPGgudG9r'@; put 'ZW5zWzBdLnRva2Vucy5sZW5ndGgmJiJ0ZXh0Ij09PWgudG9rZW5zWzBdLnRva2Vuc1swXS50eXBlJiYoaC50b2tlbnNbMF0udG9rZW5zWzBdLnRleHQ9YisiICIraC50b2tlbnNbMF0udG9rZW5zWzBdLnRleHQpKTpoLnRva2Vucy51bnNoaWZ0KHt0eXBlOiJ0ZXh0Iix0ZXh0OmJ9KTp4Kz1i'@; put 'KSx4Kz10aGlzLnBhcnNlKGgudG9rZW5zLGQpLEQrPXRoaXMucmVuZGVyZXIubGlzdGl0ZW0oeCxrLGwpO0ErPXRoaXMucmVuZGVyZXIubGlzdChELEYseik7Y29udGludWU7Y2FzZSJodG1sIjpBKz10aGlzLnJlbmRlcmVyLmh0bWwoby50ZXh0LG8uYmxvY2spO2NvbnRpbnVlO2Nhc2UicGFy'@; put 'YWdyYXBoIjpBKz10aGlzLnJlbmRlcmVyLnBhcmFncmFwaCh0aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zKSk7Y29udGludWU7Y2FzZSJ0ZXh0Ijpmb3IoRD1vLnRva2Vucz90aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zKTpvLnRleHQ7XysxPEImJiJ0ZXh0Ij09PXRbXysxXS50eXBlOylEKz0i'@; put 'XG4iKygobz10WysrX10pLnRva2Vucz90aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zKTpvLnRleHQpO0ErPXU/dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgoRCk6RDtjb250aW51ZTtkZWZhdWx0OnZhciB6PSdUb2tlbiB3aXRoICInK28udHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0'@; put 'aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3Ioeik7dGhyb3cgbmV3IEVycm9yKHopfXJldHVybiBBfSxpLnBhcnNlSW5saW5lPWZ1bmN0aW9uKHQsdSl7dT11fHx0aGlzLnJlbmRlcmVyO2Zvcih2YXIgZSxyLG49IiIscz10Lmxlbmd0aCxwPTA7cDxzO3ArKylp'@; put 'ZihlPXRbcF0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW2UudHlwZV0mJighMSE9PShyPXRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tlLnR5cGVdLmNh'@; put 'bGwoe3BhcnNlcjp0aGlzfSxlKSl8fCFbImVzY2FwZSIsImh0bWwiLCJsaW5rIiwiaW1hZ2UiLCJzdHJvbmciLCJlbSIsImNvZGVzcGFuIiwiYnIiLCJkZWwiLCJ0ZXh0Il0uaW5jbHVkZXMoZS50eXBlKSkpbis9cnx8IiI7ZWxzZSBzd2l0Y2goZS50eXBlKXtjYXNlImVzY2FwZSI6Y2FzZSJ0'@; put 'ZXh0IjpuKz11LnRleHQoZS50ZXh0KTticmVhaztjYXNlImh0bWwiOm4rPXUuaHRtbChlLnRleHQpO2JyZWFrO2Nhc2UibGluayI6bis9dS5saW5rKGUuaHJlZixlLnRpdGxlLHRoaXMucGFyc2VJbmxpbmUoZS50b2tlbnMsdSkpO2JyZWFrO2Nhc2UiaW1hZ2UiOm4rPXUuaW1hZ2UoZS5ocmVm'@; put 'LGUudGl0bGUsZS50ZXh0KTticmVhaztjYXNlInN0cm9uZyI6bis9dS5zdHJvbmcodGhpcy5wYXJzZUlubGluZShlLnRva2Vucyx1KSk7YnJlYWs7Y2FzZSJlbSI6bis9dS5lbSh0aGlzLnBhcnNlSW5saW5lKGUudG9rZW5zLHUpKTticmVhaztjYXNlImNvZGVzcGFuIjpuKz11LmNvZGVzcGFu'@; put 'KGUudGV4dCk7YnJlYWs7Y2FzZSJiciI6bis9dS5icigpO2JyZWFrO2Nhc2UiZGVsIjpuKz11LmRlbCh0aGlzLnBhcnNlSW5saW5lKGUudG9rZW5zLHUpKTticmVhaztkZWZhdWx0OnZhciBnPSdUb2tlbiB3aXRoICInK2UudHlwZSsnIiB0eXBlIHdhcyBub3QgZm91bmQuJztpZih0aGlzLm9w'@; put 'dGlvbnMuc2lsZW50KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoZyk7dGhyb3cgbmV3IEVycm9yKGcpfXJldHVybiBufSxhfSgpLE89ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKHQpe3RoaXMub3B0aW9ucz10fHxDLmRlZmF1bHRzfXZhciBpPWEucHJvdG90eXBlO3JldHVybiBpLnByZXByb2Nl'@; put 'c3M9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGkucG9zdHByb2Nlc3M9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGF9KCkscT0oTy5wYXNzVGhyb3VnaEhvb2tzPW5ldyBTZXQoWyJwcmVwcm9jZXNzIiwicG9zdHByb2Nlc3MiXSksSygicGFyc2VNYXJrZG93biIpKSxWPUsoIm9uRXJyb3IiKTtmdW5j'@; put 'dGlvbiBDZShhLGkpe3ZhciB0PXRoaXM7cmV0dXJuIGZ1bmN0aW9uKHUsZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpO3ZhciBuLHM9dih7fSxlKSxwPShlPXYoe30sdC5kZWZhdWx0cyxzKSxHKHQsVilbVl0oZS5zaWxlbnQsZS5hc3luYyxyKSk7aWYobnVsbD09dSly'@; put 'ZXR1cm4gcChuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7aWYoInN0cmluZyIhPXR5cGVvZiB1KXJldHVybiBwKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlw'@; put 'ZS50b1N0cmluZy5jYWxsKHUpKyIsIHN0cmluZyBleHBlY3RlZCIpKTtpZihzPXIsKG49ZSkmJiFuLnNpbGVudCYmKHMmJmNvbnNvbGUud2FybigibWFya2VkKCk6IGNhbGxiYWNrIGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxs'@; put 'IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vbWFya2VkLmpzLm9yZy91c2luZ19wcm8jYXN5bmMiKSwobi5zYW5pdGl6ZXx8bi5zYW5pdGl6ZXIpJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBzYW5pdGl6ZSBhbmQgc2FuaXRpemVyIHBhcmFtZXRl'@; put 'cnMgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjcuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vbWFya2VkLmpzLm9yZy8jL1VTSU5HX0FEVkFOQ0VELm1kI29wdGlvbnMiKSwhbi5o'@; put 'aWdobGlnaHQmJiJsYW5ndWFnZS0iPT09bi5sYW5nUHJlZml4fHxjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBoaWdobGlnaHQgYW5kIGxhbmdQcmVmaXggcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUg'@; put 'cmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtaGlnaGxpZ2h0LiIpLG4ubWFuZ2xlJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBtYW5nbGUgcGFyYW1ldGVyIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGlz'@; put 'IGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlzIHdhcm5pbmcsIGluc3RhbGwgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLW1hbmdsZSwgb3IgZGlzYWJsZSBieSBzZXR0aW5n'@; put 'IGB7bWFuZ2xlOiBmYWxzZX1gLiIpLG4uYmFzZVVybCYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogYmFzZVVybCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJ'@; put 'bnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtYmFzZS11cmwuIiksbi5zbWFydHlwYW50cyYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogc21hcnR5cGFudHMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5v'@; put 'dCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLXNtYXJ0eXBhbnRzLiIpLG4ueGh0bWwmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHhodG1sIHBhcmFtZXRlciBpcyBkZXBy'@; put 'ZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC14aHRtbC4iKSxuLmhlYWRlcklkc3x8bi5oZWFkZXJQcmVm'@; put 'aXgpJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBoZWFkZXJJZHMgYW5kIGhlYWRlclByZWZpeCBwYXJhbWV0ZXJzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGFyZSBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gVG8g'@; put 'Y2xlYXIgdGhpcyB3YXJuaW5nLCBpbnN0YWxsICBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtZ2ZtLWhlYWRpbmctaWQsIG9yIGRpc2FibGUgYnkgc2V0dGluZyBge2hlYWRlcklkczogZmFsc2V9YC4iKSxlLmhvb2tzJiYoZS5ob29rcy5vcHRpb25zPWUpLHIpe3ZhciBn'@; put 'LEQ9ZS5oaWdobGlnaHQ7dHJ5e2UuaG9va3MmJih1PWUuaG9va3MucHJlcHJvY2Vzcyh1KSksZz1hKHUsZSl9Y2F0Y2goaCl7cmV0dXJuIHAoaCl9dmFyIG8sRj1mdW5jdGlvbihoKXt2YXIgbDtpZighaCl0cnl7ZS53YWxrVG9rZW5zJiZ0LndhbGtUb2tlbnMoZyxlLndhbGtUb2tlbnMpLGw9'@; put 'aShnLGUpLGUuaG9va3MmJihsPWUuaG9va3MucG9zdHByb2Nlc3MobCkpfWNhdGNoKGspe2g9a31yZXR1cm4gZS5oaWdobGlnaHQ9RCxoP3AoaCk6cihudWxsLGwpfTtyZXR1cm4hRHx8RC5sZW5ndGg8Mz9GKCk6KGRlbGV0ZSBlLmhpZ2hsaWdodCxnLmxlbmd0aD8obz0wLHQud2Fsa1Rva2Vu'@; put 'cyhnLGZ1bmN0aW9uKGgpeyJjb2RlIj09PWgudHlwZSYmKG8rKyxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RChoLnRleHQsaC5sYW5nLGZ1bmN0aW9uKGwsayl7aWYobClyZXR1cm4gRihsKTtudWxsIT1rJiZrIT09aC50ZXh0JiYoaC50ZXh0PWssaC5lc2NhcGVkPSEwKSwwPT09LS1vJiZGKCl9'@; put 'KX0sMCkpfSksdm9pZCgwPT09byYmRigpKSk6RigpKX1pZihlLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoZS5ob29rcz9lLmhvb2tzLnByZXByb2Nlc3ModSk6dSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gYShoLGUpfSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gZS53YWxrVG9r'@; put 'ZW5zP1Byb21pc2UuYWxsKHQud2Fsa1Rva2VucyhoLGUud2Fsa1Rva2VucykpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gaH0pOmh9KS50aGVuKGZ1bmN0aW9uKGgpe3JldHVybiBpKGgsZSl9KS50aGVuKGZ1bmN0aW9uKGgpe3JldHVybiBlLmhvb2tzP2UuaG9va3MucG9zdHByb2Nlc3MoaCk6'@; put 'aH0pLmNhdGNoKHApO3RyeXtlLmhvb2tzJiYodT1lLmhvb2tzLnByZXByb2Nlc3ModSkpO3ZhciBkPWEodSxlKSx4PShlLndhbGtUb2tlbnMmJnQud2Fsa1Rva2VucyhkLGUud2Fsa1Rva2VucyksaShkLGUpKTtyZXR1cm4gZS5ob29rcz9lLmhvb2tzLnBvc3Rwcm9jZXNzKHgpOnh9Y2F0Y2go'@; put 'aCl7cmV0dXJuIHAoaCl9fX1mdW5jdGlvbiBFZShhLGksdCl7cmV0dXJuIGZ1bmN0aW9uKHUpe3ZhciBlO2lmKHUubWVzc2FnZSs9IlxuUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuIixhKXJldHVybiBlPSI8cD5BbiBlcnJvciBvY2N1'@; put 'cnJlZDo8L3A+PHByZT4iK3kodS5tZXNzYWdlKyIiLCEwKSsiPC9wcmU+IixpP1Byb21pc2UucmVzb2x2ZShlKTp0P3ZvaWQgdChudWxsLGUpOmU7aWYoaSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodSk7aWYoIXQpdGhyb3cgdTt0KHUpfX1JPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe09iamVj'@; put 'dC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFYse3ZhbHVlOkVlfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMscSx7dmFsdWU6Q2V9KSx0aGlzLmRlZmF1bHRzPXthc3luYzohMSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRl'@; put 'clByZWZpeDoiIixoaWdobGlnaHQ6bnVsbCxob29rczpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdh'@; put 'bGtUb2tlbnM6bnVsbCx4aHRtbDohMX0sdGhpcy5vcHRpb25zPXRoaXMuc2V0T3B0aW9ucyx0aGlzLnBhcnNlPUcodGhpcyxxKVtxXShTLmxleCxULnBhcnNlKSx0aGlzLnBhcnNlSW5saW5lPUcodGhpcyxxKVtxXShTLmxleElubGluZSxULnBhcnNlSW5saW5lKSx0aGlzLlBhcnNlcj1ULHRo'@; put 'aXMucGFyc2VyPVQucGFyc2UsdGhpcy5SZW5kZXJlcj1aLHRoaXMuVGV4dFJlbmRlcmVyPU4sdGhpcy5MZXhlcj1TLHRoaXMubGV4ZXI9Uy5sZXgsdGhpcy5Ub2tlbml6ZXI9aix0aGlzLlNsdWdnZXI9WCx0aGlzLkhvb2tzPU8sdGhpcy51c2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBp'@; put 'PWEucHJvdG90eXBlO3JldHVybiBpLndhbGtUb2tlbnM9ZnVuY3Rpb24odCx1KXtmb3IodmFyIGUscj10aGlzLG49W10scz1VKHQpOyEoZT1zKCkpLmRvbmU7KShmdW5jdGlvbigpe3ZhciBwPWUudmFsdWU7c3dpdGNoKG49bi5jb25jYXQodS5jYWxsKHIscCkpLHAudHlwZSl7Y2FzZSJ0YWJs'@; put 'ZSI6Zm9yKHZhciBnPVUocC5oZWFkZXIpOyEoRD1nKCkpLmRvbmU7KXt2YXIgRD1ELnZhbHVlO249bi5jb25jYXQoci53YWxrVG9rZW5zKEQudG9rZW5zLHUpKX1mb3IodmFyIG8sRj1VKHAucm93cyk7IShvPUYoKSkuZG9uZTspZm9yKHZhciBkPVUoby52YWx1ZSk7ISh4PWQoKSkuZG9uZTsp'@; put 'e3ZhciB4PXgudmFsdWU7bj1uLmNvbmNhdChyLndhbGtUb2tlbnMoeC50b2tlbnMsdSkpfWJyZWFrO2Nhc2UibGlzdCI6bj1uLmNvbmNhdChyLndhbGtUb2tlbnMocC5pdGVtcyx1KSk7YnJlYWs7ZGVmYXVsdDpyLmRlZmF1bHRzLmV4dGVuc2lvbnMmJnIuZGVmYXVsdHMuZXh0ZW5zaW9ucy5j'@; put 'aGlsZFRva2VucyYmci5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW3AudHlwZV0/ci5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW3AudHlwZV0uZm9yRWFjaChmdW5jdGlvbihoKXtuPW4uY29uY2F0KHIud2Fsa1Rva2VucyhwW2hdLHUpKX0pOnAudG9rZW5zJiYobj1u'@; put 'LmNvbmNhdChyLndhbGtUb2tlbnMocC50b2tlbnMsdSkpKX19KSgpO3JldHVybiBufSxpLnVzZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLHU9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fSxlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcg'@; put 'QXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgcCxnPXYoe30scyk7aWYoZy5hc3luYz10LmRlZmF1bHRzLmFzeW5jfHxnLmFzeW5jfHwhMSxzLmV4dGVuc2lvbnMmJihzLmV4dGVuc2lvbnMuZm9yRWFjaChmdW5j'@; put 'dGlvbihsKXtpZighbC5uYW1lKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWQiKTt2YXIgaztpZihsLnJlbmRlcmVyJiYodS5yZW5kZXJlcnNbbC5uYW1lXT0oaz11LnJlbmRlcmVyc1tsLm5hbWVdKT9mdW5jdGlvbigpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3Ro'@; put 'LHc9bmV3IEFycmF5KGIpLEE9MDtBPGI7QSsrKXdbQV09YXJndW1lbnRzW0FdO3ZhciBCPWwucmVuZGVyZXIuYXBwbHkodGhpcyx3KTtyZXR1cm4hMT09PUI/ay5hcHBseSh0aGlzLHcpOkJ9OmwucmVuZGVyZXIpLGwudG9rZW5pemVyKXtpZighbC5sZXZlbHx8ImJsb2NrIiE9PWwubGV2ZWwm'@; put 'JiJpbmxpbmUiIT09bC5sZXZlbCl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBsZXZlbCBtdXN0IGJlICdibG9jaycgb3IgJ2lubGluZSciKTt1W2wubGV2ZWxdP3VbbC5sZXZlbF0udW5zaGlmdChsLnRva2VuaXplcik6dVtsLmxldmVsXT1bbC50b2tlbml6ZXJdLGwuc3RhcnQmJigiYmxv'@; put 'Y2siPT09bC5sZXZlbD91LnN0YXJ0QmxvY2s/dS5zdGFydEJsb2NrLnB1c2gobC5zdGFydCk6dS5zdGFydEJsb2NrPVtsLnN0YXJ0XToiaW5saW5lIj09PWwubGV2ZWwmJih1LnN0YXJ0SW5saW5lP3Uuc3RhcnRJbmxpbmUucHVzaChsLnN0YXJ0KTp1LnN0YXJ0SW5saW5lPVtsLnN0YXJ0XSkp'@; put 'fWwuY2hpbGRUb2tlbnMmJih1LmNoaWxkVG9rZW5zW2wubmFtZV09bC5jaGlsZFRva2Vucyl9KSxnLmV4dGVuc2lvbnM9dSkscy5yZW5kZXJlcil7dmFyIEQsbz10LmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgWih0LmRlZmF1bHRzKTtmb3IoRCBpbiBzLnJlbmRlcmVyKShmdW5jdGlvbihsKXt2'@; put 'YXIgaz1vW2xdO29bbF09ZnVuY3Rpb24oKXtmb3IodmFyIGI9YXJndW1lbnRzLmxlbmd0aCx3PW5ldyBBcnJheShiKSxBPTA7QTxiO0ErKyl3W0FdPWFyZ3VtZW50c1tBXTt2YXIgQj1zLnJlbmRlcmVyW2xdLmFwcGx5KG8sdyk7cmV0dXJuITE9PT1CP2suYXBwbHkobyx3KTpCfX0pKEQpO2cu'@; put 'cmVuZGVyZXI9b31pZihzLnRva2VuaXplcil7dmFyIEYsZD10LmRlZmF1bHRzLnRva2VuaXplcnx8bmV3IGoodC5kZWZhdWx0cyk7Zm9yKEYgaW4gcy50b2tlbml6ZXIpKGZ1bmN0aW9uKGwpe3ZhciBrPWRbbF07ZFtsXT1mdW5jdGlvbigpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3RoLHc9'@; put 'bmV3IEFycmF5KGIpLEE9MDtBPGI7QSsrKXdbQV09YXJndW1lbnRzW0FdO3ZhciBCPXMudG9rZW5pemVyW2xdLmFwcGx5KGQsdyk7cmV0dXJuITE9PT1CP2suYXBwbHkoZCx3KTpCfX0pKEYpO2cudG9rZW5pemVyPWR9aWYocy5ob29rcyl7dmFyIHgsaD10LmRlZmF1bHRzLmhvb2tzfHxuZXcg'@; put 'Tztmb3IoeCBpbiBzLmhvb2tzKShmdW5jdGlvbihsKXt2YXIgaz1oW2xdO2hbbF09Ty5wYXNzVGhyb3VnaEhvb2tzLmhhcyhsKT9mdW5jdGlvbihiKXtyZXR1cm4gdC5kZWZhdWx0cy5hc3luYz9Qcm9taXNlLnJlc29sdmUocy5ob29rc1tsXS5jYWxsKGgsYikpLnRoZW4oZnVuY3Rpb24odyl7'@; put 'cmV0dXJuIGsuY2FsbChoLHcpfSk6KGI9cy5ob29rc1tsXS5jYWxsKGgsYiksay5jYWxsKGgsYikpfTpmdW5jdGlvbigpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3RoLHc9bmV3IEFycmF5KGIpLEE9MDtBPGI7QSsrKXdbQV09YXJndW1lbnRzW0FdO3ZhciBCPXMuaG9va3NbbF0uYXBwbHko'@; put 'aCx3KTtyZXR1cm4hMT09PUI/ay5hcHBseShoLHcpOkJ9fSkoeCk7Zy5ob29rcz1ofXMud2Fsa1Rva2VucyYmKHA9dC5kZWZhdWx0cy53YWxrVG9rZW5zLGcud2Fsa1Rva2Vucz1mdW5jdGlvbihsKXt2YXIgaz1bXTtyZXR1cm4gay5wdXNoKHMud2Fsa1Rva2Vucy5jYWxsKHRoaXMsbCkpLHA/'@; put 'ay5jb25jYXQocC5jYWxsKHRoaXMsbCkpOmt9KSx0LmRlZmF1bHRzPXYoe30sdC5kZWZhdWx0cyxnKX0pLHRoaXN9LGkuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWZhdWx0cz12KHt9LHRoaXMuZGVmYXVsdHMsdCksdGhpc30sYX0oKTt2YXIgUj1uZXcgSShDLmRlZmF1'@; put 'bHRzKTtmdW5jdGlvbiBtKGEsaSx0KXtyZXR1cm4gUi5wYXJzZShhLGksdCl9bS5vcHRpb25zPW0uc2V0T3B0aW9ucz1mdW5jdGlvbihhKXtyZXR1cm4gUi5zZXRPcHRpb25zKGEpLFcobS5kZWZhdWx0cz1SLmRlZmF1bHRzKSxtfSxtLmdldERlZmF1bHRzPVEsbS5kZWZhdWx0cz1DLmRlZmF1'@; put 'bHRzLG0udXNlPWZ1bmN0aW9uKCl7cmV0dXJuIFIudXNlLmFwcGx5KFIsYXJndW1lbnRzKSxXKG0uZGVmYXVsdHM9Ui5kZWZhdWx0cyksbX0sbS53YWxrVG9rZW5zPWZ1bmN0aW9uKGEsaSl7cmV0dXJuIFIud2Fsa1Rva2VucyhhLGkpfSxtLnBhcnNlSW5saW5lPVIucGFyc2VJbmxpbmUsbS5Q'@; put 'YXJzZXI9VCxtLnBhcnNlcj1ULnBhcnNlLG0uUmVuZGVyZXI9WixtLlRleHRSZW5kZXJlcj1OLG0uTGV4ZXI9UyxtLmxleGVyPVMubGV4LG0uVG9rZW5pemVyPWosbS5TbHVnZ2VyPVgsbS5Ib29rcz1PO3ZhciBtZT0obS5wYXJzZT1tKS5vcHRpb25zLHhlPW0uc2V0T3B0aW9ucyxiZT1tLnVz'@; put 'ZSx3ZT1tLndhbGtUb2tlbnMsQmU9bS5wYXJzZUlubGluZSx5ZT1tLHZlPVQucGFyc2UsX2U9Uy5sZXg7Qy5Ib29rcz1PLEMuTGV4ZXI9UyxDLk1hcmtlZD1JLEMuUGFyc2VyPVQsQy5SZW5kZXJlcj1aLEMuU2x1Z2dlcj1YLEMuVGV4dFJlbmRlcmVyPU4sQy5Ub2tlbml6ZXI9aixDLmdldERl'@; put 'ZmF1bHRzPVEsQy5sZXhlcj1fZSxDLm1hcmtlZD1tLEMub3B0aW9ucz1tZSxDLnBhcnNlPXllLEMucGFyc2VJbmxpbmU9QmUsQy5wYXJzZXI9dmUsQy5zZXRPcHRpb25zPXhlLEMudXNlPWJlLEMud2Fsa1Rva2Vucz13ZX0pOw=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=search.e57d45a95a5066e7.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMicgaGVpZ2h0PSczMicgdmlld0JveD0nMCAwIDMyIDMyJyBmaWxsPSdub25lJz48ZyBvcGFjaXR5PScwLjUnPjxwYXRoIGQ9J00yOCAyOEwyMCAyME00IDEzLjMzMzNDNCAxNC41NTkgNC4yNDE0MSAxNS43'@; put 'NzI3IDQuNzEwNDYgMTYuOTA1QzUuMTc5NSAxOC4wMzc0IDUuODY2OTkgMTkuMDY2MyA2LjczMzY3IDE5LjkzM0M3LjYwMDM1IDIwLjc5OTcgOC42MjkyNSAyMS40ODcyIDkuNzYxNjIgMjEuOTU2MkMxMC44OTQgMjIuNDI1MyAxMi4xMDc3IDIyLjY2NjcgMTMuMzMzMyAyMi42NjY3QzE0LjU1'@; put 'OSAyMi42NjY3IDE1Ljc3MjcgMjIuNDI1MyAxNi45MDUgMjEuOTU2MkMxOC4wMzc0IDIxLjQ4NzIgMTkuMDY2MyAyMC43OTk3IDE5LjkzMyAxOS45MzNDMjAuNzk5NyAxOS4wNjYzIDIxLjQ4NzIgMTguMDM3NCAyMS45NTYyIDE2LjkwNUMyMi40MjUzIDE1Ljc3MjcgMjIuNjY2NyAxNC41NTkg'@; put 'MjIuNjY2NyAxMy4zMzMzQzIyLjY2NjcgMTIuMTA3NyAyMi40MjUzIDEwLjg5NCAyMS45NTYyIDkuNzYxNjJDMjEuNDg3MiA4LjYyOTI1IDIwLjc5OTcgNy42MDAzNSAxOS45MzMgNi43MzM2N0MxOS4wNjYzIDUuODY2OTkgMTguMDM3NCA1LjE3OTUgMTYuOTA1IDQuNzEwNDZDMTUuNzcyNyA0'@; put 'LjI0MTQxIDE0LjU1OSA0IDEzLjMzMzMgNEMxMi4xMDc3IDQgMTAuODk0IDQuMjQxNDEgOS43NjE2MiA0LjcxMDQ2QzguNjI5MjUgNS4xNzk1IDcuNjAwMzUgNS44NjY5OSA2LjczMzY3IDYuNzMzNjdDNS44NjY5OSA3LjYwMDM1IDUuMTc5NSA4LjYyOTI1IDQuNzEwNDYgOS43NjE2MkM0LjI0'@; put 'MTQxIDEwLjg5NCA0IDEyLjEwNzcgNCAxMy4zMzMzWicgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L2c+PC9zdmc+'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=select-arrow.55c1ced6c8b25b12.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNMTEuMDAwMiA2LjY2NjYzQzExLjQyNjIgNi42NjY2MyAxMS42NDg3IDcuMTU5NjMgMTEuMzkxNyA3LjQ3'@; put 'ODEzTDExLjM1MzcgNy41MjAxM0w4LjM1MzcyIDEwLjUyMDFDOC4yNjc2MiAxMC42MDYyIDguMTUzMDcgMTAuNjU3OSA4LjAzMTU2IDEwLjY2NTZDNy45MTAwNSAxMC42NzMyIDcuNzg5OTIgMTAuNjM2MyA3LjY5MzcyIDEwLjU2MTZMNy42NDY3MiAxMC41MjAxTDQuNjQ2NzIgNy41MjAxM0w0'@; put 'LjYwNTIyIDcuNDczMTNMNC41NzgyMiA3LjQzNDYzTDQuNTUxMjIgNy4zODY2M0w0LjU0MjcyIDcuMzY4NjNMNC41MjkyMiA3LjMzNTEzTDQuNTEzMjIgNy4yODExM0w0LjUwODIyIDcuMjU0NjNMNC41MDMyMiA3LjIyNDYzTDQuNTAxMjIgNy4xOTYxM1Y3LjEzNzEzTDQuNTAzNzIgNy4xMDgx'@; put 'M0w0LjUwODIyIDcuMDc4MTNMNC41MTMyMiA3LjA1MjEzTDQuNTI5MjIgNi45OTgxM0w0LjU0MjcyIDYuOTY0NjNMNC41Nzc3MiA2Ljg5ODYzTDQuNjEwMjIgNi44NTM2M0w0LjY0NjcyIDYuODEzMTNMNC42OTM3MiA2Ljc3MTYzTDQuNzMyMjIgNi43NDQ2M0w0Ljc4MDIyIDYuNzE3NjNMNC43'@; put 'OTgyMiA2LjcwOTEzTDQuODMxNzIgNi42OTU2M0w0Ljg4NTcyIDYuNjc5NjNMNC45MTIyMiA2LjY3NDYzTDQuOTQyMjIgNi42Njk2M0w0Ljk3MDcyIDYuNjY3NjNMMTEuMDAwMiA2LjY2NjYzWicgZmlsbD0nY3VycmVudENvbG9yJy8+PC9zdmc+Cg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=spinner.16f763cebc6b64df.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3MiA3MiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5jbHMtMSwKICAgICAgICAgICAgLmNscy0yIHsKICAg'@; put 'ICAgICAgICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IDVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuY2xzLTEgewogICAgICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAw'@; put 'OwogICAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmNscy0yIHsKICAgICAgICAgICAgICAgIHN0cm9rZTogIzAwNzJhMzsKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8L2RlZnM+CiAgICA8dGl0bGU+UHJl'@; put 'bG9hZGVyXzcyeDI8L3RpdGxlPgogICAgPGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNiIgY3k9IjM2IiByPSIzMyIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuMyw2MC45QTMzLDMzLDAsMCwxLDM2LDMiPgogICAgPC9wYXRoPgo8L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=styles.2b5586ec5279f11a.css; filename filecode temp lrecl=1453920; data _null_; file filecode; put 'LyohCiAqIENvcHlyaWdodCAoYykgSEFORFNPTkNPREUgc3AuIHogby4gby4KICoKICogSEFORFNPTlRBQkxFIGlzIGEgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgSEFORFNPTkNPREUgc3AuIHogby4gby4sIGEgUG9saXNoIGNvcnBvcmF0aW9uIGJhc2VkIGluCiAqIEdkeW5pYSwgUG9sYW5k'@; put 'LCBhdCBBbGVqYSBad3ljaWVzdHdhIDk2LTk4LCByZWdpc3RlcmVkIGJ5IHRoZSBEaXN0cmljdCBDb3VydCBpbiBHZGFuc2sgdW5kZXIgbnVtYmVyCiAqIDUzODY1MSwgRVUgdGF4IElEIG51bWJlcjogUEw1ODYyMjk0MDAyLCBzaGFyZSBjYXBpdGFsOiBQTE4gNjIsODAwLjAwLgogKgogKiBU'@; put 'aGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBhcHBsaWNhYmxlIGNvcHlyaWdodCBsYXdzLCBpbmNsdWRpbmcgaW50ZXJuYXRpb25hbCB0cmVhdGllcywgYW5kIGR1YWwtCiAqIGxpY2Vuc2VkIC0gZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91ciB1c2UgZm9yIGNvbW1lcmNpYWwgcHVycG9z'@; put 'ZXMsIG1lYW5pbmcgaW50ZW5kZWQgZm9yIG9yCiAqIHJlc3VsdGluZyBpbiBjb21tZXJjaWFsIGFkdmFudGFnZSBvciBtb25ldGFyeSBjb21wZW5zYXRpb24sIG9yIG5vdC4KICoKICogSWYgeW91ciB1c2UgaXMgc3RyaWN0bHkgcGVyc29uYWwgb3Igc29sZWx5IGZvciBldmFsdWF0aW9uIHB1'@; put 'cnBvc2VzLCBtZWFuaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZwogKiB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJlIG91dHNpZGUgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsCiAqIHlvdSBhZ3JlZSB0byBiZSBi'@; put 'b3VuZCBieSB0aGUgdGVybXMgaW5jbHVkZWQgaW4gdGhlICJoYW5kc29udGFibGUtbm9uLWNvbW1lcmNpYWwtbGljZW5zZS5wZGYiIGZpbGUuCiAqCiAqIFlvdXIgdXNlIG9mIHRoaXMgc29mdHdhcmUgZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgaW5j'@; put 'bHVkZWQgaW4gYW4gYXBwbGljYWJsZQogKiBsaWNlbnNlIGFncmVlbWVudC4KICoKICogSW4gYW55IGNhc2UsIHlvdSBtdXN0IG5vdCBtYWtlIGFueSBzdWNoIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGFzIHRvIGRldmVsb3Agc29mdHdhcmUgd2hpY2ggbWF5IGJlCiAqIGNvbnNpZGVyZWQgY29t'@; put 'cGV0aXRpdmUgd2l0aCB0aGlzIHNvZnR3YXJlLgogKgogKiBVTkxFU1MgRVhQUkVTU0xZIEFHUkVFRCBPVEhFUldJU0UsIEhBTkRTT05DT0RFIFBST1ZJREVTIFRISVMgU09GVFdBUkUgT04gQU4gIkFTIElTIgogKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg'@; put 'QU5ZIEtJTkQsIEFORCBJTiBOTyBFVkVOVCBBTkQgVU5ERVIgTk8KICogTEVHQUwgVEhFT1JZLCBTSEFMTCBIQU5EU09OQ09ERSBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZIERJUkVDVCwKICogSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SIENP'@; put 'TlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkgQ0hBUkFDVEVSIEFSSVNJTkcgRlJPTQogKiBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSElTIFNPRlRXQVJFLgogKgogKiBWZXJzaW9uOiAxOC4wLjAKICogUmVsZWFzZSBkYXRlOiAzMC8wNi8yMDI2IChidWlsdCBhdCAzMC8wNi8yMDI2IDA4'@; put 'OjQ1OjMxKQogKi8uaHQtcm9vdC13cmFwcGVye2ZvbnQtZmFtaWx5OnZhcigtLWh0LWZvbnQtZmFtaWx5KSwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLHNhbnMtc2VyaWY7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtw'@; put 'b3NpdGlvbjpyZWxhdGl2ZX06aXMoLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHQtd3JhcHBlcjpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRfbWFzdGVyIC53dEhvbGRlciwuaHQtcm9vdC13cmFwcGVy'@; put 'Omhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odC13cmFwcGVyOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRfbWFzdGVyIC53dEhvbGRlciwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5o'@; put 'dC13cmFwcGVyOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odF9tYXN0ZXIgLnd0SG9sZGVyLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0LXdyYXBwZXI6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlX'@; put 'aW5kb3cpIC5odF9tYXN0ZXIgLnd0SG9sZGVyKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWh0LWJvcmRlci1jb2xvcil9Lmh0Rm9jdXNDYXRjaGVye29wYWNpdHk6MDt6LWluZGV4Oi0xO2JvcmRl'@; put 'cjowO291dGxpbmU6MDt3aWR0aDowO2hlaWdodDowO21hcmdpbjowO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uaHQtZ3JpZHtmbGV4OmF1dG87bWluLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlfS5odC1ncmlkLWNvbnRlbnR7aGVpZ2h0'@; put 'OjEwMCV9Lmh0LXNsb3QtdG9wLC5odC1zbG90LWJvdHRvbXtmbGV4Om5vbmV9Lmh0LXNsb3QtZWxlbWVudHtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpO3dpZHRoOjEwMCV9Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQ6'@; put 'bm90KDpmaXJzdC1vZi10eXBlKXtib3JkZXItdG9wLXdpZHRoOjB9Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQ6bGFzdC1vZi10eXBlLC5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50Om5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItYm90dG9tLXdpZHRoOjB9Lmh0LXNsb3Qt'@; put 'Ym90dG9tPi5odC1zbG90LWVsZW1lbnQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wLXdpZHRoOjB9Lmh0U2Nyb2xsYmFyVGVzdHtzY3JvbGxiYXItd2lkdGg6YXV0bztzY3JvbGxiYXItY29sb3I6dmFyKC0taHQtc2Nyb2xsYmFyLXRodW1iLWNvbG9yKXZhcigtLWh0LXNjcm9sbGJhci10cmFj'@; put 'ay1jb2xvcil9Lmh0U2Nyb2xsYmFyU2FmYXJpVGVzdDo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6OXB4O2hlaWdodDo5cHh9LmhhbmRzb250YWJsZXtmb250LWZhbWlseTp2YXIoLS1odC1mb250LWZhbWlseSksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixz'@; put 'YW5zLXNlcmlmO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0taHQtbGV0dGVyLXNwYWNpbmcpO2NvbG9yOnZhcigtLWh0LWZv'@; put 'cmVncm91bmQtY29sb3IpO3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAud3RIb2xkZXJ7c2Nyb2xsYmFyLXdpZHRoOmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcil2YXIoLS1odC1zY3Jv'@; put 'bGxiYXItdHJhY2stY29sb3IpfS5oYW5kc29udGFibGUgLnd0SG9sZGVyOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDo5cHg7aGVpZ2h0OjlweH0uaGFuZHNvbnRhYmxlIC53dEhvbGRlcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZDp2YXIoLS1odC1zY3JvbGxiYXItdHJh'@; put 'Y2stY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtc2Nyb2xsYmFyLWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUgLnd0SG9sZGVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcik7Ym9yZGVyLXJh'@; put 'ZGl1czp2YXIoLS1odC1zY3JvbGxiYXItYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZSAud3RIb2xkZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcntiYWNrZ3JvdW5kOnZhcigtLWh0LXNjcm9sbGJhci10cmFjay1jb2xvcil9LmhhbmRzb250YWJsZSAud3RIb2xkZXI6bm90KDpsYW5n'@; put 'KGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDps'@; put 'YW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKTo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVye2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWh0LXNjcm9sbGJhci1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlIC53dEhvbGRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDps'@; put 'YW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIp'@; put 'LDpsYW5nKHlpKSk6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LXNjcm9sbGJhci1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uaGFuZHNvbnRhYmxlLmh0LXdy'@; put 'YXBwZXI6bm90KC5odEZpcnN0RGF0YXNldENvbHVtbk5vdFJlbmRlcmVkKSB0ZDpmaXJzdC1vZi10eXBle2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MXB4fS5oYW5kc29udGFibGUuaHRHaG9zdFRhYmxlLmh0TmVzdGVkSGVhZGVycyB0YWJsZXtib3JkZXItc3BhY2luZzowO2JvcmRlci1j'@; put 'b2xsYXBzZTpjb2xsYXBzZX0uaGFuZHNvbnRhYmxlLmh0R2hvc3RUYWJsZSB0YWJsZSB0aGVhZCB0aHtib3JkZXItYm90dG9tLXdpZHRoOjB9LmhhbmRzb250YWJsZS5odEdob3N0VGFibGUgdGFibGUgdGJvZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0aDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxl'@; put 'Lmh0R2hvc3RUYWJsZSB0YWJsZSB0Ym9keSB0cjpmaXJzdC1vZi10eXBlIHRkOmZpcnN0LWNoaWxke2hlaWdodDpjYWxjKHZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZykqMiArIHZhcigtLWh0LWxpbmUtaGVpZ2h0KSArIDFweCl9LmhhbmRzb250YWJsZS5odEdob3N0VGFibGUgdGFi'@; put 'bGUgdGJvZHkgdHIgdGgsLmhhbmRzb250YWJsZS5odEdob3N0VGFibGUgdGFibGUgdGJvZHkgdHIgdGR7aGVpZ2h0OmNhbGModmFyKC0taHQtY2VsbC12ZXJ0aWNhbC1wYWRkaW5nKSoyICsgdmFyKC0taHQtbGluZS1oZWlnaHQpICsgMXB4KTtib3JkZXItdG9wLXdpZHRoOjB9LmhhbmRzb250'@; put 'YWJsZTpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KS5odEhhc1Njcm9sbFggLmh0X21hc3RlciAud3RIb2xkZXIsLmhhbmRzb250YWJsZTpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KS5odEhhc1Njcm9sbFkgLmh0X21hc3RlciAud3RIb2xkZXIs'@; put 'LmhhbmRzb250YWJsZTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykuaHRIYXNTY3JvbGxYIC5odF9tYXN0ZXIgLnd0SG9sZGVyLC5oYW5kc29udGFibGU6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpLmh0SGFzU2Nyb2xsWSAuaHRfbWFzdGVyIC53dEhv'@; put 'bGRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWh0LWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0ci5odF9fcm93X2V2ZW4gdGh7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1yb3ctaGVh'@; put 'ZGVyLWV2ZW4tYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSB0ci5odF9fcm93X2V2ZW4gdGR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1yb3ctY2VsbC1ldmVuLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgdHIuaHRfX3Jvd19vZGQgdGh7YmFja2dyb3VuZC1jb2xv'@; put 'cjp2YXIoLS1odC1yb3ctaGVhZGVyLW9kZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRyLmh0X19yb3dfb2RkIHRke2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcm93LWNlbGwtb2RkLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgdGgsLmhhbmRzb250YWJsZSB0'@; put 'ZHtoZWlnaHQ6Y2FsYyh2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpKjIgKyB2YXIoLS1odC1saW5lLWhlaWdodCkgKyAxcHgpO3BhZGRpbmc6dmFyKC0taHQtY2VsbC12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LWNlbGwtaG9yaXpvbnRhbC1wYWRkaW5nKTt2ZXJ0aWNhbC1hbGln'@; put 'bjp0b3A7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1pbmxpbmUtd2lkdGg6MCAxcHg7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0taHQtbGluZS1oZWlnaHQpO3doaXRlLXNwYWNlOnByZS13cmFwO2VtcHR5LWNlbGxzOnNob3c7Ym94LXNpemluZzpi'@; put 'b3JkZXItYm94O2NvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWh0LWNlbGwtdmVydGljYWwtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigt'@; put 'LWh0LWNlbGwtdmVydGljYWwtYm9yZGVyLWNvbG9yKTtib3JkZXItaW5saW5lLXN0YXJ0LWNvbG9yOnZhcigtLWh0LWNlbGwtaG9yaXpvbnRhbC1ib3JkZXItY29sb3IpO2JvcmRlci1pbmxpbmUtZW5kLWNvbG9yOnZhcigtLWh0LWNlbGwtaG9yaXpvbnRhbC1ib3JkZXItY29sb3IpO291dGxp'@; put 'bmU6MDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSB0aC5pbnZpc2libGVTZWxlY3Rpb24sLmhhbmRzb250YWJsZSB0ZC5pbnZpc2libGVTZWxlY3Rpb257b3V0bGluZTpub25lfS5oYW5kc29udGFibGUgdGguaW52aXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb24sLmhhbmRzb250YWJs'@; put 'ZSB0ZC5pbnZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbntiYWNrZ3JvdW5kOjAgMH0uaGFuZHNvbnRhYmxlIHRoe3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWhlYWRlci1mb250LXdlaWdodCk7d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOnZhcigtLWh0LWhlYWRl'@; put 'ci1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yKTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzp2aXNpYmxlfS5oYW5kc29udGFibGUgdGg6bGFzdC1jaGlsZHtib3JkZXItaW5saW5lLXdpZHRoOjAgMXB4O2JvcmRl'@; put 'ci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1pbmxpbmUtZW5kLWNvbG9yOnZhcigtLWh0LWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0aDpsYXN0LWNoaWxkLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JvcmRlci1pbmxpbmUtZW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1hY3RpdmUtYm9y'@; put 'ZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxke2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxkLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3I6'@; put 'dmFyKC0taHQtaGVhZGVyLWFjdGl2ZS1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZSB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHh9LmhhbmRzb250YWJsZSB0aC5jdXJyZW50e2JveC1zaGFkb3c6aW5z'@; put 'ZXQgMCAwIDAgMXB4IHZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5hY3RpdmV7Y29sb3I6dmFyKC0taHQtaGVhZGVyLWFjdGl2ZS1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1hY3RpdmUtYmFj'@; put 'a2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5odF9faGlnaGxpZ2h0e2NvbG9yOnZhcigtLWh0LWhlYWRlci1oaWdobGlnaHRlZC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1oaWdobGlnaHRlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFu'@; put 'ZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JvcmRlci1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaGVhZGVyLWFjdGl2ZS1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1h'@; put 'Y3RpdmUtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSB0Ym9keSB0ci5odF9fcm93X29kZCB0aC5odF9faGlnaGxpZ2h0LC5oYW5kc29udGFibGUgdGJvZHkgdHIuaHRfX3Jvd19ldmVuIHRoLmh0X19oaWdobGlnaHR7Y29sb3I6dmFyKC0taHQtaGVhZGVyLXJvdy1oaWdobGlnaHRl'@; put 'ZC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1yb3ctaGlnaGxpZ2h0ZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSB0Ym9keSB0ci5odF9fcm93X29kZCB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRib2R5'@; put 'IHRyLmh0X19yb3dfZXZlbiB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodHtjb2xvcjp2YXIoLS1odC1oZWFkZXItcm93LWFjdGl2ZS1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1yb3ctYWN0aXZlLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFi'@; put 'bGUgdGJvZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0aDpmaXJzdC1jaGlsZDplbXB0eTphZnRlciwuaGFuZHNvbnRhYmxlIHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGQ6Zmlyc3QtY2hpbGQ6ZW1wdHk6YWZ0ZXJ7Y29udGVudDoiIjttaW4taGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtkaXNw'@; put 'bGF5OmJsb2NrfS5oYW5kc29udGFibGUgdGJvZHkgdHIgdGh7Y29sb3I6dmFyKC0taHQtaGVhZGVyLXJvdy1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1yb3ctYmFja2dyb3VuZC1jb2xvcik7cGFkZGluZzowfS5oYW5kc29udGFibGUgdGJvZHkg'@; put 'dHIgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHR7Ym94LXNoYWRvdzowIC0xcHggMCAwIHZhcigtLWh0LWhlYWRlci1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRib2R5IHRyIHRoIC5yZWxhdGl2ZXtwYWRkaW5nOnZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZyl2YXIo'@; put 'LS1odC1jZWxsLWhvcml6b250YWwtcGFkZGluZyk7bWluLWhlaWdodDoxMDAlfS5oYW5kc29udGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLWlubGluZS1zdGFydC1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdGJvZHkgdHIgdGQ6bGFzdC1j'@; put 'aGlsZHtib3JkZXItaW5saW5lLWVuZC1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgdGhlYWQgdHIgdGh7cGFkZGluZzowfS5oYW5kc29udGFibGUgdGhlYWQgdHIgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHR7Ym94LXNoYWRvdzotMXB4IDAgMCAwIHZhcigtLWh0'@; put 'LWhlYWRlci1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoZWFkIHRyIHRoIC5yZWxhdGl2ZXtwYWRkaW5nOnZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1jZWxsLWhvcml6b250YWwtcGFkZGluZyk7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0'@; put 'ZW1zOmNlbnRlcjtnYXA6MnB4O2Rpc3BsYXk6ZmxleH0uaGFuZHNvbnRhYmxlIHRoZWFkIHRyIHRoIC5yZWxhdGl2ZSAuY29sSGVhZGVye3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7dmVydGljYWwtYWxpZ246dG9wO2ZsZXg6YXV0bzttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW59LmhhbmRz'@; put 'b250YWJsZSB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3AtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wLXdpZHRoOjFweH0uaGFuZHNvbnRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoLmh0X19hY3RpdmVfaGln'@; put 'aGxpZ2h0LC5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQuaHRfX2FjdGl2ZV9oaWdobGlnaHR7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0cjpsYXN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUgdHI6bGFz'@; put 'dC1jaGlsZCB0ZHtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWh0LWJvcmRlci1jb2xvcil9LmhhbmRzb250YWJsZSB0cjpsYXN0LWNoaWxkIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LC5oYW5kc29udGFibGUgdHI6bGFzdC1jaGlsZCB0ZC5odF9fYWN0aXZlX2hpZ2hsaWdodHtib3JkZXIt'@; put 'Ym90dG9tLWNvbG9yOnZhcigtLWh0LWhlYWRlci1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIGRpdltjbGFzc149aHRfY2xvbmVdIHRoZWFkIC5odF9faGlnaGxpZ2h0IC5yZWxhdGl2ZTphZnRlcntjb250ZW50OiIiO2hlaWdodDp2YXIoLS1odC1oZWFkZXItaGlnaGxpZ2h0'@; put 'ZWQtc2hhZG93LXNpemUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotMXB4O2xlZnQ6LTFweDtyaWdodDotMXB4fS5oYW5kc29udGFibGUgZGl2W2NsYXNzXj1odF9jbG9uZV0gdGhlYWQgdHI6'@; put 'b25seS1vZi10eXBlIC5odF9faGlnaGxpZ2h0IC5yZWxhdGl2ZTphZnRlcntib3R0b206MH0uaGFuZHNvbnRhYmxlIGRpdltjbGFzc149aHRfY2xvbmVdIHRib2R5IC5odF9faGlnaGxpZ2h0IC5yZWxhdGl2ZTphZnRlcntjb250ZW50OiIiO3dpZHRoOnZhcigtLWh0LWhlYWRlci1oaWdobGln'@; put 'aHRlZC1zaGFkb3ctc2l6ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xcHg7Ym90dG9tOi0xcHg7cmlnaHQ6LTFweH0uaGFuZHNvbnRhYmxlIGRpdltjbGFzc149aHRfY2xvbmVdIHRkOmZpcnN0'@; put 'LW9mLXR5cGV7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHh9LmhhbmRzb250YWJsZSB0aGVhZCB0cjpub3QoOmxhc3QtY2hpbGQpIHRoe292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlIC5oaWRle2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlIC5yZWxhdGl2ZXtib3gtc2l6aW5n'@; put 'OmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAud3RIaWRlcnt3aWR0aDowfS5oYW5kc29udGFibGUgLnd0U3ByZWFkZXJ7d2lkdGg6MDtoZWlnaHQ6YXV0bztwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odEF1dG9TaXple3Zpc2liaWxpdHk6aGlk'@; put 'ZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotOTkwMDBweDtsZWZ0Oi05OTAwMHB4fS5oYW5kc29udGFibGUgLmh0VGV4dEVsbGlwc2lze3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlIHRhYmxlLC5oYW5kc29u'@; put 'dGFibGUgdGJvZHksLmhhbmRzb250YWJsZSB0aGVhZCwuaGFuZHNvbnRhYmxlIGlucHV0LC5oYW5kc29udGFibGUgdGV4dGFyZWEsLmhhbmRzb250YWJsZSBkaXZ7Ym94LXNpemluZzpjb250ZW50LWJveH0uaGFuZHNvbnRhYmxlIGlucHV0LC5oYW5kc29udGFibGUgdGV4dGFyZWF7bWluLWhl'@; put 'aWdodDppbml0aWFsfS5oYW5kc29udGFibGUgLmh0Q29yZXtib3JkZXItc3BhY2luZzowO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTt0YWJsZS1sYXlvdXQ6Zml4ZWQ7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItd2lk'@; put 'dGg6MDtvdXRsaW5lLXdpZHRoOjA7d2lkdGg6MDttYXJnaW46MH0uaGFuZHNvbnRhYmxlIGNvbCwuaGFuZHNvbnRhYmxlIGNvbC5yb3dIZWFkZXJ7d2lkdGg6NjRweH0uaGFuZHNvbnRhYmxlIGNvbC5oaWRkZW57d2lkdGg6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRl'@; put 'ciwuaGFuZHNvbnRhYmxlIHNwYW4ucm93SGVhZGVye2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiwuaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiB0'@; put 'ZCwuaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiB0aHtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSBhe2NvbG9yOnZhcigtLWh0LWxpbmstY29sb3IpfS5oYW5kc29udGFibGUgYTpob3Zlcntjb2xvcjp2YXIoLS1odC1saW5rLWhvdmVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odF9jbG9uZV90'@; put 'b3AgdGg6bnRoLWNoaWxkKDIpLC5oYW5kc29udGFibGUgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIHRoOm50aC1jaGlsZCgyKXtib3JkZXItaW5saW5lLXdpZHRoOjAgMXB4fS5oYW5kc29udGFibGUuaHRSb3dIZWFkZXJzIHRoZWFkIHRyIHRoOm50aC1jaGlsZCgyKXtib3Jk'@; put 'ZXItaW5saW5lLXN0YXJ0LXdpZHRoOjFweH0uaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGluZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucykgdGJvZHkgdHIgdGgsLmhhbmRzb250YWJsZSAuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6'@; put 'bm90KC5lbXB0eUNvbHVtbnMpIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVySW5saW5lU3RhcnQpOm5vdCguZW1wdHlDb2x1bW5zKX4uaGFuZHNvbnRhYmxlOm5vdCguaHRHaG9zdFRhYmxlKSB0Ym9keSB0ciB0aCwuaGFu'@; put 'ZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGluZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZTpub3QoLmh0X2Nsb25lX3RvcCk6bm90KC5odEdob3N0VGFibGUpIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxke2JvcmRlci1pbmxpbmUtd2lkdGg6'@; put 'MXB4IDB9LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSAuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0'@; put 'b20pfi5oYW5kc29udGFibGUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlclRvcCk6bm90KC5pbm5lckJvcmRlckJvdHRvbSkgdGhlYWQgdHIubGFzdENoaWxkIHRoLC5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlu'@; put 'bmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKX4uaGFuZHNvbnRhYmxlIHRoZWFkIHRyLmxhc3RDaGlsZCB0aHtib3JkZXItYm90dG9tLXdpZHRoOjB9LmhhbmRzb250YWJsZS5odEF1dG9Sb3dTaXplIC5odF9tYXN0ZXIuaW5uZXJCb3JkZXJUb3AgdGJvZHkgdHI6Zmlyc3Qt'@; put 'Y2hpbGQgdGgsLmhhbmRzb250YWJsZS5odEF1dG9Sb3dTaXplIC5odF9tYXN0ZXIuaW5uZXJCb3JkZXJUb3AgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsLmhhbmRzb250YWJsZS5odEF1dG9Sb3dTaXplIC5odF9tYXN0ZXIuaW5uZXJCb3JkZXJUb3B+Lmh0X2Nsb25lX2lubGluZV9zdGFydCB0'@; put 'Ym9keSB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlLmh0QXV0b1Jvd1NpemUgLmh0X21hc3Rlci5pbm5lckJvcmRlclRvcH4uaHRfY2xvbmVfaW5saW5lX3N0YXJ0IHRib2R5IHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3Atd2lkdGg6MH0uaGFuZHNvbnRhYmxlIC5odF9tYXN0'@; put 'ZXIgdGFibGUuaHRDb3JlPnRoZWFkLC5oYW5kc29udGFibGUgLmh0X21hc3RlciB0YWJsZS5odENvcmU+dGJvZHk+dHI+dGgsLmhhbmRzb250YWJsZSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IHRhYmxlLmh0Q29yZT50aGVhZHt2aXNpYmlsaXR5OmhpZGRlbn0uaHRfbWFzdGVyLC5odF9jbG9u'@; put 'ZV9pbmxpbmVfc3RhcnQsLmh0X2Nsb25lX3RvcCwuaHRfY2xvbmVfYm90dG9tLC5odF9tYXN0ZXIgLnd0SG9sZGVyLC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLnd0SG9sZGVyLC5odF9jbG9uZV90b3AgLnd0SG9sZGVyLC5odF9jbG9uZV9ib3R0b20gLnd0SG9sZGVye292ZXJmbG93OmhpZGRl'@; put 'bn0uaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzphdXRvfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGRbZGlyPWx0cl17Ym9yZGVyLWlubGluZS13aWR0aDoxcHggMH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRib2R5IHRyIHRkW2Rpcj1sdHJdOmxhc3QtY2hpbGR7Ym9yZGVyLWlubGlu'@; put 'ZS1zdGFydC1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpfVtkaXI9cnRsXS5oYW5kc29udGFibGUgZGl2W2NsYXNzXj1odF9jbG9uZV0gdGJvZHkgLmh0X19oaWdobGlnaHQgLnJlbGF0aXZlOmFmdGVye2xlZnQ6LTFweDtyaWdodDphdXRvfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcnti'@; put 'b3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X21hc3RlciAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDps'@; put 'YW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIp'@; put 'LDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXI6bm90KC5odENvbHVtbkhlYWRlcnMpIC5odF9tYXN0ZXIgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDppcyg6'@; put 'bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNk'@; put 'KSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfbWFzdGVyIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hp'@; put 'bGQgdGQ6bGFzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhw'@; put 'bmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X21hc3RlciAuaHRD'@; put 'b3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16'@; put 'biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFk'@; put 'ZXJzKSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFu'@; put 'ZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1'@; put 'cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxh'@; put 'bmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7'@; put 'Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfdG9wIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFl'@; put 'KSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5n'@; put 'KHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlcjpub3QoLmh0Q29sdW1uSGVhZGVycykgLmh0X2Nsb25lX3RvcCAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRk'@; put 'OmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6'@; put 'bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXI6bm90KC5odENvbHVtbkhlYWRlcnMpIC5odF9jbG9uZV90b3AgLmh0Q29y'@; put 'ZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpu'@; put 'KSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFk'@; put 'ZXJzKSAuaHRfY2xvbmVfdG9wIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5n'@; put 'KGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5o'@; put 'dC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2ti'@; put 'KSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXI6bm90'@; put 'KC5odENvbHVtbkhlYWRlcnMpIC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6'@; put 'bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1y'@; put 'YWRpdXMpfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXI6bm90KC5odENvbHVtbkhlYWRlcnMpIC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmco'@; put 'YmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhh'@; put 'bmRzb250YWJsZS5odC13cmFwcGVyOm5vdCguaHRDb2x1bW5IZWFkZXJzKSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFp'@; put 'KSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItdG9wLXJpZ2h0'@; put 'LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAud3RIb2xkZXIsLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZXtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5k'@; put 'c29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDps'@; put 'YW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5k'@; put 'c29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxh'@; put 'bmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5k'@; put 'c29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxh'@; put 'bmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3At'@; put 'cmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKTppcyg6bGFu'@; put 'ZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6'@; put 'bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5n'@; put 'KGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDps'@; put 'YW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6bGFu'@; put 'ZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6'@; put 'bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVy'@; put 'KTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSk6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4p'@; put 'LDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRD'@; put 'b3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZh'@; put 'KSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVz'@; put 'KX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmco'@; put 'ZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRp'@; put 'dXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfbWFzdGVyIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5n'@; put 'KGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJh'@; put 'ZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9tYXN0ZXIgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxh'@; put 'bmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXIt'@; put 'cmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X21hc3RlciAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDps'@; put 'YW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXIt'@; put 'cmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENvcmU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDps'@; put 'YW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5k'@; put 'c29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5n'@; put 'KGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13'@; put 'cmFwcGVyIC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDps'@; put 'YW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFk'@; put 'aXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6'@; put 'bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFk'@; put 'aXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfdG9wIC5odENvcmU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDps'@; put 'YW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2JvcmRl'@; put 'ci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfdG9wIC5odENvcmU6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2'@; put 'KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRl'@; put 'ci1yYWRpdXMpO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV90b3AgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6'@; put 'bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVy'@; put 'KSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV90b3AgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIp'@; put 'LDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmco'@; put 'dXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV90b3AgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRo'@; put 'Om5vdCguaGlkZGVuSGVhZGVyKSkpOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDps'@; put 'YW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV90b3AgLmh0Q29yZSB0aGVhZCB0cjpm'@; put 'aXJzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayks'@; put 'OmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUu'@; put 'aHQtd3JhcHBlciAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFu'@; put 'Zyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9y'@; put 'ZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGsp'@; put 'LDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRv'@; put 'bS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMp'@; put 'LDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5'@; put 'aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIp'@; put 'LDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmco'@; put 'dXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyl9OmlzKC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxh'@; put 'bmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCks'@; put 'OmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJj'@; put 'YyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3Jk'@; put 'ZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6'@; put 'bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVy'@; put 'KSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5n'@; put 'KGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFk'@; put 'aXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIgLmh0Q29yZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2Ip'@; put 'LDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFy'@; put 'KC0taHQtYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhk'@; put 'diksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1i'@; put 'b3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDps'@; put 'YW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRh'@; put 'YmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENvcmUgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2'@; put 'KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJv'@; put 'cmRlci1yYWRpdXMpfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyIC5odENvcmUgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFu'@; put 'ZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJs'@; put 'ZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6'@; put 'bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3Jk'@; put 'ZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbSAuaHRDb3JlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5n'@; put 'KGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1s'@; put 'ZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbSAuaHRDb3JlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxh'@; put 'bmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1y'@; put 'YWRpdXMpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbSAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciks'@; put 'OmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1'@; put 'ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbSAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFu'@; put 'ZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1o'@; put 'dC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2ti'@; put 'KSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0'@; put 'X2Nsb25lX2JvdHRvbSAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmco'@; put 'a3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFw'@; put 'cGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUp'@; put 'LDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIgLmh0X2Nsb25lX2JvdHRvbSAuaHRDb3JlIHRyOmxhc3QtY2hpbGQgdGQ6bGFz'@; put 'dC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5n'@; put 'KHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyIC5odF9jbG9uZV9ib3R0b20gLmh0Q29yZSB0cjpsYXN0LWNoaWxk'@; put 'IHRoOmxhc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIp'@; put 'LDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlciAuaHRfY2xvbmVfYm90dG9tIC5odENvcmUgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6'@; put 'bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkp'@; put 'KSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKX0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmU6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxh'@; put 'bmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciks'@; put 'OmxhbmcoeWkpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmU6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDps'@; put 'YW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9y'@; put 'ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDps'@; put 'YW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcp'@; put 'LDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIp'@; put 'LDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmco'@; put 'dXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmco'@; put 'YXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxh'@; put 'bmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDppcyg6'@; put 'bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNk'@; put 'KSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUp'@; put 'LDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmco'@; put 'dWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhh'@; put 'ciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFu'@; put 'Zyh1ciksOmxhbmcoeWkpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6bm90KC5o'@; put 'aWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50aDpub3QoLmhpZGRlbkhlYWRlcikpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxk'@; put 'LC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQpOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNj'@; put 'KSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVy'@; put 'LWJvdHRvbS1yaWdodC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWDpub3QoLmh0SG9yaXpvbnRhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6bm90KC5oaWRkZW5IZWFkZXIpOm5vdCg6aGFzKH50'@; put 'aDpub3QoLmhpZGRlbkhlYWRlcikpKSwuaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxYOm5vdCguaHRIb3Jpem9udGFsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5oYW5kc29udGFibGUuaHQtd3JhcHBl'@; put 'ci5odEhhc1Njcm9sbFg6bm90KC5odEhvcml6b250YWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQpOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6'@; put 'bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmhh'@; put 'bmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhm'@; put 'YSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1y'@; put 'YWRpdXM6MH0uaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxZOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhk'@; put 'diksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRv'@; put 'bS1sZWZ0LXJhZGl1czowfTppcyguaGFuZHNvbnRhYmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxZOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5o'@; put 'aWRkZW5IZWFkZXIpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Nj'@; put 'cm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxhYmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCk6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiks'@; put 'OmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfTppcyguaGFuZHNvbnRh'@; put 'YmxlLmh0LXdyYXBwZXIuaHRIYXNTY3JvbGxZOm5vdCguaHRWZXJ0aWNhbGx5U2Nyb2xsYWJsZUJ5V2luZG93KSAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmhhbmRzb250YWJsZS5o'@; put 'dC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5oYW5kc29udGFibGUuaHQtd3JhcHBlci5odEhhc1Njcm9sbFk6bm90KC5odFZlcnRpY2FsbHlTY3JvbGxh'@; put 'YmxlQnlXaW5kb3cpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCk6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSks'@; put 'Omxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3Qo'@; put 'Lmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVy'@; put 'dGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0'@; put 'LWNoaWxkIHRoOmxhc3QtY2hpbGQpOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDps'@; put 'YW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH06aXMoLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRv'@; put 'dykgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0'@; put 'Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odC13cmFwcGVyLmh0SGFzU2Nyb2xsWTpub3QoLmh0VmVydGljYWxseVNjcm9sbGFibGVCeVdpbmRvdykgLmh0Q29yZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQpOmlzKDpsYW5n'@; put 'KGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDps'@; put 'YW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcntib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVu'@; put 'dCkgLmh0LXdyYXBwZXI6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5i'@; put 'KSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQp'@; put 'IC5odC13cmFwcGVyOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6'@; put 'bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5o'@; put 'dF9tYXN0ZXIgLnd0SG9sZGVyOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5n'@; put 'KHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVt'@; put 'ZW50KSAuaHRfbWFzdGVyIC53dEhvbGRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8p'@; put 'LDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xv'@; put 'dC1lbGVtZW50KSAuaHRDb3JlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5n'@; put 'KHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVt'@; put 'ZW50KSAuaHRDb3JlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6'@; put 'bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH06aXMoLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50'@; put 'KSAuaHRDb3JlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMo'@; put 'Pi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZh'@; put 'KSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfTppcyguaHQtcm9vdC13cmFwcGVy'@; put 'Omhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGls'@; put 'ZCB0ZDpmaXJzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCk6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxh'@; put 'bmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0'@; put 'b20tcmlnaHQtcmFkaXVzOjB9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmh0'@; put 'LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkg'@; put 'dHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkKTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmco'@; put 'bnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC1ib3R0b20+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0'@; put 'aGVhZCB0cjpsYXN0LWNoaWxkIHRoOm5vdCguaGlkZGVuSGVhZGVyKTpub3QoOmhhcyh+dGg6bm90KC5oaWRkZW5IZWFkZXIpKSksLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6bGFz'@; put 'dC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkKTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDps'@; put 'YW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJh'@; put 'ZGl1czowfS5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0LXdyYXBwZXI6bm90KDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5n'@; put 'KGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uaHQt'@; put 'cm9vdC13cmFwcGVyOmhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odC13cmFwcGVyOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmco'@; put 'aGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVy'@; put 'Omhhcyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odF9tYXN0ZXIgLnd0SG9sZGVyOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhl'@; put 'KSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpo'@; put 'YXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHRfbWFzdGVyIC53dEhvbGRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6'@; put 'bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMo'@; put 'Pi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmco'@; put 'bXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4u'@; put 'aHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyks'@; put 'OmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH06aXMoLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVt'@; put 'ZW50KSAuaHRDb3JlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwuaHQtcm9vdC13cmFwcGVyOmhh'@; put 'cyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZh'@; put 'KSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfTppcyguaHQtcm9vdC13cmFwcGVyOmhh'@; put 'cyg+Lmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQpIC5odENvcmUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLmh0LXJvb3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50KSAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmZp'@; put 'cnN0LWNoaWxkLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCk6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6'@; put 'bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFk'@; put 'aXVzOjB9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpub3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5odC1yb290LXdyYXBwZXI6'@; put 'aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aDps'@; put 'YXN0LWNoaWxkKTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDps'@; put 'YW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9OmlzKC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpu'@; put 'b3QoLmhpZGRlbkhlYWRlcik6bm90KDpoYXMofnRoOm5vdCguaGlkZGVuSGVhZGVyKSkpLC5odC1yb290LXdyYXBwZXI6aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5odC1yb290LXdyYXBwZXI6'@; put 'aGFzKD4uaHQtc2xvdC10b3A+Lmh0LXNsb3QtZWxlbWVudCkgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkKTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZh'@; put 'KSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5odC1yb290LXdyYXBwZXIgLmh0LXNs'@; put 'b3QtZWxlbWVudHtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5odC1yb290LXdyYXBwZXIgLmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQ6bm90KDpsYXN0LW9mLXR5cGUpe2JvcmRlci1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyIC5odC1zbG90LWJvdHRv'@; put 'bT4uaHQtc2xvdC1lbGVtZW50Omxhc3Qtb2YtdHlwZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxh'@; put 'bmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5odC1yb290LXdyYXBwZXIgLmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQ6bGFzdC1vZi10eXBlOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJj'@; put 'KSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmco'@; put 'eWkpKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uaHQtcm9vdC13cmFwcGVyIC5odC1zbG90LXRvcD4uaHQtc2xvdC1lbGVtZW50Om5vdCg6Zmlyc3Qtb2YtdHlwZSl7Ym9yZGVyLXJhZGl1czowfS5odC1yb290LXdyYXBwZXIgLmh0LXNsb3Qt'@; put 'dG9wPi5odC1zbG90LWVsZW1lbnQ6Zmlyc3Qtb2YtdHlwZTpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biks'@; put 'OmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpLC5odC1yb290LXdyYXBwZXIgLmh0LXNsb3QtdG9wPi5odC1zbG90LWVsZW1lbnQ6Zmlyc3Qtb2YtdHlwZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFy'@; put 'YyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5n'@; put 'KHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmhhbmRzb250YWJsZS5tb2JpbGUsLmhhbmRzb250YWJsZS5tb2JpbGUgLnd0SG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQt'@; put 'dGFwLWhpZ2hsaWdodC1jb2xvcjojMDAwMDstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uaGFuZHNvbnRhYmxlLm1vYmlsZSAuaGFuZHNvbnRhYmxlSW5wdXQ6Zm9jdXN7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAycHggdmFyKC0taHQtYWNjZW50LWNvbG9yKTstd2Via2l0LWFw'@; put 'cGVhcmFuY2U6bm9uZX0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUsLmhhbmRzb250YWJsZSAudG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEsLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLC5oYW5kc29udGFibGUgLmJvdHRvbVNlbGVjdGlvbkhhbmRsZS1I'@; put 'aXRBcmVhe2luc2V0LWlubGluZS1zdGFydDotMTAwMDBweDtpbnNldC1pbmxpbmUtZW5kOnVuc2V0O3otaW5kZXg6OTk5OTt0b3A6LTEwMDAwcHh9LmhhbmRzb250YWJsZS5oaWRlLXR3ZWVue2FuaW1hdGlvbjouMnMgZm9yd2FyZHMgb3BhY2l0eS1oaWRlfS5oYW5kc29udGFibGUuc2hvdy10'@; put 'd2VlbnthbmltYXRpb246LjNzIGZvcndhcmRzIG9wYWNpdHktc2hvd30uaHRfY2xvbmVfbWFzdGVye3otaW5kZXg6MTAwfS5odF9jbG9uZV9pbmxpbmVfc3RhcnR7ei1pbmRleDoxMjB9Lmh0X2Nsb25lX2JvdHRvbXt6LWluZGV4OjEzMH0uaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9j'@; put 'b3JuZXJ7ei1pbmRleDoxNTB9Lmh0X2Nsb25lX3RvcHt6LWluZGV4OjE2MH0uaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXJ7ei1pbmRleDoxODB9Lmh0X2VkaXRvcl9oaWRkZW57ei1pbmRleDotMX0uaHRfZWRpdG9yX3Zpc2libGV7ei1pbmRleDoyMDB9LmhhbmRzb250YWJsZSB0'@; put 'ZC5hcmVhe3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgdGQuYXJlYTpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxl'@; put 'IHRkLmFyZWEtMXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtMTpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNv'@; put 'bnRhYmxlIHRkLmFyZWEtMntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtMjpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MH0u'@; put 'aGFuZHNvbnRhYmxlIHRkLmFyZWEtM3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtMzpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9zaXRpb246YWJzb2x1dGU7aW5z'@; put 'ZXQ6MH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNHtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9zaXRpb246YWJzb2x1'@; put 'dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9zaXRpb246'@; put 'YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNjpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJlOCk7cG9z'@; put 'aXRpb246YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtN3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnZhcigtLWh0LWNlbGwtc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3IsIzFhNDJl'@; put 'OCk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3Jle29wYWNpdHk6LjE0fS5oYW5kc29udGFibGUgdGQuYXJlYS0xOmJlZm9yZXtvcGFjaXR5Oi4yMX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtMjpiZWZvcmV7b3BhY2l0eTouMjh9LmhhbmRzb250'@; put 'YWJsZSB0ZC5hcmVhLTM6YmVmb3Jle29wYWNpdHk6LjM1fS5oYW5kc29udGFibGUgdGQuYXJlYS00OmJlZm9yZXtvcGFjaXR5Oi40Mn0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmV7b3BhY2l0eTouNDl9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3Jle29wYWNpdHk6LjU2fS5o'@; put 'YW5kc29udGFibGUgdGQuYXJlYS03OmJlZm9yZXtvcGFjaXR5Oi42M30uaGFuZHNvbnRhYmxlIHRkLmFyZWF7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LWJvcmRlci1jb2xvciksdmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcikxMCUpfS5oYW5kc29udGFibGUgLnd0'@; put 'Qm9yZGVye2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGUgLnd0Qm9yZGVyOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgLnd0Qm9yZGVyOm50aC1jaGlsZCgzKXt6LWluZGV4OjJ9LmhhbmRzb250YWJsZSAud3RCb3JkZXI6bnRoLWNoaWxkKDIpLC5oYW5kc29u'@; put 'dGFibGUgLnd0Qm9yZGVyOm50aC1jaGlsZCg0KXt6LWluZGV4OjF9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY3VycmVudHt6LWluZGV4OjEwO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2Vs'@; put 'bC1zZWxlY3Rpb24tYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuYXJlYXt6LWluZGV4Ojg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLXNlbGVjdGlvbi1ib3JkZXItY29sb3IpIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5m'@; put 'aWxse3otaW5kZXg6NjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNlbGwtYXV0b2ZpbGwtZmlsbC1ib3JkZXItY29sb3IsIzY4Njk2YykhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmNvcm5lcntjdXJzb3I6Y3Jvc3NoYWlyO3otaW5kZXg6MTA7Zm9udC1zaXplOjA7Ym9y'@; put 'ZGVyLXJhZGl1czp2YXIoLS1odC1jZWxsLWF1dG9maWxsLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNlbGwtYXV0b2ZpbGwtYmFja2dyb3VuZC1jb2xvciwjMWE0MmU4KSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNlbGwtYXV0'@; put 'b2ZpbGwtYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY29ybmVyOmFmdGVye2NvbnRlbnQ6IiI7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1jZWxsLWF1dG9maWxsLWJvcmRlci1yYWRpdXMpO2luc2V0Om1pbigwcHgsKHZhcigtLWh0LWNlbGwtYXV0b2Zp'@; put 'bGwtc2l6ZSkgLSB2YXIoLS1odC1jZWxsLWF1dG9maWxsLWhpdC1hcmVhLXNpemUpKS8yKTtiYWNrZ3JvdW5kOjAgMDtwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5jb3JuZXIud3RDb3JuZXJJbmxpbmVFbmRFZGdlOmFmdGVye2luc2V0LWlubGluZS1lbmQ6MH0u'@; put 'aGFuZHNvbnRhYmxlIC53dEJvcmRlci5jb3JuZXIud3RDb3JuZXJCbG9ja0VuZEVkZ2U6YWZ0ZXJ7aW5zZXQtYmxvY2stZW5kOjB9LmhvdC1kaXNwbGF5LWxpY2Vuc2UtaW5mb3tmb250LWZhbWlseTp2YXIoLS1odC1mb250LWZhbWlseSksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZv'@; put 'bnQsIlNlZ29lIFVJIixzYW5zLXNlcmlmO3BhZGRpbmc6dmFyKC0taHQtbGljZW5zZS12ZXJ0aWNhbC1wYWRkaW5nLDE2cHgpdmFyKC0taHQtbGljZW5zZS1ob3Jpem9udGFsLXBhZGRpbmcsMTZweCk7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZS1zbWFsbCk7bGluZS1oZWlnaHQ6dmFy'@; put 'KC0taHQtbGluZS1oZWlnaHQtc21hbGwpO2NvbG9yOnZhcigtLWh0LWxpY2Vuc2UtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1saWNlbnNlLWJhY2tncm91bmQtY29sb3IsI2Y3ZjdmOSk7dGV4dC1hbGlnbjpsZWZ0fS5ob3QtZGlzcGxheS1saWNlbnNlLWlu'@; put 'Zm8gYXtmb250LXNpemU6dmFyKC0taHQtbGljZW5zZS1mb250LXNpemUpO2NvbG9yOnZhcigtLWh0LWxpbmstY29sb3IpfS5ob3QtZGlzcGxheS1saWNlbnNlLWluZm8gYTpob3Zlcntjb2xvcjp2YXIoLS1odC1saW5rLWhvdmVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0'@; put 'ZUFycm93e2N1cnNvcjpkZWZhdWx0O3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7ZmxvYXQ6cmlnaHQ7dG9wOmNhbGMoKHZhcigtLWh0LWxpbmUtaGVpZ2h0KSAtIHZhcigtLWh0LWljb24tc2l6ZSkpLzIpO21hcmdpbi1pbmxpbmUtc3RhcnQ6'@; put 'Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMik7bWFyZ2luLWlubGluZS1lbmQ6MXB4O2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0QXV0b2NvbXBsZXRlQXJyb3c6YWZ0ZXJ7Y29udGVudDoiIjtvcGFjaXR5Oi42O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246'@; put 'YWJzb2x1dGU7dG9wOjA7bGVmdDowfVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0QXV0b2NvbXBsZXRlQXJyb3d7ZmxvYXQ6bGVmdH0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dHt3aWR0aDp2YXIoLS1odC1jaGVja2JveC1zaXplKTtoZWlnaHQ6dmFyKC0taHQtY2hl'@; put 'Y2tib3gtc2l6ZSk7dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IDAgMDtvdXRsaW5lOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6Zmlyc3QtY2hp'@; put 'bGR7bWFyZ2luLWlubGluZS1lbmQ6dmFyKC0taHQtZ2FwLXNpemUpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0Omxhc3QtY2hpbGR7bWFyZ2luLWlubGluZS1zdGFydDp2YXIoLS1odC1nYXAtc2l6ZSl9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5w'@; put 'dXQ6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtY2hlY2tib3gtc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWNoZWNrYm94LXNpemUpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtY2hlY2tib3gtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1jaGVja2JveC1i'@; put 'b3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2hlY2tib3gtYmFja2dyb3VuZC1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94O3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjphbGwgdmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbillYXNlLWluLW91dDtkaXNw'@; put 'bGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6YWZ0ZXJ7Y29udGVudDoiIjtjb2xvcjp2YXIoLS1odC1jaGVja2JveC1pY29uLWNvbG9yKTtwb2ludGVyLWV2ZW50czpub25lO2Rpc3Bs'@; put 'YXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOnZhcigtLWh0LWNoZWNrYm94LXNpemUpIWltcG9ydGFudDtoZWlnaHQ6dmFyKC0taHQtY2hlY2tib3gtc2l6ZSkhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmNoZWNr'@; put 'ZWQ6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1jaGVja2VkLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmNo'@; put 'ZWNrZWQ6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDpjaGVja2VkOmRpc2FibGVkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1kaXNhYmxl'@; put 'ZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDpjaGVja2VkOmRpc2FibGVkOmFmdGVye2NvbG9yOnZhcigtLWh0LWNo'@; put 'ZWNrYm94LWNoZWNrZWQtZGlzYWJsZWQtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6Y2hlY2tlZDpmb2N1czpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtZm9jdXMtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5k'@; put 'LWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtZm9jdXMtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6Y2hlY2tlZDpmb2N1czphZnRlcntjb2xvcjp2YXIoLS1odC1jaGVja2JveC1jaGVja2VkLWZvY3VzLWljb24tY29sb3Ip'@; put 'fS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmZvY3VzOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtZm9jdXMtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWZvY3VzLWJhY2tncm91bmQtY29sb3IpO291'@; put 'dGxpbmU6MXB4IHNvbGlkIHZhcigtLWh0LWNoZWNrYm94LWZvY3VzLXJpbmctY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmZvY3VzOmFmdGVye2NvbG9yOnZhcigtLWh0LWNoZWNrYm94LWZvY3VzLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hl'@; put 'Y2tib3hSZW5kZXJlcklucHV0OmRpc2FibGVke2N1cnNvcjppbml0aWFsfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmRpc2FibGVkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWh0LWNoZWNrYm94LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmRpc2FibGVkOmFmdGVye2NvbG9yOnZhcigtLWh0LWNoZWNrYm94LWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0'@; put 'Q2hlY2tib3hSZW5kZXJlcklucHV0OmluZGV0ZXJtaW5hdGU6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWJhY2tncm91bmQtY29s'@; put 'b3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0OmluZGV0ZXJtaW5hdGU6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDppbmRldGVybWluYXRl'@; put 'OmRpc2FibGVkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFu'@; put 'ZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dDppbmRldGVybWluYXRlOmRpc2FibGVkOmFmdGVye2NvbG9yOnZhcigtLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZGlzYWJsZWQtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6aW5k'@; put 'ZXRlcm1pbmF0ZTpmb2N1czpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZm9jdXMtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZm9jdXMtYmFja2dyb3VuZC1jb2xvcil9Lmhh'@; put 'bmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6aW5kZXRlcm1pbmF0ZTpmb2N1czphZnRlcntjb2xvcjp2YXIoLS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWZvY3VzLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0Lm5vVmFsdWV7'@; put 'b3BhY2l0eTouNX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJMYWJlbHtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2N1cnNvcjpwb2ludGVyO2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9'@; put 'LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVyTGFiZWwuZnVsbFdpZHRoe3dpZHRoOjEwMCV9LmhhbmRzb250YWJsZSAuaHRQbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1odC1wbGFjZWhvbGRlci1jb2xvcil9LmhhbmRzb250YWJsZSAuaHREaW1tZWR7Y29sb3I6dmFyKC0taHQtcmVh'@; put 'ZC1vbmx5LWNvbG9yKSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLXJlYWQtb25seS1iYWNrZ3JvdW5kLWNvbG9yKSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRMZWZ0e3RleHQtYWxpZ246bGVmdH0uaGFuZHNvbnRhYmxlIC5odENlbnRlcnt0ZXh0LWFsaWdu'@; put 'OmNlbnRlcn0uaGFuZHNvbnRhYmxlIC5odFJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LmhhbmRzb250YWJsZSAuaHRKdXN0aWZ5e3RleHQtYWxpZ246anVzdGlmeX0uaGFuZHNvbnRhYmxlIC5odFRvcHt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmhhbmRzb250YWJsZSAuaHRNaWRkbGV7dmVydGljYWwt'@; put 'YWxpZ246bWlkZGxlfS5oYW5kc29udGFibGUgLmh0Qm90dG9te3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0uaGFuZHNvbnRhYmxlIC5odEludmFsaWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLWVycm9yLWJhY2tncm91bmQtY29sb3IpIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5o'@; put 'dE5vV3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LmhhbmRzb250YWJsZSAuaHRTZWFyY2hSZXN1bHR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLXN1Y2Nlc3MtYmFja2dyb3VuZC1jb2xvcikhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0LW11bHRpLXNlbGVjdC1yZW5kZXJlcntw'@; put 'YWRkaW5nOnZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1jZWxsLWhvcml6b250YWwtcGFkZGluZyk7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGUgLmh0LW11bHRpLXNlbGVjdC1jaGlwcy1jb250YWluZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDp2YXIoLS1o'@; put 'dC1nYXAtc2l6ZSk7ZmxleC13cmFwOm5vd3JhcDttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGUgLmh0LW11bHRpLXNlbGVjdC1jaGlwe2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6dmFyKC0taHQtZ2FwLXNpemUpO3BhZGRpbmc6dmFyKC0t'@; put 'aHQtY2hpcC12ZXJ0aWNhbC1wYWRkaW5nKWNhbGMoKHZhcigtLWh0LWxpbmUtaGVpZ2h0KSAtIHZhcigtLWh0LWljb24tc2l6ZSkpLzIpdmFyKC0taHQtY2hpcC12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LWNoaXAtaG9yaXpvbnRhbC1wYWRkaW5nKTtib3JkZXItcmFkaXVzOnZhcigtLWh0'@; put 'LWNoaXAtYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZDp2YXIoLS1odC1jaGlwLWJhY2tncm91bmQpO3doaXRlLXNwYWNlOm5vd3JhcDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1zaHJpbms6MDttYXgtd2lkdGg6MTAwcHg7ZGlzcGxheTppbmxpbmUtZmxleH0uaGFuZHNvbnRhYmxlIC5o'@; put 'dC1tdWx0aS1zZWxlY3QtY2hpcC1sYWJlbHt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2NvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdo'@; put 'dCw0MHB4KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1odC1sZXR0ZXItc3BhY2luZywwKTtwYWRkaW5nOjAgdmFyKC0taHQtY2hpcC1nYXApO292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlIC5odC1tdWx0aS1zZWxlY3QtY2hpcC1yZW1vdmV7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0t'@; put 'aHQtaWNvbi1idXR0b24taWNvbi1jb2xvcik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2ZsZXgtc2hyaW5rOjA7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGlu'@; put 'ZzowO2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpIWltcG9ydGFudDtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHQtbXVsdGktc2VsZWN0LWNoaXAtcmVtb3ZlOmJlZm9yZXtjb250ZW50'@; put 'OiIiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5oYW5kc29udGFibGUgLmh0LW11bHRpLXNlbGVjdC1jaGlwLXJlbW92ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3IpfS5oYW5k'@; put 'c29udGFibGUgLmh0LW11bHRpLXNlbGVjdC1vdmVyZmxvd3twYWRkaW5nOnZhcigtLWh0LWNoaXAtdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1jaGlwLWhvcml6b250YWwtcGFkZGluZyk7YmFja2dyb3VuZDp2YXIoLS1odC1jaGlwLWJhY2tncm91bmQpO2JvcmRlci1yYWRpdXM6dmFyKC0t'@; put 'aHQtY2hpcC1ib3JkZXItcmFkaXVzKTtjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleC1zaHJpbms6MDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4fS5oYW5kc29udGFibGVJ'@; put 'bnB1dEhvbGRlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmhhbmRzb250YWJsZUlucHV0SG9sZGVyIC5oYW5kc29udGFibGVJbnB1dHtwYWRkaW5nOmNhbGModmFyKC0taHQtY2VsbC12ZXJ0aWNhbC1wYWRkaW5nLDRweCkgKyAxcHgpY2FsYyh2YXIoLS1odC1jZWxsLWhvcml6'@; put 'b250YWwtcGFkZGluZyw4cHgpICsgMXB4KTtjb2xvcjp2YXIoLS1odC1jZWxsLWVkaXRvci1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNlbGwtZWRpdG9yLWJhY2tncm91bmQtY29sb3IsI2ZmZik7Ym94LXNoYWRvdzppbnNldCAwIDAgMCB2YXIoLS1odC1j'@; put 'ZWxsLWVkaXRvci1ib3JkZXItd2lkdGgsMnB4KSB2YXIoLS1odC1jZWxsLWVkaXRvci1ib3JkZXItY29sb3IsIzFhNDJlOCksMCAwIHZhcigtLWh0LWNlbGwtZWRpdG9yLXNoYWRvdy1ibHVyLXJhZGl1cywwKSAwIHZhcigtLWh0LWNlbGwtZWRpdG9yLXNoYWRvdy1jb2xvcix0cmFuc3BhcmVu'@; put 'dCk7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtvdXRsaW5lLXdpZHRoOjA7bWFyZ2luOjA7ZGlzcGxheTpibG9jaztmb250LWZhbWlseTppbmhlcml0IWltcG9ydGFudDtmb250LXNpemU6aW5oZXJpdCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6aW5o'@; put 'ZXJpdCFpbXBvcnRhbnQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50fS5oYW5kc29udGFibGVJbnB1dEhvbGRlciAuaGFuZHNvbnRhYmxlSW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS5odFNlbGVjdEVkaXRvcntwb3NpdGlvbjphYnNvbHV0ZX0uaHRTZWxlY3RFZGl0b3Igc2Vs'@; put 'ZWN0e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cGFkZGluZzpjYWxjKHZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZyw0cHgpICsgMXB4KWNhbGModmFyKC0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmcsOHB4KSArIDFweCk7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6'@; put 'ZWxsaXBzaXM7Y29sb3I6dmFyKC0taHQtY2VsbC1lZGl0b3ItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLWVkaXRvci1iYWNrZ3JvdW5kLWNvbG9yLCNmZmYpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgdmFyKC0taHQtY2VsbC1lZGl0b3ItYm9yZGVy'@; put 'LXdpZHRoLDJweCkgdmFyKC0taHQtY2VsbC1lZGl0b3ItYm9yZGVyLWNvbG9yLCMxYTQyZTgpLDAgMCB2YXIoLS1odC1jZWxsLWVkaXRvci1zaGFkb3ctYmx1ci1yYWRpdXMsMCkgMCB2YXIoLS1odC1jZWxsLWVkaXRvci1zaGFkb3ctY29sb3IsdHJhbnNwYXJlbnQpO2JveC1zaXppbmc6Ym9y'@; put 'ZGVyLWJveDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjA7bWFyZ2luOjA7cGFkZGluZy1pbmxpbmUtZW5kOjI2cHg7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtvdmVyZmxvdzpoaWRkZW47Zm9udC1mYW1pbHk6aW5oZXJpdCFpbXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0'@; put 'YW50O2xpbmUtaGVpZ2h0OmluaGVyaXQhaW1wb3J0YW50Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lIWltcG9ydGFudH0uaHRTZWxlY3RFZGl0b3Igc2VsZWN0OmZvY3Vze291dGxpbmU6bm9uZX0uaHRTZWxlY3RFZGl0b3IgLmh0QXV0b2NvbXBsZXRlQXJyb3d7ei1pbmRleDoxO3BvaW50ZXIt'@; put 'ZXZlbnRzOm5vbmU7bWFyZ2luLWlubGluZS1lbmQ6NHB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZS5saXN0Ym94e2JveC1zaGFkb3c6dmFyKC0taHQtbWVudS1zaGFkb3cteCwwKSB2YXIoLS1odC1tZW51LXNoYWRvdy15LDApIHZhcigtLWh0LW1l'@; put 'bnUtc2hhZG93LWJsdXIsOHB4KSBjb2xvci1taXgoaW4gc3JnYix2YXIoLS1odC1tZW51LXNoYWRvdy1jb2xvciwjMDAwKXZhcigtLWh0LW1lbnUtc2hhZG93LW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpO2JvcmRlcjp2YXIoLS1odC1tZW51LWJvcmRlci13aWR0aCwxcHgpc29saWQgdmFy'@; put 'KC0taHQtbWVudS1ib3JkZXItY29sb3IsI2U1ZTVlOSk7bWFyZ2luOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odF9tYXN0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZS5saXN0Ym94IC53dEhvbGRl'@; put 'cntvdmVyZmxvdzphdXRvO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IC53dEhpZGVyLC5oYW5kc29udGFibGUubGlzdGJveCAuaHRDb3Jle2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxle292ZXJmbG93'@; put 'OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0cjpsYXN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0cjpmaXJz'@; put 'dC1jaGlsZCB0ZCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGR7Ym9yZGVyLWNvbG9yOiMwMDAwIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRke3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93'@; put 'OmVsbGlwc2lzO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIC53dEJvcmRlcnt2aXNpYmlsaXR5OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgc3Ryb25ne2NvbG9yOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NzAwfS5oYW5kc29u'@; put 'dGFibGUubGlzdGJveCB0YWJsZSB0ciB0ZDpob3ZlciB0ZHtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvcil2YXIoLS1odC1tZW51LWl0ZW0taG92ZXItY29sb3Itb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVu'@; put 'dCkhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRke3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbiliYWNrZ3JvdW5kIGVhc2UtaW4tb3V0fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0ZDpob3Zl'@; put 'cntjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvcil2YXIoLS1odC1tZW51LWl0ZW0taG92ZXItY29sb3Itb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCkhaW1wb3J0YW50fS5oYW5kc29udGFibGUu'@; put 'bGlzdGJveCB0YWJsZSB0ZC5jdXJyZW50Om5vdChbYXJpYS1leHBhbmRlZD10cnVlXSl7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0taHQtYWNjZW50LWNvbG9yKX0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGQuaHREaW1tZWR7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zdHls'@; put 'ZTppbmhlcml0O2NvbG9yOmluaGVyaXQhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0ZC5odERpbW1lZDpub3QoLmhhbmRzb250YWJsZS5saXN0Ym94IHRhYmxlIHRkOmhvdmVyKXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQhaW1wb3J0YW50fS5oYW5kc29udGFibGUu'@; put 'bGlzdGJveCB0YWJsZSB0aGVhZCB0aHt0ZXh0LWFsaWduOmxlZnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0YWJsZSB0aGVhZCB0aCAucmVsYXRpdmV7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpICsgdmFyKC0t'@; put 'aHQtZ2FwLXNpemUpKTtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLWh0LWNlbGwtdmVydGljYWwtcGFkZGluZykgKyB2YXIoLS1odC1nYXAtc2l6ZSkpfS5oYW5kc29udGFibGUubGlzdGJveCAuaHRfY2xvbmVfdG9wIC53dEhpZGVye292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmxp'@; put 'c3Rib3ggLmh0X2Nsb25lX3RvcCB0YWJsZXtib3JkZXItcmFkaXVzOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odEJvcmRlcnMgZGl2e2JhY2tncm91bmQ6MCAwIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlLmF1dG9jb21wbGV0ZUVkaXRvciB0ci5odF9fcm93X2V2ZW4gdGgsLmhhbmRzb250'@; put 'YWJsZS5hdXRvY29tcGxldGVFZGl0b3IgdHIuaHRfX3Jvd19ldmVuIHRkLC5oYW5kc29udGFibGUuYXV0b2NvbXBsZXRlRWRpdG9yIHRyLmh0X19yb3dfb2RkIHRoLC5oYW5kc29udGFibGUuYXV0b2NvbXBsZXRlRWRpdG9yIHRyLmh0X19yb3dfb2RkIHRke2JhY2tncm91bmQtY29sb3I6dmFy'@; put 'KC0taHQtYmFja2dyb3VuZC1jb2xvciwjZmZmKX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGFibGUgdGhlYWQgdGh7dGV4dC1hbGlnbjpyaWdodH0uaGFuZHNvbnRhYmxlRWRpdG9ye3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVj'@; put 'dC1lZGl0b3J7Ym94LXNoYWRvdzp2YXIoLS1odC1tZW51LXNoYWRvdy14LDApIHZhcigtLWh0LW1lbnUtc2hhZG93LXksMCkgdmFyKC0taHQtbWVudS1zaGFkb3ctYmx1ciw4cHgpIGNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtc2hhZG93LWNvbG9yLCMwMDApdmFyKC0taHQtbWVu'@; put 'dS1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7c2Nyb2xsYmFyLXdpZHRoOmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcil2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLWh0LW1l'@; put 'bnUtYm9yZGVyLXJhZGl1cyl2YXIoLS1odC1tZW51LWJvcmRlci1yYWRpdXMpO2JvcmRlcjp2YXIoLS1odC1tZW51LWJvcmRlci13aWR0aClzb2xpZCB2YXIoLS1odC1tZW51LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTt3aWR0aDptYXgtY29u'@; put 'dGVudDttaW4td2lkdGg6MTIwcHg7cGFkZGluZzp2YXIoLS1odC1tZW51LXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtbWVudS1ob3Jpem9udGFsLXBhZGRpbmcpO292ZXJmbG93LXk6YXV0b30uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIC5odC1tdWx0aS1z'@; put 'ZWxlY3QtZWRpdG9yLXNlYXJjaC1pbnB1dC13cmFwcGVye3BhZGRpbmc6dmFyKC0taHQtbWVudS1pdGVtLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtbWVudS1pdGVtLWhvcml6b250YWwtcGFkZGluZyk7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDp2YXIoLS1odC1nYXAtc2l6ZSk7YWxpZ24t'@; put 'c2VsZjpzdHJldGNoO2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yLXNlYXJjaC1pY29ue2xlZnQ6Y2FsYyh2YXIoLS1odC1tZW51LWl0ZW0taG9yaXpvbnRhbC1w'@; put 'YWRkaW5nKSArIDEwcHgpO29wYWNpdHk6LjU7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjE7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7cG9zaXRpb246'@; put 'YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIGlucHV0Lmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VhcmNoLWlucHV0e2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVz'@; put 'OnZhcigtLWh0LWlucHV0LWJvcmRlci1yYWRpdXMpO3dpZHRoOjEwMCU7Y29sb3I6dmFyKC0taHQtaW5wdXQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWh0LWlucHV0LWJv'@; put 'cmRlci1jb2xvcik7dHJhbnNpdGlvbjp2YXIoLS1odC10YWJsZS10cmFuc2l0aW9uKWFsbCBlYXNlLWluLW91dDtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7cGFkZGluZzp2YXIoLS1odC1pbnB1dC12ZXJ0aWNhbC1wYWRk'@; put 'aW5nKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcpdmFyKC0taHQtaW5wdXQtdmVydGljYWwtcGFkZGluZykzMnB4fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgaW5wdXQuaHQtbXVsdGktc2VsZWN0LWVkaXRvci1zZWFyY2gtaW5wdXQ6'@; put 'aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtaG92ZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRh'@; put 'YmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIGlucHV0Lmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VhcmNoLWlucHV0OmRpc2FibGVke2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVk'@; put 'LWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciBpbnB1dC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yLXNlYXJjaC1pbnB1dDpm'@; put 'b2N1c3tib3JkZXItY29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWJhY2tncm91bmQtY29sb3IpO291dGxpbmUtb2Zm'@; put 'c2V0OjA7Ym94LXNoYWRvdzpub25lO291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIGlucHV0Lmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9y'@; put 'KTtvcGFjaXR5Oi42fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3Itc2VwYXJhdG9ye2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtbWVudS1ib3JkZXItY29sb3IpO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDttYXJnaW46'@; put 'dmFyKC0taHQtbWVudS12ZXJ0aWNhbC1wYWRkaW5nKTAgdmFyKC0taHQtbWVudS12ZXJ0aWNhbC1wYWRkaW5nKTA7cGFkZGluZzowfS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWx7d2lkdGg6MTAwJTtwYWRkaW5nOnZhcigtLWh0LWdhcC1zaXplKXZhcigt'@; put 'LWh0LW1lbnUtaG9yaXpvbnRhbC1wYWRkaW5nKTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmU7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWwgbGl7YmFj'@; put 'a2dyb3VuZDp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTtwYWRkaW5nOnZhcigtLWh0LW1lbnUtaXRlbS12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNv'@; put 'cjpwb2ludGVyO2FsaWduLXNlbGY6c3RyZXRjaDthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWwgbGkgKntjdXJzb3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3Qt'@; put 'ZWRpdG9yIHVsIGxpLmh0LW11bHRpLXNlbGVjdC1lZGl0b3ItaXRlbS1zZWxlY3RlZHtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtaXRlbS1hY3RpdmUtY29sb3IpdmFyKC0taHQtbWVudS1pdGVtLWFjdGl2ZS1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFy'@; put 'ZW50KX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpIGRpdntmbGV4OjEgMCAwO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9LmhhbmRzb250YWJsZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciB1bCBsaSBkaXYgaW5wdXR7YXBw'@; put 'ZWFyYW5jZTpub25lO3dpZHRoOnZhcigtLWh0LWNoZWNrYm94LXNpemUpO2hlaWdodDp2YXIoLS1odC1jaGVja2JveC1zaXplKTttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0'@; put 'b3IgdWwgbGkgZGl2IGlucHV0OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmhhbmRzb250YWJsZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciB1bCBsaSBkaXYgaW5wdXQ6YmVmb3Jle2NvbnRlbnQ6IiI7Ym94LXNp'@; put 'emluZzpib3JkZXItYm94O3dpZHRoOnZhcigtLWh0LWNoZWNrYm94LXNpemUpO2hlaWdodDp2YXIoLS1odC1jaGVja2JveC1zaXplKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWNoZWNrYm94LWJvcmRlci1yYWRpdXMpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtY2hlY2tib3gtYm9yZGVy'@; put 'LWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWh0LWNoZWNrYm94LWJhY2tncm91bmQtY29sb3IpO2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uaGFuZHNvbnRhYmxl'@; put 'RWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpIGRpdiBpbnB1dDpjaGVja2VkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0taHQtY2hlY2tib3gtY2hlY2tlZC1iYWNrZ3JvdW5kLWNv'@; put 'bG9yKX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpIGRpdiBpbnB1dDpjaGVja2VkOmFmdGVye2NvbG9yOnZhcigtLWh0LWNoZWNrYm94LWNoZWNrZWQtaWNvbi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9LmhhbmRzb250YWJs'@; put 'ZUVkaXRvciAuaHQtbXVsdGktc2VsZWN0LWVkaXRvciB1bCBsaSBkaXYgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS5oYW5kc29udGFibGVFZGl0b3IgLmh0LW11bHRpLXNlbGVjdC1lZGl0b3IgdWwgbGkgZGl2IGxhYmVse2NvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpO3RleHQt'@; put 'b3ZlcmZsb3c6ZWxsaXBzaXM7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1odC1sZXR0ZXItc3BhY2luZyk7d2lkdGg6MTAw'@; put 'JTtwYWRkaW5nOjAgMCAwIGNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpOmhvdmVye2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtbWVudS1pdGVtLWhv'@; put 'dmVyLWNvbG9yKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KX0uaGFuZHNvbnRhYmxlRWRpdG9yIC5odC1tdWx0aS1zZWxlY3QtZWRpdG9yIHVsIGxpOmhhcyhpbnB1dDpmb2N1cyl7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gc3JnYix2'@; put 'YXIoLS1odC1tZW51LWl0ZW0taG92ZXItY29sb3IpdmFyKC0taHQtbWVudS1pdGVtLWhvdmVyLWNvbG9yLW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpfS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RDYXB0aW9ue3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1odC1pbnB1dC12ZXJ0aWNhbC1w'@; put 'YWRkaW5nKXZhcigtLWh0LWlucHV0LWhvcml6b250YWwtcGFkZGluZyk7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2JvcmRl'@; put 'ci1yYWRpdXM6dmFyKC0taHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2JvcmRlcjp2YXIoLS1odC1pbnB1dC1ib3JkZXItd2lkdGgpc29saWQgdmFyKC0taHQtaW5wdXQtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1'@; put 'dC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWJhY2tncm91bmQtY29sb3IpO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7'@; put 'bWFyZ2luOjA7cGFkZGluZy1pbmxpbmUtZW5kOmNhbGModmFyKC0taHQtaW5wdXQtaG9yaXpvbnRhbC1wYWRkaW5nKSArIHZhcigtLWh0LWljb24tc2l6ZSkpO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RDYXB0aW9uOmFm'@; put 'dGVye2NvbnRlbnQ6IiI7cmlnaHQ6Y2FsYyh2YXIoLS1odC1pbnB1dC1ob3Jpem9udGFsLXBhZGRpbmcpIC0gdmFyKC0taHQtaWNvbi1zaXplKS80KTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJs'@; put 'ZSAuaHRVSVNlbGVjdENhcHRpb246aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtaG92ZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1iYWNrZ3Jv'@; put 'dW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0Q2FwdGlvbjpkaXNhYmxlZHtib3JkZXItY29sb3I6dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RDYXB0aW9uOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWZvcmVn'@; put 'cm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdHtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fS5oYW5kc29udGFibGUg'@; put 'Lmh0VUlTZWxlY3Q6Zm9jdXMgLmh0VUlTZWxlY3RDYXB0aW9ue2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtZm9j'@; put 'dXMtYmFja2dyb3VuZC1jb2xvcil9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb246YWZ0ZXJ7cmlnaHQ6YXV0bztsZWZ0OmNhbGModmFyKC0taHQtaW5wdXQtaG9yaXpvbnRhbC1wYWRkaW5nKSAtIHZhcigtLWh0LWljb24tc2l6ZSkvNCl9LmhhbmRzb250YWJsZSAu'@; put 'aHRGaWx0ZXJzTWVudUNvbmRpdGlvbiAuaHRVSUlucHV0IGlucHV0LC5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVWYWx1ZSAuaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoIGlucHV0e3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1odC1pbnB1dC12ZXJ0aWNhbC1wYWRkaW5nKXZhcigtLWh0'@; put 'LWlucHV0LWhvcml6b250YWwtcGFkZGluZyk7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2JvcmRlci1yYWRpdXM6dmFyKC0t'@; put 'aHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2JvcmRlcjp2YXIoLS1odC1pbnB1dC1ib3JkZXItd2lkdGgpc29saWQgdmFyKC0taHQtaW5wdXQtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1pbnB1dC1mb3JlZ3JvdW5kLWNv'@; put 'bG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWJhY2tncm91bmQtY29sb3IpO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7b3V0bGluZTpub25lIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0'@; put 'aW9uIC5odFVJSW5wdXQgaW5wdXQ6aG92ZXIsLmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RTZWFyY2ggaW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWhvdmVyLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5w'@; put 'dXQtaG92ZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXQgaW5wdXQ6ZGlzYWJsZWQsLmhhbmRzb250YWJsZSAuaHRG'@; put 'aWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RTZWFyY2ggaW5wdXQ6ZGlzYWJsZWR7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3Vu'@; put 'ZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXQgaW5wdXQ6Zm9jdXMsLmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RT'@; put 'ZWFyY2ggaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtaW5wdXQtZm9jdXMtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9y'@; put 'KX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXR7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO291dGxpbmU6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0SWNvbntwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC5odFVJSW5w'@; put 'dXQuaHRVSUJ1dHRvbiBpbnB1dCwuaGFuZHNvbnRhYmxlIC5odC1idXR0b257bWluLXdpZHRoOjY0cHg7cGFkZGluZzp2YXIoLS1odC1idXR0b24tdmVydGljYWwtcGFkZGluZyl2YXIoLS1odC1idXR0b24taG9yaXpvbnRhbC1wYWRkaW5nKTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6'@; put 'ZTp2YXIoLS1odC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1idXR0b24tYm9yZGVyLXJhZGl1cyk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpw'@; put 'b2ludGVyO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7b3V0bGluZTpub25lIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbkNhbmNlbCBpbnB1'@; put 'dCwuaGFuZHNvbnRhYmxlIC5odC1idXR0b24tLXNlY29uZGFyeXtib3JkZXItY29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTtjb2xvcjp2YXIoLS1o'@; put 'dC1zZWNvbmRhcnktYnV0dG9uLWZvcmVncm91bmQtY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0dG9uQ2FuY2VsIGlucHV0OmhvdmVyLC5oYW5kc29udGFibGUgLmh0LWJ1dHRvbi0tc2Vjb25kYXJ5OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1odC1zZWNvbmRhcnkt'@; put 'YnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1zZWNvbmRhcnktYnV0dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWh0LXNlY29uZGFyeS1idXR0b24taG92ZXItZm9yZWdyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAu'@; put 'aHRVSUlucHV0Lmh0VUlCdXR0b25DYW5jZWwgaW5wdXQ6ZGlzYWJsZWQsLmhhbmRzb250YWJsZSAuaHQtYnV0dG9uLS1zZWNvbmRhcnk6ZGlzYWJsZWR7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXNlY29uZGFyeS1idXR0b24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9y'@; put 'OnZhcigtLWh0LXNlY29uZGFyeS1idXR0b24tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbkNhbmNlbCBpbnB1dDpmb2N1'@; put 'cywuaGFuZHNvbnRhYmxlIC5odC1idXR0b24tLXNlY29uZGFyeTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1mb2N1cy1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1mb2N1cy1iYWNrZ3JvdW5kLWNv'@; put 'bG9yKTtjb2xvcjp2YXIoLS1odC1zZWNvbmRhcnktYnV0dG9uLWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcil9Lmh0VUlJbnB1dC5odFVJQnV0dG9uT0sgaW5wdXQsLmh0LWJ1dHRvbi0tcHJpbWFyeXtib3JkZXItY29s'@; put 'b3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWZvcmVncm91bmQtY29sb3IpfS5odFVJSW5wdXQuaHRVSUJ1'@; put 'dHRvbk9LIGlucHV0OmhvdmVyLC5odC1idXR0b24tLXByaW1hcnk6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1wcmltYXJ5LWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9y'@; put 'KTtjb2xvcjp2YXIoLS1odC1wcmltYXJ5LWJ1dHRvbi1ob3Zlci1mb3JlZ3JvdW5kLWNvbG9yKX0uaHRVSUlucHV0Lmh0VUlCdXR0b25PSyBpbnB1dDpkaXNhYmxlZCwuaHQtYnV0dG9uLS1wcmltYXJ5OmRpc2FibGVke2JvcmRlci1jb2xvcjp2YXIoLS1odC1wcmltYXJ5LWJ1dHRvbi1kaXNh'@; put 'YmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcil9Lmh0VUlJbnB1dC5odFVJQnV0dG9u'@; put 'T0sgaW5wdXQ6Zm9jdXMsLmh0LWJ1dHRvbi0tcHJpbWFyeTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0taHQtcHJpbWFyeS1idXR0b24tZm9jdXMtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWZvY3VzLWJhY2tncm91bmQtY29sb3IpO2Nv'@; put 'bG9yOnZhcigtLWh0LXByaW1hcnktYnV0dG9uLWZvY3VzLWZvcmVncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlve3BhZGRpbmc6dmFyKC0taHQtZ2FwLXNpemUpY2FsYygyKnZhcigtLWh0LWdh'@; put 'cC1zaXplKSk7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDp2YXIoLS1odC1nYXAtc2l6ZSk7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOjA7cGFkZGluZy1ib3R0b206MDtkaXNwbGF5OmlubGluZS1mbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbzpmaXJzdC1jaGls'@; put 'ZHtwYWRkaW5nLWlubGluZS1zdGFydDowfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXXt3aWR0aDp2YXIoLS1odC1yYWRpby1zaXplKTtoZWlnaHQ6dmFyKC0taHQtcmFkaW8tc2l6ZSk7YXBwZWFyYW5jZTpub25lO2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRp'@; put 'dXM6Y2FsYyguNSp2YXIoLS1odC1yYWRpby1zaXplKSk7b3V0bGluZTpub25lO21hcmdpbjowO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpiZWZvcmV7Y29udGVudDoiIjtib3JkZXItcmFkaXVzOmNhbGMoLjUqdmFyKC0taHQt'@; put 'cmFkaW8tc2l6ZSkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtcmFkaW8tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXJhZGlvLWJhY2tncm91bmQtY29sb3IpO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MH0uaGFuZHNvbnRhYmxlIC5o'@; put 'dFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106YWZ0ZXJ7Y29udGVudDoiIjtjb2xvcjp2YXIoLS1odC1yYWRpby1pY29uLWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmJlZm9y'@; put 'ZXtib3JkZXItY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphZnRl'@; put 'cntjb2xvcjp2YXIoLS1odC1yYWRpby1jaGVja2VkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmRpc2FibGVke2N1cnNvcjppbml0aWFsfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVj'@; put 'a2VkOmRpc2FibGVkOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJ'@; put 'UmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpkaXNhYmxlZDphZnRlcntjb2xvcjp2YXIoLS1odC1yYWRpby1jaGVja2VkLWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmZvY3VzOmJlZm9yZXtib3Jk'@; put 'ZXItY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1mb2N1cy1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tY2hlY2tlZC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tl'@; put 'ZDpmb2N1czphZnRlcntjb2xvcjp2YXIoLS1odC1yYWRpby1jaGVja2VkLWZvY3VzLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpkaXNhYmxlZHtjdXJzb3I6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1y'@; put 'YWRpb106ZGlzYWJsZWQ6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1odC1yYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtcmFkaW8tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlvPmlucHV0W3R5'@; put 'cGU9cmFkaW9dOmRpc2FibGVkOmFmdGVye2NvbG9yOnZhcigtLWh0LXJhZGlvLWRpc2FibGVkLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXTpmb2N1czpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXJhZGlvLWZvY3VzLWJvcmRlci1j'@; put 'b2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1yYWRpby1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKTtvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1odC1yYWRpby1mb2N1cy1yaW5nLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6YWZ0'@; put 'ZXJ7Y29sb3I6dmFyKC0taHQtcmFkaW8tZm9jdXMtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlvIGxhYmVse3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjppbmhlcml0fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbyBsYWJlbDpiZWZvcmV7Y29u'@; put 'dGVudDoiIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbnt3aWR0aDp2YXIoLS1odC1pY29uLWJ1dHRvbi1oaXQtYXJlYS1zaXplKTtoZWlnaHQ6'@; put 'dmFyKC0taHQtaWNvbi1idXR0b24taGl0LWFyZWEtc2l6ZSk7bWFyZ2luOmNhbGMoLTEqKHZhcigtLWh0LWljb24tYnV0dG9uLWhpdC1hcmVhLXNpemUpIC0gdmFyKC0taHQtaWNvbi1zaXplKSkvMiArIDFweCk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO3RleHQtaW5k'@; put 'ZW50Oi0xMDBweDtmbGV4LXNocmluazowO2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OnZpc2libGV9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3I6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b246YmVmb3Jle2NvbnRlbnQ6IiI7'@; put 'd2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTttYXJnaW4tdG9wOmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO21hcmdpbi1sZWZ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtY29sbGFw'@; put 'c2UtYnV0dG9uLWJvcmRlci1yYWRpdXMpO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7ei1pbmRleDoxO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUlu'@; put 'ZGljYXRvcjphZnRlciwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9uOmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTttYXJnaW4tdG9wOmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO21hcmdpbi1s'@; put 'ZWZ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWJvcmRlci1yYWRpdXMpO3RyYW5zaXRpb246dmFyKC0taHQtdGFibGUtdHJhbnNpdGlvbilhbGwgZWFzZS1pbi1vdXQ7ei1pbmRleDowO2Rpc3BsYXk6YmxvY2s7'@; put 'cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5leHBhbmRlZDpiZWZvcmUsLmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuaHRfbmVzdGluZ0NvbGxhcHNlOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5o'@; put 'dF9uZXN0aW5nQnV0dG9uLmV4cGFuZGVkOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdDb2xsYXBzZTpiZWZvcmV7Y29sb3I6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLW9wZW4taWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJ'@; put 'bmRpY2F0b3IuZXhwYW5kZWQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuaHRfbmVzdGluZ0NvbGxhcHNlOmFmdGVyLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uZXhwYW5kZWQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5o'@; put 'dF9uZXN0aW5nQ29sbGFwc2U6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1iYWNrZ3JvdW5kLWNvbG9yKTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1ib3JkZXItY29sb3IpfS5oYW5kc29udGFi'@; put 'bGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmV4cGFuZGVkOmhvdmVyOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nQ29sbGFwc2U6aG92ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uZXhwYW5kZWQ6aG92ZXI6YmVm'@; put 'b3JlLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0NvbGxhcHNlOmhvdmVyOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1ob3Zlci1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5leHBhbmRl'@; put 'ZDpob3ZlcjphZnRlciwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nQ29sbGFwc2U6aG92ZXI6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5leHBhbmRlZDpob3ZlcjphZnRlciwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9u'@; put 'Lmh0X25lc3RpbmdDb2xsYXBzZTpob3ZlcjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWJhY2tncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWJvcmRl'@; put 'ci1jb2xvcil9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuY29sbGFwc2VkOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nRXhwYW5kOmJlZm9yZSwuaGFuZHNvbnRhYmxlIC5odF9uZXN0aW5nQnV0dG9uLmNvbGxhcHNlZDpi'@; put 'ZWZvcmUsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tY2xvc2UtaWNvbi1jb2xvcil9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuY29sbGFwc2VkOmFmdGVyLC5o'@; put 'YW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmh0X25lc3RpbmdFeHBhbmQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5jb2xsYXBzZWQ6YWZ0ZXIsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmFmdGVye2JhY2tn'@; put 'cm91bmQtY29sb3I6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3NlLWJhY2tncm91bmQtY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9zZS1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmNv'@; put 'bGxhcHNlZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3IuaHRfbmVzdGluZ0V4cGFuZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSAuaHRfbmVzdGluZ0J1dHRvbi5jb2xsYXBzZWQ6aG92ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLmh0X25lc3Rp'@; put 'bmdCdXR0b24uaHRfbmVzdGluZ0V4cGFuZDpob3ZlcjpiZWZvcmV7Y29sb3I6dmFyKC0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3NlLWhvdmVyLWljb24tY29sb3IpfS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmNvbGxhcHNlZDpob3ZlcjphZnRlciwuaGFuZHNvbnRhYmxl'@; put 'IC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nRXhwYW5kOmhvdmVyOmFmdGVyLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uY29sbGFwc2VkOmhvdmVyOmFmdGVyLC5oYW5kc29udGFibGUgLmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0V4cGFuZDpob3ZlcjphZnRl'@; put 'cntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9zZS1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tY2xvc2UtaG92ZXItYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoLmh0'@; put 'X19hY3RpdmVfaGlnaGxpZ2h0IC5jb2xsYXBzaWJsZUluZGljYXRvci5jb2xsYXBzZWQ6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmh0X25lc3RpbmdFeHBhbmQ6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2Fj'@; put 'dGl2ZV9oaWdobGlnaHQgLmh0X25lc3RpbmdCdXR0b24uY29sbGFwc2VkOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdFeHBhbmQ6YmVmb3Jle2NvbG9yOnZhcigtLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9z'@; put 'ZS1pY29uLWFjdGl2ZS1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuY29sbGFwc2libGVJbmRpY2F0b3IuY29sbGFwc2VkOmhvdmVyOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5jb2xsYXBzaWJsZUluZGljYXRvci5o'@; put 'dF9uZXN0aW5nRXhwYW5kOmhvdmVyOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5odF9uZXN0aW5nQnV0dG9uLmNvbGxhcHNlZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuaHRfbmVzdGluZ0J1dHRvbi5o'@; put 'dF9uZXN0aW5nRXhwYW5kOmhvdmVyOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tY2xvc2UtaG92ZXItaWNvbi1hY3RpdmUtY29sb3IpfS5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmV4cGFuZGVkOmJlZm9y'@; put 'ZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0IC5jb2xsYXBzaWJsZUluZGljYXRvci5odF9uZXN0aW5nQ29sbGFwc2U6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmh0X25lc3RpbmdCdXR0b24uZXhwYW5kZWQ6YmVmb3JlLC5oYW5k'@; put 'c29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0NvbGxhcHNlOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1pY29uLWFjdGl2ZS1jb2xvcil9LmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hs'@; put 'aWdodCAuY29sbGFwc2libGVJbmRpY2F0b3IuZXhwYW5kZWQ6aG92ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmh0X25lc3RpbmdDb2xsYXBzZTpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0'@; put 'aXZlX2hpZ2hsaWdodCAuaHRfbmVzdGluZ0J1dHRvbi5leHBhbmRlZDpob3ZlcjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nQ29sbGFwc2U6aG92ZXI6YmVmb3Jle2NvbG9yOnZhcigtLWh0LWNvbGxhcHNl'@; put 'LWJ1dHRvbi1vcGVuLWhvdmVyLWljb24tYWN0aXZlLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0Um93c3BhbkhlYWRlcit0aHtib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjB9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5odFJvd3NwYW5IZWFkZXJ7dmVydGljYWwtYWxpZ246Ym90'@; put 'dG9tO2hlaWdodDphdXRvO292ZXJmbG93OnZpc2libGV9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5odFJvd3NwYW5IZWFkZXIuaHRfX2FjdGl2ZV9oaWdobGlnaHR7Ym9yZGVyLWlubGluZS1zdGFydC1jb2xvcjp2YXIoLS1odC1oZWFkZXItYWN0aXZlLWJvcmRlci1jb2xvcik7ei1pbmRleDox'@; put 'fS5oYW5kc29udGFibGUuaHRSb3dIZWFkZXJzLmh0SGFzUm93c3BhbkhlYWRlcnMgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFu'@; put 'ZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaGFuZHNvbnRhYmxlLmh0'@; put 'Um93SGVhZGVycy5odEhhc1Jvd3NwYW5IZWFkZXJzIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQ6aXMoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6'@; put 'bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmhhbmRzb250YWJsZS5odEhhc1Jvd3NwYW5IZWFkZXJz'@; put 'IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQgLmh0Q29yZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZDpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhhcmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xr'@; put 'KSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFuZyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uaGFuZHNvbnRhYmxlLmh0SGFzUm93c3BhbkhlYWRlcnMg'@; put 'Lmh0X2Nsb25lX2lubGluZV9zdGFydCAuaHRDb3JlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayks'@; put 'OmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5oYW5kc29udGFibGUgLmh0X21hc3Rlcjpub3QoLmlubmVy'@; put 'Qm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKSB0aGVhZCB0aC5odFJvd3NwYW5Cb3R0b21MZXZlbCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlclRvcCk6bm90KC5pbm5lckJvcmRlckJvdHRvbSl+LmhhbmRzb250YWJsZSB0aGVhZCB0aC5odFJvd3Nw'@; put 'YW5Cb3R0b21MZXZlbHtib3JkZXItYm90dG9tLXdpZHRoOjB9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5oaWRkZW5IZWFkZXI6bm90KDpmaXJzdC1vZi10eXBlKXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5oaWRkZW5IZWFkZXJUZXh0IC5jb2xIZWFkZXJ7b3BhY2l0eTow'@; put 'fS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVscz4ucmVsYXRpdmV7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHg7ZGlzcGxheTpmbGV4fS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVscyBzcGFuOmxhc3QtY2hpbGR7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0taHQtaWNv'@; put 'bi1zaXplKSArIDVweCl9LmhhbmRzb250YWJsZSB0aC5odF9uZXN0aW5nTGV2ZWxzIHNwYW4uaHRfbmVzdGluZ0xldmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVscyBzcGFuLmh0X25lc3RpbmdMZXZlbF9lbXB0eXtvcmRlcjotMjt3aWR0'@; put 'aDo1cHg7aGVpZ2h0OjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmh0X25lc3RpbmdMZXZlbHMgLmh0X25lc3RpbmdCdXR0b257Y3Vyc29yOnBvaW50ZXI7b3JkZXI6LTE7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0'@; put 'aC5iZWZvcmVIaWRkZW5Db2x1bW4sLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXIsLmhhbmRz'@; put 'b250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjphZnRlcntjb2xvcjp2YXIoLS1odC1oaWRkZW4taW5kaWNhdG9yLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01'@; put 'MCUpO3dpZHRoOjEwcHghaW1wb3J0YW50O2hlaWdodDoxMHB4IWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cmlnaHQ6LTJweH0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9y'@; put 'ZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7bGVmdDotMnB4fS5oYW5kc29udGFibGUgdGguaHRfX2FjdGl2ZV9oaWdobGlnaHQuYmVmb3JlSGlkZGVuQ29sdW1uOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlciwu'@; put 'aGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0LmFmdGVySGlkZGVuQ29sdW1uOmFmdGVye2NvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1pY29uLWNv'@; put 'bG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1pY29uLWNvbG9yKSl9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXJ7cmlnaHQ6aW5pdGlhbDtsZWZ0Oi0ycHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSlyb3RhdGUoMTgwZGVnKX1bZGly'@; put 'PXJ0bF0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZXtyaWdodDotMnB4O2xlZnQ6aW5pdGlhbDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKXJvdGF0ZSgxODBkZWcpfS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93LC5oYW5kc29udGFibGUgdGguYWZ0'@; put 'ZXJIaWRkZW5Sb3d7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93OmFmdGVyLC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUgdGgu'@; put 'YWZ0ZXJIaWRkZW5Sb3c6YWZ0ZXJ7Y29sb3I6dmFyKC0taHQtaGlkZGVuLWluZGljYXRvci1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTt3aWR0aDoxMHB4IWltcG9ydGFudDtoZWlnaHQ6MTBweCFpbXBvcnRhbnR9LmhhbmRzb250'@; put 'YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2JvdHRvbTotMnB4fS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt0b3A6LTJweH0uaGFuZHNvbnRhYmxlIHRoLmh0X19hY3Rp'@; put 'dmVfaGlnaGxpZ2h0LmJlZm9yZUhpZGRlblJvdzpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodC5iZWZvcmVIaWRkZW5Sb3c6YWZ0ZXIsLmhhbmRzb250YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodC5hZnRlckhpZGRlblJvdzpiZWZvcmUsLmhhbmRzb250'@; put 'YWJsZSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodC5hZnRlckhpZGRlblJvdzphZnRlcntjb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtaWNvbi1jb2xvcix2YXIoLS1odC1pY29uLWFjdGl2ZS1idXR0b24taWNvbi1jb2xvcikpfS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGV7Ym94'@; put 'LXNpemluZzpib3JkZXItYm94O3dpZHRoOnZhcigtLWh0LWljb24tYnV0dG9uLWhpdC1hcmVhLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLWJ1dHRvbi1oaXQtYXJlYS1zaXplKTttYXJnaW46Y2FsYygtMSoodmFyKC0taHQtaWNvbi1idXR0b24taGl0LWFyZWEtc2l6ZSkgLSB2YXIoLS1o'@; put 'dC1pY29uLXNpemUpKS8yICsgMXB4KTtib3gtc2hhZG93Om5vbmU7Y29sb3I6aW5oZXJpdDt6LWluZGV4OjE7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2ZsZXgtc2hyaW5rOjA7cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OnZpc2libGV9Lmhh'@; put 'bmRzb250YWJsZSAuY2hhbmdlVHlwZTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpO21hcmdpbi10b3A6Y2FsYygtLjUqdmFyKC0taHQtaWNvbi1zaXplKSk7bWFyZ2luLWxlZnQ6Y2FsYygtLjUqdmFyKC0taHQt'@; put 'aWNvbi1zaXplKSk7Y29sb3I6dmFyKC0taHQtaWNvbi1idXR0b24taWNvbi1jb2xvcik7ei1pbmRleDoxO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJX0uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBlOmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0t'@; put 'aHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTttYXJnaW4tdG9wOmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO21hcmdpbi1sZWZ0OmNhbGMoLS41KnZhcigtLWh0LWljb24tc2l6ZSkpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaWNvbi1idXR0b24tYm9yZGVy'@; put 'LXJhZGl1cyk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0taHQtaWNvbi1idXR0b24tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpO3otaW5kZXg6MDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3Rv'@; put 'cDo1MCU7bGVmdDo1MCV9LmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZTpob3ZlcntjdXJzb3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBlOmhvdmVyOmJlZm9yZXtjb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1ob3Zlci1pY29uLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5jaGFu'@; put 'Z2VUeXBlOmhvdmVyOmFmdGVye2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWljb24tYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5odF9fYWN0'@; put 'aXZlX2hpZ2hsaWdodCAuY2hhbmdlVHlwZTpiZWZvcmV7Y29sb3I6dmFyKC0taHQtaWNvbi1idXR0b24tYWN0aXZlLWljb24tY29sb3IsdmFyKC0taHQtaWNvbi1hY3RpdmUtYnV0dG9uLWljb24tY29sb3IpKX0uaGFuZHNvbnRhYmxlIC5odF9fYWN0aXZlX2hpZ2hsaWdodCAuY2hhbmdlVHlw'@; put 'ZTphZnRlcntib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtYm9yZGVyLWNvbG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1ib3JkZXItY29sb3IpKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1iYWNrZ3Jv'@; put 'dW5kLWNvbG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKSl9LmhhbmRzb250YWJsZSAuaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNoYW5nZVR5cGU6aG92ZXI6YmVmb3Jle2NvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1ob3Zlci1pY29uLWNv'@; put 'bG9yLHZhcigtLWh0LWljb24tYWN0aXZlLWJ1dHRvbi1ob3Zlci1pY29uLWNvbG9yKSl9LmhhbmRzb250YWJsZSAuaHRfX2FjdGl2ZV9oaWdobGlnaHQgLmNoYW5nZVR5cGU6aG92ZXI6YWZ0ZXJ7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0taHQtaWNvbi1idXR0b24tYWN0aXZlLWhvdmVy'@; put 'LWJvcmRlci1jb2xvcix2YXIoLS1odC1pY29uLWFjdGl2ZS1idXR0b24taG92ZXItYm9yZGVyLWNvbG9yKSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtaG92ZXItYmFja2dyb3VuZC1jb2xvcix2YXIoLS1odC1pY29uLWFjdGl2ZS1idXR0b24taG92ZXIt'@; put 'YmFja2dyb3VuZC1jb2xvcikpfS5oYW5kc29udGFibGUgdGguaHRGaWx0ZXJzQWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaGVhZGVyLWZpbHRlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlIHRoLmh0RmlsdGVyc0FjdGl2ZS5odF9fYWN0aXZlX2hpZ2hsaWdodHti'@; put 'YWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LWhlYWRlci1hY3RpdmUtYmFja2dyb3VuZC1jb2xvciksdmFyKC0taHQtaGVhZGVyLWZpbHRlci1iYWNrZ3JvdW5kLWNvbG9yKTIwJSl9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudT4uaHRfbWFzdGVyLC5oYW5k'@; put 'c29udGFibGUuaHRDb250ZXh0TWVudT4uaHRfbWFzdGVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU+Lmh0X21hc3Rlcntib3gtc2hhZG93OnZhcigtLWh0LW1lbnUtc2hhZG93LXgsMCkgdmFyKC0taHQtbWVudS1zaGFkb3cteSwwKSB2YXIoLS1odC1tZW51LXNoYWRv'@; put 'dy1ibHVyLDhweCkgY29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtbWVudS1zaGFkb3ctY29sb3IsIzAwMCl2YXIoLS1odC1tZW51LXNoYWRvdy1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KTtib3JkZXI6dmFyKC0taHQtbWVudS1ib3JkZXItd2lkdGgsMXB4KXNvbGlkIHZhcigtLWh0LW1l'@; put 'bnUtYm9yZGVyLWNvbG9yLCNlNWU1ZTkpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtbWVudS1ib3JkZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWh0LW1lbnUtdmVydGljYWwtcGFkZGluZyw4cHgpdmFyKC0taHQtbWVudS1ob3Jpem9udGFsLXBhZGRpbmcsMCk7YmFja2dyb3VuZC1jb2xvcjp2'@; put 'YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yLCNmZmYpO292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51Om5vdCguaHRHaG9zdFRhYmxlKSwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnU6bm90KC5odEdob3N0VGFibGUpLC5oYW5kc29udGFibGUuaHRGaWx0ZXJz'@; put 'Q29uZGl0aW9uc01lbnU6bm90KC5odEdob3N0VGFibGUpe3otaW5kZXg6MTA2MDtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGV9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgLmh0X2Nsb25lX2JvdHRv'@; put 'bSwuaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQsLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfYm90dG9tX2lu'@; put 'bGluZV9zdGFydF9jb3JuZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV90b3AsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV9ib3R0b20sLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQsLmhhbmRzb250'@; put 'YWJsZS5odENvbnRleHRNZW51IC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25l'@; put 'X3RvcCwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV9ib3R0b20sLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Ns'@; put 'b25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlLmh0Q29yZSwuaGFuZHNv'@; put 'bnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUuaHRDb3JlLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUuaHRDb3Jle292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IC5odEN1c3RvbU1lbnVSZW5kZXJlciAudGFibGUuaHRDb3Jl'@; put 'LC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSAuaHRDdXN0b21NZW51UmVuZGVyZXIgLnRhYmxlLmh0Q29yZSwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odEN1c3RvbU1lbnVSZW5kZXJlciAudGFibGUuaHRDb3Jle2JveC1zaGFkb3c6bm9uZX0uaGFuZHNvbnRh'@; put 'YmxlLmh0RHJvcGRvd25NZW51LmhhbmRzb250YWJsZTpmb2N1cywuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUuaGFuZHNvbnRhYmxlOmZvY3VzLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUuaGFuZHNvbnRhYmxlOmZvY3Vze291dGxpbmU6bm9uZX0uaGFuZHNvbnRh'@; put 'YmxlLmh0RHJvcGRvd25NZW51IC53dEJvcmRlciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgLnd0Qm9yZGVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVufS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGJv'@; put 'ZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0ZDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGQ6Zmlyc3QtY2hp'@; put 'bGQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRib2R5IHRyOmZpcnN0LW9mLXR5cGUgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0Ym9keSB0cjpmaXJzdC1vZi10eXBlIHRkOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUuaHRGaWx0'@; put 'ZXJzQ29uZGl0aW9uc01lbnUgdGJvZHkgdHI6Zmlyc3Qtb2YtdHlwZSB0aDpmaXJzdC1jaGlsZHtoZWlnaHQ6Y2FsYyh2YXIoLS1odC1jZWxsLXZlcnRpY2FsLXBhZGRpbmcpKjIgKyB2YXIoLS1odC1saW5lLWhlaWdodCkgKyAxcHgpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFi'@; put 'bGUgdGJvZHkgdHIgdGQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGR7cGFkZGluZzp2YXIoLS1odC1tZW51LWl0ZW0tdmVydGljYWwtcGFkZGluZyw0cHgp'@; put 'dmFyKC0taHQtbWVudS1pdGVtLWhvcml6b250YWwtcGFkZGluZyw4cHgpO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JhY2tncm91bmQ6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvciwjZmZmKTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOnZhcigtLWh0LXRh'@; put 'YmxlLXRyYW5zaXRpb24pYmFja2dyb3VuZCBlYXNlLWluLW91dDtib3JkZXItd2lkdGg6MDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlLmh0Q29u'@; put 'dGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtib3JkZXItYm90dG9t'@; put 'LXdpZHRoOjA7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDowfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaW1tZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVkLC5oYW5kc29udGFibGUuaHRG'@; put 'aWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaW1tZWR7Zm9udC1zdHlsZTpub3JtYWw7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0IWltcG9ydGFudH0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5'@; put 'IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUg'@; put 'dGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVS'@; put 'ZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpOmhvdmVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpub3QoLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJs'@; put 'ZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5k'@; put 'c29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVu'@; put 'dSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkKTpob3ZlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVy'@; put 'LC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5'@; put 'IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpOmhv'@; put 'dmVye2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtbWVudS1pdGVtLWhvdmVyLWNvbG9yKXZhcigtLWh0LW1lbnUtaXRlbS1ob3Zlci1jb2xvci1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5odERy'@; put 'b3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpub3QoLmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRz'@; put 'b250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJv'@; put 'ZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkKS5jdXJyZW50Om5vdChbYXJpYS1leHBhbmRlZD10cnVlXSksLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxl'@; put 'IHRib2R5IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4'@; put 'dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3Rv'@; put 'bU1lbnVSZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpLmN1cnJlbnQ6bm90KFthcmlhLWV4cGFuZGVkPXRydWVdKSwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5'@; put 'IHRyIHRkOm5vdCguaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLC5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZCwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUg'@; put 'dGFibGUgdGJvZHkgdHIgdGQuaHRDdXN0b21NZW51UmVuZGVyZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odEN1c3RvbU1lbnVS'@; put 'ZW5kZXJlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQpLmN1cnJlbnQ6bm90KFthcmlhLWV4cGFuZGVkPXRydWVdKXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1odC1hY2NlbnQtY29sb3IpfS5oYW5k'@; put 'c29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRlbVdyYXBwZXIsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25k'@; put 'aXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWlubGluZS1lbmQ6Y2FsYygyKnZhcigtLWh0LWdhcC1zaXplLDRweCkgKyB2YXIoLS1odC1pY29uLXNpemUpKX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5'@; put 'IHRyIHRkLmh0U3VibWVudSAuaHRJdGVtV3JhcHBlcjphZnRlciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVyLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkg'@; put 'dHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVye2NvbnRlbnQ6IiI7dG9wOjUwJTtyaWdodDpjYWxjKHZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcpICsgdmFyKC0taHQtZ2FwLXNpemUpKjIpO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dHJh'@; put 'bnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTZXBhcmF0b3IsLmhhbmRzb250YWJsZS5odEZpbHRlcnND'@; put 'b25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpO2N1cnNvcjpkZWZhdWx0O2hlaWdodDowO3BhZGRpbmc6MH0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRy'@; put 'IHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVke2NvbG9yOnZhcigtLWh0LWRpc2FibGVkLWNv'@; put 'bG9yKTtjdXJzb3I6ZGVmYXVsdH0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQ6aG92ZXIsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQ6aG92ZXIsLmhhbmRzb250YWJsZS5odEZp'@; put 'bHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0taHQtZGlzYWJsZWQtY29sb3IpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkg'@; put 'dHIgdGQuaHRIaWRkZW4sLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0SGlkZGVuLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRIaWRkZW57ZGlzcGxheTpub25lfTppcyguaGFuZHNvbnRhYmxl'@; put 'Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkOmhhcyguaHRJdGVtV3JhcHBlciAuc2VsZWN0ZWQpLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpoYXMoLmh0SXRlbVdyYXBwZXIgLnNlbGVjdGVkKSwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0Nv'@; put 'bmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkOmhhcyguaHRJdGVtV3JhcHBlciAuc2VsZWN0ZWQpKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtaXRlbS1hY3RpdmUtY29sb3IpdmFyKC0taHQtbWVudS1pdGVtLWFjdGl2ZS1jb2xvci1vcGFj'@; put 'aXR5LDEwMCUpLHRyYW5zcGFyZW50KX0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciwuaGFuZHNvbnRhYmxlLmh0Rmls'@; put 'dGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVye21hcmdpbi1pbmxpbmU6Y2FsYygyKnZhcigtLWh0LWdhcC1zaXplLDRweCkpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXI6YmVmb3Jl'@; put 'LC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcjpiZWZvcmUsLmhhbmRzb250YWJsZS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcjpiZWZvcmV7dmVydGljYWwtYWxpZ246dGV4'@; put 'dC1ib3R0b207bWFyZ2luLXJpZ2h0OjEycHh9LmhhbmRzb250YWJsZS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciBzcGFuLnNlbGVjdGVkLC5oYW5kc29udGFibGUuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlciBz'@; put 'cGFuLnNlbGVjdGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZHtmb250LXNpemU6MDtpbnNldDowfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQg'@; put 'Lmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlciwuaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlciwuaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5'@; put 'IHRyIHRkIC5odEl0ZW1XcmFwcGVyIHNwYW4uc2VsZWN0ZWQ6YWZ0ZXJ7Y29udGVudDoiIjt0b3A6NTAlO3JpZ2h0OmNhbGModmFyKC0taHQtbWVudS1pdGVtLWhvcml6b250YWwtcGFkZGluZykgKyB2YXIoLS1odC1nYXAtc2l6ZSkqMik7Y29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTtk'@; put 'aXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRy'@; put 'IHRkIGRpdiBzcGFuLnNlbGVjdGVkLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQtaW5saW5lLWVuZDowfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFi'@; put 'bGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b24sLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odFVJQnV0dG9uLC5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b257d2lkdGg6Y2FsYyg1'@; put 'MCUgLSB2YXIoLS1odC1nYXAtc2l6ZSkpfS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b24gaW5wdXQsLmhhbmRzb250YWJsZS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odFVJQnV0dG9uIGlucHV0LC5oYW5kc29udGFi'@; put 'bGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0VUlCdXR0b24gaW5wdXR7d2lkdGg6MTAwJX0uaGFuZHNvbnRhYmxlIC5odFVJQ2xlYXJBbGwgYSwuaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0QWxsIGF7cGFkZGluZzp2YXIoLS1odC1nYXAtc2l6ZSk7dGV4'@; put 'dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0IC5odF9tYXN0ZXIgLnd0SG9sZGVye2JhY2tncm91bmQ6MCAwO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7b3ZlcmZsb3cteTpzY3JvbGwhaW1wb3J0YW50fS5o'@; put 'YW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdCAuaHRfbWFzdGVyIC53dEhvbGRlciAuaHRDb3Jle2JveC1zaGFkb3c6bm9uZX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0U3VibWVudSAuaHRJdGVtV3JhcHBlcjphZnRlcixb'@; put 'ZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0ZW1XcmFwcGVyOmFmdGVyLFtkaXI9cnRsXS5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTdWJtZW51IC5odEl0'@; put 'ZW1XcmFwcGVyOmFmdGVye2xlZnQ6Y2FsYyg0KnZhcigtLWh0LWdhcC1zaXplKSk7cmlnaHQ6YXV0bzt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKXJvdGF0ZSgxODBkZWcpfVtkaXI9cnRsXS5oYW5kc29udGFibGUuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdy'@; put 'YXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlcixbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlcixbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRh'@; put 'YmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVyIHNwYW4uc2VsZWN0ZWQ6YWZ0ZXJ7bGVmdDpjYWxjKDQqdmFyKC0taHQtZ2FwLXNpemUpKTtyaWdodDphdXRvfS5oYW5kc29udGFibGUuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU6bm90KC5odEdob3N0VGFibGUpe3otaW5kZXg6MTA3MH0u'@; put 'aGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGFibGUgdGQuaHRDdXN0b21NZW51UmVuZGVyZXJ7Y3Vyc29yOmF1dG99LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRhYmxlIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVyLmh0RmlsdGVyc01lbnVBY3Rpb25CYXJ7cGFkZGluZy10b3A6Y2FsYyh2YXIo'@; put 'LS1odC1tZW51LWl0ZW0tdmVydGljYWwtcGFkZGluZyw0cHgpKjIpfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVMYWJlbHtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplLXNtYWxsKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodC1zbWFsbCk7Zm9udC13ZWlnaHQ6dmFy'@; put 'KC0taHQtZm9udC13ZWlnaHQpO21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSwycHgpKjIpfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVMYWJlbDplbXB0eXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbntwYWRkaW5nLXRv'@; put 'cDpjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqMykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVDb25kaXRpb24gLmJvcmRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1odC1ib3JkZXItY29sb3IpIWlt'@; put 'cG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXR7bWFyZ2luLXRvcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqMil9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVle3BhZGRpbmctdG9wOmNhbGModmFyKC0taHQtZ2FwLXNp'@; put 'emUsMnB4KSozKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taHQtYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudU9wZXJhdG9yc3twYWRkaW5nLXRvcDpjYWxjKHZhcigt'@; put 'LWh0LWdhcC1zaXplLDJweCkqMikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3Rpb25Db250cm9sc3ttYXJnaW46MCBjYWxjKHZhcigtLWh0LWdhcC1zaXplLDJweCkqLTEpO3BhZGRpbmctdG9wOmNhbGModmFyKC0taHQtZ2Fw'@; put 'LXNpemUsMnB4KSoyKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0taHQtZ2FwLXNpemUsMnB4KSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0SG90ey0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmc6Y2FsYyh2YXIoLS1odC1tZW51LWl0ZW0taG9y'@; put 'aXpvbnRhbC1wYWRkaW5nLDJweCkgKyB2YXIoLS1odC1nYXAtc2l6ZSwycHgpKjIpO3dpZHRoOmNhbGMoMTAwJSArIHZhcigtLWh0LW1lbnUtaXRlbS1ob3Jpem9udGFsLXBhZGRpbmcsMnB4KSoyICsgdmFyKC0taHQtZ2FwLXNpemUsMnB4KSo0KTttYXJnaW46MCBjYWxjKCh2YXIoLS1odC1t'@; put 'ZW51LWl0ZW0taG9yaXpvbnRhbC1wYWRkaW5nLDJweCkgKyB2YXIoLS1odC1nYXAtc2l6ZSwycHgpKjIpKi0xKTtvdmVyZmxvdzppbml0aWFsIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3RIb3Q6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2'@; put 'YXIoLS1odC1ib3JkZXItY29sb3IpO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMXB4O2xlZnQ6MH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3RIb3QgLnd0SG9sZGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRk'@; put 'aW5nOjA7b3ZlcmZsb3cteDpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0SG90IC53dEhvbGRlciAud3RTcHJlYWRlcntwYWRkaW5nOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpMH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3RIb3QgLnd0SG9sZGVy'@; put 'IHRke3BhZGRpbmc6NHB4IHZhcigtLWh0LWNlbGwtaG9yaXpvbnRhbC1wYWRkaW5nKTtoZWlnaHQ6YXV0byFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRVSUNsZWFyQWxsLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGx7bWFyZ2luLXJpZ2h0OnZhcigtLWh0LWdhcC1zaXplLDRweCk7'@; put 'bWFyZ2luLWJvdHRvbTp2YXIoLS1odC1nYXAtc2l6ZSw0cHgpO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCBhLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGwgYXtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIo'@; put 'LS1odC1saW5lLWhlaWdodCk7Y29sb3I6dmFyKC0taHQtbGluay1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1idXR0b24tYm9yZGVyLXJhZGl1cyl9LmhhbmRzb250YWJsZSAuaHRVSUNsZWFyQWxsIGE6aG92ZXIsLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbCBhOmhvdmVye2Nv'@; put 'bG9yOnZhcigtLWh0LWxpbmstaG92ZXItY29sb3IpfS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCBhOmZvY3VzLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGwgYTpmb2N1c3tvdXRsaW5lOjFweCBzb2xpZCB2YXIoLS1odC1saW5rLWhvdmVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlIC5o'@; put 'dFVJTXVsdGlwbGVTZWxlY3QgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6YXV0b30uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3QgLmh0X21hc3RlciAud3RIb2xkZXIgLnd0SGlkZXIsLmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0IC5odF9tYXN0ZXIgLnd0'@; put 'SG9sZGVyIC5odENvcmUsLmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0IC5odF9tYXN0ZXIgLnd0SG9sZGVyIHRyLC5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdCAuaHRfbWFzdGVyIC53dEhvbGRlciB0ZHtiYWNrZ3JvdW5kOjAgMH0uaGFuZHNvbnRhYmxlIC5odFVJ'@; put 'SW5wdXQuaHRVSUJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9Le21hcmdpbi1pbmxpbmUtc3RhcnQ6MDttYXJnaW4taW5saW5lLWVuZDpjYWxjKDIqdmFyKC0taHQtZ2FwLXNpemUsMnB4KSl9Lmhh'@; put 'bmRzb250YWJsZSAuaHRDb21tZW50Q2VsbHtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxsOmFmdGVye2NvbnRlbnQ6IiI7dG9wOjA7Ym9yZGVyLWlubGluZS1zdGFydDp2YXIoLS1odC1jb21tZW50cy1pbmRpY2F0b3Itc2l6ZSw0cHgpc29saWQgIzAwMDA7'@; put 'Ym9yZGVyLWlubGluZS1lbmQ6bm9uZTtib3JkZXItdG9wOnZhcigtLWh0LWNvbW1lbnRzLWluZGljYXRvci1zaXplLDRweClzb2xpZCB2YXIoLS1odC1jb21tZW50cy1pbmRpY2F0b3ItY29sb3IsIzFhNDJlOCk7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtpbnNldC1pbmxpbmUt'@; put 'c3RhcnQ6dW5zZXQ7aW5zZXQtaW5saW5lLWVuZDowfS5odENvbW1lbnRzQ29udGFpbmVyIC5odENvbW1lbnRze3otaW5kZXg6MTA1OTtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGV9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhe2ZvbnQtZmFtaWx5OnZhcigt'@; put 'LWh0LWZvbnQtZmFtaWx5KSwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLHNhbnMtc2VyaWY7Ym94LXNoYWRvdzp2YXIoLS1odC1tZW51LXNoYWRvdy14LDApIHZhcigtLWh0LW1lbnUtc2hhZG93LXksMCkgdmFyKC0taHQtbWVudS1zaGFkb3ctYmx1ciw4cHgp'@; put 'IGNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LW1lbnUtc2hhZG93LWNvbG9yLCMwMDApdmFyKC0taHQtbWVudS1zaGFkb3ctb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7d2lkdGg6MjQwcHg7aGVpZ2h0Ojg4cHg7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6'@; put 'dmFyKC0taHQtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWZvbnQtd2VpZ2h0KTtwYWRkaW5nOnZhcigtLWh0LWNvbW1lbnRzLXRleHRhcmVhLXZlcnRpY2FsLXBhZGRpbmcpdmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtaG9yaXpvbnRhbC1wYWRkaW5nKTtib3JkZXI6dmFy'@; put 'KC0taHQtY29tbWVudHMtdGV4dGFyZWEtYm9yZGVyLXdpZHRoLDFweClzb2xpZCB2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1ib3JkZXItY29sb3IsdHJhbnNwYXJlbnQpO2JvcmRlci1pbmxpbmUtc3RhcnQ6dmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtYm9yZGVyLXdpZHRoLDFweClz'@; put 'b2xpZCB2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1ib3JkZXItY29sb3IsIzFhNDJlOCk7Y29sb3I6dmFyKC0taHQtY29tbWVudHMtdGV4dGFyZWEtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9y'@; put 'LCNmZmYpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MCAtMXB4O291dGxpbmU6MCFpbXBvcnRhbnR9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhOmZvY3Vze2JvcmRlcjp2YXIoLS1odC1jb21tZW50cy10ZXh0YXJl'@; put 'YS1mb2N1cy1ib3JkZXItd2lkdGgsMXB4KXNvbGlkIHZhcigtLWh0LWNvbW1lbnRzLXRleHRhcmVhLWZvY3VzLWJvcmRlci1jb2xvciwjMWE0MmU4KTtjb2xvcjp2YXIoLS1odC1jb21tZW50cy10ZXh0YXJlYS1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigt'@; put 'LWh0LWNvbW1lbnRzLXRleHRhcmVhLWZvY3VzLWJhY2tncm91bmQtY29sb3IsI2ZmZil9Lmh0Qm9yZGVycyAud3RCb3JkZXIuaHQtYm9yZGVyLXN0eWxlLWRhc2hlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHZhcigtLWh0'@; put 'LWN1c3RvbS1ib3JkZXItY29sb3IpMCA1cHgsdHJhbnNwYXJlbnQgMCAxMHB4KX0uaHRCb3JkZXJzIC53dEJvcmRlci5odC1ib3JkZXItc3R5bGUtZGFzaGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHZhcigtLWh0LWN1'@; put 'c3RvbS1ib3JkZXItY29sb3IpMCA1cHgsdHJhbnNwYXJlbnQgMCAxMHB4KX0uaHRCb3JkZXJzIC53dEJvcmRlci5odC1ib3JkZXItc3R5bGUtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLHZhcigtLWh0LWN1c3RvbS1ib3JkZXItY29s'@; put 'b3IpY2FsYyh2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpLzIpLHRyYW5zcGFyZW50IDApO2JhY2tncm91bmQtc2l6ZTpjYWxjKHZhcigtLWh0LWN1c3RvbS1ib3JkZXItc2l6ZSkqMil2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5o'@; put 'dEJvcmRlcnMgLnd0Qm9yZGVyLmh0LWJvcmRlci1zdHlsZS1kb3R0ZWQtdmVydGljYWx7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLHZhcigtLWh0LWN1c3RvbS1ib3JkZXItY29sb3IpY2FsYyh2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpLzIpLHRyYW5zcGFy'@; put 'ZW50IDApO2JhY2tncm91bmQtc2l6ZTp2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpY2FsYyh2YXIoLS1odC1jdXN0b20tYm9yZGVyLXNpemUpKjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC15fS5oYW5kc29udGFibGUgLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxl'@; put 'ZCl7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuY29sdW1uU29ydGluZzpub3QoLmluZGljYXRvckRpc2FibGVkKS5zb3J0QWN0aW9uLmFzY2VuZGluZywuaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5nOm5vdCguaW5kaWNhdG9yRGlzYWJsZWQpLnNvcnRBY3Rpb24uZGVzY2Vu'@; put 'ZGluZ3twYWRkaW5nLWlubGluZS1lbmQ6Y2FsYyh2YXIoLS1odC1pY29uLXNpemUsMTZweCkgKyAycHgpfS5oYW5kc29udGFibGUgLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCkuc29ydEFjdGlvbjpob3ZlcntjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9u'@; put 'ZX0uaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5nOm5vdCguaW5kaWNhdG9yRGlzYWJsZWQpLnNvcnRBY3Rpb246YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplLDE2cHgpO3RleHQtYWxpZ246cmlnaHQ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0'@; put 'b3A6NTAlO3JpZ2h0OjJweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uYXNjZW5kaW5nLC5oYW5kc29udGFibGUgLmh0UmlnaHQgLmNvbHVtblNvcnRpbmcuc29ydEFjdGlvbi5kZXNjZW5kaW5ne3Bh'@; put 'ZGRpbmctaW5saW5lLXN0YXJ0OmNhbGModmFyKC0taHQtaWNvbi1zaXplLDE2cHgpICsgMnB4KTtwYWRkaW5nLWlubGluZS1lbmQ6MH0uaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb246YmVmb3JlLFtkaXI9cnRsXSAuaGFuZHNvbnRhYmxlIC5jb2x1bW5T'@; put 'b3J0aW5nLnNvcnRBY3Rpb246YmVmb3Jle3RleHQtYWxpZ246bGVmdDtsZWZ0OjJweDtyaWdodDphdXRvfVtkaXI9cnRsXSAuaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uYXNjZW5kaW5nLFtkaXI9cnRsXSAuaGFuZHNvbnRhYmxlIC5odFJpZ2h0IC5j'@; put 'b2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uZGVzY2VuZGluZ3twYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLWh0LWljb24tc2l6ZSwxNnB4KSArIDJweCl9W2Rpcj1ydGxdIC5oYW5kc29udGFibGUgLmh0TGVmdCAuY29sdW1uU29ydGluZy5zb3J0'@; put 'QWN0aW9uLmFzY2VuZGluZyxbZGlyPXJ0bF0gLmhhbmRzb250YWJsZSAuaHRMZWZ0IC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uZGVzY2VuZGluZ3twYWRkaW5nLWlubGluZS1zdGFydDpjYWxjKHZhcigtLWh0LWljb24tc2l6ZSwxNnB4KSArIDJweCk7cGFkZGluZy1pbmxpbmUtZW5kOjB9'@; put 'W2Rpcj1ydGxdIC5oYW5kc29udGFibGUgLmh0TGVmdCAuY29sdW1uU29ydGluZy5zb3J0QWN0aW9uOmJlZm9yZXt0ZXh0LWFsaWduOnJpZ2h0O2xlZnQ6YXV0bztyaWdodDoycHh9Lmh0R2hvc3RUYWJsZSAuaHRDb3JlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0'@; put 'b3JEaXNhYmxlZCk6YmVmb3Jle2NvbnRlbnQ6IioiO3BhZGRpbmctaW5saW5lLWVuZDpjYWxjKHZhcigtLWh0LWljb24tc2l6ZSwxNnB4KSArIDJweCk7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6'@; put 'YWZ0ZXJ7Y29udGVudDoiIjt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjhweDttYXJnaW4tdG9wOjRweDtmb250LXNpemU6OHB4O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5oYW5kc29udGFibGUgLmNv'@; put 'bEhlYWRlci5jb2x1bW5Tb3J0aW5nW2NsYXNzXj1zb3J0LV06YWZ0ZXIsLmhhbmRzb250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmdbY2xhc3MqPSIgc29ydC0iXTphZnRlcntjb250ZW50OiIrIn0uaGFuZHNvbnRhYmxlIC5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTE6YWZ0'@; put 'ZXJ7Y29udGVudDoiMSJ9LmhhbmRzb250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC0yOmFmdGVye2NvbnRlbnQ6IjIifS5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtMzphZnRlcntjb250ZW50OiIzIn0uaGFuZHNvbnRhYmxlIC5jb2xIZWFk'@; put 'ZXIuY29sdW1uU29ydGluZy5zb3J0LTQ6YWZ0ZXJ7Y29udGVudDoiNCJ9LmhhbmRzb250YWJsZSAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC01OmFmdGVye2NvbnRlbnQ6IjUifS5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNjphZnRlcntjb250ZW50'@; put 'OiI2In0uaGFuZHNvbnRhYmxlIC5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTc6YWZ0ZXJ7Y29udGVudDoiNyJ9LmhhbmRzb250YWJsZSAuaHRSaWdodCAuY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YWZ0ZXIsW2Rpcj1ydGxdIC5oYW5kc29udGFibGUgLmNvbEhlYWRlci5jb2x1bW5T'@; put 'b3J0aW5nOmFmdGVye3RleHQtYWxpZ246bGVmdDtsZWZ0OjA7cmlnaHQ6YXV0b31bZGlyPXJ0bF0gLmhhbmRzb250YWJsZSAuaHRMZWZ0IC5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcnt0ZXh0LWFsaWduOnJpZ2h0O2xlZnQ6YXV0bztyaWdodDowfS5odEdob3N0VGFibGUgdGggZGl2'@; put 'OmhhcyguY2hhbmdlVHlwZSkgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzpub3QoLmluZGljYXRvckRpc2FibGVkKXtwYWRkaW5nLWlubGluZS1lbmQ6dmFyKC0taHQtZ2FwLXNpemUpfS5oYW5kc29udGFibGUgLmh0Um93SGVhZGVycyAuaHRfbWFzdGVyLmlubmVyQm9yZGVySW5saW5l'@; put 'U3RhcnR+Lmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIHRoOm50aC1jaGlsZCgyKSwuaGFuZHNvbnRhYmxlIC5odFJvd0hlYWRlcnMgLmh0X21hc3Rlci5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5odF9jbG9uZV9pbmxpbmVfc3RhcnQgdGQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXIt'@; put 'bGVmdDowfS5oYW5kc29udGFibGUgLmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JveC1zaGFkb3c6bm9uZX0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVye2N1cnNvcjpjb2wtcmVzaXplO29wYWNpdHk6MDt6LWluZGV4'@; put 'OjIxMDtiYWNrZ3JvdW5kOjAgMDt3aWR0aDoxMHB4O21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXI6YmVmb3JlLC5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXI6YWZ0ZXJ7Y29udGVudDoiIjtiYWNrZ3Jv'@; put 'dW5kOnZhcigtLWh0LXJlc2l6ZS1pbmRpY2F0b3ItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O3dpZHRoOjJweDtoZWlnaHQ6Y2FsYygxMDAlIC0gMTJweCk7bWF4LWhlaWdodDoxNnB4O21hcmdpbi10b3A6LjVweDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVm'@; put 'dDoxcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplcjphZnRlcntsZWZ0OmF1dG87cmlnaHQ6MH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyOmhvdmVyLC5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6'@; put 'ZXIuYWN0aXZle29wYWNpdHk6MX0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyR3VpZGV7aW5zZXQtaW5saW5lLWVuZDp1bnNldDt3aWR0aDowO2JvcmRlci1pbmxpbmUtZW5kOjFweCBzb2xpZCB2YXIoLS1odC1hY2NlbnQtY29sb3IpO2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9u'@; put 'ZTttYXJnaW4taW5saW5lLXN0YXJ0OjVweDttYXJnaW4taW5saW5lLWVuZDp1bnNldDtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplckd1aWRlLmFjdGl2ZXt6LWluZGV4OjIwOTtkaXNwbGF5OmJsb2NrfS5oYW5k'@; put 'c29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJ7ei1pbmRleDoyMTA7Y3Vyc29yOnJvdy1yZXNpemU7b3BhY2l0eTowO2JhY2tncm91bmQ6MCAwO2hlaWdodDoxMHB4O21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MH0uaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyOmJlZm9y'@; put 'ZSwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyOmFmdGVye2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1odC1yZXNpemUtaW5kaWNhdG9yLWNvbG9yKTtib3JkZXItcmFkaXVzOjJweDt3aWR0aDpjYWxjKDEwMCUgLSAxMnB4KTttYXgtd2lkdGg6MTZweDtoZWlnaHQ6MnB4O2Rp'@; put 'c3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjFweDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpfS5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXI6YWZ0ZXJ7dG9wOmF1dG87Ym90dG9tOjB9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplcjpob3Zl'@; put 'ciwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyLmFjdGl2ZXtvcGFjaXR5OjF9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplckd1aWRle2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWh0LWFjY2VudC1jb2xvcik7Ym9yZGVyLXRvcDpub25lO2hlaWdodDowO21hcmdp'@; put 'bi10b3A6NXB4O2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjB9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplckd1aWRlLmFjdGl2ZXt6LWluZGV4OjIwOTtkaXNwbGF5OmJsb2NrfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3Mq'@; put 'PWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdOm5vdChbY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsXSk6YmVmb3Jle29wYWNpdHk6MH0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1l'@; put 'cmdlZENlbGwtbXVsdGlwbGVdOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtMF06YmVmb3Jle29wYWNpdHk6LjE0fS5oYW5kc29udGFibGUgdGJvZHkgdGRb'@; put 'cm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0xXTpiZWZvcmV7b3BhY2l0eTouMjF9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1'@; put 'bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTJdOmJlZm9yZXtvcGFjaXR5Oi4yOH0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtM106YmVmb3Jle29wYWNpdHk6LjM1fS5oYW5k'@; put 'c29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC00XTpiZWZvcmV7b3BhY2l0eTouNDJ9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhp'@; put 'Z2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTVdOmJlZm9yZXtvcGFjaXR5Oi40OX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtNl06YmVmb3Jl'@; put 'e29wYWNpdHk6LjU2fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC03XTpiZWZvcmV7b3BhY2l0eTouNjN9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUu'@; put 'YWZ0ZXItc2VsZWN0aW9uLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHQsLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5hZnRlci1zZWxlY3Rpb24tLWNvbHVtbnMgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYn0uaGFuZHNvbnRh'@; put 'YmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgKiwuaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgdGhlYWQgdGguaHRfX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLm9uLW1v'@; put 'dmluZy0tY29sdW1ucyAqLC5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdyYWJiaW5nfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLm9uLW1vdmlu'@; put 'Zy0tY29sdW1ucyAubWFudWFsQ29sdW1uUmVzaXplciwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLm9uLW1vdmluZy0tY29sdW1ucyAubWFudWFsQ29sdW1uUmVzaXplcntkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGlu'@; put 'ZSwuaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0LC5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZSwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHR7aGVpZ2h0OjEwMCU7ZGlzcGxheTpub25l'@; put 'O3Bvc2l0aW9uOmFic29sdXRlfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5le3otaW5kZXg6MjA1O2JhY2tncm91bmQ6dmFyKC0taHQtbW92ZS1pbmRpY2F0b3ItY29sb3Is'@; put 'IzFhNDJlOCk7d2lkdGg6MXB4O21hcmdpbi1pbmxpbmU6LS41cHggMDt0b3A6MH0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0LC5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodHt6LWluZGV4OjIwNTtwb2ludGVyLWV2ZW50'@; put 'czpub25lO2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtbW92ZS1iYWNrbGlnaHQtY29sb3IpdmFyKC0taHQtbW92ZS1iYWNrbGlnaHQtb3BhY2l0eSwxMDAlKSx0cmFuc3BhcmVudCk7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLm9uLW1vdmluZy0tY29sdW1ucy5z'@; put 'aG93LXVpIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUgLm9uLW1vdmluZy0tY29sdW1ucyAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodCwuaGFuZHNvbnRhYmxlLm9uLW1vdmluZy0tY29sdW1ucy5zaG93LXVpIC5odF9fbWFudWFsQ29sdW1u'@; put 'TW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUub24tbW92aW5nLS1jb2x1bW5zIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0e2Rpc3BsYXk6YmxvY2t9LmhhbmRzb250YWJsZSAud3RIaWRlcntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93'@; put 'TW92ZS5hZnRlci1zZWxlY3Rpb24tLXJvd3MgdGJvZHkgdGguaHRfX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLmFmdGVyLXNlbGVjdGlvbi0tcm93cyB0Ym9keSB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5oYW5kc29udGFibGUg'@; put 'Lmh0X19tYW51YWxSb3dNb3ZlLm9uLW1vdmluZy0tcm93cyAqLC5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLm9uLW1vdmluZy0tcm93cyB0Ym9keSB0aC5odF9faGlnaGxpZ2h0LC5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzICosLmhhbmRz'@; put 'b250YWJsZS5odF9fbWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MgdGJvZHkgdGguaHRfX2hpZ2hsaWdodHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYmJpbmd9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIC5tYW51YWxSb3dSZXNpemVyLC5oYW5k'@; put 'c29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIC5tYW51YWxSb3dSZXNpemVye2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHQsLmhh'@; put 'bmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodHt3aWR0aDoxMDAlO2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVs'@; put 'aW5lLC5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZXtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1odC1tb3ZlLWluZGljYXRvci1jb2xvcik7ei1pbmRleDoyMDU7bGVmdDowfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHQsLmhh'@; put 'bmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS0tYmFja2xpZ2h0e3otaW5kZXg6MjA1O3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gc3JnYix2YXIoLS1odC1tb3ZlLWJhY2tsaWdodC1jb2xvcil2YXIoLS1odC1tb3ZlLWJhY2tsaWdodC1vcGFjaXR5LDEw'@; put 'MCUpLHRyYW5zcGFyZW50KTtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAub24tbW92aW5nLS1yb3dzLnNob3ctdWkgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZSAub24tbW92aW5nLS1yb3dzIC5odF9fbWFudWFsUm93TW92ZS0tYmFja2xpZ2h0LC5oYW5k'@; put 'c29udGFibGUub24tbW92aW5nLS1yb3dzLnNob3ctdWkgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLXJvd3MgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7ZGlzcGxheTpibG9ja30uaHQtZGlhbG9ne3Njcm9sbGJhci13aWR0aDph'@; put 'dXRvO3Njcm9sbGJhci1jb2xvcjp2YXIoLS1odC1zY3JvbGxiYXItdGh1bWItY29sb3IpdmFyKC0taHQtc2Nyb2xsYmFyLXRyYWNrLWNvbG9yKTtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFy'@; put 'KC0taHQtbGV0dGVyLXNwYWNpbmcpO3otaW5kZXg6MTA2MDtvcGFjaXR5OjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1ib3JkZXItcmFkaXVzKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWh0LWJvcmRlci1jb2xvcik7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5Om5vbmU7cG9zaXRp'@; put 'b246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93LXk6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3ghaW1wb3J0YW50fS5odC1kaWFsb2dbZGlyPXJ0bF17bGVmdDphdXRvO3JpZ2h0OjB9Lmh0LWRpYWxvZzpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHZhcigtLWh0LWFjY2VudC1jb2xv'@; put 'cik7b3V0bGluZTpub25lfS5odC1kaWFsb2c6aGFzKC5odEZvY3VzQ2F0Y2hlcjpmb2N1cyl7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1hY2NlbnQtY29sb3IpO291dGxpbmU6bm9uZX0uaHQtZGlhbG9nICp7Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudH0uaHQtZGlhbG9nLS1i'@; put 'YWNrZ3JvdW5kLXNvbGlke2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtZGlhbG9nLXNvbGlkLWJhY2tncm91bmQtY29sb3IpfS5odC1kaWFsb2ctLWJhY2tncm91bmQtc2VtaS10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWh0LWRpYWxvZy1z'@; put 'ZW1pLXRyYW5zcGFyZW50LWJhY2tncm91bmQtY29sb3IpdmFyKC0taHQtZGlhbG9nLXNlbWktdHJhbnNwYXJlbnQtYmFja2dyb3VuZC1vcGFjaXR5LDEwMCUpLHRyYW5zcGFyZW50KX0uaHQtZGlhbG9nLS1hbmltYXRpb257dHJhbnNpdGlvbjpvcGFjaXR5IHZhcigtLWh0LXRhYmxlLXRyYW5z'@; put 'aXRpb24pZWFzZS1pbi1vdXR9Lmh0LWRpYWxvZy0tc2hvd3tvcGFjaXR5OjF9Lmh0LWRpYWxvZ19fY29udGVudC13cmFwcGVye3dpZHRoOjEwMCU7bWluLWhlaWdodDoxMDAlO3BhZGRpbmc6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqNCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1ib3JkZXIt'@; put 'cmFkaXVzKTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9Lmh0LWRpYWxvZ19fY29udGVudHtwYWRkaW5nOnZhcigtLWh0LWRpYWxvZy1jb250ZW50LXBhZGRpbmctaG9yaXpvbnRhbCl2YXIoLS1odC1kaWFsb2ctY29udGVudC1wYWRkaW5n'@; put 'LXZlcnRpY2FsKTttYXgtd2lkdGg6NDgwcHg7Y29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7cG9zaXRpb246cmVsYXRpdmV9Lmh0LWRpYWxvZ19fY29udGVudC0tYmFja2dyb3VuZHtib3gtc2hhZG93OnZhcigtLWh0LXNoYWRvdy14LDApIHZhcigtLWh0LXNoYWRvdy15LDApIHZh'@; put 'cigtLWh0LXNoYWRvdy1ibHVyLDhweCkgY29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtc2hhZG93LWNvbG9yLCMwMDApdmFyKC0taHQtc2hhZG93LW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtZGlhbG9nLWNvbnRlbnQtYm9yZGVyLXJhZGl1cyk7'@; put 'YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1kaWFsb2ctY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yKX0uaHQtZGlhbG9nLS1jb25maXJtIC5odC1kaWFsb2dfX2NvbnRlbnQtd3JhcHBlcnt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpfS5odC1k'@; put 'aWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fY29udGVudC13cmFwcGVyLWlubmVye21heC13aWR0aDo0ODBweDtwYWRkaW5nOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyk7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3Rp'@; put 'ZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uaHQtZGlhbG9nLS1jb25maXJtIC5odC1kaWFsb2dfX2NvbnRlbnQtd3JhcHBlci1pbm5lci0tYmFja2dyb3VuZHtib3gtc2hhZG93OnZhcigtLWh0LXNoYWRvdy14LDApIHZhcigtLWh0LXNoYWRvdy15'@; put 'LDApIHZhcigtLWh0LXNoYWRvdy1ibHVyLDhweCkgY29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtc2hhZG93LWNvbG9yLCMwMDApdmFyKC0taHQtc2hhZG93LW9wYWNpdHksMTAwJSksdHJhbnNwYXJlbnQpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtZGlhbG9nLWNvbnRlbnQtYm9yZGVyLXJh'@; put 'ZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1kaWFsb2ctY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yKX0uaHQtZGlhbG9nLS1jb25maXJtIC5odC1kaWFsb2dfX2NvbnRlbnQtd3JhcHBlci1pbm5lcjpmb2N1c3tib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1odC1hY2NlbnQtY29s'@; put 'b3IpO291dGxpbmU6bm9uZX0uaHQtZGlhbG9nLS1jb25maXJtIC5odC1kaWFsb2dfX2NvbnRlbnR7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOnZhcigtLWh0LWdhcC1zaXplKTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZGlzcGxheTpmbGV4fS5odC1kaWFs'@; put 'b2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fY29udGVudDpoYXMoLmh0LWRpYWxvZ19fYnV0dG9ucyl7Z2FwOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpfS5odC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fdGl0bGV7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7Zm9udC13ZWln'@; put 'aHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTttYXJnaW46MH0uaHQtZGlhbG9nLS1jb25maXJtIC5odC1kaWFsb2dfX2Rlc2NyaXB0aW9ue2NvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTtmb250LXNpemU6'@; put 'dmFyKC0taHQtZm9udC1zaXplLXNtYWxsKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodC1zbWFsbCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO21hcmdpbjowfS5odC1kaWFsb2ctLWNvbmZpcm0gLmh0LWRpYWxvZ19fYnV0dG9uc3tqdXN0aWZ5LWNvbnRlbnQ6'@; put 'Y2VudGVyO2dhcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplKSoyKTtmbGV4LWZsb3c6d3JhcDtkaXNwbGF5OmZsZXh9Lmh0LW5vdGlmaWNhdGlvbnt6LWluZGV4OjEwNzA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO292ZXJmbG93OnZpc2libGV9Lmh0LW5v'@; put 'dGlmaWNhdGlvbl9fc3RhY2t7b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7c2Nyb2xsYmFyLXdpZHRoOmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xv'@; put 'cil2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweDttYXgtd2lkdGg6bWluKDQyMHB4LDEwMCUgLSA0MHB4KTttaW4taGVpZ2h0OjA7cGFkZGluZzoxMHB4O2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpo'@; put 'aWRkZW4gYXV0b30uaHQtbm90aWZpY2F0aW9uX19zdGFjay0tdG9wLXN0YXJ0e3RvcDoxMHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7bWF4LWhlaWdodDpjYWxjKDEwMCUgLSA0MHB4KTtpbnNldC1pbmxpbmUtc3RhcnQ6MTBweH0uaHQtbm90aWZpY2F0aW9uX19zdGFjay0tdG9wLWVuZHt0'@; put 'b3A6MTBweDthbGlnbi1pdGVtczpmbGV4LWVuZDttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDQwcHgpO2luc2V0LWlubGluZS1lbmQ6MTBweH0uaHQtbm90aWZpY2F0aW9uX19zdGFjay0tYm90dG9tLXN0YXJ0e2JvdHRvbToxMHB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7bWF4LWhlaWdodDpj'@; put 'YWxjKDEwMCUgLSA0MHB4KTtpbnNldC1pbmxpbmUtc3RhcnQ6MTBweH0uaHQtbm90aWZpY2F0aW9uX19zdGFjay0tYm90dG9tLWVuZHtib3R0b206MTBweDthbGlnbi1pdGVtczpmbGV4LWVuZDttYXgtaGVpZ2h0OmNhbGMoMTAwJSAtIDQwcHgpO2luc2V0LWlubGluZS1lbmQ6MTBweH0uaHQt'@; put 'bm90aWZpY2F0aW9uX190b2FzdHtib3gtc2hhZG93OnZhcigtLWh0LXNoYWRvdy14LDApIHZhcigtLWh0LXNoYWRvdy15LDApIHZhcigtLWh0LXNoYWRvdy1ibHVyLDhweCkgY29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtc2hhZG93LWNvbG9yLCMwMDApdmFyKC0taHQtc2hhZG93LW9wYWNp'@; put 'dHksMTAwJSksdHJhbnNwYXJlbnQpO3BvaW50ZXItZXZlbnRzOmF1dG87bWF4LXdpZHRoOjEwMCU7Y29sb3I6dmFyKC0taHQtbm90aWZpY2F0aW9uLWZvcmVncm91bmQtY29sb3IsdmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcikpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtbm90aWZpY2F0'@; put 'aW9uLWJhY2tncm91bmQtY29sb3IsdmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcikpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtbm90aWZpY2F0aW9uLWJvcmRlci1jb2xvcix2YXIoLS1odC1ib3JkZXItY29sb3IpKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMsNHB4'@; put 'KTtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0taHQtbGV0dGVyLXNwYWNpbmcpO291dGxpbmU6bm9uZTtmbGV4LXNocmluazowO2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX0u'@; put 'aHQtbm90aWZpY2F0aW9uX190b2FzdDpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcil9Lmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLWFuaW1hdGV7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSB2YXIoLS1odC10YWJsZS10cmFuc2l0'@; put 'aW9uLC4xNXMpZWFzZS1vdXQsdHJhbnNmb3JtIHZhcigtLWh0LXRhYmxlLXRyYW5zaXRpb24sLjE1cyllYXNlLW91dH0uaHQtbm90aWZpY2F0aW9uX190b2FzdC0tYW5pbWF0ZS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS1zdGFjay10b3A6bm90KC5odC1ub3RpZmljYXRpb25fX3RvYXN0LS12'@; put 'aXNpYmxlKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNnB4KX0uaHQtbm90aWZpY2F0aW9uX190b2FzdC0tYW5pbWF0ZS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS1zdGFjay1ib3R0b206bm90KC5odC1ub3RpZmljYXRpb25fX3RvYXN0LS12aXNpYmxlKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSg2'@; put 'cHgpfS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS12aXNpYmxle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX0uaHQtbm90aWZpY2F0aW9uX190b2FzdC0taW5mbyAuaHQtbm90aWZpY2F0aW9uX19hY2NlbnR7ZGlzcGxheTpub25lfS5odC1ub3RpZmljYXRpb25fX3RvYXN0LS1z'@; put 'dWNjZXNzIC5odC1ub3RpZmljYXRpb25fX2FjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LW5vdGlmaWNhdGlvbi1zdWNjZXNzLWFjY2VudCwjMzdiYzZjKX0uaHQtbm90aWZpY2F0aW9uX190b2FzdC0td2FybmluZyAuaHQtbm90aWZpY2F0aW9uX19hY2NlbnR7YmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1odC1ub3RpZmljYXRpb24td2FybmluZy1hY2NlbnQsI2ZiZTk1Mil9Lmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtLWVycm9yIC5odC1ub3RpZmljYXRpb25fX2FjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LW5vdGlmaWNhdGlvbi1lcnJvci1hY2NlbnQsI2ZhNGQz'@; put 'Mil9Lmh0LW5vdGlmaWNhdGlvbl9fdG9hc3QtaW5uZXJ7d2lkdGg6MTAwJTttaW4td2lkdGg6MDtkaXJlY3Rpb246aW5oZXJpdDtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6c3RyZXRjaDtnYXA6MDtwYWRkaW5nOjEwcHg7ZGlzcGxheTpmbGV4fS5odC1ub3RpZmljYXRpb25fX2Fj'@; put 'Y2VudHtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7ZmxleDowIDAgNHB4O2FsaWduLXNlbGY6c3RyZXRjaDttYXJnaW4taW5saW5lLWVuZDoxMHB4fS5odC1ub3RpZmljYXRpb25fX2JvZHl7ZmxleDphdXRvO21pbi13aWR0aDowfS5odC1ub3RpZmljYXRpb25fX3Rp'@; put 'dGxle21hcmdpbjowIDAgdmFyKC0taHQtZ2FwLXNpemUpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWZvbnQtd2VpZ2h0LDYwMCl9Lmh0LW5vdGlmaWNhdGlvbl9fbWVzc2FnZXtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplLXNtYWxsKTt3'@; put 'b3JkLWJyZWFrOmJyZWFrLXdvcmQ7bWFyZ2luOjB9Lmh0LW5vdGlmaWNhdGlvbl9fYWN0aW9uc3tnYXA6dmFyKC0taHQtZ2FwLXNpemUpO21hcmdpbi10b3A6dmFyKC0taHQtZ2FwLXNpemUpO2ZsZXgtd3JhcDp3cmFwO2Rpc3BsYXk6ZmxleH0uaHQtbm90aWZpY2F0aW9uX19jbG9zZXtib3gt'@; put 'c2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6dmFyKC0taHQtaWNvbi1idXR0b24taGl0LWFyZWEtc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tYnV0dG9uLWhpdC1hcmVhLXNpemUpO2NvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWljb24tY29sb3IsaW5oZXJpdCk7Y3Vyc29yOnBvaW50ZXI7'@; put 'Ym9yZGVyLXJhZGl1czp2YXIoLS1odC1pY29uLWJ1dHRvbi1ib3JkZXItcmFkaXVzLHZhcigtLWh0LWJvcmRlci1yYWRpdXMsNHB4KSk7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmU7ZmxleDpub25lO2FsaWduLXNlbGY6ZmxleC1zdGFydDttYXJnaW4taW5saW5lLXN0YXJ0OjRweDtwYWRk'@; put 'aW5nOjA7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6dmlzaWJsZX0uaHQtbm90aWZpY2F0aW9uX19jbG9zZTpiZWZvcmV7Y29udGVudDoiIjt0b3A6NTAlO21hcmdpbi10b3A6Y2FsYygtLjUqdmFyKC0taHQtaWNvbi1zaXplKSk7bWFyZ2luLWlubGluZS1zdGFydDpjYWxjKC0uNSp2YXIo'@; put 'LS1odC1pY29uLXNpemUpKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0LWlubGluZS1zdGFydDo1MCV9Lmh0LW5vdGlmaWNhdGlvbl9fY2xvc2U6aG92ZXJ7Y29sb3I6dmFyKC0taHQtaWNvbi1idXR0b24taG92ZXItaWNvbi1jb2xvcixpbmhlcml0KTtiYWNrZ3JvdW5k'@; put 'LWNvbG9yOnZhcigtLWh0LWljb24tYnV0dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3IsY29sb3ItbWl4KGluIHNyZ2IsdmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik4JSx0cmFuc3BhcmVudCkpfS5odC1ub3RpZmljYXRpb25fX2Nsb3NlOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29s'@; put 'aWQgdmFyKC0taHQtYWNjZW50LWNvbG9yKTtvdXRsaW5lLW9mZnNldDoycHh9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9ue3dpZHRoOjEwMCU7Y29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1iYXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1odC1wYWdpbmF0aW9uLWJh'@; put 'ci1iYWNrZ3JvdW5kLWNvbG9yKTtmb250LXNpemU6dmFyKC0taHQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93LXg6YXV0b30uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb246bm90KC5odC1zbG90LWVs'@; put 'ZW1lbnQpe2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnaW5hdGlvbl9faW5uZXJ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47'@; put 'YWxpZ24taXRlbXM6Y2VudGVyO2dhcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplKSo0KTtwYWRkaW5nLWlubGluZTp2YXIoLS1odC1wYWdpbmF0aW9uLWJhci1ob3Jpem9udGFsLXBhZGRpbmcpO3BhZGRpbmctYmxvY2s6dmFyKC0taHQtcGFnaW5hdGlvbi1iYXItdmVydGljYWwtcGFkZGluZyk7'@; put 'ZmxleC13cmFwOndyYXA7bWluLXdpZHRoOjIzMHB4O2Rpc3BsYXk6ZmxleH0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2Utc2l6ZS1zZWN0aW9ue2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMik7ZGlzcGxheTpmbGV4fS5oYW5kc29u'@; put 'dGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX2xhYmVse3doaXRlLXNwYWNlOm5vd3JhcH0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2Utc2l6ZS1zZWN0aW9uX19zZWxlY3Qtd3JhcHBlcntib3JkZXItcmFkaXVzOnZhcigtLWh0LWlucHV0LWJv'@; put 'cmRlci1yYWRpdXMpO3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyIHNlbGVjdHtwYWRkaW5nLWlubGluZS1zdGFydDp2YXIoLS1odC1nYXAtc2l6ZSk7cGFkZGluZy1pbmxpbmUtZW5kOmNh'@; put 'bGModmFyKC0taHQtZ2FwLXNpemUpICsgdmFyKC0taHQtaWNvbi1zaXplKSk7cGFkZGluZy10b3A6dmFyKC0taHQtZ2FwLXNpemUpO3BhZGRpbmctYm90dG9tOnZhcigtLWh0LWdhcC1zaXplKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWlucHV0LWJvcmRlci1yYWRpdXMpO2NvbG9yOnZhcigt'@; put 'LWh0LWlucHV0LWZvcmVncm91bmQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtaW5wdXQtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1odC1pbnB1dC1ib3JkZXItY29sb3IpO2xpbmUtaGVpZ2h0OmNhbGModmFyKC0taHQtbGluZS1oZWlnaHQpIC0g'@; put 'NHB4KTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2Utc2l6ZS1zZWN0aW9uX19zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6ZGlzYWJsZWR7b3BhY2l0eTouNDtjdXJzb3I6ZGVm'@; put 'YXVsdDtjb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5o'@; put 'YW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyIHNlbGVjdDpob3Zlcjpub3QoOmRpc2FibGVkKXtjb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlu'@; put 'cHV0LWhvdmVyLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1ob3Zlci1ib3JkZXItY29sb3IpfS5oYW5kc29udGFibGUuaHQtcGFnaW5hdGlvbiAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyIHNlbGVjdDpmb2N1c3tjb2xvcjp2YXIo'@; put 'LS1odC1pbnB1dC1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWlucHV0LWZvY3VzLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1odC1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxl'@; put 'Lmh0LXBhZ2luYXRpb24gLmh0LXBhZ2Utc2l6ZS1zZWN0aW9uX19zZWxlY3Qtd3JhcHBlcjphZnRlcntjb250ZW50OiIiO2JhY2tncm91bmQtY29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7cG9pbnRlci1ldmVudHM6bm9uZTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRl'@; put 'O2luc2V0LWJsb2NrLWVuZDo1MCU7aW5zZXQtaW5saW5lLWVuZDp2YXIoLS1odC1nYXAtc2l6ZSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNTAlKX0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2UtY291bnRlci1zZWN0aW9ue21hcmdpbi1pbmxpbmUtZW5kOmF1dG99LmhhbmRz'@; put 'b250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbnthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjFweDtkaXNwbGF5OmZsZXh9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbl9fYnV0dG9ue2ZvbnQtc2l6ZTpp'@; put 'bmhlcml0O2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtcGFnaW5hdGlvbi1idXR0b24tYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1mb3JlZ3JvdW5kLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWJhY2tn'@; put 'cm91bmQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtaWNvbi1idXR0b24tbGFyZ2UtYm9yZGVyLXJhZGl1cyk7cGFkZGluZzp2YXIoLS1odC1pY29uLWJ1dHRvbi1sYXJnZS1wYWRkaW5nKTtjdXJzb3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2Ut'@; put 'bmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b246YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9ja30uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b24tLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5v'@; put 'bmU7Y29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1idXR0b24tZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0taHQtcGFnaW5hdGlv'@; put 'bi1idXR0b24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWhvdmVyLWJv'@; put 'cmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1idXR0b24taG92ZXItZm9yZWdyb3VuZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uaGFuZHNvbnRhYmxlLmh0LXBhZ2luYXRpb24g'@; put 'Lmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uX19idXR0b246Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24tYnV0dG9uLWZvY3VzLWJvcmRlci1jb2xvcik7Y29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1idXR0b24tZm9jdXMtZm9yZWdyb3VuZC1jb2xvcik7YmFja2dy'@; put 'b3VuZC1jb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yKTtvdXRsaW5lOm5vbmV9LmhhbmRzb250YWJsZS5odC1wYWdpbmF0aW9uIC5odC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbl9fbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtYWxp'@; put 'Z246Y2VudGVyO21pbi13aWR0aDoxMDBweH0uaHQtbG9hZGluZ19faWNvbi1zdmd7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTtjb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpO3RyYW5zZm9ybS1vcmlnaW46NTAlO2FuaW1hdGlvbjoxcyBs'@; put 'aW5lYXIgaW5maW5pdGUgaHQtbG9hZGluZy1zcGluO2Rpc3BsYXk6YmxvY2t9Lmh0LWxvYWRpbmdfX2NvbnRlbnR7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDpjYWxjKHZhcigtLWh0LWdhcC1zaXplKSoyKTtkaXNwbGF5OmZsZXh9Lmh0LWxvYWRpbmdfX3RpdGxle2ZvbnQtc2l6ZTp2YXIoLS1o'@; put 'dC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWh0LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodCk7bWFyZ2luOjB9Lmh0LWxvYWRpbmdfX2Rlc2NyaXB0aW9ue2NvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTtmb250LXNp'@; put 'emU6dmFyKC0taHQtZm9udC1zaXplLXNtYWxsKTtsaW5lLWhlaWdodDp2YXIoLS1odC1saW5lLWhlaWdodC1zbWFsbCk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO21hcmdpbjowfUBrZXlmcmFtZXMgaHQtbG9hZGluZy1zcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVn'@; put 'KX19Lmh0LWVtcHR5LWRhdGEtc3RhdGV7c2Nyb2xsYmFyLXdpZHRoOmF1dG87c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcil2YXIoLS1odC1zY3JvbGxiYXItdHJhY2stY29sb3IpO3otaW5kZXg6OTk5O2JvcmRlcjoxcHggc29saWQgdmFyKC0taHQtYm9y'@; put 'ZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpO3dpZHRoOjEwMCU7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtv'@; put 'dmVyZmxvdy15OmF1dG99Lmh0LWVtcHR5LWRhdGEtc3RhdGUgKntib3gtc2l6aW5nOmJvcmRlci1ib3ghaW1wb3J0YW50fS5odC1lbXB0eS1kYXRhLXN0YXRlX19jb250ZW50LXdyYXBwZXJ7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjEwMCU7cGFkZGluZzpjYWxj'@; put 'KHZhcigtLWh0LWdhcC1zaXplKSoyKTtib3JkZXItcmFkaXVzOnZhcigtLWh0LWJvcmRlci1yYWRpdXMpO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uaHQtZW1wdHktZGF0YS1zdGF0ZV9fY29udGVudC13cmFwcGVyLWlubmVye21heC13'@; put 'aWR0aDo0ODBweDtwYWRkaW5nOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpO2JvcmRlci1yYWRpdXM6dmFyKC0taHQtYm9yZGVyLXJhZGl1cyk7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uaHQt'@; put 'ZW1wdHktZGF0YS1zdGF0ZV9fY29udGVudC13cmFwcGVyLWlubmVyOmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgMXB4IHZhcigtLWh0LWFjY2VudC1jb2xvcik7b3V0bGluZTpub25lfS5odC1lbXB0eS1kYXRhLXN0YXRlX19jb250ZW50e2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRl'@; put 'bXM6Y2VudGVyO2dhcDp2YXIoLS1odC1nYXAtc2l6ZSk7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2Rpc3BsYXk6ZmxleH0uaHQtZW1wdHktZGF0YS1zdGF0ZV9fdGl0bGV7Zm9udC1zaXplOnZhcigtLWh0LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0taHQtZm9udC13ZWlnaHQpO2xpbmUt'@; put 'aGVpZ2h0OnZhcigtLWh0LWxpbmUtaGVpZ2h0KTttYXJnaW46MH0uaHQtZW1wdHktZGF0YS1zdGF0ZV9fZGVzY3JpcHRpb257Y29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1zZWNvbmRhcnktY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1odC1mb250LXNpemUtc21hbGwpO2xpbmUtaGVpZ2h0OnZh'@; put 'cigtLWh0LWxpbmUtaGVpZ2h0LXNtYWxsKTtmb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7bWFyZ2luOjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGVfX2J1dHRvbnN7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6Y2FsYyh2YXIoLS1odC1nYXAtc2l6ZSkqMik7ZmxleC1mbG93Ondy'@; put 'YXA7ZGlzcGxheTpmbGV4fS5odC1lbXB0eS1kYXRhLXN0YXRlX19idXR0b25zLS1oYXMtYnV0dG9uc3ttYXJnaW4tdG9wOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKjIpfS5odC1lbXB0eS1kYXRhLXN0YXRlX19zcGlubmVye3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bWFyZ2luLWJvdHRvbTpj'@; put 'YWxjKHZhcigtLWh0LWdhcC1zaXplKSoyKTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWh0LWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpO2JvcmRlci1yYWRpdXM6NTAlO2ZsZXgtc2hyaW5rOjA7YW5pbWF0aW9uOi43NXMgbGluZWFyIGluZmlu'@; put 'aXRlIGh0LWVtcHR5LWRhdGEtc3RhdGUtc3Bpbn1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5odC1lbXB0eS1kYXRhLXN0YXRlX19zcGlubmVye2JvcmRlci10b3AtY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTthbmltYXRpb246bm9uZX19Lmh0LWVtcHR5LWRh'@; put 'dGEtc3RhdGUtLWxvYWRpbmcgLmh0LWVtcHR5LWRhdGEtc3RhdGVfX2NvbnRlbnR7Z2FwOmNhbGModmFyKC0taHQtZ2FwLXNpemUpKi41KX0uaHQtZW1wdHktZGF0YS1zdGF0ZS0tZGlzYWJsZS10b3AtYm9yZGVye2JvcmRlci10b3Atd2lkdGg6MH0uaHQtZW1wdHktZGF0YS1zdGF0ZS0tZGlz'@; put 'YWJsZS10b3AtYm9yZGVyOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBu'@; put 'YiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSksLmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtdG9wLWJvcmRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxh'@; put 'bmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10'@; put 'b3AtcmlnaHQtcmFkaXVzOjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtaW5saW5lLWJvcmRlcntib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtaW5saW5lLWJvcmRlcjpub3QoOmxhbmcoYWUpLDpsYW5nKGFyKSw6bGFuZyhh'@; put 'cmMpLDpsYW5nKGJjYyksOmxhbmcoYnFpKSw6bGFuZyhja2IpLDpsYW5nKGR2KSw6bGFuZyhmYSksOmxhbmcoZ2xrKSw6bGFuZyhoZSksOmxhbmcoa3UpLDpsYW5nKG16biksOmxhbmcobnFvKSw6bGFuZyhwbmIpLDpsYW5nKHBzKSw6bGFuZyhzZCksOmxhbmcodWcpLDpsYW5nKHVyKSw6bGFu'@; put 'Zyh5aSkpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LWVtcHR5LWRhdGEtc3RhdGUtLWRpc2FibGUtaW5saW5lLWJvcmRlcjppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5n'@; put 'KGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6'@; put 'MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5odC1lbXB0eS1kYXRhLXN0YXRlLS1kaXNhYmxlLWJvdHRvbS1ib3JkZXJ7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5odC1lbXB0eS1kYXRhLXN0YXRlLS1kaXNhYmxlLWJvdHRvbS1ib3JkZXI6bm90KDpsYW5nKGFlKSw6bGFuZyhhciks'@; put 'OmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUpLDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1'@; put 'ciksOmxhbmcoeWkpKSwuaHQtZW1wdHktZGF0YS1zdGF0ZS0tZGlzYWJsZS1ib3R0b20tYm9yZGVyOmlzKDpsYW5nKGFlKSw6bGFuZyhhciksOmxhbmcoYXJjKSw6bGFuZyhiY2MpLDpsYW5nKGJxaSksOmxhbmcoY2tiKSw6bGFuZyhkdiksOmxhbmcoZmEpLDpsYW5nKGdsayksOmxhbmcoaGUp'@; put 'LDpsYW5nKGt1KSw6bGFuZyhtem4pLDpsYW5nKG5xbyksOmxhbmcocG5iKSw6bGFuZyhwcyksOmxhbmcoc2QpLDpsYW5nKHVnKSw6bGFuZyh1ciksOmxhbmcoeWkpKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uaHQtcm9vdC13cmFw'@; put 'cGVyOmhhcyg+Lmh0LXNsb3QtYm90dG9tPi5odC1zbG90LWVsZW1lbnQpIC5odC1lbXB0eS1kYXRhLXN0YXRlOm5vdCg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhnbGspLDps'@; put 'YW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmh0LXJv'@; put 'b3Qtd3JhcHBlcjpoYXMoPi5odC1zbG90LWJvdHRvbT4uaHQtc2xvdC1lbGVtZW50KSAuaHQtZW1wdHktZGF0YS1zdGF0ZTppcyg6bGFuZyhhZSksOmxhbmcoYXIpLDpsYW5nKGFyYyksOmxhbmcoYmNjKSw6bGFuZyhicWkpLDpsYW5nKGNrYiksOmxhbmcoZHYpLDpsYW5nKGZhKSw6bGFuZyhn'@; put 'bGspLDpsYW5nKGhlKSw6bGFuZyhrdSksOmxhbmcobXpuKSw6bGFuZyhucW8pLDpsYW5nKHBuYiksOmxhbmcocHMpLDpsYW5nKHNkKSw6bGFuZyh1ZyksOmxhbmcodXIpLDpsYW5nKHlpKSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9'@; put 'QGtleWZyYW1lcyBodC1lbXB0eS1kYXRhLXN0YXRlLXNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0vKiEKICogQ29weXJpZ2h0IChjKSBIQU5EU09OQ09ERSBzcC4geiBvLiBvLgogKgogKiBIQU5EU09OVEFCTEUgaXMgYSBzb2Z0d2FyZSBkaXN0cmlidXRlZCBieSBIQU5EU09O'@; put 'Q09ERSBzcC4geiBvLiBvLiwgYSBQb2xpc2ggY29ycG9yYXRpb24gYmFzZWQgaW4KICogR2R5bmlhLCBQb2xhbmQsIGF0IEFsZWphIFp3eWNpZXN0d2EgOTYtOTgsIHJlZ2lzdGVyZWQgYnkgdGhlIERpc3RyaWN0IENvdXJ0IGluIEdkYW5zayB1bmRlciBudW1iZXIKICogNTM4NjUxLCBFVSB0'@; put 'YXggSUQgbnVtYmVyOiBQTDU4NjIyOTQwMDIsIHNoYXJlIGNhcGl0YWw6IFBMTiA2Miw4MDAuMDAuCiAqCiAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IGFwcGxpY2FibGUgY29weXJpZ2h0IGxhd3MsIGluY2x1ZGluZyBpbnRlcm5hdGlvbmFsIHRyZWF0aWVzLCBhbmQgZHVhbC0K'@; put 'ICogbGljZW5zZWQgLSBkZXBlbmRpbmcgb24gd2hldGhlciB5b3VyIHVzZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgbWVhbmluZyBpbnRlbmRlZCBmb3Igb3IKICogcmVzdWx0aW5nIGluIGNvbW1lcmNpYWwgYWR2YW50YWdlIG9yIG1vbmV0YXJ5IGNvbXBlbnNhdGlvbiwgb3Igbm90Lgog'@; put 'KgogKiBJZiB5b3VyIHVzZSBpcyBzdHJpY3RseSBwZXJzb25hbCBvciBzb2xlbHkgZm9yIGV2YWx1YXRpb24gcHVycG9zZXMsIG1lYW5pbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiB0ZXN0aW5nCiAqIHRoZSBzdWl0YWJpbGl0eSwgcGVyZm9ybWFuY2UsIGFuZCB1c2VmdWxuZXNzIG9mIHRoaXMg'@; put 'c29mdHdhcmUgb3V0c2lkZSB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwKICogeW91IGFncmVlIHRvIGJlIGJvdW5kIGJ5IHRoZSB0ZXJtcyBpbmNsdWRlZCBpbiB0aGUgImhhbmRzb250YWJsZS1ub24tY29tbWVyY2lhbC1saWNlbnNlLnBkZiIgZmlsZS4KICoKICogWW91ciB1c2Ugb2Yg'@; put 'dGhpcyBzb2Z0d2FyZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcyBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBpbmNsdWRlZCBpbiBhbiBhcHBsaWNhYmxlCiAqIGxpY2Vuc2UgYWdyZWVtZW50LgogKgogKiBJbiBhbnkgY2FzZSwgeW91IG11c3Qgbm90IG1ha2UgYW55IHN1Y2ggdXNlIG9mIHRo'@; put 'aXMgc29mdHdhcmUgYXMgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB3aGljaCBtYXkgYmUKICogY29uc2lkZXJlZCBjb21wZXRpdGl2ZSB3aXRoIHRoaXMgc29mdHdhcmUuCiAqCiAqIFVOTEVTUyBFWFBSRVNTTFkgQUdSRUVEIE9USEVSV0lTRSwgSEFORFNPTkNPREUgUFJPVklERVMgVEhJUyBTT0ZU'@; put 'V0FSRSBPTiBBTiAiQVMgSVMiCiAqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgQU5EIElOIE5PIEVWRU5UIEFORCBVTkRFUiBOTwogKiBMRUdBTCBUSEVPUlksIFNIQUxMIEhBTkRTT05DT0RFIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFH'@; put 'RVMsIElOQ0xVRElORyBBTlkgRElSRUNULAogKiBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9GIEFOWSBDSEFSQUNURVIgQVJJU0lORyBGUk9NCiAqIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRISVMgU09GVFdBUkUuCiAqCiAqIFZl'@; put 'cnNpb246IDE4LjAuMAogKiBSZWxlYXNlIGRhdGU6IDMwLzA2LzIwMjYgKGJ1aWx0IGF0IDMwLzA2LzIwMjYgMDg6NDU6MjgpCiAqLy5odC10aGVtZS1jbGFzc2ljLC5odC10aGVtZS1jbGFzc2ljLWRhcmssLmh0LXRoZW1lLWNsYXNzaWMtZGFyay1hdXRvey0taHQtc2l6aW5nLXNpemUtMDow'@; put 'cHg7LS1odC1zaXppbmctc2l6ZS0wLTU6MnB4Oy0taHQtc2l6aW5nLXNpemUtMTo0cHg7LS1odC1zaXppbmctc2l6ZS0yOjhweDstLWh0LXNpemluZy1zaXplLTEtNTo2cHg7LS1odC1zaXppbmctc2l6ZS0zOjEycHg7LS1odC1zaXppbmctc2l6ZS00OjE2cHg7LS1odC1zaXppbmctc2l6ZS01'@; put 'OjIwcHg7LS1odC1zaXppbmctc2l6ZS02OjI0cHg7LS1odC1zaXppbmctc2l6ZS03OjI4cHg7LS1odC1zaXppbmctc2l6ZS04OjMycHg7LS1odC1zaXppbmctc2l6ZS05OjM2cHg7LS1odC1zaXppbmctc2l6ZS0xMDo0MHB4Oy0taHQtc2l6aW5nLXNpemUtMC0yNToxcHg7LS1odC1kZW5zaXR5'@; put 'LWNlbGwtdmVydGljYWw6dmFyKC0taHQtc2l6aW5nLXNpemUtMC01KTstLWh0LWRlbnNpdHktY2VsbC1ob3Jpem9udGFsOnZhcigtLWh0LXNpemluZy1zaXplLTEtNSk7LS1odC1kZW5zaXR5LWJhcnMtaG9yaXpvbnRhbDp2YXIoLS1odC1zaXppbmctc2l6ZS0yKTstLWh0LWRlbnNpdHktYmFy'@; put 'cy12ZXJ0aWNhbDp2YXIoLS1odC1zaXppbmctc2l6ZS0xKTstLWh0LWRlbnNpdHktZ2FwOnZhcigtLWh0LXNpemluZy1zaXplLTAtNSk7LS1odC1kZW5zaXR5LWJ1dHRvbi1ob3Jpem9udGFsOnZhcigtLWh0LXNpemluZy1zaXplLTIpOy0taHQtZGVuc2l0eS1idXR0b24tdmVydGljYWw6dmFy'@; put 'KC0taHQtc2l6aW5nLXNpemUtMC01KTstLWh0LWRlbnNpdHktZGlhbG9nLWhvcml6b250YWw6dmFyKC0taHQtc2l6aW5nLXNpemUtMS01KTstLWh0LWRlbnNpdHktZGlhbG9nLXZlcnRpY2FsOnZhcigtLWh0LXNpemluZy1zaXplLTEtNSk7LS1odC1kZW5zaXR5LWlucHV0LWhvcml6b250YWw6'@; put 'dmFyKC0taHQtc2l6aW5nLXNpemUtMik7LS1odC1kZW5zaXR5LWlucHV0LXZlcnRpY2FsOnZhcigtLWh0LXNpemluZy1zaXplLTAtNSk7LS1odC1kZW5zaXR5LW1lbnUtdmVydGljYWw6dmFyKC0taHQtc2l6aW5nLXNpemUtMik7LS1odC1kZW5zaXR5LW1lbnUtaG9yaXpvbnRhbDp2YXIoLS1o'@; put 'dC1zaXppbmctc2l6ZS0wKTstLWh0LWRlbnNpdHktbWVudS1pdGVtLXZlcnRpY2FsOnZhcigtLWh0LXNpemluZy1zaXplLTAtNSk7LS1odC1kZW5zaXR5LW1lbnUtaXRlbS1ob3Jpem9udGFsOnZhcigtLWh0LXNpemluZy1zaXplLTIpOy0taHQtY29sb3JzLXByaW1hcnktMTAwOiM3YWFkZmY7'@; put 'LS1odC1jb2xvcnMtcHJpbWFyeS0yMDA6IzZhOWJmZjstLWh0LWNvbG9ycy1wcmltYXJ5LTMwMDojNjk4NWI5Oy0taHQtY29sb3JzLXByaW1hcnktNDAwOiM4ZWIwZTc7LS1odC1jb2xvcnMtcHJpbWFyeS01MDA6IzUyOTJmNzstLWh0LWNvbG9ycy1wcmltYXJ5LTYwMDojM2U3ZWUzOy0taHQt'@; put 'Y29sb3JzLXBhbGV0dGUtNTA6I2YwZjBmMDstLWh0LWNvbG9ycy1wYWxldHRlLTEwMDojZGNkY2RjOy0taHQtY29sb3JzLXBhbGV0dGUtMjAwOiNjY2M7LS1odC1jb2xvcnMtcGFsZXR0ZS0zMDA6I2M2YzZjNjstLWh0LWNvbG9ycy1wYWxldHRlLTQwMDojOTk5Oy0taHQtY29sb3JzLXBhbGV0'@; put 'dGUtNTAwOiM3Nzc7LS1odC1jb2xvcnMtcGFsZXR0ZS02MDA6IzVjNWM1YzstLWh0LWNvbG9ycy1wYWxldHRlLTcwMDojNDA0MDQwOy0taHQtY29sb3JzLXBhbGV0dGUtODAwOiMzMTMxMzE7LS1odC1jb2xvcnMtcGFsZXR0ZS05MDA6IzIyMjstLWh0LWNvbG9ycy1wYWxldHRlLTk1MDojMGYw'@; put 'ZjEwOy0taHQtY29sb3JzLXdoaXRlOiNmZmY7LS1odC1jb2xvcnMtYmxhY2s6IzAwMDstLWh0LWNvbG9ycy10cmFuc3BhcmVudDojZmZmMDstLWh0LWZvbnQtZmFtaWx5OkludGVyOy0taHQtZm9udC1zaXplOjEzcHg7LS1odC1mb250LXNpemUtc21hbGw6MTFweDstLWh0LWxpbmUtaGVpZ2h0'@; put 'OjIxcHg7LS1odC1saW5lLWhlaWdodC1zbWFsbDoxNnB4Oy0taHQtZm9udC13ZWlnaHQ6NDAwOy0taHQtbGV0dGVyLXNwYWNpbmc6MHB4Oy0taHQtYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0yMDApKXZhcigtLWxpZ2h0bmlu'@; put 'Z2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTcwMCkpOy0taHQtYWNjZW50LWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcHJpbWFyeS01MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wcmltYXJ5LTEwMCkp'@; put 'Oy0taHQtZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtODAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKTstLWh0LWZvcmVncm91bmQtc2Vjb25kYXJ5LWNvbG9yOnZh'@; put 'cigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTQwMCkpOy0taHQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29s'@; put 'b3JzLXdoaXRlKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS05NTApKTstLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MCkpdmFyKC0tbGlnaHRuaW5n'@; put 'Y3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTAwKSk7LS1odC1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01'@; put 'MDApKTstLWh0LXJlYWQtb25seS1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKTstLWh0LWRpc2FibGVkLWNvbG9yOnZhcigtLWxpZ2h0'@; put 'bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTUwMCkpOy0taHQtZ2FwLXNpemU6dmFyKC0taHQtZGVuc2l0eS1nYXApOy0taHQtaWNvbi1zaXplOnZhcigtLWh0LXNpemluZy1z'@; put 'aXplLTMpOy0taHQtdGFibGUtdHJhbnNpdGlvbjowczstLWh0LWJvcmRlci1yYWRpdXM6dmFyKC0taHQtc2l6aW5nLXNpemUtMCk7LS1odC1iYXItZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTstLWh0LWJhci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJh'@; put 'Y2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWJhci1ob3Jpem9udGFsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1iYXJzLWhvcml6b250YWwpOy0taHQtYmFyLXZlcnRpY2FsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1iYXJzLXZlcnRpY2FsKTstLWh0LXNoYWRvdy1jb2xvcjp2'@; put 'YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtODAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKTstLWh0LXNoYWRvdy14OnZhcigtLWh0LXNpemluZy1zaXplLTAtMjUpOy0taHQtc2hhZG93LXk6dmFy'@; put 'KC0taHQtc2l6aW5nLXNpemUtMC0yNSk7LS1odC1zaGFkb3ctYmx1cjp2YXIoLS1odC1zaXppbmctc2l6ZS0wKTstLWh0LXNoYWRvdy1vcGFjaXR5OjglOy0taHQtY2VsbC1ob3Jpem9udGFsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1jZWxsLWhvcml6b250YWwpOy0taHQtY2VsbC12ZXJ0'@; put 'aWNhbC1wYWRkaW5nOnZhcigtLWh0LWRlbnNpdHktY2VsbC12ZXJ0aWNhbCk7LS1odC1jZWxsLWhvcml6b250YWwtYm9yZGVyLWNvbG9yOnZhcigtLWh0LWJvcmRlci1jb2xvcik7LS1odC1jZWxsLXZlcnRpY2FsLWJvcmRlci1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpOy0taHQtY2Vs'@; put 'bC1zZWxlY3Rpb24tYm9yZGVyLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1jZWxsLXNlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1jZWxsLXN1Y2Nlc3MtYmFja2dyb3VuZC1jb2xvcjojMzdiYzZjMzM7LS1odC1jZWxsLWVy'@; put 'cm9yLWJhY2tncm91bmQtY29sb3I6I2ZhNGQzMjMzOy0taHQtY2VsbC1yZWFkLW9ubHktYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jb2xvcnMtdHJhbnNwYXJlbnQpOy0taHQtY2VsbC1hdXRvZmlsbC1zaXplOnZhcigtLWh0LXNpemluZy1zaXplLTEtNSk7LS1odC1jZWxsLWF1dG9maWxs'@; put 'LWhpdC1hcmVhLXNpemU6dmFyKC0taHQtc2l6aW5nLXNpemUtMyk7LS1odC1jZWxsLWF1dG9maWxsLWJvcmRlci13aWR0aDp2YXIoLS1odC1zaXppbmctc2l6ZS0wLTI1KTstLWh0LWNlbGwtYXV0b2ZpbGwtYm9yZGVyLXJhZGl1czp2YXIoLS1odC1zaXppbmctc2l6ZS0wKTstLWh0LWNlbGwt'@; put 'YXV0b2ZpbGwtYm9yZGVyLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpOy0taHQtY2VsbC1hdXRvZmlsbC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1jZWxsLWF1dG9maWxsLWZpbGwtYm9yZGVyLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQt'@; put 'Y29sb3IpOy0taHQtY2VsbC1lZGl0b3ItYm9yZGVyLXdpZHRoOjJweDstLWh0LWNlbGwtZWRpdG9yLWJvcmRlci1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpOy0taHQtY2VsbC1lZGl0b3ItZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29s'@; put 'b3JzLXBhbGV0dGUtOTUwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtd2hpdGUpKTstLWh0LWNlbGwtZWRpdG9yLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1odC1jZWxsLWVkaXRvci1zaGFkb3ctYmx1ci1yYWRpdXM6MHB4'@; put 'Oy0taHQtY2VsbC1lZGl0b3Itc2hhZG93LWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1jZWxsLW1vYmlsZS1oYW5kbGUtc2l6ZTp2YXIoLS1odC1zaXppbmctc2l6ZS0zKTstLWh0LWNlbGwtbW9iaWxlLWhhbmRsZS1ib3JkZXItd2lkdGg6dmFyKC0taHQtc2l6aW5nLXNpemUt'@; put 'MC0yNSk7LS1odC1jZWxsLW1vYmlsZS1oYW5kbGUtYm9yZGVyLXJhZGl1czp2YXIoLS1odC1zaXppbmctc2l6ZS0zKTstLWh0LWNlbGwtbW9iaWxlLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTstLWh0LWNlbGwtbW9iaWxlLWhhbmRsZS1iYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1jZWxsLW1vYmlsZS1oYW5kbGUtYmFja2dyb3VuZC1vcGFjaXR5OjQwJTstLWh0LWhlYWRlci1mb250LXdlaWdodDp2YXIoLS1odC1mb250LXdlaWdodCk7LS1odC1oZWFkZXItZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1odC1mb3JlZ3Jv'@; put 'dW5kLWNvbG9yKTstLWh0LWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWhlYWRlci1oaWdobGlnaHRlZC1zaGFkb3ctc2l6ZTowcHg7LS1odC1oZWFkZXItaGlnaGxpZ2h0ZWQtZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1o'@; put 'dC1mb3JlZ3JvdW5kLWNvbG9yKTstLWh0LWhlYWRlci1oaWdobGlnaHRlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0xMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgw'@; put 'MCkpOy0taHQtaGVhZGVyLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTstLWh0LWhlYWRlci1hY3RpdmUtZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTUwKSl2YXIoLS1saWdodG5pbmdj'@; put 'c3MtZGFyayx2YXIoLS1odC1jb2xvcnMtd2hpdGUpKTstLWh0LWhlYWRlci1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXByaW1hcnktNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcHJp'@; put 'bWFyeS0zMDApKTstLWh0LWhlYWRlci1maWx0ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1jZWxsLXN1Y2Nlc3MtYmFja2dyb3VuZC1jb2xvcik7LS1odC1oZWFkZXItcm93LWZvcmVncm91bmQtY29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7LS1odC1oZWFkZXItcm93LWJh'@; put 'Y2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1zZWNvbmRhcnktY29sb3IpOy0taHQtaGVhZGVyLXJvdy1oaWdobGlnaHRlZC1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpOy0taHQtaGVhZGVyLXJvdy1oaWdobGlnaHRlZC1iYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0xMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpOy0taHQtaGVhZGVyLXJvdy1hY3RpdmUtZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5p'@; put 'bmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTUwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtd2hpdGUpKTstLWh0LWhlYWRlci1yb3ctYWN0aXZlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNv'@; put 'bG9ycy1wcmltYXJ5LTQwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXByaW1hcnktMzAwKSk7LS1odC1yb3ctaGVhZGVyLW9kZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWhlYWRlci1yb3ctYmFja2dyb3VuZC1jb2xvcik7LS1odC1yb3ctaGVhZGVyLWV2'@; put 'ZW4tYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1oZWFkZXItcm93LWJhY2tncm91bmQtY29sb3IpOy0taHQtcm93LWNlbGwtb2RkLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1odC1yb3ctY2VsbC1ldmVuLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQt'@; put 'YmFja2dyb3VuZC1jb2xvcik7LS1odC1idXR0b24tYm9yZGVyLXJhZGl1czp2YXIoLS1odC1zaXppbmctc2l6ZS0wLTUpOy0taHQtYnV0dG9uLWhvcml6b250YWwtcGFkZGluZzp2YXIoLS1odC1kZW5zaXR5LWJ1dHRvbi1ob3Jpem9udGFsKTstLWh0LWJ1dHRvbi12ZXJ0aWNhbC1wYWRkaW5n'@; put 'OnZhcigtLWh0LWRlbnNpdHktYnV0dG9uLXZlcnRpY2FsKTstLWh0LXByaW1hcnktYnV0dG9uLWJvcmRlci1jb2xvcjp2YXIoLS1odC1jb2xvcnMtdHJhbnNwYXJlbnQpOy0taHQtcHJpbWFyeS1idXR0b24tZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0'@; put 'LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTstLWh0LXByaW1hcnktYnV0dG9uLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1odC1jb2xvcnMtdHJhbnNwYXJlbnQpOy0taHQtcHJpbWFyeS1idXR0b24tZGlzYWJsZWQtZm9yZWdyb3Vu'@; put 'ZC1jb2xvcjp2YXIoLS1odC1kaXNhYmxlZC1jb2xvcik7LS1odC1wcmltYXJ5LWJ1dHRvbi1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0xMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0'@; put 'LWNvbG9ycy1wYWxldHRlLTgwMCkpOy0taHQtcHJpbWFyeS1idXR0b24taG92ZXItYm9yZGVyLWNvbG9yOnZhcigtLWh0LWNvbG9ycy10cmFuc3BhcmVudCk7LS1odC1wcmltYXJ5LWJ1dHRvbi1ob3Zlci1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpOy0taHQt'@; put 'cHJpbWFyeS1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXByaW1hcnktNjAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcHJpbWFyeS0yMDApKTstLWh0LXByaW1hcnktYnV0dG9u'@; put 'LWZvY3VzLWJvcmRlci1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0LXByaW1hcnktYnV0dG9uLWZvY3VzLWZvcmVncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1odC1wcmltYXJ5LWJ1dHRvbi1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yOnZhcigt'@; put 'LWh0LWFjY2VudC1jb2xvcik7LS1odC1zZWNvbmRhcnktYnV0dG9uLWJvcmRlci1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1i'@; put 'YWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTstLWh0LXNlY29uZGFyeS1idXR0b24tZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1o'@; put 'dC1kaXNhYmxlZC1jb2xvcik7LS1odC1zZWNvbmRhcnktYnV0dG9uLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTEwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0'@; put 'dGUtODAwKSk7LS1odC1zZWNvbmRhcnktYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1ob3Zlci1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRv'@; put 'bi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTAwKSk7LS1odC1zZWNvbmRhcnktYnV0dG9uLWZvY3VzLWJvcmRl'@; put 'ci1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpOy0taHQtc2Vjb25kYXJ5LWJ1dHRvbi1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91'@; put 'bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWljb24tYnV0dG9uLWJvcmRlci1yYWRpdXM6dmFyKC0taHQtc2l6aW5nLXNpemUtMC01KTstLWh0LWljb24tYnV0dG9uLWxhcmdlLWJvcmRlci1yYWRpdXM6dmFyKC0taHQtc2l6aW5nLXNpemUtMC01KTstLWh0LWljb24tYnV0dG9uLWxhcmdlLXBh'@; put 'ZGRpbmc6dmFyKC0taHQtc2l6aW5nLXNpemUtMSk7LS1odC1pY29uLWJ1dHRvbi1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTMwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNjAw'@; put 'KSk7LS1odC1pY29uLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWljb24tYnV0dG9uLWljb24tY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTQwMCkpdmFyKC0tbGln'@; put 'aHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSk7LS1odC1pY29uLWJ1dHRvbi1oaXQtYXJlYS1zaXplOnZhcigtLWh0LXNpemluZy1zaXplLTYpOy0taHQtaWNvbi1idXR0b24taG92ZXItYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIo'@; put 'LS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTUwMCkpOy0taHQtaWNvbi1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0'@; put 'dGUtNTApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTkwMCkpOy0taHQtaWNvbi1idXR0b24taG92ZXItaWNvbi1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdj'@; put 'c3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTMwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29s'@; put 'b3JzLXBhbGV0dGUtNjAwKSk7LS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLXNlY29uZGFyeS1jb2xvcik7LS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtaWNvbi1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQt'@; put 'Y29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWljb24tYnV0dG9uLWFjdGl2ZS1ob3Zlci1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRl'@; put 'LTQwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSk7LS1odC1pY29uLWJ1dHRvbi1hY3RpdmUtaG92ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLXNlY29uZGFyeS1jb2xvcik7LS1odC1pY29uLWJ1dHRvbi1hY3Rp'@; put 'dmUtaG92ZXItaWNvbi1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWNvbGxhcHNlLWJ1dHRvbi1ib3JkZXItcmFkaXVzOnZh'@; put 'cigtLWh0LXNpemluZy1zaXplLTQpOy0taHQtY29sbGFwc2UtYnV0dG9uLW9wZW4tYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTYw'@; put 'MCkpOy0taHQtY29sbGFwc2UtYnV0dG9uLW9wZW4tYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXdoaXRlKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS05NTApKTstLWh0LWNvbGxhcHNlLWJ1'@; put 'dHRvbi1vcGVuLWljb24tY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTQwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSk7LS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1pY29uLWFjdGl2'@; put 'ZS1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWJvcmRlci1jb2xvcjp2YXIo'@; put 'LS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtMzAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS02MDApKTstLWh0LWNvbGxhcHNlLWJ1dHRvbi1vcGVuLWhvdmVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRu'@; put 'aW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy13aGl0ZSkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTUwKSk7LS1odC1jb2xsYXBzZS1idXR0b24tb3Blbi1ob3Zlci1pY29uLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1o'@; put 'dC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTUwMCkpOy0taHQtY29sbGFwc2UtYnV0dG9uLW9wZW4taG92ZXItaWNvbi1hY3RpdmUtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9y'@; put 'cy1wYWxldHRlLTQwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSk7LS1odC1jb2xsYXBzZS1idXR0b24tY2xvc2UtYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKXZh'@; put 'cigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTYwMCkpOy0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3NlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTUwKSl2YXIoLS1saWdodG5pbmdj'@; put 'c3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS05MDApKTstLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNv'@; put 'bG9ycy1wYWxldHRlLTUwMCkpOy0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3NlLWljb24tYWN0aXZlLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRl'@; put 'LTUwMCkpOy0taHQtY29sbGFwc2UtYnV0dG9uLWNsb3NlLWhvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtMzAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS02MDApKTstLWh0'@; put 'LWNvbGxhcHNlLWJ1dHRvbi1jbG9zZS1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTAwKSk7LS1odC1jb2xsYXBz'@; put 'ZS1idXR0b24tY2xvc2UtaG92ZXItaWNvbi1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWNvbGxhcHNlLWJ1dHRvbi1jbG9z'@; put 'ZS1ob3Zlci1pY29uLWFjdGl2ZS1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWxpbmstY29sb3I6dmFyKC0tbGlnaHRuaW5n'@; put 'Y3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wcmltYXJ5LTYwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXByaW1hcnktMjAwKSk7LS1odC1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcHJpbWFyeS02'@; put 'MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wcmltYXJ5LTIwMCkpOy0taHQtaW5wdXQtYm9yZGVyLXdpZHRoOjFweDstLWh0LWlucHV0LWJvcmRlci1yYWRpdXM6dmFyKC0taHQtc2l6aW5nLXNpemUtMSk7LS1odC1pbnB1dC1ob3Jpem9udGFsLXBhZGRpbmc6'@; put 'dmFyKC0taHQtZGVuc2l0eS1pbnB1dC1ob3Jpem9udGFsKTstLWh0LWlucHV0LXZlcnRpY2FsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1pbnB1dC12ZXJ0aWNhbCk7LS1odC1pbnB1dC1ib3JkZXItY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTstLWh0LWlucHV0LWZvcmVncm91bmQt'@; put 'Y29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7LS1odC1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWlucHV0LWhvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1odC1ib3JkZXItY29sb3IpOy0taHQtaW5wdXQtaG92'@; put 'ZXItZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1odC1mb3JlZ3JvdW5kLWNvbG9yKTstLWh0LWlucHV0LWhvdmVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1zZWNvbmRhcnktY29sb3IpOy0taHQtaW5wdXQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWh0LWJvcmRl'@; put 'ci1jb2xvcik7LS1odC1pbnB1dC1kaXNhYmxlZC1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWRpc2FibGVkLWNvbG9yKTstLWh0LWlucHV0LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTMwMCkpdmFy'@; put 'KC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNjAwKSk7LS1odC1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTstLWh0LWlucHV0LWZvY3VzLWZvcmVncm91bmQtY29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7'@; put 'LS1odC1pbnB1dC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWNoZWNrYm94LXNpemU6dmFyKC0taHQtaWNvbi1zaXplKTstLWh0LWNoZWNrYm94LWJvcmRlci1yYWRpdXM6dmFyKC0taHQtc2l6aW5nLXNpemUtMC01KTst'@; put 'LWh0LWNoZWNrYm94LWJvcmRlci1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWNoZWNrYm94LWJhY2tncm91bmQtY29sb3I6'@; put 'dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1odC1jaGVja2JveC1pY29uLWNvbG9yOnZhcigtLWh0LWNvbG9ycy10cmFuc3BhcmVudCk7LS1odC1jaGVja2JveC1mb2N1cy1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTQw'@; put 'MCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSk7LS1odC1jaGVja2JveC1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpOy0taHQtY2hlY2tib3gtZm9jdXMtaWNvbi1jb2xvcjp2YXIoLS1odC1jb2xv'@; put 'cnMtdHJhbnNwYXJlbnQpOy0taHQtY2hlY2tib3gtZm9jdXMtcmluZy1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpOy0taHQtY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKXZhcigt'@; put 'LWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTYwMCkpOy0taHQtY2hlY2tib3gtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtMTAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFy'@; put 'ayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS04MDApKTstLWh0LWNoZWNrYm94LWRpc2FibGVkLWljb24tY29sb3I6dmFyKC0taHQtY29sb3JzLXRyYW5zcGFyZW50KTstLWh0LWNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1j'@; put 'b2xvcnMtcHJpbWFyeS02MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wcmltYXJ5LTIwMCkpOy0taHQtY2hlY2tib3gtY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1jaGVja2JveC1jaGVja2VkLWljb24tY29s'@; put 'b3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1odC1jaGVja2JveC1jaGVja2VkLWZvY3VzLWJvcmRlci1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0LWNoZWNrYm94LWNoZWNrZWQtZm9jdXMtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3Ip'@; put 'Oy0taHQtY2hlY2tib3gtY2hlY2tlZC1mb2N1cy1pY29uLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpOy0taHQtY2hlY2tib3gtY2hlY2tlZC1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTMwMCkp'@; put 'dmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNjAwKSk7LS1odC1jaGVja2JveC1jaGVja2VkLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTEwMCkpdmFyKC0tbGln'@; put 'aHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtODAwKSk7LS1odC1jaGVja2JveC1jaGVja2VkLWRpc2FibGVkLWljb24tY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTMwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmss'@; put 'dmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNjAwKSk7LS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXByaW1hcnktNjAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMt'@; put 'cHJpbWFyeS0yMDApKTstLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpOy0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1pY29uLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtY29sb3IpOy0taHQtY2hlY2tib3gtaW5k'@; put 'ZXRlcm1pbmF0ZS1mb2N1cy1ib3JkZXItY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1odC1jaGVja2JveC1pbmRldGVybWluYXRlLWZvY3VzLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTstLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZm9jdXMt'@; put 'aWNvbi1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJr'@; put 'LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTYwMCkpOy0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0xMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZh'@; put 'cigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpOy0taHQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1kaXNhYmxlZC1pY29uLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNv'@; put 'bG9ycy1wYWxldHRlLTYwMCkpOy0taHQtcmFkaW8tc2l6ZTp2YXIoLS1odC1pY29uLXNpemUpOy0taHQtcmFkaW8tYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0'@; put 'LWNvbG9ycy1wYWxldHRlLTUwMCkpOy0taHQtcmFkaW8tYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0LXJhZGlvLWljb24tY29sb3I6dmFyKC0taHQtY29sb3JzLXRyYW5zcGFyZW50KTstLWh0LXJhZGlvLWZvY3VzLWJvcmRlci1jb2xvcjp2YXIoLS1s'@; put 'aWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LXJhZGlvLWZvY3VzLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1o'@; put 'dC1yYWRpby1mb2N1cy1pY29uLWNvbG9yOnZhcigtLWh0LWNvbG9ycy10cmFuc3BhcmVudCk7LS1odC1yYWRpby1mb2N1cy1yaW5nLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1yYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZh'@; put 'cigtLWh0LWNvbG9ycy1wYWxldHRlLTMwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNjAwKSk7LS1odC1yYWRpby1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0'@; put 'ZS0xMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpOy0taHQtcmFkaW8tZGlzYWJsZWQtaWNvbi1jb2xvcjp2YXIoLS1odC1jb2xvcnMtdHJhbnNwYXJlbnQpOy0taHQtcmFkaW8tY2hlY2tlZC1ib3JkZXItY29sb3I6dmFyKC0taHQtYWNj'@; put 'ZW50LWNvbG9yKTstLWh0LXJhZGlvLWNoZWNrZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0LXJhZGlvLWNoZWNrZWQtaWNvbi1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpOy0taHQtcmFkaW8tY2hlY2tlZC1mb2N1cy1ib3JkZXItY29sb3I6'@; put 'dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wcmltYXJ5LTYwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXByaW1hcnktMjAwKSk7LS1odC1yYWRpby1jaGVja2VkLWZvY3VzLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dy'@; put 'b3VuZC1jb2xvcik7LS1odC1yYWRpby1jaGVja2VkLWZvY3VzLWljb24tY29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTstLWh0LXJhZGlvLWNoZWNrZWQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDAp'@; put 'KXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTYwMCkpOy0taHQtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0xMDApKXZhcigtLWxpZ2h0'@; put 'bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpOy0taHQtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1pY29uLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0zMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigt'@; put 'LWh0LWNvbG9ycy1wYWxldHRlLTYwMCkpOy0taHQtbW92ZS1iYWNrbGlnaHQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtMzAwKSk7LS1odC1t'@; put 'b3ZlLWJhY2tsaWdodC1vcGFjaXR5OjE2JTstLWh0LW1vdmUtaW5kaWNhdG9yLWNvbG9yOnZhcigtLWxpZ2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS00MDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTUwMCkpOy0taHQt'@; put 'cmVzaXplLWluZGljYXRvci1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS01MDApKTstLWh0LWhpZGRlbi1pbmRpY2F0b3ItY29sb3I6dmFyKC0t'@; put 'bGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTQwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNTAwKSk7LS1odC1tZW51LWJvcmRlci13aWR0aDoxcHg7LS1odC1tZW51LWJvcmRlci1yYWRpdXM6MHB4Oy0taHQtbWVu'@; put 'dS1ob3Jpem9udGFsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1tZW51LWhvcml6b250YWwpOy0taHQtbWVudS12ZXJ0aWNhbC1wYWRkaW5nOnZhcigtLWh0LWRlbnNpdHktbWVudS12ZXJ0aWNhbCk7LS1odC1tZW51LWl0ZW0taG9yaXpvbnRhbC1wYWRkaW5nOnZhcigtLWh0LWRlbnNpdHkt'@; put 'bWVudS1pdGVtLWhvcml6b250YWwpOy0taHQtbWVudS1pdGVtLXZlcnRpY2FsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1tZW51LWl0ZW0tdmVydGljYWwpOy0taHQtbWVudS1ib3JkZXItY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTstLWh0LW1lbnUtc2hhZG93LXg6dmFyKC0taHQt'@; put 'c2hhZG93LXgpOy0taHQtbWVudS1zaGFkb3cteTp2YXIoLS1odC1zaGFkb3cteSk7LS1odC1tZW51LXNoYWRvdy1ibHVyOnZhcigtLWh0LXNoYWRvdy1ibHVyKTstLWh0LW1lbnUtc2hhZG93LWNvbG9yOnZhcigtLWh0LWJvcmRlci1jb2xvcik7LS1odC1tZW51LXNoYWRvdy1vcGFjaXR5OjEw'@; put 'MCU7LS1odC1tZW51LWl0ZW0taG92ZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtMzAwKSk7LS1odC1tZW51LWl0ZW0taG92ZXItY29sb3It'@; put 'b3BhY2l0eTo4JTstLWh0LW1lbnUtaXRlbS1hY3RpdmUtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtMzAwKSk7LS1odC1tZW51LWl0ZW0tYWN0'@; put 'aXZlLWNvbG9yLW9wYWNpdHk6MTIlOy0taHQtY29tbWVudHMtdGV4dGFyZWEtaG9yaXpvbnRhbC1wYWRkaW5nOnZhcigtLWh0LWRlbnNpdHktY2VsbC1ob3Jpem9udGFsKTstLWh0LWNvbW1lbnRzLXRleHRhcmVhLXZlcnRpY2FsLXBhZGRpbmc6dmFyKC0taHQtZGVuc2l0eS1jZWxsLXZlcnRp'@; put 'Y2FsKTstLWh0LWNvbW1lbnRzLXRleHRhcmVhLWJvcmRlci13aWR0aDoxcHg7LS1odC1jb21tZW50cy10ZXh0YXJlYS1ib3JkZXItY29sb3I6dmFyKC0taHQtYm9yZGVyLWNvbG9yKTstLWh0LWNvbW1lbnRzLXRleHRhcmVhLWZvcmVncm91bmQtY29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1j'@; put 'b2xvcik7LS1odC1jb21tZW50cy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWNvbW1lbnRzLXRleHRhcmVhLWZvY3VzLWJvcmRlci13aWR0aDoxcHg7LS1odC1jb21tZW50cy10ZXh0YXJlYS1mb2N1cy1ib3JkZXIt'@; put 'Y29sb3I6dmFyKC0taHQtYWNjZW50LWNvbG9yKTstLWh0LWNvbW1lbnRzLXRleHRhcmVhLWZvY3VzLWZvcmVncm91bmQtY29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7LS1odC1jb21tZW50cy10ZXh0YXJlYS1mb2N1cy1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhY2tncm91'@; put 'bmQtY29sb3IpOy0taHQtY29tbWVudHMtaW5kaWNhdG9yLXNpemU6dmFyKC0taHQtc2l6aW5nLXNpemUtMS01KTstLWh0LWNvbW1lbnRzLWluZGljYXRvci1jb2xvcjp2YXIoLS1odC1hY2NlbnQtY29sb3IpOy0taHQtbGljZW5zZS1ob3Jpem9udGFsLXBhZGRpbmc6dmFyKC0taHQtYmFyLWhv'@; put 'cml6b250YWwtcGFkZGluZyk7LS1odC1saWNlbnNlLXZlcnRpY2FsLXBhZGRpbmc6dmFyKC0taHQtYmFyLXZlcnRpY2FsLXBhZGRpbmcpOy0taHQtbGljZW5zZS1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhci1mb3JlZ3JvdW5kLWNvbG9yKTstLWh0LWxpY2Vuc2UtYmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1odC1iYXItYmFja2dyb3VuZC1jb2xvcik7LS1odC1wYWdpbmF0aW9uLWJhci1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWJhci1mb3JlZ3JvdW5kLWNvbG9yKTstLWh0LXBhZ2luYXRpb24tYmFyLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFyLWJhY2tncm91bmQt'@; put 'Y29sb3IpOy0taHQtcGFnaW5hdGlvbi1iYXItaG9yaXpvbnRhbC1wYWRkaW5nOnZhcigtLWh0LWJhci1ob3Jpem9udGFsLXBhZGRpbmcpOy0taHQtcGFnaW5hdGlvbi1iYXItdmVydGljYWwtcGFkZGluZzp2YXIoLS1odC1iYXItdmVydGljYWwtcGFkZGluZyk7LS1odC1wYWdpbmF0aW9uLWJ1'@; put 'dHRvbi1ib3JkZXItY29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1iYXItYmFja2dyb3VuZC1jb2xvcik7LS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LXBhZ2luYXRpb24tYnV0dG9uLWJhY2tn'@; put 'cm91bmQtY29sb3I6dmFyKC0taHQtcGFnaW5hdGlvbi1iYXItYmFja2dyb3VuZC1jb2xvcik7LS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTUwKSl2YXIoLS1saWdodG5pbmdj'@; put 'c3MtZGFyayx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS05MDApKTstLWh0LXBhZ2luYXRpb24tYnV0dG9uLWhvdmVyLWZvcmVncm91bmQtY29sb3I6dmFyKC0taHQtZm9yZWdyb3VuZC1jb2xvcik7LS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxp'@; put 'Z2h0bmluZ2Nzcy1saWdodCx2YXIoLS1odC1jb2xvcnMtcGFsZXR0ZS0xMDApKXZhcigtLWxpZ2h0bmluZ2Nzcy1kYXJrLHZhcigtLWh0LWNvbG9ycy1wYWxldHRlLTgwMCkpOy0taHQtcGFnaW5hdGlvbi1idXR0b24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24t'@; put 'YmFyLWJhY2tncm91bmQtY29sb3IpOy0taHQtcGFnaW5hdGlvbi1idXR0b24tZGlzYWJsZWQtZm9yZWdyb3VuZC1jb2xvcjp2YXIoLS1odC1kaXNhYmxlZC1jb2xvcik7LS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWh0LXBhZ2luYXRpb24t'@; put 'YmFyLWJhY2tncm91bmQtY29sb3IpOy0taHQtcGFnaW5hdGlvbi1idXR0b24tZm9jdXMtYm9yZGVyLWNvbG9yOnZhcigtLWh0LWFjY2VudC1jb2xvcik7LS1odC1wYWdpbmF0aW9uLWJ1dHRvbi1mb2N1cy1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpOy0taHQt'@; put 'cGFnaW5hdGlvbi1idXR0b24tZm9jdXMtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1odC1wYWdpbmF0aW9uLWJhci1iYWNrZ3JvdW5kLWNvbG9yKTstLWh0LWRpYWxvZy1zZW1pLXRyYW5zcGFyZW50LWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRuaW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNv'@; put 'bG9ycy13aGl0ZSkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTUwKSk7LS1odC1kaWFsb2ctc2VtaS10cmFuc3BhcmVudC1iYWNrZ3JvdW5kLW9wYWNpdHk6ODAlOy0taHQtZGlhbG9nLXNvbGlkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHRu'@; put 'aW5nY3NzLWxpZ2h0LHZhcigtLWh0LWNvbG9ycy13aGl0ZSkpdmFyKC0tbGlnaHRuaW5nY3NzLWRhcmssdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtOTUwKSk7LS1odC1kaWFsb2ctY29udGVudC1wYWRkaW5nLWhvcml6b250YWw6dmFyKC0taHQtZGVuc2l0eS1kaWFsb2ctaG9yaXpvbnRhbCk7'@; put 'LS1odC1kaWFsb2ctY29udGVudC1wYWRkaW5nLXZlcnRpY2FsOnZhcigtLWh0LWRlbnNpdHktZGlhbG9nLXZlcnRpY2FsKTstLWh0LWRpYWxvZy1jb250ZW50LWJvcmRlci1yYWRpdXM6dmFyKC0taHQtc2l6aW5nLXNpemUtMik7LS1odC1kaWFsb2ctY29udGVudC1iYWNrZ3JvdW5kLWNvbG9y'@; put 'OnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LW5vdGlmaWNhdGlvbi1mb3JlZ3JvdW5kLWNvbG9yOnZhcigtLWh0LWZvcmVncm91bmQtY29sb3IpOy0taHQtbm90aWZpY2F0aW9uLWJhY2tncm91bmQtY29sb3I6dmFyKC0taHQtYmFja2dyb3VuZC1jb2xvcik7LS1o'@; put 'dC1ub3RpZmljYXRpb24tYm9yZGVyLWNvbG9yOnZhcigtLWh0LWJvcmRlci1jb2xvcik7LS1odC1ub3RpZmljYXRpb24tc3VjY2Vzcy1hY2NlbnQ6IzM3YmM2YzstLWh0LW5vdGlmaWNhdGlvbi13YXJuaW5nLWFjY2VudDojZmJlOTUyOy0taHQtbm90aWZpY2F0aW9uLWVycm9yLWFjY2VudDoj'@; put 'ZmE0ZDMyOy0taHQtY2hpcC1iYWNrZ3JvdW5kOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LWNoaXAtYm9yZGVyLXJhZGl1czp2YXIoLS1odC1zaXppbmctc2l6ZS0wLTUpOy0taHQtY2hpcC12ZXJ0aWNhbC1wYWRkaW5nOnZhcigtLWh0LXNpemluZy1zaXplLTAp'@; put 'Oy0taHQtY2hpcC1ob3Jpem9udGFsLXBhZGRpbmc6dmFyKC0taHQtc2l6aW5nLXNpemUtMSk7LS1odC1jaGlwLWdhcDp2YXIoLS1odC1zaXppbmctc2l6ZS0xKTstLWh0LXNjcm9sbGJhci1ib3JkZXItcmFkaXVzOnZhcigtLWh0LXNpemluZy1zaXplLTIpOy0taHQtc2Nyb2xsYmFyLXRyYWNr'@; put 'LWNvbG9yOnZhcigtLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yKTstLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcjp2YXIoLS1saWdodG5pbmdjc3MtbGlnaHQsdmFyKC0taHQtY29sb3JzLXBhbGV0dGUtNDAwKSl2YXIoLS1saWdodG5pbmdjc3MtZGFyayx2YXIoLS1odC1jb2xvcnMt'@; put 'cGFsZXR0ZS01MDApKX0uaHQtdGhlbWUtY2xhc3NpY3stLWxpZ2h0bmluZ2Nzcy1saWdodDppbml0aWFsOy0tbGlnaHRuaW5nY3NzLWRhcms6IDtjb2xvci1zY2hlbWU6bGlnaHR9Lmh0LXRoZW1lLWNsYXNzaWMtZGFya3stLWxpZ2h0bmluZ2Nzcy1saWdodDogOy0tbGlnaHRuaW5nY3NzLWRh'@; put 'cms6aW5pdGlhbDtjb2xvci1zY2hlbWU6ZGFya30uaHQtdGhlbWUtY2xhc3NpYy1kYXJrLWF1dG97LS1saWdodG5pbmdjc3MtbGlnaHQ6aW5pdGlhbDstLWxpZ2h0bmluZ2Nzcy1kYXJrOiA7Y29sb3Itc2NoZW1lOmxpZ2h0IGRhcmt9QG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmsp'@; put 'ey5odC10aGVtZS1jbGFzc2ljLWRhcmstYXV0b3stLWxpZ2h0bmluZ2Nzcy1saWdodDogOy0tbGlnaHRuaW5nY3NzLWRhcms6aW5pdGlhbH19Y2xyLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjA7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7'@; put 'ZmlsbDpjdXJyZW50Q29sb3J9Y2xyLWljb24gLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTpjdXJyZW50Q29sb3J9Y2xyLWljb24uaXMtZ3JlZW4sY2xyLWljb24uaXMtc3VjY2Vzc3tmaWxsOiMyZTg1MDB9Y2xyLWljb24uaXMtZ3JlZW4gLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tl'@; put 'LGNsci1pY29uLmlzLXN1Y2Nlc3MgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMmU4NTAwfWNsci1pY29uLmlzLXJlZCxjbHItaWNvbi5pcy1kYW5nZXIsY2xyLWljb24uaXMtZXJyb3J7ZmlsbDojZTAyMjAwfWNsci1pY29uLmlzLXJlZCAudHJhbnNwYXJlbnQtZmlsbC1zdHJv'@; put 'a2UsY2xyLWljb24uaXMtZGFuZ2VyIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1lcnJvciAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNlMDIyMDB9Y2xyLWljb24uaXMtd2FybmluZ3tmaWxsOiNjMjdiMDB9Y2xyLWljb24uaXMtd2FybmluZyAudHJhbnNw'@; put 'YXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNjMjdiMDB9Y2xyLWljb24uaXMtYmx1ZSxjbHItaWNvbi5pcy1pbmZve2ZpbGw6IzAwNzdiOH1jbHItaWNvbi5pcy1ibHVlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1pbmZvIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtz'@; put 'dHJva2U6IzAwNzdiOH1jbHItaWNvbi5pcy13aGl0ZSxjbHItaWNvbi5pcy1pbnZlcnNle2ZpbGw6I2ZmZn1jbHItaWNvbi5pcy13aGl0ZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2UsY2xyLWljb24uaXMtaW52ZXJzZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNmZmZ9Y2xy'@; put 'LWljb24uaXMtaGlnaGxpZ2h0e2ZpbGw6IzAwNzdiOH1jbHItaWNvbi5pcy1oaWdobGlnaHQgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMDA3N2I4fWNsci1pY29uW3NoYXBlJD0iIHVwIl0gc3ZnLGNsci1pY29uW2Rpcj11cF0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoMCl9Y2xy'@; put 'LWljb25bc2hhcGUkPSIgZG93biJdIHN2ZyxjbHItaWNvbltkaXI9ZG93bl0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX1jbHItaWNvbltzaGFwZSQ9IiByaWdodCJdIHN2ZyxjbHItaWNvbltkaXI9cmlnaHRdIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX1jbHItaWNvbltzaGFw'@; put 'ZSQ9IiBsZWZ0Il0gc3ZnLGNsci1pY29uW2Rpcj1sZWZ0XSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfWNsci1pY29uW2ZsaXA9aG9yaXpvbnRhbF0gc3Zne3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWCgxODBkZWcpfWNsci1pY29uW2ZsaXA9dmVydGljYWxdIHN2Z3t0cmFuc2Zv'@; put 'cm06c2NhbGUoLTEpIHJvdGF0ZVkoMTgwZGVnKX1jbHItaWNvbiAuY2xyLWktYmFkZ2V7ZmlsbDojZTAyMjAwfWNsci1pY29uIC5jbHItaS1iYWRnZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNlMDIyMDB9Y2xyLWljb24+KntoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2Rpc3Bs'@; put 'YXk6YmxvY2s7cG9pbnRlci1ldmVudHM6bm9uZX1jbHItaWNvbj5zdmd7dHJhbnNpdGlvbjppbmhlcml0fWNsci1pY29uPnN2ZyB0aXRsZXtkaXNwbGF5Om5vbmV9Y2xyLWljb24gLmNsci1pLXNvbGlkLGNsci1pY29uIC5jbHItaS1zb2xpZC0tYmFkZ2VkLGNsci1pY29uIC5jbHItaS1zb2xp'@; put 'ZC0tYWxlcnRlZHtkaXNwbGF5Om5vbmV9Y2xyLWljb24gLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWQ6bm90KC5jbHItaS1vdXRsaW5lKSxjbHItaWNvbiAuY2xyLWktb3V0bGluZS0tYmFkZ2VkOm5vdCguY2xyLWktb3V0bGluZSl7ZGlzcGxheTpub25lfWNsci1pY29uW2NsYXNzKj1oYXMtYWxl'@; put 'cnRdIC5jYW4tYWxlcnQgLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWR7ZGlzcGxheTpibG9ja31jbHItaWNvbltjbGFzcyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0IC5jbHItaS1vdXRsaW5lOm5vdCguY2xyLWktb3V0bGluZS0tYWxlcnRlZCl7ZGlzcGxheTpub25lfWNsci1pY29uW2NsYXNzKj1o'@; put 'YXMtYmFkZ2VdIC5jYW4tYmFkZ2UgLmNsci1pLW91dGxpbmUtLWJhZGdlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UgLmNsci1pLW91dGxpbmU6bm90KC5jbHItaS1vdXRsaW5lLS1iYWRnZWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1z'@; put 'b2xpZCAuaGFzLXNvbGlkIC5jbHItaS1zb2xpZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUsY2xyLWljb24uaXMtc29saWQgLmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZS0tYmFkZ2Vke2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1z'@; put 'b2xpZCAuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYWxlcnRlZDpub3QoLmNsci1pLXNvbGlkKSxjbHItaWNvbi5pcy1zb2xpZCAuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYmFkZ2VkOm5vdCguY2xyLWktc29saWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFz'@; put 'LWJhZGdlXSAuY2FuLWJhZGdlLmhhcy1zb2xpZCAuY2xyLWktc29saWQtLWJhZGdlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLGNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMt'@; put 'YmFkZ2VdIC5jYW4tYmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLS1iYWRnZWQsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZS5oYXMtc29saWQgLmNsci1pLXNvbGlkOm5vdCguY2xyLWktc29saWQtLWJhZGdlZCl7ZGlzcGxheTpub25lfWNsci1p'@; put 'Y29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYWxlcnRlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLGNsci1p'@; put 'Y29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLS1hbGVydGVkLGNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1zb2xpZDpub3QoLmNsci1pLXNvbGlkLS1h'@; put 'bGVydGVkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaGFzLWJhZGdlLS1zdWNjZXNzIC5jbHItaS1iYWRnZXtmaWxsOiMyZTg1MDB9Y2xyLWljb24uaGFzLWJhZGdlLS1zdWNjZXNzIC5jbHItaS1iYWRnZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMyZTg1MDB9Y2xyLWljb24u'@; put 'aGFzLWJhZGdlLS1lcnJvciAuY2xyLWktYmFkZ2V7ZmlsbDojZTAyMjAwfWNsci1pY29uLmhhcy1iYWRnZS0tZXJyb3IgLmNsci1pLWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2UwMjIwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLWluZm8gLmNsci1pLWJhZGdle2ZpbGw6'@; put 'IzAwNzdiOH1jbHItaWNvbi5oYXMtYmFkZ2UtLWluZm8gLmNsci1pLWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzAwNzdiOH1jbHItaWNvbi5oYXMtYWxlcnQgLmNsci1pLWFsZXJ0e2ZpbGw6I2MyN2IwMH1jbHItaWNvbi5oYXMtYWxlcnQgLmNsci1pLWFsZXJ0IC50'@; put 'cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2MyN2IwMH1jbHItaWNvbiAuaXMtb2ZmLXNjcmVlbntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0'@; put 'b3A6LTFweCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLTFweCFpbXBvcnRhbnR9OndoZXJlKDpyb290LDpob3N0KXstLWNkcy1nbG9iYWwtYmFzZToyMDstLWNkcy1nbG9iYWwtc2NhbGUtc3BhY2U6MTstLWNkcy1n'@; put 'bG9iYWwtc2NhbGUtbGF5b3V0LXNwYWNlOjE7LS1jZHMtZ2xvYmFsLXNjYWxlLXR5cG9ncmFwaHk6MTstLWNkcy1nbG9iYWwtbGF5b3V0LWdyaWQtY29sczoxMjstLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLXhzOjU3NnB4Oy0tY2RzLWdsb2JhbC1sYXlvdXQtd2lkdGgtc206NzY4cHg7LS1j'@; put 'ZHMtZ2xvYmFsLWxheW91dC13aWR0aC1tZDo5OTJweDstLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLWxnOjEyMDBweDstLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLXhsOjE0NDBweDstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4eHM6Y2FsYygyICogdmFyKC0tY2RzLWludGVybmFsLXNj'@; put 'YWxlLTEpKTstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4czpjYWxjKDQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHM6Y2FsYyg4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtbGF5b3V0LXNw'@; put 'YWNlLXNtOmNhbGMoMTIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbWQ6Y2FsYygxNiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0xKSk7LS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1sZzpjYWxjKDI0ICogdmFyKC0tY2RzLWlu'@; put 'dGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhsOmNhbGMoMzIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHhsOmNhbGMoNDggKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2Jh'@; put 'bC1sYXlvdXQtc3BhY2UteHh4bDpjYWxjKDY0ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtc3BhY2UtMDpjYWxjKDAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS0xOmNhbGMoMSAqIHZhcigtLWNkcy1pbnRlcm5h'@; put 'bC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTI6Y2FsYygyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtMzpjYWxjKDQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS00OmNhbGMoNiAqIHZhcigt'@; put 'LWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTU6Y2FsYyg4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtNjpjYWxjKDEyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtNzpj'@; put 'YWxjKDE2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtODpjYWxjKDE4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtOTpjYWxjKDI0ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1n'@; put 'bG9iYWwtc3BhY2UtMTA6Y2FsYygzMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTExOmNhbGMoMzYgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS0xMjpjYWxjKDQ4ICogdmFyKC0tY2RzLWludGVybmFs'@; put 'LXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtMTM6Y2FsYyg2NCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTE0OmNhbGMoNzIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS0xNTpjYWxjKDk2ICog'@; put 'dmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtY29sb3ItYmxhY2s6aHNsKDAsIDAlLCAwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlOmhzbCgwLCAwJSwgMTAwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwOmhzbCg5MywgODAlLCA5NCUpOy0tY2RzLWds'@; put 'b2JhbC1jb2xvci1ncmVlbi0xMDA6aHNsKDkzLCA4MCUsIDgzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTIwMDpoc2woOTMsIDgwJSwgNzAlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMzAwOmhzbCg5MywgODAlLCA1NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDA6aHNs'@; put 'KDkzLCA4MCUsIDQ4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwMDpoc2woOTMsIDgwJSwgNDQlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwOmhzbCg5MywgODAlLCAzNyUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDA6aHNsKDkzLCA4MCUsIDI4JSk7LS1jZHMtZ2xv'@; put 'YmFsLWNvbG9yLWdyZWVuLTgwMDpoc2woOTMsIDgwJSwgMjMlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tOTAwOmhzbCg5MywgODAlLCAxNyUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0xMDAwOmhzbCg5MywgODAlLCAxMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTI1OmhzbCgx'@; put 'OTgsIDEwMCUsIDk2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTA6aHNsKDE5OCwgMTAwJSwgOTUlKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03NTpoc2woMTk4LCAxMDAlLCA5NCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMDpoc2woMTk4LCAxMDAlLCA4NyUpOy0tY2RzLWds'@; put 'b2JhbC1jb2xvci1ibHVlLTIwMDpoc2woMTk4LCAxMDAlLCA3OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTMwMDpoc2woMTk4LCAxMDAlLCA3MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMDpoc2woMTk4LCAxMDAlLCA1OSUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwMDpo'@; put 'c2woMTk4LCAxMDAlLCA0OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTYwMDpoc2woMTk4LCAxMDAlLCA0MyUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMDpoc2woMTk4LCAxMDAlLCAzNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMDpoc2woMTk4LCAxMDAlLCAyNyUpOy0t'@; put 'Y2RzLWdsb2JhbC1jb2xvci1ibHVlLTkwMDpoc2woMTk4LCAxMDAlLCAyMSUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMDA6aHNsKDE5OCwgMTAwJSwgMTUlKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTUwOmhzbCgyODIsIDEwMCUsIDk3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZp'@; put 'b2xldC0xMDA6aHNsKDI4MiwgODAlLCA5MSUpOy0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMjAwOmhzbCgyODIsIDczJSwgODMlKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTMwMDpoc2woMjgyLCA2NiUsIDc0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC00MDA6aHNsKDI4Miwg'@; put 'NjAlLCA2NSUpOy0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNTAwOmhzbCgyODIsIDYwJSwgNTclKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMDpoc2woMjgyLCA2MCUsIDQ5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC03MDA6aHNsKDI4MywgODAlLCAzNiUpOy0tY2RzLWds'@; put 'b2JhbC1jb2xvci12aW9sZXQtODAwOmhzbCgyODIsIDEwMCUsIDI2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC05MDA6aHNsKDI4MiwgMTAwJSwgMTklKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTEwMDA6aHNsKDI4MiwgMTAwJSwgMTQlKTstLWNkcy1nbG9iYWwtY29sb3ItcmVk'@; put 'LTUwOmhzbCg5LCAxMDAlLCA5NyUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwOmhzbCg5LCAxMDAlLCA5NCUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMjAwOmhzbCg5LCAxMDAlLCA4OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMzAwOmhzbCg5LCAxMDAlLCA3OSUpOy0tY2RzLWds'@; put 'b2JhbC1jb2xvci1yZWQtNDAwOmhzbCg5LCAxMDAlLCA3MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTAwOmhzbCg5LCAxMDAlLCA2NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNjAwOmhzbCg5LCAxMDAlLCA1OSUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwOmhzbCg5LCAxMDAl'@; put 'LCA0NCUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwOmhzbCg5LCAxMDAlLCAzOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtOTAwOmhzbCg5LCAxMDAlLCAyOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwMDpoc2woOSwgMTAwJSwgMjIlKTstLWNkcy1nbG9iYWwtY29sb3Itb2No'@; put 'cmUtNTA6aHNsKDQxLCAxMDAlLCA5NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0xMDA6aHNsKDQxLCAxMDAlLCA5MiUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0yMDA6aHNsKDQxLCAxMDAlLCA4NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0zMDA6aHNsKDQxLCAxMDAlLCA3'@; put 'OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS00MDA6aHNsKDQxLCAxMDAlLCA3MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS01MDA6aHNsKDQwLCAxMDAlLCA1OSUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS02MDA6aHNsKDM5LCAxMDAlLCA1MCUpOy0tY2RzLWdsb2JhbC1jb2xv'@; put 'ci1vY2hyZS03MDA6aHNsKDM4LCAxMDAlLCA0MiUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS04MDA6aHNsKDM3LCAxMDAlLCAzMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS05MDA6aHNsKDM2LCAxMDAlLCAyNyUpOy0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0xMDAwOmhzbCgzNSwg'@; put 'MTAwJSwgMTklKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNTA6aHNsKDIzOCwgMTAwJSwgOTYlKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItMTAwOmhzbCgyMzgsIDU4JSwgODglKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItMjAwOmhzbCgyMzgsIDUzJSwgNzklKTst'@; put 'LWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItMzAwOmhzbCgyMzgsIDUyJSwgNzAlKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNDAwOmhzbCgyMzgsIDU4JSwgNjQlKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNTAwOmhzbCgyMzgsIDU5JSwgNTglKTstLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItbGF2ZW5kZXItNjAwOmhzbCgyMzgsIDYwJSwgNTIlKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNzAwOmhzbCgyMzgsIDY5JSwgNDUlKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItODAwOmhzbCgyMzgsIDEwMCUsIDMyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVu'@; put 'ZGVyLTkwMDpoc2woMjM4LCAxMDAlLCAyMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci0xMDAwOmhzbCgyMzgsIDEwMCUsIDE0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTUwOmhzbCgyMTEsIDEwMCUsIDk1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTEwMDpoc2woMjEx'@; put 'LCAxMDAlLCA4OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1henVyZS0yMDA6aHNsKDIxMSwgMTAwJSwgODElKTstLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMzAwOmhzbCgyMTEsIDEwMCUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTQwMDpoc2woMjExLCAxMDAlLCA2MiUpOy0tY2Rz'@; put 'LWdsb2JhbC1jb2xvci1henVyZS01MDA6aHNsKDIxMSwgMTAwJSwgNTQlKTstLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtNjAwOmhzbCgyMTEsIDEwMCUsIDQ2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTcwMDpoc2woMjExLCAxMDAlLCAzNyUpOy0tY2RzLWdsb2JhbC1jb2xvci1henVy'@; put 'ZS04MDA6aHNsKDIxMSwgMTAwJSwgMjYlKTstLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtOTAwOmhzbCgyMTEsIDEwMCUsIDE4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTEwMDA6aHNsKDIxMSwgMTAwJSwgMTQlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MDpoc2woMTg0LCAxMDAl'@; put 'LCA5NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMDpoc2woMTg0LCAxMDAlLCA4NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTIwMDpoc2woMTg0LCAxMDAlLCA3NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTMwMDpoc2woMTg0LCAxMDAlLCA2MiUpOy0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1hcXVhLTQwMDpoc2woMTg0LCAxMDAlLCA0OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTUwMDpoc2woMTg0LCAxMDAlLCA0MyUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTYwMDpoc2woMTg0LCAxMDAlLCAzNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTcwMDpoc2woMTg0'@; put 'LCAxMDAlLCAyNSUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTgwMDpoc2woMTg0LCAxMDAlLCAxOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTkwMDpoc2woMTg0LCAxMDAlLCAxMyUpOy0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMDA6aHNsKDE4NCwgMTAwJSwgMTAlKTstLWNkcy1n'@; put 'bG9iYWwtY29sb3ItamFkZS01MDpoc2woMTYwLCA4MyUsIDk1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtMTAwOmhzbCgxNjAsIDgyJSwgODglKTstLWNkcy1nbG9iYWwtY29sb3ItamFkZS0yMDA6aHNsKDE2MCwgNzglLCA3OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1qYWRlLTMwMDpoc2wo'@; put 'MTYwLCA2OSUsIDY1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNDAwOmhzbCgxNjAsIDY5JSwgNTMlKTstLWNkcy1nbG9iYWwtY29sb3ItamFkZS01MDA6aHNsKDE2MCwgNjQlLCA0NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1qYWRlLTYwMDpoc2woMTYwLCA2OSUsIDM2JSk7LS1jZHMtZ2xv'@; put 'YmFsLWNvbG9yLWphZGUtNzAwOmhzbCgxNjAsIDY0JSwgMzAlKTstLWNkcy1nbG9iYWwtY29sb3ItamFkZS04MDA6aHNsKDE2MCwgMTAwJSwgMjElKTstLWNkcy1nbG9iYWwtY29sb3ItamFkZS05MDA6aHNsKDE2MCwgNzAlLCAxOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1qYWRlLTEwMDA6aHNs'@; put 'KDE2MCwgNjklLCAxNCUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctNTA6aHNsKDUwLCAxMDAlLCA5NSUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctMTAwOmhzbCg1MCwgMTAwJSwgODQlKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTIwMDpoc2woNTAsIDEwMCUsIDczJSk7LS1j'@; put 'ZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy0zMDA6aHNsKDUwLCAxMDAlLCA1NyUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctNDAwOmhzbCg0NiwgMTAwJSwgNTIlKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTUwMDpoc2woNDQsIDEwMCUsIDQ3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXll'@; put 'bGxvdy02MDA6aHNsKDQyLCAxMDAlLCA0MiUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctNzAwOmhzbCg0MCwgMTAwJSwgMzclKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTgwMDpoc2woNDAsIDEwMCUsIDI2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy05MDA6aHNsKDQwLCAx'@; put 'MDAlLCAxOCUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctMTAwMDpoc2woNDAsIDEwMCUsIDEzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtNTA6aHNsKDY2LCAxMDAlLCA5NCUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTEwMDpoc2woNjYsIDk1JSwgODMlKTstLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItbGltZS0yMDA6aHNsKDY2LCA4NSUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtMzAwOmhzbCg2NiwgODAlLCA1OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTQwMDpoc2woNjYsIDgwJSwgNDglKTstLWNkcy1nbG9iYWwtY29sb3ItbGltZS01MDA6aHNsKDY2LCA5MCUs'@; put 'IDQxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtNjAwOmhzbCg2NiwgOTAlLCAzNiUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTcwMDpoc2woNjYsIDEwMCUsIDI4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtODAwOmhzbCg2NiwgMTAwJSwgMjIlKTstLWNkcy1nbG9iYWwtY29sb3It'@; put 'bGltZS05MDA6aHNsKDY2LCAxMDAlLCAxMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTEwMDA6aHNsKDY2LCAxMDAlLCA3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS01MDpoc2woMjUsIDEwMCUsIDk1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS0xMDA6aHNsKDI1'@; put 'LCAxMDAlLCA4OCUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtMjAwOmhzbCgyNSwgOTQlLCA3OCUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtMzAwOmhzbCgyNSwgMTAwJSwgNzIlKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTQwMDpoc2woMjUsIDEwMCUsIDYy'@; put 'JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS01MDA6aHNsKDI1LCAxMDAlLCA0OCUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtNjAwOmhzbCgyNSwgMTAwJSwgNDElKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTcwMDpoc2woMjUsIDEwMCUsIDM0JSk7LS1jZHMt'@; put 'Z2xvYmFsLWNvbG9yLXRhbmdlcmluZS04MDA6aHNsKDI1LCAxMDAlLCAyNSUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtOTAwOmhzbCgyNSwgMTAwJSwgMTklKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTEwMDA6aHNsKDI1LCAxMDAlLCAxNSUpOy0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1tYWdlbnRhLTUwOmhzbCgzNDUsIDEwMCUsIDk1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtMTAwOmhzbCgzNDUsIDEwMCUsIDg3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtMjAwOmhzbCgzNDUsIDEwMCUsIDc5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEt'@; put 'MzAwOmhzbCgzNDUsIDEwMCUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtNDAwOmhzbCgzNDUsIDEwMCUsIDYxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtNTAwOmhzbCgzNDUsIDgxJSwgNTAlKTstLWNkcy1nbG9iYWwtY29sb3ItbWFnZW50YS02MDA6aHNsKDM0NSwg'@; put 'ODMlLCA0MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTcwMDpoc2woMzQ1LCA5MSUsIDMxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtODAwOmhzbCgzNDUsIDEwMCUsIDI0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtOTAwOmhzbCgzNDUsIDEwMCUsIDE5JSk7LS1j'@; put 'ZHMtZ2xvYmFsLWNvbG9yLW1hZ2VudGEtMTAwMDpoc2woMzQ1LCAxMDAlLCAxNSUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTUwOmhzbCgzMjQsIDEwMCUsIDk3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstMTAwOmhzbCgzMjQsIDk1JSwgOTElKTstLWNkcy1nbG9iYWwtY29sb3ItcGlu'@; put 'ay0yMDA6aHNsKDMyNCwgODQlLCA4MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTMwMDpoc2woMzI0LCA3OCUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstNDAwOmhzbCgzMjQsIDc4JSwgNjIlKTstLWNkcy1nbG9iYWwtY29sb3ItcGluay01MDA6aHNsKDMyNCwgNjQlLCA1MSUp'@; put 'Oy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTYwMDpoc2woMzI0LCA4MCUsIDM5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstNzAwOmhzbCgzMjQsIDEwMCUsIDMwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstODAwOmhzbCgzMjQsIDEwMCUsIDI0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBp'@; put 'bmstOTAwOmhzbCgzMjQsIDEwMCUsIDE4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstMTAwMDpoc2woMzI0LCAxMDAlLCAxNSUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktNTA6aHNsKDI4MiwgMyUsIDk3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS0xMDA6aHNsKDI4'@; put 'MiwgMyUsIDkyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS0yMDA6aHNsKDI4MiwgMyUsIDg0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS0zMDA6aHNsKDI4MiwgMyUsIDc0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS00MDA6aHNsKDI4MiwgMyUsIDYzJSk7'@; put 'LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS01MDA6aHNsKDI4MiwgMyUsIDU0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS02MDA6aHNsKDI4MiwgMyUsIDQzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS03MDA6aHNsKDI4MiwgMyUsIDM1JSk7LS1jZHMtZ2xvYmFs'@; put 'LWNvbG9yLXdhcm0tZ3JheS04MDA6aHNsKDI4MiwgMyUsIDI4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS05MDA6aHNsKDI4MiwgMyUsIDIwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS0xMDAwOmhzbCgyODIsIDMlLCAxNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0'@; put 'ZS01MDpoc2woMjM4LCAyMCUsIDk2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTEwMDpoc2woMjM4LCAyMCUsIDkxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTIwMDpoc2woMjM4LCAyMCUsIDgyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTMwMDpoc2woMjM4LCAyMCUsIDcz'@; put 'JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTQwMDpoc2woMjM4LCAyMCUsIDYzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTUwMDpoc2woMjM4LCAyMyUsIDU2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTYwMDpoc2woMjM4LCAyNCUsIDQ5JSk7LS1jZHMtZ2xvYmFsLWNvbG9y'@; put 'LXNsYXRlLTcwMDpoc2woMjM4LCAyOCUsIDM4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTgwMDpoc2woMjM4LCAyOCUsIDI5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTkwMDpoc2woMjM4LCAyOCUsIDIyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXNsYXRlLTEwMDA6aHNsKDIzOCwg'@; put 'MjglLCAxNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1pY2UtNTA6aHNsKDIxMSwgMTAwJSwgOTclKTstLWNkcy1nbG9iYWwtY29sb3ItaWNlLTEwMDpoc2woMjExLCA1OCUsIDkwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS0yMDA6aHNsKDIxMSwgNTMlLCA4MSUpOy0tY2RzLWdsb2JhbC1jb2xv'@; put 'ci1pY2UtMzAwOmhzbCgyMTEsIDQ5JSwgNzAlKTstLWNkcy1nbG9iYWwtY29sb3ItaWNlLTQwMDpoc2woMjExLCA0NyUsIDYyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS01MDA6aHNsKDIxMSwgNDclLCA1MyUpOy0tY2RzLWdsb2JhbC1jb2xvci1pY2UtNjAwOmhzbCgyMTEsIDU2JSwgNDQl'@; put 'KTstLWNkcy1nbG9iYWwtY29sb3ItaWNlLTcwMDpoc2woMjExLCA2OSUsIDM0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS04MDA6aHNsKDIxMSwgNjklLCAyNyUpOy0tY2RzLWdsb2JhbC1jb2xvci1pY2UtOTAwOmhzbCgyMTEsIDEwMCUsIDIwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS0x'@; put 'MDAwOmhzbCgyMTEsIDEwMCUsIDE0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS01MDpoc2woMjExLCAyMCUsIDk2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS0xMDA6aHNsKDIxMSwgMjAlLCA5MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktMjAwOmhzbCgy'@; put 'MTEsIDIwJSwgODElKTstLWNkcy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTMwMDpoc2woMjExLCAyMCUsIDcyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS00MDA6aHNsKDIxMSwgMjAlLCA2MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktNTAwOmhzbCgyMTEsIDIwJSwg'@; put 'NTMlKTstLWNkcy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTYwMDpoc2woMjExLCAyMCUsIDQ0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS03MDA6aHNsKDIxMSwgMjMlLCAzNiUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktODAwOmhzbCgyMTEsIDMwJSwgMjglKTstLWNk'@; put 'cy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTkwMDpoc2woMjExLCA0MCUsIDIyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS0xMDAwOmhzbCgyMTEsIDYzJSwgMTQlKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTUwOmhzbCg0MSwgMjMlLCA5NiUpOy0tY2RzLWdsb2JhbC1jb2xvci10'@; put 'YW4tMTAwOmhzbCg0MSwgMjIlLCA5MSUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tMjAwOmhzbCg0MSwgMjclLCA4MiUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tMzAwOmhzbCg0MSwgMjMlLCA2OCUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tNDAwOmhzbCg0MSwgMjMlLCA1OCUpOy0tY2Rz'@; put 'LWdsb2JhbC1jb2xvci10YW4tNTAwOmhzbCg0MSwgMjAlLCA0NyUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tNjAwOmhzbCg0MSwgMjAlLCA0MCUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tNzAwOmhzbCg0MSwgMjAlLCAzMiUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tODAwOmhzbCg0MSwg'@; put 'MjMlLCAyNiUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tOTAwOmhzbCg0MSwgMjMlLCAyMSUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW4tMTAwMDpoc2woNDEsIDIyJSwgMTYlKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTI1OmhzbCgxOTgsIDMzJSwgOTklKTstLWNkcy1nbG9i'@; put 'YWwtY29sb3ItY29uc3RydWN0aW9uLTUwOmhzbCgxOTgsIDM2JSwgOTYlKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDpoc2woMTk4LCAyMCUsIDkxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDA6aHNsKDE5OCwgMTQlLCA4MiUpOy0tY2RzLWdsb2Jh'@; put 'bC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwOmhzbCgxOTgsIDEwJSwgNzElKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTQwMDpoc2woMTk4LCA5JSwgNTYlKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwMDpoc2woMTk4LCAxMCUsIDQ2JSk7LS1jZHMtZ2xvYmFs'@; put 'LWNvbG9yLWNvbnN0cnVjdGlvbi02MDA6aHNsKDE5OCwgMTQlLCAzNiUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwOmhzbCgxOTgsIDE5JSwgMjglKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMDpoc2woMTk4LCAyMyUsIDIzJSk7LS1jZHMtZ2xvYmFs'@; put 'LWNvbG9yLWNvbnN0cnVjdGlvbi05MDA6aHNsKDE5OCwgMjglLCAxOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMDpoc2woMTk4LCAzMCUsIDE1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMTAwOmhzbCgyMDAsIDMxJSwgMTMlKTstLWNkcy1nbG9i'@; put 'YWwtY29sb3ItZ3JheS0wOmhzbCgwLCAwJSwgMTAwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktNTA6aHNsKDAsIDAlLCA5OCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTEwMDpoc2woMCwgMCUsIDk1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktMjAwOmhzbCgwLCAwJSwgOTElKTst'@; put 'LWNkcy1nbG9iYWwtY29sb3ItZ3JheS0zMDA6aHNsKDAsIDAlLCA4NyUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTQwMDpoc2woMCwgMCUsIDgwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktNTAwOmhzbCgwLCAwJSwgNzAlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JheS02MDA6aHNsKDAs'@; put 'IDAlLCA1NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTcwMDpoc2woMCwgMCUsIDQwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktODAwOmhzbCgwLCAwJSwgMjclKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JheS05MDA6aHNsKDAsIDAlLCAyMCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5'@; put 'LTEwMDA6aHNsKDAsIDAlLCAwJSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2Rz'@; put 'LWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi05MDApOy0tY2RzLWdsb2JhbC10eXBvZ3Jh'@; put 'cGh5LWNvbG9yLTQ1MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFjayk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtbGlnaHQ6MzAw'@; put 'Oy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXI6NDAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bTo1MDA7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQ6NjAwOy0tY2RzLWdsb2JhbC10eXBvZ3Jh'@; put 'cGh5LWZvbnQtd2VpZ2h0LWJvbGQ6NjAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDo2MDA7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTA6Y2FsYygxMCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5'@; put 'cG9ncmFwaHktZm9udC1zaXplLTE6Y2FsYygxMSAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTI6Y2FsYygxMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1z'@; put 'aXplLTM6Y2FsYygxMyAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTQ6Y2FsYygxNCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTU6Y2FsYygxNiAq'@; put 'IHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTY6Y2FsYygyMCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTc6Y2FsYygyNCAqIHZhcigtLWNkcy1pbnRl'@; put 'cm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTg6Y2FsYygzMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTk6Y2FsYyg0MCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7'@; put 'LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1mYW1pbHk6IkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWY7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGVyLWZvbnQtZmFtaWx5OiJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmOy0t'@; put 'Y2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1vbm9zcGFjZS1mb250LWZhbWlseTp1aS1tb25vc3BhY2UsIENvbnNvbGFzLCBNZW5sbywgTW9uYWNvLCBtb25vc3BhY2U7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQ6LjE0NzVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1h'@; put 'c2NlbmRlci1oZWlnaHQ6LjE3MDNlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodDouNTE3ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9y'@; put 'LWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkOnZhcigtLWNk'@; put 'cy1nbG9iYWwtY29sb3ItdmlvbGV0LTcwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTEwMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstb24tY29sb3JiZzp2YXIoLS1jZHMtZ2xv'@; put 'YmFsLWNvbG9yLWJsYWNrKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZTpjYWxjKDE0ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0OjEuNDI4NTcxNGVtOy0tY2RzLWdsb2JhbC10eXBv'@; put 'Z3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmc6LS4wMDcxNDI4NmVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQ6NDAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC1zaXplOmNhbGMoNDAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykp'@; put 'Oy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQ6MS4xZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1nbG9i'@; put 'YWwtdHlwb2dyYXBoeS1oZWFkaW5nLWZvbnQtc2l6ZTpjYWxjKDMyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxpbmUtaGVpZ2h0OjEuMTI1ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXR0ZXItc3Bh'@; put 'Y2luZzotLjAxMjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkbGluZS1mb250LXNpemU6Y2FsYygzMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFw'@; put 'aHktaGVhZGxpbmUtbGluZS1oZWlnaHQ6MS4xMjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkbGluZS1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkbGluZS1mb250LXdlaWdodDo1MDA7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0'@; put 'bGUtZm9udC1zaXplOmNhbGMoMjQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxpbmUtaGVpZ2h0OjEuMzMzMzMzZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGV0dGVyLXNwYWNpbmc6LS4wMDgzMzMzM2VtOy0t'@; put 'Y2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZTpjYWxjKDIwICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVp'@; put 'Z2h0OjEuMmVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmc6LS4wMWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplOmNhbGMoMTYg'@; put 'KiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQ6MS41ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBo'@; put 'eS1zdWJzZWN0aW9uLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtc2l6ZTpjYWxjKDE2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0OjEuNWVtOy0tY2Rz'@; put 'LWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGV0dGVyLXNwYWNpbmc6LS4wMTI1ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1mb250LXdlaWdodDpjYWxjKDQwMCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNl'@; put 'Y29uZGFyeS1mb250LXNpemU6Y2FsYygxMyAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0OjEuMjMwNzdlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmc6LS4w'@; put 'MDc2OTJlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQ6NDAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplOmNhbGMoMTEgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNh'@; put 'cHRpb24tbGluZS1oZWlnaHQ6MS40NTQ1NDVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nOi4wMTgxODJlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0OjQwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zbWFsbGNh'@; put 'cHRpb24tZm9udC1zaXplOmNhbGMoMTAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1saW5lLWhlaWdodDoxLjJlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGV0dGVyLXNwYWNpbmc6LjA1'@; put 'ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1pbmZvLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1Y2Nlc3MtaG92ZXI6dmFy'@; put 'KC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXdhcm5pbmctaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS05MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJl'@; put 'ZC04MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW5ldXRyYWwtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNhYmxlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2Rz'@; put 'LWdsb2JhbC10eXBvZ3JhcGh5LWRpc2FibGVkLWJ1dHRvbjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24taW5zdGFudDowczstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXF1aWNrZXN0Oi4xczst'@; put 'LWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXF1aWNrZXI6LjE1czstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXF1aWNrOi4yczstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXNlY29uZGFyeTouM3M7LS1jZHMtZ2xvYmFsLWFuaW1hdGlvbi1kdXJhdGlvbi1w'@; put 'cmltYXJ5Oi40czstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXNsb3c6LjVzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24tc2xvd2VyOi43czstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXNsb3dlc3Q6LjhzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZWFz'@; put 'aW5nLXByaW1hcnk6Y3ViaWMtYmV6aWVyKDAsLjk5LDAsLjk5KTstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWVhc2luZy1zZWNvbmRhcnk6Y3ViaWMtYmV6aWVyKDAsIDEuNSwgLjUsIDEpOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZWFzaW5nLWxvb3A6Y3ViaWMtYmV6aWVyKC4xNywgLjQsIC44'@; put 'LCAuNzkpOy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMDpjYWxjKDQgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0yMDA6Y2FsYygxMiAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkp'@; put 'Oy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTMwMDo1MCU7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDA6Y2FsYygxICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0yMDA6Y2FsYygyICog'@; put 'KDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0zMDA6Y2FsYygzICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC00MDA6Y2FsYyg0ICogKDFyZW0gLyB2'@; put 'YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3ItdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVj'@; put 'dGlvbi0xMDApOy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3Itc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTEwMDowIGNhbGMoKDEgLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkgKiAxcmVt'@; put 'KSBjYWxjKCgzIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpICogMXJlbSkgMCBoc2xhKDE5OCwgMzAlLCAxNSUsIC41KTstLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTIwMDowIGNhbGMoKDEgLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkgKiAxcmVtKSBjYWxjKCgzIC8gdmFy'@; put 'KC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpICogMXJlbSkgMCBoc2xhKDE5OCwgMzAlLCAxNSUsIC4zKTstLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTMwMDowIGNhbGMoKDEgLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkgKiAxcmVtKSBjYWxjKCgzIC8gdmFyKC0tY2RzLWdsb2JhbC1i'@; put 'YXNlLCAyMCkpICogMXJlbSkgMCBoc2xhKDE5OCwgMzAlLCAxNSUsIC4yKTstLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wOmhzbGEoMCwgMCUsIDAlLCAwKTstLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0xMDA6aHNsYSgwLCAwJSwgMCUsIC4yKTstLWNkcy1hbGlhcy1vYmplY3Qtb3Bh'@; put 'Y2l0eS0yMDA6aHNsYSgwLCAwJSwgMCUsIC40KTstLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0zMDA6aHNsYSgwLCAwJSwgMCUsIC42KTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZTpIaWdobGlnaHQgc29saWQgMnB4Oy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFj'@; put 'dGlvbi1vdXRsaW5lLXdlYmtpdDo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0OjFweDstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tdG91Y2gtdGFyZ2V0OmNhbGMoMzYgKiAoMXJlbSAv'@; put 'IHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQ6dmFyKC0tY2RzLWds'@; put 'b2JhbC1jb2xvci13aGl0ZSk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZTp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03NSk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQt'@; put 'aG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3Qt'@; put 'aW50ZXJhY3Rpb24tYmFja2dyb3VuZC1kaXNhYmxlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1oaWdobGlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktNTApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1j'@; put 'ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03NSk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13'@; put 'aGl0ZSk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtc2VsZWN0ZWQtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zaGFkZS1zZWxlY3Rl'@; put 'ZC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3It'@; put 'aG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24t'@; put 'Y29sb3Itc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50'@; put 'ZXJhY3Rpb24taW5mby1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1h'@; put 'Y3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTkwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTkwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tc2Vjb25kYXJ5LWhv'@; put 'dmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3MtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLWNsaWNrOnZhcigt'@; put 'LWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLXNlY29uZGFyeS1ob3Zlcjp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXdhcm5pbmctY2xpY2s6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1jb2xvci1ncmVlbi05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTkwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXdhcm5pbmctc2Vjb25kYXJ5LWhvdmVyOnZhcigt'@; put 'LWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1kYW5nZXItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItcmVkLTkwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWRhbmdlci1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNv'@; put 'bG9yLXJlZC01MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y'@; put 'LWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1uZXV0cmFsLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1uZXV0cmFsLXNlY29uZGFyeS1ob3Zlcjp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWludmVyc2UtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW52ZXJzZS1jbGlj'@; put 'azp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbnZlcnNlLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1hcHAtYmFja2dyb3VuZDp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yNSk7LS1jZHMtYWxpYXMtb2JqZWN0LW92ZXJsYXktYmFja2dyb3VuZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKTstLWNkcy1hbGlhcy1vYmplY3Qtb3ZlcmxheS1iYWNrZHJvcC1iYWNrZ3JvdW5kOmhzbGEoMCwgMCUs'@; put 'IDAlLCAuNik7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTst'@; put 'LWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtZGFyazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS01'@; put 'MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2U6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtaW52ZXJzZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29s'@; put 'b3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2Utc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tkcm9wLWJhY2tncm91bmQ6'@; put 'aHNsYSgwLCAwJSwgMTAwJSwgLjYpOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWluZm86dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1j'@; put 'ZHMtYWxpYXMtc3RhdHVzLWluZm8tdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItZ3JlZW4tNzAwKTstLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcy10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tODAwKTstLWNkcy1hbGlhcy1zdGF0'@; put 'dXMtd2FybmluZzp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTUwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTEwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xv'@; put 'ci1vY2hyZS02MDApOy0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcms6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXRp'@; put 'bnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXItc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLWRhcms6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtOTAwKTstLWNk'@; put 'cy1hbGlhcy1zdGF0dXMtbmV1dHJhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXNo'@; put 'YWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNDAwKTstLWNkcy1hbGlhcy1zdGF0dXMtYWx0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTcwMCk7LS1jZHMtYWxp'@; put 'YXMtc3RhdHVzLWFsdC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWFsdC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC05MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y'@; put 'LWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy11dGlsaXR5LWdyYXktc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNk'@; put 'cy1hbGlhcy11dGlsaXR5LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ibHVlLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwKTstLWNkcy1hbGlhcy11dGlsaXR5LWJsdWUtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1ibHVlLTgwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1saWdodC1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0zMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktbGlnaHQtYmx1ZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MCk7LS1jZHMtYWxpYXMtdXRpbGl0'@; put 'eS1saWdodC1ibHVlLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZGFyay1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtODAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWRhcmstYmx1ZS10aW50OnZhcigtLWNkcy1nbG9i'@; put 'YWwtY29sb3ItYXp1cmUtNTApOy0tY2RzLWFsaWFzLXV0aWxpdHktZGFyay1ibHVlLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdXRp'@; put 'bGl0eS1ncmVlbi10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JlZW4tc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93OnZhcigtLWNkcy1nbG9iYWwtY29sb3It'@; put 'b2NocmUtNTAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXllbGxvdy10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMTAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXllbGxvdy1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTcwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1y'@; put 'ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXJlZC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwKTstLWNkcy1hbGlhcy11dGlsaXR5LXJlZC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC04MDApOy0tY2RzLWFs'@; put 'aWFzLXV0aWxpdHktdGFuZ2VyaW5lOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTQwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmUtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS01MCk7LS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmUtc2hh'@; put 'ZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtNjAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXZpb2xldDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC02MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdmlvbGV0LXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQt'@; put 'NTApOy0tY2RzLWFsaWFzLXV0aWxpdHktdmlvbGV0LXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTgwMCk7LS1jZHMtYWxpYXMtdml6LWJvcmRlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMTAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTEtYmx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTcwMCk7LS1jZHMtYWxp'@; put 'YXMtdml6LWdlbmVyYWwtMi12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0zOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS04MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTMtYXF1YTp2YXIoLS1jZHMtZ2xvYmFs'@; put 'LWNvbG9yLWFxdWEtODAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC00OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNDAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC00LWxpbWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTcwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVy'@; put 'YWwtNTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstNTAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC01LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtNzAwKTstLWNk'@; put 'cy1hbGlhcy12aXotZ2VuZXJhbC02LWFxdWE6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTc6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci03MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTctdmlvbGV0OnZhcigtLWNk'@; put 'cy1nbG9iYWwtY29sb3ItdmlvbGV0LTgwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtODp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC04LWxpbWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTkwMCk7LS1jZHMtYWxpYXMtdml6'@; put 'LWdlbmVyYWwtOTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtODAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC05LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQt'@; put 'NjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMC1saW1lOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGltZS0xMDAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMS1hcXVhOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS02MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTEyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtODAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMi12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMTAwMCk7LS1j'@; put 'ZHMtYWxpYXMtdml6LWdlbmVyYWwtMTM6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNDAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMy12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNDp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTQtYmx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMTAwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTcwMCk7LS1jZHMtYWxpYXMtdml6'@; put 'LWdlbmVyYWwtMTUtYXF1YTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTYwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTYtbGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y'@; put 'LWxpbWUtODAwKTstLWNkcy1hbGlhcy12aXotc2V2ZXJpdHktbmV1dHJhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1zdWNjZXNzOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwKTstLWNkcy1hbGlhcy12'@; put 'aXotc2V2ZXJpdHktd2FybmluZzp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy03MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS13YXJuaW5nLWxpZ2h0OnZhcigtLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTQwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LWltbWVkaWF0ZTp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS00MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1jcml0aWNhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1mcmVlLXNwYWNlLWZpbGw6dmFyKC0tY2RzLWdsb2JhbC1jb2xv'@; put 'ci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy12aXotc2V2ZXJpdHktZnJlZS1zcGFjZS1ib3JkZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1'@; put 'ZS01MCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVl'@; put 'bnRpYWwtYmx1ZS0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTMwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS01MDA6dmFyKC0tY2RzLWds'@; put 'b2JhbC1jb2xvci1ibHVlLTUwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTYwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMt'@; put 'YWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTkwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYmx1ZS0x'@; put 'MDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC0xMDA6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci12aW9sZXQtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0zMDApOy0t'@; put 'Y2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTUwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVl'@; put 'bnRpYWwtdmlvbGV0LTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtODAwOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC0xMDAwOnZhcigtLWNkcy1nbG9iYWwtY29s'@; put 'b3ItdmlvbGV0LTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTEwMCk7LS1jZHMtYWxp'@; put 'YXMtdml6LXNlcXVlbnRpYWwtb2NocmUtMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJl'@; put 'LTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS02MDA6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1vY2hyZS02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtODAwKTstLWNkcy1h'@; put 'bGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1h'@; put 'cXVhLTUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xv'@; put 'ci1hcXVhLTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTMwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTQwMCk7LS1jZHMtYWxpYXMtdml6'@; put 'LXNlcXVlbnRpYWwtYXF1YS01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTUwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTYwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS03MDA6dmFyKC0t'@; put 'Y2RzLWdsb2JhbC1jb2xvci1hcXVhLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTkwMCk7'@; put 'LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtYXF1YS0xMDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi01MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlh'@; put 'bC1ncmVlbi0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0xMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tMzAwOnZhcigtLWNkcy1n'@; put 'bG9iYWwtY29sb3ItZ3JlZW4tMzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwMCk7'@; put 'LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50'@; put 'aWFsLWdyZWVuLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tOTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi0xMDAwOnZhcigtLWNk'@; put 'cy1nbG9iYWwtY29sb3ItZ3JlZW4tMTAwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTEwMCk7LS1jZHMt'@; put 'YWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNDAwOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNjAwKTst'@; put 'LWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC05'@; put 'MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtOTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC0xMDAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLXYtMjAwOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItdmlvbGV0LTIwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy12aW9sZXQtYXF1YS12LTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0zMDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtdi00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12'@; put 'aW9sZXQtNDAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLXYtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTUwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy12aW9sZXQtYXF1YS12LTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC02'@; put 'MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtdi03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLW5ldXRyYWw6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNTApOy0t'@; put 'Y2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtYS00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTQwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy12aW9sZXQtYXF1YS1hLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNTAwKTstLWNkcy1hbGlhcy12'@; put 'aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLWEtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS02MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtYS03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTcwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2lu'@; put 'Zy12aW9sZXQtYXF1YS1hLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtODAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLWEtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS05MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRl'@; put 'LWItMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0zMDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWItNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWItNTAwOnZhcigtLWNk'@; put 'cy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWItNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWItNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3It'@; put 'Ymx1ZS03MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWItODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLW5ldXRyYWw6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwKTstLWNk'@; put 'cy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtamFkZS1qLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtMzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtamFkZS1qLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNDAwKTstLWNkcy1hbGlhcy12aXotZGl2'@; put 'ZXJnaW5nLWJsdWUtamFkZS1qLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNTAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtamFkZS1qLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtamFk'@; put 'ZS1qLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtamFkZS1qLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtODAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tYi0zMDA6dmFyKC0t'@; put 'Y2RzLWdsb2JhbC1jb2xvci1ibHVlLTMwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdyZWVuLWItNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1iLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNv'@; put 'bG9yLWJsdWUtNTAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tYi02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTYwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdyZWVuLWItNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDAp'@; put 'Oy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1iLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tbmV1dHJhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTApOy0tY2RzLWFsaWFz'@; put 'LXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1nLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTMwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdyZWVuLWctNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNDAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJn'@; put 'aW5nLWJsdWUtZ3JlZW4tZy01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi01MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1nLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTYwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdy'@; put 'ZWVuLWctNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tZy04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctZ3JlZW4teWVsbG93LXJlZC1n'@; put 'LTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTIwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLWctMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQt'@; put 'Zy00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctZ3JlZW4teWVsbG93LXJlZC1nLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVk'@; put 'LWctNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQtZy03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctZ3JlZW4teWVsbG93LXJl'@; put 'ZC1uZXV0cmFsOnZhcigtLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTIwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLXItNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTQwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ct'@; put 'cmVkLXItNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLXItNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTYwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVk'@; put 'LXItNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLXItODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTgwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLXIt'@; put 'OTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTkwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rp'@; put 'b24tNjAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTkwMCk7LS1jZHMtYWxp'@; put 'YXMtdHlwb2dyYXBoeS1jb2xvci00NTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFjayk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1s'@; put 'aWdodDozMDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1yZWd1bGFyOjQwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bTo1MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZDo2MDA7LS1jZHMtYWxpYXMtdHlw'@; put 'b2dyYXBoeS1mb250LXdlaWdodC1ib2xkOjYwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDo2MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtMDpjYWxjKDEwICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LWZvbnQtc2l6ZS0xOmNhbGMoMTEgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTI6Y2FsYygxMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNp'@; put 'emUtMzpjYWxjKDEzICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS00OmNhbGMoMTQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTU6Y2FsYygxNiAqIHZh'@; put 'cigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtNjpjYWxjKDIwICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS03OmNhbGMoMjQgKiB2YXIoLS1jZHMtaW50ZXJuYWwt'@; put 'c2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTg6Y2FsYygzMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtOTpjYWxjKDQwICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1h'@; put 'bGlhcy10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5OiJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGVyLWZvbnQtZmFtaWx5OiJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmOy0tY2RzLWFsaWFz'@; put 'LXR5cG9ncmFwaHktbW9ub3NwYWNlLWZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSwgQ29uc29sYXMsIE1lbmxvLCBNb25hY28sIG1vbm9zcGFjZTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0Oi4xNDc1ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWln'@; put 'aHQ6LjE3MDNlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXgtaGVpZ2h0Oi41MTdlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhvdmVyOnZhcigtLWNk'@; put 'cy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZp'@; put 'b2xldC03MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTEwMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1vbi1jb2xvcmJnOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0t'@; put 'Y2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemU6Y2FsYygxNCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0OjEuNDI4NTcxNGVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3Bh'@; put 'Y2luZzotLjAwNzE0Mjg2ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0OjQwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC1zaXplOmNhbGMoNDAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt'@; put 'ZGlzcGxheS1saW5lLWhlaWdodDoxLjFlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktbGV0dGVyLXNwYWNpbmc6LS4wMTI1ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRpbmctZm9udC1z'@; put 'aXplOmNhbGMoMzIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGluZy1saW5lLWhlaWdodDoxLjEyNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGluZy1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNkcy1hbGlhcy10eXBv'@; put 'Z3JhcGh5LWhlYWRpbmctZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGxpbmUtZm9udC1zaXplOmNhbGMoMzIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGxpbmUtbGluZS1oZWlnaHQ6MS4xMjVlbTst'@; put 'LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRsaW5lLWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGxpbmUtZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktdGl0bGUtZm9udC1zaXplOmNhbGMoMjQgKiB2YXIoLS1jZHMtaW50'@; put 'ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQ6MS4zMzMzMzNlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWxldHRlci1zcGFjaW5nOi0uMDA4MzMzMzNlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtd2VpZ2h0'@; put 'OjUwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplOmNhbGMoMjAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodDoxLjJlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24t'@; put 'bGV0dGVyLXNwYWNpbmc6LS4wMWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodDo1MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZTpjYWxjKDE2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQ6MS41ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodDo1MDA7LS1jZHMtYWxpYXMtdHlwb2dy'@; put 'YXBoeS1tZXNzYWdlLWZvbnQtc2l6ZTpjYWxjKDE2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQ6MS41ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tZXNzYWdlLWxldHRlci1zcGFjaW5nOi0uMDEyNWVt'@; put 'Oy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbWVzc2FnZS1mb250LXdlaWdodDpjYWxjKDQwMCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZTpjYWxjKDEzICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxl'@; put 'LTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodDoxLjIzMDc3ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmc6LS4wMDc2OTJlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodDo0'@; put 'MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZTpjYWxjKDExICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1oZWlnaHQ6MS40NTQ1NDVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRp'@; put 'b24tbGV0dGVyLXNwYWNpbmc6LjAxODE4MmVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodDo0MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tZm9udC1zaXplOmNhbGMoMTAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2Rz'@; put 'LWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0OjEuMmVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxldHRlci1zcGFjaW5nOi4wNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1h'@; put 'bGlhcy10eXBvZ3JhcGh5LWluZm8taG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWNjZXNzLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tODAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXdhcm5pbmctaG92'@; put 'ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS05MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGFuZ2VyLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTgwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1uZXV0cmFsLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3It'@; put 'Y29uc3RydWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9u'@; put 'LTUwMCk7LS1jZHMtaW50ZXJuYWwtc2NhbGUtMTpjYWxjKCgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkgKiB2YXIoLS1jZHMtZ2xvYmFsLXNjYWxlLWxheW91dC1zcGFjZSkpOy0tY2RzLWludGVybmFsLXNjYWxlLTI6Y2FsYygoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkp'@; put 'ICogdmFyKC0tY2RzLWdsb2JhbC1zY2FsZS1zcGFjZSkpOy0tY2RzLWludGVybmFsLXNjYWxlLTM6Y2FsYygoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpICogdmFyKC0tY2RzLWdsb2JhbC1zY2FsZS10eXBvZ3JhcGh5KSl9aHRtbHtmb250LXNpemU6Y2FsYygodmFyKC0tY2RzLWds'@; put 'b2JhbC1iYXNlKS8xNikqMTAwJSk7Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudH0qLDphZnRlciw6YmVmb3Jle2JveC1zaXppbmc6aW5oZXJpdCFpbXBvcnRhbnR9W2Nkcy1iYXNlLWZvbnQ9IjE2Il17LS1jZHMtZ2xvYmFsLWJhc2U6MTZ9W2Nkcy10aGVtZV17YmFja2dyb3VuZDp2'@; put 'YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWFwcC1iYWNrZ3JvdW5kKTtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNTAwKX1bY2RzLWNvbnRyb2xdIDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3It'@; put 'MjAwKX1bY2RzLWNvbnRyb2xdIDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItMjAwKX1bY2RzLWNvbnRyb2xdW19kaXNhYmxlZF17LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItMjAwOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMt'@; put 'ZGlzYWJsZWQpfWh0bWxbY2RzLWZvY3VzLXRyYXBde292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7d2lkdGg6MTAwdnc7aGVpZ2h0OjEwMHZofVtjZHMtdGV4dF17Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5KTttYXJnaW4tdG9wOjA7bWFyZ2lu'@; put 'LWJvdHRvbTowfVtjZHMtdGV4dF1bY2RzLWxheW91dH49Z3JpZF06YWZ0ZXIsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ncmlkXTpiZWZvcmUsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXTphZnRlcixbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdOmJlZm9yZSxb'@; put 'Y2RzLXRleHRdW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXTphZnRlcixbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXTpiZWZvcmV7ZGlzcGxheTpub25lfVtjZHMtdGV4dCo9ZGlzcGxheV0sW2Nkcy10ZXh0Kj1oZWFkaW5nXSxbY2RzLXRleHQqPWhlYWRsaW5lXSxbY2RzLXRleHQqPXNl'@; put 'Y3Rpb25dLFtjZHMtdGV4dCo9c3Vic2VjdGlvbl0sW2Nkcy10ZXh0Kj10aXRsZV17Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRlci1mb250LWZhbWlseSk7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCl9W2Nkcy10ZXh0Kj1i'@; put 'b2R5XSxbY2RzLXRleHQqPWNhcHRpb25dLFtjZHMtdGV4dCo9bWVzc2FnZV0sW2Nkcy10ZXh0Kj1zZWNvbmRhcnldLFtjZHMtdGV4dCo9c21hbGxjYXB0aW9uXXtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNTAwKX1bY2RzLXRleHQqPWlubGluZV17d2lkdGg6YXV0'@; put 'byFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fVtjZHMtdGV4dCo9ZGlzcGxheV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3Bs'@; put 'YXktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1sZXR0ZXItc3BhY2luZyl9W2Nkcy10ZXh0Kj1kaXNwbGF5XTpi'@; put 'ZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVp'@; put 'Z2h0KSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1kaXNwbGF5XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0'@; put 'KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgLSAu'@; put 'MDQ0ZW0pfVtjZHMtdGV4dCo9aGVhZGluZ10sW2Nkcy10ZXh0Kj1oZWFkbGluZV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRpbmctZm9udC13ZWlnaHQp'@; put 'O2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGluZy1sZXR0ZXItc3BhY2luZyl9W2Nkcy10ZXh0Kj1oZWFkaW5nXTpiZWZvcmUsW2Nkcy10ZXh0'@; put 'Kj1oZWFkbGluZV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVh'@; put 'ZGluZy1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aGVhZGluZ106YWZ0ZXIsW2Nkcy10ZXh0Kj1oZWFkbGluZV06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZh'@; put 'cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5'@; put 'LWhlYWRpbmctbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXRpdGxlXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxl'@; put 'LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1sZXR0ZXItc3BhY2luZyl9W2Nkcy10ZXh0Kj10aXRsZV06YmVmb3Jle2Nv'@; put 'bnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQpIC0gMWVt'@; put 'KS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXRpdGxlXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNk'@; put 'cy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRl'@; put 'eHQqPXNlY3Rpb25de2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9n'@; put 'cmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpfVtjZHMtdGV4dCo9c2VjdGlvbl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21h'@; put 'cmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c2VjdGlvbl06'@; put 'YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAt'@; put 'IHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXN1YnNlY3Rpb25de2ZvbnQtc2l6ZTp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdo'@; put 'dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpfVtjZHMtdGV4dCo9c3Vic2VjdGlvbl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygo'@; put 'KHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c3Vic2VjdGlvbl06YWZ0ZXJ7Y29udGVu'@; put 'dDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1n'@; put 'bG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWJvZHlde2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dy'@; put 'YXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWds'@; put 'b2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpfVtjZHMtdGV4dCo9Ym9keV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkg'@; put 'KyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMWVtKX1bY2RzLXRleHQqPWJvZHldOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0g'@; put 'LSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dy'@; put 'YXBoeS1ib2R5LWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9Ym9keVtjZHMtdGV4dCo9Ym9keV06YWZ0ZXIsYm9keVtjZHMtdGV4dCo9Ym9keV06YmVmb3Jle2NvbnRlbnQ6bm9uZX1bY2RzLXRleHQqPW1lc3NhZ2Vde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5'@; put 'cG9ncmFwaHktbWVzc2FnZS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6'@; put 'dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGV0dGVyLXNwYWNpbmcpfVtjZHMtdGV4dCo9bWVzc2FnZV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dy'@; put 'YXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9bWVzc2FnZV06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dp'@; put 'ZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsg'@; put 'Y2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXNlY29uZGFyeV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250'@; put 'LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt'@; put 'c2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKX1bY2RzLXRleHQqPXNlY29uZGFyeV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBj'@; put 'YWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnldOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2Fs'@; put 'YygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9i'@; put 'YWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWNhcHRpb25de2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9i'@; put 'YWwtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tbGV0dGVyLXNwYWNpbmcpfVtj'@; put 'ZHMtdGV4dCo9Y2FwdGlvbl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFw'@; put 'aHktY2FwdGlvbi1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9Y2FwdGlvbl06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dy'@; put 'YXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1oZWlnaHQp'@; put 'IC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXNtYWxsY2FwdGlvbl17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21hbGxjYXB0aW9u'@; put 'LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxldHRlci1zcGFjaW5nKX1bY2RzLXRleHQqPXNt'@; put 'YWxsY2FwdGlvbl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21h'@; put 'bGxjYXB0aW9uLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1zbWFsbGNhcHRpb25dOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5'@; put 'cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGlu'@; put 'ZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHR+PWxpbmtde2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6aW5oZXJpdCFp'@; put 'bXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50fVtjZHMtdGV4dH49bGlua106Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpO291dGxpbmUtb2Zmc2V0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0'@; put 'bGluZS1vZmZzZXQpfVtjZHMtdGV4dH49bGlua106aG92ZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXIpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGljXSksW2Nkcy10ZXh0fj1saW5rXVtj'@; put 'ZHMtdGV4dH49dmlzaXRlZF17Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZCkhaW1wb3J0YW50fVtjZHMtdGV4dH49bGlua106dmlzaXRlZDpub3QoW2Nkcy10ZXh0fj1zdGF0aWNdKTpob3ZlcixbY2RzLXRleHR+PWxpbmtdW2Nkcy10ZXh0fj12'@; put 'aXNpdGVkXTpob3Zlcntjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLWhvdmVyKSFpbXBvcnRhbnR9QG1lZGlhKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXtbY2RzLXRleHQ9bGlua106Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMt'@; put 'YWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtd2Via2l0KX19W2Nkcy10ZXh0fj1jb2RlXXtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7Zm9udC1mYW1pbHk6bW9ub3NwYWNlfVtjZHMtZGl2aWRlcl17ZGlzcGxheTpibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcikgMCAwIDAgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBpbnNldH1bY2RzLXRleHR+PWV4dHJhYm9s'@; put 'ZF17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWV4dHJhYm9sZCkhaW1wb3J0YW50fVtjZHMtdGV4dH49Ym9sZF17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWJvbGQpIWltcG9ydGFudH1bY2Rz'@; put 'LXRleHR+PXNlbWlib2xkXXtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpIWltcG9ydGFudH1bY2RzLXRleHR+PW1lZGl1bV17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1'@; put 'bSkhaW1wb3J0YW50fVtjZHMtdGV4dH49cmVndWxhcl17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXIpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpZ2h0XXtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9u'@; put 'dC13ZWlnaHQtbGlnaHQpIWltcG9ydGFudH1bY2RzLXRleHR+PWNhcGl0YWxpemVde3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemUhaW1wb3J0YW50fVtjZHMtdGV4dH49dXBwZXJjYXNlXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UhaW1wb3J0YW50fVtjZHMtdGV4dH49bG93ZXJjYXNlXXt0'@; put 'ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2UhaW1wb3J0YW50fVtjZHMtdGV4dH49dHJ1bmNhdGVde292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpcyFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93cmFwIWltcG9ydGFudH1bY2RzLXRleHR+PXRydW5jYXRlXTph'@; put 'ZnRlcixbY2RzLXRleHR+PXRydW5jYXRlXTpiZWZvcmV7Y29udGVudDpub25lfVtjZHMtdGV4dH49anVzdGlmeV17dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH1bY2RzLXRleHR+PWxlZnRde3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1yaWdodF17dGV4dC1hbGln'@; put 'bjpyaWdodCFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1jZW50ZXJde3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH1bY2RzLXRleHR+PW1vbm9zcGFjZV17Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1vbm9zcGFjZS1mb250LWZhbWlseSl9W2Nkcy10ZXh0fj1saGVd'@; put 'e3BhZGRpbmc6LjA1cHggMH1bY2RzLXRleHR+PWxoZV06YmVmb3Jle2NvbnRlbnQ6IiI7bWFyZ2luLXRvcDotLjEyNGVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjB9W2Nkcy10ZXh0fj1saGVdOmFmdGVye2NvbnRlbnQ6IiI7bWFyZ2luLWJvdHRvbTotLjIyMWVtO2Rpc3BsYXk6YmxvY2s7aGVp'@; put 'Z2h0OjB9W2Nkcy1sYXlvdXR+PWRpc2FibGUtbGhlXTphZnRlcixbY2RzLWxheW91dH49ZGlzYWJsZS1saGVdOmJlZm9yZSxbY2RzLXRleHR+PWRpc2FibGUtbGhlXTphZnRlcixbY2RzLXRleHR+PWRpc2FibGUtbGhlXTpiZWZvcmV7Y29udGVudDpub25lfVtjZHMtdGV4dCo9aDBdLFtjZHMt'@; put 'dGV4dCo9aDFdLFtjZHMtdGV4dCo9aDJdLFtjZHMtdGV4dCo9aDNdLFtjZHMtdGV4dCo9aDRdLFtjZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkZXItZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZl'@; put 'bmlyIE5leHQiLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MnJlbTtmb250LXdlaWdodDoyMDA7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7bGluZS1oZWlnaHQ6MS4yZW07bGV0dGVyLXNwYWNpbmc6LS4wMTI1ZW19W2Nkcy10ZXh0Kj1oMF06YmVmb3Jle2Nv'@; put 'bnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjJlbSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1oMF06YWZ0ZXJ7'@; put 'Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigt'@; put 'LWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS4yZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDFdLFtjZHMtdGV4dCo9aDJdLFtjZHMtdGV4dCo9aDNdLFtjZHMtdGV4dCo9aDRdLFtjZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2Zv'@; put 'bnQtc2l6ZToxLjZyZW07bGluZS1oZWlnaHQ6MS41ZW07bGV0dGVyLXNwYWNpbmc6LS4wMTU2ZW19W2Nkcy10ZXh0Kj1oMV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dy'@; put 'YXBoeS10b3AtZ2FwLWhlaWdodCkgKyAuMjVlbSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWgxXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1n'@; put 'YXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyAuMjVlbSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWgyXSxbY2RzLXRleHQqPWgzXSxbY2RzLXRleHQqPWg0'@; put 'XSxbY2RzLXRleHQqPWg1XSxbY2RzLXRleHQqPWg2XXtmb250LXNpemU6MS40cmVtO2xpbmUtaGVpZ2h0OjEuNzE0M2VtO2xldHRlci1zcGFjaW5nOi0uMDE3ODU3ZW19W2Nkcy10ZXh0Kj1oMl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdp'@; put 'bi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjcxNDNlbSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1oMl06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7'@; put 'bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygo'@; put 'MS43MTQzZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDNdLFtjZHMtdGV4dCo9aDRdLFtjZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2ZvbnQtc2l6ZToxLjFyZW07bGluZS1oZWlnaHQ6MS4wOTA5ZW07bGV0dGVyLXNwYWNpbmc6LS4wMTM2MzZlbX1bY2RzLXRl'@; put 'eHQqPWgzXTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKDEuMDkwOWVtIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1b'@; put 'Y2RzLXRleHQqPWgzXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2Nl'@; put 'bmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjA5MDllbSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1oNF0sW2Nkcy10ZXh0Kj1oNV0sW2Nkcy10ZXh0Kj1oNl17Zm9udC1zaXplOi45cmVtO2xpbmUtaGVp'@; put 'Z2h0OjEuMzMzMzMzZW07bGV0dGVyLXNwYWNpbmc6LS4wMTExMTFlbX1bY2RzLXRleHQqPWg0XTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVp'@; put 'Z2h0KSArIGNhbGMoKDEuMzMzMzMzZW0gLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDRdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt'@; put 'dG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKDEuMzMzMzMzZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDVdLFtj'@; put 'ZHMtdGV4dCo9aDZde2ZvbnQtc2l6ZTouOHJlbTtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41ZW07bGV0dGVyLXNwYWNpbmc6LS4wMTI1ZW19W2Nkcy10ZXh0Kj1oNV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206'@; put 'Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyAuMjVlbSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWg1XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFy'@; put 'KC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyAuMjVlbSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWg2'@; put 'XXtmb250LXNpemU6LjdyZW07Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOi0uMDMxMjVlbX1bY2RzLXRleHQqPWg2XTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBv'@; put 'Z3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIC4yNWVtKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDZdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9w'@; put 'LWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIC4yNWVtKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9cDBdLFtjZHMtdGV4dCo9cDFde2ZvbnQtc2l6ZTox'@; put 'LjJyZW07Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci01MDApO2xpbmUtaGVpZ2h0OjEuMTY2NjdlbTtsZXR0ZXItc3BhY2luZzotLjAwODMzM2VtfVtjZHMtdGV4dCo9cDBdOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVp'@; put 'Z2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygoMS4xNjY2N2VtIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXAwXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6Ymxv'@; put 'Y2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5'@; put 'LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjE2NjY3ZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9cDFde2ZvbnQtc2l6ZTouN3JlbTtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNDAwKTtsaW5lLWhlaWdodDoxLjcxNDI5ZW07bGV0dGVyLXNwYWNp'@; put 'bmc6LS4wMTQyODZlbX1bY2RzLXRleHQqPXAxXTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKDEuNzE0MjllbSAtIDFl'@; put 'bSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wMV06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS43MTQyOWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXAyXSxbY2RzLXRleHQqPXAzXSxbY2RzLXRleHQqPXA0XSxb'@; put 'Y2RzLXRleHQqPXA1XXtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNDAwKTtsaW5lLWhlaWdodDoxLjg0NjE1ZW07bGV0dGVyLXNwYWNpbmc6LS4wMDc2OTJlbX1bY2RzLXRleHQqPXAyXTpiZWZvcmV7Y29u'@; put 'dGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKDEuODQ2MTVlbSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wMl06YWZ0'@; put 'ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZh'@; put 'cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS44NDYxNWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXAzXSxbY2RzLXRleHQqPXA0XSxbY2RzLXRleHQqPXA1XXtmb250LXdlaWdodDo0MDB9W2Nkcy10ZXh0Kj1wM106YmVmb3Jle2Nv'@; put 'bnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjg0NjE1ZW0gLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9cDNdOmFm'@; put 'dGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2'@; put 'YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKDEuODQ2MTVlbSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1wNF0sW2Nkcy10ZXh0Kj1wNV17Zm9udC1zaXplOi42cmVtO2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoyZW07bGV0dGVy'@; put 'LXNwYWNpbmc6LS4wMDgzMzNlbX1bY2RzLXRleHQqPXA0XTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIC41ZW0pKi0xKSArIC4w'@; put 'MzdlbSl9W2Nkcy10ZXh0Kj1wNF06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFw'@; put 'aHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgLjVlbSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXA1XXtmb250LXdlaWdodDo0MDB9W2Nkcy10ZXh0Kj1wNV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWln'@; put 'aHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyAuNWVtKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9cDVdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21h'@; put 'cmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIC41ZW0pKi0x'@; put 'KSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1wNl0sW2Nkcy10ZXh0Kj1wN10sW2Nkcy10ZXh0Kj1wOF17Zm9udC1zaXplOi41NXJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7bGluZS1oZWlnaHQ6MS4wOTA5MDllbTtsZXR0ZXIt'@; put 'c3BhY2luZzouMDE4MTgyZW19W2Nkcy10ZXh0Kj1wNl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjA5MDkwOWVt'@; put 'IC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXA2XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigt'@; put 'LWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXA3XSxbY2RzLXRleHQqPXA4XXtmb250LXdlaWdo'@; put 'dDo0MDB9W2Nkcy10ZXh0Kj1wN106YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkq'@; put 'LTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXA3XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwt'@; put 'dHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXA4XXtmb250LXNpemU6LjVyZW07bGluZS1oZWlnaHQ6MS4yZW07bGV0'@; put 'dGVyLXNwYWNpbmc6LjAyZW19W2Nkcy10ZXh0Kj1wOF06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjJlbSAtIDFl'@; put 'bSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wOF06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS4yZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfTpob3N0LDpyb290ey0tXDNiNCAxOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNl'@; put 'LXh4eHMpOy0tXDNiNCAyOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4cyk7LS1cM2I0IDM6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHMpOy0tXDNiNCA0OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXNtKTstLVwzYjQgNTp2YXIoLS1jZHMtZ2xvYmFsLWxh'@; put 'eW91dC1zcGFjZS1tZCk7LS1cM2I0IDY6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbGcpOy0tXDNiNCA3OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhsKTstLVwzYjQgODp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS14eGwpOy0tXDNiNCA5OnZhcigtLWNkcy1n'@; put 'bG9iYWwtbGF5b3V0LXNwYWNlLXh4eGwpfVtjZHMtbGF5b3V0Kj0iYWxpZ246ZmlsbCJdPip7ZmxleC1ncm93OjEhaW1wb3J0YW50O2ZsZXgtYmFzaXM6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJ3cmFwOm5vbmUiXXtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH1bY2RzLWxheW91dCo9'@; put 'ImFsaWduOnN0cmV0Y2giXXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbjpzaHJpbmsiXXtmbGV4LXNocmluazoxIWltcG9ydGFudDtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpmaWxs'@; put 'Il0+KntmbGV4LWdyb3c6MSFpbXBvcnRhbnQ7ZmxleC1iYXNpczowIWltcG9ydGFudH1bY2RzLWxheW91dH49IndyYXBAeHM6bm9uZSJde2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6c3RyZXRjaCJde2ZsZXgtZ3JvdzoxIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dCo9ImFsaWduQHhzOnNocmluayJde2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50O2ZsZXgtZ3JvdzowIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDo3NjhweCl7W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpmaWxsIl0+KntmbGV4LWdyb3c6MSFpbXBvcnRhbnQ7ZmxleC1iYXNpczow'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dH49IndyYXBAc206bm9uZSJde2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206c3RyZXRjaCJde2ZsZXgtZ3JvdzoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduQHNtOnNocmluayJde2ZsZXgtc2hyaW5r'@; put 'OjEhaW1wb3J0YW50O2ZsZXgtZ3JvdzowIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpmaWxsIl0+KntmbGV4LWdyb3c6MSFpbXBvcnRhbnQ7ZmxleC1iYXNpczowIWltcG9ydGFudH1bY2RzLWxheW91dH49IndyYXBAbWQ6bm9uZSJd'@; put 'e2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6c3RyZXRjaCJde2ZsZXgtZ3JvdzoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduQG1kOnNocmluayJde2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50O2ZsZXgtZ3JvdzowIWltcG9ydGFudH19QG1l'@; put 'ZGlhKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6ZmlsbCJdPip7ZmxleC1ncm93OjEhaW1wb3J0YW50O2ZsZXgtYmFzaXM6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJ3cmFwQGxnOm5vbmUiXXtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dCo9ImFsaWduQGxnOnN0cmV0Y2giXXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpzaHJpbmsiXXtmbGV4LXNocmluazoxIWltcG9ydGFudDtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91dCo9ImFs'@; put 'aWduQHhsOmZpbGwiXT4qe2ZsZXgtZ3JvdzoxIWltcG9ydGFudDtmbGV4LWJhc2lzOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0id3JhcEB4bDpub25lIl17ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpzdHJldGNoIl17ZmxleC1ncm93OjEhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6c2hyaW5rIl17ZmxleC1zaHJpbms6MSFpbXBvcnRhbnQ7ZmxleC1ncm93OjAhaW1wb3J0YW50fX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5'@; put 'LWl0ZW1zOmZsZXgtc3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt3aWR0aDoxMDAlO21hcmdpbjowO21pbi1oZWlnaHQ6MH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dH49dmVy'@; put 'dGljYWxdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLXRleHRde3dpZHRoOmluaXRpYWwhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1b'@; put 'Y2RzLWxheW91dCo9ImFsaWduOmJvdHRvbSJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0i'@; put 'YWxpZ246cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxd'@; put 'W2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1j'@; put 'b250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9Im9yZGVyOnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1p'@; put 'dGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jp'@; put 'em9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdy'@; put 'b3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9'@; put 'ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17bWFy'@; put 'Z2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJh'@; put 'bGlnbjpib3R0b20iXXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJd'@; put 'e21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnRvcCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQq'@; put 'PSJhbGlnbkB4czpib3R0b20iXXthbGlnbi1pdGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWdu'@; put 'QHhzOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFs'@; put 'XVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1'@; put 'c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJvcmRlckB4czpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1zdHJl'@; put 'dGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1b'@; put 'Y2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtc3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1j'@; put 'b250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXSxbY2RzLWxheW91'@; put 'dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlv'@; put 'dXQqPSJhbGlnbkB4czpob3Jpem9udGFsLWNlbnRlciJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp0b3AiXXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9'@; put 'W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Ym90dG9tIl17YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206dG9wIl17YWxpZ24taXRl'@; put 'bXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJde2p1c3RpZnktY29udGVudDpmbGV4'@; put 'LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpj'@; put 'ZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpj'@; put 'ZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9Im9yZGVyQHNtOnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX1bY2RzLWxheW91'@; put 'dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250'@; put 'YWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91'@; put 'dCo9ImFsaWduQHNtOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jp'@; put 'em9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFs'@; put 'aWduQHNtOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwtY2VudGVyIl17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5b'@; put 'Y2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpib3R0b20iXXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9'@; put 'ImFsaWduQHNtOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJde21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXR+'@; put 'PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Ym90dG9tIl17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxd'@; put 'W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpsZWZ0Il17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2Rz'@; put 'LWxheW91dCo9ImFsaWduQG1kOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRl'@; put 'cn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0ib3JkZXJA'@; put 'bWQ6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMt'@; put 'bGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLXN0cmV0Y2gi'@; put 'XT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0i'@; put 'YWxpZ25AbWQ6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl17YWxpZ24tc2Vs'@; put 'ZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJn'@; put 'aW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dG9wIl17YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQG1kOmJvdHRvbSJde2FsaWduLXNl'@; put 'bGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1'@; put 'dG8haW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp0b3AiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90'@; put 'dG9tIl17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJde2p1'@; put 'c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9'@; put 'ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6'@; put 'Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0ib3JkZXJAbGc6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0'@; put 'ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhv'@; put 'cml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNo'@; put 'O2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxd'@; put 'PltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6'@; put 'aG9yaXpvbnRhbC1jZW50ZXIiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dG9wIl17YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1o'@; put 'b3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJde2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpv'@; put 'bnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp0b3AiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0'@; put 'fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90dG9tIl17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpsZWZ0Il17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1s'@; put 'YXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpyaWdodCJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1j'@; put 'b250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJde2FsaWdu'@; put 'LWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0ib3JkZXJAeGw6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFs'@; put 'XVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1zdHJldGNoIl17'@; put 'anVzdGlmeS1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6'@; put 'c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMt'@; put 'bGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVy'@; put 'Il0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1jZW50ZXIiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0i'@; put 'YWxpZ25AeGw6dG9wIl17YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOmJvdHRvbSJde2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6cmln'@; put 'aHQiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1bY2RzLWxheW91dH49dmVydGljYWxde3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2Zs'@; put 'ZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtj'@; put 'ZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWdu'@; put 'OnJpZ2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFs'@; put 'LWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlcjpy'@; put 'ZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWdu'@; put 'OnZlcnRpY2FsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRj'@; put 'aCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJd'@; put 'LFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVy'@; put 'dGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxd'@; put 'PltjZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl17bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGln'@; put 'bjpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0i'@; put 'YWxpZ25AeHM6Ym90dG9tIl17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnJp'@; put 'Z2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9u'@; put 'dGFsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJv'@; put 'cmRlckB4czpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxh'@; put 'eW91dCo9ImFsaWduQHhzOnZlcnRpY2FsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5'@; put 'b3V0Kj0iYWxpZ25AeHM6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2Rz'@; put 'LWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJh'@; put 'bGlnbkB4czpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dG9wIl17bWFyZ2luLWJvdHRv'@; put 'bTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Ym90dG9tIl17bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6cmlnaHQiXXttYXJnaW4tbGVmdDph'@; put 'dXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde2p1c3RpZnktY29udGVu'@; put 'dDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpsZWZ0Il17YWxpZ24taXRlbXM6ZmxleC1zdGFy'@; put 'dH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nk'@; put 'cy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29u'@; put 'dGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0ib3JkZXJAc206cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLXN0cmV0Y2giXXtqdXN0'@; put 'aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLXN0cmV0Y2giXXth'@; put 'bGlnbi1pdGVtczpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnN0'@; put 'cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206dmVydGljYWwtY2VudGVyIl17bWFyZ2luLXRvcDphdXRvO21hcmdpbi1i'@; put 'b3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZl'@; put 'cnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJde21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRp'@; put 'Y2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJde21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49dmVy'@; put 'dGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtj'@; put 'ZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6bGVmdCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXXthbGlnbi1pdGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGln'@; put 'bkBtZDp2ZXJ0aWNhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9'@; put 'ImFsaWduQG1kOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9Im9yZGVyQG1kOnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX1bY2RzLWxheW91dH49dmVydGlj'@; put 'YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1zdHJldGNoIl17anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtc3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRp'@; put 'Y2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRj'@; put 'aH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpzdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFs'@; put 'aWduQG1kOnZlcnRpY2FsLWNlbnRlciJde21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQG1kOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jp'@; put 'em9udGFsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0'@; put 'b20iXXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXXttYXJnaW4tcmln'@; put 'aHQ6YXV0b319QG1lZGlhKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnRvcCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJd'@; put 'e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJde2FsaWduLWl0ZW1z'@; put 'OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1jZW50ZXIiXXthbGln'@; put 'bi1pdGVtczpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0ib3JkZXJAbGc6cmV2ZXJzZSJd'@; put 'e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp2'@; put 'ZXJ0aWNhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnN0'@; put 'cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBs'@; put 'ZzpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl17bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0s'@; put 'W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOnRvcCJde21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJde21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49'@; put 'dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6bGVmdCJde21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nk'@; put 'cy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90dG9tIl17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12'@; put 'ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGlj'@; put 'YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2Rz'@; put 'LWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlckB4bDpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJl'@; put 'dGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0'@; put 'Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6c3RyZXRjaCJdPip7ZmxleC1n'@; put 'cm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp2ZXJ0aWNhbC1jZW50ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMt'@; put 'bGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5'@; put 'b3V0Kj0iYWxpZ25AeGw6dG9wIl17bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90dG9tIl17bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0'@; put 'Kj0iYWxpZ25AeGw6cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99fVtjZHMtbGF5b3V0fj1ncmlkXXtkaXNwbGF5OmdyaWQ7YWxpZ24taXRlbXM6c3RhcnQ7YWxpZ24t'@; put 'Y29udGVudDpzdGFydDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KHZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LWdyaWQtY29scyksMWZyKTt3aWR0aDoxMDAlfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj1yb3dzXXtncmlkLXRlbXBsYXRlLXJvd3M6cmVwZWF0KDEyLGF1dG8p'@; put 'fVtjZHMtbGF5b3V0fj1ncmlkXT5bY2RzLWxheW91dCo9cm93XXthbGlnbi1zZWxmOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJjb2xzOmF1dG8iXXtncmlkLWF1dG8tZmxvdzpjb2x1bW47Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmluaXRpYWx9W2Nkcy1sYXlvdXQq'@; put 'PSJjb2xzQCJdPip7Z3JpZC1jb2x1bW46c3BhbiB2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1ncmlkLWNvbHMpfVtjZHMtbGF5b3V0Kj0iY29sQCJde2dyaWQtY29sdW1uOnNwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJjb2xzOjEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlv'@; put 'dXQqPSJyb3dzOjEiXT4qe2dyaWQtcm93OnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJjb2xzOjIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJyb3dzOjIiXT4qe2dyaWQtcm93OnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJjb2xzOjMiXT4qe2dy'@; put 'aWQtY29sdW1uOnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJyb3dzOjMiXT4qe2dyaWQtcm93OnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJjb2xzOjQiXT4qe2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJyb3dzOjQiXT4qe2dyaWQtcm93OnNwYW4gNC9z'@; put 'cGFuIDR9W2Nkcy1sYXlvdXQqPSJjb2xzOjUiXT4qe2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJyb3dzOjUiXT4qe2dyaWQtcm93OnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJjb2xzOjYiXT4qe2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlv'@; put 'dXQqPSJyb3dzOjYiXT4qe2dyaWQtcm93OnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJjb2xzOjciXT4qe2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJyb3dzOjciXT4qe2dyaWQtcm93OnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJjb2xzOjgiXT4qe2dy'@; put 'aWQtY29sdW1uOnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJyb3dzOjgiXT4qe2dyaWQtcm93OnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJjb2xzOjkiXT4qe2dyaWQtY29sdW1uOnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJyb3dzOjkiXT4qe2dyaWQtcm93OnNwYW4gOS9z'@; put 'cGFuIDl9W2Nkcy1sYXlvdXQqPSJjb2xzOjEwIl0+KntncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJyb3dzOjEwIl0+KntncmlkLXJvdzpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJjb2xzOjExIl0+KntncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTF9'@; put 'W2Nkcy1sYXlvdXQqPSJyb3dzOjExIl0+KntncmlkLXJvdzpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJjb2xzOjEyIl0+KntncmlkLWNvbHVtbjpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJyb3dzOjEyIl0+KntncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlv'@; put 'dXQqPSJjb2w6MSJde2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjEiXXtncmlkLXJvdzpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDoyIl17Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMiFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXQqPSJyb3c6MiJde2dyaWQtcm93OnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjMiXXtncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzozIl17Z3JpZC1yb3c6c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXQqPSJjb2w6NCJde2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjQiXXtncmlkLXJvdzpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDo1Il17Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6NSJde2dyaWQtcm93OnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjYiXXtncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzo2Il17Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNiFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6NyJde2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjciXXtncmlkLXJvdzpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDo4Il17Z3JpZC1jb2x1bW46c3BhbiA4L3Nw'@; put 'YW4gOCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6OCJde2dyaWQtcm93OnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjkiXXtncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzo5Il17Z3JpZC1yb3c6c3BhbiA5'@; put 'L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6MTAiXXtncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjEwIl17Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDoxMSJde2dyaWQt'@; put 'Y29sdW1uOnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6MTEiXXtncmlkLXJvdzpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjEyIl17Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9'@; put 'InJvdzoxMiJde2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtMSJde2dyaWQtY29sdW1uLXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOmVuZC0xIl17Z3JpZC1jb2x1bW4tZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0Kj0icm93OnN0YXJ0LTEiXXtncmlkLXJvdy1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtMSJde2dyaWQtcm93LWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFydC0yIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXQqPSJjb2w6ZW5kLTIiXXtncmlkLWNvbHVtbi1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtMiJde2dyaWQtcm93LXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVuZC0yIl17Z3JpZC1yb3ctZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0i'@; put 'Y29sOnN0YXJ0LTMiXXtncmlkLWNvbHVtbi1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtMyJde2dyaWQtY29sdW1uLWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC0zIl17Z3JpZC1yb3ctc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq'@; put 'PSJyb3c6ZW5kLTMiXXtncmlkLXJvdy1lbmQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtNCJde2dyaWQtY29sdW1uLXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOmVuZC00Il17Z3JpZC1jb2x1bW4tZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0i'@; put 'cm93OnN0YXJ0LTQiXXtncmlkLXJvdy1zdGFydDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtNCJde2dyaWQtcm93LWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFydC01Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJj'@; put 'b2w6ZW5kLTUiXXtncmlkLWNvbHVtbi1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtNSJde2dyaWQtcm93LXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVuZC01Il17Z3JpZC1yb3ctZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0'@; put 'YXJ0LTYiXXtncmlkLWNvbHVtbi1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtNiJde2dyaWQtY29sdW1uLWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC02Il17Z3JpZC1yb3ctc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6'@; put 'ZW5kLTYiXXtncmlkLXJvdy1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtNyJde2dyaWQtY29sdW1uLXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOmVuZC03Il17Z3JpZC1jb2x1bW4tZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OnN0'@; put 'YXJ0LTciXXtncmlkLXJvdy1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtNyJde2dyaWQtcm93LWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFydC04Il17Z3JpZC1jb2x1bW4tc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5k'@; put 'LTgiXXtncmlkLWNvbHVtbi1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtOCJde2dyaWQtcm93LXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVuZC04Il17Z3JpZC1yb3ctZW5kOjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0YXJ0LTki'@; put 'XXtncmlkLWNvbHVtbi1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtOSJde2dyaWQtY29sdW1uLWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC05Il17Z3JpZC1yb3ctc3RhcnQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6ZW5kLTki'@; put 'XXtncmlkLXJvdy1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtMTAiXXtncmlkLWNvbHVtbi1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5kLTEwIl17Z3JpZC1jb2x1bW4tZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFy'@; put 'dC0xMCJde2dyaWQtcm93LXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtMTAiXXtncmlkLXJvdy1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0YXJ0LTExIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29s'@; put 'OmVuZC0xMSJde2dyaWQtY29sdW1uLWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtMTEiXXtncmlkLXJvdy1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6ZW5kLTExIl17Z3JpZC1yb3ctZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNv'@; put 'bDpzdGFydC0xMiJde2dyaWQtY29sdW1uLXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtMTIiXXtncmlkLWNvbHVtbi1lbmQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OnN0YXJ0LTEyIl17Z3JpZC1yb3ctc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0Kj0icm93OmVuZC0xMiJde2dyaWQtcm93LWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtMTMiXXtncmlkLWNvbHVtbi1zdGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5kLTEzIl17Z3JpZC1jb2x1bW4tZW5kOjEzIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dCo9InJvdzpzdGFydC0xMyJde2dyaWQtcm93LXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtMTMiXXtncmlkLXJvdy1lbmQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24tY29udGVudDpz'@; put 'dGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmJvdHRvbSJde2FsaWduLWNvbnRlbnQ6ZW5kfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0'@; put 'Kj0iYWxpZ246bGVmdCJde2p1c3RpZnktY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91'@; put 'dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRj'@; put 'aDtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nk'@; put 'cy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50'@; put 'ZXI7anVzdGlmeS1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dCo9ImNvbHNAeHM6MSJdPip7Z3JpZC1jb2x1bW46c3BhbiAxL3NwYW4gMX1bY2RzLWxheW91dCo9InJvd3NAeHM6MSJdPip7Z3JpZC1yb3c6c3Bh'@; put 'biAxL3NwYW4gMX1bY2RzLWxheW91dCo9ImNvbHNAeHM6MiJdPip7Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMn1bY2RzLWxheW91dCo9InJvd3NAeHM6MiJdPip7Z3JpZC1yb3c6c3BhbiAyL3NwYW4gMn1bY2RzLWxheW91dCo9ImNvbHNAeHM6MyJdPip7Z3JpZC1jb2x1bW46c3BhbiAzL3Nw'@; put 'YW4gM31bY2RzLWxheW91dCo9InJvd3NAeHM6MyJdPip7Z3JpZC1yb3c6c3BhbiAzL3NwYW4gM31bY2RzLWxheW91dCo9ImNvbHNAeHM6NCJdPip7Z3JpZC1jb2x1bW46c3BhbiA0L3NwYW4gNH1bY2RzLWxheW91dCo9InJvd3NAeHM6NCJdPip7Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNH1bY2Rz'@; put 'LWxheW91dCo9ImNvbHNAeHM6NSJdPip7Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNX1bY2RzLWxheW91dCo9InJvd3NAeHM6NSJdPip7Z3JpZC1yb3c6c3BhbiA1L3NwYW4gNX1bY2RzLWxheW91dCo9ImNvbHNAeHM6NiJdPip7Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNn1bY2RzLWxheW91'@; put 'dCo9InJvd3NAeHM6NiJdPip7Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNn1bY2RzLWxheW91dCo9ImNvbHNAeHM6NyJdPip7Z3JpZC1jb2x1bW46c3BhbiA3L3NwYW4gN31bY2RzLWxheW91dCo9InJvd3NAeHM6NyJdPip7Z3JpZC1yb3c6c3BhbiA3L3NwYW4gN31bY2RzLWxheW91dCo9ImNvbHNA'@; put 'eHM6OCJdPip7Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOH1bY2RzLWxheW91dCo9InJvd3NAeHM6OCJdPip7Z3JpZC1yb3c6c3BhbiA4L3NwYW4gOH1bY2RzLWxheW91dCo9ImNvbHNAeHM6OSJdPip7Z3JpZC1jb2x1bW46c3BhbiA5L3NwYW4gOX1bY2RzLWxheW91dCo9InJvd3NAeHM6OSJd'@; put 'Pip7Z3JpZC1yb3c6c3BhbiA5L3NwYW4gOX1bY2RzLWxheW91dCo9ImNvbHNAeHM6MTAiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTAvc3BhbiAxMH1bY2RzLWxheW91dCo9InJvd3NAeHM6MTAiXT4qe2dyaWQtcm93OnNwYW4gMTAvc3BhbiAxMH1bY2RzLWxheW91dCo9ImNvbHNAeHM6MTEiXT4q'@; put 'e2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMX1bY2RzLWxheW91dCo9InJvd3NAeHM6MTEiXT4qe2dyaWQtcm93OnNwYW4gMTEvc3BhbiAxMX1bY2RzLWxheW91dCo9ImNvbHNAeHM6MTIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAxMn1bY2RzLWxheW91dCo9InJvd3NAeHM6MTIi'@; put 'XT4qe2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMn19QG1lZGlhKG1pbi13aWR0aDo3NjhweCl7W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjEiXT4qe2dyaWQtcm93OnNwYW4gMS9zcGFuIDF9W2Nkcy1s'@; put 'YXlvdXQqPSJjb2xzQHNtOjIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjIiXT4qe2dyaWQtcm93OnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjMiXT4qe2dyaWQtY29sdW1uOnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQq'@; put 'PSJyb3dzQHNtOjMiXT4qe2dyaWQtcm93OnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjQiXT4qe2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjQiXT4qe2dyaWQtcm93OnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJjb2xzQHNt'@; put 'OjUiXT4qe2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjUiXT4qe2dyaWQtcm93OnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjYiXT4qe2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjYiXT4q'@; put 'e2dyaWQtcm93OnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjciXT4qe2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjciXT4qe2dyaWQtcm93OnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjgiXT4qe2dyaWQtY29s'@; put 'dW1uOnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjgiXT4qe2dyaWQtcm93OnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjkiXT4qe2dyaWQtY29sdW1uOnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjkiXT4qe2dyaWQtcm93OnNwYW4g'@; put 'OS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjEwIl0+KntncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjEwIl0+KntncmlkLXJvdzpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjExIl0+KntncmlkLWNvbHVtbjpzcGFu'@; put 'IDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjExIl0+KntncmlkLXJvdzpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJjb2xzQHNtOjEyIl0+KntncmlkLWNvbHVtbjpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJyb3dzQHNtOjEyIl0+KntncmlkLXJvdzpzcGFu'@; put 'IDEyL3NwYW4gMTJ9fUBtZWRpYShtaW4td2lkdGg6OTkycHgpe1tjZHMtbGF5b3V0Kj0iY29sc0BtZDoxIl0+KntncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoxIl0+KntncmlkLXJvdzpzcGFuIDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDoy'@; put 'Il0+KntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoyIl0+KntncmlkLXJvdzpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDozIl0+KntncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0Kj0icm93c0BtZDozIl0+Kntn'@; put 'cmlkLXJvdzpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo0Il0+KntncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo0Il0+KntncmlkLXJvdzpzcGFuIDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo1Il0+KntncmlkLWNvbHVt'@; put 'bjpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo1Il0+KntncmlkLXJvdzpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo2Il0+KntncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo2Il0+KntncmlkLXJvdzpzcGFuIDYv'@; put 'c3BhbiA2fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo3Il0+KntncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo3Il0+KntncmlkLXJvdzpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo4Il0+KntncmlkLWNvbHVtbjpzcGFuIDgvc3BhbiA4'@; put 'fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo4Il0+KntncmlkLXJvdzpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo5Il0+KntncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo5Il0+KntncmlkLXJvdzpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5'@; put 'b3V0Kj0iY29sc0BtZDoxMCJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoxMCJdPip7Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDoxMSJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMS9zcGFuIDExfVtjZHMt'@; put 'bGF5b3V0Kj0icm93c0BtZDoxMSJdPip7Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDoxMiJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoxMiJdPip7Z3JpZC1yb3c6c3BhbiAxMi9zcGFuIDEyfX1AbWVk'@; put 'aWEobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjEiXT4qe2dyaWQtcm93OnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjIiXT4qe2dyaWQtY29sdW1u'@; put 'OnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjIiXT4qe2dyaWQtcm93OnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjMiXT4qe2dyaWQtY29sdW1uOnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjMiXT4qe2dyaWQtcm93OnNwYW4gMy9z'@; put 'cGFuIDN9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjQiXT4qe2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjQiXT4qe2dyaWQtcm93OnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjUiXT4qe2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDV9'@; put 'W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjUiXT4qe2dyaWQtcm93OnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjYiXT4qe2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjYiXT4qe2dyaWQtcm93OnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlv'@; put 'dXQqPSJjb2xzQGxnOjciXT4qe2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjciXT4qe2dyaWQtcm93OnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjgiXT4qe2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJy'@; put 'b3dzQGxnOjgiXT4qe2dyaWQtcm93OnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjkiXT4qe2dyaWQtY29sdW1uOnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjkiXT4qe2dyaWQtcm93OnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjEw'@; put 'Il0+KntncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjEwIl0+KntncmlkLXJvdzpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjExIl0+KntncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJyb3dzQGxn'@; put 'OjExIl0+KntncmlkLXJvdzpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJjb2xzQGxnOjEyIl0+KntncmlkLWNvbHVtbjpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJyb3dzQGxnOjEyIl0+KntncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTJ9fUBtZWRpYShtaW4td2lkdGg6MTQ0'@; put 'MHB4KXtbY2RzLWxheW91dCo9ImNvbHNAeGw6MSJdPip7Z3JpZC1jb2x1bW46c3BhbiAxL3NwYW4gMX1bY2RzLWxheW91dCo9InJvd3NAeGw6MSJdPip7Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMX1bY2RzLWxheW91dCo9ImNvbHNAeGw6MiJdPip7Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMn1b'@; put 'Y2RzLWxheW91dCo9InJvd3NAeGw6MiJdPip7Z3JpZC1yb3c6c3BhbiAyL3NwYW4gMn1bY2RzLWxheW91dCo9ImNvbHNAeGw6MyJdPip7Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gM31bY2RzLWxheW91dCo9InJvd3NAeGw6MyJdPip7Z3JpZC1yb3c6c3BhbiAzL3NwYW4gM31bY2RzLWxheW91'@; put 'dCo9ImNvbHNAeGw6NCJdPip7Z3JpZC1jb2x1bW46c3BhbiA0L3NwYW4gNH1bY2RzLWxheW91dCo9InJvd3NAeGw6NCJdPip7Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNH1bY2RzLWxheW91dCo9ImNvbHNAeGw6NSJdPip7Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNX1bY2RzLWxheW91dCo9InJv'@; put 'd3NAeGw6NSJdPip7Z3JpZC1yb3c6c3BhbiA1L3NwYW4gNX1bY2RzLWxheW91dCo9ImNvbHNAeGw6NiJdPip7Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNn1bY2RzLWxheW91dCo9InJvd3NAeGw6NiJdPip7Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNn1bY2RzLWxheW91dCo9ImNvbHNAeGw6NyJd'@; put 'Pip7Z3JpZC1jb2x1bW46c3BhbiA3L3NwYW4gN31bY2RzLWxheW91dCo9InJvd3NAeGw6NyJdPip7Z3JpZC1yb3c6c3BhbiA3L3NwYW4gN31bY2RzLWxheW91dCo9ImNvbHNAeGw6OCJdPip7Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOH1bY2RzLWxheW91dCo9InJvd3NAeGw6OCJdPip7Z3Jp'@; put 'ZC1yb3c6c3BhbiA4L3NwYW4gOH1bY2RzLWxheW91dCo9ImNvbHNAeGw6OSJdPip7Z3JpZC1jb2x1bW46c3BhbiA5L3NwYW4gOX1bY2RzLWxheW91dCo9InJvd3NAeGw6OSJdPip7Z3JpZC1yb3c6c3BhbiA5L3NwYW4gOX1bY2RzLWxheW91dCo9ImNvbHNAeGw6MTAiXT4qe2dyaWQtY29sdW1u'@; put 'OnNwYW4gMTAvc3BhbiAxMH1bY2RzLWxheW91dCo9InJvd3NAeGw6MTAiXT4qe2dyaWQtcm93OnNwYW4gMTAvc3BhbiAxMH1bY2RzLWxheW91dCo9ImNvbHNAeGw6MTEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMX1bY2RzLWxheW91dCo9InJvd3NAeGw6MTEiXT4qe2dyaWQtcm93'@; put 'OnNwYW4gMTEvc3BhbiAxMX1bY2RzLWxheW91dCo9ImNvbHNAeGw6MTIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAxMn1bY2RzLWxheW91dCo9InJvd3NAeGw6MTIiXT4qe2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMn19QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXQq'@; put 'PSJjb2xAeHM6MSJde2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjEiXXtncmlkLXJvdzpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czoyIl17Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMiFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6MiJde2dyaWQtcm93OnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjMiXXtncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czozIl17Z3JpZC1yb3c6c3BhbiAzL3Nw'@; put 'YW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6NCJde2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjQiXXtncmlkLXJvdzpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czo1Il17Z3JpZC1j'@; put 'b2x1bW46c3BhbiA1L3NwYW4gNSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6NSJde2dyaWQtcm93OnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjYiXXtncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJv'@; put 'd0B4czo2Il17Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6NyJde2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjciXXtncmlkLXJvdzpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dCo9ImNvbEB4czo4Il17Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6OCJde2dyaWQtcm93OnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjkiXXtncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czo5Il17Z3JpZC1yb3c6c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6MTAiXXtncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjEwIl17Z3JpZC1y'@; put 'b3c6c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czoxMSJde2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6MTEiXXtncmlkLXJvdzpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'Kj0iY29sQHhzOjEyIl17Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czoxMiJde2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0Kj0iY29sQHNtOjEiXXtn'@; put 'cmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbToxIl17Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206MiJde2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'Kj0icm93QHNtOjIiXXtncmlkLXJvdzpzcGFuIDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTozIl17Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206MyJde2dyaWQtcm93OnNwYW4gMy9zcGFuIDMhaW1wb3J0YW50'@; put 'fVtjZHMtbGF5b3V0Kj0iY29sQHNtOjQiXXtncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTo0Il17Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206NSJde2dyaWQtY29sdW1uOnNwYW4gNS9z'@; put 'cGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOjUiXXtncmlkLXJvdzpzcGFuIDUvc3BhbiA1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTo2Il17Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206NiJde2dyaWQt'@; put 'cm93OnNwYW4gNi9zcGFuIDYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOjciXXtncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTo3Il17Z3JpZC1yb3c6c3BhbiA3L3NwYW4gNyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xA'@; put 'c206OCJde2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOjgiXXtncmlkLXJvdzpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTo5Il17Z3JpZC1jb2x1bW46c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXQqPSJyb3dAc206OSJde2dyaWQtcm93OnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOjEwIl17Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbToxMCJde2dyaWQtcm93OnNwYW4gMTAvc3Bh'@; put 'biAxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206MTEiXXtncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOjExIl17Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbToxMiJd'@; put 'e2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206MTIiXXtncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dCo9ImNvbEBtZDoxIl17Z3JpZC1jb2x1bW46c3Bh'@; put 'biAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6MSJde2dyaWQtcm93OnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjIiXXtncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDoyIl17'@; put 'Z3JpZC1yb3c6c3BhbiAyL3NwYW4gMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6MyJde2dyaWQtY29sdW1uOnNwYW4gMy9zcGFuIDMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjMiXXtncmlkLXJvdzpzcGFuIDMvc3BhbiAzIWltcG9ydGFudH1bY2RzLWxheW91dCo9'@; put 'ImNvbEBtZDo0Il17Z3JpZC1jb2x1bW46c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6NCJde2dyaWQtcm93OnNwYW4gNC9zcGFuIDQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjUiXXtncmlkLWNvbHVtbjpzcGFuIDUvc3BhbiA1IWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dCo9InJvd0BtZDo1Il17Z3JpZC1yb3c6c3BhbiA1L3NwYW4gNSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6NiJde2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjYiXXtncmlkLXJvdzpzcGFuIDYvc3Bh'@; put 'biA2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDo3Il17Z3JpZC1jb2x1bW46c3BhbiA3L3NwYW4gNyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6NyJde2dyaWQtcm93OnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjgiXXtncmlkLWNv'@; put 'bHVtbjpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDo4Il17Z3JpZC1yb3c6c3BhbiA4L3NwYW4gOCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6OSJde2dyaWQtY29sdW1uOnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93'@; put 'QG1kOjkiXXtncmlkLXJvdzpzcGFuIDkvc3BhbiA5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDoxMCJde2dyaWQtY29sdW1uOnNwYW4gMTAvc3BhbiAxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6MTAiXXtncmlkLXJvdzpzcGFuIDEwL3NwYW4gMTAhaW1wb3J0YW50'@; put 'fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjExIl17Z3JpZC1jb2x1bW46c3BhbiAxMS9zcGFuIDExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDoxMSJde2dyaWQtcm93OnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6MTIiXXtncmlkLWNvbHVtbjpz'@; put 'cGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjEyIl17Z3JpZC1yb3c6c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0Kj0iY29sQGxnOjEiXXtncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzoxIl17Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6MiJde2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjIiXXtncmlkLXJvdzpzcGFu'@; put 'IDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzozIl17Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6MyJde2dyaWQtcm93OnNwYW4gMy9zcGFuIDMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOjQiXXtn'@; put 'cmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzo0Il17Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6NSJde2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'Kj0icm93QGxnOjUiXXtncmlkLXJvdzpzcGFuIDUvc3BhbiA1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzo2Il17Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6NiJde2dyaWQtcm93OnNwYW4gNi9zcGFuIDYhaW1wb3J0YW50'@; put 'fVtjZHMtbGF5b3V0Kj0iY29sQGxnOjciXXtncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzo3Il17Z3JpZC1yb3c6c3BhbiA3L3NwYW4gNyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6OCJde2dyaWQtY29sdW1uOnNwYW4gOC9z'@; put 'cGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjgiXXtncmlkLXJvdzpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzo5Il17Z3JpZC1jb2x1bW46c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6OSJde2dyaWQt'@; put 'cm93OnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOjEwIl17Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzoxMCJde2dyaWQtcm93OnNwYW4gMTAvc3BhbiAxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq'@; put 'PSJjb2xAbGc6MTEiXXtncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjExIl17Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzoxMiJde2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAx'@; put 'MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6MTIiXXtncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXQqPSJjb2xAeGw6MSJde2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0Kj0icm93QHhsOjEiXXtncmlkLXJvdzpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDoyIl17Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6MiJde2dyaWQtcm93OnNwYW4gMi9zcGFuIDIhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjMiXXtncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDozIl17Z3JpZC1yb3c6c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6NCJde2dyaWQtY29sdW1uOnNw'@; put 'YW4gNC9zcGFuIDQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjQiXXtncmlkLXJvdzpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDo1Il17Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6NSJd'@; put 'e2dyaWQtcm93OnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjYiXXtncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDo2Il17Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq'@; put 'PSJjb2xAeGw6NyJde2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjciXXtncmlkLXJvdzpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDo4Il17Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOCFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6OCJde2dyaWQtcm93OnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjkiXXtncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDo5Il17Z3JpZC1yb3c6c3BhbiA5L3Nw'@; put 'YW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6MTAiXXtncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjEwIl17Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDoxMSJd'@; put 'e2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6MTEiXXtncmlkLXJvdzpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjEyIl17Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dCo9InJvd0B4bDoxMiJde2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6NTc2cHgpe1tjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTEiXXtncmlkLWNvbHVtbi1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4'@; put 'czplbmQtMSJde2dyaWQtY29sdW1uLWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC0xIl17Z3JpZC1yb3ctc3RhcnQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6ZW5kLTEiXXtncmlkLXJvdy1lbmQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJj'@; put 'b2xAeHM6c3RhcnQtMiJde2dyaWQtY29sdW1uLXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC0yIl17Z3JpZC1jb2x1bW4tZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTIiXXtncmlkLXJvdy1zdGFydDoyIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dCo9InJvd0B4czplbmQtMiJde2dyaWQtcm93LWVuZDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC0zIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTMiXXtncmlkLWNvbHVtbi1lbmQ6MyFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtMyJde2dyaWQtcm93LXN0YXJ0OjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC0zIl17Z3JpZC1yb3ctZW5kOjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTQiXXtncmlkLWNvbHVtbi1zdGFydDo0'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czplbmQtNCJde2dyaWQtY29sdW1uLWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC00Il17Z3JpZC1yb3ctc3RhcnQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6ZW5kLTQiXXtncmlkLXJvdy1l'@; put 'bmQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3RhcnQtNSJde2dyaWQtY29sdW1uLXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC01Il17Z3JpZC1jb2x1bW4tZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTUiXXtn'@; put 'cmlkLXJvdy1zdGFydDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtNSJde2dyaWQtcm93LWVuZDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC02Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5k'@; put 'LTYiXXtncmlkLWNvbHVtbi1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtNiJde2dyaWQtcm93LXN0YXJ0OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC02Il17Z3JpZC1yb3ctZW5kOjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhz'@; put 'OnN0YXJ0LTciXXtncmlkLWNvbHVtbi1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czplbmQtNyJde2dyaWQtY29sdW1uLWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC03Il17Z3JpZC1yb3ctc3RhcnQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXQqPSJyb3dAeHM6ZW5kLTciXXtncmlkLXJvdy1lbmQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3RhcnQtOCJde2dyaWQtY29sdW1uLXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC04Il17Z3JpZC1jb2x1bW4tZW5kOjghaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTgiXXtncmlkLXJvdy1zdGFydDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtOCJde2dyaWQtcm93LWVuZDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC05Il17Z3JpZC1jb2x1bW4tc3RhcnQ6OSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTkiXXtncmlkLWNvbHVtbi1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtOSJde2dyaWQtcm93LXN0YXJ0OjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC05Il17Z3JpZC1yb3ctZW5kOjkh'@; put 'aW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTEwIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC0xMCJde2dyaWQtY29sdW1uLWVuZDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtMTAiXXtn'@; put 'cmlkLXJvdy1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6ZW5kLTEwIl17Z3JpZC1yb3ctZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC0xMSJde2dyaWQtY29sdW1uLXN0YXJ0OjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4'@; put 'czplbmQtMTEiXXtncmlkLWNvbHVtbi1lbmQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTExIl17Z3JpZC1yb3ctc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC0xMSJde2dyaWQtcm93LWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXQqPSJjb2xAeHM6c3RhcnQtMTIiXXtncmlkLWNvbHVtbi1zdGFydDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTEyIl17Z3JpZC1jb2x1bW4tZW5kOjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC0xMiJde2dyaWQtcm93LXN0YXJ0OjEyIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtMTIiXXtncmlkLXJvdy1lbmQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTEzIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC0xMyJde2dyaWQtY29s'@; put 'dW1uLWVuZDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtMTMiXXtncmlkLXJvdy1zdGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6ZW5kLTEzIl17Z3JpZC1yb3ctZW5kOjEzIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDo3NjhweCl7W2Nk'@; put 'cy1sYXlvdXQqPSJjb2xAc206c3RhcnQtMSJde2dyaWQtY29sdW1uLXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC0xIl17Z3JpZC1jb2x1bW4tZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTEiXXtncmlkLXJvdy1zdGFydDoxIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtMSJde2dyaWQtcm93LWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC0yIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTIiXXtncmlkLWNvbHVtbi1l'@; put 'bmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtMiJde2dyaWQtcm93LXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVuZC0yIl17Z3JpZC1yb3ctZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTMiXXtncmlkLWNv'@; put 'bHVtbi1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtMyJde2dyaWQtY29sdW1uLWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC0zIl17Z3JpZC1yb3ctc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTMi'@; put 'XXtncmlkLXJvdy1lbmQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtNCJde2dyaWQtY29sdW1uLXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC00Il17Z3JpZC1jb2x1bW4tZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNt'@; put 'OnN0YXJ0LTQiXXtncmlkLXJvdy1zdGFydDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtNCJde2dyaWQtcm93LWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC01Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq'@; put 'PSJjb2xAc206ZW5kLTUiXXtncmlkLWNvbHVtbi1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtNSJde2dyaWQtcm93LXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVuZC01Il17Z3JpZC1yb3ctZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0Kj0iY29sQHNtOnN0YXJ0LTYiXXtncmlkLWNvbHVtbi1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtNiJde2dyaWQtY29sdW1uLWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC02Il17Z3JpZC1yb3ctc3RhcnQ6NiFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTYiXXtncmlkLXJvdy1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtNyJde2dyaWQtY29sdW1uLXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC03Il17Z3JpZC1jb2x1bW4tZW5kOjch'@; put 'aW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTciXXtncmlkLXJvdy1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtNyJde2dyaWQtcm93LWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC04Il17Z3JpZC1jb2x1bW4t'@; put 'c3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTgiXXtncmlkLWNvbHVtbi1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtOCJde2dyaWQtcm93LXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVuZC04Il17Z3Jp'@; put 'ZC1yb3ctZW5kOjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTkiXXtncmlkLWNvbHVtbi1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtOSJde2dyaWQtY29sdW1uLWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFy'@; put 'dC05Il17Z3JpZC1yb3ctc3RhcnQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTkiXXtncmlkLXJvdy1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtMTAiXXtncmlkLWNvbHVtbi1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJj'@; put 'b2xAc206ZW5kLTEwIl17Z3JpZC1jb2x1bW4tZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC0xMCJde2dyaWQtcm93LXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtMTAiXXtncmlkLXJvdy1lbmQ6MTAhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTExIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC0xMSJde2dyaWQtY29sdW1uLWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtMTEiXXtncmlkLXJvdy1zdGFydDox'@; put 'MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTExIl17Z3JpZC1yb3ctZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC0xMiJde2dyaWQtY29sdW1uLXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtMTIiXXtncmlk'@; put 'LWNvbHVtbi1lbmQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTEyIl17Z3JpZC1yb3ctc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVuZC0xMiJde2dyaWQtcm93LWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3Rh'@; put 'cnQtMTMiXXtncmlkLWNvbHVtbi1zdGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTEzIl17Z3JpZC1jb2x1bW4tZW5kOjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC0xMyJde2dyaWQtcm93LXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dCo9InJvd0BzbTplbmQtMTMiXXtncmlkLXJvdy1lbmQ6MTMhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC0xIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTEiXXtn'@; put 'cmlkLWNvbHVtbi1lbmQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtMSJde2dyaWQtcm93LXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC0xIl17Z3JpZC1yb3ctZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOnN0YXJ0'@; put 'LTIiXXtncmlkLWNvbHVtbi1zdGFydDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtMiJde2dyaWQtY29sdW1uLWVuZDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC0yIl17Z3JpZC1yb3ctc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJy'@; put 'b3dAbWQ6ZW5kLTIiXXtncmlkLXJvdy1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtMyJde2dyaWQtY29sdW1uLXN0YXJ0OjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC0zIl17Z3JpZC1jb2x1bW4tZW5kOjMhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0Kj0icm93QG1kOnN0YXJ0LTMiXXtncmlkLXJvdy1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtMyJde2dyaWQtcm93LWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC00Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NCFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTQiXXtncmlkLWNvbHVtbi1lbmQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtNCJde2dyaWQtcm93LXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC00Il17Z3JpZC1yb3ctZW5kOjQhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOnN0YXJ0LTUiXXtncmlkLWNvbHVtbi1zdGFydDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtNSJde2dyaWQtY29sdW1uLWVuZDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC01Il17Z3JpZC1yb3ctc3Rh'@; put 'cnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6ZW5kLTUiXXtncmlkLXJvdy1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtNiJde2dyaWQtY29sdW1uLXN0YXJ0OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC02Il17Z3JpZC1j'@; put 'b2x1bW4tZW5kOjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOnN0YXJ0LTYiXXtncmlkLXJvdy1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtNiJde2dyaWQtcm93LWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC03Il17'@; put 'Z3JpZC1jb2x1bW4tc3RhcnQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTciXXtncmlkLWNvbHVtbi1lbmQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtNyJde2dyaWQtcm93LXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1k'@; put 'OmVuZC03Il17Z3JpZC1yb3ctZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOnN0YXJ0LTgiXXtncmlkLWNvbHVtbi1zdGFydDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtOCJde2dyaWQtY29sdW1uLWVuZDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9'@; put 'InJvd0BtZDpzdGFydC04Il17Z3JpZC1yb3ctc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6ZW5kLTgiXXtncmlkLXJvdy1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtOSJde2dyaWQtY29sdW1uLXN0YXJ0OjkhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0Kj0iY29sQG1kOmVuZC05Il17Z3JpZC1jb2x1bW4tZW5kOjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOnN0YXJ0LTkiXXtncmlkLXJvdy1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtOSJde2dyaWQtcm93LWVuZDo5IWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC0xMCJde2dyaWQtY29sdW1uLXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtMTAiXXtncmlkLWNvbHVtbi1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOnN0YXJ0LTEwIl17Z3JpZC1yb3ctc3Rh'@; put 'cnQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC0xMCJde2dyaWQtcm93LWVuZDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtMTEiXXtncmlkLWNvbHVtbi1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTExIl17'@; put 'Z3JpZC1jb2x1bW4tZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC0xMSJde2dyaWQtcm93LXN0YXJ0OjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtMTEiXXtncmlkLXJvdy1lbmQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1k'@; put 'OnN0YXJ0LTEyIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC0xMiJde2dyaWQtY29sdW1uLWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtMTIiXXtncmlkLXJvdy1zdGFydDoxMiFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXQqPSJyb3dAbWQ6ZW5kLTEyIl17Z3JpZC1yb3ctZW5kOjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC0xMyJde2dyaWQtY29sdW1uLXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtMTMiXXtncmlkLWNvbHVtbi1lbmQ6MTMh'@; put 'aW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOnN0YXJ0LTEzIl17Z3JpZC1yb3ctc3RhcnQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC0xMyJde2dyaWQtcm93LWVuZDoxMyFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6MTIwMHB4KXtbY2RzLWxheW91dCo9'@; put 'ImNvbEBsZzpzdGFydC0xIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTEiXXtncmlkLWNvbHVtbi1lbmQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtMSJde2dyaWQtcm93LXN0YXJ0OjEhaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0Kj0icm93QGxnOmVuZC0xIl17Z3JpZC1yb3ctZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTIiXXtncmlkLWNvbHVtbi1zdGFydDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtMiJde2dyaWQtY29sdW1uLWVuZDoyIWltcG9y'@; put 'dGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC0yIl17Z3JpZC1yb3ctc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTIiXXtncmlkLXJvdy1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6c3RhcnQtMyJde2dyaWQtY29sdW1uLXN0YXJ0'@; put 'OjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC0zIl17Z3JpZC1jb2x1bW4tZW5kOjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTMiXXtncmlkLXJvdy1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzplbmQtMyJde2dyaWQtcm93'@; put 'LWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC00Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTQiXXtncmlkLWNvbHVtbi1lbmQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtNCJd'@; put 'e2dyaWQtcm93LXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC00Il17Z3JpZC1yb3ctZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTUiXXtncmlkLWNvbHVtbi1zdGFydDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpl'@; put 'bmQtNSJde2dyaWQtY29sdW1uLWVuZDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC01Il17Z3JpZC1yb3ctc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTUiXXtncmlkLXJvdy1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xA'@; put 'bGc6c3RhcnQtNiJde2dyaWQtY29sdW1uLXN0YXJ0OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC02Il17Z3JpZC1jb2x1bW4tZW5kOjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTYiXXtncmlkLXJvdy1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dCo9InJvd0BsZzplbmQtNiJde2dyaWQtcm93LWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC03Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTciXXtncmlkLWNvbHVtbi1lbmQ6NyFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtNyJde2dyaWQtcm93LXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC03Il17Z3JpZC1yb3ctZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTgiXXtncmlkLWNvbHVtbi1zdGFydDo4IWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtOCJde2dyaWQtY29sdW1uLWVuZDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC04Il17Z3JpZC1yb3ctc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTgiXXtncmlkLXJvdy1lbmQ6'@; put 'OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6c3RhcnQtOSJde2dyaWQtY29sdW1uLXN0YXJ0OjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC05Il17Z3JpZC1jb2x1bW4tZW5kOjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTkiXXtncmlk'@; put 'LXJvdy1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzplbmQtOSJde2dyaWQtcm93LWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC0xMCJde2dyaWQtY29sdW1uLXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQt'@; put 'MTAiXXtncmlkLWNvbHVtbi1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTEwIl17Z3JpZC1yb3ctc3RhcnQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC0xMCJde2dyaWQtcm93LWVuZDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJj'@; put 'b2xAbGc6c3RhcnQtMTEiXXtncmlkLWNvbHVtbi1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTExIl17Z3JpZC1jb2x1bW4tZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC0xMSJde2dyaWQtcm93LXN0YXJ0OjExIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dCo9InJvd0BsZzplbmQtMTEiXXtncmlkLXJvdy1lbmQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTEyIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC0xMiJde2dyaWQtY29sdW1uLWVu'@; put 'ZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtMTIiXXtncmlkLXJvdy1zdGFydDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTEyIl17Z3JpZC1yb3ctZW5kOjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC0xMyJde2dy'@; put 'aWQtY29sdW1uLXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtMTMiXXtncmlkLWNvbHVtbi1lbmQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTEzIl17Z3JpZC1yb3ctc3RhcnQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93'@; put 'QGxnOmVuZC0xMyJde2dyaWQtcm93LWVuZDoxMyFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC0xIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTEiXXtncmlkLWNvbHVt'@; put 'bi1lbmQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQtMSJde2dyaWQtcm93LXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC0xIl17Z3JpZC1yb3ctZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTIiXXtncmlk'@; put 'LWNvbHVtbi1zdGFydDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtMiJde2dyaWQtY29sdW1uLWVuZDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpzdGFydC0yIl17Z3JpZC1yb3ctc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5k'@; put 'LTIiXXtncmlkLXJvdy1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtMyJde2dyaWQtY29sdW1uLXN0YXJ0OjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOmVuZC0zIl17Z3JpZC1jb2x1bW4tZW5kOjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93'@; put 'QHhsOnN0YXJ0LTMiXXtncmlkLXJvdy1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQtMyJde2dyaWQtcm93LWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC00Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXQqPSJjb2xAeGw6ZW5kLTQiXXtncmlkLWNvbHVtbi1lbmQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQtNCJde2dyaWQtcm93LXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC00Il17Z3JpZC1yb3ctZW5kOjQhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTUiXXtncmlkLWNvbHVtbi1zdGFydDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtNSJde2dyaWQtY29sdW1uLWVuZDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpzdGFydC01Il17Z3JpZC1yb3ctc3RhcnQ6NSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5kLTUiXXtncmlkLXJvdy1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtNiJde2dyaWQtY29sdW1uLXN0YXJ0OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOmVuZC02Il17Z3JpZC1jb2x1bW4tZW5k'@; put 'OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTYiXXtncmlkLXJvdy1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQtNiJde2dyaWQtcm93LWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC03Il17Z3JpZC1jb2x1'@; put 'bW4tc3RhcnQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTciXXtncmlkLWNvbHVtbi1lbmQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQtNyJde2dyaWQtcm93LXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC03Il17'@; put 'Z3JpZC1yb3ctZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTgiXXtncmlkLWNvbHVtbi1zdGFydDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtOCJde2dyaWQtY29sdW1uLWVuZDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpz'@; put 'dGFydC04Il17Z3JpZC1yb3ctc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5kLTgiXXtncmlkLXJvdy1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtOSJde2dyaWQtY29sdW1uLXN0YXJ0OjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0i'@; put 'Y29sQHhsOmVuZC05Il17Z3JpZC1jb2x1bW4tZW5kOjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTkiXXtncmlkLXJvdy1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQtOSJde2dyaWQtcm93LWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dCo9ImNvbEB4bDpzdGFydC0xMCJde2dyaWQtY29sdW1uLXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtMTAiXXtncmlkLWNvbHVtbi1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTEwIl17Z3JpZC1yb3ctc3RhcnQ6MTAhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC0xMCJde2dyaWQtcm93LWVuZDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtMTEiXXtncmlkLWNvbHVtbi1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTExIl17Z3JpZC1jb2x1'@; put 'bW4tZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpzdGFydC0xMSJde2dyaWQtcm93LXN0YXJ0OjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQtMTEiXXtncmlkLXJvdy1lbmQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTEy'@; put 'Il17Z3JpZC1jb2x1bW4tc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOmVuZC0xMiJde2dyaWQtY29sdW1uLWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQtMTIiXXtncmlkLXJvdy1zdGFydDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq'@; put 'PSJyb3dAeGw6ZW5kLTEyIl17Z3JpZC1yb3ctZW5kOjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC0xMyJde2dyaWQtY29sdW1uLXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtMTMiXXtncmlkLWNvbHVtbi1lbmQ6MTMhaW1wb3J0YW50'@; put 'fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTEzIl17Z3JpZC1yb3ctc3RhcnQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC0xMyJde2dyaWQtcm93LWVuZDoxMyFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6NTc2cHgpe1tjZHMtbGF5b3V0fj1ncmlkXVtjZHMt'@; put 'bGF5b3V0Kj0iYWxpZ25AeHM6dG9wIl17YWxpZ24tY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmJvdHRvbSJde2Fs'@; put 'aWduLWNvbnRlbnQ6ZW5kfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6bGVmdCJde2p1c3RpZnktY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNo'@; put 'O2FsaWduLWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFs'@; put 'aWduQHhzOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXXth'@; put 'bGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nk'@; put 'cy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn19QG1lZGlhKG1pbi13aWR0aDo3NjhweCl7W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlv'@; put 'dXQqPSJhbGlnbkBzbTp0b3AiXXthbGlnbi1jb250ZW50OnN0YXJ0fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZW5kfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Ym90dG9tIl17YWxpZ24t'@; put 'Y29udGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpsZWZ0Il17anVzdGlmeS1jb250ZW50OnN0YXJ0fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxp'@; put 'Z24tY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25A'@; put 'c206c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLWNlbnRlciJde2FsaWdu'@; put 'LWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxh'@; put 'eW91dCo9ImFsaWduQHNtOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9'@; put 'ImFsaWduQG1kOnRvcCJde2FsaWduLWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJde2p1c3RpZnktY29udGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXXthbGlnbi1jb250'@; put 'ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1j'@; put 'b250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpz'@; put 'dHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRl'@; put 'bXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0'@; put 'Kj0iYWxpZ25AbWQ6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9fUBtZWRpYShtaW4td2lkdGg6MTIwMHB4KXtbY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFs'@; put 'aWduQGxnOnRvcCJde2FsaWduLWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJde2p1c3RpZnktY29udGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpib3R0b20iXXthbGlnbi1jb250ZW50'@; put 'OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250'@; put 'ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpzdHJl'@; put 'dGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6'@; put 'Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0i'@; put 'YWxpZ25AbGc6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9fUBtZWRpYShtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWdu'@; put 'QHhsOnRvcCJde2FsaWduLWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpyaWdodCJde2p1c3RpZnktY29udGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpib3R0b20iXXthbGlnbi1jb250ZW50OmVu'@; put 'ZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50'@; put 'OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpzdHJldGNo'@; put 'Il17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2Vu'@; put 'dGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxp'@; put 'Z25AeGw6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9fVtjZHMtbGF5b3V0fj0iZGlzcGxheTpub25lIl17ZGlzcGxheTpub25lIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'ImRpc3BsYXk6ZmxleCJde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5OmNvbnRlbnRzIl17ZGlzcGxheTpjb250ZW50cyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5OmJsb2NrIl17ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PSJkaXNwbGF5OmlubGluZSJde2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49ImRpc3BsYXlAc206bm9uZSJde2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QHNtOmZsZXgiXXtkaXNwbGF5OmZs'@; put 'ZXghaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBzbTpibG9jayJde2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBzbTppbmxpbmUiXXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6OTkycHgpe1tjZHMtbGF5b3V0'@; put 'fj0iZGlzcGxheUBtZDpub25lIl17ZGlzcGxheTpub25lIWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXlAbWQ6ZmxleCJde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QG1kOmJsb2NrIl17ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXR+PSJkaXNwbGF5QG1kOmlubGluZSJde2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0fj0iZGlzcGxheUBsZzpub25lIl17ZGlzcGxheTpub25lIWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXlAbGc6ZmxleCJde2Rp'@; put 'c3BsYXk6ZmxleCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QGxnOmJsb2NrIl17ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QGxnOmlubGluZSJde2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDoxNDQwcHgpe1tj'@; put 'ZHMtbGF5b3V0fj0iZGlzcGxheUB4bDpub25lIl17ZGlzcGxheTpub25lIWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXlAeGw6ZmxleCJde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QHhsOmJsb2NrIl17ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QHhsOmlubGluZSJde2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19OjpzbG90dGVkKFtjZHMtbGF5b3V0fj0iZGlzcGxheTpzY3JlZW4tcmVhZGVyLW9ubHkiXSksW2Nkcy1sYXlvdXR+PSJkaXNwbGF5OnNjcmVlbi1yZWFkZXItb25seSJde3Bvc2l0aW9u'@; put 'OmFic29sdXRlIWltcG9ydGFudDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjA7ZGlzcGxheTpi'@; put 'bG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJnYXA6bm9uZSJde2dhcDowfVtjZHMtbGF5b3V0Kj0iZ2FwOnh4eHMiXXtnYXA6dmFyKC0tXDNiNCAxKX1bY2RzLWxheW91dCo9ImdhcDp4eHMiXXtnYXA6dmFyKC0tXDNiNCAyKX1bY2RzLWxheW91dCo9ImdhcDp4cyJde2dhcDp2YXIoLS1c'@; put 'M2I0IDMpfVtjZHMtbGF5b3V0Kj0iZ2FwOnNtIl17Z2FwOnZhcigtLVwzYjQgNCl9W2Nkcy1sYXlvdXQqPSJnYXA6bWQiXXtnYXA6dmFyKC0tXDNiNCA1KX1bY2RzLWxheW91dCo9ImdhcDpsZyJde2dhcDp2YXIoLS1cM2I0IDYpfVtjZHMtbGF5b3V0Kj0iZ2FwOnhsIl17Z2FwOnZhcigtLVwz'@; put 'YjQgNyl9W2Nkcy1sYXlvdXQqPSJnYXA6eHhsIl17Z2FwOnZhcigtLVwzYjQgOCl9W2Nkcy1sYXlvdXQqPSJnYXA6eHh4bCJde2dhcDp2YXIoLS1cM2I0IDkpfVtjZHMtbGF5b3V0fj0icDpub25lIl17cGFkZGluZzowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im06bm9uZSJde21hcmdpbjow'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eHh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtOnh4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOnh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAyKSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtOnh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTp4cyJde21hcmdpbjp2YXIoLS1cM2I0IDMpIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dH49InA6c20iXXtwYWRkaW5nOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTpzbSJde21hcmdpbjp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bWQiXXtwYWRkaW5nOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0fj0ibTptZCJde21hcmdpbjp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bGciXXtwYWRkaW5nOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTpsZyJde21hcmdpbjp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'InA6eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTp4bCJde21hcmdpbjp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im06eHhs'@; put 'Il17bWFyZ2luOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDp4eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im06eHh4bCJde21hcmdpbjp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDpub25l'@; put 'Il17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6bm9uZSJde3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14Onh4eHMiXXtwYWRkaW5nLWxl'@; put 'ZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJwLXg6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGlu'@; put 'Zy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4cyJde3BhZGRpbmctdG9w'@; put 'OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14OnNtIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJwLXk6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLXJp'@; put 'Z2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15Om1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6bGciXXtwYWRkaW5nLWxlZnQ6dmFy'@; put 'KC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTpsZyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0icC14OnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2'@; put 'YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1c'@; put 'M2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDp4eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXR+PSJwLXk6eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14Om5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtLXk6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0fj0ibS15Onh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXg6eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7'@; put 'bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15Onh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4cyJde21hcmdpbi1s'@; put 'ZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49Im0teDpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2'@; put 'YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1'@; put 'KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTps'@; put 'ZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDcpIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dH49Im0teTp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtt'@; put 'YXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXk6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14Onh4eGwiXXttYXJnaW4t'@; put 'bGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXk6eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49InAtdDpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXI6bm9uZSJde3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6bm9uZSJde3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'cC1sOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXQ6eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yOnh4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0fj0icC1iOnh4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDp4eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10Onh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwz'@; put 'YjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yOnh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWw6eHhzIl17'@; put 'cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10OnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXI6eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0icC1iOnhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWw6eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXQ6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dH49InAtcjpzbSJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6c20iXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDpzbSJde3BhZGRpbmctbGVm'@; put 'dDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdDptZCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yOm1kIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYjpt'@; put 'ZCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10OmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJwLXI6bGciXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iOmxnIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWw6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNi'@; put 'NCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXQ6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtcjp4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6eGwiXXtwYWRkaW5n'@; put 'LWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdDp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'InAtcjp4eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iOnh4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dH49InAtdDp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXI6eHh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6eHh4bCJde3BhZGRpbmct'@; put 'Ym90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6bm9uZSJd'@; put 'e21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjpub25lIl17bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDpub25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eHh4cyJde21hcmdpbi10b3A6dmFy'@; put 'KC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjp4eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDp4'@; put 'eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tcjp4eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJtLWI6eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdDp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAz'@; put 'KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWI6eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sOnhzIl17bWFyZ2luLWxl'@; put 'ZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yOnNtIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iOnNt'@; put 'Il17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10Om1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49Im0tcjptZCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjptZCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWw6bWQiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dH49Im0tdDpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6bGciXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWI6bGciXXttYXJnaW4tYm90dG9tOnZh'@; put 'cigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yOnhsIl17bWFy'@; put 'Z2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iOnhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'fj0ibS10Onh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iOnh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWw6eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHh4bCJde21hcmdpbi1yaWdodDp2'@; put 'YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjp4eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9QG1lZGlhKG1pbi13aWR0aDo1'@; put 'NzZweCl7W2Nkcy1sYXlvdXQqPSJnYXBAeHM6bm9uZSJde2dhcDowfVtjZHMtbGF5b3V0Kj0iZ2FwQHhzOnh4eHMiXXtnYXA6dmFyKC0tXDNiNCAxKX1bY2RzLWxheW91dCo9ImdhcEB4czp4eHMiXXtnYXA6dmFyKC0tXDNiNCAyKX1bY2RzLWxheW91dCo9ImdhcEB4czp4cyJde2dhcDp2YXIo'@; put 'LS1cM2I0IDMpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhzOnNtIl17Z2FwOnZhcigtLVwzYjQgNCl9W2Nkcy1sYXlvdXQqPSJnYXBAeHM6bWQiXXtnYXA6dmFyKC0tXDNiNCA1KX1bY2RzLWxheW91dCo9ImdhcEB4czpsZyJde2dhcDp2YXIoLS1cM2I0IDYpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhzOnhs'@; put 'Il17Z2FwOnZhcigtLVwzYjQgNyl9W2Nkcy1sYXlvdXQqPSJnYXBAeHM6eHhsIl17Z2FwOnZhcigtLVwzYjQgOCl9W2Nkcy1sYXlvdXQqPSJnYXBAeHM6eHh4bCJde2dhcDp2YXIoLS1cM2I0IDkpfVtjZHMtbGF5b3V0fj0icEB4czpub25lIl17cGFkZGluZzowIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49Im1AeHM6bm9uZSJde21hcmdpbjowIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeHM6eHh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhzOnh4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PSJwQHhzOnh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhzOnh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeHM6eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0ibUB4czp4cyJde21hcmdpbjp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeHM6c20iXXtwYWRkaW5nOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4czpzbSJde21hcmdpbjp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49InBAeHM6bWQiXXtwYWRkaW5nOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4czptZCJde21hcmdpbjp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeHM6bGciXXtwYWRkaW5nOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0fj0ibUB4czpsZyJde21hcmdpbjp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeHM6eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4czp4bCJde21hcmdpbjp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49InBAeHM6eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeHM6eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4czp4eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDkpIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dH49Im1AeHM6eHh4bCJde21hcmdpbjp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4czpub25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6bm9uZSJd'@; put 'e3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhzOnh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dH49InAteUB4czp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3BhZGRpbmct'@; put 'cmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6eHMiXXtwYWRkaW5n'@; put 'LWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4czp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0fj0icC14QHhzOnNtIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFu'@; put 'dDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4czptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhzOm1k'@; put 'Il17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0'@; put 'IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4czpsZyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhzOnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQg'@; put 'NykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'InAteEB4czp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4czp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRv'@; put 'bTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4czp4eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6eHh4bCJde3BhZGRpbmct'@; put 'dG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhzOm5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6'@; put 'bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0ibS15QHhzOnh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLXJp'@; put 'Z2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhzOnh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czp4cyJde21hcmdpbi1sZWZ0'@; put 'OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4czp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49Im0teEB4czpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4czpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLWJv'@; put 'dHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4czptZCJde21hcmdpbi10b3A6'@; put 'dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49Im0teUB4czpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdpbi1y'@; put 'aWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4czp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czp4eGwiXXttYXJnaW4tbGVm'@; put 'dDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0fj0ibS14QHhzOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7bWFy'@; put 'Z2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4czpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeHM6bm9uZSJde3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeHM6bm9u'@; put 'ZSJde3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhzOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1y'@; put 'QHhzOnh4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOnh4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4czp4eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwz'@; put 'YjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhzOnh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhzOnh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeHM6'@; put 'eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeHM6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhzOnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeHM6eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOnhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeHM6eHMiXXtwYWRk'@; put 'aW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4czpzbSJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1s'@; put 'YXlvdXR+PSJwLWJAeHM6c20iXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4czpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4czptZCJde3BhZGRpbmctdG9wOnZhcigt'@; put 'LVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhzOm1kIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4czptZCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1s'@; put 'QHhzOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhzOmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeHM6bGciXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOmxnIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeHM6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6eGwiXXtwYWRk'@; put 'aW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4czp4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeHM6eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49InAtbEB4czp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4czp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4czp4eGwiXXtwYWRkaW5nLXJpZ2h0OnZh'@; put 'cigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOnh4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhzOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'InAtdEB4czp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeHM6eHh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeHM6eHh4bCJde3BhZGRpbmctYm90dG9tOnZhcigt'@; put 'LVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhzOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeHM6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6bm9uZSJde21h'@; put 'cmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czpub25lIl17bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4czpub25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeHM6eHh4cyJde21hcmdpbi10'@; put 'b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6eHh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czp4eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49Im0tbEB4czp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeHM6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4czp4eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0t'@; put 'XDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeHM6eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4czp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4'@; put 'czp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeHM6eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhzOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeHM6c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOnNtIl17bWFyZ2luLXJpZ2h0'@; put 'OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhzOnNtIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4czpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'bS10QHhzOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4czptZCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czptZCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA1KSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeHM6bWQiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4czpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6bGciXXttYXJnaW4t'@; put 'cmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeHM6bGciXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhzOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlv'@; put 'dXR+PSJtLXRAeHM6eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOnhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhzOnhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0'@; put 'IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4czp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhzOnh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6eHhsIl17'@; put 'bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhzOnh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeHM6eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtLXRAeHM6eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6eHh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czp4eHhsIl17bWFyZ2luLWJv'@; put 'dHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4czp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0Kj0iZ2FwQHNtOm5vbmUiXXtnYXA6MH1bY2RzLWxheW91dCo9'@; put 'ImdhcEBzbTp4eHhzIl17Z2FwOnZhcigtLVwzYjQgMSl9W2Nkcy1sYXlvdXQqPSJnYXBAc206eHhzIl17Z2FwOnZhcigtLVwzYjQgMil9W2Nkcy1sYXlvdXQqPSJnYXBAc206eHMiXXtnYXA6dmFyKC0tXDNiNCAzKX1bY2RzLWxheW91dCo9ImdhcEBzbTpzbSJde2dhcDp2YXIoLS1cM2I0IDQp'@; put 'fVtjZHMtbGF5b3V0Kj0iZ2FwQHNtOm1kIl17Z2FwOnZhcigtLVwzYjQgNSl9W2Nkcy1sYXlvdXQqPSJnYXBAc206bGciXXtnYXA6dmFyKC0tXDNiNCA2KX1bY2RzLWxheW91dCo9ImdhcEBzbTp4bCJde2dhcDp2YXIoLS1cM2I0IDcpfVtjZHMtbGF5b3V0Kj0iZ2FwQHNtOnh4bCJde2dhcDp2'@; put 'YXIoLS1cM2I0IDgpfVtjZHMtbGF5b3V0Kj0iZ2FwQHNtOnh4eGwiXXtnYXA6dmFyKC0tXDNiNCA5KX1bY2RzLWxheW91dH49InBAc206bm9uZSJde3BhZGRpbmc6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHNtOm5vbmUiXXttYXJnaW46MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJw'@; put 'QHNtOnh4eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBzbTp4eHhzIl17bWFyZ2luOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBzbTp4eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0ibUBzbTp4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHNtOnhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206eHMiXXttYXJnaW46dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1s'@; put 'YXlvdXR+PSJwQHNtOnNtIl17cGFkZGluZzp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206c20iXXttYXJnaW46dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHNtOm1kIl17cGFkZGluZzp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49Im1Ac206bWQiXXttYXJnaW46dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHNtOmxnIl17cGFkZGluZzp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206bGciXXttYXJnaW46dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJwQHNtOnhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206eGwiXXttYXJnaW46dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHNtOnh4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtQHNtOnh4bCJde21hcmdpbjp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206eHh4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHNtOnh4eGwiXXttYXJnaW46dmFyKC0tXDNiNCA5KSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAc206bm9uZSJde3BhZGRpbmctbGVmdDowIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHNtOm5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49InAteEBzbTp4eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50'@; put 'O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHNtOnh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHNtOnh4'@; put 'cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHNtOnhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNi'@; put 'NCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBzbTpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0'@; put 'IDQpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHNtOnNtIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PSJwLXhAc206bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBzbTptZCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9t'@; put 'OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHNtOmxnIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206bGciXXtwYWRkaW5nLXRvcDp2'@; put 'YXIoLS1cM2I0IDYpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBzbTp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0fj0icC15QHNtOnhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAc206eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O3Bh'@; put 'ZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAc206eHh4bCJd'@; put 'e3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHNtOnh4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0'@; put 'IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTpub25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHNtOm5vbmUiXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MCFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206eHh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBzbTp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFu'@; put 'dDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHNtOnh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBzbTp4eHMi'@; put 'XXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206c20iXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9y'@; put 'dGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206bWQi'@; put 'XXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206bWQiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA1KSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206bGciXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206bGciXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0'@; put 'YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206eGwi'@; put 'XXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkh'@; put 'aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHNtOnh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFp'@; put 'bXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHNtOnh4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRA'@; put 'c206bm9uZSJde3BhZGRpbmctdG9wOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHNtOm5vbmUiXXtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOm5vbmUiXXtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTpu'@; put 'b25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHNtOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBzbTp4eHhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49InAtYkBzbTp4eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAc206eHh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBzbTp4eHMiXXtwYWRkaW5nLXRv'@; put 'cDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBzbTp4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnh4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0icC1sQHNtOnh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBzbTp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHNtOnhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1c'@; put 'M2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBzbTp4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHNtOnhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHNt'@; put 'OnNtIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206c20iXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnNtIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAc206c20iXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAc206bWQiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBzbTptZCJde3BhZGRpbmct'@; put 'cmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAc206bWQiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49InAtdEBzbTpsZyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHNtOmxnIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBzbTpsZyJde3BhZGRpbmctYm90dG9tOnZhcigt'@; put 'LVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHNtOmxnIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHNtOnhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206'@; put 'eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAc206eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAc206eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206eHhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBzbTp4eGwiXXtwYWRk'@; put 'aW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAc206eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0fj0icC1yQHNtOnh4eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnh4eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTp4eHhsIl17cGFkZGlu'@; put 'Zy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOm5vbmUiXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNtOm5vbmUiXXttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206bm9uZSJde21h'@; put 'cmdpbi1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206bm9uZSJde21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOnh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNtOnh4eHMi'@; put 'XXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206eHh4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206eHh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOnh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAc206eHhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHNtOnh4cyJde21hcmdpbi1i'@; put 'b3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'fj0ibS1yQHNtOnhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHNtOnhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTp4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQg'@; put 'MykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOnNtIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBzbTpzbSJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBzbTpzbSJde21h'@; put 'cmdpbi1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206c20iXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBzbTptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1s'@; put 'YXlvdXR+PSJtLXJAc206bWQiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206bWQiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHNtOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0t'@; put 'XDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206bGciXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNtOmxnIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHNtOmxn'@; put 'Il17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49Im0tckBzbTp4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBzbTp4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206eGwiXXttYXJnaW4tbGVmdDp2'@; put 'YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBzbTp4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNtOnh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0t'@; put 'YkBzbTp4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHNtOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOnh4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOSkh'@; put 'aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNtOnh4eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206eHh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206eHh4'@; put 'bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dCo9ImdhcEBtZDpub25lIl17Z2FwOjB9W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6eHh4cyJde2dhcDp2YXIoLS1cM2I0IDEpfVtjZHMtbGF5b3V0Kj0iZ2FwQG1k'@; put 'Onh4cyJde2dhcDp2YXIoLS1cM2I0IDIpfVtjZHMtbGF5b3V0Kj0iZ2FwQG1kOnhzIl17Z2FwOnZhcigtLVwzYjQgMyl9W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6c20iXXtnYXA6dmFyKC0tXDNiNCA0KX1bY2RzLWxheW91dCo9ImdhcEBtZDptZCJde2dhcDp2YXIoLS1cM2I0IDUpfVtjZHMtbGF5'@; put 'b3V0Kj0iZ2FwQG1kOmxnIl17Z2FwOnZhcigtLVwzYjQgNil9W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6eGwiXXtnYXA6dmFyKC0tXDNiNCA3KX1bY2RzLWxheW91dCo9ImdhcEBtZDp4eGwiXXtnYXA6dmFyKC0tXDNiNCA4KX1bY2RzLWxheW91dCo9ImdhcEBtZDp4eHhsIl17Z2FwOnZhcigtLVwz'@; put 'YjQgOSl9W2Nkcy1sYXlvdXR+PSJwQG1kOm5vbmUiXXtwYWRkaW5nOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDpub25lIl17bWFyZ2luOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dH49Im1AbWQ6eHh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAbWQ6eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbWQ6eHhzIl17bWFyZ2luOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0fj0icEBtZDp4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOnhzIl17bWFyZ2luOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDpzbSJde3BhZGRpbmc6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJtQG1kOnNtIl17bWFyZ2luOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDptZCJde3BhZGRpbmc6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOm1kIl17bWFyZ2luOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0fj0icEBtZDpsZyJde3BhZGRpbmc6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOmxnIl17bWFyZ2luOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtQG1kOnhsIl17bWFyZ2luOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDp4eGwiXXttYXJnaW46dmFyKC0tXDNiNCA4KSFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJwQG1kOnh4eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDp4eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBv'@; put 'cnRhbnQ7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbWQ6eHh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDEp'@; put 'IWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1kOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'InAteEBtZDp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDp4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRv'@; put 'bTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBtZDp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1kOnhzIl17cGFkZGluZy10b3A6'@; put 'dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbWQ6c20iXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49InAteUBtZDpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O3Bh'@; put 'ZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAbWQ6bWQiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBtZDpsZyJde3Bh'@; put 'ZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1kOmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA2KSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbWQ6eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1w'@; put 'b3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15'@; put 'QG1kOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2'@; put 'YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbWQ6bm9uZSJde21hcmdpbi1sZWZ0'@; put 'OjAhaW1wb3J0YW50O21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBtZDpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnh4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0'@; put 'IDEpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbWQ6eHh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'Im0teEBtZDp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbWQ6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZh'@; put 'cigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1c'@; put 'M2I0IDMpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'fj0ibS15QG1kOnNtIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZh'@; put 'cigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0t'@; put 'XDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOmxnIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'fj0ibS14QG1kOnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZh'@; put 'cigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBtZDp4eGwiXXttYXJnaW4tdG9wOnZhcigt'@; put 'LVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbWQ6eHh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49Im0teUBtZDp4eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOm5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBt'@; put 'ZDpub25lIl17cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDpub25lIl17cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbWQ6bm9uZSJde3BhZGRpbmctbGVmdDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBtZDp4'@; put 'eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbWQ6eHh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6eHh4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMSkh'@; put 'aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQG1kOnh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbWQ6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbWQ6eHhzIl17'@; put 'cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDp4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBtZDp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJwLXRAbWQ6eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBtZDp4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6eHMiXXtwYWRkaW5nLWJv'@; put 'dHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBtZDp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBtZDpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0'@; put 'fj0icC1yQG1kOnNtIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDpzbSJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQG1kOnNtIl17cGFkZGluZy1sZWZ0OnZhcigtLVwz'@; put 'YjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOm1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbWQ6bWQiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQG1kOm1k'@; put 'Il17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbWQ6bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbWQ6bGciXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dH49InAtckBtZDpsZyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6bGciXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBtZDpsZyJde3BhZGRpbmct'@; put 'bGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBtZDp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQG1kOnhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dH49InAtYkBtZDp4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQG1kOnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwz'@; put 'YjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQG1kOnh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxA'@; put 'bWQ6eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOnh4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBtZDp4eHhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDkp'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDp4eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbWQ6eHh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDpu'@; put 'b25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDpub25lIl17bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQG1kOm5vbmUiXXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOm5vbmUiXXtt'@; put 'YXJnaW4tbGVmdDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4eHhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'bS1iQG1kOnh4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnh4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQg'@; put 'MikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQG1kOnh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBtZDp4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnh4'@; put 'cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QG1kOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49Im0tYkBtZDp4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbWQ6eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDpzbSJde21hcmdpbi10b3A6dmFy'@; put 'KC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbWQ6c20iXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbWQ6c20iXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1s'@; put 'QG1kOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAbWQ6bWQiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQG1kOm1kIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0fj0ibS1iQG1kOm1kIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBtZDptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QG1kOmxnIl17bWFyZ2luLXRv'@; put 'cDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDpsZyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBtZDpsZyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PSJtLWxAbWQ6bGciXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbWQ6eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA3KSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbWQ6eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAbWQ6eHhsIl17bWFy'@; put 'Z2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbWQ6eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49Im0tbEBtZDp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4eHhsIl17bWFyZ2luLXJpZ2h0OnZh'@; put 'cigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQG1kOnh4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH19QG1lZGlhKG1pbi13'@; put 'aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0Kj0iZ2FwQGxnOm5vbmUiXXtnYXA6MH1bY2RzLWxheW91dCo9ImdhcEBsZzp4eHhzIl17Z2FwOnZhcigtLVwzYjQgMSl9W2Nkcy1sYXlvdXQqPSJnYXBAbGc6eHhzIl17Z2FwOnZhcigtLVwzYjQgMil9W2Nkcy1sYXlvdXQqPSJnYXBAbGc6eHMiXXtn'@; put 'YXA6dmFyKC0tXDNiNCAzKX1bY2RzLWxheW91dCo9ImdhcEBsZzpzbSJde2dhcDp2YXIoLS1cM2I0IDQpfVtjZHMtbGF5b3V0Kj0iZ2FwQGxnOm1kIl17Z2FwOnZhcigtLVwzYjQgNSl9W2Nkcy1sYXlvdXQqPSJnYXBAbGc6bGciXXtnYXA6dmFyKC0tXDNiNCA2KX1bY2RzLWxheW91dCo9Imdh'@; put 'cEBsZzp4bCJde2dhcDp2YXIoLS1cM2I0IDcpfVtjZHMtbGF5b3V0Kj0iZ2FwQGxnOnh4bCJde2dhcDp2YXIoLS1cM2I0IDgpfVtjZHMtbGF5b3V0Kj0iZ2FwQGxnOnh4eGwiXXtnYXA6dmFyKC0tXDNiNCA5KX1bY2RzLWxheW91dH49InBAbGc6bm9uZSJde3BhZGRpbmc6MCFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtQGxnOm5vbmUiXXttYXJnaW46MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQGxnOnh4eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBsZzp4eHhzIl17bWFyZ2luOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMt'@; put 'bGF5b3V0fj0icEBsZzp4eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBsZzp4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQGxnOnhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49Im1AbGc6eHMiXXttYXJnaW46dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQGxnOnNtIl17cGFkZGluZzp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbGc6c20iXXttYXJnaW46dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJwQGxnOm1kIl17cGFkZGluZzp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbGc6bWQiXXttYXJnaW46dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQGxnOmxnIl17cGFkZGluZzp2YXIoLS1cM2I0IDYpIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dH49Im1AbGc6bGciXXttYXJnaW46dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQGxnOnhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbGc6eGwiXXttYXJnaW46dmFyKC0tXDNiNCA3KSFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJwQGxnOnh4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOnh4bCJde21hcmdpbjp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAbGc6eHh4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA5KSFp'@; put 'bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOnh4eGwiXXttYXJnaW46dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbGc6bm9uZSJde3BhZGRpbmctbGVmdDowIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxn'@; put 'Om5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBsZzp4eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJwLXlAbGc6eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOnh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDtw'@; put 'YWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOnh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOnhzIl17'@; put 'cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAbGc6eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDMp'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBsZzpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOnNtIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA0KSFp'@; put 'bXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbGc6bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAt'@; put 'eUBsZzptZCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOmxnIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFy'@; put 'KC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAbGc6bGciXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBsZzp4bCJde3BhZGRpbmctbGVmdDp2YXIo'@; put 'LS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOnhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1s'@; put 'YXlvdXR+PSJwLXhAbGc6eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAbGc6eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGlu'@; put 'Zy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbGc6eHh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOnh4eGwiXXtw'@; put 'YWRkaW5nLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBsZzpub25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'bS15QGxnOm5vbmUiXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6eHh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1b'@; put 'Y2RzLWxheW91dH49Im0teUBsZzp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOnh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O21h'@; put 'cmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBsZzp4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6eHMiXXttYXJn'@; put 'aW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6c20iXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21h'@; put 'cmdpbi1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6bWQiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6bWQiXXttYXJn'@; put 'aW4tdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6bGciXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6bGciXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtt'@; put 'YXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6eHhsIl17bWFy'@; put 'Z2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOnh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9y'@; put 'dGFudH1bY2RzLWxheW91dH49Im0teEBsZzp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOnh4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0'@; put 'YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbGc6bm9uZSJde3BhZGRpbmctdG9wOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOm5vbmUiXXtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1i'@; put 'QGxnOm5vbmUiXXtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBsZzpub25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dH49InAtckBsZzp4eHhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzp4eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6eHh4cyJde3BhZGRpbmctbGVmdDp2'@; put 'YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBsZzp4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBsZzp4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'cC1iQGxnOnh4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQGxnOnh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBsZzp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQg'@; put 'MykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOnhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzp4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQGxnOnhz'@; put 'Il17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOnNtIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbGc6c20iXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50'@; put 'fVtjZHMtbGF5b3V0fj0icC1iQGxnOnNtIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6c20iXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbGc6bWQiXXtwYWRkaW5nLXRv'@; put 'cDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBsZzptZCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbGc6bWQiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dH49InAtbEBsZzptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBsZzpsZyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOmxnIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0'@; put 'IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzpsZyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQGxnOmxnIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOnhs'@; put 'Il17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbGc6eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQGxnOnhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRh'@; put 'bnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbGc6eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbGc6eHhsIl17cGFkZGluZy1y'@; put 'aWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzp4eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBsZzp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1s'@; put 'YXlvdXR+PSJwLXRAbGc6eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOnh4eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQGxnOnh4eGwiXXtwYWRkaW5nLWJvdHRv'@; put 'bTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBsZzp4eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QGxnOm5vbmUiXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOm5v'@; put 'bmUiXXttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6bm9uZSJde21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6bm9uZSJde21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QGxnOnh4eHMiXXtt'@; put 'YXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOnh4eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6eHh4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtLWxAbGc6eHh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QGxnOnh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbGc6eHhzIl17bWFyZ2luLXJpZ2h0'@; put 'OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOnh4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PSJtLXRAbGc6eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOnhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOnhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMp'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBsZzp4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QGxnOnNtIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzpzbSJde21hcmdp'@; put 'bi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBsZzpzbSJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6c20iXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49Im0tdEBsZzptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbGc6bWQiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6bWQiXXttYXJnaW4tYm90dG9tOnZhcigtLVwz'@; put 'YjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQGxnOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAbGc6bGciXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOmxnIl17'@; put 'bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOmxnIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBsZzpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtj'@; put 'ZHMtbGF5b3V0fj0ibS10QGxnOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzp4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBsZzp4bCJde21hcmdpbi1ib3R0b206dmFy'@; put 'KC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBsZzp4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxn'@; put 'Onh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBsZzp4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQGxnOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QGxnOnh4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOnh4eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6eHh4bCJde21h'@; put 'cmdpbi1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6eHh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXQqPSJnYXBAeGw6bm9uZSJde2dhcDowfVtjZHMt'@; put 'bGF5b3V0Kj0iZ2FwQHhsOnh4eHMiXXtnYXA6dmFyKC0tXDNiNCAxKX1bY2RzLWxheW91dCo9ImdhcEB4bDp4eHMiXXtnYXA6dmFyKC0tXDNiNCAyKX1bY2RzLWxheW91dCo9ImdhcEB4bDp4cyJde2dhcDp2YXIoLS1cM2I0IDMpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhsOnNtIl17Z2FwOnZhcigt'@; put 'LVwzYjQgNCl9W2Nkcy1sYXlvdXQqPSJnYXBAeGw6bWQiXXtnYXA6dmFyKC0tXDNiNCA1KX1bY2RzLWxheW91dCo9ImdhcEB4bDpsZyJde2dhcDp2YXIoLS1cM2I0IDYpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhsOnhsIl17Z2FwOnZhcigtLVwzYjQgNyl9W2Nkcy1sYXlvdXQqPSJnYXBAeGw6eHhs'@; put 'Il17Z2FwOnZhcigtLVwzYjQgOCl9W2Nkcy1sYXlvdXQqPSJnYXBAeGw6eHh4bCJde2dhcDp2YXIoLS1cM2I0IDkpfVtjZHMtbGF5b3V0fj0icEB4bDpub25lIl17cGFkZGluZzowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeGw6bm9uZSJde21hcmdpbjowIWltcG9ydGFudH1bY2RzLWxh'@; put 'eW91dH49InBAeGw6eHh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhsOnh4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhsOnh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJtQHhsOnh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeGw6eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDp4cyJde21hcmdpbjp2YXIoLS1cM2I0IDMpIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dH49InBAeGw6c20iXXtwYWRkaW5nOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDpzbSJde21hcmdpbjp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeGw6bWQiXXtwYWRkaW5nOnZhcigtLVwzYjQgNSkhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0fj0ibUB4bDptZCJde21hcmdpbjp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeGw6bGciXXtwYWRkaW5nOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDpsZyJde21hcmdpbjp2YXIoLS1cM2I0IDYpIWltcG9y'@; put 'dGFudH1bY2RzLWxheW91dH49InBAeGw6eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDp4bCJde21hcmdpbjp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeGw6eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDgpIWlt'@; put 'cG9ydGFudH1bY2RzLWxheW91dH49Im1AeGw6eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDp4eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeGw6eHh4bCJde21hcmdpbjp2YXIoLS1cM2I0'@; put 'IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4bDpub25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeGw6bm9uZSJde3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOnh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFp'@; put 'bXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeGw6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJw'@; put 'LXlAeGw6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeGw6eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2'@; put 'YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOnNtIl17cGFkZGluZy1sZWZ0OnZh'@; put 'cigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeGw6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2Rz'@; put 'LWxheW91dH49InAteEB4bDptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhsOm1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGlu'@; put 'Zy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeGw6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDpsZyJde3BhZGRp'@; put 'bmctdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeGw6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4bDp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBv'@; put 'cnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4'@; put 'bDp4eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeGw6eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZh'@; put 'cigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOm5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeGw6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTow'@; put 'IWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhsOnh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkh'@; put 'aW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeGw6eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15'@; put 'QHhsOnh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDp4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1c'@; put 'M2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQg'@; put 'NCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0t'@; put 'eEB4bDptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1c'@; put 'M2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2'@; put 'KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0t'@; put 'eUB4bDp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0t'@; put 'XDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeGw6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1c'@; put 'M2I0IDkpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeGw6eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91'@; put 'dH49InAtdEB4bDpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6bm9uZSJde3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6bm9uZSJde3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i'@; put 'cC1sQHhsOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeGw6eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhsOnh4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0'@; put 'YW50fVtjZHMtbGF5b3V0fj0icC1iQHhsOnh4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4bDp4eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhsOnh4cyJde3Bh'@; put 'ZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhsOnh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9'@; put 'W2Nkcy1sYXlvdXR+PSJwLWxAeGw6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhsOnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6eHMiXXtwYWRkaW5nLXJpZ2h0'@; put 'OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhsOnhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeGw6eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+'@; put 'PSJwLXRAeGw6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4bDpzbSJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6c20iXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0'@; put 'IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4bDpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4bDptZCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhsOm1kIl17'@; put 'cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4bDptZCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhsOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50'@; put 'fVtjZHMtbGF5b3V0fj0icC10QHhsOmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6bGciXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhsOmxnIl17cGFkZGluZy1ib3R0'@; put 'b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeGw6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeGw6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49'@; put 'InAtckB4bDp4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4bDp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0'@; put 'IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4bDp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4bDp4eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhsOnh4'@; put 'bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhsOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4bDp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBv'@; put 'cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6eHh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6eHh4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhsOnh4eGwi'@; put 'XXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeGw6bm9uZSJde21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDpu'@; put 'b25lIl17bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDpub25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6eHh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJA'@; put 'eGw6eHh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDp4eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAx'@; put 'KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4bDp4eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeGw6eHhzIl17'@; put 'bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nk'@; put 'cy1sYXlvdXR+PSJtLXJAeGw6eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeGw6eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOnhzIl17bWFyZ2luLWxlZnQ6dmFy'@; put 'KC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhsOnNtIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhs'@; put 'OnNtIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhsOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFu'@; put 'dH1bY2RzLWxheW91dH49Im0tckB4bDptZCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDptZCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeGw6bWQiXXttYXJnaW4tbGVm'@; put 'dDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeGw6bGciXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJt'@; put 'LWJAeGw6bGciXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhsOnhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhsOnhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDp4bCJde21hcmdp'@; put 'bi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhsOnh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeGw6eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5'@; put 'b3V0fj0ibS1iQHhsOnh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeGw6eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6eHh4bCJde21hcmdpbi10b3A6dmFyKC0t'@; put 'XDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeGw6eHh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDp4eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0t'@; put 'bEB4bDp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9fVtjZHMtbGF5b3V0PW5vLXNjcm9sbGluZ117b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH1bY2RzLWxheW91dH49ImNvbnRhaW5lcjpmaWxsIl0sW2Nkcy1sYXlvdXR+PWZpbGxde3dpZHRoOjEwMCUhaW1w'@; put 'b3J0YW50fVtjZHMtbGF5b3V0fj0iY29udGFpbmVyOmNlbnRlciJde21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99W2Nkcy1sYXlvdXR+PSJjb250YWluZXI6eHMiXXt3aWR0aDoxMDAlO21heC13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC13aWR0aC14cyl9W2Nkcy1s'@; put 'YXlvdXR+PSJjb250YWluZXI6c20iXXt3aWR0aDoxMDAlO21heC13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC13aWR0aC1zbSl9W2Nkcy1sYXlvdXR+PSJjb250YWluZXI6bWQiXXt3aWR0aDoxMDAlO21heC13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC13aWR0aC1tZCl9W2Nk'@; put 'cy1sYXlvdXR+PSJjb250YWluZXI6bGciXXt3aWR0aDoxMDAlO21heC13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC13aWR0aC1sZyl9W2Nkcy1sYXlvdXR+PSJjb250YWluZXI6eGwiXXt3aWR0aDoxMDAlO21heC13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC13aWR0aC14bCl9'@; put 'Kiw6YWZ0ZXIsOmJlZm9yZSw6aG9zdHtib3gtc2l6aW5nOmJvcmRlci1ib3h9W2Nkcy10aGVtZX49ZGFya117LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMDp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNv'@; put 'bG9yLWNvbnN0cnVjdGlvbi0zMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsYWNrKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWdsb2Jh'@; put 'bC10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTIwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItMzAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBo'@; put 'eS1saW5rLWNvbG9yLXZpc2l0ZWQtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci0yMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQ1MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlz'@; put 'YWJsZWQtYnV0dG9uOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTkwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1pbmZvLWhvdmVyOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0yMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1Y2Nlc3MtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXdhcm5pbmctaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15'@; put 'ZWxsb3ctNjAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kYW5nZXItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNDAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1uZXV0cmFsLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMt'@; put 'Z2xvYmFsLXR5cG9ncmFwaHktbGluay1vbi1jb2xvcmJnOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29s'@; put 'b3ItMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMDp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRl'@; put 'KTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkLWJ1dHRvbjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi05MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlh'@; put 'cy10eXBvZ3JhcGh5LWluZm8taG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTIwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWNjZXNzLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNDAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXdhcm5pbmctaG92ZXI6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctNjAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC00MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbmV1dHJhbC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNv'@; put 'bnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1vbi1jb2xvcmJnOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNDAwKTst'@; put 'LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTIwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMzAwKTstLWNkcy1hbGlhcy10eXBv'@; put 'Z3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0yMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtYXBwLWJh'@; put 'Y2tncm91bmQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZHJvcC1iYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0zMDApOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXIt'@; put 'YmFja2dyb3VuZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDApOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWlu'@; put 'ZXItYmFja2dyb3VuZC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1kYXJrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTExMDApOy0tY2RzLWFsaWFzLW9iamVj'@; put 'dC1jb250YWluZXItYmFja2dyb3VuZC1pbnZlcnNlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2UtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAp'@; put 'Oy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1pbnZlcnNlLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFj'@; put 'ayk7LS1jZHMtYWxpYXMtb2JqZWN0LW92ZXJsYXktYmFja2dyb3VuZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlh'@; put 'cy1vYmplY3QtYm9yZGVyLWNvbG9yLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNDAwKTstLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LXNoYWRvdy0xMDA6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikgMCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMzAwKTstLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTIwMDowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkgdmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS0yKSAwIHZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0yMDApOy0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMzAwOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIDAgdmFyKC0tY2RzLWFsaWFzLW9i'@; put 'amVjdC1vcGFjaXR5LTEwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29u'@; put 'c3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLXNlbGVjdGVkOnZhcigtLWNkcy1nbG9iYWwtY29s'@; put 'b3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQ6dmFyKC0tY2RzLWdsb2Jh'@; put 'bC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmU6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3Vu'@; put 'ZC1zZWxlY3RlZC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00'@; put 'MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTExMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hh'@; put 'ZGUtc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zaGFkZS1zZWxlY3RlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLXNlbGVjdGVkLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1j'@; put 'b25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUw'@; put 'MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tY2xpY2s6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwMCk7LS1jZHMtYWxp'@; put 'YXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tc2Vjb25kYXJ5LWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0xMDAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTQwMCk7LS1jZHMtYWxp'@; put 'YXMtb2JqZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3MtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTYwMCk7LS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3Mtc2Vjb25kYXJ5LWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXdhcm5pbmctaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctMzAwKTstLWNkcy1hbGlh'@; put 'cy1vYmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctNTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy01MDApOy0tY2RzLWFsaWFzLW9i'@; put 'amVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy0xMDAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTQwMCk7LS1jZHMtYWxpYXMt'@; put 'b2JqZWN0LWludGVyYWN0aW9uLWRhbmdlci1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVy'@; put 'YWN0aW9uLWRhbmdlci1zZWNvbmRhcnktaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNDAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDApOy0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1uZXV0cmFsLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbnZlcnNlLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0'@; put 'aW9uLTcwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWludmVyc2UtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWludmVyc2UtY2xpY2s6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1j'@; put 'b25zdHJ1Y3Rpb24tODAwKTstLWNkcy1hbGlhcy1zdGF0dXMtdGludDp0cmFuc3BhcmVudDstLWNkcy1hbGlhcy1zdGF0dXMtaW5mbzp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNDAwKTstLWNkcy1hbGlhcy1zdGF0dXMtaW5mby10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1'@; put 'ZS04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTAwKTstLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcy10aW50OnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tODAwKTstLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcy1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTYwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmc6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS00MDApOy0tY2Rz'@; put 'LWFsaWFzLXN0YXR1cy13YXJuaW5nLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS05MDApOy0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTAwKTstLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrOnZhcigt'@; put 'LWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNjAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlci10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTkwMCk7LS1jZHMtYWxpYXMtc3Rh'@; put 'dHVzLWRhbmdlci1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC02MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXItZGFyazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC05MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29u'@; put 'c3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTQwMCk7LS1j'@; put 'ZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJs'@; put 'ZWQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWdyYXk6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWdyYXktdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNv'@; put 'bG9yLWNvbnN0cnVjdGlvbi0xMDAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWdyYXktc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTMwMCk7LS1jZHMtYWxpYXMt'@; put 'dXRpbGl0eS1ibHVlLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktYmx1ZS1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMjAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWxpZ2h0LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1saWdodC1ibHVlLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktbGlnaHQtYmx1ZS1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTAwKTstLWNkcy1hbGlh'@; put 'cy11dGlsaXR5LWRhcmstYmx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTIwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1kYXJrLWJsdWUtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZGFyay1ibHVlLXNoYWRlOnZhcigt'@; put 'LWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtNTApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JlZW46dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JlZW4tdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTEwMDApOy0tY2RzLWFsaWFz'@; put 'LXV0aWxpdHktZ3JlZW4tc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0yMDApOy0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93OnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNDAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXllbGxvdy10aW50OnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3Itb2NocmUtOTAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXllbGxvdy1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTMwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXJlZC10'@; put 'aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktcmVkLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTIwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtNjAw'@; put 'KTstLWNkcy1hbGlhcy11dGlsaXR5LXRhbmdlcmluZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdGFuZ2VyaW5lLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTQwMCk7LS1jZHMtYWxpYXMtdXRp'@; put 'bGl0eS12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNDAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXZpb2xldC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdmlvbGV0LXNoYWRlOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItdmlvbGV0LTIwMCk7LS1jZHMtYWxpYXMtdml6LWJvcmRlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS01MCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNDAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xLWJs'@; put 'dWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTItdmlvbGV0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTQwMCk7'@; put 'LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMzp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtMjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0zLWFxdWE6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTIwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNDp2YXIoLS1jZHMtZ2xvYmFs'@; put 'LWNvbG9yLWxhdmVuZGVyLTQwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNC1saW1lOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGltZS0zMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTQwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVy'@; put 'YWwtNS1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0yMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTY6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTQwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNi1hcXVhOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MCk7'@; put 'LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNzp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTMwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNy12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC04OnZhcigtLWNk'@; put 'cy1nbG9iYWwtY29sb3ItYXF1YS00MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTgtbGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtMTAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC05OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGltZS0yMDApOy0tY2RzLWFsaWFzLXZpei1n'@; put 'ZW5lcmFsLTktYmx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0zMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTEwLWxpbWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1s'@; put 'aW1lLTUwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNDAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMS1hcXVhOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS00MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTEyOnZhcigt'@; put 'LWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMTAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMi12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNTApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTEzOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTQwMCk7LS1jZHMt'@; put 'YWxpYXMtdml6LWdlbmVyYWwtMTMtdmlvbGV0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTMwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0yMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTE0LWJsdWU6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1jb2xvci1ibHVlLTUwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstMzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNS1hcXVhOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0zMDApOy0tY2RzLWFsaWFzLXZpei1n'@; put 'ZW5lcmFsLTE2OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNi1saW1lOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGltZS0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1uZXV0cmFsOnZhcigtLWNkcy1nbG9iYWwtY29sb3It'@; put 'Y29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LXN1Y2Nlc3M6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi01MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS13YXJuaW5nOnZhcigtLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTMwMCk7LS1jZHMtYWxpYXMt'@; put 'dml6LXNldmVyaXR5LXdhcm5pbmctbGlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctMzAwKTstLWNkcy1hbGlhcy12aXotc2V2ZXJpdHktaW1tZWRpYXRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LWNyaXRp'@; put 'Y2FsOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LWZyZWUtc3BhY2UtZmlsbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNTA6dmFyKC0tY2RzLWds'@; put 'b2JhbC1jb2xvci1ibHVlLTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2Rz'@; put 'LWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUt'@; put 'NTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3It'@; put 'Ymx1ZS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0xMDApOy0tY2RzLWFsaWFzLXZpei1z'@; put 'ZXF1ZW50aWFsLWJsdWUtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC01MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtMTAwOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTkwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xv'@; put 'ci12aW9sZXQtNzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MDApOy0tY2Rz'@; put 'LWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTMwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRp'@; put 'YWwtdmlvbGV0LTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtMTAwMDp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hy'@; put 'ZS05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNzAwKTstLWNkcy1hbGlhcy12aXot'@; put 'c2VxdWVudGlhbC1vY2hyZS00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTUwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNjAwOnZh'@; put 'cigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9j'@; put 'aHJlLTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS0xMDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTApOy0tY2RzLWFsaWFzLXZp'@; put 'ei1zZXF1ZW50aWFsLWFxdWEtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMjAwOnZhcigt'@; put 'LWNkcy1nbG9iYWwtY29sb3ItYXF1YS04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS02MDAp'@; put 'Oy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS00MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFs'@; put 'LWFxdWEtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtOTAwOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItYXF1YS0xMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMTAwMCk7LS1jZHMtYWxp'@; put 'YXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tOTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVu'@; put 'LTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi01MDA6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1ncmVlbi01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMzAwKTstLWNkcy1h'@; put 'bGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3Jl'@; put 'ZW4tMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y'@; put 'LXJlZC05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVl'@; put 'bnRpYWwtcmVkLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNjAwOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItcmVkLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMjAwKTstLWNkcy1hbGlhcy12aXot'@; put 'c2VxdWVudGlhbC1yZWQtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTApfTpyb290ey0tY2RzLWdsb2JhbC1iYXNlOjIwfWh0bWx7Zm9udC1mYW1pbHk6c2Fu'@; put 'cy1zZXJpZjtsaW5lLWhlaWdodDoxLjE1Oy1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCV9Ym9keXttYXJnaW46MH1hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixtYWluLG1lbnUsbmF2LHNl'@; put 'Y3Rpb24sc3VtbWFyeXtkaXNwbGF5OmJsb2NrfWF1ZGlvLGNhbnZhcyxwcm9ncmVzcyx2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9ja31hdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lO2hlaWdodDowfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXRlbXBsYXRlLFto'@; put 'aWRkZW5de2Rpc3BsYXk6bm9uZX1he2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDpvYmplY3RzfWE6YWN0aXZlLGE6aG92ZXJ7b3V0bGluZS13aWR0aDowfWFiYnJbdGl0bGVde2JvcmRlci1ib3R0b206bm9uZTt0ZXh0LWRlY29yYXRp'@; put 'b246dW5kZXJsaW5lOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9ZGZue2ZvbnQtc3R5bGU6aXRhbGlj'@; put 'fWgxe2ZvbnQtc2l6ZToyZW07bWFyZ2luOi42N2VtIDB9bWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmZjA7Y29sb3I6IzAwMH1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2Vs'@; put 'aW5lfXN1Yntib3R0b206LS4yNWVtfXN1cHt0b3A6LS41ZW19aW1ne2JvcmRlci1zdHlsZTpub25lfXN2Zzpub3QoOnJvb3Qpe292ZXJmbG93OmhpZGRlbn1jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjFlbX1maWd1cmV7bWFyZ2luOjFlbSA0MHB4'@; put 'fWhye2JveC1zaXppbmc6Y29udGVudC1ib3g7aGVpZ2h0OjA7b3ZlcmZsb3c6dmlzaWJsZX1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2ZvbnQ6aW5oZXJpdDttYXJnaW46MH10ZXh0YXJlYXtsaW5lLWhlaWdodDoxLjE1fW9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OjcwMH1i'@; put 'dXR0b24saW5wdXR7b3ZlcmZsb3c6dmlzaWJsZX1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLGh0bWwgW3R5cGU9YnV0dG9uXSxbdHlwZT1yZXNldF0sW3R5cGU9c3VibWl0XXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9ufWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5l'@; put 'cixbdHlwZT1idXR0b25dOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPXJlc2V0XTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1zdWJtaXRdOjotbW96LWZvY3VzLWlubmVye2JvcmRlci1zdHlsZTpub25lO3BhZGRpbmc6MH1maWVsZHNldHtib3JkZXI6MXB4IHNvbGlkIHNpbHZlcjttYXJnaW46'@; put 'MCAycHg7cGFkZGluZzouMzVlbSAuNjI1ZW0gLjc1ZW19bGVnZW5ke2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2Rpc3BsYXk6dGFibGU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzowO3doaXRlLXNwYWNlOm5vcm1hbH10ZXh0YXJlYXtvdmVyZmxvdzphdXRvfVt0eXBlPWNo'@; put 'ZWNrYm94XSxbdHlwZT1yYWRpb117Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH1bdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFt0eXBlPW51bWJlcl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Vi'@; put 'a2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1m'@; put 'aWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9OnJvb3R7LS1jbHItY29sb3ItbmV1dHJhbC0wOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1uZXV0cmFsLTUwOmhzbCgxOTgsIDAlLCA5OCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwt'@; put 'MTAwOmhzbCgxOTgsIDAlLCA5NSUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwOmhzbCgxOTgsIDAlLCA5MSUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwOmhzbCgxOTgsIDAlLCA4NyUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwOmhzbCgxOTgsIDAlLCA4MCUpOy0tY2xyLWNvbG9yLW5ldXRy'@; put 'YWwtNTAwOmhzbCgxOTgsIDAlLCA3MCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwOmhzbCgxOTgsIDAlLCA1NSUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwOmhzbCgxOTgsIDAlLCA0MCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtODAwOmhzbCgxOTgsIDAlLCAyNyUpOy0tY2xyLWNvbG9yLW5l'@; put 'dXRyYWwtOTAwOmhzbCgxOTgsIDAlLCAyMCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNTA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xv'@; put 'ci1vbi1uZXV0cmFsLTEwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMjAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tbmV1dHJhbC0zMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTQwMDpoc2woMTk4LCAwJSwgMCUp'@; put 'Oy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNTAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tbmV1dHJhbC02MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNzAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTgwMDpo'@; put 'c2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24tbmV1dHJhbC05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMTAwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3ItYWN0aW9uLTUwOmhzbCgxOTgsIDgzJSwgOTQlKTstLWNsci1jb2xvci1h'@; put 'Y3Rpb24tMTAwOmhzbCgxOTgsIDgxJSwgODglKTstLWNsci1jb2xvci1hY3Rpb24tMjAwOmhzbCgxOTgsIDc4JSwgNzglKTstLWNsci1jb2xvci1hY3Rpb24tMzAwOmhzbCgxOTgsIDY5JSwgNjklKTstLWNsci1jb2xvci1hY3Rpb24tNDAwOmhzbCgxOTgsIDY2JSwgNTclKTstLWNsci1jb2xv'@; put 'ci1hY3Rpb24tNTAwOmhzbCgxOTgsIDgwJSwgNDYlKTstLWNsci1jb2xvci1hY3Rpb24tNjAwOmhzbCgxOTgsIDEwMCUsIDMyJSk7LS1jbHItY29sb3ItYWN0aW9uLTcwMDpoc2woMTk4LCAxMDAlLCAyOCUpOy0tY2xyLWNvbG9yLWFjdGlvbi04MDA6aHNsKDE5OCwgMTAwJSwgMjQlKTstLWNs'@; put 'ci1jb2xvci1hY3Rpb24tOTAwOmhzbCgxOTgsIDEwMCUsIDIxJSk7LS1jbHItY29sb3ItYWN0aW9uLTEwMDA6aHNsKDE5OCwgMTAwJSwgMTUlKTstLWNsci1jb2xvci1vbi1hY3Rpb24tNTA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1hY3Rpb24tMTAwOmhzbCgxOTgsIDAlLCAw'@; put 'JSk7LS1jbHItY29sb3Itb24tYWN0aW9uLTIwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0zMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1hY3Rpb24tNDAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tYWN0aW9uLTUwMDpoc2woMTk4'@; put 'LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi02MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi03MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi04MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlv'@; put 'bi05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0xMDAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwOmhzbCgyODIsIDEwMCUsIDk1JSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0xMDA6aHNsKDI4Miwg'@; put 'NTklLCA4NyUpOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMjAwOmhzbCgyODIsIDUxJSwgNzglKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTMwMDpoc2woMjgyLCA0NSUsIDcwJSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi00MDA6aHNsKDI4MiwgNDQlLCA2MiUp'@; put 'Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNTAwOmhzbCgyODIsIDQzJSwgNTQlKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTYwMDpoc2woMjgyLCA1MCUsIDQ1JSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi03MDA6aHNsKDI4MiwgNjklLCAzNyUpOy0tY2xyLWNv'@; put 'bG9yLXNlY29uZGFyeS1hY3Rpb24tODAwOmhzbCgyODIsIDEwMCUsIDI5JSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi05MDA6aHNsKDI4MiwgMTAwJSwgMjIlKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTEwMDA6aHNsKDI4MiwgMTAwJSwgMTQlKTstLWNsci1jb2xvci1v'@; put 'bi1zZWNvbmRhcnktYWN0aW9uLTUwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi0xMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTIwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXNlY29u'@; put 'ZGFyeS1hY3Rpb24tMzAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi00MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTUwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5'@; put 'LWFjdGlvbi02MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLXNlY29uZGFyeS1hY3Rpb24tNzAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTgwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5'@; put 'LWFjdGlvbi05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLXNlY29uZGFyeS1hY3Rpb24tMTAwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3ItZGFuZ2VyLTUwOmhzbCg5LCAxMDAlLCA5NyUpOy0tY2xyLWNvbG9yLWRhbmdlci0xMDA6aHNsKDksIDk1JSwgOTIl'@; put 'KTstLWNsci1jb2xvci1kYW5nZXItMjAwOmhzbCg5LCA5MSUsIDg2JSk7LS1jbHItY29sb3ItZGFuZ2VyLTMwMDpoc2woOSwgODMlLCA3NiUpOy0tY2xyLWNvbG9yLWRhbmdlci00MDA6aHNsKDksIDg1JSwgNjclKTstLWNsci1jb2xvci1kYW5nZXItNTAwOmhzbCg5LCA4OCUsIDYxJSk7LS1j'@; put 'bHItY29sb3ItZGFuZ2VyLTYwMDpoc2woOSwgOTIlLCA1MCUpOy0tY2xyLWNvbG9yLWRhbmdlci03MDA6aHNsKDksIDEwMCUsIDQzJSk7LS1jbHItY29sb3ItZGFuZ2VyLTgwMDpoc2woOSwgMTAwJSwgMzglKTstLWNsci1jb2xvci1kYW5nZXItOTAwOmhzbCg5LCAxMDAlLCAzMCUpOy0tY2xy'@; put 'LWNvbG9yLWRhbmdlci0xMDAwOmhzbCg5LCAxMDAlLCAyMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci01MDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0xMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1kYW5nZXItMjAwOmhzbCgxOTgsIDAlLCAwJSk7'@; put 'LS1jbHItY29sb3Itb24tZGFuZ2VyLTMwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci00MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1kYW5nZXItNTAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tZGFuZ2VyLTYwMDpoc2woMTk4LCAw'@; put 'JSwgMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci03MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci04MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0x'@; put 'MDAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci13YXJuaW5nLTUwOmhzbCg0OCwgMTAwJSwgOTUlKTstLWNsci1jb2xvci13YXJuaW5nLTEwMDpoc2woNDgsIDEwMCUsIDg5JSk7LS1jbHItY29sb3Itd2FybmluZy0yMDA6aHNsKDQ4LCAxMDAlLCA4MyUpOy0tY2xyLWNvbG9yLXdh'@; put 'cm5pbmctMzAwOmhzbCg0OCwgOTglLCA3MiUpOy0tY2xyLWNvbG9yLXdhcm5pbmctNDAwOmhzbCg0OCwgOTQlLCA1NyUpOy0tY2xyLWNvbG9yLXdhcm5pbmctNTAwOmhzbCg0OCwgOTUlLCA0OCUpOy0tY2xyLWNvbG9yLXdhcm5pbmctNjAwOmhzbCg0NiwgMTAwJSwgNDUlKTstLWNsci1jb2xv'@; put 'ci13YXJuaW5nLTcwMDpoc2woNDMsIDEwMCUsIDQyJSk7LS1jbHItY29sb3Itd2FybmluZy04MDA6aHNsKDQxLCAxMDAlLCAzNCUpOy0tY2xyLWNvbG9yLXdhcm5pbmctOTAwOmhzbCgzOCwgMTAwJSwgMjglKTstLWNsci1jb2xvci13YXJuaW5nLTEwMDA6aHNsKDMxLCAxMDAlLCAxOSUpOy0t'@; put 'Y2xyLWNvbG9yLW9uLXdhcm5pbmctNTA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTEwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctMjAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24td2FybmluZy0zMDA6aHNsKDE5OCwg'@; put 'MCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTQwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNTAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24td2FybmluZy02MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTcw'@; put 'MDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctODAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24td2FybmluZy05MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTEwMDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9y'@; put 'LXN1Y2Nlc3MtNTA6aHNsKDkzLCA1MiUsIDg4JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0xMDA6aHNsKDkzLCA1OCUsIDc1JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0yMDA6aHNsKDkzLCA3NiUsIDQ5JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0zMDA6aHNsKDkzLCA3NyUsIDQ0JSk7LS1jbHItY29s'@; put 'b3Itc3VjY2Vzcy00MDA6aHNsKDkzLCA3OSUsIDQwJSk7LS1jbHItY29sb3Itc3VjY2Vzcy01MDA6aHNsKDkzLCA2NyUsIDM4JSk7LS1jbHItY29sb3Itc3VjY2Vzcy02MDA6aHNsKDkzLCA4NSUsIDMyJSk7LS1jbHItY29sb3Itc3VjY2Vzcy03MDA6aHNsKDkzLCAxMDAlLCAyNiUpOy0tY2xy'@; put 'LWNvbG9yLXN1Y2Nlc3MtODAwOmhzbCg5MywgMTAwJSwgMjElKTstLWNsci1jb2xvci1zdWNjZXNzLTkwMDpoc2woOTMsIDEwMCUsIDE2JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0xMDAwOmhzbCg5MywgMTAwJSwgMTMlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwOmhzbCgxOTgsIDAlLCAw'@; put 'JSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy0xMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTIwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMzAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy00MDA6aHNs'@; put 'KDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNjAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy03MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLXN1'@; put 'Y2Nlc3MtODAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTkwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy0xMDAwOmhzbCgxOTgsIDAlLCAxMDAlKX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1ncmlkLWd1dHRlci13aWR0aDp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLWdyaWQtY29udGFpbmVyLXBhZGRpbmc6Y2FsYyh2YXIoLS1jbHItZ3JpZC1ndXR0ZXItd2lkdGgpICogLjUpOy0tY2xyLWdyaWQtY29sdW1uLXBhZGRpbmc6Y2FsYyh2YXIoLS1jbHItZ3JpZC1ndXR0ZXItd2lkdGgpICogLjUpOy0tY2xy'@; put 'LWdyaWQtcm93LW1hcmdpbjpjYWxjKHZhcigtLWNsci1ncmlkLWd1dHRlci13aWR0aCkgKiAtLjUpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWNsb3NlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWNsb3NlLWNvbG9yLWhvdmVyOnZhcigt'@; put 'LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLWNsb3NlLWNvbG9yLWFjdGl2ZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItYmFzZWZvbnQtc2l6ZToxMjUlOy0tY2xyLWdsb2JhbC1ib3JkZXJyYWRp'@; put 'dXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7LS1jbHItZ2xvYmFsLWFwcC1iYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYXBw'@; put 'LWJhY2tncm91bmQpOy0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci1nbG9iYWwtb24tc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24t'@; put 'Y29sb3Itc2VsZWN0ZWQpOy0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci1ob3Zlcik7LS1jbHItZ2xvYmFsLWNvbnRlbnQtaGVhZGVyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTst'@; put 'LWNsci1nbG9iYWwtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWdsb2JhbC1zdWNjZXNzLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItZ2xvYmFsLWVycm9yLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0'@; put 'dXMtZGFuZ2VyKX06cm9vdHstLWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3I6cmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLW1ldHJvcG9saXMtZm9udC1mYW1pbHk6TWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwg'@; put 'QXJpYWwsIHNhbnMtc2VyaWY7LS1jbHItYm9keS1mb250OnZhcigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTstLWNsci1mb250OnZhcigtLWNsci1ib2R5LWZvbnQpOy0tY2xyLWRpc3BsYXktZm9udDp2YXIoLS1jbHItbWV0cm9wb2xpcy1mb250LWZhbWlseSk7LS1jbHItZm9udC13'@; put 'ZWlnaHQtbGlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtbGlnaHQpOy0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXI6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItZm9udC13ZWlnaHQtc2VtaWJvbGQ6dmFyKC0t'@; put 'Y2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpOy0tY2xyLWZvbnQtd2VpZ2h0LWJvbGQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtYm9sZCk7LS1jbHItZm9udC13ZWlnaHQtZXh0cmFib2xkOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5'@; put 'LWZvbnQtd2VpZ2h0LWV4dHJhYm9sZCk7LS1jbHItaDEtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMzAwKTstLWNsci1oMS1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXNpemUpOy0tY2xyLWgxLWZvbnQtd2VpZ2h0OnZh'@; put 'cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC13ZWlnaHQpOy0tY2xyLWgxLWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWgxLWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQpOy0tY2xy'@; put 'LWgxLWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktbGV0dGVyLXNwYWNpbmcpOy0tY2xyLWgyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMCk7LS1jbHItaDItZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWhlYWRsaW5lLWZvbnQtc2l6ZSk7LS1jbHItaDItZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaGVhZGxpbmUtZm9udC13ZWlnaHQpOy0tY2xyLWgyLWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWgyLWxpbmUtaGVpZ2h0OnZhcigt'@; put 'LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRsaW5lLWxpbmUtaGVpZ2h0KTstLWNsci1oMi1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1oZWFkbGluZS1sZXR0ZXItc3BhY2luZyk7LS1jbHItaDMtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29s'@; put 'b3ItMzAwKTstLWNsci1oMy1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktdGl0bGUtZm9udC1zaXplKTstLWNsci1oMy1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS10aXRsZS1mb250LXdlaWdodCk7LS1jbHItaDMtZm9udC1mYW1pbHk6dmFyKC0t'@; put 'Y2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDMtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQpOy0tY2xyLWgzLWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWxldHRlci1zcGFjaW5nKTstLWNsci1o'@; put 'NC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0zMDApOy0tY2xyLWg0LWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZSk7LS1jbHItaDQtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlv'@; put 'bi1mb250LXdlaWdodCk7LS1jbHItaDQtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDQtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCk7LS1jbHItaDQtbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFs'@; put 'aWFzLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3BhY2luZyk7LS1jbHItaDUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMzAwKTstLWNsci1oNS1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemUpOy0tY2xy'@; put 'LWg1LWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC13ZWlnaHQpOy0tY2xyLWg1LWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWg1LWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNl'@; put 'Y3Rpb24tbGluZS1oZWlnaHQpOy0tY2xyLWg1LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpOy0tY2xyLWg2LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMCk7LS1jbHItaDYtZm9udC1z'@; put 'aXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC1zaXplKTstLWNsci1oNi1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtd2VpZ2h0KTstLWNsci1oNi1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1mb250KTst'@; put 'LWNsci1oNi1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0KTstLWNsci1oNi1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tZXNzYWdlLWxldHRlci1zcGFjaW5nKTstLWNsci1wMC1jb2xvcjp2YXIoLS1j'@; put 'ZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLXAwLWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7LS1jbHItcDAtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7LS1jbHIt'@; put 'cDAtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7LS1jbHItcDAtbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7LS1jbHItcDEtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5'@; put 'cG9ncmFwaHktY29sb3ItNDUwKTstLWNsci1wMS1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpOy0tY2xyLXAxLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpOy0tY2xyLXAxLWxpbmUtaGVp'@; put 'Z2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpOy0tY2xyLXAxLWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpOy0tY2xyLXAyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNv'@; put 'bG9yLTQ1MCk7LS1jbHItcDItZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpOy0tY2xyLXAyLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSk7LS1jbHItcDItbGluZS1oZWlnaHQ6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTstLWNsci1wMi1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpOy0tY2xyLXAzLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7LS1jbHItcDMt'@; put 'Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpOy0tY2xyLXAzLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7LS1jbHItcDMtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2Jh'@; put 'bC1zcGFjZS05KTstLWNsci1wMy1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpOy0tY2xyLXA0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7LS1jbHItcDQtZm9udC1zaXplOnZhcigt'@; put 'LWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpOy0tY2xyLXA0LWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci1wNC1saW5lLWhlaWdodDpjYWxjKDIwICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xv'@; put 'YmFsLWJhc2UpKSk7LS1jbHItcDQtbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTstLWNsci1wNS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLXA1LWZvbnQtc2l6ZTp2YXIo'@; put 'LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTstLWNsci1wNS1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOy0tY2xyLXA1LWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1j'@; put 'bHItcDUtbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTstLWNsci1wNi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLXA2LWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlw'@; put 'b2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7LS1jbHItcDYtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7LS1jbHItcDYtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7'@; put 'LS1jbHItcDYtbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7LS1jbHItcDctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwKTstLWNsci1wNy1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5'@; put 'cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtc2l6ZSk7LS1jbHItcDctZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtd2VpZ2h0KTstLWNsci1wNy1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRp'@; put 'b24tbGluZS1oZWlnaHQpOy0tY2xyLXA3LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7LS1jbHItcDgtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwKTstLWNsci1wOC1mb250LXNp'@; put 'emU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtc2l6ZSk7LS1jbHItcDgtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtd2VpZ2h0KTstLWNsci1wOC1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMt'@; put 'dHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGluZS1oZWlnaHQpOy0tY2xyLXA4LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7LS1jbHItbGlzdC1pdGVtLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5'@; put 'LWNvbG9yLTQwMCl9LmNsci1hbGlnbi1iYXNlbGluZXt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi10b3B7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0uY2xyLWFsaWduLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUhaW1wb3J0YW50fS5jbHIt'@; put 'YWxpZ24tYm90dG9te3ZlcnRpY2FsLWFsaWduOmJvdHRvbSFpbXBvcnRhbnR9LmNsci1hbGlnbi10ZXh0LWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbSFpbXBvcnRhbnR9LmNsci1hbGlnbi10ZXh0LXRvcHt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LXRvcCFpbXBvcnRhbnR9LmNsci1j'@; put 'bGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0uY2xyLWRpc3BsYXktYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmNsci1kaXNwbGF5LWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmNsci1kaXNwbGF5LWlu'@; put 'bGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmNsci1mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJl'@; put 'dmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1jb2x1bW4tcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9'@; put 'LmNsci1mbGV4LXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uY2xyLWZsZXgtZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgtZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWlt'@; put 'cG9ydGFudH0uY2xyLWZsZXgtc2hyaW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1'@; put 'c3RpZnktY29udGVudC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2Ut'@; put 'YmV0d2VlbiFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1lbmR7YWxp'@; put 'Z24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zdHJldGNoe2Fs'@; put 'aWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWNl'@; put 'bnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0u'@; put 'Y2xyLWFsaWduLWNvbnRlbnQtc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1hdXRve2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1h'@; put 'bGlnbi1zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxm'@; put 'LXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtc20tcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHIt'@; put 'ZmxleC1zbS1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtc20td3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRh'@; put 'bnR9LmNsci1mbGV4LXNtLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtc20td3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1zbS1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC1zbS1n'@; put 'cm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC1zbS1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC1zbS1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgtc20tc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNs'@; put 'ci1qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLWNlbnRlcntqdXN0aWZ5'@; put 'LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zbS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zbS1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRh'@; put 'bnR9LmNsci1hbGlnbi1pdGVtcy1zbS1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zbS1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWlt'@; put 'cG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLXN0YXJ0e2FsaWduLWNvbnRl'@; put 'bnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20t'@; put 'YmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFp'@; put 'bXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0'@; put 'YW50fS5jbHItYWxpZ24tc2VsZi1zbS1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1w'@; put 'b3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHItZmxleC1tZC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVj'@; put 'dGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLW5vd3JhcHtmbGV4LXdy'@; put 'YXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1tZC1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC1tZC1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5j'@; put 'bHItZmxleC1tZC1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC1tZC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnR7anVz'@; put 'dGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xy'@; put 'LWp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1tZC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1tZC1zdGFydHth'@; put 'bGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1tZC1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLWJh'@; put 'c2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1h'@; put 'bGlnbi1jb250ZW50LW1kLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJl'@; put 'dHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWF1'@; put 'dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1jZW50ZXJ7'@; put 'YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjk5MnB4'@; put 'KXsuY2xyLWZsZXgtbGctcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHItZmxleC1sZy1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNs'@; put 'ci1mbGV4LWxnLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbGctd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgt'@; put 'bGctd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1sZy1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC1sZy1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC1sZy1ncm93LTF7ZmxleC1ncm93OjEh'@; put 'aW1wb3J0YW50fS5jbHItZmxleC1sZy1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgtbGctc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0'@; put 'YW50fS5jbHItanVzdGlmeS1jb250ZW50LWxnLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWxnLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVue2p1'@; put 'c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFu'@; put 'dH0uY2xyLWFsaWduLWl0ZW1zLWxnLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWlt'@; put 'cG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLWVuZHthbGlnbi1jb250'@; put 'ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29u'@; put 'dGVudC1sZy1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0u'@; put 'Y2xyLWFsaWduLXNlbGYtbGctc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5j'@; put 'bHItYWxpZ24tc2VsZi1sZy1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LXhsLXJvd3tmbGV4LWRpcmVj'@; put 'dGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC14bC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgteGwtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC14bC1jb2x1bW4tcmV2ZXJzZXtmbGV4'@; put 'LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC14bC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3Jh'@; put 'cC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgteGwtZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uY2xyLWZsZXgteGwtZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgteGwtZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgteGwtc2hyaW5r'@; put 'LTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC14bC1l'@; put 'bmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC14bC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFp'@; put 'bXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMteGwtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy14bC1lbmR7YWxp'@; put 'Z24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMteGwtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy14bC1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy14bC1z'@; put 'dHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1h'@; put 'bGlnbi1jb250ZW50LXhsLWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtYXJvdW5ke2FsaWduLWNvbnRlbnQ6'@; put 'c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1hdXRve2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXhsLXN0YXJ0e2FsaWdu'@; put 'LXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXhsLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtYmFzZWxpbmV7YWxp'@; put 'Z24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXhsLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH19LmNsci1mbGV4LXhzLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC14cy1sYXN0e29yZGVyOjF9LmNsci1mbGV4LXhzLXVub3JkZXJlZHtvcmRl'@; put 'cjowfS5jbHItZmxleC1pdGVtcy14cy10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMteHMtbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteHMtYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5jbHItZmxleC14cy10b3B7YWxpZ24t'@; put 'c2VsZjpmbGV4LXN0YXJ0fS5jbHItZmxleC14cy1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LXhzLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy14cy1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14cy1j'@; put 'ZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteHMtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy14cy1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMteHMtYmV0d2VlbntqdXN0'@; put 'aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtc20tZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LXNtLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtc20tdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYShtaW4td2lkdGg6NTc2cHgpey5jbHIt'@; put 'ZmxleC1pdGVtcy1zbS10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtc20tbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtc20tYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZs'@; put 'ZXgtc20tdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgtc20tbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1zbS1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbGV4LWl0ZW1zLXNtLWxlZnR7anVzdGlm'@; put 'eS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXNtLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1zbS1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLXNtLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3Bh'@; put 'Y2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1zbS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LW1kLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtbWQtdW5vcmRl'@; put 'cmVke29yZGVyOjB9fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1pdGVtcy1tZC10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtbWQtbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtbWQtYm90dG9te2FsaWduLWl0ZW1z'@; put 'OmZsZXgtZW5kfX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgtbWQtbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1tZC1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhKG1pbi13'@; put 'aWR0aDo3NjhweCl7LmNsci1mbGV4LWl0ZW1zLW1kLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLW1kLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1tZC1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNs'@; put 'ci1mbGV4LWl0ZW1zLW1kLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1tZC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsZXgtbGctZmlyc3R7b3JkZXI6LTF9LmNs'@; put 'ci1mbGV4LWxnLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtbGctdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYShtaW4td2lkdGg6OTkycHgpey5jbHItZmxleC1pdGVtcy1sZy10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtbGctbWlkZGxle2FsaWduLWl0ZW1zOmNl'@; put 'bnRlcn0uY2xyLWZsZXgtaXRlbXMtbGctYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsZXgtbGctdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgtbGctbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1s'@; put 'Zy1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhKG1pbi13aWR0aDo5OTJweCl7LmNsci1mbGV4LWl0ZW1zLWxnLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLWxnLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1p'@; put 'dGVtcy1sZy1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLWxnLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1sZy1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEobWluLXdp'@; put 'ZHRoOjEyMDBweCl7LmNsci1mbGV4LXhsLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC14bC1sYXN0e29yZGVyOjF9LmNsci1mbGV4LXhsLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LWl0ZW1zLXhsLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0'@; put 'YXJ0fS5jbHItZmxleC1pdGVtcy14bC1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14bC1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYShtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWZsZXgteGwtdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xy'@; put 'LWZsZXgteGwtbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC14bC1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC1pdGVtcy14bC1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVt'@; put 'cy14bC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteGwtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy14bC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMteGwtYmV0d2Vl'@; put 'bntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19LmNsci1mbG9hdC14cy1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQteHMtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQteHMtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH1AbWVkaWEobWlu'@; put 'LXdpZHRoOjU3NnB4KXsuY2xyLWZsb2F0LXNtLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1zbS1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC1zbS1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuY2xy'@; put 'LWZsb2F0LW1kLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1tZC1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC1tZC1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsb2F0LWxnLWxlZnR7Zmxv'@; put 'YXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1sZy1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC1sZy1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbG9hdC14bC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50'@; put 'fS5jbHItZmxvYXQteGwtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQteGwtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH19LmNsci1pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS5jbHItaGlkZGVuLXhzLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRh'@; put 'bnR9QG1lZGlhKG1heC13aWR0aDo1NzUuOThweCl7LmNsci1oaWRkZW4teHMtZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXsuY2xyLWhpZGRlbi1zbS11cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEobWF4LXdpZHRoOjc2Ny45OHB4'@; put 'KXsuY2xyLWhpZGRlbi1zbS1kb3due2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpey5jbHItaGlkZGVuLW1kLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYShtYXgtd2lkdGg6OTkxLjk4cHgpey5jbHItaGlkZGVuLW1kLWRvd257ZGlzcGxh'@; put 'eTpub25lIWltcG9ydGFudH19QG1lZGlhKG1pbi13aWR0aDo5OTJweCl7LmNsci1oaWRkZW4tbGctdXB7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhKG1heC13aWR0aDoxMTk5Ljk4cHgpey5jbHItaGlkZGVuLWxnLWRvd257ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhKG1p'@; put 'bi13aWR0aDoxMjAwcHgpey5jbHItaGlkZGVuLXhsLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS5jbHItaGlkZGVuLXhsLWRvd24sLmNsci12aXNpYmxlLXByaW50LWJsb2Nre2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1wcmludC1ibG9ja3tk'@; put 'aXNwbGF5OmJsb2NrIWltcG9ydGFudH19LmNsci12aXNpYmxlLXByaW50LWlubGluZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsuY2xyLXZpc2libGUtcHJpbnQtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19LmNsci12aXNpYmxlLXByaW50LWlubGluZS1i'@; put 'bG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsuY2xyLXZpc2libGUtcHJpbnQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1lZGlhIHByaW50ey5jbHItaGlkZGVuLXByaW50e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS5jbHIt'@; put 'Y29udGFpbmVye3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDp2YXIoLS1jbHItZ3JpZC1jb250YWluZXItcGFkZGluZyk7cGFkZGluZy1sZWZ0OnZhcigtLWNsci1ncmlkLWNvbnRhaW5lci1wYWRkaW5nKTttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfS5jbHItcm93e2Rpc3Bs'@; put 'YXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tcmlnaHQ6dmFyKC0tY2xyLWdyaWQtcm93LW1hcmdpbik7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWdyaWQtcm93LW1hcmdpbil9LmNsci1uby1ndXR0ZXJze21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9LmNsci1uby1ndXR0ZXJzPi5j'@; put 'bHItY29sLC5jbHItbm8tZ3V0dGVycz5bY2xhc3MqPWNsci1jb2wtXXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9LmNsci1jb2wteGwsLmNsci1jb2wteGwtYXV0bywuY2xyLWNvbC14bC0xMiwuY2xyLWNvbC14bC0xMSwuY2xyLWNvbC14bC0xMCwuY2xyLWNvbC14bC05LC5jbHIt'@; put 'Y29sLXhsLTgsLmNsci1jb2wteGwtNywuY2xyLWNvbC14bC02LC5jbHItY29sLXhsLTUsLmNsci1jb2wteGwtNCwuY2xyLWNvbC14bC0zLC5jbHItY29sLXhsLTIsLmNsci1jb2wteGwtMSwuY2xyLWNvbC1sZywuY2xyLWNvbC1sZy1hdXRvLC5jbHItY29sLWxnLTEyLC5jbHItY29sLWxnLTEx'@; put 'LC5jbHItY29sLWxnLTEwLC5jbHItY29sLWxnLTksLmNsci1jb2wtbGctOCwuY2xyLWNvbC1sZy03LC5jbHItY29sLWxnLTYsLmNsci1jb2wtbGctNSwuY2xyLWNvbC1sZy00LC5jbHItY29sLWxnLTMsLmNsci1jb2wtbGctMiwuY2xyLWNvbC1sZy0xLC5jbHItY29sLW1kLC5jbHItY29sLW1k'@; put 'LWF1dG8sLmNsci1jb2wtbWQtMTIsLmNsci1jb2wtbWQtMTEsLmNsci1jb2wtbWQtMTAsLmNsci1jb2wtbWQtOSwuY2xyLWNvbC1tZC04LC5jbHItY29sLW1kLTcsLmNsci1jb2wtbWQtNiwuY2xyLWNvbC1tZC01LC5jbHItY29sLW1kLTQsLmNsci1jb2wtbWQtMywuY2xyLWNvbC1tZC0yLC5j'@; put 'bHItY29sLW1kLTEsLmNsci1jb2wtc20sLmNsci1jb2wtc20tYXV0bywuY2xyLWNvbC1zbS0xMiwuY2xyLWNvbC1zbS0xMSwuY2xyLWNvbC1zbS0xMCwuY2xyLWNvbC1zbS05LC5jbHItY29sLXNtLTgsLmNsci1jb2wtc20tNywuY2xyLWNvbC1zbS02LC5jbHItY29sLXNtLTUsLmNsci1jb2wt'@; put 'c20tNCwuY2xyLWNvbC1zbS0zLC5jbHItY29sLXNtLTIsLmNsci1jb2wtc20tMSwuY2xyLWNvbCwuY2xyLWNvbC1hdXRvLC5jbHItY29sLTEyLC5jbHItY29sLTExLC5jbHItY29sLTEwLC5jbHItY29sLTksLmNsci1jb2wtOCwuY2xyLWNvbC03LC5jbHItY29sLTYsLmNsci1jb2wtNSwuY2xy'@; put 'LWNvbC00LC5jbHItY29sLTMsLmNsci1jb2wtMiwuY2xyLWNvbC0xe3dpZHRoOjEwMCU7bWluLWhlaWdodDouMDVyZW07cGFkZGluZy1yaWdodDp2YXIoLS1jbHItZ3JpZC1jb2x1bW4tcGFkZGluZyk7cGFkZGluZy1sZWZ0OnZhcigtLWNsci1ncmlkLWNvbHVtbi1wYWRkaW5nKX0uY2xyLWNv'@; put 'bHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLTJ7'@; put 'ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wtNXtmbGV4OjAg'@; put 'MCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC04e2ZsZXg6MCAwIDY2LjY2'@; put 'NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2'@; put 'NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLTB7b3JkZXI6MH0uY2xyLW9yZGVyLTF7b3JkZXI6MX0u'@; put 'Y2xyLW9yZGVyLTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLTN7b3JkZXI6M30uY2xyLW9yZGVyLTR7b3JkZXI6NH0uY2xyLW9yZGVyLTV7b3JkZXI6NX0uY2xyLW9yZGVyLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLTd7b3JkZXI6N30uY2xyLW9yZGVyLTh7b3JkZXI6OH0uY2xyLW9yZGVyLTl7b3JkZXI6'@; put 'OX0uY2xyLW9yZGVyLTEwe29yZGVyOjEwfS5jbHItb3JkZXItMTF7b3JkZXI6MTF9LmNsci1vcmRlci0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC0z'@; put 'e21hcmdpbi1sZWZ0OjI1JX0uY2xyLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZzZXQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMz'@; put 'MzMzJX0uY2xyLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfUBtZWRp'@; put 'YShtaW4td2lkdGg6NTc2cHgpey5jbHItY29sLXNte2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1zbS1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY2xyLWNvbC1zbS0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7'@; put 'bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9LmNsci1jb2wtc20tMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY2xyLWNvbC1zbS00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMl'@; put 'O21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY2xyLWNvbC1zbS01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jbHItY29sLXNtLTd7ZmxleDowIDAgNTguMzMzMzMzMzMz'@; put 'MyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLXNtLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNsci1jb2wtc20tMTB7ZmxleDowIDAgODMuMzMzMzMz'@; put 'MzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5jbHItb3JkZXItc20tZmlyc3R7b3JkZXI6'@; put 'LTF9LmNsci1vcmRlci1zbS1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItc20tMHtvcmRlcjowfS5jbHItb3JkZXItc20tMXtvcmRlcjoxfS5jbHItb3JkZXItc20tMntvcmRlcjoyfS5jbHItb3JkZXItc20tM3tvcmRlcjozfS5jbHItb3JkZXItc20tNHtvcmRlcjo0fS5jbHItb3JkZXItc20t'@; put 'NXtvcmRlcjo1fS5jbHItb3JkZXItc20tNntvcmRlcjo2fS5jbHItb3JkZXItc20tN3tvcmRlcjo3fS5jbHItb3JkZXItc20tOHtvcmRlcjo4fS5jbHItb3JkZXItc20tOXtvcmRlcjo5fS5jbHItb3JkZXItc20tMTB7b3JkZXI6MTB9LmNsci1vcmRlci1zbS0xMXtvcmRlcjoxMX0uY2xyLW9y'@; put 'ZGVyLXNtLTEye29yZGVyOjEyfS5jbHItb2Zmc2V0LXNtLTB7bWFyZ2luLWxlZnQ6MH0uY2xyLW9mZnNldC1zbS0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtc20tMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1zbS0ze21hcmdpbi1sZWZ0'@; put 'OjI1JX0uY2xyLW9mZnNldC1zbS00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXNtLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtc20tNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZzZXQtc20tN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMz'@; put 'MzMzJX0uY2xyLW9mZnNldC1zbS04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXNtLTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LXNtLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXNtLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2'@; put 'NjY2NjclfX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuY2xyLWNvbC1tZHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtbWQtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtbWQtMXtmbGV4OjAgMCA4'@; put 'LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtbWQtNHtmbGV4OjAgMCAz'@; put 'My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtbWQtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC1tZC03e2ZsZXg6MCAw'@; put 'IDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1tZC04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLW1kLTEwe2ZsZXg6'@; put 'MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC1tZC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtbWQtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLW1k'@; put 'LWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItbWQtbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLW1kLTB7b3JkZXI6MH0uY2xyLW9yZGVyLW1kLTF7b3JkZXI6MX0uY2xyLW9yZGVyLW1kLTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLW1kLTN7b3JkZXI6M30uY2xyLW9yZGVyLW1kLTR7b3JkZXI6NH0u'@; put 'Y2xyLW9yZGVyLW1kLTV7b3JkZXI6NX0uY2xyLW9yZGVyLW1kLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLW1kLTd7b3JkZXI6N30uY2xyLW9yZGVyLW1kLTh7b3JkZXI6OH0uY2xyLW9yZGVyLW1kLTl7b3JkZXI6OX0uY2xyLW9yZGVyLW1kLTEwe29yZGVyOjEwfS5jbHItb3JkZXItbWQtMTF7b3Jk'@; put 'ZXI6MTF9LmNsci1vcmRlci1tZC0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC1tZC0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQtbWQtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LW1kLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbWQt'@; put 'M3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQtbWQtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1tZC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LW1kLTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LW1kLTd7bWFyZ2luLWxl'@; put 'ZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbWQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1tZC05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNldC1tZC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1tZC0xMXttYXJnaW4t'@; put 'bGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhKG1pbi13aWR0aDo5OTJweCl7LmNsci1jb2wtbGd7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLWxnLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jbHItY29sLWxn'@; put 'LTF7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC1sZy0ze2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jbHItY29sLWxn'@; put 'LTR7ZmxleDowIDAgMzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLWxnLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTZ7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNsci1jb2wt'@; put 'bGctN3tmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGctOXtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY2xyLWNv'@; put 'bC1sZy0xMHtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTEye2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9'@; put 'LmNsci1vcmRlci1sZy1maXJzdHtvcmRlcjotMX0uY2xyLW9yZGVyLWxnLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci1sZy0we29yZGVyOjB9LmNsci1vcmRlci1sZy0xe29yZGVyOjF9LmNsci1vcmRlci1sZy0ye29yZGVyOjJ9LmNsci1vcmRlci1sZy0ze29yZGVyOjN9LmNsci1vcmRlci1s'@; put 'Zy00e29yZGVyOjR9LmNsci1vcmRlci1sZy01e29yZGVyOjV9LmNsci1vcmRlci1sZy02e29yZGVyOjZ9LmNsci1vcmRlci1sZy03e29yZGVyOjd9LmNsci1vcmRlci1sZy04e29yZGVyOjh9LmNsci1vcmRlci1sZy05e29yZGVyOjl9LmNsci1vcmRlci1sZy0xMHtvcmRlcjoxMH0uY2xyLW9y'@; put 'ZGVyLWxnLTExe29yZGVyOjExfS5jbHItb3JkZXItbGctMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQtbGctMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LWxnLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5j'@; put 'bHItb2Zmc2V0LWxnLTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1sZy02e21hcmdpbi1sZWZ0OjUwJX0uY2xyLW9mZnNldC1s'@; put 'Zy03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LWxnLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbGctOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtbGctMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQt'@; put 'bGctMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fUBtZWRpYShtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWNvbC14bHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wteGwtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5v'@; put 'bmV9LmNsci1jb2wteGwtMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLXhsLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLXhsLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoy'@; put 'NSV9LmNsci1jb2wteGwtNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wteGwtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRo'@; put 'OjUwJX0uY2xyLWNvbC14bC03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC14bC05e2ZsZXg6MCAwIDc1JTttYXgtd2lk'@; put 'dGg6NzUlfS5jbHItY29sLXhsLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wteGwtMTJ7ZmxleDowIDAgMTAwJTtt'@; put 'YXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLXhsLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXIteGwtbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLXhsLTB7b3JkZXI6MH0uY2xyLW9yZGVyLXhsLTF7b3JkZXI6MX0uY2xyLW9yZGVyLXhsLTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLXhsLTN7b3JkZXI6'@; put 'M30uY2xyLW9yZGVyLXhsLTR7b3JkZXI6NH0uY2xyLW9yZGVyLXhsLTV7b3JkZXI6NX0uY2xyLW9yZGVyLXhsLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLXhsLTd7b3JkZXI6N30uY2xyLW9yZGVyLXhsLTh7b3JkZXI6OH0uY2xyLW9yZGVyLXhsLTl7b3JkZXI6OX0uY2xyLW9yZGVyLXhsLTEwe29y'@; put 'ZGVyOjEwfS5jbHItb3JkZXIteGwtMTF7b3JkZXI6MTF9LmNsci1vcmRlci14bC0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC14bC0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQteGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXhsLTJ7bWFyZ2luLWxlZnQ6MTYu'@; put 'NjY2NjY2NjY2NyV9LmNsci1vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQteGwtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC14bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXhsLTZ7bWFyZ2luLWxlZnQ6NTAl'@; put 'fS5jbHItb2Zmc2V0LXhsLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC14bC05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNldC14bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMz'@; put 'JX0uY2xyLW9mZnNldC14bC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19LmNsci1icmVhay1yb3d7d2lkdGg6MTAwJX0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH11bC5saXN0LXVuc3R5bGVkOm5vdChbY2RzLWxpc3RdKXtwYWRkaW5nLWxlZnQ6MDttYXJn'@; put 'aW4tbGVmdDowO2xpc3Qtc3R5bGUtcG9zaXRpb246b3V0c2lkZX11bC5saXN0LXVuc3R5bGVkOm5vdChbY2RzLWxpc3RdKSBsaTo6bWFya2Vye2NvbG9yOnRyYW5zcGFyZW50fWxpe2NvbG9yOnZhcigtLWNsci1saXN0LWl0ZW0tY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlw'@; put 'b2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFs'@; put 'aWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyl9dWw6bm90KFtjZHMtbGlzdF0pLG9sOm5vdChbY2RzLWxpc3RdKXtsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTttYXJnaW4tbGVmdDowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7cGFkZGluZy1sZWZ0OjB9dWwubGlz'@; put 'dDpub3QoW2Nkcy1saXN0XSksb2wubGlzdDpub3QoW2Nkcy1saXN0XSl7bGlzdC1zdHlsZS1wb3NpdGlvbjpvdXRzaWRlO21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saSxvbC5saXN0Om5vdChbY2RzLWxpc3Rd'@; put 'KS5jb21wYWN0Pmxpe21hcmdpbi1ib3R0b206MH11bDpub3QoLmxpc3QtdW5zdHlsZWQpOm5vdChbY2RzLWxpc3RdKT5saT51bC5saXN0LXVuc3R5bGVkLG9sOm5vdChbY2RzLWxpc3RdKT5saT51bC5saXN0LXVuc3R5bGVke21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9'@; put 'bGk+dWw6bm90KFtjZHMtbGlzdF0pe21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfXVsLmxpc3QtZ3JvdXA6bm90KFtjZHMtbGlzdF0pe21hcmdpbi10b3A6MH11bDpub3QoW2Nkcy1saXN0XSkubGlzdC1zcGFjZXIsb2w6bm90KFtjZHMtbGlzdF0p'@; put 'Lmxpc3Qtc3BhY2Vye21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1wcmV7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgMH1wcmV7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9i'@; put 'amVjdC1jb250YWluZXItYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApfXByZSBjb2Rle3doaXRlLXNwYWNlOnByZX1jb2RlLmNsci1jb2Rle2NvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LXJlZCk7cGFkZGlu'@; put 'ZzowO2JhY2tncm91bmQ6MCAwfWgxOm5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oMS1mb250LWZhbWlseSk7Y29sb3I6dmFyKC0tY2xyLWgxLWNvbG9yKTtmb250LXNpemU6'@; put 'dmFyKC0tY2xyLWgxLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgxLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItaDEtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1oMS1sZXR0ZXItc3BhY2luZyl9aDI6bm90KFtjZHMtdGV4dF0pe21h'@; put 'cmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWgyLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItaDItY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItaDItZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIo'@; put 'LS1jbHItaDItZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1oMi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLWgyLWxldHRlci1zcGFjaW5nKX1oMzpub3QoW2Nkcy10ZXh0XSl7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21hcmdp'@; put 'bi1ib3R0b206MDtmb250LWZhbWlseTp2YXIoLS1jbHItaDMtZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWNsci1oMy1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1oMy1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMy1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0t'@; put 'Y2xyLWgzLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItaDMtbGV0dGVyLXNwYWNpbmcpfWg0Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oNC1mb250'@; put 'LWZhbWlseSk7Y29sb3I6dmFyKC0tY2xyLWg0LWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2xyLWg0LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWg0LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItaDQtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigt'@; put 'LWNsci1oNC1sZXR0ZXItc3BhY2luZyl9aDU6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWg1LWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItaDUtY29sb3IpO2ZvbnQt'@; put 'c2l6ZTp2YXIoLS1jbHItaDUtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItaDUtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1oNS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLWg1LWxldHRlci1zcGFjaW5nKX1oNjpub3QoW2Nkcy10ZXh0'@; put 'XSl7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21hcmdpbi1ib3R0b206MDtmb250LWZhbWlseTp2YXIoLS1jbHItaDYtZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWNsci1oNi1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1oNi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0'@; put 'OnZhcigtLWNsci1oNi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLWg2LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItaDYtbGV0dGVyLXNwYWNpbmcpfWJvZHk6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRv'@; put 'bTowO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1mb250KTtjb2xvcjp2YXIoLS1jbHItcDEtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDEtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wMS1saW5lLWhlaWdo'@; put 'dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXAxLWxldHRlci1zcGFjaW5nKX1ib2R5IHA6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNs'@; put 'ci1wMS1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wMS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXAxLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDEtbGV0dGVyLXNwYWNpbmcp'@; put 'fWJvZHkgLnAwOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDA6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wMC1jb2xvcik7Zm9udC1z'@; put 'aXplOnZhcigtLWNsci1wMC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXAwLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDAtbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnAyOm5vdChbY2Rz'@; put 'LXRleHRdKSxib2R5IHAucDI6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wMi1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wMi1m'@; put 'b250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXAyLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDItbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnAzOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDM6'@; put 'bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wMy1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wMy1mb250LXNpemUpO2ZvbnQtd2Vp'@; put 'Z2h0OnZhcigtLWNsci1wMy1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXAzLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDMtbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnA0Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDQ6bm90KFtjZHMtdGV4dF0pe21h'@; put 'cmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wNC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wNC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNC1m'@; put 'b250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXA0LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDQtbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnA1Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDU6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wNS1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wNS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNS1mb250LXdlaWdodCk7bGluZS1o'@; put 'ZWlnaHQ6dmFyKC0tY2xyLXA1LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDUtbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnA2Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDY6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtt'@; put 'YXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wNi1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wNi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXA2'@; put 'LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItcDYtbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnA3Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDc6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9u'@; put 'dC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2NvbG9yOnZhcigtLWNsci1wNy1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wNy1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNy1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXA3LWxpbmUtaGVpZ2h0KTtsZXR0'@; put 'ZXItc3BhY2luZzp2YXIoLS1jbHItcDctbGV0dGVyLXNwYWNpbmcpfWJvZHkgLnA4Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDg6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xy'@; put 'LWZvbnQpO2NvbG9yOnZhcigtLWNsci1wOC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1wOC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wOC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXA4LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1j'@; put 'bHItcDgtbGV0dGVyLXNwYWNpbmcpfS50ZXh0LWxpZ2h0e2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCl9LnRleHQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH0udGV4dC1sZWZ0'@; put 'e3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9LnRleHQtanVzdGlmeXt0ZXh0LWFsaWduOmp1c3RpZnkhaW1wb3J0YW50fWh0bWw6bm90KFtjZHMtdGV4dF0pe2NvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQpO2Zv'@; put 'bnQtc2l6ZTpjYWxjKHZhcigtLWNkcy1nbG9iYWwtYmFzZSkvMTYqMTAwJSl9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItbGluay1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvcik7LS1jbHItbGluay1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dy'@; put 'YXBoeS1saW5rLWNvbG9yKTstLWNsci1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXIpOy0tY2xyLWxpbmstdmlzaXRlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQpOy0tY2xyLWxp'@; put 'bmstdmlzaXRlZC1jb2xvci1ob3Zlcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQtaG92ZXIpfWh0bWx7Ym94LXNpemluZzpib3JkZXItYm94fSosOmJlZm9yZSw6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fWh0bWx7LW1zLW92ZXJmbG93LXN0eWxlOnNj'@; put 'cm9sbGJhcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfWEsYXJlYSxidXR0b24sW3JvbGU9YnV0dG9uXSxpbnB1dCxsYWJlbCxzZWxlY3Qsc3VtbWFyeSx0ZXh0YXJl'@; put 'YXt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9ufWlucHV0LGJ1dHRvbixzZWxlY3QsdGV4dGFyZWF7Ym9yZGVyLXJhZGl1czowfWlucHV0W3R5cGU9cmFkaW9dOmRpc2FibGVkLGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH1pbnB1dFt0eXBlPWRhdGVd'@; put 'LGlucHV0W3R5cGU9dGltZV0saW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0saW5wdXRbdHlwZT1tb250aF17LXdlYmtpdC1hcHBlYXJhbmNlOmxpc3Rib3h9dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfWZpZWxkc2V0e21pbi13aWR0aDowO3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MH1s'@; put 'ZWdlbmR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3BhZGRpbmc6MDtsaW5lLWhlaWdodDppbmhlcml0fWlucHV0W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1baGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWRse21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9w'@; put 'OjFyZW19dGFibGV7Ym9yZGVyLXNwYWNpbmc6MH0uY2xyLXNyLW9ubHl7cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7Y2xpcC1wYXRoOmluc2V0KDUwJSk7cGFkZGluZzowO2JvcmRlcjowO2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbjt3'@; put 'aGl0ZS1zcGFjZTpub3dyYXA7dG9wOjA7bGVmdDowfS5hbGVydC1pY29uLC5jbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLXJlcGVh'@; put 'dDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmcsLmFsZXJ0LWljb24uaWNvbi13YXJuaW5nLC5jbHItaWNvbi5jbHItaWNvbi13YXJuaW5nLC5jbHItaWNvbi5pY29uLXdhcm5pbmd7YmFj'@; put 'a2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIwMjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxu'@; put 'cyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUyMHR5cGUlM0QlMjJ0ZXh0JTJGY3NzJTIyJTNFJTBBJTA5'@; put 'LmNsci1pLW91dGxpbmUlN0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0ElMjM3NDc0NzQlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0'@; put 'aXRsZSUzRWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWxpbmUlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0Ql'@; put 'MjJNMTglMkMyMS4zMmExLjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxLjMtMS4zVjE0YTEuMyUyQzEuMyUyQzAlMkMxJTJDMC0yLjYlMkMwdjZBMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJDMTglMkMyMS4zMlolMjIlM0UlM0MlMkZwYXRoJTNFJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHItaS1v'@; put 'dXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTIlMjIlMjBjeCUzRCUyMjE3Ljk1JTIyJTIwY3klM0QlMjIyNC4yNyUyMiUyMHIlM0QlMjIxLjUlMjIlM0UlM0MlMkZjaXJjbGUlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTMlMjIl'@; put 'MjBkJTNEJTIyTTMwLjMzJTJDMjUuNTQlMkMyMC41OSUyQzcuNmEzJTJDMyUyQzAlMkMwJTJDMC01LjI3JTJDMEw1LjU3JTJDMjUuNTRBMyUyQzMlMkMwJTJDMCUyQzAlMkM4LjIxJTJDMzBIMjcuNjlhMyUyQzMlMkMwJTJDMCUyQzAlMkMyLjY0LTQuNDNabS0xLjc4JTJDMS45NGExJTJDMSUy'@; put 'QzAlMkMwJTJDMS0uODYuNDlIOC4yMWExJTJDMSUyQzAlMkMwJTJDMS0uODgtMS40OEwxNy4wNyUyQzguNTVhMSUyQzElMkMwJTJDMCUyQzElMkMxLjc2JTJDMGw5Ljc0JTJDMTcuOTRBMSUyQzElMkMwJTJDMCUyQzElMkMyOC41NSUyQzI3LjQ4WiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdmclM0UpfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGUsLmNsci1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0'@; put 'ZjgsJTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjI1JTIwNSUyMDI2JTIwMjYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIl'@; put 'MjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlM0NkZWZzJTNFJTNDc3R5bGUlMjB0eXBlJTNEJTIydGV4dCUyRmNzcyUyMiUzRSUwQSUwOS5jbHItaS1vdXRsaW5lJTdCZmlsbC1ydWxlJTNBZXZlbm9kZCUzQmNsaXAtcnVs'@; put 'ZSUzQWV2ZW5vZGQlM0JmaWxsJTNBaHNsKDE5OCwgMCUsIDEwMCUpJTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VleGNsYW1hdGlvbi10cmlhbmdsZS1saW5lJTNDJTJG'@; put 'dGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTElMjIlMjBkJTNEJTIyTTE4JTJDMjEuMzJhMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJD'@; put 'MS4zLTEuM1YxNGExLjMlMkMxLjMlMkMwJTJDMSUyQzAtMi42JTJDMHY2QTEuMyUyQzEuMyUyQzAlMkMwJTJDMCUyQzE4JTJDMjEuMzJaJTIyJTNFJTNDJTJGcGF0aCUzRSUzQ2NpcmNsZSUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0yJTIyJTIwY3gl'@; put 'M0QlMjIxNy45NSUyMiUyMGN5JTNEJTIyMjQuMjclMjIlMjByJTNEJTIyMS41JTIyJTNFJTNDJTJGY2lyY2xlJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0zJTIyJTIwZCUzRCUyMk0zMC4zMyUyQzI1LjU0JTJDMjAuNTklMkM3LjZh'@; put 'MyUyQzMlMkMwJTJDMCUyQzAtNS4yNyUyQzBMNS41NyUyQzI1LjU0QTMlMkMzJTJDMCUyQzAlMkMwJTJDOC4yMSUyQzMwSDI3LjY5YTMlMkMzJTJDMCUyQzAlMkMwJTJDMi42NC00LjQzWm0tMS43OCUyQzEuOTRhMSUyQzElMkMwJTJDMCUyQzEtLjg2LjQ5SDguMjFhMSUyQzElMkMwJTJDMCUy'@; put 'QzEtLjg4LTEuNDhMMTcuMDclMkM4LjU1YTElMkMxJTJDMCUyQzAlMkMxJTJDMS43NiUyQzBsOS43NCUyQzE3Ljk0QTElMkMxJTJDMCUyQzAlMkMxJTJDMjguNTUlMkMyNy40OFolMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJG'@; put 'c3ZnJTNFIil9LmFsZXJ0LWljb24uY2xyLXZtdy1sb2dvLC5jbHItaWNvbi5jbHItdm13LWxvZ297YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAzNiUyMiUyMHZlcnNpb24lM0Ql'@; put 'MjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFdm0lMjBidWclM0Ml'@; put 'MkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIySGVhZGVycyUyMiUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1'@; put 'bGUlM0QlMjJldmVub2RkJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIyQ0wtSGVhZGVycy1TcGVjcyUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSgtMjYyLjAwMDAwMCUyQyUyMC0xNzUuMDAwMDAwKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUy'@; put 'MCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMjAxJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlKDIzOC4wMDAwMDAlMkMlMjAxNjMuMDAwMDAwKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUy'@; put 'MnZtLWJ1ZyUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSgyNC43MDMxMjUlMkMlMjAxMi4wMDAwMDApJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGlkJTNEJTIyUmVjdGFuZ2xlLTQyJTIy'@; put 'JTIwZmlsbC1vcGFjaXR5JTNEJTIyMC4yNSUyMiUyMGZpbGwlM0QlMjIlMjNEREREREQlMjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMzYlMjIlMjBoZWlnaHQlM0QlMjIzNiUyMiUyMHJ4JTNEJTIyMyUyMiUzRSUzQyUy'@; put 'RnJlY3QlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk03LjYzOTQ4Mzc2JTJDMTMuODc2MjQwMiUyMEM3LjMyMjY1MzI0JTJDMTMuMjA5NzA4MiUyMDYuNTM5NzgxNTIlMkMxMi45MDg1MTM5'@; put 'JTIwNS44MDkyMzA0MiUyQzEzLjIxOTkzNCUyMEM1LjA3NzcxMDQzJTJDMTMuNTMyMjgzNyUyMDQuODA5MzI0OTUlMkMxNC4zMTAzNjkxJTIwNS4xMzk3MjAwNyUyQzE0Ljk3NjkwMTElMjBMOC4yMDcyNTk1NCUyQzIxLjM3NDQ5MjMlMjBDOC42ODk3NzIwNyUyQzIyLjM3ODQ3MzUlMjA5LjE5'@; put 'ODQ0NDkxJTJDMjIuOTAzNzA0NCUyMDEwLjE1MjgxMjElMkMyMi45MDM3MDQ0JTIwQzExLjE3MjA5NTUlMkMyMi45MDM3MDQ0JTIwMTEuNjE2ODIwOSUyQzIyLjMzMTA2MzMlMjAxMi4wOTgzNjQ2JTJDMjEuMzc0NDkyMyUyMEMxMi4wOTgzNjQ2JTJDMjEuMzc0NDkyMyUyMDE0Ljc3NDQ2ODIl'@; put 'MkMxNS43ODQ3MzQxJTIwMTQuODAxNTk3NCUyQzE1LjcyNjE2ODUlMjBDMTQuODI4NzI2NiUyQzE1LjY2NjY3MzMlMjAxNC45MTQ5NTg4JTJDMTUuNDg2MzI4NiUyMDE1LjE4NzIxOTklMkMxNS40ODcyNTgyJTIwQzE1LjQxNzgxODIlMkMxNS40OTAwNDclMjAxNS42MTA2Mjk0JTJDMTUuNjY1'@; put 'NzQzNyUyMDE1LjYxMDYyOTQlMkMxNS45MDE4NjUyJTIwTDE1LjYxMDYyOTQlMkMyMS4zNjk4NDQzJTIwQzE1LjYxMDYyOTQlMkMyMi4yMTIwNzMlMjAxNi4wOTc5ODY1JTJDMjIuOTAzNzA0NCUyMDE3LjAzNDkxMzQlMkMyMi45MDM3MDQ0JTIwQzE3Ljk3MTg0MDMlMkMyMi45MDM3MDQ0JTIw'@; put 'MTguNDc4NTc1NCUyQzIyLjIxMjA3MyUyMDE4LjQ3ODU3NTQlMkMyMS4zNjk4NDQzJTIwTDE4LjQ3ODU3NTQlMkMxNi44OTY1NTAzJTIwQzE4LjQ3ODU3NTQlMkMxNi4wMzM4NzAyJTIwMTkuMTIxOTI1NCUyQzE1LjQ3NDI0MzYlMjAyMC4wMDA3MTgzJTJDMTUuNDc0MjQzNiUyMEMyMC44Nzg1'@; put 'NDIzJTJDMTUuNDc0MjQzNiUyMDIxLjQ2Mzc1ODMlMkMxNi4wNTI0NjI0JTIwMjEuNDYzNzU4MyUyQzE2Ljg5NjU1MDMlMjBMMjEuNDYzNzU4MyUyQzIxLjM2OTg0NDMlMjBDMjEuNDYzNzU4MyUyQzIyLjIxMjA3MyUyMDIxLjk1MjA4NDIlMkMyMi45MDM3MDQ0JTIwMjIuODg4MDQyMyUyQzIy'@; put 'LjkwMzcwNDQlMjBDMjMuODI0MDAwMyUyQzIyLjkwMzcwNDQlMjAyNC4zMzI2NzMxJTJDMjIuMjEyMDczJTIwMjQuMzMyNjczMSUyQzIxLjM2OTg0NDMlMjBMMjQuMzMyNjczMSUyQzE2Ljg5NjU1MDMlMjBDMjQuMzMyNjczMSUyQzE2LjAzMzg3MDIlMjAyNC45NzUwNTQzJTJDMTUuNDc0MjQz'@; put 'NiUyMDI1Ljg1Mzg0NzIlMkMxNS40NzQyNDM2JTIwQzI2LjczMDcwMjMlMkMxNS40NzQyNDM2JTIwMjcuMzE2ODg3MSUyQzE2LjA1MjQ2MjQlMjAyNy4zMTY4ODcxJTJDMTYuODk2NTUwMyUyMEwyNy4zMTY4ODcxJTJDMjEuMzY5ODQ0MyUyMEMyNy4zMTY4ODcxJTJDMjIuMjEyMDczJTIwMjcu'@; put 'ODA1MjEzMSUyQzIyLjkwMzcwNDQlMjAyOC43NDIxNCUyQzIyLjkwMzcwNDQlMjBDMjkuNjc3MTI5MSUyQzIyLjkwMzcwNDQlMjAzMC4xODQ4MzMxJTJDMjIuMjEyMDczJTIwMzAuMTg0ODMzMSUyQzIxLjM2OTg0NDMlMjBMMzAuMTg0ODMzMSUyQzE2LjI3ODM1ODIlMjBDMzAuMTg0ODMzMSUy'@; put 'QzE0LjQwNzA0ODglMjAyOC42MTgxMjA3JTJDMTMuMDk2Mjk1NiUyMDI2LjczMDcwMjMlMkMxMy4wOTYyOTU2JTIwQzI0Ljg0NTIyMTYlMkMxMy4wOTYyOTU2JTIwMjMuNjY1MTAwNiUyQzE0LjM0NzU1MzYlMjAyMy42NjUxMDA2JTJDMTQuMzQ3NTUzNiUyMEMyMy4wMzcyNTMlMkMxMy41NjY2'@; put 'NzkzJTIwMjIuMTcyMDI0NyUyQzEzLjA5NzIyNTIlMjAyMC43MDg5ODQ3JTJDMTMuMDk3MjI1MiUyMEMxOS4xNjQ1NTclMkMxMy4wOTcyMjUyJTIwMTcuODEyOTQwNiUyQzE0LjM0NzU1MzYlMjAxNy44MTI5NDA2JTJDMTQuMzQ3NTUzNiUyMEMxNy4xODQxMjQxJTJDMTMuNTY2Njc5MyUyMDE2'@; put 'LjExNTQyNjclMkMxMy4wOTcyMjUyJTIwMTUuMjMwODIwNCUyQzEzLjA5NzIyNTIlMjBDMTMuODYxNzYzOCUyQzEzLjA5NzIyNTIlMjAxMi43NzQ2NTcyJTJDMTMuNjc1NDQ0JTIwMTIuMTExOTI5MiUyQzE1LjEzMDI4NzElMjBMMTAuMTUyODEyMSUyQzE5LjU2MDgxODklMjBMNy42Mzk0ODM3'@; put 'NiUyQzEzLjg3NjI0MDIlMjIlMjBpZCUzRCUyMkZpbGwtNCUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy'@; put 'MCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUzQyUyRnN2ZyUzRSIpfS5pcy1vZmYtc2NyZWVue3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7aGVp'@; put 'Z2h0OjFweCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O3RvcDouMDVyZW0haW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAuMDVy'@; put 'ZW0haW1wb3J0YW50fS5jbHItcG9wb3Zlci1jb250ZW50e3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTA1MH06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1idG4tdmVydGljYWwtbWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7LS1jbHItYnRuLWhvcml6b250YWwtbWFyZ2luOnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtNik7LS1jbHItYnRuLWhvcml6b250YWwtcGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpOy0tY2xyLWJ0bi12ZXJ0aWNhbC1wYWRkaW5nOjA7LS1jbHItYnRuLXBhZGRpbmc6dmFyKC0tY2xyLWJ0bi12ZXJ0aWNhbC1wYWRkaW5nKSB2YXIoLS1jbHIt'@; put 'YnRuLWhvcml6b250YWwtcGFkZGluZyk7LS1jbHItYnRuLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTstLWNsci1idG4taGVpZ2h0LXNtOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1jbHItYnRuLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3Jk'@; put 'ZXItcmFkaXVzLTEwMCk7LS1jbHItYnRuLWJvcmRlci13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWhlaWdodDp2YXIoLS1jbHItYnRuLWhlaWdodC1zbSk7LS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtcGFkZGluZzow'@; put 'IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7LS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1oZWlnaHQ6dmFyKC0tY2xyLWJ0bi1oZWlnaHQpOy0tY2xyLWJ0bi1hcHBlYXJh'@; put 'bmNlLWZvcm0tcGFkZGluZzp2YXIoLS1jbHItYnRuLXBhZGRpbmcpOy0tY2xyLWJ0bi1ncm91cC1mb2N1cy1vdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSk7LS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3Qtb3BhY2l0eS0wKTstLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWJ0bi1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIo'@; put 'LS1jbHItYnRuLWRlZmF1bHQtY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLXNlY29uZGFy'@; put 'eS1ob3Zlcik7LS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaW5mby1ob3Zlcik7LS1jbHItYnRuLWRlZmF1bHQtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtYWN0aXZlLWJn'@; put 'LWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVs'@; put 'dC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0t'@; put 'Y2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhv'@; put 'dmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1ob3Zlcik7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYWN0'@; put 'aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZC1idXR0b24pOy0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtZGlzYWJsZWQtYmct'@; put 'Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRs'@; put 'aW5lLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tc2Vjb25k'@; put 'YXJ5LWhvdmVyKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWluZm8taG92ZXIpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yKTst'@; put 'LWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1kZWZh'@; put 'dWx0LW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1kZWZh'@; put 'dWx0LW91dGxpbmUtY2hlY2tlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXByaW1hcnkt'@; put 'Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWJ0bi1wcmltYXJ5LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xy'@; put 'LWJ0bi1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1ob3Zlcik7LS1jbHItYnRuLXByaW1hcnktaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1hY3RpdmUtY29sb3I6'@; put 'dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1idG4tcHJpbWFyeS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLWFjdGl2ZSk7LS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFs'@; put 'aWFzLXR5cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1k'@; put 'aXNhYmxlZCk7LS1jbHItYnRuLXByaW1hcnktY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1idG4tcHJpbWFyeS1vdXRs'@; put 'aW5lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbyk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1v'@; put 'dXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1zZWNvbmRhcnktaG92ZXIpOy0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFs'@; put 'aWFzLXR5cG9ncmFwaHktaW5mby1ob3Zlcik7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0'@; put 'bGluZS1jb2xvcik7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1i'@; put 'Zy1jb2xvcik7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEw'@; put 'MCk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1zdWNjZXNz'@; put 'LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItYnRuLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3MtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRl'@; put 'cmFjdGlvbi1zdWNjZXNzLWhvdmVyKTstLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1zdWNj'@; put 'ZXNzLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3MtYWN0aXZlKTstLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZC1idXR0b24pOy0tY2xyLWJ0bi1zdWNjZXNz'@; put 'LWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWJnLWNvbG9yOnZhcigt'@; put 'LWNsci1idG4tc3VjY2Vzcy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzKTstLWNsci1idG4tc3Vj'@; put 'Y2Vzcy1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9y'@; put 'OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1zZWNvbmRhcnktaG92ZXIpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3VjY2Vzcy1ob3Zlcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGlu'@; put 'ZS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2Fi'@; put 'bGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVk'@; put 'LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY2hlY2tlZC1j'@; put 'b2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLWRhbmdlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1kYW5nZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xy'@; put 'LWJ0bi1kYW5nZXItYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWJnLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWhvdmVyKTstLWNsci1idG4tZGFuZ2VyLWhvdmVyLWNvbG9y'@; put 'OnZhcigtLWNsci1idG4tZGFuZ2VyLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWRhbmdlci1hY3RpdmUpOy0tY2xyLWJ0bi1kYW5nZXItYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZC1idXR0b24pOy0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHIt'@; put 'YnRuLWRhbmdlci1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWJnLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLWNoZWNrZWQtY29sb3I6dmFy'@; put 'KC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRh'@; put 'bmdlci1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLXNlY29uZGFyeS1ob3Zlcik7LS1jbHItYnRu'@; put 'LWRhbmdlci1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcik7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tZGFuZ2Vy'@; put 'LW91dGxpbmUtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2Fi'@; put 'bGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jaGVja2Vk'@; put 'LWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItYmxhY2spOy0tY2xyLWJ0bi13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZyk7LS1jbHItYnRuLXdhcm5pbmctYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1iZy1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmctaG92ZXItYmctY29s'@; put 'b3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLWhvdmVyKTstLWNsci1idG4td2FybmluZy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWludGVyYWN0aW9uLXdhcm5pbmctYWN0aXZlKTstLWNsci1idG4td2FybmluZy1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yKTstLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZC1idXR0'@; put 'b24pOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4td2FybmluZy1j'@; put 'aGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1iZy1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13'@; put 'YXJuaW5nLWRhcmspOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyayk7LS1jbHItYnRu'@; put 'LXdhcm5pbmctb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXdhcm5pbmctc2Vjb25kYXJ5LWhvdmVyKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXdhcm5pbmct'@; put 'aG92ZXIpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvcik7'@; put 'LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1j'@; put 'bHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJnLWNvbG9yKTstLWNs'@; put 'ci1idG4td2FybmluZy1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1uZXV0cmFsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLW5ldXRyYWwtYmctY29sb3I6dmFy'@; put 'KC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1idG4tbmV1dHJhbC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWJnLWNvbG9yKTstLWNsci1idG4tbmV1dHJhbC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRy'@; put 'YWwtaG92ZXIpOy0tY2xyLWJ0bi1uZXV0cmFsLWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1jb2xvcik7LS1jbHItYnRuLW5ldXRyYWwtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1hY3RpdmUpOy0tY2xyLWJ0bi1u'@; put 'ZXV0cmFsLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtY29sb3IpOy0tY2xyLWJ0bi1uZXV0cmFsLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkLWJ1dHRvbik7LS1jbHItYnRuLW5ldXRyYWwtZGlzYWJsZWQtYmctY29sb3I6dmFy'@; put 'KC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLW5ldXRyYWwtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1uZXV0cmFsLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWJnLWNv'@; put 'bG9yKTstLWNsci1idG4tbmV1dHJhbC1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1jb2xvcik7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwpOy0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtYmctY29sb3I6'@; put 'dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApOy0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LW5ldXRyYWwtaG92ZXIpOy0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1uZXV0cmFsLXNlY29uZGFyeS1ob3Zlcik7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1hY3RpdmUtY29sb3I6'@; put 'dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMt'@; put 'dHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFs'@; put 'aWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFs'@; put 'LW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1saW5rLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbyk7LS1jbHItYnRuLWxpbmstYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstYm9yZGVyLWNvbG9yOnZhcigtLWNsci1i'@; put 'dG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IpOy0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1ob3Zl'@; put 'ci1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1pbmZvLWhvdmVyKTstLWNsci1idG4tbGluay12aXNpdGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWxpbmstY29sb3ItdmlzaXRlZCk7LS1jbHItYnRuLWxpbmstdmlzaXRlZC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQtaG92ZXIpOy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWRpc2FibGVkKTstLWNsci1idG4tbGluay1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRu'@; put 'LWxpbmstY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1jaGVja2VkLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2xyLWJ0bi1saW5rLXByaW1hcnktY29sb3I6dmFyKC0tY2RzLWFsaWFz'@; put 'LXN0YXR1cy1pbmZvKTstLWNsci1idG4tbGluay1wcmltYXJ5LWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXByaW1hcnktYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1s'@; put 'aW5rLXByaW1hcnktaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1pbmZvLWhvdmVyKTstLWNsci1idG4tbGluay1wcmltYXJ5LWFjdGl2'@; put 'ZS1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1jb2xvcik7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMt'@; put 'YWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRy'@; put 'YW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1wcmltYXJ5LWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWNvbG9y'@; put 'KTstLWNsci1idG4tbGluay1zdWNjZXNzLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1zdWNjZXNzLWJvcmRlci1jb2xv'@; put 'cjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1zdWNjZXNzLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5'@; put 'cG9ncmFwaHktc3VjY2Vzcy1ob3Zlcik7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtY29sb3IpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29s'@; put 'b3IpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRu'@; put 'LWxpbmstc3VjY2Vzcy1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXN1'@; put 'Y2Nlc3MtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1jb2xvcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyayk7LS1jbHItYnRuLWxpbmstd2FybmluZy1iZy1jb2xvcjp2YXIoLS1jbHItYnRu'@; put 'LXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay13YXJuaW5nLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay13YXJuaW5nLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29s'@; put 'b3IpOy0tY2xyLWJ0bi1saW5rLXdhcm5pbmctaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktd2FybmluZy1ob3Zlcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctY29sb3IpOy0tY2xyLWJ0bi1saW5r'@; put 'LXdhcm5pbmctYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXdhcm5pbmctZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1saW5rLXdhcm5pbmctZGlzYWJs'@; put 'ZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1jaGVja2VkLWJnLWNv'@; put 'bG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXdhcm5pbmctY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1jb2xvcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFu'@; put 'Z2VyKTstLWNsci1idG4tbGluay1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1kYW5nZXIt'@; put 'aG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWFjdGl2ZS1jb2xvcjp2YXIo'@; put 'LS1jbHItYnRuLWxpbmstZGFuZ2VyLWNvbG9yKTstLWNsci1idG4tbGluay1kYW5nZXItYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWRhbmdlci1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo'@; put 'eS1kaXNhYmxlZCk7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWRhbmdlci1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xv'@; put 'cik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRhbmdlci1jb2xvcik7LS1jbHItYnRuLWxpbmstbmV1'@; put 'dHJhbC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstbmV1dHJhbC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFu'@; put 'c3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstbmV1dHJhbC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1uZXV0cmFsLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LW5ldXRyYWwtaG92'@; put 'ZXIpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWNvbG9yKTstLWNsci1idG4tbGluay1uZXV0cmFsLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1u'@; put 'ZXV0cmFsLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tbGluay1uZXV0cmFsLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtZGlzYWJs'@; put 'ZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1uZXV0cmFsLWNoZWNrZWQtY29sb3I6'@; put 'dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtY29sb3IpOy0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2xyLWJ0bi1pbnZlcnNlLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKTstLWNsci1idG4taW52ZXJz'@; put 'ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4taW52ZXJzZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWludmVyc2UtaG92ZXIpOy0tY2xyLWJ0bi1pbnZlcnNlLWhvdmVyLWNvbG9yOnZhcigt'@; put 'LWNsci1idG4taW52ZXJzZS1jb2xvcik7LS1jbHItYnRuLWludmVyc2UtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW52ZXJzZS1hY3RpdmUpOy0tY2xyLWJ0bi1pbnZlcnNlLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdo'@; put 'aXRlKTstLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1pbnZl'@; put 'cnNlLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1iZy1jb2xvcik7LS1jbHItYnRuLWludmVyc2UtY2hlY2tlZC1jb2xvcjp2YXIoLS1j'@; put 'bHItYnRuLWludmVyc2UtY29sb3IpfS5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRue2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7YWxpZ24taXRlbXM6Y2VudGVyO3BsYWNlLWNvbnRlbnQ6Y2VudGVy'@; put 'Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lIWltcG9ydGFudDtib3JkZXI6dmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgpIHNvbGlkO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNCk7bWF4LXdpZHRo'@; put 'OmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRl'@; put 'ci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo'@; put 'eS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0yKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSk7dGV4dC10cmFuc2Zv'@; put 'cm06dXBwZXJjYXNlO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0tcGFkZGluZyl9LmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46aG92ZXJ7dGV4dC1kZWNv'@; put 'cmF0aW9uOm5vbmV9LmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yKX0uYnRu'@; put 'OmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yKX0uYnRuOmhvdmVyIGNkcy1pY29uLC5h'@; put 'bGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3IpfS5idG46YWN0'@; put 'aXZlLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYWN0aXZlLWNvbG9yKX0uYnRuOmFjdGl2ZSBjZHMtaWNvbiwu'@; put 'YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1jb2xvcil9LmJ0'@; put 'bi5kaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5kaXNhYmxlZC5idG4sLmJ0bjpkaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90'@; put 'LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwg'@; put 'LmFsZXJ0LWl0ZW0gLmRpc2FibGVkLmJ0biBjZHMtaWNvbiwuYnRuLmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmRpc2FibGVkLmJ0biBjbHItaWNvbiwuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0'@; put 'bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuOmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IpfS5idG4gLmNsci1sb2FkaW5nLWJ0bi1jb250'@; put 'ZW50LC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biAuY2xyLWxvYWRpbmctYnRuLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2FsaWduLWl0ZW1zOmNlbnRlcn0uYnRuLWdyb3VwPi5idG4gY2xyLWljb24sLmJ0biBjbHItaWNvbiwu'@; put 'YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb257dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsY2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpKSwwKX1hLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuLC5idG4uYnRuLXNlY29uZGFyeSwu'@; put 'YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5LmJ0biwuYnRuLXNlY29uZGFyeSAuYnRuLC5idG4tc2Vjb25kYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5IC5idG57'@; put 'Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IpfWEuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwg'@; put 'LmFsZXJ0LWl0ZW0gYS5idG4gY2RzLWljb24sYS5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnkgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeS5idG4gY2Rz'@; put 'LWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5IGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zZWNvbmRhcnkuYnRuIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1zZWNvbmRhcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAu'@; put 'YnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zZWNvbmRhcnkgLmJ0biBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQt'@; put 'YXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5IC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yKX1hLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmhvdmVyLC5idG4uYnRuLXNlY29uZGFyeTpob3Zlciwu'@; put 'YnRuLXNlY29uZGFyeSAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3IpfWEuYnRuOmhvdmVyIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0'@; put 'LWl0ZW0gYS5idG46aG92ZXIgY2RzLWljb24sYS5idG46aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnk6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5OmhvdmVyIGNsci1pY29u'@; put 'LC5idG4tc2Vjb25kYXJ5IC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3IpfWEuYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmFjdGl2'@; put 'ZSwuYnRuLmJ0bi1zZWNvbmRhcnk6YWN0aXZlLC5idG4tc2Vjb25kYXJ5IC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1jb2xvcil9YS5idG46YWN0aXZl'@; put 'IGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gYS5idG46YWN0aXZlIGNkcy1pY29uLGEuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnk6YWN0aXZlIGNkcy1p'@; put 'Y29uLC5idG4uYnRuLXNlY29uZGFyeTphY3RpdmUgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1jb2xvcil9YS5idG4uZGlzYWJs'@; put 'ZWQsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmRpc2FibGVkLmJ0bixhLmJ0bjpkaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmRpc2FibGVkLC5idG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQsLmJ0'@; put 'bi1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLXNlY29uZGFyeSAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVk'@; put 'LWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJvcmRlci1jb2xvcil9YS5idG4uZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmRpc2FibGVkLmJ0biBjZHMtaWNvbixhLmJ0bi5kaXNhYmxlZCBjbHIt'@; put 'aWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuZGlzYWJsZWQuYnRuIGNsci1pY29uLGEuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gYS5idG46ZGlzYWJsZWQgY2RzLWljb24sYS5idG46ZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0'@; put 'LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXNlY29uZGFyeTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0'@; put 'bi1zZWNvbmRhcnk6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0bjpk'@; put 'aXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWluZm8sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWluZm8uYnRuLC5idG4taW5mbyAuYnRuLC5idG4taW5mbyAuYWxlcnQtYXBwLWxldmVsIC5hbGVy'@; put 'dC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWluZm8gLmJ0biwuYnRuLmJ0bi1wcmltYXJ5LC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5LmJ0biwuYnRuLXByaW1hcnkgLmJ0biwuYnRuLXByaW1hcnkgLmFsZXJ0LWFwcC1sZXZl'@; put 'bCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5IC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWJnLWNvbG9yKTtj'@; put 'b2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IpfS5idG4uYnRuLWluZm8gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWluZm8uYnRuIGNkcy1pY29uLC5idG4uYnRuLWluZm8gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRu'@; put 'LWluZm8uYnRuIGNsci1pY29uLC5idG4taW5mbyAuYnRuIGNkcy1pY29uLC5idG4taW5mbyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWluZm8gLmJ0biBjZHMtaWNvbiwuYnRuLWluZm8gLmJ0biBj'@; put 'bHItaWNvbiwuYnRuLWluZm8gLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvIC5idG4gY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p'@; put 'dGVtIC5idG4tcHJpbWFyeS5idG4gY2RzLWljb24sLmJ0bi5idG4tcHJpbWFyeSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeS5idG4gY2xyLWljb24sLmJ0bi1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1wcmltYXJ5IC5hbGVydC1hcHAtbGV2'@; put 'ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeSAuYnRuIGNkcy1pY29uLC5idG4tcHJpbWFyeSAuYnRuIGNsci1pY29uLC5idG4tcHJpbWFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWlj'@; put 'b24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1hcnkgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IpfS5idG4uYnRuLWluZm86aG92ZXIsLmJ0bi1pbmZvIC5idG46aG92ZXIsLmJ0bi5idG4tcHJpbWFyeTpob3ZlciwuYnRuLXBy'@; put 'aW1hcnkgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1pbmZvOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLWluZm86aG92ZXIgY2xy'@; put 'LWljb24sLmJ0bi1pbmZvIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1pbmZvIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1wcmltYXJ5OmhvdmVyIGNsci1pY29uLC5idG4tcHJpbWFyeSAuYnRuOmhvdmVyIGNkcy1pY29uLC5i'@; put 'dG4tcHJpbWFyeSAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ob3Zlci1jb2xvcil9LmJ0bi5idG4taW5mbzphY3RpdmUsLmJ0bi1pbmZvIC5idG46YWN0aXZlLC5idG4uYnRuLXByaW1hcnk6YWN0aXZlLC5idG4tcHJpbWFyeSAuYnRuOmFjdGl2ZXti'@; put 'YWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWluZm86YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLWluZm86YWN0aXZlIGNsci1pY29uLC5idG4taW5m'@; put 'byAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWluZm8gLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeTphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tcHJpbWFyeTphY3RpdmUgY2xyLWljb24sLmJ0bi1wcmltYXJ5IC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tcHJpbWFy'@; put 'eSAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1pbmZvLmRpc2FibGVkLC5idG4uYnRuLWluZm86ZGlzYWJsZWQsLmJ0bi1pbmZvIC5idG4uZGlzYWJsZWQsLmJ0bi1pbmZvIC5idG46ZGlzYWJsZWQsLmJ0bi5i'@; put 'dG4tcHJpbWFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1wcmltYXJ5OmRpc2FibGVkLC5idG4tcHJpbWFyeSAuYnRuLmRpc2FibGVkLC5idG4tcHJpbWFyeSAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2Jh'@; put 'Y2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4taW5mby5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLmRpc2Fi'@; put 'bGVkIGNsci1pY29uLC5idG4uYnRuLWluZm86ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4taW5mbzpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWluZm8gLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWluZm8gLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWluZm8gLmJ0bjpkaXNhYmxl'@; put 'ZCBjZHMtaWNvbiwuYnRuLWluZm8gLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1wcmltYXJ5LmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnkuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1wcmltYXJ5'@; put 'OmRpc2FibGVkIGNsci1pY29uLC5idG4tcHJpbWFyeSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tcHJpbWFyeSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tcHJpbWFyeSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tcHJpbWFyeSAuYnRuOmRpc2FibGVkIGNsci1pY29ue2Nv'@; put 'bG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tc3VjY2VzcywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2Vzcy5idG4sLmJ0bi1zdWNjZXNzIC5idG4sLmJ0bi1zdWNjZXNzIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0g'@; put 'LmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2VzcyAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xy'@; put 'LWJ0bi1zdWNjZXNzLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNjZXNzLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNj'@; put 'ZXNzLmJ0biBjbHItaWNvbiwuYnRuLXN1Y2Nlc3MgLmJ0biBjZHMtaWNvbiwuYnRuLXN1Y2Nlc3MgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNjZXNzIC5idG4gY2RzLWljb24sLmJ0bi1zdWNj'@; put 'ZXNzIC5idG4gY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2VzcyAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvcil9'@; put 'LmJ0bi5idG4tc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3MgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzOmhvdmVy'@; put 'IGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3M6aG92ZXIgY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNz'@; put 'OmFjdGl2ZSwuYnRuLXN1Y2Nlc3MgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzOmFjdGl2ZSBjZHMtaWNvbiwu'@; put 'YnRuLmJ0bi1zdWNjZXNzOmFjdGl2ZSBjbHItaWNvbiwuYnRuLXN1Y2Nlc3MgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3MuZGlzYWJs'@; put 'ZWQsLmJ0bi5idG4tc3VjY2VzczpkaXNhYmxlZCwuYnRuLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCwuYnRuLXN1Y2Nlc3MgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZh'@; put 'cigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3MuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc3VjY2Vzcy5kaXNhYmxlZCBjbHItaWNv'@; put 'biwuYnRuLmJ0bi1zdWNjZXNzOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG46ZGlz'@; put 'YWJsZWQgY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLmJ0biwuYnRuLXdh'@; put 'cm5pbmcgLmJ0biwuYnRuLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1ib3JkZXItY29sb3IpO2JhY2tncm91bmQt'@; put 'Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY29sb3IpfS5idG4uYnRuLXdhcm5pbmcgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXdhcm5pbmcuYnRuIGNkcy1pY29uLC5idG4uYnRuLXdh'@; put 'cm5pbmcgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXdhcm5pbmcuYnRuIGNsci1pY29uLC5idG4td2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4td2FybmluZyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1s'@; put 'ZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXdhcm5pbmcgLmJ0biBjZHMtaWNvbiwuYnRuLXdhcm5pbmcgLmJ0biBjbHItaWNvbiwuYnRuLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJu'@; put 'aW5nIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZyAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIo'@; put 'LS1jbHItYnRuLXdhcm5pbmctaG92ZXItY29sb3IpfS5idG4uYnRuLXdhcm5pbmc6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4td2FybmluZzpob3ZlciBjbHItaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xv'@; put 'cjp2YXIoLS1jbHItYnRuLXdhcm5pbmctaG92ZXItY29sb3IpfS5idG4uYnRuLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZyAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4td2Fy'@; put 'bmluZy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXdhcm5pbmc6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmc6YWN0aXZlIGNsci1pY29uLC5idG4td2FybmluZyAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0t'@; put 'Y2xyLWJ0bi13YXJuaW5nLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4td2FybmluZy5kaXNhYmxlZCwuYnRuLmJ0bi13YXJuaW5nOmRpc2FibGVkLC5idG4td2FybmluZyAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZyAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1k'@; put 'aXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4td2Fybmlu'@; put 'Zy5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi13YXJuaW5nLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXdhcm5pbmc6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4td2FybmluZzpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRu'@; put 'LXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWRhbmdlciwu'@; put 'YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyLmJ0biwuYnRuLWRhbmdlciAuYnRuLC5idG4tZGFuZ2VyIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyIC5idG57Ym9yZGVyLWNvbG9y'@; put 'OnZhcigtLWNsci1idG4tZGFuZ2VyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpfS5idG4uYnRuLWRhbmdlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVy'@; put 'dC1pdGVtIC5idG4tZGFuZ2VyLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlci5idG4gY2xyLWljb24sLmJ0bi1kYW5nZXIgLmJ0biBjZHMtaWNvbiwuYnRuLWRhbmdlciAuYWxlcnQtYXBwLWxldmVs'@; put 'IC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlciAuYnRuIGNkcy1pY29uLC5idG4tZGFuZ2VyIC5idG4gY2xyLWljb24sLmJ0bi1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5h'@; put 'bGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXIgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvcil9LmJ0bi5idG4tZGFuZ2VyOmhvdmVyLC5idG4tZGFuZ2VyIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRh'@; put 'bmdlci1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItaG92ZXItY29sb3IpfS5idG4uYnRuLWRhbmdlcjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXI6aG92ZXIgY2xyLWljb24sLmJ0bi1kYW5nZXIgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWRhbmdl'@; put 'ciAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXI6YWN0aXZlLC5idG4tZGFuZ2VyIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYWN0aXZlLWJnLWNvbG9yKTtj'@; put 'b2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWRhbmdlcjphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2VyOmFjdGl2ZSBjbHItaWNvbiwuYnRuLWRhbmdlciAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWRhbmdlciAuYnRuOmFjdGl2ZSBjbHIt'@; put 'aWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWRhbmdlci5kaXNhYmxlZCwuYnRuLmJ0bi1kYW5nZXI6ZGlzYWJsZWQsLmJ0bi1kYW5nZXIgLmJ0bi5kaXNhYmxlZCwuYnRuLWRhbmdlciAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1i'@; put 'dG4tZGFuZ2VyLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5i'@; put 'dG4tZGFuZ2VyLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWRhbmdlci5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1kYW5nZXI6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2VyOmRpc2FibGVkIGNsci1pY29uLC5idG4tZGFuZ2VyIC5idG4uZGlzYWJsZWQgY2RzLWljb24s'@; put 'LmJ0bi1kYW5nZXIgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWRhbmdlciAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tZGFuZ2VyIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLW5ldXRyYWws'@; put 'LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwuYnRuLC5idG4tbmV1dHJhbCAuYnRuLC5idG4tbmV1dHJhbCAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwgLmJ0bntib3JkZXIt'@; put 'Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxl'@; put 'dmVsIC5hbGVydC1pdGVtIC5idG4tbmV1dHJhbC5idG4gY2RzLWljb24sLmJ0bi5idG4tbmV1dHJhbCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbmV1dHJhbC5idG4gY2xyLWljb24sLmJ0bi1uZXV0cmFsIC5idG4gY2RzLWljb24sLmJ0bi1uZXV0cmFsIC5h'@; put 'bGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbmV1dHJhbCAuYnRuIGNkcy1pY29uLC5idG4tbmV1dHJhbCAuYnRuIGNsci1pY29uLC5idG4tbmV1dHJhbCAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVt'@; put 'IC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtY29sb3IpfS5idG4uYnRuLW5ldXRyYWw6aG92ZXIsLmJ0bi1uZXV0cmFsIC5idG46aG92ZXJ7YmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbDpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1uZXV0cmFsOmhvdmVyIGNsci1pY29uLC5idG4tbmV1dHJhbCAuYnRu'@; put 'OmhvdmVyIGNkcy1pY29uLC5idG4tbmV1dHJhbCAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbDphY3RpdmUsLmJ0bi1uZXV0cmFsIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy'@; put 'LWJ0bi1uZXV0cmFsLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbDphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbmV1dHJhbDphY3RpdmUgY2xyLWljb24sLmJ0bi1uZXV0cmFsIC5idG46YWN0aXZlIGNk'@; put 'cy1pY29uLC5idG4tbmV1dHJhbCAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLmRpc2FibGVkLC5idG4uYnRuLW5ldXRyYWw6ZGlzYWJsZWQsLmJ0bi1uZXV0cmFsIC5idG4uZGlzYWJsZWQsLmJ0'@; put 'bi1uZXV0cmFsIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1j'@; put 'bHItYnRuLW5ldXRyYWwtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW5ldXRyYWwuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tbmV1dHJhbDpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1uZXV0cmFsOmRpc2Fi'@; put 'bGVkIGNsci1pY29uLC5idG4tbmV1dHJhbCAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tbmV1dHJhbCAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tbmV1dHJhbCAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tbmV1dHJhbCAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZh'@; put 'cigtLWNsci1idG4tbmV1dHJhbC1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tb3V0bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS5idG4sLmJ0bi5idG4tb3V0bGluZSAuYnRuLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLC5hbGVydC1hcHAtbGV2ZWwg'@; put 'LmFsZXJ0LWl0ZW0gLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5idG4sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnksLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmJ0biwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4sLmJ0bi1zZWNvbmRhcnkt'@; put 'b3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmFsZXJ0LWFwcC1sZXZl'@; put 'bCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuLC5idG4tb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQt'@; put 'aXRlbSAuYnRuLW91dGxpbmUgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQt'@; put 'b3V0bGluZS1jb2xvcil9LmJ0bi5idG4tb3V0bGluZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS5idG4gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS5i'@; put 'dG4gY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5LW91dGxpbmUuYnRu'@; put 'IGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5idG4gY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAu'@; put 'YWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuYnRuIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5LW91'@; put 'dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXNlY29uZGFy'@; put 'eS1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRs'@; put 'aW5lLXNlY29uZGFyeSAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuIGNkcy1pY29uLC5idG4t'@; put 'b3V0bGluZS1zZWNvbmRhcnkgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0biBjbHItaWNvbiwu'@; put 'YnRuLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5idG4gY2xyLWljb24s'@; put 'LmJ0bi1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZSAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yKX0uYnRuLmJ0bi1v'@; put 'dXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAu'@; put 'YnRuOmhvdmVyLC5idG4tb3V0bGluZSAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1vdXRsaW5lOmhv'@; put 'dmVyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpob3ZlciBjZHMtaWNvbiwuYnRu'@; put 'LmJ0bi1zZWNvbmRhcnktb3V0bGluZTpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciBjbHItaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46aG92ZXIgY2RzLWljb24s'@; put 'LmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi1vdXRsaW5lIC5idG46aG92ZXIgY2RzLWljb24sLmJ0'@; put 'bi1vdXRsaW5lIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLW91dGxpbmU6YWN0aXZlLC5idG4uYnRuLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6YWN0aXZl'@; put 'LC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmFjdGl2ZSwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZh'@; put 'dWx0LW91dGxpbmUtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLW91dGxpbmU6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmU6YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0'@; put 'bjphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25k'@; put 'YXJ5OmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTphY3RpdmUgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4tb3V0bGluZS1z'@; put 'ZWNvbmRhcnkgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVm'@; put 'YXVsdC1vdXRsaW5lLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxp'@; put 'bmUuZGlzYWJsZWQsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tc2Vj'@; put 'b25kYXJ5LW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmRpc2FibGVkLC5idG4tb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVke2NvbG9yOnZh'@; put 'cigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1v'@; put 'dXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBjbHIt'@; put 'aWNvbiwuYnRuLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2xyLWljb24s'@; put 'LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlz'@; put 'YWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGlu'@; put 'ZS1zZWNvbmRhcnk6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2RzLWlj'@; put 'b24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAu'@; put 'YnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUgLmJ0bjpkaXNhYmxl'@; put 'ZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5'@; put 'LW91dGxpbmUuYnRuLC5idG4tb3V0bGluZS1pbmZvIC5idG4sLmJ0bi1vdXRsaW5lLWluZm8gLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWluZm8gLmJ0biwuYnRuLWluZm8tb3V0bGluZSAuYnRuLC5i'@; put 'dG4taW5mby1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW5mby1vdXRsaW5lIC5idG4sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biwuYnRuLXByaW1hcnktb3V0bGluZSAuYWxlcnQtYXBwLWxldmVs'@; put 'IC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAt'@; put 'bGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnksLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtcHJpbWFyeS5idG4sLmJ0bi5idG4tb3V0bGluZS1pbmZvLC5hbGVydC1hcHAtbGV2ZWwgLmFs'@; put 'ZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWluZm8uYnRuLC5idG4uYnRuLWluZm8tb3V0bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW5mby1vdXRsaW5lLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bntib3JkZXItY29sb3I6dmFy'@; put 'KC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5l'@; put 'IGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5LW91dGxpbmUuYnRuIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeS1vdXRsaW5lLmJ0biBjbHIt'@; put 'aWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1pbmZvIC5idG4gY2RzLWljb24sLmJ0bi1v'@; put 'dXRsaW5lLWluZm8gLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtaW5mbyAuYnRuIGNsci1pY29uLC5idG4taW5mby1vdXRsaW5l'@; put 'IC5idG4gY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuIGNsci1p'@; put 'Y29uLC5idG4taW5mby1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW5mby1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRu'@; put 'LXByaW1hcnktb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1w'@; put 'cmltYXJ5LW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuIGNkcy1pY29uLC5idG4tb3V0'@; put 'bGluZS1wcmltYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxp'@; put 'bmUtcHJpbWFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxl'@; put 'dmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1wcmltYXJ5LmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtcHJpbWFyeS5idG4gY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1p'@; put 'bmZvIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWluZm8uYnRuIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mbyBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1pbmZvLmJ0biBjbHItaWNvbiwu'@; put 'YnRuLmJ0bi1pbmZvLW91dGxpbmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWluZm8tb3V0bGluZS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmJ0bi5idG4taW5mby1vdXRsaW5l'@; put 'IGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvLW91dGxpbmUuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWNvbG9y'@; put 'KX0uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6aG92ZXIsLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjpob3ZlciwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjpob3ZlciwuYnRuLmJ0bi1v'@; put 'dXRsaW5lLXByaW1hcnk6aG92ZXIsLmJ0bi5idG4tb3V0bGluZS1pbmZvOmhvdmVyLC5idG4uYnRuLWluZm8tb3V0bGluZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFy'@; put 'eS1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpob3ZlciBjbHItaWNvbiwuYnRuLW91dGxp'@; put 'bmUtaW5mbyAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5i'@; put 'dG46aG92ZXIgY2RzLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5'@; put 'OmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvOmhvdmVyIGNsci1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZTpob3ZlciBjZHMtaWNv'@; put 'biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6'@; put 'dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLXByaW1hcnktb3V0bGluZTphY3RpdmUsLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjphY3RpdmUsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjphY3Rp'@; put 'dmUsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLWluZm86YWN0aXZlLC5idG4uYnRuLWluZm8tb3V0bGluZTphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVt'@; put 'IC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXByaW1hcnktb3V0bGluZTphY3RpdmUgY2RzLWlj'@; put 'b24sLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRu'@; put 'LWluZm8tb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRu'@; put 'LW91dGxpbmUtcHJpbWFyeSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0'@; put 'bi1vdXRsaW5lLWluZm86YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZTphY3RpdmUgY2xyLWlj'@; put 'b24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLXByaW1hcnkt'@; put 'b3V0bGluZTpkaXNhYmxlZCwuYnRuLW91dGxpbmUtaW5mbyAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1pbmZvIC5idG46ZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4tcHJpbWFyeS1vdXRsaW5l'@; put 'IC5idG4uZGlzYWJsZWQsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLC5idG4uYnRuLW91'@; put 'dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNh'@; put 'YmxlZCwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNr'@; put 'Z3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgY2Rz'@; put 'LWljb24sLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bi5kaXNhYmxl'@; put 'ZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuLmRpc2FibGVk'@; put 'IGNkcy1pY29uLC5idG4taW5mby1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4uZGlzYWJs'@; put 'ZWQgY2RzLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkg'@; put 'LmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1v'@; put 'dXRsaW5lLXByaW1hcnkuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgY2xyLWljb24sLmJ0'@; put 'bi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRu'@; put 'LWluZm8tb3V0bGluZS5kaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5h'@; put 'bGVydC1pdGVtIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZTpkaXNhYmxl'@; put 'ZCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lLC5hbGVydC1hcHAtbGV2'@; put 'ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNjZXNzLW91dGxpbmUuYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzcywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zdWNjZXNzLmJ0'@; put 'biwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0biwu'@; put 'YnRuLW91dGxpbmUtc3VjY2VzcyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3JkZXItY29sb3Ip'@; put 'O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAu'@; put 'YnRuLXN1Y2Nlc3Mtb3V0bGluZS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNjZXNz'@; put 'LW91dGxpbmUuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zdWNjZXNzLmJ0'@; put 'biBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5idG4gY2xyLWljb24sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAu'@; put 'YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmFs'@; put 'ZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5hbGVy'@; put 'dC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYWxlcnQt'@; put 'YXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzLW91dGxp'@; put 'bmU6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46aG92ZXIsLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bjpob3ZlcntiYWNrZ3Jv'@; put 'dW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmhvdmVyIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxl'@; put 'cnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTpob3ZlciBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXN1'@; put 'Y2Nlc3M6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyIGNsci1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAu'@; put 'YnRuOmhvdmVyIGNkcy1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1z'@; put 'dWNjZXNzIC5hbGVydC1pdGVtIC5idG46YWN0aXZlLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nl'@; put 'c3Mtb3V0bGluZS1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0'@; put 'bjphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmFjdGl2ZSBjZHMtaWNvbiwu'@; put 'YnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6YWN0aXZlIGNsci1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46YWN0aXZlIGNkcy1pY29u'@; put 'LC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lLmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQt'@; put 'aXRlbSAuYnRuLmRpc2FibGVkLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTpkaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1zdWNj'@; put 'ZXNzOmRpc2FibGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0t'@; put 'Y2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxp'@; put 'bmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUuZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lLmRpc2Fi'@; put 'bGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTpkaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0g'@; put 'LmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6ZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVk'@; put 'IGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkIGNsci1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4u'@; put 'ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLXN1'@; put 'Y2Nlc3MgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xv'@; put 'cjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLW91dGxpbmUuYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQt'@; put 'aXRlbSAuYnRuLC5idG4uYnRuLW91dGxpbmUtd2FybmluZywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS13YXJuaW5nLmJ0biwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuLC5idG4td2FybmluZy1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0g'@; put 'LmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4td2FybmluZy1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0biwuYnRuLW91dGxpbmUtd2FybmluZyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQt'@; put 'aXRlbSAuYnRuLW91dGxpbmUtd2FybmluZyAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4t'@; put 'd2FybmluZy1vdXRsaW5lLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXdhcm5pbmctb3V0bGluZS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5i'@; put 'dG4gY2RzLWljb24sLmJ0bi5idG4td2FybmluZy1vdXRsaW5lIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLW91dGxpbmUuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29u'@; put 'LC5idG4uYnRuLW91dGxpbmUtd2FybmluZyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS13YXJuaW5nLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRu'@; put 'LW91dGxpbmUtd2FybmluZy5idG4gY2xyLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXdh'@; put 'cm5pbmctb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJu'@; put 'aW5nLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGlu'@; put 'ZS13YXJuaW5nIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUt'@; put 'd2FybmluZyAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG46aG92ZXIsLmJ0bi5idG4tb3V0bGlu'@; put 'ZS13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdh'@; put 'cm5pbmctb3V0bGluZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lOmhvdmVyIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmctb3V0bGluZTpob3ZlciBjbHIt'@; put 'aWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIGNsci1pY29uLC5idG4td2FybmluZy1vdXRs'@; put 'aW5lIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0'@; put 'bi13YXJuaW5nLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG46YWN0aXZlLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzphY3RpdmUsLmJ0bi13YXJuaW5nLW91'@; put 'dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWFjdGl2ZS1jb2xvcil9'@; put 'LmJ0bi5idG4td2FybmluZy1vdXRsaW5lOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4td2FybmluZy1vdXRsaW5lOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFs'@; put 'ZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6YWN0aXZlIGNsci1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46YWN0aXZlIGNkcy1p'@; put 'Y29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5l'@; put 'LWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lLmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkLC5idG4uYnRuLXdhcm5pbmctb3V0bGluZTpkaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdh'@; put 'cm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0bjpkaXNh'@; put 'YmxlZCwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZh'@; put 'cigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmUuZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFw'@; put 'cC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4td2FybmluZy1vdXRsaW5lLmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNsci1pY29u'@; put 'LC5idG4uYnRuLXdhcm5pbmctb3V0bGluZTpkaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6ZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1s'@; put 'ZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6'@; put 'ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkIGNsci1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXdhcm5pbmctb3V0'@; put 'bGluZSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4t'@; put 'b3V0bGluZS13YXJuaW5nIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUsLmFsZXJ0'@; put 'LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlci1vdXRsaW5lLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWRhbmdl'@; put 'ci5idG4sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLC5idG4tZGFuZ2VyLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0biwu'@; put 'YnRuLW91dGxpbmUtZGFuZ2VyIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ib3JkZXItY29sb3IpO2Jh'@; put 'Y2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRh'@; put 'bmdlci1vdXRsaW5lLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXItb3V0bGluZS5i'@; put 'dG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1kYW5nZXIuYnRuIGNkcy1pY29uLC5i'@; put 'dG4uYnRuLW91dGxpbmUtZGFuZ2VyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWRhbmdlci5idG4gY2xyLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAu'@; put 'YWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0'@; put 'LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVt'@; put 'IC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRu'@; put 'IGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IpfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxl'@; put 'cnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46aG92ZXIsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91'@; put 'dGxpbmUtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmhvdmVyIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2Rz'@; put 'LWljb24sLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRh'@; put 'bmdlcjpob3ZlciBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG46'@; put 'aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmU6YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46YWN0aXZlLC5idG4uYnRuLW91dGxpbmUt'@; put 'ZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5n'@; put 'ZXItb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZTphY3RpdmUgY2xyLWlj'@; put 'b24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5l'@; put 'IC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4t'@; put 'ZGFuZ2VyLW91dGxpbmUtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZS5kaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmRpc2FibGVkLC5hbGVydC1hcHAtbGV2'@; put 'ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0'@; put 'bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9y'@; put 'OnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUuZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFw'@; put 'cC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZS5kaXNhYmxlZCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5i'@; put 'dG4uYnRuLWRhbmdlci1vdXRsaW5lOmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmU6ZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5h'@; put 'bGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZCBj'@; put 'ZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bjpkaXNh'@; put 'YmxlZCBjZHMtaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5i'@; put 'dG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p'@; put 'dGVtIC5idG4tbmV1dHJhbC1vdXRsaW5lLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtbmV1dHJhbC5idG4sLmJ0bi1uZXV0'@; put 'cmFsLW91dGxpbmUgLmJ0biwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG4sLmJ0bi1vdXRsaW5l'@; put 'LW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5k'@; put 'LWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1uZXV0cmFs'@; put 'LW91dGxpbmUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLW5ldXRyYWwtb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbmV1dHJhbC1vdXRsaW5lLmJ0'@; put 'biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWwgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtbmV1dHJhbC5idG4gY2RzLWljb24s'@; put 'LmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLW5ldXRyYWwuYnRuIGNsci1pY29uLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmFsZXJ0LWFwcC1s'@; put 'ZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5hbGVydC1hcHAtbGV2'@; put 'ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYWxlcnQtYXBwLWxldmVs'@; put 'IC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAu'@; put 'YWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lOmhvdmVyLC5h'@; put 'bGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDpob3ZlciwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2'@; put 'YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwg'@; put 'LmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsOmhvdmVy'@; put 'IGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDpob3ZlciBjbHItaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bjpob3ZlciBj'@; put 'ZHMtaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxl'@; put 'cnQtaXRlbSAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWw6YWN0aXZlLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUt'@; put 'YWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNk'@; put 'cy1pY29uLC5idG4uYnRuLW5ldXRyYWwtb3V0bGluZTphY3RpdmUgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tb3V0'@; put 'bGluZS1uZXV0cmFsOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW91dGxp'@; put 'bmUtbmV1dHJhbCAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZS5kaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0bi5k'@; put 'aXNhYmxlZCwuYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6ZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDpkaXNhYmxl'@; put 'ZCwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbmV1'@; put 'dHJhbC1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWRpc2FibGVk'@; put 'LWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lLmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW5ldXRyYWwtb3V0bGluZS5kaXNhYmxlZCBjbHItaWNv'@; put 'biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6ZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG46ZGlzYWJs'@; put 'ZWQgY2RzLWljb24sLmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lOmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbC5kaXNhYmxlZCBjZHMtaWNvbiwu'@; put 'YnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWwuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuLmRpc2FibGVkIGNk'@; put 'cy1pY29uLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG4u'@; put 'ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xy'@; put 'LWJ0bi1uZXV0cmFsLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWxpbmssLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmsuYnRuLC5idG4tbGluayAuYnRuLC5idG4tbGluayAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1s'@; put 'ZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmsgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xvcil9LmJ0bi5idG4t'@; put 'bGluayBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay5idG4gY2RzLWljb24sLmJ0bi5idG4tbGluayBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay5idG4gY2xyLWljb24sLmJ0bi1saW5rIC5idG4gY2RzLWljb24s'@; put 'LmJ0bi1saW5rIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluayAuYnRuIGNkcy1pY29uLC5idG4tbGluayAuYnRuIGNsci1pY29uLC5idG4tbGluayAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p'@; put 'dGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmsgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IpfS5idG4uYnRuLWxpbms6aG92ZXIsLmJ0bi1saW5rIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIo'@; put 'LS1jbHItYnRuLWxpbmstaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbGluazpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rOmhvdmVyIGNsci1pY29uLC5idG4tbGluayAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tbGlu'@; put 'ayAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbGluazphY3RpdmUsLmJ0bi1saW5rIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFy'@; put 'KC0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluazphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbGluazphY3RpdmUgY2xyLWljb24sLmJ0bi1saW5rIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tbGluayAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1j'@; put 'bHItYnRuLWxpbmstYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1saW5rLmRpc2FibGVkLC5idG4uYnRuLWxpbms6ZGlzYWJsZWQsLmJ0bi1saW5rIC5idG4uZGlzYWJsZWQsLmJ0bi1saW5rIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yKTtjdXJz'@; put 'b3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRu'@; put 'LWxpbmsuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tbGluazpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rOmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluayAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluayAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluayAu'@; put 'YnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluayAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tbGluay1wcmltYXJ5LC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXByaW1hcnku'@; put 'YnRuLC5idG4tbGluay1wcmltYXJ5IC5idG4sLmJ0bi1saW5rLXByaW1hcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXByaW1hcnkgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXBy'@; put 'aW1hcnktYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1jb2xvcil9LmJ0bi5idG4tbGluay1wcmltYXJ5IGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFs'@; put 'ZXJ0LWl0ZW0gLmJ0bi1saW5rLXByaW1hcnkuYnRuIGNkcy1pY29uLC5idG4uYnRuLWxpbmstcHJpbWFyeSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1wcmltYXJ5LmJ0biBjbHItaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuIGNkcy1pY29uLC5i'@; put 'dG4tbGluay1wcmltYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1saW5rLXByaW1hcnkgLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstcHJp'@; put 'bWFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstcHJpbWFyeSAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWNvbG9yKX0uYnRuLmJ0bi1saW5rLXBy'@; put 'aW1hcnk6aG92ZXIsLmJ0bi1saW5rLXByaW1hcnkgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbGluay1wcmlt'@; put 'YXJ5OmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLWxpbmstcHJpbWFyeTpob3ZlciBjbHItaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnkt'@; put 'aG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstcHJpbWFyeTphY3RpdmUsLmJ0bi1saW5rLXByaW1hcnkgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5'@; put 'LWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluay1wcmltYXJ5OmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXByaW1hcnk6YWN0aXZlIGNsci1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG46YWN0aXZlIGNsci1p'@; put 'Y29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluay1wcmltYXJ5LmRpc2FibGVkLC5idG4uYnRuLWxpbmstcHJpbWFyeTpkaXNhYmxlZCwuYnRuLWxpbmstcHJpbWFyeSAuYnRuLmRpc2FibGVkLC5idG4tbGluay1wcmltYXJ5IC5i'@; put 'dG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnktZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xy'@; put 'LWJ0bi1saW5rLXByaW1hcnktZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXByaW1hcnkuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay1wcmltYXJ5LmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWxpbmstcHJpbWFyeTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRu'@; put 'LmJ0bi1saW5rLXByaW1hcnk6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1saW5rLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1s'@; put 'aW5rLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tbGluay1zdWNjZXNzLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXN1Y2Nlc3MuYnRuLC5idG4tbGlu'@; put 'ay1zdWNjZXNzIC5idG4sLmJ0bi1saW5rLXN1Y2Nlc3MgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtYm9yZGVy'@; put 'LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1jb2xvcil9LmJ0bi5idG4tbGluay1zdWNjZXNzIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0'@; put 'bi1saW5rLXN1Y2Nlc3MuYnRuIGNkcy1pY29uLC5idG4uYnRuLWxpbmstc3VjY2VzcyBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1zdWNjZXNzLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuIGNkcy1pY29uLC5idG4tbGluay1zdWNj'@; put 'ZXNzIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1zdWNjZXNzIC5idG4gY2RzLWljb24sLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYWxlcnQt'@; put 'YXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstc3VjY2VzcyAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXN1Y2Nlc3M6aG92ZXIs'@; put 'LmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbGluay1zdWNjZXNzOmhvdmVyIGNk'@; put 'cy1pY29uLC5idG4uYnRuLWxpbmstc3VjY2Vzczpob3ZlciBjbHItaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtaG92ZXItY29sb3Ip'@; put 'fS5idG4uYnRuLWxpbmstc3VjY2VzczphY3RpdmUsLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWFjdGl2ZS1jb2xv'@; put 'cil9LmJ0bi5idG4tbGluay1zdWNjZXNzOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXN1Y2Nlc3M6YWN0aXZlIGNsci1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZh'@; put 'cigtLWNsci1idG4tbGluay1zdWNjZXNzLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluay1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLWxpbmstc3VjY2VzczpkaXNhYmxlZCwuYnRuLWxpbmstc3VjY2VzcyAuYnRuLmRpc2FibGVkLC5idG4tbGluay1zdWNjZXNzIC5idG46ZGlzYWJsZWR7'@; put 'Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1'@; put 'Y2Nlc3MtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXN1Y2Nlc3MuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay1zdWNjZXNzLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWxpbmstc3VjY2VzczpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXN1'@; put 'Y2Nlc3M6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1saW5rLXN1Y2Nlc3Mg'@; put 'LmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tbGluay13YXJuaW5nLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXdhcm5pbmcuYnRuLC5idG4tbGluay13YXJuaW5nIC5i'@; put 'dG4sLmJ0bi1saW5rLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXdhcm5pbmcgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctYm9yZGVyLWNvbG9yKTtiYWNr'@; put 'Z3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1jb2xvcil9LmJ0bi5idG4tbGluay13YXJuaW5nIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXdhcm5p'@; put 'bmcuYnRuIGNkcy1pY29uLC5idG4uYnRuLWxpbmstd2FybmluZyBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay13YXJuaW5nLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4tbGluay13YXJuaW5nIC5hbGVydC1h'@; put 'cHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay13YXJuaW5nIC5idG4gY2RzLWljb24sLmJ0bi1saW5rLXdhcm5pbmcgLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYWxlcnQtYXBwLWxldmVsIC5h'@; put 'bGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstd2FybmluZyAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXdhcm5pbmc6aG92ZXIsLmJ0bi1saW5rLXdh'@; put 'cm5pbmcgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbGluay13YXJuaW5nOmhvdmVyIGNkcy1pY29uLC5idG4u'@; put 'YnRuLWxpbmstd2FybmluZzpob3ZlciBjbHItaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctaG92ZXItY29sb3IpfS5idG4uYnRuLWxp'@; put 'bmstd2FybmluZzphY3RpdmUsLmJ0bi1saW5rLXdhcm5pbmcgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4t'@; put 'bGluay13YXJuaW5nOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXdhcm5pbmc6YWN0aXZlIGNsci1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4t'@; put 'bGluay13YXJuaW5nLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluay13YXJuaW5nLmRpc2FibGVkLC5idG4uYnRuLWxpbmstd2FybmluZzpkaXNhYmxlZCwuYnRuLWxpbmstd2FybmluZyAuYnRuLmRpc2FibGVkLC5idG4tbGluay13YXJuaW5nIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0t'@; put 'Y2xyLWJ0bi1saW5rLXdhcm5pbmctZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctZGlzYWJs'@; put 'ZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXdhcm5pbmcuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay13YXJuaW5nLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWxpbmstd2FybmluZzpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXdhcm5pbmc6ZGlzYWJs'@; put 'ZWQgY2xyLWljb24sLmJ0bi1saW5rLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1saW5rLXdhcm5pbmcgLmJ0bjpkaXNhYmxl'@; put 'ZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tbGluay1kYW5nZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstZGFuZ2VyLmJ0biwuYnRuLWxpbmstZGFuZ2VyIC5idG4sLmJ0bi1saW5rLWRh'@; put 'bmdlciAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstZGFuZ2VyIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigt'@; put 'LWNsci1idG4tbGluay1kYW5nZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItY29sb3IpfS5idG4uYnRuLWxpbmstZGFuZ2VyIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLWRhbmdlci5idG4gY2RzLWljb24sLmJ0bi5i'@; put 'dG4tbGluay1kYW5nZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstZGFuZ2VyLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4g'@; put 'Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuIGNsci1pY29uLC5idG4tbGluay1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVy'@; put 'dC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLWRhbmdlciAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItY29sb3IpfS5idG4uYnRuLWxpbmstZGFuZ2VyOmhvdmVyLC5idG4tbGluay1kYW5nZXIgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9y'@; put 'OnZhcigtLWNsci1idG4tbGluay1kYW5nZXItaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItaG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstZGFuZ2VyOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLWxpbmstZGFuZ2VyOmhvdmVyIGNsci1pY29uLC5idG4t'@; put 'bGluay1kYW5nZXIgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRhbmdlci1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbGluay1kYW5nZXI6YWN0aXZlLC5idG4tbGluay1kYW5nZXIgLmJ0bjph'@; put 'Y3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRhbmdlci1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstZGFuZ2VyOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLWRh'@; put 'bmdlcjphY3RpdmUgY2xyLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1saW5rLWRhbmdlci5k'@; put 'aXNhYmxlZCwuYnRuLmJ0bi1saW5rLWRhbmdlcjpkaXNhYmxlZCwuYnRuLWxpbmstZGFuZ2VyIC5idG4uZGlzYWJsZWQsLmJ0bi1saW5rLWRhbmdlciAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dl'@; put 'ZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbGluay1kYW5nZXIuZGlzYWJsZWQgY2RzLWljb24s'@; put 'LmJ0bi5idG4tbGluay1kYW5nZXIuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tbGluay1kYW5nZXI6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay1kYW5nZXI6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGlu'@; put 'ay1kYW5nZXIgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItZGlzYWJsZWQtY29sb3IpfS5idG4u'@; put 'YnRuLWxpbmstbmV1dHJhbCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1uZXV0cmFsLmJ0biwuYnRuLWxpbmstbmV1dHJhbCAuYnRuLC5idG4tbGluay1uZXV0cmFsIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVy'@; put 'dC1pdGVtIC5idG4tbGluay1uZXV0cmFsIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5l'@; put 'dXRyYWwtY29sb3IpfS5idG4uYnRuLWxpbmstbmV1dHJhbCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1uZXV0cmFsLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLW5ldXRyYWwgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAu'@; put 'YnRuLWxpbmstbmV1dHJhbC5idG4gY2xyLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmstbmV1dHJhbCAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstbmV1'@; put 'dHJhbCAuYnRuIGNkcy1pY29uLC5idG4tbGluay1uZXV0cmFsIC5idG4gY2xyLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLW5ldXRyYWwgLmJ0biBj'@; put 'bHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1jb2xvcil9LmJ0bi5idG4tbGluay1uZXV0cmFsOmhvdmVyLC5idG4tbGluay1uZXV0cmFsIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1ob3Zlci1iZy1jb2xvcik7'@; put 'Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtaG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstbmV1dHJhbDpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLW5ldXRyYWw6aG92ZXIgY2xyLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWxp'@; put 'bmstbmV1dHJhbCAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLW5ldXRyYWw6YWN0aXZlLC5idG4tbGluay1uZXV0cmFsIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0'@; put 'bi1saW5rLW5ldXRyYWwtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstbmV1dHJhbDphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbGluay1uZXV0cmFsOmFjdGl2ZSBjbHItaWNvbiwuYnRuLWxpbmst'@; put 'bmV1dHJhbCAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWxpbmstbmV1dHJhbCAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstbmV1dHJhbC5kaXNhYmxlZCwuYnRuLmJ0bi1saW5rLW5ldXRy'@; put 'YWw6ZGlzYWJsZWQsLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bi5kaXNhYmxlZCwuYnRuLWxpbmstbmV1dHJhbCAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIo'@; put 'LS1jbHItYnRuLWxpbmstbmV1dHJhbC1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbGluay1uZXV0cmFsLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWxpbmstbmV1dHJh'@; put 'bC5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1saW5rLW5ldXRyYWw6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay1uZXV0cmFsOmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay1uZXV0cmFsIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bi5k'@; put 'aXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmstbmV1dHJhbCAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluay1uZXV0cmFsIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWludmVyc2Us'@; put 'LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWludmVyc2UuYnRuLC5idG4taW52ZXJzZSAuYnRuLC5idG4taW52ZXJzZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWludmVyc2UgLmJ0bntib3JkZXIt'@; put 'Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jb2xvcil9LmJ0bi5idG4taW52ZXJzZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxl'@; put 'dmVsIC5hbGVydC1pdGVtIC5idG4taW52ZXJzZS5idG4gY2RzLWljb24sLmJ0bi5idG4taW52ZXJzZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW52ZXJzZS5idG4gY2xyLWljb24sLmJ0bi1pbnZlcnNlIC5idG4gY2RzLWljb24sLmJ0bi1pbnZlcnNlIC5h'@; put 'bGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW52ZXJzZSAuYnRuIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYnRuIGNsci1pY29uLC5idG4taW52ZXJzZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVt'@; put 'IC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWludmVyc2UgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY29sb3IpfS5idG4uYnRuLWludmVyc2U6aG92ZXIsLmJ0bi1pbnZlcnNlIC5idG46aG92ZXJ7YmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4taW52ZXJzZTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1pbnZlcnNlOmhvdmVyIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRu'@; put 'OmhvdmVyIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4taW52ZXJzZTphY3RpdmUsLmJ0bi1pbnZlcnNlIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy'@; put 'LWJ0bi1pbnZlcnNlLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4taW52ZXJzZTphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4taW52ZXJzZTphY3RpdmUgY2xyLWljb24sLmJ0bi1pbnZlcnNlIC5idG46YWN0aXZlIGNk'@; put 'cy1pY29uLC5idG4taW52ZXJzZSAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1pbnZlcnNlLmRpc2FibGVkLC5idG4uYnRuLWludmVyc2U6ZGlzYWJsZWQsLmJ0bi1pbnZlcnNlIC5idG4uZGlzYWJsZWQsLmJ0'@; put 'bi1pbnZlcnNlIC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1j'@; put 'bHItYnRuLWludmVyc2UtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1pbnZlcnNlLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWludmVyc2UuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4taW52ZXJzZTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1pbnZlcnNlOmRpc2Fi'@; put 'bGVkIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZh'@; put 'cigtLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4tc20sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5idG4tc20gLmJ0bntmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC1zaXpl'@; put 'OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0xKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOmNhbGMoLjIqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtoZWlnaHQ6'@; put 'dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWhlaWdodCk7cGFkZGluZzp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtcGFkZGluZyl9LmJ0bi1ibG9ja3tkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJX0uYnRuLC5hbGVydC1hcHAtbGV2ZWwg'@; put 'LmFsZXJ0LWl0ZW0gLmJ0bnttYXJnaW46dmFyKC0tY2xyLWJ0bi12ZXJ0aWNhbC1tYXJnaW4pIHZhcigtLWNsci1idG4taG9yaXpvbnRhbC1tYXJnaW4pIHZhcigtLWNsci1idG4tdmVydGljYWwtbWFyZ2luKSAwfS5idG4uYnRuLWxpbmssLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAu'@; put 'YnRuLWxpbmsuYnRue21hcmdpbi1yaWdodDowfS5idG4uYnRuLWxpbmsuYnRuLWludmVyc2V7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tc206bm90KC5idG4tbGluaykgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOm5vdCguYnRuLWxpbmspIGNsci1p'@; put 'Y29ue3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLGNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSksMCl9LmJ0bi1zbTpub3QoLmJ0bi1saW5rKSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46bm90KC5idG4tbGluaykgY2xyLWljb24sLmJ0bi1zbTpu'@; put 'b3QoLmJ0bi1saW5rKSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46bm90KC5idG4tbGluaykgY2RzLWljb257aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemUpO3dpZHRoOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1z'@; put 'dGFuZGFyZC1pY29uLXNpemUpfS5idG4taWNvbnttaW4td2lkdGg6MH0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGV7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJnLWNv'@; put 'bG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNvbG9yKX0uYnRu'@; put 'LWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1ob3Zlci1jb2xvcil9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xl'@; put 'OmhvdmVyIGNkcy1pY29uLC5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItY29sb3IpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7YmFja2dyb3VuZC1jb2xv'@; put 'cjp2YXIoLS1jbHItYnRuLWxpbmstYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstYWN0aXZlLWNvbG9yKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlIGNkcy1pY29uLC5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2ds'@; put 'ZTphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1jb2xvcil9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlLmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHIt'@; put 'YnRuLWxpbmstZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4tZ3JvdXAu'@; put 'YnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGUuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkIGNkcy1pY29uLC5idG4tZ3JvdXAu'@; put 'YnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtY29sb3IpfS5idG4tZ3JvdXAuYnRuLXNtIC5idG4tZ3JvdXAtb3ZlcmZsb3c+LmRyb3Bkb3duLXRvZ2dsZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p'@; put 'dGVtIC5idG4tZ3JvdXAuYnRuIC5idG4tZ3JvdXAtb3ZlcmZsb3c+LmRyb3Bkb3duLXRvZ2dsZXtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0x'@; put 'KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOmNhbGMoLjIqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtoZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWhlaWdo'@; put 'dCk7cGFkZGluZzp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtcGFkZGluZyl9LmNoZWNrYm94LmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4sLmNoZWNrYm94LWlubGluZS5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hl'@; put 'Y2tib3gtaW5saW5lLmJ0biwucmFkaW8uYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biwucmFkaW8taW5saW5lLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5yYWRpby1pbmxpbmUuYnRue3BhZGRpbmc6MH0uY2hlY2tib3guYnRuIGxhYmVsLC5h'@; put 'bGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGxhYmVsLC5yYWRpby5idG4gbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAu'@; put 'YWxlcnQtaXRlbSAucmFkaW8uYnRuIGxhYmVsLC5yYWRpby1pbmxpbmUuYnRuIGxhYmVsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLWlubGluZS5idG4gbGFiZWx7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFj'@; put 'ZS01KTthbGlnbi1pdGVtczpjZW50ZXI7cGxhY2UtY29udGVudDpjZW50ZXI7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50O3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5jaGVja2JveC5idG4uZGlzYWJsZWQgbGFiZWwsLmNoZWNrYm94LmJ0bjpkaXNhYmxl'@; put 'ZCBsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5kaXNhYmxlZCBsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bjpkaXNhYmxlZCBsYWJlbCwucmFkaW8uYnRuLmRpc2FibGVkIGxhYmVsLC5yYWRpby5idG46ZGlzYWJsZWQgbGFiZWwsLnJhZGlvLWlubGluZS5idG4uZGlzYWJsZWQgbGFiZWws'@; put 'LnJhZGlvLWlubGluZS5idG46ZGlzYWJsZWQgbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXIsLmNoZWNrYm94LWlubGluZS5i'@; put 'dG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye2NvbnRlbnQ6bm9uZX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmJlZm9yZSwucmFkaW8uYnRuIGlucHV0W3R5'@; put 'cGU9cmFkaW9dK2xhYmVsOmFmdGVyLC5yYWRpby1pbmxpbmUuYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmJlZm9yZSwucmFkaW8taW5saW5lLmJ0biBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDphZnRlcntjb250ZW50Om5vbmV9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94'@; put 'XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQt'@; put 'Y29sb3IpfS5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06'@; put 'Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hd'@; put 'OmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRu'@; put 'LWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1jb2xvcil9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2ti'@; put 'b3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNo'@; put 'ZWNrZWQtaG92ZXItY29sb3IpfS5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt'@; put 'YnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRu'@; put 'IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hd'@; put 'OmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LmNoZWNrYm94LmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG46ZGlzYWJsZWQgaW5w'@; put 'dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7Y29s'@; put 'b3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtZGlzYWJsZWQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtZGlzYWJsZWQtYmctY29sb3IpfS5jaGVja2JveC5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tl'@; put 'ZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG46'@; put 'ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmRpc2FibGVkIGlucHV0W3R5'@; put 'cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVj'@; put 'a2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWNvbG9yKX0uY2hlY2tib3guYnRuIGxhYmVsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJl'@; put 'bCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGxhYmVse3dpZHRoOjEwMCV9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBl'@; put 'PWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gu'@; put 'YnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5'@; put 'IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlw'@; put 'ZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNo'@; put 'ZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91'@; put 'dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0'@; put 'W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94'@; put 'XTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVj'@; put 'a2JveF06Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2ti'@; put 'b3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29u'@; put 'LC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBp'@; put 'bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBl'@; put 'PWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVj'@; put 'a2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl'@; put 'Y2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr'@; put 'bGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06'@; put 'Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNo'@; put 'ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk'@; put 'K2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+'@; put 'Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2Jv'@; put 'eC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0'@; put 'bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxp'@; put 'bmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVj'@; put 'a2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24s'@; put 'LmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+'@; put 'Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNo'@; put 'ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlu'@; put 'bGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxp'@; put 'bmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwu'@; put 'Y2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBp'@; put 'bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hl'@; put 'Y2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpo'@; put 'b3ZlcitsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk'@; put 'OmhvdmVyK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVj'@; put 'a2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC1pbmxp'@; put 'bmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3gtaW5s'@; put 'aW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmFsZXJ0LWFwcC1sZXZl'@; put 'bC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVs'@; put 'e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl'@; put 'Y2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFi'@; put 'ZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hl'@; put 'Y2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94'@; put 'LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hl'@; put 'Y2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29u'@; put 'LC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xy'@; put 'LWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5j'@; put 'bHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpj'@; put 'aGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlu'@; put 'cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeSBp'@; put 'bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbyBp'@; put 'bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5w'@; put 'dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91'@; put 'dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5i'@; put 'dG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWlj'@; put 'b24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpo'@; put 'b3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlw'@; put 'ZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1p'@; put 'dGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5h'@; put 'bGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2Jv'@; put 'eF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItY29s'@; put 'b3IpfS5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUg'@; put 'aW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9'@; put 'Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpj'@; put 'aGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2Jv'@; put 'eF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3Rp'@; put 'dmUrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94'@; put 'LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNr'@; put 'Ym94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNo'@; put 'ZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tl'@; put 'ZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6'@; put 'dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYWN0aXZlLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hl'@; put 'Y2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFj'@; put 'dGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+'@; put 'Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZSts'@; put 'YWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk'@; put 'OmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNo'@; put 'ZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hl'@; put 'Y2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNr'@; put 'Ym94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1p'@; put 'bmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5j'@; put 'aGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29u'@; put 'LC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWlj'@; put 'b24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWlj'@; put 'b24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZSts'@; put 'YWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNr'@; put 'Ym94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJp'@; put 'bWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUu'@; put 'YnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2Rz'@; put 'LWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlw'@; put 'ZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0'@; put 'LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNv'@; put 'biwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25k'@; put 'YXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNo'@; put 'ZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNr'@; put 'Ym94LmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1h'@; put 'cnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91'@; put 'dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlz'@; put 'YWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVk'@; put 'IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4u'@; put 'ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNr'@; put 'Ym94LmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxl'@; put 'ZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0'@; put 'W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpj'@; put 'aGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJl'@; put 'bCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk'@; put 'K2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94'@; put 'XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hl'@; put 'Y2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0'@; put 'W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5s'@; put 'aW5lLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFs'@; put 'ZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94'@; put 'LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1j'@; put 'aGVja2VkLWRpc2FibGVkLWJnLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06'@; put 'Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl'@; put 'Y2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNk'@; put 'cy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNr'@; put 'Ym94LmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRu'@; put 'LmJ0bi1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXBy'@; put 'aW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5i'@; put 'dG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5j'@; put 'aGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJl'@; put 'bD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hd'@; put 'OmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9'@; put 'Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlu'@; put 'cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFy'@; put 'eS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0'@; put 'bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxl'@; put 'dmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xh'@; put 'YmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0'@; put 'W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1p'@; put 'bmZvLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNk'@; put 'cy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVs'@; put 'PmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xh'@; put 'YmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hd'@; put 'OmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlw'@; put 'ZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLmRpc2FibGVkIGlucHV0W3R5'@; put 'cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbzpkaXNhYmxlZCBpbnB1dFt0'@; put 'eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQg'@; put 'aW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lOmRp'@; put 'c2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRu'@; put 'LmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWlj'@; put 'b24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNr'@; put 'Ym94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGlu'@; put 'ZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxp'@; put 'bmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+'@; put 'Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1j'@; put 'aGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNv'@; put 'bmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gt'@; put 'aW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFi'@; put 'ZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZS5k'@; put 'aXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29u'@; put 'LC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG46ZGlzYWJsZWQgaW5w'@; put 'dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVy'@; put 'dC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNs'@; put 'ci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hd'@; put 'OmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWNvbG9y'@; put 'KX0uY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJp'@; put 'bWFyeS1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnkgaW5w'@; put 'dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hl'@; put 'Y2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc3VjY2Vz'@; put 'cyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zdWNjZXNzIGlu'@; put 'cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hd'@; put 'OmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4td2Fy'@; put 'bmluZyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1iZy1jb2xvcik7'@; put 'Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNr'@; put 'ZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNk'@; put 'cy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNo'@; put 'ZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCts'@; put 'YWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNr'@; put 'Ym94LWlubGluZS5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCts'@; put 'YWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jaGVja2VkLWNvbG9yKX0u'@; put 'Y2hlY2tib3guYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1saW5rIGlu'@; put 'cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94'@; put 'LmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY2hlY2tl'@; put 'ZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hl'@; put 'Y2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVj'@; put 'a2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1iZy1jb2xvcik7Y29s'@; put 'b3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1k'@; put 'ZWZhdWx0LWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hl'@; put 'Y2tlZC1ob3Zlci1jb2xvcil9LnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hl'@; put 'Y2tlZC1ob3Zlci1jb2xvcil9LnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNr'@; put 'ZWQtYWN0aXZlLWNvbG9yKX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNo'@; put 'ZWNrZWQtYWN0aXZlLWNvbG9yKX0ucmFkaW8uYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2Fi'@; put 'bGVkLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWJnLWNvbG9yKX0ucmFkaW8uYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5kaXNhYmxlZCBpbnB1dFt0'@; put 'eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFy'@; put 'KC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtZGlzYWJsZWQtY29sb3IpfS5yYWRpby5idG4gbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGxhYmVse3dpZHRoOjEwMCV9LnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNr'@; put 'ZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106'@; put 'Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUt'@; put 'c2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1y'@; put 'YWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQt'@; put 'Y2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4taW5m'@; put 'byBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWlj'@; put 'b24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0'@; put 'bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1y'@; put 'YWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5j'@; put 'ZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0'@; put 'bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0'@; put 'bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91'@; put 'dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKX0u'@; put 'cmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVj'@; put 'a2VkOmhvdmVyK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLnJhZGlvLmJ0'@; put 'bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRb'@; put 'dHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlv'@; put 'XTpjaGVja2VkOmhvdmVyK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRb'@; put 'dHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIr'@; put 'bGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0'@; put 'bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5l'@; put 'IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1'@; put 'dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJh'@; put 'ZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106'@; put 'Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBl'@; put 'PXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlu'@; put 'cHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9cmFkaW9d'@; put 'OmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItY29sb3IpfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvIGlu'@; put 'cHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWwsLnJhZGlvLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xh'@; put 'YmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRs'@; put 'aW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRp'@; put 'by5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYWN0aXZl'@; put 'LWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtY29sb3IpfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRb'@; put 'dHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xh'@; put 'YmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRu'@; put 'LmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNl'@; put 'Y29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxp'@; put 'bmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNv'@; put 'bmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lIGlu'@; put 'cHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8t'@; put 'b3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRu'@; put 'LmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVm'@; put 'YXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlv'@; put 'LmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9d'@; put 'OmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRu'@; put 'LXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6'@; put 'ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1y'@; put 'YWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFi'@; put 'ZWwsLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwu'@; put 'cmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRp'@; put 'by5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVj'@; put 'a2VkLWRpc2FibGVkLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWJnLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFk'@; put 'aW8uYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNv'@; put 'bmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBl'@; put 'PXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2Rz'@; put 'LWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0'@; put 'bi1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZS5k'@; put 'aXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNh'@; put 'YmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2Fi'@; put 'bGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNh'@; put 'YmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2Fi'@; put 'bGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVk'@; put 'IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQg'@; put 'aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVk'@; put 'IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgaW5w'@; put 'dXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGlu'@; put 'ZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5i'@; put 'dG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNv'@; put 'biwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2Vk'@; put 'K2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNk'@; put 'cy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2Nv'@; put 'bG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY2hlY2tlZC1iZy1jb2xvcik7Y29s'@; put 'b3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWlj'@; put 'b257Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2'@; put 'YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntj'@; put 'b2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigt'@; put 'LWNsci1idG4td2FybmluZy1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9y'@; put 'OnZhcigtLWNsci1idG4td2FybmluZy1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1i'@; put 'dG4tZGFuZ2VyLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNs'@; put 'ci1idG4tZGFuZ2VyLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNo'@; put 'ZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nl'@; put 'c3Mtb3V0bGluZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJh'@; put 'ZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9'@; put 'cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+'@; put 'Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4td2FybmluZy1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVt'@; put 'IC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWNoZWNrZWQtYmct'@; put 'Y29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXdhcm5pbmctb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxl'@; put 'cnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4td2FybmluZy1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5h'@; put 'bGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcg'@; put 'aW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAt'@; put 'bGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0'@; put 'bi1kYW5nZXItb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFw'@; put 'cC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFw'@; put 'cC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0'@; put 'bi5idG4tb3V0bGluZS1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHti'@; put 'YWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4u'@; put 'YnRuLWxpbmsgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFy'@; put 'KC0tY2xyLWJ0bi1pbnZlcnNlLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW52ZXJz'@; put 'ZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWNvbG9yKX0uYnRuLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWZsZXg7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmJ0bi1ncm91'@; put 'cCBjbHItZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cCBjbHItZHJvcGRvd246bGFzdC1jaGlsZCAuZHJvcGRvd24tdG9nZ2xle2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci1idG4tYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRv'@; put 'bS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzKX0uYnRuLWdyb3VwIC5idG57bWFyZ2luOjA7b3ZlcmZsb3c6aGlkZGVufS5idG4tZ3JvdXAgLmJ0biBsYWJlbHtoZWlnaHQ6MTAwJX0uYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1yYWRpb106aG92ZXIsLmJ0bi1n'@; put 'cm91cCAuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmhvdmVye2FwcGVhcmFuY2U6bm9uZTtvcGFjaXR5OjE7dG9wOjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtib3JkZXI6SGlnaGxpZ2h0IHNvbGlkIDJweH0uYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1yYWRpb106aG92ZXI6Oi1tcy1j'@; put 'aGVjaywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06aG92ZXI6Oi1tcy1jaGVja3tkaXNwbGF5Om5vbmV9LmJ0bi1ncm91cCAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1n'@; put 'cm91cCAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAgLmJ0bjpkaXNhYmxlZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yaWdodDpub25lfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90'@; put 'KDpmaXJzdC1jaGlsZCkgLmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDpsYXN0LWNoaWxkKSAuYnRue2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRp'@; put 'dXM6MH0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCk+LmJ0biwuYnRuLWdyb3VwLmJ0bi1wcmltYXJ5Pi5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdyb3VwLmJ0bi1uZXV0cmFsIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCk+LmJ0biwuYnRuLWdy'@; put 'b3VwLmJ0bi1uZXV0cmFsPi5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCk+LmJ0biwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzPi5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLnRvb2x0'@; put 'aXA6bm90KDpsYXN0LWNoaWxkKT4uYnRuLC5idG4tZ3JvdXAuYnRuLWRhbmdlcj4uYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1ncm91cC5idG4td2FybmluZyAudG9vbHRpcDpub3QoOmxhc3QtY2hpbGQpPi5idG4sLmJ0bi1ncm91cC5idG4td2FybmluZz4uYnRuOm5vdCg6bGFzdC1jaGls'@; put 'ZCl7bWFyZ2luOjAgdmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgpIDAgMH0uYnRuLWdyb3VwPi5idG4tZ3JvdXAtb3ZlcmZsb3d7cG9zaXRpb246cmVsYXRpdmV9LmJ0bi1ncm91cD4uYnRuLWdyb3VwLW92ZXJmbG93Omxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCk+LmJ0bjpmaXJzdC1j'@; put 'aGlsZHtib3JkZXItcmFkaXVzOjAgdmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzKSB2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMpIDB9LmJ0bi1ncm91cD4uYnRuLWdyb3VwLW92ZXJmbG93Omxhc3QtY2hpbGQ6Zmlyc3QtY2hpbGQ+LmJ0bjpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVz'@; put 'OnZhcigtLWNsci1idG4tYm9yZGVyLXJhZGl1cyl9LmJ0bi1ncm91cCAuYnRuOm5vdChbZGlzYWJsZWRdKSsuYnRue2JvcmRlci1sZWZ0Om5vbmV9LmJ0bi1ncm91cCAudG9vbHRpcDpub3QoOmZpcnN0LWNoaWxkKSAuYnRue2JvcmRlci1sZWZ0Om5vbmV9LmJ0bi1ncm91cCAuYnRuOm5vdChb'@; put 'ZGlzYWJsZWRdKSsuYnRuLWdyb3VwLW92ZXJmbG93IC5idG57Ym9yZGVyLWxlZnQ6bm9uZX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGUsLmJ0bi1ncm91cC5idG4taWNvbi1saW5rLmJ0bi1saW5rIC5idG4sLmJ0bi1ncm91cC5idG4taWNvbiAuYnRue21pbi13aWR0aDow'@; put 'fS5idG4tZ3JvdXAgLmNsci1pY29uLXRpdGxle2Rpc3BsYXk6bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lfS5idG4tZ3JvdXAgLmRyb3Bkb3duLXRvZ2dsZXtkaXNwbGF5OmJsb2NrfS5idG4tZ3JvdXAgLmRyb3Bkb3duLW1lbnUgY2RzLWljb24sLmJ0bi1ncm91cCAuZHJvcGRvd24tbWVudSBj'@; put 'bHItaWNvbntkaXNwbGF5Om5vbmV9LmJ0bi1ncm91cCAuZHJvcGRvd24tbWVudSAuY2xyLWljb24tdGl0bGV7ZGlzcGxheTppbmxpbmV9LmNoZWNrYm94LC5yYWRpb3twb3NpdGlvbjpyZWxhdGl2ZX0uY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sLmNoZWNrYm94IGlucHV0W3R5cGU9'@; put 'cmFkaW9dLC5yYWRpbyBpbnB1dFt0eXBlPWNoZWNrYm94XSwucmFkaW8gaW5wdXRbdHlwZT1yYWRpb117Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDowO3dpZHRoOjA7b3BhY2l0eTowfS5kcm9wZG93bi1tZW51LmNsci1idXR0b24tZ3JvdXAt'@; put 'bWVudXt2aXNpYmlsaXR5OnZpc2libGV9YnV0dG9uLmNsb3Nle3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0uY2xvc2V7ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjEuOHJlbTt0cmFuc2l0aW9uOmNvbG9yIGxp'@; put 'bmVhciAuMnM7Zm9udC13ZWlnaHQ6MjAwO3RleHQtc2hhZG93Om5vbmU7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjp2YXIoLS1jbHItY2xvc2UtY29sb3IpfS5jbG9zZSBjZHMtaWNvbiwuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItY2xvc2UtY29sb3IpfS5jbG9zZTpob3Zlcntj'@; put 'b2xvcjp2YXIoLS1jbHItY2xvc2UtY29sb3ItaG92ZXIpfS5jbG9zZTpob3ZlciBjZHMtaWNvbiwuY2xvc2U6aG92ZXIgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItY2xvc2UtY29sb3ItaG92ZXIpfS5jbG9zZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWNsb3NlLWNvbG9yLWFjdGl2ZSl9LmNs'@; put 'b3NlOmFjdGl2ZSBjZHMtaWNvbiwuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWNsb3NlLWNvbG9yLWFjdGl2ZSl9LmNsb3NlOmZvY3Vze291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lKTtvdXRsaW5lLWNvbG9yOi13ZWJraXQt'@; put 'Zm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0KX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1hbGVydC1ib3JkZXJyYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEw'@; put 'MCk7LS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXdpZHRoOmNhbGMoMTQ0ICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItYWxlcnQtYWN0aW9uLWFjdGl2ZS1j'@; put 'b2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItYWxlcnQtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yKTstLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1h'@; put 'Y3Rpb24tYWN0aXZlLWNvbG9yKTstLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1iZy1j'@; put 'b2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8tdGludCk7LS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTst'@; put 'LWNsci1hbGVydC1pbmZvLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tZm9udC1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yOnZhcigtLWNs'@; put 'ci1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWFjdGl2ZS1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29u'@; put 'LWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcy10aW50KTstLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1hbGVydC1zdWNj'@; put 'ZXNzLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFs'@; put 'ZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tYWN0aXZlLWNv'@; put 'bG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLXRpbnQpOy0tY2xyLWFsZXJ0'@; put 'LXdhcm5pbmctZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWFsZXJ0LXdhcm5pbmctYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZyk7LS1jbHItYWxlcnQtd2FybmluZy1pY29uLWNvbG9yOnZhcigtLWNsci1h'@; put 'bGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1mb250LWNvbG9y'@; put 'KTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1h'@; put 'bGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXItdGludCk7LS1jbHItYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1hbGVydC1kYW5nZXItYm9yZGVyLWNvbG9yOnZhcigtLWNk'@; put 'cy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTstLWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItZm9udC1jb2xvcik7LS1jbHIt'@; put 'YWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tYWN0aXZlLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNv'@; put 'bi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcik7LS1jbHItYWxlcnQtbmV1dHJhbC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwtdGludCk7LS1jbHItYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlh'@; put 'cy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItYWxlcnQtbmV1dHJhbC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1hbGVydC1uZXV0cmFsLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7LS1jbHItYWxl'@; put 'cnQtbmV1dHJhbC1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LW5ldXRyYWwtYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LW5ldXRyYWwtYWN0aW9uLWFjdGl2'@; put 'ZS1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWFjdGl2ZS1jb2xvcik7LS1jbHItYWxlcnQtbmV1dHJhbC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1iZy1jb2xvcjp2YXIoLS1j'@; put 'ZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1hcHAtYWxlcnQtaW5mby1ib3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtaW5mby1pY29uLWNvbG9yOnZh'@; put 'cigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVy'@; put 'dC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZv'@; put 'bnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZyk7LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsYWNrKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1i'@; put 'b3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250'@; put 'LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29s'@; put 'b3IpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWFwcC1h'@; put 'bGVydC1kYW5nZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYm9yZGVyLWNvbG9yOm5vbmU7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZv'@; put 'bnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTst'@; put 'LWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3Ip'@; put 'Oy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWJv'@; put 'cmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWZvbnQt'@; put 'Y29sb3IpOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xv'@; put 'cik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1hcHAt'@; put 'YWxlcnQtbmV1dHJhbC1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtYm9yZGVyLWNvbG9yOm5vbmU7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRy'@; put 'YWwtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1mb250'@; put 'LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJh'@; put 'bC1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mby1zaGFkZSk7LS1jbHItYXBw'@; put 'LWFsZXJ0LXdhcm5pbmctcGFnZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLXNoYWRlKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXNoYWRlKTstLWNsci1hcHAtYWxlcnQtc3VjY2Vz'@; put 'cy1wYWdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3Mtc2hhZGUpOy0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbC1zaGFkZSk7LS1jbHItYXBwLWFsZXJ0LWluZm8tcGFnZXItZm9udC1j'@; put 'b2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFjayk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1mb250LWNvbG9yOnZhcigtLWNkcy1h'@; put 'bGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtcGFnZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLXBhZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5'@; put 'cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1saWdodHdlaWdodC1hbGVydC1pbmZvLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1saWdodHdlaWdodC1hbGVydC1pbmZvLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAw'@; put 'KTstLWNsci1saWdodHdlaWdodC1hbGVydC13YXJuaW5nLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcmspOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0t'@; put 'Y2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTstLWNsci1saWdodHdlaWdodC1hbGVydC1kYW5nZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxpZ2h0d2Vp'@; put 'Z2h0LWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0'@; put 'LW5ldXRyYWwtaWNvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwtc2hhZGUpOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApfS5hbGVydC1pY29ue2hlaWdodDp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5hbGVydC1pY29uLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleDtm'@; put 'bGV4OjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5hbGVydC1pdGVte2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpfS5hbGVydC1p'@; put 'dGVtc3tmbGV4OjEgMSBhdXRvO2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2Rpc3BsYXk6ZmxleH0uYWxlcnQtaXRlbT5zcGFuLC5hbGVydC10ZXh0e2ZsZXg6MSAxO3RleHQt'@; put 'YWxpZ246bGVmdDthbGlnbi1zZWxmOmNlbnRlcn0uYWxlcnR7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OmNhbGMo'@; put 'MjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7d2lkdGg6YXV0'@; put 'bztib3JkZXItcmFkaXVzOnZhcigtLWNsci1hbGVydC1ib3JkZXJyYWRpdXMpO3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTtiYWNrZ3JvdW5kOnZhcigt'@; put 'LWNsci1hbGVydC1pbmZvLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3IpfS5hbGVydCAuYWxl'@; put 'cnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5iYWRnZSkgY2RzLWljb24sLmFsZXJ0IC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5v'@; put 'dCguYmFkZ2UpIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0IC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWljb24tY29sb3IpfS5hbGVydCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtj'@; put 'b2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5m'@; put 'by1hY3Rpb24tY29sb3IpfS5hbGVydCAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQg'@; put 'LmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0'@; put 'aW9uLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNkcy1pY29uLC5hbGVy'@; put 'dCAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2xyLWljb24sLmFsZXJ0IC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9'@; put 'LmFsZXJ0IC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQgLmNsb3NlOmZv'@; put 'Y3VzLC5hbGVydCAuY2xvc2U6aG92ZXIsLmFsZXJ0IC5jbG9zZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0IC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQgLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydCAuY2xv'@; put 'c2U6aG92ZXIgY2RzLWljb24sLmFsZXJ0IC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQgLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQgLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC5h'@; put 'bGVydC1pbmZve2JhY2tncm91bmQ6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hbGVydC1pbmZv'@; put 'LWJvcmRlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5iYWRnZSl7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5iYWRn'@; put 'ZSkgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5iYWRnZSkgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtaWNvbntjb2xvcjp2YXIoLS1jbHItYWxl'@; put 'cnQtaW5mby1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0'@; put 'aXZlLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQuYWxl'@; put 'cnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuIGNkcy1pY29uLC5h'@; put 'bGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZv'@; put 'LWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5h'@; put 'bGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93'@; put 'bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2Ug'@; put 'Y2RzLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlOmZvY3VzLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciwuYWxlcnQuYWxlcnQtaW5m'@; put 'byAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8g'@; put 'LmNsb3NlOmhvdmVyIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTphY3RpdmUgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYWxlcnQt'@; put 'aW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVj'@; put 'dC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29sb3IpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2Upe2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3Ip'@; put 'fS5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNkcy1pY29uLC5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nl'@; put 'c3MtZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0t'@; put 'Y2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2Nv'@; put 'bG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlv'@; put 'bi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biBjbHItaWNvbiwuYWxlcnQuYWxlcnQtc3Vj'@; put 'Y2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24u'@; put 'YnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0'@; put 'LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2xyLWljb257'@; put 'Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2V7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNkcy1pY29uLC5hbGVydC5h'@; put 'bGVydC1zdWNjZXNzIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29sb3IpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3Mg'@; put 'LmNsb3NlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6Zm9jdXMgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydC5hbGVy'@; put 'dC1zdWNjZXNzIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2Zp'@; put 'bGw6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcik7Ym9yZGVy'@; put 'OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYm9yZGVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKXtjb2xvcjp2YXIoLS1jbHItYWxl'@; put 'cnQtd2FybmluZy1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjbHItaWNvbntmaWxs'@; put 'OnZhcigtLWNsci1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRv'@; put 'd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24sLmFsZXJ0LmFsZXJ0LXdhcm5p'@; put 'bmcgLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1j'@; put 'bHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG4gY2xy'@; put 'LWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQt'@; put 'd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46'@; put 'YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2ds'@; put 'ZS5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5j'@; put 'bG9zZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVy'@; put 'LC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZvY3VzIGNkcy1pY29uLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTpmb2N1'@; put 'cyBjbHItaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6aG92ZXIgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVyIGNsci1pY29uLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNs'@; put 'b3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2Vy'@; put 'LWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hbGVydC1kYW5nZXItYm9yZGVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2Upe2Nv'@; put 'bG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2Up'@; put 'IGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9ucyAuZHJvcGRv'@; put 'd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2ZS1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVy'@; put 'dC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjp2YXIo'@; put 'LS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biBjbHIt'@; put 'aWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1kYW5n'@; put 'ZXIgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBj'@; put 'ZHMtaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2'@; put 'ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2V7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjZHMtaWNvbiwu'@; put 'YWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LWRhbmdl'@; put 'ciAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LmFsZXJ0'@; put 'LWRhbmdlciAuY2xvc2U6aG92ZXIgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZh'@; put 'cigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LW5ldXRyYWx7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtbmV1dHJhbC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7Ym9yZGVyOnZhcigt'@; put 'LWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwtYm9yZGVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtbmV1'@; put 'dHJhbC1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjbHItaWNvbntmaWxsOnZhcigt'@; put 'LWNsci1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpfS5hbGVydCAuYWxlcnQtaXRlbT5zcGFuLC5hbGVydCAuYWxlcnQtaXRlbSAuYWxlcnQtdGV4dCwuYWxlcnQgLmFsZXJ0LWl0ZW0gLmFsZXJ0LWFjdGlvbnN7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIDB9LmFsZXJ0IC5h'@; put 'bGVydC1pdGVtIC5jbHItaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5hbGVydCAuYWxlcnQtaXRlbSAuY2xyLWljb24rLmFsZXJ0LXRleHR7'@; put 'cGFkZGluZy1sZWZ0OjB9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbisuYWxlcnQtdGV4dDpiZWZvcmV7Y29udGVudDpub25lfS5hbGVydCAuYWxlcnQtYWN0aW9uc3tmbGV4OjAgMCBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0uYWxlcnQgLmFsZXJ0LWFjdGlvbnM+LmFsZXJ0LWFjdGlv'@; put 'bjpub3QoOmxhc3QtY2hpbGQpLC5hbGVydCAuYWxlcnQtYWN0aW9ucz4uZHJvcGRvd246bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duLWl0ZW17Y29sb3I6dmFyKC0tY2xyLWRyb3Bk'@; put 'b3duLXRleHQtY29sb3IpfS5hbGVydCAuYWxlcnQtYWN0aW9uLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xle3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmFsZXJ0IC5hbGVydC1hY3Rpb24gYnV0dG9uLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bil7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBv'@; put 'aW50ZXI7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLXRleHQtY29sb3IpfS5hbGVydCAuZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MH0uYWxlcnQgLmNsb3Nle29yZGVyOjEwMDtmbGV4OjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2hlaWdo'@; put 'dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMH0uYWxlcnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmFsZXJ0IC5hbGVydC1zcGlubmVyLnNwaW5uZXItaW5saW5le2hlaWdodDp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21hcmdpbjowfS5hbGVydCAuYWxlcnQtc3Bpbm5lci5zcGlubmVyLWlu'@; put 'bGluZTpiZWZvcmUsLmFsZXJ0IC5hbGVydC1zcGlubmVyLnNwaW5uZXItaW5saW5lOmFmdGVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21pbi13aWR0'@; put 'aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5hbGVydCAuY2xvc2V+LmFsZXJ0LWl0ZW0+LmFsZXJ0LWFjdGlvbnN7cGFkZGluZy1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5hbGVydCAuY2xvc2V+LmFsZXJ0LWl0ZW0+LmFsZXJ0LWFjdGlvbnM+LmFsZXJ0LWFjdGlvbjps'@; put 'YXN0LWNoaWxke21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5hbGVydC5hbGVydC1saWdodHdlaWdodHtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MH0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1ze3BhZGRpbmc6MH0uYWxlcnQuYWxlcnQtbGlnaHR3'@; put 'ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVte21pbi1oZWlnaHQ6MDttYXJnaW46MH0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtPnNwYW4sLmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0IC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSAuYWxlcnQt'@; put 'YWN0aW9ucywuYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIC5hbGVydC10ZXh0e2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9k'@; put 'eS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyl9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0IC5jbG9z'@; put 'ZXtkaXNwbGF5Om5vbmV9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0Om5vdCguYWxlcnQtc20pIC5hbGVydC1pY29ue21hcmdpbjowfS5hbGVydC5hbGVydC1saWdodHdlaWdodC5hbGVydC1pbmZvIC5hbGVydC10ZXh0e2NvbG9yOnZhcigtLWNsci1saWdodHdlaWdodC1hbGVydC1pbmZvLWZv'@; put 'bnQtY29sb3IpfS5hbGVydC5hbGVydC1saWdodHdlaWdodC5hbGVydC1pbmZvIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1saWdodHdlaWdodC1hbGVydC1pbmZvLWljb24tY29sb3IpfS5hbGVydC5hbGVydC1saWdodHdlaWdodC5hbGVydC13YXJuaW5nIC5hbGVydC10ZXh0e2NvbG9y'@; put 'OnZhcigtLWNsci1saWdodHdlaWdodC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpfS5hbGVydC5hbGVydC1saWdodHdlaWdodC5hbGVydC13YXJuaW5nIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1saWdodHdlaWdodC1hbGVydC13YXJuaW5nLWljb24tY29sb3IpfS5hbGVydC5hbGVy'@; put 'dC1saWdodHdlaWdodC5hbGVydC1kYW5nZXIgLmFsZXJ0LXRleHR7Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQuYWxlcnQtZGFuZ2VyIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1saWdodHdl'@; put 'aWdodC1hbGVydC1kYW5nZXItaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LXRleHR7Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0'@; put 'LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LXRleHR7Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LW5ldXRy'@; put 'YWwtZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LW5ldXRyYWwtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbHttYXJnaW46MDtib3JkZXI6MDtib3JkZXItcmFk'@; put 'aXVzOjA7b3ZlcmZsb3cteTphdXRvO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQg'@; put 'dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWJvcmRlci1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRl'@; put 'bXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFs'@; put 'ZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7Ym9yZGVyLWNv'@; put 'bG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVy'@; put 'dC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9'@; put 'LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9n'@; put 'Z2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHIt'@; put 'YXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUu'@; put 'YnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFs'@; put 'ZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6'@; put 'Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxl'@; put 'cnQtYXBwLWxldmVsIC5jbG9zZTpmb2N1cyBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1s'@; put 'ZXZlbCAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bnttYXJnaW46MH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm97YmFja2dyb3VuZDp2'@; put 'YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYm9yZGVyLWNv'@; put 'bG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5iYWRnZSl7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0'@; put 'ZW0gYTpub3QoLmJhZGdlKSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5iYWRnZSkgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVy'@; put 'dC1pbmZvIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFj'@; put 'dGlvbi1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2'@; put 'YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0'@; put 'LWluZm8tYWN0aW9uLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRu'@; put 'IGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1j'@; put 'b2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVy'@; put 'dC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5i'@; put 'dG46YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZXtj'@; put 'b2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZv'@; put 'LWNsb3NlLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFs'@; put 'ZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xv'@; put 'c2U6aG92ZXIgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmFjdGl2ZSBjbHIt'@; put 'aWNvbntmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRh'@; put 'bmdlci1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1ib3JkZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRl'@; put 'bSBhOm5vdCguYmFkZ2Upe2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFu'@; put 'Z2VyIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItZm9udC1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1k'@; put 'YW5nZXItaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1h'@; put 'bGVydC1kYW5nZXItYWN0aW9uLWFjdGl2ZS1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1j'@; put 'b2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcik7Y29sb3I6'@; put 'dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBw'@; put 'LWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IpfS5hbGVydC1h'@; put 'cHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxl'@; put 'dmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRu'@; put 'OmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xv'@; put 'c2V7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hcHAt'@; put 'YWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZXtjb2xv'@; put 'cjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydC1h'@; put 'cHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVs'@; put 'LmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFse2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWJn'@; put 'LWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWJvcmRlci1jb2xvcil9LmFsZXJ0LWFwcC1sZXZl'@; put 'bC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2Upe2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIGE6bm90KC5i'@; put 'YWRnZSkgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1'@; put 'dHJhbCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVydC1h'@; put 'cHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAu'@; put 'YWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1hY3Rpb24t'@; put 'Y29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWFjdGlvbi5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5kcm9wZG93bi10'@; put 'b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0'@; put 'LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1h'@; put 'Y3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0'@; put 'LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmNsb3Nle2NvbG9yOnZhcigtLWNsci1h'@; put 'cHAtYWxlcnQtbmV1dHJhbC1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmNsb3NlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtY2xv'@; put 'c2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1h'@; put 'cHAtYWxlcnQtbmV1dHJhbC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmNsb3NlOmZvY3VzIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5h'@; put 'bGVydC1uZXV0cmFsIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmNsb3NlOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQt'@; put 'bmV1dHJhbCAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1iZy1jb2xv'@; put 'cik7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxl'@; put 'cnQtd2FybmluZyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2Up'@; put 'IGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcg'@; put 'LmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmct'@; put 'YWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9n'@; put 'Z2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9y'@; put 'OnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVs'@; put 'LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntj'@; put 'b2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29s'@; put 'b3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZl'@; put 'IGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBw'@; put 'LWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlIGNkcy1pY29u'@; put 'LC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0'@; put 'LXdhcm5pbmcgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZv'@; put 'Y3VzIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVyIGNs'@; put 'ci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXIt'@; put 'Y29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJv'@; put 'cmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nl'@; put 'c3MtZm9udC1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSBhOm5vdCguYmFkZ2UpIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gYTpub3QoLmJhZGdlKSBj'@; put 'bHItaWNvbntmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQt'@; put 'c3VjY2VzcyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVy'@; put 'dC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2Vz'@; put 'cyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rp'@; put 'b24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93'@; put 'bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFs'@; put 'ZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVy'@; put 'dC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFs'@; put 'ZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3Nle2NvbG9yOnZhcigtLWNs'@; put 'ci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3Mt'@; put 'Y2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNs'@; put 'ci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmZvY3VzIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZl'@; put 'bC5hbGVydC1zdWNjZXNzIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxl'@; put 'cnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW1ze2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtNCl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYWxlcnQtYWN0aW9uc3twYWRk'@; put 'aW5nOjB9LmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2V7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgMH0uYWxlcnQtc20gLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVte21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uYWxlcnQtc20gLmFsZXJ0LWljb24td3JhcHBl'@; put 'cntkaXNwbGF5OmZsZXg7ZmxleC1iYXNpczp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5hbGVydC1zbSAuYWxlcnQtaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNw'@; put 'YWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uYWxlcnQtc20gLmFsZXJ0LWl0ZW0+c3BhbiwuYWxlcnQtc20gLmFsZXJ0LWl0ZW0gLmFsZXJ0LXRleHQsLmFsZXJ0LXNtIC5hbGVydC1pdGVtIC5h'@; put 'bGVydC1hY3Rpb25ze2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBv'@; put 'Z3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTtwYWRkaW5nOjB9LmFsZXJ0LXNtIC5jbG9zZXttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSAwfS5hbGVy'@; put 'dC1zbSAuYWxlcnQtc3Bpbm5lci5zcGlubmVyLWlubGluZXtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1z'@; put 'cGFjZS03KX0uYWxlcnQtc20gLmFsZXJ0LXNwaW5uZXIuc3Bpbm5lci1pbmxpbmU6YmVmb3JlLC5hbGVydC1zbSAuYWxlcnQtc3Bpbm5lci5zcGlubmVyLWlubGluZTphZnRlcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcp'@; put 'O21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uYWxlcnQtc20uYWxlcnQtbGlnaHR3ZWlnaHR7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjB9LmFsZXJ0LXNtLmFsZXJ0LWxpZ2h0d2VpZ2h0IC5hbGVydC1pdGVt'@; put 'c3tnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uYWxlcnQtc20uYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVte3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSAwfS5hbGVydC1zbS5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFs'@; put 'ZXJ0LWl0ZW0+c3BhbiwuYWxlcnQtc20uYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIC5hbGVydC1hY3Rpb25zLC5hbGVydC1zbS5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gLmFsZXJ0LXRleHR7Zm9udC1zaXplOnZhcigtLWNk'@; put 'cy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXIt'@; put 'c3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKX0uYWxlcnQtc20uYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIC5hbGVydC1pY29uLXdyYXBwZXJ7ZmxleC1iYXNpczp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl'@; put 'LTcpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5hbGVydC1zbS5hbGVydC1saWdodHdlaWdodCAuY2xvc2V7ZGlzcGxheTpub25lfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpey5hbGVydCAuYWxlcnQtaXRlbXtmbGV4LXdyYXA6d3JhcH0uYWxlcnQgLmFs'@; put 'ZXJ0LWl0ZW0gLmFsZXJ0LXRleHR7bWF4LXdpZHRoOjkwJTt3aWR0aDo5MCU7ZmxleC1iYXNpczo5MCV9LmFsZXJ0IC5hbGVydC1pdGVtIC5hbGVydC1hY3Rpb25ze2ZsZXg6MSAwIDEwMCV9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uc3ttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xv'@; put 'YmFsLXNwYWNlLTEyKX19LmFsZXJ0LWhpZGRlbntkaXNwbGF5Om5vbmV9LmFsZXJ0cyAuYWxlcnR7bWFyZ2luLXRvcDowfS5hbGVydHMgLmFsZXJ0cy13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmFsZXJ0cyAuYWxlcnRzLXdyYXBwZXIgY2xyLWFsZXJ0e2ZsZXg6'@; put 'MSAxIDEwMCV9LmFsZXJ0cy5hbGVydC1pbmZve2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWJnLWNvbG9yKX0uYWxlcnRzLmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctcGFnZXItYmctY29sb3IpfS5hbGVydHMu'@; put 'YWxlcnQtZGFuZ2Vye2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItYmctY29sb3IpfS5hbGVydHMuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1wYWdlci1iZy1jb2xvcil9LmFsZXJ0cy5hbGVydC1uZXV0cmFs'@; put 'e2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLXBhZ2VyLWJnLWNvbG9yKX0uYWxlcnRzLXBhZ2Vye2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvcik7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTtmbGV4OjEgMCB2YXIo'@; put 'LS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXdpZHRoKX0uYWxlcnQtaW5mbyAuYWxlcnRzLXBhZ2Vye2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1wYWdlci1mb250LWNvbG9yKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2Vye2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2Fybmlu'@; put 'Zy1wYWdlci1mb250LWNvbG9yKX0uYWxlcnQtZGFuZ2VyIC5hbGVydHMtcGFnZXJ7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItZm9udC1jb2xvcil9LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0cy1wYWdlcntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtcGFn'@; put 'ZXItZm9udC1jb2xvcil9LmFsZXJ0LW5ldXRyYWwgLmFsZXJ0cy1wYWdlcntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtcGFnZXItZm9udC1jb2xvcil9LmFsZXJ0cy1wYWdlci1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1z'@; put 'LWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1wYWdlci10ZXh0LWNvbG9yKTtjdXJzb3I6cG9p'@; put 'bnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWhlaWdodCl9YnV0dG9uLmFsZXJ0cy1wYWdlci1idXR0b257Y3Vyc29yOnBvaW50ZXJ9LmFsZXJ0cy1wYWdlci1idXR0b24gY2RzLWljb24s'@; put 'LmFsZXJ0cy1wYWdlci1idXR0b24gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1wYWdlci10ZXh0LWNvbG9yKX0uYWxlcnQtaW5mbyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtaW5mbyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjp2'@; put 'YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tcGFnZXItZm9udC1jb2xvcil9LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0cy1wYWdlci1idXR0b24gY2RzLWljb24sLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0cy1wYWdlci1idXR0b24gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5n'@; put 'LXBhZ2VyLWZvbnQtY29sb3IpfS5hbGVydC1kYW5nZXIgLmFsZXJ0cy1wYWdlci1idXR0b24gY2RzLWljb24sLmFsZXJ0LWRhbmdlciAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1mb250LWNvbG9yKX0uYWxlcnQt'@; put 'c3VjY2VzcyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtc3VjY2VzcyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtcGFnZXItZm9udC1jb2xvcil9LmFsZXJ0LW5ldXRyYWwgLmFsZXJ0cy1wYWdlci1i'@; put 'dXR0b24gY2RzLWljb24sLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0cy1wYWdlci1idXR0b24gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLXBhZ2VyLWZvbnQtY29sb3IpfS5hbGVydHMtcGFnZXItY29udHJvbHtkaXNwbGF5OmZsZXg7d2hpdGUtc3BhY2U6bm93cmFw'@; put 'O2hlaWdodDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uYWxlcnRzLXBhZ2VyLWNvbnRyb2w+KntkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleDoxIDEgYXV0'@; put 'b306cm9vdCBbY2RzLXRoZW1lXXstLWNsci1jYXJkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWNhcmQtZGl2aWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItY2FyZC10aXRsZS1j'@; put 'b2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWNhcmQtdGl0bGUtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpOy0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1jYXJkLWJvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApOy0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1jYXJkLWJveC1z'@; put 'aGFkb3c6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMzAwKTstLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItY2FyZC1jbGlja2FibGUtYm94LXNoYWRvdzow'@; put 'IDAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpIHZhcigtLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3IpOy0tY2xyLWNhcmQtaGVhZGVyLXRpdGxlLWNvbG9yOnZhcigtLWNsci1jYXJkLXRpdGxlLWNvbG9yKTstLWNsci1jYXJkLWNvbnRlbnQtdGl0bGUtY29sb3I6dmFyKC0t'@; put 'Y2xyLWNhcmQtdGl0bGUtY29sb3IpOy0tY2xyLWNhcmQtdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApfS5jYXJke2JveC1zaGFkb3c6dmFyKC0tY2xyLWNhcmQtYm94LXNoYWRvdyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItY2FyZC1ib3JkZXItcmFk'@; put 'aXVzKTtib3JkZXI6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItY2FyZC1ib3JkZXItY29sb3IpfS5jYXJkLmNsaWNrYWJsZTpob3Zlcntib3gtc2hhZG93OnZhcigtLWNsci1jYXJkLWNsaWNrYWJsZS1ib3gtc2hhZG93KTtib3JkZXI6dmFyKC0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItY2FyZC1jbGlja2FibGUtYm9yZGVyLWNvbG9yKTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt0cmFuc2l0aW9uOmJvcmRlciAuMnMgZWFzZSxib3gtc2hhZG93IC4ycyBlYXNlLHRyYW5zZm9y'@; put 'bSAuMnMgZWFzZX0uY2FyZC1ibG9jayAuY2FyZC1kaXZpZGVyLC5jYXJkIC5jYXJkLXRpdGxlLC5jYXJkIC5jYXJkLXRleHQsLmNhcmQgLmNhcmQtbWVkaWEtYmxvY2ssLmNhcmQgLmxpc3QsLmNhcmQgLmxpc3QtdW5zdHlsZWR7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS03KX0uY2FyZC1ibG9jayAuY2FyZC1kaXZpZGVyOmxhc3QtY2hpbGQsLmNhcmQgLmNhcmQtdGl0bGU6bGFzdC1jaGlsZCwuY2FyZCAuY2FyZC10ZXh0Omxhc3QtY2hpbGQsLmNhcmQgLmNhcmQtbWVkaWEtYmxvY2s6bGFzdC1jaGlsZCwuY2FyZCAubGlzdDpsYXN0LWNo'@; put 'aWxkLC5jYXJkIC5saXN0LXVuc3R5bGVkOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLmNhcmQtaW1nPmltZywuY2FyZD4uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZD5pbWcsLmNhcmQtaW1nPmltZ3tkaXNwbGF5OmJsb2NrO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7'@; put 'bWF4LXdpZHRoOjEwMCV9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jYXJkLWJnLWNvbG9yKTt3aWR0aDoxMDAlO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uY2FyZCAuYWxlcnR7bWFyZ2luOjAg'@; put 'MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDB9LmNhcmQgLmJ0bi1saW5re21pbi13aWR0aDowO3BhZGRpbmc6MH0uY2FyZC5jbGlja2FibGV7Y29sb3I6aW5oZXJpdH0uY2FyZD4ubGlzdCwuY2FyZD4ubGlzdC11bnN0eWxlZHtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikg'@; put 'dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KX0uY2FyZCAubGlzdC1ncm91cHtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5jYXJkIC5saXN0LWdyb3VwLWl0ZW17Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXpl'@; put 'KTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxl'@; put 'dHRlci1zcGFjaW5nKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY2FyZC1iZy1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItY2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1jYXJkLWJvcmRlci1jb2xv'@; put 'cil9QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jYXJkIC5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKX19LmNhcmQtYmxvY2t7cGFkZGluZzp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5jYXJkLWZvb3RlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfWgzLmNhcmQt'@; put 'aGVhZGVyLC5jYXJkLWhlYWRlcntmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtjb2xvcjp2YXIoLS1jbHItY2FyZC1oZWFkZXItdGl0bGUt'@; put 'Y29sb3IpfWg0LmNhcmQtdGl0bGUsLmNhcmQtdGl0bGV7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdo'@; put 'dDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItY2FyZC1jb250ZW50LXRpdGxlLWNvbG9yKX1o'@; put 'MS5jYXJkLWhlYWRlcixoMS5jYXJkLXRpdGxlLGgyLmNhcmQtaGVhZGVyLGgyLmNhcmQtdGl0bGUsaDMuY2FyZC1oZWFkZXIsaDMuY2FyZC10aXRsZSxoNC5jYXJkLWhlYWRlcixoNC5jYXJkLXRpdGxlLGg1LmNhcmQtaGVhZGVyLGg1LmNhcmQtdGl0bGUsaDYuY2FyZC1oZWFkZXIsaDYuY2Fy'@; put 'ZC10aXRsZXttYXJnaW4tdG9wOjB9LmNhcmQtdGV4dHtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1h'@; put 'bGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci1jYXJkLXRleHQtY29sb3IpfS5jYXJkLWltZzpmaXJzdC1jaGlsZD5pbWd7Ym9yZGVyLXJh'@; put 'ZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1cyl9LmNhcmQtaW1nOmxhc3QtY2hpbGQ+aW1ne2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90'@; put 'dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMpfS5jYXJkLmNhcmQtaW1nPmltZywuY2FyZD4uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZD5pbWd7'@; put 'Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItY2FyZC1ib3JkZXItcmFkaXVzKX0uY2FyZC1ibG9jayAuYnRuLC5jYXJkLWJsb2NrIC5idG4uYnRuLWxpbmssLmNhcmQtYmxvY2sgLmNhcmQtbGluaywuY2FyZC1mb290ZXIgLmJ0biwuY2FyZC1mb290ZXIgLmJ0bi5idG4tbGluaywuY2FyZC1mb290'@; put 'ZXIgLmNhcmQtbGluaywuY2FyZC1ibG9jayAuYnRuLWdyb3VwIC5idG4sLmNhcmQtZm9vdGVyIC5idG4tZ3JvdXAgLmJ0bnttYXJnaW46MH0uY2FyZC1oZWFkZXIsLmNhcmQtYmxvY2t7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItY2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1j'@; put 'YXJkLWJvcmRlci1jb2xvcil9LmNhcmQtaGVhZGVyOmxhc3QtY2hpbGQsLmNhcmQtYmxvY2s6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LmNhcmQtZGl2aWRlcntkaXNwbGF5OmJsb2NrO2JvcmRlci1ib3R0b206dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIo'@; put 'LS1jbHItY2FyZC1kaXZpZGVyLWNvbG9yKX0uY2FyZC1ibG9jayAuY2FyZC1kaXZpZGVye21hcmdpbi1sZWZ0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KSk7bWFyZ2luLXJpZ2h0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KSk7d2lkdGg6YXV0b30uY2FyZC1o'@; put 'ZWFkZXIrLmNhcmQtZGl2aWRlciwuY2FyZC1ibG9jaysuY2FyZC1kaXZpZGVye2Rpc3BsYXk6bm9uZX0uY2FyZC1tZWRpYS1ibG9ja3tkaXNwbGF5OmZsZXh9LmNhcmQtbWVkaWEtYmxvY2sgLmNhcmQtbWVkaWEtaW1hZ2V7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleDowIDAgYXV0bztoZWln'@; put 'aHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyk7bWF4LWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzKTttYXgtd2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyl9LmNhcmQtbWVkaWEtYmxvY2sgLmNhcmQtbWVk'@; put 'aWEtZGVzY3JpcHRpb257Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1i'@; put 'b2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2NvbG9yOnZhcigtLWNsci1jYXJkLXRleHQtY29sb3IpO21hcmdpbi1sZWZ0OnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNhcmQtbWVkaWEtYmxvY2sgLmNhcmQtbWVkaWEtdGl0bGUsLmNhcmQtbWVkaWEtYmxvY2sgc3BhbiwuY2FyZC1tZWRpYS1ibG9jayAuY2FyZC1tZWRpYS10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jYXJkLW1lZGlhLWJsb2NrLndyYXB7ZmxleC1k'@; put 'aXJlY3Rpb246Y29sdW1ufS5jYXJkLW1lZGlhLWJsb2NrLndyYXAgLmNhcmQtbWVkaWEtZGVzY3JpcHRpb257bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNhcmQtYmxvY2s+Lmxpc3QsLmNhcmQtYmxvY2s+Lmxpc3QtdW5zdHlsZWR7cGFkZGlu'@; put 'ZzowfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NTc2cHgpey5jYXJkLWNvbHVtbnN7Y29sdW1uLWNvdW50OjM7Y29sdW1uLWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2JyZWFrLWluc2lkZTphdm9pZDtjb2x1bW4tZmlsbDpiYWxhbmNlOy13ZWJraXQtcGVyc3BlY3RpdmU6'@; put 'MX0uY2FyZC1jb2x1bW5zLmNhcmQtY29sdW1ucy0ye2NvbHVtbi1jb3VudDoyfS5jYXJkLWNvbHVtbnMuY2FyZC1jb2x1bW5zLTR7Y29sdW1uLWNvdW50OjR9LmNhcmQtY29sdW1ucyAuY2FyZHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KX0u'@; put 'Y2FyZC1jb2x1bW5zIC5jbGlja2FibGV7YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59fUBzdXBwb3J0cyAoLW1zLWltZS1hbGlnbjphdXRvKXsuY2FyZCAuY2hlY2tib3guYnRuIGxhYmVsLC5jYXJkIC5jaGVja2JveC1pbmxpbmUuYnRuIGxhYmVsLC5jYXJkIC5yYWRpby5idG4gbGFiZWws'@; put 'LmNhcmQgLnJhZGlvLWlubGluZS5idG4gbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2t9fTpyb290IFtjZHMtdGhlbWVdey0tY2xyLW5hdi1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1uYXYtYWN0aXZlLWJnLWNvbG9yOnZhcigt'@; put 'LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmUpOy0tY2xyLW5hdi1zZWxlY3RlZC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItbmF2LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJh'@; put 'Y3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItbmF2LXNlbGVjdGVkLWhvdmVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyKTstLWNsci1uYXYtc2VsZWN0ZWQtYWN0aXZlLWJhY2tncm91bmQt'@; put 'Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZSk7LS1jbHItbmF2LWxpbmstY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItbmF2LWxpbmstYWN0aXZlLWNvbG9yOnZhcigt'@; put 'LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKX1AbWVkaWEgc2NyZWVue3NlY3Rpb25bYXJpYS1oaWRkZW49dHJ1ZV17ZGlzcGxheTpub25lfX1bZGF0YS1oaWRkZW49dHJ1ZV17ZGlzcGxheTpub25lfWJ1dHRvbi5uYXYtbGlua3tib3JkZXItcmFkaXVzOjA7dGV4'@; put 'dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTttaW4td2lkdGg6MH0udGFicy1vdmVyZmxvd3twb3NpdGlvbjpyZWxhdGl2ZX0udGFicy1vdmVyZmxvdyAuZHJvcGRvd24tbWVudXtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMCk7Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LXNoYWRvdy0xMDApO292ZXJmbG93OmhpZGRlbn0udGFicy1vdmVyZmxvdyAuYnRue2xpbmUtaGVpZ2h0OmNhbGMoMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtNCk7cGFkZGluZzp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTApfS50YWItY29udGVudHtkaXNwbGF5OmlubGluZX1fOi1tcy1mdWxsc2NyZWVuIC50YWItY29udGVudCw6cm9vdCAudGFiLWNvbnRlbnR7ZGlz'@; put 'cGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0udGFicy12ZXJ0aWNhbHtkaXNwbGF5OmZsZXh9LnRhYnMtdmVydGljYWw+Lm5hdntoZWlnaHQ6YXV0bztib3gtc2hhZG93Om5vbmU7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOnN0cmV0Y2g7bWFyZ2luLXJpZ2h0OnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtOSk7b3ZlcmZsb3c6YXV0bztmbGV4LXNocmluazowO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTt3aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIp'@; put 'O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS50YWJzLXZlcnRpY2FsPi5uYXYgLm5hdi1saW5re3RleHQtYWxpZ246bGVmdDtwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtib3JkZXI6MDtmbGV4LXNocmluazowO21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDowO3dp'@; put 'ZHRoOjEwMCV9LnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbmsuYnRue21hcmdpbi1ib3R0b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3JlLC50YWJzLXZlcnRpY2FsPi5uYXYgLm5hdi1saW5rOmhvdmVyOmJl'@; put 'Zm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2JvcmRlcjowO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTMwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFj'@; put 'dGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7dHJhbnNpdGlvbjpib3JkZXItbGVmdCAuMnMgZWFzZS1pbn0udGFicy1hY3Rpb25ze2Rpc3BsYXk6aW5saW5lLWZsZXg7d2lkdGg6MTAwJX0udGFicy1hY3Rpb25zW3Bvc2l0aW9ufj1sZWZ0XXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9LnRhYnMt'@; put 'YWN0aW9uc1twb3NpdGlvbn49cmlnaHRde2p1c3RpZnktY29udGVudDplbmR9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWRyb3Bkb3duLWJnLWNv'@; put 'bG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWRyb3Bkb3duLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItZHJvcGRvd24tZGl2aWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LWJvcmRlci1jb2xvci10aW50KTstLWNsci1kcm9wZG93bi1kaXZpZGVyLWJvcmRlci13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpOy0tY2xyLWRyb3Bkb3duLWNoaWxkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItZHJvcGRv'@; put 'd24tYmctaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci1kcm9wZG93bi1zZWxlY3Rpb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci1k'@; put 'cm9wZG93bi10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWRyb3Bkb3duLWhlYWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWRyb3Bkb3duLWhlYWRlci1mb250LXdlaWdodDp2YXIo'@; put 'LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1tZWRpdW0pOy0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTstLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yOnZhcigtLWNkcy1hbGlh'@; put 'cy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWRyb3Bkb3duLWl0ZW0tYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItZHJvcGRvd24taXRlbS1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1kcm9wZG93bi1p'@; put 'dGVtLWhvdmVyLWJnLWNvbG9yOnZhciggLS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3IgKTstLWNsci1kcm9wZG93bi1pdGVtLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUt'@; put 'YmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLXNlbGVjdGVkKTstLWNsci1kcm9wZG93bi1p'@; put 'dGVtLXNlbGVjdGVkLWJnLWNvbG9yOnZhciggLS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yICk7LS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIp'@; put 'Oy0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1hY3RpdmUpOy0tY2xyLWRyb3Bkb3duLWl0ZW0tZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVj'@; put 'dC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZHJvcGRvd24taXRlbS1kaXNhYmxlZC1iZy1jb2xvcjp0cmFuc3BhcmVudH0uZHJvcGRvd24tbWVudSAuYnRuLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4taW5mbywuZHJvcGRvd24t'@; put 'bWVudSAuYnRuLW91dGxpbmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLC5k'@; put 'cm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLC5kcm9wZG93bi1tZW51IC5idG4t'@; put 'bGluaywuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVye292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3RleHQtYWxpZ246bGVmdDtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9LmRyb3Bkb3due3Bvc2l0aW9uOnJl'@; put 'bGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcn0uZHJvcGRvd24g'@; put 'LmRyb3Bkb3duLXRvZ2dsZSBjbHItaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uW3NoYXBlXj1hbmdsZV17Y29sb3I6aW5oZXJpdDtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl'@; put 'LTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uW3No'@; put 'YXBlXj1hbmdsZV17bWFyZ2luLXRvcDp1bnNldDtjb2xvcjppbmhlcml0O2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRue3RleHQtb3ZlcmZsb3c6dW5zZXR9LmRyb3Bk'@; put 'b3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29ue3RyYW5zZm9ybTpub25lfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93'@; put 'biAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbltzaGFwZV49YW5nbGVdLC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbltzaGFwZV49YW5nbGVde3JpZ2h0OnZhcigtLWNsci1idG4taG9yaXpvbnRhbC1wYWRkaW5nKX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2ds'@; put 'ZTpub3QoLmJ0bil7cGFkZGluZzowO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvcil9LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pIGNkcy1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pIGNs'@; put 'ci1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pIGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pIGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6MH0uZHJvcGRvd24gYnV0dG9u'@; put 'LmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bil7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWFjdGl2ZS10ZXh0LWNvbG9yKX0uZHJvcGRvd24tbWVudT4qe2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5kcm9w'@; put 'ZG93bi1tZW51e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7bGVmdDowO21pbi13aWR0aDpjYWxjKDEyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1n'@; put 'bG9iYWwtYmFzZSkpKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1iZy1jb2xvcik7Ym9yZGVyLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24t'@; put 'Ym9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO2JveC1zaGFkb3c6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMjAwKTttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7cGFkZGluZzp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTYpIDA7dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoxMDUwfS5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1oZWFkZXJ7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWhlYWRlci1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNl'@; put 'Y29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1kcm9wZG93bi1oZWFkZXItZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRl'@; put 'ci1zcGFjaW5nKTtwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttYXJnaW46MH0uZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVyfi5kcm9wZG93bi1pdGVtLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1oZWFkZXJ+LmRyb3Bkb3duPi5kcm9wZG93bi1pdGVte3BhZGRp'@; put 'bmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKX0uZHJvcGRvd24tbWVudSAuYnRuLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4taW5mbywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5l'@; put 'LXByaW1hcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLC5kcm9wZG93bi1t'@; put 'ZW51IC5idG4tZGFuZ2VyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLC5kcm9wZG93bi1tZW51IC5idG4tbGluaywuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtmb250LXNpemU6'@; put 'dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFz'@; put 'LXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1iZy1jb2xvcik7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2dh'@; put 'cDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6YXV0bzttYXJnaW46MDt3aWR0aDoxMDAlO3RleHQtdHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duLW1lbnUgLmJ0bi5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuYWN0aXZlLC5k'@; put 'cm9wZG93bi1tZW51IC5idG4taW5mby5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5hY3RpdmUsLmRyb3Bkb3duLW1l'@; put 'bnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUg'@; put 'LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbS5hY3RpdmV7Y29sb3I6'@; put 'dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtYmctY29sb3IpfS5kcm9wZG93bi1tZW51IC5idG46aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnk6aG92ZXIsLmRy'@; put 'b3Bkb3duLW1lbnUgLmJ0bi1pbmZvOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVyLC5kcm9wZG93bi1tZW51IC5i'@; put 'dG4tb3V0bGluZS13YXJuaW5nOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmlt'@; put 'YXJ5OmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmhvdmVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOmhvdmVye2NvbG9yOnZhcigtLWNsci1kcm9w'@; put 'ZG93bi1pdGVtLWhvdmVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWhvdmVyLWJnLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuOmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpo'@; put 'b3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvOmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxp'@; put 'bmUtc2Vjb25kYXJ5OmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpob3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIu'@; put 'YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpob3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmhvdmVyLmFj'@; put 'dGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOmhvdmVyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLXNlbGVjdGVkLWhvdmVyLWJnLWNvbG9yKX0uZHJvcGRvd24tbWVu'@; put 'dSAuYnRuOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZSwuZHJv'@; put 'cGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6YWN0'@; put 'aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxp'@; put 'bms6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tYWN0aXZlLWJnLWNvbG9yKX0uZHJvcGRvd24tbWVudSAu'@; put 'YnRuOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnk6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91'@; put 'dGxpbmUtcHJpbWFyeTphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXI6'@; put 'YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5OmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0'@; put 'bi13YXJuaW5nOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06YWN0aXZlLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9y'@; put 'OnZhcigtLWNsci1kcm9wZG93bi1pdGVtLXNlbGVjdGVkLWFjdGl2ZS1iZy1jb2xvcil9LmRyb3Bkb3duLW1lbnUgLmJ0bjpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLWluZm86Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1v'@; put 'dXRsaW5lOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRs'@; put 'aW5lLWRhbmdlcjpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmZvY3VzLC5kcm9w'@; put 'ZG93bi1tZW51IC5idG4tc3VjY2Vzczpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06Zm9jdXN7ei1pbmRleDppbmhlcml0fS5kcm9wZG93bi1tZW51IC5idG4uZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bjpkaXNh'@; put 'YmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvOmRpc2FibGVkLC5kcm9wZG93bi1tZW51'@; put 'IC5idG4tb3V0bGluZS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUg'@; put 'LmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2Fi'@; put 'bGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUt'@; put 'c3VjY2VzczpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5OmRpc2FibGVkLC5k'@; put 'cm9wZG93bi1tZW51IC5idG4td2FybmluZy5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzczpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRu'@; put 'LWxpbmsuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOmRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmU7Y29sb3I6dmFyKC0tY2xyLWRy'@; put 'b3Bkb3duLWl0ZW0tZGlzYWJsZWQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZGlzYWJsZWQtYmctY29sb3IpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5kcm9wZG93bi1tZW51IC5idG4uZGlzYWJsZWQ6aG92ZXIs'@; put 'LmRyb3Bkb3duLW1lbnUgLmJ0bjpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZGlzYWJsZWQ6aG92ZXIs'@; put 'LmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlz'@; put 'YWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkOmhv'@; put 'dmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3du'@; put 'LW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRh'@; put 'bmdlci5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5OmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5i'@; put 'dG4td2FybmluZy5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzczpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24t'@; put 'bWVudSAuYnRuLWxpbmsuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOmRpc2FibGVkOmhvdmVye2JhY2tn'@; put 'cm91bmQ6MCAwfS5kcm9wZG93bi1tZW51IC5idG4uZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG46ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpkaXNhYmxl'@; put 'ZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lOmRp'@; put 'c2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQ6'@; put 'YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZDphY3RpdmUs'@; put 'LmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1t'@; put 'ZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZDph'@; put 'Y3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNz'@; put 'LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuZHJvcGRv'@; put 'd24taXRlbS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQ6YWN0aXZle2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5hY3RpdmUs'@; put 'LmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmFjdGl2ZSwuZHJvcGRvd24t'@; put 'bWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmFjdGl2ZSwuZHJvcGRvd24tbWVu'@; put 'dSAuYnRuLXByaW1hcnkuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmFjdGl2ZXtwb3Np'@; put 'dGlvbjpyZWxhdGl2ZX0uZHJvcGRvd24tbWVudSAuYnRuLmFjdGl2ZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuYWN0aXZlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uYWN0aXZlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuYWN0aXZl'@; put 'OmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5hY3RpdmU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuYWN0aXZlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5hY3RpdmU6YmVmb3JlLC5kcm9w'@; put 'ZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuYWN0aXZlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5hY3RpdmU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmFjdGl2ZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmFj'@; put 'dGl2ZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmFjdGl2ZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmFjdGl2ZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmFjdGl2ZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0u'@; put 'YWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2JvcmRlcjowO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTMwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9iamVj'@; put 'dC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7dHJhbnNpdGlvbjpib3JkZXItbGVmdCAuMnMgZWFzZS1pbn0uZHJvcGRvd24tbWVudSAuYnRuLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLWlu'@; put 'Zm8uZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAu'@; put 'YnRuLW91dGxpbmUtd2FybmluZy5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmV4cGFuZGFibGUsLmRy'@; put 'b3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUg'@; put 'LmRyb3Bkb3duLWl0ZW0uZXhwYW5kYWJsZXtwYWRkaW5nLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmRyb3Bkb3duLW1lbnUgLmJ0bi5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUg'@; put 'LmJ0bi1pbmZvLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZXhwYW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmV4'@; put 'cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZXhwYW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZXhwYW5kYWJs'@; put 'ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc3Vj'@; put 'Y2Vzcy5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmV4cGFuZGFibGU6YWZ0ZXJ7Y29udGVudDoiIjstd2Via2l0LW1hc2s6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNl'@; put 'dD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUz'@; put 'RS5jbHMtMSU3QmZpbGwlM0Enbm9uZSclM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUNhcmV0JTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQl'@; put 'M0QlMjJNNiUyQzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYlMkM3LjA4JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKTttYXNrOnVybCgiZGF0YTppbWFnZS9zdmcreG1s'@; put 'O2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEyJTIwMTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND'@; put 'c3R5bGUlM0UuY2xzLTElN0JmaWxsJTNBJ25vbmUnJTNCJTdEJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VDYXJldCUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTEl'@; put 'MjIlMjBkJTNEJTIyTTYlMkM5TDEuMiUyQzQuMmEwLjY4JTJDMC42OCUyQzAlMkMwJTJDMSUyQzEtMUw2JTJDNy4wOCUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIik7LXdlYmtpdC1tYXNrLXJlcGVhdDpu'@; put 'by1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvdmVyO21hc2stc2l6ZTpjb3ZlcjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTt3aWR0aDp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTYpO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTttYXJnaW4tbGVmdDphdXRvfS5kcm9wZG93bi1tZW51IC5idG4uZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bk'@; put 'b3duLW1lbnUgLmJ0bi1pbmZvLmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24t'@; put 'bWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZXhwYW5kYWJsZS5hY3RpdmU6'@; put 'YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmV4cGFuZGFibGUuYWN0aXZlOmFm'@; put 'dGVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93'@; put 'bi1tZW51IC5kcm9wZG93bi1pdGVtLmV4cGFuZGFibGUuYWN0aXZlOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtY29sb3IpfS5kcm9wZG93bi1tZW51IC5idG4uZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRu'@; put 'LXNlY29uZGFyeS5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmlt'@; put 'YXJ5LmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0'@; put 'bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAu'@; put 'YnRuLXByaW1hcnkuZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZXhw'@; put 'YW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbS5leHBhbmRhYmxlOmhvdmVyOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0taG92ZXItY29sb3IpfS5kcm9wZG93bi1tZW51IC5idG4uZXhwYW5kYWJsZTphY3RpdmU6'@; put 'YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJv'@; put 'cGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGU6'@; put 'YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5k'@; put 'YWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZXhwYW5kYWJsZTphY3Rp'@; put 'dmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmV4cGFuZGFibGU6YWN0aXZlOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tYWN0aXZlLWNvbG9y'@; put 'KX0uZHJvcGRvd24tbWVudSAuYnRuLmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUg'@; put 'LmJ0bi1zZWNvbmRhcnkuZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZXhwYW5kYWJsZS5kaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91'@; put 'dGxpbmUuZXhwYW5kYWJsZS5kaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5i'@; put 'dG4tb3V0bGluZS1wcmltYXJ5LmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZXhwYW5kYWJsZTpkaXNhYmxl'@; put 'ZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdl'@; put 'ci5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51'@; put 'IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5kYWJsZS5kaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1t'@; put 'ZW51IC5idG4tcHJpbWFyeS5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51'@; put 'IC5idG4td2FybmluZy5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5i'@; put 'dG4tbGluay5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3du'@; put 'LWl0ZW0uZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWRpc2FibGVkLWNvbG9yKX0uZHJvcGRvd24tbWVudSAuYnRuOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmZvY3VzLC5kcm9wZG93bi1tZW51'@; put 'IC5idG4taW5mbzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUt'@; put 'd2FybmluZzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTpmb2N1cywu'@; put 'ZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tbGluazpmb2N1cywuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpmb2N1c3tvdXRsaW5lLW9mZnNldDpjYWxjKC0xKnZhcigtLWNk'@; put 'cy1nbG9iYWwtc3BhY2UtMikpfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW17cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJv'@; put 'cGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX19LmRyb3Bkb3duLW1lbnUgYS5kcm9wZG93bi1pdGVte3RleHQtZGVjb3JhdGlvbjpub25lfS5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1k'@; put 'aXZpZGVye2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItYm9yZGVyLXdpZHRoKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItY29sb3IpO21hcmdpbjp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXNwYWNlLTYpfS5idG4tZ3JvdXAtb3ZlcmZsb3cub3Blbj4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5vcGVuPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJm'@; put 'bG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51e3Zpc2liaWxpdHk6dmlzaWJsZX0uYnRuLWdyb3VwLW92ZXJm'@; put 'bG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwu'@; put 'ZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXt0b3A6MTAwJTtib3R0b206YXV0bzttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSAwIDAgMH0uYnRuLWdyb3VwLW92ZXJmbG93LmJvdHRvbS1sZWZ0'@; put 'Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5ib3R0b20tbGVmdD4uZHJvcGRvd24tbWVudXtsZWZ0OjA7cmlnaHQ6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwudGFi'@; put 'cy1vdmVyZmxvdy5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cudG9wLXJp'@; put 'Z2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnRvcC1yaWdodD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24udG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnRvcC1yaWdodD4uZHJvcGRvd24tbWVu'@; put 'dXt0b3A6YXV0bztib3R0b206MTAwJTttYXJnaW46MCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikgMH0uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtbGVmdD4u'@; put 'ZHJvcGRvd24tbWVudXtsZWZ0OjA7cmlnaHQ6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1yaWdodD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnRvcC1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6'@; put 'YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRy'@; put 'b3Bkb3duLW1lbnUsLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudXtyaWdodDoxMDAlO2xlZnQ6YXV0bzttYXJnaW46MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIDAgMH0uYnRuLWdyb3VwLW92ZXJmbG93Lmxl'@; put 'ZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudXt0b3A6MDtib3R0b206YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51'@; put 'LC50YWJzLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudXtib3R0b206MDt0b3A6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LWJv'@; put 'dHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJv'@; put 'cGRvd24tbWVudXtsZWZ0OjEwMCU7cmlnaHQ6YXV0bzttYXJnaW46MCAwIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRy'@; put 'b3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudXt0b3A6MDtib3R0b206YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRv'@; put 'd24tbWVudXtib3R0b206MDt0b3A6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93biAuZHJvcGRvd24tbWVudXtib3JkZXItY29sb3I6dmFyKC0t'@; put 'Y2xyLWRyb3Bkb3duLWNoaWxkLWJvcmRlci1jb2xvcik7cG9zaXRpb246YWJzb2x1dGV9LmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBl'@; put 'cj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5sZWZ0LXRv'@; put 'cD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7aW5zZXQ6MCAxMDAlIGF1dG8gYXV0bzttYXJnaW4tdG9wOmNhbGMoKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCkpIC0gdmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS0xKSk7bWFyZ2luLXJpZ2h0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSl9LmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJv'@; put 'cGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC5kcm9wZG93'@; put 'biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7aW5zZXQ6MCBhdXRvIGF1dG8gMTAwJTttYXJnaW4tdG9wOmNhbGMoKC0xKnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtOCkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7bWFyZ2luLWxlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpKX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5k'@; put 'cm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3Jh'@; put 'cHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXtpbnNldDphdXRvIDEwMCUgMCBhdXRvO21hcmdp'@; put 'bi1ib3R0b206Y2FsYygoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTttYXJnaW4tcmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpKX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC1ib3R0b20+'@; put 'LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAu'@; put 'ZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4u'@; put 'ZHJvcGRvd24tbWVudXtpbnNldDphdXRvIGF1dG8gMCAxMDAlO21hcmdpbi1ib3R0b206Y2FsYygoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTttYXJnaW4tbGVmdDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykpfTpy'@; put 'b290IFtjZHMtdGhlbWVdey0tY2xyLWxvZ2luLXRpdGxlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItbG9naW4taGludC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWxvZ2luLWZvb3Rlci1nYXA6dmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1sb2dpbi1jb3B5cmlnaHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvcik7LS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTst'@; put 'LWNsci1sb2dpbi13ZWxjb21lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItbG9naW4tZXJyb3ItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWJnLWNvbG9yKTstLWNsci1sb2dpbi1lcnJvci1pY29uLWNvbG9yOnZhcigt'@; put 'LWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvcik7LS1jbHItbG9naW4tbG9nby1jb2xvcjojNzE3MTc1Oy0tY2xyLWxvZ2luLXRyYWRlbWFyay1jb2xvcjp2YXIoLS1jbHItaDItY29sb3IpOy0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXdlaWdodDp2YXIoLS1jbHItaDItZm9udC13ZWln'@; put 'aHQpOy0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LWZhbWlseTp2YXIoLS1jbHItaDItZm9udC1mYW1pbHkpOy0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXNpemU6dmFyKC0tY2xyLWgyLWZvbnQtc2l6ZSk7LS1jbHItbG9naW4tdHJhZGVtYXJrLWxldHRlci1zcGFjaW5nOnZhcigtLWNs'@; put 'ci1oMi1sZXR0ZXItc3BhY2luZyl9OnJvb3QgW2Nkcy10aGVtZX49ZGFya117LS1jbHItbG9naW4tbG9nby1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKX0ubG9naW4td3JhcHBlcntkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9z'@; put 'dmcreG1sO2NoYXJzZXQ9dXRmOCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJ1dGYtOCUyMiUzRiUzRSUwRCUwQSUzQyUyMURPQ1RZUEUlMjBzdmclMjBQVUJMSUMlMjAlMjItJTJGJTJGVzNDJTJGJTJGRFREJTIwU1ZHJTIwMS4xJTJGJTJGRU4lMjIl'@; put 'MjAlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRkdyYXBoaWNzJTJGU1ZHJTJGMS4xJTJGRFREJTJGc3ZnMTEuZHRkJTIyJTNFJTBEJTBBJTNDc3ZnJTBEJTBBJTIwJTIwJTIwJTIwJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMGlkJTNEJTIybm8tYXNwZWN0'@; put 'LXJhdGlvJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlMEQl'@; put 'MEElMjAlMjAlMjAlMjAlMjB4JTNEJTIyMHB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweSUzRCUyMjBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMGhlaWdodCUzRCUyMjIwNTUuNTVweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHdpZHRoJTNEJTIyMTQ0MHB4JTIyJTBEJTBBJTIwJTIwJTIw'@; put 'JTIwJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjA1NS41NSUyMDE0NDAlMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pbllNaW4lMjBzbGljZSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2Rlc2MlM0VMb2dpbiUyMElt'@; put 'YWdlJTNDJTJGZGVzYyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUyMHRy'@; put 'YW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODAuMDAwMDAwJTJDJTIwLTQuMDAwMDAwJTI5JTIyJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyM0ZBRkFGQSUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjQlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND'@; put 'cG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTEwOC40MyUyMDE0NDMuNjMlMjAxMTA5LjA4JTIwMTQ0My42MyUyMDQ0My40NCUy'@; put 'MDc3Ny43NCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkzRDhDQSUyMiUyMG9wYWNpdHklM0QlMjIwLjYlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1t'@; put 'b2RlJTNBJTIwb3ZlcmxheSUzQiUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjAzMzQuOTIlMjA0NDMuNDQlMjA3NzcuNzQlMjAwLjc5JTIwMzM0LjQ5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3Bv'@; put 'bHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMC43OSUyMDIxMS44OCUyMDAuNzklMjAzMjkuNiUyMDU5LjYyJTIwMjcwLjc3JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy'@; put 'MCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTYwLjY1JTIwMTY5Ljc0JTIwMC43OSUyMDkuNzMlMjAwLjc5JTIwMjExLjg4JTIwOTAuMjclMjAzMDEuNDYlMjA1OS42MiUyMDI3MC43NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjUwMy43NyUyMDE0NDMuNjMlMjA2OTcuNDclMjAxNDQzLjYzJTIwODAzLjc0JTIwMTMzNy4zNiUyMDcwNi45MyUyMDEyNDAuNDMl'@; put 'MjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2ludHMlM0QlMjIxNTguMzMlMjA2OTEuMTUlMjAwLjc5JTIwODQ4LjcyJTIwMC43OSUy'@; put 'MDE0MjcuNDMlMjA0NDcuNTIlMjA5ODAuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NFRERFMCUyMiUyMHBvaW50cyUzRCUyMjI1Ny43MSUyMDU5MS43'@; put 'NSUyMDAuNzklMjAzMzQuNDklMjAwLjc5JTIwNTMzLjQyJTIwMTU4LjMzJTIwNjkxLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTlDOUQ1JTIyJTIw'@; put 'cG9pbnRzJTNEJTIyMC43OSUyMDUzMy40MiUyMDAuNzklMjA4NDguNzIlMjAxNTguMzMlMjA2OTEuMTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0'@; put 'RTclMjIlMjBwb2ludHMlM0QlMjI4MDYuNDYlMjAxMTQwLjg5JTIwNTQ2Ljk0JTIwODgxLjI4JTIwNDQ3LjUyJTIwOTgwLjclMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy'@; put 'MCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEZDNERGJTIyJTIwcG9pbnRzJTNEJTIyNDQ3LjUyJTIwOTgwLjclMjAwLjc5JTIwMTQyNy40MyUyMDAuNzklMjAxNDQzLjYzJTIwNTAzLjc3JTIwMTQ0My42MyUyMDcwNi45MyUyMDEyNDAuNDMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBB'@; put 'JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3MEMwREMlMjIlMjBwb2ludHMlM0QlMjI2MDguMjMlMjA4MTkuOTklMjA1NDYuOTQlMjA4ODEuMjglMjA4MDYuNDYlMjAxMTQwLjg5JTIwODY3LjY0JTIwMTA3'@; put 'OS43JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyNDIwLjA1JTIwNDI5LjM5JTIwMzE5LjAxJTIwNTMwLjQ1JTIw'@; put 'NjA4LjIzJTIwODE5Ljk5JTIwNzA5LjMlMjA3MTguOTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2OUFGRDQlMjIlMjBwb2ludHMlM0QlMjI3MDkuMyUy'@; put 'MDcxOC45MSUyMDYwOC4yMyUyMDgxOS45OSUyMDg2Ny42NCUyMDEwNzkuNyUyMDk2OC43NCUyMDk3OC42JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEVC'@; put 'NUJDJTIyJTIwcG9pbnRzJTNEJTIyNjE5LjU5JTIwMjI5LjgyJTIwMzkzLjQyJTIwMy4xMiUyMDMyNy4yNyUyMDMuMTIlMjAxNjAuNjUlMjAxNjkuNzQlMjA0MjAuMDUlMjA0MjkuMzklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4RUI1QkMlMjIlMjBwb2ludHMlM0QlMjIzMTkuMDElMjA1MzAuNDUlMjAzMTkuMDElMjA1MzAuNDUlMjA5MC4yNyUyMDMwMS40NiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzdDQjBDNyUyMiUyMHBvaW50cyUzRCUyMjE2MC42NSUyMDE2OS43NCUyMDU5LjYyJTIwMjcwLjc3JTIwOTAuMjclMjAzMDEuNDYlMjAzMTkuMDElMjA1MzAuNDUlMjA0MjAuMDUlMjA0MjkuMzklMjIl'@; put 'M0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4NEM0RDIlMjIlMjBwb2ludHMlM0QlMjI1OS42MiUyMDI3MC43NyUyMDAuNzklMjAzMjkuNiUyMDAuNzklMjAzMzQu'@; put 'NDklMjAyNTcuNzElMjA1OTEuNzUlMjAzMTkuMDElMjA1MzAuNDUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3Q0IwQzclMjIlMjBwb2ludHMlM0QlMjI1'@; put 'MzcuNTUlMjAzLjEyJTIwMzkzLjQyJTIwMy4xMiUyMDYxOS41OSUyMDIyOS44MiUyMDY5MS43NCUyMDE1Ny42NiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUy'@; put 'Mzg3RDFEQiUyMiUyMHBvaW50cyUzRCUyMjg0Ni4yNSUyMDMuMTIlMjA1MzcuNTUlMjAzLjEyJTIwNjkxLjc0JTIwMTU3LjY2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxs'@; put 'JTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9pbnRzJTNEJTIyOTA5Ljg3JTIwMTQ0My42MyUyMDg1MC4xOSUyMDEzODMuODclMjA3OTAuNDMlMjAxNDQzLjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUz'@; put 'Q3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMzE5LjAxJTIwNTMwLjQ1JTIwMjU3LjcxJTIwNTkxLjc1JTIwNDQzLjQ0JTIwNzc3Ljc0JTIwNTQ2Ljk0JTIwODgxLjI4JTIwNjA4LjIzJTIwODE5Ljk5JTIwODY3LjY0JTIwMTA3OS43JTIwODY3LjY0JTIw'@; put 'MTA3OS43JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyODY3LjY0JTIwMTA3OS43JTIwODA2LjQ2JTIwMTE0MC44'@; put 'OSUyMDkwMy4zMSUyMDEyMzcuNzglMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIy'@; put 'MTA2NS41NyUyMDEwNzUuNTIlMjA5NjguNzQlMjA5NzguNiUyMDg2Ny42NCUyMDEwNzkuNyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwl'@; put 'M0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwODY3LjY0JTIwMTA3OS43JTIwODY3LjY0JTIwMTA3OS43JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEyNDAuMDglMjA3MDcuMjIlMjAxMTY3LjklMjA3NzkuNCUyMDEyNjQuNjglMjA4NzYuNCUyMDEzMzYuODclMjA4MDQuMjIlMjAxMjQwLjA4JTIw'@; put 'NzA3LjIxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyOTgwLjgzJTIwNDQ3LjM5JTIwNjkxLjc0JTIwMTU3LjY2'@; put 'JTIwNjE5LjU5JTIwMjI5LjgyJTIwOTA4LjY2JTIwNTE5LjU2JTIwOTgwLjgzJTIwNDQ3LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIy'@; put 'JTIwcG9pbnRzJTNEJTIyNzA5LjMlMjA3MTguOTElMjA5NjguNzQlMjA5NzguNiUyMDExNjcuOTElMjA3NzkuNCUyMDkwOC42NiUyMDUxOS41NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5'@; put 'Z29uJTIwZmlsbCUzRCUyMiUyMzY5QUZENCUyMiUyMHBvaW50cyUzRCUyMjk4MC44MyUyMDQ0Ny4zOSUyMDkwOC42NiUyMDUxOS41NSUyMDExNjcuOTElMjA3NzkuNCUyMDEyNDAuMDglMjA3MDcuMjElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxMDM0LjU5JTIwMy4xMiUyMDg0Ni4yNSUyMDMuMTIlMjA2OTEuNzQlMjAxNTcuNjYlMjA5ODAuODMlMjA0NDcuMzklMjAxMjI5Ljc1JTIwMTk4LjQ3JTIyJTNF'@; put 'JTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTI0MC4wOCUyMDcwNy4yMSUyMDEzMzYuODclMjA4MDQuMjIlMjAxNTg2LjAx'@; put 'JTIwNTU1LjA4JTIwMTQ4OS4xNCUyMDQ1OC4xMiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzcwQzBEQyUyMiUyMHBvaW50cyUzRCUyMjEyMjkuNzUlMjAx'@; put 'OTguNDclMjA5ODAuODMlMjA0NDcuMzklMjAxMjQwLjA4JTIwNzA3LjIxJTIwMTQ4OS4xNCUyMDQ1OC4xMiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3'@; put 'Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjEyOTIuMjIlMjAxMzAyLjM4JTIwMTQzMy4zMiUyMDE0NDMuNjMlMjAxODMwLjYxJTIwMTQ0My42MyUyMDE0OTEuMTglMjAxMTAzLjQyJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy'@; put 'MCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjA5NDkuNzglMjAxMjg0LjI3JTIwMTEwOS4wOCUyMDE0NDMuNjMlMjAxMTUwLjk4JTIwMTQ0My42MyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTND'@; put 'JTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzVCOEM1JTIyJTIwcG9pbnRzJTNEJTIyMTE1MC45OCUyMDE0NDMuNjMlMjAxMjMxLjE2JTIwMTQ0My42MyUyMDExOTEuMDkl'@; put 'MjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTI5Mi4yMiUyMDEzMDIuMzglMjAxMTEyLjAzJTIw'@; put 'MTEyMi4wMiUyMDEwMTAuOTIlMjAxMjIzLjEzJTIwMTE5MS4wOSUyMDE0MDMuNTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2RUE0QkMlMjIlMjBwb2lu'@; put 'dHMlM0QlMjIxMTkxLjA5JTIwMTQwMy41MSUyMDEyMzEuMTYlMjAxNDQzLjYzJTIwMTQzMy4zMiUyMDE0NDMuNjMlMjAxMjkyLjIyJTIwMTMwMi4zOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nw'@; put 'b2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzgzLjMlMjA4NTAuNzUlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTQ5MS4xOCUyMDEx'@; put 'MDMuNDIlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjE0OTEuMTglMjAxMTAz'@; put 'LjQyJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIz'@; put 'NkVBNEJDJTIyJTIwcG9pbnRzJTNEJTIyMTQ5MS4xOCUyMDExMDMuNDIlMjAxODMwLjYxJTIwMTQ0My42MyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxODEyLjY1JTIwNzgxLjk1JTIwMTYzMi40NiUyMDYwMS41OSUyMDEzODMuMyUyMDg1MC43NSUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUy'@; put 'MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTU2My4zNyUyMDEwMzEuMjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxNDQzLjYzJTIwMjA1NC40NSUy'@; put 'MDEwMjMuOTklMjAxODEyLjY1JTIwNzgxLjk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzhDQUQ0JTIyJTIwcG9pbnRzJTNEJTIyMTU2My4zNyUyMDEw'@; put 'MzEuMjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxNDQzLjYzJTIwMjA1NC40NSUyMDEwMjMuOTklMjAxODEyLjY1JTIwNzgxLjk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3Bv'@; put 'bHlnb24lMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwcG9pbnRzJTNEJTIyODAzLjc0JTIwMTMzNy4zNiUyMDg1MC4xOSUyMDEzODMuODclMjA5NDkuNzglMjAxMjg0LjI3JTIwOTAzLjMxJTIwMTIzNy43OCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjEwNjUuNTclMjAxMDc1LjUyJTIwMTExMi4wMyUyMDExMjIuMDIlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTI2NC42OSUyMDg3Ni40JTIyJTNFJTNDJTJG'@; put 'cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzdCOEQ5JTIyJTIwcG9pbnRzJTNEJTIyNjk3LjQ3JTIwMTQ0My42MyUyMDc5MC40MyUyMDE0NDMuNjMlMjA4NTAuMTklMjAxMzgz'@; put 'Ljg3JTIwODAzLjc0JTIwMTMzNy4zNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMl'@; put 'MjA5MDMuMzElMjAxMjM3Ljc4JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNURCNUQ2'@; put 'JTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDkwMy4zMSUyMDEyMzcuNzglMjA5NDkuNzglMjAxMjg0LjI3JTIwMTAxMC45MiUyMDEyMjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxMDM4LjI0NzI5NyUyQyUyMDExNDkuMjc1NDI5JTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xMDM4LjI0NzI5NyUyQyUyMC0xMTQ5LjI3NTQy'@; put 'OSUyOSUyMCUyMiUyMHglM0QlMjI5NjYuNzUyMjk3JTIyJTIweSUzRCUyMjExMTYuNDEwNDMlMjIlMjB3aWR0aCUzRCUyMjE0Mi45OSUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy'@; put 'MCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNTdBOEQwJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTAzOC4yNDcyOTclMkMlMjAxMTQ5LjI3NTQyOSUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTAzOC4yNDcyOTclMkMlMjAtMTE0OS4y'@; put 'NzU0MjklMjklMjAlMjIlMjB4JTNEJTIyOTY2Ljc1MjI5NyUyMiUyMHklM0QlMjIxMTE2LjQxMDQzJTIyJTIwd2lkdGglM0QlMjIxNDIuOTklMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjA5NjQuNDYlMjAxMTc2LjYzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwMDAwMCUyMiUyMG9wYWNpdHklM0QlMjIwLjQyJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDk2NC40'@; put 'NiUyMDExNzYuNjMlMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUy'@; put 'MHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMjY0LjY5JTIwODc2LjQlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTM4My4zJTIwODUwLjc1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUy'@; put 'MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNTdBOEQwJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEyNjQuNjklMjA4NzYuNCUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxMzgzLjMlMjA4NTAuNzUl'@; put 'MjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5M0Q4Q0ElMjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUy'@; put 'MG92ZXJsYXklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTM4My4zJTIwODUwLjc1JTIwMTYzMi40NiUyMDYwMS41OSUyMDE1ODYuMDElMjA1NTUuMDglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM1REI1RDYlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTM4My4zJTIwODUwLjc1JTIwMTYzMi40NiUyMDYwMS41OSUyMDE1ODYuMDElMjA1NTUuMDglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIw'@; put 'JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQzRTYlMjIlMjBwb2ludHMlM0QlMjIyMDU2JTIwMC4xMiUyMDE2NDUuNDklMjAwLjEyJTIwMTY0OC40OSUyMDMuMTIlMjAxOTQ0LjA3JTIwMy4xMiUyMDE3OTYu'@; put 'MjIlMjAxNTAuOTklMjAxODkzLjEyJTIwMjQ3Ljk3JTIwMjA1NC40NSUyMDg2LjY0JTIwMjA1NC40NSUyMDE3OS42JTIwMTkzOS41OCUyMDI5NC40NyUyMDIwNTYlMjA0MTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3QUI5RDklMjIlMjBwb2ludHMlM0QlMjIxNjQ4LjQ5JTIwMy4xMiUyMDE3OTYuMjIlMjAxNTAuOTklMjAxOTQ0LjA3JTIwMy4xMiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzY2QUVENCUyMiUyMHBvaW50cyUzRCUyMjIwNTQuNDUlMjA4Ni42NCUyMDE4OTMuMTIlMjAyNDcuOTclMjAxOTM5LjU4JTIwMjk0LjQ3JTIwMjA1NC40NSUyMDE3OS42JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUw'@; put 'RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTg4NC44MiUyMDcwOS43OCUyMDIwNTQuNDUlMjA4NzkuNTclMjAyMDU0LjQ1JTIwNTQwLjE1JTIyJTNFJTND'@; put 'JTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyMTQ4OS4xNCUyMDQ1OC4xMiUyMDE0ODkuMTQlMjA0NTguMTIlMjAxMzcxLjEzJTIw'@; put 'MzM5Ljk5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyMTc5Ni4yMiUyMDE1MC45OSUyMDE2NDguNDklMjAzLjEy'@; put 'JTIwMTQyNS4xJTIwMy4xMiUyMDEzMDEuOTElMjAxMjYuMzElMjAxNTYxLjMlMjAzODUuOTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjB0'@; put 'cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNzk4Ljk1NDA2NiUyQyUyMDM4OC43OTg3ODElMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE3OTguOTU0MDY2JTJDJTIwLTM4OC43OTg3ODElMjklMjAlMjIlMjB4JTNEJTIyMTYzMi44MjQwNyUyMiUyMHklM0Ql'@; put 'MjIzNTUuOTMzNzgxJTIyJTIwd2lkdGglM0QlMjIzMzIuMjYlMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUy'@; put 'MiUyMHBvaW50cyUzRCUyMjE1ODYuMDElMjA1NTUuMDglMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTYzMi40NiUyMDYwMS41OSUyMDE1ODYuMDElMjA1NTUuMDglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNTczLjcxMTU3NyUyQyUyMDQ3MC42MjAyNjMlMjklMjByb3RhdGUlMjgtNDUuMDAwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE1NzMuNzExNTc3JTJDJTIwLTQ3MC42MjAyNjMlMjkl'@; put 'MjAlMjIlMjB4JTNEJTIyMTUyMi42ODE1OCUyMiUyMHklM0QlMjI0MDIuMDg1MjYzJTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjIxMzcuMDclMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNzU4LjY3Njc1OCUyQyUyMDY1NS43NjcxMjAlMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE3NTguNjc2NzU4JTJDJTIwLTY1NS43NjcxMjAl'@; put 'MjklMjAlMjIlMjB4JTNEJTIyMTcwNy42NDY3NiUyMiUyMHklM0QlMjI1MjguMjkyMTIlMjIlMjB3aWR0aCUzRCUyMjEwMi4wNiUyMiUyMGhlaWdodCUzRCUyMjI1NC45NSUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0IzRUFFRSUyMiUyMHBvaW50cyUzRCUyMjEzMDEuOTElMjAxMjYuMzElMjAxMTc4Ljg0JTIwMy4xMiUyMDEwMzQuNTklMjAzLjEyJTIwMTIyOS43NSUyMDE5OC40NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzgzQzBDOCUyMiUyMHBvaW50cyUzRCUyMjE4MTIuNjUlMjA3ODEuOTUlMjAyMDU0LjQ1JTIwMTAyMy45OSUyMDIwNTQuNDUlMjA4NzkuNTclMjAxODg0LjgyJTIwNzA5Ljc4JTIyJTNF'@; put 'JTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzN0RDNkRDJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTM5NS41MTY5MDElMkMlMjAyOTIuMjA2NTE5JTI5JTIw'@; put 'cm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xMzk1LjUxNjkwMSUyQyUyMC0yOTIuMjA2NTE5JTI5JTIwJTIyJTIweCUzRCUyMjEzNDQuNDkxOSUyMiUyMHklM0QlMjIxMDguNzAxNTE5JTIyJTIwd2lkdGglM0QlMjIxMDIuMDUlMjIlMjBoZWlnaHQlM0QlMjIzNjcuMDEl'@; put 'MjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM2OEI4RDUlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNjQ1LjMxMzYxOSUyQyUyMDU0Mi4yNDk3NjAlMjkl'@; put 'MjByb3RhdGUlMjgtNDUuMDAwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE2NDUuMzEzNjE5JTJDJTIwLTU0Mi4yNDk3NjAlMjklMjAlMjIlMjB4JTNEJTIyMTU5NC4yODM2MiUyMiUyMHklM0QlMjI1MDkuMzg0NzYlMjIlMjB3aWR0aCUzRCUyMjEwMi4wNiUyMiUyMGhlaWdodCUzRCUyMjY1Ljcz'@; put 'JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MC4wMDAwMDAlMkMlMjAzLjAw'@; put 'MDAwMCUyOSUyMiUyMHN0cm9rZSUzRCUyMiUyMzAwMDAwMCUyMiUyMG9wYWNpdHklM0QlMjIwLjE1JTIyJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNMC45NSUyQzAuMTIlMjBMMC45NSUyQzg0MC4xMiUy'@; put 'MiUyMGlkJTNEJTIyU2hhcGUlMjIlM0UlM0MlMkZwYXRoJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEElMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTND'@; put 'JTJGc3ZnJTNFKTtiYWNrZ3JvdW5kLXNpemU6MTAwJTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNhbGMoNTgwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSAwO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0ubG9naW4td3JhcHBlciAubG9naW57YmFja2dyb3VuZDp2YXIoLS1jbHIt'@; put 'bG9naW4tYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7aGVpZ2h0OmF1dG87'@; put 'bWluLWhlaWdodDoxMDB2aDt3aWR0aDpjYWxjKDU4MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1mb290ZXIsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1oZWFkZXJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7ZmxleC1k'@; put 'aXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcn0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWZvb3RlciAuYWN0aW9ucywubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWhlYWRlciAuYWN0aW9uc3ttYXJnaW4tbGVmdDphdXRvfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9n'@; put 'aW4taGVhZGVyIC5sb2dve2hlaWdodDoxNnB4O3dpZHRoOjEwMCU7LXdlYmtpdC1tYXNrOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LFwgJTNDc3ZnJTIwd2lkdGglM0QlMjIxMDUlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwNSUy'@; put 'MDE2JTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIyTTQ0LjkzNzElMjAxNC44TDQwLjM1OTglMjAyLjAwMDgyQzQwLjI5MzIlMjAxLjgwMDk0JTIwNDAuMjI2NiUy'@; put 'MDEuNjAxMDYlMjA0MC4yMjY2JTIwMS40MDExN0M0MC4yMjY2JTIwMC44NjgxNTMlMjA0MC42OTMlMjAwLjM0MTc5NyUyMDQxLjM1MjYlMjAwLjM0MTc5N0M0MS45NTIyJTIwMC4zNDE3OTclMjA0Mi4zNDUzJTIwMC43NDE1NjMlMjA0Mi40Nzg2JTIwMS4yNjc5Mkw0Ni4yNTY0JTIwMTIuMjc0'@; put 'OEw1MC4xMDA4JTIwMS4yNjc5MkM1MC4zMDA3JTIwMC43MzQ5JTIwNTAuNjMzOCUyMDAuMzQxNzk3JTIwNTEuMjI2OCUyMDAuMzQxNzk3SDUxLjM2QzUxLjk1OTclMjAwLjM0MTc5NyUyMDUyLjM1MjglMjAwLjc0MTU2MyUyMDUyLjU1MjclMjAxLjI2NzkyTDU2LjMzMDUlMjAxMi4yNzQ4TDYw'@; put 'LjE3NDklMjAxLjIwMTI5QzYwLjMwODIlMjAwLjczNDkwMSUyMDYwLjY0MTMlMjAwLjM0MTc5NyUyMDYxLjIzNDMlMjAwLjM0MTc5N0M2MS45MDA2JTIwMC4zNDE3OTclMjA2Mi4zNjAzJTIwMC44MDgxODglMjA2Mi4zNjAzJTIwMS40MDExN0M2Mi4zNjAzJTIwMS42MDEwNiUyMDYyLjI5MzYl'@; put 'MjAxLjg2NzU3JTIwNjIuMjI3JTIwMi4wMDA4Mkw1Ny41ODMxJTIwMTQuOEM1Ny4zMTY2JTIwMTUuNDY2MyUyMDU2Ljg1MDIlMjAxNS43OTI4JTIwNTYuMzIzOCUyMDE1Ljc5MjhINTYuMjU3MkM1NS42NTc1JTIwMTUuNzkyOCUyMDU1LjI2NDQlMjAxNS40NTk2JTIwNTQuOTk3OSUyMDE0LjhM'@; put 'NTEuMjg2OCUyMDMuOTI2MzZMNDcuNTA5JTIwMTQuOEM0Ny4zMDkxJTIwMTUuNDY2MyUyMDQ2Ljg0OTQlMjAxNS43OTI4JTIwNDYuMzE2MyUyMDE1Ljc5MjhINDYuMjQ5N0M0NS42NTAxJTIwMTUuNzkyOCUyMDQ1LjE5MDMlMjAxNS40NTk2JTIwNDQuOTIzOCUyMDE0LjhINDQuOTM3MVolMjIl'@; put 'MjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDcGF0aCUyMGQlM0QlMjJNNzguMzUyNSUyMDEuNDY3OEM3OC4zNTI1JTIwMC44NjgxNTIlMjA3OC44MTg5JTIwMC4zNDE3OTclMjA3OS40Nzg1JTIwMC4zNDE3OTdDODAuMTM4MiUyMDAuMzQxNzk3JTIwODAuNjA0NSUyMDAuODA4'@; put 'MTg3JTIwODAuNjA0NSUyMDEuNDY3OFY0LjA1Mjk2QzgxLjczMDYlMjAxLjUzNDQzJTIwODQuMTgyNSUyMDAuMzQxNzk3JTIwODUuODQxNSUyMDAuMzQxNzk3Qzg2LjUwMTElMjAwLjM0MTc5NyUyMDg2Ljk2NzUlMjAwLjgwODE4NyUyMDg2Ljk2NzUlMjAxLjQ2NzhDODYuOTY3NSUyMDIuMDY3'@; put 'NDUlMjA4Ni41Njc3JTIwMi41MjcxOCUyMDg1Ljk3NDclMjAyLjU5MzgxQzgzLjA1NjQlMjAyLjkyNjk1JTIwODAuNjcxMiUyMDUuMTEyMzQlMjA4MC42NzEyJTIwOS40ODk3OFYxNC41OTM1QzgwLjY3MTIlMjAxNS4xOTMxJTIwODAuMjA0OCUyMDE1LjcxOTUlMjA3OS41NDUyJTIwMTUuNzE5'@; put 'NUM3OC44ODU2JTIwMTUuNzE5NSUyMDc4LjQxOTIlMjAxNS4xODY0JTIwNzguNDE5MiUyMDE0LjU5MzVWMS40NjExNCUyMiUyMGZpbGwlM0QlMjIlMjM3MTcxNzUlMjIlMkYlM0UlMEElM0NwYXRoJTIwZCUzRCUyMk05NC4xMjk0JTIwMTUuOTI3MkM5MC4wODUxJTIwMTUuOTI3MiUyMDg2Ljcw'@; put 'NyUyMDEyLjc0MjQlMjA4Ni43MDclMjA4LjE3MTdWOC4xMDUwOEM4Ni43MDclMjAzLjc5NDI3JTIwODkuNjkxOSUyMDAuMzQ5NjA5JTIwOTMuODAyOSUyMDAuMzQ5NjA5Qzk4LjE4MDMlMjAwLjM0OTYwOSUyMDEwMC42OTklMjAzLjk5NDE1JTIwMTAwLjY5OSUyMDcuOTExODZDMTAwLjY5OSUy'@; put 'MDguNTExNTElMjAxMDAuMjMyJTIwOC45NzEyMyUyMDk5LjYzOTUlMjA4Ljk3MTIzSDg4Ljg5OTFDODkuMjMyMiUyMDEyLjIyMjclMjA5MS40ODQyJTIwMTQuMDA4MyUyMDk0LjEzNiUyMDE0LjAwODNDOTUuOTk0OSUyMDE0LjAwODMlMjA5Ny4zMjA4JTIwMTMuMjgyJTIwOTguMzgwMiUyMDEy'@; put 'LjI4MjZDOTguNTgwMSUyMDEyLjE0OTQlMjA5OC43OCUyMDEyLjAxNjElMjA5OS4wMzk4JTIwMTIuMDE2MUM5OS41NzI4JTIwMTIuMDE2MSUyMDEwMC4wMzMlMjAxMi40ODI1JTIwMTAwLjAzMyUyMDEyLjk0MjJDMTAwLjAzMyUyMDEzLjIwODglMjA5OS44OTkzJTIwMTMuNDc1MyUyMDk5LjY5'@; put 'OTQlMjAxMy42Njg1Qzk4LjMwNjklMjAxNC45OTQ0JTIwOTYuNjQ3OSUyMDE1LjkyMDUlMjA5NC4xMjk0JTIwMTUuOTIwNVYxNS45MjcyWk05OC41MDY4JTIwNy4yMzg5MUM5OC4zMDY5JTIwNC41MjA1MSUyMDk2LjcxNDUlMjAyLjEzNTIzJTIwOTMuODAyOSUyMDIuMTM1MjNDOTEuMjE3NyUy'@; put 'MDIuMTM1MjMlMjA4OS4yOTIyJTIwNC4zMjA2MiUyMDg4Ljk2NTclMjA3LjIzODkxSDk4LjUxMzVIOTguNTA2OFolMjIlMjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDcGF0aCUyMGQlM0QlMjJNNjIuMzc1JTIwMTEuMjE1OEM2Mi4zNzUlMjA3Ljk2NDQlMjA2NS4wMjY4JTIw'@; put 'Ni4zMDUzNyUyMDY4LjgwNDYlMjA2LjMwNTM3QzcwLjczMDElMjA2LjMwNTM3JTIwNzIuMTIyNiUyMDYuNTcxODglMjA3My40NDE5JTIwNi45NzE2NVY2LjQzODYzQzczLjQ0MTklMjAzLjcyMDIyJTIwNzEuNzgyOCUyMDIuMzI3NyUyMDY4LjkzMTIlMjAyLjMyNzdDNjcuNDA1NCUyMDIuMzI3'@; put 'NyUyMDY2LjU0NTklMjAyLjUyNzU4JTIwNjUuNDE5OSUyMDIuOTkzOTdDNjUuMjg2NiUyMDMuMDYwNiUyMDY1LjE1MzQlMjAzLjA2MDYlMjA2NS4wMjAxJTIwMy4wNjA2QzY0LjQ4NzElMjAzLjA2MDYlMjA2NC4wMjc0JTIwMi41OTQyMSUyMDY0LjAyNzQlMjAyLjA2Nzg1QzY0LjAyNzQlMjAx'@; put 'LjYwMTQ2JTIwNjQuMjI3MyUyMDEuMzQxNjElMjA2NC42MjclMjAxLjE0MTcyQzY2LjA4NjIlMjAwLjQ3NTQ0NyUyMDY3LjIxMjIlMjAwLjI4MjIyNyUyMDY5LjEzNzclMjAwLjI4MjIyN0M3MS4yNTY1JTIwMC4yODIyMjclMjA3Mi45MTU1JTIwMC44MTUyNTIlMjA3My45NzQ5JTIwMS45NDEy'@; put 'NkM3NC45Njc2JTIwMi45MzQwMSUyMDc1LjUwMDclMjA0LjM5MzE2JTIwNzUuNTAwNyUyMDYuMzE4N1YxNC42MDcyQzc1LjUwMDclMjAxNS4yNzM1JTIwNzUuMDM0MyUyMDE1LjczMzIlMjA3NC40NDEzJTIwMTUuNzMzMkM3My43NzUlMjAxNS43MzMyJTIwNzMuMzgxOSUyMDE1LjI2NjglMjA3'@; put 'My4zODE5JTIwMTQuNjczOFYxMy4yMTQ3QzcyLjMyMjUlMjAxNC42MDcyJTIwNzAuNTk2OSUyMDE1Ljc5OTglMjA2Ny45NDUxJTIwMTUuNzk5OEM2NS4yMjY3JTIwMTUuOTMzMSUyMDYyLjM3NSUyMDE0LjM0MDclMjA2Mi4zNzUlMjAxMS4yMjI1VjExLjIxNThaTTczLjUxNTIlMjAxMC4wODk4'@; put 'VjguNjMwNjhDNzIuMzg5MSUyMDguMjk3NTQlMjA3MC45MyUyMDcuOTY0NCUyMDY5LjA3MTElMjA3Ljk2NDRDNjYuMjE5NCUyMDcuOTY0NCUyMDY0LjY5MzclMjA5LjIyMzY2JTIwNjQuNjkzNyUyMDExLjA4MjZWMTEuMTQ5MkM2NC42OTM3JTIwMTMuMDc0NyUyMDY2LjQxOTMlMjAxNC4xMzQx'@; put 'JTIwNjguNDcxNCUyMDE0LjEzNDFDNzEuMjU2NSUyMDE0LjEzNDElMjA3My41MDg1JTIwMTIuNDc1MSUyMDczLjUwODUlMjAxMC4wODk4SDczLjUxNTJaJTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIyTTQuMTAyMjIlMjAxLjI2ODYyQzMuNjM1'@; put 'ODMlMjAwLjIwOTIzNyUyMDIuMzc2NTYlMjAtMC4zMjM3ODclMjAxLjI1MDU1JTIwMC4yMDkyMzVDMC4xMjQ1NDUlMjAwLjc0MjI1NiUyMC0wLjI3NTIxOCUyMDIuMDAxNTIlMjAwLjE5MTE3NiUyMDMuMDYwOUw0Ljk2MTcyJTIwMTMuNDc0OEM1LjY4Nzk2JTIwMTUuMTMzOCUyMDYuNDg3NDkl'@; put 'MjAxNS45MjY3JTIwOC4wMTMyNyUyMDE1LjkyNjdDOS41MzkwNCUyMDE1LjkyNjclMjAxMC4yNjUzJTIwMTUuMDAwNiUyMDExLjA2NDglMjAxMy40NzQ4QzExLjA2NDglMjAxMy40NzQ4JTIwMTUuMjQyNCUyMDQuMzg2NzklMjAxNS4zMDklMjA0LjMyNjgzQzE1LjM3NTYlMjA0LjI2MDIlMjAx'@; put 'NS41MDg5JTIwMy45MjcwNiUyMDE1LjkwODYlMjAzLjkyNzA2QzE2LjI0MTglMjAzLjkyNzA2JTIwMTYuNTY4MyUyMDQuMTkzNTclMjAxNi41NjgzJTIwNC41OTMzNFYxMy40ODE1QzE2LjU2ODMlMjAxNC44NzQlMjAxNy4yOTQ1JTIwMTYlMjAxOC44MjAzJTIwMTZDMjAuMzQ2MSUyMDE2JTIw'@; put 'MjEuMDcyMyUyMDE0Ljg3NCUyMDIxLjA3MjMlMjAxMy40ODE1VjYuMTg1NzRDMjEuMDcyMyUyMDQuNzkzMjIlMjAyMi4wNjUlMjAzLjg2NzElMjAyMy40NTc2JTIwMy44NjcxQzI0Ljg1MDElMjAzLjg2NzElMjAyNS43MDk2JTIwNC43OTMyMiUyMDI1LjcwOTYlMjA2LjE4NTc0VjEzLjQ4MTVD'@; put 'MjUuNzA5NiUyMDE0Ljg3NCUyMDI2LjQ0MjUlMjAxNiUyMDI3Ljk2MTYlMjAxNkMyOS40ODA3JTIwMTYlMjAzMC4yMTM2JTIwMTQuODc0JTIwMzAuMjEzNiUyMDEzLjQ4MTVWNi4xODU3NEMzMC4yMTM2JTIwNC43OTMyMiUyMDMxLjIwNjQlMjAzLjg2NzElMjAzMi41OTg5JTIwMy44NjcxQzMz'@; put 'Ljk5MTQlMjAzLjg2NzElMjAzNC44NTA5JTIwNC43OTMyMiUyMDM0Ljg1MDklMjA2LjE4NTc0VjEzLjQ4MTVDMzQuODUwOSUyMDE0Ljg3NCUyMDM1LjU3NzElMjAxNiUyMDM3LjEwMjklMjAxNkMzOC42Mjg3JTIwMTYlMjAzOS4zNTQ5JTIwMTQuODc0JTIwMzkuMzU0OSUyMDEzLjQ4MTVWNS4x'@; put 'OTI5OUMzOS4zNTQ5JTIwMi4xNDE0NCUyMDM2LjkwMyUyMDAuMDIyNjc4MSUyMDMzLjk4NDclMjAwLjAyMjY3ODFDMzEuMDY2NCUyMDAuMDIyNjc4MSUyMDI5LjIxNDIlMjAyLjA4MTQ4JTIwMjkuMjE0MiUyMDIuMDgxNDhDMjguMDg4MiUyMDAuODIyMjEzJTIwMjYuNzYyMyUyMDAuMDIyNjc4'@; put 'MSUyMDI0LjUxMDMlMjAwLjAyMjY3ODFDMjIuMTI1JTIwMC4wMjI2NzgxJTIwMTkuOTk5NiUyMDIuMDgxNDglMjAxOS45OTk2JTIwMi4wODE0OEMxOS4wMDY4JTIwMC44MjIyMTMlMjAxNy4zNDc4JTIwMC4wMjI2NzgxJTIwMTUuOTU1MyUyMDAuMDIyNjc4MUMxMy44MzY1JTIwMC4wMjI2Nzgx'@; put 'JTIwMTIuMTEwOSUyMDAuOTQ4ODA1JTIwMTEuMTE4MSUyMDMuMzQwNzRMOC4wNjY1NyUyMDEwLjU2OThMNC4wODg4OSUyMDEuMjg4NjFMNC4xMDIyMiUyMDEuMjY4NjJaJTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIyTTEwMC44OTIlMjAyLjIw'@; put 'MDcxQzEwMC44OTIlMjAxLjE0MTMzJTIwMTAxLjY4NCUyMDAuMzQxNzk3JTIwMTAyLjc1MSUyMDAuMzQxNzk3QzEwMy44MTclMjAwLjM0MTc5NyUyMDEwNC42MDklMjAxLjIwMTI5JTIwMTA0LjYwOSUyMDIuMjAwNzFDMTA0LjYwOSUyMDMuMjAwMTMlMjAxMDMuODE3JTIwNC4wNTk2MiUyMDEw'@; put 'Mi43NTElMjA0LjA1OTYyQzEwMS43NTglMjA0LjA1OTYyJTIwMTAwLjg5MiUyMDMuMjAwMTMlMjAxMDAuODkyJTIwMi4yMDA3MVpNMTA0LjI3JTIwMi4yMDA3MUMxMDQuMjclMjAxLjM0MTIxJTIwMTAzLjYxJTIwMC42NzQ5MzUlMjAxMDIuNzQ0JTIwMC42NzQ5MzVDMTAxLjg3OCUyMDAuNjc0'@; put 'OTM1JTIwMTAxLjIxOCUyMDEuNDAxMTglMjAxMDEuMjE4JTIwMi4yMDA3MUMxMDEuMjE4JTIwMy4wNjAyMSUyMDEwMS44NzglMjAzLjcyNjQ4JTIwMTAyLjc0NCUyMDMuNzI2NDhDMTAzLjYxJTIwMy43MjY0OCUyMDEwNC4yNyUyMDMuMDAwMjQlMjAxMDQuMjclMjAyLjIwMDcxWiUyMiUyMGZp'@; put 'bGwlM0QlMjIlMjM3MTcxNzUlMjIlMkYlM0UlMEElM0NwYXRoJTIwZCUzRCUyMk0xMDIuMDg1JTIwMS40MDIwM0MxMDIuMDg1JTIwMS4yNjg3NyUyMDEwMi4xNTIlMjAxLjIwMjE1JTIwMTAyLjI4NSUyMDEuMjAyMTVIMTAyLjg4NUMxMDMuMTUxJTIwMS4yMDIxNSUyMDEwMy4yODQlMjAxLjI2'@; put 'ODc3JTIwMTAzLjQxOCUyMDEuNDAyMDNDMTAzLjU1MSUyMDEuNTM1MjglMjAxMDMuNTUxJTIwMS42Njg1NCUyMDEwMy41NTElMjAxLjgwMTc5QzEwMy41NTElMjAyLjA2ODMlMjAxMDMuNDE4JTIwMi4yNjgxOSUyMDEwMy4yMTglMjAyLjMzNDgyTDEwMy40ODQlMjAyLjY2Nzk2QzEwMy41Mjkl'@; put 'MjAyLjcxMjM3JTIwMTAzLjU1MSUyMDIuNzU2NzklMjAxMDMuNTUxJTIwMi44MDEyMUMxMDMuNTUxJTIwMi45MzQ0NiUyMDEwMy40ODQlMjAzLjAwMTA5JTIwMTAzLjM1MSUyMDMuMDAxMDlDMTAzLjI4NCUyMDMuMDAxMDklMjAxMDMuMjE4JTIwMi45MzQ0NyUyMDEwMy4xNTElMjAyLjg2Nzg0'@; put 'TDEwMi43NTElMjAyLjQwMTQ0SDEwMi40MThWMi44MDEyMUMxMDIuNDE4JTIwMi45MzQ0NiUyMDEwMi4zNTIlMjAzLjAwMTA5JTIwMTAyLjIxOCUyMDMuMDAxMDlDMTAyLjA4NSUyMDMuMDAxMDklMjAxMDIuMDE5JTIwMi45MzQ0NiUyMDEwMi4wMTklMjAyLjgwMTIxVjEuNDA4NjlIMTAyLjA4'@; put 'NVYxLjQwMjAzWk0xMDIuODc4JTIwMi4xMjgyN0MxMDMuMDc4JTIwMi4xMjgyNyUyMDEwMy4yMTElMjAxLjk5NTAyJTIwMTAzLjIxMSUyMDEuODYxNzZDMTAzLjIxMSUyMDEuNjYxODglMjAxMDMuMDc4JTIwMS41OTUyNSUyMDEwMi44NzglMjAxLjU5NTI1SDEwMi40NzhWMi4xMjgyN0gxMDIu'@; put 'ODc4WiUyMiUyMGZpbGwlM0QlMjIlMjM3MTcxNzUlMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEpO21hc2s6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsXCAlM0NzdmclMjB3aWR0aCUzRCUyMjEwNSUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAl'@; put 'MjAwJTIwMTA1JTIwMTYlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTNDcGF0aCUyMGQlM0QlMjJNNDQuOTM3MSUyMDE0LjhMNDAuMzU5OCUyMDIuMDAwODJDNDAuMjkzMiUyMDEuODAwOTQl'@; put 'MjA0MC4yMjY2JTIwMS42MDEwNiUyMDQwLjIyNjYlMjAxLjQwMTE3QzQwLjIyNjYlMjAwLjg2ODE1MyUyMDQwLjY5MyUyMDAuMzQxNzk3JTIwNDEuMzUyNiUyMDAuMzQxNzk3QzQxLjk1MjIlMjAwLjM0MTc5NyUyMDQyLjM0NTMlMjAwLjc0MTU2MyUyMDQyLjQ3ODYlMjAxLjI2NzkyTDQ2LjI1'@; put 'NjQlMjAxMi4yNzQ4TDUwLjEwMDglMjAxLjI2NzkyQzUwLjMwMDclMjAwLjczNDklMjA1MC42MzM4JTIwMC4zNDE3OTclMjA1MS4yMjY4JTIwMC4zNDE3OTdINTEuMzZDNTEuOTU5NyUyMDAuMzQxNzk3JTIwNTIuMzUyOCUyMDAuNzQxNTYzJTIwNTIuNTUyNyUyMDEuMjY3OTJMNTYuMzMwNSUy'@; put 'MDEyLjI3NDhMNjAuMTc0OSUyMDEuMjAxMjlDNjAuMzA4MiUyMDAuNzM0OTAxJTIwNjAuNjQxMyUyMDAuMzQxNzk3JTIwNjEuMjM0MyUyMDAuMzQxNzk3QzYxLjkwMDYlMjAwLjM0MTc5NyUyMDYyLjM2MDMlMjAwLjgwODE4OCUyMDYyLjM2MDMlMjAxLjQwMTE3QzYyLjM2MDMlMjAxLjYwMTA2'@; put 'JTIwNjIuMjkzNiUyMDEuODY3NTclMjA2Mi4yMjclMjAyLjAwMDgyTDU3LjU4MzElMjAxNC44QzU3LjMxNjYlMjAxNS40NjYzJTIwNTYuODUwMiUyMDE1Ljc5MjglMjA1Ni4zMjM4JTIwMTUuNzkyOEg1Ni4yNTcyQzU1LjY1NzUlMjAxNS43OTI4JTIwNTUuMjY0NCUyMDE1LjQ1OTYlMjA1NC45'@; put 'OTc5JTIwMTQuOEw1MS4yODY4JTIwMy45MjYzNkw0Ny41MDklMjAxNC44QzQ3LjMwOTElMjAxNS40NjYzJTIwNDYuODQ5NCUyMDE1Ljc5MjglMjA0Ni4zMTYzJTIwMTUuNzkyOEg0Ni4yNDk3QzQ1LjY1MDElMjAxNS43OTI4JTIwNDUuMTkwMyUyMDE1LjQ1OTYlMjA0NC45MjM4JTIwMTQuOEg0'@; put 'NC45MzcxWiUyMiUyMGZpbGwlM0QlMjIlMjM3MTcxNzUlMjIlMkYlM0UlMEElM0NwYXRoJTIwZCUzRCUyMk03OC4zNTI1JTIwMS40Njc4Qzc4LjM1MjUlMjAwLjg2ODE1MiUyMDc4LjgxODklMjAwLjM0MTc5NyUyMDc5LjQ3ODUlMjAwLjM0MTc5N0M4MC4xMzgyJTIwMC4zNDE3OTclMjA4MC42'@; put 'MDQ1JTIwMC44MDgxODclMjA4MC42MDQ1JTIwMS40Njc4VjQuMDUyOTZDODEuNzMwNiUyMDEuNTM0NDMlMjA4NC4xODI1JTIwMC4zNDE3OTclMjA4NS44NDE1JTIwMC4zNDE3OTdDODYuNTAxMSUyMDAuMzQxNzk3JTIwODYuOTY3NSUyMDAuODA4MTg3JTIwODYuOTY3NSUyMDEuNDY3OEM4Ni45'@; put 'Njc1JTIwMi4wNjc0NSUyMDg2LjU2NzclMjAyLjUyNzE4JTIwODUuOTc0NyUyMDIuNTkzODFDODMuMDU2NCUyMDIuOTI2OTUlMjA4MC42NzEyJTIwNS4xMTIzNCUyMDgwLjY3MTIlMjA5LjQ4OTc4VjE0LjU5MzVDODAuNjcxMiUyMDE1LjE5MzElMjA4MC4yMDQ4JTIwMTUuNzE5NSUyMDc5LjU0'@; put 'NTIlMjAxNS43MTk1Qzc4Ljg4NTYlMjAxNS43MTk1JTIwNzguNDE5MiUyMDE1LjE4NjQlMjA3OC40MTkyJTIwMTQuNTkzNVYxLjQ2MTE0JTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIyTTk0LjEyOTQlMjAxNS45MjcyQzkwLjA4NTElMjAxNS45'@; put 'MjcyJTIwODYuNzA3JTIwMTIuNzQyNCUyMDg2LjcwNyUyMDguMTcxN1Y4LjEwNTA4Qzg2LjcwNyUyMDMuNzk0MjclMjA4OS42OTE5JTIwMC4zNDk2MDklMjA5My44MDI5JTIwMC4zNDk2MDlDOTguMTgwMyUyMDAuMzQ5NjA5JTIwMTAwLjY5OSUyMDMuOTk0MTUlMjAxMDAuNjk5JTIwNy45MTE4'@; put 'NkMxMDAuNjk5JTIwOC41MTE1MSUyMDEwMC4yMzIlMjA4Ljk3MTIzJTIwOTkuNjM5NSUyMDguOTcxMjNIODguODk5MUM4OS4yMzIyJTIwMTIuMjIyNyUyMDkxLjQ4NDIlMjAxNC4wMDgzJTIwOTQuMTM2JTIwMTQuMDA4M0M5NS45OTQ5JTIwMTQuMDA4MyUyMDk3LjMyMDglMjAxMy4yODIlMjA5'@; put 'OC4zODAyJTIwMTIuMjgyNkM5OC41ODAxJTIwMTIuMTQ5NCUyMDk4Ljc4JTIwMTIuMDE2MSUyMDk5LjAzOTglMjAxMi4wMTYxQzk5LjU3MjglMjAxMi4wMTYxJTIwMTAwLjAzMyUyMDEyLjQ4MjUlMjAxMDAuMDMzJTIwMTIuOTQyMkMxMDAuMDMzJTIwMTMuMjA4OCUyMDk5Ljg5OTMlMjAxMy40'@; put 'NzUzJTIwOTkuNjk5NCUyMDEzLjY2ODVDOTguMzA2OSUyMDE0Ljk5NDQlMjA5Ni42NDc5JTIwMTUuOTIwNSUyMDk0LjEyOTQlMjAxNS45MjA1VjE1LjkyNzJaTTk4LjUwNjglMjA3LjIzODkxQzk4LjMwNjklMjA0LjUyMDUxJTIwOTYuNzE0NSUyMDIuMTM1MjMlMjA5My44MDI5JTIwMi4xMzUy'@; put 'M0M5MS4yMTc3JTIwMi4xMzUyMyUyMDg5LjI5MjIlMjA0LjMyMDYyJTIwODguOTY1NyUyMDcuMjM4OTFIOTguNTEzNUg5OC41MDY4WiUyMiUyMGZpbGwlM0QlMjIlMjM3MTcxNzUlMjIlMkYlM0UlMEElM0NwYXRoJTIwZCUzRCUyMk02Mi4zNzUlMjAxMS4yMTU4QzYyLjM3NSUyMDcuOTY0NCUy'@; put 'MDY1LjAyNjglMjA2LjMwNTM3JTIwNjguODA0NiUyMDYuMzA1MzdDNzAuNzMwMSUyMDYuMzA1MzclMjA3Mi4xMjI2JTIwNi41NzE4OCUyMDczLjQ0MTklMjA2Ljk3MTY1VjYuNDM4NjNDNzMuNDQxOSUyMDMuNzIwMjIlMjA3MS43ODI4JTIwMi4zMjc3JTIwNjguOTMxMiUyMDIuMzI3N0M2Ny40'@; put 'MDU0JTIwMi4zMjc3JTIwNjYuNTQ1OSUyMDIuNTI3NTglMjA2NS40MTk5JTIwMi45OTM5N0M2NS4yODY2JTIwMy4wNjA2JTIwNjUuMTUzNCUyMDMuMDYwNiUyMDY1LjAyMDElMjAzLjA2MDZDNjQuNDg3MSUyMDMuMDYwNiUyMDY0LjAyNzQlMjAyLjU5NDIxJTIwNjQuMDI3NCUyMDIuMDY3ODVD'@; put 'NjQuMDI3NCUyMDEuNjAxNDYlMjA2NC4yMjczJTIwMS4zNDE2MSUyMDY0LjYyNyUyMDEuMTQxNzJDNjYuMDg2MiUyMDAuNDc1NDQ3JTIwNjcuMjEyMiUyMDAuMjgyMjI3JTIwNjkuMTM3NyUyMDAuMjgyMjI3QzcxLjI1NjUlMjAwLjI4MjIyNyUyMDcyLjkxNTUlMjAwLjgxNTI1MiUyMDczLjk3'@; put 'NDklMjAxLjk0MTI2Qzc0Ljk2NzYlMjAyLjkzNDAxJTIwNzUuNTAwNyUyMDQuMzkzMTYlMjA3NS41MDA3JTIwNi4zMTg3VjE0LjYwNzJDNzUuNTAwNyUyMDE1LjI3MzUlMjA3NS4wMzQzJTIwMTUuNzMzMiUyMDc0LjQ0MTMlMjAxNS43MzMyQzczLjc3NSUyMDE1LjczMzIlMjA3My4zODE5JTIw'@; put 'MTUuMjY2OCUyMDczLjM4MTklMjAxNC42NzM4VjEzLjIxNDdDNzIuMzIyNSUyMDE0LjYwNzIlMjA3MC41OTY5JTIwMTUuNzk5OCUyMDY3Ljk0NTElMjAxNS43OTk4QzY1LjIyNjclMjAxNS45MzMxJTIwNjIuMzc1JTIwMTQuMzQwNyUyMDYyLjM3NSUyMDExLjIyMjVWMTEuMjE1OFpNNzMuNTE1'@; put 'MiUyMDEwLjA4OThWOC42MzA2OEM3Mi4zODkxJTIwOC4yOTc1NCUyMDcwLjkzJTIwNy45NjQ0JTIwNjkuMDcxMSUyMDcuOTY0NEM2Ni4yMTk0JTIwNy45NjQ0JTIwNjQuNjkzNyUyMDkuMjIzNjYlMjA2NC42OTM3JTIwMTEuMDgyNlYxMS4xNDkyQzY0LjY5MzclMjAxMy4wNzQ3JTIwNjYuNDE5'@; put 'MyUyMDE0LjEzNDElMjA2OC40NzE0JTIwMTQuMTM0MUM3MS4yNTY1JTIwMTQuMTM0MSUyMDczLjUwODUlMjAxMi40NzUxJTIwNzMuNTA4NSUyMDEwLjA4OThINzMuNTE1MlolMjIlMjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDcGF0aCUyMGQlM0QlMjJNNC4xMDIyMiUyMDEu'@; put 'MjY4NjJDMy42MzU4MyUyMDAuMjA5MjM3JTIwMi4zNzY1NiUyMC0wLjMyMzc4NyUyMDEuMjUwNTUlMjAwLjIwOTIzNUMwLjEyNDU0NSUyMDAuNzQyMjU2JTIwLTAuMjc1MjE4JTIwMi4wMDE1MiUyMDAuMTkxMTc2JTIwMy4wNjA5TDQuOTYxNzIlMjAxMy40NzQ4QzUuNjg3OTYlMjAxNS4xMzM4'@; put 'JTIwNi40ODc0OSUyMDE1LjkyNjclMjA4LjAxMzI3JTIwMTUuOTI2N0M5LjUzOTA0JTIwMTUuOTI2NyUyMDEwLjI2NTMlMjAxNS4wMDA2JTIwMTEuMDY0OCUyMDEzLjQ3NDhDMTEuMDY0OCUyMDEzLjQ3NDglMjAxNS4yNDI0JTIwNC4zODY3OSUyMDE1LjMwOSUyMDQuMzI2ODNDMTUuMzc1NiUy'@; put 'MDQuMjYwMiUyMDE1LjUwODklMjAzLjkyNzA2JTIwMTUuOTA4NiUyMDMuOTI3MDZDMTYuMjQxOCUyMDMuOTI3MDYlMjAxNi41NjgzJTIwNC4xOTM1NyUyMDE2LjU2ODMlMjA0LjU5MzM0VjEzLjQ4MTVDMTYuNTY4MyUyMDE0Ljg3NCUyMDE3LjI5NDUlMjAxNiUyMDE4LjgyMDMlMjAxNkMyMC4z'@; put 'NDYxJTIwMTYlMjAyMS4wNzIzJTIwMTQuODc0JTIwMjEuMDcyMyUyMDEzLjQ4MTVWNi4xODU3NEMyMS4wNzIzJTIwNC43OTMyMiUyMDIyLjA2NSUyMDMuODY3MSUyMDIzLjQ1NzYlMjAzLjg2NzFDMjQuODUwMSUyMDMuODY3MSUyMDI1LjcwOTYlMjA0Ljc5MzIyJTIwMjUuNzA5NiUyMDYuMTg1'@; put 'NzRWMTMuNDgxNUMyNS43MDk2JTIwMTQuODc0JTIwMjYuNDQyNSUyMDE2JTIwMjcuOTYxNiUyMDE2QzI5LjQ4MDclMjAxNiUyMDMwLjIxMzYlMjAxNC44NzQlMjAzMC4yMTM2JTIwMTMuNDgxNVY2LjE4NTc0QzMwLjIxMzYlMjA0Ljc5MzIyJTIwMzEuMjA2NCUyMDMuODY3MSUyMDMyLjU5ODkl'@; put 'MjAzLjg2NzFDMzMuOTkxNCUyMDMuODY3MSUyMDM0Ljg1MDklMjA0Ljc5MzIyJTIwMzQuODUwOSUyMDYuMTg1NzRWMTMuNDgxNUMzNC44NTA5JTIwMTQuODc0JTIwMzUuNTc3MSUyMDE2JTIwMzcuMTAyOSUyMDE2QzM4LjYyODclMjAxNiUyMDM5LjM1NDklMjAxNC44NzQlMjAzOS4zNTQ5JTIw'@; put 'MTMuNDgxNVY1LjE5Mjk5QzM5LjM1NDklMjAyLjE0MTQ0JTIwMzYuOTAzJTIwMC4wMjI2NzgxJTIwMzMuOTg0NyUyMDAuMDIyNjc4MUMzMS4wNjY0JTIwMC4wMjI2NzgxJTIwMjkuMjE0MiUyMDIuMDgxNDglMjAyOS4yMTQyJTIwMi4wODE0OEMyOC4wODgyJTIwMC44MjIyMTMlMjAyNi43NjIz'@; put 'JTIwMC4wMjI2NzgxJTIwMjQuNTEwMyUyMDAuMDIyNjc4MUMyMi4xMjUlMjAwLjAyMjY3ODElMjAxOS45OTk2JTIwMi4wODE0OCUyMDE5Ljk5OTYlMjAyLjA4MTQ4QzE5LjAwNjglMjAwLjgyMjIxMyUyMDE3LjM0NzglMjAwLjAyMjY3ODElMjAxNS45NTUzJTIwMC4wMjI2NzgxQzEzLjgzNjUl'@; put 'MjAwLjAyMjY3ODElMjAxMi4xMTA5JTIwMC45NDg4MDUlMjAxMS4xMTgxJTIwMy4zNDA3NEw4LjA2NjU3JTIwMTAuNTY5OEw0LjA4ODg5JTIwMS4yODg2MUw0LjEwMjIyJTIwMS4yNjg2MlolMjIlMjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDcGF0aCUyMGQlM0QlMjJNMTAw'@; put 'Ljg5MiUyMDIuMjAwNzFDMTAwLjg5MiUyMDEuMTQxMzMlMjAxMDEuNjg0JTIwMC4zNDE3OTclMjAxMDIuNzUxJTIwMC4zNDE3OTdDMTAzLjgxNyUyMDAuMzQxNzk3JTIwMTA0LjYwOSUyMDEuMjAxMjklMjAxMDQuNjA5JTIwMi4yMDA3MUMxMDQuNjA5JTIwMy4yMDAxMyUyMDEwMy44MTclMjA0'@; put 'LjA1OTYyJTIwMTAyLjc1MSUyMDQuMDU5NjJDMTAxLjc1OCUyMDQuMDU5NjIlMjAxMDAuODkyJTIwMy4yMDAxMyUyMDEwMC44OTIlMjAyLjIwMDcxWk0xMDQuMjclMjAyLjIwMDcxQzEwNC4yNyUyMDEuMzQxMjElMjAxMDMuNjElMjAwLjY3NDkzNSUyMDEwMi43NDQlMjAwLjY3NDkzNUMxMDEu'@; put 'ODc4JTIwMC42NzQ5MzUlMjAxMDEuMjE4JTIwMS40MDExOCUyMDEwMS4yMTglMjAyLjIwMDcxQzEwMS4yMTglMjAzLjA2MDIxJTIwMTAxLjg3OCUyMDMuNzI2NDglMjAxMDIuNzQ0JTIwMy43MjY0OEMxMDMuNjElMjAzLjcyNjQ4JTIwMTA0LjI3JTIwMy4wMDAyNCUyMDEwNC4yNyUyMDIuMjAw'@; put 'NzFaJTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIyTTEwMi4wODUlMjAxLjQwMjAzQzEwMi4wODUlMjAxLjI2ODc3JTIwMTAyLjE1MiUyMDEuMjAyMTUlMjAxMDIuMjg1JTIwMS4yMDIxNUgxMDIuODg1QzEwMy4xNTElMjAxLjIwMjE1JTIwMTAz'@; put 'LjI4NCUyMDEuMjY4NzclMjAxMDMuNDE4JTIwMS40MDIwM0MxMDMuNTUxJTIwMS41MzUyOCUyMDEwMy41NTElMjAxLjY2ODU0JTIwMTAzLjU1MSUyMDEuODAxNzlDMTAzLjU1MSUyMDIuMDY4MyUyMDEwMy40MTglMjAyLjI2ODE5JTIwMTAzLjIxOCUyMDIuMzM0ODJMMTAzLjQ4NCUyMDIuNjY3'@; put 'OTZDMTAzLjUyOSUyMDIuNzEyMzclMjAxMDMuNTUxJTIwMi43NTY3OSUyMDEwMy41NTElMjAyLjgwMTIxQzEwMy41NTElMjAyLjkzNDQ2JTIwMTAzLjQ4NCUyMDMuMDAxMDklMjAxMDMuMzUxJTIwMy4wMDEwOUMxMDMuMjg0JTIwMy4wMDEwOSUyMDEwMy4yMTglMjAyLjkzNDQ3JTIwMTAzLjE1'@; put 'MSUyMDIuODY3ODRMMTAyLjc1MSUyMDIuNDAxNDRIMTAyLjQxOFYyLjgwMTIxQzEwMi40MTglMjAyLjkzNDQ2JTIwMTAyLjM1MiUyMDMuMDAxMDklMjAxMDIuMjE4JTIwMy4wMDEwOUMxMDIuMDg1JTIwMy4wMDEwOSUyMDEwMi4wMTklMjAyLjkzNDQ2JTIwMTAyLjAxOSUyMDIuODAxMjFWMS40'@; put 'MDg2OUgxMDIuMDg1VjEuNDAyMDNaTTEwMi44NzglMjAyLjEyODI3QzEwMy4wNzglMjAyLjEyODI3JTIwMTAzLjIxMSUyMDEuOTk1MDIlMjAxMDMuMjExJTIwMS44NjE3NkMxMDMuMjExJTIwMS42NjE4OCUyMDEwMy4wNzglMjAxLjU5NTI1JTIwMTAyLjg3OCUyMDEuNTk1MjVIMTAyLjQ3OFYy'@; put 'LjEyODI3SDEwMi44NzhaJTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSk7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxvZ2luLWxvZ28tY29sb3Ip'@; put 'fS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZm9vdGVye2dhcDp2YXIoLS1jbHItbG9naW4tZm9vdGVyLWdhcCl9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1mb290ZXIgYSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWZvb3RlciAuY29weXJpZ2h0e2ZvbnQtc2l6ZTp2'@; put 'YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7'@; put 'bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7Y29sb3I6dmFyKC0tY2xyLWxvZ2luLWNvcHlyaWdodC1jb2xvcil9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ib2R5e2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtm'@; put 'bGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6Y2FsYygzMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGV7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LWRpc3BsYXktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2'@; put 'YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItbG9naW4tdGl0bGUtY29sb3IpfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGUgLndlbGNvbWV7Y29sb3I6dmFyKC0tY2xyLWxvZ2luLXdlbGNvbWUtY29sb3IpO21hcmdp'@; put 'bjowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGUgLnN1YnRpdGxlLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGUgLmhpbnR7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplKTtm'@; put 'b250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0'@; put 'aW9uLWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItbG9naW4taGludC1jb2xvcik7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIDB9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50cmFkZW1hcmt7Y29sb3I6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1jb2xvcik7'@; put 'Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXdlaWdodCk7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LWZhbWlseSk7Zm9udC1zaXplOnZhcigtLWNsci1sb2dpbi10cmFkZW1hcmstZm9udC1zaXplKTtsZXR0ZXItc3BhY2luZzp2'@; put 'YXIoLS1jbHItbG9naW4tdHJhZGVtYXJrLWxldHRlci1zcGFjaW5nKX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3Vwe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyk7d2lkdGg6MTAwJX0ubG9n'@; put 'aW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5hdXRoLXNvdXJjZSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC51c2VybmFtZSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5wYXNzd29yZCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdy'@; put 'b3VwIC5jaGVja2JveCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItZm9ybS1jb250cm9se21hcmdpbjowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSAwfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jaGVja2JveC13cmFwcGVye21h'@; put 'cmdpbjowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMykgMH0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250'@; put 'cm9sLWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVyLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLXNlbGVjdHt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNv'@; put 'bnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dHt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXJ7d2lkdGg6MTAwJX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2lu'@; put 'LWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyPi5jbHItaW5wdXQtZ3JvdXB7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFw'@; put 'cGVyPi5jbHItaW5wdXQtZ3JvdXA+LmNsci1pbnB1dHt3aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpKX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC50b29sdGlwLXZhbGlkYXRpb257bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl'@; put 'LTQpfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnRvb2x0aXAtdmFsaWRhdGlvbiAudXNlcm5hbWUsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9uIC5wYXNzd29yZHt3aWR0aDoxMDAlO21hcmdpbi10b3A6MH0ubG9naW4t'@; put 'd3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvcntmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdo'@; put 'dDpjYWxjKDIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO2Rpc3BsYXk6bm9uZTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7YmFja2dyb3Vu'@; put 'ZDp2YXIoLS1jbHItbG9naW4tZXJyb3ItYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hbGVydC1kYW5nZXItYm9yZGVyLWNvbG9yKX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvcjpiZWZvcmV7Y29udGVudDoiIjstd2Via2l0LW1hc2s6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hh'@; put 'cnNldD11dGY4LCUzQ3N2ZyUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB2aWV3Qm94JTNEJTIyNSUyMDUlMjAyNiUyMDI2JTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaWRZTWlkJTIwbWVldCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJG'@; put 'c3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTNFJTNDZGVmcyUzRSUzQ3N0eWxlJTNFLmNsci1pLW91dGxpbmUlN0JmaWxsJTNBJ25vbmUnJTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIw'@; put 'JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VleGNsYW1hdGlvbi1jaXJjbGUtbGluZSUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xy'@; put 'LWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0xJTIyJTIwZCUzRCUyMk0xOCUyQzZBMTIlMkMxMiUyQzAlMkMxJTJDMCUyQzMwJTJDMTglMkMxMiUyQzEyJTJDMCUyQzAlMkMwJTJDMTglMkM2Wm0wJTJDMjJBMTAlMkMxMCUyQzAlMkMxJTJDMSUyQzI4JTJDMTglMkMxMCUyQzEwJTJD'@; put 'MCUyQzAlMkMxJTJDMTglMkMyOFolMjIlM0UlM0MlMkZwYXRoJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0yJTIyJTIwZCUzRCUyMk0xOCUyQzIwLjA3YTEuMyUyQzEuMyUyQzAlMkMwJTJDMS0xLjMtMS4zdi02YTEuMyUyQzEuMyUy'@; put 'QzAlMkMxJTJDMSUyQzIuNiUyQzB2NkExLjMlMkMxLjMlMkMwJTJDMCUyQzElMkMxOCUyQzIwLjA3WiUyMiUzRSUzQyUyRnBhdGglM0UlM0NjaXJjbGUlMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMyUyMiUyMGN4JTNEJTIyMTcuOTUlMjIlMjBjeSUz'@; put 'RCUyMjIzLjAyJTIyJTIwciUzRCUyMjEuNSUyMiUzRSUzQyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnN2ZyUzRSIpO21hc2s6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZlcnNpb24lM0QlMjIx'@; put 'LjElMjIlMjB2aWV3Qm94JTNEJTIyNSUyMDUlMjAyNiUyMDI2JTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaWRZTWlkJTIwbWVldCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAl'@; put 'M0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTNFJTNDZGVmcyUzRSUzQ3N0eWxlJTNFLmNsci1pLW91dGxpbmUlN0JmaWxsJTNBJ25vbmUnJTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw'@; put 'JTIwJTIwJTIwJTNDdGl0bGUlM0VleGNsYW1hdGlvbi1jaXJjbGUtbGluZSUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0x'@; put 'JTIyJTIwZCUzRCUyMk0xOCUyQzZBMTIlMkMxMiUyQzAlMkMxJTJDMCUyQzMwJTJDMTglMkMxMiUyQzEyJTJDMCUyQzAlMkMwJTJDMTglMkM2Wm0wJTJDMjJBMTAlMkMxMCUyQzAlMkMxJTJDMSUyQzI4JTJDMTglMkMxMCUyQzEwJTJDMCUyQzAlMkMxJTJDMTglMkMyOFolMjIlM0UlM0MlMkZw'@; put 'YXRoJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0yJTIyJTIwZCUzRCUyMk0xOCUyQzIwLjA3YTEuMyUyQzEuMyUyQzAlMkMwJTJDMS0xLjMtMS4zdi02YTEuMyUyQzEuMyUyQzAlMkMxJTJDMSUyQzIuNiUyQzB2NkExLjMlMkMxLjMl'@; put 'MkMwJTJDMCUyQzElMkMxOCUyQzIwLjA3WiUyMiUzRSUzQyUyRnBhdGglM0UlM0NjaXJjbGUlMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMyUyMiUyMGN4JTNEJTIyMTcuOTUlMjIlMjBjeSUzRCUyMjIzLjAyJTIyJTIwciUzRCUyMjEuNSUyMiUzRSUz'@; put 'QyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnN2ZyUzRSIpOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb3ZlcjttYXNrLXNpemU6Y292ZXI7YmFja2dy'@; put 'b3VuZC1jb2xvcjp2YXIoLS1jbHItbG9naW4tZXJyb3ItaWNvbi1jb2xvcik7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSAwIDA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1z'@; put 'cGFjZS03KX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvci5hY3RpdmV7ZGlzcGxheTpmbGV4fS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmVycm9yLmFjdGl2ZTpiZWZvcmV7ZmxleDowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0ubG9n'@; put 'aW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5idG57bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMDttYXgtd2lkdGg6bm9uZX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5zaWdudXB7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw'@; put 'aHktYm9keS1mb250LXdlaWdodCk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVy'@; put 'LXNwYWNpbmcpO3RleHQtYWxpZ246Y2VudGVyfS5sb2dpbi13cmFwcGVyIC5sb2dpbjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWNkcy1n'@; put 'bG9iYWwtY29sb3ItYmxhY2spO29wYWNpdHk6LjE7dG9wOjA7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpKX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsubG9naW4td3JhcHBlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tncm91bmQ6dmFy'@; put 'KC0tY2xyLWxvZ2luLWJhY2tncm91bmQtY29sb3IpfS5sb2dpbi13cmFwcGVyIC5sb2dpbnt3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjA7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpIDIwJX0ubG9naW4td3JhcHBlciAubG9naW46YWZ0ZXJ7Y29udGVudDpub25lfX1AbWVkaWEg'@; put 'c2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KXsubG9naW4td3JhcHBlciAubG9naW57cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpIDE1JX19Lm1haW4tY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQ6'@; put 'dmFyKC0tY2xyLWdsb2JhbC1hcHAtYmFja2dyb3VuZCl9Lm1haW4tY29udGFpbmVyIC5hbGVydC5hbGVydC1hcHAtbGV2ZWx7ZmxleDowIDAgYXV0bztvdmVyZmxvdy14OmhpZGRlbn0ubWFpbi1jb250YWluZXIgaGVhZGVyLC5tYWluLWNvbnRhaW5lciAuaGVhZGVye2ZsZXg6MCAwIHZhcigt'@; put 'LWNsci1oZWFkZXItaGVpZ2h0KX0ubWFpbi1jb250YWluZXIgLnN1Yi1uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXZ7ZmxleDowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSl9Lm1haW4tY29udGFpbmVyIC51LW1haW4tY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlv'@; put 'bjpjb2x1bW47ZmxleDoxIDEgYXV0bztvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5jb250ZW50LWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzttaW4taGVpZ2h0Oi4wNXJlbX0ubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFy'@; put 'ZWF7ZmxleDoxIDEgYXV0bztvdmVyZmxvdy15OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZzoxLjJyZW19Lm1haW4tY29udGFpbmVyIC5jb250ZW50LWNvbnRhaW5lciAuY29udGVudC1hcmVhPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9Lm1haW4tY29u'@; put 'dGFpbmVyIC5jb250ZW50LWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdntmbGV4OjAgMCBhdXRvO29yZGVyOi0xfUBtZWRpYSBwcmludHsubWFpbi1jb250YWluZXJ7aGVpZ2h0OmF1dG99fWJvZHkubm8tc2Nyb2xsaW5nLGJvZHlbY2RzLWxheW91dD1uby1zY3JvbGxpbmddLGJvZHkubm8t'@; put 'c2Nyb2xsaW5nIC5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYSxib2R5W2Nkcy1sYXlvdXQ9bm8tc2Nyb2xsaW5nXSAubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWF7b3ZlcmZsb3c6aGlkZGVufTpyb290IFtjZHMt'@; put 'dGhlbWVdey0tY2xyLW1vZGFsLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItbW9kYWwtY2xvc2UtY29sb3I6dmFyKC0tY2xyLWNsb3NlLWNvbG9yKTstLWNsci1tb2RhbC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1tb2RhbC1jb250ZW50LWJveC1zaGFkb3c6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMzAwKTstLWNsci1tb2RhbC1iYWNrZHJvcC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW92ZXJsYXktYmFja2Ryb3AtYmFja2dyb3Vu'@; put 'ZCk7LS1jbHItbW9kYWwtc20td2lkdGg6Y2FsYygyODggKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNsci1tb2RhbC1tZC13aWR0aDpjYWxjKDU3NiAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLW1vZGFsLWxnLXdpZHRoOmNhbGMoODY0ICog'@; put 'KDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItbW9kYWwteGwtd2lkdGg6Y2FsYygxMTUyICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItbW9kYWwtdGl0bGUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNs'@; put 'ci1tb2RhbC10aXRsZS1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXNpemUpOy0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtZmFtaWx5OnZhcigtLWNsci1mb250KTstLWNsci1tb2RhbC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlw'@; put 'b2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTstLWNsci1tb2RhbC10aXRsZS1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KTstLWNsci1tb2RhbC10aXRsZS1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo'@; put 'eS1zZWN0aW9uLWxldHRlci1zcGFjaW5nKX0uY2xyLXNpZGUtcGFuZWwtcGlubmVkLXNte3BhZGRpbmctcmlnaHQ6dmFyKC0tY2xyLW1vZGFsLXNtLXdpZHRoKSFpbXBvcnRhbnR9LmNsci1zaWRlLXBhbmVsLXBpbm5lZC1tZHtwYWRkaW5nLXJpZ2h0OnZhcigtLWNsci1tb2RhbC1tZC13aWR0'@; put 'aCkhaW1wb3J0YW50fS5jbHItc2lkZS1wYW5lbC1waW5uZWQtbGd7cGFkZGluZy1yaWdodDp2YXIoLS1jbHItbW9kYWwtbGctd2lkdGgpIWltcG9ydGFudH0uY2xyLXNpZGUtcGFuZWwtcGlubmVkLXhse3BhZGRpbmctcmlnaHQ6dmFyKC0tY2xyLW1vZGFsLXhsLXdpZHRoKSFpbXBvcnRhbnR9'@; put 'LmNsci1tb2RhbC1ob3N0e292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0uY2xyLW1vZGFsLWhvc3QgLm1vZGFsLC5jbHItbW9kYWwtaG9zdCAubW9kYWwtYmFja2Ryb3B7cG9zaXRpb246YWJzb2x1dGV9Lm1vZGFse3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoxMDUw'@; put 'O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkqMik7bWF4LXdpZHRoOjEwMCV9Lm1vZGFsIC5hbGVydCsubW9kYWwtaGVhZGVyLC5t'@; put 'b2RhbCAuYWxlcnQrLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFse3BhZGRpbmc6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpLzIpfX0ubW9k'@; put 'YWwgLm1vZGFsLWJvZHl7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5zaWRlLXBhbmVsIC5tb2RhbHtsZWZ0OmluaXRpYWw7cGFkZGluZzowO2hlaWdodDoxMDAlfS5zaWRlLXBhbmVsIC5tb2RhbCAubW9kYWwtY29udGVudC13cmFwcGVye2hlaWdodDoxMDAlfS5zaWRlLXBh'@; put 'bmVsIC5tb2RhbCAubW9kYWwtY29udGVudC13cmFwcGVyIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnNpZGUtcGFuZWwgLm1vZGFsIC5tb2RhbC1kaWFsb2d7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2hlaWdodDoxMDAl'@; put 'fS5zaWRlLXBhbmVsIC5tb2RhbC5tb2RhbC1mdWxsLXNjcmVlbntpbnNldDowO3BhZGRpbmc6MH0uc2lkZS1wYW5lbCAubW9kYWwgLm1vZGFsLWJvZHktd3JhcHBlcntmbGV4OjEgMTttYXgtaGVpZ2h0OjEwMCV9Lm1vZGFsLWRpYWxvZ3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwNTA7'@; put 'd2lkdGg6dmFyKC0tY2xyLW1vZGFsLW1kLXdpZHRoKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1tb2RhbC1ib3JkZXItcmFkaXVzKTtib3gtc2hhZG93OnZhcigtLWNsci1tb2RhbC1jb250ZW50LWJveC1zaGFkb3cpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0'@; put 'aC0xMDApIHNvbGlkIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbW9kYWwtYmctY29sb3IpO21heC13aWR0aDoxMDAlfS5tb2RhbC1kaWFsb2cubW9kYWwtc217d2lkdGg6dmFyKC0tY2xyLW1vZGFsLXNt'@; put 'LXdpZHRoKX0ubW9kYWwtZGlhbG9nLm1vZGFsLWxne3dpZHRoOnZhcigtLWNsci1tb2RhbC1sZy13aWR0aCl9Lm1vZGFsLWRpYWxvZy5tb2RhbC14bHt3aWR0aDp2YXIoLS1jbHItbW9kYWwteGwtd2lkdGgpfS5tb2RhbC1oZWFkZXIsLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZXtib3JkZXIt'@; put 'Ym90dG9tOm5vbmU7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgMH0ubW9kYWwtaGVhZGVyKy5tb2RhbC1mb290ZXIsLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSsubW9kYWwtZm9vdGVye3BhZGRpbmctdG9wOnZhcigtLWNkcy1n'@; put 'bG9iYWwtc3BhY2UtOSl9Lm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ubW9kYWwtaGVhZGVyIC5tb2RhbC10aXRsZSwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5tb2Rh'@; put 'bC10aXRsZSwubW9kYWwtaGVhZGVyIC5zaWRlLXBhbmVsLXRpdGxlLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLnNpZGUtcGFuZWwtdGl0bGV7Y29sb3I6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1m'@; put 'b250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBv'@; put 'Z3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpO21hcmdpbjowfS5tb2RhbC1oZWFkZXIgLm1vZGFsLXRpdGxlOm5vdChbY2RzLXRleHRdKSwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5tb2RhbC10aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlciAuc2lkZS1wYW5lbC10'@; put 'aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuc2lkZS1wYW5lbC10aXRsZTpub3QoW2Nkcy10ZXh0XSl7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWZvbnQt'@; put 'c2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1tb2RhbC10aXRsZS1sZXR0ZXItc3BhY2luZyl9Lm1vZGFsLWhlYWRl'@; put 'ciAuY2xvc2UsLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UsLm1vZGFsLWhlYWRlciAucGlubmFibGUsLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAucGlubmFibGV7Zm9udC1zaXplOmluaXRpYWw7bGluZS1oZWlnaHQ6aW5pdGlhbH0ubW9kYWwtaGVhZGVyIC5jbG9zZSBjZHMt'@; put 'aWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5jbG9zZSBjbHItaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZSBjbHItaWNvbiwubW9kYWwtaGVhZGVyIC5waW5uYWJsZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVy'@; put 'LS1hY2Nlc3NpYmxlIC5waW5uYWJsZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5waW5uYWJsZSBjbHItaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5waW5uYWJsZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1tb2RhbC1jbG9zZS1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1nbG9i'@; put 'YWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0ubW9kYWwtaGVhZGVyIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5jbG9zZTpob3ZlciBjbHItaWNvbiwu'@; put 'bW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZTpob3ZlciBjbHItaWNvbiwubW9kYWwtaGVhZGVyIC5waW5uYWJsZTpob3ZlciBjZHMtaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5waW5uYWJsZTpob3ZlciBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5waW5uYWJsZTpob3Zl'@; put 'ciBjbHItaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5waW5uYWJsZTpob3ZlciBjbHItaWNvbntmaWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci1ob3Zlcil9Lm1vZGFsLWhlYWRlciAuY2xvc2U6aG92ZXI6YWN0aXZlIGNkcy1pY29uLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUg'@; put 'LmNsb3NlOmhvdmVyOmFjdGl2ZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5jbG9zZTpob3ZlcjphY3RpdmUgY2xyLWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2U6aG92ZXI6YWN0aXZlIGNsci1pY29uLC5tb2RhbC1oZWFkZXIgLnBpbm5hYmxlOmhvdmVyOmFjdGl2ZSBj'@; put 'ZHMtaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5waW5uYWJsZTpob3ZlcjphY3RpdmUgY2RzLWljb24sLm1vZGFsLWhlYWRlciAucGlubmFibGU6aG92ZXI6YWN0aXZlIGNsci1pY29uLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLnBpbm5hYmxlOmhvdmVyOmFjdGl2ZSBjbHIt'@; put 'aWNvbntmaWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci1hY3RpdmUpfS5tb2RhbC1oZWFkZXIgLnBpbm5hYmxlLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLnBpbm5hYmxle3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDttYXJnaW4tcmlnaHQ6dmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS02KTthcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1vZGFsLXRpdGxlLXdyYXBwZXJ7ZmxleDoxfS5tb2RhbC10aXRsZS13cmFwcGVyIC5tb2RhbC10aXRsZSBoMywubW9kYWwtdGl0bGUtd3JhcHBlciAuc2lkZS1wYW5lbC10aXRs'@; put 'ZSBoM3ttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBlcnttYXgtaGVpZ2h0Ojcwdmg7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVufS5tb2RhbC1ib2R5LXdyYXBwZXIgLm1vZGFsLWJvZHksLm1vZGFsLWJvZHktd3JhcHBlciAuc2lkZS1wYW5lbC1ib2R5e2NvbG9yOnZh'@; put 'cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1j'@; put 'ZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX0ubW9kYWwtYm9keS13cmFwcGVyPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBl'@; put 'cj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9Lm1vZGFsLWZvb3RlcntwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5tb2RhbC1mb290ZXIsLnNpZGUtcGFuZWwtZm9vdGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRl'@; put 'bnQ6ZmxleC1lbmQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9Lm1vZGFsLWZvb3RlciAuYnRuLC5zaWRlLXBhbmVsLWZvb3RlciAuYnRue21hcmdpbjowfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpey5tb2RhbC1i'@; put 'b2R5LXdyYXBwZXJ7bWF4LWhlaWdodDo1NXZofX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KXsubW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6NTV2aH19Lm1vZGFsLWJhY2tkcm9we3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j'@; put 'bHItbW9kYWwtYmFja2Ryb3AtY29sb3IpO3otaW5kZXg6MTA0MH0ubW9kYWwgLm1vZGFsLW5hdntkaXNwbGF5Om5vbmV9Lm1vZGFsLm1vZGFsLWZ1bGwtc2NyZWVue3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtoZWlnaHQ6MTAwJX0ubW9kYWwubW9kYWwtZnVsbC1zY3JlZW4g'@; put 'Lm1vZGFsLWRpYWxvZ3tkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0ubW9kYWwubW9kYWwtZnVsbC1zY3JlZW4gLm1vZGFsLWRpYWxvZyAubW9kYWwtY29udGVudC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MX0ubW9kYWwubW9kYWwtZnVsbC1zY3JlZW4gLm1v'@; put 'ZGFsLWRpYWxvZyAubW9kYWwtY29udGVudHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZ3JvdzoxfS5tb2RhbC5tb2RhbC1mdWxsLXNjcmVlbiAubW9kYWwtZGlhbG9nIC5tb2RhbC1ib2R5LXdyYXBwZXIsLm1vZGFsLm1vZGFsLWZ1bGwtc2NyZWVuIC5tb2RhbC1k'@; put 'aWFsb2cgLm1vZGFsLWJvZHl7ZmxleC1ncm93OjE7bWF4LWhlaWdodDoxMDAlfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWhlYWRlci1oZWlnaHQ6Y2FsYyg2MCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLWhlYWRlci1kaXZpZGVyLWNvbG9yOnZhcigtLWNkcy1n'@; put 'bG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jbHItaGVhZGVyLWJnLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTEwMDApOy0tY2xyLWhlYWRlci0yLWJnLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jbHItaGVh'@; put 'ZGVyLTMtYmctY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1henVyZS05MDApOy0tY2xyLWhlYWRlci00LWJnLWNvbG9yOnZhcigtLWNsci1oZWFkZXItMy1iZy1jb2xvcik7LS1jbHItaGVhZGVyLTUtYmctY29sb3I6dmFyKC0tY2xyLWhlYWRlci0zLWJnLWNvbG9yKTstLWNsci1oZWFk'@; put 'ZXItNi1iZy1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWJnLWNvbG9yKTstLWNsci1oZWFkZXItNy1iZy1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTItYmctY29sb3IpOy0tY2xyLWhlYWRlci1mb250LWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jbHIt'@; put 'aGVhZGVyLWZvbnQtY29sb3ItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTApOy0tY2xyLWhlYWRlci10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCk7LS1jbHItaGVhZGVyLXRpdGxl'@; put 'LWZvbnQtZmFtaWx5OnZhcigtLWNsci1mb250KTstLWNsci1oZWFkZXItc2VhcmNoLWljb24tc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLWhlYWRlci1zZWFyY2gtbWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTstLWNsci1oZWFkZXItc2VhcmNoLW1h'@; put 'cmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLWhlYWRlci1zZWFyY2gtZ2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7LS1jbHItaGVhZGVyLXNlYXJjaC1pbnB1dC1mb250LWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2xyLWhlYWRl'@; put 'ci1zZWFyY2gtcGxhY2Vob2xkZXItZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLWhlYWRlci1zZWFyY2gtcGxhY2Vob2xkZXItdGV4dC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDAp'@; put 'Oy0tY2xyLWhlYWRlci1zZWFyY2gtYm9yZGVyLWFjdGl2ZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIEhpZ2hsaWdodDstLWNsci1oZWFkZXItc2VhcmNoLWJvcmRlci1ob3Zlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDAp'@; put 'IHNvbGlkIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTQwMCl9aGVhZGVyLC5oZWFkZXJ7ZGlzcGxheTpmbGV4O2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWJnLWNvbG9yKTtoZWlnaHQ6dmFy'@; put 'KC0tY2xyLWhlYWRlci1oZWlnaHQpO3doaXRlLXNwYWNlOm5vd3JhcH1oZWFkZXIuaGVhZGVyLTEsLmhlYWRlci5oZWFkZXItMXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItYmctY29sb3IpfWhlYWRlci5oZWFkZXItMiwuaGVhZGVyLmhlYWRlci0ye2JhY2tncm91bmQtY29s'@; put 'b3I6dmFyKC0tY2xyLWhlYWRlci0yLWJnLWNvbG9yKX1oZWFkZXIuaGVhZGVyLTMsLmhlYWRlci5oZWFkZXItM3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItMy1iZy1jb2xvcil9aGVhZGVyLmhlYWRlci00LC5oZWFkZXIuaGVhZGVyLTR7YmFja2dyb3VuZC1jb2xvcjp2YXIo'@; put 'LS1jbHItaGVhZGVyLTQtYmctY29sb3IpfWhlYWRlci5oZWFkZXItNSwuaGVhZGVyLmhlYWRlci01e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci01LWJnLWNvbG9yKX1oZWFkZXIuaGVhZGVyLTYsLmhlYWRlci5oZWFkZXItNntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1o'@; put 'ZWFkZXItNi1iZy1jb2xvcil9aGVhZGVyLmhlYWRlci03LC5oZWFkZXIuaGVhZGVyLTd7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTctYmctY29sb3IpfWhlYWRlci5oZWFkZXItOCwuaGVhZGVyLmhlYWRlci04e2JhY2tncm91bmQtY29sb3I6IzBmMTcxY31oZWFkZXIgLmJy'@; put 'YW5kaW5nLC5oZWFkZXIgLmJyYW5kaW5ne2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO21pbi13aWR0aDpjYWxjKDIwNCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9aGVhZGVyIC5icmFuZGluZz5hLGhlYWRlciAu'@; put 'YnJhbmRpbmc+Lm5hdi1saW5rLC5oZWFkZXIgLmJyYW5kaW5nPmEsLmhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5re2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO3BhZGRpbmc6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX1oZWFkZXIgLmJyYW5kaW5nPmE6Zm9jdXMsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuYnJhbmRpbmc+YTpmb2N1cywuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6Y2FsYygt'@; put 'MSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKX1oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbixoZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLGhlYWRlciAuYnJhbmRpbmcgY2xyLWljb24sLmhlYWRlciAuYnJhbmRpbmcgLmNsci1pY29uLC5oZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLC5o'@; put 'ZWFkZXIgLmJyYW5kaW5nIGNsci1pY29ue2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpfWhlYWRlciAuYnJhbmRpbmcgLnRpdGxlLC5oZWFkZXIgLmJyYW5kaW5nIC50aXRs'@; put 'ZXtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IpO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oZWFkZXItdGl0bGUtZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xy'@; put 'LWhlYWRlci10aXRsZS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZyk7dGV4dC1k'@; put 'ZWNvcmF0aW9uOm5vbmV9aGVhZGVyIC5zZXR0aW5ncyAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtdGV4dCwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LXRleHQsLmhl'@; put 'YWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi10ZXh0e2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX1oZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIGNsci1pY29uLC5o'@; put 'ZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgY2xyLWljb24sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayxoZWFkZXIgLmhlYWRlci1u'@; put 'YXYgLm5hdi1saW5rLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluaywuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluaywuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmt7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1p'@; put 'dGVtczpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKX1o'@; put 'ZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpob3ZlcixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmhvdmVyLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmhvdmVyLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYt'@; put 'bGluazpob3ZlciwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yLWhvdmVyKX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpkaXNhYmxlZCxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmRpc2FibGVk'@; put 'LGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpkaXNhYmxlZCwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpkaXNhYmxlZCwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZGlzYWJsZWR7Y3Vy'@; put 'c29yOm5vdC1hbGxvd2VkfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNkcy1pY29uLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgY2RzLWljb24saGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayBjbHItaWNvbixo'@; put 'ZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjbHItaWNvbiwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsgY2RzLWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIg'@; put 'LmhlYWRlci1uYXYgLm5hdi1saW5rIGNkcy1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsgY2xyLWljb257aGVpZ2h0OnZh'@; put 'cigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5u'@; put 'YXYtbGluay5uYXYtaWNvbi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLm5hdi1pY29uLXRleHR7Z2FwOnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtNCl9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCBj'@; put 'ZHMtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2xyLWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNs'@; put 'ci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNkcy1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2RzLWljb24sLmhl'@; put 'YWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbnt0'@; put 'cmFuc2Zvcm06bm9uZX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5o'@; put 'ZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHR7ZGlzcGxheTpub25lfWhl'@; put 'YWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLmFjdGl2ZSAubmF2LXRleHQsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5r'@; put 'LmFjdGl2ZSAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtdGV4dCwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsuYWN0aXZlIC5uYXYtdGV4dHtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNp'@; put 'emUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcp'@; put 'fWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmZvY3VzLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zm9jdXMsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmZvY3VzLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5h'@; put 'di1saW5rOmZvY3VzLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpmb2N1c3tvdXRsaW5lLW9mZnNldDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkpfWhlYWRlciAuaGVhZGVyLW5hdiwuaGVhZGVyIC5oZWFkZXItbmF2e2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBh'@; put 'dXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX1oZWFkZXIgLmhlYWRlci1uYXY6YmVmb3JlLC5oZWFkZXIgLmhlYWRlci1uYXY6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIo'@; put 'LS1jbHItaGVhZGVyLWRpdmlkZXItY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xlZnQ6MH1oZWFkZXIgLmhlYWRlci1uYXYg'@; put 'Lm5hdi1saW5rOmZpcnN0LW9mLXR5cGUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGUsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zmlyc3Qtb2YtdHlwZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGV7cG9zaXRpb246cmVs'@; put 'YXRpdmV9aGVhZGVyIC5zZXR0aW5ncyxoZWFkZXIgLmhlYWRlci1hY3Rpb25zLC5oZWFkZXIgLnNldHRpbmdzLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25ze2ZsZXg6MSAwIGF1dG87ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1oZWFkZXIgLnNldHRpbmdzPjpub3QoLmRy'@; put 'b3Bkb3duKTpiZWZvcmUsaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZTpiZWZvcmUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz46bm90KC5kcm9wZG93bik6YmVmb3JlLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YmVm'@; put 'b3JlLC5oZWFkZXIgLnNldHRpbmdzPjpub3QoLmRyb3Bkb3duKTpiZWZvcmUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YmVmb3JlLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPjpub3QoLmRyb3Bkb3duKTpiZWZvcmUsLmhlYWRlciAuaGVhZGVyLWFjdGlv'@; put 'bnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl'@; put 'LTExKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xlZnQ6MH1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3du'@; put 'Pi5kcm9wZG93bi10b2dnbGUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGV7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7cG9zaXRpb246cmVsYXRpdmU7cGFk'@; put 'ZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKTthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKX1oZWFk'@; put 'ZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmhvdmVyLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmhlYWRlciAuaGVh'@; put 'ZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yLWhvdmVyKX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRy'@; put 'b3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2Vk'@; put 'fWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSxoZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSks'@; put 'aGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb246bm90KFtzaGFw'@; put 'ZV49YW5nbGVdKSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hh'@; put 'cGVePWFuZ2xlXSksLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHIt'@; put 'aWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24g'@; put 'LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSk7bWFyZ2luLXJpZ2h0'@; put 'OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7bGVmdDphdXRvO3JpZ2h0OjB9aGVhZGVyIC5zZWFyY2gtYm94LGhlYWRlciAuc2VhcmNoLC5oZWFkZXIgLnNlYXJjaC1ib3gsLmhlYWRlciAuc2VhcmNoe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDowIDAgYXV0bzttYXgt'@; put 'd2lkdGg6Y2FsYygyODgqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3BhZGRpbmc6MDtwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IpfWhlYWRlciAuc2VhcmNoLWJveDpob3ZlcixoZWFkZXIgLnNlYXJjaDpob3ZlciwuaGVhZGVyIC5z'@; put 'ZWFyY2gtYm94OmhvdmVyLC5oZWFkZXIgLnNlYXJjaDpob3Zlcntjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3ItaG92ZXIpfWhlYWRlciAuc2VhcmNoLWJveDpkaXNhYmxlZCxoZWFkZXIgLnNlYXJjaDpkaXNhYmxlZCwuaGVhZGVyIC5zZWFyY2gtYm94OmRpc2FibGVkLC5oZWFk'@; put 'ZXIgLnNlYXJjaDpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9aGVhZGVyIC5zZWFyY2gtYm94OmJlZm9yZSxoZWFkZXIgLnNlYXJjaDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoLWJveDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoOmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlv'@; put 'bjphYnNvbHV0ZTtjb250ZW50OiIiO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci1kaXZpZGVyLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7d2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTt0b3A6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS02KTtsZWZ0OmF1dG99aGVhZGVyIC5zZWFyY2gtYm94Pi5uYXYtaWNvbixoZWFkZXIgLnNlYXJjaD4ubmF2LWljb24sLmhlYWRlciAuc2VhcmNoLWJveD4ubmF2LWljb24sLmhlYWRlciAuc2VhcmNoPi5uYXYtaWNvbnttYXJnaW46MCB2YXIoLS1jZHMtZ2xvYmFsLXNw'@; put 'YWNlLTQpIGNhbGMoMyooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsaGVhZGVyIC5zZWFyY2ggbGFiZWwsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCwuaGVhZGVyIC5zZWFyY2ggbGFiZWx7'@; put 'ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OnZhcigtLWNsci1oZWFkZXItc2VhcmNoLWdhcCk7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtbWFyZ2luLWxlZnQpO21hcmdpbi1yaWdodDp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1tYXJnaW4tcmlnaHQpO3Rl'@; put 'eHQtYWxpZ246Y2VudGVyfWhlYWRlciAuc2VhcmNoLWJveCBsYWJlbDpiZWZvcmUsaGVhZGVyIC5zZWFyY2ggbGFiZWw6YmVmb3JlLC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWw6YmVmb3JlLC5oZWFkZXIgLnNlYXJjaCBsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVu'@; put 'dDoiIjtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAzNiUyMiUzRSUzQ2RlZnMlM0Ul'@; put 'M0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0ElMjNmZmZmZmYlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlM0N0aXRsZSUzRVNlYXJjaCUzQyUyRnRpdGxlJTNFJTNDZyUyMGlkJTNEJTIyaWNvbnMlMjIlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJN'@; put 'MTUlMkM0LjA1QTEwLjk1JTJDMTAuOTUlMkMwJTJDMSUyQzElMkM0LjA1JTJDMTUlMkMxMSUyQzExJTJDMCUyQzAlMkMxJTJDMTUlMkM0LjA1TTE1JTJDMkExMyUyQzEzJTJDMCUyQzElMkMwJTJDMjglMkMxNSUyQzEzJTJDMTMlMkMwJTJDMCUyQzAlMkMxNSUyQzJaJTIyJTJGJTNFJTNDcGF0'@; put 'aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjAlMjBkJTNEJTIyTTMzLjcxJTJDMzIuMjlsLTcuMzctNy40Mi0xLjQyJTJDMS40MSUyQzcuMzclMkM3LjQyYTElMkMxJTJDMCUyQzElMkMwJTJDMS40Mi0xLjQxWiUyMiUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0UpO2JhY2tncm91bmQtcmVw'@; put 'ZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaWNvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1pY29uLXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci1z'@; put 'ZWFyY2gtaWNvbi1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaWNvbi1zaXplKTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjA7bWFyZ2luLXJpZ2h0OmNhbGMoLTEqKHZhcigtLWNsci1oZWFkZXItc2VhcmNoLWljb24tc2l6ZSkgKyB2YXIoLS1jbHItaGVh'@; put 'ZGVyLXNlYXJjaC1nYXApKSl9aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LGhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwgaW5wdXQsLmhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0e2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtOSk7bWFyZ2luOmF1dG99aGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0saGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0sLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF17Ym9yZGVy'@; put 'OjA7YmFja2dyb3VuZDowIDA7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaW5wdXQtZm9udC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7cGFkZGluZzow'@; put 'IDAgMCBjYWxjKHZhcigtLWNsci1oZWFkZXItc2VhcmNoLWljb24tc2l6ZSkgKyAyKnZhcigtLWNsci1oZWFkZXItc2VhcmNoLWdhcCkpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0'@; put 'OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpfWhlYWRlciAuc2VhcmNo'@; put 'LWJveCBpbnB1dFt0eXBlPXRleHRdOi13ZWJraXQtYXV0b2ZpbGwsaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyxoZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOi13ZWJraXQtYXV0b2ZpbGwsaGVhZGVyIC5zZWFyY2ggaW5w'@; put 'dXRbdHlwZT10ZXh0XTotd2Via2l0LWF1dG9maWxsOmZvY3VzLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTotd2Via2l0LWF1dG9maWxsLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTotd2Via2l0LWF1dG9maWxsOmZvY3VzLC5oZWFkZXIgLnNlYXJj'@; put 'aCBpbnB1dFt0eXBlPXRleHRdOi13ZWJraXQtYXV0b2ZpbGwsLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06LXdlYmtpdC1hdXRvZmlsbDpmb2N1c3std2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwcyA2MDAwMDBzLGNvbG9yIDBzIDYwMDAwMHM7dHJhbnNpdGlv'@; put 'bjpiYWNrZ3JvdW5kLWNvbG9yIDBzIDYwMDAwMHMsY29sb3IgMHMgNjAwMDAwc31oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTo6cGxhY2Vob2xkZXIsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTo6cGxhY2Vob2xkZXIsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1'@; put 'dFt0eXBlPXRleHRdOjpwbGFjZWhvbGRlciwuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtcGxhY2Vob2xkZXItdGV4dC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJv'@; put 'ZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNw'@; put 'YWNpbmcpfWhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmhvdmVyLGhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06aG92ZXIsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmhvdmVyLC5oZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmhv'@; put 'dmVye2JvcmRlcjp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1ib3JkZXItaG92ZXIpfWhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLXZpc2libGUsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cy12aXNpYmxlLC5oZWFkZXIgLnNlYXJjaC1ib3gg'@; put 'aW5wdXRbdHlwZT10ZXh0XTpmb2N1cy12aXNpYmxlLC5oZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLXZpc2libGV7b3V0bGluZTowO2JvcmRlcjp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1ib3JkZXItYWN0aXZlKX1oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10'@; put 'ZXh0XTpmb2N1cyxoZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmUsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cyxoZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmFjdGl2ZSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4'@; put 'dF06Zm9jdXMsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmFjdGl2ZSwuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cywuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmV7YmFja2dyb3VuZDowIDB9aGVhZGVyIC5icmFuZGluZysu'@; put 'c2VhcmNoLGhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaC1ib3gsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaCwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveHtwb3NpdGlvbjpyZWxhdGl2ZX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXtoZWFkZXIgLnNlYXJjaC1ib3gs'@; put 'aGVhZGVyIC5zZWFyY2gsLmhlYWRlciAuc2VhcmNoLWJveCwuaGVhZGVyIC5zZWFyY2h7ZmxleDoxIDAgYXV0bzttYXgtd2lkdGg6bm9uZTtkaXNwbGF5Om5vbmV9aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsLGhlYWRlciAuc2VhcmNoIGxhYmVsLC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWws'@; put 'LmhlYWRlciAuc2VhcmNoIGxhYmVse3BhZGRpbmc6MH19YTpub3QoLmJ0biwubmF2LWxpbmssLmRyb3Bkb3duLWl0ZW0sLmxhYmVsLC5hbGVydC1hY3Rpb24sLmJhZGdlLC5jbHItdHJlZW5vZGUtbGluayl7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWln'@; put 'aHQtcmVndWxhcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOmNhbGMoLS4xKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX1hOm5vdCguYnRu'@; put 'LC5uYXYtbGluaywuZHJvcGRvd24taXRlbSwubGFiZWwsLmFsZXJ0LWFjdGlvbiwuYmFkZ2UsLmNsci10cmVlbm9kZS1saW5rKTpsaW5re2NvbG9yOnZhcigtLWNsci1saW5rLWNvbG9yKX1hOm5vdCguYnRuLC5uYXYtbGluaywuZHJvcGRvd24taXRlbSwubGFiZWwsLmFsZXJ0LWFjdGlvbiwu'@; put 'YmFkZ2UsLmNsci10cmVlbm9kZS1saW5rKTpsaW5rOmhvdmVye2NvbG9yOnZhcigtLWNsci1saW5rLWhvdmVyLWNvbG9yKX1hOm5vdCguYnRuLC5uYXYtbGluaywuZHJvcGRvd24taXRlbSwubGFiZWwsLmFsZXJ0LWFjdGlvbiwuYmFkZ2UsLmNsci10cmVlbm9kZS1saW5rKTpsaW5rOmhvdmVy'@; put 'IGNkcy1pY29uLGE6bm90KC5idG4sLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtLC5sYWJlbCwuYWxlcnQtYWN0aW9uLC5iYWRnZSwuY2xyLXRyZWVub2RlLWxpbmspOmxpbms6aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWxpbmstaG92ZXItY29sb3IpfWE6bm90KC5idG4sLm5hdi1s'@; put 'aW5rLC5kcm9wZG93bi1pdGVtLC5sYWJlbCwuYWxlcnQtYWN0aW9uLC5iYWRnZSwuY2xyLXRyZWVub2RlLWxpbmspOmxpbms6YWN0aXZle2NvbG9yOnZhcigtLWNsci1saW5rLWFjdGl2ZS1jb2xvcil9YTpub3QoLmJ0biwubmF2LWxpbmssLmRyb3Bkb3duLWl0ZW0sLmxhYmVsLC5hbGVydC1h'@; put 'Y3Rpb24sLmJhZGdlLC5jbHItdHJlZW5vZGUtbGluayk6bGluazphY3RpdmUgY2RzLWljb24sYTpub3QoLmJ0biwubmF2LWxpbmssLmRyb3Bkb3duLWl0ZW0sLmxhYmVsLC5hbGVydC1hY3Rpb24sLmJhZGdlLC5jbHItdHJlZW5vZGUtbGluayk6bGluazphY3RpdmUgY2xyLWljb257Y29sb3I6'@; put 'dmFyKC0tY2xyLWxpbmstYWN0aXZlLWNvbG9yKX1hOm5vdCguYnRuLC5uYXYtbGluaywuZHJvcGRvd24taXRlbSwubGFiZWwsLmFsZXJ0LWFjdGlvbiwuYmFkZ2UsLmNsci10cmVlbm9kZS1saW5rKTp2aXNpdGVke2NvbG9yOnZhcigtLWNsci1saW5rLXZpc2l0ZWQtY29sb3IpfWE6bm90KC5i'@; put 'dG4sLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtLC5sYWJlbCwuYWxlcnQtYWN0aW9uLC5iYWRnZSwuY2xyLXRyZWVub2RlLWxpbmspOnZpc2l0ZWQgY2RzLWljb24sYTpub3QoLmJ0biwubmF2LWxpbmssLmRyb3Bkb3duLWl0ZW0sLmxhYmVsLC5hbGVydC1hY3Rpb24sLmJhZGdlLC5jbHItdHJl'@; put 'ZW5vZGUtbGluayk6dmlzaXRlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yKX1hOm5vdCguYnRuLC5uYXYtbGluaywuZHJvcGRvd24taXRlbSwubGFiZWwsLmFsZXJ0LWFjdGlvbiwuYmFkZ2UsLmNsci10cmVlbm9kZS1saW5rKTp2aXNpdGVkOmhvdmVye2Nv'@; put 'bG9yOnZhcigtLWNsci1saW5rLXZpc2l0ZWQtY29sb3ItaG92ZXIpfWE6bm90KC5idG4sLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtLC5sYWJlbCwuYWxlcnQtYWN0aW9uLC5iYWRnZSwuY2xyLXRyZWVub2RlLWxpbmspOnZpc2l0ZWQ6aG92ZXIgY2RzLWljb24sYTpub3QoLmJ0biwubmF2LWxp'@; put 'bmssLmRyb3Bkb3duLWl0ZW0sLmxhYmVsLC5hbGVydC1hY3Rpb24sLmJhZGdlLC5jbHItdHJlZW5vZGUtbGluayk6dmlzaXRlZDpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLWhvdmVyKX1hLmxpbmstbm9ybWFsOmxpbmt7Y29sb3I6dmFyKC0tY2xy'@; put 'LWxpbmstY29sb3IpfWEubGluay1ob3ZlcmVkOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstaG92ZXItY29sb3IpfWEubGluay1jbGlja2VkOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstYWN0aXZlLWNvbG9yKX1hLmxpbmstdmlzaXRlZDpsaW5re2NvbG9yOnZhcigtLWNsci1saW5rLXZp'@; put 'c2l0ZWQtY29sb3IpfWEubGluay12aXNpdGVkLWhvdmVyOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstdmlzaXRlZC1jb2xvci1ob3Zlcil9Lm5hdntkaXNwbGF5OmZsZXg7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO2xpc3Qtc3R5bGUtdHlwZTpub25lO2FsaWduLWl0ZW1z'@; put 'OmNlbnRlcjttYXJnaW46MDt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDtib3gtc2hhZG93OjAgY2FsYygtMSp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKSAwIHZhcigtLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvcikgaW5zZXQ7Z2FwOnZhcigtLWNkcy1n'@; put 'bG9iYWwtc3BhY2UtOSl9Lm5hdiAubmF2LWl0ZW17ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm5hdiAubmF2LWl0ZW0uYWN0aXZlPi5uYXYtbGlua3tjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstYWN0aXZlLWNvbG9yKTtib3gtc2hhZG93OjAgY2FsYygtMSp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LWJvcmRlci13aWR0aC0xMDApKSAwIHZhcigtLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvcikgaW5zZXR9Lm5hdiAubmF2LWxpbmt7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6dmFyKC0tY2xyLW5hdi1saW5rLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9k'@; put 'eS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5uYXYgLm5hdi1saW5rLmJ0bnt0ZXh0LXRyYW5zZm9ybTpub25lO21hcmdpbjowIDAgY2FsYygtMSp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTtib3JkZXItcmFkaXVzOjB9Lm5hdiAubmF2LWxpbmsuZHJvcGRvd24tdG9nZ2xle3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0ubmF2IC5uYXYtbGluay5kcm9wZG93bi10b2dnbGUgY2RzLWljb257Y29sb3I6dmFyKC0tY2xyLW5h'@; put 'di1saW5rLWNvbG9yKX0ubmF2IC5uYXYtbGluazpob3ZlciwubmF2IC5uYXYtbGluazpmb2N1cywubmF2IC5uYXYtbGluazphY3RpdmV7Y29sb3I6aW5oZXJpdH0ubmF2IC5uYXYtbGluazphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbmF2LWFjdGl2ZS1iZy1jb2xvcil9Lm5h'@; put 'diAubmF2LWxpbms6aG92ZXI6YmVmb3JlLC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6MTAwJTtib3JkZXI6MDtib3JkZXItYm90dG9tOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9y'@; put 'ZGVyLXdpZHRoLTMwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7dHJhbnNpdGlvbjpib3JkZXItYm90dG9tIC4ycyBlYXNlLWlufS5uYXYgLm5hdi1saW5rOmhvdmVyLC5uYXYgLm5hdi1saW5rOmZvY3VzLC5uYXYgLm5h'@; put 'di1saW5rOmFjdGl2ZSwubmF2IC5uYXYtbGluay5hY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOnZhcigtLWNsci1uYXYtbGluay1hY3RpdmUtY29sb3IpfS5uYXYgLm5hdi1saW5rLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZh'@; put 'cigtLWNsci1uYXYtc2VsZWN0ZWQtaG92ZXItYmFja2dyb3VuZC1jb2xvcil9Lm5hdiAubmF2LWxpbmsuYWN0aXZlOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1uYXYtc2VsZWN0ZWQtYWN0aXZlLWJhY2tncm91bmQtY29sb3IpfS5uYXYgLm5hdi1saW5rLm5hdi1pdGVte21h'@; put 'cmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXN1Ym5hdi1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKX0uc3ViLW5hdiwuc3VibmF2e2Rpc3BsYXk6ZmxleDtib3gtc2hhZG93OjAg'@; put 'Y2FsYygtMSp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKSAwIHZhcigtLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvcikgaW5zZXQ7Ym94LXNoYWRvdzowIC0uMDVyZW0gMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IsIGhzbCgxOTgsIDAlLCA4MCUpKSBp'@; put 'bnNldDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3VibmF2LWJnLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSl9LnN1Yi1uYXYgLm5hdiwuc3VibmF2IC5uYXZ7ZmxleDox'@; put 'IDEgYXV0bztwYWRkaW5nLWxlZnQ6MS4ycmVtfS5zdWItbmF2IC5uYXYtaXRlbSwuc3ViLW5hdiAubmF2LWl0ZW0gYSwuc3VibmF2IC5uYXYtaXRlbSwuc3VibmF2IC5uYXYtaXRlbSBhe3RleHQtZGVjb3JhdGlvbjpub25lfS5zdWItbmF2IGFzaWRlLC5zdWJuYXYgYXNpZGV7ZmxleDowIDAg'@; put 'YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTtwYWRkaW5nOjAgMS4ycmVtfS5zdWItbmF2IGFzaWRlPjpsYXN0LWNoaWxkLC5zdWJuYXYgYXNpZGU+Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZy1y'@; put 'aWdodDowfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXZlcnRpY2FsLW5hdi1kaXZpZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItdmVydGljYWwt'@; put 'bmF2LWljb24tYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLXJpZ2h0LW1hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpOy0tY2xyLXZlcnRpY2FsLW5hdi1jb2xsYXBzZWQtY2FyZXQtc2l6'@; put 'ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRl'@; put 'cmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci12'@; put 'ZXJ0aWNhbC1uYXYtaXRlbS1jaGlsZC1wYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApOy0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWhlaWdo'@; put 'dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTstLWNsci12ZXJ0aWNhbC1uYXYtbWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIpOy0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1mb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWln'@; put 'aHQtc2VtaWJvbGQpOy0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtc2VsZWN0ZWQpOy0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMt'@; put 'YWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLXNlbGVjdGVkLWFj'@; put 'dGl2ZSk7LS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zaGFkZSk7LS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3Vu'@; put 'ZC1zaGFkZS1ob3Zlcik7LS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtYWN0aXZlKTstLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qt'@; put 'aW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS10b3AtbGV2ZWwtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWljb24tY29sb3I6dmFyKC0t'@; put 'Y2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1hY3RpdmUt'@; put 'Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci12ZXJ0aWNh'@; put 'bC1uYXYtdG9nZ2xlLWJ1dHRvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApOy0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1k'@; put 'aXZpZGVyLWJvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoKTstLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1jb2xsYXBzZWQtbWFyZ2luOm1peGlucy5iYXNlbGluZVB4KDMpOy0tY2xyLXZlcnRpY2FsLW5hdi1oZWFkZXItZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWds'@; put 'b2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci12ZXJ0aWNhbC1uYXYtaGVhZGVyLXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5jbHItdmVydGljYWwtbmF2e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVj'@; put 'dGlvbjpjb2x1bW47d2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYmctY29sb3IpO3dpbGwtY2hhbmdlOndpZHRoO3Ry'@; put 'YW5zaXRpb246d2lkdGggLjJzIGVhc2UtaW4tb3V0fS5jbHItdmVydGljYWwtbmF2IC5uYXYtZGl2aWRlcntib3JkZXItdG9wOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRp'@; put 'dmlkZXItYm9yZGVyLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWNvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMSBhdXRvO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO3BhZGRpbmctdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut'@; put 'OCk7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVufS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXB7ZGlzcGxheTpibG9jaztmbGV4OjAgMCBhdXRvO2hlaWdodDphdXRvO21pbi1oZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWhlaWdodCl9LmNsci12ZXJ0aWNh'@; put 'bC1uYXYgLm5hdi1ncm91cC1jb250ZW50e2Rpc3BsYXk6ZmxleDtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudC5hY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1j'@; put 'b2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXNlbGVjdGVkLWJnLWNvbG9yKTtwb3NpdGlvbjpyZWxhdGl2ZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3Rv'@; put 'cDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2JvcmRlcjowO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTMwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7dHJhbnNpdGlv'@; put 'bjpib3JkZXItbGVmdCAuMnMgZWFzZS1pbn0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZlIC5uYXYtaWNvbntmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3RpdmUtY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudC5h'@; put 'Y3RpdmU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXNlbGVjdGVkLWhvdmVyLWJnLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZlOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1u'@; put 'YXYtc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQ6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVy'@; put 'LWJnLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQ6YWN0aXZle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZl'@; put 'LWJnLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5re2ZsZXg6MSAxIGF1dG87cGFkZGluZy1sZWZ0OjA7bWluLXdpZHRoOjB9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtaWNvbnttYXJnaW4tbGVmdDp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTcpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LXRleHR7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtaWNvbisubmF2LXRleHR7cGFk'@; put 'ZGluZy1sZWZ0OjB9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGluaysubmF2LWdyb3VwLXRleHR7ZGlzcGxheTpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudD4ubmF2LWxpbmsuYWN0aXZlLC5jbHItdmVydGljYWwtbmF2IC5uYXYt'@; put 'Z3JvdXAtY29udGVudD4ubmF2LWxpbms6YWN0aXZle2ZvbnQtd2VpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtZm9udC13ZWlnaHQpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY2hpbGRyZW57b3ZlcmZsb3cteTpoaWRkZW59LmNsci12ZXJ0aWNhbC1uYXYg'@; put 'Lm5hdi10cmlnZ2VyLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlcntmbGV4OjAgMCB2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1idXR0b24tc2l6ZSk7Ym9yZGVyOjA7aGVpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWJ1dHRvbi1zaXplKTtwYWRk'@; put 'aW5nOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lLW9mZnNldDpjYWxjKC0xKmNhbGMoNSooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1k'@; put 'b3VibGVdLC5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJp'@; put 'Z2dlciBjbHItaWNvbltzaGFwZT1hbmdsZS1kb3VibGVde2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWljb24tY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdOmhvdmVyLC5jbHItdmVydGljYWwtbmF2'@; put 'IC5uYXYtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdOmhvdmVyLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdOmhvdmVyLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlciBjbHItaWNv'@; put 'bltzaGFwZT1hbmdsZS1kb3VibGVdOmhvdmVye2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWljb24taG92ZXItY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdOmFjdGl2ZSwuY2xyLXZlcnRpY2FsLW5h'@; put 'diAubmF2LXRyaWdnZXIgY2xyLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXTphY3RpdmUsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06YWN0aXZlLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlciBjbHIt'@; put 'aWNvbltzaGFwZT1hbmdsZS1kb3VibGVdOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWFjdGl2ZS1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyOmRpc2FibGVkIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0'@; put 'aWNhbC1uYXYgLm5hdi10cmlnZ2VyOmRpc2FibGVkIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLmRpc2FibGVkIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLmRpc2Fi'@; put 'bGVkIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyOmRpc2FibGVkIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyOmRpc2FibGVkIGNsci1pY29uW3No'@; put 'YXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyLmRpc2FibGVkIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyLmRpc2FibGVkIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJs'@; put 'ZV17Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1kaXNhYmxlZC1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2Vye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2hlaWdodDp2YXIoLS1jbHIt'@; put 'dmVydGljYWwtbmF2LWl0ZW0taGVpZ2h0KTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttYXJnaW4tYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNkcy1pY29u'@; put 'e21hcmdpbi1yaWdodDowO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLm9uLWNvbGxhcHNle2Rpc3BsYXk6YmxvY2t9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmln'@; put 'Z2VyLm9uLWNvbGxhcHNlIGNkcy1pY29ue21hcmdpbjowfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlcntkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztjb2xvcjppbmhlcml0O292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmxlZnR9LmNsci12ZXJ0aWNhbC1uYXYgLm5h'@; put 'di1ncm91cC10cmlnZ2VyIC5uYXYtZ3JvdXAtdHJpZ2dlci1pY29ue2ZsZXgtc2hyaW5rOjA7d2lkdGg6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLXNpemUpO21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2FsaWduLXNlbGY6Y2VudGVyO3RyYW5zaXRpb246YWxsIC4ycyBl'@; put 'YXNlLWluLW91dH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXItaWNvbnt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXR9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyKy5uYXYtY29udGVudHtib3JkZXItdG9wOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1k'@; put 'aXZpZGVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yKTtwYWRkaW5nLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdGV4dCwuY2xyLXZlcnRpY2Fs'@; put 'LW5hdiAubmF2LWxpbmt7aGVpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLXBhZGRpbmcpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWln'@; put 'aHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTtkaXNwbGF5OmZsZXg7YWxp'@; put 'Z24taXRlbXM6Y2VudGVyO291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqY2FsYyg1KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10ZXh0LC5jbHItdmVydGljYWwtbmF2IC5uYXYtdGV4dHtmbGV4OjEgMSBhdXRvO3doaXRlLXNwYWNl'@; put 'Om5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmt7ZGlzcGxheTpmbGV4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcil9LmNsci12ZXJ0aWNhbC1u'@; put 'YXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYmctY29sb3IpO3Bvc2l0aW9uOnJlbGF0aXZlfS5jbHItdmVydGljYWwtbmF2IC5u'@; put 'YXYtbGluay5hY3RpdmU6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMzAwKSBzb2xpZCB2YXIoLS1jZHMtYWxp'@; put 'YXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTt0cmFuc2l0aW9uOmJvcmRlci1sZWZ0IC4ycyBlYXNlLWlufS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29ue2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1j'@; put 'b2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtaG92ZXItYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmU6YWN0aXZle2JhY2tncm91bmQt'@; put 'Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluazpob3Zlcntjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12'@; put 'ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluazphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5h'@; put 'di1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaGVhZGVye3BhZGRpbmc6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1oZWFkZXItcGFkZGluZyk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0yKTtmb250LXdlaWdodDp2YXIoLS1j'@; put 'bHItdmVydGljYWwtbmF2LWhlYWRlci1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6MS4zMzMzMzNlbTtsZXR0ZXItc3BhY2luZzotLjAwODMzMzMzZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1pY29ue2ZsZXg6MCAwIHZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKTthbGlnbi1z'@; put 'ZWxmOmNlbnRlcjtoZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLXNpemUpO3dpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLXZlcnRpY2Fs'@; put 'LW5hdi1pY29uLXNpemUpO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uY2xyLXZlcnRpY2FsLW5hdiBjbHItdmVydGljYWwtbmF2LWdyb3VwLWNoaWxkcmVue2Rpc3BsYXk6YmxvY2t9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1i'@; put 'dG57ZmxleDoxIDEgYXV0bztwYWRkaW5nOjA7bWFyZ2luOjA7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSpjYWxjKDUqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpKX0uY2xyLXZlcnRpY2FsLW5hdj4ubmF2LWxpbmss'@; put 'LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1jb250ZW50Pi5uYXYtbGlua3tmbGV4OjAgMCB2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1idXR0b24tc2l6ZSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlcntmbGV4OjAgMCB2YXIoLS1jbHItdmVydGlj'@; put 'YWwtbmF2LXRvZ2dsZS1idXR0b24tc2l6ZSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlciAubmF2LWdyb3VwLXRleHR7ZGlzcGxheTpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaWNvbisubmF2LWdyb3VwLXRleHR7cGFkZGluZy1sZWZ0OjB9LmNs'@; put 'ci12ZXJ0aWNhbC1uYXYuaGFzLW5hdi1ncm91cHMgLm5hdi1jb250ZW50Pi5uYXYtbGluaywuY2xyLXZlcnRpY2FsLW5hdi5oYXMtbmF2LWdyb3VwcyAubmF2LWdyb3VwIC5uYXYtZ3JvdXAtdGV4dCwuY2xyLXZlcnRpY2FsLW5hdi5oYXMtbmF2LWdyb3VwcyAubmF2LWdyb3VwIC5uYXYtZ3Jv'@; put 'dXAtdHJpZ2dlcntmb250LXdlaWdodDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tdG9wLWxldmVsLWZvbnQtd2VpZ2h0KX0uY2xyLXZlcnRpY2FsLW5hdi5oYXMtbmF2LWdyb3VwcyAubmF2LWdyb3VwLWNoaWxkcmVuIC5uYXYtbGluaywuY2xyLXZlcnRpY2FsLW5hdi5oYXMtaWNvbnMg'@; put 'Lm5hdi1ncm91cC1jaGlsZHJlbiAubmF2LWxpbmt7cGFkZGluZzp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tY2hpbGQtcGFkZGluZyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC5hY3RpdmU6bm90KC5pcy1leHBhbmRlZCkgLm5hdi1ncm91cC1jb250ZW50e2JhY2tncm91bmQt'@; put 'Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1iZy1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC5hY3RpdmU6bm90KC5pcy1leHBhbmRlZCkgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtaWNvbntmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1h'@; put 'Y3RpdmUtY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmsuYWN0aXZlfi5uYXYtZ3JvdXAtdHJpZ2dlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5u'@; put 'YXYtZ3JvdXAtY29udGVudCAubmF2LWxpbms6aG92ZXJ+Lm5hdi1ncm91cC10cmlnZ2Vye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGluazphY3RpdmV+Lm5h'@; put 'di1ncm91cC10cmlnZ2Vye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmsuYWN0aXZlOmhvdmVyfi5uYXYtZ3JvdXAtdHJpZ2dlcntiYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtaG92ZXItYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmsuYWN0aXZlOmFjdGl2ZX4ubmF2LWdyb3VwLXRyaWdnZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGlj'@; put 'YWwtbmF2LXNlbGVjdGVkLWFjdGl2ZS1iZy1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXY6bm90KC5pcy1jb2xsYXBzZWQpIC5uYXYtbGluaysubmF2LWdyb3VwLXRyaWdnZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1t'@; put 'ZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZHt3aWR0aDp2YXIoLS1jbHItdmVydGljYWwtbmF2LW1pbi13aWR0aCk7bWluLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtbWluLXdpZHRoKTttYXgtd2lkdGg6'@; put 'Y2FsYyh2YXIoLS1jbHItdmVydGljYWwtbmF2LW1pbi13aWR0aCkgKyBjYWxjKDE0KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSk7Y3Vyc29yOnBvaW50ZXJ9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFt'@; put 'YnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1pY29ue21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5tYWluLWNvbnRhaW5lcjpub3QoW2Ns'@; put 'YXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmt7ZmxleDowIDAgdmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1taW4td2lkdGgpfS5t'@; put 'YWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmt+Lm5hdi1ncm91cC10cmlnZ2Vye2ZsZXg6'@; put 'MCAwIGNhbGModmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1jb2xsYXBzZWQtY2FyZXQtc2l6ZSkgKyB2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tcmlnaHQtbWFyZ2luKSk7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKC0xKnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKSkpO3Bv'@; put 'aW50ZXItZXZlbnRzOm5vbmV9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lcjpub3QoW2Ns'@; put 'YXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlcntwYWRkaW5nOjB9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVu'@; put 'dV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC10cmlnZ2Vye3BhZGRpbmctbGVmdDowfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1v'@; put 'cGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlciBjbHItaWNvbi5uYXYtZ3JvdXAtdHJpZ2dlci1pY29ue2hlaWdodDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0taGVpZ2h0KTt3aWR0aDp2YXIoLS1jZHMtZ2xv'@; put 'YmFsLXNwYWNlLTcpO21hcmdpbi1sZWZ0OmNhbGMoMyooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWFyZ2luLXJpZ2h0OjB9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xy'@; put 'LXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC10cmlnZ2VyIGNkcy1pY29uLm5hdi1ncm91cC10cmlnZ2VyLWljb257d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttYXJnaW46MH0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51'@; put 'XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWdyb3VwLC5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNs'@; put 'ci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtbGlua3tkaXNwbGF5Om5vbmV9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQu'@; put 'aGFzLWljb25zIC5uYXYtZ3JvdXB7ZGlzcGxheTpibG9ja30ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZC5oYXMtaWNvbnMgLm5hdi1s'@; put 'aW5re2Rpc3BsYXk6ZmxleH0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZC5oYXMtaWNvbnMgLm5hdi1ncm91cC10ZXh0LC5tYWluLWNv'@; put 'bnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29ucyAubmF2LXRleHR7cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDFweCwxcHgsMXB4'@; put 'LDFweCk7Y2xpcC1wYXRoOmluc2V0KDUwJSk7cGFkZGluZzowO2JvcmRlcjowO2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dG9wOjA7bGVmdDowfS5jbHItdmVydGljYWwtbmF2Lm5hdi10cmlnZ2VyLS1ib3R0b20gLm5hdi10cmlnZ2Vy'@; put 'e29yZGVyOjI7bWFyZ2luLXRvcDowfS5jbHItdmVydGljYWwtbmF2Lm5hdi10cmlnZ2VyLS1ib3R0b20gLm5hdi10cmlnZ2VyKy5uYXYtY29udGVudHtib3JkZXItdG9wOjA7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRyaWdnZXItZGl2aWRlci1ib3JkZXItd2lkdGgp'@; put 'IHNvbGlkIHZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci1jb2xvcik7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1zbGlkaW5nLXBhbmVsLXRleHQtY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1j'@; put 'b2xvci1ncmF5LTcwMCk7LS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktMCk7LS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0x'@; put 'MDApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LW92ZXJmbG93LWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItcmVzcG9uc2l2ZS1uYXYtaGFtYnVyZ2VyLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXIt'@; put 'cmFkaXVzLTEwMCl9LmNsci1uYXYtY2xvc2V7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y29sb3I6dmFyKC0tY29sb3IpOy0tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSl9LmNsci1uYXYtY2xvc2U6aG92ZXIsLmNs'@; put 'ci1uYXYtY2xvc2U6Zm9jdXN7LS1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS0xMDApfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIsLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye2Rpc3BsYXk6bm9uZX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW4sLmhlYWRl'@; put 'ci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtiYWNrZ3JvdW5k'@; put 'OnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJnLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpt'@; put 'aWRkbGV9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjB9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmJlZm9yZXt0b3A6Y2FsYygt'@; put 'MSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YWZ0ZXJ7Ym90dG9tOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSl9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3BhbntiYWNrZ3JvdW5kOjAgMH0uaGVh'@; put 'ZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVye2xlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTt0cmFuc2Zvcm0tb3JpZ2luOjklO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNl'@; put 'fS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5z'@; put 'cGFuLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2Jh'@; put 'Y2tncm91bmQ6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LXRyaWdnZXItYmctY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lmhl'@; put 'YWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YmVmb3JlLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZXt0b3A6Y2FsYygtMSp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXNwYWNlLTUpKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjphZnRlcntib3R0b206Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW57YmFja2dyb3VuZDowIDB9LmhlYWRlci1vdmVyZmxvdy10'@; put 'cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZWZ0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1z'@; put 'cGFjZS00KSk7dHJhbnNmb3JtLW9yaWdpbjotMyU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46'@; put 'YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTkycHgpey5tYWluLWNvbnRhaW5lciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUt'@; put 'YmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7aGVpZ2h0OnZhcigtLWNsci1oZWFkZXItaGVpZ2h0KTt3aWR0aDp2YXIoLS1jbHItaGVhZGVyLWhlaWdodCk7cGFkZGluZzowIDAgdmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS0zKSAwO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IpfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyOmZvY3VzLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92'@; put 'ZXJmbG93LXRyaWdnZXI6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcjpob3ZlciwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmhvdmVy'@; put 'e2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvci1ob3Zlcil9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI6ZGlzYWJsZWQsLm1haW4tY29udGFpbmVyIC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9Lm1h'@; put 'aW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1s'@; put 'ZXZlbC0xe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MCBhdXRvIDAgMDtiYWNrZ3JvdW5kOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYmctY29sb3IpO3otaW5kZXg6MTAzOTtoZWlnaHQ6MTAwdmg7dHJhbnNmb3JtOnRyYW5zbGF0ZShj'@; put 'YWxjKC0xKmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSkpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5t'@; put 'YWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjAgMCAwIGF1dG87YmFja2dyb3Vu'@; put 'ZDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yKTt6LWluZGV4OjEwMzk7aGVpZ2h0OjEwMHZoO3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubWFpbi1jb250YWlu'@; put 'ZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEg'@; put 'YXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Yi1u'@; put 'YXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNofS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIGFzaWRlLC5tYWlu'@; put 'LWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRle2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTAwJX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5h'@; put 'diwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2e3BhZGRpbmctbGVmdDowO2dhcDp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTUpfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtaXRlbSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1pdGVtLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2'@; put 'ZWwtMiAubmF2IC5uYXYtaXRlbSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1pdGVte2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttYXJnaW4tcmlnaHQ6MH0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEg'@; put 'Lm5hdiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluaywubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwt'@; put 'MiAubmF2IC5uYXYtbGlua3twYWRkaW5nOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1wYWRkaW5nKTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xv'@; put 'cil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVs'@; put 'LTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZl'@; put 'cnRpY2FsLW5hdi1zZWxlY3RlZC1iZy1jb2xvcik7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5u'@; put 'YXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZXtjb250'@; put 'ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2JvcmRlcjowO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTMwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNr'@; put 'Z3JvdW5kLWhpZ2hsaWdodCk7dHJhbnNpdGlvbjpib3JkZXItbGVmdCAuMnMgZWFzZS1pbn0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0x'@; put 'IC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3Rp'@; put 'dmUgLm5hdi1pY29ue2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZl'@; put 'bC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmhv'@; put 'dmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTphY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNs'@; put 'ci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmU6YWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmU6YWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxp'@; put 'bmsuYWN0aXZlOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yKX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWIt'@; put 'bmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluazpob3Zlcntj'@; put 'b2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAu'@; put 'bmF2IC5uYXYtbGluazphY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazphY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1'@; put 'Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJu'@; put 'YXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpob3Zlciwu'@; put 'bWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5u'@; put 'YXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2JveC1zaGFkb3c6bm9uZX0ubWFp'@; put 'bi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbms6aG92ZXI6bm90KC5hY3RpdmUpOmJlZm9yZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyOm5vdCguYWN0aXZlKTpiZWZvcmUsLm1haW4t'@; put 'Y29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyOm5vdCguYWN0aXZlKTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluazpob3Zlcjpub3QoLmFjdGl2ZSk6YmVmb3Jle2NvbnRlbnQ6'@; put 'bm9uZX0ubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7Ym9yZGVyLXJpZ2h0Om5vbmV9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcntw'@; put 'b3NpdGlvbjpyZWxhdGl2ZX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItY29sb3IpO2hl'@; put 'aWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xlZnQ6MH0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuYnJhbmRpbmd7bWF4LXdpZHRoOmNhbGMo'@; put 'MjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmd7cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWxlZnQ6Y2FsYygtMSp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTUpKX0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyKy5icmFuZGluZyAuY2xyLWljb24sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgLmxvZ28sLm1haW4tY29u'@; put 'dGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgY2RzLWljb24sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgY2xyLWljb257ZGlzcGxheTpub25lfS5tYWluLWNvbnRhaW5lciAuaGVhZGVy'@; put 'IC5icmFuZGluZysuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIsLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1uYXYrLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItbmF2Ky5jZGstdmlzdWFsbHktaGlkZGVuKy5oZWFkZXItb3Zl'@; put 'cmZsb3ctdHJpZ2dlcnttYXJnaW4tbGVmdDphdXRvfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1iYWNrZHJvcCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1iYWNrZHJvcHtwb3NpdGlvbjpmaXhl'@; put 'ZDtpbnNldDowO2JhY2tncm91bmQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQpO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTAzOH0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYt'@; put 'bGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxl'@; put 'dmVsLTEgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5re2ZsZXg6MCAwIGF1dG87b3BhY2l0eToxO2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcil9Lm1h'@; put 'aW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2'@; put 'LWxpbmsgLmZhLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2'@; put 'LWxldmVsLTIgLm5hdi1saW5rIC5mYSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXIt'@; put 'bmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLmZhLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFk'@; put 'ZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAuZmF7ZGlzcGxheTpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LXRleHQsLm1haW4tY29udGFpbmVy'@; put 'Lm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LXRl'@; put 'eHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSAwIHZhcigtLWNkcy1nbG9i'@; put 'YWwtc3BhY2UtNCkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aGl0ZS1zcGFjZTpub3JtYWw7Y29sb3I6dmFyKC0tY2xyLXNsaWRpbmctcGFuZWwtdGV4dC1jb2xvcik7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtmb250LXdlaWdodDo0MDB9Lm1haW4tY29udGFp'@; put 'bmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5h'@; put 'di1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5o'@; put 'ZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGlu'@; put 'ay5hY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZl'@; put 'bC0xIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IpO2JhY2tncm91'@; put 'bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1iZy1jb2xvcik7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUs'@; put 'Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwt'@; put 'MSAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmU6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7'@; put 'bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMzAwKSBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTt0cmFuc2l0aW9uOmJvcmRlci1sZWZ0'@; put 'IC4ycyBlYXNlLWlufS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1u'@; put 'YXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4t'@; put 'b3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbntmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3RpdmUtY29sb3IpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFk'@; put 'ZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmU6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTpob3ZlciwubWFpbi1jb250YWluZXIu'@; put 'b3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmU6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZl'@; put 'OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZTphY3Rp'@; put 'dmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTphY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2'@; put 'ZWwtMSAubmF2LWxpbmsuYWN0aXZlOmFjdGl2ZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1z'@; put 'ZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXIt'@; put 'bmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVy'@; put 'IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbms6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246'@; put 'bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6YWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0y'@; put 'IC5uYXYtbGluazphY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6YWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHIt'@; put 'bmF2LWxldmVsLTIgLm5hdi1saW5rOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUg'@; put 'LmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1h'@; put 'aW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlPi5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0y'@; put 'IC5uYXYtbGluay5hY3RpdmU+Lm5hdi10ZXh0e2NvbG9yOmluaGVyaXR9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5h'@; put 'di10cmlnZ2Vye2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZ3twb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkp'@; put 'KTttYXgtd2lkdGg6Y2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3otaW5kZXg6MTA0MDtwYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxp'@; put 'bmt7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyAubG9nbywubWFpbi1jb250YWluZXIub3Blbi1o'@; put 'YW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9ja30ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVh'@; put 'ZGVyIC5icmFuZGluZyBjZHMtaWNvbltzaGFwZT12bS1idWddLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIGNsci1pY29uW3NoYXBlPXZtLWJ1Z10sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRp'@; put 'bmcgLmNsci12bXctbG9nb3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItYmctY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJh'@; put 'bmRpbmcgLnRpdGxle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcik7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7'@; put 'cmlnaHQ6YXV0bztsZWZ0OjA7ei1pbmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYyhjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29u'@; put 'dGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW57YmFja2dyb3VuZDowIDB9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1l'@; put 'bnUgLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntsZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7dHJhbnNmb3JtLW9yaWdpbjo5JTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAu'@; put 'NnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye3RyYW5zZm9y'@; put 'bTpyb3RhdGUoLTQ1ZGVnKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFt'@; put 'YnVyZ2VyLW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtwYWRkaW5nLXRvcDpjYWxjKHZhcigtLWNsci1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWNkcy1nbG9i'@; put 'YWwtc3BhY2UtOSkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAu'@; put 'c3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt0cmFuc2Zvcm06dHJh'@; put 'bnNsYXRlKDApO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1h'@; put 'aW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTJ7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDow'@; put 'O3JpZ2h0OjA7bGVmdDphdXRvO3otaW5kZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKGNhbGMoLTEqY2FsYyhjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKSkpO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNl'@; put 'fS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbntiYWNrZ3JvdW5kOjAgMH0ubWFpbi1jb250YWluZXIub3Blbi1vdmVy'@; put 'Zmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xl'@; put 'ZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKTt0cmFuc2Zvcm0tb3JpZ2luOi0zJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3Rh'@; put 'dGUoNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcnt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWlu'@; put 'LWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRpY2Fs'@; put 'LW5hdi5jbHItbmF2LWxldmVsLTF7b3ZlcmZsb3c6aW5oZXJpdDt3aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXIt'@; put 'bWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTE6YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVs'@; put 'LTE6YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMTpiZWZvcmV7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAu'@; put 'bmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVy'@; put 'Lm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGlua3t3aWR0aDoxMDAlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJm'@; put 'bG93LW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7d2lk'@; put 'dGg6Y2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5icmFuZGluZ3tt'@; put 'YXgtd2lkdGg6Y2FsYygxNDQqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbn0ubWFpbi1jb250YWluZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFp'@; put 'bi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKC0xKmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSkpfS5tYWluLWNv'@; put 'bnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwt'@; put 'Mnt0cmFuc2Zvcm06dHJhbnNsYXRlKGNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmd7d2lkdGg6Y2FsYygyODgqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21h'@; put 'eC13aWR0aDpjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1s'@; put 'ZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7b3ZlcmZsb3c6aW5oZXJpdDt3aWR0aDpjYWxj'@; put 'KDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDph'@; put 'dXRvO2xlZnQ6MDt6LWluZGV4OjEwMzk7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKGNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikpKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIu'@; put 'b3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZTphZnRlcntjb250ZW50Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3VibmF2LmNsci1u'@; put 'YXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt3aWR0aDpjYWxjKDI4OCooMXJlbS92YXIo'@; put 'LS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7bGVmdDphdXRvO3otaW5k'@; put 'ZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKGNhbGMoLTEqY2FsYyhjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKSkpO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92'@; put 'ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1iYWRnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LWdyYXkpOy0tY2xyLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWNvbG9yLTEwMCk7LS1jbHItYmFkZ2UtaW5mby1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ibHVlKTstLWNsci1iYWRnZS1pbmZvLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjp2YXIo'@; put 'LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbik7LS1jbHItYmFkZ2Utc3VjY2Vzcy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJhZGdlLXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93KTstLWNsci1iYWRnZS13'@; put 'YXJuaW5nLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQpOy0tY2xyLWJhZGdlLWRhbmdlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0t'@; put 'Y2xyLWJhZGdlLWdyYXktYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheSk7LS1jbHItYmFkZ2UtZ3JheS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0'@; put 'eS12aW9sZXQpOy0tY2xyLWJhZGdlLXB1cnBsZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktZGFyay1ibHVlKTstLWNsci1iYWRnZS1ibHVlLWNvbG9yOnZhcigtLWNk'@; put 'cy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYmFkZ2Utb3JhbmdlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LXRhbmdlcmluZSk7LS1jbHItYmFkZ2Utb3JhbmdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItYmFk'@; put 'Z2UtbGlnaHQtYmx1ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1saWdodC1ibHVlKTstLWNsci1iYWRnZS1saWdodC1ibHVlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCl9LmJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7dmVydGljYWwtYWxp'@; put 'Z246bWlkZGxlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJhZGdlLWJhY2tncm91bmQtY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNw'@; put 'YWNlLTcpO2JvcmRlci1yYWRpdXM6Y2FsYygyKnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9n'@; put 'cmFwaHktc21hbGxjYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1sZXR0ZXItc3BhY2lu'@; put 'Zyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLWNsci1iYWRnZS1jb2xv'@; put 'cil9LmJhZGdlOnZpc2l0ZWR7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWNvbG9yKX0uYmFkZ2U6bGlua3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1iYWRnZS1ncmF5LWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZ3JheS1jb2xvcil9LmJhZGdlLmJhZGdlLWdyYXksLmJhZGdl'@; put 'LmJhZGdlLTF7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZ3JheS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWdyYXktY29sb3IpfS5iYWRnZS5iYWRnZS1wdXJwbGUsLmJhZGdlLmJhZGdlLTJ7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtcHVycGxlLWJnLWNvbG9yKTtj'@; put 'b2xvcjp2YXIoLS1jbHItYmFkZ2UtcHVycGxlLWNvbG9yKX0uYmFkZ2UuYmFkZ2UtYmx1ZSwuYmFkZ2UuYmFkZ2UtM3tiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1ibHVlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtYmx1ZS1jb2xvcil9LmJhZGdlLmJhZGdlLW9yYW5nZSwu'@; put 'YmFkZ2UuYmFkZ2UtNHtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1vcmFuZ2UtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1vcmFuZ2UtY29sb3IpfS5iYWRnZS5iYWRnZS1saWdodC1ibHVlLC5iYWRnZS5iYWRnZS01e2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWxpZ2h0'@; put 'LWJsdWUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVlLWNvbG9yKX0uYmFkZ2UuYmFkZ2UtaW5mb3tiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1pbmZvLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtaW5mby1jb2xvcil9LmJhZGdlLmJhZGdlLXN1'@; put 'Y2Nlc3N7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXN1Y2Nlc3MtY29sb3IpfS5iYWRnZS5iYWRnZS1kYW5nZXJ7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1j'@; put 'bHItYmFkZ2UtZGFuZ2VyLWNvbG9yKX0uYmFkZ2UuYmFkZ2Utd2FybmluZ3tiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS13YXJuaW5nLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utd2FybmluZy1jb2xvcil9XzotbXMtaW5wdXQtcGxhY2Vob2xkZXIgLmJhZGdlLDpyb290IC5i'@; put 'YWRnZXtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikgY2FsYygzKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSAwfUBzdXBwb3J0cyAoLW1zLWltZS1hbGlnbjphdXRvKXsuYmFkZ2V7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIGNhbGMoMyooMXJlbS92'@; put 'YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgMH19OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLWZvbnQtY29sb3ItZGFyazp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0x'@; put 'MDAwKTstLWNsci1sYWJlbC1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ncmF5KTstLWNsci1sYWJlbC1kZWZhdWx0LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci1sYWJlbC1iZy1ob3Zlci1jb2xvcjp2YXIoLS1j'@; put 'ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXIpOy0tY2xyLWxhYmVsLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLWxhYmVsLWJnLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlKTstLWNsci1sYWJlbC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWxhYmVsLWJnLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50'@; put 'ZXJhY3Rpb24tYmFja2dyb3VuZC1kaXNhYmxlZCk7LS1jbHItbGFiZWwtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWxhYmVsLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNs'@; put 'ci1sYWJlbC1ncmF5LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci1sYWJlbC1ncmF5LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ncmF5KTstLWNsci1sYWJlbC1ncmF5LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5'@; put 'LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci1sYWJlbC1wdXJwbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LXZpb2xldCk7LS1jbHItbGFiZWwtcHVycGxlLWNvbG9yOnZh'@; put 'cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtYmx1ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItbGFiZWwtYmx1ZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktZGFyay1ibHVlKTstLWNs'@; put 'ci1sYWJlbC1ibHVlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtb3JhbmdlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci1sYWJlbC1vcmFuZ2UtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlh'@; put 'cy11dGlsaXR5LXRhbmdlcmluZSk7LS1jbHItbGFiZWwtb3JhbmdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtbGlnaHQtYmx1ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItbGFiZWwtbGln'@; put 'aHQtYmx1ZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktbGlnaHQtYmx1ZSk7LS1jbHItbGFiZWwtbGlnaHQtYmx1ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLWluZm8tYmctY29sb3I6dmFyKC0tY2RzLWFsaWFz'@; put 'LXV0aWxpdHktYmx1ZS10aW50KTstLWNsci1sYWJlbC1pbmZvLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1sYWJlbC1pbmZvLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ibHVlKTstLWNsci1sYWJlbC1zdWNjZXNz'@; put 'LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LWdyZWVuLXRpbnQpOy0tY2xyLWxhYmVsLXN1Y2Nlc3MtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11'@; put 'dGlsaXR5LWdyZWVuKTstLWNsci1sYWJlbC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LXllbGxvdy10aW50KTstLWNsci1sYWJlbC13YXJuaW5nLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1sYWJlbC13YXJu'@; put 'aW5nLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS15ZWxsb3cpOy0tY2xyLWxhYmVsLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQtdGludCk7LS1jbHItbGFiZWwtZGFuZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw'@; put 'aHktY29sb3ItNTAwKTstLWNsci1sYWJlbC1kYW5nZXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LXJlZCk7LS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCl9LmxhYmVsLGEubGFiZWx7Zm9udC1zaXpl'@; put 'OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0'@; put 'KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKTtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO3BhZGRp'@; put 'bmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItbGFiZWwtZGVmYXVsdC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFz'@; put 'LW9iamVjdC1ib3JkZXItcmFkaXVzLTIwMCk7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpIDA7d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOnZhcigtLWNsci1sYWJlbC1m'@; put 'b250LWNvbG9yLWxpZ2h0KTt0ZXh0LWRlY29yYXRpb246bm9uZX0ubGFiZWw6aGFzKD4uYmFkZ2UpLC5sYWJlbDpoYXMoPmNkcy1pY29uKSxhLmxhYmVsOmhhcyg+LmJhZGdlKSxhLmxhYmVsOmhhcyg+Y2RzLWljb24pe3BhZGRpbmctcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0u'@; put 'bGFiZWwgLmJhZGdlLC5sYWJlbCBjZHMtaWNvbixhLmxhYmVsIC5iYWRnZSxhLmxhYmVsIGNkcy1pY29ue21hcmdpbjowO3RleHQtZGVjb3JhdGlvbjpub25lfS5sYWJlbDpoYXMoLmJhZGdlKSxhLmxhYmVsOmhhcyguYmFkZ2Upe2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5sYWJl'@; put 'bC5jbGlja2FibGU6bm90KDpoYXMoLnRleHQpKSxhLmxhYmVsLmNsaWNrYWJsZTpub3QoOmhhcygudGV4dCkpe3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmxhYmVsLmNsaWNrYWJsZT4udGV4dCxhLmxhYmVsLmNsaWNrYWJsZT4udGV4dHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5s'@; put 'YWJlbDp2aXNpdGVkLGEubGFiZWw6dmlzaXRlZHtjb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCl9LmxhYmVsOmZvY3VzLC5sYWJlbDpob3ZlciwubGFiZWw6YWN0aXZlLGEubGFiZWw6Zm9jdXMsYS5sYWJlbDpob3ZlcixhLmxhYmVsOmFjdGl2ZXt0ZXh0LWRlY29yYXRp'@; put 'b246bm9uZX0ubGFiZWwuY2xpY2thYmxlOm5vdCguZGlzYWJsZWQpOmhvdmVyLGEubGFiZWwuY2xpY2thYmxlOm5vdCguZGlzYWJsZWQpOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHIt'@; put 'bGFiZWwtaG92ZXItY29sb3IpfS5sYWJlbC5jbGlja2FibGU6bm90KC5kaXNhYmxlZCk6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlOm5vdCguZGlzYWJsZWQpOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItbGFiZWwtYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1sYWJlbC1iZy1h'@; put 'Y3RpdmUtY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikpfS5sYWJlbC5sYWJlbC1ncmF5LC5sYWJlbC5sYWJlbC0xLGEubGFiZWwubGFiZWwtZ3JheSxhLmxhYmVsLmxhYmVsLTF7Ym9yZGVyOnZhcigtLWNsci1sYWJlbC1ib3JkZXItd2lkdGgp'@; put 'IHNvbGlkIHZhcigtLWNsci1sYWJlbC1ncmF5LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZ3JheS1iZy1jb2xvcil9LmxhYmVsLmxhYmVsLWdyYXk+LmJhZGdlLGEubGFiZWwubGFiZWwtZ3JheT4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFk'@; put 'Z2UtZ3JheS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWdyYXktY29sb3IpfS5sYWJlbC5sYWJlbC1wdXJwbGUsLmxhYmVsLmxhYmVsLTIsYS5sYWJlbC5sYWJlbC1wdXJwbGUsYS5sYWJlbC5sYWJlbC0ye2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBzb2xp'@; put 'ZCB2YXIoLS1jbHItbGFiZWwtcHVycGxlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yKX0ubGFiZWwubGFiZWwtcHVycGxlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLXB1cnBsZT4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHIt'@; put 'YmFkZ2UtcHVycGxlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtcHVycGxlLWNvbG9yKX0ubGFiZWwubGFiZWwtYmx1ZSwubGFiZWwubGFiZWwtMyxhLmxhYmVsLmxhYmVsLWJsdWUsYS5sYWJlbC5sYWJlbC0ze2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBz'@; put 'b2xpZCB2YXIoLS1jbHItbGFiZWwtYmx1ZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxhYmVsLWJsdWUtYmctY29sb3IpfS5sYWJlbC5sYWJlbC1ibHVlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLWJsdWU+LmJhZGdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdl'@; put 'LWJsdWUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1ibHVlLWNvbG9yKX0ubGFiZWwubGFiZWwtb3JhbmdlLC5sYWJlbC5sYWJlbC00LGEubGFiZWwubGFiZWwtb3JhbmdlLGEubGFiZWwubGFiZWwtNHtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci13aWR0aCkgc29saWQg'@; put 'dmFyKC0tY2xyLWxhYmVsLW9yYW5nZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxhYmVsLW9yYW5nZS1iZy1jb2xvcil9LmxhYmVsLmxhYmVsLW9yYW5nZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1vcmFuZ2U+LmJhZGdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWJh'@; put 'ZGdlLW9yYW5nZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLW9yYW5nZS1jb2xvcil9LmxhYmVsLmxhYmVsLWxpZ2h0LWJsdWUsLmxhYmVsLmxhYmVsLTUsYS5sYWJlbC5sYWJlbC1saWdodC1ibHVlLGEubGFiZWwubGFiZWwtNXtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRl'@; put 'ci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1sYWJlbC1saWdodC1ibHVlLWJnLWNvbG9yKX0ubGFiZWwubGFiZWwtbGlnaHQtYmx1ZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1saWdodC1ibHVl'@; put 'Pi5iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvcil9LmxhYmVsLmxhYmVsLWluZm8sYS5sYWJlbC5sYWJlbC1pbmZve2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWluZm8t'@; put 'YmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1sYWJlbC1pbmZvLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItbGFiZWwtaW5mby1ib3JkZXItY29sb3IpfS5sYWJlbC5sYWJlbC1pbmZvPi5iYWRnZSxhLmxhYmVsLmxhYmVs'@; put 'LWluZm8+LmJhZGdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWluZm8tYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1pbmZvLWNvbG9yKX0ubGFiZWwubGFiZWwtc3VjY2VzcyxhLmxhYmVsLmxhYmVsLXN1Y2Nlc3N7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtc3VjY2Vz'@; put 'cy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLXN1Y2Nlc3MtZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNsci1sYWJlbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1sYWJlbC1zdWNjZXNzLWJvcmRlci1jb2xvcil9LmxhYmVsLmxhYmVsLXN1Y2Nlc3M+LmJhZGdlLGEu'@; put 'bGFiZWwubGFiZWwtc3VjY2Vzcz4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXN1Y2Nlc3MtY29sb3IpfS5sYWJlbC5sYWJlbC13YXJuaW5nLGEubGFiZWwubGFiZWwtd2FybmluZ3tiYWNrZ3JvdW5kOnZh'@; put 'cigtLWNsci1sYWJlbC13YXJuaW5nLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWxhYmVsLXdhcm5pbmctYm9yZGVyLWNvbG9yKX0ubGFiZWwubGFi'@; put 'ZWwtd2FybmluZz4uYmFkZ2UsYS5sYWJlbC5sYWJlbC13YXJuaW5nPi5iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS13YXJuaW5nLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utd2FybmluZy1jb2xvcil9LmxhYmVsLmxhYmVsLWRhbmdlcixhLmxhYmVsLmxhYmVsLWRh'@; put 'bmdlcntiYWNrZ3JvdW5kOnZhcigtLWNsci1sYWJlbC1kYW5nZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1sYWJlbC1kYW5nZXItZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNsci1sYWJlbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1sYWJlbC1kYW5nZXItYm9yZGVyLWNv'@; put 'bG9yKX0ubGFiZWwubGFiZWwtZGFuZ2VyPi5iYWRnZSxhLmxhYmVsLmxhYmVsLWRhbmdlcj4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZGFuZ2VyLWNvbG9yKX0ubGFiZWw+LmJhZGdlLGEubGFiZWw+LmJh'@; put 'ZGdle21hcmdpbjowfS5sYWJlbC5kaXNhYmxlZCwubGFiZWw6ZGlzYWJsZWQsYS5sYWJlbC5kaXNhYmxlZCxhLmxhYmVsOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWRpc2FibGVkLWNvbG9yKTtj'@; put 'b2xvcjp2YXIoLS1jbHItbGFiZWwtZGlzYWJsZWQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0ubGFiZWwuZGlzYWJsZWQgLmJhZGdlLC5sYWJlbDpkaXNhYmxlZCAuYmFkZ2UsYS5sYWJlbC5kaXNhYmxlZCAuYmFkZ2UsYS5sYWJl'@; put 'bDpkaXNhYmxlZCAuYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtZGlzYWJsZWQtY29sb3IpfUAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKXsubGFiZWwsYS5sYWJlbHt2ZXJ0aWNhbC1hbGlnbjpib3R0b219fTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXByb2dyZXNzLWRlZmF1'@; put 'bHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMTp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXNoYWRlKTstLWNs'@; put 'ci1wcm9ncmVzcy1hbHQtY29sb3ItMzp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmcpOy0tY2xyLXByb2dyZXNzLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtc2hhZGUpOy0tY2xyLXByb2dyZXNzLWxhYmVsLWNvbG9yOnZhcigtLWNk'@; put 'cy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCl9LnByb2dyZXNzLC5wcm9ncmVzcy1zdGF0aWN7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjA7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7bWFyZ2luOjA7b3Zl'@; put 'cmZsb3c6aGlkZGVuO21heC1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5wcm9ncmVzcz5wcm9ncmVzc3std2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVh'@; put 'cmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTtjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcik7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1iZy1jb2xvcik7Ym9yZGVyOjA7aGVpZ2h0'@; put 'OjEwMCU7d2lkdGg6MTAwJX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcil9LnByb2dyZXNzPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9y'@; put 'OnZhcigtLWNsci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9yKX0ucHJvZ3Jlc3M+cHJvZ3Jlc3NbdmFsdWU9IjAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5v'@; put 'bmU7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnByb2dyZXNzPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi13ZWJraXQt'@; put 'cHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy1iYXJ7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yKX0ucHJvZ3Jl'@; put 'c3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXItZWxlbWVudHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3Mt'@; put 'dmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbjt0cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbjtib3JkZXItcmFkaXVzOjB9LnByb2dyZXNzLnN1Y2Nlc3M+cHJvZ3Jlc3N7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xKX0ucHJvZ3Jlc3Mu'@; put 'c3VjY2Vzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLnN1Y2Nlc3M+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXBy'@; put 'b2dyZXNzLWFsdC1jb2xvci0xKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzc3tjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTMpfS5wcm9ncmVzcy53YXJuaW5nPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXBy'@; put 'b2dyZXNzLWFsdC1jb2xvci0zKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTMpfS5wcm9ncmVzcy5kYW5nZXI+cHJvZ3Jlc3N7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNz'@; put 'LWFsdC1jb2xvci0yKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3Jv'@; put 'dW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMil9LnByb2dyZXNzLmxhYmVsZWQsLnByb2dyZXNzLXN0YXRpYy5sYWJlbGVke3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7Y29sb3I6dmFyKC0tY2xyLXByb2dy'@; put 'ZXNzLWxhYmVsLWNvbG9yKX0ucHJvZ3Jlc3MubGFiZWxlZD5zcGFuLC5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD5zcGFue2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDttYXJnaW4tdG9wOjA7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5'@; put 'LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRp'@; put 'b24tbGV0dGVyLXNwYWNpbmcpfS5wcm9ncmVzcy5jb21wYWN0Om5vdCgubGFiZWxlZCksLnByb2dyZXNzLXN0YXRpYy5jb21wYWN0Om5vdCgubGFiZWxlZCl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LnByb2dyZXNzLmNvbXBhY3QubGFiZWxlZD4ucHJvZ3Jlc3MtbWV0ZXIs'@; put 'LnByb2dyZXNzLXN0YXRpYy5jb21wYWN0LmxhYmVsZWQ+LnByb2dyZXNzLW1ldGVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfUBrZXlmcmFtZXMgY2xyLXByb2dyZXNzLWZhZGV7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6'@; put 'MH19LnByb2dyZXNzLnByb2dyZXNzLWZhZGU+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdLC5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlPnByb2dyZXNzW3ZhbHVlPSIxMDAiXStzcGFue2FuaW1hdGlvbjpjbHItcHJvZ3Jlc3MtZmFkZSAuM3MgbGluZWFyIC41cyBmb3J3YXJkc30ucHJvZ3Jlc3MuZmxh'@; put 'c2gtZGFuZ2VyPnByb2dyZXNzLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc3t0cmFuc2l0aW9uOmNvbG9yIC4xcyBlYXNlLW91dCAxc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVlLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzczo6LXdlYmtp'@; put 'dC1wcm9ncmVzcy12YWx1ZXstd2Via2l0LXRyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluLGJhY2tncm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zczt0cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbixiYWNrZ3JvdW5kLWNvbG9yIC4xcyBlYXNlLW91dCAuM3N9LnByb2dyZXNzLmZs'@; put 'YXNoLWRhbmdlcj5wcm9ncmVzc1t2YWx1ZT0iMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVlLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX0ucHJvZ3Jlc3Mu'@; put 'Zmxhc2gtZGFuZ2VyPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhciwucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFyey1tb3otdHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4sYmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzO3RyYW5zaXRpb246'@; put 'd2lkdGggLjIzcyBlYXNlLWluLGJhY2tncm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zc30ucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJde2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAi'@; put 'XTo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jl'@; put 'c3MtYWx0LWNvbG9yLTEpfS5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXSwucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZS5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl0rc3BhbnthbmltYXRpb246Y2xyLXByb2dyZXNzLWZhZGUgLjZzIGxpbmVhciAx'@; put 'cyBmb3J3YXJkc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXXtjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIpfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2Jh'@; put 'Y2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKX0ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIpfUBrZXlm'@; put 'cmFtZXMgY2xyLXByb2dyZXNzLWxvb3BlcnswJXtsZWZ0Oi0xMDAlfXRve2xlZnQ6MTAwJX19LnByb2dyZXNzLmxvb3B7cG9zaXRpb246cmVsYXRpdmV9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3N7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnRyYW5zcGFyZW50fS5wcm9ncmVzcy5sb29wPnByb2dy'@; put 'ZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnByb2dyZXNzLmxvb3A6YWZ0ZXJ7YW5pbWF0aW9uOmNsci1w'@; put 'cm9ncmVzcy1sb29wZXIgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDoiICI7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcik7d2lkdGg6NTAl'@; put 'fS5wcm9ncmVzcy5sb29wLmRhbmdlcjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMil9LnByb2dyZXNzLmxvb3Aud2FybmluZzphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMyl9LnByb2dyZXNz'@; put 'Lmxvb3Auc3VjY2VzczphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVye2JhY2tncm91'@; put 'bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWRlZmF1bHQtY29s'@; put 'b3IpO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjA7Y29udGVudDoiICJ9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRl'@; put 'cltkYXRhLXZhbHVlPSIyIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMiXTpiZWZvcmV7d2lkdGg6MiV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5w'@; put 'cm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNyJdOmJlZm9yZXt3aWR0aDo1JX0ucHJvZ3Jl'@; put 'c3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTAiXTpiZWZvcmUsLnBy'@; put 'b2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTIiXTpiZWZvcmV7d2lkdGg6MTAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9'@; put 'IjEzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEt'@; put 'dmFsdWU9IjE2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE3Il06YmVmb3Jle3dpZHRoOjE1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxOCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9n'@; put 'cmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxOSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGlj'@; put 'Pi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMiJdOmJlZm9yZXt3aWR0aDoyMCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjQiXTpiZWZvcmUs'@; put 'LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjciXTpi'@; put 'ZWZvcmV7d2lkdGg6MjUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2Rh'@; put 'dGEtdmFsdWU9IjMwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMyIl06YmVmb3Jle3dpZHRoOjMwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5w'@; put 'cm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzMyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3Rh'@; put 'dGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNiJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNyJdOmJlZm9yZXt3aWR0aDozNSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzgiXTpiZWZv'@; put 'cmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDEi'@; put 'XTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDIiXTpiZWZvcmV7d2lkdGg6NDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVy'@; put 'W2RhdGEtdmFsdWU9IjQ0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNz'@; put 'LW1ldGVyW2RhdGEtdmFsdWU9IjQ3Il06YmVmb3Jle3dpZHRoOjQ1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0OSJdOmJlZm9yZSwucHJvZ3Jlc3Mt'@; put 'c3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MiJdOmJlZm9yZXt3aWR0'@; put 'aDo1MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0i'@; put 'NTUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTciXTpiZWZvcmV7d2lkdGg6NTUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1l'@; put 'dGVyW2RhdGEtdmFsdWU9IjU4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dy'@; put 'ZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYyIl06YmVmb3Jle3dpZHRoOjYwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2MyJdOmJlZm9yZSwucHJvZ3Jl'@; put 'c3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NiJdOmJlZm9yZSwu'@; put 'cHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NyJdOmJlZm9yZXt3aWR0aDo2NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1'@; put 'ZT0iNjkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0'@; put 'YS12YWx1ZT0iNzIiXTpiZWZvcmV7d2lkdGg6NzAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjczIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnBy'@; put 'b2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc3Il06YmVmb3Jle3dpZHRoOjc1JX0ucHJv'@; put 'Z3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3OSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MCJdOmJlZm9y'@; put 'ZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MiJdOmJlZm9yZXt3aWR0aDo4MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12'@; put 'YWx1ZT0iODMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJb'@; put 'ZGF0YS12YWx1ZT0iODYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODciXTpiZWZvcmV7d2lkdGg6ODUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+'@; put 'LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkxIl06YmVmb3JlLC5wcm9ncmVzcy1z'@; put 'dGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkyIl06YmVmb3Jle3dpZHRoOjkwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5MyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NCJdOmJl'@; put 'Zm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NiJdOmJlZm9yZXt3aWR0aDo5NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0'@; put 'YS12YWx1ZT0iOTciXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTkiXTpiZWZvcmV7d2lkdGg6OTglfS5wcm9ncmVzcy1zdGF0aWM+LnBy'@; put 'b2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEwMCJdOmJlZm9yZXt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD4ucHJvZ3Jlc3MtbWV0ZXJ7cmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSl9LnByb2dyZXNzLXN0YXRpYy5zdWNjZXNzPi5wcm9ncmVzcy1tZXRlcjpi'@; put 'ZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEpfS5wcm9ncmVzcy1zdGF0aWMud2FybmluZz4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zKX0ucHJvZ3Jlc3Mtc3Rh'@; put 'dGljLmRhbmdlcj4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKX0uY2FyZC1ibG9jayAucHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLXN0YXRpYywuY2FyZC1mb290ZXIgLnByb2dyZXNzLC5jYXJkLWZv'@; put 'b3RlciAucHJvZ3Jlc3Mtc3RhdGlje2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDttYXJnaW46Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKSAwIDB9LmNhcmQtYmxvY2sgLnByb2dyZXNzLnRvcCwuY2FyZC1ibG9jayAu'@; put 'cHJvZ3Jlc3Mtc3RhdGljLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYy50b3B7bWFyZ2luLXRvcDowO3RvcDowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1cywgdmFyKC0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCkpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApKX0uY2FyZC1ibG9jayAucHJvZ3Jlc3M+cHJvZ3Jlc3MsLmNhcmQt'@; put 'YmxvY2sgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXIsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7cG9zaXRpb246YWJzb2x1'@; put 'dGV9LnByb2dyZXNzLWJsb2Nre2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1sYWJlbC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29u'@; put 'ZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMt'@; put 'YWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5wcm9ncmVzcy1ibG9jaz4qe2ZsZXg6MCAwIGF1dG87cGFkZGluZy1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5wcm9ncmVzcy1ibG9jaz46bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjB9LnByb2dy'@; put 'ZXNzLWJsb2NrPmxhYmVsLC5wcm9ncmVzcy1ibG9jaz5zcGFue21heC13aWR0aDozMyV9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcywucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLXN0YXRpY3tmbGV4OjAgMSBhdXRvfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXB7ZmxleC1kaXJl'@; put 'Y3Rpb246Y29sdW1uO2hlaWdodDphdXRvO2ZsZXg6MCAxIGF1dG87ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCV9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcy1ncm91cCAuY2xyLXJvd3ttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1sYWJlbC1j'@; put 'b2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0'@; put 'aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKX0ucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLWdyb3VwIC5jbHItcm93PltjbGFzcyo9Y2xyLWNvbC1de3BhZGRpbmctbGVmdDowO3BhZGRpbmct'@; put 'cmlnaHQ6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2t7bWFyZ2luLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3BhZGRpbmc6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2s6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJs'@; put 'b2NrPmxhYmVse21heC13aWR0aDozMyV9LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTttYXJnaW4t'@; put 'dG9wOjB9LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzPi5wcm9ncmVzcy1tZXRlciwuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpYz5wcm9ncmVzcywuY2Fy'@; put 'ZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9XzotbXMtaW5wdXQtcGxhY2Vob2xkZXIgLnByb2dyZXNzLWJsb2NrPmxhYmVsLDpyb290IC5wcm9ncmVzcy1ibG9jaz5sYWJlbHtk'@; put 'aXNwbGF5OmlubGluZS1ibG9ja306cm9vdCBbY2RzLXRoZW1lXXstLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTE0KTstLWNsci1zcGlubmVyLW1lZGl1bS1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpOy0tY2xyLXNwaW5uZXItc21hbGwt'@; put 'c2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpOy0tY2xyLXNwaW5uZXItaW5zaWRlLWJ1dHRvbi1zdHJva2Utd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTstLWNsci1zcGlubmVyLWluc2lkZS10cmVldmlldy1zdHJva2Utd2lkdGg6dmFyKC0tY2Rz'@; put 'LWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTstLWNsci1zcGlubmVyLWRlZmF1bHQtc3Ryb2tlLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7LS1jbHItc3Bpbm5lci1tZWRpdW0tc3Ryb2tlLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTQw'@; put 'MCk7LS1jbHItc3Bpbm5lci1zbWFsbC1zdHJva2Utd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKTstLWNsci1zcGlubmVyLWZpbGwtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1zaGFkZSk7LS1jbHItc3Bp'@; put 'bm5lci1maWxsLWludmVyc2UtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1pbnZlcnNlLXRpbnQpOy0tY2xyLXNwaW5uZXItZmlsbC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLXNwaW5uZXItZmlsbC1pbnZlcnNl'@; put 'LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mby10aW50KTstLWNsci1zcGlubmVyLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTMwMCk7LS1jbHItc3Bpbm5lci1tYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0u'@; put 'c3Bpbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTt3aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1kZWZhdWx0LXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXpl'@; put 'KTttaW4td2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTts'@; put 'aW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7YW5pbWF0aW9uOnNwaW4gMXMgbGluZWFyIGluZmluaXRlO21h'@; put 'cmdpbi1yaWdodDowO3BhZGRpbmc6MDt0ZXh0LWluZGVudDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXB9LnNwaW5uZXI6YWZ0ZXJ7Y29udGVudDoiIjtoZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTt3aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1k'@; put 'ZWZhdWx0LXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y2xpcC1wYXRoOmVsbGlwc2UoMTAwJSA1My41JSBhdCAwIDAp'@; put 'O2JvcmRlcjp2YXIoLS1jbHItc3Bpbm5lci1kZWZhdWx0LXN0cm9rZS13aWR0aCkgc29saWQgdmFyKC0tY2xyLXNwaW5uZXItZmlsbC1jb2xvcik7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czp2YXIo'@; put 'LS1jbHItc3Bpbm5lci1ib3JkZXItcmFkaXVzKX0uc3Bpbm5lcjpiZWZvcmV7Y29udGVudDoiIjtoZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTt3aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1kZWZhdWx0LXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItZGVm'@; put 'YXVsdC1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Ym9yZGVyOnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc3Ryb2tlLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItc3Bpbm5lci1maWxsLWJnLWNv'@; put 'bG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1zcGlubmVyLWJvcmRlci1yYWRpdXMpfS5zcGlubmVyLnNwaW5uZXItbWR7aGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLW1lZGl1bS1zaXplKTt3aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1tZWRpdW0tc2l6ZSk7bWluLWhlaWdodDp2YXIoLS1j'@; put 'bHItc3Bpbm5lci1tZWRpdW0tc2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1zcGlubmVyLW1lZGl1bS1zaXplKX0uc3Bpbm5lci5zcGlubmVyLW1kOmJlZm9yZSwuc3Bpbm5lci5zcGlubmVyLW1kOmFmdGVye2hlaWdodDp2YXIoLS1jbHItc3Bpbm5lci1tZWRpdW0tc2l6ZSk7d2lkdGg6dmFy'@; put 'KC0tY2xyLXNwaW5uZXItbWVkaXVtLXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItbWVkaXVtLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1tZWRpdW0tc2l6ZSk7Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1zcGlubmVyLW1lZGl1bS1zdHJva2Utd2lkdGgpfS5z'@; put 'cGlubmVyLnNwaW5uZXItaW5saW5lLC5zcGlubmVyLnNwaW5uZXItc217aGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLXNtYWxsLXNpemUpO3dpZHRoOnZhcigtLWNsci1zcGlubmVyLXNtYWxsLXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItc21hbGwtc2l6ZSk7bWluLXdpZHRo'@; put 'OnZhcigtLWNsci1zcGlubmVyLXNtYWxsLXNpemUpfS5zcGlubmVyLnNwaW5uZXItaW5saW5lOmJlZm9yZSwuc3Bpbm5lci5zcGlubmVyLWlubGluZTphZnRlciwuc3Bpbm5lci5zcGlubmVyLXNtOmJlZm9yZSwuc3Bpbm5lci5zcGlubmVyLXNtOmFmdGVye2hlaWdodDp2YXIoLS1jbHItc3Bp'@; put 'bm5lci1zbWFsbC1zaXplKTt3aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1zbWFsbC1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLXNtYWxsLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1zbWFsbC1zaXplKTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXNwaW5uZXIt'@; put 'c21hbGwtc3Ryb2tlLXdpZHRoKX0uc3Bpbm5lci5zcGlubmVyLWlubGluZXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbTttYXJnaW4tcmlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItbWFyZ2luLXJpZ2h0KX0uc3Bpbm5lci5zcGlubmVyLWludmVyc2U6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIo'@; put 'LS1jbHItc3Bpbm5lci1maWxsLWludmVyc2UtYmctY29sb3IpfS5zcGlubmVyLnNwaW5uZXItaW52ZXJzZTphZnRlcntib3JkZXItY29sb3I6dmFyKC0tY2xyLXNwaW5uZXItZmlsbC1pbnZlcnNlLWNvbG9yKTtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbS1j'@; put 'b2xvcjp0cmFuc3BhcmVudH0uc3Bpbm5lci5zcGlubmVyLW5ldXRyYWwtMDpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMwMDB9LnNwaW5uZXIuc3Bpbm5lci1uZXV0cmFsLTA6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1zcGlubmVyLWZpbGwtY29sb3IpO2JvcmRlci1yaWdodC1jb2xvcjp0'@; put 'cmFuc3BhcmVudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS5zcGlubmVyLnNwaW5uZXItY2hlY2t7YW5pbWF0aW9uOm5vbmU7LXdlYmtpdC1tYXNrOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB2aWV3'@; put 'Qm94JTNEJTIyMCUyMDAlMjAzNiUyMDM2JTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaWRZTWlkJTIwbWVldCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cu'@; put 'dzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTIwZm9jdXNhYmxlJTNEJTIyZmFsc2UlMjIlMjBhcmlhLWhpZGRlbiUzRCUyMnRydWUlMjIlMjByb2xlJTNEJTIyaW1nJTIyJTNFJTNDcGF0aCUyMGZpbGwlM0QlMjIlMjM3NDc0NzQlMjIlMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHIt'@; put 'aS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTMuNzIlMkMyNy42OSUyQzMuMjklMkMxNy4yN2ExJTJDMSUyQzAlMkMwJTJDMSUyQzEuNDEtMS40MWw5JTJDOUwzMS4yOSUyQzcuMjlhMSUyQzElMkMwJTJDMCUyQzElMkMxLjQxJTJDMS40MVolMjIlM0UlM0MlMkZwYXRoJTNFJTNDJTJG'@; put 'c3ZnJTNFKTttYXNrOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAzNiUyMDM2JTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaWRZTWlkJTIwbWVldCUyMiUyMHhtbG5z'@; put 'JTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTIwZm9jdXNhYmxlJTNEJTIyZmFsc2UlMjIlMjBhcmlhLWhpZGRlbiUzRCUyMnRydWUlMjIlMjBy'@; put 'b2xlJTNEJTIyaW1nJTIyJTNFJTNDcGF0aCUyMGZpbGwlM0QlMjIlMjM3NDc0NzQlMjIlMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTMuNzIlMkMyNy42OSUyQzMuMjklMkMxNy4yN2ExJTJDMSUyQzAlMkMwJTJDMSUyQzEu'@; put 'NDEtMS40MWw5JTJDOUwzMS4yOSUyQzcuMjlhMSUyQzElMkMwJTJDMCUyQzElMkMxLjQxJTJDMS40MVolMjIlM0UlM0MlMkZwYXRoJTNFJTNDJTJGc3ZnJTNFKTstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1jb2xvcjp2YXIo'@; put 'LS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcil9LnNwaW5uZXIuc3Bpbm5lci1jaGVjazphZnRlciwuc3Bpbm5lci5zcGlubmVyLWNoZWNrOmJlZm9yZXtib3JkZXI6MH0uYnRuIC5zcGlubmVye21hcmdpbi1yaWdodDowO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dp'@; put 'ZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5idG4gLnNwaW5uZXI6YmVmb3JlLC5idG4gLnNwaW5uZXI6YWZ0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9i'@; put 'YWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1zcGlubmVyLWluc2lkZS1idXR0b24tc3Ry'@; put 'b2tlLXdpZHRoKX0uYnRuLWljb246bm90KC5idG4tc20pIC5zcGlubmVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXNwYWNlLTcpfS5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXIgLnNwaW5uZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLXdp'@; put 'ZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciAuc3Bpbm5lcjpiZWZvcmUsLmNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciAuc3Bpbm5lcjphZnRlcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItaW5zaWRlLXRyZWV2aWV3LXN0cm9rZS13aWR0aCl9QGtleWZy'@; put 'YW1lcyBzcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci10YWJsZS1ib3JkZXJ3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApOy0tY2xyLXRhYmxlLWJvcmRlci1y'@; put 'YWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci10YWJsZS1jZWxsLXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFj'@; put 'ZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLXRhYmxlLWNlbGwtY29tcGFjdC1wYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci10YWJsZS1ub2JvcmRlci1ib3JkZXJ3aWR0aDp2YXIoLS1jZHMtZ2xvYmFs'@; put 'LXNwYWNlLTApOy0tY2xyLXRhYmxlLWRhdGEtY2VsbC1mb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS00KTstLWNsci10YWJsZS1kYXRhLWNlbGwtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci10YWJsZS1kYXRhLWNlbGwt'@; put 'Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLXRhYmxlLWhlYWRlci1jZWxsLWZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTEpOy0tY2xyLXRhYmxlLWhlYWRlci1jZWxsLWxpbmUt'@; put 'aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItdGFibGUtaGVhZGVyLWNlbGwtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci10YWJsZS1iZ2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29u'@; put 'dGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLXRoZWFkLWJnY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC10aW50KTstLWNsci10YWJsZS1oZWFkZXItYm9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7'@; put 'LS1jbHItdGFibGUtZm9vdGVyLWJvcmRlci10b3AtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItdGFibGVyb3ctYm9yZGVyY29sb3I6dmFy'@; put 'KC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLXRhYmxlLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci10YWJsZS1tYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSAwIDAgMDstLWNsci10aGVhZC1jb2xvcjp2'@; put 'YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXRhYmxlLXNtYWxscGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpOy0tY2xyLXRhYmxlLWJvdHRvbWNlbGxwYWRkaW5nOmNhbGModmFyKC0tY2xyLXRhYmxlLWNlbGxwYWRkaW5nKSAtIHZhcigtLWNkcy1n'@; put 'bG9iYWwtc3BhY2UtMSkpOy0tY2xyLXRhYmxlLXRvcGNlbGxwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7LS1jbHItdGFibGUtZm9udHNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7LS1jbHItdGFibGUtbGluZWhlaWdodDptaXhp'@; put 'bnMuYmFzZWxpbmVQeCgxNCk7LS1jbHItdGFibGUtY2VsbHBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTstLWNsci10YWJsZS1jb21wYWN0LXJvdy1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTstLWNsci10YWJsZS1jb21wYWN0LXZlcnRpY2FsLXBhZGRpbmc6Y2Fs'@; put 'YyggKHZhcigtLWNsci10YWJsZS1jb21wYWN0LXJvdy1oZWlnaHQpIC0gdmFyKC0tY2xyLXRhYmxlLWxpbmVoZWlnaHQpKSAqIC41ICl9LnRhYmxle2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3JkZXI6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKSBzb2xpZCB2YXIoLS1jbHItdGFi'@; put 'bGUtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10YWJsZS1ib3JkZXItcmFkaXVzKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1iZ2NvbG9yKTtjb2xvcjp2YXIoLS1jbHItdGFibGUtZm9udC1jb2xvcik7bWFyZ2luOnZhcigtLWNsci10YWJsZS1tYXJn'@; put 'aW4pO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCV9LnRhYmxlIHRoLC50YWJsZSB0ZHtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKTtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3JkZXJjb2xv'@; put 'cik7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtY2VsbC1wYWRkaW5nKTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnRhYmxlIHRoLmxlZnQsLnRhYmxlIHRkLmxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50YWJsZSB0aC5sZWZ0OmZpcnN0LWNoaWxkLC50YWJsZSB0ZC5sZWZ0'@; put 'OmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS50YWJsZSB0aC5yaWdodCwudGFibGUgdGQucmlnaHR7dGV4dC1hbGlnbjpyaWdodH0udGFibGUgdGR7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTtmb250LXNpemU6dmFyKC0t'@; put 'Y2xyLXRhYmxlLWRhdGEtY2VsbC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyl9LnRhYmxlIHRoe2NvbG9yOnZhcigtLWNsci10aGVhZC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dy'@; put 'YXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7YmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvcik7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJv'@; put 'cmRlci1jb2xvcik7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MCBub25lfS50YWJsZSB0Ym9keSt0Ym9keXtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRo'@; put 'KTtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpfS50YWJsZSB0aGVhZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LnRhYmxlIHRoZWFkIHRo'@; put 'Omxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0udGFibGUgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90'@; put 'dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0udGFibGUgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3Ju'@; put 'ZXJjZWxscmFkaXVzKX0udGFibGUtY29tcGFjdCB0aCwudGFibGUtY29tcGFjdCB0ZHttaW4taGVpZ2h0OnZhcigtLWNsci10YWJsZS1jb21wYWN0LXJvdy1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLWNlbGwtY29tcGFjdC1wYWRkaW5nKX0udGFibGUudGFibGUtdmVydGljYWwg'@; put 'dGhlYWQgdGh7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2Rpc3BsYXk6bm9uZX0udGFibGUudGFibGUtdmVydGljYWwgdGh7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpO2JvcmRlci10'@; put 'b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcik7dmVydGljYWwtYWxpZ246dG9wfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0ZCwudGFibGUudGFibGUtdmVydGljYWwgdGh7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9y'@; put 'KX0udGFibGUudGFibGUtdmVydGljYWwgdGQ6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRoOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKTtib3JkZXItcmlnaHQtY29s'@; put 'b3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvcik7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6'@; put 'Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjAgbm9uZX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGls'@; put 'ZCB0aDpmaXJzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LnRh'@; put 'YmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9w'@; put 'LXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNo'@; put 'aWxkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRh'@; put 'YmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LnRhYmxlLnRhYmxlLW5vYm9yZGVye2Jv'@; put 'cmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6MH0udGFibGUudGFibGUtbm9ib3JkZXIgdGh7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItdG9wOjAgbm9uZX0udGFibGUudGFibGUtbm9i'@; put 'b3JkZXIgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjAgbm9uZX0udGFibGUudGFibGUtbm9ib3JkZXIgdGR7Ym9yZGVyLXRvcDowIG5vbmU7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0udGFibGUudGFibGUtbm9ib3JkZXIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVy'@; put 'LXJpZ2h0OjAgbm9uZX0udGFibGUudGFibGUtbm9ib3JkZXIgdGhlYWQgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoZWFkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowfS50YWJsZS50YWJsZS1ub2JvcmRlciB0aCwudGFibGUudGFibGUtbm9ib3JkZXIgdGR7'@; put 'Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudH0udGFibGUudGFibGUtbm9ib3JkZXIgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRkOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXRv'@; put 'b2x0aXAtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItdG9vbHRpcC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1czp2YXIoLS1j'@; put 'ZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KX0udG9vbHRpcHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWdu'@; put 'OmxlZnQ7b3ZlcmZsb3c6dmlzaWJsZX0udG9vbHRpcD4udG9vbHRpcC1jb250ZW50e3Zpc2liaWxpdHk6aGlkZGVuO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGxpbmVhcjt3aGl0ZS1zcGFjZTpub3JtYWw7ei1pbmRleDoxMDUwfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnQ6'@; put 'YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6LTIwcHg7Y29udGVudDoiIjt6LWluZGV4Oi0xfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnQgbGl7Y29sb3I6aW5oZXJpdH0udG9vbHRpcDpob3Zlcj4udG9vbHRpcC1jb250ZW50LC50b29sdGlwOmZvY3VzPi50b29sdGlwLWNvbnRlbnR7'@; put 'dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MX0udG9vbHRpcDpob3Zlcj4udG9vbHRpcC1jb250ZW50OmVtcHR5LC50b29sdGlwOmZvY3VzPi50b29sdGlwLWNvbnRlbnQ6ZW1wdHl7dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowfS50b29sdGlwOmZvY3Vze291dGxpbmU6MH0udG9vbHRp'@; put 'cDpmb2N1cz46Zmlyc3QtY2hpbGR7b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCk7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnQs'@; put 'LnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0e21hcmdpbjowO3dpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtib3JkZXItcmFkaXVzOnZhcigtLWNs'@; put 'ci10b29sdGlwLWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFs'@; put 'aWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVy'@; put 'LXNwYWNpbmcpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OmF1dG8gYXV0byAxMDAlIDUwJTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKX0udG9vbHRpcD4u'@; put 'dG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcC50b29sdGlwLXRvcC1yaWdodD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZl'@; put 'bnRzOm5vbmU7bGVmdDowO3RvcDphdXRvO3JpZ2h0OmF1dG87Ym90dG9tOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSk7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXIt'@; put 'dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl'@; put 'LTUpIHNvbGlkIHRyYW5zcGFyZW50fS50b29sdGlwLnRvb2x0aXAtdG9wLWxlZnQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLWxlZnR7bWFyZ2luOjA7d2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2Jv'@; put 'cmRlci1yYWRpdXM6dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2Zv'@; put 'bnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5'@; put 'cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6YXV0byA1MCUgMTAwJSBhdXRvO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgKyB2YXIoLS1jZHMtZ2xvYmFs'@; put 'LXNwYWNlLTUpKX0udG9vbHRpcC50b29sdGlwLXRvcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC10b3AtbGVmdDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO3JpZ2h0'@; put 'OjA7dG9wOmF1dG87bGVmdDphdXRvO2JvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikpO2JvcmRlci1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci10b3A6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB0cmFu'@; put 'c3BhcmVudH0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1yaWdodD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tcmlnaHR7bWFyZ2luOjA7d2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2JvcmRlci1y'@; put 'YWRpdXM6dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2ZvbnQtc2l6'@; put 'ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw'@; put 'aHktYm9keS1sZXR0ZXItc3BhY2luZyk7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MTAwJSBhdXRvIGF1dG8gNTAlO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDttYXJnaW4tdG9wOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpfS50'@; put 'b29sdGlwLnRvb2x0aXAtYm90dG9tLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtsZWZ0OjA7Ym90'@; put 'dG9tOmF1dG87cmlnaHQ6YXV0bzt0b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtib3JkZXItbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1ib3R0b206dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJl'@; put 'bnR9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdHttYXJnaW46MDt3aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7Ym9yZGVyLXJhZGl1czp2'@; put 'YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7Y29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Zm9udC1zaXplOnZhcigt'@; put 'LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5'@; put 'LWxldHRlci1zcGFjaW5nKTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxMDAlIDUwJSBhdXRvIGF1dG87Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDttYXJnaW4tdG9wOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpfS50b29sdGlw'@; put 'LnRvb2x0aXAtYm90dG9tLWxlZnQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7cmlnaHQ6MDtib3R0b206YXV0'@; put 'bztsZWZ0OmF1dG87dG9wOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSk7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNw'@; put 'YWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50fS50b29s'@; put 'dGlwLnRvb2x0aXAtcmlnaHQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtcmlnaHR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6NTAlIGF1dG8gYXV0byAxMDAlO21hcmdpbjowO3dpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwt'@; put 'YmFzZSkpKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5k'@; put 'LWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNk'@; put 'cy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDttYXJnaW4tbGVmdDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKX0udG9vbHRpcC50b29sdGlwLXJpZ2h0Pi50b29s'@; put 'dGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1yaWdodDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2JvdHRvbTphdXRvO3JpZ2h0OmF1dG87bGVmdDpjYWxjKC0xKnZhcigtLWNk'@; put 'cy1nbG9iYWwtc3BhY2UtNikpO2JvcmRlci10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNr'@; put 'Z3JvdW5kLWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB0cmFuc3BhcmVudH0udG9vbHRpcC50b29sdGlwLWxlZnQ+LnRvb2x0aXAtY29udGVu'@; put 'dCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtbGVmdHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDo1MCUgMTAwJSBhdXRvIGF1dG87bWFyZ2luOjA7d2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRv'@; put 'b2x0aXAtYm9yZGVyLXJhZGl1cyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMt'@; put 'dHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3Bh'@; put 'Y2luZyk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDttYXJnaW4tcmlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSl9LnRvb2x0aXAudG9vbHRpcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29s'@; put 'dGlwLWNvbnRlbnQudG9vbHRpcC1sZWZ0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7Ym90dG9tOmF1dG87bGVmdDphdXRvO3JpZ2h0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSk7Ym9yZGVyLXRvcDp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50fS50b29sdGlwLnRvb2x0aXAteHM+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAt'@; put 'eHN7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNCl9LnRvb2x0aXAudG9vbHRpcC1zbT4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1zbXt3aWR0aDpjYWxjKDEyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LnRvb2x0aXAu'@; put 'dG9vbHRpcC1tZD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1tZHt3aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LnRvb2x0aXAudG9vbHRpcC1sZz4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlw'@; put 'LWNvbnRlbnQudG9vbHRpcC1sZ3t3aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LnRvb2x0aXA+LmJ0bisudG9vbHRpcC1jb250ZW50LC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0Pi5idG4rLnRvb2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlwLXRv'@; put 'cC1sZWZ0Pi5idG4rLnRvb2x0aXAtY29udGVudHttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgLSB2YXIoLS1jbHItYnRuLXZlcnRpY2FsLW1hcmdpbikpfS50b29sdGlwLnRvb2x0aXAtYm90dG9tLXJpZ2h0'@; put 'Pi5idG4rLnRvb2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0Pi5idG4rLnRvb2x0aXAtY29udGVudHttYXJnaW4tdG9wOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgLSB2YXIoLS1jbHItYnRuLXZlcnRp'@; put 'Y2FsLW1hcmdpbikpfS50b29sdGlwLnRvb2x0aXAtcmlnaHQ+LmJ0bisudG9vbHRpcC1jb250ZW50e21hcmdpbi1sZWZ0OmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgLSB2YXIoLS1jbHItYnRuLWhvcml6b250YWwtbWFyZ2luKSl9'@; put 'LnRvb2x0aXA+LmNsci1pY29ue21hcmdpbi1yaWdodDowfS50b29sdGlwPnN2Z3twb2ludGVyLWV2ZW50czpub25lfS50b29sdGlwLXRyaWdnZXI6Zm9jdXMrLnRvb2x0aXAtY29udGVudHt2aXNpYmlsaXR5OnZpc2libGV9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItZm9ybXMtYmFzZWxpbmU6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTstLWNsci1mb3Jtcy1pY29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTstLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1m'@; put 'b3Jtcy1sYWJlbC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWZvcm1zLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMt'@; put 'ZGFuZ2VyKTstLWNsci1mb3Jtcy1pbnZhbGlkLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItZm9ybXMtdmFsaWQtdGV4dC1jb2xvcjp2YXIoLS1jZHMt'@; put 'YWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWZvcm1zLXN1YnRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMzAwKTstLWNsci1mb3Jtcy1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0yMDApOy0tY2xyLWZvcm1z'@; put 'LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJvcmRlci1jb2xvcik7LS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1mb3Jtcy1zdWJ0ZXh0'@; put 'LWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1mb3Jtcy1ib3JkZXItZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1j'@; put 'b2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItZm9ybXMtbGFiZWwtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWZvcm1zLXBsYWNlaG9sZGVyLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlh'@; put 'cy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1mb3Jtcy1sYWJlbC1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7LS1jbHItZm9ybXMtaW5wdXQtcGFkZGluZzowIGNhbGMoNCAqIHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkg'@; put 'LyAzKTstLWNsci1mb3Jtcy1pbnB1dC13cmFwcGVyLWhlaWdodDpjYWxjKDQgKiB2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTstLWNsci1mb3Jtcy1pbnB1dC1ncm91cC1pY29uLWFjdGlvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItZm9ybXMtaW5wdXQtZ3JvdXAt'@; put 'aWNvbi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1mb3Jtcy1jaGVja2JveC1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1mb3Jtcy1jaGVja2JveC1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qt'@; put 'Ym9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLWZvcm1zLWNoZWNrYm94LWxhYmVsLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1jb2xvcik7LS1jbHItZm9ybXMtY2hlY2tib3gtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQt'@; put 'aGlnaGxpZ2h0KTstLWNsci1mb3Jtcy1jaGVja2JveC1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1mb3Jtcy1jaGVja2JveC1tYXJrLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1v'@; put 'YmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCk7LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtbGFiZWwtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWRpc2FibGVkLWNvbG9yKTstLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNs'@; put 'ci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpOy0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWNoZWNrZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6'@; put 'dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtaW5kZXRlcm1pbmF0ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yOnZhcigtLWNk'@; put 'cy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCk7LS1jbHItZm9ybXMtcmFkaW8tbGFiZWwtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWNvbG9yKTstLWNsci1mb3Jtcy1yYWRpby1sYWJlbC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1k'@; put 'aXNhYmxlZCk7LS1jbHItZm9ybXMtcmFkaW8tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1tYXJrLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9y'@; put 'LTEwMCk7LS1jbHItZm9ybXMtcmFkaW8tc2VsZWN0ZWQtc2hhZG93Omluc2V0IDAgMCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItZm9ybXMtcmFkaW8tY2hlY2tlZC1kaXNh'@; put 'YmxlZC1zaGFkb3c6aW5zZXQgMCAwIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci1mb3Jtcy1wYXNzd29yZC1leWUtaWNvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVy'@; put 'YWN0aW9uLWNvbG9yKTstLWNsci1mb3Jtcy1wYXNzd29yZC1kaXNhYmxlZC1leWUtaWNvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24t'@; put 'YmFja2dyb3VuZC1oaWdobGlnaHQpOy0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtc2hhZGUpOy0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWlu'@; put 'dGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1mb3Jtcy1yYW5nZS10cmFjay1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTstLWNsci1mb3Jtcy1yYW5nZS10'@; put 'cmFjay1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7LS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSk7LS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxlZDp2YXIoLS1jZHMt'@; put 'YWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvci1kaXNhYmxlZDp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkLXRpbnQpOy0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWJvcmRlci1jb2xvci1kaXNhYmxlZDp2'@; put 'YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci1mb3Jtcy1zZWxlY3QtaG92ZXItYmFja2dyb3VuZDp0cmFuc3BhcmVudDstLWNsci1mb3Jtcy1zZWxlY3QtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlv'@; put 'bi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZm9ybXMtc2VsZWN0LWhvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1mb3Jtcy1zZWxlY3QtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQpOy0tY2xyLWZvcm1zLXNlbGVjdC1jYXJldC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9i'@; put 'amVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItZm9ybXMtc2VsZWN0LWNhcmV0LXNpemU6Y2FsYygxMCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLWZvcm1zLXNlbGVjdC1vcHRpb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAw'@; put 'KTstLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRh'@; put 'aW5lci1iYWNrZ3JvdW5kKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtb3B0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNv'@; put 'bG9yLTQwMCk7LS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGVkLW9wdGlvbi1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZCk7LS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3VuZC1jb2xvcjp2'@; put 'YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1mb3Jtcy10ZXh0YXJlYS1kaXNhYmxlZC1iYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWZvcm1zLXRleHRhcmVhLWJvcmRlci1yYWRpdXM6'@; put 'dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItZm9ybXMtZGF0YWxpc3QtY2FyZXQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1mb3Jtcy1kYXRhbGlzdC1jYXJldC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMt'@; put 'c3RhdHVzLWRpc2FibGVkKTstLWNsci1mb3Jtcy1kYXRhbGlzdC1jYXJldC1pY29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2xyLWZvcm0tY29udHJvbHttYXJnaW4tdG9wOmNhbGMoNCp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJl'@; put 'Y3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNsci1mb3JtLWNvbnRyb2wgaW5wdXQ6Oi1tcy1yZXZlYWwsLmNsci1mb3JtLWNvbnRyb2wgaW5wdXQ6Oi1tcy1jbGVhcntkaXNwbGF5Om5vbmV9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWZv'@; put 'cm1zLXRleHQtZGlzYWJsZWQtY29sb3IpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIGxhYmVsLC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY29udHJvbC1sYWJlbHtjb2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtZGlzYWJsZWQtY29sb3IpfS5jbHItZm9ybS1jb250cm9s'@; put 'LWRpc2FibGVkIC5jbHItaW5wdXQsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci10ZXh0YXJlYSwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdCwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLW51bWJlci1pbnB1dHtjb2xvcjp2YXIoLS1jbHItZm9y'@; put 'bXMtdGV4dC1kaXNhYmxlZC1jb2xvcik7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWRpc2FibGVkLWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIsLmNsci1mb3JtLWNvbnRy'@; put 'b2wtZGlzYWJsZWQgaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otcmFuZ2UtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxlZCwgdmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3ItZGlzYWJs'@; put 'ZWQpKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXN1YnRleHR7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXN1YnRleHQtZGlzYWJsZWQtY29sb3IpfS5jbHItZm9ybS1jb250cm9sLW11bHRpe2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcH0uY2xyLWZvcm0tY29udHJv'@; put 'bC1tdWx0aSAuY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6MTAwJX0uY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtm'@; put 'b250LXdlaWdodDp2YXIoLS1jbHItZm9ybXMtbGFiZWwtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRl'@; put 'ci1zcGFjaW5nKX0uY2xyLWNvbnRyb2wtY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDItZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZh'@; put 'cigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKX0uY2xyLWNvbnRyb2wtaW5saW5le2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9'@; put 'LmNsci1jb250cm9sLWlubGluZSAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OmNhbGMoMip2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTt3aWR0aDphdXRvfS5jbHItc3VidGV4dHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTp2YXIoLS1jZHMt'@; put 'YWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNw'@; put 'YWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXN1YnRleHQtY29sb3IpO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uY2xyLXN1YnRleHQuZXJyb3J7Y29sb3I6dmFyKC0tY2xy'@; put 'LWZvcm1zLWludmFsaWQtdGV4dC1jb2xvcil9LmNsci1zdWJ0ZXh0LnN1Y2Nlc3N7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLXRleHQtY29sb3IpfS5jbHItc3VidGV4dC13cmFwcGVye2ZsZXgtYmFzaXM6MTAwJTtkaXNwbGF5OmZsZXh9LmNsci12YWxpZGF0ZS1pY29ue2hlaWdodDp2'@; put 'YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1pY29uLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1j'@; put 'b2xvcik7ZmlsbDp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7ZGlzcGxheTpub25lfS5jbHItc3VjY2VzcyAuY2xyLXZhbGlkYXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKTtmaWxsOnZhcigtLWNsci1mb3Jtcy12'@; put 'YWxpZC1jb2xvcil9LmNsci1lcnJvciAuY2xyLXZhbGlkYXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1mb3JtLWhvcml6b250YWwgLmNsci1mb3JtLWNvbnRyb2w+LmNsci1jb250cm9sLWxhYmVsLC5jbHItZm9ybS1ob3Jpem9udGFsIC5jbHItZm9ybS1jb250cm9sPi5jbHIt'@; put 'Zm9ybS1jb250cm9sLmNsci1mb3JtLWNvbnRyb2wtbXVsdGkgLmNsci1jb250cm9sLWxhYmVse3dpZHRoOmNhbGMoMzIqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7ZmxleC1zaHJpbms6MDttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LmNsci1mb3JtLWhvcml6b250'@; put 'YWwuY2xyLXJvdyAuY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6YXV0b30uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZm9ybTpub3QoLmNsci1mb3JtLWNvbXBhY3QpIC5jbHItY29udHJvbC1jb250YWlu'@; put 'ZXIuY2xyLWVycm9yPi5jbHItc3VidGV4dC13cmFwcGVyIC5jbHItdmFsaWRhdGUtaWNvbiwuY2xyLWZvcm06bm90KC5jbHItZm9ybS1jb21wYWN0KSAuY2xyLWNvbnRyb2wtY29udGFpbmVyLmNsci1zdWNjZXNzPi5jbHItc3VidGV4dC13cmFwcGVyIC5jbHItdmFsaWRhdGUtaWNvbnttYXJn'@; put 'aW4tbGVmdDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9sPi5jbHItY29udHJvbC1sYWJlbHt3aWR0aDpjYWxjKDMyKnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpO21pbi13aWR0aDpjYWxjKDMyKnZhcigtLWNs'@; put 'ci1mb3Jtcy1iYXNlbGluZSkpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9sLmNsci1yb3c+LmNsci1jb250cm9sLWxhYmVse3dpZHRoOmF1dG87bWluLXdpZHRoOmF1dG99LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jb250cm9sLWxhYmVse21hcmdpbi10b3A6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS0zKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21hcmdpbi10b3A6Y2FsYygyKnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY29udHJvbC1jb250'@; put 'YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwfS5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VidGV4dHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDp2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWVycm9yIC5jbHItc3VidGV4'@; put 'dCwuY2xyLWZvcm0tY29tcGFjdCAuY2xyLXN1Y2Nlc3MgLmNsci1zdWJ0ZXh0e21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xyLXN1YnRleHQuZXJyb3IsLmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xy'@; put 'LXN1YnRleHQuc3VjY2VzcywuY2xyLWZvcm0tY29tcGFjdCAuY2xyLXN1Y2Nlc3MgLmNsci1zdWJ0ZXh0LmVycm9yLC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VjY2VzcyAuY2xyLXN1YnRleHQuc3VjY2Vzc3ttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5jbHItZm9y'@; put 'bS1jb21wYWN0IC5jbHItZXJyb3IgLmNsci12YWxpZGF0ZS1pY29uLC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VjY2VzcyAuY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXN1YnRleHQtd3JhcHBlcntmbGV4LWJhc2lzOmF1dG87ZGlzcGxh'@; put 'eTppbmxpbmUtYmxvY2t9LmNsci1mb3Jte3BhZGRpbmc6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZvcm0tZnVsbC13aWR0aCAuY2xyLWZvcm0tY29udHJvbCAuY2xyLWNvbnRyb2wtY29udGFpbmVyLC5jbHItZm9ybS1mdWxsLXdpZHRoIC5jbHItZm9ybS1jb250cm9sIC5jbHIt'@; put 'c2VsZWN0LXdyYXBwZXIsLmNsci1mb3JtLWZ1bGwtd2lkdGggLmNsci1mb3JtLWNvbnRyb2wgLmNsci1pbnB1dC13cmFwcGVyLC5jbHItZm9ybS1mdWxsLXdpZHRoIC5jbHItZm9ybS1jb250cm9sIC5jbHItbnVtYmVyLWlucHV0LXdyYXBwZXIsLmNsci1mb3JtLWZ1bGwtd2lkdGggLmNsci1m'@; put 'b3JtLWNvbnRyb2wgLmNsci1jb21ib2JveHt3aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKSl9LmNsci1mb3JtLWZ1bGwtd2lkdGggLmNsci1mb3JtLWNvbnRyb2wgLmNsci1jb21ib2JveC13cmFwcGVyLC5jbHItZm9ybS1mdWxsLXdpZHRoIC5jbHItZm9ybS1j'@; put 'b250cm9sIC5jbHItY29tYm9ib3gtaW5wdXQtd3JhcHBlciwuY2xyLWZvcm0tZnVsbC13aWR0aCAuY2xyLWZvcm0tY29udHJvbCAuY2xyLXRleHRhcmVhLXdyYXBwZXIsLmNsci1mb3JtLWZ1bGwtd2lkdGggLmNsci1mb3JtLWNvbnRyb2wgLmNsci1pbnB1dC1ncm91cCwuY2xyLWZvcm0tZnVs'@; put 'bC13aWR0aCAuY2xyLWZvcm0tY29udHJvbCBpbnB1dCwuY2xyLWZvcm0tZnVsbC13aWR0aCAuY2xyLWZvcm0tY29udHJvbCB0ZXh0YXJlYSwuY2xyLWZvcm0tZnVsbC13aWR0aCAuY2xyLWZvcm0tY29udHJvbCBzZWxlY3R7d2lkdGg6MTAwJX0uY2xyLWZvcm0tZnVsbC13aWR0aCAuY2xyLWZv'@; put 'cm0tY29udHJvbCAuY2xyLWNvbWJvYm94LC5jbHItZm9ybS1mdWxsLXdpZHRoLmNsci1mb3JtLWNvbXBhY3QgLmNsci1mb3JtLWNvbnRyb2wgLmNsci1pbnB1dC13cmFwcGVyLC5jbHItZm9ybS1mdWxsLXdpZHRoLmNsci1mb3JtLWNvbXBhY3QgLmNsci1mb3JtLWNvbnRyb2wgLmNsci1udW1i'@; put 'ZXItaW5wdXQtd3JhcHBlciwuY2xyLWZvcm0tZnVsbC13aWR0aC5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9sIC5jbHItc2VsZWN0LXdyYXBwZXIsLmNsci1mb3JtLWZ1bGwtd2lkdGguY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZvcm0tY29udHJvbCAuY2xyLW11bHRpc2VsZWN0'@; put 'LXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleH0uY2xyLWZvcm0tZnVsbC13aWR0aC5jbHItZm9ybS1jb21wYWN0IC5jbHItY29udHJvbC1jb250YWluZXJ7ZmxleC13cmFwOm5vd3JhcH0uY2xyLWZvcm0tZnVsbC13aWR0aC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VidGV4dHtmbGV4OjAg'@; put 'MCBhdXRvfS5jbHItZm9ybS1mdWxsLXdpZHRoOm5vdCguY2xyLWZvcm0tY29tcGFjdCkgLmNsci1mb3JtLWNvbnRyb2wgLmNsci1lcnJvciAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVyLC5jbHItZm9ybS1mdWxsLXdpZHRoOm5vdCguY2xyLWZvcm0tY29tcGFjdCkgLmNsci1mb3JtLWNvbnRy'@; put 'b2wgLmNsci1zdWNjZXNzIC5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXJ7cmlnaHQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZvcm0tZnVsbC13aWR0aDpub3QoLmNsci1mb3JtLWNvbXBhY3QpIC5jbHItZm9ybS1jb250cm9sIC5jbHItY29udHJvbC1jb250YWluZXI6bm90KC5j'@; put 'bHItZXJyb3IpOm5vdCguY2xyLXN1Y2Nlc3MpIHRleHRhcmVhe3dpZHRoOmNhbGMoMTAwJSAtIHZhcigtLWNsci1mb3Jtcy1pY29uLXNpemUpKX0uY2xyLWZvcm0tZ3JvdXB7cGFkZGluZzp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpfS5jbHItcmVxdWlyZWQtbWFyazphZnRlcntjb250ZW50'@; put 'OiIqIjtjb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7ZmlsbDp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zKTttYXJnaW4tbGVmdDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUp'@; put 'fS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0uY2xyLWNoZWNrYm94LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRp'@; put 'dmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWNoZWNrYm94LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2ZvbnQtd2VpZ2h0OjQwMDtkaXNwbGF5OmJsb2NrfS5jbHItY2hlY2tib3gtd3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xy'@; put 'LWNoZWNrYm94LXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjA7Y3Vyc29yOnBvaW50ZXI7bWluLWhlaWdodDpj'@; put 'YWxjKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9u'@; put 'dC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNl'@; put 'Y29uZGFyeS1sZXR0ZXItc3BhY2luZyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hde3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLWhlaWdodDp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSAwfS5jbHItY2hlY2tib3gtd3Jh'@; put 'cHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZh'@; put 'cigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtib3JkZXI6LjA1cmVtIHNvbGlkIHZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWJvcmRlci1yYWRpdXMpfS5jbHIt'@; put 'Y2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2Rpc3BsYXk6bm9uZTtoZWlnaHQ6Y2FsYyhjYWxjKGNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSouNSkqLjUpICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFj'@; put 'ZS0xKSk7d2lkdGg6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKi41KTtib3JkZXItbGVmdDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykqLjEyNSkgc29saWQgdmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LW1hcmstY29sb3IpO2JvcmRlci1ib3R0b206Y2FsYyh2YXIoLS1j'@; put 'ZHMtZ2xvYmFsLXNwYWNlLTcpKi4xMjUpIHNvbGlkIHZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1tYXJrLWNvbG9yKTtsZWZ0OmNhbGMoY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKi41KSouNSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyhjYWxjKHZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtNykqLjUpKi41KSkgcm90YXRlKC00NWRlZyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3Vze291dGxpbmU6MH0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXM6YmVmb3Jle291dGxpbmU6dmFyKC0tY2Rz'@; put 'LWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lKTtvdXRsaW5lLWNvbG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDpjYWxjKDMqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNr'@; put 'Ym94XTpjaGVja2VkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6MH0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphZnRlcntkaXNwbGF5OmlubGluZS1ibG9ja30uY2xy'@; put 'LWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0uY2xyLWluZGV0ZXJtaW5hdGU6YmVmb3JlLC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRlOmJlZm9yZXtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXIt'@; put 'd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3IpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XS5jbHItaW5kZXRlcm1pbmF0ZTphZnRlciwuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRb'@; put 'dHlwZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZTphZnRlcntib3JkZXItbGVmdDpub25lO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yKTtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFuc2Zvcm06dHJhbnNsYXRl'@; put 'WShjYWxjKGNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSouNSkqLjUpKX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1kaXNhYmxlZC1jb2xv'@; put 'cil9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJs'@; put 'ZWQtYm9yZGVyLWNvbG9yKX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQ6Y2hlY2tlZDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yKTtib3Jk'@; put 'ZXI6MH0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQ6Y2hlY2tlZDphZnRlcntib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLW1hcmstY29sb3IpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNo'@; put 'ZWNrYm94XTpkaXNhYmxlZC5jbHItaW5kZXRlcm1pbmF0ZTphZnRlciwuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZTphZnRlcntib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWluZGV0'@; put 'ZXJtaW5hdGUtY29sb3IpO2JvcmRlci1sZWZ0Om5vbmV9LmNsci1jaGVja2JveC13cmFwcGVyLmNsci1jaGVja2JveC1pbmxpbmV7ZGlzcGxheTpmbGV4fS5jbHItY2hlY2tib3gtd3JhcHBlci5jbHItY2hlY2tib3gtaW5saW5lIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmlubGluZS1i'@; put 'bG9jazttYXJnaW4tcmlnaHQ6Y2FsYygyKnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpO3dpZHRoOmF1dG99LmNsci1lcnJvciAuY2xyLWNoZWNrYm94LXdyYXBwZXI6bm90KC5kYXRhZ3JpZC1zZWxlY3QgLmNsci1jaGVja2JveC13cmFwcGVyKSBpbnB1dFt0eXBlPWNoZWNrYm94XTpiZWZv'@; put 'cmV7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVsLC5jbHItY2hlY2tib3gtd3JhcHBlci5jbHItY2hlY2tib3gtd3JhcHBlci1kaXNhYmxl'@; put 'ZCAuY2xyLWNvbnRyb2wtbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1kaXNhYmxlZC1jb2xvcil9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmJlZm9yZSwuY2xy'@; put 'LWNoZWNrYm94LXdyYXBwZXIuY2xyLWNoZWNrYm94LXdyYXBwZXItZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1j'@; put 'aGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmJlZm9yZSwuY2xyLWNoZWNrYm94LXdyYXBwZXIuY2xyLWNoZWNrYm94LXdyYXBwZXItZGlzYWJs'@; put 'ZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6MH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94'@; put 'LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphZnRlciwuY2xyLWNoZWNrYm94LXdyYXBwZXIuY2xyLWNoZWNrYm94LXdyYXBwZXItZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphZnRlcntib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNr'@; put 'Ym94LWRpc2FibGVkLW1hcmstY29sb3IpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XS5jbHItaW5kZXRlcm1pbmF0ZTphZnRlciwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBw'@; put 'ZXIgaW5wdXRbdHlwZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZTphZnRlciwuY2xyLWNoZWNrYm94LXdyYXBwZXIuY2xyLWNoZWNrYm94LXdyYXBwZXItZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF0uY2xyLWluZGV0ZXJtaW5hdGU6YWZ0ZXIsLmNsci1jaGVja2JveC13cmFwcGVyLmNs'@; put 'ci1jaGVja2JveC13cmFwcGVyLWRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGU6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1pbmRldGVybWluYXRlLWNvbG9yKTtib3JkZXItbGVmdDpub25lfS5jbHItZm9ybS1j'@; put 'b21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlcnttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7bWluLWhlaWdodDpjYWxjKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jaGVja2JveC13cmFwcGVyfi5jbHItc3VidGV4dHttYXJnaW4tbGVm'@; put 'dDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OmNhbGMoMip2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTt3aWR0aDphdXRv'@; put 'fS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowfS5jbHItZmlsZS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZpbGUtd3JhcHBlciAu'@; put 'Y2xyLWNvbnRyb2wtbGFiZWx7Zm9udC13ZWlnaHQ6NDAwO2Rpc3BsYXk6YmxvY2t9LmNsci1maWxlLXdyYXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1maWxlLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItZmlsZS13cmFw'@; put 'cGVyIC5idG57bWFyZ2luOjB9LmNsci1maWxle2hlaWdodDowO3dpZHRoOjA7b3BhY2l0eTowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVye21heC13aWR0aDoxMDAlO21hcmdpbi10b3A6MH0u'@; put 'Y2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1j'@; put 'bHItZm9ybXMtYmFzZWxpbmUpKjQpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyfi5jbHItc3VidGV4dHtsaW5lLWhlaWdodDpjYWxjKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCk7bWFyZ2luLXRvcDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVy'@; put 'IC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOjA7bGluZS1oZWlnaHQ6MS4wOHJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlciAuYnRue2hlaWdodDoxLjJyZW19LmNsci1maWxlLWlucHV0LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlO21h'@; put 'cmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uY2xyLWZpbGUtaW5wdXQtd3JhcHBlciAuY2xyLWZpbGUtaW5wdXR7aGVpZ2h0OjA7d2lkdGg6MDtvcGFjaXR5OjA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6LTF9LmNsci1maWxlLWlucHV0LXdy'@; put 'YXBwZXIgLmNsci1maWxlLWlucHV0LWJyb3dzZS1idXR0b24sLmNsci1maWxlLWlucHV0LXdyYXBwZXIgLmNsci1maWxlLWlucHV0LWNsZWFyLWJ1dHRvbnttYXJnaW46MDttYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uY2xyLWZpbGUtaW5wdXQtd3JhcHBlciAuY2xy'@; put 'LWZpbGUtaW5wdXQtY2xlYXItYnV0dG9ue3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIWltcG9ydGFudDttaW4td2lkdGg6dW5zZXQ7Ym9yZGVyOjB9LmNsci1maWxlLWlucHV0LXdyYXBwZXIgLmNsci1maWxlLWlucHV0LWJyb3dzZS1idXR0b24tdGV4dHtvdmVyZmxvdzpo'@; put 'aWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtaW5wdXQtd3JhcHBlcnttYXJnaW4tdG9wOjB9QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mb3JtLWhvcml6b250YWwgLmNsci1maWxlLWlucHV0LXdyYXBwZXJ7'@; put 'bWFyZ2luLXRvcDowfX0uY2xyLWZpbGUtbGlzdCAuY2xyLWZpbGUtbGlzdC1pdGVte21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTttYXgtd2lkdGg6NTAwcHh9LmNsci1maWxlLWxpc3QgLmNsci1maWxlLWxhYmVsLWFuZC1zdGF0dXMtaWNvbntkaXNwbGF5OmlubGluZS1m'@; put 'bGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZpbGUtbGlzdCAuY2xyLWZpbGUtbGFiZWx7d2hpdGUtc3BhY2U6d3JhcDtoZWlnaHQ6dW5zZXQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7cGFkZGluZy1yaWdo'@; put 'dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5jbHItZmlsZS1saXN0IC5jbHItZmlsZS1jbGVhci1idXR0b257bWFyZ2luOjA7cGFkZGluZzowO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2hlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxp'@; put 'bmUtaGVpZ2h0KX0uY2xyLWZpbGUtbGlzdCAuY2xyLWZpbGUtY2xlYXItYnV0dG9uIGNkcy1pY29ue21hcmdpbjowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS1saXN0LWl0ZW17ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2x1bW4tZ2FwOnZh'@; put 'cigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLWxpc3QtaXRlbSAuY2xyLXN1YnRleHR7bWFyZ2luOjAhaW1wb3J0YW50fS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS1saXN0LWJyZWFre2ZsZXgtYmFzaXM6MTAwJTtoZWlnaHQ6MH0uY2xyLWlu'@; put 'cHV0LXdyYXBwZXJ7d2hpdGUtc3BhY2U6bm93cmFwO21heC1oZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLWlucHV0LXdyYXBwZXItaGVpZ2h0KX0uY2xyLWlucHV0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFy'@; put 'YW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtaW5wdXQtd3JhcHBlci1oZWlnaHQpO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTti'@; put 'b3JkZXItYm90dG9tOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzp2YXIoLS1jbHItZm9ybXMtaW5wdXQtcGFkZGlu'@; put 'Zyk7bWF4LWhlaWdodDp2YXIoLS1jbHItZm9ybXMtaW5wdXQtd3JhcHBlci1oZWlnaHQpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13'@; put 'ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKX0uY2xyLWlucHV0OmZvY3Vze291dGxpbmU6MH0uY2xyLWlucHV0W3JlYWRvbmx5XXtib3Jk'@; put 'ZXI6MH0uY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRpb246'@; put 'YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pLmNsci1mb2N1cywuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKTpmb2N1cy13aXRoaW57Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHIt'@; put 'Zm9ybXMtZm9jdXNlZC1jb2xvcik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWlucHV0OmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1pbnB1dDpkaXNhYmxlZDo6cGxhY2Vob2xkZXJ7Y29s'@; put 'b3I6dmFyKC0tY2xyLWZvcm1zLXBsYWNlaG9sZGVyLWRpc2FibGVkLWNvbG9yKX0uY2xyLWVycm9yIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pe2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRv'@; put 'IGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNsci1lcnJvciAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHld'@; put 'KTpmb2N1cywuY2xyLWVycm9yIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pLmNsci1mb2N1cywuY2xyLWVycm9yIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLXdpdGhpbntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKTtiYWNrZ3Jv'@; put 'dW5kLXNpemU6MTAwJSAxMDAlfS5jbHItc3VjY2VzcyAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKXtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy12YWxpZC1jb2xvcik7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIo'@; put 'LS1jbHItZm9ybXMtdmFsaWQtY29sb3IpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNsci1zdWNjZXNzIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLC5jbHItc3VjY2VzcyAuY2xyLWlu'@; put 'cHV0Om5vdChbcmVhZG9ubHldKS5jbHItZm9jdXMsLmNsci1zdWNjZXNzIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLXdpdGhpbntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy12YWxpZC1jb2xvcik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWZv'@; put 'cm0tY29udHJvbC5yb3cgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1pbnB1dHttYXgtd2lkdGg6MTAwJX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWlucHV0fi5jbHItc3Vi'@; put 'dGV4dHttYXJnaW4tbGVmdDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpfS5jbHItZm9ybS1jb250cm9sLXJlYWRvbmx5IC5jbHItaW5wdXR7Ym9yZGVyOjB9LmNsci1mb3JtLWNvbnRyb2wtbXVsdGkgLmNsci1pbnB1dHttYXgtd2lkdGg6Y2FsYygxMDAlICsgdmFyKC0tY2xyLWZvcm1zLWlj'@; put 'b24tc2l6ZSkpfTo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXBsYWNlaG9sZGVyLWNvbG9yKX0uY2xyLWlucHV0LWdyb3Vwe2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRo'@; put 'LTEwMCkgc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcikg'@; put 'OTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZTtwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1pbnB1dC13cmFwcGVyLWhlaWdodCl9LmNsci1pbnB1'@; put 'dC1ncm91cDpmb2N1cywuY2xyLWlucHV0LWdyb3VwLmNsci1mb2N1cywuY2xyLWlucHV0LWdyb3VwOmZvY3VzLXdpdGhpbntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItaW5wdXQtZ3JvdXAu'@; put 'Y2xyLWZvY3Vze3dpZHRoOmF1dG99LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0e2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO21hcmdpbi1yaWdodDowO21heC13aWR0aDoxMDAlfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSk6Zm9jdXN7YmFja2dyb3VuZC1z'@; put 'aXplOjA7Ym9yZGVyOjB9LmNsci1pbnB1dC1ncm91cCBzZWxlY3QsLmNsci1pbnB1dC1ncm91cCAuY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdCwuY2xyLWlucHV0LWdyb3VwIC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3R7Ym9yZGVyOjB9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlu'@; put 'cHV0LWdyb3VwLWFkZG9ue2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zdWJ0ZXh0LWNvbG9yKX0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtYWN0aW9uc3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3Jv'@; put 'dXAtaWNvbi1hY3Rpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dy'@; put 'b3VuZDowIDA7cGFkZGluZzowIGNhbGMoMS41KnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpO2N1cnNvcjpwb2ludGVyfWJ1dHRvbi5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbntjdXJzb3I6cG9pbnRlcn0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQt'@; put 'Z3JvdXAtaWNvbi1hY3Rpb24gY2RzLWljb24sLmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uIGNsci1pY29ue2ZpbGw6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1pbnB1dC1ncm91cC1p'@; put 'Y29uLWFjdGlvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItZm9ybXMtaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24tc2l6ZSk7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpLGNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSkpfS5jbHIt'@; put 'ZXJyb3IgLmNsci1pbnB1dC1ncm91cHtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKSA5NSUpIG5v'@; put 'LXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItZXJyb3IgLmNsci1pbnB1dC1ncm91cDpmb2N1cywuY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXAuY2xyLWZvY3VzLC5jbHItZXJyb3IgLmNsci1pbnB1dC1ncm91'@; put 'cDpmb2N1cy13aXRoaW57Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLXN1Y2Nlc3MgLmNsci1pbnB1dC1ncm91cHtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy12YWxpZC1j'@; put 'b2xvcik7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNs'@; put 'ci1zdWNjZXNzIC5jbHItaW5wdXQtZ3JvdXA6Zm9jdXMsLmNsci1zdWNjZXNzIC5jbHItaW5wdXQtZ3JvdXAuY2xyLWZvY3VzLC5jbHItc3VjY2VzcyAuY2xyLWlucHV0LWdyb3VwOmZvY3VzLXdpdGhpbntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy12YWxpZC1jb2xvcik7'@; put 'YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWlucHV0LWdyb3Vwe2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvcil9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1pbnB1'@; put 'dC1ncm91cC1pY29uLWFjdGlvbntjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24gY2RzLWljb257ZmlsbDp2YXIoLS1jbHItZm9y'@; put 'bXMtaW5wdXQtZ3JvdXAtaWNvbi1kaXNhYmxlZC1jb2xvcil9LmNsci1pbnB1dC1ncm91cDpoYXMoaW5wdXRbcmVhZG9ubHldKSwuY2xyLWZvcm0tY29udHJvbC1yZWFkb25seSAuY2xyLWlucHV0LWdyb3Vwe2JvcmRlcjowO2JhY2tncm91bmQ6MCAwfS5jbHItaW5wdXQtZ3JvdXA6aGFzKGlu'@; put 'cHV0W3JlYWRvbmx5XSkgLmNsci1pbnB1dC1ncm91cC1hY3Rpb25zLC5jbHItZm9ybS1jb250cm9sLXJlYWRvbmx5IC5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1hY3Rpb25ze2Rpc3BsYXk6bm9uZX0uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWlucHV0LWdyb3Vwe21heC13'@; put 'aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MH0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb117LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmV9LmNsci1yYWRpby13cmFwcGVy'@; put 'e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtmb250LXdlaWdodDo0MDA7ZGlzcGxheTpibG9ja30uY2xyLXJhZGlvLXdyYXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1s'@; put 'ZWZ0OjB9LmNsci1yYWRpby13cmFwcGVyfi5jbHItc3VidGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb117cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS05KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7Ym9yZGVyLXJhZGl1czo1MCU7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIDB9LmNsci1yYWRpby13cmFwcGVyIGlucHV0'@; put 'W3R5cGU9cmFkaW9dOm5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFj'@; put 'ZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2JvcmRlcjouMDVyZW0gc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo1MCV9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YmVmb3Jle2JvcmRlcjow'@; put 'O2JveC1zaGFkb3c6dmFyKC0tY2xyLWZvcm1zLXJhZGlvLXNlbGVjdGVkLXNoYWRvdyl9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6ZGlzYWJsZWQ6YmVmb3Jle2JveC1zaGFkb3c6dmFyKC0tY2xyLWZvcm1zLXJhZGlvLWNoZWNrZWQtZGlzYWJsZWQtc2hh'@; put 'ZG93KX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Zm9jdXN7b3V0bGluZTowfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1czpiZWZvcmV7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpO291dGxp'@; put 'bmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0OmNhbGMoMyooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmRpc2FibGVkK2xhYmVse2N1cnNvcjpub3QtYWxsb3dlZDtjb2xvcjp2'@; put 'YXIoLS1jbHItZm9ybXMtcmFkaW8tbGFiZWwtZGlzYWJsZWQtY29sb3IpfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpkaXNhYmxlZDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFkaW8tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7Ym9y'@; put 'ZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQpfS5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjA7Y3Vyc29yOnBvaW50ZXI7bWluLWhl'@; put 'aWdodDpjYWxjKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhZGlvLWxhYmVsLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZv'@; put 'bnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyl9LmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbDplbXB0eXtwYWRkaW5nLWxlZnQ6MH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXJhZGlvLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2N1cnNv'@; put 'cjpub3QtYWxsb3dlZDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFkaW8tbGFiZWwtZGlzYWJsZWQtY29sb3IpfS5jbHItZXJyb3IgLmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpfS5j'@; put 'bHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlcnttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7bWluLWhlaWdodDpjYWxjKDQqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVyfi5jbHItc3VidGV4dHttYXJnaW4t'@; put 'bGVmdDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OmNhbGMoMip2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTt3aWR0aDphdXRv'@; put 'fS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowfS5jbHItc2VsZWN0LXdyYXBwZXIsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH0uY2xyLXNlbGVjdC13'@; put 'cmFwcGVyIHNlbGVjdCwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXIt'@; put 'cmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29s'@; put 'aWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOnZhcigtLWNsci1wMi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdo'@; put 'dCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MCBjYWxjKHZhcigtLWNsci1mb3Jtcy1zZWxlY3Qt'@; put 'Y2FyZXQtc2l6ZSkgKyB2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKjIpIDAgdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjJ9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6Zm9jdXMsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpmb2N1'@; put 'c3tvdXRsaW5lOjB9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pe2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xy'@; put 'LWZvcm1zLWZvY3VzZWQtY29sb3IpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pOmZvY3VzLC5jbHItc2VsZWN0LXdyYXBwZXIg'@; put 'c2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXMsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pOmZvY3VzLXdpdGhpbiwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBw'@; put 'ZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXMsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSk6Zm9jdXMtd2l0aGlue2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IpO2JhY2tncm91bmQtc2l6ZTox'@; put 'MDAlIDEwMCV9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3RbbXVsdGlwbGVdOmZvY3VzLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3RbbXVsdGlwbGVdOmZvY3Vze291dGxpbmUtY29sb3I6SGlnaGxpZ2h0O291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291'@; put 'dGxpbmUtc3R5bGU6YXV0bztvdXRsaW5lLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXIsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6YWN0aXZlLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXIsLmNs'@; put 'ci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmV7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtaG92ZXItYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtaG92ZXItYmFja2dyb3VuZCl9LmNsci1zZWxlY3Qtd3JhcHBlciBz'@; put 'ZWxlY3Q6aG92ZXI6ZGlzYWJsZWQsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6YWN0aXZlOmRpc2FibGVkLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXI6ZGlzYWJsZWQsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmU6ZGlzYWJsZWR7Y3Vyc29y'@; put 'Om5vdC1hbGxvd2VkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6ZGlzYWJsZWQgb3B0aW9uLC5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0IG9wdGlvbjpkaXNhYmxlZCwuY2xyLW11'@; put 'bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmRpc2FibGVkIG9wdGlvbiwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0IG9wdGlvbjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1zZWxlY3Qt'@; put 'd3JhcHBlciBzZWxlY3Qgb3B0aW9uLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Qgb3B0aW9ue2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWJhY2tncm91bmQtY29s'@; put 'b3IpfS5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0OjotbXMtZXhwYW5kLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfS5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDpjYWxjKDQqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7'@; put 'ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWNhcmV0LXNpemUpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtc2l6ZSk7dG9wOmNh'@; put 'bGMoLjUqKDQqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSAtIHZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtc2l6ZSkpKTtyaWdodDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpO21hcmdpbjowOy13ZWJraXQtbWFzazp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwl'@; put 'M0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEyJTIwMTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDc3R5bGUlM0UuY2xzLTEl'@; put 'N0JmaWxsJTNBJTIzOWE5YTlhJTNCJTdEJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VDYXJldCUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjBkJTNEJTIy'@; put 'TTYlMkM5TDEuMiUyQzQuMmEwLjY4JTJDMC42OCUyQzAlMkMwJTJDMSUyQzEtMUw2JTJDNy4wOCUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTttYXNrOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNl'@; put 'dD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUz'@; put 'RS5jbHMtMSU3QmZpbGwlM0ElMjM5YTlhOWElM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUNhcmV0JTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUy'@; put 'MGQlM0QlMjJNNiUyQzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYlMkM3LjA4JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEpOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVw'@; put 'ZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtY29sb3IpfS5jbHItc2VsZWN0LXdyYXBwZXI6aG92ZXI6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWNhcmV0LWhvdmVyLWNv'@; put 'bG9yKX0uY2xyLWVycm9yIC5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXIsLmNsci1zdWNjZXNzIC5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXJ7cmlnaHQ6Y2FsYyh2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKSArIHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpfS5jbHItbXVsdGlzZWxlY3Qt'@; put 'd3JhcHBlcntkaXNwbGF5OmZsZXh9LmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIC5jbHItdmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfXNlbGVjdFttdWx0aXBsZV0sc2VsZWN0W3NpemVde3BhZGRpbmc6MDtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAw'@; put 'KSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVz'@; put 'LTEwMCk7aGVpZ2h0OmF1dG87bWluLXdpZHRoOmNhbGMoMTIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX1zZWxlY3RbbXVsdGlwbGVdOmhvdmVyLHNlbGVjdFttdWx0aXBsZV06YWN0aXZlLHNlbGVjdFtzaXplXTpob3ZlcixzZWxlY3Rbc2l6ZV06YWN0aXZle2JhY2tncm91bmQ6'@; put 'dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1ib3JkZXItY29sb3IpfXNlbGVjdFttdWx0aXBsZV0gb3B0aW9uLHNlbGVjdFtzaXplXSBvcHRpb257cGFkZGluZzpjYWxj'@; put 'KHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqLjUpIHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1vcHRpb24tY29sb3IpfXNlbGVjdFttdWx0aXBsZV0gb3B0aW9uOmNoZWNrZWQsc2VsZWN0W3NpemVdIG9wdGlvbjpjaGVj'@; put 'a2Vke2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1zZWxlY3RlZC1vcHRpb24tYmFja2dyb3VuZC1jb2xvcil9LmNsci1lcnJvciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pe2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQt'@; put 'Y29sb3IpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9'@; put 'LmNsci1lcnJvciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pOmZvY3VzLC5jbHItZXJyb3Igc2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXMsLmNsci1lcnJvciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pOmZvY3VzLXdpdGhpbntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jt'@; put 'cy1pbnZhbGlkLWNvbG9yKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItZXJyb3Igc2VsZWN0W211bHRpcGxlXXtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpfS5jbHItc3VjY2VzcyBzZWxlY3Q6bm90KFttdWx0aXBsZV0pe2JvcmRlci1ib3R0b20t'@; put 'Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy12YWxpZC1jb2xvcikgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9u'@; put 'OmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLXN1Y2Nlc3Mgc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpmb2N1cywuY2xyLXN1Y2Nlc3Mgc2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXMsLmNsci1zdWNjZXNzIHNlbGVjdDpub3QoW211bHRpcGxlXSk6Zm9jdXMtd2l0aGlue2Jv'@; put 'cmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItc3VjY2VzcyBzZWxlY3RbbXVsdGlwbGVde2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IpfS5jbHItZm9ybS1jb250cm9sLWRp'@; put 'c2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdC5kaXNhYmxlZDpob3ZlcjphZnRlcntjb2xvcjp2YXIoLS1j'@; put 'bHItZm9ybXMtc2VsZWN0LWNhcmV0LWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdC5kaXNhYmxlZD5zZWxlY3QsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3Qgc2VsZWN0OmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxl'@; put 'Y3QtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdC5kaXNhYmxlZD5zZWxlY3Q6aG92ZXIsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3Qgc2VsZWN0OmRpc2FibGVkOmhvdmVye2JhY2tn'@; put 'cm91bmQ6MCAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXJ7bWFyZ2luLXRvcDowfS5jbHItdGV4dGFyZWEtd3JhcHBlcnt3aGl0ZS1zcGFjZTpub3dyYXA7ZGlzcGxheTpmbGV4O21h'@; put 'cmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uY2xyLXRleHRhcmVhLXdyYXBwZXIgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci10ZXh0YXJlYXttYXgtd2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7aGVpZ2h0OmF1dG87'@; put 'cmVzaXplOnZlcnRpY2FsO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLXRleHRhcmVhLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigt'@; put 'LWNsci1mb3Jtcy10ZXh0LWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1mb3Jtcy10ZXh0YXJlYS1ib3JkZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNp'@; put 'emUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6Y2FsYygyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25k'@; put 'YXJ5LWxldHRlci1zcGFjaW5nKX0uY2xyLXRleHRhcmVhOmZvY3Vze291dGxpbmUtY29sb3I6SGlnaGxpZ2h0O291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtc3R5bGU6YXV0bztvdXRsaW5lLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7b3V0'@; put 'bGluZS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKX0uY2xyLXRleHRhcmVhOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFs'@; put 'bG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dGFyZWEtZGlzYWJsZWQtYmFja2dyb3VuZCk7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItZGlzYWJsZWQtY29sb3IpfS5jbHItc3VjY2VzcyAuY2xyLXRleHRhcmVhe2JvcmRlci1jb2xvcjp2YXIo'@; put 'LS1jbHItZm9ybXMtdmFsaWQtY29sb3IpO291dGxpbmUtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKX0uY2xyLWVycm9yIC5jbHItdGV4dGFyZWF7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKTtvdXRsaW5lLWNvbG9yOnZhcigtLWNsci1mb3Jt'@; put 'cy1pbnZhbGlkLWNvbG9yKX0uY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhe3dpZHRoOmF1dG99LmNsci1mb3JtLWNvbnRyb2wucm93IC5jbHItdGV4dGFyZWEtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSl9LmNsci1mb3JtLWNv'@; put 'bXBhY3QgLmNsci10ZXh0YXJlYS13cmFwcGVye21hcmdpbi10b3A6MH0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXRleHRhcmVhLXdyYXBwZXIgLmNsci10ZXh0YXJlYXttYXgtd2lkdGg6MTAwJX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXRleHRhcmVhLXdyYXBwZXIgLmNsci10ZXh0YXJlYX4u'@; put 'Y2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci10b2dnbGUtYmctY29sb3Itb2ZmOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbCk7LS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uOnZhcigtLWNkcy1hbGlh'@; put 'cy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItdG9nZ2xlLWhhbmRsZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQpOy0tY2xyLXRvZ2dsZS1oYW5kbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb2ZmKTstLWNsci10'@; put 'b2dnbGUtaGFuZGxlLWJvcmRlci1jb2xvci1vbjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uKTstLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItdG9nZ2xl'@; put 'LWRpc2FibGVkLWRlZmF1bHQtaGFuZGxlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCk7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7'@; put 'LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1iZy1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtaGFuZGxlLWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb2ZmLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJv'@; put 'cmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYmctY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0'@; put 'LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcil9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXstd2Via2l0LWFwcGVhcmFu'@; put 'Y2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0uY2xyLXRvZ2dsZS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9i'@; put 'YWwtc3BhY2UtNik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7anVzdGlmeS1jb250ZW50OnN0YXJ0O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdG9nZ2xlLXdyYXBwZXIgbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y3Vy'@; put 'c29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7ZmxleDoxIDEgYXV0b30uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hde3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNk'@; put 'cy1nbG9iYWwtc3BhY2UtMTApO2ZsZXg6MCAwIGF1dG87Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMjAwKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfS5jbHIt'@; put 'dG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkgc29saWQgdmFyKC0tY2xyLXRvZ2dsZS1i'@; put 'Zy1jb2xvci1vZmYpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTIwMCk7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9n'@; put 'Z2xlLWJnLWNvbG9yLW9mZik7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2ti'@; put 'b3hdOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkgc29saWQgdmFyKC0tY2xyLXRvZ2dsZS1oYW5kbGUtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVz'@; put 'OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0zMDApO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1oYW5kbGUtYmctY29sb3IpO2xlZnQ6MDtyaWdodDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2Jh'@; put 'bC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6cmlnaHQsbGVmdH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9'@; put 'Y2hlY2tib3hdOmZvY3Vze291dGxpbmU6MH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzOmJlZm9yZXtvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSk7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmct'@; put 'Y29sb3I7b3V0bGluZS1vZmZzZXQ6Y2FsYygzKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uKTtiYWNrZ3Jv'@; put 'dW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb24pO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LmNsci10b2dnbGUtd3Jh'@; put 'cHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFmdGVye2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWhhbmRsZS1ib3JkZXItY29sb3Itb24pO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24t'@; put 'cHJvcGVydHk6cmlnaHQsbGVmdDtsZWZ0OmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKTtyaWdodDowfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWx7Y3Vyc29yOm5vdC1hbGxv'@; put 'd2VkfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQ6bm90KDpjaGVja2VkKXtsZWZ0OjB9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpkaXNhYmxlZDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xl'@; put 'LWRpc2FibGVkLW9mZi1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb2ZmLWJvcmRlci1jb2xvcil9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpkaXNhYmxlZDphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10'@; put 'b2dnbGUtZGlzYWJsZWQtb2ZmLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtaGFuZGxlLWJvcmRlci1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2xyLXRv'@; put 'Z2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6ZGlzYWJsZWQ6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJnLWNv'@; put 'bG9yKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6ZGlzYWJsZWQ6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb24taGFuZGxlLWJvcmRlci1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7'@; put 'd2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2xyLXRvZ2dsZS13cmFwcGVyLmRpc2FibGVkIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXRvZ2dsZS13cmFwcGVyLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YmVmb3Jle2JvcmRlci1jb2xvcjp2'@; put 'YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJnLWNvbG9yKX0uY2xyLXRvZ2dsZS13cmFwcGVyLnJpZ2h0LWxhYmVse2ZsZXgtZmxvdzpyb3ctcmV2ZXJzZX0uY2xyLXRvZ2dsZS13'@; put 'cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUt'@; put 'aGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgMDttYXJn'@; put 'aW4tdG9wOjB9LmNsci1jb250cm9sLWlubGluZSAuY2xyLXRvZ2dsZS13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6MH0uY2xyLXRvZ2dsZS1yaWdodCAuY2xyLXRvZ2dsZS13cmFwcGVye2ZsZXgtZmxvdzpyb3ctcmV2ZXJzZX0u'@; put 'Y2xyLXRvZ2dsZS1yaWdodCBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLXJhbmdlLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2hlaWdodDp2YXIoLS1jbHItZm9ybXMt'@; put 'cmFuZ2UtdGh1bWItaGVpZ2h0KTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNsci1yYW5nZS13cmFwcGVyIC5maWxsLWlucHV0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7cG9pbnRl'@; put 'ci1ldmVudHM6bm9uZTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjEwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO2JvcmRlci1z'@; put 'dHlsZTpub25lfS5jbHItcmFuZ2V7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6ZmxleC1lbmQ7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfS5jbHItcmFuZ2U6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6YXV0bztjdXJz'@; put 'b3I6bm90LWFsbG93ZWQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bGVmdDowO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2staGVpZ2h0KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvci1kaXNhYmxlZCl9LmNsci1yYW5nZTpkaXNh'@; put 'YmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0KS8yIC0gdmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCkvMiArIHZhcigtLWNs'@; put 'ci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItd2lkdGgpKSk7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxlZCk7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQp'@; put 'O3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfS5jbHItcmFuZ2U6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdGh1bWJ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xv'@; put 'ci1kaXNhYmxlZCk7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfS5jbHItcmFuZ2U6ZGlzYWJsZWQrLmZpbGwtaW5wdXR7cG9pbnRlci1ldmVudHM6YXV0bztjdXJzb3I6bm90LWFsbG93'@; put 'ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxlZCl9aW5wdXRbdHlwZT1yYW5nZV17cGFkZGluZzowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNr'@; put 'LWhlaWdodCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IpO2JvcmRlcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLWNvbG9yKTtib3JkZXIt'@; put 'cmFkaXVzOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKX1pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1'@; put 'bWItaGVpZ2h0KS8yIC0gdmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCkvMiArIHZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItd2lkdGgpKSk7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3Mt'@; put 'ZmlsbC1jb2xvcik7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfWlucHV0W3R5cGU9cmFuZ2VdOmRpc2FibGVke2JvcmRlcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVy'@; put 'LXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLWNvbG9yLWRpc2FibGVkKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKX1pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10aHVtYntib3JkZXI6'@; put 'MDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRodW1iLWhlaWdodCk7d2lkdGg6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRodW1iLWhlaWdodCl9'@; put 'QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItcmFuZ2Utd3JhcHBlciAuZmlsbC1pbnB1dHtkaXNwbGF5Om5vbmV9LmNsci1yYW5nZS13cmFwcGVyLnByb2dyZXNzLWZpbGwgaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2Vye2hlaWdodDp2YXIoLS1jbHItZm9ybXMt'@; put 'cmFuZ2UtdHJhY2staGVpZ2h0KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yKX1pbnB1dFt0eXBlPXJhbmdlXXtib3JkZXI6MDttYXJnaW46MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtsZWZ0OjA7aGVpZ2h0OnZhcigtLWNsci1m'@; put 'b3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9aW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFja3ttYXJnaW46MDtib3JkZXI6MDtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7Y3Vyc29yOnBvaW50ZXI7YmFja2dy'@; put 'b3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IpfWlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWJ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcik7aGVp'@; put 'Z2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfX1fOi1tcy1mdWxsc2NyZWVuIC5jbHItcmFuZ2Utd3JhcHBlciAuZmlsbC1pbnB1dCw6cm9vdCAuY2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5w'@; put 'dXR7ZGlzcGxheTpub25lfV86LW1zLWZ1bGxzY3JlZW4gLmNsci1yYW5nZS13cmFwcGVyLnByb2dyZXNzLWZpbGwgaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2VyLDpyb290IC5jbHItcmFuZ2Utd3JhcHBlci5wcm9ncmVzcy1maWxsIGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmls'@; put 'bC1sb3dlcntoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcil9XzotbXMtZnVsbHNjcmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRvb2x0aXAsOnJvb3Qg'@; put 'aW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10b29sdGlwe3Zpc2liaWxpdHk6aGlkZGVufV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRbdHlwZT1yYW5nZV0sOnJvb3QgaW5wdXRbdHlwZT1yYW5nZV17Ym9yZGVyOjA7bWFyZ2luOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bGVmdDowO2hlaWdodDp2'@; put 'YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFjayw6cm9vdCBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNre2JvcmRlcjowO21hcmdpbjowO2hl'@; put 'aWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2staGVpZ2h0KTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvcil9XzotbXMtZnVsbHNjcmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iLDpyb290IGlucHV0'@; put 'W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWJ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcik7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigt'@; put 'LWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfWlucHV0W2NsckRhdGFsaXN0SW5wdXRde3Bvc2l0aW9uOnJlbGF0aXZlfWlucHV0W2NsckRhdGFsaXN0SW5wdXRdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7b3BhY2l0eTowO2N1cnNvcjp0ZXh0fS5jbHItaW5wdXQt'@; put 'Z3JvdXAgaW5wdXRbY2xyRGF0YWxpc3RJbnB1dF17ei1pbmRleDoyfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1kYXRhbGlzdC1jYXJldHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjUlO3JpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWRhdGFsaXN0'@; put 'LWNhcmV0LWNvbG9yKTtjdXJzb3I6dGV4dDtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLWRhdGFsaXN0LWNhcmV0LWljb24tc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLWZvcm1zLWRhdGFsaXN0LWNhcmV0LWljb24tc2l6ZSl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1kYXRhbGlzdC1j'@; put 'YXJldHtjb2xvcjp2YXIoLS1jbHItZm9ybXMtZGF0YWxpc3QtY2FyZXQtZGlzYWJsZWQtY29sb3IpfWNsci1kYXRhbGlzdC1jb250YWluZXIgLmNsci1pbnB1dC1ncm91cHtwYWRkaW5nLXJpZ2h0OjB9LmNsci1pbnB1dC13cmFwcGVyIGlucHV0W2NsclBhc3N3b3JkXStidXR0b24uY2xyLWlu'@; put 'cHV0LWdyb3VwLWljb24tYWN0aW9uIC5jbHItcGFzc3dvcmQtZXllLWljb257Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXBhc3N3b3JkLWV5ZS1pY29uLWNvbG9yKX0uY2xyLWlucHV0LXdyYXBwZXIgaW5wdXRbY2xyUGFzc3dvcmRdK2J1dHRvbi5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb25b'@; put 'ZGlzYWJsZWRdIC5jbHItcGFzc3dvcmQtZXllLWljb257ZmlsbDp2YXIoLS1jbHItZm9ybXMtcGFzc3dvcmQtZGlzYWJsZWQtZXllLWljb24tY29sb3IpfS5jbHItaW5wdXQtd3JhcHBlciBpbnB1dFtjbHJQYXNzd29yZF1bZGlzYWJsZWRde2NvbG9yOnZhcigtLWNsci1mb3Jtcy1wYXNzd29y'@; put 'ZC1kaXNhYmxlZC1leWUtaWNvbi1jb2xvcil9LmNsci1udW1iZXItaW5wdXQtd3JhcHBlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7bWF4LWhlaWdodDp2YXIoLS1jbHItZm9ybXMtaW5wdXQtd3JhcHBlci1oZWlnaHQpfS5jbHItbnVtYmVyLWlucHV0LXdyYXBw'@; put 'ZXIgLmNsci1udW1iZXItaW5wdXR7LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZH0uY2xyLW51bWJlci1pbnB1dC13cmFwcGVyIC5jbHItbnVtYmVyLWlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLC5jbHItbnVtYmVyLWlucHV0LXdyYXBwZXIgLmNsci1udW1iZXItaW5wdXQ6Oi13'@; put 'ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LmNsci1udW1iZXItaW5wdXQtd3JhcHBlciAuY2xyLW51bWJlci1pbnB1dC1zZXBhcmF0b3J7YmFja2dyb3VuZDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7d2lkdGg6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2xyLW51bWJlci1pbnB1dC13cmFwcGVyIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257aGVpZ2h0OmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSAtIHZhcigtLWNkcy1h'@; put 'bGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkpO3dpZHRoOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSAtIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkpO3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5jbHItbnVtYmVyLWlucHV0'@; put 'LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcil9LmNsci1udW1iZXItaW5wdXQtd3JhcHBlciAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0'@; put 'aW9uOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmUpfS5jbHItbnVtYmVyLWlucHV0LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnVu'@; put 'c2V0fTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWNhbGVuZGFyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItY2FsZW5kYXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTst'@; put 'LWNsci1jYWxlbmRhci1vcHRpb24tdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1jYWxlbmRhci1hY3RpdmUtb3B0aW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGln'@; put 'aGxpZ2h0KTstLWNsci1jYWxlbmRhci1yYW5nZS1jZWxsLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci1jYWxlbmRhci1idG4tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlv'@; put 'bi1jb2xvcik7LS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJv'@; put 'cmRlci1jb2xvcik7LS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1jYWxlbmRhci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yOnZh'@; put 'cigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1oaWdobGlnaHQpOy0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItY2FsZW5kYXItYnRuLXBpY2tlci10cmlnZ2VyLWNvbG9y'@; put 'OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3IpOy0tY2xyLWNhbGVuZGFyLWJ0bi1waWNrZXItdHJpZ2dlci1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhvdmVyKTstLWNsci1jYWxlbmRhci1idG4tcGlja2VyLXRyaWdnZXIt'@; put 'YWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3IpOy0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXIpOy0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zl'@; put 'ci1mb2N1cy1jb2xvci10ZXh0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWNhbGVuZGFyLWJ0'@; put 'bi1hY3RpdmUtY29sb3ItYmc6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItY2FsZW5kYXItd2Vla2RheS1mb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zKTstLWNsci1jYWxlbmRhci10b2Rh'@; put 'eS1kYXRlLWNlbGwtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci1jYWxlbmRhci1waWNrZXItYnRuLWZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTYpOy0tY2xyLWNhbGVuZGFy'@; put 'LXBpY2tlci1idG4tZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmRhdGVwaWNrZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJn'@; put 'aW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOmNhbGMoKDcqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkpICsgKDIqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSkgKyAoMip2YXIoLS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWJvcmRlci13aWR0aC0xMDApKSk7aGVpZ2h0OmNhbGMoKDgqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkpICsgKDIqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSkgKyAoMip2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKSArIDYqdmFyKC0tY2RzLWdsb2Jh'@; put 'bC1zcGFjZS0zKSk7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWNhbGVuZGFyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIo'@; put 'LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtib3gtc2hhZG93OnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTEwMCk7ei1pbmRleDoxMDUwfS5kYXRlcGlja2VyIC5kYXRlcGlja2VyLXZpZXctbWFuYWdlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29s'@; put 'dW1uO3Jvdy1nYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTt3aWR0aDpjYWxjKDcqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkpfS5kYXRlcGlja2VyLmhhcy1yYW5nZS1vcHRpb257d2lkdGg6Y2FsYygoNyp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSkgKyAoMip2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXNwYWNlLTcpKSArICgyKnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkpICsgMTUwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSArIDIqdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lk'@; put 'dGgtMTAwKSl9LmRhdGVwaWNrZXIuaGFzLWFjdGlvbi1idXR0b25ze2hlaWdodDpjYWxjKCg4KnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpKSArICgyKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykpICsgKDIqdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSkgKyA2'@; put 'KnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgKyB2YXIoLS1jbHItYnRuLWhlaWdodCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSk7cm93LWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5kYXRlcGlja2VyIC5kYXRlcGlja2Vy'@; put 'LWFjdGlvbnN7bWluLXdpZHRoOjEwMCU7aGVpZ2h0OmNhbGModmFyKC0tY2xyLWJ0bi1oZWlnaHQpICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSk7ZGlzcGxheTpmbGV4O2JvcmRlci10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0'@; put 'LWNvbnRhaW5lci1ib3JkZXItY29sb3IpO2p1c3RpZnktY29udGVudDplbmQ7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtnYXA6dmFyKC0tY2xyLWJ0bi1ob3Jpem9udGFsLW1hcmdpbil9LmRhdGVwaWNrZXIgLmRhdGVwaWNrZXItYWN0aW9ucyBidXR0b257bWFyZ2lu'@; put 'OjB9LmNsci1kYXRlLXJhbmdlLXBpY2tlci1uYXZ7d2lkdGg6Y2FsYygxNTAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7aGVpZ2h0OjEwMCV9LmNhbGVuZGFyLWhlYWRlcntkaXNw'@; put 'bGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOmNhbGMoNyp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSl9LmNhbGVuZGFyLXN3aXRjaGVycywueWVhci1zd2l0Y2hlcnN7ZGlzcGxheTpmbGV4fS55ZWFyLXN3aXRjaGVyc3tm'@; put 'bGV4OjAgMCBhdXRvO2FsaWduLXNlbGY6Y2VudGVyO3dpZHRoOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkqMyl9LmNhbGVuZGFyLXRhYmxle2ZsZXg6MSAxIGF1dG87Ym9yZGVyLXNwYWNpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3dpZHRoOjEwMCV9dGQuY2FsZW5k'@; put 'YXItY2VsbCx0ZC5jYWxlbmRhci10YWJsZSAuY2FsZW5kYXItY2VsbHtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttaW4td2lkdGg6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS0xMSk7cGFkZGluZzowO3RleHQtYWxpZ246Y2VudGVyfS5kYXl7ZGlzcGxheTppbmxpbmV9LndlZWtkYXlze2ZsZXg6MCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpfS53ZWVrZGF5e2ZvbnQtc2l6ZTp2YXIoLS1jbHItY2FsZW5kYXItd2Vla2RheS1mb250LXNp'@; put 'emUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyl9LmNhbGVuZGFyLWJ0bntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttaW4td2lkdGg6dmFyKC0t'@; put 'Y2RzLWdsb2JhbC1zcGFjZS0xMSk7cGFkZGluZzowO21hcmdpbjowIWltcG9ydGFudDtjb2xvcjppbmhlcml0O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1z'@; put 'aXplOnZhcigtLWNsci1jYWxlbmRhci1waWNrZXItYnRuLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWNhbGVuZGFyLXBpY2tlci1idG4tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRl'@; put 'ci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpfS5jYWxlbmRhci1idG4uaW4tcmFuZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItcmFuZ2UtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmFkaXVzOjB9LmNhbGVu'@; put 'ZGFyLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3IpfS5jYWxlbmRhci1idG46Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwKSBzb2xpZCAycHg7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTIpKTtiYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcil9LmNhbGVuZGFyLWJ0bjphY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWFjdGl2ZS1jb2xvci1iZyl9LmRheS1i'@; put 'dG57aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3BhZGRpbmc6MDttYXJnaW46MCFp'@; put 'bXBvcnRhbnQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9u'@; put 'dC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7'@; put 'd2lkdGg6MTAwJTtjb2xvcjppbmhlcml0fS5kYXktYnRuLmluLXJhbmdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLXJhbmdlLWNlbGwtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czowfS5kYXktYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0'@; put 'bi1ob3Zlci1mb2N1cy1jb2xvcil9LmRheS1idG46Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwKSBzb2xpZCAycHg7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpKTtiYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1v'@; put 'YmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcil9LmRheS1idG46YWN0aXZle2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3ItYmcpfS5kYXktYnRuOmhvdmVye2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3It'@; put 'dGV4dCl9LmRheS1idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tYWN0aXZlLWNvbG9yKX0uZGF5LWJ0bi5pcy10b2RheXtjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSBz'@; put 'b2xpZCB2YXIoLS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWJvcmRlci1jb2xvcik7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUtY2VsbC1mb250LXdlaWdodCl9LmRheS1idG4uaXMtc2VsZWN0ZWQsLmRheS1idG4uaXMtc3RhcnQtcmFuZ2UsLmRheS1i'@; put 'dG4uaXMtZW5kLXJhbmdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1jb2xvcil9LmRheS1idG4uaXMtc3RhcnQtcmFuZ2U6bm90KC5pcy1lbmQtcmFuZ2Upe2Jv'@; put 'cmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZGF5LWJ0bi5pcy1lbmQtcmFuZ2U6bm90KC5pcy1zdGFydC1yYW5nZSl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZGF5LWJ0bi5pcy1zZWxl'@; put 'Y3RlZDpmb2N1c3tiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yKX0uZGF5LWJ0bi5pcy1leGNsdWRlZHtkaXNwbGF5Om5vbmV9LmRheS1idG4uaXMtZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRl'@; put 'cmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7cG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kOjAgMH0uY2FsZW5kYXItcGlja2Vyc3tkaXNwbGF5OmZsZXh9LnN3aXRjaGVye2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tY29sb3IpfS5zd2l0Y2hlcjpob3Zlcntjb2xvcjp2YXIoLS1j'@; put 'bHItY2FsZW5kYXItYnRuLWhvdmVyLWZvY3VzLWNvbG9yLXRleHQpfS5zd2l0Y2hlcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3IpfS5zd2l0Y2hlciBjZHMtaWNvbiwuc3dpdGNoZXIgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3Bh'@; put 'Y2UtOCk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KX0ubW9udGhwaWNrZXItdHJpZ2dlciwueWVhcnBpY2tlci10cmlnZ2Vye3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMpO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tcGlja2VyLXRyaWdnZXItY29sb3IpO3Rl'@; put 'eHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubW9udGhwaWNrZXItdHJpZ2dlci55ZWFyLXJhbmdlLC55ZWFycGlja2VyLXRyaWdnZXIueWVhci1yYW5nZXt3aWR0aDp1bnNldDthbGlnbi1jb250ZW50OmNl'@; put 'bnRlcjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9Lm1vbnRocGlja2VyLC55ZWFycGlja2Vye21pbi1oZWlnaHQ6Y2FsYyg2KnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIpKX0ubW9udGhwaWNrZXIsLnllYXJwaWNrZXIsLmRheXBpY2tlcntkaXNwbGF5OmZsZXg7ZmxleC13'@; put 'cmFwOndyYXA7cm93LWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2hlaWdodDpjYWxjKDkqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgKyAzKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpO3dpZHRoOmNhbGMoNyp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSl9LnllYXJze2Zs'@; put 'ZXgtZGlyZWN0aW9uOnJvd30ubW9udGgsLnllYXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3Bh'@; put 'Y2UtMTEpO3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO21hcmdpbjowIWltcG9ydGFudDtjb2xvcjppbmhlcml0O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBv'@; put 'aW50ZXI7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt'@; put 'c2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKTt3aWR0aDpjYWxjKC41KmNhbGMoKDcqdmFyKC0tY2RzLWdsb2JhbC1z'@; put 'cGFjZS0xMSkpICsgKDIqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSkgKyAoMip2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpIC0gdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSl9Lm1v'@; put 'bnRoOmhvdmVyLC55ZWFyOmhvdmVye2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3ItdGV4dCl9Lm1vbnRoOmFjdGl2ZSwueWVhcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3IpfS5tb250aC5pcy10b2RheSwueWVh'@; put 'ci5pcy10b2RheXtjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSBzb2xpZCB2YXIoLS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWJvcmRlci1jb2xvcik7Zm9udC13ZWlnaHQ6dmFyKC0t'@; put 'Y2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUtY2VsbC1mb250LXdlaWdodCl9Lm1vbnRoLmlzLXNlbGVjdGVkLC5tb250aC5pcy1zdGFydC1yYW5nZSwubW9udGguaXMtZW5kLXJhbmdlLC55ZWFyLmlzLXNlbGVjdGVkLC55ZWFyLmlzLXN0YXJ0LXJhbmdlLC55ZWFyLmlzLWVuZC1yYW5nZXtiYWNr'@; put 'Z3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtY29sb3IpfS5tb250aC5pcy1zdGFydC1yYW5nZTpub3QoLmlzLWVuZC1yYW5nZSksLnllYXIuaXMtc3RhcnQtcmFuZ2U6bm90'@; put 'KC5pcy1lbmQtcmFuZ2Upe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ubW9udGguaXMtZW5kLXJhbmdlOm5vdCguaXMtc3RhcnQtcmFuZ2UpLC55ZWFyLmlzLWVuZC1yYW5nZTpub3QoLmlzLXN0YXJ0LXJhbmdlKXtib3JkZXItdG9wLWxl'@; put 'ZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5tb250aC5pcy1zZWxlY3RlZDpmb2N1cywueWVhci5pcy1zZWxlY3RlZDpmb2N1c3tiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yKX0ubW9udGguaXMt'@; put 'ZGlzYWJsZWQsLnllYXIuaXMtZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7cG9pbnRlci1ldmVudHM6bm9uZX0ubW9udGguaXMtZGlzYWJsZWQ6aG92ZXIsLnllYXIuaXMtZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDow'@; put 'IDB9Lm1vbnRocywueWVhcnN7cm93LWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2ZsZXgtd3JhcDp3cmFwO2Rpc3BsYXk6ZmxleH0ubW9udGh7dGV4dC1hbGlnbjpjZW50ZXI7aGVpZ2h0OmNhbGMoNSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKTt3aGl0ZS1zcGFjZTpub3dyYXA7'@; put 'b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnllYXJ7dGV4dC1hbGlnbjpjZW50ZXJ9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItY29tYm9ib3gtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1jb21ib2JveC1pbnB1'@; put 'dC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtdGludCk7LS1jbHItY29tYm9ib3gtcGlsbC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCk7LS1jbHItY29tYm9i'@; put 'b3gtcGlsbC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLWNvbWJvYm94LXBpbGwtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWNvbWJvYm94LWZpbHRlci1oaWdobGlnaHQ6dmFyKC0t'@; put 'Y2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItY29tYm9ib3gtbWluLXdpZHRoOmNhbGMoMTY4ICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItY29tYm9ib3gtbXVsdGktbWluLXdpZHRoOmNhbGMoMzYwICogKDFy'@; put 'ZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItY29tYm9ib3gtbWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLWNvbWJvYm94LWZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7LS1jbHItY29t'@; put 'Ym9ib3gtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7LS1jbHItY29tYm9ib3gtdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXM6dmFy'@; put 'KC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItY29tYm9ib3gtcGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7LS1jbHItY29tYm9ib3gtdHJpZ2dlci1wYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTstLWNsci1jb21i'@; put 'b2JveC10cmlnZ2VyLXBhZGRpbmctcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTstLWNsci1jb21ib2JveC10cmlnZ2VyLWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpOy0tY2xyLWNvbWJvYm94LXRyaWdnZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWlu'@; put 'dGVyYWN0aW9uLWNvbG9yKTstLWNsci1jb21ib2JveC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItY29tYm9ib3gtYWN0aXZlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9i'@; put 'amVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItY29tYm9ib3gtcGlsbC1wYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTstLWNsci1jb21ib2JveC1waWxsLW1hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIHZhcigtLWNkcy1nbG9iYWwtc3Bh'@; put 'Y2UtMykgMCAwOy0tY2xyLWNvbWJvYm94LXBpbGwtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItY29tYm9ib3gtcGlsbC1yZW1vdmUtaWNvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1jb21ib2JveC1jYXJldC1p'@; put 'Y29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1jb21ib2JveC1waWxsLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCl9LmNsci1jb21ib2JveC1mb3JtLWNvbnRyb2x7YWxpZ24taXRlbXM6c3RyZXRjaH0uY2xyLWNv'@; put 'bWJvYm94LWZvcm0tY29udHJvbCAuY2xyLWVycm9yIC5jbHItdmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItZm9jdXMtaW5kaWNhdG9ye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIp'@; put 'O3dpZHRoOjA7dHJhbnNpdGlvbjp3aWR0aCAuMnMgZWFzZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTtsZWZ0OjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItY29tYm9ib3gtYm9yZGVyLXJhZGl1cyk7Ym9y'@; put 'ZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXMpfS5jbHItZm9jdXN7d2lkdGg6MTAwJX0uY2xyLWVycm9yIC5jbHItZm9jdXMtaW5kaWNhdG9ye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpfS5jbHIt'@; put 'Y29tYm9ib3gtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjAgY2FsYyh2YXIoLS1jbHItY29tYm9ib3gtdHJpZ2dlci1nYXApICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSArIHZhcigtLWNsci1jb21ib2JveC10cmlnZ2VyLXBhZGRpbmctcmlnaHQpKSAwIHZhcigtLWNs'@; put 'ci1jb21ib2JveC10cmlnZ2VyLXBhZGRpbmctbGVmdCk7bWluLWhlaWdodDp2YXIoLS1jbHItY29tYm9ib3gtbWluLWhlaWdodCk7bWluLXdpZHRoOnZhcigtLWNsci1jb21ib2JveC1taW4td2lkdGgpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItY29tYm9ib3gtZm9udC1zaXplKTtmb250LXdlaWdo'@; put 'dDp2YXIoLS1jbHItY29tYm9ib3gtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OmNhbGMoMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdp'@; put 'ZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtaW5wdXQtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXdpZHRoOnZhcigtLWNk'@; put 'cy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jb21ib2JveC1ib3JkZXItcmFkaXVzKX0uY2xyLWNvbWJvYm94LXdyYXBw'@; put 'ZXIgLmNsci1pbnB1dHtwYWRkaW5nOjA7bWF4LWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWlucHV0Om5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWNsci1jb21ib2JveC10ZXh0LWNvbG9yKX0uY2xyLWNvbWJvYm94LXdyYXBw'@; put 'ZXIubXVsdGl7bWluLXdpZHRoOm1pbih2YXIoLS1jbHItY29tYm9ib3gtbXVsdGktbWluLXdpZHRoKSwxMDAlKTtwYWRkaW5nLWJvdHRvbTpjYWxjKDMqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWlucHV0LmNsci1jb21ib2JveC1p'@; put 'bnB1dDpmb2N1c3tiYWNrZ3JvdW5kOjAgMH0uY2xyLWNvbWJvYm94LXdyYXBwZXIuaW52YWxpZHtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmNsci1jb21ib2JveC1pbnB1dHtiYWNrZ3JvdW5kOjAgMDti'@; put 'b3JkZXItYm90dG9tOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWNvbWJvYm94LXJlbW92ZS1idG57YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O3BhZGRpbmc6MDtjb2xvcjp2YXIoLS1jbHIt'@; put 'Y29tYm9ib3gtcGlsbC1yZW1vdmUtaWNvbi1jb2xvcil9LmNsci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxse2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9n'@; put 'cmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7aGVpZ2h0OnZhcigt'@; put 'LWNsci1jb21ib2JveC1waWxsLWhlaWdodCk7bWFyZ2luOnZhcigtLWNsci1jb21ib2JveC1waWxsLW1hcmdpbik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKTti'@; put 'b3JkZXItc3R5bGU6c29saWQ7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jb21ib2JveC1waWxsLWJvcmRlci1jb2xvcik7cGFkZGluZzp2YXIoLS1jbHItY29tYm9i'@; put 'b3gtcGlsbC1wYWRkaW5nKX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgLmNsci1jb21ib2JveC1waWxsLWNvbnRlbnR7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMt'@; put 'YWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yKTtwYWRkaW5nOjB9LmNsci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxsIGNkcy1pY29uLC5jbHItY29tYm9ib3gtd3JhcHBlciAu'@; put 'bGFiZWwtY29tYm9ib3gtcGlsbCBjbHItaWNvbnttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSl9LmNsci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxsIGNkcy1pY29uW3NoYXBlPXdpbmRvdy1jbG9zZV0sLmNsci1jb21ib2JveC13cmFw'@; put 'cGVyIC5sYWJlbC1jb21ib2JveC1waWxsIGNsci1pY29uW3NoYXBlPXdpbmRvdy1jbG9zZV17Y29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtZm9udC1jb2xvcil9LmNsci1jb21ib2JveC13cmFwcGVyIC5jbHItY29tYm9ib3gtaW5wdXQtd3JhcHBlcntib3JkZXI6MDtiYWNrZ3JvdW5k'@; put 'OjAgMH0uY2xyLWNvbWJvYm94LXdyYXBwZXI6bm90KC5kaXNhYmxlZCk6aG92ZXIsLmNsci1jb21ib2JveC13cmFwcGVyOmZvY3VzLXdpdGhpbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb21ib2JveC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWNvbWJvYm94LXRyaWdnZXJ7'@; put 'cGFkZGluZy1sZWZ0OnZhcigtLWNsci1jb21ib2JveC10cmlnZ2VyLXBhZGRpbmctbGVmdCk7cGFkZGluZy1yaWdodDp2YXIoLS1jbHItY29tYm9ib3gtdHJpZ2dlci1wYWRkaW5nLXJpZ2h0KTttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2Jh'@; put 'Y2tncm91bmQ6MCAwO2JvcmRlcjowO2NvbG9yOmN1cnJlbnRDb2xvcjtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjB9LmNsci1jb21ib2JveC10cmlnZ2VyOmRpc2FibGVke2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQpfS5jbHItY29tYm9i'@; put 'b3gtdHJpZ2dlcjpkaXNhYmxlZCBjZHMtaWNvbltzaGFwZT1hbmdsZV0sLmNsci1jb21ib2JveC10cmlnZ2VyOmRpc2FibGVkIGNsci1pY29uW3NoYXBlPWFuZ2xlXXtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKX0uY2xyLWNvbWJvYm94'@; put 'LXRyaWdnZXIgY2RzLWljb25bc2hhcGU9YW5nbGVdLC5jbHItY29tYm9ib3gtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZV17Y29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXRyaWdnZXItZm9udC1jb2xvcik7aGVpZ2h0OnZhcigtLWNsci1jb21ib2JveC1jYXJldC1pY29uLXNpemUpO3dp'@; put 'ZHRoOnZhcigtLWNsci1jb21ib2JveC1jYXJldC1pY29uLXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLWNvbWJvYm94LWNhcmV0LWljb24tc2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1jb21ib2JveC1jYXJldC1pY29uLXNpemUpfS5jbHItY29tYm9ib3gtb3B0aW9uc3tkaXNwbGF5OmZs'@; put 'ZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDttaW4td2lkdGg6Y2FsYygxMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7YmFja2dy'@; put 'b3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYmctY29sb3IpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJvcmRlci1jb2xvcik7Ym9yZGVy'@; put 'LXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtib3gtc2hhZG93OnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTIwMCk7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02'@; put 'KSAwO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MTA1MDtwb3NpdGlvbjpzdGF0aWM7bWF4LWhlaWdodDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7b3ZlcmZsb3cteTphdXRvO3Zpc2liaWxpdHk6dmlzaWJsZX0uY2xyLWNvbWJvYm94LW9wdGlvbnMgLmNsci1j'@; put 'b21ib2JveC1vcHRpb25zLWxvYWRpbmd7cGFkZGluZzpjYWxjKDMqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSl9LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9ucy1sb2FkaW5nIC5jbHItY29tYm9ib3gtb3B0'@; put 'aW9ucy1sb2FkaW5nLXRleHR7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCl9LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9ucy1lbXB0eS10ZXh0e3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5jbHItY29tYm9ib3gt'@; put 'b3B0aW9ue2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2lu'@; put 'Zzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWJnLWNvbG9yKTtib3JkZXI6MDtjdXJzb3I6cG9pbnRl'@; put 'cjtkaXNwbGF5OmZsZXg7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDphdXRvO21hcmdpbjowO3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5hY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWRyb3Bk'@; put 'b3duLWl0ZW0tc2VsZWN0ZWQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtYmctY29sb3IpfS5jbHItY29tYm9ib3gtb3B0aW9uOmhvdmVye2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWhvdmVyLWNvbG9yKTtiYWNrZ3JvdW5k'@; put 'LWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWhvdmVyLWJnLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbjpob3Zlci5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1ob3Zlci1iZy1jb2xv'@; put 'cil9LmNsci1jb21ib2JveC1vcHRpb246YWN0aXZle2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtYmctY29sb3IpfS5jbHItY29tYm9ib3gtb3B0aW9uOmFjdGl2ZS5hY3Rp'@; put 'dmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5jbHItY29tYm9ib3gtb3B0aW9uOmZvY3Vze3otaW5kZXg6aW5oZXJpdH0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZCwuY2xyLWNvbWJvYm94LW9wdGlvbjpk'@; put 'aXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWRpc2FibGVkLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWRpc2FibGVkLWJnLWNvbG9yKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1z'@; put 'ZWxlY3Q6bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZDpob3ZlciwuY2xyLWNvbWJvYm94LW9wdGlvbjpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZDphY3RpdmUsLmNsci1jb21ib2JveC1vcHRpb246ZGlzYWJsZWQ6'@; put 'YWN0aXZle2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5jbHItZm9jdXN7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtYWN0aXZlLWJhY2tncm91bmQtY29sb3IpfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94'@; put 'LW9wdGlvbntwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KXsuY2xyLWNvbWJvYm94LW9wdGlvbnMgLmNsci1jb21ib2JveC1vcHRpb257cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpIHZhcigtLWNk'@; put 'cy1nbG9iYWwtc3BhY2UtOSl9fS5jbHItY29tYm9ib3gtZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWNvbWJvYm94LWRpc2FibGVkIC5jbHItY29tYm9ib3gtaW5wdXQsLmNsci1jb21ib2JveC1kaXNh'@; put 'YmxlZCAuY2xyLWNvbWJvYm94LXJlbW92ZS1idG4sLmNsci1jb21ib2JveC1kaXNhYmxlZCAuY2xyLWNvbWJvYm94LXRyaWdnZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZmlsdGVyLWhpZ2hsaWdodCBie2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdl'@; put 'aWdodC1zZW1pYm9sZCk7Y29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LWZpbHRlci1oaWdobGlnaHQpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7LS1jbHItc3RhY2stdmlldy1i'@; put 'b3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1zdGFjay1ibG9jay1jaGFuZ2VkLWJvcmRlci10b3AtY29sb3I6'@; put 'dmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXRpdGxlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItc3RhY2stdmlldy1yb3ctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAw'@; put 'KTstLWNsci1zdGFjay12aWV3LXJvdy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLXN0'@; put 'YWNrLXZpZXctZXhwYW5kYWJsZS1yb3ctYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWhvdmVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIp'@; put 'Oy0tY2xyLXN0YWNrLXZpZXctZXhwYW5kYWJsZS1yb3ctYmctaG92ZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWFjdGl2ZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0'@; put 'aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1iZy1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItc3RhY2stdmlldy1leHBhbmRlZC1yb3ctY29sb3I6dmFyKC0tY2RzLWFsaWFz'@; put 'LW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1zZWxlY3RlZCk7LS1jbHItc3RhY2stdmlldy1leHBhbmRlZC1yb3ctYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGVkLWhvdmVyLXJv'@; put 'dy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLXN0YWNrLXZpZXctZXhwYW5kZWQtYWN0aXZlLXJvdy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQt'@; put 'c2VsZWN0ZWQtYWN0aXZlKTstLWNsci1zdGFjay12aWV3LXJvdy1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7LS1jbHItc3RhY2stdmlldy1yb3ctZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5'@; put 'LWZvbnQtd2VpZ2h0KTstLWNsci1zdGFjay12aWV3LXJvdy1saW5lLWhlaWdodDpjYWxjKDIwICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItc3RhY2stdmlldy1yb3ctbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxl'@; put 'dHRlci1zcGFjaW5nKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWJvcmRlci1ib3R0b206dmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWNoaWxkcmVuLXN0YWNrLWJsb2NrLWJvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xy'@; put 'LXN0YWNrLXZpZXctYm9yZGVyLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWNoaWxkcmVuLXN0YWNrLWJsb2NrLWxhYmVsLWFuZC1jb250ZW50LWJnLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWJnLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWNhcmV0LWNv'@; put 'bG9yOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWNvbG9yKTstLWNsci1zdGFjay12aWV3LWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXJvdy1jb2xvcik7LS1jbHItc3RhY2stdmlldy1iZy1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1yb3ctYmctY29sb3IpOy0t'@; put 'Y2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtZm9udC1zaXplOnZhcigtLWNsci1zdGFjay12aWV3LXJvdy1mb250LXNpemUpOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLXN0YWNrLXZpZXctcm93LWZvbnQtd2VpZ2h0KTst'@; put 'LWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWxpbmUtaGVpZ2h0OnZhcigtLWNsci1zdGFjay12aWV3LXJvdy1saW5lLWhlaWdodCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1sZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItc3RhY2stdmlldy1yb3ctbGV0dGVy'@; put 'LXNwYWNpbmcpOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtYmctY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kZWQtcm93LWJnLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGFibGUtaG92ZXI6dmFyKC0tY2xyLXN0YWNrLXZp'@; put 'ZXctZXhwYW5kYWJsZS1yb3ctaG92ZXIpOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtdGV4dC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRlZC1yb3ctY29sb3IpfS5zdGFjay1oZWFkZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5z'@; put 'dGFjay1oZWFkZXIgLnN0YWNrLXRpdGxle2Rpc3BsYXk6YmxvY2s7ZmxleDoxIDEgYXV0bzttYXJnaW46MDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMDtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy10aXRsZS1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10'@; put 'eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXIt'@; put 'c3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFjaW5nKX0uc3RhY2staGVhZGVyIC5zdGFjay1hY3Rpb25ze2Rpc3BsYXk6YmxvY2s7ZmxleDowIDAgYXV0b30uc3RhY2staGVhZGVyIC5zdGFjay1hY3Rpb25zIC5zdGFjay1hY3Rpb257bWlu'@; put 'LXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpfS5zdGFjay12aWV3e292ZXJmbG93LXk6YXV0bzt3b3JkLXdyYXA6YnJlYWstd29yZDttYXJnaW4tdG9wOjA7Ym9yZGVyOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLXN0YWNrLXZpZXct'@; put 'Ym9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci1yYWRpdXMpfS5zdGFjay12aWV3IGRkLC5zdGFjay12aWV3IGR0e21hcmdpbi1pbmxpbmUtc3RhcnQ6MDttYXJnaW4tbGVmdDowfS5zdGFjay12aWV3IC5zdGFjay1ibG9ja3tkaXNwbGF5OmZs'@; put 'ZXg7ZmxleC1mbG93OnJvdyB3cmFwO292ZXJmbG93LXk6aGlkZGVuO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLXdpZHRoKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3Rh'@; put 'Y2stYmxvY2stYm9yZGVyLWJvdHRvbSl9LnN0YWNrLXZpZXc+LnN0YWNrLWJsb2NrOmxhc3QtY2hpbGQsLnN0YWNrLXZpZXc+Omxhc3QtY2hpbGQgLnN0YWNrLWJsb2NrOmxhc3Qtb2YtdHlwZXtib3JkZXItYm90dG9tOm5vbmV9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNoYW5nZWQ6YmVm'@; put 'b3Jle2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDowO3dpZHRoOjA7Ym9yZGVyLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpIHNvbGlkIHZhcigtLWNsci1zdGFjay1ibG9jay1jaGFuZ2VkLWJvcmRlci10b3AtY29sb3IpO2JvcmRlci1yaWdodDp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXNwYWNlLTYpIHNvbGlkIHRyYW5zcGFyZW50fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jYXJldHthbGlnbi1zZWxmOmNlbnRlcn0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWx7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtNikgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1iZy1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1z'@; put 'dGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWxpbmUtaGVpZ2h0'@; put 'KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1sZXR0ZXItc3BhY2luZyk7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1sYWJlbDpmb2N1c3tvdXRsaW5lLWNv'@; put 'bG9yOkhpZ2hsaWdodDtvdXRsaW5lLWNvbG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLXN0eWxlOmF1dG87b3V0bGluZS13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpO291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSl9LnN0'@; put 'YWNrLXZpZXcgLnN0YWNrLXZpZXcta2V5e2ZsZXg6MCAxIDQwJTttYXgtd2lkdGg6NDAlO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jYXJldHtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWNhcmV0LWNvbG9yKTttYXJnaW4tcmlnaHQ6dmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY29udGVudHtmbGV4OjEgMSBhdXRvO3dpZHRoOjYwJTttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uc3RhY2stdmll'@; put 'dyAuc3RhY2stYmxvY2stY29udGVudD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVue2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2Nre2JvcmRlci1ib3R0b20tY29sb3I6'@; put 'dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stY2hpbGRyZW4tc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbS1jb2xvcil9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuPi5zdGFjay1ibG9jazpsYXN0LWNoaWxkLC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbj46bGFzdC1jaGlsZCAuc3Rh'@; put 'Y2stYmxvY2s6bGFzdC1vZi10eXBle2JvcmRlci1ib3R0b206bm9uZX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiAuc3RhY2stYmxvY2stY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1z'@; put 'dGFjay12aWV3LXN0YWNrLWNoaWxkcmVuLXN0YWNrLWJsb2NrLWxhYmVsLWFuZC1jb250ZW50LWJnLWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stbGFiZWx7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7Y29sb3I6'@; put 'dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kYWJsZS1yb3ctY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kYWJsZS1yb3ctYmctY29sb3IpO2N1cnNvcjpwb2ludGVyfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1i'@; put 'bG9jay1sYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS03KTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5z'@; put 'JTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0F2YXIo'@; put 'LS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3IpJTNCJTdEJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VDYXJldCUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIl'@; put 'MjBkJTNEJTIyTTYlMkM5TDEuMiUyQzQuMmEwLjY4JTJDMC42OCUyQzAlMkMwJTJDMSUyQzEtMUw2JTJDNy4wOCUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIik7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcp'@; put 'O21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1sYWJlbCwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudHt0cmFuc2l0aW9uOmJh'@; put 'Y2tncm91bmQtY29sb3IgLjJzIGVhc2UtaW4tb3V0LGNvbG9yIC4ycyBlYXNlLWluLW91dH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZTpub3QoLnN0YWNrLWJsb2NrLWV4cGFuZGVkKT4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZp'@; put 'ZXctc3RhY2stYmxvY2stZXhwYW5kYWJsZS1ob3Zlcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1iZy1ob3Zlcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU6bm90KC5zdGFjay1ibG9jay1leHBhbmRlZCk+LnN0YWNr'@; put 'LWJsb2NrLWxhYmVsOmhvdmVyIC5zdGFjay1ibG9jay1jYXJldHtmaWxsOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGFibGUtaG92ZXIpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlOm5vdCguc3RhY2stYmxvY2stZXhwYW5kZWQpPi5zdGFjay1i'@; put 'bG9jay1sYWJlbDpob3ZlcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kYWJsZS1yb3ctYWN0aXZlKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWJnLWFjdGl2ZSl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4'@; put 'cGFuZGFibGU6bm90KC5zdGFjay1ibG9jay1leHBhbmRlZCk+LnN0YWNrLWJsb2NrLWxhYmVsOmhvdmVyOmFjdGl2ZSAuc3RhY2stYmxvY2stY2FyZXR7ZmlsbDp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1hY3RpdmUpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBh'@; put 'bmRhYmxlLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1sYWJlbHtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci13aWR0aCk7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12'@; put 'aWV3LXN0YWNrLWJsb2NrLWJvcmRlci1ib3R0b20pO2NvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGVkLXRleHQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtYmctY29sb3IpfS5zdGFj'@; put 'ay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmV7dHJhbnNmb3JtOnJvdGF0ZSgwKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZS5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxv'@; put 'Y2stbGFiZWwgLnN0YWNrLWJsb2NrLWNhcmV0e2ZpbGw6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtdGV4dC1jb2xvcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWxhYmVsOmhv'@; put 'dmVye2NvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGFibGUtaG92ZXIpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kZWQtaG92ZXItcm93LWJnLWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZS5z'@; put 'dGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXIgLnN0YWNrLWJsb2NrLWNhcmV0e2ZpbGw6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kYWJsZS1ob3Zlcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUuc3RhY2stYmxv'@; put 'Y2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWxhYmVsOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1hY3RpdmUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kZWQtYWN0aXZlLXJvdy1iZy1jb2xvcil9LnN0'@; put 'YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWxhYmVsOmhvdmVyOmFjdGl2ZSAuc3RhY2stYmxvY2stY2FyZXR7ZmlsbDp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1hY3RpdmUpfS5tb2RhbCAuc3Rh'@; put 'Y2stdmlld3ttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgY2xyLXN0YWNrLWJsb2NrLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtjb250ZW50Om5vbmV9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIGNsci1zdGFjay1ibG9jayAuc3RhY2st'@; put 'YmxvY2stbGFiZWwgLnN0YWNrLXZpZXcta2V5LC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiAuc3RhY2stYmxvY2stbGFiZWwgLnN0YWNrLXZpZXcta2V5e3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiBjbHItc3Rh'@; put 'Y2stYmxvY2sgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZSwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtkaXNwbGF5Om5vbmV9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItdHJlZS1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLXRyZWUtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXIpOy0tY2xyLXRyZWUtbGluay1zZWxlY3Rpb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFj'@; put 'dGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci10cmVlLWxpbmstdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0'@; put 'aW9uLWNvbG9yLWhvdmVyKTstLWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1v'@; put 'YmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQpOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY2FyZXQtaG92ZXItY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJldC1s'@; put 'aW5rLWhvdmVyLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY2FyZXQtYWN0aXZlLWNvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1hY3RpdmUtY29sb3IpOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNhcmV0LWxpbmst'@; put 'ZGlzYWJsZWQtY29sb3IpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LXRleHQtb25seS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbG9yOnZhcigtLWNsci10cmVlLWxpbmstdGV4dC1jb2xvcik7LS1jbHItdHJl'@; put 'ZS1ub2RlLWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50'@; put 'LWJnLWhvdmVyLWNvbG9yOnZhcigtLWNsci10cmVlLWxpbmstaG92ZXItY29sb3IpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctYWN0'@; put 'aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmUpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LXNlbGVjdGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQpOy0tY2xyLXRyZWUt'@; put 'bm9kZS1jb250ZW50LWJnLXNlbGVjdGVkLWNvbG9yOnZhcigtLWNsci10cmVlLWxpbmstc2VsZWN0aW9uLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1zZWxlY3RlZC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2Vs'@; put 'ZWN0ZWQtaG92ZXIpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLXNlbGVjdGVkLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlKTstLWNsci10cmVlLW5vZGUtY29udGVudC1kaXNhYmxlZC1jb2xvcjp2'@; put 'YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApfS5jbHItdHJlZS1ub2Rle2Rpc3BsYXk6YmxvY2t9LmNsci10cmVlLW5vZGUuZGlzYWJsZWQg'@; put 'LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtbGlua3twb2ludGVyLWV2ZW50czpub25lfS5jbHItdHJlZS1ub2RlLmRp'@; put 'c2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtbGluaywuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWNvbnRlbnQsLmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNs'@; put 'ci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXIgLmNsci10cmVlbm9kZS1jaGVja2JveHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1kaXNhYmxlZC1jb2xvcil9LmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNsci10cmVlLW5vZGUtY29udGVudC1j'@; put 'b250YWluZXIgLmNsci10cmVlbm9kZS1saW5rLC5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY29udGVudCwuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAu'@; put 'Y2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbHtjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtZGlzYWJsZWQtY29sb3IpfS5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFp'@; put 'bmVyIC5jbHItdHJlZW5vZGUtbGluayBjZHMtaWNvbiwuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWxpbmsgY2xyLWljb24sLmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNsci10cmVlLW5vZGUtY29udGVudC1j'@; put 'b250YWluZXIgLmNsci10cmVlbm9kZS1jb250ZW50IGNkcy1pY29uLC5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY29udGVudCBjbHItaWNvbiwuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9k'@; put 'ZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbCBjZHMtaWNvbiwuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWNo'@; put 'ZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbCBjbHItaWNvbntmaWxsOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtZGlzYWJsZWQtY29sb3IpfS5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHIt'@; put 'dHJlZW5vZGUtY2FyZXR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY2FyZXQgY2RzLWljb24sLmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNsci10cmVlLW5vZGUtY29udGVu'@; put 'dC1jb250YWluZXIgLmNsci10cmVlbm9kZS1jYXJldCBjbHItaWNvbntmaWxsOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtZGlzYWJsZWQtY29sb3IpfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOnZh'@; put 'cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVp'@; put 'Z2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyPi5jbHItdHJlZW5vZGUtY2hlY2tib3guY2xyLWNoZWNrYm94LXdyYXBwZXJ7d2lkdGg6MTAwJTtwYWRk'@; put 'aW5nOjAgMCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI+LmNsci10cmVlbm9kZS1jaGVja2JveC5jbHItY2hlY2tib3gtd3JhcHBlcjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKX0u'@; put 'Y2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lcj4uY2xyLXRyZWVub2RlLWNoZWNrYm94LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHt3aWR0aDoxMDAlO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUp'@; put 'IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMH0uY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lcjpmb2N1cy12aXNpYmxle291dGxpbmU6MH0uY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lcjpmb2N1cz4uY2xyLXRyZWVub2RlLWNvbnRlbnQsLmNsci10cmVlLW5vZGUtY29u'@; put 'dGVudC1jb250YWluZXI6Zm9jdXM+LmNsci10cmVlbm9kZS1jaGVja2JveHtvdXRsaW5lLW9mZnNldDpjYWxjKC0xKnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkpO291dGxpbmUtY29sb3I6SGlnaGxpZ2h0O291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5n'@; put 'LWNvbG9yO291dGxpbmUtc3R5bGU6YXV0bztvdXRsaW5lLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCl9LmNsci10cmVlbm9kZS1jb250ZW50e2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtMTApO2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC10ZXh0LW9ubHktY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10cmVlLWJvcmRlci1y'@; put 'YWRpdXMpIDAgMCB2YXIoLS1jbHItdHJlZS1ib3JkZXItcmFkaXVzKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQ6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCl9LmNsci10cmVlbm9kZS1jb250ZW50Om5vdCg6aGFzKC5jbHItdHJlZW5vZGUtbGluaykp'@; put 'e3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdHJlZW5vZGUtY29udGVudCBjZHMtaWNvbiwuY2xyLXRyZWVub2RlLWNvbnRlbnQgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03'@; put 'KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LXRleHQtb25seS1jb2xvcik7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7'@; put 'dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbmsuYWN0aXZlLC5jbHItdHJlZW5vZGUtY2hlY2tib3g6aGFzKGlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpOmNoZWNrZWQpe2NvbG9yOnZhcigtLWNsci10cmVlLW5v'@; put 'ZGUtY29udGVudC1zZWxlY3RlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctc2VsZWN0ZWQtY29sb3IpfS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbmssLmNsci10cmVlbm9kZS1jaGVja2JveHtib3JkZXItcmFk'@; put 'aXVzOnZhcigtLWNsci10cmVlLWJvcmRlci1yYWRpdXMpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rOmhvdmVyLC5jbHItdHJlZW5vZGUtY2hlY2tib3g6aG92ZXJ7'@; put 'YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctaG92ZXItY29sb3IpfS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbms6YWN0aXZlLC5jbHItdHJlZW5vZGUtY2hlY2tib3g6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy'@; put 'LXRyZWUtbm9kZS1jb250ZW50LWJnLWFjdGl2ZS1jb2xvcil9LmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluaywuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbHtjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2Rl'@; put 'LWNvbnRlbnQtY29sb3IpfS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbmsgY2RzLWljb24sLmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluayBjbHItaWNvbiwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHIt'@; put 'Y29udHJvbC1sYWJlbCBjZHMtaWNvbiwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29sb3IpfS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRy'@; put 'ZWVub2RlLWxpbms6aG92ZXIsLmNsci10cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWhvdmVyLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVl'@; put 'bm9kZS1saW5rOmhvdmVyIGNkcy1pY29uLC5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbms6aG92ZXIgY2xyLWljb24sLmNsci10cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6aG92ZXIgY2RzLWljb24sLmNsci10'@; put 'cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWhvdmVyLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rOmFjdGl2'@; put 'ZSwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbDphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWFjdGl2ZS1jb2xvcil9LmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluazphY3Rp'@; put 'dmUgY2RzLWljb24sLmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluazphY3RpdmUgY2xyLWljb24sLmNsci10cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6YWN0aXZlIGNkcy1pY29uLC5jbHItdHJlZW5vZGUtY2hl'@; put 'Y2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9sLWxhYmVsOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYWN0aXZlLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rLmFjdGl2ZTpob3Zlciwu'@; put 'Y2xyLXRyZWVub2RlLWNoZWNrYm94OmhhcyhpbnB1dFt0eXBlPWNoZWNrYm94XTpub3QoOmRpc2FibGVkKTpjaGVja2VkKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1zZWxlY3RlZC1ob3Zlci1jb2xvcil9LmNsci10cmVlbm9kZS1jb250'@; put 'ZW50IC5jbHItdHJlZW5vZGUtbGluay5hY3RpdmU6YWN0aXZlLC5jbHItdHJlZW5vZGUtY2hlY2tib3g6aGFzKGlucHV0W3R5cGU9Y2hlY2tib3hdOm5vdCg6ZGlzYWJsZWQpOmNoZWNrZWQpOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1z'@; put 'ZWxlY3RlZC1hY3RpdmUtY29sb3IpfS5jbHItdHJlZW5vZGUtY2FyZXR7ZmxleDowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7bWFyZ2luOjA7cGFkZGluZzowO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTtt'@; put 'aW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNhcmV0LWNvbG9yKX0uY2xyLXRyZWVub2Rl'@; put 'LWNhcmV0OmhvdmVye2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtaG92ZXItY29sb3IpfS5jbHItdHJlZW5vZGUtY2FyZXQ6YWN0aXZle2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtYWN0aXZlLWNvbG9yKX0uY2xyLXRyZWUtbm9kZS1jYXJldC1pY29ue2hlaWdodDp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO3dpZHRoOnZhcigtLWNkcy1nbG9i'@; put 'YWwtc3BhY2UtMTApO3BhZGRpbmc6Y2FsYygodmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKSouNSl9LmNsci10cmVlbm9kZS1zcGlubmVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5jbHItdHJlZW5vZGUtY2hpbGRyZW57bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7d2lsbC1jaGFuZ2U6aGVpZ2h0O292'@; put 'ZXJmbG93LXk6aGlkZGVufS5jbHItdHJlZW5vZGUtbGlua3tkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO21hcmdpbjowO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmxlZnR9LmNsci10cmVlbm9kZS1saW5rOmhvdmVyLC5jbHItdHJlZW5vZGUtbGluazpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZX06cm9vdCBbY2RzLXRoZW1lXXst'@; put 'LWNsci1kYXRhZ3JpZC1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItZGF0YWdyaWQtZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWljb24tY29sb3I6dmFy'@; put 'KC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItZGF0YWdyaWQtcm93LWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMt'@; put 'YWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlKTstLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWRhdGFncmlkLWFjdGlvbi10b2dnbGUtY29sb3I6dmFyKC0tY2RzLWFs'@; put 'aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWRpc2FibGVkLWNvbG9yOnZhcigt'@; put 'LWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWlucHV0LWJvcmRlci1mb2N1cy1jb2xvcjp2YXIo'@; put 'LS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcik7LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJv'@; put 'cmRlci1jb2xvcik7LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZGF0YWdyaWQtYWN0aW9uLXBvcG92ZXItaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNr'@; put 'Z3JvdW5kLWhvdmVyKTstLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tn'@; put 'cm91bmQtc2VsZWN0ZWQpOy0tY2xyLWRhdGFncmlkLXJvdy1zZWxlY3RlZC1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlKTstLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtaG92ZXIt'@; put 'YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xv'@; put 'cik7LS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWhvdmVyLWFjdGl2ZTp2YXIoLS1j'@; put 'ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1kYXRhZ3JpZC1kZXRh'@; put 'aWwtY2FyZXQtaWNvbi1vcGVuLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0yMDApOy0tY2xyLWRhdGFncmlkLWxv'@; put 'YWRpbmctYmFja2dyb3VuZDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZHJvcC1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtcGFkZGlu'@; put 'ZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1jb2xvcjp2YXIo'@; put 'LS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItYnRu'@; put 'LWRlZmF1bHQtZGlzYWJsZWQtY29sb3IpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVyLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWZpbGwtaG92ZXItY29s'@; put 'b3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRleHQtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWJv'@; put 'cmRlci1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApOy0tY2xyLWRhdGFncmlkLWNv'@; put 'bHVtbi10b2dnbGUtdGV4dC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50LXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1j'@; put 'bG9zZS1pY29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtYm9keS10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZGF0YWdyaWQtZGV0YWlsLWhlYWRlci10aXRsZS1jb2xvcjp2YXIoLS1j'@; put 'ZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxp'@; put 'YXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItZGF0YWdyaWQtcGxhY2Vob2xkZXItZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlw'@; put 'b2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1sZXR0ZXItc3BhY2luZzp2YXIoLS1j'@; put 'ZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFk'@; put 'b3c6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMTAwKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWhlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLXdpZHRoOnZhcigtLWNkcy1n'@; put 'bG9iYWwtc3BhY2UtMSk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXJlc2l6ZS1oYW5kbGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03'@; put 'KTstLWNsci1kYXRhZ3JpZC1mb290ZXItcGFnaW5hdGlvbi1nYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTstLWNsci1kYXRhZ3JpZC1maXhlZC1jb2x1bW4tc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWV4cGFuZGJ5'@; put 'OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7LS1jbHItZGF0YWdyaWQtaWNvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItZGF0YWdyaWQtYWN0aW9uLWFycm93LXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTstLWNsci1kYXRhZ3JpZC1jb21wYWN0LW91dGxp'@; put 'bmUtb2Zmc2V0OmNhbGMoLTEgKiB0b2tlbnMuJGNkcy1nbG9iYWwtc3BhY2UtMyk7LS1jbHItZGF0YWdyaWQtaG9yaXpvbnRhbC1wYWRkaW5nOm1peGlucy5iYXNlbGluZVB4KDkpfS5kYXRhZ3JpZHtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyOnZhcigtLWNsci10YWJsZS1ib3Jk'@; put 'ZXJ3aWR0aCkgc29saWQgdmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdGFibGUtYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYmdjb2xvcik7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3Ip'@; put 'O21hcmdpbjp2YXIoLS1jbHItdGFibGUtbWFyZ2luKTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfS5kYXRhZ3JpZCAuZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZCAuZGF0YWdyaWQtY2VsbHtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxl'@; put 'LWJvcmRlcndpZHRoKTtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvcik7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtY2VsbC1wYWRkaW5nKTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4u'@; put 'bGVmdCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwubGVmdHt0ZXh0LWFsaWduOmxlZnR9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4ubGVmdDpmaXJzdC1jaGlsZCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwubGVmdDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2Jh'@; put 'bC1zcGFjZS03KX0uZGF0YWdyaWQgLmRhdGFncmlkLWNvbHVtbi5yaWdodCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwucmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uZGF0YWdyaWQgLmRhdGFncmlkLWNlbGx7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTtmb250LXNpemU6'@; put 'dmFyKC0tY2xyLXRhYmxlLWRhdGEtY2VsbC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1h'@; put 'bGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyl9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW57Y29sb3I6dmFyKC0tY2xyLXRoZWFkLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0'@; put 'OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRl'@; put 'ci1zcGFjaW5nKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yKTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCk7Ym9yZGVyLWJvdHRvbS1j'@; put 'b2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wOjAgbm9uZX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHkgLmRhdGFncmlkLXJvdzpmaXJzdC1jaGlsZCAuZGF0YWdyaWQtY2VsbHtib3JkZXItdG9wOjAgbm9uZX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHkrLmRh'@; put 'dGFncmlkLWJvZHl7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCk7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yKX0uZGF0YWdyaWQgLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQt'@; put 'Y29sdW1uOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0uZGF0YWdyaWQgLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtY29sdW1uOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2Jv'@; put 'cmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHk6bGFzdC1jaGlsZCAuZGF0YWdyaWQtcm93Omxhc3QtY2hpbGQgLmRhdGFncmlkLWNlbGw6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRl'@; put 'ci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMpfS5kYXRhZ3JpZCAuZGF0YWdyaWQtYm9keTpsYXN0LWNoaWxkIC5kYXRhZ3JpZC1yb3c6bGFzdC1jaGlsZCAuZGF0YWdyaWQtY2VsbDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXIt'@; put 'Ym90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNvbHVtbiwuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY2VsbHttaW4taGVpZ2h0OnZhcigtLWNsci10YWJsZS1jb21wYWN0LXJvdy1oZWln'@; put 'aHQpO3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLWNlbGwtY29tcGFjdC1wYWRkaW5nKX0uZGF0YWdyaWQtaG9zdHtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbiBub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9LmRhdGFncmlke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXIt'@; put 'Ym90dG9tLXJpZ2h0LXJhZGl1czowOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7b3ZlcmZsb3c6YXV0bztmbGV4OjEgMSBhdXRvO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uZGF0YWdyaWQuY2RrLXZpcnR1YWwtc2Nyb2xsYWJsZSAu'@; put 'ZGF0YWdyaWQtcm93c3tmbGV4LWdyb3c6MH0uZGF0YWdyaWQtb3ZlcmZsb3ctZWxsaXBzaXMgLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxzPi5kYXRhZ3JpZC1jZWxse3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3Jh'@; put 'cH0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldHtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikgdmFyKC0tY2xyLWRhdGFncmlkLWhvcml6b250YWwtcGFkZGluZykgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTt0ZXh0LWFsaWduOmNlbnRlcn0uZGF0YWdyaWQtZXhwYW5kYWJs'@; put 'ZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRp'@; put 'dXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApfWJ1dHRvbi5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBh'@; put 'bmRhYmxlLWNhcmV0LWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1pY29ue2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1pY29uLWNvbG9yKX0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdy'@; put 'aWQtZXhwYW5kYWJsZS1jYXJldC1pY29uIHN2Z3t0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXR9LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0'@; put 'LmRhdGFncmlkLWNvbHVtbntwYWRkaW5nOnZhcigtLWNsci10YWJsZS10b3BjZWxscGFkZGluZykgdmFyKC0tY2xyLXRhYmxlLWNlbGxwYWRkaW5nKSB2YXIoLS1jbHItdGFibGUtYm90dG9tY2VsbHBhZGRpbmcpfS5kYXRhZ3JpZC1oZWFkZXIsLmRhdGFncmlkLWJvZHksLmRhdGFncmlkLXJv'@; put 'dywuZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZC1jZWxsLC5kYXRhZ3JpZC1maXhlZC1jb2x1bW57ZGlzcGxheTpibG9ja30uZGF0YWdyaWQtcm93e2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpO2JvcmRlci10b3At'@; put 'Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcil9LmRhdGFncmlkLXJvdzpmaXJzdC1vZi10eXBle2JvcmRlci10b3A6bm9uZX0uZGF0YWdyaWQtcm93OmhvdmVyLC5kYXRhZ3JpZC1yb3c6aG92ZXIgLmRhdGFncmlkLXJvdy1zdGlja3l7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j'@; put 'bHItZGF0YWdyaWQtcm93LWhvdmVyLWNvbG9yKX0uZGF0YWdyaWQtcm93LmRhdGFncmlkLXNlbGVjdGVkLC5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtc2VsZWN0ZWQgLmRhdGFncmlkLXJvdy1zdGlja3l7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1zZWxlY3RlZCk7YmFja2dyb3VuZC1j'@; put 'b2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LXNlbGVjdGVkLWJhY2tncm91bmQtY29sb3IpfS5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtc2VsZWN0ZWQ6aG92ZXIsLmRhdGFncmlkLXJvdy5kYXRhZ3JpZC1zZWxlY3RlZDpob3ZlciAuZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtaG92ZXItYmFja2dyb3VuZC1jb2xvcil9LmRhdGFncmlkLXJvdy5kYXRhZ3JpZC1zZWxlY3RlZDphY3RpdmUsLmRhdGFncmlkLXJvdy5kYXRhZ3JpZC1zZWxlY3RlZDphY3RpdmUgLmRhdGFncmlkLXJvdy1zdGlja3l7YmFja2dy'@; put 'b3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LXNlbGVjdGVkLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKX0uZGF0YWdyaWQtcm93OmFjdGl2ZSwuZGF0YWdyaWQtcm93OmFjdGl2ZSAuZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3Jp'@; put 'ZC1yb3ctYWN0aXZlLWNvbG9yKX0uZGF0YWdyaWQtcm93LmRhdGFncmlkLXJvdy1za2VsZXRvbntiYWNrZ3JvdW5kLWNvbG9yOnVuc2V0fS5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtcm93LXNrZWxldG9uIC5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZSwuZGF0YWdyaWQtcm93LmRhdGFncmlkLXJv'@; put 'dy1za2VsZXRvbiAuZGF0YWdyaWQtcm93LXN0aWNreXtkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LWRldGFpbC13cmFwcGVye2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4fS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1kZXRhaWx7d2lkdGg6YXV0b30uZGF0'@; put 'YWdyaWQtcm93IC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1jZWxse3BhZGRpbmctdG9wOjA7Ym9yZGVyOjB9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1jb250YWluZXJ7Zm9udC1zaXplOnZhcigtLWNsci10YWJsZS1m'@; put 'b250c2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt'@; put 'Ym9keS1sZXR0ZXItc3BhY2luZyl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2VsZWN0e21pbi13aWR0aDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgLSB2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpKTthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzp2YXIoLS1jZHMtZ2xv'@; put 'YmFsLXNwYWNlLTMpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2VsZWN0LC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdCBpbnB1dHtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zZWxlY3QuY2xyLWZvcm0tY29u'@; put 'dHJvbC1kaXNhYmxlZCwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zZWxlY3QuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCBpbnB1dHtjdXJzb3I6bm90LWFsbG93ZWR9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3R7bWFyZ2luOmNhbGMoLTEqdmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS01KSkgMDtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBvc3QtdHJpZ2dlcntoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDp2YXIoLS1jZHMt'@; put 'Z2xvYmFsLXNwYWNlLTkpfS5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtcm93LWxvYWRpbmcgLmRhdGFncmlkLXJvdy1zdGlja3l7ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtcm93LWxvYWRpbmcgLmRhdGFncmlkLWNlbGx7ZGlzcGxheTpmbGV4O3BhZGRpbmc6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1zcGFjZS05KTthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1iZ2NvbG9yKTtkaXNwbGF5OmZsZXg7'@; put 'ZmxleC13cmFwOm5vd3JhcDtwb3NpdGlvbjpzdGlja3k7bGVmdDowO3otaW5kZXg6NTAwfS5kYXRhZ3JpZC1yb3ctc3RpY2t5IC5kYXRhZ3JpZC1jZWxsOmxhc3QtY2hpbGQ6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvci13aWR0aCk7'@; put 'aGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWhlaWdodCk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpfS5kYXRhZ3JpZC1y'@; put 'b3ctc2Nyb2xsYWJsZXtmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uIG5vd3JhcH0uZGF0YWdyaWQtcm93LXNjcm9sbGFibGUuaXMtcmVwbGFjZWR7ZmxleC1kaXJlY3Rpb246cm93fS5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZS5pcy1yZXBsYWNlZCAuZGF0YWdy'@; put 'aWQtc2Nyb2xsaW5nLWNlbGxze2ZsZXg6MCAwIGF1dG99LmRhdGFncmlkLXJvdy1zY3JvbGxhYmxlIC5kYXRhZ3JpZC1jb2x1bW46bGFzdC1jaGlsZCAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvcntkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXJvdy1mbGV4e2ZsZXg6MSAxIGF1dG87ZGlzcGxh'@; put 'eTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5kYXRhZ3JpZC1yb3ctZmxleCAuZGF0YWdyaWQtcm93LWRldGFpbHtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLXJvdy1mbGV4IC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1jZWxse3BhZGRpbmct'@; put 'dG9wOjB9LmRhdGFncmlkLXNjcm9sbGluZy1jZWxscywuZGF0YWdyaWQtc2Nyb2xsaW5nLWRldGFpbHN7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLWFjdGlvbi1iYXJ7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkp'@; put 'fS5kYXRhZ3JpZC1hY3Rpb24tYmFyfi5kYXRhZ3JpZC1zcGlubmVye2hlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpKTt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uZGF0YWdyaWQtaGVhZGVye3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjUw'@; put 'MTt3aWR0aDphdXRvfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbntib3JkZXItYm90dG9tOm5vbmV9LmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IpO2JvcmRlci10b3A6bm9uZTtib3JkZXItYm90'@; put 'dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdyAuZGF0YWdy'@; put 'aWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yKTt6LWluZGV4OjUwMn0uZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3c6aG92ZXIsLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93OmhvdmVyIC5kYXRhZ3JpZC1yb3ctc3RpY2t5e2Jh'@; put 'Y2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IpfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdy1zY3JvbGxhYmxle2ZsZXgtZGlyZWN0aW9uOnJvd30uZGF0YWdyaWQtdGFibGUtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzttaW4taGVpZ2h0OjEw'@; put 'MCV9LmRhdGFncmlkLXRhYmxlLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcm93c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxIGF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1ib2R5e3dpZHRoOmF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3Jp'@; put 'ZC1jb2x1bW57cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTE1KTtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyOjB9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1'@; put 'bW46Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpO291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSl9LmRhdGFncmlkLXRhYmxl'@; put 'IC5kYXRhZ3JpZC1jb2x1bW4gY2xyLWRnLWZpbHRlciwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBjbHItZGctc3RyaW5nLWZpbHRlciwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBjbHItZGctbnVtZXJpYy1maWx0ZXJ7ZGlzcGxheTpmbGV4O29yZGVyOjk5O21h'@; put 'cmdpbi1sZWZ0OmF1dG87YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dHt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTE0KX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAu'@; put 'ZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXQgLmNsci1mb3JtLWNvbnRyb2x7bWFyZ2luLXRvcDowfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1t'@; put 'cy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2Zsb2F0OnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWln'@; put 'aHQ6dmFyKC0tY2xyLWRhdGFncmlkLWZpbHRlci10b2dnbGUtc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLWRhdGFncmlkLWZpbHRlci10b2dnbGUtc2l6ZSk7bWluLWhlaWdodDp2YXIoLS1jbHItZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLWRhdGFncmlk'@; put 'LWZpbHRlci10b2dnbGUtc2l6ZSk7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRl'@; put 'ci10b2dnbGV7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUgY2xyLWljb257Y29sb3I6dmFy'@; put 'KC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcil9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGU6aG92ZXIgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dn'@; put 'bGU6aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zlcil9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUuZGF0YWdyaWQtZmlsdGVyLW9wZW4gY2RzLWljb24sLmRhdGFn'@; put 'cmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUuZGF0YWdyaWQtZmlsdGVyLW9wZW4gY2xyLWljb257Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29s'@; put 'dW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlcmVkIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlcmVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uLmRhdGFncmlkLWZpeGVkLXdpZHRoe2ZsZXg6MCAwIGF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1mbGV4e2Rpc3BsYXk6Zmxl'@; put 'eDtmbGV4OjEgMSBhdXRvfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tdGl0bGV7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7'@; put 'cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3IpO3RleHQtYWxpZ246bGVmdDtmbGV4OjEgMSBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRl'@; put 'cjtkaXNwbGF5OmZsZXh9YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZXtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXRpdGxlIC5zaWducG9zdCAuc2lnbnBv'@; put 'c3QtYWN0aW9uLmJ0bntoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOmNhbGMoLTEq'@; put 'MTAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4tdGl0bGU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFn'@; put 'cmlkLWNvbHVtbiBidXR0b24uZGF0YWdyaWQtY29sdW1uLXRpdGxlIC5zb3J0LWljb257Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7bWFyZ2luLWxlZnQ6YXV0bztoZWlnaHQ6dmFyKC0tY2xyLWRhdGFncmlkLWljb24tc2l6ZSk7d2lkdGg6dmFyKC0t'@; put 'Y2xyLWRhdGFncmlkLWljb24tc2l6ZSk7dmVydGljYWwtYWxpZ246bWlkZGxlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLnNvcnQtaWNvbjpob3Zlcntjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9u'@; put 'LWNvbG9yLWhvdmVyKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBidXR0b24uZGF0YWdyaWQtY29sdW1uLXRpdGxlIC5zb3J0LWljb246YWN0aXZle2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKX0uZGF0YWdyaWQtdGFibGUg'@; put 'LmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXg6MCAwIGF1dG87d2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtvcmRlcjoxMDA7bWFyZ2luLWxlZnQ6YXV0bzto'@; put 'ZWlnaHQ6MTAwJX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvcjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvci1oZWlnaHQpO3dpZHRoOnZh'@; put 'cigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLXdpZHRoKTtyaWdodDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcil9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmRhdGFncmlk'@; put 'LWNvbHVtbi1oYW5kbGV7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dy'@; put 'b3VuZDowIDA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKTt0b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNw'@; put 'YWNlLTQpKTtjdXJzb3I6Y29sLXJlc2l6ZTtoZWlnaHQ6Y2FsYygxMDAlICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSAtIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkpO3otaW5kZXg6NTAxfWJ1dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1u'@; put 'IC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4taGFuZGxle2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4tcmVzaXplLXRyYWNrZXJ7cG9zaXRp'@; put 'b246YWJzb2x1dGU7dG9wOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSk7ZGlzcGxheTpub25lO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSk7aGVpZ2h0OjA7Ym9yZGVyLXJpZ2h0LXN0eWxlOmRvdHRlZDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2RzLWdsb2Jh'@; put 'bC1jb2xvci1ibHVlLTMwMCk7Ym9yZGVyLXJpZ2h0LXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTtjdXJzb3I6Y29sLXJlc2l6ZX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29s'@; put 'dW1uLXNlcGFyYXRvciAuZGF0YWdyaWQtY29sdW1uLXJlc2l6ZS10cmFja2VyLm9uLWFycm93LWtleS1yZXNpemV7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2Utb3V0fS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5leGNl'@; put 'ZWRlZC1tYXh7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgZG90dGVkIHZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLWRhcmspfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2Vy'@; put 'IC5zaWducG9zdHttYXJnaW46Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKSAwO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBv'@; put 'c3QtdHJpZ2dlcntoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uLmRhdGFncmlkLXNlbGVjdCwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1leHBhbmRhYmxl'@; put 'LWNhcmV0LC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uLmRhdGFncmlkLXJvdy1hY3Rpb25ze21heC13aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZml4ZWQtY29sdW1uLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZml4ZWQtY29sdW1uLXNpemUpfS5kYXRhZ3Jp'@; put 'ZC10YWJsZSAuZGF0YWdyaWQtY2VsbHtmbGV4OjEgMSBhdXRvO3RleHQtYWxpZ246bGVmdDttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNSk7Ym9yZGVyOjB9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLWZpeGVkLXdpZHRoe2ZsZXg6MCAwIGF1dG99'@; put 'LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLWZpeGVkLWNvbHVtbntmbGV4OjAgMCB2YXIoLS1jbHItZGF0YWdyaWQtZml4ZWQtY29sdW1uLXNpemUpO21heC13aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZml4ZWQtY29sdW1uLXNpemUpO21pbi13aWR0aDp2YXIoLS1j'@; put 'bHItZGF0YWdyaWQtZml4ZWQtY29sdW1uLXNpemUpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1yb3ctYWN0aW9uc3tiYWNrZ3JvdW5kOjAgMH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldHtwYWRkaW5nOnZh'@; put 'cigtLWNkcy1nbG9iYWwtc3BhY2UtMikgdmFyKC0tY2xyLWRhdGFncmlkLWhvcml6b250YWwtcGFkZGluZykgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTt0ZXh0LWFsaWduOmNlbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGw6Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtYWxp'@; put 'YXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpO291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rp'@; put 'b24tdG9nZ2xley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6'@; put 'MCAwO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xle2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0'@; put 'YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZSBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWljb24tY29sb3IpfS5kYXRhZ3JpZC10YWJsZSAuZGF0'@; put 'YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZTphY3RpdmUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZS1jb2xv'@; put 'cil9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5jbHItdG9nZ2xlLXdyYXBwZXJ7bWFyZ2luLXRvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikpO3BhZGRpbmctdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1k'@; put 'ZXRhaWwtY2FyZXQsLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1yb3ctYWN0aW9ucywuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7cG9zaXRpb246cmVsYXRpdmV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWFjdGlv'@; put 'bi10b2dnbGU6YmVmb3JlLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uOmJlZm9yZSwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b246'@; put 'YmVmb3JlLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcm93LWFjdGlvbnMgLmRhdGFncmlkLWFjdGlvbi10b2dnbGU6YmVmb3JlLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcm93LWFjdGlvbnMgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b246YmVmb3JlLC5kYXRhZ3JpZC10YWJs'@; put 'ZSAuZGF0YWdyaWQtcm93LWFjdGlvbnMgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtYnV0dG9uOmJlZm9yZSwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWFjdGlvbi10b2dnbGU6YmVmb3JlLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQt'@; put 'ZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWJ1dHRvbjpiZWZvcmUsLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0'@; put 'ZTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3RvcDowO2xlZnQ6MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lcntmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVy'@; put 'LXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlcntiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3Jp'@; put 'ZC1wbGFjZWhvbGRlci1iYWNrZ3JvdW5kLWNvbG9yKTtkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyLmRhdGFncmlkLWVtcHR5e2JvcmRlci10b3A6MDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbiBub3dyYXA7YWxpZ24t'@; put 'aXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtmb250LXNpemU6dmFyKC0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZSk7Zm9udC13ZWln'@; put 'aHQ6dmFyKC0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItZGF0YWdyaWQtcGxhY2Vob2xkZXItbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1sZXR0ZXItc3BhY2luZyk7'@; put 'Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbG9yKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyIC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1pbWFnZXtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyk7d2lkdGg6dmFyKC0tY2RzLWdsb2Jh'@; put 'bC1zcGFjZS0xMyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZpZXdCb3glM0Ql'@; put 'MjIwJTIwMCUyMDYwJTIwNzIlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEEl'@; put 'MjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZWxsaXBzZSUyMGlkJTNEJTIycGF0aC0xJTIyJTIwY3glM0QlMjIzMCUyMiUyMGN5JTNEJTIyNjEuNzY2NjY2NyUyMiUyMHJ4JTNEJTIyMTUuNDUxMjkwNCUyMiUyMHJ5JTNEJTIyNC43MzMzMzMzMyUy'@; put 'MiUzRSUzQyUyRmVsbGlwc2UlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NtYXNrJTIwaWQlM0QlMjJtYXNrLTIlMjIlMjBtYXNrQ29udGVudFVuaXRzJTNEJTIydXNlclNwYWNlT25Vc2UlMjIlMjBtYXNrVW5pdHMlM0QlMjJvYmplY3RCb3VuZGluZ0JveCUyMiUyMHglM0QlMjIw'@; put 'JTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjMwLjkwMjU4MDglMjIlMjBoZWlnaHQlM0QlMjI5LjQ2NjY2NjY3JTIyJTIwZmlsbCUzRCUyMndoaXRlJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJTIyJTIz'@; put 'cGF0aC0xJTIyJTNFJTNDJTJGdXNlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbWFzayUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJQYWdlLTElMjIlMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdp'@; put 'ZHRoJTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMkFydGJvYXJkJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdXNl'@; put 'JTIwaWQlM0QlMjJPdmFsLTEwJTIyJTIwc3Ryb2tlJTNEJTIyJTIzQzFERkVGJTIyJTIwbWFzayUzRCUyMnVybCglMjNtYXNrLTIpJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMi44JTIyJTIwc3Ryb2tlLWxpbmVjYXAlM0QlMjJzcXVhcmUlMjIlMjBzdHJva2UtZGFzaGFycmF5JTNEJTIyMyUy'@; put 'QzYlMkMzJTJDNSUyMiUyMHhsaW5rJTNBaHJlZiUzRCUyMiUyM3BhdGgtMSUyMiUzRSUzQyUyRnVzZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTM4LjQ2MTM2NDclMkMxOC4xNjQyNDU2JTIwTDMwLjk4OTAxMzclMkMzNC45MTQx'@; put 'ODQ2JTIwTDMxJTJDNDclMjBMMzIuNTk3Nzc4MyUyQzQ2LjUxNjcyMzYlMjBMMzIuNTk3Nzc4MyUyQzM0LjkxNDE4NDYlMjBMNTEuMDY3MzIxOCUyQzE1Ljc1NjA0MjUlMjBDNTEuMDY3MzIxOCUyQzE1Ljc1NjA0MjUlMjA0OC42Mjk1MTY2JTJDMTYuNjU0Mjk2OSUyMDQ0Ljk2Mjg5MDYlMkMx'@; put 'Ny4zMzkyMzM0JTIwQzQxLjI5NjI2NDYlMkMxOC4wMjQxNjk5JTIwMzguNDYxMzY0NyUyQzE4LjE2NDI0NTYlMjAzOC40NjEzNjQ3JTJDMTguMTY0MjQ1NiUyMFolMjIlMjBpZCUzRCUyMlBhdGgtMTk1JTIyJTIwZmlsbCUzRCUyMiUyM0MxREZFRiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAl'@; put 'MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk00Ljc0NjM5MjI2JTJDMTIuNTY2MTg1NSUyMEw0LjYyMDY1NzI2JTJDMTIuMTYwNTM0OCUyMEw1LjM1MTU0MTQlMkMxMS4xNjI1MDQ0JTIwTDUuNzc2MjIzODUlMkMxMS4xNTk5MzklMjBMNi4yMDkzNjMw'@; put 'OSUyQzEyLjU1NzM0ODElMjBMNC43NDYzOTIyNiUyQzEyLjU2NjE4NTUlMjBaJTIwTTYuMjA5MzYzMDklMkMxMi41NTczNDgxJTIwTDYuMzI1NDI2MzIlMkMxMi45MzE3OTU0JTIwTDI4LjQ5NjM4NTUlMkMzNC44Nzk2NzE4JTIwTDI4LjQ5NjM4NTUlMkM0Ny44MDk2NjkxJTIwTDMyLjYlMkM0'@; put 'Ni40ODM2NTEzJTIwTDMyLjYlMkMzNC44OTkyMzY1JTIwTDUzLjk3MzQ5NCUyQzEyLjcwMzU4MTMlMjBMNTMuOTczNDk0JTJDMTIuMjY4ODIwMSUyMEw2LjIwOTM2MzA5JTJDMTIuNTU3MzQ4MSUyMFolMjBNNTUuMzczNDk0JTJDMTAuODYwMzM3NiUyMEw1NS4zNzM0OTQlMkMxMy4yNjgwNjY0'@; put 'JTIwTDM0JTJDMzUuNDYzNzIxNiUyMEwzNCUyQzQ3LjUwMjU0MDElMjBMMjcuMDk2Mzg1NSUyQzQ5LjczMzMzMzMlMjBMMjcuMDk2Mzg1NSUyQzM1LjQ2MzcyMTklMjBMNS4wOTE3OTY4OCUyQzEzLjY4MDU0MiUyMEw0LjMxMzI1MzAxJTJDMTEuMTY4Nzc2NCUyMEw1NS4zNzM0OTQlMkMxMC44'@; put 'NjAzMzc2JTIwWiUyMiUyMGlkJTNEJTIyUGF0aC0xNDklMjIlMjBmaWxsJTNEJTIyJTIzN0ZCREREJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2VsbGlwc2UlMjBpZCUzRCUyMk92YWwtOSUyMiUyMGZpbGwlM0QlMjIlMjNGRkZG'@; put 'RkYlMjIlMjBjeCUzRCUyMjMwJTIyJTIwY3klM0QlMjIxMS43ODU2NTQlMjIlMjByeCUzRCUyMjI2JTIyJTIwcnklM0QlMjI2Ljc4NTY1NDAxJTIyJTNFJTNDJTJGZWxsaXBzZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTMwJTJD'@; put 'MTcuMTcxMzA4JTIwQzM2Ljg3NzIxNzclMkMxNy4xNzEzMDglMjA0My4zMTEyMjgyJTJDMTYuNDYxMDcwMSUyMDQ4LjAzMTIzNzElMkMxNS4yMjkyMTA2JTIwQzUwLjI3Nzc2MTElMkMxNC42NDI4OTc3JTIwNTIuMDUwNzYxOSUyQzEzLjk1Nzk2NzclMjA1My4yMjE2MjMxJTJDMTMuMjM1NDk3'@; put 'MyUyMEM1NC4xOTM4NTY1JTJDMTIuNjM1NTg4NiUyMDU0LjYlMkMxMi4xMTc1ODkxJTIwNTQuNiUyQzExLjc4NTY1NCUyMEM1NC42JTJDMTEuNDUzNzE4OSUyMDU0LjE5Mzg1NjUlMkMxMC45MzU3MTk0JTIwNTMuMjIxNjIzMSUyQzEwLjMzNTgxMDclMjBDNTIuMDUwNzYxOSUyQzkuNjEzMzQw'@; put 'MzIlMjA1MC4yNzc3NjExJTJDOC45Mjg0MTAzNCUyMDQ4LjAzMTIzNzElMkM4LjM0MjA5NzQ2JTIwQzQzLjMxMTIyODIlMkM3LjExMDIzNzk1JTIwMzYuODc3MjE3NyUyQzYuNCUyMDMwJTJDNi40JTIwQzIzLjEyMjc4MjMlMkM2LjQlMjAxNi42ODg3NzE4JTJDNy4xMTAyMzc5NSUyMDExLjk2'@; put 'ODc2MjklMkM4LjM0MjA5NzQ2JTIwQzkuNzIyMjM4ODYlMkM4LjkyODQxMDM0JTIwNy45NDkyMzgxNCUyQzkuNjEzMzQwMzIlMjA2Ljc3ODM3Njg5JTJDMTAuMzM1ODEwNyUyMEM1LjgwNjE0MzUlMkMxMC45MzU3MTk0JTIwNS40JTJDMTEuNDUzNzE4OSUyMDUuNCUyQzExLjc4NTY1NCUyMEM1'@; put 'LjQlMkMxMi4xMTc1ODkxJTIwNS44MDYxNDM1JTJDMTIuNjM1NTg4NiUyMDYuNzc4Mzc2ODklMkMxMy4yMzU0OTczJTIwQzcuOTQ5MjM4MTQlMkMxMy45NTc5Njc3JTIwOS43MjIyMzg4NiUyQzE0LjY0Mjg5NzclMjAxMS45Njg3NjI5JTJDMTUuMjI5MjEwNiUyMEMxNi42ODg3NzE4JTJDMTYu'@; put 'NDYxMDcwMSUyMDIzLjEyMjc4MjMlMkMxNy4xNzEzMDglMjAzMCUyQzE3LjE3MTMwOCUyMFolMjBNMzAlMkMxOC41NzEzMDglMjBDMTUuNjQwNTk2NSUyQzE4LjU3MTMwOCUyMDQlMkMxNS41MzMyNjcyJTIwNCUyQzExLjc4NTY1NCUyMEM0JTJDOC4wMzgwNDA3OCUyMDE1LjY0MDU5NjUlMkM1'@; put 'JTIwMzAlMkM1JTIwQzQ0LjM1OTQwMzUlMkM1JTIwNTYlMkM4LjAzODA0MDc4JTIwNTYlMkMxMS43ODU2NTQlMjBDNTYlMkMxNS41MzMyNjcyJTIwNDQuMzU5NDAzNSUyQzE4LjU3MTMwOCUyMDMwJTJDMTguNTcxMzA4JTIwWiUyMiUyMGlkJTNEJTIyT3ZhbC05LUNvcHklMjIlMjBmaWxsJTNE'@; put 'JTIyJTIzN0ZCREREJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTE4LjI2MDg2NDMlMkM3LjE0NTYyOTg4JTIwTDIyLjcyNzM1NiUyQzE2LjkwNDcyNDElMjBDMjIuNzI3MzU2JTJDMTYuOTA0NzI0MSUy'@; put 'MDE1LjMwMDY1OTIlMkMxNi4zOTExNzQzJTIwMTAuMjc2MDAxJTJDMTQuNzUxMTU5NyUyMEM1LjI1MTM0Mjc3JTJDMTMuMTExMTQ1JTIwNS4zODAzMTAwNiUyQzExLjgyODQzMDIlMjA1LjM4MDMxMDA2JTJDMTEuNjg4MjkzNSUyMEM1LjM4MDMxMDA2JTJDMTAuNDgzMjgzMSUyMDguMTY2MzMx'@; put 'NTIlMkM5LjQxODc3NzE2JTIwMTEuMTE0NTYzJTJDOC41NzMyNDIxOSUyMEMxNC41NDkzMTklMkM3LjU4ODE3NDkyJTIwMTguMjYwODY0MyUyQzcuMTQ1NjI5ODglMjAxOC4yNjA4NjQzJTJDNy4xNDU2Mjk4OCUyMFolMjIlMjBpZCUzRCUyMlBhdGgtMTk2JTIyJTIwZmlsbCUzRCUyMiUyM0Mx'@; put 'REZFRiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUzQyUyRnN2ZyUzRSIpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtaGlkZGVuLWNvbHVtbi5kYXRhZ3JpZC1jb2x1bW4sLmRhdGFn'@; put 'cmlkLXRhYmxlIC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uLmRhdGFncmlkLWNlbGx7ZGlzcGxheTpub25lfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcm93LXNjcm9sbGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvcjphZnRlcntiYWNrZ3JvdW5kLWNv'@; put 'bG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplLWhhbmRsZXItY29sb3IpfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXNjcm9sbGluZy1jZWxscyAuZGF0YWdyaWQtY2VsbDpub3QoLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQpOm5vdCguZGF0YWdyaWQtcm93'@; put 'LWFjdGlvbnMpOm5vdCguZGF0YWdyaWQtc2VsZWN0KXtkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLWNlbGwtcGFkZGluZyl9LmRhdGFncmlk'@; put 'LXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1ue2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmct'@; put 'dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LmRhdGFncmlkLWZvb3RlcntmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IG5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpzdHJldGNoO3BhZGRpbmc6dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWln'@; put 'aHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvcik7Ym9yZGVy'@; put 'LXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdGFibGUtZm9vdGVyLWJvcmRlci10b3AtY29sb3IpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci10b3A6bm9uZTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRv'@; put 'bS1yaWdodC1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKX0uZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9ue2Rpc3BsYXk6Zmxl'@; put 'eDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2dhcDp2YXIoLS1jbHItZGF0YWdyaWQtZm9vdGVyLXBhZ2luYXRpb24tZ2FwKX0uZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLXNpemV7ZGlzcGxheTpibG9jaztmbGV4OjEgMSBh'@; put 'dXRvO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWFsaWduOnJpZ2h0fS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tc2l6ZSAuY2xyLXBhZ2Utc2l6ZS1zZWxlY3R7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2Vp'@; put 'Z2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1z'@; put 'bWFsbGNhcHRpb24tbGV0dGVyLXNwYWNpbmcpO21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7dmVydGljYWwtYWxpZ246bWlkZGxlfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tZGVzY3JpcHRpb257d2hp'@; put 'dGUtc3BhY2U6bm93cmFwfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tbGlzdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6Zmxl'@; put 'eDthbGlnbi1pdGVtczpjZW50ZXJ9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb257bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCk7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTtwYWRkaW5nOnZhcigtLWNsci1k'@; put 'YXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXBhZGRpbmcpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1jb2xvcik7Y29sb3I6dmFyKC0t'@; put 'Y2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtdGV4dC1jb2xvcik7bWFyZ2luOjB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb24uZGlzYWJsZWQsLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1'@; put 'bW4tdG9nZ2xlLS1hY3Rpb246ZGlzYWJsZWQsLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb24uZGlzYWJsZWQ6aG92ZXIsLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rp'@; put 'b246ZGlzYWJsZWQ6aG92ZXIsLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb24uZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmRpc2Fi'@; put 'bGVkOmFjdGl2ZXtjdXJzb3I6bm90LWFsbG93ZWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWRpc2FibGVkLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1kaXNhYmxlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2'@; put 'YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1maWxsLWNvbG9yKX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVy'@; put 'LWhvdmVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWZpbGwtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRleHQtaG92ZXItY29sb3IpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1z'@; put 'd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmFjdGl2ZSwuZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjpmb2N1c3tib3gtc2hhZG93Om5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1'@; put 'bW4tdG9nZ2xlLWJvcmRlci1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1hY3RpdmUtY29sb3IpO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRleHQtYWN0aXZlLWNvbG9yKX0uZGF0YWdy'@; put 'aWQtZm9vdGVyIC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMCV9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1j'@; put 'aGVja2JveF06Y2hlY2tlZCtsYWJlbHtjdXJzb3I6ZGVmYXVsdDttYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuZGF0YWdyaWQtZm9vdGVyLXNlbGVjdC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNr'@; put 'Ym94XTpjaGVja2VkK2xhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1kaXNhYmxlZC1jb2xvcil9LmRhdGFncmlkLXNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6'@; put 'Y2VudGVyO3dpZHRoOjEwMCU7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7aGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWxvYWRpbmctYmFja2dyb3VuZCk7ei1pbmRleDo1OTB9LmRh'@; put 'dGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbHtwYWRkaW5nOnZhcigtLWNsci10YWJsZS1jZWxsLWNvbXBhY3QtcGFkZGluZyl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQt'@; put 'Y29sdW1uLXNlcGFyYXRvcjphZnRlcntoZWlnaHQ6Y2FsYygxMDAlIC0gKC41KnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWV4cGFuZGJ5KSkpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdHtwYWRkaW5nOjAgdmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS03KX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LmRhdGFncmlkLWNlbGx7cGFkZGluZzowfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jZWxsIGNsci1pY29ue21hcmdpbi10b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMp'@; put 'IC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKGNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSkpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1j'@; put 'ZWxsIGNkcy1pY29ue21hcmdpbi10b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1j'@; put 'ZWxsIC5iYWRnZXttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3RleHQtYWxpZ246Y2Vu'@; put 'dGVyfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5zcGlubmVye21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJl'@; put 'dC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDow'@; put 'IDA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtvdXRsaW5lLW9mZnNldDp2YXIoLS1jbHItZGF0YWdyaWQtY29tcGFjdC1vdXRsaW5lLW9mZnNldCl9YnV0dG9uLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFu'@; put 'ZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb257bWFyZ2luOjB9LmRhdGFncmlkLWNvbXBhY3Qg'@; put 'LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQuZGF0YWdyaWQtY2VsbHtwYWRkaW5nOjB9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQuZGF0YWdyaWQtY29sdW1ue3BhZGRpbmctdG9wOmNhbGModmFyKC0tY2xyLXRhYmxlLWNvbXBhY3QtdmVydGljYWwtcGFk'@; put 'ZGluZykgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTtwYWRkaW5nLWJvdHRvbTp2YXIoLS1jbHItdGFibGUtY29tcGFjdC12ZXJ0aWNhbC1wYWRkaW5nKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXIg'@; put 'Y2RzLWljb246bm90KFtzaGFwZT1pbmZvLWNpcmNsZV0sW3NoYXBlPWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXSxbc2hhcGU9ZXhjbGFtYXRpb24tY2lyY2xlXSxbc2hhcGU9Y2hlY2stY2lyY2xlXSxbc2hhcGU9aW5mb10sW3NoYXBlPWVycm9yXSksLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlk'@; put 'LXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0IC5zaWducG9zdC10cmlnZ2VyIGNsci1pY29uOm5vdChbc2hhcGU9aW5mby1jaXJjbGVdLFtzaGFwZT1leGNsYW1hdGlvbi10cmlhbmdsZV0sW3NoYXBlPWV4Y2xhbWF0aW9uLWNpcmNsZV0sW3NoYXBlPWNoZWNrLWNpcmNsZV0sW3NoYXBlPWlu'@; put 'Zm9dLFtzaGFwZT1lcnJvcl0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWZvb3RlcntwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4taGVpZ2h0'@; put 'OnZhcigtLWNsci10YWJsZS1jb21wYWN0LXJvdy1oZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSktdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9ue2xpbmUtaGVpZ2h0OnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtOSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb257b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2xyLWRhdGFncmlkLWNvbXBhY3Qtb3V0bGluZS1vZmZzZXQpfS5kYXRh'@; put 'Z3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHt0b3A6MH0uZGF0YWdyaWQtZm9vdGVyLWRlc2Ny'@; put 'aXB0aW9ue2ZsZXg6MSAxIGF1dG87ZmxleC13cmFwOm5vd3JhcDt3aGl0ZS1zcGFjZTpub3dyYXA7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbjphdXRvIDB9LnBhZ2luYXRpb24tbGlzdHtsaXN0LXN0eWxlOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93'@; put 'cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6c3RyZXRjaH0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWN1cnJlbnR7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNk'@; put 'cy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24t'@; put 'bGV0dGVyLXNwYWNpbmcpO2JhY2tncm91bmQ6MCAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHRhcmVhLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1pbnB1dC1ib3JkZXItY29sb3IpO2JvcmRlci13aWR0'@; put 'aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3RleHQtYWxpZ246'@; put 'Y2VudGVyO3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50OmZvY3VzLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tY3VycmVudC5jbHItZm9jdXN7YmFja2dyb3VuZDowIDA7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWZvY3VzLWNvbG9yKX0ucGFnaW5hdGlvbi1saXN0Pip7cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlv'@; put 'bi1maXJzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3QsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91cywucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpu'@; put 'by1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1maXJzdDpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3Q6ZGlzYWJsZWQsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91czpkaXNhYmxl'@; put 'ZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHQ6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6MX0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWZpcnN0LC5wYWdpbmF0aW9uLWxpc3Qg'@; put 'LnBhZ2luYXRpb24tcHJldmlvdXN7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1sYXN0LC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbmV4dHttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYp'@; put 'fS5wYWdpbmF0aW9uLWxpc3QgYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpu'@; put 'b25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1jb2xvcik7Y3Vyc29yOnBvaW50ZXJ9YnV0dG9uLnBhZ2luYXRpb24tbGlzdCBidXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWNlbGwtd2lkdGgtemVyb3tib3JkZXI6MCFpbXBv'@; put 'cnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDt3aWR0aDowO2ZsZXg6MCAwIGF1dG8haW1wb3J0YW50O21pbi13aWR0aDowIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3RvcDow'@; put 'O2xlZnQ6MH0uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZ3JvdzoxO292ZXJmbG93OmF1dG99LmRhdGFncmlkLWlubmVyLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTtvdmVy'@; put 'ZmxvdzphdXRvO21pbi13aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVyIGRpdi5kYXRhZ3JpZC10YWJsZXttYXgtd2lkdGg6MTAwJTtv'@; put 'dmVyZmxvdzpoaWRkZW59LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVyPi5jZGstdmlydHVhbC1zY3JvbGxhYmxlIGRpdi5kYXRhZ3JpZC10YWJsZXtvdmVyZmxvdzp1bnNldH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4+'@; put 'LmRhdGFncmlkLW91dGVyLXdyYXBwZXI+LmRhdGFncmlkLWlubmVyLXdyYXBwZXIgY2xyLWRnLWNlbGx7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVyIGNsci1kZy1jb2x1bW46'@; put 'Zmlyc3QtY2hpbGR7d2lkdGg6YXV0byFpbXBvcnRhbnR9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1yaWdodDpub25lfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtaW5uZXItd3JhcHBlcnt3aWR0aDozNCV9'@; put 'LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250YWluZXIsLmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1yb3d7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLXRhYmxl'@; put 'LWJvcmRlci1jb2xvcil9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1mb290ZXJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLnBhZ2luYXRpb257d2lkdGg6MTAwJX0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLnBhZ2luYXRpb24tZGVz'@; put 'Y3JpcHRpb24tY29tcGFjdHt0ZXh0LWFsaWduOmxlZnQ7ZmxleDoxfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLWxpc3R7bWFyZ2luLXJpZ2h0OjB9LmRhdGFncmlkLXJvdy1kZXRhaWwtb3Blbntwb3NpdGlvbjpyZWxhdGl2ZX0uZGF0YWdyaWQt'@; put 'cm93LWRldGFpbC1vcGVuOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVy'@; put 'LWNvbG9yKTt0b3A6Y2FsYygxMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7cmlnaHQ6MH0uZGF0YWdyaWQtcm93LWRldGFpbC1vcGVuOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yKTt0b3A6Y2FsYygxMSooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEp'@; put 'KX0uZGF0YWdyaWQtZGV0YWlsLXBhbmV7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlk'@; put 'LWRldGFpbC1wYW5lLWJvcmRlci1jb2xvcik7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRl'@; put 'ci1yYWRpdXMtMTAwKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1iZy1jb2xvcik7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7ZmxleC1ncm93OjI7d2lkdGg6NjYlfS5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4'@; put 'LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MTAwJTtwYWRkaW5nOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50LXBhZGRpbmcpfS5kYXRhZ3JpZC1kZXRhaWwtYm9keXtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFj'@; put 'ZS03KSAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtYm9keS10ZXh0LWNvbG9yKX0uZGF0YWdyaWQtZGV0YWlsLWhlYWRlcntmbGV4OjAgMCBhdXRvO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFy'@; put 'KC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3Bh'@; put 'Y2luZyk7bWFyZ2luLXRvcDowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1oZWFkZXItdGl0bGV7ZmxleDoxIDEgYXV0bztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLWhlYWRlci10aXRsZS1j'@; put 'b2xvcil9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1wYW5lLWNsb3Nle2ZsZXg6MSAxIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlk'@; put 'LWRldGFpbC1wYW5lLWNsb3NlIC5idG4uYnRuLWxpbmt7bWluLXdpZHRoOmF1dG87bWFyZ2luOjA7cGFkZGluZy1yaWdodDowfS5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVyIC5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZSAuYnRuLmJ0bi1saW5rIGNkcy1pY29ue2hlaWdodDp2YXIoLS1jbHIt'@; put 'ZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UtaWNvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UtaWNvbi1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZS1pY29uLXNpemUpO21pbi13aWR0aDp2YXIo'@; put 'LS1jbHItZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UtaWNvbi1zaXplKTtjb2xvcjp2YXIoLS1jbHItbW9kYWwtY2xvc2UtY29sb3IpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmRhdGFncmlkLWRldGFpbC1jYXJldC5kYXRh'@; put 'Z3JpZC1jZWxse3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSAwfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTst'@; put 'by1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1z'@; put 'cGFjZS05KX1idXR0b24uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b246ZGlzYWJsZWQgY2RzLWljb24uZGF0YWdyaWQtZGV0'@; put 'YWlsLWNhcmV0LWljb257LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKX0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uLmlzLW9wZW4gLmRhdGFncmlkLWRldGFpbC1jYXJldC1pY29ue2Jv'@; put 'cmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29u'@; put 'LW9wZW4taWNvbi1jb2xvcil9LmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb257Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWljb24tY29sb3IpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFs'@; put 'LXNwYWNlLTQpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQuZGF0YWdyaWQtY29sdW1ue3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLXRvcGNlbGxwYWRkaW5nKSB2YXIoLS1jbHItdGFibGUtY2VsbHBhZGRpbmcpIHZhcigtLWNsci10YWJsZS1ib3R0b21jZWxscGFkZGluZyl9LmRhdGFncmlkLWRl'@; put 'dGFpbC1vdmVybGF5LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVye3dpZHRoOjA7bWluLXdpZHRoOnVuc2V0fS5kYXRhZ3JpZC1kZXRhaWwtb3ZlcmxheSAuZGF0YWdyaWQtZGV0YWlsLXBhbmV7Ym9yZGVyLWxlZnQ6'@; put 'dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTt3aWR0'@; put 'aDoxMDAlfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5kYXRhZ3JpZC1kZXRhaWwtb3Blbj4uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcj4uZGF0YWdyaWQtaW5uZXItd3JhcHBlcntkaXNwbGF5Om5vbmV9LmRhdGFncmlkLWRldGFpbC1wYW5le2JvcmRlci1sZWZ0OnZhcigt'@; put 'LWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCl9fS5jb2x1bW4t'@; put 'c3dpdGNoe2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IpO2JvcmRlci13aWR0aDp2'@; put 'YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93KTt3'@; put 'aWR0aDpjYWxjKDI1MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4OjEwNTB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVu'@; put 'O2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vi'@; put 'c2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZyl9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDEsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDIsLmNvbHVtbi1z'@; put 'd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDMsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDQsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDUsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDZ7Y29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTtmb250LXNpemU6dmFyKC0t'@; put 'Y2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWln'@; put 'aHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpO21hcmdpbjowfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbnttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KTttYXJnaW46MDtw'@; put 'YWRkaW5nOjB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9uIGNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWNvbG9yKX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBidXR0b24gY2RzLWljb246aG92ZXJ7'@; put 'Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtaG92ZXItY29sb3IpfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbiBjZHMtaWNvbjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZv'@; put 'bnQtYWN0aXZlLWNvbG9yKX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnR7bWF4LWhlaWdodDpjYWxjKDMwMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7b3ZlcmZsb3cteTphdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpICsgdmFyKC0t'@; put 'Y2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSl9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1jb250ZW50IGxpe2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LmNvbHVtbi1zd2l0Y2ggLnN3'@; put 'aXRjaC1mb290ZXIgLmJ0bnttYXJnaW46MDtwYWRkaW5nOjB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1mb290ZXIgLmFjdGlvbi1yaWdodHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kYXRhZ3JpZC1maWx0ZXJ7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNw'@; put 'YWNlLTMpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92'@; put 'ZXItYm9yZGVyLWNvbG9yKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCk7Ym94LXNoYWRvdzp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtmb250LXdl'@; put 'aWdodDo0MDB9LmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXJ7dGV4dC1hbGlnbjpyaWdodH0uZGF0YWdyaWQtZmlsdGVyIC5kYXRhZ3JpZC1maWx0ZXItY2xvc2Utd3JhcHBlciAuY2xvc2V7ZmxvYXQ6bm9uZTtmb250LXNpemU6dW5zZXR9LmRhdGFncmlk'@; put 'LWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWFwcGx5e21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtZmlsdGVyIC5kYXRhZ3JpZC1udW1lcmljLWZpbHRlci1mb3Jte2Rpc3BsYXk6ZmxleDtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uZGF0YWdyaWQtZmlsdGVyIC5kYXRhZ3JpZC1u'@; put 'dW1lcmljLWZpbHRlci1mb3JtIGlucHV0LmRhdGFncmlkLW51bWVyaWMtZmlsdGVyLWlucHV0e3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTUpfS5kYXRhZ3JpZC1maWx0ZXIgLmNsci1mb3JtLWNvbnRyb2x7bWFyZ2luLXRvcDowfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3d7cG9z'@; put 'aXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcik7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0'@; put 'aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3cpO2JvcmRlci1yYWRpdXM6dmFy'@; put 'KC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7Zm9udC13ZWlnaHQ6NDAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTAwJTtoZWlnaHQ6MDt3'@; put 'aWR0aDowO21hcmdpbi10b3A6Y2FsYygtMSp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLWFycm93LXNpemUpKTtib3JkZXItdG9wOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tYXJyb3ctc2l6ZSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItZGF0YWdyaWQt'@; put 'YWN0aW9uLWFycm93LXNpemUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC13aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLWFycm93LXNpemUpO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXIt'@; put 'Ym9yZGVyLWNvbG9yKX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKC0xKnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tYXJyb3ctc2l6'@; put 'ZSkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTtib3JkZXItdG9wOmNhbGModmFyKC0tY2xyLWRhdGFncmlkLWFjdGlvbi1hcnJvdy1zaXplKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206Y2FsYyh2YXIoLS1jbHItZGF0'@; put 'YWdyaWQtYWN0aW9uLWFycm93LXNpemUpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOmNhbGModmFyKC0tY2xyLWRhdGFncmlkLWFjdGlvbi1hcnJvdy1zaXplKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpO2Jv'@; put 'cmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVte2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnkt'@; put 'Zm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcp'@; put 'O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWJnLWNvbG9yKTtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7YWxpZ24taXRl'@; put 'bXM6Y2VudGVyO2hlaWdodDphdXRvO21hcmdpbjowO3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtY29sb3IpO2JhY2tncm91bmQt'@; put 'Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtYmctY29sb3IpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmhvdmVye2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWhvdmVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1k'@; put 'cm9wZG93bi1pdGVtLWhvdmVyLWJnLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3Zlci5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1ob3Zlci1iZy1jb2xv'@; put 'cil9LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06YWN0aXZle2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtYmctY29sb3IpfS5kYXRhZ3JpZC1hY3Rp'@; put 'b24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmFjdGl2ZS5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze3otaW5kZXg6aW5oZXJp'@; put 'dH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZCwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWRpc2FibGVkLWNvbG9yKTti'@; put 'YWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWRpc2FibGVkLWJnLWNvbG9yKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQt'@; put 'YWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDphY3RpdmUsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6YWN0'@; put 'aXZle2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZXtkaXNwbGF5OmJsb2NrfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZCwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxj'@; put 'dWxhdGUtbW9kZSAuZGF0YWdyaWQtZm9vdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctbWFzdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctY2xpY2thYmxle2Rpc3BsYXk6bm9uZX0u'@; put 'ZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGV7ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6YXV0b30uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUg'@; put 'LmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlcntkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlciAuZGF0YWdyaWQtY29s'@; put 'dW1ue2Rpc3BsYXk6dGFibGUtY2VsbDttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNSl9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi1oZWFkZXIgLmRhdGFncmlk'@; put 'LWNvbHVtbntib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlcm93LWJvcmRlcmNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKTtib3JkZXItc3R5bGU6c29saWQ7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtdG9wY2VsbHBhZGRpbmcpIHZhcigtLWNsci10'@; put 'YWJsZS1jZWxscGFkZGluZykgdmFyKC0tY2xyLXRhYmxlLWJvdHRvbWNlbGxwYWRkaW5nKTt2ZXJ0aWNhbC1hbGlnbjp0b3A7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo'@; put 'eS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKTttYXJnaW4tdG9wOnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSAuZGF0YWdyaWQtcm93e2Rpc3BsYXk6dGFibGUtcm93fS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1'@; put 'bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSAuZGF0YWdyaWQtcm93IGNsci1leHBhbmRhYmxlLWFuaW1hdGlvbntkaXNwbGF5Om5vbmV9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5kYXRhZ3Jp'@; put 'ZC1yb3cgLmRhdGFncmlkLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTE1KTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtdG9wY2VsbHBhZGRpbmcpIHZh'@; put 'cigtLWNsci10YWJsZS1jZWxscGFkZGluZykgdmFyKC0tY2xyLXRhYmxlLWJvdHRvbWNlbGxwYWRkaW5nKTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IsLmRhdGFncmlkLWhvc3QuZGF0'@; put 'YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lciwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtZml4ZWQtY29sdW1ue2Rpc3BsYXk6bm9uZX1Aa2V5ZnJhbWVzIGNsci1za2VsZXRvbi1sb2FkaW5nezAle2Jh'@; put 'Y2tncm91bmQtcG9zaXRpb24teDowfXRve2JhY2tncm91bmQtcG9zaXRpb24teDotMjAwJX19LmZhZGV7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZS1pbi1vdXQ7d2lsbC1jaGFuZ2U6b3BhY2l0eX0uZmFkZS5pbntvcGFjaXR5OjF9LmZhZGVEb3due29wYWNpdHk6MDt0'@; put 'cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjUlKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UtaW4tb3V0LHRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXQ7d2lsbC1jaGFuZ2U6b3BhY2l0eSx0cmFuc2Zvcm19LmZhZGVEb3duLmlue29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfS5z'@; put 'a2VsZXRvbi1sb2FkaW5nOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtiYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3Qtc2tlbGV0b24tbG9hZGluZy1ncmFkaWVudCk7YW5pbWF0aW9uOnZhcigtLWNkcy1nbG9iYWwtYW5pbWF0aW9uLXNrZWxldG9uLWR1cmF0aW9uKSBjbHItc2tlbGV0b24tbG9hZGluZyB2YXIoLS1jZHMtZ2xvYmFsLWFuaW1hdGlvbi1lYXNpbmctaW4tb3V0KSBpbmZpbml0ZTtiYWNrZ3Jv'@; put 'dW5kLXNpemU6MjAwJSAxMDAlfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXdpemFyZC1kZWZhdWx0LXNwYWNlOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1jbHItd2l6YXJkLW1haW4tYmdjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW92ZXJsYXktYmFja2dyb3VuZCk7LS1jbHIt'@; put 'd2l6YXJkLW1haW4tdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXdpemFyZC1zdGVwbmF2LWJnY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci13aXphcmQtc3RlcG5hdi10ZXh0OnZh'@; put 'cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtdGV4dC1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXdpemFyZC1zdGVwbmF2LXRleHQtaG92ZXI6dmFyKC0tY2RzLWFsaWFz'@; put 'LW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zlcik7LS1jbHItd2l6YXJkLXN0ZXBuYXYtdGV4dC0tYWN0aXZlOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQpOy0tY2xyLXdpemFyZC1zdGVwbmF2LXRleHQtZGlzYWJsZWQ6dmFyKC0tY2RzLWFs'@; put 'aWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0tYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbC10aW50KTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpOy0tY2xy'@; put 'LXdpemFyZC1zdGVwbmF2LWl0ZW0tYm9yZGVyLWNvbG9yLS1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzKTstLWNsci13aXphcmQtc3RlcG5hdi1zZWxlY3RlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhp'@; put 'Z2hsaWdodCk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtYWN0aXZlLWJnY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci13aXphcmQtc3RlcG5hdi1zZWxlY3RlZC1iZ2NvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1h'@; put 'Y3RpdmUtYmdjb2xvcik7LS1jbHItd2l6YXJkLXN0ZXBuYXYtc2VsZWN0ZWQtaG92ZXItYmdjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLXdpemFyZC1zdGVwbmF2LXNlbGVjdGVkLWFjdGl2ZS1iZ2NvbG9y'@; put 'OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1hY3RpdmUpOy0tY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstZXJyb3ItaWNvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1j'@; put 'b21wbGV0ZS1pY29uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJvcmRlci1jb2xvcik7LS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1ob3Zlci1i'@; put 'Zy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXIpOy0tY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmUpOy0tY2xyLXdp'@; put 'emFyZC1zdGVwbmF2LWxpbmstcGFkZGluZzpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTstLWNsci13aXphcmQtc3RlcG5hdi1pdGVtLWVycm9yLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1j'@; put 'bHItd2l6YXJkLXRpdGxlLXRleHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci13aXphcmQtZm9vdGVyLWhlaWdodDphdXRvOy0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Ip'@; put 'Oy0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLWNvbG9yLS1ob3ZlcmVkOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLXdpemFyZC1ib3gtc2hhZG93OnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTMwMCk7LS1jbHItd2l6YXJkLWJv'@; put 'cmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItd2l6YXJkLWNvbnRlbnQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKX0uY2xyLXdpemFyZCAubW9kYWwtZGlhbG9ne2Rp'@; put 'c3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaGFkb3c6dmFyKC0tY2xyLXdpemFyZC1ib3gtc2hhZG93KTtoZWlnaHQ6NTAlO21heC1oZWlnaHQ6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtY29udGVudHtib3JkZXItcmFkaXVzOjAgdmFy'@; put 'KC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzKSB2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMpIDA7Ym94LXNoYWRvdzpub25lO3BhZGRpbmc6MDtmbGV4OjIgMiBhdXRvO3dpZHRoOjY2JTtoZWlnaHQ6aW5pdGlhbDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O2FsaWduLWl0'@; put 'ZW1zOmZsZXgtc3RhcnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItd2l6YXJkIC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlO3BhZGRpbmc6dmFyKC0tY2xyLXdpemFyZC1kZWZhdWx0LXNwYWNlKSB2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQt'@; put 'c3BhY2UpIDB9LmNsci13aXphcmQgLm1vZGFsLXRpdGxle2NvbG9yOnZhcigtLWNsci13aXphcmQtdGl0bGUtdGV4dCk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aWR0aDoxMDAlfS5jbHItd2l6YXJkIC5tb2RhbC1ib2R5e2ZsZXg6MSAxIGF1dG87Y29sb3I6dmFyKC0tY2xy'@; put 'LXdpemFyZC1tYWluLXRleHQtY29sb3IpO3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpfS5jbHItd2l6YXJkIC5tb2RhbC1mb290ZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2ZsZXg6MCAwIHZhcigtLWNsci13aXphcmQtZm9vdGVyLWhlaWdo'@; put 'dCk7aGVpZ2h0OnZhcigtLWNsci13aXphcmQtZm9vdGVyLWhlaWdodCk7bWluLWhlaWdodDp2YXIoLS1jbHItd2l6YXJkLWZvb3Rlci1oZWlnaHQpO21heC1oZWlnaHQ6dmFyKC0tY2xyLXdpemFyZC1mb290ZXItaGVpZ2h0KTtwYWRkaW5nOjAgdmFyKC0tY2xyLXdpemFyZC1kZWZhdWx0LXNw'@; put 'YWNlKSB2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWJ0bnttYXJnaW46MDttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZS10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXg6MCAxIGF1'@; put 'dG87d2lkdGg6MTAwJTtvdXRsaW5lOjB9LmNsci13aXphcmQgLm1vZGFsLXRpdGxlLXdyYXBwZXJ7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtaGVhZGVyLWFjdGlvbnMtd3JhcHBlcntmbGV4OjEgMCBhdXRvO2hlaWdodDp2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpO3Bh'@; put 'ZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO3BhZGRpbmctcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleH0uY2xyLXdpemFyZCAuY2xyLXdpemFy'@; put 'ZC1oZWFkZXItYWN0aW9ue2hlaWdodDp2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpO3dpZHRoOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7Ym9yZGVyOjA7cGFkZGluZzowO21hcmdpbjowO21pbi13aWR0aDp2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpO2xp'@; put 'bmUtaGVpZ2h0OnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7Zm9udC1zaXplOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLWNvbG9yKTt0cmFuc2l0aW9uOmNvbG9yIGxpbmVhciAuMnN9LmNsci13aXph'@; put 'cmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbiBhe2NvbG9yOnZhcigtLWNsci13aXphcmQtaGVhZGVyLWFjdGlvbi1jb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbjpob3ZlciwuY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uOmFjdGl2ZSwu'@; put 'Y2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uOmZvY3Vze2NvbG9yOnZhcigtLWNsci13aXphcmQtaGVhZGVyLWFjdGlvbi1jb2xvci0taG92ZXJlZCl9LmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbiBjZHMtaWNvbiwuY2xyLXdpemFyZCAuY2xyLXdpemFy'@; put 'ZC1oZWFkZXItYWN0aW9uIGNsci1pY29ue2hlaWdodDp2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpO3dpZHRoOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSl9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye2ZsZXg6MSAxIGF1dG87aGVpZ2h0OjEw'@; put 'MCU7d2lkdGg6MzQlO21heC13aWR0aDozNCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvcmRlcjotMTtvdmVyZmxvdzpoaWRkZW47b3ZlcmZsb3cteTphdXRvO2JvcmRlci1yaWdodDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoKSBzb2xpZCB2YXIoLS1jbHItd2l6'@; put 'YXJkLXN0ZXBuYXYtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1iZ2NvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci13aXphcmQtYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLWNsci13aXphcmQtYm9yZGVyLXJhZGl1cyl9LmNsci13'@; put 'aXphcmQgLmNsci13aXphcmQtc3RlcG5hdntwYWRkaW5nOjAgMCB2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpIHZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtdGV4dCk7d2lkdGg6MTAwJTtm'@; put 'bGV4OjEgMSBhdXRvfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGlzdHtkaXNwbGF5OmJsb2NrO2JveC1zaGFkb3c6bm9uZTtjb3VudGVyLXJlc2V0OmE7d2hpdGUtc3BhY2U6bm93cmFwO2hlaWdodDphdXRvO2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbjowO3dpZHRoOjEw'@; put 'MCV9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVte2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWJvcmRlci1zaXplKSBzb2xpZCB2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS1ib3JkZXItY29sb3IpO21hcmdpbi1ib3R0'@; put 'b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKTtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtYmdjb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtIGJ1dHRvbi5jbHIt'@; put 'd2l6YXJkLXN0ZXBuYXYtbGlua3tjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LXRleHQtZGlzYWJsZWQpfS5jbHItd2l6YXJkIC5j'@; put 'bHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5hY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LXRleHQtLWFjdGl2ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtc2VsZWN0ZWQtYmdjb2xvcik7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tY2xyLXdp'@; put 'emFyZC1zdGVwbmF2LXNlbGVjdGVkLWJvcmRlci1jb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1zZWxlY3RlZC1ob3Zlci1iZ2NvbG9yKX0uY2xyLXdpemFyZCAu'@; put 'Y2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uYWN0aXZlOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1zZWxlY3RlZC1hY3RpdmUtYmdjb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCguYWN0'@; put 'aXZlKTpob3Zlcntjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtdGV4dC1ob3Zlcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1ob3Zlci1iZy1jb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtOm5vdCguZGlzYWJs'@; put 'ZWQpOm5vdCguYWN0aXZlKTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LXRleHQtYWN0aXZlKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1saW5rLWFjdGl2ZS1iZy1jb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1p'@; put 'dGVtIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGluay10aXRsZXt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6bm9ybWFsfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5jb21wbGV0ZXtib3JkZXItY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0t'@; put 'Ym9yZGVyLWNvbG9yLS1hY3RpdmUpO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBlYXNlLWlufS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5jb21wbGV0ZSAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstaWNvbiBjZHMtaWNvbnstLWNvbG9yOnZhcigtLWNsci13aXph'@; put 'cmQtc3RlcG5hdi1saW5rLWNvbXBsZXRlLWljb24tY29sb3IpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5lcnJvcntib3JkZXItY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0tZXJyb3ItYm9yZGVyLWNvbG9yKTt0cmFuc2l0aW9uOmJvcmRlci1jb2xv'@; put 'ciAuMnMgZWFzZS1pbn0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uZXJyb3IgLmNsci13aXphcmQtc3RlcG5hdi1saW5rLWljb24gY2RzLWljb257LS1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1lcnJvci1pY29uLWNvbG9yKX0uY2xyLXdpemFyZCAu'@; put 'Y2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0ubm8tY2xpY2sgYnV0dG9ue3BvaW50ZXItZXZlbnRzOm5vbmV9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1saW5re3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O3BsYWNlLWNvbnRlbnQ6bm9ybWFsO2NvbG9yOmluaGVyaXQ7YWxpZ24taXRl'@; put 'bXM6Y2VudGVyO3RleHQtYWxpZ246bGVmdDt0ZXh0LXRyYW5zZm9ybTpub25lO21hcmdpbjowO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTtoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIpO21heC13aWR0aDppbmhlcml0O2ZvbnQtc2l6'@; put 'ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtbWVkaXVtKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0'@; put 'ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmsgLmNsci13aXphcmQtc3RlcG5hdi1saW5rLWljb257ZGlzcGxheTpmbGV4fS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0'@; put 'ZXBuYXYtbGluayAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstaWNvbiwuY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmsgLmNsci13aXphcmQtc3RlcG5hdi1saW5rLXBhZ2UtbnVtYmVye3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci13aXphcmQgLmNsci13'@; put 'aXphcmQtdGl0bGV7bWFyZ2luLXRvcDowO2ZsZXg6MCAwIGF1dG87Y29sb3I6dmFyKC0tY2xyLXdpemFyZC10aXRsZS10ZXh0KTtwYWRkaW5nOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1z'@; put 'aXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo'@; put 'eS1zZWN0aW9uLWxldHRlci1zcGFjaW5nKX0uY2xyLXdpemFyZCAubW9kYWwtY29udGVudC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleDoxIDEgMTAwJTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwt'@; put 'Y29udGVudC13cmFwcGVyIC5tb2RhbC1uYXZ7aGVpZ2h0OmF1dG99LmNsci13aXphcmQgLmNsci13aXphcmQtZm9vdGVyLWJ1dHRvbnN7dGV4dC1hbGlnbjpyaWdodDttYXJnaW46MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1mb290ZXItYnV0dG9ucy13cmFwcGVye2Rpc3BsYXk6ZmxleDtm'@; put 'bGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOm5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLXdyYXBwZXJ7ZmxleDowIDEgYXV0b30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1i'@; put 'dG4td3JhcHBlclthcmlhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLmJ0bi1saW5re3BhZGRpbmc6MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQgLmNsci13aXphcmQtcGFnZTpu'@; put 'b3QoW2FyaWEtaGlkZGVuPXRydWVdKXtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5tb2RhbC1kaWFsb2d7aGVpZ2h0Ojc1dmh9LmNsci13aXphcmQgLm1vZGFsLWJvZHktd3JhcHBlcnttYXgtaGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO3dpZHRoOjEwMCV9LmNsci13'@; put 'aXphcmQud2l6YXJkLW1kIC5tb2RhbC1kaWFsb2d7bWluLWhlaWdodDpjYWxjKDQyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LWhlaWdodDpjYWxjKDUwNCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQud2l6YXJkLW1kIC5tb2RhbC1jb250'@; put 'ZW50LC5jbHItd2l6YXJkLndpemFyZC1tZCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWF4LWhlaWdodDpjYWxjKDUwNCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQud2l6YXJkLW1kIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttaW4td2lkdGg6'@; put 'Y2FsYygyMTYqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQud2l6YXJkLWxnIC5tb2RhbC1kaWFsb2d7bWluLWhlaWdodDpjYWxjKDQyMCooMXJlbS92YXIoLS1jZHMtZ2xv'@; put 'YmFsLWJhc2UpKSk7bWF4LWhlaWdodDpjYWxjKDcyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQud2l6YXJkLWxnIC5tb2RhbC1jb250ZW50LC5jbHItd2l6YXJkLndpemFyZC1sZyAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWF4LWhlaWdodDpjYWxj'@; put 'KDcyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQud2l6YXJkLWxnIC5uYXYtcGFuZWwsLmNsci13aXphcmQud2l6YXJkLWxnIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttaW4td2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNl'@; put 'KSkpO21heC13aWR0aDpjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQud2l6YXJkLXhsIC5tb2RhbC1kaWFsb2d7aGVpZ2h0Ojc1dmg7bWF4LWhlaWdodDpub25lfS5jbHItd2l6YXJkLndpemFyZC14bCAubmF2LXBhbmVsLC5jbHItd2l6YXJkLndp'@; put 'emFyZC14bCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWluLXdpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttYXgtd2lkdGg6Y2FsYygzMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5jbHItd2l6YXJkIC5zcGlubmVyOm5vdCguc3Bp'@; put 'bm5lci1pbmxpbmUpOm5vdCguY2xyLXRyZWVub2RlLXNwaW5uZXIpe2xlZnQ6Y2FsYyg1MCUgKyBjYWxjKDExNSooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0MCV9LmNsci13aXphcmQtcGFnZT46Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDow'@; put 'fS5jbHItd2l6YXJkLXBhZ2U+OmZpcnN0LWNoaWxkPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LmNsci13aXphcmQtcGFnZT5mb3JtOmZpcnN0LWNoaWxke3BhZGRpbmctdG9wOjB9LmNsci13aXphcmQtcGFnZT5mb3JtOmZpcnN0LWNoaWxkPi5mb3JtLWJsb2NrOmZpcnN0LWNoaWxke21h'@; put 'cmdpbi10b3A6MH0uY2xyLXdpemFyZC0taW5saW5le2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lPmNsci1tb2RhbD4ubW9kYWw6Zm9jdXN7b3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtY29sb3I6dHJhbnNwYXJlbnR9LmNsci13aXphcmQtLWlubGluZSBj'@; put 'bHItbW9kYWx7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFse3BhZGRpbmc6MDtwb3NpdGlvbjpzdGF0aWM7aGVpZ2h0OjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5jb250ZW50LWNv'@; put 'bnRhaW5lcntoZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAuY29udGVudC1jb250YWluZXIgLm5hdi1wYW5lbHtoZWlnaHQ6OTklO3dpZHRoOjk5JX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAubW9kYWwtY29udGVudHtib3gtc2hhZG93Om5vbmV9LmNsci13aXph'@; put 'cmQtLWlubGluZSAubW9kYWwgLm1vZGFsLWRpYWxvZ3ttaW4taGVpZ2h0OjEwMCU7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTt6LWluZGV4OmF1dG99LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtYm9keS13cmFwcGVye2hlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWhl'@; put 'YWRlciAuY2xvc2V7ZGlzcGxheTpub25lfS5jbHItd2l6YXJkLS1pbmxpbmUgLm5hdi5uYXZMaXN0e3BhZGRpbmctdG9wOjB9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtZGlhbG9nIC5tb2RhbC1jb250ZW50IC5tb2RhbC1ib2R5IC5jb250ZW50LWFyZWF7b3ZlcmZsb3cteTphdXRvfS5j'@; put 'bHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWJhY2tkcm9we2hlaWdodDowO3dpZHRoOjA7ZGlzcGxheTpub25lfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWNvbnRlbnQtd3JhcHBlcnthbGlnbi1pdGVtczpzdHJldGNoO2hlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLmNsci13'@; put 'aXphcmQtc3RlcG5hdi13cmFwcGVyLC5jbHItd2l6YXJkLS1pbmxpbmUuY2xyLXdpemFyZCAubW9kYWwtY29udGVudHttaW4taGVpZ2h0OjEwMCU7aGVpZ2h0OmF1dG87bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVyIC5jbHIt'@; put 'd2l6YXJkLXN0ZXBuYXYsLmNsci13aXphcmQtLWlubGluZS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50IC5jbHItd2l6YXJkLXN0ZXBuYXZ7aGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLW5vLXNoYWRvdyAubW9kYWwtY29udGVudC13cmFwcGVyLC5jbHItd2l6YXJkLS1uby1zaGFkb3cgLm1v'@; put 'ZGFsLWRpYWxvZ3tib3gtc2hhZG93Om5vbmV9LmNsci13aXphcmQtLW5vLXRpdGxlIC5jbHItd2l6YXJkLXRpdGxle2Rpc3BsYXk6bm9uZX0uY2xyLXdpemFyZC0tbm8tdGl0bGUgLmNsci13aXphcmQtc3RlcG5hdntwYWRkaW5nLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5tYWlu'@; put 'LWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYSAud2l6YXJkLWluLXBhZ2Uud2l6YXJkLWluLXBhZ2UtLWZpbGwtY29udGVudC1hcmVhe2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmNhbGMoMTAwJSArIDIuNHJlbSk7bWFyZ2luOi0xLjJyZW19LndpemFyZC1pbi1wYWdl'@; put 'IC5jbHItd2l6YXJkLWZvb3Rlci1idXR0b25zLXdyYXBwZXJ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9QG1lZGlhIHNjcmVlbnsuY2xyLXdpemFyZC1wYWdlW2FyaWEtaGlkZGVuPXRydWVde2Rpc3BsYXk6bm9uZX19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItd2l6'@; put 'YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb257bWFyZ2luLXRvcDpjYWxjKC0zKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX19OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItc2lnbnBvc3QtY29udGVudC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDAp'@; put 'Oy0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItc2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3IpOy0t'@; put 'Y2xyLXNpZ25wb3N0LWFjdGlvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1zaWducG9zdC1hY3Rpb24taG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zlcik7LS1jbHItc2lnbnBvc3Qt'@; put 'YWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItc2lnbnBvc3QtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1zaWducG9zdC1wb2ludGVyLXNp'@; put 'emU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTstLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1zaXplKSBzb2xpZCB2YXIoLS1jbHItc2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3IpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52'@; put 'aXNpYmxlLWJvcmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1zaXplKSBzb2xpZCB0cmFuc3BhcmVudDstLWNsci1zaWducG9zdC1wb2ludGVyLXBzZXVkby1ib3JkZXI6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItc2l6ZSkgc29saWQgdmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRl'@; put 'bnQtYmctY29sb3IpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc2V1ZG8tYm9yZGVyKTstLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1zaXplKX0uc2lnbnBvc3R7ZGlz'@; put 'cGxheTppbmxpbmUtYmxvY2t9LnNpZ25wb3N0OmhvdmVye2N1cnNvcjpwb2ludGVyfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2Upe21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXItd2lkdGg6MDtjb2xvcjp2YXIoLS1jbHItc2lnbnBvc3QtYWN0aW9uLWNvbG9yKX0uc2ln'@; put 'bnBvc3QgLnNpZ25wb3N0LWFjdGlvbjpub3QoLmNsb3NlKSBjZHMtaWNvbiwuc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbjpub3QoLmNsb3NlKSBjbHItaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2NvbG9yOnZh'@; put 'cigtLWNsci1zaWducG9zdC1hY3Rpb24tY29sb3IpfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2UpIGNkcy1pY29uOmhvdmVyLC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2UpIGNsci1pY29uOmhvdmVyLC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9u'@; put 'Om5vdCguY2xvc2UpOmhvdmVye2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24taG92ZXItY29sb3IpfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2UpLmFjdGl2ZSBjZHMtaWNvbiwuc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbjpub3QoLmNsb3NlKS5hY3RpdmUg'@; put 'Y2xyLWljb24sLnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb246bm90KC5jbG9zZSkuYWN0aXZle2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uc2lnbnBvc3QgLnNpZ25wb3N0LWNvbnRlbnQtaGVhZGVyIGJ1dHRvbntsaW5lLWhlaWdodDowO2hlaWdodDp2'@; put 'YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5zaWducG9zdCAuc2lnbnBvc3QtY29udGVudC1oZWFkZXIg'@; put 'YnV0dG9uIGNkcy1pY29uLC5zaWducG9zdCAuc2lnbnBvc3QtY29udGVudC1oZWFkZXIgYnV0dG9uIGNsci1pY29ue2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl'@; put 'LTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5zaWducG9zdC10cmlnZ2Vye21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWZsZXh9LnNpZ25wb3N0LWNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDttaW4td2lkdGg6Y2FsYygyMTYqKDFyZW0vdmFyKC0t'@; put 'Y2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKTttYXgtaGVpZ2h0OmNhbGMoNTA0KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtkaXNwbGF5'@; put 'OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwNTB9LnNpZ25wb3N0LWNvbnRlbnQ6aG92ZXJ7Y3Vyc29yOmRlZmF1bHR9LnNpZ25wb3N0LWNvbnRlbnQgLnBvcG92ZXItcG9pbnRlcntoZWlnaHQ6MDt3aWR0aDowO3Bvc2l0aW9uOmFic29sdXRlfS5zaWducG9zdC1j'@; put 'b250ZW50IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7aGVpZ2h0OjA7d2lkdGg6MDtwb3NpdGlvbjphYnNvbHV0ZX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRl'@; put 'ciwuc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7Ym90dG9tOmNhbGMoLTEqdmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1zaXplKSl9LnNpZ25wb3N0LWNvbnRlbnQudG9wLWxl'@; put 'ZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9p'@; put 'bnRlci1wc3VlZG8tYm9yZGVyKTtib3R0b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5wb3BvdmVyLXBvaW50'@; put 'ZXJ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDp2'@; put 'YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTtyaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52'@; put 'aXNpYmxlLWJvcmRlcik7bGVmdDo1MCV9LnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEp'@; put 'fS5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQudG9wLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJs'@; put 'ZS1ib3JkZXIpO2xlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO2xlZnQ6'@; put 'dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9p'@; put 'bnRlcntib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7dG9wOmNhbGMoLTEqdmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1zaXplKSl9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNv'@; put 'bnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKTt0b3A6dmFyKC0t'@; put 'Y2RzLWdsb2JhbC1zcGFjZS0yKX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25w'@; put 'b3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1p'@; put 'bnZpc2libGUtYm9yZGVyKTtyaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDo1MCV9'@; put 'LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jbHItc2lnbnBvc3QtYm9yZGVyLXNpemUpIC0gdmFy'@; put 'KC0tY2RzLWdsb2JhbC1zcGFjZS0xKSl9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLXJpZ2h0IC5zaWducG9zdC13cmFwe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6dmFyKC0tY2xy'@; put 'LXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1yaWdodCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBv'@; put 'aW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQubGVmdC1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5s'@; put 'ZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1sZWZ0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jbHItc2lnbnBvc3QtYm9yZGVyLXNpemUpKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVy'@; put 'OmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5sZWZ0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9y'@; put 'ZGVyKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2li'@; put 'bGUtYm9yZGVyKTtib3R0b206Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDpj'@; put 'YWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTtyaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpfS5zaWducG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWJvdHRvbTp2YXIo'@; put 'LS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTt0b3A6NTAlfS5zaWducG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7dG9w'@; put 'OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSk7bGVmdDpjYWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLXJpZ2h0LXJh'@; put 'ZGl1czowfS5zaWducG9zdC1jb250ZW50LmxlZnQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTt0b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29u'@; put 'dGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpO2xlZnQ6Y2FsYygtMSp2YXIoLS1jbHItc2lnbnBvc3QtYm9y'@; put 'ZGVyLXNpemUpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSl9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5w'@; put 'b3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7bGVmdDpjYWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZSkpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2ln'@; put 'bnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKTtsZWZ0'@; put 'OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5zaWducG9zdC13cmFwe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnBvcG92ZXItcG9pbnRlcntib3JkZXItdG9wOnZhcigtLWNsci1z'@; put 'aWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO2JvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVy'@; put 'LWludmlzaWJsZS1ib3JkZXIpO3RvcDpjYWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOnZhcigtLWNsci1z'@; put 'aWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDo1MCV9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7dG9wOnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtMSl9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5zaWducG9zdC13cmFwe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOnZhcigtLWNsci1z'@; put 'aWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2lu'@; put 'dGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWducG9zdC1jb250ZW50LWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3dpZHRoOjEwMCU7YmFja2dyb3Vu'@; put 'ZC1jb2xvcjppbmhlcml0O3RvcDowO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1yYWRpdXMpfS5zaWducG9zdC1jb250ZW50LWhlYWRlciAuc2lnbnBvc3QtdGl0bGV7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXpl'@; put 'KTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt'@; put 'Y2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7bWFyZ2luLXJpZ2h0OmF1dG99LnNpZ25wb3N0LXdyYXB7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykgY2FsYygxNSooMXJlbS92YXIo'@; put 'LS1jZHMtZ2xvYmFsLWJhc2UpKSk7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItcmFkaXVzKTti'@; put 'YWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zaWducG9zdC1jb250ZW50LWJnLWNvbG9yKTt6LWluZGV4OjEwNTA7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uc2lnbnBvc3QtY29udGVudC1ib2R5e3BhZGRpbmctYm90dG9tOnZhcigtLWNk'@; put 'cy1nbG9iYWwtc3BhY2UtMSk7Y29sb3I6dmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtY29sb3IpO3RleHQtYWxpZ246bGVmdDttYXgtaGVpZ2h0OmNhbGMoNDUwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtvdmVyZmxvdy15OmF1dG87Zm9udC1zaXplOnZhcigtLWNkcy1hbGlh'@; put 'cy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5'@; put 'LWJvZHktbGV0dGVyLXNwYWNpbmcpfS5jbHItYWNjb3JkaW9ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5jbHItYWNjb3JkaW9uLXBhbmVse2Rpc3BsYXk6YmxvY2t9LmNsci1hY2NvcmRpb24taGVhZGVye2NvbG9yOnZhcigtLWNsci1h'@; put 'Y2NvcmRpb24tdGV4dC1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWluZGljYXRvcik7YmFja2dyb3VuZDp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yKTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7Ym9y'@; put 'ZGVyOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkgc29saWQgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b20td2lkdGg6MDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250'@; put 'LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OmNhbGMoMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0'@; put 'ZXItc3BhY2luZyk7dGV4dC1hbGlnbjpsZWZ0fS5jbHItYWNjb3JkaW9uLWhlYWRlcjpob3Zlcntjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3ItaG92ZXIpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItaG92ZXItYmFja2dyb3VuZC1jb2xv'@; put 'cil9LmNsci1hY2NvcmRpb24taGVhZGVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3ItYWN0aXZlKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWFjY29yZGlvbi1wYW5l'@; put 'bC1kaXNhYmxlZD5kaXY+LmNsci1hY2NvcmRpb24taGVhZGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItYmFja2dyb3VuZC1jb2xvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQ+ZGl2Pi5jbHItYWNjb3JkaW9uLWhlYWRlcjpob3ZlciwuY2xy'@; put 'LWFjY29yZGlvbi1wYW5lbC1kaXNhYmxlZD5kaXY+LmNsci1hY2NvcmRpb24taGVhZGVyOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWJhY2tncm91bmQtY29sb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkPi5jbHItYWNjb3JkaW9u'@; put 'LXBhbmVsLW9wZW4+LmNsci1hY2NvcmRpb24taGVhZGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQ+LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xy'@; put 'LWFjY29yZGlvbi1oZWFkZXI6aG92ZXIsLmNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQ+LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1oZWFkZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItZGlzYWJsZWQtYmFj'@; put 'a2dyb3VuZC1jb2xvcil9LmNsci1hY2NvcmRpb24tcGFuZWw6bGFzdC1jaGlsZCAuY2xyLWFjY29yZGlvbi1jb250ZW50LC5jbHItYWNjb3JkaW9uLXBhbmVsOmxhc3QtY2hpbGQgLmNsci1hY2NvcmRpb24taGVhZGVye2JvcmRlci1ib3R0b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSBz'@; put 'b2xpZCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvcil9LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbntkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyB3cmFwO2ZsZXg6MSAxIDA7d2lkdGg6MTAwJTtib3JkZXI6MDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCk7'@; put 'YmFja2dyb3VuZDowIDA7dGV4dC1hbGlnbjpsZWZ0O2N1cnNvcjpwb2ludGVyO2NvbG9yOmluaGVyaXQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbntmbGV4LWZsb3c6cm93fX0uY2xyLWFj'@; put 'Y29yZGlvbi1oZWFkZXItYnV0dG9uOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uOmRpc2FibGVkIC5jbHItYWNjb3JkaW9uLXN0YXR1cywuY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uOmRpc2FibGVkIC5jbHItYWNjb3JkaW9uLXRp'@; put 'dGxlLC5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b246ZGlzYWJsZWQgLmNsci1hY2NvcmRpb24tZGVzY3JpcHRpb257Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1wYW5lbC1kaXNhYmxlZC1jb2xvcil9LmNsci1hY2NvcmRpb24tc3RhdHVze3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3Bh'@; put 'Y2UtMTEpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcH0uY2xyLWFjY29yZGlvbi10aXRsZXtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWFjY29yZGlvbi1oZWFkZXItaGFzLWRlc2NyaXB0aW9uIC5jbHItYWNjb3JkaW9uLXRpdGxle21pbi13aWR0aDp2YXIoLS1j'@; put 'bHItYWNjb3JkaW9uLXN0ZXAtdGl0bGUtbWluLXdpZHRoKTttYXgtd2lkdGg6Y2FsYygyNjQqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3dpZHRoOjEwMCV9LmNsci1hY2NvcmRpb24tZGVzY3JpcHRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOmNhbGMoNjUwKigx'@; put 'cmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbnttYXJnaW4tbGVmdDpjYWxjKDQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX19LmNsci1hY2NvcmRpb24tY29udGVudHtiYWNrZ3JvdW5k'@; put 'OnZhcigtLWNsci1hY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSBzb2xpZCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOnZhcigt'@; put 'LWNkcy1nbG9iYWwtc3BhY2UtOCk7ZGlzcGxheTpub25lfS5jbHItYWNjb3JkaW9uLWNvbnRlbnQgLmNsci1mb3JtLC5jbHItYWNjb3JkaW9uLWNvbnRlbnQubmctdHJpZ2dlcntwYWRkaW5nOjB9QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7LmNsci1hY2NvcmRpb24tY29udGVudHtwYWRkaW5n'@; put 'OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCkgY2FsYyg1NCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9fS5jbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnR7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfUBtZWRpYShtaW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3Jk'@; put 'aW9uLWlubmVyLWNvbnRlbnR7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpIGNhbGMoNTQqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfX0uY2xyLWFjY29yZGlvbi1hbmdsZXt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnJvdGF0ZSg5MGRl'@; put 'Zyl9LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym94LXNoYWRvdzp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWN1cnJlbnQtaW5kaWNhdG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuIC5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBs'@; put 'ZXRlPi5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hhZG93Omluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItY29tcGxldGUpfS5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4gLmNsci1hY2NvcmRpb24tcGFu'@; put 'ZWwtZXJyb3I+LmNsci1hY2NvcmRpb24taGVhZGVye2JveC1zaGFkb3c6aW5zZXQgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwIDAgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1lcnJvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1j'@; put 'b250ZW50LXJlZ2lvbiAuY2xyLWFjY29yZGlvbi1jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1oZWFkZXJ7YmFja2dyb3VuZDp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1vcGVuLWJhY2tncm91bmQtY29sb3IpfS5jbHIt'@; put 'YWNjb3JkaW9uLXBhbmVsLW9wZW4+LmNsci1hY2NvcmRpb24taGVhZGVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItb3Blbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhl'@; put 'YWRlcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yLWFjdGl2ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1vcGVuLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNj'@; put 'b3JkaW9uLWhlYWRlciAuY2xyLWFjY29yZGlvbi1hbmdsZXt2aXNpYmlsaXR5OnZpc2libGU7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlPi5jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6'@; put 'dmFyKC0tY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1jb2xvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtY29tcGxldGU+LmNsci1hY2NvcmRpb24tYW5nbGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlPi5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hh'@; put 'ZG93Omluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItY29tcGxldGUpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5uZy10cmlnZ2VyLmNsci1hY2NvcmRpb24tY29udGVudHtkaXNwbGF5OmJsb2Nr'@; put 'fS5jbHItYWNjb3JkaW9uLXBhbmVsLWVycm9yPi5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hhZG93Omluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItZXJyb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWVy'@; put 'cm9yPi5jbHItYWNjb3JkaW9uLWVycm9yLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1lcnJvci1jb2xvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtZXJyb3IgLmNsci1hY2NvcmRpb24tbnVtYmVyLC5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBs'@; put 'ZXRlIC5jbHItYWNjb3JkaW9uLW51bWJlcntwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3Jh'@; put 'cDt0b3A6MDtsZWZ0OjB9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24taGVhZGVyOm5vdCguY2xyLXN0ZXBwZXItaGVhZGVyKXtib3gtc2hhZG93Om5vbmV9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2Nv'@; put 'cmRpb24tcGFuZWwgLmNsci1hY2NvcmRpb24taGVhZGVyOm5vdCguY2xyLXN0ZXBwZXItaGVhZGVyKXtib3JkZXItcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cyl9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tcGFu'@; put 'ZWwgLmNsci1hY2NvcmRpb24taGVhZGVyOm5vdCguY2xyLXN0ZXBwZXItaGVhZGVyKSsuY2xyLWFjY29yZGlvbi1jb250ZW50LXJlZ2lvbj4uY2xyLWFjY29yZGlvbi1jb250ZW50e2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKTti'@; put 'b3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXBhbmVsKy5jbHItYWNjb3JkaW9uLXBhbmVsPmRpdltjbGFzcyo9Y2xyLWFjY29yZGlv'@; put 'bi1wYW5lbC1dPi5jbHItYWNjb3JkaW9uLWhlYWRlcjpub3QoLmNsci1zdGVwcGVyLWhlYWRlcil7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp1bnNldDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp1bnNldH0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29y'@; put 'ZGlvbi1wYW5lbDpub3QoOmxhc3QtY2hpbGQpPmRpdltjbGFzcyo9Y2xyLWFjY29yZGlvbi1wYW5lbC1dPi5jbHItYWNjb3JkaW9uLWhlYWRlcjpub3QoLmNsci1zdGVwcGVyLWhlYWRlciksLmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tcGFu'@; put 'ZWw6bm90KDpsYXN0LWNoaWxkKT5kaXZbY2xhc3MqPWNsci1hY2NvcmRpb24tcGFuZWwtXT4uY2xyLWFjY29yZGlvbi1oZWFkZXI6bm90KC5jbHItc3RlcHBlci1oZWFkZXIpKy5jbHItYWNjb3JkaW9uLWNvbnRlbnQtcmVnaW9uPi5jbHItYWNjb3JkaW9uLWNvbnRlbnR7Ym9yZGVyLWJvdHRv'@; put 'bTpub25lO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dW5zZXQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dW5zZXR9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbnthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGlu'@; put 'Zzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tY29udGVudHtwYWRkaW5nOjB9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3Jtcykg'@; put 'LmNsci1hY2NvcmRpb24taW5uZXItY29udGVudHtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO2NvbG9yOnZhcigtLWNsci1hY2NvcmRp'@; put 'b24tY29udGVudC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1hY2NvcmRpb24tY29udGVudC1mb250LXNpemUpfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkIC5jbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnR7'@; put 'Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1wYW5lbC1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXN0YXR1c3t3aWR0aDphdXRvfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0'@; put 'ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXN0YXR1cyBjZHMtaWNvbiwuY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1zdGF0dXMgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS03KX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnR9'@; put 'OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3ItaG92ZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zl'@; put 'cik7LS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3ItYWN0aXZlOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1k'@; put 'aXNhYmxlZCk7LS1jbHItYWNjb3JkaW9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZCk7LS1jbHItYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2Jq'@; put 'ZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1hY2NvcmRpb24tY29udGVudC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLWFjY29yZGlvbi1jb250ZW50LWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnkt'@; put 'Zm9udC1zaXplKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItaG92ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXIpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlLWJhY2tncm91bmQt'@; put 'Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1vcGVuLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcik7LS1jbHItYWNjb3JkaW9u'@; put 'LWhlYWRlci1vcGVuLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1hY3RpdmUpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItb3Blbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlh'@; put 'cy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1ob3Zlcik7LS1jbHItYWNjb3JkaW9uLWVycm9yLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTstLWNsci1hY2NvcmRpb24tY29tcGxldGUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNj'@; put 'ZXNzKTstLWNsci1hY2NvcmRpb24tYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1hY2NvcmRpb24tYm9yZGVy'@; put 'LWxlZnQtY29sb3ItY29tcGxldGU6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzKTstLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItZXJyb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1pbmRpY2F0b3I6aW5z'@; put 'ZXQgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwIDAgdmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXRpbnQpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1jdXJyZW50LWluZGljYXRvcjppbnNldCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDAgMCB2YXIoLS1jZHMtYWxp'@; put 'YXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1hY2NvcmRpb24tc3RlcC10aXRsZS1taW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyl9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+LmNsci1hY2NvcmRpb24taGVh'@; put 'ZGVyLWJ1dHRvbnthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLWhlaWdodDpjYWxjKDU2KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFj'@; put 'ZS04KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtc3RhdHVze21pbi1oZWlnaHQ6dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS05KTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMik7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMik7ZGlzcGxheTppbmxpbmUtZmxleDtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01'@; put 'KTthbGlnbi1pdGVtczpjZW50ZXJ9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtc3RhdHVzPi5jbHItc3RlcC1lcnJvci1pY29uLC5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXBwZXItaGVhZGVy'@; put 'Pi5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b24+LmNsci1zdGVwLXN0YXR1cz4uY2xyLXN0ZXAtY29tcGxldGUtaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3BhZGRpbmc6MH0uY2xyLXN0ZXBwZXItZm9ybXMg'@; put 'LmNsci1zdGVwcGVyLWhlYWRlcj4uY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uPi5jbHItc3RlcC1zdGF0dXM+LmNsci1zdGVwLWVycm9yLWljb257Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1lcnJvci1jb2xvcil9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+'@; put 'LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtc3RhdHVzPi5jbHItc3RlcC1jb21wbGV0ZS1pY29ue2NvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tY29tcGxldGUtY29sb3IpfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXBwZXItaGVhZGVyPi5jbHItYWNjb3JkaW9u'@; put 'LWhlYWRlci1idXR0b24+LmNsci1zdGVwLXRpdGxlLXdyYXBwZXJ7bWluLXdpZHRoOnZhcigtLWNsci1hY2NvcmRpb24tc3RlcC10aXRsZS1taW4td2lkdGgpO21heC13aWR0aDpjYWxjKDI2NCoxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpO3dpZHRoOjEwMCU7ZGlzcGxheTppbmxpbmUt'@; put 'ZmxleDtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9s'@; put 'ZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyl9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+LmNs'@; put 'ci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtdGl0bGUtd3JhcHBlcj4uY2xyLXN0ZXAtbnVtYmVye21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXBwZXItaGVhZGVyPi5jbHItYWNjb3JkaW9uLWhlYWRlci1i'@; put 'dXR0b24+LmNsci1zdGVwLXRpdGxlLXdyYXBwZXI+LmNsci1hY2NvcmRpb24tdGl0bGV7bWluLXdpZHRoOmluaXRpYWw7bWF4LXdpZHRoOmluaXRpYWw7d2lkdGg6aW5pdGlhbDttYXJnaW4tbGVmdDowfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXBwZXItaGVhZGVyPi5jbHItYWNjb3Jk'@; put 'aW9uLWhlYWRlci1idXR0b24+LmNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24sLmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtZGVzY3JpcHRpb257bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1z'@; put 'cGFjZS05KTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGlu'@; put 'ZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpfUBtZWRpYShtYXgtd2lkdGg6NTc2cHgpey5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXBwZXItaGVhZGVyPi5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b257'@; put 'Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItc3RlcHBlci1oZWFkZXI+LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtc3RhdHVze21pbi13aWR0aDppbml0aWFsO3dpZHRoOmluaXRpYWx9LmNsci1zdGVwcGVyLWZvcm1z'@; put 'IC5jbHItc3RlcHBlci1oZWFkZXI+LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbj4uY2xyLXN0ZXAtdGl0bGUtd3JhcHBlcnt3aWR0aDppbml0aWFsfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXBwZXItaGVhZGVyPi5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b24+LmNsci1zdGVw'@; put 'LXRpdGxlLXdyYXBwZXI+LmNsci1zdGVwLW51bWJlcnttaW4td2lkdGg6aW5pdGlhbH0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1zdGVwcGVyLWhlYWRlcj4uY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uPi5jbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9uLC5jbHItc3RlcHBlci1mb3JtcyAu'@; put 'Y2xyLXN0ZXBwZXItaGVhZGVyPi5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b24+LmNsci1zdGVwLWRlc2NyaXB0aW9ue21hcmdpbi1sZWZ0OjB9fS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi1wYW5lbC1pbmFjdGl2ZTpub3QoLmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbik+'@; put 'LmNsci1zdGVwcGVyLWhlYWRlciAuY2xyLXN0ZXAtYW5nbGV7dmlzaWJpbGl0eTpoaWRkZW59QG1lZGlhKG1heC13aWR0aDo1NzZweCl7LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLXBhbmVsLWluYWN0aXZlOm5vdCguY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuKT4uY2xyLXN0'@; put 'ZXBwZXItaGVhZGVyIC5jbHItc3RlcC1hbmdsZXtkaXNwbGF5Om5vbmV9fS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLXN0ZXAtYnV0dG9ue21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX1jbHItc3RlcHBl'@; put 'ci1wYW5lbCAuY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci10aW1lbGluZS1saW5lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qt'@; put 'aW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yKTstLWNsci10aW1lbGluZS1zdGVwLWhlYWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAw'@; put 'KTstLWNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItdGltZWxpbmUtaW5jb21wbGV0ZS1zdGVwLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yKTst'@; put 'LWNsci10aW1lbGluZS1jdXJyZW50LXN0ZXAtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItdGltZWxpbmUtc3VjY2Vzcy1zdGVwLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItdGlt'@; put 'ZWxpbmUtZXJyb3Itc3RlcC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7LS1jbHItdGltZWxpbmUtc3RlcC1pbnRl'@; put 'cm5hbC1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmNsci10aW1lbGluZXtkaXNwbGF5OmZsZXg7cGFkZGluZzp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKX0uY2xyLXRpbWVsaW5lLXN0ZXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv'@; put 'bHVtbjt3aWR0aDoxMDAlO21pbi13aWR0aDpjYWxjKDE3NSooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb24sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29ue2hlaWdo'@; put 'dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25b'@; put 'c2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9Y2lyY2xlXXtjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtaW5jb21wbGV0ZS1zdGVwLWNvbG9yKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9ZG90LWNpcmNsZV0sLmNsci10aW1lbGluZS1z'@; put 'dGVwIGNsci1pY29uW3NoYXBlPWRvdC1jaXJjbGVde2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1jdXJyZW50LXN0ZXAtY29sb3IpfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9c3Vj'@; put 'Y2Vzcy1zdGFuZGFyZF17Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN1Y2Nlc3Mtc3RlcC1jb2xvcil9LmNsci10aW1lbGluZS1zdGVwIGNkcy1pY29uW3NoYXBlPWVycm9yLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9ZXJyb3Itc3RhbmRhcmRde2NvbG9y'@; put 'OnZhcigtLWNsci10aW1lbGluZS1lcnJvci1zdGVwLWNvbG9yKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5uZXIuc3Bpbm5lcnttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5uZXIuc3Bpbm5lciwuY2xyLXRpbWVsaW5lLXN0'@; put 'ZXAgY2xyLXNwaW5uZXIuc3Bpbm5lcjphZnRlciwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5uZXIuc3Bpbm5lcjpiZWZvcmV7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWds'@; put 'b2JhbC1zcGFjZS0xMCk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApfS5jbHItdGltZWxpbmUtc3RlcDpub3QoOmxhc3Qtb2YtdHlwZSkgLmNsci10aW1lbGluZS1zdGVwLWJvZHk6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1jbHItdGltZWxpbmUtbGlu'@; put 'ZS1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCk7d2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkgKyB2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKSk7dHJhbnNmb3JtOnRyYW5zbGF0'@; put 'ZShjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpIC0gdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSksY2FsYygtLjUqKHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSkpKX0uY2xy'@; put 'LXRpbWVsaW5lLXN0ZXAtaGVhZGVye3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tYm90dG9tOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWhlYWRlci1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlh'@; put 'cy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3Bh'@; put 'Y2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdGltZWxpbmUtc3RlcC1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb24sLmNsci10aW1lbGluZS1z'@; put 'dGVwLWJvZHkgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6aW5pdGlhbDttaW4taGVpZ2h0OmluaXRpYWx9LmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb25bc2hhcGU9Y2lyY2xl'@; put 'XSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF0s'@; put 'LmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVs'@; put 'aW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF17Y29sb3I6aW5oZXJpdH0uY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGV7bWFyZ2luOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpIDA7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAt'@; put 'dGl0bGUtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt'@; put 'c2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbntjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbi1j'@; put 'b2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0'@; put 'aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24gYnV0dG9ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDp2YXIoLS1jbHItdGltZWxpbmUt'@; put 'c3RlcC1pbnRlcm5hbC1zcGFjaW5nKX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24gaW1ne3dpZHRoOjEwMCU7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtt'@; put 'aW4td2lkdGg6Y2FsYygzMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcHtmbGV4LWRpcmVjdGlvbjpyb3c7bWFyZ2luLWxlZnQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uY2xyLXRpbWVs'@; put 'aW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXA6bm90KDpsYXN0LW9mLXR5cGUpe21hcmdpbi1ib3R0b206dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtaW50ZXJuYWwtc3BhY2luZyl9LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1l'@; put 'bGluZS1zdGVwOm5vdCg6bGFzdC1vZi10eXBlKSAuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keTpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKTtoZWlnaHQ6Y2FsYygxMDAlIC0gKC41KnZhcigtLWNkcy1nbG9iYWwt'@; put 'c3BhY2UtMTEpICsgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYygtLjUqKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpICsgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSkgLSB2YXIoLS1j'@; put 'bHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKSksY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSAtIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkpKX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0'@; put 'ZXAtaGVhZGVye3RleHQtYWxpZ246cmlnaHQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aWR0aDpjYWxjKDYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttaW4td2lkdGg6Y2FsYyg2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWFy'@; put 'Z2luOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpIHZhcigtLWNsci10aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpIDAgMH0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keXtkaXNwbGF5OmZsZXg7'@; put 'ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDpjYWxjKDE3OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtaW50ZXJuYWwtc3BhY2luZyl9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItYnJlYWRjcnVtYi1pdGVt'@; put 'LXNwYWNlOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmNsci1icmVhZGNydW1iLW1lbnV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWJyZWFkY3J1bWItbWVudSAuY2xyLWJyZWFkY3J1bWItaXRlbXtkaXNwbGF5OmZsZXg7YWxpZ24taXRl'@; put 'bXM6Y2VudGVyO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh'@; put 'cGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKX0uY2xyLWJyZWFkY3J1bWItbWVudSAuY2xyLWJyZWFkY3J1bWItaXRlbSBhe3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQt'@; put 'YWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmNsci1icmVhZGNydW1iLW1lbnUgLmNsci1icmVhZGNydW1iLWl0ZW06bm90KDpsYXN0LWNoaWxkKTphZnRlcntjb250ZW50OiIvIjttYXJnaW46MCB2YXIoLS1jbHItYnJlYWRjcnVtYi1pdGVtLXNw'@; put 'YWNlKTtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApfS5jbHItYnJlYWRjcnVtYi1tZW51IC5jbHItYnJlYWRjcnVtYi1pdGVtOmxhc3QtY2hpbGR7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKX0uY2xyLWJyZWFkY3J1bWItbWVu'@; put 'dSAuY2xyLWJyZWFkY3J1bWItZXhwYW5ke21hcmdpbjowO3BhZGRpbmc6MDtnYXA6MDttaW4td2lkdGg6Zml0LWNvbnRlbnR9Y2xyLW1vZGFse2Rpc3BsYXk6bm9uZX1jbHItbW9kYWwub3BlbntkaXNwbGF5OmlubGluZX1jbHItZXhwYW5kYWJsZS1hbmltYXRpb257ZGlzcGxheTpibG9ja31j'@; put 'bHItc3RhY2stYmxvY2t7ZGlzcGxheTpibG9ja31jbHItc3RhY2staGVhZGVye2Rpc3BsYXk6YmxvY2t9Y2xyLXN0YWNrLXZpZXd7ZGlzcGxheTpibG9ja306cm9vdCBbY2RzLXRoZW1lXXstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseTp2YXIoLS1jbHItbWV0cm9wb2xpcy1m'@; put 'b250LWZhbWlseSk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmF5OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZHJvcC1iYWNrZ3JvdW5kOmhzbGEoMCwgMCUsIDEwMCUsIC42KTstLWNkcy1hbGlhcy1vYmpl'@; put 'Y3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1j'@; put 'ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTc1KTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0'@; put 'cnVjdGlvbi0xMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tc2tlbGV0b24tZHVyYXRpb246NHM7LS1jZHMtZ2xv'@; put 'YmFsLWFuaW1hdGlvbi1lYXNpbmctaW4tb3V0OmN1YmljLWJlemllciguNDIsIC4wMSwgLjU4LCAxKTstLWNkcy1hbGlhcy1vYmplY3Qtc2tlbGV0b24tbG9hZGluZy1ncmFkaWVudDpsaW5lYXItZ3JhZGllbnQoIDkwZGVnLCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJh'@; put 'Y2tncm91bmQpIDAlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApIDM1JSwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKSA2NSUsIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCkgMTAwJSApOy0tY2Rz'@; put 'LWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lOkhpZ2hsaWdodCBhdXRvIDJweDstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1zZWxlY3RlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5m'@; put 'by1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLWNsaWNrKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLWNsaWNrKTstLWNkcy1hbGlhcy1v'@; put 'YmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLWNsaWNrKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWFjdGl2ZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWRh'@; put 'bmdlci1jbGljayk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtYWN0aXZlOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1jbGljayk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWludmVyc2UtYWN0aXZlOnZhcigtLWNkcy1h'@; put 'bGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW52ZXJzZS1jbGljayk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dy'@; put 'b3VuZC1zaGFkZS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0zMDApOy0tY2RzLWFsaWFz'@; put 'LW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLXNlbGVjdGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLXNlbGVjdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29u'@; put 'c3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtc2VsZWN0ZWQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVy'@; put 'c2U6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtaW52ZXJzZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5l'@; put 'ci1iYWNrZ3JvdW5kLWludmVyc2Utc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKX06cm9vdCBbY2RzLXRoZW1lfj1kYXJrXXstLWNkcy1hbGlhcy11dGlsaXR5LWdyYXk6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1h'@; put 'bGlhcy1zdGF0dXMtd2FybmluZy1kYXJrOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNjAwKTstLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtOTAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXRpbnQ6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1jb2xvci1yZWQtOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tkcm9wLWJhY2tncm91bmQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTMwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaG92ZXI6dmFyKC0tY2Rz'@; put 'LWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1z'@; put 'ZWxlY3RlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJh'@; put 'Y3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWFsaWFzLW9iamVjdC1za2VsZXRvbi1sb2FkaW5nLWdyYWRpZW50OmxpbmVhci1ncmFkaWVudCggOTBkZWcsIHZhcigtLWNkcy1hbGlhcy1vYmplY3Qt'@; put 'aW50ZXJhY3Rpb24tYmFja2dyb3VuZCkgMCUsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwMCkgMzUlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDApIDY1JSwgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5k'@; put 'KSAxMDAlICk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8tc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1'@; put 'Y3Rpb24tOTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zaGFkZS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLWFjdGl2ZTp2YXIo'@; put 'LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNoYWRlLXNlbGVjdGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3Jv'@; put 'dW5kLXNoYWRlLXNlbGVjdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2hhZGUtc2VsZWN0ZWQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9u'@; put 'LTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2U6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtaW52ZXJzZS10aW50OnZhcigtLWNkcy1nbG9iYWwt'@; put 'Y29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2Utc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKX1AY2hhcnNldCAiVVRGLTgiO1tjbGFzcyo9aHQtdGhlbWUtY2xhc3NpY10gLmh0'@; put 'RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0U3VibWVudSAuaHRJdGVtV3JhcHBlcjphZnRlcixbY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0U3VibWVudSAuaHRJdGVtV3JhcHBlcjphZnRlcixbY2xhc3MqPWh0LXRo'@; put 'ZW1lLWNsYXNzaWNdIC5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFN1Ym1lbnUgLmh0SXRlbVdyYXBwZXI6YWZ0ZXIsW2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAucGlrYS1zaW5nbGUgLnBpa2EtbmV4dHt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hl'@; put 'aWdodDp2YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2Fycm93LXJpZ2h0LjM0OWViM2NhNjM0ZDdkYWQu'@; put 'c3ZnKTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5waWthLXNpbmdsZSAucGlrYS1wcmV2e3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjst'@; put 'd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvYXJyb3ctbGVmdC4xNGY0NDJkMDMzZGE3Njg1LnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1j'@; put 'bGFzc2ljXSAuaHQtcGFnZS1zaXplLXNlY3Rpb25fX3NlbGVjdC13cmFwcGVyOmFmdGVye3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVj'@; put 'dXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvYXJyb3ctZG93bi5kODhkZWUxNjM2M2M2OTU3LnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuY2hhbmdlVHlwZTpiZWZvcmV7d2lkdGg6'@; put 'dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9zZWxlY3Qt'@; put 'YXJyb3cuNTVjMWNlZDZjOGIyNWIxMi5zdmcpO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtjbGFzcyo9aHQtdGhlbWUtY2xhc3NpY10gLmh0VUlTZWxlY3RDYXB0aW9uOmFmdGVyLC5odEF1dG9jb21wbGV0ZUFycm93OmFmdGVye3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVp'@; put 'Z2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvc2VsZWN0LWFycm93LjU1YzFjZWQ2YzhiMjViMTIu'@; put 'c3ZnKTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb24uYXNjZW5kaW5nOmJlZm9yZXt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQt'@; put 'bWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2Fycm93LW5hcnJvdy11cC5mNjY4YTM5ZDljYjYxMzU1LnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50'@; put 'Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuY29sdW1uU29ydGluZy5zb3J0QWN0aW9uLmRlc2NlbmRpbmc6YmVmb3Jle3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1h'@; put 'c2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvYXJyb3ctbmFycm93LWRvd24uNTlkY2UyNmZmYjdiNjg3MC5zdmcpO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtjbGFzcyo9aHQtdGhlbWUtY2xh'@; put 'c3NpY10gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uIC5odC1wYWdlLWZpcnN0OmJlZm9yZXt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9i'@; put 'RXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2Fycm93LWxlZnQtd2l0aC1iYXIuNGE0YzAzMzVlODQ3ZmNmOC5zdmcpO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtjbGFzcyo9aHQtdGhlbWUtY2xhc3NpY10gW2Rpcj1ydGxdIC5o'@; put 'dC1wYWdlLW5hdmlnYXRpb24tc2VjdGlvbiAuaHQtcGFnZS1maXJzdDpiZWZvcmV7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlv'@; put 'bj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9hcnJvdy1yaWdodC13aXRoLWJhci4wNWU3NWM1MGFmYzkyOTZkLnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHQtcGFnZS1uYXZpZ2F0aW9u'@; put 'LXNlY3Rpb24gLmh0LXBhZ2UtcHJldjpiZWZvcmV7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2Fw'@; put 'cC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9hcnJvdy1sZWZ0LjE0ZjQ0MmQwMzNkYTc2ODUuc3ZnKTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIFtkaXI9cnRsXSAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb24gLmh0LXBhZ2Ut'@; put 'cHJldjpiZWZvcmV7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3Nl'@; put 'cnZpY2VzL3dlYi9hcnJvdy1yaWdodC4zNDllYjNjYTYzNGQ3ZGFkLnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb24gLmh0LXBhZ2UtbmV4dDpiZWZvcmV7d2lkdGg6dmFyKC0taHQt'@; put 'aWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9hcnJvdy1yaWdodC4zNDll'@; put 'YjNjYTYzNGQ3ZGFkLnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSBbZGlyPXJ0bF0gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uIC5odC1wYWdlLW5leHQ6YmVmb3Jle3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0'@; put 'OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvYXJyb3ctbGVmdC4xNGY0NDJkMDMzZGE3Njg1LnN2Zyk7'@; put 'YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHQtcGFnZS1uYXZpZ2F0aW9uLXNlY3Rpb24gLmh0LXBhZ2UtbGFzdDpiZWZvcmV7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0'@; put 'LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9hcnJvdy1yaWdodC13aXRoLWJhci4wNWU3NWM1MGFmYzkyOTZkLnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpj'@; put 'dXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSBbZGlyPXJ0bF0gLmh0LXBhZ2UtbmF2aWdhdGlvbi1zZWN0aW9uIC5odC1wYWdlLWxhc3Q6YmVmb3Jle3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNp'@; put 'emU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvYXJyb3ctbGVmdC13aXRoLWJhci40YTRjMDMzNWU4NDdmY2Y4LnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29s'@; put 'b3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlcixbY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1X'@; put 'cmFwcGVyIHNwYW4uc2VsZWN0ZWQ6YWZ0ZXIsW2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXIgc3Bhbi5zZWxlY3RlZDphZnRlcnt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2'@; put 'YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2NoZWNrLmE3ZTY0YmRlMTg1MDI0MDguc3ZnKTtiYWNrZ3Jv'@; put 'dW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dHthcHBlYXJhbmNlOm5vbmV9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQ6YWZ0ZXJ7d2lkdGg6dmFyKC0taHQtaWNv'@; put 'bi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9jaGVja2JveC5lYWY4MjQzNWNi'@; put 'YjU2ZWUyLnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXJ7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6'@; put 'ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9jYXJldC1oaWRkZW4tbGVmdC41ZGE0NDM0NWVjZjNiM2QzLnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9'@; put 'W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmV7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4'@; put 'ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9jYXJldC1oaWRkZW4tcmlnaHQuZDY2NTViNGRhMTNjNDM2Yi5zdmcpO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtjbGFzcyo9aHQtdGhlbWUtY2xhc3NpY10gdGguYmVmb3JlSGlkZGVu'@; put 'Um93OmFmdGVye3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2'@; put 'aWNlcy93ZWIvY2FyZXQtaGlkZGVuLXVwLjNiYjk2NDRhMTA5NTA1YTguc3ZnKTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIHRoLmFmdGVySGlkZGVuUm93OmJlZm9yZXt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIo'@; put 'LS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2NhcmV0LWhpZGRlbi1kb3duLmFiYWNjMTk1NTI2Y2NjYzQuc3Zn'@; put 'KTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5jb2xsYXBzaWJsZUluZGljYXRvcjpiZWZvcmUsW2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHRfbmVzdGluZ0J1dHRvbjpiZWZvcmV7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTto'@; put 'ZWlnaHQ6dmFyKC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9jb2xsYXBzZS1vZmYuNmY4Y2JiMmU2NDNhNWE4'@; put 'NS5zdmcpO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtjbGFzcyo9aHQtdGhlbWUtY2xhc3NpY10gLmNvbGxhcHNpYmxlSW5kaWNhdG9yLmNvbGxhcHNlZDpiZWZvcmUsW2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmJl'@; put 'Zm9yZXt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMv'@; put 'd2ViL2NvbGxhcHNlLW9uLjVmZTVjY2UzYmY2NGU4Mzcuc3ZnKTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bY2xhc3MqPWh0LXRoZW1lLWNsYXNzaWNdIC5odFVJUmFkaW8+aW5wdXRbdHlwZT1yYWRpb106YWZ0ZXJ7d2lkdGg6dmFyKC0taHQtaWNvbi1zaXplKTtoZWlnaHQ6dmFy'@; put 'KC0taHQtaWNvbi1zaXplKTstd2Via2l0LW1hc2stc2l6ZTpjb250YWluOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZpY2VzL3dlYi9yYWRpby42MDYxY2YwNGZlYzZhMTE3LnN2Zyk7YmFja2dyb3Vu'@; put 'ZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHQtbXVsdGktc2VsZWN0LWNoaXAtcmVtb3ZlOmJlZm9yZXt3aWR0aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdl'@; put 'YmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL2NoaXAtY2xvc2UuZTAwZjZkNzFmZTY1NmY4OC5zdmcpO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtjbGFzcyo9aHQtdGhlbWUtY2xh'@; put 'c3NpY10gLmh0LW5vdGlmaWNhdGlvbl9fY2xvc2U6YmVmb3Jle3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZhcigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1'@; put 'YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvY2hpcC1jbG9zZS5lMDBmNmQ3MWZlNjU2Zjg4LnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHQtbXVsdGktc2VsZWN0LWVkaXRvci1zZWFyY2gtaWNvbnt3aWR0'@; put 'aDp2YXIoLS1odC1pY29uLXNpemUpO2hlaWdodDp2YXIoLS1odC1pY29uLXNpemUpOy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47LXdlYmtpdC1tYXNrLWltYWdlOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL3NlYXJj'@; put 'aC5lNTdkNDVhOTVhNTA2NmU3LnN2Zyk7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W2NsYXNzKj1odC10aGVtZS1jbGFzc2ljXSAuaHQtbXVsdGktc2VsZWN0LWVkaXRvci1pdGVtLXNlbGVjdGVkIGlucHV0OmFmdGVye3dpZHRoOnZhcigtLWh0LWljb24tc2l6ZSk7aGVpZ2h0OnZh'@; put 'cigtLWh0LWljb24tc2l6ZSk7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjstd2Via2l0LW1hc2staW1hZ2U6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvY2hlY2tib3guZWFmODI0MzVjYmI1NmVlMi5zdmcpO2JhY2tn'@; put 'cm91bmQtY29sb3I6Y3VycmVudENvbG9yfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcztzcmM6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvTWV0cm9wb2xpcy0yMDAuMDYwOTMzN2E3MjYzMjNlMC53b2Zm'@; put 'KSBmb3JtYXQoIndvZmYiKTtmb250LXdlaWdodDoyMDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoL1NBU0pvYkV4ZWN1dGlvbj9fRklMRT0vUHVibGljL2FwcC9kY3BsYWNlaG9sZGVyL3NlcnZp'@; put 'Y2VzL3dlYi9NZXRyb3BvbGlzLTQwMC4wNTQ0NjY3MGQyN2Y3NjY2LndvZmYpIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXM7c3JjOnVybCgvU0FTSm9iRXhl'@; put 'Y3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL01ldHJvcG9saXMtNTAwLjRlZmQ1ODBhNDNiNGUxMTYud29mZikgZm9ybWF0KCJ3b2ZmIik7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwfUBmb250LWZh'@; put 'Y2V7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcztzcmM6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvTWV0cm9wb2xpcy02MDAuYjI4MDFhMzhhNzRlYzZjMS53b2ZmKSBmb3JtYXQoIndvZmYiKTtmb250LXdlaWdodDo2MDA7'@; put 'Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtmb250LWZhbWlseTp0ZXh0LXNlY3VyaXR5LWRpc2M7c3JjOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL3RleHQtc2VjdXJpdHktZGlz'@; put 'Yy5mNzU4MTMwYmMwZmZjMTExLndvZmYpIGZvcm1hdCgid29mZiIpfWFwcC1lZGl0b3IgLmNhcmR7bWFyZ2luLXRvcDowO2JvcmRlcjowfWFwcC1lZGl0b3IgLmJ1dHRvbkJhcntwYWRkaW5nOjJweCAxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn1hcHAtZWRpdG9yIC50ZXN0UmVke2NvbG9yOiNm'@; put 'ZmY7YmFja2dyb3VuZDojZjAwYyFpbXBvcnRhbnR9YXBwLWVkaXRvciBob3QtdGFibGUgLmZpcnN0Q29sdW1uSGVhZGVyU3R5bGUgYnV0dG9uLmNoYW5nZVR5cGV7ZGlzcGxheTpub25lfWFwcC1lZGl0b3IgaG90LXRhYmxlIC5oYW5kc29udGFibGUgdGJvZHkgdGguaHRfX2hpZ2hsaWdodC5w'@; put 'cmltYXJ5S2V5SGVhZGVyU3R5bGUsYXBwLWVkaXRvciBob3QtdGFibGUgLmhhbmRzb250YWJsZSB0aGVhZCB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDZiMDBiMCFpbXBvcnRhbnR9YXBwLWVkaXRvciBob3QtdGFibGUgLnByaW1h'@; put 'cnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDZiMDA2ZSFpbXBvcnRhbnR9YXBwLWVkaXRvciBob3QtdGFibGUgdGgucmVhZG9ubHlDZWxsIGRpdntvcGFjaXR5Oi40fWFwcC1lZGl0b3IgaG90LXRhYmxlIHRkLnJlYWRvbmx5Q2VsbHtvcGFjaXR5Oi41fWFwcC1lZGl0b3Ig'@; put 'aG90LXRhYmxlIHRoLnJvd1N0YXR1c0FkZGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxhYmVsLXN1Y2Nlc3MtYmctY29sb3IpIWltcG9ydGFudH1hcHAtZWRpdG9yIGhvdC10YWJsZSB0aC5yb3dTdGF0dXNEZWxldGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxhYmVsLWRh'@; put 'bmdlci1iZy1jb2xvcikhaW1wb3J0YW50fWFwcC1lZGl0b3IgaG90LXRhYmxlIHRoLnJvd1N0YXR1c01vZGlmaWVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxhYmVsLXdhcm5pbmctYmctY29sb3IpIWltcG9ydGFudH1hcHAtZWRpdG9yIC5zdWJtaXQtcmVhc29ue21pbi1oZWlnaHQ6'@; put 'MTIwcHg7bWF4LWhlaWdodDoxMjBweDtoZWlnaHQ6MTIwcHh9YXBwLWVkaXRvciAuaW5mb0JhcnttYXJnaW4tdG9wOjE0cHh9YXBwLWVkaXRvciAucGtIZWFkZXJ7YmFja2dyb3VuZDojNjg3NjgyO2NvbG9yOiNmZmY7bWFyZ2luOi0xcHh9YXBwLWVkaXRvciAuaGVhZGVyQmFye2FsaWduLWl0'@; put 'ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYmctY29sb3IpfWFwcC1lZGl0b3IgLmVycm9yLWljb257d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtjb2xvcjpyZWR9YXBwLWVkaXRvciAuYnRuQ3RybHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgt'@; put 'ZW5kfWFwcC1lZGl0b3IgLmNhcmQtaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50fWFwcC1lZGl0b3IgLmhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn1hcHAtZWRpdG9yIC5teS1kcm9wLXpvbmV7Ym9yZGVyOnNvbGlkIDFweCBsaWdodGdyYXk7Ym9yZGVyLXJhZGl1'@; put 'czoxMHB4O2JhY2tncm91bmQ6I2Y1ZjVmNTtib3gtc2hhZG93Omluc2V0IDAgMCA0cHggMnB4ICNhN2E1YTUyYjtoZWlnaHQ6NTB2aH1hcHAtZWRpdG9yIC5udi1maWxlLW92ZXJ7Ym9yZGVyOnNvbGlkIDJweCBncmVlbn1hcHAtZWRpdG9yIC5maWxlLWRyb3AtdGV4dHt0ZXh0LWFsaWduOmNl'@; put 'bnRlcn1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXthcHAtZWRpdG9yIC5wcm9ncmVzU3RhdGlje21hcmdpbi10b3A6OXB4IWltcG9ydGFudH1hcHAtZWRpdG9yIC5wcm9ncmVzcyxhcHAtZWRpdG9yIC5wcm9ncmVzcy1zdGF0aWN7d2lkdGg6Y2FsYygxMDAlIC0gMTRweCl9'@; put 'fWFwcC1lZGl0b3IgLmhvdEVkaXRvcntwb3NpdGlvbjpyZWxhdGl2ZX1hcHAtZWRpdG9yIC5leGNlbC1wYXJzaW5ne2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlfWFwcC1lZGl0b3IgLmV4Y2VsLXBhcnNpbmcg'@; put 'LmRldGFpbHN7bWFyZ2luOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOi00NXB4fWFwcC1lZGl0b3IgLmVkaXQtcmVjb3JkLXNwaW5uZXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6I2ZmZjk7cG9zaXRpb246YWJzb2x1'@; put 'dGU7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MTAwJTt6LWluZGV4OjUwMH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXthcHAtZWRpdG9yIC5wcm9ncmVzU3RhdGlje21hcmdpbi10b3A6MzJweCFpbXBvcnRhbnR9YXBwLWVkaXRvciAuY2FyZC1ibG9jayxhcHAtZWRpdG9yIC5j'@; put 'YXJkLWZvb3RlcntwYWRkaW5nOjEwcHggMCAwfX1hcHAtZWRpdG9yIC5jb250ZW50LWFyZWF7cGFkZGluZzowIC44cmVtIC44cmVtIWltcG9ydGFudDtwYWRkaW5nLXRvcDowfWFwcC1lZGl0b3IgLmRyb3AtYXJlYXtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5'@; put 'LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7bWFyZ2luOjFweDtib3JkZXI6MnB4IGRhc2hlZCAjZmZmO3otaW5kZXg6LTF9YXBwLWVkaXRvciAuZHJvcC1hcmVhIHNwYW57Zm9udC1zaXplOjIwcHg7bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmc6MTBweDtiYWNrZ3JvdW5k'@; put 'OiNkYmRiZGI7Ym9yZGVyLXJhZGl1czo1cHg7Y29sb3I6IzAwMH1hcHAtZWRpdG9yICNzdWJtaXRCdG4sYXBwLWVkaXRvciAjY2FuY2VsU3VibWl0QnRue3dpZHRoOjE1MHB4fWFwcC1lZGl0b3IgLnZpZXctdGFibGV7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50O2NvbG9yOiMxYTU3YmIh'@; put 'aW1wb3J0YW50fUBtZWRpYShtYXgtd2lkdGg6OTkycHgpe2FwcC1lZGl0b3IgLmljb24tY29sbGFwc2UgLnRleHR7ZGlzcGxheTpub25lfX1teS1hcHAgYXBwLXJlcXVlc3RzLW1vZGFse3otaW5kZXg6MTAwMDB9bXktYXBwIGhlYWRlci5hcHAtaGVhZGVye2JhY2tncm91bmQ6IzMxNDM1MSFp'@; put 'bXBvcnRhbnQ7Y29sb3I6I2ZmZn1teS1hcHAgLmxvZ28gaW1nLndpdGhvdXQtdGV4dHt3aWR0aDozMHB4fW15LWFwcCAubG9nbyBpbWcud2l0aC10ZXh0e3dpZHRoOjIxMHB4fW15LWFwcCAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2Vye2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDp0cmFuc3Bh'@; put 'cmVudDtib3JkZXI6MDttYXJnaW4tbGVmdDoxMHB4fW15LWFwcCAuZGVtby1leHBpcmVkLW5vdGljZXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246Zml4ZWQ7bGVmdDowO3RvcDowO2hlaWdodDoxMDB2aCFpbXBvcnRhbnQ7'@; put 'd2lkdGg6MTAwdnchaW1wb3J0YW50O3otaW5kZXg6MTA1O2JhY2tncm91bmQ6IzIxMjEyMTgwfW15LWFwcCAuZGVtby1leHBpcmVkLW5vdGljZSAuZXhwaXJlZC1kZXRhaWxze2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzozMHB4O3otaW5kZXg6MTEw'@; put 'O2JhY2tncm91bmQ6IzMxNDM1MX1teS1hcHAgLmRlbW8tZXhwaXJlZC1ub3RpY2UgLmV4cGlyZWQtZGV0YWlscyAuZXhwaXJlZC1ub3RpY2V7Y29sb3I6I2UwZTBlMDtmb250LXNpemU6MTZweH1teS1hcHAgLmRlbW8tZXhwaXJlZC1ub3RpY2UgLmV4cGlyZWQtZGV0YWlscyAuZXhwaXJlZC1u'@; put 'b3RpY2UgLm1haWx0b3tjb2xvcjojOGRjNTNlfW15LWFwcCAubWFpbi1jb250YWluZXIgLnVwZGF0ZS1rZXl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojZmZmO3BhZGRpbmc6MCAxMHB4O2JhY2tncm91bmQ6IzAwMDAwMDI2fW15LWFwcCAuYWxlcnQtaWNvbi13cmFw'@; put 'cGVye21hcmdpbi10b3A6MCFpbXBvcnRhbnR9bXktYXBwIC5uYXYtdGV4dHttYXJnaW4tcmlnaHQ6MjBweH1teS1hcHAgLnNpZGViYXItdG9nZ2xle2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZy1sZWZ0OjEwcHh9bXktYXBwIC5zaWRlYmFyLXRv'@; put 'Z2dsZSBjbHItaWNvbntjdXJzb3I6cG9pbnRlcjt3aWR0aDozMHB4O2hlaWdodDozMHB4fW15LWFwcCBoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5kcm9wZG93bntwb3NpdGlvbjp1bnNldH1teS1hcHAgaGVhZGVyIC5uYXYtbGluazpob3Zlcntjb2xvcjojZmFmYWZhfW15LWFwcCBoZWFkZXIg'@; put 'Lm5hdi1saW5rLmFjdGl2ZXtiYWNrZ3JvdW5kOiMxZDJmM2R9bXktYXBwIC5ub3Rme2JhY2tncm91bmQ6IzE2YTU3YTtjb2xvcjojZmZmY2ZjO2ZvbnQtc2l6ZToxMnB4fW15LWFwcCAudG9nZ2xlLXN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmJlZm9yZXtib3Jk'@; put 'ZXItY29sb3I6IzYxNzE3ZDtiYWNrZ3JvdW5kLWNvbG9yOiM2MTcxN2Q7dHJhbnNpdGlvbjouMTVzIGVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn1teS1hcHAgLm1haW4tY29udGFpbmVye21pbi1oZWlnaHQ6MTAwdmghaW1wb3J0YW50'@; put 'fW15LWFwcCAuY29udGVudC1jb250YWluZXJ7ei1pbmRleDowIWltcG9ydGFudH1teS1hcHAgLm5hdkJhclJlc3B7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDojNDk1YTY3O2NvbG9yOiNmZmZ9bXktYXBwIC5hcHAtbG9hZGluZyAubG9hZGluZy1sb2dv'@; put 'e21heC13aWR0aDo0MDBweDt3aWR0aDoxMDAlfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpe215LWFwcCAubmF2QmFyUmVzcHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7YmFja2dyb3VuZDojNDk1YTY3O2NvbG9yOiNmZmZ9bXktYXBwIC5tYWlu'@; put 'LWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmssbXktYXBwIC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmssbXktYXBwIC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2'@; put 'IC5uYXYtbGluayxteS1hcHAgLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5re3BhZGRpbmc6MCAuNXJlbSAwIDFyZW07d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztib3Jk'@; put 'ZXItcmFkaXVzOi4xMjVyZW0gMCAwIC4xMjVyZW07Y29sb3I6Izk1Yzg0Yn1teS1hcHAgLmNhcmQtYmxvY2ssbXktYXBwIC5jYXJkLWZvb3RlcntwYWRkaW5nOjEwcHggMCAwfW15LWFwcCAubWFpbi1jb250YWluZXJbX25nY29udGVudC1jMF0gLmNvbnRlbnQtY29udGFpbmVyW19uZ2NvbnRl'@; put 'bnQtYzBdIC5jb250ZW50LWFyZWFbX25nY29udGVudC1jMF17cGFkZGluZzowcmVtfX0uaHRJbnZhbGlke2JhY2tncm91bmQ6IzAwMCFpbXBvcnRhbnR9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7aDJ7Zm9udC1zaXplOi43cmVtIWltcG9ydGFudH1oM3tmb250LXNpemU6'@; put 'LjdyZW19fS5uYXYtbGlua3twYWRkaW5nOjByZW0gMXJlbX1ib2R5W2Nkcy10aGVtZT1saWdodF0gLmJ0bi1wcmltYXJ5IC5idG4sYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5idG4uYnRuLXByaW1hcnl7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxO2NvbG9y'@; put 'OiNmZmZ9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmJ0bi1wcmltYXJ5IC5idG4sYm9keVtjZHMtdGhlbWU9ZGFya10gLmJ0bi5idG4tcHJpbWFyeXtib3JkZXItY29sb3I6IzVlNzM4MjtiYWNrZ3JvdW5kLWNvbG9yOiM1ZTczODI7Y29sb3I6I2ZmZn1ib2R5W2Nkcy10aGVtZT1kYXJrXSAuYnRu'@; put 'LXByaW1hcnkgLmJ0biBjbHItaWNvbixib2R5W2Nkcy10aGVtZT1kYXJrXSAuYnRuLXByaW1hcnkgLmJ0biBjZHMtaWNvbixib2R5W2Nkcy10aGVtZT1kYXJrXSAuYnRuLmJ0bi1wcmltYXJ5IGNsci1pY29uLGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5idG4uYnRuLXByaW1hcnkgY2RzLWljb257'@; put 'Y29sb3I6I2ZmZn0uYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCwuYnRuLmJ0bi1wcmltYXJ5OmRpc2FibGVke29wYWNpdHk6LjY1fS5idG57Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6'@; put 'LjEyNXJlbTtib3JkZXI6MXB4IHNvbGlkO21pbi13aWR0aDozcmVtO21heC13aWR0aDoxNXJlbTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3ZlcnRpY2Fs'@; put 'LWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoxLjVyZW07bGV0dGVyLXNwYWNpbmc6LjEyZW07Zm9udC1zaXplOi41cmVtO2ZvbnQtd2VpZ2h0OjUwMDtoZWlnaHQ6MS41cmVtO3BhZGRpbmc6MCAuNXJlbX0uYnRuLmJ0bi1vdXRsaW5lOmhvdmVye2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tn'@; put 'cm91bmQtY29sb3I6IzQ5NWE2Nztjb2xvcjojZmZmfS5tb2RhbC10aXRsZS13cmFwcGVyOmZvY3VzLC5tb2RhbC10aXRsZS13cmFwcGVyOmZvY3VzLXZpc2libGV7b3V0bGluZTpub25lfWJvZHlbY2RzLXRoZW1lPWRhcmtdIC5idG4uYnRuLWljb24uYnRuLWRpbW1lZHtjb2xvcjojNzI5NWFl'@; put 'fWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuYnRuLmJ0bi1pY29uLmJ0bi1kaW1tZWR7Y29sb3I6IzMxNDM1MX1ib2R5W2Nkcy10aGVtZT1saWdodF0gLmJ0bi5idG4tb3V0bGluZXtib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMzMTQzNTF9'@; put 'Lmh0TW9iaWxlRWRpdG9yQ29udGFpbmVyIC5pbnB1dHMgdGV4dGFyZWF7Zm9udC1zaXplOjEzcHQ7Ym9yZGVyOjJweCBzb2xpZCAjNDg1OTY3O2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JveC1zaGFkb3c6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDow'@; put 'IDAgMCAxNHB4O3BhZGRpbmc6N3B0O3dpZHRoOjI5MHB4fS5odE1vYmlsZUVkaXRvckNvbnRhaW5lciAucG9zaXRpb25Db250cm9sc3t3aWR0aDozMzNweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHQ7dG9wOjUwcHg7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpj'@; put 'ZW50ZXJ9Lmh0TW9iaWxlRWRpdG9yQ29udGFpbmVyLmFjdGl2ZXtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMjBweDt3aWR0aDozNTBweH1ib2R5W2Nkcy10aGVtZT1saWdodF0gLnd0Qm9yZGVye2JhY2tncm91bmQtY29sb3I6IzQ5NWE2NyFpbXBvcnRhbnR9Ym9keVtjZHMtdGhlbWU9bGlnaHRd'@; put 'IC5odF9tYXN0ZXIgdHI6bnRoLW9mLXR5cGUob2RkKT50ZHtmaWx0ZXI6YnJpZ2h0bmVzcyguOTcpfWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuaHRfbWFzdGVyIC5odERpbW1lZHtjb2xvcjojMzczNzM3IWltcG9ydGFudDtmaWx0ZXI6YnJpZ2h0bmVzcygxKSFpbXBvcnRhbnR9Ym9keVtjZHMt'@; put 'dGhlbWU9ZGFya10gLmh0X21hc3RlciB0cjpudGgtb2YtdHlwZShvZGQpPnRke2ZpbHRlcjpicmlnaHRuZXNzKDEuMil9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmh0X21hc3Rlcjpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZSB0Ym9keSB0ciB0aCxib2R5W2Nkcy10aGVtZT1kYXJr'@; put 'XSAuaHRfbWFzdGVyOm5vdCguZW1wdHlDb2x1bW5zKX4uaGFuZHNvbnRhYmxlOm5vdCguaHRfY2xvbmVfdG9wKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZHtiYWNrZ3JvdW5kLWNvbG9yOiMyZDQwNDg7Ym9yZGVyLWNvbG9yOiM2OTdjODV9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250'@; put 'YWJsZSB0ZHtib3JkZXItY29sb3I6IzY5N2M4NX1ib2R5W2Nkcy10aGVtZT1kYXJrXSAuaGFuZHNvbnRhYmxlIC5odERpbW1lZHtjb2xvcjojZWVlIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOiMzYzU2NjIhaW1wb3J0YW50fWJvZHlbY2RzLXRoZW1lPWRhcmtdIFtjbGFzcyo9aHQtdGhl'@; put 'bWUtY2xhc3NpY117Y29sb3Itc2NoZW1lOmRhcms7LS1odC1mb3JlZ3JvdW5kLWNvbG9yOiAjZWVlOy0taHQtYmFja2dyb3VuZC1jb2xvcjogIzNjNTY2MjstLWh0LWJhY2tncm91bmQtc2Vjb25kYXJ5LWNvbG9yOiAjMmQ0MDQ4Oy0taHQtYm9yZGVyLWNvbG9yOiAjNjk3Yzg1Oy0taHQtcmVh'@; put 'ZC1vbmx5LWNvbG9yOiAjZWVlOy0taHQtaGVhZGVyLWJhY2tncm91bmQtY29sb3I6ICM0ODdkOTY7LS1odC1oZWFkZXItcm93LWJhY2tncm91bmQtY29sb3I6ICM0ODdkOTY7LS1odC1oZWFkZXItaGlnaGxpZ2h0ZWQtYmFja2dyb3VuZC1jb2xvcjogIzNiNmI4MTstLWh0LWhlYWRlci1yb3ct'@; put 'aGlnaGxpZ2h0ZWQtYmFja2dyb3VuZC1jb2xvcjogIzNiNmI4MTstLWh0LXNjcm9sbGJhci10aHVtYi1jb2xvcjogIzY5N2M4NTstLWh0LWlucHV0LWJhY2tncm91bmQtY29sb3I6ICM3MDhiOTg7LS1odC1pbnB1dC1mb3JlZ3JvdW5kLWNvbG9yOiAjZmZmOy0taHQtY2VsbC1lZGl0b3ItYmFj'@; put 'a2dyb3VuZC1jb2xvcjogIzcwOGI5ODstLWh0LWNlbGwtZWRpdG9yLWZvcmVncm91bmQtY29sb3I6ICNmZmZ9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZSB0cjpmaXJzdC1jaGlsZCB0aCxib2R5W2Nkcy10aGVtZT1kYXJrXSAuaGFuZHNvbnRhYmxlIHRyOmZpcnN0LWNoaWxk'@; put 'IHRkLGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGUgLmhhbmRzb250YWJsZS5odF9jbG9uZV90b3AgLnd0SGlkZXJ7Ym9yZGVyLWNvbG9yOiM2OTdjODV9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZXtiYWNrZ3JvdW5kLWNvbG9yOiMzYzU2'@; put 'NjI7Ym9yZGVyLWNvbG9yOiM2OTdjODV9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZUlucHV0e2JhY2tncm91bmQtY29sb3I6IzcwOGI5OH0uaGFuZHNvbnRhYmxlIC5oYW5kc29udGFibGUuaHRfY2xvbmVfdG9wIC53dEhpZGVye3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2lu'@; put 'OjA7Ym9yZGVyLWJvdHRvbTozcHggc29saWQgI2Q2ZDNkM31ib2R5W2Nkcy10aGVtZT1saWdodF0gLmNvbnRlbnQtY29udGFpbmVye2JhY2tncm91bmQ6I2Y1ZjZmZn0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQsLmRhdGFncmlkLWhpc3RvcnkgLmRhdGFncmlke2JvcmRlci1jb2xsYXBz'@; put 'ZTpzZXBhcmF0ZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6LjEyNXJlbTttYXJnaW46MDttYXJnaW4tdG9wOjFyZW07bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTtwYWRkaW5nOjE1cHggMTVweCA1MHB4fS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1m'@; put 'b290LC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1mb290e2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtoZWlnaHQ6MS41cmVtO3BhZGRpbmc6MCAuNXJlbTtsaW5lLWhlaWdodDpjYWxjKDEuNXJlbSAtIDNweCk7Zm9udC1zaXplOi40NTgzM3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7'@; put 'Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjB9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWZvb3RlciwuZGF0YWdyaWQtaGlzdG9yeSAuZGF0YWdyaWQtZm9vdGVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjMwcHg7dG9wOjFweH0uZGF0YWdyaWQtY29tcGFj'@; put 'dCAuZGF0YWdyaWQgLmRhdGFncmlkLWhlYWQsLmRhdGFncmlkLWhpc3RvcnkgLmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFke2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjfS5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xl'@; put 'ZnQ6MDttYXJnaW4tdG9wOi4wODMzMzNyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOi41cmVtIDA7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JveC1zaGFkb3c6MCAxcHggLjEyNXJlbSAjNzM3MzczNDA7bWluLXdpZHRoOjVyZW07bWF4LXdpZHRoOjE1cmVt'@; put 'O2JvcmRlci1yYWRpdXM6LjEyNXJlbTt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwMDB9LnRhYmxle2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MDttYXJnaW46MDttYXJnaW4tdG9wOjFyZW07bWF4LXdpZHRo'@; put 'OjEwMCU7d2lkdGg6MTAwJX0udGFibGUgdGh7Zm9udC1zaXplOi40NTgzM3JlbTtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjAzZW07dmVydGljYWwtYWxpZ246Ym90dG9tO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5tYWlu'@; put 'LWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXJ7bWluLWhlaWdodDowcHg7cG9zaXRpb246cmVsYXRpdmV9aG9tZS1jb21wb25lbnQgY2xyLXRyZWUtbm9kZSBidXR0b257d2hpdGUtc3BhY2U6bm93cmFwfWhvbWUtY29tcG9uZW50IC5jYXJkLWJsb2Nre2hlaWdodDoxMDAlO3BhZGRpbmc6'@; put 'MH1ob21lLWNvbXBvbmVudCAubm8tdGFibGUtc2VsZWN0ZWR7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjEwMCV9aG9tZS1jb21wb25lbnQgLnNwaW5uZXItd3JhcHBlci1mdWxscGFnZXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lk'@; put 'dGg6MTAwJTtoZWlnaHQ6MTAwJX1jbHItaWNvbi5pcy1ibHVlLGNsci1pY29uLmlzLWluZm97ZmlsbDojNmE5MjM1fWFwcC1zaWRlYmFyIC5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH1hcHAtc2lkZWJhciBjbHItdmVydGlj'@; put 'YWwtbmF2e3dpZHRoOjI3MnB4O21pbi13aWR0aDoyNzJweDtoZWlnaHQ6MTAwJTttYXgtd2lkdGg6Mzc1cHg7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNoYWRvdzowIDAgNXB4ICMwMDAwMDAxZn1hcHAtc2lkZWJhciBjbHItdmVydGljYWwtbmF2IC5zdW4tZHJvcGRvd257bWluLWhlaWdodDoz'@; put 'NnB4fWFwcC1zaWRlYmFyIGNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmVle2hlaWdodDoxMDAlO292ZXJmbG93LXk6YXV0b31hcHAtc2lkZWJhciBjbHItdmVydGljYWwtbmF2LmNsb3NlZHttYXJnaW4tbGVmdDotMjcycHh9YXBwLXNpZGViYXIgY2xyLXZlcnRpY2FsLW5hdiAucmVzaXplLWhh'@; put 'bmRsZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDotM3B4O2JvcmRlci1yaWdodDo0cHggc29saWQgIzgwYjQ0MTtjdXJzb3I6Y29sLXJlc2l6ZTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgLjFzIGVhc2UtaW4tb3V0fWFwcC1zaWRlYmFyIGNsci12ZXJ0aWNhbC1u'@; put 'YXYgLnJlc2l6ZS1oYW5kbGU6aG92ZXJ7b3BhY2l0eTouNX1hcHAtc2lkZWJhciBjbHItdmVydGljYWwtbmF2IC5yZXNpemUtaGFuZGxlLnJlc2l6aW5ne29wYWNpdHk6MX1hcHAtc2lkZWJhciBjbHItdmVydGljYWwtbmF2LnJlc2l6aW5ne3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9YXBw'@; put 'LXNpZGViYXIgLm5hdi1kaXZpZGVye2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDM7bWFyZ2luLWJvdHRvbTowfWFwcC1zaWRlYmFyIC5wYWdlLXRpdGxle21hcmdpbjowO2ZvbnQtc2l6ZToxOHB4O3RleHQtYWxpZ246Y2VudGVyfWFwcC1zaWRlYmFyIC56ZXJvLW1hcmdp'@; put 'bnttYXJnaW46MCFpbXBvcnRhbnR9YXBwLXNpZGViYXIgLnVzZXItbmF2LWJ0bntwYWRkaW5nOjAgMnB4fWFwcC1zaWRlYmFyICNzaWRlYmFyTmF2e3otaW5kZXg6MjAwfUBtZWRpYShtYXgtd2lkdGg6NzY3cHgpe2FwcC1zaWRlYmFyICNzaWRlYmFyTmF2e3Bvc2l0aW9uOmFic29sdXRlO2Jv'@; put 'dHRvbTowO3RvcDowfX1hcHAteGxtYXAgLmNhcmR7bWFyZ2luLXRvcDowO2ZsZXg6MTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufWFwcC14bG1hcCBjbHItdHJlZS1ub2RlIGJ1dHRvbnt3aGl0ZS1zcGFjZTpub3dyYXB9YXBwLXhsbWFwIC5uby10YWJsZS1zZWxlY3RlZHtw'@; put 'b3NpdGlvbjpyZWxhdGl2ZX1hcHAteGxtYXAgLmhlYWRlci1yb3cgLnRpdGxlLWNvbHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfWFwcC14bG1hcCAuaGVhZGVyLXJvdyAub3B0aW9ucy1jb2x7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1hcHAteGxtYXAg'@; put 'LnN3e21hcmdpbjoxcmVtIDByZW0gLjVyZW0gMXJlbX1hcHAteGxtYXAgLnZpZXdlclRpdGxle3RleHQtYWxpZ246Y2VudGVyfWFwcC14bG1hcCAuY2FyZEZsZXh7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9YXBwLXhsbWFwIC5jb250ZW50LWFyZWF7ZGlzcGxheTpmbGV4'@; put 'O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn1hcHAteGxtYXAgaG90LXRhYmxlIC5wcmltYXJ5S2V5SGVhZGVyU3R5bGV7YmFja2dyb3VuZDojMzA2YjAwNmV9YXBwLXhsbWFwIC5kcm9wLWFyZWF7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRl'@; put 'cjttYXJnaW46MXB4O2JvcmRlcjoycHggZGFzaGVkICNmZmY7ei1pbmRleDotMX1hcHAteGxtYXAgLmRyb3AtYXJlYSBzcGFue2ZvbnQtc2l6ZToyMHB4O21hcmdpbi10b3A6MjBweDtjb2xvcjojZmZmfWFwcC1tdWx0aS1kYXRhc2V0IC5uby10YWJsZS1zZWxlY3RlZHtkaXNwbGF5OmZsZXg7'@; put 'anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1iZy1jb2xvcik7ei1pbmRleDoxMDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDow'@; put 'fWFwcC1tdWx0aS1kYXRhc2V0IC5oZWFkZXItcm93e3BhZGRpbmc6MTVweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkM2QzZDN9YXBwLW11bHRpLWRhdGFzZXQgLmRhdGFzZXQtaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6NTAwcHg7d2lkdGg6MTAwJX1hcHAtbXVsdGktZGF0YXNldCAu'@; put 'c3VibWl0LXJlYXNvbnttaW4taGVpZ2h0OjcwcHg7bWF4LWhlaWdodDo3MHB4O2hlaWdodDo3MHB4fWFwcC1tdWx0aS1kYXRhc2V0IC5sb2ctd3JhcHBlcnttYXJnaW46MCAxMHB4O2hlaWdodDphdXRvfWFwcC1tdWx0aS1kYXRhc2V0IC5kYXRhc2V0LXNlbGVjdGlvbi1hY3Rpb25ze2JvcmRl'@; put 'ci10b3A6MXB4IHNvbGlkICNkM2QzZDN9YXBwLW11bHRpLWRhdGFzZXQgLmxpY2VuY2UtbGltaXQtbm90aWNle2NvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrKX1hcHAtbXVsdGktZGF0YXNldCAuc3VibWlzc2lvbi1yZXN1bHRze2JvcmRlci1ib3R0b206MXB4IHNv'@; put 'bGlkICNkM2QzZDN9dGQubm90LW1hdGNoZWR7YmFja2dyb3VuZC1jb2xvcjojZmYwMDAwNTR9YXBwLXN1Ym1pdHRlZCAubm9Cb3JkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fWFwcC1zdWJtaXR0ZWQgLnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVm'@; put 'dD4udG9vbHRpcC1jb250ZW50LGFwcC1zdWJtaXR0ZWQgLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0e2JhY2tncm91bmQ6IzMxNDM1MSFpbXBvcnRhbnR9YXBwLXN1Ym1pdHRlZCAudG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0Pi50b29sdGlwLWNvbnRl'@; put 'bnQ6YmVmb3JlLGFwcC1zdWJtaXR0ZWQgLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZXtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLWJvdHRvbTouMjA4MzNyZW0gc29saWQgIzMxNDM1MX1hcHAtc3VibWl0dGVkIC5u'@; put 'by1zdWJtaXR0ZWQtdGFibGVze2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfWFwcC1hcHByb3ZlIC5jb2x1bW4tY2VudGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9YXBwLWFwcHJvdmUgLmRh'@; put 'dGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZXtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fWFwcC1hcHByb3ZlIC5saW5rc3tmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9YXBwLWFwcHJvdmUgLnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdD4udG9v'@; put 'bHRpcC1jb250ZW50LGFwcC1hcHByb3ZlIC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdHtiYWNrZ3JvdW5kOiMzMTQzNTEhaW1wb3J0YW50fWFwcC1hcHByb3ZlIC50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUs'@; put 'YXBwLWFwcHJvdmUgLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZXtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLWJvdHRvbTouMjA4MzNyZW0gc29saWQgIzMxNDM1MX1hcHAtYXBwcm92ZSAubm9Cb3JkZXJ7Ym9yZGVy'@; put 'LWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fWFwcC1hcHByb3ZlIC5hcHByb3ZhbHMtbGlzdC13cmFwcGVye2hlaWdodDo3MHZoO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXJ9'@; put 'YXBwLWFwcHJvdmUgLm5vYXBwcm92YWxzLWluZm8td3JhcHBlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfWFwcC1oaXN0b3J5IC5yZWplY3RlZHtj'@; put 'b2xvcjojOTIyMDFhO2ZvbnQtd2VpZ2h0OjcwMH1hcHAtaGlzdG9yeSAuYWNjZXB0ZWR7Y29sb3I6IzEwNWMyNjtmb250LXdlaWdodDo3MDB9YXBwLWhpc3RvcnkgLmhzQ2VsbHtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7anVzdGlmeS1j'@; put 'b250ZW50OmNlbnRlciFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudDtwYWRkaW5nOjdweH1hcHAtaGlzdG9yeSAuYnRDZWxse2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9YXBwLWhpc3RvcnkgLnZlckNlbnRlcntk'@; put 'aXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3dvcmQtYnJlYWs6YnJlYWstYWxsfWFwcC1oaXN0b3J5IC5sb2FkLW1vcmUgaW5wdXR7d2lkdGg6OTBweH1hcHAtaGlzdG9yeSAjbm9EYXRhQ29udGFpbmVye2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfWFwcC1oaXN0b3J5IC50YWJs'@; put 'ZS1saW5re3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC13ZWlnaHQ6NzAwfWFwcC12aWV3ZXIgLmNhcmR7bWFyZ2luLXRvcDowO2ZsZXg6MTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufWFwcC12aWV3ZXIgY2xyLXRyZWUtbm9kZSBidXR0b257d2hpdGUtc3BhY2U6'@; put 'bm93cmFwfWFwcC12aWV3ZXIgLnRvZ2dsZS1zd2l0Y2ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1pbjt0cmFuc2l0aW9u'@; put 'LXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfWFwcC12aWV3ZXIgLmhlYWRlci1yb3cgLnRpdGxlLWNvbHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfWFwcC12aWV3ZXIgLmhlYWRlci1yb3cgLm9wdGlvbnMtY29se2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNv'@; put 'bnRlbnQ6ZmxleC1lbmQ7YWxpZ24taXRlbXM6Y2VudGVyfWFwcC12aWV3ZXIgLnN3e21hcmdpbjoxcmVtIDByZW0gLjVyZW0gMXJlbX1hcHAtdmlld2VyIC5pbmZvQmFye21hcmdpbi10b3A6MTBweH1hcHAtdmlld2VyIC5maWx0ZXJTaWRle21hcmdpbi10b3A6MjZweDttYXJnaW4tYm90dG9t'@; put 'OjE5cHh9YXBwLXZpZXdlciAub3B0aW9ucy1kcm9wZG93biBjbHItaWNvbnttYXJnaW4tcmlnaHQ6NXB4fWFwcC12aWV3ZXIgLmRyb3Bkb3duLW1lbnV7d2lkdGg6MTgwcHg7bWFyZ2luLXRvcDotMThweDtwYWRkaW5nOjB9YXBwLXZpZXdlciAuZHJvcGRvd24tbWVudSAuYnRue3dpZHRoOjEw'@; put 'MCU7dGV4dC10cmFuc2Zvcm06bm9uZX1hcHAtdmlld2VyIC5jYXJkRmxleHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn1hcHAtdmlld2VyIC5ub0RhdGF7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0'@; put 'ZW1zOmNlbnRlcjtmbGV4OjF9YXBwLXZpZXdlciAuZmlsdGVyQnRue2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9YXBwLXZpZXdlciAuZWRpdEJ0bntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9YXBwLXZpZXdlciAuYnRuVmlld3ttYXJnaW46'@; put 'MCFpbXBvcnRhbnR9YXBwLXZpZXdlciAuY29udGVudC1hcmVhe3BhZGRpbmc6LjVyZW0haW1wb3J0YW50O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59YXBwLXZpZXdlciAuZG93bmxvYWQtc2VsZWN0IC5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDp1bnNldCFpbXBv'@; put 'cnRhbnR9YXBwLXZpZXdlciAucmVmcmVzaC10YWJsZXtjdXJzb3I6cG9pbnRlcjttYXJnaW4tbGVmdDo1cHh9YXBwLXZpZXdlciAubGliaW5mb3twYWRkaW5nOjEwcHggMjBweDtvdmVyZmxvdzphdXRvfWFwcC12aWV3ZXIgaG90LXRhYmxle2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfWFw'@; put 'cC12aWV3ZXIgaG90LXRhYmxlIC5oYW5kc29udGFibGUgdGJvZHkgdGguaHRfX2hpZ2hsaWdodC5wcmltYXJ5S2V5SGVhZGVyU3R5bGUsYXBwLXZpZXdlciBob3QtdGFibGUgLmhhbmRzb250YWJsZSB0aGVhZCB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3Jv'@; put 'dW5kLWNvbG9yOiMzMDZiMDBiMCFpbXBvcnRhbnR9YXBwLXZpZXdlciBob3QtdGFibGUgLnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDZiMDA2ZSFpbXBvcnRhbnR9YXBwLXZpZXdlciAubm8tdGFibGUtc2VsZWN0ZWQtaW5mb3tiYWNrZ3JvdW5kOm5vbmU7ZGlz'@; put 'cGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59YXBwLXZpZXdlciAud2ViLXF1ZXJ5e21heC1oZWlnaHQ6MzV2aH1hcHAtdmlld2VyIC53ZWItcXVlcnkgLndlYi1xdWVyeS10ZXh0e21pbi1oZWlnaHQ6MTAwcHg7bWF4LWhlaWdodDoxMDBweDt3aWR0'@; put 'aDoxMDAlIWltcG9ydGFudH1hcHAtdmlld2VyIC53ZWItcXVlcnkgLndlYi1xdWVyeS13cmFwcGVyIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX1hcHAtdmlld2VyIC53ZWItcXVlcnkgLndlYi1xdWVyeS13cmFwcGVyIGNsci10ZXh0YXJlYS1jb250YWluZXJ7bWFyZ2luOjAh'@; put 'aW1wb3J0YW50fWFwcC12aWV3ZXIgLndlYi1xdWVyeSAud2ViLXF1ZXJ5LXdyYXBwZXIgLmNsci10ZXh0YXJlYS13cmFwcGVye21hcmdpbjowIWltcG9ydGFudH1hcHAtdmlld2VyIC50YWJsZS1zZWFyY2gtd3JhcHBlcnttYXJnaW4tbGVmdDowfWFwcC12aWV3ZXIgLnRhYmxlLXNlYXJjaC13'@; put 'cmFwcGVyIGZvcm17cGFkZGluZy1sZWZ0OjB9YXBwLXZpZXdlciAudGFibGUtc2VhcmNoLXdyYXBwZXIgY2xyLWljb257bWFyZ2luLXRvcDo0cHh9YXBwLXZpZXdlciAudGFibGUtc2VhcmNoLXdyYXBwZXIgY2xyLWlucHV0LWNvbnRhaW5lcnttYXJnaW4tdG9wOjB9YXBwLXZpZXdlciAudGFi'@; put 'bGUtc2VhcmNoLXdyYXBwZXIgLmNsci1jb250cm9sLWNvbnRhaW5lcnttYXJnaW4tbGVmdDowfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpe2FwcC12aWV3ZXIgLmZpbHRlckJ0bntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn1hcHAtdmlld2VyIC5lZGl0'@; put 'QnRue2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfX1AbWVkaWEobWluLXdpZHRoOjU3NnB4KXthcHAtdmlld2VyIC5yb3d7bWFyZ2luLXJpZ2h0OjByZW07bWFyZ2luLWxlZnQ6MHJlbX19YXBwLWdyb3VwIC5zaWRlYmFyLWhlaWdodHtoZWlnaHQ6MTAwJX1hcHAtZ3JvdXAg'@; put 'Lmdyb3VwLWluZm8tdGV4dHtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MjBweH1hcHAtZ3JvdXAgLmdyb3VwLWluZm97Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItcmFkaXVzOjNweH1hcHAtZ3JvdXAgLmdyb3VwLWluZm8gdGR7dGV4dC1hbGlnbjpjZW50ZXJ9YXBwLWdyb3VwIC5ncm91cC1k'@; put 'YXRhe2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9YXBwLWdyb3VwIC5ncm91cC1kYXRhe21pbi1oZWlnaHQ6YXV0b31hcHAtZ3JvdXAgLmdyb3VwLWRhdGEgaDMsYXBwLWdyb3VwIC5ncm91cC1kYXRhIGg1e3RleHQtYWxpZ246Y2VudGVyfWFwcC1ncm91cCAuZ3JvdXAtZGF0'@; put 'YSAubWVtYmVyLXRhYmxle3dpZHRoOjEwMCV9YXBwLWdyb3VwIC5ncm91cC1kYXRhIC5tZW1iZXItdGFibGUgdGJvZHkgdHI6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9YXBwLWdyb3VwIC50YWJsZS1jb250YWluZXJ7b3ZlcmZsb3c6YXV0b31AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2'@; put 'OHB4KXthcHAtZ3JvdXAgLmdyb3VwLWRhdGF7bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fWJvZHlbY2RzLXRoZW1lPWRhcmtdIGFwcC1ncm91cCAuZ3JvdXAtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTE7Ym9yZGVyLWNvbG9yOiMzMTQzNTF9Ym9keVtjZHMtdGhlbWU9ZGFya10g'@; put 'YXBwLWdyb3VwIC5ncm91cC1kYXRhe2JhY2tncm91bmQtY29sb3I6IzMxNDM1MTtib3JkZXItY29sb3I6IzMxNDM1MX1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtZ3JvdXAgLm1lbWJlci10YWJsZSB0Ym9keSB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyOTQwNGJ9Ym9keVtjZHMtdGhl'@; put 'bWU9bGlnaHRdIGFwcC1ncm91cCAuZ3JvdXAtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyLWNvbG9yOiNhN2E3YTc7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN31ib2R5W2Nkcy10aGVtZT1saWdodF0gYXBwLWdyb3VwIC5ncm91cC1kYXRhe2JhY2tncm91bmQtY29s'@; put 'b3I6I2Y5ZjlmOTtib3JkZXItY29sb3I6I2E3YTdhNztib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBhcHAtZ3JvdXAgLm1lbWJlci10YWJsZSB0Ym9keSB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTZ9YXBwLXVzZXIgLnNpZGViYXIt'@; put 'aGVpZ2h0e2hlaWdodDoxMDAlfWFwcC11c2VyIC51c2VyLWluZm8tdGV4dHtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MjBweH1hcHAtdXNlciAudXNlci1pbmZve2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9YXBwLXVzZXIgLnVzZXItaW5mbyB0ZHt0ZXh0LWFsaWduOmNl'@; put 'bnRlcn1hcHAtdXNlciAudXNlci1kYXRhe2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9YXBwLXVzZXIgLnVzZXItZGF0YXttaW4taGVpZ2h0OmF1dG99YXBwLXVzZXIgLnVzZXItZGF0YSBoMyxhcHAtdXNlciAudXNlci1kYXRhIGg1e3RleHQtYWxpZ246Y2VudGVyfWFwcC11'@; put 'c2VyIC51c2VyLXRhYmxle3dpZHRoOjEwMCV9YXBwLXVzZXIgLnVzZXItdGFibGUgdGhlYWR7YmFja2dyb3VuZC1jb2xvcjojZGFkYWRhfWFwcC11c2VyIC51c2VyLXRhYmxlIHRib2R5IHRyOmhvdmVye2N1cnNvcjpwb2ludGVyfWFwcC11c2VyIC53aWR0aC01MHt3aWR0aDo1MCV9YXBwLXVz'@; put 'ZXIgLndpZHRoLTMze3dpZHRoOjMzJX1hcHAtdXNlciAudGFibGUtY29udGFpbmVye292ZXJmbG93LXk6c2Nyb2xsO21heC1oZWlnaHQ6NTAwcHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjhweCl7YXBwLXVzZXIgLnVzZXItZGF0YXttaW4taGVpZ2h0OnVuc2V0IWltcG9ydGFu'@; put 'dH19Ym9keVtjZHMtdGhlbWU9ZGFya10gYXBwLXVzZXIgLnVzZXItaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTE7Ym9yZGVyLWNvbG9yOiMzMTQzNTF9Ym9keVtjZHMtdGhlbWU9ZGFya10gYXBwLXVzZXIgLnVzZXItZGF0YXtiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTE7Ym9yZGVyLWNv'@; put 'bG9yOiMzMTQzNTF9Ym9keVtjZHMtdGhlbWU9ZGFya10gYXBwLXVzZXIgLnVzZXItdGFibGUgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMjk0MDRifWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBhcHAtdXNlciAudXNlci1pbmZve2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3Jk'@; put 'ZXItY29sb3I6I2E3YTdhNztib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBhcHAtdXNlciAudXNlci1kYXRhe2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXItY29sb3I6I2E3YTdhNztib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fWJv'@; put 'ZHlbY2RzLXRoZW1lPWxpZ2h0XSBhcHAtdXNlciAudXNlci10YWJsZSB0Ym9keSB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTZ9YXBwLXJlcXVlc3RzLW1vZGFsey0tbGluZS1oZWlnaHQ6IDE2cHg7LS1saW5lLXRvcDogMHB4fWFwcC1yZXF1ZXN0cy1tb2RhbCAubG9nLXdyYXBw'@; put 'ZXIuc2FzbG9ne3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOnByZTtmb250LWZhbWlseTptb25vc3BhY2V9YXBwLXJlcXVlc3RzLW1vZGFsIC5sb2ctd3JhcHBlci5zYXNsb2cgLmhpZ2hsaWdodGVkLWxpbmV7YmFja2dyb3VuZC1jb2xvcjojZmYwM31hcHAtcmVxdWVzdHMtbW9kYWwg'@; put 'LmxpbmUtaGlnaGxpZ2h0LW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3dpZHRoOjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZTthbmltYXRpb246ZmFkZU91dCAzcyBmb3J3YXJkczt6LWluZGV4OjEwfWFwcC1yZXF1ZXN0cy1tb2RhbCAudGVtcC1oZWlnaHQtc2V0dGVye2hlaWdo'@; put 'dDp2YXIoLS1saW5lLWhlaWdodCl9YXBwLXJlcXVlc3RzLW1vZGFsIC5saW5lLXBvc2l0aW9uLXNldHRlcnt0b3A6dmFyKC0tbGluZS10b3ApfWFwcC1yZXF1ZXN0cy1tb2RhbCAudGVtcC1saW5lLWhlaWdodC1jYWxje3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuO2hlaWdo'@; put 'dDphdXRvfWFwcC1yZXF1ZXN0cy1tb2RhbCAuZXJyb3ItaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6I2YwMDN9YXBwLXJlcXVlc3RzLW1vZGFsIC53YXJuaW5nLWhpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjAzfUBrZXlmcmFtZXMgZmFkZU91dHswJXtvcGFjaXR5OjF9NzAle29w'@; put 'YWNpdHk6MX10b3tvcGFjaXR5OjB9fWFwcC1yZXF1ZXN0cy1tb2RhbCAuaGlnaGxpZ2h0ZWQtbGluZXtiYWNrZ3JvdW5kLWNvbG9yOiM2MWEyMjAyYn1hcHAtcmVxdWVzdHMtbW9kYWwgLmVycm9yLWxpbmV7Y29sb3I6I2UxMjIwMH1hcHAtcmVxdWVzdHMtbW9kYWwgLndhcm5pbmctbGluZXtj'@; put 'b2xvcjojZjJhZjAwfWFwcC1yZXF1ZXN0cy1tb2RhbCAubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNGU0ZTQ7cGFkZGluZzowIDAgLjVyZW07bWFyZ2luLWJvdHRvbTo1cHh9YXBwLXJlcXVlc3RzLW1vZGFsIC5kcm9wZG93bi1pdGVtLnNlbGVj'@; put 'dGVke2JhY2tncm91bmQ6I2Q4ZTNlOX1hcHAtcmVxdWVzdHMtbW9kYWwgLm5vLXJlcXN7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTAxOTYwNzg0Myk7cGFkZGluZy10b3A6NXB4O3RleHQtYWxpZ246Y2VudGVyfS5yZXF1ZXN0cy1tb2RhbCAubW9kYWwtaGVhZGVyLS1hY2Nl'@; put 'c3NpYmxlLS1hY2Nlc3NpYmxlIC5jbG9zZSBjbHItaWNvbntkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0ucmVxdWVzdHMtbW9kYWwgLm1vZGFsLWNvbnRlbnR7cGFkZGluZzoyMHB4IDEwcHggNXB4fS53b3JrLXRhYmxlcy1kcm9wZG93biBidXR0b257Y29sb3I6dmFyKC0tY2xyLW5hdi1saW5r'@; put 'LWNvbG9yLCAjOGM4YzhjKSFpbXBvcnRhbnR9LnN0YWNrLXZpZXd7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21hc2staW1hZ2U6bm9uZSFpbXBvcnRhbnQ7LXdlYmtpdC1tYXNrLWltYWdlOm5vbmUhaW1wb3J0YW50fS5jb250ZW50IGNsci1pY29ue21hcmdpbi1ib3R0b206NXB4fS5jb250ZW50'@; put 'IHByZXt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDttYXgtaGVpZ2h0OmluaXRpYWw7b3ZlcmZsb3c6dmlzaWJsZTtib3JkZXI6MH0uY29udGVudCAuc3RhY2stYmxvY2stbGFiZWx7d2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6LjZyZW0haW1wb3J0YW50fS5jb250'@; put 'ZW50IC5zdGFjay1ibG9jay1sYWJlbCAuc3RhY2stdmlldy1rZXl7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZXJyLWxpbmtzIC5jbHItdHJlZW5vZGUtY2hpbGRyZW57bWF4LWhlaWdodDo1NXB4O292ZXJmbG93OmF1dG99YXBwLXN5c3RlbSAuY29udGVudC1ib3h7bWF4LXdpZHRoOjEyODlw'@; put 'eH1hcHAtc3lzdGVtIC5zeXMtaW5mbz5kaXZ7ZmxleDoxfWFwcC1zeXN0ZW0gLnN5cy1pbmZvIGRpdjpudGgtY2hpbGQoMil7bWFyZ2luOjAgMzBweH1hcHAtc3lzdGVtIC5hZG1pbi1hY3Rpb24sYXBwLXN5c3RlbSAudXNlci1hY3Rpb257ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpz'@; put 'cGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjVweCAxMHB4O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgI2RlZGVkZTttYXJnaW4tYm90dG9tOjVweH1hcHAtc3lzdGVtIC5hZG1pbi1hY3Rpb24gYnV0dG9uLGFwcC1zeXN0ZW0gLnVzZXItYWN0aW9u'@; put 'IGJ1dHRvbnttaW4td2lkdGg6MTAycHh9YXBwLXN5c3RlbSAuZGFya3tmb250LXdlaWdodDo3MDA7bWFyZ2luLWxlZnQ6NXB4fUBtZWRpYShtYXgtd2lkdGg6OTkzcHgpe2FwcC1zeXN0ZW0gLnN5cy1pbmZvIGRpdjpudGgtY2hpbGQoMil7bWFyZ2luOjB9YXBwLXN5c3RlbSAuc3lzLWluZm8g'@; put 'ZGl2e21hcmdpbjoyMHB4IDB9fWFwcC1xdWVyeSAuY29udGVudHtkaXNwbGF5OmZsZXh9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNs'@; put 'YXVzZS1sb2dpY3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzoxNXB4fWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeXtwYWRkaW5nOjMwcHggMCAyMHB4IDIwcHg7ZGlzcGxh'@; put 'eTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Bvc2l0aW9uOnJlbGF0aXZlfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeT4uY2xyLXJvd3tqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn1hcHAt'@; put 'cXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnk+LmNsci1yb3c6bm90KDpsYXN0LWNoaWxkKXtwYWRkaW5nLWJvdHRvbToxNXB4O21hcmdpbi1ib3R0b206MTVweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNil9YXBwLXF1ZXJ5IC5j'@; put 'b250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC5yZW1vdmUtZ3JvdXAtY2xhdXNlLWJ1dHRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2NvbG9yOmdyYXl9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5'@; put 'IC52YXJpYWJsZS1jb2x7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7cGFkZGluZy1ib3R0b206MXB4fWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFyaWFibGUtY29sIC5kYXRhbGlzdC13cmFwcGVye3dpZHRoOjEwMCV9'@; put 'YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC52YXJpYWJsZS1jb2wgLmRhdGFsaXN0LXdyYXBwZXIgaW5wdXR7d2lkdGg6MTAwJX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLm9wZXJhdG9yLWNv'@; put 'bHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydH1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLm9wZXJhdG9yLWNvbCBjbHItc2VsZWN0LWNvbnRhaW5lcntoZWlnaHQ6NDVweDttYXJnaW4tdG9wOjA7d2lkdGg6MTAwJX1hcHAt'@; put 'cXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtwYWRkaW5nLWJvdHRvbToxcHh9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5'@; put 'IC52YWx1ZS1jb2wgLmNoZWNrYm94LXZhbHN7d2lkdGg6MTAwJTtwYWRkaW5nOjAgNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjMpfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5jaGVja2JveC12'@; put 'YWxzIGNsci1jaGVja2JveC1jb250YWluZXJ7bWFyZ2luLXRvcDowfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5jaGVja2JveC12YWxzIHNlY3Rpb257bWF4LWhlaWdodDoxMjBweDtvdmVyZmxvdy15OnNjcm9sbH1hcHAt'@; put 'cXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuc2luZ2xlLWZpZWxkLXZhbHN7d2lkdGg6MTAwJX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuc2luZ2xlLWZpZWxk'@; put 'LXZhbHMgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5zaW5nbGUtZmllbGQtdmFscyAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcntt'@; put 'YXgtd2lkdGg6bm9uZX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuc2luZ2xlLWZpZWxkLXZhbHMgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cHt3aWR0aDoxMDAl'@; put 'fWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5zaW5nbGUtZmllbGQtdmFscz5pbnB1dHt3aWR0aDoxMDAlfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5z'@; put 'aW5nbGUtZmllbGQtdmFscyBpbnB1dFt0eXBlPXRpbWVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxN3B4fWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5yYW5nZS12YWxze3dpZHRoOjEwMCV9YXBwLXF1ZXJ5IC5jb250'@; put 'ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC52YWx1ZS1jb2wgLnJhbmdlLXZhbHMgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5yYW5nZS12'@; put 'YWxzIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDpub25lfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5yYW5nZS12YWxzIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1p'@; put 'bnB1dC13cmFwcGVyIC5jbHItaW5wdXQtZ3JvdXB7d2lkdGg6MTAwJX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAucmFuZ2UtdmFscyAuZnJvbXttYXJnaW4tYm90dG9tOjEwcHh9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1'@; put 'c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC52YWx1ZS1jb2wgLnJhbmdlLXZhbHMgLmZyb20+aW5wdXR7d2lkdGg6MTAwJX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAucmFuZ2UtdmFscyAuZnJvbSBpbnB1dFt0eXBl'@; put 'PXRpbWVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxN3B4fWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5yYW5nZS12YWxzIC5mcm9tLGFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1x'@; put 'dWVyeSAudmFsdWUtY29sIC5yYW5nZS12YWxzIC50b3ttaW4td2lkdGg6MTAwcHh9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC52YWx1ZS1jb2wgLnJhbmdlLXZhbHMgLmZyb20+aW5wdXQsYXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNv'@; put 'bnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC52YWx1ZS1jb2wgLnJhbmdlLXZhbHMgLnRvPmlucHV0e3dpZHRoOjEwMCV9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5IC52YWx1ZS1jb2wgLnJhbmdlLXZhbHMgLmZyb20gaW5wdXRbdHlwZT10aW1lXSxh'@; put 'cHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAucmFuZ2UtdmFscyAudG8gaW5wdXRbdHlwZT10aW1lXXt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTdweH1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5j'@; put 'bGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuY29udGFpbnMtdmFsc3t3aWR0aDoxMDAlfWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAudmFsdWUtY29sIC5jb250YWlucy12YWxzIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX1hcHAt'@; put 'cXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuY29udGFpbnMtdmFscyAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFp'@; put 'bmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuY29udGFpbnMtdmFscyAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlciAuY2xyLWlucHV0LWdyb3Vwe3dpZHRoOjEwMCV9YXBwLXF1ZXJ5IC5jb250ZW50IC5jbGF1c2VzLWNvbnRhaW5lciAuY2xhdXNlLXF1ZXJ5'@; put 'IC52YWx1ZS1jb2wgLmNvbnRhaW5zLXZhbHM+aW5wdXR7d2lkdGg6MTAwJX1hcHAtcXVlcnkgLmNvbnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLnZhbHVlLWNvbCAuY29udGFpbnMtdmFscyBpbnB1dFt0eXBlPXRpbWVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDox'@; put 'N3B4fWFwcC1xdWVyeSAuY29udGVudCAuY2xhdXNlcy1jb250YWluZXIgLmNsYXVzZS1xdWVyeSAuY2xhdXNlLWJ1dHRvbnN7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQ7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcn1hcHAtcXVlcnkgLmNv'@; put 'bnRlbnQgLmNsYXVzZXMtY29udGFpbmVyIC5jbGF1c2UtcXVlcnkgLmNsYXVzZS1idXR0b25zIGJ1dHRvbnttaW4td2lkdGg6YXV0b31hcHAtcXVlcnkgLmludmFsaWQtY2xhdXNle2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjZDk0YjMxfWFwcC1xdWVyeSAuY2xhdXNlLXJvdyBjbHItaWNvbntt'@; put 'YXJnaW46MH1hcHAtcXVlcnkgcHJlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6OHB4O21hcmdpbjowO2JvcmRlci1yYWRpdXM6MXB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OjY2cHg7cG9zaXRpb246cmVsYXRp'@; put 'dmV9YXBwLXF1ZXJ5IHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSBzcGFuLnNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4O3RvcDoxMHB4fWFwcC1xdWVyeSBwcmVbY2xhc3MqPWxhbmd1YWdlLV0gY29kZXt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9'@; put 'YXBwLXF1ZXJ5IC5pbnB1dC12YWx7Ym9yZGVyOjBweDtiYWNrZ3JvdW5kOiNmYmY4Zjg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzk5OTk5OX1hcHAtcXVlcnkgY2xyLWRhdGUtY29udGFpbmVye21hcmdpbi10b3A6MnB4IWltcG9ydGFudH1hcHAtcXVlcnkgaW5wdXRbdHlwZT10aW1lXXti'@; put 'b3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNiM2IzYjN9YXBwLXF1ZXJ5IGlucHV0W3R5cGU9dGltZV06Zm9jdXN7b3V0bGluZTpub25lfWFwcC1xdWVyeSAuaW4tdmFsdWVzLW1vZGFsIC5tb2RhbC1mb290ZXJ7Ym9yZGVyLXRvcDoxcHgg'@; put 'c29saWQgI2Q4ZDhkODttYXJnaW4tdG9wOjEwcHh9YXBwLXF1ZXJ5IC5wcm9ncmVzcyxhcHAtcXVlcnkgLnByb2dyZXNzLXN0YXRpY3tiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3dpZHRoOjEwMCU7aGVpZ2h0OjRweDt0b3A6M3B4fWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBhcHAtcXVl'@; put 'cnkgLmNsYXVzZS1sb2dpY3tiYWNrZ3JvdW5kOiNlOWU5ZTl9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIGFwcC1xdWVyeSAuY2xhdXNlLXF1ZXJ5e2JhY2tncm91bmQ6I2ZiZjhmOH1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtcXVlcnkgLmxpbmUtbnVtYmVyc3tib3JkZXItY29sb3I6Izk4OTc5'@; put 'NyFpbXBvcnRhbnR9Ym9keVtjZHMtdGhlbWU9ZGFya10gYXBwLXF1ZXJ5IC5jbGF1c2UtbG9naWN7YmFja2dyb3VuZDojMTkyYTMwfWJvZHlbY2RzLXRoZW1lPWRhcmtdIGFwcC1xdWVyeSAuY2xhdXNlLXF1ZXJ5e2JhY2tncm91bmQ6IzI2M2U0OH1hcHAtbG9naW4gLnNpZGVCYXJQcm9wc3ti'@; put 'YWNrZ3JvdW5kOiMzMTQzNTEhaW1wb3J0YW50O2NvbG9yOiNlMGUwZTB9YXBwLWxvZ2luIC5zaWRlQmFyUHJvcHMgaDIsYXBwLWxvZ2luIC5zaWRlQmFyUHJvcHMgaDMsYXBwLWxvZ2luIC5zaWRlQmFyUHJvcHMgaDQsYXBwLWxvZ2luIC5zaWRlQmFyUHJvcHMgaDUsYXBwLWxvZ2luIC5zaWRl'@; put 'QmFyUHJvcHMgaW5wdXR7Y29sb3I6I2UwZTBlMH1hcHAtbG9naW4gLnNpZGVCYXJQcm9wcyBidXR0b257Ym9yZGVyLWNvbG9yOndoZWF0IWltcG9ydGFudH1hcHAtbG9naW4gLnNpZGVCYXJQcm9wcyBhe2NvbG9yOiNlMGUwZTB9YXBwLWxvZ2luIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXJ7d2lk'@; put 'dGg6MTAwJTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjEwMDAwfWFwcC1sb2dpbiAubG9naW4tc2lkZWJhci13cmFwcGVyPip7cG9pbnRlci1ldmVudHM6YXV0b31hcHAtbG9naW4gLmxvZ2luLXNpZGViYXItd3Jh'@; put 'cHBlciAubG9naW4tc2lkZWJhcnt3aWR0aDo0MDBweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtwYWRkaW5nOjQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNDAwcHgpO3RyYW5zaXRp'@; put 'b246dHJhbnNmb3JtIC4zcyBlYXNlfWFwcC1sb2dpbiAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1zaWRlYmFyIGZvcm0ubG9naW57ei1pbmRleDoxMDE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfWFwcC1sb2dpbiAubG9n'@; put 'aW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1zaWRlYmFyIGZvcm0ubG9naW4gLnRpdGxle2ZvbnQtc2l6ZTozMnB4O2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDozNnB4fWFwcC1sb2dpbiAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1zaWRlYmFyIGZvcm0ubG9naW4g'@; put 'LnRpdGxlIC53ZWxjb21le21hcmdpbi10b3A6MzZweH1hcHAtbG9naW4gLmxvZ2luLXNpZGViYXItd3JhcHBlciAubG9naW4tc2lkZWJhciBmb3JtLmxvZ2luIC5sb2dpbi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6NDhweCAwIDB9YXBwLWxvZ2lu'@; put 'IC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLXNpZGViYXIgZm9ybS5sb2dpbiAubG9naW4tZ3JvdXA+KnttYXJnaW46NnB4IDAgMThweH1hcHAtbG9naW4gLmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmUgLmxvZ2luLXNpZGViYXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt6LWlu'@; put 'ZGV4OjEwMX1hcHAtbG9naW4gLmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmUgLm92ZXJsYXl7ZGlzcGxheTpibG9ja31hcHAtbG9naW4gLmxvZ2luLXNpZGViYXItd3JhcHBlciAub3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAl'@; put 'O3dpZHRoOjEwMCU7YmFja2dyb3VuZDojMjEyMTIxODA7ei1pbmRleDoxMDB9YXBwLWxvZ2luIC5sb2dpbi1sb2dve21heC13aWR0aDoyMDBweH0ubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyLC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIg'@; put 'LmxvZ2luLWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAsLmxvZ2luLXNpZGViYXItd3JhcHBlciAubG9naW4tZ3JvdXAgLnVzZXJuYW1lLC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC5wYXNzd29yZHt3aWR0aDoxMDAlfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdy'@; put 'b3VwIC5jbHItaW5wdXQtd3JhcHBlciwubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCBidXR0b257bWF4LXdpZHRoOm5vbmV9YXBwLXRlcm1zIDpob3N0e2hlaWdodDoxMDAlO2JhY2tncm91bmQ6I2Y1ZjZmZn1hcHAtdGVybXMgLmNsci1jaGVja2JveC13cmFwcGVyLmRpc2Fi'@; put 'bGVke29wYWNpdHk6LjV9YXBwLXRlcm1zIC5jYXJke2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luLXRvcDowfWFwcC10ZXJtcyAuY2FyZCAuY2FyZC1ibG9ja3tmbGV4OjE7b3ZlcmZsb3c6YXV0b31hcHAtdGVybXMgLmFjY2VwdC1jaGVja2Jv'@; put 'eHtwYWRkaW5nOjEwcHggMTVweH1hcHAtZGVwbG95IC5jYXJke21hcmdpbi10b3A6MH1hcHAtZGVwbG95IC5idG57bWFyZ2luLXRvcDoxMHB4fWFwcC1kZXBsb3kgLmxvZy13cmFwcGVye3dpZHRoOjEwMCU7YmFja2dyb3VuZDojZjBmMGYwO2JvcmRlcjoxcHggc29saWQgI2M5YzljOTtwYWRk'@; put 'aW5nOjEwcHg7b3ZlcmZsb3c6YXV0bzt3aGl0ZS1zcGFjZTpwcmUtd3JhcH1hcHAtZGVwbG95ICNjb250ZXh0cy1idG57cGFkZGluZzozcHggMCAwO21pbi13aWR0aDozMHB4O21hcmdpbi1sZWZ0OjEwcHg7aGVpZ2h0OjMwcHg7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6'@; put 'Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn1hcHAtZGVwbG95IC52YWxpZGF0aW9uLWJhcntkaXNwbGF5OmZsZXg7bWFyZ2luLXRvcDoyMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn1hcHAtZGVwbG95IC52YWxpZGF0aW9uLWJhciBjbHItaWNvbnttYXJnaW4tcmlnaHQ6NXB4fWFwcC1kZXBsb3kg'@; put 'LmF1dG9kZXBsb3ktc2VjdGlvbntwYWRkaW5nOjAgMTVweH1hcHAtZGVwbG95IC5hdXRvZGVwbG95LXNlY3Rpb24gLmNsci1jaGVja2JveC13cmFwcGVye21hcmdpbjoyMHB4IDB9YXBwLWRlcGxveSAuYXV0b2RlcGxveS1zZWN0aW9uIC5idG4tYXV0b2RlcGxveXtkaXNwbGF5OmJsb2NrO21h'@; put 'cmdpbjoxNXB4IDB9YXBwLWFsZXJ0cyBjbHItYWxlcnRze2Rpc3BsYXk6YmxvY2t9YXBwLW1hbnVhbC1kZXBsb3kgLmNsZWFyLW1lbW9yeS1idXR0b257cmlnaHQ6MTBweDt0b3A6MnB4fWFwcC1saW5lYWdlIC50b2dnbGUtc3dpdGNoIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFi'@; put 'ZWw6YmVmb3Jle2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6IzMxNDM1MSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjouMTVzIGVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn1hcHAtbGluZWFnZSAjZ3JhcGh7aGVpZ2h0'@; put 'OmNhbGMoMTAwdmggLSAxOTVweCk7b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNlNGU0ZTQ7bWFyZ2luLXRvcDoxMHB4fWFwcC1saW5lYWdlIC5zZWxlY3Rpb24td3JhcHBlcnt3aWR0aDoxMDAlO21h'@; put 'eC13aWR0aDo2NzBweH1hcHAtbGluZWFnZSAuY29sdW1uLWFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7Y29sb3I6IzAwMH1hcHAtbGluZWFnZSAuY29udGVudC1hcmVhe3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fWFwcC1saW5lYWdlIC5jb250ZW50LWFyZWEgLmNhcmR7bWluLWhlaWdodDpj'@; put 'YWxjKDEwMHZoIC0gMTIwcHgpfWFwcC1saW5lYWdlIC5jb250ZW50LWFyZWEgLmNhcmQgLmNhcmQtYmxvY2t7cGFkZGluZzouNXJlbSAuMzVyZW0haW1wb3J0YW50fWFwcC1saW5lYWdlIGNsci10cmVlLW5vZGUgYnV0dG9ue3doaXRlLXNwYWNlOm5vd3JhcH1hcHAtbGluZWFnZSAuYnRuLWdy'@; put 'b3VwLmRpcmVjdGlvbnttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfWFwcC1saW5lYWdlIC5ncmFwaC1yZW5kZXItc3Bpbm5lcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10'@; put 'b3A6MTBweH1hcHAtbGluZWFnZSAuYmlnbGluZWFnZS1yb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjIwcHh9YXBwLWxpbmVhZ2UgLm1vZGFsLWZvb3RlciBwe21hcmdpbjowfWFwcC1saW5lYWdl'@; put 'IC5saW5lYWdlLXRpdGxlLXdyYXBwZXJ7bGVmdDoxMnB4fWFwcC1saW5lYWdlIC5tYXgtZGVwdGgtaW5wdXR7d2lkdGg6MTAwJX1AbWVkaWEobWF4LXdpZHRoOjc2OHB4KXthcHAtbGluZWFnZSAudG9nZ2xlLXN3aXRjaC1jb250YWluZXJ7bWFyZ2luLWJvdHRvbToyMHB4fX1kYy10cmVlIGNs'@; put 'ci10cmVlLW5vZGUgYnV0dG9ue3doaXRlLXNwYWNlOm5vd3JhcH1kYy10cmVlIGNsci10cmVlIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyOmZvY3VzIC5jbHItdHJlZW5vZGUtbGlua3tiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItdHJlZS1saW5rLWhv'@; put 'dmVyLWNvbG9yLCAjZThlOGU4KTt0ZXh0LWRlY29yYXRpb246bm9uZX1hcHAtbWV0YWRhdGEgLm9iamVjdHMtY29se2hlaWdodDo3NXZoO292ZXJmbG93OnNjcm9sbDtib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7Ym9yZGVyLXJhZGl1czo0cHh9YXBwLW1ldGFkYXRhIC5jb2xzLWhlYWR7Ym9y'@; put 'ZGVyOjFweCBzb2xpZCAjY2NjY2NjO3BhZGRpbmc6MTBweDtkaXNwbGF5OmZsZXh9YXBwLW1ldGFkYXRhIC5vYmplY3QtdGV4dHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tbGVmdDoxMHB4O2ZsZXg6MX1h'@; put 'cHAtbWV0YWRhdGEgLnJlcG8tZHJvcGRvd257bWFyZ2luLXJpZ2h0OjE1cHg7bWFyZ2luLWxlZnQ6MTVweDttYXJnaW4tYm90dG9tOjEwcHh9YXBwLW1ldGFkYXRhIC5jbHItYWNjb3JkaW9uLXRpdGxle3dpZHRoOjEwMCV9YXBwLW1ldGFkYXRhIC5mbG9hdC1yaWdodHttYXJnaW46MDtmbG9h'@; put 'dDpyaWdodH1hcHAtbWV0YWRhdGEgLmZ1bGwtd2lkdGh7d2lkdGg6MTAwJX1hcHAtbWV0YWRhdGEgLm9iamVjdC11cml7bWFyZ2luOjVweCAwIDB9YXBwLW1ldGFkYXRhIC5vYmplY3QtaGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNl'@; put 'LWJldHdlZW47cGFkZGluZy1sZWZ0OjNweDtwYWRkaW5nLXJpZ2h0OjNweH1hcHAtbWV0YWRhdGEgLm9iamVjdC1oZWFkZXI6aG92ZXJ7Ym9yZGVyLXJhZGl1czozcHh9YXBwLW1ldGFkYXRhIC5kYXRhZ3JpZC1ob3N0e2Rpc3BsYXk6dW5zZXQhaW1wb3J0YW50fWFwcC1tZXRhZGF0YSAuY2Fy'@; put 'ZHttYXJnaW4tdG9wOjA7ZmxleDoxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59YXBwLW1ldGFkYXRhIC5jb250ZW50LWFyZWF7cGFkZGluZzouNXJlbSFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn1ib2R5W2Nkcy10aGVtZT1kYXJrXSBh'@; put 'cHAtbWV0YWRhdGEgLm9iamVjdC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNDA1NTYwfWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBhcHAtbWV0YWRhdGEgLm9iamVjdHMtY29se2JhY2tncm91bmQ6I2ZmZn1ib2R5W2Nkcy10aGVtZT1saWdodF0gYXBwLW1ldGFkYXRhIC5vYmplY3Qt'@; put 'aGVhZGVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOX1hcHAtbGljZW5zaW5ne2hlaWdodDpjYWxjKDEwMCUgLSA5NnB4KTtwYWRkaW5nOjIwcHh9YXBwLWxpY2Vuc2luZyAuY2FyZHttYXJnaW4tdG9wOjB9YXBwLWxpY2Vuc2luZyAua2V5LWVycm9ye2ZvbnQtc2l6ZToxNnB4fWFw'@; put 'cC1saWNlbnNpbmcgLm1pc3NrZXl7Y29sb3I6I2U3NGMzY31hcHAtbGljZW5zaW5nIC5saWNlbnNlLWtleS1mb3JtLGFwcC1saWNlbnNpbmcgLmFjdGl2YXRpb24ta2V5LWZvcm0sYXBwLWxpY2Vuc2luZyAuY29tYmluZWQta2V5LWZvcm17cGFkZGluZzowfWFwcC1saWNlbnNpbmcgLmxpY2Vu'@; put 'c2Uta2V5LWZvcm0gLmNsci1jb250cm9sLWNvbnRhaW5lcixhcHAtbGljZW5zaW5nIC5hY3RpdmF0aW9uLWtleS1mb3JtIC5jbHItY29udHJvbC1jb250YWluZXIsYXBwLWxpY2Vuc2luZyAuY29tYmluZWQta2V5LWZvcm0gLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfWFwcC1s'@; put 'aWNlbnNpbmcgLmxpY2Vuc2Uta2V5LWZvcm0gLmNsci1jb250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYSxhcHAtbGljZW5zaW5nIC5hY3RpdmF0aW9uLWtleS1mb3JtIC5jbHItY29udHJvbC1jb250YWluZXIgdGV4dGFyZWEsYXBwLWxpY2Vuc2luZyAuY29tYmluZWQta2V5LWZvcm0gLmNsci1j'@; put 'b250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYXt3aWR0aDoxMDAlO2hlaWdodDoxNzBweDttYXgtaGVpZ2h0OjE3MHB4O21pbi1oZWlnaHQ6MTcwcHg7cmVzaXplOm5vbmV9YXBwLWxpY2Vuc2luZyAuYXBwbHkta2V5c3toZWlnaHQ6NDBweH1hcHAtbGljZW5zaW5nIC5kcm9wLWFyZWF7ZGlzcGxh'@; put 'eTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MTVweDtib3JkZXI6MnB4IGRhc2hlZCAjYjJiMmIyO2JvcmRlci1yYWRpdXM6NHB4O2N1cnNvcjpwb2ludGVyO21hcmdpbjoxMHB4IDB9YXBwLWxpY2Vuc2luZyBjbHItdGFicyBidXR0b257'@; put 'Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH1hcHAtdmlld2JveGVzIC5saWNlbmNlLW5vdGljZXtmb250LXNpemU6MTRweDtkaXNwbGF5OmJsb2NrO29wYWNpdHk6LjZ9YXBwLXZpZXdib3hlcyBjbHItbW9kYWwucm9vdC1tb2RhbHt6LWluZGV4OjEzMDB9YXBwLXZpZXdib3hlcyBjbHItbW9k'@; put 'YWwucm9vdC1tb2RhbCAubW9kYWwtYm9keS13cmFwcGVye2hlaWdodDpjYWxjKDEwMCUgLSA2MHB4KX1hcHAtdmlld2JveGVzIGNsci1tb2RhbC5yb290LW1vZGFsIC5tb2RhbC1jb250ZW50e2hlaWdodDo4MHZofWFwcC12aWV3Ym94ZXMgY2xyLW1vZGFsLnJvb3QtbW9kYWwgLm1vZGFsLWJv'@; put 'ZHl7bWF4LWhlaWdodDoxMDAlO2hlaWdodDoxMDAlfWFwcC12aWV3Ym94ZXMgZGMtdHJlZXtvdmVyZmxvdzphdXRvO2ZsZXg6MX1hcHAtdmlld2JveGVzIC50b29sdGlwLWxvbmd7d29yZC1icmVhazpicmVhay13b3JkfWFwcC12aWV3Ym94ZXMgLmFkZC1uZXd7d2lkdGg6NTAlO3BhZGRpbmct'@; put 'cmlnaHQ6NXB4fWFwcC12aWV3Ym94ZXMgLmFkZC1uZXc+cHttYXJnaW4tYm90dG9tOjFweH1hcHAtdmlld2JveGVzIC52aWV3Ym94LWxpbWl0LW5vdGljZXtvcGFjaXR5Oi43O2NvbG9yOiNlNzRjM2N9YXBwLXZpZXdib3hlcyAuY3VycmVudGx5LW9wZW57d2lkdGg6NTAlfWFwcC12aWV3Ym94'@; put 'ZXMgLmN1cnJlbnRseS1vcGVuIC5vcGVuLXZpZXdib3h7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzozcHggNXB4fWFwcC12aWV3Ym94ZXMgLmN1cnJlbnRseS1vcGVuIC5vcGVuLXZpZXdib3guc2VsZWN0ZWR7YmFja2dyb3VuZDojM2M4NTAwMmV9YXBwLXZpZXdib3hlcyAudmlld2JveGVzLWNv'@; put 'bnRhaW5lcntwb3NpdGlvbjpmaXhlZDtpbnNldDowO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDo5OTl9YXBwLXZpZXdib3hlcyAudmlld2JveHttaW4td2lkdGg6MjAwcHg7bWluLWhlaWdodDoyMDBweDtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7cG9pbnRlci1ldmVudHM6YWxs'@; put 'O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAwIDEwcHggLTNweCAjMDAwfWFwcC12aWV3Ym94ZXMgLnZpZXdib3guZm9jdXNlZHt6LWluZGV4OjExMDA7'@; put 'b3V0bGluZTpub25lfWFwcC12aWV3Ym94ZXMgLnZpZXdib3ggLmNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4zMDE5NjA3ODQzKTtiYWNrZ3JvdW5kOiNmZmY7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtmbGV4OjE7b3ZlcmZsb3cteDphdXRvfWFwcC12aWV3Ym94ZXMgLnZp'@; put 'ZXdib3ggLmRyYWctaGFuZGxle3dpZHRoOjEwMCU7bWluLWhlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgNXB4O3BvaW50ZXItZXZlbnRz'@; put 'OmFsbH1hcHAtdmlld2JveGVzIC52aWV3Ym94IC5kcmFnLWhhbmRsZSAudGFibGUtdGl0bGV7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpicmVhay1hbGx9YXBwLXZpZXdib3hlcyAudmlld2JveCAuZHJhZy1oYW5kbGUgLmFjdGlvbnN7ZGlzcGxheTpmbGV4O21pbi13aWR0aDoz'@; put 'NXB4fWFwcC12aWV3Ym94ZXMgLnZpZXdib3ggLmRyYWctaGFuZGxlIC5hY3Rpb25zIGNsci1pY29ue2N1cnNvcjpwb2ludGVyO21hcmdpbi1sZWZ0OjVweH1hcHAtdmlld2JveGVzIC52aWV3Ym94IC5kcmFnLWhhbmRsZSAuYWN0aW9ucyBjbHItaWNvbjpob3Zlcnt0cmFuc2Zvcm06c2NhbGUo'@; put 'MS4zKX1hcHAtdmlld2JveGVzIC52aWV3Ym94IC5jbGljay1pY29ue2N1cnNvcjpwb2ludGVyfWFwcC12aWV3Ym94ZXMgLnZpZXdib3ggLmNsaWNrLWljb246aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMyl9YXBwLXZpZXdib3hlcyAudmlld2JveCAuZHJhZ0hhbmRsZXtwb3NpdGlvbjphYnNv'@; put 'bHV0ZTt6LWluZGV4OjE4MH1hcHAtdmlld2JveGVzIC52aWV3Ym94IC5kcmFnSGFuZGxlLmNvcm5lcnt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2N1cnNvcjpud3NlLXJlc2l6ZTt6LWluZGV4OjE4MX1hcHAtdmlld2JveGVzIC52aWV3Ym94IC5kcmFnSGFuZGxlLmNvcm5lci1sZWZ0e3dpZHRo'@; put 'OjE1cHg7aGVpZ2h0OjE1cHg7Y3Vyc29yOm5lc3ctcmVzaXplO3otaW5kZXg6MTgxfWFwcC12aWV3Ym94ZXMgLnZpZXdib3ggLmRyYWdIYW5kbGUucmlnaHR7d2lkdGg6MnB4O2hlaWdodDoxMDAlO2N1cnNvcjpldy1yZXNpemV9YXBwLXZpZXdib3hlcyAudmlld2JveCAuZHJhZ0hhbmRsZS5s'@; put 'ZWZ0e3dpZHRoOjJweDtoZWlnaHQ6MTAwJTtjdXJzb3I6ZXctcmVzaXplfWFwcC12aWV3Ym94ZXMgLnZpZXdib3ggLmRyYWdIYW5kbGUuYm90dG9te2hlaWdodDoycHg7d2lkdGg6MTAwJTtjdXJzb3I6bnMtcmVzaXplfWFwcC12aWV3Ym94ZXMgLmNvbHMtc2VhcmNoe3dpZHRoOjEwMCU7bWFy'@; put 'Z2luLXRvcDo1cHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yNzg0MzEzNzI1KTtib3JkZXItcmFkaXVzOjNweH1hcHAtdmlld2JveGVzIC5jb2xzLWxpc3R7Ym9yZGVyOnNvbGlkIDFweCAjY2NjO21pbi1oZWlnaHQ6NjBweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRk'@; put 'ZW47ZGlzcGxheTpibG9jazt3aWR0aDo0MDBweDttYXgtd2lkdGg6MTAwJTttYXJnaW4tdG9wOjVweH1hcHAtdmlld2JveGVzIC5jb2wtYm94e3BhZGRpbmc6MnB4IDEwcHg7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHggI2NjYztjb2xvcjojMDAwMDAwZGU7ZGlzcGxheTpmbGV4O2ZsZXgtZGly'@; put 'ZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjptb3ZlO2ZvbnQtc2l6ZToxNHB4fWFwcC12aWV3Ym94ZXMgLmNvbC1ib3guc2VhcmNoOmZvY3Vze2JhY2tncm91bmQ6IzAwMDAwMDFh'@; put 'fWFwcC12aWV3Ym94ZXMgLmNvbC1ib3gucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQ6IzMwNmIwMDI0fWFwcC12aWV3Ym94ZXMgLmNkay1kcmFnLXByZXZpZXd7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MCA1cHggNXB4IC0zcHgg'@; put 'IzAwMDMsMCA4cHggMTBweCAxcHggIzAwMDAwMDI0LDAgM3B4IDE0cHggMnB4ICMwMDAwMDAxZjt6LWluZGV4OjEzMDAhaW1wb3J0YW50fWFwcC12aWV3Ym94ZXMgLmNkay1kcmFnLXBsYWNlaG9sZGVye29wYWNpdHk6MH1hcHAtdmlld2JveGVzIC5jZGstZHJhZy1hbmltYXRpbmd7dHJhbnNp'@; put 'dGlvbjp0cmFuc2Zvcm0gLjI1cyBjdWJpYy1iZXppZXIoMCwwLC4yLDEpfWFwcC12aWV3Ym94ZXMgLmNvbC1ib3g6bGFzdC1jaGlsZHtib3JkZXI6bm9uZX1hcHAtdmlld2JveGVzIC5jb2xzLWxpc3QuY2RrLWRyb3AtbGlzdC1kcmFnZ2luZyAuY29sLWJveDpub3QoLmNkay1kcmFnLXBsYWNl'@; put 'aG9sZGVyKXt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGN1YmljLWJlemllcigwLDAsLjIsMSl9YXBwLXZpZXdib3hlcyAuZGlzYWJsZWR7b3BhY2l0eTouNTt0cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX1hcHAtdmlld2JveGVzIC5maWx0ZXItYWN0aXZl'@; put 'e2NvbG9yOiMwMDcyYTN9YXBwLXZpZXdib3hlcyBob3QtdGFibGUgLmZpcnN0Q29sdW1uSGVhZGVyU3R5bGUgYnV0dG9uLmNoYW5nZVR5cGV7ZGlzcGxheTpub25lfWFwcC12aWV3Ym94ZXMgaG90LXRhYmxlIC5oYW5kc29udGFibGUgdGJvZHkgdGguaHRfX2hpZ2hsaWdodC5wcmltYXJ5S2V5'@; put 'SGVhZGVyU3R5bGUsYXBwLXZpZXdib3hlcyBob3QtdGFibGUgLmhhbmRzb250YWJsZSB0aGVhZCB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kOiMzMDZiMDBiMH1hcHAtdmlld2JveGVzIGhvdC10YWJsZSAucHJpbWFyeUtleUhlYWRlclN0eWxle2Jh'@; put 'Y2tncm91bmQ6IzMwNmIwMDZlfWFwcC12aWV3Ym94ZXMgaG90LXRhYmxlIHRoLnJlYWRvbmx5Q2VsbCBkaXZ7b3BhY2l0eTouNH1hcHAtdmlld2JveGVzIGhvdC10YWJsZSB0ZC5yZWFkb25seUNlbGx7b3BhY2l0eTouNX1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtdmlld2JveGVzIC5jdXJy'@; put 'ZW50bHktb3BlbiAub3Blbi12aWV3Ym94OmhvdmVye2JhY2tncm91bmQ6IzMxNGI1N31ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtdmlld2JveGVzIC5jb2xzLWxpc3R7YmFja2dyb3VuZDojMzE0YjU3O2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiM4NTg1ODV9Ym9keVtjZHMtdGhlbWU9ZGFy'@; put 'a10gYXBwLXZpZXdib3hlcyAuY29sLWJveHtiYWNrZ3JvdW5kOiMzMTRiNTc7Ym9yZGVyLWNvbG9yOiM4NTg1ODU7Y29sb3I6aW5oZXJpdH1ib2R5W2Nkcy10aGVtZT1saWdodF0gYXBwLXZpZXdib3hlcyAuY3VycmVudGx5LW9wZW4gLm9wZW4tdmlld2JveDpob3ZlcntiYWNrZ3JvdW5kOiNl'@; put 'OGU4ZTh9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIGFwcC12aWV3Ym94ZXMgLmNvbHMtbGlzdHtiYWNrZ3JvdW5kOiNmZmZ9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIGFwcC12aWV3Ym94ZXMgLmNvbC1ib3h7YmFja2dyb3VuZDojZmZmfWFwcC1hdXRvbWF0aWMtZGVwbG95IC5kZXBsb3ktaW50cm97'@; put 'bWFyZ2luOjAgMCA1cHh9YXBwLWF1dG9tYXRpYy1kZXBsb3kgLmRlcGxveS1maWVsZHttYXJnaW4tdG9wOjI1cHh9YXBwLWF1dG9tYXRpYy1kZXBsb3kgLmRlcGxveS1maWVsZCAuY2xyLWNvbnRyb2wtbGFiZWx7Zm9udC13ZWlnaHQ6NjAwfWFwcC1hdXRvbWF0aWMtZGVwbG95IC5kZXBsb3kt'@; put 'ZmllbGQgLmRlcGxveS1maWVsZC1kZXNjcmlwdGlvbnttYXJnaW46MDtmb250LXNpemU6Ljg1cmVtO29wYWNpdHk6Ljc1fWFwcC1hdXRvbWF0aWMtZGVwbG95IC5kYy1sb2MtaW5wdXQtd3JhcHBlciBpbnB1dHt3aWR0aDo1MDBweH1hcHAtYXV0b21hdGljLWRlcGxveSAuYXV0by1kZXBsb3l7'@; put 'ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDojMDAwNjt6LWluZGV4OjEwMH1hcHAtYXV0b21hdGljLWRlcGxveSAuc3Bpbm5lci1ib3h7d2lkdGg6NDAwcHg7cGFkZGluZzoyMHB4'@; put 'O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaGFkb3c6MXB4IDFweCA4cHggIzAwMDAwMDgyfWFwcC1hdXRvbWF0aWMtZGVwbG95'@; put 'IC5zcGlubmVyLWJveCAuYnV0dG9uc3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47d2lkdGg6MTAwJX1hcHAtYXV0b21hdGljLWRlcGxveSAuZGVwbG95LXN0YXR1cy1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOmZsZXgt'@; put 'c3RhcnR9YXBwLWF1dG9tYXRpYy1kZXBsb3kgLmRlcGxveS1zdGF0dXMtcm93IHB7bWFyZ2luOjAgMCAwIDEwcHh9YXBwLWF1dG9tYXRpYy1kZXBsb3kgLmRlcGxveS1zdWNjZXNze2NvbG9yOiM2ZWNmNDR9YXBwLWF1dG9tYXRpYy1kZXBsb3kgLmRlcGxveS1lcnJvcntjb2xvcjojZTc0YzNj'@; put 'fWFwcC1hdXRvbWF0aWMtZGVwbG95IC5kZXBsb3ktdW5kZXRlcm1pbmF0ZWR7Y29sb3I6I2NhY2FjYX1hcHAtYXV0b21hdGljLWRlcGxveSBocntib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yNzA1ODgyMzUzKX1hcHAtaW5mby1tb2RhbCAuY2xyLWFib3J0'@; put 'LW1vZGFsIC5tb2RhbC10aXRsZS13cmFwcGVye3dpZHRoOjEwMCV9YXBwLWluZm8tbW9kYWwgLmNsci1hYm9ydC1tb2RhbCAubW9kYWx7ei1pbmRleDoyMDUwfWFwcC1pbmZvLW1vZGFsIC5tb2RhbC10aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZX1hcHAtaW5mby1tb2RhbCAuc2FzU2VydmljZXtw'@; put 'b3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O21hcmdpbjowfWFwcC1pbmZvLW1vZGFsIC5tb2RhbC1mb290ZXJ7cG9zaXRpb246cmVsYXRpdmV9YXBwLWluZm8tbW9kYWwgLnN5c3RleHR7b3ZlcmZsb3c6YXV0bzttYXJnaW4tdG9wOjIwcHg7cGFkZGluZzoxMHB4IDA7Ym9yZGVy'@; put 'LXRvcDoxcHggc29saWQgI2RjZGNkY31hcHAtaW5mby1tb2RhbCAuc3lzdGV4dCBwe21hcmdpbi10b3A6MDt3b3JkLXdyYXA6YnJlYWstd29yZH1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5jb2x1bW4tZW50cnl7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFj'@; put 'ZS1iZXR3ZWVufWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLmNvbHVtbi1lbnRyeSAubmFtZS1pbnB1dC1yb3d7d2lkdGg6MTAwJTttYXgtd2lkdGg6MjYwcHh9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY29sdW1uLWVudHJ5IC5uYW1lLWlucHV0LXJv'@; put 'dyAuY2VsbC1kZXNje21hcmdpbi1yaWdodDozMHB4O21hcmdpbi10b3A6MTBweH1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5jb2x1bW4tZW50cnkgLmlucHV0cy13cmFwcGVye2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfWFwcC1lZGl0LXJlY29y'@; put 'ZCAucmVjb3JkLWVkaXQtbW9kYWwgLmNvbHVtbi1lbnRyeSAuaW5wdXRzLXdyYXBwZXI+Kjpub3QoLmRhdGUtZmllbGQpOm5vdChjbHItc2VsZWN0LWNvbnRhaW5lcil7ZmxleDoxfWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLmNvbHVtbi1lbnRyeSBwe21hcmdpbi10b3A6'@; put 'MH1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5jb2x1bW4tZW50cnkgLmNsci10ZXh0YXJlYS13cmFwcGVye21hcmdpbi10b3A6MCFpbXBvcnRhbnR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY29sdW1uLWVudHJ5IC5jbHItZm9ybS1jb250cm9se21h'@; put 'cmdpbi10b3A6MCFpbXBvcnRhbnR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY29sdW1uLWVudHJ5IGFwcC1zb2Z0LXNlbGVjdHtkaXNwbGF5OmJsb2NrO3dpZHRoOjIyNHB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtjb2xvcjojMDAwO3BhZGRpbmc6Y2FsYyguMjVyZW0g'@; put 'KyAycHgpIC41cmVtO2JvcmRlci1yYWRpdXM6LjEyNXJlbTtmb250LXNpemU6LjU0MTY2N3JlbTttYXJnaW4tcmlnaHQ6NnB4fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLmNvbHVtbi1lbnRyeSBhcHAtc29mdC1zZWxlY3QgaW5wdXR7d2lkdGg6MTAwJTtib3JkZXI6MH1h'@; put 'cHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5jb2x1bW4tZW50cnkgYXBwLXNvZnQtc2VsZWN0IGlucHV0OmZvY3Vze2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MCFpbXBvcnRhbnR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY29sdW1uLWVudHJ5IGFwcC1z'@; put 'b2Z0LXNlbGVjdCBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbixhcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5jb2x1bW4tZW50cnkgYXBwLXNvZnQtc2VsZWN0IGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25l'@; put 'O21hcmdpbjowfWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLmNvbHVtbi1lbnRyeTpmaXJzdC1jaGlsZCBwOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5kYXRlLWZpZWxke2Rpc3BsYXk6ZmxleDthbGlnbi1p'@; put 'dGVtczpjZW50ZXJ9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuZGF0ZS1pbnB1dHt3aWR0aDoxMDAlO21hcmdpbjowO3BhZGRpbmc6Y2FsYyguMjVyZW0gKyAycHgpIC41cmVtO2ZvbnQtc2l6ZTouNjVyZW07bGluZS1oZWlnaHQ6MXJlbTtiYWNrZ3JvdW5kOnZhcigtLWNs'@; put 'ci1mb3Jtcy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9yLCAjZmFmYWZhKTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwgIzIxMzMzYik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yLCAjOTk5KTtib3JkZXItcmFkaXVzOi4xMjVyZW07Y29s'@; put 'b3Itc2NoZW1lOmxpZ2h0fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLmRhdGUtaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMyl9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1t'@; put 'b2RhbCAuZGF0ZS1pbnB1dC5pbnZhbGlkLWRhdGF7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjZTEyMjAwKTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2UxMjIwMCl9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAu'@; put 'bW9kYWwtYm9keXtwYWRkaW5nLWJvdHRvbToxMHB4fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgY2xyLXNlbGVjdC1jb250YWluZXJ7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2NvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czouMTI1cmVtO21hcmdpbi1yaWdodDo1cHh9YXBwLWVk'@; put 'aXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCBjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVye21heC1oZWlnaHQ6dW5zZXR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCBjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVyOmFm'@; put 'dGVye3RvcDoxNXB4fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0e2hlaWdodDphdXRvO3BhZGRpbmc6MTBweCAyMHB4IDEwcHggMTBweDtib3JkZXI6MCFpbXBvcnRhbnR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1t'@; put 'b2RhbCBjbHItc2VsZWN0LWNvbnRhaW5lciBzZWxlY3Q6Zm9jdXN7YmFja2dyb3VuZDowIDAhaW1wb3J0YW50fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0OmhvdmVye2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9YXBwLWVkaXQt'@; put 'cmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCBjbHItaW5wdXQtY29udGFpbmVye3dpZHRoOjIyNHB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtjb2xvcjojMDAwO3BhZGRpbmc6Y2FsYyguMjVyZW0gKyAycHgpIC41cmVtO2JvcmRlci1yYWRpdXM6LjEyNXJlbTtmb250LXNpemU6LjU0MTY2N3Jl'@; put 'bTttYXJnaW4tcmlnaHQ6NnB4fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgY2xyLWlucHV0LWNvbnRhaW5lciAuY2xyLWlucHV0LWdyb3Vwe3dpZHRoOjEwMCU7Ym9yZGVyOjB9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCBjbHItaW5wdXQtY29udGFpbmVy'@; put 'IGlucHV0e3dpZHRoOjEwMCU7Ym9yZGVyOjB9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCBjbHItaW5wdXQtY29udGFpbmVyIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MCFpbXBvcnRhbnR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCBj'@; put 'bHItaW5wdXQtY29udGFpbmVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLGFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtt'@; put 'YXJnaW46MH1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIGNsci1pbnB1dC1jb250YWluZXIuaW52YWxpZC1kYXRhe2JvcmRlci1jb2xvcjpyZWR9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAubW9kYWwtZGlhbG9ne3dpZHRoOjgwdnd9YXBwLWVkaXQtcmVj'@; put 'b3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCV9YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhe3dpZHRoOjEwMCU7cmVzaXplOm5vbmU7Ym9yZGVyLWNvbG9yOiM5OTl9'@; put 'YXBwLWVkaXQtcmVjb3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhLmludmFsaWQtZGF0YXtib3JkZXItY29sb3I6cmVkO291dGxpbmU6MH1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5jbHItY29udHJvbC1jb250YWluZXIg'@; put 'dGV4dGFyZWEubm90LWNoYXJ7Zm9udC1mYW1pbHk6THVjaWRhIENvbnNvbGUsTW9uYWNvLG1vbm9zcGFjZX1hcHAtZWRpdC1yZWNvcmQgLnJlY29yZC1lZGl0LW1vZGFsIC5nZW5lcmF0ZS1yZWNvcmQtdXJse3JpZ2h0OjQwcHg7dG9wOjQwcHg7Zm9udC1zaXplOjEycHh9YXBwLWVkaXQtcmVj'@; put 'b3JkIC5yZWNvcmQtZWRpdC1tb2RhbCAuZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b257cmlnaHQ6MjVweDt0b3A6NXB4fWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZXtwYWRkaW5nOi41cmVtIC43NXJlbSAxcmVtfWFwcC1lZGl0'@; put 'LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufWFwcC1lZGl0LXJlY29yZCAucmVjb3JkLWVkaXQtbW9kYWwgLm1vZGFsLWZvb3RlciAuYWxlcnR7bWFyZ2lu'@; put 'OjB9YXBwLWVkaXQtcmVjb3JkIC5wcmV2LW5leHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6Ljc1cmVtfWFwcC1lZGl0LXJlY29yZCAucHJldi1uZXh0IHB7bWFyZ2luOjB9YXBwLWVkaXQtcmVjb3JkIC5wcmV2LW5leHQgYnV0dG9ue21hcmdpbjowfWFwcC1lZGl0LXJl'@; put 'Y29yZCAuZm9jdXNhYmxlOmZvY3Vze2JveC1zaGFkb3c6MCAwIDNweCAjNWFhMjIwfWFwcC1lZGl0LXJlY29yZCAuZW50cnktaW5wdXQtbGVmdC1vZmZzZXR7bGVmdDotMzBweH1hcHAtZWRpdC1yZWNvcmQgLnZhbGlkYXRpb24taW5mby1hbGVydHt3aWR0aDozMTBweH1hcHAtYXV0b2NvbXBs'@; put 'ZXRlIC5pbnB1dC12YWx7Ym9yZGVyOjBweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTk5OTl9YXBwLWF1dG9jb21wbGV0ZSBpbnB1dHt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX1hcHAtYXV0b2NvbXBsZXRlIGlucHV0Ojotd2Via2l0LWNhbGVu'@; put 'ZGFyLXBpY2tlci1pbmRpY2F0b3J7bWFyZ2luLXRvcDotNXB4fWFwcC1hdXRvY29tcGxldGUgLmF1dG9jb21wbGV0ZS13cmFwcGVyIC5vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoxNTAwfWFwcC1hdXRvY29tcGxldGUgLmF1dG9jb21wbGV0ZS13cmFwcGVyIC5kYXRh'@; put 'bGlzdHtwb3NpdGlvbjpmaXhlZDtib3gtc2hhZG93OjAgM3B4IDEwcHggLTFweCAjMDAwMDAwMmI7b3ZlcmZsb3c6YXV0bzt6LWluZGV4OjIwMDB9YXBwLWF1dG9jb21wbGV0ZSAuYXV0b2NvbXBsZXRlLXdyYXBwZXIgLmRhdGFsaXN0IG9wdGlvbntwYWRkaW5nOjVweCAxMHB4O2N1cnNvcjpw'@; put 'b2ludGVyfWFwcC1hdXRvY29tcGxldGUgLmF1dG9jb21wbGV0ZS13cmFwcGVyIC5kYXRhbGlzdCBvcHRpb246aG92ZXJ7YmFja2dyb3VuZDojMDAwMDAwMGZ9YXBwLWF1dG9jb21wbGV0ZSAuYXV0b2NvbXBsZXRlLXdyYXBwZXIgLmRhdGFsaXN0IG9wdGlvbi5mb2N1c2Vke2JhY2tncm91bmQ6'@; put 'IzAwMDAwMDBmfWFwcC1hdXRvY29tcGxldGUgLmF1dG9jb21wbGV0ZS13cmFwcGVyIC5sb2FkLW1vcmV7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtYXV0b2NvbXBsZXRlIC5kYXRhbGlzdHtiYWNrZ3JvdW5k'@; put 'OiMyMTMzM2I7Ym9yZGVyOjFweCBzb2xpZCAjNTc1NzU3fWJvZHlbY2RzLXRoZW1lPWRhcmtdIGFwcC1hdXRvY29tcGxldGUgaW5wdXR7Y29sb3I6I2ZmZn1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtYXV0b2NvbXBsZXRlIC5kYXRhbGlzdCBvcHRpb257Y29sb3I6I2ZmZn1ib2R5W2Nkcy10'@; put 'aGVtZT1saWdodF0gYXBwLWF1dG9jb21wbGV0ZSAuZGF0YWxpc3R7YmFja2dyb3VuZDojZmZmfWFwcC1jb250YWN0LWxpbmsgLnVuc2V0e2NvbG9yOnVuc2V0fWFwcC1kYXRhc2V0LWluZm8gLm1vZGFsLWJvZHkgY2xyLXRhYnN7bWF4LWhlaWdodDo3MHZofWFwcC1kYXRhc2V0LWluZm8gLm1v'@; put 'ZGFsLWJvZHkgLnRhYi1jb250ZW50e3dpZHRoOjEwMCU7b3ZlcmZsb3c6YXV0b31hcHAtZGF0YXNldC1pbmZvIC5tb2RhbC1ib2R5IC50YWItY29udGVudCAuZGF0YWdyaWQtb3V0ZXItd3JhcHBlcnt3aWR0aDoxMDAlfWFwcC1kYXRhc2V0LWluZm8gY2xyLW1vZGFsIC5tb2RhbC1kaWFsb2d7'@; put 'aGVpZ2h0OjEwMCV9YXBwLWRhdGFzZXQtaW5mbyAuY2xpY2thYmxlLXJvd3tjdXJzb3I6cG9pbnRlcn1hcHAtZGF0YXNldC1pbmZvIC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbDpmb2N1c3tvdXRsaW5lOm5vbmU7b3V0bGluZS1vZmZzZXQ6MH1hcHAtdXBsb2FkLXN0YXRlcntkaXNw'@; put 'bGF5OmJsb2NrfWFwcC11cGxvYWQtc3RhdGVyIHB7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXJ9YXBwLWFwcHJvdmUtZGV0YWlscyAubG9hZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2hlaWdodDo3NXZoO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlv'@; put 'bjpjb2x1bW59YXBwLWFwcHJvdmUtZGV0YWlscyAubW9kYWxMYXJnZXt3aWR0aDo1MHJlbSFpbXBvcnRhbnR9YXBwLWFwcHJvdmUtZGV0YWlscyAuYWRkZWRSb3d7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDksNzcsMTE3LC4yKTtib3JkZXItcmFkaXVzOjVweH1hcHAtYXBwcm92ZS1kZXRhaWxz'@; put 'IC5kZWxldGVkUm93e2JvcmRlcjoxcHggc29saWQgcmdiYSg3MCw3MSw3MCwuMik7Ym9yZGVyLXJhZGl1czo1cHh9YXBwLWFwcHJvdmUtZGV0YWlscyAudXBkYXRlZFJvd3tib3JkZXI6MXB4IHNvbGlkIHJnYmEoOSwxMTcsOSwuMik7Ym9yZGVyLXJhZGl1czo1cHh9YXBwLWFwcHJvdmUtZGV0'@; put 'YWlscyAuY2h7YmFja2dyb3VuZDojMDAwMDAwMWE7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEwNCwxMDAsMCwuNCk7Ym9yZGVyLXJhZGl1czo1cHh9YXBwLWFwcHJvdmUtZGV0YWlscyAuY2g6aG92ZXJ7YmFja2dyb3VuZDojZmM4Nzc4NjZ9YXBwLWFwcHJvdmUtZGV0YWlscyAudG9vbHRpcCAu'@; put 'dG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0LGFwcC1hcHByb3ZlLWRldGFpbHMgLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHQ+LnRvb2x0aXAtY29udGVudCxhcHAtYXBwcm92ZS1kZXRhaWxzIC50b29sdGlwPi50b29sdGlwLWNvbnRlbnR7Zm9udC1zaXplOi41NDE2N3JlbTtm'@; put 'b250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6IzMxNDM1MTtib3JkZXItcmFkaXVzOi4xMjVyZW07Y29sb3I6I2YwZjFlYztsaW5lLWhlaWdodDouNzVyZW07bWFyZ2luOjA7cGFkZGluZzouMzc1cmVtIC41cmVtO3dpZHRoOjIzNXB4O3Bvc2l0aW9uOmFi'@; put 'c29sdXRlO2luc2V0OmF1dG8gYXV0byAxMDAlIDEycHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO21hcmdpbi1ib3R0b206LjY2NjY3cmVtfWFwcC1hcHByb3ZlLWRldGFpbHMgLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1yaWdodDpiZWZvcmUsYXBwLWFwcHJv'@; put 'dmUtZGV0YWlscyAudG9vbHRpcC50b29sdGlwLXRvcC1yaWdodD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSxhcHAtYXBwcm92ZS1kZXRhaWxzIC50b29sdGlwPi50b29sdGlwLWNvbnRlbnQ6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotLjM3NXJlbTtsZWZ0OjA7dG9wOmF1dG87'@; put 'cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci1sZWZ0Oi4yNXJlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci10b3A6LjIwODMzcmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yMDgzM3JlbSBzb2xpZCB0cmFuc3Bh'@; put 'cmVudH1hcHAtYXBwcm92ZS1kZXRhaWxzIC50YWJsZXtib3JkZXI6MHB4IHNvbGlkfWFwcC1hcHByb3ZlLWRldGFpbHMgLnRvZ2dsZS1zd2l0Y2ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjoj'@; put 'MzE0MzUxIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfWFwcC1hcHByb3ZlLWRldGFpbHMgLnRhYmxlQ29udHtvdmVyZmxvdzphdXRvO21hcmdpbjoxNXB4IDEwcHggMTBweH1hcHAtYXBw'@; put 'cm92ZS1kZXRhaWxzIC50YWJsZUNvbnQgdGR7d29yZC1icmVhazpicmVhay13b3JkfWFwcC1hcHByb3ZlLWRldGFpbHMgLmFwcHJvdmFsSW5mb3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfWFwcC1hcHByb3ZlLWRldGFpbHMgLmFwcHJvdmFsQmFja3tkaXNwbGF5OmZs'@; put 'ZXg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjhweCl7YXBwLWFwcHJvdmUtZGV0YWlscyAuYXBwcm92YWxJbmZve2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MTVweH1hcHAtYXBwcm92ZS1k'@; put 'ZXRhaWxzIC5hcHByb3ZhbEJhY2t7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLWJvdHRvbToxNXB4fWFwcC1hcHByb3ZlLWRldGFpbHMgLmNhcmR7bWFyZ2luLXRvcDowcmVtIWltcG9ydGFudDttaW4taGVpZ2h0OmNhbGMoMTAwdmggKyAtMHB4KSFpbXBvcnRh'@; put 'bnR9YXBwLWFwcHJvdmUtZGV0YWlscyAudGFibGUgdGQubGVmdCxhcHAtYXBwcm92ZS1kZXRhaWxzIC50YWJsZSB0aC5sZWZ0e3RleHQtYWxpZ246bGVmdDt3aWR0aDoxNTBweCFpbXBvcnRhbnQ7ZmxleDowfX1hcHAtYXBwcm92ZS1kZXRhaWxzIC50YWJsZSB0ZC5sZWZ0LGFwcC1hcHByb3Zl'@; put 'LWRldGFpbHMgLnRhYmxlIHRoLmxlZnR7dGV4dC1hbGlnbjpsZWZ0O2ZsZXg6MTt3aWR0aDozMDBweCFpbXBvcnRhbnR9YXBwLWFwcHJvdmUtZGV0YWlscyAudG9vbGx7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDojZTZiM2IzO2NvbG9yOiMzMTQzNTE7dG9wOjA7aGVpZ2h0OjM2cHg7'@; put 'd2lkdGg6MTAwJTtsZWZ0OjA7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fWFwcC1hcHByb3ZlLWRldGFpbHMgI2FjY2VwdEJ0bixhcHAtYXBwcm92ZS1kZXRhaWxzICNyZWplY3RCdG57d2lkdGg6MTc1cHh9YXBwLWFwcHJvdmUtZGV0YWls'@; put 'cyAjcmVqZWN0QnRue2JhY2tncm91bmQtY29sb3I6I2E2MmYxNiFpbXBvcnRhbnR9YXBwLWFwcHJvdmUtZGV0YWlscyAuZm9ybWF0dGVkLXZhbHVlcy10b2dnbGV7bWluLXdpZHRoOjc1cHh9YXBwLWFwcHJvdmUtZGV0YWlscyBjbHItbW9kYWwgLm1vZGFsLWJvZHktd3JhcHBlcntvdmVyZmxv'@; put 'dzphdXRvfWFwcC1hcHByb3ZlLWRldGFpbHMgLnJvd3Mtbm90aWNle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLXJpZ2h0OjEwcHg7Y29sb3I6IzZhNmE2YTtmb250LXNpemU6MTVweH1hcHAtYXBwcm92ZS1kZXRhaWxzIC5yb3dzLW5vdGljZSBjbHItaWNvbnttYXJn'@; put 'aW46MH1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtYXBwcm92ZS1kZXRhaWxzIHRhYmxlIC51cGRhdGVkUm93e2JhY2tncm91bmQ6IzkzOTcxZX1ib2R5W2Nkcy10aGVtZT1kYXJrXSBhcHAtYXBwcm92ZS1kZXRhaWxzIHRhYmxlIC5hZGRlZFJvd3tiYWNrZ3JvdW5kOiM1Njk5NWZ9Ym9keVtj'@; put 'ZHMtdGhlbWU9ZGFya10gYXBwLWFwcHJvdmUtZGV0YWlscyB0YWJsZSAuZGVsZXRlZFJvd3tiYWNrZ3JvdW5kOiM4YTVhNWF9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIGFwcC1hcHByb3ZlLWRldGFpbHMgdGFibGUgLnVwZGF0ZWRSb3d7YmFja2dyb3VuZDojZmFmZGE4fWJvZHlbY2RzLXRoZW1l'@; put 'PWxpZ2h0XSBhcHAtYXBwcm92ZS1kZXRhaWxzIHRhYmxlIC5hZGRlZFJvd3tiYWNrZ3JvdW5kOiM5MmQwOWF9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIGFwcC1hcHByb3ZlLWRldGFpbHMgdGFibGUgLmRlbGV0ZWRSb3d7YmFja2dyb3VuZDojZTZiM2IzfWFwcC12aXlhLWFwaS1leHBsb3JlciAu'@; put 'YXBpLWNvbGxlY3Rpb24tZHJvcGRvd257bWFyZ2luLWxlZnQ6MTVweDttYXJnaW4tcmlnaHQ6MTVweDttYXJnaW4tYm90dG9tOjEwcHh9YXBwLXZpeWEtYXBpLWV4cGxvcmVyIC5qc29uLWFyZWF7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlO2hlaWdodDox'@; put 'MDAlO292ZXJmbG93OmF1dG99YXBwLXZpeWEtYXBpLWV4cGxvcmVyIC5qc29uLWFyZWEgYXt0ZXh0LWRlY29yYXRpb246bm9uZX1hcHAtdml5YS1hcGktZXhwbG9yZXIgLmpzb24tYXJlYT5uZ3gtanNvbi12aWV3ZXJ7aGVpZ2h0OjEwMCV9YXBwLXZpeWEtYXBpLWV4cGxvcmVyIC5qc29uLWFy'@; put 'ZWE+bmd4LWpzb24tdmlld2VyPi5uZ3gtanNvbi12aWV3ZXJ7b3ZlcmZsb3c6YXV0b31hcHAtdml5YS1hcGktZXhwbG9yZXIgLmpzb24tdG9nZ2xle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTBweDttYXJnaW46MH1hcHAtdml5YS1hcGktZXhwbG9yZXIgLmVuZHBvaW50LWJyZWFkY3J1bXN7'@; put 'bWFyZ2luOjAgMCAwIDEwcHh9YXBwLXZpeWEtYXBpLWV4cGxvcmVyIC5xdWVyeS1wYXJhbXMgaW5wdXR7d2lkdGg6NzBweH1hcHAtbG9hZGluZy1pbmRpY2F0b3IgLmxvYWRpbmctaW5kaWNhdG9ye2xpbmUtaGVpZ2h0OjIuNXJlbTtoZWlnaHQ6Mi41cmVtO2Rpc3BsYXk6ZmxleDthbGlnbi1p'@; put 'dGVtczpjZW50ZXI7aGVpZ2h0OjEwMCU7bWFyZ2luLXJpZ2h0OjEwcHh9YXBwLWxvYWRpbmctaW5kaWNhdG9yIC5sb2FkaW5nLWluZGljYXRvciAuc3Bpbm5lcnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9YXBwLWxvYWRpbmctaW5kaWNhdG9yIC5sb2FkaW5nLWluZGljYXRvciBjbHItc2lnbnBv'@; put 'c3QtY29udGVudHtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiM1NjU2NTY7Y3Vyc29yOmF1dG99YXBwLWxvYWRpbmctaW5kaWNhdG9yIC5sb2FkaW5nLWluZGljYXRvciBjbHItc2lnbnBvc3QtY29udGVudCBwe21hcmdpbi10b3A6MTBweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNw'@; put 'YWNlLWJldHdlZW59YXBwLWxvYWRpbmctaW5kaWNhdG9yIC5sb2FkaW5nLWluZGljYXRvciBjbHItc2lnbnBvc3QtY29udGVudCBwOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH1hcHAtbG9hZGluZy1pbmRpY2F0b3IgLmxvYWRpbmctaW5kaWNhdG9yIGNsci1zaWducG9zdC1jb250ZW50IHA6'@; put 'bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9YXBwLWxvYWRpbmctaW5kaWNhdG9yIC5sb2FkaW5nLWluZGljYXRvciBjbHItc2lnbnBvc3QtY29udGVudCBwIHNwYW57bWFyZ2luLWxlZnQ6MTBweH1hcHAtbG9hZGluZy1pbmRpY2F0b3IgLmxvYWRpbmctaW5kaWNhdG9yIGNsci1zaWducG9z'@; put 'dC1jb250ZW50IHAgc3Bhbi5ydW5uaW5ne2NvbG9yOiNlOWJmMDR9YXBwLWxvYWRpbmctaW5kaWNhdG9yIC5sb2FkaW5nLWluZGljYXRvciBjbHItc2lnbnBvc3QtY29udGVudCBwIHNwYW4uc3VjY2Vzc3tjb2xvcjojNjBiNTE1fWFwcC1sb2FkaW5nLWluZGljYXRvciAubG9hZGluZy1pbmRp'@; put 'Y2F0b3IgY2xyLXNpZ25wb3N0LWNvbnRlbnQgcCBzcGFuLmZhaWx7Y29sb3I6I2M5MjEwMH1hcHAtZXhjZWwtcGFzc3dvcmQtbW9kYWwgLmV4Y2VsLXBhc3N3b3JkLXJvb3QgLm1vZGFse3otaW5kZXg6MTA2MH1hcHAtZXhjZWwtcGFzc3dvcmQtbW9kYWwgLm1vZGFsLWZvb3RlcntkaXNwbGF5'@; put 'OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufWFwcC1leGNlbC1wYXNzd29yZC1tb2RhbCAubW9kYWwtZm9vdGVyIC5idXR0b25ze2Rpc3BsYXk6ZmxleDtnYXA6NXB4fWFwcC1zdGFnZSAucmVqZWN0ZWR7Y29sb3I6IzkyMjAxYTtmb250LXdl'@; put 'aWdodDo3MDB9YXBwLXN0YWdlIC5hY2NlcHRlZHtjb2xvcjojMTA1YzI2O2ZvbnQtd2VpZ2h0OjcwMH1hcHAtc3RhZ2UgLmJhc2VUYWJsZUxpbmt7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXRvcDoxMHB4O2NvbG9yOiMwMDdjYmJ9YXBwLXN0YWdlIC5odEZvY3VzQ2F0Y2hlcntwb3NpdGlvbjph'@; put 'YnNvbHV0ZSFpbXBvcnRhbnQ7bGVmdDotOTk5OXB4IWltcG9ydGFudDt3aWR0aDoxcHghaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAsMCwwLDApIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7bWFyZ2luOi0x'@; put 'cHghaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnR9YXBwLXN0YWdlIC5odEZvY3VzQ2F0Y2hlcjpmb2N1c3tvdXRsaW5lOm5vbmUhaW1wb3J0YW50fWJvZHlbY2RzLXRoZW1lPWRhcmtdIGFwcC1zdGFnZSAuYmFzZVRhYmxlTGlua3tjb2xvcjojNGVjMGZmfWFwcC1zb2Z0LXNlbGVjdCAu'@; put 'aW5wdXQtdmFse2JvcmRlcjowcHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOTk5OTk5fWFwcC1zb2Z0LXNlbGVjdCBpbnB1dHt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX1hcHAtc29mdC1zZWxlY3QgaW5wdXQ6Oi13ZWJraXQtY2FsZW5kYXItcGlj'@; put 'a2VyLWluZGljYXRvcnttYXJnaW4tdG9wOi01cHh9YXBwLXNvZnQtc2VsZWN0IGNsci1kYXRlLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnR9YXBwLXNvZnQtc2VsZWN0IGNsci1kYXRlLWNvbnRhaW5lciAuY2xyLWlucHV0LWdyb3VwLWljb24t'@; put 'YWN0aW9ue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi01cHh9YXBwLXNvZnQtc2VsZWN0IGNsci1kYXRlLWNvbnRhaW5lciBpbnB1dDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi1yaWdodDoyMHB4O21hcmdpbi10b3A6LTVweH1hcHAtc29mdC1zZWxlY3QgbGFi'@; put 'ZWwuc2Vjb25kTGFiZWxBY3RpdmUgc3Bhbjpub3QoLnZhbHVlLXR5cGUtc2VsZWN0ZWQpe3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNn1hcHAtc2FzanMtY29uZmlndXJhdG9yIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6NTB2d31h'@; put 'cHAtc2FzanMtY29uZmlndXJhdG9yIC5jbHItaW5wdXQtd3JhcHBlcnt3aWR0aDoxMDAlfWFwcC1zYXNqcy1jb25maWd1cmF0b3IgLmNsci1pbnB1dC13cmFwcGVyIGlucHV0e3dpZHRoOjEwMCV9YXBwLXNhc2pzLWNvbmZpZ3VyYXRvciAudGhpblByb2dyZXNze2xlZnQ6MDtyaWdodDowO3dp'@; put 'ZHRoOnVuc2V0O2hlaWdodDoxcHg7bWFyZ2luLXRvcDowIWltcG9ydGFudH1hcHAtc2FzanMtY29uZmlndXJhdG9yIC50aGluUHJvZ3Jlc3M6YWZ0ZXJ7dG9wOjB9YXBwLWhlYWRlci1hY3Rpb25ze2Rpc3BsYXk6Y29udGVudHN9YXBwLWhlYWRlci1hY3Rpb25zIC5jb3B5UmlnaHR7bWFyZ2lu'@; put 'LXRvcDoxMHB4fWFwcC1oZWFkZXItYWN0aW9ucyAuY29weVJpZ2h0IHNwYW57d29yZC1icmVhazpicmVhay13b3JkO3doaXRlLXNwYWNlOnByZS13cmFwO3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MS41fWFwcC1oZWFkZXItYWN0aW9ucyAudXNlci1uYXYtdG9n'@; put 'Z2xle3BhZGRpbmc6MCAxMHB4IWltcG9ydGFudDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxMDAlfWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9wZG93bntwYWRkaW5nLXJpZ2h0OjE1cHg7bGluZS1oZWlnaHQ6M3JlbTtoZWlnaHQ6M3JlbX1hcHAtaGVh'@; put 'ZGVyLWFjdGlvbnMgLmFwcC1uYXYtZHJvcGRvd24+YnV0dG9uLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmFmYWZhO3Bvc2l0aW9uOnJlbGF0aXZlfWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9wZG93bj5idXR0b24uZHJvcGRvd24tdG9nZ2xlOmFmdGVye2NvbnRlbnQ6IiI7YmFj'@; put 'a2dyb3VuZC1jb2xvcjojZmFmYWZhO29wYWNpdHk6LjE1O2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjQwcHg7dG9wOjEwcHh9YXBwLWhlYWRlci1hY3Rpb25zIC5hcHAtbmF2LWRyb3Bkb3duPmJ1dHRvbi5kcm9wZG93bi10b2dnbGUgLmJhZGdlLmhpZGRlbnt2'@; put 'aXNpYmlsaXR5OmhpZGRlbn1hcHAtaGVhZGVyLWFjdGlvbnMgLmFwcC1uYXYtZHJvcGRvd24gY2xyLWRyb3Bkb3duLW1lbnV7Y29sb3I6IzU2NTY1NjtwYWRkaW5nLWJvdHRvbTowfWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9wZG93biBjbHItZHJvcGRvd24tbWVudSAuc2VwYXJh'@; put 'dG9ye21hcmdpbjoxMHB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheX1hcHAtaGVhZGVyLWFjdGlvbnMgLmFwcC1uYXYtZHJvcGRvd24gY2xyLWRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50'@; put 'ZXI7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjQ1cHg7bGluZS1oZWlnaHQ6NDBweH1hcHAtaGVhZGVyLWFjdGlvbnMgLmFwcC1uYXYtZHJvcGRvd24gY2xyLWRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0gLmJhZGdle3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNXB4O3JpZ2h0OjI2cHg7'@; put 'bWFyZ2luLXJpZ2h0OjB9YXBwLWhlYWRlci1hY3Rpb25zIC5hcHAtbmF2LWRyb3Bkb3duIGNsci1kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRlYnVnLXN3aXRjaC1pdGVte3BhZGRpbmc6MH1hcHAtaGVhZGVyLWFjdGlvbnMgLmFwcC1uYXYtZHJvcGRvd24gY2xyLWRyb3Bkb3duLW1l'@; put 'bnUgLmRyb3Bkb3duLWl0ZW0gLnRvZ2dsZS1zd2l0Y2h7bWFyZ2luOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9wZG93biBjbHItZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbSAuY2xyLWxv'@; put 'Z291dHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoyMHB4O3RvcDoxNXB4fWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9wZG93biBjbHItZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbSAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9YXBwLWhl'@; put 'YWRlci1hY3Rpb25zIC5hcHAtbmF2LWRyb3Bkb3duIGNsci1kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtIGNsci10b2dnbGUtd3JhcHBlcnt3aWR0aDoxMDAlO21hcmdpbjowO2hlaWdodDoxMDAlO3BhZGRpbmc6MTBweCAyMHB4fWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9w'@; put 'ZG93biBjbHItZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbSBpbnB1dHtpbnNldDowO2N1cnNvcjpwb2ludGVyfWFwcC1oZWFkZXItYWN0aW9ucyAuYXBwLW5hdi1kcm9wZG93biBjbHItZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbSAuY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5'@; put 'cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9YXBwLWhlYWRlci1hY3Rpb25zIC5kZWJ1Zy10b2dnbGUtbGFiZWx7cGFkZGluZy1sZWZ0OjQycHh9QG1lZGlhKG1heC13aWR0aDo3NjhweCl7YXBwLWhlYWRlci1hY3Rpb25zIC5zaWRlbmF2LWNvbnRl'@; put 'bnQgYS5uYXYtbGluay5hY3RpdmV7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjE1cHg7YmFja2dyb3VuZDojNTY1NjU2fX1hcHAtaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLmQtYmxvY2sgc3Bhbi5iYWRnZXtwb3NpdGlvbjphYnNvbHV0ZX1hcHAtaGVhZGVyLWFjdGlvbnMgLmF2YXRhci1pbWd7'@; put 'd2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW4tbGVmdDoxMHB4O2JvcmRlci1yYWRpdXM6NTBweH0uY2xyLWlucHV0LXdyYXBwZXIuc21hbGwtbXQgLmNsci1mb3JtLWNvbnRyb2x7bWFyZ2luLXRvcDo1cHghaW1wb3J0YW50fWJvZHlbY2RzLXRoZW1lPWRhcmtde3Njcm9sbGJhci13aWR0'@; put 'aDp0aGluO3Njcm9sbGJhci1jb2xvcjojM2I1MjY4ICMyNzM4NDl9Ym9keVtjZHMtdGhlbWU9ZGFya106Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjExcHh9Ym9keVtjZHMtdGhlbWU9ZGFya106Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JhY2tncm91bmQ6IzNiNTI2OH1ib2R5W2Nkcy10'@; put 'aGVtZT1kYXJrXTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojMjczODQ5O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjozcHggc29saWQgIzNiNTI2OH1ib2R5W2Nkcy10aGVtZT1kYXJrXSBjbHItaWNvbi5pcy1oaWdobGlnaHR7ZmlsbDojNGVjMGZmfWJvZHks'@; put 'aHRtbHtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50O3BhZGRpbmc6MDttYXJnaW46MH1ib2R5LnNob3VsZC1sb2dpbiBjbHItbW9kYWwsaHRtbC5zaG91bGQtbG9naW4gY2xyLW1vZGFse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ym9keVtjZHMtdGhlbWU9ZGFya10gYnV0dG9uOmZvY3Vze291'@; put 'dGxpbmU6bm9uZX1ib2R5W2Nkcy10aGVtZT1kYXJrXSBidXR0b246Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjFweCBzb2xpZCByZ2IoMjU1LDI1NSwyNTUpfWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBidXR0b246Zm9jdXN7b3V0bGluZTpub25lfWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSBidXR0b246'@; put 'Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjFweCBzb2xpZCByZ2IoMCwwLDApfS5zZWxlY3QtdGFibGUtaWNvbiwuc2VsZWN0LWxpYnJhcnktaWNvbnt3aWR0aDo4MHB4fVtjZHMtdGV4dD1sYWJlbF17Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTIwMCl9W2Nkcy10ZXh0'@; put 'PWxhYmVsTGlua117bGluZS1oZWlnaHQ6MS44IWltcG9ydGFudH1bY2RzLXRleHQ9Y2FwdGlvbl9jbGVhbl17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRp'@; put 'b24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyl9W2Nkcy10ZXh0PWNhcHRpb25fY2xl'@; put 'YW5dOmFmdGVyLFtjZHMtdGV4dD1jYXB0aW9uX2NsZWFuXTpiZWZvcmV7ZGlzcGxheTpub25lfS5tb2RhbCAubW9kYWwtYm9keXtwYWRkaW5nOjE1cHh9Lm1vZGFsIC5tb2RhbC1mb290ZXJ7cGFkZGluZzowIDE1cHggMTVweH0ubG9nLXdyYXBwZXJ7bWluLWhlaWdodDo1MHB4O3BhZGRpbmc6'@; put 'MTBweDttYXJnaW4tdG9wOjEwcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlMmUyO2hlaWdodDo0OHZoO292ZXJmbG93OmF1dG99LnNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDozMjBweDttYXJnaW4tbGVmdDowO21h'@; put 'cmdpbi10b3A6MjBweDtoZWlnaHQ6NXB4O292ZXJmbG93LXg6aGlkZGVufS5saW5le3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6LjQ7YmFja2dyb3VuZDojNzNkNTQ0O3dpZHRoOjE1MCU7aGVpZ2h0OjVweH0uc3VibGluZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiM3M2Q1NDQ7'@; put 'aGVpZ2h0OjVweH0uaW5je2FuaW1hdGlvbjppbmNyZWFzZSAycyBpbmZpbml0ZX0uZGVje2FuaW1hdGlvbjpkZWNyZWFzZSAycyAuNXMgaW5maW5pdGV9QGtleWZyYW1lcyBpbmNyZWFzZXswJXtsZWZ0Oi01JTt3aWR0aDo1JX10b3tsZWZ0OjEzMCU7d2lkdGg6MTAwJX19QGtleWZyYW1lcyBk'@; put 'ZWNyZWFzZXswJXtsZWZ0Oi04MCU7d2lkdGg6ODAlfXRve2xlZnQ6MTEwJTt3aWR0aDoxMCV9fS5hcHAtbG9hZGluZ3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQ6IzMxNDM1MTtmbGV4LWRpcmVj'@; put 'dGlvbjpjb2x1bW47ei1pbmRleDoyMDAwO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjB9LnN0YXJ0dXAtY2hlY2tze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjhweDttYXJnaW4tdG9wOjI0cHg7bWF4LXdpZHRoOjQyMHB4O3dpZHRoOjkwJX0uc3RhcnR1cC1jaGVja3tk'@; put 'aXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzY2Nn0uc3RhcnR1cC1jaGVjay0tZG9uZXtjb2xvcjojM2M4NTAwfS5zdGFydHVwLWNoZWNrLS1lcnJvcntjb2xvcjojYzIxZDAwfS5zdGFydHVwLWNoZWNrX19pY29uLS1wZW5kaW5n'@; put 'e2NvbG9yOiM5OTl9LnN0YXJ0dXAtY2hlY2tfX2ljb24tLWRvbmV7Y29sb3I6IzNjODUwMH0uc3RhcnR1cC1jaGVja19faWNvbi0tZXJyb3J7Y29sb3I6I2MyMWQwMH0uc3RhcnR1cC1jaGVja19fbGFiZWx7Zm9udC13ZWlnaHQ6NTAwfS5zdGFydHVwLWNoZWNrX19kZXRhaWx7Y29sb3I6Izk5'@; put 'OTtmb250LXNpemU6MTJweDttYXJnaW4tbGVmdDphdXRvO3RleHQtYWxpZ246cmlnaHQ7d29yZC1icmVhazpicmVhay13b3JkfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uaC1hdXRve2hlaWdodDphdXRvfS5oLXVuc2V0LWl7aGVpZ2h0'@; put 'OnVuc2V0IWltcG9ydGFudH0ubWluLWgtNTB2aHttaW4taGVpZ2h0OjUwdmh9LmgtMjR2aCwuaC0yNXZoe2hlaWdodDoyNXZofS5oLTcwdmh7aGVpZ2h0Ojcwdmh9LmgtODB2aHtoZWlnaHQ6ODB2aH0uaC0xMDB7aGVpZ2h0OjEwMCV9LnctNTB2d3t3aWR0aDo1MHZ3fS53LTEwMHt3aWR0aDox'@; put 'MDAlfS53LTEwMC1pe3dpZHRoOjEwMCUhaW1wb3J0YW50fS53LTQwe3dpZHRoOjQwJX0ubWluLXctMHttaW4td2lkdGg6MHB4fS5teC01e21hcmdpbjowIDVweH0ubXktNXttYXJnaW46NXB4IDB9Lm15LTE1e21hcmdpbjoxNXB4IDB9Lm15LTEwLW14LWF1dG97bWFyZ2luOjEwcHggYXV0b30u'@; put 'bS0we21hcmdpbjowIWltcG9ydGFudH0ubS0xMHttYXJnaW46MTBweH0ubXQtMHttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5tdC0zLW5lZ2F0aXZle21hcmdpbi10b3A6LTNweH0ubXQtNXttYXJnaW4tdG9wOjVweH0ubXQtNS1pe21hcmdpbi10b3A6NXB4IWltcG9ydGFudH0ubXQtMnttYXJn'@; put 'aW4tdG9wOjJweH0ubXQtMi1pe21hcmdpbi10b3A6MnB4IWltcG9ydGFudH0ubXQtMTB7bWFyZ2luLXRvcDoxMHB4fS5tdC0xNXttYXJnaW4tdG9wOjE1cHh9Lm10LTIwe21hcmdpbi10b3A6MjBweH0ubWwtMHttYXJnaW4tbGVmdDowfS5tbC0ze21hcmdpbi1sZWZ0OjNweH0ubWwtNXttYXJn'@; put 'aW4tbGVmdDo1cHh9Lm1sLTUtaXttYXJnaW4tbGVmdDo1cHghaW1wb3J0YW50fS5tbC0xMHttYXJnaW4tbGVmdDoxMHB4fS5tbC0xNXttYXJnaW4tbGVmdDoxNXB4fS5tbC0yMHttYXJnaW4tbGVmdDoyMHB4fS5tbC0yMC1pe21hcmdpbi1sZWZ0OjIwcHghaW1wb3J0YW50fS5tci0we21hcmdp'@; put 'bi1yaWdodDowfS5tci01e21hcmdpbi1yaWdodDo1cHh9Lm1yLTVpe21hcmdpbi1yaWdodDo1cHghaW1wb3J0YW50fS5tci0xMHttYXJnaW4tcmlnaHQ6MTBweH0ubXItMTJ7bWFyZ2luLXJpZ2h0OjEycHh9Lm1yLTIwe21hcmdpbi1yaWdodDoyMHB4fS5tYi0we21hcmdpbi1ib3R0b206MH0u'@; put 'bWItMGl7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0ubWItNXttYXJnaW4tYm90dG9tOjVweH0ubWItMTB7bWFyZ2luLWJvdHRvbToxMHB4fS5tYi0xMC1pe21hcmdpbi1ib3R0b206MTBweCFpbXBvcnRhbnR9Lm1iLTE1e21hcmdpbi1ib3R0b206MTVweH0ubWItMjB7bWFyZ2luLWJvdHRv'@; put 'bToyMHB4fS5tYi0zMHttYXJnaW4tYm90dG9tOjMwcHh9LnAtMHtwYWRkaW5nOjB9LnAtMTB7cGFkZGluZzoxMHB4fS5wYi0we3BhZGRpbmctYm90dG9tOjB9LnBiLTEwe3BhZGRpbmctYm90dG9tOjEwcHh9LnB5LTV7cGFkZGluZzo1cHggMH0ucHktMTB7cGFkZGluZzoxMHB4IDB9LmJhY2tn'@; put 'cm91bmQtdHJhbnNwYXJlbnR7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uYmFja2dyb3VuZC10cmFuc3BhcmVudC1pe2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50fWJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuY29sb3ItZ3JheXtjb2xvcjojNWE1YTVhfWJvZHlbY2RzLXRoZW1lPWxp'@; put 'Z2h0XSAuY29sb3ItZGFyay1ncmF5e2NvbG9yOiM0OTU5Njd9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIC5jb2xvci1kYXJrZXItZ3JheXtjb2xvcjojMzE0MzUxfS5jb2xvci13aGl0ZXtjb2xvcjojZmZmfS5jb2xvci13aGl0ZS1pe2NvbG9yOiNmZmYhaW1wb3J0YW50fS5jb2xvci1ncmVlbntj'@; put 'b2xvcjojNGI5ZTRifS5jb2xvci1kYy1ncmVlbntjb2xvcjojODFiNDQwfS5jb2xvci1yZWR7Y29sb3I6I2U0NTQ1NH0uY29sb3Itb3Jhbmdle2NvbG9yOiNlNjdlMjJ9LmNvbG9yLWJsdWV7Y29sb3I6IzNmOGNjM30uY29sb3IteWVsbG93e2NvbG9yOiNmMWM0MGZ9LmN1cnNvci1wb2ludGVy'@; put 'e2N1cnNvcjpwb2ludGVyfS5jdXJzb3ItZGVmdWFsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLWRlZmF1bHQtaXtjdXJzb3I6ZGVmYXVsdCFpbXBvcnRhbnR9LmJhY2tncm91bmQtdHJhbnNwYXJlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ucG9pbnRlci1ldmVudHMtbm9uZXtw'@; put 'b2ludGVyLWV2ZW50czpub25lfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS5mb250LXNpemUtMTV7Zm9udC1zaXplOjE1cHh9LmZvbnQtc2l6ZS0xOHtmb250LXNpemU6MThweH0uZm9udC1ib2xke2ZvbnQtd2Vp'@; put 'Z2h0OjcwMH0uZm9udC1ib2xkLWl7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudH0uZm9udC13ZWlnaHQtMzAwe2ZvbnQtd2VpZ2h0OjMwMH0uZm9udC13ZWlnaHQtNzAwe2ZvbnQtd2VpZ2h0OjcwMH0ud29yZC1icmVha3t3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LndvcmQtYnJlYWstYWxse3dv'@; put 'cmQtYnJlYWs6YnJlYWstYWxsfS5wb3NpdGlvbi1yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0ucG9zaXRpb24tYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmQtbm9uZXtkaXNwbGF5Om5vbmV9LmQtYmxvY2t7ZGlzcGxheTpibG9ja30uZC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxp'@; put 'bmUtYmxvY2t9LmQtZmxleHtkaXNwbGF5OmZsZXh9LmQtY29udGVudHN7ZGlzcGxheTpjb250ZW50c30uZmxleC11bnNldHtmbGV4OnVuc2V0fS5hbGlnbi1zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kfS5hbGlnbi1zZWxmLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydH0uYWxpZ24t'@; put 'aXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uanVzdGlmeS1jb250ZW50LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyLWl7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1zdGFydHtqdXN0'@; put 'aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uanVzdGlmeS1jb250ZW50LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lmp1c3RpZnktY29udGVudC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5qdXN0aWZ5LWNvbnRlbnQtYXJvdW5ke2p1c3RpZnktY29udGVudDpz'@; put 'cGFjZS1hcm91bmR9LmZsZXgtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWdhcC01e2dhcDo1cHh9LmNsci1nYXAtMHtnYXA6MH0ub3ZlcmZsb3ctYXV0b3tvdmVyZmxvdzphdXRvfS56LWluZGV4LWhpZ2hlc3R7ei1pbmRleDoxMDAwMDAwMH0udmVydGljYWwtYWxpZ24tbWlk'@; put 'ZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaWNvbi1kYy1maWxse2ZpbGw6IzgxYjQ0MH0uZGF0YWdyaWQtY3VzdG9tLWZvb3RlciAuZGF0YWdyaWQtb3V0ZXItd3JhcHBlciwudGV4dC1hcmVhLWZ1bGwtd2lkdGggLmNsci1jb250cm9sLWNvbnRhaW5lciwudGV4dC1hcmVhLWZ1bGwtd2lk'@; put 'dGggLmNsci1jb250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYXt3aWR0aDoxMDAlfS50ZXh0LWFyZWEtZnVsbC13aWR0aCBjbHItdGV4dGFyZWEtY29udGFpbmVye21hcmdpbjowIWltcG9ydGFudH0udGV4dC1hcmVhLWZ1bGwtd2lkdGggLmNsci10ZXh0YXJlYS13cmFwcGVye21hcmdpbjowIWlt'@; put 'cG9ydGFudH0ucHJvZ3Jlc1N0YXRpY3ttYXJnaW4tdG9wOi02cHghaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt6LWluZGV4OjEwMDAwIWltcG9ydGFudH0ucHJvZ3Jlc3MsLnByb2dyZXNzLXN0YXRpY3tiYWNrZ3JvdW5kLWNvbG9yOiNmNWY2ZmU7Ym9yZGVyLXJhZGl1'@; put 'czowO2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDo2cHg7bWFyZ2luOjA7bWF4LWhlaWdodDouNTgzMzMzcmVtO21pbi1oZWlnaHQ6LjE2NjY2N3JlbTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9jazt3aWR0aDpjYWxjKDEwMCUgLSA2M3B4KX0ucHJvZ3Jlc3MubG9vcDphZnRlcnthbmlt'@; put 'YXRpb246Y2xyLXByb2dyZXNzLWxvb3BlciAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO2NvbnRlbnQ6IiAiO3RvcDouMTY2NjY3cmVtO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2JhY2tncm91bmQtY29sb3I6IzYwYjUxNTt3aWR0aDo3NSV9LmJh'@; put 'ZGdlLXdhcm5pbmd7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWEgLmNhcmQtaGVhZGVyIGgze21hcmdpbi10b3A6MTBweH0ubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle3BhZGRpbmc6MTVweCAxNXB4IDB9Lm1vZGFsLWhlYWRlci0tYWNjZXNz'@; put 'aWJsZSAuY2xvc2UgY2xyLWljb257ZGlzcGxheTpub25lfS5zaG93LWNsb3NlIC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLmNsb3NlIGNsci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMThweDtyaWdodDotMTBweH0uYWxlcnQtYXBwLWxldmVs'@; put 'LmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOiNkOTRiMmU7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZX0uY2FyZC1oZWFkZXJ7Zm9udC13ZWlnaHQ6MzAwfS5zZWxlY3Qgc2VsZWN0OmZvY3Vze2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0OTU5Njc7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQo'@; put 'MTgwZGVnLHRyYW5zcGFyZW50IDk1JSwjNDk1YTY3IDApIG5vLXJlcGVhdH0uY2xyLXRyZWVub2RlLWNoaWxkcmVue21hcmdpbi1sZWZ0Oi4ycmVtIWltcG9ydGFudH0udGFibGUtYWN0aXZlOmZvY3Vze2JhY2tncm91bmQ6I2Q4ZTNlOX1jbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLWNvbnRy'@; put 'b2wtY29udGFpbmVyLGNsci1zZWxlY3QtY29udGFpbmVyIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1zZWxlY3Qtd3JhcHBlcixjbHItc2VsZWN0LWNvbnRhaW5lciBzZWxlY3R7d2lkdGg6MTAwJX10Ym9keXtmb250LXdlaWdodDo0MDB9aDMsaDR7Y29sb3I6IzU4NTg1ODtmb250LXdl'@; put 'aWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjFyZW07bWFyZ2luLXRvcDoxcmVtO21hcmdpbi1ib3R0b206MH1oMSxoMntjb2xvcjojNTg1ODU4O2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MnJlbTttYXJnaW4tdG9w'@; put 'OjFyZW07bWFyZ2luLWJvdHRvbTowfWNsci1pY29uLmlzLWluZm97ZmlsbDojODBiNDQxfS5kYXRhZ3JpZC1ob3N0LC5kYXRhZ3JpZC1vdmVybGF5LXdyYXBwZXJ7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtYm94IWltcG9ydGFudH0uYnRuIC5jbHItbG9hZGluZy1idG4t'@; put 'Y29udGVudHtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5idG4uYnRuLWRhbmdlciwuYnRuLmJ0bi13YXJuaW5ne2JvcmRlci1jb2xvcjojZWY0ZjJlO2JhY2tncm91bmQtY29sb3I6I2Q5NGIyZTtjb2xvcjojZmZmfS5idG4uYnRuLXNtOmhhcyhjbHItaWNvbil7bGluZS1oZWlnaHQ6Mn0uZC1u'@; put 'b25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmNsci1mbGV4LTF7ZmxleDoxfS5jbHItZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5ib3JkZXItMHtib3Jk'@; put 'ZXI6MH0uYm94LXNoYWRvdy1ub25le2JveC1zaGFkb3c6bm9uZX0uYm94LXNoYWRvdy1ub25lLWl7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH0uaHRDdXN0b21IaWRkZW57ZGlzcGxheTpub25lfWJvZHlbY2RzLXRoZW1lPWRhcmtdIC5odERhcmt7YmFja2dyb3VuZDojODg4O2NvbG9yOiNm'@; put 'ZmZ9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZSAuaHREYXJre2JhY2tncm91bmQ6IzNjNTY2Mjtjb2xvcjojZWVlfWJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGUgLmRhcmtUSDpub3QoLnByaW1hcnlLZXlIZWFkZXJTdHlsZSl7YmFja2dyb3VuZDojNDg3ZDk2'@; put 'O2NvbG9yOiNlZWV9Ym9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZSAuZGFya1RILmh0X19oaWdobGlnaHR7YmFja2dyb3VuZDojM2I2YjgxfWJvZHlbY2RzLXRoZW1lPWRhcmtdIC5yZWNvcmQtZWRpdC1tb2RhbCAuZGF0ZS1pbnB1dHtjb2xvci1zY2hlbWU6ZGFya30uaG90LWRp'@; put 'c3BsYXktbGljZW5zZS1pbmZvIGEsLmhvdC1kaXNwbGF5LWxpY2Vuc2UtaW5mbyBhOmhvdmVye2NvbG9yOiMwNjl9LmhhbmRzb250YWJsZSAuaHRBdXRvY29tcGxldGVBcnJvd3tjb2xvcjojODI4MjgyfS5oYW5kc29udGFibGUubGlzdGJveHtib3gtc2hhZG93OjAgNHB4IDIwcHggIzAwMDAw'@; put 'MDcwO2JvcmRlcjowIWltcG9ydGFudDtvdXRsaW5lOnZhcigtLWh0LW1lbnUtYm9yZGVyLXdpZHRoLCAxcHgpIHNvbGlkIHZhcigtLWh0LW1lbnUtYm9yZGVyLWNvbG9yLCAjZTVlNWU5KTtvdXRsaW5lLW9mZnNldDpjYWxjKC0xICogdmFyKC0taHQtbWVudS1ib3JkZXItd2lkdGgsIDFweCkp'@; put 'fS5oYW5kc29udGFibGUubGlzdGJveCAud3RIb2xkZXJ7b3ZlcmZsb3cteDpoaWRkZW59LmhhbmRzb250YWJsZSB0ZC5odEludmFsaWQsLmhhbmRzb250YWJsZSB0ZC5kYy1pbnZhbGlkLWNlbGx7YmFja2dyb3VuZDojZTYyNzAwYWQhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgcmVkIWlt'@; put 'cG9ydGFudDtjb2xvcjojZmZmIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIHRkLmRjLXdhcm5pbmctY2VsbHtiYWNrZ3JvdW5kOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMzAwKSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmcp'@; put 'IWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5udW1lcmljTGlzdGJveHt0ZXh0LWFsaWduOnJpZ2h0fS5tYXJnaW4tdG9wLTIwe21hcmdpbi10b3A6MjBweH0uaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnVudmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbn0ubm8tYm9yZGVyc3tib3Jk'@; put 'ZXI6MH0uY2FyZC5uby1ib3JkZXJzLC5jYXJkLm5vLWJvcmRlcnMgLmNhcmQtaGVhZGVyLC5jYXJkLm5vLWJvcmRlcnMgLmNhcmQtYmxvY2ssLmNhcmQubm8tYm9yZGVycyAuY2FyZC1mb290ZXIsLmNhcmQubm8taW5uZXItYm9yZGVycyAuY2FyZC1oZWFkZXIsLmNhcmQubm8taW5uZXItYm9y'@; put 'ZGVycyAuY2FyZC1ibG9jaywuY2FyZC5uby1pbm5lci1ib3JkZXJzIC5jYXJkLWZvb3Rlcntib3JkZXI6MDtib3gtc2hhZG93Om5vbmV9QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7LmQtc20tbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSFp'@; put 'bXBvcnRhbnR9LmQtc20taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1zbS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1zbS10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC1zbS10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2Vs'@; put 'bCFpbXBvcnRhbnR9LmQtc20tZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLXNtLWlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZmxleC1zbS1yb3d7ZmxleC1kaXJlY3Rp'@; put 'b246cm93fS5jbHItZ2FwLXNtLTV7Z2FwOjVweH0uY2xyLWdhcC1zbS0we2dhcDowfX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuZC1tZC1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtbWQtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1tZC1pbmxpbmUtYmxvY2t7'@; put 'ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLW1kLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLW1kLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLW1kLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1tZC1mbGV4e2Rpc3Bs'@; put 'YXk6ZmxleCFpbXBvcnRhbnR9LmQtbWQtaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci1mbGV4LW1kLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmNsci1nYXAtbWQtNXtnYXA6NXB4'@; put 'fS5jbHItZ2FwLW1kLTB7Z2FwOjB9fUBtZWRpYShtaW4td2lkdGg6OTkycHgpey5kLWxnLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC1sZy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLWxnLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRh'@; put 'bnR9LmQtbGctYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQtbGctdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtbGctdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLWxnLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1sZy1pbmxp'@; put 'bmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH0uY2xyLWZsZXgtbGctY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtbGctcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uY2xyLWdhcC1sZy01e2dhcDo1cHh9LmNsci1nYXAtbGctMHtnYXA6MH19LmRhdGFn'@; put 'cmlkLWJvZHl7cGFkZGluZy1ib3R0b206MnJlbSFpbXBvcnRhbnR9LmFib3J0TXNne3doaXRlLXNwYWNlOnByZS13cmFwO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZX0jZ3JhcGggc3Zne2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9Lm5vLXRhYmxlLXNlbGVjdGVke2Rpc3BsYXk6ZmxleDtqdXN0aWZ5'@; put 'LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yKTt6LWluZGV4OjEwO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjB9LmNvcHlS'@; put 'aWdodHtiYWNrZ3JvdW5kOiM0OTU5NjchaW1wb3J0YW50O2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjVweCAwIDRweDt6LWluZGV4OjEwMH0ubmF2LXRyZWU+Y2xyLXRyZWUtbm9kZS5j'@; put 'bHItZXhwYW5kZWR7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fWNsci10cmVlLW5vZGV7b3ZlcmZsb3cteTp2aXNpYmxlfWNsci10cmVlLW5vZGU6Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH1jbHItdHJlZS1ub2RlIC5jbHItdHJlZW5vZGUtY2FyZXR7d2lkdGg6YXV0byFp'@; put 'bXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fWNsci10cmVlLW5vZGUgLmNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lcntwYWRkaW5nOjAgOHB4O3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87YWxpZ24taXRlbXM6Y2VudGVyfWNsci10cmVlLW5vZGUgLmNsci10cmVlLW5vZGUtY29u'@; put 'dGVudC1jb250YWluZXI6Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH0uY2xyLXRyZWVub2RlLWNvbnRlbnQgcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnNlYXJjaC1ub2Rle21hcmdpbi1ib3R0b206NXB4fS50cmVlLXNlYXJjaC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6'@; put 'ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LnRyZWUtc2VhcmNoLXdyYXBwZXIgY2xyLWlucHV0LWNvbnRhaW5lcnttYXJnaW46MH0udHJlZS1zZWFyY2gtd3JhcHBlciBjbHItaWNvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO21hcmdpbjowIDAgM3B4O2N1cnNvcjpwb2lu'@; put 'dGVyfS5jbHItdHJlZS1ub2Rle292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5jb250ZW50LWNvbnRhaW5lcnt3aWR0aDoxMDAlfUAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKXsud3RIb2xkZXJ7d2lkdGg6MTAwJSFpbXBvcnRhbnR9fWlucHV0OjotbXMtY2xlYXJ7ZGlzcGxheTpub25l'@; put 'fUBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDpub25lKSwoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKXtjbHItdHJlZS1ub2RlLmNsci1leHBhbmRlZHtwYWRkaW5nLWJvdHRvbToyMHB4O21pbi1oZWlnaHQ6YXV0b30uY2xyLXRyZWUtbm9kZXttaW4taGVpZ2h0OjI0cHh9LmNs'@; put 'ci10cmVlbm9kZS1jaGlsZHJlbntvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLWljb24sLmNsci10cmVlbm9kZS1jb250ZW50IGNsci1pY29ue21pbi13aWR0aDoxNnB4O21pbi1oZWlnaHQ6MTZweH0udHJlZS1zZWFyY2gtd3JhcHBlciBjbHIt'@; put 'aWNvbntib3R0b206MnB4fS5jb250ZW50LWNvbnRhaW5lcntoZWlnaHQ6MTAwJX0uY29udGVudC1hcmVhPi5jYXJke21hcmdpbi1ib3R0b206MjBweH0ucmVjb3JkLWVkaXQtbW9kYWwgdGV4dGFyZWF7bWluLWhlaWdodDo0MnB4fX0uYm9yZGVyLWJvdHRvbS1kaXZpZGVye2JvcmRlci1ib3R0'@; put 'b206MXB4IHNvbGlkICNkM2QzZDN9LmxvYWRpbmdTcGlubmVye2hlaWdodDo3MHZoO2ZsZXg6MTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5kaXNhYmxlLXBhc3N3b3JkLW1hbmFnZXJ7LXdlYmtp'@; put 'dC10ZXh0LXNlY3VyaXR5OmRpc2M7LW1vei10ZXh0LXNlY3VyaXR5OmRpc2M7dGV4dC1zZWN1cml0eTpkaXNjO2ZvbnQtZmFtaWx5OnRleHQtc2VjdXJpdHktZGlzY30ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9aHIubGlnaHR7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQg'@; put 'I2RlZGVkZX0uc3Bpbm5lcntiYWNrZ3JvdW5kOnVybCgvU0FTSm9iRXhlY3V0aW9uP19GSUxFPS9QdWJsaWMvYXBwL2RjcGxhY2Vob2xkZXIvc2VydmljZXMvd2ViL3NwaW5uZXIuMTZmNzYzY2ViYzZiNjRkZi5zdmcpIWltcG9ydGFudH0uY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye2JhY2tn'@; put 'cm91bmQ6dXJsKC9TQVNKb2JFeGVjdXRpb24/X0ZJTEU9L1B1YmxpYy9hcHAvZGNwbGFjZWhvbGRlci9zZXJ2aWNlcy93ZWIvY2FyZXQuNjVmMWZjMGFjYmU0YzdmZi5zdmcpIWltcG9ydGFudH1ib2R5W2Nkcy10aGVtZT1kYXJrXSAudGFibGUtc2VhcmNoLXdyYXBwZXJ7YmFja2dyb3VuZDoj'@; put 'MjEzMzNifS50YWJsZS1zZWFyY2gtd3JhcHBlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21pbi13aWR0aDoxNzBweH0udGFibGUtc2VhcmNoLXdyYXBwZXIgLmlucHV0LXdyYXBwZXIgY2xyLWlj'@; put 'b24sLnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFwcGVyIC5zcGlubmVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE5cHg7dG9wOjB9LnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFwcGVyIGNsci1pY29ue2N1cnNvcjpwb2ludGVyfS50YWJsZS1zZWFyY2gtd3JhcHBl'@; put 'ciAuaW5wdXQtd3JhcHBlciBbbmFtZT1zZWFyY2gtaW5wdXRde3BhZGRpbmctcmlnaHQ6MjVweH0udGFibGUtc2VhcmNoLXdyYXBwZXIgY2xyLWlucHV0LWNvbnRhaW5lcnttYXJnaW4tdG9wOi01cHg7bWFyZ2luLXJpZ2h0OjB9LnRhYmxlLXNlYXJjaC13cmFwcGVyIGNsci1pbnB1dC1jb250'@; put 'YWluZXIgbGFiZWx7ZGlzcGxheTpub25lfS50YWJsZS1zZWFyY2gtd3JhcHBlciBjbHItY2hlY2tib3gtY29udGFpbmVye21hcmdpbi10b3A6MH0udGFibGUtc2VhcmNoLXdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sLnRhYmxlLXNlYXJjaC13cmFwcGVyIGlucHV0'@; put 'Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS50YWJsZS1zZWFyY2gtd3JhcHBlciBpbnB1dFt0eXBlPW51bWJlcl17LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZH0uZGMtbG9ja2VkLWNvbnRyb2x7b3BhY2l0eTouNDtjdXJzb3I6'@; put 'bm90LWFsbG93ZWQhaW1wb3J0YW50fS5saW5rLWl0e2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmluZm9CYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo4cHg7YmFja2dyb3VuZDojNDk1OTY3O2Nv'@; put 'bG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzozcHggOHB4O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtZmFtaWx5Okx1Y2lkYSBDb25zb2xlLE1vbmFjbyxtb25vc3BhY2V9LmluZm9CYXIgLmluZm9CYXItdGV4dHtmbGV4OjE7bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO3doaXRl'@; put 'LXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5pbmZvQmFyLmV4cGFuZGVke2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmluZm9CYXIuZXhwYW5kZWQgLmluZm9CYXItdGV4dHtvdmVyZmxvdzp2aXNpYmxlO3doaXRlLXNwYWNlOm5vcm1hbDt0ZXh0LW92ZXJmbG93OmNsaXA7'@; put 'b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0uaW5mb0JhciAuaW5mb0Jhci10b2dnbGV7ZmxleDpub25lO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMnB4O2xpbmUtaGVpZ2h0OjF9LmluZm9CYXIgLmluZm9CYXIt'@; put 'dG9nZ2xlIGNsci1pY29ue3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgZWFzZS1pbn0uaW5mb0Jhci5leHBhbmRlZCAuaW5mb0Jhci10b2dnbGUgY2xyLWljb257dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfQo='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let filename=text-security-disc.f758130bc0ffc111.woff; filename filecode temp lrecl=32767; data _null_; file filecode; put 'd09GRgABAAAAAAusAAsAAAAAMGgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZjRmM5Y21hcAAAAYQAAAgCAAArYmjjYVVnbHlmAAAJiAAAAEEAAABQiOYj2mhlYWQAAAnMAAAALgAAADYR8XmmaGhlYQAACfwAAAAcAAAAJAqNAyNo'@; put 'bXR4AAAKGAAAAAgAAAAIAyAAAGxvY2EAAAogAAAABgAAAAYAKAAAbWF4cAAACigAAAAeAAAAIAEOACJuYW1lAAAKSAAAAUIAAAKOcN63t3Bvc3QAAAuMAAAAHQAAAC5lhHRpeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGSc'@; put 'wDiBgZWBgSGVtYKBgVECQjMfYEhiYmFgYGJgZWbACgLSXFMYHIAq/rNfAHK3gEmgASACAIekCT4AAHic7dhl0zDVmUXh5+XFHYK7E0IguFtwt4QQgmtwd3d3d7cED+4SXIO7u7vbsNfaUzU1fyGcu66u1adOf+6uHhgYGGpgYGDwL37/iyEHBoZZcWDQLzUw9NK/7A5if/DA8OwPOfQknBky+0P8'@; put '/PPPOcd1UJ785frr/Dq/zq/z6/w3zsCgoX/xX74GRsxbcYpRB1iDB/7PGvT/DFGDenBwe8hKD1XpoSs9TKWHrfRwlR6+0iNUesRKj1TpkSs9SqVHrfRolR690r+p9BiVHrPSY1V67EqPU+lxKz1epcev9ASVnrDSE1V64kpPUulJKz1ZpSev9BSVnrLSU1V66kr/ttLTVPp3lZ62/KJSerpKT1/p'@; put 'P1R6hkrPWOmZKj1zpWep9KyVnq3Ss1d6jkrPWem5Kj13peep9LyVnq/S81d6gUr/sdILVnqhSi9c6UUqvWilF6v04pVeotJLVnqpSi9d6WUqvWyll6v08pVeodIrVvpPlf5zpVeq9F8qvXKl/1rpVSr9t0qvWunVKr16pdeo9JqVXqvSa1d6nUqvW+n1Kr1+pTeo9N8rvWGlN6r0xpXepNKbVnqz'@; put 'Sm9e6S0qvWWlt6r01pXeptLbVnq7Sm9f6R0qvWOld6r0zpXepdK7Vnq3Su9e6T0qvWel96r03pXep9L7Vnq/Su9f6QMqfWClD6r0wZU+pNKHVvqwSh9e6SMqfWSlj6r00ZU+ptLHVvq4Sh9f6RMqfWKlT6r0yZU+pdKnVvq0Sp9e6TMqfWalz6r02ZU+p9LnVvq8Sp9f6QsqfWGl/1Hpf1b6okpf'@; put 'XOlLKn1ppS+r9OWVvqLS/6r0lZW+qtJXV/qaSl9b6esqfX2lb6j0jZW+qdI3V/qWSt9a6dsqfXul76j0vyt9Z6XvqvTdlb6n0vdW+r5K31/pByr9YKUfqvTDlX6k0v+p9KOVfqzSj1f6iUo/WemnKv10pZ+p9LOVfq7Sz1f6hUq/WOmXKv1ypV+p9KuVfq3Sr1f6jUq/Wem3Kv12pd+p9LuVfq/S'@; put '71f6g0p/WOmPKv1xpT+p9KeV/qzSn1f6i0p/WemvKv11pb+p9LeV/q7S31f6h0r/WOmfKv1zDfI26KKHED1Y9JCihxI9tOhhRA8rejjRw4seQfSIokcSPbLoUUSPKno00aOL/o3oMUSPKXos0WOLHkf0uKLHEz2+6AlETyh6ItETi55E9KSiJxM9uegpRE8peirRU4v+rehpRP9O9LSify96OtHT'@; put 'i/6D6BlEzyh6JtEzi55F9KyiZxM9u+g5RM8pei7Rc4ueR/S8oucTPb/oBUT/UfSCohcSvbDoRUQvKnox0YuLXkL0kqKXEr206GVELyt6OdHLi15B9Iqi/yT6z6JXEv0X0SuL/qvoVUT/TfSqolcTvbroNUSvKXot0WuLXkf0uqLXE72+6A1E/130hqI3Er2x6E1Ebyp6M9Gbi95C9JaitxK9teht'@; put 'RG8rejvR24veQfSOoncSvbPoXUTvKno30buL3kP0nqL3Er236H1E7yt6P9H7iz5A9IGiDxJ9sOhDRB8q+jDRh4s+QvSRoo8SfbToY0QfK/o40ceLPkH0iaJPEn2y6FNEnyr6NNGniz5D9JmizxJ9tuhzRJ8r+jzR54u+QPSFov8h+p+iLxJ9sehLRF8q+jLRl4u+QvS/RF8p+irRV4u+RvS1oq8T'@; put 'fb3oG0TfKPom0TeLvkX0raJvE3276DtE/1v0naLvEn236HtE3yv6PtH3i35A9IOiHxL9sOhHRP9H9KOiHxP9uOgnRD8p+inRT4t+RvSzop8T/bzoF0S/KPol0S+LfkX0q6JfE/266DdEvyn6LdFvi35H9Lui3xP9vugPRH8o+iPRH4v+RPSnoj8T/bnoL0R/Kfor0V+L/kb0t6K/E/296B9E/yj6'@; put 'J9E/K/2/v/npoocQPVj0kKKHEj206GFEDyt6ONHDix5B9IiiRxI9suhRRI8qejTRo4v+jegxRI8peizRY4seR/S4oscTPb7oCURPKHoi0ROLnkT0pKInEz256ClETyl6KtFTi/6t6GlE/070tKJ/L3o60dOL/oPoGUTPKHom0TOLnkX0rKJnEz276DlEzyl6LtFzi55H9Lyi5xM9v+gFRP9R9IKi'@; put 'FxK9sOhFRC8qejHRi4teQvSSopcSvbToZUQvK3o50cuLXkH0iqL/JPrPolcS/RfRK4v+q+hVRP9N9KqiVxO9uug1RK8pei3Ra4teR/S6otcTvb7oDUT/XfSGojcSvbHoTURvKnoz0ZuL3kL0lqK3Er216G1Ebyt6O9Hbi95B9I6idxK9s+hdRO8qejfRu4veQ/SeovcSvbfofUTvK3o/0fuLPkD0'@; put 'gaIPEn2w6ENEHyr6MNGHiz5C9JGijxJ9tOhjRB8r+jjRx4s+QfSJok8SfbLoU0SfKvo00aeLPkP0maLPEn226HNEnyv6PNHni75A9IWi/yH6n6IvEn2x6EtEXyr6MtGXi75C9L9EXyn6KtFXi75G9LWirxN9vegbRN8o+ibRN4u+RfStom8TfbvoO0T/W/Sdou8Sfbfoe0TfK/o+0feLfkD0g6If'@; put 'Ev2w6EdE/0f0o6IfE/246CdEPyn6KdFPi35G9LOinxP9vOgXRL8o+iXRL4t+RfSrol8T/broN0S/Kfot0W+Lfkf0u6LfE/2+6A9Efyj6I9Efi/5E9KeiPxP9uegvRH8p+ivRX4v+RvS3or8T/b3oH0T/KPon0T9rYND/AOaSEScAAHicY2BiAAKmPSy+QEqUgYFRUURcTFzMyNzM3MxEXU1dTYmd'@; put 'jZ2NccK/K5oaLm6L3Fw0NOEMZoVAFD6IAQD4PA9iAAAAeJxjYGRgYADilrme/fH8Nl8ZuNkvAEUYbnDPcEOmmfaw+AIpDgYmEA8AHMMJGAAAeJxjYGRgYL/AAATMCiCSaQ8DIwMqYAIAK/QBvQAAAAADIAAAAAAAAAAoAAB4nGNgZGBgYGIQA2IGMIuBgQsIGRj+g/kMAArUATEAAHicjY69TsMw'@; put 'FIWP+4doJYSKhMTmoUJIqOnPWIm1ZWDq0IEtTZw2VRpHjlu1D8A7MPMczAw8DM/AifFEl9qS9d1zzr3XAK7xBYHqCHTdW50aLlj9cZ1057lBfvTcRAdPnlvUnz23mXj13MEN3jhBNC6p9PDuuYYrfHquU//23CD/eG7iVnQ9t9ATD57bWIgXzx3ciw+rDrZfqmhnUnvsx2kZzdVql4Xm1DhVFsqU'@; put 'qc7lKBiemjOVKxNaFcvlUZb71djaRCZGb+VU51ZlmZaF0RsV2WBtbTEZDBKvB5HewkLhwLePkhRhB4OU9ZFKTCqpzems6GQI6Z7TcU5mQceQUmjkkBghwPCszhmd3HWHLh+ze8mEpLvnT8dULRLWCTMaW9LUbanSGa+mUjhv47ZY7l67rgITDHiTf/mAKU76BTuXfk8AAHicY2BigAARBuyAiZGJ'@; put 'kZmBJSWzOJmBAQALQwHHAAAA'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=va-early.8e7fa37723acbd9f.js; filename filecode temp lrecl=32767; data _null_; file filecode; put 'IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3RyeXt2YXIgZT13aW5kb3cubG9jYXRpb24uaGFzaHx8IiIsaT1lLmluZGV4T2YoIj8iKT49MD9lLnNwbGl0KCI/IilbMV06IiI7aWYoInZhIiE9PW5ldyBVUkxTZWFyY2hQYXJhbXMoaSkuZ2V0KCJlbWJlZCIpKXJldHVybn1jYXRjaHtyZXR1cm59'@; put 'd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKGEpe3ZhciB0PWEmJmEuZGF0YTt0JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJzdHJpbmciPT10eXBlb2YgdC5yZXN1bHROYW1lJiYod2luZG93Ll9fdmFMYXN0TWVzc2FnZT17dDpEYXRlLm5vdygpLG9yaWdpbjphLm9y'@; put 'aWdpbixkYXRhOnR9KX0sITEpfSgpOw=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64,swap=compiled_apploc apploc) filename filecode clear; %let path=services/web/images; %let filename=datacontroller.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0iMTY5MCIgaGVpZ2h0PSIyNDAiIHZpZXdCb3g9IjAgMCAxNjkwIDI0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwNV83KSI+CjxwYXRoIGQ9Ik0xMjQuOSA1NS4yMDAxQzEyOC4y'@; put 'IDU1LjYwMDEgMTMxLjQgNTUuOTAwMSAxMzQuNyA1Ni4zMDAxQzE0Mi42IDU3LjQwMDEgMTUwLjMgNTguOTAwMSAxNTcuNSA2Mi42MDAxQzE1OS42IDYzLjcwMDEgMTYxLjYgNjQuOTAwMSAxNjMuMSA2Ni44MDAxQzE2NS41IDY5LjYwMDEgMTY1LjQgNzIuNjAwMSAxNjMgNzUuNDAwMUMxNjAu'@; put 'NSA3OC4yMDAxIDE1Ny4zIDc5LjgwMDEgMTUzLjkgODEuMTAwMUMxNDYgODQuMjAwMSAxMzcuNyA4NS42MDAxIDEyOS4zIDg2LjMwMDFDMTE1LjYgODcuNDAwMSAxMDIuMSA4Ni45MDAxIDg4LjcgODMuNzAwMUM4NC4zIDgyLjcwMDEgODAgODEuMzAwMSA3Ni4xIDc5LjEwMDFDNzQuNiA3OC4z'@; put 'MDAxIDczLjIgNzcuMzAwMSA3MS45IDc2LjEwMDFDNjguMyA3Mi42MDAxIDY4LjMgNjguOTAwMSA3MiA2NS42MDAxQzc2IDYyLjAwMDEgODAuOSA2MC4zMDAxIDg1LjkgNTguOTAwMUM5Mi45IDU2LjkwMDEgMTAwIDU1LjkwMDEgMTA3LjIgNTUuNDAwMUMxMDcuOCA1NS40MDAxIDEwOC41IDU1'@; put 'LjYwMDEgMTA5IDU1LjEwMDFDMTE0LjIgNTUuMjAwMSAxMTkuNiA1NS4yMDAxIDEyNC45IDU1LjIwMDFaIiBmaWxsPSIjRTBFMEUwIi8+CjxwYXRoIGQ9Ik02OS4yMDAxIDEzNy4zQzc1LjYwMDEgMTQ1LjUgODQuNzAwMSAxNDguNSA5NC4xMDAxIDE1MC41QzExMi43IDE1NC41IDEzMS4zIDE1'@; put 'NCAxNDkuNCAxNDcuNkMxNTUgMTQ1LjYgMTYwLjIgMTQyLjkgMTYzLjkgMTM3LjlDMTY0LjUgMTM3LjEgMTY0LjggMTM3LjUgMTY1LjEgMTM4LjFDMTY1LjcgMTM5LjQgMTY2IDE0MC43IDE2NiAxNDIuMUMxNjYgMTQ3IDE2NiAxNTIgMTY2IDE1Ni45QzE2NiAxNjAuMSAxNjQuNSAxNjIuNiAx'@; put 'NjIuMyAxNjQuOEMxNTcuNyAxNjkuNCAxNTEuOSAxNzEuOSAxNDUuOCAxNzMuOEMxMzMuNSAxNzcuNiAxMjAuOSAxNzguNCAxMDguMiAxNzcuNUM5OC43MDAxIDE3Ni44IDg5LjUgMTc1IDgwLjggMTcxLjFDNzcuMSAxNjkuNCA3My43MDAxIDE2Ny40IDcxLjAwMDEgMTY0LjNDNjguOTAwMSAx'@; put 'NjEuOSA2Ny44IDE1OS4yIDY3LjggMTU2QzY3LjkgMTUxLjUgNjcuOCAxNDcgNjcuOCAxNDIuNUM2Ny44IDE0MC43IDY4LjEwMDEgMTM5IDY5LjIwMDEgMTM3LjNaIiBmaWxsPSIjOEVDNjNGIi8+CjxwYXRoIGQ9Ik02OS4yOTk5IDEwNi40Qzc0LjU5OTkgMTEzLjUgODEuOTk5OSAxMTYuNSA4'@; put 'OS44OTk5IDExOC42QzEwOC44IDEyMy42IDEyNy43IDEyMy41IDE0Ni40IDExNy45QzE1Mi42IDExNi4xIDE1OC40IDExMy40IDE2Mi45IDEwOC41QzE2My41IDEwNy45IDE2My45IDEwNi41IDE2NC42IDEwNi43QzE2NS42IDEwNyAxNjUuNiAxMDguNCAxNjUuOSAxMDkuNUMxNjYuMyAxMTEu'@; put 'MiAxNjYuMSAxMTIuOSAxNjYuMSAxMTQuNkMxNjYuMSAxMTggMTY2IDEyMS4zIDE2Ni4xIDEyNC43QzE2Ni4zIDEyOC45IDE2NC42IDEzMi4yIDE2MS41IDEzNC45QzE1Ni44IDEzOS4xIDE1MS4xIDE0MS42IDE0NSAxNDMuMkMxMjQuNSAxNDguNyAxMDQuMSAxNDguNiA4My45OTk5IDE0MS42'@; put 'Qzc5LjA5OTkgMTM5LjkgNzQuNTk5OSAxMzcuNSA3MC45OTk5IDEzMy42QzY4Ljc5OTkgMTMxLjIgNjcuNyAxMjguNCA2Ny43IDEyNS4xQzY3LjggMTIwLjcgNjcuNyAxMTYuMiA2Ny43IDExMS44QzY3LjggMTEwIDY4LjA5OTkgMTA4LjIgNjkuMjk5OSAxMDYuNFoiIGZpbGw9IiNFMEUwRTAi'@; put 'Lz4KPHBhdGggZD0iTTY5LjEgNzYuN0M3MC42IDgxLjEgNzQuMiA4My4wOTk5IDc4IDg0Ljg5OTlDODQuOCA4OC4wOTk5IDkyLjEgODkuNiA5OS40IDkwLjVDMTEzLjkgOTIuMyAxMjguNCA5Mi4xIDE0Mi43IDg5LjFDMTQ4LjUgODcuOSAxNTQuMSA4Ni4zIDE1OS4yIDgzLjFDMTYyLjEgODEu'@; put 'MyAxNjMuNiA3OS42IDE2NC42IDc2LjhDMTY1LjYgNzguMiAxNjUuOSA3OS43IDE2NS45IDgxLjJDMTY1LjkgODYuMiAxNjYgOTEuMSAxNjUuOSA5Ni4xQzE2NS44IDEwMC4zIDE2My40IDEwMy4zIDE2MC4zIDEwNS44QzE1NC41IDExMC40IDE0Ny43IDExMi44IDE0MC42IDExNC40QzEyMS44'@; put 'IDExOC41IDEwMy4yIDExOC4yIDg0LjkgMTEyQzgwLjEgMTEwLjQgNzUuNSAxMDguMSA3MS44IDEwNC41QzY5IDEwMS44IDY3LjUgOTguNyA2Ny42IDk0LjdDNjcuNyA5MC40IDY3LjYgODYuMSA2Ny42IDgxLjhDNjcuOCA3OS45IDY4LjEgNzguMyA2OS4xIDc2LjdaIiBmaWxsPSIjOEVDNjNG'@; put 'Ii8+CjxwYXRoIGQ9Ik0xODMuOSAyMTAuOUMyMDAuMiAyMTEuOCAyMDguOSAxOTEuOCAxOTcuMSAxODAuNUMxODQuNyAxNjguNiAxNjQuMyAxNzkuNyAxNjcuNSAxOTYuNUM5My44IDI0My41IC0wLjk5OTk4MSAxNzMuMiAyNiA4Ny44MDAxTDcuODAwMDIgNzUuNjAwMUMtMzMuMSAxODQuMyA5'@; put 'Mi44IDI3Ni4yIDE4My45IDIxMC45Wk0xNzguNyAxODcuNEMxODYuMyAxNzkuNSAxOTguNCAxOTAuNSAxOTEuMyAxOTguOEMxODMuOCAyMDcuNSAxNzAuNiAxOTUuOCAxNzguNyAxODcuNFoiIGZpbGw9IiNFMEUwRTAiLz4KPHBhdGggZD0iTTM1LjIgNTAuNzAwMUM0Ni45IDYxLjkwMDEgNjYu'@; put 'MiA1Mi43MDAxIDY1LjEgMzYuNzAwMUMxMzguNyAtMTAuNyAyMzQgNTkuNTAwMSAyMDcgMTQ1LjJMMjI1LjIgMTU3LjRDMjY0LjkgNTEuODAwMSAxNDQuNCAtNDMuMjk5OSA1MS4yIDIwLjYwMDFDMzMuNyAxNy4wMDAxIDIyLjQgMzguNDAwMSAzNS4yIDUwLjcwMDFaTTUzLjYgNDMuODAwMUM0'@; put 'NS44IDUxLjkwMDEgMzMuNSA0MC4xMDAxIDQxLjMgMzIuMDAwMUM0OS4xIDIzLjkwMDEgNjEuNCAzNS43MDAxIDUzLjYgNDMuODAwMVoiIGZpbGw9IiM4RUM2M0YiLz4KPHBhdGggZD0iTTMyMy41NzUgNDcuODg3NEMzMjMuNTc1IDQ2Ljc5MDEgMzIzLjkxNyA0NS44OTg1IDMyNC42MDMgNDUu'@; put 'MjEyN0MzMjUuNDI2IDQ0LjM4OTcgMzI2LjM4NiA0My45NzgyIDMyNy40ODQgNDMuOTc4MkgzNjkuMDQ0QzM3OC45MiA0My45NzgyIDM4OC4wNDEgNDUuNzYxMyAzOTYuNDA4IDQ5LjMyNzZDNDA0LjkxMyA1Mi44OTM4IDQxMi4yNTEgNTcuOTAwMyA0MTguNDIzIDY0LjM0N0M0MjQuNTk2IDcw'@; put 'LjY1NjUgNDI5LjQ2NSA3OC4yMDA1IDQzMy4wMzEgODYuOTc5QzQzNi41OTcgOTUuNzU3NSA0MzguMzggMTA1LjQyOCA0MzguMzggMTE1Ljk4OUM0MzguMzggMTI2LjU1MSA0MzYuNTk3IDEzNi4yMjEgNDMzLjAzMSAxNDQuOTk5QzQyOS40NjUgMTUzLjc3OCA0MjQuNTk2IDE2MS4zOSA0MTgu'@; put 'NDIzIDE2Ny44MzdDNDEyLjI1MSAxNzQuMTQ2IDQwNC45MTMgMTc5LjA4NCAzOTYuNDA4IDE4Mi42NTFDMzg4LjA0MSAxODYuMjE3IDM3OC45MiAxODggMzY5LjA0NCAxODhIMzI3LjQ4NEMzMjYuMzg2IDE4OCAzMjUuNDI2IDE4Ny42NTcgMzI0LjYwMyAxODYuOTcxQzMyMy45MTcgMTg2LjE0'@; put 'OCAzMjMuNTc1IDE4NS4xODggMzIzLjU3NSAxODQuMDkxVjQ3Ljg4NzRaTTM0OS4yOTMgNjkuMjg0OVYxNjIuNjkzSDM2OS42NjJDMzc1LjgzNCAxNjIuNjkzIDM4MS40NTggMTYxLjUyNyAzODYuNTMzIDE1OS4xOTZDMzkxLjYwOCAxNTYuODY0IDM5NS45MjggMTUzLjY0MSAzOTkuNDk1IDE0'@; put 'OS41MjZDNDAzLjE5OCAxNDUuNDExIDQwNi4wMSAxNDAuNTQxIDQwNy45MyAxMzQuOTE4QzQwOS45ODggMTI5LjE1NyA0MTEuMDE2IDEyMi44NDcgNDExLjAxNiAxMTUuOTg5QzQxMS4wMTYgMTA5LjI2OCA0MDkuOTg4IDEwMy4wMjcgNDA3LjkzIDk3LjI2NjNDNDA2LjAxIDkxLjUwNTQgNDAz'@; put 'LjE5OCA4Ni41Njc1IDM5OS40OTUgODIuNDUyNkMzOTUuOTI4IDc4LjMzNzcgMzkxLjYwOCA3NS4xMTQzIDM4Ni41MzMgNzIuNzgyNkMzODEuNDU4IDcwLjQ1MDggMzc1LjgzNCA2OS4yODQ5IDM2OS42NjIgNjkuMjg0OUgzNDkuMjkzWk01MzEuMDkzIDE3Ny45MThDNTI3LjM4OSAxODAuNjYy'@; put 'IDUyMy4xMzcgMTgzLjEzMSA1MTguMzM3IDE4NS4zMjVDNTEzLjUzNiAxODcuMzgzIDUwOC43MzUgMTg4LjQxMSA1MDMuOTM1IDE4OC40MTFDNDk2LjgwMiAxODguNDExIDQ5MC4yMTggMTg3LjEwOCA0ODQuMTgzIDE4NC41MDJDNDc4LjE0OCAxODEuODk2IDQ3Mi45MzYgMTc4LjI2MSA0Njgu'@; put 'NTQ2IDE3My41OThDNDY0LjI5NCAxNjguOTM0IDQ2MC45MzQgMTYzLjQ0OCA0NTguNDY1IDE1Ny4xMzhDNDU1Ljk5NiAxNTAuODI5IDQ1NC43NjEgMTQzLjk3IDQ1NC43NjEgMTM2LjU2NEM0NTQuNzYxIDEyOS40MzEgNDU2LjA2NCAxMjIuNzc5IDQ1OC42NzEgMTE2LjYwNkM0NjEuMjc3IDEx'@; put 'MC4yOTcgNDY0Ljg0MyAxMDQuODEgNDY5LjM2OSAxMDAuMTQ3QzQ3My44OTYgOTUuMzQ2IDQ3OS4xMDggOTEuNTc0IDQ4NS4wMDYgODguODMwN0M0OTEuMDQxIDg2LjA4NzQgNDk3LjQ4OCA4NC43MTU4IDUwNC4zNDYgODQuNzE1OEM1MDkuMTQ3IDg0LjcxNTggNTEzLjg3OSA4NS44MTMxIDUx'@; put 'OC41NDIgODguMDA3N0M1MjMuMjA2IDkwLjA2NTIgNTI3LjM4OSA5Mi40NjU1IDUzMS4wOTMgOTUuMjA4OFY4OS4wMzY1QzUzMS4wOTMgODcuOTM5MSA1MzEuNDM2IDg3LjA0NzYgNTMyLjEyMiA4Ni4zNjE4QzUzMi45NDUgODUuNTM4OCA1MzMuOTA1IDg1LjEyNzMgNTM1LjAwMiA4NS4xMjcz'@; put 'SDU1MS4wNUM1NTMuNjU2IDg1LjEyNzMgNTU0Ljk1OSA4Ni40MzAzIDU1NC45NTkgODkuMDM2NVYxODQuMDkxQzU1NC45NTkgMTg2LjY5NyA1NTMuNjU2IDE4OCA1NTEuMDUgMTg4SDUzNS4wMDJDNTMzLjkwNSAxODggNTMyLjk0NSAxODcuNjU3IDUzMi4xMjIgMTg2Ljk3MUM1MzEuNDM2IDE4'@; put 'Ni4xNDggNTMxLjA5MyAxODUuMTg4IDUzMS4wOTMgMTg0LjA5MVYxNzcuOTE4Wk00NzkuNjU3IDEzNi41NjRDNDc5LjY1NyAxNDAuMjY3IDQ4MC4zNDIgMTQzLjc2NSA0ODEuNzE0IDE0Ny4wNTdDNDgzLjA4NiAxNTAuMjExIDQ4NC45MzcgMTUzLjAyMyA0ODcuMjY5IDE1NS40OTJDNDg5LjYw'@; put 'MSAxNTcuOTYxIDQ5Mi4yNzYgMTU5Ljk1IDQ5NS4yOTMgMTYxLjQ1OUM0OTguNDQ4IDE2Mi44MyA1MDEuNzQgMTYzLjUxNiA1MDUuMTY5IDE2My41MTZDNTA4Ljg3MiAxNjMuNTE2IDUxMi4yMzMgMTYyLjgzIDUxNS4yNTEgMTYxLjQ1OUM1MTguMjY4IDE1OS45NSA1MjAuODc0IDE1Ny45NjEg'@; put 'NTIzLjA2OSAxNTUuNDkyQzUyNS40MDEgMTUzLjAyMyA1MjcuMTg0IDE1MC4yMTEgNTI4LjQxOCAxNDcuMDU3QzUyOS42NTMgMTQzLjc2NSA1MzAuMjcgMTQwLjI2NyA1MzAuMjcgMTM2LjU2NEM1MzAuMjcgMTMyLjg2IDUyOS42NTMgMTI5LjQzMSA1MjguNDE4IDEyNi4yNzZDNTI3LjE4NCAx'@; put 'MjIuOTg0IDUyNS40MDEgMTIwLjEwNCA1MjMuMDY5IDExNy42MzVDNTIwLjg3NCAxMTUuMTY2IDUxOC4yNjggMTEzLjI0NiA1MTUuMjUxIDExMS44NzRDNTEyLjIzMyAxMTAuMzY1IDUwOC44NzIgMTA5LjYxMSA1MDUuMTY5IDEwOS42MTFDNTAxLjc0IDEwOS42MTEgNDk4LjQ0OCAxMTAuMzY1'@; put 'IDQ5NS4yOTMgMTExLjg3NEM0OTIuMjc2IDExMy4yNDYgNDg5LjYwMSAxMTUuMTY2IDQ4Ny4yNjkgMTE3LjYzNUM0ODQuOTM3IDEyMC4xMDQgNDgzLjA4NiAxMjIuOTg0IDQ4MS43MTQgMTI2LjI3NkM0ODAuMzQyIDEyOS40MzEgNDc5LjY1NyAxMzIuODYgNDc5LjY1NyAxMzYuNTY0Wk01NzQu'@; put 'NDA3IDg5LjAzNjVDNTc0LjQwNyA4Ny45MzkxIDU3NC43NSA4Ny4wNDc2IDU3NS40MzYgODYuMzYxOEM1NzYuMTIyIDg1LjUzODggNTc3LjAxMyA4NS4xMjczIDU3OC4xMTEgODUuMTI3M0g1OTMuMzM2VjU4LjE3NDZDNTkzLjMzNiA1Ny4wNzczIDU5My42NzkgNTYuMTg1OCA1OTQuMzY0IDU1'@; put 'LjQ5OTlDNTk1LjE4NyA1NC42NzcgNTk2LjE0OCA1NC4yNjU1IDU5Ny4yNDUgNTQuMjY1NUg2MTMuMjkzQzYxNS44OTkgNTQuMjY1NSA2MTcuMjAyIDU1LjU2ODUgNjE3LjIwMiA1OC4xNzQ2Vjg1LjEyNzNINjM1LjMwOEM2MzYuNDA1IDg1LjEyNzMgNjM3LjI5NyA4NS41Mzg4IDYzNy45ODIg'@; put 'ODYuMzYxOEM2MzguNjY4IDg3LjA0NzYgNjM5LjAxMSA4Ny45MzkxIDYzOS4wMTEgODkuMDM2NVYxMDQuMjYyQzYzOS4wMTEgMTA1LjM1OSA2MzguNjY4IDEwNi4yNSA2MzcuOTgyIDEwNi45MzZDNjM3LjI5NyAxMDcuNjIyIDYzNi40MDUgMTA3Ljk2NSA2MzUuMzA4IDEwNy45NjVINjE3LjIw'@; put 'MlYxODQuMDkxQzYxNy4yMDIgMTg2LjY5NyA2MTUuODk5IDE4OCA2MTMuMjkzIDE4OEg1OTcuMjQ1QzU5Ni4xNDggMTg4IDU5NS4xODcgMTg3LjY1NyA1OTQuMzY0IDE4Ni45NzFDNTkzLjY3OSAxODYuMTQ4IDU5My4zMzYgMTg1LjE4OCA1OTMuMzM2IDE4NC4wOTFWMTA3Ljk2NUg1NzguMTEx'@; put 'QzU3Ny4wMTMgMTA3Ljk2NSA1NzYuMTIyIDEwNy42MjIgNTc1LjQzNiAxMDYuOTM2QzU3NC43NSAxMDYuMjUgNTc0LjQwNyAxMDUuMzU5IDU3NC40MDcgMTA0LjI2MlY4OS4wMzY1Wk03MjkuNjkzIDE3Ny45MThDNzI1Ljk5IDE4MC42NjIgNzIxLjczOCAxODMuMTMxIDcxNi45MzcgMTg1LjMy'@; put 'NUM3MTIuMTM3IDE4Ny4zODMgNzA3LjMzNiAxODguNDExIDcwMi41MzUgMTg4LjQxMUM2OTUuNDAzIDE4OC40MTEgNjg4LjgxOSAxODcuMTA4IDY4Mi43ODQgMTg0LjUwMkM2NzYuNzQ4IDE4MS44OTYgNjcxLjUzNiAxNzguMjYxIDY2Ny4xNDcgMTczLjU5OEM2NjIuODk1IDE2OC45MzQgNjU5'@; put 'LjUzNCAxNjMuNDQ4IDY1Ny4wNjUgMTU3LjEzOEM2NTQuNTk2IDE1MC44MjkgNjUzLjM2MiAxNDMuOTcgNjUzLjM2MiAxMzYuNTY0QzY1My4zNjIgMTI5LjQzMSA2NTQuNjY1IDEyMi43NzkgNjU3LjI3MSAxMTYuNjA2QzY1OS44NzcgMTEwLjI5NyA2NjMuNDQzIDEwNC44MSA2NjcuOTcgMTAw'@; put 'LjE0N0M2NzIuNDk2IDk1LjM0NiA2NzcuNzA4IDkxLjU3NCA2ODMuNjA3IDg4LjgzMDdDNjg5LjY0MiA4Ni4wODc0IDY5Ni4wODggODQuNzE1OCA3MDIuOTQ3IDg0LjcxNThDNzA3Ljc0NyA4NC43MTU4IDcxMi40NzkgODUuODEzMSA3MTcuMTQzIDg4LjAwNzdDNzIxLjgwNyA5MC4wNjUyIDcy'@; put 'NS45OSA5Mi40NjU1IDcyOS42OTMgOTUuMjA4OFY4OS4wMzY1QzcyOS42OTMgODcuOTM5MSA3MzAuMDM2IDg3LjA0NzYgNzMwLjcyMiA4Ni4zNjE4QzczMS41NDUgODUuNTM4OCA3MzIuNTA1IDg1LjEyNzMgNzMzLjYwMyA4NS4xMjczSDc0OS42NTFDNzUyLjI1NyA4NS4xMjczIDc1My41NiA4'@; put 'Ni40MzAzIDc1My41NiA4OS4wMzY1VjE4NC4wOTFDNzUzLjU2IDE4Ni42OTcgNzUyLjI1NyAxODggNzQ5LjY1MSAxODhINzMzLjYwM0M3MzIuNTA1IDE4OCA3MzEuNTQ1IDE4Ny42NTcgNzMwLjcyMiAxODYuOTcxQzczMC4wMzYgMTg2LjE0OCA3MjkuNjkzIDE4NS4xODggNzI5LjY5MyAxODQu'@; put 'MDkxVjE3Ny45MThaTTY3OC4yNTcgMTM2LjU2NEM2NzguMjU3IDE0MC4yNjcgNjc4Ljk0MyAxNDMuNzY1IDY4MC4zMTUgMTQ3LjA1N0M2ODEuNjg2IDE1MC4yMTEgNjgzLjUzOCAxNTMuMDIzIDY4NS44NyAxNTUuNDkyQzY4OC4yMDEgMTU3Ljk2MSA2OTAuODc2IDE1OS45NSA2OTMuODk0IDE2'@; put 'MS40NTlDNjk3LjA0OSAxNjIuODMgNzAwLjM0IDE2My41MTYgNzAzLjc3IDE2My41MTZDNzA3LjQ3MyAxNjMuNTE2IDcxMC44MzMgMTYyLjgzIDcxMy44NTEgMTYxLjQ1OUM3MTYuODY5IDE1OS45NSA3MTkuNDc1IDE1Ny45NjEgNzIxLjY2OSAxNTUuNDkyQzcyNC4wMDEgMTUzLjAyMyA3MjUu'@; put 'Nzg0IDE1MC4yMTEgNzI3LjAxOSAxNDcuMDU3QzcyOC4yNTMgMTQzLjc2NSA3MjguODcgMTQwLjI2NyA3MjguODcgMTM2LjU2NEM3MjguODcgMTMyLjg2IDcyOC4yNTMgMTI5LjQzMSA3MjcuMDE5IDEyNi4yNzZDNzI1Ljc4NCAxMjIuOTg0IDcyNC4wMDEgMTIwLjEwNCA3MjEuNjY5IDExNy42'@; put 'MzVDNzE5LjQ3NSAxMTUuMTY2IDcxNi44NjkgMTEzLjI0NiA3MTMuODUxIDExMS44NzRDNzEwLjgzMyAxMTAuMzY1IDcwNy40NzMgMTA5LjYxMSA3MDMuNzcgMTA5LjYxMUM3MDAuMzQgMTA5LjYxMSA2OTcuMDQ5IDExMC4zNjUgNjkzLjg5NCAxMTEuODc0QzY5MC44NzYgMTEzLjI0NiA2ODgu'@; put 'MjAxIDExNS4xNjYgNjg1Ljg3IDExNy42MzVDNjgzLjUzOCAxMjAuMTA0IDY4MS42ODYgMTIyLjk4NCA2ODAuMzE1IDEyNi4yNzZDNjc4Ljk0MyAxMjkuNDMxIDY3OC4yNTcgMTMyLjg2IDY3OC4yNTcgMTM2LjU2NFoiIGZpbGw9IiNFMEUwRTAiLz4KPHBhdGggZD0iTTg3My4yMDYgNzQuMjIy'@; put 'OEM4NzIuNjU3IDc1LjA0NTggODcxLjkwMyA3NS41MjU4IDg3MC45NDMgNzUuNjYzQzg2OS45ODIgNzUuODAwMiA4NjkuMDIyIDc1LjU5NDQgODY4LjA2MiA3NS4wNDU4Qzg2NC45MDcgNzMuMTI1NSA4NjEuMTM1IDcxLjQ3OTUgODU2Ljc0NiA3MC4xMDc5Qzg1Mi4zNTcgNjguNzM2MiA4NDcu'@; put 'ODk5IDY4LjExOSA4NDMuMzczIDY4LjI1NjJDODM3LjQ3NSA2OC4yNTYyIDgzMS45ODggNjkuNTU5MiA4MjYuOTEzIDcyLjE2NTNDODIxLjk3NSA3NC42MzQzIDgxNy42NTQgNzguMDYzNCA4MTMuOTUxIDgyLjQ1MjZDODEwLjI0OCA4Ni43MDQ3IDgwNy4zNjcgOTEuNzExMSA4MDUuMzEgOTcu'@; put 'NDcyQzgwMy4yNTIgMTAzLjIzMyA4MDIuMjkyIDEwOS40MDUgODAyLjQyOSAxMTUuOTg5QzgwMi41NjYgMTIyLjg0NyA4MDMuNTk1IDEyOS4yMjUgODA1LjUxNSAxMzUuMTIzQzgwNy41NzMgMTQwLjg4NCA4MTAuMzg1IDE0NS44OTEgODEzLjk1MSAxNTAuMTQzQzgxNy41MTcgMTU0LjM5NSA4'@; put 'MjEuODM4IDE1Ny43NTUgODI2LjkxMyAxNjAuMjI0QzgzMS45ODggMTYyLjU1NiA4MzcuNjggMTYzLjcyMiA4NDMuOTkgMTYzLjcyMkM4NTAuMDI1IDE2My41ODUgODU1LjUxMiAxNjIuNTU2IDg2MC40NSAxNjAuNjM2Qzg2NS41MjUgMTU4LjcxNiA4NzAuNTMxIDE1NS45NzIgODc1LjQ2OSAx'@; put 'NTIuNDA2Qzg3Ni40MjkgMTUxLjcyIDg3Ny40NTggMTUxLjUxNCA4NzguNTU1IDE1MS43ODlDODc5LjY1MiAxNTEuOTI2IDg4MC41NDQgMTUyLjQ3NSA4ODEuMjMgMTUzLjQzNUw4OTEuMTA2IDE2OC4yNDhDODkyLjM0IDE3MC4xNjkgODkxLjk5NyAxNzEuODgzIDg5MC4wNzcgMTczLjM5MkM4'@; put 'ODIuNTMzIDE3OS4xNTMgODc1LjE5NSAxODMuMzM2IDg2OC4wNjIgMTg1Ljk0M0M4NjAuOTMgMTg4LjU0OSA4NTIuOTc0IDE4OS44NTIgODQ0LjE5NiAxODkuODUyQzgzMy42MzQgMTg5Ljk4OSA4MjQuMTAxIDE4OC4zNDMgODE1LjU5NyAxODQuOTE0QzgwNy4yMyAxODEuMzQ4IDgwMC4wMjkg'@; put 'MTc2LjM0MSA3OTMuOTk0IDE2OS44OTRDNzg4LjA5NiAxNjMuMzExIDc4My41MDEgMTU1LjQ5MiA3ODAuMjA5IDE0Ni40MzlDNzc3LjA1NCAxMzcuMzg3IDc3NS40MDggMTI3LjM3NCA3NzUuMjcxIDExNi40MDFDNzc1LjEzNCAxMDcuMDczIDc3Ni41NzQgOTguMDIwNyA3NzkuNTkyIDg5LjI0'@; put 'MjJDNzgyLjc0NiA4MC4zMjY2IDc4Ny4yMDQgNzIuMzcxMSA3OTIuOTY1IDY1LjM3NTdDNzk4LjcyNiA1OC4zODA0IDgwNS43MjEgNTIuNzU2NyA4MTMuOTUxIDQ4LjUwNDZDODIyLjE4MSA0NC4yNTI1IDgzMS40MzkgNDIuMTI2NSA4NDEuNzI3IDQyLjEyNjVDODQ4LjcyMiA0MS45ODkzIDg1'@; put 'NS41OCA0Mi44MTIzIDg2Mi4zMDEgNDQuNTk1NEM4NjkuMTU5IDQ2LjM3ODYgODc1Ljg4IDQ5LjY3MDUgODgyLjQ2NCA1NC40NzEyQzg4My40MjQgNTUuMTU3IDg4My45NzMgNTYuMDQ4NiA4ODQuMTEgNTcuMTQ1OUM4ODQuMjQ3IDU4LjEwNjEgODgzLjk3MyA1OS4wNjYyIDg4My4yODcgNjAu'@; put 'MDI2M0w4NzMuMjA2IDc0LjIyMjhaTTkwNi4yMTIgMTM2LjU2NEM5MDYuMjEyIDEyOS4yOTQgOTA3LjUxNSAxMjIuNTA0IDkxMC4xMjEgMTE2LjE5NUM5MTIuNzI3IDEwOS44ODUgOTE2LjIyNSAxMDQuMzk5IDkyMC42MTQgOTkuNzM1MkM5MjUuMTQgOTUuMDcxNyA5MzAuNDIxIDkxLjQzNjgg'@; put 'OTM2LjQ1NiA4OC44MzA3Qzk0Mi40OTIgODYuMDg3NCA5NDkuMDA3IDg0LjcxNTggOTU2LjAwMiA4NC43MTU4Qzk2Mi45OTggODQuNzE1OCA5NjkuNDQ0IDg2LjA4NzQgOTc1LjM0MiA4OC44MzA3Qzk4MS4zNzcgOTEuNDM2OCA5ODYuNTkgOTUuMDcxNyA5OTAuOTc5IDk5LjczNTJDOTk1LjUw'@; put 'NSAxMDQuMzk5IDk5OS4wMDMgMTA5Ljg4NSAxMDAxLjQ3IDExNi4xOTVDMTAwNC4wOCAxMjIuNTA0IDEwMDUuMzggMTI5LjI5NCAxMDA1LjM4IDEzNi41NjRDMTAwNS4zOCAxNDMuODMzIDEwMDQuMDggMTUwLjYyMyAxMDAxLjQ3IDE1Ni45MzJDOTk5LjAwMyAxNjMuMjQyIDk5NS41MDUgMTY4'@; put 'LjcyOSA5OTAuOTc5IDE3My4zOTJDOTg2LjU5IDE3OC4wNTYgOTgxLjM3NyAxODEuNzU5IDk3NS4zNDIgMTg0LjUwMkM5NjkuMzA3IDE4Ny4xMDggOTYyLjc5MiAxODguNDExIDk1NS43OTYgMTg4LjQxMUM5NDguODAxIDE4OC40MTEgOTQyLjI4NiAxODcuMTA4IDkzNi4yNTEgMTg0LjUwMkM5'@; put 'MzAuMjE1IDE4MS43NTkgOTI0LjkzNSAxNzguMDU2IDkyMC40MDggMTczLjM5MkM5MTYuMDE5IDE2OC43MjkgOTEyLjUyMSAxNjMuMjQyIDkwOS45MTUgMTU2LjkzMkM5MDcuNDQ2IDE1MC42MjMgOTA2LjIxMiAxNDMuODMzIDkwNi4yMTIgMTM2LjU2NFpNOTMxLjEwNyAxMzYuNTY0QzkzMS4x'@; put 'MDcgMTQwLjQwNCA5MzEuNzI0IDE0NC4wMzkgOTMyLjk1OSAxNDcuNDY4QzkzNC4xOTMgMTUwLjc2IDkzNS45MDggMTUzLjY0MSA5MzguMTAyIDE1Ni4xMDlDOTQwLjI5NyAxNTguNTc4IDk0Mi45MDMgMTYwLjU2NyA5NDUuOTIxIDE2Mi4wNzZDOTQ4LjkzOCAxNjMuNDQ4IDk1Mi4yMyAxNjQu'@; put 'MTM0IDk1NS43OTYgMTY0LjEzNEM5NTkuMzYzIDE2NC4xMzQgOTYyLjY1NSAxNjMuNDQ4IDk2NS42NzIgMTYyLjA3NkM5NjguODI3IDE2MC41NjcgOTcxLjUwMiAxNTguNTc4IDk3My42OTYgMTU2LjEwOUM5NzUuODkxIDE1My42NDEgOTc3LjYwNSAxNTAuNzYgOTc4Ljg0IDE0Ny40NjhDOTgw'@; put 'LjA3NCAxNDQuMDM5IDk4MC42OTIgMTQwLjQwNCA5ODAuNjkyIDEzNi41NjRDOTgwLjY5MiAxMzIuNzIzIDk4MC4wNzQgMTI5LjE1NyA5NzguODQgMTI1Ljg2NUM5NzcuNjA1IDEyMi40MzYgOTc1Ljg5MSAxMTkuNDg3IDk3My42OTYgMTE3LjAxOEM5NzEuNTAyIDExNC41NDkgOTY4LjgyNyAx'@; put 'MTIuNjI5IDk2NS42NzIgMTExLjI1N0M5NjIuNjU1IDEwOS43NDggOTU5LjM2MyAxMDguOTk0IDk1NS43OTYgMTA4Ljk5NEM5NTIuMjMgMTA4Ljk5NCA5NDguOTM4IDEwOS43NDggOTQ1LjkyMSAxMTEuMjU3Qzk0Mi45MDMgMTEyLjYyOSA5NDAuMjk3IDExNC41NDkgOTM4LjEwMiAxMTcuMDE4'@; put 'QzkzNS45MDggMTE5LjQ4NyA5MzQuMTkzIDEyMi40MzYgOTMyLjk1OSAxMjUuODY1QzkzMS43MjQgMTI5LjE1NyA5MzEuMTA3IDEzMi43MjMgOTMxLjEwNyAxMzYuNTY0Wk0xMDUwLjkgMTg0LjA5MUMxMDUwLjkgMTg2LjY5NyAxMDQ5LjU5IDE4OCAxMDQ2Ljk5IDE4OEgxMDMwLjk0QzEwMjku'@; put 'ODQgMTg4IDEwMjguODggMTg3LjY1NyAxMDI4LjA2IDE4Ni45NzFDMTAyNy4zNyAxODYuMTQ4IDEwMjcuMDMgMTg1LjE4OCAxMDI3LjAzIDE4NC4wOTFWODkuMDM2NUMxMDI3LjAzIDg3LjkzOTEgMTAyNy4zNyA4Ny4wNDc2IDEwMjguMDYgODYuMzYxOEMxMDI4Ljg4IDg1LjUzODggMTAyOS44'@; put 'NCA4NS4xMjczIDEwMzAuOTQgODUuMTI3M0gxMDQ2Ljk5QzEwNDkuNTkgODUuMTI3MyAxMDUwLjkgODYuNDMwMyAxMDUwLjkgODkuMDM2NVY5Ni42NDlDMTA1NC44OCA5My4zNTcxIDEwNTkuNDcgOTAuNTQ1MyAxMDY0LjY4IDg4LjIxMzVDMTA2OS44OSA4NS44ODE3IDEwNzUuMDQgODQuNzE1'@; put 'OCAxMDgwLjExIDg0LjcxNThDMTA4NC45MSA4NC43MTU4IDEwODkuMzcgODUuNjA3NCAxMDkzLjQ5IDg3LjM5MDVDMTA5Ny42IDg5LjAzNjUgMTEwMS4xIDkxLjQzNjggMTEwMy45OCA5NC41OTE2QzExMDcgOTcuNjA5MiAxMTA5LjMzIDEwMS4xNzUgMTExMC45OCAxMDUuMjlDMTExMi42MiAx'@; put 'MDkuNDA1IDExMTMuNDQgMTEzLjkzMiAxMTEzLjQ0IDExOC44N1YxODQuMDkxQzExMTMuNDQgMTg2LjY5NyAxMTEyLjE0IDE4OCAxMTA5LjUzIDE4OEgxMDkzLjQ5QzEwOTIuMzkgMTg4IDEwOTEuNDMgMTg3LjY1NyAxMDkwLjYxIDE4Ni45NzFDMTA4OS45MiAxODYuMTQ4IDEwODkuNTggMTg1'@; put 'LjE4OCAxMDg5LjU4IDE4NC4wOTFWMTI2LjY4OEMxMDg5LjU4IDEyMS4wNjQgMTA4OC4yNyAxMTYuNzQ0IDEwODUuNjcgMTEzLjcyNkMxMDgzLjA2IDExMC41NzEgMTA3OS4zNiAxMDguOTk0IDEwNzQuNTYgMTA4Ljk5NEMxMDcxLjU0IDEwOC45OTQgMTA2OC41OSAxMDkuNjExIDEwNjUuNzEg'@; put 'MTEwLjg0NUMxMDYyLjk3IDExMS45NDMgMTA2MC41IDExMy41MiAxMDU4LjMgMTE1LjU3OEMxMDU2LjI1IDExNy40OTggMTA1NC41MyAxMTkuODMgMTA1My4xNiAxMjIuNTczQzEwNTEuOTMgMTI1LjMxNiAxMDUxLjMxIDEyOC4xOTcgMTA1MS4zMSAxMzEuMjE0TDEwNTAuOSAxODQuMDkxWk0x'@; put 'MTI3Ljg3IDg5LjAzNjVDMTEyNy44NyA4Ny45MzkxIDExMjguMjEgODcuMDQ3NiAxMTI4LjkgODYuMzYxOEMxMTI5LjU4IDg1LjUzODggMTEzMC40OCA4NS4xMjczIDExMzEuNTcgODUuMTI3M0gxMTQ2LjhWNTguMTc0NkMxMTQ2LjggNTcuMDc3MyAxMTQ3LjE0IDU2LjE4NTggMTE0Ny44MyA1'@; put 'NS40OTk5QzExNDguNjUgNTQuNjc3IDExNDkuNjEgNTQuMjY1NSAxMTUwLjcxIDU0LjI2NTVIMTE2Ni43NkMxMTY5LjM2IDU0LjI2NTUgMTE3MC42NyA1NS41Njg1IDExNzAuNjcgNTguMTc0NlY4NS4xMjczSDExODguNzdDMTE4OS44NyA4NS4xMjczIDExOTAuNzYgODUuNTM4OCAxMTkxLjQ1'@; put 'IDg2LjM2MThDMTE5Mi4xMyA4Ny4wNDc2IDExOTIuNDcgODcuOTM5MSAxMTkyLjQ3IDg5LjAzNjVWMTA0LjI2MkMxMTkyLjQ3IDEwNS4zNTkgMTE5Mi4xMyAxMDYuMjUgMTE5MS40NSAxMDYuOTM2QzExOTAuNzYgMTA3LjYyMiAxMTg5Ljg3IDEwNy45NjUgMTE4OC43NyAxMDcuOTY1SDExNzAu'@; put 'NjdWMTg0LjA5MUMxMTcwLjY3IDE4Ni42OTcgMTE2OS4zNiAxODggMTE2Ni43NiAxODhIMTE1MC43MUMxMTQ5LjYxIDE4OCAxMTQ4LjY1IDE4Ny42NTcgMTE0Ny44MyAxODYuOTcxQzExNDcuMTQgMTg2LjE0OCAxMTQ2LjggMTg1LjE4OCAxMTQ2LjggMTg0LjA5MVYxMDcuOTY1SDExMzEuNTdD'@; put 'MTEzMC40OCAxMDcuOTY1IDExMjkuNTggMTA3LjYyMiAxMTI4LjkgMTA2LjkzNkMxMTI4LjIxIDEwNi4yNSAxMTI3Ljg3IDEwNS4zNTkgMTEyNy44NyAxMDQuMjYyVjg5LjAzNjVaTTEyNzMuMjggMTA4LjE3MUMxMjcyLjg3IDEwOS4yNjggMTI3Mi4xOCAxMTAuMDIyIDEyNzEuMjIgMTEwLjQz'@; put 'NEMxMjcwLjI2IDExMC44NDUgMTI2OS4yMyAxMTAuNzc3IDEyNjguMTQgMTEwLjIyOEMxMjY3LjA0IDEwOS42OCAxMjY1LjY3IDEwOS4yIDEyNjQuMDIgMTA4Ljc4OEMxMjYyLjUxIDEwOC4zNzcgMTI2MC44NyAxMDguMTcxIDEyNTkuMDggMTA4LjE3MUMxMjU2LjA3IDEwOC4xNzEgMTI1My4x'@; put 'OSAxMDguNzg4IDEyNTAuNDQgMTEwLjAyMkMxMjQ3LjcgMTExLjI1NyAxMjQ1LjIzIDExMi45NzIgMTI0My4wNCAxMTUuMTY2QzEyNDAuOTggMTE3LjIyNCAxMjM5LjMzIDExOS42OTMgMTIzOC4xIDEyMi41NzNDMTIzNi44NiAxMjUuMzE2IDEyMzYuMjUgMTI4LjE5NyAxMjM2LjI1IDEzMS4y'@; put 'MTRMMTIzNS44NCAxODQuMDkxQzEyMzUuODQgMTg1LjE4OCAxMjM1LjQ5IDE4Ni4xNDggMTIzNC44MSAxODYuOTcxQzEyMzQuMTIgMTg3LjY1NyAxMjMzLjIzIDE4OCAxMjMyLjEzIDE4OEgxMjE1Ljg4QzEyMTQuNzggMTg4IDEyMTMuODIgMTg3LjY1NyAxMjEzIDE4Ni45NzFDMTIxMi4zMSAx'@; put 'ODYuMTQ4IDEyMTEuOTcgMTg1LjE4OCAxMjExLjk3IDE4NC4wOTFWODkuMDM2NUMxMjExLjk3IDg3LjkzOTEgMTIxMi4zMSA4Ny4wNDc2IDEyMTMgODYuMzYxOEMxMjEzLjgyIDg1LjUzODggMTIxNC43OCA4NS4xMjczIDEyMTUuODggODUuMTI3M0gxMjMyLjEzQzEyMzMuMjMgODUuMTI3MyAx'@; put 'MjM0LjEyIDg1LjUzODggMTIzNC44MSA4Ni4zNjE4QzEyMzUuNDkgODcuMDQ3NiAxMjM1Ljg0IDg3LjkzOTEgMTIzNS44NCA4OS4wMzY1Vjk0LjU5MTZDMTIzOS44MSA5MS43MTExIDEyNDQuMDcgODkuMzc5NCAxMjQ4LjU5IDg3LjU5NjJDMTI1My4xMiA4NS42NzU5IDEyNTcuOTkgODQuNzE1'@; put 'OCAxMjYzLjIgODQuNzE1OEMxMjY4LjU1IDg0LjcxNTggMTI3My4yMSA4NS43NDQ1IDEyNzcuMTkgODcuODAyQzEyNzkuMTEgODkuMDM2NSAxMjc5LjczIDkwLjYxMzggMTI3OS4wNCA5Mi41MzQxTDEyNzMuMjggMTA4LjE3MVpNMTI4NS4zMyAxMzYuNTY0QzEyODUuMzMgMTI5LjI5NCAxMjg2'@; put 'LjYzIDEyMi41MDQgMTI4OS4yNCAxMTYuMTk1QzEyOTEuODUgMTA5Ljg4NSAxMjk1LjM0IDEwNC4zOTkgMTI5OS43MyA5OS43MzUyQzEzMDQuMjYgOTUuMDcxNyAxMzA5LjU0IDkxLjQzNjggMTMxNS41NyA4OC44MzA3QzEzMjEuNjEgODYuMDg3NCAxMzI4LjEyIDg0LjcxNTggMTMzNS4xMiA4'@; put 'NC43MTU4QzEzNDIuMTIgODQuNzE1OCAxMzQ4LjU2IDg2LjA4NzQgMTM1NC40NiA4OC44MzA3QzEzNjAuNSA5MS40MzY4IDEzNjUuNzEgOTUuMDcxNyAxMzcwLjEgOTkuNzM1MkMxMzc0LjYyIDEwNC4zOTkgMTM3OC4xMiAxMDkuODg1IDEzODAuNTkgMTE2LjE5NUMxMzgzLjIgMTIyLjUwNCAx'@; put 'Mzg0LjUgMTI5LjI5NCAxMzg0LjUgMTM2LjU2NEMxMzg0LjUgMTQzLjgzMyAxMzgzLjIgMTUwLjYyMyAxMzgwLjU5IDE1Ni45MzJDMTM3OC4xMiAxNjMuMjQyIDEzNzQuNjIgMTY4LjcyOSAxMzcwLjEgMTczLjM5MkMxMzY1LjcxIDE3OC4wNTYgMTM2MC41IDE4MS43NTkgMTM1NC40NiAxODQu'@; put 'NTAyQzEzNDguNDMgMTg3LjEwOCAxMzQxLjkxIDE4OC40MTEgMTMzNC45MSAxODguNDExQzEzMjcuOTIgMTg4LjQxMSAxMzIxLjQgMTg3LjEwOCAxMzE1LjM3IDE4NC41MDJDMTMwOS4zMyAxODEuNzU5IDEzMDQuMDUgMTc4LjA1NiAxMjk5LjUzIDE3My4zOTJDMTI5NS4xNCAxNjguNzI5IDEy'@; put 'OTEuNjQgMTYzLjI0MiAxMjg5LjAzIDE1Ni45MzJDMTI4Ni41NiAxNTAuNjIzIDEyODUuMzMgMTQzLjgzMyAxMjg1LjMzIDEzNi41NjRaTTEzMTAuMjMgMTM2LjU2NEMxMzEwLjIzIDE0MC40MDQgMTMxMC44NCAxNDQuMDM5IDEzMTIuMDggMTQ3LjQ2OEMxMzEzLjMxIDE1MC43NiAxMzE1LjAz'@; put 'IDE1My42NDEgMTMxNy4yMiAxNTYuMTA5QzEzMTkuNDIgMTU4LjU3OCAxMzIyLjAyIDE2MC41NjcgMTMyNS4wNCAxNjIuMDc2QzEzMjguMDYgMTYzLjQ0OCAxMzMxLjM1IDE2NC4xMzQgMTMzNC45MSAxNjQuMTM0QzEzMzguNDggMTY0LjEzNCAxMzQxLjc3IDE2My40NDggMTM0NC43OSAxNjIu'@; put 'MDc2QzEzNDcuOTUgMTYwLjU2NyAxMzUwLjYyIDE1OC41NzggMTM1Mi44MSAxNTYuMTA5QzEzNTUuMDEgMTUzLjY0MSAxMzU2LjcyIDE1MC43NiAxMzU3Ljk2IDE0Ny40NjhDMTM1OS4xOSAxNDQuMDM5IDEzNTkuODEgMTQwLjQwNCAxMzU5LjgxIDEzNi41NjRDMTM1OS44MSAxMzIuNzIzIDEz'@; put 'NTkuMTkgMTI5LjE1NyAxMzU3Ljk2IDEyNS44NjVDMTM1Ni43MiAxMjIuNDM2IDEzNTUuMDEgMTE5LjQ4NyAxMzUyLjgxIDExNy4wMThDMTM1MC42MiAxMTQuNTQ5IDEzNDcuOTUgMTEyLjYyOSAxMzQ0Ljc5IDExMS4yNTdDMTM0MS43NyAxMDkuNzQ4IDEzMzguNDggMTA4Ljk5NCAxMzM0Ljkx'@; put 'IDEwOC45OTRDMTMzMS4zNSAxMDguOTk0IDEzMjguMDYgMTA5Ljc0OCAxMzI1LjA0IDExMS4yNTdDMTMyMi4wMiAxMTIuNjI5IDEzMTkuNDIgMTE0LjU0OSAxMzE3LjIyIDExNy4wMThDMTMxNS4wMyAxMTkuNDg3IDEzMTMuMzEgMTIyLjQzNiAxMzEyLjA4IDEyNS44NjVDMTMxMC44NCAxMjku'@; put 'MTU3IDEzMTAuMjMgMTMyLjcyMyAxMzEwLjIzIDEzNi41NjRaTTE0MDguMjEgMzcuMzk0NEMxNDA4LjIxIDM2LjI5NyAxNDA4LjU1IDM1LjQwNTUgMTQwOS4yNCAzNC43MTk3QzE0MTAuMDYgMzQuMDMzOCAxNDExLjAyIDMzLjY5MDkgMTQxMi4xMiAzMy42OTA5SDE0MjguMTZDMTQyOS4yNiAz'@; put 'My42OTA5IDE0MzAuMTUgMzQuMDMzOCAxNDMwLjg0IDM0LjcxOTdDMTQzMS42NiAzNS40MDU1IDE0MzIuMDcgMzYuMjk3IDE0MzIuMDcgMzcuMzk0NFYxODQuMDkxQzE0MzIuMDcgMTg2LjY5NyAxNDMwLjc3IDE4OCAxNDI4LjE2IDE4OEgxNDEyLjEyQzE0MTEuMDIgMTg4IDE0MTAuMDYgMTg3'@; put 'LjY1NyAxNDA5LjI0IDE4Ni45NzFDMTQwOC41NSAxODYuMTQ4IDE0MDguMjEgMTg1LjE4OCAxNDA4LjIxIDE4NC4wOTFWMzcuMzk0NFpNMTQ2MyAzNy4zOTQ0QzE0NjMgMzYuMjk3IDE0NjMuMzUgMzUuNDA1NSAxNDY0LjAzIDM0LjcxOTdDMTQ2NC44NSAzNC4wMzM4IDE0NjUuODEgMzMuNjkw'@; put 'OSAxNDY2LjkxIDMzLjY5MDlIMTQ4Mi45NkMxNDg0LjA2IDMzLjY5MDkgMTQ4NC45NSAzNC4wMzM4IDE0ODUuNjMgMzQuNzE5N0MxNDg2LjQ2IDM1LjQwNTUgMTQ4Ni44NyAzNi4yOTcgMTQ4Ni44NyAzNy4zOTQ0VjE4NC4wOTFDMTQ4Ni44NyAxODYuNjk3IDE0ODUuNTcgMTg4IDE0ODIuOTYg'@; put 'MTg4SDE0NjYuOTFDMTQ2NS44MSAxODggMTQ2NC44NSAxODcuNjU3IDE0NjQuMDMgMTg2Ljk3MUMxNDYzLjM1IDE4Ni4xNDggMTQ2MyAxODUuMTg4IDE0NjMgMTg0LjA5MVYzNy4zOTQ0Wk0xNTM3Ljc2IDE0OC4wODVDMTUzOS42OCAxNTIuODg2IDE1NDIuNTYgMTU2Ljc5NSAxNTQ2LjQgMTU5'@; put 'LjgxM0MxNTUwLjM3IDE2Mi44MyAxNTU0LjkgMTY0LjMzOSAxNTU5Ljk4IDE2NC4zMzlDMTU2My42OCAxNjQuMzM5IDE1NjcuMjUgMTYzLjcyMiAxNTcwLjY3IDE2Mi40ODhDMTU3NC4xIDE2MS4yNTMgMTU3Ni45OCAxNTkuNTM5IDE1NzkuMzIgMTU3LjM0NEMxNTgwLjE0IDE1Ni42NTggMTU4'@; put 'MS4wMyAxNTYuMzg0IDE1ODEuOTkgMTU2LjUyMUMxNTgzLjA5IDE1Ni41MjEgMTU4My45OCAxNTYuODY0IDE1ODQuNjcgMTU3LjU1TDE1OTYuMzkgMTY4LjY2QzE1OTcuMDggMTY5LjM0NiAxNTk3LjQyIDE3MC4yMzcgMTU5Ny40MiAxNzEuMzM1QzE1OTcuNDIgMTcyLjI5NSAxNTk3LjA4IDE3'@; put 'My4xMTggMTU5Ni4zOSAxNzMuODA0QzE1OTEuODcgMTc4LjYwNCAxNTg2LjUyIDE4Mi4yMzkgMTU4MC4zNCAxODQuNzA4QzE1NzQuMTcgMTg3LjE3NyAxNTY3LjM4IDE4OC40MTEgMTU1OS45OCAxODguNDExQzE1NTMuMTIgMTg4LjQxMSAxNTQ2Ljc0IDE4Ny4xNzcgMTU0MC44NCAxODQuNzA4'@; put 'QzE1MzUuMDggMTgyLjIzOSAxNTMwLjAxIDE3OC43NDEgMTUyNS42MiAxNzQuMjE1QzE1MjAuODIgMTY5LjQxNCAxNTE3LjExIDE2My43MjIgMTUxNC41MSAxNTcuMTM4QzE1MTEuOSAxNTAuNTU0IDE1MTAuNiAxNDMuNTU5IDE1MTAuNiAxMzYuMTUyQzE1MTAuNiAxMjkuMDIgMTUxMS45IDEy'@; put 'Mi4zNjcgMTUxNC41MSAxMTYuMTk1QzE1MTcuMTEgMTA5Ljg4NSAxNTIwLjYxIDEwNC4zOTkgMTUyNSA5OS43MzUyQzE1MjkuNTMgOTUuMDcxNyAxNTM0LjgxIDkxLjQzNjggMTU0MC44NCA4OC44MzA3QzE1NDYuODggODYuMDg3NCAxNTUzLjMyIDg0LjcxNTggMTU2MC4xOCA4NC43MTU4QzE1'@; put 'NjYuNDkgODQuNzE1OCAxNTcyLjMyIDg1Ljg4MTcgMTU3Ny42NyA4OC4yMTM1QzE1ODMuMTYgOTAuNTQ1MyAxNTg3Ljk2IDkzLjc2ODYgMTU5Mi4wNyA5Ny44ODM1QzE1OTMuODYgOTkuNTI5NSAxNTk1LjU3IDEwMS40NSAxNTk3LjIyIDEwMy42NDRDMTU5OC44NiAxMDUuODM5IDE2MDAuMyAx'@; put 'MDguMzc3IDE2MDEuNTQgMTExLjI1N0MxNjAyLjc3IDExNC4xMzcgMTYwMy43MyAxMTcuNDk4IDE2MDQuNDIgMTIxLjMzOEMxNjA1LjI0IDEyNS4wNDIgMTYwNS42NSAxMjkuMjk0IDE2MDUuNjUgMTM0LjA5NUMxNjA1LjY1IDEzNy4zODcgMTYwNS40NSAxNDAuOTUzIDE2MDUuMDMgMTQ0Ljc5'@; put 'M0MxNjA0Ljc2IDE0Ni45ODggMTYwMy41MyAxNDguMDg1IDE2MDEuMzMgMTQ4LjA4NUgxNTM3Ljc2Wk0xNTU5LjU2IDEwOC43ODhDMTU1My44IDEwOC43ODggMTU0OS4wNyAxMTAuMzY1IDE1NDUuMzcgMTEzLjUyQzE1NDEuNjYgMTE2LjY3NSAxNTM5LjA2IDEyMC41ODQgMTUzNy41NSAxMjUu'@; put 'MjQ4SDE1ODAuNzZDMTU3OS4yNSAxMjAuODU4IDE1NzYuNzEgMTE3LjAxOCAxNTczLjE0IDExMy43MjZDMTU2OS43MSAxMTAuNDM0IDE1NjUuMTkgMTA4Ljc4OCAxNTU5LjU2IDEwOC43ODhaTTE2ODguNTEgMTA4LjE3MUMxNjg4LjEgMTA5LjI2OCAxNjg3LjQxIDExMC4wMjIgMTY4Ni40NSAx'@; put 'MTAuNDM0QzE2ODUuNDkgMTEwLjg0NSAxNjg0LjQ2IDExMC43NzcgMTY4My4zNyAxMTAuMjI4QzE2ODIuMjcgMTA5LjY4IDE2ODAuOSAxMDkuMiAxNjc5LjI1IDEwOC43ODhDMTY3Ny43NCAxMDguMzc3IDE2NzYuMSAxMDguMTcxIDE2NzQuMzEgMTA4LjE3MUMxNjcxLjI5IDEwOC4xNzEgMTY2'@; put 'OC40MSAxMDguNzg4IDE2NjUuNjcgMTEwLjAyMkMxNjYyLjkzIDExMS4yNTcgMTY2MC40NiAxMTIuOTcyIDE2NTguMjYgMTE1LjE2NkMxNjU2LjIxIDExNy4yMjQgMTY1NC41NiAxMTkuNjkzIDE2NTMuMzMgMTIyLjU3M0MxNjUyLjA5IDEyNS4zMTYgMTY1MS40NyAxMjguMTk3IDE2NTEuNDcg'@; put 'MTMxLjIxNEwxNjUxLjA2IDE4NC4wOTFDMTY1MS4wNiAxODUuMTg4IDE2NTAuNzIgMTg2LjE0OCAxNjUwLjAzIDE4Ni45NzFDMTY0OS4zNSAxODcuNjU3IDE2NDguNDYgMTg4IDE2NDcuMzYgMTg4SDE2MzEuMTFDMTYzMC4wMSAxODggMTYyOS4wNSAxODcuNjU3IDE2MjguMjMgMTg2Ljk3MUMx'@; put 'NjI3LjU0IDE4Ni4xNDggMTYyNy4yIDE4NS4xODggMTYyNy4yIDE4NC4wOTFWODkuMDM2NUMxNjI3LjIgODcuOTM5MSAxNjI3LjU0IDg3LjA0NzYgMTYyOC4yMyA4Ni4zNjE4QzE2MjkuMDUgODUuNTM4OCAxNjMwLjAxIDg1LjEyNzMgMTYzMS4xMSA4NS4xMjczSDE2NDcuMzZDMTY0OC40NiA4'@; put 'NS4xMjczIDE2NDkuMzUgODUuNTM4OCAxNjUwLjAzIDg2LjM2MThDMTY1MC43MiA4Ny4wNDc2IDE2NTEuMDYgODcuOTM5MSAxNjUxLjA2IDg5LjAzNjVWOTQuNTkxNkMxNjU1LjA0IDkxLjcxMTEgMTY1OS4yOSA4OS4zNzk0IDE2NjMuODIgODcuNTk2MkMxNjY4LjM1IDg1LjY3NTkgMTY3My4y'@; put 'MiA4NC43MTU4IDE2NzguNDMgODQuNzE1OEMxNjgzLjc4IDg0LjcxNTggMTY4OC40NCA4NS43NDQ1IDE2OTIuNDIgODcuODAyQzE2OTQuMzQgODkuMDM2NSAxNjk0Ljk2IDkwLjYxMzggMTY5NC4yNyA5Mi41MzQxTDE2ODguNTEgMTA4LjE3MVoiIGZpbGw9IiM4RUM2M0YiLz4KPC9nPgo8ZGVm'@; put 'cz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDVfNyI+CjxyZWN0IHdpZHRoPSIxNjg5IiBoZWlnaHQ9IjI0MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=dc-logo.svg; filename filecode temp lrecl=32767; data _null_; file filecode; put 'PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHZpZXdCb3g9IjAgMCA3MCA3MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwMV84KSI+CjxwYXRoIGQ9Ik0zNy41OTkzIDE2LjYyMTJDMzguNTkxNiAx'@; put 'Ni43NDE1IDM5LjU1MzggMTYuODMxNyA0MC41NDYxIDE2Ljk1MTlDNDIuOTIxNiAxNy4yODI3IDQ1LjIzNyAxNy43MzM3IDQ3LjQwMiAxOC44NDYzQzQ4LjAzMzQgMTkuMTc3MSA0OC42MzQ4IDE5LjUzNzkgNDkuMDg1OSAyMC4xMDkyQzQ5LjgwNzUgMjAuOTUxMiA0OS43Nzc0IDIxLjg1MzMg'@; put 'NDkuMDU1OCAyMi42OTUyQzQ4LjMwNCAyMy41MzcxIDQ3LjM0MTggMjQuMDE4MyA0Ni4zMTk1IDI0LjQwOTJDNDMuOTQ0IDI1LjM0MTMgNDEuNDQ4MiAyNS43NjIzIDM4LjkyMjQgMjUuOTcyOEMzNC44MDI5IDI2LjMwMzUgMzAuNzQzNSAyNi4xNTMyIDI2LjcxNDIgMjUuMTkxQzI1LjM5MTEg'@; put 'MjQuODkwMyAyNC4wOTgxIDI0LjQ2OTMgMjIuOTI1NCAyMy44MDc4QzIyLjQ3NDQgMjMuNTY3MiAyMi4wNTM0IDIzLjI2NjUgMjEuNjYyNSAyMi45MDU3QzIwLjU4IDIxLjg1MzMgMjAuNTggMjAuNzQwNyAyMS42OTI2IDE5Ljc0ODRDMjIuODk1NCAxOC42NjU5IDI0LjM2ODggMTguMTU0NyAy'@; put 'NS44NzIyIDE3LjczMzdDMjcuOTc3MSAxNy4xMzI0IDMwLjExMiAxNi44MzE3IDMyLjI3NyAxNi42ODEzQzMyLjQ1NzUgMTYuNjgxMyAzMi42Njc5IDE2Ljc0MTUgMzIuODE4MyAxNi41OTExQzM0LjM4MTkgMTYuNjIxMiAzNi4wMDU2IDE2LjYyMTIgMzcuNTk5MyAxNi42MjEyWiIgZmlsbD0i'@; put 'I0UwRTBFMCIvPgo8cGF0aCBkPSJNMjAuODUwNyA0MS4zMDgyQzIyLjc3NTEgNDMuNzczOCAyNS41MTE1IDQ0LjY3NTkgMjguMzM4IDQ1LjI3NzNDMzMuOTMwOSA0Ni40ODAxIDM5LjUyMzggNDYuMzI5NyA0NC45NjYzIDQ0LjQwNTNDNDYuNjUwMiA0My44MDM5IDQ4LjIxMzggNDIuOTkyIDQ5'@; put 'LjMyNjQgNDEuNDg4NkM0OS41MDY4IDQxLjI0OCA0OS41OTcgNDEuMzY4MyA0OS42ODcyIDQxLjU0ODdDNDkuODY3NyA0MS45Mzk2IDQ5Ljk1NzkgNDIuMzMwNSA0OS45NTc5IDQyLjc1MTVDNDkuOTU3OSA0NC4yMjQ5IDQ5Ljk1NzkgNDUuNzI4NCA0OS45NTc5IDQ3LjIwMThDNDkuOTU3OSA0'@; put 'OC4xNjQgNDkuNTA2OCA0OC45MTU3IDQ4Ljg0NTMgNDkuNTc3MkM0Ny40NjIxIDUwLjk2MDQgNDUuNzE4MSA1MS43MTIyIDQzLjg4MzggNTIuMjgzNUM0MC4xODUzIDUzLjQyNjEgMzYuMzk2NiA1My42NjY3IDMyLjU3NzcgNTMuMzk2MUMyOS43MjEyIDUzLjE4NTYgMjYuOTU0OCA1Mi42NDQz'@; put 'IDI0LjMzODcgNTEuNDcxNkMyMy4yMjYxIDUwLjk2MDQgMjIuMjAzOCA1MC4zNTkxIDIxLjM5MTkgNDkuNDI2OUMyMC43NjA1IDQ4LjcwNTIgMjAuNDI5NyA0Ny44OTM0IDIwLjQyOTcgNDYuOTMxMUMyMC40NTk4IDQ1LjU3OCAyMC40Mjk3IDQ0LjIyNDkgMjAuNDI5NyA0Mi44NzE4QzIwLjQy'@; put 'OTcgNDIuMzMwNSAyMC41MTk5IDQxLjgxOTMgMjAuODUwNyA0MS4zMDgyWiIgZmlsbD0iIzhFQzYzRiIvPgo8cGF0aCBkPSJNMjAuODgwNyAzMi4wMTY3QzIyLjQ3NDQgMzQuMTUxNiAyNC42OTk2IDM1LjA1MzcgMjcuMDc1IDM1LjY4NTJDMzIuNzU4MiAzNy4xODg2IDM4LjQ0MTMgMzcuMTU4'@; put 'NiA0NC4wNjQzIDM1LjQ3NDdDNDUuOTI4NiAzNC45MzM0IDQ3LjY3MjYgMzQuMTIxNiA0OS4wMjU4IDMyLjY0ODJDNDkuMjA2MiAzMi40Njc3IDQ5LjMyNjUgMzIuMDQ2OCA0OS41MzY5IDMyLjEwNjlDNDkuODM3NiAzMi4xOTcxIDQ5LjgzNzYgMzIuNjE4MSA0OS45Mjc4IDMyLjk0ODhDNTAu'@; put 'MDQ4MSAzMy40NiA0OS45ODggMzMuOTcxMiA0OS45ODggMzQuNDgyNEM0OS45ODggMzUuNTA0NyA0OS45NTc5IDM2LjQ5NyA0OS45ODggMzcuNTE5NEM1MC4wNDgxIDM4Ljc4MjMgNDkuNTM2OSAzOS43NzQ2IDQ4LjYwNDggNDAuNTg2NUM0Ny4xOTE1IDQxLjg0OTQgNDUuNDc3NiA0Mi42MDEx'@; put 'IDQzLjY0MzMgNDMuMDgyMkMzNy40NzkxIDQ0LjczNjEgMzEuMzQ0OSA0NC43MDYgMjUuMzAwOSA0Mi42MDExQzIzLjgyNzUgNDIuMDkgMjIuNDc0NCA0MS4zNjgzIDIxLjM5MTkgNDAuMTk1NkMyMC43MzA0IDM5LjQ3MzkgMjAuMzk5NyAzOC42MzIgMjAuMzk5NyAzNy42Mzk3QzIwLjQyOTcg'@; put 'MzYuMzE2NiAyMC4zOTk3IDM0Ljk2MzUgMjAuMzk5NyAzMy42NDA0QzIwLjQyOTcgMzMuMDk5MiAyMC41MTk5IDMyLjU1NzkgMjAuODgwNyAzMi4wMTY3WiIgZmlsbD0iI0UwRTBFMCIvPgo8cGF0aCBkPSJNMjAuODIwNyAyMy4wODYxQzIxLjI3MTcgMjQuNDA5MSAyMi4zNTQyIDI1LjAxMDUg'@; put 'MjMuNDk2OSAyNS41NTE3QzI1LjU0MTYgMjYuNTE0IDI3LjczNjYgMjYuOTY1IDI5LjkzMTcgMjcuMjM1N0MzNC4yOTE4IDI3Ljc3NjkgMzguNjUxOSAyNy43MTY4IDQyLjk1MTggMjYuODE0N0M0NC42OTU4IDI2LjQ1MzkgNDYuMzc5NyAyNS45NzI3IDQ3LjkxMzIgMjUuMDEwNUM0OC43ODUz'@; put 'IDI0LjQ2OTMgNDkuMjM2MyAyMy45NTgxIDQ5LjUzNyAyMy4xMTYxQzQ5LjgzNzcgMjMuNTM3MSA0OS45Mjc5IDIzLjk4ODIgNDkuOTI3OSAyNC40MzkyQzQ5LjkyNzkgMjUuOTQyNyA0OS45NTggMjcuNDE2MSA0OS45Mjc5IDI4LjkxOTVDNDkuODk3OCAzMC4xODI1IDQ5LjE3NjIgMzEuMDg0'@; put 'NSA0OC4yNDQgMzEuODM2M0M0Ni41IDMzLjIxOTUgNDQuNDU1MyAzMy45NDExIDQyLjMyMDMgMzQuNDIyM0MzNi42NjczIDM1LjY1NTEgMzEuMDc0NCAzNS41NjQ5IDI1LjU3MTcgMzMuNzAwNkMyNC4xMjgzIDMzLjIxOTUgMjIuNzQ1MSAzMi41Mjc5IDIxLjYzMjYgMzEuNDQ1NEMyMC43OTA2'@; put 'IDMwLjYzMzUgMjAuMzM5NiAyOS43MDE0IDIwLjM2OTYgMjguNDk4NkMyMC4zOTk3IDI3LjIwNTYgMjAuMzY5NiAyNS45MTI2IDIwLjM2OTYgMjQuNjE5NkMyMC40Mjk4IDI0LjA0ODMgMjAuNTIgMjMuNTY3MiAyMC44MjA3IDIzLjA4NjFaIiBmaWxsPSIjOEVDNjNGIi8+CjxwYXRoIGQ9Ik01'@; put 'NS4zNDAzIDYzLjQzOTNDNjAuMjQxNyA2My43MDk5IDYyLjg1NzcgNTcuNjk2IDU5LjMwOTUgNTQuMjk4MUM1NS41ODA5IDUwLjcxOTkgNDkuNDQ2NyA1NC4wNTc2IDUwLjQwOSA1OS4xMDkzQzI4LjI0NzggNzMuMjQxOSAtMC4yNTgwMzQgNTIuMTAzMSA3Ljg2MDcxIDI2LjQyMzhMMi4zODgw'@; put 'OCAyMi43NTUzQy05LjkxMDMzIDU1LjQ0MDggMjcuOTQ3MSA4My4wNzQ2IDU1LjM0MDMgNjMuNDM5M1pNNTMuNzc2NyA1Ni4zNzI5QzU2LjA2MiA1My45OTc0IDU5LjcwMDQgNTcuMzA1MSA1Ny41NjU1IDU5LjgwMDlDNTUuMzEwMyA2Mi40MTY5IDUxLjM0MTEgNTguODk4OCA1My43NzY3IDU2'@; put 'LjM3MjlaIiBmaWxsPSIjRTBFMEUwIi8+CjxwYXRoIGQ9Ik0xMC42MjcyIDE1LjI2ODFDMTQuMTQ1MyAxOC42MzU4IDE5Ljk0ODcgMTUuODY5NCAxOS42MTc5IDExLjA1ODNDNDEuNzQ5IC0zLjE5NDYxIDcwLjQwNTIgMTcuOTE0MiA2Mi4yODY1IDQzLjY4MzZMNjcuNzU5MSA0Ny4zNTIxQzc5'@; put 'LjY5NjcgMTUuNTk4OCA0My40NjMgLTEyLjk5NzIgMTUuNDM4MyA2LjIxNzE1QzEwLjE3NjEgNS4xMzQ2NSA2Ljc3ODI3IDExLjU2OTUgMTAuNjI3MiAxNS4yNjgxWk0xNi4xNTk5IDEzLjE5MzNDMTMuODE0NSAxNS42Mjg5IDEwLjExNiAxMi4wODA3IDEyLjQ2MTQgOS42NDUwN0MxNC44MDY4'@; put 'IDcuMjA5NDQgMTguNTA1NCAxMC43NTc2IDE2LjE1OTkgMTMuMTkzM1oiIGZpbGw9IiM4RUM2M0YiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDFfOCI+CjxyZWN0IHdpZHRoPSI3MCIgaGVpZ2h0PSI3MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8'@; put 'L3N2Zz4K'; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=favicon.ico; filename filecode temp lrecl=96132; data _null_; file filecode; put 'iVBORw0KGgoAAAANSUhEUgAAApgAAAJ6CAYAAACMvTJAAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUk8kWnr+kEBJaIAJSQm+CFOnSe0c62AhJgFAiJAQVO7Ko4FpQEQFR0RUQRdcCyKIidmUR7P1hQWVlXSzYUHmTArq+dt49Z/75cufeO9+d3JkzA4CiNSsnJwtVAiCbnyeICvBmJiQmMUmP'@; put 'AAY0AB0YAiUWW5jjFRkZCqCM9X+XdzcAIu6vWopj/ev4fxVlDlfIBgCJhDiFI2RnQ3wYAFydnSPIA4DQBfUGc/NyxHgIYlUBJAgAERfjNClWF+MUKZ4ksYmJ8oHYEwAylcUSpAGgIObNzGenwTgKYo7WfA6PD3E1xO7sdBYH4nsQT8rOngOxIhli05Tv4qT9LWbKeEwWK20cS3ORCNmXJ8zJYs3/'@; put 'P5fjf0t2lmhsDn3YqOmCwChxznDd6jPnhIgxFeJ2fkp4BMQqEJ/ncST2YnwnXRQYK7MfZAt94JoBBgAo4LB8QyDWgpghyoz1kmFblkDiC+3RcF5eUIwMpwjmRMnio/n8rPBQWZyV6dygMVzDFfpFj9mk8vyDIIaVhh4uSI+Jl/JET+fz4sIhVoC4R5gZHSLzfVCQ7hM+ZiMQRYk5G0L8NlXgHyW1'@; put 'wdSzhWN5YVZslmQuWAuYZ156TKDUF0vgChNCxzhwuL5+Ug4Yh8uPlXHDYHV5R8l8i3OyImX2WA03KyBKus7YAWF+9JjvlTxYYNJ1wB5lsIIjZXO9y8mLjJFyw1EQCnyAL2ACEWwpYA7IALzuwZZB+Es64g9YQADSABdYyjRjHvGSET78RoMC8CdEXCAc9/OWjHJBPtR/GddKv5YgVTKaL/HIBE8h'@; put 'zsY1cXfcFQ+FX0/YbHEn3HnMj6k4NivRj+hLDCT6E83GebAh6yzYBID3b3QhsOfC7MRc+GM5fItHeEroJTwiXCf0EW6DOPBEEkVmNZtXKPiBOROEgT4YzV+WXcr32eHGkLU97o27Qf6QO87ANYElPgVm4oV7wNzsofZ7hqJxbt/W8sf5xKy/z0emVzBXsJexSBn/Z3zGrX6M4vPdGnFgH/KjJbYS'@; put 'O4Sdw05iF7B2rAUwsRNYK9aFHRPj8Up4IqmEsdmiJNwyYRzemI11o/WA9ecf5mbJ5hevlzCPOy9PvBl85uTMF/DS0vOYXvA05jKD+GyrSUxbaxsnAMRnu/ToeMOQnNkI4+I3XW4HAM4lUJn2TccyAODoUwDo777pDF7Dcl8HwLEetkiQL9WJj2NAABSgCHeFBtABBsAU5mMLHIAr8AR+IBhEgBiQ'@; put 'CGbBFU8H2ZDzXLAQLAPFoBSsA5tAJdgGdoJ6sA8cBC2gHZwEZ8El0AOug7uwLvrBCzAE3oERBEFICA2hIxqILmKEWCC2iBPijvghoUgUkogkI2kIHxEhC5HlSClShlQiO5AG5FfkKHISuYD0IreRh8gA8hr5hGIoFVVFtVFjdDLqhHqhIWgMOhNNQ3PRArQIXYNWoLXoXrQZPYleQq+jfegLdBgD'@; put 'mDzGwPQwS8wJ88EisCQsFRNgi7ESrByrxZqwNvg/X8X6sEHsI07E6TgTt4S1GYjH4mw8F1+Mr8Yr8Xq8GT+NX8Uf4kP4VwKNoEWwILgQgggJhDTCXEIxoZywm3CEcAbum37COyKRyCCaEB3hvkwkZhAXEFcTtxL3EzuIvcTHxGESiaRBsiC5kSJILFIeqZi0hbSXdIJ0hdRP+kCWJ+uSbcn+5CQy'@; put 'n1xILifvIR8nXyE/I4/IKckZybnIRchx5ObLrZXbJdcmd1muX26EokwxobhRYigZlGWUCkoT5QzlHuWNvLy8vryz/DR5nvxS+Qr5A/Ln5R/Kf6SqUM2pPtQZVBF1DbWO2kG9TX1Do9GMaZ60JFoebQ2tgXaK9oD2QYGuYKUQpMBRWKJQpdCscEXhpaKcopGil+IsxQLFcsVDipcVB5XklIyVfJRY'@; put 'SouVqpSOKt1UGlamK9soRyhnK69W3qN8Qfm5CknFWMVPhaNSpLJT5ZTKYzpGN6D70Nn05fRd9DP0flWiqolqkGqGaqnqPtVu1SE1FbUpanFq89Sq1I6p9TEwhjEjiJHFWMs4yLjB+DRBe4LXBO6EVROaJlyZ8F59orqnOle9RH2/+nX1TxpMDT+NTI31Gi0a9zVxTXPNaZpzNWs0z2gOTlSd6DqR'@; put 'PbFk4sGJd7RQLXOtKK0FWju1urSGtXW0A7RztLdon9Ie1GHoeOpk6GzUOa4zoEvXddfl6W7UPaH7B1ON6cXMYlYwTzOH9LT0AvVEejv0uvVG9E30Y/UL9ffr3zegGDgZpBpsNOg0GDLUNQwzXGjYaHjHSM7IySjdaLPROaP3xibG8cYrjFuMn5uomwSZFJg0mtwzpZl6mOaa1ppeMyOaOZllmm01'@; put '6zFHze3N082rzC9boBYOFjyLrRa9kwiTnCfxJ9VOumlJtfSyzLdstHxoxbAKtSq0arF6OdlwctLk9ZPPTf5qbW+dZb3L+q6Nik2wTaFNm81rW3Nbtm2V7TU7mp2/3RK7VrtXUyymcKfUTLllT7cPs19h32n/xcHRQeDQ5DDgaOiY7FjteNNJ1SnSabXTeWeCs7fzEud2548uDi55Lgdd/nK1dM10'@; put '3eP6fKrJVO7UXVMfu+m7sdx2uPW5M92T3be793noebA8aj0eeRp4cjx3ez7zMvPK8Nrr9dLb2lvgfcT7vY+LzyKfDl/MN8C3xLfbT8Uv1q/S74G/vn+af6P/UIB9wIKAjkBCYEjg+sCbQdpB7KCGoKFgx+BFwadDqCHRIZUhj0LNQwWhbWFoWHDYhrB74Ubh/PCWCBARFLEh4n6kSWRu5G/TiNMi'@; put 'p1VNexplE7Uw6lw0PXp29J7odzHeMWtj7saaxopiO+MU42bENcS9j/eNL4vvS5icsCjhUqJmIi+xNYmUFJe0O2l4ut/0TdP7Z9jPKJ5xY6bJzHkzL8zSnJU169hsxdms2YeSCcnxyXuSP7MiWLWs4ZSglOqUIbYPezP7BceTs5EzwHXjlnGfpbqllqU+T3NL25A2kO6RXp4+yPPhVfJeZQRmbMt4'@; put 'nxmRWZc5mhWftT+bnJ2cfZSvws/kn56jM2fenN4ci5zinL5cl9xNuUOCEMFuISKcKWzNU4XXnC6Rqegn0cN89/yq/A9z4+Yemqc8jz+va775/FXznxX4F/yyAF/AXtC5UG/hsoUPF3kt2rEYWZyyuHOJwZKiJf1LA5bWL6Msy1z2e6F1YVnh2+Xxy9uKtIuWFj3+KeCnxmKFYkHxzRWuK7atxFfy'@; put 'Vnavslu1ZdXXEk7JxVLr0vLSz6vZqy/+bPNzxc+ja1LXdK91WFuzjriOv+7Geo/19WXKZQVljzeEbWjeyNxYsvHtptmbLpRPKd+2mbJZtLmvIrSidYvhlnVbPlemV16v8q7aX61Vvar6/VbO1is1njVN27S3lW77tJ23/daOgB3Ntca15TuJO/N3Pt0Vt+vcL06/NOzW3F26+0sdv66vPqr+dINj'@; put 'Q8MerT1rG9FGUePA3hl7e/b57mttsmzasZ+xv/QAOCA68Mevyb/eOBhysPOQ06Gmw0aHq4/Qj5Q0I83zm4da0lv6WhNbe48GH+1sc2078pvVb3Xteu1Vx9SOrT1OOV50fPREwYnhjpyOwZNpJx93zu68eyrh1LXT0053nwk5c/6s/9lT57zOnTjvdr79gsuFoxedLrZccrjU3GXfdeR3+9+PdDt0'@; put 'N192vNza49zT1ju19/gVjysnr/pePXst6Nql6+HXe2/E3rh1c8bNvlucW89vZ91+dSf/zsjdpfcI90ruK90vf6D1oPYfZv/Y3+fQd+yh78OuR9GP7j5mP37xRPjkc3/RU9rT8me6zxqe2z5vH/Af6Plj+h/9L3JejAwW/6n8Z/VL05eH//L8q2soYaj/leDV6OvVbzTe1L2d8rZzOHL4wbvsdyPv'@; put 'Sz5ofKj/6PTx3Kf4T89G5n4mfa74Yval7WvI13uj2aOjOSwBS3IVwGBDU1MBeF0HAC0R3h16AKAoSN9eEkGk70UJAv8JS99nEnEAoM4TgNilAITCO0oNbEYQU2EvvnrHeALUzm68yUSYamcrjUWFLxjCh9HRN9oAkNoA+CIYHR3ZOjr6ZRckexuAjlzpm08sRHi/324mRt2XRobAD/JPCotuA2JA'@; put 'n4YAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y'@; put 'Mi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY2NDwvZXhpZjpQaXhlbFhEaW1lbnNp'@; put 'b24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj42MzQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KSHKtHgAAABxpRE9UAAAAAgAAAAAAAAE9AAAAKAAAAT0AAAE9AACKlRxL/UIAAEAASURB'@; put 'VHgB7L0HgNxmeqb5FVChIzuRTTZzzlESRUVSFCUqzIwmjyZnx71zWO96b89h7b31ede+27O9DjOe8eSo0USlURxpGESKYhBzzqFJdrNzqADg3g/FoppUk6zuQlWjUC+kZmXgx/OjUC++GFq25v2OcCEBEiABEiABEiABEiABjwiEKDA9IsnVkAAJkAAJkAAJkAAJuAQoMHkgkAAJkAAJkAAJkAAJ'@; put 'eEqAAtNTnFwZCZAACZAACZAACZAABSaPARIgARIgARIgARIgAU8JUGB6ipMrIwESIAESIAESIAESoMDkMUACJEACJEACJEACJOApAQpMT3FyZSRAAiRAAiRAAiRAAhSYPAZIgARIgARIgARIgAQ8JUCB6SlOrowESIAESIAESIAESIACk8cACZAACZAACZAACZCApwQoMD3FyZWRAAmQAAmQAAmQ'@; put 'AAlQYPIYIAESIAESIAESIAES8JQABaanOLkyEiABEiABEiABEiABCkweAyRAAiRAAiRAAiRAAp4SoMD0FCdXRgIkQAIkQAIkQAIkQIHJY4AESIAESIAESIAESMBTAhSYnuLkykiABEiABEiABEiABCgweQyQAAmQAAmQAAmQAAl4SoAC01OcXBkJkAAJkAAJkAAJkAAFJo8BEiABEiABEiABEiAB'@; put 'TwlQYHqKkysjARIgARIgARIgARKgwOQxQAIkQAIkQAIkQAIk4CkBCkxPcXJlJEACJEACJEACJEACFJg8BkiABAJBwHEcMc2QmGFbwtGQhCM27ockEnMkHBOJRHGL52OVtlRW2VJW5UhZpT7W53G/PCTRCkdC+O+GC162EiL9vY4k4yGJ9+OvRx+HpKcTt90hSeA5Ky6SSuI+3qvvTyUMsZL4DJ6z'@; put 'UrqFm2znhoPgiyRAAiTgbwIUmP6eH46OBEgAOiwCsRgpE4mVO64grKjCfQjDimo8rtDnRaJ4LVrmuILSjAhEo4hpiBhh/BkG/iDp8E9IHLHtNFbbdtw70KaiAhUvZbdgTFgdVog7+r/7l34yvQUR27Lxh1tszMF2kokQBCfEJv5SEKb9EKAJiNI4/vp7DOntdiBUcb/r8nN9+j5DUimIXt0AFxIg'@; put 'ARIoIgIUmEU0WRwqCQSVQCjkSLlaFGFBrKh1ZFSDI1U16fsV+jwEZQRWyDCskZGwIWYEMi6juSAKIeH0H1ckqk7URUXdFb145U76tYL9e3mMeuPeNdJPGHqL/43LAlXHo0N0LAeC0oYYtcVSyyj+etU62mVId4dIT7uBPzwHS2lPZ0iSeN1x0uvUdXAhARIgAb8QoMD0y0xwHCQQeAJqXRRYHW2p'@; put 'qheprrelpt6RStxW1YorLqNwU0diEJBwdeuiVkUHwtG1NEIwXjY8ptVYUHmltSesrek7KkYzQlRFqA2LZjKekr5uQ/p6HAhPU7pbRbouhaSzNS1A1U2fhBv+pu7+oDLkfpEACYw4AQrMEZ8CDoAEgkfAhFtahaRaIkc12lI7xpHqBkuqa+DOhkUyVhZ24yPThkeISFju1PLoCsmRsjYWyzRcNlhe'@; put 'EZ5m2hKq2Ky4Lf39DuJARbph6Wxvgei8gFv86WMVpY59eQXFsr8cJwmQQFESoMAsymnjoEnAHwTUwhhBvGNlLayREJH14yAqxzpSOxqJNDVIoIFFUt3Zqh4zlkiKyDzOnWpHuN3VABxCgpMbD4r7qbiFWE+Izg5HOi4Y0nbelLaLAvEJiydc7bZF0ZnHWeGqSaAkCVBgluS0c6dJYHgEDI2VRGJN'@; put 'TaMjDeNtaWiCoMT9asRLRitMJNVArMAsqRZJ5LjAJElz5PBIe/wpFZwqPDE/IVg89b4FV3tfry29bQ7EpiGtZwy51GxAgGrSEWM7PZ4Bro4ESo4ABWbJTTl3mASyJ2AY6tqGmISQHD0RgnICXN6Imyyv1jJABvQjxCSECvQkxWT2WP3zTgjO8GXRqZbPVMKCGx1WTrjW284ZcvEUROc5uNcvocQS'@; put 'Xev+mTeOhASKgAAFZhFMEodIAoUiYJrpDO6GCbY0TlFBaSMZR7O7w9AfaTe3pdnZapmkcbJQ01K47ailE4LTtXSmIxtgzbSksw1CExbOC8dD0noWVk4kFdmWW6ipcGPjlkiABIqKAAVmUU0XB0sC3hIIwUJZhfjJMRMdaZzqyGgIylGjYaGshB/VdXUjfk/FJF3d3oIvprUNtHIiL70PgrPrkrgu'@; put '9fPHDWk5bbgC1EHNTy4kQAIkkCFAgZkhwVsSKAkC6cLkGj85biqslPirHWMj49uE5QqSEiIhpVXIr9QDKgko3MmhEMBxEtaC9e41iNbptKTjvMgFuNObj4Wk5YyJgvHIVqeFeyhU+V4SCBwBCszATSl3iASuJqBWyuo6WCinODJ+puXGUlbVaXccLVmD0jZaIogWyquh8VH2BNTCibR1vUDRxCHN'@; put 'VG89G5LmI6ach0u9HQlEzFLPHiffSQJBIUCBGZSZ5H6QwAACZlhLBjkybrolTbNsqUctysoaFKeE21sLdWscJWMoBwDjXW8IZGI4VXAiaSgO6+YlZKU3Q2g2HzZh3Uz3aUekpzfb41pIgAR8S4AC07dTw4GRwNAIRNFGsX6CJRNm2tI0A7UoUT6orNx0M73VskQr5dB48t0eEBhg3Uyh/WUnug2p'@; put 'G/2Mis0T6l6H0GSrSw9AcxUk4D8CFJj+mxOOiASyIqBFzmNlIg0oHzRxliXjYamsGYNWi1HUMITrW3ta00qZFUq+qRAEoCU1O91AAXgLsb49bbacg8g8cwCudIhOt8sQxWYhZoLbIIGCEKDALAhmboQEvCNgRhwZo5bKOY4rLGsaL4tKTdDR6uZMrvAONteUNwIG3OgmxKbmlHWh2PuF4yKnDkJs'@; put 'InaztwebpdjMG3uumAQKQYACsxCUuQ0SyJGAgfqUdYipnDQbwnK2dtBBi8YyJOlQVOZIlh/3A4EQxKYmCmlocNclWDaPGXJ6ryHnjpuS6NMRMmbTD/PEMZDAUAhQYA6FFt9LAgUkoIXNq2odCEpLpsyH1XKSjXaMSNWl+7uAs8BNFZpAxrJpIcRDOwqdOWjIyX3oKoRC71aCQrPQ88HtkcBwCVBg'@; put 'DpccP0cCeSDgxlWWizRNs2TyAhtlhWypqjHh9XYQUwnzDssJ5YE6V+lLAtCSrtiEZTMZt6UFpY9O7Ydlc78p7RCejkWx6ct546BI4DIBCkweCiTgAwLqAteC51MX2jJhnpYVciQcNhBTCWnpNvr2wSA5BBIYKQLQkvp9EPzf3+Wg7JHI8V2mnD1sSH+vCk2KzZGaGm6XBK5HgALzemT4PAnkmYBa'@; put 'K8sqHNSpdGTGopQ0ThOpqEIcGuIqLSbr5Jk+V1+sBNxe6UgO0koJHS0O3OchObHHlEvokW7Rqlms08pxB5AABWYAJ5W75G8C2lmnZowjUxdZMnW+JbVjUboF5VtYq9Lf88bR+Y+Aljwy4UKP99pyHiWPju40ELMZln7NQqdV038TxhGVFAEKzJKabu7sSBIIwQ3eiESdOStSMnEmrJfV6SxwWitH'@; put 'cla47UAQ0ILul62a7RccOYEMdHWht51nT/RAzC93oigJUGAW5bRx0MVCwE3agRt84hxbZt1iSeNkR6IxxlYWy/xxnMVHIGPV7O9x5PiekBzZhtqap/RijnGaxTebHHExE6DALObZ49j9S0BLDNU4Mg1u8BnLbNSwRH5CyJBkEgGWLITu33njyAJDQGM1IxFD4nFLLsB9fnir6RZyj/fCeR6i2AzM'@; put 'RHNHfEuAAtO3U8OBFSMBrV1ZN9aWGbfYMm2hJdUNJmIrbbG1xBAXEiCBwhOAlowgA11LfV06J3L4LVOOvRWSng6kpDNOs/DzwS2WDAEKzJKZau5oPglo4s6YyYivvM2SSXNtZIObkoSwZImhfFLnuklgaARc9znEZmeL5cZoHt5uSPsFjdOkRXNoJPluErg5AQrMmzPiO0jgugS0fuW4GZbMXY4W'@; put 'jkjciZWjtV0S9VNYEP26zPgCCYw0AW1NqVbNnk5LTqJT0MHNprSgU5BjU2iO9Nxw+8EhQIEZnLnknhSQgAlhOXGOJXPusKVpqiXhSJjxlQXkz02RgCcEEKcZRZxmX68lZw+FZP8bYTl/3EAtWgpNT/hyJSVNgAKzpKefOz9UAmbYlsnoCz5vhSVjpkBYmhSWQ2XI95OA7whonGYUYS1ICDp7JCQH'@; put 'NoflDLoEUWj6bqY4oCIiQIFZRJPFoY4cgbSwtGXuClvGTnXcLFRN3mFG+MjNCbdMAp4TUKEZMSWVTKEdZVj2bwrJ6QNI1KNF03PUXGHwCVBgBn+OuYc5EDBNWyaiN/j8OwcIS42x5EICJBBcApeFpjZBaD4Wkn2vG3IKQpMWzeBOOffMewIUmN4z5RoDQECTdybOtGT+PbaMmwaLpbZypLAMwMxy'@; put 'F0hgCAQgNMOwaFpWSs4dMmXvJkPOHqbQHAJBvrWECVBglvDkc9ffSUDbOTZNsWXePSlkhdtu8k6KxdHfCYrPkEApEbgsNNV1fvqQIfs3huUckoHYHaiUDgLu61AJUGAOlRjfH0gCBupY1jfZsuDelEyeq+0cEfBPYRnIueZOkcCwCVx2nSeQDHTqQEj2rtfyRrBosrzRsJHyg8ElQIEZ3LnlnmVB'@; put 'QDvGVY+GsLwrJdOWoEB6BepYJtjOMQt0fAsJlC4BnDeiyDrv67FRsF1kz+th6WDB9tI9HrjngxKgwBwUC58MPgFHyqscmYNyQ3NQJL26lgXSgz/n3EMS8JjA5Tqa3SjYfuhNuM5RR7OnHeqTLSg9Bs3VFSMBCsxinDWOOScCkYgjU5elZCEywxuaDLZ0zIkmP0wCJJDpDNR20ZZ9KG10ZFtY+ntD'@; put 'bjkz0iGBUiVAgVmqM1+C+62Z4ePR1nHRKiTyTLPdbo52yilBEtxlEiCBfBAw0ILSRAvKCydt2bXOlFP7kIGeUosmFxIoPQIUmKU35yW3x6GQIzWNtixamZRpC1F2BLFTKY2z5EICJEACeSBgov2kbdtyen9Idr8Wlovoc85EoDyA5ip9TYAC09fTw8HlQsBxHKmoEpm9IiXz7rCkahQTeHLhyc+S'@; put 'AAkMgQAMl9oVqK/PkiNbDdm70ZSuNgMroEVzCBT51iImQIFZxJPHoV+fgBl2ZPI8SxbfZ8no8Yak0JHDsegOvz4xvkICJJAXApcTgdouWrJnvSFHtkckmaDIzAtrrtRXBCgwfTUdHEyuBNQdXj/OlsWrbZk83xIjZCAGiq0dc+XKz5MACeRGQOMz9e/sEZGdvzJZqD03nPx0ERCgwCyCSeIQb05A'@; put '3eFllSJz1R1+J93hNyfGd5AACYwEAY0B10Lth+E2370+LN1tas2kRXMk5oLbzC8BCsz88uXaC0DAzQ5HW8clq1Mybgrd4QVAzk2QAAnkQgChmFHEZ7Zd0GxzuM13hMVKUmTmgpSf9R8BCkz/zQlHlDUBR6rqHJQdSsmspbaYUbjDk3SHZ42PbyQBEhhRAuoy125iJw/Abf5KBG0nQ+I4FJojOinc'@; put 'uGcEKDA9Q8kVFZKAGbZl6mJYLZHEUz/WcF1OwhyeQk4Bt0UCJOARgXAM2eZdlux93ZR9aDuZ6KPI9AgtVzOCBCgwRxA+Nz10Anq1XzPGkqX3Q2AugrUSotJmdvjQQfITJEACviKg3YDCpoHkH1t2vBRmEpCvZoeDGQ4BCszhUONnRoSAiRaPs27RTjwpqalnTcsRmQRulARIIK8EwijSHo/bcvAN'@; put 'Q/agG1BPl8GWk3klzpXniwAFZr7Icr2eEXBLD421ZemDFmpbwmhpO7RaekaXKyIBEvAdgcu1M5vRcnL7iyhpdNTEOY9uc9/NEwd0QwIUmDfEwxe9IKACMYzC52ZYxIg6KMiRPlGqUEyhT6+N7Ekrpd7ud55ATbx/1rIUYi1TSOgJSxLlPbiQAAmQQCkQ0JaTyYQjBzZnrJmaFPTO82QpsOA+Fh8B'@; put 'CszimzMfj9iRylr0/R5tS22j9v9Glne1LVG0aywrg7iEiztk4A/Fz1VLhhBCaaHDTjIBl1CfSH9XSLo6DOlqEem4COGJ1xfcjVjL+bBYYq/ZicfHU8+hkQAJ5IfAZWvmeVgzt72I2Myj6GtOa2Z+WHOtnhKgwPQUZ+mtLFpmy+iJtjTNsGTsFJFRDSh4XoVg9bD23H3bne0meOMf93YAJvdaXPUm'@; put '7hiGxhrph0SSKQslh9DLN3a5E8+1HxywDt4lgaESuMoIdPmBeyzqiq7cuclaBx7PKPR/ZRn4/JUneYcEciOg1sxEwpYDGw3ZtT4i8d5sD9TctstPk8BwCVBgDpdcCX/OMEUap6RkynxbJs52pLpeRAPTNZs7pRndcH3nurg60/0n1zXx80En4P7MwsqjC65R8A9a8qlKTBvK3edV/zn6HyIsbJjG'@; put 'bbQPtS0cs3jBsWEtx3Fr41at5LbWIbzJIaxGeC3w795ie2qZN3S7JuqxYhAGLrBC+J5oOEh6fFilrlPH4W7THVD6q6KPb7I9dyf4DwngGIvgXHv2iCNbnzel5TSOYRy3XEjAjwQoMP04Kz4dU7TclikLLZl9K6yW421YFxETicLmdF37dMICMqy0QIN4U8GoVu6McIQosyAWk8i41RjeOGoHpuIh'@; put '3DrS3yuoJYjQix48j+cSsPYk+/FcHJ9BSEYqhYuhBGJ/ITjVUu4gBsO9LsI67SzCfF2LOwSkKkYznB6bhoBEEGdsRnDBFcNfFBb4Mlj08RetwB/CRGIVCBep1Pvpx5EY4pNjKhqwDl0PVuxqTR2PCmGNDdGteHDRll4T/w0CAW032d9tyVu/NhGfaeJYxpeCCwn4jAAFps8mxI/DiZZZKA9ky5wV'@; put 'ttShqLmNHzsLFqCbWXn8uC8ck38JuJ5qWGhMtQhqhxNXQDoQhRCREId9PRCOiNPt6dA/Q3o7Q9Lbhdjd7hAEZVpAppAwZkNspmMt/Luvhlo8kfgWU6FZrqJTpHwUYpjxV1GTvtX7KkzLIEo1VCQMAeooJFcEqwUWd9L/+3dHObK8EdDviH5XTuwTWDPD0n4RIhPHAxcS8AsBCky/zIQPx6Fuv2mL'@; put 'LVm80paG8WrtUdciz2A+nKqiGlLGZayu5BBEU0ZIxvtTEodY7IFw7LhgSMclke4WU7rbVVymrZBqqfS7ePRqMtRiG47ZUo4kuSokz2kC3Sgk0FXX6WMbVRVgES2DyID1U5lk3P9q7aTL3atZ8P96IugC1H7Rkm0vmHJyH3qaozIHFxLwAwEKTD/Mgu/G4Ej9OFtueTAlk7TuJMZnJyksfTdNRTCg'@; put 'a8WkKp8UEhXUha2WyI6WkLRdCEknqgZ0tqhVEglecYMC6SZzayL+s0ItnhCdtWNQsWEc/hosiE9YPKu1aoOJUAKITjgaUrgwFFg7+Q2+CdQiflljfh3EU+zdZMquX6HtJC7IWM6oiCc0IEOnwAzIRHq1GyHDlnl32LL4viR+wMKIacsiIM2rjXM9RU/AFZSXW95p/VONdezvtaX7kiFtEJGtZwxp'@; put 'P49yVK1wa+NH0GK5FQ/nPO1uV+tmLRoT1EN06m3NaJEKiM4o3OyaAOVgTjR2VWt/UXR6iH+kV4UvXxSxmWeQAPTmLw0kAJm4UKM1c6SnpZS3T4FZyrM/YN/VvlGF2K/lj6ZkxmK1euAZjfHiQgI3IKA/X24smFuWynETbrphheyAiGyBmLx0FsKyGS7ubtNNqLnBqvhSPgjAYhxDfGdVHcJcmhxp'@; put 'QEmxBngnqhs07lNj+C7HVKuVk4IzHzNQ8HVqAlBvpy1bXzLk2A4YCRCXzIUERoIABeZIUPfbNmFpapxky13vs6RhgiZL0Grptynyy3jcn6rLFkoNntQMbo2RbD0bkgsnDdwidhLxk5rRzcWfBExkv1fUWq6Fc8zkdEUIbYxQVmWIaaqrFRZOCk5/Tl6WozLwHdXv5wG4zHfAZd6L5Di6zLOEx7d5'@; put 'RoAC0zOUxbkidWNORj3LOx9LIYsVLkvEx3EhgYEEtCyQCg+9TSEWt6fTkfZzITl33ICoRBzlRRMlgSgoBzIrpvuamF4Jt7paOMdMsWTMZEfqxtjIXtc5h4XTrRnKGM5imlN3rJjXjMt8y7Ome/FHl3nRzWJRD5gCs6inL7fBa5b4zFtTcsejlphRLe9Cl3huRIPxaVcqagZzGDFc+K+/N+VaJZsh'@; put 'KM8fxw/VGS0PRItIMGb7nXuhFk51qY+BV6NpOiycuK2qD0GspJOG1LqpyUNcioOAusy72y2UMorI8d3aGY0Xg8Uxc8U/SgrM4p/DYe2BistZt1ly57tR90UD/xlvOSyOQfmQ/uRkYiltCAi1UraeCsmZo6Y0Hwu55YLQvZNLCRKIlaeThZpm2DJuakrqmxC/WYEsdZg+U3pQMHbT90eFusy1g9Tu'@; put '9cgyfzWM2rIUmb6ftAAMkAIzAJM41F3IWC7veg9+HLR+HmKuuJQegbSoRNwdalFqUldXqy0X4fI+fcB04ym722mlLL2j4sZ7rO0xR9U7Mg6WzfGzYN2cYKM4PDoQIYQilaTYvDG9EX4VhoQIkvGO77Vly7Nh6URlB1TuH+FBcfNBJkCBGeTZHWTfNOZyygJb7v1gUgwUaKblchBIAX7KFZUaUwn3'@; put 't4rKbojKc8cMOX3QkIsn0vXzArz73DVPCaTrcI6basnEOY6MRfxmZQ36sFNsekrZ65VpYfbWs7Zsetp0Q14c9jL3GjHXd5kABWYpHQoQl2MnOXL/J+MoXaLB+7RclsL0uzaKyzGV6v7uaHPkAuIpT+6FqDxJUVkKx0Ah9rGyxpax0yyZNEBsapKQRTd6IfAPaRtmxEAdWlveRPefI1vDaP9LS+aQ'@; put 'APLNWRGgwMwKU/G/SZM1RiFTdM2nU1LXxGzx4p/Rm++BZgebl+tTakzlRZQROr43JM2Iq+zthOLkQgJ5IqDF3sfPdCA2kzJ6CiydVZowph3BkCCUp21ytUMjoDHX2jJr16uGvPVahMk/Q8PHd2dBgAIzC0hBeEsk4sg9H0rI9KUG61wGYUKvsw9qhwjBRWmERRL9trSeFjm535BT6FHc2UpReR1s'@; put 'fDpPBDQkR/unT5pny+R5joxusiVcpt4TaBvNRs/TdrnaLAnghBFBlvnhbSJvPIMLz27GXWdJjm/LggAFZhaQiv0tIdOWBXdZcvu7UMeQrR+LfToHHX/GWmkjYauzzZYz+005tgexVqdZlmRQYHyy4ARMXOSOmaB1d5Myaa4j1Sh9pNnNllo1qTQLPh8DNxhB7/rmo7Zs+ElE2tHSFZepA1/mfRIY'@; put 'FgEKzGFhK6IPwYIwZoIlD34uhStVZowX0czddKjuzwAyQzVZK9HjyPlTgjp3ppsF3oc6lVxIwK8EyqscmTgrJVMWatwm2lmWw6qJJHRaNUduxsJI/ulssWT9T8Ny/miYon/kpiIwW6bADMxUDr4jkZgtqz+eRJYnyojQejk4pCJ7VqWjgSB9/QXoanfkNKyVR3cY0oI2jbZFYVlk01nSwzVwAVyH'@; put 'UkfTITQnzUvJqAaEd+CiyUL3IFo1C39o6MVqsldkMzr/HN1hMvmn8FMQqC1SYAZqOq/eGa13Oef2FHqMj6xr3LW0wRWmrQa1OPOVnrj4BdGOIDZu1bXLgKyr5+/aR2k3eLq8UOsZR47tNOUEMsF72hlbeS0rPi4+AuXVSAqabcm0pZY0TtbYwLTQZCH3ws6lm/yD8/FbSP7ZieQfXrQWln+QtkaB'@; put 'GaTZHLAvmjVejbIhj/xGQirqDHEKXJJIxZDGV2kP6wQsp71d6GHdJRLvgTu3HyIT/0XLbYlWog9ytYi6zGJlKJeB2owpWC8oNtOT6Ypz6EcD2eCJXlvOomblkW2mnD0CS0OcwnLAIc+7ASGgsZpjJ1syY5lmoltSUYMMdD0lqFUzIPvo+93AiScCL8nezSJvPhfmucb3E+bPAVJg+nNech6Vdty4'@; put 'ZU1SlqyBEOlHcFOBFrVShiEq4wjcbzkpcuYQivmi1WBHiymJPtWNKpkGLhCWldodxIbVAnFZs21pQK3OCrSiS+oPCgRnKS5pYQkZDpHe22nLqQMhOYx6dRdP4ce2NJGU4mFQ0vusrQ3rxzkybbElUxdaUtOAbwXc5yx1VKDDQkUm4jKP77Ll9V9EpKdjgPepQEPgZoqbAAVmcc/fdUbvSM0YRx7+'@; put 'Yhw9g2G9VPdznhcVRG7xXojZ0/sMObAFYghFvG1YHoayqFu/fpwtM5ba+FFBTFY9+uZCrMKPPpTVFO17XWEJayXSsdDKzcHJPR0L1XaB1sqinVQOPGcClTXIPl+QkpmwajaMS3tH3OzznNfMFdyMgJthfsyWdU9GkATknqFu9hG+TgIuAQrMAB4Iar1ctiYlS9dI3q2XerpRo6QmnTQfdWT7S2Fp'@; put 'PmbmThXB/zWwas5HeaXpt8KVHkW5HRWaAV2Uo7rBVUZ3XLDlyM6wHNsRkq42D1gGlBl3q/QIxMrh5UAy0Jxb0Ad9CrwlmhCk9TRL4/pzxCZcM8zbmm1Z/yQMB2dwscse5iM2F8W0YQrMYpqtLMaqbqVR9Y489IW4VNZCsOTRxeyKS7hwraQjezaasvs1uLUT3lraQtBX49F+btnaFOKyUCQ+obVM'@; put 'sgBRJG95W1g6cqlZ5Og2Q44ieae3y1uORYKDwySBrAhEoojPnO3I7FuTMm6agXhBB0ITkecBOjdkBaKAbzJxkd+DGrsbfhqRs4fx20KRWUD6xbkpCszinLfrjjoE6+U8ZI7ficzxfMZeqjBy4wO7bdn8VERO7EHrmDwtmrBUhQxTFZmzb0FGvPrdi9yY6fKDxVLFcutZWw4hcefErrD0IQmKCwmQ'@; put 'QHYEwrgAHTsrKfOWO9I0UxNThCWOskM3rHe5ZYz6HNn48wjCdygyhwWxhD5EgRmwydYr+wc/l5CxU/LnUk6LS0O6ECO4Di6TC4i1LMQSiTmy8J6ULL7Pgi7DKIowLvOKsASwtnMQltvVFW5SWBbiAOI2AkvAxClonCs0YdmcEZKwCk26zvMy36EwEq0SjmxGdvmhNzXDnxfFeQEdgJVSYAZgEq/s'@; put 'Ar7nTXAnP/iZZLrTVx7cRa5Aglu865LIaz8KSwuymgu5hCO2zLvDklvWQmSqi6ZIfGLuKRgGyzCslpfOQ1hu1eSdMFzh7iuFRMhtkUBgCajQbJqZkrk4RzRNh9AMo8YuXeeez7dbKxO/L9teNGT3BnT9YYMHzxkHYYUUmEGYxcv7oMk9t61NyKL7EKuYh9JEaZEUkjg6Pbz6A4+SeYbBXy2Zi1al'@; put 'ZMkqxF1pzUyfL1q6yYSw7O2y5ehbpuxFvGp3G2MsfT5tHF4REzAhLLXkmZ4nxkxCTQZciGot4DxccxcxpRyHjgQrFfQ7Xg7JW1qQPcWL5RyJBu7jFJgBmtJYmSUPfTEp9eO1Vpz3p1I9fdhwTb/+c1MOb8tfzGU2UxKrsGXFuyyZdStiTX3aAjPdeQc1QeO2nNwVkj2vh+XSucJafLNhyfeQQFAJ'@; put 'RMscmb4UFs3bbZQ/Q0KihtWoRTOoO1zo/cKPQhgVRHb9GtbMFyIIS6DILPQU+Hl7FJh+np2hjA1lfRon2bIW8ZfaQcfrM6ieNkKwwh14QwUmApxGfEG2fIMjqz8BQT32cku5ER9TegCZLkY2Et5PHxbZs27krL0+QcJhkMCIEiivsmX2cr0gtd2C7W63MDg/KDQ9mBb8OLhdf14X2fJcRFJJikwP'@; put 'qAZiFRSYgZhGzei2ZeGdltz+Hu+zx93TBdwhbRcceenrUent9od7V0MCJs+zZeWH8xdzOpTDw+UEcW+A1cWTtuzeGJaTu7XYPE+4Q+HI95JAvgiMakAMN86TM2DVjKFbmK3dwqgyc8eNU5x2/dm/yZE3nmVrydyBBmMNFJjBmEe4KRy590MJmbbEkJTHLmOVR45hyIYfm3IEGc9+WlxX+buTMusW'@; put 'xJ16vN9D2U+NszTQIrPrki374Qo/iHqWiT5/CPGh7AffSwKlQGDMJEsWrrRkEmppmoj2YSKQN7OuXX8ObxWUMUJN5DjPf95QLd61UGAW79xdNfIyxCQ+8hsJGdWIgHYEs3u1uLY3WOTOHxd58ZuIsUn566QRQmjA2Cm23A9XebgMoy1w6SI3zhLCsr/fkWNvhWT3+jBEpr8YeXUscD0kECQCBs4d'@; put 'k+dbsuDelDSiiYPN+ExPptcVmdsui8x+ngs9gVqkK6HALNKJu3rY6N893pFH0XvcQI0yLwOLXIEJAfX6Tw05uHVkE3uu3ue3H8XKbbnjMe1THCqYFVO5uKU6oDDPHbaRRRlFq0yeTN+eFd4jgeIgEMX5Y/ZtllvaaFQd6gfTbZ7zxKnIPLLNkQ0/o7s8Z5hFvAIKzCKevMzQ1Yo3ZYElqz9uuW0b'@; put 'M8/neqsiyoGA0oLqv/xKFMXA/SmgDJQkmTTHklWPIxazAO3LXHc4Ep60Z7iWHDoM4Z1iiY5cDzd+ngRGlEDNGJQ1WpmSqQttiURRiYP1M3OaD4rMnPAF4sMUmAGYRk12WXhPUpY/Cgueh/Uv01Y6Qw7vcGT9kzHfktIad1V1jqz9VEJqkFGuPwz5WDLZ4cm4yBG4wzU7vJPu8Hyg5jpJYMQITJqL'@; put 'bmGrbGmcorGZ6ba0+TmjjNguFmzDaXe5g8ojYUnQXV4w7n7ZEAWmX2Yih3FoUeHbH0nK/Hu8F5haSXfTz0NyYIs/3eMZbNFyR5aDwdzbvXeTu2ECMN5qEs/FkyHZ/kpIzhz0N48MF96SAAkMnYC6zefekZL5K2wpH4WLVi3STpU5dJD4BEXmsLAF4kMUmAGYxnxlkKuwSsL1++I3TLl4yt+CykQW'@; put '/exbLcRi2ggT8K67jxsmgKDWODLCD2wOyT5kiMd5JR6Abw13gQRuTqBhvCVL70vJxHmGhEIoacQi7TeHNsg7IuUmzp+2bPqF1sn0Z6jVIMPmUzkSoMDMEaAfPq7i6sFPJ9CDFwXHE96IK1dY4Z+eDkH8ZUx6OvUZ/y4hw5GmGYhD/VjKLTviVaKTusW15/mR7SjT9DM/FJj37xxwZCQQRAImQpBm'@; put 'LLPQgjclo+qRbc4koGFNcxiJP26dzKcgMhmzPiyGxfYhCsxim7FBxhuOWvIIWkQ2TEif/AZ5y5CfcuWkFldvRoLPV6OS8HtNMyQ61Y+F0P5sQmKVGL1H5YpcgYn2mEd3hGT9T6JD5sgPkAAJBINAzWhLFt+fkukLQ6ggwd7mQ55VnJbDUVP2rNeOPyhyb9GSOWSGRfYBCswim7DBhhstt+ThL6Bl'@; put 'YlM6Vmiw9wz1ubTAFGk5HYLA1B6zfj8ZaOtIS9Z+JiWV9agF6lGiT8aCeQy9xNc9SYE51OOI7yeBIBHAmUVm3AKhiSLtNag5TGvmEGf3ssjc+Qp6l78chsh0f2mGuBK+vVgIUGAWy0zdYJz5FJitZ0Py3Ff8V2D9nTjSAvOhz6akoo4C8518+AwJkIBXBKrrbVn6QDJtzUR4DmMzh0BWRWbEkG0v'@; put 'iux8LUKROQR0xfZWCsxim7FBxps/gRmSjouOPPuvcJH7PrGFFsxBDg0+RQIkkCcCV6yZqzU2M31Ry0zzLGFDZJpmCH3LDdm7KQyBTktmluSK6m0UmEU1XYMPNl8CU6ty9HVrDGZMutp87iJHDGbDOEce+EweYjA1yectkQ0/8W8t0MGPDD5LAiSQbwJaoP2WB5MyZb6BhECtmwmLZr43GoT1I8Zf'@; put 'az9pjcwj2xGTaVNkBmFaB+4DBeZAGkV6Pxyx5aEvJNx+ul6X6LFwZfnSt01pPubvMkVXssg/jixyExPp0Rk+HYOJ7MctjrzxNGMwi/QrwmGTQF4JaC3iObdrbGZKyqohNFGgndbMmyPXdrsWGrCt+7EpJ/eYbsWOm3+K7ygWAhSYxTJTNxinlim6/xMJmTjHuzJFujm9ngxBrb3xnCN7N/hbXLl1'@; put 'MG9LyZ2PiaQS1g1oDe2ltMA0ZNevUWD9ZZYpGho9vpsESotA42RLbllrSdN0GDJZziiryTfCaI7R68jL3w/LeRgyKMyzwlYUb6LALIppuvEgzbAtd70/JbNvy0MnH/TcPrHbkVe/72/3sHbeWPHuJIqtG5KMeyswbduQN5833CLrN54JvkoCJFDqBMoqHFl8XxIWTUdMXJM62gWo1KHcZP9NJP30'@; put 'tNnyyncj0nIO4VgIS+JS/AQoMIt/DtHC0JFb1iRlyQMQmH0eiiuw0RNjb6fIc/8WlZ52f8Zh6ul7VH06/rKmwdte5GrBTCZM2fjTkBzf4+8wgQAcytwFEggMgelLUrLsAQvnJu1pjrMUVeYN59aMGnLprCO/+m5YOi6hc5LrQ7vhR/iizwlQYPp8grIZnsYfzkKbxHs+6EjKQ+udbjvjJt/8TLpN'@; put 'YjbjKfR7NP5p6iLd/xRin7zduu5/b6/Iq9+NysXT/hTY3u4x10YCJOAVgbqxttz2CFpNzoLItBGX6U2jNa+G57v1hGOmnDtky69+GJH+bp5vfTdBQxwQBeYQgfnx7WplGzvNkgeRQe31VZ8KLMH3XAuuP/81f/aRjVU6svKDCZmEfsGexl9i121kp3deMOSFb0alr8ul4cdDgGMiARLwKYFIzJYl'@; put '91sy73Y77TJnP/MbzlQELSWPbLdlw0+jCHfiOfeGsHz+IgWmzycom+G5LuJaWx75rYSUVyGD0aM2iZlt61fcMQy4iQ05vM1fbmIND5g4x5b7HkcqojvQzKhzv1XhrijPHRZ5+btltD7kjpRrIIGSJTBjqSXLHkxIdQ1a+mopI7rMr3ssqMjc/ZojW55nIfbrQiqCFygwi2CSshmilip68DNJGTfD'@; put '20xy3bar26C22lF0/UXEYvb1+sd1UV5ly6rHUzJ+BrLHk976n1RgOo4m94Rkyy+ZQZ7Nccj3kAAJXJ9Aw3hL7niXJWOm4dzCLPPrg8K5N4wE0zeeDcme11mI/fqg/P0KBaa/5yfr0bmJPmhdtmSNt4k+mQGoyDTwhd+9AVeVz/ojozwctWXeHYhxethGLTVvxaXutwpMK2nKhp8bcmynFtfkQgIk'@; put 'QAK5ESivcuTWB1Poaa4mTC3Mnk6mzG2twft0CIXY1Rv36x+H5cQu1sgsxhmmwCzGWRtkzCHECk6cY8n9n7TcvriDvCXnp1RwpZBEs+7JMIrijqyr3EBi09jplqx+3JJIOU7QiGvyclFB7YBpT1tIXvhWVLpa/WO19XI/uS4SIIHCE9DEzPl3oTA7yhnFyrQwuwY6cbmWgNbI7O9B0s93Y3L+JM7K'@; put 'LF90LSJfP6bA9PX0ZD84BwE9laMcefS34lJZmz5hZf/p7N6poktwVdndgbqYyKpu1XplI7FA+NWORtzlR1NS16SdIPJjvdST2ckDIq99P4pYTHfvR2JvuU0SIIGAEpg8z5LbHk1KTR0MmWrJpMp8x0xr+aL2Zlte/nYU5Ys0jZXn4ndA8ukTFJg+nZjhDEvL9dz5GAr8rvC24PrAsehXOwRvcds5'@; put 'kVd+UHjLnpvQVOPI3R/WuMuQp1njV+0ndtS2UGD9BS3PxPjLgWx4nwRIwDsC9eNtxGUmpXEqXMJsMTkoWC1fdOZAunxRwkc5AIMOlk9eIUCBeQVF8d9RN/mkuSlZrW7yVP72xxWZcF20nhH59RMR6WgplCXTkaoanIzfl5IpKEnkZceed9BS9zgKy7/4rYh0Fmz/3jEKPkECJFACBCqqHVkOkTlt'@; put 'gVox2cd8sCnXzPK9G2wk/kTFStGKORgjvz1Hgem3GclxPLEKWx76XELqx6OjDVqU5WvRr7eB9l7t523Z+POInD+e5yQYCL66RojLxyzXcplPcZnOHg/Jsd0hWfcjf/dgz9f8cr0kQAKFJRCGB2oJkn8WrHDgJWLyzzvo40dHW0puedqQPZuQ9GNRZL6Dkc+eoMD02YTkOhzNJl9wT0pufxQtDvs9'@; put 'bmtzzeD06x0yQxJHp5vtr5hycLOZl1hF3afxsyxZjo4YdY1m3tzimd1TgZlE9vj6Hxlycn+ehXNmo7wlARIoeQIaS6/JP8vWpCQaS2dR589MUHy4NbNcDSevPmHK6f0oX8TYeF9PIgWmr6dn6IPTGMWaelse/iKKro/KT7LPwFG515D40odMQ07stuWtVyJyqdkbl7nuSwVKeiy4OyVz7rQliqtX'@; put 'C7Xj8rm41kts4PzxEILK/dm5KJ/7z3WTAAmMPIGpC1NoMWlJFRI3NfGHyT9vz4lmlne3O27ST1uza+Z4+0Xe8xUBCkxfTYc3g1GL37I1SVmqNTHzbMXMjFi/5uq+6Oly0OZLO/6Y0o4Wi8NZ9Cq+rMKRKYttmb/CkoYmxFuqsPS4Q9FgY1OBaVumbHo6JIe2jmwppsHGx+dIgARKg8DYqZabtFk7'@; put 'BpZMnBMpMt+ed7dn+REk/XwPPct7hvc78/baeC9fBCgw80V2BNebtmI6sGLGC2LFzOxq2poJoYmC7D2djpw7EoJV05ALJw3p6775SSActqWmEYlK82yZutCS+rFoqYazaj5jSTNj19u3rZfIkEcZpmT85mMe+HneJwESIAEvCdQi7vzO9yZk7FT1RjH5ZyBbTfrZ97otm59m0s9ALn66T4Hpp9nw'@; put 'cCxqxVy4MinLHy6cFTMz/IzQDEdM16Xd02FLx0VDLp0LSRcys/s6ULBdswDxv1oqK5EZXoOr9PpxKRk1Wp8Lu20fbY+Lp2fGd71bFZippCGvo3PP0Z20Xl6PE58nARIoHAGtb3zH+xIyeTbiD1Esk5bMy+xxvlZjxuanUEpuM+IxbTzBxVcEKDB9NR3eDqa8yhLtT94wAbGLeShGns1o3a88EoFM'@; put 'xGkauNWAdW3/lWlboaLObQmG522M0RrwWjbr9+o9Og5VvCf2oVPRE7giZoaiV2i5HhIggRwJxModuf3daC+5BP4piswrNPW3I5VAPOZ30pVMKL6voPHFHQpMX0xDfgahdTG1U8R9H0VdTFV0qu64vIOAaktNRuzvFjem5+JpZo6/AxKfIAESGFEC4YgttzyclHnLNXQH53Sez935cDv9nLNQsxiN'@; put 'P+AhY6efET1Mr9o4BeZVOIL3QLv7rHg3Tkp3Ft5VXiw03dhLx0SpJUd2vca6l8UybxwnCZQaAQM9zJfej1qZKx107WWtzMz8azzmke22rPsxvE9J1x2VeYm3I0iAAnME4Rdi05p9WFVrywOfTko9srFHylVeiH0dzjZccYl/zh5Cz3G0vkwmeHIaDkd+hgRIoHAEFt+XlCWrIDKRGCn4n8ZMEc0s'@; put '3/KsyO4NiMdkiFPhDsYbbIkC8wZwgvKSiqix0xCP+cmkGFHtd8vTkc6tKyXhbepsDcmr349I23lmjQflmOd+kEDQCWh94KWrUxBW2FOKTLSWAwa0SH75e2FpPqxF2IN+BPh//ygw/T9HnowwBNfK3Nu1rpqNDG6ejTLiMtlnyIZfaJF4Zo17cqBxJSRAAgUjMHdFSm590JJwGdQUGreVuqbSWszt'@; put 'zZfjMdsQj6nWFS4jRoACc8TQF37DWrrotoeSsmgV4zH1vGPbhux4OSS71kUKPxncIgmQAAl4QGDO7SoyUxIp05Oam87pwVqLdxUaj3l4q8j6n2iZPHqlRnImKTBHkv4IbDuCTMS7PpCSmbeUrshMX9Qasvf1kLz5HFwpaWf5CMwGN0kCJEACuROYudSSWx9NSlk5RabS1MzyTfBM7d9ssj5m7ofX'@; put 'sNdAgTlsdMX7wRiKm9/zwbhMXWRKsg9+lRJaXHEZMuTgmyJbnkGvcS34zoUESIAEipzADIjM2ygy3VkMoeZyot+Wl74ZlYunYcXUOnRcCk6AArPgyEd+g5pZXlntyL0fTMnEBbBklojIzIjLA2868uYzUYrLkT8UOQISIAEPCajIXA6RGaMlU8KwYjYftVGEPSpxxNpzKTwBCszCM/fNFssqtM9t'@; put 'SqYvhciMBzdC3L121fMLYi73bArJjhfRipKWS98chxwICZCAdwRmL08i1t6WSAwpPyWezxkpN2XnKyJbcc63WbrIu4MsyzVRYGYJKqhvi8RsWf4ICrHfYUhS20lqq8YALSouQ2G4S/pCsvNVCMz1iMlhzGWAZpi7QgIkcC2B2Uj8Wb4W2eWlLjLxA6C/Aa+gdNHpAzj301V+7aGS18cUmHnFWxwr'@; put '1+4QC1ehptp9Fgr3hlBLLBgiU13i2v+8sxVXsC+F5fhOtoAsjiOSoyQBEsiVwLw7U3LLAxCZ0dK2ZBooXdRxwZEXvhGWbpYuyvWwGtLnKTCHhCu4b9a+5VPmw5r5rqRUN5iS6i/e5B+9YtWiuyEDMTiHHXkDmeKXmikug3v0cs9IgAQGI7BoJTr+rEZWtVnavcu1dNH+zQ4yyyMoXeT+QgyGi895'@; put 'TIAC02Ogxb06R2pGO67LfMoCwy3IXmxdf9JWS0P6ey3Z97oJl3gY7R8Z4F3cxyVHTwIkMFwCy9YkZNFKXHCjd3nJdrdRTYmfgQ1PhuUoPFmOTZE53ONpKJ+jwBwKrRJ5rxlG158Vliy6NylVdWFJFEECkJ4uNNZS/zt7xJEdr4Tl/HFaLUvkkOVukgAJXIeAeqdueyQl8+/Q0KfSFZka/tVzyZbn'@; put 'vxaTjrb0b8V1kPFpjwhQYHoEMnirgTVzjCOL0et2+gJLzBgyrxP+yzR3hSXiLA0jJK3NNoqnm3JsO7PEg3c8co9IgASGSyAMo8GK9yTRYANrcEpXZKqr/BDK1G34aZhdfoZ7MA3hcxSYQ4BVim/Vq9+maZYsXGlJ0wyRMAKmkz4QmpkEHu01237RQmuwiBzaZkpfN10fpXiccp9JgARuTEArhtzz'@; put 'vqRMXghfsVOiMZn4eTDg2Fr3o4gc22mgXTB/L2581OT2KgVmbvxK5tMqNCfMsmT27ZaMn25LWRWshChrVMiMc/dUAGtlOJyOD209I3J0uylHdyPmsptxliVzMHJHSYAEhkWgrMqWVR+GsQDncG24UYoxma6rvB2u8q/SVT6sg2gIH6LAHAIsvhUEIDRHN9kybYktk+ZYSAoKiQmrppWyxbIQ4+Nx'@; put 'hSO1VGrbL9PUq01HutstaT4CNzhEZfNRCM0khSWPSxIgARLIlsCoBlvuezwpdeP0E6UpMtVVfnCLIxt/Rld5tsfNcN5HgTkcavyMSyBaZsvYqRYsm46MnWbLqDpHohVht7CtWjZtXB6rKMxGdLrWSRWTiKXUP42p1Of6+1LS0x5y+8meOWzKeYjK3i733ZwFEiABEiCBYRAYM9GSe2DJHFWvzTWy'@; put 'OkUPYys+/oj7WyPy6ydMOb4rzALseZoqCsw8gS211ZphW2qRFNQwERbOCZogZEtljQXBaUg0elkwuuLxajKIN0c4kCOWbUsi4UiyV2ClDElHiyGXzhnSciYkXbifiFNUXk2OjwYSMFDzNAwrNy5RUI5FZHRDndy+dKHMnzVDImHt3uSxaX3gxod5Xy+++uNxaWvvlIuX2uVSe4f719HZJV3dvdLb'@; put '1y/JVGqYa+fHSODGBCbMSSEmMyWxKnxncCz67xty4/Hn+mq6ALstL349Kl34zdF4fi7eEqDA9JYn13aFAKyZZSLlVY7EKhGzWRnCYwdJQmqlvPwmCMsEit4m+0TiPSE3QaevN4Qi76GSO9ldwcY7VwhEI2EpLyuTyspyqa6skKqKChlVXSU1+jeqSirdx5VSWV4uFeVlUlYWc+PK9ODR12trRiG0'@; put 'wt+lqvRHTf/S8XC4wEomXdHZB3HZ1dMrnV09V4Rna1uHtLa1u4K0HSK0o6tb+vrj8BLgKo0LCQyDwOzbknLHY9o8N23GLDWRqa7yXevQ6Q3NOCz2Kh/GEXTjj1Bg3pgPXyUBEsgDARVV5RCEVRCOdRCC9bU1Mrq+VhrqavBXi/t1MqqqQioqyt33RSMRicViCJ1IX53orYqyjLjK3Opzum7L0ixZ'@; put 'jS8rrp9MHbsuun96X28z9zP7k0gkICz7pfuyAG3r6JQWWEBbLrXJxdY2aYEIVSGqVlAK0DwcvAFb5a1rE7J4FTzliKMvrm+LBxOhXzdo6xe/G0bXN3WVe7BOruIKAQrMKyh4hwRIwEsCGRFZW1Mto+vqZFxjgzSNHSONcF+Paah3LZGjqiulDMIxIx71MyoWM38qqgaKRy/HV6zrGihC1UKrj/U2'@; put 'I0DjcLurAO3p7RMVn2r5PH+xVc5daHFvVYy2dXTABU/rZ7EeA16O2zRtuftDSZmxBImUSVyYebnyIliXGTXQlMOWl78VlXhfxr1WBAMvgiFSYBbBJHGIJOB3AmWxqGt5HNc4WiY2jXX/xo8bA2FZ67q1K2GJjMAKqWIoIxoHWhn1OS7eEFDGmb+MAM1YfJV5b1+fdHR2w9XeIc0trdJ8oVVOnjmH'@; put '2xbXEtoJ17sm6HEpHQLlFbas/lRSGicjJh4JmqU2+2G4yrc866C1cERsuso9O/ApMD1DyRWRQPAJqHDReMfG0fUyeUKTTJ3YJFMmjod1crTUw9VdVVWJOqXqakq7p1NIUsncp4j0x/Ghc6iCU8Vnxv2uVmIVnl0Qly2weJ5tviAnIDpVeJ7BfbWCJhJJf+wAR5EXAnWNttz/qbhU1cKKV2JJP1q5'@; put 'JN6L2phfj0lbs/rNmfDjxUFGgekFRa6DBAJKQOuPumJyfJPMnj5Fpk+ZKBOaGiEma9z4SBUoKk7UMpZxawcUReB3KyM8M+JTH+sFQndPj7S0tsups81y7NQZOXryNIRnsys6dd65BIfARGSWr/xQSsIxSCyYMUvJkqkJP4e3ObL+J0j4YX1lTw5qCkxPMHIlJBAMAhoPqa7tGRCSc2ZMdW/Hjhnt'@; put 'urnVMqkiUkWH3tIiGYw5v9leqODMiE691Uz3ru4eOXseVs7T52T/4WNy5Php93F/PHGz1fF1nxOYf1dSlj+KQWqinM/H6unw1GgJ4+2vfxCRE3s0iZBWzFz5UmDmSpCfJ4EiJhBBKaAmuLfnzJgmC+bMkOmTJ7iJOFWVle5eqYUqY50s4t3k0D0mkBGc6mbXRa2c5xHLqdbNvYeOysGjJ1yLZzLJ'@; put 'Op4eo8/76mC4lrseS8isFYiXLrGkH+1K13rGkRe/EZG+Hib85HqwUWDmSpCfJ4EiIqDCoHZUtcycOkkWz5sl82ZPlwnjGmGhrHYTQzLWSbVQciGBbAnocaV/auXWpau7G3GcF+UAhObOvQdcwdmK7HUmD2VLdGTfF9Okn4+lZNx0xFKXWNKPusrffF5k12vw2DDhJ6cDkQIzJ3z8MAn4n0AYVqYJ'@; put 'yOxWQblo7iyZOW2SWyZIxQAtlP6fv2Ic4UALpx5jrajRefj4KXkLYvOtvYeQOHQeoRaM3/Tz3NaNtWXNpxNSOQomzRJK+rmS8PNvSPi5oG5yusqHe5xSYA6XHD9HAj4moGWDpk+eKEsXznWF5dRJ49HdZpQbN6lWSv3R50IChSKgrvRM1rq2wjx64rRs27VPtu/e72aqsyVmoWZiaNuZujAl934w'@; put 'JYZGQpRQ0o9aMQ9uEdn4M1OsFF3lQztq3n43BebbLHiPBIqagCbozJo2WW5dPF+WQVhORLZ3BdopDkzMKeod5OADQSDjStcsdY3d1AShzdt3ytad+5AodJEXPz6b5VseTMqS+9DwoJQ6/cBoqVn0L34nLOeOoOwaI4aGdVRSYA4LGz9EAv4gEIGbW62Ty5culOVL5rs1KcvRm1stlGqpZKa3P+aJ'@; put 'oxicQEZs6u0ltLfUBKGNW3a41k3ttc5l5AmEI7bc9/GkTJoFT7lVOkXYw+jwc/awIy9/JyLJOK2YwzkSKTCHQ42fIYERJKCWH+3ZfRsslXctXyrzZk1HT+9KisoRnBNuOncC6kLPlMI6fe68vLF9l6x/Y7scO3lG6ELPnW8ua6hpQDzm5+JSXQOhVULxmNpGcsOThhzcmk5ey4VhKX6WArMUZ537'@; put 'XJQE1Fo5fcoEuXfFrXLHrYtRXmiMux+ZzO+i3CkOmgQGIaBCU/+0beXOvQflVxvfkB1aevCmAABAAElEQVR7DqDbUP8g7+ZThSAwBfGYKy/HY5ZKJ1EjHJL2CyLPfCkKKyaTfYZ6nFFgDpUY308CBSagsZWL5s6UB1beIUsXzHWLnmuxaybqFHgiuLmCE1DXufaw1+P9CLLQX9nwhmx88y25hD7q'@; put 'XApPYPkjSVl4T2nFY2rCz6anRfasixQeeJFvkQKzyCeQww8ugfKyGJJ15snDq+9yywvFIDT1h5Y1KoM759yzwQloWIgKTV1Oo2WlCs3XXn9TzrdcYpzx4Mjy8mwkBlf5JxOoj4ki7CVSHzNkhqS305an/6VM+rpoxRzKgUWBORRafC8JFIBALBqFpXKOvOuBlbJ4/mxR17gKSybsFAA+N+F7Auo6'@; put '13jNc8g4f3n9ZvkVxKYKTV54FWbqRk+w5IFPpSRaoZnWpZH0E4UVc8erIm8+RyvmUI4yCsyh0OJ7SSCPBMJh0+39/dja1XLnbUtEhSaFZR6Bc9VFTWCg0Hz+1Q2u2Gxto+u8EJM6D/3Kby+hfuUh5DYlEf77zJcj0tGSbo9aCM7Fvg0KzGKfQY6/6AmoZXJ0fa08ev+9cIffLXW1NXSFF/2scgcK'@; put 'RSAjNI8cPylPvfCabHhzh/T09hVq8yW5nZDhyH2PJ2XKotLpV65WzL2bHNn402hJzvlwdpoCczjU+BkS8IiAWimXLZwjH3r3Wpk/e4Zbu5LJOx7B5WpKikAU3yX97mzduVd+9PQLbv9ztqPM3yEwCqWLHkQryap6xCWWQOkihAHj+HLkuX+NSus5WjGzObIoMLOhxPeQQB4INNTVymNr75NH7r9H'@; put 'KivKJZFI5GErXCUJlA4BTQZSodmGLPNfvPCq/Oz5X0k8zu9Vvo6AGUstufsDqZKJxYzETDm83ZbXfhjLF9JArZcCM1DTyZ0pBgKaoDAbLR0//eHH3CQetbrQalkMM8cxFguBTN9zzTT/9pNPSfPF1mIZelGNEw5yuefDSZmxVLPKLW1XHuhFrZgw1srzX4vIhRO0Yt5ssikwb0aIr5OAhwQ0kWfV'@; put 'HbfJJz7wLhnXOBrWlbiHa+eqSIAEMgTUmqmlvbR+5pe+9YTsP3xMUriY4+Itgeo6uMo/m5Tqeqy3BFzlasU8tsuSV74DK6YqTi7XJUCBeV00fIEEvCUQi0Vlzd23y+c/9n7R4umaIc6FBEggvwRUZGqf8y9/50nZtHUn207mAfeMZXCVvw+uctgwS8GKCWUJK2ZYmo/Tinmjw4kC80Z0+BoJeERA'@; put 'i6Z/8NEH5MPvWYuL3hBd4h5x5WpIIBsCWqS9vz8uX/nuk/Iq3ObxBC/usuGW7XtUWN77kYRMX2KUhKs8gh7lJ/Y78vI3Y4EX1NkeA4O9jwJzMCp8jgQ8JFBRXiYff/+j8v5H1rhZ4iwI7SFcrooEsiSg5YwS8Bp8+Vs/ktc2UWRmiS3rt2lW+drPJaRyFNzGQS/Ajl1EF1N5/uthOXcknDWjUnsj'@; put 'BWapzTj3t6AEVFx+BFbLjzz2sJslzm48BcXPjZHAVQRUZKol8x++9j26y68i482DOSuScud7oC8R6xp0V3kmFvNlxGKqV4rLOwlQYL6TCZ8hAU8IaI3Lh+67S37jEx9029jRcukJVq6EBHIioO7yVsRk/o9//JocOHJcLNvOaX388NsETBRgX/2JhEyYg+dQMzLIIjOtKRGL+XVTmo/Rivn2UfD2'@; put 'PQrMt1nwHgl4RkDLpGgB9T/+3c+5CT0sQ+QZWq6IBHImoIk/ew8ekb/556/LBfQx5+IdgdETkVX+qYREyrVXOayZ3q3ad2tSK+bRncgo/y6tmINNDgXmYFT4HAnkSGDsmAb5T//uczJ35nSWIsqRJT9OAvkgUF5eLk+i48/3fvqs9Pah0TQXzwgsezApS1c5Ylt2oAUmksk13FR++dWIXDzFjPJr'@; put 'DyAKzGuJ8DEJ5EhAM8Y/gIzxT37w3Yj34g9Xjjj5cRLICwEDWRra5ee//f1XZM+Bw3SVe0g5Vo6En8/HpX4cFBgiEIJuxTy41ZZ1P2J3n2sPIQrMa4nwMQnkQECDvSdPaJK/+KPfltH1dW7WeA6r40dJgATySKCsrEx+jYzyf/za96WrpzePWyq9VU9ZmJKVH7bFgMIMssDUWEwb8abPfDkql5pp'@; put 'xRx4pFNgDqTB+ySQI4EyFFPX/uKf++j7ab3MkSU/TgL5JqAXhFoT8//6/74s+w4dpRXTQ+BaG3PVRxMydVHwa2NGy0zZvcGRTb+Iekiw+FdFgVn8c8g98BGBuppqxF5+Hj3G5zD20kfzwqGQwPUIaCzmD372nDzx1POMxbwepGE+39DkyJrPxKVME36wjqBaMkOoiRnvE3nmX6LS1YYHXFwCFJg8'@; put 'EEjAIwIa0zVz6kS4x39XKivK3dJEHq2aqyEBEsgTgSjKie3ef0j++n99Vdo7u/O0ldJd7S0PJGXJaiT8pILtKlcr5raXHNn2Iq2YmaOdAjNDgrckkCOBCIo43718qfzRb3+GsZc5suTHSaBQBLSkWHtnl/zZ3/yTnDxzDlnBQbWzFYro1dupqHTkQST81DZqsGJwa2MaZkh6Omx56p9i0t9LK6Ye'@; put 'BRSYV38X+IgEhk1AC6u/a8298kUUVo/H48NeDz9IAiRQOAIah5lMpeSvkE2+e/9hSaELDRdvCcy+LSV3vg/p5AEvW6RWzA0/Fdm3KeItwCJdGwVmkU4ch+0/Am6Cz0Or5XOPv48JPv6bHo6IBK5LQK2Y/x2dfd7YsQveBwrM64Ia5gtmxJEHUHy9aTriMAPc4ccMh6TlnC3PfqlMrJRGnZb2QoFZ'@; put '2vPPvfeQQBm6g7z7wZXyeWSQ04LpIViuigTySEAtmPr31//r3+TNnXsoMPPEeuJsC1nlKQmbwXWTK7pw1JCXv2PIiT1sH0mBmacvE1dbegSi6HG86s7b5A9+45OSSCRKDwD3mASKkIAm5/X3x+Wv/kELrh9hqaI8zaHa81Z9NB74skUqME/td+SFb0TdC5c84SyK1VJgFsU0cZDFQMDED9WCOTPk'@; put 'T3//NyUajTBZoBgmjWMseQLqHr/Y2iZ//rf/JGeaL5Q8j3wCGDPJQp9yWDHLkEgV1FwqKGkH4abPfSUqLWdKO9mHAjOf3yauu+QINI6ulz/7g9+UaZMnSjKZLLn95w6TQLERiCG05c0du+X/+fK3pLOLZYryPX93PpaQ2XdgK8ngli1i4fX0UUSBme9vE9dfUgQqysvkU+hB/n70Iu/rQ+VdLiRA'@; put 'Ar4moO0iv/KdJ+WZl9ehqw9DW/I9WTVjbHnoiwkB9sAWXw8ZIenrseVplCzq7SpdKyYFZr6/TVx/SRFQN/nCuTPlT2HF1LqYrKlXUtPPnS0yAmF8R1svtclf/M8vy4nTZ/l9LdD8LX8oKQtXBrv4uloxX/+5yJ6NpVuyiAKzQF8obqZ0CFRXVcjvfPojsvruFSxXVDrTzj0tQgLaJvJHaBH5fbSK'@; put '7O3rL8I9KM4hV9fBivmFuFSMMiSEwvZBDMc0IyG5eNqW576MkkVWaZYsosAszu8nR+1jAgZKnsydNc1N9qmqrMDJhXX1fDxdHFqJEtAWkafPNst/Q4H1U7jlUlgCyx5MytL7gm3F1LqYz3/DlLOHSrNkEQVmYb9T3FqJENCi6+9F0fXPfOS9rIlZInPO3SweApnal//wb9+TdZu3SYIJeQWfvMpa'@; put 'Wx6GFbOyJrhWzEjMlEPbbPn1E7GC8/XDBikw/TALHEMgCdSOqpbf+8LH5a7ly5jwE8gZ5k4VKwFN7PnZcy/Lt3/8NF3jIziJSx9IyLL70KI8oC0kQ8jviSPX8+l/jkh3uzmCpEdm0xSYI8OdWy0BAmolmTCuUf74dz8rM6dNoSWzBOacu+h/Ahp3ueGN7fKPX/++tHV0+n/AAR5hZQ2smF/shxXT'@; put 'DGwsppvs8zSSfdaVXrJPSQnMD73rAdmyY4+cOHMuwF9Z7pqfCGhW+ewZU+SPfuszMh5iky0k/TQ7HEupEVBxuX33Pvm7f/22nG+5VGq778v9dWMxVyEWM6BWTDfZ55TIs/8axT6WVrJPyQjM8WPHyD/+1X+Wvv6EfPvJp+T51zayJIUvTzfBG1QYnULmzZ4uv//FT8j4sRSZwZth7lExEFC3+Ft7'@; put '9ovGXZ670MLzv08mzc0o/3xCKmpQFzOgDX4MeMd/+bWINB8tLTd5yQhMtV5+8RMfcntEa+2z19/cIV//4c/k9Dm2BvPJeSbQw3AtmdOnyP+OmMypkybQkhno2ebO+YmAhqqouNy09S350reekOaLrX4aHscCAssfRl3Me4ObUa5u8r0bHdn482hJzXdJCEztNfs3f/IHKB0z3RWYOsN6wmlta5fv'@; put 'wJr53K82lHxT+pI66vO0sxH0152xJCnHdoYR2P3O7g36Qzd5wjhYMj8pc2dOc49FFmLP02RwtSQAAnru17/nX90Az9XTcqm9Y9BzvXaXKa+25eJJU6xUabkx/XCg1IL/WmSUl5WHAtndxzBD0ttpyy/+MSb9ve/8bfDDHORjDCUhMOfOnCr//f/8A5ffwB90PfGoNXPd5q3yjSd+LufOt+SDMddZ'@; put 'AgQM05GJsyy58wO2rH/ClDOHr+8Kmdg0Vj72vkdk5R23um461sksgQOEu1hwApFIBCFRcbeQ+lMvvubev94glqxOyrRFlrz6g6i0X1CBSZF5PVb5ev6u9yZk1gqsPaA9yrVk0Ws/FDm8vXSSfUpCYH7+8ffKR977yHVLxag1s6X1knznx8/IL3Glq5YmLiQwFAKxCkfu/WBCpi4wZd8blqz/cfSG'@; put 'x9Go6ip5cOUd8oFH1khdbQ2tmUOBzfeSwA0I6Pk7Fou5RdS/8t0fyzYk9aRS1292ECt35IHP9kvT1LDseMWRt16NSDLO34AbIM7LS6MnWbL2UykJwxMUxNY+4aghJ/fa8tK3UBOzRDRG4AWmFrz+u7/8Y5kAq1EqlbruF2OgNfPrP/gZ43SuS4ovXEsghMj0xsmWrPl0SiJRuEK6Q/Lq90y5eOr6'@; put 'VkxdRzhsytwZ0+Tx9z4kSxfMdVd7o2P02u3yMQmQwNUE1GqpHoFNW3fKE2gBefTkmZsm88y9PSnLH4U7PWJLd6sjL34rIh0t6sakyLyabn4fqXdx9ccSMmURuKfswGlM1ZSJhCPP/EtMOltLw00eeIF5y6J58pf/4XdvKC4Hfm20jEXzhYuuNfOldZsGvsT7JDAogUjMkYX3pOSWtTgvxtVSEpKj'@; put 'O0TW/ySKk+TNf6SqqyplzT0r5D1rV0lT4xj3WKXbfFDUfJIEBiWQMRBo68cfP/uSrEedy55eVLi+yVJWKXL/J/pl9ER8a2E4MyKGbPyZATcmYjGTN//u3mT1fHmIBCbOsWTVRy0JG8ETmIrCrYn5FGpiri8NN3ngBea/++zj+OFefV33+GDHv8ZlGqhfqLGZas1kvbTBKPG5DIGySlvu+2hKmmYI'@; put 'fpRs1/uRiBsQmIac2pddD1rtXz5pQpO8a829surO20RFZxLt62zbzmyGtyRAAtcQ0PO09hS/1NYhr76+RZ59ZZ2cbb54U6tlZjWL79N+2BCXhoXPwKuAOLkj20U2/cIcNFEv8zne5oeAiVj2Bz6TkHHTMRm4Vse/gVrCkZCcO+7IL/81lpXxodh3PtACs6qyHO7x/ySNo+tdt8lQJ0utmWebL8Ca'@; put '+bS8suGNoX6c7y8FAjB71DXa8iBOiuXVhjj2ZZsljB8Xz4TkV99DokFX9u6QCC5utDD7u9aslOVLF0hlRQWFZikcR9zHIRFQYanu8O6eXrf80DMvr5MjJ07dMNby2g2MnoALQ7hkK0bhO+uEXDGj2b7tLY689I0oWvtl/729dt18PHwCs29NyR3vx4V6EAuv43fBxm/Ecyi63nr2xiFUwyfon08G'@; put 'WmDeccsi+bM//O0rpYmGg12tmRo0/hqujr/xw1/IxUttw1kNPxNQAiE3e9yW1R9PYA9x9rh8yZ2O4Tbk4JtqDYkM+Wo1Go3Iwjkz5dH775FlCPMoRyIaLZoBPYi4W1kTyLjCu7p75I0du+S5V9bL4WOnJAFr/1AWDWu57/G4NM3UsjiOa710P2+EJNXryAvfjkjrGVwwQnhyKSyBWLm2j0xIbaOq'@; put 'McxNYTef962pm/zN5wUJZcF3kwdaYGrnlEfuv3dI7vHrHV1qzTxx+qzbBUjje7iQgBIwI47Mvg1X3O9xXPf4QCoqMq2UIVtfCsm+jcM7mcSQpDYf9VvXrrpLNJ5Ys89VaDJGcyBp3g8yAb3A1wt9FZda7WPz9l3y8vrNrrBM3iBx83pMVFAufzQpc+9QcZl2jV95r6snHSTpReXUIQjMEmvtd4XD'@; put 'CN9ZtgahC6uhL5GwFTSBaYZD8G7Z8uyXymDNdA+4Eaadv80HVmBWV1W42eNjGobnHh8MuZ7kUjjgX8HJ7Xs/fRaF2jsGexufKyECboLPyqTc8kBIkv1Xl0JxTx34p79fZPPTYTmOAuzDXdR1PnPaJFl91+1yx62LZXR9nRufqVnnA2u7Dnf9/BwJ+I1Axg2ucch6cb9u8zY3eefc+Yti5RCbvOje'@; put 'pCy5X4uwXyMuLwMwIADW/ciU47tZdH2kjgktvP4QCq/HKnARAIUZKJGJ3wS1y/7yKzFUGgl2GEZgBaYX7vHBvlx6Na1B5afOnHM7Q6zfQmvmYJxK5blImQ1xaSGLHPWB3Qzyq/fcFZk4h/ShdNHrPzfl1P7hi0xds7acHNc4Wu5evtT907aTGoumQpNWzavZ81HxERhorezs6pY9Bw7LrzdtRS3L'@; put '/aKPc13m3YlqD2uQpQwXuSB/bjDhYmom+c8NObLNlBQzyXNFPqzP60XzqscTMn0JrMioYTrYPA1rxT75kLrJt73oyLaXgt06MrAC8w/gHn/YI/f4YMdkxpr5MkoZfe+nz7ktyAZ7H58LNoEoijQvfwTuttthwRxEYOreuyIT8dx9+H3c8kxEju3yJri7sqJcFs+b5XYEWjh31lVWTWafB/u4C9re'@; put 'qftbL5QSiYScPnferWP5OnqHHz911vUa5bq/Wqt28aqULFrliBmGsryOuNTtqMDc9DTip7ewVFGu3HP5/CQtWfQxS8xQ8EoWqZu85QxqYn45hjAA9xciF1S+/WwgBab+8P79fx1+9ni2s5WxZh4/dcatm7nxTRQ/5FJSBKIISF/xrhTiMK8vMBWInkJCSCCI9zuy5dmwHNkRfjuxIEdiGavmbUvm'@; put 'y+1LF7lZ6FWVlVdc6BSbOQLmx/NCIJOwo8fnRcRW7oCV8nUUSN8Nq6XWsNTzqxeLdupZtjYps2+FuzWEMJYbiEvdHgWmF9RzX0cYhe8f+kJSGiYgy/8mc5b71gq8Bj20YaV9FuWKWpBMFtQlkALztsXz5S9QXF2TIQqxqDVTg83Vmvn9n/2S1sxCQPfJNrIVmDpc9+cS5xKtkXkAVa/2rotIf583'@; put 'P6IZHBqrOWVik9yK74AmBU2fPFGqUFNTf8TVhU43eoYUbwtNQAXjwLhKTdjZd/g4ROVbsnv/YWnr6HSPUy/HpaWIboWHYfy0ECxFsIRl4WulwPRyBnJb16KVCbl1LdKyApjs42aT/xLZ5L8aXgJobmQL8+lACszf+fRH5L0P3+9J9ni205CxZh5FLTbtab5p285sP8r3FTGBoQjMzG4asGTqD93p'@; put 'QyI70fc4X4HeGbG5ZMEcWTp/jkyfMtHte67HaiZmkwlCmVnhbT4I6LGmF+DuRTgu+NVSue/QMXlz5x5XVLZeakclmixU3xAHZ6B82PRFKVn2kC1V1TBaarmbLDdDgTlE2Hl8+6gGLVkUlzJN9sF2spzCPI7Iu1WbKLp+/pgtz32lDPvlraHBu1HmtqbACcwYEnD+7i//o0wcP879Ec0Nz9A/rXFE'@; put 'ccQRaZvJH8CaqVflXIJLYDgCU2ngd9d1mfd02LL39bAc3prfziFhxLiNbqiTeTOnydKFc2X29CkydkyDVKD8llo3VXDqLQVncI/VQuxZxkqp7m+1Vvb29sq5Cy2umNwOF/jBo8elvbM7r8dZ3ThbFt6bkinz1d0N3+oQO8JQYBbiSMluG3o+uu+jCZmq/ckDVnhdfwOslCNPfykq7Re8icvPjmrh'@; put '3hU4gTl/9nT56//8++4JbKR+LAdaM7/15FPyxvbdhZtRbqmgBIYrMHWQes0aQucQB7XQzp90ZPc6U84eNGHR0Vfyu1SUl8nUieNl7qxpbp1NzUYfXV8rZSjoPtCdPlLfofzuPdfuFYFrBaWGJV1qa5ejJ8+4sZR7Dx51Swz19ce92uR11xOrcGTWLRYS7lJS3aAu8eytlgNXSoE5kMbI35+yICUr'@; put 'P2KLgeDZIFkwlay6yTf+AuFSG4LpJg+cwPzEBx6VT33osYK6x6/3FXStmfGEvPDaRvnhL57HlXvX9d7K54uUQKTMkVsfTMmCuwcvU5TNbumVrLaoS8RD6F0usm+TKRdOGp4lOdxsDCoStID7ZFj9Z02fLLOnTZGpk8ZLQ10N4jer3I9r7KYKT1o5b0Yz2K9nBKW6vNVCqVnfbe0dyPy+ANf3UcRU'@; put 'HpWjJ85IB851+XB9D0YXxlKZNC8lc++0ZNxkvAPfJ0fF5WBvzuI5CswsIBXwLVGUglM3ee1YnBMD1tknHDXk5P50a1LXrVVAroXYVKAEptp9/vbP/73MnTm9YAk+N5ukjDXz8LETbt3MLW/tudlH+HoREUjXwYRL7h7numWKst0dFZpm2EA5IwdFnpEIhDIpl86NTIZheVlMxo8d48Ztzpw62b0d'@; put 'B5e6CtFYLOZ6CCg6s53Z4nxfRkxm3N26Fz09PUhi7HRLCR08clwOHjvpWijbO7pyKn4+HEIGSg81TrNlHoTlxFmOhBHTZqdyt3JRYA5nNvL7mdseTsqiex1P5je/Ix3a2kM4vff3iTzzTzHp7lAFE6wlUAJzEiww/++f/xEKoaP3c7YR3QWaz0yNt2fRO/eJp17wpGhwgYbOzdyAgJcCM7MZTQIK'@; put 'oU5ab7stpw5qPb6wtJ5GweHMG0bgVksh1cOiqaJTrZuanT5p/FjEcY6WqsoKt/mADku/d5nuQmrt5OJ/AiokrxWTOo+9fX2uJbL5QivqUZ6RIydOywk0mGhGTKWWERqpc6y2ehwz2YErPCkT54VEyxDZiGXz6pRPgem/Y7ZxkiUPfDYpEfSpGMnzYD7IRGDF/NX3DTmaQ6e3fIzLi3UGSmA+uuZe'@; put '+b0vfMIX7vHBJidjzTx09IR880e/kG274A/lUtQE8iEwFYhey2rdTG1b19dty2kIzcNbDblwIoxSQ/5ApolDtTXVEJ2NSKobK9MQx6kCtHF0HZ4fJeWI51RXqgqRgcIz89gfe1E6o8iISL3NWCV1LtTN3dvX77q6my+2yqmzzXLyjP6dkwstl6Srp9cNjRhpUobhyNgptsxCjOXEWSJllegknsyu'@; put '9NBQxk6BORRahXmvzv3azyVk7FTIy4DVxNQ4zP2bHVn/k+B19QmUwPyT3/ui3LPiVvR+RvNnHy9qzexH0Pvzl2MzvWiB5uPdDfTQ8iUwB0JzXefoLpLAYX3huCOHUKT9LARn3OMamgO3Odz7Kl40gaihrtYVm01oazmhqdFtbzkG/dNrRlVJGVzs6mbX92bEprrb9T5jPIdHXlnqonGRumQEZOZ5'@; put 'tSr3wSLpCkm4s1U4nm9pdV3dZ5svuI870IqxHzHjflsiMVvGz7JlJhJ4xk8NSaRMs2+9F5aZ/TZhUdryTEj2bcbFHFtFZrCM+O2ilUnUxNT42mC1jtT4+84WR57655gkE8FykwdGYNYgNuzv/usfuz9sxVBMWk/8+iOrcUxf/+HPZMeeAyP+BeYAhk6gEAIzMyrVEBqjaSHQvf2cI0d3m3Jyjykd'@; put 'LSMTp5kZVza3eryXxaJSO6ra/Y5qiaTG0fVuqSTNXq+HxVNd7eUQp2r5VIGUEUeZ5KKMyz1zq4I0yEtm/3UfM8JRb/VPX8u8nrFCqiVSs7XV4qgXrS2oMdlyqc0Vjxdb2+QiHmvyTWd3jy8skjebu+p6W6bMtWTKEktGNxk49vMrLDPjCcdMefM5ZPa+jl7kCf9/tzLjDvpt3Vh09vl8XKLlOBEG'@; put '7KuvrUyf+2oUyZ3BKlcUGIG5fMkC+S9/9Du+Se7J9svuWjPjcXnucmxmF07+XIqHQCEFZoaKXuMaEJp6UurucKT5aMhNCmo+HpaED62amXHf6DaGuOnKigokEVVKHcTmOMR2ahZ7fe0o192uF5DaAlato5qApK73KGreZsTWwHVnrKAZATpQkGaeG/j+wZ4b+PpQ7mdE37WfGSgIM2Ix81zm8cDP'@; put '6Jj1QlnL/miXsP7+hPQn4q4FsqurxxWJrSgHpHV222CRbEPiTXtnp3R190ovPDhxH1oiB+7f9e5HY46MnmzL9IUpWC0dqarViEsk76gr/Hof8vh5V2D+MiR7NxoUmB6zzWV1eiRoHOb4GfCRB9BNvgVdfd4KWFefwAjML3zs/fLh9zzk2/jLG32x9IdGfyw1NpPWzBuR8t9rIyEwMxRcZwoMLOEw'@; put 'LC1wGbZfQJmj/SGUvQhJ+9mwpHwSq5kZby63KsJUhKq4VAtnNdpfVsPiWVUFUYpSSlUQn3rfFaF4PSNEowhH0e9WBIxUlCorXZcmLelt5k+/g3o/I/oGik59buAy8DV9Xh8PFLV6P/Onr6UwESoSUyoY9RaP47ioVGujuqTVbd0HUaiJM92wPnbjtqcHf3Bp62N9Xl+PJ5KucLQCljylZYZqYZ2a'@; put 'NM+SSbNTUjcOc4VwNHWDj4SQoMAceLT76/78u5Ny+yPBc5NruaLThxx54d9w4F9zvvHXDAxtNIEQmJps8D/+5Pdljo/KEw1tGtLvVmumZm4+89Kv5cfPvoQfF9Qv4OJrAmmBaaFM0fDrYHqxg65VE3GayAtC2QtbWs+F5PQ+Q84eNqT9IkoUW1eLJC+26fd1qDDUdpkqKvU2ghRUFZb6PVOxqm54'@; put 'FaDu87hv4P1agSKzpD+f/mzmpG+hm4i6ogfWeFQxmYD40+fSVseUKyRVTCaT6fsqKlVgaiykPqf3rxWqme2Wwi2mREY1WjIB1qjxc2wZPR5JO2gHiOiPglorB2NNgTkYFX88VzvalrVfSCDBCzoMx0qhrNr53ntN6OzvseVpxGH2dAYnLCMQAnPCuEb5n//lPyCmMVr0J233Rw0/egcQm/nNJ34u'@; put 'b+09mO9jm+vPgUAELr0lq5KyZE1Ikv3+MBnqBbDGamoqerzHgtg05MzBkJw7Epa2i5p5W3piM4cp5kc9IqDflfomW5qmOzJ+puVaLcsrTJyzCxNbme1uUGBmS6rw70u7yRNwk2PbASy6/tK3EFe/LzhxmIEQmA+uvEP+/W99xvfZ40P5OqpbT62Z2gHoyadfHMpH+d4CEtAfzcWrUrJ0DSyYPhGY'@; put 'A3dfC/maprp+ITZh2VSBqTGb546giPtZXDX3BudqeeB+8/7IE4CxGDGUSNCZ5EBUWtKI2pVV9WiPF0NNV3i/1Rqst35bKDD9NiNXj2cB3OTLH4X1El6BoFgwdQ+1XNHO1xx549nglCsKhMD8w9/8pKxddXegBKYecGFYMl9EKaO//+p33dgwfY6Lvwj4XWAOpKV2SwNudBWdVkqk+5JaN9EH/Sha'@; put 'U54ypas13a5y4Gd4nwSyJaDHVeUoGzGUtluvcgySdWrHiJRXIeMdFzl2ErGqKiqzXeEIvY8Cc4TAZ7lZtYKv/SyyycuC5Ykx0YnqwklHnv0SOqW5lZCzBOLjtxW9wFS3+N/9xX9EoedxbnyTj1kPeWgaj/S3//w12bRt15A/yw8UhkAxCcyBRNxTM+qvhdWVDh9lf78tXZccaT1jysVTIbdzUOcl'@; put 'uP3jeJ0LCQxCIBKxpbJORMvHjJlkS8MEW0aNTgvKsApKnMDUSjkSiTqDDDfrpygws0Y1Im8Moej6Q59Lyli0CRVEJfn9giVbSOplSiYcNw6z81IwzrtFLzBnTp0kf/Onf+hmgAYpaF5jMc+jq8b/8X//vVuKJNuDlO8rLIFiFZjXUnKtmxCb2jlIY5v6+yzp7RBkpqvgNORSc0g6kKXe14NEjBJM'@; put 'GLqWV6k9Nk0HiRW21DSK1I+33VjKukZHKmsdtGpEghQuVhyrOAXltXNJgXktEf89Xnp/0g1LCpqbPIIarK98PyTH3kLR1wAsRS8w3/3ASvnfPv/xoixPdKPjx0TW67pNW+Vv/+UbN3obXxthAkERmNdi1KvpEESDxm+qjcCCe7OvB3U320XamtPCU0VnF660412oF+iP/KZrd4OPh0HAjDhSUenA'@; put 'GgkX91gISlgoa/Cn1spyFLlWV55mkLkxlBCVmqQTpIUC0/+zOXZKSh74TEq0GkGQDj+Nw9y93pZNT8X8PwlZjLDoBeYf/+5nZfXdKwIXf2mgbMo/ff378sJrr2cxjXzLSBEIqsC8lqdKCoHW1DI/IbVyQlWkIDrjKK3RC4HZAfd6J8ohdeBPYzl7ukIS70bXIQrPa1H65rEBq2SsDFbIOojJBgdi'@; put '0pEaiMpR9RCYNfoa6oWqmMTVhpPCRYbW38T/QfpBH2wyKDAHo+Kv5yJRRx7+YhzxvojvxbkoKMdkJg7zuf+fvesAkKo6u2fq9mVhadKLgKggCAFEaVKEqMRobFEsPxr9TTEaY/1jS6ImakSCYk9ETSxYwQIiUhRQmoICgvTey9Zpb/7zvWUImIXd2ZnZeffufbq8KW/uu/fcO/PO+8r5ns6gI8n+'@; put '1XUW8HH2RmmCKaLLj933ezRv2kS7+EvRwLzzobHYuIXmIrM5FoG6QjArmwD750/4x0FLp1g9o3Svh4KWrcVZVuShm53Ec7cbxXtJPPe6+Jxu9mLGGpW5qRXJUHb5kNlShoDA62WsZEZuFHkFTMKhS1tIZB5JZC6JZQWRpP4nM7tFi0+skTHLpFy1dblwxwOwIZjxoJW+Y08bGUKnXiSXCiSOVRcl'@; put '+b6yYBfjMP38vVQ/DlNpgqlr/KVUFFm6fBXueeTJCqtBdVenOa7WEajLBPNoYNuUkf8cQTxJVSxaM0XKKcj6AeXllEg6IJZOkHSSgPJx7HmAcZ6BUrpgwxWE52jnMa/bxkXGP1rIzAIyKD6dXc9Cdj7lgbjPpUs7u4DPs/leLv8yaYEWFQFexYRISka3JBJC3NwGzEMIGIJ5CApHP2jNcqIDLuJN'@; put 'alQvuSKp6jPtJephLlNfD1Npgnn24H749ejL9Iu/9HjxxqQpeOnNyY7+gpvOAYZgxrcKbIMl/7H1Oe1/SJLYhCTo8TrBKjcspxikXFIp7ISiAPfltHiW0Q1fStIpj4OyLwHCAR7HYyMhciT+CWkSd64OmwzD440yy59/JI9+ksPMbBJJEsUsWiOz+ZdLi2RmHl3ZfD2DsZHiNpQkATevSzaJFFxp'@; put 'JRZhIEnAERZpiGTVq8MQzKoxcsIRObx5GnFNObLzeNMka90JnUpCHyQOc/H0KBZOUV8PU2mCefN1ozC0f1/t4i/FRfXHMU+bKj5J+LKmugkhmKcMDOOUMyusc6k+n+7t2/SQ/0hWslw13EJC+X/sdYtEyWKN6jCJU9gmli6EKe0RJNkM0TIaLHfzMd30tJAG5LVyPqbUUohup3CQf6xiJMdLNSPL'@; put 'kox4WvKoCRqReCe2Lao60YNZ8rYqRXXjoFi3znb3sxmGT9N6K8/lsdQ4j3I8/GNiqNTY9rIapawbL//8GSSG3EsspJe6fhlZFnx8LNZGv7zG432Mg/SQPHp9UkedbUs9UG5CqKOMixQrpC1YLiRdl6tsGhe6IZhpBD/OUw+5IoDmHfghfgl0Wfpiwdy8ysJHz2dU/KbEiYmTDleWYEr9cYm/bNOy'@; put 'uXbxl9t27MKtfx6DomKaaczmaAQqapFbrEUuRMZktNTWZNkU6yDREtIlm9t+zndihFRelAMlN4XMS3JU5B8hZBYJakQIWUTqtHMvx9jvSz3sCqJm8T2JKY0eg2TKRY2foLWRpxViKScUQsm+CMEUUul2W/Zzed8jfeSf/X6MLB68Mh66QNp9kc4c7JP9gP2wXzH/pBoBQzBTjXDy2u/SP4Qew+Sm'@; put 'UB83ufw2lBywMOmJDOUrrSlLMFtSWP3Ru2+GlFTUSf9S5IlmzV2AR556MXnfQtNSyhAwBDNl0Ka04UOe9IMPSPsqyOhhZz10zGGvHevhD62HRzw/+OSI147VmHkvbQgYgpk26OM+cdM2EQweRbkihpJocwNm34O68OFzXmxfz7tShTdlCeaAPj1w269G0w1G35dGm8gTPfvyREyeNkujUek7FEMw'@; put '9Z1bM7K6iYAhmOrMu4SUDL8myJKkZGW8e9OFZEoc5udvA8vnMZ5G4U1ZgnntZefjgrOHaZXgIzFcpWXluPvhJ/D9uo0KL6u603VDMOvOXJuR1g0EDMFUa54HXBxA2y5URtBIrkiS9VYuiGL2RLUTfZQlmA/e8Rt0PbETs0gZua/JJgRz3cbNuOPBsSgr18syq8kU/dcw/FlR/GhECCf0krrdJgbz'@; put 'vwAyLxgEFEPA6/dg/ocuLJ/rsZPCFOt+netu59NC6H22XnGYHhaz2L05iklPZVYk8Ck6q0oSzHp5uXj8/ttQvyCfgfkVwfCK4n9EtyX+8pPZ8/D4c68c8bp54lwE/HTR9D47jI49DcF07iyZnhkEqo+AaIXOm+zGyvkeW22g+p80R6YDgYYtwxh2ZYRqC/q4yEUpIlAaweTxWSzPa0eIpwPahM+p'@; put 'JME8sWM7PHjHjXZyj04JPqY8ZMLrudYbEILZ55wwOvQwBLPWwTcnNAikAAFDMFMAagqbrIjDDDAOk7IMGsVhyjqc+k9KFq2kFIWim5IEU0eB9Vj85f/9dRzWrN+k6HKqe932Z0dxxnkhtGEMUDhoXOR1bwWYEeuGgCGY6s3ogEuCaHMy+61RHKYk+sybBHzzmbqJPkoSzBuvuQzDB52hlcC6ib9U'@; put '70dNemwIpprzZnptEDgaAoZgHg0Z577e5Ywwegyni1wjPUxJ9Fm1MIpZb6ib6KMcwfRQVfmvf7gJndq3ZVk5lvLQZBP3uOhfPvr0BE1GVDeGYRPMn8rds9tYMOvGlJtRao6AIZjqTfBx7cMYfFmElbP0icOURJ+ddGZ+8JSfxR/UjMNUjmAW1q9nJ/jk5eZol+Dz3CsT8d7Umep9u+twjyX+p+95'@; put 'EbTtKqUIjYu8Di8FM3RNEDAEU72JzM5jXfJrA8gpYF1yTeIwJdGnvJgVfcZnoPQA40sV3JQjmCd1bI8H77zRJpc6JfgEgyHc99hTWLZyjYLLqO522ZYpGh7GCb1Zi9zIFNXdhWBGrg0CQjDnvOPG94tNFrkqk0oVTAy5OohmbSm1XvG/Kl0/ej9ptJTQuY+eZ0WfdWpW9FGOYOqY4OOm23/rjp24'@; put '7U9jsL+o+OgLzrzjOAR8GVF0HRhGtzNJMMuNBdNxE2Q6ZBCIEwE3XZOzJ3qwbikJZlhN12ScQ9bicNEjPvmMKKywpVVFn5lvuLBqgZqZ5MoRzBuuvBgjzxqkVQUfIZiLli7D/Y89o1VddS1+taoYhMcfRaeeYfQ517jIq4DKvG0QUAMBcsqZr3qx8TsPrIghmGpMGnB89zBOv4C62Jplki+ZGcWX'@; put 'H6iZ6KMcwdSxgo+XAusTJ0/Fi29Qk8BsSiHgZlB5i44WBl7KilKKBmIrBbjprEEglQiQT4aZOzp9At2SGzy84TcEM5VwJ7PtwuYRnHVVCF41uVilUHj9bmxYbmHahMxK33f6i0oRzLycbIy5/1Y0KmyACOUItNlcbjz61D/x2ZeLtRlSnRmIK4rCJhaGXhWEP4eB2BYDgMxmEDAIKImAy+NCyd4o'@; put 'Ba79OLBbyKUhmKpMpCRcjvhFAPUK+TusSaKPm+tx306WjHwyQ8mqUkoRzLYtm+ORu2+mFIHcWepzIS8pLYMIrK/buEWV77Lp52EIZDGD8czLgmjc0s2YLX1Klx42RPPQIFAnEJAEn62rgRl0kZeXqJm5WycmqpJBCicYdgUTfTryTd7o68AQmOODQAB4/wk/ivaptx6VIpin9+yGu377CwJOxDXZ'@; put 'JEts/aYtuOPBsSgtK9dkVHVrGL5MCz2GRnDSGSbRp27NvBmtbgiIuPXS2cDiaR6qQqh3QddtPuIdT8/hQXTpR36pUaKPWDE/et6DbWvVS/RRimBe+pPhuPLi87RK8PEw/nLO/MV4aNwL8X6XzPEOQUDiMFt3ttDvYgZvGQOmQ2bFdMMgED8C4iKf9ZoH65eZBJ/40Uv/Jzr0CKPvT/VL9Jn5OjPJ'@; put 'FxqCmdIV9rvrRmFI/75alYj0eLx4/b2P8PJb76cUO9N46hAQ10y9BhYGM8C8XqGLmac6OGdSh5dp2SDgRASEXBbtAab904v9eyjYbeIvnThNx+xT41YRDL0yDK9XDxe5DFZqki+eHsXCKeplLyljwRQpn7/e9Vuc0KGdViUiwQSfvz39ImZ/seiYXxzzprMR8GVY1MKMoOsAI7ju7JkyvTMIVI6A'@; put 'jxfyZZ8DC6bSPV5u3OOVo+TsV7Pzo/gxE32y85mexft8HW71JWxj9WILM17LcDb4lfROGYKZn5eLscwgb1C/QKsMcom7/MNfn8CaDSw6ajZlEXDx16xxS1oxR1EmQxQljKtc2bk0Ha+DCDCZwmKEy7SXvdixnu5xy2SPq7gK3O4oho8OoFEr9p6/wToQTEk827HBYk3yTOXGowzBbN3iODx69+9o'@; put '+vZqk0EuCT5bd+zCrX/8G4pKSlX8Pps+H4aAP9tCn7ND6NDDbcpGHoaLeWgQcDoCYiVasySKOW97ESgz1kunz9ex+tf/oiDancLikeGIcoSssnFJkk8RpbMmM5M8oJhlXRmC2bt7F9x98/UIBilorckmcktffbsC9zwyXhvSrMnU1GgYYsVs0pqSRZeH4MvgD5zRxKwRjuZDBoFaRcDNuOkwxdVf'@; put '8WLrGje/t8Z6Wav4J/lk3QeHcMogWi+pla2DBVOkisIh0cIUbVa1apIrQzBHDhuIG666RKsMcjcJ5kfTP8P4Ca8n+StmmksXAiJZdOqQCE6mVIapTZ6uWTDnNQhUHwE79nIukyg+8iFYbshl9ZFz5pHtu1WUjHRZ+tQkFyvmlBc8vAFSK5NcGYJ5/agLcd6IwVoRTJEoeu6ViXhv6kxnflNNr2qA'@; put 'QBT5hYzFvCKEgoZGeL0GAJqPGARqDQG3102rkIXpL/uwb4e4xg3BrDXwU3Sixi0PZpL79Mok//RVMNnHlyLUUtOsMgTznpuvQ+9TT9FKZD1CF+pD457Dgq+XpWZ2TatpQcDWxTw5gv4XhCtcNDr4adKCpDmpQSCFCJBLCp2c/ZYX67/xsAqXIZcpRLvWms6tz0Sfa8qRnVshNKXDz69IFc2fEsXX'@; put '09WSKlKCYEpijyT4tG/TUiuJIikRKRV8Nm7ZVmtfPnOi2kHAli0aEkbXfi6T8FM7kJuzGATiQkASe5bMAr76xFTtiQs4hx/s9Vn48bVBFDQlwdSkJrkQzGVzLcx5Ry2pIiUIZv16+Xjsvt+jQUE9bSSKJIN809btuP2BMSguKXP4V9Z0ryYIZLNG+ek/C6JVJ7mARWrShPmMQcAgkAIEhFyu+9bC'@; put '3Ld9KC02WeMpgDh9TZJUDtWsJrnX78b65VF8MsEQzKQvrNbNKVF07y3wMilGqqbosIlw/JLlK3H3w09qMyYd5iWpY2BWeUFDCwMuCaGwmQfhoCGZScXXNGYQqAECQi63r4tg1kRm5e4St7hxjdcARkd/pO/IIDr0Zhc1qUnu8bqwa4tFqSLRwlRnvSphwTy1S2fcd8sNCIepJaHJJgk+02bNxdjn'@; put '/6XJiMwwKkNApIsatrDQ/8IQ8iXpJ2QU2CvDybxmEKgNBLx+D/ZstTDrDS/2bhODRW2c1ZyjthE4ZVAI3QfrI1UkWeTFey28R6miYJk6UkVKEMxhA07DzdddqVcGOWuQ/+vt9/Hqux/V9nfPnK+WEZDqEo1bR9DvggjyCt3GklnL+JvTGQQEgRi5/OwtD3ZvFnKpjiXIzGB8CBzfPYTTz+fdgyZS'@; put 'RS5qtQbKK8TWi/epE9KhBMH8+U9H4IoLf6IVwXTRRT72uVcw/fMv4/vmmKOVRMAuJdkqgr4kmQWNXIgEjSVTyYk0nVYSAdstznJ7c5gxvne7sVwqOYlxdLpZ+zDOvCwCj0cTqSK5F6LqzPvP+LF7i7FgxrEUqj70N6N/jh8P7q8VwQyFwvjT488wDnNV1QCYI7RAQEhmg+Oi6H9RGPWbMDzIkEwt'@; put '5tUMwsEI8MIs5HLjCgvzJnkZc2m0Lh08W0nrWoPGFoaOLkdGFudbkzAIDzVbP37Rg00rDcFM2kKRhu5lichep3bVSgOzqLgEdz40lpnkO5KKlWnM6QjQXU5LZo/hFpq1ZbUficnU5AfQ6cib/tUtBMSt6GHs2spFUSya4kPJAcrWSN09s2mPQBYVPEZcG0BugVsrqaJP/02x9a/UEVt3vIvcQ1fy'@; put 'o/f8Dse3ba2NBqb8yG3dvhO3PfA4DhQVa/9lNwP8IQKs9tMwiu7UyWzfBRDBfVO3/IcYmecGgZojINYeqd+8ZIYb384RBQd14tZqPmrzyRgCumphzpsUxTefqSO27niCmZuTjTHUwGzcsFArDczvVq+jBfPv2owp9sU2++ojIHfZJ54W5p8Fb4bJMK8+cuZIg8DRERDNwOK9UXw13Y3vF3thRYzV'@; put '8uho6fmOzPiQ/wmgWRu6hyr+V36gIrb+9Ywo5n9oCGbSJrNRYX2bYObm5DAhTI/ECJEomjv/Kzw47vmk4WQaSj8CYm1v0awJ2rZqjhlzFlSrQ76MKFqfFEG3MyOsYe6i1cW4zKsFnDnIIPADBFx0h4tLfOv3Liyc5sbOjW56Bqoml16vB5kZfpSUlhtN4h9gqvLTARcH0LaLC9GIpUUUkhDMFV9E'@; put '8dlbhmAmbV22a9UCD//hJv5w6COy7vX58MG0WRg/4fWk4WQaSj8CebS2//LqS9H1xI544PFn8c1331erU5L8U9jcQrfBEbTsJO5yJgxGTGBmtcAzBxkEiICHVstwuYXl8zx0ibtRVlS9RIiC/Dxcf8WFOOH4tviUih6vT5qKsvKAwVQDBHqfG0LnPvw91URs3cc1vvYbC9NfyVRmdhzvIu92Uif8'@; put '8dZf6SWyTg3MV96ajNfem6LMQjEdPTYCcgN0Conlnb++Bn6/D6vXbcBD417A9l17jv3Bw97NzLHQqVfEdpln5Rlr5mHQmIcGgUoRsBN5pMrJJuDrT1l+d5WXxQyqtlpKYxILf93lP8MIKpR4mBAk1dXGv/gapsycg2AwVOn5zIvqIKCb2LrX58bWtRY+eCZDmWQ1xxPMAX164HZetMvLy9VZ2VX0'@; put 'VFzk41jBZyor+ZhNDwTycrN5sboQg/v1sdeqXKwWLlmGR5+eQNdb9WvNu6nb1riVha5nhtGsHbGhIdNYM/VYI2YUyUVArJahsiizxF1Y9pkXxfuEWFaPXEpPenU7GTdeezmyMyvqO2dkZGD5ytWUj3sWe/cfSG5nTWu1jkCnPmGcdq5YMCNauMilXORuVqGaJOUiFSkS4HiCOXLYANxw1aVaaWBK'@; put '1vDDT/4DXyxeWutfOnPC5CMglpDj27TEPZTTys/LtRO35DVxcn8yex6efmkiQnGWOc3IjuL4U5kA1NdCfn0XPy9M07jNkz97pkXVEHDzQis0cttaF5bMcnPvqbbVMjZWuSEUb8MJHXgXd7BepHxng6EQ7vvbU1ixai3VHfSI+Y+Nua7t23Zl9bQLI3BpUs1HykUe2BXFJJaLDCmiiuB4gjnqgnNw'@; put 'Gf/KyqpvBXL6FykQDOLuh5/EyjXrnd5V079qIJDh97MQQD9ce9kFR2i1ygXL4sXrnQ8/wUtvvh93AoHEZtZrZOFkksy23SIUjBbpFZMEVI0pMYdoiIC4w70kl/sZdbJirgurFnkRKK2+xTIGiZcepNGXnIezBp0BNnnE99LP7/LY517GjLkLEDBu8hhkSu5bdIxgwCVheDWp5uPmYi0psjD5yQyU'@; put 'Fashu+V4gvnLqy7GucMGaUUwi0tKcceDjxuRdSV/tv6702K1vImutt6VFAMQkhlmFuMbk6bUOObW66sQZz/xDAvN20fh8Zn4zP+eBfOKtgjwwuojsSwttrBmCTNp57ntijw1cRN6GSt9+QVn85oykHGXzDI/aL2MYZeZmYm3PpjGGPn3UVqmT1hWbHx1ad+oZQRDrwzDx99PHXw/dj3yAOuRj/Mz'@; put 'HMQQzKSs5VtvuAqDTu+tTQymEI7tO3eTYI7Fnn37k4KRaSS9CDRv2hj33fK/aNKoYaXJaBKPKdaQf7/9Ad7+aHqNOyuSRs07RHBCHwtNGKfpYdC3sWjWGE7zQacjQOuij2s8QJ63aQWwfK4HOze7a6xrGSOXI88aRMslQ1h+QC4FDonDXPj1t3j4qRdNEQynr48q+lef5SKHjQ6wXKSYqas4WIG3'@; put 'uWS59hmDSQvmvp3VU0lI97Acb8G8/5Yb0JPB2IGAHtIRQjA3bN6G2x8YY+6Q0736k3B+uWh16dwBd914LV0xR5fSknkPMdj8dVoyJ07+uNKLW3W748uwKGdkoSMzzpu2isJtiGZ1oTPHqYDAQYtlIGhh80oXvvvCg+3r44+zPHyoonV5+fnnYCQtl+JqrIxcyvHiPhcDwL2PPmk8TIcDqODj3PoW'@; put 'hl8TQHZuRcyu8hyTBJMLFx8+68fOTYZgJrwk5aL88P/dhM4d21M2Iphwe05oQKxZK75fa6r4OGEyktAHv89LC3sv/Gb0ZVWuUZl7SfZ5mfGYk6bOSDiJQCyazWjR7HCqhaZto8jIFHc83UFGQzMJM2uaqG0ERCjdy78A9Sw3r3Tju/nuhImljCGLWeJXXTQSwwaeweQgfj8qsVzGxirXnHAkgj+N'@; put 'eQZLl69K+Dsaa9fsax+B7FxaMK8pR34Djzb1yOXm6KMXvHZiW+0jGv8ZHW3B9FOQXMpEtmrRTJs65EIyFi1dbmcqxj9d5hNOQ0AuXucNPxNXXDiyWmEcMv+lFHKe/PEMWjKn0XWe+I2Tx2ehUXOgffewbdnMLmB8DnOBwhQY1sE15LQ5N/1JLgKSFS4ZsqX7o9hIV/iqhR7s3kKLZVhMNolt9evl'@; put '4xfUuuzbsxuJJSu6HINcxs7k43XnEbrIP/9ycdzqD7E2zD79CPgzoxhOF3lBE1owOe/KWzAJqdfrxscT3Nj4nTf9AFejB44mmLE65EeLbavG+Bx3iGhgzp63AA+Pf9FxfTMdih+B7KxMJg2cg/N/PKTaiWhCMoOhMGbOnW8nE+zdXxT/iSv5hJtZ53mFFlqdGEGbkyw0aFbxg2SsmpWAZV5KLwK0'@; put 'xEhGuFSt2rvTwoZvPFi7xI19u6pX3rE6nZfY6F//z6U4sdPxjF2jFmI1yKW0K3GYT00QwfW5DM1K/AawOn01xyQfAY/HwohfhNDguCgJph732r4MDz55xYV1Sw3BTHjFyN3nY/f+Hg3q17O1BRNu0AENCMGc8unneOKfrzqgN6YLiSKQk52F0Zeeb8sUxSOlJSRTJIwWUYz9pTcnY93GLYl25YjP'@; put '+/xRNG1DsnlSGMd1iCJfrJo0CEWMC/0InMyTWkSA68/jcdNaCQTKLGynjuXapR5sWulBeYn0I3GLZWw0XTt3pFfhXHRq36bSxLvYcZXtJZP8H6+9g/emfIpyQzArg0iJ19zuKM66OojGbcguNXHmSD3yT19zYTUlulTYHG3BbNqoEI/ddyvESmRpInorQeQig/GP195VYX2YPlaBQG5OFq4fddGh'@; put 'Cj5VHH7E2xLvJURz3aYteHniZHz51TdHvJ+MJzwFsvMYo9neQuvOEVYJiiKnHpOR+J8hm8lA2LRRFQLi/pYqJKJ4sG8H6N7zYMO3buzZVvOM8KOdUxLthvY/DRecPQSNGzaokWEiKyuLcdKT8eb7/eqQVQAACklJREFUH5u65EcDWoHX5bdvyNUBNBOCqYkF08vqVQunulgW1afADPCWsfvgnxJ6'@; put 'Z24tmzWlBfMWO7Ovuu4NZ47kP73ysA75y29OYjbx1P+8aB4pi4AQTCkROYQXtZqWM5Wbjn0HiuzEn/c/mR1Xacl4gJM7+uwCSh21i6A5s9AbtSTZzHezri3jNY1lMx4ozbHHQoDrSZIRhFTSM40DuyPYtoakcrkbO9Z5bNkhublK9taEBokLzxmK/n16IjPDXyNyKX0SgvnqOx/aig9GCzPZs1S7'@; put '7Q0eFUCLjjwnq6A5lujEAYkQzK8/BUmmP45Ppe9QRxPMDm1b4S93/da28mhDMEkmnv/Xm3h3yoz0zbo5c9IQSAbBlM54aHkRQfZFS5fh37y4rV63MWl9rKwhqRKUW2DZ7qPmrHjRRMhmfTf7IVpr4krXxKdU2eDNa8lHgHzRS/e3i+tHLJVFrLazbb0bm1eIxJCLLnAhlMknlbGB/KjbSbjkJyNw'@; put 'PK8ZDLZMyOMlLvIXX3+Xv9GfGgtmDGBF9wMvDaL1yew8Ex51IJhy07ZmCTDztQwlZsTRBPNkBmf/+fZfJ/Rj4bRZcPMKPu6Ff+HjWfOc1jXTnxogkCyCKacWq44QzW07dtmC7J/M/iIpWeZVDotkMzsnioYUb2/GSkGN20RQ0BDwM6Bc4kSNK71KBOveAeSKHlopXbzgybotL4ngwE4Xtq0jqfze'@; put 'hV3U6Qva1X1TRyoF9IYNCmxtyyH9ToPUFw9TBizRzcRgJoqgcz7f/6IA2nVlMhlvmHUhmGtJMGcYgpn4Iut+8gm4//e/TMqPRuK9SVIL/DF+7JmXMGvewiQ1aJpJJwLJJJixcdjWTIqyL6Q1U0TZv1u9LvZWyvfiKfDz5rheEwvHtWGiEN3pDZqSgNZjcgbzhKK0bobpbhKXk9nqEALkieL2lnhK'@; put 'qYITCkVQvBfYs9Vtk8rt61gjfIe4xLlIamHz0RPUp0dXnD9iMNq1aZmw1fLwLksW+fP/fgvvT5vNJB89CnwcPr669LjfzwJo300fginfvx0bLXzwdJYS0+hoC2afU7vgDzddX6WAtRJIH+xkhBfmR8b/A/MWLVWp26avR0EgFQRTTiVWIYnN3L13H6ZSLmXKjM+xa8++o/QidS+LKz0730LDFrCz'@; put '0huyvm+9hlFk5njZR8Y1GcKZOvDT2TJ5oodrMGahDAdIKA+4sG8bbOukuL33bmcZx1LpZGqtlD+EoWO71rb27I9Y4U10aEOh0A8PSei5EMzxL76GqbOMTFFCQDrgw6f/JIjje3F98oZdh1tiqUe+b3sU747LdAC6VXfB0QSzX+9Tcedvrq1x8kTVw6/9IyS27YG/P2eLrdf+2c0Zk41AqghmrJ9i'@; put 'zSSTw9oNmyjOPhOfz/8qrSVG3R5qbTaIorA566G3tlDYzEJ+IQlnNqtliIWToZtyExUVC6cOv+ixidB5z+tvzN3NKEqGJEVRXkZCua/CKrlroxs7t7hwYAflhMTtHa1dQhmD/rgmDTGc1XjOPP1HqF9Qz/ZspSI23xDMGOLq7/UkmBYJprFgJrw6B/btidt/dU21BawTPmEtNBAMhvDnsc9iCcuQ'@; put 'mU19BEQH80pW8Rl51qCUrlOpLiJlJpetXE2iOctOBgpwLaV7k8x0qfnboFnUzkovpKhxfkOL9X9JWvwkx5JwIUlDQjjlz2zpReAwy6SQSU4Ps7ojKD0AFO12UTqI8ZMkk/tpnSzex9Km1BlPRcZ3PCA0KqxPUtkLQ/r1QdPGDW3B9Iikp6doMwQzRcCmoVkdCeaebRYmPWEIZsLL6dyhA3DDVZdo'@; put 'ZcGUyhD3/m0865GvSxgf00D6ERCCOepn59ouu3iE1mvS85jbXMSfly5fSbf5HCz6ZjlDSNJPNGPjEbd5JhOG6jVm0hDJZgNaOAv4OKcea6XnuCuqt5DViGtdEojEWmYsnTH0krinkdGOmZREHJJKWTuSrBUoJZlk4ajivR6SSdDl7aE2pcu2VgbL5fzpsU5WNnLRsTyjV3ebWIpknWzJSOKp7FyH'@; put 'v2YI5uFoqP1YO4LJ73HRnijeGmNc5AmvzCt44b7kvBEs16VPoLUEjd/76HgmbqxPGB/TQPoRqE2CGRutkAWxaArR/Pa7VbYigdS3Lym103Zjhzlm76FbPTu/wrJZ0ISkk0lD+SxpmZ3PsnzZJJ5ZjOdkb+08T0M8qz9vBE3WAjkk5YEq9hJOYZFIBmmVDLA6TvEBNy2TJJI7hUhWWClLi2iZtH9S'@; put 'BXXnbVLiUbxX/Xv3QDM+lq02iGUMCUMwY0iov9eNYNozwq/thLsNwUx4dV5+/tn4Of90IZhyMSgpLcVdf3mCpQE3J4yPaSD9CKSDYMZGHSOaYQawr1q7HjPmzMcXi5di526m9zp8q7B0WsirD+QyhrOAiUOSPJRNd3tWLvd5kuQkuoq0wNnedYnrFI97RXyn7Wy3/3H4QBPpnhBHfl4C+2WuxRIp'@; put 'Gdzyori2g4EwiSRd3NSYLGECTvFexknSzX1gF5/TvV28HwiVixtcWnH25vV60LFtawxifGUvJu80LGxgy9PVJrGMIWQIZgwJ9fdaEkxOy4R7DMFMeHVeP+pCnDtsoDZZ5IZgJrwkHNdAOgnm4WCIRVPI19YdO/ElFQpmfbEQq9dvpls0dbFqh58/WY/dZJMZWYzrbGAhpwB2QlEuqw/JX1ZexXte'@; put '/rb6M4SAMsbTdv/y7CSf4nIXd7vtdudLkmh0iIMeepCsntawnQp+KIZGEsWKJzZpFPIozJH/S1ejtEJGKA4dDFh2HKSQyDJaHktJJEuYfFMkfxQzL9vvRlkp3d+2/KM0qtZWkJ+HHl07YwCr73Tu0A45Odl2Vng6SwMbgqnWGjpWb3UkmPLdePm+7GMN2zHvOTqL/LZfXo1+dJMkW4YiXegbgpku'@; put '5FN3XqcQzNgIRdpI6puXlJRiBfUzP/tyERZ/s0IJq2ZsDEfbe9wWvJkuZqxbdpxnZh5Y6lIsnizvl2sxxlNc7i5kZFjw8zi3Nwo3S/b6xBIqBE6EPIWQygliXIxsTnhpbLMpaex5bB978/B97PPc07Z46B2bOMozeUnalsdCfvmogjQKcZQ/un2ZQBMKuEgiKVROklhezOxtksgyurbLikgoiyus'@; put 'k4EyN49hW9Z/ziPNqrpl+P2suNMSfXt2Q8+uJ+I4usE9nBv5nU9FVni8OBmCGS9izj1eN4JpyxTtoEzR340FM+FVd9sNJJh9DMFMGEjTQMoQcBrBjA005j6XC/b2nbuxdMUqzF3wFZYzuexAEZmLphsdwjap9Aqx9FnwMdnSz8fezCh8/E32ZXDPMr4iJu/xR1k5ifGs3FeQUVZSYla820twyAxt'@; put 'PkqSam+yO8jvLBI9SyyGfC4Z8lZIpH1IGENCHGlN5D4UdiMc4D7oIpEkiWR4bDggRNFCJFiRnS1xkHK8fPZQ4/JQw02sza2aH4ceXTrbLvC2rVsgmzW/xcKeDjf4sSA2BPNY6Kj1npYEc7s6MkX/DwAA///r8VITAABAAElEQVTsXQd8FNX2/rZl0xMSSkLovXcBBUSKgNg7dkXF8tRn74o+n/7V'@; put 'J4oFsIMdO4KCFEFA6b33HkpIAklI22z5nzNhNcQkpGyZuXvmR5jd2Zk7937nzsw3p5q6DrrUA50uj919C/r17o6ioiKd9rBq3TKZTMjNy8NTr4zDnv2pVTtY9tYlAlGREbjhigtxybCByM/P12UfLRYLbDYbHHQdHTpyFBu2bMfS1euxbdc+ZGXn6LLPeuqUx/P3LZKvYVkqh4DNakXD+kno2rEN'@; put 'undqh6YNUxAXGwO32w2n04mSuFauxcDsZbfbMX7SZMxeuASFhY7AnFTO4hcEzrrUgVY9TPA4Xfj7KvbLqQLSqMlswvEjbvz0TkRAzlfTk5iEYNYUwsofLwSz8lgZZU8jEMySWFrpoc9/TDaPpKVj07adWLl+M7Zs3430Y8d1+9AvOQb5rF8EIiPC0aRhfXTt0Aad27VGo5QkxMbEaPOKSSWTS70v'@; put 'YWFheOvDz/H74hUodKih3NA75v7q39lXFaJZJyKYLrc6BPMwEcxxQjBrPGdEg1ljCKUBPyNgNIJZEg6vZtPlciE94xh2k1Z93aZt2Eikc//Bw8gvKCy5u3wWBP6BgNlsRp3EWmjVtDE6t2+NNi2aoH69OoiIiADPK/4zAqksOTDW9o/94DMsWLJKexEr+Zt8NhYCqhFMs8WEQzs9mDkx3BCCEA1m'@; put 'AMUkGswAgh2gUxmZYJaEiIkCP1h5yc8vQOrhNGzfvZfM6TvIlL4XR9IzyKzpKnmIfA5RBGKjozTTd8e2LdG2RVM0bZSChFrx4BcWJpRGd2kqJpifE8FcKQTT4HN84PWFaNiaBuH2KKHBtFhN2L0O+P1ruyEko2uC+fg9I9G3ZzfD37C8M0EIphcJddaqEMzSEuGHLBMG1j5l5+QQ4TyKrTt3Y8uO'@; put 'Pdi5dz+Oph9DEZk8ZVEfAZ7jKUl10apZY7Rv3QLNGqeQ1jIBEeHhf/lTGk1LWZHUhGBWhI5xfmMf33NvdCClFfVZIYK5YzWw8DshmDWeiQ/dcQMG9OmlHMF8+tVx2L1PgnxqPEF00ICqBLMktKzdZLLp1VDlnMjFwSNp2LF7P5FOIpx79iMtI1NM6iVBM/Bn1lAmk5mbCWXblqyhbKCZwSPJ7M0v'@; put 'yayhZE2lqosQTDUkazYRwbzFgaSmFN5Drr8qBPlYw8xYPRdYPTvMEELStQbzRorOHXHJeRTJp44vWKHDgefGTNA0QYaYIdLJChEIBYJZGoCShJO1BCeIcGZQgNCeAweJbB7Ajj37cODgERyjCHWViUhpXIz4nSO9E2vFUTBOMmkmG6Bl00ZaYE5iQi1NQ8lj4uAc/guVRQimGpI2W9wYdqsTtRu4'@; put 'QVxTCYJps1uwdAawYX6xO5PeJaVrgnndZcNx3WUXqEUwKe3Fc68LwdT7hVHZ/oUiwSyNDWu1WLvJ0em8sIaL0x8dPpqB/amHsWvfAeyjNWs9s7JPiGm9NIAB+m61WlArNlbTTnKkd/MmDdGI0ghxkA6nD2L58QsDk8lQfjEQghmgCenn01htHgy/vRDxSSYimGr4YIaFWzB3sgm7Vhffa/0MYY2b'@; put '1zXBHHHxMNx45UVKEUwOlPjvm+9jLUXrymJ8BIRgli3DklpO3oOtEGxaT888rkWoc5T6vtRDREIzadsx5FFgkV7zIpY9Qv1uZRyjoyJRKy4WKcl10TC5Hho1SKZ1EmonxFPaoGhwKh5emEjyn0o+lDWVjBDMmiKoj+PDI9wYQgSzVh2zMj6YNjKRz/nCjL0bhGDWeJYN6tsTj9w9UrcJrKszQCfl'@; put '43pl3EdYsXZTdQ6XY3SGgBDMyguEtZys7WRNGa9ZU8YR68ezs8nEnqVFrh+k6PVDaRk4cOgwjmXlaMQzlLVpFaHLGsmoyEjEk/axXp0ELT0Qpwhi/8m6tRO07fw7486LkMmK0Pz7N56f/5swCYtXrBVt+9+wGO5TZCyZyG8rRHS8WRkNJkeRz/7EigPbiq9pvQtF1xrMc87qgcfvuU0pgumBCWPe'@; put 'nYQ/l6/R+9yQ/lUCASGYlQCpgl2YaHq1nbzmPyaeeVTxKic3D8eJZLJ/J6dJOkLazqOUrzPzeJZmgj+Rl48CcjlRlYCaCRu7PQycvDyOkpXXio9BnYQEjUzWq5NI60QkkJYymoJyOKLba+JmDaaXTIpWuILJV85PrMEc894n+HPZGklTVA5GRtgcm1hMMMMjyUROHVYhyMdMlXx+/ciKw3uEYNZ4'@; put 'Dp7ZvTOevn8UHBQYo8piogfo2A+oSsSi5aoMKaTHIQTTP+Jnoukln17iyWdi4sTm9gJKAp9P66ycE5pfJ6+PZ2VrWk/2/8wmczyb5HM1Ekr7ExFl4soWhGCag1mbGGazajlHw4k88vyJJi0jm7TjYqKIRMaRaTuGtI+x2nf2jeR9IohkhlMJQ68WmIkjj4fXPB4hkr6bh2Ii9x2WwWwpIcmNoSML'@; put 'YQsneqkCu2SWTOmWfnk/DBkHhWDWeG717NIBzz54pzJpihgQC5lf3vn4S8yav7jG+EgDwUdACGZwZFCagHrJqJdwMeniYCPO2lBU5NQIJn9mX08Hlf/LLyjQCCoTVS4HWEBklbfzvk4isbzmsAD2mebPbs8/SxxyBLaNyKJ2bpOZ/Bpt8G5j8sg1re20LSLcjgj+TNtY08i/8TZtX/rdTv6QrH3k'@; put 'MXmXkuPwEkghkV50/LsWgulffAPVer0mLgy+wUnXlhoBPmTQoPuRBz+PD0NWuhDMGs+jTu1a4b+P3qOUCYwJ5qTJU/DDjN9qjI80EHwEhGAGXwYV9cBL2pgEekko7+/dXvJzSQLn/exdl3cObpMX77rkZz7We7xXa1p6XXIfrSH5L+gICMEMugh80oGGrV045xonOB+mEgpMMo8X5rkwbUI4co//'@; put '/TLqE7D81IiufTA50e8rT92v3by9N2o/4RCwZi0WKyb/NB1f/kjJrGQxPAJMMDlf68XDBirlK2x4wcgABIFqIlBMMKUWeTXh081hLbq60OcyKgjALiS66VX1O8L+l7nZRDDHhaMgTwhm9ZE8eWRjSq3x+uiHNb8jVQgmm8J+mjkPH375Q43xkQaCjwD7zo0ccQnOG9iP/AILgt8h6YEgIAjUCAFO'@; put '4fQ2uTHN+3OZ5j5Ro8bk4KAh0LZPEXqdR+6X5PKiBMG0mJCV4cbP4+wocgjBrPHESq5XG2Ofe0TzZVKFYLKJfM6CxXjroy9rjI80EHwEoqMicOcNV2FQv95CMIMvDumBIFBjBNh3dsInX2MW3acLKThMFmMi0PXcInTpT0FwFNinAsHkFEUZB4Fp5IPp8RS75uhdMro2kXNSYNZgciSl13dJ74Ce'@; put 'rn9MMBctW42Xx318ul3ldwMgwATzjuuvxOCzzxSCaQB5SRcFgdMhwATzwy++xy+/LdSCxE63v/yuTwTOutiBlj05MkYNDabVZkbqTjd+/dB+is+3PtEv7pWuCSZXnHjjuYeplFmCMoE+HFywZsMWKhf57l8BAHqeINK3ihEQglkxPvKrIGA0BMIp0n/S11M0VyZObyWLMRE4Z0QhGndkgqmGBpPr'@; put 'kO9a78K8L8INIxBdE0zO+zb2+Ueo3Fk9LeebYVCtoKNMMLfv2ovHX3pTS4dSwa7ykwEQEBO5AYQkXRQEqoBAREQEvvjhZ3z/yxwtrVUVDpVddYKAiYziw251oG4TMo5ThjEVTORch3zTYg8WTSku86oTqCvshq4JJnsZjP3Po2jepBHloiuqcCBG+ZHTmaRSObzHXxpLiaDzjNJt6Wc5CMRSFZV7'@; put 'Rl6Dvj27aQnAy9lNNgsCgoBBEGCCOXnKdHwzbZYQTIPIrHQ3w+xEMG8vQHxddcpEMsFcTdkNV86ylR6ubr/rmmAyai89fi86t2+jTDUfJphHMzLx1CvvIC09U7cTQzpWOQRioiM1H0wJ8qkcXrKXIKB3BESDqXcJnb5/UXFEMKkOeVQc5b/lfLSnP0T3ezDBXDwV2PinEEyfCeup+25D317dlQqg'@; put '4GoiTDD37E/1GU7SUHAQ4DRFt15zKYYN6KvUHA0OmnJWQSD4CLAP5kTywZxK6eTEBzP48qhOD5QrE0kgMMGc+6UJu9ZaqwNJUI7RvQbz37ddp+UYzM/PDwpA/jgpl5574c33sX7zdn80L20GEIFIqhF93aXDcfkFQyTRegBxl1MJAv5CwJumaOb8RVr5UH+dR9r1HwIprVwYQFV8LGY1tJeMFKcp'@; put 'mjXJgtTtQjB9NnNuufpiXH3xeWo9vKlu8evvfYKFS1f5DCdpKDgIcF3pi4acg1tGXCoazOCIQM4qCPgUAYvFglfHT8SSleskENOnyAausZbdXDiLq/gokgMTHJDipjrk74ch86Ax6pCztHWvwbxs+CCMojyDKmkwORcm51mbOut3loEsBkbARrLs07MrHr7zJmUC0QwsDum6IFAjBDjLR0FhIZ4f'@; put '8y627txD/IRCkGUxHAJdBjjQZRDFkitSxcdEZSId+S5MHW+cOuQ8aXRPMAf26YlH/zVSKYLJ5SK/+3k2PvmWPHZlMTQCFnogtWnZFM8+cAfsVGJOlYpThhaKdF4QqCYCfG9OPXxEI5iH0tKr2YocFmwE+lxciBY9qZyiIknWzVQmMueYm+qQ2+EoMEaZSJ4DuieYZ3Ruj9EP3aWUdog1mPMXLceY'@; put '9z4N9nUo568hAkwo69VJxHM0RxulJCs1T2sIjRwuCBgOAfa/XLpqHd744HNk55wwXP+lw4QA3ZMH3+hASiv6TGZlFSLI2f/yaKobv5AG06PZy40had0TzJZNG+HVpx/QSiOpoh2Saj7GuDgq28sYiiT/1y3XoP+ZPcQPs7KgyX6CgA4R4Ajyz7//GT9Mn4P8gkId9lC6dDoEbGFunHebA/FJ6qQo'@; put 'soaZsW+TG3M+M04VH5aT7glmct3aeIOq+UTQha9KPXLOhbn3wEGtmo/cxE53u9D/72FhNgzpfxbuvulqSbauf3FJDwWBMhHg+zL7XL7wxntYv2WHMuWJyxyswhuj492UZL0QkdFEMGmcKmgwi6v4uKmKj91QktM9wVSxHrkkWzfUNXLazrI8mzSoj/88cjfiYmPkwXRaxGQHQUB/CISRD/XWnbvx'@; put '0lsfIj3zuP46KD2qFAJ1G7lw7o1OWG1qmMd50Ewwl88A1v5unCTr3G/dE0x2un599ENo1rihUv5tHKk4+rUJ2EZ1yWUxPgJsJueSkWf3FjO58aUpIwhFBMQ8robUm3Z2ot/lbqrg41ZCe8lSYYI5bzKwc7UQTJ/PUtYM9ejcQSnzI/keY8y7n2DRijU+x0saDDwCVsqd17t7Jzxy181aJLkq/sKB'@; put 'R1LOKAgEHgHOfclBPc+9/i527tkv2SACLwKfnVG1FEUMDEeRz/zYgkO7jJNknfutew0md/KBUddj6Dl9lUpVxJHkH335PX6a+TsPURYFEIgn8/hjlFKrc/vWSr0MKSAaGYIgUCECXH/859nztRKRuXnqVI2rcNCK/tj3CkpR1NUMjyIpisgDC04nJVkfH4asdOMkWefpZQiCeeMVF+Lay85XjmBO'@; put '/20B3v30W0Uv89AbFidd70tJ1x8YdYMWkCZazNCbAzJi4yHAWT2YVD5P2svt5LLkpjQ3shgTAbPJg3NHOpDUhGRIOfJVkKSZkqznZrsx9R07CvONkwOTZ5AhCOawAX1w/+03KEUw+aa2ct0m/IciFmVRBwEO8vn3rdfizB5dJGWROmKVkSiMAGsvv5n6Kyb/9Cvy8gsUHqn6Q4uMdmMopSiKSVAn'@; put 'RRHnwEw74MH0CXYizBwXb5zFEARTxWTrTDD37E+VVEXGuVYq1VNvZZ8n770NMdFRElFeKdRkJ0EgOAhw5Piefal46e0PqYJPWnA6IWf1GQKJ9V0YeksRrGE+azLoDdnsFuxc68bvXxkrRREDZwiC2bRRCl575kGwI7ZKZses7Bw88fLbOHTkaNAnsXTAdwiE28Nw0ZBzcPPVl4gvpu9glZYEAZ8i'@; put 'wC/5bA7nYMulq9ajyOn0afvSWOARaNqJIsivUC+CfM1cN1bMFILplxmVEB+Lsc8/ivi4WKU0Qi6XWzORr9u8zS+4SaPBQyAuJhr3UHWffr27K+XaETxE5cyCgG8R4LREP/wyG1/8OF1M476FNmitdR1UhM4DyPfS5VLC/5KB5BRFC74zYdtyY0WQc98NocG0Wi2UC/Nh5XJhmkkj++6n32DG3D9Y'@; put 'FrIohAAnX29Yvx4evfsWbd4WUt5TWQQBQUAfCLDf5bLV6zGWao5nHs/SR6ekFzVGoP8IB5p0oGZIeaNCgA8DYuEURZOsOLjDWBHk3HdDEEzu6OgH70Cvbp2VMjlyEvmfZs7Fh1/+yEOURTEE2B+zXavmeOjOG1EnMQEOh0OxEcpwBAHjIWC327F73wG8Om4i9h08rJTblfGk4bseW60erURkQjIR'@; put 'G2KXKhBMTlFU5OAURXZkZxorgpwlaxiCeecNV+KS8wYpZW5kH6BV6zdr6TF8d5lJS3pCgLXv3Tq0xX0UWc4uHkVFRXrqnvRFEAgpBJhcss/7axMmaVXUuPa4LGogEJdIAT63FSE8kogNDUkFgskJ1rPTPZhGBLPIYawIcp5VhiGYHDRx980jlCKYbEZNPXQEj744VsvDpsZlLqMojQDnx+zZtYPm'@; put 'k8mR5UIySyMk3wUB/yPA5DItPUMzi6/fskMpf37/o6f/MzRs7UL/a12wUAJMFcglI24NMyN1u5uq+ITrXwBl9NAwBJMf0KMfvEs5MyMn+H361XcoZdHBMsQjm1RBgEkml5K8+6arEU11y50SsaqKaGUcBkCAyeVBSkP01kdfYuO2nUIuDSCzqnax09lF6DZEvQCfjYs8WPyTMfMuGYZgNk5Jxmuj'@; put 'HwI/qFVKVQSTmdJkTMIfy1ZX9XqS/Q2GAJvLu3dsh/tuuw5cVlJ8Mg0mQOmuIRHgaPFde/fjzQ+/0OqMi1nckGI8bafPvqoQzTqZKIJcHQ0mR5D/SSEam5fYTjt+Pe5gGIIZEx2ppSriYAkXpSBQZeHcnt9Mm4nPv/9FlSHJOCpAgOV9Vo/OuIVyZNarkygkswKs5CdBoCYIsAsSay5Xk5/7BMrW'@; put 'cYDckZRSTtQEHMWOtdrcOI8q+NRSKMCHRcRVfGZOtFAEufFSFHH/DUMw+Wbx8pP/Roc2LZV6KHOqomWr1uHFtz5kecgSAgiwJrND6xa49ZpL0bxJI20+y4MvBAQvQwwYAvwix0GUs+Yvwmff/aylIuJniCxqIlCrrhtDbimEPYpkrIgDJk9Xx8kI8hwDRpDzTDMMweTO3k+mxaED+ipV45lvevxm'@; put '/ZgE+rCIQ2bhh1+TBvVx/eXnU/qtTppPplsiWkNG/jJQ/yFgs9lQSCnBfp49H19NmYGCQkkP5j+09dFyk44unH2li9ITqWMe5/yXmUc9+GWcnZ4Pxnw5MhTBvHz4YNx+/RVKRZLz5ZlfUIhnKNBn594D+rhapRcBQyAhPg6XDhuA88/tjzB6MEqEecCglxMpiAD7W3Iwz+SfZuDP5WukQo+CMi5r'@; put 'SN2HOdCpH+B2qkMwuQb57vUuzP3CmBHkLCdDEcwzOrfHcw/frZSJXBMCabPe+fhLzFm4tKxrR7YpjkBkRDj5ZXbBiIuHoX5SXTGZKy5vGZ7vEfCaxNnf8vMffsGOPfuV8tX3PWLqtMi6vcE3FyKlOVnH3R5VLORaichVczxYNduYEeQ8wwxFMBsk18WYZx/SHLdV8lnjij5sznnv8+/UuepDcSRU'@; put 'PiIyGrBHeHAsrWpVF7jqT7MmDXHVhUPQm0zmvEgqo1CcRDLmqiLAgTw5J3K1e+jPcxbgWFZ2VZtATIIbucdNcLuNaYqs8oAVOiAixo3htxciKt5MJnJ1CCZrMOd+YSItpjEDfHiKGYpghtvDMPY/jyIlqZ5SD1/2x9uwZTue/d94KqEqlSWMeu8LI2LZY0gREhsAcz+zIje7aiSTx82J2Af17YlL'@; put 'hg2kKPPaWmlUlV6mjCpb6bf+EGCtJf9t3LpTM4nzPdRR5KxyR9v3caLbQDc2Lzdh7TwrigqFZFYZxCAeUL+FCwOvddJcUIdccoCP00n+l+/acbyKyoogiuIfpzYUweTeP/fQXVQVpaNSNck50CfzeBae+L+3cORoxj+EJBv0j4DZ7EG9JnSju8EJm82CPRtclL+MyntV42FlpYdmk4b1cRn5HPfu'@; put '1lHT2EvOTP3PAelhYBDg+yVrLdMzMjF97h+YMXchjmefqNbJG7Zxos9lbkREe5B/woM5E8OQfpie7h4hmdUCNAgHdepPCdbPVSvB+t8lIsOoRGTVFRVBEEOZpzQcwbzl6otx9cXnKRfo4yLfkVfHf4xlqzeUKSjZqG8EwiLc6HVBEVp1N8Pp4DytFmxe5sGK6bZqm93YN5P9ji85byBaNWtC7biV'@; put '0tzrW6LSOz0iEBZGD1yqgrVk5VpM+XUe+Vruo2uienmR4+q4cc7VDsTVI1MeGY6sZJJcORvY8IcVzmq8GOoRL9X7xNadQdc50LAdjdSljgaTS0Tu2+TGnM+MG+DDc89wBLP/mT3w+D23KpWqiAXBpp5vplLCdXJQl8VgCJDvZWKyB+fe5IA9kipJ0MsCmzjcHnJ9WACsmmOj79XTiPANNCE+FoP7'@; put '9cYwStHFQUAcaa5SsQGDSVu6GwQEOPUQL9t27sGUmfOwYu3GGkWIs580V35JbmEq9tuj3IlmqxkZB9zk9xZWLfeWIMAS8qeMiPJg6KgCxNZSy/+SK/gYPcCHJ6fhCGbTRil47ZkHNUKmkm8a+2FyBOTzb7wn1SYMdtu02jxo09uFnsM9J7WXxQNgTulykVznmLDxz5qV+mKCmlS3Ns4lojmQfDTZ'@; put 'P1OIpsEminS3yghwACS/fO/Zn4qZvy/C74uWIyuneuZw78nZV6/XRQ607EYXKOdN9Cbm1r56MO/LMKTuNFPJweq9FHrPI2v/I5DczIVB16vlf8mo2UiDOecLM/ZuMG6AD4/DcAQzItyOt//7OOrWTlRKi8MEIi09A0++/DbSM4+zbGQxCAL2SA/6XlGExm1NpxJM7j+5z7C5bdVvZDJfXPObhZnm'@; put 'SXK9OhQI1EsjmnwdsOlc8mcaZLJINyuFAGss+aV7/8HD+G3hEsz7cznSjx2v8cs32RfQdYgLHfuQTZzs4n+Ry5O94sjdNfM8WPc75aQVM3mlZBXMnTqdTf6XQ9Tyv2TFRFGRGz9PsCM73RJMeGt8bsMRTB7x8w/fhTO6qBXow+MSP0xGwWiLh1KckJnmZgeiEujxRX5AJRdNB8Ik00Ekc45vSCa3'@; put 'z0SzLtUyH3DWGejfuzsaplARXlqYaKqk2dcGJf+FBAL8ks3EkufvvtRDRCqX4ffFK7QXbp/MaWq30wAnugwgbmly/YNcMsgWmxkHd3ow/ysbCvKMG1wRChOG58TgG4rQoDXdcxXKf8n1xzMPE8EcH05KNGNr0Q1JMG+68kJcc+n5ygX6sDno22mz8Ol300Lh/qDEGE0UPZ7cnMw0lCbDxC+bp/JL'@; put 'bYx/k0yQZsSKdQss1fbJLAu0WnGx6EWZFdg/uVWzRoiKitKStYufZlloyTa9IcCaSiaW/HK0ffc+zP1jKRZTEM+xrBzfdZXISEfSdnUeaILFSuSynGxwJirPl5flxsyJrD3iK9fYD3jfAai/liJjPTjvtgIl819uX+XBgm+Mm2DdO1sMSTDP6tEZT99/h1KpilggfKNdv3k7Rr8m+TC9E1Tva4vV'@; put 'jRZdPTjrUhdcZNYob/GSTDf7ZM4in8wlpKkpf/fymqlwu53yxLZp3gRnk0azW8e2mp8mv+Vzwnapc14hdPJjgBFgbaXXvzIrOwfrNm/TzOBrN22tUfBOWcMwUxBex/5OdDqH7rEWijin666M98DiQ+lCdVMqzTmfW5G2x1LtDBBl9UO2+RaBhq1d6H+ti/J1qFMekhHiAJ9FP5mwaVHNXap8i3jV'@; put 'WzMkwUyhSNoxox9COOVC84nppOq4+e2IbHJgf+Llt6ie7lG/nUMa9h0C1jA3OvR1o/sQD/lsnT5diuZfU2imFEaUDmU+JXX2Q44zflFJIK1m907t0Lt7J7Rp0RRxsTHatSJk03eyl5aqjgAH7Hi1lexfuWTlOixasQZ7ySRe3XRDFfXCaiWfy3OL0LY36SLNREQq8VLHOQgXfGulXLZmuA1uoqwI'@; put 'G6P/1p2KWnTq71Gq/jgrzPkZMeNDG9L2Gtv/kueXIQmm1WrB66MfRrPGDdULbqDZNfaDzzB/8UqjX/8h0X+b3Y0ug1zodDb5P1aCYDIoZrNJ863ZtdaDNXMpJUqWpt/0C16sJapfrzbl0+ygEc4WTRsimkzootn0C9zSaBkIMKnkechz7iglR2dt5eIVa7GeKu+cyM0v4wjfbLJTbtqe5zvRvAsH'@; put 'i/8zoKe8s7Af5uKpZmxfaSGrhP+uzfLOL9tPjwAXthhyi4OKW7D/ZQUa6dM3pas9+NnALho/jbejUAEfYEMSTJ4RD4y6HkP691EvHybdiGfO+wPjJn2tq4kvnSkbAVs4lYccWoR2Z5oqTTC5JQ7S8dDfIQooWDXbivRU/7+t2mxWNEiuh64d2qAHJXBv3rgBYmNiNPM5+2uKz2bZMpatVUOAzd9e'@; put 'v0p2zcik6O+tO/dqfpVMKtMzjlFMRrlG6qqdrJy942q7Nc1lk/acl7by5JKbY4K55Gczti0XglkOvEHfXKuuG0NHFiKM8g6TB0T5Lg9B72nVOqAlWN9CFaU+sVftQJ3ubViCef7gs3HvyGuVC/ThmzPnfHvqlXeQm+e/t3udzkfDdUur4HO+C616VF6D6R0kiVozhxyn6qBrfrNhz3qOWg2MxoSt'@; put 'AClJ9dClfSt069AWzZs0REKteC34iIMtmBio5n7ixV3WvkeACaVXU8llTdMzj2Hz9t1YRbl9N2zdoZFKF82pQCz1W7rQdZATtVPoWiqZ57KSJxeCWUmggrhb6zOc6H0xMUt6Mfbvq0pgB8n+lytm0vNgbs3yJge21+WfzbAEs2XTRnj16Qe0B6JqD0IHPeD/QwnXN27dWb7k5BddIFBMMJ1EMKum'@; put 'wfR2numkyWJGYQGwdRkF//xhJdNIYEimtw9c+7x2YjzatWxGwUHtNJ/NOom1wGX5mGiK36YXKVl7EeAXYS+h5G3ZFKiTejgNm7bv0kzg23fto/rgOQF9SbGRP3TrXi6yJrgRGUfc0lm90oFCML1S1u/6bCrx2awjydhFL8L67WaVe8YpimZNsiJ1u/8tWlXuXDUOMCzB5DrNY59/hKqb1FHOtGe1'@; put '2vDlDz/jq59+rYZI5ZBAIlBTguntK/vesH7n8A56e51HEaz7gnODYeIQExWJFvQC16ltK7Rv3RwN69fTTOn8G5NNNqWr9lLnlYOsy0agNKHMy8ujwhCZVAt8PzZs2YEtO3cj9VAanDQ3grEkJLvQ+RwXGrbhSHEK/CiVj7YqfRKCWRW0Ar+vVh7y9kLEUt5hE7laqEIwNf/LEx5MfYdysOYG5/7v'@; put 'a2kalmAyEE/eexv6UUqWggJS/yi0sGZg3aZtkq7IADL1FcHkoWomcyKaudkeqvpjIR8wKxwFgdVmloacTenJ9BLHkegdiGy2ataYqmglIDIyUttVzOmlEVPju9fkzfciXphQHqUKYzuJUG7ZsZt8KvfgwKEjPk8pVFX0wuweNOvGWksX4hIo3oMTbteQcQjBrKoUArt/wzYunHONi4qkqaW9ZP/L'@; put 'A9s9mPUR5b/kh4ECi6EJ5mXDB2HU9Vcq54fJ84r9L5+kdEX7Ug8rMM3UHYIvCSajVGwyJ20mqTMP7TRpSdmP7NbP2yxbDlij2apZE3Ro0wKNqYIQm9O9hNNrTpe8m8aZ86ydZELJkd78mWV3Ijf3Lw0lm7u37dqDg0eOBp1QlkQ1qYkL7fu6kNKyWGvJVbRqyC215oVglkRZf597nU9pp84iWTvV'@; put 'Ipia/+Vsyiwyx/gJ1r2zxtAEsy1pVV5+6n7NXKeayc5MmoP3P/8Ov8xZ4JWVrHWIgK8JpneI/AKrmUxygZ2rKG/mUgtyj+uvdF0x4UzSgoT4emzSsD7qJiYgOjpKIy18XXpJp2rXqFdWRlp7yaRXQ8l9ZwtQ5vEsHEpLx+59qUQm92prNoGzP7jelthE8rXs7USLTh6Ex3Bi9JprLUuOUQhmSTT0'@; put '9Zn9bIfdVoRaSR6loscZZfa//HWiBYd2GD/BunfWGJpgRoTb8eZ/HlXSD5NNU0tXrcOLb33olZWsdYiARjAvoCjy7lWPIq/McLR0RsQrjx/xYAuZzXett1A6JP0RTe9YwsJsqFc7USOazRo1IOLZgPJw1kV8XAyiTprVhXR60fLvmkkkE0rWTPJnxj0/Px9czCGNUgVxvW/2odx74KBW2CEnN0/T'@; put 'Xvq3V9VvPTLGg+bdnGjZ3YXYRHoD46I8NbWHl9EdIZhlgKKTTay1HnorJ74k4ZO62hcaaz0MjZUJuTluTHvHjgIF8l96MTU0weRBPH7PSKrBfIZyfpg8No7CfOKlN3H4KOWxkUWXCIRFUB7MYWSy6VW9KPLKDIrN5mYreRyRf9nh3cCmJfSWu81KmsHKHB3cfZjgcNBQvTqJaNygvkY8G6UkIalO'@; put 'bdSKj0VEePhfSbg5eIjNs/wn2s7KyY3x9f55Tdz8nbXGOSdywWUYj6RnYP/BIxqh5PVh0lTydn+Qs8r1ump7Rca40aQjlWQlX8uEJL4aSGPpI3N4WT0RglkWKvrYxgE+nSkFVQt6ybCRxk/TXuujazXqBftf7t/swexP1ch/6QXD8ATz/EH9cO+t1ynph2kircP4iZMxa8Fir7xkrTMEbOFUJnIw'@; put '+4L5R4NZcrjEGyg1jJmqVwEHd5JGc4mV/DSZePJD1zgLEyA2rdemvJv1k+qgQf0kNKDyr/Xr1aFcnHGIJfM6+3R6A0zKIp6hREC9BJLXjIlXM8kYFBYWIr+gEMezsin35HHNzM3BN4fSjpJWMo1M39na78aZHX/3NCrOgyYdqBJPNzcS6nHcAxMK//vdCcH8WwZ6/dSwjZPK8zqRkMzJ8DmrhV57'@; put 'Wrl+sf/lkp+pfPBCNfJfekdteILJ1Ug4HybfeFV76FjItPXnslV4ZdxEr7xkrTMEmGB2G8z1yCtXi9wX3WeiyfWSnQ4mmiZsW2GmtfGrjjBxioqMQEJ8HFUcqktazkQkE+nkqHXeVkw8I2Cn/Jxcz9q7lNR68j2Av3sXvd4TmCx5Fx43L7z2/nl/Y3LtJZEnKJL7GBHGjGNZWgAOm7bTqPRiJn1n'@; put 'a0dBIU0IBRau0tK0swuNO7gQz6bwABFLL3RCML1I6HsdGU3azMFFaNHVQ1aQk764+u5y2b3jKU5a+V8+CEP6fv0EdJbd2aptNTzBDKPyd2889ygaNUjWzEJVG76+9+aH0DHSTIiZXL9yCgbB9KLBHMVCpvMiCnJI28vBQFbs32pSooatd4zetY3SJcWQZjMuNgbx9JdIms7aCbU04plApva4mGiq'@; put 'sR6paUbt9jCNhPJLJ5uNy3r59JJQ75rPw2S0NCEt/d3bn5IEkbfxd++2kp+95LHkcUwavflEC6nqDRPD/PwCMIHMzsklbWSOdt0zkeTgG/7LIr/JE+QjydrK8vrkPYcR11abB3WbuNG8E0eFU6L0WNLMk1YqGJHCQjCNNYMatXORNpMCf+oZU5vJyoKsdPK/HGeHs0i//vXVmRWGJ5g86H/dfDUu'@; put 'HDJASTM5R5OPm/gVZs0XM3l1Jri/jwkmwfSOzUs02Ucz85AHezZasWeDGdnpat2svOMta82kjgOMIux2RETYERURoRFSJp2sFY0mk3tUZLj2OZyCA8PD7LDbbRoRDSNtKNdp54pGxSZoYu6kU7CSO4LJVBwcU/qcHipB6C196KJqIpxgnMkqE8aiIqdGGjkC2+Eo0ohhHkVq5xGJ5PRjubn5Gplk'@; put 'H8lcCrrJzy/U9udjVSSPpbHzfuexxtYGGrV2olEHN+o0AKw2E1xkBueqA8GyegrB9ErIOOsICgDrOqgIzbu66aXSWL6ZbB7fstSDP35QJz2Rd+YoQTD79eqGJyjpOpuSVFtYA7J8zQYtmjyUHj5GkaMeCKYXK6ZFHAxkMnm0ZO0HdwB7N9hweI856AnbvX3U41ozS5/UQHJiea8Gkgkn/8YE3ruw'@; put 'rxd/dxKpZELJf05nMbnk65MDZ+Q69aJV9poDNeo2pcCd9i4kkdYyKo4NhEQKivzvX1l2j07dKgTzVDyM9I3dKrqR2TwhyQJnoTHqlNvsFvw+2YSda9RJT+SdM0oQTA4WGEvpitiEVtLk5R2k0des6eCk6weoFJss+kJATwTTi4zGh0h5yWTJSdqgY4c9ZDrnKEULfSYzUnCq+Xm7J+sQRMBO2RZq'@; put 'N3ShUVsXkpt6EFObEruzHzGR82BqK8sShRDMslAxzrbIWNJmDihCs+7km0kujXqONOeXVUcBmcfH23HiuFr+lzxjlCCYPJD/PnoPunZsSyYpNRzdeUzehYN9Pv7yB0yZOc+7SdY6QUCPBLMkNEw2zTYKHqEPBfkeZBwksrnFgoM7zMhKM14EesmxyWd9I2CPcCMxxU31wd1IIlIZVxfkisAmcDJ/'@; put 'kwY4WCbw06EmBPN0CBnjd9aQdzuXk7LrV5tppXtz6g43Zn4cbgxQq9hLZQjm5cMH4XZFy0aymW795u0YPWYCaZ9E/VTFOe7X3fVOMEsOnt+WOSiI1/m5bvLXBFIp+vwwpTo6dpi0SYo5mJccu3wODAIRFNlbhzSV9VuRprIxaSrrkC8rkUoPkUq3jkllSXSEYJZEw9ifo0ib2UWLNGfXFv/mT60O'@; put 'Uux/uWw6sG7+31kxqtOOXo9RhmC2aNJQS1fEZExFHyiONH1uzHhs3blXr3MpJPtlJIJZUkAUu0IBLcVks7DAQ9pMN47s4zJlZqQftCA/m/ZmJiqLIFABAmZ6aEcnUIBOIw9SWri0dXQtrh5E2nHKbmAUUllyiEIwS6KhxuemlJ2g60AH4pOscOnFN5Nur8xVZnB6ogPqmcd55ihDMNkhf8zoh9GM'@; put '8mJyChDVFk638t3Ps/HJt1NVG5qhx2NUglkSdKaRHBzE6TI4gvdElgfHDgKHiXCm7aUUGkctcOQL2SyJWSh/DrNT4vPk4rRCyRSsUyuJ0grF0MsKvdyzzy/8WGUnELgLwQwEyoE/Byfu7zLIQXkzi9+d/VkNqjKj49rjmQfd+PldO1km1cz4oQzBZIHeft1luPz8IUqmK+LIVq7Q8diLY7VUJ5WZ'@; put 'wLKP/xFQgWCWREmjkScDhEDaqaJCIpzHgczDZqRRNPpRIp45aRby5xTCWRI3lT9brGTqTiBC2chNuSpJS9mAtJbxQFg4WYuYT5LpW2+BOjWRhxDMmqCn/2ObdXGSNpOS+NelF6IgajPZPL5uoQfLflYvPZF3FihFMLt2aIP/PPIvJTWYLDBO5THm3Un4c/kar/xkHWQEVCOYpeFkGmkizSb7bvIM'@; put '1Agnmc+z0kxITyXfTfrLPEI+nTkSnV4aO6N+t1DS8xgikAn1XahHhDKhvgfxtT2wRxancOJyjW6Daykrko0QzIrQUeO36HjOm+lAsy5cICE4vpmswZz1iQWp29RLT+SdJUoRTK5vPPb5R5BUt46SwTBSOtI7bfWzVp1glkZa01sS4SxOQu6hlzkPCvJIy5lJVaeOmJBxqDhgiJO8F+ZSbkOPaDpL'@; put 'Y6i372GUQiiW/CgTUzxIbOBCYhJpKBPdlLDeqr1c/OVLqdewbx8DKgTTx4DqtDn2f+TE7F0GOlErwNpMdkfKyXRReqJwSlOkpnmcxa4UweQB3XfrtRg+6GwlzeQ8vmzKifn0K+9g/8HD/FWWICMQagSzNNwafaT7o4UTktMbOXmta1rO/FwP+XJyKiQyrx+yaBrP7Ayg8ASlDJFECKVhDNh3WxgR'@; put 'R4qsja9DZDKZfCmJVMbVoWTnsVQJyU6CpHxWXkLJeYRChFOegr8QzFPgUP5LTLwbXSmdUdPOpM2kGR8I30xOrr51uRt/fG9XGl/lCGbvbp3wzAN3KJkPk2eixWLFVz/+gq9++lXpiWmUwYU6wSxLTsVaTpqrFKruJZ1OqtLCpDM/x4wcIprHj5roz4wT6SbkZpnIp7PYn6+s9mRb1RFgGYRFeqim'@; put 'txtxiUQoiUzWqgf67CKCaUJ4JLk9aBk3in0oA/FQrfoognOEEMzg4B7Ms7I2s0U3NzqfQ5HmdSnS3OHfKkC2MDN++9xCZX3VjB73ylI5ghkbE423qKpPAlX3UTFnJKdh2rX3AJ5+9R0J9vHO4iCuhWBWDnyNdNJ/mj/nyfRIXDvdUeBCYR75cJ4gjecxC9VPNyE7kzSeR4E88vUszJP8nBUhzJmk'@; put '7EQkwyn/ZEwtN9X2Jo0k/XFQTjRpZsKjiWhGUI112pG1kRyQw2QyVLWTFWHp/U0IpheJ0FvzNcR5M5uTNpMvEn+8eJnJSpCbQ9Hj4+z00q2ueZxnj3IEkwf14KgbcG7/s1BQUMBflVs42Oe18ROxaOVa5cZmtAEJwayZxDTiSf5IXGnIfJJ4sjahiKI7CylSvZh8msjcToTzGK/NRDxNyMuh30gj'@; put '6ijg1Eqc+7Zm/dDz0VarmyK2vRpJUO1uIo/0IGQzd2QcmbxjSCNJfpQ2ikq1EJDs9soPRibwHv5TGBt/yE0Ipj9QNU6bfP9p1d2FzuSbGZtIwYs+1mayeXz7ag8WfK1u9LhX2koSzL49u+LJ+25HYWGhd5xKrS2U83PZ6vV48a0PtUStSg3OYIMRgukfgWnEk8gSE08T/ceaT20b3fxdFFjkKKIA'@; put 'o0JaEwktIC1nYS4R0BO8JvJJnwv5cz7V+c2jYCN6z3QXAUVURZbJqJuy6gR7sVg84GhtK7lg2aiIhz2SNY2kcYwCIqI8RBpZKwnKL0mfo9ywhpOPZDiRSDKtWdnXlTWSRBw5kTlxSPogRNJXMhWC6Sskjd1OLAW6dSVtZpOOxb6ZnDnBFwtfw3O/NGP3enWjx704KUkwVTeTc07M/IJCPENm8h17'@; put '9ntlKesgICAEMwig0ynZNMz/kccIrTk2hQNUtI9ah1hz52QtHqXUcRK5dDrY1E5rqsHgJKLppHdPRyFpP3k7fS+i7S6NgNJvRRTo4mLNKFei0WgtkTn6TqTW42Zyx6cgOwKd30JKiGLjs4c0sNDIn4nyRtro2WGmtSXMQ8EznOaJCCSRSSsF2dh4bad9iFjy8RZaM2nkVFCsgSxun87ABJLZsLbm'@; put 'UwqJ1ITr5/+EYPoZYEM1z76ZLnQf4iKXE7NmWalJ90PJPM44KUkweWD333Ydhg7oq6yZnCv7TJ05Dx98+QMPV5YgISAEM0jAV/K0XiLKuzN385I3vtFrX0qQUt6n3OUkuWPS99dCTZj5BNzUaRbtMI0rMkktboSTlGufuNHif6dpRX4OBAJCMAOBsrHOEVvbhZ7nFaFRe28J1OJruKqj0Mzjq8g8'@; put '/o365nHGRlmC2bNLB4x+6C5lo8lZe3I0IxNP/N9bSM+kUiuyBAUBJpjdB7vQvi9pwchvUBZBQBAwNgJCMI0tP3/1ni0VrXq5tLyZ0XGWat3vrSfN43tCwDzOclCWYEaE2/EmRZOrmnSdhWcmm9ykb6bgxxlz+assQUCA/eJ60Jtt216mat1wgtBlOaUgIAhUgIAQzArAkZ8oUwNpM4cVoXEHCgA6'@; put 'WdWqMrBo5vFsF6a+E07+4ezbo/6iLMFk0Y26/nJcNvxcZZOuF6cs2o+nKPF6Xr6aEfN6vwQ5MKPXBS6KOhQNpt5lJf0TBCqDgBDMyqAU2vuwNrPNmS50HcB5ZSvnm8m1x7cspeTqP6idXL3kzFCaYHZo3QIvPn4v+cazc3z1fCZKgqXLz2Qqf/ujLzH3z2W67J7qndII5vlOtOohGkzVZS3jCw0E'@; put 'hGCGhpx9Mcr4ui6yYDnRuK2ZggApo8NJ/+qy2uZ5NfsTEw5spai+EFmUJphWSuczZvRDaN6kEYqKKIRUwYVTFq3btA3PjZlAUbPiAxhoEQvBDDTicj5BwL8ICMH0L76qte7VZnYZ6KK0YmVrM7n2+PEMN34ZF07p0ioRFagISEoTTJbR1RcNxS0jLlXWTM5jdNFb0yvvfITlazfyV1kCiIAQzACC'@; put 'LacSBAKAgBDMAICs4Clq1SvWZjZq809tJpvH1/7uxvIZoWMeZxErTzAb1k/StJhhlHROVTM5+2IuX7MBL739UXHePAUvXr0OSQimXiUj/RIEqoeAEMzq4SZHEaEyedD2TCdVAXIjMvqkNvOkwvLXD2xI26927fHSc0B5gskDfo7SFfXs2lHZyj48Rgdlin7xzQ+wbvM2/ipLgBAQghkgoOU0gkCA'@; put 'EBCCGSCgFT5NfD0neg53oSFpMznH7eE9Tkx/P7y4UIPC4y49tJAgmOec2QOP3XOrsknXWahW0tDOX7Qcr737SWkZy3c/IhBGNaB7Dneg9Rll+9748dTStCAgCPgBASGYfgA1BJs0m0mb2ceJHkM8WDXHhPXzQye4xyvukCCYMVGRGEs5MeskJsClaCAMJ14vKHRQsM94bNmxxytfWfsZAZud69W6'@; put '0LGfpCnyM9TSvCAQEASYYC6aYsbO1RatbGhATionURaBhCQXCnJNyMsJjdyXJQUZEgSTBzzqOsqJeb66OTF5jBYqH7lwyQr8b4JoMRmPQCxcW7rdWW70GEa1r6WSTyAgl3MIAn5FgCN+F3xnwd71lEj7ZC16v55QGhcEFEUgZAhm6+aN8fKT95MTLiUVUDQnJo8tv6AQz78+QbSYAbpgLVYPmnZy'@; put 'oe/lLridiuZaDRCWchpBIOgIcECGy4PfvrLh4A5LyPnMBR1/6YBSCIQMweT7xouP34fO7VsrW5+cZ6ZoMQN7fXLUYFITFwbd4ITZSucWjhlYAcjZBAFfImA2wZHrwZxPwpB+mJ4aHn5yyCIICALVQSBkCCaDc+7ZvfHgHTcpHewjWszqXAbVP4a14XGJHgy6yYHYRNKOk/ZDFkFAEDAmAmwezzxC'@; put 'GsxJYcgNQZ85Y0pNeq1XBEKKYMZER2Hs848oHezDE421mH8sXan5YqrqDqCnC8oe6cZZlzrRtIMJTodUU9KTbKQvgkBVELDZLdi+0oMlv1jhyAu9oIyqYCX7CgKnQyCkCCaDMfLqi3HVxecpXdmHx+mg0pj/pbyY6zdv56+y+BEBi82DNj1d6HWhBPr4EWZpWhDwOwKWMDMWUwT59lUU4FMk5nG/'@; put 'Ay4nUBqBkCOYjRsk47VnHoLNZlU22IdnLNcoX0GlIzn5usvtVnoSB3twFFuFhBQXhtzogC2CtB5UulMWQUAQMBgC5H9ZmOsm/0s7MsT/0mDCk+7qEYGQI5gshGfuH4Uze3RRurIPj5NrlL82YSKWrFrPX2XxIwL2SA/6XuZA4/ZmMZP7EWdpWhDwFwJWMo/vWushDaYVhfliHvcXztJu6CAQkgTz'@; put 'jC7tMfrBu1BEZmSVF9Zibtq2E6PHTCAy7VB5qEEfm8XiQeOObvS7oogCfYLeHemAICAIVBUBskTM/9qK/VstlHJMzONVhU/2FwRKIxCSBNNGQTD/e+YBtGjaWHmSSYk/MX7SZMxesKS07OW7jxGIjHVj4DUO1GlsJv8tcUvwMbzSnCDgNwSsYRak7nBj4WQb8nJFe+k3oKXhkEIgJAkmS/j8Qf1w'@; put '763XKR/sYzabsS/1MJ58+S3knMgNqckd6MFarG406+JGn0vccLuEYAYafzmfIFAtBEhZyfrKBd9YsXczaS+lek+1YJSDBIHSCIQswYyNicYbzz2sfMoiFrjVasNn303FN9NmlZa/fPcxAhFRbpx9VRFSWokvpo+hleYEAb8gwKmJdorvpV+wlUZDG4GQJZgs9puuvBDXXHq+8lpMTr6ecSwLz7z6'@; put 'Dg4eORraM97PozebqbJPMzcGjHDCaqdCIBJR7mfEpXlBoPoImCixegFV7vntUxsyDpops4j4XlYfTTlSEDgVgZAmmMn1auP10Q8jMiICbsVT+VhtNsya9yfenvjVqTNAvvkcAZvdg479i9B1oAlFhRLx43OApUFBwBcIEJdkF6Jl083YulzyXvoCUmlDECiJQEgTTAbivpHXYPjg/iGhxSygSPKX'@; put '3voQ6zZvKzkH5LMfEIiIJlP5lU40aC0k0w/wSpOCQI0RsIVbsHWZmwimDQ5JS1RjPKUBQaA0AiFPMFs0aYhXnn4AFnqTVb2sIqctWrtxK14Y+75W6af0ZJDvvkNAS76e7EL/EUVUq5yiyp0S9OM7dKUlQaBmCHDOy8O73FhAaYlysswU5COm8ZohKkcLAv9EIOQJJkPyxL234uzePVBQUPBPhBTb'@; put 'YiIizWmLZs1frNjI9Dcck8WNBi0oAfvlRbBHmig6VSr86E9K0qNQQ8BqM+NYugfzJ1tx7JCFFAuhhoCMVxAIDAJCMAnnTm1b4oVH79E0mKprMTng58jRDDxNAT9HM44FZpaF8FksVg+atHfiTEpdZLFR0I+QzBCeDTL0YCNgIXJ54hhpLr+x4eh+M/nei+Yy2DKR86uLgBBMki2Trucfugs9unRQ'@; put 'vnwkT2ULJZr/Zc4CvPfZt+rObB2NzGLzoHlnJ3qeLyRTR2KRroQYAkwuc7Pc+PMHGw7uJJcoIZchNgNkuIFGQAjmScTP6EzlI4lkql4+kofLhJoDfl586wOs37w90HMuJM/HJLMFkcwzLnBTXlKIuTwkZ4EMOlgIcKWe7AyXRi4P7xFyGSw5yHlDCwEhmCflzUE+/33sHnRu3yY0tJgn65Q///q7'@; put 'yC8oDK1ZH6TRcqWf5p3d6HkB5cgkbYpU+wmSIOS0IYUAJ1LPPOzBoh8sSCOzuOS6DCnxy2CDiIAQzBLg9+7WEc88cCccDkeJrep+tFismPTNFPww/Td1B6mzkZktHrTs7kS3QW6Ex5ikZrnO5CPdUQsBTkV0aJcHi6dYcDxNAnrUkq6MRu8ICMEsISGr1YIXH7sXHdq0DAmSyabyrJwTGP2/8dhz'@; put '4GAJJOSjPxFgc3mDVk50H+ZBfG3A6ZAURv7EW9oOQQTMXCLXjN0bgGU/W8n3koN5JKAnBGeCDDmICAjBLAV+nzO64Mn7bg8JgslDt5JD4OIVa/DK+ElwuaTqTKnp4LevXFIyMcWF7kPdSGkOFHGeTOGZfsNbGg4dBMxU/pErs21facWKmRYUFRDblEUQEAQCjoAQzFKQh5oWk4cvuTFLTYIAfo2O'@; put 'd1NZSSdadKfgH4skZA8g9HIqBRGwhJlReAJY+7sZO1bRZ6nQo6CUZUhGQUAIZhmSCqWIch4+1+NNS8/E6DHjcfDw0TIQkU3+RMAW7kbTjm50PseF2AQqLVlEqkxJ/uxPyKVt1RAwm8gaY0LaXmD1b1SlZze/rIlJXDUxy3iMhYAQzDLkxRHlLzz6L3Tp0DYkIsoZAqvNhoVLVmDMu5/CReYlWQKL'@; put 'AJvMayW50GWACw3aerRUUm6nsMzASkHOZkQEOL+lk17Ktq0wY9NCK7KPc+FHIZdGlKX0WS0EhGCWI89uHdviOcqLGUp+iZqpfCKVkVwgZSTLmRZ+32yPcKNZFxfa9/EgjgKAioqIZLqFaPodeDmB4RAwkdbSQlrLzEMerJ1nwf6tRDQd4m9pOEFKh5VFQAhmOaLlCOvRD9yBXt07h0SNcoaBTeVc'@; put 'PnL0a+ORejitHGRks78RMJkouryeG+37utCknRu2CDL3idnc37BL+0ZBgJSTNtJaFuR5yM8S2LTIhpxjrLEUraVRRCj9DA0EhGBWIOd2rZrhxcfv025bqtco98LApvIlWlT5RDidElXuxSUYa05nVL+5Cx36uFGvKZnNSWOjEc1gdEbOKQjoAAE2h7sp2wWXetz4hw1H9oB8LUVrqQPRSBcEgX8g'@; put 'IATzH5CcuuGRu27GzJmaHAAAQABJREFUwL69QkaLyaM3U5Wfj778HlNnzT8VDPkWFATCIjxo0tGFNj1dqF3fRJVI+KEqfrJBEYacNCgImMkUbqYXrIyDbmxabMXeDRY4CkRjGRRhyEkFgUoiIATzNEA1bpCM/z3zIOxhYVputdPsrsTP7B5wIjcPXEZy++59SozJ6INgDXpUjAdNO7nQsqcbCfWI'@; put 'aBLHFKJpdMlK/ytCgHNaMrnMJo+drStN2LnKgtxsCuGhe5QsgoAgoG8EhGBWQj533nAlLjlvEPLz8yuxtxq7WEiLuXHrTrww9j3k5ReoMSglRuFBRAzQrFNx7syEJB4Umc5ZoymxQEpIWAYBCt4xw2QBso+Sn+VqM3autiCHosPhEWIp80MQMAoCQjArIanaCfF447lHERcbHVJR5Vzl5/tfZlO9'@; put '8qmVQEl2CSQCHmKTkdFAo/YutOjGpnOP9lB2cmojiToPpCjkXL5CgLgjl3fk96TjR4hYrjFhzzoK4DlOG4RY+gplaUcQCBgCQjArCfWVF5yLW6+9PKS0mGyGKipy4vX3P8PilWsriZTsFmgErHY3GrR0o0VXCgZq5kF4uAlOF1FQ+pNFENA7Ahy8xknSucBAxgFg51rysdxoQT5V5JHIcL1LT/on'@; put 'CJSPgBDM8rE55ZeoyAi8Pvph1E+qS9HVzlN+U/kLpy46cjQDz1LqosNp6SoP1fBjs1jdVN/cg+aURzOltQextdikCJqvYj43vHBVGwBrK6k0KsgMXpDjQepOE3atMVMFHqodXihmcNXELeMJTQSEYFZB7sMG9MF9t14XMtV9vNCwqXzZ6vV4ZdxEOIqKvJtlrVMEOI9mVJwbjdpRUFAHJ5FOyhto'@; put '59J5HkrxIlpNnYotJLploqAdK/3xS8+xI8C+TRbs3WTG8aNkGncJsQyJSSCDDBkEhGBWQdSsxXzm/jvQqV2rkCOZFosVX02ZTn8zqoCY7BpsBDiXZr1GLjSmWucpLUirSbXOObErk02P+GoGWzwhcX4mlRb6Y2169nEPDpO2cs96M9UNp1RDoq0MiTkggwxNBIRgVkHubC7mEpJP/fv2kEq+zhCx'@; put 'P2aho4hqlX+CZWs2VAE12VUXCJBWMzIKSGnlQsN2LiQ14mh0Cz3zPaRNoie/kE1diEmVTvxFKulOmZvlwtH9ZuzbbMYhSpCel03aSlGkqyJqGYcgUC4CQjDLhabsH8JsVvzr5hEYOqBvSAX8MBqcuoj9MJ8bMwEHjxwtGyDZqnsETGb2z3Sjfis3GrYmv80GoIh0fuh7RLOpe+nptIOkoORE6Fwb'@; put 'nPOz5ma7SUNpxoHt5Fe5g/LqZvH8op1kEQQEgZBBQAhmNUTdKCUJLz52X8ilLWKo2B9z5bpN5I/5MfILCquBnhyiJwTMFjabE9lsSWUpW7hQpwFpOkmzCdJ4aj6brNkUbZOeRKafvnD0N5m+TRSrwyVMsylPZdpe4OAOC47sNp3UVAqp1I/ApCeCQGAREIJZDbytVgsuGz4YI0dcGnJaTIaLSeZP'@; put 'M+fhgy++l4oa1Zg/ej2ENZvRpNms19iDlJaUW5PIZkw8aaVsxVopTn0kpnS9Si8A/SKuaCFSyZV12JG3MNeJYxScc2SviUilGZmpFhTkcT+EVAZAGnIKQUD3CAjBrKaI4mNjMPrBO9GqeRM4HI5qtmLMw9gfk5VaEyZNxqwFS4w5COl1xQiQBjM8Akio70Jy8+JAobh6QEQUVVgh/uBxUfoj1m6K'@; put '72bFOBr5V5Izm721co3sg13gQm4O56okUrnHqhHLLCKYbon+NrKUpe+CgN8QEIJZTWjNdMPt1a0THvvXLVoL7L8WSguTzByqV/7yOx9pJSVDaeyhOFY2pcfU8mh5Nus1cSGxvhuxtSlQKNKqmdO1uuic3J2vg9C6FNSZDkQoWUNpIg0lX9/OQiKUWR5kHjHj6D6O+jbheJoZhfm0o2gp1ZG7jEQQ'@; put '8BMCQjBrACwH/Nw78lqc2/+skDSVc9DP/oOH8Z833tOSsdcASjnUYAhY2Jye6CENp5v8NilQiEpVxhHhDI8ivzwbabWIaHIlIRcFfIiWU4fC9WonmVCSDyWXYszPd5LfpAnHDpmQTlrK9FQzsohcFhQU/67DUYR8l2z0DLKH2RAVGYnwsDDY6LM3RJ/f85xUia2ALGx5efnII0G6tAsy5GETAAKE'@; put 'gBDMGgLdILkeBfzcg4Ra8SFV4ccLG/tjrli7Aa+OnyRBP15QQnBtJpN6RCyRzLpEOpPcSEj2IJ4+R9E2O5nVuRQgazfZtM7k0y3BQ4GbJV7NJAXkEJ8kBTOVZSTtZP4JD7IzyHfysBkZRCozD1JKoWNmFGkeP6yllEVPCERGhCO5Xh00bVgfjVOStapyibXiEBsTjXA7kUubjYKuLKf4xTtdLi1n'@; put 'M6eYyzmRi6MZx5B6OA17DxzCngMHkXoojdLPhZaLl55kqnpfhGDWUMKsxbtgcD/ceePV9KbPr/qht1jpxjZ9zgK8+9m3xSbS0INARlwGAnRpIDKWTOl1PKhFZDO+jovM6rQt3kWaTjPCqLoQ+/hpxJMt66zxZLWLmNnLQPM0m5gPklmb85lzDkr6qBENFwFamOdEfq4ZJ46xiZs0lEQos2idTd8d'@; put 'eZKT8jTIBvXnlKQ66NS2FTrSX/PGDVA7IR6RpK3U/ODpOuGyxcXXT7F7Cn/m30ou/J3/OI+z94/3O0GEMy0jE1t27Maq9ZuxadtOHMvKKXmofBYEaoSAEMwawVd8MFf4efLe29CVkrAXFoZm6h6z2YJJ30zBjzPm+gBRaUJVBLiMpT2CUiGRZpPJZkxtIqAUuR5di4hnHJnYIz2w2oGwMCs9FAkF'@; put 'IpyauZ3LqdNDkasPMQcNOT/Pk5yBrdmshmRizqZtjWjQJlehm4Jw3CjIp0TmWUBOOnCctJM5FISTfYzzUrJPJTdyKvng5mTRFwJ1EmuhZ5cO6Nm1I1o0aYha8XGanIuoTK/b7dauA1/0mOcOK0hY8+kiTWdaegY2bNmBhUtXYc2mrRS8KmWBfYFzKLchBNMH0ucLtW2Lpnj+4bvpwWjTbgI+aNZQ'@; put 'TTAGRU6XVulnyap1huq7dFYPCHioXjpgJ4IZGcPkk9ZUTz2GSGcEE0+qQsS/hdE+VkqbZAujaHZW19GiEVEioExENULqjWw/SUY1Qso7/vWBv+hgOcn1NNqnMcdi4sg9I2WTRiR5SNqYyHeuyEF/RBId+R7SSBKJzLTgxHHgRCYlMifTdl6OCQW5bP7mFoRIMgpGWfjlqW3LZhjS/0x07dAGdWsn'@; put 'aqSSM5Twb4FYmGyGkR8nE9mde/bhtz+WYQGRzeNZ2VpfAtEHOYdaCAjB9JE8beSLOOKSYbjusgtCMuCHYWTzy5GjGXiNyklu27XXR8hKM4IA0SUKKgqz0194MdEMjy4OKIqIdmvEMyKKfqO/cCagtI+VYh2sNjcsYTwvKfDISuZBzh+vqf0IUeJff1Ew/nCSyBWv6H/vM927Pp0QvI1p7RZ/0f7X'@; put 'iGNx+381xc0T+eWAC05m73KaKFE5iEB6UFRABJL+ColA5hFZzD9Bf2S1zM+hYBtaF1AEtyOfgze49eLznK5r8rt+EeAX887tWmH4oH4aseRgHTZ7s0YxmAsTTSace/enYubvizB74RLNhzOYfZJzGw8BIZg+lBnnxnz2wTvQunnTkMuN6YWRSebOPfvx2nuf4OBhKSfpxUXWgUKATOyUUslMWk6L'@; put '1Wtu98BC5NQWRppPIp62cLdmhrfa6Hfaj9dc4pD3N1PWJYvVreV+5Ie/2UwklROLk2n/L9JZciisPiUNk5MIosftLbdJJmviBy4igW4nkUH6c1EchYO0j07vmrSMHFtRVGAm0zURy0Iz7c8+deyTKsSxJMSqfm7VrDEuHjqA0t11RGREhPbMCJS2srKYchAnm9B37d2Pb6fNwvwlK0PSQldZvGS/'@; put 'UxEQgnkqHjX6xuSqS/vWeOb+UZpJQW83ixoNrgoHm+nNd82GLXjj/c9wPFucxqsAnewqCAgCiiOQQD6VlwwbgHPPPlOLAGeTtN6fFUwyeVm+ZgM++24adu8/qPs+Kz6NDDE8IZg+FhObym+66kJcccHQkDWVs+aHTZELl67EOxO/QkGhpMHw8TST5gQBQcCACPTs0h7XX34hmlFEOJvBOWjHSEsE'@; put 'aVozMo/h66kz8ctvCzQ3DyP1X/oaWASEYPoBb35Dff7hu+gm0jBkTeVMMjnWYua8P/DR5B/J9BdcnyI/iFmaFAQEAUGgUgjEREXi6ouHYSgV5QgnR2H2szTqwr6Z/Dd/8Qp8TPf29EyKNJNFECgDASGYZYBS001cRrJbp7Z46r7bQ9pUziTTRSzzh+mz8cUP02sKqxwvCAgCgoDhEGhCidFvu/Yy'@; put 'dGrXmvx03YbTWpYHOOfj3LZzN97++Cts371PTOblARXC24Vg+kn4xabyi8hUPiRkTeUMLfulchWJz7+fhqmz5vsJbWlWEBAEBAH9IdCzaweMvPoSpFDFNyNrLctD1m63I/PYcYz/5GssXbWeFArGMvmXNy7Z7hsEhGD6BscyW0mIj6WAH4oqb9E0ZBOwMzCsyWQ/zI+/+hGzFiwuEyvZKAgIAoKA'@; put 'SggMpZyWN1x5EeKolKOK5NIrK44053KT73/+nZY7M9gplrz9knXwERCC6UcZsPauU9uWeJqiylmjaTSHbl9Cw1icyM3TyklypQhZBAFBQBBQFYFLKP3QNZcO12qEh8J9n30yWXv5yTc/YdpsDv4Rn3tV53ZVxiUEsypoVWNfq9WCERcNw/VXXBjSpnKGjknm8ewTGEeR5cso3YUsgoAgIAiohsDl'@; put 'wwdT0Y3zEGYLLaUC39/ZWvXBF99j+tw/hGSqNrGrMR4hmNUAraqHRHOt8vu4Vnk7FBQUVPVwpfbnmxBHHY6bNBmr1m9WamwyGEFAEAhtBM6nijw3XXWxRi71ntvSH5Li+zuXbB1P9/d5fy6HUzSZ/oDZMG0KwQyAqPitrkWThnjuobsQEx0V8m92bE5JS8/E2A8+x4atOwIgATmFICAICAL+RaBf'@; put 'r26468arqCpPeEhHVPP93UGBnS+P+wir1m3WCKd/kZfW9YqAEMwASYYvuvMG9MFdN10NI1Ru8Dcs/KZ7mOqWv/3Rl0Iy/Q22tC8ICAJ+RaBdq2Z4cNSNqJNYK6R97b0gc+WfoxmZ+M/r72HPAan648Ul1NZCMAMocbs9DPfecg0GU4mw/Pz8AJ5Zn6cSkqlPuUivBAFBoPII1E1MwKP/uhktmzYW'@; put 'clkCtvDwcGzYvA0vvvWhlAwugUsofRSCGWBp162dgP88fDcapiSHbJWfkpALySyJhnwWBAQBIyHAQZysNDj7zB4wUcdD0e+yInlxMvYfZ8yhFHVT4KCa67KEFgJCMAMsbyZUXdq31oJ+Qj11kRd6L8l8hypCrN+y3btZ1oKAICAI6BqB4QP74pYRl1IaOouQyzIkxfEH/Pfau59g0fI1koi9DIxU'@; put '3iQEMwjS5bdeTmVxM1V4CPWoci/8TDKPUODP2x99QSRTAn+8uMhaEBAE9IlAY7JCPUHZQZLqJAq5rEBE7I+ZevgInnl1nBbcWcGu8pNiCAjBDJJAOdLw4TtvwllndBV/zJMy8EaXc9kxSWEUpIkppxUEBIHTImCloM37br1WM41zffFgLawd5Psm//HCL+q8eE31XEGIk557v2s/BuE/MZUHAXQd'@; put 'nFIIZhCFkJJUF6MfvBP1ac2R5bJAu1FmUG3bdz/9FktXrxdIBAFBQBDQHQK9u3XCv2+7nir12ALeNyaVYWFh2nlzc3ORcSxLyy3M981cDh71gPplR1xsNNjnPyEuFvHxcZqp2ks4A91p7jPnxHxuzARs3Loz6IQ30OMP1fMJwQyi5M100XXr1BZP3Hsb+I04FEqKVQZufhs/np2jVYSQspKVQUz2'@; put 'EQQEgUAhEBFux1P/vh0d2rREILWXrJ1kYpmbl4ct23dr1dA2Uh7hQ2npyMsvu4BHGJmnE2rFUYR7I3Tt0Aad27VGUt3aGsELtFKDo8qXrFyLl9/5WKtdHih5yXmCh4AQzOBhr52Z/TEvO2+Q5igu/ph/C4Nvply7/NNvp2Hm/EV//yCfBAFBQBAIIgID+5yBO2+8OqDVeuykkTxB2so/l63Gr78v'@; put 'ws49+6tVJacWaTP7nNGFUuX1RvMmjTSCHKi64azF5OW/b74vCdiDOH8DeWohmIFEu5xzhVN+TPbnGdi3t/hjlsCISWZ+QSG+mjIdP838vcQv8lEQEAQEgcAjwNrLp/89Cu1aN2dHR793wOtfuYzchb6dNgvbdu2tFrEs3dEoKl88qG9PXDx0IJLr1UFhYWHpXfzyXbSYfoFVt40KwdSJaGonxGul'@; put 'JJs1bhiwi10nQ6+wG0wyi5wuTPn1NyKav4Z8mc0KwZIfBQFBwK8IsPbvnluuRUR4mN/9CNkczlacyT/NwIy5f6LADySQ4wBGjrgEvbp3hpPiAPwdDMRaTK5V/ixFlG/cJr6Yfp2sOmhcCKYOhMBd4AuvXctmmm8P1ytnZ2xZihFgkukmZcHM3//AJ99M1bSago0gIAgIAoFEwEL3oYfvugm9u3Wm'@; put '0/pXe8km8dRDR/DuZ99g7aZt9Dxw+W2o7P9/1UVDtdR57LLl71iAiIgITJs1j3zsf5Dk636Tqj4aFoKpDzloveAb2MC+vXDvyGu0i9zfb5M6Gvppu8IE3ET4LFq+Gu999p2UHjstYrKDICAI+BKBZo0a4On7b0cCRWT7897M5HL3vgMY+8Hnmq8la/wCsZxLfpm3XnMZRaD7VzvLZv9Minh/7KU3'@; put 'ceRoRiCGJucIEgJCMIMEfHmn5eo+119+Pq6++DzxxywFEpNMM92c1m7coqUxSj2cVmoP+SoICAKCgH8QuPLCIRhB92WL2eQ3gllMLlPx+vufEslM9bs2sTRS/Xp1IxeAEVqaI39qMnmcbxKB/u2PpT7xKS09DvmuDwSEYOpDDqf0gh3JOQl7n57dhGSegkzxFyuR8J1792MCJWTfunNvGXvIJkFA'@; put 'EBAEfIcAp/th7WXHtq38FtzDFW/SqJrZa+9OwtYde4JWVvG8AX1w+/VXgNPo+UtTy8E+fyxdqZWQLHRIDmjfzVR9tSQEU1/y+Ks3nCD32QfugAT9/AXJKR+YZPLN+IMvvseSVetO+U2+CAKCgCDgSwSaNUohgnkHmcdj/UK6ioMZnZpZfOmq9RTYGFwf/Fsp8OcSSp/nr1gANpMfy8rGoy+8rpUI'@; put '9qWspC39ICAEUz+yOKUnbA5u3byJFvQTHxvjtwv9lJMa7AvfpHLz8im6fAamzZ7vlxu/wSCR7goCgoAfEBg+qB9uufoS2CgIxh9aPTYZfzN1Jr6ZNrPcpOl+GFa5TXIp46dPJpP3V55M1tj+39sfUvL1dUHT1pYLgPzgEwSEYPoERv80wkE/Z/borJnLmXD60yfGPyPwf6v85u9yufHLbwvw5Y/T'@; put 'JcLc/5DLGQSBkEPg/tuvR/8ze/jFPM7kchOl7HmFKtwczTymG2zbtmiKZ6mUMbts+YNUc33yb6b+qhXTCLbGVjegK9YRIZg6FyinjbhoyDm47drL4XA4/HKh6xyC03ZPizA3mbF8zQa89/m3OJqhn5v0aTsvOwgCgoCuEeCk5Oyu1KpZY5/3k+9dHCM+5t1PNFcff6Yjqk7n77zxSgwfdDZcfjDZ'@; put 'M7Feu3Ernn99AuX4dFSne3KMzhEQgqlzAXH32MH81msuxcXDBkrQTzny4hs1m8x37NmH9ymN0eYdu8vZUzYLAoKAIFB5BBqlJBHBvBOJVNPb1wuTrKXkQ/4GRVRn55zwdfM1bq9Bcl28+Ph9iIuJ9rlyg+/XGZSu6NEX3tCV5rbGoEkDfyEgBPMvKPT9gd+iH7rjRpx1RlchmRWIioN/+KbFCdnn'@; put 'LVpewZ7ykyAgCAgCp0egZ9cOuP/2GxDpY1NxseXFhP9NmEQkM/iBPeUh8a+br8bQAX19rsXk8bvcbjz18ltaNhB/mOHLG5NsDwwCQjADg7NPzlInoRaevO82tKGKPwUFBT5pU8VG+M24kNwJps76nXx8ZmmfVRynjEkQEAT8j8CF5/bHTVddDKvF7FMtHge57KJ0ay+88b6uNXidKDXTMw+MovFb'@; put 'fA42l8N8+Z2PqIDGGgn08Tm6wW9QCGbwZVDpHvAbX+MGyRTdNwrJ9epoPpmVPjjEduTgHyrAiaWr12Hi5Ck4lJYeYgjIcAUBQcAXCNxM5JJJpsXHBJNLJn7/y2x88cMvuogcLw8rDvJ5iczkzRo38HmgKWPwwRff4aeZ8/xaDrO8scl2/yIgBNO/+Pq8dSZOHdq0wBP33IroqEhJX1QBwl6/zL0H'@; put 'DuKjr37E6g1bKthbfhIEBAFB4J8I+COC3Gsef21CcXCP3qOo777pKgwb2M/nZnKOJP/u51mY9PVPQc/9+U/Jy5aaIiAEs6YIBuF4b/qiB0fdCI4y91eesiAMzS+nZL/ME7l5Wo45NptzWiNZBAFBQBA4HQJMBB/71y3o1bXj6Xat0u+sKOCgnudff5eqkh3wqem9Sh2p5M5D+5+Ju2+5Bm6Xq5JH'@; put 'VG431mDOnPcHxk2aDEdRcJPLV67HsldVEBCCWRW0dLQv+xlySa9RVNKL82OKg3TFwuEbOqcDWUjlyT79dpqkMqoYLvlVEBAECAF+gX/qvtvRuX1rcrjx3cL+l3v3H8Tzb7yrVSTzXcv+aalD6xZaqiabzerTE3DJyAWLV2i116VkpE+h1UVjQjB1IYbqdYJvflddOBTXX36B5MisBIQlTeYfk1/m'@; put 'qvWbK3GU7CIICAKhioA9jGuQjyK3pJY+TbLO6Yk2bNmOl976EMezc3QPb0pSXfzfE/chJjrKp31lHJavXo+XKNCnUHJh+hRbPTQmBFMPUqhBH2xk/h1JdWMvHT5Y0hdVEkc2meecyNWizH+cMVeizCuJm+wmCIQaAlwycTRVs/F1knUmVivXbaQURZ/oMv9laTnXrZ2AFx+7B3USE3xqLWMcVq3b'@; put 'hBfefF8IZmnQFfguBFMBIfJb9j0jr8G5Z58lJLOS8mSTOWs0V6zdiE/IZM6BQLIIAoKAIFASAbs9DKMpyXqblk19aiL3Eqv/UQWfLANoMGsnxGsaTH8QzOVrSIP5tmgwS847VT4LwVREkjEUUf7AqBskEXsV5cm+UEeOZuCrKTPw28Ilmp9mFZuQ3QUBQUBRBNhC9PT9t6Mj5YL0pQ8m53/cvH0X'@; put '/jv2fUOYyJPqJGoEs1Z8nE81mJoP5hLywXzvU7IkFSk6i0J3WEIwFZJ9QnwsHqRqPz06dxBNZhXkyiZzThOycMlKfE456aSWeRXAk10FAYURYEvHE/eMpHtqe5+Oku85Bw+n4bkxEwyRo7c55cB84dF7wDkxfblwFPnsBYvw9kdfShS5L4HVSVtCMHUiCF91oy75yDxKaTXaU9SfVPupPKolA4C+'@; put '/HEGFq1YU/mDZU9BQBBQFgEu0duvV3fS3PkuvRkT1/yCQox+bTy279oLt4dzXOh36d2tIx65eyTMvlTj0nA5D+aUGb/hwy9/kDyY+hV/tXsmBLPa0On3wOR6temt+za0bNZYSGYVxcSaBQeZamaTufzrn37FsazsKrYguwsCgoBKCIy67nKtFreF2JUv08GxmfzNDz/H74tWkPZO3+bhay4ehmsu'@; put 'PZ9yCPs2VyVrMCdO/hHfT58jlXxUumhOjkUIpoJC5SE1rJ9ECYJHonmThkIyqyhj1mYy0dxFCZC//PEXLFm1vootyO6CgCCgCgJXnD8YIy4Z7vNa5Ox/OGPuQnDKNC4EodeF74fPUi3ybh3b+bxUJGMwhgKd5v25TGqR63UC1KBfQjBrAJ6eD+WbQtOG9TWS2TAlmVJAFOq5u7rsG5NMdjyf9+dS'@; put 'qgI0S3wzdSkl6ZQg4F8EzjmzB+666Wpwtg5fajD5/nLoyFGMHjOe1un+HUQNWq9fr44W4BMbE12DVv55KD+jGM/nxryL9ZQTlAuGyKIWAkIw1ZLnKaPhC5idsx+5+xZNoykk8xR4KvWFfaX478DBI/h66q+YT1Un9O0tValhyU6CgCBQSQRaNG2Ep/99O+J8TLD49Gwmf4vN5HRf0WsU9aXnDcTN'@; put 'V1/i8zKRfF/lfMSPvTgWqRTwJIt6CAjBVE+mp4yISWbLpg3x+D23ol6d2lrFn1N2kC+VQoBLc7roDXvR8jVaTfO9Bw5V6jjZSRAQBIyLQDSlf7vsvEE4b2BfhFNOTF8vnA9z3aateGXcRF36e3Oi+f9S9Di7Wvlaw8gp4rbt2oOnXn5bC3jyNbbSXvAREIIZfBn4vQdMMts0b0KazJuFZNYQbb4p'@; put 'pqVnYurMeZg5f5HcGGuIpxwuCOgVgTMoNdHVFNzSiu6dbpfLp+bxkmPml9e3KE3PAkqTprdgn6HnnIW7bx7hc+0lj58DfGb9/ifemThZd+MuKR/5XH0EhGBWHztDHamRzBZEMu+6GUl164hPZg2kxw8EKgOETVt3kNl8JlZv2FKD1uRQQUAQ0BMCyeRzePnwQeh/5hla3sciP0d480vr7n2pePGt'@; put 'D3A4TT++mLXiYvDfx+5Fg+R6Ptdesrw5wOftj76gF/XFFJ3u0tMUkL74CAEhmD4C0gjNFJPMpnjozhtRv15dIZk1FBo/GPLyC8gvczl+/HUuJU4+WsMW5XBBQBAIFgJsAh/crzcuGnIO6ifV1UiPr83C5Y2NydZPZBX57LtpyM3LL2+3gG6/44Yrcf7gs+GiIhS+XvhZxOngnnz5LeykbB2+DJ7y'@; put 'dV+lveojIASz+tgZ8ki+sDm6/FFKYdRIostrLEN2VOdoUNY88APitz+W6uYBUePBSQOCQIgg0LVDG1x5wRB0aNtSKwnp9AOpqghKvi9z8OA4MhfrwVTet2dXPHD7DbBYzH4hf/xyvp38L59+dZzcLyuaGAb/TQimwQVYne4Xk8wUPEo+mY0bpkiezOqAWOoYNpubiGxuofrC3/08G8vWbPDLjbnU'@; put 'aeWrICAI1ACBFNJUXkbmcK7UExUZEdQgSH5Rzco5gf+Nn4gNW3cGzWzcjDKPcNR8Yq14v5jGWVzsfzl5ynR88cN0qeBTg/mr90OFYOpdQn7sH2swH77zJs2JPT9fH2YZPw43IE3zmzk76i9ZuQ5TyGy+jcrAySIICAL6QoBzOg45u7dmAq5D5XXZBzBQ5vCKkOC0RVyj/PX3PtXuHZy5IpBLUt3a'@; put 'ePLeW9G0UQOqrON70ziPxautfZa0lxvIj13M44GUcGDPJQQzsHjr7mwNkutqppD2bVpCSKbvxMMPimzSRsylChU/z1mgJVT2XevSkiAgCFQHgTCbVdNWXjz0HDRrXJx6R28BJpy6KPXQEYybNJkSkO8ImCYzqU4i+effhDYtmvqNXLLM+N64eftOqsM+Qczj1ZnEBjpGCKaBhOWvrtatnYB/33Yd'@; put 'undqLyTThyB7/TPT0jMwY96flJJjEY5n5/jwDNKUICAIVAYB1pp169hWy2nZoU0L8i20wN/R4ZXpV3n7MAk7npWtlZFcuHSV39P4cEGO+269Tst36W9c2Dz+3qffYBq9ePtLS1oerrI9sAgIwQws3ro8G5so2N/m3pHX4KwzuiIvT791cXUJ4Gk6xQ8zJpv7KDn7dKo9zFpNjj6XRRAQBPyPAGvk'@; put 'WGPZs2tHSpZuD6qfZVVGyz6ZTjLd/zr3D3z3yxxkHDtelcMrvW+fM7rgtmsvA7sK+Jtc8r2QX7Ife/ENXZfHrDR4smOFCAjBrBCe0PoxNjoKo66/AoPPPlML/BHfGN/Knx8YnD9z/aZtmtl85bpNVB7O4duTSGuCgCCgIcABPJefPxhMoGKiow2Zlo01r2wy37V3P76dNguLVqz1mTYzsVacptEd'@; put 'RlWKbHRvCoSrQGRkJH6cPgcfffWjBPeEwHUqBDMEhFyVIUaE23HzVRfjQsoF5yDyIySzKuhVbl8OBOK6wxu2bMMvcxZizcatPntoVK4HspcgoC4C7EvI+SwH9OlJRSVqa2ZYPQTw1ARxNpmzOZmDYmaQRnPV+s3VtoJwAvVzzjoDwwb0BZNwbjcQ93m24uQXFODJ/3sbu/enBuScNcFcjq05AkIw'@; put 'a46hci3w2+wIKpF21UVDtchKo9+c9Sgg1kywRrOw0IF1m7dppvO1G7cJ0dSjsKRPhkCAfckHEakcROSSiSXftwKhlQsUOHzP8BLNfamHsHzNRo1o7j1wENkncivsRgxZp5pRZPgZXdqhV7dOSKZqbkwqA+kDydrLKTNYezlF7nMVSkudH4VgqiNLn46EfWXOH9QPI0dcojnEB/JG5NOB6LyxkkRz'@; put '/Zbt+HXeH1R6cquYznUuN+mefhDg0o79e3fXtHKskeNF9fsVW0H4Hl1YWIj0zGOaP+Pho+nIPJ5N7k2FGgZ2qkwUHxuDFMoUUp8wYj97NrczNoHGh/vKWTWefPltMDmWJTQQEIIZGnKu1igtZNLoRzfuO6lkWHRUpN8dwKvVSUUOYqJZbDp3YPO2XZj5+59YSWYwvZSNUwRmGYZCCDCZPOesHhqx'@; put 'DIZGTg9Q8n3Dm63C+9lr7ubv/Jk1uUwog6nN5cjxT7+dim+mzaS+SN1xPcydQPRBCGYgUDbwOfjm1ZHSejww6gbUrZ1oSEd5I8HPDwU2nbtcbkq0vAe/LVyCxZS0nSt8yCIICAJAEyp1O6hvL3A5Q458DrSpV2RQNQTYrM9BSs/+bzyOUeolWUIHASGYoSPrao+USQ+XD7v/tuvRslljyZVZbST/'@; put 'v73zfI7qStP4u2NQzhEhDBJCEogcTDAGG9tg43EoxxnP7Hpqy7sftnb/jN2q/bjhw1ZN7Uxt7YTd8YzHM2MccMAYE2whkEgiCOWcc8Sw+z6HObjBwghJ3X3vPc+tajrQ995zfu9t9dPvecPMd7RC84Z6IBqaWgW18L746pR0dPfO/CB8JwkEhABWU0qKlpnkna0b1kqGZkDDIxdNr1xA0IZ1GsaL'@; put 'qmf453//mcaMnhf8PePmDgEKTHdsPeeZ5moQ/d//9eumntyEZgPapZg5H5gH+E4CWDrHhoLtKFNy+ESFegRaPNHa7jsHzv8kgTkSQFWLdatKNHFnm7lHi0fUamTi4RzBRmh3LI2jLNHP//cPLEsUIeZeOg0Fppes4YOxJCclyJs/fFH2PbaTf+gjbC8EyuM2qIWKkXn+2bGT2kquZtblSiI8fJ6O'@; put 'BGZMICMtVbZvXmeSd0qKCiRGf2RBWPJH7YwRRv2NSCiq1rJK//Rv/8ml8ahbIzoDoMCMDndfn3WBipwfaAmjV5/bxwzzKFgScbEmIUhLHNVqbBOWz788fVY6uXweBWvwlPNFANf1siV5snvbJtNRDJnPWGJFggqF5XxRjsxxEEeOH8L/+K8/lcu1jbRfZLB77iwUmJ4ziT8GhJioPTsf0hZjL2uX'@; put 'jETftF/zB92ZjzJ0+RzFl7/4qlIuXq1Te1yb+UH4ThKIIoHEhHiz/L17+yZzn67eS8RWRrqUThQRBOrU+KGASMt/+ekvzI/f65rFzs1NAhSYbtp9XmaNPyRlxcvlH7SH+bIli017yXk5MA9y3wSsVxOdMmrqGk2sZnnlOSYF3TdJ7hAJArhel2h9xh2b18vDWzYYzyWyjRlfGQn64TsHPM740ftf'@; put 'v/mDvPPhIZYkCh9qXxyZAtMXZvL2IFGP7u/eeE22bFjDHuZRNpXNPscwenr75Iz2PT92ssp4NYdHxqI8Op7edQKpmqSzrqxEdm3dJKtLiwTeSiTsQFhy8zcB/O3Bj4Tfaq3LX779HpN6/G3OeRk9Bea8YORBUIj9J68+L89o9x+WD/HG9QAvEf7gT2pP+aaWdm0rV21iNeubWk0vdG+MkqMIOoFY'@; put 'vQaLly+V7dqicMv61bJYf5AijpveyuBYHuISST1/PHhIfs5WkMEx7BxnQoE5R4Dc/RsCyHB+af/j2sP8aUF5EXolvmET7UdYtoJ9RkZHTYmjijMXpOJstbZt62AtwWgbJ4Dnx7W2dPEi7X29Wm9rTB3d+Lg4xlYG0NY2POft9z5Wz+UB/ngNoI1nOyUKzNmS437TElio2YPwUrz5oxclf1Eu4zKn'@; put 'pRS9F+0SOr4UhjTLs1braZZrAeTK85ektaOLYjN6pvH9mSEqES6zcc1K2bZxrRRpc4ZkXRK3rQqZCe57E39rAsgWh31//c778rbWu2QbyG8hcvoFCkynzR+eyUO8oNzI32qG+ca1q0x7SX65hIf1XI4KO+ELAqJzcGhI6nTpHJnolXprae+SKcbFzQWvE/suWABRmWtE5ZZ1ZVJUsERSU1JMWRpk'@; put 'gbMgenAvAyyJoxTRz/7nHa3JWy7MFg+urWc7MwrM2ZLjfvckkJaSLD984WnZ//gjAjHDsiP3RBa1N4SKTSyjN2rM5pnqy3K2ukaFZ4surTNBKGrG8diJEf6CqhEbVpeaskLLl+ZLin7W8SOSotJjxgrDcPCDFB16rtQ2yH/892/kYk0961yGgXMQDkmBGQQrengOsTELtV7mVvmrV56T9NQU4830'@; put '8HA5NCVgl9Gx5DkxOSntunR+8Wq9VOkyek19k3T39tNb4diVgs46JZqos76s1GR/L87NkURN7LMJffRUunFBIJYbtv74yAn51e/fk76BITcmzlnOigAF5qywcaf7IYCi7KXa7u1vfvyyrNK6mZMqWrhkfj8Eo/temyAEMdE/MGgSg85pq8pqFZ0NzW0yNDwS3QHy7PNOICE+TutU5srKFYXqpSw2'@; put 'STpZGemmxiGuAybwzTtyTx8QPzZRkaJOO4f9SksQoXMYl8Q9bTJPDI4C0xNmcGMQGWkp8uOXvi97d++41QLOjZkHZ5Z2KR33KH/Uo97MOk0UunClVi6p4Gxp75TRsfHgTNiRmcTGxkhuVoZ6KZfJ6pIiLSu0TPJyssxSKBBg6RvCkptbBPA5R6xlX/+AfHj4mLz70efqtRw0f7/dIsHZzoYABeZs'@; put 'qHGfWROI0SXzx3XJ/A1dMk/jkvmsOXplR3g2kCiEDV2E+voHpb65VfsPN5iOQk2t7TI4PEqPtVcM9udxwEOZl5NtknJWFhWqhzJf8rT3d3JSkhEP9FJ6zGARHo71WGLF4mj5aTnw8RFpauvg5zjCdvD76Sgw/W5BH44fS+YrCpfKm6+/KGtXlZg+5ozh8qEhpxmyFZyI40QoBL6g2rp65KrGbiJL'@; put 'vUFv3X39MjY+Mc3efCkcBFA6LC012Sx5o3QQPntL8/MkOyNN4ygTbwlKeCkZuhIOC/jjmPBWIhwGn93O7h45Vl6psZZfSqP+SOR14Q8bem2UFJhes4hD40HbuFef2yfPPrnb/GGb0iVXbsEiAMFpb/CKjY6NSa96OVvUG4JMdXg72zp7pKun14hOfpHNzf5IqkvRz9Vi9UYi03u5CkoUPM9SMYkV'@; put 'AwgIbHbJm7znxtvPe0NIhopK1MW9VFsvxyvOyFenz0n/IBN4/GxfL4ydAtMLVnB4DPCubN+8Tt7QNpMP6hfhhC6z8ksvuBcEvtSs4MSXG0TnmIrOAf1y69J4zpa2TmlW8Qnh2dM3IAODwybWM7hEZjczMExNTpTM9DRT3BwFzvH5yc/LEZQHS9UbkjLwWQJj3LhKMDvWft4LnzdsVkziusFj3PC3'@; put 'Fj/2EENddeGS3i7rj71u/v31s8E9NnYKTI8ZxMXh4I/d4twsLWX0vDyydaP5AwcPCzc3CIR++UF0YsPyOmpvDmqGeo8uqXd290q7LrV39fSZ5/0qPPH/ExOTckNFVBA3FDFP0HqDKUk3hWROVros0sSb3KxMyc3OlJzMdI2ZTDRJGBAOEJP43EBIUkwG8YqYfk74/MAzjR8ReGw3++Niauqaad84'@; put 'rPVtkaCDzxKqP9Q2NEurCkoUSw/dz+7PexKYKwEKzLkS5P7zRgCZrHt3bTfF2TPUMwORwc1dAhCbuEE8WeGJL1FcF4jhHFHP59DQiC7lDZsvzl7NdMVjLO2hdBIE6PjklHk/vmS9IkQhHGNUEMSqhzEx4aaATE1JUs9jinokU029WNwjbhLL3YkqMuM1KcfGx1nhYIUknnNzkwCuCfyo+Ojz43Li'@; put 'lJYOun7jz2IRnusbxvs/rj/CEJoyqp8ZfA64kUCkCFBgRoo0zzMjAkgAQtzYT157QTZpm0kbKzajnfkmZwhAcMLrYsUnnkNoWfEFETqpX6ao14iySRMqNEfHx81jPMeXLrLecQ8vKEouTU5eM+0xv1YRaz2B+JK+doc3HefAeRcuXCDf+4ub48DjGL3hCx/38XFxEqcdb+JURCYkxBmRiMxteCQT'@; put '9Tn+Hx1xIDLNvnqPY2Kz8wgVkPRIOnNpz2iiuPZRPqi1o9MUPD9WXsXWrjMixzdFkgAFZiRp81wzJgDPzvef2CUv7n/CxJPRmzljdHyjEsAXsF32s2IUz60n1ApSC8uKOjy3wi70Mf4/dMOxIAjtOUIf4zX7OvbBYysQ7zx26HlDj8/HJHA3AigLhmvq2MlKFZfvm5jlO6/Pu+3L10kgkgQoMCNJ'@; put 'm+e6LwK2A9BfvvKs9j1eSW/mfdHjm+eLQKhYDD0mv9RDafBxJAjEqee7V2OS33r3Izl4+LjxvEfivDwHCcyGAAXmbKhxn4gSSNKex888/oi89MyTJiaN3syI4ufJSIAEokwAHnJ4Lk9WnZNf/O6A1De1slVjlG3C09+bAAXmvRnxHR4gcMub+bJ6M9esNBmTiJPjRgIkQAJBJoBYSzQseOeDQ/Le'@; put 'p0dM3HCQ58u5BYcABWZwbOnETJAosV+9mS+rNzM9LdVkCHOp0gnTc5Ik4BQBeCzhuTx19oL88u0D2g2rmV5Lp64A/0+WAtP/NnRuBt/TAPdCzTR//YX9pkg7ACBbmBsJkAAJ+J0AYn7htUSs5e8/+FQ+OHSUXku/G9XR8VNgOmr4IEwbbfEe2/GQaTe5RLuYIDbTZusGYX6cAwmQgFsEUOYKW3nl'@; put 'OVN+CAXRr2vhfG4k4EcCFJh+tBrHfIsAfu0v0q4mLz3zhOx5eKvWHIw3QvPWG/iABEiABDxOwHotO7Rb1VvvHpRPj37FougetxmHd28CFJj3ZsR3+IAAuqOsLyuRHzz/tKxZWcwkIB/YjEMkARIQ0zN+SkN8Dh8/KW+/94kWT+8yxfbJhgT8ToAC0+8W5PhvI4CSRvse3SEvPLVHcrRnM5bNmQR0'@; put 'GyI+IQES8AABJPBgSbymrkF+/c4HmsxT/a2uUR4YJodAArMmQIE5a3Tc0asE0KUlf1GOvPLsXtm1daO27IvjsrlXjcVxkYBjBOxy+ODQsBz4+HN5V2+DwyOOUeB0XSBAgemClR2d481l81J57bl9Ztkcnkxmmzt6MXDaJOABAjHacx71e8urzstbfzoodY0tTOLxgF04hPAQoMAMD1ce1UME4uNi'@; put 'Zc/OrfLi048Lss0hMq9fv+6hEXIoJEACQSZgl8PrGpvlt9rm8XjFGUHcJTcSCDIBCswgW5dzu0UAy1JZGWny3N5HNUbzYUlNSWZ85i06fEACJBAOAnY5HJ14Dnzyuda0PCb9g0PhOBWPSQKeI0CB6TmTcEDhJICWkwVL8403c+dDG0xB46mpKSYChRM6j00CDhJAsXQkGR4trzQF0xu1puUNDdPh'@; put 'RgKuEKDAdMXSnOdtBBCfuVbLGaF+5vqyUtOSDUKTGwmQAAnMhYAtln7uUo387sBHcqb6isZdMiRnLky5rz8JUGD6024c9TwRiNEyIfBkPv/UY1JaVGg6ATERaJ7g8jAk4BAB2zsc3Xf++OEh+fzLCpmY5I9Why4BTvUOAhSYdwDhUzcJoH7mozu2yLNP7pZlSxazULublwFnTQL3TcAm8KALz4ef'@; put 'HZWDh4/LgJYg4kYCrhOgwHT9CuD8byOQnpoiTzyyTZ7es1Py83JNSRGUFeFGAiRAAqEEUG8XZYcGNGnnM+3CgySe9s4exnOHQuJjpwlQYDptfk5+OgI243yfdgTau3uH5GZnUWhOB4qvkYCDBGxm+MjomCbwnJZ3PzosjS3trGfp4LXAKX83AQrM7+bD/3WYAL5IcjLTZa8KTXg1F+VkU2g6fD1w'@; put '6m4TwN8DeCzHxyfkq8pzRljW1DfJ16yp6/aFwdnflQAF5l3R8D9I4CYBKzSf3L1dnty1nUKTFwYJOETACstJrTJx6swF+ZN6LC9cqWOzBoeuAU51dgQoMGfHjXs5SOAboQmP5lYjNNERiDGaDl4MnHLgCYQKy9NnqzXG8oig9BBLDgXe9JzgPBGgwJwnkDyMOwTwxZOVniZ7VGTCo7lEk4HQ55x1'@; put 'NN25BjjT4BLA5xtF0ie0SDo8lhCW5y9fpbAMrsk5szARoMAME1ge1g0CyDrftW2jaT9Z8GC+ILOUnYHcsD1nGSwCNit8VJN3KtRj+f6nX0h1TS2FZbDMzNlEkAAFZgRh81TBJADvJepoPrxlvXo0d8jKFQWCbh4o2H7jxo1gTpqzIoGAELB1LIeGRzR556wc/Oy4XKptYIxlQOzLaUSPAAVm9Njz'@; put 'zAEkgM5A68qKZf+eXeY+KTHRCE3EanIjARLwDgF03sGtp7dPjlWckU+OnJD6plaWG/KOiTgSnxOgwPS5ATl8bxJY8MADUlTwoInR3L5prWRlZhiPCNtQetNeHJUbBBBfidUF3Le0dcjhExV6OykdXb1cbXDjEuAsI0iAAjOCsHkq9wjgiyw3O1N2b98sj27fIgUPLjYQIDSxtM6NBEgg/AQQXwlh'@; put 'iZWEK3UNcuhouRyvqJL+QbZ0DD99nsFVAhSYrlqe8444gcSEeNm8dpU8pW0oVxYVSEJCApfPI24FntAlAnYZfHhkVM5drJFPvvhSKs9fMhniLnHgXEkgGgQoMKNBned0mkBsbIwKzEL1am6SzevKJCcr03gz6dV0+rLg5OeJAFYNICzhtezo6jaeyiNfnpbahmbGV84TYx6GBGZCgAJzJpT4HhII'@; put 'A4Hv6Rdhji6fb9u4VnY+tEGKC5dKXFwcvZphYM1DBp8AssEhLPFDrb6pRfuEV8mhY+W6DD7EcJTgm58z9CABCkwPGoVDco9AnBZ2XlVcaEodbVm/2ng1QQFdgljqyL3rgTOeGYHQpJ3+gSE5e/GyHD5+UjvuXJUx7RnOjQRIIHoEKDCjx55nJoFvEcCyXmZ6qmzSWM1Htm6UUo3VTE5KMskJEJtM'@; put 'DPoWMr7gIAFbuxL9wesbW8wy+IlTZ6W9q4f1Kx28HjhlbxKgwPSmXTgqEpCFutyHrHMsoW9ZXybLtFMQPJ0QmsiGpdjkReISAfz4whI4tq6eXjl97qIcO1kl1VdqNWlnyiUUnCsJ+IIABaYvzMRBuk4gThODykqKZOvGNbJpzSrJy82+FW/GIu6uXx3Bnb8VlVgKHxwalktX61VUVkrV+cvSp7GV'@; put 'DB8Jru05M/8ToMD0vw05A4cI4Is2JSnRiE0UcF+7qtjEa2LJEMkNFJsOXQwBnarNAsc1PTI6KnWNrVJedU4qqi5Ia2cXe4MH1O6cVvAIUGAGz6ackSME4N1JS0mSNSuLZeuGNbK6dIVkZ6aLFZvw7nAZ3ZGLwefTDBWV45qc09jSJhVnL0jFmQuaEd4mU/rjiRsJkIC/CFBg+steHC0JTEsAYjM9'@; put 'NUU9m8tNbc3VupyODkIxMTEmZpMJQtNi44tRJGCXv3E/Nj4uTS3tJq7y1NlqqW1slskpisoomoenJoE5E6DAnDNCHoAEvEXALqOXriiQDWWluoxeIvmLsiU+Pt7ErLH0kbfs5dJo4F3HDaJyeGREvZOtGk95SSovXDa1KykqXboaONegE6DADLqFOT/nCSTEx0nh0nxZp0JzfVmJLM3PkzT1dkKI'@; put 'MiPd+csjrABwjUFQIvsb8cEoen61vkmqLlySM9VXpLW9S65pVQRuJEACwSNAgRk8m3JGJHBXAviyz8vJMvU1N6wplZLCZZoklGG8mxAAuDF28674+B8zIGC9lLjH0nen1qa8VNtglr+v1DVKT28/WzbOgCPfQgJ+J0CB6XcLcvwkMAcCSYkJUrBksSYIFZlbgdbaRCwnPE4QmlZ0zuEU3DXgBEJj'@; put 'KXG99PYPmCSdcxdrtEZlndQ3t7KrTsCvAU6PBKYjQIE5HRW+RgIOEnhA4+Iy0lJl+bIlJlmoWL2bDy7OlXR9Dd4oKzjp4XTw4giZMq4FKyohKFGfsqW9Uy6rlxJFz6/WN0vfwCC9lCHM+JAEXCRAgemi1TlnEpgBAQjOLC17VKjdhFYVL5cVBUuN4ExNSZZY7SgUKjjxmFvwCCCG0opJ3CNmF4Ky'@; put 'raNLrmgsJQqfI+O7s7uPNViDZ37OiATmRIACc074uDMJuEMAghPicmn+IikuXGo8nVhSz8pIk8SEBJM0hLqbNkudNTj9dW1YMQkhCS8ltomJCeONhIfyakOz1NQ1mWzvnn71UKr3khsJkAAJ3I0ABebdyPB1EiCBexJAhnp2ZoYs1yx1LK0jnjMvN0sLwCdLgopOiBV4NyE6ITjp6bwn0oi84U4x'@; put 'ieeTk5MyNDyifb77pKm1QwVlk/FOtnV0y8jYOG0XEcvwJCQQHAIUmMGxJWdCAlEnAKGSlBhv2lcuW5JnBCc8nrlZmaY0UrK2uUQCEcSm9XZSeIbPbLCHFZM2dhK8xzW7e3h0zIjJ5rYOaWhuM4k5EJMoJfQ1vZPhMwqPTAKOEKDAdMTQnCYJRJNAfFysZKanaomkbI3jXCRL8nLU05ltWlumJCdJ'@; put 'ghaBh/DEFhrbCTGEzd6bJ/znNgJWROLeikg8BjN4JYdHRmVA4yY7u3tNMg4EZasKSTyHx/I642dv48knJEAC80OAAnN+OPIoJEAC90kAIigxId6URUJbS9wW6/I6vJ2LsrM03jNJ63PGSZwmFEE4WdEEAYobBJRdcg+qAMWc7YZwg9AbXrcicnxiUkbHxjRecsh4Jds6u6S9s0c6e3qlW+tODg6N'@; put 'sJ+3Bcl7EiCBiBCgwIwIZp6EBEjgfgjEag/1m+IzWT2faZKtxeCzNZkIZZTS01KMKE1U8QkBivei5zrEV6ggs0IU57VC1N7bsURSmIaODefHeO09/g83+xpex9gQu3rt2jX1RE7JmIpItFccGBzWWpOD0t7VLT19A0ZEwkMJEQmhGck5mQnwHxIgARKYhgAF5jRQ+BIJkIC3CSzU5XQkGOGGzPZU'@; put 'XWZPSU785rHGeiLeEyIV74EXFPvExcbIAwu0daF6RO1ysvUKWvEZej+dWMP/W0FoKVnxaAUi7u178H57g2DEkvS1qWvGo4je2xMqHkc1iQZdbxAXiWVrCEbcQzTi8Yi+Pqr/Pz4xZUSnPS/vSYAESMCrBCgwvWoZjosESGBeCCxcuMCIy9iYhcbTiXsIzjiNC41diNcW3hSqRqQmmQx4/D/EaXJS'@; put 'wm1jwGspKlzhKYQAvKFeRgjJGzf+T8Xh6E2hqGJxSOMecYNAnND3jmu5nyn1REJM4jY5NSVTt0TmlJb8YR3R20DzCQmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQ'@; put 'AAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfs'@; put 'wdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4i+ZHtw4AAADdSURBVAAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAF'@; put 'prfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8J/D97oVzdCcK8fgAAAABJRU5ErkJggg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=select-library.png; filename filecode temp lrecl=43680; data _null_; file filecode; put 'iVBORw0KGgoAAAANSUhEUgAAAdsAAAG7CAYAAACLjj9uAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQecVNW9x0+7907dQhNLYmLLS4wmStmOYIslGk0sicanRo0JILALqIltLXRYECtJjGkmKinGhiCwC1soorFEk5iosWEBtszutFvOee8uDM7OzrLT596Z/37ey8rOOf/y/Z+Z39x7T8EIfoAA'@; put 'EAACQAAIAIGsEsBZtQ7GgQAQAAJAAAgAAQRiC4MACAABIAAEgECWCYDYZhkwmAcCQAAIAAEgAGILYwAIAAEgAASAQJYJpC229zVP9Zgxjo4JtMur82vH/yyQ5fjBfJ4IPL6v7rHuL5pyf1+eQgK3RUYg8tkzdfL9foyReKjtB96ran/ZW2QYIF2bEBggtg83X+EIGOIPCvZ8HSOKMSYYIRxp0/8b'@; put '7/u3+aL5GkYYMSq7zVf6Xx7+R+xtsu/X8O2HaiESNmEGmfbPABOp2MtU3ilkknBtIoUxO8QWyGY5p4CpoLqkPV5j3qRpv18Tpqsbql8gMcChEJF/7/2973XzlxBYGOb/EkxoiPted1J+/pVTfhVK2CE0BAI5IDDgHXl/6yXlSO79d8jwjcyBb3ABBIAAEMgoAZm4exzcfcTV1as7M2oYjAGBNAkM'@; put 'ENtVO84ZJTj+d0DvKUvTLnQHAkAACOScgEScPRhrR06v2LAn587BIRA4AIEBYvtA+/ljkMTfDOrdpUANCAABIGA3AhJxdGscHdlQvRaubO1WvAKPd5DYYln8O6B1lRR43pAeEAACBUgAxLYAi1ogKQ0SWyKjt/xaZ/8MY/gBAkAACNiJAIitnapVXLHGEVv8tl/b4y4uDHuz5ULXCGZSsrmbEyIN'@; put 'oYXMmdoCcZ5sf2h/YAKMKC6zhcG1MCWSMhyvvfVQg8O1K4bXI+ySyVXn4f4le2bfyH8n2v+zWcOJ9tjfLt505/2fT+bqB0YU53BWTbGlGjtiat0zXcO1hdeBQC4JDBTbV84fI+nSB77wJ3EFRwjBBSIXC52/SBDSdSUsJE6Exknu1gXE0JGT8K0ZoQPGqTn35pHsNw1/dEw2WWUqO4M5rZkadKay'@; put 'dAihIe6xDFWjRGqR69zTeUOnzM10uo+dFOSpsU8n8H19NWPoz4Z4ddAMOuS4FIgwGUvHIkyfoYTJ8cIDsc1A0cBEVggMElvFcH7SHfowrjMhOHeotHTalBabSEpWmIFRIAAE8kRgUVuNVwj1A5m64s4rAbHNU2HA7bAEkhZb3ucsmfuNdQMuIIb1Ag2AABAAAhkgsHJrRYlfNd5TmDvuigkQ2wxA'@; put 'BhNZIQBimxWsYBQIAIFsENh7ZRv+QKbuoa5se6jGvgjPbLNBH2ymQwDENh160BcIAIGcEth3G/lDmbq88RxLxNGjK+Ev1J/Q0p3TwMAZEBiGAIgtDBEgAARsQwDE1jalgkBjCIDYwpAAAkDANgRAbG1TKggUxBbGABAAAnYlcF/zZE8v8++E28h2rWDxxp3sla3B+5ylMBu5eAcMZA4E8kkgEbGV'@; put 'mXH4tePX9+QzTvANBGIJgNjCmAACQMA2BPaKbWCnTJ1DTpACsbVNOYsqUBDboio3JAsE7E1g7zNbzRTbuHuLmbORQWztXeNCjR7EtlArC3kBgQIkAGJbgEUtkpRAbIuk0JAmECgEAuYOUgFNfHiAK9tumRlfgGe2hVDtwsoBxLaw6gnZAIGCJrBwx7hSFKQfgNgWdJkLMjkQ24IsKyQFBAqTwMId'@; put 'p5aioO+AYqsr4S/CDlKFWX87ZzVIbIk69Hm2QnBY+mPnakPsQMDmBEyxxUHfB9LQE6S6QWxtXuQCDT+pw+NBbAt0FEBaQMAmBEBsbVIoCHMQgQFiu/KlM0crhvMdv7Yn7tncILYwgoAAEMgngeXNk8tUFngfrmzzWQXwnQoBENtUqEEfIAAE8kIAxDYv2MFpBgiA2GYAIpgAAkAgNwQWtNaWE6S+'@; put 'B1e2ueENXjJHII7YOt72a51xd2eB28iZAw+WgAAQSJ4AiG3yzKCHNQiA2FqjDhAFEAACCRBIRGypxo6YWvdMVwLmoAkQyBkBENucoQZHQAAIpEugqaNqhGYY7x7oNjKIbbqUoX82CIDYZoMq2AQCQCArBEBss4IVjOaAAIhtDiCDCyAABDJDAMQ2MxzBSu4JgNjmnjl4BAJAIEUCw4ktI0o30yR4'@; put 'ZpsiX+iWPQKw9Cd7bMEyEAACGSYAYpthoGAuZwRAbHOGGhwBASCQLgEQ23QJQv98EQCxzRd58AsEgEDSBIZb+gO3kZNGCh1yRADENkegwQ0QAALpEwCxTZ8hWMgPARDb/HAHr0AACKRAYLi9keHKNgWo0CUnBEBsc4IZnAABIJAJAiC2maAINvJBAMQ2H9TBJxAAAikRGO48W7iyTQkrdMoBARDb'@; put 'HEAGF0AACGSGAIhtZjiCldwTALHNPXPwCASAQIoE4DZyiuCgW94JgNjmvQQQABAAAokSALFNlBS0sxqBeGL7X7+2xxUvUCE4533OkrnfWOe3WiIQDxAAAoVPAJb+FH6NCzVDENtCrSzkBQQKkEACO0h1MU06Es6zLcDi2zwlEFubFxDCBwLFRMAUW9Uw3pWp0xMvb0YUENtiGhA2yhWe2dqoWBAq'@; put 'ECh2AkubJ4/SWeCdA4mtoahH1J/Q0l3srCB/axEYILardpwzCgnJfGbrhme21ioURAMEgABCKzfXjQ7g8NsgtjAa7EYgabE1JHro9RNbPrZbohAvEAAC9iewYuspB4W13v9IQ95GljsNRTsSrmztX+tCyyCO2LJ3/Fpn3OchQgguU8/Vugg0myCECDPzt65JmBKOdSwG2IuGZb4eD57BiYj+OxN4'@; put 'wL8TAR7tdyg/FEv9/g3tsxjJUDHta3sg3xRzbIi9sUf/94Cchdb/Oo/JMZGcYttEx2ocIL5ILNG/k/UXySvSj+7LI9pOdE5UGrpmRpy+w8UTqVVsvcx/J8phf+w4/rgbLoZEXo/lFMsr0bpH84sen0ONgdj6m7WObWvoQ78XE8ktmTaUDa7//vdGVP0jPA40Xky/aoxzrCKdMF01BNYkIh2v8/Bf'@; put 'GJEd8WJkRO5UmDji2vHre5LJAdoCgWwTGPAmvXfb+SMZQe8EtE7vUI650DUuuGG+jhGO9B9SZLOdQPbs788twy5E1JeJaGzmn9PwaZqK/poSMR35W/Trsa+llWF0PmkZSrGzFYde0t8XU8g9l3mnnE9KHcWAgRz5h+j/MUFJ1BF3aaL5mim2cGWbwnCCLlknEEdsxdsBrask657BARAAAkAgwwRA'@; put 'bDMMFMxljACIbcZQgiEgAATyTcAUW6bJR8E623xXAvzHEhi09Ec2lLcCWteQt5EBIRAAAkDAqgQYUToJNo6ZXrFhj1VjhLiKk8AAsb1v+1ljKVbePNAz2+LEBFkDASBgBwLmphYKU465dvxTu+0QL8RYPAQGiO09L517iFO43vOFP6LFgwAyBQJAoFAImGJLsHE0XNkWSkULJ48BYnt/6yXlsuTa'@; put 'iAzjYC6M/hnH5gxZbE483v8TmdaKzcnIOMw+HqMagSGJOIwxHxGkGHivmajpttF2Y2dWpjSJMeWqiIHzeFO2k0zHgUyH7jl8bEPPBk6UYprzWhNNJRk8SbYdyCCBvIfHmmQEiTVPY7Z5lIPk6pW6z/iFHfq9OhDqvqnD/XHvrc/e2cTmMiHe/2+MCRVIZwGy86Ch+DHiQJI28j2EEUci+nNoYI/I'@; put 'yoiA3vOqgpzfmzZldV9iNYFWQCA3BAa9b3/zymXu3s4Q9o5wCPO3GYZXdfS/OYIjnf2//WqXKA+7he4Mlwpm/KtP/aR0qHCduPyLP6564r+ZTEcIhO9Zc6Y8lM2xh3vEx+/27c9txllrwpn0D7aAQKERWPnsmUpiOR0V0+w//f8233MXHbs6donssCZXbf72wV34g3/J1Bl3nohC3bsJL5kQFMYn'@; put 'pjHzc8e9y69ddNFqI/I54HUehLsUf//73RfepTVOadGHdQwNgECOCST3JTkmOFOYQ1r4gz71k7Kh4lZlqexGWGCe47KCOyBgDwKL2mq8nIffV5g77hd2B/N2hiV2ZP0JT8Bex/YoKUQ5BIE0xfZ0d0grfb9P/bR8KMI4jMvrp8Cm4DACgQAQGExg4fPjSoWC31OYO+7afhcr6eZhfgQs5YHRY3cC'@; put 'aYntkldOd5fqZR/2hYe+jQxia/chAvEDgewRMMUWOfB7Mo0vtk5W2mMIeuT0ir/AUp7slQEs54BAWmL7m1dOd4dAbHNQJnABBAqTwHBXtk5W6jMEPQLEtjDrX0xZZUBsy3f2hT8ecntHuLItpuEEuQKB5AgkILY9hIijYN1sclyhtfUIgNharyYQERAoGgIgtkVT6qJPFMS26IcAAAAC+SOwvHly'@; put 'WZj1vXugZ7ZwZZu/+oDnzBEAsc0cS7AEBIBAkgRAbJMEBs1tSwDE1ralg8CBgP0J7BVb/3sydcXd1MKcjQxXtvavM2QwYBvG5HGYs5HD+siPesM7hzwlCCZIJc8VegCBYiEAYlsslYY8076yBbGFQQQEgECqBBa01pZjFH4XrmxTJQj97EIAxNYulYI4gUABEgCxLcCiQkpxCYDYwsAAAkAgbwSa'@; put 'OqpGqIb+X7iyzVsJwHGOCIDY5gg0uAECQGAwARBbGBXFQgDEtlgqDXkCAQsSGF5svT2EYNhByoK1g5CSIwBimxwvaA0EgEAGCczfNnEkUcU7Q99GBrHNIG4wlUcCaYntfa9f6JFDbCcs/cljBcE1ELAxgUTE1hASnPpj4xpD6HsJpC22Uoh8CAcRwHACAkAgFQKJiC3cRk6FLPSxGgEQW6tVBOIB'@; put 'AkVEYGnzuFE6I2/DbeQiKnqRpgpiW6SFh7SBgBUIJHJlC7eRrVApiCFdAiC26RKE/kAACKRMIJErWxDblPFCRwsRALG1UDEgFCBQbARAbIut4sWbL4ht8dYeMgcCeSewT2zfkqmrJF4wLlbSrQt21PSKv+zJe7AQABBIg0BaYmue+hPSy3fCbOQ0KgBdgUARE9j7zJa/PdTh8SC2RTw4Cix1ENsC'@; put 'KyikAwTsRADE1k7VgljTIQBimw496AsEgEBaBEBs08IHnW1EAMTWRsWKF2pTR5VT455yig2JEnlQPSWuCm3f3xnhg17XVSOtMRAbU7wYBrXBg+PIVBkMQUSsLYOr/X9jMu3/rfO9bUw2kbaRv/W3IxwLxgjWGcdqYM+0KS19mYoP7AwkAGILI6JYCKT1QQvPbPM/TJZvOfm2oNYz08E85fmPprAi'@; put '0IyQ3+s4+JefuqQ5jceuVgsrO2tkA2JrjTpAFNknAGKbfcZZ9XDvtnNWqobvuqw6KWLjpY7DfutV1KsvArHNyigwxRaH+dsKc8Ns5KwQBqNWIQBia5VKpBjHA9u/dXdQ756RYnfoNgyBcvlzD6nI9eNrx/9MA1iZJwBim3mmYNGaBEBsrVmXhKMCsU0YVUoNS5SDf26IkmkgtinhG7YTiO2wiKBB'@; put 'gRAAsbV5Ie9/4byVIa0LbiNnqY5eeewD14x/bGqWzBe9WRDboh8CRQMAxNbmpQaxzW4BPdLoe3444Y9wmz5LmEFsswQWzFqOAIit5UqSXEDDiS1BLIQx1QXi+5a5YGH+RHmJHQMxS2f6/zloOU1yUVquNUYIY4wRFoIzgQznUBG62Ii7fzTxL7Msl0GBBARiWyCFhDSGJQBiOywiazc40DNbc+kK'@; put 'w55zZtduaLZ2FvmLblnb5EpMxJahxbZ8xY8mPlGfvwgL2zOIbWHXF7L7jACIrc1Hw4HEVgjOdcG/ckNt+79snmbWwl/RVvMlTtg/h3LgpGXLf1zx14asBVDkhhMR24CuHtlQvbazyFFB+jYnAGJr8wI+sP28FUG9a+ZQaXCdHztnUusbNk8za+Eva609BlM65JcRh1TaNHXCk7OzFkCRGx5ObB3M'@; put '2x3SNRDbIh8nhZA+iK3Nqzjc0h8d83HXV7W+ZPM0sxY+iG3W0CZkeFixlbxdIU07Cq5sE8IJjSxMAMTWwsVJJLThJkgZQjtubk3H3xOxVYxtFrXVfEk6wG1khZUumzbxyTnFyCYXOYPY5oIy+LACARBbK1QhjRhAbNOAhxBa2jH5fwgS/xjKCohtenyH6w1iOxwheL1QCIDY2rySILbpFXD5lklf'@; put 'FgIP+UwbxDY9vsP1BrEdjhC8XigEQGxtXslV2867x290TR8qDbiNfOACL91c9xXCyOtDXtmS0mXTKuE2crbeJiC22SILdq1GAMTWahVJMp5V2759j9/YM6TYqlz/6o217UOKSZLuCq75kvbJX6VYvAa3kfNTWhDb/HAHr7knAGKbe+YZ9Qhimx7Opo5JxyGEXwWxTY9jqr1BbFMlB/3sRgDE1m4V'@; put 'i4kXxDa9Ai7ZWnc85eQVENv0OKbau6mjakRY194Z6jxbByz9SRUt9LMYARBbixUk2XBAbJMlNrD9stbar2FKXx7KCmxqkR7f4XrDle1whOD1QiEAYmvzSoLYplfA4a5sYbvG9PgO1xvEdjhC8HqhEACxtXklQWzTKyCIbXr80u0Nt5HTJQj97UIAxNYulRoizuHW2cJs5AMXeLjZyC4Gp/5k8y0C'@; put 'YptNumDbSgRAbK1UjRRiAbFNAVpUl6a2mmMRYUNuZwm3kdPjO1xvENvhCMHrhUIAxNbmlRxObGFTi/SubEFss/sGAbHNLl+wbh0CILbWqUVKkQx36g9C4viG6s1DbtqQktMC6jTcbWQQ2+wWG8Q2u3zBunUIgNhapxYpRXL/9nOXh/SeWUN1hvNsD4x1uO0aHVJ509QJT8B5timNzuE7gdgOzwha'@; put 'FAYBEFub1/GBbec0BQ1ffbw0DK5rmJOvw+HxQxd5uCtbOIggu28QENvs8gXr1iEAYmudWqQUyX1bz1ka5r64V14G18Iy9f6vykWLadyzz0OYOuLWXSI61jgT8QKJvGb+jn59qPYpJRPTKdbXgWwyEj+n+H38/X/WeVhwrtRoPPTHoWwr1Lt4WsXTN2QiH7AxmACILYyKYiEAYmvzSt+37axFYcN/'@; put '/VBpECwhgpjNs8xe+BzpiAttSAcycS+YXvnsT7MXQXFb3ie2byvMXRqPBGzXWNzjo5CyB7G1eTVXbjtzoW4E4MorS3WUqGPedRVrb86S+aI3C2Jb9EOgaACA2Nq81CC22S0gJY47Z1auvTW7XorXOoht8da+2DIHsbV5xe/bevbSMO+D2bJZqiPFyu0zq9Y1Zsl80ZsFsS36IVA0AEBsbV7qVdu/'@; put 'c79f3/1jm6dh2fAJke+YVfn8bZYN0OaBgdjavIAQfsIEQGwTRmXNhr986bJHukPvXWLN6OwflUy9S6ZXPD3kBDT7Z5jfDEBs88sfvOeOAIht7lhnxdN9289dGtQ6Z2bFeJEb1Yxgr0PyLquvaplX5Ciylj6IbdbQgmGLEQCxtVhBkg3n8ccvpG+M3iWVKOH+WvrCStx1ssnaLfb2Jk/WXcbH9nn0'@; put 'iy5abRQ7j2zlD2KbLbJg12oEQGytVhGIBwgUEQEQ2yIqdpGnCmJb5AMA0gcC+SQAYptP+uA7lwRAbHNJG3wBASAwgACILQyIYiEAYlsslYY8gYAFCYDYWrAoEFJWCKQttmF95Ee94Z3eoaLDYVxeP6WlOyvRg1EgAARsTQDE1tblg+CTIABimwQsaAoEgEBmCYDYZpYnWLMuARBb69YGIgMCBU8A'@; put 'xLbgSwwJ7iOQdbFVZansxvHre4A4EAACQCCWAIgtjIliIQBiWyyVhjyBgAUJgNhasCgQUlYIgNhmBSsYBQJAIBECILaJUII2hUAAxLYQqgg5AAGbEtgrturbCvOUxkvBIXm7Qpp2VEP12k6bpghhA4F+AiC2MBCAABDIGwEQ27yhB8c5JgBim2Pg4A4IAIHPCIDYwmgoFgIgtsVSacgTCFiQQCJi'@; put 'i0LiyKl1z3RZMHwICQgkTADENmFU0BAIAIFMEwCxzTRRsGdVAiC2Vq0MxAUEioAAiG0RFBlS7CcAYgsDAQgAgbwRALHNG3pwnGMCILY5Bg7ugAAQ+IwAiC2MhmIhAGJbLJWGPIGABQmA2FqwKBBSVgiA2GYFKxgFAkAgEQIgtolQgjaFQADEthCqCDkAAZsSWNBaW45E8J0D7SAFS39sWlwIewAB'@; put 'EFsYEEAACOSNAIht3tCD4xwTALHNMXBwBwSAwGcEQGxhNBQLARDbYqk05AkELEjAfGar6upbMvOUxQvPPIgAbiNbsHAQUtIEQGyTRgYdgAAQyBSBRMQWTv3JFG2wk08CILb5pA++gUCREwCxLfIBUETpg9gWUbEh1cEEVm49s4RpvZTLClENJhyGX/Riod9Q294LvLJPAMQ2+4zBgzUIgNhaow4Q'@; put 'RY4IPNB++hjElK8KjC+gmNb4Qp8ezpHOorYuFQghPsL5hY+ccsm/e4IfvEwRXa0K450ZlWt8OQqzaNyA2BZNqYs+0ayLLQ7j8vopLd1FTxoA5I1AY/NkNkJhxxGqzPaFPj5DorKbEtmRaEA6V4MOWrITY/J7QvD90yY++3GifaHdgQmA2MIIKRYCILbFUukizNMU2TKZnhAwfHdSTGol6nCni0Ei'@; put 'zg8RMn6DdHTvdbXP70zXXrH3B7Et9hFQPPmD2BZPrYsq06U7Jo+iKp2ncf9ljCjOeMlzYWgG1zSBuIEQEv3/hzAmmFKCmUwwNW8vx/3Rufa2g7l/rLDO5mvHv6gVFdwMJgtim0GYYMrSBEBsLV0eCC4VAstbTzmCE+0xjPH42P5CCNGn7Xnfzcr+GtT61hHD8cJNp277JLrd0uZxo8JYP06RPZOJ'@; put 'YBcLJI7BGMd9r0jE/Qw39Btn1qz7eyqxFnsfENtiHwHFkz+IbfHUuigyXdo6uRYT47cYky9EJ8yFoUvE2RxSux8Mcve6xiktfYkAWbVjnBTQvIeGdf+tAolvK9RdGttPM0J+Fy19REP6HQ3VGz9MxC602UsAxBZGQrEQALEtlkoXQZ53d0w5RQjyMMf656LTDWm+lwlVfurylW+ccdaacKoozK0F'@; put 'GeFXqnrgJ06pdFSsHdXw90jY9XNFkhZOr9iwJ1U/xdQPxLaYql3cuYLYFnf9Cyb7pe2TJgW1zt+75ZGHRpIyuKZS6rgHh/hdmZwRv3j75LFM53cZXP8+JZISCzGk9b7mlcfM2FPi7Wg8drVaMJCzkAiIbRaggklLEgCxtWRZIKhkCCzfMvkLYS3wnMycX4r004xwgAvjbnffqNvTuZo9UBxL2iee'@; put 'rBt8oUQdJ8ROpjK4FlZoyTpMjDv2BLSXG6e06MnkVCxtQWyLpdKQJ4gtjAFbEzB3gBJC/7Mh1FOirmjDlEjfa6je9JdcJLe4teqbjCrLEeJHmrOZo30KwTlC9A+c8VvmVmx+Jxfx2MkHiK2dqgWxpkMAxDYdetA3rwSEQLipfVITwmhmZLYwF7pGBLmpobZ1SS6DW/nsmYrfs/smgfRpDlYyItY3'@; put 'RnQXIWRxSA+ugq0gP6OTiNhyLh09veIv8Aw8lwMafGWcQNpiq+ojPvaFP/IMFRnsIJXxmoHBfQTuaTvtEA1rbyAs9s8QFgI90Vu26+LGY9/Iy7PSxc0TxiJKZguMpkrU4YotFuf6fzGhd3K347G5X1vnL/ZigtgW+wgonvxBbIun1gWX6d1bTr1N5+ptkavakO7rZNR5yvU1HS/nO9llrbXH+I3u'@; put '+zzyyFNjYxGCG4bgWyXsmHvohyO2X3TRanNTjaL8AbEtyrIXZdIgtkVZdvsn3dTxjREyZVtUo++YSDaaoTXdUNcx2yrZPf74hfSdQ94/m2JpMcFk/+StSHw6Dwcl4nqaCH7HzJqWotwUY/62iSNJ2PjPgQ6Ph9vIVhnREEc6BEBs06EHffNGYPmWyVcIIR7+TGjD78tCqqif1PpR3oIawvHy5sll'@; put 'OlNvF5hfE2/rSCzIJ5hIi0pD6gNXTmkJWS3+bMZjB7E1vzT5R++SAmNGM9ITLCUyoiaTsC5zt673EM2nvYuQDjPOszlS7G8bxNb+NSy6DMxdnQQ6/OGAuufSSPIC4ftmV7dMtzKMee3jv+okJTcIrl8ab/tHr3zwS0Gts2ns+6WPFsutZSuLbf9Zx5LzK5KQr/Yqoyo6g+8frBp9I7m5lTYWiGIF'@; put 'OZjX71XGfCiE+lpfuGsdIupz145/+j0rj0OILT8EQGzzwx28pkHAPGSAhMULCKP+LRnN7RIxIt+9vm7L02mYzUnXRoGIs73mJCx4E6Py12OdmttKKrRkrUaCNzRMbH49J0Hl0YkVxfbe7eccSxGZRbF8mk/debB5KEUiiMx9t7nQwxJ17qBIukUTPdsaqrcEE+kLbQqfAIht4de44DK8u+O0UzQR'@; put 'WEMwk8zkJOJ4WSBykp0Od29snuxwSoGLQ1rf7V5l9OGxRVKNgE+h7l/qQl4wt2bdpwVXxH0JWUVsV+04xxXS1QqJOqf7QjtPlamzJB3m5hK0gNbziVcZvVx3Satg5nk6NAujL4htYdSxqLJYseXUei60pqikf3vYB2OutOOtV1NsREi9DmMyw8G85YOudDl/n1HncoLpQ3b6MpHogLSC2C7fcvKJ'@; put 'BEkLQ3p39VBnHhtC1wyuBnQeDplHMyKECMVMokR2mM/hhzqO0dzUhGBpi8Ska6dPXFvwdyoSrXsxtgOxLcaq2zzne7Z+49caD/1vJA0h0NTZNZsesHNai9urjwypvgedUukkSgbftlT1wBtO5r3GIfe8UEjn5+ZTbBtfv1Au83WfgYRYypF2dOz4Mbfc1Hn4n5jQjbqubuE88CZj7p2qEQ66VSY0'@; put '6nAgWTvIMPRjFNk7zjDUixiRv0CJNOi2c0jv63TS0lk91ZMeacSN3M5jFWJPjQCIbWrcoFeeCJi3+whyPtGrfnLafrFFxjmzq9ss/7x2OGTm81xl87hTKVWWUcyOjTeJihHpCYTETddVbPgHxv2n3dv6J19ia7L2ttfcbSDjqtgZ4poR6iOYNYeMvntvOemVdYkCNm06Wk88TWalDVyoUyI7m1UV'@; put 'AAAgAElEQVSPOaL7O5n3J9zfd++0BI94TNQ3tLM+ARBb69cIIowi8FDbuV5VxpuCevcJ+8WW46rZtS1bCwVUY/NkprDg/wqhLY13a1k1Ar0Sdq5yCj5/al1bl53zzpfY3rP1zDmq0bcIY0Ki+WlG8In//wbTGKrd/lojRildgZqi6+o4+YsOwpbrInxOtP3+OVRIPC8bnstmTFqzy861g9iTIwBi'@; put 'mxwvaJ1nAqbY6or0vF/bXREJhRN0+pzKTc/nObSMu5+/uW40Fv6ZCJPpCht8aD0S+CNMyJ0UK4/Y9XluPsR2efvJjboI3Rh9PGJQ9+2WsGNqqVN9IlO36c0vTW7ZuLJEPqjRr+06JHqAOGhpW5j3zayv2vhSxgcOGLQkARBbS5YFghqKgHkbmWL3477wR2dH2hhCmzm3pmNloVJb2l59eEDtfNAt'@; put 'jz4NY9K/oUL0T0jzvexio2d2q2qH3TZWyLXYLu845Tydh39DCfVGGPapu9+nhF1z06RX1mZjDK1om/IlHRuPEowHLPXCiP4LCfrd+prn8769aDbyBpsDCYDYwoiwFYGHmyc7VM+In/m1PZdFAidIvm1W9fN32CqRFIJd0Fo5WQh9kUwdJ8bOftWMUEAizieRwHc11NpnfW4uxfbebacc0xvuXacw'@; put '5/6lVn3q7vfccsl5s6u3/C2FkiTcpamj6lCK3Q8aQvtmdCcnK31D4331nRWT1sPEqYRx2rIhiK0ty1bcQd+99bRbDK7uF1cH8z76qdt5eeOxq/Ny0k8uq2Ee5Rf0dl6iGoF5bnnEwbG+da4GJaSswowunFW54ZNcxpaKr1yJrbmu2S1pj1PC9j9DVY1ApyDkez+p2ZbwJKhUcoz0WbL2dLfh7n5E'@; put 'Js5vRdtR9cBup1x6dVfF+qdSfU6cTlzQNzcEQGxzwxm8ZJDAPS+cW6NpPW0Rk2Gt70M3HnNCMU04adwxzuX0k1sZc14fb9ayEOJDIUij7HP+dsZZa8IZxJ9RU7kSW3MtbUjzNSvMvX+zCpWH5t5Yu21pRhMaxtjCHeNKcUh+RCLy/scgZhenVN4Z0rtvqK9q+UUu4wFfuSMAYps71uApQwTu237W'@; put 'WH+46wVG5cNMk+bGAUiwc2bXNj+bIRe2MbO8tfYIv+h9yMXKJscGbR7lF9b9bzho+bSG2g2tVkwqF2Lb1FHlNDhdTQndL3CcG+sNJL59Q217b665LGqr8eqG/16nVLp/rbgZQ1jv6ypxHHz5tIlPP5XrmMBf9gmA2GafMXjIMAHzVqpWGnwUY3FexDRG9A/11RsvybArW5gzD2boCbHTCGKLCWHH'@; put 'xga97yi/ZwzEb5lT3fJPKyWVC7FdufXMSiH0pwyhjjJz14xgH8POc2fXbmrOFwvzJKF3D9l5Bcbogej1uOY+3xJx3H3Yh2NuteOOaPniaQe/ILZ2qBLEOIjA0vbJFxAsVkdecEnl7wlNr/5x9dMfFiuuBa215YgHZgssfuRgJSNjOZhH+SFMFypG6NdWWZ+bbbE1l994JON3hJCLIzy4MDb0qeyb'@; put 'jRY4zvCOluOnUkxud0ql/V8EzB/zQAOFuhtxMNgEm18Uzrs5LbG97/ULPUqIfuQLf+QZCgkO4/L6KS3dhYMMMrECAfNWnEyU1wQy9s8slYiy4LrKdT+1Qnz5jGFRW80hEqa3GUK7nBJZiY3F4Oo7FEm3M5/70Xw/z8222N7TdtohksPbElD39G/HaAqZYQR/cP2kF36VzxpF+17WVlMZ0H1/jp3w'@; put 'hgV5UmD5yobqtZ1WiRXiSJ1AWmL7m1dOd6v6iI9BbFMvAPRMnUBT++SlCPMGhHD/OCaIfcyRGN9QvbFor26jaZpLhQgSyxmRj4/dKclsJxHns9wI3TCjuuX1fG39mG2xXd5+8skq9/9Voo7+CwLOjY8IMY602tF3d246/mQhxG898ogBm1+4pPLHdN47bXrFhj2pv1OgpxUIgNhaoQoQQ0oEFm+f'@; put 'PFaEgy9K1BH1AYU3MeI81647KqUE4gCd+p8NHvrhN83nuRjjY2Kb9i8Vwo4nOSO3zq7Y8Gam/Q9nL+tiu2XyFZzzX0ZmbBPMtjql7kmZ2iVquPySeX3e5nEH6zzY4pVHD6hTWO/7m8JKz4EvkcnQtF5bEFvr1QQiSoLA4s2V1xHKmiKbPJh7zzLCVh38/sjrYILJZyAX7ji1lISC1ziZd7bGg2Nj'@; put 'ETPs8AnEHyQGuvu62ud3JlGCtJpmW2zv3XrG3SoPzjCDNGdnU8QWdVefdItVN5CYt7XiIAd3PI4RmjQArMCvCY4vm13X/EpawKFz3giA2OYNPTjOBAFzZnK4xPdnSthZEXvmczmK6Z3dYXGn3bYvzASTA9lYumPyKKLyOw2uXxm9N3Ckj/k8l2B5gUcpeeTa8U8Fsh1PU0fVCFVX35KZpyyeL4fk'@; put '7eJcOnp6xV9Suo26tK1mEyGsX7h0roawoGfOrWtryXZe6dhfubWipC+s/tkhlZwSbSegdX3slkedDfspp0M3f31BbPPHHjxniMDSzRVfMbB4UqLOI6NNKswzhxHyQC5EI0Op5MzMoraKKRJx3s6FVhnvKDgHK2kJ6b2LfKWjN2ZzZ65siq05E3mky7FdM4L9J0RpPBwQyJh4Y+0Llj/E3ZwAKLj2'@; put 'S5k5L4geFJoe2ClL7svrq1rW52ywgKOMEMi62KqyVHbj+PU9GYkWjACBIQgs6qiaKHT9TzJz9W90EfXzHJbYtPoJG94GeIMJLGmv/hbD8jKO+BF430SzSCvzljzF8p8QN26ZWdP8ZjYmUWVTbJc3Ty7zoV2veZVR/WNCNYJ9MqWHN1RvscXsXnOXMNkvHlaY+4LoCW4hvbdLwq6r5tS2PZGNmsD7'@; put 'JDsEQGyzwxWs5oHAkvbqKg8b85ug0XVUtHsnK/MFjb5FmhG6Jx87BuUBRVIuTVEK08BcQuhsFmepEMVSJ0XSYr/huz/T/LIptnufB6N/yczZv+aYC6NXptphMyq3+ZIClOfGS9qrF1Is3RAdhvnFgRF56pyatt/mOTxwnyABENsEQUEzexBY2lo7LqB3/tGjjP5CdMTmc1yB0DaZOX809t2Sv8Pk'@; put 'qcH1NI/y6wl9usKrjD6DEdkxkB/nmhH6p1sZ03BdxTMZO4oum2Jr7kOs9al/c8sjvmjmYu7OpEieI+1wQEM0e3NG+b9G/+N2tzLypoGCG/C5pRGzrqtc+7A93p3FHWVaYpvIphZwG7m4B1g+sjc/wANq8A8uufT0WP/mB67O1Y2KVHq91bYuzAerWJ/mB/s7h+w8StV9D7rlEYP2Wza4Fg7pfa94'@; put 'pPJZPdWbtqV7So1Zq5CuvuXIwgSpvc9sPa2a0Vtp5mnGrgt+xk/qtlp6glS8cSAEwkvbKk/RRPgxBysZEWnDBTcEN37DMZ6Z6bsOVhiPhRQDiG0hVRNy2U/APFJNIl0zEcJzorfCizQIar7dXmXMQp2jh2GHnsEDxxQqiXRfpPHQ/BLloP27dEVa7r1KLPmdQfC82RPXvZ/q0DNv9aKw/h8H82Zl'@; put 'NvKy9snrMRb9s3r7D6zA5OaGqk0L7fqsc17bCWcig//aKZWNjmbuZGW/MkTfHNj8ItWRmP1+ILbZZwwe8khg5ea60WHCmzBGF8ebddsb/vS/HmXk9R45+IQVNzrII7p+1+YkHUeAXG4Izdy/d8AHvPl6UPftlqjzQdznWTj3G+v8yca7T2z/7WDe8nh90136c++2by5Tjd6GiG2C5I1OufMMO9d6'@; put '0eaqiRjjPzIqfS6aGcG0WaKOS6ZNfPbjZOsA7bNPAMQ2+4zBgwUILNg04WKBjUUK9Xx+8PmvQsjU+3vV0Bsbqtf+xwLhWi6Epo6qQ33hzgc88ugzIxuIRAepGaF/O2nJNWM/KGtL5nn40uZxo1Qq3syW2C7pqJlFBG2K1Nwjj3ozRAK1M05cs8tykJMIaMGmqhM04XvSI++daR35YcjRShm9CAQ3'@; put 'CZg5agpimyPQ4Cb/BMyj6LqD7PtcGHcozB27RKj/mZ5MvL/QmViUzq3R/GeanQgaBSKujuov6kbotw7mrYr1woVhnp/7moOUXZHoTkfZFtvlraccEeDd25ySp/9Unf7lTES6ZFbVhseyQyl3Vhc3TxgrKyXPcqT3ryOO/AiB/05k+i1Y7pa7WiTiCcQ2EUrQpqAI3Nc82RNk+lUCi9soYYNuX4Z0'@; put 'X6dMvQ8jhSycM75ld0Eln4FkGl//iqx0ur6vG+G7Yk+qMc2bz3MZcTwkGfyuGZNaD3gFOextZObp5EI+JtUdpMxafyI+XFPmOKR2b+pCOGjpQ/oefXq+TzzKQCnQgi2VX8CaYa4vPzHankLdrxp66Nszaja+lQk/YCN9AiC26TMECzYlsLi9+kgh+DyCyHnxti6kWPkHEfguEg4/CeeKDi7y/M11'@; put 'oykO34gQvlaiDndsC8GN9xBh87lb/t3cr8V/nrt3NnLYnCAV/5ltmmJrxtTUMeWksN77V4W5S81/q0aw10VHnjOjes0mmw7dAWGb5xhrRvczHnnkgLsNYd3/scxc35ldvbmjEPK0ew4gtnavIMSfNoElrbUVfm3Xg15lzHEYExprkAu+hWF2u1P2bbTzxJq0QQ1hYEHrieNcbOT1quH/VuyXFnMG'@; put 'sFsa1ebXulf2quKZ2APbTaEQIvBWNsXWnJnulIJ/lIjj7EgKGNFWQ+bfLpQ7F+aXFs0Qj0hUOSO6TBiRnYLz7zbUbmrNVv3BbmIEQGwT4wStioDAgs0Tr8ZI3CEz18Gx6ZrPc12sfDXi+u27qqretuqpMfks0+L26tMJJsuxIP+DMSaxsUjEtUY39J/2VNe8GuGXC7E141jWVnOWwPhJgun+L1OE'@; put 'KD+ZWbFukV2XAcXyNW+Z+1loFSXSd6O3dwxqPbsVWnrJnNpNz+dzfBS7bxDbYh8BkP8AAuZVUKmDzmBYWqTx4CA6BtdVSpV7ZIIXwJrGwYPH3HxhSVvVDIdUcr3OQwMOQjdby8TZKzD5hSHCi8ydnHIltk0dVc6wrj+qMNe5n13dkk4h8PcaajauK5S3gTl+FeJfpEiu/mMFIz/79lO+fG5d21OF'@; put 'kqvd8gCxtVvFIN6cEGhqm3IspdIKQ4RPjeeQYvkfHImbe0rKn87mqTg5STYLTpY2Tx6FJe0mXWhXS9TpiXVBhLQbYX67QfE6NdyzPfI8Nbadg3k6KSFfunb8U2lPVGvqmHxUQOtsc0nlB0X8+NXOD71s1Cmzapv/lQUMeTFpzhp3bJ5wHSL4LjmKvWr4fRJx3N5Q3ba8UK7m8wI4RacZEFv2sS+8'@; put 'c9DkiEg8sF1jipWBbnknYJ6Vq5b4LvA6xs7xq7u/HhuQeWvZq4x50q91roBJKIPLZX7oO9snnuikJbNUHro43vrcEnns33rCO78Wfdsz2pIptjrj/5OJdbHmVffi9vHTKHasiL6dzLDjhTAOXD23svXVvA+6DAVg5jq/ddxZQmgPRX+5MJ+hUywtdso9t8L8gwzBTtAMiG2CoKBZ8RIwb0ES5Lwq'@; put 'bPhvlqhj/1VRhEhY9/cokvfXOhULrp/YArv3xBkq5vm5BtcXSMRxAiVMjm1iHhOB8eCPI1NssaZ9+cc16z7NxAg03cxrOf5hh1xy6UDxF68yJF8xo3r93zLhxyo2FrR8fULQ6HukzHno0dExYST9FhMx126HMliFaypxZEBs6Ue+8EeDbhPBlW0q5YA+ViZgbv0YxGojQujyeEtdAlr3J25pxK2U'@; put 'OB6dUbnGVse45YK7uT7X3V12GhZkMSH0K/F8xoquQj17NEGPnVX55CeZinHJ2tPdyB1sxFjUR1/h+tXOj1ys/OqGms1rCuk2610dVYeqwV3PlDkP/Vo0w6Dme8Ell15UX9Xy30yxBTtDEwCxhdEBBJIksHhTxdGESYsxwufEWyqEEHqJc3RzX82mtemeipNkaLZo3j9ZSdNuYlS5nhImHegqV6Gu'@; put 'PZqQMiq2pj8zht5Qz30eZeTl0bewVSOwW6auH9ZXbSqog9nnr584MoA+3TTCdfix0bxVI/ASI95vz6nZ+K4tBo+Ng8y62OIwLq+f0tJtY0YQOhAYRMB8Hlm6dUpVX2jXg25l5FdjG3Bh6DpXN8nU9aOG6hbYbznOGFq0teKwcMj/kEceOegoRLO5eZVLMetm1FExveLZNzM9DPceJ/juFUKg5TJ1'@; put 'evffjTOCfTJ1Lmmo3nRHpn3m015jR9UIovke90ij+k9Bivz4wp++5XGOvXhOZfOL+Yyv0H1nXWwFUz4P+8wW+jAq3vzMU3HcquuH3NB+IlFlTCyJ/ue5zP1LrPMl9ZNaPypeUvEzN/er7vTTOl0Eb1GYu4IRxRnb0iONaNG5eqvfob001E5UqXI1vzQprePPZ0S+hxJp//pq88uSQypZperGrYV0'@; put 'BOOStce7NQdbKDPXj6KfWQdV325Z8lztr259Cu7GpDqaDtwvbbGVQ2xnb3jn/m+Fse6cdNTNqtHVzAUWCOlI54QjpO1vRjDDBIth49jbP7Uf077Z/0B+eAIxIMRQtA0ujP6YCKb99s38DvRDhsjhQLlxoQuTUWqZJ9crkTokYzHRmpk5xtqlFAvDENj8HfsaFyTlsRBriwhdmHGa/0/ZQF+Gvndc'@; put 'mn8XuggbQuv3S6W97bBBuUG4y/xNiDzSLZXcEzA6B9ymi/jrCX/yjlsecYcQ+E9wyPfgUWSKnret9qiA0fOASyqfEnsyk87VkGYEX3PL5dd1h8SLjVNaDvxmS2agmptetNYe4zd6nvLII46J7hrUul50OMvOnz1xc8pn9iYZSk6aL2mbdJHB/atk5tl/jrBmhAKcG8vd/tF3FsK+0TkBmYSTtD7E'@; put '73v9Qo8UIh/2hT8uScInNAUCBUHA3OCCC10TiHMkhCEzd/8H11Aza/cl/TIWeF6Pip6O3bqwIKCkmUT/phjtFWf+/x3kOymRv0Zits/sP+QAy09QxO+cVdue0bWx5jGCQrBHMCYnDUhDoH8ILK4utOVdi9omfNvFRt+rcf+AHdOwIE0uxXfLteNfDKRZTugeRSAtsX2o7Vyv4XR+AGILYwoIDCZw'@; put 'INHVudqqMM9VMyqe/08hzXzN5DhYvLnyalUE73JJZYOWW5lbEDLiWEV1x4o5UzJ3MtPCHaeW4qD/DxKVz4zOxZyp7JZHn9dQvXF7JnPMty1zSZaqBx6JPb0JI/YzSuS5MKs+cxUCsc0cS7AEBOISGEp0heAGxcoDKtPnwfrc+INnefPkMo0Gb2LMMSe2hUDmFg3G+xSRBb7yPb9sPPYNNRNDcNWO'@; put 'ca6ekHI3I9LV0fZUPbCbYuUHhbbl4cK2CcfqRvgvLql8/1pcIYT5DOVZB+eXTa1r68oE12K3kZbYrtx6ZolDKnkfrmyLfRhB/sMRONBVbkDrv2q61SW5f3/t+Kfg1l0MTPPW8sptk47qC/t+7pRKB97iRQiZh9aHNN8rCi2ZOreubdtwtUjkdXPiVk+A/YRSpTH6+XFY7+uhVJl1fU3HrxKxY5c2'@; put 'C1qPKw+ogfZy52Ffjo5ZcL2dY/e352ZoUxG78MhGnGmJ7f2vnl3ONM9/QWyzURqwWYgEhhJdUzAwpi8jTu7AJPR8Q/WWwacgFCKQJHIyt88MebtPE0jcJVFlwAYNphnVCPQy7HiSIL6gobb99SRMD3FHAuGFrRMuR0jcrTD3/nkpmhHsY9g5v1fDSzI9USvdmNPpv7R53CiV8tUOVjI52g7F0lZD'@; put '6JfBErZ06CKUnti2nl3OXO53+sKf9B/KDD9AAAgkRmDoW8tC6FzdrEhlM7orKv8OR/kN5mluSKHq4gpDhG53SqWjY1uYJ9zI1PNL2RCLZkxq3ZVYRYZuNX/T+LM4Uh92SeUDlnYx5LhPR6iglgat3FpRsifQvbrUMXbA2ueg1vsPr1J+wYzKDW+ky7NY+6clto+/fqHc2+uZjwQ7VOehgMG1/dPx'@; put 'zecpGCPOhcHNJyscC47NBwFcCIT2HnWJScySn30LOvi+qHB/W/Mn+mhMbq61OeDSD3Mhh9mL76uqQGb7yL8QwnGX4Jiv7/UjCBeYkwOyEQktFRrK1/DDbaB9My7eH/fev8fw6P/33vzi5zacv4G5D9c68rrge7+skf3+P4uLR/GOtfdZtAf2FLv8I7o1RnE20jXzx8l/gRQC7V3CFTVm9udojmOT'@; put 'O+HmkBYYmaPYHJjmX7kwiPl6/184xsKclcwFNgxz3COM+/9t/t18HWHOkWE6IkTCzpGE0Ckc952IKXXFkjCvnmTi/JmOlEVwCy/+OJm3teIgWcU3C4KvYkQetD7XMNR3EKY3+8s7/5ju89xFbRPH64b6hFMqPTQ6GoPrz0rM8YNC2mN471pc+pBDKrk4OldVD7zHsPvSOXUtbYl+RkC7zwikJbYA'@; put 'EggAgfQILG+tPULF+nyKpQtil7mYlmXqfksYxq17qqoehavc+KwXbppQzTFvUqhrQrzTgyTiWKMb4Z/Oqm55JZ2Z3/PaJ3yda6E1bnnE2AGRcNKuyOKCaQV0CIW5jzXb47jXxbzXROca0vu6FFL2ndm1G5rTG/nF1xvEtvhqDhlbjIB5mdzUVns0pqQJIXx2bHi8f9YyfRlhdGN9Vct6i4VviXAa'@; put 'myczWQqeLmNpGcH0f2KDMrimIsQeVRi5aUZlywepBr2obfyXKHauJZgcPsAGxlslQ/rOdbXP70zVttX6mdtZ/mfsW3co1H1jzP7RPoW6L6+vbnnCajFbOR4QWytXB2IrKgL9h363T7hA17X5Lrn0yNjkdR4OysT1a4H5IjipJf7QmL9t4kgc1mZyIX7slEpHxbYigu5GGN0uwvx3qe7ZPr914jG6'@; put '7n/Wo4waUCOK5W2c8UvqJ2x4u5AG7rxNX/shxnShg3nLI3mZm4s4qffmztLy+xuPXZ2RJVeFxCxeLiC2hV5hyM92BMwj4ISr59L/n9xwR7zzc0O6r1Mh3l9i4lxQSPv2ZrJQi9pqDkHCuEEg4wqZugbtcKfp4f9IVJmPsPpoKjO/mzqqRggh/RFjPCU6blUPviUT75UNtRtaM5lPvm0t6qiaGFK7'@; put 'V3vlMZ8fEIsQf2KG+8czJq1JeyJavnPMtn8Q22wTBvtAIEUCi5orDjOodgfB7EKZOgedGU2x8g+OtJuFCK1JRTBSDMtW3ea3jqvwsPL6sBE4jxJJiQ3eyUo3B7Sulb1lY59K9grN3G3Kw5UHVb3vu9F2Zer+WNX6ZvpqTv5jIT1nn7d53IkSlh5nVBlwRS+E2ECpdGkhTRLLxiAHsc0GVbAJBDJI'@; put 'wDw/lzK2RCD8zejDziMuhBDbERY/7a1qbYYTW+KDX9xa9U1KpGUY4wEHDZitzZ28ZOp+Thf63Pqq9f9IpnTmMiSElZ8Jblwy8Lmmv8fBSq/trqxbXUiCu3hz5YmaCD0ZOytbIq6NQkXfhSvcoUcPiG0y7yxoCwTyRMCcRLWg9YTvCCEWO6XSL8aGYS6vo9Txc86NOxuqN36YpzAt7baxebLDzfSZ'@; put 'DsnboPHAoOMQGVZ6EDLuC3N6dzLLrczarNgy5XaB+C3RACiW/aoevHNuXdsiS4NJMrhlHVUnKKT81yr3H7f/Cx8SwsVGNOuq/7JCmiSWJJoDNgexzSRNsAUEskxg34YO30eI3y4z54DTWkzX5vNcmbh/5pCUpdMrNuzJcji2NL98c93BgpJGQ2iXx7u1zDl/n2ByW0PNpocTTdCc3FbWcfJVBtIe'@; put 'jL7C7d8ZTOD5vTWtjYV012FFa83nVcz/xIg8PpoRQcoOZPDvzKpb/16i7IqlHYhtsVQa8iwoAndtmvA5hNSbJaJcKlGnOzY5guTXMRLzVTf5a6YPXC8EkOaylncOee9kwY0FMnOPi83JPDxewZ61GtJ/0lC9/rVEcu6/+7B5wmyJyvMoYfL+qz7BDUbdt3QFQwW1veOC1glHcK79zimVVkXzYdjx'@; put 'gi7QJQ3Va/+TCLdiaQNiWyyVhjwLkoD5PNenf/zzEuXgiYwog3ZR0oW6yck8c/Z4yl5NdgJQQQKLSco8cKAzIF2uc/8dLqn8IIxx9PZs5n7LPRJ2/tyQybJET2ZauHn8d3WuLnfJ5QM2v5CQc6mGREHNIF+4Y1wp8pOHZcl1fjTasO7/l4OWXllfs2FLMYyjRHIEsU2EErQBAhYnsGjz+IlhI/gr'@; put 'jzJqwKktZtgG18IaV5sdzHMdbCYfv5DmnsBhg16hGcFbHaxkZGyrsN7XRZG8otSlLk3kUPUl7dVf9Yf3PFHiGDtg5q5f71rvoJ5L59Z0fGrxIZVweOaRhL6gdC+lypXRnfrU3R84SMn3r5+0ZVPCxgq4IYhtARcXUisuAuYEIIJ23cSoY7qDecpisw9qPbtc8qjbekL6w41TWkLFRSexbJe2Vx/e'@; put 'G9p9b4njoLPibf0Y0nr/rtCSaxpqWrYNt/WjudtUUPU9U+I4eODmF4g9g3X1ykwckpBYVtlvZW7vKO9WlijMOz367oCq93XLzPm9huq257IfhbU9gNhauz4QHRBImkDj1ooSWdXvkqjjRxQzKdqAOWvZr3V+4JZG3Iax/hiszx2M13ye++6hH345pAfvd0sldbEtDK5rQa1rh1sZNW129ea/HahA'@; put '5uYXfrXvGbc8ojK6XXfwo9fKXYecW0g7gZmTxOTN46+UqHw/JdL+Z9aaEfQzosztrW5dVUiTxJJ9Y4LYJksM2gMBmxBY2loxzqfuub/MeejE2JDNCUAGN7bIxDOjvub5l22SUk7DNO8UyKT3YpX7G0uUg74Q61ztP5nJ9RA2jEX1k1o/Giq4Ba215f7wB8+OcB0+QHBDat/rTlp2bn1dYW3vuKB1'@; put 'whmaEfi5Rx51WISJ+ShDYd57///IqztmVK7x5bSQFnEGYmuRQkAYQCAbBCKCYYjwTW555NGDBcPf45DKH2WGsWBa9cb3hrs1mo0YrW7TfJ4b1ND3VSNwy6ATfxBCAa37E4k4H+SI3f2TurauePksaqvxYkrSxfgAACAASURBVMxXMSx/L/p187mmWy65eHb1lg6rc0gmvsXt1V9HHP2eUWnAHAIh'@; put '+DqMpR8U41pwENtkRhC0BQI2JRCZAIQFuZ0QOuh5rvlsjVHvQwLJi5PZ0MGmOFIKe97mcQczTOcIJK6Rqcsba0Q31LcpkZdKNPTIjMptg67eVj57phL0di6mhE0lmLFI/6DWvUvGjmv8ddueKqTbrEs3V3wlYPj/6FFGDhBcSuTNBjcuKTbBBbFN6W0HnYCAPQks2TTpi5jxJoSQufXj/g/8SDaM'@; put 'OP7JuT73kA9GrLnootXmUffwE0PAZBgW3ebh6nXxGAY130tuVvKjmdWbdsS7U7C4tWImJmxJ9PP0sO7voVhqCNRu+VUhCe6CLZVfCAb3PFfmOORL0RgNrr/gQK7zimm3KRBb+CgBAkVGoH/zhfbxZ5bIB9+m6r5Bz3PNvYI98pinekN7ls2pa2krMjwJpWtOBnK3VZ6NCVsc7/xcc+coiqQ/c67d'@; put 'PLuu7c1Yo/Pbxp+FOP9d9LF1OldDFEt3z67ZfGNCQdik0bJNEz5nEGoeYDDgmbVC3X/ThXbxzMrn/22TVNIKE8Q2LXzQGQjYl8C+25qXCCHmxdv60fzwd7CS3xoM3VY/fu2QE4DsSyD9yM3jEHVn1w0IiRkKc5fGWlSNgI9ix88Upt4Ze2t5cdvEOoMbf1WYZ/85seZsccTFQ706m9o4pUVPP0Jr'@; put 'WGjcMc6F+wJrvPKYSdER9am73y2XDz3juup1/7RGpNmLAsQ2e2zBMhCwBYEl7dVjsKA/EsiYQYk0aEMHmXreMWeXCiSvgvNz45d0wabxJyjMeZ3G1Ysk6hiwfaYQQnjlg17waZ+u6Csd86fonbzu3PTVb0vEdb9MnQdFLJvtGZFX4C7pJzPOWhO2xSBKIEhz3kBIE79j1HlOzC3ltxBml82t2VTQ'@; put 'u02B2CYwSKAJECgGAuazSM7C87Ag5zMiO2JzJpi9KhC+3SU5n7t2/FOBYmCSTI7m7fmFm080D5OfJzHX+HjPc2XqeU7j+k31VWtfithe0F49QVW7HvcqYwYsL+KCP+Zg8rRCOlDCFNy+cPjnDqn0omi2GLH/IoyvrK9a35IMczu1BbG1U7UgViCQAwLLOiadIBGlSefq5Fh35rNILowOiuTbejXc'@; put 'Wki3OjOJdklr1fmEyAsxRoPOzzW4GsKIPWogftMNte07Tb+L26uPZEL6MyLo+Og4VD2w1iGXXF5IB7Objy/Cpb3zKaYNA3P1d8vM/YOG6k1/yWQtrGILxNYqlYA4gICFCPTvonTIB1cHdd/NbnnkoRjhQZ8VEnE9jLBx53UV696xUOiWCWXv89w9N2CErpPjbJ8phPgQYXRnb+nuhxuPfUM1t4pU'@; put '9fBTDsmz/5xYMxku+EYu0UsTPQjBMgAOEIi5vSPahZZ4pZHTo7fFNIxwH2POy2dVNv+l0NZ8g9jaYWRCjEAgxwTua57s8TFdcjDHWJkoD4aNvgETWyLhBHXf7hL54LtIMPDQtCktfTkO0xbuFrXVHEIQ/wlC5IfRR++ZwZszvzUj/B9MyPU31G59sn89tM4eo4SdEZ2cX+38u5O4Lp4zadsbtkg6'@; put 'wSAXt1Z9U+Ohh51SyahIF3NiHsOsya0EGq8d/6KWoCnLNwOxtXyJIEAgkH0C5qH0WHIdjHV8iUydp6p68JiA3ikTRKhEnSXxNuWPRMUFN9fjbndK7plhvefvsN9y/Hot3DShWkPh+Q7qqYw9tN7gahghspoJfFtQVntQ0HjQIXsuiLbEhf5PxPH359S1vZj9EZE7D+as7KDe9zuvPPrz0V4pVn5n'@; put 'CDyzUCblgdjmbkyBJyBgOQKLt08eS3R0BUXk0rDRd7hMnYN2Rko0aI2HA1ig7UwpnX7Yf0v+CZtiDCZn3j51drlOEhzFPbQ+pPv2IIR+rQi2QjDlZoTQD6InWgW0ro8d1PuDObXtaxKtix3aLW6f8PWQau42NXrACUkIoY0Sly8rhM0vQGztMBIhRiCQYQLmrU2BtBu5oV7skErHZNK8agR7HVLp'@; put '7wUjt8P63PhkzdvFvaHgtQLjOS6pbBD/oNb1osxKV7lY6aVho/ekaCtBrXePQj0//PzOg/5aSF9o5neM+x83HvFrQ6gDNlqRqWcD14PXzqjZ+FYmx2mubYHY5po4+AMCeSRw77ZTRmq6qPdrXde65M+ekw28Xdk/41gzN1gIG71dGDGdIGwwqqCw0ScTzCSZukowItT8b4wHT54y7VGsPDSzat3V'@; put 'eUzX8q7NI/hUQ5+LEZ4uUacnNmAHLQmPdh+lvO/bv1Kov4nOw0GB8NJgzZbGQtresf9Oi6Y9RjCtQ1GT8mTmek1F/HsNE9e+bvmiDhEgiK1dKwdxA4EkCSzZWne8P/Dx417l4GPiCWRA6/rEr3W+7iCe+72O8mZfWPF9ZddoYbp548LV4iurL9z/efHG6F1YYf7PEyHOkqn74pDhPy56B6WQ3rvH'@; put '6SyfWD+hsI6PSxJ5ws3vajthvDD4CrdUVpNoJ4Nrqsycd82s3HBnon3s0G5p87hRkmPkbw0RHjBJzC2NfDNs+C6fUbl+qx3yiI0RxNaOVYOYgUASBMznhI7OkukI8dvlmKsn81xbzQhvxgg3obDRFmJef7JrZxubJzOF6V6Mtat0IzTXvOpVqHNZV+XGWwvpqisJ5Ck1Neuk7Hacr/LgwtgNLoYy'@; put 'aN59oJj+zCn3ziikmbvmhD1faHdrieOQcdG564b6jkMq++aMyjW2m5UNYpvS2wI6AQF7EDDXelKvdpvBw+ZWjEp01J3B918rlUbf4jecaxuntIQykZG59aOmB8+h1PX4DbXtvZmwWWw2FrQeV24Y6DqM6QynVDpo+8x4PDAiqyVKflxIu02Zt9g5Z48RQk6Nzplz423GHJfPqlxvq0MyQGyL7Z0M'@; put '+RYNgVU7xkm7/NoKhXqvoYRJkcQ1I+QnWJ7HtN4H6qe83F00QGyW6F2bJnwuZHQu8UgjzjTvFgwbvhAbCZevnFW3/r1h29qkgbneu5v6fuVk3u9Eh9wb3vXfcuWQb8+oXv83m6SCQGztUimIEwgkSeDuradeqevafZggZ6RrSPN9igid89O6Hb9N0hw0zxOBZa21xwQN34NDnZ8bHZYvtPNfZfJh'@; put '35pV2/yvPIWbcbfm7XVP18hpAhkLKZHkiIM+ddd7Hlb+nYba9h0Zd5oFgyC2WYAKJoFAvgksaau5SCD+K0bk/UJLsfyGqgd/MLeubVu+4wP/yROYt+nEi7jQVrjl8rHRM3VjLYW0vjddxHHarLr2grnCNXNc0l73XYzE7wimNJKzwY1XEeanza3p+DR5orntAWKbW97gDQhknUBTx6nHhbWu5xTJ'@; put 'c0jEmWYE35ao8r2G6tbtWQ8AHGSNgHkurBIgNxOMr4u3VOgzEdLeogh/1y5XfYkCW9JePQMjvNRcchbpw4jjibHvlVxg9TXHILaJVhnaAQEbEFjUVuNFQntOos7qSLi6oX6AiXT53JrNG22QAoSYAAHzlCBV6/2FSx4x6GSmSPeQ7utUSOnZs2tbbLlUZigMTe2TViCMZ0ZeN/eXVojrkulVax9P'@; put 'AF3emoDY5g09OAYCmSewcus3Zuk8tDzqCkelWPpRQ82mhzPvDSzmk4C55Mophc5CAt3BiHRcvP2rg5pvt0ceOW1m1XpLC1EyHJe8crqb+3paJOoYH3V1+09K6JRpE5/9OBlbuWwLYptL2uALCGSRwPId3zhYC/k6GJH3H0IeUPc8r4QPOX/uN9b5s+gaTOeZwOL26u8wrCxBiH8xNhS/uucDh1Qy'@; put 'zg7PNRPFuLS1dpwuws/LzFUe6eNk5cs+mfD16xtxI0/UTi7bgdjmkjb4AgJZJLByyzdu0EVoYcQFQfRtgfVv1ldt/kcW3YJpixAw91sOavQ2jMVURmRHJCyKpUe6QvrVmVpLbZF00dKOutsJIrdG4lH14Kdeh+tr0ya2WPLqFsTWKiMH4gACaRBYsfWUg/pCu7e65LL9V7Wc85vm1LbOT8MsdLUh'@; put 'gaaOkw9FwrhVIHENpfJWhsU5hbTZRaQki7ZOPkyova/JzFMW+ZtM3OdNr3z2r1YsG4itFasCMQGBJAk0tU26imOximDSvywirPs/8CqlXy/ED9kk0RRl85XPnqmoJb6TCaEfNFRvfq0QIew9rtD7Z4k4zo7k55VH/+Ka8X+8xor5gthasSoQExBIgoC5U5Qv5FhHCds/M5Vz/Z6+mvZZsDdxEiCh'@; put 'qe0ILGmdPJlS0RwJ3COP/rceDFZMrXumy2rJgNharSIQDxBIksDyzXUHh1HwFZm5R5tdzdNgGJYm19ds2pKkKWgOBGxFYOGOU0tFoOsthXn695DWjFCfh42aOK3qGcvNUwCxtdXQgmCBwGACK7ee8hW/2tMROeLOr3budMueiQ3VWz4EXkCgkAmYt8v18uA2JMTXInliwi6sr9zwR6vlDWJrtYpA'@; put 'PEAgSQJNHafMNHhw8Wf7xuK/1Fe1fAdj1H8WLfwAgUIl8PjjF9LdXwzfG9J6fhTJUZZK7pk+4akZVssZxNZqFYF4gECSBO7ectpjhlAv2nsLWVcxQj+cU9v+6yTNQHMgYEsCyztOnsWFtiyyqUeZ47C1PzjxkQEHz1shMRBbK1QBYgACaRBYsHn8PxXm/pJpQjUCPkKkE6+v6XgrDZPQFQjYhsCK'@; put 'LVMqdK61EUyZGbSEXe/Jkuf4a8ev7rFSEiC2VqoGxAIEUiDwsxcu+HuftuvYvWIb7MWYT7ihdkfBHLGWAhLoUkQE7mk77ZAQCrxDCes/fk/V/d2YlB97Q+3zO62EAcTWStWAWIBAkgRWbj2zBAn+mi5Cn49c2WIsf/mG2nZLfdAkmRY0BwIJE1i149RSzZDeVI3AGLOTQMLcmrRudvVmSx0sD2Kb'@; put 'cEmhIRCwHgHzgyagin8IpB9sRhfW/T0COY/+6aTWXdaLFiICApknYB7IcKh3zKu96idfNq0bXA0z6rikvqr5z5n3lrpFENvU2UFPIJB3AsubJ5fJLu/LYcN3eOTKVuLoq7NPeuH9vAcHAQCBHBBoFI1k1AsvPq/qvpMj7hhx1M+oXLsiB+4TdgFimzAqaAgErEdg+d8ml/GA8TLGJCK2veZxa3Nq'@; put 'Ot61XrQQERDIPAEhEL532xmLNR6cE7HukEoemjrhqasz7y11iyC2qbODnkAg7wQaX79QLvd1bzKEWmkGo/NwUCB69g217fu3sMt7kBAAEMgygbu3nHK5ztWH8L69wZ1SecePJzxRk2W3SZkHsU0KFzQGAtYjsHLr6ct1Hp4ViYwjfsec6tbbrBcpRAQEskNgWdspUwwUeDZytKBLGvnOx32dxzRO'@; put 'adGz4zF5qyC2yTODHkDAUgRWbvvG/4Y034OMyE4zMG4Y22fXtlXCDlKWKhMEk0UCTW1TjtWEf6tEnR7TjUzcPk2RD68/4YnuLLpNyjSIbVK4oDEQsB6BRZsnniew+I1MXV4zurDWt4s6vcdfb9FDtK1HECKyO4FFbTWHCB5+XWbuvWfbCtQnCflL11lorS2Ird1HGcRf9ATMDxoZs1aB0RH9V7ZC'@; put '1wjH5zbUtT1X9HAAQFEQ2Lve3Nihi/DRZsI6V0MKcZ4ys3pjh1UAgNhapRIQBxBIkYC5zpDgPU965BFn9n+pF0L8/1Xusj0VlTc04kaeolnoBgRsRWD+5nEvOZjnBDNo85hJh1Ry7nUVz621ShIgtlapBMQBBNIgsLjtpDouAs9EbiX3qXs+cLhGTYBbyWlAha62InDftrN/ETb6rooErVDvvbsm'@; put 'jp9plS+cILa2Gk4QLBCIT2DVjnGu3rCrhWAyIdKCYmXejMp1t8BEKRg1xUBg+ZbJNwkh7orkOsJ5+NP/7X7vfKvMSAaxLYZRCDkWBYFl7bUNGNNlkWRDum+PRx4xaUblhjeKAgAkWdQEVmw95XhV929lROmflW9wfecoTTryyiktISuAAbG1QhUgBiCQAQIrtp5ykISdm8NG7zERcwSR58JcveiG'@; put '2vbeDLgAE0DAsgSWtdZ+TUdqW2T5T7njc592hd76QkP1lqAVggaxtUIVIAYgkCECTR0n34iQsSBijgvDoITdVl/VMi9DLsAMELAkgRVbKw4KqOobDlYywgzQHPsuufSYqROeedsKAYPYWqEKEAMQyBCBJa+c7qaB8FNIoCkRk4bguyim/9tQ3QJLgTLEGcxYj8Dyv51XVmI4X+tRdx5mRicENwgi'@; put 'dfU1m7ZYIVoQWytUAWIAAhkkcPfW044Oqp3bZebZu8AfIeRXO99xOcecMbtiw5sZdAWmgIBlCJhrbcN69z8pkfuPmzTFVsKu6hnVa7dbIUgQWytUAWIAAhkm0NQ26SoD6fdTIskR0wTR17Hg351Z0/L3DLsDc0Ag7wQebp7sCLlL1gb1nkl7xVYIJyuZM7Xi6aa8B4cQArG1QhUgBiCQYQJL2ydN'@; put 'EsJ4lhLmjjatUO+rWJDLplY++WqGXYI5IJB3AvduP3u5qvftP5SjxHHoYwb/12XXjn9Ry3dwILb5rgD4BwIZIrDy2TMVURaqlZjn0t7wroslqrjimQ7rfe8rjpIzGyY2v54h12AGCFiCwAPbzvlm0PA9FRXMe4y4jptRucaX7wBBbPNdAfAPBDJAYOXWyYcFtNBKjMTpEnUMuJqNmNeMUMDJSj/F'@; put 'mP5V13pX1te1WWKWZgbSBxNAoJ/AkrZJV1GCfxHBUeI4pNMX6jy6oXptZ74RgdjmuwLgHwikSWBp+0kTEDIeIpgeF2vK4FqYEcd7Ahl/MAReXaKw9384br0PdpVKEzp0tySBFe0nTQjxwHqZukoiATqR97AfVz/9Yb4DBrHNdwXAPxBIg0BT+6TT/VrnL93yyEOjzZgiq7CSP2s8cG9v6e4djce+'@; put 'oabhBroCAVsQMO/waIa+A2N6UCRgQtjXZlVuyPscBRBbWwwhCBIIDCawuL36CsNQVyjMXRp51ZyBGTb6PpCQ43p/XcfjjRjBqT8weIqGwP+1d+fxdZTl4sDfbWbOknOSphuUTQGvCAoCaZOcpG3SdKOKChcKondB0UopaZO2FMX7MaJQuiVtCkJBFC4XvbYISIHSLUmzF1IuXBblB1xRsC2U7Ged'@; put 'mfd9f59JOSEcWrKd/Tz5w4+fnJnnfZ7vTHkyc2bet7q1MNene593qrnnhIu2sdySpTOeOJBoBGi2iT4CMD4IjEGgpqXkqhDvf2Dou7TW1SzG6GEbs/9kWf7+zjGEhV1AIKUFpES4tn3+PVyGbvy42bo3L52xsyLRhUGzTfQRgPFBYJQCm1tLF3iNzoccyoRTwrsGzb4uhbhuPOvw1D8uXryDjzIk'@; put 'bA4CaSNQ0zrvdon0/wgX5GAT6/wm/XqlZ0dC50iGZps2pxgUkgkCte1l53cHj+x0qZPPHtJoO6XES2+b/eL2TDCAGkHgswQ2tcz+Acbo/vA2kxznvNiv9M++6YId3kTKQbNNpD6MDQKjENjYUTIJBY3thLDBeY91HuinxPat1UWNdaMIBZuCQNoKVLeWLBTS3EkwZVaRE9TT/hpQ0aVLL/xddyKL'@; put 'hmabSH0YGwRGIbClde5ajoxbw7sIaRoCyeW3FLXeO4owsCkIpLXAuuaiPCTNvQq1DcwNzojtQ405L1yS9/iRRBYOzTaR+jA2CIxQoKap+Gwv7212qrkDk6xbPwYPPnZL8cHF8M7sCBFhs4wQ2NAyfwqSvpcoYQP/Vgwe8CrYWVBZnNgZ06DZZsTpB0WmssD27VfTw2f0VnERvA1jPPBvNmh6X2NU'@; put '++YtRa1vp3JtkDsIRFugpr4kR7HbD+rC/0/h2BjjeRWFDfuiPdZo4kGzHY0WbAsCCRCobi7J06WvTqUOlzW8zv19Gsm6rqKo/pkEpANDgkBSC2zruNwR0P0NApnTP05Urqj0NG5JZOLQbBOpD2ODwAgEatsW/tSUgV+EN+0NHu3QnNkLf5L/PLxLOwI/2CSzBKw7QZ2fMx8MmF3/Fq6cEdvm8oLd'@; put 'CX3XFpptZp2HUG2KCVS3LshVCNpviOBXrdSF5Bwj5ZqVRfV/TLFSIF0QiJvAlra5VVwaPwsP6FQm/veS6Y9/O24JnGAgaLaJ1IexQWAYgZqW0q9JLJ4Ob6Zz/1GVsrxKT1vCJ1aHgwcCySqwuXX21QKhwffOnUruCwibJUvydvoTlTM020TJw7ggMAKB2vb5600RWj14O4xqz5m8/8pKT1tCZ8MZ'@; put 'QeqwCQgkTGBTc0kBpaRNyOOTqdmY67BqGl+5IYFL7UGzTdjpAAODwGcLbHh5vhP3BeoIJTPCW0okf7TS07gN7EAABE4ucE/rgnNNLN7k8vhiV7rp7XGoU6xF5N9LlBs020TJw7ggMIzA+vqSU0K485BTzZ1mbWrNf0yw4+JbZ7b8HfBAAAROLrCt4/JJvlDfSwijgaUnDR70qcReXFHU8FKi3KDZ'@; put 'JkoexgWB4ZptY8ElAhn7wyv7EMTeCIng9DXFLf2ABwIgcHKB39aX2PSs3J0+o3NueCsu5A2rixsfTJQbNNtEycO4IDCMwJ0H8hZRQnco1OawNnUpU59j3g+uuL60IQh4IAACJxeoqi9hkx3OmhD3LgtvxbC6qbxw76pEuUGzTZQ8jAsCwwhsbC66khA2+IqPylxPiQl8cfkXdoUADwRA4LMFatvm'@; put '3qiL0FaCCbW21Iht100Fuxclyg2abaLkYVwQGEZgQ4vneoqV34Q3s7MJv3vfqVxfdcGO4099wA8IgMBJBba0ly4yuP4kwUyxNlKo41W/oXjWFD+VkK9hoNnCyQoCSSqwsanwh4Sqg08eO5SJD2L8txuX5B0ykjRlSAsEkkZgQ4unEEnUQImiWkm51FPe7dd7vlqZoNd/oNkmzakBiYDAJwU2tBRf'@; put 'TzEdvLJ1sOz/OurUvg9XtnCmgMDwAtWtc04T0niTYGK3tg6Z3u4skvvlm4v3Hh5+7+hvAc02+qYQEQSiInBX84zrFKz9J/7oO6cJ2unPdIf0qys9O2BCi6gIQ5B0FrirY2624T36mlOdOPD6j24G+h006+LyorqErJQFzTadzzaoLaUFtrSUfNnP+xs1ljXh+F/m/sMuzX3hsvz9sABBSh9ZSD4e'@; put 'AlUSEVfr7IMYozxrPFPoQRvL+mZ5wd498Rg/cgxotolQhzFBYAQCm9vLpgZCPYc0JWvgL3MphUBCXrJyZvPLI9gdNgGBjBaQEuFtHVc85De6/jUMgSX9eUVRXVUiYKDZJkIdxgSBEQhYt8HsBmnkMnTh4OaYXFNZWD84wfoIwsAmIJCRAlazvfeFy9cHzb7Bd2tt1P3I0vydg803njDQbOOpDWOB'@; put 'wCgEqupLbE7FeIIStnBwN4lqK4sOLB9FGNgUBDJWoLqt5Eec61sGn0jWpuz7waU75iUCBJptItRhTBAYocD6Fs8tDCvrwpvbmbuhlwS+dWvevt4RhoDNQCBjBapbS87Vue9FlTpcFoLf7PmbG02bXj5r17F4o0Czjbc4jAcCoxDY2Fpynmn6W1Vm/+ghKW+3xtxXVHrqD4wiDGwKAhkpsK656IsY'@; put '8ecZ0dwWgFs91R8S3muPTc97pgpXiXiiQLONpzaMBQKjFNjWcanj/f7gnixtUlF4V4rV6uWFe1eOMhRsDgIZJ7ChxTPF4MG/2Jhr4I9V60dIbmrUtVbqaGs8r3Ch2Wbc6QcFp5rA1raFJYYM1Ifz9htdRxzKhAWVnsZXUq0WyBcE4imwffvV9G/TDu+hhM2JHNend75rV3M32UPkwZtKG7yxzgua'@; put 'bayFIT4IjFOgtj3f3eXrbnTbT70oHIoR+z1dLlclzCY1TlzYPe0FNljvqxvHttmZ62JGtIHZpIb+BE1fm5O5V3WHxItVMVxRC5pt2p9qUGA6CGxsLrpMIvkEJYpm1WMthq0xx3UrCuufSof6oAYQiKVA1Wvnq1k9ORcFDd99DjXnksixrFvLIdPf5FZyly8r3PcqxkhGOx9ottEWhXggECOBn+77'@; put 'fFuu48yCwatbrL5uULxw5Yw978ZoSAgLAmklsLG+ZBJS+A8Vqq3k0siNLE6j7k5T6A8KBW2uyNt9JJrFQ7ONpibEAoEYCmxoKsjnyNyjUufAk5XWj5S8KUubsHBJ3k5/DIeG0CCQVgLrmoumEYRuJ5hcjzEhny6O/ZUS/Ivy/H0PResqF5ptWp1CUEw6C1gz4qxvzr9bobalQ+tkxP4IDQSXxuMh'@; put 'j3T2hdoyS8CaOzm7teTCPv2Du13a5MGn/T/+Q1YIU5gvOdmEpcsKnz04Xh1otuMVhP1BII4C1m2wfnT02Wxt6vShw1Kk3a87UeXqi/b44pgODAUCKS9gzdRmU3zfIJLeyah2TmRBBg/5bcz9uOTGL1cU178x1oKh2Y5VDvYDgQQJ1LSVfM7kxnZK2CcaLkH0SYlFRUVhwzsJSg2GBYGUFVjXXOSS'@; put 'wriZy9AKu5IzObKQgNn3YZaaW2swfu+qvIYPR1soNNvRisH2IJAEAlbD7Qkc3pttO/Xcoen49Z43s5SJN/ToorWqtMFMglQhBRBIKYFNB6afYRL6M4LxdylRB57+/+QPeYthdocpvX+o9LSNeG1paLYpdRpAsiDwscDa+kvO1dSsnQjj84a6CGmaWNIHMWG/qPTU/QPMQAAERi+wtiV/PpXs5wTj'@; put '6QRTOjSCtdylS52836d3bzntH5OeW7x4Bx9uBGi2wwnB5yCQxAIbWuZPMXnXkxpzFkam6Te6j7qVU+9Apv8P5bOa4j7xehKzQWogMCKBqvoSZleCi4Qw1mos6/zInaQU3MbcT5jE+Pny6Xte/ayg0GxHRA4bgUDyClS3FtrtbOr2gNn99cgshRQ8aPZ8MMl+9n2G7v/1zcV7DydvJZAZCCSngPVv'@; put 'THB6FSZkLcb4tMgsTTHwENVjCOm3lRc0vHeiKqDZJuexhaxAYMQC9zy/cLrk+DFd+s882U7WbS8hRSu2KVeM5eGOEScDdT3IRAAAH41JREFUG4JAGgtsODDr8338H7/KUibNVKjN+ek/btEbDjVnWdAIvljp2d019HNotml8YkBp6S1wV8fcbLuJ1wSMnqUqdWSfqFrd9PYw6viQIuUPQjG3rZzR'@; put 'CLNNpfdpAdXFWMB6PzeraeZ5Pt55f5Y6sfCEk2JI/GebMuHGpTOeGFwKE5ptjA8MhAeBWAhsbJx5viTiXkrYrE//dc1NjNBfpJS/IUTbDg9JxeIIQEwQQGh9c8E1GNF1BJMzIpuuQpzPkID/2vBkM9Bs4YwBgRQTqG4uylOY+2FD+D/xwIaUUtqYqz1g9PyGI/SHNcUt/SlWGqQLAiknUNt+mZsS'@; put 'tj9k9uUNJi9Rv8q065bl73k6/Dtotil3aCHhTBaoaZtZ5A31bHequdOGOoRM7+s26r6lN+f9vVUXvK5nshHUDgLxFNjaOvcrXrP3gMYcgwvUa9T902MzLl1bhasENNt4Hg0YCwSiILC+saAoJHyfarSmNJ5UOF1aMaspqquURCFlCAECaS9wR8NX/mRXc78RLlRI8Q7Scqavytv5iVmm4Mo27U8F'@; put 'KDAdBNa3eM4JGN11LnXK4BPHOvf3M2Jf79J81UvyDsGqP+lwoKGGlBLY1FxSYEr/XoXas6zEheScYmVphaf+/shCoNmm1KGFZDNRwHrqWPq6ntMU1+Batjr396nYXllZ3PhgJppAzSCQaIGBd28FOUCGzFGuEeeuY/kzvj709jHcRk70kYLxQWAEAtayelsOzl0nhLE6vLk1a40p+G1rZrauG0EI'@; put '2AQEQCAGAhubi9YSwm79uJkSH8ZK2YrCPSdcjg+ubGNwECAkCERLYENbSQk3fX9SqWNwwXiM6dYVBXXLo7WodbRyhTggkCkCtY2XTSYqPqgL3+c/brZ0e4Wn7pqTGUCzzZSzA+pMOYGB21SS7SSYlIWT7wu9/5aTuOevnv38X1OuIEgYBNJE4O62RZUh4d2IMR7oodw0OylBsyuLW16DZpsmBxnK'@; put 'yByBmrbZl5nceIISZWCZL4MHfQqyfbty5oGdmaMAlYJAcglsap5dasrAU+GHoqzsFOpYc3P+rvWflSlc2SbXcYRsQGBAoOq1q9Wcvu4/CmkMLi7Ahfm42xa8dkneIQOYQAAE4i9g3W1ixPV7U4S+GR7detVH5Vkzymft+syVtaDZxv94wYggMKzAxpZZs0wReFqlDpe1sTU7FMaytNLTNDjX6rBB'@; put 'YAMQAIGoCmxunXO1LgIPM6LarcBCcpNhbdkKz/5tww0EzXY4IfgcBBIgsPX5y/7DMP23h4fm0njTp6sXVpU2BBOQDgwJAhkvsP75klMUk+yRiH8ljKFSx06nP7D4+hH8u4Rmm/GnEAAkm8C2jssdAd1/QCBzYK5V61UfhPAvVxY1ViVbrpAPCGSKQHVraTVCoiJcL5bYiwiZXVFY9+JIDKDZjkQJ'@; put 'tgGBOApsbi79IsfmQYzJwLJ5pggFKFGLVnoa/yeOacBQIAACHwnc3TLnLMqymgO89/QwCsHq4z1B45qq0gZzJFDQbEeiBNuAQBwFNrXOuklKuYVgQq1hQ6b3HY2p51d62gJxTAOGAgEQ+EhgS9v8X3EZujEMIkyzkzBaWulpfGWkSNBsRyoF24FAnATu71h8p1d//8fh4bgwn1hd3HJlnIaHYUAA'@; put 'BIYI1LbOvTjAvc0K1RzWr62vdVSadevNBbs2jgYKmu1otGBbEIixgDU9Y237vBe41C+1hjJ40M+w4+qVxfXPxnhoCA8CIBAhYL2CN8nbv13ngcFXfUxpvCk0x/Rb8/b1jgYMmu1otGBbEIixwK+avjYBqeTlIO87wxrq+IIDquezZqaJcUoQHgQyVmBzW9k1XOiP4o++0uHC0BViLx/Jqz6RaNBs'@; put 'M/Y0gsKTUWBbx9zsgC4PCWSe81Gz7VeofTY8HJWMRwtySmeBmvqSHKShRonk4Ks+jNie7HK5r6m6YIc+2tqh2Y5WDLYHgRgKWLeRH37pXx7vCvz9W9YwQgouhbxt9cxmWOEnhu4QGgQiBWrb5pebMrQl/HshzE5G1a+tKKw/4ao+wwlCsx1OCD4HgTgKWM3214eueaBfP/r98LAY0Y0VnrrBJfbi'@; put 'mA4MBQIZKVDTNvdLCtGe07n3zEEAiR7p0/H3RvqqD9xGzshTB4pOJYHa9vnrTREabK42ln3P0hlPLUulGiBXEEhVgSpZRZwtu5+kRL08XINpBo8qijanorDxz2OtC65sxyoH+4FAjAS2tJf9kAtzcK5Vm+Les3T6zgUxGg7CggAIDBGobp0zQ+f9e4euIa1grfLmwj0144GCZjsePdgXBGIgsKW1'@; put 'tCwkAjsZ0QYmO7dR9+tL83deEIOhICQIgECEwNa2+Y8bMnTF4FWtNN600ey88oJdfePBgmY7Hj3YFwRiIFDTVHx2SAYOqSwrxwqvm/6eLM197rL8/Z0xGA5CggAIfCRgveqjc/9DjKg261fWqj5EkhsqixsfHi8SNNvxCsL+IBBlgbs65maTQH87o7bzrNBcGCGGldKKogNtUR4KwoEACHwksK65'@; put 'yKUS1iwRujCMohHXrpsKnl4UDSRottFQhBggEGWBjS0znyCYDLz+M/CD6S/7Cmb9rApXiSgPBeFAAAQQQrXtC1bq3L8uPCc5kqifYm3hcs+e1mgAQbONhiLEAIEoC2xuLVnCpbgXYzzwb5QRewfqwsXli3aFojwUhAOBjBeobl1wbsD8oM3O3JMG/75FdHuFp+6aaOFAs42WJMQBgSgKbG4u+qKP'@; put '+5rsSvZkK6w1uYWKtenlnn2wzF4UnSEUCFTVl7AJGruHI+OHYQ2Th95XmFo6nld9ImWh2cK5BgJJKLB9+9X06Jm995si9L1weobQnwkY2lVVpQ3BJEwZUgKBlBTY3DY/3+D9DfSjh6KsIihWypcX7tsazYKg2UZTE2KBQBQFNjYXfUci+SAlimaFtRaRV6ijuKKw7sUoDgOhQCBjBapeO19VP9Se'@; put 'tinueYN/1HL9DYUiT6WnrSuaMNBso6kJsUAgigK17fluIbJ2CWR6Pr66De3KsRlXLck75I/iUBAKBDJSoKZlzhxd+HYq1DawVq2QpoER+eHKoqaHog0CzTbaohAPBKIosKHF8wOC6H0YE/Lx1W3WdysK9z0exWEgFAhknMDdB8smhri+GyMysHa09aPRrGcdft8/Xx+Dr2qg2WbcKQYFp5JAdWuh'@; put 'XQj2FCFkbjjvgNF7jFHnojXFLR2pVAvkCgLJJLC1fd5yQ4RqEDr+xL+C7ZILlL+i6LkXYpEnNNtYqEJMEIiiwKam4osCon+PQ8mZMhgWo3aT4itumdFwNIpDQSgQyAiBmsaZp/plb4ddmTAtXDAj9j91BYLWA4hmLBCg2cZCFWKCQJQF1rd45mOJngo/LGWF183AQQ2r11XMbP6/KA8H4UAgrQXu'@; put 'aV94a4D7fhmewIJz4xgj6vyKooaXYlU4NNtYyUJcEIiywNrGSx7RmOu7Q8MSRNtMJL63ytPwlygPB+FAIC0FNreV5vv0nqftyvEJLKz5jxmx3bKicN+4VvUZDgua7XBC8DkIJImA9XSyN6Q/NvQ1BSs1r975bo596ne6Zsxsgekck+RgQRpJKVD77GWa33Vsl0qdpeEEdTPwukPFheUFB8e1qs9w'@; put 'BUOzHU4IPgeBJBKwGm7IINspVT+xvq3Bgz5GbNswtt1R6dkd1fcDk6h8SAUExiVQ3Vw2ExGzMRxESiEQxj9Y6Wn8zbgCj2BnaLYjQIJNQCCZBO6pL8nqpj2/cbDsq4fmJaWUAaP3Lac2cXlFYd2uZMoZcgGBRAtUty7IFdy3i1A6I5wLI9qTGtO+syRvZ8zfW4dmm+gzAMYHgTEIWDPfKB/afkAw'@; put 'uUNjzuyhIbgwdEbtBzAS/7GisP7gGMLDLiCQdgKbmmduwISsChcmhNmpMvvXywv2tcejWGi28VCGMUAgRgJ3tl56ntd37NFcx5kXEkzZ0GGsW8uUqI+rSPl5eVHd2zFKAcKCQNILbG6aeyZTWL0uAmcPJivRI306/l6sXvWJRIFmm/SnCSQIAsMLrG2avlDnvm0udfKZkVvrpreHYHU7o+4fw/e5'@; put 'w1vCFuklYC3q0XmWfmuA9/wyXJlhBo+oilYWzVV9hlODZjucEHwOAikisKHFM8VndG91sOxvMKLZItMO6L3/59BylvS6P2isuuB1PUXKgjRBYFwCNW2zLwuZvt+r9PjXLdazDYxoq5YX7q0eV+BR7gzNdpRgsDkIJLvAhgOzPi9o6CGF2GZF5mr9h8arH3s5S8m9cWVxS1y+q0p2L8gvvQXuPrjo'@; put 'KZ37Lg9XyYXxFiXywkpPWyCelUOzjac2jAUCcRIYWDqsy75MCHPNJ6Z5/Gh8U+hBjNAfNKb9tLyg4b04pQXDgEBcBWray64yTP8j7KO1arkwDULoj+Lxqk9kodBs43roYTAQiK9AdWthLhdoFZfGTSp1uiNHD5p9XRgpv2M05xeri/Z8EN/sYDQQiJ1AbePMyZyxOonEl8OjDMx/7HItrrpgR9y/'@; put 'RoFmG7tjDZFBIGkE1rUVfMmGs1eHzN5rGdHskYm5tFP+0qcfrRUO7T9XX7THlzSJQyIgMAYBKRHe3Dpzo0B4BcZ4YHlKJGQfxsrCiqL9bWMIOe5doNmOmxACgEDqCGxsKiomlNVKKS4Kr5E7NHtKtH0cyx+f/rec/1m8eAdPncogUxD4WKC2Zc45CnM0BHj/6eHfEkR+t8JT/51EOUGzTZQ8jAsC'@; put 'CRKw1sjlgnzfpU29zW90nhKZBkYkoFLnw6bsq15e0PhmgtKEYUFgzAK17fPvM0VoSTiAyUPvY0WZv7qg6X/HHHScO0KzHScg7A4CqSpwV8fcbKYbtxGEVp+wBon8hCq/IF1KTfmiXaFUrRPyziyB2ta5F/vNnjqVOXMGr2qxUhnrVX2GU4ZmO5wQfA4CaSxgfbe1sdVzAcOOm00R+HdKmBpZrlOd'@; put '8qpf/3CrRMFH4v26RBrTQ2kxEPhtfYmtz679FxfBfw6H58J8267Y8pfl7++MwZAjDgnNdsRUsCEIpLfAxpZZsxCSGwgmgxO1hyu21vxUaVajQObPVhTsa05vCaguVQW2tJddGzL9vw2/6mPVQST94YqiugcSXRM020QfARgfBJJIwHo/19U7ZT7FZK2QfPCViaFNF0uyExP0s4rCxlcxRjKJ0odU'@; put 'MlhgY0fJJBISexHGXw0zKMT+lCF6r02GOzLQbDP45ITSQeBkAlbTdfa4fyyEXK1QmzNyOylFn8ocWzEyaxJ9ew6OIghYAjVtc2+U0vhVWIMiJUQoLr45f29HMghBs02GowA5gECSCmxuL5saNPu3qcT+zROlaHLjQ4bpzyuLm+5O0hIgrQwQqHmh7GzG2W5DBM8dbLZY++Op72ZfkyyvsEGzzYAT'@; put 'EUoEgfEIWKumvDPt7wv8oa7Nbvu0L5zgKpcr1NHKublmhWd/O9xaHo827DtagSpZRRzNu/7IqO1b4X2tVX0UwuZVFre8Ntp4sdoemm2sZCEuCKSZQFXHpQ5H0HZ50OzelKVOPi2yPFOE/Bipj1HCflLpqftHmpUP5SSpwOaWsukh4W1QqM1hpWjNf6xgddWKovraZEoZmm0yHQ3IBQRSQKCmviRH'@; put 'Z97lXPJyG3PnRqasm4EjCrNVG6r6wK15+3pToCRIMUUFql67Wp3U3/+oLgJXhUsImt7/zeauoptKG7zJVBY022Q6GpALCKSQQHVr4WlevX+rnbkXUaJokan79e43XbapK7pdOfsSMfF7ClFCqmMUqGkrvVJK8cfw7tYrakjKG1YVtzw8xpAx2w2abcxoITAIZIbAXQcKPZSSaoLp9MFJ34eUzoi9'@; put 'wRT6morCuhfg+9zMOCfiUWV164JcJAP7h77qw7D6uCm9302GV30iDaDZxuOsgDFAIM0FqupLmFPVvxYw+u7OUicOTv4eLptL01CIfadEbGVF4XPvpDkHlBcHgdrWuStMZNQMXtUK3s2wtmBF0f4X4jD8qIeAZjtqMtgBBEDgZAK17fnugIErJRKVKrW7Irfj3PjQruTcpwteU+nZ3QWSIDAWgS3t'@; put '877QFzxS5xzyh521qs+09yb9a7K86gNXtmM5srAPCIDAqAQ2HZh1hk92VmvUeZlC7Z+aFCNg9r3t0iYuDxiBxjXFLf2jCg4bZ7zA5tay+wQyh67qcxQryoJEruoz3EGBK9vhhOBzEACBMQusb/GcY4rQvRpxlJ1o/VxfqPNVhzK1/IzDuY3JekUy5uJhx5gIVLfOmaHzvj0qdWZbA0gpBCO21csL'@; put '91bHZMAoBYVmGyVICAMCIHBygXWNhd8ypO9eO8uZijH+xH93TBEKEET/QAX5Se/MsvercJUASxA4kYC1StXaxot32xT3vPDnhjD+n2qo+RWlDT3JrAbNNpmPDuQGAmkksK65yCWlvhwhdItKHZ/6PtdqugiRR20se2V5wa6+NCodSomSQO3BsplBw7+bEdVuheTCCGGEv7+quOXRKA0RszDQbGNG'@; put 'C4FBAAROJHBX8/QLODfW2Zh7UeRVrpRSOtXJL+umd3VXMNRQVdpggiIIWAK17Ze5De6rxxhfEhZhxPbkKX93X5UKX0FAs4XzGARAIO4C1u3ADS1FxQih9YywgsgErCsWhdrrJZK3VRTWvRj3BGHApBOoaS27SUi9Nvzdv+SylxJlXrK+6hMJCM026U4pSAgEMkfAmm/ZFqT/kqVMWq1z3zmRlQvB'@; put 'ezTmepibwXtXFNe/kTkyUOlQAWv1qb7g0eez1Elnhn9PMP3vFYV1304VKWi2qXKkIE8QSGOBDS/Pd6L+wBohQxUKtWdFlmpy/RgjyjpGnQ/A97lpfCKcoDTrLkjtwbkruTA2hD82TP9hhdkXVnoaX0kVDWi2qXKkIE8QyACBtU3Tz7Yz90qDB26gRFEjS87WTvlLd+hozcrCAw/A1I8ZcEIMLAo/'@; put '5xK/0b3bztyTwhUzzJaXF+5PqlV9hjsa0GyHE4LPQQAE4ipQJRFxNhdMx4TVEkxnRA4upeCU2Oq4aa5eObP+5bgmB4PFVaCqvsRmo96nVeYsCw8sBP8rsrEZq/IaPoxrMuMcDJrtOAFhdxAAgdgIDKyfG2DftSu5qw3hPzdyFOv7XIU4fi2wfk9FYQPMtxybw5DQqFta55UFeO8Tn5j6E9MbKwvr'@; put '7ktoYmMYHJrtGNBgFxAAgfgJHF8/138Tl0blidbPtb7PtTFnLTJC28pnNR2LX2YwUiwF7j5YNtFvBJ5mRBl8Wl2lzp1Ov3/x9aUNwViOHYvY0GxjoQoxQQAEoi5Q0zjz1BAO3E2wsogR1RY5QEDvPqxR11a7qdydbAuHRx0jAwJWt5QuFUjfTDBTrHIxwj6KtDnlnt3Pp2L50GxT8ahBziCQwQJ3'@; put 'NE4vCxgfbM6xnfklggmNpFCw41UuzdtJD3uqfNGuUAZTpWzp1lUtF6iJS/NL4SIYsf+pK7/gylSdzhOabcqejpA4CGSugPUQla0p/3JTBu5zKBNOiZSQUgpT6B2a4vzBioL9/5u5UqlXufWqz9bnF67STe+dBFM2UIGUfZTSOcsL6g+lXkXHM4Zmm6pHDvIGARBAd3Vcmh3o7d+sKa5v2ljWhEgS'@; put 'U4T8EuGn7dj+k/KiureBLPkFNjXPLjVlcKdCbQNLM3JhGip13Jrsq/oMJwvNdjgh+BwEQCDpBTa350/1Br13KTRrsUJtjsiEDR706dz/ikPN+WmW6m9bknfIn/RFZWCCtc9epuEJ/PeGDF0RLt9a1UchrsJKz+6uVCaBZpvKRw9yBwEQ+ITAna2XnodNtAYhfIXGjq93OvTHWuhAIvEGRuheVdof'@; put '6zSMD2Cxg+Q5iba2LSwJ8J5nGNEG/mDiwtQp1Zan4qs+karQbJPnPINMQAAEoiSwscVzltforrZT98ITXelaw1hXuypxPE0xXecKmX9OxddJosSVFGFqOhacinT9OYnEheGENJr1rN9mLF590R5fUiQ5jiSg2Y4DD3YFARBIbgFr+kck5BpMyHXqCeZcDmdPEH1bYvSIoOw3ldP3vAdTQcb/uFa3'@; put 'lW5BUpSHR7ZW9dG0rG8sm/FsY/yzif6I0GyjbwoRQQAEkkjAerp17fMzclFQ/6lE6Lt2JXtwjt3INK2l/UwResfO3A8yibf7ZKhrTXFLfxKV85mpbOu4VEFogsPgklGT0n5FJ0qQY8NGpSqoNBnnPOgOrSl+Kqlqqmlb+DkbVVsCZu+0cIGMKDtQl/Iv6fL6FjTbVPlXBHmCAAiMW6Cm/qs5QUYW'@; put 'S4GWKcx+Hv1owoQTBbZuMzOiee1swh6d+/YRotQhhPoSueqQtToS9WGNEFNBBtaoSs5lRPsCRuSrNuY+3eDGNJ17J+tmX5YuQkQiMfjfeOvr6ix1IpcSfTjBfvobhgh1h8y+twSnj9k4f+/7CWzAW9rm3cul/qPwcRCCd2GpzEmnua+h2Y77ny8EAAEQSDUB6wqwL+T6Ijd9twtszj7RNJCRNenc'@; put '3ysl8mVrU17RpdGgUdtugxvHOBPcFpKcaNkhtd8Zur70oVFPJfjb+n+3CaVLkURTuNqnmcLGpGEQQlm2RMY/SYRnEMIulFKc1hN8b6r1/inGmFKsapQo2nj8rT8qnGruMYU46rjQd0rM2xl5v3NJ3iFjPHFHum/twdKL/KH+BpU5c6x9pBRCpVlrluXv2pROt/Oh2Y70jIDtQAAE0lLAem0oYPCv'@; put 'ZSmTvu03ugsUavvUeronK1zngT400Bwcerbt9KMqdbzNkfG+Yfr/RiR52RB6jySoH3MhqEKkkIIhRBWExCSKqWYI/iWHkjNBIvk5hm2nBY3eM3pC/3CZIjgwmQNGhI4mn2gcoJDp7861n9FkysCvHb7A3lg+OFZVX8Im2tTtQ1/14cJ8i9vsebfm7euNRj3JEgOabbIcCcgDBEAg4QLr22d9AZv8'@; put 'KkbUqwwRPJ9gqhBMPzUlZMITPUkC1lWhRFJYyxBKJCUa+P9yYGuMMbb+9/gUl4RghMnx3534R0huutUp9Qb3387YsYOxuNKtaS+7yjSDj1LCBtYutr4zZ0hdVlHc8OtkNR5rXtBsxyoH+4EACKStgDUdJGooUR1KYI6N5SySUi7SuXfaeG/ZRgvMakoKcXQRjI5QqrXrPHCYmwGvIQIfcsTfZcT9'@; put 'jkqFty+k9Q0dU3X4s4lunG5yfiYjyufsWm5xQO8rUqnttJPlZjVujblekdy4Mytk7IzWla61Vu0EGz3EpXl+eGyNZj2zdMYzl6fT7eNwbdBso3X2QxwQAIG0FahuLbRjk+UEcahAY7ZLNOK+pD/0/vkCmW6F2LMoUQauzKL1Y32Pago9YGMuL6XqEYbYC0He9xZC6GVpsne5U+2agLqNI/azzaoL'@; put 'duhjHdd6UrumrdCGOT3VIPhrutFf7lCzP7V2sBXfutKVUh60kewbb/Y8+8pYxwzvt6Vt3o9MEfrV4NW1RP0atS+6qeC55vHGTsb9odkm41GBnEAABJJeYFvHpY5OTu1KCJ/GEf+8JORUjdpzGVJPVZnrLILIWbrpzzFkUDOFQax7uAgjoRG7oSouv5DysJDme7rpPyIx7xZcD5hC9yLMj1JC/mow'@; put 'ckTpyQn6VD0Ur1muqjouddh86ldVpvxbkPdfdaIHx3Qe6Lez7EelKdeumLnv72M5UJuen3+GItB+U4S+EN7fetWnK2BeF69ax5L3ePaBZjsePdgXBEAABE4isH371fRvX+y1aQFKeSBANGbikMmkrhhcIdPMSs+OQDLjbW4qOjMgA9WUqJeFp08cmm/Q9Ha5tMm/lBI/OJrXoSyXI2f0buUydGM4'@; put 'nmEGj6jUvqiiqOGlZDYZT27QbMejB/uCAAiAQJoLbGjxfJkRezUXoTknelgMY/Yywfhn3QHzmZFclVqv+vhC/QeGzl3NkFJR7tm3OZ0podmm89GF2kAABEAgSgJ3NU9fnKNN+7HP6L4Io08/xexUpjweNHo3Lffsaf2sIbe0z3+Mi9A/h7cRUrzjEO5Lls58pjtKqSZlGGi2SXlYICkQAAEQSD6B'@; put 'qtfOV909U2/gUv8FJSw3MsOBp6Spcxsj4vZl+fs7Iz+vaSm7ypC+h4felsaILKnw1N+ffNVGNyNottH1hGggAAIgkPYCNU3FZ+vIvINgcuWJnsRmxPYGFuh2A/U9UelpG/hu+q6OudlKSK/HGF8cBlKw9kSnO/va8TxRnSrY0GxT5UhBniAAAiCQZALVzUV5PaEPfuXSJl8U2XSPvyok2jWSXY4I'@; put 'elsI/dumDN1tTTU5UIZEfUgST2Vx/WtJVlZM0oFmGxNWCAoCIAACmSOwvrloZsjsfcCpTvxiZNVCCm5Xcv6uYtXdb3w4Mfw5Repjyz17r84UJWi2mXKkoU4QAAEQiKGA9X2u2mnfyIhyAyOa/bOGEoJ3U0qKKgob/xzDlJIqNDTbpDockAwIgAAIpK6ANSPVXe0FZxFTriWYXnGy6S0Voq64uWDv'@; put 'ltStdPSZQ7MdvRnsAQIgAAIg8BkC1sQV7007fJ7A5E6CyTeGbqrz4OvI7vKk26o+w50Q0GyHE4LPQQAEQAAExiRgLaGXpfAbhDRvZ1SdTJGiE8wW3Fz4XMOYAqbwTtBsU/jgQeogAAIgkAoCtY0zJyNVu19KkhXktivXFD/Vnwp5RzNHaLbR1IRYIAACIAACIHACAWi2cFqAAAiAAAiAQIwFoNnG'@; put 'GBjCgwAIgAAIgAA0WzgHQAAEQAAEQCDGAtBsYwwM4UEABEAABEAAmi2cAyAAAiAAAiAQYwFotjEGhvAgAAIgAAIg8P8BcbF+IvaVe9EAAAAASUVORK5CYII='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; %let filename=select-table.png; filename filecode temp lrecl=47784; data _null_; file filecode; put 'iVBORw0KGgoAAAANSUhEUgAAAdsAAAGTCAYAAABgcbg1AAAAAXNSR0IArs4c6QAAIABJREFUeF7sXQecVNXVv+WVmdm+gKBgRY3GLxqlLNsQY4nGoFGDGhOjsVNEqiXFoKJIEdTYiCWxRlEESyAWBNkCKGpMYo0FQRTp26a89+69X+7Mzu7b2ZmdXnb2zC+R3Zl7zzn3f+7b/9xyzsEIXoAAIAAI'@; put 'AAKAACCQVgRwWqWDcEAAEAAEAAFAABBA3ch2ycYrSpqdjKrEgYvaAbK4JuSPJvP6/3Ux3f9vKl4mc3eTZZTELr+ItfVoSwstiOsLhdbk67G9Sl1xyQvg1n2ModjZ5bppwAaVOvz/KsToprMnn4Tqi4ZnpDEnMtZY50QsmMQqK1y74Jij+dPeN3S8oX4I+iKIfbBvLM9FT+ON5p9oczwWnOJ9Duwy'@; put '48EwFltiwTw4/+1z30van4e2wPPgpSZWiO7/mfk8hGjU+8uj798Trw3QHhDIBAIdf8SXNI5zGq7yvzrVku8TTDVKVAUjQjHCGOMAKQuBhP+39pdAnWSNEepGekKIsEQopKT2V6BfZ7PgL+3v2PrHy++ddgYNxn57O3nLbn9ksANy4mVY+xgjjdWPKeq0E0mspS4/3lii0q7b3kb2acdPCG63O4Bd'@; put 'AKcgrl3ADTPILoC09+wJFzkf4p2Ydrvi7Rtve2ybWz341P9R13FiTNpxD37WPu3lgNvHTBBCAcjlmKQfgvPePtcDHgg/90Nt6vrciK4PQ+dzFvwp3ocgMJs6n7Uu6mP1ZWzPSUB06PPck/+6zv1g/y7zyz9e+R/p1/Z574deyDe4fI+zgF6iMeH9zBJt55x71H2t8c4baA8IpBuBjgfxkbfO39+H'@; put 'PJ95rL1aupWCfEAAEAAEUo1AodYfKaR4n0uO+8uOVMsGeYBAsgh0kO3ijecNFcL7kdvcqyYrFPoDAoAAIJBpBCTZEoP0u6zq2d2Z1g36AIFoCHSQ7QPvnXMYstiHbnOPEq0TfA4IAAKAQK4hIMnW8njLJ9T+Hc5tc805YE/nUeRD74w71OLmR0C2MCsAAUCgNyIgybaNsrKpxy7f2xvtB5vzG4GQ'@; put 'bWTfx0C2+e1wGB0gkK8IANnmq2fzY1ydF6TePvsQA/FPgGzzw7EwCkCgryEAZNvXPN67xttBtg9uGHcwI+anPZEt46ZPIG4PN+kI7rFf2O8MeuiIVEggZKF3AZmgte34+4Mwgj93hPtQouo9yWXcMgViZrsT8hTj2EJoAlEncUUl2RoHfmyfw1KOdAcmWNHsoW7hfGFxn0eIQPhJ11e4EKmYxxJO'@; put 'VbzjS3BKZr2b/ZnwuyXwH0ykXyhRI0ZLANlm3XdgQA8IdPzBuf+9nx2ELfTfnshWI/opFmL/kvKIYfBW3ddBvJrbhYVmyEBEpFIW01+9tiRcozGas+RixmhbECf5r0GcWPXKfzlWiY5VpBSVuoY8tcP9+bHhYBIyxhbT3zBFvGp5GZN4mIrV5Y++Thn29uALzd3pJ8OWrCNW/4WzK9axJ+H6HrtG'@; put 'sz34ueHhGKGCgKz2f4KChWEShVFKNO2nnBv3RiJcl1q6wmDGTB9r2okNjRPdx32MCoelCK9idTwD0g9B2T35I3Rgdv/YP7P7Kls4pkJvpLlify6kHtlOqBpRGR4qBK+PpFuSbekXRDn33GfDfPlJhcUgAxBIHAHbme24A4QwP+95G7loyLSql7cmrg56xorAkg/GaYgPeuXrln+NCU+2nCMujpxe'@; put 'W/9prDKhXXwILGo4sZIh31qCadgb+i6t/MGrhi+7Ij6p0DpRBO7ZcGI/g1k7gWwTRRD6ZROBDrK9960z96cYf9ET2apcG3x1zWvfZNPgvqJ78cYr1BKHvvKb5n+dGIlsGWKHX1vd+HlfwSTT47yjfswoga16gikNp7tA7f/IlSOWXpppu/qqPiDbvur5/Bh3XGSLEB0yreoNWNlmwPexkC3G1vem'@; put 'Va37LAPm9EkVd647ocLiZkMksi3UBz1+xbBnft0nwcnCoBc2/rgcIe8uWNlmAXxQmTQCnRek1p89hFH+Zc/byEC2SSMeo4BYyJZwcdjU2vovYhQJzeJEAMg2TsDS3BzINs0Ag/i0ItB5Qapx3GCsmpuAbNOKd8zCJdkWadqKba3/PinSNjK38KEzj1/7ZcxCoWFcCATI1mogmITdRi5S933i8hFP'@; put 'XxiXUGicMAJAtglDBx1zAIEOsn343TP2Mxn5Csg2B7yCEAKyzb4fgGyz7wO7BUC2ueUPsCY+BGy3kc/eVwi+Gcg2PgDT1RrINl3Ixi43Ktlqg568fPgzv4pdIrRMBgEg22TQg77ZRiAusoXbyJlzF5Bt5rCOpCkq2cI2ckadBGSbUbhBWYoRsN1GHjeIYnMLhP6kGOEExQHZJghcCrtFuyAFZ7Yp'@; put 'BDsGUUC2MYAETXIWASDbHHVNLGRrEHPoDZXrN+XoEHq9WQsba0dyIRoh9Cc3XAlkmxt+ACsSQwDINjHc0t7LH/qj6Su/aY2c1ALINr1uWNBw/AiE2Dog2/TiHKt0INtYkYJ2uYiALc72jIGMkq9hGzk33BRLnC2QbXp9BWSbXnzjlQ5kGy9i0D6XEOiMs33/rH2wIbYC2eaGe4Bss++HhfVjhnNs'@; put 'rY+0si3SBj52+fAlF2Xf0r5hAZBt3/Bzvo4SyDZHPQtkm33HANlm3wd2C4Bsc8sfYE18CADZxodXxloD2WYM6oiKgGyz7wMg29zyAViTOAJAtoljl9aeQLZphTcm4QvqaoYhguQ2ctgSe7CNHBOMKWsEK9uUQQmCsoAAkG0WQI9FJZBtLCiltw2QbXrxjVc6kG28iEH7XEKgg2wfeXfcAIOZ30C6'@; put 'xtxwD5Bt9v0QC9ludYrLZx31rJF9a/PfAiDb/PdxPo8QyDZHvRsL2ULVn/Q6LxrZFmoDH/sGyDa9TrBJB7LNGNSgKA0IANmmAdRUiASyTQWKycmIRrbyzBZWtslhHE9vINt40IK2uYYAkG2ueaTdHiDb7Dtm0bra4xgXGyJdkIKVbWZ9BGSbWbxBW2oRALJNLZ4pkxZI16it+AaKx6cM03gFAdnG'@; put 'i1h62wPZphdfkJ5eBGwl9sb2F4J+Cxek0gt4rNJjKUQAZ7axoplYu2hkW6QNeHSrE18BF6QSwzfeXkC28SIG7XMJgVCylbeR1cgG0iHTqt7YmksDyFdbgGyz71kg2+z7wG4BkG1u+QOsiQ8BINv48MpYa0m2xZr6929b/3NyOKVCcA4r2/S6A8g2vfjGK/2+upoyL6W7I/Ur1Pqj0i+Icu65z7J4'@; put 'ZUN7QCDdCADZphvhBOXHQraEi8Om1tZ/kaAK6BYFASDb3JoisLLNLX+ANfEhAGQbH14Zaw1kmzGoIyqKRrZwGzmzPgKyzSzeoC21CADZphbPlEmTZFuoKS9/1/rBKZG2kWFlmzK4wwoCsk0vvvFKB7KNFzFon0sIANnmkjdstgDZZt8x0cgWbiNn1keSbE3WtEWluiucZjizzaw/QFt8CADZxodX'@; put 'xlr7byPr9KVtLR/+GFa2GYO9i6JoZAvbyJn1y8LGynKT8S0qdQDZZhZ60JYCBIBsUwBiOkT4yValL21rA7JNB76xyIyWrhHINhYUU9emnWw3q9RRACvb1OEKkjKDAJBtZnCOW4sk2wKVvri97cNTYWUbN3wp6RCNbGEbOSUwxyxkTl1NGUGmXNkC2caMGjTMFQSAbHPFEyF2+M9sVfLCd20fnQZk'@; put 'mx0nAdlmB/dIWmFlm1v+AGviQyA0N/JWyCAVH4Dpag1kmy5kY5cLZBs7VploCSvbTKAMOtKFAJBtupBNUm6AbPHy79o+/kmklS1kkEoS5CjdgWzTi2+80oFs40UM2ucSAkC2ueQNmy2zVo9RhpZ/74UdQLZZ8xCQbdagD6sYtpFzyx9gTXwIANnGh1fGWkuyPbTf4cu3t35yOqxsMwZ7F0VAttnB'@; put 'PZJWINvc8gdYEx8CQLbx4ZWx1n6yLTts2Xb3pz8Fss0Y7EC22YE6Jq2wjRwTTNAoRxGA4vE56hgg2+w7Bla22feB3QJY2eaWP8Ca+BDoINv73z9rH2wIeRtZiSwC6tnGB2/irSXZHlJ22LKdsLJNHMQkewLZJglgirsD2aYYUBCXUQSAbDMKd+zK/Bekyg5/fof7k7GwjRw7bqlsCWSbSjSTlwVk'@; put 'mzyGICF7CADZZg/7HjX7ybZ06NIdns/OALLNjpOAbLODeyStQLa55Q+wJj4EgGzjwytjrYFsMwZ1REXRyBZyI2fWR0C2mcUbtKUWgQ6yfXD9GQMZJV/DmW1qAU5UGpBtosilrl80si3SBj621Skun3XUs0bqtIIkWNnCHMhHBIBsc9SrsZCtQcyhN1Su35SjQ+j1ZkUj20J90OPfOPhlQLaZcTWs'@; put 'bDODM2hJDwJAtunBNWmpQLZJQ5i0gKj1bIFsk8Y4HgEQZxsPWtA21xDoINt73xo3iGJzC2wj54aL/KE/5UOf29n22ZnhLBKCc1jZptdX0ci2SN33ia0udimsbNPrh6B0INvM4Axa0oMAkG16cE1aaiDO9pBnd7o//xmQbdJwJiQAyDYh2NLWCcg2bdCC4AwgAGSbAZATUSHJ9uDSQ5bs8nx+ViSy'@; put 'FYgdMqO68atE5EOf6Ajc0Tj6WCH4WwTTsIleirRBT2518ktgZRsdy1S0ALJNBYogI1sIANlmC/koev1kW3LwM7u8X5wNZJsdJwHZZgf3SFqBbHPLH2BNfAgA2caHV8ZaS7I9qPTAv+32bPo5kG3GYO+iaF5D1Q8JIm/DyjY7+IdqDZCtsVmlzsJwFhVq/VHpF0Q599xnWW5YDFYAAp0IANnm6GyQ'@; put 'ZHtgyYFP7fFuGgdkmx0nzV9fezRmfCPBihrOArgglVm/ANlmFm/QlloEOsh28caz9xWCb+7pNrLKtcFX17z2TWpNAGnhEAiQ7f5P7PFuPi8S2ZqcH3x9bcNmQDA9CMxvqPo/jPC7kcgW4mzTg3vP28iwss0s6qAtVQjERbZYc+w3dfgr36ZKOciJjIAk2/1Lhjze5N1yfiSyRRY+aPrxa7cAjulB'@; put 'YGF99VEco/cirmy1AY9udeIr4IJUevAPlbpo9ZhSn+LerFFnEWwjZwZz0JI6BDrI9k/vnrGfyshXPa1sgWxTB3w0SbGsbC1qHHjdqA1fR5MFnyeGwIK1td8XlP+TRthGLlT7P3zFiKWXJSYdesWLQIBs2zZr1AVkGy940D7rCHSQ7cPvnrGfGYVsdQXvO3Hkmm1Zt7oPGBDLBSmMrQOmVa3b2gfg'@; put 'yMoQo5Gtk5YvHl+x7KqsGNcHlQLZ9kGn59GQO6v+NI4bjFVzU08rWyDbzHl+8cYrVAe1nukpzhbINr3+8JMt4f+kJPwFKZ0W3TOx4uWr02sFSA8iIC9IYWR81dM2sukkRROPerYVUAMEcg2BuMgWITpkWtUbsJLKgBeXfDBO85qlS3e6P/1pOHWQrjH9Tmgn2/coUbRw2oBs0+8Du4ZYbiO3UVY2'@; put '9djlezNrGWgDBKIjYCtEcPYQRvmXPa9sC46dOHLFP6OLhRbJIrB44y/6l+oDlmxtef+E8GQrOBbqmGk1q+qS1QX9wyOwaMOPfsQs3z8i3kbWBj7WpO6dMPOYV9sAw/QjcMdbp+wvTPcXkeKeZZwtkG36/QAaEkMgLrLdt+ioeoLoToQRoVjjAnFLqsWIYowQQVj+gxFGol0u6W6Vv03Xl79T4GXr'@; put '3963vX1Qkuho2ylHdhYo8LtNFiLtfYOfoYCB/pdApJsdgf7C1sYvV4SDFiPuf18g/2D9P3PBROB3/z+c+xswgREWDAkufw7IE0LI/wsmm8i+8j2pnbQLxEIw4bWafrrLvckRybXl+gH/UTXnJyp2StAxwYpAwmYvlqBggiUSApF2QDDCfn/J//n/L/9DMMWys+wSwJi0YxEQYrdB4tn+RrvdkSef'@; put 'HGg7PAGQbK8gtp3zpdu8CHg07EsgbvNNpz8k9n4/Ci4hbveHH2/5s+DyJb+pMCE448iyuLDkz1z6hSP5m8kopophef5vr2/LsZFGV6wP2uNUyl4XmPsoUUm7ukBCBakOYyx4YADEP4ElthjLH7EgBBGB/S9E/S7wf+b/3f84BeazdF7AT4Hf2ueo9GH3Z6LjHX/D0Gci+DwE5m1QVvfnMej/yF7t'@; put '/CSIe/BZCPrajr8EQ45Ytg08E50+CkriyD9RuPSDQEz+y2RDizHGkeGzuEm5YEV7PJvC5gqXcoBsY/EYtMkWArakFmfuTzH+oueqP9kyE/QCAoAAINAzAkC2MENyGQEg21z2DtgGCAACMSMAZBszVNAwCwjYklqMO0AI83NY2WbBC6ASEAAEkkYAyDZpCEFAGhEAsk0juCAaEAAEMocAkG3msAZN'@; put '8SMAZBs/ZtADEAAEchABINscdAqY1IEAkC1MBkAAEMgLBIBs88KNeTuIuMiWCybDGsKGwkRAKErbeETlrQ9sAwtGLwXeihRPGOwgwyMECkQYwSsVCHQJM8IYExoIu4n84sIyAyE/tmYhoVLhevcoNBVDyTsZgWejp2cCyDbvnJ5XA4rrNjJB6kU+3Po2FVhgRjkjnDFOBCUcMyywxhixsIqDv4ci'@; put 'RU015G+MgSyiYIVbCbMuUwNxpdQMxPYGfw/qDr4faktou2helWMO10aOP/i+IsyOnxkPtGdq5+d+OwUWEqugPPlzwH6OiUooshRCFItyoZaVOYY83OTbemg4vfIP/P/+8MzmzFwqKPNhxjgjCsOW1UG+FhGYklDMw480aEcnbjxpPqAkGG8dkBrExD9eIrD8PbSN3To5l6L5JdLndl9EkxG0K2iL'@; put 'oJRgRnVC1fM4YtdHIlyK9dWM+f5oMW8gX7hCOTM4U7WAz02DY+RASDE4tjQi5L/yfemXAAaB8dmxl/Mgmr3dnqsQnOPtn6n2dv+HezaCz4HdHvn8yGdFCKxoRDlOIPRUJHuheHymPAl6EkEgLrKFeraJQJxYH1mI4ODSoc/t8nx2Zniy5VxgetSMqjUfJ6YBekVDYNG62uMYF+sJpmGLxytEnz95'@; put '1KvXRpMDn6cGgXs2nNjPYNZOINvU4AlSMotAB9k+uD56ukYg28w5J0C2By/Z5fnirEhkyxA7/Nrqxs8zZ1Xf0nRHXc0xgoi3I6VrVIlzwdWj/jGzb6GSvdEubKwsNxnfrFJHQTgrYGWbPd+A5ugIdJDt/TFU/QGyjQ5oqlq0r2yX7vJ8dkYksuUWPnTm8Wu/TJVOkNMVgYWNo3/ABXsnEtnqSsFd'@; put 'E0eumAK4ZQaBQCECcwuQbWbwBi2pRaCDbNuLx8sSe2G3zKRaINvUgt+TNEm2Q8sOf36H+5OxkcjWIObQGyrXb8qcVX1LUzSy1WjxnyZVvDS5b6GSvdEC2WYPe9CcPAK228hn7ysE/wrINnlQUyFBku0hZYct66nEnkDskBnVjV+lQh/I6I7A/PW1R2PGN0Zc2UI924xOm1hK7JV+QZRzz302UAwC'@; put 'XoBADiEAZJtDzrCbIsn20H6HL9/e+snpkVa2QLbpdV7gzBZtjBRuAvVs04t/qHQg28ziDdpSiwCQbWrxTJk0SbaHlR/x4ndtH50WiWxhGzllcIcVBGSbXnzjlQ5kGy9i0D6XEAgl2809FSKAM9vMuW7xxivUIpW+uK3tw1OBbDOHu13TvIaqHxJE3o60stWUknsnjXxxUnas63ta4cy27/k8n0YM'@; put 'ZJuj3pRkW6gpL3/X+sEpQLbZcdIdjaOPFYK/FYlsHUrJvROAbDPmHCDbjEENitKAAJBtGkBNhUhJtsWa+vdvW/9zMpBtKhCNX0Y0snUqxfeNH/nSxPglQ49EEACyTQQ16JMrCNgySI0bRLG5BbaRc8M1/m1kTVuxrfXfJwHZZscn0cjWoZTcP2HkixOyY13f0wpk2/d8nk8jBrLNUW8C2WbfMVHJ'@; put 'Vi19YMKIF8Zn39K+YQGQbd/wc76OEsg2Rz0rybbEoa/8pvlfJ8LKNjtOas+NvCHimS2QbUYdA2SbUbhBWYoRALJNMaCpEgdkmyokE5cTjWydtHTx+IoXrkpcA/SMBwHIjRwPWtA21xCIi2wRokOmVb2xNdcGkY/2LPlgnMbFoBWwss2ed6OTbfni8RXLgGwz5CIg2wwBDWrSggCQbVpgTV5oLGQL'@; put 'hQiSx7knCdHI1qWU/fmqkcuvTK8VID2IAJAtzIXejACQbY56z7+NrGkrvunhNjKQbXqdF5VstfIHrxq+7Ir0WgHSgWxhDuQDAkC2OerFWG4jA9mm13nRbiO7gGzT64AQ6bCyzSjcoCzFCNiKx58xkFHydU9xtnBmm2L0exAXS1ILINv0+iMa2TqV8ofGj1x2eXqtAOmwsoU5kA8IANnmqBeBbLPv'@; put 'GCDb7PvAbgGsbHPLH2BNfAgA2caHV8ZaB8hWefnbHnIjw8o2ve4IkC3bEKmerUvt9/BVI56/LL1WgHRY2cIcyAcEgGxz1Iv+M1udvrSt5cMfhzNRCM6BbNPrvEDVH/xWJLJ1Kv0eGj/yedhGTq8bOqTDyjZDQIOatCAAZJsWWJMX2l5i76VtbUC2yaOZmIRAPVvxNqxsE8Mv1b2AbFONKMjLJAJA'@; put 'tplEOw5dkmwLVPri9h7q2cLKNg5AE2g6f33t0ZjxjUC2CYCXhi5AtmkAFURmDIFQspVVf9TI2iGDVKY8469nq5IXvmv76DTYRs4U6l31LGwc/QMu2DuRt5HhNnImPQNkm0m0QVeqEQCyTTWiKZInydal4uU72j7+CZBtikCNU8zC+uqjOEbvAdnGCVyamgPZpglYEJsRBIBsMwJz/Er828gaWra9'@; put '9ZPTgWzjxy8VPW6vrz6KYvQexUrY3R6Is00FyrHLALKNHStomXsIANnmnk/8FvnJVhHPb3d/+lMg2+w4acHa2u8Lyv8JZJsd/EO1Atnmhh/AisQQALJNDLe095q1eowytOzw53e4PxkLZJt2uMMqmLtu1JGE0fcpCb+ydSnlD141EnIjZ8o7QLaZQhr0pAMBINt0oJoCmX6yLR26dIfnszOAbFMA'@; put 'aAIigGwTAC2NXYBs0wguiE47AkC2aYc4MQVAtonhlspeCxorjxCcyJWtFk4ulNhLJdrRZQXIln2lUmdhuNaFWn9U+gVRzj33WRZdGrQABDKLAJBtZvGOWZsk20PKhz63s+2zM2FlGzNsKW04t776ewShfwHZphTWhIUB2SYMHXTMAQSAbHPACeFM8JNt2dBnd7o/+xmQbXacdEddzeEc839TooZd'@; put '2Tpp+eLxFcuuyo51fU/rnLqaMoKMzbCy7Xu+z4cRA9nmqBf9ZFt6yLM7PZ9HJFuDmENvqFy/KUeH0OvNmvdmxWGY0v9EIluHWvrAhBEvjO/1A+0lAwCy7SWOAjPDIgBkm6MTI3Bme8iSHZ7Pz4q0sgWyTa/z5jVUDcUCfUCJqofTBGSbXvxDpQPZZhZv0JZaBIBsU4tnyqRJsj249JAlu4BsU4Zp'@; put 'vILmvznyYESVj4Bs40UuPe2BbNODK0jNDAJAtpnBOW4tAbI9eMkuzxewso0bvdR0mLNu1EEKwx9TosHKNjWQJiUFyDYp+KBzlhEAss2yAyKp95NtycHP7PJ+cTZsI2fHSQsaqg7kQnysEM0RdhtZKbl/wsgXJ2THur6nFci27/k8n0YMZJuj3gSyzb5j5q6uGIJV8t8eyPbe/pv0ayCuMzO+kmSL'@; put 'kfGVRp1F4TRCnG1m/ABaEkMAyDYx3NLeC7aR0w5xh4L5759SoDdRl6X4NKEoBFsWVzkVFjW/bzHj5UhntrpScNfEkSumZM7Svq2pnWw3a5DUom9PhF46eiDbHHUckG36HDNLzCIDGxv7W0T7vqpovyCIVDf5vh3MhRVS3QcjhWgFGHc8Jl2MUnHBoqsrV0xLn6Ug2Y4AkC3Mh96MAJBtjnovFrIV'@; put 'iB0yo7rxqxwdQs6ZJVewDq9yJEF4SpN326kq1QsjrVojGS+EQEHydaglD/T/Up8E28iZcTVsI2cGZ9CSHgQ6yPb+98/aBxvia7e5J2ztzoB6OmRa1Rtb02MKSLUjAGSbuvmwZMk4um1Ia42F2uZa3DhaIbozWemSdAv1gV9YyHPRxOEv1ycrD/pHRwDINjpG0CJ3EQCyzVHfANmmxjF3rj9xoEDo'@; put 'JsNs/ZVKHQXhpDJuGVyYBhfMFIhzhBDGiGCMqUKxqkfKjSxlCcG/cinlV5q7jDWTf7LSlxqrQUo4BIBsYV70ZgTiIluVa4Ovrnntm9484N5ieyy3kWEbuWdv3t140rEM878IwY4JbSkJ1sfa9jiUwic8vj1rsa69r7jJXspNS7ZlRFWwohRZ1HdMobLPGCZ8Yy1hHBjuZjLjps+plrwqkHXzwK9K'@; put '34Nt5fQ8ZUC26cEVpGYGASDbzOAct5ZAIYKDnt7p/vKccJ2F4BzINjKsi9adeJLg1sMIowPsrSQxqsS5xme1PkQ8npUzf/yvtlids7BxzKEm89wskBgb7kasxX0ehRY8qDIyd1d19bZZeJZcJcMrRQgA2aYISBCTFQSAbLMCe3SlkmwPKjvo6d09kK3J+cHX1zZsji6tb7W4a/3JP6FIeczg7n7B'@; put 'kQshuMHcnyjYcd3M2vqXkkFkwcYx/bHJrzTNthmaUlgaKstkPrdCtD9h7Jw3reqV3cnogr6dCADZwmzozQjERbZwQSpzrvaTbemBf9vt2fRzWNnGjvuC9cefbBqtz+hKYVkn0cpzWDzfYZDZE09Y0xq7tJ5bzq2v3k8j+u1MGBcQTGloa8Nq+8ipFF+2p/KN9bMwglVuksAD2SYJIHTPKgJAtlmF'@; put 'P7LywAWpA5/a5dk0Dsg2NifdWXfSASbyrKFUOTjYw+I+N+Pm7TeMfueW2KTE32pufcUJROBFhGhH45CgXC4sU8H6S4yJm6fXrn4/funQI4gAkC3Mhd6MAJBtjnovcEHqwKd2eYFsY3HRotVjSlWXc4XB3JXB9gZra1Kx64LpNWtXxCIjmTYy/HZBfc3PKFXvQIh3kH1QpiRdgtSlCKM/TKsqLbZ5'@; put 'AAAgAElEQVRa81kyuvpqXyDbvur5/Bh3XGQLt5Ez53Qg2/iwvqvxpMWWMC63ryyFYNOnV9cvjE9Scq3vXl9R7DHFbwUS4zXqKg6VhhHdoSqOuw2L3QfnufFhDWQbH17QOrcQiCuDFJBt5pwHZ7axY333+tOGGFbre4SQ/sFeBCkrzQI6buYxr8Z82zh2jdFb3rZhZD9ikt9hIa5UqcNl7yGQvK7F'@; put 'vlKwfptZqDyVLRujjyK3WgTI1veVRl1QiCC3XAPWxIBAXGQLF6RiQDRFTRZvvEJ1EOPpXd4vI5bY4xY+dObxa79MkcpeK+bet8Yu8FnN04MD8FltTQrVTptZ3bgum4OSW8sL62sO8/K2R5xqcXWoLVwwC2H0jiL0q6+pWrURYySyaW+u617YWFluMGsTkG2uewrsC4dAXGSrENf+k0et/BqgTD8C'@; put 'kmyd1Fqy0/P5z8Jpk3G2DLHDr61u/Dz91uSuhvsbTtmHaIXvtJm7hgStFEjc01K59ppcuQF894rTdKOkdSzByrxw57kyPpdifSm3xI3w5SnyXJNkazL2lQpVf3L3gQTLIiLQQbb3vjVuEMXm5p5yI2u04HuTKlZ8CnimH4G/rB7jUMuPXLa97cNTI5Etwnj49Kq176XfmtzVcO+Gn17rtZpuw5j4'@; put 'Q284t7bpyDUsFzOdSbIQnNxkCvOicDVZiVB2CiJu1i3jiQm19XtyF/XsWCbjm5HP+pZgqoSzIN31bOVOxf31p5eqql7AEHYylfvtoCaxGLG82GG1jv/B3/fCDkV25keua42LbIv0fW8yedsGwRBjwuBCcMEx98vAmGKCBOaYYsyE/z2CSYd8jgPv2YMRWTs63QIUQ1CTMv3yBOvYZpPvhf4eCra0'@; put 'Jx0O4Ah32+4T7bYREfiMCy4E7WzXxdYw/YPYBfs7qKvIQUsW7fR+vn94shXCoRT92RLGiwJhU7aRNhBBbBgFfEMxIXYZnAfw9L8oQkF/hfrMP44wfgu1J+ifoI9C/SX9HBxXt75+vIIzAaEgZhKvAM4MCYGEBJTL8bVjyhnFuu4qdpLia5t8X1cF5QqE751etWZSOvyeKplz6iqGOajraoH4ReFk'@; put 'Fqj9PjKYd7XAbIVg5h7DP7dMRLDAghHCMcIEUyw4IfK9gJ86fSoZQH4elB18RoO/y2fVrjfcc+KfI1HmRk94yPkf6XP7c2Gfe/45jLAgRPqey1oPQm7fCMFMpCJEGTlYYPZYJLnpIFtJsA+v+3GZ0It/SDC9wKmU/rDJ+93BbdYOnTOG5RQlSOMurcwo1vfZLBD/3GLeNwXz/H2X1vodnMen6qnp'@; put '/XI6HrrFG8/eVyZV77nqT+8fcG8ZgUyKTzDtoQJTbxlJcnbK9IqBP8L+v92hf8AFxaozGNpqccOLED/n2poNaQ/1SW5Ugd5z6ytOxogsoFj9QWh8rvzcYqaJMJdfpOzkiG2/Br7odvkYoXjLBqZiLKmU0ZPPw+WmDupOJdkubBzn1LDnSIrJVYiQMa3Gd0Mo0WKuFmUwT7OmuN5xKcVz3KbvHbh5'@; put 'nsoZ0jtlAdn2Tr+B1WEQ0GnhB8jdNiqVWaLSDfSsjcNcDrf6S0u4b3GpZQPD6bPX0E23Pb1ZfirIdvHGsS6DmbWaUjhhj3vzCeG2++PFyG3u3Vag9rvD4L7F19U0tMTbH9rnBwIdZPund8/YT2VkE6xs88OxfXEUClGfmTzq9fN749gXrB7WnynKHwTiF4eLzwXCje7VZMn2rvWnDEMCzfaxluOV'@; put 'CKtYIYSwhOHh3PT5t7f9WwtYIVhVKVZ0SlStB0vXaFS5clLFKrj3Et2dedcilGzlNnLYywd5N3IYUK9HoDsB4SnTqtbc1ZsHtqiu5hC3aH3UQYsqg5e+7OMB0o3s3UTJVsa093PqZyKE7zC558BQDXJbW2CxmSCl3sfa1mJufc4x30QJbvVZVLiQ6vAq7oHYoocV6v0rTOY5lxJlcDj/eazmnU61'@; put 'ZMaQLQOegFKMvflJjd92INv4MYMeOYJAKPFwbp0zo6bh+RwxLykz5jVUnUMEuRljfAQOueAmBQPpdoc3EbKVRFugmvMF4leGrmZN5nUrWFtrIu9fMNJWxroFLI8GnF71VI26rjKstiqVOgrs1spQL00p+QPnzfdNq1rnSWqiQOdegwCQba9xFRgaikA3smVW7Yzahvp8QWphY6XTYugSk3tnOdXi'@; put 'juxYsNIN7+F4yXbJknF02wHNV/uslrn27V/GLUMg9IZA1k3X1WxYn8x8mrd+9GEKx7O5YOeEVobigr2iUP2iKaNWfZeMDujbOxAAsu0dfuqTVsqchh0DxzKODHcJWQklW8HF6ZkoOpBpZ8g0hQQZv8eYjFeI3u1GrB0HSRT+AJowq+HArebA3eVwW5yZHleq9cVDtv7sXg211zNk3Wi/4WxYbXsJ'@; put 'Vq+5tnZdxBCjROyeW1d1Yalz37ltxs597f1dSnmDlzdPmDJq1b8SkQt9eg8CcZGtigseNkXbJ0gG2GLBhJDBtpbhDzYLhGe0x9wG4mv9zRD2x8v5fydcYN4Zeyvfw7a4hWD/UPj8f2fDvPziQ16YhIuBDcT8Be0MdpF2SZuCv3eMIyRGEHfEnYSTHWuKPVnOlCDcoY8iab9//FgQLCjFWEYTEhUT'@; put 'SnXqGOCgJVe1GNs7CqB3HaoQKil4jTHPGxayWoRgjGNuII4shDmX8Yq43R/y54A/Om2VIZuiPUbT7oOOPu1+kp91vNfuq6A/pL+C/gzKCJ0Dof6Rc8L+nt0nQX8E5oycYkhI1Pw2SHukYv+HiDq1ogOKtIGTdns2l3T4E/Ebp1fVpa2UXrYf6wUNVQd6rNZHnUpJDWlP4mG3iSDFawnfrYbl/ZfA'@; put 'FqNIUbhAJibM4DL2XYblYqRiQXSM/JGrCsEyNFsG7WKKBCYEyzhegQnvjCfiBAl7nLQMeu58ZgLPZjAeW/5MOMGcdvbHtudUzvQuNrOuz4/sJ9tLV/vnV/uzT5Di1KnjSB9r+3UkP8RDtgvX/WgsZ+ZThJDCoDyv1bxLxerlM2vfWpYOX8vzeIvwZylWj+v6DNBPKMFnTx616sN06AWZuYFAXGSL'@; put 'Ncd+U4e/8m1umJ7/Vjz49nmPtJjbfhP2i4ZM10jxEdeOWvvf/Eci/AgXv33O023mzvOCn+qKa8HEkStn5jsec9cMPxkr2kKKlaPC1c8lSFnq4+7f3VD79hf5hMV9dTVlHkJ2hYtJluOMlWz9dY+xZyMlyoAgPh6zaYdGCsfOrK3fkE7MbltbO6BIcz1ucu+P7XqcStknHqvpymlVq99Mp36QnT0E'@; put 'QuNsZbrGiLeRCVEGwflC5pz10Mbz/tJsbLs4EtkiCx80/fi1WzJnUW5pWtgwejrCeEHQqmJ90Evu4uZxkw9b6U+Ekc8vuQ06t6HyCs69tzmU4vLQsTJuGjotfNRQjd/OGL5mZz5gIWsW+xT35kixr7GS7cLGMa8hJE4KYmJxs0WGXF1Xsz4jl+vmv39KAW71LCWYdCFcxs0WlTgvmFK16uV88BeM'@; put 'oSsCQLY5PCMeeuf8x5t93/4KyDa8k+6sr/6egdh7wXNMk/l2OEXZUZNHr9yRw25NqWm3bxxWItrQDZjQiVpIgn55SoI5+e5/pxJzplSuujulirMgLEC2bbLEXrc6wbGubBetO+lIw2p5235DWAh807SqNTdlMqdxoO4xflKl+k/tUBbq+7S0+XZOmVq1+pEsQAwq04hAaG7kLT2tbHUF7ztx5Jpt'@; put 'abQHRNsQePjdX/2tybslbJIGWfXHosaB143a0GerMN2+8aQS1ef7AmPiX9nJg16FOs++ZtQrL/S1ibSwsfLQVl/T/YX6gI4VWxADmYjBYG0fOdTyK6ZWvtbQW7GR/kaeps3JkO3Cxh+9jhA7MYgBRqTBp9HTrx/+elOmcZn/ytEFPl3c7dLKL7HrNpi7xUFLxk2pev2VTNsE+tKHQAfZPrj+jIGM'@; put 'kq+BbNMHdryS//LuhUv2eDePi7Syxdg6YFrVuq3xys2n9netO+VVJnwnB8ek0YKX+C4xbvJP8n8rOdSPizcOU3d58ckO7LoTYXxY6OfyprJGClZalF07vRdmMUp2ZXvn+lOPVjCpN1ibv/i8xQ2PQvSzp1Wt+Ue2nolZApGidTW/sph5v0odrqAdMsaXIHX+zNr6WdmyDfSmFoEOsr3//bP2wYbY'@; put '2hPZwgWp1IIfTdqj7168tKfi8UC2CN297uSLLWH8JYhlsWPQd8J0V15e8dKX0fDN18/9pETdN3BkXe5QispCx6lgRzOhdD73isW9acu9nWzlytZPlqGvaGe2d647ZQUXvtOC/VTifNdttYyJNVlFuuaLPH+/Ze0PLlexNk9XCjtv1wvOHbTkVkXBt185/CV3uvSD3MwgAGSbGZwT0vLYe5cu3+n5'@; put '7MxIK9u+vo0scZHF45lC/2Mwd8fNUodScu/2tuYps05YYyUEfJ50mt9QtQ9BZBbGdHzYOcTZZqroc00nfbQ3lIKT8cYYGV8lckHq7ndPG1CE+v97j3dzZ7EHgWdMq15zR664e279yOEm8/3dpZbuE7RJHgFggZebyLoo218KcgWn3moHkG0Oe+7xf1724g73f8dGItu+fhs5iMud6068iwtrcvB3'@; put 'ih07VayfOGHUi30+UYBcNd2+duQJAvM5DqVgZLi5pCuFr3HGbxq4pXB9LufrbU/usVkNuQgWHFNPK9t71p9yssdqfSlYflAI8R1hzmOnjs6tUMbZb/5gNBfsyUJtwBA74TqUoqd9zJoEpfpy+A92FNM6yPaRd8cNMJj5DWwj544zgWxj88W9b40Z1OrzvatSrSM7j0YK3scEnTpx5Aq40Pc/GGet'@; put 'HuMoUs1TOMJzKKHfD0VW1gLWSMEKxNlvp9Ss/iQ25DPbKhmyvXvdKeMt4bsvaDHBSuNeLztx1glrvJkdRXRtMnlJi2/HyyWO/f7P3tpjNr2tKfv8dGb1q9ujS4EWuYYAkG2ueaTdHpkg/ZCyw5btdH/aJTSg89su5ybnB19f27A5R4eQUbMWNv7oei6M2fb8sy6l7Am3pV4xrepZSPbe7g0ZKkS8'@; put '2uUOpXiaxb1dUgfKJgQpuzBBf2Zc3Dut6o2cunyXDNne/9bP/uqx9lzUQbZEnT9l1OvXZnSSxqFsbn31fhSTvxFMRtu7CSHe5YhcNLN6zX/iEAdNcwABINsccEI4EyTZHtrv8OXbWz85PdznMvQHyLYTGVn022O2vMyFOCH4LhfMctCSu3YWuX4766hnjRx1dVbMunP9iQOZZd7EkPHrcPmWObc2'@; put 'YUJvL9TaHr9y+Ds5cTknGbK9e90p71jC15EmkSD11FwPrVnYWFnuY9Zynbpq7ZOk2bvtC5fe75xrqxv/mZXJA0oTQgDINiHY0t8JyDZ+jO+oqzmGY/EiJcoBwd6yFqlLLb7B7eB/7g2XgOIfdXI95q0dcTylzpsFEtXh8i07SNHrBvLMcyp711w5/J1AsfQsvST5mIx9lciZ7QNvn/WJ29x9uDTd'@; put 'ZN42lWo/mlZV91aWhhKzWvkFQyX8MYLVLjtcPrN1K6GOC6+tbliTyWQcMRsODbshAGSbo5MiFrIViB0yo7rxqxwdQlbMmreuthpZ5lKF6p23Tv2W0FUqIlN3VdZ8MAvPkvUN4NWOwN0rTtON4ubTEca3EkyPCAVGfmGh1PkyYvyP02pWf5At4BIl23tXjylsIq1bHGpBqbTdYG3NRC/83rW9JEGP'@; put 'zDbVZpiP6Erh2f6yHO0vWThBVwrGT6usfw4IN1uzMna9QLaxY5XRlkC2icN9x9raEwtdAx9tM3YMtktRifNbxn0PKJTcO6li1a7ENeRnT3mei930dwjjCaEFz+WIMSLfUarfYTHxcDZuxSYa+iP7KYhvolT1p3lkzGpSVcf3elue9/n11fMIpjPshRjkFweVOK+ZVlX3KBBubj+XQLY56h8/2ZYd'@; put 'vny7O/KZLaxsIztvXn11rcGan3Gp5d0uASGENmrUOVmlOzZme2s0F6ffvIaqoR6j6V6XWjImGCpjt9Ni3o8Ltf4zrF389Uxm6kqUbGWaR+Jxf6VQ1Z8wwmSe1gKtaNikXphF69Y3j1mgUdckSjQ96BOZ3tFFy6bs9hlP5eLt6lyc49mwyVaIYGx/Iei3EPqTDTd01xkg28OWbe/hNrJBzKE3VK7f'@; put 'lBsW554V/j/OwnhRU5w1odbJwvQWN9c4ievKydVvfJ571mffornrRh3JTPOvOi0YLgvLhlrkNlveK9RKxu8ddfzbmdiaT5RsFzZWOov0A95p8W07MjgGFevnX1356jPZRzl+CxY21pxqMnOpPb2jlCK4eMxCbBIkv4gf00z0iItsVa4NvrrmtW8yYVhf1wFkm5oZIONLncQ9SxAxIVyaP6/VvLtI'@; put '22+OT2n7a76UoksNcgEpsz74vubYVXARE6Ys5dcvXP1cBy15EjE0a1L1irTeHwiQrU9W/Yk7XeO9G8Zu9LHmYUFsnErJHYRsvaG37mzMqTvuVILUboRbqPZ7TODmyVdmobBCKuddPsoCss1RrwLZptYxc+urizSiPyIQ+3m3VS4Swm3s/tqllM+cXrO2V652UotWd2nyEpW7aPdlQrBbdaWgI39v'@; put 'sGXgEpXjHiTU29J1npsM2T688fyHmoxvLw3aq9OiOuRu/cnEE9a0phu7dMmf82blsZSI5QrVO27fy9pXBKsNXDjPn1b1ck7FSacLh94iF8g2Rz0VC9lyCx868/i1fTbhfryukxVWHHUjLmDImu1Uig8M7c8FZw6l9BnBfLdcXfXqx/HK7wvtb68bdoDbar6nVN+vWxpRWT/XYr7/FjnKp0wYsXJl'@; put 'qvFoJ9tNiZTYu2v9KXMY910ftKnUMXiTz+OpGF+9rFdnY7q9fsRRXqPphWLHvkPteKvE1aAI8avxlf+AY6ZUT8QE5QHZJghcursB2aYP4Vkbh7mcXvXXgrM/aIprv1BNcpWmK8V/xZjPvbriVfgyEwKQ/0tLw4gjBeMP6WrhqO5fWphlWG3vF6r9Lp9c9fp7qfJkMmS76O0TD7G87vcp1QqlPTIp'@; put 'jK4UXDKp4h+Ppsq+bMlZ2Fg5GCP9BYFExza5tAUj/AEl9NzJo1Z9mC3bQG8nAnGRLUJ0SK6lcMtXZwLZpt+zcmtZRcpVjJvXUUXtF6pRJj/QqPNBhavz4a5Cd38EznOLLzV5240FWvmg0BYW93k0WvioMH03Tx1d922yHpVki4T3y3Db2FJ2T4UIAoXa8bsurdSf2EK+CtT+j/t2uC/P5I3qZDGI'@; put '1P/2uuoDkDCWa4rrWHsbjRa8L5hx4dVVr/87XbpBbmwIhJKtLESgRu4KZBsbrMm3ArJNHsNYJcx7s+IwQfFslejnhuujEOcnBKM5ptv7wtQT1uyNVW5faXfb2toBCrb+KBC/OGx8rkDfKIrjLmooD06o/fueRHFJhmylzoWNJxxvce8/FKI55O8GczcV6gPOmDRyxdpEbcqlfrKkomG1vexUS0fY'@; put '7fKaLd8UqCW/vqZq9apcsrev2QJkm6MeX7zxCrVAwc9vd38csRABnNmm1nkL64+vdVt7H3FppYeGSubCMglW/q0QZY6u7H2ht95iTS1indJkKb95DRUVBbT8WkO4zwqnp1Qf8n6LueM+r+X423U1L7bEa4u/eDxt+VJTCv2ZoEJf0YrHL1kyjm4Zsv0NjFBHcn+M6DqdGadPqK1P+EtAvONIZ/u7'@; put '19YO8GH2OKXqj+16MCLfcI4un16zekU69YPsyAgA2ebo7ACyzY5jAreWtUkW902npPvWsixFV6D2W2IS67YpI/6Rk6XosoNcQOvijcPUZsP5UwWpCwTih4SzxamUreKI3bBjxLB34onPTZZspS3zG2pPR4I/T4miBW1TSeEtuzxtN886YY2VTexSpVveSXC51UcURT/PLtNjNu8s0EovnVK5+sVU'@; put '6QI5sSMAZBs7VhltCWSbUbi7KVuwcUx/Byu402e1/BJ3pqPtaOezWvc4lJLHKOELJo9a83V2rc097TJrE/X6rtAV19RwpfwU7GhSqf6UwT2Lrhn12n9jGYEkWw9t/sKhFJWFax9tZSv7yHPmgj1lL1CinBqUQZDahAm96JpRr7wQix29oY0/vpx6F1GqXEYwVYI2y3zKBWr5dIe69ynYncmsJ4Fs'@; put 'M4t3zNr8ZKuhZT2V2INt5JjhTKjhXY0/qjK4dzXBihaOcKVQhegfC85vcWjO5VcOfyknStElNNg0dfKX8mPGHy1uXKhSh/8msP2FEf1OUxx3Gm3uB6Kdh8vczdwtvkyGbKXuRevGHNRm7Gq0p/JsNXZtKdIH/Xhq5esfpQmKjIuVuwx7vcoMjMiNwXNqaYT/tj0puG23z5wH6R0z5xYg28xhHZcm'@; put 'INu44EpL4/nra49GFnsrmB9YyIPJMKtc+cerRB/0ktdqWqyre9+EFUN3d8ytrxjloEVTfax1bLj6uaX64Hfcxt4HsNf9dKREEwGyRV86lMKEV7ZBy+bVVVxDiLrAvupzKCX/NLn3smtGvfpOWiZUloTOqRs5Dgv2Z/tZNxfMdKjFf24zmm6A9I6ZcQyQbWZwjlsLkG3ckKW8w/y1tUcjwt6mRO04'@; put '35NKIpGuPM91KcVPCSxmQ3xueHfMq6s8lSNztkqcP8SY0NBWLrV8tSV8s/hOsSE0JEduI3tp66ZEQn9C9ciMWE2urQ861eILCKYddhBMP6aEXnh1xWsbUz6hsijwtrXDqy3uW1KolXeJK3epZSuYcF81ceSrW7JoXp9QDWSbo24Gss2+Y9qL0b9lv0wTtCoS4crP3eaebcXqgFm+AvoEFKzv7kdJ'@; put 'dN7SljNUpM0TiB0U2kJ+adGJ62VMldm7R1b+O3iJyn9BSmnbnEhu5HCzqf38djbGZBqxEX+bsfubArXsN9Oq176a/VmYOgvmvzn6YA/f+UqhPuAwu1ST+T4qpCVnTKx65bPUaQNJoQgA2ebonJBk61Lx8h1tH/8knIkyAw6c2abXefMaqn6IBZZkGzb2XCUFzxJC93cbu44LXf1Kywim/yGC3mah'@; put '1uXTqtZ50mtt75Mu42YpMq5ngl8ZbrWKEd2hE+c9mJkPjK9+dbskW0Nxb1Gps9vZrxx9LBekQlGSF4kUtPsBh1b8S/uWso+5tzvU4omDN5cvO/fcZ1nvQze8xTL5hdfcubrYMSjkpjj+r44LzpxY+fe8ObPONZ8B2eaaR9rtAbLNvmPmras9jnC+nuDwZIuRdotVgOeqHlbV6t31gFMtOghj0q0U'@; put 'ncmNtS5SNmlX5cgP4gl1yT4CmbFgTl3NIaa1589OtXR0uC82QvAtFKvzKKfPe1DLfxWiu8JZlgjZBuXMr6++FCFxr71+rzyLV4h6a5MPz8mXsCA5XpnfGmN9uUrULtmmvGbT9kLHwJ9PrnilLjOe71tagGxz1N+SbAtVvPw7WNlmzUML6mqGISLWRSJbhejzJ4969VppoIxtLPDpl3HOfqtSx8BQ'@; put 'o+WFFJ0W/oWZ1q1Tal/fnLVB5bDiW9cMPxkTMVujjmPDYV7mOODjPd7NR0QaQjJkK2XOWTv8HJU67iOY7mPX4VTKHm013dfOrH61VxctsI9J1vi1OH7wf2fU59u30DlnpkacF+2urH4Gvhim9mEJIVvyjdvcC+kaU4txQtKAbBOCLaWdFjQcPwIh1mjfXrQrUIjrjsmjVs6wv3fv6jGFbYpnASHa'@; put 'ZfY/YsE2/tWD1n8WwuqTk0etbE6pwXkibEHjmCNMq/kxjRbKovUdf6OCw4t0Xp4s2Ur5i+pOPMQjmt5wKAVdqkK5jb3/LHaUjc23mOpF68b8knP2mH1HRgjBkeD3t1SfNBkIN3UPFZBt6rBMqaQA2ZIXvmv76LRwguHMNqVwhxW2sLF2JBeiISLZUufCyRX/mB6u89z66u8RhG6jRDk79HNZik7B'@; put '2gcCidlTKldB/dwIrpzXUHWOgtQ5CKMuF3oika4kW4GaSpMtnC7jcAlSn2HCGGk3jSDyscXMX82orc+r0KAFDTUXFqgD7vRYu8s7xyuERov+wgWfCl8KU/O3Bsg2NTimXAqQbcohjVvgnXUnVFjErI9EtiouWHR15YppkQTLsNyFDWMq2sydjxTq/Y7sRrqCcyZYg0pdV+ZTMoW4ge6hg7zAVKAZ'@; put 'VzDmuylSTuTgSleSbRtlZVOPXZ50sQiZAUvx+p4nhPzIbl6rsXOLQy//2bWVde+mcpzZlrWw4YQzfaz1L7ri6hLD7FCKnkY+MSGZAhLZHluu6AeyzRVPhNgBZJt9x9y57oQKi0cmW10puGviyBVTolkqCcOleH4tELo53HmuP9SFFv3FomjOdIh3jLDLUFluMH4jRuLScLeRJeE6lCKkUMeRVw5f'@; put '+nE0n8TyuTwS8GniPoTRhfb2XrNlm6o4LptZ3fj3WOT0ljYLGqpGmMz3nK4UHmC3WaHOemyy86DMZHKeBLJNDr+09QayTRu0MQuORrYaLf7TpIqXJscqUK6WkLt5Dsb41+FK0bnN3d8WaANuobjtycmjNsB5bgiwcqdg0brKoV7T95hDLaoMh7vgfLOuFV04ccSKOoyRiNU3kdr5V9aqeSMlyg32'@; put 'NibzuQlRp8ysrnswWR251H9RXc0hzWz36iJtQBfCJUh5jxDtjMmjVkIe8AQdBmSbIHDp7gZkm26Eo8uPRrZOUnzf+FEvTYwuqWuLhY2VP2CczAp3nssFswii/8IIz3HpLVDKLwy4MimGUdx8OsZUfnHpKAYfbBpMisE4nzWtZvUH8fontL2/fGB9xXiB+O32hBoyNEjFrtl7q16/bRZGPFk9udJ/'@; put 'YWPloUIoz2BMjrPb5KBF7wsufgGxuIl5Csg2MdzS3gvINu0QR1UQjWwdaukDE0a8MD6qoDANZJL4Fl9BpdvYdV+h3v+o0CaMWyYTxlqXWjx58qhVHyaiI9/7zH/llAJc4LnC4K2/cyjF/ULHazJPq0KcfyTw2c8AACAASURBVOZIn5ts2I6fcNeOOMtC5gNOtWRAUJescyyPAEwubphW9crufMHc'@; put 'X2GJtKx2qIU/7Lqi93xeqAwYC4Qbv6fjIluVa4Nh3z5+kBPp4U/XqNIXt7d92FEKzC4HbiMngmp8faKRrVMpf2j8yGWXxye1a2t5LuhRzcuZsK4Ld55rWK17VVLwEOFi4dTRdd8moytf+857a8wgjeHbuGAXI9Q9VMhixhcqdczVfOKpSEUOYsVmfsPISsMyn3OqxV1yDCMkVmHNeeHU4a/kjY9k'@; put 'hi+d4ucRImPs+BiWZ7Ouui6dWrnm9Vhxg3YIAdnm6CyQZFuk0he3AdlmzUPRyLZA7f/IlSOWXpoKA2WoEOe+3xNMfhbuApAs5Yc4noMIWQ6hGOERv72x8seIWbepxHlsaHyu3ClwaaVrOOM3DdxSuD6ZFIxz6o4bZjLvC4XagMF2SwjSGpmCz8+nS25z66uLFEwfxxifaR+rz2prcmllF1wz6rUV'@; put 'qZj/fUEGkG2OejkWsjWIOfSGyvWbcnQIvd6saGRbpA149PLhz12cyoEurK8ejqljDuPGCaFJMeSWJUL0HYrobJfe/CqU8uuOvMyMxDgZS4l2O0L84NAWFve5FaQvJ4jcPKVm9SeJ+u62upGHE4SWa9TZJaSLYPVdSsjP86nqk8RUcOVuhNEl9uQXBnM3O9XSSXsqXnsyn86sE50T0foB2UZDKEuf'@; put 'A9lmCXib2mhJLQr1QY9/c9yRF6c6y468AetUPL9g3JjlUIu73AqV5skLQE61bAli1pxdPuOzfMrbmyqv3722doCbmDcIbl6sh6l/SwTdqSj6Imqxh2SRg0T03vLmDw8zrZalpc4hP7D3V6nrPcLJL/PtXPP2N0dcjwj+nWYrBGFxn0dXim/cU1Ry96yjnjUSwbGv9Okg27vfHTdAY8bWntI1wplt'@; put '5qbFkg/GaZbV/4WetpEFYofMqG78KnNW9S1N0ci2SBv05FYnvyRdf2TkFh4ldCLi/DpCaGko+l6rZZdTKXuCK/SOfNq6TOUsk1VudKLcZHDvuHDhVoybnyvUdYfmtR5P5Dx3YWNlucXE05RoJ9m3rg3m+dxJS399TdWrjakcT7Zl3VF//Ale1vSM/ZKYtIlztgQ5lIkzhq/ZmW0bc1U/kG2OegbI'@; put 'NvuOiZYbudgx+Kli3fzNuWn+Rj+voWooQmIOEuinCtGcocioxPkpFmQ+9rqfToQwso90+i2YVz+y1qX0m+yxmsbaK/sENReq/RpazZ33NfvI87NOWOONx6LbNw4r0c3Suzg3L8QYd1R9Uolzq8HarmmpqluWT9us89bVVmtCeY4jPqgrTniNrqBfTBy5Zls8+PWVtkC2OeppINvsO2Zh/ZjhHFvr'@; put 'IqVrLNH3e7rIYV2UbrINIiHPcxXqmm9wb224IgcY4XcQJn9o8vLXYGs5/PxZ2Hj8WYxbswkmR4SWQ2TcMhSivyy4uLG5+viP4jke8Ce/UIz7CKEX2eV6rZY9Gim8rLV67fJ8ItwFddU1hvAsdShFXSokKdixSuXigkS35rP/1KfPAiDb9GGblGRJtobV/4WeQn9gGzkpiKN2jka2xfrgZ4od5q8z'@; put 'RbbSYBmfu9en/4pbvlt0tbDLbVj/dp6wTIdS8rTB2M3NlZVfxEMYUQHJkwYLVo/pLxTrUodaNNXk7m7lEAlSdxGCHjF9xp+mH792SzzDXlBf/VuO+B8UojmC/QhWWi1mzDngm0Fzk7kFHY8dmWh725qRlUWO8sUm93Q5s3YqZXXMbL5wUvUbcMRlcwSQbSZmZQI6JNmaVr/lPVX9AbJNANg4ukSr'@; put 'ZyvJ1l2856LJh630xSE2JU3lSqpYF1fL+rnhznMNq22vQgsf1hibO3l03Y6UKM0zIQsbfzSYYHSLxX2/Clc/V3C2WRB6a6sPPxLPTsEddTW/Zth6QCF61y1/IWY3V639Yz6tcO+oqzkcEbIUY/x/9ukhb2UjC50FtZs7UQGyzdE/IAGyLV/WU/F4CP1Jr/MWras9jnG+PlLx+BJ98NNtxXsuzgbZ'@; put 'dmwtN1Yeagk8nyI6FmNCQxHRaMHnnLGbd1dWPgGr3PDzZX7dqJM4EvMVoh8Trn6uTgpf93HP76ZWvvF2rPmW59QNm0CxuiCUcDXs/MNOr3dBvOfC6Z3pyUlf0Fh5BGfiWYXqXQhXo4Xvc8EvmDxqJWRAQ7akFnAbObkJl+re/gxSGlq2vfWT08PJlhmkgGxTjXpXeXc0jj5WCLYhEtnKC1Luoj2X'@; put 'ZJNsgxbPbzi+ss27fXGxc58uW3qBz4VAiL7nIPpvJoz6x7/Si1rvlD7rg+9rzj3FlzDuu9WhFNvqugbGI3NWO2jJY6Zi/T7WLFG3r/3hmQhrj2vUWdSJihA6Lb631SS/va7mxZbeiVZ3qwPZpsgyhPDx9k85Y18rquMXU0a9Xp8vY010HLCyTRS5NPeTZOui7Lkdns/OiES2sI2cXifMX197NGZ8'@; put 'YySylXG23uLmy3OBbCUSswQihetqT7ZM78Oa6gpznssZ50adQp2XT6ta81l60eud0mX6TLdmTWTc9zt70YHglxZ5iYpSxz2GSm65fvjrTdFGKW+Su307Xyl27Ds02FYIIQzuqVedBWfnU6hMoCQh+ivC4hw7LvJIQ1eLL5ha+cbKaHjl8+dxkS3WHPvF+q0un0HLxNgk2TpV9uzOts+6pEnrfGA5'@; put 'Nzk/+Prahs2ZsKcv6pjfUPV/GOF3I5FtgTrgkW9deHy64mwTxVz+0WtWWmZjRC7pThgIecymnQVq/5s4ok/lU/L8RPEK10+eRbZae+4p0vuf3P1zIQzL+6mmF10+rWJVXTS9t7x59MGG1bqizLn/Efa2Oil43ce9F0+remNrNBm95fNZq8coDsWzWKOOS7oQLnM360rhb6ZWrn6+t4wl1XYC2aYa'@; put '0RTJ869sFb50h/u/YyOtbIFsUwR2BDELG0f/gAv2TiSydWnlD25zKpNyjWyDw7lnw4n9DMu6B2F0fugQueCszdy1tUQdNJvQtmegfm73SSCJo0ixjjKEsVhXnBWhLRg3DbfV9E+HUjrxupqGjT3NxtvW1g5gfO8LBVp5lzq8e73ffliuDT47mdSR6X0K4pe+ZMk4umm/r6cihG6x38o2mbdNU1w3'@; put 'Tq1cvTB+qb2/RwfZ3v/+Wftgg3/dUwYpWNlmzuEBskVLd7g/iUi2sI2cXn9E20Z2KCX3Thj54qT0WpG89LsaTzix1dz7oFMt7pYrWJ5FCiHeVhXHVVNGrYLz3DBwy5vfuuK5wGAtfwwtqi6by5SFKnb+1RDG7OtqGr6J5DFJuG2+LS/2KzhwlL2N12j9QNOKfj6jas3HyXs7NyTIkoRzGyp/gYT1'@; put 'gH13RX7J0xTXXT6HuHHmMa+25Ya1mbEiLrJViGv/yaNWfp0Z0/q2lrv/e5rez3PQi9+1fnhKpJUts/AR1x6/9r99G6n0jT4QZ2s2RlrZynq221ubro4nLCR91vYsWdYnJbo+zWPtvlRTXCHl4RAymLvFoZQ8TjhfOLn6jc+zZWcu65XpMzEWFxtW2+9camm3+Fyf1bpHIY4HsKkunHFC+LSF8185'@; put 'ugC5Cv5KqfZz+1jbjF1bC7SyX06rqnszlzGI17YFDaNHK8TxLBe+juQXQgiOkHhdV7QLJlWs2hWvzN7aPi6ydan9xpm89R1BKUG+QGihhVW/DEp4h6wgGBbu/l6gbaBPtl7UDG+XtIepRATtCrazvxePzQo3RU8BmLpNmEVU7Nen6YgJUxTj0tICvd8jW1v+8/3wZCu4QhxTEBb/wIxxO9bh8I3k'@; put 'i2jjybavotkX7XPGzQ5/yraKICL4nv9nDXd8LkzWnmov4Bmd0rEeq2V+uGxN8vNS5+B6w/BcyxjbYREPZlzOna4et+MXaks426VNoe/bbfQ/c7YxKX6dnS/L9hzqluIfD1YUji2LW5wIrtMinSsTLGFexYSvI7VgUIIkDJUWPEKZuAPq54afXfMbqvZhzLgOYXx5uDNxWT+XEm2BJawnrqtp6Hbj'@; put '+O4Vp+m+kj0LKdYn2DXIs3RdcY2fUd34XLR53Zs+n19XU8GEsUxTnPva7VawusYS9Jy+cm8gLrINbDlxFr+jZehBrr1kkWlpV/di052W2j8P/pzsWHrS568vHMRKUKJ2ZKGJhB7jpk/4x5HaV+q+DdnHm3o7kxl1ONDs4yZY1cPFXdp1ymdC/r/rnLG38EtMHZzdfd35ZUHu3XWdXna98hKsbCsU'@; put 'ohfIcclfQ9p3GE6x8m/O0c20SXtp8k8yn7QjGb9mqu+CtbXfd/PdfypQ+42x50QO6m8z9mws1vpfs+/X/TaEZo6S58FOpW0CQvhWe/1ig7U1q8R5fUvprodnHfVh3lTRWdhY+YNm354Xi/WBB3X5csiMtxxC+WlfSLwSF9lmahKDHkAAEMgcApFIV5byK9b3e8nH9t7vUPbWQ/3c7j6Rq1R30c5T'@; put 'CFZuU4jWJamDbC3r5xKsv4gYv2XG6LpuyR1urx9+GmPscada3C8oXX55w4LciYl547SqdZ7MzYT0apr3ZsVhiuJYijDqEguuEH2jQN4LrhmV30diXW4jq8zY6jH3qumFHKQDAoBALiIQiXQN5m5y0JLHmWLMmz4yvlzBuTjOdNh09/qKYq9JbubI/I1GC4pDdfi354lzseVw3B4an3v7myNGCyxe'@; put '0pXOfjJpDUL4rxibk/KJcBetrd3Xg9r+7lCKjrVj1Grs3FzgHHTy9IpVn6bDP7kgs3Nl23DWPkjlWzzWXi0XDAMbAAFAIDsIRCJdnRZ+6bVaHlaZ+HNf2PZLBP05dccNc+DCySYyxnXLjYwQKtb3e6fZu31Bgb53qX2n4NY3jzlXpQUPKEQtC+qVhOtUSx+iBE29cvhL7kTsycU+d64/cSBj5jMY'@; put 'd802JQT6inN23sza+g25aHeyNnWQ7b1v/WQQQepXQLbJQgr9AYHej0BP57kYkX9igWY79cKV+UQCqfTavIaKUyxm3aJR5zCCaZec1bIyk4odL3Bs3jh4y8BPg+e5c+oqhvmspudCzzUxpi9SrF84edTK5lTamE1ZMga8zdf6mKo4fmK3g2L9aySs866peqMxm/alQ7eNbM/cnyD0GZBtOmAGmYBA'@; put '70QgEun6L4Vh9A7i9KZWE0P93DDuDdS49Z2GMb4FY3pkaP1cGZ9LBPkbU7U/XjdqjT+kclFdzSGC0mUIoaPtImUsNCHk3KmVazb1zpnU3WqZ/GLLkB13YSQm2j/1Wi27VFI4YWbN2iX5MlY5jg6yXbxx3AGMez/2Ws1dy0Ll02hhLIAAIJBSBBi3TF0tfJQb7BYopxYeWnme2+IzpyHEJznVko6L'@; put 'UMHWFjO+RIjOdlvKU7Ia0Jy6EYcIzl9wqIVdLlwpxPEOo9a5U0es+iKlTsyiMJnPW3nzqPt1pfQ3lCgd94UMy9PkUEuv3G9LyXP5UgO4c2X7wbhCl1d/AGEyCCMZdcwRwYpCEVUxIQQJTAIlvGTQACFEYIwwIQh3DWsQQoaucCHjCrgU5P+5M5Yxkl+7hmFkIEQEd4TYdDNJCNZzKI1/jN1fojNs'@; put 'xx/BYy/HxQWPKBMjiU/7xxK99l/8sRo4ACPnXTEhBOP2wI2gI7AI8UUkrIP62uOeutgl38visxdRtYzTSsSuwBixnJb+WK9QGbzDl/4AqsDnsnkgBktI7NsvqwiB5Lyw+0H6gMr/kKA/2r/BRsfQb073lwzIke8G50BAXsD/AnMZIM6FkJNBcIQ5978vAs0xQfJxk591jBPL4cu5wjEm/gdR/kuo'@; put '//32lz9sRVBFzjXGDS9HvCPkRCN6kVMp2adQ22e/7W2f9m/yhU/j6zWbthdo+8zeU1yyOFfTVyYyf1LZ59a1w/ZViToTIzKRErXb3RiDuT/GgvzBU7vh+ZI1Y4oN1feUSrTT7DaYzLdZI/r5U6vfXJdK27Ita97ainMwoU9SotrTDyBC1DudivN3+XBcEf2PQra9APoBAUAgYwg81DiunGraYIHE'@; put 'LynVTvWYzUe4rV1d/gD2ZIwQaCOlzkv3Voz6D9TPDY/U3LXDRxrCXOBSiqtDt5YDMdv0OY7M3xNDa+KK93GF6qfaJRGsbGaMnTe9Zs36jE2MDCiaUzdqDOe+5+xhUFKtTgqeRR73JRNPWNOaATPSpgLINm3QgmBAoPcg8KcNYw+mhFzJmfEzg7u/l4zl/rW24I26ql8yKY9DOZLBSPadV1d5KsZk'@; put 'PiVKt/hcf7IUbj5MSMEcjShzLeE7z67PazXvduDii6fVvvlSsnbkUv85bw4/liHjJZda1qVEJMFqgyzdN2XUqu9yyd54bAGyjQctaAsI5BkCd68/bQjj3ttM7v05xaojWsaseIYvCUOjroeRQf8wefTKHfH07SttZ20c5lJarMkKVa7TlMJS+7jlcYDPbP1PgV52j4uWXd5i7hjelXBbdzvV4svz'@; put 'rWzdbauHHVHo6Pe0JXzH2MfrUEtXM+659OqKV7/sjfMDyLY3eg1sBgSSRODutacNQBr/rdvYc5mmOAsjiTOs1r1MpmlFnBOkcIKpUKiOfFar6r+8gQgJJYlQWbpS8uSATfpF+XLRJUnow3afU1dTRoR5o6o4poQ2kF9a/ld/GPd3HUy3NL/b5WMZRoQQWVSku3+fTxm+5q6vGKJyx1KE0Ej7gBXq'@; put 'eI9x9supla9/lA4/pFMmkG060QXZgEAOInB3449H7vFtebJQ6z803ErWbe7d5rNaP3IpJYtVjlcRXWtr9umi3PO1QOgw/4h2Oz24WPfhZs3ArraCwQgbp1Kq/txgnmN0paAkOGyDeVp0pfzoqZX/yJuQlXS51F+Wbu2IWkzIXSp1/DBWPZKMKXHc6lL33JpvhOsU5X+1hPvELitcpfgDg7VeOqVy'@; put 'da9KfgFkG+uMhnaAQB4gML9h9CzOvdPtye+Dw/IxTx3B5E4ulNU+S2mJt3SgTK7vKFIKFK/vGou7p8oV7/8KHcyaMmrNzfab+XkAY1qHIPMte4p3ne+z2mYXav2HxKJMEq5K9L8y4Z6cT+kdF6we079NfPtakWNQly8fpuX9zKWUjL266tVeUwMYyDaWmQxtAIFejsD8908p0D3oNpN5rw5dzTZ5'@; put 'vv3IpZf/3mM6Vsg4z1QMVf6RtFT3OV7T9WiqZKbCrt4kQ24tC942DWNyta4UduwW9DQGjNQXmGZdNmN4+Hq6vWn8QVtvXV8xULXIEwrRTrLbzzn/XKHKL3vLChfItjfOPrAZEIgDgVliFnE1rHxUIY5f2buZzNOmEsftPs7vvaG2fk8cIqFpBhGYW1+9n8fY9WenWjxGpc6CaKoxIm9iRn+dT0lG'@; put '5EUytZU9qquFZ9nTX7b4tn9VqA84a3rV2vei4ZLtz4Fss+0B0A8IpBEBeQ54z1unX8K5+RATnYXtPWbTdxjR64zR7zw+C8ukGPDKdQRk/VyfaH3QoRRVRrs13uT99jOXs/yM6yrX97qLRJH8MOuD72uFu0vGc4xuV4jWUeu71dj5ta4UnHVdzVsbc9mHQLa57B2wDRBIEoGFDbXnG9z3Z406i2yi'@; put '3uXCvGpGdePbSYqH7hlGwF8/t3jvxabV+sf/b+/M46Oqzj5+lrvMloSEHbVaW1srVqwEkswkmMgmuFYL1drW2triAoEEBKy+bbq4QIAkIChql7eLWql1QUDCkpA9CO5Lbat1X1izzXKXc87bG3rzxoBCktnnmX9aP3PP8/ye77nkN3fmnPO4lazRn5c+qLe/Icuuixb7mt6MssyIpitvyPuOQOLB'@; put '3l2VOGevYkZmLDw/fltAgtlG9LaA4EAgdgQqG3xf1bjZIEuOYbYKzez6J6Xq7MW+phdipwwyD5ZAeaN3BGOhhQKROb1Xf/eNa3LjTSKUHywqqG0YbM54Gr+sIW8uQWQlJVLPsZcycTwhDpGrimdu+f+vcOJINJhtHE0GSAEC4SKwtqbQ00X9z8iSy2fHZJx9LLj5rcWTWhrDlQfixJbA8l05Z2gi'@; put 'cL9Tzijo28rPVtalH/zALQ37VrId71je4LNO31r0//e3qTultGvn5j7zSGxn5djZwWzjcVZAExAYJIGKpsk3C2TeY4exjlAkmF5f4q357SBDw/A4JFBen/fN/zQi+QXF0llHGsZ8+hU02g845IybFnp3bYhD+QOSVL51mttwHNjmkNPy7AAydf2TYDzp5ombPx5Q0AgOArONIFwIDQRiQWBdfX5m'@; put 'F2bPSUQ5zc4fNNsbnJJzWjLtwYwF23jOaS0gSjs87JsyVctNoZ/SV2unvv9dtxgxflFR8mwLKq/LOcdEvFaVXJl2vQ7qufOmnE23xdtcgdnG24yAHiAwSAKrm6f/1BShO+wwBElvc8Smlnpr/zXI0DA8AQisrisYHqLmbYLz62Xq6N4qZPWJJFj5M22Tfxyvv2kOFO2KxvxfEUxvt8ebTDukyO6z'@; put '4q1pAZjtQGcYxgGBOCRwT+MFp3aa7Y2q7OnumiIEZ0yYSxfnN6+IQ7kgKYIEVjXlnUSxa5nOQrMwwnWmw/Gtpdnb2yOYMiahVzVdcJJutr9in9HNuKkTpHxzYX7N5pgI+oykYLbxNBugBQgMksC61otLQ6xzpR0moLe95VJcE0q9zYcGGRqGJyAB66tl10HXBKHQd5bktr6fgCWckOTyeu8zlMrT'@; put '7YvdcuZv50x44kcnNDhKF4HZRgk0pAECkSawqinPiZGzViDW0ynFYMFlSwp2L410bogPBGJJoLJx0iSOUS1CuNvT3PLQfyHckT0njp7kwWxjeYdAbiAQRgJ3tk4cSjT+uiK5h1thGdc1hHH2Lb6mV8KYBkIBgbgjYP1OHUChN5T/LpQyuRZQkPO8Bfk1b8SLWDDbeJkJ0AEEBkmgvKXgHG5oTfb5'@; put 'uX790IcOOe0bt/ia9g0yNAwHAnFNYP2eS1y6abxo8OCXLaHWVjeJKFfNz9v+aLwIB7ONl5kAHUBgkASqmqcuZkJf1hMG06dL83ZeMsiwMBwIxD0B6wzwe/dc+kDIaO/5ndYhpd1708Snb4oX8WC28TIToAMIDILA+j3jZc5OfiLI2mZaYbjgDBF6w6K82gcHERaGAoGEIVDZMmUp58ZdtuDhzi/W'@; put 'mW1vT78uTG0jBwsCzHawBGE8EIgDAla/Wt7Z8cp/Goh3H2Rhcj2kIMe58fSbVRxgAglJTKCycdokjrVddolOacghZJCv3eh7PC5+RgGzTeKbD0pLHQLWWcjO9JNebtPe7zZba3EUQ2T80vzGV1OHAlSaygTWNEwd4xdtryvUlf7fD5xBj5p19k0TNr0VD1zAbONhFkADEBgkgdUtM9Iplv6usY7u'@; put 'tmvWky2j4mu35rW8PcjQMBwIJASBVU3TsyQiXja5NsYSjJGkUypNKc7ZWh8PBYDZxsMsgAYgMEgC6/dMyQga+A0u9JG22QpEvrQkv/HDQYaG4UAgIQhYK5IRkpv8+sFxtmBVSr/u5okbfx8PBYDZxsMsgAYgMEgC1pOtSh2v+41D3Z/qrSdbWdCxJQUNcfEV2iDLg+FA4LgEyl6dpWR2tD/GhHax'@; put 'fXG6MvrX12c/8j/HHRyFC8BsowAZUgCBSBNY1uBLk4n8GkLiZCsX44amSNLX5+fW/TPSuSE+EIgXAlUtU+/8z3qFW209Q92nP3ntuN9dHg/6wGzjYRZAAxAYJIGymkLHUKej0eDB86xQXJgGQerFpb6d1YMMDcOBQMIQqGiefI0Q5p9swVnO017xK4G8m8du6Ip1EWC2sZ4ByA8EwkRgXevF60Ks'@; put '80Y7nISVlcV52xaFKTyEAQJxT2Bl0ySvEKKOYEItsUMcJ30SMIJj5+Y8fjDW4sFsYz0DkB8IhInA2taLfqSxrp5DLDAiL5V4a3oWi4QpDYQBAnFLoKI+/3QNac/b238cNL2LUvkrc7L/9lGsRYPZxnoGID8QCBOB8gbfbILJwxgT0v1VMjeDArtPu8VXHReb+sNUJoQBAp9JYEXN+GEaYX93yhlD'@; put 'rYswokFVdsbFXlswW7hxgUCSELD2GcqYvGaIQPf2Hy6YSTCaXepteDxJSoQygMDnErBW5ROMX9KZ/9Qj/wZMQ6LuixbkVm+LNTow21jPAOQHAmEi8LuaQsd+SauXqJJth1Soa83cnC3FYUoBYYBAXBOw9tp2am0vE0xOtz9wuqWhs2/MeTLmHzjBbOP61gFxQKB/BFY1Tb4QIXOLPSpotH/icI6Y'@; put 'sHBi9Xv9iwRXA4HEJHBv62V/CLK279nq3fKw++dMeGxOrKsBs431DEB+IBBGAtYZyaZDbmVCP8sKK5AQElbL5+dtWxLGNBAKCMQtgarmaWVMaD+3BY50f23HNePumxJrwWC2sZ4ByA8EwkygovH8xQKjnr62JtcCijrkvAUTnnkjzKkgHBCIOwKrm6ZPNFGo1RZGCG1zSu6T5mRvDMRSLJhtLOlD'@; put 'biAQAQLr6vMzkZLZGmIdZ9jhJeKoDZpdly7Jb+yMQEoICQTihkBFc4FPCNJgCxrh/krnoWDg5OLcP3fEUiSYbSzpQ24gECECK5uKbsWI32mHF0IImaq/Ks7d1vP1WoRSQ1ggEFMCFXUFozUUfE2R3EMsIYwbwaHKF776w4mPxHTdAphtTG8LSA4EIkPAaiaPuwKPE0yn2hkoVvxCiCsXeLdvjUxW'@; put 'iAoEYk+goqZwiDtt+PNd+r7/9nY2dCyYd1FB695YqgOzjSV9yA0EIkhg+e7CUUbw8EtOechwO43fOPyuU86avshb+/cIpobQQCBmBKy9tkHj4CsydZ5y5MnW1CmSfaX5tXtiJqr7gA14AQEgkLQEltXnfE+mjj98qkCBXsYIf7/EV/tC0hYOhaUsAWu/ecDp2qhxf/cKZCE4l6lrYXHu1spYQgGz'@; put 'jSV9yA0EIkzA2ncrhP4ExkTtnUqhnhcpkX9yQ/YTz2KMRIRlQHggEFUClc1T7+ZC79nulqaM+OuPszfMiqqIPsnAbGNJuzpOogAAIABJREFUH3IDgQgQsNrtpcvG2YQ4vxMwDv/AIXsyj5UmZHT826WOvHxB7jMvRUAGhAQCMSOwumnG+SYK1NoChOBvd+r0jLKiWjNWosBsY0Ue8gKBCBAob/SO'@; put 'YJzdi5GYJlOn51gpDBbsUojnQ4LpFs3Q1i4+HxrMR2AqIGQMCSxvyJkpEccmW0KaMvqg3vnxaTcX1casry2YbQxvCEgNBMJJYEXj+RM40u+TsNLdQL73y+RaECP6Bsb0Mcz5RhOLt2DPbTjpQ6x4IrB816QzOAnuVagrzdJl3f8SyTi51Lv1UKx0gtnGijzkBQJhIiAEwhUN518c5O2/ccoZPSuP'@; put 'j/yR0UMSdTzMuXZvl6q9Wpa9N6an6ISpZAgDBD6XgHWwS4iS1xHC3R2wGDc0WeCvLChofDdW6MBsY0Ue8gKBMBCwjLa8yXst50aV3TDbCmsdYvGf32vfVqnntsUFzQ+HIRWEAAIJQ2BZgy/NZP6XnHJGz15bB/GMm+etjtmWNzDbhLl9QCgQOJpARUPRFZro+l1vo2Xc0AmWH2IyvnXxxNqPgRsQ'@; put 'SDUCZa/OUkYH+B/8xoFv99SO6a9L83b+T6xYgNnGijzkBQKDJLCq8YJpOmv/iyJ5uo+ls14GC/kl4rxhoa/2T4MMD8OBQEITWLt7ZqVm+ufbRcjEvWle7uaLY1UUmG2syENeIDAIAiuaCs8M6gd3upWs0XYYnQW7kOA/XjppzyODCA1DgUBSEKhsnlzMhVllF5PpOHn3def9OSdWxYHZxoo85AUC'@; put 'AyRw954pGVIo+BQh0iQ7hGb621XivqQ0f1f9AMPCMCCQVARWNRZdhjB/wi4qQx39jinYuDnZG9pjUSiYbSyoQ04gMAgClU0X3MWEuRhjTKww1kpLhsz5S/N3rx9EWBgKBJKKwIqWwnxJ0Houjpxj4ZSGhJDJvnyj9+kPYlEomG0sqENOIDBAApUNRV/tYodqXfKQUXYIxvW/nfrhybNnz97ABhgW'@; put 'hgGBpCNQ8ezk07GJnufCTLeK48I03MqQ826csOmVWBQLZhsL6pATCAyQwJrmC8sMEezpSWuw0FuYqxfCKVADBArDkpZAxfOXD3Ex/IpfP3TSEbNlpoN6Lpub+8zmWBQNZhsL6pATCAyAwIr6/PEa79zklId0b9Q3ua6pkusH83N3wIKoAfCEIclNYP2eS1y6aTQZPDjOqtTaey4Reen8vB3LY1E5'@; put 'mG0sqENOIDAAAqubp91uCu1X9tAu/cBrTpkW3eJ7ad8AwsEQIJDUBNbvGS9z/oUHguaha+1C3XLW+jkTHr8hFoWD2caCOuQEAv0ksK7+okyuiFqd+c+xhloHV0hYuabEV/vXfoaCy4FAyhCobL7gV//5+vh2u+Asxxc3/uC8318aCwBgtrGgDjmBQD8JVLZMudIwgw9RIinWUM3s+pAQx4Ql+Y0f'@; put '9jMUXA4EUoZARfPka4Qwew54yVJPeYUFO7w/yn+qM9oQwGyjTRzyAYEBELhn98X36GbnzfZQUxgPZ6jatXOy9xoDCAdDgEBKEKhsLspBCLdwcWShvkvK2icM9PUbfY9H/acXMNuUuOWgyEQmsH7PlAzNoC2mCJ1p1WG1C+OM/WDp+c8+msh1gXYgEGkCFXUFo3WsvyJTR5aVy9r+QxXHmSUTdrwV'@; put '6dx944PZRps45AMC/SRQ0Vx4mmZ2vaBQd4Y11K8f+sgphp6zqKj2QD9DweVAIKUIrK0p9Phl7WWJKN3df6ztP4rkvqA4Z2vUT1oDs02pWw+KTUQClY2TJunC2CoRxWHpZ9x8lhJ+fqm3OZiI9YBmIBAtAqs3z1Cdw92bOo39k62cQgiuSmk/nZuzaVm0NNh5wGyjTRzyAYF+Eihv9H6XYvmP9jCF'@; put 'ev46N2fTrH6GgcuBQMoRKBNlZOSzz1cEzbZiu3iPMuL3P8necF20YYDZRps45AMC/SRQ1Tz1eib0B+xhEpE3FOdun93PMHA5EEhJAn3//WSoo5t+NP4RX7RhgNlGmzjkAwL9JFDVMmUR40a5PUym7j/My9ncs1G/n+HgciCQUgQqWyZP5dystotOV0a8fX32hi9GGwKYbbSJQz4g0E8Clc2Tf8qF'@; put 'eYc9zCGlPXjTxKd/3M8wcDkQSEkCK+p9+YRKPQuiMh2nfcIDh8+I9l5bMNuUvP2g6EQiUNU8uZQJc6WtWaFpDx3wOK8rG7tBT6Q6QCsQiAUBazW/yYyXKZE8Vn5rRbJE1ZMX5O74JJp6wGyjSRtyAYEBEChv8P0IIbTOPj0qTR65sdMQ3y71boDVyAPgCUNSi0BFTeGQIG1/0yGlH9lryzmThHr6'@; put 'goLt70aTBJhtNGlDLiAwAAIrmgrPNJm/VaGu7r6cmtn1nioNO7fUu/XQAMLBECCQUgRWNeU5kVAaEEbnWYULwTnF0swF3pqt0QQBZhtN2pALCAyAwPLdhaOEFnpZpuowa7hudrXJ2JmzsKDhHwMIB0OAQEoRePTRWfSTL3StNHhgfrfZou5We3fPz93x02iCALONJm3IBQQGQMDq+CMU3KqxzjOs'@; put '4SbXQ5TQWQu9DU8PIBwMAQIpR6CiqXCRQKJnRb9LHva3GyY8dmU0QYDZRpM25AICAyBgNcEOGoGtXJj59nDO2PJFBQ1LBhAOhgCBlCOwoiH3GkLUnu4/QxwntfzwvIfyogkCzDaatCEXEBgggYrmwp8LIcrs4U4pY1fI33F5SVFt2wBDwjAgkDIEKuunfMHA/n9QoqhW0ZrZtS/LNWbsnOyNUTtf'@; put 'HMw2ZW43KDSRCVS1TBsfNDp2KlTtXiSls0CHiw65tNi7bVci1wXagUA0CKxo9J7KOHtepo5MK1+GOiakmV1X35Sz8Ylo5LdygNlGizTkAQKDILCswZfm1/Y/PcQ5epIdRiHO1QeCoYVlRbXmIELDUCCQ9ASsFckBw/+WS84cZRers2CHRx66kuvo3uJJW/ZHGgKYbaQJQ3wgECYCFc1FPs30b1Go'@; put 'M80KGTI7Djllz9SSvPrnwpQCwgCBpCRQVlMouSX9aUrl6X0LDBiHPnJKGStkajxYnNvaESkAYLaRIgtxgUCYCVTUnDvkEO+qzXSeNM4OLRPXAweDwZvg6TbMsCFc0hFY1uD7qma0/a8qeb4uU4erb4EhM7DbLWWWHNb058qKakPhBgBmG26iEA8IRJDAquai2SYL/l4iqtNKYzAtoMqe7y/I3f5Y'@; put 'BNNCaCCQFASEQLiy6fzcgNmxzimnjUMIH+WBQaOzziFnLSjN2/4CxkiEq3Aw23CRhDhAIAoErKPn2sXH29MdI8fb6QiSXpKEuHSub+c7UZAAKYBAwhO4s3XiUKpL18tEni+wGIX7mK5K0w5yod+vSfqqRdm1YVmxDGab8LcNFJBqBJY3F/iYEdysSu7ulcndLy4andhxxY2+6n2pxgPqBQIDJWCt'@; put 'UuYC3Y6Q+K5EFEffOARLbxMk3am5xEO3jKv2DzSPNQ7MdjD0YCwQiBGB5fV590hUubl3eoW6/0h0PP+mgk2HYyQL0gKBhCSwqsE31m+2/9YlZ03A+Oivlk2m7VXl9DnFOdXPDfSrZTDbhLw1QHSqE7h7z/iMYEdXdYZj1ESbhXXmqyp5fm/4A6Vw2EWq3yFQ/0AI3N0wYTbm9A5ZUr/cd7wQgsvU'@; put '+RfMxS/neav/3t/4YLb9JQbXA4E4IXDH9pyRskqelqiS3WO4QgiFurYZXP9hqXfnB3EiFWQAgYQhsLolJz1o4FKM0WJ7IWJv8ToLdqYpQ1czDVX1Z38umG3C3AIgFAgcTWBZg2+MX/9kxxDHSWf2fjdotr/pVob9YEHu9gbgBgSAQP8JLN816Qwi4V8KYV5h95Lu/aGWEvkdgpQ7TdH2p1Jv83F7'@; put 'S4PZ9n8OYAQQiCsCdzXlfZky8YhE1Z4VypZAg4X8quR+lGD+s+Lc2vfjSjSIAQIJQMBqz/fvMe9dJGHldozxhL6SueAsUx29q0Pft6bEW/u5Rz+C2SbAhINEIHA8AtZWBjMU/ItHzprc99qQ2XXIIw//BaWhR2+eWPvx8WLB+0AACHyaQFlNocMta1dwwctk6uhuddn7xbihOaS0pwRGdxTnbH3x'@; put 'WPzAbOGuAgJJQuDuPVMy0oXrzyGj/aK+JVmLpzTTf3iE60sPBFnb+nk51f9OkrKhDCAQNQJrawo9IUVcTTD5lUB8ZN/E1rdJDinjcS6xn5dM2PFW7/fBbKM2TZAICESWwL3PXjyRmWyDLgJf+LxMlCgvOCQyc0721o8iqwiiA4HkJLCqKe/LHaHDD7iUzNxj7c8VAv3dqaSXhgy9tdS79ZBFAcw2'@; put 'Oe8FqCqFCKyrvyjTkMylQfPwjXaTgr7l62ZXm0RdBxXq/JtA4oH5udv+mUKIoFQgEHYCR37P/fAbutm+1q0M7dmCZycyuR7EiP7DrWTOv2nixl1gtmGfAggIBKJHoKJxch7GaC1H5jeO+upYCCFT9V1TmPcLKv/RQ9SDc7I3BqKnDjIBgeQnsH7PeFeX5rkGI/4zhMnJfSt2ShlbjZDxPTDb5L8X'@; put 'oMIkJVDVMnWmg6bf5zcOnNK7ROsTdZoy8pWAceARJ0e/u6mgAU6UStJ7AMqKHwIVe6aPdiPPti79wFhbFRa4y6mkffeGCRufBLONn7kCJUDghAmsaZ56qd9s+4NCXRm9B+lm4DVC5RJHe8au4plbtBMOCBcCASAwKAKrm6ZPDPH2Gomo3e37uGDMIaeXzZ24+dfWf4PZDgovDAYC0SdQ0Vh0kcY7'@; put '/6xQd4/RWvv9OGIbXZLz+rk5Ow5GXxVkBAKpS8DaGuSS/Fsk6iq0KXDB3zZV9dyl2dvbwWxT996AyhOUQFXjtLO7zE+2O+UhPdsOdBbskqjjDqXNXQFPswk6sSA7oQlUtUwv0sz2TfbxjlwwUyaO0vl529f0fKWc0BWCeCCQQgRW7CkcxkKhapmoPYuhrH19hMjzbvE1/C6FUECpQCBuCNzbOG2E'@; put 'gdlOE5k9v9VKxPmkyduv7n2MI3yNHDdTBkKAwGcTEALhe1ovXG7w4CL7KiE4Rwj/cqGv7hfADggAgdgQqGgqukcg3tPuEgsSoJjmF3u3P99bEZhtbOYHsgKBfhFY2TC5yBSdT8rUmWYPlInz/oPB0PyyotpQv4LBxUAACISFQHnjtBEeSdkbZJ09W34k4niiOHfrN/smALMNC3IIAgQiR6D7iDhV'@; put 'bMIITbKzdGr73nHTYTMXTap/LXKZITIQAAKfR2Bt68WLNda5zL7G2uojMPeWeuteBrOFewcIJBiBiqbJlxs88LB9LJzOAh2EyLMW+5qqE6wUkAsEkoZAeeOkCwzm3+CQPFlWUdaiKFVy3zYvZ+vyYxUJT7ZJM/VQSDISWNWU55RJ5lMG90+x6+OCP7HQW38FxkgkY81QExCIdwLWVp8sp/KwybXL'@; put 'ba2Ms39LhnReSVFtG5htvM8g6AMCfQisaio432D6Jpk63NZb1ulQBCmXLcrftQ1gAQEgEBsCVS2TrzKY9keCqWQpYNw0JCLNLfHuuv+zFMGTbWzmCrICgRMiUNU87TYmtO4TaI78ozb+JRnKhM/69HxCQeEiIAAEBkxg5e5pp8icbzO58VU7iEKdG2W6/8o52XsNMNsBo4WBQCA2BH5XU+g4JPPt'@; put 'mGCfrYAIcucCX81tsVEEWYEAEKhsumANR2xuDwmBOglRpy7Iq279PDrwZAv3DhCIUwIV9ZNPZ1jbQwjNtCTqLNCpUMeUUm/97jiVDLKAQFITWN0y4yyZyNuCZvuYXh+A/zLmg2HXzJ69gYHZJvX0Q3HJSmBZo/c6LMS6nlXIRugDQeSv3wpdfJJ1yqGuOCawfs942WQjH9SY//u2TJNpn2DimHKL'@; put 'r/aV40mHJ9vjEYL3gUCMCNy3+5JFfqPtbowJtSRwzjYqHWmz4PzjGE0IpE1pAlVN07xBdniLQl3p3f8eBTMl4lq8IK+64kTAgNmeCCW4BgjEgMDKxvydGNMiOzUV8uXzfdufjIEUSAkEUprA6s0zVGko/WuIdV7c81QrjH96OMk50X7RYLYpfQtB8fFKoHzrNDfxaI0Yo3GWRpNrAUqU/IXeuk+d'@; put 'txqv+kEXEEgmAlWt067Vja71lMjqkada0yCC3liaX/ebE60TzPZEScF1QCCKBKxP0n73vlpV9uRaaRk3dAk7C0t8O5qjKANSAYGUJ1DZMnkk4mIHR6ynq49MnE8ZvP2q3l19jgcKzPZ4hOB9IBAjAmtaZ6wxWKBni4EQ4vaFvro7YiQH0gKBlCRwT/OFpboIrrSLF5y3YSJPL/Xu7NeuADDblLx9'@; put 'oOhEILCmdfqvDRbq2VMrEUdlce7WkkTQDhqBQDIQuKd15lcwwtUa6zrVrocgeYNTOXzN5x1gcazawWyT4Y6AGpKSQEVz4c+FEGV2cW45a/2cCY/fkJTFQlFAIM4IWD2kVzblbySYXmRLM5m+jyLHtIUFNS/2Vy6YbX+JwfVAIEoEVjYWfJcL9qC9KMMjDd8p+w9cdB30r43SDECaVCawumVKbtDo'@; put '3G6fSy6EEDJWSou92ysHwgXMdiDUYAwQiAKB5XUFPoH1apk6XFa6dGXUOwzxcXOyN7RHIT2kAAIpTeCe3TOe1M3ApTYEnYVeV02nd6DnkoPZpvTtBMXHM4EVjd5TTa6/pFB39yZ6gwXbZeoZW+rd+UE86wZtQCDRCVQ2T/62wQK/p0Rx9NQi0A9Lfbt+N9DawGwHSg7GAYEIE1hXn59pSM43mNCH'@; put 'W6msr7Ewki4s9e2EpvERZg/hU5fAPa2ThxqM1Qgkvm5TUGnaZoniWXOyNwYGSgbMdqDkYBwQiAKBquZp1UxoU+1UElFWFuduWxSF1JACCKQkgTXN00p0HlqBMSbdAATqlIkyY17etsbBAAGzHQw9GAsEIkygsmn6XI5Ca+w0CnW/6DfaC5bkN3ZGODWEBwIpR8DqtBXgh1qdcvqwng+4WPnbofQh'@; put 'V5eN3aAPBgiY7WDowVggEGECVY2FZwd5V4NC3RlWKoMFuxx0yPT53uqmCKeG8EAg5QhUtUz5DePGD+3CGTMOSJJjeknezucGCwPMdrAEYTwQiCCBsppCaYQ7408hs+3bPX8AuFmd7sj65mB+P4qgZAgNBBKSgLXVJ2C0b7W7+lhFqJL71psmbF6GMRKDLQrMdrAEYTwQiDCBVQ2TfsQxu5dgSbZS'@; put 'aaa/PUMZNumm3GdeinBqCA8EUobAsvqJ9TJ15vf6UPsvD3b7bvRV7wsHBDDbcFCEGEAgggSsVclcSd+pM/+5PX8IkLllmCZfAQdcRBA8hE4ZAhXNUwpNFnjGPkCGcVOnVJ1fmrfzvnBBALMNF0mIAwQiSKCiuaiUcWMZwVSy0jBuaAp1fX9+3vZHI5gWQgOBpCewum7GcJMGtiKMvmEXK2PX04Zo'@; put 'm92frj7HAwVmezxC8D4QiAMC6/eMd/k1z9MIo55m8n790EcuxfOthd5mWCwVB3MEEhKTwNqWC5eGmP8OjEn3Vh+rqw9CdMbC/NqWcFYEZhtOmhALCESQQHl9fo7OuzY65YzuQy6sF8XSiyY1Llk4se69CKaG0EAgKQks3104Sg8efsElDxlpFyghecMhzfxOWVGtGc6iwWzDSRNiAYEIE6hsmXKl'@; put 'yUKP2F8nW+lMpj+HufytW86v+3eE00N4IJBUBNa0Tl2sm9pd9gEWJtP2SVSZUuqteznchYLZhpsoxAMCESRQ9uosxXn4/T/KRJndOw1Byh5dsKsW+3a+GcH0EBoIJA2BypbJ5wT0thqH5Mmyi5KpY8m8nK3LI1EkmG0kqEJMIBBBAssafGkCmU8rxDGpd5oO/ZO30qVR3y7x1e4Nx77ACJYAoYFA'@; put 'zAncXZ+9U6HunjUQjJtvojT3uFvGVfsjIQ7MNhJUISYQiDCBu/dMyZBCob8SQqf0TmWtUqZEXoeQ49el3q2HIiwDwgOBhCRgHWBhML0JY9ztgVaTD4LpDSXemvsjVRCYbaTIQlwgEGEC5Vunubmz7VFZcs7smypotL/llrKuW+DbWRdhGRAeCCQUgdV1BcOZRLYLhM6xhTto2tZ9Huelgz3/+PNA'@; put 'gNkm1G0CYoHApwms3jxDDbgPlCCCb1Oo09P7XSE4o1ja9p+9DD9b4Nv1LLADAqlOQAiEK5oKKxAW83tYCNyFEZ1W4tvRHEk+YLaRpAuxgUCUCCyvyz3vsPbhg8PdX+zZmG+n7j4NhyhPCEletHBiNWwRitKcQJr4I7B2d+EoJFy7NeY/xVaHkfzoSe9nfmf27A0skorBbCNJF2IDgSgSKHv1LMV5'@; put 'OP1ik4Xu670X15Zgci1AkLyBK3Tp4om1H0dRGqQCAjEnYD3V3rvnkltDRscdPR9EmbEfU2XSIm/t3yMtEMw20oQhPhCIMoHKlpyRXaHQgy5lyMXHSh0yO99Jk4YtIJq+/eai2q4oy4N0QCAmBCqaC6cYTNsoEcVhC5CxWjovr7oiGoLAbKNBGXIAgSgTsD7FVzUWfcUkxv8SRHP6pmfcNIJG2z/S'@; put 'naNK2nJ27CjDiEdZIqQDAlEjsH7PeNlko57QWFfPYsJIb/XpWxyYbdSmGxIBgegTWFtT6OmS/SWMm/MdUvrQo01X12Ti3oIJXnw4x/dmGS4D043+NEHGCBOobJ78bZOH/mi3qfzvVp/rS7w1v41w6p7wYLbRIg15gEAMCdzZOnGobKhLTR78sSq5M/pK0VmgQyGOJxGWby317vwghlIhNRAIK4E1'@; put 'DVPHcCp2MGGcaQdWiXvL/jT35ZHc6gNPtmGdRggGBBKLwN0NE8aqJL3Y4P7vSUR19lU/xHHKv7r0g/cFTfn+JflPdSZWdaAWCHyaQJkoI0Oa66o4YnPtdzAifozR5AV5Na3R5AVPttGkDbmAQJwQWNVUcD5CZJUQ4lz7EPbe0hTqrkPY/J8Dfr0p3N1P4gQByEgBAqsbZ3xJluW6oNk+xi6XYvWx'@; put '+XnV34p2+WC20SYO+YBAnBDoPoHK3XldmjJsccjs6Nl32OsJIOhWsv5imv6Km3KfeSlOZIMMIHBCBKyn2qHNTfcaSPuJPYBzdljG0qT5vtpXTihIGC8Csw0jTAgFBBKRgHXOsqqJn+m88ydyn1OorHo45wcdkms1wubauTk7DiZijaA59QisaZ2a7dfbdijUlW5VL4TgMnUuLs7dujIWNMBsY0Ed'@; put 'cgKBOCRwd4NvrEfKWBQ0266mRFb7SsxQxvyjXf9oHULa/aXe5mAclgCSgEA3gVVNeU6ZZm4wmP8iG4nBjH8Ip2vi0uzt7bHABGYbC+qQEwjEMYGVDecXISyWCyS+QTChfaUqxNNoIm1pW9Bsgd9z43giU1haVeu0axnTft/z9bEwDSLoj0vz6/43VljAbGNFHvICgTgnsKr5/Etk7Fxh8OBX+krl'@; put 'ghkSkbdxwZaW5NW9Av1z43wyU0jePa2ThzKO6pkwv2aXLRPHU/Nyt14WSwxgtrGkD7mBQJwTKH9xmpv4g7eZTJt3rN9zMSJBgukyJuga6J8b55OZIvJWN19YbIpglV0uFiQgMC4q9e7cHUsEYLaxpA+5gUCCEFjW4BuDEL9fIvJMjI403O79MljoY5mqd5d663r+yCVIaSAziQhUtUw9Q8bqjhDr'@; put '7FldT5Hy1/nebbNiXSaYbaxnAPIDgQQhYJ23fHfDhMma3rYu3TnmjL6yrSPwVMndojNtQayfIhIEKcgMIwGrt7OW3vUEJeTCnrACdSJB8krza14NY6oBhQKzHRA2GAQEUpdAWU2hpNLgZQbvqvAow47an2v1z5Ww8jhiZknJpPqPUpcUVB5NAquaLpios67tCnWm2XkV6lw8N+eZ8mjq+KxcYLbx'@; put 'MAugAQgkIIFlDb40wULzEcG3KNTdvZfx0y/sJ5jeGZLx2lhtt0hArCB5AATKagodWU7HIyYP9iyCYpz9W+VpOcWTtuwfQMiwDwGzDTtSCAgEUovA8prCUSFy6D6PnHnM1Z5+/fA/3UpWcUdebTW08kuteyNa1R7p6qP9iWAqWTkZN3QJKTeX5Nc+GC0Nx8sDZns8QvA+EAACxyVg/Z5b3jgxHyO5'@; put 'nBLpGP1zDV2hzjqB+O3zc2t2w1ah4yKFC06QwLr6/EydKg0csbPsIRJ1blTp/ivnZO81TjBMxC8Ds404YkgABFKHwJFFKh2XhcyOCreS1XP4u03A5FqAIvlvskRvLc6tfT91yEClkSJQ1TJ1vsFCK3sOYBG4kxA8NdpdfY5XH5jt8QjB+0AACPSbwF31+ZkE6QsFEvPss2l7B2HcOKSQtLWGoq1e'@; put 'lF17oN8JYAAQQAhVNBee1qUdaHArQ0+ygVhdfQ6H9Kvi7XQzMFu4ZYEAEIgYAWt/rma236dS92SZOlx9EwWNjn+nKyMXBFhnzZL8RuifG7GZSM7Aq5oK70VI3GBXZ5ihjyXsunBhQc2L8VYxmG28zQjoAQJJSKCiPv90Hem/lYhagDEhfUvs0g6+7paH3nzKhyPqZs/ewJIQAZQUZgKVzUU5QaNz'@; put 'qyq5M6zQXHCmUNeSWHX1OV55YLbHIwTvAwEgEDYCyxt839bMjlWf8XtukCD5b5TS2096b/h7YLphw550gcpePUtRDzq3qJLnArs4LsTbbuTIudFXvS8eCwazjcdZAU1AIIkJdP+eK4xbEBbFMnW6+5aqm/42SuTHEE776S1x+ocziacnIUqrapo6WeNdGyWiOI881ZoGxcrcEm/N/fFaAJhtvM4M'@; put '6AICSU7grvqc8RixcooV77H657rkzBd0pi1JCwbrriuqDSU5DijvBAms2FM4jBpouxBinD1EJu5NBj88K577LIPZnuAEw2VAAAhEhkB5o/cCiuVyIfi5x/o9V5XSmgyk3zrm7YxG+Go5MnOQSFHXtMxYZPDA/x/BKEQHEvLFpfk76uO5DjDbeJ4d0AYEUoSAddyeW9ZuSFNHLQkYh0b1LZsgSVel'@; put '9IeDKFBeMmHra3AoRorcGH3KXNZSeLLCjMD4AAALhklEQVQW2t/U+0xuq6sPbpO+WzxzixbPVMBs43l2QBsQSDECa2sKPSFF/I9ArNQ+eq83AoIkTSbOCo0b5dA/N8VuDoRQZfPUn3Kh32FXbjLtE4qk6QsLGuJuq0/f2QGzTb37FSoGAnFPYNmu3K+5HVm3a2bX1Rgf3T830/mFN7u0g2vm5W6G'@; put '/rlxP5vhEVjVMm180Di8Q6Gu7q0+CAlBiVoyP3dbQtwDYLbhuQ8gChAAAmEmYJ23XNU0qQARaS0X7Oy+4a3+uS4la69p+hfMy9vWGOb0EC7OCNxVl12jSu5CW5YQ4l1Vks+bm7PjYJxJPaYcMNtEmCXQCARSmMCqpjwnE+LHHnnELUGz/eS+KAiSdbeS9YhfdNy5YMIzb6QwqqQtfXXr5IKQ4d8q'@; put 'EbV7q4/J9RDFSvFC364HEqVoMNtEmSnQCQRSnMDqlpx0zZAXM6TPV6jT0xcHRiQoEccKoaM18dLDNMWnLCzlW119ggRvx5icZwdUafozEkVXzsneGAhLkigEAbONAmRIAQSAQPgIVLbkjNQN8YBEnZccK6rOAh0Sdi0zHTI0rQ8f9phFsrr6mCy0yt4WhhHxYyHPXOCrrouZqAEkBrMdADQYAgSA'@; put 'QGwJWL/nLqufODNotlVmOEZ/+VhqVOp5nXHjDhrSn7y5qLYrtooh+0AIlDdOG6EQvosJ40x7vEKdG92B0OxEO+gEzHYgdwCMAQJAIC4IdP+ey9iFIRZc51ayjtqfa4nk3HxepWmlI99Lq4dDMeJi2k5YxLrWi5YEzY477adaxoz9MlIvWVBQ03rCQeLkQjDbOJkIkAEEgMDACayoGT+sU3RVOSXP'@; put 'TEXyDOkb6b8LaqpV2fHToCrevmVctX/g2WBkNAgsb/AVcB56qvd8SsSx6FBOXkUZLuPR0BDOHGC24aQJsYAAEIgpgYq6gtFdon2FTByXHmsRlWW6JtdedytDbw+ZgXrooRvT6frc5FXNU/7KhHGlfZHJ2VuyIY0vKapti1/Vn60MzDYRZw00AwEg8LkE7t6V93VMxW1CsJkKdaX1vZhxU8eE/Atj'@; put '6TcKkx4Z+eGQT+Ar5vi5qVa3TMnVzECt3aCCcdOQSHx39TkePTDb4xGC94EAEEhYAlbT+k7WVqlS9wUydRzVzs8qLGR2HFJp2haKXFWyHnodFlPFdrorWyaP5MzcijDq6eqjUs8zGjt0RTx39TkeNTDb4xGC94EAEEh4Aivqcs5iGC3igl2hSu7/Hvf36bKsnqgESW9hgh8mWH5Id+IP4bfd6E/9'@; put 'qqYL1iDE5tqZKZI1KkTRXN+O5uirCV9GMNvwsYRIQAAIxDmBZQ2+MUwEf4YFvkqVPMc0XasELphpMv0dh5z2W0rowwpVP0mUAxTW7xkvK51pNICGS1LaYerXHR5V0ok9NViTu0yZM1WSTIQ+NDLfOp3Hy1foFc0XnuakanPAbOtZWW5t9ZHp/ivnZO814vz2+lx5YLaJPHugHQgAgQERuLN14lBq'@; put '8O9xjn5CifxFiSiOzwrEBWecm++7lMxtIda5iZquVpdLabeMKtoGUCbKyOi9G6llpgeyFCoHmYdil4th7RTM8akYo7EuKeNUk7HTTB4cFTQ73IzrMsLCMtvuv/dCCO6WMzWMSGe6Y9TrGvd/4Nf3v0q5a7OJ2z48+f2T9ViZ7z0tM36j88AP7bng3DyIhDJ9UUHN3gFNdBwNArONo8kAKUAACESf'@; put 'QHldwTkMB39BsDxdIkr32buf97IaIBg89PEQx+iXQ2Zgl0zlzQiZBw3OdM4DHW5FN62nxddmjRX92aJiGelZG17Fh0/PJFrGewR1onQcMGXmUCVFmE7G6TlEoBxKlXOY4Ke0h97NIogqEnWmEUzo8XQf730hOFcl97syce/UTP8mzFhLNBeOrW6dPk43A3t712Jt9SnO3bryeNoT4X0w20SYJdAI'@; put 'BIBAxAlYx0AaJrrao4z+jt848I1j9dP9PBFHjolU/WnqiI8cNO1NnQU/0HnnmxiRF02EOxSBAowbAssSJwxTJoTEEc8iWFYQ5mNV6swiWDqVEPVk3ew8rUPfN5RxXZWp46hzoCMOAyGkM39bmjJyu879a9tDqKGsqNaMVF7rg8aIZ/duCpkdF9o5hODvcI9zbLL8bg5mG6m7B+ICASCQsASWt0w6'@; put 'g3B2pYxd15g8dBZCVlfdo/vqxmOBAgmBRI8ygf77HwYLdlj/X6au9CPvdv/5x9b/YPT5taUpI3aGjM5fReoUrqqWaVeZLPSQzdj69oAiac4C386E6epzvHsBzPZ4hOB9IAAEUpaAdQbzL16bJbsOvzvFpQyfyUxtBkP66fECRDe72hQprR0jtE+W0p43WPAjQ/i7DFM7wDF/28XlN3Widmn5De29'@; put 'Nac35w3RGP8iY9rpquQ+TZU92UH9cJ5Mnad8Vm3Wb70ydT1nCv2XHSG+JVxPulZXH0N2NDNufNXOrVLP5v0e1zfLxm7Q44X1YHWA2Q6WIIwHAkAgZQiU1RRK6So6jQk91yVnTfDIQ70HAm+fihAfap/fG24Y1lOeRJRPKJU/RAjV+fWDb1Ikv0EpfR8Zos3lChwY7Ipi60PF/XvHS22G/GVqSjN1'@; put 'EZjnkNJOPVYtXDAmOGqVZc+NC3KfeWmw9Va1TL2Zcf2eXs/inZSSovm5ib8oqjcbMNvB3ikwHggAgZQlYJnvqeg0qd35XgY32Sk6D54pSdLJEnFmqcQ5XMKOUQLxMRrzp+ksqDJhUowwwRhxmTg1RXL5KZIOcSz2cW7sN5jexkWgyxCsTTD2Eab0X7JKP2nvpIdHp3WyaK1+Xr15hhpKPzhRpWlz'@; put 'TK5fhY+xAItxQ3NKQx5CLPSLub6d7wzkJljTMHUMkmmdwYJfssdLyPHkqPfTr4zViuiB1HEiY8BsT4QSXAMEgAAQ6CcBa9EPqq0lZ40YTvz79hM9LY10HNR6/ubStE4uDR/C1fZTeOZbh+Nmr2vfMlc0XnCqybsqJaJcQjA9atVz0Gjfn66OucPgh+/vzwlPFp+s3c3rTRa63s4pOD+MhFS0sKDm'@; put 'xX7ijvvLwWzjfopAIBAAAkAgtgS6vz6Xja9yTO5ECF3Ud6uRdQgIwfQlgskvnHLHlhN5Al/dMvkszQw+Z59/bFUoU7V0Xk51RWyrjUx2MNvIcIWoQAAIAIGkI2CdTtUeVC73qCOWhMy28X0L7P5qWc56LGR2rO/SSdNnLaKy4ujmsEcNHrq856lWiHc9asbXEuWkrv5OLphtf4nB9UAACACBFCew'@; put 'qinPaXBxreD8Z4rkHN0Xh8GCXQ4p4086xz+/xVe9r+/7lU0XzDK49idKJMV6r3urD5ZvXODdsT5Z0YLZJuvMQl1AAAgAgQgTWN7o/RLnxi8xwpfK1HnU4RsKdb+JEP+VTOUN9hNrRU3hEKTieoH42bY8mbg3iUPiyuKZW7QIS45ZeDDbmKGHxEAACACBxCdg/Z7rlI1sv7ZvXbpjxNkES3LfqgTC'@; put 'zzqJ+0Yqaf8KGeT7TGir7WswIn4kRH6Jr/aFxKfx2RWA2Sbz7EJtQAAIAIEoESh79SzFczhzssb89zjljKMO/rAWUXnU4Z/I2JHern2YZsuSiPpEcW71N6MkM2ZpwGxjhh4SAwEgAASSj8CKmsJhTArdiRC/+lhfLX+qYoE6COUFC3LrB304RryTBLON9xkCfUAACACBBCRQ3ug9myD5Lia0yRJR'@; put 'j+qmZLUuVKlj4bzcbVUJWF6/JYPZ9hsZDAACQAAIAIETJVDRWHguxnSlKfTze+/PNTl7y21I424uqu060ViJfB2YbSLPHmgHAkAACCQAAWtfrV9PX8C4toQSeShFikGwdNm8vC1bEkB+WCSC2YYFIwQBAkAACACB4xFY0zrtizJx/wYh7NJZcFpx7paO441JlvfBbJNlJqEOIAAEgEACELDORB69'@; put 'd68jWU+K+qwp+D9J1vEz+kjcvQAAAABJRU5ErkJggg=='; run; %mv_createfile(path=&appLoc/&path, name=&filename, inref=filecode, intype=BASE64) filename filecode clear; /* Tell the user where the app was deployed so they can open it */ options notes; data _null_; if symexist('_baseurl') then do; url=symget('_baseurl'); if subpad(url,length(url)-8,9)='SASStudio' then url=substr(url,1,length(url)-10); else url="&systcpiphostname"; end; else url="&systcpiphostname"; url=cats(url,"/SASJobExecution?_FILE=&appLoc/services/"); 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) 'DC.html' ; putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- "; run;